diff --git a/.gitignore b/.gitignore index a2f6a6b95f2848887c77031f45f10e0d72de0d35..2024f865f12beaeeb9f2e46dfaa14a5ae851c790 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ scripts/td_object_renderer/object_renderer_standalone/renderer_standalone.exe .DS_Store .vscode .cache +.idea *.log *.bak .\#* @@ -42,14 +43,18 @@ scripts/out/ scripts/self_test_summary.txt scripts/cppp/ binary/ -tests/renderer/cut -tests/renderer/ref -tests/dut -tests/ref +tests/**/[c|d]ut +tests/**/ref +tests/*/testv scripts/testv/*_cut*.pcm +scripts/testv/stvOMASA_*.met +scripts/testv/stvOMASA_*.csv +scripts/testv/stvOMASA_2ISM_1MASA1TC48c.wav +scripts/testv/stvOMASA_3ISM_1MASA1TC48c.wav # default reference binary name -IVAS_cod_ref -IVAS_dec_ref +IVAS_cod_ref* +IVAS_dec_ref* +IVAS_rend_ref* # Python files that pop up when running scripts __pycache__/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b365c0e22d22691a03a9efb6575f244633a8dfb5..5e60e48d690ab83f56e5dc800ac30f3c05648716 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -11,6 +11,7 @@ variables: EXIT_CODE_NON_BE: 123 EXIT_CODE_FAIL: 1 PROCESSING_SCRIPTS_BIN_DIR: "/test-bin" + TESTS_DIR_CODEC_BE_ON_MR: "tests/codec_be_on_mr_nonselection" default: interruptible: true # Make all jobs by default interruptible @@ -25,6 +26,7 @@ workflow: - if: $CI_PIPELINE_SOURCE == 'push' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Pushes to main - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Scheduled in main - if: $CI_PIPELINE_SOURCE == 'web' # for testing + - if: $CI_PIPELINE_SOURCE == 'trigger' stages: - .pre @@ -66,12 +68,12 @@ stages: # needed when depth is lower than the number of commits in the branch - git fetch origin $CI_MERGE_REQUEST_TARGET_BRANCH_NAME:$CI_MERGE_REQUEST_TARGET_BRANCH_NAME -.mr-get-target-commit: &mr-get-target-commit - # compare to last target branch commit before pipeline was created +.mr-get-target-commit: + &mr-get-target-commit # compare to last target branch commit before pipeline was created - target_commit=$(git log $CI_MERGE_REQUEST_TARGET_BRANCH_NAME -1 --oneline --before=${CI_PIPELINE_CREATED_AT} --format=%H) -.check-for-testvectors: &check-for-testvectors - # check if the testvector files specified in scripts/config/ci_linux*.json are present +.check-for-testvectors: + &check-for-testvectors # check if the testvector files specified in scripts/config/ci_linux*.json are present - python3 -m pytest ci/test_vectors_available.py .merge-request-comparison-setup-codec: @@ -119,6 +121,11 @@ stages: - git pull - cd - +.enable-split-rendering: &enable-split-rendering +# automatically enable #define SPLIT_REND_WITH_HEAD_ROT in options.h, handling both /**/-comment and //-comment + - sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*SPLIT_REND_WITH_HEAD_ROT\)[[:space:]]*\*\//\1/g" ./lib_com/options.h + - sed -i.bak -e "s/\/\/[[:space:]]*\(#define[[:space:]]*SPLIT_REND_WITH_HEAD_ROT\)/\1/g" ./lib_com/options.h + # --------------------------------------------------------------- # Job templates # --------------------------------------------------------------- @@ -134,6 +141,8 @@ stages: when: never - if: $CI_PIPELINE_SOURCE == 'schedule' # Don't run in any scheduled pipelines by default (use schedule templates below to enable again for certain conditions) when: never + - if: $CI_PIPELINE_SOURCE == 'trigger' # Don't run triggered pipeline by default + when: never - when: on_success .rules-merge-request: @@ -153,7 +162,6 @@ stages: rules: - if: $CI_PIPELINE_SOURCE == 'schedule' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - # templates to define stages and platforms .test-job-linux: tags: @@ -193,7 +201,6 @@ stages: exit_codes: - 123 - # --------------------------------------------------------------- # .pre jobs for setting up things # --------------------------------------------------------------- @@ -216,8 +223,6 @@ uninterruptible: tags: - ivas-linux - - # --------------------------------------------------------------- # Validation jobs # --------------------------------------------------------------- @@ -236,7 +241,6 @@ check-if-branch-is-up-to-date-with-main: - echo $commits_behind_count - if [ $commits_behind_count -eq 0 ]; then exit 0; else exit 1; fi; - # --------------------------------------------------------------- # Build jobs # --------------------------------------------------------------- @@ -277,16 +281,18 @@ build-codec-instrumented-linux: # make sure that the codec builds with msan, asan and usan build-codec-sanitizers-linux: extends: - - .build-job-linux + - .build-job-with-check-for-warnings - .rules-basis script: - *print-common-info - bash ci/build_codec_sanitizers_linux.sh + # need to use the "|| exit $?" suffix to get the allowed_failure return code, otherwise the job fails with code 1...< + - ci/check_for_warnings.py $BUILD_OUTPUT || exit $? build-codec-windows-cmake: extends: - .build-job-windows-with-check-for-warnings - - .rules-main-push + - .rules-basis script: - *print-common-info-windows - $winoutdata = $null @@ -299,10 +305,11 @@ build-codec-windows-cmake: build-codec-windows-msbuild: extends: - .build-job-windows-with-check-for-warnings - - .rules-main-push + - .rules-basis script: - *print-common-info-windows - $winoutdata = $null + - py .\scripts\strip_split_rendering.py - MSBuild.exe .\Workspace_msvc\Workspace_msvc.sln /property:Configuration=Debug | tee -variable winoutdata - $winoutdata | Out-File $BUILD_OUTPUT -Encoding Utf8 - ("& python ci/check_for_warnings.py '$BUILD_OUTPUT'") | Invoke-Expression @@ -347,7 +354,6 @@ codec-msan: needs: ["build-codec-sanitizers-linux"] script: - *print-common-info - - python3 ci/disable_ram_counting.py - make clean - make -j CLANG=1 - python3 scripts/self_test.py --create | tee test_output.txt @@ -370,7 +376,6 @@ codec-asan: needs: ["build-codec-sanitizers-linux"] script: - *print-common-info - - python3 ci/disable_ram_counting.py - make clean - make -j CLANG=2 - python3 scripts/self_test.py --create | tee test_output.txt @@ -384,6 +389,28 @@ codec-asan: - test_output.txt expose_as: "asan selftest results" +# code selftest testvectors with address-sanitizer binaries +codec-usan: + extends: + - .test-job-linux + - .rules-merge-request + stage: test + needs: ["build-codec-sanitizers-linux"] + script: + - *print-common-info + - make clean + - make -j CLANG=3 + - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1 python3 scripts/self_test.py --create + - grep_exit_code=0 + - grep UndefinedBehaviorSanitizer scripts/ref/logs/* || grep_exit_code=$? + - if [ $grep_exit_code != 1 ] ; then echo "Run errors in self_test.py with Clang undefined-behavior-sanitizer"; exit 1; fi + artifacts: + name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" + expire_in: 1 week + paths: + - scripts/ref/logs/ + expose_as: "usan selftest results" + # test renderer executable renderer-smoke-test: extends: @@ -413,11 +440,10 @@ renderer-asan: needs: ["build-codec-linux-cmake"] stage: test script: - - python3 ci/disable_ram_counting.py - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=asan -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true - cmake --build cmake-build -- -j - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py - + artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week @@ -437,11 +463,10 @@ renderer-msan: needs: ["build-codec-linux-cmake"] stage: test script: - - python3 ci/disable_ram_counting.py - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=msan -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true - cmake --build cmake-build -- -j - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py - + artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" expire_in: 1 week @@ -453,6 +478,33 @@ renderer-msan: junit: - report-junit.xml +# test renderer executable with cmake + usan +renderer-usan: + extends: + - .test-job-linux + - .rules-merge-request + needs: ["build-codec-linux-cmake"] + stage: test + script: + - cmake -B cmake-build -G "Unix Makefiles" -DCLANG=usan -DCOPY_EXECUTABLES_FROM_BUILD_DIR=true + - cmake --build cmake-build -- -j + - UBSAN_OPTIONS=suppressions=scripts/ubsan.supp,report_error_type=1,log_path=usan_log_catchall python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/renderer/test_renderer.py + - grep_exit_code=0 + - touch usan_log_empty # Creates an empty file, this is to avoid "grep: usan_log_*: No such file or directory" in case no USAN failures are reported from pytest + - grep UndefinedBehaviorSanitizer usan_log_* || grep_exit_code=$? + - if [ $grep_exit_code != 1 ] ; then echo "Run errors in test_renderer.py with Clang undefined-behavior-sanitizer"; exit 1; fi + + artifacts: + name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" + expire_in: 1 week + when: always + paths: + - report-junit.xml + expose_as: "renderer usan pytest results" + reports: + junit: + - report-junit.xml + # compare renderer bitexactness between target and source branch renderer-pytest-on-merge-request: extends: @@ -466,9 +518,10 @@ renderer-pytest-on-merge-request: - *print-common-info # some helper variables - "|| true" to prevent failures from grep not finding anything - - non_be_flag=$(echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[rend\(erer\)*[ -]*non[ -]*be\]") || true - # TODO: needs splitting the test between reference and cut generation - #- ref_using_main=$(echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[ref[ -]*using[ -]*main\]") || true + # write to temporary file as workaround for failures observed with piping echo + - echo $CI_MERGE_REQUEST_TITLE > tmp.txt + - non_be_flag=$(grep -c --ignore-case "\[rend\(erer\)*[ -]*non[ -]*be\]" tmp.txt) || true + - ref_using_main=$(grep -c --ignore-case "\[ref[ -]*using[ -]*main\]" tmp.txt) || true # store the current commit hash - source_branch_commit_sha=$(git rev-parse HEAD) @@ -486,6 +539,9 @@ renderer-pytest-on-merge-request: - make clean - make -j IVAS_rend + ### Run test using scripts and input from main + - if [ $ref_using_main == 1 ]; then git checkout $target_commit; fi + # run test - exit_code=0 - python3 -m pytest -q --log-level ERROR -n auto -rA --html=report.html --self-contained-html --junit-xml=report-junit.xml tests/renderer/test_renderer_be_comparison.py || exit_code=$? @@ -498,7 +554,7 @@ renderer-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" - expire_in: 2 week + expire_in: 1 week when: always paths: - report-junit.xml @@ -508,6 +564,92 @@ renderer-pytest-on-merge-request: junit: - report-junit.xml +# test split rendering +split-rendering-smoke-test: + extends: + - .test-job-linux + - .rules-merge-request + needs: ["build-codec-linux-make"] + stage: test + script: + - *enable-split-rendering + - make -j INCLUDE_SPLIT=1 + - python3 -m pytest -q -n auto -rA --junit-xml=report-junit.xml tests/split_rendering/test_split_rendering.py + artifacts: + name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" + expire_in: 1 week + when: always + paths: + - report-junit.xml + expose_as: "split rendering make pytest results" + reports: + junit: + - report-junit.xml + +# compare split-rendering bitexactness between target and source branch +split-rendering-pytest-on-merge-request: + extends: + - .test-job-linux + - .rules-merge-request + needs: ["build-codec-linux-make"] + # TODO: set reasonable timeout, will most likely take less + timeout: "30 minutes" + stage: compare + script: + - *print-common-info + + # some helper variables - "|| true" to prevent failures from grep not finding anything + # write to temporary file as workaround for failures observed with piping echo + - echo $CI_MERGE_REQUEST_TITLE > tmp.txt + - non_be_flag=$(grep -c --ignore-case "\[split*[ -]*non[ -]*be\]" tmp.txt) || true + - ref_using_main=$(grep -c --ignore-case "\[ref[ -]*using[ -]*main\]" tmp.txt) || true + + # store the current commit hash + - source_branch_commit_sha=$(git rev-parse HEAD) + + - *mr-fetch-target-branch + - *mr-get-target-commit + - git checkout $target_commit + + # build reference binaries + - *enable-split-rendering + - make -j INCLUDE_SPLIT=1 + - mv IVAS_cod IVAS_cod_ref + - mv IVAS_dec IVAS_dec_ref + - mv IVAS_rend IVAS_rend_ref + + # back to source branch + - git restore lib_com/options.h # Revert changes back before checking out another branch to avoid conflicts + - git checkout $source_branch_commit_sha + - make clean + - *enable-split-rendering + - make -j INCLUDE_SPLIT=1 + + ### Run test using scripts and input from main + - if [ $ref_using_main == 1 ]; then git checkout $target_commit; fi + + # run test + - exit_code=0 + - python3 -m pytest -q --log-level ERROR -n auto -rA --html=report.html --self-contained-html --junit-xml=report-junit.xml tests/split_rendering/test_split_rendering_be_comparison.py || exit_code=$? + - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true + + - *merge-request-comparison-check + + allow_failure: + exit_codes: + - 123 + artifacts: + name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--job-$CI_JOB_NAME--results" + expire_in: 2 week + when: always + paths: + - report-junit.xml + - report.html + expose_as: "pytest split rendering results" + reports: + junit: + - report-junit.xml + # compare bit exactness between target and source branch ivas-pytest-on-merge-request: extends: @@ -521,8 +663,10 @@ ivas-pytest-on-merge-request: - *merge-request-comparison-setup-codec # some helper variables - "|| true" to prevent failures from grep not finding anything - - non_be_flag=$(echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[non[ -]*be\]") || true - - ref_using_main=$(echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[ref[ -]*using[ -]*main\]") || true + # write to temporary file as workaround for failures observed with piping echo + - echo $CI_MERGE_REQUEST_TITLE > tmp.txt + - non_be_flag=$(grep -c --ignore-case "\[non[ -]*be\]" tmp.txt) || true + - ref_using_main=$(grep -c --ignore-case "\[ref[ -]*using[ -]*main\]" tmp.txt) || true ### If ref_using_main is not set, checkoug the source branch to use scripts and input from there - if [ $ref_using_main == 0 ]; then git checkout $source_branch_commit_sha; fi @@ -531,15 +675,15 @@ ivas-pytest-on-merge-request: # create short test vectors - python3 tests/create_short_testvectors.py # create references - - python3 -m pytest tests -v --update_ref 1 -m create_ref - - python3 -m pytest tests -v --update_ref 1 -m create_ref_part2 + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --update_ref 1 -m create_ref + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --update_ref 1 -m create_ref_part2 ### Run test using branch scripts and input - if [ $ref_using_main == 1 ]; then git checkout $source_branch_commit_sha; fi ### run pytest - exit_code=0 - - python3 -m pytest tests -v --html=report.html --self-contained-html --junit-xml=report-junit.xml || exit_code=$? + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --html=report.html --self-contained-html --junit-xml=report-junit.xml || exit_code=$? - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true - *merge-request-comparison-check @@ -549,7 +693,7 @@ ivas-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" - expire_in: 2 week + expire_in: 1 week when: always paths: - report-junit.xml @@ -569,24 +713,26 @@ evs-pytest-on-merge-request: script: - *print-common-info - *merge-request-comparison-setup-codec - + # some helper variables - "|| true" to prevent failures from grep not finding anything - - non_be_flag=$(echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[evs[ -]*non[ -]*be\]") || true - - ref_using_main=$(echo $CI_MERGE_REQUEST_TITLE | grep -c --ignore-case "\[ref[ -]*using[ -]*main\]") || true + # write to temporary file as workaround for failures observed with piping echo + - echo $CI_MERGE_REQUEST_TITLE > tmp.txt + - non_be_flag=$(grep -c --ignore-case "\[evs[ -]*non[ -]*be\]" tmp.txt) || true + - ref_using_main=$(grep -c --ignore-case "\[ref[ -]*using[ -]*main\]" tmp.txt) || true ### If ref_using_main is not set, checkoug the source branch to use scripts and input from there - if [ $ref_using_main == 0 ]; then git checkout $source_branch_commit_sha; fi ### prepare pytest # create references - - python3 -m pytest tests/test_param_file.py -v --update_ref 1 -m create_ref --param_file scripts/config/self_test_evs.prm + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v --update_ref 1 -m create_ref --param_file scripts/config/self_test_evs.prm ### Run test using branch scripts and input - if [ $ref_using_main == 1 ]; then git checkout $source_branch_commit_sha; fi ### run pytest for EVS cases - exit_code=0 - - python3 -m pytest tests/test_param_file.py -v --param_file scripts/config/self_test_evs.prm --html=report.html --self-contained-html --junit-xml=report-junit-evs.xml || exit_code=$? + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v --param_file scripts/config/self_test_evs.prm --html=report.html --self-contained-html --junit-xml=report-junit-evs.xml || exit_code=$? - zero_errors=$(cat report-junit-evs.xml | grep -c 'errors="0"') || true - *merge-request-comparison-check @@ -596,7 +742,7 @@ evs-pytest-on-merge-request: - 123 artifacts: name: "mr-$CI_MERGE_REQUEST_IID--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" - expire_in: 2 week + expire_in: 1 week when: always paths: - report-junit-evs.xml @@ -640,7 +786,7 @@ clang-format-check: - place the patch file in the root directory of your local IVAS repo\n - run: git apply $PATCH_FILE_NAME\n - commit new changes" - + - scripts/check-format.sh -af -p 8 || format_problems=$? - if [ $format_problems == 0 ] ; then exit 0; fi @@ -655,12 +801,12 @@ clang-format-check: - exit $format_problems artifacts: - expire_in: 2 days + expire_in: 1 day paths: - tmp-formatting-fix/ when: on_failure name: "$ARTIFACT_BASE_NAME" - expose_as: 'formatting patch' + expose_as: "formatting patch" # check for crashes if first received frame on decoder side is an SID check-first-frame-is-sid: @@ -674,17 +820,21 @@ check-first-frame-is-sid: script: - *print-common-info - *update-ltv-repo + # Temporary fix to test only SID start config files in this job + - rm scripts/config/ci_linux_ltv.json scripts/config/ci_linux.json - *check-for-testvectors - cmake . - make -j # TODO: for some MASA modes, we currently do not have testvectors that actually trigger DTX # SBA is run separately to use shorter part of file + - exit_code_no_sba=0 + - exit_code_sba=0 - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep -v MASA | grep -v SBA) - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 0:20 || exit_code_no_sba=$? - modes=$(scripts/runIvasCodec.py -l | grep dtx | grep SBA) - scripts/runIvasCodec.py -p scripts/config/ci_linux_sidstart_test.json -m $modes -s --bs_length 500 -U 70:80 || exit_code_sba=$? - - if [ $exit_code_no_sba != 0 || $exit_code_sba != 0]; then exit 1; fi + - if [ $exit_code_no_sba -ne 0 ] || [ $exit_code_sba -ne 0 ]; then exit 1; fi artifacts: paths: - out/logs @@ -732,12 +882,27 @@ selection-test-processing: when: on_failure expire_in: 1 week +lc3plus-ensure-no-code-changes: + extends: + - .test-job-linux + - .rules-merge-request + stage: validate + needs: [] + timeout: "5 minutes" + script: + # Replace code commited to repo with code downloaded from ETSI + - ./scripts/lc3plus_lib_setup/get_lc3plus.sh + + # Ensure git reports no changes + - modified_files=$(git status -s) + - if [[ $modified_files ]]; then printf 'LC3plus codebase was modified!\n\n'"$modified_files"'\n\n'; exit $EXIT_CODE_FAIL; fi + # --------------------------------------------------------------- # Test jobs for main branch # --------------------------------------------------------------- # check bitexactness to EVS windows binaries -.be-2-evs-windows: # Temporarily disabled -- Ericsson Windows runner used for HL activities which the reduces capacity for this job. To be resumed after selection +be-2-evs-windows: extends: - .rules-main-push tags: @@ -827,8 +992,10 @@ codec-comparison-on-main-push: - cd .. # helper variable - "|| true" to prevent failures from grep not finding anything - - non_be_flag=$(echo $CI_COMMIT_MESSAGE | grep -c --ignore-case "\[non[ -]*be\]") || true - - ref_using_main=$(echo $CI_COMMIT_MESSAGE | grep -c --ignore-case "\[ref[ -]*using[ -]*main\]") || true + # write to temporary file as workaround for failures observed with piping echo + - echo $CI_COMMIT_MESSAGE > tmp.txt + - non_be_flag=$(grep -c --ignore-case "\[non[ -]*be\]" tmp.txt) || true + - ref_using_main=$(grep -c --ignore-case "\[ref[ -]*using[ -]*main\]" tmp.txt) || true ### re-checkout the latest commit in the main branch, if ref_using_main is not set - if [ $ref_using_main == 0 ]; then git checkout $latest_commit;fi @@ -840,15 +1007,15 @@ codec-comparison-on-main-push: - mv IVAS_cod_test IVAS_cod - mv IVAS_dec_test IVAS_dec # create references - - python3 -m pytest tests -v --update_ref 1 -m create_ref - - python3 -m pytest tests -v --update_ref 1 -m create_ref_part2 + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --update_ref 1 -m create_ref + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --update_ref 1 -m create_ref_part2 ### re-checkout the latest commit here, if ref_using_main is set - if [ $ref_using_main -eq 1 ]; then git checkout $latest_commit;fi ### run pytest - exit_code=0 - - python3 -m pytest tests -v --html=report.html --self-contained-html --junit-xml=report-junit.xml || exit_code=$? + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v --html=report.html --self-contained-html --junit-xml=report-junit.xml || exit_code=$? - if [ $exit_code -eq 1 ] && [ $non_be_flag == 0 ]; then echo "pytest run had failures and non-BE flag not present"; exit $EXIT_CODE_FAIL; fi - zero_errors=$(cat report-junit.xml | grep -c 'errors="0"') || true - if [ $exit_code -eq 1 ] && [ $zero_errors == 1 ]; then echo "pytest run had failures, but no errors and non-BE flag present"; exit $EXIT_CODE_NON_BE; fi @@ -858,7 +1025,7 @@ codec-comparison-on-main-push: - 123 artifacts: name: "main-push--sha-$CI_COMMIT_SHORT_SHA--stage-$CI_JOB_STAGE--results" - expire_in: 2 week + expire_in: 1 week when: always paths: - report-junit.xml @@ -893,7 +1060,6 @@ codec-comparison-on-main-push: extends: - .sanitizer-test-template - sanitizer-test-mono: extends: .sanitizer-test-schedule-A rules: @@ -1108,7 +1274,6 @@ sanitizer-test-ism+4: - *update-ltv-repo - python3 ci/run_scheduled_sanitizer_test.py ISM+4 $OUT_FORMATS_CHANNEL_BASED $OUT_FORMATS_SCENE_BASED $OUT_FORMATS_BINAURAL EXT --tests $SANITIZER_TESTS - # GCOV/LCOV coverage analysis of self_test suite coverage-test-on-main-scheduled: extends: @@ -1120,14 +1285,15 @@ coverage-test-on-main-scheduled: rules: # only run in scheduled pipeline that passes this env vars - if: $COVERAGE_TEST + timeout: 2 hours script: - *print-common-info - make GCOV=1 -j - - cp IVAS_rend IVAS_rend_ref # Copy exec to be able to run renderer script + - cp IVAS_rend IVAS_rend_ref # Copy exec to be able to run renderer script - python3 tests/create_short_testvectors.py - - python3 -m pytest tests -v -n 0 --update_ref 1 -m create_ref --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - - python3 -m pytest tests -v -n 0 --update_ref 1 -m create_ref_part2 --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - - python3 -m pytest tests/test_param_file.py -v -n 0 --update_ref 1 -m create_ref --param_file scripts/config/self_test_evs.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v -n 0 --update_ref 1 -m create_ref --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR -v -n 0 --update_ref 1 -m create_ref_part2 --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec + - python3 -m pytest $TESTS_DIR_CODEC_BE_ON_MR/test_param_file.py -v -n 0 --update_ref 1 -m create_ref --param_file scripts/config/self_test_evs.prm --ref_encoder_path ./IVAS_cod --ref_decoder_path ./IVAS_dec - bash ci/smoke_test.sh coverage - python3 -m pytest -q -n auto tests/renderer/test_renderer_be_comparison.py - bash ci/ivas_voip_be_test.sh coverage @@ -1142,13 +1308,12 @@ coverage-test-on-main-scheduled: - coverage.info - coverage - # --------------------------------------------------------------- # Complexity measurement jobs # --------------------------------------------------------------- -.complexity-measurements-setup: &complexity-measurements-setup - # create necessary environment +.complexity-measurements-setup: + &complexity-measurements-setup # create necessary environment - mkdir -p wmops/logs - job_id=$(python3 ci/get_id_of_last_job_occurence.py $CI_COMMIT_REF_NAME $CI_JOB_NAME) @@ -1163,8 +1328,8 @@ coverage-test-on-main-scheduled: - rm artifacts.zip - rm -rf $public_dir -.complexity-measurements-prepare-artifacts: &complexity-measurements-prepare-artifacts - # prepare artifacts -> move to public directory +.complexity-measurements-prepare-artifacts: + &complexity-measurements-prepare-artifacts # prepare artifacts -> move to public directory - public_dir="$CI_JOB_NAME-public" - mkdir $public_dir - mv -f wmops/log_*_all.txt wmops/*.js ${public_dir}/ @@ -1193,6 +1358,7 @@ coverage-test-on-main-scheduled: stage: test artifacts: name: "$CI_JOB_NAME--$CI_COMMIT_REF_NAME--sha-$CI_COMMIT_SHA" + when: always expire_in: 1 week paths: - $CI_JOB_NAME-public @@ -1209,7 +1375,9 @@ complexity-stereo-in-stereo-out: - in_format=stereo - out_format=stereo - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" + - ret_val=$? - *complexity-measurements-prepare-artifacts + - exit $ret_val complexity-ism-in-binaural-out: extends: @@ -1225,7 +1393,9 @@ complexity-ism-in-binaural-out: - in_format=ISM - out_format=BINAURAL - bash ci/complexity_measurements/getWmops.sh "ISM+1 ISM+2 ISM+3 ISM+4" "$out_format" + - ret_val=$? - *complexity-measurements-prepare-artifacts + - exit $ret_val complexity-sba-hoa3-in-hoa3-out: extends: @@ -1241,7 +1411,9 @@ complexity-sba-hoa3-in-hoa3-out: - in_format=SBA - out_format=HOA3 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" + - ret_val=$? - *complexity-measurements-prepare-artifacts + - exit $ret_val complexity-mc-in-7_1_4-out: extends: @@ -1257,7 +1429,9 @@ complexity-mc-in-7_1_4-out: - in_format=MC - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" + - ret_val=$? - *complexity-measurements-prepare-artifacts + - exit $ret_val complexity-masa-in-7_1_4-out: extends: @@ -1273,7 +1447,9 @@ complexity-masa-in-7_1_4-out: - in_format=MASA - out_format=7_1_4 - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" + - ret_val=$? - *complexity-measurements-prepare-artifacts + - exit $ret_val complexity-StereoDmxEVS-stereo-in-mono-out: extends: @@ -1289,12 +1465,35 @@ complexity-StereoDmxEVS-stereo-in-mono-out: - in_format=StereoDmxEVS - out_format=mono - bash ci/complexity_measurements/getWmops.sh "$in_format" "$out_format" + - ret_val=$? - *complexity-measurements-prepare-artifacts + - exit $ret_val # --------------------------------------------------------------- # Other jobs # --------------------------------------------------------------- +upload-selection-BE-log: + rules: + - if: $UPLOAD_SELECTION_BE_RESULTS && $CI_PIPELINE_SOURCE == 'trigger' + when: always + timeout: 5 minutes + tags: + - ericsson-windows-runner + script: + - cp -r $SELECTION_BE_RESULT ./selection-BE-result + - Get-Content -Path selection-BE-result/public_log--sha-*.txt + - $has_failed_debugging_active = (Select-String -Path selection-BE-result/public_log--sha-*.txt -Pattern '^FAILED tests' -CaseSensitive).Line + - Get-Content -Path selection-BE-result/public_log_DEBUGGING_inactive--sha-*.txt + - $has_failed_debugging_inactive = (Select-String -Path selection-BE-result/public_log_DEBUGGING_inactive--sha-*.txt -Pattern '^FAILED tests' -CaseSensitive).Line + - If($has_failed_debugging_active -or $has_failed_debugging_inactive) {exit -1} + artifacts: + paths: + - selection-BE-result/public_log--sha-*.txt + - selection-BE-result/public_log_DEBUGGING_inactive--sha-*.txt + when: always + expire_in: 1 week + # job that sets up gitlab pages website pages: stage: deploy @@ -1307,6 +1506,7 @@ pages: artifacts: paths: - public + expire_in: 1 day # Pull state of a branch on 3GPP repo, push to a mirror repo. pull-from-3gpp-forge: diff --git a/CMakeLists.txt b/CMakeLists.txt index 8098dc1c6896db669b7b31edfd2717f703442fcf..a34c6a76d85481fe18739440a351374c4135f629 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,8 @@ # # or build on command line, e.g.: # cmake --build . --config Debug # cmake --build . --config Release - +# +# INCLUDE_SPLIT is not set by default. If split rendering is used, then add -D INCLUDE_SPLIT=1 to the build command cmake_minimum_required(VERSION 3.1) @@ -70,8 +71,20 @@ if(UNIX) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") elseif("${CLANG}" MATCHES "3" OR "${CLANG}" MATCHES "usan") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined") + # NOTE: keep in sync with list in Makefile + set(USAN_CHECKS_ENABLE + undefined # Default checks + # Extra checks + float-divide-by-zero + implicit-conversion + local-bounds + ) + list(JOIN USAN_CHECKS_ENABLE "," USAN_CHECKS_ENABLE) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=${USAN_CHECKS_ENABLE} -fsanitize-recover=${USAN_CHECKS_ENABLE}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=${USAN_CHECKS_ENABLE} -fsanitize-recover=${USAN_CHECKS_ENABLE}") + else() + message(FATAL_ERROR "Unknown CLANG setting: ${CLANG}") endif() endif() # GCOV @@ -116,9 +129,12 @@ file(GLOB libComSrcs "lib_com/*.c") file(GLOB libComHeaders "lib_com/*.h") add_library(lib_com ${libComSrcs} ${libComHeaders}) if(UNIX) - target_link_libraries(lib_com m) + target_link_libraries(lib_com PRIVATE m) endif() target_include_directories(lib_com PUBLIC lib_com PRIVATE lib_enc lib_dec lib_rend lib_debug) +if(INCLUDE_SPLIT) + target_include_directories(lib_com PRIVATE lc3plus) +endif() file(GLOB libDebugSrcs "lib_debug/*.c") file(GLOB libDebugHeaders "lib_debug/*.h") @@ -131,13 +147,55 @@ file(GLOB libEncHeaders "lib_enc/*.h") add_library(lib_enc ${libEncSrcs} ${libEncHeaders}) target_link_libraries(lib_enc lib_com lib_debug) target_include_directories(lib_enc PUBLIC lib_enc PRIVATE lib_dec lib_rend) +if(INCLUDE_SPLIT) + target_include_directories(lib_enc PRIVATE lc3plus) +endif() + +if(INCLUDE_SPLIT) + file(GLOB libLC3plusSrcs "lc3plus/*.c") + file(GLOB libLC3plusHeaders "lc3plus/*.h") + add_library(lc3plus ${libLC3plusSrcs} ${libLC3plusHeaders}) + target_include_directories(lc3plus PUBLIC lc3plus) + target_link_libraries(lc3plus lib_com) # For including options.h, which is needed for instrumentation to work correctly + if(WMOPS) + target_link_libraries(lc3plus lib_debug) + endif() +endif() +if(INCLUDE_SPLIT) + file(GLOB libCldfbTransCodecSrcs "lib_rend/ivas_cldfb_trans_codec/*.c") + file(GLOB libCldfbTransCodecHeaders "lib_rend/ivas_cldfb_trans_codec/*.h") +endif() file(GLOB libRendSrcs "lib_rend/*.c") file(GLOB libRendHeaders "lib_rend/*.h") -add_library(lib_rend ${libRendSrcs} ${libRendHeaders}) +if(NOT INCLUDE_SPLIT) + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*lc3plus.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_cldfb_codec.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*splitRend.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*splitrenderer.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_lcld.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_Pred.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_RMSEnv.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_PerceptualModel.*\.c$") + list(FILTER libRendSrcs EXCLUDE REGEX ".*lib_rend\/.*ivas_lcld_rom_tables.*\.c$") + list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*lc3plus.*\.h$") + list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*splitRend.*\.h$") + list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*ivas_cldfb_codec.*\.h$") + list(FILTER libRendHeaders EXCLUDE REGEX ".*lib_rend\/.*ivas_lcld_rom_tables.*\.h$") +endif() + +if(INCLUDE_SPLIT) + add_library(lib_rend ${libRendSrcs} ${libCldfbTransCodecSrcs} ${libRendHeaders} ${libCldfbTransCodecHeaders}) +else() + add_library(lib_rend ${libRendSrcs} ${libRendHeaders}) +endif() target_link_libraries(lib_rend lib_dec lib_com lib_debug) # Todo refactor: This dependency on lib_dec should be removed. +if(INCLUDE_SPLIT) + target_link_libraries(lib_rend lc3plus) +endif() target_include_directories(lib_rend PUBLIC lib_rend PRIVATE lib_enc) + file(GLOB libDecSrcs "lib_dec/*.c") file(GLOB libDecHeaders "lib_dec/*.h") add_library(lib_dec ${libDecSrcs} ${libDecHeaders}) @@ -146,8 +204,22 @@ target_include_directories(lib_dec PUBLIC lib_dec lib_rend PRIVATE lib_enc) file(GLOB libUtilSrcs "lib_util/*.c") file(GLOB libUtilHeaders "lib_util/*.h") +if(NOT INCLUDE_SPLIT) + list(FILTER libUtilSrcs EXCLUDE REGEX ".*lib_util\/.*split_rend.*\.c$") +endif() add_library(lib_util ${libUtilSrcs} ${libUtilHeaders}) target_include_directories(lib_util PUBLIC lib_util PRIVATE lib_com lib_enc lib_dec lib_rend lib_debug) +if(INCLUDE_SPLIT) + target_include_directories(lib_util PRIVATE lc3plus) +endif() + +if(INCLUDE_SPLIT) + if(NOT WMOPS) + file(GLOB unitTestIvasLc3plusSrcs "scripts/split_rendering/lc3plus/*.c") + add_executable(ivas_lc3plus_unit_test ${unitTestIvasLc3plusSrcs}) + target_link_libraries(ivas_lc3plus_unit_test lib_rend lib_dec lib_util lib_com lib_debug) + endif() +endif() add_executable(IVAS_cod apps/encoder.c) target_link_libraries(IVAS_cod lib_enc lib_util) @@ -170,6 +242,11 @@ if(COPY_EXECUTABLES_FROM_BUILD_DIR) add_custom_command(TARGET IVAS_cod POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") add_custom_command(TARGET IVAS_dec POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") add_custom_command(TARGET IVAS_rend POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/") + if(INCLUDE_SPLIT) + if (NOT WMOPS) + add_custom_command(TARGET ivas_lc3plus_unit_test POST_BUILD VERBATIM COMMAND "${CMAKE_COMMAND}" -E copy "$" "${CMAKE_CURRENT_SOURCE_DIR}/scripts/split_rendering/lc3plus") + endif() + endif() endif() # Allow creating packages for CMake install diff --git a/Makefile b/Makefile index 7f8874d3439cc1fb73096cd5af609880ba9b874a..36a32342fc394e0d7eb8c4240a1a961eaa1500b1 100644 --- a/Makefile +++ b/Makefile @@ -6,12 +6,13 @@ SRC_LIBDEBUG = lib_debug SRC_LIBDEC = lib_dec SRC_LIBENC = lib_enc SRC_LIBREND = lib_rend +SRC_LC3PLUS = lc3plus lc3plus/fft SRC_LIBUTIL = lib_util SRC_APP = apps BUILD = build OBJDIR = obj -SRC_DIRS = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LIBUTIL) $(SRC_APP)) +SRC_DIRS = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LC3PLUS) $(SRC_LIBUTIL) $(SRC_APP)) # Name of CLI binaries CLI_APIDEC ?= IVAS_dec @@ -22,6 +23,7 @@ LIB_LIBDEBUG ?= libivasdebug.a LIB_LIBDEC ?= libivasdec.a LIB_LIBENC ?= libivasenc.a LIB_LIBREND ?= libivasrend.a +LIB_LC3PLUS ?= liblc3plus.a LIB_LIBUTIL ?= libivasutil.a # Default tool settings @@ -75,8 +77,12 @@ LDFLAGS += -fsanitize=address endif ifeq "$(CLANG)" "3" CC = $(CCCLANG) -CFLAGS += -fsanitize=undefined -LDFLAGS += -fsanitize=undefined +# NOTE: keep in sync with list in CMakeLists.txt +usan_checks = undefined,float-divide-by-zero,implicit-conversion,local-bounds +CFLAGS += -fsanitize=$(usan_checks) +CFLAGS += -fsanitize-recover=$(usan_checks) +LDFLAGS += -fsanitize=$(usan_checks) +LDFLAGS += -fsanitize-recover=$(usan_checks) endif ifeq "$(RELEASE)" "1" @@ -111,6 +117,15 @@ CFLAGS += $(foreach DIR,$(SRC_DIRS),-I$(DIR)) # Source file search paths VPATH = $(SRC_DIRS) +# Split rendering files +SRCS_SPLIT_REND = ivas_CQMFDecoder.c ivas_CQMFEncoder.c ivas_PerceptualModel.c ivas_PredDecoder.c \ + ivas_PredEncoder.c ivas_RMSEnvGrouping.c ivas_MSPred.c ivas_NoiseGen.c \ + ivas_cldfb_codec_bitstream.c ivas_splitRend_lcld_dec.c ivas_splitRend_lcld_enc.c \ + ivas_splitRendererPLC.c ivas_splitRendererPost.c ivas_splitRendererPre.c \ + ivas_splitRenderer_utils.c split_rend_bfi_file_reader.c split_render_file_read_write.c \ + ivas_lcld_tables.c + + ############################################################################### SRCS_LIBCOM = $(foreach DIR,$(SRC_LIBCOM),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) @@ -119,19 +134,26 @@ SRCS_LIBDEC = $(foreach DIR,$(SRC_LIBDEC),$(patsubst $(DIR)/%,%,$(wildcard $(D SRCS_LIBENC = $(foreach DIR,$(SRC_LIBENC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) SRCS_LIBREND = $(foreach DIR,$(SRC_LIBREND),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) SRCS_LIBUTIL = $(foreach DIR,$(SRC_LIBUTIL),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +ifeq "$(INCLUDE_SPLIT)" "1" +SRCS_LC3PLUS = $(foreach DIR,$(SRC_LC3PLUS),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +else +SRCS_LIBREND := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBREND)) +SRCS_LIBUTIL := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBUTIL)) +endif OBJS_LIBCOM = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.o)) OBJS_LIBDEBUG = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEBUG:.c=.o)) OBJS_LIBDEC = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEC:.c=.o)) OBJS_LIBENC = $(addprefix $(OBJDIR)/,$(SRCS_LIBENC:.c=.o)) OBJS_LIBREND = $(addprefix $(OBJDIR)/,$(SRCS_LIBREND:.c=.o)) +OBJS_LC3PLUS = $(addprefix $(OBJDIR)/,$(SRCS_LC3PLUS:.c=.o)) OBJS_LIBUTIL = $(addprefix $(OBJDIR)/,$(SRCS_LIBUTIL:.c=.o)) OBJS_CLI_APIDEC = $(OBJDIR)/decoder.o OBJS_CLI_APIENC = $(OBJDIR)/encoder.o OBJS_CLI_APPREND = $(OBJDIR)/renderer.o DEPS = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.P) $(SRCS_LIBDEBUG:.c=.P) $(SRCS_LIBDEC:.c=.P) \ - $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P)) + $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P) $(SRCS_LC3PLUS:.c=.P)) ############################################################################### @@ -157,25 +179,28 @@ $(LIB_LIBENC): $(OBJS_LIBENC) $(LIB_LIBREND): $(OBJS_LIBREND) $(QUIET_AR)$(AR) rcs $@ $^ +$(LIB_LC3PLUS): $(OBJS_LC3PLUS) + $(QUIET_AR)$(AR) rcs $@ $^ + $(LIB_LIBUTIL): $(OBJS_LIBUTIL) $(QUIET_AR)$(AR) rcs $@ $^ -$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) +$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIENC) -L. -livasenc -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIENC) -$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) - $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIDEC) +$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug -llc3plus $(LDLIBS) -o $(CLI_APIDEC) -$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) - $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom $(LDLIBS) -o $(CLI_APIREND) +$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) $(LIB_LC3PLUS) + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIREND) -libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LIBUTIL) +libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LC3PLUS) $(LIB_LIBUTIL) clean: $(QUIET)$(RM) $(OBJS_LIBENC) $(OBJS_LIBDEC) $(DEPS) $(QUIET)$(RM) $(DEPS:.P=.d) $(QUIET)test ! -d $(OBJDIR) || rm -rf $(OBJDIR) - $(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) + $(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) $(LIB_LC3PLUS) $(OBJDIR)/%.o : %.c | $(OBJDIR) $(QUIET_CC)$(CC) $(CFLAGS) -c -MD -o $@ $< diff --git a/Workspace_msvc/LC3plus.vcxproj b/Workspace_msvc/LC3plus.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..7cefc1816b5e33e7e93fa1f54a0702aa226dfc76 --- /dev/null +++ b/Workspace_msvc/LC3plus.vcxproj @@ -0,0 +1,182 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {95030B82-70CD-4C6B-84D4-61096035BEA2} + Win32Proj + LC3_FL + 10.0.17763.0 + + + + StaticLibrary + true + v141 + Unicode + + + StaticLibrary + false + v141 + true + Unicode + + + + + + + + + + + + + + + LC3plus + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\Obj\ + + + LC3plus + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\Obj\ + + + + + + Level3 + ..\lib_com;%(AdditionalIncludeDirectories) + Disabled + MultiThreadedDebug + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4305;4244;4996 + OldStyle + + + Console + true + + + + + Level3 + + + ..\lib_com;%(AdditionalIncludeDirectories) + MaxSpeed + MultiThreaded + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + 4244;4305;4996 + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Workspace_msvc/Workspace_msvc.sln b/Workspace_msvc/Workspace_msvc.sln index fbdb561ee2403a9fbcb65671157eafc4b8a21f88..1d8e08ac9fe62eb11c8a2747f22c01a7e9620e5c 100644 --- a/Workspace_msvc/Workspace_msvc.sln +++ b/Workspace_msvc/Workspace_msvc.sln @@ -20,6 +20,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "encoder", "encoder.vcxproj" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "renderer", "renderer.vcxproj", "{12B4C8A5-1E06-4E30-B443-D1F916F52B47}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LC3plus", "LC3plus.vcxproj", "{95030B82-70CD-4C6B-84D4-61096035BEA2}" +EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{51160D4C-55C9-4C16-A792-D94507225746}" ProjectSection(SolutionItems) = preProject ..\.clang-format = ..\.clang-format @@ -87,6 +89,12 @@ Global {12B4C8A5-1E06-4E30-B443-D1F916F52B47}.Release|Win32.ActiveCfg = Release|Win32 {12B4C8A5-1E06-4E30-B443-D1F916F52B47}.Release|Win32.Build.0 = Release|Win32 {12B4C8A5-1E06-4E30-B443-D1F916F52B47}.Release|x64.ActiveCfg = Release|Win32 + {95030B82-70CD-4C6B-84D4-61096035BEA2}.Debug|Win32.ActiveCfg = Debug|Win32 + {95030B82-70CD-4C6B-84D4-61096035BEA2}.Debug|Win32.Build.0 = Debug|Win32 + {95030B82-70CD-4C6B-84D4-61096035BEA2}.Debug|x64.ActiveCfg = Debug|Win32 + {95030B82-70CD-4C6B-84D4-61096035BEA2}.Release|Win32.ActiveCfg = Release|Win32 + {95030B82-70CD-4C6B-84D4-61096035BEA2}.Release|Win32.Build.0 = Release|Win32 + {95030B82-70CD-4C6B-84D4-61096035BEA2}.Release|x64.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Workspace_msvc/encoder.vcxproj b/Workspace_msvc/encoder.vcxproj index bcfe92a4db2218e2e04ae78a7cf7ea35cdc24349..9578e488dcee1c036524b8520471e228f6cb409f 100644 --- a/Workspace_msvc/encoder.vcxproj +++ b/Workspace_msvc/encoder.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - encoder @@ -27,12 +23,6 @@ false MultiByte - - Application - v141 - false - MultiByte - Application v141 @@ -46,10 +36,6 @@ - - - - @@ -65,13 +51,6 @@ false IVAS_cod - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_cod - ..\ .\Release_$(ProjectName)\ @@ -126,63 +105,6 @@ - - - - - - - $(IntDir)$(ProjectName).tlb - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(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 - - - - - - diff --git a/Workspace_msvc/lib_com.vcxproj b/Workspace_msvc/lib_com.vcxproj index 23aa2ae3f0b6722871f7f9d2c37b27e41f46862f..8a1559090269fbef0fc2610f72898c6d055213bb 100644 --- a/Workspace_msvc/lib_com.vcxproj +++ b/Workspace_msvc/lib_com.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - {39EC200D-7795-4FF8-B214-B24EDA5526AE} @@ -26,12 +22,6 @@ false MultiByte - - StaticLibrary - v141 - false - MultiByte - StaticLibrary v141 @@ -45,10 +35,6 @@ - - - - @@ -62,11 +48,6 @@ .\Debug_$(ProjectName)\ libivascom - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivascom - .\Release_$(ProjectName)\ .\Release_$(ProjectName)\ @@ -78,7 +59,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -102,40 +83,6 @@ true - - - - - - - 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 - - @@ -147,7 +94,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true @@ -254,6 +201,7 @@ + diff --git a/Workspace_msvc/lib_com.vcxproj.filters b/Workspace_msvc/lib_com.vcxproj.filters index 7b6854e7184cd0ec212f9819aa783944db688a6a..02b89d239320bfa5f5a975d62fc5bfa11c2bb2c1 100644 --- a/Workspace_msvc/lib_com.vcxproj.filters +++ b/Workspace_msvc/lib_com.vcxproj.filters @@ -466,6 +466,9 @@ common_ivas_c + + common_ivas_c + diff --git a/Workspace_msvc/lib_debug.vcxproj b/Workspace_msvc/lib_debug.vcxproj index 3b648fae048920ae06aa709785d4b49d2e58d710..4f3b1aa297341e81d0dbb2cedc16927960a67e26 100644 --- a/Workspace_msvc/lib_debug.vcxproj +++ b/Workspace_msvc/lib_debug.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - {54509728-928B-44D9-A118-A6F92F08B34F} @@ -25,11 +21,6 @@ v141 MultiByte - - StaticLibrary - v141 - MultiByte - StaticLibrary v141 @@ -42,9 +33,6 @@ - - - @@ -57,11 +45,6 @@ .\Debug_$(ProjectName)\ libivasdebug - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasdebug - .\Release_$(ProjectName)\ .\Release_$(ProjectName)\ @@ -90,31 +73,6 @@ $(OutDir)$(TargetName).lib - - - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) - _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) - false - - - EnableFastChecks - MultiThreadedDebug - false - $(IntDir)$(ProjectName).pdb - Level4 - OldStyle - Default - %(DisableSpecificWarnings) - - - $(OutDir)$(TargetName).lib - - diff --git a/Workspace_msvc/lib_dec.vcxproj b/Workspace_msvc/lib_dec.vcxproj index 80910aa5e713bfca913d57aa453a16cac1744f1d..5ed2cd88a901cfff235b9de947d5cf9ac916b25d 100644 --- a/Workspace_msvc/lib_dec.vcxproj +++ b/Workspace_msvc/lib_dec.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - lib_dec @@ -26,12 +22,6 @@ false MultiByte - - StaticLibrary - v141 - false - MultiByte - StaticLibrary @@ -46,10 +36,6 @@ - - - - @@ -65,13 +51,6 @@ false libivasdec - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasdec - .\Release_$(ProjectName)\ .\Release_$(ProjectName)\ @@ -89,7 +68,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -114,46 +93,6 @@ true - - - - - - - .\Debug\$(ProjectName).tlb - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\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 - - @@ -169,7 +108,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) true @@ -271,10 +210,7 @@ - - - @@ -296,6 +232,8 @@ + + @@ -409,4 +347,4 @@ - \ No newline at end of file + diff --git a/Workspace_msvc/lib_dec.vcxproj.filters b/Workspace_msvc/lib_dec.vcxproj.filters index 6284884920f332ea486df52e269e1eb51e5ef8f3..b916d743c959dfdc028a67cc88001e74892c5246 100644 --- a/Workspace_msvc/lib_dec.vcxproj.filters +++ b/Workspace_msvc/lib_dec.vcxproj.filters @@ -1,581 +1,579 @@  + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + - dec_ivas_c + decoder_ivas_c + + + decoder_ivas_c - dec_ivas_c + decoder_ivas_c - dec_ivas_c + decoder_ivas_c - dec_ivas_c + decoder_ivas_c - dec_ivas_c + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c - - dec_ivas_c + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c - - dec_ivas_c + + decoder_ivas_c - - dec_ivas_c + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c - dec_ivas_c + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c - dec_ivas_c + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c + + + decoder_ivas_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c - - - dec_evs_c - - - dec_evs_c - - - dec_evs_c - - - dec_evs_c - - - dec_evs_c - - - dec_evs_c - - - dec_evs_c - - - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_evs_c + decoder_evs_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_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 + + + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c + + + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c + decoder_all_c - dec_all_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_evs_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c - - - dec_ivas_c + decoder_all_c - - dec_h - - - dec_h - - dec_h + decoder_h - dec_h + decoder_h + + + decoder_h + + + decoder_h - dec_h + decoder_h - dec_h - - - dec_h + decoder_h - dec_h + decoder_h - - dec_h + + decoder_h - dec_h + decoder_h + + + decoder_h - dec_h + decoder_h - dec_h + decoder_h + + + decoder_h - - - {9d223c16-7845-4b37-b6fe-30de409ab87b} + + {f63b6db2-97ec-4d8d-be9c-e798ac8bb645} - - {0df7c383-e6a6-4d1c-a261-eea34adef2fc} + + {0853864e-7de7-411d-975b-5045652f22c3} - - {71a041e7-3b8b-4642-ab14-2b6a79aeb0a8} + + {e29aae34-aeeb-45dd-a986-61b39890c5bb} - - {e4a97be1-bcf8-43d3-b941-594f39f2d41b} + + {c33b80b3-67ce-466b-91c0-4adfc9efcb5c} \ No newline at end of file diff --git a/Workspace_msvc/lib_enc.vcxproj b/Workspace_msvc/lib_enc.vcxproj index 3378ac10f0ccb8b95616f87f6d225f38af30bb3d..4ff380f542c3890f42eb032016956f1726463682 100644 --- a/Workspace_msvc/lib_enc.vcxproj +++ b/Workspace_msvc/lib_enc.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - lib_enc @@ -27,12 +23,6 @@ false MultiByte - - StaticLibrary - v141 - false - MultiByte - StaticLibrary v141 @@ -46,10 +36,6 @@ - - - - @@ -65,13 +51,6 @@ false libivasenc - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasenc - .\Release_$(ProjectName)\ .\Release_$(ProjectName)\ @@ -89,7 +68,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -117,50 +96,6 @@ - - - - - - - $(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 - - - - - - @@ -176,7 +111,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true @@ -215,6 +150,8 @@ + + @@ -425,4 +362,4 @@ - \ No newline at end of file + diff --git a/Workspace_msvc/lib_enc.vcxproj.filters b/Workspace_msvc/lib_enc.vcxproj.filters index b3970764c0f9218533e6f7e63c8f1d270540c0e1..b15d61431f876896a9325af8c3b270dce4f76ea2 100644 --- a/Workspace_msvc/lib_enc.vcxproj.filters +++ b/Workspace_msvc/lib_enc.vcxproj.filters @@ -590,6 +590,10 @@ enc_ivas_c + + + enc_ivas_c + @@ -620,4 +624,4 @@ {6cccabbe-510f-43d3-90e1-8ed5ea3837d7} - \ No newline at end of file + diff --git a/Workspace_msvc/lib_rend.vcxproj b/Workspace_msvc/lib_rend.vcxproj index d1cda3290d9efd2128280b8dab8ddbe4e72272ac..7415fb432c45bd04a67f7c26af6ee5c83c915f01 100644 --- a/Workspace_msvc/lib_rend.vcxproj +++ b/Workspace_msvc/lib_rend.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - lib_rend @@ -26,12 +22,6 @@ false MultiByte - - StaticLibrary - v141 - false - MultiByte - StaticLibrary @@ -46,10 +36,6 @@ - - - - @@ -65,13 +51,6 @@ false libivasrend - - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - false - false - libivasrend - .\Release_$(ProjectName)\ .\Release_$(ProjectName)\ @@ -89,7 +68,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) EnableFastChecks @@ -114,46 +93,6 @@ true - - - - - - - .\Debug\$(ProjectName).tlb - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;%(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 - - @@ -169,7 +108,7 @@ Neither false false - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);WIN32;%(PreprocessorDefinitions) true @@ -197,10 +136,33 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -216,6 +178,7 @@ + @@ -228,9 +191,13 @@ + + + + @@ -238,6 +205,9 @@ + + + @@ -248,6 +218,10 @@ {54509728-928b-44d9-a118-a6f92f08b34f} false + + {95030B82-70CD-4C6B-84D4-61096035BEA2} + false + diff --git a/Workspace_msvc/lib_rend.vcxproj.filters b/Workspace_msvc/lib_rend.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..fd7b1620cec3d9166aaaabcc0ec924dcf5fe528c --- /dev/null +++ b/Workspace_msvc/lib_rend.vcxproj.filters @@ -0,0 +1,221 @@ + + + + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + rend_c + + + + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + rend_h + + + + + {54449ece-ef29-44b5-9512-ed8f555851a8} + + + {672b0eb6-cce8-425c-8bf2-aba4b45639bb} + + + \ No newline at end of file diff --git a/Workspace_msvc/lib_util.vcxproj b/Workspace_msvc/lib_util.vcxproj index 9c68dbb36d26bb969bf1f470c4b4d85d104e7876..687e9795a0396b5fdd696f8ba85026b750199dc1 100644 --- a/Workspace_msvc/lib_util.vcxproj +++ b/Workspace_msvc/lib_util.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - {2FA8F384-0775-F3B7-F8C3-85209222FC70} @@ -25,11 +21,6 @@ v141 MultiByte - - StaticLibrary - v141 - MultiByte - StaticLibrary v141 @@ -42,9 +33,6 @@ - - - @@ -58,12 +46,6 @@ .\Debug_$(ProjectName)\ libivasutil - - true - .\Debug_$(ProjectName)\ - .\Debug_$(ProjectName)\ - libivasutil - false .\Release_$(ProjectName)\ @@ -73,7 +55,7 @@ Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) false @@ -90,34 +72,13 @@ $(OutDir)$(TargetName).lib - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_util;..\lib_rend;%(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) + ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\lib_rend;..\lib_util;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);ZLIB_WINAPI;%(PreprocessorDefinitions) true @@ -145,7 +106,6 @@ - @@ -159,6 +119,8 @@ + + @@ -171,7 +133,6 @@ - @@ -184,8 +145,10 @@ + + diff --git a/Workspace_msvc/renderer.vcxproj b/Workspace_msvc/renderer.vcxproj index 94ad9f774e7bd050c4e940eb9a47911f18d783ef..56c9601e2f261491faaf3d97cb695183873f52e0 100644 --- a/Workspace_msvc/renderer.vcxproj +++ b/Workspace_msvc/renderer.vcxproj @@ -9,10 +9,6 @@ Release Win32 - - Unittests - Win32 - renderer @@ -27,12 +23,6 @@ false MultiByte - - Application - v141 - false - MultiByte - Application v141 @@ -46,10 +36,6 @@ - - - - @@ -65,13 +51,6 @@ false IVAS_rend - - ..\ - .\Debug_$(ProjectName)\ - false - false - IVAS_rend - ..\ .\Release_$(ProjectName)\ @@ -86,7 +65,7 @@ Disabled - ..\lib_com;..\lib_dec;..\lib_enc;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;WIN32;$(Macros);%(PreprocessorDefinitions) EnableFastChecks @@ -118,56 +97,6 @@ MachineX86 - - - - - - - $(IntDir)$(ProjectName).tlb - - - - - Disabled - ..\lib_com;..\lib_debug;..\lib_dec;..\lib_enc;..\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 @@ -180,7 +109,7 @@ Neither false false - ..\lib_com;..\lib_dec;..\lib_enc;..\lib_debug;..\lib_util;..\lib_rend;%(AdditionalIncludeDirectories) + ..\lib_com;..\lib_debug;..\lib_util;..\lib_rend;..\lc3plus;%(AdditionalIncludeDirectories) _CRT_SECURE_NO_WARNINGS;$(Macros);%(PreprocessorDefinitions) true diff --git a/apps/decoder.c b/apps/decoder.c index e210ebe95e7e431d4b3fa2684ee1594545e48831..a63d8e9f4bcf8f8b4add13a20ebe628758367897 100644 --- a/apps/decoder.c +++ b/apps/decoder.c @@ -30,37 +30,36 @@ *******************************************************************************************************/ -#include -#include -#include -#include "options.h" #include "lib_dec.h" +#include #include "cmdl_tools.h" #include "audio_file_writer.h" #include "bitstream_reader.h" -#include "masa_file_writer.h" +#include "evs_rtp_payload.h" #include "ism_file_writer.h" -#include "ls_custom_file_reader.h" +#include "jbm_file_writer.h" #include "hrtf_file_reader.h" +#include "ls_custom_file_reader.h" +#include "masa_file_writer.h" +#include "render_config_reader.h" #include "rotation_file_reader.h" -#include "vector3_pair_file_reader.h" -#include "jbm_file_writer.h" -#include "evs_rtp_payload.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "split_render_file_read_write.h" +#endif #ifdef VARIABLE_SPEED_DECODING #include "tsm_scale_file_reader.h" #endif +#include "vector3_pair_file_reader.h" #ifdef DEBUGGING #include "debug.h" #endif #include "wmc_auto.h" -#include "render_config_reader.h" -#include "hrtf_file_reader.h" #define WMC_TOOL_SKIP /*------------------------------------------------------------------------------------------* - * Local constants, enums, structures + * Local constants *------------------------------------------------------------------------------------------*/ #if !defined( DEBUGGING ) && !defined( WMOPS ) @@ -70,9 +69,8 @@ static #define MIN_NUM_BITS_ACTIVE_FRAME 56 #define NUM_BITS_SID_IVAS_5K2 104 -#define MAX_FRAME_SIZE ( 48000 / 50 ) -#define MAX_NUM_OUTPUT_CHANNELS 16 -#define MAX_OUTPUT_PCM_BUFFER_SIZE ( MAX_NUM_OUTPUT_CHANNELS * MAX_FRAME_SIZE ) +#define MAX_OUTPUT_PCM_BUFFER_SIZE ( ( IVAS_MAX_OUTPUT_CHANNELS + IVAS_MAX_NUM_OBJECTS ) * IVAS_MAX_FRAME_SIZE ) + #define IVAS_PUBLIC_ORIENT_TRK_NONE ( 0 ) #define IVAS_PUBLIC_ORIENT_TRK_REF ( 1 ) @@ -84,6 +82,15 @@ static #define VARIABLE_SPEED_FETCH_FRAMESIZE_MS 20 #endif #define JBM_FRONTEND_FETCH_FRAMESIZE_MS 20 +#ifdef API_5MS +#define HEADROTATION_FETCH_FRAMESIZE_MS 5 +#define DEFAULT_FETCH_FRAMESIZE_MS 20 +#endif + + +/*------------------------------------------------------------------------------------------* + * Local structure for storing cmdln arguments + *------------------------------------------------------------------------------------------*/ typedef struct { @@ -91,7 +98,7 @@ typedef struct char *outputWavFilename; IVAS_DEC_MODE decMode; int32_t output_Fs; - IVAS_DEC_AUDIO_CONFIG outputFormat; + AUDIO_CONFIG outputConfig; bool quietModeEnabled; bool delayCompensationEnabled; bool voipMode; @@ -107,12 +114,10 @@ typedef struct char *jbmTraceFilename; #endif char *jbmOffsetFilename; - char *FEPatterFileName; + char *FEPatternFileName; float FER; bool hrtfReaderEnabled; char *hrtfFileName; - bool hrtfCRendReaderEnabled; - char *hrtfCRendFileName; IVAS_DEC_INPUT_FORMAT inputFormat; bool customLsOutputEnabled; char *customLsSetupFilename; @@ -121,8 +126,16 @@ typedef struct float non_diegetic_pan_gain; bool renderConfigEnabled; char *renderConfigFilename; +#ifdef SPLIT_REND_WITH_HEAD_ROT + char *outputMdFilename; +#endif IVAS_DEC_COMPLEXITY_LEVEL complexityLevel; - +#ifdef API_5MS + bool tsmEnabled; +#ifdef API_5MS_BASELINE + bool enable5ms; +#endif +#endif #ifdef DEBUGGING IVAS_DEC_FORCED_REND_MODE forcedRendMode; #ifdef DEBUG_FOA_AGC @@ -130,18 +143,19 @@ typedef struct #endif #ifdef DEBUG_JBM_CMD_OPTION bool noBadFrameDelay; + uint16_t frontendFetchSizeMs; #endif #ifdef VARIABLE_SPEED_DECODING +#ifndef API_5MS bool variableSpeedMode; +#endif bool tsmScaleFileEnabled; char *tsmScaleFileName; uint16_t tsmScale; #endif -#ifdef DEBUG_JBM_CMD_OPTION - uint16_t frontendFetchSizeMs; #endif -#endif - + uint16_t acousticEnvironmentId; + uint16_t directivityPatternId[IVAS_MAX_NUM_OBJECTS]; } DecArguments; @@ -150,8 +164,16 @@ typedef struct *------------------------------------------------------------------------------------------*/ static bool parseCmdlIVAS_dec( int16_t argc, char **argv, DecArguments *arg ); + static void usage_dec( void ); -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 ); + +static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, RotFileReader *headRotReader, RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, +#ifdef SPLIT_REND_WITH_HEAD_ROT + uint8_t *splitRendBitsBuf, +#endif + IVAS_DEC_HANDLE hIvasDec, + int16_t *pcmBuf ); + static ivas_error decodeVoIP( DecArguments arg, BS_READER_HANDLE hBsReader, IVAS_DEC_HANDLE hIvasDec ); #ifdef DEBUGGING #ifdef VARIABLE_SPEED_DECODING @@ -185,6 +207,9 @@ int main( Vector3PairFileReader *referenceVectorReader = NULL; ivas_error error = IVAS_ERR_UNKNOWN; int16_t pcmBuf[MAX_OUTPUT_PCM_BUFFER_SIZE]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + uint8_t splitRendBitsBuf[IVAS_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES]; +#endif RenderConfigReader *renderConfigReader = NULL; #ifdef DEBUGGING int32_t noClipping; @@ -248,7 +273,21 @@ int main( } } - fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + fprintf( stdout, "Output metadata file: %s\n", arg.outputWavFilename ); + } + else if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename ); + fprintf( stdout, "Output metadata file: %s\n", arg.outputMdFilename ); + } + else +#endif + { + fprintf( stdout, "Output synthesis file: %s\n", arg.outputWavFilename ); + } /*------------------------------------------------------------------------------------------* * Open HRTF file @@ -257,7 +296,7 @@ int main( if ( arg.hrtfReaderEnabled ) { /* sanity check */ - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { arg.hrtfReaderEnabled = false; fprintf( stderr, "\nError: HRTF binary file cannot be used in this output configuration.\n\n" ); @@ -279,7 +318,11 @@ int main( if ( arg.enableHeadRotation ) { /* sanity check */ - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + && arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { fprintf( stderr, "\nError: Head-rotation file file cannot be used in this output configuration.\n\n" ); goto cleanup; @@ -299,7 +342,7 @@ int main( if ( arg.enableReferenceRotation ) { /* sanity check */ - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { fprintf( stderr, "\nError: Reference rotation file cannot be used in this output configuration.\n\n" ); goto cleanup; @@ -326,7 +369,7 @@ int main( if ( arg.enableReferenceVectorTracking ) { /* sanity check */ - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { fprintf( stderr, "\nError: Reference vector trajectory file cannot be used in this output configuration.\n\n" ); goto cleanup; @@ -379,7 +422,11 @@ int main( if ( arg.renderConfigEnabled ) { /* sanity check */ - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + && arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { fprintf( stderr, "\nError: Renderer configuration file cannot be used in this output configuration.\n\n" ); goto cleanup; @@ -392,32 +439,123 @@ int main( } } +#ifdef API_5MS + /*-------------------------------------------------------------------* + * Load renderer configuration from file + *--------------------------------------------------------------------*/ + + IVAS_RENDER_CONFIG_DATA renderConfigSplit; + if ( ( error = IVAS_DEC_GetDefaultRenderConfig( &renderConfigSplit ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_GetDefaultRenderConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + if ( arg.renderConfigEnabled ) + { + /* sanity check */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && + arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && + arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB && + arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && + arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + 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" ); + exit( -1 ); + } +#else + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + fprintf( stderr, "\nExternal Renderer Config is supported only for binaural output configurations. Exiting. \n\n" ); + goto cleanup; + } +#endif + if ( RenderConfigReader_read( renderConfigReader, + arg.renderConfigFilename, + &renderConfigSplit ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); + goto cleanup; + } + } +#endif + /*------------------------------------------------------------------------------------------* * Configure the decoder *------------------------------------------------------------------------------------------*/ - if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputFormat, arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) +/*------------------------------------------------------------------------------------------* + * Configure the decoder + *------------------------------------------------------------------------------------------*/ +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + arg.enableHeadRotation = true; +#ifdef API_5MS_BASELINE + if ( arg.enable5ms && + ( renderConfigSplit.split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || + renderConfigSplit.split_rend_config.dof == 0 ) ) + { + /*TODO : needs to be refined as this wont work with LCLD codec*/ + arg.enable5ms = true; + } + else + { + arg.enable5ms = false; + } +#endif + } +#endif + + if ( ( error = IVAS_DEC_Configure( hIvasDec, arg.output_Fs, arg.outputConfig, +#ifdef API_5MS_BASELINE + arg.tsmEnabled, arg.enable5ms, +#endif + arg.customLsOutputEnabled, arg.hrtfReaderEnabled, arg.enableHeadRotation, arg.enableExternalOrientation, arg.orientation_tracking, arg.renderConfigEnabled, arg.Opt_non_diegetic_pan, arg.non_diegetic_pan_gain, arg.delayCompensationEnabled ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } + + /*------------------------------------------------------------------------------------------* + * Configure VoIP mode + *------------------------------------------------------------------------------------------*/ + +#ifdef API_5MS +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( ( error = IVAS_DEC_EnableSplitRendering( hIvasDec ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nConfigure failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } +#endif +#endif + /*------------------------------------------------------------------------------------------* * Configure VoIP mode *------------------------------------------------------------------------------------------*/ if ( arg.voipMode ) { -#ifdef VARIABLE_SPEED_DECODING - if ( ( error = IVAS_DEC_EnableVoIP( hIvasDec, IVAS_DEC_VOIP_MODE_VOIP, 100, 60, arg.inputFormat ) ) != IVAS_ERR_OK ) +#ifdef API_5MS + if ( ( error = IVAS_DEC_EnableVoIP( hIvasDec, 60, arg.inputFormat ) ) != IVAS_ERR_OK ) #else +#ifndef VARIABLE_SPEED_DECODING if ( ( error = IVAS_DEC_EnableVoIP( hIvasDec, 60, arg.inputFormat ) ) != IVAS_ERR_OK ) +#else + if ( ( error = IVAS_DEC_EnableVoIP( hIvasDec, IVAS_DEC_VOIP_MODE_VOIP, 100, 60, arg.inputFormat ) ) != IVAS_ERR_OK ) +#endif #endif { fprintf( stderr, "\nCould not enable VOIP: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } } +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING else if ( arg.variableSpeedMode ) { @@ -428,6 +566,7 @@ int main( } } #endif +#endif #ifdef DEBUGGING /*-----------------------------------------------------------------* @@ -461,7 +600,11 @@ int main( IVAS_DEC_PrintConfigWithBitstream( hIvasDec, arg.quietModeEnabled, bit_stream, num_bits ); #ifdef VARIABLE_SPEED_DECODING +#ifdef API_5MS + if ( arg.tsmEnabled ) +#else if ( arg.variableSpeedMode ) +#endif { if ( arg.tsmScaleFileEnabled ) { @@ -501,9 +644,9 @@ int main( * Open Error pattern file for simulation *-----------------------------------------------------------------*/ - if ( arg.FEPatterFileName != NULL ) + if ( arg.FEPatternFileName != NULL ) { - if ( ( FEC_pattern = fopen( arg.FEPatterFileName, "rb" ) ) == NULL ) + if ( ( FEC_pattern = fopen( arg.FEPatternFileName, "rb" ) ) == NULL ) { fprintf( stderr, "Error: Missing or incorrect FEC filename specification\n\n" ); usage_dec(); @@ -519,20 +662,20 @@ int main( * Print information about FEC *-----------------------------------------------------------------*/ - if ( !arg.voipMode && ( arg.FEPatterFileName != NULL || arg.FER > 0 ) ) + if ( !arg.voipMode && ( arg.FEPatternFileName != NULL || arg.FER > 0 ) ) { - if ( arg.FEPatterFileName != NULL ) + if ( arg.FEPatternFileName != NULL ) { - fprintf( stdout, "FEC: %s\n", arg.FEPatterFileName ); + fprintf( stdout, "FEC: %s\n", arg.FEPatternFileName ); } else { fprintf( stdout, "FEC: %.2f %%\n", arg.FER ); } } -#else /* DEBUGGING */ +#else IVAS_DEC_PrintConfig( hIvasDec, 1, arg.voipMode ); -#endif /* DEBUGGING */ +#endif /*-------------------------------------------------------------------* * Load renderer configuration from file @@ -543,11 +686,20 @@ int main( IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ - if ( arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR && arg.outputFormat != IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB && + arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + 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 != AUDIO_CONFIG_BINAURAL && arg.outputConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && arg.outputConfig != 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 ) { @@ -555,19 +707,42 @@ int main( goto cleanup; } - if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) + if ( RenderConfigReader_read( renderConfigReader, arg.renderConfigFilename, &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n\n", arg.renderConfigFilename ); goto cleanup; } + if ( ( error = RenderConfigReader_getDirectivity( renderConfigReader, arg.directivityPatternId, renderConfig.directivity ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Failed to get directivity for objects: %d %d %d %d\n\n", arg.directivityPatternId[0], arg.directivityPatternId[1], arg.directivityPatternId[2], arg.directivityPatternId[3] ); + goto cleanup; + } + + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, arg.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) + { + if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Invalid reverberation configuration parameters\n\n" ); + goto cleanup; + } + } + else if ( error != IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING ) + { + fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", arg.acousticEnvironmentId ); + goto cleanup; + } + renderConfig.room_acoustics.override = true; + } + if ( ( error = IVAS_DEC_FeedRenderConfig( hIvasDec, renderConfig ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedRenderConfig failed: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; } } - /*------------------------------------------------------------------------------------------* * Load custom loudspeaker layout data *------------------------------------------------------------------------------------------*/ @@ -598,7 +773,11 @@ int main( { IVAS_DEC_HRTF_HANDLE hHrtfTD = NULL; - IVAS_DEC_GetHrtfHandle( hIvasDec, &hHrtfTD ); + 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; + } if ( ( error = load_HRTF_binary( hHrtfTD, hrtfReader ) ) != IVAS_ERR_OK ) { @@ -606,31 +785,47 @@ int main( goto cleanup; } - IVAS_DEC_HRTF_CREND_HANDLE hSetOfHRTF = NULL; - IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); + 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; + } 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.hrtfCRendFileName ); + fprintf( stderr, "\nError in loading HRTF binary file %s for CRend \n\n", arg.hrtfFileName ); goto cleanup; } + IVAS_DEC_HRTF_FASTCONV_HANDLE hHrtfFastConv = NULL; - IVAS_DEC_GetHrtfFastConvHandle( hIvasDec, &hHrtfFastConv ); + 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; + } 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.hrtfCRendFileName ); + fprintf( stderr, "\nError in loading HRTF binary file %s for FastConv \n\n", arg.hrtfFileName ); + goto cleanup; } + IVAS_DEC_HRTF_PARAMBIN_HANDLE hHrtfParambin = NULL; - IVAS_DEC_GetHrtfParamBinHandle( hIvasDec, &hHrtfParambin ); + 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; + } 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.hrtfCRendFileName ); + fprintf( stderr, "\nError in loading HRTF binary file %s for parametric binauralizer \n\n", arg.hrtfFileName ); + goto cleanup; } } + /*-----------------------------------------------------------------* * Decoding *-----------------------------------------------------------------*/ @@ -639,19 +834,21 @@ int main( { error = decodeVoIP( arg, hBsReader, hIvasDec ); } +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING else if ( arg.variableSpeedMode ) { - error = decodeVariableSpeed( arg, hBsReader, headRotReader, - externalOrientationFileReader, - refRotReader, referenceVectorReader, hIvasDec ); + error = decodeVariableSpeed( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, hIvasDec ); } +#endif #endif else { - error = decodeG192( arg, hBsReader, headRotReader, - externalOrientationFileReader, - refRotReader, referenceVectorReader, hIvasDec, pcmBuf ); + error = decodeG192( arg, hBsReader, headRotReader, externalOrientationFileReader, refRotReader, referenceVectorReader, +#ifdef SPLIT_REND_WITH_HEAD_ROT + splitRendBitsBuf, +#endif + hIvasDec, pcmBuf ); } if ( error == IVAS_ERR_OK || error == IVAS_ERR_END_OF_FILE ) @@ -703,6 +900,7 @@ cleanup: IVAS_DEC_GetHrtfCRendHandle( hIvasDec, &hSetOfHRTF ); destroy_SetOfHRTF( hSetOfHRTF ); } + IVAS_DEC_Close( &hIvasDec ); CustomLsReader_close( &hLsCustomReader ); hrtfFileReader_close( &hrtfReader ); @@ -744,10 +942,10 @@ cleanup: * Translate command-line argument to output configuration *---------------------------------------------------------------------*/ -static IVAS_DEC_AUDIO_CONFIG cmdline2config( +static AUDIO_CONFIG cmdline2config( char *argv ) { - IVAS_DEC_AUDIO_CONFIG output_config; + AUDIO_CONFIG output_config; char argv_to_upper[FILENAME_MAX]; @@ -757,63 +955,73 @@ static IVAS_DEC_AUDIO_CONFIG cmdline2config( if ( strcmp( argv_to_upper, "EXT" ) == 0 ) /* external renderer */ { - output_config = IVAS_DEC_OUTPUT_EXT; + output_config = AUDIO_CONFIG_EXTERNAL; } else if ( strcmp( argv_to_upper, "MONO" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_MONO; + output_config = AUDIO_CONFIG_MONO; } else if ( strcmp( argv_to_upper, "STEREO" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_STEREO; + output_config = AUDIO_CONFIG_STEREO; } else if ( strcmp( argv_to_upper, "5_1" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_5_1; + output_config = AUDIO_CONFIG_5_1; } else if ( strcmp( argv_to_upper, "7_1" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_7_1; + output_config = AUDIO_CONFIG_7_1; } else if ( strcmp( argv_to_upper, "5_1_2" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_5_1_2; + output_config = AUDIO_CONFIG_5_1_2; } else if ( strcmp( argv_to_upper, "5_1_4" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_5_1_4; + output_config = AUDIO_CONFIG_5_1_4; } else if ( strcmp( argv_to_upper, "7_1_4" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_7_1_4; + output_config = AUDIO_CONFIG_7_1_4; } else if ( strcmp( argv_to_upper, "FOA" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_FOA; + output_config = AUDIO_CONFIG_FOA; } else if ( strcmp( argv_to_upper, "HOA2" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_HOA2; + output_config = AUDIO_CONFIG_HOA2; } else if ( strcmp( argv_to_upper, "HOA3" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_HOA3; + output_config = AUDIO_CONFIG_HOA3; } else if ( strcmp( argv_to_upper, "BINAURAL" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_BINAURAL; + output_config = AUDIO_CONFIG_BINAURAL; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_CODED" ) == 0 ) + { + output_config = AUDIO_CONFIG_BINAURAL_SPLIT_CODED; + } + else if ( strcmp( argv_to_upper, "BINAURAL_SPLIT_PCM" ) == 0 ) + { + output_config = AUDIO_CONFIG_BINAURAL_SPLIT_PCM; } +#endif else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_IR" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR; + output_config = AUDIO_CONFIG_BINAURAL_ROOM_IR; } else if ( strcmp( argv_to_upper, "BINAURAL_ROOM_REVERB" ) == 0 ) { - output_config = IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB; + output_config = AUDIO_CONFIG_BINAURAL_ROOM_REVERB; } else { - output_config = IVAS_DEC_OUTPUT_LS_CUSTOM; + output_config = AUDIO_CONFIG_LS_CUSTOM; } return output_config; @@ -833,6 +1041,7 @@ static bool parseCmdlIVAS_dec( { int16_t i; char argv_to_upper[FILENAME_MAX]; + #ifdef DEBUGGING float ftmp; @@ -842,7 +1051,7 @@ static bool parseCmdlIVAS_dec( #endif #endif arg->output_Fs = 48000; - arg->outputFormat = IVAS_DEC_OUTPUT_MONO; + arg->outputConfig = AUDIO_CONFIG_MONO; arg->decMode = IVAS_DEC_MODE_IVAS; arg->quietModeEnabled = false; arg->delayCompensationEnabled = true; @@ -865,27 +1074,35 @@ static bool parseCmdlIVAS_dec( arg->jbmOffsetFilename = NULL; arg->FER = 0.f; - arg->FEPatterFileName = NULL; + arg->FEPatternFileName = NULL; arg->hrtfReaderEnabled = false; arg->hrtfFileName = NULL; - arg->hrtfCRendReaderEnabled = false; - arg->hrtfCRendFileName = NULL; - arg->customLsOutputEnabled = false; arg->customLsSetupFilename = NULL; arg->renderConfigEnabled = false; arg->renderConfigFilename = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + arg->outputMdFilename = NULL; +#endif + arg->inputFormat = IVAS_DEC_INPUT_FORMAT_G192; arg->Opt_non_diegetic_pan = 0; arg->non_diegetic_pan_gain = 0.f; - +#ifdef API_5MS + arg->tsmEnabled = false; +#ifdef API_5MS_BASELINE + arg->enable5ms = false; +#endif +#endif #ifdef DEBUGGING #ifdef VARIABLE_SPEED_DECODING +#ifndef API_5MS arg->variableSpeedMode = false; +#endif arg->tsmScale = 100; arg->tsmScaleFileEnabled = false; arg->tsmScaleFileName = NULL; @@ -898,6 +1115,11 @@ static bool parseCmdlIVAS_dec( #endif #endif + arg->acousticEnvironmentId = 0; + for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) + { + arg->directivityPatternId[i] = 0; + } /*-----------------------------------------------------------------* * Initialization *-----------------------------------------------------------------*/ @@ -992,7 +1214,7 @@ static bool parseCmdlIVAS_dec( ftmp = 0.0f; if ( sscanf( argv[i + 1], "%f", &ftmp ) != 1 ) { - arg->FEPatterFileName = argv[i + 1]; + arg->FEPatternFileName = argv[i + 1]; } else { @@ -1034,7 +1256,14 @@ static bool parseCmdlIVAS_dec( { i++; int32_t tmp = 100; +#ifdef API_5MS + arg->tsmEnabled = true; +#ifdef API_5MS_BASELINE + arg->enable5ms = true; +#endif +#else arg->variableSpeedMode = true; +#endif if ( i < argc - 3 ) { if ( !is_digits_only( argv[i] ) ) @@ -1103,6 +1332,13 @@ static bool parseCmdlIVAS_dec( arg->headrotTrajFileName = argv[i]; i++; } +#ifdef API_5MS_BASELINE + else if ( strcmp( argv_to_upper, "-FR5" ) == 0 ) + { + arg->enable5ms = true; + i++; + } +#endif else if ( strcmp( argv_to_upper, "-OTR" ) == 0 ) { @@ -1196,6 +1432,19 @@ 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]; + if ( arg->outputMdFilename[0] == '\0' ) + { + fprintf( stderr, "Error: output metadata file path not specified\n\n" ); + usage_dec(); + return false; + } + i += 2; + } +#endif else if ( strcmp( argv_to_upper, "-NON_DIEGETIC_PAN" ) == 0 ) { i++; @@ -1245,11 +1494,27 @@ static bool parseCmdlIVAS_dec( fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); } } + else if ( strcmp( argv_to_upper, "-AEID" ) == 0 ) + { + ++i; + arg->acousticEnvironmentId = (int16_t) atoi( argv[i++] ); + } + else if ( strcmp( argv_to_upper, "-DPID" ) == 0 ) + { + ++i; + int16_t tmp; + tmp = 0; + while ( is_number( argv[i + tmp] ) && tmp < IVAS_MAX_NUM_OBJECTS ) + { + arg->directivityPatternId[tmp] = (int16_t) atoi( argv[i + tmp] ); + ++tmp; + } + i += tmp; + } /*-----------------------------------------------------------------* * Option not recognized *-----------------------------------------------------------------*/ - else { fprintf( stderr, "Error: Unknown option %s or wrong number of parameters!\n\n", argv[i] ); @@ -1266,14 +1531,14 @@ static bool parseCmdlIVAS_dec( if ( i < argc - 3 ) { - arg->outputFormat = cmdline2config( argv[i] ); - if ( arg->outputFormat == IVAS_DEC_OUTPUT_LS_CUSTOM ) + arg->outputConfig = cmdline2config( argv[i] ); + if ( arg->outputConfig == AUDIO_CONFIG_LS_CUSTOM ) { arg->customLsOutputEnabled = true; arg->customLsSetupFilename = argv[i]; } i++; - if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputFormat != IVAS_DEC_OUTPUT_STEREO ) ) + if ( ( arg->Opt_non_diegetic_pan ) && ( arg->outputConfig != AUDIO_CONFIG_STEREO ) ) { fprintf( stderr, "Error: non-diegetic panning is supported in stereo only\n\n" ); usage_dec(); @@ -1282,11 +1547,11 @@ static bool parseCmdlIVAS_dec( } else { - arg->outputFormat = IVAS_DEC_OUTPUT_MONO; + arg->outputConfig = AUDIO_CONFIG_MONO; arg->decMode = IVAS_DEC_MODE_EVS; if ( ( arg->Opt_non_diegetic_pan ) ) { - arg->outputFormat = IVAS_DEC_OUTPUT_STEREO; + arg->outputConfig = AUDIO_CONFIG_STEREO; } } @@ -1338,6 +1603,13 @@ static bool parseCmdlIVAS_dec( return false; } +#ifdef API_5MS_BASELINE + if ( ( !arg->enableHeadRotation ) && ( !arg->enableExternalOrientation ) ) + { + arg->enable5ms = false; + } +#endif + return true; } @@ -1355,8 +1627,13 @@ 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" ); @@ -1388,6 +1665,7 @@ static void usage_dec( void ) fprintf( stdout, "-VOIP_framesize : VoIP mode: acoustic frontend fetch frame size (must be multiples of 5!)\n" ); #endif #endif + fprintf( stdout, "-fr5 : option to perform rendering + head-tracking with 5ms frame size\n" ); fprintf( stdout, "-fec_cfg_file : Optimal channel aware configuration computed by the JBM \n" ); fprintf( stdout, " as described in Section 6.3.1 of TS26.448. The output is \n" ); fprintf( stdout, " written into a .txt file. Each line contains the FER indicator \n" ); @@ -1402,15 +1680,16 @@ static void usage_dec( void ) fprintf( stdout, "-T File : Head rotation specified by external trajectory File\n" ); fprintf( stdout, "-otr tracking_type : Head orientation tracking type: 'none', 'ref', 'avg', 'ref_vec' \n" ); fprintf( stdout, " or 'ref_vec_lev' (only for binaural rendering)\n" ); - fprintf( stdout, "-rf File : Reference rotation specified by external trajectory file\n" ); + fprintf( stdout, "-rf File : Reference rotation specified by external trajectory File\n" ); fprintf( stdout, " works only in combination with '-otr ref' mode \n" ); - fprintf( stdout, "-rvf File : Reference vector specified by external trajectory file\n" ); + 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, "-q : Quiet mode, no frame counter\n" ); - fprintf( stdout, " default is deactivated\n" ); #ifdef DEBUGGING fprintf( stdout, "-FEC X : Insert frame erasures, X = 0-10 is the percentage\n" ); fprintf( stdout, " of erased frames, or X may be the name of binary file or \n" ); @@ -1418,10 +1697,14 @@ static void usage_dec( void ) fprintf( stdout, " containing FEC pattern (short values of 0 (good) or 1 (bad))\n" ); fprintf( stdout, " default is OFF, if this option is not used\n" ); fprintf( stdout, "-force R : Force specific binaural rendering mode, R = (TDREND, CLDFBREND),\n" ); +#endif + fprintf( stdout, "-exof File : External orientation File for external orientation trajectory\n" ); + fprintf( stdout, "-dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration\n" ); + fprintf( stdout, "-aeid ID : Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration\n" ); fprintf( stdout, "-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. \n" ); fprintf( stdout, " Currently, all values default to level 3 (full functionality).\n" ); -#endif - fprintf( stdout, "-exof File : External orientation file for external orientation trajectory\n" ); + fprintf( stdout, "-q : Quiet mode, no frame counter\n" ); + fprintf( stdout, " default is deactivated\n" ); #ifdef DEBUG_MODE_INFO #ifdef DEBUG_MODE_INFO_TWEAK fprintf( stdout, "-info : specify subfolder name for debug output\n" ); @@ -1447,11 +1730,23 @@ static int16_t app_own_random( int16_t *seed ) } #endif + +/*---------------------------------------------------------------------* + * initOnFirstGoodFrame() + * + * + *---------------------------------------------------------------------*/ + static ivas_error initOnFirstGoodFrame( - IVAS_DEC_HANDLE hIvasDec, /* i/o: */ - const DecArguments arg, /* i : */ - const int16_t numInitialBadFrames, /* i : */ - const uint16_t numOutSamples, /* i : */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: */ + const DecArguments arg, /* i : */ + const int16_t numInitialBadFrames, /* i : */ +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + uint16_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 : */ @@ -1461,6 +1756,10 @@ static ivas_error initOnFirstGoodFrame( IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS], /* o : */ int16_t *pNumOutChannels, /* o : */ uint16_t *pNumObj /* o : */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + SplitFileReadWrite **hSplitRendFileReadWrite +#endif ) { ivas_error error = IVAS_ERR_UNKNOWN; @@ -1472,6 +1771,13 @@ static ivas_error initOnFirstGoodFrame( return error; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + pFullDelayNumSamples[0] = 0; + } +#endif + if ( !arg.delayCompensationEnabled ) { pFullDelayNumSamples[0] = 0; @@ -1492,124 +1798,1023 @@ static ivas_error initOnFirstGoodFrame( return error; } - /* 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 ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - fprintf( stderr, "\nUnable to open output file %s\n", arg.outputWavFilename ); - return error; - } + /* Open split rendering metadata writer */ + int16_t delayNumSamples_temp[3]; + int32_t delayTimeScale_temp; - int16_t *zeroBuf = malloc( pcmFrameSize * sizeof( int16_t ) ); - memset( zeroBuf, 0, pcmFrameSize * sizeof( int16_t ) ); + if ( ( error = IVAS_DEC_GetDelay( hIvasDec, delayNumSamples_temp, &delayTimeScale_temp ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to get delay of decoder: %s\n", ivas_error_to_string( error ) ); + return error; + } - for ( int16_t i = 0; i < numInitialBadFrames; ++i ) - { - if ( *pRemainingDelayNumSamples < numOutSamples ) + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) { - if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, numOutSamples * *pNumOutChannels - ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK ) + if ( ( error = split_rend_writer_open( hSplitRendFileReadWrite, arg.outputWavFilename, delayNumSamples_temp[0], delayTimeScale_temp ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nOutput audio file writer error\n" ); + fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); return error; } - *pRemainingDelayNumSamples = 0; } else { - *pRemainingDelayNumSamples -= numOutSamples; + if ( ( error = split_rend_writer_open( hSplitRendFileReadWrite, arg.outputMdFilename, delayNumSamples_temp[0], delayTimeScale_temp ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to open output split rendering metadata file %s\n", arg.outputWavFilename ); + return error; + } } } - free( zeroBuf ); - - /* Open other output files if EXT output config - now details about ISM or MASA are known */ - if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) { - if ( ( error = IVAS_DEC_GetFormat( hIvasDec, pBsFormat ) ) != IVAS_ERR_OK ) +#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, "\nError in IVAS_DEC_GetFormat, code: %d\n", error ); + fprintf( stderr, "\nUnable to open output file %s\n", arg.outputWavFilename ); return error; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif - /* If outputting ISM, get number of objects, open output files and write zero metadata for initial bad frames */ - if ( *pBsFormat == IVAS_DEC_BS_OBJ ) + 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 ( *hSplitRendFileReadWrite != NULL ) { - if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, pNumObj ) ) != IVAS_ERR_OK ) + IVAS_SPLIT_REND_BITS_DATA splitRendBitsZero; + splitRendBitsZero.bits_buf = NULL; + splitRendBitsZero.bits_read = 0; + splitRendBitsZero.bits_written = 0; + splitRendBitsZero.buf_len = 0; + splitRendBitsZero.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + splitRendBitsZero.pose_correction = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; +#ifdef API_5MS + splitRendBitsZero.codec_frame_size_ms = 20; +#endif + if ( split_rend_write_bitstream_to_file( *hSplitRendFileReadWrite, splitRendBitsZero.bits_buf, &splitRendBitsZero.bits_read, &splitRendBitsZero.bits_written, + -1, IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE +#ifdef API_5MS + , + splitRendBitsZero.codec_frame_size_ms +#endif + ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nError in IVAS_DEC_GetNumObjects: %s\n", IVAS_DEC_GetErrorMessage( error ) ); - return error; + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); + exit( -1 ); } - - for ( int16_t i = 0; i < *pNumObj; ++i ) + } + else + { +#endif + if ( *pRemainingDelayNumSamples < +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + *numOutSamples +#else + numOutSamples +#endif + ) + { + if ( ( error = AudioFileWriter_write( *ppAfWriter, zeroBuf, +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + *numOutSamples +#else + numOutSamples +#endif + * *pNumOutChannels - + ( *pRemainingDelayNumSamples * *pNumOutChannels ) ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + return error; + } + *pRemainingDelayNumSamples = 0; + } + else + { + *pRemainingDelayNumSamples -= +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + *numOutSamples +#else + numOutSamples +#endif + ; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif + } + + free( zeroBuf ); + + /* Open other output files if EXT output config - now details about ISM or MASA are known */ + if ( arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) + { + if ( ( error = IVAS_DEC_GetFormat( hIvasDec, pBsFormat ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetFormat, code: %d\n", error ); + return error; + } + /* If outputting ISM, get number of objects, open output files and write zero metadata for initial bad frames */ + if ( *pBsFormat == IVAS_DEC_BS_OBJ || *pBsFormat == IVAS_DEC_BS_MASA_ISM + + || *pBsFormat == IVAS_DEC_BS_SBA_ISM ) + { + if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, pNumObj ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetNumObjects: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + for ( int16_t i = 0; i < *pNumObj; ++i ) + { + if ( ( error = IsmFileWriter_open( arg.outputWavFilename, i, &ismWriters[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: Error opening ISM decoded metadata file %s\n", IsmFileWriter_getFilePath( ismWriters[i] ) ); + return error; + } + } + + for ( int16_t j = 0; j < numInitialBadFrames; ++j ) + { + /* write zero metadata */ + for ( int16_t i = 0; i < *pNumObj; ++i ) + { + IVAS_ISM_METADATA IsmMetadata; + + if ( ( error = IVAS_DEC_GetObjectMetadata( hIvasDec, &IsmMetadata, 1, i ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetObjectMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + if ( ( error = IsmFileWriter_writeFrame( IsmMetadata, ismWriters[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing ISM metadata to file %s\n", IsmFileWriter_getFilePath( ismWriters[i] ) ); + return error; + } + } + } + } + + /* If outputting MASA, open output file and write metadata for initial bad frames */ + if ( *pBsFormat == IVAS_DEC_BS_MASA || *pBsFormat == IVAS_DEC_BS_MASA_ISM ) + { + if ( ( error = MasaFileWriter_open( arg.outputWavFilename, arg.delayCompensationEnabled, ppMasaWriter ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: Error opening MASA decoded metadata file %s\n", MasaFileWriter_getFilePath( *ppMasaWriter ) ); + return error; + } + + if ( numInitialBadFrames > 0 ) + { + /* Duplicate good first frame metadata to fill the beginning of stream. */ + MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL; + if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + return error; + } + + for ( int16_t j = 0; j < numInitialBadFrames; ++j ) + { + if ( ( error = MasaFileWriter_writeFrame( *ppMasaWriter, hMasaExtOutMeta ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing MASA metadata to file: %s\n", MasaFileWriter_getFilePath( *ppMasaWriter ) ); + return error; + } + } + } + } + } + +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + if ( *hSplitRendFileReadWrite != NULL ) + { + + int16_t enable5ms; + + if ( numOutSamples == NULL || vec_pos_len == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + IVAS_DEC_Get5msFlag( hIvasDec, &enable5ms ); + + /* real setting of the 5ms mode for split rendering is only known after the decoded first good frame, reset the variables needed in the main decoding loop accordingly here*/ + if ( enable5ms ) + { + *numOutSamples = (int16_t) ( arg.output_Fs / 1000 * HEADROTATION_FETCH_FRAMESIZE_MS ); + *vec_pos_len = IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; + } + else + { + *numOutSamples = (int16_t) ( arg.output_Fs / 1000 * DEFAULT_FETCH_FRAMESIZE_MS ); + *vec_pos_len = 1; + } + } +#endif + + return IVAS_ERR_OK; +} + +/*---------------------------------------------------------------------* + * decodeG192() + * + * Read G.192 bitstream and decode in regular decoder + *---------------------------------------------------------------------*/ +#ifdef API_5MS +static ivas_error decodeG192( + DecArguments arg, + BS_READER_HANDLE hBsReader, + RotFileReader *headRotReader, + RotFileReader *externalOrientationFileReader, + RotFileReader *refRotReader, + Vector3PairFileReader *referenceVectorReader, +#ifdef SPLIT_REND_WITH_HEAD_ROT + uint8_t *splitRendBitsBuf, +#endif + IVAS_DEC_HANDLE hIvasDec, + int16_t *pcmBuf ) + +{ + bool decodingFailed = true; /* Assume failure until cleanup is reached without errors */ + uint16_t bit_stream[IVAS_MAX_BITS_PER_FRAME + 4 * 8]; + int16_t i, num_bits; + int16_t bfi = 0; +#ifdef DEBUGGING + int16_t fec_seed = 12558; /* FEC_SEED */ +#endif + AudioFileWriter *afWriter = NULL; + MasaFileWriter *masaWriter = NULL; + bool decodedGoodFrame = false; + int16_t numInitialBadFrames = 0; /* Number of bad frames received until first good frame is decoded */ + int16_t nOutChannels = 0; + int16_t delayNumSamples = -1; + int16_t delayNumSamples_orig[3]; +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + uint16_t nOutSamples = 0; +#else + int16_t nOutSamples = 0; +#endif + int32_t delayTimeScale = 0; + ivas_error error = IVAS_ERR_UNKNOWN; + uint16_t numObj = 0; + IVAS_DEC_BS_FORMAT bsFormat = IVAS_DEC_BS_UNKOWN; + uint16_t nSamplesAvailableNext; + bool needNewFrame; + int16_t nSamplesRendered, nSamplesRendered_loop, nSamplesToRender; +#ifdef DEBUGGING +#ifdef VARIABLE_SPEED_DECODING + TsmScaleFileReader *tsmScaleFileReader = NULL; + int16_t scale; +#endif +#endif + 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 } }; + int16_t vec_pos_update, vec_pos_len; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_BITS_DATA splitRendBits; + SplitFileReadWrite *hSplitRendFileReadWrite; +#endif + + for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) + { + ismWriters[i] = NULL; + } + + /* we always start with needing a new frame */ + needNewFrame = true; + +#ifdef DEBUGGING +#ifdef VARIABLE_SPEED_DECODING + /*------------------------------------------------------------------------------------------* + * Open TSM scale file or set global TSM scale + *------------------------------------------------------------------------------------------*/ + + if ( arg.tsmEnabled ) + { + if ( arg.tsmScaleFileEnabled ) + { + if ( ( tsmScaleFileReader = TsmScaleFileReader_open( arg.tsmScaleFileName ) ) == NULL ) + { + fprintf( stderr, "\nError: Can't open TSM scale file %s \n\n", arg.tsmScaleFileName ); + goto cleanup; + } + } + else + { + IVAS_DEC_VoIP_SetScale( hIvasDec, arg.tsmScale, arg.tsmScale ); + } + } +#endif +#endif + + if ( !arg.quietModeEnabled ) + { + fprintf( stdout, "\n------ Running the decoder ------\n\n" ); + fprintf( stdout, "Frames processed: " ); + } + else + { + fprintf( stdout, "\n-- Start the decoder (quiet mode) --\n\n" ); + } + + delayNumSamples_orig[0] = -1; + +#ifdef WMOPS + reset_stack(); + reset_wmops(); +#endif + nSamplesAvailableNext = 0; + + vec_pos_update = 0; + if ( arg.enableHeadRotation +#ifdef API_5MS_BASELINE + && arg.enable5ms +#endif + ) + { + nOutSamples = (int16_t) ( arg.output_Fs / 1000 * HEADROTATION_FETCH_FRAMESIZE_MS ); + vec_pos_len = IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; + } + else + { + nOutSamples = (int16_t) ( arg.output_Fs / 1000 * DEFAULT_FETCH_FRAMESIZE_MS ); + vec_pos_len = 1; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + splitRendBits.bits_buf = splitRendBitsBuf; + splitRendBits.bits_read = 0; + splitRendBits.bits_written = 0; + splitRendBits.buf_len = IVAS_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES; + splitRendBits.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + splitRendBits.pose_correction = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + splitRendBits.codec_frame_size_ms = 0; + hSplitRendFileReadWrite = NULL; +#endif + + /*------------------------------------------------------------------------------------------* + * Loop for every packet (frame) of bitstream data + * - Read the bitstream packet + * - Run the decoder + * - Write the synthesized signal into output file + *------------------------------------------------------------------------------------------*/ + + while ( 1 ) + { + /* Read next frame if not enough samples availble */ + + /* reference vector */ + if ( arg.enableReferenceVectorTracking && vec_pos_update == 0 ) + { + IVAS_VECTOR3 listenerPosition, referencePosition; + if ( ( error = Vector3PairFileReader_read( referenceVectorReader, &listenerPosition, &referencePosition ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading listener and reference positions from %s\n", IVAS_DEC_GetErrorMessage( error ), Vector3PairFileReader_getFilePath( referenceVectorReader ) ); + goto cleanup; + } + + if ( ( error = IVAS_DEC_FeedRefVectorData( hIvasDec, listenerPosition, referencePosition ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedRefVectorData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + + /* Reference rotation */ + if ( arg.enableReferenceRotation && vec_pos_update == 0 ) + { + IVAS_QUATERNION quaternion; + if ( ( error = HeadRotationFileReading( refRotReader, &quaternion, NULL ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading reference rotation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( refRotReader ) ); + goto cleanup; + } + + if ( ( error = IVAS_DEC_FeedRefRotData( hIvasDec, quaternion ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedRefRotData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } +#ifdef API_5MS + int16_t enable5ms, num_subframes; + IVAS_DEC_Get5msFlag( hIvasDec, &enable5ms ); + arg.enable5ms = enable5ms; + num_subframes = ( arg.enable5ms ) ? 1 : IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; +#else + num_subframes = IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; +#endif + + /* Head-tracking input simulation */ + /* Head-tracking input simulation */ + if ( arg.enableHeadRotation ) + { + IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( headRotReader == NULL ) + { + for ( i = 0; i < num_subframes; i++ ) + { + Quaternions[i].w = -3.0f; + Quaternions[i].x = 0.0f; + Quaternions[i].y = 0.0f; + Quaternions[i].z = 0.0f; + Pos[i].x = 0.0f; + Pos[i].y = 0.0f; + Pos[i].z = 0.0f; + } + } + else + { +#endif + for ( i = 0; i < num_subframes; i++ ) + { + if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), + RotationFileReader_getFilePath( headRotReader ) ); + goto cleanup; + } + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif + +#ifdef API_5MS + 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 ) ); + goto cleanup; + } + } +#else + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } +#endif + } + + if ( arg.enableExternalOrientation ) + { + IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + int8_t enableHeadRotation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + int8_t enableExternalOrientation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + int8_t enableRotationInterpolation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t numFramesToTargetOrientation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + + for ( i = 0; i < num_subframes; i++ ) + { + + if ( ( error = ExternalOrientationFileReading( externalOrientationFileReader, &Quaternions[i], &enableHeadRotation[i], &enableExternalOrientation[i], &enableRotationInterpolation[i], &numFramesToTargetOrientation[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading external orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), + RotationFileReader_getFilePath( externalOrientationFileReader ) ); + goto cleanup; + } + } +#ifdef API_5MS + for ( i = 0; i < num_subframes; i++ ) + { + if ( ( error = IVAS_DEC_FeedExternalOrientationData( hIvasDec, Quaternions[i], enableHeadRotation[i], enableExternalOrientation[i], enableRotationInterpolation[i], numFramesToTargetOrientation[i], i ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedExternalOrientationData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } +#else + if ( ( error = IVAS_DEC_FeedExternalOrientationData( hIvasDec, Quaternions, enableHeadRotation, enableExternalOrientation, enableRotationInterpolation, numFramesToTargetOrientation ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedExternalOrientationData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } +#endif + } + + /* decode and get samples */ + nSamplesRendered = 0; + nSamplesToRender = nOutSamples; + do + { + if ( needNewFrame ) + { +#ifdef DEBUGGING +#ifdef VARIABLE_SPEED_DECODING + if ( arg.tsmScaleFileEnabled ) + { + if ( ( error = TsmScaleFileReader_readScale( tsmScaleFileReader, &scale ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: input bitstream file couldn't be read: %s \n\n", arg.inputBitstreamFilename ); + goto cleanup; + } + IVAS_DEC_VoIP_SetScale( hIvasDec, scale, scale ); + } +#endif +#endif + + if ( ( error = BS_Reader_ReadFrame_short( hBsReader, bit_stream, &num_bits, &bfi ) ) != IVAS_ERR_OK ) + { + if ( error == IVAS_ERR_END_OF_FILE ) + { + break; + } + fprintf( stderr, "\nError: input bitstream file couldn't be read: %s \n\n", arg.inputBitstreamFilename ); + goto cleanup; + } + +#ifdef DEBUGGING + /* Random FEC simulation */ + if ( arg.FER > 0.0f ) + { + float ftmp = (float) app_own_random( &fec_seed ) + 32768.0f; + if ( ftmp <= arg.FER / 100.0f * 65535.0f ) + { + bfi = 1; + } + else + { + bfi = 0; + } + } +#endif + + /* Feed into decoder */ + if ( ( error = IVAS_DEC_FeedFrame_Serial( hIvasDec, bit_stream, num_bits, bfi ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError: could not feed frame to decoder: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + error = IVAS_DEC_GetSplitBinauralBitstream( hIvasDec, + (void *) ( pcmBuf + nOutChannels * nSamplesRendered ), + &splitRendBits, + &nSamplesRendered_loop, + &needNewFrame ); + nSamplesRendered += nSamplesRendered_loop; + nSamplesToRender -= nSamplesRendered_loop; + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetSplitBinauralBitstream: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + else + { +#endif + error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_INT16, + (void *) +#endif + ( pcmBuf + nOutChannels * nSamplesRendered ), + &nSamplesRendered_loop, + &needNewFrame ); + nSamplesRendered += nSamplesRendered_loop; + nSamplesToRender -= nSamplesRendered_loop; + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetSamples: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif + + + } while ( nSamplesRendered < nOutSamples && error == IVAS_ERR_OK ); + + if ( error == IVAS_ERR_END_OF_FILE ) + { + break; + } + + /* Continue checking for first good frame until it is found */ + if ( !decodedGoodFrame ) + { + if ( ( error = IVAS_DEC_HasDecodedFirstGoodFrame( hIvasDec, &decodedGoodFrame ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_HasDecodedFirstGoodFrame, code: %d\n", error ); + goto cleanup; + } + + /* Once good frame decoded, catch up */ + if ( decodedGoodFrame ) + { + error = initOnFirstGoodFrame( + hIvasDec, + arg, + numInitialBadFrames, +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + &nOutSamples, + &vec_pos_len, +#else + nOutSamples, +#endif + delayNumSamples_orig, + &delayNumSamples, + &delayTimeScale, + &bsFormat, + &afWriter, + &masaWriter, + ismWriters, + &nOutChannels, + &numObj +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + &hSplitRendFileReadWrite +#endif + ); + if ( error != IVAS_ERR_OK ) + { + goto cleanup; + } + } + else + { + ++numInitialBadFrames; + } + } + + /* Write current frame */ + if ( decodedGoodFrame ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) + { + if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, + splitRendBits.codec, splitRendBits.pose_correction +#ifdef API_5MS + , + splitRendBits.codec_frame_size_ms +#endif + ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); + goto cleanup; + } + } + else + { + if ( ( hSplitRendFileReadWrite != NULL ) && ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, + splitRendBits.codec, splitRendBits.pose_correction +#ifdef API_5MS + , + splitRendBits.codec_frame_size_ms +#endif + ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); + goto cleanup; + } + } +#endif + if ( delayNumSamples < nOutSamples ) + { + if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + delayNumSamples = 0; + } + else + { + delayNumSamples -= nOutSamples; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif + } + + /* Write ISm metadata to external file(s) */ + if ( decodedGoodFrame && arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) + { + if ( bsFormat == IVAS_DEC_BS_OBJ ) + { + if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetNumObjects: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + for ( i = 0; i < numObj; ++i ) + { + IVAS_ISM_METADATA IsmMetadata; + + if ( ( error = IVAS_DEC_GetObjectMetadata( hIvasDec, &IsmMetadata, 0, i ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetObjectMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + if ( ( IsmFileWriter_writeFrame( IsmMetadata, ismWriters[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing ISM metadata to file %s\n", IsmFileWriter_getFilePath( ismWriters[i] ) ); + goto cleanup; + } + } + } + else if ( bsFormat == IVAS_DEC_BS_MASA ) + { + MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; + if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + if ( ( error = MasaFileWriter_writeFrame( masaWriter, hMasaExtOutMeta ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing MASA metadata to file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); + goto cleanup; + } + } + } + vec_pos_update = ( vec_pos_update + 1 ) % vec_pos_len; +#ifdef API_5MS + if ( needNewFrame ) + { +#endif + frame++; + if ( !arg.quietModeEnabled ) + { + fprintf( stdout, "%-8d\b\b\b\b\b\b\b\b", frame ); +#ifdef DEBUGGING + if ( IVAS_DEC_GetBerDetectFlag( hIvasDec ) ) + { + fprintf( stdout, "\n Decoding error: BER detected in frame %d !!!!!\n", frame - 1 ); + } +#endif + } +#ifdef API_5MS + } +#endif +#ifdef WMOPS + if ( vec_pos_update == 0 ) + { + update_wmops(); + } +#ifdef MEM_COUNT_DETAILS + export_mem( "mem_analysis.csv" ); +#endif +#endif + } + + + /*------------------------------------------------------------------------------------------* + * Flush what is still left in the VoIP Buffers.... + *------------------------------------------------------------------------------------------*/ + + while ( nSamplesAvailableNext > 0 ) + { + int16_t nSamplesFlushed; + + /* Feed into decoder */ + + /* reference vector */ + if ( arg.enableReferenceVectorTracking ) + { + IVAS_VECTOR3 listenerPosition, referencePosition; + if ( ( error = Vector3PairFileReader_read( referenceVectorReader, &listenerPosition, &referencePosition ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading listener and reference positions from %s\n", IVAS_DEC_GetErrorMessage( error ), Vector3PairFileReader_getFilePath( referenceVectorReader ) ); + goto cleanup; + } + + if ( ( error = IVAS_DEC_FeedRefVectorData( hIvasDec, listenerPosition, referencePosition ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedRefVectorData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + /* Reference rotation */ + if ( arg.enableReferenceRotation ) + { + IVAS_QUATERNION quaternion; + if ( ( error = HeadRotationFileReading( refRotReader, &quaternion, NULL ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading reference rotation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( refRotReader ) ); + goto cleanup; + } + + if ( ( error = IVAS_DEC_FeedRefRotData( hIvasDec, quaternion ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedRefRotData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + /* Head-tracking input simulation */ + if ( arg.enableHeadRotation ) + { + IVAS_QUATERNION Quaternion; + + + if ( ( error = HeadRotationFileReading( headRotReader, &Quaternion, &Pos[0] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), RotationFileReader_getFilePath( headRotReader ) ); + goto cleanup; + } + + + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternion, Pos[0], 0 +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + } + + /* decode and get samples */ + if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_INT16, + (void *) +#endif + pcmBuf, + &nSamplesFlushed ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + /* Write current frame */ + if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, nSamplesFlushed * nOutChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + + /* Write ISm metadata to external file(s) */ + if ( decodedGoodFrame && arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) + { + if ( bsFormat == IVAS_DEC_BS_OBJ ) { - if ( ( error = IsmFileWriter_open( arg.outputWavFilename, i, &ismWriters[i] ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nError: Error opening ISM decoded metadata file %s\n", IsmFileWriter_getFilePath( ismWriters[i] ) ); - return error; + fprintf( stderr, "\nError in IVAS_DEC_GetNumObjects: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; } - } - for ( int16_t j = 0; j < numInitialBadFrames; ++j ) - { - /* write zero metadata */ - for ( int16_t i = 0; i < *pNumObj; ++i ) + for ( i = 0; i < numObj; ++i ) { IVAS_ISM_METADATA IsmMetadata; - if ( ( error = IVAS_DEC_GetObjectMetadata( hIvasDec, &IsmMetadata, 1, i ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_GetObjectMetadata( hIvasDec, &IsmMetadata, 0, i ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_GetObjectMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); - return error; + goto cleanup; } - if ( ( error = IsmFileWriter_writeFrame( IsmMetadata, ismWriters[i] ) ) != IVAS_ERR_OK ) + if ( ( IsmFileWriter_writeFrame( IsmMetadata, ismWriters[i] ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError writing ISM metadata to file %s\n", IsmFileWriter_getFilePath( ismWriters[i] ) ); - return error; + goto cleanup; } } } - } - /* If outputting MASA, open output file and write metadata for initial bad frames */ - else if ( *pBsFormat == IVAS_DEC_BS_MASA ) - { - if ( ( error = MasaFileWriter_open( arg.outputWavFilename, arg.delayCompensationEnabled, ppMasaWriter ) ) != IVAS_ERR_OK ) + else if ( bsFormat == IVAS_DEC_BS_MASA ) { - fprintf( stderr, "\nError: Error opening MASA decoded metadata file %s\n", MasaFileWriter_getFilePath( *ppMasaWriter ) ); - return error; + MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; + if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + if ( ( error = MasaFileWriter_writeFrame( masaWriter, hMasaExtOutMeta ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing MASA metadata to file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); + goto cleanup; + } } + } - /* Duplicate good first frame metadata to fill the beginning of stream. */ - MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta = NULL; -#ifdef FIX_470_MASA_JBM_EXT - if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) -#endif + frame++; + if ( !arg.quietModeEnabled ) + { + fprintf( stdout, "%-8d\b\b\b\b\b\b\b\b", frame ); +#ifdef DEBUGGING + if ( IVAS_DEC_GetBerDetectFlag( hIvasDec ) ) { - fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); - return error; + fprintf( stdout, "\n Decoding error: BER detected in frame %d !!!!!\n", frame - 1 ); } +#endif + } + } - for ( int16_t j = 0; j < numInitialBadFrames; ++j ) + /*------------------------------------------------------------------------------------------* + * Printouts after decoding has finished + *------------------------------------------------------------------------------------------*/ + + if ( !arg.quietModeEnabled ) + { + printf( "\n\nDecoder+renderer delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[1] / (float) delayTimeScale, delayNumSamples_orig[1], delayTimeScale ); + + if ( delayNumSamples_orig[2] > 0 ) + { + printf( "HRIR/BRIR delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * delayNumSamples_orig[2] / (float) delayTimeScale, delayNumSamples_orig[2], delayTimeScale ); + printf( "Total delay: %4.2f ms (%3u samples at timescale %5u)\n", 1000.f * ( delayNumSamples_orig[1] + delayNumSamples_orig[2] ) / (float) delayTimeScale, delayNumSamples_orig[1] + delayNumSamples_orig[2], delayTimeScale ); + } + } + + /* Print output metadata file name(s) */ + if ( arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) + { + if ( bsFormat == IVAS_DEC_BS_OBJ ) + { + for ( i = 0; i < numObj; i++ ) { - if ( ( error = MasaFileWriter_writeFrame( *ppMasaWriter, hMasaExtOutMeta ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "\nError writing MASA metadata to file: %s\n", MasaFileWriter_getFilePath( *ppMasaWriter ) ); - return error; - } + fprintf( stdout, "\nOutput metadata file: %s", IsmFileWriter_getFilePath( ismWriters[i] ) ); } + fprintf( stdout, "\n" ); + } + else if ( bsFormat == IVAS_DEC_BS_MASA ) + { + fprintf( stdout, "\nOutput metadata file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); } } - return IVAS_ERR_OK; -} + /* add zeros at the end to have equal length of synthesized signals */ + 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 -/*---------------------------------------------------------------------* - * decodeG192() - * - * Read G.192 bitstream and decode in regular decoder - *---------------------------------------------------------------------*/ + /*------------------------------------------------------------------------------------------* + * Close files and deallocate resources + *------------------------------------------------------------------------------------------*/ + + decodingFailed = false; /* This will stay set to true if cleanup is reached via a goto due to an error */ + +cleanup: + +#ifdef SPLIT_REND_WITH_HEAD_ROT + split_rend_reader_writer_close( &hSplitRendFileReadWrite ); +#endif + AudioFileWriter_close( &afWriter ); + MasaFileWriter_close( &masaWriter ); +#ifdef DEBUGGING +#ifdef VARIABLE_SPEED_DECODING + TsmScaleFileReader_close( &tsmScaleFileReader ); +#endif +#endif + for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; i++ ) + { + IsmFileWriter_close( &ismWriters[i] ); + } + + if ( decodingFailed && error == IVAS_ERR_OK ) + { + return IVAS_ERR_UNKNOWN; + } + return error; +} +#else static ivas_error decodeG192( DecArguments arg, BS_READER_HANDLE hBsReader, @@ -1617,6 +2822,9 @@ static ivas_error decodeG192( RotFileReader *externalOrientationFileReader, RotFileReader *refRotReader, Vector3PairFileReader *referenceVectorReader, +#ifdef SPLIT_REND_WITH_HEAD_ROT + uint8_t *splitRendBitsBuf, +#endif IVAS_DEC_HANDLE hIvasDec, int16_t *pcmBuf ) @@ -1641,7 +2849,9 @@ static ivas_error decodeG192( uint16_t numObj = 0; IVAS_DEC_BS_FORMAT bsFormat = IVAS_DEC_BS_UNKOWN; IVAS_VECTOR3 Pos[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; - +#ifdef SPLIT_REND_WITH_HEAD_ROT + SplitFileReadWrite *splitRendWriter = NULL; +#endif IsmFileWriter *ismWriters[IVAS_MAX_NUM_OBJECTS]; for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; ++i ) { @@ -1724,6 +2934,7 @@ static ivas_error decodeG192( goto cleanup; } } + /* Reference rotation */ if ( arg.enableReferenceRotation ) { @@ -1746,17 +2957,42 @@ static ivas_error decodeG192( { IVAS_QUATERNION Quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; - for ( i = 0; i < IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( headRotReader == NULL ) { - if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + for ( i = 0; i < IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { - fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), - RotationFileReader_getFilePath( headRotReader ) ); - goto cleanup; + Quaternions[i].w = -3.0f; + Quaternions[i].x = 0.0f; + Quaternions[i].y = 0.0f; + Quaternions[i].z = 0.0f; + Pos[i].x = 0.0f; + Pos[i].y = 0.0f; + Pos[i].z = 0.0f; + } + } + else + { +#endif + for ( i = 0; i < IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + if ( ( error = HeadRotationFileReading( headRotReader, &Quaternions[i], &Pos[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError %s while reading head orientation from %s\n", IVAS_DEC_GetErrorMessage( error ), + RotationFileReader_getFilePath( headRotReader ) ); + goto cleanup; + } } +#ifdef SPLIT_REND_WITH_HEAD_ROT } +#endif - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -1790,7 +3026,12 @@ static ivas_error decodeG192( } /* Run decoder for one frame (get rendered output) */ - if ( ( error = IVAS_DEC_GetSamples( hIvasDec, pcmBuf, &nOutSamples ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_GetSamples( hIvasDec, pcmBuf, &nOutSamples +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + splitRendBitsBuf +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError: could not get samples from decoder: %s\n\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -1808,21 +3049,13 @@ static ivas_error decodeG192( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { - error = initOnFirstGoodFrame( - hIvasDec, - arg, - numInitialBadFrames, - nOutSamples, - delayNumSamples_orig, - &delayNumSamples, - &delayTimeScale, - &bsFormat, - &afWriter, - &masaWriter, - ismWriters, - &nOutChannels, - &numObj ); - if ( error != IVAS_ERR_OK ) + if ( ( error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, nOutSamples, delayNumSamples_orig, + &delayNumSamples, &delayTimeScale, &bsFormat, &afWriter, &masaWriter, ismWriters, &nOutChannels, &numObj +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + &splitRendWriter +#endif + ) ) != IVAS_ERR_OK ) { goto cleanup; } @@ -1836,25 +3069,49 @@ static ivas_error decodeG192( /* Write current frame */ if ( decodedGoodFrame ) { - if ( delayNumSamples < nOutSamples ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || arg.outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) + IVAS_SPLIT_REND_BITS_DATA splitRendBits; + + if ( ( error = IVAS_DEC_GetSplitRendBits( hIvasDec, &splitRendBits ) ) != IVAS_ERR_OK ) { - fprintf( stderr, "\nOutput audio file writer error\n" ); + fprintf( stderr, "\nError in IVAS_DEC_SplitRendBits: %s\n", IVAS_DEC_GetErrorMessage( error ) ); + goto cleanup; + } + + if ( split_rend_write_bitstream_to_file( splitRendWriter, splitRendBits.bits_buf, &splitRendBits.bits_read, &splitRendBits.bits_written, splitRendBits.codec, splitRendBits.pose_correction ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing split rendering bitstream to file!\n" ); goto cleanup; } - delayNumSamples = 0; } - else + + if ( arg.outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) { - delayNumSamples -= nOutSamples; +#endif + if ( delayNumSamples < nOutSamples ) + { + if ( ( error = AudioFileWriter_write( afWriter, &pcmBuf[delayNumSamples * nOutChannels], nOutSamples * nOutChannels - ( delayNumSamples * nOutChannels ) ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + goto cleanup; + } + delayNumSamples = 0; + } + else + { + delayNumSamples -= nOutSamples; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT } +#endif } - /* Write ISM metadata to external file(s) */ - if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + /* Write MASA/ISM metadata to external file(s) */ + if ( decodedGoodFrame && arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) { - if ( bsFormat == IVAS_DEC_BS_OBJ ) + if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM || bsFormat == IVAS_DEC_BS_SBA_ISM ) { if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK ) { @@ -1879,14 +3136,11 @@ static ivas_error decodeG192( } } } - else if ( bsFormat == IVAS_DEC_BS_MASA ) + + if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; -#ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -1923,11 +3177,18 @@ static ivas_error decodeG192( memset( pcmBuf, 0, delayNumSamples_orig[0] * nOutChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( afWriter, pcmBuf, delayNumSamples_orig[0] * nOutChannels ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( afWriter != NULL ) { - fprintf( stderr, "\nError writing output file: %s\n", ivas_error_to_string( error ) ); - goto cleanup; +#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 /*------------------------------------------------------------------------------------------* * Printouts after decoding has finished @@ -1945,7 +3206,7 @@ static ivas_error decodeG192( } /* Print output metadata file name(s) */ - if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + if ( arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { @@ -1959,6 +3220,14 @@ static ivas_error decodeG192( { fprintf( stdout, "\nOutput metadata file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); } + else if ( bsFormat == IVAS_DEC_BS_MASA_ISM ) + { + for ( i = 0; i < numObj; i++ ) + { + fprintf( stdout, "\nOutput ISM metadata file: %s", IsmFileWriter_getFilePath( ismWriters[i] ) ); + } + fprintf( stdout, "\nOutput MASA metadata file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); + } } /*------------------------------------------------------------------------------------------* @@ -1968,8 +3237,20 @@ static ivas_error decodeG192( decodingFailed = false; /* This will stay set to true if cleanup is reached via a goto due to an error */ cleanup: +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( splitRendWriter != NULL ) + { + split_rend_reader_writer_close( &splitRendWriter ); + } + + if ( afWriter != NULL ) + { +#endif + AudioFileWriter_close( &afWriter ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif - AudioFileWriter_close( &afWriter ); MasaFileWriter_close( &masaWriter ); for ( i = 0; i < IVAS_MAX_NUM_OBJECTS; i++ ) { @@ -1983,6 +3264,7 @@ cleanup: return error; } +#endif #ifdef DEBUGGING /*---------------------------------------------------------------------* @@ -1990,6 +3272,7 @@ cleanup: * * Print bitstream info of a VoIP G.192 or RTPDUMP bitstream. *---------------------------------------------------------------------*/ + static ivas_error printBitstreamInfoVoip( DecArguments arg, BS_READER_HANDLE hBsReader, @@ -2111,7 +3394,6 @@ static ivas_error decodeVoIP( uint32_t nextPacketRcvTime_ms = 0; uint32_t systemTime_ms = 0; uint32_t systemTimeInc_ms = (uint32_t) JBM_FRONTEND_FETCH_FRAMESIZE_MS; - int32_t nFramesWritten = 0; int32_t nFramesFed = 0; @@ -2253,8 +3535,14 @@ static ivas_error decodeVoIP( while ( 1 ) { +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + uint16_t nOutSamples = 0; +#else int16_t nOutSamples = 0; +#endif +#ifndef API_5MS uint16_t nSamplesAvailableNext = 0; +#endif #ifdef DEBUG_JBM_CMD_OPTION nOutSamples = (int16_t) ( arg.output_Fs / 1000 * arg.frontendFetchSizeMs ); #else @@ -2311,7 +3599,17 @@ static ivas_error decodeVoIP( /* decode and get samples */ - if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, pcmBuf, systemTime_ms, &nSamplesAvailableNext + if ( ( error = IVAS_DEC_VoIP_GetSamples( hIvasDec, nOutSamples, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_INT16, + (void *) +#endif + pcmBuf, + systemTime_ms +#ifndef API_5MS + , + &nSamplesAvailableNext +#endif #ifdef SUPPORT_JBM_TRACEFILE , writeJbmTraceFileFrameWrapper, @@ -2354,11 +3652,20 @@ static ivas_error decodeVoIP( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + + SplitFileReadWrite *hSplitRendFileReadWrite = NULL; +#endif error = initOnFirstGoodFrame( hIvasDec, arg, numInitialBadFrames, +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + &nOutSamples, + NULL, +#else nOutSamples, +#endif delayNumSamples_orig, &delayNumSamples, &delayTimeScale, @@ -2367,7 +3674,12 @@ static ivas_error decodeVoIP( &masaWriter, ismWriters, &nOutChannels, - &numObj ); + &numObj +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + &hSplitRendFileReadWrite +#endif + ); if ( error != IVAS_ERR_OK ) { goto cleanup; @@ -2402,11 +3714,11 @@ static ivas_error decodeVoIP( } /* Write ISM metadata to external file(s) */ - if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + if ( decodedGoodFrame && arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) { int16_t i; - if ( bsFormat == IVAS_DEC_BS_OBJ ) + if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM ) { if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK ) { @@ -2431,14 +3743,11 @@ static ivas_error decodeVoIP( } } } - else if ( bsFormat == IVAS_DEC_BS_MASA ) + + if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; -#ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2460,7 +3769,6 @@ static ivas_error decodeVoIP( frame++; systemTime_ms += systemTimeInc_ms; - nFramesWritten++; #ifdef WMOPS update_mem(); @@ -2508,6 +3816,11 @@ cleanup: #ifdef SUPPORT_JBM_TRACEFILE JbmTraceFileWriter_close( &jbmTraceWriter ); #endif + MasaFileWriter_close( &masaWriter ); + for ( int16_t i = 0; i < IVAS_MAX_NUM_OBJECTS; i++ ) + { + IsmFileWriter_close( &ismWriters[i] ); + } if ( decodingFailed && error == IVAS_ERR_OK ) { @@ -2519,6 +3832,7 @@ cleanup: #ifdef DEBUGGING +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING /*---------------------------------------------------------------------* * decodeVariableSpeed() @@ -2662,7 +3976,12 @@ static ivas_error decodeVariableSpeed( } } - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2720,7 +4039,11 @@ static ivas_error decodeVariableSpeed( fprintf( stderr, "\nError: input bitstream file couldn't be read: %s \n\n", arg.inputBitstreamFilename ); goto cleanup; } +#ifdef API_5MS + IVAS_DEC_VoIP_SetScale( hIvasDec, scale, scale ); +#else IVAS_DEC_VoIP_SetScale( hIvasDec, scale ); +#endif } if ( ( error = BS_Reader_ReadFrame_short( hBsReader, bit_stream, &num_bits, &bfi ) ) != IVAS_ERR_OK ) @@ -2776,6 +4099,9 @@ static ivas_error decodeVariableSpeed( /* Once good frame decoded, catch up */ if ( decodedGoodFrame ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + SplitFileReadWrite *hSplitRendFileReadWrite = NULL; +#endif error = initOnFirstGoodFrame( hIvasDec, arg, @@ -2789,7 +4115,12 @@ static ivas_error decodeVariableSpeed( &masaWriter, ismWriters, &nOutChannels, - &numObj ); + &numObj +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + &hSplitRendFileReadWrite +#endif + ); if ( error != IVAS_ERR_OK ) { goto cleanup; @@ -2820,9 +4151,9 @@ static ivas_error decodeVariableSpeed( } /* Write ISm metadata to external file(s) */ - if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + if ( decodedGoodFrame && arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) { - if ( bsFormat == IVAS_DEC_BS_OBJ ) + if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM ) { if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK ) { @@ -2847,14 +4178,11 @@ static ivas_error decodeVariableSpeed( } } } - else if ( bsFormat == IVAS_DEC_BS_MASA ) + + if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; -#ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 1 ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2946,7 +4274,12 @@ static ivas_error decodeVariableSpeed( } } - if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_FeedHeadTrackData( hIvasDec, Quaternions, Pos +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nIVAS_DEC_FeedHeadTrackData failed: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2980,7 +4313,7 @@ static ivas_error decodeVariableSpeed( } /* decode and get samples */ - if ( ( error = IVAS_DEC_VoIP_Flush( hIvasDec, nOutSamples, pcmBuf, &nSamplesAvailableNext, &nSamplesFlushed ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_DEC_Flush( hIvasDec, nOutSamples, pcmBuf, &nSamplesAvailableNext, &nSamplesFlushed ) ) != IVAS_ERR_OK ) { fprintf( stderr, "\nError in IVAS_DEC_VoIP_Flush: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -2994,9 +4327,9 @@ static ivas_error decodeVariableSpeed( } /* Write ISm metadata to external file(s) */ - if ( decodedGoodFrame && arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + if ( decodedGoodFrame && arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) { - if ( bsFormat == IVAS_DEC_BS_OBJ ) + if ( bsFormat == IVAS_DEC_BS_OBJ || bsFormat == IVAS_DEC_BS_MASA_ISM ) { if ( ( error = IVAS_DEC_GetNumObjects( hIvasDec, &numObj ) ) != IVAS_ERR_OK ) { @@ -3021,14 +4354,11 @@ static ivas_error decodeVariableSpeed( } } } - else if ( bsFormat == IVAS_DEC_BS_MASA ) + + if ( bsFormat == IVAS_DEC_BS_MASA || bsFormat == IVAS_DEC_BS_MASA_ISM ) { MASA_DECODER_EXT_OUT_META_HANDLE hMasaExtOutMeta; -#ifdef FIX_470_MASA_JBM_EXT if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta, 0 ) ) != IVAS_ERR_OK ) -#else - if ( ( error = IVAS_DEC_GetMasaMetadata( hIvasDec, &hMasaExtOutMeta ) ) != IVAS_ERR_OK ) -#endif { fprintf( stderr, "\nError in IVAS_DEC_GetMasaMetadata: %s\n", IVAS_DEC_GetErrorMessage( error ) ); goto cleanup; @@ -3071,7 +4401,7 @@ static ivas_error decodeVariableSpeed( } /* Print output metadata file name(s) */ - if ( arg.outputFormat == IVAS_DEC_OUTPUT_EXT ) + if ( arg.outputConfig == AUDIO_CONFIG_EXTERNAL ) { if ( bsFormat == IVAS_DEC_BS_OBJ ) { @@ -3085,6 +4415,14 @@ static ivas_error decodeVariableSpeed( { fprintf( stdout, "\nOutput metadata file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); } + else if ( bsFormat == IVAS_DEC_BS_MASA_ISM ) + { + for ( i = 0; i < numObj; i++ ) + { + fprintf( stdout, "\nOutput ISM metadata file: %s", IsmFileWriter_getFilePath( ismWriters[i] ) ); + } + fprintf( stdout, "\nOutput MASA metadata file: %s\n", MasaFileWriter_getFilePath( masaWriter ) ); + } } /* add zeros at the end to have equal length of synthesized signals */ @@ -3119,7 +4457,7 @@ cleanup: return error; } #endif - +#endif /*---------------------------------------------------------------------* * parseForcedRendModeDec() diff --git a/apps/encoder.c b/apps/encoder.c index 75798f240d0545b66151f788de31cf1a9442c88a..2b4016bcb8789bb3523532a9e373721edbb7b036 100644 --- a/apps/encoder.c +++ b/apps/encoder.c @@ -30,25 +30,24 @@ *******************************************************************************************************/ -#include -#include -#include #include "lib_enc.h" +#include #include "cmdl_tools.h" #include "audio_file_reader.h" #include "bitstream_writer.h" +#include "ism_file_reader.h" #include "jbm_file_reader.h" #include "masa_file_reader.h" -#include "ism_file_reader.h" #ifdef DEBUGGING #include "debug.h" #endif #include "wmc_auto.h" + #define WMC_TOOL_SKIP /*------------------------------------------------------------------------------------------* - * Local constants, enums, structures + * Local constants, enums *------------------------------------------------------------------------------------------*/ #if !defined( DEBUGGING ) && !defined( WMOPS ) @@ -89,9 +88,28 @@ typedef union _EncInputFormatConfig /* MC details */ IVAS_ENC_MC_LAYOUT mcLayout; + struct EncMasaIsmConfig + { + int16_t numObjects; + const char *metadataFiles[IVAS_MAX_NUM_OBJECTS]; + IVAS_ENC_MASA_VARIANT masaVariant; + } masa_ism; + + struct EncSbaIsmConfig + { + int16_t numObjects; + const char *metadataFiles[IVAS_MAX_NUM_OBJECTS]; + IVAS_ENC_SBA_ORDER order; + bool isPlanar; + } sba_ism; + } EncInputFormatConfig; -/* Struct for storing cmdln arguments */ + +/*------------------------------------------------------------------------------------------* + * Local structure for storing cmdln arguments + *------------------------------------------------------------------------------------------*/ + typedef struct { char *inputWavFilename; @@ -233,7 +251,7 @@ int main( * Print out file names *------------------------------------------------------------------------------------------*/ - if ( arg.inputFormat == IVAS_ENC_INPUT_ISM ) + if ( arg.inputFormat == IVAS_ENC_INPUT_ISM || arg.inputFormat == IVAS_ENC_INPUT_SBA_ISM ) { for ( i = 0; i < arg.inputFormatConfig.ism.numObjects; i++ ) { @@ -427,6 +445,23 @@ int main( goto cleanup; } break; + + case IVAS_ENC_INPUT_SBA_ISM: + if ( ( error = IVAS_ENC_ConfigureForSBAObjects( hIvasEnc, arg.inputFs, totalBitrate, bandwidth, arg.dtxConfig, arg.inputFormatConfig.sba_ism.numObjects, arg.inputFormatConfig.sba_ism.order, arg.inputFormatConfig.sba_ism.isPlanar, arg.pca ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_ENC_ConfigureForSBAObjects failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); + exit( -1 ); + } + break; + + case IVAS_ENC_INPUT_MASA_ISM: + if ( ( error = IVAS_ENC_ConfigureForMASAObjects( hIvasEnc, arg.inputFs, totalBitrate, bandwidth, arg.dtxConfig, arg.inputFormatConfig.masa_ism.numObjects, arg.inputFormatConfig.masa_ism.masaVariant ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nIVAS_ENC_ConfigureForMASAObjects failed: %s\n\n", IVAS_ENC_GetErrorMessage( error ) ); + exit( -1 ); + } + break; + default: fprintf( stderr, "\nInvalid input type\n\n" ); goto cleanup; @@ -511,7 +546,9 @@ int main( } } - const int16_t numIsmInputs = arg.inputFormat == IVAS_ENC_INPUT_ISM ? arg.inputFormatConfig.ism.numObjects : 0; + const int16_t numIsmInputs = ( arg.inputFormat == IVAS_ENC_INPUT_ISM || arg.inputFormat == IVAS_ENC_INPUT_MASA_ISM || arg.inputFormat == IVAS_ENC_INPUT_SBA_ISM ) + ? arg.inputFormatConfig.ism.numObjects + : 0; for ( i = 0; i < numIsmInputs; ++i ) { @@ -1490,6 +1527,188 @@ static bool parseCmdlIVAS_enc( return false; } } + else if ( strcmp( to_upper( argv[i] ), "-ISM_MASA" ) == 0 ) + { + arg->inputFormat = IVAS_ENC_INPUT_MASA_ISM; + i++; + + if ( i < argc - 5 ) + { + if ( sscanf( argv[i], "%d", &tmp ) > 0 ) + { + i++; + } + + if ( tmp <= 0 ) + { + fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); + usage_enc(); + } + else + { + if ( tmp <= IVAS_MAX_NUM_OBJECTS ) /* number of ISM channels */ + { + arg->inputFormatConfig.masa_ism.numObjects = (int16_t) tmp; + } + else + { + fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); + usage_enc(); + } + } + } + else + { + fprintf( stderr, "Error: Number of ISM channels not specified!\n\n" ); + usage_enc(); + } + if ( i < argc - 4 ) + { + if ( sscanf( argv[i], "%d", &tmp ) > 0 ) + { + i++; + } + + switch ( tmp ) + { + case 1: + arg->inputFormatConfig.masa_ism.masaVariant = IVAS_ENC_MASA_1CH; + break; + case 2: + arg->inputFormatConfig.masa_ism.masaVariant = IVAS_ENC_MASA_2CH; + break; + default: + fprintf( stderr, "Error: MASA channels must be 1 or 2.\n\n" ); + usage_enc(); + break; + } + } + + /* read input metadata files */ + for ( j = 0; j < arg->inputFormatConfig.masa_ism.numObjects; j++ ) + { + if ( i < argc - 4 ) + { + if ( strcmp( argv[i], "NULL" ) == 0 || strcmp( argv[i], "null" ) == 0 ) + { + /* no metadata input file -> encode only audio streams */ + arg->inputFormatConfig.masa_ism.metadataFiles[j] = NULL; + } + else + { + arg->inputFormatConfig.masa_ism.metadataFiles[j] = argv[i]; + } + + i++; + } + else + { + fprintf( stderr, "Error: not enough arguments\n\n" ); + usage_enc(); + } + } + + if ( i < argc - 4 ) + { + arg->masaMetadataFile = argv[i]; + i++; + } + else + { + fprintf( stderr, "Error: not enough MASA arguments\n\n" ); + usage_enc(); + } + } + + else if ( strcmp( to_upper( argv[i] ), "-ISM_SBA" ) == 0 ) + { + arg->inputFormat = IVAS_ENC_INPUT_SBA_ISM; + i++; + + if ( i < argc - 5 ) + { + if ( sscanf( argv[i], "%d", &tmp ) > 0 ) + { + i++; + } + + if ( tmp <= 0 ) + { + fprintf( stderr, "Error: Too low number of ISM channels specified!\n\n" ); + usage_enc(); + } + else + { + if ( tmp <= IVAS_MAX_NUM_OBJECTS ) /* number of ISM channels */ + { + arg->inputFormatConfig.sba_ism.numObjects = (int16_t) tmp; + } + else + { + fprintf( stderr, "Error: Too high number of ISM channels!\n\n" ); + usage_enc(); + } + } + } + else + { + fprintf( stderr, "Error: Number of ISM channels not specified!\n\n" ); + usage_enc(); + } + + if ( i < argc - 4 ) + { + if ( sscanf( argv[i], "%d", &tmp ) > 0 ) + { + i++; + } + + arg->inputFormatConfig.sba_ism.isPlanar = ( tmp < 0 ); + + tmp = abs( tmp ); + switch ( tmp ) + { + case 1: + arg->inputFormatConfig.sba_ism.order = IVAS_ENC_SBA_FOA; + break; + case 2: + arg->inputFormatConfig.sba_ism.order = IVAS_ENC_SBA_HOA2; + break; + case 3: + arg->inputFormatConfig.sba_ism.order = IVAS_ENC_SBA_HOA3; + break; + default: + fprintf( stderr, "Error: Wrong SBA order specified!\n\n" ); + usage_enc(); + return false; + } + } + + /* read input metadata files */ + for ( j = 0; j < arg->inputFormatConfig.sba_ism.numObjects; j++ ) + { + if ( i < argc - 4 ) + { + if ( strcmp( argv[i], "NULL" ) == 0 || strcmp( argv[i], "null" ) == 0 ) + { + /* no metadata input file -> encode only audio streams */ + arg->inputFormatConfig.sba_ism.metadataFiles[j] = NULL; + } + else + { + arg->inputFormatConfig.sba_ism.metadataFiles[j] = argv[i]; + } + + i++; + } + else + { + fprintf( stderr, "Error: not enough arguments\n\n" ); + usage_enc(); + } + } + } + else if ( strcmp( argv_to_upper, "-STEREO_DMX_EVS" ) == 0 ) { arg->inputFormat = IVAS_ENC_INPUT_MONO; @@ -1669,8 +1888,8 @@ static void usage_enc( void ) fprintf( stdout, " for 2 ISM, 3 ISM and 4 ISM also 160000, 192000, 256000) \n" ); fprintf( stdout, " for 3 ISM and 4 ISM also 384000 \n" ); fprintf( stdout, " for 4 ISM also 512000 \n" ); - fprintf( stdout, " for IVAS SBA, MASA, MC R=(13200, 16400, 24400, 32000, 48000, 64000, 80000, \n" ); - fprintf( stdout, " 96000, 128000, 160000, 192000, 256000, 384000, 512000) \n" ); + fprintf( stdout, " for IVAS SBA, MASA, MC, ISM-SBA, and ISM-MASA R=(13200, 16400, 24400, 32000, 48000, 64000,\n" ); + fprintf( stdout, " 80000, 96000, 128000, 160000, 192000, 256000, 384000, 512000) \n" ); fprintf( stdout, " Alternatively, R can be a bitrate switching file which consists of R values\n" ); fprintf( stdout, " indicating the bitrate for each frame in bps. These values are stored in\n" ); fprintf( stdout, " binary format using 4 bytes per value\n" ); @@ -1681,7 +1900,7 @@ static void usage_enc( void ) fprintf( stdout, "Options:\n" ); fprintf( stdout, "--------\n" ); - fprintf( stdout, "EVS mono is default, for IVAS choose one of the following: -stereo, -ism, -sba, -masa, -mc\n" ); + fprintf( stdout, "EVS mono is default, for IVAS choose one of the following: -stereo, -ism, -sba, -masa, -mc, -ism_sba, -ism_masa\n" ); fprintf( stdout, "-stereo : Stereo format \n" ); fprintf( stdout, "-ism (+)Ch Files : ISM format \n" ); fprintf( stdout, " where Ch specifies the number of ISMs (1-4)\n" ); @@ -1692,8 +1911,17 @@ static void usage_enc( void ) fprintf( stdout, " where Order specifies the Ambisionics order (1-3),\n" ); fprintf( stdout, " where positive (+) means full 3D and negative (-) only 2D/planar components to be coded\n" ); fprintf( stdout, "-masa Ch File : MASA format \n" ); - fprintf( stdout, " where Ch specifies the number of input/transport channels (1 or 2): \n" ); + fprintf( stdout, " where Ch specifies the number of MASA input/transport channels (1 or 2): \n" ); fprintf( stdout, " and File specifies input file containing parametric MASA metadata \n" ); + fprintf( stdout, "-ism_sba IsmCh +/-Order IsmFiles : SBA and ISM combined format\n" ); + fprintf( stdout, " where IsmCh specifies the number of ISMs (1-4)\n" ); + fprintf( stdout, " and Order specifies the SBA order (1 to 3) \n" ); + fprintf( stdout, " and IsmFiles specify input files containing ISM metadata, one file per object \n" ); + fprintf( stdout, "-ism_masa IsmCh MasaCh IsmFiles MasaFile : MASA and ISM combined format \n" ); + fprintf( stdout, " where IsmCh specifies the number of ISMs (1-4),\n" ); + fprintf( stdout, " MasaCh specifies the number of MASA input/transport channels (1-2), \n" ); + fprintf( stdout, " IsmFiles specify input files containing ISM metadata, one file per object, \n" ); + fprintf( stdout, " and MasaFile specifies input file containing parametric MASA metadata \n" ); fprintf( stdout, "-mc InputConf : Multi-channel format\n" ); fprintf( stdout, " where InputConf specifies the channel configuration: 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4\n" ); fprintf( stdout, " Loudspeaker positions are assumed to have azimuth and elevation as per \n" ); diff --git a/apps/renderer.c b/apps/renderer.c index 760065be91e705a12c149d81775f2e8da7178ff0..858a9d4150716a9b9f7fed82136af7270b3fe57b 100644 --- a/apps/renderer.c +++ b/apps/renderer.c @@ -32,27 +32,32 @@ #include "lib_rend.h" #include -#include #include -#include -#include #include #include "audio_file_reader.h" #include "audio_file_writer.h" #include "cmdl_tools.h" #include "cmdln_parser.h" -#include "rotation_file_reader.h" -#include "vector3_pair_file_reader.h" #include "hrtf_file_reader.h" #include "ism_file_reader.h" #include "ls_custom_file_reader.h" #include "masa_file_reader.h" #include "masa_file_writer.h" -#include "prot.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" +#ifdef DEBUGGING +#include "debug.h" +#endif #include "wmc_auto.h" +#define WMC_TOOL_SKIP + /*------------------------------------------------------------------------------------------* * Local constants *------------------------------------------------------------------------------------------*/ @@ -61,6 +66,13 @@ #define RENDERER_MAX_METADATA_LENGTH 8192 #define RENDERER_MAX_METADATA_LINE_LENGTH 1024 +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define SPLIT_REND_BITS_BUFF_SIZE ( ( ( ( (int32_t) SPLIT_REND_MAX_BRATE / IVAS_NUM_FRAMES_PER_SEC ) + 7 ) >> 3 ) + SPLIT_REND_ADDITIONAL_BYTES_TO_READ ) +#endif + +#define IVAS_MAX16B_FLT 32767.0f +#define IVAS_MIN16B_FLT ( -32768.0f ) + #if !defined( DEBUGGING ) && !defined( WMOPS ) static #endif @@ -72,6 +84,11 @@ static #define SEP_FOLDER '/' #endif +#ifndef _WIN32 +#define max( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) ) +#define min( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) ) +#endif + /*------------------------------------------------------------------------------------------* * Local structures @@ -98,7 +115,7 @@ typedef struct } LfeRoutingConfig; typedef struct { - IVAS_REND_AudioConfig audioConfig; + AUDIO_CONFIG audioConfig; int32_t inputChannelIndex; float gain_dB; } RendererInput; @@ -120,11 +137,15 @@ typedef struct IVAS_CUSTOM_LS_DATA inSetupCustom; RendererInput masaBuses[RENDERER_MAX_MASA_INPUTS]; uint16_t numMasaBuses; +#ifdef SPLIT_REND_WITH_HEAD_ROT + RendererInput binBuses[RENDERER_MAX_BIN_INPUTS]; + uint16_t numBinBuses; +#endif } InputConfig; typedef struct { - IVAS_REND_AudioConfig audioConfig; + AUDIO_CONFIG audioConfig; IVAS_CUSTOM_LS_DATA outSetupCustom; } OutputConfig; @@ -138,7 +159,13 @@ 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]; @@ -147,6 +174,7 @@ typedef struct int8_t orientation_tracking; int16_t nonDiegeticPan; float nonDiegeticPanGain; + IVAS_REND_COMPLEXITY_LEVEL complexityLevel; bool delayCompensationEnabled; bool quietModeEnabled; bool sceneDescriptionInput; @@ -157,6 +185,10 @@ typedef struct float lfeConfigElevation; bool lfeCustomRoutingEnabled; char inLfePanningMatrixFile[RENDERER_MAX_CLI_ARG_LENGTH]; + float syncMdDelay; + bool framing_5ms; + uint16_t directivityPatternId[RENDERER_MAX_ISM_INPUTS]; + uint16_t acousticEnvironmentId; } CmdlnArgs; typedef enum @@ -174,13 +206,22 @@ typedef enum CmdLnOptionId_orientationTracking, CmdlnOptionId_lfePosition, CmdlnOptionId_lfeMatrix, + CmdLnOptionId_complexityLevel, CmdLnOptionId_noDelayCmp, CmdLnOptionId_quietModeEnabled, CmdLnOptionId_inputMetadata, CmdLnOptionId_listFormats, CmdLnOptionId_inputGain, +#ifdef SPLIT_REND_WITH_HEAD_ROT + CmdLnOptionId_outputMetadata, + CmdLnOptionId_SplitRendBFIFile, +#endif CmdLnOptionId_referenceVectorFile, CmdLnOptionId_exteriorOrientationFile, + CmdLnOptionId_framing5ms, + CmdLnOptionId_syncMdDelay, + CmdLnOptionId_directivityPatternId, + CmdLnOptionId_acousticEnvironmentId } CmdLnOptionId; static const CmdLnParser_Option cliOptions[] = { @@ -200,7 +241,11 @@ 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, @@ -226,6 +271,20 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "tf", .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", + .matchShort = "om", + .description = "coded metadata file for BINAURAL_SPLIT_PCM output mode", + }, + { + .id = CmdLnOptionId_SplitRendBFIFile, + .match = "post_rend_bfi_file", + .matchShort = "prbfi", + .description = "Split rendering option: bfi file", + }, +#endif { .id = CmdLnOptionId_refRotFile, .match = "reference_rotation_file", @@ -272,6 +331,12 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "ndc", .description = "[flag] Turn off delay compensation", }, + { + .id = CmdLnOptionId_complexityLevel, + .match = "complexity_level", + .matchShort = "level", + .description = "Complexity level, level = (1, 2, 3), will be defined after characterisation.", + }, { .id = CmdLnOptionId_quietModeEnabled, .match = "quiet", @@ -302,6 +367,30 @@ static const CmdLnParser_Option cliOptions[] = { .matchShort = "exof", .description = "External orientation trajectory file for simulation of external orientations", }, + { + .id = CmdLnOptionId_framing5ms, + .match = "framing_5ms", + .matchShort = "fr5", + .description = "Render audio with 5 ms framing.", + }, + { + .id = CmdLnOptionId_syncMdDelay, + .match = "sync_md_delay", + .matchShort = "smd", + .description = "Metadata Synchronization Delay in ms, Default is 0. Quantized by 5ms subframes for TDRenderer (13ms -> 10ms -> 2subframes)", + }, + { + .id = CmdLnOptionId_directivityPatternId, + .match = "ism_directivity_pattern_id", + .matchShort = "dpid", + .description = "Directivity pattern ID(s) (space-separated list of up to 4 numbers can be specified) for binaural output configuration", + }, + { + .id = CmdLnOptionId_acousticEnvironmentId, + .match = "acoustic_environment_id", + .matchShort = "aeid", + .description = "Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output configuration", + }, }; @@ -311,7 +400,7 @@ static const CmdLnParser_Option cliOptions[] = { static const int32_t numCliOptions = sizeof( cliOptions ) / sizeof( CmdLnParser_Option ); -static IVAS_REND_AudioConfig ambisonicsOrderToEnum( const int16_t order ); +static AUDIO_CONFIG ambisonicsOrderToEnum( const int16_t order ); static void parseSceneDescriptionFile( char *path, char *audioFilePath, InputConfig *inConfig, IsmPositionProvider *positionProvider, MasaFileReader **masaReaders, LfeRoutingConfig **lfeRoutingConfigs ); @@ -326,6 +415,7 @@ static void IsmPositionProvider_getNextFrame( IsmPositionProvider *positionProvi static void IsmPositionProvider_close( IsmPositionProvider *positionProvider ); static LfeRoutingConfig *LfeRoutingConfig_open( void ); + static void LfeRoutingConfig_close( LfeRoutingConfig *lfeRoutingCfg ); static void readFromShorthandMetadata( IsmPositionProvider *positionProvider, ObjectPositionBuffer *objectMetadataBuffer, const uint32_t objIdx ); @@ -338,8 +428,6 @@ static char *readNextMetadataChunk( char *line, const char *delimiter ); static void parseUint8( const char *line, uint8_t *ret ); -static void parseUint16( const char *line, uint16_t *ret ); - static int8_t parseUint32( const char *line, uint32_t *ret ); static int8_t parseInt32( const char *line, int32_t *ret ); @@ -352,12 +440,23 @@ static ivas_error parseLfePanMtxFile( const char *lfeRoutingMatrixFilePath, IVAS static void printSupportedAudioConfigs( void ); -static IVAS_REND_AudioConfig parseAudioConfig( const char *configString ); - -static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer ); +static AUDIO_CONFIG parseAudioConfig( const char *configString ); -static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer ); +static void convertInputBuffer( const int16_t *intBuffer, const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, float *floatBuffer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t cldfb_in, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna +#endif +); +static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, int16_t *intBuffer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t cldfb_in, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn +#endif +); /*------------------------------------------------------------------------------------------* * Local functions @@ -383,7 +482,12 @@ static int16_t getTotalNumInChannels( IVAS_REND_InputId mcIds[RENDERER_MAX_MC_INPUTS], IVAS_REND_InputId ismIds[RENDERER_MAX_ISM_INPUTS], IVAS_REND_InputId sbaIds[RENDERER_MAX_SBA_INPUTS], - IVAS_REND_InputId masaIds[RENDERER_MAX_MASA_INPUTS] ) + IVAS_REND_InputId masaIds[RENDERER_MAX_MASA_INPUTS] +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + IVAS_REND_InputId splitBinIds[RENDERER_MAX_BIN_INPUTS] +#endif +) { int16_t totalNumInChannels = 0; int16_t i, numInputChannels; @@ -455,6 +559,24 @@ static int16_t getTotalNumInChannels( totalNumInChannels += numInputChannels; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + if ( splitBinIds[i] == 0 ) + { + /* Skip inactive inputs */ + continue; + } + + if ( ( error = IVAS_REND_GetInputNumChannels( hIvasRend, splitBinIds[i], &numInputChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + totalNumInChannels += numInputChannels; + } +#endif + return totalNumInChannels; } @@ -463,7 +585,12 @@ static void setupWithSingleFormatInput( CmdlnArgs args, char *audioFilePath, IsmPositionProvider *positionProvider, - MasaFileReader **masaReaders ) + MasaFileReader **masaReaders +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + SplitFileReadWrite **hhSplitRendFileReadWrite +#endif +) { /* With single-format input, inputFilePath is the path to input audio file. */ strncpy( audioFilePath, args.inputFilePath, FILENAME_MAX - 1 ); @@ -510,6 +637,24 @@ static void setupWithSingleFormatInput( } } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + else if ( args.inConfig.numBinBuses != 0 ) + { + *hhSplitRendFileReadWrite = NULL; + if ( args.inConfig.binBuses[0].audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + ivas_error error; + error = split_rend_reader_open( hhSplitRendFileReadWrite, args.inMetadataFilePaths[0] ); + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "Could not open split rend metadata file %s\n", args.inMetadataFilePaths[0] ); + exit( -1 ); + } + } + } +#endif + + return; } @@ -520,6 +665,59 @@ static float dBToLin( } +#ifdef SPLIT_REND_WITH_HEAD_ROT +static int16_t get_cldfb_in_flag( + const AUDIO_CONFIG audioConfig, + IVAS_RENDER_CONFIG_DATA *renderConfig ) +{ + int16_t cldfb_in; + + cldfb_in = 0; + if ( renderConfig->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { +#ifdef DEBUGGING + cldfb_in = 1; +#endif + if ( audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + cldfb_in = 1; + } + } + + return cldfb_in; +} + + +static int16_t is_split_post_rend_mode( + CmdlnArgs *args ) +{ + int16_t flag; + + flag = 0; + if ( args->inConfig.numBinBuses > 0 && ( args->inConfig.binBuses[0].audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || args->inConfig.binBuses[0].audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + flag = 1; + } + + return flag; +} + +static int16_t is_split_pre_rend_mode( + CmdlnArgs *args ) +{ + int16_t flag; + + flag = 0; + if ( args->outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || args->outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + flag = 1; + } + + return flag; +} +#endif + + /*------------------------------------------------------------------------------------------* * main() * @@ -534,6 +732,12 @@ 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, CLDFBframeSize_smpls; + SplitRendBFIFileReader *splitRendBFIReader = NULL; +#endif Vector3PairFileReader *referenceVectorReader = NULL; hrtfFileReader *hrtfFileReader = NULL; IsmPositionProvider *positionProvider; @@ -547,20 +751,38 @@ 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; float *outFloatBuffer; +#ifdef SPLIT_REND_WITH_HEAD_ROT + uint8_t *bitsBufferData; +#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; int16_t zeroPad = 0; + int16_t zeroPadToWrite = 0; int32_t delayTimeScale = 0; int16_t i, numChannels; ivas_error error = IVAS_ERR_OK; +#ifndef API_5MS IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; +#endif +#ifdef API_5MS + bool splitBinNeedsNewFrame = true; +#endif #ifdef WMOPS reset_wmops(); @@ -573,6 +795,9 @@ int main( hMasaMetadata[i] = NULL; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + hSplitRendFileReadWrite = NULL; +#endif for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { lfeRoutingConfigs[i] = NULL; @@ -580,14 +805,14 @@ int main( CmdlnArgs args = parseCmdlnArgs( argc, argv ); - if ( args.nonDiegeticPan && !( ( args.inConfig.numAudioObjects == 0 && args.inConfig.multiChannelBuses[0].audioConfig == IVAS_REND_AUDIO_CONFIG_MONO ) || - ( args.inConfig.numAudioObjects > 0 && args.inConfig.audioObjects[0].audioConfig == IVAS_REND_AUDIO_CONFIG_OBJECT && args.inConfig.numAudioObjects == 1 ) ) ) + if ( args.nonDiegeticPan && !( ( args.inConfig.numAudioObjects == 0 && args.inConfig.multiChannelBuses[0].audioConfig == AUDIO_CONFIG_MONO ) || + ( args.inConfig.numAudioObjects > 0 && args.inConfig.audioObjects[0].audioConfig == AUDIO_CONFIG_OBA && args.inConfig.numAudioObjects == 1 ) ) ) { fprintf( stderr, "\ninvalid configuration - non-diegetic panning requires mono or ISM1 input\n" ); exit( -1 ); } - if ( args.nonDiegeticPan && args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_STEREO ) + if ( args.nonDiegeticPan && args.outConfig.audioConfig != AUDIO_CONFIG_STEREO ) { fprintf( stderr, "\ninvalid configuration - non-diegetic panning requires stereo output\n" ); exit( -1 ); @@ -629,6 +854,13 @@ 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 ) @@ -660,21 +892,21 @@ int main( if ( args.sceneDescriptionInput ) { /* With scene description input, inputFilePath is the path to the scene description file. Parse it. */ - parseSceneDescriptionFile( args.inputFilePath, - audioFilePath, - &args.inConfig, - positionProvider, - masaReaders, - lfeRoutingConfigs ); + parseSceneDescriptionFile( args.inputFilePath, audioFilePath, &args.inConfig, positionProvider, masaReaders, lfeRoutingConfigs ); } else { /* With single-format input, all information is given on command line. */ - setupWithSingleFormatInput( args, audioFilePath, positionProvider, masaReaders ); + setupWithSingleFormatInput( args, audioFilePath, positionProvider, masaReaders +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + &hSplitRendFileReadWrite +#endif + ); } /* Check that there is allowed configuration for MASA format output */ - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == AUDIO_CONFIG_MASA2 ) { if ( args.inConfig.numMasaBuses == 0 ) { @@ -691,14 +923,43 @@ int main( } } - if ( AudioFileReader_open( &audioReader, audioFilePath ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*if split renderer is running in post renderer mode*/ + if ( ( args.inConfig.numBinBuses > 0 ) && ( args.inConfig.binBuses[0].audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) { - fprintf( stderr, "Error opening file: %s\n", audioFilePath ); - exit( -1 ); + error = split_rend_reader_open( &hSplitRendFileReadWrite, args.inputFilePath ); + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "Could not open split rend metadata file %s\n", args.inputFilePath ); + exit( -1 ); + } + audioReader = NULL; } + else + { +#endif + if ( AudioFileReader_open( &audioReader, audioFilePath ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error opening file: %s\n", audioFilePath ); + exit( -1 ); + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif int32_t inFileSampleRate = 0; - error = AudioFileReader_getSamplingRate( audioReader, &inFileSampleRate ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( audioReader != NULL ) + { +#endif + error = AudioFileReader_getSamplingRate( audioReader, &inFileSampleRate ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + } + else + { + inFileSampleRate = args.sampleRate; + } +#endif switch ( error ) { case IVAS_ERR_OK: @@ -727,20 +988,41 @@ int main( } int16_t inFileNumChannels = 0; - error = AudioFileReader_getNumChannels( audioReader, &inFileNumChannels ); - if ( error != IVAS_ERR_OK && error != IVAS_ERR_NUM_CHANNELS_UNKNOWN ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( audioReader != NULL ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); +#endif + error = AudioFileReader_getNumChannels( audioReader, &inFileNumChannels ); + if ( error != IVAS_ERR_OK && error != IVAS_ERR_NUM_CHANNELS_UNKNOWN ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } +#ifdef SPLIT_REND_WITH_HEAD_ROT } - const int16_t frameSize_smpls = (int16_t) ( 20 * args.sampleRate / 1000 ); +#endif + const int16_t frameSize_smpls = (int16_t) ( +#ifdef API_5MS + ( args.framing_5ms ? 5 : 20 ) +#else + 20 +#endif + * args.sampleRate / 1000 ); IVAS_REND_InputId mcIds[RENDERER_MAX_MC_INPUTS] = { 0 }; IVAS_REND_InputId ismIds[RENDERER_MAX_ISM_INPUTS] = { 0 }; IVAS_REND_InputId sbaIds[RENDERER_MAX_SBA_INPUTS] = { 0 }; IVAS_REND_InputId masaIds[RENDERER_MAX_MASA_INPUTS] = { 0 }; +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_REND_InputId splitBinIds[RENDERER_MAX_BIN_INPUTS] = { 0 }; +#endif - if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_REND_Open( &hIvasRend, args.sampleRate, args.outConfig.audioConfig, args.nonDiegeticPan, args.nonDiegeticPanGain +#ifdef API_5MS + , + ( args.framing_5ms ) ? 1 : 4 +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error opening renderer handle: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -753,39 +1035,82 @@ int main( exit( -1 ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + CLDFBframeSize_smpls = 0; + cldfb_in = 0; +#endif + if ( args.renderConfigFilePath[0] != '\0' ) { IVAS_RENDER_CONFIG_DATA renderConfig; /* sanity check */ - if ( ( args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( args.outConfig.audioConfig != AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != 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 != AUDIO_CONFIG_BINAURAL ) && ( args.outConfig.audioConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( args.outConfig.audioConfig != 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 ); } - if ( RenderConfigReader_read( renderConfigReader, &renderConfig ) != IVAS_ERR_OK ) + if ( RenderConfigReader_read( renderConfigReader, args.renderConfigFilePath, &renderConfig ) != IVAS_ERR_OK ) { fprintf( stderr, "Failed to read renderer configuration from file %s\n", args.renderConfigFilePath ); exit( -1 ); } - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - renderConfig.room_acoustics.override = TRUE; + if ( ( error = RenderConfigReader_getAcousticEnvironment( renderConfigReader, args.acousticEnvironmentId, &renderConfig.room_acoustics ) ) == IVAS_ERR_OK ) + { + if ( RenderConfigReader_checkValues( &renderConfig ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Invalid room acoustics configuration parameters\n\n" ); + exit( -1 ); + } + } + else + { + fprintf( stderr, "Failed to get acoustic environment with ID: %d\n\n", args.acousticEnvironmentId ); + exit( -1 ); + } + renderConfig.room_acoustics.override = 1; } 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 + if ( !is_split_post_rend_mode( &args ) ) + { + CLDFBframeSize_smpls = frameSize_smpls * 2; + cldfb_in = get_cldfb_in_flag( args.outConfig.audioConfig, &renderConfig ); + } +#endif } if ( ( error = IVAS_REND_SetOrientationTrackingMode( hIvasRend, args.orientation_tracking ) ) != IVAS_ERR_OK ) @@ -794,7 +1119,7 @@ int main( } /* Set up output custom layout configuration */ - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( hIvasRend, args.outConfig.outSetupCustom ) ) != IVAS_ERR_OK ) { @@ -803,7 +1128,7 @@ int main( } /* Set up MASA writer for MASA output */ - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == AUDIO_CONFIG_MASA2 ) { MasaFileWriter_open( args.outputFilePath, true, &masaWriter ); /* No delay for audio in renderer, so calling metadata writer in delayCompensated mode, i.e., no delay applied to meta */ if ( masaWriter == NULL ) @@ -817,6 +1142,7 @@ int main( if ( args.inConfig.numAudioObjects > 0 ) { IVAS_REND_SetTotalNumberOfObjects( hIvasRend, args.inConfig.numAudioObjects ); + IVAS_REND_SetIsmMetadataDelay( hIvasRend, args.syncMdDelay ); } IVAS_REND_LfePanMtx lfePanMatrix; @@ -845,7 +1171,7 @@ int main( exit( -1 ); } - if ( args.inConfig.multiChannelBuses[i].audioConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( args.inConfig.multiChannelBuses[i].audioConfig == AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = IVAS_REND_ConfigureCustomInputLoudspeakerLayout( hIvasRend, mcIds[i], args.inConfig.inSetupCustom ) ) != IVAS_ERR_OK ) { @@ -912,7 +1238,7 @@ int main( for ( i = 0; i < args.inConfig.numAudioObjects; ++i ) { - if ( ( error = IVAS_REND_AddInput( hIvasRend, IVAS_REND_AUDIO_CONFIG_OBJECT, &ismIds[i] ) ) != IVAS_ERR_OK ) + if ( ( error = IVAS_REND_AddInput( hIvasRend, AUDIO_CONFIG_OBA, &ismIds[i] ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); exit( -1 ); @@ -925,7 +1251,7 @@ int main( } /* With MASA output, all objects are handled at once, so add only one input having all objects in it */ - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == AUDIO_CONFIG_MASA2 ) { break; } @@ -946,6 +1272,23 @@ int main( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < args.inConfig.numBinBuses; ++i ) + { + if ( ( error = IVAS_REND_AddInput( hIvasRend, args.inConfig.binBuses[i].audioConfig, &splitBinIds[i] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + + if ( ( error = IVAS_REND_SetInputGain( hIvasRend, splitBinIds[i], args.inputGainGlobal * dBToLin( args.inConfig.binBuses[i].gain_dB ) ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + } +#endif + for ( i = 0; i < args.inConfig.numMasaBuses; ++i ) { if ( ( error = IVAS_REND_AddInput( hIvasRend, args.inConfig.masaBuses[i].audioConfig, &masaIds[i] ) ) != IVAS_ERR_OK ) @@ -961,7 +1304,12 @@ int main( } } - const int16_t totalNumInChannels = getTotalNumInChannels( hIvasRend, mcIds, ismIds, sbaIds, masaIds ); + const int16_t totalNumInChannels = getTotalNumInChannels( hIvasRend, mcIds, ismIds, sbaIds, masaIds +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + splitBinIds +#endif + ); if ( inFileNumChannels != 0 /* inFileNumChannels is 0 with raw PCM input */ && totalNumInChannels != inFileNumChannels ) { @@ -983,15 +1331,105 @@ int main( fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } - if ( AudioFileWriter_open( &audioWriter, args.outputFilePath, args.sampleRate, numOutChannels ) != IVAS_ERR_OK ) + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( cldfb_in ) { - fprintf( stderr, "Failed to open file: %s\n", args.outputFilePath ); - exit( -1 ); + IVAS_REND_openCldfb( cldfbAna, cldfbSyn, totalNumInChannels, numOutChannels, args.sampleRate ); + } + + if ( args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + IVAS_REND_GetDelay( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ); + error = split_rend_writer_open( &hSplitRendFileReadWrite, args.outputFilePath, delayNumSamples_temp, delayTimeScale_temp ); + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "Could not open split rend metadata file %s\n", args.outputFilePath ); + exit( -1 ); + } + audioWriter = NULL; + } + else + { + if ( args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + IVAS_REND_GetDelay( hIvasRend, &delayNumSamples_temp, &delayTimeScale_temp ); + error = split_rend_writer_open( &hSplitRendFileReadWrite, args.outMetadataFilePath, delayNumSamples_temp, delayTimeScale_temp ); + if ( error != IVAS_ERR_OK ) + { + fprintf( stderr, "Could not open split rend metadata file %s\n", args.outMetadataFilePath ); + 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 == 0 ) + { + inFloatBuffer = malloc( inBufferSize * sizeof( float ) ); + inBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; + outFloatBuffer = malloc( outBufferSize * sizeof( float ) ); + outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; + } + else + { + inFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); + inBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; + outFloatBuffer = malloc( CLDFBframeSize_smpls * totalNumInChannels * sizeof( float ) ); + outBuffer.config.numSamplesPerChannel = (int16_t) CLDFBframeSize_smpls; + } + outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); + + inBuffer.config.is_cldfb = cldfb_in; + inBuffer.config.numChannels = (int16_t) totalNumInChannels; + inBuffer.data = inFloatBuffer; + + outBuffer.config.is_cldfb = cldfb_in; + outBuffer.config.numChannels = (int16_t) numOutChannels; + outBuffer.data = outFloatBuffer; + + memset( outBuffer.data, 0, outBuffer.config.numSamplesPerChannel * outBuffer.config.numChannels * sizeof( float ) ); + + if ( is_split_pre_rend_mode( &args ) || is_split_post_rend_mode( &args ) ) + { + bitsBufferSize = SPLIT_REND_BITS_BUFF_SIZE; + } + else + { + bitsBufferSize = 0; + } + + if ( bitsBufferSize > 0 ) + { + bitsBufferData = malloc( bitsBufferSize * sizeof( uint8_t ) ); + } + else + { + bitsBufferData = NULL; + } + + bitsBuffer.bits = bitsBufferData; + bitsBuffer.config.bitsRead = 0; + bitsBuffer.config.bitsWritten = 0; + bitsBuffer.config.bufLenInBytes = bitsBufferSize; + bitsBuffer.config.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + bitsBuffer.config.poseCorrection = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; +#ifdef API_5MS + bitsBuffer.config.codec_frame_size_ms = 20; +#endif +#else inFloatBuffer = malloc( inBufferSize * sizeof( float ) ); outInt16Buffer = malloc( outBufferSize * sizeof( int16_t ) ); outFloatBuffer = malloc( outBufferSize * sizeof( float ) ); @@ -1003,6 +1441,7 @@ int main( outBuffer.config.numSamplesPerChannel = (int16_t) frameSize_smpls; outBuffer.config.numChannels = (int16_t) numOutChannels; outBuffer.data = outFloatBuffer; +#endif #ifdef WMOPS reset_stack(); @@ -1019,65 +1458,162 @@ int main( fprintf( stdout, "\n\n-- Start the renderer (quiet mode) --\n\n" ); } +#ifdef API_5MS + ObjectPositionBuffer mtdBuffer; +#endif + while ( 1 ) { int16_t num_in_channels; num_in_channels = inBuffer.config.numChannels; +#ifdef API_5MS + const bool isCurrentFrameMultipleOf20ms = !args.framing_5ms || frame % 4 == 0; +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT + numSamplesRead = 0; + if ( ( hSplitRendFileReadWrite != NULL ) && is_split_post_rend_mode( &args ) +#ifdef API_5MS + && splitBinNeedsNewFrame +#endif + ) + { + ivas_error error_tmp; + numSamplesRead = (int16_t) inBufferSize; + error_tmp = split_rend_read_bits_from_file( hSplitRendFileReadWrite, bitsBuffer.bits, &bitsBuffer.config.bitsRead, &bitsBuffer.config.bitsWritten, + &bitsBuffer.config.codec, &bitsBuffer.config.poseCorrection +#ifdef API_5MS + , + &bitsBuffer.config.codec_frame_size_ms +#endif + ); + if ( error_tmp != IVAS_ERR_OK ) + { + if ( error_tmp == IVAS_ERR_END_OF_FILE ) + { + numSamplesRead = 0; + } + else + { + fprintf( stderr, "\nUnable to read from bitstream file!\n" ); + exit( -1 ); + } + } + } - /* Read the input data */ - if ( ( error = AudioFileReader_read( audioReader, inpInt16Buffer, (int16_t) inBufferSize, &numSamplesRead ) ) != IVAS_ERR_OK ) + if ( audioReader != NULL ) { - fprintf( stderr, "\nError reading from file %s\n", audioFilePath ); - exit( -1 ); +#endif + /* Read the input data */ + if ( ( error = AudioFileReader_read( audioReader, inpInt16Buffer, (int16_t) inBufferSize, &numSamplesRead ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError reading from file %s\n", audioFilePath ); + exit( -1 ); + } +#ifdef SPLIT_REND_WITH_HEAD_ROT } +#endif - if ( numSamplesRead == 0 ) + if ( numSamplesRead == 0 +#ifdef API_5MS + && splitBinNeedsNewFrame +#endif + ) { /* end of input data */ break; } /* Convert from int to float and from interleaved to packed */ - convertInputBuffer( inpInt16Buffer, numSamplesRead, frameSize_smpls, num_in_channels, inFloatBuffer ); + convertInputBuffer( inpInt16Buffer, numSamplesRead, inBuffer.config.numSamplesPerChannel, num_in_channels, inFloatBuffer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inBuffer.config.is_cldfb, cldfbAna +#endif + ); + int16_t num_subframes, sf_idx; +#ifdef API_5MS + num_subframes = ( args.framing_5ms ) ? 1 : IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; +#else + num_subframes = IVAS_MAX_PARAM_SPATIAL_SUBFRAMES; +#endif +#ifdef API_5MS + if ( isCurrentFrameMultipleOf20ms ) + { +#else ObjectPositionBuffer mtdBuffer; - IsmPositionProvider_getNextFrame( positionProvider, &mtdBuffer ); +#endif + IsmPositionProvider_getNextFrame( positionProvider, &mtdBuffer ); - if ( referenceVectorReader != NULL ) - { - IVAS_VECTOR3 listenerPos, refPos; - if ( ( error = Vector3PairFileReader_read( referenceVectorReader, &listenerPos, &refPos ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); - } - if ( ( error = IVAS_REND_SetReferenceVector( hIvasRend, listenerPos, refPos ) ) != IVAS_ERR_OK ) + if ( referenceVectorReader != NULL ) { - fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); - } - } - /* Read from reference rotation trajectory file if specified */ - if ( referenceRotReader != NULL ) - { - IVAS_QUATERNION quaternion; - if ( ( error = HeadRotationFileReading( referenceRotReader, &quaternion, NULL ) ) != IVAS_ERR_OK ) - { - fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + IVAS_VECTOR3 listenerPos, refPos; + if ( ( error = Vector3PairFileReader_read( referenceVectorReader, &listenerPos, &refPos ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + if ( ( error = IVAS_REND_SetReferenceVector( hIvasRend, listenerPos, refPos ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } } - - if ( ( error = IVAS_REND_SetReferenceRotation( hIvasRend, quaternion ) ) != IVAS_ERR_OK ) + /* Read from reference rotation trajectory file if specified */ + if ( referenceRotReader != NULL ) { - fprintf( stderr, "Error setting Reference Rotation: %s\n", ivas_error_to_string( error ) ); - exit( -1 ); + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + IVAS_QUATERNION quaternions[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + if ( ( error = HeadRotationFileReading( referenceRotReader, &quaternions[sf_idx], NULL ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + + if ( ( error = IVAS_REND_SetReferenceRotation( hIvasRend, quaternions[sf_idx] ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error setting Reference Rotation: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + } } +#ifdef API_5MS } +#endif /* Read from head rotation trajectory file if specified */ if ( headRotReader != NULL ) { +#ifdef API_5MS + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + IVAS_QUATERNION headRot; + IVAS_VECTOR3 Pos; + + if ( ( error = HeadRotationFileReading( headRotReader, &headRot, &Pos ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error in Head Rotation File Reading: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, headRot, Pos +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif +#ifdef API_5MS + , + sf_idx +#endif + ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + } +#else IVAS_QUATERNION quatBuffer[RENDERER_HEAD_POSITIONS_PER_FRAME]; for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) @@ -1088,32 +1624,69 @@ int main( exit( -1 ); } } - if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, quatBuffer, Pos ) ) != IVAS_ERR_OK ) + + if ( ( error = IVAS_REND_SetHeadRotation( hIvasRend, quatBuffer, Pos +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } +#endif } else { - error = IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL ); +#ifdef API_5MS + if ( ( error = IVAS_REND_DisableHeadRotation( hIvasRend ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error disabling head rotation: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } +#else /* API_5MS */ + error = IVAS_REND_SetHeadRotation( hIvasRend, NULL, NULL +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + DEFAULT_AXIS +#endif + ); if ( error != IVAS_ERR_OK && error != IVAS_ERR_INVALID_OUTPUT_FORMAT ) { fprintf( stderr, "Error setting Head Rotation: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } +#endif /* API_5MS */ + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* Read from split renderer bfi file if specified */ + if ( splitRendBFIReader != NULL +#ifdef API_5MS + && splitBinNeedsNewFrame +#endif + ) + { + int16_t bfi; + SplitRendBFIFileReading( splitRendBFIReader, &bfi ); + IVAS_REND_SetSplitRendBFI( hIvasRend, bfi ); } +#endif /* Read from external orientation file if specified */ if ( externalOrientationFileReader != NULL ) { - IVAS_QUATERNION quatBuffer[RENDERER_HEAD_POSITIONS_PER_FRAME]; - int8_t enableHeadRotation[RENDERER_HEAD_POSITIONS_PER_FRAME]; - int8_t enableExternalOrientation[RENDERER_HEAD_POSITIONS_PER_FRAME]; + IVAS_QUATERNION quatBuffer[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + int8_t enableHeadRotation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; + int8_t enableExternalOrientation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; int8_t enableRotationInterpolation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; int16_t numFramesToTargetOrientation[IVAS_MAX_PARAM_SPATIAL_SUBFRAMES]; - +#ifdef API_5MS + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) +#else for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif { if ( ( error = ExternalOrientationFileReading( externalOrientationFileReader, &quatBuffer[i], &enableHeadRotation[i], &enableExternalOrientation[i], &enableRotationInterpolation[i], &numFramesToTargetOrientation[i] ) ) != IVAS_ERR_OK ) { @@ -1121,12 +1694,27 @@ int main( exit( -1 ); } } - +#ifdef API_5MS + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + if ( ( error = IVAS_REND_SetExternalOrientation( hIvasRend, &quatBuffer[sf_idx], enableHeadRotation[sf_idx], enableExternalOrientation[sf_idx], enableRotationInterpolation[sf_idx], numFramesToTargetOrientation[sf_idx] +#ifdef API_5MS + , + sf_idx +#endif + ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error setting External Orientation: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + } +#else if ( ( error = IVAS_REND_SetExternalOrientation( hIvasRend, quatBuffer, enableHeadRotation, enableExternalOrientation, enableRotationInterpolation, numFramesToTargetOrientation ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error setting External Orientation: %s\n", ivas_error_to_string( error ) ); exit( -1 ); } +#endif } /* Combine external orientations and head rotation */ @@ -1155,7 +1743,7 @@ int main( for ( i = 0; i < args.inConfig.numAudioObjects; ++i ) { - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == AUDIO_CONFIG_MASA2 ) { if ( i == 0 ) { @@ -1236,28 +1824,113 @@ int main( } } - if ( IVAS_REND_GetSamples( hIvasRend, outBuffer ) != IVAS_ERR_OK ) + +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < args.inConfig.numBinBuses; ++i ) + { +#ifdef API_5MS + if ( splitBinNeedsNewFrame ) + { +#endif + if ( ( error = IVAS_REND_GetInputNumChannels( hIvasRend, splitBinIds[i], &numChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + IVAS_REND_ReadOnlyAudioBuffer tmpBuffer = getReadOnlySubBuffer( inBuffer, (int16_t) args.inConfig.binBuses[i].inputChannelIndex, numChannels ); + + if ( ( error = IVAS_REND_FeedInputAudio( hIvasRend, splitBinIds[i], tmpBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + + if ( ( error = IVAS_REND_FeedSplitBinauralBitstream( hIvasRend, splitBinIds[i], &bitsBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } +#ifdef API_5MS + } +#endif + } +#endif + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + if ( args.inConfig.numBinBuses != 0 ) + { + if ( ( error = IVAS_REND_GetSplitBinauralSamples( hIvasRend, outBuffer, &splitBinNeedsNewFrame ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + } + else if ( args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || + args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( ( error = IVAS_REND_GetSplitBinauralBitstream( hIvasRend, outBuffer, &bitsBuffer ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error: %s\n", ivas_error_to_string( error ) ); + exit( -1 ); + } + } + else { +#endif + if ( ( error = IVAS_REND_GetSamples( hIvasRend, outBuffer +#ifndef API_5MS +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + &bitsBuffer +#endif +#endif + ) ) != 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" ); - exit( -1 ); +#endif + exit( -1 ); + } +#if defined API_5MS && defined 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 */ - convertOutputBuffer( outFloatBuffer, frameSize_smpls, num_out_channels, outInt16Buffer ); + convertOutputBuffer( outFloatBuffer, outBuffer.config.numSamplesPerChannel, num_out_channels, outInt16Buffer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + cldfb_in, + cldfbSyn +#endif + ); if ( delayNumSamples == -1 ) { - if ( args.delayCompensationEnabled ) + if ( args.delayCompensationEnabled +#ifdef SPLIT_REND_WITH_HEAD_ROT + && !is_split_pre_rend_mode( &args ) +#endif + ) { if ( IVAS_REND_GetDelay( hIvasRend, &delayNumSamples, &delayTimeScale ) != IVAS_ERR_OK ) { fprintf( stderr, "\nUnable to get delay of renderer!\n" ); exit( -1 ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( is_split_post_rend_mode( &args ) && ( hSplitRendFileReadWrite != NULL ) ) + { + uint32_t pre_rend_delay_ns; + split_rend_read_pre_rend_delay_ns( hSplitRendFileReadWrite, &pre_rend_delay_ns ); + delayNumSamples += (int16_t) roundf( (float) pre_rend_delay_ns * delayTimeScale / 1000000000.f ); + } +#endif delayNumSamples_orig = delayNumSamples; } else @@ -1267,22 +1940,46 @@ int main( zeroPad = delayNumSamples; } - if ( delayNumSamples < outBufferSize ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( hSplitRendFileReadWrite != NULL ) && is_split_pre_rend_mode( &args ) ) { - if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) + if ( split_rend_write_bitstream_to_file( hSplitRendFileReadWrite, bitsBuffer.bits, &bitsBuffer.config.bitsRead, &bitsBuffer.config.bitsWritten, + bitsBuffer.config.codec, bitsBuffer.config.poseCorrection +#ifdef API_5MS + , + bitsBuffer.config.codec_frame_size_ms +#endif + ) != IVAS_ERR_OK ) { - fprintf( stderr, "Error writing audio file %s\n", args.outputFilePath ); + fprintf( stderr, "\nUnable to write to bitstream file!\n" ); exit( -1 ); } - delayNumSamples = 0; } - else + if ( audioWriter != NULL ) { - delayNumSamples -= (int16_t) outBufferSize; +#endif + if ( delayNumSamples * num_out_channels < outBufferSize ) + { + if ( AudioFileWriter_write( audioWriter, &outInt16Buffer[delayNumSamples * num_out_channels], outBufferSize - ( delayNumSamples * num_out_channels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "Error writing audio file %s\n", args.outputFilePath ); + exit( -1 ); + } + delayNumSamples = 0; + } + else + { + 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 */ - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_MASA1 || args.outConfig.audioConfig == AUDIO_CONFIG_MASA2 ) { IVAS_REND_AudioConfigType inputType1; IVAS_REND_AudioConfigType inputType2; @@ -1368,11 +2065,35 @@ int main( } /* add zeros at the end to have equal length of synthesized signals */ - memset( outInt16Buffer, 0, zeroPad * outBuffer.config.numChannels * sizeof( int16_t ) ); - if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPad * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( audioWriter != NULL ) { - fprintf( stderr, "\nOutput audio file writer error\n" ); - exit( -1 ); +#endif + for ( zeroPadToWrite = zeroPad; zeroPadToWrite > frameSize_smpls; zeroPadToWrite -= frameSize_smpls ) + { + memset( outInt16Buffer, 0, outBufferSize * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, outBufferSize ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + exit( -1 ); + } + } + + memset( outInt16Buffer, 0, zeroPadToWrite * outBuffer.config.numChannels * sizeof( int16_t ) ); + if ( ( error = AudioFileWriter_write( audioWriter, outInt16Buffer, zeroPadToWrite * outBuffer.config.numChannels ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nOutput audio file writer error\n" ); + exit( -1 ); + } + zeroPadToWrite = 0; +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif + + + if ( args.inConfig.numAudioObjects != 0 && ( args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL || args.outConfig.audioConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + { + fprintf( stdout, "\n\nMetadata delayed %d subframes\n\n", (int16_t) round( args.syncMdDelay / ( 1000 / IVAS_NUM_FRAMES_PER_SEC / IVAS_MAX_PARAM_SPATIAL_SUBFRAMES ) ) ); } if ( !args.quietModeEnabled && args.delayCompensationEnabled ) @@ -1399,10 +2120,29 @@ int main( free( inFloatBuffer ); free( outInt16Buffer ); free( outFloatBuffer ); +#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 ) + { + IVAS_REND_closeCldfb( cldfbAna, cldfbSyn ); + } + + if ( hSplitRendFileReadWrite != NULL ) + { + split_rend_reader_writer_close( &hSplitRendFileReadWrite ); + } +#endif + for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { LfeRoutingConfig_close( lfeRoutingConfigs[i] ); @@ -1419,6 +2159,9 @@ int main( IsmPositionProvider_close( positionProvider ); RenderConfigReader_close( &renderConfigReader ); +#ifdef DEBUGGING + dbgclose(); +#endif #ifdef WMOPS print_wmops(); print_mem( NULL ); @@ -1432,20 +2175,20 @@ int main( * Local functions *------------------------------------------------------------------------------------------*/ -static IVAS_REND_AudioConfig ambisonicsOrderToEnum( +static AUDIO_CONFIG ambisonicsOrderToEnum( const int16_t order ) { switch ( order ) { case 1: - return IVAS_REND_AUDIO_CONFIG_FOA; + return AUDIO_CONFIG_FOA; case 2: - return IVAS_REND_AUDIO_CONFIG_HOA2; + return AUDIO_CONFIG_HOA2; case 3: - return IVAS_REND_AUDIO_CONFIG_HOA3; + return AUDIO_CONFIG_HOA3; } - return IVAS_REND_AUDIO_CONFIG_UNKNOWN; + return AUDIO_CONFIG_INVALID; } static const CmdLnParser_Option *findOptionById( @@ -1474,6 +2217,9 @@ static bool parseInConfig( inConfig->numAmbisonicsBuses = 0; inConfig->numMultiChannelBuses = 0; inConfig->numMasaBuses = 0; +#ifdef SPLIT_REND_WITH_HEAD_ROT + inConfig->numBinBuses = 0; +#endif /* First check if input is being set to scene description file - this is not covered by parseAudioConfig(). */ strncpy( charBuf, inFormatStr, sizeof( charBuf ) - 1 ); @@ -1487,38 +2233,47 @@ static bool parseInConfig( return true; } - /* Check for single-format inputs. The given string should map to a member of IVAS_REND_AudioConfig enum. */ - IVAS_REND_AudioConfig audioConfig = parseAudioConfig( inFormatStr ); + /* Check for single-format inputs. The given string should map to a member of AUDIO_CONFIG enum. */ + AUDIO_CONFIG audioConfig = parseAudioConfig( inFormatStr ); switch ( audioConfig ) { - case IVAS_REND_AUDIO_CONFIG_MONO: - case IVAS_REND_AUDIO_CONFIG_STEREO: - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1_4: inConfig->numMultiChannelBuses = 1; inConfig->multiChannelBuses[0].audioConfig = audioConfig; inConfig->multiChannelBuses[0].inputChannelIndex = 0; inConfig->multiChannelBuses[0].gain_dB = 0.0f; break; - case IVAS_REND_AUDIO_CONFIG_FOA: - case IVAS_REND_AUDIO_CONFIG_HOA2: - case IVAS_REND_AUDIO_CONFIG_HOA3: + case AUDIO_CONFIG_FOA: + case AUDIO_CONFIG_HOA2: + case AUDIO_CONFIG_HOA3: inConfig->numAmbisonicsBuses = 1; inConfig->ambisonicsBuses[0].audioConfig = audioConfig; inConfig->ambisonicsBuses[0].inputChannelIndex = 0; inConfig->ambisonicsBuses[0].gain_dB = 0.0f; break; - case IVAS_REND_AUDIO_CONFIG_MASA1: - case IVAS_REND_AUDIO_CONFIG_MASA2: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + inConfig->numBinBuses = 1; + inConfig->binBuses[0].audioConfig = audioConfig; + inConfig->binBuses[0].inputChannelIndex = 0; + inConfig->binBuses[0].gain_dB = 0.0f; + break; +#endif + case AUDIO_CONFIG_MASA1: + case AUDIO_CONFIG_MASA2: inConfig->numMasaBuses = 1; inConfig->masaBuses[0].audioConfig = audioConfig; inConfig->masaBuses[0].inputChannelIndex = 0; inConfig->masaBuses[0].gain_dB = 0.0f; break; - case IVAS_REND_AUDIO_CONFIG_OBJECT: + case AUDIO_CONFIG_OBA: /* If input format is objects, parse the characters after "ISM" to get number of objects */ { char *ptr = NULL; @@ -1542,8 +2297,8 @@ static bool parseInConfig( } } break; - case IVAS_REND_AUDIO_CONFIG_UNKNOWN: - /* This case will be reached if parsing string to IVAS_REND_AudioConfig enum fails. + case AUDIO_CONFIG_INVALID: + /* This case will be reached if parsing string to AUDIO_CONFIG enum fails. * Try to use the given string as a path to a custom loudspeaker layout file. */ { ivas_error error = parseCustomLayoutFile( inFormatStr, &inConfig->inSetupCustom ); @@ -1561,14 +2316,14 @@ static bool parseInConfig( return false; } inConfig->numMultiChannelBuses = 1; - inConfig->multiChannelBuses[0].audioConfig = IVAS_REND_AUDIO_CONFIG_LS_CUSTOM; + inConfig->multiChannelBuses[0].audioConfig = AUDIO_CONFIG_LS_CUSTOM; inConfig->multiChannelBuses[0].inputChannelIndex = 0; inConfig->multiChannelBuses[0].gain_dB = 0.0f; } break; default: { - /* Default case covers formats that are defined in the IVAS_REND_AudioConfig enum, + /* Default case covers formats that are defined in the AUDIO_CONFIG enum, * but cannot be used at input, e.g. BINAURAL */ const CmdLnParser_Option *listOption = findOptionById( CmdLnOptionId_listFormats ); fprintf( stderr, "Unsupported input format: %s. To list valid formats, use option --%s.\n", inFormatStr, listOption->match ); @@ -1588,9 +2343,9 @@ static bool parseOutConfig( outConfig->audioConfig = parseAudioConfig( outputFormatStr ); /* If the string provided is not recognized as a valid output config, * it's expected to be a path to a custom loudspeaker layout description file. */ - if ( outConfig->audioConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( outConfig->audioConfig == AUDIO_CONFIG_INVALID ) { - outConfig->audioConfig = IVAS_REND_AUDIO_CONFIG_LS_CUSTOM; + outConfig->audioConfig = AUDIO_CONFIG_LS_CUSTOM; if ( ( error = parseCustomLayoutFile( outputFormatStr, &outConfig->outSetupCustom ) ) != IVAS_ERR_OK ) { fprintf( stderr, "Error while parsing output format option\n" ); @@ -1667,11 +2422,16 @@ static bool parseOrientationTracking( return true; } -static IVAS_REND_AudioConfig parseAudioConfig( +static 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'; @@ -1679,43 +2439,43 @@ static IVAS_REND_AudioConfig parseAudioConfig( if ( ( strcmp( charBuf, "MONO" ) == 0 ) || ( strcmp( charBuf, "HOA0" ) == 0 ) || ( strcmp( charBuf, "SBA0" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_MONO; + return AUDIO_CONFIG_MONO; } if ( ( strcmp( charBuf, "STEREO" ) == 0 ) || ( strcmp( charBuf, "CICP2" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_STEREO; + return AUDIO_CONFIG_STEREO; } if ( ( strcmp( charBuf, "FOA" ) == 0 ) || ( strcmp( charBuf, "SBA1" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_FOA; + return AUDIO_CONFIG_FOA; } if ( ( strcmp( charBuf, "HOA2" ) == 0 ) || ( strcmp( charBuf, "SBA2" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_HOA2; + return AUDIO_CONFIG_HOA2; } if ( ( strcmp( charBuf, "HOA3" ) == 0 ) || ( strcmp( charBuf, "SBA3" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_HOA3; + return AUDIO_CONFIG_HOA3; } if ( ( strcmp( charBuf, "5_1" ) == 0 ) || ( strcmp( charBuf, "CICP6" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_5_1; + return AUDIO_CONFIG_5_1; } if ( ( strcmp( charBuf, "7_1" ) == 0 ) || ( strcmp( charBuf, "CICP12" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_7_1; + return AUDIO_CONFIG_7_1; } if ( ( strcmp( charBuf, "5_1_2" ) == 0 ) || ( strcmp( charBuf, "CICP14" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_5_1_2; + return AUDIO_CONFIG_5_1_2; } if ( ( strcmp( charBuf, "5_1_4" ) == 0 ) || ( strcmp( charBuf, "CICP16" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_5_1_4; + return AUDIO_CONFIG_5_1_4; } if ( ( strcmp( charBuf, "7_1_4" ) == 0 ) || ( strcmp( charBuf, "CICP19" ) == 0 ) ) { - return IVAS_REND_AUDIO_CONFIG_7_1_4; + return AUDIO_CONFIG_7_1_4; } if ( strncmp( charBuf, "ISM", 3 ) == 0 ) { @@ -1727,7 +2487,7 @@ static IVAS_REND_AudioConfig parseAudioConfig( case '2': case '3': case '4': - return IVAS_REND_AUDIO_CONFIG_OBJECT; + return AUDIO_CONFIG_OBA; } } if ( strncmp( charBuf, "MASA", 4 ) == 0 ) @@ -1737,26 +2497,36 @@ static IVAS_REND_AudioConfig parseAudioConfig( case '1': fprintf( stderr, "1TC MASA support is not functional and is pending on DirAC renderer refactoring.\n" ); exit( EXIT_FAILURE ); - /*return IVAS_REND_AUDIO_CONFIG_MASA1;*/ // ToDo: temporarily disabled to avoid compilation warnings + /*return AUDIO_CONFIG_MASA1;*/ // ToDo: temporarily disabled to avoid compilation warnings case '2': - return IVAS_REND_AUDIO_CONFIG_MASA2; + return AUDIO_CONFIG_MASA2; default: - return IVAS_REND_AUDIO_CONFIG_UNKNOWN; + return AUDIO_CONFIG_INVALID; } } if ( strcmp( charBuf, "BINAURAL" ) == 0 ) { - return IVAS_REND_AUDIO_CONFIG_BINAURAL; + return AUDIO_CONFIG_BINAURAL; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( strcmp( charBuf, "BINAURAL_SPLIT_PCM" ) == 0 ) + { + return AUDIO_CONFIG_BINAURAL_SPLIT_PCM; + } + if ( strcmp( charBuf, "BINAURAL_SPLIT_CODED" ) == 0 ) + { + return AUDIO_CONFIG_BINAURAL_SPLIT_CODED; } +#endif if ( strcmp( charBuf, "BINAURAL_ROOM_IR" ) == 0 ) { - return IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR; + return AUDIO_CONFIG_BINAURAL_ROOM_IR; } if ( strcmp( charBuf, "BINAURAL_ROOM_REVERB" ) == 0 ) { - return IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB; + return AUDIO_CONFIG_BINAURAL_ROOM_REVERB; } - return IVAS_REND_AUDIO_CONFIG_UNKNOWN; + return AUDIO_CONFIG_INVALID; } static bool parseLfePositionConfig( @@ -1819,10 +2589,20 @@ static bool checkRequiredArgs( fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); missingRequiredArg = true; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + const bool singleInputSpecified = args.inConfig.numAudioObjects != 0 || + args.inConfig.numAmbisonicsBuses != 0 || + args.inConfig.numMultiChannelBuses != 0 || + args.inConfig.numMasaBuses != 0 || + args.inConfig.numBinBuses != 0; +#else const bool singleInputSpecified = args.inConfig.numAudioObjects != 0 || args.inConfig.numAmbisonicsBuses != 0 || args.inConfig.numMultiChannelBuses != 0 || args.inConfig.numMasaBuses != 0; +#endif + if ( !args.sceneDescriptionInput && !singleInputSpecified ) { /* Neither scene description input nor single-type input was specified on command line */ @@ -1836,7 +2616,7 @@ static bool checkRequiredArgs( fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); missingRequiredArg = true; } - if ( args.outConfig.audioConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( args.outConfig.audioConfig == AUDIO_CONFIG_INVALID ) { tmpOption = findOptionById( CmdLnOptionId_outputFormat ); fprintf( stderr, "Missing required argument: %s (%s)\n", tmpOption->match, tmpOption->matchShort ); @@ -1867,7 +2647,7 @@ static CmdlnArgs defaultArgs( args.inConfig.numMultiChannelBuses = 0; args.inConfig.numMasaBuses = 0; - args.outConfig.audioConfig = IVAS_REND_AUDIO_CONFIG_UNKNOWN; + args.outConfig.audioConfig = AUDIO_CONFIG_INVALID; args.outConfig.outSetupCustom.num_spk = 0; args.outConfig.outSetupCustom.num_lfe = 0; @@ -1878,6 +2658,10 @@ 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 ); @@ -1900,6 +2684,15 @@ static CmdlnArgs defaultArgs( args.lfeCustomRoutingEnabled = false; clearString( args.inLfePanningMatrixFile ); + args.framing_5ms = false; + args.syncMdDelay = 0; + + for ( int32_t i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) + { + args.directivityPatternId[i] = 0; + } + + args.acousticEnvironmentId = 0; return args; } @@ -1960,6 +2753,16 @@ 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 ); + break; + case CmdLnOptionId_SplitRendBFIFile: + 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 ); @@ -2012,6 +2815,19 @@ static void parseOption( strncpy( args->inLfePanningMatrixFile, optionValues[0], RENDERER_MAX_CLI_ARG_LENGTH - 1 ); args->lfeCustomRoutingEnabled = true; break; + case CmdLnOptionId_complexityLevel: + assert( numOptionValues == 1 ); + args->complexityLevel = (int32_t) ( strtol( optionValues[0], NULL, 10 ) ); + if ( args->complexityLevel < IVAS_REND_COMPLEXITY_LEVEL_ONE || args->complexityLevel > IVAS_REND_COMPLEXITY_LEVEL_THREE ) + { + fprintf( stdout, "Invalid complexity level specified.\n" ); + exit( -1 ); + } + else if ( args->complexityLevel == IVAS_REND_COMPLEXITY_LEVEL_ONE || args->complexityLevel == IVAS_REND_COMPLEXITY_LEVEL_TWO ) + { + fprintf( stdout, "Complexity levels 1 and 2 will be defined after characterisation - default to level 3 (full functionality).\n" ); + } + break; case CmdLnOptionId_noDelayCmp: assert( numOptionValues == 0 ); args->delayCompensationEnabled = false; @@ -2029,6 +2845,27 @@ static void parseOption( exit( -1 ); } break; + case CmdLnOptionId_framing5ms: + assert( numOptionValues == 0 ); + args->framing_5ms = true; + fprintf( stderr, "Warning: this is a placeholder for 5ms framing.\n" ); + break; + case CmdLnOptionId_directivityPatternId: + assert( numOptionValues <= RENDERER_MAX_ISM_INPUTS ); + for ( int16_t i = 0; i < numOptionValues; ++i ) + { + args->directivityPatternId[i] = (int16_t) strtol( optionValues[i], NULL, 10 ); + } + break; + case CmdLnOptionId_acousticEnvironmentId: + assert( numOptionValues == 1 ); + args->acousticEnvironmentId = (int16_t) strtol( optionValues[0], NULL, 10 ); + break; + case CmdLnOptionId_syncMdDelay: + assert( numOptionValues == 1 ); + /* Metadata Delay to sync with audio delay in ms */ + args->syncMdDelay = strtof( optionValues[0], NULL ); + break; default: assert( 0 && "This should be unreachable - all command line options should be explicitly handled." ); break; @@ -2601,9 +3438,9 @@ static void parseMc( --inConfig->multiChannelBuses[idx].inputChannelIndex; /* Convert from 1-indexing */ readNextMetadataChunk( line, "\n" ); - IVAS_REND_AudioConfig cfg = parseAudioConfig( line ); + AUDIO_CONFIG cfg = parseAudioConfig( line ); /* Try to use the given string as a path to a custom loudspeaker layout file. */ - if ( cfg == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( cfg == AUDIO_CONFIG_INVALID ) { ivas_error error = parseCustomLayoutFile( line, &inConfig->inSetupCustom ); @@ -2613,7 +3450,7 @@ static void parseMc( exit( -1 ); } inConfig->numMultiChannelBuses = 1; - inConfig->multiChannelBuses[idx].audioConfig = IVAS_REND_AUDIO_CONFIG_LS_CUSTOM; + inConfig->multiChannelBuses[idx].audioConfig = AUDIO_CONFIG_LS_CUSTOM; inConfig->multiChannelBuses[idx].inputChannelIndex = 0; inConfig->multiChannelBuses[idx].gain_dB = 0.0f; } @@ -2719,12 +3556,20 @@ static ivas_error parseCustomLayoutFile( } pLsSetupCustom->num_spk = hLsCustomData.num_spk; - mvr2r( hLsCustomData.azimuth, pLsSetupCustom->azimuth, hLsCustomData.num_spk ); - mvr2r( hLsCustomData.elevation, pLsSetupCustom->elevation, hLsCustomData.num_spk ); + + for ( int16_t i = 0; i < hLsCustomData.num_spk; i++ ) + { + pLsSetupCustom->azimuth[i] = hLsCustomData.azimuth[i]; + pLsSetupCustom->elevation[i] = hLsCustomData.elevation[i]; + } /* Loudspeaker LFE */ pLsSetupCustom->num_lfe = hLsCustomData.num_lfe; - mvs2s( hLsCustomData.lfe_idx, pLsSetupCustom->lfe_idx, hLsCustomData.num_lfe ); + + for ( int16_t i = 0; i < hLsCustomData.num_lfe; i++ ) + { + pLsSetupCustom->lfe_idx[i] = hLsCustomData.lfe_idx[i]; + } CustomLsReader_close( &hLsCustomReader ); @@ -2892,7 +3737,7 @@ static void parseSceneDescriptionFile( return; } -static void printSupportedAudioConfigs() +static void printSupportedAudioConfigs( void ) { uint16_t i; const char *supportedFormats[] = { @@ -2910,6 +3755,10 @@ static void printSupportedAudioConfigs() "ISMx (input only)", "MASAx (input only)", "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)", }; @@ -2927,7 +3776,7 @@ static ivas_error parseLfePanMtxFile( const char *lfeRoutingMatrixFilePath, IVAS_REND_LfePanMtx *lfePanMtx ) { - int16_t lfe_in, ch_out; + int16_t i, lfe_in, ch_out; const char *tok; char line[200]; /* > (10 chars * IVAS_MAX_OUTPUT_CHANNELS) i.e. "-999, " */ FILE *mtxFile; @@ -2948,7 +3797,10 @@ static ivas_error parseLfePanMtxFile( any subsequent issue in file reading will gracefully exit the function */ for ( lfe_in = 0; lfe_in < IVAS_MAX_INPUT_LFE_CHANNELS; lfe_in++ ) { - set_zero( ( *lfePanMtx )[lfe_in], IVAS_MAX_OUTPUT_CHANNELS ); + for ( i = 0; i < IVAS_MAX_OUTPUT_CHANNELS; i++ ) + { + ( *lfePanMtx )[lfe_in][i] = 0.0f; + } } for ( lfe_in = 0; lfe_in < IVAS_MAX_INPUT_LFE_CHANNELS; lfe_in++ ) @@ -3003,28 +3855,78 @@ static void convertInputBuffer( const int16_t numIntSamplesPerChannel, const int16_t numFloatSamplesPerChannel, const int16_t numChannels, - float *floatBuffer ) + float *floatBuffer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t cldfb_in, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbAna +#endif +) { int16_t chnl, smpl, i; i = 0; - - for ( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( cldfb_in ) { - for ( chnl = 0; chnl < numChannels; ++chnl ) + int16_t slotIdx, numCldfbBands, numFloatPcmSamples; + float fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; + + numFloatPcmSamples = numFloatSamplesPerChannel >> 1; + numCldfbBands = numFloatPcmSamples / IVAS_CLDFB_NO_COL_MAX; + + /* CLDFB Analysis*/ + assert( numIntSamplesPerChannel <= IVAS_MAX_OUTPUT_CHANNELS * IVAS_MAX_FRAME_SIZE ); + for ( smpl = 0; smpl < numFloatPcmSamples; ++smpl ) { - if ( i < numIntSamplesPerChannel ) + for ( chnl = 0; chnl < numChannels; ++chnl ) { - floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = (float) intBuffer[i]; + if ( i < numIntSamplesPerChannel ) + { + fIn[chnl][smpl] = (float) intBuffer[i]; + } + else + { + fIn[chnl][smpl] = 0.f; + } + + ++i; } - else + } + + for ( chnl = 0; chnl < numChannels; ++chnl ) + { + for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { - floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = 0.f; + IVAS_REND_cldfbAnalysis_ts_wrapper( &fIn[chnl][numCldfbBands * slotIdx], + &floatBuffer[( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], + &floatBuffer[numCldfbBands + ( chnl * numFloatSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands )], + numCldfbBands, cldfbAna[chnl] ); } + } + } + else + { +#endif + for ( smpl = 0; smpl < numFloatSamplesPerChannel; ++smpl ) + { + for ( chnl = 0; chnl < numChannels; ++chnl ) + { + if ( i < numIntSamplesPerChannel ) + { + floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = (float) intBuffer[i]; + } + else + { + floatBuffer[chnl * numFloatSamplesPerChannel + smpl] = 0.f; + } - ++i; + ++i; + } } +#ifdef SPLIT_REND_WITH_HEAD_ROT } +#endif return; } @@ -3040,32 +3942,91 @@ static void convertOutputBuffer( const float *floatBuffer, const int16_t numSamplesPerChannel, const int16_t numChannels, - int16_t *intBuffer ) + int16_t *intBuffer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t cldfb_in, + IVAS_CLDFB_FILTER_BANK_HANDLE *cldfbSyn +#endif +) { int16_t chnl, smpl, i; float temp; i = 0; - for ( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( cldfb_in ) { + int16_t slotIdx, numCldfbBands, numPcmSamples, b; + float fIn[IVAS_MAX_OUTPUT_CHANNELS][IVAS_MAX_FRAME_SIZE]; + float re[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; + float im[IVAS_MAX_OUTPUT_CHANNELS][IVAS_CLDFB_NO_COL_MAX][IVAS_CLDFB_NO_CHANNELS_MAX]; + + numPcmSamples = numSamplesPerChannel >> 1; + numCldfbBands = numPcmSamples / IVAS_CLDFB_NO_COL_MAX; + + /* CLDFB Synthesis*/ + for ( chnl = 0; chnl < numChannels; ++chnl ) + { + for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) + { + for ( b = 0; b < numCldfbBands; b++ ) + { + re[chnl][slotIdx][b] = floatBuffer[( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; + im[chnl][slotIdx][b] = floatBuffer[numCldfbBands + ( chnl * numSamplesPerChannel ) + ( 2 * slotIdx * numCldfbBands ) + b]; + } + } + } + + /* Implement CLDFB synthesis */ for ( chnl = 0; chnl < numChannels; ++chnl ) { - temp = floatBuffer[chnl * numSamplesPerChannel + smpl]; - temp = (float) floor( temp + 0.5f ); - if ( temp > MAX16B_FLT ) + float *RealBuffer[IVAS_CLDFB_NO_COL_MAX]; + float *ImagBuffer[IVAS_CLDFB_NO_COL_MAX]; + + for ( slotIdx = 0; slotIdx < IVAS_CLDFB_NO_COL_MAX; slotIdx++ ) { - temp = MAX16B_FLT; + RealBuffer[slotIdx] = re[chnl][slotIdx]; + ImagBuffer[slotIdx] = im[chnl][slotIdx]; } - else if ( temp < MIN16B_FLT ) + + IVAS_REND_cldfbSynthesis_wrapper( RealBuffer, ImagBuffer, &( fIn[chnl][0] ), numCldfbBands * IVAS_CLDFB_NO_COL_MAX, cldfbSyn[chnl] ); + } + for ( smpl = 0; smpl < numPcmSamples; ++smpl ) + { + for ( chnl = 0; chnl < numChannels; ++chnl ) { - temp = MIN16B_FLT; + intBuffer[i] = (int16_t) roundf( fIn[chnl][smpl] ); + ++i; } - intBuffer[i] = (int16_t) temp; + } + } + else + { +#endif + for ( smpl = 0; smpl < numSamplesPerChannel; ++smpl ) + { + for ( chnl = 0; chnl < numChannels; ++chnl ) + { + temp = floatBuffer[chnl * numSamplesPerChannel + smpl]; + temp = (float) floor( temp + 0.5f ); + if ( temp > IVAS_MAX16B_FLT ) + { + temp = IVAS_MAX16B_FLT; + } + else if ( temp < IVAS_MIN16B_FLT ) + { + temp = IVAS_MIN16B_FLT; + } + intBuffer[i] = (int16_t) temp; - ++i; + ++i; + } } +#ifdef SPLIT_REND_WITH_HEAD_ROT } +#endif return; } diff --git a/ci/build_codec_sanitizers_linux.sh b/ci/build_codec_sanitizers_linux.sh index d352fa32ec1cd6d8d3283c4984ba428c117b5769..4e40f89b9a028d89363c97ec2fbab109474334b8 100755 --- a/ci/build_codec_sanitizers_linux.sh +++ b/ci/build_codec_sanitizers_linux.sh @@ -40,4 +40,5 @@ make CLANG=1 -j make clean make CLANG=2 -j make clean -make CLANG=3 -j +# write out one build for warnings check +make CLANG=3 -j 2>&1 | tee build_output.txt diff --git a/ci/comment_defines.py b/ci/comment_defines.py new file mode 100755 index 0000000000000000000000000000000000000000..0b6e3457035e0dc93d930dbe046c18a8437c3e8c --- /dev/null +++ b/ci/comment_defines.py @@ -0,0 +1,47 @@ +import re +import argparse + + +def process_file(file_path: str, defines_re): + with open(file_path, "r", encoding="utf-8") as file: + lines = file.readlines() + + num_subbed = dict() + for name in defines_re.keys(): + num_subbed[name] = 0 + + for i, line in enumerate(lines): + for name, regex in defines_re.items(): + # Spaces are replaced with underscores to avoid matching on multiple runs + lines[i] = regex.sub(lambda x: f"/* {x.group(0).replace(' ', '_')} */", line) + + if lines[i] != line: + num_subbed[name] += 1 + + with open(file_path, "w", encoding="utf-8") as file: + file.writelines(lines) + + print(f"Processed {file_path}") + for name, num in num_subbed.items(): + print(f"{name} - {num} occurences commented") + print("") + + +def compile_define_re(define_name: str): + return re.compile(f"#define\\s+{define_name}") + + +def main(args): + defines_re = dict() + for define_name in args.defines: + defines_re[define_name] = compile_define_re(define_name) + + for file_path in args.files: + process_file(file_path, defines_re) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Comment out preprocessor defines in c/c++ files") + parser.add_argument("-f", "--files", nargs="+", required=True, type=str) + parser.add_argument("-d", "--defines", nargs="+", required=True, type=str) + main(parser.parse_args()) diff --git a/ci/complexity_measurements/getWmops.sh b/ci/complexity_measurements/getWmops.sh index baec52ab6f1e7064b3be60679d0d1aafc8f681ad..e81575892bbead122c6770e92715ebb04b5f0299 100755 --- a/ci/complexity_measurements/getWmops.sh +++ b/ci/complexity_measurements/getWmops.sh @@ -53,8 +53,11 @@ config_file="scripts/config/ci_linux_ltv.json" wmopsFilenameFlcLast=wmops_newsletter_stereo__${commit_sha}_${date} wmopsFilenameFlc=${destDir}/wmops/logs/${wmopsFilenameFlcLast} +ret_val=0 + # instrument and build ./scripts/IvasBuildAndRunChecks.py -p $config_file --checks COMPLEXITY --create_complexity_tables ${wmopsFilenameFlc} -C $ivas_format -f ${ep} --oc $output_format +ret_val=$? # get the info on worst-case operating point: WMOPS number, enc-operating mode, dec-operating mode ### WMOPS @@ -83,4 +86,4 @@ ${scriptDir}/parseNewsletterRom.py ${wmopsFilenameFlc}_PROM.csv ${wmopsFilenameF # generate java script from database tcsh ${scriptDir}/genWebpageData_Rom.csh ${destDir}/wmops/log_rom_all.txt ${destDir}/wmops/graphs_rom_flc.js Graphs_ROM - +exit $ret_val \ No newline at end of file diff --git a/ci/disable_ram_counting.py b/ci/disable_ram_counting.py deleted file mode 100755 index 3c891535081528a249751eed987d88f589e55f9d..0000000000000000000000000000000000000000 --- a/ci/disable_ram_counting.py +++ /dev/null @@ -1,20 +0,0 @@ -import re -import os - -FILE_PATH = os.path.join(os.path.dirname(__file__), "..", "lib_com", "options.h") -RE_TO_COMMENT_OUT = re.compile(r"#define\s+RAM_COUNTING_TOOL") - - -def main(): - with open(FILE_PATH, "r", encoding="utf-8") as file: - lines = file.readlines() - - for i, line in enumerate(lines): - lines[i] = RE_TO_COMMENT_OUT.sub(lambda x: f"/* {x.group(0)} */", line) - - with open(FILE_PATH, "w", encoding="utf-8") as file: - file.writelines(lines) - - -if __name__ == "__main__": - main() diff --git a/ci/smoke_test.sh b/ci/smoke_test.sh index 2bbf06bcd3c009cc20d2a480127105f4facc7114..96e661238d98f6550f2fc669fb335e6d500b0f5d 100755 --- a/ci/smoke_test.sh +++ b/ci/smoke_test.sh @@ -75,10 +75,14 @@ if [ $BUILD -eq 1 ];then fi +# prepare combined format test signals +echo "\n======================= 0. preparing combined format test inputs =======================\n\n" +./scripts/prepare_combined_format_inputs.py + # run all modes vanilla-fashion # treat ISM modes separately because passing the metadata files to MASA modes causes crashes -ism_modes=$(./scripts/runIvasCodec.py -l | grep ISM) -non_ism_modes=$(./scripts/runIvasCodec.py -l | grep -v ISM) +ism_modes=$(./scripts/runIvasCodec.py -l | grep ^ISM) +non_ism_modes=$(./scripts/runIvasCodec.py -l | grep -v ^ISM) echo "\n======================= 1. non-ism modes no FEC =======================\n\n" ./scripts/runIvasCodec.py -m $non_ism_modes -p $cfg $duration_arg $WORKERS | tee smoke_test_output.txt echo "\n======================= 2. ism modes no FEC =======================\n\n" @@ -88,8 +92,9 @@ echo "\n======================= 3. all modes with FEC =======================\n\ ./scripts/runIvasCodec.py -p $cfg $duration_arg $WORKERS -D="-fec 15" --decoder_only | tee smoke_test_output_plc.txt # run JBM modes - EXT is excluded as not supported yet -modes_with_no_ext_out=$(./scripts/runIvasCodec.py -l | grep -v MASA | grep -v ISM) -modes_with_ext_out=$(./scripts/runIvasCodec.py -l | grep 'MASA\|ISM' | grep -v ISM+) +# OMASA disabled for now +modes_with_no_ext_out=$(./scripts/runIvasCodec.py -l | grep -v ^MASA | grep -v ^ISM | grep -v OMASA) +modes_with_ext_out=$(./scripts/runIvasCodec.py -l | grep 'MASA\|ISM' | grep -v ^ISM+ | grep -v OMASA) echo "\n======================= 4. JBM, modes with no EXT =======================\n\n" ./scripts/runIvasCodec.py -m $modes_with_no_ext_out -p $cfg $duration_arg $WORKERS --decoder_only --jbm_file $dly_profile | tee smoke_test_output_jbm_noEXT.txt echo "\n======================= 5. JBM, modes with EXT =======================\n\n" diff --git a/lc3plus/adjust_global_gain.c b/lc3plus/adjust_global_gain.c new file mode 100644 index 0000000000000000000000000000000000000000..e7674dd7101b7079137738cd85e859562c1ed0ce --- /dev/null +++ b/lc3plus/adjust_global_gain.c @@ -0,0 +1,86 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processAdjustGlobalGain_fl(LC3_INT* gg_idx, LC3_INT gg_idx_min, LC3_INT gg_idx_off, LC3_FLOAT* gain, LC3_INT target, LC3_INT nBits, LC3_INT* gainChange, LC3_INT fs_idx + , LC3_INT16 hrmode, LC3_INT16 frame_dms + ) +{ + LC3_FLOAT delta = 0; + LC3_INT delta2 = 0; + LC3_INT gg_idx_inc; + LC3_INT factor; + + + if (frame_dms == 25) + { + if (target < 520) + { + factor = 3; + } else { + factor = 4; + } + } else if (frame_dms == 50) + { + factor = 2; + } else + { + factor = 1; + } + + if (nBits < gg_p1[fs_idx]) { + delta = (nBits + 48.0) / 16.0; + } else if (nBits < gg_p2[fs_idx]) { + delta = (nBits + gg_d[fs_idx]) * gg_c[fs_idx]; + } else if (nBits < gg_p3[fs_idx]) { + delta = nBits / 48.0; + } else { + delta = gg_p3[fs_idx] / 48.0; + } + + delta = round(delta); + delta2 = delta + 2; + + *gainChange = 0; + + if (*gg_idx == 255 && nBits > target) { + *gainChange = 1; + } + + if ((*gg_idx < 255 && nBits > target) || (*gg_idx > 0 && nBits < target - delta2)) { + if (hrmode) + { + if (nBits > target) { + gg_idx_inc = (int) factor * (((nBits - target)/ delta) + 1); + gg_idx_inc = MIN(gg_idx_inc, 10 * factor); + + *gg_idx += gg_idx_inc; + } + + *gg_idx = MIN(*gg_idx, 255); + } + else + { + if (nBits < target - delta2) { + *gg_idx = *gg_idx - 1; + } else if (*gg_idx == 254 || nBits < target + delta) { + *gg_idx = *gg_idx + 1; + } else { + *gg_idx = *gg_idx + 2; + } + } + + *gg_idx = MAX(*gg_idx, gg_idx_min - gg_idx_off); + *gain = LC3_POW(10, (LC3_FLOAT)(*gg_idx + gg_idx_off) / 28); + *gainChange = 1; + } +} diff --git a/lc3plus/al_fec_fl.c b/lc3plus/al_fec_fl.c new file mode 100644 index 0000000000000000000000000000000000000000..0cae36dade9bf580d3774b942dec6eb24b3cf62d --- /dev/null +++ b/lc3plus/al_fec_fl.c @@ -0,0 +1,2329 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "stdint.h" +#include +#include +#include + +#include "functions.h" + + +/* channel coder specific constants and macros */ +#define RS16_CW_LEN_MAX 15 + +#define FEC_N_MODES 4 +#define FEC_N_SYNDROMES_MAX 6 +#define FEC_N_ERR_POS_MAX 3 +#define FEC_N_ELP_COEFF_MAX 4 +#define FEC_N_ERR_SYMB_MAX 3 +#define FEC_N_MODE_DETECTION_CW 6 + +#define SYNDROME_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_SYNDROMES_MAX) +#define ELP_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_ELP_COEFF_MAX) +#define ERR_POS_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_ERR_POS_MAX) +#define ERR_SYMB_IDX(mode_index, cw_index) (((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) * FEC_N_ERR_SYMB_MAX) +#define DEG_ELP_IDX(mode_index, cw_index) ((mode_index)*FEC_N_MODE_DETECTION_CW + (cw_index)) + +#define FEC_TOTAL_SYNDROME_SIZE (FEC_N_SYNDROMES_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_ELP_SIZE (FEC_N_ELP_COEFF_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_ERR_POS_SIZE (FEC_N_ERR_POS_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_ERROR_SIZE (FEC_N_ERR_SYMB_MAX * FEC_N_MODES * FEC_N_MODE_DETECTION_CW) +#define FEC_TOTAL_DEG_ELP_SIZE (FEC_N_MODES * FEC_N_MODE_DETECTION_CW) + +#define ERROR_REPORT_BEC_MASK ((0x0FFF)>>1) +#define ERROR_REPORT_EP1_OK ((0x1000)>>1) +#define ERROR_REPORT_EP2_OK ((0x2000)>>1) +#define ERROR_REPORT_EP3_OK ((0x4000)>>1) +#define ERROR_REPORT_EP4_OK ((0x8000)>>1) +#define ERROR_REPORT_ALL_OK (ERROR_REPORT_EP1_OK | ERROR_REPORT_EP2_OK | ERROR_REPORT_EP3_OK | ERROR_REPORT_EP4_OK) + +/* debugging switches */ + +/* constants concerning mode detection */ +#define EP_RISK_THRESH_NS_M 21990 +#define EP_RISK_THRESH_NS_E -23 +#define EP_RISK_THRESH_OS_M 25166 +#define EP_RISK_THRESH_OS_E -10 + +#define SIMPLE_FLOAT_1_MANTISSA 16384 + +#define FEC_STATIC static + +/* DISCLAIMER: Strict instrumentation of GF16 arithmetic would have to take into account + * the initial conversion of the arguments from LC3_UINT8 to LC3_INT16 (one move16() per argument). + * Behind this is the assumption that one would store GF16 elements in LC3_INT16 for strict BASOP + * implementation. + */ +#define GF16_MUL(a, b) gf16_mult_table[(a) | (b << 4)] +#define GF16_MUL0(a, b) gf16_mult_table[(a) | (b)] +#define GF16_ADD(a, b) ((a) ^ (b)) + +/* tables for finite field arithmetic */ +/* tables for arithmetic in GF(16) * + * generator polynomial: 19 + * unit group generator (g): 2 + */ + +static const LC3_UINT8 gf16_mult_table[256] = { + /* gf16_mult_table[a | (b << 4)] contains the product of a and b in GF(16) */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 0, 2, 4, 6, 8, 10, 12, 14, 3, 1, 7, 5, 11, 9, 15, 13, 0, 3, 6, 5, 12, 15, 10, 9, 11, 8, + 13, 14, 7, 4, 1, 2, 0, 4, 8, 12, 3, 7, 11, 15, 6, 2, 14, 10, 5, 1, 13, 9, 0, 5, 10, 15, 7, 2, 13, + 8, 14, 11, 4, 1, 9, 12, 3, 6, 0, 6, 12, 10, 11, 13, 7, 1, 5, 3, 9, 15, 14, 8, 2, 4, 0, 7, 14, 9, + 15, 8, 1, 6, 13, 10, 3, 4, 2, 5, 12, 11, 0, 8, 3, 11, 6, 14, 5, 13, 12, 4, 15, 7, 10, 2, 9, 1, 0, + 9, 1, 8, 2, 11, 3, 10, 4, 13, 5, 12, 6, 15, 7, 14, 0, 10, 7, 13, 14, 4, 9, 3, 15, 5, 8, 2, 1, 11, + 6, 12, 0, 11, 5, 14, 10, 1, 15, 4, 7, 12, 2, 9, 13, 6, 8, 3, 0, 12, 11, 7, 5, 9, 14, 2, 10, 6, 1, + 13, 15, 3, 4, 8, 0, 13, 9, 4, 1, 12, 8, 5, 2, 15, 11, 6, 3, 14, 10, 7, 0, 14, 15, 1, 13, 3, 2, 12, + 9, 7, 6, 8, 4, 10, 11, 5, 0, 15, 13, 2, 9, 6, 4, 11, 1, 14, 12, 3, 8, 7, 5, 10, +}; + +static const LC3_UINT8 rs16_elp_deg2_table[256] = { + /* If the polynomial x^2 + ax + b has distinct non-zero roots z1 and z2 in GF(16), * + * then table entry a + 16*b contains log_g(z1) | log_g(z2) << 4, and otherwise it * + * contains 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 0, 0, 0, 0, + 105, 195, 0, 210, 0, 225, 0, 180, 120, 0, 0, 121, 0, 16, 0, 211, 0, 0, 181, 0, 0, 106, + 196, 226, 0, 0, 0, 214, 64, 0, 199, 0, 0, 0, 0, 0, 49, 184, 0, 154, 0, 229, 0, 227, + 182, 0, 0, 32, 0, 0, 0, 197, 0, 0, 122, 0, 212, 152, 0, 203, 0, 158, 128, 0, 0, 0, + 98, 113, 218, 0, 0, 0, 53, 0, 0, 65, 0, 0, 185, 110, 215, 80, 0, 0, 200, 0, 50, 0, + 0, 0, 0, 130, 205, 115, 0, 0, 160, 190, 145, 0, 0, 0, 0, 0, 0, 100, 0, 0, 168, 198, + 0, 183, 33, 0, 0, 48, 228, 213, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 179, 0, 224, 104, + 0, 194, 149, 0, 0, 209, 0, 0, 0, 189, 99, 84, 0, 129, 0, 0, 0, 144, 0, 0, 234, 114, + 0, 0, 82, 0, 0, 0, 0, 217, 202, 0, 112, 52, 232, 0, 97, 0, 0, 0, 126, 0, 81, 201, + 0, 36, 216, 186, 0, 0, 0, 96, 0, 0, 0, 0, 0, 88, 0, 0, 0, 103, 0, 148, 178, 0, + 208, 193, 0, 58, 0, 0, 0, 0, 0, 161, 206, 0, 116, 0, 101, 0, 0, 56, 146, 176, 0, 0, + 147, 162, 222, 0, 132, 0, 0, 0, 0, 0, 177, 117, 192, 0, +}; + +static const LC3_UINT16 rs16_elp_deg3_table[256] = { + /* If the polynomial x^3 + ax + b has distinct roots z1, z2 and z3 in GF(16), * + * then table entry a + 16*b contains z1) | z2 << 4 | z3 << 8, and otherwise it * + * contains 0. */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1889, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2977, 0, 0, 0, 0, 0, 3990, 1859, 0, + 0, 0, 0, 0, 0, 0, 3521, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1874, 0, 3718, 0, 0, 0, + 0, 0, 0, 2433, 0, 0, 1619, 0, 0, 0, 0, 3495, 0, 0, 0, 0, 0, 0, 4065, 0, 0, 0, + 0, 0, 0, 3255, 0, 0, 0, 1602, 0, 3735, 0, 0, 0, 0, 3238, 801, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3510, 0, 0, 0, 0, 1345, 3975, 0, 0, 0, 0, 0, 0, 0, 0, 3778, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2947, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3476, 0, 4005, 0, 3461, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3748, 0, 0, 2962, 0, 0, 0, 0, 4035, 0, 0, 4020, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3221, 0, 0, 0, 0, 0, 0, 2690, + 0, 0, 0, 3795, 0, 0, 0, 4050, 0, 0, 0, 0, 0, 3204, 3765, 0, 0, 0, 0, 0, 2707, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +static const LC3_UINT8 gf16_g_pow[16] = {1, 2, 4, 8, 3, 6, 12, 11, 5, 10, 7, 14, 15, 13, 9, 1}; +/* g_pow[i] contains g^i*/ + +static const LC3_UINT8 gf16_log_g[16] = {255, 0, 1, 4, 2, 8, 5, 10, 3, 14, 9, 7, 6, 13, 11, 12}; +/* log_g[n] contains contains the value i such that g^i = n for n=1, 2, ..., 15, log_g[0] is set to 255 */ + +static const LC3_UINT8 gf16_inv_table[16] = {255, 1, 9, 14, 13, 11, 7, 6, 15, 2, 12, 5, 10, 4, 3, 8}; +/* gf16_inv_table[n] contains the multiplicative inverse of n in GF(16) (1/0 is set to 255)*/ + +/* RS16 generating polynomials (from lowest to highest coefficient without leading 1)*/ + +static const LC3_UINT8 rs16_gp_d3[] = {8, 6}; +static const LC3_UINT8 rs16_gp_d5[] = {7, 8, 12, 13}; +static const LC3_UINT8 rs16_gp_d7[] = {12, 10, 12, 3, 9, 7}; + +/* FEC mode signaling polynomials */ + +#define EP_SIG_POLY_DEG 12 + +static const LC3_UINT8 sig_polys[4][15] = {{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {7, 15, 5, 6, 14, 9, 1, 3, 12, 10, 13, 3, 2, 0, 0}, + {7, 11, 14, 1, 2, 3, 12, 11, 6, 15, 7, 6, 12, 0, 0}, + {6, 15, 12, 2, 9, 15, 2, 8, 12, 3, 10, 5, 4, 0, 0}}; + +static const LC3_UINT8 sig_poly_syndr[4][6] = { + {0, 0, 0, 0, 0, 0}, {0, 4, 5, 11, 5, 8}, {0, 5, 9, 0, 1, 7}, {0, 12, 5, 12, 9, 8}}; + +/* bit count table for error report (0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111) */ + +static const LC3_UINT8 rs16_bit_count_table[] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4}; + +/* List of RS16 generators by Hamming distance */ + +static const LC3_UINT8 *const rs16_gp_by_hd[8] = {NULL, NULL, NULL, rs16_gp_d3, NULL, rs16_gp_d5, NULL, rs16_gp_d7}; + +/* fec config data */ + +static const LC3_UINT8 hamming_distance_by_mode0[] = {1, 3, 3, 5, 7}; +static const LC3_UINT8 hamming_distance_by_mode1[] = {1, 1, 3, 5, 7}; + +static const LC3_UINT8 crc1_bytes_by_mode0[] = {0, 3, 2, 2, 2}; +static const LC3_UINT8 crc1_bytes_by_mode1[] = {0, 3, 3, 3, 3}; +static const LC3_UINT8 crc2_bytes_by_mode[] = {0, 0, 2, 2, 2}; + +/* fec mode risk table */ +typedef struct +{ + LC3_UINT32 mantissa; + LC3_INT16 exponent; +} simple_float; + +static const simple_float risk_table_f[4][4] = {{{16384, 0}, {16384, 0}, {16384, 0}, {16384, 0}}, + {{16384, -8}, {26880, -1}, {16384, 0}, {16384, 0}}, + {{16384, -16}, {26880, -9}, {20475, -2}, {16384, 0}}, + {{16384, -24}, {26880, -17}, {20475, -10}, {19195, -4}}}; +/* bit error limits for slot size 40 */ +static LC3_INT16 const low_br_max_bit_errors_by_mode[] = {0, 0, 3, 9, 18}; + +/* +corresponding float values: + {1.f, 1.f, 1.f, 1.f}, + {0.00390625f, 0.820312f, 1.f, 1.f}, + {1.52588e-05f, 0.00320435f, 0.312424f, 1.f}, + {5.96046e-08f, 1.2517e-05f, 0.00122041f, 0.0732243f} +*/ + +/* internal encoder routines */ + +FEC_STATIC void fec_interleave_pack(LC3_UINT8 *out, LC3_UINT8 *in, LC3_INT16 n_nibbles, LC3_INT16 n_codewords); + +FEC_STATIC void rs16_enc(LC3_UINT8 *iobuf, LC3_INT16 codeword_length, LC3_INT16 hamming_distance, LC3_INT16 fec_mode, + LC3_INT16 signal_mode); + +/* internal decoder routines */ + +FEC_STATIC void fec_deinterleave_unpack(LC3_UINT8 *out, LC3_UINT8 *in, LC3_INT16 n_nibbles, LC3_INT16 n_codewords); + +FEC_STATIC LC3_INT16 fec_data_preproc(LC3_INT16 mode, LC3_INT16 epmr, LC3_UINT8 *iobuf, LC3_UINT8 *cw_buf, LC3_INT16 data_bytes, + LC3_INT16 slot_bytes, LC3_INT16 pc_split); + +FEC_STATIC void fec_data_postproc(LC3_INT16 mode, LC3PLUS_EpModeRequest *epmr, LC3_UINT8 *iobuf, LC3_INT16 data_bytes, LC3_UINT8 *cw_buf, + LC3_INT16 slot_bytes, LC3_INT16 pc_split, LC3_INT32 *bfi); + +FEC_STATIC LC3_INT32 rs16_detect_and_correct(LC3_UINT8 *iobuf, LC3_INT32 n_symb, LC3_INT32 n_codewords, LC3PLUS_EpModeRequest *epmr, LC3_INT16 *error_report, + LC3_INT32 *bfi, LC3_UINT8 *array_of_trust, LC3_INT32 ccc_flag_flag, LC3_INT16 *n_pccw); + +FEC_STATIC void rs16_calculate_six_syndromes(LC3_UINT8 *syndromes, LC3_UINT8 *cw, LC3_INT32 cw_poly_deg); + +FEC_STATIC void rs16_calculate_four_syndromes(LC3_UINT8 *syndromes, LC3_UINT8 *cw, LC3_INT32 cw_poly_deg); + +FEC_STATIC void rs16_calculate_two_syndromes(LC3_UINT8 *syndromes, LC3_UINT8 *cw, LC3_INT32 cw_poly_deg); + +FEC_STATIC LC3_INT8 rs16_calculate_elp(LC3_UINT8 *elp, LC3_UINT8 *syndromes, LC3_INT16 hamming_distance); + +FEC_STATIC LC3_INT16 rs16_factorize_elp(LC3_UINT8 *error_locations, LC3_UINT8 *elp, LC3_INT16 deg_elp, LC3_INT16 max_pos); + +FEC_STATIC void rs16_calculate_errors(LC3_UINT8 *errors, LC3_UINT8 *err_pos, LC3_UINT8 *syndromes, LC3_INT8 deg_elp, LC3_INT8 t); + +/* auxiliary routines */ + +FEC_STATIC LC3_INT16 crc1(LC3_UINT8 *data, LC3_INT16 data_size, LC3_INT16 epmr, LC3_UINT8 *hash_val, LC3_INT16 hash_size, LC3_INT16 check); + +FEC_STATIC LC3PLUS_EpModeRequest fec_estimate_epmr_from_cw0(LC3_UINT8 *cw0, LC3_INT8 *t, LC3_UINT8 *syndromes, LC3_UINT8 *elp, LC3_INT8 *deg_elp, + LC3_UINT8 *err_pos, LC3_UINT8 *err_symb, LC3_INT16 n_codewords, LC3_INT16 n_symb); + +FEC_STATIC void dw0_bitswap(LC3_UINT8 *dw0, LC3_INT16 mode, LC3_INT16 slot_bytes); + +FEC_STATIC LC3PLUS_EpModeRequest cw0_get_epmr(LC3_UINT8 *cw0, LC3_INT16 epmr_position); + +FEC_STATIC LC3PLUS_EpModeRequest dw0_get_epmr(LC3_UINT8 *dw0, LC3_INT16 mode, LC3_INT16 slot_size); + +FEC_STATIC LC3_INT16 crc2(LC3_UINT8 *data, LC3_INT16 data_size, LC3_UINT8 *hash_val, LC3_INT16 hash_size, LC3_INT16 check); + +FEC_STATIC simple_float simple_float_mul(simple_float op1, simple_float op2); + +FEC_STATIC LC3_INT16 simple_float_cmp(simple_float op1, simple_float op2); + +FEC_STATIC LC3_INT16 get_total_crc_size(LC3_INT16 slot_bytes, LC3_INT16 fec_mode, LC3_INT16 pc_split); + +FEC_STATIC LC3_INT16 get_n_codewords(LC3_INT16 slot_bytes); + +FEC_STATIC LC3_INT16 get_codeword_length(LC3_INT16 n_codewords, LC3_INT16 slot_nibbles, LC3_INT16 codeword_index); + + + +LC3_INT16 fec_get_n_pccw(LC3_INT16 slot_bytes, LC3_INT16 fec_mode, LC3_INT16 ccc_flag) +{ + LC3_INT16 n_pccw; + + if (fec_mode == 3) + { + n_pccw = (LC3_INT16) (0.080447761194030 * slot_bytes - 1.791044776119394 + 0.5); + } + else if (fec_mode == 4) + { + n_pccw = (LC3_INT16) (0.066492537313433 * slot_bytes - 1.970149253731338 + 0.5); + } + else + { + n_pccw = 0; + } + + if (ccc_flag == 1 || slot_bytes < 80) + { + n_pccw = 0; + } + + return n_pccw; +} + +FEC_STATIC LC3_INT16 get_total_crc_size(LC3_INT16 slot_bytes, LC3_INT16 fec_mode, LC3_INT16 pc_split) +{ + LC3_INT16 n_crc; + + n_crc = crc1_bytes_by_mode1[fec_mode]; + if (slot_bytes == 40) + { + n_crc = crc1_bytes_by_mode0[fec_mode]; + } + + if (pc_split > 0) + { + n_crc = n_crc + crc2_bytes_by_mode[fec_mode]; + } + + + + return n_crc; +} + +FEC_STATIC LC3_INT16 get_n_codewords(LC3_INT16 slot_bytes) +{ + return (2*slot_bytes + 14)/15; +} + +FEC_STATIC LC3_INT16 get_codeword_length(LC3_INT16 n_codewords, LC3_INT16 slot_nibbles, LC3_INT16 codeword_index) +{ + return (slot_nibbles - codeword_index - 1) / n_codewords + 1; +} + +/* Encoder */ + +LC3_INT16 fec_get_data_size(LC3_INT16 fec_mode, LC3_INT16 ccc_flag, LC3_INT16 slot_bytes) +/* not time critical */ +{ + LC3_INT16 n_codewords, payload_size; + + n_codewords = get_n_codewords(slot_bytes); + + assert(n_codewords == (2 * slot_bytes + RS16_CW_LEN_MAX - 1) / RS16_CW_LEN_MAX); + payload_size = slot_bytes; + + if (fec_mode > 0) + { + if (fec_mode == 1) + { + payload_size --; + } + else + { + payload_size -= (fec_mode - 1) * n_codewords; + } + if (slot_bytes == 40) + { + payload_size -= crc1_bytes_by_mode0[fec_mode]; + } + else + { + payload_size -= crc1_bytes_by_mode1[fec_mode]; + } + + if (ccc_flag == 0 && fec_mode > 2 && slot_bytes >= 80) + { + payload_size -= crc2_bytes_by_mode[fec_mode]; + } + } + + + + return payload_size; +} + +LC3_INT16 fec_get_n_pc(LC3_INT16 fec_mode, LC3_INT16 n_pccw, LC3_INT16 slot_bytes) +/* not time critical */ +{ + LC3_INT16 n_codewords, pc_split; + LC3_INT32 i; + + n_codewords = get_n_codewords(slot_bytes); + + assert(n_codewords == (2 * slot_bytes + RS16_CW_LEN_MAX - 1) / RS16_CW_LEN_MAX); + + pc_split = - 2*n_pccw*(fec_mode - 1); + + if (fec_mode == 1 || slot_bytes < 80) + { + pc_split = 0; + } + else + { + for (i = 0; i < n_pccw; i++) + { + pc_split += (2 * slot_bytes + i) / n_codewords; + } + } + + + + return pc_split; +} + +/* functions for EPMR handling */ +FEC_STATIC void dw0_bitswap(LC3_UINT8 *dw0, LC3_INT16 mode, LC3_INT16 slot_bytes) +/* swap epmr bits with bits that will be positioned at 30 and 32 in code word 0 */ +{ + LC3_UINT8 tmp; + LC3_INT32 ind0, ind1, position; + + position = get_codeword_length(get_n_codewords(slot_bytes), 2*slot_bytes, 0) - 1; + + if (slot_bytes == 40) + { + ind0 = 2*crc1_bytes_by_mode0[mode] - 1; + } + else + { + ind0 = 2*crc1_bytes_by_mode1[mode] - 1; + } + + ind1 = position - hamming_distance_by_mode0[mode] + 1; + + /* swap bits 2 and 3 of dw0[ind0] with bits 0 and 1 of dw0[ind1] */ + tmp = (dw0[ind0] >> 2) & 3; + dw0[ind0] = dw0[ind0] & 3; + dw0[ind0] = dw0[ind0] | ((dw0[ind1] & 3) << 2); + dw0[ind1] = dw0[ind1] & 12; + dw0[ind1] = dw0[ind1] | tmp; + + +} + +FEC_STATIC LC3PLUS_EpModeRequest cw0_get_epmr(LC3_UINT8 *cw0, LC3_INT16 position) +{ + return (LC3PLUS_EpModeRequest)(cw0[position] & 3); +} + +FEC_STATIC LC3PLUS_EpModeRequest dw0_get_epmr(LC3_UINT8 *dw0, LC3_INT16 mode, LC3_INT16 slot_size) +{ + LC3_INT32 ncrc1; + LC3PLUS_EpModeRequest epmr; + + ncrc1 = crc1_bytes_by_mode1[mode]; + + if (slot_size == 40) + { + ncrc1 = crc1_bytes_by_mode0[mode]; + } + + epmr = (LC3PLUS_EpModeRequest)(dw0[2 * ncrc1 - 1] >> 2); + + + + return epmr; +} + + +FEC_STATIC LC3_INT16 fec_data_preproc(LC3_INT16 mode, LC3_INT16 epmr, LC3_UINT8 *iobuf, LC3_UINT8 *cw_buf, LC3_INT16 data_bytes, + LC3_INT16 slot_bytes, LC3_INT16 pc_split) +{ + LC3_INT16 data_offset, n_crc1, n_crc2; + LC3_INT32 i, j; + + data_offset = 2*(slot_bytes - data_bytes); + + /* extract and reverse data*/ + j = 2*slot_bytes - 1; + for (i = 0; i < data_bytes; i++) + { + cw_buf[j--] = iobuf[i] & 15; + cw_buf[j--] = iobuf[i] >> 4; + } + + /* add crc hashes */ + if (slot_bytes == 40) + { + n_crc1 = crc1_bytes_by_mode0[mode]; + } + else + { + n_crc1 = crc1_bytes_by_mode1[mode]; + } + + if (pc_split > 0 && mode > 1) + { + n_crc2 = crc2_bytes_by_mode[mode]; + } + else + { + n_crc2 = 0; + } + + if (n_crc2) + { + crc2(cw_buf + data_offset + 2 * data_bytes - pc_split, pc_split, cw_buf + data_offset - 2 * n_crc2, n_crc2, 0); + } + if (n_crc1) + { + crc1(cw_buf + data_offset, 2 * data_bytes - pc_split, epmr, cw_buf + data_offset - 2 * (n_crc1 + n_crc2), n_crc1, + 0); + } + + data_offset -= 2* (n_crc1 + n_crc2); + + dw0_bitswap(cw_buf + data_offset, mode, slot_bytes); + + + + return data_offset; +} + +void fec_encoder(LC3_INT16 mode, LC3_INT16 epmr, LC3_UINT8 *iobuf, LC3_INT16 data_bytes, LC3_INT16 slot_bytes, LC3_INT16 n_pccw) +{ + LC3_INT16 n_codewords, codeword_length, hd, redundancy_nibbles, cw_offset, dw_offset, pc_split; + LC3_INT32 i, j; + LC3_UINT8 cw_buf[2 * FEC_SLOT_BYTES_MAX]; + + cw_offset = 0; + dw_offset = 0; + pc_split = 0; + + n_codewords = get_n_codewords(slot_bytes); + + /* some sanity checks */ + { + LC3_INT32 tmp = slot_bytes; + + assert((slot_bytes >= FEC_SLOT_BYTES_MIN && slot_bytes <= FEC_SLOT_BYTES_MAX) && + "fec_encoder: slot_bytes out of range"); + tmp -= mode == 1 ? 1 : n_codewords * (mode - 1); // reed solomon redundancy + tmp -= slot_bytes == 40 ? crc1_bytes_by_mode0[mode] : crc1_bytes_by_mode1[mode]; // crc1 + tmp -= (n_pccw > 0) && (mode > 1) ? crc2_bytes_by_mode[mode] : 0; // crc2 + assert(data_bytes == tmp && "fec_encoder: inconsistent payload size"); + assert(n_codewords - n_pccw >= 6); + } + + /* data preproc: re-ordering and hash extension */ + pc_split = fec_get_n_pc(mode, n_pccw, slot_bytes); + + dw_offset = fec_data_preproc(mode, epmr, iobuf, cw_buf, data_bytes, slot_bytes, pc_split); + + /* encoding of first data word*/ + hd = hamming_distance_by_mode0[mode]; + redundancy_nibbles = hd - 1; + codeword_length = get_codeword_length(n_codewords, 2 * slot_bytes, 0); + + assert(codeword_length == (2 * slot_bytes - 1) / n_codewords + 1); + + for (j = redundancy_nibbles; j < codeword_length; (j++, dw_offset++)) + { + cw_buf[j] = cw_buf[dw_offset]; + } + + rs16_enc(cw_buf, codeword_length, hd, mode, 1); + + cw_offset += codeword_length; + + /* encoding of remaining data words */ + hd = hamming_distance_by_mode1[mode]; + redundancy_nibbles = hd - 1; + + for (i = 1; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, 2*slot_bytes, i); + + for (j = redundancy_nibbles; j < codeword_length; (j++, dw_offset++)) + { + cw_buf[cw_offset + j] = cw_buf[dw_offset]; + } + + rs16_enc(cw_buf + cw_offset, codeword_length, hd, mode, i < 6); + + cw_offset += codeword_length; + } + + assert(cw_offset == 2 * slot_bytes && dw_offset == 2 * slot_bytes); + + fec_interleave_pack(iobuf, cw_buf, 2 * slot_bytes, n_codewords); + + +} + +FEC_STATIC void rs16_enc(LC3_UINT8 *iobuf, LC3_INT16 codeword_length, LC3_INT16 hamming_distance, LC3_INT16 fec_mode, + LC3_INT16 signal_mode) +/* expects (data polynomial) * x^(hamming_distance - 1) in iobuf */ +{ + LC3_UINT8 const *gp; + LC3_UINT8 shift_buffer[RS16_CW_LEN_MAX + 1], lc; + LC3_INT32 i, j, deg_gp; + + memset(shift_buffer, 0, sizeof(shift_buffer)); + gp = rs16_gp_by_hd[hamming_distance]; + deg_gp = hamming_distance - 1; + + if (hamming_distance > 1) + { + assert(codeword_length > deg_gp); + + /* initialize redundancy part to zero */ + memset(iobuf, 0, deg_gp); + + /* initialize shift_buffer */ + memmove(shift_buffer + 1, iobuf + codeword_length - deg_gp, deg_gp); + + /* calculate remainder */ + for (i = codeword_length - deg_gp - 1; i >= 0; i--) + { + shift_buffer[0] = iobuf[i]; + lc = shift_buffer[deg_gp] << 4; + + for (j = deg_gp - 1; j >= 0; j--) + { + shift_buffer[j + 1] = GF16_ADD(shift_buffer[j], GF16_MUL0(gp[j], lc)); + } + } + + /* add remainder to shifted data polynomial */ + for (i = 0; i < deg_gp; i++) + { + iobuf[i] = shift_buffer[i + 1]; + } + + /* add signaling polynomial */ + if (signal_mode) + { + assert(codeword_length > EP_SIG_POLY_DEG); + for (i = 0; i <= EP_SIG_POLY_DEG; i++) + { + iobuf[i] = GF16_ADD(iobuf[i], sig_polys[fec_mode - 1][i]); + } + } + } + + +} + +FEC_STATIC void fec_interleave_pack(LC3_UINT8 *out, LC3_UINT8 *in, LC3_INT16 n_nibbles, LC3_INT16 n_codewords) +{ + LC3_INT16 out_offset, cw_offset, codeword_length; + LC3_INT32 i, j; + + out_offset = 0; + cw_offset = 0; + + /* initialize output buffer to zero */ + memset(out, 0, n_nibbles >> 1); + + /* interleave and pack codewords */ + for (i = 0; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, n_nibbles, i); + + for (j = 0; j < codeword_length; j++) + { + out_offset = n_nibbles - 1 - j*n_codewords - i; + out[out_offset >> 1] |= in[cw_offset] << ((out_offset & 1) << 2); + cw_offset = cw_offset + 1; + } + } + + + assert(cw_offset == n_nibbles); +} + +/* Decoder */ +FEC_STATIC void fec_data_postproc(LC3_INT16 mode, LC3PLUS_EpModeRequest *epmr, LC3_UINT8 *obuf, LC3_INT16 data_bytes, LC3_UINT8 *cw_buf, + LC3_INT16 slot_bytes, LC3_INT16 pc_split, LC3_INT32 *bfi) +{ + LC3_INT16 i; + LC3_INT16 n_crc1, n_crc2; + LC3_INT16 cw_buf_len; + LC3PLUS_EpModeRequest tmp_epmr; + + n_crc1 = crc1_bytes_by_mode1[mode]; + if (slot_bytes == 40) + { + n_crc1 = crc1_bytes_by_mode0[mode]; + } + + n_crc2 = 0; + if (pc_split > 0) + { + n_crc2 = crc2_bytes_by_mode[mode]; + } + + assert(n_crc1 == (slot_bytes == 40 ? crc1_bytes_by_mode0[mode] : crc1_bytes_by_mode1[mode])); + assert(n_crc2 == ((pc_split > 0) && (mode > 1) ? crc2_bytes_by_mode[mode] : 0)); + + cw_buf_len = 2 * (data_bytes + n_crc1 + n_crc2); + + if ((mode - 1)) + { + /* reverse bit-swap */ + dw0_bitswap(cw_buf, mode, slot_bytes); + tmp_epmr = dw0_get_epmr(cw_buf, mode, slot_bytes); + + if (crc1(cw_buf + ((n_crc1 + n_crc2) << 1), ((data_bytes << 1) - pc_split), tmp_epmr, cw_buf, n_crc1, 1)) + { + *bfi = 1; + + return; + } + else + { + *epmr = tmp_epmr; + } + } + + if (pc_split > 0 && *bfi != 2) + { + if (crc2(cw_buf + (((data_bytes + (n_crc1 + n_crc2)) << 1) - pc_split), pc_split, + cw_buf + (n_crc1 << 1), n_crc2, 1)) + { + *bfi = 2; + } + } + + for (i = 0; i < data_bytes; i++) + { + obuf[i] = (LC3_UINT8)(cw_buf[cw_buf_len - 2 * i - 1] | (cw_buf[cw_buf_len - 2 * i - 2] << 4)); + } + + +} + +LC3_INT32 fec_decoder(LC3_UINT8 *iobuf, LC3_INT16 slot_bytes, LC3_INT32 *data_bytes, LC3PLUS_EpModeRequest *epmr, LC3_INT16 ccc_flag, LC3_INT16 *n_pccw, + LC3_INT32 *bfi, LC3_INT16 *be_bp_left, LC3_INT16 *be_bp_right, LC3_INT16 *n_pc, LC3_INT16 *m_fec) +{ + LC3_UINT8 cw_buf[2 * FEC_SLOT_BYTES_MAX]; + LC3_UINT8 array_of_trust[MAX_LEN]; + LC3_INT16 i, j; + LC3_INT16 cw_offset, dw_offset; + LC3_INT16 n_codewords, redundancy_nibbles, codeword_length; + LC3_INT16 mode, error_report; + LC3_INT16 n_crc; + LC3_INT16 first_bad_cw; + LC3_INT16 pc_split; + + UNUSED(n_crc); + + + if (*bfi == 1) + { + + return ERROR_REPORT_BEC_MASK; + } + + if (slot_bytes < FEC_SLOT_BYTES_MIN || slot_bytes > FEC_SLOT_BYTES_MAX) + { + *bfi = 1; + + return ERROR_REPORT_BEC_MASK; + } + + if (ccc_flag == 0) + { + *be_bp_left = -1; + *be_bp_right = -1; + } + + n_codewords = get_n_codewords(slot_bytes); + + /* extract and de-interleave nibbles */ + fec_deinterleave_unpack(cw_buf, iobuf, 2 * slot_bytes, n_codewords); + + /* mode detection and error correction */ + mode = rs16_detect_and_correct(cw_buf, 2 * slot_bytes, n_codewords, epmr, &error_report, bfi, array_of_trust, + ccc_flag, n_pccw); + + /* for normal slots the maximal number of bit errors is limited */ +#ifndef APPLY_MAX_ERRORS + if (slot_bytes == 40 && mode > 0) + { + if ((error_report & ERROR_REPORT_BEC_MASK) > low_br_max_bit_errors_by_mode[mode]) + { + error_report &= ERROR_REPORT_BEC_MASK; + mode = -1; + *bfi = 1; + } + else + { + if ((error_report & ERROR_REPORT_BEC_MASK) > low_br_max_bit_errors_by_mode[2]) + { + error_report &= ~ERROR_REPORT_EP2_OK; + } + if ((error_report & ERROR_REPORT_BEC_MASK) > low_br_max_bit_errors_by_mode[3]) + { + error_report &= ~ERROR_REPORT_EP3_OK; + } + } + } +#endif + + if (*bfi == 1) + { + *data_bytes = 0; + + + return error_report; + } + + /* initialization for decoding */ + *data_bytes = fec_get_data_size(mode, ccc_flag, slot_bytes); + pc_split = fec_get_n_pc(mode, *n_pccw, slot_bytes); + n_crc = get_total_crc_size(slot_bytes, mode, pc_split); + + /* decoding of first code word */ + redundancy_nibbles = hamming_distance_by_mode0[mode] - 1; + codeword_length = get_codeword_length(n_codewords, slot_bytes + slot_bytes, 0); + + dw_offset = 0; + cw_offset = 0; + + for (j = redundancy_nibbles; j < codeword_length; j++) + { + cw_buf[dw_offset++] = cw_buf[j]; + } + cw_offset = cw_offset + codeword_length; + + /* decoding of remaining code words */ + redundancy_nibbles = hamming_distance_by_mode1[mode] - 1; + + for (i = 1; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, slot_bytes + slot_bytes, i); + + for (j = redundancy_nibbles; j < codeword_length; j++) + { + cw_buf[dw_offset++] = cw_buf[j + cw_offset]; + } + + cw_offset = cw_offset + codeword_length; + } + + /* data postproc: hash validation and re-ordering */ + + fec_data_postproc(mode, epmr, iobuf, *data_bytes, cw_buf, slot_bytes, pc_split, bfi); + + if (*bfi == 1) + { + *data_bytes = 0; + + error_report &= ERROR_REPORT_BEC_MASK; + + + return error_report; + } + + if (*bfi == 2) + { + first_bad_cw = 0; + array_of_trust[*n_pccw] = 0; + while (array_of_trust[first_bad_cw] != 0) + { + first_bad_cw = first_bad_cw + 1; + } + if (first_bad_cw == *n_pccw) + { + /* this is the case when CRC failed */ + *be_bp_left = 0; + } + else + { + *be_bp_left = 4*fec_get_n_pc(mode, first_bad_cw, slot_bytes); + } + + for (i = *n_pccw - 1; i >= 0; i--) + { + if (!array_of_trust[i]) + { + break; + } + } + if (i < 0) + { + i = *n_pccw - 1; + } + *be_bp_right = 4*fec_get_n_pc(mode, i + 1, slot_bytes) - 1; + } + + if (ccc_flag == 0) + { + *n_pc = pc_split; + *m_fec = mode; + } + + + return error_report; +} + +FEC_STATIC void fec_deinterleave_unpack(LC3_UINT8 *out, LC3_UINT8 *in, LC3_INT16 n_nibbles, LC3_INT16 n_codewords) +{ + LC3_INT16 in_offset, out_offset, codeword_length; + LC3_INT32 i, j; + + in_offset = 0; + out_offset = 0; + + /* unpack nibbles in input buffer and deinterleave codewords */ + for (i = 0; i < n_codewords; i++) + { + codeword_length = get_codeword_length(n_codewords, n_nibbles, i); + for (j = 0; j < codeword_length; (j++, out_offset++)) + { + in_offset = n_nibbles - 1 - j*n_codewords - i; + out[out_offset] = (in[in_offset >> 1] >> ((in_offset & 1) << 2)) & 15; + } + } + + + assert(out_offset == n_nibbles); + +} + +FEC_STATIC LC3PLUS_EpModeRequest fec_estimate_epmr_from_cw0(LC3_UINT8 *cw0, LC3_INT8 *t, LC3_UINT8 *syndromes, LC3_UINT8 *elp, LC3_INT8 *deg_elp, + LC3_UINT8 *err_pos, LC3_UINT8 *err_symb, LC3_INT16 n_codewords, LC3_INT16 n_symb) +{ + LC3_INT32 epmr_lowest_risk_exp; + LC3_INT32 start, inc, i, n_candidates; + LC3_INT32 first_codeword_length; + LC3_INT32 mode_counter; + LC3PLUS_EpModeRequest epmr; + + epmr_lowest_risk_exp = 0; + first_codeword_length = get_codeword_length(n_codewords, n_symb, 0); + start = 2; + inc = 1; + n_candidates = 0; + + /* test if first code word decodes in mode 0 or 1 without error correction */ + if ((syndromes[SYNDROME_IDX(0, 0)] | syndromes[SYNDROME_IDX(0, 0) + 1]) == 0 || + (syndromes[SYNDROME_IDX(1, 0)] | syndromes[SYNDROME_IDX(1, 0) + 1]) == 0) + { + epmr_lowest_risk_exp = risk_table_f[1][0].exponent; + } + /* test if first code word decodes in mode 2 or 3 with lower risk */ + if (deg_elp[DEG_ELP_IDX(2, 0)] <= t[2]) + { + if (risk_table_f[2][deg_elp[DEG_ELP_IDX(2, 0)]].exponent <= -8) + { + n_candidates++; + start = 2; + } + } + + if (deg_elp[DEG_ELP_IDX(3, 0)] <= t[3]) + { + if (risk_table_f[3][deg_elp[DEG_ELP_IDX(3, 0)]].exponent <= -8) + { + n_candidates++; + start = 3; + } + } + + if (n_candidates > 1) + { + /* decide on order if mode 2 and 3 are considered */ + if (simple_float_cmp(risk_table_f[2][deg_elp[DEG_ELP_IDX(2, 0)]], risk_table_f[3][deg_elp[DEG_ELP_IDX(3, 0)]]) < + 0) + { + start = 2; + inc = 1; + } + else + { + start = 3; + inc = -1; + } + } + + for (mode_counter = start, i = 0; i < n_candidates; mode_counter += inc, i++) + { + if (risk_table_f[mode_counter][deg_elp[DEG_ELP_IDX(mode_counter, 0)]].exponent < epmr_lowest_risk_exp) + { + if (!rs16_factorize_elp(err_pos + ERR_POS_IDX(mode_counter, 0), elp + ELP_IDX(mode_counter, 0), + deg_elp[DEG_ELP_IDX(mode_counter, 0)], first_codeword_length - 1)) + { + /* code word is decodable with error correction */ + epmr_lowest_risk_exp = risk_table_f[mode_counter][deg_elp[DEG_ELP_IDX(mode_counter, 0)]].exponent; + + rs16_calculate_errors(err_symb + ERR_SYMB_IDX(mode_counter, 0), err_pos + ERR_POS_IDX(mode_counter, 0), + syndromes + SYNDROME_IDX(mode_counter, 0), deg_elp[DEG_ELP_IDX(mode_counter, 0)], + t[mode_counter]); + + for (i = 0; i < deg_elp[DEG_ELP_IDX(mode_counter, 0)]; i++) + { + cw0[err_pos[ERR_POS_IDX(mode_counter, 0) + i]] = GF16_ADD( + cw0[err_pos[ERR_POS_IDX(mode_counter, 0) + i]], err_symb[ERR_SYMB_IDX(mode_counter, 0) + i]); + } + break; + } + } + } + + epmr = cw0_get_epmr(cw0, first_codeword_length - 1); + + if (epmr_lowest_risk_exp > -16) + { + epmr += 4; + } + if (epmr_lowest_risk_exp > -8) + { + epmr += 4; + } + + + return epmr; +} + +FEC_STATIC LC3_INT32 rs16_detect_and_correct(LC3_UINT8 *iobuf, LC3_INT32 n_symb, LC3_INT32 n_codewords, LC3PLUS_EpModeRequest *epmr, LC3_INT16 *error_report, + LC3_INT32 *bfi, LC3_UINT8 *array_of_trust, LC3_INT32 ccc_flag, LC3_INT16 *n_pccw) +{ + + LC3_INT16 mode_broken[4]; + LC3_INT16 error_report_ep_ok[4]; + LC3_INT16 i, cw_counter, mode_counter, cw_offset; + LC3_INT16 codeword_length; + LC3_INT16 mode; + LC3_INT16 mode_candidates[4]; + LC3_INT16 n_mode_candidates; + LC3_INT16 broken_cw, n_broken_cw; + LC3_INT16 j, idx_min; + LC3_INT16 n_pccw0; + simple_float val_min_f; + LC3_INT16 tmp; + LC3_INT16 epmr_position; + simple_float dec_risk_f[FEC_N_MODES]; + simple_float risk_min_f; + simple_float ep_risk_thresh; + LC3_INT32 epmr_dec_fail_increment; + LC3_UINT8 const *hamming_distance; + LC3_UINT8 syndromes[FEC_TOTAL_SYNDROME_SIZE]; + LC3_UINT8 elp[FEC_TOTAL_ELP_SIZE]; + LC3_UINT8 err_pos[FEC_TOTAL_ERR_POS_SIZE]; + LC3_UINT8 err_symb[FEC_TOTAL_ERROR_SIZE]; + LC3_INT8 t[FEC_N_MODES]; + LC3_INT8 deg_elp[FEC_TOTAL_DEG_ELP_SIZE]; + LC3_UINT8 blacklist[FEC_N_MODES]; + LC3_INT32 rop; + + void (*syndr_calc[3])(LC3_UINT8 *, LC3_UINT8 *, LC3_INT32); + rop = 0; + + /* initialization */ + blacklist[0] = 0; + blacklist[1] = 0; + blacklist[2] = 0; + blacklist[3] = 0; + mode_broken[0] = 0; + mode_broken[1] = 0; + mode_broken[2] = 0; + mode_broken[3] = 0; + error_report_ep_ok[0] = ERROR_REPORT_EP1_OK; + error_report_ep_ok[1] = ERROR_REPORT_EP2_OK; + error_report_ep_ok[2] = ERROR_REPORT_EP3_OK; + error_report_ep_ok[3] = ERROR_REPORT_EP4_OK; + hamming_distance = &hamming_distance_by_mode0[1]; + mode = -1; + n_mode_candidates = 0; + risk_min_f.mantissa = SIMPLE_FLOAT_1_MANTISSA; + risk_min_f.exponent = 0; + + if (n_symb <= 80) + { + ep_risk_thresh.mantissa = EP_RISK_THRESH_NS_M; + ep_risk_thresh.exponent = EP_RISK_THRESH_NS_E; + } + else + { + ep_risk_thresh.mantissa = EP_RISK_THRESH_OS_M; + ep_risk_thresh.exponent = EP_RISK_THRESH_OS_E; + } + + syndr_calc[0] = &rs16_calculate_two_syndromes; + syndr_calc[1] = &rs16_calculate_four_syndromes; + syndr_calc[2] = &rs16_calculate_six_syndromes; + + for (i = 0; i < FEC_N_MODES; i++) + { + t[i] = (hamming_distance[i] -1)/2; + } + + *error_report = 0; + *bfi = 0; + + /* mode detection (stage 1) */ + codeword_length = get_codeword_length(n_codewords, n_symb, 0); + + epmr_position = codeword_length - 1; + + rs16_calculate_two_syndromes(syndromes + SYNDROME_IDX(0, 0), iobuf, codeword_length - 1); + + if ((syndromes[0 + SYNDROME_IDX(0, 0)] | syndromes[1 + SYNDROME_IDX(0, 0)]) == 0) + { + + /* data validation for fec mode 1 */ + *epmr = cw0_get_epmr(iobuf, epmr_position); + + dw0_bitswap(iobuf + 2, 1, n_symb / 2); + + if (!crc1(iobuf + 8, n_symb - 8, *epmr, iobuf + 2, 3, 1)) + { + *error_report |= ERROR_REPORT_ALL_OK; + mode = 0; + + + rop = mode + 1; + goto CLEANUP; + } + else + { + /* reverse bit swap */ + dw0_bitswap(iobuf + 2, 1, n_symb / 2); + + *epmr += 4; + } + } + + blacklist[0] = 1; + + /* mode detection (stage 2) */ + + /* calculate syndromes of code words 0 to 5 and modes 1 to 3 */ + cw_offset = 0; + + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + + rs16_calculate_six_syndromes(syndromes + SYNDROME_IDX(1, cw_counter), iobuf + cw_offset, + codeword_length - 1); + + cw_offset += codeword_length; + + for (mode_counter = FEC_N_MODES - 1; mode_counter >= 1; mode_counter--) + { + for (i = 0; i < hamming_distance[mode_counter] - 1; i++) + { + syndromes[SYNDROME_IDX(mode_counter, cw_counter) + i] = GF16_ADD( + syndromes[SYNDROME_IDX(1, cw_counter) + i], sig_poly_syndr[mode_counter][i]); + } + } + } + + /* check for valid code words */ + for (mode_counter = 1; mode_counter < FEC_N_MODES; mode_counter++) + { + n_broken_cw = 0; + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + broken_cw = 0; + for (i = 0; i < hamming_distance[mode_counter] - 1; i++) + { + broken_cw |= syndromes[SYNDROME_IDX(mode_counter, cw_counter) + i]; + } + if (broken_cw != 0) + { + n_broken_cw ++; + } + } + + if (n_broken_cw == 0) + { + mode = mode_counter; + cw_offset = 0; + + *epmr = cw0_get_epmr(iobuf, epmr_position); + + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + for (i = 0; i <= EP_SIG_POLY_DEG; i++) + { + iobuf[cw_offset + i] = GF16_ADD(iobuf[cw_offset + i], sig_polys[mode][i]); + } + cw_offset += codeword_length; + } + } + } + + if (mode < 0) /* mode hasn't been detected so far -> errors occurred in transmission */ + { + /* calculate error locator polynomials for code words 0 to 5 */ + for (mode_counter = 1; mode_counter < FEC_N_MODES; mode_counter++) + { + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + deg_elp[DEG_ELP_IDX(mode_counter, cw_counter)] = rs16_calculate_elp( + elp + ELP_IDX(mode_counter, cw_counter), syndromes + SYNDROME_IDX(mode_counter, cw_counter), + t[mode_counter]); + if (deg_elp[DEG_ELP_IDX(mode_counter, cw_counter)] > t[mode_counter]) + { + blacklist[mode_counter] = 1; + break; + } + } + } + + /* risk analysis for mode candidate selection */ + for (mode_counter = 1; mode_counter < FEC_N_MODES; mode_counter++) + { + dec_risk_f[mode_counter].mantissa = SIMPLE_FLOAT_1_MANTISSA; + dec_risk_f[mode_counter].exponent = 0; + + if (blacklist[mode_counter] == 0) + { + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + dec_risk_f[mode_counter] = simple_float_mul( + dec_risk_f[mode_counter], + risk_table_f[mode_counter][deg_elp[DEG_ELP_IDX(mode_counter, cw_counter)]]); + } + + if (simple_float_cmp(dec_risk_f[mode_counter], ep_risk_thresh) <= 0) + { + mode_candidates[n_mode_candidates++] = mode_counter; + } + + if (simple_float_cmp(dec_risk_f[mode_counter], risk_min_f) < 0) + { + risk_min_f = dec_risk_f[mode_counter]; + } + } + } + assert(n_mode_candidates <= 4); // suppress false gcc warning when OPTIM=3 + + /* sort mode candidates by risk */ + for (i = 0; i < n_mode_candidates; i++) + { + idx_min = i; + val_min_f = dec_risk_f[mode_candidates[i]]; + + for (j = i + 1; j < n_mode_candidates; j++) + { + if (simple_float_cmp(dec_risk_f[mode_candidates[j]], val_min_f) < 0) + { + val_min_f = dec_risk_f[mode_candidates[j]]; + idx_min = j; + } + } + + if (idx_min > i) + { + tmp = mode_candidates[i]; + mode_candidates[i] = mode_candidates[idx_min]; + mode_candidates[idx_min] = tmp; + } + } + + /* try out candidate modes */ + for (i = 0; i < n_mode_candidates; i++) + { + mode = mode_candidates[i]; + + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + + if (deg_elp[DEG_ELP_IDX(mode, cw_counter)]) + { + if (rs16_factorize_elp(err_pos + ERR_POS_IDX(mode, cw_counter), elp + ELP_IDX(mode, cw_counter), + deg_elp[DEG_ELP_IDX(mode, cw_counter)], codeword_length - 1)) + { + /* elp did not split into distinct linear factors or error position was out of range */ + mode = -1; + break; + } + } + } + if (mode > 0) + { + /* decodable mode with lowest risk has been found */ + break; + } + } + + if (mode < 0) + { + /* no decodable mode has been found */ + *error_report = ERROR_REPORT_BEC_MASK; + *bfi = 1; + mode = -1; + + *epmr = fec_estimate_epmr_from_cw0(iobuf, t, syndromes, elp, deg_elp, err_pos, err_symb, n_codewords, + n_symb); + + + rop = mode; + goto CLEANUP; + } + + /* perform error correction */ + cw_offset = 0; + *error_report = 0; + for (cw_counter = 0; cw_counter < 6; cw_counter++) + { + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + + if (deg_elp[DEG_ELP_IDX(mode, cw_counter)]) + { + rs16_calculate_errors( + err_symb + ERR_SYMB_IDX(mode, cw_counter), err_pos + ERR_POS_IDX(mode, cw_counter), + syndromes + SYNDROME_IDX(mode, cw_counter), deg_elp[DEG_ELP_IDX(mode, cw_counter)], t[mode]); + + /* correct errors and sum up number of corrected bits */ + for (i = 0; i < deg_elp[DEG_ELP_IDX(mode, cw_counter)]; i++) + { + iobuf[err_pos[ERR_POS_IDX(mode, cw_counter) + i] + cw_offset] = + GF16_ADD(iobuf[err_pos[ERR_POS_IDX(mode, cw_counter) + i] + cw_offset], + err_symb[ERR_SYMB_IDX(mode, cw_counter) + i]); + *error_report += rs16_bit_count_table[err_symb[ERR_SYMB_IDX(mode, cw_counter) + i]]; + } + + for (i = 0; i < mode; i ++) + { + if(deg_elp[DEG_ELP_IDX(mode, cw_counter)] > i) + { + mode_broken[i] = 1; + } + } + + } + + for (i = 0; i <= EP_SIG_POLY_DEG; i++) + { + iobuf[cw_offset + i] = GF16_ADD(iobuf[cw_offset + i], sig_polys[mode][i]); + } + cw_offset += codeword_length; + } + + /* set epmr according to risk value of cw0 */ + epmr_dec_fail_increment = 8; + + if (risk_table_f[mode][deg_elp[DEG_ELP_IDX(mode, 0)]].exponent <= -8) + { + epmr_dec_fail_increment -= 4; + } + if (risk_table_f[mode][deg_elp[DEG_ELP_IDX(mode, 0)]].exponent <= -16) + { + epmr_dec_fail_increment -= 4; + } + + *epmr = (LC3PLUS_EpModeRequest)(cw0_get_epmr(iobuf, epmr_position) + epmr_dec_fail_increment); + } + + /* mode has been successfully detected -> now check and try to correct remaining code words*/ + *n_pccw = fec_get_n_pccw(n_symb / 2, mode + 1, ccc_flag); + if (ccc_flag == 0) + { + n_pccw0 = fec_get_n_pccw(n_symb / 2, mode + 1, ccc_flag); + *n_pccw = n_pccw0; + } + else + { + n_pccw0 = 0; + } + + for (cw_counter = 6; cw_counter < n_codewords; cw_counter++) + { + /* usual error correction scheme: syndromes -> elp's, errors, etc. */ + codeword_length = get_codeword_length(n_codewords, n_symb, cw_counter); + array_of_trust[n_codewords - 1 - cw_counter] = 1; + + syndr_calc[t[mode] - 1](syndromes, iobuf + cw_offset, codeword_length -1); + + deg_elp[0] = rs16_calculate_elp(elp, syndromes, t[mode]); + + for (i = 0; i < mode; i ++) + { + if (deg_elp[0] > i) + { + mode_broken[i] = 1; + } + } + + if (deg_elp[0] > t[mode]) + { + for (i = 0; i < 4; i ++) + { + mode_broken[i] = 1; + } + cw_offset += codeword_length; + if (cw_counter < n_codewords - n_pccw0) + { + *error_report = ERROR_REPORT_BEC_MASK; + mode = -1; + *bfi = 1; + break; + } + else + { + *bfi = 2; + array_of_trust[n_codewords - 1 - cw_counter] = 0; + continue; + } + } + + if (deg_elp[0]) + { + if (rs16_factorize_elp(err_pos, elp, deg_elp[0], codeword_length - 1)) + { + cw_offset += codeword_length; + for (i = 0; i < 4; i ++) + { + mode_broken[i] = 1; + } + if (cw_counter < n_codewords - n_pccw0) + { + *error_report = ERROR_REPORT_BEC_MASK; + mode = -1; + *bfi = 1; + + break; + } + else + { + *bfi = 2; + array_of_trust[n_codewords - 1 - cw_counter] = 0; + continue; + } + } + + rs16_calculate_errors(err_symb, err_pos, syndromes, deg_elp[0], t[mode]); + + /* correct errors and sum up number of corrected bits */ + for (i = 0; i < deg_elp[0]; i++) + { + iobuf[err_pos[i] + cw_offset] = GF16_ADD(iobuf[err_pos[i] + cw_offset], err_symb[i]); + *error_report += rs16_bit_count_table[err_symb[i]]; + } + } + cw_offset += codeword_length; + if (risk_table_f[mode][deg_elp[0]].exponent > -16) + { + array_of_trust[n_codewords - 1 - cw_counter] = 0; + } + } + + *error_report &= ERROR_REPORT_BEC_MASK; + for (i = 0; i < 4; i ++) + { + if (!mode_broken[i]) + { + *error_report |= error_report_ep_ok[i]; + } + } + + if (mode >= 0) + { + rop = mode + 1; + } else { + rop = -1; + } + + + +CLEANUP: + return rop; +} + +FEC_STATIC void rs16_calculate_six_syndromes(LC3_UINT8 *syndromes, LC3_UINT8 *cw, LC3_INT32 cw_poly_deg) +{ + LC3_INT32 i; + LC3_UINT8 buffer[15]; + + assert(cw_poly_deg >= 12); + + for (i = 0; i <= cw_poly_deg; i++) + { + buffer[i] = cw[i]; + } + + syndromes[0] = buffer[0]; + syndromes[1] = buffer[0]; + syndromes[2] = buffer[0]; + syndromes[3] = buffer[0]; + syndromes[4] = buffer[0]; + syndromes[5] = buffer[0]; + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[1], 32)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[1], 64)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[1], 128)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[1], 48)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[1], 96)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[1], 192)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[2], 64)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[2], 48)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[2], 192)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[2], 80)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[2], 112)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[2], 240)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[3], 128)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[3], 192)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[3], 160)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[3], 240)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[3], 16)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[3], 128)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[4], 48)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[4], 80)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[4], 240)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[4], 32)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[4], 96)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[4], 160)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[5], 96)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[5], 112)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[5], 16)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[5], 96)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[5], 112)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[5], 16)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[6], 192)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[6], 240)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[6], 128)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[6], 160)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[6], 16)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[6], 192)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[7], 176)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[7], 144)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[7], 192)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[7], 208)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[7], 96)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[7], 240)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[8], 80)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[8], 32)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[8], 160)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[8], 64)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[8], 112)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[8], 128)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[9], 160)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[9], 128)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[9], 240)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[9], 192)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[9], 16)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[9], 160)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[10], 112)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[10], 96)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[10], 16)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[10], 112)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[10], 96)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[10], 16)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[11], 224)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[11], 176)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[11], 128)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[11], 144)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[11], 112)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[11], 192)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[12], 240)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[12], 160)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[12], 192)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[12], 128)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[12], 16)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[12], 240)); + + if (cw_poly_deg >= 13) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[13], 208)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[13], 224)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[13], 160)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[13], 176)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[13], 96)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[13], 128)); + } + + if (cw_poly_deg >= 14) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[14], 144)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[14], 208)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[14], 240)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[14], 224)); + syndromes[4] = GF16_ADD(syndromes[4], GF16_MUL0(buffer[14], 112)); + syndromes[5] = GF16_ADD(syndromes[5], GF16_MUL0(buffer[14], 160)); + } + + +} + +FEC_STATIC void rs16_calculate_four_syndromes(LC3_UINT8 *syndromes, LC3_UINT8 *cw, LC3_INT32 cw_poly_deg) +{ + LC3_INT32 i; + LC3_UINT8 buffer[15]; + + assert(cw_poly_deg >= 12); + + for (i = 0; i <= cw_poly_deg; i++) + { + buffer[i] = cw[i]; + } + + syndromes[0] = buffer[0]; + syndromes[1] = buffer[0]; + syndromes[2] = buffer[0]; + syndromes[3] = buffer[0]; + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[1], 32)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[1], 64)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[1], 128)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[1], 48)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[2], 64)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[2], 48)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[2], 192)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[2], 80)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[3], 128)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[3], 192)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[3], 160)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[3], 240)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[4], 48)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[4], 80)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[4], 240)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[4], 32)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[5], 96)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[5], 112)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[5], 16)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[5], 96)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[6], 192)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[6], 240)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[6], 128)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[6], 160)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[7], 176)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[7], 144)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[7], 192)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[7], 208)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[8], 80)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[8], 32)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[8], 160)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[8], 64)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[9], 160)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[9], 128)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[9], 240)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[9], 192)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[10], 112)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[10], 96)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[10], 16)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[10], 112)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[11], 224)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[11], 176)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[11], 128)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[11], 144)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[12], 240)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[12], 160)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[12], 192)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[12], 128)); + + if (cw_poly_deg >= 13) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[13], 208)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[13], 224)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[13], 160)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[13], 176)); + } + + if (cw_poly_deg >= 14) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[14], 144)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[14], 208)); + syndromes[2] = GF16_ADD(syndromes[2], GF16_MUL0(buffer[14], 240)); + syndromes[3] = GF16_ADD(syndromes[3], GF16_MUL0(buffer[14], 224)); + } + + +} + +FEC_STATIC void rs16_calculate_two_syndromes(LC3_UINT8 *syndromes, LC3_UINT8 *cw, LC3_INT32 cw_poly_deg) +{ + LC3_INT32 i; + LC3_UINT8 buffer[15]; + + assert(cw_poly_deg >= 12); + + for (i = 0; i <= cw_poly_deg; i++) + { + buffer[i] = cw[i]; + } + + syndromes[0] = buffer[0]; + syndromes[1] = buffer[0]; + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[1], 32)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[1], 64)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[2], 64)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[2], 48)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[3], 128)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[3], 192)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[4], 48)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[4], 80)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[5], 96)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[5], 112)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[6], 192)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[6], 240)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[7], 176)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[7], 144)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[8], 80)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[8], 32)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[9], 160)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[9], 128)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[10], 112)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[10], 96)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[11], 224)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[11], 176)); + + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[12], 240)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[12], 160)); + + if (cw_poly_deg >= 13) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[13], 208)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[13], 224)); + } + + if (cw_poly_deg >= 14) + { + syndromes[0] = GF16_ADD(syndromes[0], GF16_MUL0(buffer[14], 144)); + syndromes[1] = GF16_ADD(syndromes[1], GF16_MUL0(buffer[14], 208)); + } + + +} + +FEC_STATIC LC3_INT8 rs16_calculate_elp(LC3_UINT8 *elp, LC3_UINT8 *syndromes, LC3_INT16 t) +/* calculates error locator polynomial vie Petterson's algorithm */ +{ + LC3_INT8 ret; + LC3_UINT8 det, det_inv, aux, all_s, *s; + LC3_UINT8 s22, s33, s44, s13, s14, s15; + LC3_UINT8 s23, s24, s25, s34, s35; + LC3_UINT8 a, b, c, d, e, f; + + ret = 0; + all_s = 0; + s = syndromes; + elp[0] = 1; + memset(elp + 1, 0, 3); + + switch (t) + { + case 3: + { + /* check for errors */ + all_s = s[0] | s[1] | s[2] | s[3] | s[4] | s[5]; + + if (all_s == 0) + { + break; + } + + /* assume 3 errors */ + s22 = GF16_MUL(s[1], s[1]); + s33 = GF16_MUL(s[2], s[2]); + s44 = GF16_MUL(s[3], s[3]); + s13 = GF16_MUL(s[0], s[2]); + + det = GF16_ADD(GF16_ADD(GF16_MUL(s13, s[4]), GF16_MUL(s44, s[0])), + GF16_ADD(GF16_MUL(s22, s[4]), GF16_MUL(s33, s[2]))); + + if (det) + { + det_inv = gf16_inv_table[det] << 4; + + s14 = GF16_MUL(s[0], s[3]); + s15 = GF16_MUL(s[0], s[4]); + + s23 = GF16_MUL(s[1], s[2]); + s24 = GF16_MUL(s[1], s[3]); + s25 = GF16_MUL(s[1], s[4]); + + s34 = GF16_MUL(s[2], s[3]); + s35 = GF16_MUL(s[2], s[4]); + + a = GF16_ADD(s35, s44) << 4; + b = GF16_ADD(s15, s33) << 4; + c = GF16_ADD(s13, s22) << 4; + d = GF16_ADD(s34, s25) << 4; + e = GF16_ADD(s23, s14) << 4; + f = GF16_ADD(s24, s33) << 4; + + aux = GF16_ADD(GF16_ADD(GF16_MUL0(a, s[3]), GF16_MUL0(d, s[4])), GF16_MUL0(f, s[5])); + elp[3] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_ADD(GF16_MUL0(d, s[3]), GF16_MUL0(b, s[4])), GF16_MUL0(e, s[5])); + elp[2] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_ADD(GF16_MUL0(f, s[3]), GF16_MUL0(e, s[4])), GF16_MUL0(c, s[5])); + elp[1] = GF16_MUL0(aux, det_inv); + + if (elp[3] == 0) + { + ret = t+1; + } + else + { + ret = 3; + } + break; + } + + /* assume two errors */ + det = GF16_ADD(GF16_MUL(syndromes[0], syndromes[2]), GF16_MUL(syndromes[1], syndromes[1])); + + if (det) + { + det_inv = gf16_inv_table[det] << 4; + + aux = GF16_ADD(GF16_MUL(syndromes[1], syndromes[2]), GF16_MUL(syndromes[0], syndromes[3])); + elp[1] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_MUL(syndromes[2], syndromes[2]), GF16_MUL(syndromes[1], syndromes[3])); + elp[2] = GF16_MUL0(aux, det_inv); + + /* check remaining LSF relations */ + aux = GF16_ADD(GF16_ADD(GF16_MUL(elp[2], s[2]), GF16_MUL(elp[1], s[3])), s[4]) + | GF16_ADD(GF16_ADD(GF16_MUL(elp[2], s[3]), GF16_MUL(elp[1], s[4])), s[5]); + + aux |= elp[2] == 0; + + if (aux != 0) + { + ret = t + 1; + } + else + { + ret = 2; + } + break; + } + + /* assume one error */ + if (syndromes[0] != 0) + { + elp[1] = GF16_MUL(syndromes[1], gf16_inv_table[syndromes[0]]); + + /* check remaining LSF relations */ + aux = GF16_ADD(GF16_MUL(elp[1], s[1]), s[2]) + | GF16_ADD(GF16_MUL(elp[1], s[2]), s[3]) + | GF16_ADD(GF16_MUL(elp[1], s[3]), s[4]) + | GF16_ADD(GF16_MUL(elp[1], s[4]), s[5]); + + aux |= elp[1] == 0; + + if (aux != 0) + { + ret = t + 1; + } + else + { + ret = 1; + } + break; + } + + ret = t + 1; + break; + } + case 2: + { + all_s = s[0] | s[1] | s[2] | s[3]; + + if (all_s == 0) + { + break; + } + + /* assume two errors */ + det = GF16_ADD(GF16_MUL(syndromes[0], syndromes[2]), GF16_MUL(syndromes[1], syndromes[1])); + + if (det) + { + det_inv = gf16_inv_table[det] << 4; + + aux = GF16_ADD(GF16_MUL(syndromes[1], syndromes[2]), GF16_MUL(syndromes[0], syndromes[3])); + elp[1] = GF16_MUL0(aux, det_inv); + + aux = GF16_ADD(GF16_MUL(syndromes[2], syndromes[2]), GF16_MUL(syndromes[1], syndromes[3])); + elp[2] = GF16_MUL0(aux, det_inv); + + if (elp[2] == 0) + { + ret = t + 1; + } + else + { + ret = 2; + } + break; + } + + /* assume one error */ + if (syndromes[0] != 0) + { + elp[1] = GF16_MUL(syndromes[1], gf16_inv_table[syndromes[0]]); + + /* check remaining LSF relation */ + aux = GF16_ADD(GF16_MUL(elp[1], s[1]), s[2]) | GF16_ADD(GF16_MUL(elp[1], s[2]), s[3]); + aux |= elp[1] == 0; + + if (aux != 0) + { + ret = t + 1; + } + else + { + ret = 1; + } + break; + } + + ret = t + 1; + break; + } + case 1: + { + all_s = s[0] | s[1]; + + if (all_s == 0) + { + break; + } + + if (syndromes[0] != 0) + { + elp[1] = GF16_MUL(syndromes[1], gf16_inv_table[syndromes[0]]); + if (elp[1] == 0) + { + ret = t + 1; + } + else + { + ret = 1; + } + break; + } + + ret = t + 1; + break; + } + default: assert(0 && "calculating elp of this degree not implemented"); + } + + + return ret; +} + +FEC_STATIC LC3_INT16 rs16_factorize_elp(LC3_UINT8 *err_pos, LC3_UINT8 *elp, LC3_INT16 deg_elp, LC3_INT16 max_pos) +{ + LC3_UINT8 beta, gamma; + LC3_INT16 zeros, err_pos0, err_pos1, err_pos2, ret; + + beta = 0; + gamma = 0; + zeros = 0; + ret = 0; + + switch (deg_elp) + { + case 0: break; + + case 1: + err_pos0 = gf16_log_g[elp[1]]; + if (err_pos0 > max_pos) + { + ret = 1; + break; + } + + err_pos[0] = (LC3_UINT8)err_pos0; + break; + + case 2: + zeros = rs16_elp_deg2_table[elp[1] | (elp[2] << 4)]; + if (zeros == 0) + { + + return 1; + } + + err_pos0 = zeros & 15; + err_pos1 = (zeros >> 4) & 15; + + if (err_pos0 > max_pos || err_pos1 > max_pos) + { + ret = 1; + break; + } + + err_pos[0] = (LC3_UINT8)err_pos0; + err_pos[1] = (LC3_UINT8)err_pos1; + break; + + case 3: + /* beta = a*a + b, gamma = a*b + c */ + beta = GF16_ADD(GF16_MUL(elp[1], elp[1]), elp[2]); + gamma = GF16_ADD(GF16_MUL(elp[1], elp[2]), elp[3]); + zeros = rs16_elp_deg3_table[beta | gamma << 4]; + + if (zeros == 0) + /* elp does not split over GF(16) or has multiple zeros */ + { + ret = 1; + break; + } + + /* remove shift from zeros */ + err_pos0 = GF16_ADD(zeros & 15, elp[1]); + err_pos1 = GF16_ADD((zeros >> 4) & 15, elp[1]); + err_pos2 = GF16_ADD((zeros >> 8) & 15, elp[1]); + + if (err_pos0 == 0 || err_pos1 == 0 || err_pos2 == 0) + { + + return 1; + } + + err_pos0 = gf16_log_g[err_pos0]; + err_pos1 = gf16_log_g[err_pos1]; + err_pos2 = gf16_log_g[err_pos2]; + + if (err_pos0 > max_pos || err_pos1 > max_pos || err_pos2 > max_pos) + { + ret = 1; + break; + } + + err_pos[0] = (LC3_UINT8)err_pos0; + err_pos[1] = (LC3_UINT8)err_pos1; + err_pos[2] = (LC3_UINT8)err_pos2; + + break; + + default: assert(0 && "invalid degree in rs16_error_locator"); + } + + + return ret; +} + +FEC_STATIC void rs16_calculate_errors(LC3_UINT8 *err_symb, LC3_UINT8 *err_pos, LC3_UINT8 *syndromes, LC3_INT8 deg_elp, LC3_INT8 t) +{ + LC3_UINT8 det_inv; + LC3_UINT8 x0, x1, x2; + LC3_UINT8 x0sq, x1sq, x2sq; + LC3_UINT8 c0, c1, c2; + LC3_UINT8 s0, s1, s2; + LC3_UINT8 tmp; + + UNUSED(t); + + assert(deg_elp <= t); + + switch (deg_elp) + { + case 0: break; + + case 1: + err_symb[0] = GF16_MUL(gf16_g_pow[15 - err_pos[0]], syndromes[0]); + + break; + + case 2: + s0 = (LC3_UINT8) (syndromes[0] << 4); + s1 = (LC3_UINT8) (syndromes[1] << 4); + + x0 = gf16_g_pow[err_pos[0]]; + x1 = gf16_g_pow[err_pos[1]]; + + x0sq = GF16_MUL(x0, x0); + x1sq = GF16_MUL(x1, x1); + + tmp = GF16_ADD(GF16_MUL(x0sq, x1), GF16_MUL(x1sq, x0)); + det_inv = gf16_inv_table[tmp] << 4; + + tmp = GF16_ADD(GF16_MUL0(x1sq, s0), GF16_MUL0(x1, s1)); + err_symb[0] = GF16_MUL0(tmp, det_inv); + + tmp = GF16_ADD(GF16_MUL0(x0sq, s0), GF16_MUL0(x0, s1)); + err_symb[1] = GF16_MUL0(tmp, det_inv); + + break; + + case 3: + s0 = syndromes[0] << 4; + s1 = syndromes[1] << 4; + s2 = syndromes[2] << 4; + + x0 = gf16_g_pow[err_pos[0]]; + x1 = gf16_g_pow[err_pos[1]]; + x2 = gf16_g_pow[err_pos[2]]; + + x0sq = GF16_MUL(x0, x0); + x1sq = GF16_MUL(x1, x1); + x2sq = GF16_MUL(x2, x2); + + tmp = GF16_MUL(GF16_ADD(x1, x0), GF16_ADD(x2, x0)); + tmp = GF16_MUL(GF16_ADD(x2, x1), tmp); + det_inv = gf16_inv_table[tmp] << 4; + + c0 = GF16_ADD(GF16_MUL(x1, x2sq), GF16_MUL(x2, x1sq)); + c1 = GF16_ADD(x2sq, x1sq); + c2 = GF16_ADD(x2, x1); + + err_symb[0] = GF16_ADD(GF16_ADD(GF16_MUL0(c0, s0), GF16_MUL0(c1, s1)), GF16_MUL0(c2, s2)); + + c0 = GF16_ADD(GF16_MUL(x0, x2sq), GF16_MUL(x2, x0sq)); + c1 = GF16_ADD(x2sq, x0sq); + c2 = GF16_ADD(x2, x0); + + err_symb[1] = GF16_ADD(GF16_ADD(GF16_MUL0(c0, s0), GF16_MUL0(c1, s1)), GF16_MUL0(c2, s2)); + + c0 = GF16_ADD(GF16_MUL(x0, x1sq), GF16_MUL(x1, x0sq)); + c1 = GF16_ADD(x1sq, x0sq); + c2 = GF16_ADD(x1, x0); + + err_symb[2] = GF16_ADD(GF16_ADD(GF16_MUL0(c0, s0), GF16_MUL0(c1, s1)), GF16_MUL0(c2, s2)); + + tmp = GF16_MUL0(err_symb[0], det_inv); + err_symb[0] = GF16_MUL(tmp, gf16_inv_table[x0]); + + tmp = GF16_MUL0(err_symb[1], det_inv); + err_symb[1] = GF16_MUL(tmp, gf16_inv_table[x1]); + + tmp = GF16_MUL0(err_symb[2], det_inv); + err_symb[2] = GF16_MUL(tmp, gf16_inv_table[x2]); + + break; + + default: assert(0 && "method not implemented\n"); break; + } + + +} + +/* hash functions for data validation */ + +/* hamming distance 4 */ +static const LC3_UINT32 crc14_mask[16] = {0, 17989, 35978, 51919, 71956, 89937, 103838, 119771, + 143912, 160877, 179874, 194791, 207676, 224633, 239542, 254451}; + +/* hamming distance 4 */ +static const LC3_UINT32 crc22_mask[16] = {0, 4788009, 9576018, 14356859, 19152036, 23933837, 28713718, 33500639, + 33650273, 38304072, 43214899, 47867674, 52775621, 57427436, 62346391, 67001278}; + +FEC_STATIC LC3_INT16 crc1(LC3_UINT8 *data, LC3_INT16 data_size, LC3_INT16 epmr, LC3_UINT8 *hash_val, LC3_INT16 hash_size, LC3_INT16 check) +{ + LC3_UINT32 const *mask; + LC3_INT32 shift, i, fail; + LC3_UINT32 rem; + + fail = 0; + rem = 0; + + assert(hash_size > 0); + + switch (hash_size) + { + case 2: + shift = 14; + mask = crc14_mask; + break; + case 3: + shift = 22; + mask = crc22_mask; + break; + default: + shift = 0; + mask = 0; + assert(0 && "crc hash size not implemented"); + } + + /* data array contains 4-bit words */ + for (i = data_size - 1; i >= 0; i--) + { + rem = (rem << 4) ^ data[i]; + rem ^= mask[(rem >> shift) & 15]; + } + + rem = (rem << 4) ^ (epmr << 2); + rem ^= mask[(rem >> shift) & 15]; + + for (i = 0; i < 2 * hash_size - 1; i++) + { + rem <<= 4; + rem ^= mask[(rem >> shift) & 15]; + } + + rem ^= ((LC3_UINT32) epmr) << shift; + + if (check) + { + /* test hash value */ + for (i = 0; i < 2 * hash_size; i++) + { + fail |= hash_val[i] ^ ((rem >> (4*i)) & 15); + } + } + else + { + /* write hash value */ + for (i = 0; i < 2 * hash_size; i++) + { + hash_val[i] = (LC3_UINT8) ((rem >> (4*i)) & 15); + } + } + + + return fail; +} + +/* hamming distance = 4 */ +static const LC3_UINT32 crc16_mask[16] = {0, 107243, 190269, 214486, 289937, 380538, 428972, 469319, + 579874, 621513, 671263, 761076, 832947, 857944, 938638, 1044581}; + +FEC_STATIC LC3_INT16 crc2(LC3_UINT8 *data, LC3_INT16 data_size, LC3_UINT8 *hash_val, LC3_INT16 hash_size, LC3_INT16 check) +{ + LC3_UINT32 const *mask; + LC3_INT32 shift, i, fail; + LC3_UINT32 rem; + + fail = 0; + rem = 0; + + assert(hash_size > 0); + + switch (hash_size) + { + case 2: + shift = 16; + mask = crc16_mask; + break; + default: + shift = 0; + mask = 0; + assert(0 && "crc hash size not implemented"); + } + + /* data array contains 4-bit words */ + for (i = data_size - 1; i >= 0; i--) + { + rem = (rem << 4) ^ data[i]; + rem ^= mask[(rem >> shift) & 15]; + } + + for (i = 0; i < 2 * hash_size; i++) + { + rem <<= 4; + rem ^= mask[(rem >> shift) & 15]; + } + + if (check) + { + /* test hash value */ + for (i = 0; i < 2 * hash_size; i++) + { + fail |= hash_val[i] ^ ((rem >> (4*i)) & 15); + } + } + else + { + /* write hash value */ + for (i = 0; i < 2 * hash_size; i++) + { + hash_val[i] = (LC3_UINT8) ((rem >> (4*i)) & 15); + } + } + + + return fail; +} + +/* simple float implementation */ +FEC_STATIC simple_float simple_float_mul(simple_float op1, simple_float op2) +{ + simple_float rop; + LC3_INT32 aux; + + aux = (op1.mantissa * op2.mantissa) >> 14; + rop.exponent = op1.exponent + op2.exponent; + if (aux & 32768L) + { + aux >>= 1; + rop.exponent ++; + } + rop.mantissa = (LC3_INT16) aux; + + + return rop; +} + +/* Auxiliary */ + +FEC_STATIC LC3_INT16 simple_float_cmp(simple_float op1, simple_float op2) +/* returns 1 if op1 > op2, 0 if op1 = op2, and -1 if op1 < op2 */ +{ + LC3_INT16 rval; + LC3_INT16 mdiff; + LC3_INT16 ediff; + + rval = 0; + + ediff = op1.exponent - op2.exponent; + mdiff = (LC3_INT16) op1.mantissa - (LC3_INT16) op2.mantissa; + + if (ediff == 0) + { + if (mdiff > 0) + { + rval = 1; + } + if (mdiff < 0) + { + rval = -1; + } + } + else + { + if (ediff > 0) + { + rval = 1; + } + if (ediff < 0) + { + rval = -1; + } + } + + + return rval; +} + diff --git a/lc3plus/apply_global_gain.c b/lc3plus/apply_global_gain.c new file mode 100644 index 0000000000000000000000000000000000000000..c67432e2c3bebcc30da1912ea0c63813f3471d46 --- /dev/null +++ b/lc3plus/apply_global_gain.c @@ -0,0 +1,21 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processApplyGlobalGain_fl(LC3_FLOAT x[], LC3_INT xLen, LC3_INT global_gain_idx, LC3_INT global_gain_off) +{ + LC3_FLOAT gg = 0; + + gg = LC3_POW(10, (LC3_FLOAT)(global_gain_idx + global_gain_off) / 28); + + mult_const(x, gg, xLen); +} diff --git a/lc3plus/ari_codec.c b/lc3plus/ari_codec.c new file mode 100644 index 0000000000000000000000000000000000000000..80c75fcf0cebcf278e4522643ab460beb46cc5bf --- /dev/null +++ b/lc3plus/ari_codec.c @@ -0,0 +1,1122 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static void ac_shift_fl(Encoder_State_fl* st); +static void ac_encode_fl(Encoder_State_fl* st, LC3_INT sym_freq, LC3_INT cum_freq); +static void tns_order_freq_enc(LC3_INT enable_lpc_weighting, LC3_INT order, LC3_INT* symfreq, LC3_INT* cumfreq); +static void tns_coef_freq_enc(LC3_INT k, LC3_INT idx, LC3_INT* symfreq, LC3_INT* cumfreq); +static void ac_freq_fl(LC3_INT pki, LC3_INT s, LC3_INT* symfreq, LC3_INT* cumfreq); +static void ac_finalize_fl(Encoder_State_fl* st); +static void write_uint_forward_fl(Encoder_State_fl* st, LC3_INT val, LC3_INT numbits); +static void ari_enc_init(Encoder_State_fl* st, LC3_UINT8* bytes, LC3_INT* bp_side, LC3_INT* mask_side); +static LC3_INT sign(LC3_INT x); +static void read_bit_fl(LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* bit, LC3_INT *bp, Decoder_State_fl* st_fl, LC3_INT from_left); +static void ac_dec_init_fl(LC3_UINT8* ptr, LC3_INT* bp, Decoder_State_fl* st_fl, LC3_INT from_left, LC3_INT mask_side, LC3_INT *bp_side); +static void tns_order_freq(LC3_INT enable_lpc_weighting, LC3_INT* symfreq, LC3_INT* cumfreq, LC3_INT* numsym); +static void tns_coef_freq(LC3_INT k, LC3_INT* symfreq, LC3_INT* cumfreq, LC3_INT* numsym); +static LC3_INT ac_decode_fl(Decoder_State_fl* st, LC3_INT* sym_freq, LC3_INT* cum_freq, LC3_INT num_sym, LC3_UINT8* ptr, LC3_INT* bp, LC3_INT from_left, LC3_INT mask_side, LC3_INT *bp_side); +static void ac_freq(LC3_INT pki, LC3_INT* symfreq, LC3_INT* cumfreq, LC3_INT* numsym); +static void findNonZero(LC3_INT* in, LC3_INT* out, LC3_INT len, LC3_INT* outLen); +static void pc_check_bytes(LC3_INT32* bp, Decoder_State_fl* st_fl, LC3_INT32 from_left, LC3_INT32 mask_side, LC3_INT32 *bp_side); +static void calculate_nfseed(LC3_INT *x, LC3_INT L_spec, LC3_INT *nf_seed); + +void calculate_nfseed(LC3_INT *x, LC3_INT L_spec, LC3_INT *nf_seed) +{ + LC3_INT k = 0; + + *nf_seed = 0; + + for (k = 0; k < L_spec; k++) { + *nf_seed = *nf_seed + (abs(x[k]) & 32767) * k; + } + *nf_seed = *nf_seed & 65535; + + if (*nf_seed >= 32768) { + *nf_seed = *nf_seed - 65536; + } +} + +static void pc_check_bytes(LC3_INT32* bp, Decoder_State_fl* st_fl, LC3_INT32 from_left, LC3_INT32 mask_side, LC3_INT32 *bp_side) +{ + LC3_INT32 bp_local, bp_side_local, offset; + + if (st_fl->pc_bytes > 0) + { + if (!from_left && mask_side != 1) + { + return; + } + + if (st_fl->pc_c_bp_side > 0 && *bp_side < 0) + { + assert(mask_side == 1); + assert(st_fl->pc_b_right != -1); + *bp_side = st_fl->pc_b_right; + return; + } + + bp_local = *bp; + bp_side_local = *bp_side; + + if (from_left) + { + if (mask_side == 1) + { + bp_side_local = bp_side_local + 1; + } + } else { + bp_local = bp_local - 1; + } + + if (st_fl->pc_b_right == -1) + { + offset = -1; + if (!st_fl->pc_enc) + { + offset = offset + st_fl->pc_bytes; + } + + if ((bp_side_local + offset - bp_local) == st_fl->pc_bytes) + { + st_fl->pc_b_left = bp_local + 1; + st_fl->pc_b_right = bp_side_local - 1; + + if (st_fl->pc_enc) + { + st_fl->pc_return = 1; + return; + } + } + } + + if (!st_fl->pc_enc && st_fl->pc_b_right > -1) + { + if (from_left && *bp == st_fl->pc_b_left) + { + *bp = 0; + st_fl->pc_c_bp = 1; + } + + if (!from_left && bp_side_local == st_fl->pc_b_right) + { + *bp_side = st_fl->pc_bytes - 1; + st_fl->pc_c_bp_side = 1; + } + + if (st_fl->pc_bfi == 2) + { + + if ((st_fl->pc_c_bp && (*bp + 1) >= st_fl->pc_be_bp_left) || (st_fl->pc_c_bp_side && (*bp_side + 1) <= st_fl->pc_be_bp_right)) + { + st_fl->pc_bbi = 2; + } else if ((st_fl->pc_c_bp && *bp >= 0) || (st_fl->pc_c_bp_side && *bp_side <= (st_fl->pc_bytes - 1))) + { + st_fl->pc_bbi = 1; + } + } + } + } + + return; +} + + +void ac_dec_init_fl(LC3_UINT8* ptr, LC3_INT* bp, Decoder_State_fl* st_fl, LC3_INT from_left, LC3_INT mask_side, LC3_INT *bp_side) +{ + LC3_INT i = 0; + + if (!st_fl->pc_enc) + { + *bp = *bp + st_fl->pc_bytes; + } + + st_fl->ac_low_fl = 0; + + st_fl->ac_range_fl = (LC3_UINT32)pow(2, 24) - (LC3_UINT32)1; + for (i = 0; i < 3; i++) { + pc_check_bytes(bp, st_fl, from_left, mask_side, bp_side); + + st_fl->ac_low_fl = (st_fl->ac_low_fl << 8) + (LC3_UINT32)ptr[*bp]; + *bp = *bp + 1; + } + + st_fl->BER_detect = 0; +} + +void tns_order_freq(LC3_INT enable_lpc_weighting, LC3_INT* symfreq, LC3_INT* cumfreq, LC3_INT* numsym) +{ + LC3_INT i = 0, j = 0; + + *numsym = 8; + + j = 0; + for (i = 1; i < 9; i++) { + symfreq[j] = ari_tns_order_cf[enable_lpc_weighting][i]; + j++; + } + + for (i = 0; i < *numsym; i++) { + symfreq[i] -= ari_tns_order_cf[enable_lpc_weighting][i]; + } + + for (i = 0; i < *numsym; i++) { + cumfreq[i] = ari_tns_order_cf[enable_lpc_weighting][i]; + } +} + +/* Returns val */ +LC3_INT ac_decode_fl(Decoder_State_fl* st, LC3_INT* sym_freq, LC3_INT* cum_freq, LC3_INT num_sym, LC3_UINT8* ptr, LC3_INT* bp, LC3_INT from_left, LC3_INT mask_side, LC3_INT *bp_side) +{ + LC3_INT val = 0, tmp = 0; + + + tmp = st->ac_range_fl >> 10; + + if (st->ac_low_fl >= (LC3_UINT32)(tmp << 10)) { + st->BER_detect = 1; + } + + val = num_sym - 1; + + while (st->ac_low_fl < (LC3_UINT32)(tmp * cum_freq[val])) { + val--; + } + + st->ac_low_fl = st->ac_low_fl - tmp * cum_freq[val]; + st->ac_range_fl = tmp * sym_freq[val]; + + while (st->ac_range_fl < pow(2, 16)) { + st->ac_low_fl = st->ac_low_fl << 8; + st->ac_low_fl = ((LC3_INT)st->ac_low_fl) & ((LC3_INT)(pow(2, 24) - 1)); + + pc_check_bytes(bp, st, from_left, mask_side, bp_side); + + st->ac_low_fl = st->ac_low_fl + ptr[*bp]; + *bp = *bp + 1; + st->ac_range_fl = st->ac_range_fl << 8; + } + + return val; +} + +void tns_coef_freq(LC3_INT k, LC3_INT* symfreq, LC3_INT* cumfreq, LC3_INT* numsym) +{ + LC3_INT i = 0, j = 0; + + *numsym = 18 - 1; + + j = 0; + for (i = 1; i <= *numsym; i++) { + symfreq[j] = ari_tns_freq_cf[k][i]; + j++; + } + + for (i = 0; i < *numsym; i++) { + symfreq[i] -= ari_tns_freq_cf[k][i]; + } + + for (i = 0; i < *numsym; i++) { + cumfreq[i] = ari_tns_freq_cf[k][i]; + } +} + +void ac_freq(LC3_INT pki, LC3_INT* symfreq, LC3_INT* cumfreq, LC3_INT* numsym) +{ + LC3_INT i = 0, j = 0; + + *numsym = 18 - 1; + + j = 0; + for (i = 1; i <= *numsym; i++) { + symfreq[j] = ari_spec_cumfreq_fl[pki][i]; + j++; + } + + for (i = 0; i < *numsym; i++) { + symfreq[i] -= ari_spec_cumfreq_fl[pki][i]; + } + + for (i = 0; i < *numsym; i++) { + cumfreq[i] = ari_spec_cumfreq_fl[pki][i]; + } +} + +void read_bit_fl(LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* bit, LC3_INT *bp, Decoder_State_fl* st_fl, LC3_INT from_left) +{ + *bit = 0; + + UNUSED(bp); + UNUSED(st_fl); + UNUSED(from_left); + + if (ptr[*bp_side] & *mask_side) { + *bit = 1; + } else { + *bit = 0; + } + + if (*mask_side == 128) { + *mask_side = 1; + *bp_side = *bp_side - 1; + } else { + *mask_side = *mask_side * 2; + } +} + +void findNonZero(LC3_INT* in, LC3_INT* out, LC3_INT len, LC3_INT* outLen) +{ + LC3_INT i = 0, j = 0; + + for (i = 0; i < len; i++) { + if (in[i] != 0) { + out[j] = i; + j++; + } + } + + *outLen = j; +} + +void processAriDecoder_fl(LC3_UINT8* bytes, LC3_INT bp_side, LC3_INT mask_side, LC3_INT L_spec, LC3_INT fs_idx, LC3_INT enable_lpc_weighting, + LC3_INT tns_numfilters, LC3_INT lsbMode, LC3_INT lastnz, LC3_INT* bfi, LC3_INT* tns_order, LC3_INT fac_ns_idx, + LC3_INT gg_idx, uint8_t * resBits, LC3_INT* x, LC3_INT* nf_seed, LC3_INT* tns_idx, LC3_INT* zero_frame, LC3_INT numbytes, + LC3_INT* nbits_residual, LC3_INT* residualPresent, LC3_INT frame_dms, + LC3_INT32 n_pc, LC3_INT32 be_bp_left, LC3_INT32 be_bp_right, LC3_INT32 enc, LC3_INT32 *b_left, LC3_INT32 *spec_inv_idx, + LC3_INT hrmode +) +{ + Decoder_State_fl st; + LC3_INT a = 0, b = 0, t = 0, bp = 0; + LC3_INT c = 0; + LC3_INT nbits_side = 0, extra_bits = 0; + LC3_UINT8* ptr = NULL; + LC3_INT n = 0, k = 0, lev = 0; + LC3_INT max_lev = 0, tmp = 0; + LC3_INT sym_freq[MAX_LEN] = {0}, cum_freq[MAX_LEN] = {0}, numsym = 0, bit = 0, lev1 = 0, pki = 0, sym = 0, + save_lev[MAX_LEN] = {0}, idx_len = 0, total_bits = 0, nbits_ari = 0, idx[MAX_LEN] = {0}, rateFlag = 0; + + total_bits = 8 * numbytes; + + memset(&st, 0, sizeof(st)); + + + st.pc_bytes = (n_pc + 1) >> 1; + st.pc_b_left = numbytes + 1; + st.pc_b_right = -1; + st.pc_enc = enc; + st.pc_bfi = *bfi; + st.pc_be_bp_left = floor(be_bp_left / 8); + st.pc_be_bp_right = floor(be_bp_right / 8) - 1; + *spec_inv_idx = L_spec + 1; + assert(st.pc_be_bp_right < st.pc_bytes || st.pc_bytes == 0); + + /* Rate flag */ + if (fs_idx != 5) + { + if (total_bits > (160 + fs_idx * 160)) { + rateFlag = 512; + } + } + + /* Init */ + c = 0; + t = 0; + bp = 0; + + *b_left = -1; + + ptr = bytes; + + /* Start Decoding */ + ac_dec_init_fl(ptr, &bp, &st, 1, mask_side, &bp_side); + + /* Decode TNS data */ + tmp = MAXLAG; + if (frame_dms == 25) + { + tmp /= 2; + } + if (frame_dms == 50) + { + tmp /= 2; + } + + /* Decode TNS data */ + for (n = 0; n < tns_numfilters; n++) { + + if (tns_order[n] > 0) { + tns_order_freq(enable_lpc_weighting, sym_freq, cum_freq, &numsym); + + tns_order[n] = ac_decode_fl(&st, sym_freq, cum_freq, numsym, ptr, &bp, 1, mask_side, &bp_side); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + tns_order[n] = tns_order[n] + 1; + + if (tns_order[n] > tmp) + { + st.BER_detect = 1; + } + + if (st.pc_bbi == 1) + { + spec_inv_idx = 0; + } else if (st.pc_bbi == 2) + { + st.BER_detect = 1; + } + + for (k = 0; k < tns_order[n]; k++) { + if (bp_side < bp) + { + *bfi = 1; + return; + } + + tns_coef_freq(k, sym_freq, cum_freq, &numsym); + tns_idx[n * 8 + k] = ac_decode_fl(&st, sym_freq, cum_freq, numsym, ptr, &bp, 1, mask_side, &bp_side); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 1) + { + spec_inv_idx = 0; + } else if (st.pc_bbi == 2) + { + st.BER_detect = 1; + } + } + } + } + + if (st.BER_detect > 0) { + *bfi = 1; + return; + } + + /* Spectral data */ + for (k = 0; k < lastnz; k = k + 2) { + /* Context */ + t = c + rateFlag; + + if (k > L_spec / 2) { + t = t + 256; + } + + /* Decode amplitude */ + x[k] = 0; + x[k + 1] = 0; + + if (hrmode == 1) { + max_lev = 13 + 8; + } else { + max_lev = 13; + } + + for (lev = 0; lev <= max_lev; lev++) { + lev1 = MIN(lev, 3); + pki = ari_spec_lookup_fl[t + lev1 * 1024]; + ac_freq(pki, sym_freq, cum_freq, &numsym); + sym = ac_decode_fl(&st, sym_freq, cum_freq, numsym, ptr, &bp, 1, mask_side, &bp_side); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 1) + { + *spec_inv_idx = MIN(*spec_inv_idx, k); + } else if (st.pc_bbi == 2) + { + *spec_inv_idx = k; + x[k] = 0; + x[k + 1] = 0; + calculate_nfseed(x, k, nf_seed); + return; + } + + if (sym < 16) { + break; + } + + if (lsbMode == 0 || lev > 0) { + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *spec_inv_idx = k; + x[k] = 0; + x[k + 1] = 0; + calculate_nfseed(x, k, nf_seed); + return; + } + + x[k] = x[k] + (bit << lev); + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *spec_inv_idx = k; + x[k] = 0; + x[k + 1] = 0; + calculate_nfseed(x, k, nf_seed); + return; + } + + x[k + 1] = x[k + 1] + (bit << lev); + } + } + + if ((lev - 1) == 13 && sym == 16) + { + st.BER_detect = 1; + } + + if (hrmode == 0) { + lev = MIN(lev, 13); + } + + if (lsbMode == 1) { + save_lev[k] = lev; + } + + a = sym & 3; + b = sym >> 2; + + x[k] = x[k] + (a << lev); + x[k + 1] = x[k + 1] + (b << lev); + + /* Decode signs */ + if (x[k] > 0) { + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *spec_inv_idx = k; + x[k] = 0; + x[k + 1] = 0; + calculate_nfseed(x, k, nf_seed); + return; + } + + if (bit == 1) { + x[k] = -x[k]; + } + } + + if (x[k + 1] > 0) { + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *spec_inv_idx = k + 1; + x[k + 1] = 0; + calculate_nfseed(x, k, nf_seed); + return; + } + + if (bit == 1) { + x[k + 1] = -x[k + 1]; + } + } + + /* Context */ + lev1 = MIN(lev, 3); + if (lev1 <= 1) { + t = 1 + (a + b) * (lev1 + 1); + } else { + t = 12 + lev1; + } + + c = (c & 15) * 16 + t; + + if (((bp - bp_side) > 3 && (st.pc_c_bp == st.pc_c_bp_side))) { + + if ((0 < *spec_inv_idx) && (*spec_inv_idx < (L_spec + 1))) + { + *bfi = 2; + calculate_nfseed(x, k, nf_seed); + return; + } + + *bfi = 1; + return; + } + + if (st.BER_detect > 0) + { + if ((0 < *spec_inv_idx) && (*spec_inv_idx < (L_spec + 1))) + { + *bfi = 2; + calculate_nfseed(x, k, nf_seed); + return; + } + + *bfi = 1; + return; + } + } + + /* Residual bits */ + nbits_side = total_bits - (8 * bp_side + 8 - (31 - clz_func(mask_side))); + nbits_ari = (bp - 3) * 8; + extra_bits = 25 - (31 - clz_func(st.ac_range_fl)); + + if (enc == 0) + { + if (st.pc_c_bp == 0) + { + nbits_ari = (bp - st.pc_bytes - 3) * 8; + } else { + nbits_ari = (bp + st.pc_b_left - st.pc_bytes - 3) * 8; + } + + if (st.pc_c_bp_side != 0) + { + nbits_side = total_bits - 8 * (st.pc_b_left) + 8 * (st.pc_bytes - bp_side) - (8 - LC3_LOGTWO(mask_side)); + } + } + + + *nbits_residual = total_bits - (nbits_side + nbits_ari + extra_bits); + + if (*nbits_residual < 0) { + if ((0 < *spec_inv_idx) && (*spec_inv_idx < (L_spec + 1))) + { + *bfi = 2; + calculate_nfseed(x, k, nf_seed); + return; + } + + *bfi = 1; + return; + } + + if (lsbMode == 0) { + findNonZero(x, idx, L_spec, &idx_len); + if (hrmode) + { + idx_len *= EXT_RES_ITER_MAX; + } + *nbits_residual = MIN(*nbits_residual, idx_len); + *residualPresent = 1; + + memset(resBits, 0, MAX_RESBITS_LEN); + + for (k = 0; k < *nbits_residual; k++) { + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &tmp, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *bfi = 0; + memset(resBits, 0, sizeof(uint8_t) * (*nbits_residual)); + calculate_nfseed(x, k, nf_seed); + return; + } + + resBits[k >> 3] |= tmp << (k & 7); + } + } else { + for (k = 0; k < lastnz; k = k + 2) { + if (save_lev[k] > 0) { + if (*nbits_residual == 0) { + break; + } + + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *bfi = 0; + memset(resBits, 0, sizeof(LC3_INT32) * (*nbits_residual)); + calculate_nfseed(x, k, nf_seed); + return; + } + + *nbits_residual = *nbits_residual - 1; + + if (bit == 1) { + if (x[k] > 0) { + x[k] = x[k] + 1; + } else if (x[k] < 0) { + x[k] = x[k] - 1; + } else { + if (*nbits_residual == 0) { + break; + } + + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *bfi = 0; + memset(resBits, 0, sizeof(LC3_INT32) * (*nbits_residual)); + calculate_nfseed(x, k, nf_seed); + return; + } + + *nbits_residual = *nbits_residual - 1; + + if (bit == 0) { + x[k] = 1; + } else { + x[k] = -1; + } + } + } + + if (*nbits_residual == 0) { + break; + } + + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *bfi = 0; + memset(resBits, 0, sizeof(LC3_INT32) * (*nbits_residual)); + calculate_nfseed(x, k, nf_seed); + return; + } + + *nbits_residual = *nbits_residual - 1; + + if (bit == 1) { + if (x[k + 1] > 0) { + x[k + 1] = x[k + 1] + 1; + } else if (x[k + 1] < 0) { + x[k + 1] = x[k + 1] - 1; + } else { + if (*nbits_residual == 0) { + break; + } + + pc_check_bytes(&bp, &st, 0, mask_side, &bp_side); + read_bit_fl(ptr, &mask_side, &bp_side, &bit, &bp, &st, 0); + + if (st.pc_return) + { + *b_left = st.pc_b_left; + return; + } + + if (st.pc_bbi == 2) + { + *bfi = 0; + memset(resBits, 0, sizeof(LC3_INT32) * (*nbits_residual)); + calculate_nfseed(x, k, nf_seed); + return; + } + + *nbits_residual = *nbits_residual - 1; + + if (bit == 0) { + x[k + 1] = 1; + } else { + x[k + 1] = -1; + } + } + } + } + } + } + + /* Noise-filling seed */ + calculate_nfseed(x, L_spec, nf_seed); + + /* Zero frame flag */ + if (lastnz == 2 && x[0] == 0 && x[1] == 0 && gg_idx == 0 && fac_ns_idx == 7) { + *zero_frame = 1; + } else { + *zero_frame = 0; + } + + if (enc) + { + if (st.pc_bytes > 0) + { + if (st.pc_b_left > numbytes) + { + *b_left = bp_side - st.pc_bytes; + } + } + } + + if ((*bfi == 2) && (*spec_inv_idx == (L_spec + 1))) + { + *bfi = 0; + } + + *spec_inv_idx = *spec_inv_idx - 1; +} + +void ac_encode_fl(Encoder_State_fl* st, LC3_INT sym_freq, LC3_INT cum_freq) +{ + LC3_INT r = 0; + + r = st->range >> 10; + st->low = st->low + r * cum_freq; + + if ((st->low >> 24) == 1) { + st->carry = 1; + } + + st->low = (st->low) & ((LC3_INT)pow(2, 24) - 1); + st->range = r * sym_freq; + + while (st->range < (LC3_INT)pow(2, 16)) { + st->range = st->range << 8; + ac_shift_fl(st); + } +} + +void ac_shift_fl(Encoder_State_fl* st) +{ + if (st->low < 16711680 || st->carry == 1) { + if (st->cache >= 0) { + st->ptr[st->bp] = st->cache + st->carry; + st->bp = st->bp + 1; + } + + while (st->carry_count > 0) { + st->ptr[st->bp] = (st->carry + 255) & 255; + st->bp = st->bp + 1; + st->carry_count = st->carry_count - 1; + } + + st->cache = st->low >> 16; + st->carry = 0; + } else { + st->carry_count = st->carry_count + 1; + } + + st->low = st->low << 8; + st->low = (st->low) & ((LC3_INT)pow(2, 24) - 1); +} + +void tns_order_freq_enc(LC3_INT enable_lpc_weighting, LC3_INT order, LC3_INT* symfreq, LC3_INT* cumfreq) +{ + *symfreq = tns_freq_cf[enable_lpc_weighting][order] - tns_freq_cf[enable_lpc_weighting][order - 1]; + *cumfreq = tns_freq_cf[enable_lpc_weighting][order - 1]; +} + +void tns_coef_freq_enc(LC3_INT k, LC3_INT idx, LC3_INT* symfreq, LC3_INT* cumfreq) +{ + *symfreq = tns_cf[k][idx + 1] - tns_cf[k][idx]; + *cumfreq = tns_cf[k][idx]; +} + +void ac_freq_fl(LC3_INT pki, LC3_INT s, LC3_INT* symfreq, LC3_INT* cumfreq) +{ + *symfreq = ari_spec_cumfreq_fl[pki][s + 1] - ari_spec_cumfreq_fl[pki][s]; + *cumfreq = ari_spec_cumfreq_fl[pki][s]; +} + +void ac_finalize_fl(Encoder_State_fl* st) +{ + LC3_INT bits = 0, mask = 0, val = 0, over1 = 0, high = 0, over2 = 0, c = 0, b = 0; + + bits = 24 - floor(LC3_LOGTWO(st->range)); + mask = ((LC3_INT)pow(2, 24) - 1) >> bits; + val = st->low + mask; + over1 = val >> 24; + + val = (val) & ((LC3_INT)pow(2, 24) - 1); + high = st->low + st->range; + over2 = high >> 24; + high = high & ((LC3_INT)pow(2, 24) - 1); + val = val & (((LC3_INT)pow(2, 24) - 1) - mask); + + if (over1 == over2) { + if (val + mask >= high) { + bits = bits + 1; + mask = mask >> 1; + val = ((st->low + mask) & ((LC3_INT)pow(2, 24) - 1)) & (((LC3_INT)pow(2, 24) - 1) - mask); + } + + if (val < st->low) { + st->carry = 1; + } + } + + st->low = val; + + b = bits; + + if (bits > 8) { + for (; b >= 1; b = b - 8) { + ac_shift_fl(st); + } + } else { + ac_shift_fl(st); + } + + bits = b; + if (bits < 0) { + bits += 8; + } + + if (st->carry_count > 0) { + st->ptr[st->bp] = st->cache; + st->bp = st->bp + 1; + + for (c = st->carry_count; c >= 2; c--) { + st->ptr[st->bp] = 255; + st->bp = st->bp + 1; + } + + write_uint_forward_fl(st, 255 << (bits - 8), bits); + } else { + write_uint_forward_fl(st, st->cache, bits); + } +} + +void write_uint_forward_fl(Encoder_State_fl* st, LC3_INT val, LC3_INT numbits) +{ + LC3_INT k = 0, bit = 0, mask = 128; + + for (k = 0; k < numbits; k++) { + bit = val & mask; + + if (bit == 0) { + st->ptr[st->bp] = st->ptr[st->bp] & (255 - mask); + } else { + st->ptr[st->bp] = st->ptr[st->bp] | mask; + } + + mask = mask >> 1; + } +} + +void ari_enc_init(Encoder_State_fl* st, LC3_UINT8* bytes, LC3_INT* bp_side, LC3_INT* mask_side) +{ + st->ptr = bytes; + st->bp_side = bp_side; + st->mask_side = mask_side; + st->bp = 0; + st->low = 0; + st->range = (LC3_INT)pow(2, 24) - 1; + st->cache = -1; + st->carry = 0; + st->carry_count = 0; +} + +LC3_INT sign(LC3_INT x) +{ + if (x > 0) + return 1; + + if (x < 0) + return -1; + + return 0; +} + +void processAriEncoder_fl(LC3_UINT8* bytes, LC3_INT bp_side, LC3_INT mask_side, LC3_INT* x, LC3_INT* tns_order, LC3_INT tns_numfilters, + LC3_INT* tns_idx, LC3_INT lastnz, LC3_INT* codingdata, uint8_t* res_bits, LC3_INT resBitsLen, LC3_INT lsbMode, + LC3_INT nbbits, LC3_INT enable_lpc_weighting) +{ + LC3_INT total_bits = 0, cumfreq = 0, symfreq = 0, k = 0, i = 0, j = 0, lev = 0, lev1 = 0; + LC3_INT bit1 = 0, bit2 = 0, lsb1 = 0, lsb2 = 0, a = 0, b = 0, bit = 0, pki = 0, nbits_side = 0; + LC3_INT nbits_residual_enc = 0, nbits_ari = 0, lsbs[MAX_LEN] = {0}, lsbsLen = 0; + Encoder_State_fl st; + + ari_enc_init(&st, bytes, &bp_side, &mask_side); + + total_bits = nbbits; + + /* TNS data */ + for (i = 0; i < tns_numfilters; i++) { + if (tns_order[i] > 0) { + tns_order_freq_enc(enable_lpc_weighting, tns_order[i], &symfreq, &cumfreq); + ac_encode_fl(&st, symfreq, cumfreq); + + for (j = 0; j < tns_order[i]; j++) { + tns_coef_freq_enc(j, tns_idx[i * 8 + j], &symfreq, &cumfreq); + ac_encode_fl(&st, symfreq, cumfreq); + } + } + } + + /* Spectral data */ + for (k = 0; k < lastnz; k = k + 2) { + for (lev = 0; lev < codingdata[1]; lev++) { + lev1 = MIN(lev, 3); + pki = ari_spec_lookup_fl[codingdata[0] + lev1 * 1024]; + ac_freq_fl(pki, 16, &symfreq, &cumfreq); + + ac_encode_fl(&st, symfreq, cumfreq); + bit1 = (abs(x[k]) >> lev) & 1; + bit2 = (abs(x[k + 1]) >> lev) & 1; + + if (lsbMode == 1 && lev == 0) { + lsb1 = bit1; + lsb2 = bit2; + } else { + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, bit1); + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, bit2); + } + } + + lev1 = MIN(MAX(codingdata[1], 0), 3); + pki = ari_spec_lookup_fl[codingdata[0] + lev1 * 1024]; + + ac_freq_fl(pki, codingdata[2], &symfreq, &cumfreq); + ac_encode_fl(&st, symfreq, cumfreq); + + a = abs(x[k]); + b = abs(x[k + 1]); + + if (lsbMode == 1 && codingdata[1] > 0) { + a = a >> 1; + lsbs[lsbsLen] = lsb1; + lsbsLen++; + + if (a == 0 && x[k] != 0) { + bit = MAX(0, -sign(x[k])); + lsbs[lsbsLen] = bit; + lsbsLen++; + } + + b = b >> 1; + lsbs[lsbsLen] = lsb2; + lsbsLen++; + + if (b == 0 && x[k + 1] != 0) { + bit = MAX(0, -sign(x[k + 1])); + lsbs[lsbsLen] = bit; + lsbsLen++; + } + } + + if (a != 0) { + bit = MAX(0, -sign(x[k])); + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, bit); + } + + if (b != 0) { + bit = MAX(0, -sign(x[k + 1])); + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, bit); + } + + codingdata += 3; + } + + /* Residual bits */ + nbits_side = total_bits - (8 * (*(st.bp_side) + 1) + 8 - LC3_LOGTWO(*(st.mask_side))); + nbits_ari = (st.bp + 1) * 8 + 25 - floor(LC3_LOGTWO(st.range)); + + if (st.cache >= 0) { + nbits_ari = nbits_ari + 8; + } + + if (st.carry_count > 0) { + nbits_ari = nbits_ari + st.carry_count * 8; + } + + nbits_residual_enc = MAX(total_bits - (nbits_side + nbits_ari), 0); + /* the max operation avoids in very rare cases, that + * nbits_residual_enc becomes negative; having overwritten + * the last bit(s) of the side information is in this case + * assumed to be not critical, since no spectral data bits + * were written */ + + if (lsbMode == 0) { + nbits_residual_enc = MIN(nbits_residual_enc, resBitsLen); + for (k = 0; k < nbits_residual_enc; k++) { + if (res_bits[k >> 3] & (1 << (k & 7))) + { + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, 1); + } + else + { + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, 0); + } + } + } else { + nbits_residual_enc = MIN(nbits_residual_enc, lsbsLen); + + for (k = 0; k < nbits_residual_enc; k++) { + write_bit_backward_fl(st.ptr, st.bp_side, st.mask_side, lsbs[k]); + } + } + + ac_finalize_fl(&st); +} + diff --git a/lc3plus/attack_detector.c b/lc3plus/attack_detector.c new file mode 100644 index 0000000000000000000000000000000000000000..c9f7c0a94c0be6529592f96793969ff5b2edb5b4 --- /dev/null +++ b/lc3plus/attack_detector.c @@ -0,0 +1,105 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void attack_detector_fl(LC3_FLOAT* in, LC3_INT frame_size, LC3_INT fs, LC3_INT* lastAttackPosition, LC3_FLOAT* accNrg, LC3_INT* attackFlag, + LC3_FLOAT* attdec_filter_mem, LC3_INT attackHandlingOn, LC3_INT attdec_nblocks, LC3_INT attdec_hangover_threshold) +{ + LC3_FLOAT f_sig[160] = {0}, block_nrg[4] = {0}, sum = 0, tmpEne = 0, *ptr = NULL, tmp[162] = {0}; + LC3_INT i = 0, j = 0, attackPosition = 0; + LC3_FLOAT mval = 0; + LC3_INT frame_size_16k = attdec_nblocks * 40; + + + ptr = &tmp[2]; + + + + if (attackHandlingOn) { + /* Decimate 96, 48 and 32 kHz signals to 16 kHz */ + if (fs == 96000) { + for (i = 0; i < frame_size;) { + ptr[j] = in[i] + in[i + 1] + in[i + 2] + in[i + 3] + in[i + 4] + in[i + 5]; + i = i + 6; + j++; + } + mval = 1e-5; + } else if (fs == 48000) { + j = 0; + for (i = 0; i < frame_size;) { + ptr[j] = (in[i] + in[i + 1] + in[i + 2]); + i = i + 3; + j++; + } + } else if (fs == 32000) { + j = 0; + for (i = 0; i < frame_size;) { + ptr[j] = (in[i] + in[i + 1]); + i = i + 2; + j++; + } + } else if (fs == 24000) { + j = 0; + for (i = 0; i < frame_size;) { + ptr[j] = (in[i] + (in[i + 1] + in[i + 2]) / 2.0); + i = i + 3; + j++; + } + } + + /* Filter */ + ptr[-2] = (LC3_FLOAT)attdec_filter_mem[0]; + ptr[-1] = (LC3_FLOAT)attdec_filter_mem[1]; + + attdec_filter_mem[0] = ptr[frame_size_16k - 2]; + attdec_filter_mem[1] = ptr[frame_size_16k - 1]; + + for (i = 159; i >= 0; i--) { + tmpEne = 0; + + tmpEne += ptr[i] * 0.375; + tmpEne += ptr[i - 1] * (-0.5); + tmpEne += ptr[i - 2] * (0.125); + + f_sig[i] = tmpEne; + } + + for (i = 0; i < attdec_nblocks; i++) { + sum = 0; + for (j = 0; j < 40; j++) { + sum += f_sig[j + i * 40] * f_sig[j + i * 40]; + } + + block_nrg[i] = sum; + } + + *attackFlag = 0; + attackPosition = -1; + + for (i = 0; i < attdec_nblocks; i++) { + tmpEne = block_nrg[i] / 8.5; + + if (tmpEne > MAX(*accNrg, mval)) { + *attackFlag = 1; + attackPosition = i + 1; + } + + *accNrg = MAX(block_nrg[i], 0.25 * (*accNrg)); + } + + if (*lastAttackPosition > attdec_hangover_threshold) { + *attackFlag = 1; + } + + *lastAttackPosition = attackPosition; + } +} diff --git a/lc3plus/clib.h b/lc3plus/clib.h new file mode 100644 index 0000000000000000000000000000000000000000..bd709278086b82b878ad95d1b7699ddfa4d7e0f2 --- /dev/null +++ b/lc3plus/clib.h @@ -0,0 +1,27 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef CLIB_H +#define CLIB_H + +#include +#include +#include +#include +#include +#include +#include +#ifndef _MSC_VER +#include "strings.h" +#else +#include +#endif + +#endif diff --git a/lc3plus/constants.c b/lc3plus/constants.c new file mode 100644 index 0000000000000000000000000000000000000000..8189761a04c12632f10a502e51f0479efbdc00fe --- /dev/null +++ b/lc3plus/constants.c @@ -0,0 +1,3803 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +/* DCT */ +#define ENTRY_DCT2_1 {0.353553, 0.000000} +#define ENTRY_DCT2_2 {0.351851, -0.034654} +#define ENTRY_DCT2_3 {0.346760, -0.068975} +#define ENTRY_DCT2_4 {0.338329, -0.102631} +#define ENTRY_DCT2_5 {0.326641, -0.135299} +#define ENTRY_DCT2_6 {0.311806, -0.166664} +#define ENTRY_DCT2_7 {0.293969, -0.196424} +#define ENTRY_DCT2_8 {0.273300, -0.224292} +#define ENTRY_DCT2_9 {0.250000, -0.250000} +#define ENTRY_DCT2_10 {0.224292, -0.273300} +#define ENTRY_DCT2_11 {0.196424, -0.293969} +#define ENTRY_DCT2_12 {0.166664, -0.311806} +#define ENTRY_DCT2_13 {0.135299, -0.326641} +#define ENTRY_DCT2_14 {0.102631, -0.338329} +#define ENTRY_DCT2_15 {0.068975, -0.346760} +#define ENTRY_DCT2_16 {0.034654, -0.351851} + +const Complex dct2_16[16] = { +ENTRY_DCT2_1, +ENTRY_DCT2_2, +ENTRY_DCT2_3, +ENTRY_DCT2_4, +ENTRY_DCT2_5, +ENTRY_DCT2_6, +ENTRY_DCT2_7, +ENTRY_DCT2_8, +ENTRY_DCT2_9, +ENTRY_DCT2_10, +ENTRY_DCT2_11, +ENTRY_DCT2_12, +ENTRY_DCT2_13, +ENTRY_DCT2_14, +ENTRY_DCT2_15, +ENTRY_DCT2_16 +}; + +const LC3_INT ari_tns_order_cf[2][9] = {{0, 3, 12, 35, 89, 200, 390, 658, 1024}, + {0, 14, 56, 156, 313, 494, 672, 839, 1024}}; + +const LC3_INT ari_tns_freq_cf[8][18] = { + {0, 1, 6, 21, 52, 106, 192, 289, 409, 568, 720, 831, 935, 994, 1016, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 17, 60, 154, 293, 466, 626, 780, 911, 989, 1016, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 13, 56, 162, 361, 578, 788, 929, 1003, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 6, 17, 66, 270, 555, 852, 972, 1011, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 12, 54, 295, 636, 950, 1008, 1017, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 6, 19, 224, 590, 967, 1014, 1019, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 6, 19, 300, 630, 1001, 1018, 1019, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 6, 11, 308, 309, 991, 1017, 1019, 1020, 1021, 1022, 1023, 1024}}; + +const LC3_INT ari_spec_lookup_fl[4096] = { + 0x01, 0x27, 0x07, 0x19, 0x16, 0x16, 0x1C, 0x16, 0x16, 0x16, 0x16, 0x1C, 0x1C, 0x1C, 0x22, 0x1F, 0x1F, 0x28, 0x2B, + 0x2E, 0x31, 0x34, 0x0E, 0x11, 0x24, 0x24, 0x24, 0x26, 0x00, 0x39, 0x26, 0x16, 0x00, 0x08, 0x09, 0x0B, 0x2F, 0x0E, + 0x0E, 0x11, 0x24, 0x24, 0x24, 0x26, 0x3B, 0x3B, 0x26, 0x16, 0x16, 0x1A, 0x2E, 0x1D, 0x1E, 0x20, 0x21, 0x23, 0x24, + 0x24, 0x24, 0x26, 0x00, 0x3B, 0x17, 0x16, 0x2E, 0x2E, 0x2D, 0x2F, 0x30, 0x32, 0x32, 0x12, 0x36, 0x36, 0x36, 0x26, + 0x3B, 0x3B, 0x3B, 0x16, 0x00, 0x3E, 0x3F, 0x03, 0x21, 0x02, 0x02, 0x3D, 0x14, 0x14, 0x14, 0x15, 0x3B, 0x3B, 0x27, + 0x1C, 0x1C, 0x3F, 0x3F, 0x03, 0x21, 0x02, 0x02, 0x3D, 0x26, 0x26, 0x26, 0x15, 0x3B, 0x3B, 0x27, 0x1C, 0x1C, 0x06, + 0x06, 0x06, 0x02, 0x12, 0x3D, 0x14, 0x15, 0x15, 0x15, 0x3B, 0x27, 0x27, 0x07, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x33, 0x33, 0x33, 0x35, 0x36, 0x14, 0x26, + 0x26, 0x39, 0x27, 0x27, 0x27, 0x07, 0x18, 0x22, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x38, 0x26, 0x39, 0x39, 0x3B, 0x07, 0x07, 0x07, 0x2A, + 0x2A, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x04, 0x04, 0x05, 0x15, 0x15, 0x3B, 0x07, 0x07, 0x07, 0x07, 0x19, 0x19, 0x19, 0x22, 0x04, 0x04, 0x04, 0x04, + 0x05, 0x17, 0x17, 0x27, 0x07, 0x07, 0x07, 0x2A, 0x19, 0x19, 0x16, 0x1F, 0x1F, 0x27, 0x27, 0x27, 0x27, 0x07, 0x07, + 0x2A, 0x00, 0x19, 0x16, 0x16, 0x16, 0x1C, 0x22, 0x1F, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, + 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x28, 0x08, 0x09, 0x31, 0x31, 0x34, 0x11, 0x11, 0x11, 0x04, 0x00, + 0x14, 0x11, 0x3C, 0x28, 0x28, 0x08, 0x2B, 0x1B, 0x31, 0x31, 0x0E, 0x11, 0x11, 0x11, 0x24, 0x2A, 0x2A, 0x11, 0x39, + 0x39, 0x28, 0x08, 0x1A, 0x1B, 0x31, 0x0C, 0x0E, 0x11, 0x11, 0x11, 0x24, 0x00, 0x26, 0x24, 0x01, 0x08, 0x08, 0x2B, + 0x09, 0x0B, 0x31, 0x0C, 0x0E, 0x0E, 0x21, 0x32, 0x32, 0x32, 0x3D, 0x24, 0x27, 0x08, 0x08, 0x2B, 0x2E, 0x31, 0x34, + 0x1E, 0x0E, 0x0E, 0x21, 0x32, 0x32, 0x32, 0x32, 0x12, 0x19, 0x08, 0x08, 0x2B, 0x2E, 0x31, 0x34, 0x1E, 0x0E, 0x0E, + 0x12, 0x05, 0x05, 0x05, 0x3D, 0x12, 0x17, 0x2B, 0x2B, 0x2B, 0x09, 0x31, 0x34, 0x03, 0x0E, 0x0E, 0x32, 0x32, 0x32, + 0x32, 0x3D, 0x11, 0x18, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, + 0x2B, 0x2B, 0x2B, 0x2B, 0x09, 0x0B, 0x34, 0x34, 0x0E, 0x0E, 0x11, 0x3D, 0x3D, 0x3D, 0x36, 0x11, 0x27, 0x2D, 0x2D, + 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2C, 0x1B, 0x1D, + 0x34, 0x30, 0x34, 0x34, 0x11, 0x11, 0x11, 0x11, 0x02, 0x11, 0x07, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, + 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x09, 0x1B, 0x1B, 0x0C, 0x34, 0x0E, 0x0E, 0x3A, 0x29, + 0x29, 0x29, 0x06, 0x11, 0x25, 0x09, 0x09, 0x09, 0x1B, 0x0B, 0x31, 0x0C, 0x34, 0x0E, 0x0E, 0x0E, 0x32, 0x00, 0x35, + 0x11, 0x1C, 0x34, 0x34, 0x31, 0x34, 0x0C, 0x34, 0x1E, 0x0E, 0x0E, 0x11, 0x02, 0x02, 0x02, 0x26, 0x26, 0x22, 0x1F, + 0x22, 0x22, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x1F, 0x13, 0x2C, 0x2C, 0x3E, 0x1E, + 0x20, 0x3A, 0x23, 0x24, 0x24, 0x26, 0x00, 0x3B, 0x07, 0x07, 0x27, 0x22, 0x22, 0x2D, 0x2F, 0x30, 0x21, 0x23, 0x23, + 0x24, 0x26, 0x26, 0x26, 0x3B, 0x07, 0x07, 0x27, 0x22, 0x22, 0x3E, 0x1E, 0x0F, 0x32, 0x35, 0x35, 0x36, 0x15, 0x15, + 0x15, 0x3B, 0x07, 0x07, 0x07, 0x22, 0x1E, 0x1E, 0x30, 0x21, 0x3A, 0x12, 0x12, 0x38, 0x17, 0x17, 0x17, 0x3B, 0x07, + 0x07, 0x18, 0x22, 0x22, 0x06, 0x06, 0x3A, 0x35, 0x36, 0x36, 0x15, 0x3B, 0x3B, 0x3B, 0x27, 0x07, 0x07, 0x2A, 0x22, + 0x06, 0x06, 0x21, 0x3A, 0x35, 0x36, 0x3D, 0x15, 0x3B, 0x3B, 0x3B, 0x27, 0x07, 0x07, 0x2A, 0x22, 0x22, 0x33, 0x33, + 0x35, 0x36, 0x38, 0x38, 0x39, 0x27, 0x27, 0x27, 0x07, 0x2A, 0x2A, 0x19, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x04, 0x04, 0x04, 0x05, 0x17, 0x17, 0x27, 0x07, + 0x07, 0x07, 0x2A, 0x19, 0x19, 0x16, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x05, 0x05, 0x05, 0x05, 0x39, 0x39, 0x27, 0x18, 0x18, 0x18, 0x2A, 0x16, 0x16, 0x1C, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x29, + 0x29, 0x29, 0x29, 0x27, 0x27, 0x07, 0x2A, 0x2A, 0x2A, 0x19, 0x1C, 0x1C, 0x1C, 0x1F, 0x1F, 0x29, 0x29, 0x29, 0x29, + 0x27, 0x27, 0x18, 0x19, 0x19, 0x19, 0x16, 0x1C, 0x1C, 0x22, 0x1F, 0x1F, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x1C, + 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x1F, 0x13, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x0B, 0x2F, 0x20, 0x32, 0x12, 0x12, 0x14, 0x15, 0x15, 0x15, 0x27, + 0x3B, 0x22, 0x1A, 0x1A, 0x1B, 0x1D, 0x1E, 0x21, 0x32, 0x12, 0x12, 0x14, 0x39, 0x39, 0x39, 0x3B, 0x3B, 0x22, 0x1B, + 0x1B, 0x0B, 0x0C, 0x30, 0x32, 0x3A, 0x3D, 0x3D, 0x38, 0x39, 0x39, 0x39, 0x3B, 0x27, 0x22, 0x2D, 0x2D, 0x0C, 0x1E, + 0x20, 0x02, 0x02, 0x3D, 0x26, 0x26, 0x26, 0x39, 0x00, 0x3B, 0x27, 0x22, 0x3F, 0x3F, 0x03, 0x20, 0x3A, 0x12, 0x12, + 0x14, 0x15, 0x15, 0x15, 0x3B, 0x27, 0x27, 0x07, 0x1F, 0x1F, 0x03, 0x03, 0x21, 0x3A, 0x12, 0x12, 0x14, 0x15, 0x15, + 0x15, 0x3B, 0x07, 0x07, 0x07, 0x1F, 0x06, 0x06, 0x33, 0x33, 0x35, 0x36, 0x36, 0x26, 0x39, 0x39, 0x39, 0x27, 0x07, + 0x07, 0x2A, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x33, 0x35, 0x35, 0x36, 0x38, 0x38, 0x39, 0x3B, 0x3B, 0x3B, 0x07, 0x18, 0x18, 0x19, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x04, 0x04, 0x04, 0x36, 0x15, + 0x15, 0x39, 0x27, 0x27, 0x27, 0x07, 0x2A, 0x2A, 0x16, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x05, 0x05, 0x05, 0x05, 0x17, 0x17, 0x3B, 0x07, 0x07, 0x07, 0x2A, + 0x16, 0x16, 0x1C, 0x1F, 0x1F, 0x04, 0x04, 0x04, 0x05, 0x17, 0x17, 0x27, 0x18, 0x18, 0x18, 0x19, 0x1C, 0x1C, 0x22, + 0x1F, 0x1F, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x1C, 0x22, 0x22, 0x22, 0x1F, 0x1F, 0x1F, 0x1F, 0x13, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, + 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x10, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x10, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, + 0x3C, 0x10, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x25, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x13, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, + 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x3C, 0x3C, 0x3C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x3C, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, + 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, + 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + +const LC3_INT ari_spec_cumfreq_fl[64][18] = { + {0, 1, 2, 177, 225, 226, 227, 336, 372, 543, 652, 699, 719, 768, 804, 824, 834, 1024}, + {0, 18, 44, 61, 71, 98, 135, 159, 175, 197, 229, 251, 265, 282, 308, 328, 341, 1024}, + {0, 71, 163, 212, 237, 318, 420, 481, 514, 556, 613, 652, 675, 697, 727, 749, 764, 1024}, + {0, 160, 290, 336, 354, 475, 598, 653, 677, 722, 777, 808, 823, 842, 866, 881, 890, 1024}, + {0, 71, 144, 177, 195, 266, 342, 385, 411, 445, 489, 519, 539, 559, 586, 607, 622, 1024}, + {0, 48, 108, 140, 159, 217, 285, 327, 354, 385, 427, 457, 478, 497, 524, 545, 561, 1024}, + {0, 138, 247, 290, 308, 419, 531, 584, 609, 655, 710, 742, 759, 780, 807, 825, 836, 1024}, + {0, 16, 40, 62, 79, 103, 139, 170, 195, 215, 245, 270, 290, 305, 327, 346, 362, 1024}, + {0, 579, 729, 741, 743, 897, 970, 980, 982, 996, 1007, 1010, 1011, 1014, 1017, 1018, 1019, 1024}, + {0, 398, 582, 607, 612, 788, 902, 925, 931, 956, 979, 987, 990, 996, 1002, 1005, 1007, 1024}, + {0, 13, 34, 52, 63, 83, 112, 134, 149, 163, 183, 199, 211, 221, 235, 247, 257, 1024}, + {0, 281, 464, 501, 510, 681, 820, 857, 867, 902, 938, 953, 959, 968, 978, 984, 987, 1024}, + {0, 198, 362, 408, 421, 575, 722, 773, 789, 832, 881, 905, 915, 928, 944, 954, 959, 1024}, + {0, 1, 2, 95, 139, 140, 141, 213, 251, 337, 407, 450, 475, 515, 551, 576, 592, 1024}, + {0, 133, 274, 338, 366, 483, 605, 664, 691, 730, 778, 807, 822, 837, 857, 870, 878, 1024}, + {0, 128, 253, 302, 320, 443, 577, 636, 659, 708, 767, 799, 814, 833, 857, 872, 881, 1024}, + {0, 1, 2, 25, 42, 43, 44, 67, 85, 105, 126, 144, 159, 174, 191, 205, 217, 1024}, + {0, 70, 166, 229, 267, 356, 468, 533, 569, 606, 653, 685, 705, 722, 745, 762, 774, 1024}, + {0, 55, 130, 175, 200, 268, 358, 416, 449, 488, 542, 581, 606, 628, 659, 683, 699, 1024}, + {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 1024}, + {0, 34, 85, 123, 147, 196, 265, 317, 352, 386, 433, 470, 497, 518, 549, 574, 593, 1024}, + {0, 30, 73, 105, 127, 170, 229, 274, 305, 335, 377, 411, 436, 455, 483, 506, 524, 1024}, + {0, 9, 24, 38, 51, 65, 87, 108, 126, 139, 159, 177, 193, 204, 221, 236, 250, 1024}, + {0, 30, 74, 105, 125, 166, 224, 266, 294, 322, 361, 391, 413, 431, 457, 478, 494, 1024}, + {0, 15, 38, 58, 73, 95, 128, 156, 178, 196, 222, 245, 263, 276, 296, 314, 329, 1024}, + {0, 11, 28, 44, 57, 74, 100, 123, 142, 157, 179, 199, 216, 228, 246, 262, 276, 1024}, + {0, 448, 619, 639, 643, 821, 926, 944, 948, 971, 991, 998, 1000, 1005, 1010, 1012, 1013, 1024}, + {0, 332, 520, 549, 555, 741, 874, 903, 910, 940, 970, 981, 985, 991, 998, 1002, 1004, 1024}, + {0, 8, 21, 34, 45, 58, 78, 96, 112, 124, 141, 157, 170, 180, 194, 207, 219, 1024}, + {0, 239, 415, 457, 468, 631, 776, 820, 833, 872, 914, 933, 940, 951, 964, 971, 975, 1024}, + {0, 165, 310, 359, 375, 513, 652, 707, 727, 774, 828, 856, 868, 884, 904, 916, 923, 1024}, + {0, 3, 8, 13, 18, 23, 30, 37, 44, 48, 55, 62, 68, 72, 78, 84, 90, 1024}, + {0, 115, 237, 289, 311, 422, 547, 608, 635, 680, 737, 771, 788, 807, 832, 849, 859, 1024}, + {0, 107, 221, 272, 293, 399, 521, 582, 610, 656, 714, 749, 767, 787, 813, 831, 842, 1024}, + {0, 6, 16, 26, 35, 45, 60, 75, 89, 98, 112, 125, 137, 145, 157, 168, 178, 1024}, + {0, 72, 160, 210, 236, 320, 422, 482, 514, 555, 608, 644, 665, 685, 712, 732, 745, 1024}, + {0, 45, 108, 153, 183, 244, 327, 385, 421, 455, 502, 536, 559, 578, 605, 626, 641, 1024}, + {0, 1, 2, 9, 16, 17, 18, 26, 34, 40, 48, 55, 62, 68, 75, 82, 88, 1024}, + {0, 29, 73, 108, 132, 174, 236, 284, 318, 348, 391, 426, 452, 471, 500, 524, 543, 1024}, + {0, 20, 51, 76, 93, 123, 166, 200, 225, 247, 279, 305, 326, 342, 365, 385, 401, 1024}, + {0, 742, 845, 850, 851, 959, 997, 1001, 1002, 1009, 1014, 1016, 1017, 1019, 1020, 1021, 1022, 1024}, + {0, 42, 94, 121, 137, 186, 244, 280, 303, 330, 366, 392, 410, 427, 451, 470, 484, 1024}, + {0, 13, 33, 51, 66, 85, 114, 140, 161, 178, 203, 225, 243, 256, 275, 292, 307, 1024}, + {0, 501, 670, 689, 693, 848, 936, 952, 956, 975, 991, 997, 999, 1004, 1008, 1010, 1011, 1024}, + {0, 445, 581, 603, 609, 767, 865, 888, 895, 926, 954, 964, 968, 977, 986, 991, 993, 1024}, + {0, 285, 442, 479, 489, 650, 779, 818, 830, 870, 912, 930, 937, 949, 963, 971, 975, 1024}, + {0, 349, 528, 561, 569, 731, 852, 883, 892, 923, 953, 965, 970, 978, 987, 992, 994, 1024}, + {0, 199, 355, 402, 417, 563, 700, 750, 767, 811, 860, 884, 894, 909, 926, 936, 942, 1024}, + {0, 141, 275, 325, 343, 471, 606, 664, 686, 734, 791, 822, 836, 854, 877, 891, 899, 1024}, + {0, 243, 437, 493, 510, 649, 775, 820, 836, 869, 905, 923, 931, 941, 953, 960, 964, 1024}, + {0, 91, 197, 248, 271, 370, 487, 550, 580, 625, 684, 721, 741, 761, 788, 807, 819, 1024}, + {0, 107, 201, 242, 262, 354, 451, 503, 531, 573, 626, 660, 680, 701, 730, 751, 765, 1024}, + {0, 168, 339, 407, 432, 553, 676, 731, 755, 789, 830, 854, 866, 879, 895, 906, 912, 1024}, + {0, 67, 147, 191, 214, 290, 384, 441, 472, 513, 567, 604, 627, 648, 678, 700, 715, 1024}, + {0, 46, 109, 148, 171, 229, 307, 359, 391, 427, 476, 513, 537, 558, 588, 612, 629, 1024}, + {0, 848, 918, 920, 921, 996, 1012, 1013, 1014, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024}, + {0, 36, 88, 123, 145, 193, 260, 308, 340, 372, 417, 452, 476, 496, 525, 548, 565, 1024}, + {0, 24, 61, 90, 110, 145, 196, 237, 266, 292, 330, 361, 385, 403, 430, 453, 471, 1024}, + {0, 85, 182, 230, 253, 344, 454, 515, 545, 590, 648, 685, 706, 727, 756, 776, 789, 1024}, + {0, 22, 55, 82, 102, 135, 183, 222, 252, 278, 315, 345, 368, 385, 410, 431, 448, 1024}, + {0, 1, 2, 56, 89, 90, 91, 140, 172, 221, 268, 303, 328, 358, 388, 412, 430, 1024}, + {0, 45, 109, 152, 177, 239, 320, 376, 411, 448, 499, 537, 563, 585, 616, 640, 658, 1024}, + {0, 247, 395, 433, 445, 599, 729, 771, 785, 829, 875, 896, 905, 920, 937, 946, 951, 1024}, + {0, 231, 367, 408, 423, 557, 676, 723, 742, 786, 835, 860, 872, 889, 909, 921, 928, 1024}}; + +const LC3_INT ari_spec_bits_fl[64][17] = { + {20480, 20480, 5220, 9042, 20480, 20480, 6619, 9892, 5289, 6619, 9105, 11629, 8982, 9892, 11629, 13677, 4977}, + {11940, 10854, 12109, 13677, 10742, 9812, 11090, 12288, 11348, 10240, 11348, 12683, 12109, 10854, 11629, 12902, + 1197}, + {7886, 7120, 8982, 10970, 7496, 6815, 8334, 10150, 9437, 8535, 9656, 11216, 11348, 10431, 11348, 12479, 4051}, + {5485, 6099, 9168, 11940, 6311, 6262, 8640, 11090, 9233, 8640, 10334, 12479, 11781, 11090, 12479, 13988, 6009}, + {7886, 7804, 10150, 11940, 7886, 7685, 9368, 10854, 10061, 9300, 10431, 11629, 11629, 10742, 11485, 12479, 2763}, + {9042, 8383, 10240, 11781, 8483, 8013, 9437, 10742, 10334, 9437, 10431, 11485, 11781, 10742, 11485, 12288, 2346}, + {5922, 6619, 9368, 11940, 6566, 6539, 8750, 10970, 9168, 8640, 10240, 12109, 11485, 10742, 11940, 13396, 5009}, + {12288, 11090, 11348, 12109, 11090, 9892, 10334, 10970, 11629, 10431, 10970, 11629, 12479, 11348, 11781, 12288, + 1289}, + {1685, 5676, 13138, 18432, 5598, 7804, 13677, 18432, 12683, 13396, 17234, 20480, 17234, 17234, 20480, 20480, 15725}, + {2793, 5072, 10970, 15725, 5204, 6487, 11216, 15186, 10970, 11216, 14336, 17234, 15186, 15186, 17234, 18432, 12109}, + {12902, 11485, 11940, 13396, 11629, 10531, 11348, 12479, 12683, 11629, 12288, 13138, 13677, 12683, 13138, 13677, + 854}, + {3821, 5088, 9812, 13988, 5289, 5901, 9812, 13677, 9976, 9892, 12479, 15186, 13988, 13677, 15186, 17234, 9812}, + {4856, 5412, 9168, 12902, 5598, 5736, 8863, 12288, 9368, 8982, 11090, 13677, 12902, 12288, 13677, 15725, 8147}, + {20480, 20480, 7088, 9300, 20480, 20480, 7844, 9733, 7320, 7928, 9368, 10970, 9581, 9892, 10970, 12288, 2550}, + {6031, 5859, 8192, 10635, 6410, 6286, 8433, 10742, 9656, 9042, 10531, 12479, 12479, 11629, 12902, 14336, 5756}, + {6144, 6215, 8982, 11940, 6262, 6009, 8433, 11216, 8982, 8433, 10240, 12479, 11781, 11090, 12479, 13988, 5817}, + {20480, 20480, 11216, 12109, 20480, 20480, 11216, 11940, 11629, 11485, 11940, 12479, 12479, 12109, 12683, 13138, + 704}, + {7928, 6994, 8239, 9733, 7218, 6539, 8147, 9892, 9812, 9105, 10240, 11629, 12109, 11216, 12109, 13138, 4167}, + {8640, 7724, 9233, 10970, 8013, 7185, 8483, 10150, 9656, 8694, 9656, 10970, 11348, 10334, 11090, 12288, 3391}, + {20480, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, 18432, + 91}, + {10061, 8863, 9733, 11090, 8982, 7970, 8806, 9976, 10061, 9105, 9812, 10742, 11485, 10334, 10970, 11781, 2557}, + {10431, 9368, 10240, 11348, 9368, 8433, 9233, 10334, 10431, 9437, 10061, 10970, 11781, 10635, 11216, 11940, 2119}, + {13988, 12479, 12683, 12902, 12683, 11348, 11485, 11940, 12902, 11629, 11940, 12288, 13396, 12109, 12479, 12683, + 828}, + {10431, 9300, 10334, 11629, 9508, 8483, 9437, 10635, 10635, 9656, 10431, 11348, 11940, 10854, 11485, 12288, 1946}, + {12479, 11216, 11629, 12479, 11348, 10150, 10635, 11348, 11940, 10854, 11216, 11940, 12902, 11629, 11940, 12479, + 1146}, + {13396, 12109, 12288, 12902, 12109, 10854, 11216, 11781, 12479, 11348, 11629, 12109, 13138, 11940, 12288, 12683, + 928}, + {2443, 5289, 11629, 16384, 5170, 6730, 11940, 16384, 11216, 11629, 14731, 18432, 15725, 15725, 18432, 20480, 13396}, + {3328, 5009, 10531, 15186, 5040, 6031, 10531, 14731, 10431, 10431, 13396, 16384, 15186, 14731, 16384, 18432, 11629}, + {14336, 12902, 12902, 13396, 12902, 11629, 11940, 12288, 13138, 12109, 12288, 12902, 13677, 12683, 12902, 13138, + 711}, + {4300, 5204, 9437, 13396, 5430, 5776, 9300, 12902, 9656, 9437, 11781, 14731, 13396, 12902, 14731, 16384, 8982}, + {5394, 5776, 8982, 12288, 5922, 5901, 8640, 11629, 9105, 8694, 10635, 13138, 12288, 11629, 13138, 14731, 6844}, + {17234, 15725, 15725, 15725, 15725, 14731, 14731, 14731, 16384, 14731, 14731, 15186, 16384, 15186, 15186, 15186, + 272}, + {6461, 6286, 8806, 11348, 6566, 6215, 8334, 10742, 9233, 8535, 10061, 12109, 11781, 10970, 12109, 13677, 5394}, + {6674, 6487, 8863, 11485, 6702, 6286, 8334, 10635, 9168, 8483, 9976, 11940, 11629, 10854, 11940, 13396, 5105}, + {15186, 13677, 13677, 13988, 13677, 12479, 12479, 12683, 13988, 12683, 12902, 13138, 14336, 13138, 13396, 13677, + 565}, + {7844, 7252, 8922, 10854, 7389, 6815, 8383, 10240, 9508, 8750, 9892, 11485, 11629, 10742, 11629, 12902, 3842}, + {9233, 8239, 9233, 10431, 8334, 7424, 8483, 9892, 10061, 9105, 10061, 11216, 11781, 10742, 11485, 12479, 2906}, + {20480, 20480, 14731, 14731, 20480, 20480, 14336, 14336, 15186, 14336, 14731, 14731, 15186, 14731, 14731, 15186, + 266}, + {10531, 9300, 9976, 11090, 9437, 8286, 9042, 10061, 10431, 9368, 9976, 10854, 11781, 10531, 11090, 11781, 2233}, + {11629, 10334, 10970, 12109, 10431, 9368, 10061, 10970, 11348, 10240, 10854, 11485, 12288, 11216, 11629, 12288, + 1469}, + {952, 6787, 15725, 20480, 6646, 9733, 16384, 20480, 14731, 15725, 18432, 20480, 18432, 20480, 20480, 20480, 18432}, + {9437, 8806, 10742, 12288, 8982, 8483, 9892, 11216, 10742, 9892, 10854, 11940, 12109, 11090, 11781, 12683, 1891}, + {12902, 11629, 11940, 12479, 11781, 10531, 10854, 11485, 12109, 10970, 11348, 11940, 12902, 11781, 12109, 12479, + 1054}, + {2113, 5323, 11781, 16384, 5579, 7252, 12288, 16384, 11781, 12288, 15186, 18432, 15725, 16384, 18432, 20480, 12902}, + {2463, 5965, 11348, 15186, 5522, 6934, 11216, 14731, 10334, 10635, 13677, 16384, 13988, 13988, 15725, 18432, 10334}, + {3779, 5541, 9812, 13677, 5467, 6122, 9656, 13138, 9581, 9437, 11940, 14731, 13138, 12683, 14336, 16384, 8982}, + {3181, 5154, 10150, 14336, 5448, 6311, 10334, 13988, 10334, 10431, 13138, 15725, 14336, 13988, 15725, 18432, 10431}, + {4841, 5560, 9105, 12479, 5756, 5944, 8922, 12109, 9300, 8982, 11090, 13677, 12479, 12109, 13677, 15186, 7460}, + {5859, 6009, 8922, 11940, 6144, 5987, 8483, 11348, 9042, 8535, 10334, 12683, 11940, 11216, 12683, 14336, 6215}, + {4250, 4916, 8587, 12109, 5901, 6191, 9233, 12288, 10150, 9892, 11940, 14336, 13677, 13138, 14731, 16384, 8383}, + {7153, 6702, 8863, 11216, 6904, 6410, 8239, 10431, 9233, 8433, 9812, 11629, 11629, 10742, 11781, 13138, 4753}, + {6674, 7057, 9508, 11629, 7120, 6964, 8806, 10635, 9437, 8750, 10061, 11629, 11485, 10531, 11485, 12683, 4062}, + {5341, 5289, 8013, 10970, 6311, 6262, 8640, 11090, 10061, 9508, 11090, 13138, 12902, 12288, 13396, 15186, 6539}, + {8057, 7533, 9300, 11216, 7685, 7057, 8535, 10334, 9508, 8694, 9812, 11216, 11485, 10431, 11348, 12479, 3541}, + {9168, 8239, 9656, 11216, 8483, 7608, 8806, 10240, 9892, 8982, 9812, 11090, 11485, 10431, 11090, 12109, 2815}, + {558, 7928, 18432, 20480, 7724, 12288, 20480, 20480, 18432, 20480, 20480, 20480, 20480, 20480, 20480, 20480, 20480}, + {9892, 8806, 9976, 11348, 9042, 8057, 9042, 10240, 10240, 9233, 9976, 11090, 11629, 10531, 11216, 12109, 2371}, + {11090, 9812, 10531, 11629, 9976, 8863, 9508, 10531, 10854, 9733, 10334, 11090, 11940, 10742, 11216, 11940, 1821}, + {7354, 6964, 9042, 11216, 7153, 6592, 8334, 10431, 9233, 8483, 9812, 11485, 11485, 10531, 11629, 12902, 4349}, + {11348, 10150, 10742, 11629, 10150, 9042, 9656, 10431, 10854, 9812, 10431, 11216, 12109, 10970, 11485, 12109, 1700}, + {20480, 20480, 8694, 10150, 20480, 20480, 8982, 10240, 8982, 9105, 9976, 10970, 10431, 10431, 11090, 11940, 1610}, + {9233, 8192, 9368, 10970, 8286, 7496, 8587, 9976, 9812, 8863, 9733, 10854, 11348, 10334, 11090, 11940, 3040}, + {4202, 5716, 9733, 13138, 5598, 6099, 9437, 12683, 9300, 9168, 11485, 13988, 12479, 12109, 13988, 15725, 7804}, + {4400, 5965, 9508, 12479, 6009, 6360, 9105, 11781, 9300, 8982, 10970, 13138, 12109, 11629, 13138, 14731, 6994}}; + +const LC3_FLOAT sns_LFCB[8][32] = { + {2.26283365592678, 2.94516479191376, -2.18610707009979, 0.693688236528920, -1.29752132315296, 0.914652037830672, + -2.51428812578962, -0.922188404812385, 0.790322288369266, 1.44775580178724, 0.793354526417474, 2.72425347385034, + -0.530830198375400, 1.68728410845006, -2.95183272801858, 0.101878342785628, 2.68254575498426, 4.82697923680403, + 0.0878419936470335, 1.39102308204326, 0.384585893889182, 1.93227399441719, 0.175080462899884, -1.18817020250556, + 2.53322203327061, 3.99889837485606, 0.507902593186381, 3.16856825107569, 1.89414766731764, 0.948880604517188, + -1.88026757045628, 0.246375746277129}, + {0.813311269061339, 2.41143317956679, -1.97152135675228, 0.955609857158220, -0.740369057177853, + 1.74293043435257, -2.89175271384373, 0.632495141440552, 0.628401261876199, 2.72399951674952, + 0.0143931185523454, 2.95947572404824, -0.212690682812164, 2.43614509237656, -1.59393496773345, + 0.589857324228917, 1.32738010899420, 3.11947804492488, -0.569586840238501, 1.98146479199466, + -0.160588785536510, 3.01030180412057, -0.750522832248985, 0.366792873662636, 2.11274642695908, + 4.07901751451956, 1.58838449789527, 3.25853458159407, 1.25108694609232, 2.13239439249982, + -1.26431072758705, 0.955621773393099}, + {-0.530193494871436, 0.960455106400727, -1.78718619681006, 0.575230787038733, -0.345372483642106, + 1.90906626859986, -2.00450666759434, 1.08736431254641, 0.393117923540450, 2.31083268737528, + -0.567834844729679, 1.84953559268461, 0.00576613628377097, 2.33019429078225, -0.109918772878022, + 0.619047646793466, 0.130185273804048, 1.39513671385178, -1.14506015668811, 1.11265796388770, + -0.539366809557710, 3.06543893826204, -1.03943893342231, 1.30957830409096, 1.26288411502064, + 2.82285661102496, 1.72899023869209, 2.42230591328599, 0.590451210720628, 2.72345350344278, + 0.311424976968699, 1.52046776741766}, + {-1.35664835903442, -0.443226488076917, -1.91865895685577, -0.114603419462889, -0.313285696247940, + 1.54408483842665, -0.750912273903127, 0.608628624535820, 0.480007710866901, 0.935051269566529, + -0.654760467916745, 0.563284922322364, 0.424871484383745, 1.77983777835091, 0.388609072919257, + 1.26731313851796, -0.338533088511347, 0.250295315918722, -1.66968488172598, -0.220107509420743, + -0.529309078789857, 2.50110160870008, -1.13577508937648, 1.68330687280491, 0.761513512430427, + 1.72607212849580, 1.00692230241726, 1.79446077643261, 0.608358583293714, 2.76986076866588, + 1.83670210306430, 1.97647400419457}, + {-1.59952176563196, -1.22913612425590, -1.79399121836596, -0.646050637436029, -0.402977242824477, + 1.09344960761455, 0.441202104904691, 0.131174567547348, 0.447815138050143, -0.274743911383688, + -0.479458998475743, 0.139917088125072, 0.473128952158668, 1.44411295390082, 0.512932649517584, + 2.41961047769804, -0.368219235899667, -0.393613839379793, -1.84534417603682, -0.774965611552366, + 0.190433547437932, 1.93089592978934, -1.04197903837494, 1.25100924225127, 0.522117937976170, + 0.647144377348619, 0.377121231816382, 1.52177910653089, 0.878171010011082, 2.54286973254946, + 2.25634191839874, 1.94043867177462}, + {-1.44098768430095, -1.55590039118170, -1.35738404257288, -0.952351370449625, -0.372020853465227, + 0.647479549518278, 1.20190987601009, -0.296149157743752, 0.209734214552234, -0.902077696828602, + -0.173894661902889, 0.359641093366222, 0.858894199321281, 1.51995177009730, 0.628112597063497, + 2.25174252572187, -0.191689946715961, -0.643458173054701, -1.56468027328802, -0.594063874149117, + 2.56062918106522, 0.572153810961837, -0.0152060098993382, 0.942375751628615, 0.118680069757121, + -0.331148521217238, 0.476370766899498, 1.17196706537602, 1.11912510950950, 2.02046263825019, + 2.04818998463474, 2.23375847282686}, + {-1.14381648305821, -1.49688655952376, -0.705444279353869, -1.07405247226150, -0.0783414177323738, + 0.0361790752449642, 1.32742857257290, -0.207013516525629, 0.00656691996428021, -0.940681511945404, + 0.0680162705515438, 0.689461354774589, 1.19111160854435, 1.47199393750425, 0.822621796430634, + 0.526537030991201, -0.154782377153908, -0.642570736856943, -1.11746759076420, 0.136937680628923, + 2.81896398245248, -0.811741794081091, 2.07048391716707, 0.826250483374133, -0.452346827507370, + -0.884042570848749, 1.08754740372170, 0.489394596980695, 1.01857661550342, 0.830045859400910, + 2.19526837458568, 1.98835977758407}, + {-0.755203767909064, -1.11689986501469, -0.0478172944777711, -0.758087707094905, 0.0970441303992295, + -0.297092807178889, 1.22049081140984, 0.134924916642080, -0.0861242342061857, -0.633697038974310, + 0.295125948369794, 0.639790176833105, 0.996189669638358, 0.977682473891761, 0.875891424655081, + -0.396591513227999, -0.234207177774392, -0.723193223444072, -0.533981663366786, 0.818242891264338, + 0.656670875696161, -1.17641810861903, 3.42948918081689, 0.439952741120956, -0.700352426161103, + -1.12697340645478, 1.08756266099221, -0.0622795715718769, 0.620453891011724, -0.0275569173888263, + 2.02659613836619, 1.27232672554701}}; + +const LC3_FLOAT sns_HFCB[8][32] = { + {0.232028419124465, -1.29503936673618, 0.139285716045803, -0.316513102185725, 0.879518405226496, + -0.296701922455375, 0.340981100469697, -1.41229759077597, -0.228839511827379, -1.07148628544449, + -0.590988511188051, -0.848434098836164, 1.14069145562382, -0.376283237967464, 0.665004120598402, + -0.826265953982679, 1.41008326832173, 0.361386817574348, 0.437469239330329, 0.648100318996503, + 1.11919833091304, 0.141847497087176, 0.504046955390252, -0.501076050479357, 3.74970982709642, + -1.15258990980549, 1.02827246422140, 0.128831971707817, 1.34033030334757, 2.13843105419313, + 0.564830487355396, -0.422460547586087}, + {-1.00890270604455, -1.79929965384339, -0.258185126171752, -0.477747657209805, 0.298340096007189, + -0.975004919174553, 0.268899788946055, -1.48522119349852, -0.333719069784662, -1.41767015456261, + -0.0711737758537628, -0.583226810708889, 0.964016892398293, 0.0425675462096105, 1.09790764690795, + -0.671181232766603, 0.754441907835468, -0.0219991705427826, 0.305440419605961, 0.682299133640680, + 1.23465532536005, -0.110660070633151, 0.826982162959097, -0.325678006081417, 1.52342611847045, + -1.10800885906241, 1.09770519389828, 0.689439395264878, 1.38996825067789, 4.24711267303104, + 1.59184977958743, 0.326149625049801}, + {-2.14223502789471, -1.88703147531519, -0.650804572670110, -0.551162075879755, -0.915386396405710, + -1.35857500246993, 0.0563335684828033, -1.18603579834700, -0.809321359324656, -1.54891762265441, + 0.345719522947313, 0.0900423688142873, 0.381461205984798, 0.516547696592306, 1.38342667112079, + -0.228495592779472, -1.30550584958631, -0.579368833633824, -0.00738786566478374, 0.253247464332976, + 0.589170238085318, -0.282824592543629, 1.11981236291828, 0.0280798194947077, -0.457715661897855, + -0.562615116512472, 0.768645545764776, 1.12346905009575, 1.04467921708883, 2.89734109830439, + 2.39771699015146, 1.39171313342261}, + {-2.37533813570664, -1.80991659687332, -1.06815731781969, -0.484788283381197, -2.20645974739762, + -0.983721105837444, 0.0499114046826685, -0.625001634441352, -1.63587876923797, -1.45296062475530, + 0.300549460996251, 0.845025007556886, -0.482849340608998, 0.251716881864630, 1.34327358628285, + 0.518980852551937, -1.87133711350971, -0.879427960941070, -0.495649854710252, 0.0735842143788469, + -1.37192459653166, -0.00659813474614194, 1.17914044332734, 0.262054554763133, -0.798711008243192, + -0.220562123765675, 0.206081977740766, 1.30934523106594, 0.635822746244367, 0.932730658026815, + 3.03697343600704, 2.23146614636474}, + {-2.23041933049655, -1.76340038479206, -1.61928741524302, -0.238388394455814, -2.74142180959951, + -0.652956939100809, -0.0954130727414369, 0.153902497468304, -1.88486397330982, -1.03182970062270, + -1.11865218295857, 1.06572384501716, -1.81632721260589, -0.216179967524303, 0.822978836855922, + 1.36721896340278, -1.24008685156305, -0.850685023408119, -0.806651271118393, 0.314216709389010, + -2.37095707241577, 0.285929279627216, 1.07987429197260, 0.360590806085767, -0.386819329309100, + -0.349842880336644, -0.342805735091998, 1.35511964713935, -0.274733755518482, -0.292822249729810, + 2.66424350337151, 2.61179442169688}, + {-2.17595881223696, -1.83418428467950, -2.18762566441756, -0.143024507285504, -2.86139074276891, + -0.989986992921811, -0.760166146083885, 0.576386497810755, -1.64496691316356, -0.690642640272584, + -2.44089151148049, 0.737582999377756, -2.80279512728555, -0.534074091124504, 0.215876798515679, + 2.18023038253092, -1.26712924866274, -0.779397050155816, -1.22431891984401, 0.234729880923679, + -2.00779782682360, 0.0460445529952971, 0.697536239067500, 0.635623722053700, -0.375901062231203, + -0.753432770250495, -0.754939404625340, 1.42311381470799, -1.54923372430695, -0.810404296853182, + 1.39304485032606, 2.66540340196570}, + {-2.29065913541000, -1.80480980687405, -2.63757586939054, 0.0683186673649074, -2.88841597105271, + -1.61467224598900, -2.32758120177007, 0.795092603798871, -1.40515778046612, -0.428843804532171, + -2.22854732450735, 0.256590452459912, -3.23385724833864, -0.640786096262196, -0.404925753080293, + 2.53596092750107, -2.03670813003907, -0.732182927291826, -1.70157770043181, 0.144600134479837, + -1.66688540224395, -0.602596415577886, -0.912548817371081, 0.959012467178154, -0.657836899930538, + -0.988596593396384, -1.04196177632000, 1.15706449190905, -2.44239710278007, -0.788868098756483, + 0.403834023595745, 2.40103554105707}, + {-2.53286397979846, -1.73679545317401, -2.97897749575096, 0.0883061717288066, -2.95182608262521, + -2.40712302385116, -3.77155485385656, 0.596564632144913, -1.46666471326146, -0.494960215408874, + -1.89509228210853, -0.491963359762378, -3.45908714491473, -0.869745032374135, -1.07025605870523, + 2.20121098860036, -2.89685162242381, -0.888348514821255, -2.24491913755611, -0.0682120178880174, + -1.92631846258406, -2.26568728632575, -3.57684747062773, 1.30745156688653, -1.28163964243603, + -1.28790471791471, -1.50335652955529, 0.406319437516838, -3.02457606944550, -0.935353148761338, + -0.656270971328114, 1.75920379670881}}; + +const LC3_INT pvq_enc_A[16][11] = {{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + {0, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19}, + {0, 1, 5, 13, 25, 41, 61, 85, 113, 145, 181}, + {0, 1, 7, 25, 63, 129, 231, 377, 575, 833, 1159}, + {0, 1, 9, 41, 129, 321, 681, 1289, 2241, 3649, 5641}, + {0, 1, 11, 61, 231, 681, 1683, 3653, 7183, 13073, 22363}, + {0, 1, 13, 85, 377, 1289, 3653, 8989, 19825, 40081, 75517}, + {0, 1, 15, 113, 575, 2241, 7183, 19825, 48639, 108545, 224143}, + {0, 1, 17, 145, 833, 3649, 13073, 40081, 108545, 265729, 598417}, + {0, 1, 19, 181, 1159, 5641, 22363, 75517, 224143, 598417, 1462563}, + {0, 1, 21, 221, 1561, 8361, 36365, 134245, 433905, 1256465, 3317445}, + {0, 1, 23, 265, 2047, 11969, 56695, 227305, 795455, 2485825, 7059735}, + {0, 1, 25, 313, 2625, 16641, 85305, 369305, 1392065, 4673345, 14218905}, + {0, 1, 27, 365, 3303, 22569, 124515, 579125, 2340495, 8405905, 27298155}, + {0, 1, 29, 421, 4089, 29961, 177045, 880685, 3800305, 14546705, 50250765}, + {0, 1, 31, 481, 4991, 39041, 246047, 1303777, 5984767, 24331777, 89129247}}; + +const LC3_FLOAT lp_scale_factors[6] = {1, 1, 0.6666666666666666, .5, 0.3333333333333333, 0.16666666666666666}; + + +/* 12.8 kHz resampler */ +const LC3_FLOAT highpass50_filt_b[3] = {0.9827947082978771, -1.965589416595754, 0.9827947082978771}; +const LC3_FLOAT highpass50_filt_a[3] = {1, -1.9652933726226904, 0.9658854605688177}; + +const LC3_INT32 resamp_params[][4] = { + {24, 5, 0, 15}, + {12, 10, 1, 3}, + {8, 15, 1, 7}, + {6, 20, 2, 3}, + {4, 30, 3, 3}, + {2, 60, 7, 1} +}; + + +const LC3_FLOAT lp_filter_8[240] = {0.0065408750, 0.0127360141, -0.0320970677, -0.1382038444, 0.8005587459, -0.1382038444, -0.0320970677, 0.0127360141, 0.0065408750, 0.0000000000, 0.0064595463, 0.0084537705, -0.0391003005, -0.1198658869, 0.7945935130, -0.1519452035, -0.0230523963, 0.0167804975, 0.0063002659, -0.0002451667, 0.0060938913, 0.0041435249, -0.0439039879, -0.0980933905, 0.7768620253, -0.1600013375, -0.0122310519, 0.0203715712, 0.0057131811, -0.0005356151, 0.0054914863, 0.0000000000, -0.0464562289, -0.0740769655, 0.7478516698, -0.1614013463, 0.0000000000, 0.0232978407, 0.0047708568, -0.0008596397, 0.0047065411, -0.0038048958, -0.0468063876, -0.0489920303, 0.7083564401, -0.1553338468, 0.0131809860, 0.0253629088, 0.0034824028, -0.0012012133, 0.0037965439, -0.0071282135, -0.0450960808, -0.0239577144, 0.6594504118, -0.1411849856, 0.0267735831, 0.0263961889, 0.0018761361, -0.0015404741, 0.0028190494, -0.0098603060, -0.0415467210, -0.0000000000, 0.6024519205, -0.1185704023, 0.0401797108, 0.0262632743, -0.0000000000, -0.0018545259, 0.0018287648, -0.0119272992, -0.0364444591, 0.0219798349, 0.5388799906, -0.0873604342, 0.0527642742, 0.0248753466, -0.0020790326, -0.0021185349, 0.0008750616, -0.0132916924, -0.0301232301, 0.0412303619, 0.4704038501, -0.0476967618, 0.0638811216, 0.0221970305, -0.0042766319, -0.0023070835, 0.0000000000, -0.0139512215, -0.0229468606, 0.0571681485, 0.3987891078, 0.0000000000, 0.0729012638, 0.0182522610, -0.0064938627, -0.0023957258, -0.0007630716, -0.0139361415, -0.0152910165, 0.0693885013, 0.3258404732, 0.0550325289, 0.0792422444, 0.0131276902, -0.0086209681, -0.0023626641, -0.0013903243, -0.0133052040, -0.0075258445, 0.0776687115, 0.2533447146, 0.1164389849, 0.0823974460, 0.0069732964, -0.0105420630, -0.0021904600, -0.0018676731, -0.0121405739, -0.0000000000, 0.0819641128, 0.1830149740, 0.1830149740, 0.0819641128, -0.0000000000, -0.0121405739, -0.0018676731, -0.0021904600, -0.0105420630, 0.0069732964, 0.0823974460, 0.1164389849, 0.2533447146, 0.0776687115, -0.0075258445, -0.0133052040, -0.0013903243, -0.0023626641, -0.0086209681, 0.0131276902, 0.0792422444, 0.0550325289, 0.3258404732, 0.0693885013, -0.0152910165, -0.0139361415, -0.0007630716, -0.0023957258, -0.0064938627, 0.0182522610, 0.0729012638, 0.0000000000, 0.3987891078, 0.0571681485, -0.0229468606, -0.0139512215, 0.0000000000, -0.0023070835, -0.0042766319, 0.0221970305, 0.0638811216, -0.0476967618, 0.4704038501, 0.0412303619, -0.0301232301, -0.0132916924, 0.0008750616, -0.0021185349, -0.0020790326, 0.0248753466, 0.0527642742, -0.0873604342, 0.5388799906, 0.0219798349, -0.0364444591, -0.0119272992, 0.0018287648, -0.0018545259, -0.0000000000, 0.0262632743, 0.0401797108, -0.1185704023, 0.6024519205, -0.0000000000, -0.0415467210, -0.0098603060, 0.0028190494, -0.0015404741, 0.0018761361, 0.0263961889, 0.0267735831, -0.1411849856, 0.6594504118, -0.0239577144, -0.0450960808, -0.0071282135, 0.0037965439, -0.0012012133, 0.0034824028, 0.0253629088, 0.0131809860, -0.1553338468, 0.7083564401, -0.0489920303, -0.0468063876, -0.0038048958, 0.0047065411, -0.0008596397, 0.0047708568, 0.0232978407, 0.0000000000, -0.1614013463, 0.7478516698, -0.0740769655, -0.0464562289, 0.0000000000, 0.0054914863, -0.0005356151, 0.0057131811, 0.0203715712, -0.0122310519, -0.1600013375, 0.7768620253, -0.0980933905, -0.0439039879, 0.0041435249, 0.0060938913, -0.0002451667, 0.0063002659, 0.0167804975, -0.0230523963, -0.1519452035, 0.7945935130, -0.1198658869, -0.0391003005, 0.0084537705, 0.0064595463}; + +const LC3_FLOAT lp_filter_16[240] = { +-0.0018676731, 0.0065408750, -0.0121405739, 0.0127360141, -0.0000000000, -0.0320970677, 0.0819641128, -0.1382038444, 0.1830149740, 0.8005587459, 0.1830149740, -0.1382038444, 0.0819641128, -0.0320970677, -0.0000000000, 0.0127360141, -0.0121405739, 0.0065408750, -0.0018676731, 0.0000000000, -0.0021904600, 0.0064595463, -0.0105420630, 0.0084537705, 0.0069732964, -0.0391003005, 0.0823974460, -0.1198658869, 0.1164389849, 0.7945935130, 0.2533447146, -0.1519452035, 0.0776687115, -0.0230523963, -0.0075258445, 0.0167804975, -0.0133052040, 0.0063002659, -0.0013903243, -0.0002451667, -0.0023626641, 0.0060938913, -0.0086209681, 0.0041435249, 0.0131276902, -0.0439039879, 0.0792422444, -0.0980933905, 0.0550325289, 0.7768620253, 0.3258404732, -0.1600013375, 0.0693885013, -0.0122310519, -0.0152910165, 0.0203715712, -0.0139361415, 0.0057131811, -0.0007630716, -0.0005356151, -0.0023957258, 0.0054914863, -0.0064938627, 0.0000000000, 0.0182522610, -0.0464562289, 0.0729012638, -0.0740769655, 0.0000000000, 0.7478516698, 0.3987891078, -0.1614013463, 0.0571681485, 0.0000000000, -0.0229468606, 0.0232978407, -0.0139512215, 0.0047708568, 0.0000000000, -0.0008596397, -0.0023070835, 0.0047065411, -0.0042766319, -0.0038048958, 0.0221970305, -0.0468063876, 0.0638811216, -0.0489920303, -0.0476967618, 0.7083564401, 0.4704038501, -0.1553338468, 0.0412303619, 0.0131809860, -0.0301232301, 0.0253629088, -0.0132916924, 0.0034824028, 0.0008750616, -0.0012012133, -0.0021185349, 0.0037965439, -0.0020790326, -0.0071282135, 0.0248753466, -0.0450960808, 0.0527642742, -0.0239577144, -0.0873604342, 0.6594504118, 0.5388799906, -0.1411849856, 0.0219798349, 0.0267735831, -0.0364444591, 0.0263961889, -0.0119272992, 0.0018761361, 0.0018287648, -0.0015404741, -0.0018545259, 0.0028190494, -0.0000000000, -0.0098603060, 0.0262632743, -0.0415467210, 0.0401797108, -0.0000000000, -0.1185704023, 0.6024519205, 0.6024519205, -0.1185704023, -0.0000000000, 0.0401797108, -0.0415467210, 0.0262632743, -0.0098603060, -0.0000000000, 0.0028190494, -0.0018545259, -0.0015404741, 0.0018287648, 0.0018761361, -0.0119272992, 0.0263961889, -0.0364444591, 0.0267735831, 0.0219798349, -0.1411849856, 0.5388799906, 0.6594504118, -0.0873604342, -0.0239577144, 0.0527642742, -0.0450960808, 0.0248753466, -0.0071282135, -0.0020790326, 0.0037965439, -0.0021185349, -0.0012012133, 0.0008750616, 0.0034824028, -0.0132916924, 0.0253629088, -0.0301232301, 0.0131809860, 0.0412303619, -0.1553338468, 0.4704038501, 0.7083564401, -0.0476967618, -0.0489920303, 0.0638811216, -0.0468063876, 0.0221970305, -0.0038048958, -0.0042766319, 0.0047065411, -0.0023070835, -0.0008596397, 0.0000000000, 0.0047708568, -0.0139512215, 0.0232978407, -0.0229468606, 0.0000000000, 0.0571681485, -0.1614013463, 0.3987891078, 0.7478516698, 0.0000000000, -0.0740769655, 0.0729012638, -0.0464562289, 0.0182522610, 0.0000000000, -0.0064938627, 0.0054914863, -0.0023957258, -0.0005356151, -0.0007630716, 0.0057131811, -0.0139361415, 0.0203715712, -0.0152910165, -0.0122310519, 0.0693885013, -0.1600013375, 0.3258404732, 0.7768620253, 0.0550325289, -0.0980933905, 0.0792422444, -0.0439039879, 0.0131276902, 0.0041435249, -0.0086209681, 0.0060938913, -0.0023626641, -0.0002451667, -0.0013903243, 0.0063002659, -0.0133052040, 0.0167804975, -0.0075258445, -0.0230523963, 0.0776687115, -0.1519452035, 0.2533447146, 0.7945935130, 0.1164389849, -0.1198658869, 0.0823974460, -0.0391003005, 0.0069732964, 0.0084537705, -0.0105420630, 0.0064595463, -0.0021904600 +}; + +const LC3_FLOAT lp_filter_24[240] = { +-0.0015380557, 0.0005833744, 0.0043605831, -0.0028510878, -0.0088611282, 0.0084906761, 0.0147980200, -0.0200821534, -0.0213980451, 0.0425874144, 0.0274869073, -0.0921358988, -0.0317978412, 0.3136025667, 0.5337058306, 0.3136025667, -0.0317978412, -0.0921358988, 0.0274869073, 0.0425874144, -0.0213980451, -0.0200821534, 0.0147980200, 0.0084906761, -0.0088611282, -0.0028510878, 0.0043605831, 0.0005833744, -0.0015380557, 0.0000000000, -0.0014123565, 0.0000000000, 0.0043063643, -0.0013860217, -0.0093008140, 0.0056358469, 0.0165835638, -0.0152979074, -0.0260668676, 0.0351761840, 0.0381121002, -0.0799105912, -0.0582402907, 0.2658593953, 0.5297290087, 0.3592533171, 0.0000000000, -0.1012968048, 0.0146532226, 0.0486008413, -0.0153682642, -0.0242963061, 0.0121681746, 0.0111869983, -0.0079515325, -0.0043292418, 0.0042001773, 0.0012191766, -0.0015971506, -0.0001634445, -0.0012363506, -0.0005087144, 0.0040625944, -0.0000000000, -0.0092907613, 0.0027623500, 0.0175088495, -0.0101940110, -0.0292693246, 0.0267864745, 0.0462590009, -0.0653955936, -0.0790469348, 0.2172269821, 0.5179080367, 0.4016346335, 0.0366883539, -0.1066675633, -0.0000000000, 0.0528281629, -0.0081540346, -0.0276978146, 0.0087517938, 0.0135810468, -0.0065735374, -0.0057473122, 0.0038087873, 0.0018793662, -0.0015751094, -0.0003570767, -0.0010269828, -0.0009268829, 0.0036609909, 0.0012507574, -0.0088701360, 0.0000000000, 0.0175974593, -0.0050172298, -0.0309708193, 0.0178490561, 0.0517791398, -0.0493846424, -0.0941233262, 0.1688964665, 0.4985677898, 0.4396336079, 0.0776259899, -0.1076008976, -0.0159718096, 0.0549316332, 0.0000000000, -0.0300640538, 0.0046488643, 0.0155318938, -0.0047521424, -0.0070280419, 0.0031805711, 0.0025310293, -0.0014603067, -0.0005730931, -0.0008008089, -0.0012451154, 0.0031376940, 0.0023216018, -0.0080937156, -0.0025365972, 0.0169086065, -0.0000000000, -0.0312042590, 0.0087873237, 0.0546427406, -0.0326613523, -0.1035559028, 0.1220099851, 0.4722376168, 0.4722376168, 0.1220099851, -0.1035559028, -0.0326613523, 0.0546427406, 0.0087873237, -0.0312042590, -0.0000000000, 0.0169086065, -0.0025365972, -0.0080937156, 0.0023216018, 0.0031376940, -0.0012451154, -0.0008008089, -0.0005730931, -0.0014603067, 0.0025310293, 0.0031805711, -0.0070280419, -0.0047521424, 0.0155318938, 0.0046488643, -0.0300640538, 0.0000000000, 0.0549316332, -0.0159718096, -0.1076008976, 0.0776259899, 0.4396336079, 0.4985677898, 0.1688964665, -0.0941233262, -0.0493846424, 0.0517791398, 0.0178490561, -0.0309708193, -0.0050172298, 0.0175974593, 0.0000000000, -0.0088701360, 0.0012507574, 0.0036609909, -0.0009268829, -0.0010269828, -0.0003570767, -0.0015751094, 0.0018793662, 0.0038087873, -0.0057473122, -0.0065735374, 0.0135810468, 0.0087517938, -0.0276978146, -0.0081540346, 0.0528281629, -0.0000000000, -0.1066675633, 0.0366883539, 0.4016346335, 0.5179080367, 0.2172269821, -0.0790469348, -0.0653955936, 0.0462590009, 0.0267864745, -0.0292693246, -0.0101940110, 0.0175088495, 0.0027623500, -0.0092907613, -0.0000000000, 0.0040625944, -0.0005087144, -0.0012363506, -0.0001634445, -0.0015971506, 0.0012191766, 0.0042001773, -0.0043292418, -0.0079515325, 0.0111869983, 0.0121681746, -0.0242963061, -0.0153682642, 0.0486008413, 0.0146532226, -0.1012968048, 0.0000000000, 0.3592533171, 0.5297290087, 0.2658593953, -0.0582402907, -0.0799105912, 0.0381121002, 0.0351761840, -0.0260668676, -0.0152979074, 0.0165835638, 0.0056358469, -0.0093008140, -0.0013860217, 0.0043063643, 0.0000000000, -0.0014123565 +}; + +const LC3_FLOAT lp_filter_32[240] = { +-0.0009272629, -0.0009338366, 0.0014095247, 0.0032704375, -0.0000000000, -0.0060702870, -0.0049301530, 0.0063680070, 0.0131316371, -0.0000000000, -0.0207733605, -0.0160485338, 0.0200898554, 0.0409820564, -0.0000000000, -0.0691019222, -0.0592852011, 0.0915074870, 0.3012259603, 0.4002793729, 0.3012259603, 0.0915074870, -0.0592852011, -0.0691019222, -0.0000000000, 0.0409820564, 0.0200898554, -0.0160485338, -0.0207733605, -0.0000000000, 0.0131316371, 0.0063680070, -0.0049301530, -0.0060702870, -0.0000000000, 0.0032704375, 0.0014095247, -0.0009338366, -0.0009272629, 0.0000000000, -0.0007702371, -0.0010952300, 0.0009143824, 0.0032297731, 0.0009380680, -0.0052710315, -0.0059636496, 0.0042268853, 0.0131980944, 0.0034866482, -0.0182222296, -0.0195501503, 0.0133867916, 0.0411987230, 0.0109899174, -0.0599329434, -0.0705924928, 0.0582194924, 0.2694399953, 0.3972967565, 0.3297252059, 0.1266723573, -0.0436802171, -0.0759726018, -0.0119788572, 0.0388343558, 0.0263821371, -0.0115261981, -0.0225480404, -0.0037629222, 0.0124376733, 0.0083902488, -0.0035641068, -0.0066526020, -0.0010395163, 0.0031501330, 0.0018982720, -0.0006951622, -0.0010592674, -0.0001225834, -0.0006006067, -0.0011813320, 0.0004375308, 0.0030469457, 0.0017412014, -0.0043104840, -0.0066458462, 0.0020717625, 0.0126814544, 0.0065638451, -0.0150616150, -0.0219519939, 0.0065904930, 0.0396211222, 0.0206151810, -0.0490466952, -0.0776669234, 0.0275162645, 0.2352019250, 0.3884310126, 0.3541782200, 0.1629202366, -0.0238483809, -0.0800006688, -0.0244960152, 0.0346942507, 0.0319405608, -0.0061155260, -0.0234031938, -0.0076455083, 0.0110985152, 0.0101857856, -0.0019024479, -0.0069680708, -0.0021383159, 0.0028565906, 0.0023532705, -0.0003815358, -0.0011535417, -0.0002678075, -0.0004298199, -0.0011978629, 0.0000000000, 0.0027457431, 0.0023854284, -0.0032469314, -0.0069756107, 0.0000000000, 0.0116489204, 0.0091261305, -0.0114734303, -0.0232281145, 0.0000000000, 0.0364506319, 0.0285840742, -0.0370384827, -0.0807006732, 0.0000000000, 0.1993945539, 0.3739258349, 0.3739258349, 0.1993945539, 0.0000000000, -0.0807006732, -0.0370384827, 0.0285840742, 0.0364506319, 0.0000000000, -0.0232281145, -0.0114734303, 0.0091261305, 0.0116489204, 0.0000000000, -0.0069756107, -0.0032469314, 0.0023854284, 0.0027457431, 0.0000000000, -0.0011978629, -0.0004298199, -0.0002678075, -0.0011535417, -0.0003815358, 0.0023532705, 0.0028565906, -0.0021383159, -0.0069680708, -0.0019024479, 0.0101857856, 0.0110985152, -0.0076455083, -0.0234031938, -0.0061155260, 0.0319405608, 0.0346942507, -0.0244960152, -0.0800006688, -0.0238483809, 0.1629202366, 0.3541782200, 0.3884310126, 0.2352019250, 0.0275162645, -0.0776669234, -0.0490466952, 0.0206151810, 0.0396211222, 0.0065904930, -0.0219519939, -0.0150616150, 0.0065638451, 0.0126814544, 0.0020717625, -0.0066458462, -0.0043104840, 0.0017412014, 0.0030469457, 0.0004375308, -0.0011813320, -0.0006006067, -0.0001225834, -0.0010592674, -0.0006951622, 0.0018982720, 0.0031501330, -0.0010395163, -0.0066526020, -0.0035641068, 0.0083902488, 0.0124376733, -0.0037629222, -0.0225480404, -0.0115261981, 0.0263821371, 0.0388343558, -0.0119788572, -0.0759726018, -0.0436802171, 0.1266723573, 0.3297252059, 0.3972967565, 0.2694399953, 0.0582194924, -0.0705924928, -0.0599329434, 0.0109899174, 0.0411987230, 0.0133867916, -0.0195501503, -0.0182222296, 0.0034866482, 0.0131980944, 0.0042268853, -0.0059636496, -0.0052710315, 0.0009380680, 0.0032297731, 0.0009143824, -0.0010952300, -0.0007702371 +}; + +const LC3_FLOAT lp_filter_48[240] = { +-0.0004004044, -0.0007690279, -0.0006225577, 0.0002916872, 0.0015688470, 0.0021802916, 0.0011608009, -0.0014255439, -0.0040468578, -0.0044305641, -0.0012682986, 0.0042453380, 0.0084543033, 0.0073990100, -0.0000000000, -0.0100410767, -0.0156021295, -0.0106990226, 0.0043936619, 0.0212937072, 0.0273213703, 0.0137434537, -0.0163306762, -0.0460679494, -0.0517779514, -0.0158989206, 0.0610049926, 0.1568012834, 0.2361188084, 0.2668529153, 0.2361188084, 0.1568012834, 0.0610049926, -0.0158989206, -0.0517779514, -0.0460679494, -0.0163306762, 0.0137434537, 0.0273213703, 0.0212937072, 0.0043936619, -0.0106990226, -0.0156021295, -0.0100410767, -0.0000000000, 0.0073990100, 0.0084543033, 0.0042453380, -0.0012682986, -0.0044305641, -0.0040468578, -0.0014255439, 0.0011608009, 0.0021802916, 0.0015688470, 0.0002916872, -0.0006225577, -0.0007690279, -0.0004004044, 0.0000000000, -0.0002865466, -0.0007061783, -0.0007301533, 0.0000000000, 0.0012655146, 0.0021531822, 0.0015902856, -0.0006930109, -0.0035140209, -0.0046504070, -0.0023760712, 0.0028179234, 0.0077659469, 0.0082917819, 0.0023244321, -0.0076489537, -0.0150320269, -0.0130334338, 0.0000000000, 0.0175880920, 0.0274658166, 0.0190560501, -0.0079859048, -0.0399552956, -0.0538004488, -0.0291201454, 0.0388129950, 0.1329296976, 0.2198168039, 0.2648645043, 0.2492838949, 0.1796266586, 0.0844482332, 0.0000000000, -0.0470616631, -0.0506484024, -0.0246923212, 0.0073266113, 0.0258895699, 0.0243004207, 0.0089245280, -0.0076841321, -0.0154854096, -0.0121481530, -0.0025086149, 0.0060840873, 0.0087987296, 0.0055934992, 0.0000000000, -0.0039757662, -0.0044350680, -0.0021646209, 0.0006253787, 0.0021000886, 0.0018304954, 0.0006095883, -0.0004634415, -0.0007985753, -0.0005134914, -0.0000817222, -0.0001785384, -0.0006181753, -0.0007875547, -0.0002543572, 0.0009396831, 0.0020312972, 0.0019043937, -0.0000000000, -0.0028736561, -0.0046453807, -0.0032867687, 0.0013811750, 0.0067905234, 0.0087544248, 0.0043758969, -0.0050970055, -0.0138489073, -0.0146346623, -0.0040770173, 0.0133932373, 0.0264140815, 0.0231295004, -0.0000000000, -0.0326977968, -0.0533337817, -0.0395234674, 0.0183441769, 0.1086134911, 0.2008173168, 0.2589540184, 0.2589540184, 0.2008173168, 0.1086134911, 0.0183441769, -0.0395234674, -0.0533337817, -0.0326977968, -0.0000000000, 0.0231295004, 0.0264140815, 0.0133932373, -0.0040770173, -0.0146346623, -0.0138489073, -0.0050970055, 0.0043758969, 0.0087544248, 0.0067905234, 0.0013811750, -0.0032867687, -0.0046453807, -0.0028736561, -0.0000000000, 0.0019043937, 0.0020312972, 0.0009396831, -0.0002543572, -0.0007875547, -0.0006181753, -0.0001785384, -0.0000817222, -0.0005134914, -0.0007985753, -0.0004634415, 0.0006095883, 0.0018304954, 0.0021000886, 0.0006253787, -0.0021646209, -0.0044350680, -0.0039757662, 0.0000000000, 0.0055934992, 0.0087987296, 0.0060840873, -0.0025086149, -0.0121481530, -0.0154854096, -0.0076841321, 0.0089245280, 0.0243004207, 0.0258895699, 0.0073266113, -0.0246923212, -0.0506484024, -0.0470616631, 0.0000000000, 0.0844482332, 0.1796266586, 0.2492838949, 0.2648645043, 0.2198168039, 0.1329296976, 0.0388129950, -0.0291201454, -0.0538004488, -0.0399552956, -0.0079859048, 0.0190560501, 0.0274658166, 0.0175880920, 0.0000000000, -0.0130334338, -0.0150320269, -0.0076489537, 0.0023244321, 0.0082917819, 0.0077659469, 0.0028179234, -0.0023760712, -0.0046504070, -0.0035140209, -0.0006930109, 0.0015902856, 0.0021531822, 0.0012655146, 0.0000000000, -0.0007301533, -0.0007061783, -0.0002865466 +}; + +const LC3_FLOAT lp_filter_96[240] = { +-0.0000892692, -0.0002002022, -0.0003090877, -0.0003845139, -0.0003937774, -0.0003112789, -0.0001271786, 0.0001458436, 0.0004698416, 0.0007844235, 0.0010156486, 0.0010901458, 0.0009521968, 0.0005804005, -0.0000000000, -0.0007127720, -0.0014368281, -0.0020234289, -0.0023226903, -0.0022152821, -0.0016433843, -0.0006341493, 0.0006905875, 0.0021226690, 0.0033952617, 0.0042271516, 0.0043772124, 0.0036995050, 0.0021879484, -0.0000000000, -0.0025485028, -0.0050205383, -0.0069244537, -0.0078010648, -0.0073173312, -0.0053495113, -0.0020385087, 0.0021968309, 0.0066966186, 0.0106468536, 0.0132070407, 0.0136606852, 0.0115647502, 0.0068717268, -0.0000000000, -0.0081653381, -0.0163488984, -0.0230339747, -0.0266668908, -0.0258889757, -0.0197617337, -0.0079494603, 0.0091720885, 0.0305024963, 0.0543067455, 0.0784006417, 0.1004086584, 0.1180594042, 0.1294770092, 0.1334264576, 0.1294770092, 0.1180594042, 0.1004086584, 0.0784006417, 0.0543067455, 0.0305024963, 0.0091720885, -0.0079494603, -0.0197617337, -0.0258889757, -0.0266668908, -0.0230339747, -0.0163488984, -0.0081653381, -0.0000000000, 0.0068717268, 0.0115647502, 0.0136606852, 0.0132070407, 0.0106468536, 0.0066966186, 0.0021968309, -0.0020385087, -0.0053495113, -0.0073173312, -0.0078010648, -0.0069244537, -0.0050205383, -0.0025485028, -0.0000000000, 0.0021879484, 0.0036995050, 0.0043772124, 0.0042271516, 0.0033952617, 0.0021226690, 0.0006905875, -0.0006341493, -0.0016433843, -0.0022152821, -0.0023226903, -0.0020234289, -0.0014368281, -0.0007127720, -0.0000000000, 0.0005804005, 0.0009521968, 0.0010901458, 0.0010156486, 0.0007844235, 0.0004698416, 0.0001458436, -0.0001271786, -0.0003112789, -0.0003937774, -0.0003845139, -0.0003090877, -0.0002002022, -0.0000892692, 0.0000000000, -0.0000408611, -0.0001432733, -0.0002567457, -0.0003530891, -0.0003992876, -0.0003650767, -0.0002317207, 0.0000000000, 0.0003047941, 0.0006327573, 0.0009152477, 0.0010765911, 0.0010500443, 0.0007951428, 0.0003126893, -0.0003465054, -0.0010823105, -0.0017570105, -0.0022175340, -0.0023252035, -0.0019878831, -0.0011880356, 0.0000000000, 0.0014089617, 0.0027967496, 0.0038829735, 0.0043993648, 0.0041458909, 0.0030420437, 0.0011622161, -0.0012543075, -0.0038244769, -0.0060740765, -0.0075160135, -0.0077427048, -0.0065167169, -0.0038420660, 0.0000000000, 0.0044622640, 0.0087940460, 0.0121502103, 0.0137329083, 0.0129447849, 0.0095280251, 0.0036633057, -0.0039929524, -0.0123461606, -0.0199776478, -0.0253242012, -0.0269002244, -0.0235308316, -0.0145600727, 0.0000000000, 0.0194064975, 0.0422241166, 0.0664648488, 0.0898133293, 0.1099084020, 0.1246419474, 0.1324322522, 0.1324322522, 0.1246419474, 0.1099084020, 0.0898133293, 0.0664648488, 0.0422241166, 0.0194064975, 0.0000000000, -0.0145600727, -0.0235308316, -0.0269002244, -0.0253242012, -0.0199776478, -0.0123461606, -0.0039929524, 0.0036633057, 0.0095280251, 0.0129447849, 0.0137329083, 0.0121502103, 0.0087940460, 0.0044622640, 0.0000000000, -0.0038420660, -0.0065167169, -0.0077427048, -0.0075160135, -0.0060740765, -0.0038244769, -0.0012543075, 0.0011622161, 0.0030420437, 0.0041458909, 0.0043993648, 0.0038829735, 0.0027967496, 0.0014089617, 0.0000000000, -0.0011880356, -0.0019878831, -0.0023252035, -0.0022175340, -0.0017570105, -0.0010823105, -0.0003465054, 0.0003126893, 0.0007951428, 0.0010500443, 0.0010765911, 0.0009152477, 0.0006327573, 0.0003047941, 0.0000000000, -0.0002317207, -0.0003650767, -0.0003992876, -0.0003530891, -0.0002567457, -0.0001432733, -0.0000408611 +}; + +const LC3_FLOAT *lp_filter[] = {lp_filter_8, lp_filter_16, lp_filter_24, lp_filter_32, lp_filter_48, lp_filter_96}; + +const LC3_INT up_fac[6] = {24, 12, 8, 6, 4, 2}; + +/* TNS */ +const LC3_INT huff_bits_tns[8][17] = { + {20480, 15725, 12479, 10334, 8694, 7320, 6964, 6335, 5504, 5637, 6566, 6758, 8433, 11348, 15186, 20480, 20480}, + {20480, 20480, 20480, 20480, 12902, 9368, 7057, 5901, 5254, 5485, 5598, 6076, 7608, 10742, 15186, 20480, 20480}, + {20480, 20480, 20480, 20480, 13988, 9368, 6702, 4841, 4585, 4682, 5859, 7764, 12109, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 18432, 13396, 8982, 4767, 3779, 3658, 6335, 9656, 13988, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 20480, 14731, 9437, 4275, 3249, 3493, 8483, 13988, 17234, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 20480, 20480, 12902, 4753, 3040, 2953, 9105, 15725, 20480, 20480, 20480, 20480, 20480}, + {20480, 20480, 20480, 20480, 20480, 20480, 12902, 3821, 3346, 3000, 12109, 20480, 20480, 20480, 20480, 20480, + 20480}, + {20480, 20480, 20480, 20480, 20480, 20480, 15725, 3658, 20480, 1201, 10854, 18432, 20480, 20480, 20480, 20480, + 20480}}; + +const LC3_INT order1_tns[8] = {17234, 13988, 11216, 8694, 6566, 4977, 3961, 3040}; +const LC3_INT order2_tns[8] = {12683, 9437, 6874, 5541, 5121, 5170, 5359, 5056}; + +const LC3_FLOAT lagw_tns[9] = {1, + 0.998028026020383, + 0.992135405511397, + 0.982391584470799, + 0.968910791191297, + 0.951849807369274, + 0.931404933402306, + 0.907808229996959, + 0.881323136669471}; + +const LC3_FLOAT quants_pts_tns[17] = { -0.995727539062500, -0.961822509765625, -0.895172119140625, + -0.798004150390625, -0.673706054687500, -0.526428222656250, + -0.361236572265625, -0.183746337890625, 0.000000000000000, + 0.183746337890625, 0.361236572265625, 0.526428222656250, + 0.673706054687500, 0.798004150390625, 0.895172119140625, + 0.961822509765625, 0.995727539062500}; + +const LC3_FLOAT quants_thr_tns[18] = {-1, + -0.982973099683902, + -0.932472229404356, + -0.850217135729614, + -0.739008917220659, + -0.602634636379256, + -0.445738355776538, + -0.273662990072083, + -0.0922683594633020, + 0.0922683594633020, + 0.273662990072083, + 0.445738355776538, + 0.602634636379256, + 0.739008917220659, + 0.850217135729614, + 0.932472229404356, + 0.982973099683902, + 1}; + +/* SNS */ +const LC3_FLOAT sns_vq_far_adj_gains_fl[8] = {1.05859375000000, 1.23706054687500, 1.43920898437500, 1.98950195312500, + 2.49877929687500, 3.13110351562500, 4.11816406250000, 4.85400390625000}; + +const LC3_FLOAT sns_vq_near_adj_gains_fl[4] = {1.73315429687500, 2.22949218750000, 2.74731445312500, 3.61523437500000}; + +const LC3_FLOAT sns_vq_reg_lf_adj_gains_fl[4] = {1.52465820312500, 3.67260742187500, 4.36059570312500, + 5.13037109375000}; + +const LC3_FLOAT q_g_sns[6] = {2.17651367187500, 2.94287109375000, 1.52465820312500, + 3.67260742187500, 4.36059570312500, 5.13037109375000}; + +const LC3_FLOAT sns_vq_reg_adj_gains_fl[2] = {2.17651367187500, 2.94287109375000}; + +/* First element in each row is multiplied with norm2 = 1 / sqrt(2) */ +const LC3_FLOAT idct_lookup[M][M] = { + {0.707106781186547, 0.995184726672197, 0.980785280403230, 0.956940335732209, 0.923879532511287, 0.881921264348355, 0.831469612302545, 0.773010453362737, 0.707106781186548, 0.634393284163646, 0.555570233019602, 0.471396736825998, 0.382683432365090, 0.290284677254462, 0.195090322016128, 0.0980171403295608}, + {0.707106781186547, 0.956940335732209, 0.831469612302545, 0.634393284163646, 0.382683432365090, 0.0980171403295608, -0.195090322016128, -0.471396736825998, -0.707106781186548, -0.881921264348355, -0.980785280403230, -0.995184726672197, -0.923879532511287, -0.773010453362737, -0.555570233019602, -0.290284677254462}, + {0.707106781186547, 0.881921264348355, 0.555570233019602, 0.0980171403295608, -0.382683432365090, -0.773010453362737, -0.980785280403230, -0.956940335732209, -0.707106781186548, -0.290284677254462, 0.195090322016128, 0.634393284163646, 0.923879532511287, 0.995184726672197, 0.831469612302546, 0.471396736825998}, + {0.707106781186547, 0.773010453362737, 0.195090322016128, -0.471396736825998, -0.923879532511287, -0.956940335732209, -0.555570233019602, 0.0980171403295601, 0.707106781186547, 0.995184726672197, 0.831469612302546, 0.290284677254463, -0.382683432365090, -0.881921264348355, -0.980785280403231, -0.634393284163645}, + {0.707106781186547, 0.634393284163646, -0.195090322016128, -0.881921264348355, -0.923879532511287, -0.290284677254462, 0.555570233019602, 0.995184726672197, 0.707106781186548, -0.0980171403295600, -0.831469612302545, -0.956940335732209, -0.382683432365091, 0.471396736825997, 0.980785280403230, 0.773010453362738}, + {0.707106781186547, 0.471396736825998, -0.555570233019602, -0.995184726672197, -0.382683432365090, 0.634393284163645, 0.980785280403231, 0.290284677254463, -0.707106781186547, -0.956940335732209, -0.195090322016130, 0.773010453362736, 0.923879532511287, 0.0980171403295626, -0.831469612302544, -0.881921264348356}, + {0.707106781186547, 0.290284677254462, -0.831469612302545, -0.773010453362737, 0.382683432365090, 0.995184726672197, 0.195090322016128, -0.881921264348356, -0.707106781186547, 0.471396736825997, 0.980785280403230, 0.0980171403295591, -0.923879532511287, -0.634393284163646, 0.555570233019604, 0.956940335732208}, + {0.707106781186547, 0.0980171403295608, -0.980785280403230, -0.290284677254463, 0.923879532511287, 0.471396736825998, -0.831469612302544, -0.634393284163647, 0.707106781186547, 0.773010453362738, -0.555570233019602, -0.881921264348356, 0.382683432365086, 0.956940335732209, -0.195090322016125, -0.995184726672197}, + {0.707106781186547, -0.0980171403295607, -0.980785280403230, 0.290284677254463, 0.923879532511287, -0.471396736825998, -0.831469612302545, 0.634393284163646, 0.707106781186547, -0.773010453362737, -0.555570233019603, 0.881921264348356, 0.382683432365088, -0.956940335732209, -0.195090322016127, 0.995184726672197}, + {0.707106781186547, -0.290284677254462, -0.831469612302546, 0.773010453362737, 0.382683432365090, -0.995184726672197, 0.195090322016127, 0.881921264348356, -0.707106781186547, -0.471396736825998, 0.980785280403230, -0.0980171403295577, -0.923879532511288, 0.634393284163644, 0.555570233019606, -0.956940335732208}, + {0.707106781186547, -0.471396736825998, -0.555570233019602, 0.995184726672197, -0.382683432365090, -0.634393284163645, 0.980785280403230, -0.290284677254463, -0.707106781186547, 0.956940335732209, -0.195090322016129, -0.773010453362737, 0.923879532511287, -0.0980171403295610, -0.831469612302545, 0.881921264348355}, + {0.707106781186547, -0.634393284163645, -0.195090322016129, 0.881921264348355, -0.923879532511286, 0.290284677254461, 0.555570233019603, -0.995184726672197, 0.707106781186547, 0.0980171403295628, -0.831469612302547, 0.956940335732208, -0.382683432365089, -0.471396736825999, 0.980785280403231, -0.773010453362733}, + {0.707106781186547, -0.773010453362737, 0.195090322016128, 0.471396736825998, -0.923879532511287, 0.956940335732209, -0.555570233019602, -0.0980171403295592, 0.707106781186548, -0.995184726672197, 0.831469612302546, -0.290284677254462, -0.382683432365091, 0.881921264348355, -0.980785280403231, 0.634393284163644}, + {0.707106781186547, -0.881921264348355, 0.555570233019602, -0.0980171403295600, -0.382683432365091, 0.773010453362738, -0.980785280403231, 0.956940335732208, -0.707106781186546, 0.290284677254462, 0.195090322016130, -0.634393284163649, 0.923879532511288, -0.995184726672197, 0.831469612302542, -0.471396736825993}, + {0.707106781186547, -0.956940335732209, 0.831469612302545, -0.634393284163645, 0.382683432365090, -0.0980171403295615, -0.195090322016130, 0.471396736825998, -0.707106781186548, 0.881921264348355, -0.980785280403230, 0.995184726672197, -0.923879532511285, 0.773010453362735, -0.555570233019601, 0.290284677254462}, + {0.707106781186547, -0.995184726672197, 0.980785280403230, -0.956940335732209, 0.923879532511286, -0.881921264348355, 0.831469612302544, -0.773010453362736, 0.707106781186546, -0.634393284163644, 0.555570233019601, -0.471396736825994, 0.382683432365086, -0.290284677254458, 0.195090322016124, -0.0980171403295567} +}; + +const LC3_FLOAT sns_dec_gains[4][8] = { + {2.17651367187500, 2.94287109375000, 0, 0, 0, 0, 0, 0}, + {1.52465820312500, 3.67260742187500, 4.36059570312500, 5.13037109375000, 0, 0, 0, 0}, + {1.73315429687500, 2.22949218750000, 2.74731445312500, 3.61523437500000, 0, 0, 0, 0}, + {1.05859375000000, 1.23706054687500, 1.43920898437500, 1.98950195312500, 2.49877929687500, 3.13110351562500, + 4.11816406250000, 4.85400390625000}}; + +/* Global Gain */ +const LC3_INT gg_p1[6] = {80, 230, 380, 530, 680, 830}; +const LC3_INT gg_p2[6] = {500, 1025, 1550, 2075, 2600, 3125}; +const LC3_INT gg_p3[6] = {850, 1700, 2550, 3400, 4250, 5100}; + +const LC3_FLOAT gg_c[6] = {0.00575396825396825, 0.00500524109014675, 0.00473646723646723, + 0.00459816612729234, 0.00451388888888889, 0.004457153231663}; +const LC3_FLOAT gg_d[6] = {1310.34482758621, 3241.36125654450, 5267.66917293233, + 7326.39296187684, 9400.00000000000, 11481.67006109979}; + +/* Olpa */ +const LC3_FLOAT olpa_down2[5] = {0.1236796411180537, 0.2353512128364889, 0.2819382920909148, 0.2353512128364889, + 0.1236796411180537}; + +const LC3_FLOAT olpa_acw[98] = {1.0, + 0.994845360824742, + 0.989690721649485, + 0.984536082474227, + 0.979381443298969, + 0.974226804123711, + 0.969072164948454, + 0.963917525773196, + 0.958762886597938, + 0.953608247422680, + 0.948453608247423, + 0.943298969072165, + 0.938144329896907, + 0.932989690721650, + 0.927835051546392, + 0.922680412371134, + 0.917525773195876, + 0.912371134020619, + 0.907216494845361, + 0.902061855670103, + 0.896907216494845, + 0.891752577319588, + 0.886597938144330, + 0.881443298969072, + 0.876288659793814, + 0.871134020618557, + 0.865979381443299, + 0.860824742268041, + 0.855670103092784, + 0.850515463917526, + 0.845360824742268, + 0.840206185567010, + 0.835051546391753, + 0.829896907216495, + 0.824742268041237, + 0.819587628865979, + 0.814432989690722, + 0.809278350515464, + 0.804123711340206, + 0.798969072164949, + 0.793814432989691, + 0.788659793814433, + 0.783505154639175, + 0.778350515463918, + 0.773195876288660, + 0.768041237113402, + 0.762886597938144, + 0.757731958762887, + 0.752577319587629, + 0.747422680412371, + 0.742268041237113, + 0.737113402061856, + 0.731958762886598, + 0.726804123711340, + 0.721649484536083, + 0.716494845360825, + 0.711340206185567, + 0.706185567010309, + 0.701030927835052, + 0.695876288659794, + 0.690721649484536, + 0.685567010309278, + 0.680412371134021, + 0.675257731958763, + 0.670103092783505, + 0.664948453608247, + 0.659793814432990, + 0.654639175257732, + 0.649484536082474, + 0.644329896907216, + 0.639175257731959, + 0.634020618556701, + 0.628865979381443, + 0.623711340206186, + 0.618556701030928, + 0.613402061855670, + 0.608247422680412, + 0.603092783505155, + 0.597938144329897, + 0.592783505154639, + 0.587628865979382, + 0.582474226804124, + 0.577319587628866, + 0.572164948453608, + 0.567010309278351, + 0.561855670103093, + 0.556701030927835, + 0.551546391752577, + 0.546391752577320, + 0.541237113402062, + 0.536082474226804, + 0.530927835051546, + 0.525773195876289, + 0.520618556701031, + 0.515463917525773, + 0.510309278350515, + 0.505154639175258, + 0.500000000000000}; + +/* LTPF */ +const LC3_FLOAT conf_tilt_filter_16[4][3] = {{6.023618207009578e-01, 4.197609261363617e-01, -1.883424527883687e-02}, + {5.994768582584314e-01, 4.197609261363620e-01, -1.594928283631041e-02}, + {5.967764663733787e-01, 4.197609261363617e-01, -1.324889095125780e-02}, + {5.942410120098895e-01, 4.197609261363618e-01, -1.071343658776831e-02}}; + +const LC3_FLOAT conf_tilt_filter_24[4][5] = {{3.989695588963494e-01, 5.142508607708275e-01, 1.004382966157454e-01, + -1.278893956818042e-02, -1.572280075461383e-03}, + {3.948634911286333e-01, 5.123819208048688e-01, 1.043194926386267e-01, + -1.091999960222166e-02, -1.347408330627317e-03}, + {3.909844475885914e-01, 5.106053522688359e-01, 1.079832524685944e-01, + -9.143431066188848e-03, -1.132124620551895e-03}, + {3.873093888199928e-01, 5.089122083363975e-01, 1.114517380217371e-01, + -7.450287133750717e-03, -9.255514050963111e-04}}; + +const LC3_FLOAT conf_tilt_filter_32[4][7] = { + {2.982379446702096e-01, 4.652809203721290e-01, 2.105997428614279e-01, 3.766780380806063e-02, -1.015696155796564e-02, + -2.535880996101096e-03, -3.182946168719958e-04}, + {2.943834154510240e-01, 4.619294002718798e-01, 2.129465770091844e-01, 4.066175002688857e-02, -8.693272297010050e-03, + -2.178307114679820e-03, -2.742888063983188e-04}, + {2.907439213122688e-01, 4.587461910960279e-01, 2.151456974108970e-01, 4.350104772529774e-02, -7.295495347716925e-03, + -1.834395637237086e-03, -2.316920186482416e-04}, + {2.872975852589158e-01, 4.557148886861379e-01, 2.172126950911401e-01, 4.620088878229615e-02, -5.957463802125952e-03, + -1.502934284345198e-03, -1.903851911308866e-04}}; + +const LC3_FLOAT conf_tilt_filter_48[4][11] = { + {1.981363739883217e-01, 3.524494903964904e-01, 2.513695269649414e-01, 1.424146237314458e-01, 5.704731023952599e-02, + 9.293366241586384e-03, -7.226025368953745e-03, -3.172679890356356e-03, -1.121835963567014e-03, + -2.902957238400140e-04, -4.270815593769240e-05}, + {1.950709426598375e-01, 3.484660408341632e-01, 2.509988459466574e-01, 1.441167412482088e-01, 5.928947317677285e-02, + 1.108923827452231e-02, -6.192908108653504e-03, -2.726705509251737e-03, -9.667125826217151e-04, + -2.508100923165204e-04, -3.699938766131869e-05}, + {1.921810055196015e-01, 3.446945561091513e-01, 2.506220094626024e-01, 1.457102447664837e-01, 6.141132133664525e-02, + 1.279941396562798e-02, -5.203721087886321e-03, -2.297324511109085e-03, -8.165608133217555e-04, + -2.123855748277408e-04, -3.141271330981649e-05}, + {1.894485314175868e-01, 3.411139251108252e-01, 2.502406876894361e-01, 1.472065631098081e-01, 6.342477229539051e-02, + 1.443203434150312e-02, -4.254449144657098e-03, -1.883081472613493e-03, -6.709619060722140e-04, + -1.749363341966872e-04, -2.593864735284285e-05}}; + +const LC3_FLOAT conf_inter_filter_16[4][4] = { + {2.098804630681809e-01, 5.835275754221211e-01, 2.098804630681809e-01, 0.000000000000000e+00}, + {1.069991860896389e-01, 5.500750019177116e-01, 3.356906254147840e-01, 6.698858366939680e-03}, + {3.967114782344967e-02, 4.592209296082350e-01, 4.592209296082350e-01, 3.967114782344967e-02}, + {6.698858366939680e-03, 3.356906254147840e-01, 5.500750019177116e-01, 1.069991860896389e-01}}; + +const LC3_FLOAT conf_inter_filter_24[4][6] = {{6.322231627323796e-02, 2.507309606013235e-01, 3.713909428901578e-01, + 2.507309606013235e-01, 6.322231627323796e-02, 0.000000000000000e+00}, + {3.459272174099855e-02, 1.986515602645028e-01, 3.626411726581452e-01, + 2.986750548992179e-01, 1.013092873505928e-01, 4.263543712369752e-03}, + {1.535746784963907e-02, 1.474344878058222e-01, 3.374259553990717e-01, + 3.374259553990717e-01, 1.474344878058222e-01, 1.535746784963907e-02}, + {4.263543712369752e-03, 1.013092873505928e-01, 2.986750548992179e-01, + 3.626411726581452e-01, 1.986515602645028e-01, 3.459272174099855e-02}}; + +const LC3_FLOAT conf_inter_filter_32[4][8] = { + {2.900401878228730e-02, 1.129857420560927e-01, 2.212024028097570e-01, 2.723909472446145e-01, 2.212024028097570e-01, + 1.129857420560927e-01, 2.900401878228730e-02, 0.000000000000000e+00}, + {1.703153418385261e-02, 8.722503785537784e-02, 1.961407762232199e-01, 2.689237982237257e-01, 2.424999102756389e-01, + 1.405773364650031e-01, 4.474877169485788e-02, 3.127030243100724e-03}, + {8.563673748488349e-03, 6.426222944493845e-02, 1.687676705918012e-01, 2.587445937795505e-01, 2.587445937795505e-01, + 1.687676705918012e-01, 6.426222944493845e-02, 8.563673748488349e-03}, + {3.127030243100724e-03, 4.474877169485788e-02, 1.405773364650031e-01, 2.424999102756389e-01, 2.689237982237257e-01, + 1.961407762232199e-01, 8.722503785537784e-02, 1.703153418385261e-02}}; + +const LC3_FLOAT conf_inter_filter_48[4][12] = { + {1.082359386659387e-02, 3.608969221303979e-02, 7.676401468099964e-02, 1.241530577501703e-01, 1.627596438300696e-01, + 1.776771417779109e-01, 1.627596438300696e-01, 1.241530577501703e-01, 7.676401468099964e-02, 3.608969221303979e-02, + 1.082359386659387e-02, 0.000000000000000e+00}, + {7.041404930459358e-03, 2.819702319820420e-02, 6.547044935127551e-02, 1.124647986743299e-01, 1.548418956489015e-01, + 1.767122381341857e-01, 1.691507213057663e-01, 1.352901577989766e-01, 8.851425011427483e-02, 4.499353848562444e-02, + 1.557613714732002e-02, 2.039721956502016e-03}, + {4.146998467444788e-03, 2.135757310741917e-02, 5.482735584552816e-02, 1.004971444643720e-01, 1.456060342830002e-01, + 1.738439838565869e-01, 1.738439838565869e-01, 1.456060342830002e-01, 1.004971444643720e-01, 5.482735584552816e-02, + 2.135757310741917e-02, 4.146998467444788e-03}, + {2.039721956502016e-03, 1.557613714732002e-02, 4.499353848562444e-02, 8.851425011427483e-02, 1.352901577989766e-01, + 1.691507213057663e-01, 1.767122381341857e-01, 1.548418956489015e-01, 1.124647986743299e-01, 6.547044935127551e-02, + 2.819702319820420e-02, 7.041404930459358e-03}}; + +const LC3_FLOAT inter4_1[33] = {0, + -2.874561161519444e-03, + -3.001251025861499e-03, + +2.745471654059321e-03, + +1.535727698935322e-02, + +2.868234046665657e-02, + +2.950385026557377e-02, + +4.598334491135473e-03, + -4.729632459043440e-02, + -1.058359163062837e-01, + -1.303050213607112e-01, + -7.544046357555201e-02, + +8.357885725250529e-02, + +3.301825710764459e-01, + +6.032970076366158e-01, + +8.174886856243178e-01, + +8.986382851273982e-01, + +8.174886856243178e-01, + +6.032970076366158e-01, + +3.301825710764459e-01, + +8.357885725250529e-02, + -7.544046357555201e-02, + -1.303050213607112e-01, + -1.058359163062837e-01, + -4.729632459043440e-02, + +4.598334491135473e-03, + +2.950385026557377e-02, + +2.868234046665657e-02, + +1.535727698935322e-02, + +2.745471654059321e-03, + -3.001251025861499e-03, + -2.874561161519444e-03, + 0}; + +const LC3_FLOAT enc_inter_filter[4][4] = { + {+2.098804630681809e-01, +5.835275754221211e-01, +2.098804630681809e-01, 0}, + {+1.069991860896389e-01, +5.500750019177116e-01, +3.356906254147840e-01, +6.698858366939680e-03}, + {+3.967114782344967e-02, +4.592209296082350e-01, +4.592209296082350e-01, +3.967114782344967e-02}, + {+6.698858366939680e-03, +3.356906254147840e-01, +5.500750019177116e-01, +1.069991860896389e-01}}; + +/* Bandwidth Detector */ +const LC3_INT threshold_quiet[4] = {20, 10, 10, 10}; +const LC3_INT threshold_brickwall[4] = {15, 23, 20, 20}; +const LC3_INT brickwall_dist[4] = {4, 4, 3, 1}; +const LC3_INT BW_warp_idx_start_16k[4] = {53, 0, 0, 0}; +const LC3_INT BW_warp_idx_stop_16k[4] = {63, 0, 0, 0}; +const LC3_INT BW_warp_idx_start_24k[4] = {47, 59, 0, 0}; +const LC3_INT BW_warp_idx_stop_24k[4] = {56, 63, 0, 0}; +const LC3_INT BW_warp_idx_start_32k[4] = {44, 54, 60, 0}; +const LC3_INT BW_warp_idx_stop_32k[4] = {52, 59, 63, 0}; +const LC3_INT BW_warp_idx_start_48k[4] = {41, 51, 57, 61}; +const LC3_INT BW_warp_idx_stop_48k[4] = {49, 55, 60, 63}; +const LC3_INT* BW_warp_idx_start_all[4] = {BW_warp_idx_start_16k, BW_warp_idx_start_24k, BW_warp_idx_start_32k, + BW_warp_idx_start_48k}; +const LC3_INT* BW_warp_idx_stop_all[4] = {BW_warp_idx_stop_16k, BW_warp_idx_stop_24k, BW_warp_idx_stop_32k, + BW_warp_idx_stop_48k}; + +const LC3_INT BW_warp_idx_start_16k_2_5ms[4] = {24, 0, 0, 0}; +const LC3_INT BW_warp_idx_stop_16k_2_5ms[4] = {34, 0, 0, 0}; +const LC3_INT BW_warp_idx_start_24k_2_5ms[4] = {24, 35, 0, 0}; +const LC3_INT BW_warp_idx_stop_24k_2_5ms[4] = {32, 39, 0, 0}; +const LC3_INT BW_warp_idx_start_32k_2_5ms[4] = {24, 33, 39, 0}; +const LC3_INT BW_warp_idx_stop_32k_2_5ms[4] = {31, 38, 42, 0}; +const LC3_INT BW_warp_idx_start_48k_2_5ms[4] = {22, 31, 37, 41}; +const LC3_INT BW_warp_idx_stop_48k_2_5ms[4] = {29, 35, 40, 43}; + +const LC3_INT* BW_warp_idx_start_all_2_5ms[4] = {BW_warp_idx_start_16k_2_5ms, BW_warp_idx_start_24k_2_5ms, + BW_warp_idx_start_32k_2_5ms, BW_warp_idx_start_48k_2_5ms}; +const LC3_INT* BW_warp_idx_stop_all_2_5ms[4] = {BW_warp_idx_stop_16k_2_5ms, BW_warp_idx_stop_24k_2_5ms, + BW_warp_idx_stop_32k_2_5ms, BW_warp_idx_stop_48k_2_5ms}; + +const LC3_INT bands_number_2_5ms_HR[6] = {20, 35, 40, 43, 45, 49}; + +const LC3_INT bands_number_2_5ms[5] = {20, 35, 40, 43, 44}; + + +const LC3_INT BW_warp_idx_start_16k_5ms[4] = {39, 0, 0, 0}; +const LC3_INT BW_warp_idx_stop_16k_5ms[4] = {49, 0, 0, 0}; +const LC3_INT BW_warp_idx_start_24k_5ms[4] = {35, 47, 0, 0}; +const LC3_INT BW_warp_idx_stop_24k_5ms[4] = {44, 51, 0, 0}; +const LC3_INT BW_warp_idx_start_32k_5ms[4] = {34, 44, 50, 0}; +const LC3_INT BW_warp_idx_stop_32k_5ms[4] = {42, 49, 53, 0}; +const LC3_INT BW_warp_idx_start_48k_5ms[4] = {32, 42, 48, 52}; +const LC3_INT BW_warp_idx_stop_48k_5ms[4] = {40, 46, 51, 54}; + +const LC3_INT* BW_warp_idx_start_all_5ms[4] = {BW_warp_idx_start_16k_5ms, BW_warp_idx_start_24k_5ms, + BW_warp_idx_start_32k_5ms, BW_warp_idx_start_48k_5ms}; +const LC3_INT* BW_warp_idx_stop_all_5ms[4] = {BW_warp_idx_stop_16k_5ms, BW_warp_idx_stop_24k_5ms, + BW_warp_idx_stop_32k_5ms, BW_warp_idx_stop_48k_5ms}; + +const LC3_INT bands_number_5ms[6] = {39, 50, 52, 54, 55, 58}; + + +const LC3_INT BW_cutoff_bin_all[MAX_BW_BANDS_NUMBER] = {80, 160, 240, 320, 400, 400}; +const LC3_INT BW_cutoff_bits_all[MAX_BW_BANDS_NUMBER] = {0, 1, 2, 2, 3, 0}; + +const LC3_INT BW_cutoff_bin_all_5ms[MAX_BW_BANDS_NUMBER] = {40, 80, 120, 160, 200, 200}; +const LC3_INT BW_cutoff_bin_all_2_5ms[MAX_BW_BANDS_NUMBER] = {20, 40, 60, 80, 100, 100}; + +/* Arithmetic coding */ +const LC3_INT tns_cf[8][18] = {{0, 1, 6, 21, 52, 106, 192, 289, 409, 568, 720, 831, 935, 994, 1016, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 17, 60, 154, 293, 466, 626, 780, 911, 989, 1016, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 13, 56, 162, 361, 578, 788, 929, 1003, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 6, 17, 66, 270, 555, 852, 972, 1011, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 12, 54, 295, 636, 950, 1008, 1017, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 6, 19, 224, 590, 967, 1014, 1019, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 6, 19, 300, 630, 1001, 1018, 1019, 1020, 1021, 1022, 1023, 1024}, + {0, 1, 2, 3, 4, 5, 6, 11, 308, 309, 991, 1017, 1019, 1020, 1021, 1022, 1023, 1024}}; + +const LC3_INT tns_freq_cf[2][9] = {{0, 3, 12, 35, 89, 200, 390, 658, 1024}, {0, 14, 56, 156, 313, 494, 672, 839, 1024}}; + +/* MDCT Windows */ + + +const LC3_FLOAT MDCT_WINDOW_80_2_5ms[40] = { + 6.737914289329320e-03, 2.732289618100209e-02, 6.163560962361236e-02, 1.119125037883055e-01, 1.787053464784875e-01, + 2.607525136824537e-01, 3.549776504187033e-01, 4.567696724165073e-01, 5.605239559005871e-01, 6.603665285212146e-01, + 7.509434386216048e-01, 8.281382099997300e-01, 8.895849967038094e-01, 9.348747871791264e-01, 9.654056798094166e-01, + 9.839026370225886e-01, 9.937180643904148e-01, 9.980987183772584e-01, 9.996266599807562e-01, 9.999772999978698e-01, + 9.999772999978698e-01, 9.996266599807562e-01, 9.980987183772584e-01, 9.937180643904148e-01, 9.839026370225886e-01, + 9.654056798094166e-01, 9.348747871791264e-01, 8.895849967038094e-01, 8.281382099997300e-01, 7.509434386216048e-01, + 6.603665285212146e-01, 5.605239559005871e-01, 4.567696724165073e-01, 3.549776504187033e-01, 2.607525136824537e-01, + 1.787053464784875e-01, 1.119125037883055e-01, 6.163560962361236e-02, 2.732289618100209e-02, 6.737914289329320e-03}; + +const LC3_FLOAT MDCT_WINDOW_160_2_5ms[80] = { + 4.764416154578566e-03, 1.204636278996989e-02, 2.226396539371650e-02, 3.580223111285056e-02, 5.299054649961241e-02, + 7.408518398076024e-02, 9.925385917916330e-02, 1.285631180041137e-01, 1.619692437449073e-01, 1.993132407013812e-01, + 2.403202823615340e-01, 2.846038181323611e-01, 3.316743228466244e-01, 3.809524578920635e-01, 4.317862022264749e-01, + 4.834713159013930e-01, 5.352743274612082e-01, 5.864570980113353e-01, 6.363019156559162e-01, 6.841360194558924e-01, + 7.293544453028629e-01, 7.714401286766273e-01, 8.099802912368443e-01, 8.446782786131956e-01, 8.753602039735273e-01, + 9.019759839191052e-01, 9.245946272967390e-01, 9.433939492938426e-01, 9.586452246292587e-01, 9.706936498636800e-01, + 9.799358305935717e-01, 9.867958066797319e-01, 9.917013283691115e-01, 9.950621445106043e-01, 9.972519167765670e-01, + 9.985950139980033e-01, 9.993588946156141e-01, 9.997521272020117e-01, 9.999274399392850e-01, 9.999886501049429e-01, + 9.999886501049429e-01, 9.999274399392850e-01, 9.997521272020117e-01, 9.993588946156141e-01, 9.985950139980033e-01, + 9.972519167765670e-01, 9.950621445106043e-01, 9.917013283691115e-01, 9.867958066797319e-01, 9.799358305935717e-01, + 9.706936498636800e-01, 9.586452246292587e-01, 9.433939492938426e-01, 9.245946272967390e-01, 9.019759839191052e-01, + 8.753602039735273e-01, 8.446782786131956e-01, 8.099802912368443e-01, 7.714401286766273e-01, 7.293544453028629e-01, + 6.841360194558924e-01, 6.363019156559162e-01, 5.864570980113353e-01, 5.352743274612082e-01, 4.834713159013930e-01, + 4.317862022264749e-01, 3.809524578920635e-01, 3.316743228466244e-01, 2.846038181323611e-01, 2.403202823615340e-01, + 1.993132407013812e-01, 1.619692437449073e-01, 1.285631180041137e-01, 9.925385917916330e-02, 7.408518398076024e-02, + 5.299054649961241e-02, 3.580223111285056e-02, 2.226396539371650e-02, 1.204636278996989e-02, 4.764416154578566e-03}; + +const LC3_FLOAT MDCT_WINDOW_240_2_5ms[120] = { + 3.890134207235998e-03, 8.202595078385781e-03, 1.370235555340779e-02, 2.052968531182845e-02, 2.880307728389693e-02, + 3.862785141889536e-02, 5.009569719921809e-02, 6.328296540190831e-02, 7.824881086160715e-02, 9.503346510857243e-02, + 1.136567491769230e-01, 1.341168883357315e-01, 1.563896708020576e-01, 1.804279808512455e-01, 2.061617274373514e-01, + 2.334981807379911e-01, 2.623227204239969e-01, 2.924999908279060e-01, 3.238754496100354e-01, 3.562772881250116e-01, + 3.895186936283779e-01, 4.234004158919065e-01, 4.577135938730904e-01, 4.922427919542673e-01, 5.267691900603833e-01, + 5.610738677940736e-01, 5.949411196851041e-01, 6.281617368097510e-01, 6.605361894447956e-01, 6.918776461105686e-01, + 7.220147663396499e-01, 7.507942077785026e-01, 7.780827927721814e-01, 8.037692853722609e-01, 8.277657367145603e-01, + 8.500083649018569e-01, 8.704579448595252e-01, 8.890996940634835e-01, 9.059426515086708e-01, 9.210185597011833e-01, + 9.343802726761132e-01, 9.460997268469628e-01, 9.562655255553633e-01, 9.649802020504638e-01, 9.723572386690237e-01, + 9.785179314351103e-01, 9.835881982445411e-01, 9.876954342642392e-01, 9.909655192099981e-01, 9.935200769821082e-01, + 9.954740782709803e-01, 9.969338611957889e-01, 9.979956243841658e-01, 9.987444223234112e-01, 9.992536660401901e-01, + 9.995851053006831e-01, 9.997892438014110e-01, 9.999061183192590e-01, 9.999663581511030e-01, 9.999924333992981e-01, + 9.999924333992981e-01, 9.999663581511030e-01, 9.999061183192590e-01, 9.997892438014110e-01, 9.995851053006831e-01, + 9.992536660401901e-01, 9.987444223234112e-01, 9.979956243841658e-01, 9.969338611957889e-01, 9.954740782709803e-01, + 9.935200769821082e-01, 9.909655192099981e-01, 9.876954342642392e-01, 9.835881982445411e-01, 9.785179314351103e-01, + 9.723572386690237e-01, 9.649802020504638e-01, 9.562655255553633e-01, 9.460997268469628e-01, 9.343802726761132e-01, + 9.210185597011833e-01, 9.059426515086708e-01, 8.890996940634835e-01, 8.704579448595252e-01, 8.500083649018569e-01, + 8.277657367145603e-01, 8.037692853722609e-01, 7.780827927721814e-01, 7.507942077785026e-01, 7.220147663396499e-01, + 6.918776461105686e-01, 6.605361894447956e-01, 6.281617368097510e-01, 5.949411196851041e-01, 5.610738677940736e-01, + 5.267691900603833e-01, 4.922427919542673e-01, 4.577135938730904e-01, 4.234004158919065e-01, 3.895186936283779e-01, + 3.562772881250116e-01, 3.238754496100354e-01, 2.924999908279060e-01, 2.623227204239969e-01, 2.334981807379911e-01, + 2.061617274373514e-01, 1.804279808512455e-01, 1.563896708020576e-01, 1.341168883357315e-01, 1.136567491769230e-01, + 9.503346510857243e-02, 7.824881086160715e-02, 6.328296540190831e-02, 5.009569719921809e-02, 3.862785141889536e-02, + 2.880307728389693e-02, 2.052968531182845e-02, 1.370235555340779e-02, 8.202595078385781e-03, 3.890134207235998e-03}; + +const LC3_FLOAT MDCT_WINDOW_320_2_5ms[160] = { + 3.368958353152859e-03, 6.455557414799749e-03, 1.014308076237845e-02, 1.452126850237346e-02, 1.965076732239952e-02, + 2.558352795411825e-02, 3.236628529621430e-02, 4.004117865352276e-02, 4.864564178753818e-02, 5.821207082124419e-02, + 6.876742903793599e-02, 8.033284980531531e-02, 9.292326595333501e-02, 1.065470811378728e-01, 1.212058930254449e-01, + 1.368942751980506e-01, 1.535996228917228e-01, 1.713020663983868e-01, 1.899744548998832e-01, 2.095824125414741e-01, + 2.300844676343023e-01, 2.514322549787097e-01, 2.735707904154788e-01, 2.964388158404272e-01, 3.199692120640840e-01, + 3.440894760693133e-01, 3.687222584236977e-01, 3.937859558486231e-01, 4.191953532416662e-01, 4.448623088011174e-01, + 4.706964753188311e-01, 4.966060501969578e-01, 5.224985463116437e-01, 5.482815754977786e-01, 5.738636361677886e-01, + 5.991548964078475e-01, 6.240679638193776e-01, 6.485186333941402e-01, 6.724266048285701e-01, 6.957161608975563e-01, + 7.183167988192716e-01, 7.401638069500036e-01, 7.611987796499656e-01, 7.813700637561797e-01, 8.006331307849442e-01, + 8.189508697622124e-01, 8.362937964433754e-01, 8.526401756322647e-01, 8.679760543400818e-01, 8.822952046352904e-01, + 8.955989762210201e-01, 9.078960600314304e-01, 9.192021654545784e-01, 9.295396151552272e-01, 9.389368628711653e-01, + 9.474279409702298e-01, 9.550518459555614e-01, 9.618518714601797e-01, 9.678748995383242e-01, 9.731706621931426e-01, + 9.777909860257944e-01, 9.817890335940264e-01, 9.852185554726640e-01, 9.881331670617683e-01, 9.905856638463937e-01, + 9.926273880444285e-01, 9.943076583739057e-01, 9.956732730391862e-01, 9.967680940129237e-01, 9.976327183405286e-01, + 9.983042396036903e-01, 9.988160999578843e-01, 9.991980304284215e-01, 9.994760745391177e-01, 9.996726879821318e-01, + 9.998069050289865e-01, 9.998945608218308e-01, 9.999485576331654e-01, 9.999791626721350e-01, 9.999943250437048e-01, + 9.999943250437048e-01, 9.999791626721350e-01, 9.999485576331654e-01, 9.998945608218308e-01, 9.998069050289865e-01, + 9.996726879821318e-01, 9.994760745391177e-01, 9.991980304284215e-01, 9.988160999578843e-01, 9.983042396036903e-01, + 9.976327183405286e-01, 9.967680940129237e-01, 9.956732730391862e-01, 9.943076583739057e-01, 9.926273880444285e-01, + 9.905856638463937e-01, 9.881331670617683e-01, 9.852185554726640e-01, 9.817890335940264e-01, 9.777909860257944e-01, + 9.731706621931426e-01, 9.678748995383242e-01, 9.618518714601797e-01, 9.550518459555614e-01, 9.474279409702298e-01, + 9.389368628711653e-01, 9.295396151552272e-01, 9.192021654545784e-01, 9.078960600314304e-01, 8.955989762210201e-01, + 8.822952046352904e-01, 8.679760543400818e-01, 8.526401756322647e-01, 8.362937964433754e-01, 8.189508697622124e-01, + 8.006331307849442e-01, 7.813700637561797e-01, 7.611987796499656e-01, 7.401638069500036e-01, 7.183167988192716e-01, + 6.957161608975563e-01, 6.724266048285701e-01, 6.485186333941402e-01, 6.240679638193776e-01, 5.991548964078475e-01, + 5.738636361677886e-01, 5.482815754977786e-01, 5.224985463116437e-01, 4.966060501969578e-01, 4.706964753188311e-01, + 4.448623088011174e-01, 4.191953532416662e-01, 3.937859558486231e-01, 3.687222584236977e-01, 3.440894760693133e-01, + 3.199692120640840e-01, 2.964388158404272e-01, 2.735707904154788e-01, 2.514322549787097e-01, 2.300844676343023e-01, + 2.095824125414741e-01, 1.899744548998832e-01, 1.713020663983868e-01, 1.535996228917228e-01, 1.368942751980506e-01, + 1.212058930254449e-01, 1.065470811378728e-01, 9.292326595333501e-02, 8.033284980531531e-02, 6.876742903793599e-02, + 5.821207082124419e-02, 4.864564178753818e-02, 4.004117865352276e-02, 3.236628529621430e-02, 2.558352795411825e-02, + 1.965076732239952e-02, 1.452126850237346e-02, 1.014308076237845e-02, 6.455557414799749e-03, 3.368958353152859e-03}; + +const LC3_FLOAT MDCT_WINDOW_480_2_5ms[240] = { + 2.750746382614873e-03, 4.775245154322467e-03, 6.991265476184880e-03, 9.470118155887091e-03, 1.224415763156159e-02, + 1.533559472880042e-02, 1.876266772162453e-02, 2.254154337372088e-02, 2.668701415521377e-02, 3.121277069249126e-02, + 3.613150075407039e-02, 4.145491000214293e-02, 4.719370517091751e-02, 5.335755875796826e-02, 5.995506493224793e-02, + 6.699369195627566e-02, 7.447973421347953e-02, 8.241826576309315e-02, 9.081309669365416e-02, 9.966673316465058e-02, + 1.089803417907089e-01, 1.187537188695662e-01, 1.289852648491186e-01, 1.396719643506733e-01, 1.508093720039881e-01, + 1.623916042982366e-01, 1.744113376077630e-01, 1.868598125100347e-01, 1.997268444741311e-01, 2.130008409605561e-01, + 2.266688249366323e-01, 2.407164647759538e-01, 2.551281104752023e-01, 2.698868360870567e-01, 2.849744882339612e-01, + 3.003717405342550e-01, 3.160581537396951e-01, 3.320122413518523e-01, 3.482115404543554e-01, 3.646326874686314e-01, + 3.812514985127824e-01, 3.980430540166849e-01, 4.149817872214252e-01, 4.320415761679195e-01, 4.491958387581356e-01, + 4.664176304528364e-01, 4.836797441523142e-01, 5.009548117912680e-01, 5.182154071658814e-01, 5.354341495003542e-01, + 5.525838072516958e-01, 5.696374016455559e-01, 5.865683094322820e-01, 6.033503643513004e-01, 6.199579567933325e-01, + 6.363661311538971e-01, 6.525506803780192e-01, 6.684882372050696e-01, 6.841563616341746e-01, 6.995336241446708e-01, + 7.145996842225878e-01, 7.293353637631239e-01, 7.437227149404935e-01, 7.577450821603423e-01, 7.713871577361272e-01, + 7.846350309593857e-01, 7.974762302646725e-01, 8.098997582230498e-01, 8.218961191333729e-01, 8.334573390181531e-01, + 8.445769778704795e-01, 8.552501340402698e-01, 8.654734406919574e-01, 8.752450543115063e-01, 8.845646352883213e-01, + 8.934333206470277e-01, 9.018536890551258e-01, 9.098297182849719e-01, 9.173667353621834e-01, 9.244713596871228e-01, + 9.311514394712620e-01, 9.374159818855259e-01, 9.432750773727245e-01, 9.487398186303003e-01, 9.538222148222497e-01, + 9.585351016294561e-01, 9.628920477950361e-01, 9.669072588647543e-01, 9.705954788611818e-01, 9.739718906630962e-01, + 9.770520158876372e-01, 9.798516150909821e-01, 9.823865891128170e-01, 9.846728823898172e-01, 9.867263890529354e-01, + 9.885628626019504e-01, 9.901978299180545e-01, 9.916465103310770e-01, 9.929237404023775e-01, 9.940439050178721e-01, + 9.950208753087979e-01, 9.958679538316859e-01, 9.965978273449145e-01, 9.972225274187749e-01, 9.977533990110320e-01, + 9.982010770325636e-01, 9.985754708200026e-01, 9.988857563266385e-01, 9.991403757414241e-01, 9.993470441509588e-01, + 9.995127627727911e-01, 9.996438382121301e-01, 9.997459071295719e-01, 9.998239656559388e-01, 9.998824028526124e-01, + 9.999250374922579e-01, 9.999551574256286e-01, 9.999755608048836e-01, 9.999885984518604e-01, 9.999962166900126e-01, + 9.999962166900126e-01, 9.999885984518604e-01, 9.999755608048836e-01, 9.999551574256286e-01, 9.999250374922579e-01, + 9.998824028526124e-01, 9.998239656559388e-01, 9.997459071295719e-01, 9.996438382121301e-01, 9.995127627727911e-01, + 9.993470441509588e-01, 9.991403757414241e-01, 9.988857563266385e-01, 9.985754708200026e-01, 9.982010770325636e-01, + 9.977533990110320e-01, 9.972225274187749e-01, 9.965978273449145e-01, 9.958679538316859e-01, 9.950208753087979e-01, + 9.940439050178721e-01, 9.929237404023775e-01, 9.916465103310770e-01, 9.901978299180545e-01, 9.885628626019504e-01, + 9.867263890529354e-01, 9.846728823898172e-01, 9.823865891128170e-01, 9.798516150909821e-01, 9.770520158876372e-01, + 9.739718906630962e-01, 9.705954788611818e-01, 9.669072588647543e-01, 9.628920477950361e-01, 9.585351016294561e-01, + 9.538222148222497e-01, 9.487398186303003e-01, 9.432750773727245e-01, 9.374159818855259e-01, 9.311514394712620e-01, + 9.244713596871228e-01, 9.173667353621834e-01, 9.098297182849719e-01, 9.018536890551258e-01, 8.934333206470277e-01, + 8.845646352883213e-01, 8.752450543115063e-01, 8.654734406919574e-01, 8.552501340402698e-01, 8.445769778704795e-01, + 8.334573390181531e-01, 8.218961191333729e-01, 8.098997582230498e-01, 7.974762302646725e-01, 7.846350309593857e-01, + 7.713871577361272e-01, 7.577450821603423e-01, 7.437227149404935e-01, 7.293353637631239e-01, 7.145996842225878e-01, + 6.995336241446708e-01, 6.841563616341746e-01, 6.684882372050696e-01, 6.525506803780192e-01, 6.363661311538971e-01, + 6.199579567933325e-01, 6.033503643513004e-01, 5.865683094322820e-01, 5.696374016455559e-01, 5.525838072516958e-01, + 5.354341495003542e-01, 5.182154071658814e-01, 5.009548117912680e-01, 4.836797441523142e-01, 4.664176304528364e-01, + 4.491958387581356e-01, 4.320415761679195e-01, 4.149817872214252e-01, 3.980430540166849e-01, 3.812514985127824e-01, + 3.646326874686314e-01, 3.482115404543554e-01, 3.320122413518523e-01, 3.160581537396951e-01, 3.003717405342550e-01, + 2.849744882339612e-01, 2.698868360870567e-01, 2.551281104752023e-01, 2.407164647759538e-01, 2.266688249366323e-01, + 2.130008409605561e-01, 1.997268444741311e-01, 1.868598125100347e-01, 1.744113376077630e-01, 1.623916042982366e-01, + 1.508093720039881e-01, 1.396719643506733e-01, 1.289852648491186e-01, 1.187537188695662e-01, 1.089803417907089e-01, + 9.966673316465058e-02, 9.081309669365416e-02, 8.241826576309315e-02, 7.447973421347953e-02, 6.699369195627566e-02, + 5.995506493224793e-02, 5.335755875796826e-02, 4.719370517091751e-02, 4.145491000214293e-02, 3.613150075407039e-02, + 3.121277069249126e-02, 2.668701415521377e-02, 2.254154337372088e-02, 1.876266772162453e-02, 1.533559472880042e-02, + 1.224415763156159e-02, 9.470118155887091e-03, 6.991265476184880e-03, 4.775245154322467e-03, 2.750746382614873e-03}; + +const LC3_FLOAT MDCT_WINDOW_80[160] = { + -7.078546706512391e-04, -2.098197727900724e-03, -4.525198076002370e-03, -8.233976327300612e-03, + -1.337713096257934e-02, -1.999721557401502e-02, -2.800909464274782e-02, -3.721502082245055e-02, + -4.731768261606175e-02, -5.794654834034055e-02, -6.867606753531441e-02, -7.904647440788692e-02, + -8.859705468085925e-02, -9.688303623049199e-02, -1.034961241263523e-01, -1.080766457616878e-01, + -1.103242262600913e-01, -1.099809851424550e-01, -1.068172142230882e-01, -1.006190418791648e-01, + -9.116452506492527e-02, -7.820617483254730e-02, -6.146688124166948e-02, -4.063362855701623e-02, + -1.536329520788766e-02, 1.470155068746303e-02, 4.989736509080558e-02, 9.050369257152079e-02, + 1.366911019414417e-01, 1.884686389218322e-01, 2.456456803467095e-01, 3.077789078889820e-01, + 3.741642373060188e-01, 4.438114799213576e-01, 5.154735456539700e-01, 5.876661722564289e-01, + 6.587619767809000e-01, 7.270576699841359e-01, 7.908752989295335e-01, 8.486643364959733e-01, + 8.991320235484349e-01, 9.413348145272842e-01, 9.747634827941575e-01, 9.994114730415857e-01, + 1.015760373791603e+00, 1.024736164069697e+00, 1.027634294456205e+00, 1.025991493983836e+00, + 1.021427210603284e+00, 1.015439859549357e+00, 1.009366925499550e+00, 1.003508162416449e+00, + 9.988898206257559e-01, 9.953133902427869e-01, 9.925943919208190e-01, 9.905771957917731e-01, + 9.891371616557014e-01, 9.881790747212391e-01, 9.876249269174586e-01, 9.874056275509585e-01, + 9.874524849192456e-01, 9.876951134084213e-01, 9.880640617030884e-01, 9.884926873551375e-01, + 9.889230031022089e-01, 9.893074965384659e-01, 9.896146331889107e-01, 9.898319269347060e-01, + 9.899693102025342e-01, 9.900603352632121e-01, 9.901575015155720e-01, 9.903255289051605e-01, + 9.906303787150326e-01, 9.911298894709990e-01, 9.918665491182922e-01, 9.928619727154252e-01, + 9.941156069136238e-01, 9.956033775539884e-01, 9.972793109558521e-01, 9.990784840729244e-01, + 1.000922365901945e+00, 1.002728111386909e+00, 1.004416038098237e+00, 1.005919224127911e+00, + 1.007189345025525e+00, 1.008200146369426e+00, 1.008949493525753e+00, 1.009458241425143e+00, + 1.009768980817384e+00, 1.009940336228694e+00, 1.010039453539107e+00, 1.010132323996401e+00, + 1.010272524848519e+00, 1.010494354532353e+00, 1.010808068774316e+00, 1.011201071127927e+00, + 1.011641272406023e+00, 1.012080125934687e+00, 1.012458183122033e+00, 1.012706955800289e+00, + 1.012755013843985e+00, 1.012530134411619e+00, 1.011962331100864e+00, 1.010982135506986e+00, + 1.009512438049510e+00, 1.007460860286395e+00, 1.004708677491086e+00, 1.001111413242302e+00, + 9.965041017623596e-01, 9.907199995730845e-01, 9.823765865983288e-01, 9.708821747608998e-01, + 9.546732976073705e-01, 9.321553861564006e-01, 9.018003682081348e-01, 8.623984077953557e-01, + 8.132817365236141e-01, 7.544551974836834e-01, 6.866580716267418e-01, 6.113488038789190e-01, + 5.306181649316597e-01, 4.471309850999502e-01, 3.639114681156236e-01, 2.841647033392408e-01, + 2.110209448747969e-01, 1.472287968327703e-01, 9.482665349502291e-02, 5.482436608328477e-02, + 2.701461405056264e-02, 9.996743588367519e-03, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_160[320] = { + -4.619898752628163e-04, -9.747166718929050e-04, -1.664473096973725e-03, -2.597106916737789e-03, + -3.806285163352241e-03, -5.324608721716763e-03, -7.175885277771099e-03, -9.382480860899108e-03, + -1.195270300743193e-02, -1.489528159506296e-02, -1.820666399965468e-02, -2.187570925786862e-02, + -2.588471937157619e-02, -3.020862738245264e-02, -3.481597793538342e-02, -3.967067992672979e-02, + -4.472698045914417e-02, -4.994225863256500e-02, -5.526334794593565e-02, -6.063717235243996e-02, + -6.600961519440657e-02, -7.131966266443390e-02, -7.651178225890490e-02, -8.152964005319532e-02, + -8.631137544905677e-02, -9.080411291245728e-02, -9.495377758870335e-02, -9.870736514214426e-02, + -1.020202684361974e-01, -1.048438825017798e-01, -1.071382314127799e-01, -1.088690135027248e-01, + -1.099969655786929e-01, -1.104898474883336e-01, -1.103225838568563e-01, -1.094621746650760e-01, + -1.078834293141886e-01, -1.055612509762041e-01, -1.024650162703341e-01, -9.857014566194629e-02, + -9.384684920715425e-02, -8.826309993000785e-02, -8.178792716809512e-02, -7.438785600211463e-02, + -6.602189797715241e-02, -5.665655641133161e-02, -4.624456893420224e-02, -3.474585776145929e-02, + -2.211581608120528e-02, -8.310425696208936e-03, 6.717697635290676e-03, 2.300642061077823e-02, + 4.060106462625085e-02, 5.953239090915557e-02, 7.983354189816511e-02, 1.015233140203748e-01, + 1.246171387327525e-01, 1.491152519299797e-01, 1.750067399059861e-01, 2.022699854906251e-01, + 2.308655379767671e-01, 2.607365124918583e-01, 2.918144694729168e-01, 3.240095704645023e-01, + 3.572175180786021e-01, 3.913146885756875e-01, 4.261571642320424e-01, 4.615925445090212e-01, + 4.974471592901086e-01, 5.335326819631583e-01, 5.696546730080154e-01, 6.056083823929643e-01, + 6.411830842823245e-01, 6.761653499550255e-01, 7.103400549562944e-01, 7.434943718765665e-01, + 7.754281892901473e-01, 8.059437233154637e-01, 8.348589373399948e-01, 8.620108336276733e-01, + 8.872599706865123e-01, 9.104863121445679e-01, 9.315962496426278e-01, 9.505220861927248e-01, + 9.672366712325431e-01, 9.817397501303696e-01, 9.940557180662704e-01, 1.004247514102417e+00, + 1.012407428282884e+00, 1.018650990561848e+00, 1.023118841384460e+00, 1.025972450969440e+00, + 1.027397523939210e+00, 1.027585830688143e+00, 1.026738673647482e+00, 1.025061777648234e+00, + 1.022756514615106e+00, 1.020009139549275e+00, 1.016996499560845e+00, 1.013915946100629e+00, + 1.011044869639164e+00, 1.007773858455400e+00, 1.004848753962734e+00, 1.002245009135684e+00, + 9.999393169239009e-01, 9.979055415627330e-01, 9.961203379971326e-01, 9.945597525471822e-01, + 9.932031606606762e-01, 9.920297273323891e-01, 9.910230654424902e-01, 9.901668953434221e-01, + 9.894488374513719e-01, 9.888556356037892e-01, 9.883778520531268e-01, 9.880051626345804e-01, + 9.877295459610343e-01, 9.875412739766566e-01, 9.874329809802893e-01, 9.873949921033299e-01, + 9.874197049003676e-01, 9.874973205882319e-01, 9.876201238703241e-01, 9.877781920433015e-01, + 9.879637979933339e-01, 9.881678007807095e-01, 9.883835200189653e-01, 9.886022219397892e-01, + 9.888182771263505e-01, 9.890247977602895e-01, 9.892178658748239e-01, 9.893923680007577e-01, + 9.895463342815009e-01, 9.896772011542693e-01, 9.897859195209235e-01, 9.898725363809847e-01, + 9.899410789223559e-01, 9.899945557067980e-01, 9.900394023736973e-01, 9.900814722948890e-01, + 9.901293790312005e-01, 9.901902265696609e-01, 9.902734448815004e-01, 9.903862280081246e-01, + 9.905379830873822e-01, 9.907348826312993e-01, 9.909842592301273e-01, 9.912905118607647e-01, + 9.916586940166509e-01, 9.920906151219310e-01, 9.925887208794144e-01, 9.931516528513824e-01, + 9.937790866568735e-01, 9.944668184371617e-01, 9.952116634297566e-01, 9.960068616185641e-01, + 9.968461329825753e-01, 9.977203369515556e-01, 9.986213520769593e-01, 9.995382582242990e-01, + 1.000461955079660e+00, 1.001380551217109e+00, 1.002284871786226e+00, 1.003163845364970e+00, + 1.004009147462043e+00, 1.004811375053364e+00, 1.005563968008037e+00, 1.006259855360867e+00, + 1.006895570408563e+00, 1.007466616298057e+00, 1.007972441990187e+00, 1.008411468616852e+00, + 1.008786009787269e+00, 1.009097763850333e+00, 1.009351762546296e+00, 1.009552401900961e+00, + 1.009707093778162e+00, 1.009822090220407e+00, 1.009906958448099e+00, 1.009969021400474e+00, + 1.010017890428877e+00, 1.010060809299530e+00, 1.010106564965965e+00, 1.010161131093372e+00, + 1.010231078494249e+00, 1.010319484524512e+00, 1.010430470494512e+00, 1.010564099281000e+00, + 1.010721360243234e+00, 1.010899655674578e+00, 1.011096993993037e+00, 1.011308167670753e+00, + 1.011529185153809e+00, 1.011753008569803e+00, 1.011973876511603e+00, 1.012182837094955e+00, + 1.012373028737774e+00, 1.012535058602453e+00, 1.012660975529858e+00, 1.012740575296603e+00, + 1.012765922449960e+00, 1.012726958954961e+00, 1.012615904116265e+00, 1.012422888521601e+00, + 1.012140460211194e+00, 1.011758810583150e+00, 1.011269960947744e+00, 1.010663676735228e+00, + 1.009930754807923e+00, 1.009058249873833e+00, 1.008034308295421e+00, 1.006843352506855e+00, + 1.005470005637052e+00, 1.003894772403371e+00, 1.002098854400575e+00, 1.000060686758758e+00, + 9.977600196406868e-01, 9.951746430061121e-01, 9.922861082472264e-01, 9.890757868707590e-01, + 9.847362453480265e-01, 9.798613526271561e-01, 9.741378617337759e-01, 9.673331975559332e-01, + 9.592539757044516e-01, 9.496984081652284e-01, 9.384634163826711e-01, 9.253567968750328e-01, + 9.101986790930605e-01, 8.928338316495705e-01, 8.731437835983047e-01, 8.510420440685049e-01, + 8.264839911291133e-01, 7.994681492797084e-01, 7.700431275216928e-01, 7.383028603058783e-01, + 7.043814340356083e-01, 6.684616478236647e-01, 6.307755329382612e-01, 5.915799587176216e-01, + 5.511703155400274e-01, 5.098915423728179e-01, 4.681017110047964e-01, 4.261772971493010e-01, + 3.845172335531009e-01, 3.435228672445613e-01, 3.036004651973099e-01, 2.651434678028531e-01, + 2.285283969438072e-01, 1.941021906320984e-01, 1.621735416384830e-01, 1.330015240938615e-01, + 1.067840430193724e-01, 8.365057236623041e-02, 6.365188111381356e-02, 4.676538412257621e-02, + 3.288072750732215e-02, 2.183057564646270e-02, 1.336381425803019e-02, 6.758124889697787e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_240[480] = { + -3.613496418928369e-04, -7.078546706512391e-04, -1.074443637110903e-03, -1.533478537964509e-03, + -2.098197727900724e-03, -2.778420871815740e-03, -3.584129920673041e-03, -4.525198076002370e-03, + -5.609327243712055e-03, -6.843234536105624e-03, -8.233976327300612e-03, -9.785314755557023e-03, + -1.149880303071551e-02, -1.337713096257934e-02, -1.542181679511618e-02, -1.762979910961727e-02, + -1.999721557401502e-02, -2.252080561390149e-02, -2.519406300389030e-02, -2.800909464274782e-02, + -3.095765092956728e-02, -3.402996266948349e-02, -3.721502082245055e-02, -4.050053247568393e-02, + -4.387219218706189e-02, -4.731768261606175e-02, -5.082325342672667e-02, -5.437166635159518e-02, + -5.794654834034055e-02, -6.153426201732499e-02, -6.511708163113709e-02, -6.867606753531441e-02, + -7.219447805250771e-02, -7.565695975592170e-02, -7.904647440788692e-02, -8.234442557322251e-02, + -8.553324579905185e-02, -8.859705468085925e-02, -9.152091100798199e-02, -9.428847446755965e-02, + -9.688303623049198e-02, -9.929123258537813e-02, -1.015008467688577e-01, -1.034961241263523e-01, + -1.052637003544443e-01, -1.067939984687745e-01, -1.080766457616878e-01, -1.090997300590506e-01, + -1.098524491515805e-01, -1.103242262600913e-01, -1.105084619148789e-01, -1.103977408741932e-01, + -1.099809851424550e-01, -1.092492774392824e-01, -1.081974227416502e-01, -1.068172142230882e-01, + -1.050995803285455e-01, -1.030360111111103e-01, -1.006190418791648e-01, -9.784120023411771e-02, + -9.469304216883027e-02, -9.116452506492527e-02, -8.724644532866996e-02, -8.293043914044632e-02, + -7.820617483254730e-02, -7.306142427456862e-02, -6.748468182105991e-02, -6.146688124166948e-02, + -5.499497258200362e-02, -4.805444424454820e-02, -4.063362855701623e-02, -3.272045590229335e-02, + -2.430122582451853e-02, -1.536329520788766e-02, -5.891434269890659e-03, 4.126595858583295e-03, + 1.470155068746303e-02, 2.584738191459814e-02, 3.757652772246801e-02, 4.989736509080558e-02, + 6.282034030592902e-02, 7.635397728566121e-02, 9.050369257152079e-02, 1.052747118478660e-01, + 1.206703467513333e-01, 1.366911019414417e-01, 1.533343890681390e-01, 1.705954709184399e-01, + 1.884686389218322e-01, 2.069449962574092e-01, 2.260093000067393e-01, 2.456456803467095e-01, + 2.658346019332584e-01, 2.865543814049772e-01, 3.077789078889820e-01, 3.294769437072290e-01, + 3.516171481750350e-01, 3.741642373060188e-01, 3.970739591211551e-01, 4.203043046885219e-01, + 4.438114799213576e-01, 4.675442291623012e-01, 4.914498631045615e-01, 5.154735456539700e-01, + 5.395557644293222e-01, 5.636399817032525e-01, 5.876661722564289e-01, 6.115695310143157e-01, + 6.352890592874099e-01, 6.587619767809000e-01, 6.819230974423550e-01, 7.047092819314779e-01, + 7.270576699841359e-01, 7.489068963384272e-01, 7.701990187606995e-01, 7.908752989295335e-01, + 8.108788692151807e-01, 8.301579139160681e-01, 8.486643364959733e-01, 8.663548164329093e-01, + 8.831896853053627e-01, 8.991320235484349e-01, 9.141540563656075e-01, 9.282282546151819e-01, + 9.413348145272842e-01, 9.534619388400459e-01, 9.646048250501910e-01, 9.747634827941575e-01, + 9.839435385219192e-01, 9.921529097154242e-01, 9.994114730415857e-01, 1.005746084650236e+00, + 1.011183971347815e+00, 1.015760373791603e+00, 1.019515072412387e+00, 1.022490937034641e+00, + 1.024736164069697e+00, 1.026304095700693e+00, 1.027250978292214e+00, 1.027634294456205e+00, + 1.027511063644843e+00, 1.026942795115598e+00, 1.025991493983836e+00, 1.024716149969084e+00, + 1.023175976163407e+00, 1.021427210603284e+00, 1.019521566634239e+00, 1.017510118327508e+00, + 1.015439859549357e+00, 1.013460916839174e+00, 1.011654901040475e+00, 1.009366925499550e+00, + 1.007263182132894e+00, 1.005313192386866e+00, 1.003508162416449e+00, 1.001840787319378e+00, + 1.000303927234380e+00, 9.988898206257559e-01, 9.975915283480670e-01, 9.964015284765968e-01, + 9.953133902427869e-01, 9.943201078053212e-01, 9.934158959186011e-01, 9.925943919208190e-01, + 9.918510277326026e-01, 9.911797988363887e-01, 9.905771957917731e-01, 9.900381047643838e-01, + 9.895594394179152e-01, 9.891371616557014e-01, 9.887684373604154e-01, 9.884497924570929e-01, + 9.881790747212391e-01, 9.879528358230726e-01, 9.877691368590689e-01, 9.876249269174586e-01, + 9.875179947346887e-01, 9.874458127312921e-01, 9.874056275509585e-01, 9.873951115886979e-01, + 9.874115368168944e-01, 9.874524849192456e-01, 9.875149888347144e-01, 9.875968894760857e-01, + 9.876951134084213e-01, 9.878075819424549e-01, 9.879311998177238e-01, 9.880640617030884e-01, + 9.882032571565917e-01, 9.883471084085503e-01, 9.884926873551375e-01, 9.886386592120545e-01, + 9.887825578295630e-01, 9.889230031022089e-01, 9.890581715933395e-01, 9.891867674284610e-01, + 9.893074965384659e-01, 9.894196399062921e-01, 9.895220757174378e-01, 9.896146331889107e-01, + 9.896970346678272e-01, 9.897692596535289e-01, 9.898319269347060e-01, 9.898852572653667e-01, + 9.899307640365727e-01, 9.899693102025343e-01, 9.900025692522435e-01, 9.900321562263099e-01, + 9.900603352632121e-01, 9.900889812894406e-01, 9.901206586012907e-01, 9.901575015155720e-01, + 9.902023946214220e-01, 9.902575406142213e-01, 9.903255289051605e-01, 9.904087914462694e-01, + 9.905096491583045e-01, 9.906303787150326e-01, 9.907727108894024e-01, 9.909387444078919e-01, + 9.911298894709990e-01, 9.913476318763218e-01, 9.915928560402563e-01, 9.918665491182922e-01, + 9.921691315380984e-01, 9.925010851461232e-01, 9.928619727154252e-01, 9.932519181564613e-01, + 9.936700207375173e-01, 9.941156069136238e-01, 9.945873147903244e-01, 9.950837402063278e-01, + 9.956033775539884e-01, 9.961439922621166e-01, 9.967034533921340e-01, 9.972793109558521e-01, + 9.978690858367024e-01, 9.984697087896268e-01, 9.990784840729244e-01, 9.996919011206490e-01, + 1.000308193833526e+00, 1.000922365901945e+00, 1.001532636590676e+00, 1.002135464655177e+00, + 1.002728111386909e+00, 1.003307449770187e+00, 1.003870934089686e+00, 1.004416038098237e+00, + 1.004940548815171e+00, 1.005442141810160e+00, 1.005919224127911e+00, 1.006370303149314e+00, + 1.006793927824538e+00, 1.007189345025525e+00, 1.007555573455895e+00, 1.007892674961336e+00, + 1.008200146369426e+00, 1.008478423284851e+00, 1.008727884997619e+00, 1.008949493525753e+00, + 1.009144112734761e+00, 1.009313224929575e+00, 1.009458241425143e+00, 1.009581280555682e+00, + 1.009684090687164e+00, 1.009768980817384e+00, 1.009838308708799e+00, 1.009894548257807e+00, + 1.009940336228694e+00, 1.009977916643680e+00, 1.010010230290263e+00, 1.010039453539107e+00, + 1.010068202038694e+00, 1.010098388689342e+00, 1.010132323996401e+00, 1.010171656775640e+00, + 1.010218096148412e+00, 1.010272524848519e+00, 1.010336490294771e+00, 1.010410221483215e+00, + 1.010494354532353e+00, 1.010588873699422e+00, 1.010693501186928e+00, 1.010808068774316e+00, + 1.010931436739342e+00, 1.011062876503041e+00, 1.011201071127927e+00, 1.011344700694417e+00, + 1.011491904228184e+00, 1.011641272406023e+00, 1.011790282474963e+00, 1.011937567254485e+00, + 1.012080125934687e+00, 1.012216235487353e+00, 1.012342907951334e+00, 1.012458183122033e+00, + 1.012558879696851e+00, 1.012642857380847e+00, 1.012706955800289e+00, 1.012748952907404e+00, + 1.012765799894453e+00, 1.012755013843985e+00, 1.012713798678211e+00, 1.012639775003457e+00, + 1.012530134411619e+00, 1.012382309473470e+00, 1.012194068117524e+00, 1.011962331100864e+00, + 1.011685173724601e+00, 1.011359143572147e+00, 1.010982135506986e+00, 1.010550715971368e+00, + 1.010062133151922e+00, 1.009512438049510e+00, 1.008898689394160e+00, 1.008215923600973e+00, + 1.007460860286395e+00, 1.006627741823389e+00, 1.005712337656749e+00, 1.004708677491086e+00, + 1.003611467285588e+00, 1.002414286392268e+00, 1.001111413242302e+00, 9.996961651093181e-01, + 9.981625949525345e-01, 9.965041017623596e-01, 9.947148884277037e-01, 9.927891912841345e-01, + 9.907199995730845e-01, 9.884793707533194e-01, 9.855347660016696e-01, 9.823765865983286e-01, + 9.789747333404933e-01, 9.751623811486372e-01, 9.708821747608998e-01, 9.660805524695870e-01, + 9.606976399184645e-01, 9.546732976073706e-01, 9.479479345282376e-01, 9.404609052933396e-01, + 9.321553861564006e-01, 9.229775478442888e-01, 9.128745354570823e-01, 9.018003682081348e-01, + 8.897163275605041e-01, 8.765908974996186e-01, 8.623984077953557e-01, 8.471200801854385e-01, + 8.307479727020245e-01, 8.132817365236141e-01, 7.947291447585267e-01, 7.751108841891807e-01, + 7.544551974836834e-01, 7.327963552921717e-01, 7.101790843209148e-01, 6.866580716267418e-01, + 6.622962432368731e-01, 6.371684119604742e-01, 6.113488038789190e-01, 5.849206604934815e-01, + 5.579747428663487e-01, 5.306181649316717e-01, 5.029523957059122e-01, 4.750868825511614e-01, + 4.471309850999535e-01, 4.192049917945288e-01, 3.914252910998820e-01, 3.639114681156252e-01, + 3.367837772954476e-01, 3.101627843160973e-01, 2.841647033392418e-01, 2.589033711808454e-01, + 2.344880603710975e-01, 2.110209448747974e-01, 1.885997642296488e-01, 1.673100807904834e-01, + 1.472287968327706e-01, 1.284223074167396e-01, 1.109422548710344e-01, 9.482665349502306e-02, + 8.009914366829558e-02, 6.676765847398403e-02, 5.482436608328485e-02, 4.424588851571281e-02, + 3.499361000717621e-02, 2.701461405056267e-02, 2.024370180670145e-02, 1.460796755137538e-02, + 9.996743588367531e-03, 5.305235098871444e-03, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_320[640] = { + -3.021153494057143e-04, -5.867737487939294e-04, -8.366504004139796e-04, -1.126635355725494e-03, + -1.470492941694331e-03, -1.873473391018495e-03, -2.339292362082021e-03, -2.872008069419264e-03, + -3.476256385086407e-03, -4.155963816705528e-03, -4.914563787665504e-03, -5.755172503953251e-03, + -6.680623380533122e-03, -7.693816924650567e-03, -8.796760749750191e-03, -9.990503073705982e-03, + -1.127574117138621e-02, -1.265334152129685e-02, -1.412438986522702e-02, -1.568889620430290e-02, + -1.734512089366117e-02, -1.909097368362797e-02, -2.092546711168754e-02, -2.284684792818856e-02, + -2.485207716234951e-02, -2.693746704328349e-02, -2.909952486193999e-02, -3.133504629493832e-02, + -3.363960728361352e-02, -3.600820974457969e-02, -3.843601741746971e-02, -4.091746034850161e-02, + -4.344654894948344e-02, -4.601786724624048e-02, -4.862598509282497e-02, -5.126474204655663e-02, + -5.392644753556616e-02, -5.660384311081047e-02, -5.929116747072080e-02, -6.198268202511926e-02, + -6.467025548071184e-02, -6.734542216184526e-02, -7.000099017198280e-02, -7.263057011354321e-02, + -7.522784961377151e-02, -7.778525942347714e-02, -8.029480247839878e-02, -8.274924535373614e-02, + -8.514125464087215e-02, -8.746379123238275e-02, -8.971069341834263e-02, -9.187564084638347e-02, + -9.395176975347193e-02, -9.593137735886889e-02, -9.780843257659243e-02, -9.957851303827886e-02, + -1.012361165314596e-01, -1.027741036495644e-01, -1.041861222641119e-01, -1.054680247057000e-01, + -1.066160875985523e-01, -1.076255384835563e-01, -1.084912299471198e-01, -1.092087422379003e-01, + -1.097736146613313e-01, -1.101808861640070e-01, -1.104271876052675e-01, -1.105108362290460e-01, + -1.104281465492726e-01, -1.101739218186236e-01, -1.097437360338336e-01, -1.091353125572511e-01, + -1.083467335729228e-01, -1.073739938306107e-01, -1.062130155324388e-01, -1.048606145834788e-01, + -1.033132401525343e-01, -1.015673163469357e-01, -9.962005506126154e-02, -9.746803229469267e-02, + -9.510723623306666e-02, -9.253303383231506e-02, -8.974125216128212e-02, -8.672877689119252e-02, + -8.349213839083708e-02, -8.002639902061687e-02, -7.632679536516856e-02, -7.238806162166744e-02, + -6.820576796149519e-02, -6.377611429172260e-02, -5.909386001558149e-02, -5.415316322402774e-02, + -4.894812724598650e-02, -4.347347112195197e-02, -3.772461300253332e-02, -3.169587609244436e-02, + -2.538179830690266e-02, -1.877689096555516e-02, -1.187461378850388e-02, -4.669099247423082e-03, + 2.844096748870385e-03, 1.066976124794342e-02, 1.881355950582949e-02, 2.728156010437695e-02, + 3.607810469851272e-02, 4.520702759803914e-02, 5.467238802204326e-02, 6.447866054615346e-02, + 7.462862199422061e-02, 8.512490568723846e-02, 9.596983987496970e-02, 1.071650779014335e-01, + 1.187115850305241e-01, 1.306101067250375e-01, 1.428596447589721e-01, 1.554584725339102e-01, + 1.684041609371527e-01, 1.816947894623263e-01, 1.953273880886783e-01, 2.092963206850239e-01, + 2.235945635254679e-01, 2.382160219461597e-01, 2.531529721334063e-01, 2.683961570569586e-01, + 2.839361392493072e-01, 2.997624255177811e-01, 3.158619077906196e-01, 3.322210551086769e-01, + 3.488264676990591e-01, 3.656640377499646e-01, 3.827152968157059e-01, 3.999611859760947e-01, + 4.173843265025887e-01, 4.349669624916473e-01, 4.526876397402144e-01, 4.705242008503956e-01, + 4.884539254831315e-01, 5.064545550235134e-01, 5.245006748662190e-01, 5.425674372882107e-01, + 5.606312044701524e-01, 5.786672646386708e-01, 5.966477035050948e-01, 6.145458904162185e-01, + 6.323361944662236e-01, 6.499926319211774e-01, 6.674874032292857e-01, 6.847932667399612e-01, + 7.018835463513400e-01, 7.187322544823347e-01, 7.353128213893310e-01, 7.516001985652684e-01, + 7.675699252273948e-01, 7.831974571624924e-01, 7.984583859818390e-01, 8.133295347030278e-01, + 8.277892271515950e-01, 8.418178561101360e-01, 8.553961300139363e-01, 8.685068980898102e-01, + 8.811334436653052e-01, 8.932596784799233e-01, 9.048748835980528e-01, 9.159657608120536e-01, + 9.265215299450000e-01, 9.365339988633418e-01, 9.459977028429117e-01, 9.549088408436811e-01, + 9.632658122557368e-01, 9.710688896122810e-01, 9.783204156360773e-01, 9.850226760127131e-01, + 9.911792082081333e-01, 9.967989944502682e-01, 1.001894024615659e+00, 1.006474342231823e+00, + 1.010552057109195e+00, 1.014142538208007e+00, 1.017262593268930e+00, 1.019928842669923e+00, + 1.022159867011177e+00, 1.023976320927187e+00, 1.025400734608122e+00, 1.026455340400072e+00, + 1.027164510654160e+00, 1.027552729180790e+00, 1.027644462380432e+00, 1.027463246660797e+00, + 1.027035903410657e+00, 1.026389068000259e+00, 1.025548201799728e+00, 1.024537134749709e+00, + 1.023380803775376e+00, 1.022103695693341e+00, 1.020728359657958e+00, 1.019275334687329e+00, + 1.017765178792830e+00, 1.016217355867531e+00, 1.014665311686846e+00, 1.013249071090664e+00, + 1.011948006992127e+00, 1.010189090179223e+00, 1.008557961167850e+00, 1.007011287608451e+00, + 1.005548764575910e+00, 1.004168417268956e+00, 1.002867268893035e+00, 1.001641769115897e+00, + 1.000489068954641e+00, 9.994060799749374e-01, 9.983898865406841e-01, 9.974370849972721e-01, + 9.965444836911705e-01, 9.957098545943852e-01, 9.949302413030897e-01, 9.942024045863540e-01, + 9.935241604969254e-01, 9.928930430130044e-01, 9.923068103443909e-01, 9.917633778190438e-01, + 9.912597642374404e-01, 9.907954498484041e-01, 9.903677893656558e-01, 9.899751611066148e-01, + 9.896160337369861e-01, 9.892890160408989e-01, 9.889928511129679e-01, 9.887260333430423e-01, + 9.884868721088945e-01, 9.882751039537586e-01, 9.880892168751595e-01, 9.879277114724612e-01, + 9.877898261218510e-01, 9.876743442038471e-01, 9.875807496078497e-01, 9.875072021876561e-01, + 9.874529447589979e-01, 9.874169741527905e-01, 9.873984685207834e-01, 9.873958301311858e-01, + 9.874080027710336e-01, 9.874343401290739e-01, 9.874736235387018e-01, 9.875243137719285e-01, + 9.875856201221135e-01, 9.876563785063032e-01, 9.877358921155149e-01, 9.878225576787804e-01, + 9.879150968481590e-01, 9.880132731565830e-01, 9.881156946084619e-01, 9.882211314188272e-01, + 9.883289032519310e-01, 9.884378310018685e-01, 9.885476787868710e-01, 9.886568414746639e-01, + 9.887645868459630e-01, 9.888708540445242e-01, 9.889744320992592e-01, 9.890747269455915e-01, + 9.891710038703801e-01, 9.892631024032380e-01, 9.893507219573624e-01, 9.894330645494204e-01, + 9.895096919388534e-01, 9.895810813422480e-01, 9.896467469067676e-01, 9.897067365020641e-01, + 9.897606930400666e-01, 9.898094478563998e-01, 9.898530133261707e-01, 9.898914705684924e-01, + 9.899254194103574e-01, 9.899554202030650e-01, 9.899824494486951e-01, 9.900065116928948e-01, + 9.900284805353695e-01, 9.900497484789281e-01, 9.900709561632662e-01, 9.900928358611601e-01, + 9.901163920607219e-01, 9.901427479709606e-01, 9.901734275350572e-01, 9.902087332329851e-01, + 9.902498637985275e-01, 9.902983686695558e-01, 9.903548501470234e-01, 9.904205084933333e-01, + 9.904959297726740e-01, 9.905825150202904e-01, 9.906812569810133e-01, 9.907922087340426e-01, + 9.909165464981378e-01, 9.910550740962871e-01, 9.912084614290896e-01, 9.913768610980639e-01, + 9.915605826937839e-01, 9.917604214872976e-01, 9.919767175562684e-01, 9.922091101818779e-01, + 9.924579135466506e-01, 9.927231225056266e-01, 9.930049538427406e-01, 9.933027281437943e-01, + 9.936161084869942e-01, 9.939453714404443e-01, 9.942895145656371e-01, 9.946481676207727e-01, + 9.950203031067961e-01, 9.954058173659507e-01, 9.958038713694317e-01, 9.962130271017117e-01, + 9.966324689957675e-01, 9.970615306490058e-01, 9.974990583293081e-01, 9.979437430375855e-01, + 9.983940572002874e-01, 9.988493116887893e-01, 9.993083430214909e-01, 9.997689221333534e-01, + 1.000231131275969e+00, 1.000692135698996e+00, 1.001152013920163e+00, 1.001608526000461e+00, + 1.002060493867275e+00, 1.002507212061815e+00, 1.002947129400411e+00, 1.003378909587027e+00, + 1.003801368578070e+00, 1.004213810320699e+00, 1.004615386562846e+00, 1.005004618375781e+00, + 1.005380628601598e+00, 1.005743282364652e+00, 1.006091510392348e+00, 1.006424907424988e+00, + 1.006742427727669e+00, 1.007044321511378e+00, 1.007330218597112e+00, 1.007599401798709e+00, + 1.007852064386603e+00, 1.008088176165563e+00, 1.008308033204578e+00, 1.008511247273756e+00, + 1.008698144207627e+00, 1.008869515256392e+00, 1.009025659761512e+00, 1.009166718967367e+00, + 1.009293362609020e+00, 1.009406398832440e+00, 1.009507017171120e+00, 1.009595264293017e+00, + 1.009672145744679e+00, 1.009739084785160e+00, 1.009796675060142e+00, 1.009846137382005e+00, + 1.009888083631667e+00, 1.009924092276850e+00, 1.009955384765721e+00, 1.009982268770147e+00, + 1.010006298177305e+00, 1.010028618428735e+00, 1.010050254076988e+00, 1.010071952131355e+00, + 1.010094366238073e+00, 1.010118917317053e+00, 1.010146497096682e+00, 1.010177110711677e+00, + 1.010211755260102e+00, 1.010251003469427e+00, 1.010295468653759e+00, 1.010345234996637e+00, + 1.010400316698172e+00, 1.010461564316351e+00, 1.010528615445659e+00, 1.010601521285347e+00, + 1.010679788081867e+00, 1.010763905869062e+00, 1.010853429760676e+00, 1.010947547074519e+00, + 1.011045953108263e+00, 1.011148486293359e+00, 1.011254397791134e+00, 1.011363082075863e+00, + 1.011473302008831e+00, 1.011584996312149e+00, 1.011697416504599e+00, 1.011808919793469e+00, + 1.011919264025716e+00, 1.012027240794153e+00, 1.012132151631041e+00, 1.012232734564333e+00, + 1.012327560477901e+00, 1.012416383754384e+00, 1.012497890726292e+00, 1.012570434021054e+00, + 1.012633295255708e+00, 1.012685277016726e+00, 1.012725564992284e+00, 1.012752577651415e+00, + 1.012765062889864e+00, 1.012762356719162e+00, 1.012743376077777e+00, 1.012706484200181e+00, + 1.012650842226435e+00, 1.012575427778520e+00, 1.012479473490919e+00, 1.012361105121003e+00, + 1.012219809594718e+00, 1.012054359992419e+00, 1.011864000215460e+00, 1.011647223869087e+00, + 1.011402518267713e+00, 1.011129654652857e+00, 1.010826951260377e+00, 1.010492924436361e+00, + 1.010126353960416e+00, 1.009725892479312e+00, 1.009290060983833e+00, 1.008817301052548e+00, + 1.008305027555130e+00, 1.007752833675443e+00, 1.007157827358150e+00, 1.006518049344503e+00, + 1.005831403532018e+00, 1.005095592119373e+00, 1.004308630055050e+00, 1.003467498305776e+00, + 1.002569500413888e+00, 1.001612710105563e+00, 1.000594272975683e+00, 9.995111701168786e-01, + 9.983609218719522e-01, 9.971409288327860e-01, 9.958488863050556e-01, 9.944818543153893e-01, + 9.930375282832211e-01, 9.915146560759479e-01, 9.899136802423638e-01, 9.881930623810997e-01, + 9.859422591203311e-01, 9.835667898378924e-01, 9.811423034808365e-01, 9.785214441250228e-01, + 9.756636036109838e-01, 9.725453442532574e-01, 9.691456634185092e-01, 9.654406178310209e-01, + 9.614043615076308e-01, 9.570113065179300e-01, 9.522367669696690e-01, 9.470548839544214e-01, + 9.414403740008491e-01, 9.353691612846549e-01, 9.288190093977164e-01, 9.217662887169115e-01, + 9.141896283466009e-01, 9.060694681113471e-01, 8.973891675497357e-01, 8.881332000806269e-01, + 8.782893885841422e-01, 8.678469565343039e-01, 8.567970644671067e-01, 8.451334654019180e-01, + 8.328542805780399e-01, 8.199594783897041e-01, 8.064511006873497e-01, 7.923346478686025e-01, + 7.776204488292163e-01, 7.623206183595970e-01, 7.464486491227057e-01, 7.300205729992958e-01, + 7.130567383226717e-01, 6.955805444755916e-01, 6.776173229836567e-01, 6.591955305148172e-01, + 6.403486426892321e-01, 6.211072197441818e-01, 6.015049275244730e-01, 5.815787608870452e-01, + 5.613674511156324e-01, 5.409188627354076e-01, 5.202736834971303e-01, 4.994780733459294e-01, + 4.785774177949064e-01, 4.576172599874928e-01, 4.366490208265804e-01, 4.157221460415995e-01, + 3.948856590950757e-01, 3.741903189229770e-01, 3.536868899553974e-01, 3.334260017756462e-01, + 3.134586473252229e-01, 2.938337904395871e-01, 2.745992637590817e-01, 2.558030636168172e-01, + 2.374902188466697e-01, 2.197036032185785e-01, 2.024855415115456e-01, 1.858749915117319e-01, + 1.699067802117410e-01, 1.546132267478873e-01, 1.400238206749695e-01, 1.261637395672913e-01, + 1.130534434072719e-01, 1.007084973747940e-01, 8.914024389873081e-02, 7.835612100141792e-02, + 6.835821233920988e-02, 5.914211536028976e-02, 5.069893012340832e-02, 4.301717763585550e-02, + 3.608020726673359e-02, 2.986316337017630e-02, 2.433722657129812e-02, 1.947675241971700e-02, + 1.525710171255895e-02, 1.163787492636240e-02, 8.433087782643718e-03, 4.449668997344735e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_480[960] = { + -2.353032150516754e-04, -4.619898752628163e-04, -6.262931535610879e-04, -7.929180432976445e-04, + -9.747166718929050e-04, -1.180256894474562e-03, -1.409209039594871e-03, -1.664473096973725e-03, + -1.946591608170231e-03, -2.257081732588478e-03, -2.597106916737789e-03, -2.967607624839524e-03, + -3.370454877988472e-03, -3.806285163352241e-03, -4.276873767639064e-03, -4.782469904501813e-03, + -5.324608721716763e-03, -5.903403814095400e-03, -6.520419726599805e-03, -7.175885277771099e-03, + -7.871422820642307e-03, -8.606586039759667e-03, -9.382480860899108e-03, -1.019827182163307e-02, + -1.105520547739066e-02, -1.195270300743193e-02, -1.289205910303846e-02, -1.387263484323160e-02, + -1.489528159506296e-02, -1.595856621933800e-02, -1.706288556735433e-02, -1.820666399965468e-02, + -1.939065975232718e-02, -2.061355417582714e-02, -2.187570925786862e-02, -2.317526315266411e-02, + -2.451227449041489e-02, -2.588471937157619e-02, -2.729263737090799e-02, -2.873390902713615e-02, + -3.020862738245264e-02, -3.171440372994384e-02, -3.325098858986303e-02, -3.481597793538342e-02, + -3.640892406933019e-02, -3.802742318209150e-02, -3.967067992672979e-02, -4.133575417353826e-02, + -4.302203371734278e-02, -4.472698045914417e-02, -4.645022292934329e-02, -4.818891490266687e-02, + -4.994225863256500e-02, -5.170690802826666e-02, -5.348162036097223e-02, -5.526334794593565e-02, + -5.705123152423822e-02, -5.884271749745559e-02, -6.063717235243996e-02, -6.243104027829089e-02, + -6.422303545004304e-02, -6.600961519440657e-02, -6.778962269634495e-02, -6.955996868581379e-02, + -7.131966266443390e-02, -7.306581273272733e-02, -7.479758913001458e-02, -7.651178225890490e-02, + -7.820711420768856e-02, -7.988010693411644e-02, -8.152964005319532e-02, -8.315237353264004e-02, + -8.474728946770714e-02, -8.631137544905677e-02, -8.784374452959058e-02, -8.934164364321417e-02, + -9.080411291245728e-02, -9.222795761428432e-02, -9.361232867223340e-02, -9.495377758870335e-02, + -9.625155313139856e-02, -9.750284620437569e-02, -9.870736514214426e-02, -9.986271288271026e-02, + -1.009680221406219e-01, -1.020202684361974e-01, -1.030183804850491e-01, -1.039596356759290e-01, + -1.048438825017798e-01, -1.056686838192766e-01, -1.064342821660323e-01, -1.071382314127799e-01, + -1.077799961121537e-01, -1.083570625865931e-01, -1.088690135027248e-01, -1.093135588677235e-01, + -1.096903559498340e-01, -1.099969655786929e-01, -1.102332261219973e-01, -1.103972812085189e-01, + -1.104898474883336e-01, -1.105086416532167e-01, -1.104537426996073e-01, -1.103225838568563e-01, + -1.101145827722143e-01, -1.098276928170364e-01, -1.094621746650760e-01, -1.090163960055733e-01, + -1.084908852561722e-01, -1.078834293141886e-01, -1.071937180231978e-01, -1.064196358069465e-01, + -1.055612509762041e-01, -1.046162812518618e-01, -1.035849043557610e-01, -1.024650162703341e-01, + -1.012568997532046e-01, -9.995864571932928e-02, -9.857014566194627e-02, -9.708911135857967e-02, + -9.551545820689084e-02, -9.384684920715425e-02, -9.208300062891550e-02, -9.022171021406450e-02, + -8.826309993000785e-02, -8.620493821803937e-02, -8.404742152815330e-02, -8.178792716809512e-02, + -7.942625026703617e-02, -7.695980775819990e-02, -7.438785600211463e-02, -7.170797002873608e-02, + -6.891994783815969e-02, -6.602189797715241e-02, -6.301349420724424e-02, -5.989191912667712e-02, + -5.665655641133161e-02, -5.330406164482222e-02, -4.983427241976235e-02, -4.624456893420224e-02, + -4.253455686336916e-02, -3.870195772538443e-02, -3.474585776145929e-02, -3.066341518682682e-02, + -2.645425077642105e-02, -2.211581608120528e-02, -1.764740541599136e-02, -1.304581363895818e-02, + -8.310425696208936e-03, -3.438268661133170e-03, 1.570315476576933e-03, 6.717697635290676e-03, + 1.200477020244778e-02, 1.743398319747869e-02, 2.300642061077823e-02, 2.872481423270595e-02, + 3.458896350634671e-02, 4.060106462625085e-02, 4.676102915752826e-02, 5.307133911821893e-02, + 5.953239090915557e-02, 6.614647812869151e-02, 7.291293184312803e-02, 7.983354189816511e-02, + 8.690807412770696e-02, 9.413813765275064e-02, 1.015233140203748e-01, 1.090651518336202e-01, + 1.167626546016197e-01, 1.246171387327525e-01, 1.326272948938113e-01, 1.407938190608664e-01, + 1.491152519299797e-01, 1.575921408388593e-01, 1.662224799248571e-01, 1.750067399059861e-01, + 1.839431938620024e-01, 1.930318183054904e-01, 2.022699854906251e-01, 2.116567430906184e-01, + 2.211888523410642e-01, 2.308655379767671e-01, 2.406837992341654e-01, 2.506420640291662e-01, + 2.607365124918583e-01, 2.709659073501196e-01, 2.813259021832532e-01, 2.918144694729168e-01, + 3.024270279840051e-01, 3.131603499997996e-01, 3.240095704645023e-01, 3.349719592361666e-01, + 3.460422935204829e-01, 3.572175180786021e-01, 3.684915649120530e-01, 3.798595119591716e-01, + 3.913146885756875e-01, 4.028532873867052e-01, 4.144688328137527e-01, 4.261571642320424e-01, + 4.379113897565727e-01, 4.497256320417501e-01, 4.615925445090212e-01, 4.735067030065239e-01, + 4.854600184866710e-01, 4.974471592901086e-01, 5.094597228333853e-01, 5.214909841729947e-01, + 5.335326819631583e-01, 5.455789811615239e-01, 5.576217157959890e-01, 5.696546730080154e-01, + 5.816685576268035e-01, 5.936560624526468e-01, 6.056083823929643e-01, 6.175192060085208e-01, + 6.293796611336280e-01, 6.411830842823245e-01, 6.529203544876097e-01, 6.645840786371451e-01, + 6.761653499550255e-01, 6.876573952173626e-01, 6.990511539119996e-01, 7.103400549562944e-01, + 7.215149331458728e-01, 7.325691772738999e-01, 7.434943718765665e-01, 7.542846327442048e-01, + 7.649313654540612e-01, 7.754281892901473e-01, 7.857670170752049e-01, 7.959414651061612e-01, + 8.059437233154637e-01, 8.157687070715176e-01, 8.254086223972127e-01, 8.348589373399948e-01, + 8.441125827416620e-01, 8.531651194538425e-01, 8.620108336276733e-01, 8.706456337542150e-01, + 8.790631561061171e-01, 8.872599706865123e-01, 8.952313288619367e-01, 9.029751680353524e-01, + 9.104863121445679e-01, 9.177625550620636e-01, 9.247997426966093e-01, 9.315962496426278e-01, + 9.381494858921667e-01, 9.444588390359354e-01, 9.505220861927248e-01, 9.563402921286364e-01, + 9.619114522936701e-01, 9.672366712325431e-01, 9.723156637834687e-01, 9.771501187120180e-01, + 9.817397501303696e-01, 9.860865871353246e-01, 9.901906380163595e-01, 9.940557180662704e-01, + 9.976842395284637e-01, 1.001080961257010e+00, 1.004247514102417e+00, 1.007188578458507e+00, + 1.009906654565108e+00, 1.012407428282884e+00, 1.014694702432600e+00, 1.016774659209400e+00, + 1.018650990561848e+00, 1.020330464463111e+00, 1.021817328911793e+00, 1.023118841384460e+00, + 1.024240262467000e+00, 1.025189721888128e+00, 1.025972450969440e+00, 1.026596938589443e+00, + 1.027069179375841e+00, 1.027397523939210e+00, 1.027587902203109e+00, 1.027648951922701e+00, + 1.027585830688143e+00, 1.027408519661012e+00, 1.027122986826984e+00, 1.026738673647482e+00, + 1.026261663878092e+00, 1.025701002415063e+00, 1.025061777648234e+00, 1.024353980976701e+00, + 1.023582385618774e+00, 1.022756514615106e+00, 1.021880604350422e+00, 1.020963871317665e+00, + 1.020009139549275e+00, 1.019027285501251e+00, 1.018019442784231e+00, 1.016996499560845e+00, + 1.015957433206324e+00, 1.014923441259795e+00, 1.013915946100629e+00, 1.013047565149327e+00, + 1.012216130365610e+00, 1.011044869639164e+00, 1.009914592130044e+00, 1.008824888092573e+00, + 1.007773858455400e+00, 1.006761700412993e+00, 1.005786648810854e+00, 1.004848753962734e+00, + 1.003946083413733e+00, 1.003078846506546e+00, 1.002245009135684e+00, 1.001444733905817e+00, + 1.000676188436651e+00, 9.999393169239009e-01, 9.992320848298057e-01, 9.985548127155425e-01, + 9.979055415627330e-01, 9.972842679758880e-01, 9.966890948441745e-01, 9.961203379971326e-01, + 9.955761256313581e-01, 9.950565724564597e-01, 9.945597525471822e-01, 9.940860378486615e-01, + 9.936337788972491e-01, 9.932031606606759e-01, 9.927921871265732e-01, 9.924015177880798e-01, + 9.920297273323891e-01, 9.916767775088281e-01, 9.913408767719142e-01, 9.910230654424902e-01, + 9.907216425865902e-01, 9.904366799536263e-01, 9.901668953434221e-01, 9.899131011580791e-01, + 9.896735637374597e-01, 9.894488374513719e-01, 9.892374835404283e-01, 9.890401927796704e-01, + 9.888556356037892e-01, 9.886843467692753e-01, 9.885247606051014e-01, 9.883778520531268e-01, + 9.882423270582524e-01, 9.881185638915363e-01, 9.880051626345804e-01, 9.879032023766432e-01, + 9.878111744348976e-01, 9.877295459610343e-01, 9.876571983429736e-01, 9.875949843246187e-01, + 9.875412739766566e-01, 9.874969061399389e-01, 9.874606249127551e-01, 9.874329809802893e-01, + 9.874126414437681e-01, 9.874004750404033e-01, 9.873949921033299e-01, 9.873969162747074e-01, + 9.874049060317581e-01, 9.874197049003676e-01, 9.874399717110517e-01, 9.874663281231737e-01, + 9.874973205882319e-01, 9.875338926695315e-01, 9.875746535410983e-01, 9.876201238703241e-01, + 9.876689801932402e-01, 9.877221556193183e-01, 9.877781920433015e-01, 9.878376489591358e-01, + 9.878991990245439e-01, 9.879637979933339e-01, 9.880300303653743e-01, 9.880984675859855e-01, + 9.881678007807095e-01, 9.882390300097154e-01, 9.883107693992456e-01, 9.883835200189653e-01, + 9.884560159878955e-01, 9.885294200392185e-01, 9.886022219397892e-01, 9.886749404176028e-01, + 9.887466261142505e-01, 9.888182771263505e-01, 9.888882480852147e-01, 9.889574384705896e-01, + 9.890247977602895e-01, 9.890911247701029e-01, 9.891551701556196e-01, 9.892178658748239e-01, + 9.892779555818088e-01, 9.893365186903538e-01, 9.893923680007577e-01, 9.894462830852175e-01, + 9.894972124952000e-01, 9.895463342815009e-01, 9.895923617530382e-01, 9.896362652966239e-01, + 9.896772011542693e-01, 9.897162195263046e-01, 9.897520286480039e-01, 9.897859195209235e-01, + 9.898170267411330e-01, 9.898462068764986e-01, 9.898725363809847e-01, 9.898975138787787e-01, + 9.899200050208486e-01, 9.899410789223559e-01, 9.899600605054418e-01, 9.899782261038060e-01, + 9.899945557067980e-01, 9.900103500807507e-01, 9.900248320990181e-01, 9.900394023736973e-01, + 9.900532105829365e-01, 9.900674746047259e-01, 9.900814722948890e-01, 9.900966926051257e-01, + 9.901122448734595e-01, 9.901293790312005e-01, 9.901474648912307e-01, 9.901680598867444e-01, + 9.901902265696609e-01, 9.902151896501201e-01, 9.902424418296485e-01, 9.902734448815004e-01, + 9.903071270768942e-01, 9.903448913950654e-01, 9.903862280081246e-01, 9.904324484666853e-01, + 9.904825650601110e-01, 9.905379830873822e-01, 9.905980602136440e-01, 9.906640366554630e-01, + 9.907348826312993e-01, 9.908120376822228e-01, 9.908947858311721e-01, 9.909842592301273e-01, + 9.910795247770178e-01, 9.911819240108124e-01, 9.912905118607647e-01, 9.914064705361564e-01, + 9.915288011543961e-01, 9.916586940166509e-01, 9.917952720685562e-01, 9.919396217291009e-01, + 9.920906151219310e-01, 9.922495028313456e-01, 9.924152398352751e-01, 9.925887208794144e-01, + 9.927688708468421e-01, 9.929569112537944e-01, 9.931516528513824e-01, 9.933539244159140e-01, + 9.935626893131695e-01, 9.937790866568735e-01, 9.940016434044485e-01, 9.942312024833810e-01, + 9.944668184371617e-01, 9.947093441694513e-01, 9.949572854565533e-01, 9.952116634297566e-01, + 9.954712635321227e-01, 9.957367951478069e-01, 9.960068616185641e-01, 9.962823025614079e-01, + 9.965617986382630e-01, 9.968461329825753e-01, 9.971338271912752e-01, 9.974256691222113e-01, + 9.977203369515556e-01, 9.980185087055744e-01, 9.983185871761977e-01, 9.986213520769593e-01, + 9.989255426466267e-01, 9.992317314100975e-01, 9.995382582242990e-01, 9.998461160718275e-01, + 1.000153907612080e+00, 1.000461955079660e+00, 1.000768859280338e+00, 1.001075613053728e+00, + 1.001380551217109e+00, 1.001684244734497e+00, 1.001985425397567e+00, 1.002284871786226e+00, + 1.002580975161843e+00, 1.002874411368430e+00, 1.003163845364970e+00, 1.003450063374329e+00, + 1.003731570287893e+00, 1.004009147462043e+00, 1.004281457582935e+00, 1.004549339226336e+00, + 1.004811375053364e+00, 1.005068272394360e+00, 1.005318795748286e+00, 1.005563968008037e+00, + 1.005802269635282e+00, 1.006034554002353e+00, 1.006259855360867e+00, 1.006479018139540e+00, + 1.006690541428116e+00, 1.006895570408563e+00, 1.007093045696527e+00, 1.007283799246233e+00, + 1.007466616298057e+00, 1.007642728426847e+00, 1.007811036585595e+00, 1.007972441990187e+00, + 1.008125875904472e+00, 1.008272602383284e+00, 1.008411468616852e+00, 1.008543573152632e+00, + 1.008668018334797e+00, 1.008786009787269e+00, 1.008896526233555e+00, 1.009000766336071e+00, + 1.009097763850333e+00, 1.009188880897370e+00, 1.009273163797313e+00, 1.009351762546296e+00, + 1.009423944949143e+00, 1.009491175244507e+00, 1.009552401900961e+00, 1.009608886895764e+00, + 1.009659973830751e+00, 1.009707093778162e+00, 1.009749238562067e+00, 1.009787744284661e+00, + 1.009822090220407e+00, 1.009853706282597e+00, 1.009881498943010e+00, 1.009906958448099e+00, + 1.009929567021562e+00, 1.009950573483366e+00, 1.009969021400474e+00, 1.009986499185054e+00, + 1.010002363879044e+00, 1.010017890428877e+00, 1.010032170180360e+00, 1.010046722045583e+00, + 1.010060809299530e+00, 1.010075674445289e+00, 1.010090449982098e+00, 1.010106564965965e+00, + 1.010123226584120e+00, 1.010141762173145e+00, 1.010161131093372e+00, 1.010182635897876e+00, + 1.010205587931660e+00, 1.010231078494249e+00, 1.010257950227988e+00, 1.010287732968580e+00, + 1.010319484524512e+00, 1.010354079663767e+00, 1.010390635488037e+00, 1.010430470494512e+00, + 1.010472266495074e+00, 1.010517096381509e+00, 1.010564099281000e+00, 1.010614266894512e+00, + 1.010666285876455e+00, 1.010721360243234e+00, 1.010778416755264e+00, 1.010838252644461e+00, + 1.010899655674578e+00, 1.010963729626641e+00, 1.011029191301694e+00, 1.011096993993037e+00, + 1.011165861239173e+00, 1.011236610341260e+00, 1.011308167670753e+00, 1.011381453638912e+00, + 1.011454785713102e+00, 1.011529185153809e+00, 1.011603680910505e+00, 1.011678803938046e+00, + 1.011753008569803e+00, 1.011827484797985e+00, 1.011900936547881e+00, 1.011973876511603e+00, + 1.012044885003304e+00, 1.012114985644919e+00, 1.012182837094955e+00, 1.012249023976742e+00, + 1.012312095063070e+00, 1.012373028737774e+00, 1.012430463679316e+00, 1.012484972246822e+00, + 1.012535058602453e+00, 1.012581678169188e+00, 1.012623472898504e+00, 1.012660975529858e+00, + 1.012692758750213e+00, 1.012719789201144e+00, 1.012740575296603e+00, 1.012755753887085e+00, + 1.012763948841204e+00, 1.012765922449960e+00, 1.012760298661069e+00, 1.012747819936584e+00, + 1.012726958954961e+00, 1.012698607692183e+00, 1.012661400539405e+00, 1.012615904116265e+00, + 1.012560833005713e+00, 1.012497050269805e+00, 1.012422888521601e+00, 1.012339226241367e+00, + 1.012244921966297e+00, 1.012140460211194e+00, 1.012024302085441e+00, 1.011897560567707e+00, + 1.011758810583150e+00, 1.011608449127642e+00, 1.011445162723270e+00, 1.011269960947744e+00, + 1.011081255645969e+00, 1.010879608424312e+00, 1.010663676735228e+00, 1.010434184200640e+00, + 1.010189681124657e+00, 1.009930754807923e+00, 1.009655660215271e+00, 1.009365251564694e+00, + 1.009058249873833e+00, 1.008734758578989e+00, 1.008393079963091e+00, 1.008034308295421e+00, + 1.007656661215973e+00, 1.007260142622887e+00, 1.006843352506855e+00, 1.006407009542103e+00, + 1.005949145170711e+00, 1.005470005637052e+00, 1.004967986424467e+00, 1.004443531995945e+00, + 1.003894772403371e+00, 1.003321903663793e+00, 1.002723127308148e+00, 1.002098854400575e+00, + 1.001447278873483e+00, 1.000768505317086e+00, 1.000060686758758e+00, 9.993242684851855e-01, + 9.985573503390627e-01, 9.977600196406868e-01, 9.969306036935497e-01, 9.960694269553644e-01, + 9.951746430061121e-01, 9.942466438407230e-01, 9.932837131068657e-01, 9.922861082472264e-01, + 9.912523092989319e-01, 9.901827419790691e-01, 9.890757868707590e-01, 9.879313024174022e-01, + 9.863553220272523e-01, 9.847362453480265e-01, 9.831750948772566e-01, 9.815583336011345e-01, + 9.798613526271561e-01, 9.780617486993630e-01, 9.761574317374303e-01, 9.741378617337759e-01, + 9.719990112065752e-01, 9.697327413658168e-01, 9.673331975559332e-01, 9.647915124057732e-01, + 9.621011497566145e-01, 9.592539757044516e-01, 9.562427177295731e-01, 9.530600909726344e-01, + 9.496984081652284e-01, 9.461498120176854e-01, 9.424071613625743e-01, 9.384634163826711e-01, + 9.343112966094085e-01, 9.299449872197452e-01, 9.253567968750328e-01, 9.205404627076625e-01, + 9.154896280575360e-01, 9.101986790930605e-01, 9.046620597741508e-01, 8.988755194372424e-01, + 8.928338316495705e-01, 8.865337190368053e-01, 8.799712722567934e-01, 8.731437835983047e-01, + 8.660476534563131e-01, 8.586812520174252e-01, 8.510420440685049e-01, 8.431297226886574e-01, + 8.349435141989714e-01, 8.264839911291133e-01, 8.177505366573690e-01, 8.087449817124315e-01, + 7.994681492797084e-01, 7.899235162194718e-01, 7.801137731566502e-01, 7.700431275216928e-01, + 7.597145736971065e-01, 7.491330971820804e-01, 7.383028603058783e-01, 7.272298755824693e-01, + 7.159201919962611e-01, 7.043814340356083e-01, 6.926196927377140e-01, 6.806438831866077e-01, + 6.684616478236647e-01, 6.560830137986515e-01, 6.435179268559957e-01, 6.307755329382612e-01, + 6.178641647786525e-01, 6.047954625702541e-01, 5.915799587176216e-01, 5.782289366005894e-01, + 5.647535885752191e-01, 5.511703155400274e-01, 5.374905090437071e-01, 5.237263500445715e-01, + 5.098915423728255e-01, 4.960008074926423e-01, 4.820662943337458e-01, 4.681017110048007e-01, + 4.541216995958746e-01, 4.401421815729068e-01, 4.261772971493010e-01, 4.122417888542512e-01, + 3.983499612526493e-01, 3.845172335531009e-01, 3.707583717376236e-01, 3.570886786795506e-01, + 3.435228672445627e-01, 3.300763764703638e-01, 3.167640325043893e-01, 3.036004651973109e-01, + 2.905996158436682e-01, 2.777758503744847e-01, 2.651434678028531e-01, 2.527161881181577e-01, + 2.405069849650012e-01, 2.285283969438072e-01, 2.167933432162879e-01, 2.053139897833021e-01, + 1.941021906320988e-01, 1.831680872008943e-01, 1.725221947208913e-01, 1.621735416384834e-01, + 1.521320683467849e-01, 1.424052801149985e-01, 1.330015240938615e-01, 1.239260664828526e-01, + 1.151858295527293e-01, 1.067840430193724e-01, 9.872637505002878e-02, 9.101379000888035e-02, + 8.365057236623055e-02, 7.663508305536153e-02, 6.997033405748826e-02, 6.365188111381365e-02, + 5.768176015814392e-02, 5.205244216987966e-02, 4.676538412257621e-02, 4.180950541438362e-02, + 3.718640251368464e-02, 3.288072750732215e-02, 2.889548499582958e-02, 2.520980565928884e-02, + 2.183057564646272e-02, 1.872896194002638e-02, 1.592127815153420e-02, 1.336381425803020e-02, + 1.108558877807282e-02, 8.943474189364638e-03, 6.758124889697787e-03, 3.504438130619497e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_80_5ms[80] = { + 9.959086585790517e-04, 3.819056787237678e-03, 9.540832613229890e-03, 1.921659800166160e-02, 3.382719081038548e-02, + 5.424831667522354e-02, 8.120777668775610e-02, 1.152171887125930e-01, 1.564942331034909e-01, 2.049363422022628e-01, + 2.601166575816199e-01, 3.212814164616093e-01, 3.873472997948746e-01, 4.569497078592333e-01, 5.285192958868393e-01, + 6.003522489375573e-01, 6.706896380227332e-01, 7.378044458510402e-01, 8.000925313431716e-01, 8.561409184410547e-01, + 9.048272294524792e-01, 9.453685031730190e-01, 9.773507430600533e-01, 1.000800872826561e+00, 1.016171590112097e+00, + 1.024315247630982e+00, 1.026415431432931e+00, 1.023858366571912e+00, 1.018135705524407e+00, 1.010794822557756e+00, + 1.003406509762925e+00, 9.967831265986109e-01, 9.920995520917141e-01, 9.892206942816891e-01, 9.879658322200813e-01, + 9.881273531631907e-01, 9.894805541465801e-01, 9.917849916000535e-01, 9.947847580943504e-01, 9.982119669301160e-01, + 1.001791235858836e+00, 1.005242583245485e+00, 1.008283053756130e+00, 1.010631281038659e+00, 1.012015300253356e+00, + 1.012180753005270e+00, 1.010896765282633e+00, 1.007963362035220e+00, 1.003227255072391e+00, 9.966050551498514e-01, + 9.868284225039941e-01, 9.731250287581631e-01, 9.540636479502398e-01, 9.283864275822276e-01, 8.950916858157935e-01, + 8.534769362643825e-01, 8.032090930429980e-01, 7.444735201251689e-01, 6.780787033699449e-01, 6.053970453856138e-01, + 5.282077505750667e-01, 4.486552956056635e-01, 3.691875990296312e-01, 2.924566408966777e-01, 2.210718537110463e-01, + 1.573148583944309e-01, 1.030525757797768e-01, 5.982732244758054e-02, 2.871831923385133e-02, 9.683884928956490e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_160_5ms[160] = { + 6.143388180964179e-04, 1.489582832987000e-03, 2.884104959764029e-03, 4.934298832466617e-03, 7.779130464154915e-03, + 1.154910606525086e-02, 1.637155619860352e-02, 2.237116158648752e-02, 2.966159685753317e-02, 3.835663329277230e-02, + 4.855610986150206e-02, 6.035055738891727e-02, 7.382288203064732e-02, 8.903563687211119e-02, 1.060356225286319e-01, + 1.248534855777947e-01, 1.454931890869180e-01, 1.679435556337752e-01, 1.921728622634411e-01, 2.181238261985594e-01, + 2.457259744642953e-01, 2.748839432649996e-01, 3.054824712370942e-01, 3.373873799614014e-01, 3.704415932452488e-01, + 4.044749630814483e-01, 4.393004362003260e-01, 4.747225454237193e-01, 5.105341492548225e-01, 5.465201916422433e-01, + 5.824658100332457e-01, 6.181452662624718e-01, 6.533411462740817e-01, 6.878367295965062e-01, 7.214176027060971e-01, + 7.538887973483771e-01, 7.850546571907628e-01, 8.147397447696774e-01, 8.427819363777799e-01, 8.690376742017057e-01, + 8.933935477349644e-01, 9.157483563218768e-01, 9.360270196617569e-01, 9.541731142261065e-01, 9.701635474343885e-01, + 9.840036439809510e-01, 9.957199420334376e-01, 1.005374268639838e+00, 1.013046655758663e+00, 1.018843380560658e+00, + 1.022896948293643e+00, 1.025355286710874e+00, 1.026382881625701e+00, 1.026155530733488e+00, 1.024853974580724e+00, + 1.022664602721801e+00, 1.019779396547454e+00, 1.016391686789653e+00, 1.012697033320358e+00, 1.008885191761748e+00, + 1.005378742804807e+00, 1.001563778373068e+00, 9.982531564931281e-01, 9.954346644968789e-01, 9.930950268060122e-01, + 9.912170911359961e-01, 9.897805192546195e-01, 9.887624937408933e-01, 9.881383235740961e-01, 9.878819413827574e-01, + 9.879662130250981e-01, 9.883630508181326e-01, 9.890434070785485e-01, 9.899772316163624e-01, 9.911334564321237e-01, + 9.924800441092685e-01, 9.939841207305906e-01, 9.956121471675398e-01, 9.973300590248015e-01, 9.991033633647473e-01, + 1.000897441314013e+00, 1.002677088643863e+00, 1.004407190937699e+00, 1.006052289109999e+00, 1.007576934100958e+00, + 1.008945862447015e+00, 1.010124241309341e+00, 1.011077969726137e+00, 1.011773962181442e+00, 1.012180362866919e+00, + 1.012266707295288e+00, 1.012004064757857e+00, 1.011365223023975e+00, 1.010324996851905e+00, 1.008860731864438e+00, + 1.006952983357691e+00, 1.004586273379809e+00, 1.001749900308864e+00, 9.984386632116344e-01, 9.946500332901397e-01, + 9.895756853352172e-01, 9.838303127859196e-01, 9.769999155793757e-01, 9.689141159310996e-01, 9.594038121639412e-01, + 9.483086322505029e-01, 9.354860218216989e-01, 9.208101305030523e-01, 9.041732260327581e-01, 8.854882249661838e-01, + 8.646864947605046e-01, 8.417237467711145e-01, 8.165875713256009e-01, 7.892986353718001e-01, 7.599171886893816e-01, + 7.285474515411827e-01, 6.953282935906302e-01, 6.604334017809461e-01, 6.240661431421666e-01, 5.864461424698465e-01, + 5.478160663871147e-01, 5.084499758302218e-01, 4.686361426418982e-01, 4.286789889246253e-01, 3.889032719013045e-01, + 3.496431418636314e-01, 3.112360816586544e-01, 2.740128472224535e-01, 2.382847225401666e-01, 2.043379825955252e-01, + 1.724305860483632e-01, 1.427939789949265e-01, 1.156385879569741e-01, 9.115821766571995e-02, 6.952749039054593e-02, + 5.088975408628225e-02, 3.533430192568954e-02, 2.286680405144430e-02, 1.338005016725895e-02, 6.640506529168652e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_240_5ms[240] = { + 5.087227626168386e-04, 9.959086585790517e-04, 1.682208006328800e-03, 2.609697259047744e-03, 3.819056787237678e-03, + 5.349319592933909e-03, 7.243906383895192e-03, 9.540832613229890e-03, 1.227637642543709e-02, 1.548950238899404e-02, + 1.921659800166160e-02, 2.349369619441617e-02, 2.835199581667961e-02, 3.382719081038548e-02, 3.994939538719628e-02, + 4.674775238543380e-02, 5.424831667522354e-02, 6.247770776443612e-02, 7.145835917501348e-02, 8.120777668775610e-02, + 9.174400412319896e-02, 1.030764959637497e-01, 1.152171887125930e-01, 1.281665713944242e-01, 1.419264381068653e-01, + 1.564942331034909e-01, 1.718593189799504e-01, 1.880134254543744e-01, 2.049363422022628e-01, 2.226123055761096e-01, + 2.410151242797736e-01, 2.601166575816199e-01, 2.798871008989962e-01, 3.002880135563586e-01, 3.212814164616093e-01, + 3.428208463088390e-01, 3.648596557863134e-01, 3.873472997948746e-01, 4.102294951869188e-01, 4.334494534591082e-01, + 4.569497078592333e-01, 4.806696403251166e-01, 5.045473815014847e-01, 5.285192958868393e-01, 5.525196099932443e-01, + 5.764872452085427e-01, 6.003522489375573e-01, 6.240509872809882e-01, 6.475182586093196e-01, 6.706896380227332e-01, + 6.935029068990036e-01, 7.158927516396895e-01, 7.378044458510402e-01, 7.591787241845952e-01, 7.799586608897265e-01, + 8.000925313431716e-01, 8.195318652294690e-01, 8.382288957404715e-01, 8.561409184410547e-01, 8.732316951214179e-01, + 8.894702022170831e-01, 9.048272294524792e-01, 9.192736375782965e-01, 9.327940405054362e-01, 9.453685031730190e-01, + 9.569883933538136e-01, 9.676486424195593e-01, 9.773507430600533e-01, 9.861027831072527e-01, 9.939122412655677e-01, + 1.000800872826561e+00, 1.006787811971719e+00, 1.011901269172423e+00, 1.016171590112097e+00, 1.019636414864842e+00, + 1.022336613864005e+00, 1.024315247630982e+00, 1.025621299895396e+00, 1.026303439275662e+00, 1.026415431432931e+00, + 1.026007933174836e+00, 1.025137435167917e+00, 1.023858366571912e+00, 1.022226936424625e+00, 1.020300550334848e+00, + 1.018135705524407e+00, 1.015792146756340e+00, 1.013325966774524e+00, 1.010794822557756e+00, 1.008265131568879e+00, + 1.006046874304407e+00, 1.003406509762925e+00, 1.000977398831985e+00, 9.987704535700208e-01, 9.967831265986109e-01, + 9.950118905889862e-01, 9.934523971504882e-01, 9.920995520917141e-01, 9.909475998606236e-01, 9.899902426925508e-01, + 9.892206942816891e-01, 9.886318043013834e-01, 9.882160904669929e-01, 9.879658322200813e-01, 9.878730767519871e-01, + 9.879296932443894e-01, 9.881273531631907e-01, 9.884575535474619e-01, 9.889115869213529e-01, 9.894805541465801e-01, + 9.901553455166457e-01, 9.909266562913843e-01, 9.917849916000535e-01, 9.927206838643636e-01, 9.937239208721489e-01, + 9.947847580943504e-01, 9.958931493776203e-01, 9.970389567617592e-01, 9.982119669301160e-01, 9.994020338838508e-01, + 1.000598323893564e+00, 1.001791235858836e+00, 1.002969837054169e+00, 1.004123786397111e+00, 1.005242583245485e+00, + 1.006315717067918e+00, 1.007332693127034e+00, 1.008283053756130e+00, 1.009156423082384e+00, 1.009942535308151e+00, + 1.010631281038659e+00, 1.011212744622770e+00, 1.011677230257499e+00, 1.012015300253356e+00, 1.012217779097186e+00, + 1.012275790821109e+00, 1.012180753005270e+00, 1.011924425888915e+00, 1.011498917644724e+00, 1.010896765282633e+00, + 1.010110965619444e+00, 1.009135094671655e+00, 1.007963362035220e+00, 1.006590756505588e+00, 1.005013115379014e+00, + 1.003227255072391e+00, 1.001231060075500e+00, 9.990235555436858e-01, 9.966050551498514e-01, 9.939894706113089e-01, + 9.904539200261149e-01, 9.868284225039941e-01, 9.827716736909488e-01, 9.782206672373213e-01, 9.731250287581631e-01, + 9.674323528812744e-01, 9.610947043524248e-01, 9.540636479502398e-01, 9.462952991190324e-01, 9.377489107516087e-01, + 9.283864275822276e-01, 9.181762606422500e-01, 9.070861558801854e-01, 8.950916858157935e-01, 8.821696237804294e-01, + 8.683025287048570e-01, 8.534769362643825e-01, 8.376852006833730e-01, 8.209275259764013e-01, 8.032090930429980e-01, + 7.845450482523652e-01, 7.649554851899686e-01, 7.444735201251689e-01, 7.231348066419057e-01, 7.009860555207412e-01, + 6.780787033699450e-01, 6.544686506489734e-01, 6.302212149502727e-01, 6.053970453856138e-01, 5.800715766089168e-01, + 5.543129276657669e-01, 5.282077505750727e-01, 5.018369724442092e-01, 4.752902962082383e-01, 4.486552956056652e-01, + 4.220281118338883e-01, 3.955057965950340e-01, 3.691875990296320e-01, 3.431732847389720e-01, 3.175633015043183e-01, + 2.924566408966782e-01, 2.679463783886042e-01, 2.441231331518492e-01, 2.210718537110466e-01, 1.988719153219592e-01, + 1.775967625327044e-01, 1.573148583944310e-01, 1.380903364946733e-01, 1.199837497591550e-01, 1.030525757797769e-01, + 8.735085011789188e-02, 7.292811584897502e-02, 5.982732244758056e-02, 4.808178837444506e-02, 3.771135297837851e-02, + 2.871831923385135e-02, 2.108352028641225e-02, 1.476289412849005e-02, 9.683884928956495e-03, 5.642168789286858e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_320_5ms[320] = { + 4.595886345493055e-04, 7.919323614002698e-04, 1.227927169310031e-03, 1.783653266717233e-03, 2.479549413444207e-03, + 3.329799454594261e-03, 4.353535478916468e-03, 5.564965156664018e-03, 6.986108359341676e-03, 8.629882322202329e-03, + 1.051343406844975e-02, 1.265082642578719e-02, 1.506090447446532e-02, 1.775591229287213e-02, 2.075475983187825e-02, + 2.406813715401559e-02, 2.771207863541604e-02, 3.169933248543932e-02, 3.604609640533871e-02, 4.076128638095439e-02, + 4.586038120884381e-02, 5.135136676471998e-02, 5.724780220726930e-02, 6.355854744461048e-02, 7.029450733434550e-02, + 7.745987198268531e-02, 8.506635369887924e-02, 9.311641620512773e-02, 1.016162955027316e-01, 1.105690806271684e-01, + 1.199789286645804e-01, 1.298417294090302e-01, 1.401623800497866e-01, 1.509371564593891e-01, 1.621632295622287e-01, + 1.738354123649302e-01, 1.859520359191026e-01, 1.985008828937603e-01, 2.114778554475382e-01, 2.248732557074316e-01, + 2.386763947872762e-01, 2.528729453658238e-01, 2.674547009618951e-01, 2.824031465430401e-01, 2.977050145264297e-01, + 3.133419120661713e-01, 3.292976696294886e-01, 3.455490160824131e-01, 3.620795045342974e-01, 3.788648665671841e-01, + 3.958851576591690e-01, 4.131143794748322e-01, 4.305308301005456e-01, 4.481076715576617e-01, 4.658227790464821e-01, + 4.836466393241829e-01, 5.015564851667653e-01, 5.195228071176610e-01, 5.375197039843709e-01, 5.555183841040963e-01, + 5.734957812557457e-01, 5.914186654649489e-01, 6.092622887527459e-01, 6.269981160888640e-01, 6.446002007776794e-01, + 6.620384583071039e-01, 6.792906550106088e-01, 6.963256426589250e-01, 7.131194393772130e-01, 7.296469905863920e-01, + 7.458864594794676e-01, 7.618094719403713e-01, 7.773958448163656e-01, 7.926208751337592e-01, 8.074666387233143e-01, + 8.219101564897180e-01, 8.359343163788637e-01, 8.495180470826319e-01, 8.626485837105826e-01, 8.753083234662220e-01, + 8.874884715160425e-01, 8.991737724042251e-01, 9.103527429187326e-01, 9.210144133066616e-01, 9.311556192776946e-01, + 9.407644740241826e-01, 9.498382236872068e-01, 9.583732599601223e-01, 9.663690412284377e-01, 9.738235617865406e-01, + 9.807442506043361e-01, 9.871297972052695e-01, 9.929872268444632e-01, 9.983241398929388e-01, 1.003150760219063e+00, + 1.007473713377193e+00, 1.011309151636166e+00, 1.014666681083198e+00, 1.017563337333301e+00, 1.020014681326785e+00, + 1.022039872150903e+00, 1.023654257342442e+00, 1.024881624147540e+00, 1.025739288978437e+00, 1.026250709375593e+00, + 1.026436666375082e+00, 1.026320857404224e+00, 1.025922917798664e+00, 1.025269979527211e+00, 1.024382188798244e+00, + 1.023284940887058e+00, 1.022000829220643e+00, 1.020555973231408e+00, 1.018971390778550e+00, 1.017275179369116e+00, + 1.015489129111694e+00, 1.013639356938881e+00, 1.011747750709711e+00, 1.009840844244693e+00, 1.007939764480188e+00, + 1.006407400915498e+00, 1.004374825095777e+00, 1.002469814737132e+00, 1.000689073754539e+00, 9.990346001249977e-01, + 9.975024904153303e-01, 9.960941547576162e-01, 9.948051243621099e-01, 9.936362728142866e-01, 9.925826537087717e-01, + 9.916447007525191e-01, 9.908170758245324e-01, 9.900998445795673e-01, 9.894873685512386e-01, 9.889794323427195e-01, + 9.885701787626714e-01, 9.882591911282058e-01, 9.880404423341358e-01, 9.879133688360181e-01, 9.878718098237022e-01, + 9.879150762106034e-01, 9.880368938846610e-01, 9.882364564839506e-01, 9.885073687439192e-01, 9.888487088987707e-01, + 9.892539488627546e-01, 9.897220412447528e-01, 9.902463287269285e-01, 9.908256340476208e-01, 9.914531811725067e-01, + 9.921276814881759e-01, 9.928422499725458e-01, 9.935955098307742e-01, 9.943804814776256e-01, 9.951957244449919e-01, + 9.960341878404958e-01, 9.968943831870675e-01, 9.977692009836100e-01, 9.986571134591464e-01, 9.995509738170480e-01, + 1.000449227898040e+00, 1.001344692310058e+00, 1.002235786606954e+00, 1.003115291715261e+00, 1.003981602446902e+00, + 1.004827468041713e+00, 1.005651275972376e+00, 1.006445772052972e+00, 1.007209352772459e+00, 1.007934783656087e+00, + 1.008620496650569e+00, 1.009259314290145e+00, 1.009849742422788e+00, 1.010384692193296e+00, 1.010862783160582e+00, + 1.011277044709547e+00, 1.011626247430694e+00, 1.011903571699736e+00, 1.012107954864219e+00, 1.012232755709885e+00, + 1.012277089047072e+00, 1.012234505114778e+00, 1.012104319978655e+00, 1.011880293122688e+00, 1.011561972516341e+00, + 1.011143373963981e+00, 1.010624321020038e+00, 1.009999148545101e+00, 1.009268031808824e+00, 1.008425698479647e+00, + 1.007472774447058e+00, 1.006404483571931e+00, 1.005222003295591e+00, 1.003921160689206e+00, 1.002503762756151e+00, + 1.000966332772540e+00, 9.993114007411373e-01, 9.975362702189898e-01, 9.956442306333592e-01, 9.936333924912825e-01, + 9.908677480361242e-01, 9.882326326262749e-01, 9.853620567056602e-01, 9.822305093671991e-01, 9.788185853162172e-01, + 9.751026333215268e-01, 9.710631852370086e-01, 9.666759668947944e-01, 9.619242192293307e-01, 9.567841986369235e-01, + 9.512394303101863e-01, 9.452700238623795e-01, 9.388615698236068e-01, 9.319946435581106e-01, 9.246592033932568e-01, + 9.168383396399868e-01, 9.085218034087421e-01, 8.996967011299613e-01, 8.903562054918268e-01, 8.804877931535187e-01, + 8.700884209228057e-01, 8.591492134848259e-01, 8.476686394755906e-01, 8.356428970797861e-01, 8.230753889817990e-01, + 8.099649296155544e-01, 7.963204506324437e-01, 7.821460539775005e-01, 7.674541821769616e-01, 7.522563457568547e-01, + 7.365702052057368e-01, 7.204090552899627e-01, 7.037975107157410e-01, 6.867542812151157e-01, 6.693041888771051e-01, + 6.514710959179395e-01, 6.332854832820911e-01, 6.147685389896460e-01, 5.959553778639692e-01, 5.768737955463938e-01, + 5.575534287167304e-01, 5.380320138068979e-01, 5.183454027643563e-01, 4.985259415650634e-01, 4.786156067459849e-01, + 4.586473038370941e-01, 4.386643656872842e-01, 4.187046888325280e-01, 3.988123056192917e-01, 3.790262923635886e-01, + 3.593914828698096e-01, 3.399474132903109e-01, 3.207392420889753e-01, 3.018061113177048e-01, 2.831905952786929e-01, + 2.649288369241889e-01, 2.470608550624402e-01, 2.296201119084317e-01, 2.126433716126151e-01, 1.961601816145380e-01, + 1.802035203864437e-01, 1.647996883470626e-01, 1.499787548077656e-01, 1.357643522991611e-01, 1.221842534547464e-01, + 1.092601994264172e-01, 9.701788451015501e-02, 8.547680283183663e-02, 7.465976378295235e-02, 6.458254322751883e-02, + 5.526281189874138e-02, 4.670976978373095e-02, 3.893244425578719e-02, 3.192976013776996e-02, 2.569810636390756e-02, + 2.022259265088492e-02, 1.548317776486452e-02, 1.144924909653903e-02, 8.076482660383199e-03, 5.300044080947794e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_WINDOW_480_5ms[480] = { + 4.090106504820579e-04, 6.143388180964179e-04, 8.571759876954877e-04, 1.147015057857495e-03, 1.489582832987000e-03, + 1.889770382231583e-03, 2.353000800169909e-03, 2.884104959764029e-03, 3.488213786635855e-03, 4.170040431489613e-03, + 4.934298832466617e-03, 5.787076505403503e-03, 6.733811743137561e-03, 7.779130464154915e-03, 8.927044958757816e-03, + 1.018202888968871e-02, 1.154910606525086e-02, 1.303349217699797e-02, 1.463951288465963e-02, 1.637155619860352e-02, + 1.823455383898077e-02, 2.023309488998589e-02, 2.237116158648752e-02, 2.465237348403478e-02, 2.708101935270475e-02, + 2.966159685753317e-02, 3.239884850877327e-02, 3.529601774976465e-02, 3.835663329277230e-02, 4.158447932459513e-02, + 4.498322421745353e-02, 4.855610986150206e-02, 5.230596475016741e-02, 5.623624576084146e-02, 6.035055738891727e-02, + 6.465186317477950e-02, 6.914195749790462e-02, 7.382288203064732e-02, 7.869709331995660e-02, 8.376761638427657e-02, + 8.903563687211118e-02, 9.450199243028472e-02, 1.001680193006426e-01, 1.060356225286319e-01, 1.121060220821844e-01, + 1.183788547045326e-01, 1.248534855777947e-01, 1.315302847610869e-01, 1.384103079528939e-01, 1.454931890869180e-01, + 1.527772946853750e-01, 1.602608842337125e-01, 1.679435556337752e-01, 1.758245615079801e-01, 1.839020119821303e-01, + 1.921728622634411e-01, 2.006344295681524e-01, 2.092853879977170e-01, 2.181238261985594e-01, 2.271462264407930e-01, + 2.363479205237173e-01, 2.457259744642953e-01, 2.552771551741124e-01, 2.649981094228982e-01, 2.748839432649996e-01, + 2.849296444030153e-01, 2.951306505827265e-01, 3.054824712370942e-01, 3.159799638238941e-01, 3.266169794538543e-01, + 3.373873799614014e-01, 3.482855915638277e-01, 3.593057693987583e-01, 3.704415932452488e-01, 3.816862385160692e-01, + 3.930329782788047e-01, 4.044749630814483e-01, 4.160051103939122e-01, 4.276159595085598e-01, 4.393004362003260e-01, + 4.510516333434032e-01, 4.628616046119925e-01, 4.747225454237193e-01, 4.866266705542529e-01, 4.985664508456704e-01, + 5.105341492548225e-01, 5.225212793188740e-01, 5.345190505841265e-01, 5.465201916422433e-01, 5.585172769552711e-01, + 5.705021536899105e-01, 5.824658100332457e-01, 5.943991720381216e-01, 6.062948176207270e-01, 6.181452662624718e-01, + 6.299422016714543e-01, 6.416768736044914e-01, 6.533411462740817e-01, 6.649277540000037e-01, 6.764292700223311e-01, + 6.878367295965062e-01, 6.991421467689277e-01, 7.103379606632721e-01, 7.214176027060971e-01, 7.323746102405828e-01, + 7.432008025932804e-01, 7.538887973483771e-01, 7.644315495717613e-01, 7.748223151443820e-01, 7.850546571907628e-01, + 7.951223518167163e-01, 8.050193862201107e-01, 8.147397447696774e-01, 8.242774413707643e-01, 8.336267114335371e-01, + 8.427819363777799e-01, 8.517386186427548e-01, 8.604920874939698e-01, 8.690376742017057e-01, 8.773720451249032e-01, + 8.854927938913381e-01, 8.933935477349644e-01, 9.010727088526728e-01, 9.085249398881980e-01, 9.157483563218768e-01, + 9.227413839712016e-01, 9.295017469413066e-01, 9.360270196617569e-01, 9.423143052164881e-01, 9.483629792665091e-01, + 9.541731142261065e-01, 9.597438382130120e-01, 9.650738394220176e-01, 9.701635474343885e-01, 9.750143364412617e-01, + 9.796277191617885e-01, 9.840036439809510e-01, 9.881426772731259e-01, 9.920470446911211e-01, 9.957199420334376e-01, + 9.991640812275709e-01, 1.002381307710643e+00, 1.005374268639838e+00, 1.008146718214831e+00, 1.010703123647275e+00, + 1.013046655758663e+00, 1.015181271161417e+00, 1.017111643578857e+00, 1.018843380560658e+00, 1.020381713994816e+00, + 1.021731101971518e+00, 1.022896948293643e+00, 1.023885455671576e+00, 1.024702974608899e+00, 1.025355286710874e+00, + 1.025848243050604e+00, 1.026188366261215e+00, 1.026382881625701e+00, 1.026438102255574e+00, 1.026360125820994e+00, + 1.026155530733488e+00, 1.025831456886557e+00, 1.025395432284244e+00, 1.024853974580724e+00, 1.024213482124578e+00, + 1.023481184943025e+00, 1.022664602721801e+00, 1.021770903480975e+00, 1.020806917660529e+00, 1.019779396547454e+00, + 1.018695995335235e+00, 1.017564416918053e+00, 1.016391686789653e+00, 1.015184918030332e+00, 1.013950835315021e+00, + 1.012697033320358e+00, 1.011430749860716e+00, 1.010158346781076e+00, 1.008885191761748e+00, 1.007592718305943e+00, + 1.006805603478092e+00, 1.005378742804807e+00, 1.004049051787112e+00, 1.002778356298787e+00, 1.001563778373068e+00, + 1.000404915291105e+00, 9.993014844615166e-01, 9.982531564931281e-01, 9.972595460676951e-01, 9.963202131848272e-01, + 9.954346644968789e-01, 9.946023543844607e-01, 9.938226881029791e-01, 9.930950268060122e-01, 9.924186919309267e-01, + 9.917929657090736e-01, 9.912170911359961e-01, 9.906902760441473e-01, 9.902117003786811e-01, 9.897805192546193e-01, + 9.893958602389157e-01, 9.890568243690241e-01, 9.887624937408933e-01, 9.885119364350415e-01, 9.883042028597552e-01, + 9.881383235740961e-01, 9.880133161159576e-01, 9.879281898513085e-01, 9.878819413827574e-01, 9.878735508484809e-01, + 9.879019873841568e-01, 9.879662130250981e-01, 9.880651778500144e-01, 9.881978162133899e-01, 9.883630508181326e-01, + 9.885597957603544e-01, 9.887869526128024e-01, 9.890434070785485e-01, 9.893280319166613e-01, 9.896396899060125e-01, + 9.899772316163624e-01, 9.903394929409673e-01, 9.907252968668226e-01, 9.911334564321237e-01, 9.915627747807666e-01, + 9.920120436855326e-01, 9.924800441092685e-01, 9.929655482846576e-01, 9.934673212537685e-01, 9.939841207305906e-01, + 9.945146969322154e-01, 9.950577931942117e-01, 9.956121471675398e-01, 9.961764915534302e-01, 9.967495543671935e-01, + 9.973300590248015e-01, 9.979167245036720e-01, 9.985082643417953e-01, 9.991033633647473e-01, 9.997003478609010e-01, + 1.000299741957418e+00, 1.000897441314013e+00, 1.001493964257960e+00, 1.002087624593489e+00, 1.002677088643863e+00, + 1.003261045483858e+00, 1.003838183774652e+00, 1.004407190937699e+00, 1.004966753528881e+00, 1.005515557572658e+00, + 1.006052289109999e+00, 1.006575635258931e+00, 1.007084285781611e+00, 1.007576934100958e+00, 1.008052277555815e+00, + 1.008509017718116e+00, 1.008945862447015e+00, 1.009361528531177e+00, 1.009754742820913e+00, 1.010124241309341e+00, + 1.010468769795370e+00, 1.010787087537248e+00, 1.011077969726137e+00, 1.011340205650538e+00, 1.011572597114216e+00, + 1.011773962181442e+00, 1.011943138906979e+00, 1.012078982659783e+00, 1.012180362866919e+00, 1.012246166897464e+00, + 1.012275305013586e+00, 1.012266707295288e+00, 1.012219319453278e+00, 1.012132107622966e+00, 1.012004064757857e+00, + 1.011834207632025e+00, 1.011621572933544e+00, 1.011365223023975e+00, 1.011064253702468e+00, 1.010717792733157e+00, + 1.010324996851905e+00, 1.009885057526159e+00, 1.009397209381147e+00, 1.008860731864438e+00, 1.008274947065247e+00, + 1.007639223374887e+00, 1.006952983357691e+00, 1.006215708265639e+00, 1.005426938305289e+00, 1.004586273379809e+00, + 1.003693377657581e+00, 1.002747984657666e+00, 1.001749900308864e+00, 1.000699003803502e+00, 9.995952485989262e-01, + 9.984386632116344e-01, 9.972293415774932e-01, 9.959672769174924e-01, 9.946500332901397e-01, 9.932403996813470e-01, + 9.912511516117244e-01, 9.895756853352172e-01, 9.877713214760662e-01, 9.858577479051078e-01, 9.838303127859196e-01, + 9.816822625580078e-01, 9.794074486605805e-01, 9.769999155793757e-01, 9.744528356359687e-01, 9.717597500340699e-01, + 9.689141159310996e-01, 9.659101618500662e-01, 9.627421831412876e-01, 9.594038121639412e-01, 9.558889978382734e-01, + 9.521922434090249e-01, 9.483086322505029e-01, 9.442332539187503e-01, 9.399607238929982e-01, 9.354860218216989e-01, + 9.308052967663477e-01, 9.259146970284931e-01, 9.208101305030523e-01, 9.154873597416558e-01, 9.099426066529104e-01, + 9.041732260327581e-01, 8.981763729936715e-01, 8.919490241013392e-01, 8.854882249661838e-01, 8.787919436722827e-01, + 8.718585835568161e-01, 8.646864947605047e-01, 8.572738135700366e-01, 8.496195859658071e-01, 8.417237467711145e-01, + 8.335862715770727e-01, 8.252074428838668e-01, 8.165875713256009e-01, 8.077280370477699e-01, 7.986311592191131e-01, + 7.892986353718001e-01, 7.797330954210866e-01, 7.699379531983687e-01, 7.599171886893816e-01, 7.496758423734833e-01, + 7.392176841476761e-01, 7.285474515411827e-01, 7.176714478163359e-01, 7.065962311464494e-01, 6.953282935906302e-01, + 6.838739059112046e-01, 6.722395305539791e-01, 6.604334017809461e-01, 6.484643596235256e-01, 6.363395004626368e-01, + 6.240661431421666e-01, 6.116530334821534e-01, 5.991098644638286e-01, 5.864461424698465e-01, 5.736694851703749e-01, + 5.607881029948401e-01, 5.478160663871271e-01, 5.347619788897301e-01, 5.216365147692703e-01, 5.084499758302256e-01, + 4.952135086430446e-01, 4.819387562519412e-01, 4.686361426419003e-01, 4.553170769563941e-01, 4.419939954454178e-01, + 4.286789889246267e-01, 4.153837786572842e-01, 4.021211063103491e-01, 3.889032719013054e-01, 3.757425439137077e-01, + 3.626515183776310e-01, 3.496431418636322e-01, 3.367290822653354e-01, 3.239228075238623e-01, 3.112360816586549e-01, + 2.986807941537710e-01, 2.862694673284843e-01, 2.740128472224539e-01, 2.619228330079575e-01, 2.500098438708934e-01, + 2.382847225401669e-01, 2.267578490199104e-01, 2.154390996938547e-01, 2.043379825955254e-01, 1.934636765792024e-01, + 1.828250319214460e-01, 1.724305860483634e-01, 1.622886348529314e-01, 1.524071880359812e-01, 1.427939789949266e-01, + 1.334565845242183e-01, 1.244023922999665e-01, 1.156385879569742e-01, 1.071721547807196e-01, 9.900985872728905e-02, + 9.115821766572002e-02, 8.362344855837105e-02, 7.641140367416376e-02, 6.952749039054598e-02, 6.297656454790079e-02, + 5.676284244020858e-02, 5.088975408628229e-02, 4.535983304624439e-02, 4.017457306236873e-02, 3.533430192568957e-02, + 3.083806062123772e-02, 2.668355420358626e-02, 2.286680405144430e-02, 1.938236337675363e-02, 1.622312720409645e-02, + 1.338005016725895e-02, 1.084218595595746e-02, 8.596753980908744e-03, 6.640506529168652e-03, 5.172703110468352e-03, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + + +const LC3_FLOAT MDCT_HRA_WINDOW_480_2_5ms[240] = { + 1.928875250471185e-07, 1.268623078914631e-06, 3.736943081685792e-06, 8.649386473419844e-06, 1.752499879209154e-05, + 3.251004192297566e-05, 5.654995150945631e-05, 9.358653414327445e-05, 1.487809853781833e-04, 2.287619057346095e-04, + 3.418963835622074e-04, 4.985810015573861e-04, 7.115482671394238e-04, 9.961824750040105e-04, 1.370837415765066e-03, + 1.857146703383843e-03, 2.480315886706181e-03, 3.269384042869696e-03, 4.257441351253188e-03, 5.481788360538607e-03, + 6.984022437256788e-03, 8.810037359146468e-03, 1.100992329671028e-02, 1.363775656493463e-02, 1.675127150559057e-02, + 2.041141057401967e-02, 2.468175295733717e-02, 2.962782656580052e-02, 3.531631267855188e-02, 4.181415652877682e-02, + 4.918760034374654e-02, 5.750115754515065e-02, 6.681654781077175e-02, 7.719161248813326e-02, 8.867922857347045e-02, + 1.013262374019720e-01, 1.151724017179353e-01, 1.302494023407827e-01, 1.465798836473051e-01, 1.641765559275968e-01, + 1.830413626142431e-01, 2.031647215674081e-01, 2.245248520040451e-01, 2.470872021104946e-01, 2.708039965464759e-01, + 2.956139274737775e-01, 3.214420168557505e-01, 3.481996809305596e-01, 3.757850292873181e-01, 4.040834302177654e-01, + 4.329683704138883e-01, 4.623026302356333e-01, 4.919397855296871e-01, 5.217260335074649e-01, 5.515023240298861e-01, + 5.811067597335228e-01, 6.103772100633116e-01, 6.391540670154212e-01, 6.672830559207561e-01, 6.946180045149623e-01, + 7.210234691482331e-01, 7.463771190956836e-01, 7.705717887049389e-01, 7.935171220325148e-01, 8.151407544921331e-01, + 8.353889991744725e-01, 8.542270299166949e-01, 8.716385768842180e-01, 8.876251715716619e-01, 9.022049953400274e-01, + 9.154113980197115e-01, 9.272911604251438e-01, 9.379025770646191e-01, 9.473134335138002e-01, 9.555989477431630e-01, + 9.628397371519567e-01, 9.691198641470655e-01, 9.745250036731624e-01, 9.791407668194774e-01, 9.830512059497915e-01, + 9.863375189657285e-01, 9.890769633791019e-01, 9.913419847656554e-01, 9.931995587544050e-01, 9.947107408108303e-01, + 9.959304135675596e-01, 9.969072172806543e-01, 9.976836451676292e-01, 9.982962820245519e-01, 9.987761617973335e-01, + 9.991492178976376e-01, 9.994367991905715e-01, 9.996562248627440e-01, 9.998213528339476e-01, 9.999431389208511e-01, + 1.000030167405588e+00, 1.000089137729581e+00, 1.000125296398298e+00, 1.000142807515464e+00, 1.000145059370791e+00, + 1.000134907956303e+00, 1.000114861040898e+00, 1.000087208438067e+00, 1.000054105383460e+00, 1.000017616583971e+00, + 9.999797286315710e-01, 9.999423382309206e-01, 9.999072232012880e-01, 9.998760025910959e-01, 9.998500915686289e-01, + 9.998306560737898e-01, 9.998185715517388e-01, 9.998143894342878e-01, 9.998183143680869e-01, 9.998301944838478e-01, + 9.998495262367371e-01, 9.998754745167079e-01, 9.999069078401956e-01, 9.999424475239904e-01, 9.999805288598742e-01, + 1.000019471519221e+00, 1.000057555786879e+00, 1.000093100812805e+00, 1.000124540917058e+00, 1.000150496102128e+00, + 1.000169833298924e+00, 1.000181715452526e+00, 1.000185636273393e+00, 1.000181439257840e+00, 1.000169320335504e+00, + 1.000149814156658e+00, 1.000123764529774e+00, 1.000092279821119e+00, 1.000056674215966e+00, 1.000018395617911e+00, + 9.999789406480724e-01, 9.999397567326687e-01, 9.999021306794866e-01, 9.998670624939285e-01, 9.998351225350340e-01, + 9.998062895304436e-01, 9.997797665333356e-01, 9.997537716957203e-01, 9.997253008334399e-01, 9.996898592447866e-01, + 9.996411611766667e-01, 9.995707967428177e-01, 9.994678679836200e-01, 9.993185980679096e-01, 9.991059202780914e-01, + 9.988090562524252e-01, 9.984030958127336e-01, 9.978585933978946e-01, 9.971411984750603e-01, 9.962113391583908e-01, + 9.950239795154223e-01, 9.935284716160412e-01, 9.916685232530794e-01, 9.893823014422549e-01, 9.866026903106617e-01, + 9.832577198181265e-01, 9.792711789106039e-01, 9.745634231307387e-01, 9.690523823244767e-01, 9.626547687789766e-01, + 9.552874798038419e-01, 9.468691813614447e-01, 9.373220508813107e-01, 9.265736480032657e-01, 9.145588719963409e-01, + 9.012219545005915e-01, 8.865184267401519e-01, 8.704169923325978e-01, 8.529012312555665e-01, 8.339710584198038e-01, + 8.136438625110305e-01, 7.919552579077074e-01, 7.689593947581650e-01, 7.447287893964823e-01, 7.193536583208960e-01, + 6.929407625549489e-01, 6.656117935585394e-01, 6.375013549431151e-01, 6.087546140984144e-01, 5.795247127727363e-01, + 5.499700344866872e-01, 5.202514288725478e-01, 4.905294887819369e-01, 4.609619660928919e-01, 4.317013978660552e-01, + 4.028929974356116e-01, 3.746728468420245e-01, 3.471664092737412e-01, 3.204873641715565e-01, 2.947367542923338e-01, + 2.700024238683050e-01, 2.463587202023185e-01, 2.238664274584689e-01, 2.025729006480214e-01, 1.825123693148748e-01, + 1.637063835467572e-01, 1.461643790086412e-01, 1.298843420747792e-01, 1.148535602600838e-01, 1.010494465619472e-01, + 8.844042869400506e-02, 7.698689534753124e-02, 6.664219153548699e-02, 5.735365389394342e-02, 4.906367480666277e-02, + 4.171078175510523e-02, 3.523071580898128e-02, 2.955749109487545e-02, 2.462441579169607e-02, 2.036505497804320e-02, + 1.671411663728698e-02, 1.360824429995981e-02, 1.098670301702559e-02, 8.791949345648940e-03, 6.970080454492374e-03, + 5.471161958930394e-03, 4.249438341364304e-03, 3.263433520599239e-03, 2.475952111493295e-03, 1.853994056678125e-03, + 1.368596596909542e-03, 9.946180283333026e-04, 7.104774789034889e-04, 4.978641589703932e-04, 3.414283510010364e-04, + 2.284649445606105e-04, 1.485987233730432e-04, 9.347897725317759e-05, 5.648942347847280e-05, 3.247793542861785e-05, + 1.750922386335714e-05, 8.642407336226362e-06, 3.734302301245202e-06, 1.267861256795911e-06, 1.927766981311251e-07}; + +const LC3_FLOAT MDCT_HRA_WINDOW_960_2_5ms[480] = { + 1.363353492760669e-07, 4.577676005269251e-07, 9.975675168391671e-07, 1.840776229085288e-06, 3.092248230077047e-06, + 4.880943708557620e-06, 7.363817805099883e-06, 1.073000750387602e-05, 1.520538607055496e-05, 2.105750528134522e-05, + 2.860093592119667e-05, 3.820301288710557e-05, 5.028998805188179e-05, 6.535359090391442e-05, 8.395799364585048e-05, + 1.067471738361778e-04, 1.344526637637966e-04, 1.679016715435404e-04, 2.080255544044134e-04, 2.558686198117505e-04, + 3.125972249248099e-04, 3.795091394541575e-04, 4.580431312676675e-04, 5.497887281277575e-04, 6.564961027629782e-04, + 7.800860221325537e-04, 9.226597952927381e-04, 1.086509147791288e-03, 1.274125944085974e-03, 1.488211673202887e-03, + 1.731686606830910e-03, 2.007698533412427e-03, 2.319630966669840e-03, 2.671110722544265e-03, 3.066014754864068e-03, + 3.508476137357141e-03, 4.002889078021606e-03, 4.553912851519276e-03, 5.166474536289647e-03, 5.845770445618693e-03, + 6.597266146035767e-03, 7.426694962226363e-03, 8.340054875180547e-03, 9.343603729551937e-03, 1.044385267714563e-02, + 1.164755779600632e-02, 1.296170983861615e-02, 1.439352207806304e-02, 1.595041623748902e-02, 1.764000650541313e-02, + 1.947008165734806e-02, 2.144858532216432e-02, 2.358359444954804e-02, 2.588329605228426e-02, 2.835596231360897e-02, + 3.100992416515645e-02, 3.385354345474830e-02, 3.689518383513415e-02, 4.014318051454780e-02, 4.360580901740066e-02, + 4.729125310846769e-02, 5.120757203648361e-02, 5.536266725318061e-02, 5.976424876157179e-02, 6.441980124289254e-02, + 6.933655010531084e-02, 7.452142758961615e-02, 7.998103905796611e-02, 8.572162958181787e-02, 9.174905093483054e-02, + 9.806872908624656e-02, 1.046856322804917e-01, 1.116042397799019e-01, 1.188285113399959e-01, 1.263618574809210e-01, + 1.342071106149135e-01, 1.423664970880752e-01, 1.508416101956496e-01, 1.596333842333865e-01, 1.687420696535257e-01, + 1.781672094023636e-01, 1.879076165271377e-01, 1.979613531528743e-01, 2.083257109445936e-01, 2.189971931864894e-01, + 2.299714986269890e-01, 2.412435072564368e-01, 2.528072682020181e-01, 2.646559899418406e-01, 2.767820330562002e-01, + 2.891769057483280e-01, 3.018312623786579e-01, 3.147349052652145e-01, 3.278767900074122e-01, 3.412450345907444e-01, + 3.548269325249284e-01, 3.686089702575019e-01, 3.825768490881926e-01, 3.967155117862224e-01, 4.110091740828488e-01, + 4.254413611747417e-01, 4.399949493303511e-01, 4.546522126414323e-01, 4.693948749058132e-01, 4.842041665659120e-01, + 4.990608865612834e-01, 5.139454688835927e-01, 5.288380535501122e-01, 5.437185616384643e-01, 5.585667739524391e-01, + 5.733624128178846e-01, 5.880852264406471e-01, 6.027150751969793e-01, 6.172320191724501e-01, 6.316164062197546e-01, + 6.458489597703579e-01, 6.599108656108541e-01, 6.737838568232726e-01, 6.874502960899853e-01, 7.008932545787268e-01, + 7.140965866515435e-01, 7.270449996828834e-01, 7.397241183258171e-01, 7.521205426304834e-01, 7.642218994939656e-01, + 7.760168870042503e-01, 7.874953113309442e-01, 7.986481159099932e-01, 8.094674027667472e-01, 8.199464459192338e-01, + 8.300796968994718e-01, 8.398627825231116e-01, 8.492924951249206e-01, 8.583667755581161e-01, 8.670846893280041e-01, + 8.754463962937875e-01, 8.834531144261093e-01, 8.911070781514043e-01, 8.984114918473676e-01, 9.053704790768982e-01, + 9.119890281611266e-01, 9.182729346961321e-01, 9.242287416134559e-01, 9.298636773723805e-01, 9.351855928531210e-01, + 9.402028974955879e-01, 9.449244951992589e-01, 9.493597204669394e-01, 9.535182752397909e-01, 9.574101668338553e-01, + 9.610456473502188e-01, 9.644351548926832e-01, 9.675892568889318e-01, 9.705185957742447e-01, 9.732338372611643e-01, + 9.757456213845153e-01, 9.780645164789403e-01, 9.802009762158145e-01, 9.821652997980082e-01, 9.839675953844861e-01, + 9.856177467920233e-01, 9.871253834983186e-01, 9.884998539492639e-01, 9.897502021530162e-01, 9.908851475245483e-01, + 9.919130679264989e-01, 9.928419858351684e-01, 9.936795575444219e-01, 9.944330653049196e-01, 9.951094122815642e-01, + 9.957151201982998e-01, 9.962563295265126e-01, 9.967388020613602e-01, 9.971679257195168e-01, 9.975487213822326e-01, + 9.978858515994010e-01, 9.981836309637017e-01, 9.984460379589807e-01, 9.986767280839717e-01, 9.988790480513948e-01, + 9.990560508634377e-01, 9.992105115676724e-01, 9.993449435025852e-01, 9.994616148490124e-01, 9.995625653127808e-01, + 9.996496227746003e-01, 9.997244197555017e-01, 9.997884095596641e-01, 9.998428819710351e-01, 9.998889783954170e-01, + 9.999277063554146e-01, 9.999599532614691e-01, 9.999864993978808e-01, 1.000008030077971e+00, 1.000025146937107e+00, + 1.000038378346013e+00, 1.000048188939381e+00, 1.000054988266291e+00, 1.000059138579006e+00, 1.000060961785582e+00, + 1.000060745599070e+00, 1.000058748922255e+00, 1.000055206511563e+00, 1.000050332967367e+00, 1.000044326100310e+00, + 1.000037369724671e+00, 1.000029635930232e+00, 1.000021286883873e+00, 1.000012476211096e+00, 1.000003350006250e+00, + 9.999940475182815e-01, 9.999847015566445e-01, 9.999754386595657e-01, 9.999663790642979e-01, 9.999576365163719e-01, + 9.999493179522237e-01, 9.999415230869807e-01, 9.999343439366570e-01, 9.999278643015735e-01, 9.999221592354568e-01, + 9.999172945224162e-01, 9.999133261818468e-01, 9.999103000191805e-01, 9.999082512384065e-01, 9.999072041302636e-01, + 9.999071718480597e-01, 9.999081562811047e-01, 9.999101480338050e-01, 9.999131265164656e-01, 9.999170601519115e-01, + 9.999219066999991e-01, 9.999276137001288e-01, 9.999341190298563e-01, 9.999413515757679e-01, 9.999492320108540e-01, + 9.999576736708096e-01, 9.999665835199758e-01, 9.999758631960602e-01, 9.999854101213793e-01, 9.999951186671812e-01, + 1.000004881356628e+00, 1.000014590091279e+00, 1.000024137385544e+00, 1.000033417593335e+00, 1.000042328111225e+00, + 1.000050770542848e+00, 1.000058651809861e+00, 1.000065885195634e+00, 1.000072391308898e+00, 1.000078098955774e+00, + 1.000082945909961e+00, 1.000086879572280e+00, 1.000089857512229e+00, 1.000091847885646e+00, 1.000092829723974e+00, + 1.000092793091916e+00, 1.000091739111420e+00, 1.000089679850895e+00, 1.000086638079347e+00, 1.000082646885623e+00, + 1.000077749163242e+00, 1.000071996961268e+00, 1.000065450701385e+00, 1.000058178260741e+00, 1.000050253919262e+00, + 1.000041757168942e+00, 1.000032771381191e+00, 1.000023382326608e+00, 1.000013676539597e+00, 1.000003739518099e+00, + 9.999936537463840e-01, 9.999834965263427e-01, 9.999733376002018e-01, 9.999632365449369e-01, 9.999532399160947e-01, + 9.999433781162252e-01, 9.999336619607787e-01, 9.999240789122246e-01, 9.999145889513631e-01, 9.999051200534473e-01, + 9.998955632358651e-01, 9.998857671439174e-01, 9.998755321416521e-01, 9.998646038760159e-01, 9.998526662846789e-01, + 9.998393340210341e-01, 9.998241442739438e-01, 9.998065479650342e-01, 9.997859003125656e-01, 9.997614507583039e-01, + 9.997323322622099e-01, 9.996975499792088e-01, 9.996559693426429e-01, 9.996063035901801e-01, 9.995471007797664e-01, + 9.994767303555520e-01, 9.993933693363640e-01, 9.992949882120472e-01, 9.991793366456373e-01, 9.990439290916592e-01, + 9.988860304525888e-01, 9.987026419065322e-01, 9.984904870492169e-01, 9.982459985022988e-01, 9.979653051476074e-01, + 9.976442201531890e-01, 9.972782299617136e-01, 9.968624844150069e-01, 9.963917881900651e-01, 9.958605937219481e-01, + 9.952629957874448e-01, 9.945927279204203e-01, 9.938431608253206e-01, 9.930073029495663e-01, 9.920778033684794e-01, + 9.910469571281373e-01, 9.899067131820748e-01, 9.886486850471784e-01, 9.872641642923781e-01, 9.857441369608847e-01, + 9.840793030126235e-01, 9.822600988582102e-01, 9.802767230390885e-01, 9.781191650903150e-01, 9.757772376026793e-01, + 9.732406114793927e-01, 9.704988543592059e-01, 9.675414721525257e-01, 9.643579536097365e-01, 9.609378178114939e-01, + 9.572706644392005e-01, 9.533462266503443e-01, 9.491544263479285e-01, 9.446854315961644e-01, 9.399297158962095e-01, + 9.348781189964488e-01, 9.295219088721776e-01, 9.238528444701966e-01, 9.178632387754598e-01, 9.115460217204322e-01, + 9.048948024240450e-01, 8.979039302171362e-01, 8.905685538859580e-01, 8.828846785458305e-01, 8.748492195442639e-01, + 8.664600527878369e-01, 8.577160608906681e-01, 8.486171745551603e-01, 8.391644086184020e-01, 8.293598922305367e-01, + 8.192068926746530e-01, 8.087098323911928e-01, 7.978742988330544e-01, 7.867070468498287e-01, 7.752159933798504e-01, + 7.634102043158196e-01, 7.512998735020282e-01, 7.388962939169839e-01, 7.262118211926384e-01, 7.132598297183557e-01, + 7.000546616722335e-01, 6.866115694122957e-01, 6.729466517435032e-01, 6.590767846515775e-01, 6.450195471597746e-01, + 6.307931430185830e-01, 6.164163189797930e-01, 6.019082804348481e-01, 5.872886052124403e-01, 5.725771563319307e-01, + 5.577939944978301e-01, 5.429592910967905e-01, 5.280932424234555e-01, 5.132159858162120e-01, 4.983475183298941e-01, + 4.835076185113182e-01, 4.687157717768828e-01, 4.539910998210603e-01, 4.393522944120604e-01, 4.248175558579833e-01, + 4.104045363548025e-01, 3.961302883579846e-01, 3.820112180536255e-01, 3.680630439436816e-01, 3.543007605040334e-01, + 3.407386068243548e-01, 3.273900400954695e-01, 3.142677137733552e-01, 3.013834602191723e-01, 2.887482775916394e-01, + 2.763723207514489e-01, 2.642648959268686e-01, 2.524344588847748e-01, 2.408886163515173e-01, 2.296341304326797e-01, + 2.186769257893048e-01, 2.080220993398264e-01, 1.976739322711464e-01, 1.876359041583237e-01, 1.779107090095517e-01, + 1.685002730708834e-01, 1.594057742429125e-01, 1.506276629788181e-01, 1.421656845493104e-01, 1.340189025746913e-01, + 1.261857237370651e-01, 1.186639235964411e-01, 1.114506734428340e-01, 1.045425681223503e-01, 9.793565477860058e-02, + 9.162546245161339e-02, 8.560703247484407e-02, 7.987494960705163e-02, 7.442337382999228e-02, 6.924607273536325e-02, + 6.433645441557491e-02, 5.968760076313909e-02, 5.529230107316437e-02, 5.114308583308901e-02, 4.723226057381158e-02, + 4.355193964722984e-02, 4.009407978727676e-02, 3.685051330522059e-02, 3.381298076557955e-02, 3.097316298675063e-02, + 2.832271221053797e-02, 2.585328228730008e-02, 2.355655772843824e-02, 2.142428148537503e-02, 1.944828132389286e-02, + 1.762049467453352e-02, 1.593299185344667e-02, 1.437799756332653e-02, 1.294791060055676e-02, 1.163532171204003e-02, + 1.043302956305446e-02, 9.334054795489547e-03, 8.331652173617308e-03, 7.419320831822072e-03, 6.590812655146027e-03, + 5.840138838848342e-03, 5.161574687206487e-03, 4.549662724337389e-03, 3.999214200759286e-03, 3.505309088672846e-03, + 3.063294666478038e-03, 2.668782798866110e-03, 2.317646022975776e-03, 2.006012553652158e-03, 1.730260321894845e-03, + 1.487010160247016e-03, 1.273118247295162e-03, 1.085667920762688e-03, 9.219609650399310e-04, 7.795084745479000e-04, + 6.560213892304477e-04, 5.494007928508220e-04, 4.577280587661532e-04, 3.792549215895880e-04, 3.123935467349105e-04, + 2.557066633705375e-04, 2.078978198736850e-04, 1.678018145436083e-04, 1.343753481649133e-04, 1.066879390562912e-04, + 8.391313553401788e-05, 6.532005529093359e-05, 5.026527605947520e-05, 3.818509710338716e-05, 2.858818657228189e-05, + 2.104862555598476e-05, 1.519935578579325e-05, 1.072603433419925e-05, 7.361295334616452e-06, 4.879415604699819e-06, + 3.091377877253446e-06, 1.840321200267112e-06, 9.973582966273186e-07, 4.576899867970956e-07, 1.363156993327630e-07}; + +const LC3_FLOAT MDCT_HRA_WINDOW_480_5ms[480] = { + 9.752475122178133e-08, 6.413568706385488e-07, 1.888722582859778e-06, 4.370037451432268e-06, 8.850535239285388e-06, + 1.640976145163547e-05, 2.852654713353143e-05, 4.717577700625728e-05, 7.493695610161539e-05, 1.151138634046934e-04, + 1.718640547726665e-04, 2.503364524287818e-04, 3.568147253529307e-04, 4.988636346654247e-04, 6.854750052598100e-04, + 9.272095051506971e-04, 1.236329983123574e-03, 1.626921748932395e-03, 2.114994893578391e-03, 2.718563554424897e-03, + 3.457696944351759e-03, 4.354536997897421e-03, 5.433277651003014e-03, 6.720101073517573e-03, 8.243066622086374e-03, + 1.003194888027514e-02, 1.211802190514137e-02, 1.453378770448280e-02, 1.731264802301458e-02, 2.048851971150478e-02, + 2.409539527917081e-02, 2.816685167069475e-02, 3.273551184443837e-02, 3.783246533188810e-02, 4.348665559839211e-02, + 4.972424366422929e-02, 5.656795903921283e-02, 6.403645052356303e-02, 7.214365077720192e-02, 8.089816969852329e-02, + 9.030273251800713e-02, 1.003536790358444e-01, 1.110405405506510e-01, 1.223457106767086e-01, 1.342442253757111e-01, + 1.467036660932157e-01, 1.596841978637899e-01, 1.731387516273307e-01, 1.870133568030685e-01, 2.012476264477750e-01, + 2.157753931632489e-01, 2.305254894308376e-01, 2.454226613848142e-01, 2.603886003668338e-01, 2.753430721265570e-01, + 2.902051194568206e-01, 3.048943105839568e-01, 3.193320029709852e-01, 3.334425905036104e-01, 3.471547014476447e-01, + 3.604024000326147e-01, 3.731263195417857e-01, 3.852742256277580e-01, 3.968020335005454e-01, 4.076742901287472e-01, + 4.178645650568324e-01, 4.273556452755667e-01, 4.361395400809099e-01, 4.442173028452789e-01, 4.515986821559811e-01, + 4.583016198658067e-01, 4.643516178635941e-01, 4.697809986240601e-01, 4.746280867221525e-01, 4.789363394414859e-01, + 4.827534543679447e-01, 4.861304804889396e-01, 4.891209569144257e-01, 4.917801000389275e-01, 4.941640559535466e-01, + 4.963292304037445e-01, 4.983317038070890e-01, 5.002267340435251e-01, 5.020683451596181e-01, 5.039089960260009e-01, + 5.057993195650324e-01, 5.077879205925190e-01, 5.099212187075181e-01, 5.122433220684072e-01, 5.147959182947806e-01, + 5.176181700509677e-01, 5.207466049576202e-01, 5.242149921562288e-01, 5.280542009005510e-01, 5.322920397381714e-01, + 5.369530779485470e-01, 5.420584537149585e-01, 5.476256758552612e-01, 5.536684276931489e-01, 5.601963827419005e-01, + 5.672150422730262e-01, 5.747256045798048e-01, 5.827248748908062e-01, 5.912052235447917e-01, 6.001545983308831e-01, + 6.095565949599409e-01, 6.193905875944715e-01, 6.296319193412947e-01, 6.402521506992933e-01, 6.512193622254838e-01, + 6.624985061836945e-01, 6.740518006968909e-01, 6.858391589448801e-01, 6.978186452298805e-01, 7.099469492625143e-01, + 7.221798697869513e-01, 7.344727986533678e-01, 7.467811966479000e-01, 7.590610527959840e-01, 7.712693194564819e-01, + 7.833643163120154e-01, 7.953060973228134e-01, 8.070567758283893e-01, 8.185808042273020e-01, 8.298452060049231e-01, + 8.408197592685507e-01, 8.514771323358515e-01, 8.617929732481214e-01, 8.717459562819760e-01, 8.813177895502246e-01, + 8.904931885580764e-01, 8.992598210679454e-01, 9.076082287937692e-01, 9.155317312832600e-01, 9.230263168675006e-01, + 9.300905248019673e-01, 9.367253217576155e-01, 9.429339747337118e-01, 9.487219213595656e-01, 9.540966375393273e-01, + 9.590675015747306e-01, 9.636456533576906e-01, 9.678438470101040e-01, 9.716762954761368e-01, 9.751585060165801e-01, + 9.783071062524560e-01, 9.811396612648455e-01, 9.836744831733611e-01, 9.859304354792453e-01, 9.879267351759304e-01, + 9.896827561287711e-01, 9.912178374656364e-01, 9.925511006920656e-01, 9.937012789694025e-01, 9.946865615154821e-01, + 9.955244554643670e-01, 9.962316668199601e-01, 9.968240014222112e-01, 9.973162861697706e-01, 9.977223101520583e-01, + 9.980547848638137e-01, 9.983253223174189e-01, 9.985444296291865e-01, 9.987215185204544e-01, 9.988649281201196e-01, + 9.989819594562657e-01, 9.990789200557365e-01, 9.991611771110095e-01, 9.992332177094652e-01, 9.992987146446982e-01, + 9.993605963440879e-01, 9.994211194587087e-01, 9.994819426820254e-01, 9.995442004050701e-01, 9.996085748889234e-01, + 9.996753657478641e-01, 9.997445556919270e-01, 9.998158716802928e-01, 9.998888409489480e-01, 9.999628437059447e-01, + 1.000037122530308e+00, 1.000110932111342e+00, 1.000183434550577e+00, 1.000253775458271e+00, 1.000321131235573e+00, + 1.000384720523657e+00, 1.000443814718821e+00, 1.000497747347372e+00, 1.000545922137548e+00, 1.000587819673348e+00, + 1.000623002564305e+00, 1.000651119113520e+00, 1.000671905511154e+00, 1.000685186620367e+00, 1.000690875455855e+00, + 1.000688971480779e+00, 1.000679557865722e+00, 1.000662797863287e+00, 1.000638930454792e+00, 1.000608265421794e+00, + 1.000571177986086e+00, 1.000528103148456e+00, 1.000479529839953e+00, 1.000425994980975e+00, 1.000368077524065e+00, + 1.000306392536921e+00, 1.000241585363485e+00, 1.000174325883803e+00, 1.000105302878071e+00, 1.000035218487335e+00, + 9.999647827529677e-01, 9.998947082094627e-01, 9.998257045004189e-01, 9.997584729859116e-01, 9.996937013107159e-01, + 9.996320579071534e-01, 9.995741864134795e-01, 9.995206999987033e-01, 9.994721755972762e-01, 9.994291480719714e-01, + 9.993921043401182e-01, 9.993614775166697e-01, 9.993376411467469e-01, 9.993209036195655e-01, 9.993115028741053e-01, + 9.993096015235072e-01, 9.993152825388751e-01, 9.993285456427281e-01, 9.993493045667127e-01, 9.993773853262324e-01, + 9.994125256556279e-01, 9.994543757308175e-01, 9.995025002817920e-01, 9.995563821653024e-01, 9.996154274293025e-01, + 9.996789718565903e-01, 9.997462889273712e-01, 9.998165990914856e-01, 9.998890801932255e-01, 9.999628788477228e-01, + 1.000037122530308e+00, 1.000110932111343e+00, 1.000183434550578e+00, 1.000253775458273e+00, 1.000321131235574e+00, + 1.000384720523658e+00, 1.000443814718822e+00, 1.000497747347373e+00, 1.000545922137550e+00, 1.000587819673349e+00, + 1.000623002564306e+00, 1.000651119113521e+00, 1.000671905511155e+00, 1.000685186620368e+00, 1.000690875455855e+00, + 1.000688971480779e+00, 1.000679557865721e+00, 1.000662797863286e+00, 1.000638930454791e+00, 1.000608265421792e+00, + 1.000571177986083e+00, 1.000528103148453e+00, 1.000479529839950e+00, 1.000425994980971e+00, 1.000368077524061e+00, + 1.000306392536917e+00, 1.000241585363480e+00, 1.000174325883798e+00, 1.000105302878066e+00, 1.000035218487330e+00, + 9.999647827529627e-01, 9.998947082094576e-01, 9.998257045004140e-01, 9.997584729859067e-01, 9.996937013107114e-01, + 9.996320579071492e-01, 9.995741864134757e-01, 9.995206999987001e-01, 9.994721755972732e-01, 9.994291480719688e-01, + 9.993921043401160e-01, 9.993614775166682e-01, 9.993376411467459e-01, 9.993209036195649e-01, 9.993115028741050e-01, + 9.993096015235075e-01, 9.993152825388757e-01, 9.993285456427290e-01, 9.993493045667138e-01, 9.993773853262338e-01, + 9.994125256556294e-01, 9.994543757308189e-01, 9.995025002817937e-01, 9.995563821653038e-01, 9.996154274293039e-01, + 9.996789718565914e-01, 9.997462889273723e-01, 9.998165990914865e-01, 9.998890801932260e-01, 9.999628788477231e-01, + 1.000037087385911e+00, 1.000110692813570e+00, 1.000182706868929e+00, 1.000252041323928e+00, 1.000317522732163e+00, + 1.000377862440740e+00, 1.000431621330905e+00, 1.000477167056245e+00, 1.000512623941274e+00, 1.000535816073234e+00, + 1.000544204364164e+00, 1.000534818530052e+00, 1.000504185023504e+00, 1.000448251960702e+00, 1.000362312003691e+00, + 1.000240924003935e+00, 1.000077833997232e+00, 9.998658958833085e-01, 9.995969918486358e-01, 9.992619523233789e-01, + 9.988504750288640e-01, 9.983510424973004e-01, 9.977508373579080e-01, 9.970356547108338e-01, 9.961898110802319e-01, + 9.951960497774461e-01, 9.940354430376489e-01, 9.926872920341389e-01, 9.911290268265915e-01, 9.893361094467528e-01, + 9.872819446267991e-01, 9.849378040627681e-01, 9.822727714796871e-01, 9.792537170020328e-01, 9.758453102910697e-01, + 9.720100824436398e-01, 9.677085466217928e-01, 9.628993866974633e-01, 9.575397217975740e-01, 9.515854525300023e-01, + 9.449916919338839e-01, 9.377132809663818e-01, 9.297053848015243e-01, 9.209241625967119e-01, 9.113274999097554e-01, + 9.008757898394824e-01, 8.895327463959180e-01, 8.772662317107712e-01, 8.640490775465693e-01, 8.498598811668777e-01, + 8.346837559540076e-01, 8.185130181287622e-01, 8.013477924378186e-01, 7.831965216140859e-01, 7.640763666675557e-01, + 7.440134875182273e-01, 7.230431960387166e-01, 7.012099761451619e-01, 6.785673680876833e-01, 6.551777164863924e-01, + 6.311117838899523e-01, 6.064482336696789e-01, 5.812729878873076e-01, 5.556784673902739e-01, 5.297627228142773e-01, + 5.036284664469868e-01, 4.773820160836825e-01, 4.511321631520609e-01, 4.249889785709717e-01, 3.990625711023555e-01, + 3.734618144045748e-01, 3.482930606136814e-01, 3.236588600361913e-01, 2.996567083459001e-01, 2.763778443910257e-01, + 2.539061231327225e-01, 2.323169891052670e-01, 2.116765758470110e-01, 1.920409557494601e-01, 1.734555625129627e-01, + 1.559548047768156e-01, 1.395618845278644e-01, 1.242888277448971e-01, 1.101367277067382e-01, 9.709619389909366e-02, + 8.514799199591219e-02, 7.426385348588532e-02, 6.440742764829473e-02, 5.553534414838273e-02, 4.759835178173250e-02, + 4.054249795560948e-02, 3.431031430250281e-02, 2.884197618951215e-02, 2.407640752522409e-02, 1.995230681955070e-02, + 1.640907554818694e-02, 1.338763515624311e-02, 1.083112419588716e-02, 8.685471885106049e-03, 6.899848624541457e-03, + 5.426997611391803e-03, 4.223454598964128e-03, 3.249665071710221e-03, 2.470009678121166e-03, 1.852749750240329e-03, + 1.369905213535462e-03, 9.970772330834560e-04, 7.132276282050243e-04, 5.004264891539459e-04, 3.435786103798425e-04, + 2.301383718361825e-04, 1.498216022111699e-04, 9.432178886435202e-05, 5.703679621983551e-05, 3.281105011319028e-05, + 1.769696765784037e-05, 8.738278469978569e-06, 3.776770390150926e-06, 1.282520060393973e-06, 1.950213832061108e-07, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_HRA_WINDOW_960_5ms[960] = { + 6.895487963711672e-08, 2.315162529310440e-07, 5.044776791712418e-07, 9.307951082662299e-07, 1.563406927329763e-06, + 2.467387587537570e-06, 3.721891688909285e-06, 5.422241751611354e-06, 7.682193559629735e-06, 1.063638764371401e-05, + 1.444299034054517e-05, 1.928652559405143e-05, 2.538089690430043e-05, 3.297259712577839e-05, 4.234410206521111e-05, + 5.381744200626993e-05, 6.775794339454556e-05, 8.457813095885401e-05, 1.047417785352287e-04, 1.287680948104183e-04, + 1.572360281259058e-04, 1.907886723956216e-04, 2.301377541053808e-04, 2.760681782947526e-04, 3.294426093879363e-04, + 3.912060607548454e-04, 4.623904649625926e-04, 5.441191948366056e-04, 6.376115037051945e-04, 7.441868515669874e-04, + 8.652690824124538e-04, 1.002390416563642e-03, 1.157195220684898e-03, 1.331443517075892e-03, 1.527014193000520e-03, + 1.745907870144461e-03, 1.990249393843025e-03, 2.262289901491620e-03, 2.564408429555132e-03, 2.899113018840483e-03, + 3.269041278198808e-03, 3.676960367589013e-03, 4.125766362471570e-03, 4.618482962817473e-03, 5.158259511618939e-03, + 5.748368289680850e-03, 6.392201055659471e-03, 7.093264802800713e-03, 7.855176706615627e-03, 8.681658240816716e-03, + 9.576528442223354e-03, 1.054369630902618e-02, 1.158715232077375e-02, 1.271095907270489e-02, 1.391924102158781e-02, + 1.521617334503430e-02, 1.660596992132020e-02, 1.809287044204954e-02, 1.968112667553175e-02, 2.137498790448110e-02, + 2.317868556757386e-02, 2.509641714048705e-02, 2.713232929826755e-02, 2.929050040721149e-02, 3.157492240084053e-02, + 3.398948210100576e-02, 3.653794205159846e-02, 3.922392093875195e-02, 4.205087367774323e-02, 4.502207125299418e-02, + 4.814058040358271e-02, 5.140924325245049e-02, 5.483065698298122e-02, 5.840715367176064e-02, 6.214078039106200e-02, + 6.603327969885861e-02, 7.008607063789310e-02, 7.430023036845897e-02, 7.867647656201358e-02, 8.321515068447660e-02, + 8.791620229900704e-02, 9.277917451814051e-02, 9.780319073433394e-02, 1.029869427561657e-01, 1.083286804746118e-01, + 1.138262031799212e-01, 1.194768526446087e-01, 1.252775080819347e-01, 1.312245830819321e-01, 1.373140246185531e-01, + 1.435413142118472e-01, 1.499014713182564e-01, 1.563890590101503e-01, 1.629981919926660e-01, 1.697225469918130e-01, + 1.765553755327395e-01, 1.834895191111025e-01, 1.905174267437600e-01, 1.976311748676255e-01, 2.048224895376239e-01, + 2.120827708564311e-01, 2.194031195502149e-01, 2.267743655861134e-01, 2.341870987088808e-01, 2.416317007561807e-01, + 2.490983795946414e-01, 2.565772045021951e-01, 2.640581428066213e-01, 2.715310975758094e-01, 2.789859461422405e-01, + 2.864125792327671e-01, 2.938009404650995e-01, 3.011410659646723e-01, 3.084231238498945e-01, 3.156374533302977e-01, + 3.227746031609007e-01, 3.298253691972654e-01, 3.367808307992519e-01, 3.436323858374391e-01, 3.503717840645000e-01, + 3.569912187918766e-01, 3.634832564154323e-01, 3.698408960767766e-01, 3.760576237679591e-01, 3.821274200069671e-01, + 3.880447807855012e-01, 3.938047354128900e-01, 3.994028614671444e-01, 4.048352968090768e-01, 4.100987486186185e-01, + 4.151904994338012e-01, 4.201084101968628e-01, 4.248509203362432e-01, 4.294170449371775e-01, 4.338063690767977e-01, + 4.380190394218450e-01, 4.420557532080190e-01, 4.459177447394188e-01, 4.496067695642793e-01, 4.531250864990879e-01, + 4.564754376870322e-01, 4.596610268884718e-01, 4.626854962106256e-01, 4.655529014908880e-01, 4.682676865530477e-01, + 4.708346565582213e-01, 4.732589506724937e-01, 4.755460142711474e-01, 4.777015708950234e-01, 4.797315941680489e-01, + 4.816422798764418e-01, 4.834400183996339e-01, 4.851313676707616e-01, 4.867230268307342e-01, 4.882218107246894e-01, + 4.896346253731921e-01, 4.909684445331096e-01, 4.922302874448856e-01, 4.934271978441982e-01, 4.945662242969564e-01, + 4.956544018975119e-01, 4.966987353511036e-01, 4.977061834431282e-01, 4.986836448801200e-01, 4.996379454705324e-01, + 5.005758265977741e-01, 5.015039349236500e-01, 5.024288132476197e-01, 5.033568924361829e-01, 5.042944843274677e-01, + 5.052477755087517e-01, 5.062228218592734e-01, 5.072255437473754e-01, 5.082617217696771e-01, 5.093369929206453e-01, + 5.104568470835084e-01, 5.116266237378464e-01, 5.128515087852868e-01, 5.141365314023457e-01, 5.154865608384481e-01, + 5.169063030872989e-01, 5.184002973708743e-01, 5.199729123871391e-01, 5.216283422849100e-01, 5.233706023418981e-01, + 5.252035243345977e-01, 5.271307516011422e-01, 5.291557338103311e-01, 5.312817214614957e-01, 5.335117601505942e-01, + 5.358486846476969e-01, 5.382951128397399e-01, 5.408534395999681e-01, 5.435258306517384e-01, 5.463142164993156e-01, + 5.492202865018518e-01, 5.522454831689516e-01, 5.553909967570894e-01, 5.586577602456578e-01, 5.620464447697334e-01, + 5.655574555837481e-01, 5.691909286262941e-01, 5.729467277513715e-01, 5.768244426856284e-01, 5.808233877646608e-01, + 5.849426014943921e-01, 5.891808469760642e-01, 5.935366132255452e-01, 5.980081174096790e-01, 6.025933080143371e-01, + 6.072898689508155e-01, 6.120952245993402e-01, 6.170065457808297e-01, 6.220207566407007e-01, 6.271345424215810e-01, + 6.323443580952387e-01, 6.376464378179791e-01, 6.430368051681870e-01, 6.485112841196261e-01, 6.540655106995645e-01, + 6.596949452767820e-01, 6.653948854210106e-01, 6.711604792723804e-01, 6.769867393569574e-01, 6.828685567824609e-01, + 6.888007157467320e-01, 6.947779082904570e-01, 7.007947492250285e-01, 7.068457911662456e-01, 7.129255396047764e-01, + 7.190284679449507e-01, 7.251490324444848e-01, 7.312816869891655e-01, 7.374208976383266e-01, 7.435611568791312e-01, + 7.496969975302182e-01, 7.558230062381704e-01, 7.619338365135002e-01, 7.680242212564293e-01, 7.740889847266266e-01, + 7.801230539152502e-01, 7.861214692821104e-01, 7.920793948254449e-01, 7.979921274567765e-01, 8.038551056583576e-01, + 8.096639174059964e-01, 8.154143073453887e-01, 8.211021832154612e-01, 8.267236215176270e-01, 8.322748724351863e-01, + 8.377523640123131e-01, 8.431527056071227e-01, 8.484726906381246e-01, 8.537092986478724e-01, 8.588596967118024e-01, + 8.639212402239919e-01, 8.688914730948750e-01, 8.737681273987250e-01, 8.785491225109360e-01, 8.832325637767802e-01, + 8.878167407543193e-01, 8.923001250745454e-01, 8.966813679615423e-01, 9.009592974545819e-01, 9.051329153725320e-01, + 9.092013940588521e-01, 9.131640729428008e-01, 9.170204549493250e-01, 9.207702027865553e-01, 9.244131351359152e-01, + 9.279492227657136e-01, 9.313785845847777e-01, 9.347014836483568e-01, 9.379183231242151e-01, 9.410296422227417e-01, + 9.440361120910473e-01, 9.469385316675432e-01, 9.497378234904927e-01, 9.524350294515523e-01, 9.550313064834267e-01, + 9.575279221695473e-01, 9.599262502631155e-01, 9.622277661029504e-01, 9.644340419143761e-01, 9.665467419847689e-01, + 9.685676177053684e-01, 9.704985024734301e-01, 9.723413064517235e-01, 9.740980111855780e-01, 9.757706640811671e-01, + 9.773613727522825e-01, 9.788722992464219e-01, 9.803056541645230e-01, 9.816636906919504e-01, 9.829486985613498e-01, + 9.841629979706453e-01, 9.853089334816367e-01, 9.863888679264271e-01, 9.874051763501168e-01, 9.883602400189044e-01, + 9.892564405229114e-01, 9.900961540026917e-01, 9.908817455275554e-01, 9.916155636525488e-01, 9.922999351792323e-01, + 9.929371601433686e-01, 9.935295070502858e-01, 9.940792083761523e-01, 9.945884563506685e-01, 9.950593990338927e-01, + 9.954941366970841e-01, 9.958947185146307e-01, 9.962631395714290e-01, 9.966013381874510e-01, 9.969111935588407e-01, + 9.971945237126117e-01, 9.974530837700109e-01, 9.976885645118487e-01, 9.979025912375212e-01, 9.980967229081705e-01, + 9.982724515633580e-01, 9.984312019997783e-01, 9.985743316998982e-01, 9.987031309979628e-01, 9.988188234704969e-01, + 9.989225665382725e-01, 9.990154522666818e-01, 9.990985083514453e-01, 9.991726992767055e-01, 9.992389276326772e-01, + 9.992980355801597e-01, 9.993508064493677e-01, 9.993979664606926e-01, 9.994401865550964e-01, 9.994780843219823e-01, + 9.995122260124369e-01, 9.995431286258258e-01, 9.995712620577665e-01, 9.995970512975859e-01, 9.996208786634017e-01, + 9.996430860630976e-01, 9.996639772695648e-01, 9.996838201987696e-01, 9.997028491794524e-01, 9.997212672035590e-01, + 9.997392481469061e-01, 9.997569389500512e-01, 9.997744617498990e-01, 9.997919159532207e-01, 9.998093802440068e-01, + 9.998269145173621e-01, 9.998445617335565e-01, 9.998623496867628e-01, 9.998802926840086e-01, 9.998983931308962e-01, + 9.999166430217568e-01, 9.999350253331990e-01, 9.999535153223720e-01, 9.999720817407219e-01, 9.999906880869937e-01, + 1.000009287384094e+00, 1.000027834887701e+00, 1.000046300263356e+00, 1.000064628855653e+00, 1.000082766500416e+00, + 1.000100659718907e+00, 1.000118255908114e+00, 1.000135503526064e+00, 1.000152352271145e+00, 1.000168753254485e+00, + 1.000184659164501e+00, 1.000200024422812e+00, 1.000214805330795e+00, 1.000228960206152e+00, 1.000242449508936e+00, + 1.000255235956603e+00, 1.000267284627736e+00, 1.000278563054190e+00, 1.000289041301502e+00, 1.000298692037510e+00, + 1.000307490589210e+00, 1.000315414987954e+00, 1.000322446003211e+00, 1.000328567165139e+00, 1.000333764776314e+00, + 1.000338027913029e+00, 1.000341348416600e+00, 1.000343720875191e+00, 1.000345142596687e+00, 1.000345613573201e+00, + 1.000345136437780e+00, 1.000343716413940e+00, 1.000341361258634e+00, 1.000338081199265e+00, 1.000333888865364e+00, + 1.000328799215526e+00, 1.000322829460192e+00, 1.000315998980821e+00, 1.000308329246033e+00, 1.000299843725172e+00, + 1.000290567799819e+00, 1.000280528673668e+00, 1.000269755281177e+00, 1.000258278195373e+00, 1.000246129535135e+00, + 1.000233342872247e+00, 1.000219953138478e+00, 1.000205996532915e+00, 1.000191510429709e+00, 1.000176533286394e+00, + 1.000161104552890e+00, 1.000145264581248e+00, 1.000129054536203e+00, 1.000112516306544e+00, 1.000095692417284e+00, + 1.000078625942615e+00, 1.000061360419570e+00, 1.000043939762341e+00, 1.000026408177143e+00, 1.000008810077537e+00, + 9.999911900000854e-01, 9.999735925202352e-01, 9.999560621682817e-01, 9.999386433453050e-01, 9.999213802389432e-01, + 9.999043167388835e-01, 9.998874963519558e-01, 9.998709621167259e-01, 9.998547565174905e-01, 9.998389213976104e-01, + 9.998234978721111e-01, 9.998085262395175e-01, 9.997940458929213e-01, 9.997800952302701e-01, 9.997667115639504e-01, + 9.997539310297094e-01, 9.997417884950316e-01, 9.997303174671138e-01, 9.997195500006013e-01, 9.997095166053042e-01, + 9.997002461541395e-01, 9.996917657915899e-01, 9.996841008429919e-01, 9.996772747250358e-01, 9.996713088578647e-01, + 9.996662225792015e-01, 9.996620330610038e-01, 9.996587552291110e-01, 9.996564016864400e-01, 9.996549826402822e-01, + 9.996545058342721e-01, 9.996549764856241e-01, 9.996563972282545e-01, 9.996587680623811e-01, 9.996620863112294e-01, + 9.996663465854424e-01, 9.996715407557830e-01, 9.996776579346981e-01, 9.996846844672899e-01, 9.996926039321870e-01, + 9.997013971527812e-01, 9.997110422192300e-01, 9.997215145215743e-01, 9.997327867942448e-01, 9.997448291721661e-01, + 9.997576092585791e-01, 9.997710922046226e-01, 9.997852408006243e-01, 9.998000155789548e-01, 9.998153749282088e-01, + 9.998312752183693e-01, 9.998476709365326e-01, 9.998645148326526e-01, 9.998817580746910e-01, 9.998993504124509e-01, + 9.999172403493095e-01, 9.999353753209654e-01, 9.999537018802583e-01, 9.999721658870582e-01, 9.999907127021609e-01, + 1.000009287384094e+00, 1.000027834887701e+00, 1.000046300263357e+00, 1.000064628855654e+00, 1.000082766500417e+00, + 1.000100659718908e+00, 1.000118255908115e+00, 1.000135503526065e+00, 1.000152352271146e+00, 1.000168753254487e+00, + 1.000184659164503e+00, 1.000200024422814e+00, 1.000214805330797e+00, 1.000228960206154e+00, 1.000242449508937e+00, + 1.000255235956604e+00, 1.000267284627737e+00, 1.000278563054191e+00, 1.000289041301503e+00, 1.000298692037512e+00, + 1.000307490589211e+00, 1.000315414987955e+00, 1.000322446003212e+00, 1.000328567165140e+00, 1.000333764776315e+00, + 1.000338027913030e+00, 1.000341348416601e+00, 1.000343720875191e+00, 1.000345142596688e+00, 1.000345613573201e+00, + 1.000345136437780e+00, 1.000343716413940e+00, 1.000341361258634e+00, 1.000338081199264e+00, 1.000333888865363e+00, + 1.000328799215525e+00, 1.000322829460191e+00, 1.000315998980820e+00, 1.000308329246031e+00, 1.000299843725170e+00, + 1.000290567799817e+00, 1.000280528673665e+00, 1.000269755281174e+00, 1.000258278195370e+00, 1.000246129535132e+00, + 1.000233342872243e+00, 1.000219953138474e+00, 1.000205996532911e+00, 1.000191510429705e+00, 1.000176533286390e+00, + 1.000161104552886e+00, 1.000145264581243e+00, 1.000129054536198e+00, 1.000112516306539e+00, 1.000095692417279e+00, + 1.000078625942610e+00, 1.000061360419565e+00, 1.000043939762336e+00, 1.000026408177138e+00, 1.000008810077532e+00, + 9.999911900000801e-01, 9.999735925202301e-01, 9.999560621682765e-01, 9.999386433453000e-01, 9.999213802389382e-01, + 9.999043167388785e-01, 9.998874963519510e-01, 9.998709621167211e-01, 9.998547565174859e-01, 9.998389213976059e-01, + 9.998234978721068e-01, 9.998085262395136e-01, 9.997940458929174e-01, 9.997800952302665e-01, 9.997667115639468e-01, + 9.997539310297062e-01, 9.997417884950285e-01, 9.997303174671109e-01, 9.997195500005988e-01, 9.997095166053018e-01, + 9.997002461541374e-01, 9.996917657915880e-01, 9.996841008429901e-01, 9.996772747250343e-01, 9.996713088578635e-01, + 9.996662225792006e-01, 9.996620330610030e-01, 9.996587552291103e-01, 9.996564016864398e-01, 9.996549826402821e-01, + 9.996545058342721e-01, 9.996549764856244e-01, 9.996563972282549e-01, 9.996587680623816e-01, 9.996620863112300e-01, + 9.996663465854433e-01, 9.996715407557840e-01, 9.996776579346992e-01, 9.996846844672912e-01, 9.996926039321883e-01, + 9.997013971527825e-01, 9.997110422192316e-01, 9.997215145215756e-01, 9.997327867942462e-01, 9.997448291721677e-01, + 9.997576092585806e-01, 9.997710922046239e-01, 9.997852408006256e-01, 9.998000155789563e-01, 9.998153749282102e-01, + 9.998312752183705e-01, 9.998476709365336e-01, 9.998645148326535e-01, 9.998817580746918e-01, 9.998993504124516e-01, + 9.999172403493102e-01, 9.999353753209660e-01, 9.999537018802587e-01, 9.999721658870584e-01, 9.999907127021610e-01, + 1.000009262768464e+00, 1.000027750736626e+00, 1.000046113687940e+00, 1.000064278821780e+00, 1.000082169071538e+00, + 1.000099702238537e+00, 1.000116790156982e+00, 1.000133337763978e+00, 1.000149242061725e+00, 1.000164390968527e+00, + 1.000178662057694e+00, 1.000191921184823e+00, 1.000204021005123e+00, 1.000214799383556e+00, 1.000224077701589e+00, + 1.000231659065357e+00, 1.000237326420850e+00, 1.000240840582544e+00, 1.000241938182520e+00, 1.000240329547572e+00, + 1.000235696512191e+00, 1.000227690175467e+00, 1.000215928609961e+00, 1.000199994530463e+00, 1.000179432930259e+00, + 1.000153748692032e+00, 1.000122404179984e+00, 1.000084816818973e+00, 1.000040356665695e+00, 9.999883439759534e-01, + 9.999280467710976e-01, 9.998586784056549e-01, 9.997793951371076e-01, 9.996892936976876e-01, 9.995874088670188e-01, + 9.994727110434261e-01, 9.993441038107910e-01, 9.992004214970033e-01, 9.990404267193601e-01, 9.988628079116455e-01, + 9.986661768272946e-01, 9.984490660128014e-01, 9.982099262455740e-01, 9.979471239307242e-01, 9.976589384518300e-01, + 9.973435594715599e-01, 9.969990841792483e-01, 9.966235144840385e-01, 9.962147541541155e-01, 9.957706059048574e-01, + 9.952887684414411e-01, 9.947668334645193e-01, 9.942022826511501e-01, 9.935924846270409e-01, 9.929346919504907e-01, + 9.922260381330554e-01, 9.914635347268980e-01, 9.906440685140006e-01, 9.897643988377397e-01, 9.888211551228012e-01, + 9.878108346347950e-01, 9.867298005362246e-01, 9.855742803004703e-01, 9.843403645500459e-01, 9.830240063894612e-01, + 9.816210213063771e-01, 9.801270877173017e-01, 9.785377482356147e-01, 9.768484117402024e-01, 9.750543563222487e-01, + 9.731507331856758e-01, 9.711325715733536e-01, 9.689947847863860e-01, 9.667321773575633e-01, 9.643394534324848e-01, + 9.618112264029069e-01, 9.591420298267040e-01, 9.563263296575538e-01, 9.533585377951747e-01, 9.502330269539270e-01, + 9.469441468339291e-01, 9.434862415648529e-01, 9.398536683783788e-01, 9.360408174512334e-01, 9.320421328469384e-01, + 9.278521344711611e-01, 9.234654409430395e-01, 9.188767932732427e-01, 9.140810792290244e-01, 9.090733582572249e-01, + 9.038488868282046e-01, 8.984031440571518e-01, 8.927318574541139e-01, 8.868310286504967e-01, 8.806969589476717e-01, + 8.743262745326578e-01, 8.677159512065934e-01, 8.608633384737868e-01, 8.537661828424618e-01, 8.464226501927783e-01, + 8.388313470732423e-01, 8.309913407930509e-01, 8.229021781851953e-01, 8.145639029231079e-01, 8.059770712821837e-01, + 7.971427662465509e-01, 7.880626098708469e-01, 7.787387738164395e-01, 7.691739879913762e-01, 7.593715472332762e-01, + 7.493353159843403e-01, 7.390697309175267e-01, 7.285798014827035e-01, 7.178711083511555e-01, 7.069497997461519e-01, + 6.958225856563154e-01, 6.844967299372567e-01, 6.729800403152869e-01, 6.612808563149986e-01, 6.494080351400781e-01, + 6.373709355438772e-01, 6.251793997330287e-01, 6.128437333537300e-01, 6.003746836162993e-01, 5.877834156192006e-01, + 5.750814869390165e-01, 5.622808205578382e-01, 5.493936762043069e-01, 5.364326201891255e-01, 5.234104938203454e-01, + 5.103403804881693e-01, 4.972355715134865e-01, 4.841095308589323e-01, 4.709758588060189e-01, 4.578482547068641e-01, + 4.447404789243264e-01, 4.316663140799624e-01, 4.186395257351866e-01, 4.056738226373441e-01, 3.927828166690819e-01, + 3.799799826463771e-01, 3.672786181177968e-01, 3.546918033248968e-01, 3.422323614910038e-01, 3.299128196128071e-01, + 3.177453699359932e-01, 3.057418323024091e-01, 2.939136175616680e-01, 2.822716922444745e-01, 2.708265446979701e-01, + 2.595881528848133e-01, 2.485659540472639e-01, 2.377688164349652e-01, 2.272050132902212e-01, 2.168821992771410e-01, + 2.068073895309444e-01, 1.969869414909128e-01, 1.874265396648929e-01, 1.781311834549869e-01, 1.691051781531976e-01, + 1.603521291925451e-01, 1.518749397137918e-01, 1.436758114807520e-01, 1.357562491485994e-01, 1.281170678600890e-01, + 1.207584041146470e-01, 1.136797298253828e-01, 1.068798694497608e-01, 1.003570200514591e-01, 9.410877412434678e-02, + 8.813214498499827e-02, 8.242359451816077e-02, 7.697906304046008e-02, 7.179400103167609e-02, 6.686340247035585e-02, + 6.218183950151154e-02, 5.774349815872721e-02, 5.354221486116098e-02, 4.957151340757950e-02, 4.582464219454362e-02, + 4.229461139394613e-02, 3.897422983601720e-02, 3.585614135733534e-02, 3.293286038897012e-02, 3.019680657726779e-02, + 2.764033824859545e-02, 2.525578454921406e-02, 2.303547611198478e-02, 2.097177412248857e-02, 1.905709767802756e-02, + 1.728394935359176e-02, 1.564493890895436e-02, 1.413280509038132e-02, 1.274043549881785e-02, 1.146088451369467e-02, + 1.028738927756386e-02, 9.213383761543762e-03, 8.232510944970423e-03, 7.338633154694566e-03, 6.525840620123105e-03, + 5.788458309403464e-03, 5.121051120120478e-03, 4.518427504569718e-03, 3.975641615147556e-03, 3.487994059724770e-03, + 3.051031360120983e-03, 2.660544209048234e-03, 2.312564622222088e-03, 2.003362082825875e-03, 1.729438775235064e-03, + 1.487524003938835e-03, 1.274567892006584e-03, 1.087734451306357e-03, 9.243941140548951e-04, 7.821158122256320e-04, + 6.586586879186365e-04, 5.519635140582476e-04, 4.601439007796695e-04, 3.814773586413279e-04, 3.143962853984603e-04, + 2.574789385355991e-04, 2.094404511189233e-04, 1.691239438292752e-04, 1.354917813061114e-04, 1.076170162029800e-04, + 8.467505965565773e-05, 6.593561222250244e-05, 5.075488479887568e-05, 3.856813455801580e-05, 2.888253665201353e-05, + 2.127040823889544e-05, 1.536279740228267e-05, 1.084344570939908e-05, 7.443129506680882e-06, 4.934381529209004e-06, + 3.126590786650604e-06, 1.861474073153740e-06, 1.008902130957542e-06, 4.630128105556161e-07, 1.379047824504878e-07, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_HRA_WINDOW_480_10ms[960] = { + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 9.423411645757145e-08, 6.198383813913816e-07, 1.826038044753334e-06, 4.227415544684874e-06, 8.568221371240009e-06, + 1.590138306691229e-05, 2.767384916372097e-05, 4.582461489197476e-05, 7.289566442148343e-05, 1.121553337189409e-04, + 1.677330226576781e-04, 2.447635817250988e-04, 3.495390594774230e-04, 4.896648355656373e-04, 6.742165007916612e-04, + 9.138932038423809e-04, 1.221162590096684e-03, 1.610391938745493e-03, 2.097959688543948e-03, 2.702341257534836e-03, + 3.444162934209273e-03, 4.346217670272292e-03, 5.433436858058855e-03, 6.732812643305091e-03, 8.273266014983896e-03, + 1.008545682987358e-02, 1.220153306437313e-02, 1.465481792555360e-02, 1.747943497487382e-02, 2.070987309036685e-02, + 2.438049487743156e-02, 2.852499398840518e-02, 3.317580867440409e-02, 3.836350071222914e-02, 4.411611056397528e-02, + 5.045850117560903e-02, 5.741170414223051e-02, 6.499228300404947e-02, 7.321172913556540e-02, 8.207590600577601e-02, + 9.158455748369454e-02, 1.017308953166495e-01, 1.125012799073065e-01, 1.238750070616895e-01, 1.358242114920720e-01, + 1.483138955678087e-01, 1.613020891609740e-01, 1.747401434927874e-01, 1.885731587242474e-01, 2.027405417335493e-01, + 2.171766871750067e-01, 2.318117716158385e-01, 2.465726473968904e-01, 2.613838199586506e-01, 2.761684898079396e-01, + 2.908496381590925e-01, 3.053511336415384e-01, 3.195988363856895e-01, 3.335216753280081e-01, 3.470526747443392e-01, + 3.601299968134419e-01, 3.726979341699064e-01, 3.847073300820699e-01, 3.961165192918680e-01, 4.068917464693262e-01, + 4.170075357150957e-01, 4.264469007050540e-01, 4.352013996719531e-01, 4.432710380854631e-01, 4.506640257151909e-01, + 4.573963985795680e-01, 4.634915197715306e-01, 4.689794761564862e-01, 4.738963903364035e-01, 4.782836689638748e-01, + 4.821872093925473e-01, 4.856565867140006e-01, 4.887442424370954e-01, 4.915046944332492e-01, 4.939937853618382e-01, + 4.962679837116828e-01, 4.983837480011794e-01, 5.003969607669508e-01, 5.023624349677376e-01, 5.043334915837460e-01, + 5.063616037481589e-01, 5.084960999306821e-01, 5.107839166820760e-01, 5.132693903594975e-01, 5.159940771247666e-01, + 5.189965912996581e-01, 5.223124537547313e-01, 5.259739442166247e-01, 5.300099539725758e-01, 5.344458381774531e-01, + 5.393032695777062e-01, 5.446000977350559e-01, 5.503502195833738e-01, 5.565634682679432e-01, 5.632455276465002e-01, + 5.703978795909497e-01, 5.780177903898996e-01, 5.860983412324646e-01, 5.946285060985402e-01, 6.035932785464501e-01, + 6.129738470263359e-01, 6.227478165890419e-01, 6.328894733093686e-01, 6.433700864704220e-01, 6.541582425999274e-01, + 6.652202048172945e-01, 6.765202906248624e-01, 6.880212612236103e-01, 6.996847156078869e-01, 7.114714830467992e-01, + 7.233420080447298e-01, 7.352567224482216e-01, 7.471763999968595e-01, 7.590624892758133e-01, 7.708774216994878e-01, + 7.825848918282421e-01, 7.941501079877761e-01, 8.055400118211323e-01, 8.167234660553659e-01, 8.276714104070468e-01, + 8.383569861788307e-01, 8.487556307051457e-01, 8.588451433758131e-01, 8.686057254837016e-01, 8.780199965830640e-01, + 8.870729903819699e-01, 8.957521333967015e-01, 9.040472096414102e-01, 9.119503144919421e-01, 9.194558005383104e-01, + 9.265602177306744e-01, 9.332622494524668e-01, 9.395626453655078e-01, 9.454641510291475e-01, 9.509714334776073e-01, + 9.560910012334918e-01, 9.608311167251793e-01, 9.652016988316350e-01, 9.692142133449947e-01, 9.728815495300325e-01, + 9.762178816434048e-01, 9.792385151909874e-01, 9.819597187561544e-01, 9.843985433157453e-01, 9.865726319613708e-01, + 9.885000237614154e-01, 9.901989560579394e-01, 9.916876697497727e-01, 9.929842220610799e-01, 9.941063109595989e-01, + 9.950711148231832e-01, 9.958951502269355e-01, 9.965941499123417e-01, 9.971829621771531e-01, 9.976754721515079e-01, + 9.980845447462318e-01, 9.984219884986877e-01, 9.986985391068631e-01, 9.989238611254968e-01, 9.991065660804971e-01, + 9.992542451163898e-01, 9.993735142030505e-01, 9.994700698738658e-01, 9.995487534360048e-01, 9.996136215806155e-01, + 9.996680213292980e-01, 9.997146672907700e-01, 9.997557192777461e-01, 9.997928584573587e-01, 9.998273603841155e-01, + 9.998601634925650e-01, 9.998919319028886e-01, 9.999231117133845e-01, 9.999539803782231e-01, 9.999846913144619e-01, + 1.000015271687402e+00, 1.000045768313827e+00, 1.000076123719886e+00, 1.000106243781657e+00, 1.000136035347070e+00, + 1.000165406619359e+00, 1.000194267530612e+00, 1.000222530102796e+00, 1.000250108793741e+00, 1.000276920825814e+00, + 1.000302886495191e+00, 1.000327929459891e+00, 1.000351977005012e+00, 1.000374960283849e+00, 1.000396814533868e+00, + 1.000417479266803e+00, 1.000436898432418e+00, 1.000455020555724e+00, 1.000471798847772e+00, 1.000487191290310e+00, + 1.000501160694917e+00, 1.000513674737357e+00, 1.000524705968167e+00, 1.000534231800605e+00, 1.000542234477265e+00, + 1.000548701016775e+00, 1.000553623142091e+00, 1.000556997191966e+00, 1.000558824017243e+00, 1.000559108863603e+00, + 1.000557861242456e+00, 1.000555094791586e+00, 1.000550827127188e+00, 1.000545079688822e+00, 1.000537877578802e+00, + 1.000529249397403e+00, 1.000519227075235e+00, 1.000507845704000e+00, 1.000495143366764e+00, 1.000481160968755e+00, + 1.000465942069620e+00, 1.000449532717920e+00, 1.000431981288574e+00, 1.000413338323831e+00, 1.000393656378250e+00, + 1.000372989868060e+00, 1.000351394925194e+00, 1.000328929256167e+00, 1.000305652005906e+00, 1.000281623626542e+00, + 1.000256905751110e+00, 1.000231561072014e+00, 1.000205653224064e+00, 1.000179246671831e+00, 1.000152406601017e+00, + 1.000125198813461e+00, 1.000097689625410e+00, 1.000069945768613e+00, 1.000042034293768e+00, 1.000014022475844e+00, + 9.999859777207831e-01, 9.999579674730398e-01, 9.999300591234549e-01, 9.999023199169207e-01, 9.998748168593201e-01, + 9.998476166232155e-01, 9.998207854517803e-01, 9.997943890604891e-01, 9.997684925361024e-01, 9.997431602325028e-01, + 9.997184556629950e-01, 9.996944413886967e-01, 9.996711789027117e-01, 9.996487285098250e-01, 9.996271492015102e-01, + 9.996064985261154e-01, 9.995868324541498e-01, 9.995682052386838e-01, 9.995506692709443e-01, 9.995342749312822e-01, + 9.995190704357798e-01, 9.995051016788571e-01, 9.994924120723486e-01, 9.994810423816121e-01, 9.994710305593550e-01, + 9.994624115779566e-01, 9.994552172611834e-01, 9.994494761163015e-01, 9.994452131676952e-01, 9.994424497931953e-01, + 9.994412035644367e-01, 9.994414880926250e-01, 9.994433128811957e-01, 9.994466831869019e-01, 9.994515998909221e-01, + 9.994580593816230e-01, 9.994660534506217e-01, 9.994755692038015e-01, 9.994865889889091e-01, 9.994990903413156e-01, + 9.995130459494618e-01, 9.995284236414108e-01, 9.995451863938154e-01, 9.995632923644638e-01, 9.995826949494031e-01, + 9.996033428654485e-01, 9.996251802586674e-01, 9.996481468392096e-01, 9.996721780425870e-01, 9.996972052172600e-01, + 9.997231558380996e-01, 9.997499537450264e-01, 9.997775194058337e-01, 9.998057702019313e-01, 9.998346207354666e-01, + 9.998639831560286e-01, 9.998937675048852e-01, 9.999238820744936e-01, 9.999542337808154e-01, 9.999847285458191e-01, + 1.000015271687393e+00, 1.000045768313818e+00, 1.000076123719878e+00, 1.000106243781648e+00, 1.000136035347061e+00, + 1.000165406619350e+00, 1.000194267530604e+00, 1.000222530102788e+00, 1.000250108793733e+00, 1.000276920825807e+00, + 1.000302886495184e+00, 1.000327929459883e+00, 1.000351977005006e+00, 1.000374960283843e+00, 1.000396814533862e+00, + 1.000417479266798e+00, 1.000436898432413e+00, 1.000455020555719e+00, 1.000471798847767e+00, 1.000487191290306e+00, + 1.000501160694914e+00, 1.000513674737354e+00, 1.000524705968165e+00, 1.000534231800603e+00, 1.000542234477263e+00, + 1.000548701016774e+00, 1.000553623142090e+00, 1.000556997191965e+00, 1.000558824017242e+00, 1.000559108863603e+00, + 1.000557861242456e+00, 1.000555094791587e+00, 1.000550827127188e+00, 1.000545079688823e+00, 1.000537877578803e+00, + 1.000529249397404e+00, 1.000519227075236e+00, 1.000507845704002e+00, 1.000495143366766e+00, 1.000481160968757e+00, + 1.000465942069622e+00, 1.000449532717922e+00, 1.000431981288576e+00, 1.000413338323833e+00, 1.000393656378252e+00, + 1.000372989868062e+00, 1.000351394925196e+00, 1.000328929256169e+00, 1.000305652005908e+00, 1.000281623626544e+00, + 1.000256905751112e+00, 1.000231561072016e+00, 1.000205653224065e+00, 1.000179246671832e+00, 1.000152406601018e+00, + 1.000125198813462e+00, 1.000097689625411e+00, 1.000069945768614e+00, 1.000042034293768e+00, 1.000014022475844e+00, + 9.999859777207829e-01, 9.999579674730393e-01, 9.999300591234543e-01, 9.999023199169199e-01, 9.998748168593190e-01, + 9.998476166232144e-01, 9.998207854517789e-01, 9.997943890604876e-01, 9.997684925361007e-01, 9.997431602325010e-01, + 9.997184556629931e-01, 9.996944413886946e-01, 9.996711789027095e-01, 9.996487285098227e-01, 9.996271492015080e-01, + 9.996064985261129e-01, 9.995868324541474e-01, 9.995682052386815e-01, 9.995506692709419e-01, 9.995342749312801e-01, + 9.995190704357777e-01, 9.995051016788550e-01, 9.994924120723468e-01, 9.994810423816103e-01, 9.994710305593536e-01, + 9.994624115779553e-01, 9.994552172611824e-01, 9.994494761163009e-01, 9.994452131676944e-01, 9.994424497931950e-01, + 9.994412035644368e-01, 9.994414880926255e-01, 9.994433128811966e-01, 9.994466831869030e-01, 9.994515998909239e-01, + 9.994580593816250e-01, 9.994660534506239e-01, 9.994755692038041e-01, 9.994865889889122e-01, 9.994990903413189e-01, + 9.995130459494656e-01, 9.995284236414153e-01, 9.995451863938203e-01, 9.995632923644688e-01, 9.995826949494085e-01, + 9.996033428654543e-01, 9.996251802586735e-01, 9.996481468392161e-01, 9.996721780425940e-01, 9.996972052172670e-01, + 9.997231558381070e-01, 9.997499537450341e-01, 9.997775194058416e-01, 9.998057702019393e-01, 9.998346207354748e-01, + 9.998639831560371e-01, 9.998937675048939e-01, 9.999238820745020e-01, 9.999542337808240e-01, 9.999847285458278e-01, + 1.000015271687402e+00, 1.000045768313827e+00, 1.000076123719886e+00, 1.000106243781657e+00, 1.000136035347070e+00, + 1.000165406619359e+00, 1.000194267530612e+00, 1.000222530102796e+00, 1.000250108793741e+00, 1.000276920825814e+00, + 1.000302886495191e+00, 1.000327929459890e+00, 1.000351977005012e+00, 1.000374960283849e+00, 1.000396814533868e+00, + 1.000417479266803e+00, 1.000436898432418e+00, 1.000455020555724e+00, 1.000471798847772e+00, 1.000487191290310e+00, + 1.000501160694917e+00, 1.000513674737357e+00, 1.000524705968167e+00, 1.000534231800605e+00, 1.000542234477265e+00, + 1.000548701016775e+00, 1.000553623142091e+00, 1.000556997191966e+00, 1.000558824017243e+00, 1.000559108863603e+00, + 1.000557861242456e+00, 1.000555094791586e+00, 1.000550827127188e+00, 1.000545079688822e+00, 1.000537877578802e+00, + 1.000529249397403e+00, 1.000519227075234e+00, 1.000507845704000e+00, 1.000495143366764e+00, 1.000481160968755e+00, + 1.000465942069620e+00, 1.000449532717920e+00, 1.000431981288574e+00, 1.000413338323831e+00, 1.000393656378250e+00, + 1.000372989868060e+00, 1.000351394925194e+00, 1.000328929256167e+00, 1.000305652005906e+00, 1.000281623626542e+00, + 1.000256905751111e+00, 1.000231561072014e+00, 1.000205653224064e+00, 1.000179246671831e+00, 1.000152406601017e+00, + 1.000125198813461e+00, 1.000097689625410e+00, 1.000069945768614e+00, 1.000042034293768e+00, 1.000014022475844e+00, + 9.999859777207832e-01, 9.999579674730399e-01, 9.999300591234550e-01, 9.999023199169208e-01, 9.998748168593202e-01, + 9.998476166232156e-01, 9.998207854517805e-01, 9.997943890604892e-01, 9.997684925361026e-01, 9.997431602325029e-01, + 9.997184556629951e-01, 9.996944413886968e-01, 9.996711789027117e-01, 9.996487285098250e-01, 9.996271492015103e-01, + 9.996064985261155e-01, 9.995868324541498e-01, 9.995682052386839e-01, 9.995506692709443e-01, 9.995342749312823e-01, + 9.995190704357798e-01, 9.995051016788571e-01, 9.994924120723486e-01, 9.994810423816120e-01, 9.994710305593552e-01, + 9.994624115779566e-01, 9.994552172611834e-01, 9.994494761163015e-01, 9.994452131676951e-01, 9.994424497931953e-01, + 9.994412035644367e-01, 9.994414880926250e-01, 9.994433128811958e-01, 9.994466831869019e-01, 9.994515998909221e-01, + 9.994580593816230e-01, 9.994660534506217e-01, 9.994755692038015e-01, 9.994865889889089e-01, 9.994990903413155e-01, + 9.995130459494618e-01, 9.995284236414110e-01, 9.995451863938154e-01, 9.995632923644640e-01, 9.995826949494031e-01, + 9.996033428654485e-01, 9.996251802586674e-01, 9.996481468392096e-01, 9.996721780425870e-01, 9.996972052172600e-01, + 9.997231558380997e-01, 9.997499537450264e-01, 9.997775194058337e-01, 9.998057702019313e-01, 9.998346207354665e-01, + 9.998639831560286e-01, 9.998937675048852e-01, 9.999238820744936e-01, 9.999542337808154e-01, 9.999847285458191e-01, + 1.000015234454879e+00, 1.000045514887559e+00, 1.000075353237462e+00, 1.000104407768116e+00, 1.000132214556229e+00, + 1.000158143563050e+00, 1.000181349852841e+00, 1.000200717764093e+00, 1.000214798354899e+00, 1.000221740822748e+00, + 1.000219218852980e+00, 1.000204353032496e+00, 1.000173630567007e+00, 1.000122823551604e+00, 1.000046906963284e+00, + 9.999399773758973e-01, 9.997951731574873e-01, 9.996045966188434e-01, 9.993592382687311e-01, 9.990489030278769e-01, + 9.986621379953039e-01, 9.981861611823875e-01, 9.976067905662288e-01, 9.969083728962124e-01, 9.960737119427251e-01, + 9.950839963248127e-01, 9.939187277034516e-01, 9.925556509742455e-01, 9.909706891139552e-01, 9.891378864826104e-01, + 9.870293655848442e-01, 9.846153034530920e-01, 9.818639348132027e-01, 9.787415898998961e-01, 9.752127750773143e-01, + 9.712403041791187e-01, 9.667854876397981e-01, 9.618083850218845e-01, 9.562681244917907e-01, 9.501232902622440e-01, + 9.433323761603356e-01, 9.358543004959359e-01, 9.276489745130293e-01, 9.186779141170132e-01, 9.089048824643602e-01, + 8.982965495078461e-01, 8.868231537804969e-01, 8.744591515805539e-01, 8.611838392360764e-01, 8.469819351830896e-01, + 8.318441100567543e-01, 8.157674547284579e-01, 7.987558780821055e-01, 7.808204281831013e-01, 7.619795322485697e-01, + 7.422591523986999e-01, 7.216928555056540e-01, 7.003217965330363e-01, 6.781946155731466e-01, 6.553672493579565e-01, + 6.319026583753357e-01, 6.078704709095413e-01, 5.833465453994711e-01, 5.584124525334641e-01, 5.331548785464441e-01, + 5.076649513306994e-01, 4.820374912962984e-01, 4.563701895024020e-01, 4.307627165039317e-01, 4.053157666856800e-01, + 3.801300446346412e-01, 3.553052023472212e-01, 3.309387387548210e-01, 3.071248760994941e-01, 2.839534309593199e-01, + 2.615087010038701e-01, 2.398683915856861e-01, 2.191026087292818e-01, 1.992729466284019e-01, 1.804316980820018e-01, + 1.626212151220100e-01, 1.458734442426148e-01, 1.302096560997370e-01, 1.156403834405376e-01, 1.021655736434582e-01, + 8.977495404596501e-02, 7.844859976518601e-02, 6.815768558157265e-02, 5.886539624579484e-02, 5.052796378898961e-02, + 4.309579643342800e-02, 3.651466171052548e-02, 3.072688641085486e-02, 2.567253786455677e-02, 2.129055449466347e-02, + 1.751979822585132e-02, 1.430000675209340e-02, 1.157262945800897e-02, 9.281536579910191e-03, 7.373596677207363e-03, + 5.799122432483531e-03, 4.512189056010577e-03, 3.470833055336534e-03, 2.637141819806632e-03, 1.977246386436426e-03, + 1.461230953040205e-03, 1.062973263413438e-03, 7.599299954798238e-04, 5.328808285940163e-04, 3.656440417062249e-04, + 2.447753867250028e-04, 1.592606718286519e-04, 1.002110509628055e-04, 6.056851356108083e-05, 3.482755929907460e-05, + 1.877757338165862e-05, 9.269020516017977e-06, 4.005234147116555e-06, 1.359891615054068e-06, 2.067694412143206e-07, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + +const LC3_FLOAT MDCT_HRA_WINDOW_960_10ms[1920] = { + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 6.663107991278473e-08, 2.237239208214098e-07, 4.875418283123564e-07, 8.996727135884617e-07, 1.511418282137696e-06, + 2.385908181307981e-06, 3.600021534325060e-06, 5.246458929559746e-06, 7.435999429480928e-06, 1.029995277226023e-05, + 1.399281202683861e-05, 1.869510977726803e-05, 2.461647918005920e-05, 3.199891951615131e-05, 4.112026404149671e-05, + 5.229784600131515e-05, 6.589235661010597e-05, 8.231188661821365e-05, 1.020161407958678e-04, 1.255208122795613e-04, + 1.534021012578998e-04, 1.863013599410517e-04, 2.249298431778123e-04, 2.700735414768832e-04, 3.225980705756125e-04, + 3.834535891028970e-04, 4.536797133272969e-04, 5.344103954917697e-04, 6.268787298389575e-04, 7.324216481524320e-04, + 8.524844645071808e-04, 9.886252269645022e-04, 1.142518832190136e-03, 1.315960857447457e-03, 1.510871063146860e-03, + 1.729296518144556e-03, 1.973414299303950e-03, 2.245533716484770e-03, 2.548098014131402e-03, 2.883685501012940e-03, + 3.255010060441685e-03, 3.664920994479873e-03, 4.116402157249738e-03, 4.612570334499312e-03, 5.156672829053223e-03, + 5.752084214696966e-03, 6.402302224405338e-03, 7.110942742626702e-03, 7.881733875566514e-03, 8.718509078064964e-03, + 9.625199320718177e-03, 1.060582428632988e-02, 1.166448259057781e-02, 1.280534102790626e-02, 1.403262285008227e-02, + 1.535059509154052e-02, 1.676355496255211e-02, 1.827581533833950e-02, 1.989168937947954e-02, 2.161547432623578e-02, + 2.345143451678970e-02, 2.540378368664082e-02, 2.747666661366220e-02, 2.967414018037076e-02, 3.200015393184128e-02, + 3.445853021429810e-02, 3.705294398569962e-02, 3.978690239552551e-02, 4.266372423642605e-02, 4.568651937534197e-02, + 4.885816827608890e-02, 5.218130172917755e-02, 5.565828090775238e-02, 5.929117787093344e-02, 6.308175663749782e-02, + 6.703145495369379e-02, 7.114136687902073e-02, 7.541222631299167e-02, 7.984439158421140e-02, 8.443783122053150e-02, + 8.919211101557852e-02, 9.410638250258946e-02, 9.917937294123873e-02, 1.044093769170137e-01, 1.097942496457128e-01, + 1.153314020678296e-01, 1.210177978089837e-01, 1.268499520732061e-01, 1.328239325258333e-01, 1.389353622120686e-01, + 1.451794245459895e-01, 1.515508703929904e-01, 1.580440272564225e-01, 1.646528105666080e-01, 1.713707370575420e-01, + 1.781909402035578e-01, 1.851061876750831e-01, 1.921089007594860e-01, 1.991911756799545e-01, 2.063448067325118e-01, + 2.135613111487021e-01, 2.208319555793100e-01, 2.281477840827779e-01, 2.354996474908733e-01, 2.428782340136974e-01, + 2.502741009364257e-01, 2.576777072513037e-01, 2.650794470604564e-01, 2.724696835780986e-01, 2.798387835547953e-01, + 2.871771519416024e-01, 2.944752666082350e-01, 3.017237129269402e-01, 3.089132180325088e-01, 3.160346845688595e-01, + 3.230792237339257e-01, 3.300381874371329e-01, 3.369031993875939e-01, 3.436661849362722e-01, 3.503193995017128e-01, + 3.568555192112148e-01, 3.632675601002685e-01, 3.695489358061075e-01, 3.756935099828519e-01, 3.816956001322418e-01, + 3.875499962002574e-01, 3.932519766094684e-01, 3.987973219750102e-01, 4.041823264714043e-01, 4.094038068104935e-01, + 4.144591088030795e-01, 4.193461114921915e-01, 4.240632288619702e-01, 4.286094091423471e-01, 4.329841317457969e-01, + 4.371874018882834e-01, 4.412197429619175e-01, 4.450821867417134e-01, 4.487762615229755e-01, 4.523039782991779e-01, + 4.556678151025579e-01, 4.588706996409412e-01, 4.619159903744011e-01, 4.648074561841559e-01, 4.675492547935124e-01, + 4.701459101065887e-01, 4.726022886349306e-01, 4.749235751849055e-01, 4.771152479798792e-01, 4.791830533906173e-01, + 4.811329804451050e-01, 4.829712352850382e-01, 4.847042157306455e-01, 4.863384861083030e-01, 4.878807524866530e-01, + 4.893378384567565e-01, 4.907166615802867e-01, 4.920242106170628e-01, 4.932675236294833e-01, 4.944536670468351e-01, + 4.955897157572258e-01, 4.966827342792363e-01, 4.977397590495528e-01, 4.987677818470457e-01, 4.997737343582849e-01, + 5.007644738745453e-01, 5.017467700962179e-01, 5.027272930074345e-01, 5.037126017718407e-01, 5.047091345900308e-01, + 5.057231994503223e-01, 5.067609656974670e-01, 5.078284563386384e-01, 5.089315410026908e-01, 5.100759294672467e-01, + 5.112671656686335e-01, 5.125106221119896e-01, 5.138114946028988e-01, 5.151747972275419e-01, 5.166053575154047e-01, + 5.181078117268841e-01, 5.196866002174090e-01, 5.213459628397580e-01, 5.230899343568223e-01, 5.249223398478975e-01, + 5.268467901024086e-01, 5.288666770055838e-01, 5.309851689306879e-01, 5.332052061618728e-01, 5.355294963802417e-01, + 5.379605102532377e-01, 5.405004771737987e-01, 5.431513812007881e-01, 5.459149572559273e-01, 5.487926876348163e-01, + 5.517857988905945e-01, 5.548952591484511e-01, 5.581217759075547e-01, 5.614657943841375e-01, 5.649274964455743e-01, + 5.685068001804389e-01, 5.722033601438381e-01, 5.760165683110121e-01, 5.799455557653441e-01, 5.839891951397580e-01, + 5.881461038230944e-01, 5.924146479356704e-01, 5.967929470708762e-01, 6.012788797925822e-01, 6.058700898713546e-01, + 6.105639932361040e-01, 6.153577856119751e-01, 6.202484508099709e-01, 6.252327696291247e-01, 6.303073293279928e-01, + 6.354685336188206e-01, 6.407126131349797e-01, 6.460356363201389e-01, 6.514335206861067e-01, 6.569020443853303e-01, + 6.624368580436263e-01, 6.680334967987880e-01, 6.736873924912369e-01, 6.793938859538112e-01, 6.851482393490396e-01, + 6.909456485038137e-01, 6.967812551932001e-01, 7.026501593271524e-01, 7.085474309960862e-01, 7.144681223336159e-01, + 7.204072791571976e-01, 7.263599523499238e-01, 7.323212089493037e-01, 7.382861429114533e-01, 7.442498855217515e-01, + 7.502076154256456e-01, 7.561545682559222e-01, 7.620860458353852e-01, 7.679974249364871e-01, 7.738841655820752e-01, + 7.797418188739772e-01, 7.855660343387494e-01, 7.913525667824293e-01, 7.970972826487233e-01, 8.027961658775241e-01, + 8.084453232632074e-01, 8.140409893145931e-01, 8.195795306209357e-01, 8.250574497306905e-01, 8.304713885521608e-01, + 8.358181312874381e-01, 8.410946069132281e-01, 8.462978912242891e-01, 8.514252084571686e-01, 8.564739325137894e-01, + 8.614415878060635e-01, 8.663258497442113e-01, 8.711245448926651e-01, 8.758356508184248e-01, 8.804572956574126e-01, + 8.849877574247438e-01, 8.894254630948657e-01, 8.937689874771898e-01, 8.980170519121489e-01, 9.021685228115252e-01, + 9.062224100654551e-01, 9.101778653366538e-01, 9.140341802602550e-01, 9.177907845650995e-01, 9.214472441295430e-01, + 9.250032589817625e-01, 9.284586612513364e-01, 9.318134130755062e-01, 9.350676044601444e-01, 9.382214510920930e-01, + 9.412752920963378e-01, 9.442295877284584e-01, 9.470849169901138e-01, 9.498419751530142e-01, 9.525015711749794e-01, + 9.550646249903935e-01, 9.575321646566392e-01, 9.599053233380030e-01, 9.621853361091064e-01, 9.643735365611265e-01, + 9.664713531959190e-01, 9.684803055955929e-01, 9.704020003580881e-01, 9.722381267927611e-01, 9.739904523738324e-01, + 9.756608179536774e-01, 9.772511327422573e-01, 9.787633690633392e-01, 9.801995569024828e-01, 9.815617782659093e-01, + 9.828521613732500e-01, 9.840728747106564e-01, 9.852261209738314e-01, 9.863141309330354e-01, 9.873391572540936e-01, + 9.883034683107520e-01, 9.892093420244598e-01, 9.900590597677280e-01, 9.908549003667192e-01, 9.915991342376211e-01, + 9.922940176897662e-01, 9.929417874263897e-01, 9.935446552714569e-01, 9.941048031482164e-01, 9.946243783321176e-01, + 9.951054889975415e-01, 9.955502000745265e-01, 9.959605294283782e-01, 9.963384443718103e-01, 9.966858585161255e-01, + 9.970046289649677e-01, 9.972965538513794e-01, 9.975633702163375e-01, 9.978067522246161e-01, 9.980283097117545e-01, + 9.982295870540839e-01, 9.984120623522111e-01, 9.985771469170162e-01, 9.987261850461071e-01, 9.988604540777616e-01, + 9.989811647086401e-01, 9.990894615609515e-01, 9.991864239842999e-01, 9.992730670770456e-01, 9.993503429117423e-01, + 9.994191419489804e-01, 9.994802946237851e-01, 9.995345730885834e-01, 9.995826930966561e-01, 9.996253160099111e-01, + 9.996630509147824e-01, 9.996964568300586e-01, 9.997260449905023e-01, 9.997522811902100e-01, 9.997755881698448e-01, + 9.997963480321130e-01, 9.998149046701891e-01, 9.998315661942099e-01, 9.998466073415005e-01, 9.998602718567984e-01, + 9.998727748295070e-01, 9.998843049758280e-01, 9.998950268545727e-01, 9.999050830064863e-01, 9.999145960080379e-01, + 9.999236704318017e-01, 9.999323947068164e-01, 9.999408428735685e-01, 9.999490762295546e-01, 9.999571448627051e-01, + 9.999650890712967e-01, 9.999729406705412e-01, 9.999807241886484e-01, 9.999884579652744e-01, 9.999961552850937e-01, + 1.000003818641721e+00, 1.000011453001950e+00, 1.000019078522643e+00, 1.000026689281996e+00, 1.000034279373492e+00, + 1.000041842912049e+00, 1.000049374040126e+00, 1.000056866933785e+00, 1.000064315808680e+00, 1.000071714925990e+00, + 1.000079058598250e+00, 1.000086341195099e+00, 1.000093557148926e+00, 1.000100700960395e+00, 1.000107767203853e+00, + 1.000114750532603e+00, 1.000121645684037e+00, 1.000128447484626e+00, 1.000135150854742e+00, 1.000141750813332e+00, + 1.000148242482408e+00, 1.000154621091371e+00, 1.000160881981147e+00, 1.000167020608141e+00, 1.000173032547996e+00, + 1.000178913499161e+00, 1.000184659286256e+00, 1.000190265863238e+00, 1.000195729316362e+00, 1.000201045866939e+00, + 1.000206211873884e+00, 1.000211223836059e+00, 1.000216078394407e+00, 1.000220772333881e+00, 1.000225302585160e+00, + 1.000229666226172e+00, 1.000233860483401e+00, 1.000237882733002e+00, 1.000241730501714e+00, 1.000245401467578e+00, + 1.000248893460465e+00, 1.000252204462412e+00, 1.000255332607784e+00, 1.000258276183243e+00, 1.000261033627556e+00, + 1.000263603531226e+00, 1.000265984635963e+00, 1.000268175833992e+00, 1.000270176167217e+00, 1.000271984826231e+00, + 1.000273601149186e+00, 1.000275024620537e+00, 1.000276254869646e+00, 1.000277291669272e+00, 1.000278134933949e+00, + 1.000278784718248e+00, 1.000279241214938e+00, 1.000279504753058e+00, 1.000279575795894e+00, 1.000279454938873e+00, + 1.000279142907386e+00, 1.000278640554535e+00, 1.000277948858822e+00, 1.000277068921773e+00, 1.000276001965517e+00, + 1.000274749330316e+00, 1.000273312472054e+00, 1.000271692959694e+00, 1.000269892472703e+00, 1.000267912798451e+00, + 1.000265755829598e+00, 1.000263423561457e+00, 1.000260918089352e+00, 1.000258241605975e+00, 1.000255396398729e+00, + 1.000252384847089e+00, 1.000249209419954e+00, 1.000245872673023e+00, 1.000242377246174e+00, 1.000238725860863e+00, + 1.000234921317548e+00, 1.000230966493118e+00, 1.000226864338370e+00, 1.000222617875491e+00, 1.000218230195586e+00, + 1.000213704456221e+00, 1.000209043879012e+00, 1.000204251747240e+00, 1.000199331403501e+00, 1.000194286247397e+00, + 1.000189119733258e+00, 1.000183835367906e+00, 1.000178436708454e+00, 1.000172927360150e+00, 1.000167310974248e+00, + 1.000161591245930e+00, 1.000155771912258e+00, 1.000149856750174e+00, 1.000143849574523e+00, 1.000137754236130e+00, + 1.000131574619904e+00, 1.000125314642979e+00, 1.000118978252895e+00, 1.000112569425805e+00, 1.000106092164726e+00, + 1.000099550497809e+00, 1.000092948476653e+00, 1.000086290174636e+00, 1.000079579685283e+00, 1.000072821120651e+00, + 1.000066018609750e+00, 1.000059176296973e+00, 1.000052298340563e+00, 1.000045388911081e+00, 1.000038452189909e+00, + 1.000031492367753e+00, 1.000024513643172e+00, 1.000017520221111e+00, 1.000010516311443e+00, 1.000003506127529e+00, + 9.999964938847642e-01, 9.999894837991481e-01, 9.999824800858419e-01, 9.999754869577321e-01, 9.999685086239848e-01, + 9.999615492886049e-01, 9.999546131489783e-01, 9.999477043944101e-01, 9.999408272046536e-01, 9.999339857484195e-01, + 9.999271841818784e-01, 9.999204266471391e-01, 9.999137172707154e-01, 9.999070601619628e-01, 9.999004594115060e-01, + 9.998939190896278e-01, 9.998874432446441e-01, 9.998810359012452e-01, 9.998747010588128e-01, 9.998684426896991e-01, + 9.998622647374855e-01, 9.998561711152009e-01, 9.998501657035072e-01, 9.998442523488513e-01, 9.998384348615825e-01, + 9.998327170140316e-01, 9.998271025385516e-01, 9.998215951255243e-01, 9.998161984213253e-01, 9.998109160262525e-01, + 9.998057514924167e-01, 9.998007083215891e-01, 9.997957899630165e-01, 9.997909998111978e-01, 9.997863412036158e-01, + 9.997818174184411e-01, 9.997774316721972e-01, 9.997731871173844e-01, 9.997690868400847e-01, 9.997651338575159e-01, + 9.997613311155714e-01, 9.997576814863203e-01, 9.997541877654884e-01, 9.997508526699078e-01, 9.997476788349500e-01, + 9.997446688119369e-01, 9.997418250655351e-01, 9.997391499711387e-01, 9.997366458122413e-01, 9.997343147777986e-01, + 9.997321589595916e-01, 9.997301803495896e-01, 9.997283808373202e-01, 9.997267622072430e-01, 9.997253261361446e-01, + 9.997240741905490e-01, 9.997230078241506e-01, 9.997221283752786e-01, 9.997214370643954e-01, 9.997209349916318e-01, + 9.997206231343719e-01, 9.997205023448855e-01, 9.997205733480192e-01, 9.997208367389500e-01, 9.997212929810099e-01, + 9.997219424035818e-01, 9.997227852000825e-01, 9.997238214260301e-01, 9.997250509972079e-01, 9.997264736879267e-01, + 9.997280891294001e-01, 9.997298968082279e-01, 9.997318960650045e-01, 9.997340860930513e-01, 9.997364659372833e-01, + 9.997390344932165e-01, 9.997417905061193e-01, 9.997447325703145e-01, 9.997478591286405e-01, 9.997511684720751e-01, + 9.997546587395272e-01, 9.997583279177997e-01, 9.997621738417346e-01, 9.997661941945379e-01, 9.997703865082921e-01, + 9.997747481646607e-01, 9.997792763957842e-01, 9.997839682853786e-01, 9.997888207700281e-01, 9.997938306406862e-01, + 9.997989945443773e-01, 9.998043089861064e-01, 9.998097703309746e-01, 9.998153748065003e-01, 9.998211185051531e-01, + 9.998269973870870e-01, 9.998330072830846e-01, 9.998391438977015e-01, 9.998454028126147e-01, 9.998517794901678e-01, + 9.998582692771129e-01, 9.998648674085433e-01, 9.998715690120116e-01, 9.998783691118356e-01, 9.998852626335712e-01, + 9.998922444086656e-01, 9.998993091792668e-01, 9.999064516031954e-01, 9.999136662590592e-01, 9.999209476515181e-01, + 9.999282902166716e-01, 9.999356883275767e-01, 9.999431362998797e-01, 9.999506283975492e-01, 9.999581588387069e-01, + 9.999657218015428e-01, 9.999733114303027e-01, 9.999809218413399e-01, 9.999885471292198e-01, 9.999961813728609e-01, + 1.000003818641712e+00, 1.000011453001941e+00, 1.000019078522634e+00, 1.000026689281987e+00, 1.000034279373484e+00, + 1.000041842912040e+00, 1.000049374040118e+00, 1.000056866933776e+00, 1.000064315808672e+00, 1.000071714925982e+00, + 1.000079058598242e+00, 1.000086341195091e+00, 1.000093557148918e+00, 1.000100700960387e+00, 1.000107767203845e+00, + 1.000114750532595e+00, 1.000121645684029e+00, 1.000128447484618e+00, 1.000135150854734e+00, 1.000141750813325e+00, + 1.000148242482401e+00, 1.000154621091364e+00, 1.000160881981140e+00, 1.000167020608134e+00, 1.000173032547989e+00, + 1.000178913499155e+00, 1.000184659286250e+00, 1.000190265863232e+00, 1.000195729316356e+00, 1.000201045866933e+00, + 1.000206211873878e+00, 1.000211223836054e+00, 1.000216078394402e+00, 1.000220772333876e+00, 1.000225302585155e+00, + 1.000229666226167e+00, 1.000233860483396e+00, 1.000237882732998e+00, 1.000241730501710e+00, 1.000245401467574e+00, + 1.000248893460461e+00, 1.000252204462409e+00, 1.000255332607781e+00, 1.000258276183240e+00, 1.000261033627553e+00, + 1.000263603531224e+00, 1.000265984635960e+00, 1.000268175833990e+00, 1.000270176167215e+00, 1.000271984826229e+00, + 1.000273601149185e+00, 1.000275024620536e+00, 1.000276254869644e+00, 1.000277291669271e+00, 1.000278134933948e+00, + 1.000278784718247e+00, 1.000279241214938e+00, 1.000279504753058e+00, 1.000279575795894e+00, 1.000279454938873e+00, + 1.000279142907386e+00, 1.000278640554536e+00, 1.000277948858822e+00, 1.000277068921773e+00, 1.000276001965517e+00, + 1.000274749330316e+00, 1.000273312472055e+00, 1.000271692959695e+00, 1.000269892472704e+00, 1.000267912798453e+00, + 1.000265755829599e+00, 1.000263423561458e+00, 1.000260918089354e+00, 1.000258241605976e+00, 1.000255396398731e+00, + 1.000252384847091e+00, 1.000249209419956e+00, 1.000245872673025e+00, 1.000242377246176e+00, 1.000238725860866e+00, + 1.000234921317550e+00, 1.000230966493120e+00, 1.000226864338372e+00, 1.000222617875493e+00, 1.000218230195589e+00, + 1.000213704456224e+00, 1.000209043879015e+00, 1.000204251747242e+00, 1.000199331403503e+00, 1.000194286247399e+00, + 1.000189119733260e+00, 1.000183835367908e+00, 1.000178436708457e+00, 1.000172927360152e+00, 1.000167310974250e+00, + 1.000161591245932e+00, 1.000155771912260e+00, 1.000149856750176e+00, 1.000143849574525e+00, 1.000137754236132e+00, + 1.000131574619906e+00, 1.000125314642981e+00, 1.000118978252897e+00, 1.000112569425807e+00, 1.000106092164727e+00, + 1.000099550497811e+00, 1.000092948476655e+00, 1.000086290174638e+00, 1.000079579685284e+00, 1.000072821120652e+00, + 1.000066018609751e+00, 1.000059176296974e+00, 1.000052298340564e+00, 1.000045388911082e+00, 1.000038452189910e+00, + 1.000031492367754e+00, 1.000024513643172e+00, 1.000017520221111e+00, 1.000010516311444e+00, 1.000003506127529e+00, + 9.999964938847641e-01, 9.999894837991480e-01, 9.999824800858417e-01, 9.999754869577318e-01, 9.999685086239841e-01, + 9.999615492886044e-01, 9.999546131489776e-01, 9.999477043944092e-01, 9.999408272046527e-01, 9.999339857484185e-01, + 9.999271841818773e-01, 9.999204266471379e-01, 9.999137172707140e-01, 9.999070601619615e-01, 9.999004594115044e-01, + 9.998939190896263e-01, 9.998874432446425e-01, 9.998810359012436e-01, 9.998747010588109e-01, 9.998684426896972e-01, + 9.998622647374836e-01, 9.998561711151988e-01, 9.998501657035050e-01, 9.998442523488493e-01, 9.998384348615804e-01, + 9.998327170140294e-01, 9.998271025385493e-01, 9.998215951255222e-01, 9.998161984213230e-01, 9.998109160262503e-01, + 9.998057514924145e-01, 9.998007083215869e-01, 9.997957899630143e-01, 9.997909998111957e-01, 9.997863412036135e-01, + 9.997818174184390e-01, 9.997774316721950e-01, 9.997731871173822e-01, 9.997690868400825e-01, 9.997651338575136e-01, + 9.997613311155693e-01, 9.997576814863183e-01, 9.997541877654863e-01, 9.997508526699059e-01, 9.997476788349481e-01, + 9.997446688119350e-01, 9.997418250655334e-01, 9.997391499711371e-01, 9.997366458122399e-01, 9.997343147777973e-01, + 9.997321589595902e-01, 9.997301803495884e-01, 9.997283808373191e-01, 9.997267622072419e-01, 9.997253261361438e-01, + 9.997240741905483e-01, 9.997230078241500e-01, 9.997221283752783e-01, 9.997214370643952e-01, 9.997209349916318e-01, + 9.997206231343722e-01, 9.997205023448859e-01, 9.997205733480196e-01, 9.997208367389504e-01, 9.997212929810105e-01, + 9.997219424035826e-01, 9.997227852000836e-01, 9.997238214260314e-01, 9.997250509972092e-01, 9.997264736879284e-01, + 9.997280891294021e-01, 9.997298968082300e-01, 9.997318960650067e-01, 9.997340860930538e-01, 9.997364659372859e-01, + 9.997390344932195e-01, 9.997417905061224e-01, 9.997447325703176e-01, 9.997478591286439e-01, 9.997511684720787e-01, + 9.997546587395311e-01, 9.997583279178037e-01, 9.997621738417388e-01, 9.997661941945423e-01, 9.997703865082966e-01, + 9.997747481646656e-01, 9.997792763957892e-01, 9.997839682853837e-01, 9.997888207700335e-01, 9.997938306406916e-01, + 9.997989945443829e-01, 9.998043089861125e-01, 9.998097703309806e-01, 9.998153748065066e-01, 9.998211185051595e-01, + 9.998269973870937e-01, 9.998330072830913e-01, 9.998391438977084e-01, 9.998454028126217e-01, 9.998517794901752e-01, + 9.998582692771203e-01, 9.998648674085506e-01, 9.998715690120191e-01, 9.998783691118432e-01, 9.998852626335790e-01, + 9.998922444086736e-01, 9.998993091792749e-01, 9.999064516032034e-01, 9.999136662590675e-01, 9.999209476515264e-01, + 9.999282902166798e-01, 9.999356883275852e-01, 9.999431362998885e-01, 9.999506283975580e-01, 9.999581588387155e-01, + 9.999657218015514e-01, 9.999733114303114e-01, 9.999809218413486e-01, 9.999885471292286e-01, 9.999961813728698e-01, + 1.000003818641721e+00, 1.000011453001950e+00, 1.000019078522643e+00, 1.000026689281996e+00, 1.000034279373492e+00, + 1.000041842912049e+00, 1.000049374040126e+00, 1.000056866933785e+00, 1.000064315808680e+00, 1.000071714925990e+00, + 1.000079058598250e+00, 1.000086341195099e+00, 1.000093557148926e+00, 1.000100700960395e+00, 1.000107767203853e+00, + 1.000114750532602e+00, 1.000121645684037e+00, 1.000128447484626e+00, 1.000135150854742e+00, 1.000141750813332e+00, + 1.000148242482408e+00, 1.000154621091371e+00, 1.000160881981147e+00, 1.000167020608141e+00, 1.000173032547996e+00, + 1.000178913499161e+00, 1.000184659286256e+00, 1.000190265863238e+00, 1.000195729316362e+00, 1.000201045866939e+00, + 1.000206211873884e+00, 1.000211223836059e+00, 1.000216078394407e+00, 1.000220772333881e+00, 1.000225302585160e+00, + 1.000229666226172e+00, 1.000233860483401e+00, 1.000237882733002e+00, 1.000241730501714e+00, 1.000245401467578e+00, + 1.000248893460465e+00, 1.000252204462412e+00, 1.000255332607784e+00, 1.000258276183243e+00, 1.000261033627556e+00, + 1.000263603531226e+00, 1.000265984635963e+00, 1.000268175833992e+00, 1.000270176167217e+00, 1.000271984826231e+00, + 1.000273601149187e+00, 1.000275024620537e+00, 1.000276254869646e+00, 1.000277291669272e+00, 1.000278134933949e+00, + 1.000278784718248e+00, 1.000279241214938e+00, 1.000279504753058e+00, 1.000279575795894e+00, 1.000279454938873e+00, + 1.000279142907386e+00, 1.000278640554535e+00, 1.000277948858822e+00, 1.000277068921773e+00, 1.000276001965517e+00, + 1.000274749330316e+00, 1.000273312472054e+00, 1.000271692959694e+00, 1.000269892472703e+00, 1.000267912798451e+00, + 1.000265755829598e+00, 1.000263423561457e+00, 1.000260918089352e+00, 1.000258241605975e+00, 1.000255396398729e+00, + 1.000252384847089e+00, 1.000249209419954e+00, 1.000245872673023e+00, 1.000242377246174e+00, 1.000238725860863e+00, + 1.000234921317548e+00, 1.000230966493118e+00, 1.000226864338370e+00, 1.000222617875491e+00, 1.000218230195586e+00, + 1.000213704456221e+00, 1.000209043879013e+00, 1.000204251747240e+00, 1.000199331403501e+00, 1.000194286247397e+00, + 1.000189119733258e+00, 1.000183835367906e+00, 1.000178436708454e+00, 1.000172927360150e+00, 1.000167310974248e+00, + 1.000161591245930e+00, 1.000155771912258e+00, 1.000149856750174e+00, 1.000143849574523e+00, 1.000137754236130e+00, + 1.000131574619904e+00, 1.000125314642979e+00, 1.000118978252895e+00, 1.000112569425805e+00, 1.000106092164726e+00, + 1.000099550497809e+00, 1.000092948476653e+00, 1.000086290174636e+00, 1.000079579685283e+00, 1.000072821120651e+00, + 1.000066018609750e+00, 1.000059176296973e+00, 1.000052298340563e+00, 1.000045388911081e+00, 1.000038452189909e+00, + 1.000031492367753e+00, 1.000024513643172e+00, 1.000017520221111e+00, 1.000010516311443e+00, 1.000003506127529e+00, + 9.999964938847643e-01, 9.999894837991482e-01, 9.999824800858421e-01, 9.999754869577322e-01, 9.999685086239848e-01, + 9.999615492886050e-01, 9.999546131489783e-01, 9.999477043944101e-01, 9.999408272046536e-01, 9.999339857484195e-01, + 9.999271841818784e-01, 9.999204266471392e-01, 9.999137172707154e-01, 9.999070601619630e-01, 9.999004594115060e-01, + 9.998939190896279e-01, 9.998874432446442e-01, 9.998810359012452e-01, 9.998747010588128e-01, 9.998684426896991e-01, + 9.998622647374856e-01, 9.998561711152009e-01, 9.998501657035073e-01, 9.998442523488514e-01, 9.998384348615826e-01, + 9.998327170140316e-01, 9.998271025385517e-01, 9.998215951255245e-01, 9.998161984213253e-01, 9.998109160262525e-01, + 9.998057514924167e-01, 9.998007083215890e-01, 9.997957899630168e-01, 9.997909998111979e-01, 9.997863412036158e-01, + 9.997818174184412e-01, 9.997774316721972e-01, 9.997731871173845e-01, 9.997690868400848e-01, 9.997651338575160e-01, + 9.997613311155714e-01, 9.997576814863203e-01, 9.997541877654884e-01, 9.997508526699078e-01, 9.997476788349500e-01, + 9.997446688119369e-01, 9.997418250655351e-01, 9.997391499711387e-01, 9.997366458122413e-01, 9.997343147777986e-01, + 9.997321589595916e-01, 9.997301803495896e-01, 9.997283808373202e-01, 9.997267622072429e-01, 9.997253261361446e-01, + 9.997240741905490e-01, 9.997230078241506e-01, 9.997221283752786e-01, 9.997214370643954e-01, 9.997209349916318e-01, + 9.997206231343720e-01, 9.997205023448855e-01, 9.997205733480192e-01, 9.997208367389500e-01, 9.997212929810099e-01, + 9.997219424035817e-01, 9.997227852000825e-01, 9.997238214260302e-01, 9.997250509972079e-01, 9.997264736879269e-01, + 9.997280891294001e-01, 9.997298968082279e-01, 9.997318960650045e-01, 9.997340860930511e-01, 9.997364659372833e-01, + 9.997390344932165e-01, 9.997417905061193e-01, 9.997447325703143e-01, 9.997478591286405e-01, 9.997511684720751e-01, + 9.997546587395272e-01, 9.997583279177997e-01, 9.997621738417345e-01, 9.997661941945379e-01, 9.997703865082921e-01, + 9.997747481646605e-01, 9.997792763957843e-01, 9.997839682853786e-01, 9.997888207700281e-01, 9.997938306406862e-01, + 9.997989945443773e-01, 9.998043089861064e-01, 9.998097703309746e-01, 9.998153748065003e-01, 9.998211185051530e-01, + 9.998269973870870e-01, 9.998330072830846e-01, 9.998391438977015e-01, 9.998454028126147e-01, 9.998517794901678e-01, + 9.998582692771129e-01, 9.998648674085431e-01, 9.998715690120116e-01, 9.998783691118356e-01, 9.998852626335712e-01, + 9.998922444086656e-01, 9.998993091792668e-01, 9.999064516031954e-01, 9.999136662590593e-01, 9.999209476515181e-01, + 9.999282902166716e-01, 9.999356883275767e-01, 9.999431362998797e-01, 9.999506283975492e-01, 9.999581588387069e-01, + 9.999657218015426e-01, 9.999733114303028e-01, 9.999809218413399e-01, 9.999885471292198e-01, 9.999961813728609e-01, + 1.000003792553732e+00, 1.000011363835885e+00, 1.000018880862106e+00, 1.000026318501453e+00, 1.000033646597102e+00, + 1.000040828844329e+00, 1.000047821703262e+00, 1.000054573213544e+00, 1.000061021697840e+00, 1.000067094351168e+00, + 1.000072705715621e+00, 1.000077756041457e+00, 1.000082129536869e+00, 1.000085692509860e+00, 1.000088291406840e+00, + 1.000089750753633e+00, 1.000089871005573e+00, 1.000088426314299e+00, 1.000085162219593e+00, 1.000079793275302e+00, + 1.000072000618805e+00, 1.000061429493851e+00, 1.000047686736686e+00, 1.000030338235356e+00, 1.000008906371822e+00, + 9.999828674561138e-01, 9.999516491611377e-01, 9.999146279660260e-01, 9.998711266149775e-01, 9.998204115975446e-01, + 9.997616906551822e-01, 9.996941103176716e-01, 9.996167534717882e-01, 9.995286369633262e-01, 9.994287092323502e-01, + 9.993158479803570e-01, 9.991888578669340e-01, 9.990464682325365e-01, 9.988873308431691e-01, 9.987100176521666e-01, + 9.985130185738464e-01, 9.982947392636853e-01, 9.980534988998219e-01, 9.977875279611558e-01, 9.974949659981255e-01, + 9.971738593934303e-01, 9.968221591115168e-01, 9.964377184376065e-01, 9.960182907094022e-01, 9.955615270473709e-01, + 9.950649740926601e-01, 9.945260717652322e-01, 9.939421510586981e-01, 9.933104318925129e-01, 9.926280210466711e-01, + 9.918919102086680e-01, 9.910989741672799e-01, 9.902459691925082e-01, 9.893295316457497e-01, 9.883461768687914e-01, + 9.872922984044433e-01, 9.861641676054160e-01, 9.849579336912377e-01, 9.836696243155244e-01, 9.822951467075759e-01, + 9.808302894530008e-01, 9.792707249777252e-01, 9.776120127982821e-01, 9.758496035985741e-01, 9.739788441893990e-01, + 9.719949834018297e-01, 9.698931789591444e-01, 9.676685053644012e-01, 9.653159628320954e-01, 9.628304872826687e-01, + 9.602069614081798e-01, 9.574402268063275e-01, 9.545250971684157e-01, 9.514563724950412e-01, 9.482288543014010e-01, + 9.448373617624480e-01, 9.412767487368542e-01, 9.375419215980740e-01, 9.336278577909594e-01, 9.295296250234834e-01, + 9.252424009953755e-01, 9.207614935589523e-01, 9.160823612022024e-01, 9.112006337403594e-01, 9.061121330997502e-01, + 9.008128940766279e-01, 8.952991849539681e-01, 8.895675278607562e-01, 8.836147187609806e-01, 8.774378469633509e-01, + 8.710343140474714e-01, 8.644018521077256e-01, 8.575385412223282e-01, 8.504428260617042e-01, 8.431135315574496e-01, + 8.355498775604459e-01, 8.277514924241404e-01, 8.197184254564199e-01, 8.114511581907922e-01, 8.029506144346715e-01, + 7.942181690593274e-01, 7.852556555024425e-01, 7.760653719601955e-01, 7.666500862512726e-01, 7.570130393401874e-01, + 7.471579475117688e-01, 7.370890031926083e-01, 7.268108744186758e-01, 7.163287029512231e-01, 7.056481010455187e-01, + 6.947751468789124e-01, 6.837163786462801e-01, 6.724787873320510e-01, 6.610698081688499e-01, 6.494973107933384e-01, + 6.377695881101478e-01, 6.258953438749761e-01, 6.138836790079482e-01, 6.017440766483936e-01, 5.894863859622419e-01, + 5.771208047134243e-01, 5.646578606110257e-01, 5.521083914445795e-01, 5.394835240208723e-01, 5.267946519170417e-01, + 5.140534120666679e-01, 5.012716601980810e-01, 4.884614451472596e-01, 4.756349820716255e-01, 4.628046245957236e-01, + 4.499828359253513e-01, 4.371821589731387e-01, 4.244151855459629e-01, 4.116945246528834e-01, 3.990327700015137e-01, + 3.864424667608565e-01, 3.739360776795802e-01, 3.615259486603844e-01, 3.492242739034092e-01, 3.370430607443994e-01, + 3.249940943263768e-01, 3.130889022566745e-01, 3.013387194140940e-01, 2.897544530833894e-01, 2.783466486059465e-01, + 2.671254557460968e-01, 2.561005959816459e-01, 2.452813309345670e-01, 2.346764321630724e-01, 2.242941525391207e-01, + 2.141421994355449e-01, 2.042277099441413e-01, 1.945572283400477e-01, 1.851366859983997e-01, 1.759713839565222e-01, + 1.670659782987828e-01, 1.584244685217862e-01, 1.500501890149949e-01, 1.419458037663698e-01, 1.341133043745716e-01, + 1.265540114190599e-01, 1.192685792075560e-01, 1.122570038873269e-01, 1.055186348731866e-01, 9.905218951159138e-02, + 9.285577086735504e-02, 8.692688848791834e-02, 8.126248197036480e-02, 7.585894712900819e-02, 7.071216453687493e-02, + 6.581753019316379e-02, 6.116998805112477e-02, 5.676406412698673e-02, 5.259390190074066e-02, 4.865329871379729e-02, + 4.493574286675733e-02, 4.143445112264064e-02, 3.814240632671975e-02, 3.505239486333388e-02, 3.215704368240290e-02, + 2.944885664345253e-02, 2.692024994241165e-02, 2.456358640583462e-02, 2.237120845811709e-02, 2.033546958929542e-02, + 1.844876417374586e-02, 1.670355551314538e-02, 1.509240200007160e-02, 1.360798132128038e-02, 1.224311264172586e-02, + 1.099077673153155e-02, 9.844134018179273e-03, 8.796540564986736e-03, 7.841561994366898e-03, 6.972985390308479e-03, + 6.184829228925801e-03, 5.471351398766137e-03, 4.827055383826915e-03, 4.246694691940794e-03, 3.725275619368065e-03, + 3.258058449144477e-03, 2.840557186031939e-03, 2.468537934882437e-03, 2.138016031933214e-03, 1.845252040089026e-03, + 1.586746719704406e-03, 1.359235085846040e-03, 1.159679661583578e-03, 9.852630346169412e-04, 8.333798215882749e-04, + 7.016281408336979e-04, 5.878006901877478e-04, 4.898755218427234e-04, 4.060066012630820e-04, 3.345142318353532e-04, + 2.738754213664553e-04, 2.227142607936653e-04, 1.797923795997266e-04, 1.439995364945199e-04, 1.143443979841680e-04, + 8.994555154915584e-05, 7.002279434068894e-05, 5.388873262066439e-05, 4.094072165278127e-05, 3.065317043363458e-05, + 2.257023056170620e-05, 1.629888370183569e-05, 1.150243752713366e-05, 7.894435705240934e-06, 5.232983386684600e-06, + 3.315485520548709e-06, 1.973790197100917e-06, 1.069718110365652e-06, 4.909053882102472e-07, 1.462097501755241e-07, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, + 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00, 0.000000000000000e+00}; + + + +const LC3_FLOAT* MDCT_WINS_10ms[2][6] = { + {MDCT_WINDOW_80, MDCT_WINDOW_160, MDCT_WINDOW_240, MDCT_WINDOW_320, MDCT_WINDOW_480, NULL}, + {NULL, NULL, NULL, NULL, MDCT_HRA_WINDOW_480_10ms, MDCT_HRA_WINDOW_960_10ms}}; +const LC3_INT MDCT_la_zeroes[6] = {30, 60, 90, 120, 180, 360}; + + +const LC3_FLOAT* MDCT_WINS_2_5ms[2][6] = { + {MDCT_WINDOW_80_2_5ms, MDCT_WINDOW_160_2_5ms, MDCT_WINDOW_240_2_5ms, MDCT_WINDOW_320_2_5ms, MDCT_WINDOW_480_2_5ms, + NULL}, + {NULL, NULL, NULL, NULL, MDCT_HRA_WINDOW_480_2_5ms, MDCT_HRA_WINDOW_960_2_5ms}}; +const LC3_INT MDCT_la_zeroes_2_5ms[6] = {0, 0, 0, 0, 0, 0}; + +const LC3_FLOAT* MDCT_WINS_5ms[2][6] = { + {MDCT_WINDOW_80_5ms, MDCT_WINDOW_160_5ms, MDCT_WINDOW_240_5ms, MDCT_WINDOW_320_5ms, MDCT_WINDOW_480_5ms, NULL}, + {NULL, NULL, NULL, NULL, MDCT_HRA_WINDOW_480_5ms, MDCT_HRA_WINDOW_960_5ms}}; +const LC3_INT MDCT_la_zeroes_5ms[6] = {10, 20, 30, 40, 60, 120}; + +const LC3_INT MDCT_WINDOWS_LENGTHS_10ms[6] = {160, 320, 480, 640, 960, 1920}; /* Last 960 dummy */ + +const LC3_INT MDCT_WINDOWS_LENGTHS_2_5ms[6] = {40, 80, 120, 160, 240, 480}; + + +const LC3_INT MDCT_WINDOWS_LENGTHS_5ms[6] = {80, 160, 240, 320, 480, 960}; + +/* Per band energy */ +const LC3_INT ACC_COEFF_PER_BAND_8[65] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, + 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 80}; + +const LC3_INT ACC_COEFF_PER_BAND_16[65] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 32, 34, 36, 38, + 40, 42, 44, 46, 48, 50, 52, 55, 58, 61, 64, 67, 70, 73, 76, 80, 84, + 88, 92, 96, 101, 106, 111, 116, 121, 127, 133, 139, 146, 153, 160}; + +const LC3_INT ACC_COEFF_PER_BAND_24[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 46, 49, 52, 55, 58, 61, 64, 68, 72, 76, + 80, 85, 90, 95, 100, 106, 112, 118, 125, 132, 139, 147, 155, 164, 173, 183, 193, 204, 215, 227, 240}; + +const LC3_INT ACC_COEFF_PER_BAND_32[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, + 24, 26, 28, 30, 32, 34, 36, 38, 41, 44, 47, 50, 53, 56, 60, 64, 68, 72, 76, 81, 86, 91, + 97, 103, 109, 116, 123, 131, 139, 148, 157, 166, 176, 187, 199, 211, 224, 238, 252, 268, 284, 302, 320}; + +const LC3_INT ACC_COEFF_PER_BAND_48[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, + 26, 28, 30, 32, 34, 36, 39, 42, 45, 48, 51, 55, 59, 63, 67, 71, 76, 81, 86, 92, 98, 105, + 112, 119, 127, 135, 144, 154, 164, 175, 186, 198, 211, 225, 240, 256, 273, 291, 310, 330, 352, 375, 400}; + +const LC3_INT ACC_COEFF_PER_BAND_8_2_5ms[21] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; + +const LC3_INT ACC_COEFF_PER_BAND_16_2_5ms[36] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 32, 34, 36, 38, 40}; + +const LC3_INT ACC_COEFF_PER_BAND_24_2_5ms[41] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, 47, 50, 53, 56, 60}; + +const LC3_INT ACC_COEFF_PER_BAND_32_2_5ms[44] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 30, 32, 34, + 36, 38, 40, 43, 46, 49, 52, 55, 59, 63, 67, 71, 75, 80}; + +const LC3_INT ACC_COEFF_PER_BAND_48_2_5ms[45] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 23, 25, 27, 29, 31, 33, 35, 37, + 40, 43, 46, 49, 52, 56, 60, 64, 68, 72, 77, 82, 87, 93, 100}; + +const LC3_INT ACC_COEFF_PER_BAND_48_2_5ms_HR[46] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 40, 43, 46, + 49, 53, 57, 61, 65, 69, 74, 79, 85, 91, 97, 104, 112, 120}; +const LC3_INT ACC_COEFF_PER_BAND_96_2_5ms_HR[50] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 30, 32, + 35, 38, 41, 45, 49, 53, 57, 62, 67, 73, 79, 85, 92, 100, 108, 117, 127, 137, 149, 161, 174, 189, 204, 221, 240}; + + +const LC3_INT ACC_COEFF_PER_BAND_8_5ms[40] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40}; + +const LC3_INT ACC_COEFF_PER_BAND_16_5ms[51] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 34, 36, + 38, 40, 42, 44, 46, 48, 50, 52, 54, 57, 60, 63, 66, 69, 72, 76, 80}; + +const LC3_INT ACC_COEFF_PER_BAND_24_5ms[53] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, + 30, 32, 34, 36, 38, 40, 42, 44, 47, 50, 53, 56, 59, 62, 65, 69, 73, 77, 81, 86, 91, 96, 101, 107, 113, 120}; + +const LC3_INT ACC_COEFF_PER_BAND_32_5ms[55] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 26, 28, 30, 32, + 34, 36, 38, 40, 42, 45, 48, 51, 54, 57, 61, 65, 69, 73, + 78, 83, 88, 93, 99, 105, 112, 119, 126, 134, 142, 151, 160}; +const LC3_INT ACC_COEFF_PER_BAND_48_5ms_HR[56] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 21, 23, 25, 27, 29, 31, 33, 35, + 38, 41, 44, 47, 50, 54, 58, 62, 66, 71, 76, 81, 87, 93, + 100, 107, 114, 122, 131, 140, 149, 160, 171, 183, 196, 209, 224, 240}; +const LC3_INT ACC_COEFF_PER_BAND_48_5ms[56] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 23, 25, 27, 29, 31, 33, + 35, 37, 40, 43, 46, 49, 52, 55, 59, 63, 67, 72, 77, 82, + 87, 93, 99, 105, 112, 120, 128, 136, 145, 155, 165, 176, 187, 200}; +const LC3_INT ACC_COEFF_PER_BAND_96_5ms_HR[59] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, + 23, 25, 27, 29, 31, 34, 37, 40, 44, 48, 52, 56, 61, 66, 71, 77, 83, 90, 98, 106, + 115, 124, 135, 146, 158, 171, 185, 200, 217, 235, 254, 275, 298, 323, 349, 378, 409, 443, 480}; + + +const LC3_INT ACC_COEFF_PER_BAND_48_HR[65] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 21, 23, 25, + 27, 29, 31, 33, 36, 39, 42, 45, 48, 51, 55, 59, 63, 67, 72, 77, 83, 89, 95, 101, 108, 116, + 124, 133, 142, 152, 163, 174, 187, 200, 214, 229, 244, 262, 280, 299, 320, 343, 367, 392, 419, 449, 480}; + +const LC3_INT ACC_COEFF_PER_BAND_96_HR[65] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 33, 36, 39, 42, 46, 50, 54, 59, 64, 69, 75, 82, 89, 96, 104, 113, 122, 132, 143, 155, 168, 181, 196, 213, 230, 249, 270, 292, 316, 342, 371, 401, 434, 470, 509, 551, 596, 646, 699, 757, 819, 887, 960}; + +const LC3_INT* ACC_COEFF_PER_BAND_HR[6] = {NULL, NULL, NULL, NULL, ACC_COEFF_PER_BAND_48_HR, ACC_COEFF_PER_BAND_96_HR}; + +const LC3_INT* ACC_COEFF_PER_BAND[6] = {ACC_COEFF_PER_BAND_8, ACC_COEFF_PER_BAND_16, ACC_COEFF_PER_BAND_24, + ACC_COEFF_PER_BAND_32, ACC_COEFF_PER_BAND_48, NULL}; + +const LC3_INT* ACC_COEFF_PER_BAND_2_5ms_HR[6] = { + NULL, NULL, NULL, NULL, ACC_COEFF_PER_BAND_48_2_5ms_HR, ACC_COEFF_PER_BAND_96_2_5ms_HR}; + +const LC3_INT* ACC_COEFF_PER_BAND_2_5ms[5] = {ACC_COEFF_PER_BAND_8_2_5ms, ACC_COEFF_PER_BAND_16_2_5ms, + ACC_COEFF_PER_BAND_24_2_5ms, ACC_COEFF_PER_BAND_32_2_5ms, + ACC_COEFF_PER_BAND_48_2_5ms}; + + +const LC3_INT* ACC_COEFF_PER_BAND_5ms_HR[6] = { + NULL, NULL, NULL, NULL, ACC_COEFF_PER_BAND_48_5ms_HR, ACC_COEFF_PER_BAND_96_5ms_HR}; + +const LC3_INT* ACC_COEFF_PER_BAND_5ms[5] = {ACC_COEFF_PER_BAND_8_5ms, ACC_COEFF_PER_BAND_16_5ms, + ACC_COEFF_PER_BAND_24_5ms, ACC_COEFF_PER_BAND_32_5ms, + ACC_COEFF_PER_BAND_48_5ms}; + +/* Near Nyquist detector */ +const LC3_INT NN_thresh = 30; + + +const LC3_INT32 xavg_N_grp[5] = { 4, 5, 6, 7, 8 }; + + +const LC3_INT32 gwlpr[MAX_LGW+1] = { 1, 3*QUOT_LPR_LTR, 5*QUOT_LPR_LTR, 9*QUOT_LPR_LTR, 17*QUOT_LPR_LTR, 33*QUOT_LPR_LTR, 49*QUOT_LPR_LTR, 65*QUOT_LPR_LTR, 81*QUOT_LPR_LTR, 97*QUOT_LPR_LTR}; + + +const LC3_FLOAT PhECU_whr16ms_NB[128]={ +8.000000000000002e-02, 8.393536376804722e-02, 9.567411990702857e-02, 1.150154150448081e-01, 1.416283142591582e-01, +1.750574634660318e-01, 2.147308806541882e-01, 2.599697426559885e-01, 3.099999999999999e-01, 3.639656211120587e-01, +4.209432392528405e-01, 4.799579515787762e-01, 5.400000000000000e-01, 6.000420484212237e-01, 6.590567607471596e-01, +7.160343788879413e-01, 7.699999999999999e-01, 8.200302573440115e-01, 8.652691193458119e-01, 9.049425365339682e-01, +9.383716857408418e-01, 9.649845849551919e-01, 9.843258800929715e-01, 9.960646362319528e-01, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +9.960646362319528e-01, 9.843258800929715e-01, 9.649845849551919e-01, 9.383716857408418e-01, 9.049425365339682e-01, +8.652691193458119e-01, 8.200302573440115e-01, 7.699999999999999e-01, 7.160343788879413e-01, 6.590567607471596e-01, +6.000420484212237e-01, 5.400000000000000e-01, 4.799579515787762e-01, 4.209432392528405e-01, 3.639656211120587e-01, +3.099999999999999e-01, 2.599697426559885e-01, 2.147308806541882e-01, 1.750574634660318e-01, 1.416283142591582e-01, +1.150154150448081e-01, 9.567411990702857e-02, 8.393536376804722e-02 +}; +const LC3_FLOAT PhECU_whr16ms_WB[256]={ +8.000000000000002e-02, 8.098489531024239e-02, 8.393536376804722e-02, 8.883877101451404e-02, 9.567411990702857e-02, +1.044121404322514e-01, 1.150154150448081e-01, 1.274385388949634e-01, 1.416283142591582e-01, 1.575239783408292e-01, +1.750574634660318e-01, 1.941536885596704e-01, 2.147308806541882e-01, 2.367009250539683e-01, 2.599697426559885e-01, +2.844376928109830e-01, 3.099999999999999e-01, 3.365472024992595e-01, 3.639656211120587e-01, 3.921378459605457e-01, +4.209432392528405e-01, 4.502584518725810e-01, 4.799579515787762e-01, 5.099145605541342e-01, 5.400000000000000e-01, +5.700854394458659e-01, 6.000420484212237e-01, 6.297415481274190e-01, 6.590567607471596e-01, 6.878621540394543e-01, +7.160343788879413e-01, 7.434527975007406e-01, 7.699999999999999e-01, 7.955623071890170e-01, 8.200302573440115e-01, +8.432990749460317e-01, 8.652691193458119e-01, 8.858463114403297e-01, 9.049425365339682e-01, 9.224760216591710e-01, +9.383716857408418e-01, 9.525614611050366e-01, 9.649845849551919e-01, 9.755878595677486e-01, 9.843258800929715e-01, +9.911612289854861e-01, 9.960646362319528e-01, 9.990151046897577e-01, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 9.990151046897577e-01, +9.960646362319528e-01, 9.911612289854861e-01, 9.843258800929715e-01, 9.755878595677486e-01, 9.649845849551919e-01, +9.525614611050366e-01, 9.383716857408418e-01, 9.224760216591710e-01, 9.049425365339682e-01, 8.858463114403297e-01, +8.652691193458119e-01, 8.432990749460317e-01, 8.200302573440115e-01, 7.955623071890170e-01, 7.699999999999999e-01, +7.434527975007406e-01, 7.160343788879413e-01, 6.878621540394543e-01, 6.590567607471596e-01, 6.297415481274190e-01, +6.000420484212237e-01, 5.700854394458659e-01, 5.400000000000000e-01, 5.099145605541342e-01, 4.799579515787762e-01, +4.502584518725810e-01, 4.209432392528405e-01, 3.921378459605457e-01, 3.639656211120587e-01, 3.365472024992595e-01, +3.099999999999999e-01, 2.844376928109830e-01, 2.599697426559885e-01, 2.367009250539683e-01, 2.147308806541882e-01, +1.941536885596704e-01, 1.750574634660318e-01, 1.575239783408292e-01, 1.416283142591582e-01, 1.274385388949634e-01, +1.150154150448081e-01, 1.044121404322514e-01, 9.567411990702857e-02, 8.883877101451404e-02, 8.393536376804722e-02, +8.098489531024239e-02 +}; +const LC3_FLOAT PhECU_whr16ms_SSWB[384]={ +8.000000000000002e-02, 8.043781807234540e-02, 8.175043887779704e-02, 8.393536376804722e-02, 8.698843361438435e-02, +9.090383672483066e-02, 9.567411990702857e-02, 1.012902026558156e-01, 1.077413944384821e-01, 1.150154150448081e-01, +1.230984179631410e-01, 1.319750167380180e-01, 1.416283142591582e-01, 1.520399349260726e-01, 1.631900596270638e-01, +1.750574634660318e-01, 1.876195561652702e-01, 2.008524250673430e-01, 2.147308806541882e-01, 2.292285044967963e-01, +2.443176995441919e-01, 2.599697426559885e-01, 2.761548392785189e-01, 2.928421801604610e-01, 3.099999999999999e-01, +3.275956379118843e-01, 3.455955995992783e-01, 3.639656211120587e-01, 3.826707340701924e-01, 4.016753322280344e-01, +4.209432392528405e-01, 4.404377775884727e-01, 4.601218382732121e-01, 4.799579515787762e-01, 4.999083583360772e-01, +5.199350818119455e-01, 5.400000000000000e-01, 5.600649181880546e-01, 5.800916416639228e-01, 6.000420484212237e-01, +6.198781617267880e-01, 6.395622224115274e-01, 6.590567607471596e-01, 6.783246677719657e-01, 6.973292659298076e-01, +7.160343788879413e-01, 7.344044004007217e-01, 7.524043620881156e-01, 7.699999999999999e-01, 7.871578198395390e-01, +8.038451607214812e-01, 8.200302573440115e-01, 8.356823004558082e-01, 8.507714955032037e-01, 8.652691193458119e-01, +8.791475749326572e-01, 8.923804438347298e-01, 9.049425365339682e-01, 9.168099403729364e-01, 9.279600650739274e-01, +9.383716857408418e-01, 9.480249832619820e-01, 9.569015820368590e-01, 9.649845849551919e-01, 9.722586055615179e-01, +9.787097973441844e-01, 9.843258800929715e-01, 9.890961632751694e-01, 9.930115663856157e-01, 9.960646362319528e-01, +9.982495611222031e-01, 9.995621819276547e-01, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 9.995621819276547e-01, 9.982495611222031e-01, +9.960646362319528e-01, 9.930115663856157e-01, 9.890961632751694e-01, 9.843258800929715e-01, 9.787097973441844e-01, +9.722586055615179e-01, 9.649845849551919e-01, 9.569015820368590e-01, 9.480249832619820e-01, 9.383716857408418e-01, +9.279600650739274e-01, 9.168099403729364e-01, 9.049425365339682e-01, 8.923804438347298e-01, 8.791475749326572e-01, +8.652691193458119e-01, 8.507714955032037e-01, 8.356823004558082e-01, 8.200302573440115e-01, 8.038451607214812e-01, +7.871578198395390e-01, 7.699999999999999e-01, 7.524043620881156e-01, 7.344044004007217e-01, 7.160343788879413e-01, +6.973292659298076e-01, 6.783246677719657e-01, 6.590567607471596e-01, 6.395622224115274e-01, 6.198781617267880e-01, +6.000420484212237e-01, 5.800916416639228e-01, 5.600649181880546e-01, 5.400000000000000e-01, 5.199350818119455e-01, +4.999083583360772e-01, 4.799579515787762e-01, 4.601218382732121e-01, 4.404377775884727e-01, 4.209432392528405e-01, +4.016753322280344e-01, 3.826707340701924e-01, 3.639656211120587e-01, 3.455955995992783e-01, 3.275956379118843e-01, +3.099999999999999e-01, 2.928421801604610e-01, 2.761548392785189e-01, 2.599697426559885e-01, 2.443176995441919e-01, +2.292285044967963e-01, 2.147308806541882e-01, 2.008524250673430e-01, 1.876195561652702e-01, 1.750574634660318e-01, +1.631900596270638e-01, 1.520399349260726e-01, 1.416283142591582e-01, 1.319750167380180e-01, 1.230984179631410e-01, +1.150154150448081e-01, 1.077413944384821e-01, 1.012902026558156e-01, 9.567411990702857e-02, 9.090383672483066e-02, +8.698843361438435e-02, 8.393536376804722e-02, 8.175043887779704e-02, 8.043781807234540e-02 +}; +const LC3_FLOAT PhECU_whr16ms_SWB[512]={ +8.000000000000002e-02, 8.024628976087178e-02, 8.098489531024239e-02, 8.221502573078943e-02, 8.393536376804722e-02, +8.614406724095569e-02, 8.883877101451404e-02, 9.201658953242653e-02, 9.567411990702857e-02, 9.980744556318394e-02, +1.044121404322514e-01, 1.094832736916302e-01, 1.150154150448081e-01, 1.210026405362591e-01, 1.274385388949634e-01, +1.343162183997567e-01, 1.416283142591582e-01, 1.493669964977737e-01, 1.575239783408292e-01, 1.660905250878570e-01, +1.750574634660318e-01, 1.844151914531410e-01, 1.941536885596704e-01, 2.042625265589956e-01, 2.147308806541882e-01, +2.255475410694793e-01, 2.367009250539683e-01, 2.481790892847231e-01, 2.599697426559885e-01, 2.720602594408110e-01, +2.844376928109830e-01, 2.970887887008307e-01, 3.099999999999999e-01, 3.231575010600410e-01, 3.365472024992595e-01, +3.501547662899784e-01, 3.639656211120587e-01, 3.779649779562326e-01, 3.921378459605457e-01, 4.064690484629473e-01, +4.209432392528405e-01, 4.355449190041883e-01, 4.502584518725810e-01, 4.650680822384892e-01, 4.799579515787762e-01, +4.949121154484021e-01, 5.099145605541342e-01, 5.249492219019830e-01, 5.400000000000000e-01, 5.550507780980171e-01, +5.700854394458659e-01, 5.850878845515979e-01, 6.000420484212237e-01, 6.149319177615109e-01, 6.297415481274190e-01, +6.444550809958116e-01, 6.590567607471596e-01, 6.735309515370527e-01, 6.878621540394543e-01, 7.020350220437674e-01, +7.160343788879413e-01, 7.298452337100215e-01, 7.434527975007406e-01, 7.568424989399589e-01, 7.699999999999999e-01, +7.829112112991693e-01, 7.955623071890170e-01, 8.079397405591890e-01, 8.200302573440115e-01, 8.318209107152770e-01, +8.432990749460317e-01, 8.544524589305209e-01, 8.652691193458119e-01, 8.757374734410044e-01, 8.858463114403297e-01, +8.955848085468591e-01, 9.049425365339682e-01, 9.139094749121430e-01, 9.224760216591710e-01, 9.306330035022263e-01, +9.383716857408418e-01, 9.456837816002432e-01, 9.525614611050366e-01, 9.589973594637410e-01, 9.649845849551919e-01, +9.705167263083698e-01, 9.755878595677486e-01, 9.801925544368162e-01, 9.843258800929715e-01, 9.879834104675735e-01, +9.911612289854861e-01, 9.938559327590444e-01, 9.960646362319528e-01, 9.977849742692106e-01, 9.990151046897577e-01, +9.997537102391283e-01, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 9.997537102391283e-01, 9.990151046897577e-01, 9.977849742692106e-01, +9.960646362319528e-01, 9.938559327590444e-01, 9.911612289854861e-01, 9.879834104675735e-01, 9.843258800929715e-01, +9.801925544368162e-01, 9.755878595677486e-01, 9.705167263083698e-01, 9.649845849551919e-01, 9.589973594637410e-01, +9.525614611050366e-01, 9.456837816002432e-01, 9.383716857408418e-01, 9.306330035022263e-01, 9.224760216591710e-01, +9.139094749121430e-01, 9.049425365339682e-01, 8.955848085468591e-01, 8.858463114403297e-01, 8.757374734410044e-01, +8.652691193458119e-01, 8.544524589305209e-01, 8.432990749460317e-01, 8.318209107152770e-01, 8.200302573440115e-01, +8.079397405591890e-01, 7.955623071890170e-01, 7.829112112991693e-01, 7.699999999999999e-01, 7.568424989399589e-01, +7.434527975007406e-01, 7.298452337100215e-01, 7.160343788879413e-01, 7.020350220437674e-01, 6.878621540394543e-01, +6.735309515370527e-01, 6.590567607471596e-01, 6.444550809958116e-01, 6.297415481274190e-01, 6.149319177615109e-01, +6.000420484212237e-01, 5.850878845515979e-01, 5.700854394458659e-01, 5.550507780980171e-01, 5.400000000000000e-01, +5.249492219019830e-01, 5.099145605541342e-01, 4.949121154484021e-01, 4.799579515787762e-01, 4.650680822384892e-01, +4.502584518725810e-01, 4.355449190041883e-01, 4.209432392528405e-01, 4.064690484629473e-01, 3.921378459605457e-01, +3.779649779562326e-01, 3.639656211120587e-01, 3.501547662899784e-01, 3.365472024992595e-01, 3.231575010600410e-01, +3.099999999999999e-01, 2.970887887008307e-01, 2.844376928109830e-01, 2.720602594408110e-01, 2.599697426559885e-01, +2.481790892847231e-01, 2.367009250539683e-01, 2.255475410694793e-01, 2.147308806541882e-01, 2.042625265589956e-01, +1.941536885596704e-01, 1.844151914531410e-01, 1.750574634660318e-01, 1.660905250878570e-01, 1.575239783408292e-01, +1.493669964977737e-01, 1.416283142591582e-01, 1.343162183997567e-01, 1.274385388949634e-01, 1.210026405362591e-01, +1.150154150448081e-01, 1.094832736916302e-01, 1.044121404322514e-01, 9.980744556318394e-02, 9.567411990702857e-02, +9.201658953242653e-02, 8.883877101451404e-02, 8.614406724095569e-02, 8.393536376804722e-02, 8.221502573078943e-02, +8.098489531024239e-02, 8.024628976087178e-02 +}; +const LC3_FLOAT PhECU_whr16ms_FB[768]={ +8.000000000000002e-02, 8.010946754324183e-02, 8.043781807234540e-02, 8.098489531024239e-02, 8.175043887779704e-02, +8.273408441773300e-02, 8.393536376804722e-02, 8.535370518483010e-02, 8.698843361438435e-02, 8.883877101451404e-02, +9.090383672483066e-02, 9.318264788589975e-02, 9.567411990702857e-02, 9.837706698247278e-02, 1.012902026558156e-01, +1.044121404322514e-01, 1.077413944384821e-01, 1.112763801299127e-01, 1.150154150448081e-01, 1.189567196050543e-01, +1.230984179631410e-01, 1.274385388949634e-01, 1.319750167380180e-01, 1.367056923745465e-01, 1.416283142591582e-01, +1.467405394904446e-01, 1.520399349260726e-01, 1.575239783408292e-01, 1.631900596270638e-01, 1.690354820369581e-01, +1.750574634660318e-01, 1.812531377772744e-01, 1.876195561652702e-01, 1.941536885596704e-01, 2.008524250673430e-01, +2.077125774525124e-01, 2.147308806541882e-01, 2.219039943401561e-01, 2.292285044967963e-01, 2.367009250539683e-01, +2.443176995441919e-01, 2.520752027953329e-01, 2.599697426559885e-01, 2.679975617527521e-01, 2.761548392785189e-01, +2.844376928109830e-01, 2.928421801604610e-01, 3.013643012461601e-01, 3.099999999999999e-01, 3.187451662970817e-01, +3.275956379118843e-01, 3.365472024992595e-01, 3.455955995992783e-01, 3.547365226649809e-01, 3.639656211120587e-01, +3.732785023894972e-01, 3.826707340701924e-01, 3.921378459605457e-01, 4.016753322280344e-01, 4.112786535457436e-01, +4.209432392528405e-01, 4.306644895299604e-01, 4.404377775884727e-01, 4.502584518725810e-01, 4.601218382732121e-01, +4.700232423526383e-01, 4.799579515787762e-01, 4.899212375680964e-01, 4.999083583360772e-01, 5.099145605541342e-01, +5.199350818119455e-01, 5.299651528841020e-01, 5.400000000000000e-01, 5.500348471158981e-01, 5.600649181880546e-01, +5.700854394458659e-01, 5.800916416639228e-01, 5.900787624319037e-01, 6.000420484212237e-01, 6.099767576473617e-01, +6.198781617267880e-01, 6.297415481274190e-01, 6.395622224115274e-01, 6.493355104700396e-01, 6.590567607471596e-01, +6.687213464542564e-01, 6.783246677719657e-01, 6.878621540394543e-01, 6.973292659298076e-01, 7.067214976105027e-01, +7.160343788879413e-01, 7.252634773350191e-01, 7.344044004007217e-01, 7.434527975007406e-01, 7.524043620881156e-01, +7.612548337029182e-01, 7.699999999999999e-01, 7.786356987538400e-01, 7.871578198395390e-01, 7.955623071890170e-01, +8.038451607214812e-01, 8.120024382472478e-01, 8.200302573440115e-01, 8.279247972046673e-01, 8.356823004558082e-01, +8.432990749460317e-01, 8.507714955032037e-01, 8.580960056598439e-01, 8.652691193458119e-01, 8.722874225474876e-01, +8.791475749326572e-01, 8.858463114403297e-01, 8.923804438347298e-01, 8.987468622227257e-01, 9.049425365339682e-01, +9.109645179630421e-01, 9.168099403729364e-01, 9.224760216591710e-01, 9.279600650739274e-01, 9.332594605095554e-01, +9.383716857408418e-01, 9.432943076254536e-01, 9.480249832619820e-01, 9.525614611050366e-01, 9.569015820368590e-01, +9.610432803949458e-01, 9.649845849551919e-01, 9.687236198700873e-01, 9.722586055615179e-01, 9.755878595677486e-01, +9.787097973441844e-01, 9.816229330175272e-01, 9.843258800929715e-01, 9.868173521141004e-01, 9.890961632751694e-01, +9.911612289854861e-01, 9.930115663856157e-01, 9.946462948151700e-01, 9.960646362319528e-01, 9.972659155822671e-01, +9.982495611222031e-01, 9.990151046897577e-01, 9.995621819276547e-01, 9.998905324567582e-01, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, 1.000000000000000e+00, +9.998905324567582e-01, 9.995621819276547e-01, 9.990151046897577e-01, 9.982495611222031e-01, 9.972659155822671e-01, +9.960646362319528e-01, 9.946462948151700e-01, 9.930115663856157e-01, 9.911612289854861e-01, 9.890961632751694e-01, +9.868173521141004e-01, 9.843258800929715e-01, 9.816229330175272e-01, 9.787097973441844e-01, 9.755878595677486e-01, +9.722586055615179e-01, 9.687236198700873e-01, 9.649845849551919e-01, 9.610432803949458e-01, 9.569015820368590e-01, +9.525614611050366e-01, 9.480249832619820e-01, 9.432943076254536e-01, 9.383716857408418e-01, 9.332594605095554e-01, +9.279600650739274e-01, 9.224760216591710e-01, 9.168099403729364e-01, 9.109645179630421e-01, 9.049425365339682e-01, +8.987468622227257e-01, 8.923804438347298e-01, 8.858463114403297e-01, 8.791475749326572e-01, 8.722874225474876e-01, +8.652691193458119e-01, 8.580960056598439e-01, 8.507714955032037e-01, 8.432990749460317e-01, 8.356823004558082e-01, +8.279247972046673e-01, 8.200302573440115e-01, 8.120024382472478e-01, 8.038451607214812e-01, 7.955623071890170e-01, +7.871578198395390e-01, 7.786356987538400e-01, 7.699999999999999e-01, 7.612548337029182e-01, 7.524043620881156e-01, +7.434527975007406e-01, 7.344044004007217e-01, 7.252634773350191e-01, 7.160343788879413e-01, 7.067214976105027e-01, +6.973292659298076e-01, 6.878621540394543e-01, 6.783246677719657e-01, 6.687213464542564e-01, 6.590567607471596e-01, +6.493355104700396e-01, 6.395622224115274e-01, 6.297415481274190e-01, 6.198781617267880e-01, 6.099767576473617e-01, +6.000420484212237e-01, 5.900787624319037e-01, 5.800916416639228e-01, 5.700854394458659e-01, 5.600649181880546e-01, +5.500348471158981e-01, 5.400000000000000e-01, 5.299651528841020e-01, 5.199350818119455e-01, 5.099145605541342e-01, +4.999083583360772e-01, 4.899212375680964e-01, 4.799579515787762e-01, 4.700232423526383e-01, 4.601218382732121e-01, +4.502584518725810e-01, 4.404377775884727e-01, 4.306644895299604e-01, 4.209432392528405e-01, 4.112786535457436e-01, +4.016753322280344e-01, 3.921378459605457e-01, 3.826707340701924e-01, 3.732785023894972e-01, 3.639656211120587e-01, +3.547365226649809e-01, 3.455955995992783e-01, 3.365472024992595e-01, 3.275956379118843e-01, 3.187451662970817e-01, +3.099999999999999e-01, 3.013643012461601e-01, 2.928421801604610e-01, 2.844376928109830e-01, 2.761548392785189e-01, +2.679975617527521e-01, 2.599697426559885e-01, 2.520752027953329e-01, 2.443176995441919e-01, 2.367009250539683e-01, +2.292285044967963e-01, 2.219039943401561e-01, 2.147308806541882e-01, 2.077125774525124e-01, 2.008524250673430e-01, +1.941536885596704e-01, 1.876195561652702e-01, 1.812531377772744e-01, 1.750574634660318e-01, 1.690354820369581e-01, +1.631900596270638e-01, 1.575239783408292e-01, 1.520399349260726e-01, 1.467405394904446e-01, 1.416283142591582e-01, +1.367056923745465e-01, 1.319750167380180e-01, 1.274385388949634e-01, 1.230984179631410e-01, 1.189567196050543e-01, +1.150154150448081e-01, 1.112763801299127e-01, 1.077413944384821e-01, 1.044121404322514e-01, 1.012902026558156e-01, +9.837706698247278e-02, 9.567411990702857e-02, 9.318264788589975e-02, 9.090383672483066e-02, 8.883877101451404e-02, +8.698843361438435e-02, 8.535370518483010e-02, 8.393536376804722e-02, 8.273408441773300e-02, 8.175043887779704e-02, +8.098489531024239e-02, 8.043781807234540e-02, 8.010946754324183e-02 +}; + +const LC3_FLOAT* PhECU_whr16ms_wins[5] = { + PhECU_whr16ms_NB,PhECU_whr16ms_WB,PhECU_whr16ms_SSWB,PhECU_whr16ms_SWB, PhECU_whr16ms_FB +}; + + +const LC3_FLOAT hannOla_8k[28 / 2 + 1] = { + 0.0000000000, 0.0125360439, 0.0495155660, 0.1090842588, 0.1882550991, 0.2830581304, 0.3887395330, 0.5000000000, 0.6112604670, 0.7169418696, 0.8117449009, 0.8909157412, 0.9504844340, + 0.9874639561, 1.0000000000 }; + +const LC3_FLOAT hannOla_16k[56 / 2 + 1] = { + 0.0000000000, 0.0031438951, 0.0125360439, 0.0280583348, 0.0495155660, 0.0766379004, 0.1090842588, 0.1464466094, 0.1882550991, 0.2339839617, 0.2830581304, 0.3348604690, 0.3887395330, + 0.4440177619, 0.5000000000, 0.5559822381, 0.6112604670, 0.6651395310, 0.7169418696, 0.7660160383, 0.8117449009, 0.8535533906, 0.8909157412, 0.9233620996, 0.9504844340, 0.9719416652, + 0.9874639561, 0.9968561049, 1.0000000000 }; + +const LC3_FLOAT hannOla_24k[84 / 2 + 1] = { + 0.0000000000, 0.0013981014, 0.0055845869, 0.0125360439, 0.0222135971, 0.0345631257, 0.0495155660, 0.0669872981, 0.0868806128, 0.1090842588, 0.1334740641, 0.1599136311, 0.1882550991, + 0.2183399710, 0.2500000000, 0.2830581304, 0.3173294878, 0.3526224128, 0.3887395330, 0.4254788669, 0.4626349532, 0.5000000000, 0.5373650468, 0.5745211331, 0.6112604670, 0.6473775872, + 0.6826705122, 0.7169418696, 0.7500000000, 0.7816600290, 0.8117449009, 0.8400863689, 0.8665259359, 0.8909157412, 0.9131193872, 0.9330127019, 0.9504844340, 0.9654368743, 0.9777864029, + 0.9874639561, 0.9944154131, 0.9986018986, 1.0000000000 }; + +const LC3_FLOAT hannOla_32k[112 / 2 + 1] = { + 0.0000000000, 0.0007865925, 0.0031438951, 0.0070644907, 0.0125360439, 0.0195413390, 0.0280583348, 0.0380602337, 0.0495155660, 0.0623882890, 0.0766379004, 0.0922195655, 0.1090842588, + 0.1271789176, 0.1464466094, 0.1668267110, 0.1882550991, 0.2106643519, 0.2339839617, 0.2581405564, 0.2830581304, 0.3086582838, 0.3348604690, 0.3615822443, 0.3887395330, 0.4162468883, + 0.4440177619, 0.4719647764, 0.5000000000, 0.5280352236, 0.5559822381, 0.5837531117, 0.6112604670, 0.6384177557, 0.6651395310, 0.6913417162, 0.7169418696, 0.7418594436, 0.7660160383, + 0.7893356481, 0.8117449009, 0.8331732890, 0.8535533906, 0.8728210824, 0.8909157412, 0.9077804345, 0.9233620996, 0.9376117110, 0.9504844340, 0.9619397663, 0.9719416652, 0.9804586610, + 0.9874639561, 0.9929355093, 0.9968561049, 0.9992134075, 1.0000000000 }; + +const LC3_FLOAT hannOla_48k[168 / 2 + 1] = { + 0.0000000000, 0.0003496476, 0.0013981014, 0.0031438951, 0.0055845869, 0.0087167634, 0.0125360439, 0.0170370869, 0.0222135971, 0.0280583348, 0.0345631257, 0.0417188721, 0.0495155660, + 0.0579423032, 0.0669872981, 0.0766379004, 0.0868806128, 0.0977011101, 0.1090842588, 0.1210141384, 0.1334740641, 0.1464466094, 0.1599136311, 0.1738562944, 0.1882550991, 0.2030899072, + 0.2183399710, 0.2339839617, 0.2500000000, 0.2663656859, 0.2830581304, 0.3000539878, 0.3173294878, 0.3348604690, 0.3526224128, 0.3705904774, 0.3887395330, 0.4070441964, 0.4254788669, + 0.4440177619, 0.4626349532, 0.4813044029, 0.5000000000, 0.5186955971, 0.5373650468, 0.5559822381, 0.5745211331, 0.5929558036, 0.6112604670, 0.6294095226, 0.6473775872, 0.6651395310, + 0.6826705122, 0.6999460122, 0.7169418696, 0.7336343141, 0.7500000000, 0.7660160383, 0.7816600290, 0.7969100928, 0.8117449009, 0.8261437056, 0.8400863689, 0.8535533906, 0.8665259359, + 0.8789858616, 0.8909157412, 0.9022988899, 0.9131193872, 0.9233620996, 0.9330127019, 0.9420576968, 0.9504844340, 0.9582811279, 0.9654368743, 0.9719416652, 0.9777864029, 0.9829629131, + 0.9874639561, 0.9912832366, 0.9944154131, 0.9968561049, 0.9986018986, 0.9996503524, 1.0000000000 }; + +const LC3_FLOAT *hannOla_wins[5] = { hannOla_8k, hannOla_16k, hannOla_24k, hannOla_32k, hannOla_48k }; + +const LC3_FLOAT plc_tdc_lpc_8[17] = {1, 0.998890285693703, 0.995568526105076, 0.990056789412169, 0.982391584470799, 0.972623458066693, 0.960816439805232, 0.947047343167065, 0.931404933402306, 0.913988974871173, 0.894909172128633, 0.874284020464791, 0.852239582727672, 0.828908210053904, 0.804427224606163, 0.778937582561901, 0.752582535420797}; + +const LC3_FLOAT plc_tdc_lpc_16[17] = {1, 0.999722455898711, 0.998890285693703, 0.997504874399492, 0.995568526105076, 0.993084457588532, 0.990056789412169, 0.986490534532745, 0.982391584470799, 0.977766693092529, 0.972623458066693, 0.966970300067793, 0.960816439805232, 0.954171872966123, 0.947047343167065, 0.939454313017299, 0.931404933402306}; + +const LC3_FLOAT plc_tdc_lpc_24[17] = {1, 0.999876637554759, 0.999506641521283, 0.998890285693703, 0.998028026020383, 0.996920500041823, 0.995568526105076, 0.993973102356048, 0.992135405511397, 0.990056789412169, 0.987738783361644, 0.985183090250255, 0.982391584470799, 0.979366309627507, 0.976109476042902, 0.972623458066693, 0.968910791191297}; + +const LC3_FLOAT plc_tdc_lpc_32[17] = {1, 0.999930606751878, 0.999722455898711, 0.999375634094057, 0.998890285693703, 0.998266612655538, 0.997504874399492, 0.996605387627705, 0.995568526105076, 0.994394720400431, 0.993084457588532, 0.991638280913245, 0.990056789412169, 0.988340637503103, 0.986490534532745, 0.984507244288062, 0.982391584470799}; + +const LC3_FLOAT plc_tdc_lpc_48[17] = {1, 0.999969157961872, 0.999876637554759, 0.999722455898711, 0.999506641521283, 0.999229234348730, 0.998890285693703, 0.998489858239427, 0.998028026020383, 0.997504874399492, 0.996920500041823, 0.996275010884819, 0.995568526105076, 0.994801176081669, 0.993973102356048, 0.993084457588532, 0.992135405511397}; + +const LC3_FLOAT plc_tdc_lpc_96[17] = {1, 0.999992289401289, 0.999969157961872, 0.999930606751878, 0.999876637554759, 0.999807252867157, 0.999722455898711, 0.999622250571809, 0.999506641521283, 0.999375634094057, 0.999229234348730, 0.999067449055113, 0.998890285693703, 0.998697752455111, 0.998489858239427, 0.998266612655538, 0.998028026020383}; + +const LC3_FLOAT *plc_tdc_lpc_all[6] = {plc_tdc_lpc_8, plc_tdc_lpc_16, plc_tdc_lpc_24, plc_tdc_lpc_32, plc_tdc_lpc_48, plc_tdc_lpc_96}; + +const LC3_FLOAT plc_tdc_lpc_8_25ms[9] = {1, 0.998890285693703, 0.995568526105076, 0.990056789412169, 0.982391584470799, 0.972623458066693, 0.960816439805232, 0.947047343167065, 0.931404933402306}; + +const LC3_FLOAT plc_preemph_fac[] = {0.62, 0.72, 0.82, 0.92, 0.92, 0.92}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_8_10ms[81] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}; +const LC3_INT ACC_COEFF_PER_BAND_PLC_16_10ms[81] = { + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, + 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, + 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, + 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160}; +const LC3_INT ACC_COEFF_PER_BAND_PLC_24_10ms[81] = { + 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, + 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, + 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, + 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240}; +const LC3_INT ACC_COEFF_PER_BAND_PLC_32_10ms[81] = { + 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72, 76, 80, + 84, 88, 92, 96, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, + 168, 172, 176, 180, 184, 188, 192, 196, 200, 204, 208, 212, 216, 220, 224, 228, 232, 236, 240, 244, 248, + 252, 256, 260, 264, 268, 272, 276, 280, 284, 288, 292, 296, 300, 304, 308, 312, 316, 320}; +const LC3_INT ACC_COEFF_PER_BAND_PLC_48_10ms[81] = { + 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, + 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, + 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, + 378, 384, 390, 396 , 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480}; +const LC3_INT ACC_COEFF_PER_BAND_PLC_96_10ms[81] = { + 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, 168, 180, 192, 204, 216, 228, 240, + 252, 264, 276, 288, 300, 312, 324, 336, 348, 360, 372, 384, 396, 408, 420, 432, 444, 456, 468, 480, 492, + 504, 516, 528, 540, 552, 564, 576, 588, 600, 612, 624, 636, 648, 660, 672, 684, 696, 708, 720, 732, 744, + 756, 768, 780, 792, 804, 816, 828, 840, 852, 864, 876, 888, 900, 912, 924, 936, 948, 960}; + +const LC3_INT* ACC_COEFF_PER_BAND_PLC[] = { + ACC_COEFF_PER_BAND_PLC_8_10ms, ACC_COEFF_PER_BAND_PLC_16_10ms, ACC_COEFF_PER_BAND_PLC_24_10ms, + ACC_COEFF_PER_BAND_PLC_32_10ms, ACC_COEFF_PER_BAND_PLC_48_10ms, ACC_COEFF_PER_BAND_PLC_96_10ms}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_8_2_5ms[21] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_16_2_5ms[41] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_24_2_5ms[61] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_32_2_5ms[81] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_48_2_5ms[61] = { + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, + 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, + 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_96_2_5ms[81] = { + 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, + 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, + 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, + 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240}; + +const LC3_INT* ACC_COEFF_PER_BAND_PLC_2_5ms[] = { + ACC_COEFF_PER_BAND_PLC_8_2_5ms, ACC_COEFF_PER_BAND_PLC_16_2_5ms, ACC_COEFF_PER_BAND_PLC_24_2_5ms, + ACC_COEFF_PER_BAND_PLC_32_2_5ms, ACC_COEFF_PER_BAND_PLC_48_2_5ms, ACC_COEFF_PER_BAND_PLC_96_2_5ms}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_8_5ms[41] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_16_5ms[81] = { + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_24_5ms[41] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, + 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, + 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_32_5ms[81] = { + 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, + 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, + 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, + 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_48_5ms[81] = { + 0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, + 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 114, 117, 120, 123, + 126, 129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, 165, 168, 171, 174, 177, 180, 183, 186, + 189, 192, 195, 198, 201, 204, 207, 210, 213, 216, 219, 222, 225, 228, 231, 234, 237, 240}; + +const LC3_INT ACC_COEFF_PER_BAND_PLC_96_5ms[81] = { + 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96, 102, 108, 114, 120, + 126, 132, 138, 144, 150, 156, 162, 168, 174, 180, 186, 192, 198, 204, 210, 216, 222, 228, 234, 240, 246, + 252, 258, 264, 270, 276, 282, 288, 294, 300, 306, 312, 318, 324, 330, 336, 342, 348, 354, 360, 366, 372, + 378, 384, 390, 396, 402, 408, 414, 420, 426, 432, 438, 444, 450, 456, 462, 468, 474, 480}; + +const LC3_INT* ACC_COEFF_PER_BAND_PLC_5ms[] = { + ACC_COEFF_PER_BAND_PLC_8_5ms, ACC_COEFF_PER_BAND_PLC_16_5ms, ACC_COEFF_PER_BAND_PLC_24_5ms, + ACC_COEFF_PER_BAND_PLC_32_5ms, ACC_COEFF_PER_BAND_PLC_48_5ms, ACC_COEFF_PER_BAND_PLC_96_5ms}; + +const LC3_INT32 mdct_grp_bins[10] = { 4, 14, 24, 44, 84, 164, 244, 324, 404, 484 }; + diff --git a/lc3plus/constants.h b/lc3plus/constants.h new file mode 100644 index 0000000000000000000000000000000000000000..c0c9e286e55c72bd40851c91fe7229e22d9ef261 --- /dev/null +++ b/lc3plus/constants.h @@ -0,0 +1,203 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef CONSTANTS_H +#define CONSTANTS_H + +#include "defines.h" +#include "structs.h" + +/* DCT */ +extern const Complex dct2_16[16]; + +/* Ari coder */ +extern const LC3_INT ari_tns_order_cf[2][9]; +extern const LC3_INT ari_tns_freq_cf[8][18]; +extern const LC3_INT ari_spec_lookup_fl[4096]; +extern const LC3_INT ari_spec_cumfreq_fl[64][18]; +extern const LC3_INT ari_spec_bits_fl[64][17]; + +/* SNS */ +extern const LC3_FLOAT sns_LFCB[8][32]; +extern const LC3_FLOAT sns_HFCB[8][32]; +extern const LC3_INT pvq_enc_A[16][11]; +extern const LC3_FLOAT idct_lookup[M][M]; + +/* 12.8 kHz resampler */ +extern const LC3_FLOAT lp_scale_factors[6]; + +extern const LC3_INT32 resamp_params[][4]; +extern const LC3_FLOAT *lp_filter[6]; +extern const LC3_FLOAT highpass50_filt_b[3]; +extern const LC3_FLOAT highpass50_filt_a[3]; +extern const LC3_INT up_fac[6]; + +/* TNS */ +extern const LC3_FLOAT quants_pts_tns[17]; +extern const LC3_INT huff_bits_tns[8][17]; +extern const LC3_INT order1_tns[8]; +extern const LC3_INT order2_tns[8]; +extern const LC3_FLOAT lagw_tns[9]; +extern const LC3_FLOAT quants_pts_tns[17]; +extern const LC3_FLOAT quants_thr_tns[18]; + +/* SNS */ +extern const LC3_FLOAT sns_vq_far_adj_gains_fl[8]; +extern const LC3_FLOAT sns_vq_near_adj_gains_fl[4]; +extern const LC3_FLOAT sns_vq_reg_lf_adj_gains_fl[4]; +extern const LC3_FLOAT q_g_sns[6]; +extern const LC3_FLOAT sns_vq_reg_adj_gains_fl[2]; +extern const LC3_FLOAT sns_dec_gains[4][8]; + +/* Global Gain */ +extern const LC3_INT gg_p1[6]; +extern const LC3_INT gg_p2[6]; +extern const LC3_INT gg_p3[6]; +extern const LC3_FLOAT gg_c[6]; +extern const LC3_FLOAT gg_d[6]; + +/* Olpa */ +extern const LC3_FLOAT olpa_down2[5]; +extern const LC3_FLOAT olpa_acw[98]; + +/* LTPF */ +extern const LC3_FLOAT conf_inter_filter_48[4][12]; +extern const LC3_FLOAT conf_inter_filter_32[4][8]; +extern const LC3_FLOAT conf_inter_filter_24[4][6]; +extern const LC3_FLOAT conf_inter_filter_16[4][4]; +extern const LC3_FLOAT conf_tilt_filter_48[4][11]; +extern const LC3_FLOAT conf_tilt_filter_32[4][7]; +extern const LC3_FLOAT conf_tilt_filter_24[4][5]; +extern const LC3_FLOAT conf_tilt_filter_16[4][3]; +extern const LC3_FLOAT inter4_1[33]; +extern const LC3_FLOAT enc_inter_filter[4][4]; + +/* Bandwidth Detector */ +extern const LC3_INT threshold_quiet[4]; +extern const LC3_INT threshold_brickwall[4]; +extern const LC3_INT brickwall_dist[4]; +extern const LC3_INT BW_warp_idx_start_16k[4]; +extern const LC3_INT BW_warp_idx_stop_16k[4]; +extern const LC3_INT BW_warp_idx_start_24k[4]; +extern const LC3_INT BW_warp_idx_stop_24k[4]; +extern const LC3_INT BW_warp_idx_start_32k[4]; +extern const LC3_INT BW_warp_idx_stop_32k[4]; +extern const LC3_INT BW_warp_idx_start_48k[4]; +extern const LC3_INT BW_warp_idx_stop_48k[4]; +extern const LC3_INT* BW_warp_idx_start_all[4]; +extern const LC3_INT* BW_warp_idx_stop_all[4]; + +extern const LC3_INT BW_warp_idx_start_16k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_16k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_start_24k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_24k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_start_32k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_32k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_start_48k_2_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_48k_2_5ms[4]; +extern const LC3_INT* BW_warp_idx_start_all_2_5ms[4]; +extern const LC3_INT* BW_warp_idx_stop_all_2_5ms[4]; +extern const LC3_INT BW_cutoff_bin_all_2_5ms_HR[MAX_BW_BANDS_NUMBER]; +extern const LC3_INT bands_number_2_5ms_HR[6]; + +extern const LC3_INT BW_cutoff_bin_all_2_5ms[MAX_BW_BANDS_NUMBER]; +extern const LC3_INT bands_number_2_5ms[5]; + + +extern const LC3_INT BW_warp_idx_start_16k_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_16k_5ms[4]; +extern const LC3_INT BW_warp_idx_start_24k_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_24k_5ms[4]; +extern const LC3_INT BW_warp_idx_start_32k_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_32k_5ms[4]; +extern const LC3_INT BW_warp_idx_start_48k_5ms[4]; +extern const LC3_INT BW_warp_idx_stop_48k_5ms[4]; +extern const LC3_INT* BW_warp_idx_start_all_5ms[4]; +extern const LC3_INT* BW_warp_idx_stop_all_5ms[4]; +extern const LC3_INT BW_cutoff_bin_all_5ms[MAX_BW_BANDS_NUMBER]; +extern const LC3_INT bands_number_5ms[6]; +extern const LC3_INT BW_cutoff_bin_all_HR[MAX_BW_BANDS_NUMBER]; +extern const LC3_INT BW_cutoff_bin_all_5ms_HR[MAX_BW_BANDS_NUMBER]; +extern const LC3_INT BW_cutoff_bin_all[MAX_BW_BANDS_NUMBER]; +extern const LC3_INT BW_cutoff_bits_all[MAX_BW_BANDS_NUMBER]; + +/* Arithmetic coding */ +extern const LC3_INT tns_cf[8][18]; +extern const LC3_INT tns_freq_cf[2][9]; + +/* MDCT Windows */ +extern const LC3_FLOAT MDCT_WINDOW_80[160]; +extern const LC3_FLOAT MDCT_WINDOW_160[320]; +extern const LC3_FLOAT MDCT_WINDOW_240[480]; +extern const LC3_FLOAT MDCT_WINDOW_320[640]; +extern const LC3_FLOAT MDCT_WINDOW_480[960]; +extern const LC3_FLOAT MDCT_WINDOW_960[1920]; +extern const LC3_FLOAT* MDCT_WINS_10ms[2][6]; +extern const LC3_INT MDCT_la_zeroes[6]; + +extern const LC3_FLOAT MDCT_WINDOW_80_2_5ms[40]; +extern const LC3_FLOAT MDCT_WINDOW_160_2_5ms[80]; +extern const LC3_FLOAT MDCT_WINDOW_240_2_5ms[120]; +extern const LC3_FLOAT MDCT_WINDOW_320_2_5ms[160]; +extern const LC3_FLOAT MDCT_WINDOW_480_2_5ms[240]; +extern const LC3_FLOAT* MDCT_WINS_2_5ms[2][6]; +extern const LC3_INT MDCT_la_zeroes_2_5ms[6]; + + +extern const LC3_FLOAT MDCT_WINDOW_80_5ms[80]; +extern const LC3_FLOAT MDCT_WINDOW_160_5ms[160]; +extern const LC3_FLOAT MDCT_WINDOW_240_5ms[240]; +extern const LC3_FLOAT MDCT_WINDOW_320_5ms[320]; +extern const LC3_FLOAT MDCT_WINDOW_480_5ms[480]; +extern const LC3_FLOAT* MDCT_WINS_5ms[2][6]; +extern const LC3_INT MDCT_la_zeroes_5ms[6]; + +extern const LC3_INT MDCT_WINDOWS_LENGTHS_10ms[6]; + +extern const LC3_INT MDCT_WINDOWS_LENGTHS_2_5ms[6]; + + +extern const LC3_INT MDCT_WINDOWS_LENGTHS_5ms[6]; + +/* Per band energy */ +extern const LC3_INT* ACC_COEFF_PER_BAND[6]; +extern const LC3_INT* ACC_COEFF_PER_BAND_HR[6]; + +extern const LC3_INT* ACC_COEFF_PER_BAND_2_5ms_HR[6]; +extern const LC3_INT* ACC_COEFF_PER_BAND_2_5ms[5]; + + +extern const LC3_INT* ACC_COEFF_PER_BAND_5ms_HR[6]; +extern const LC3_INT* ACC_COEFF_PER_BAND_5ms[5]; + +/* Near Nyquist detector */ +extern const LC3_INT NN_thresh; + + +extern const LC3_INT32 xavg_N_grp[5]; +extern const LC3_FLOAT *hannOla_wins[5]; +extern const LC3_INT32 gwlpr[MAX_LGW+1]; +extern const LC3_INT32 mdct_grp_bins[10]; +extern const LC3_FLOAT* PhECU_whr16ms_wins[5]; + +extern const LC3_FLOAT plc_preemph_fac[]; +extern const LC3_INT* ACC_COEFF_PER_BAND_PLC[]; +extern const LC3_INT* ACC_COEFF_PER_BAND_PLC_2_5ms[]; +extern const LC3_INT* ACC_COEFF_PER_BAND_PLC_5ms[]; +extern const LC3_FLOAT *plc_tdc_lpc_all[6]; +extern const LC3_FLOAT plc_tdc_lpc_8[17]; +extern const LC3_FLOAT plc_tdc_lpc_16[17]; +extern const LC3_FLOAT plc_tdc_lpc_24[17]; +extern const LC3_FLOAT plc_tdc_lpc_32[17]; +extern const LC3_FLOAT plc_tdc_lpc_48[17]; +extern const LC3_FLOAT plc_tdc_lpc_96[17]; +extern const LC3_FLOAT plc_tdc_lpc_8_25ms[9]; + +#endif diff --git a/lc3plus/cutoff_bandwidth.c b/lc3plus/cutoff_bandwidth.c new file mode 100644 index 0000000000000000000000000000000000000000..642b2afda2ef1848f5b232a4caf9d0770db6ef57 --- /dev/null +++ b/lc3plus/cutoff_bandwidth.c @@ -0,0 +1,27 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void process_cutoff_bandwidth(LC3_FLOAT *d_fl, LC3_INT len, LC3_INT bw_bin) +{ + LC3_INT i = 0; + + if (len > bw_bin){ + for (i = -1; i < 3; i++) { + d_fl[bw_bin + i] = d_fl[bw_bin + i] * LC3_POW(2, -(i + 2)); + } + + for (i = bw_bin + 3; i < len; i++) { + d_fl[i] = 0; + } + } +} diff --git a/lc3plus/dct4.c b/lc3plus/dct4.c new file mode 100644 index 0000000000000000000000000000000000000000..8fd5784b287477aeffd3ee987e81527f755f2163 --- /dev/null +++ b/lc3plus/dct4.c @@ -0,0 +1,95 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void dct2_init(Dct2* dct, int length) +{ + assert(length <= MAX_LEN); + dct->length = length; + fft_init(&dct->fft, length); +} + +void dct2_free(Dct2* dct) +{ + if (dct) { + fft_free(&dct->fft); + memset(dct, 0, sizeof(*dct)); + } +} + +void dct2_apply(Dct2* dct, const LC3_FLOAT* input, LC3_FLOAT* output) +{ + Complex tmp1[MAX_LEN]; + Complex tmp2[MAX_LEN]; + int i = 0; + const int len = dct->length; + assert(input != output); + + for (i = 0; i < len / 2; i++) { + tmp1[i] = cmplx(input[i * 2], 0); + tmp1[len - i - 1] = cmplx(input[i * 2 + 1], 0); + } + + fft_apply(&dct->fft, tmp1, tmp2); + + for (i = 0; i < len; i++) { + output[i] = cmul(tmp2[i], dct2_16[i]).r; + } + output[0] /= (LC3_FLOAT)1.414213562373095; /* SQRT(2) */ +} + + +void dct4_init(Dct4* dct, int length) +{ + int i = 0; + assert(length <= MAX_LEN); + dct->length = length; + dct->twid1 = calloc(sizeof(*dct->twid1), length / 2); + dct->twid2 = calloc(sizeof(*dct->twid2), length / 2); + for (i = 0; i < length / 2; i++) { + dct->twid1[i] = cexpi(-(LC3_FLOAT)M_PI * (i + (LC3_FLOAT)0.25) / length); + dct->twid2[i] = cexpi(-(LC3_FLOAT)M_PI * i / length); + } + fft_init(&dct->fft, length / 2); +} + +void dct4_free(Dct4* dct) +{ + if (dct) { + free(dct->twid1); + free(dct->twid2); + fft_free(&dct->fft); + memset(dct, 0, sizeof(*dct)); + } +} + +void dct4_apply(Dct4* dct, const LC3_FLOAT* input, LC3_FLOAT* output) +{ + Complex tmp2[MAX_LEN / 2]; + int i = 0; + Complex* tmp1 = (Complex*)output; + const int len = dct->length; + const LC3_FLOAT norm = (LC3_FLOAT)1.0 / LC3_SQRT((LC3_FLOAT)(len >> 1)); + assert(input != output); + + for (i = 0; i < len / 2; i++) { + tmp1[i] = cmul(cmplx(input[i * 2], input[len - i * 2 - 1]), dct->twid1[i]); + } + + fft_apply(&dct->fft, tmp1, tmp2); + + for (i = 0; i < len / 2; i++) { + Complex t = cmul(tmp2[i], dct->twid2[i]); + output[i * 2] = t.r * norm; + output[len - i * 2 - 1] = -t.i * norm; + } +} diff --git a/lc3plus/dec_entropy.c b/lc3plus/dec_entropy.c new file mode 100644 index 0000000000000000000000000000000000000000..d8512a1068b49c042f627936fa46b0b3df21339b --- /dev/null +++ b/lc3plus/dec_entropy.c @@ -0,0 +1,277 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static void read_bit_fl(LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* bit); +static void read_uint_fl(LC3_INT nbits, LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* val); + +void read_bit_fl(LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* bit) +{ + if (ptr[*bp_side] & *mask_side) { + *bit = 1; + } else { + *bit = 0; + } + + if (*mask_side == 128) { + *mask_side = 1; + *bp_side = *bp_side - 1; + } else { + *mask_side = *mask_side * 2; + } +} + +void read_uint_fl(LC3_INT nbits, LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* val) +{ + LC3_INT bit = 0, i = 0; + + read_bit_fl(ptr, mask_side, bp_side, val); + + for (i = 1; i < nbits; i++) { + read_bit_fl(ptr, mask_side, bp_side, &bit); + *val = *val + (bit << i); + } +} + +#ifdef ENABLE_PADDING +LC3_INT paddingDec_fl(LC3_UINT8* bytes, LC3_INT nbbits, LC3_INT L_spec, LC3_INT bw_cutoff_bits, LC3_INT ep_enabled, LC3_INT* total_padding, LC3_INT *np_zero) +{ + LC3_INT lastnz_threshold; + LC3_INT val, padding_len_bits, padding_len; + LC3_INT bp_side; + LC3_INT mask_side; + LC3_UINT8* ptr = bytes; + + LC3_INT nbbytes = nbbits >> 3; + LC3_INT lastnz; + LC3_INT bw_cutoff_idx; + LC3_INT nbits = ceil(LC3_LOGTWO(L_spec / 2)); + + if (nbits > nbbits) + { + return 1; + } + + *np_zero = 0; + + *total_padding = 0; + + bp_side = (nbbits - 1) >> 3; + mask_side = 1 << (8 - (nbbits - (bp_side << 3))); + + if (bp_side < 19 || bp_side >= LC3PLUS_MAX_BYTES) { + return 1; + } + + ptr = bytes; + + if (bw_cutoff_bits > 0) { + read_uint_fl(bw_cutoff_bits, ptr, &mask_side, &bp_side, &bw_cutoff_idx); + } + + read_uint_fl(nbits, ptr, &mask_side, &bp_side, &lastnz); + + lastnz_threshold = (1 << nbits) - 1 - 1; + + while (lastnz == lastnz_threshold) { + padding_len_bits = 16 - nbits - bw_cutoff_bits - 4; + + /*Read padding length*/ + read_uint_fl(padding_len_bits, ptr, &mask_side, &bp_side, &padding_len); + + /* Read 4 reserved bits */ + read_uint_fl(4, ptr, &mask_side, &bp_side, &val); + + if (ep_enabled == 0) + { + /* Discard padding length bytes */ + bp_side = bp_side - padding_len; + *total_padding = *total_padding + padding_len + 2; + } + else + { + *total_padding = *total_padding + 2; + *np_zero = *np_zero + padding_len; + } + + /* check if minimum payload size is reached */ + if ((nbbytes - (*total_padding + *np_zero)) < 20) { + return 1; + } + + /* Read bandwidth bits */ + if (bw_cutoff_bits > 0) { + read_uint_fl(bw_cutoff_bits, ptr, &mask_side, &bp_side, &bw_cutoff_idx); + } + + read_uint_fl(nbits, ptr, &mask_side, &bp_side, &lastnz); + } + + if (ep_enabled != 0) + { + *total_padding = *total_padding + *np_zero; + } + + return 0; +} +#endif + +void processDecoderEntropy_fl(LC3_UINT8* bytes, LC3_INT numbytes, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT N, LC3_INT fs_idx, + LC3_INT bw_cutoff_bits, LC3_INT* bfi, LC3_INT* gg_idx, LC3_INT* scf_idx, LC3_INT* fac_ns_idx, + LC3_INT* tns_numfilters, LC3_INT* tns_order, LC3_INT* ltpf_idx, LC3_INT* bw_cutoff_idx, LC3_INT* lastnz, + LC3_INT* lsbMode, LC3_INT frame_dms) +{ + + LC3_INT plc_trigger_bw = 0, plc_trigger_last_nz = 0, plc_trigger_SNS1 = 0, plc_trigger_SNS2 = 0, tmp = 0, bit = 0, + submodeMSB = 0, i = 0, ltpf_tmp[3] = {0}, ind = 0, submodeLSB = 0, bp_side_local = 0, mask_side_local = 0; + LC3_UINT8* ptr; + LC3_INT gainMSBbits[4] = {1, 1, 2, 2}; + + *bp_side = -1; + bp_side_local = numbytes - 1; /* Matlab offset by 1 */ + mask_side_local = 1; + *mask_side = -1; + ptr = bytes; + *lsbMode = -1; + *lastnz = -1; + + plc_trigger_bw = 1; /* Bandwidth */ + plc_trigger_last_nz = 1; /* Last non-zero tuple */ + plc_trigger_SNS1 = 1; /* SNS-VQ 2nd stage MPVQ data (24-25 bits) */ + plc_trigger_SNS2 = 1; /* SNS-VQ 2nd stage MPVQ data (24-25 bits) */ + + + + /* Bandwidth */ + if (bw_cutoff_bits > 0) { + read_uint_fl(bw_cutoff_bits, ptr, &mask_side_local, &bp_side_local, bw_cutoff_idx); + + if (fs_idx < *bw_cutoff_idx) { + *bfi = plc_trigger_bw; + + if (*bfi) { + return; + } + } + } else { + *bw_cutoff_idx = fs_idx; + } + + /* Number of TNS filters */ + if (*bw_cutoff_idx < 3 || frame_dms == 25) { + *tns_numfilters = 1; + } else { + *tns_numfilters = 2; + } + + /* Last non-zero tuple */ + read_uint_fl(ceil(LC3_LOGTWO(N / 2)), ptr, &mask_side_local, &bp_side_local, lastnz); + *lastnz = (*lastnz + 1) * 2; + + if (*lastnz > N) { + *bfi = plc_trigger_last_nz; + if (*bfi) { + return; + } + } + + /* LSB mode bit */ + read_bit_fl(ptr, &mask_side_local, &bp_side_local, lsbMode); + + /* Global gain */ + read_uint_fl(8, ptr, &mask_side_local, &bp_side_local, gg_idx); + + /* TNS activation flag */ + for (i = 0; i < *tns_numfilters; i++) { + read_bit_fl(ptr, &mask_side_local, &bp_side_local, &bit); + tns_order[i] = bit; + } + + /* LTPF activation flag */ + read_bit_fl(ptr, &mask_side_local, &bp_side_local, <pf_tmp[0]); + + /* SNS-VQ 1st stage */ + read_uint_fl(5, ptr, &mask_side_local, &bp_side_local, &scf_idx[0]); + read_uint_fl(5, ptr, &mask_side_local, &bp_side_local, &scf_idx[1]); + + /* SNS-VQ 2nd stage side-info (3-4 bits) */ + read_bit_fl(ptr, &mask_side_local, &bp_side_local, &submodeMSB); + scf_idx[2] = submodeMSB * 2; + + read_uint_fl(gainMSBbits[scf_idx[2]], ptr, &mask_side_local, &bp_side_local, &scf_idx[3]); + read_bit_fl(ptr, &mask_side_local, &bp_side_local, &scf_idx[4]); + + /* SNS-VQ 2nd stage MPVQ data (24-25 bits) */ + if (submodeMSB == 0) { + read_uint_fl(25, ptr, &mask_side_local, &bp_side_local, &tmp); + if (tmp >= 33460056) { + *bfi = plc_trigger_SNS1; + if (*bfi) { + return; + } + } + + ind = floor(tmp / 2390004); + scf_idx[5] = tmp - ind * 2390004; + + if (ind < 2) { + submodeLSB = 1; + scf_idx[3] = scf_idx[3] * 2 + ind; + scf_idx[6] = -2; + } else { + submodeLSB = 0; + scf_idx[6] = ind - 2; + } + + } else { + read_uint_fl(24, ptr, &mask_side_local, &bp_side_local, &tmp); + + if (tmp >= 16708096) { + *bfi = plc_trigger_SNS2; + if (*bfi) { + return; + } + } + + if (tmp >= 15158272) { + submodeLSB = 1; + scf_idx[3] = scf_idx[3] * 2 + ((tmp - 15158272) & 1); + scf_idx[5] = floor((tmp - 15158272) / 2); + scf_idx[6] = -2; + } else { + submodeLSB = 0; + scf_idx[5] = tmp; + scf_idx[6] = -1; + } + } + + scf_idx[2] = scf_idx[2] + submodeLSB; + + /* LTPF data */ + if (ltpf_tmp[0] == 1) { + read_bit_fl(ptr, &mask_side_local, &bp_side_local, <pf_tmp[1]); + read_uint_fl(9, ptr, &mask_side_local, &bp_side_local, <pf_tmp[2]); + } else { + ltpf_tmp[1] = 0; + ltpf_tmp[2] = 0; + } + + for (i = 0; i < 3; i++) { + ltpf_idx[i] = ltpf_tmp[i]; + } + + /* Noise factor */ + read_uint_fl(3, ptr, &mask_side_local, &bp_side_local, fac_ns_idx); + + *bp_side = bp_side_local; + *mask_side = mask_side_local; +} diff --git a/lc3plus/dec_lc3_fl.c b/lc3plus/dec_lc3_fl.c new file mode 100644 index 0000000000000000000000000000000000000000..88c528b0f639178567a55b87a2084a20cc9b8864 --- /dev/null +++ b/lc3plus/dec_lc3_fl.c @@ -0,0 +1,365 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +static int Dec_LC3PLUS_Channel_fl(LC3PLUS_Dec* decoder, int channel, uint8_t* bs_in, void* s_out, int bps, int bfi_ext) +{ + DecSetup* h_DecSetup; + LC3_INT mask_side = 0, bp_side = 0, bfi = 0, gg_idx = 0, fac_ns_idx = 0, tns_numfilters = 0, bw_cutoff_idx = 0, + lastnz = 0, lsbMode = 0, nf_seed = 0, zero_frame = 0, residualPresent = 0, nbits_residual = 0, bitsRead = 0, + i = 0, tns_order[2] = {0}, sqQdec[MAX_LEN] = {0}; + LC3_INT b_left; + LC3_FLOAT stab_fac = 0; + + h_DecSetup = decoder->channel_setup[channel]; + + memset(h_DecSetup->tns_idx, 0, sizeof(*h_DecSetup->tns_idx) * TNS_NUMFILTERS_MAX * MAXLAG); + + bfi = bfi_ext; + + decoder->rframe = 0; + if (bfi == 3) + { + bfi = 2; + decoder->rframe = 1; + } + + /* Entropy decoding */ + if (bfi != 1) { + processDecoderEntropy_fl(bs_in, h_DecSetup->targetBytes, &mask_side, &bp_side, decoder->yLen, decoder->fs_idx, + decoder->BW_cutoff_bits, &bfi, &gg_idx, h_DecSetup->scf_idx, &fac_ns_idx, + &tns_numfilters, tns_order, h_DecSetup->ltpf_param, &bw_cutoff_idx, &lastnz, &lsbMode, decoder->frame_dms + ); + h_DecSetup->BW_cutoff_idx_nf = bw_cutoff_idx; + } + + /* Arithmetic decoding */ + if (bfi != 1) { + processAriDecoder_fl(bs_in, bp_side, mask_side, decoder->yLen, decoder->fs_idx, + h_DecSetup->enable_lpc_weighting, tns_numfilters, lsbMode, lastnz, &bfi, tns_order, fac_ns_idx, gg_idx, h_DecSetup->resBits, + sqQdec, &nf_seed, h_DecSetup->tns_idx, &zero_frame, h_DecSetup->targetBytes, &nbits_residual, &residualPresent, decoder->frame_dms, + decoder->n_pc, decoder->be_bp_left, decoder->be_bp_right, 0, &b_left, &h_DecSetup->spec_inv_idx, + decoder->hrmode + ); + + if (decoder->rframe == 1 && zero_frame == 0 && bfi != 1) + { + LC3_INT32 max_bw_stopband = BW_cutoff_bin_all[bw_cutoff_idx]; + bfi = 2; + switch (decoder->frame_dms) + { +# ifdef ENABLE_025_DMS_MODE + case 25: + max_bw_stopband = max_bw_stopband >> 2; + break; +# endif +# ifdef ENABLE_050_DMS_MODE + case 50: + max_bw_stopband = max_bw_stopband >> 1; + break; +# endif +# ifdef ENABLE_075_DMS_MODE + case 75: + max_bw_stopband = 3 * (max_bw_stopband >> 2); + break; +# endif + case 100: + break; + } + + h_DecSetup->spec_inv_idx = MAX(lastnz, max_bw_stopband); + } + + /* Cast from int to float */ + for (i = 0; i < decoder->yLen; i++) { + h_DecSetup->sqQdec_fl[i] = (LC3_FLOAT)sqQdec[i]; + } + } + + if (bfi != 1) + { + /* SNS Quantize Decoder */ + process_snsQuantizesScf_Dec(h_DecSetup->scf_idx, h_DecSetup->scf_q); + } + if (h_DecSetup->PlcAdvSetup) + { + processPlcComputeStabFacMain_fl(h_DecSetup->scf_q, h_DecSetup->PlcAdvSetup->scf_q_old, h_DecSetup->PlcAdvSetup->scf_q_old_old, bfi, h_DecSetup->PlcSetup.prevBfi, + h_DecSetup->PlcSetup.prevprevBfi, &h_DecSetup->PlcAdvSetup->stabFac); + } + + if ( bfi != 1 ) + { + stab_fac = 1; + if (h_DecSetup->PlcAdvSetup) + { + stab_fac = h_DecSetup->PlcAdvSetup->stabFac; + } + + /* Partial Concealment */ + processPcMain_fl(&bfi, decoder, h_DecSetup->sqQdec_fl, h_DecSetup, h_DecSetup->ltpf_param[0], stab_fac, gg_idx, h_DecSetup->quantizedGainOff, + fac_ns_idx, &h_DecSetup->statePC, h_DecSetup->spec_inv_idx, decoder->yLen); + } + + /* Decoding only if no bit error detected */ + if (bfi != 1) { + /* Residual decoding */ + if (residualPresent) { + processResidualDecoding_fl(&bitsRead, h_DecSetup->sqQdec_fl, decoder->yLen, h_DecSetup->resBits, + nbits_residual + , decoder->hrmode + ); + } + + + /* Noise filling */ + if (zero_frame == 0) { + processNoiseFilling_fl(h_DecSetup->sqQdec_fl, nf_seed, fac_ns_idx, decoder->cutoffBins[h_DecSetup->BW_cutoff_idx_nf], decoder->frame_dms, h_DecSetup->prev_fac_ns, h_DecSetup->spec_inv_idx); + } + + /* Application of global gain */ + processApplyGlobalGain_fl(h_DecSetup->sqQdec_fl, decoder->yLen, gg_idx, h_DecSetup->quantizedGainOff); + + /* TNS decoder */ + processTnsDecoder_fl(h_DecSetup->sqQdec_fl, h_DecSetup->tns_idx, tns_order, tns_numfilters, + decoder->cutoffBins[bw_cutoff_idx], h_DecSetup->N_red_tns, h_DecSetup->fs_red_tns); + + /* SNS interpolation */ + processSnsInterpolateScf_fl(h_DecSetup->scf_q, 0, decoder->bands_number, h_DecSetup->int_scf); + + /* MDCT shaping */ + processMdctShaping_fl(h_DecSetup->sqQdec_fl, h_DecSetup->int_scf, decoder->bands_offset, decoder->bands_number); + } + + /* PLC */ + processPlcMain_fl(h_DecSetup->sqQdec_fl, h_DecSetup->x_fl, decoder, h_DecSetup, bfi, h_DecSetup->PlcAdvSetup, &h_DecSetup->PlcSetup, + decoder->plcMeth, h_DecSetup->ltpf_mem_pitch, h_DecSetup->ltpf_mem_pitch_fr, decoder->tilt, decoder->bands_offset, + decoder->bands_number, decoder->bands_offsetPLC, decoder->n_bandsPLC, decoder->hrmode, &h_DecSetup->statePC); + + processPlcDampingScramblingMain_fl(&h_DecSetup->PlcNsSetup.seed, + &h_DecSetup->statePC.seed, h_DecSetup->statePC.ns_nbLostCmpt_pc, + h_DecSetup->PlcSetup.nbLostCmpt, &h_DecSetup->PlcAdvSetup->stabFac, + &h_DecSetup->PlcAdvSetup->cum_fading_slow, &h_DecSetup->PlcAdvSetup->cum_fading_fast, + h_DecSetup->PlcSetup.q_d_prev, h_DecSetup->sqQdec_fl, h_DecSetup->spec_inv_idx, decoder->yLen, bfi, + decoder->frame_dms, h_DecSetup->concealMethod, h_DecSetup->ltpf_mem_pitch, h_DecSetup->ltpf_param[0], + &h_DecSetup->PlcAdvSetup->cum_fflcAtten); + + /* IMDCT */ + if (h_DecSetup->concealMethod == 4 || bfi != 1 ) + { + ProcessingIMDCT_fl(h_DecSetup->sqQdec_fl, decoder->frame_length, decoder->imdct_win, decoder->imdct_winLen, decoder->imdct_laZeros, + h_DecSetup->imdct_mem, h_DecSetup->x_fl, &h_DecSetup->dct4structImdct); + } + + processPlcUpdate_fl(h_DecSetup->PlcAdvSetup + , decoder->frame_length, h_DecSetup->x_fl, h_DecSetup->scf_q, + &h_DecSetup->PlcSetup.nbLostCmpt, &h_DecSetup->PlcNsSetup.cum_alpha, bfi, &h_DecSetup->PlcSetup.prevBfi, &h_DecSetup->PlcSetup.prevprevBfi); + + /* LTPF decoder */ + process_ltpf_decoder_fl(h_DecSetup->x_fl, decoder->frame_length, h_DecSetup->x_fl, decoder->fs, + h_DecSetup->ltpf_mem_x, h_DecSetup->ltpf_mem_y, &h_DecSetup->ltpf_mem_pitch, + &h_DecSetup->ltpf_mem_pitch_fr, &h_DecSetup->ltpf_mem_gain, &h_DecSetup->ltpf_mem_beta_idx, + bfi, h_DecSetup->ltpf_param, h_DecSetup->ltpf_param_mem, h_DecSetup->ltpf_conf_beta_idx, + h_DecSetup->ltpf_conf_beta, h_DecSetup->concealMethod, h_DecSetup->alpha + , &h_DecSetup->ltpf_mem_active + ); + + { + /* Round, scale and copy output to output buffer */ + if (bps == 16) { + for (i = 0; i < decoder->frame_length; i++) { + LC3_FLOAT tmp = round(h_DecSetup->x_fl[i]); + ((int16_t*)s_out)[i] = (int16_t)fmaxf(fminf(tmp, 32767), -32768); + } + } else { + for (i = 0; i < decoder->frame_length; i++) { + LC3_FLOAT tmp = round(LC3_CONST_POW_2_23 * LC3_CONST_POW_2_M15 * h_DecSetup->x_fl[i]); + ((int32_t*)s_out)[i] = (int32_t)fmaxf(fminf(tmp, LC3_CONST_POW_2_23_RED), LC3_CONST_POW_2_23_NEG); + } + } + } + return bfi; +} + +LC3PLUS_Error Dec_LC3PLUS_fl(LC3PLUS_Dec* decoder, uint8_t* input, LC3_INT32 num_bytes, void** output, LC3_INT32 bps, LC3_INT32 bfi_ext) +{ + LC3_INT32 ch, bfi, lc3_num_bytes; + LC3PLUS_Error err; + LC3_INT32 fec_num_bytes; + LC3_INT32 lc3_channel_num_bytes; + LC3_INT32 channel_bfi, out_bfi; + LC3PLUS_EpModeRequest channel_epmr; + + bfi = bfi_ext; + lc3_num_bytes = 0; + err = LC3PLUS_OK; + + if (bfi == 0) + { + bfi = !num_bytes; + } + + if (decoder->ep_enabled) + { + decoder->combined_channel_coding = decoder->channels > 1 && num_bytes <= 160; + + if (decoder->combined_channel_coding) + { + fec_num_bytes = num_bytes; + + decoder->error_report = + fec_decoder(input, fec_num_bytes, &lc3_num_bytes, (LC3PLUS_EpModeRequest*)&decoder->epmr, decoder->combined_channel_coding, + &decoder->n_pccw, &bfi, &decoder->be_bp_left, &decoder->be_bp_right, &decoder->n_pc, &decoder->m_fec); + + for (ch = 0; ch < decoder->channels; ch++) + { + lc3_channel_num_bytes = lc3_num_bytes / decoder->channels + (ch < (lc3_num_bytes % decoder->channels)); + + + if (bfi != 1 && lc3_channel_num_bytes != decoder->channel_setup[ch]->last_size) + { + err = update_dec_bitrate(decoder, ch, lc3_channel_num_bytes); + if (err) + { + bfi = 1; + decoder->last_error = err; + } + else + { + decoder->channel_setup[ch]->last_size = lc3_channel_num_bytes; + } + } + + bfi = Dec_LC3PLUS_Channel_fl(decoder, ch, input, output[ch], bps, bfi); + input += decoder->channel_setup[ch]->targetBytes; + } + } + else + { + decoder->epmr = LC3PLUS_EPMR_HIGH_NC; + out_bfi = 0; + + for (ch = 0; ch < decoder->channels; ch++) + { + fec_num_bytes = num_bytes / decoder->channels + (ch < (num_bytes % decoder->channels)); + + channel_bfi = bfi; + + decoder->error_report = fec_decoder(input, fec_num_bytes, &lc3_num_bytes, &channel_epmr, + decoder->combined_channel_coding, &decoder->n_pccw, &channel_bfi, + &decoder->be_bp_left, &decoder->be_bp_right, &decoder->n_pc, &decoder->m_fec); + + decoder->epmr = MIN((LC3PLUS_EpModeRequest) decoder->epmr, channel_epmr); + + +#ifdef ENABLE_PADDING + if (channel_bfi != 1) + { + LC3_INT32 padding_len = 0, np_zero = 0; + + if (paddingDec_fl(input, (lc3_num_bytes << 3), decoder->yLen, decoder->BW_cutoff_bits, decoder->ep_enabled, &padding_len, &np_zero)) + { + channel_bfi = 1; + } + + input = input + np_zero; + decoder->n_pc = MAX(decoder->n_pc - (2 * np_zero), 0); + + if (channel_bfi == 2) + { + if (decoder->be_bp_right < (8 * np_zero)) + { + channel_bfi = 0; + decoder->be_bp_left = -1; + decoder->be_bp_right = -1; + } + else + { + decoder->be_bp_right = decoder->be_bp_right - (8 * np_zero); + decoder->be_bp_left = MAX(decoder->be_bp_left - (8 * np_zero), 0); + } + } + lc3_num_bytes = lc3_num_bytes - padding_len; + } +#endif + + if (channel_bfi != 1 && lc3_num_bytes != decoder->channel_setup[ch]->last_size) + { + err = update_dec_bitrate(decoder, ch, lc3_num_bytes); + if (err) + { + channel_bfi = 1; + decoder->last_error = err; + } + else + { + decoder->channel_setup[ch]->last_size = lc3_num_bytes; + } + } + + channel_bfi = Dec_LC3PLUS_Channel_fl(decoder, ch, input, output[ch], bps, channel_bfi); + + out_bfi |= channel_bfi; + input += fec_num_bytes; + } + + bfi = out_bfi & 1; + } + } + else + { + for (ch = 0; ch < decoder->channels; ch++) + { + lc3_num_bytes = num_bytes / decoder->channels + (ch < (num_bytes % decoder->channels)); + +#ifdef ENABLE_PADDING + if (bfi != 1) + { + LC3_INT32 padding_len = 0, np_zero = 0; + + if (paddingDec_fl(input, (lc3_num_bytes << 3), decoder->yLen, decoder->BW_cutoff_bits, decoder->ep_enabled, &padding_len, &np_zero)) + { + bfi = 1; + decoder->last_error = LC3PLUS_PADDING_ERROR; + } + + lc3_num_bytes = lc3_num_bytes - padding_len; + if (lc3_num_bytes < 20 || lc3_num_bytes > LC3PLUS_MAX_BYTES) + { + bfi = 1; /* mark frame as broken if frame size is below the minimum of 20 bytes or above the maximum of LC3PLUS_MAX_BYTES */ + decoder->last_error = FRAMESIZE_ERROR; + } + } +#endif + + if (bfi != 1 && lc3_num_bytes != decoder->channel_setup[ch]->last_size) + { + err = update_dec_bitrate(decoder, ch, lc3_num_bytes); + if (err) + { + bfi = 1; + decoder->last_error = err; + } + else + { + decoder->channel_setup[ch]->last_size = lc3_num_bytes; + } + } + + bfi = Dec_LC3PLUS_Channel_fl(decoder, ch, input, output[ch], bps, bfi); + input += decoder->channel_setup[ch]->targetBytes; + } + } + + if (decoder->last_error == LC3PLUS_OK && bfi) decoder->last_error = LC3PLUS_DECODE_ERROR; + return bfi == 1 ? LC3PLUS_DECODE_ERROR : LC3PLUS_OK; +} diff --git a/lc3plus/defines.h b/lc3plus/defines.h new file mode 100644 index 0000000000000000000000000000000000000000..d978fa4e15e73671ee23cb4eedad8eb9b681ba01 --- /dev/null +++ b/lc3plus/defines.h @@ -0,0 +1,238 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef DEFINES_H +#define DEFINES_H + +#include "stdint.h" + + +typedef float LC3_FLOAT; +typedef int32_t LC3_INT; +typedef int16_t LC3_INT16; +typedef uint16_t LC3_UINT16; +typedef short LC3_SHORT; +typedef uint8_t LC3_UINT8; +typedef int8_t LC3_INT8; +typedef uint32_t LC3_UINT32; + +/* Release defines */ +// #define ENABLE_2_5MS_MODE +#define ENABLE_5MS_MODE +#define ENABLE_10_MS_MODE +#define ENABLE_ADVANCED_PLC_FL +#define ENABLE_ADVANCED_PLC_FL_DEFAULT +#define ENABLE_BW_CONTROLLER +//#define ENABLE_HR_MODE_FL +#define ENABLE_PADDING +#define ENABLE_RFRAME_FL +#define ENABLE_PLC +/* flags */ +#define ENABLE_PLC_MODE_FLAG +#define ENABLE_BANDWIDTH_FLAG +#define ENABLE_EP_MODE_FLAG +#define ENABLE_FRAME_MS_FLAG +#define ENABLE_HR_MODE_FL_FLAG + +#ifndef NO_POST_REL_CHANGES +/* Post-release non-bitexact changes */ + +#endif /* NO_POST_REL_CHANGES */ + +/* Precision Defines */ +#define LC3_FABS(x) (fabsf(x)) +#define LC3_POW(x, y) (powf(x, y)) +#define LC3_LOGTEN(x) (log10f(x)) +#define LC3_LOGTWO(x) (log2f(x)) +# define LC3_COS(x) (cos(x)) +# define LC3_SIN(x) (sin(x)) +#define LC3_SQRT(x) (sqrtf(x)) +#define LC3_EXP(x) (expf(x)) + +# define MAX_BR 320000 /* 400 * 800 */ +# define MIN_BR_100DMS 16000 /* 20 * 800 * 100/100 */ +# define MIN_BR_025DMS 64000 /* 20 * 800 * 100/ 25 */ +# define MIN_BR_050DMS 32000 /* 20 * 800 * 100/ 50 */ +# define MAX_BR_050DMS_NB 260800 /* 163 * 800 * 100/ 50 */ +# define MAX_BR_100DMS_NB 114400 /* for 100ms at 8kHz */ + +# define MAX_BR_100DMS_WB 221600 /* for 100ms at 16kHz */ +# define MAX_BR_100DMS_SSWB 314400 /* for 100ms at 24kHz */ + +typedef int32_t LC3_INT32; + +# if defined(__xtensa__) +# define ALIGNMENT_BALLOC 4 +# define ALIGNMENT_BALLOC_RED 3 +# else +# define ALIGNMENT_BALLOC 8 +# define ALIGNMENT_BALLOC_RED 7 +# endif + +# define PLC2_FADEOUT_IN_MS 30 +# define PHECU_FRES 62.5 +# define PHECU_C_JACOB 1.1429 +# define MAX_LGW 9 /* LGW48K + 1 !! */ +# define QUOT_LPR_LTR 4 +# define MAX_PLC_LPROT ((512 * 48) / 32) +# define MAX_PLC_NPLOCS ((MAX_PLC_LPROT / 4) + 1) +# define MAX_PLC_LMSPEC ((MAX_PLC_LPROT / 2) + 1) +# define MAX_PLC_LMEM (400) /* "only" up to 20kHz (400 MDCT bins at 10 ms) at 48 kHz supported by PhEcu */ + +# define POS_ONE_Q15 (32767.0 / 32768.0) +# define PHECU_LTOT_MIN_MAN 1 /* lowest possible mantissa energy value */ +# define PHECU_LTOT_MIN_EXP -61 /* L_tot = PHECU_LTOT_MIN_MAN*2^(PHECU_LTOT_MIN_EXP-31) */ +# define PHECU_LTOT_MIN +# define PHECU_GRP_SHAPE_INIT 0 /* BASOP Q15 */ +# define PHECU_ENV_STAB_LOCAL POS_ONE_Q15 +# define PHECU_DELTA_CORR 5 +# define PHECU_PFIND_SENS 0.93 +# define PHECU_LA 0 + +# define LC3_ROUND(x) (roundf(x)) +# define LC3_FLOOR(x) (floorf(x)) + +# define LC3_CONST_POW_2_16 65536 +# define LC3_CONST_POW_2_M16 1.525878906250000e-05 +# define LC3_CONST_POW_2_100 1.267650600228229e+30 + +# define MAX_LEN_PCM_PLC (MAX_PITCH + MAX_LEN) +# define MAX_PITCH CEILING((MAX_PITCH_12K8 * MAX_LEN * 100), 12800) +# define TDC_L_FIR_HP 11 +# define PLC3_HPBLENDTHROTTLE 30 /* higher numbers increase throttled blending from hp filtered to unfiltered uv excitation (0 is no throttle) */ + +# define PLC_FADEOUT_IN_MS 60 /* fade-out to zero in ms for TD-PLC and NS, minimum value is 20 */ +# define PLC4_TRANSIT_START_IN_MS 20 /* begin of transition time for noise substitution for voiced signals */ +# define PLC4_TRANSIT_END_IN_MS PLC_FADEOUT_IN_MS /* end of transition time for noise substitution */ +# define PLC34_ATTEN_FAC_100 0.5000 /* attenuation factor for NS and TDC @ 10 ms*/ +# define PLC34_ATTEN_FAC_050 0.7071 /* attenuation factor for NS and TDC @ 5.0 ms*/ +# define PLC34_ATTEN_FAC_025 0.8409 /* attenuation factor for NS and TDC @ 2.5 ms*/ + +# define FEC_SLOT_BYTES_MIN 40 +# define FEC_SLOT_BYTES_MAX 400 + + +# define LC3_CONST_POW_2_M15 3.051757812500000e-05 +# define LC3_CONST_POW_2_23 8388608 +# define LC3_CONST_POW_2_23_NEG -8388608 +# define LC3_CONST_POW_2_23_RED 8388607 + +# define LC3_CONST_POW_2_100 1.267650600228229e+30 + +/* G192 bitstream writing/reading */ +#define G192_REDUNDANCY_FRAME 0x6B22 +#define G192_GOOD_FRAME 0x6B21 +#define G192_BAD_FRAME 0x6B20 +#define G192_ZERO 0x007F +#define G192_ONE 0x0081 +#define READ_G192FER /* Allow C executable to also read G192 formatted FER files */ + +# define LC3_EPS (1.1e-7f) + +#define M_PI 3.14159265358979323846 + +/* FUNCTION MACROS */ +#define CEILING(x, y) (((x) + (y)-1) / (y)) +#define FRAME2FS_IDX(x) (x / 100) /* 80 -> 0, 160 -> 1, 240 -> 2, 320 -> 3, 480 -> 4*/ +#define FS2FS_IDX(x) \ + (x / 10000) /* 8000 -> 0, 16000 -> 1, 24000 -> 2, 32000 -> 3, 48000 -> 4 \ + */ +#define UNUSED(x) (void)(x) /* silence unused parameter warning */ +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define STATIC_ASSERTS(cond, s) typedef char assert_##s[(cond) ? 1 : -1] +#define STATIC_ASSERTI(cond, i) STATIC_ASSERTS(cond, i) +#define STATIC_ASSERT(cond) STATIC_ASSERTI(cond, __LINE__) + +/* For dynamic memory calculations */ +#define CODEC_FS(fs) ((fs) == 44100 ? 48000 : (fs)) +#define DYN_MAX_LEN(fs) MAX(CODEC_FS(fs) / 100, 160) +# define DYN_MAX_LEN_EXT(fs) MAX(CODEC_FS(fs) / 100, 160) /* extension to length 160 for NB(fs=8000) */ +#define DYN_MAX_MDCT_LEN(fs) (DYN_MAX_LEN(fs) - (180 * DYN_MAX_LEN(fs) / 480)) + +/* OPTIONS */ + +#define MAX_SR 96000 +#define EXT_RES_ITER_MAX 20 +#define MAX_BW_BANDS_NUMBER 6 +#define MAX_LEN MAX_SR/100 /* = 10ms at 96kHz */ +#define MAX_RESBITS 5000 +#define MAX_RESBITS_LEN ((MAX_RESBITS + 7)/8) + +#define MAX_CHANNELS 2 +#define MIN_NBYTES 20 /* 100dms: 16 kbps at !=44.1kHz, 14.7kbps at 44.1kHz + 50dms: 32 kbps at !=44.1kHz, 29.4kbps at 44.1kHz + 25dms: 64 kbps at !=44.1kHz, 58.8kbps at 44.1kHz */ +#define MAX_NBYTES_025 100 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ +#define MAX_NBYTES_050 200 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ +#define MAX_NBYTES_100 400 /* any dms: 320 kbps at !=44.1kHz, 294 kbps at 44.1kHz */ + +#ifdef ENABLE_HR_MODE_FL +# define MIN_BR_25MS_48KHZ_HR ((int)172800/3200/2)*3200 +# define MIN_BR_25MS_96KHZ_HR ((int)198400/3200/2)*3200 +# define MIN_BR_50MS_48KHZ_HR ((int)148800/1600/2)*1600 +# define MIN_BR_50MS_96KHZ_HR ((int)174400/1600/2)*1600 +# define MIN_BR_100MS_48KHZ_HR ((int)124800/800/2)*800 +# define MIN_BR_100MS_96KHZ_HR ((int)149600/800/2)*800 +#endif /* ENABLE_HR_MODE */ +#define MAX_NBYTES2 625 +#define BYTESBUFSIZE (MAX_NBYTES2 * MAX_CHANNELS) +#define MAX_BW_BIN 400 +#if MAX_BW_BIN > MAX_LEN +# define MAX_BW MAX_LEN +#else +# define MAX_BW MAX_BW_BIN +#endif + +# ifdef ENABLE_HR_MODE_FL +# define MAX_BW_HR 960 +# endif + +/* SCF */ +#define M 16 +#define MAX_BANDS_NUMBER 64 +#define MAX_BANDS_NUMBER_PLC 80 +#define PVQ_MAX_VEC_SIZE M + +/* PVQ VQ setup */ +#define SCF_MAX_PARAM \ + 7 /* (L+H) + submode_MSB +gain+(Ia_leads+Ia_mpvq)+(Ib_joint_mpvq), \ + submode-LSB */ + +/* RESIDUAL CODING */ +#define NPRM_RESQ 5 * MAX_LEN + +/* MDCT */ +#define MDCT_MEM_LEN_MAX (MAX_LEN - ((180 * MAX_LEN) / 480)) + +/* TNS */ +#define TNS_NUMFILTERS_MAX 2 +#define MAXLAG 8 + +/* OLPA/LTPF */ +#define LEN_12K8 128 +#define LEN_6K4 64 +#define MIN_PITCH_6K4 17 +#define MAX_PITCH_6K4 114 +#define RANGE_PITCH_6K4 98 +#define MIN_PITCH_12K8 32 +#define MAX_PITCH_12K8 228 +#define RES2_PITCH_12K8 157 +#define RES4_PITCH_12K8 127 +#define LTPF_MEMIN_LEN (MAX_PITCH_12K8 + 4) + +/* Advanced PLC */ + + + +/* some configurations leave empty translation units. */ +extern int fix_empty_translation_unit_warning; + +#endif diff --git a/lc3plus/detect_cutoff_warped.c b/lc3plus/detect_cutoff_warped.c new file mode 100644 index 0000000000000000000000000000000000000000..9392867208e6d9270092e5789153a267c68f13e8 --- /dev/null +++ b/lc3plus/detect_cutoff_warped.c @@ -0,0 +1,84 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processDetectCutoffWarped_fl(LC3_FLOAT* d2, LC3_INT fs_idx, LC3_INT frame_dms, LC3_INT* bw_idx) +{ + const LC3_INT *warp_idx_start = NULL, *warp_idx_stop = NULL; + LC3_INT counter = 0, brickwall = 0, i = 0, stop = 0, dist = 0; + LC3_FLOAT d2_mean = 0, d2_sum = 0, e_diff = 0, thr = 0; + const LC3_INT *bw_dist = NULL; + + warp_idx_start = BW_warp_idx_start_all[fs_idx - 1]; + warp_idx_stop = BW_warp_idx_stop_all[fs_idx - 1]; + + switch (frame_dms) + { + case 25: + warp_idx_start = BW_warp_idx_start_all_2_5ms[fs_idx - 1]; + warp_idx_stop = BW_warp_idx_stop_all_2_5ms[fs_idx - 1]; + bw_dist = brickwall_dist; + break; + case 50: + warp_idx_start = BW_warp_idx_start_all_5ms[fs_idx - 1]; + warp_idx_stop = BW_warp_idx_stop_all_5ms[fs_idx - 1]; + bw_dist = brickwall_dist; + break; + case 100: + warp_idx_start = BW_warp_idx_start_all[fs_idx - 1]; + warp_idx_stop = BW_warp_idx_stop_all[fs_idx - 1]; + bw_dist = brickwall_dist; + break; + } + + counter = fs_idx; + + d2_sum = sum_vec(&d2[warp_idx_start[counter - 1]], warp_idx_stop[counter - 1] - warp_idx_start[counter - 1] + 1); + + d2_mean = d2_sum / (warp_idx_stop[counter - 1] - warp_idx_start[counter - 1] + 1); + + while (d2_mean < threshold_quiet[counter - 1]) { + d2_sum = 0; + counter--; + if (counter == 0) { + break; + } + + /* calculate mean energy per band */ + d2_sum = + sum_vec(&d2[warp_idx_start[counter - 1]], warp_idx_stop[counter - 1] - warp_idx_start[counter - 1] + 1); + + d2_mean = d2_sum / (warp_idx_stop[counter - 1] - warp_idx_start[counter - 1] + 1); + } + + *bw_idx = counter; + + /* check if energy difference between bands is present */ + if (*bw_idx < fs_idx) { + thr = (LC3_FLOAT)threshold_brickwall[counter]; + stop = warp_idx_start[counter]; + dist = bw_dist[counter]; + + for (i = stop; i >= stop - dist; i--) { + e_diff = 10.0 * LC3_LOGTEN(d2[i - dist + 1] + FLT_EPSILON) - 10.0 * LC3_LOGTEN(d2[i + 1] + FLT_EPSILON); + + if (e_diff > thr) { + brickwall = 1; + break; + } + } + + if (brickwall == 0) { + *bw_idx = fs_idx; + } + } +} diff --git a/lc3plus/enc_entropy.c b/lc3plus/enc_entropy.c new file mode 100644 index 0000000000000000000000000000000000000000..a7ff8cd70006ea601d7ffa0b579989a3258ba9f7 --- /dev/null +++ b/lc3plus/enc_entropy.c @@ -0,0 +1,126 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processEncoderEntropy_fl(LC3_UINT8* bytes, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT numbytes, LC3_INT bw_cutoff_bits, + LC3_INT bw_cutoff_idx, LC3_INT lastnz, LC3_INT N, LC3_INT lsbMode, LC3_INT gg_idx, LC3_INT num_tns_filters, + LC3_INT* tns_order, LC3_INT* ltpf_idx, LC3_INT* scf_idx, LC3_INT fac_ns_idx + , LC3_INT bfi_ext, LC3_INT fs_idx + ) +{ + LC3_UINT8* ptr; + LC3_INT i = 0, submodeMSB = 0, submodeLSB = 0, tmp = 0, gainMSB = 0, gainLSB = 0; + LC3_INT gainMSBbits[4] = {1, 1, 2, 2}, gainLSBbits[4] = {0, 1, 0, 1}; + + LC3_INT16 lastnzTrigger[5] = {63, 127, 127, 255, 255}; + + *bp_side = numbytes - 1; + *mask_side = 1; + ptr = bytes; + + /* Bandwidth */ + if (bw_cutoff_bits > 0) { + write_uint_backward_fl(ptr, bp_side, mask_side, bw_cutoff_idx, bw_cutoff_bits); + } + + /* Last non zero touple */ + if (bfi_ext == 1) { + write_uint_backward_fl(ptr, bp_side, mask_side, lastnzTrigger[fs_idx], ceil(LC3_LOGTWO(N >> 1))); + } + else + { + write_uint_backward_fl(ptr, bp_side, mask_side, lastnz / 2 - 1, ceil(LC3_LOGTWO(N / 2))); + } + + /* LSB mode bit */ + write_bit_backward_fl(ptr, bp_side, mask_side, lsbMode); + + /* Global gain */ + write_uint_backward_fl(ptr, bp_side, mask_side, gg_idx, 8); + + /* TNS activation flag */ + for (i = 0; i < num_tns_filters; i++) { + write_bit_backward_fl(ptr, bp_side, mask_side, MIN(1, tns_order[i])); + } + + /* LTPF activation flag */ + write_bit_backward_fl(ptr, bp_side, mask_side, ltpf_idx[0]); + + /* SNS-VQ 1st stage */ + write_uint_backward_fl(ptr, bp_side, mask_side, scf_idx[0], 5); + write_uint_backward_fl(ptr, bp_side, mask_side, scf_idx[1], 5); + + /* SNS-VQ 2nd stage side-info (3-4 bits) */ + submodeMSB = scf_idx[2] / 2; + submodeLSB = scf_idx[2] & 1; + write_bit_backward_fl(ptr, bp_side, mask_side, submodeMSB); + gainMSB = scf_idx[3] >> (gainLSBbits[scf_idx[2]]); + gainLSB = scf_idx[3] & 1; + write_uint_backward_fl(ptr, bp_side, mask_side, gainMSB, gainMSBbits[scf_idx[2]]); + write_bit_backward_fl(ptr, bp_side, mask_side, scf_idx[4]); + + /* SNS-VQ 2nd stage MPVQ data (24-25 bits) */ + if (submodeMSB == 0) { + if (submodeLSB == 0) { + tmp = scf_idx[6] + 2; + } else { + tmp = gainLSB; + } + + tmp = tmp * 2390004 + scf_idx[5]; + write_uint_backward_fl(ptr, bp_side, mask_side, tmp, 25); + } else { + tmp = scf_idx[5]; + + if (submodeLSB != 0) { + tmp = 2 * tmp + gainLSB + 15158272; + } + + write_uint_backward_fl(ptr, bp_side, mask_side, tmp, 24); + } + + /* LTPF data */ + if (ltpf_idx[0] == 1) { + write_uint_backward_fl(ptr, bp_side, mask_side, ltpf_idx[1], 1); + write_uint_backward_fl(ptr, bp_side, mask_side, ltpf_idx[2], 9); + } + + /* Noise factor */ + write_uint_backward_fl(ptr, bp_side, mask_side, fac_ns_idx, 3); +} + +void write_uint_backward_fl(LC3_UINT8* ptr, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT val, LC3_INT numbits) +{ + LC3_INT k = 0, bit = 0; + + for (k = 0; k < numbits; k++) { + bit = val & 1; + write_bit_backward_fl(ptr, bp_side, mask_side, bit); + val = val / 2; + } +} + +void write_bit_backward_fl(LC3_UINT8* ptr, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT bit) +{ + if (bit == 0) { + ptr[*bp_side] = ptr[*bp_side] & (255 - *mask_side); + } else { + ptr[*bp_side] = ptr[*bp_side] | *mask_side; + } + + if (*mask_side == 128) { + *mask_side = 1; + *bp_side = *bp_side - 1; + } else { + *mask_side = *mask_side * 2; + } +} diff --git a/lc3plus/enc_lc3_fl.c b/lc3plus/enc_lc3_fl.c new file mode 100644 index 0000000000000000000000000000000000000000..c89f7244ca8e03bc7593d0a49ebc873f14981c8c --- /dev/null +++ b/lc3plus/enc_lc3_fl.c @@ -0,0 +1,270 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static void Enc_LC3PLUS_Channel_fl(LC3PLUS_Enc* encoder, int channel, int32_t* s_in, uint8_t* bytes, int bps +, LC3_INT32 bfi_ext +) +{ + EncSetup* h_EncSetup; + + LC3_INT s_12k8_len = 0, T0_out = 0, ltpfBits = 0, BW_cutoff_idx = 0, tns_numfilters = 0, quantizedGain = 0, + quantizedGainMin = 0, nbits = 0, nbits2 = 0, lastnz = 0, lsbMode = 0, gainChange = 0, bp_side = 0, + mask_side = 0, fac_ns_idx = 0, numResBits = 0, tns_order[2] = {0}, i = 0; + LC3_FLOAT normcorr = 0, gain = 0; + + + LC3_FLOAT d_fl[MAX_LEN] = {0}; + LC3_INT q_d[MAX_LEN] = {0}; + LC3_INT indexes[TNS_NUMFILTERS_MAX * MAXLAG] = {0}; + + h_EncSetup = encoder->channel_setup[channel]; + memset(bytes, 0, sizeof(uint8_t) * h_EncSetup->targetBytes); + + if (bps == 24) { + for (i = 0; i < encoder->frame_length; i++) { + int32_t tmp = ((int32_t*)s_in)[i]; + + if (tmp >= 0) + { + tmp = tmp & 0x007fffff; + } + else + { + tmp = tmp | (int32_t)0xff800000; + } + + h_EncSetup->s_in_scaled[i] = ((LC3_FLOAT) tmp / (float) LC3_POW(2, 8)); + } + } else if (bps == 16) { + for (i = 0; i < encoder->frame_length; i++) { + h_EncSetup->s_in_scaled[i] = (LC3_FLOAT)((int16_t*)s_in)[i]; + } + } + + /* MDCT */ + processMdct_fl(h_EncSetup->s_in_scaled, d_fl, &h_EncSetup->mdctStruct); + + /* 12.8 kHz resampler */ + process_resamp12k8_fl(h_EncSetup->s_in_scaled, encoder->frame_length, h_EncSetup->r12k8_mem_in, + encoder->r12k8_mem_in_len, h_EncSetup->r12k8_mem_50, h_EncSetup->r12k8_mem_out, + encoder->r12k8_mem_out_len, h_EncSetup->s_12k8, &s_12k8_len, encoder->fs_idx, + encoder->frame_dms, encoder->fs); + + /* Pitch estimation */ + processOlpa_fl(h_EncSetup->s_12k8, h_EncSetup->olpa_mem_s12k8, h_EncSetup->olpa_mem_s6k4, + &h_EncSetup->olpa_mem_pitch, &T0_out, &normcorr, s_12k8_len, encoder->frame_dms); + + /* LTPF encoder */ + process_ltpf_coder_fl(h_EncSetup->s_12k8, s_12k8_len + 1, h_EncSetup->ltpf_enable, T0_out, normcorr, + encoder->frame_dms, h_EncSetup->ltpf_mem_in, encoder->ltpf_mem_in_len, + &h_EncSetup->ltpf_mem_normcorr, &h_EncSetup->ltpf_mem_ltpf_on, + &h_EncSetup->ltpf_mem_pitch, h_EncSetup->ltpf_param, &h_EncSetup->ltpf_mem_mem_normcorr, + <pfBits); + + /* Attack detector */ + attack_detector_fl(h_EncSetup->s_in_scaled, encoder->frame_length, encoder->fs, &h_EncSetup->attdec_position, + &h_EncSetup->attdec_acc_energy, &h_EncSetup->attdec_detected, h_EncSetup->attdec_filter_mem, + h_EncSetup->attack_handling, encoder->attdec_nblocks, encoder->attdec_hangover_thresh); + + /* Per-band energy */ + processPerBandEnergy_fl(encoder->bands_number, encoder->bands_offset, encoder->hrmode, encoder->frame_dms, h_EncSetup->ener, d_fl); + /* Near Nyquist detector */ + processNearNyquistdetector_fl(&encoder->near_nyquist_flag, encoder->fs_idx, encoder->near_nyquist_index, encoder->bands_number, h_EncSetup->ener); + + /* Disable LTPF if nyquist detector triggers or -lfe mode is active*/ + if (encoder->near_nyquist_flag != 0 || h_EncSetup->lfe == 1) + { + h_EncSetup->ltpf_mem_ltpf_on = 0; + h_EncSetup->ltpf_param[1] = 0; + } + + /* Bandwidth cut-off detection */ + if (h_EncSetup->lfe == 0) { + /* No BW Cutoff for 8 kHz and 96 kHz. No detection if bandwidth controller is active */ + if (encoder->fs_idx > 0 && encoder->hrmode == 0 && encoder->bw_ctrl_active == 0) { + processDetectCutoffWarped_fl(h_EncSetup->ener, encoder->fs_idx, encoder->frame_dms, &BW_cutoff_idx); + } else { + BW_cutoff_idx = encoder->fs_idx; + } + } else { + BW_cutoff_idx = 0; + } + + processSnsComputeScf_fl(h_EncSetup->ener, encoder->tilt, encoder->bands_number, h_EncSetup->scf, + h_EncSetup->attdec_detected, encoder->sns_damping, encoder->attdec_damping); + + /* SNS Quantizer */ + process_snsQuantizesScf_Enc(h_EncSetup->scf, h_EncSetup->L_scf_idx, h_EncSetup->scf_q, h_EncSetup->dct2StructSNS); + + /* SNS Interpolation */ + processSnsInterpolateScf_fl(h_EncSetup->scf_q, 1, encoder->bands_number, h_EncSetup->int_scf); + + /* MDCT shaping */ + processMdctShaping_fl(d_fl, h_EncSetup->int_scf, encoder->bands_offset, encoder->bands_number); + + /* Bandwidth controller */ + if (encoder->bandwidth < encoder->fs / 2) { + process_cutoff_bandwidth(d_fl, encoder->yLen, encoder->bw_ctrl_cutoff_bin); + BW_cutoff_idx = MIN(BW_cutoff_idx, encoder->bw_index); + } + + /* TNS encoder */ + if (h_EncSetup->lfe == 0) + { + processTnsCoder_fl(d_fl, BW_cutoff_idx, encoder->cutoffBins[BW_cutoff_idx], encoder->fs, encoder->frame_length, + encoder->frame_dms, h_EncSetup->total_bits, tns_order, indexes, &tns_numfilters, + &(h_EncSetup->tns_bits) + , encoder->near_nyquist_flag + ); + } + else + { + tns_numfilters = 1; + tns_order[0] = 0; + h_EncSetup->tns_bits = tns_numfilters; + } + /* Global Gain Estimation */ + h_EncSetup->targetBitsQuant = h_EncSetup->targetBitsInit - (h_EncSetup->tns_bits + ltpfBits); + + if (h_EncSetup->targetBitsQuant < 0 && ltpfBits > 1) + { + /* Disable LTPF */ + h_EncSetup->ltpf_mem_ltpf_on = 0; + h_EncSetup->ltpf_param[1] = 0; + ltpfBits = 1; + h_EncSetup->targetBitsQuant = h_EncSetup->targetBitsInit - (h_EncSetup->tns_bits + ltpfBits); + } + + processEstimateGlobalGain_fl(d_fl, encoder->yLen, h_EncSetup->targetBitsQuant, &gain, &quantizedGain, + &quantizedGainMin, h_EncSetup->quantizedGainOff, &h_EncSetup->targetBitsOff, + &h_EncSetup->mem_targetBits, h_EncSetup->mem_specBits + , encoder->hrmode, h_EncSetup->regBits, encoder->frame_ms + + ); + + /* 1. Quantization */ + processQuantizeSpec_fl(d_fl, gain, q_d, encoder->yLen, h_EncSetup->total_bits, &nbits, &nbits2, encoder->fs, + &lastnz, h_EncSetup->codingdata, &lsbMode, -1, h_EncSetup->targetBitsQuant, encoder->hrmode + ); + + h_EncSetup->mem_specBits = nbits; + + /* Global Gain Adjustment */ + processAdjustGlobalGain_fl(&quantizedGain, quantizedGainMin, h_EncSetup->quantizedGainOff, &gain, + h_EncSetup->targetBitsQuant, h_EncSetup->mem_specBits, &gainChange, encoder->fs_idx + , encoder->hrmode, encoder->frame_dms + ); + + /* 2. Quantization */ + if (gainChange) { + processQuantizeSpec_fl(d_fl, gain, q_d, encoder->yLen, h_EncSetup->total_bits, &nbits, &nbits2, encoder->fs, + &lastnz, + h_EncSetup->codingdata, + &lsbMode, 0, h_EncSetup->targetBitsQuant + , encoder->hrmode + ); + } + + /* Noise factor */ + if (h_EncSetup->lfe == 0) + { + processNoiseFactor_fl(&fac_ns_idx, d_fl, q_d, gain, encoder->cutoffBins[BW_cutoff_idx], encoder->frame_dms, + h_EncSetup->targetBytes + ); + } + else + { + fac_ns_idx = 7; + } + /* Residual Coding */ + if (lsbMode == 0) { + processResidualCoding_fl(d_fl, q_d, gain, encoder->yLen, h_EncSetup->targetBitsQuant, nbits2, + h_EncSetup->resBits, &numResBits + , encoder->hrmode + ); + } else { + numResBits = 0; + } + + /* Entropy encoding */ + processEncoderEntropy_fl(bytes, &bp_side, &mask_side, h_EncSetup->targetBytes, encoder->BW_cutoff_bits, + BW_cutoff_idx, lastnz, encoder->yLen, lsbMode, quantizedGain, tns_numfilters, tns_order, + h_EncSetup->ltpf_param, h_EncSetup->L_scf_idx, fac_ns_idx + , bfi_ext, encoder->fs_idx + ); + + /* Artithmetic encoding */ + processAriEncoder_fl(bytes, bp_side, mask_side, q_d, tns_order, tns_numfilters, indexes, lastnz, + h_EncSetup->codingdata, + h_EncSetup->resBits, numResBits, lsbMode, h_EncSetup->targetBitsAri, + h_EncSetup->enable_lpc_weighting); + + if (encoder->combined_channel_coding == 0 && h_EncSetup->n_pc > 0) + { + LC3_INT32 xbuf[MAX_LEN] = {0}, nf_seed, tns_idx[M], zero_frame, nbits_residual, residualPresent, b_left, spec_inv_idx; + + memset(h_EncSetup->resBits, 0, sizeof(*(h_EncSetup->resBits)) * MAX_RESBITS_LEN); + + processAriDecoder_fl(bytes, bp_side, mask_side, encoder->yLen, encoder->fs_idx, h_EncSetup->enable_lpc_weighting, + tns_numfilters, lsbMode, lastnz, &bfi_ext, tns_order, fac_ns_idx, quantizedGain, + h_EncSetup->resBits, xbuf, &nf_seed, tns_idx, &zero_frame, h_EncSetup->targetBytes, &nbits_residual, + &residualPresent, encoder->frame_dms, h_EncSetup->n_pc, 0, h_EncSetup->total_bits >> 3, 1, &b_left, + &spec_inv_idx, encoder->hrmode); + + processReorderBitstream_fl(bytes, h_EncSetup->n_pccw, h_EncSetup->n_pc, b_left, h_EncSetup->targetBytes); + } + +} + +int Enc_LC3PLUS_fl(LC3PLUS_Enc* encoder, void** input, uint8_t* output, int bps +, LC3_INT32 bfi_ext +) +{ + int ch = 0, output_size = 0; + uint8_t* lc3buf = output; + + LC3_INT32 totalBytes; + LC3_INT32 output_size2, input_size; + + totalBytes = encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in); + + for (ch = 0; ch < encoder->channels; ch++) + { + Enc_LC3PLUS_Channel_fl(encoder, ch, input[ch], lc3buf, bps, bfi_ext); + if (encoder->epmode && encoder->combined_channel_coding == 0) + { + output_size2 = totalBytes / encoder->channels + (ch < (totalBytes % encoder->channels)); + + fec_encoder(encoder->epmode, encoder->epmr, lc3buf, encoder->channel_setup[ch]->targetBytes, output_size2, + encoder->channel_setup[ch]->n_pccw); + + lc3buf += output_size2; + output_size += output_size2; + } + else + { + lc3buf += encoder->channel_setup[ch]->targetBytes; + output_size += encoder->channel_setup[ch]->targetBytes; + } + } + + if (encoder->epmode > 0 && encoder->combined_channel_coding) + { + input_size = output_size; + output_size = encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in); + + fec_encoder(encoder->epmode, encoder->epmr, output, input_size, output_size, encoder->channel_setup[0]->n_pccw); + } + + return output_size; +} diff --git a/lc3plus/estimate_global_gain.c b/lc3plus/estimate_global_gain.c new file mode 100644 index 0000000000000000000000000000000000000000..df9b1f5f238f39cfe0c41ae58c398b8746a970df --- /dev/null +++ b/lc3plus/estimate_global_gain.c @@ -0,0 +1,128 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processEstimateGlobalGain_fl(LC3_FLOAT x[], LC3_INT lg, LC3_INT nbitsSQ, LC3_FLOAT* gain, LC3_INT* quantizedGain, + LC3_INT* quantizedGainMin, LC3_INT quantizedGainOff, LC3_FLOAT* targetBitsOff, + LC3_INT* old_targetBits, LC3_INT old_specBits + , LC3_INT hrmode , LC3_INT regBits, LC3_FLOAT frame_ms +) +{ + + LC3_INT i = 0, N = 0, offset = 0, j = 0, iszero = 0; + LC3_FLOAT g_min = 0, x_max = 0, tmp = 0, ind = 0, ind_min = 0, target = 0, fac = 0, ener = 0; + LC3_FLOAT en[MAX_LEN / 4] = {0}; + LC3_FLOAT reg_val = 4.656612873077393e-10; + + if (*old_targetBits < 0) { + *targetBitsOff = 0; + } else { + tmp = MIN(40, MAX(-40, *targetBitsOff + *old_targetBits - old_specBits)); + *targetBitsOff = 0.8 * *targetBitsOff + 0.2 * tmp; + } + + *old_targetBits = nbitsSQ; + nbitsSQ = nbitsSQ + round(*targetBitsOff); + + x_max = array_max_abs(x, lg); + + if (hrmode && regBits > 0) + { + LC3_FLOAT M0 = 1e-5, M1 = 1e-5, rB_offset; + LC3_FLOAT thresh = 2*frame_ms; + for (i = 0; i < lg; i++) + { + M0 += fabs(x[i]); + M1 += i*fabs(x[i]); + } + + rB_offset = 8 * (1 - MIN(M1/M0, thresh) / thresh); + reg_val = x_max * LC3_POW(2,-regBits - rB_offset); + } + + if (x_max < LC3_EPS) + { + ind_min = quantizedGainOff; + ind = 0; + *old_targetBits = -1; + } else { + if (hrmode == 1) { + g_min = x_max / (32768 * 256 - 2); + } else { + g_min = x_max / (32767 - 0.375); + } + /* Prevent positive rounding errors from LC3_LOGTEN function */ + ind_min = 28.0 * LC3_LOGTEN(g_min); + + ind_min = ceil(ind_min + LC3_FABS(ind_min) * LC3_EPS); + + assert(LC3_POW(10, ind_min / 28.0) >= g_min); + assert(ind_min <= (255 + quantizedGainOff)); + + N = lg; + + j = 0; + for (i = 0; i < N; i = i + 4) { + tmp = x[i] * x[i]; + tmp += x[i + 1] * x[i + 1]; + tmp += x[i + 2] * x[i + 2]; + tmp += x[i + 3] * x[i + 3]; + en[j] = (28.0 / 20.0) * (7 + 10.0 * LC3_LOGTEN(tmp + reg_val)); + j++; + } + + target = (28.0 / 20.0) * (1.4) * nbitsSQ; + fac = 256; + offset = 255 + quantizedGainOff; + + for (i = 0; i < 8; i++) { + fac = fac * 0.5; + offset = offset - fac; + ener = 0; + iszero = 1; + + for (j = N / 4 - 1; j >= 0; j--) { + tmp = en[j] - offset; + + if (tmp < (7.0) * (28.0 / 20.0)) { + if (iszero == 0) { + ener = ener + (2.7) * (28.0 / 20.0); + } + } else { + if (tmp > (50.0) * (28.0 / 20.0)) { + ener = ener + 2.0 * tmp - (50.0) * (28.0 / 20.0); + } else { + ener = ener + tmp; + } + + iszero = 0; + } + } + + if (ener > target && iszero == 0) { + offset = offset + fac; + } + } + + if (offset < ind_min) { + *old_targetBits = -1; + } + + ind = MAX(ind_min, offset) - quantizedGainOff; + } + + *quantizedGainMin = ind_min; + *quantizedGain = ind; + + *gain = LC3_POW(10.0, ((ind + quantizedGainOff) / 28.0)); +} diff --git a/lc3plus/fft/cfft.c b/lc3plus/fft/cfft.c new file mode 100644 index 0000000000000000000000000000000000000000..4bd8d29ade753c2c594dc34d0680fbdb3b9c5e8a --- /dev/null +++ b/lc3plus/fft/cfft.c @@ -0,0 +1,421 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "cfft.h" +#include "iisfft.h" /* for M_PIl */ +#include /* for abs() */ +#include + +#define MAX_FFT_SIZE 1024 +#define MAX_TRIGDATA_SIZE (MAX_FFT_SIZE / 2) + +/** + * \brief table aTrigData + + Generate table: aTrigData[i] = sin( pi * i / (2*MAX_TRIGDATA_SIZE) ); i = 0, ... MAX_TRIGDATA_SIZE + */ +static const LC3_FLOAT static_table[MAX_TRIGDATA_SIZE + 1] = { + 0.0000000000e+000, 3.0679567717e-003, 6.1358846724e-003, 9.2037543654e-003, 1.2271538377e-002, 1.5339205973e-002, + 1.8406730145e-002, 2.1474080160e-002, 2.4541229010e-002, 2.7608145028e-002, 3.0674804002e-002, 3.3741172403e-002, + 3.6807224154e-002, 3.9872925729e-002, 4.2938258499e-002, 4.6003181487e-002, 4.9067676067e-002, 5.2131704986e-002, + 5.5195245892e-002, 5.8258265257e-002, 6.1320737004e-002, 6.4382627606e-002, 6.7443922162e-002, 7.0504575968e-002, + 7.3564566672e-002, 7.6623864472e-002, 7.9682439566e-002, 8.2740262151e-002, 8.5797309875e-002, 8.8853552938e-002, + 9.1908954084e-002, 9.4963498414e-002, 9.8017141223e-002, 1.0106986016e-001, 1.0412163287e-001, 1.0717242211e-001, + 1.1022220552e-001, 1.1327095330e-001, 1.1631862819e-001, 1.1936521530e-001, 1.2241067737e-001, 1.2545497715e-001, + 1.2849810719e-001, 1.3154003024e-001, 1.3458070159e-001, 1.3762012124e-001, 1.4065824449e-001, 1.4369502664e-001, + 1.4673046768e-001, 1.4976453781e-001, 1.5279719234e-001, 1.5582840145e-001, 1.5885815024e-001, 1.6188639402e-001, + 1.6491311789e-001, 1.6793829203e-001, 1.7096188664e-001, 1.7398387194e-001, 1.7700421810e-001, 1.8002289534e-001, + 1.8303988874e-001, 1.8605515361e-001, 1.8906866014e-001, 1.9208039343e-001, 1.9509032369e-001, 1.9809840620e-001, + 2.0110464096e-001, 2.0410896838e-001, 2.0711137354e-001, 2.1011184156e-001, 2.1311031282e-001, 2.1610680223e-001, + 2.1910123527e-001, 2.2209362686e-001, 2.2508391738e-001, 2.2807207704e-001, 2.3105810583e-001, 2.3404195905e-001, + 2.3702360690e-001, 2.4000301957e-001, 2.4298018217e-001, 2.4595504999e-001, 2.4892760813e-001, 2.5189781189e-001, + 2.5486564636e-001, 2.5783109665e-001, 2.6079410315e-001, 2.6375466585e-001, 2.6671275496e-001, 2.6966831088e-001, + 2.7262136340e-001, 2.7557182312e-001, 2.7851969004e-001, 2.8146493435e-001, 2.8440752625e-001, 2.8734746575e-001, + 2.9028466344e-001, 2.9321914911e-001, 2.9615089297e-001, 2.9907983541e-001, 3.0200594664e-001, 3.0492922664e-001, + 3.0784964561e-001, 3.1076714396e-001, 3.1368175149e-001, 3.1659337878e-001, 3.1950202584e-001, 3.2240769267e-001, + 3.2531028986e-001, 3.2820984721e-001, 3.3110630512e-001, 3.3399966359e-001, 3.3688986301e-001, 3.3977687359e-001, + 3.4266072512e-001, 3.4554132819e-001, 3.4841868281e-001, 3.5129275918e-001, 3.5416352749e-001, 3.5703095794e-001, + 3.5989505053e-001, 3.6275571585e-001, 3.6561298370e-001, 3.6846682429e-001, 3.7131720781e-001, 3.7416407466e-001, + 3.7700742483e-001, 3.7984719872e-001, 3.8268342614e-001, 3.8551604748e-001, 3.8834503293e-001, 3.9117038250e-001, + 3.9399203658e-001, 3.9680999517e-001, 3.9962419868e-001, 4.0243464708e-001, 4.0524131060e-001, 4.0804415941e-001, + 4.1084316373e-001, 4.1363832355e-001, 4.1642954946e-001, 4.1921690106e-001, 4.2200025916e-001, 4.2477968335e-001, + 4.2755508423e-001, 4.3032649159e-001, 4.3309381604e-001, 4.3585708737e-001, 4.3861624599e-001, 4.4137126207e-001, + 4.4412213564e-001, 4.4686883688e-001, 4.4961133599e-001, 4.5234957337e-001, 4.5508357882e-001, 4.5781329274e-001, + 4.6053871512e-001, 4.6325978637e-001, 4.6597650647e-001, 4.6868881583e-001, 4.7139674425e-001, 4.7410020232e-001, + 4.7679921985e-001, 4.7949376702e-001, 4.8218378425e-001, 4.8486924171e-001, 4.8755016923e-001, 4.9022647738e-001, + 4.9289819598e-001, 4.9556526542e-001, 4.9822765589e-001, 5.0088536739e-001, 5.0353837013e-001, 5.0618666410e-001, + 5.0883013010e-001, 5.1146882772e-001, 5.1410275698e-001, 5.1673179865e-001, 5.1935601234e-001, 5.2197527885e-001, + 5.2458965778e-001, 5.2719914913e-001, 5.2980363369e-001, 5.3240311146e-001, 5.3499764204e-001, 5.3758704662e-001, + 5.4017144442e-001, 5.4275077581e-001, 5.4532498121e-001, 5.4789406061e-001, 5.5045795441e-001, 5.5301672220e-001, + 5.5557024479e-001, 5.5811852217e-001, 5.6066155434e-001, 5.6319934130e-001, 5.6573182344e-001, 5.6825894117e-001, + 5.7078075409e-001, 5.7329714298e-001, 5.7580816746e-001, 5.7831376791e-001, 5.8081394434e-001, 5.8330863714e-001, + 5.8579784632e-001, 5.8828157187e-001, 5.9075969458e-001, 5.9323227406e-001, 5.9569931030e-001, 5.9816068411e-001, + 6.0061645508e-001, 6.0306662321e-001, 6.0551106930e-001, 6.0794979334e-001, 6.1038279533e-001, 6.1281007528e-001, + 6.1523157358e-001, 6.1764729023e-001, 6.2005722523e-001, 6.2246125937e-001, 6.2485951185e-001, 6.2725180387e-001, + 6.2963825464e-001, 6.3201874495e-001, 6.3439327478e-001, 6.3676184416e-001, 6.3912445307e-001, 6.4148104191e-001, + 6.4383155107e-001, 6.4617604017e-001, 6.4851438999e-001, 6.5084666014e-001, 6.5317285061e-001, 6.5549284220e-001, + 6.5780669451e-001, 6.6011434793e-001, 6.6241580248e-001, 6.6471099854e-001, 6.6699993610e-001, 6.6928261518e-001, + 6.7155897617e-001, 6.7382901907e-001, 6.7609268427e-001, 6.7835003138e-001, 6.8060100079e-001, 6.8284553289e-001, + 6.8508368731e-001, 6.8731534481e-001, 6.8954056501e-001, 6.9175922871e-001, 6.9397145510e-001, 6.9617712498e-001, + 6.9837623835e-001, 7.0056879520e-001, 7.0275473595e-001, 7.0493406057e-001, 7.0710676908e-001, 7.0927280188e-001, + 7.1143221855e-001, 7.1358484030e-001, 7.1573084593e-001, 7.1787005663e-001, 7.2000253201e-001, 7.2212821245e-001, + 7.2424709797e-001, 7.2635912895e-001, 7.2846436501e-001, 7.3056274652e-001, 7.3265427351e-001, 7.3473888636e-001, + 7.3681658506e-001, 7.3888731003e-001, 7.4095112085e-001, 7.4300795794e-001, 7.4505776167e-001, 7.4710059166e-001, + 7.4913638830e-001, 7.5116515160e-001, 7.5318682194e-001, 7.5520139933e-001, 7.5720882416e-001, 7.5920921564e-001, + 7.6120239496e-001, 7.6318842173e-001, 7.6516723633e-001, 7.6713889837e-001, 7.6910334826e-001, 7.7106052637e-001, + 7.7301043272e-001, 7.7495312691e-001, 7.7688848972e-001, 7.7881652117e-001, 7.8073722124e-001, 7.8265058994e-001, + 7.8455656767e-001, 7.8645521402e-001, 7.8834640980e-001, 7.9023021460e-001, 7.9210656881e-001, 7.9397547245e-001, + 7.9583692551e-001, 7.9769086838e-001, 7.9953724146e-001, 8.0137616396e-001, 8.0320751667e-001, 8.0503135920e-001, + 8.0684757233e-001, 8.0865615606e-001, 8.1045717001e-001, 8.1225061417e-001, 8.1403630972e-001, 8.1581443548e-001, + 8.1758481264e-001, 8.1934750080e-001, 8.2110249996e-001, 8.2284981012e-001, 8.2458931208e-001, 8.2632106543e-001, + 8.2804507017e-001, 8.2976120710e-001, 8.3146959543e-001, 8.3317017555e-001, 8.3486288786e-001, 8.3654773235e-001, + 8.3822470903e-001, 8.3989381790e-001, 8.4155499935e-001, 8.4320825338e-001, 8.4485358000e-001, 8.4649091959e-001, + 8.4812033176e-001, 8.4974175692e-001, 8.5135519505e-001, 8.5296058655e-001, 8.5455799103e-001, 8.5614734888e-001, + 8.5772860050e-001, 8.5930180550e-001, 8.6086696386e-001, 8.6242395639e-001, 8.6397284269e-001, 8.6551362276e-001, + 8.6704623699e-001, 8.6857068539e-001, 8.7008696795e-001, 8.7159508467e-001, 8.7309497595e-001, 8.7458664179e-001, + 8.7607008219e-001, 8.7754529715e-001, 8.7901222706e-001, 8.8047087193e-001, 8.8192129135e-001, 8.8336336613e-001, + 8.8479709625e-001, 8.8622254133e-001, 8.8763964176e-001, 8.8904833794e-001, 8.9044874907e-001, 8.9184069633e-001, + 8.9322429895e-001, 8.9459949732e-001, 8.9596623182e-001, 8.9732456207e-001, 8.9867448807e-001, 9.0001589060e-001, + 9.0134882927e-001, 9.0267330408e-001, 9.0398931503e-001, 9.0529674292e-001, 9.0659570694e-001, 9.0788608789e-001, + 9.0916800499e-001, 9.1044127941e-001, 9.1170603037e-001, 9.1296219826e-001, 9.1420978308e-001, 9.1544872522e-001, + 9.1667908430e-001, 9.1790080070e-001, 9.1911387444e-001, 9.2031830549e-001, 9.2151403427e-001, 9.2270112038e-001, + 9.2387950420e-001, 9.2504924536e-001, 9.2621022463e-001, 9.2736250162e-001, 9.2850607634e-001, 9.2964088917e-001, + 9.3076694012e-001, 9.3188428879e-001, 9.3299281597e-001, 9.3409252167e-001, 9.3518352509e-001, 9.3626564741e-001, + 9.3733900785e-001, 9.3840354681e-001, 9.3945920467e-001, 9.4050604105e-001, 9.4154405594e-001, 9.4257318974e-001, + 9.4359344244e-001, 9.4460481405e-001, 9.4560730457e-001, 9.4660091400e-001, 9.4758558273e-001, 9.4856137037e-001, + 9.4952815771e-001, 9.5048606396e-001, 9.5143502951e-001, 9.5237499475e-001, 9.5330601931e-001, 9.5422810316e-001, + 9.5514118671e-001, 9.5604526997e-001, 9.5694035292e-001, 9.5782643557e-001, 9.5870345831e-001, 9.5957154036e-001, + 9.6043050289e-001, 9.6128046513e-001, 9.6212142706e-001, 9.6295326948e-001, 9.6377605200e-001, 9.6458977461e-001, + 9.6539443731e-001, 9.6618998051e-001, 9.6697646379e-001, 9.6775382757e-001, 9.6852207184e-001, 9.6928125620e-001, + 9.7003126144e-001, 9.7077214718e-001, 9.7150391340e-001, 9.7222650051e-001, 9.7293996811e-001, 9.7364425659e-001, + 9.7433936596e-001, 9.7502535582e-001, 9.7570210695e-001, 9.7636973858e-001, 9.7702813148e-001, 9.7767734528e-001, + 9.7831737995e-001, 9.7894817591e-001, 9.7956979275e-001, 9.8018211126e-001, 9.8078525066e-001, 9.8137921095e-001, + 9.8196387291e-001, 9.8253929615e-001, 9.8310548067e-001, 9.8366242647e-001, 9.8421007395e-001, 9.8474848270e-001, + 9.8527765274e-001, 9.8579752445e-001, 9.8630809784e-001, 9.8680937290e-001, 9.8730140924e-001, 9.8778414726e-001, + 9.8825758696e-001, 9.8872166872e-001, 9.8917651176e-001, 9.8962199688e-001, 9.9005818367e-001, 9.9048507214e-001, + 9.9090266228e-001, 9.9131083488e-001, 9.9170976877e-001, 9.9209928513e-001, 9.9247956276e-001, 9.9285042286e-001, + 9.9321192503e-001, 9.9356412888e-001, 9.9390697479e-001, 9.9424046278e-001, 9.9456459284e-001, 9.9487930536e-001, + 9.9518471956e-001, 9.9548077583e-001, 9.9576741457e-001, 9.9604469538e-001, 9.9631261826e-001, 9.9657112360e-001, + 9.9682027102e-001, 9.9706006050e-001, 9.9729043245e-001, 9.9751144648e-001, 9.9772304296e-001, 9.9792528152e-001, + 9.9811810255e-001, 9.9830156565e-001, 9.9847555161e-001, 9.9864023924e-001, 9.9879544973e-001, 9.9894130230e-001, + 9.9907773733e-001, 9.9920475483e-001, 9.9932235479e-001, 9.9943059683e-001, 9.9952942133e-001, 9.9961882830e-001, + 9.9969881773e-001, 9.9976938963e-001, 9.9983060360e-001, 9.9988234043e-001, 9.9992471933e-001, 9.9995762110e-001, + 9.9998116493e-001, 9.9999529123e-001, 1.0000000000e+000}; + +/** + * \brief scramble + The function sorts the complex vector re/im of length n from 'in-order' to 'bitreversed order'. + + * \param[i/o] re: real input + * \param[i/o] im: imag input + * \param[i ] n: size of fft + * \param[i ] s: stride of real and imag input + + * \return none + */ +static void scramble(LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT n, LC3_INT s) +{ + LC3_FLOAT tmp; + LC3_INT m, k, j; + + for (m = 1, j = 0; m < (n - 1); m++) { + { + for (k = n >> 1; (!((j ^= k) & k)); k >>= 1) + ; + } + + if (j > m) { + tmp = re[s * m]; + re[s * m] = re[s * j]; + re[s * j] = tmp; + + tmp = im[s * m]; + im[s * m] = im[s * j]; + im[s * j] = tmp; + } + } +} + +/** + * \brief fft + The function performs a radix-2, decimation in time complex fft. The calculation takes place inplace. + The real and imaginary part can reside in separate buffers as well as interleaved in one buffer. The + stride length has to be set accordingly. + + * \param[i/o] re: real input / real output + * \param[i/o] im: imag input / imag output + * \param[i ] sizeOfFft: size of fft + * \param[i ] s: stride of real and imag input / output + + * \return none + */ +static void fft(const LC3_FLOAT* aTrigData, LC3_INT trigdata_size, LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT sizeOfFft, + LC3_INT s) +{ + LC3_INT trigstep, i, ldm, n; + LC3_INT trigDataSize; + LC3_INT ldn = 0; + + trigDataSize = sizeOfFft / 2; + + while (sizeOfFft >>= 1) { + ldn++; + } + + n = 1 << ldn; + + scramble(re, im, n, s); + + /* 1+2 stage implemented as radix 4 */ + for (i = 0; i < n; i += 4) { + LC3_FLOAT a00, a01, a10, a11; + LC3_FLOAT a20, a21, a30, a31; + + a00 = re[s * (i + 0)] + re[s * (i + 1)]; + a10 = re[s * (i + 2)] + re[s * (i + 3)]; + a20 = im[s * (i + 0)] + im[s * (i + 1)]; + a30 = im[s * (i + 2)] + im[s * (i + 3)]; + + a01 = re[s * (i + 0)] - re[s * (i + 1)]; + a21 = re[s * (i + 2)] - re[s * (i + 3)]; + a31 = im[s * (i + 0)] - im[s * (i + 1)]; + a11 = im[s * (i + 2)] - im[s * (i + 3)]; + + re[s * (i + 0)] = a00 + a10; + re[s * (i + 2)] = a00 - a10; + im[s * (i + 0)] = a20 + a30; + im[s * (i + 2)] = a20 - a30; + re[s * (i + 1)] = a11 + a01; + re[s * (i + 3)] = a01 - a11; + im[s * (i + 1)] = a31 - a21; + im[s * (i + 3)] = a21 + a31; + } + + /* next stages implemented as radix 2 */ + for (ldm = 3; ldm <= ldn; ++ldm) { + const LC3_INT m = (1 << ldm); + const LC3_INT mh = (m >> 1); + LC3_INT j, r; + + trigstep = ((trigDataSize * 4) >> ldm) * trigdata_size / trigDataSize; + + for (j = 0; j < mh / 2; ++j) { + LC3_FLOAT c1, c2; + + c2 = aTrigData[j * trigstep]; + c1 = aTrigData[trigdata_size - j * trigstep]; + + for (r = 0; r < n; r += m) { + LC3_FLOAT vr, vi, ur, ui; + + LC3_INT t0 = r + j; + LC3_INT t1 = s * t0; + LC3_INT t2 = s * (t0 + mh); + + vr = re[t2] * c1 + im[t2] * c2; + vi = -re[t2] * c2 + im[t2] * c1; + + ur = re[t1]; + ui = im[t1]; + + re[t1] = re[t1] + vr; + im[t1] = im[t1] + vi; + + re[t2] = ur - vr; + im[t2] = ui - vi; + + t0 = r + j + mh / 2; + t1 = s * t0; + t2 = s * (t0 + mh); + + vr = -re[t2] * c2 + im[t2] * c1; + vi = -re[t2] * c1 - im[t2] * c2; + + ur = re[t1]; + ui = im[t1]; + re[t1] = re[t1] + vr; + im[t1] = im[t1] + vi; + + re[t2] = ur - vr; + im[t2] = ui - vi; + } + } + } +} + +/** + * \brief ifft + The function performs a radix-2, decimation in time complex inverse fft. The calculation takes place + inplace. The real and imaginary part can reside in separate buffers as well as interleaved in one buffer. + The stride length has to be set accordingly. + + * \param[i/o] re: real input / real output + * \param[i/o] im: imag input / imag output + * \param[i ] sizeOfFft: size of fft + * \param[i ] s: stride of real and imag input / output + + * \return none + */ +static void ifft(const LC3_FLOAT* aTrigData, LC3_INT trigdata_size, LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT sizeOfFft, + LC3_INT s) +{ + LC3_INT trigstep, i, ldm, n; + LC3_INT trigDataSize; + LC3_INT ldn = 0; + + trigDataSize = sizeOfFft; + + while (sizeOfFft >>= 1) { + ldn++; + } + + n = 1 << ldn; + + scramble(re, im, n, s); + + /* 1+2 stage radix 4 */ + for (i = 0; i < n; i += 4) { + LC3_FLOAT a00, a01, a10, a11; + LC3_FLOAT a20, a21, a30, a31; + + a00 = re[s * (i + 0)] + re[s * (i + 1)]; + a10 = re[s * (i + 2)] + re[s * (i + 3)]; + a20 = im[s * (i + 0)] + im[s * (i + 1)]; + a30 = im[s * (i + 2)] + im[s * (i + 3)]; + + a01 = re[s * (i + 0)] - re[s * (i + 1)]; + a21 = re[s * (i + 2)] - re[s * (i + 3)]; + a31 = im[s * (i + 0)] - im[s * (i + 1)]; + a11 = im[s * (i + 2)] - im[s * (i + 3)]; + + re[s * (i + 0)] = a00 + a10; + re[s * (i + 2)] = a00 - a10; + im[s * (i + 0)] = a20 + a30; + im[s * (i + 2)] = a20 - a30; + + re[s * (i + 1)] = a01 - a11; + re[s * (i + 3)] = a01 + a11; + im[s * (i + 1)] = a31 + a21; + im[s * (i + 3)] = a31 - a21; + } + + for (ldm = 3; ldm <= ldn; ++ldm) { + const LC3_INT m = (1 << ldm); + const LC3_INT mh = (m >> 1); + LC3_INT j, r; + + trigstep = ((trigDataSize * 4) >> ldm) * trigdata_size / trigDataSize; + + for (j = 0; j < mh / 2; ++j) { + LC3_FLOAT c1, c2; + + c2 = aTrigData[j * trigstep]; + c1 = aTrigData[trigdata_size - j * trigstep]; + + for (r = 0; r < n; r += m) { + LC3_FLOAT vr, vi, ur, ui; + + LC3_INT t0 = r + j; + LC3_INT t1 = s * t0; + LC3_INT t2 = s * (t0 + mh); + + vr = re[t2] * c1 - im[t2] * c2; + vi = re[t2] * c2 + im[t2] * c1; + + ur = re[t1]; + ui = im[t1]; + + re[t1] = ur + vr; + im[t1] = ui + vi; + + re[t2] = ur - vr; + im[t2] = ui - vi; + + t0 = r + j + mh / 2; + t1 = s * t0; + t2 = s * (t0 + mh); + + vr = -re[t2] * c2 - im[t2] * c1; + vi = re[t2] * c1 - im[t2] * c2; + + ur = re[t1]; + ui = im[t1]; + + re[t1] = ur + vr; + im[t1] = ui + vi; + re[t2] = ur - vr; + im[t2] = ui - vi; + } + } + } +} + +/** + * \brief cfft + The function serves as wrapper for the forward and inverse fft. + + * \param[i/o] re: real input / real output + * \param[i/o] im: imag input / imag output + * \param[i ] sizeOfFft: size of fft + * \param[i ] s: stride of real and imag input / output + * \param[i ] iSign: forward fft: -1 / inverse fft: 1 + + * \return none + */ +void LC3_cfft(LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT length, LC3_INT stride, LC3_INT sign) +{ + assert(abs(sign) == 1); + assert(CFFT_SUPPORT(length)); + + if (sign == -1) { + fft(static_table, MAX_TRIGDATA_SIZE, re, im, length, stride); + } else { + ifft(static_table, MAX_TRIGDATA_SIZE, re, im, length, stride); + } +} + +LC3_INT LC3_cfft_plan(Cfft* handle, LC3_INT length, LC3_INT sign) +{ + /* check if length is power of two */ + if (!CFFT_PLAN_SUPPORT(length) || abs(sign) != 1) + return 0; + + handle->len = length; + handle->sign = sign; + + if (length <= MAX_FFT_SIZE) { + handle->table = NULL; + } else { + LC3_INT i = 0; + handle->table = (LC3_FLOAT*)malloc((length / 2 + 1) * sizeof(LC3_FLOAT)); + for (i = 0; i < length / 2 + 1; i++) { + handle->table[i] = (LC3_FLOAT)LC3_SIN((LC3_FLOAT)M_PIl * i / length); + } + } + return 1; +} + +void LC3_cfft_apply(Cfft* handle, LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT stride) +{ + if (handle->len <= MAX_FFT_SIZE) { + LC3_cfft(re, im, handle->len, stride, handle->sign); + } else if (handle->sign == -1) { + fft(handle->table, handle->len / 2, re, im, handle->len, stride); + } else { + ifft(handle->table, handle->len / 2, re, im, handle->len, stride); + } +} + +void LC3_cfft_free(Cfft* handle) +{ + if (handle->table) + free(handle->table); +} diff --git a/lc3plus/fft/cfft.h b/lc3plus/fft/cfft.h new file mode 100644 index 0000000000000000000000000000000000000000..3902b4c396d152f621d5f61cbfe03c853fabc26e --- /dev/null +++ b/lc3plus/fft/cfft.h @@ -0,0 +1,42 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + + +#include "../functions.h" + +#ifndef CFFT_H +#define CFFT_H + + +/* macro to check if cfft supports len */ +#define CFFT_IS_POWER_OF_TWO(n) ((n != 0) && ((n & (~n + 1)) == n)) +#define CFFT_SUPPORT(len) (len >= 4 && len <= 1024 && CFFT_IS_POWER_OF_TWO(len)) +#define CFFT_PLAN_SUPPORT(len) (len >= 4 && CFFT_IS_POWER_OF_TWO(len)) + +/** + * \brief fft_radix2 + The function serves as wrapper for the forward and inverse complex fft. + + * \param[i/o] re: real input / real output + * \param[i/o] im: imag input / imag output + * \param[i ] sizeOfFft: size of fft + * \param[i ] s: stride of real and imag input / output + * \param[i ] iSign: forward fft: -1 / inverse fft: 1 + + * \return none + */ + +void LC3_cfft(LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT sizeOfFft, LC3_INT stride, LC3_INT sign); + +LC3_INT LC3_cfft_plan(Cfft* handle, LC3_INT length, LC3_INT sign); +void LC3_cfft_apply(Cfft* handle, LC3_FLOAT* re, LC3_FLOAT* im, LC3_INT stride); +void LC3_cfft_free(Cfft* handle); + +#endif /* FFT_RADIX2_H */ diff --git a/lc3plus/fft/fft_15_16.h b/lc3plus/fft/fft_15_16.h new file mode 100644 index 0000000000000000000000000000000000000000..83ca77353b5c83df31ef3bd2c278a251ab5d4240 --- /dev/null +++ b/lc3plus/fft/fft_15_16.h @@ -0,0 +1,401 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +static void fft15(LC3_FLOAT* vec) +{ + LC3_FLOAT r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, i0, i1, i2, i3, i4, i5, + i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, + tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, tmp16, tmp17, tmp18, tmp19, tmp20, tmp21, tmp22, tmp23, tmp24, + tmp25, tmp26, tmp27, tmp28, tmp29; + + /* Pre-additions real part */ + r1 = vec[2] + vec[8]; + r2 = vec[2] - vec[8]; + r3 = vec[4] + vec[16]; + r4 = vec[4] - vec[16]; + r5 = vec[6] + vec[24]; + r6 = vec[6] - vec[24]; + r7 = vec[10] + vec[20]; + r8 = vec[10] - vec[20]; + r9 = vec[12] + vec[18]; + r10 = vec[12] - vec[18]; + r11 = vec[14] + vec[26]; + r12 = vec[14] - vec[26]; + r13 = vec[22] + vec[28]; + r14 = vec[22] - vec[28]; + + tmp2 = r1 + r3; + tmp4 = r1 - r3; + tmp6 = r2 + r14; + tmp8 = r2 - r14; + tmp10 = r4 + r12; + tmp12 = r4 - r12; + tmp14 = r5 + r9; + tmp16 = r5 - r9; + tmp18 = r11 + r13; + tmp20 = r11 - r13; + + /* Pre-additions imaginary part */ + i1 = vec[3] + vec[9]; + i2 = vec[3] - vec[9]; + i3 = vec[5] + vec[17]; + i4 = vec[5] - vec[17]; + i5 = vec[7] + vec[25]; + i6 = vec[7] - vec[25]; + i7 = vec[11] + vec[21]; + i8 = vec[11] - vec[21]; + i9 = vec[13] + vec[19]; + i10 = vec[13] - vec[19]; + i11 = vec[15] + vec[27]; + i12 = vec[15] - vec[27]; + i13 = vec[23] + vec[29]; + i14 = vec[23] - vec[29]; + + tmp3 = i1 + i3; + tmp5 = i1 - i3; + tmp7 = i2 + i14; + tmp9 = i2 - i14; + tmp11 = i4 + i12; + tmp13 = i4 - i12; + tmp15 = i5 + i9; + tmp17 = i5 - i9; + tmp19 = i11 + i13; + tmp21 = i11 - i13; + + /* Pre-additions and core multiplications */ + tmp28 = tmp4 + tmp20; + tmp29 = tmp5 + tmp21; + r4 = tmp2 + tmp18; + i4 = tmp3 + tmp19; + r3 = (r4 + tmp14) * (LC3_FLOAT)-1.25; + i3 = (i4 + tmp15) * (LC3_FLOAT)-1.25; + r2 = (tmp29 - i8) * (LC3_FLOAT)-8.660254037844387e-1; + i2 = (tmp28 - r8) * (LC3_FLOAT)8.660254037844387e-1; + r1 = r4 + r7; + i1 = i4 + i7; + r0 = r1 + vec[0] + tmp14; + i0 = i1 + vec[1] + tmp15; + r7 = tmp4 - tmp20; + i7 = tmp5 - tmp21; + r8 = (tmp3 - tmp19) * (LC3_FLOAT)-4.841229182759272e-1; + i8 = (tmp2 - tmp18) * (LC3_FLOAT)4.841229182759272e-1; + tmp0 = tmp6 + r10; + tmp1 = tmp7 + i10; + tmp2 = r6 - tmp10; + tmp3 = i6 - tmp11; + r10 = tmp7 * (LC3_FLOAT)-2.308262652881440; + i10 = tmp6 * (LC3_FLOAT)2.308262652881440; + r11 = tmp8 * (LC3_FLOAT)1.332676064001459; + i11 = tmp9 * (LC3_FLOAT)1.332676064001459; + r6 = (r7 - tmp16) * (LC3_FLOAT)5.590169943749475e-1; + i6 = (i7 - tmp17) * (LC3_FLOAT)5.590169943749475e-1; + r12 = (tmp1 + tmp3) * (LC3_FLOAT)5.877852522924733e-1; + i12 = (tmp0 + tmp2) * (LC3_FLOAT)-5.877852522924733e-1; + r13 = (tmp7 - tmp11) * (LC3_FLOAT)-8.816778784387098e-1; + i13 = (tmp6 - tmp10) * (LC3_FLOAT)8.816778784387098e-1; + r14 = (tmp8 + tmp12) * (LC3_FLOAT)5.090369604551274e-1; + i14 = (tmp9 + tmp13) * (LC3_FLOAT)5.090369604551274e-1; + r16 = tmp11 * (LC3_FLOAT)5.449068960040204e-1; + i16 = tmp10 * (LC3_FLOAT)-5.449068960040204e-1; + r17 = tmp12 * (LC3_FLOAT)3.146021430912046e-1; + i17 = tmp13 * (LC3_FLOAT)3.146021430912046e-1; + + r4 *= (LC3_FLOAT)1.875; + i4 *= (LC3_FLOAT)1.875; + r1 *= (LC3_FLOAT)-1.5; + i1 *= (LC3_FLOAT)-1.5; + r7 *= (LC3_FLOAT)-8.385254915624212e-1; + i7 *= (LC3_FLOAT)-8.385254915624212e-1; + r5 = tmp29 * (LC3_FLOAT)1.082531754730548; + i5 = tmp28 * (LC3_FLOAT)-1.082531754730548; + r9 = tmp1 * (LC3_FLOAT)1.538841768587627; + i9 = tmp0 * (LC3_FLOAT)-1.538841768587627; + r15 = tmp3 * (LC3_FLOAT)3.632712640026803e-1; + i15 = tmp2 * (LC3_FLOAT)-3.632712640026803e-1; + + /* Post-additions real part */ + tmp2 = r0 + r1; + tmp4 = r3 + r6; + tmp6 = r3 - r6; + tmp8 = r4 + r5; + tmp10 = r4 - r5; + tmp12 = r7 + r8; + tmp14 = r7 - r8; + tmp16 = r13 + r16; + tmp18 = r14 + r17; + tmp20 = r10 - r13; + tmp22 = r11 - r14; + tmp24 = r12 + r15; + tmp26 = r12 - r9; + + r1 = tmp2 + r2; + r2 = tmp2 - r2; + r3 = tmp4 + tmp26; + r4 = tmp4 - tmp26; + r5 = tmp6 + tmp24; + r6 = tmp6 - tmp24; + r7 = tmp16 + tmp18; + r8 = tmp16 - tmp18; + r9 = tmp20 - tmp22; + r10 = tmp20 + tmp22; + r11 = r1 + tmp8; + r12 = r2 + tmp10; + r13 = r11 - tmp12; + r14 = r12 - tmp14; + r15 = r12 + tmp14; + r16 = r11 + tmp12; + + /* Post-additions imaginary part */ + tmp3 = i0 + i1; + tmp5 = i3 + i6; + tmp7 = i3 - i6; + tmp9 = i4 + i5; + tmp11 = i4 - i5; + tmp13 = i7 + i8; + tmp15 = i7 - i8; + tmp17 = i13 + i16; + tmp19 = i14 + i17; + tmp21 = i10 - i13; + tmp23 = i11 - i14; + tmp25 = i12 + i15; + tmp27 = i12 - i9; + + i1 = tmp3 + i2; + i2 = tmp3 - i2; + i3 = tmp5 + tmp27; + i4 = tmp5 - tmp27; + i5 = tmp7 + tmp25; + i6 = tmp7 - tmp25; + i7 = tmp17 + tmp19; + i8 = tmp17 - tmp19; + i9 = tmp21 - tmp23; + i10 = tmp21 + tmp23; + i11 = i1 + tmp9; + i12 = i2 + tmp11; + i13 = i11 - tmp13; + i14 = i12 - tmp15; + i15 = i12 + tmp15; + i16 = i11 + tmp13; + + *vec++ = r0; + *vec++ = i0; + *vec++ = r13 + r5 + r7; + *vec++ = i13 + i5 + i7; + *vec++ = r15 + r3 - r9; + *vec++ = i15 + i3 - i9; + *vec++ = r0 + r4; + *vec++ = i0 + i4; + *vec++ = r13 + r6 - r7; + *vec++ = i13 + i6 - i7; + *vec++ = r2; + *vec++ = i2; + *vec++ = r0 + r5; + *vec++ = i0 + i5; + *vec++ = r16 + r3 - r10; + *vec++ = i16 + i3 - i10; + *vec++ = r15 + r4 + r9; + *vec++ = i15 + i4 + i9; + *vec++ = r0 + r6; + *vec++ = i0 + i6; + *vec++ = r1; + *vec++ = i1; + *vec++ = r14 + r5 + r8; + *vec++ = i14 + i5 + i8; + *vec++ = r0 + r3; + *vec++ = i0 + i3; + *vec++ = r16 + r4 + r10; + *vec++ = i16 + i4 + i10; + *vec++ = r14 + r6 - r8; + *vec++ = i14 + i6 - i8; +} + +static void fft16(LC3_FLOAT* vec) +{ + const LC3_FLOAT INV_SQRT2 = 7.071067811865475e-1; + const LC3_FLOAT COS_PI_DIV8 = 9.238795325112867e-1; + const LC3_FLOAT COS_3PI_DIV8 = 3.826834323650898e-1; + const LC3_FLOAT SQRT2PLUS1 = 2.414213562373095; + const LC3_FLOAT SQRT2MINUS1 = 4.142135623730952e-1; + + LC3_FLOAT temp10, temp11, temp12, temp13, temp14, temp15, temp16, temp17, temp18, temp19, temp110, temp111, temp112, + temp113, temp114, temp115, temp20, temp21, temp22, temp23, temp24, temp25, temp26, temp27, temp28, temp29, + temp210, temp211, temp212, temp213, temp214, temp215, vec0, vec1, vec2, vec3, vec4, vec5, vec6, vec7, vec8, + vec9, vec10, vec11, vec12, vec13, vec14, vec15; + + /* even */ + vec0 = vec[0] + vec[16]; + vec1 = vec[1] + vec[17]; + vec2 = vec[2] + vec[18]; + vec3 = vec[3] + vec[19]; + vec4 = vec[4] + vec[20]; + vec5 = vec[5] + vec[21]; + vec6 = vec[6] + vec[22]; + vec7 = vec[7] + vec[23]; + vec8 = vec[8] + vec[24]; + vec9 = vec[9] + vec[25]; + vec10 = vec[10] + vec[26]; + vec11 = vec[11] + vec[27]; + vec12 = vec[12] + vec[28]; + vec13 = vec[13] + vec[29]; + vec14 = vec[14] + vec[30]; + vec15 = vec[15] + vec[31]; + + /* Pre-additions */ + temp10 = vec0 + vec8; + temp12 = vec0 - vec8; + temp11 = vec1 + vec9; + temp13 = vec1 - vec9; + temp14 = vec2 + vec10; + temp16 = vec2 - vec10; + temp15 = vec3 + vec11; + temp17 = vec3 - vec11; + temp18 = vec4 + vec12; + temp110 = vec4 - vec12; + temp19 = vec5 + vec13; + temp111 = vec5 - vec13; + temp112 = vec6 + vec14; + temp114 = vec6 - vec14; + temp113 = vec7 + vec15; + temp115 = vec7 - vec15; + + /* Pre-additions and core multiplications */ + temp20 = temp10 + temp18; + temp24 = temp10 - temp18; + temp21 = temp11 + temp19; + temp25 = temp11 - temp19; + temp28 = temp12 - temp111; + temp210 = temp12 + temp111; + temp29 = temp13 + temp110; + temp211 = temp13 - temp110; + temp22 = temp14 + temp112; + temp27 = temp14 - temp112; + temp23 = temp15 + temp113; + temp26 = temp113 - temp15; + + temp11 = temp16 + temp114; + temp12 = temp16 - temp114; + temp10 = temp17 + temp115; + temp13 = temp17 - temp115; + temp212 = (temp10 + temp12) * INV_SQRT2; + temp214 = (temp10 - temp12) * INV_SQRT2; + temp213 = (temp13 - temp11) * INV_SQRT2; + temp215 = (temp11 + temp13) * -INV_SQRT2; + + /* odd */ + vec0 = vec[0] - vec[16]; + vec1 = vec[1] - vec[17]; + vec2 = vec[2] - vec[18]; + vec3 = vec[3] - vec[19]; + vec4 = vec[4] - vec[20]; + vec5 = vec[5] - vec[21]; + vec6 = vec[6] - vec[22]; + vec7 = vec[7] - vec[23]; + vec8 = vec[8] - vec[24]; + vec9 = vec[9] - vec[25]; + vec10 = vec[10] - vec[26]; + vec11 = vec[11] - vec[27]; + vec12 = vec[12] - vec[28]; + vec13 = vec[13] - vec[29]; + vec14 = vec[14] - vec[30]; + vec15 = vec[15] - vec[31]; + + /* Pre-additions and core multiplications */ + temp19 = (vec2 + vec14) * -COS_3PI_DIV8; + temp110 = (vec2 - vec14) * COS_PI_DIV8; + temp18 = (vec3 + vec15) * COS_3PI_DIV8; + temp111 = (vec3 - vec15) * COS_PI_DIV8; + temp15 = (vec4 + vec12) * -INV_SQRT2; + temp16 = (vec4 - vec12) * INV_SQRT2; + temp14 = (vec5 + vec13) * INV_SQRT2; + temp17 = (vec5 - vec13) * INV_SQRT2; + temp113 = (vec6 + vec10) * -COS_PI_DIV8; + temp114 = (vec6 - vec10) * COS_3PI_DIV8; + temp112 = (vec7 + vec11) * COS_PI_DIV8; + temp115 = (vec7 - vec11) * COS_3PI_DIV8; + + /* Core multiplications */ + vec2 = temp18 * SQRT2PLUS1 - temp112 * SQRT2MINUS1; + vec3 = temp19 * SQRT2PLUS1 - temp113 * SQRT2MINUS1; + vec4 = temp110 * SQRT2MINUS1 - temp114 * SQRT2PLUS1; + vec5 = temp111 * SQRT2MINUS1 - temp115 * SQRT2PLUS1; + + /* Post-additions */ + temp18 += temp112; + temp19 += temp113; + temp110 += temp114; + temp111 += temp115; + vec6 = vec0 + temp14; + vec10 = vec0 - temp14; + vec7 = vec1 + temp15; + vec11 = vec1 - temp15; + + vec12 = temp16 - vec9; + vec14 = temp16 + vec9; + vec13 = vec8 + temp17; + vec15 = vec8 - temp17; + + temp10 = vec6 - vec14; + temp12 = vec6 + vec14; + temp11 = vec7 + vec15; + temp13 = vec7 - vec15; + temp14 = vec10 + vec12; + temp16 = vec10 - vec12; + temp15 = vec11 + vec13; + temp17 = vec11 - vec13; + + vec10 = temp18 + temp110; + temp110 = temp18 - temp110; + vec11 = temp19 + temp111; + temp111 = temp19 - temp111; + + temp112 = vec2 + vec4; + temp114 = vec2 - vec4; + temp113 = vec3 + vec5; + temp115 = vec3 - vec5; + + /* Post-additions */ + *vec++ = temp20 + temp22; + *vec++ = temp21 + temp23; + *vec++ = temp12 + vec10; + *vec++ = temp13 + vec11; + *vec++ = temp210 + temp212; + *vec++ = temp211 + temp213; + *vec++ = temp10 + temp112; + *vec++ = temp11 + temp113; + *vec++ = temp24 - temp26; + *vec++ = temp25 - temp27; + *vec++ = temp16 + temp114; + *vec++ = temp17 + temp115; + *vec++ = temp28 + temp214; + *vec++ = temp29 + temp215; + *vec++ = temp14 + temp110; + *vec++ = temp15 + temp111; + *vec++ = temp20 - temp22; + *vec++ = temp21 - temp23; + *vec++ = temp12 - vec10; + *vec++ = temp13 - vec11; + *vec++ = temp210 - temp212; + *vec++ = temp211 - temp213; + *vec++ = temp10 - temp112; + *vec++ = temp11 - temp113; + *vec++ = temp24 + temp26; + *vec++ = temp25 + temp27; + *vec++ = temp16 - temp114; + *vec++ = temp17 - temp115; + *vec++ = temp28 - temp214; + *vec++ = temp29 - temp215; + *vec++ = temp14 - temp110; + *vec++ = temp15 - temp111; +} diff --git a/lc3plus/fft/fft_240_480.h b/lc3plus/fft/fft_240_480.h new file mode 100644 index 0000000000000000000000000000000000000000..c1d96c87b8016d516ff5cd96687309a11f450cd9 --- /dev/null +++ b/lc3plus/fft/fft_240_480.h @@ -0,0 +1,185 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +static void fft240(LC3_FLOAT* in) +{ + const LC3_INT table1[240] = { + 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 225, 1, 17, 33, 49, 65, 81, + 97, 113, 129, 145, 161, 177, 193, 209, 210, 226, 2, 18, 34, 50, 66, 82, 98, 114, 130, 146, 162, 178, + 194, 195, 211, 227, 3, 19, 35, 51, 67, 83, 99, 115, 131, 147, 163, 179, 180, 196, 212, 228, 4, 20, + 36, 52, 68, 84, 100, 116, 132, 148, 164, 165, 181, 197, 213, 229, 5, 21, 37, 53, 69, 85, 101, 117, + 133, 149, 150, 166, 182, 198, 214, 230, 6, 22, 38, 54, 70, 86, 102, 118, 134, 135, 151, 167, 183, 199, + 215, 231, 7, 23, 39, 55, 71, 87, 103, 119, 120, 136, 152, 168, 184, 200, 216, 232, 8, 24, 40, 56, + 72, 88, 104, 105, 121, 137, 153, 169, 185, 201, 217, 233, 9, 25, 41, 57, 73, 89, 90, 106, 122, 138, + 154, 170, 186, 202, 218, 234, 10, 26, 42, 58, 74, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, + 11, 27, 43, 59, 60, 76, 92, 108, 124, 140, 156, 172, 188, 204, 220, 236, 12, 28, 44, 45, 61, 77, + 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 13, 29, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, + 190, 206, 222, 238, 14, 15, 31, 47, 63, 79, 95, 111, 127, 143, 159, 175, 191, 207, 223, 239}; + const LC3_INT table2[240] = { + 0, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 15, 31, 47, 63, 79, 95, 111, + 127, 143, 159, 175, 191, 207, 223, 239, 30, 46, 62, 78, 94, 110, 126, 142, 158, 174, 190, 206, 222, 238, + 14, 45, 61, 77, 93, 109, 125, 141, 157, 173, 189, 205, 221, 237, 13, 29, 60, 76, 92, 108, 124, 140, + 156, 172, 188, 204, 220, 236, 12, 28, 44, 75, 91, 107, 123, 139, 155, 171, 187, 203, 219, 235, 11, 27, + 43, 59, 90, 106, 122, 138, 154, 170, 186, 202, 218, 234, 10, 26, 42, 58, 74, 105, 121, 137, 153, 169, + 185, 201, 217, 233, 9, 25, 41, 57, 73, 89, 120, 136, 152, 168, 184, 200, 216, 232, 8, 24, 40, 56, + 72, 88, 104, 135, 151, 167, 183, 199, 215, 231, 7, 23, 39, 55, 71, 87, 103, 119, 150, 166, 182, 198, + 214, 230, 6, 22, 38, 54, 70, 86, 102, 118, 134, 165, 181, 197, 213, 229, 5, 21, 37, 53, 69, 85, + 101, 117, 133, 149, 180, 196, 212, 228, 4, 20, 36, 52, 68, 84, 100, 116, 132, 148, 164, 195, 211, 227, + 3, 19, 35, 51, 67, 83, 99, 115, 131, 147, 163, 179, 210, 226, 2, 18, 34, 50, 66, 82, 98, 114, + 130, 146, 162, 178, 194, 225, 1, 17, 33, 49, 65, 81, 97, 113, 129, 145, 161, 177, 193, 209}; + + const LC3_INT L = 240; + const LC3_INT A = 15; + const LC3_INT B = 16; + const LC3_INT* idx1 = table1; + const LC3_INT* idx2 = table2; + + LC3_INT k, l; + LC3_FLOAT temp[32], out[480]; + + for (k = 0; k < A; k++) { + for (l = 0; l < B; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1 + 1]; + idx1 += A; + } + + fft16(temp); /* 16-point FFT */ + idx1 -= L; + + for (l = 0; l < B; l++) { + in[2 * *idx1] = temp[2 * l]; + in[2 * *idx1 + 1] = temp[2 * l + 1]; + idx1 += A; + } + + idx1 -= L - 1; + } + + idx1 -= A; + + for (k = 0; k < B; k++) { + for (l = 0; l < A; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1++ + 1]; + } + + fft15(temp); /* 15-point FFT */ + + for (l = 0; l < A; l++) { + out[2 * *idx2] = temp[2 * l]; + out[2 * *idx2++ + 1] = temp[2 * l + 1]; + } + } + + memmove(in, out, 2 * L * sizeof(LC3_FLOAT)); +} + +/* description in iis_fft.h */ +static void fft480(LC3_FLOAT* in) +{ + const LC3_INT table1[480] = { + 0, 256, 32, 288, 64, 320, 96, 352, 128, 384, 160, 416, 192, 448, 224, 225, 1, 257, 33, 289, 65, 321, + 97, 353, 129, 385, 161, 417, 193, 449, 450, 226, 2, 258, 34, 290, 66, 322, 98, 354, 130, 386, 162, 418, + 194, 195, 451, 227, 3, 259, 35, 291, 67, 323, 99, 355, 131, 387, 163, 419, 420, 196, 452, 228, 4, 260, + 36, 292, 68, 324, 100, 356, 132, 388, 164, 165, 421, 197, 453, 229, 5, 261, 37, 293, 69, 325, 101, 357, + 133, 389, 390, 166, 422, 198, 454, 230, 6, 262, 38, 294, 70, 326, 102, 358, 134, 135, 391, 167, 423, 199, + 455, 231, 7, 263, 39, 295, 71, 327, 103, 359, 360, 136, 392, 168, 424, 200, 456, 232, 8, 264, 40, 296, + 72, 328, 104, 105, 361, 137, 393, 169, 425, 201, 457, 233, 9, 265, 41, 297, 73, 329, 330, 106, 362, 138, + 394, 170, 426, 202, 458, 234, 10, 266, 42, 298, 74, 75, 331, 107, 363, 139, 395, 171, 427, 203, 459, 235, + 11, 267, 43, 299, 300, 76, 332, 108, 364, 140, 396, 172, 428, 204, 460, 236, 12, 268, 44, 45, 301, 77, + 333, 109, 365, 141, 397, 173, 429, 205, 461, 237, 13, 269, 270, 46, 302, 78, 334, 110, 366, 142, 398, 174, + 430, 206, 462, 238, 14, 15, 271, 47, 303, 79, 335, 111, 367, 143, 399, 175, 431, 207, 463, 239, 240, 16, + 272, 48, 304, 80, 336, 112, 368, 144, 400, 176, 432, 208, 464, 465, 241, 17, 273, 49, 305, 81, 337, 113, + 369, 145, 401, 177, 433, 209, 210, 466, 242, 18, 274, 50, 306, 82, 338, 114, 370, 146, 402, 178, 434, 435, + 211, 467, 243, 19, 275, 51, 307, 83, 339, 115, 371, 147, 403, 179, 180, 436, 212, 468, 244, 20, 276, 52, + 308, 84, 340, 116, 372, 148, 404, 405, 181, 437, 213, 469, 245, 21, 277, 53, 309, 85, 341, 117, 373, 149, + 150, 406, 182, 438, 214, 470, 246, 22, 278, 54, 310, 86, 342, 118, 374, 375, 151, 407, 183, 439, 215, 471, + 247, 23, 279, 55, 311, 87, 343, 119, 120, 376, 152, 408, 184, 440, 216, 472, 248, 24, 280, 56, 312, 88, + 344, 345, 121, 377, 153, 409, 185, 441, 217, 473, 249, 25, 281, 57, 313, 89, 90, 346, 122, 378, 154, 410, + 186, 442, 218, 474, 250, 26, 282, 58, 314, 315, 91, 347, 123, 379, 155, 411, 187, 443, 219, 475, 251, 27, + 283, 59, 60, 316, 92, 348, 124, 380, 156, 412, 188, 444, 220, 476, 252, 28, 284, 285, 61, 317, 93, 349, + 125, 381, 157, 413, 189, 445, 221, 477, 253, 29, 30, 286, 62, 318, 94, 350, 126, 382, 158, 414, 190, 446, + 222, 478, 254, 255, 31, 287, 63, 319, 95, 351, 127, 383, 159, 415, 191, 447, 223, 479}; + const LC3_INT table2[480] = { + 0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 15, 47, 79, 111, 143, 175, 207, + 239, 271, 303, 335, 367, 399, 431, 463, 30, 62, 94, 126, 158, 190, 222, 254, 286, 318, 350, 382, 414, 446, + 478, 45, 77, 109, 141, 173, 205, 237, 269, 301, 333, 365, 397, 429, 461, 13, 60, 92, 124, 156, 188, 220, + 252, 284, 316, 348, 380, 412, 444, 476, 28, 75, 107, 139, 171, 203, 235, 267, 299, 331, 363, 395, 427, 459, + 11, 43, 90, 122, 154, 186, 218, 250, 282, 314, 346, 378, 410, 442, 474, 26, 58, 105, 137, 169, 201, 233, + 265, 297, 329, 361, 393, 425, 457, 9, 41, 73, 120, 152, 184, 216, 248, 280, 312, 344, 376, 408, 440, 472, + 24, 56, 88, 135, 167, 199, 231, 263, 295, 327, 359, 391, 423, 455, 7, 39, 71, 103, 150, 182, 214, 246, + 278, 310, 342, 374, 406, 438, 470, 22, 54, 86, 118, 165, 197, 229, 261, 293, 325, 357, 389, 421, 453, 5, + 37, 69, 101, 133, 180, 212, 244, 276, 308, 340, 372, 404, 436, 468, 20, 52, 84, 116, 148, 195, 227, 259, + 291, 323, 355, 387, 419, 451, 3, 35, 67, 99, 131, 163, 210, 242, 274, 306, 338, 370, 402, 434, 466, 18, + 50, 82, 114, 146, 178, 225, 257, 289, 321, 353, 385, 417, 449, 1, 33, 65, 97, 129, 161, 193, 240, 272, + 304, 336, 368, 400, 432, 464, 16, 48, 80, 112, 144, 176, 208, 255, 287, 319, 351, 383, 415, 447, 479, 31, + 63, 95, 127, 159, 191, 223, 270, 302, 334, 366, 398, 430, 462, 14, 46, 78, 110, 142, 174, 206, 238, 285, + 317, 349, 381, 413, 445, 477, 29, 61, 93, 125, 157, 189, 221, 253, 300, 332, 364, 396, 428, 460, 12, 44, + 76, 108, 140, 172, 204, 236, 268, 315, 347, 379, 411, 443, 475, 27, 59, 91, 123, 155, 187, 219, 251, 283, + 330, 362, 394, 426, 458, 10, 42, 74, 106, 138, 170, 202, 234, 266, 298, 345, 377, 409, 441, 473, 25, 57, + 89, 121, 153, 185, 217, 249, 281, 313, 360, 392, 424, 456, 8, 40, 72, 104, 136, 168, 200, 232, 264, 296, + 328, 375, 407, 439, 471, 23, 55, 87, 119, 151, 183, 215, 247, 279, 311, 343, 390, 422, 454, 6, 38, 70, + 102, 134, 166, 198, 230, 262, 294, 326, 358, 405, 437, 469, 21, 53, 85, 117, 149, 181, 213, 245, 277, 309, + 341, 373, 420, 452, 4, 36, 68, 100, 132, 164, 196, 228, 260, 292, 324, 356, 388, 435, 467, 19, 51, 83, + 115, 147, 179, 211, 243, 275, 307, 339, 371, 403, 450, 2, 34, 66, 98, 130, 162, 194, 226, 258, 290, 322, + 354, 386, 418, 465, 17, 49, 81, 113, 145, 177, 209, 241, 273, 305, 337, 369, 401, 433}; + + const LC3_INT L = 480; + const LC3_INT A = 15; + const LC3_INT B = 32; + const LC3_INT* idx1 = table1; + const LC3_INT* idx2 = table2; + + LC3_INT k, l; + LC3_FLOAT temp[64], out[960]; + + for (k = 0; k < A; k++) { + for (l = 0; l < B; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1 + 1]; + idx1 += A; + } + + fft32(temp); /* 32-point FFT */ + idx1 -= L; + + for (l = 0; l < B; l++) { + in[2 * *idx1] = temp[2 * l]; + in[2 * *idx1 + 1] = temp[2 * l + 1]; + idx1 += A; + } + + idx1 -= L - 1; + } + + idx1 -= A; + + for (k = 0; k < B; k++) { + for (l = 0; l < A; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1++ + 1]; + } + + fft15(temp); /* 15-point FFT */ + + for (l = 0; l < A; l++) { + out[2 * *idx2] = temp[2 * l]; + out[2 * *idx2++ + 1] = temp[2 * l + 1]; + } + } + + memmove(in, out, 2 * L * sizeof(LC3_FLOAT)); +} diff --git a/lc3plus/fft/fft_2_9.h b/lc3plus/fft/fft_2_9.h new file mode 100644 index 0000000000000000000000000000000000000000..54f4f839dfcba878cdf037f9940d49982c58c3c0 --- /dev/null +++ b/lc3plus/fft/fft_2_9.h @@ -0,0 +1,278 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +static __inline void butterfly(const LC3_FLOAT a, const LC3_FLOAT b, LC3_FLOAT* aPlusb, LC3_FLOAT* aMinusb) +{ + *aPlusb = a + b; + *aMinusb = a - b; +} + +static void fft2(LC3_FLOAT* vec) +{ + /* + 1.0000 1.0000 + 1.0000 -1.0000 + */ + LC3_FLOAT re1 = vec[0]; + LC3_FLOAT im1 = vec[1]; + LC3_FLOAT re2 = vec[2]; + LC3_FLOAT im2 = vec[3]; + + vec[0] = re1 + re2; + vec[1] = im1 + im2; + vec[2] = re1 - re2; + vec[3] = im1 - im2; +} + +static void fft3(LC3_FLOAT* vec) +{ + const LC3_FLOAT C31 = 0.5; /* cos(PI/3); sin(2*PI/3) */ + const LC3_FLOAT C32 = 0.866025403784439; /* cos(PI/3); sin(2*PI/3) */ + + LC3_FLOAT re1 = vec[0]; + LC3_FLOAT im1 = vec[1]; + LC3_FLOAT re2 = vec[2]; + LC3_FLOAT im2 = vec[3]; + LC3_FLOAT re3 = vec[4]; + LC3_FLOAT im3 = vec[5]; + /* + 1.0000 1.0000 1.0000 + C31 C32 + 1.0000 -0.5000 - 0.8660i -0.5000 + 0.8660i + 1.0000 -0.5000 + 0.8660i -0.5000 - 0.8660i + */ + LC3_FLOAT tmp1 = re2 + re3; + LC3_FLOAT tmp3 = im2 + im3; + LC3_FLOAT tmp2 = re2 - re3; + LC3_FLOAT tmp4 = im2 - im3; + + vec[0] = re1 + tmp1; + vec[1] = im1 + tmp3; + vec[2] = re1 - C31 * tmp1 + C32 * tmp4; + vec[4] = re1 - C31 * tmp1 - C32 * tmp4; + vec[3] = im1 - C32 * tmp2 - C31 * tmp3; + vec[5] = im1 + C32 * tmp2 - C31 * tmp3; +} + +static void fft4(LC3_FLOAT* vec) +{ + LC3_FLOAT temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7; + + /* Pre-additions */ + temp0 = vec[0] + vec[4]; + temp2 = vec[0] - vec[4]; + temp1 = vec[1] + vec[5]; + temp3 = vec[1] - vec[5]; + temp4 = vec[2] + vec[6]; + temp7 = vec[2] - vec[6]; + temp5 = vec[7] + vec[3]; + temp6 = vec[7] - vec[3]; + + /* Post-additions */ + vec[0] = temp0 + temp4; + vec[1] = temp1 + temp5; + vec[2] = temp2 - temp6; + vec[3] = temp3 - temp7; + vec[4] = temp0 - temp4; + vec[5] = temp1 - temp5; + vec[6] = temp2 + temp6; + vec[7] = temp3 + temp7; +} + +static void fft5(LC3_FLOAT* vec) +{ + const LC3_FLOAT C51 = 0.309016994374947; /* cos(2*PI/5); */ + const LC3_FLOAT C52 = 0.951056516295154; /* sin(2*PI/5); */ + const LC3_FLOAT C53 = 0.809016994374947; /* cos( PI/5); */ + const LC3_FLOAT C54 = 0.587785252292473; /* sin( PI/5); */ + + LC3_FLOAT re1, im1, re2, im2, re3, im3, re4, im4, re5, im5, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8; + + re1 = vec[0]; + im1 = vec[1]; + re2 = vec[2]; + im2 = vec[3]; + re3 = vec[4]; + im3 = vec[5]; + re4 = vec[6]; + im4 = vec[7]; + re5 = vec[8]; + im5 = vec[9]; + /* + 1.0000 1.0000 1.0000 1.0000 1.0000 + C51 C52 C53 C54 + 1.0000 0.3090 - 0.9511i -0.8090 - 0.5878i -0.8090 + 0.5878i 0.3090 + 0.9511i + 1.0000 -0.8090 - 0.5878i 0.3090 + 0.9511i 0.3090 - 0.9511i -0.8090 + 0.5878i + 1.0000 -0.8090 + 0.5878i 0.3090 - 0.9511i 0.3090 + 0.9511i -0.8090 - 0.5878i + 1.0000 0.3090 + 0.9511i -0.8090 + 0.5878i -0.8090 - 0.5878i 0.3090 - 0.9511i + */ + tmp1 = re2 + re5; + tmp2 = re2 - re5; + tmp3 = im2 + im5; + tmp4 = im2 - im5; + tmp5 = re3 + re4; + tmp6 = re3 - re4; + tmp7 = im3 + im4; + tmp8 = im3 - im4; + + vec[0] = re1 + tmp1 + tmp5; + vec[1] = im1 + tmp3 + tmp7; + vec[2] = re1 + C51 * tmp1 - C53 * tmp5 + C52 * tmp4 + C54 * tmp8; + vec[8] = re1 + C51 * tmp1 - C53 * tmp5 - C52 * tmp4 - C54 * tmp8; + vec[3] = im1 - C52 * tmp2 - C54 * tmp6 + C51 * tmp3 - C53 * tmp7; + vec[9] = im1 + C52 * tmp2 + C54 * tmp6 + C51 * tmp3 - C53 * tmp7; + vec[4] = re1 - C53 * tmp1 + C51 * tmp5 + C54 * tmp4 - C52 * tmp8; + vec[6] = re1 - C53 * tmp1 + C51 * tmp5 - C54 * tmp4 + C52 * tmp8; + vec[5] = im1 - C54 * tmp2 + C52 * tmp6 - C53 * tmp3 + C51 * tmp7; + vec[7] = im1 + C54 * tmp2 - C52 * tmp6 - C53 * tmp3 + C51 * tmp7; +} + + + +static void fft8(LC3_FLOAT* vec) +{ + const LC3_FLOAT INV_SQRT2 = 7.071067811865475e-1; + LC3_FLOAT temp1[16], temp2[16]; + + /* Pre-additions */ + temp1[0] = vec[0] + vec[8]; + temp1[2] = vec[0] - vec[8]; + temp1[1] = vec[1] + vec[9]; + temp1[3] = vec[1] - vec[9]; + temp1[4] = vec[2] + vec[10]; + temp1[6] = vec[2] - vec[10]; + temp1[5] = vec[3] + vec[11]; + temp1[7] = vec[3] - vec[11]; + temp1[8] = vec[4] + vec[12]; + temp1[10] = vec[4] - vec[12]; + temp1[9] = vec[5] + vec[13]; + temp1[11] = vec[5] - vec[13]; + temp1[12] = vec[6] + vec[14]; + temp1[14] = vec[6] - vec[14]; + temp1[13] = vec[7] + vec[15]; + temp1[15] = vec[7] - vec[15]; + + /* Pre-additions and core multiplications */ + temp2[0] = temp1[0] + temp1[8]; + temp2[4] = temp1[0] - temp1[8]; + temp2[1] = temp1[1] + temp1[9]; + temp2[5] = temp1[1] - temp1[9]; + temp2[8] = temp1[2] - temp1[11]; + temp2[10] = temp1[2] + temp1[11]; + temp2[9] = temp1[3] + temp1[10]; + temp2[11] = temp1[3] - temp1[10]; + temp2[2] = temp1[4] + temp1[12]; + temp2[7] = temp1[4] - temp1[12]; + temp2[3] = temp1[5] + temp1[13]; + temp2[6] = temp1[13] - temp1[5]; + + temp1[1] = temp1[6] + temp1[14]; + temp1[2] = temp1[6] - temp1[14]; + temp1[0] = temp1[7] + temp1[15]; + temp1[3] = temp1[7] - temp1[15]; + temp2[12] = (temp1[0] + temp1[2]) * INV_SQRT2; + temp2[14] = (temp1[0] - temp1[2]) * INV_SQRT2; + temp2[13] = (temp1[3] - temp1[1]) * INV_SQRT2; + temp2[15] = (temp1[1] + temp1[3]) * -INV_SQRT2; + + /* Post-additions */ + vec[0] = temp2[0] + temp2[2]; + vec[8] = temp2[0] - temp2[2]; + vec[1] = temp2[1] + temp2[3]; + vec[9] = temp2[1] - temp2[3]; + vec[4] = temp2[4] - temp2[6]; + vec[12] = temp2[4] + temp2[6]; + vec[5] = temp2[5] - temp2[7]; + vec[13] = temp2[5] + temp2[7]; + vec[6] = temp2[8] + temp2[14]; + vec[14] = temp2[8] - temp2[14]; + vec[7] = temp2[9] + temp2[15]; + vec[15] = temp2[9] - temp2[15]; + vec[2] = temp2[10] + temp2[12]; + vec[10] = temp2[10] - temp2[12]; + vec[3] = temp2[11] + temp2[13]; + vec[11] = temp2[11] - temp2[13]; +} + + +static void fft9(LC3_FLOAT* vec) +{ + const LC3_FLOAT C91 = 0.766044443118978; /* cos(2*PI/5); */ + const LC3_FLOAT C92 = 0.642787609686539; + const LC3_FLOAT C93 = 0.17364817766693; + const LC3_FLOAT C94 = 0.984807753012208; + const LC3_FLOAT C95 = 0.5; + const LC3_FLOAT C96 = 0.866025403784439; + const LC3_FLOAT C97 = 0.939692620785908; + const LC3_FLOAT C98 = 0.342020143325669; + + LC3_FLOAT re1, im1, re2_9p, re2_9m, im2_9p, im2_9m, re3_8p, re3_8m, im3_8p, im3_8m, re4_7p, re4_7m, im4_7p, im4_7m, + re5_6p, re5_6m, im5_6p, im5_6m; + + re1 = vec[0]; + im1 = vec[1]; + + butterfly(vec[1 * 2], vec[8 * 2], &re2_9p, &re2_9m); + butterfly(vec[1 * 2 + 1], vec[8 * 2 + 1], &im2_9p, &im2_9m); + butterfly(vec[2 * 2], vec[7 * 2], &re3_8p, &re3_8m); + butterfly(vec[2 * 2 + 1], vec[7 * 2 + 1], &im3_8p, &im3_8m); + butterfly(vec[3 * 2], vec[6 * 2], &re4_7p, &re4_7m); + butterfly(vec[3 * 2 + 1], vec[6 * 2 + 1], &im4_7p, &im4_7m); + butterfly(vec[4 * 2], vec[5 * 2], &re5_6p, &re5_6m); + butterfly(vec[4 * 2 + 1], vec[5 * 2 + 1], &im5_6p, &im5_6m); + + /* + 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 + 1.0000 C91 - C92i C93 - C94i -C95 - C96i -C97 - C98i -C97 + C98i -C95 + C96i C93 + C94i C91 + C92i + 1.0000 C93 - C94i -C97 - C98i -C95 + C96i C91 + C92i C91 - C92i -C95 - C96i -C97 + C98i C93 + C94i + 1.0000 -C95 - C96i -C95 + C96i 1.0000 -C95 - C96i -C95 + C96i 1.0000 -C95 - C96i -C95 + C96i + 1.0000 -C97 - C98i C91 + C92i -C95 - C96i C93 + C94i C93 - C94i -C95 + C96i C91 - C92i -C97 + C98i + 1.0000 -C97 + C98i C91 - C92i -C95 + C96i C93 - C94i C93 + C94i -C95 - C96i C91 + C92i -C97 - C98i + 1.0000 -C95 + C96i -C95 - C96i 1.0000 -C95 + C96i -C95 - C96i 1.0000 -C95 + C96i -C95 - C96i + 1.0000 C93 + C94i -C97 + C98i -C95 - C96i C91 - C92i C91 + C92i -C95 + C96i -C97 - C98i C93 - C94i + 1.0000 C91 + C92i C93 + C94i -C95 + C96i -C97 + C98i -C97 - C98i -C95 - C96i C93 - C94i C91 - C92i + */ + vec[0] = re1 + re2_9p + re3_8p + re4_7p + re5_6p; + vec[1] = im1 + im2_9p + im3_8p + im4_7p + im5_6p; + vec[2] = re1 + C91 * re2_9p + C93 * re3_8p - C95 * re4_7p - C97 * re5_6p + C92 * im2_9m + C94 * im3_8m + + C96 * im4_7m + C98 * im5_6m; + vec[16] = re1 + C91 * re2_9p + C93 * re3_8p - C95 * re4_7p - C97 * re5_6p - C92 * im2_9m - C94 * im3_8m - + C96 * im4_7m - C98 * im5_6m; + vec[3] = im1 - C92 * re2_9m - C94 * re3_8m - C96 * re4_7m - C98 * re5_6m + C91 * im2_9p + C93 * im3_8p - + C95 * im4_7p - C97 * im5_6p; + vec[17] = im1 + C92 * re2_9m + C94 * re3_8m + C96 * re4_7m + C98 * re5_6m + C91 * im2_9p + C93 * im3_8p - + C95 * im4_7p - C97 * im5_6p; + vec[4] = re1 + C93 * re2_9p - C97 * re3_8p - C95 * re4_7p + C91 * re5_6p + C94 * im2_9m + C98 * im3_8m - + C96 * im4_7m - C92 * im5_6m; + vec[14] = re1 + C93 * re2_9p - C97 * re3_8p - C95 * re4_7p + C91 * re5_6p - C94 * im2_9m - C98 * im3_8m + + C96 * im4_7m + C92 * im5_6m; + vec[5] = im1 - C94 * re2_9m - C98 * re3_8m + C96 * re4_7m + C92 * re5_6m + C93 * im2_9p - C97 * im3_8p - + C95 * im4_7p + C91 * im5_6p; + vec[15] = im1 + C94 * re2_9m + C98 * re3_8m - C96 * re4_7m - C92 * re5_6m + C93 * im2_9p - C97 * im3_8p - + C95 * im4_7p + C91 * im5_6p; + vec[6] = re1 - C95 * (re2_9p + re3_8p + re5_6p) + re4_7p + C96 * (im2_9m - im3_8m + im5_6m); + vec[12] = re1 - C95 * (re2_9p + re3_8p + re5_6p) + re4_7p - C96 * (im2_9m - im3_8m + im5_6m); + vec[7] = im1 - C96 * (re2_9m - re3_8m + re5_6m) - C95 * (im2_9p + im3_8p + im5_6p) + im4_7p; + vec[13] = im1 + C96 * (re2_9m - re3_8m + re5_6m) - C95 * (im2_9p + im3_8p + im5_6p) + im4_7p; + vec[8] = re1 - C97 * re2_9p + C91 * re3_8p - C95 * re4_7p + C93 * re5_6p + C98 * im2_9m - C92 * im3_8m + + C96 * im4_7m - C94 * im5_6m; + vec[10] = re1 - C97 * re2_9p + C91 * re3_8p - C95 * re4_7p + C93 * re5_6p - C98 * im2_9m + C92 * im3_8m - + C96 * im4_7m + C94 * im5_6m; + vec[9] = im1 - C98 * re2_9m + C92 * re3_8m - C96 * re4_7m + C94 * re5_6m - C97 * im2_9p + C91 * im3_8p - + C95 * im4_7p + C93 * im5_6p; + vec[11] = im1 + C98 * re2_9m - C92 * re3_8m + C96 * re4_7m - C94 * re5_6m - C97 * im2_9p + C91 * im3_8p - + C95 * im4_7p + C93 * im5_6p; +} + diff --git a/lc3plus/fft/fft_32.h b/lc3plus/fft/fft_32.h new file mode 100644 index 0000000000000000000000000000000000000000..48b891108b88b53a9529c32d035b1aba981c4968 --- /dev/null +++ b/lc3plus/fft/fft_32.h @@ -0,0 +1,467 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +static void fft32(LC3_FLOAT* vec) +{ + const LC3_FLOAT INV_SQRT2 = 7.071067811865475e-1; + const LC3_FLOAT COS_PI_DIV8 = 9.238795325112867e-1; + const LC3_FLOAT COS_3PI_DIV8 = 3.826834323650898e-1; + const LC3_FLOAT SQRT2PLUS1 = 2.414213562373095; + const LC3_FLOAT SQRT2MINUS1 = 4.142135623730952e-1; + + const LC3_FLOAT c[4] = {9.807852804032304e-1, 8.314696123025452e-1, 5.555702330196023e-1, 1.950903220161283e-1}; + + LC3_FLOAT tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, tmp11, tmp12, tmp13, tmp14, tmp15, + temp10, temp11, temp12, temp13, temp14, temp15, temp16, temp17, temp18, temp19, temp110, temp111, temp112, + temp113, temp114, temp115, temp20, temp21, temp22, temp23, temp24, temp25, temp26, temp27, temp28, temp29, + temp210, temp211, temp212, temp213, temp214, temp215, temp30, temp31, temp32, temp33, temp34, temp35, temp36, + temp37, temp38, temp39, temp310, temp311, temp312, temp313, temp314, temp315, temp316, temp317, temp318, + temp319, temp320, temp321, temp322, temp323, temp324, temp325, temp326, temp327, temp328, temp329, temp330, + temp331, temp40, temp41, temp42, temp43, temp44, temp45, temp46, temp47, temp48, temp49, temp410, temp411, + temp412, temp413, temp414, temp415; + + temp20 = vec[2] - vec[34]; + temp21 = vec[3] - vec[35]; + temp30 = vec[0] + vec[32]; + temp31 = vec[1] + vec[33]; + temp32 = vec[2] + vec[34]; + temp33 = vec[3] + vec[35]; + + temp22 = vec[6] - vec[38]; + temp23 = vec[7] - vec[39]; + temp34 = vec[4] + vec[36]; + temp35 = vec[5] + vec[37]; + temp36 = vec[6] + vec[38]; + temp37 = vec[7] + vec[39]; + + temp24 = vec[10] - vec[42]; + temp25 = vec[11] - vec[43]; + temp38 = vec[8] + vec[40]; + temp39 = vec[9] + vec[41]; + temp310 = vec[10] + vec[42]; + temp311 = vec[11] + vec[43]; + + temp26 = vec[14] - vec[46]; + temp27 = vec[15] - vec[47]; + temp312 = vec[12] + vec[44]; + temp313 = vec[13] + vec[45]; + temp314 = vec[14] + vec[46]; + temp315 = vec[15] + vec[47]; + + temp28 = vec[18] - vec[50]; + temp29 = vec[19] - vec[51]; + temp316 = vec[16] + vec[48]; + temp317 = vec[17] + vec[49]; + temp318 = vec[18] + vec[50]; + temp319 = vec[19] + vec[51]; + + temp210 = vec[22] - vec[54]; + temp211 = vec[23] - vec[55]; + temp320 = vec[20] + vec[52]; + temp321 = vec[21] + vec[53]; + temp322 = vec[22] + vec[54]; + temp323 = vec[23] + vec[55]; + + temp212 = vec[26] - vec[58]; + temp213 = vec[27] - vec[59]; + temp324 = vec[24] + vec[56]; + temp325 = vec[25] + vec[57]; + temp326 = vec[26] + vec[58]; + temp327 = vec[27] + vec[59]; + + temp214 = vec[30] - vec[62]; + temp215 = vec[31] - vec[63]; + temp328 = vec[28] + vec[60]; + temp329 = vec[29] + vec[61]; + temp330 = vec[30] + vec[62]; + temp331 = vec[31] + vec[63]; + + /* Pre-additions */ + temp41 = -(temp20 + temp214); + temp42 = temp20 - temp214; + temp40 = temp21 + temp215; + temp43 = temp21 - temp215; + temp45 = -(temp22 + temp212); + temp46 = temp22 - temp212; + temp44 = temp23 + temp213; + temp47 = temp23 - temp213; + temp49 = -(temp24 + temp210); + temp410 = temp24 - temp210; + temp48 = temp25 + temp211; + temp411 = temp25 - temp211; + temp413 = -(temp26 + temp28); + temp414 = temp26 - temp28; + temp412 = temp27 + temp29; + temp415 = temp27 - temp29; + + /* Core multiplications */ + temp20 = temp40 * c[3] + temp44 * c[2] + temp48 * c[1] + temp412 * c[0]; + temp24 = temp40 * c[2] + temp44 * c[0] + temp48 * c[3] - temp412 * c[1]; + temp28 = temp40 * c[1] + temp44 * c[3] - temp48 * c[0] + temp412 * c[2]; + temp212 = temp40 * c[0] - temp44 * c[1] + temp48 * c[2] - temp412 * c[3]; + temp21 = temp41 * c[3] + temp45 * c[2] + temp49 * c[1] + temp413 * c[0]; + temp25 = temp41 * c[2] + temp45 * c[0] + temp49 * c[3] - temp413 * c[1]; + temp29 = temp41 * c[1] + temp45 * c[3] - temp49 * c[0] + temp413 * c[2]; + temp213 = temp41 * c[0] - temp45 * c[1] + temp49 * c[2] - temp413 * c[3]; + temp22 = temp42 * c[0] + temp46 * c[1] + temp410 * c[2] + temp414 * c[3]; + temp26 = temp42 * c[1] - temp46 * c[3] - temp410 * c[0] - temp414 * c[2]; + temp210 = temp42 * c[2] - temp46 * c[0] + temp410 * c[3] + temp414 * c[1]; + temp214 = temp42 * c[3] - temp46 * c[2] + temp410 * c[1] - temp414 * c[0]; + temp23 = temp43 * c[0] + temp47 * c[1] + temp411 * c[2] + temp415 * c[3]; + temp27 = temp43 * c[1] - temp47 * c[3] - temp411 * c[0] - temp415 * c[2]; + temp211 = temp43 * c[2] - temp47 * c[0] + temp411 * c[3] + temp415 * c[1]; + temp215 = temp43 * c[3] - temp47 * c[2] + temp411 * c[1] - temp415 * c[0]; + + /* Post-additions */ + temp40 = temp20 + temp22; + temp414 = temp20 - temp22; + temp41 = temp21 + temp23; + temp415 = temp21 - temp23; + temp42 = temp24 + temp26; + temp412 = temp24 - temp26; + temp43 = temp25 + temp27; + temp413 = temp25 - temp27; + temp44 = temp28 + temp210; + temp410 = temp28 - temp210; + temp45 = temp29 + temp211; + temp411 = temp29 - temp211; + temp46 = temp212 + temp214; + temp48 = temp212 - temp214; + temp47 = temp213 + temp215; + temp49 = temp213 - temp215; + + /* fft16(temp3); */ + /* even */ + temp10 = temp30 + temp316; + temp11 = temp31 + temp317; + temp12 = temp32 + temp318; + temp13 = temp33 + temp319; + temp14 = temp34 + temp320; + temp15 = temp35 + temp321; + temp16 = temp36 + temp322; + temp17 = temp37 + temp323; + temp18 = temp38 + temp324; + temp19 = temp39 + temp325; + temp110 = temp310 + temp326; + temp111 = temp311 + temp327; + temp112 = temp312 + temp328; + temp113 = temp313 + temp329; + temp114 = temp314 + temp330; + temp115 = temp315 + temp331; + + /* Pre-additions */ + tmp0 = temp10 + temp18; + tmp2 = temp10 - temp18; + tmp1 = temp11 + temp19; + tmp3 = temp11 - temp19; + tmp4 = temp12 + temp110; + tmp6 = temp12 - temp110; + tmp5 = temp13 + temp111; + tmp7 = temp13 - temp111; + tmp8 = temp14 + temp112; + tmp10 = temp14 - temp112; + tmp9 = temp15 + temp113; + tmp11 = temp15 - temp113; + tmp12 = temp16 + temp114; + tmp14 = temp16 - temp114; + tmp13 = temp17 + temp115; + tmp15 = temp17 - temp115; + + /* Pre-additions and core multiplications */ + temp20 = tmp0 + tmp8; + temp24 = tmp0 - tmp8; + temp21 = tmp1 + tmp9; + temp25 = tmp1 - tmp9; + temp28 = tmp2 - tmp11; + temp210 = tmp2 + tmp11; + temp29 = tmp3 + tmp10; + temp211 = tmp3 - tmp10; + temp22 = tmp4 + tmp12; + temp27 = tmp4 - tmp12; + temp23 = tmp5 + tmp13; + temp26 = tmp13 - tmp5; + + tmp1 = tmp6 + tmp14; + tmp2 = tmp6 - tmp14; + tmp0 = tmp7 + tmp15; + tmp3 = tmp7 - tmp15; + temp212 = (tmp0 + tmp2) * INV_SQRT2; + temp214 = (tmp0 - tmp2) * INV_SQRT2; + temp213 = (tmp3 - tmp1) * INV_SQRT2; + temp215 = (tmp1 + tmp3) * -INV_SQRT2; + + /* odd */ + temp10 = temp30 - temp316; + temp11 = temp31 - temp317; + temp12 = temp32 - temp318; + temp13 = temp33 - temp319; + temp14 = temp34 - temp320; + temp15 = temp35 - temp321; + temp16 = temp36 - temp322; + temp17 = temp37 - temp323; + temp18 = temp38 - temp324; + temp19 = temp39 - temp325; + temp110 = temp310 - temp326; + temp111 = temp311 - temp327; + temp112 = temp312 - temp328; + temp113 = temp313 - temp329; + temp114 = temp314 - temp330; + temp115 = temp315 - temp331; + + /* Post-additions */ + temp30 = temp20 + temp22; + temp316 = temp20 - temp22; + temp31 = temp21 + temp23; + temp317 = temp21 - temp23; + temp38 = temp24 - temp26; + temp324 = temp24 + temp26; + temp39 = temp25 - temp27; + temp325 = temp25 + temp27; + temp312 = temp28 + temp214; + temp328 = temp28 - temp214; + temp313 = temp29 + temp215; + temp329 = temp29 - temp215; + temp34 = temp210 + temp212; + temp320 = temp210 - temp212; + temp35 = temp211 + temp213; + temp321 = temp211 - temp213; + + /* Pre-additions and core multiplications */ + tmp9 = (temp12 + temp114) * -COS_3PI_DIV8; + tmp10 = (temp12 - temp114) * COS_PI_DIV8; + tmp8 = (temp13 + temp115) * COS_3PI_DIV8; + tmp11 = (temp13 - temp115) * COS_PI_DIV8; + tmp5 = (temp14 + temp112) * -INV_SQRT2; + tmp6 = (temp14 - temp112) * INV_SQRT2; + tmp4 = (temp15 + temp113) * INV_SQRT2; + tmp7 = (temp15 - temp113) * INV_SQRT2; + tmp13 = (temp16 + temp110) * -COS_PI_DIV8; + tmp14 = (temp16 - temp110) * COS_3PI_DIV8; + tmp12 = (temp17 + temp111) * COS_PI_DIV8; + tmp15 = (temp17 - temp111) * COS_3PI_DIV8; + + /* Core multiplications */ + temp12 = tmp8 * SQRT2PLUS1 - tmp12 * SQRT2MINUS1; + temp13 = tmp9 * SQRT2PLUS1 - tmp13 * SQRT2MINUS1; + temp14 = tmp10 * SQRT2MINUS1 - tmp14 * SQRT2PLUS1; + temp15 = tmp11 * SQRT2MINUS1 - tmp15 * SQRT2PLUS1; + + /* Post-additions */ + tmp8 += tmp12; + tmp9 += tmp13; + tmp10 += tmp14; + tmp11 += tmp15; + temp16 = temp10 + tmp4; + temp110 = temp10 - tmp4; + temp17 = temp11 + tmp5; + temp111 = temp11 - tmp5; + + temp112 = tmp6 - temp19; + temp114 = tmp6 + temp19; + temp113 = temp18 + tmp7; + temp115 = temp18 - tmp7; + + tmp0 = temp16 - temp114; + tmp2 = temp16 + temp114; + tmp1 = temp17 + temp115; + tmp3 = temp17 - temp115; + tmp4 = temp110 + temp112; + tmp6 = temp110 - temp112; + tmp5 = temp111 + temp113; + tmp7 = temp111 - temp113; + + temp110 = tmp8 + tmp10; + tmp10 = tmp8 - tmp10; + temp111 = tmp9 + tmp11; + tmp11 = tmp9 - tmp11; + + tmp12 = temp12 + temp14; + tmp14 = temp12 - temp14; + tmp13 = temp13 + temp15; + tmp15 = temp13 - temp15; + + temp32 = tmp2 + temp110; + temp318 = tmp2 - temp110; + temp33 = tmp3 + temp111; + temp319 = tmp3 - temp111; + temp36 = tmp0 + tmp12; + temp322 = tmp0 - tmp12; + temp37 = tmp1 + tmp13; + temp323 = tmp1 - tmp13; + temp314 = tmp4 + tmp10; + temp330 = tmp4 - tmp10; + temp315 = tmp5 + tmp11; + temp331 = tmp5 - tmp11; + temp310 = tmp6 + tmp14; + temp326 = tmp6 - tmp14; + temp311 = tmp7 + tmp15; + temp327 = tmp7 - tmp15; + /* fft16(temp3); end */ + + /* fft8even(temp1); */ + temp10 = vec[0] - vec[32]; + temp11 = vec[1] - vec[33]; + temp12 = vec[4] - vec[36]; + temp13 = vec[5] - vec[37]; + temp14 = vec[8] - vec[40]; + temp15 = vec[9] - vec[41]; + temp16 = vec[12] - vec[44]; + temp17 = vec[13] - vec[45]; + temp18 = vec[16] - vec[48]; + temp19 = vec[17] - vec[49]; + temp110 = vec[20] - vec[52]; + temp111 = vec[21] - vec[53]; + temp112 = vec[24] - vec[56]; + temp113 = vec[25] - vec[57]; + temp114 = vec[28] - vec[60]; + temp115 = vec[29] - vec[61]; + + /* Pre-additions and core multiplications */ + tmp9 = (temp12 + temp114) * -COS_3PI_DIV8; + tmp10 = (temp12 - temp114) * COS_PI_DIV8; + tmp8 = (temp13 + temp115) * COS_3PI_DIV8; + tmp11 = (temp13 - temp115) * COS_PI_DIV8; + tmp5 = (temp14 + temp112) * -INV_SQRT2; + tmp6 = (temp14 - temp112) * INV_SQRT2; + tmp4 = (temp15 + temp113) * INV_SQRT2; + tmp7 = (temp15 - temp113) * INV_SQRT2; + tmp13 = (temp16 + temp110) * -COS_PI_DIV8; + tmp14 = (temp16 - temp110) * COS_3PI_DIV8; + tmp12 = (temp17 + temp111) * COS_PI_DIV8; + tmp15 = (temp17 - temp111) * COS_3PI_DIV8; + + /* Core multiplications */ + temp12 = tmp8 * SQRT2PLUS1 - tmp12 * SQRT2MINUS1; + temp13 = tmp9 * SQRT2PLUS1 - tmp13 * SQRT2MINUS1; + temp14 = tmp10 * SQRT2MINUS1 - tmp14 * SQRT2PLUS1; + temp15 = tmp11 * SQRT2MINUS1 - tmp15 * SQRT2PLUS1; + + /* Post-additions */ + tmp8 += tmp12; + tmp9 += tmp13; + tmp10 += tmp14; + tmp11 += tmp15; + temp16 = temp10 + tmp4; + temp110 = temp10 - tmp4; + temp17 = temp11 + tmp5; + temp111 = temp11 - tmp5; + + temp112 = tmp6 - temp19; + temp114 = tmp6 + temp19; + temp113 = temp18 + tmp7; + temp115 = temp18 - tmp7; + + tmp0 = temp16 - temp114; + tmp2 = temp16 + temp114; + tmp1 = temp17 + temp115; + tmp3 = temp17 - temp115; + tmp4 = temp110 + temp112; + tmp6 = temp110 - temp112; + tmp5 = temp111 + temp113; + tmp7 = temp111 - temp113; + + temp110 = tmp8 + tmp10; + tmp10 = tmp8 - tmp10; + temp111 = tmp9 + tmp11; + tmp11 = tmp9 - tmp11; + + tmp12 = temp12 + temp14; + tmp14 = temp12 - temp14; + tmp13 = temp13 + temp15; + tmp15 = temp13 - temp15; + + temp10 = tmp2 + temp110; + temp18 = tmp2 - temp110; + temp11 = tmp3 + temp111; + temp19 = tmp3 - temp111; + temp12 = tmp0 + tmp12; + temp110 = tmp0 - tmp12; + temp13 = tmp1 + tmp13; + temp111 = tmp1 - tmp13; + temp16 = tmp4 + tmp10; + temp114 = tmp4 - tmp10; + temp17 = tmp5 + tmp11; + temp115 = tmp5 - tmp11; + temp14 = tmp6 + tmp14; + temp112 = tmp6 - tmp14; + temp15 = tmp7 + tmp15; + temp113 = tmp7 - tmp15; + /* fft8even(temp1); end */ + + *vec++ = temp30; + *vec++ = temp31; + *vec++ = temp10 + temp40; + *vec++ = temp11 + temp41; + *vec++ = temp32; + *vec++ = temp33; + *vec++ = temp12 + temp42; + *vec++ = temp13 + temp43; + *vec++ = temp34; + *vec++ = temp35; + *vec++ = temp14 + temp44; + *vec++ = temp15 + temp45; + *vec++ = temp36; + *vec++ = temp37; + *vec++ = temp16 + temp46; + *vec++ = temp17 + temp47; + *vec++ = temp38; + *vec++ = temp39; + *vec++ = temp18 + temp48; + *vec++ = temp19 + temp49; + *vec++ = temp310; + *vec++ = temp311; + *vec++ = temp110 + temp410; + *vec++ = temp111 + temp411; + *vec++ = temp312; + *vec++ = temp313; + *vec++ = temp112 + temp412; + *vec++ = temp113 + temp413; + *vec++ = temp314; + *vec++ = temp315; + *vec++ = temp114 + temp414; + *vec++ = temp115 + temp415; + *vec++ = temp316; + *vec++ = temp317; + *vec++ = temp10 - temp40; + *vec++ = temp11 - temp41; + *vec++ = temp318; + *vec++ = temp319; + *vec++ = temp12 - temp42; + *vec++ = temp13 - temp43; + *vec++ = temp320; + *vec++ = temp321; + *vec++ = temp14 - temp44; + *vec++ = temp15 - temp45; + *vec++ = temp322; + *vec++ = temp323; + *vec++ = temp16 - temp46; + *vec++ = temp17 - temp47; + *vec++ = temp324; + *vec++ = temp325; + *vec++ = temp18 - temp48; + *vec++ = temp19 - temp49; + *vec++ = temp326; + *vec++ = temp327; + *vec++ = temp110 - temp410; + *vec++ = temp111 - temp411; + *vec++ = temp328; + *vec++ = temp329; + *vec++ = temp112 - temp412; + *vec++ = temp113 - temp413; + *vec++ = temp330; + *vec++ = temp331; + *vec++ = temp114 - temp414; + *vec++ = temp115 - temp415; +} diff --git a/lc3plus/fft/fft_384_768.h b/lc3plus/fft/fft_384_768.h new file mode 100644 index 0000000000000000000000000000000000000000..47f42e90d6546a945a4857a14a43bbc90ec2cfe9 --- /dev/null +++ b/lc3plus/fft/fft_384_768.h @@ -0,0 +1,103 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +static void fft384(LC3_FLOAT* restrict in) +{ + const LC3_INT table1[384] = { + 0, 256, 128, 129, 1, 257, 258, 130, 2, 3, 259, 131, 132, 4, 260, 261, 133, 5, 6, 262, 134, 135, + 7, 263, 264, 136, 8, 9, 265, 137, 138, 10, 266, 267, 139, 11, 12, 268, 140, 141, 13, 269, 270, 142, + 14, 15, 271, 143, 144, 16, 272, 273, 145, 17, 18, 274, 146, 147, 19, 275, 276, 148, 20, 21, 277, 149, + 150, 22, 278, 279, 151, 23, 24, 280, 152, 153, 25, 281, 282, 154, 26, 27, 283, 155, 156, 28, 284, 285, + 157, 29, 30, 286, 158, 159, 31, 287, 288, 160, 32, 33, 289, 161, 162, 34, 290, 291, 163, 35, 36, 292, + 164, 165, 37, 293, 294, 166, 38, 39, 295, 167, 168, 40, 296, 297, 169, 41, 42, 298, 170, 171, 43, 299, + 300, 172, 44, 45, 301, 173, 174, 46, 302, 303, 175, 47, 48, 304, 176, 177, 49, 305, 306, 178, 50, 51, + 307, 179, 180, 52, 308, 309, 181, 53, 54, 310, 182, 183, 55, 311, 312, 184, 56, 57, 313, 185, 186, 58, + 314, 315, 187, 59, 60, 316, 188, 189, 61, 317, 318, 190, 62, 63, 319, 191, 192, 64, 320, 321, 193, 65, + 66, 322, 194, 195, 67, 323, 324, 196, 68, 69, 325, 197, 198, 70, 326, 327, 199, 71, 72, 328, 200, 201, + 73, 329, 330, 202, 74, 75, 331, 203, 204, 76, 332, 333, 205, 77, 78, 334, 206, 207, 79, 335, 336, 208, + 80, 81, 337, 209, 210, 82, 338, 339, 211, 83, 84, 340, 212, 213, 85, 341, 342, 214, 86, 87, 343, 215, + 216, 88, 344, 345, 217, 89, 90, 346, 218, 219, 91, 347, 348, 220, 92, 93, 349, 221, 222, 94, 350, 351, + 223, 95, 96, 352, 224, 225, 97, 353, 354, 226, 98, 99, 355, 227, 228, 100, 356, 357, 229, 101, 102, 358, + 230, 231, 103, 359, 360, 232, 104, 105, 361, 233, 234, 106, 362, 363, 235, 107, 108, 364, 236, 237, 109, 365, + 366, 238, 110, 111, 367, 239, 240, 112, 368, 369, 241, 113, 114, 370, 242, 243, 115, 371, 372, 244, 116, 117, + 373, 245, 246, 118, 374, 375, 247, 119, 120, 376, 248, 249, 121, 377, 378, 250, 122, 123, 379, 251, 252, 124, + 380, 381, 253, 125, 126, 382, 254, 255, 127, 383}; + const LC3_INT table2[384] = { + 0, 128, 256, 3, 131, 259, 6, 134, 262, 9, 137, 265, 12, 140, 268, 15, 143, 271, 18, 146, 274, 21, + 149, 277, 24, 152, 280, 27, 155, 283, 30, 158, 286, 33, 161, 289, 36, 164, 292, 39, 167, 295, 42, 170, + 298, 45, 173, 301, 48, 176, 304, 51, 179, 307, 54, 182, 310, 57, 185, 313, 60, 188, 316, 63, 191, 319, + 66, 194, 322, 69, 197, 325, 72, 200, 328, 75, 203, 331, 78, 206, 334, 81, 209, 337, 84, 212, 340, 87, + 215, 343, 90, 218, 346, 93, 221, 349, 96, 224, 352, 99, 227, 355, 102, 230, 358, 105, 233, 361, 108, 236, + 364, 111, 239, 367, 114, 242, 370, 117, 245, 373, 120, 248, 376, 123, 251, 379, 126, 254, 382, 129, 257, 1, + 132, 260, 4, 135, 263, 7, 138, 266, 10, 141, 269, 13, 144, 272, 16, 147, 275, 19, 150, 278, 22, 153, + 281, 25, 156, 284, 28, 159, 287, 31, 162, 290, 34, 165, 293, 37, 168, 296, 40, 171, 299, 43, 174, 302, + 46, 177, 305, 49, 180, 308, 52, 183, 311, 55, 186, 314, 58, 189, 317, 61, 192, 320, 64, 195, 323, 67, + 198, 326, 70, 201, 329, 73, 204, 332, 76, 207, 335, 79, 210, 338, 82, 213, 341, 85, 216, 344, 88, 219, + 347, 91, 222, 350, 94, 225, 353, 97, 228, 356, 100, 231, 359, 103, 234, 362, 106, 237, 365, 109, 240, 368, + 112, 243, 371, 115, 246, 374, 118, 249, 377, 121, 252, 380, 124, 255, 383, 127, 258, 2, 130, 261, 5, 133, + 264, 8, 136, 267, 11, 139, 270, 14, 142, 273, 17, 145, 276, 20, 148, 279, 23, 151, 282, 26, 154, 285, + 29, 157, 288, 32, 160, 291, 35, 163, 294, 38, 166, 297, 41, 169, 300, 44, 172, 303, 47, 175, 306, 50, + 178, 309, 53, 181, 312, 56, 184, 315, 59, 187, 318, 62, 190, 321, 65, 193, 324, 68, 196, 327, 71, 199, + 330, 74, 202, 333, 77, 205, 336, 80, 208, 339, 83, 211, 342, 86, 214, 345, 89, 217, 348, 92, 220, 351, + 95, 223, 354, 98, 226, 357, 101, 229, 360, 104, 232, 363, 107, 235, 366, 110, 238, 369, 113, 241, 372, 116, + 244, 375, 119, 247, 378, 122, 250, 381, 125, 253}; + + const LC3_INT L = 384; + const LC3_INT A = 3; + const LC3_INT B = 128; + const LC3_INT* idx1 = table1; + const LC3_INT* idx2 = table2; + + LC3_INT k, l; + LC3_FLOAT temp[256], out[768]; + + for (k = 0; k < A; k++) { + for (l = 0; l < B; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1 + 1]; + idx1 += A; + } + + fft128(temp); /* 128-point FFT */ + idx1 -= L; + + for (l = 0; l < B; l++) { + in[2 * *idx1] = temp[2 * l]; + in[2 * *idx1 + 1] = temp[2 * l + 1]; + idx1 += A; + } + + idx1 -= L - 1; + } + + idx1 -= A; + + for (k = 0; k < B; k++) { + for (l = 0; l < A; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1++ + 1]; + } + + fft3(temp); /* 3-point FFT */ + + for (l = 0; l < A; l++) { + out[2 * *idx2] = temp[2 * l]; + out[2 * *idx2++ + 1] = temp[2 * l + 1]; + } + } + + memmove(in, out, 2 * L * sizeof(LC3_FLOAT)); +} + diff --git a/lc3plus/fft/fft_60_128.h b/lc3plus/fft/fft_60_128.h new file mode 100644 index 0000000000000000000000000000000000000000..75f1aaef45cf21c69b717e39a63cdff31f2c984b --- /dev/null +++ b/lc3plus/fft/fft_60_128.h @@ -0,0 +1,161 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +static void fft60(LC3_FLOAT* in) +{ + const LC3_INT table1[] = {0, 45, 30, 15, 16, 1, 46, 31, 32, 17, 2, 47, 48, 33, 18, 3, 4, 49, 34, 19, + 20, 5, 50, 35, 36, 21, 6, 51, 52, 37, 22, 7, 8, 53, 38, 23, 24, 9, 54, 39, + 40, 25, 10, 55, 56, 41, 26, 11, 12, 57, 42, 27, 28, 13, 58, 43, 44, 29, 14, 59}; + const LC3_INT table2[] = {0, 15, 30, 45, 4, 19, 34, 49, 8, 23, 38, 53, 12, 27, 42, 57, 16, 31, 46, 1, + 20, 35, 50, 5, 24, 39, 54, 9, 28, 43, 58, 13, 32, 47, 2, 17, 36, 51, 6, 21, + 40, 55, 10, 25, 44, 59, 14, 29, 48, 3, 18, 33, 52, 7, 22, 37, 56, 11, 26, 41}; + const LC3_INT a = 4; + const LC3_INT b = 15; + const LC3_INT L = 60; + const LC3_INT* idx1 = table1; + const LC3_INT* idx2 = table2; + + LC3_FLOAT temp[30], out[120]; + LC3_INT k, l; + + for (k = 0; k < a; k++) { + for (l = 0; l < b; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1 + 1]; + idx1 += a; + } + + fft15(temp); /* 15-point FFT */ + idx1 -= L; + + for (l = 0; l < b; l++) { + in[2 * *idx1] = temp[2 * l]; + in[2 * *idx1 + 1] = temp[2 * l + 1]; + idx1 += a; + } + idx1 -= L - 1; + } + + idx1 -= a; + + for (k = 0; k < b; k++) { + for (l = 0; l < a; l++) { + temp[2 * l] = in[2 * *idx1]; + temp[2 * l + 1] = in[2 * *idx1++ + 1]; + } + + fft4(temp); /* 4-point FFT */ + + for (l = 0; l < a; l++) { + out[2 * *idx2] = temp[2 * l]; + out[2 * *idx2++ + 1] = temp[2 * l + 1]; + } + } + memmove(in, out, 2 * L * sizeof(LC3_FLOAT)); +} + +static void fft64(LC3_FLOAT* vec) +{ + const LC3_FLOAT w[] = { + 1.0000000000f, 0.9951847267f, 0.9807852804f, 0.9569403357f, 0.9238795325f, 0.8819212643f, 0.8314696123f, + 0.7730104534f, 0.7071067812f, 0.6343932842f, 0.5555702330f, 0.4713967368f, 0.3826834324f, 0.2902846773f, + 0.1950903220f, 0.0980171403f, 0.0000000000f, -0.0980171403f, -0.1950903220f, -0.2902846773f, -0.3826834324f, + -0.4713967368f, -0.5555702330f, -0.6343932842f, -0.7071067812f, -0.7730104534f, -0.8314696123f, -0.8819212643f, + -0.9238795325f, -0.9569403357f, -0.9807852804f, -0.9951847267f, -1.0000000000f, -0.9951847267f, -0.9807852804f, + -0.9569403357f, -0.9238795325f, -0.8819212643f, -0.8314696123f, -0.7730104534f, -0.7071067812f, -0.6343932842f, + -0.5555702330f, -0.4713967368f, -0.3826834324f, -0.2902846773f, -0.1950903220f, -0.0980171403f}; + + LC3_FLOAT temp1[64], temp2[64]; + LC3_INT i; + + for (i = 0; i < 32; i++) { + temp1[2 * i] = vec[4 * i]; + temp1[2 * i + 1] = vec[4 * i + 1]; + temp2[2 * i] = vec[4 * i + 2]; + temp2[2 * i + 1] = vec[4 * i + 3]; + } + + fft32(temp1); + fft32(temp2); + + for (i = 0; i < 32; i++) { + LC3_FLOAT re, im, wre, wim, tre, tim; + + re = temp2[2 * i]; + im = temp2[2 * i + 1]; + + wre = w[i]; + wim = w[i + 16]; + + tre = re * wre - im * wim; + tim = re * wim + im * wre; + + vec[2 * i] = temp1[2 * i] + tre; + vec[2 * i + 1] = temp1[2 * i + 1] + tim; + vec[2 * i + 64] = temp1[2 * i] - tre; + vec[2 * i + 65] = temp1[2 * i + 1] - tim; + } +} + +static void fft128(LC3_FLOAT* vec) +{ + const LC3_FLOAT w[] = { + 1.0000000000f, 0.9987954562f, 0.9951847267f, 0.9891765100f, 0.9807852804f, 0.9700312532f, 0.9569403357f, + 0.9415440652f, 0.9238795325f, 0.9039892931f, 0.8819212643f, 0.8577286100f, 0.8314696123f, 0.8032075315f, + 0.7730104534f, 0.7409511254f, 0.7071067812f, 0.6715589548f, 0.6343932842f, 0.5956993045f, 0.5555702330f, + 0.5141027442f, 0.4713967368f, 0.4275550934f, 0.3826834324f, 0.3368898534f, 0.2902846773f, 0.2429801799f, + 0.1950903220f, 0.1467304745f, 0.0980171403f, 0.0490676743f, 0.0000000000f, -0.0490676743f, -0.0980171403f, + -0.1467304745f, -0.1950903220f, -0.2429801799f, -0.2902846773f, -0.3368898534f, -0.3826834324f, -0.4275550934f, + -0.4713967368f, -0.5141027442f, -0.5555702330f, -0.5956993045f, -0.6343932842f, -0.6715589548f, -0.7071067812f, + -0.7409511254f, -0.7730104534f, -0.8032075315f, -0.8314696123f, -0.8577286100f, -0.8819212643f, -0.9039892931f, + -0.9238795325f, -0.9415440652f, -0.9569403357f, -0.9700312532f, -0.9807852804f, -0.9891765100f, -0.9951847267f, + -0.9987954562f, -1.0000000000f, -0.9987954562f, -0.9951847267f, -0.9891765100f, -0.9807852804f, -0.9700312532f, + -0.9569403357f, -0.9415440652f, -0.9238795325f, -0.9039892931f, -0.8819212643f, -0.8577286100f, -0.8314696123f, + -0.8032075315f, -0.7730104534f, -0.7409511254f, -0.7071067812f, -0.6715589548f, -0.6343932842f, -0.5956993045f, + -0.5555702330f, -0.5141027442f, -0.4713967368f, -0.4275550934f, -0.3826834324f, -0.3368898534f, -0.2902846773f, + -0.2429801799f, -0.1950903220f, -0.1467304745f, -0.0980171403f, -0.0490676743f, + }; + + LC3_FLOAT temp1[128], temp2[128]; + LC3_INT i; + + for (i = 0; i < 64; i++) { + temp1[2 * i] = vec[4 * i]; + temp1[2 * i + 1] = vec[4 * i + 1]; + temp2[2 * i] = vec[4 * i + 2]; + temp2[2 * i + 1] = vec[4 * i + 3]; + } + + fft64(temp1); + fft64(temp2); + + for (i = 0; i < 64; i++) { + LC3_FLOAT re, im, wre, wim, tre, tim; + + re = temp2[2 * i]; + im = temp2[2 * i + 1]; + + wre = w[i]; + wim = w[i + 32]; + + tre = re * wre - im * wim; + tim = re * wim + im * wre; + + vec[2 * i] = temp1[2 * i] + tre; + vec[2 * i + 1] = temp1[2 * i + 1] + tim; + vec[2 * i + 128] = temp1[2 * i] - tre; + vec[2 * i + 129] = temp1[2 * i + 1] - tim; + } +} diff --git a/lc3plus/fft/fft_generic.h b/lc3plus/fft/fft_generic.h new file mode 100644 index 0000000000000000000000000000000000000000..e517ffb2501daf1d5e4ff16fcb1bb9197d6a616e --- /dev/null +++ b/lc3plus/fft/fft_generic.h @@ -0,0 +1,699 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/* guard against unindended includes */ +#ifndef INCLUDED_FROM_IISFFT_C +#error "this file must not be included" +#endif + +#define FFT_INTERNAL_TRIG_PREC double +#define BORDER_FOR_SECOND_SCRATCH 100 + +static const LC3_INT primeFactors[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, + 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, + 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, + 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 0}; + +/* fft, returns 1 if length is supported and fft was applied */ +static LC3_INT fft_n(LC3_FLOAT* x, LC3_INT length) +{ + switch (length) { + case 2: + fft2(x); + return 1; + case 3: + fft3(x); + return 1; + case 4: + fft4(x); + return 1; + case 5: + fft5(x); + return 1; + case 8: + fft8(x); + return 1; + case 9: + fft9(x); + return 1; + case 15: + fft15(x); + return 1; + case 16: + fft16(x); + return 1; + case 32: + fft32(x); + return 1; + case 60: + fft60(x); + return 1; + case 64: + fft64(x); + return 1; + case 128: + fft128(x); + return 1; + case 240: + fft240(x); + return 1; + case 256: + LC3_cfft(x, x + 1, 256, 2, -1); + return 1; + case 384: + fft384(x); + return 1; + case 480: + fft480(x); + return 1; + case 512: + LC3_cfft(x, x + 1, 512, 2, -1); + return 1; + case 1024: + LC3_cfft(x, x + 1, 1024, 2, -1); + return 1; + default: + return 0; + } +} + + +/* returns 1 on success or 0 if IISFFT_MAXFACTORS is too small */ +static LC3_INT factorize(LC3_INT length, LC3_INT* restrict numFactors, LC3_INT* restrict factor, + LC3_INT* restrict isPrime) +{ + LC3_INT remainder = length; + LC3_INT idx = 0, cnt = 0; + LC3_INT actFac = primeFactors[idx]; + LC3_INT inc = 0; + + *numFactors = 0; + + while (remainder > 1 && actFac != 0) { + if (remainder % actFac == 0) { + if (inc == 0) { + inc = 1; + (*numFactors)++; + } + remainder /= actFac; + } else { + actFac = primeFactors[++idx]; + inc = 0; + } + } + if (remainder > 1) { + (*numFactors)++; + } + + if (*numFactors > IISFFT_MAXFACTORS) + return 0; + + idx = 0, cnt = 0, inc = 0; + remainder = length; + actFac = primeFactors[idx]; + (factor)[cnt] = 1; + while (remainder > 1 && actFac != 0) { + if (remainder % actFac == 0) { + (factor)[cnt] *= actFac; + remainder /= actFac; + inc = 1; + if (factor[cnt] == actFac) { /* first appearance of the factor */ + isPrime[cnt] = 1; + } else { + isPrime[cnt] = 0; + } + } else { + actFac = primeFactors[++idx]; + if (inc == 1) { + cnt++; + } + inc = 0; + (factor)[cnt] = 1; + } + } + if (remainder > 1) { + factor[cnt] = remainder; + } + return 1; +} + +static void oddFFT(LC3_FLOAT* restrict x, LC3_INT length, LC3_FLOAT* restrict scratch) +{ + LC3_INT i, k, n; + LC3_FLOAT * src1, *src2, *dest1, *dest2; + FFT_INTERNAL_TRIG_PREC sinValOrg, cosValOrg; + + dest1 = scratch + 1; + dest2 = scratch + length + 1; + src1 = x + 2; + src2 = x + 2 * length - 1; + + scratch[0] = x[0]; + scratch[length] = x[1]; + + for (i = 2; i < length; i += 2) { + LC3_FLOAT tmp1R, tmp1I, tmp2R, tmp2I; + tmp1R = *src1++; + tmp1I = *src1++; + tmp2I = *src2--; + tmp2R = *src2--; + *dest1++ = tmp1R + tmp2R; + *dest1++ = tmp1R - tmp2R; + *dest2++ = tmp1I + tmp2I; + *dest2++ = tmp1I - tmp2I; + + x[0] += tmp1R + tmp2R; + x[1] += tmp1I + tmp2I; + } + + dest1 = x + 2; + dest2 = x + 2 * length - 2; + for (k = 2; k < length; k += 2) { + FFT_INTERNAL_TRIG_PREC sinVal = 0, cosVal = 1; + cosValOrg = LC3_COS(-M_PIl * k / length); + sinValOrg = LC3_SIN(-M_PIl * k / length); + + *dest1 = *dest2 = scratch[0]; + *(dest1 + 1) = *(dest2 + 1) = scratch[length]; + + src1 = scratch + 1; + src2 = scratch + length + 1; + + for (n = 2; n < length; n += 2) { + LC3_FLOAT rePre, reMre, imPim, imMim; + /* + cos(x+y) = cox(x) cos(y) - sin(x) sin(y); + sin(x+y) = sin(x) cos(y) + cos(x) sin(y); + */ + FFT_INTERNAL_TRIG_PREC tmp = cosVal * cosValOrg - sinVal * sinValOrg; + sinVal = sinVal * cosValOrg + cosVal * sinValOrg; + cosVal = tmp; + + rePre = *src1++; + reMre = *src1++; + imPim = *src2++; + imMim = *src2++; + + *dest1 += (LC3_FLOAT)cosVal * rePre - (LC3_FLOAT)sinVal * imMim; + *(dest1 + 1) += (LC3_FLOAT)sinVal * reMre + (LC3_FLOAT)cosVal * imPim; + *dest2 += (LC3_FLOAT)cosVal * rePre + (LC3_FLOAT)sinVal * imMim; + *(dest2 + 1) += (LC3_FLOAT)-sinVal * reMre + (LC3_FLOAT)cosVal * imPim; + } + dest1 += 2; + dest2 -= 2; + } +} + +static LC3_INT findInverse(LC3_INT a, LC3_INT b) +{ + LC3_INT b0 = b, t, q; + LC3_INT x0 = 0, x1 = 1; + + if (b == 1) { + return 1; + } + + while (a > 1) { + q = a / b; + t = b, b = a % b, a = t; + t = x0, x0 = x1 - q * x0, x1 = t; + } + + if (x1 < 0) { + x1 += b0; + } + + return x1; +} + +static LC3_INT getGeneratorStupid(LC3_INT groupLength) +{ + LC3_INT generator = 2; /* start value */ + LC3_INT count = 1, number = generator; + + while (generator < 100) { /* hopefully the generator is smaller than 100 */ + while (number != 1) { + number = (number * generator) % groupLength; + count++; + } + if (count == groupLength - 1) { + return generator; + } else { + generator++; + count = 1; + number = generator; + } + } + + return -1; +} + +static LC3_INT getGenerator(LC3_INT groupLength) +{ + LC3_INT generator = 2; /* start value */ + LC3_INT count, number, factorCount, found, count2; + LC3_INT factors[16] = {0}; + + /* factorize: only for a group length with factors < 300 */ + factorCount = 0; + number = groupLength - 1; + found = 0; + count = 0; + while (number != 1) { + if (primeFactors[count] == 0) { + /* Not all factors listed */ + return getGeneratorStupid(groupLength); + } + if (number % primeFactors[count] == 0) { + number /= primeFactors[count]; + if (found == 0) { + factors[factorCount++] = primeFactors[count]; + found = 1; + } + } else { + count++; + found = 0; + } + } + + for (count = 0; factors[count] != 0; count++) { + factors[count] = (groupLength - 1) / factors[count]; + } + + /* calculate generator */ + number = generator; + count = 0; + while (factors[count] != 0) { + for (count2 = 0; count2 < factors[count] - 1; count2++) { + number = (number * generator) % groupLength; + } + if (number != 1) { + count++; + number = generator; + if (factors[count] == 0) { + return generator; + } + } else { + count = 0; + generator++; + number = generator; + } + } + + return -1; +} + +static void primeFFT(LC3_FLOAT* restrict x, LC3_INT length, LC3_FLOAT* restrict scratch, LC3_INT* restrict scratch2) +{ + LC3_INT i, k, middle = (length - 1) / 2; + LC3_FLOAT *src1, *src2, *dest1, *dest2; + LC3_INT * mapping, *map; + LC3_INT generator; + + LC3_INT mappingTable[25][97] = { + {0, 2}, + {0, 2, 4}, + {0, 2, 4, 8, 6}, + {0, 2, 6, 4, 12, 8, 10}, + {0, 2, 4, 8, 16, 10, 20, 18, 14, 6, 12}, + {0, 2, 4, 8, 16, 6, 12, 24, 22, 18, 10, 20, 14}, + {0, 2, 6, 18, 20, 26, 10, 30, 22, 32, 28, 16, 14, 8, 24, 4, 12}, + {0, 2, 4, 8, 16, 32, 26, 14, 28, 18, 36, 34, 30, 22, 6, 12, 24, 10, 20}, + {0, 2, 10, 4, 20, 8, 40, 16, 34, 32, 22, 18, 44, 36, 42, 26, 38, 6, 30, 12, 14, 24, 28}, + {0, 2, 4, 8, 16, 32, 6, 12, 24, 48, 38, 18, 36, 14, 28, 56, 54, 50, 42, 26, 52, 46, 34, 10, 20, 40, 22, 44, 30}, + {0, 2, 6, 18, 54, 38, 52, 32, 34, 40, 58, 50, 26, 16, 48, 20, + 60, 56, 44, 8, 24, 10, 30, 28, 22, 4, 12, 36, 46, 14, 42}, + {0, 2, 4, 8, 16, 32, 64, 54, 34, 68, 62, 50, 26, 52, 30, 60, 46, 18, 36, + 72, 70, 66, 58, 42, 10, 20, 40, 6, 12, 24, 48, 22, 44, 14, 28, 56, 38}, + {0, 2, 12, 72, 22, 50, 54, 78, 58, 20, 38, 64, 56, 8, 48, 42, 6, 36, 52, 66, 68, + 80, 70, 10, 60, 32, 28, 4, 24, 62, 44, 18, 26, 74, 34, 40, 76, 46, 30, 16, 14}, + {0, 2, 6, 18, 54, 76, 56, 82, 74, 50, 64, 20, 60, 8, 24, 72, 44, 46, 52, 70, 38, 28, + 84, 80, 68, 32, 10, 30, 4, 12, 36, 22, 66, 26, 78, 62, 14, 42, 40, 34, 16, 48, 58}, + {0, 2, 10, 50, 62, 28, 46, 42, 22, 16, 80, 24, 26, 36, 86, 54, 82, 34, 76, 4, 20, 6, 30, 56, + 92, 84, 44, 32, 66, 48, 52, 72, 78, 14, 70, 68, 58, 8, 40, 12, 60, 18, 90, 74, 88, 64, 38}, + {0, 2, 4, 8, 16, 32, 64, 22, 44, 88, 70, 34, 68, 30, 60, 14, 28, 56, 6, 12, 24, 48, 96, 86, 66, 26, 52, + 104, 102, 98, 90, 74, 42, 84, 62, 18, 36, 72, 38, 76, 46, 92, 78, 50, 100, 94, 82, 58, 10, 20, 40, 80, 54}, + {0, 2, 4, 8, 16, 32, 64, 10, 20, 40, 80, 42, 84, 50, 100, 82, 46, 92, 66, 14, + 28, 56, 112, 106, 94, 70, 22, 44, 88, 58, 116, 114, 110, 102, 86, 54, 108, 98, 78, 38, + 76, 34, 68, 18, 36, 72, 26, 52, 104, 90, 62, 6, 12, 24, 48, 96, 74, 30, 60}, + {0, 2, 4, 8, 16, 32, 64, 6, 12, 24, 48, 96, 70, 18, 36, 72, 22, 44, 88, 54, 108, + 94, 66, 10, 20, 40, 80, 38, 76, 30, 60, 120, 118, 114, 106, 90, 58, 116, 110, 98, 74, 26, + 52, 104, 86, 50, 100, 78, 34, 68, 14, 28, 56, 112, 102, 82, 42, 84, 46, 92, 62}, + {0, 2, 4, 8, 16, 32, 64, 128, 122, 110, 86, 38, 76, 18, 36, 72, 10, 20, 40, 80, 26, 52, 104, + 74, 14, 28, 56, 112, 90, 46, 92, 50, 100, 66, 132, 130, 126, 118, 102, 70, 6, 12, 24, 48, 96, 58, + 116, 98, 62, 124, 114, 94, 54, 108, 82, 30, 60, 120, 106, 78, 22, 44, 88, 42, 84, 34, 68}, + {0, 2, 14, 98, 118, 116, 102, 4, 28, 54, 94, 90, 62, 8, 56, 108, 46, 38, 124, 16, 112, 74, 92, 76, + 106, 32, 82, 6, 42, 10, 70, 64, 22, 12, 84, 20, 140, 128, 44, 24, 26, 40, 138, 114, 88, 48, 52, 80, + 134, 86, 34, 96, 104, 18, 126, 30, 68, 50, 66, 36, 110, 60, 136, 100, 132, 72, 78, 120, 130, 58, 122}, + {0, 2, 10, 50, 104, 82, 118, 6, 30, 4, 20, 100, 62, 18, 90, 12, 60, 8, 40, + 54, 124, 36, 34, 24, 120, 16, 80, 108, 102, 72, 68, 48, 94, 32, 14, 70, 58, 144, + 136, 96, 42, 64, 28, 140, 116, 142, 126, 46, 84, 128, 56, 134, 86, 138, 106, 92, 22, + 110, 112, 122, 26, 130, 66, 38, 44, 74, 78, 98, 52, 114, 132, 76, 88}, + {0, 2, 6, 18, 54, 4, 12, 36, 108, 8, 24, 72, 58, 16, 48, 144, 116, 32, 96, 130, + 74, 64, 34, 102, 148, 128, 68, 46, 138, 98, 136, 92, 118, 38, 114, 26, 78, 76, 70, 52, + 156, 152, 140, 104, 154, 146, 122, 50, 150, 134, 86, 100, 142, 110, 14, 42, 126, 62, 28, 84, + 94, 124, 56, 10, 30, 90, 112, 20, 60, 22, 66, 40, 120, 44, 132, 80, 82, 88, 106}, + {0, 2, 4, 8, 16, 32, 64, 128, 90, 14, 28, 56, 112, 58, 116, 66, 132, 98, 30, 60, 120, + 74, 148, 130, 94, 22, 44, 88, 10, 20, 40, 80, 160, 154, 142, 118, 70, 140, 114, 62, 124, 82, + 164, 162, 158, 150, 134, 102, 38, 76, 152, 138, 110, 54, 108, 50, 100, 34, 68, 136, 106, 46, 92, + 18, 36, 72, 144, 122, 78, 156, 146, 126, 86, 6, 12, 24, 48, 96, 26, 52, 104, 42, 84}, + {0, 2, 6, 18, 54, 162, 130, 34, 102, 128, 28, 84, 74, 44, 132, 40, 120, 4, + 12, 36, 108, 146, 82, 68, 26, 78, 56, 168, 148, 88, 86, 80, 62, 8, 24, 72, + 38, 114, 164, 136, 52, 156, 112, 158, 118, 176, 172, 160, 124, 16, 48, 144, 76, 50, + 150, 94, 104, 134, 46, 138, 58, 174, 166, 142, 70, 32, 96, 110, 152, 100, 122, 10, + 30, 90, 92, 98, 116, 170, 154, 106, 140, 64, 14, 42, 126, 22, 66, 20, 60}, + {0, 2, 10, 50, 56, 86, 42, 16, 80, 12, 60, 106, 142, 128, 58, 96, 92, 72, 166, 54, + 76, 186, 154, 188, 164, 44, 26, 130, 68, 146, 148, 158, 14, 70, 156, 4, 20, 100, 112, 172, + 84, 32, 160, 24, 120, 18, 90, 62, 116, 192, 184, 144, 138, 108, 152, 178, 114, 182, 134, 88, + 52, 66, 136, 98, 102, 122, 28, 140, 118, 8, 40, 6, 30, 150, 168, 64, 126, 48, 46, 36, + 180, 124, 38, 190, 174, 94, 82, 22, 110, 162, 34, 170, 74, 176, 104, 132, 78}}; + + if (length < BORDER_FOR_SECOND_SCRATCH) { + for (i = 1;; i++) { + if (primeFactors[i] == length) { + mapping = mappingTable[i]; + break; + } + assert(primeFactors[i] != 0); + } + } else { + mapping = scratch2; + + /* get primitive root */ + generator = getGenerator(length); + assert(generator != -1); + + /* init mapping */ + mapping[0] = 0; + mapping[1] = 1; + for (i = 2; i < length; i++) { + mapping[i] = mapping[i - 1] * generator; + if (mapping[i] > length - 1) { + mapping[i] = (mapping[i] % length - 1) + 1; + } + } + + /* double mapping value */ + for (i = 1; i < length; i++) { + mapping[i] *= 2; + } + } + + /* remap input to scratch */ + scratch[0] = x[0]; + scratch[1] = x[1]; + scratch[2] = x[2]; + scratch[3] = x[3]; + map = mapping + length - 1; + for (i = 4; i < 2 * length; map--) { + scratch[i++] = x[(*map)]; + scratch[i++] = x[(*map) + 1]; + } + + /* print sums and diffs into scratch by using symmetry */ + x[length] = x[1]; /* imaginary und real part */ + dest1 = x + 1; + dest2 = x + length + 1; + src1 = scratch + 2; + src2 = scratch + length + 1; + + for (i = 2; i < length; i += 2) { + LC3_FLOAT tmp1R, tmp1I, tmp2R, tmp2I; + tmp1R = *src1++; + tmp1I = *src1++; + tmp2R = *src2++; + tmp2I = *src2++; + *dest1++ = tmp1R + tmp2R; + *dest1++ = tmp1R - tmp2R; + *dest2++ = tmp1I + tmp2I; + *dest2++ = tmp1I - tmp2I; + + scratch[0] += tmp1R + tmp2R; + scratch[1] += tmp1I + tmp2I; + } + + /* init with values from the first column */ + dest1 = scratch + 2; + for (i = 1; i < length; i++) { + *dest1++ = x[0]; /* add real part of x(0)(factor = 1) */ + *dest1++ = x[length]; /* add imaginary part of x(0)(factor = 1) */ + } + + for (k = 1; k <= middle; k++) { + /* loop through all cos/sin values */ + LC3_FLOAT sinVal, cosVal; + LC3_INT length1, length2; + LC3_FLOAT rePre, reMre, imPim, imMim; + + cosVal = (LC3_FLOAT)LC3_COS(-M_PIl * mapping[k] / length); + sinVal = (LC3_FLOAT)LC3_SIN(-M_PIl * mapping[k] / length); + + /* compute in two parts (length1, length2) to avoid if() in for loop */ + length1 = middle - k + 1; + length2 = middle - length1; + src1 = x + 1; + src2 = x + length + 1; + dest1 = scratch + 2 * k; + dest2 = scratch + 2 * (middle + k); + + for (i = 0; i < length1; i++) { + rePre = *src1++; + reMre = *src1++; + imPim = *src2++; + imMim = *src2++; + + *dest1++ += cosVal * rePre - sinVal * imMim; + *dest1++ += cosVal * imPim + sinVal * reMre; + + *dest2++ += cosVal * rePre + sinVal * imMim; + *dest2++ += cosVal * imPim - sinVal * reMre; + } + if (dest2 == scratch + 2 * length) { + dest2 = scratch + 2; + } + for (i = 0; i < length2; i++) { + rePre = *src1++; + reMre = *src1++; + imPim = *src2++; + imMim = *src2++; + + *dest1++ += cosVal * rePre - sinVal * imMim; + *dest1++ += cosVal * imPim + sinVal * reMre; + + *dest2++ += cosVal * rePre + sinVal * imMim; + *dest2++ += cosVal * imPim - sinVal * reMre; + } + } + + /* remap output to x */ + x[0] = scratch[0]; + x[1] = scratch[1]; + map = mapping + 1; + for (i = 2; i < 2 * length; map++) { + x[(*map)] = scratch[i++]; + x[(*map) + 1] = scratch[i++]; + } +} + +static void nextFFT(LC3_FLOAT* x, LC3_INT length, LC3_FLOAT* scratch) +{ + if (fft_n(x, length)) /* have function for length */ + return; + + assert(length % 2 != 0); + oddFFT(x, length, scratch); +} + +static inline LC3_INT findFactor(const LC3_INT length) +{ + static const LC3_INT factors[] = {16, 9, 8, 7, 5, 4, 3, 2, 0}; + LC3_INT i = 0, factor = 0; + for (i = 0; factors[i] != 0; i++) { + if (length % factors[i] == 0) { + factor = factors[i]; + break; + } + } + return factor; +} + +static inline void twiddle(LC3_FLOAT* x, const LC3_INT length, const LC3_INT n1, const LC3_INT n2) +{ + LC3_INT i, ii; + FFT_INTERNAL_TRIG_PREC sinValOrg, cosValOrg; + FFT_INTERNAL_TRIG_PREC sinVal = 0, cosVal = 1; + FFT_INTERNAL_TRIG_PREC twReal = 0, twImag = 1; + + cosValOrg = LC3_COS(-2 * (LC3_FLOAT)M_PIl / length); + sinValOrg = LC3_SIN(-2 * (LC3_FLOAT)M_PIl / length); + + for (i = 1; i < n1; i++) { + FFT_INTERNAL_TRIG_PREC tmp = 0.; + twReal = 1; + twImag = 0; + + tmp = cosVal * cosValOrg - sinVal * sinValOrg; + sinVal = sinVal * cosValOrg + cosVal * sinValOrg; + cosVal = tmp; + + for (ii = 1; ii < n2; ii++) { + LC3_FLOAT xRe, xIm; + FFT_INTERNAL_TRIG_PREC tmpReal; + + tmpReal = twReal * cosVal - twImag * sinVal; + twImag = twImag * cosVal + sinVal * twReal; + twReal = tmpReal; + + xRe = x[2 * (i * n2 + ii)]; + xIm = x[2 * (i * n2 + ii) + 1]; + + x[2 * (i * n2 + ii)] = (LC3_FLOAT)twReal * xRe - (LC3_FLOAT)twImag * xIm; + x[2 * (i * n2 + ii) + 1] = (LC3_FLOAT)twImag * xRe + (LC3_FLOAT)twReal * xIm; + } + } +} + +static void cooleyTukeyFFT(LC3_FLOAT* restrict x, const LC3_INT length, LC3_FLOAT* restrict scratch, + LC3_INT* restrict scratch2, LC3_INT isPrime) +{ + LC3_INT factor; + LC3_INT i, ii; + LC3_INT n1, n2; + LC3_INT cnt = 0; + LC3_FLOAT *src, *dest; + + if (fft_n(x, length)) + return; + + factor = findFactor(length); + if (factor > 0 && (length / factor > 1)) { + n1 = factor; + n2 = length / factor; + + /* DATA Resorting for stage1 */ + dest = scratch; + for (i = 0; i < 2 * n1; i += 2) { + src = x + i; + for (ii = 0; ii < n2; ii++) { + /* *dest++ = x[2*(i+ii*n1)]; */ + /* *dest++ = x[2*(i+ii*n1)+1]; */ + *dest++ = *src; + *dest++ = *(src + 1); + src += 2 * n1; + } + } + src = scratch; + dest = x; + for (i = 0; i < length; i++) { + *dest++ = *src++; + *dest++ = *src++; + } + /* perform n1 ffts of length n2 */ + for (i = 0; i < n1; i++) { + cooleyTukeyFFT(x + 2 * i * n2, n2, scratch + 2 * i * n2, scratch2, isPrime); + } + /*data twiddeling */ + twiddle(x, length, n1, n2); + /* DATA Resorting for stage2 */ + cnt = 0; + for (i = 0; i < n2; i++) { + for (ii = 0; ii < n1; ii++) { + scratch[2 * cnt] = x[2 * (i + ii * n2)]; + scratch[2 * cnt + 1] = x[2 * (i + ii * n2) + 1]; + cnt++; + } + } + /* perform n2 ffts of length n1 */ + for (i = 0; i < n2; i++) { + nextFFT(scratch + 2 * i * n1, n1, x + 2 * i * n1); + } + cnt = 0; + for (i = 0; i < n1; i++) { + for (ii = 0; ii < n2; ii++) { + x[2 * cnt] = scratch[2 * (i + ii * n1)]; + x[2 * cnt + 1] = scratch[2 * (i + ii * n1) + 1]; + cnt++; + } + } + } else { + if (isPrime == 1 && length > 23) { + primeFFT(x, length, scratch, scratch2); + } else { + oddFFT(x, length, scratch); + } + } +} + +static void pfaDFT(LC3_FLOAT* restrict x, const LC3_INT length, LC3_FLOAT* restrict scratch1, const LC3_INT numFactors, + const LC3_INT* const factor, LC3_INT* restrict scratch2, const LC3_INT* const isPrime) +{ + LC3_FLOAT* tmp = scratch1; + LC3_INT i, ii, n1, n2, idx, incr, cnt; + LC3_INT n1_inv = 1; + + if (numFactors <= 1) { + cooleyTukeyFFT(x, length, scratch1, scratch2, isPrime[0]); + return; + } + + n2 = factor[0]; + n1 = length / n2; + + n1_inv = findInverse(n1, n2); + + idx = 0; + incr = n1 * n1_inv; + cnt = 0; + for (i = 0; i < n1; i++) { + for (ii = 0; ii < n2 - 1; ii++) { + tmp[cnt++] = x[2 * idx]; + tmp[cnt++] = x[2 * idx + 1]; + + idx += incr; + if (idx > length) { + idx -= length; + } + } + tmp[cnt++] = x[2 * idx]; + tmp[cnt++] = x[2 * idx + 1]; + idx++; + } + + for (cnt = 0; cnt < length; cnt += n2) { + cooleyTukeyFFT(tmp + 2 * cnt, n2, x + 2 * cnt, scratch2, isPrime[0]); + } + for (cnt = 0; cnt < n1; cnt++) { + for (i = 0; i < n2; i++) { + x[2 * (cnt + i * n1)] = tmp[2 * (cnt * n2 + i)]; + x[2 * (cnt + i * n1) + 1] = tmp[2 * (cnt * n2 + i) + 1]; + } + } + for (cnt = 0; cnt < length; cnt += n1) { + pfaDFT(x + 2 * cnt, n1, tmp, numFactors - 1, &factor[1], scratch2, &isPrime[1]); + } + + cnt = 0; + for (i = 0; i < n2; i++) { + idx = i * n1; + for (ii = 0; ii < n1; ii++) { + tmp[2 * idx] = x[cnt++]; + tmp[2 * idx + 1] = x[cnt++]; + idx += n2; + if (idx > length) { + idx -= length; + } + } + } + + for (cnt = 0; cnt < length; cnt++) { + x[2 * cnt] = tmp[2 * cnt]; + x[2 * cnt + 1] = tmp[2 * cnt + 1]; + } +} diff --git a/lc3plus/fft/iis_fft.c b/lc3plus/fft/iis_fft.c new file mode 100644 index 0000000000000000000000000000000000000000..b1f8ab5ab8d42629700fa31642587bb93f4900e5 --- /dev/null +++ b/lc3plus/fft/iis_fft.c @@ -0,0 +1,164 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include +#include +#include +#include +#include +#include + +#include "iis_fft.h" +/**************************************************************************************************/ + +/* AFFT uses two fft implementations + * cfft is used for lengths of power of two, >= 256. + * iisfft is used for everything else. it is optimized for certain lengths. for a list of + fast lengths, check the fft_n function. +*/ + + +#define FFT_COMPLEX 1 +#define FFT_REAL 2 + + +static IIS_FFT_ERROR create(HANDLE_IIS_FFT* handle, LC3_INT type, LC3_INT len, IIS_FFT_DIR sign) +{ + IIS_FFT_ERROR err = IIS_FFT_MEMORY_ERROR; + + /* for real transforms the actual performed fft is half length */ + LC3_INT trlen = (type == FFT_COMPLEX) ? len : len / 2; + + /* check argument sanity */ + if (sign != IIS_FFT_FWD && sign != IIS_FFT_BWD) + return IIS_FFT_INTERNAL_ERROR; + + + if (!(*handle)) + (*handle) = (HANDLE_IIS_FFT)calloc(1, sizeof(IIS_FFT)); + if (!(*handle)) + return IIS_FFT_MEMORY_ERROR; + + (*handle)->len = len; + (*handle)->sign = sign; + + /* create sine lookup table for real ffts */ + if (type == FFT_REAL) + { + LC3_create_sine_table(len, (*handle)->sine_table); + if (!(*handle)->sine_table) + { + goto handle_error1; + } + } + + /* set default cfft_plan to 0(length). (and default iisfft_plan to zero length) */ + (*handle)->cfft.len = 0; /* 0 length means that cfft should not be called */ + (*handle)->iisfft.length = 0; /*saftey setting for iisfft length struct */ + + /* use cfft for legth of power two larger than 256. for length below iisfft is faster */ + if (trlen >= 256 && CFFT_PLAN_SUPPORT(trlen)) { + LC3_INT s = (type == FFT_REAL) ? IIS_FFT_FWD : sign; + err = LC3_cfft_plan(&(*handle)->cfft, trlen, s) ? IIS_FFT_NO_ERROR : IIS_FFT_INTERNAL_ERROR; + } else { + LC3_INT s = (type == FFT_REAL) ? IIS_FFT_FWD : sign; + err = LC3_iisfft_plan(&(*handle)->iisfft, trlen, s); + } + + return IIS_FFT_NO_ERROR; + +handle_error1: + free((*handle)); + + return err; +} + +IIS_FFT_ERROR LC3_IIS_RFFT_Create(HANDLE_IIS_FFT* handle, LC3_INT32 len, IIS_FFT_DIR sign) +{ + return create(handle, FFT_REAL, len, sign); +} + +static IIS_FFT_ERROR destroy(HANDLE_IIS_FFT* handle) +{ + if (handle && *handle) { + LC3_iisfft_free(&(*handle)->iisfft); + LC3_cfft_free(&(*handle)->cfft); + free(*handle); + *handle = NULL; + } + return IIS_FFT_NO_ERROR; +} + +IIS_FFT_ERROR LC3_IIS_CFFT_Create(HANDLE_IIS_FFT* handle, LC3_INT len, IIS_FFT_DIR sign) +{ + return create(handle, FFT_COMPLEX, len, sign); +} + + +IIS_FFT_ERROR LC3_IIS_xFFT_Destroy(HANDLE_IIS_FFT* handle) { return destroy(handle); } + +IIS_FFT_ERROR LC3_IIS_CFFT_Destroy(HANDLE_IIS_FFT* handle) { return destroy(handle); } + +static IIS_FFT_ERROR real_destroy(HANDLE_IIS_FFT* handle) +{ + if (handle && *handle) { + LC3_iisfft_free(&(*handle)->iisfft); + *handle = NULL; + } + return IIS_FFT_NO_ERROR; +} + +IIS_FFT_ERROR LC3_IIS_RFFT_Destroy(HANDLE_IIS_FFT* handle) { return real_destroy(handle); } + +IIS_FFT_ERROR LC3_IIS_FFT_Apply_CFFT(HANDLE_IIS_FFT handle, const Complex* input, Complex* output) +{ + LC3_FLOAT* dummy; + if (!handle) + return IIS_FFT_INTERNAL_ERROR; + + /* check for inplace operation */ + memmove(output, input, sizeof(*input) * handle->len); + dummy = (LC3_FLOAT*)output; + if (handle->cfft.len > 0) { + LC3_cfft_apply(&handle->cfft, dummy, dummy + 1, 2); + } else { + LC3_iisfft_apply(&handle->iisfft, dummy); + } + + return IIS_FFT_NO_ERROR; +} + + +IIS_FFT_ERROR LC3_IIS_FFT_Apply_RFFT(HANDLE_IIS_FFT handle, const LC3_FLOAT* in, LC3_FLOAT* out) +{ + if (!handle) { + return IIS_FFT_INTERNAL_ERROR; + } + + memmove(out, in, sizeof(LC3_FLOAT) * handle->len); + + if (handle->sign == IIS_FFT_BWD) { + LC3_rfft_pre(handle->sine_table, out, handle->len); + } + + if (handle->cfft.len > 0) { + LC3_cfft_apply(&handle->cfft, out, out + 1, 2); + } + else { + LC3_iisfft_apply(&handle->iisfft, out); + } + + if (handle->sign == IIS_FFT_FWD) { + LC3_rfft_post(handle->sine_table, out, handle->len); + } + + return IIS_FFT_NO_ERROR; +} diff --git a/lc3plus/fft/iis_fft.h b/lc3plus/fft/iis_fft.h new file mode 100644 index 0000000000000000000000000000000000000000..b658930fa7cf51fae7861d9a1dca2c46671e7fdb --- /dev/null +++ b/lc3plus/fft/iis_fft.h @@ -0,0 +1,142 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef IIS_FFT_H +#define IIS_FFT_H + +#include "../structs.h" +#include "../defines.h" +#include "cfft.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/*! + * \brief n-point complex FFT + * + * There are optimized FFTs for lengths 2, 3, 4, 7, 8, 9, 15, 16, 32, 60, 64, 128, + * 240, 256, 384, 480, 512, 768, 1024. Other lengths below 1024 use a stack allocated + * buffer and offer reasonable speed. Above 1024 a buffer is allocated each time + * iis_fftf() is called resulting in reduced performance. + * + * >>>>>> DO NOT USE UNOPTIMIZED LENGTHS IN PRODUCTION CODE! <<<<<< + * + * \param[in,out] vec pointer to data, interleaved real / imaginary + * \param[in] length length of fft (number of real/imaginary pairs) + * + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_iis_fftf(LC3_FLOAT* vec, LC3_INT length); +/*! + * \brief n-point inverse complex FFT + * + * The output is not normalized. See iis_fftf() for optimized lengths. + * + * >>>>>> DO NOT USE UNOPTIMIZED LENGTHS IN PRODUCTION CODE! <<<<<< + * + * \param[in,out] vec pointer to data, interleaved real / imaginary + * \param[in] length length of fft (number of real/imaginary pairs) + * + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_iis_ifftf(LC3_FLOAT* vec, LC3_INT length); + +/*! + * \brief allocate and initialize a new real FFT instance. + * + * \param[in,out] handle pointer to FFT handle + * \param[in] len transform length, must be an even number + * \param[in] sign IIS_FFT_FWD(-1) for forward, IIS_FFT_BWD(1) for backward transform + * BEWARE OF THE SIGNS! + * + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_RFFT_Create(HANDLE_IIS_FFT* handle, LC3_INT len, IIS_FFT_DIR sign); + +/*! + * \brief allocate and initialize a new complex FFT instance + * + * \param[in,out] handle pointer to FFT handle + * \param[in] len transform length + * \param[in] sign IIS_FFT_FWD(-1) for forward, IIS_FFT_BWD(1) for backward transform + * BEWARE OF THE SIGNS !!!!!! + * + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_CFFT_Create(HANDLE_IIS_FFT* handle, LC3_INT len, IIS_FFT_DIR sign); + +/*! + * \brief computes the forward or backward fourier transform of a real signal + * + * For complex data (in or out) the real part of the Nyquist band (len / 2 + 1) is stored + * in the imaginary part of the DC band (0). This allows for the complex data of + * real to complex transforms to fit into the same buffer. For this to work length must be even. + * + * Complex to real transforms are normalized (1.0/len). Input and ouput buffers may + *be identical. + * + * \param[in] handle FFT handle + * \param[in] in pointer to the input array containing real values for the forward transform (FFT) + * or packed complex values (Perm) for the backward transform (IFFT) + * \param[out] out pointer to the output array containing real values resulted from the backward transform + * (IFFT) or packed complex (perm) values reulted from the forward transform + * + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_FFT_Apply_RFFT(HANDLE_IIS_FFT handle, const LC3_FLOAT* in, LC3_FLOAT* out); + +/*! + * \brief compute complex backward or forward FFT + * + * Input and ouput buffers may be identical. Real/imaginary parts may be interleaved. + * The output is not normalized. + * + * \param[in] handle FFT handle + * \param[in] in_re pointer to the input array containing real parts of the signal for the + * forward transform (FFT) or for the backward transform (IFFT) + * \param[in] in_im pointer to the input array containing imaginary parts of the signal for + * the forward transform (FFT) or for the backward transform (IFFT) + * \param[out] out_re pointer to the output array containing real values resulted from the + * forward transform (FFT) or from the backward transform (IFFT) + * \param[out] out_im pointer to the output array containing imaginary values resulted from + * the forward transform (FFT) or from the backward transform (IFFT) + * + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_FFT_Apply_CFFT(HANDLE_IIS_FFT handle, const Complex* input, Complex* output); + +/*! + * \brief deallocate a FFT instance (complex or real) + * \param[in,out] handle pointer to FFT handle, set to NULL if call succeeds + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_xFFT_Destroy(HANDLE_IIS_FFT* handle); + +/*! + * \brief deallocate a real FFT instance + * \param[in,out] handle pointer to FFT handle, set to NULL if call succeeds + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_RFFT_Destroy(HANDLE_IIS_FFT* handle); + +/*! + * \brief deallocate a complex FFT instance + * \param[in,out] handle pointer to FFT handle, set to NULL if call succeeds + * \return IIS_FFT_NO_ERROR on success + */ +IIS_FFT_ERROR LC3_IIS_CFFT_Destroy(HANDLE_IIS_FFT* handle); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/lc3plus/fft/iisfft.c b/lc3plus/fft/iisfft.c new file mode 100644 index 0000000000000000000000000000000000000000..227d2b6037c8fef97141631b512e6736987603b9 --- /dev/null +++ b/lc3plus/fft/iisfft.c @@ -0,0 +1,166 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" + +#include +#include /* for mmove */ +#include +#include +#include "iisfft.h" +#include "cfft.h" + +/* the fixed length fft functions have been split into sevelral headers to + have smaller files. to give the compiler more room to optimize the ffts + can't be in separate compilation units. the header approach seemed to be + the best compromise. to prevent them being included from anywhere else, + they are guarded by the INCLUDED_FROM_IISFFT_C macro. +*/ +#define INCLUDED_FROM_IISFFT_C +#include "fft_2_9.h" +#include "fft_15_16.h" +#include "fft_32.h" +#include "fft_60_128.h" +#include "fft_240_480.h" +#include "fft_384_768.h" +#include "fft_generic.h" + + +void LC3_iisfft_apply(Iisfft* handle, LC3_FLOAT* x) +{ + if (handle->sign == -1) { + if (!fft_n(x, handle->length)) + { + LC3_FLOAT scratch[2*MAX_LEN]; + pfaDFT(x, handle->length, scratch, handle->num_factors, handle->factors, handle->scratch2, + handle->isPrime); + } + } else { + assert(0); + } +} + +/* returns 1 if there is no specialized function for length or 1 if a scratch needs to be allocated. + check the fft_n function */ +static LC3_INT need_scratch(LC3_INT n) +{ + return n != 2 && n != 3 && n != 4 && n != 5 && n != 7 && n != 8 && n != 9 && n != 15 && n != 16 && n != 32 && + n != 60 && n != 64 && n != 128 && n != 192 && n != 240 && n != 256 && n != 384 && n != 480 && n != 512 && n != 768 && + n != 1024; +} + +IIS_FFT_ERROR LC3_iisfft_plan(Iisfft* handle, LC3_INT length, LC3_INT sign) +{ + memset(handle, 0, sizeof(Iisfft)); + if (length < 2) + return IIS_FFT_LENGTH_ERROR; + handle->length = length; + handle->sign = sign; + if (need_scratch(length)) { + /* only needed for prime numbers bigger than BORDER_FOR_SECOND_SCRATCH */ + LC3_INT i = 0; + LC3_INT lengthOfPrimeScratch = BORDER_FOR_SECOND_SCRATCH; + if (!factorize(length, &handle->num_factors, handle->factors, handle->isPrime)) + return IIS_FFT_LENGTH_ERROR; + /* create additional scratch for primeFFT() */ + for (i = 0; i < handle->num_factors; i++) { + if (handle->isPrime[i] == 1 && handle->factors[i] > lengthOfPrimeScratch) { + lengthOfPrimeScratch = handle->factors[i]; + } + } + if (lengthOfPrimeScratch > BORDER_FOR_SECOND_SCRATCH) { + handle->scratch2 = (LC3_INT*)malloc(sizeof(LC3_INT) * lengthOfPrimeScratch); + if (!handle->scratch2) + return IIS_FFT_MEMORY_ERROR; + } + } + + return IIS_FFT_NO_ERROR; +} + +void LC3_iisfft_free(Iisfft* handle) +{ + handle->length = 0; + if (handle->scratch2) + free(handle->scratch2); +} + + + +/* generate sine table needed by LC3_rfft_pre/rfft/post. the table must be freed with iisFree */ +void LC3_create_sine_table(LC3_INT32 len, LC3_FLOAT *sine_table) +{ + LC3_INT32 i; + + for (i = 0; i < len / 2 + 1; i++) { + sine_table[i] = (LC3_FLOAT)sin(2.0 * M_PIl * i / len); + } +} + +void LC3_rfft_post(const LC3_FLOAT* restrict sine_table, LC3_FLOAT* restrict buf, LC3_INT32 len) +{ + LC3_FLOAT tmp1, tmp2, tmp3, tmp4, s, c; + LC3_INT32 i; + + tmp1 = buf[0] + buf[1]; + buf[1] = buf[0] - buf[1]; + buf[0] = tmp1; + + for (i = 1; i <= (len + 2) / 4; i++) { + s = sine_table[i]; /* sin(pi*i/(len/2)) */ + c = sine_table[i + len / 4]; /* cos(pi*i/(len/2)) */ + + tmp1 = buf[2 * i] - buf[len - 2 * i]; + tmp2 = buf[2 * i + 1] + buf[len - 2 * i + 1]; + tmp3 = s * tmp1 - c * tmp2; /* real part of j*W(k,N)*[T(k) - T'(N-k)] */ + tmp4 = c * tmp1 + s * tmp2; /* imag part of j*W(k,N)*[T(k) - T'(N-k)] */ + tmp1 = buf[2 * i] + buf[len - 2 * i]; + tmp2 = buf[2 * i + 1] - buf[len - 2 * i + 1]; + + buf[2 * i] = 0.5f * (tmp1 - tmp3); + buf[2 * i + 1] = 0.5f * (tmp2 - tmp4); + buf[len - 2 * i] = 0.5f * (tmp1 + tmp3); + buf[len - 2 * i + 1] = -0.5f * (tmp2 + tmp4); + } + + return; +} + +void LC3_rfft_pre(const LC3_FLOAT* restrict sine_table, LC3_FLOAT* restrict buf, LC3_INT32 len) +{ + LC3_FLOAT scale ; + LC3_FLOAT tmp1, tmp2, tmp3, tmp4, s, c; + LC3_INT32 i; + + scale = 1.0f / len; /* constant */ + + tmp1 = buf[0] + buf[1]; + buf[1] = scale * (buf[0] - buf[1]); + buf[0] = scale * tmp1; + + for (i = 1; i <= (len + 2) / 4; i++) { + s = sine_table[i]; /* sin(pi*i/(len/2)) */ + c = sine_table[i + len / 4]; /* cos(pi*i/(len/2)) */ + + tmp1 = buf[2 * i] - buf[len - 2 * i]; + tmp2 = buf[2 * i + 1] + buf[len - 2 * i + 1]; + tmp3 = s * tmp1 + c * tmp2; /* real part of j*W(k,N)*[T(k) - T'(N-k)] */ + tmp4 = -c * tmp1 + s * tmp2; /* imag part of j*W(k,N)*[T(k) - T'(N-k)] */ + tmp1 = buf[2 * i] + buf[len - 2 * i]; + tmp2 = buf[2 * i + 1] - buf[len - 2 * i + 1]; + + buf[2 * i] = scale * (tmp1 + tmp3); + buf[2 * i + 1] = -scale * (tmp2 + tmp4); + buf[len - 2 * i] = scale * (tmp1 - tmp3); + buf[len - 2 * i + 1] = scale * (tmp2 - tmp4); + } + return; +} + diff --git a/lc3plus/fft/iisfft.h b/lc3plus/fft/iisfft.h new file mode 100644 index 0000000000000000000000000000000000000000..7b448e2bbeca4f093791f039e885c42c94688af2 --- /dev/null +++ b/lc3plus/fft/iisfft.h @@ -0,0 +1,86 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef IISFFT_H +#define IISFFT_H + +#include "../defines.h" + +#ifndef M_PIl +#define M_PIl 3.1415926535897932384626433832795029L /* pi */ +#endif + +/* compiler specific macros + + the restrict keyword only gives a improvelent if more than one pointers are + passed to a function. also note that the MSVC __restrict behaves differently + from c99, the restrict property is not transferred to aliases. + + alloca is a bit problematic because behavior is not defined in case of stack + overflow. most probably the program will crash. it might be possible to catch + those errors but it depends on compiler support. msvc has a safer _malloca + but gcc has nothing similar. */ +#if defined _MSC_VER || defined __INTEL_COMPILER +#include +#define ALLOCA(size) _alloca(size) +#define restrict __restrict +#define inline __inline +#elif defined __GNUC__ || defined __clang__ +#define ALLOCA(size) __builtin_alloca(size) +#define restrict __restrict__ +#define inline __inline +#elif defined __TI_COMPILER_VERSION__ +#include +#define ALLOCA(size) (assert(0 && "ALLOCA is not present for your compiler"), NULL) +#warn "no stack allocation for you compiler" +#else +#error "no stack allocation for your compiler" +#endif + + +#define IISFFT_MAXSTACKLENGTH 1024 +#define IISFFT_MAXFACTORS 10 + +typedef struct { + LC3_INT* scratch2; + LC3_INT length; + LC3_INT sign; + LC3_INT num_factors; + LC3_INT factors[IISFFT_MAXFACTORS]; + LC3_INT isPrime[IISFFT_MAXFACTORS]; +} Iisfft; + +typedef enum { + IIS_FFT_NO_ERROR = 0, + IIS_FFT_INTERNAL_ERROR, /**< a mystical error appeard */ + IIS_FFT_LENGTH_ERROR, /**< the requested fft length is not supported */ + IIS_FFT_MEMORY_ERROR /**< memory allocation failed */ +} IIS_FFT_ERROR; + +typedef enum { + IIS_FFT_FWD = -1, /**< forward transform */ + IIS_FFT_BWD = 1 /**< inverse / backward transform */ +} IIS_FFT_DIR; + +/* plan, apply and free forward / backward fft */ +IIS_FFT_ERROR LC3_iisfft_plan(Iisfft* handle, LC3_INT length, LC3_INT sign); +void LC3_iisfft_apply(Iisfft* handle, LC3_FLOAT* x); +void LC3_iisfft_free(Iisfft* handle); + +/* fft related helper functions */ +void LC3_create_sine_table(LC3_INT32 len, LC3_FLOAT *sine_table); + +void LC3_rfft_pre(const LC3_FLOAT* restrict sine_table, LC3_FLOAT* restrict buf, LC3_INT len); +void LC3_rfft_post(const LC3_FLOAT* restrict sine_table, LC3_FLOAT* restrict buf, LC3_INT len); +void LC3_fftf_interleave(const LC3_FLOAT* restrict re, const LC3_FLOAT* restrict im, LC3_FLOAT* restrict out, + LC3_INT len); +void LC3_fftf_deinterleave(const LC3_FLOAT* restrict in, LC3_FLOAT* restrict re, LC3_FLOAT* restrict im, LC3_INT len); + +#endif /* IISFFT_H */ diff --git a/lc3plus/functions.h b/lc3plus/functions.h new file mode 100644 index 0000000000000000000000000000000000000000..7a529a25d7acbe5e90b00b6d72f5199fa2f0ae47 --- /dev/null +++ b/lc3plus/functions.h @@ -0,0 +1,304 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef FUNCTIONS_H +#define FUNCTIONS_H + +#include "clib.h" +#include "defines.h" +#include "float.h" +#include "lc3.h" +#include "setup_dec_lc3.h" +#include "setup_enc_lc3.h" +#include "structs.h" +#include "util.h" + +/* FFT */ +#include "fft/iisfft.h" + +/* fft.c */ +void real_fft_init(Fft* fft, LC3_INT32 length, HANDLE_IIS_FFT *handle); +void real_ifft_init(Fft* fft, LC3_INT32 length, HANDLE_IIS_FFT *handle); +void real_fft_apply(Fft* fft, const LC3_FLOAT* in, LC3_FLOAT* out); + +void fft_init(Fft* fft, LC3_INT length); +void fft_free(Fft* fft); +void real_fft_free(Fft* fft); +void fft_apply(Fft* fft, const Complex* input, Complex* output); + +/* dct.c */ +void dct2_init(Dct2* dct, LC3_INT length); +void dct2_free(Dct2* dct); +void dct2_apply(Dct2* dct, const LC3_FLOAT* input, LC3_FLOAT* output); + +void dct3_init(Dct3* dct, LC3_INT length); +void dct3_free(Dct3* dct); +void dct3_apply(Dct3* dct, const LC3_FLOAT* input, LC3_FLOAT* output); + +void dct4_init(Dct4* dct, LC3_INT length); +void dct4_free(Dct4* dct); +void dct4_apply(Dct4* dct, const LC3_FLOAT* input, LC3_FLOAT* output); + +/* mdct.c */ +void mdct_init(Mdct* mdct, LC3_INT length, LC3_INT frame_dms, LC3_INT fs_idx, LC3_INT hrmode); +void mdct_free(Mdct* mdct); +void mdct_apply(const LC3_FLOAT* input, LC3_FLOAT* output, Mdct* mdct); + +#ifdef ENABLE_PADDING +LC3_INT paddingDec_fl(LC3_UINT8* bytes, LC3_INT nbbits, LC3_INT L_spec, LC3_INT bw_cutoff_bits, LC3_INT ep_enabled, LC3_INT* total_padding, LC3_INT *np_zero); +#endif + +void processEncoderEntropy_fl(LC3_UINT8* bytes, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT numbytes, LC3_INT bw_cutoff_bits, + LC3_INT bw_cutoff_idx, LC3_INT lastnz, LC3_INT N, LC3_INT lsbMode, LC3_INT gg_idx, LC3_INT num_tns_filters, + LC3_INT* tns_order, LC3_INT* ltpf_idx, LC3_INT* scf_idx, LC3_INT fac_ns_idx + , LC3_INT bfi_ext, LC3_INT fs_idx + ); +void processDecoderEntropy_fl(LC3_UINT8* bytes, LC3_INT numbytes, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT N, LC3_INT fs_idx, + LC3_INT bw_cutoff_bits, LC3_INT* bfi, LC3_INT* gg_idx, LC3_INT* scf_idx, LC3_INT* fac_ns_idx, + LC3_INT* tns_numfilters, LC3_INT* tns_order, LC3_INT* ltpf_idx, LC3_INT* bw_cutoff_idx, LC3_INT* lastnz, + LC3_INT* lsbMode, LC3_INT frame_dms + ); +void processQuantizeSpec_fl(LC3_FLOAT x[], LC3_FLOAT gain, LC3_INT xq[], LC3_INT nt, LC3_INT totalBits, LC3_INT* nbits, LC3_INT* nbits2, LC3_INT fs, + LC3_INT* lastnzout, LC3_INT* codingdata, LC3_INT* lsbMode, LC3_INT mode, LC3_INT target, LC3_INT hrmode); + +void processEstimateGlobalGain_fl(LC3_FLOAT x[], LC3_INT lg, LC3_INT nbitsSQ, LC3_FLOAT* gain, LC3_INT* quantizedGain, + LC3_INT* quantizedGainMin, LC3_INT quantizedGainOff, LC3_FLOAT* targetBitsOff, + LC3_INT* old_targetBits, LC3_INT old_specBits, LC3_INT bq_mode + , LC3_INT regBits, LC3_FLOAT frame_ms +); + +void processAriDecoder_fl(LC3_UINT8* bytes, LC3_INT bp_side, LC3_INT mask_side, LC3_INT L_spec, LC3_INT fs_idx, LC3_INT enable_lpc_weighting, + LC3_INT tns_numfilters, LC3_INT lsbMode, LC3_INT lastnz, LC3_INT* bfi, LC3_INT* tns_order, LC3_INT fac_ns_idx, + LC3_INT gg_idx, uint8_t* resBits, LC3_INT* x, LC3_INT* nf_seed, LC3_INT* tns_idx, LC3_INT* zero_frame, LC3_INT numbytes, + LC3_INT* nbits_residual, LC3_INT* residualPresent, LC3_INT frame_dms, + LC3_INT32 n_pc, LC3_INT32 be_bp_left, LC3_INT32 be_bp_right, LC3_INT32 enc, LC3_INT32 *b_left, LC3_INT32 *spec_inv_idx, + LC3_INT hrmode + ); + +void processMdctShaping_fl(LC3_FLOAT x[], LC3_FLOAT gains[], const LC3_INT bands_offset[], LC3_INT fdns_npts); + +void processResidualCoding_fl(LC3_FLOAT x[], LC3_INT xq[], LC3_FLOAT gain, LC3_INT L_spec, LC3_INT targetBits, LC3_INT nBits, uint8_t * resBits, + LC3_INT* numResBits + , LC3_INT hrmode +); + +void processResidualDecoding_fl(LC3_INT* bitsRead, LC3_FLOAT x[], LC3_INT L_spec, uint8_t prm[], LC3_INT resQBits + , LC3_INT hrmode +); + +void processAdjustGlobalGain_fl(LC3_INT* gg_idx, LC3_INT gg_idx_min, LC3_INT gg_idx_off, LC3_FLOAT* gain, LC3_INT target, LC3_INT nBits, + LC3_INT* gainChange, LC3_INT fs_idx + , LC3_INT16 hrmode, LC3_INT16 frame_dms + ); + +void processApplyGlobalGain_fl(LC3_FLOAT x[], LC3_INT xLen, LC3_INT global_gain_idx, LC3_INT global_gain_off); + +void processNoiseFactor_fl(LC3_INT* fac_ns_idx, LC3_FLOAT x[], LC3_INT xq[], LC3_FLOAT gg, LC3_INT BW_cutoff_idx, LC3_INT frame_dms, + LC3_INT target_bytes + ); + +void processNoiseFilling_fl(LC3_FLOAT xq[], LC3_INT nfseed, LC3_INT fac_ns_idx, LC3_INT bw_stopband, LC3_INT frame_dms, LC3_FLOAT fac_ns_pc, LC3_INT spec_inv_idx); + +void processOlpa_fl(LC3_FLOAT* s_12k8, LC3_FLOAT* mem_s12k8, LC3_FLOAT* mem_s6k4, LC3_INT* mem_old_T0, LC3_INT* T0_out, + LC3_FLOAT* normcorr_out, LC3_INT len, LC3_INT frame_dms); + +void processTnsCoder_fl(LC3_FLOAT* x, LC3_INT bw_cutoff_idx, LC3_INT bw_fcbin, LC3_INT fs, LC3_INT N, LC3_INT frame_dms, LC3_INT nBits, + LC3_INT* order_out, LC3_INT* rc_idx, LC3_INT* tns_numfilters, LC3_INT* bits_out + , LC3_INT16 near_nyquist_flag + ); +void levinsonDurbin(LC3_FLOAT* r, LC3_FLOAT* out_lev, LC3_FLOAT* rc_unq, LC3_FLOAT* error, LC3_INT len); + +void processTnsDecoder_fl(LC3_FLOAT* x, LC3_INT* rc_idx, LC3_INT* order, LC3_INT numfilters, LC3_INT bw_fcbin, LC3_INT N, LC3_INT fs); + +void processSnsComputeScf_fl(LC3_FLOAT* x, LC3_INT tilt, LC3_INT xLen, LC3_FLOAT* gains, LC3_INT smooth, LC3_FLOAT sns_damping, LC3_FLOAT attdec_damping_factor); + +void processSnsInterpolateScf_fl(LC3_FLOAT* gains, LC3_INT encoder_side, LC3_INT bands_number, LC3_FLOAT* gains_LC3_INT); + +void processDetectCutoffWarped_fl(LC3_FLOAT* d2, LC3_INT fs_idx, LC3_INT frame_dms, LC3_INT* bw_idx); +void processNearNyquistdetector_fl(LC3_INT16* near_nyquist_flag, const LC3_INT fs_idx, const LC3_INT near_nyquist_index, + const LC3_INT bands_number, const LC3_FLOAT* ener); + +void processPerBandEnergy_fl(LC3_INT bands_number, const LC3_INT* acc_coeff_per_band, LC3_INT16 hrmode, LC3_INT16 frame_dms, LC3_FLOAT* d2, LC3_FLOAT* d); + +void ProcessingIMDCT_fl(LC3_FLOAT* y, LC3_INT yLen, const LC3_FLOAT* win, LC3_INT winLen, LC3_INT last_zeros, LC3_FLOAT* mem, LC3_FLOAT* x, + Dct4* dct); + +void ProcessingITDA_WIN_OLA_fl(LC3_FLOAT* x_tda, LC3_INT32 yLen, const LC3_FLOAT* win, LC3_INT32 winLen, LC3_INT32 last_zeros, LC3_FLOAT* mem, LC3_FLOAT* x); + +void process_ltpf_coder_fl(LC3_FLOAT* xin, LC3_INT xLen, LC3_INT ltpf_enable, LC3_INT pitch_ol, LC3_FLOAT pitch_ol_norm_corr, LC3_INT frame_dms, + LC3_FLOAT* mem_old_x, LC3_INT memLen, LC3_FLOAT* mem_norm_corr_past, LC3_INT* mem_on, LC3_FLOAT* mem_pitch, + LC3_INT* param, LC3_FLOAT* mem_norm_corr_past_past, LC3_INT* bits); + +void process_ltpf_decoder_fl(LC3_FLOAT* x, LC3_INT xLen, LC3_FLOAT* y, LC3_INT fs, LC3_FLOAT* mem_old_x, LC3_FLOAT* mem_old_y, + LC3_INT* mem_pitch_LC3_INT, LC3_INT* mem_pitch_fr, LC3_FLOAT* mem_gain, LC3_INT* mem_beta_idx, LC3_INT bfi, + LC3_INT* param, LC3_INT* mem_param, LC3_INT conf_beta_idx, LC3_FLOAT conf_beta, LC3_INT concealMethod, LC3_FLOAT damping + , LC3_INT *mem_ltpf_active +); + +void process_resamp12k8_fl(LC3_FLOAT x[], LC3_INT x_len, LC3_FLOAT mem_in[], LC3_INT mem_in_len, LC3_FLOAT mem_50[], LC3_FLOAT mem_out[], + LC3_INT mem_out_len, LC3_FLOAT y[], LC3_INT* y_len, LC3_INT fs_idx, LC3_INT frame_dms, LC3_INT fs); + +void write_bit_backward_fl(LC3_UINT8* ptr, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT bit); +void write_uint_backward_fl(LC3_UINT8* ptr, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT val, LC3_INT numbits); + +void processAriEncoder_fl(LC3_UINT8* bytes, LC3_INT bp_side, LC3_INT mask_side, LC3_INT* x, LC3_INT* tns_order, LC3_INT tns_numfilters, + LC3_INT* tns_idx, LC3_INT lastnz, + LC3_INT* codingdata, uint8_t* res_bits, LC3_INT resBitsLen, LC3_INT lsbMode, + LC3_INT nbbits, LC3_INT enable_lpc_weighting); + +void attack_detector_fl(LC3_FLOAT* in, LC3_INT frame_size, LC3_INT fs, LC3_INT* lastAttackPosition, LC3_FLOAT* accNrg, LC3_INT* attackFlag, + LC3_FLOAT* attdec_filter_mem, LC3_INT attackHandlingOn, LC3_INT attdec_nblocks, LC3_INT attdec_hangover_threshold); + +void process_snsQuantizesScf_Enc(LC3_FLOAT* env, LC3_INT* index, LC3_FLOAT* envq, Dct2 dct2structSNS); + +void process_snsQuantizesScf_Dec(LC3_INT* scf_idx, LC3_FLOAT* scf_q); + +void processMdct_fl(LC3_FLOAT* in, LC3_FLOAT* out, Mdct* mdctStruct); + +int alloc_encoder(LC3PLUS_Enc* encoder, int channels); +void set_enc_frame_params(LC3PLUS_Enc* encoder); +LC3PLUS_Error update_enc_bitrate(LC3PLUS_Enc* encoder, int bitrate); + +LC3PLUS_Error FillEncSetup(LC3PLUS_Enc* encoder, int samplerate, int channels, int hrmode, int32_t lfe_channel_array[]); + +/* Setup Functions */ +int alloc_decoder(LC3PLUS_Dec* decoder, int samplerate, int channels); +void set_dec_frame_params(LC3PLUS_Dec* decoder); +LC3PLUS_Error update_dec_bitrate(LC3PLUS_Dec* decoder, int ch, int nBytes); + +LC3PLUS_Error FillDecSetup(LC3PLUS_Dec* decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode, int hrmode); + +int Enc_LC3PLUS_fl(LC3PLUS_Enc* encoder, void** input, LC3_UINT8* output, int bps +, LC3_INT32 bfi_ext +); +LC3PLUS_Error Dec_LC3PLUS_fl(LC3PLUS_Dec* decoder, LC3_UINT8* input, int input_bytes, void** output, int bps, int bfi_ext); + +void* balloc(void* base, size_t* base_size, size_t size); + +void processPlcMain_fl(LC3_FLOAT *q_d_fl_c, LC3_FLOAT *syntM_fl_c, LC3PLUS_Dec* decoder, DecSetup* h_DecSetup, LC3_INT bfi, + PlcAdvSetup *PlcAdvSetup, PlcSetup *PlcSetup, LC3_INT plcMeth, LC3_INT ltpf_pitch_int, LC3_INT ltpf_pitch_fr, + LC3_INT tilt, const LC3_INT *bands_offset, LC3_INT bands_number, const LC3_INT *bands_offsetPLC, + LC3_INT n_bandsPLC, LC3_INT16 hrmode, pcState *statePC); + +void processPlcUpdate_fl(PlcAdvSetup *PlcAdvSetup, LC3_INT32 frame_length, LC3_FLOAT *syntM, LC3_FLOAT *scf_q, + LC3_INT32 *nbLostCmpt, LC3_FLOAT *cum_alpha, LC3_INT32 bfi, LC3_INT32 *prevBfi, LC3_INT32 *prevprevBfi); + +void processPlcUpdateSpec_fl(LC3_FLOAT *q_d_prev, LC3_FLOAT *q_d_fl_c, LC3_INT yLen); + +void processNoiseSubstitution_fl(LC3_FLOAT* spec, LC3_FLOAT* spec_prev, LC3_INT32 yLen); + +void process_cutoff_bandwidth(LC3_FLOAT* d_fl, LC3_INT len, LC3_INT bw_bin); +void update_enc_bandwidth(LC3PLUS_Enc* encoder, LC3_INT bandwidth); + +/* al_fec.c */ +LC3_INT16 fec_get_n_pccw(LC3_INT16 slot_bytes, LC3_INT16 fec_mode, LC3_INT16 ccc_flag); +LC3_INT16 fec_get_data_size(LC3_INT16 fec_mode, LC3_INT16 ccc_flag, LC3_INT16 slot_bytes); +LC3_INT16 fec_get_n_pc(LC3_INT16 fec_mode, LC3_INT16 n_pccw, LC3_INT16 slot_bytes); +void processReorderBitstream_fl(LC3_UINT8* bytes, LC3_INT32 n_pccw, LC3_INT32 n_pc, LC3_INT32 b_left, LC3_INT32 len); +void fec_encoder(LC3_INT16 mode, LC3_INT16 epmr, LC3_UINT8 *iobuf, LC3_INT16 data_bytes, LC3_INT16 slot_bytes, LC3_INT16 n_pccw); +LC3_INT32 fec_decoder(LC3_UINT8 *iobuf, LC3_INT16 slot_bytes, LC3_INT32 *data_bytes, LC3PLUS_EpModeRequest *epmr, LC3_INT16 ccc_flag, LC3_INT16 *n_pccw, LC3_INT32 *bfi, + LC3_INT16 *be_bp_left, LC3_INT16 *be_bp_right, LC3_INT16 *n_pc, LC3_INT16 *m_fec); + +LC3_FLOAT array_max_abs(LC3_FLOAT *in, LC3_INT32 len); + +void processPcClassify_fl(LC3_INT32 pitch_present, LC3_INT32 frame_dms, LC3_FLOAT *q_d_prev, LC3_FLOAT *q_old_res, LC3_INT32 yLen, LC3_INT32 spec_inv_idx, LC3_FLOAT stab_fac, LC3_INT32 *bfi); +void processPcMain_fl(LC3_INT32 *bfi, LC3PLUS_Dec* decoder, LC3_FLOAT *sqQdec, DecSetup* h_DecSetup, LC3_INT32 pitch_present, LC3_FLOAT stab_fac, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_INT32 fac_ns_idx, pcState *statePC, LC3_INT32 spec_inv_idx, LC3_INT32 yLen); +void processPcUpdate_fl(LC3_INT32 bfi, LC3_FLOAT *q_res, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_INT32 rframe, LC3_INT32 *BW_cutoff_idx_nf, LC3_INT32 *prev_BW_cutoff_idx_nf, LC3_INT32 fac_ns_idx, LC3_FLOAT *prev_fac_ns, LC3_FLOAT *fac, LC3_FLOAT *q_old_res, LC3_FLOAT *prev_gg, LC3_INT32 spec_inv_idx, LC3_INT32 yLen); +void processPcApply_fl(LC3_FLOAT *q_res, LC3_FLOAT *q_old_res, LC3_FLOAT *q_d_prev, LC3_INT32 spec_inv_idx, LC3_INT32 yLen, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_FLOAT *prev_gg, LC3_FLOAT *fac, LC3_INT32 *pc_nbLostCmpt); + +void processPlcClassify_fl(LC3_INT plcMeth, LC3_INT *concealMethod, LC3_INT32 *nbLostCmpt, LC3_INT32 bfi, + LC3_FLOAT *xcorr, LC3_INT32 framelength, LC3_INT32 frame_dms, LC3_INT32 pitch_int, + LC3_INT32 fs, const LC3_INT *band_offsets, LC3_INT32 bands_number, LC3_INT32 tilt, PlcAdvSetup *plcAd + , LC3_INT32 hrmode +); +void processPlcComputeStabFacMain_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_FLOAT *old_old_scf_q, LC3_INT32 bfi, LC3_INT32 prev_bfi, LC3_INT32 prev_prev_bfi, LC3_FLOAT *stab_fac); + +void processPlcDampingScramblingMain_fl(LC3_INT32 *ns_seed, + LC3_INT32 *pc_seed, LC3_INT32 ns_nbLostCmpt_pc, + LC3_INT32 ns_nbLostCmpt, LC3_FLOAT *stabFac, LC3_FLOAT *cum_fading_slow, LC3_FLOAT *cum_fading_fast, + LC3_FLOAT *spec_prev, LC3_FLOAT *spec, LC3_INT32 spec_inv_idx, LC3_INT32 yLen, LC3_INT32 bfi, + LC3_INT32 frame_dms, LC3_INT32 concealMethod, LC3_INT32 pitch_present_bfi1, LC3_INT32 pitch_present_bfi2, + LC3_FLOAT *cum_fflcAtten); +void processPlcDampingScrambling_fl(LC3_FLOAT *spec, LC3_INT32 yLen, LC3_INT32 nbLostCmpt, LC3_FLOAT *stabFac, LC3_INT32 processDampScramb, + LC3_FLOAT *cum_fflcAtten, LC3_INT32 pitch_present, LC3_INT32 frame_dms, LC3_FLOAT *cum_fading_slow, + LC3_FLOAT *cum_fading_fast, LC3_INT32 *seed, LC3_INT32 spec_inv_idx); + +void plc_phEcu_F0_refine_first(LC3_INT32 *plocs, LC3_INT32 n_plocs, LC3_FLOAT *f0est, const LC3_INT32 Xabs_len, + LC3_FLOAT *f0binPtr, LC3_FLOAT *f0gainPtr, const LC3_INT32 nSubm); +void processTdcLpcEstimation_fl(LC3_FLOAT *r, LC3_INT32 fs_idx, LC3_INT32 len, LC3_FLOAT *A, LC3_INT32 frame_dms); + +LC3_FLOAT plc_phEcuSetF0Hz(LC3_INT32 fs, LC3_FLOAT *old_pitchPtr); + +void plc_phEcu_processPLCspec2shape(LC3_INT16 prev_bfi, LC3_INT16 bfi, LC3_FLOAT q_d[], LC3_INT32 yLen, LC3_FLOAT *stPhECU_oold_grp_shape, LC3_FLOAT *stPhECU_old_grp_shape); +void plc_phEcu_LF_peak_analysis(LC3_INT32 *plocs, LC3_INT32 *n_plocs, LC3_FLOAT *f0est, const LC3_FLOAT *Xabs, + LC3_FLOAT *f0binPtr, LC3_FLOAT *f0gainPtr, const LC3_INT32 nSubm); + +void plc_phEcu_F0_refine_first(LC3_INT32 *plocs, LC3_INT32 n_plocs, LC3_FLOAT *f0est, const LC3_INT32 Xabs_len, + LC3_FLOAT *f0binPtr, LC3_FLOAT *f0gainPtr, const LC3_INT32 nSubm); + +LC3_FLOAT plc_phEcu_imax2_jacobsen_mag(const Complex *y, LC3_FLOAT *c_jacobPtr); +LC3_FLOAT plc_phEcu_interp_max(const LC3_FLOAT *y, LC3_INT32 y_len); +void plc_phEcu_fft_spec2_sqrt_approx(const Complex* x, LC3_INT32 x_len, LC3_FLOAT* x_abs); +LC3_INT32 plc_phEcu_pitch_in_plocs(LC3_INT32* plocs, LC3_INT32 n_plocs); +void plc_phEcu_spec_ana(LC3_FLOAT* xfp, LC3_INT32 xfp_len, const LC3_FLOAT* whr, + LC3_FLOAT* pfind_sensPtr, LC3_INT32* plocs, + LC3_INT32* n_plocs, LC3_FLOAT* f0est, Complex* x, LC3_INT32* x_len, + LC3_FLOAT* f0hzLtpBinPtr, LC3_FLOAT* f0gainLtpPtr, LC3_INT32 bw_idx, Fft* PhEcu_Fft); +void plc_phEcu_subst_spec(LC3_INT32* plocs, LC3_INT32 n_plocs, LC3_FLOAT* f0est, LC3_INT32 time_offs, Complex* X, LC3_INT32 X_len, + LC3_FLOAT* mag_chg_gr, LC3_INT32 *seed, LC3_FLOAT* alpha, LC3_FLOAT* beta, LC3_FLOAT* Xavg, + LC3_INT32 t_adv_in, LC3_INT32 Lprot, LC3_INT32 delta_corr, LC3_FLOAT *corr_phase_dbg, + LC3_FLOAT *X_i_new_re_dbg, LC3_FLOAT *X_i_new_im_dbg); +void plc_phEcu_rec_frame(Complex *X_in, LC3_INT32 xfp_len, LC3_INT32 Lecu, const LC3_FLOAT *whr, const LC3_FLOAT *winMDCT, LC3_INT32 Lprot, + LC3_FLOAT *xfp, LC3_INT32 time_offs, LC3_FLOAT *x_out, + Complex *full_spec_dbg, LC3_FLOAT* ifft_out_dbg, LC3_FLOAT* xsubst_dbg, + LC3_INT32 LA_ZEROS, LC3_INT32 LA, Fft* PhEcu_Ifft + + ); +void plc_phEcu_tba_spect_Xavg(LC3_INT32 fs_idx, LC3_INT32 n_grp, LC3_FLOAT *oold_spec_shape, + LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spec_shape, LC3_FLOAT *old_EwPtr, + LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *Xavg); +void plc_phEcu_tba_per_band_gain(LC3_INT32 n_grp, LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *trans, LC3_FLOAT *grp_pow_change); +void plc_phEcu_tba_trans_dect_gains(LC3_INT32 burst_len, LC3_INT32 n_grp, LC3_FLOAT *grp_pow_change, + LC3_FLOAT *stPhECU_beta_mute, LC3_FLOAT *stPhECU_mag_chg_1st, + LC3_FLOAT *alpha, LC3_FLOAT *beta, LC3_FLOAT *mag_chg, LC3_FLOAT *ph_dith, LC3_INT32 *tr_dec, + LC3_FLOAT *att_val, LC3_INT32 *attDegreeFrames, LC3_FLOAT *thresh_dbg); +void plc_phEcu_trans_burst_ana_sub(LC3_INT32 fs_idx, LC3_INT32 burst_len, LC3_INT32 n_grp, LC3_FLOAT *oold_spect_shape, + LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spect_shape, + LC3_FLOAT *old_EwPtr, LC3_FLOAT *stPhECU_beta_mute, + LC3_FLOAT *stPhECU_mag_chg_1st, LC3_FLOAT *stPhECU_Xavg, LC3_FLOAT *alpha, LC3_FLOAT *beta, LC3_FLOAT *mag_chg, + LC3_INT32 *tr_dec_dbg, LC3_FLOAT *gpc_dbg); +void plc_phEcu_hq_ecu( + LC3_FLOAT *f0binPtr, LC3_FLOAT *f0ltpGainPtr, + LC3_FLOAT *xfp, LC3_INT16 prev_bfi, LC3_INT32 *short_flag_prev, + LC3_INT32 fs, LC3_INT32 * time_offs, + Complex *X_sav_m, LC3_INT32 *n_plocs, LC3_INT32 *plocs, LC3_FLOAT *f0est, const LC3_FLOAT *mdctWin, + LC3_FLOAT *env_stabPtr, LC3_INT32 delta_corr, + LC3_FLOAT *pfind_sensPtr, + LC3_INT32 PhECU_LA, LC3_INT32 t_adv, const LC3_FLOAT *winWhr, LC3_FLOAT *oold_grp_shape, + LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_grp_shape, + LC3_FLOAT *old_EwPtr, + LC3_FLOAT *st_beta_mute, LC3_FLOAT *st_mag_chg_1st, LC3_FLOAT *st_Xavg, LC3_INT32 LA_ZEROS, LC3_FLOAT *x_tda, LC3_FLOAT *xsubst_dbg, Complex *X_out_m_dbg, + LC3_INT32 *seed_dbg, LC3_FLOAT *mag_chg_dbg, LC3_INT32 *tr_dec_dbg, LC3_FLOAT *gpc_dbg, LC3_FLOAT *X_i_new_re_dbg, LC3_FLOAT *X_i_new_im_dbg, LC3_FLOAT *corr_phase_dbg + ,Fft* PhEcu_Fft,Fft* PhEcu_Ifft +); + +void processTdcPreemphasis_fl(LC3_FLOAT *in, LC3_FLOAT *pre_emph_factor, LC3_INT32 n_bands); + +void processTdcTdac_fl(const LC3_FLOAT *synth_inp, const LC3_FLOAT *win, LC3_INT32 frame_length, LC3_INT32 la_zeroes, LC3_FLOAT *ola_mem); +void processTdcInverseOdft_fl(LC3_FLOAT *in, LC3_INT32 n_bands, LC3_FLOAT *out, LC3_INT32 lpc_order); + +void processTdcApply_fl(const LC3_INT32 pitch_LC3_INT, const LC3_FLOAT *preemphFac, const LC3_FLOAT* A, const LC3_INT32 lpc_order, const LC3_FLOAT* pcmbufHist, const LC3_INT32 max_len_pcm_plc, const LC3_INT32 N, const LC3_INT32 frame_dms, + const LC3_INT32 SampRate, const LC3_INT32 nbLostCmpt, const LC3_INT32 overlap, const LC3_FLOAT *stabFac, LC3_FLOAT harmonicBuf[MAX_PITCH], LC3_FLOAT synthHist[M], + LC3_INT32* fract, LC3_INT16* seed, LC3_FLOAT* gain_c, LC3_FLOAT* alpha, LC3_FLOAT* synth); +void* balloc(void* base, size_t* base_size, size_t size); + + + +#endif diff --git a/lc3plus/imdct.c b/lc3plus/imdct.c new file mode 100644 index 0000000000000000000000000000000000000000..5d38aa6cc78077272ea68a12eb0bcf05a5d714ee --- /dev/null +++ b/lc3plus/imdct.c @@ -0,0 +1,102 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +/* Function expects already flipped window */ +void ProcessingIMDCT_fl(LC3_FLOAT* y, LC3_INT yLen, const LC3_FLOAT* win, LC3_INT winLen, LC3_INT last_zeros, LC3_FLOAT* mem, LC3_FLOAT* x, Dct4* dct) +{ + LC3_FLOAT x_tda[MAX_LEN] = {0}, x_ov[2 * MAX_LEN] = {0}; + LC3_INT i = 0, j = 0; + + /* Flip imdct window up to down */ + i = winLen - 1; + j = 0; + + dct4_apply(dct, y, x_tda); + + move_float(x_ov, &x_tda[yLen / 2], yLen / 2); + + j = yLen / 2; + for (i = 0; i < yLen / 2; i++) { + x_ov[j] = -x_tda[yLen - 1 - i]; + j++; + } + + j = yLen; + for (i = 0; i < yLen / 2; i++) { + x_ov[j] = -x_tda[yLen / 2 - 1 - i]; + j++; + } + + j = yLen + yLen / 2; + for (i = 0; i < yLen / 2; i++) { + x_ov[j] = -x_tda[i]; + j++; + } + + for (i = 0; i < winLen; i++) { + x_ov[i] = x_ov[i] * win[winLen - 1 - i]; + } + + /* Buffer update */ + j = 0; + for (i = last_zeros; i < yLen; i++) { + x_ov[i] = x_ov[i] + mem[j]; + j++; + } + + move_float(&x[0], &x_ov[last_zeros], yLen); + + move_float(&mem[0], &x_ov[yLen + last_zeros], (winLen - (yLen + last_zeros))); +} + +void ProcessingITDA_WIN_OLA_fl(LC3_FLOAT* x_tda, LC3_INT32 yLen, const LC3_FLOAT* win, LC3_INT32 winLen, LC3_INT32 last_zeros, LC3_FLOAT* mem, LC3_FLOAT* x) +{ + LC3_FLOAT x_ov[2 * MAX_LEN] = {0}; + LC3_INT32 i, j; + + move_float(x_ov, &x_tda[yLen / 2], yLen / 2); + + j = yLen / 2; + for (i = 0; i < yLen / 2; i++) { + x_ov[j] = -x_tda[yLen - 1 - i]; + j++; + } + + j = yLen; + for (i = 0; i < yLen / 2; i++) { + x_ov[j] = -x_tda[yLen / 2 - 1 - i]; + j++; + } + + j = yLen + yLen / 2; + for (i = 0; i < yLen / 2; i++) { + x_ov[j] = -x_tda[i]; + j++; + } + + for (i = 0; i < winLen; i++) { + x_ov[i] = x_ov[i] * win[winLen - 1 - i]; + } + + /* Buffer update */ + j = 0; + + for (i = last_zeros; i < yLen; i++) { + x[j] = x_ov[i] + mem[j]; + j++; + } + + move_float(&x[j], &x_ov[last_zeros+j], yLen-j); + + move_float(&mem[0], &x_ov[yLen + last_zeros], (winLen - (yLen + last_zeros))); +} diff --git a/lc3plus/lc3.c b/lc3plus/lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..17d2ccb71296628426a4edbb9598145b700ecf1f --- /dev/null +++ b/lc3plus/lc3.c @@ -0,0 +1,431 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "lc3.h" +#include "defines.h" +#include "functions.h" +#include + +#include "setup_dec_lc3.h" +#include "setup_enc_lc3.h" + +#define RETURN_IF(cond, error) \ + if (cond) \ + return (error) + +/* ensure api header constants are up to date */ +STATIC_ASSERT(LC3PLUS_MAX_SAMPLES >= MAX_LEN); +STATIC_ASSERT(LC3PLUS_MAX_CHANNELS >= MAX_CHANNELS); +STATIC_ASSERT(LC3PLUS_MAX_BYTES >= BYTESBUFSIZE); + +/* misc functions ************************************************************/ + +int lc3plus_version(void) +{ + return LC3PLUS_VERSION; +} + +int lc3plus_channels_supported(int channels) +{ + return channels >= 1 && channels <= MAX_CHANNELS; +} + +int lc3plus_samplerate_supported(int samplerate) +{ + switch (samplerate) + { + case 8000: return 1; + case 16000: return 1; + case 24000: return 1; + case 32000: return 1; + case 44100: return 1; + case 48000: return 1; + case 96000: return 1; + default: break; + } + return 0; +} + +static int lc3plus_plc_mode_supported(LC3PLUS_PlcMode plc_mode) +{ + switch ((int)plc_mode) + { + case LC3PLUS_PLC_ADVANCED: /* fallthru */ + return 1; + default: break; + } + return 0; +} + +static int lc3plus_frame_size_supported(float frame_ms) +{ + switch ((int)(ceil(frame_ms * 10))) + { + case 25: /* fallthru */ + case 50: /* fallthru */ + case 100: return 1; + default: break; + } + return 0; +} + +static int null_in_list(void **list, int n) +{ + while (--n >= 0) + RETURN_IF(list[n] == NULL, 1); + return 0; +} + +/* return pointer to aligned base + base_size, *base_size += size + 4 bytes align */ +void *balloc(void *base, size_t *base_size, size_t size) +{ + uintptr_t ptr = ((uintptr_t)base + *base_size + 3) & ~3; + assert((uintptr_t)base % 4 == 0); /* base must be 4-byte aligned */ + *base_size = (*base_size + size + 3) & ~3; + return (void *)ptr; +} + +int32_t lc3_enc_supported_lfe(void) +{ + return 1; +} + +/* encoder functions *********************************************************/ +LC3PLUS_Error lc3plus_enc_init(LC3PLUS_Enc *encoder, int samplerate, int channels, int hrmode, int32_t lfe_channel_array[]) +{ + int ch = 0; + + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((uintptr_t)encoder % 4 != 0, LC3PLUS_ALIGN_ERROR); + RETURN_IF(!lc3plus_samplerate_supported(samplerate), LC3PLUS_SAMPLERATE_ERROR); + RETURN_IF(!lc3plus_channels_supported(channels), LC3PLUS_CHANNELS_ERROR); + RETURN_IF(samplerate==96000 && hrmode == 0, LC3PLUS_HRMODE_ERROR); + + for (ch = 0; ch < channels; ch++) + { + RETURN_IF(!lc3_enc_supported_lfe() && lfe_channel_array[ch], LC3PLUS_LFE_MODE_NOT_SUPPORTED); + } + + return FillEncSetup(encoder, samplerate, channels, hrmode, lfe_channel_array); /* real bitrate check happens here */ +} + +int lc3plus_enc_get_size(int samplerate, int channels) +{ + RETURN_IF(!lc3plus_samplerate_supported(samplerate), 0); + RETURN_IF(!lc3plus_channels_supported(channels), 0); + return alloc_encoder(NULL, channels); +} + +/* Dummy function for API alignment */ +int lc3plus_enc_get_scratch_size(const LC3PLUS_Enc *encoder) +{ + UNUSED(encoder); + return 0; +} + +int lc3plus_enc_get_input_samples(const LC3PLUS_Enc *encoder) +{ + RETURN_IF(encoder == NULL, 0); + return encoder->frame_length; +} + +int lc3plus_enc_get_num_bytes(const LC3PLUS_Enc *encoder) +{ + RETURN_IF(encoder == NULL, 0); + + return encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in); +} + +int lc3plus_enc_get_real_bitrate(const LC3PLUS_Enc *encoder) +{ + int ch = 0, totalBytes = 0; + int bitrate; + RETURN_IF(encoder == NULL, 0); + RETURN_IF(!encoder->lc3_br_set, LC3PLUS_BITRATE_UNSET_ERROR); + + for (ch = 0; ch < encoder->channels; ch++) + { + totalBytes += encoder->channel_setup[ch]->targetBytes; + } + + bitrate = (totalBytes * 80000.0 + encoder->frame_dms - 1) / encoder->frame_dms; + + if (encoder->fs_in == 44100) + { + int rem = bitrate % 480; + bitrate = ((bitrate - rem) / 480) * 441 + (rem * 441) / 480; + } + + return bitrate; +} + + +LC3PLUS_Error lc3plus_enc_set_bitrate(LC3PLUS_Enc *encoder, int bitrate) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(bitrate <= 0, LC3PLUS_BITRATE_ERROR); +#ifndef STRIP_HR_MODE_API + RETURN_IF(encoder->fs_idx == 5 && encoder->hrmode == 0, LC3PLUS_HRMODE_ERROR); +#endif + return update_enc_bitrate(encoder, bitrate); +} + +int lc3plus_enc_get_delay(const LC3PLUS_Enc *encoder) +{ + RETURN_IF(encoder == NULL, 0); + return encoder->frame_length - 2 * encoder->la_zeroes; +} + +LC3PLUS_Error lc3plus_enc_set_frame_dms(LC3PLUS_Enc *encoder, int frame_dms) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(!lc3plus_frame_size_supported(frame_dms / 10.0), LC3PLUS_FRAMEMS_ERROR); + RETURN_IF(encoder->lc3_br_set, LC3PLUS_BITRATE_SET_ERROR); + encoder->frame_dms = frame_dms; + encoder->frame_ms = frame_dms / 10.0; + set_enc_frame_params(encoder); + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_enc_set_bandwidth(LC3PLUS_Enc *encoder, int bandwidth) +{ + LC3_INT effective_fs; + + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); +#ifdef ENABLE_HR_MODE_FL_FLAG + RETURN_IF(encoder->hrmode == 1, LC3PLUS_HRMODE_BW_ERROR); +#endif + effective_fs = encoder->fs_in; + if (encoder->bandwidth != bandwidth) { + if (encoder->fs_in > 40000) { + effective_fs = 40000; + } + if ((bandwidth * 2) > effective_fs) { + return LC3PLUS_BW_WARNING; + } + else { + encoder->bandwidth = bandwidth; + encoder->bandwidth_preset = bandwidth; + encoder->bw_ctrl_active = 1; + update_enc_bitrate(encoder, encoder->bitrate); + } + } + return LC3PLUS_OK; +} + + +LC3PLUS_Error lc3plus_enc16(LC3PLUS_Enc* encoder, int16_t** input_samples, void* output_bytes, int* num_bytes +, void *scratch +) +{ + UNUSED(scratch); + return lc3plus_enc_fl(encoder, (void**)input_samples, 16, output_bytes, num_bytes); +} + +LC3PLUS_Error lc3plus_enc24(LC3PLUS_Enc* encoder, int32_t** input_samples, void* output_bytes, int* num_bytes +, void *scratch +) +{ + UNUSED(scratch); + return lc3plus_enc_fl(encoder, (void**)input_samples, 24, output_bytes, num_bytes); +} + + +LC3PLUS_Error lc3plus_enc_fl(LC3PLUS_Enc* encoder, void** input_samples, int bitdepth, void* output_bytes, int* num_bytes) +{ + RETURN_IF(!encoder || !input_samples || !output_bytes || !num_bytes, LC3PLUS_NULL_ERROR); + RETURN_IF(null_in_list(input_samples, encoder->channels), LC3PLUS_NULL_ERROR); + RETURN_IF(bitdepth != 16 && bitdepth != 24, LC3PLUS_ERROR); + *num_bytes = Enc_LC3PLUS_fl(encoder, input_samples, output_bytes, bitdepth + , *num_bytes == -1 + ); + assert(*num_bytes == lc3plus_enc_get_num_bytes(encoder)); + return LC3PLUS_OK; +} + +/* decoder functions *********************************************************/ + +LC3PLUS_Error lc3plus_dec_init(LC3PLUS_Dec* decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode, int hrmode) +{ + RETURN_IF(decoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(!lc3plus_samplerate_supported(samplerate), LC3PLUS_SAMPLERATE_ERROR); + RETURN_IF(!lc3plus_channels_supported(channels), LC3PLUS_CHANNELS_ERROR); + RETURN_IF(!lc3plus_plc_mode_supported(plc_mode), LC3PLUS_PLCMODE_ERROR); + RETURN_IF(samplerate==96000 && hrmode == 0, LC3PLUS_HRMODE_ERROR); + return FillDecSetup(decoder, samplerate, channels, plc_mode, hrmode); +} + +int lc3plus_dec_get_size(int samplerate, int channels) +{ + RETURN_IF(!lc3plus_samplerate_supported(samplerate), 0); + RETURN_IF(!lc3plus_channels_supported(channels), 0); + return alloc_decoder(NULL, samplerate, channels); +} + +/* Dummy function for API alignment */ +int lc3plus_dec_get_scratch_size(const LC3PLUS_Dec *decoder) +{ + UNUSED(decoder); + return 0; +} + +LC3PLUS_Error lc3plus_dec_set_frame_dms(LC3PLUS_Dec *decoder, int frame_dms) +{ + RETURN_IF(decoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF(!lc3plus_frame_size_supported(frame_dms / 10.0), LC3PLUS_FRAMEMS_ERROR); + RETURN_IF(decoder->plcMeth == 2 && frame_dms != 100, LC3PLUS_FRAMEMS_ERROR); + + decoder->frame_dms = frame_dms; + decoder->frame_ms = frame_dms / 10.0; + set_dec_frame_params(decoder); + return LC3PLUS_OK; +} + +int lc3plus_dec_get_output_samples(const LC3PLUS_Dec* decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->frame_length; +} + +int lc3plus_dec_get_delay(const LC3PLUS_Dec* decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->frame_length - 2 * decoder->la_zeroes; +} + +LC3PLUS_Error lc3plus_dec_fl(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, void** output_samples, int bps, int bfi_ext) +{ + RETURN_IF(!decoder || !input_bytes || !output_samples, LC3PLUS_NULL_ERROR); + RETURN_IF(null_in_list((void**)output_samples, decoder->channels), LC3PLUS_NULL_ERROR); + return Dec_LC3PLUS_fl(decoder, input_bytes, num_bytes, output_samples, bps, bfi_ext); +} + +LC3PLUS_Error lc3plus_dec16(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, int16_t** output_samples, + void* scratch, + int bfi_ext) +{ + UNUSED(scratch); + return lc3plus_dec_fl(decoder, input_bytes, num_bytes, (void**)output_samples, 16, bfi_ext); +} + +LC3PLUS_Error lc3plus_dec24(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, int32_t** output_samples, + void* scratch, + int bfi_ext) +{ + UNUSED(scratch); + return lc3plus_dec_fl(decoder, input_bytes, num_bytes, (void**)output_samples, 24, bfi_ext); +} + +/* memory functions *********************************************************/ + +LC3PLUS_Error lc3plus_enc_free_memory(LC3PLUS_Enc* encoder) +{ + RETURN_IF(!encoder, LC3PLUS_NULL_ERROR); + + lc3plus_free_encoder_structs(encoder); + + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_dec_free_memory(LC3PLUS_Dec* decoder) +{ + RETURN_IF(!decoder, LC3PLUS_NULL_ERROR); + + lc3plus_free_decoder_structs(decoder); + + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_free_encoder_structs(LC3PLUS_Enc* encoder) +{ + int ch = 0; + RETURN_IF(!encoder, LC3PLUS_NULL_ERROR); + + for (ch = 0; ch < encoder->channels; ch++) { + mdct_free(&encoder->channel_setup[ch]->mdctStruct); + dct2_free(&encoder->channel_setup[ch]->dct2StructSNS); + } + + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_free_decoder_structs(LC3PLUS_Dec* decoder) +{ + int ch = 0; + RETURN_IF(!decoder, LC3PLUS_NULL_ERROR); + + for (ch = 0; ch < decoder->channels; ch++) { + dct4_free(&decoder->channel_setup[ch]->dct4structImdct); + real_fft_free(&decoder->channel_setup[ch]->PlcAdvSetup->PlcPhEcuSetup.PhEcu_Fft); + real_fft_free(&decoder->channel_setup[ch]->PlcAdvSetup->PlcPhEcuSetup.PhEcu_Ifft); + } + + return LC3PLUS_OK; +} + + +LC3PLUS_EpModeRequest lc3plus_dec_get_ep_mode_request(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, LC3PLUS_EPMR_ZERO); + return (LC3PLUS_EpModeRequest)decoder->epmr; +} + +int lc3plus_dec_get_error_report(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->error_report == 2047 ? -1 : decoder->error_report & 0x07FF; +} + +LC3PLUS_Error lc3plus_enc_set_ep_mode(LC3PLUS_Enc *encoder, LC3PLUS_EpMode epmode) +{ + LC3PLUS_EpMode oldEpmode; + LC3PLUS_Error error; + + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((unsigned)epmode > LC3PLUS_EP_HIGH, LC3PLUS_EPMODE_ERROR); + oldEpmode = encoder->epmode; + encoder->epmode = epmode; + error = encoder->lc3_br_set ? update_enc_bitrate(encoder, encoder->bitrate) : LC3PLUS_OK; + if (error != LC3PLUS_OK) + { + encoder->epmode = oldEpmode; // preserve old epmode in case of failure + } + return error; +} + +LC3PLUS_Error lc3plus_enc_set_ep_mode_request(LC3PLUS_Enc *encoder, LC3PLUS_EpModeRequest epmr) +{ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((unsigned)epmr > LC3PLUS_EPMR_HIGH, LC3PLUS_EPMODE_ERROR); + encoder->epmr = epmr; + return LC3PLUS_OK; +} + +LC3PLUS_Error lc3plus_dec_set_ep_enabled(LC3PLUS_Dec *decoder, int32_t ep_enabled) +{ + RETURN_IF(decoder == NULL, LC3PLUS_NULL_ERROR); + decoder->ep_enabled = ep_enabled != 0; + decoder->epmr = LC3PLUS_EPMR_ZERO; + return LC3PLUS_OK; +} + +int lc3plus_dec_get_epok_flags(const LC3PLUS_Dec *decoder) +{ + RETURN_IF(decoder == NULL, 0); + return decoder->error_report >> 11; +} + +#ifndef STRIP_ERROR_PROTECTION_API_FL +#endif /* STRIP_ERROR_PROTECTION_API_FL */ + +#ifndef STRIP_ERROR_PROTECTION_API_FL +#endif /* STRIP_ERROR_PROTECTION_API_FL */ + diff --git a/lc3plus/lc3.h b/lc3plus/lc3.h new file mode 100644 index 0000000000000000000000000000000000000000..3e45438fede66c23bfeb2efc0b3927e7a46e78d0 --- /dev/null +++ b/lc3plus/lc3.h @@ -0,0 +1,517 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +/*! \file lc3.h + * This header provides the API for LC3plus. + * + * This library is targeting devices with extreme memory limitations, so memory management + * must be handeled by the user. This includes allocating memory for the structs. The structs are persistent + * between function calls. + * + * The amount of memory needed for various configurations can be obtained from the lc3plus_*_get_size + * function. The LC3PLUS_*_MAX_SIZE macro can be used for all configurations. + * + * Depending on the build configuration some functions might not be available. + */ + +#ifndef LC3PLUS_H +#define LC3PLUS_H + +#ifndef _MSC_VER +#include +#else +typedef unsigned char uint8_t; +typedef __int16 int16_t; +typedef __int32 int32_t; +#endif + +/*! Construct version number from major/minor/micro values. */ +#define LC3PLUS_VERSION_INT(major, minor, micro) (((major) << 16) | ((minor) << 8) | (micro)) + +/*! Version number to ensure header and binary are matching. */ +#define LC3PLUS_VERSION LC3PLUS_VERSION_INT(1, 6, 9) + +/*! Maximum number of supported channels. The actual binary might support + * less, use lc3plus_channels_supported() to check. */ +#define LC3PLUS_MAX_CHANNELS 2 + +/*! Maximum number of samples per channel that can be stored in one LC3plus frame. + */ +#define LC3PLUS_MAX_SAMPLES 960 + +/*! Maximum number of bytes of one LC3plus frame. */ +#define LC3PLUS_MAX_BYTES 1250 + +/*! Maximum size needed to store encoder state. */ +#define LC3PLUS_ENC_MAX_SIZE 20392 + +/*! Maximum size needed to store decoder state. */ +#define LC3PLUS_DEC_MAX_SIZE 87528 + +/*! Error codes returned by functions. */ +typedef enum +{ + LC3PLUS_PLC_ADVANCED = 1 /*!< Enhanced concealment method */ +} LC3PLUS_PlcMode; + +/*! Error protection mode. LC3PLUS_EP_ZERO differs to LC3PLUS_EP_OFF in that + * errors can be detected but not corrected. */ +typedef enum +{ + LC3PLUS_EP_OFF = 0, /*!< Error protection is disabled */ + LC3PLUS_EP_ZERO = 1, /*!< Error protection with 0 bit correction */ + LC3PLUS_EP_LOW = 2, /*!< Error protection correcting one symbol per codeword */ + LC3PLUS_EP_MEDIUM = 3, /*!< Error protection correcting two symbols per codeword */ + LC3PLUS_EP_HIGH = 4 /*!< Error protection correcting three symbols per codeword */ +} LC3PLUS_EpMode; + +/*! Error protection mode request. On the encoder sidem, LC3PLUS_EPMR_ZERO to LC3PLUS_EPMR_HIGH + * can be set. The decoder returns mode requests with different confidences. */ +typedef enum +{ + LC3PLUS_EPMR_ZERO = 0, /*!< Request no error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_LOW = 1, /*!< Request low error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_MEDIUM = 2, /*!< Request medium error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_HIGH = 3, /*!< Request high error correction. High confidence if returned by decoder. */ + LC3PLUS_EPMR_ZERO_MC = 4, /*!< No error correction requested, medium confidence. */ + LC3PLUS_EPMR_LOW_MC = 5, /*!< Low error correction requested, medium confidence. */ + LC3PLUS_EPMR_MEDIUM_MC = 6, /*!< Medium error correction requested, medium confidence. */ + LC3PLUS_EPMR_HIGH_MC = 7, /*!< High error correction requested, medium confidence. */ + LC3PLUS_EPMR_ZERO_NC = 8, /*!< No error correction requested, unvalidated. */ + LC3PLUS_EPMR_LOW_NC = 9, /*!< Low error correction requested, unvalidated. */ + LC3PLUS_EPMR_MEDIUM_NC = 10, /*!< Medium error correction requested, unvalidated. */ + LC3PLUS_EPMR_HIGH_NC = 11 /*!< High error correction requested, unvalidated. */ +} LC3PLUS_EpModeRequest; + +/*! Error codes returned by functions. */ +typedef enum +{ + LC3PLUS_OK = 0, /*!< No error occurred */ + LC3PLUS_ERROR = 1, /*!< Function call failed */ + LC3PLUS_DECODE_ERROR = 2, /*!< Frame failed to decode and was concealed */ + LC3PLUS_NULL_ERROR = 3, /*!< Pointer argument is null */ + LC3PLUS_SAMPLERATE_ERROR = 4, /*!< Invalid samplerate value */ + LC3PLUS_CHANNELS_ERROR = 5, /*!< Invalid channels value */ + LC3PLUS_BITRATE_ERROR = 6, /*!< Invalid bitrate value */ + LC3PLUS_NUMBYTES_ERROR = 7, /*!< Invalid num_bytes value */ + LC3PLUS_EPMODE_ERROR = 8, /*!< Invalid plc_method value */ + LC3PLUS_FRAMEMS_ERROR = 9, /*!< Invalid epmode value */ + LC3PLUS_ALIGN_ERROR = 10, /*!< Invalid frame_ms value */ + LC3PLUS_HRMODE_ERROR = 11, /*!< Unaligned pointer */ + LC3PLUS_BITRATE_UNSET_ERROR = 12, /*!< Invalid epmr value */ + LC3PLUS_BITRATE_SET_ERROR = 13, /*!< Invalid usage of hrmode, sampling rate and frame size */ + LC3PLUS_HRMODE_BW_ERROR = 14, /*!< Function called before bitrate has been set */ + LC3PLUS_PLCMODE_ERROR = 15, /*!< Function called after bitrate has been set */ + LC3PLUS_EPMR_ERROR = 16, /*!< Invalid external bad frame index */ + LC3PLUS_PADDING_ERROR = 17, /*!< Incorrect padding value */ + FRAMESIZE_ERROR = 18, /*!< Incorrect frame size during decoding */ + LC3PLUS_LFE_MODE_NOT_SUPPORTED = 19, /*!< LFE support not available */ + + /* START WARNING */ + LC3PLUS_WARNING = 20, + LC3PLUS_BW_WARNING = 21 /*!< Invalid bandwidth cutoff frequency */ + +} LC3PLUS_Error; + +typedef struct LC3PLUS_Enc LC3PLUS_Enc; /*!< Opaque encoder struct. */ +typedef struct LC3PLUS_Dec LC3PLUS_Dec; /*!< Opaque decoder struct. */ + +/*! \addtogroup Misc + * \{ */ + +/*! Test LFE mode support. + * + * Tests the support of the LFE mode. + * + * \return 1 for true, 0 for false. + */ +int32_t lc3_enc_supported_lfe(void); + +/*! Return library version number. It should match LC3PLUS_VERSION. */ +int lc3plus_version(void); + +/*! Tests if the library supports number of channels. + * + * \param[in] channels Number of channels. + * \return 1 for true, 0 for false. + */ +int lc3plus_channels_supported(int channels); + +/*! Tests if the library supports a sampling rate. + * + * \param[in] samplerate Sampling rate + * \return 1 for true, 0 for false + */ +int lc3plus_samplerate_supported(int samplerate); + +/*! \} + * \addtogroup Encoder + * \{ */ + +/*! + * Initialize LC3plus encoder. + * + * This function is used to fill a user-allocated encoder struct. This is typically + * called once for a samplerate / channel configuration. After init and before encoding + * the first frame you must call lc3plus_enc_set_bitrate(). + * + * \param[out] encoder Pointer to allocated encoder memory. It must have a size provided + * by lc3plus_enc_get_size() for matching samplerate / channels + * configuration or LC3PLUS_ENC_MAX_SIZE. + * \param[in] channels Number of channels. + * \param[in] samplerate Input sampling rate. Allowed sampling rates are: + * 8000, 16000, 24000, 32000, 44100, 48000 + * \param[in] hrmode High resolution mode. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_init(LC3PLUS_Enc* encoder, int samplerate, int channels, int hrmode, int32_t lfe_channel_array[]); + +/*! + * Encode LC3plus frame with 16 bit input. + * + * Each call consumes a fixed number of samples. The number of input samples + * can be obtained from lc3plus_enc_get_input_samples(). + * Scratch parameter only works as dummy parameter to align fixed-point and floating-point APIs + * + * \param[in] encoder Encoder handle initialized by lc3plus_enc_init(). + * \param[in] input_samples Input samples. The left channel is stored in input_samples[0], + * the right channel in input_samples[1]. The input is not changed + * by the encoder. + * \param[out] output_bytes Output buffer. It must have a at least lc3plus_enc_get_num_bytes() + * or at most LC3PLUS_MAX_BYTES. + * \param[out] num_bytes Number of bytes written to output_bytes. + * \param scratch See comment above. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc16(LC3PLUS_Enc* encoder, int16_t** input_samples, void* output_bytes, int* num_bytes +, void *scratch +); + +/*! Encode LC3plus frame with 24 bit input. + * + * The input samples are expected to be 24-bit values, sign-extended to 32-bit. + * See lc3plus_enc16() for parameter documentation. + */ +LC3PLUS_Error lc3plus_enc24(LC3PLUS_Enc* encoder, int32_t** input_samples, void* output_bytes, int* num_bytes +, void *scratch +); + +/*! + * Internal function. Use lc3plus_enc16() or lc3plus_enc24() for encoding. + */ + +LC3PLUS_Error lc3plus_enc_fl(LC3PLUS_Enc* encoder, void** input_samples, int bitdepth, void* output_bytes, int* num_bytes); + +/*! Get the size of the LC3plus encoder struct for a samplerate / channel + * configuration. If memory is not restricted LC3PLUS_ENC_MAX_SIZE can be used for + * all configurations. + * + * \param[in] samplerate Sampling rate. + * \param[in] channels Number of channels. + * \return Size in bytes or 0 on error. + */ +int lc3plus_enc_get_size(int samplerate, int channels); + +/*! Dummy function as no scratch management available in floating-point code. Returns always zero. Used to align fixed-point and floating-point APIs. + * + * \param[in] encoder Encoder handle. + * \return Size in bytes or 0 on error. + */ +int lc3plus_enc_get_scratch_size(const LC3PLUS_Enc *encoder); + +/*! Get number of samples per channel expected by lc3plus_enc16() or lc3plus_enc24(). + * + * \param[in] encoder Encoder handle. + * \return Number of samples or 0 on error. + */ +int lc3plus_enc_get_input_samples(const LC3PLUS_Enc* encoder); + +/*! Get real internal bitrate of the encoder. It might differ from the requested + * bitrate due to 44.1 kHz input. + * + * \param[in] encoder Encoder handle. + * \return Bitrate in bits per second or 0 on error. + */ +int lc3plus_enc_get_real_bitrate(const LC3PLUS_Enc* encoder); + +/*! Get the maximum number of bytes produced by lc3plus_enc16() or lc3plus_enc24() for the current + * bitrate. It should be equal to the num_bytes output of lc3plus_enc16/24(). + * + * \param[in] encoder Encoder handle. + * \return Size in bytes or 0 on error. + */ +int lc3plus_enc_get_num_bytes(const LC3PLUS_Enc *encoder); + +/*! Set encoder bitrate for all channels. + * This function must be called at least once before encoding the first frame, but + * after other configuration functions such as lc3plus_enc_set_frame_ms(). + * + * Recommended bitrates for input sampling rates with 10 ms framing: + * kHz | kbps + * --------|----- + * 8 | 24 + * 16 | 32 + * 24 | 48 + * 32 | 64 + * 44.1/48 | 80(voice) 128(music) + * 96 | 128 + * + * \param[in] encoder Encoder handle. + * \param[in] bitrate Bitrate in bits per second. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_bitrate(LC3PLUS_Enc* encoder, int bitrate); + +/*! Get the encoder delay in number of samples. + * + * \param[in] encoder Encoder handle. + * \return Encoder in samples or 0 on error. + */ +int lc3plus_enc_get_delay(const LC3PLUS_Enc *encoder); + +/*! Set the frame length for LC3plus decoder in deci milliseconds. + * Not all lengths may be enabled, in that case LC3PLUS_FRAMEMS_ERROR is returned. + * This only works correcly if the encoder was configured with the same vale. + * + * \param[in] decoder Decoder handle. + * \param[in] frame_ms Frame length in ms. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_frame_dms(LC3PLUS_Enc *encoder, int frame_ms); + + +/*! Set encoder Low-frequency effect moded. deactivates LTPF, TNS, NF + * + * \param[in] encoder Encoder handle. + * \param[in] lfe LFE mode flag + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_lfe(LC3PLUS_Enc* encoder, int lfe); + +/*! Free memory allocated within LC3plus encoder struct. + * + * \param[in] encoder Encoder handle. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_free_memory(LC3PLUS_Enc* encoder); + +/*! Set encoder bandwidth to a different value. All frequency bins above the cutoff + * frequency are cut off. Allowed frequencies are: 4 kHz, 8 kHz, 12 kHz, 16 kHz and 24 kHz. + * + * \param[in] encoder Encoder handle. + * \param[in] bandwidth Cutoff Frequency in Hz + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_bandwidth(LC3PLUS_Enc *encoder, int bandwidth); + +/*! Internal function called by lc3plus_enc_free_memory. + * + * \param[in] encoder Encoder handle. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_free_encoder_structs(LC3PLUS_Enc* encoder); + +/*! Sets error protection mode request transmitted in each channel encoded frame. + * The channel coder includes an error protection mode request (EPMR) in every frame. + * The EPMR takes value 0, 1, 2, and 3 which request ep modes 1, 2, 3, and 4 from the + * decoding device. The EPMR can be retrieved from the channel decoder via the interface + * routine lc3plus_dec_get_ep_mode_request(). + * + * \param[in] encoder Encoder handle. + * \param[in] epmr Error Protection Mode Request + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_ep_mode_request(LC3PLUS_Enc *encoder, LC3PLUS_EpModeRequest epmr); + +/*! Set error protection mode. The default is LC3PLUS_EP_OFF. It is possible to switch between + * different modees during encoding. Dynamic switching is only allowed between LC3PLUS_EP_ZERO, + * LC3PLUS_EP_LOW, LC3_EP_MEDIUM, and LC3PLUS_EP_HIGH. The the decoder must be notified with + * lc3plus_dec_set_ep_enabled() to expect protected data if epmode is other than LC3PLUS_EP_OFF. + * + * \param[in] encoder Encoder handle. + * \param[in] epmode Error protection mode. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_enc_set_ep_mode(LC3PLUS_Enc *encoder, LC3PLUS_EpMode epmode); + +/*! \} + * \addtogroup Decoder + * \{ */ + +/*! + * Initialize LC3plus decoder. + * + * This function is used to fill a user-allocated decoder struct. This is + * typically called once for a samplerate / channel configuration. + * + * The samplerate and channel arguments must have the same values that were + * used for encoding. LC3plus does not provide a signalling scheme, transporting + * these values is the responsibility of the application. + * + * \param[out] decoder Pointer to decoder memory. It must have as size + * of least lc3plus_dec_get_size() or at most LC3PLUS_DEC_MAX_SIZE. + * \param[in] samplerate Bitstream sampling rate. \param[in] channels Bitstream + * number of channels. + * + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_init(LC3PLUS_Dec* decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode, int hrmode); + + + +/*! + * Decode compressed LC3plus frame to 16 bit PCM output. + * + * Each call decodes a fixed number of samples. Use lc3plus_dec_get_output_samples() to obtain this + * number. When the input is corrupted and can not be decoded, LC3PLUS_DECODE_ERROR is returned and + * packet loss concealment is applied, so the output is still usable. + * If error protection is enabled and the errors can be corrected the frame is corrected and + * normally decoded. Use lc3plus_dec_get_error_report() to check if errors were corrected. + * + * \param[in] decoder Decoder initialized by lc3plus_dec_init(). + * \param[in] input_bytes Input bytes. If error protection is enabled the input bytes can be + * altered when error correction is applied. This is why this buffer + * must be writable. + * \param[in] num_bytes Number of valid bytes in input_bytes. To signal a lost frame and + * generate concealment output this value must be set to 0. + * \param[out] output_samples Array of pointers to output channel buffers. Each channel buffer + * should provide enough space to hold at most LC3PLUS_MAX_SAMPLES. The + * left channel is stored in output_samples[0], the right channel in + * output_samples[1]. + * \param scratch Scratch parameter only works as dummy parameter to align fixed-point and floating-point APIs + * \return Returns LC3PLUS_OK on success or appropriate error code. Note there is + * a special case for LC3PLUS_DECODE_ERROR where the output is still valid. + */ +LC3PLUS_Error lc3plus_dec16(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, int16_t** output_samples, + void* scratch, + int bfi_ext); + +/*! Decode compressed LC3plus frame to 24 bit PCM output. + * + * The output samples are 24-bit values, sign-extended to 32-bit. + * See lc3plus_dec16() for parameter documentation. + */ +LC3PLUS_Error lc3plus_dec24(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, int32_t** output_samples, + void* scratch, + int bfi_ext); + +/* Internal function */ + LC3PLUS_Error lc3plus_dec_fl(LC3PLUS_Dec* decoder, void* input_bytes, int num_bytes, void** output_samples, int bps, int bfi_ext); + +/*! Get the size of the LC3plus decoder struct for a samplerate / channel + * configuration. If memory is not restricted LC3PLUS_DEC_MAX_SIZE can be used for + * all configurations. + * + * \param[in] channels Number of channels. + * \param[in] samplerate Sampling rate. + * \return Size in bytes or 0 on error. + */ +int lc3plus_dec_get_size(int samplerate, int channels); + +/*! Dummy function as no scratch management available in floating-point code. Returns always zero. Used to align fixed-point and floating-point APIs. + * + * \param[in] decoder Decoder handle. + * \return Size in bytes or 0 on error. + */ +int lc3plus_dec_get_scratch_size(const LC3PLUS_Dec *decoder); + +/*! Get the number of samples per channel produced by lc3plus_dec16() or lc3plus_dec24. + * + * \param[in] decoder Decoder handle. + * \return Number of samples or 0 on error. + */ +int lc3plus_dec_get_output_samples(const LC3PLUS_Dec* decoder); + +/*! Get the decoder delay in number of samples. + * + * \param[in] decoder Decoder handle. + * \return Delay in samples or 0 on error. + */ +int lc3plus_dec_get_delay(const LC3PLUS_Dec* decoder); + +/*! Set the frame length for LC3plus encoder in deci milliseconds. + * Not all lengths may be enabled, in that case LC3PLUS_FRAMEMS_ERROR is returned. + * This function must be called before lc3plus_enc_set_bitrate(). The decoder must be + * configured with lc3plus_dec_set_frame_dms() with the same value. + * + * \param[in] encoder Encoder handle. + * \param[in] frame_ms Frame length in ms. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_set_frame_dms(LC3PLUS_Dec *decoder, int frame_ms); + + +/*! Free memory allocated within LC3plus decoder struct. + * + * \param[in] decoder Decoder handle. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_free_memory(LC3PLUS_Dec* decoder); + +/*! Internal function called by lc3plus_dec_free_memory. + * + * \param[in] decoder Decoder handle. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_free_decoder_structs(LC3PLUS_Dec* decoder); + +/*! Enable or disable error protection. Default value is 0 (disabled). If error protection is + * enabled, the decoder expects that the frames were encoded with error protection mode + * LC3PLUS_EP_ZERO or higher. + * + * \param[in] decoder Decoder handle. + * \param[in] ep_enabled 1 (or any nonzero) for true, 0 for false. + * \return LC3PLUS_OK on success or appropriate error code. + */ +LC3PLUS_Error lc3plus_dec_set_ep_enabled(LC3PLUS_Dec *decoder, int ep_enabled); + +/*! Retrieves the error protection mode reqeust from channel decoder. + * + * The return value encodes both the error protection mode request (EPMR) + * and the confidence of the method by which it was retrieved. + * + * The requested error protection mode is (epmr % 4) + 1, where epmr is the + * function's return value. The confidence is specified as follows. + * + * Confidence | Range + * -----------|------------- + * high | 0 <= epmr < 4 + * medium | 4 <= epmr < 8 + * no | 8 <= epmr < 12 + * + * When receiving stereo content of separately channel encoded audio frames the + * return value is the minimum of two values retrieved from the individual channels. + * + * \param[in] decoder Decoder handle. + * \return Error protection mode reqeust. + */ +LC3PLUS_EpModeRequest lc3plus_dec_get_ep_mode_request(const LC3PLUS_Dec *decoder); + +/*! Get the number of corrected bit errors in the last decoded frame. This only works if + * error protection is active. If the number of errors is greater than the current error + * protection mode can correct, -1 is returned. If the last frame had no errors or the + * decoder handle is NULL, 0 is returned, + * + * \param[in] decoder Decoder handle. + * \return Number of corrected bits or -1. See description for details. + */ +int lc3plus_dec_get_error_report(const LC3PLUS_Dec *decoder); +/*! This function returns an set of flags indicating whether the last frame + * would have been channel decodable in epmode m, m ranging from 1 to 4. Note that + * this information is not available in case the last frame was not channel + * decodable in which case the return value is 0. If the last frame would have + * been decodable in epmode m, m-1th of the return value will be 1. + * Otherwise, if the frame would not have been decodable or if this information + * cannot be retrieved, the m-1th bit of the return value will be 0. + */ +int lc3plus_dec_get_epok_flags(const LC3PLUS_Dec *decoder); + +/*! \} */ +#endif /* LC3plus */ diff --git a/lc3plus/lc3plus_fft.c b/lc3plus/lc3plus_fft.c new file mode 100644 index 0000000000000000000000000000000000000000..14f443f860d995f76b063ecbbe8636f54b52720f --- /dev/null +++ b/lc3plus/lc3plus_fft.c @@ -0,0 +1,99 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" +#include "fft/iis_fft.c" +#include "fft/iisfft.c" +#include "fft/cfft.c" + +void fft_init(Fft* fft, int length) +{ + HANDLE_IIS_FFT handle = NULL; + IIS_FFT_ERROR error = 0; + assert(length % 2 == 0); + + fft->length = length; + + error = LC3_IIS_CFFT_Create(&handle, length, IIS_FFT_FWD); + + assert(error == IIS_FFT_NO_ERROR); + fft->handle = handle; +} + +void fft_free(Fft* fft) +{ + IIS_FFT_ERROR error = 0; + + if (fft) { + error = LC3_IIS_CFFT_Destroy((HANDLE_IIS_FFT *) &fft->handle); + + assert(error == IIS_FFT_NO_ERROR); + memset(fft, 0, sizeof(*fft)); + } +} + +void real_fft_free(Fft* fft) +{ + IIS_FFT_ERROR error = 0; + + if (fft) { + error = LC3_IIS_RFFT_Destroy((HANDLE_IIS_FFT *) &fft->handle); + + assert(error == IIS_FFT_NO_ERROR); + memset(fft, 0, sizeof(*fft)); + } +} + +void real_fft_init(Fft* fft, LC3_INT32 length, HANDLE_IIS_FFT *handle) +{ + IIS_FFT_ERROR error = IIS_FFT_NO_ERROR; + assert(length % 4 == 0); /* due to current limitation of core complex FFTs*/ + + fft->length = length; + + error = LC3_IIS_RFFT_Create(handle, length, IIS_FFT_FWD); + assert(error == IIS_FFT_NO_ERROR); + fft->handle = *handle; +} + + +void real_ifft_init(Fft* fft, LC3_INT32 length, HANDLE_IIS_FFT *handle) +{ + IIS_FFT_ERROR error = IIS_FFT_NO_ERROR; + assert(length % 4 == 0); /* due to current limitation of core complex FFTs*/ + + fft->length = length; + + error = LC3_IIS_RFFT_Create(handle, length, IIS_FFT_BWD); + + assert(error == IIS_FFT_NO_ERROR); + fft->handle = *handle; +} + +void fft_apply(Fft* fft, const Complex* input, Complex* output) +{ + IIS_FFT_ERROR error = 0; + error = LC3_IIS_FFT_Apply_CFFT(fft->handle, input, output); + + assert(error == IIS_FFT_NO_ERROR); +} + + +void real_fft_apply(Fft* fft, const LC3_FLOAT* input, LC3_FLOAT* output) +{ + IIS_FFT_ERROR error = IIS_FFT_NO_ERROR; + + UNUSED(error); + + error = LC3_IIS_FFT_Apply_RFFT(fft->handle, input, output); + + assert(error == IIS_FFT_NO_ERROR); +} diff --git a/lc3plus/license.h b/lc3plus/license.h new file mode 100644 index 0000000000000000000000000000000000000000..d9d6c89675d4fadc0455effff0f0edae8fc2193c --- /dev/null +++ b/lc3plus/license.h @@ -0,0 +1,22 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "defines.h" + +static const char *const LICENSE = + "*******************************************************************************\n" + "* ETSI TS 103 634 V1.4.1 *\n" + "* Low Complexity Communication Codec Plus (LC3plus) *\n" + "* Floating Point Software V%i.%i.%iETSI, " __DATE__ " *\n" + "* Copyright licence is solely granted through ETSI Intellectual Property *\n" + "* Rights Policy, 3rd April 2019. No patent licence is granted by implication, *\n" + "* estoppel or otherwise. *\n" + "*******************************************************************************\n" + "\n"; diff --git a/lc3plus/ltpf_coder.c b/lc3plus/ltpf_coder.c new file mode 100644 index 0000000000000000000000000000000000000000..fac8c481c003aee4bf8fb8b2d03b921cd33a047f --- /dev/null +++ b/lc3plus/ltpf_coder.c @@ -0,0 +1,264 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static LC3_INT searchMaxIndice(LC3_FLOAT* in, LC3_INT len); + +LC3_INT searchMaxIndice(LC3_FLOAT* in, LC3_INT len) +{ + LC3_INT max_i = 0, i = 0; + LC3_FLOAT max = 0; + + if (len <= 0) { + return -128; + } + + for (i = 0; i < len; i++) { + if (in[i] > max) { + max = in[i]; + max_i = i; + } + } + + return max_i; +} + +void process_ltpf_coder_fl(LC3_FLOAT* xin, LC3_INT xLen, LC3_INT ltpf_enable, LC3_INT pitch_ol, LC3_FLOAT pitch_ol_norm_corr, LC3_INT frame_dms, + LC3_FLOAT* mem_old_x, LC3_INT memLen, LC3_FLOAT* mem_norm_corr_past, LC3_INT* mem_on, LC3_FLOAT* mem_pitch, + LC3_INT* param, LC3_FLOAT* mem_norm_corr_past_past, LC3_INT* bits) +{ + LC3_FLOAT buffer[LTPF_MEMIN_LEN + LEN_12K8 + 1 + (LEN_12K8 >> 2)] = {0}, sum = 0, buf_tmp[MAX_LEN] = {0}, cor_up[MAX_LEN] = {0}, *x; + LC3_INT i = 0, j = 0, k = 0, n = 0, step = 0, N = 0, ltpf_active = 0, pitch_search_delta = 0, + pitch_search_upsamp = 0, pitch_search_L_interpol1 = 0, + t0_min = 0, t0_max = 0, t_min = 0, t_max = 0, temp2 = 0, t1 = 0, pitch_int = 0, pitch_fr = 0, midpoint = 0, + delta_up = 0, delta_down = 0, pitch_index = 0, gain = 0, acflen = 0; + LC3_FLOAT norm_corr = 0, cor[MAX_LEN] = {0}, cor_int[MAX_LEN] = {0}, currFrame[MAX_LEN] = {0}, predFrame[MAX_LEN] = {0}, sum1 = 0, sum2 = 0, sum3 = 0; + LC3_FLOAT pitch = 0; + + /* Signal Buffer */ + N = xLen - 1; + x = &buffer[memLen]; + + move_float(buffer, mem_old_x, memLen); + move_float(x, xin, xLen); + move_float(mem_old_x, &buffer[N], xLen + memLen - N); + + ltpf_active = 0; + norm_corr = 0; + + pitch_search_delta = 4; + pitch_search_upsamp = 4; + pitch_search_L_interpol1 = 4; + + if (pitch_ol_norm_corr > 0.6) { + /* Search Bounds */ + t0_min = pitch_ol - pitch_search_delta; + t0_max = pitch_ol + pitch_search_delta; + t0_min = MAX(t0_min, MIN_PITCH_12K8); + t0_max = MIN(t0_max, MAX_PITCH_12K8); + acflen = N; + + if (frame_dms == 25) + { + acflen = 2 * N; + x = x - N; + } + + /* Cross-Correlation Bounds */ + t_min = t0_min - pitch_search_L_interpol1; + t_max = t0_max + pitch_search_L_interpol1; + + /* Compute norm */ + sum1 = sum2 = 0; + for (j = 0; j < acflen; j++) { + sum1 += x[j] * x[j]; + sum2 += x[j - t_min] * x[j - t_min]; + } + + /* Compute Cross-Correlation */ + for (i = t_min; i <= t_max; i++) { + sum = 0; + for (j = 0; j < acflen; j++) { + sum += x[j] * x[j - i]; + } + + if (i > t_min) { + sum2 = sum2 + x[-i]*x[-i] + - x[acflen - 1 - ( i - 1 )]*x[acflen - 1 - ( i - 1 )]; + } + sum3 = LC3_SQRT(sum1 * sum2) + LC3_POW(10, -5); + norm_corr = sum / sum3; + + norm_corr = MAX(0, norm_corr); + cor[i - t_min] = norm_corr; + + } + + /* Find Integer Pitch-Lag */ + j = 0; + for (i = pitch_search_L_interpol1; i <= t_max - t_min - pitch_search_L_interpol1; i++) { + buf_tmp[j] = cor[i]; + j++; + } + + temp2 = searchMaxIndice(buf_tmp, j); + + t1 = temp2 + t0_min; + assert(t1 >= t0_min && t1 <= t0_max); + + /* Find Fractional Pitch-Lag */ + if (t1 >= RES2_PITCH_12K8) { + pitch_int = t1; + pitch_fr = 0; + } else { + j = 0; + + for (i = 0; i < pitch_search_upsamp * (t_max - t_min) + 1; i = i + pitch_search_upsamp) { + cor_up[i] = cor[j]; + j++; + } + + for (i = 0; i < pitch_search_upsamp * (t0_max - t0_min + 1); i++) { + sum = 0; + + k = 0; + for (j = i; j < i + 32; j++) { + sum += cor_up[j] * inter4_1[k]; + k++; + } + + cor_int[i] = sum; + } + + if (t1 >= RES4_PITCH_12K8) { + step = 2; + } else { + step = 1; + } + + midpoint = pitch_search_upsamp * (t1 - t0_min) + 1; + delta_up = pitch_search_upsamp - step; + + if (t1 == t0_min) { + delta_down = 0; + } else { + delta_down = pitch_search_upsamp - step; + } + + j = 0; + for (i = midpoint - delta_down - 1; i <= midpoint + delta_up; i = i + step) { + buf_tmp[j] = cor_int[i]; + j++; + } + + temp2 = searchMaxIndice(buf_tmp, ((midpoint + delta_up) - (midpoint - delta_down)) / step + 1); + pitch_fr = temp2 * step - delta_down; + + if (pitch_fr >= 0) { + pitch_int = t1; + } else { + pitch_int = t1 - 1; + pitch_fr = pitch_search_upsamp + pitch_fr; + } + } + + assert((pitch_int <= MAX_PITCH_12K8 && pitch_int >= RES2_PITCH_12K8 && pitch_fr == 0) || + (pitch_int < RES2_PITCH_12K8 && pitch_int >= RES4_PITCH_12K8 && (pitch_fr == 0 || pitch_fr == 2)) || + (pitch_int < RES4_PITCH_12K8 && pitch_int >= MIN_PITCH_12K8 && + (pitch_fr == 0 || pitch_fr == 1 || pitch_fr == 2 || pitch_fr == 3))); + + if (pitch_int < RES4_PITCH_12K8) { + pitch_index = pitch_int * 4 + pitch_fr - (MIN_PITCH_12K8 * 4); + } else if (pitch_int < RES2_PITCH_12K8) { + pitch_index = pitch_int * 2 + floor(pitch_fr / 2) - (RES4_PITCH_12K8 * 2) + ((RES4_PITCH_12K8 - MIN_PITCH_12K8) * 4); + } else { + pitch_index = pitch_int - RES2_PITCH_12K8 + ((RES4_PITCH_12K8 - MIN_PITCH_12K8) * 4) + ((RES2_PITCH_12K8 - RES4_PITCH_12K8) * 2); + } + + assert(pitch_index >= 0 && pitch_index < 512); + pitch = (LC3_FLOAT) pitch_int + (LC3_FLOAT) pitch_fr / 4.0; + + + for (n = 0; n < acflen; n++) + { + currFrame[n] = x[n + 1] * enc_inter_filter[0][0] + + x[n] * enc_inter_filter[0][1] + + x[n - 1] * enc_inter_filter[0][2]; + + predFrame[n] = x[n - pitch_int + 1] * enc_inter_filter[pitch_fr][0] + + x[n - pitch_int] * enc_inter_filter[pitch_fr][1] + + x[n - pitch_int - 1] * enc_inter_filter[pitch_fr][2] + + x[n - pitch_int - 2] * enc_inter_filter[pitch_fr][3]; + } + + /* Normalized Correlation */ + sum1 = sum2 = sum3 = 0; + + for (i = 0; i < acflen; i++) { + sum1 += currFrame[i] * predFrame[i]; + } + + for (i = 0; i < acflen; i++) { + sum2 += currFrame[i] * currFrame[i]; + } + + for (i = 0; i < acflen; i++) { + sum3 += predFrame[i] * predFrame[i]; + } + + sum2 = LC3_SQRT(sum2 * sum3) + LC3_POW(10, -5); + norm_corr = sum1 / sum2; + + assert(norm_corr >= -1.00001 && norm_corr <= 1.00001); + norm_corr = MIN(1, MAX(-1, norm_corr)); + if (norm_corr < 0) { + norm_corr = 0; + } + + if (ltpf_enable == 1) { + /* Decision if ltpf active */ + if ((*mem_on == 0 && (frame_dms == 100 || *mem_norm_corr_past_past > 0.94) && *mem_norm_corr_past > 0.94 && + norm_corr > 0.94) || + (*mem_on == 1 && norm_corr > 0.9) || + (*mem_on == 1 && LC3_FABS(pitch - *mem_pitch) < 2 && (norm_corr - *mem_norm_corr_past) > -0.1 && + norm_corr > 0.84)) { + ltpf_active = 1; + } + } + + gain = 4; + + } else { + gain = 0; + norm_corr = pitch_ol_norm_corr; + pitch = 0; + } + + if (gain > 0) { + param[0] = 1; + param[1] = ltpf_active; + param[2] = pitch_index; + *bits = 11; + } else { + zero_int(param, 3); + + *bits = 1; + } + + if (frame_dms < 100) { + *mem_norm_corr_past_past = *mem_norm_corr_past; + } + + *mem_norm_corr_past = norm_corr; + *mem_on = ltpf_active; + *mem_pitch = pitch; +} diff --git a/lc3plus/ltpf_decoder.c b/lc3plus/ltpf_decoder.c new file mode 100644 index 0000000000000000000000000000000000000000..a40c85213a13afa678bd1e4cbff6a62b5169086a --- /dev/null +++ b/lc3plus/ltpf_decoder.c @@ -0,0 +1,356 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void process_ltpf_decoder_fl(LC3_FLOAT* x, LC3_INT xLen, LC3_FLOAT* y, LC3_INT fs, LC3_FLOAT* mem_old_x, LC3_FLOAT* mem_old_y, + LC3_INT* mem_pitch_int, LC3_INT* mem_pitch_fr, LC3_FLOAT* mem_gain, LC3_INT* mem_beta_idx, LC3_INT bfi, + LC3_INT* param, LC3_INT* mem_param, LC3_INT conf_beta_idx, LC3_FLOAT conf_beta, LC3_INT concealMethod, + LC3_FLOAT damping + , LC3_INT *mem_ltpf_active +) +{ + LC3_INT i = 0, j = 0, n = 0, N = 0, L_past_x = 0, N4 = 0, N34 = 0, + pitch_int = 0, pitch_fr = 0, p1 = 0, p2 = 0, L_past_y = 0, inter_len = 0, tilt_len = 0, + tilt_len_r = 0, inter_len_r = 0, old_x_len = 0, old_y_len = 0; + + LC3_FLOAT conf_alpha = 0, gain = 0, a1[MAX_LEN] = {0}, a2[MAX_LEN] = {0}, b1[MAX_LEN] = {0}, b2[MAX_LEN] = {0}, + buf_x[4 * MAX_LEN] = {0}, buf_y[4 * MAX_LEN] = {0}, buf_z[4 * MAX_LEN] = {0}, pitch = 0, sum1 = 0, sum2 = 0; + + const LC3_FLOAT *inter_filter[4], *tilt_filter[4]; + + + conf_alpha = 0.85; + + if (bfi != 1) { + /* Decode pitch */ + if (param[0] == 1) { + if (param[2] < (RES4_PITCH_12K8 - MIN_PITCH_12K8) * 4) { + pitch_int = MIN_PITCH_12K8 + floor(param[2] / 4); + pitch_fr = param[2] - ((pitch_int - MIN_PITCH_12K8) * 4); + } else if (param[2] < ((RES4_PITCH_12K8 - MIN_PITCH_12K8) * 4) + ((RES2_PITCH_12K8 - RES4_PITCH_12K8) * 2)) { + param[2] = param[2] - ((RES4_PITCH_12K8 - MIN_PITCH_12K8) * 4); + pitch_int = RES4_PITCH_12K8 + floor(param[2] / 2); + pitch_fr = param[2] - ((pitch_int - RES4_PITCH_12K8) * 2); + pitch_fr = pitch_fr * 2; + } else { + pitch_int = + param[2] + (RES2_PITCH_12K8 - ((RES4_PITCH_12K8 - MIN_PITCH_12K8) * 4) - ((RES2_PITCH_12K8 - RES4_PITCH_12K8) * 2)); + pitch_fr = 0; + } + + pitch = ((LC3_FLOAT)pitch_int + (LC3_FLOAT)pitch_fr / 4.0) * (LC3_FLOAT)fs / 12800.0; + pitch = round(pitch * 4.0) / 4.0; + pitch_int = floor(pitch); + pitch_fr = (LC3_INT)((pitch - (LC3_FLOAT)pitch_int) * 4.0); + } else { + pitch_int = 0; + pitch_fr = 0; + } + + /* Decode gain */ + if (conf_beta_idx < 0) { + param[1] = 0; + } + + if (param[1] == 1) { + gain = conf_beta; + } else { + gain = 0; + } + } + else if (concealMethod > 0) { + if (conf_beta_idx < 0) { + if (mem_param[1] && *mem_beta_idx >= 0) + { + conf_beta_idx = *mem_beta_idx; + } + } + + memmove(param, mem_param, sizeof(LC3_INT32) * 3); + if (concealMethod == 2) + { + /* cause the ltpf to "fade_out" and only filter during initial 2.5 ms and then its buffer during 7.5 ms */ + assert(bfi == 1); + param[1] = 0; /* ltpf_active = 0 */ + } + + pitch_int = *mem_pitch_int; + pitch_fr = *mem_pitch_fr; + gain = (LC3_FLOAT) *mem_gain * damping; + } + + if ((conf_beta <= 0) && (*mem_ltpf_active == 0)) + { + if (fs == 8000 || fs == 16000) { + tilt_len = 4 - 2; + } + else if (fs == 24000) { + tilt_len = 6 - 2; + } + else if (fs == 32000) { + tilt_len = 8 - 2; + } + else if (fs == 44100 || fs == 48000) { + tilt_len = 12 - 2; + } + + N = xLen; + old_x_len = tilt_len; + inter_len = MAX(fs, 16000) / 8000; + old_y_len = ceilf((LC3_FLOAT)228.0 * fs / 12800.0) + inter_len; /* 228.0 needed to make use of ceil */ + + move_float(mem_old_y, &mem_old_y[N], (old_y_len - N)); + move_float(&mem_old_y[old_y_len - N], x, N); + move_float(mem_old_x, &x[N - old_x_len], old_x_len); + + *mem_ltpf_active = 0; + } + else + { + inter_len_r = 0; tilt_len_r = 0; + if (fs == 8000 || fs == 16000) { + inter_filter[0] = conf_inter_filter_16[0]; + inter_filter[1] = conf_inter_filter_16[1]; + inter_filter[2] = conf_inter_filter_16[2]; + inter_filter[3] = conf_inter_filter_16[3]; + inter_len_r = 4; + + tilt_filter[0] = conf_tilt_filter_16[0]; + tilt_filter[1] = conf_tilt_filter_16[1]; + tilt_filter[2] = conf_tilt_filter_16[2]; + tilt_filter[3] = conf_tilt_filter_16[3]; + tilt_len = 4 - 2; + tilt_len_r = 3; + } else if (fs == 24000) { + inter_filter[0] = conf_inter_filter_24[0]; + inter_filter[1] = conf_inter_filter_24[1]; + inter_filter[2] = conf_inter_filter_24[2]; + inter_filter[3] = conf_inter_filter_24[3]; + inter_len_r = 6; + + tilt_filter[0] = conf_tilt_filter_24[0]; + tilt_filter[1] = conf_tilt_filter_24[1]; + tilt_filter[2] = conf_tilt_filter_24[2]; + tilt_filter[3] = conf_tilt_filter_24[3]; + tilt_len = 6 - 2; + tilt_len_r = 5; + } else if (fs == 32000) { + inter_filter[0] = conf_inter_filter_32[0]; + inter_filter[1] = conf_inter_filter_32[1]; + inter_filter[2] = conf_inter_filter_32[2]; + inter_filter[3] = conf_inter_filter_32[3]; + inter_len_r = 8; + + tilt_filter[0] = conf_tilt_filter_32[0]; + tilt_filter[1] = conf_tilt_filter_32[1]; + tilt_filter[2] = conf_tilt_filter_32[2]; + tilt_filter[3] = conf_tilt_filter_32[3]; + tilt_len = 8 - 2; + tilt_len_r = 7; + } else if (fs == 44100 || fs == 48000) { + inter_filter[0] = conf_inter_filter_48[0]; + inter_filter[1] = conf_inter_filter_48[1]; + inter_filter[2] = conf_inter_filter_48[2]; + inter_filter[3] = conf_inter_filter_48[3]; + inter_len_r = 12; + + tilt_filter[0] = conf_tilt_filter_48[0]; + tilt_filter[1] = conf_tilt_filter_48[1]; + tilt_filter[2] = conf_tilt_filter_48[2]; + tilt_filter[3] = conf_tilt_filter_48[3]; + tilt_len = 12 - 2; + tilt_len_r = 11; + } + + inter_len = MAX(fs, 16000) / 8000; + + /* Init buffers */ + N = xLen; + old_x_len = tilt_len; + old_y_len = ceilf(228.0 * fs / 12800.0) + inter_len; + L_past_x = old_x_len; + move_float(buf_x, mem_old_x, old_x_len); + move_float(&buf_x[old_x_len], x, xLen); + L_past_y = old_y_len; + move_float(buf_y, mem_old_y, old_y_len); + zero_float(&buf_y[old_y_len], xLen); + + N4 = fs * 0.0025; + N34 = N - N4; + + /* Init filter parameters */ + if (mem_param[1] == 1) { + for (i = 0; i < inter_len_r; i++) { + a1[i] = *mem_gain * inter_filter[*mem_pitch_fr][i]; + } + + for (i = 0; i < tilt_len_r; i++) { + b1[i] = conf_alpha * (*mem_gain) * tilt_filter[*mem_beta_idx][i]; + } + + p1 = *mem_pitch_int; + } + + if (param[1] == 1) { + for (i = 0; i < tilt_len_r; i++) { + b2[i] = conf_alpha * gain * tilt_filter[conf_beta_idx][i]; + } + + for (i = 0; i < inter_len_r; i++) { + a2[i] = gain * inter_filter[pitch_fr][i]; + } + + p2 = pitch_int; + } + + /* First quarter of the current frame: cross-fading */ + if (mem_param[1] == 0 && param[1] == 0) { + memmove(&buf_y[L_past_y], &buf_x[L_past_x], sizeof(LC3_FLOAT) * N4); + + } else if (mem_param[1] == 1 && param[1] == 0) { + for (n = 0; n < N4; n++) { + sum1 = 0; + sum2 = 0; + j = 0; + for (i = L_past_x + n; i >= L_past_x + n - tilt_len; i--) { + sum1 += b1[j] * buf_x[i]; + j++; + } + + j = 0; + for (i = L_past_y + n - p1 + inter_len - 1; i >= L_past_y + n - p1 - inter_len; i--) { + sum2 += a1[j] * buf_y[i]; + j++; + } + + buf_y[L_past_y + n] = buf_x[L_past_x + n] - (((LC3_FLOAT)N4 - (LC3_FLOAT)n) / (LC3_FLOAT)N4) * sum1 + + (((LC3_FLOAT)N4 - (LC3_FLOAT)n) / (LC3_FLOAT)N4) * sum2; + } + + } else if (mem_param[1] == 0 && param[1] == 1) { + for (n = 0; n < N4; n++) { + sum1 = 0; + sum2 = 0; + j = 0; + for (i = L_past_x + n; i >= L_past_x + n - tilt_len; i--) { + sum1 += b2[j] * buf_x[i]; + j++; + } + + j = 0; + for (i = L_past_y + n - p2 + inter_len - 1; i >= L_past_y + n - p2 - inter_len; i--) { + sum2 += a2[j] * buf_y[i]; + j++; + } + + buf_y[L_past_y + n] = buf_x[L_past_x + n] - ((LC3_FLOAT)n / (LC3_FLOAT)N4) * sum1 + ((LC3_FLOAT)n / (LC3_FLOAT)N4) * sum2; + } + } else if (*mem_pitch_int == pitch_int && *mem_pitch_fr == pitch_fr) { + for (n = 0; n < N4; n++) { + sum1 = 0; + sum2 = 0; + j = 0; + for (i = L_past_x + n; i >= L_past_x + n - tilt_len; i--) { + sum1 += b2[j] * buf_x[i]; + j++; + } + + j = 0; + for (i = L_past_y + n - p2 + inter_len - 1; i >= L_past_y + n - p2 - inter_len; i--) { + sum2 += a2[j] * buf_y[i]; + j++; + } + + buf_y[L_past_y + n] = buf_x[L_past_x + n] - sum1 + sum2; + } + } else { + for (n = 0; n < N4; n++) { + sum1 = 0; + sum2 = 0; + j = 0; + for (i = L_past_x + n; i >= L_past_x + n - tilt_len; i--) { + sum1 += b1[j] * buf_x[i]; + j++; + } + + j = 0; + for (i = L_past_y + n - p1 + inter_len - 1; i >= L_past_y + n - p1 - inter_len; i--) { + sum2 += a1[j] * buf_y[i]; + j++; + } + + buf_y[L_past_y + n] = buf_x[L_past_x + n] - (((LC3_FLOAT)N4 - (LC3_FLOAT)n) / (LC3_FLOAT)N4) * sum1 + + (((LC3_FLOAT)N4 - (LC3_FLOAT)n) / (LC3_FLOAT)N4) * sum2; + } + + memmove(buf_z, buf_y, sizeof(LC3_FLOAT) * 4 * MAX_LEN); + + for (n = 0; n < N4; n++) { + sum1 = 0; + sum2 = 0; + j = 0; + for (i = L_past_y + n; i >= L_past_y + n - tilt_len; i--) { + sum1 += b2[j] * buf_z[i]; + j++; + } + + j = 0; + for (i = L_past_y + n - p2 + inter_len - 1; i >= L_past_y + n - p2 - inter_len; i--) { + sum2 += a2[j] * buf_y[i]; + j++; + } + + buf_y[L_past_y + n] = buf_z[L_past_y + n] - ((LC3_FLOAT)n / (LC3_FLOAT)N4) * sum1 + ((LC3_FLOAT)n / (LC3_FLOAT)N4) * sum2; + } + } + + /* Second quarter of the current frame */ + if (param[1] == 0) { + memmove(&buf_y[L_past_y + N4], &buf_x[L_past_x + N4], + sizeof(LC3_FLOAT) * ((L_past_x + N4 + N34) - (L_past_x + N4))); + } else { + for (n = 0; n < N34; n++) { + sum1 = 0; + sum2 = 0; + j = 0; + for (i = L_past_x + N4 + n; i >= L_past_x + n + N4 - tilt_len; i--) { + sum1 += b2[j] * buf_x[i]; + j++; + } + + j = 0; + for (i = L_past_y + N4 + n - p2 + inter_len - 1; i >= L_past_y + N4 + n - p2 - inter_len; i--) { + sum2 += a2[j] * buf_y[i]; + j++; + } + + buf_y[L_past_y + N4 + n] = buf_x[L_past_x + N4 + n] - sum1 + sum2; + } + } + + /* Output */ + move_float(y, &buf_y[L_past_y], N); + + /* Update memory */ + move_float(mem_old_x, &buf_x[N], old_x_len); + move_float(mem_old_y, &buf_y[N], old_y_len); + + *mem_ltpf_active = (conf_beta > 0); + } + + /* Update ltpf param memory */ + move_int(mem_param, param, 3); + *mem_pitch_int = pitch_int; + *mem_pitch_fr = pitch_fr; + *mem_gain = gain; + *mem_beta_idx = conf_beta_idx; +} diff --git a/lc3plus/mdct.c b/lc3plus/mdct.c new file mode 100644 index 0000000000000000000000000000000000000000..11618b9465d4e3303f4251a50142f1f3b2954f31 --- /dev/null +++ b/lc3plus/mdct.c @@ -0,0 +1,128 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static const LC3_FLOAT* mdct_window(LC3_INT length, LC3_INT frame_dms, LC3_INT hrmode) +{ + if (frame_dms == 100) { + switch (length) { + case 80: + return MDCT_WINS_10ms[hrmode][0]; + case 160: + return MDCT_WINS_10ms[hrmode][1]; + case 240: + return MDCT_WINS_10ms[hrmode][2]; + case 320: + return MDCT_WINS_10ms[hrmode][3]; + case 480: + return MDCT_WINS_10ms[hrmode][4]; + case 960: + return MDCT_WINS_10ms[hrmode][5]; + default: + return NULL; + } + } + else if (frame_dms == 50) { + switch (length) { + case 40: + return MDCT_WINS_5ms[hrmode][0]; + case 80: + return MDCT_WINS_5ms[hrmode][1]; + case 120: + return MDCT_WINS_5ms[hrmode][2]; + case 160: + return MDCT_WINS_5ms[hrmode][3]; + case 240: + return MDCT_WINS_5ms[hrmode][4]; + case 480: + return MDCT_WINS_5ms[hrmode][5]; + default: + return NULL; + } + } + else if (frame_dms == 25) { + switch (length) { + case 20: + return MDCT_WINS_2_5ms[hrmode][0]; + case 40: + return MDCT_WINS_2_5ms[hrmode][1]; + case 60: + return MDCT_WINS_2_5ms[hrmode][2]; + case 80: + return MDCT_WINS_2_5ms[hrmode][3]; + case 120: + return MDCT_WINS_2_5ms[hrmode][4]; + case 240: + return MDCT_WINS_2_5ms[hrmode][5]; + default: + return NULL; + } + } + return NULL; +} + +void mdct_init(Mdct* mdct, LC3_INT length, LC3_INT frame_dms, LC3_INT fs_idx, LC3_INT hrmode) +{ + if (frame_dms == 100) { + mdct->leading_zeros = MDCT_la_zeroes[fs_idx]; + } + else if (frame_dms == 50) { + mdct->leading_zeros = MDCT_la_zeroes_5ms[fs_idx]; + } + else if (frame_dms == 25) { + mdct->leading_zeros = MDCT_la_zeroes_2_5ms[fs_idx]; + } + else { + assert(!"invalid frame_ms"); + } + + mdct->length = length; + mdct->mem_length = length - mdct->leading_zeros; + mdct->window = mdct_window(length, frame_dms, hrmode); + mdct->mem = calloc(sizeof(*mdct->mem), mdct->mem_length); + dct4_init(&mdct->dct, length); +} + +void mdct_free(Mdct* mdct) +{ + if (mdct) { + free(mdct->mem); + dct4_free(&mdct->dct); + memset(mdct, 0, sizeof(*mdct)); + } +} + +void mdct_apply(const LC3_FLOAT* input, LC3_FLOAT* output, Mdct* mdct) +{ + LC3_FLOAT tmp[MAX_LEN * 2] = {0}; + LC3_INT i = 0; + LC3_INT hlen; + + move_float(tmp, mdct->mem, mdct->mem_length); + move_float(tmp + mdct->mem_length, input, mdct->length); + zero_float(tmp + mdct->length * 2 - mdct->leading_zeros, mdct->leading_zeros); + move_float(mdct->mem, tmp + mdct->length, mdct->mem_length); + + mult_vec(tmp, mdct->window, mdct->length * 2); + + hlen = mdct->length / 2; + for (i = 0; i < hlen; i++) { + output[i] = -tmp[hlen * 3 - i - 1] - tmp[hlen * 3 + i]; + output[hlen + i] = tmp[i] - tmp[hlen * 2 - i - 1]; + } + + move_float(tmp, output, mdct->length); + + dct4_apply(&mdct->dct, tmp, output); +} + +void processMdct_fl(LC3_FLOAT* in, LC3_FLOAT* out, Mdct* mdctStruct) { mdct_apply(in, out, mdctStruct); } diff --git a/lc3plus/mdct_shaping.c b/lc3plus/mdct_shaping.c new file mode 100644 index 0000000000000000000000000000000000000000..18761925042015e48be9b8e9f9bbb2ea46a0e376 --- /dev/null +++ b/lc3plus/mdct_shaping.c @@ -0,0 +1,23 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processMdctShaping_fl(LC3_FLOAT x[], LC3_FLOAT scf[], const LC3_INT bands_offset[], LC3_INT fdns_npts) +{ + LC3_INT i = 0, j = 0; + + for (i = 0; i < fdns_npts; i++) { + for (; j < bands_offset[i + 1]; j++) { + x[j] = x[j] * scf[i]; + } + } +} diff --git a/lc3plus/near_nyquist_detector.c b/lc3plus/near_nyquist_detector.c new file mode 100644 index 0000000000000000000000000000000000000000..ce94351302bcce089ac5c764420ae8fb4487cff2 --- /dev/null +++ b/lc3plus/near_nyquist_detector.c @@ -0,0 +1,38 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "options.h" + + +void processNearNyquistdetector_fl(LC3_INT16* near_nyquist_flag, const LC3_INT fs_idx, const LC3_INT near_nyquist_index, + const LC3_INT bands_number, const LC3_FLOAT* ener) +{ + *near_nyquist_flag = 0; + + if (fs_idx < 4) + { + LC3_INT i = 0; + LC3_FLOAT ener_low = FLT_EPSILON, ener_high = 0; + + for (i=0; i NN_thresh * ener_low){ + *near_nyquist_flag = 1; + } + } +} diff --git a/lc3plus/noise_factor.c b/lc3plus/noise_factor.c new file mode 100644 index 0000000000000000000000000000000000000000..c5aa582e456812b02a60d7a27d3ad935e55fb210 --- /dev/null +++ b/lc3plus/noise_factor.c @@ -0,0 +1,112 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processNoiseFactor_fl(LC3_INT* fac_ns_idx, LC3_FLOAT x[], LC3_INT xq[], LC3_FLOAT gg, LC3_INT BW_cutoff_idx, LC3_INT frame_dms, + LC3_INT target_bytes +) +{ + LC3_INT sumZeroLines = 0, kZeroLines = 0, startOffset = 0, nTransWidth = 0, end = 0, start = 0, i = 0, j = 0, k = 0, + allZeros = 0, m = 0; + LC3_FLOAT fac_ns_unq = 0, mean = 0, idx = 0, nsf1 = 0, nsf2 = 0; + LC3_INT zeroLines[MAX_LEN] = {0}, zL1[MAX_LEN] = {0}, zL2[MAX_LEN] = {0}; + + switch (frame_dms) + { + case 25: + nTransWidth = 4; + startOffset = 6; + break; + case 50: + nTransWidth = 4; + startOffset = 12; + break; + case 100: + nTransWidth = 8; + startOffset = 24; + break; + } + + for (k = startOffset; k < BW_cutoff_idx; k++) { + allZeros = 1; + + start = k - (nTransWidth - 2) / 2; + end = MIN(BW_cutoff_idx - 1, k + (nTransWidth - 2) / 2); + + for (i = start; i <= end; i++) { + if (xq[i] != 0) { + allZeros = 0; + } + } + + if (allZeros == 1) { + zeroLines[j] = k + 1; + kZeroLines++; + j++; + } + } + + for (i = 0; i < kZeroLines; i++) { + sumZeroLines += zeroLines[i]; + } + + if (sumZeroLines > 0) { + for (j = 0; j < kZeroLines; j++) { + mean += LC3_FABS(x[zeroLines[j] - 1]); + } + + fac_ns_unq = mean / (gg * kZeroLines); + } else { + fac_ns_unq = 0; + } + + if (kZeroLines > 0) + { + if (target_bytes <= 20 && frame_dms == 100) { + j = 0, k = 0; + m = floor(sumZeroLines / kZeroLines); + + for (i = 0; i < kZeroLines; i++) { + if (zeroLines[i] <= m) { + zL1[j] = zeroLines[i]; + j++; + } + + if (zeroLines[i] > m) { + zL2[k] = zeroLines[i]; + k++; + } + } + + mean = 0; + for (i = 0; i < j; i++) { + mean += LC3_FABS(x[zL1[i] - 1]) / gg; + } + + nsf1 = mean / j; + + mean = 0; + for (i = 0; i < k; i++) { + mean += LC3_FABS(x[zL2[i] - 1]) / gg; + } + + nsf2 = mean / k; + + fac_ns_unq = MIN(nsf1, nsf2); + } + } + + idx = round(8 - 16 * fac_ns_unq); + idx = MIN(MAX(idx, 0), 7); + + *fac_ns_idx = idx; +} diff --git a/lc3plus/noise_filling.c b/lc3plus/noise_filling.c new file mode 100644 index 0000000000000000000000000000000000000000..7fac5e0f72de7b66130fcbbd93ee99e794543d3e --- /dev/null +++ b/lc3plus/noise_filling.c @@ -0,0 +1,81 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processNoiseFilling_fl(LC3_FLOAT xq[], LC3_INT nfseed, LC3_INT fac_ns_idx, LC3_INT bw_stopband, LC3_INT frame_dms, LC3_FLOAT fac_ns_pc, LC3_INT spec_inv_idx) +{ + LC3_INT zeroLines[MAX_LEN] = {0}; + LC3_INT nTransWidth = 0, startOffset = 0, i = 0, j = 0, k = 0, start = 0, end = 0, allZeros = 0, kZeroLines = 0; + LC3_FLOAT fac_ns = 0; + + switch (frame_dms) + { + case 25: + nTransWidth = 1; + startOffset = 6; + break; + case 50: + nTransWidth = 1; + startOffset = 12; + break; + case 100: + nTransWidth = 3; + startOffset = 24; + break; + } + + fac_ns = (8.0 - fac_ns_idx) / 16.0; + + j = 0; + + for (k = startOffset; k < bw_stopband; k++) { + allZeros = 1; + + start = k - nTransWidth; + end = MIN(bw_stopband - 1, k + nTransWidth); + + for (i = start; i <= end; i++) { + if (xq[i] != 0) { + allZeros = 0; + } + } + + if (allZeros == 1) { + zeroLines[j] = k; + kZeroLines++; + j++; + } + } + + for (k = 0; k < kZeroLines; k++) { + nfseed = (13849 + (nfseed + 32768) * 31821) & 65535; + nfseed -= 32768; + + if (nfseed >= 0) { + if (zeroLines[k] < spec_inv_idx) + { + xq[zeroLines[k]] = fac_ns; + } else { + xq[zeroLines[k]] = fac_ns_pc; + } + } else { + if (zeroLines[k] < spec_inv_idx) + { + xq[zeroLines[k]] = -fac_ns; + } else { + xq[zeroLines[k]] = -fac_ns_pc; + } + } + } + + return; +} diff --git a/lc3plus/olpa.c b/lc3plus/olpa.c new file mode 100644 index 0000000000000000000000000000000000000000..6bec50952e5966214080221eb36e156b9ba0b176 --- /dev/null +++ b/lc3plus/olpa.c @@ -0,0 +1,144 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static void filter_olpa(LC3_FLOAT* in, LC3_FLOAT* out, const LC3_FLOAT* buf, LC3_FLOAT len_buf, LC3_INT len_input); +static LC3_INT searchMaxIndice(LC3_FLOAT* in, LC3_INT len); + +void filter_olpa(LC3_FLOAT* in, LC3_FLOAT* out, const LC3_FLOAT* buf, LC3_FLOAT len_buf, LC3_INT len_input) +{ + LC3_INT i = 0, j = 0; + LC3_FLOAT sum = 0; + /* a = 1, so denominator == 1, nothing to do here */ + + for (i = 0; i < len_input; i++) { + j = 0; + sum = 0; + for (j = 0; (j < len_buf) && (j <= i); j++) { + sum += buf[j] * in[i - j]; + } + + out[i] = sum; + } +} + +LC3_INT searchMaxIndice(LC3_FLOAT* in, LC3_INT len) +{ + LC3_INT max_i = 0, i = 0; + LC3_FLOAT max = in[0]; + + if (len <= 0) { + return -128; + } + + for (i = 0; i < len; i++) { + if (in[i] > max) { + max = in[i]; + max_i = i; + } + } + + return max_i; +} + +void processOlpa_fl(LC3_FLOAT* s_12k8, LC3_FLOAT* mem_s12k8, LC3_FLOAT* mem_s6k4, LC3_INT* mem_old_T0, LC3_INT* T0_out, + LC3_FLOAT* normcorr_out, LC3_INT len, LC3_INT frame_dms) +{ + LC3_FLOAT norm_corr = 0, sum = 0, sum0 = 0, sum1 = 0, sum2 = 0, norm_corr2 = 0, *s6k4; + LC3_FLOAT buf[LEN_6K4 + MAX_PITCH_6K4] = {0}, filt_out[LEN_12K8 + 3] = {0}, d_wsp[LEN_6K4] = {0}, R0[RANGE_PITCH_6K4] = {0}, R[RANGE_PITCH_6K4] = {0}; /* constant length */ + LC3_INT i = 0, j = 0, len2 = 0, T0 = 0, T02 = 0, min_pitch = 0, max_pitch = 0, L = 0, mem_in_len = 0, acflen = 0; + + + mem_in_len = MAX_PITCH_6K4; + len2 = len / 2; + acflen = len2; + if (frame_dms == 25) + { + mem_in_len += 16; + acflen += 16; + } + + /* Downsampling */ + move_float(buf, mem_s12k8, 3); + move_float(&buf[3], s_12k8, len); + move_float(mem_s12k8, &buf[len], 3); + filter_olpa(buf, filt_out, olpa_down2, 5, len + 3); + for (i = 4, j = 0; i < len + 3; i = i + 2) { + d_wsp[j] = filt_out[i]; + j++; + } + + /* Compute autocorrelation */ + s6k4 = &buf[mem_in_len]; + move_float(buf, mem_s6k4, mem_in_len); + move_float(s6k4, d_wsp, len2); + move_float(mem_s6k4, &buf[len2], mem_in_len); + if (frame_dms == 25) + { + s6k4 = s6k4 - 16; + } + for (i = MIN_PITCH_6K4; i <= MAX_PITCH_6K4; i++) { + sum = 0; + for (j = 0; j < acflen; j++) { + sum += s6k4[j] * s6k4[j - i]; + } + R0[i - MIN_PITCH_6K4] = sum; + } + + /* Weight autocorrelation and find maximum */ + move_float(R, R0, RANGE_PITCH_6K4); + for (i = 0; i < RANGE_PITCH_6K4; i++) { + R0[i] = R0[i] * olpa_acw[i]; + } + L = searchMaxIndice(R0, RANGE_PITCH_6K4); + T0 = L + MIN_PITCH_6K4; + + /* Compute normalized correlation */ + sum0 = sum1 = sum2 = 0; + for (i = 0; i < acflen; i++) { + sum0 += s6k4[i] * s6k4[i - T0]; + sum1 += s6k4[i - T0] * s6k4[i - T0]; + sum2 += s6k4[i] * s6k4[i]; + } + sum1 = sum1 * sum2; + sum1 = LC3_SQRT(sum1) + LC3_POW(10.0, -5.0); + norm_corr = sum0 / sum1; + norm_corr = MAX(0, norm_corr); + + /* Second try in the neighborhood of the previous pitch */ + min_pitch = MAX(MIN_PITCH_6K4, *mem_old_T0 - 4); + max_pitch = MIN(MAX_PITCH_6K4, *mem_old_T0 + 4); + L = searchMaxIndice(&R[min_pitch - MIN_PITCH_6K4], max_pitch - min_pitch + 1 ); + T02 = L + min_pitch; + + if (T02 != T0) { + sum0 = sum1 = sum2 = 0; + for (i = 0; i < acflen; i++) { + sum0 += s6k4[i] * s6k4[i - T02]; + sum1 += s6k4[i - T02] * s6k4[i - T02]; + sum2 += s6k4[i] * s6k4[i]; + } + sum1 = sum1 * sum2; + sum1 = LC3_SQRT(sum1) + LC3_POW(10.0, -5.0); + norm_corr2 = sum0 / sum1; + norm_corr2 = MAX(0, norm_corr2); + + if (norm_corr2 > (norm_corr * 0.85)) { + T0 = T02; + norm_corr = norm_corr2; + } + } + + *mem_old_T0 = T0; + *T0_out = T0 * 2.0; + *normcorr_out = norm_corr; +} diff --git a/lc3plus/pc_apply.c b/lc3plus/pc_apply.c new file mode 100644 index 0000000000000000000000000000000000000000..1d1bc40005b4d9382cb951570a6dbf569d5ab19a --- /dev/null +++ b/lc3plus/pc_apply.c @@ -0,0 +1,73 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processPcApply_fl(LC3_FLOAT *q_res, LC3_FLOAT *q_old_res, LC3_FLOAT *q_d_prev, LC3_INT32 spec_inv_idx, LC3_INT32 yLen, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_FLOAT *prev_gg, LC3_FLOAT *fac, LC3_INT32 *pc_nbLostCmpt) +{ + LC3_FLOAT gg, mean_nrg_low, mean_nrg_high, ener_prev, ener_curr, fac_local; + LC3_INT32 i; + + ener_prev = 0; ener_curr = 0; mean_nrg_low = 0; mean_nrg_high = 0; + + *pc_nbLostCmpt = *pc_nbLostCmpt + 1; + + assert(spec_inv_idx > 1); + + gg = LC3_POW(10, (((LC3_FLOAT) (gg_idx + gg_idx_off)) / 28.0)); + + for (i = 0; i < spec_inv_idx; i++) + { + mean_nrg_low += LC3_POW(q_d_prev[i], 2); + } + + mean_nrg_low /= (LC3_FLOAT) spec_inv_idx; + + if (spec_inv_idx < yLen) + { + for (i = spec_inv_idx; i < yLen; i++) + { + mean_nrg_high += LC3_POW(q_d_prev[i], 2); + } + } + + mean_nrg_high /= (LC3_FLOAT) (yLen - spec_inv_idx); + + for (i = 0; i < spec_inv_idx; i++) + { + ener_prev += LC3_POW(q_old_res[i], 2); + ener_curr += LC3_POW(q_res[i], 2); + } + + *fac = 1; + if (ener_prev > 0) + { + *fac = LC3_SQRT(ener_curr / ener_prev); + } + + fac_local = *fac; + if (mean_nrg_low <= mean_nrg_high || ener_prev * LC3_POW(*prev_gg, 2) <= ener_curr * LC3_POW(gg, 2)) + { + fac_local = *prev_gg / gg; + } + + for (i = spec_inv_idx; i < yLen; i++) + { + q_res[i] = q_old_res[i] * fac_local; + + if (LC3_FABS(q_res[i]) < (1 - 0.375)) + { + q_res[i] = 0; + } + } +} + diff --git a/lc3plus/pc_classify.c b/lc3plus/pc_classify.c new file mode 100644 index 0000000000000000000000000000000000000000..71196edb89692cf1ebdbf8a1508e31174e92b8ae --- /dev/null +++ b/lc3plus/pc_classify.c @@ -0,0 +1,170 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +LC3_FLOAT pc_peak_detector(LC3_FLOAT *q_d_prev, LC3_INT32 yLen); + +void processPcClassify_fl(LC3_INT32 pitch_present, LC3_INT32 frame_dms, LC3_FLOAT *q_d_prev, LC3_FLOAT *q_old_res, LC3_INT32 yLen, LC3_INT32 spec_inv_idx, LC3_FLOAT stab_fac, LC3_INT32 *bfi) +{ + LC3_INT32 maxPitchBin, xover, i; + LC3_FLOAT part_nrg, full_nrg; + + part_nrg = 0; full_nrg = 0; + + if (spec_inv_idx < (4 * frame_dms / 10)) + { + if (stab_fac < 0.5) + { + *bfi = 1; + } else if (pitch_present == 1) + { + maxPitchBin = 8; + if (frame_dms == 50) + { + maxPitchBin = 4; + } + xover = pc_peak_detector(q_d_prev, yLen); + if (spec_inv_idx < xover || spec_inv_idx < maxPitchBin) + { + *bfi = 1; + } + } else { + for (i = 0; i < spec_inv_idx; i++) + { + part_nrg += LC3_POW(q_old_res[i], 2); + } + + for (i = 0; i < yLen; i++) + { + full_nrg += LC3_POW(q_old_res[i], 2); + } + + if (part_nrg < (0.3 * full_nrg)) + { + *bfi = 1; + } + } + } +} + +LC3_FLOAT pc_peak_detector(LC3_FLOAT *q_d_prev, LC3_INT32 yLen) +{ + LC3_INT32 block_size, thresh1, i, peak, j, k; + LC3_FLOAT fac, mean_block_nrg, cur_max, block_cent, maxPeak, next_max, prev_max; + + mean_block_nrg = 0; + + block_size = 3; + thresh1 = 8; + fac = 0.3; + + for (i = 0; i < yLen; i++) + { + mean_block_nrg += LC3_POW(q_d_prev[i], 2); + } + + mean_block_nrg /= yLen; + + maxPeak = 0; + peak = 0; + + if (LC3_FABS(q_d_prev[0]) > LC3_FABS(q_d_prev[1])) + { + block_cent = LC3_POW(q_d_prev[0], 2) + LC3_POW(q_d_prev[1], 2); + + if ((block_cent / block_size) > (thresh1 * mean_block_nrg)) + { + cur_max = MAX(LC3_FABS(q_d_prev[0]), LC3_FABS(q_d_prev[1])); + next_max = array_max_abs(&q_d_prev[2], 3); + + if (cur_max > next_max) + { + maxPeak = block_cent; + peak = 1; + } + } + } + + for (i = 0; i < block_size; i++) + { + if ((LC3_FABS(q_d_prev[i + 1]) >= LC3_FABS(q_d_prev[i])) && LC3_FABS(q_d_prev[i + 1]) >= LC3_FABS(q_d_prev[i + 2])) + { + block_cent = 0; + for (j = i; j < i + block_size; j++) + { + block_cent += LC3_POW(q_d_prev[j], 2); + } + + if ((block_cent / block_size) > (thresh1 * mean_block_nrg)) + { + cur_max = array_max_abs(&q_d_prev[i], block_size); + prev_max = 0; + + for (k = i - block_size; k < i; k++) + { + if (k > 0) + { + prev_max = MAX(LC3_FABS(q_d_prev[k]), prev_max); + } + } + next_max = array_max_abs(&q_d_prev[i + block_size], block_size); + + if ((cur_max >= prev_max) && (cur_max > next_max)) + { + if (block_cent > (fac * maxPeak)) + { + peak = i + block_size - 1; + if (block_cent >= maxPeak) + { + maxPeak = block_cent; + } + } + } + } + } + } + + for (i = block_size; i < yLen - (2 * block_size); i++) + { + if ((LC3_FABS(q_d_prev[i + 1]) >= LC3_FABS(q_d_prev[i])) && LC3_FABS(q_d_prev[i + 1]) >= LC3_FABS(q_d_prev[i + 2])) + { + block_cent = 0; + for (j = i; j < i + block_size; j++) + { + block_cent += LC3_POW(q_d_prev[j], 2); + } + + if ((block_cent / block_size) > (thresh1 * mean_block_nrg)) + { + cur_max = array_max_abs(&q_d_prev[i], block_size); + prev_max = array_max_abs(&q_d_prev[i - block_size], block_size); + next_max = array_max_abs(&q_d_prev[i + block_size], block_size); + + if ((cur_max >= prev_max) && (cur_max > next_max)) + { + if (block_cent > (fac * maxPeak)) + { + peak = i + block_size - 1; + if (block_cent >= maxPeak) + { + maxPeak = block_cent; + } + } + } + } + } + } + + return peak; +} + diff --git a/lc3plus/pc_main.c b/lc3plus/pc_main.c new file mode 100644 index 0000000000000000000000000000000000000000..268ee94d2a383cf043d99089da3829907702c9c4 --- /dev/null +++ b/lc3plus/pc_main.c @@ -0,0 +1,43 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processPcMain_fl(LC3_INT32 *bfi, LC3PLUS_Dec* decoder, LC3_FLOAT *sqQdec, DecSetup* h_DecSetup, LC3_INT32 pitch_present, LC3_FLOAT stab_fac, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_INT32 fac_ns_idx, pcState *statePC, LC3_INT32 spec_inv_idx, LC3_INT32 yLen) +{ + LC3_FLOAT fac; + + /* PC Classifier */ + if (*bfi == 2) + { + processPcClassify_fl(pitch_present, decoder->frame_dms, h_DecSetup->PlcSetup.q_d_prev, statePC->q_old_res, decoder->yLen, h_DecSetup->spec_inv_idx, stab_fac, bfi); + } + + /* PC Apply */ + if (*bfi == 2) + { + processPcApply_fl(sqQdec, statePC->q_old_res, h_DecSetup->PlcSetup.q_d_prev, h_DecSetup->spec_inv_idx, decoder->yLen, gg_idx, gg_idx_off, &statePC->prev_gg, &fac, &statePC->ns_nbLostCmpt_pc); + } + + /* PC Update */ + if (*bfi != 1) + { + processPcUpdate_fl(*bfi, sqQdec, gg_idx, gg_idx_off, decoder->rframe, &h_DecSetup->BW_cutoff_idx_nf, &h_DecSetup->prev_BW_cutoff_idx_nf, fac_ns_idx, &h_DecSetup->prev_fac_ns, &fac, statePC->q_old_res, &statePC->prev_gg, spec_inv_idx, yLen); + } + + /* Reset counter */ + if (*bfi == 0) + { + statePC->ns_nbLostCmpt_pc = 0; + } +} + diff --git a/lc3plus/pc_update.c b/lc3plus/pc_update.c new file mode 100644 index 0000000000000000000000000000000000000000..57539b50797673f624e35305a0bddb11614911b2 --- /dev/null +++ b/lc3plus/pc_update.c @@ -0,0 +1,37 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processPcUpdate_fl(LC3_INT32 bfi, LC3_FLOAT *q_res, LC3_INT32 gg_idx, LC3_INT32 gg_idx_off, LC3_INT32 rframe, LC3_INT32 *BW_cutoff_idx_nf, LC3_INT32 *prev_BW_cutoff_idx_nf, + LC3_INT32 fac_ns_idx, LC3_FLOAT *prev_fac_ns, LC3_FLOAT *fac, LC3_FLOAT *q_old_res, LC3_FLOAT *prev_gg, LC3_INT32 spec_inv_idx, LC3_INT32 yLen) +{ + LC3_FLOAT gg; + + gg = LC3_POW(10.0, ((LC3_FLOAT) (gg_idx + gg_idx_off)) / 28.0); + *prev_gg = gg; + move_float(q_old_res, q_res, yLen); + + if (rframe == 0) + { + *prev_BW_cutoff_idx_nf = *BW_cutoff_idx_nf; + *prev_fac_ns = (8.0 - (LC3_FLOAT) fac_ns_idx) / 16.0; + } else if ((bfi == 2) && (*BW_cutoff_idx_nf != *prev_BW_cutoff_idx_nf) && (spec_inv_idx < yLen)) + { + *BW_cutoff_idx_nf = *prev_BW_cutoff_idx_nf; + *prev_fac_ns = *prev_fac_ns * (*fac); + *prev_fac_ns = MAX(*prev_fac_ns, (8.0 - 7.0) / 16.0); + *prev_fac_ns = MIN(*prev_fac_ns, (8.0 - 0.0) / 16.0); + } + +} + diff --git a/lc3plus/per_band_energy.c b/lc3plus/per_band_energy.c new file mode 100644 index 0000000000000000000000000000000000000000..db1b5b2d0f411925327aacd78ace3c30ce239b47 --- /dev/null +++ b/lc3plus/per_band_energy.c @@ -0,0 +1,59 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processPerBandEnergy_fl(LC3_INT bands_number, const LC3_INT* acc_coeff_per_band, LC3_INT16 hrmode, LC3_INT16 frame_dms, LC3_FLOAT* d2, LC3_FLOAT* d) +{ + LC3_INT i = 0, j = 0, start = 0, stop = 0, maxBwBin = 0; + LC3_FLOAT sum = 0; + +# ifdef ENABLE_HR_MODE_FL + if (hrmode) + { + maxBwBin = MAX_BW_HR; + } + else +# else + UNUSED(hrmode); +# endif + { + maxBwBin = MAX_BW; + } + switch (frame_dms) + { +# ifdef ENABLE_2_5MS_MODE + case 25: + maxBwBin = maxBwBin >> 2; + break; +# endif +# ifdef ENABLE_5MS_MODE + case 50: + maxBwBin = maxBwBin >> 1; + break; +# endif + } + + for (i = 0; i < bands_number; i++) { + sum = 0; + start = acc_coeff_per_band[i]; + stop = MIN(acc_coeff_per_band[i + 1], maxBwBin); + + for (j = start; j < stop; j++) { + sum += d[j] * d[j]; + } + + if (stop - start > 0) { + sum = sum / (LC3_FLOAT)(stop - start); + } + d2[i] = sum; + } +} diff --git a/lc3plus/plc_classify.c b/lc3plus/plc_classify.c new file mode 100644 index 0000000000000000000000000000000000000000..619a1f7419b1301242a9bb9264b5f7fe77330c89 --- /dev/null +++ b/lc3plus/plc_classify.c @@ -0,0 +1,199 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +static void plc_xcorr_lc(LC3_FLOAT *pcmbufHist, LC3_INT32 max_len_pcm_plc, LC3_INT32 pitch_int, LC3_INT32 framelength, LC3_INT32 frame_dms, LC3_INT32 fs, LC3_FLOAT *xcorr); +static void spectral_centroid_lc(LC3_FLOAT *gains, LC3_INT32 tilt, const LC3_INT *bands_offset, LC3_INT32 bands_number, LC3_INT32 framelength, LC3_INT32 fs, LC3_FLOAT *sc); + +void processPlcClassify_fl(LC3_INT plcMeth, LC3_INT *concealMethod, LC3_INT32 *nbLostCmpt, LC3_INT32 bfi, + LC3_FLOAT *xcorr, LC3_INT32 framelength, LC3_INT32 frame_dms, LC3_INT32 pitch_int, + LC3_INT32 fs, const LC3_INT *band_offsets, LC3_INT32 bands_number, LC3_INT32 tilt, PlcAdvSetup *plcAd + , LC3_INT32 hrmode +) +{ + LC3_FLOAT sc, class; + + if (plcAd) + { + *xcorr = 0; + } + + if (bfi == 1) + { + *nbLostCmpt = *nbLostCmpt + 1; + + /* Use pitch correlation at ltpf integer lag if available */ + if (*nbLostCmpt == 1) + { + *concealMethod = plcMeth; // this is a dangerous mapping! + + /* Advanced PLC */ + if (pitch_int > 0) + { + *concealMethod = 3; /* Timedomain PLC assumed */ + plc_xcorr_lc(plcAd->pcmbufHist, plcAd->max_len_pcm_plc, pitch_int, framelength, frame_dms, fs, xcorr); + + spectral_centroid_lc(plcAd->scf_q_old, tilt, band_offsets, bands_number, framelength, fs, &sc); + class = *xcorr * 7640.0/32768.0 - sc - 5112.0/32768.0; + + if (class <= 0) + { + if (frame_dms == 100 && hrmode == 0) + { + *concealMethod = 2; /* PhaseEcu selected */ + } + else + { + *concealMethod = 4; /* Noise Substitution */ + } + } + } + else + { + *concealMethod = 4; /* Noise Substitution */ + } + } + } +} + +static void spectral_centroid_lc(LC3_FLOAT *gains, LC3_INT32 tilt, const LC3_INT *band_offsets, LC3_INT32 bands_number, LC3_INT32 framelength, LC3_INT32 fs, LC3_FLOAT *sc) +{ + LC3_FLOAT gains_lin[M], gains_dee[M], numerator, denumerator; + LC3_INT32 i, j, sum, len, start, stop; + LC3_INT band_offsets_local[MAX_BANDS_NUMBER + 1]; + + numerator = 0; + + for (i = 0; i < M; i++) + { + gains_lin[i] = LC3_POW(2, gains[i]); + } + + for (i = 0; i < M; i++) + { + gains_dee[i] = gains_lin[i] / LC3_POW(10, i * (LC3_FLOAT) tilt / (LC3_FLOAT) (M - 1) / 10.0); + } + + if (bands_number == 64) + { + memmove(band_offsets_local, band_offsets, (bands_number + 1) * sizeof(LC3_INT)); + } + + if (bands_number < 32) + { + band_offsets_local[0] = 0; + j = 32 - bands_number; + for (i = bands_number - 1; i >= j; i--) + { + band_offsets_local[(i + j) * 2 + 1 + 1] = band_offsets[i + 1]; + band_offsets_local[(i + j) * 2 + 0 + 1] = band_offsets[i + 1]; + } + for (i = j - 1; i >= 0; i--) + { + band_offsets_local[i * 4 + 3 + 1] = band_offsets[i + 1]; + band_offsets_local[i * 4 + 2 + 1] = band_offsets[i + 1]; + band_offsets_local[i * 4 + 1 + 1] = band_offsets[i + 1]; + band_offsets_local[i * 4 + 0 + 1] = band_offsets[i + 1]; + } + } + else + if (bands_number < 64) + { + band_offsets_local[0] = 0; + j = 64 - bands_number; + for (i = bands_number - 1; i >= j; i--) + { + band_offsets_local[i + j + 1] = band_offsets[i + 1]; + } + for (i = j - 1; i >= 0; i--) + { + band_offsets_local[i * 2 + 1 + 1] = band_offsets[i + 1]; + band_offsets_local[i * 2 + 0 + 1] = band_offsets[i + 1]; + } + } + + denumerator = 0.001; + + for (i = 0; i < M; i++) + { + sum = 0; len = 0; + start = band_offsets_local[i * 4] + 1; stop = band_offsets_local[i * 4 + 4]; + + for (j = stop; j >= start; j--) + { + sum += j; + len++; + } + + numerator += gains_dee[i] * ((LC3_FLOAT) sum / (LC3_FLOAT) framelength); + denumerator += gains_dee[i] * len; + } + + *sc = numerator / denumerator; + *sc = *sc * (LC3_FLOAT) fs / 48000.0; /* scaling, because training is for 48kHz */ +} + +static void plc_xcorr_lc(LC3_FLOAT *pcmbufHist, LC3_INT32 max_len_pcm_plc, LC3_INT32 pitch_int, LC3_INT32 framelength, + LC3_INT32 frame_dms, LC3_INT32 fs, LC3_FLOAT *xcorr) +{ + LC3_INT32 max_corr_len, pitch_min, corr_len, min_corr_len, pcm_max_corr_len, range1Start, range2Start, i; + LC3_FLOAT norm_w, norm_w_t; + + norm_w_t = 0; norm_w = 0; + + assert(pitch_int >= 0); + assert(pitch_int <= MAX_LEN*100*MAX_PITCH_12K8/12800); + + *xcorr = 0; + + if (pitch_int > 0) + { + pitch_min = fs * MIN_PITCH_12K8/12800; + pcm_max_corr_len = max_len_pcm_plc - pitch_int; + + min_corr_len = 2 * pitch_min; /* at least 5 ms (=2*pitchmin*) corr length */ + max_corr_len = framelength*100/frame_dms; /* maximum 10 ms */ + max_corr_len = MIN( max_corr_len, pcm_max_corr_len ); + + corr_len = MIN( max_corr_len, pitch_int ); /* pitch_int is prefered, but maximum 10ms or left pcm buf size */ + corr_len = MAX( min_corr_len, corr_len ); + + range1Start = max_len_pcm_plc - corr_len; + range2Start = range1Start - pitch_int; + + assert( corr_len >= min_corr_len ); + assert( corr_len <= max_corr_len ); + assert( range2Start >= 0 ); + + for (i = 0; i < corr_len; i++) + { + norm_w += pcmbufHist[range1Start + i] * pcmbufHist[range1Start + i]; + } + + for (i = 0; i < corr_len; i++) + { + norm_w_t += pcmbufHist[range2Start + i] * pcmbufHist[range2Start + i]; + } + + for (i = 0; i < corr_len; i++) + { + *xcorr = *xcorr + pcmbufHist[range1Start + i] * pcmbufHist[range2Start + i]; + } + + *xcorr = *xcorr / sqrt(norm_w * norm_w_t + 0.1); + *xcorr = MAX(0, *xcorr); + } else { + *xcorr = 0; + } +} + diff --git a/lc3plus/plc_compute_stab_fac.c b/lc3plus/plc_compute_stab_fac.c new file mode 100644 index 0000000000000000000000000000000000000000..4a1111a2c7317f29d815fe0c0346d314b9e17569 --- /dev/null +++ b/lc3plus/plc_compute_stab_fac.c @@ -0,0 +1,64 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +static void processPlcComputeStabFac_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_INT32 prev_bfi, LC3_FLOAT *stab_fac); + +void processPlcComputeStabFacMain_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_FLOAT *old_old_scf_q, LC3_INT32 bfi, LC3_INT32 prev_bfi, + LC3_INT32 prev_prev_bfi, LC3_FLOAT *stab_fac) +{ + if (bfi == 1) + { + if (prev_bfi != 1) + { + processPlcComputeStabFac_fl(old_scf_q, old_old_scf_q, prev_prev_bfi, stab_fac); + } + } + else if (bfi == 2) + { + processPlcComputeStabFac_fl(scf_q, old_scf_q, prev_bfi, stab_fac); + } +} + +static void processPlcComputeStabFac_fl(LC3_FLOAT *scf_q, LC3_FLOAT *old_scf_q, LC3_INT32 prev_bfi, LC3_FLOAT *stab_fac) +{ + LC3_FLOAT tmp; + LC3_INT32 i; + + tmp = 0; + + if (prev_bfi == 1) + { + *stab_fac = 0.8; + } + else + { + for (i = 0; i < M; i++) + { + tmp += (scf_q[i] - old_scf_q[i]) * (scf_q[i] - old_scf_q[i]); + } + + *stab_fac = 1.25 - tmp / 25.0; + + if (*stab_fac > 1) + { + *stab_fac = 1; + } + + if (*stab_fac < 0) + { + *stab_fac = 0; + } + } +} + diff --git a/lc3plus/plc_damping_scrambling.c b/lc3plus/plc_damping_scrambling.c new file mode 100644 index 0000000000000000000000000000000000000000..ecea32be5fa151684a7ced58dd0c5d7e04b045d7 --- /dev/null +++ b/lc3plus/plc_damping_scrambling.c @@ -0,0 +1,206 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processPlcDampingScramblingMain_fl(LC3_INT32 *ns_seed, + LC3_INT32 *pc_seed, LC3_INT32 ns_nbLostCmpt_pc, + LC3_INT32 ns_nbLostCmpt, LC3_FLOAT *stabFac, LC3_FLOAT *cum_fading_slow, LC3_FLOAT *cum_fading_fast, + LC3_FLOAT *spec_prev, LC3_FLOAT *spec, LC3_INT32 spec_inv_idx, LC3_INT32 yLen, LC3_INT32 bfi, + LC3_INT32 frame_dms, LC3_INT32 concealMethod, LC3_INT32 pitch_present_bfi1, LC3_INT32 pitch_present_bfi2, + LC3_FLOAT *cum_fflcAtten) +{ + + LC3_INT32 processDampScramb; + + processDampScramb = 0; + + + if ( bfi != 0 ) + { + if (concealMethod == 4 || bfi == 2) + { + processDampScramb = 1; + } + if ( bfi == 1 ) + { + processPlcDampingScrambling_fl(spec, yLen, ns_nbLostCmpt, stabFac, processDampScramb, cum_fflcAtten, + pitch_present_bfi1, frame_dms, cum_fading_slow, cum_fading_fast, ns_seed, 0); + } + else /* bfi == 2 */ + { + processPlcDampingScrambling_fl(spec, yLen, ns_nbLostCmpt_pc, stabFac, processDampScramb, cum_fflcAtten, + pitch_present_bfi2, frame_dms, cum_fading_slow, cum_fading_fast, pc_seed, spec_inv_idx); + processPlcUpdateSpec_fl(spec_prev, spec, yLen); + } + } +} + +void processPlcDampingScrambling_fl(LC3_FLOAT *spec, LC3_INT32 yLen, LC3_INT32 nbLostCmpt, LC3_FLOAT *stabFac, LC3_INT32 processDampScramb, + LC3_FLOAT *cum_fflcAtten, LC3_INT32 pitch_present, LC3_INT32 frame_dms, LC3_FLOAT *cum_fading_slow, + LC3_FLOAT *cum_fading_fast, LC3_INT32 *seed, LC3_INT32 spec_inv_idx) +{ + LC3_INT32 plc_start_inFrames, plc_end_inFrames, plc_duration_inFrames, x, b, i, ad_ThreshFac_start; + LC3_FLOAT slow, fast, linFuncStartStop, randThreshold, ad_ThreshFac_end, ad_threshFac, frame_energy, mean_energy, energThreshold, fac, m, n, fflcAtten, cum_fading_slow_local, cum_fading_fast_local; + + frame_energy = 0; + + /* Main process */ + if (nbLostCmpt == 1) + { + *cum_fading_slow = 1; + *cum_fading_fast = 1; + *cum_fflcAtten = 1; + } + + slow = 0.8 + 0.2 * (*stabFac); + fast = 0.3 + 0.2 * (*stabFac); + + switch (frame_dms) + { + case 25: + slow = LC3_SQRT(LC3_SQRT(slow)); + fast = LC3_SQRT(LC3_SQRT(fast)); + break; + case 50: + slow = LC3_SQRT(slow); + fast = LC3_SQRT(fast); + break; + } + + *cum_fading_slow = *cum_fading_slow * slow; + *cum_fading_fast = *cum_fading_fast * fast; + + if (processDampScramb == 1) + { + fflcAtten = 1; + cum_fading_slow_local = *cum_fading_slow; + cum_fading_fast_local = *cum_fading_fast; + + if (spec_inv_idx == 0) + { + if (nbLostCmpt * frame_dms > PLC_FADEOUT_IN_MS * 10) + { + fflcAtten = 0; + *cum_fflcAtten = 0; + } + else if (nbLostCmpt * frame_dms > 200) + { + switch(frame_dms) + { + case 25: fflcAtten = PLC34_ATTEN_FAC_025; break; + case 50: fflcAtten = PLC34_ATTEN_FAC_050; break; + case 100: fflcAtten = PLC34_ATTEN_FAC_100; break; + } + } + + + *cum_fflcAtten = *cum_fflcAtten * fflcAtten; + cum_fading_slow_local = *cum_fading_slow * *cum_fflcAtten; + cum_fading_fast_local = *cum_fading_fast * *cum_fflcAtten; + } + + if (pitch_present == 0) + { + plc_start_inFrames = 1; + } else { + plc_start_inFrames = floor(PLC4_TRANSIT_START_IN_MS / (frame_dms / 10.0)); + } + + plc_end_inFrames = floor(PLC4_TRANSIT_END_IN_MS / (frame_dms / 10.0)); + plc_duration_inFrames = plc_end_inFrames - plc_start_inFrames; + + if (nbLostCmpt <= plc_start_inFrames) + { + linFuncStartStop = 1; + } else if (nbLostCmpt >= plc_end_inFrames) + { + linFuncStartStop = 0; + } else { + x = nbLostCmpt; + m = -1.0 / plc_duration_inFrames; + b = -plc_end_inFrames; + linFuncStartStop = m * (x + b); + } + + randThreshold = -32768 * linFuncStartStop; + + for (i = spec_inv_idx; i < yLen; i++) + { + *seed = 16831 + *seed * 12821; + + *seed = (LC3_INT16)(*seed); + if (*seed == 32768) + { + *seed -= 32768; + } + + if (*seed < 0) + { + if (pitch_present == 0 || *seed < randThreshold) + { + spec[i] = -spec[i]; + } + } + } + + ad_ThreshFac_start = 10; + ad_ThreshFac_end = 1.2; + ad_threshFac = (ad_ThreshFac_start - ad_ThreshFac_end) * linFuncStartStop + ad_ThreshFac_end; + + if (spec_inv_idx < yLen) + { + for (i = spec_inv_idx; i < yLen; i++) + { + frame_energy = frame_energy + (spec[i] * spec[i]); + } + + mean_energy = frame_energy * 1 / (yLen - spec_inv_idx); + } + else + { + mean_energy = 0; + } + + energThreshold = LC3_SQRT(ad_threshFac * mean_energy); + fac = (cum_fading_slow_local - cum_fading_fast_local) * energThreshold; + + for (i = spec_inv_idx; i < yLen; i++) + { + if (LC3_FABS(spec[i]) < energThreshold) + { + m = cum_fading_slow_local; + n = 0; + } + else + { + m = cum_fading_fast_local; + + if (spec[i] > 0) + { + n = fac; + } + else if (spec[i] == 0) + { + n = 0; + } + else + { + n = -fac; + } + } + + spec[i] = m * spec[i] + n; + } + } +} + diff --git a/lc3plus/plc_main.c b/lc3plus/plc_main.c new file mode 100644 index 0000000000000000000000000000000000000000..df3fd184d903c169de288fd2630816b027129b3f --- /dev/null +++ b/lc3plus/plc_main.c @@ -0,0 +1,209 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processPlcMain_fl(LC3_FLOAT *q_d_fl_c, LC3_FLOAT *syntM_fl_c, LC3PLUS_Dec* decoder, DecSetup* h_DecSetup, LC3_INT bfi, + PlcAdvSetup *PlcAdvSetup, PlcSetup *PlcSetup, LC3_INT plcMeth, LC3_INT ltpf_pitch_int, LC3_INT ltpf_pitch_fr, + LC3_INT tilt, const LC3_INT *bands_offset, LC3_INT bands_number, const LC3_INT *bands_offsetPLC, + LC3_INT n_bandsPLC, LC3_INT16 hrmode, pcState *statePC +) +{ + LC3_FLOAT r[MAX_BANDS_NUMBER_PLC], A[M + 1], synth[MAX_LEN + MDCT_MEM_LEN_MAX], energies[MAX_BANDS_NUMBER_PLC]; + LC3_INT32 pitch_classifier; + LC3_FLOAT xcorr; + LC3_INT32 yLen; + LC3_INT16 prev_bfi_plc2; + LC3_FLOAT phEcu_env_stab_local[1]; + LC3_FLOAT phEcu_pfind_sens[1]; + + prev_bfi_plc2 = 1; + if (PlcSetup->nbLostCmpt == 0) + { + prev_bfi_plc2 = 0; + } + assert((h_DecSetup->PlcSetup.prevBfi == 1) == (prev_bfi_plc2 == 1)); + + if (bfi == 1 && PlcAdvSetup) + { + /* FFLC increases the PFLC counter */ + statePC->ns_nbLostCmpt_pc = statePC->ns_nbLostCmpt_pc + 1; + } + + pitch_classifier = ltpf_pitch_int; +#ifdef NONBE_PLC_CLASSIFER_LAG_FIX + if (ltpf_pitch_fr > 2) + { + pitch_classifier++; + } +#endif + + processPlcClassify_fl(plcMeth, &h_DecSetup->concealMethod, &PlcSetup->nbLostCmpt, bfi, &xcorr, + decoder->frame_length, decoder->frame_dms, pitch_classifier, decoder->fs, + bands_offset, bands_number, tilt, PlcAdvSetup, hrmode + ); + + if (bfi == 1) + { + switch (h_DecSetup->concealMethod) + { + case 2: + { + LC3_FLOAT pitch_fl_c; + + assert(decoder->fs_idx == floor(decoder->fs / 10000)); + // phaseECU supports only 10ms framing + assert(PlcSetup->nbLostCmpt != 0 || decoder->frame_dms == 100); + + if (decoder->frame_dms != 100) + { + // muting, if frame size changed during phaseECU concealment + memset(q_d_fl_c, 0, sizeof(LC3_FLOAT) * decoder->frame_length); + h_DecSetup->alpha = 0; + break; + } + + /* call phaseEcu */ + pitch_fl_c = (LC3_FLOAT)ltpf_pitch_int + (LC3_FLOAT)ltpf_pitch_fr / 4.0; /* use non-rounded pitch indeces */ + + + if (prev_bfi_plc2 == 0) + { + /* convert fractional pitch lag info at current fs to a normalized fractional bin-frequency */ + PlcAdvSetup->PlcPhEcuSetup.PhECU_f0hzLtpBin = plc_phEcuSetF0Hz(decoder->fs, &pitch_fl_c); + /* several buffers used in Cflt , a copy pcmbufHist, right before calling PhEcu in bad frames */ + assert(bfi == 1); + move_float(PlcAdvSetup->PlcPhEcuSetup.PhECU_xfp, + &(PlcAdvSetup->pcmbufHist[PlcAdvSetup->max_len_pcm_plc - PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot]), + PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot); + + /* a first bfi frame:: calc windowed 16 ms energy twice in a 26 ms buffer separated by 10 ms*/ + { + const LC3_FLOAT *w, *prev_xfp; + LC3_INT32 i, oold_start; + + oold_start = PlcAdvSetup->max_len_pcm_plc - (decoder->frame_length + PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot); + assert(oold_start > 0); + w = PhECU_whr16ms_wins[decoder->fs_idx]; /* hammrect table */ + prev_xfp = &(PlcAdvSetup->pcmbufHist[oold_start + 0]); + + PlcAdvSetup->PlcPhEcuSetup.PhECU_L_oold_xfp_w_E = 0; + PlcAdvSetup->PlcPhEcuSetup.PhECU_L_old_xfp_w_E = 0; + for (i = 0; i < PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot; i++) + { + PlcAdvSetup->PlcPhEcuSetup.PhECU_L_oold_xfp_w_E += sqrf(prev_xfp[i] * w[i]); + PlcAdvSetup->PlcPhEcuSetup.PhECU_L_old_xfp_w_E += sqrf(PlcAdvSetup->PlcPhEcuSetup.PhECU_xfp[i] * w[i]); + } + + } + + } /* (prev_bfi_plc2 == 0)*/ + else + { + /* overwrite last 3.75 ms of xfp with most recent pcmbufHist tail , right before calling PhEcu in bursts of bad frames */ + LC3_INT32 lenCopyOla = decoder->la_zeroes; /*copy_part + ola_part = 3.75 ms for 10 ms frame*/ + + assert(bfi == 1 && prev_bfi_plc2); + move_float(&(PlcAdvSetup->PlcPhEcuSetup.PhECU_xfp[PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot-lenCopyOla]), + &(PlcAdvSetup->pcmbufHist[PlcAdvSetup->max_len_pcm_plc - lenCopyOla]), lenCopyOla); + + } + + { + LC3_FLOAT x_tda[MAX_LEN]; /* 960/2 */ + PlcAdvSetup->PlcPhEcuSetup.PhECU_norm_corr = xcorr; + phEcu_env_stab_local[0] = (LC3_FLOAT)PHECU_ENV_STAB_LOCAL; + phEcu_pfind_sens[0] = (LC3_FLOAT)PHECU_PFIND_SENS; + + plc_phEcu_hq_ecu(&(PlcAdvSetup->PlcPhEcuSetup.PhECU_f0hzLtpBin), + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_norm_corr), + PlcAdvSetup->PlcPhEcuSetup.PhECU_xfp, + prev_bfi_plc2, + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_short_flag_prev), + decoder->fs, + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_time_offs), + PlcAdvSetup->PlcPhEcuSetup.PhECU_X_sav_m, /* Complex */ + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_num_plocs), + PlcAdvSetup->PlcPhEcuSetup.PhECU_plocs, + PlcAdvSetup->PlcPhEcuSetup.PhECU_f0est, + MDCT_WINS_10ms[hrmode][decoder->fs_idx], + + phEcu_env_stab_local, + PHECU_DELTA_CORR, + phEcu_pfind_sens, + PHECU_LA, + PlcAdvSetup->PlcPhEcuSetup.PhECU_t_adv, + PhECU_whr16ms_wins[decoder->fs_idx], + PlcAdvSetup->PlcPhEcuSetup.PhECU_oold_grp_shape, + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_L_oold_xfp_w_E), + PlcAdvSetup->PlcPhEcuSetup.PhECU_old_grp_shape, + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_L_old_xfp_w_E), + &(PlcAdvSetup->PlcPhEcuSetup.PhECU_beta_mute), + PlcAdvSetup->PlcPhEcuSetup.PhECU_mag_chg_1st, + PlcAdvSetup->PlcPhEcuSetup.PhECU_Xavg, + decoder->la_zeroes, + x_tda, /* time domain aliased output */ + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + , + &(PlcAdvSetup->PlcPhEcuSetup.PhEcu_Fft), + &(PlcAdvSetup->PlcPhEcuSetup.PhEcu_Ifft) + ); + + + ProcessingITDA_WIN_OLA_fl(x_tda, decoder->frame_length, decoder->imdct_win, decoder->imdct_winLen, decoder->imdct_laZeros, + h_DecSetup->imdct_mem, synth); + move_float(syntM_fl_c, synth, decoder->frame_length); + + + + } + } + break; + case 3: + if (PlcSetup->nbLostCmpt == 1) + { + PlcAdvSetup->PlcTdcSetup.fract = ltpf_pitch_fr; + } + + processPerBandEnergy_fl(n_bandsPLC, bands_offsetPLC, hrmode, decoder->frame_dms, energies, PlcSetup->q_d_prev); + processTdcPreemphasis_fl(energies, &PlcAdvSetup->PlcTdcSetup.preemphFac, n_bandsPLC); + processTdcInverseOdft_fl(energies, n_bandsPLC, r, PlcAdvSetup->PlcTdcSetup.lpcorder); + processTdcLpcEstimation_fl(r, decoder->fs_idx, PlcAdvSetup->PlcTdcSetup.lpcorder + 1, A, decoder->frame_dms); + processTdcApply_fl(ltpf_pitch_int, &PlcAdvSetup->PlcTdcSetup.preemphFac, A, PlcAdvSetup->PlcTdcSetup.lpcorder, PlcAdvSetup->pcmbufHist, PlcAdvSetup->max_len_pcm_plc, decoder->frame_length, + decoder->frame_dms, decoder->fs, PlcSetup->nbLostCmpt, decoder->frame_length - decoder->la_zeroes, &PlcAdvSetup->stabFac, PlcAdvSetup->PlcTdcSetup.harmonicBuf, + PlcAdvSetup->PlcTdcSetup.synthHist, &PlcAdvSetup->PlcTdcSetup.fract, &PlcAdvSetup->PlcTdcSetup.seed, &PlcAdvSetup->PlcTdcSetup.gain_c, + &h_DecSetup->alpha, synth); + + processTdcTdac_fl(synth, decoder->imdct_win, decoder->frame_length, decoder->la_zeroes, h_DecSetup->imdct_mem); + memmove(syntM_fl_c, synth, sizeof(LC3_FLOAT) * decoder->frame_length); + break; + case 4: + processNoiseSubstitution_fl(q_d_fl_c, PlcSetup->q_d_prev, decoder->yLen); + break; + default: + assert("Invalid PLC method!"); + } + } + + if (bfi == 0) + { + processPlcUpdateSpec_fl(PlcSetup->q_d_prev, q_d_fl_c, decoder->yLen); + } + + yLen = MIN(decoder->frame_length, MAX_PLC_LMEM); + if (PlcAdvSetup != NULL && (decoder->frame_dms == 100) && (hrmode == 0)) + { + /* BASOP processPLCspec2shape_fx(prev_bfi, bfi, q_old_d_fx, yLen, plcAd->PhECU_oold_grp_shape_fx, plcAd->PhECU_old_grp_shape_fx);*/ + plc_phEcu_processPLCspec2shape(prev_bfi_plc2, bfi, q_d_fl_c, yLen, + PlcAdvSetup->PlcPhEcuSetup.PhECU_oold_grp_shape, PlcAdvSetup->PlcPhEcuSetup.PhECU_old_grp_shape); + } +} + diff --git a/lc3plus/plc_noise_substitution.c b/lc3plus/plc_noise_substitution.c new file mode 100644 index 0000000000000000000000000000000000000000..4913ee53e5f2ac954d9f1e12f81b5979c49baf60 --- /dev/null +++ b/lc3plus/plc_noise_substitution.c @@ -0,0 +1,22 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processNoiseSubstitution_fl(LC3_FLOAT* spec, LC3_FLOAT* spec_prev, LC3_INT32 yLen) +{ + memmove(spec, spec_prev, sizeof(LC3_FLOAT) * yLen); + + spec[0] *= 0.2; + spec[1] *= 0.5; +} + diff --git a/lc3plus/plc_phecu_f0_refine_first.c b/lc3plus/plc_phecu_f0_refine_first.c new file mode 100644 index 0000000000000000000000000000000000000000..11ebf276b151b9c4f58f37de5632863aa8341ae1 --- /dev/null +++ b/lc3plus/plc_phecu_f0_refine_first.c @@ -0,0 +1,75 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_F0_refine_first( LC3_INT32 *plocs, /* i/o 0 ... Lprot/2 +1*/ + LC3_INT32 n_plocs, + LC3_FLOAT *f0est, /* i/o f0est */ + const LC3_INT32 Xabs_len, + LC3_FLOAT *f0binPtr, /* i */ + LC3_FLOAT *f0gainPtr, /* i */ + const LC3_INT32 nSubm + ) +{ + LC3_FLOAT sens; + LC3_INT32 i, j, high_idx, breakflag; + LC3_FLOAT f0est_lim[MAX_PLC_NPLOCS]; + LC3_FLOAT f0bin; + LC3_FLOAT f0gain; + + f0bin = *f0binPtr; + f0gain = *f0gainPtr; + + if (n_plocs > 0 && f0gain > 0.25) { + + sens = 0.5; + if (f0gain < 0.75) { + sens = 0.25; + } + + high_idx = -1; + for (i = 0; i < n_plocs; i++) { + if (plocs[i] <= 25) { /* 25 ~= 1550 Hz */ + high_idx = MAX(high_idx, i); + } else { + /* Optimization, only works if plocs vector is sorted. Which it should be. */ + break; + } + } + + if (high_idx != -1) { + high_idx++; + move_float(f0est_lim, f0est, high_idx); + + breakflag = 0; + for (i = 0; i < nSubm; i++) { + for (j = 0; j < high_idx; j++) { + if (LC3_FABS(f0est_lim[j] - (i+1) * f0bin) < sens) { + f0est[j] = (i+1)*f0bin; + plocs[j] = MIN(Xabs_len-1, MAX(1,(LC3_INT32) LC3_ROUND(f0est[j]))); + breakflag = 1; + break; + } + } + if (breakflag) { + break; + } + sens *= 0.875; + } + } + } + + return; +} + diff --git a/lc3plus/plc_phecu_fec_hq.c b/lc3plus/plc_phecu_fec_hq.c new file mode 100644 index 0000000000000000000000000000000000000000..c25466c3e995a0310ce70c92f81070558dc6d87e --- /dev/null +++ b/lc3plus/plc_phecu_fec_hq.c @@ -0,0 +1,159 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +LC3_FLOAT plc_phEcu_imax2_jacobsen_mag(const Complex *y, LC3_FLOAT *c_jacobPtr) { + + LC3_FLOAT posi; + const Complex *pY; + Complex y_m1, y_0, y_p1; + Complex N; + Complex D; + LC3_FLOAT numer, denom; + + /* Jacobsen estimates peak offset relative y_0 using + * X_m1 - X_p1 + * d = REAL ( ------------------- ) * c_jacob + * 2*X_0 - X_m1 -Xp1 + * + * Where c_jacob is a window dependent constant + */ + + /* Get the parameters into variables */ + pY = y; + y_m1 = *pY++; + y_0 = *pY++; + y_p1 = *pY++; + + /* prepare numerator real and imaginary parts*/ + N = csub(y_m1, y_p1); + + /* prepare denominator real and imaginary parts */ + D = cmul(cmplx(2.0, 0.0), y_0); + D = csub(D, y_m1); + D = csub(D, y_p1); + + /* REAL part of complex division */ + numer = N.r*D.r + N.i*D.i; + denom = D.r*D.r + D.i*D.i; + + if (numer != 0 && denom != 0) { + posi = numer / denom * (*c_jacobPtr); + } else { + posi = 0.0; /* flat top, division is not possible choose center freq */ + } + + + posi = fclampf(-1.0, posi, 1.0); + return posi; +} + +/*-------------------------------------------------------------------* + * imax() + * + * Get interpolated maximum position + *-------------------------------------------------------------------*/ + +LC3_FLOAT plc_phEcu_interp_max(const LC3_FLOAT *y, LC3_INT32 y_len) { + LC3_FLOAT posi, y1, y2, y3, y3_y1, y2i; + LC3_FLOAT ftmp_den1, ftmp_den2; + + /* 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]; + y2 = y[1]; + + /* If interp between two values only */ + if (y_len == 2) { + if (y1 < y2) { + return 1.0; + } else { + return 0.0; + } + } + + y3 = y[2]; + y3_y1 = y3-y1; + ftmp_den1 = (y1+y3-2*y2); + ftmp_den2 = (4*y2 - 2*y1 - 2*y3); + + if(ftmp_den2 == 0.0 || ftmp_den1 == 0.0) { + return 0.0; /* early exit with left-most value */ + } + + y2i = ((LC3_FLOAT)-0.125) * sqrf(y3_y1) /(ftmp_den1) + y2; + /* their corresponding normalized locations */ + posi = y3_y1/(ftmp_den2); + /* Interpolated maxima if locations are not within [-1,1], calculated extrema are ignored */ + if (posi >= (LC3_FLOAT)1.0 || posi <= (LC3_FLOAT)-1.0) { + posi = y3 > y1 ? (LC3_FLOAT)1.0 : (LC3_FLOAT)-1.0; + } else { + if (y1 >= y2i) { + posi = (y1 > y3) ? (LC3_FLOAT)-1.0 :(LC3_FLOAT) 1.0; + } else if (y3 >= y2i) { + posi = (LC3_FLOAT)1.0; + } + } + + return posi + (LC3_FLOAT)1.0; +} + +/*----------------------------------------------------------------------------- + * fft_spec2_sqrt_approx_ () + * + * Approximation of sqrt(Square magnitude) of fft spectrum + * if min_abs <= 0.4142135*max_abs + * abs = 0.99 max_abs + 0.197*min_abs + * else + * abs = 0.84 max_abs + 0.561*min_abs + * end + * + + *----------------------------------------------------------------------------*/ + +void plc_phEcu_fft_spec2_sqrt_approx(const Complex* x, LC3_INT32 x_len, LC3_FLOAT* x_abs) { + LC3_INT32 i; + LC3_FLOAT max_abs, min_abs, re, im; + + for (i = 0; i < x_len; i++) { + re = LC3_FABS(x[i].r); + im = LC3_FABS(x[i].i); + max_abs = MAX(re, im); + min_abs = MIN(re, im); + + if (min_abs <= (LC3_FLOAT)0.4142135 * max_abs) { + x_abs[i] = (LC3_FLOAT)0.99*max_abs + (LC3_FLOAT)0.197*min_abs; + } else { + x_abs[i] = (LC3_FLOAT)0.84*max_abs + (LC3_FLOAT)0.561*min_abs; + } + } + + return; +} + +LC3_INT32 plc_phEcu_pitch_in_plocs(LC3_INT32* plocs, LC3_INT32 n_plocs) { + + LC3_INT32 i; + LC3_INT32 p_in_plocs; + + p_in_plocs = 0; + + for (i = 0; i < n_plocs; i++) { + if (plocs[i] > 0 && plocs[i] < 7) { + p_in_plocs++; + } + } + + return p_in_plocs; +} + diff --git a/lc3plus/plc_phecu_hq_ecu.c b/lc3plus/plc_phecu_hq_ecu.c new file mode 100644 index 0000000000000000000000000000000000000000..5b1978bcabfe7995abd483962079984e38e1ab71 --- /dev/null +++ b/lc3plus/plc_phecu_hq_ecu.c @@ -0,0 +1,116 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_hq_ecu( + LC3_FLOAT *f0binPtr, LC3_FLOAT *f0ltpGainPtr, LC3_FLOAT *xfp, + LC3_INT16 prev_bfi, LC3_INT32 *short_flag_prev, LC3_INT32 fs, + LC3_INT32 *time_offs, Complex *X_sav_m, LC3_INT32 *n_plocs, LC3_INT32 *plocs, LC3_FLOAT *f0est, + const LC3_FLOAT *mdctWin, LC3_FLOAT *env_stabPtr, LC3_INT32 delta_corr, LC3_FLOAT *pfind_sensPtr, + LC3_INT32 PhECU_LA, LC3_INT32 t_adv, const LC3_FLOAT *winWhr, + LC3_FLOAT *oold_grp_shape, LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_grp_shape, LC3_FLOAT *old_EwPtr, + LC3_FLOAT *st_beta_mute, LC3_FLOAT *st_mag_chg_1st, LC3_FLOAT *st_Xavg, LC3_INT32 LA_ZEROS, LC3_FLOAT *x_tda, + LC3_FLOAT *xsubst_dbg, Complex *X_out_m_dbg, + LC3_INT32 *seed_dbg, LC3_FLOAT *mag_chg_dbg, LC3_INT32 *tr_dec_dbg, LC3_FLOAT *gpc_dbg, LC3_FLOAT *X_i_new_re_dbg, LC3_FLOAT *X_i_new_im_dbg, + LC3_FLOAT *corr_phase_dbg, + Fft *PhEcu_Fft, Fft *PhEcu_Ifft) +{ + LC3_INT32 i; + LC3_INT32 fs_idx, L, Lprot, n_grp, Lecu, LXsav, Lxfp_inuse; + LC3_FLOAT alpha[8]; + LC3_FLOAT beta[8]; + LC3_FLOAT mag_chg[8]; + LC3_FLOAT xfp_local_rnd[2*MAX_LEN]; + Complex X_out_m[2*MAX_LEN]; + LC3_INT32 seed; + LC3_INT32 burst_len; + + + fs_idx = (LC3_INT32)floor(fs / 10000.0); + L = (LC3_INT32)floor(0.01 * fs); + Lprot = (LC3_INT32)(1.6 * L); + n_grp = xavg_N_grp[fs_idx]; + Lecu = 2 * L; + LXsav = Lprot / 2 + 1; /* 48 kHz may be optimized , to save only up to 20 kHz as in BASOP */ + Lxfp_inuse = Lprot ; + if (prev_bfi == 1){ + Lxfp_inuse = (LC3_INT32)(L*(3.75/10.0)); + } + + UNUSED(env_stabPtr); + UNUSED(xsubst_dbg); + UNUSED(X_out_m_dbg); + UNUSED(seed_dbg); + UNUSED(mag_chg_dbg); + UNUSED(tr_dec_dbg); + UNUSED(gpc_dbg); + UNUSED(X_i_new_re_dbg); + UNUSED(X_i_new_im_dbg); + UNUSED(corr_phase_dbg); + + + if (prev_bfi != 1) + { + for (i = (Lprot-Lxfp_inuse); i < Lprot; i++) { + xfp_local_rnd[i] = xfp[i]; + /* hysteresis of low level input aligns float fft analysis and peak picking to BASOP performance for low level noisy signals */ + if (xfp[i] >= -0.5 && xfp[i] <= 0.5) { + xfp_local_rnd[i] = 0.0; + } + } + + + *time_offs = 0; + burst_len = (*time_offs / L + 1); + plc_phEcu_trans_burst_ana_sub(fs_idx, burst_len, n_grp, oold_grp_shape, oold_EwPtr , old_grp_shape, old_EwPtr, st_beta_mute, + st_mag_chg_1st, st_Xavg, alpha, beta, mag_chg, NULL, NULL); + + plc_phEcu_spec_ana(xfp_local_rnd, Lprot, winWhr, pfind_sensPtr, plocs, n_plocs, f0est, X_sav_m, &LXsav, f0binPtr, f0ltpGainPtr, fs_idx, PhEcu_Fft); + } + else + { + *time_offs = *time_offs + L; + *time_offs = imin(32767 ,*time_offs); /* limit to Word16 range as in BASOP ~= 70 10ms frames@48kHz */ + burst_len = ((*time_offs / L) + 1); + + plc_phEcu_trans_burst_ana_sub(fs_idx, burst_len, n_grp, oold_grp_shape, oold_EwPtr, old_grp_shape, old_EwPtr, st_beta_mute, + st_mag_chg_1st, st_Xavg, alpha, beta, mag_chg, NULL, NULL); + + } + + seed = *time_offs; + + if (*short_flag_prev != 0) + { + *n_plocs = 0; + } + + move_cmplx( X_out_m, X_sav_m, LXsav); + + /* inplace X_out_m update */ + plc_phEcu_subst_spec(plocs, *n_plocs, f0est, *time_offs, X_out_m, LXsav, mag_chg, &seed, alpha, beta, st_Xavg, t_adv, Lprot, delta_corr, + NULL, NULL, NULL); + + + + + plc_phEcu_rec_frame(X_out_m, L, Lecu, winWhr, mdctWin, Lprot, + xfp, /* last 3.75ms of non-rounded xfp used here */ + *time_offs, + x_tda /* output */, + NULL, NULL, NULL, + LA_ZEROS, PhECU_LA, PhEcu_Ifft); + +} + diff --git a/lc3plus/plc_phecu_lf_peak_analysis.c b/lc3plus/plc_phecu_lf_peak_analysis.c new file mode 100644 index 0000000000000000000000000000000000000000..0bcc98d7a489b37cdf94f118131188d17ca1a5ba --- /dev/null +++ b/lc3plus/plc_phecu_lf_peak_analysis.c @@ -0,0 +1,112 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_LF_peak_analysis(LC3_INT32 *plocs, /* i/o 0 ... Lprot/2 +1*/ + LC3_INT32 *n_plocs, /* i/o 0.. MAX_PLOCS */ + LC3_FLOAT *f0est, /* i/o Q16*/ + const LC3_FLOAT *Xabs, + LC3_FLOAT *f0binPtr, + LC3_FLOAT *f0gainPtr, + const LC3_INT32 nSubm +) +{ + LC3_INT32 i, j, fin, f_ind, prel_low, prel_high, start; + LC3_FLOAT f0est_prel[3]; + LC3_INT32 plocs_prel[3]; + LC3_INT32 n_prel; + LC3_FLOAT f0est_old[MAX_PLC_NPLOCS]; + LC3_INT32 plocs_old[MAX_PLC_NPLOCS]; + LC3_FLOAT peakLF_Xval, f; + LC3_FLOAT f0bin ; + LC3_FLOAT f0gain ; + + f0bin = *f0binPtr; + f0gain = *f0gainPtr; + + if (*n_plocs > 0 && f0gain > 0.25 && f0bin < 2.75) { + + /* Assumes sorted plocs */ + if (plocs[0] < 3) { + fin = MIN(3, *n_plocs); + peakLF_Xval = Xabs[plocs[0]]; + for (i = 1; i < fin; i++) { + peakLF_Xval = MAX(peakLF_Xval, Xabs[plocs[i]]); + } + + n_prel = 0; + for (i = 0; i < nSubm; i++) { + f = (i+1)*f0bin; + f_ind = (LC3_INT32)LC3_ROUND(f); + if (f*PHECU_FRES <= 400 && Xabs[f_ind] > peakLF_Xval*0.375) { + f0est_prel[n_prel] = f; + plocs_prel[n_prel] = f_ind; + n_prel++; + } + } + + if (n_prel > 0) { + prel_low = plocs_prel[0]; + prel_high = plocs_prel[n_prel-1]; + + /* initial assumption:: all original peaks (1 or 2 of them) are positioned below prel_low */ + start = (*n_plocs); /* at this point 'start' is the location_c where to add any harmonics peaks */ + for (i = (*n_plocs)-1; i >= 0; i--) { + if (plocs[i] >= prel_low) { + start = i; + } + } + + /* found position_c where to start adding */ + start = (start-1 ); /* one step lower, now start is of original LF peaks to keep */ + start = MAX(start, -1); /* limit for loop */ + + if (prel_high < plocs[0]) { + fin = 0; + } else { + fin = (*n_plocs)+1; + for (i = 0; i < *n_plocs; i++) { + if (plocs[i] <= prel_high) { + fin = i; + } + } + fin++; + } + + move_int(plocs_old, plocs, *n_plocs); + move_float(f0est_old, f0est, *n_plocs); + + j = (start+1); /* [0..(j-1)] of original LF peaks will be kept */ + /* j now points to first location_c where to add peaks */ + + for (i = 0; i < n_prel; i++) { + plocs[j] = plocs_prel[i]; + f0est[j] = f0est_prel[i]; + j++; + } + for (i = fin; i < *n_plocs; i++) { + plocs[j] = plocs_old[i]; + f0est[j] = f0est_old[i]; + j++; + } + + *n_plocs = j; + + } + } + } + + return; +} + diff --git a/lc3plus/plc_phecu_rec_frame.c b/lc3plus/plc_phecu_rec_frame.c new file mode 100644 index 0000000000000000000000000000000000000000..0e6570743ae7f8464e17d0b891a389ee3b1cccd0 --- /dev/null +++ b/lc3plus/plc_phecu_rec_frame.c @@ -0,0 +1,147 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_rec_frame(Complex *X_in, + LC3_INT32 L, + LC3_INT32 Lecu, + const LC3_FLOAT *whr, + const LC3_FLOAT *winMDCT, + LC3_INT32 Lprot, + LC3_FLOAT *xfp, + LC3_INT32 time_offs, + LC3_FLOAT *x_out, + Complex *full_spec_dbg, + LC3_FLOAT* ifft_out_dbg, + LC3_FLOAT* xsubst_dbg, + LC3_INT32 LA_ZEROS, + LC3_INT32 LA, + Fft* PhEcu_ifft +) +{ + + LC3_INT32 i; + + LC3_FLOAT xrec[2*MAX_LEN]; + LC3_FLOAT xsubst[2*MAX_LEN]; + LC3_FLOAT xsubst_LL[2*MAX_LEN]; + LC3_FLOAT *pXsubst_LL; + + LC3_INT32 fs_idx; + + LC3_FLOAT *pXfp, *pOlaXsubst, *pXOut; + LC3_INT32 work_part, copy_part, ola_part; + + const LC3_FLOAT *hannOla; + const LC3_FLOAT *pHannOla; + + UNUSED(time_offs); + UNUSED(full_spec_dbg); + UNUSED(ifft_out_dbg); + UNUSED(xsubst_dbg); + UNUSED(xsubst_LL); + fs_idx = FRAME2FS_IDX(L); + hannOla = hannOla_wins[fs_idx]; + + X_in[0].i = X_in[Lprot / 2].r; /* move fs/2 real to imag part of X_in[0]*/ + + real_fft_apply(PhEcu_ifft, (LC3_FLOAT*)X_in, xrec); + + move_float(xsubst, xrec, Lprot); + + + + + { + for (i = 0; i < Lprot; i++) { + + if (whr[i] != 0) { + xsubst[i] = xsubst[i] / whr[i]; /* inverse stored in BASOP */ + } + + } + + assert(xsubst_LL != NULL); + zero_float(xsubst_LL, (Lecu-Lprot)/2); /* initial 2ms */ + zero_float(&(xsubst_LL[ Lecu- (Lecu-Lprot)/2]), (Lecu-Lprot)/2); /* tail 2ms */ + { + /* position reconstruction properly */ + /* pXsubst_LL = &xsubst_LL[Lecu - Lprot - (Lecu - Lprot) / 2]; */ + pXsubst_LL = &xsubst_LL[(Lecu - Lprot) / 2]; + for (i = 0; i < Lprot ; i++) { + *pXsubst_LL++ = xsubst[i]; /* copy required 14.25 ms into center */ + } + } + + } + + + + work_part = LA_ZEROS + LA; + copy_part = (Lecu - Lprot) / 2; + ola_part = work_part - copy_part; + + pXfp = &xfp[Lprot - work_part]; + for (i = 0; i < copy_part; i++) { + xsubst_LL[i] = *pXfp++; + } + + assert(xsubst_LL != NULL); + pOlaXsubst = &(xsubst_LL[copy_part]); + pHannOla = hannOla; + for (i = 0; i < ola_part; i++) { + *pOlaXsubst = *pOlaXsubst * *pHannOla++; + pOlaXsubst++; + } + + pOlaXsubst = &(xsubst_LL[copy_part]); + for (i = 0; i < ola_part; i++) { + *pOlaXsubst = *pOlaXsubst + *pXfp++ * *pHannOla--; + pOlaXsubst++; + } + + + /* clear x_out to start with */ + assert(x_out != NULL); + zero_float(x_out, L); + + + for (i = 0; i < (Lecu - LA_ZEROS); i++) { + + xsubst_LL[i] = xsubst_LL[i] * winMDCT[i]; /* xsubstLL windowing up to 16.25 ms i.e not last 3.75 ms */ + + } + zero_float(&(xsubst_LL[Lecu - LA_ZEROS]), LA_ZEROS); /* tail 3.75ms always zero */ + + /* perform tda */ + + /* first half */ + pXsubst_LL = &xsubst_LL[3 * Lecu / 4]; + pXfp = &xsubst_LL[(3 * Lecu / 4) - 1]; + + pXOut = x_out; + for (i = 0; i < Lecu / 4; i++) { + *pXOut++ = -*pXsubst_LL++ - *pXfp--; /* 3.75 ms mults with 0 . may be skipped, see BASOP */ + } + + /* second half */ + /* */ + + pXsubst_LL = &(xsubst_LL[0]); + pXfp = &xsubst_LL[(Lecu / 2) - 1]; + for (i = 0; i < Lecu / 4; i++) { + *pXOut++ = *pXsubst_LL++ - *pXfp--; + } +} + diff --git a/lc3plus/plc_phecu_setf0hz.c b/lc3plus/plc_phecu_setf0hz.c new file mode 100644 index 0000000000000000000000000000000000000000..b14327e2b2af0f4c04c1f9bc633e0ac06a1a2114 --- /dev/null +++ b/lc3plus/plc_phecu_setf0hz.c @@ -0,0 +1,28 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +LC3_FLOAT plc_phEcuSetF0Hz(LC3_INT32 fs, LC3_FLOAT * old_pitchPtr) +{ + LC3_FLOAT result; + + result = 0; + if (*old_pitchPtr != 0) + { + result = LC3_ROUND(fs/(*old_pitchPtr)/PHECU_FRES * 128.0) / 128.0; + } + + return result; +} + diff --git a/lc3plus/plc_phecu_spec_ana.c b/lc3plus/plc_phecu_spec_ana.c new file mode 100644 index 0000000000000000000000000000000000000000..b49690030596c08363f4168b5b6d1abd8c9d3b7b --- /dev/null +++ b/lc3plus/plc_phecu_spec_ana.c @@ -0,0 +1,599 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +#define PEAK_LOCATOR_RES_FX 1 /* fixed point resolution minimum value */ + + +static LC3_INT16 plc_phEcu_find_ind_fx( /* o : output maximum indx 0.. len-1 */ + const LC3_INT16 *inp, /* i : vector */ + const LC3_INT16 len, /* i : length */ + const LC3_INT16 val /* i : value to find */ +); + +static void plc_phEcu_peak_locator_fxlike(const LC3_INT16 *inp, /* i: vector with values >=0 ,Qx */ + const LC3_INT16 inp_len, /* i: length of inp */ + LC3_INT16 * int_plocs, /* o: array of filtered integer plocs Q0 */ + LC3_INT16 * n_fsc, /* o: total_ number of filtered located highs Q0 */ + const LC3_INT16 sens, /* i sensitivity, Qx */ + const LC3_INT16 inp_high, /* i global high , Qx */ + const LC3_INT16 inp_low /* i: global low, Qx */ +); + + +void plc_phEcu_spec_ana(LC3_FLOAT* xfp, + LC3_INT32 xfp_len, + const LC3_FLOAT* whr, + LC3_FLOAT *pfind_sensPtr, + LC3_INT32* plocs, + LC3_INT32* n_plocs, + LC3_FLOAT* f0est, + Complex* x, + LC3_INT32* x_len, + LC3_FLOAT * f0hzLtpBinPtr, + LC3_FLOAT * f0gainLtpPtr, + LC3_INT32 bw_idx, + Fft* PhEcu_fft +) +{ + + + LC3_INT32 i, peak_range_1, curr; + LC3_FLOAT xfp_w[MAX_PLC_LPROT]; + + LC3_FLOAT Xabs[MAX_LEN] = {0}; + LC3_FLOAT inp_high, inp_low, sens; + LC3_FLOAT interPos; + Complex Xana_p[3]; + LC3_INT32 P_in_plocs; + LC3_INT32 nSubs; + LC3_INT32 n_plocs_in; + LC3_FLOAT phEcu_c_jacob[1]; + + LC3_FLOAT fx_fft_scale; + LC3_FLOAT fft_fs_scale; + + LC3_FLOAT max_xfp_abs; + LC3_FLOAT PLC2_Q_flt; + LC3_FLOAT Q_scale_flt; + + LC3_INT16 Xabs_fx[MAX_LEN]; + LC3_INT16 plocs_fx[MAX_LEN]; + + LC3_INT16 sens_fx; + LC3_INT16 inp_high_fx; + LC3_INT16 inp_low_fx; + LC3_INT16 n_plocs_fx; + + LC3_FLOAT pfind_sens ; + LC3_FLOAT f0hzLtpBin ; + LC3_FLOAT f0gainLtp ; + + pfind_sens = *pfind_sensPtr; + f0hzLtpBin = *f0hzLtpBinPtr; + f0gainLtp = *f0gainLtpPtr; + + for (i = 0; i < xfp_len; i++) + { + xfp_w[i] = xfp[i] * whr[i]; /* whr windowing may be split into three segments , two loops, and possibly inplace */ + } + real_fft_apply(PhEcu_fft, xfp_w, (LC3_FLOAT *)x); + + x[xfp_len/2].r = x[0].i; /* move the real Fs/2 value to end */ + x[xfp_len/2].i = 0; /* safety clear imaginary Fs/2 value at end */ + x[0].i = 0.0; /* safety, make DC value only real */ + + + *x_len = xfp_len/2 + 1; + + i =(LC3_INT32) LC3_FLOOR(20000.0/PHECU_FRES)+1; + zero_cmplx( &(x[i]), *x_len - i); + + peak_range_1 = (LC3_INT32) MIN(*x_len, (40000.0 / 100 * 1.6) / 2 + 1); + + plc_phEcu_fft_spec2_sqrt_approx(x, peak_range_1, Xabs); + + zero_float(&(Xabs[peak_range_1]), *x_len - peak_range_1); + + inp_high = Xabs[0]; + inp_low = Xabs[0]; + + for (i = 1; i < peak_range_1; i++) { + inp_high = MAX(inp_high, Xabs[i]); + inp_low = MIN(inp_low, Xabs[i]); + } + + sens = (inp_high-inp_low)*(1-pfind_sens); + + if (inp_high > ((LC3_FLOAT) PEAK_LOCATOR_RES_FX)/2.0) + { + { + /* from ROM constants.c */ + LC3_FLOAT fx_fft_scales[5] = { 6, 7, 7, 8, 8 }; /*NB,WB, sSWB, SWB, FB*/ + fx_fft_scale = LC3_POW(2.0, fx_fft_scales[bw_idx]); /*% scaling due to up / dn pre shifts in fx FFT */ + } + { /* from ROM constants.c */ + LC3_FLOAT fx_fs_scales[5] = { 1.0, 1.0, 1.5, 1.0, 1.5 }; /*NB,WB, sSWB, SWB, FB*/ + fft_fs_scale = fx_fs_scales[bw_idx]; + } + + + max_xfp_abs = (LC3_FLOAT) LC3_FABS(xfp[0]); + for (i = 1; i < xfp_len; i++) { + max_xfp_abs = (LC3_FLOAT) MAX(max_xfp_abs, LC3_FABS(xfp[i])); + } + + if (max_xfp_abs >= 0.5) + { + PLC2_Q_flt = (LC3_FLOAT)LC3_FLOOR(LC3_LOGTWO(32768 / 2 / 2 / max_xfp_abs)); + Q_scale_flt = LC3_POW(2.0, PLC2_Q_flt) / fx_fft_scale / fft_fs_scale; /* basop way using xfp scale */ + + /* C-Float additional safety limit/verification of the integer xfp based scaling using the available C-float Xabs max value inp_high as well */ + { + LC3_FLOAT tmp_scale; + tmp_scale = LC3_POW(2.0, LC3_FLOOR(LC3_LOGTWO(32768 / 2 / 2 / inp_high))); + if (Q_scale_flt > tmp_scale) { + Q_scale_flt = tmp_scale; + } + } + /* Round sens, inp_high, inp_low according to BASOP fix-point scaling */ + + for (i = 0; i < peak_range_1; i++) { + Xabs_fx[i] = (LC3_INT16) LC3_ROUND(Xabs[i] * Q_scale_flt) ; + } + sens_fx = (LC3_INT16) LC3_ROUND(sens * Q_scale_flt) ; + inp_high_fx = (LC3_INT16) LC3_ROUND(inp_high * Q_scale_flt) ; + inp_low_fx = (LC3_INT16) LC3_ROUND(inp_low * Q_scale_flt) ; + plc_phEcu_peak_locator_fxlike(Xabs_fx, peak_range_1, plocs_fx, &n_plocs_fx, sens_fx, inp_high_fx, inp_low_fx); + + *n_plocs = (LC3_INT32)n_plocs_fx; + for (i = 0; i < *n_plocs; i++) { + plocs[i] = (LC3_INT32)plocs_fx[i]; /* short Word16 values now stored/saved as Word32 */ + } + } + else + { + *n_plocs = 0; /* time domain xfp level near zero */ + } + } + else + { + *n_plocs = 0; /* Freq domain Xabs max level near zero */ + } + + for (i = 0; i < *n_plocs; i++) { + curr = plocs[i]; + if (curr == 0) { + interPos = plc_phEcu_interp_max(Xabs, 3); /* returns 0.0 ... 2.0 */ + if (interPos == 2) { + /* integer peak was at DC, restrict to one of coeffs at [DC or DC+1] */ + interPos = plc_phEcu_interp_max(Xabs, 2); /* returns 0.0 or 1.0 */ + } + interPos += plocs[i]; + } else if (curr == 1) { + interPos = plc_phEcu_interp_max(Xabs, 3); + interPos += plocs[i] - 1; + } else if (curr == *x_len - 2) { + interPos = plc_phEcu_interp_max(&Xabs[*x_len - 3], 3); + interPos += plocs[i] - 1; + } else if (curr == *x_len - 1) { + /* integer curr at Fs/2, a real coeff */ + interPos = plc_phEcu_interp_max(&Xabs[*x_len - 3], 3); /* returns 0.0 ... 2.0 */ + interPos += plocs[i] - 2; /* valid for range ]... 1.0 ... 2.0] , where 1 is fs/2-1 and 2.0 is Fs/2 */ + if (interPos == 0) { + /* restrict to one of coeffs at [fs/2-1, fs/2 ] */ + interPos = plc_phEcu_interp_max(&Xabs[*x_len - 2], 2); /* returns 0.0 or 1.0 */ + interPos += plocs[i] - 1; + } + + if (interPos > (*x_len - 1) ) { /* interPos only defined up to Fs/2 */ + interPos = (LC3_FLOAT)(*x_len - 1); + } + } else { + Xana_p[0] = x[plocs[i]-1]; + Xana_p[1] = x[plocs[i]]; + Xana_p[2] = x[plocs[i]+1]; + phEcu_c_jacob[0] = (LC3_FLOAT)PHECU_C_JACOB; + interPos = plc_phEcu_imax2_jacobsen_mag(Xana_p, phEcu_c_jacob ); + interPos += (LC3_FLOAT) plocs[i]; + } + f0est[i] = interPos; + } + + if (*n_plocs >= 2 && plocs[0] == 0 && + f0est[0] > f0est[1] && plocs[1] <= 2 && Xabs[0] < Xabs[plocs[1]+1]) + { + f0est[0] = f0est[1]; + } + + P_in_plocs = plc_phEcu_pitch_in_plocs(plocs, *n_plocs); + + if (f0hzLtpBin > 0.0 && P_in_plocs > 0) { + nSubs = 2; + n_plocs_in = *n_plocs; + plc_phEcu_LF_peak_analysis(plocs, n_plocs, f0est, Xabs, &f0hzLtpBin, &f0gainLtp, nSubs); + + if (n_plocs_in == *n_plocs) { + nSubs = 3; + plc_phEcu_F0_refine_first(plocs, *n_plocs, f0est, *x_len, &f0hzLtpBin, &f0gainLtp, nSubs); + } + } + + if (f0gainLtp > 0.0 && f0gainLtp < 0.5 && *n_plocs > 14) { + if (P_in_plocs > 0) { + *n_plocs = 0; + } + } + + return; +} + + +#define sub(a,b) (a - b) +#define add(a,b) (a + b) +#define s_xor(a,b) (a ^ b) + +/* in case a value (e.g max or min) is already known , find the first corresponding array index */ +static LC3_INT16 plc_phEcu_find_ind_fx( /* o : output maximum indx 0.. len-1 */ + const LC3_INT16 *inp, /* i : vector */ + const LC3_INT16 len, /* i : length */ + const LC3_INT16 val /* i : value to find */ +) +{ + LC3_INT16 val_ind; + LC3_INT16 pos; + + val_ind = -1; + + for(pos = 0; pos < len; pos++) + { + if (sub(inp[pos], val) == 0) + { + val_ind = pos; + } + } + + return val_ind; +} + + + +/* BASOP function adapted to compile in float/integer environment */ +/*----------------------------------------------------------------------------- + * plc_phEcu_peak_locator_fxlike() + *----------------------------------------------------------------------------*/ +static void plc_phEcu_peak_locator_fxlike(const LC3_INT16 *inp, /* i: vector with values >=0 ,Qx */ + const LC3_INT16 inp_len, /* i: length of inp */ + LC3_INT16 * int_plocs, /* o: array of filtered integer plocs Q0 */ + LC3_INT16 * n_fsc, /* o: total_ number of filtered located highs Q0 */ + const LC3_INT16 sens, /* i sensitivity, Qx */ + const LC3_INT16 inp_high, /* i global high , Qx */ + const LC3_INT16 inp_low /* i: global low, Qx */ +) +{ + + LC3_INT16 j, k, n, idx_high, idx_low; + LC3_INT16 inp_len_minus1; + LC3_INT16 pairs_start, pairs_end; + LC3_INT16 *p_tmp; + LC3_INT16 prev_delta, curr_delta; + LC3_INT16 delta_predc, delta_fin; + LC3_INT16 add_dc_flag, add_fin_flag; + LC3_INT16 low_val_cand_pairs, val_range; + LC3_INT16 num_pairs, n_tail_values; + LC3_INT16 cand_phase_start, cand_idx, prev_low_plus_sens, tmp; + LC3_INT16 cand_high, prev_low; + LC3_INT16 *cand_pairs; /* actually [DC ] + pairs + [FS/2] */ + + LC3_INT16 sc_idx[1 + 368 + 1]; + LC3_INT16 cand_pairs_buf[1 + 1 + 368 + 1]; + LC3_INT16 fsc_idx[1 + 368 / 2 + 1]; + + + inp_len_minus1 = sub(inp_len, 1); /* size of delta=derivative array ,and last index in inp */ + + cand_pairs = &cand_pairs_buf[1]; /* ptr init , make space for storing a lowest amplitude value in location -1 */ + pairs_start = 1; /* adjusted to zero or 1 or 2 when/if, DC is injected as sc_idx[0], or initial plateau skipped */ + + p_tmp = &(sc_idx[pairs_start]); /* ptr init */ + + + /* xor high/low pairs of delta_inp and save sign changes */ + prev_delta = sub(inp[1], inp[0]); /* precompute very first delta */ + + for(n = 1; n < inp_len_minus1; n++) + { /* sign change analysis */ + curr_delta = sub(inp[n + 1], inp[n]); /* n+1 ,n , are loop ptrs */ + if (s_xor(prev_delta, curr_delta) < 0) /* a "0" delta treated as a positive sign */ + { + *p_tmp++ = n; /* store sign change bin locations , location n in the inp[] signal */ + } + prev_delta = curr_delta; + } + + k = (LC3_INT16)(p_tmp - &(sc_idx[pairs_start])); + + /* copy sign change location values to a pairs array */ + /* leave one initial sc_idx location open for a potential initial DC value */ + + for(j = 0; j < k; j++){ + cand_pairs[j + pairs_start] = inp[sc_idx[j + pairs_start]]; + } + + /* filter away a potential single initial/trailing plateau + to enable correct analysis for adding DC or fs/2 bins */ + + + if((sub(k, 2) >= 0) && + (sub(cand_pairs[pairs_start], cand_pairs[pairs_start + 1]) == 0)){ + pairs_start = add(pairs_start, 1); + k = sub(k, 1); + } + + /* filter away potential single trailing plateu */ + pairs_end = sub(add(pairs_start, k), 1); /* point to last established sign change element */ + + if ((sub(k, 2) >= 0) && + (sub(cand_pairs[sub(pairs_end, 1)], cand_pairs[pairs_end]) == 0)){ + k = sub(k, 1); + } + pairs_end = sub(add(pairs_start, k), 1); /* recalc ptr to last element */ + + + /* conditionally add high/lows on both sides of input (pre_dc or fin) as candidates */ + add_dc_flag = 0; + add_fin_flag = 0; + + + if(sub(k, 1) == 0) /* one single sign change found special case */ + { + if (sub(inp[0], cand_pairs[pairs_start]) != 0) + { + add_dc_flag = 1; /* not plateau */ + } + + if (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) != 0) + { + add_fin_flag = 1; /* not plateau */ + } + } + + if(sub(k, 2) >= 0) + { + delta_predc = sub(cand_pairs[pairs_start + 1], cand_pairs[pairs_start]); + delta_fin = sub(cand_pairs[pairs_end], cand_pairs[pairs_end - 1]); + + /* plateaus are allowed to be detected by xor sign change, + but still not allowed at the start nor at the end */ + + add_dc_flag = 1; + if (sub(inp[0], cand_pairs[pairs_start]) == 0) + { + add_dc_flag = 0; /* plateau down or , plateaus up., --> do not add DC */ + } + + + if ((sub(inp[0], cand_pairs[pairs_start]) < 0) && (delta_predc > 0)) + { + add_dc_flag = -1; /*UP - up ... replace */ + } + + if ((sub(inp[0], cand_pairs[pairs_start]) > 0) && (delta_predc < 0)) + { + add_dc_flag = -1; /* DOWN - down ... % replace */ + } + + add_fin_flag = 1; + if (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) == 0) + { + add_fin_flag = 0; /* up - plateau ... */ + } + + if ((delta_fin > 0) && (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) < 0)) + { + add_fin_flag = -1; /* up - UP ... % replace , hard to hit */ + } + + if ((delta_fin < 0) && (sub(cand_pairs[pairs_end], inp[inp_len_minus1]) > 0)) + { + add_fin_flag = -1; /*down - DOWN ... % replace */ + } + + } + + if(add_dc_flag > 0) + { /* add DC */ + pairs_start = sub(pairs_start, 1); + cand_pairs[pairs_start] = inp[0]; + sc_idx[pairs_start] = 0; + k = add(k, 1); + } + if(add_dc_flag < 0) + { /* -1 --> replace with DC*/ + cand_pairs[pairs_start] = inp[0]; + sc_idx[pairs_start] = 0; + } + + if(add_fin_flag > 0) + { /* add FS/2 */ + pairs_end = add(pairs_end, 1); + cand_pairs[pairs_end] = inp[inp_len_minus1]; + sc_idx[pairs_end] = inp_len_minus1; + k = add(k, 1); + } + if(add_fin_flag < 0) + { /* -1, replace tail with FS/2*/ + cand_pairs[pairs_end] = inp[inp_len_minus1]; + sc_idx[pairs_end] = inp_len_minus1; + } + /* preliminary cand_pairs now only have highs , lows , no initial/trailing plateaus */ + + + /* we allow the DC/FsBy2 lows to be used as the candidatelLow */ + low_val_cand_pairs = inp_low; + val_range = sub(inp_high, low_val_cand_pairs); /* used to determine if search is useful at all */ + + + if ((sub(val_range, PEAK_LOCATOR_RES_FX) < 0) || + (sub(inp_high, sens) < 0)) + { + k = 0; + } + + + if ((k == 0) && (sub(val_range, sens) >= 0)) + { + k = 1; + } + + + if(sub(k, 2) > 0) + { + /* low, high, low, ... or + high, low, high, ...*/ + + cand_phase_start = pairs_start; /*assume first candidate is a high */ + if (sub(cand_pairs[pairs_start], cand_pairs[pairs_start + 1]) < 0) + { + cand_phase_start = add(pairs_start, 1); /* first is a low, --> skip to next higher cand */ + } + + /* high, low, high, ... */ + tmp = k; + if (sub(cand_phase_start, pairs_start) != 0) + { + tmp = sub(tmp, 1); + } + num_pairs = tmp / 2; // shr(tmp, 1); + n_tail_values = sub(tmp, num_pairs * 2); // shl(num_pairs, 1)); + + /* filter preliminary sign changes into sensitivity filtered sign changes */ + + *n_fsc = 0; /* counter of filtered fsc_idx */ + cand_high = low_val_cand_pairs; + cand_idx = -1; /* sentinel location for no high cand found yet. */ + cand_pairs[-1] = low_val_cand_pairs; + + prev_low = low_val_cand_pairs; + prev_low_plus_sens = add(prev_low, sens); + + /* filter loop for high - low sign change pairs */ + /* idx_high, idx_low are raw pointers into the cand_pairs and sc_idx arrays */ + + for(idx_high = cand_phase_start; idx_high < (cand_phase_start + 2 * num_pairs); idx_high += 2) + { + idx_low = idx_high + 1; /* loop ptr increase */ + + /* new high candidate larger than previous candidate and */ + /* sensitivity still larger than the the previous low */ + tmp = MAX(cand_high, prev_low_plus_sens); + if (sub(cand_pairs[idx_high], tmp) > 0) + { + cand_idx = idx_high; /* enable or shift candidate position fwd */ + } + cand_high = cand_pairs[cand_idx]; /* NB, cand_pairs[-1] , has the low_val_cand_pairs value stored */ + + /* now check the fwd idx_low of the current {high,low} pair */ + prev_low = MIN(cand_pairs[idx_low], prev_low); + + tmp = sub(cand_high, sens); + if(sub(tmp, cand_pairs[idx_low]) > 0) + { + /* this low point is now low enough to fix a previous high candidate */ + + fsc_idx[*n_fsc] = cand_idx; /*% add cand high idx -> output idx list*/ + *n_fsc = add(*n_fsc, 1); + + prev_low = cand_pairs[idx_low]; /* use this value as new low estimate */ + cand_idx = -1; /* no candidate until next pair or tail bin, and pt to lowVal */ + cand_high = low_val_cand_pairs; /* enable next candidate to be selected immediately */ + } + prev_low_plus_sens = add(prev_low, sens); + } /* { high, low} for loop */ + + + if((n_tail_values == 0) && (cand_idx >= 0)) + { + /* no tail low or high value to analyze + still may need to lock a non-locked but qualified candidate */ + fsc_idx[*n_fsc] = cand_idx; + *n_fsc = add(*n_fsc, 1); + } + + + /* cand_pairs vector may have a last orphan value */ + if(n_tail_values > 0) + { + /* cand_pairs vector may have a last orphan tail value */ + /* + logic boils down to if (nTailValues > 0) && (cand_pairs(n_end) > tmp) + there is a last one trailing high to process + + a) the last high, may be a new high Peak if we have not yet + locked the current candidate + b) if we have locked the last candidate, the last high may also be + a highpeak if it is high enough from the(newly set previous) valley floor. + + tmp=a||b + */ + + tmp = MAX(cand_high, prev_low_plus_sens); + tmp = sub(cand_pairs[pairs_end], tmp); + if(tmp > 0) + { + fsc_idx[*n_fsc] = pairs_end; + *n_fsc = add(*n_fsc, 1); + } + else + { + if(cand_idx >= 0) + { /* we have a previously established high candidate */ + fsc_idx[*n_fsc] = cand_idx; + *n_fsc = add(*n_fsc, 1); + } + + } + } + + /* move high locations info from fsc_idx , to output */ + for(j = 0; j < *n_fsc; j++) + { + int_plocs[j] = sc_idx[fsc_idx[j]]; + + } + + } /* end of pairs + [tail] section filtering */ + else + { + /* constant/single rise or constant decay or very low overall values, cases */ + *n_fsc = 0; + + tmp = sub(inp_high, sens); + if((k != 0) && (sub(tmp, low_val_cand_pairs) > 0)) + { + /* low,high */ + /* high,low */ + tmp = plc_phEcu_find_ind_fx(inp, inp_len, inp_high); + int_plocs[0] = tmp; /* simply locate the high peak*/ + *n_fsc = 1; + if (tmp < 0) + { /*safety in case max value index was not found */ + *n_fsc = 0; + } + } + } + + return; +} + diff --git a/lc3plus/plc_phecu_subst_spec.c b/lc3plus/plc_phecu_subst_spec.c new file mode 100644 index 0000000000000000000000000000000000000000..43f806339b8ed85c9b5a1ebae1f1586210dda817 --- /dev/null +++ b/lc3plus/plc_phecu_subst_spec.c @@ -0,0 +1,247 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" +#include "constants.h" + + +static LC3_INT32 own_rand(LC3_INT32 seed); +static Complex valley_magnitude_adj(Complex X_i_in, LC3_INT32 uni_seed, LC3_FLOAT cos_F); +static LC3_INT32 rand_phase(LC3_INT32 seed_in, LC3_FLOAT* cos_F); + +void plc_phEcu_subst_spec(LC3_INT32* plocs, LC3_INT32 n_plocs, LC3_FLOAT* f0est, LC3_INT32 time_offs, Complex* X, LC3_INT32 X_len, + LC3_FLOAT* mag_chg_gr, LC3_INT32 *seed, LC3_FLOAT* alpha, LC3_FLOAT* beta, LC3_FLOAT* Xavg, + LC3_INT32 t_adv_in, LC3_INT32 Lprot, LC3_INT32 delta_corr, LC3_FLOAT *corr_phase_dbg, + LC3_FLOAT *X_i_new_re_dbg, LC3_FLOAT *X_i_new_im_dbg) { + + LC3_INT32 i, i2, lprotBy2Minus1, one_peak_flag_mask, noise_mag_scale; + LC3_INT32 t_adv; + LC3_FLOAT corr_phase[MAX_PLC_NPLOCS] = {0}; + LC3_FLOAT cos_F, mag_chg_local, alpha_local, beta_local, tmp; + Complex X_i, X_i_new; + LC3_INT32 segmentLen, e; + LC3_FLOAT Xph; + LC3_FLOAT seed_local; + LC3_INT32 binCounter, subInd; + + UNUSED(corr_phase_dbg); + UNUSED(X_i_new_re_dbg); + UNUSED(X_i_new_im_dbg); + + seed_local = (LC3_FLOAT) *seed; + + + lprotBy2Minus1 = imin(320, Lprot/2 - 1); /* limit to 20 KHz */ + + + t_adv = t_adv_in + time_offs; + + for (i = 0; i < n_plocs; i++) { + corr_phase[i] = (LC3_FLOAT)2.0 * (LC3_FLOAT)M_PI * (f0est[i]/Lprot)*(LC3_FLOAT)t_adv; + } + + + // EVOLVE PHASE ----------------- + binCounter = 1; + subInd = 0; + + one_peak_flag_mask = -1; + if (n_plocs < 3 && n_plocs > 0) { + one_peak_flag_mask = 0; + } + + noise_mag_scale = 0; + if (n_plocs == 0 || time_offs != 0) { + noise_mag_scale = 1; + } + + if (n_plocs == 0) { + X[0] = realtoc(0); + X[X_len-1] = realtoc(0); + } + + + if (n_plocs != 0) { + for (i = 0; i < n_plocs; i++) { + LC3_INT32 delta_corr_dn = delta_corr; + LC3_INT32 delta_corr_up = delta_corr; + + if (i > 0) { + delta_corr_dn = imin( ((plocs[i] - plocs[i - 1] - 1) / 2), delta_corr_dn); + } + + if (i < n_plocs - 1) { + delta_corr_up = imin( ((plocs[i + 1] - plocs[i] - 1) / 2), delta_corr_up); + } + + segmentLen = (plocs[i] - delta_corr_dn) - binCounter; + + for (i2 = 0; i2 < segmentLen; i2++) { + seed_local = (LC3_FLOAT)rand_phase((LC3_INT32)seed_local, &cos_F); + + X_i = X[binCounter]; + X_i_new = cmul(X_i, cexpi((LC3_FLOAT)M_PI*seed_local / (LC3_FLOAT)32768.0)); + + + seed_local = (LC3_FLOAT)own_rand((LC3_INT32)seed_local); + + if (noise_mag_scale != 0) { + X_i = valley_magnitude_adj(X_i_new,(LC3_INT32) seed_local, cos_F); + X_i_new = X_i; + } + + mag_chg_local = mag_chg_gr[subInd]; + alpha_local = alpha[subInd]; + + if (beta[subInd] != 0) { + tmp = beta[subInd] * Xavg[subInd]; + if (one_peak_flag_mask == 0) { + tmp = 0; + X_i_new = realtoc(0); + } + X[binCounter] = cadd(cmul(realtoc(alpha_local), X_i_new), cmul(realtoc(tmp), cexpi((LC3_FLOAT)M_PI*seed_local / (LC3_FLOAT)32768.0))); + } + else { + if (one_peak_flag_mask == 0) { + X_i_new = realtoc(0); + } + + X[binCounter] = cmul(realtoc(mag_chg_local), X_i_new); + } + + binCounter++; + + if (binCounter >= gwlpr[subInd + 1]) { + subInd++; + } + } + + e = plocs[i] + delta_corr_up; + if (e > lprotBy2Minus1) { + e = lprotBy2Minus1; + } + + Xph = corr_phase[i]; + + segmentLen = e - (binCounter - 1); + + for (i2 = 0; i2 < segmentLen; i2++) + { + seed_local = (LC3_FLOAT)own_rand((LC3_INT32)seed_local); + X_i = X[binCounter]; + + { + LC3_INT32 nrep =(LC3_INT32) LC3_FLOOR(Xph / (2.0f*(LC3_FLOAT)M_PI)); + + X_i_new = cmul(X_i, cexpi(Xph - (2.0f*(LC3_FLOAT)M_PI*(LC3_FLOAT)nrep))); + } + + + seed_local = (LC3_FLOAT)own_rand((LC3_INT32)seed_local); + + mag_chg_local = mag_chg_gr[subInd]; + alpha_local = alpha[subInd]; + beta_local = beta[subInd]; + if (beta_local != 0) { + + assert(alpha_local == mag_chg_local); + tmp = beta_local * Xavg[subInd]; + + X[binCounter] = cadd(cmul(realtoc(alpha_local), X_i_new), cmul(realtoc(tmp), cexpi((LC3_FLOAT)M_PI*seed_local / (LC3_FLOAT)32768.0))); + } + else + { + X[binCounter] = cmul(realtoc(mag_chg_local), X_i_new); + } + + binCounter++; + + if (binCounter >= gwlpr[subInd + 1]) { + subInd++; + } + } + } + } + + segmentLen = lprotBy2Minus1 - (binCounter - 1); + + for (i = 0; i < segmentLen; i++) { + seed_local = (LC3_FLOAT)rand_phase((LC3_INT32)seed_local, &cos_F); + + X_i = X[binCounter]; + X_i_new = cmul(X_i, cexpi((LC3_FLOAT)M_PI*seed_local/(LC3_FLOAT)32768.0)); + + seed_local = (LC3_FLOAT)own_rand((LC3_INT32)seed_local); + + if (noise_mag_scale != 0) { + X_i = valley_magnitude_adj(X_i_new, (LC3_INT32)seed_local, cos_F); + X_i_new = X_i; + } + + if (one_peak_flag_mask == 0) { + X_i_new = realtoc(0); + } + + alpha_local = alpha[subInd]; + mag_chg_local = mag_chg_gr[subInd]; + + if (beta[subInd] != 0) { + assert(alpha_local == mag_chg_local); + tmp = beta[subInd]*Xavg[subInd]; + + if (one_peak_flag_mask == 0) { + tmp = 0; + } + + X[binCounter] = cadd(cmul(realtoc(alpha_local), X_i_new), cmul(realtoc(tmp), cexpi((LC3_FLOAT)M_PI*seed_local/(LC3_FLOAT)32768.0))); + } + else + { + X[binCounter] = cmul(realtoc(mag_chg_local), X_i_new); + } + + binCounter++; + + if (binCounter >= gwlpr[subInd + 1]) { + subInd++; + } + } + + + *seed = (LC3_INT32)seed_local; +} + +static LC3_INT32 own_rand(LC3_INT32 seed) { + LC3_INT32 retSeed; + assert(seed <= 32767 && seed >= -32768); + retSeed = (13849 + (seed + 32768) * 31821) & 65535; + retSeed -= 32768; + assert(retSeed <= 32767 && retSeed >= -32768); + return retSeed; +} + +static Complex valley_magnitude_adj(Complex X_i_in, LC3_INT32 uni_seed, LC3_FLOAT cos_F) { + LC3_FLOAT scale = ((LC3_FLOAT)0.5*(LC3_FLOAT)uni_seed/(LC3_FLOAT)32768.0) + (LC3_FLOAT)0.5*cos_F; + scale = (LC3_FLOAT)1.0 + (LC3_FLOAT)0.25*scale; + + assert(scale <= (LC3_FLOAT)1.25); + assert(scale >= (LC3_FLOAT)0.75); + + return cmul(X_i_in, realtoc(scale)); +} + +static LC3_INT32 rand_phase(LC3_INT32 seed_in, LC3_FLOAT* cos_F) { + LC3_FLOAT seed = (LC3_FLOAT)own_rand(seed_in); + *cos_F = LC3_COS((LC3_FLOAT)M_PI*seed/(LC3_FLOAT)32768.0); + return (LC3_INT32) seed; +} + diff --git a/lc3plus/plc_phecu_tba_per_band_gain.c b/lc3plus/plc_phecu_tba_per_band_gain.c new file mode 100644 index 0000000000000000000000000000000000000000..9f585f28dd8104991b5598f8f029df55f69d0433 --- /dev/null +++ b/lc3plus/plc_phecu_tba_per_band_gain.c @@ -0,0 +1,44 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_tba_per_band_gain(LC3_INT32 n_grp, LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *trans, LC3_FLOAT *grp_pow_change) +{ + LC3_INT32 i; + + /* per band gain */ + for (i = 0; i < n_grp; i++) { + if (gr_pow_left[i] > 0) + { + trans[i] = gr_pow_right[i] / gr_pow_left[i]; + } + else + { + /* handle division by zero case */ + if (gr_pow_right[i] > 0) + { + trans[i] = 10.0; /* positive/0 transient */ + } + else + { + trans[i] = 1.0; /* 0/0 no transient , no power change */ + } + } + grp_pow_change[i] = (LC3_FLOAT) 10.0 * LC3_LOGTEN(trans[i]); + + } + + return; +} + diff --git a/lc3plus/plc_phecu_tba_spect_Xavg.c b/lc3plus/plc_phecu_tba_spect_Xavg.c new file mode 100644 index 0000000000000000000000000000000000000000..600b9714e45865fb437ea653d8de8e2dab182a23 --- /dev/null +++ b/lc3plus/plc_phecu_tba_spect_Xavg.c @@ -0,0 +1,45 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_tba_spect_Xavg(LC3_INT32 fs_idx, LC3_INT32 n_grp, LC3_FLOAT *oold_spec_shape, + LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spec_shape, + LC3_FLOAT *old_EwPtr, LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *Xavg) +{ + LC3_INT32 i; + LC3_FLOAT XavgEn[MAX_LGW]; + LC3_FLOAT xfp_w_scale, oold_Escale, old_Escale; + + /* 8k 16k 24k 32k 48k */ + LC3_FLOAT flt_xfp_wE_MDCT2FFT_target[5] = { (LC3_FLOAT) 1.9906, (LC3_FLOAT) 4.0445, (LC3_FLOAT) 6.0980, (LC3_FLOAT) 8.1533, (LC3_FLOAT) 12.2603 }; + LC3_INT32 gw_0[10] = { 1, 3, 5, 9, 17, 33, 49, 65, 81, 97 }; + + /* prepare scale factor */ + + xfp_w_scale = LC3_ROUND(flt_xfp_wE_MDCT2FFT_target[fs_idx]/(LC3_FLOAT)16.0*(LC3_FLOAT) 32768.0) / (LC3_FLOAT) LC3_POW(2,11); + + /* prepare left and right subband energies */ + oold_Escale = (*oold_EwPtr) * xfp_w_scale; + old_Escale = (*old_EwPtr) * xfp_w_scale; + for (i = 0;i < n_grp;i++) { + gr_pow_left[i] = oold_spec_shape[i] * oold_Escale; + gr_pow_right[i] = old_spec_shape[i] * old_Escale; + + XavgEn[i] = ((LC3_FLOAT) 0.5) * (gr_pow_left[i] + gr_pow_right[i]) / (gw_0[i + 1] - gw_0[i]); + Xavg[i] = LC3_SQRT(XavgEn[i]); + } + + return; +} + diff --git a/lc3plus/plc_phecu_tba_trans_dect_gains.c b/lc3plus/plc_phecu_tba_trans_dect_gains.c new file mode 100644 index 0000000000000000000000000000000000000000..e5f0d3caae0d71e0600e9281e0e84f7c781489b4 --- /dev/null +++ b/lc3plus/plc_phecu_tba_trans_dect_gains.c @@ -0,0 +1,320 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +#define BETA_MUTE_FAC 0.5 /* % attenuation factor per additional bad frame, FX uses 0.5 (shift right with 1 bit) */ +#define BETA_MUTE_FAC_INI 0.5 + + +#define OFF_FRAMES_LIMIT 30 /* 300 ms for LC3 10 ms */ + + + +#define LGW32k 7 +#define LGW16k 5 + + +/* Tables for attentuation of mag_chg, copied from FX */ +/* Tables are in Q15 */ +/* 0.3 dB attenuation per frame for 16 frames, then 6 dB attenuation per frame */ +const LC3_INT32 POW_ATT_TABLE1[OFF_FRAMES_LIMIT + 1] = { 32767, 31656, 30581, 29543, 28540, 27571, 26635, 25731, 24857, 24013, + 23198, 22410, 21650, 20915, 20205, 19519, 9759, 4880, 2440, 1220, + 610, 305, 152, 76, 38, 19, 10, 5, 2, 1, + 0 }; +/* % 0.4 dB attenuation per frame for 16 frames, then 6 dB attenuation per frame */ +const LC3_INT32 POW_ATT_TABLE0[OFF_FRAMES_LIMIT + 1] = { 32767, 31293, 29885, 28540, 27255, 26029, 24857, 23738, 22670, 21650, + 20675, 19745, 18856, 18007, 17197, 16423, 8211, 4106, 2053, 1026, + 513, 257, 128, 64, 32, 16, 8, 4, 2, 1, + 0 }; + +#ifdef PLC2_FADEOUT_IN_MS +#if PLC2_FADEOUT_IN_MS == 0 +/* default setting only requieres two tables */ +const Word16* const POW_ATT_TABLES[1 + 2] = +{ NULL, POW_ATT_TABLE1/*1 0.3dB steps */ , POW_ATT_TABLE0/*2 0.4 dB steps*/, +}; +#else +const LC3_INT32 POW_ATT_TABLE_p3x8_6[] = { + 32767, 31656, 30581, 29543, 28540, 27571, 26635, 25731, 12865, 6433, + 3216, 1608, 804, 402, 201, 101, 50, 25, 13, 6, + 3, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; +const LC3_INT32 POW_ATT_TABLE_p4x8_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 29885, 28540, 27255, 26029, 24857, 23738, 11869, 5935, + 2967, 1484, 742, 371, 185, 93, 46, 23, 12, 6, + 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 }; + +const LC3_INT32 POW_ATT_TABLE_p3x4_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31656, 30581, 29543, 14772, 7386, 3693, 1847, 923, 462, + 231, 115, 58, 29, 14, 7, 4, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +const LC3_INT32 POW_ATT_TABLE_p4x4_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 29885, 28540, 14270, 7135, 3568, 1784, 892, 446, + 223, 111, 56, 28, 14, 7, 3, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +const LC3_INT32 POW_ATT_TABLE_p3x2_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31656, 15828, 7914, 3957, 1979, 989, 495, 247, 124, + 62, 31, 15, 8, 4, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +const LC3_INT32 POW_ATT_TABLE_p4x2_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 31293, 15647, 7823, 3912, 1956, 978, 489, 244, 122, + 61, 31, 15, 8, 4, 2, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +const LC3_INT32 POW_ATT_TABLE_p3x1_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, + 32, 16, 8, 4, 2, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +const LC3_INT32 POW_ATT_TABLE_p4x1_6[OFF_FRAMES_LIMIT + 1] = { + 32767, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, + 32, 16, 8, 4, 2, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + + +const LC3_INT32* const POW_ATT_TABLES[1 + 10] = +{ NULL, + POW_ATT_TABLE1 , POW_ATT_TABLE0, /* .3dB x16,16 6dB steps */ /* .4dB x16, 16 6dB steps */ /*original/default */ + POW_ATT_TABLE_p3x8_6, POW_ATT_TABLE_p4x8_6, /* .3dB x8, 24 6dB steps */ /* .4dB x8, 24 6dB steps */ + POW_ATT_TABLE_p3x4_6, POW_ATT_TABLE_p4x4_6, /* .3dB x4, 28 6dB steps */ /* .4dB x4, 28 6dB steps */ + POW_ATT_TABLE_p3x2_6, POW_ATT_TABLE_p4x2_6, /* .3dB x2, 30 6dB steps */ /* .4dB x2, 30 6dB steps */ + POW_ATT_TABLE_p3x1_6, POW_ATT_TABLE_p4x1_6 /* .3dB x1, 30 6dB steps */ /* .4dB x1, 30 6dB steps */ +}; +#endif +#endif + +void plc_phEcu_tba_trans_dect_gains(LC3_INT32 burst_len, LC3_INT32 n_grp, LC3_FLOAT *grp_pow_change, + LC3_FLOAT *stPhECU_beta_mute, LC3_FLOAT *stPhECU_mag_chg_1st, + LC3_FLOAT *alpha, LC3_FLOAT *beta, LC3_FLOAT *mag_chg, LC3_FLOAT *ph_dith, LC3_INT32 *tr_dec, + LC3_FLOAT *att_val, LC3_INT32 *attDegreeFrames_dbg, LC3_FLOAT *thresh_dbg) +{ + + LC3_INT32 i; + LC3_FLOAT thresh_tr_dB, max_increase_grp_pow; + LC3_FLOAT max_increase_grp_pow_lin; + LC3_FLOAT grp_pow_change_lin[MAX_LGW]; + LC3_FLOAT XavgFadeinFactor; + + LC3_INT32 burst_att_thresh; + LC3_INT32 att_per_frame_idx; + LC3_INT32 att_always, attDegreeFrames; + + LC3_INT32 FADEOUT_IN_MS, PLC_P800_SPEECH_FADEOUT_IN_FRAMES, + PLC2_FADEOUT_IN_FRAMES, BURST_ATT_THRESH_PRE; + const LC3_INT32 *TABLEQ15; + LC3_INT32 BURST_ATT_THRESH; /* start attenuate with losses in a row, also starts FADE2AVG actions */ + LC3_INT32 ATT_PER_FRAME; /* initial msuic attenuation table ptr, actually implemented in table lookup! */ + LC3_INT32 BETA_MUTE_THR; /* time threshold in 10 ms frames to start beta - noise attenuation */ + + UNUSED(attDegreeFrames_dbg); + + /* constants setup */ + att_always = 0; + + XavgFadeinFactor = -1.0; + + if (PLC2_FADEOUT_IN_MS != 0) + { + if (PLC2_FADEOUT_IN_MS < 0) + { + FADEOUT_IN_MS = PLC_FADEOUT_IN_MS; /* % use TDC - SETTING as input */ + } + else + { + FADEOUT_IN_MS = PLC2_FADEOUT_IN_MS; /* % use a PLC2 individual settinsg */ + } + + PLC_P800_SPEECH_FADEOUT_IN_FRAMES = (LC3_INT32) LC3_FLOOR((LC3_FLOAT)FADEOUT_IN_MS / (LC3_FLOAT)10.0); /* % nominal svaleu for speech */ + + PLC2_FADEOUT_IN_FRAMES = MIN(OFF_FRAMES_LIMIT, MAX(6, 3 * PLC_P800_SPEECH_FADEOUT_IN_FRAMES)); /* for PLC2 we typically maintain energy 3x longer */ + + BURST_ATT_THRESH_PRE = MIN(5, MAX(1, (1 * PLC2_FADEOUT_IN_FRAMES) / 6)); /* nominal 20-40 ms to start actual muting, will be thresh +1 fot assumed music */ + + ATT_PER_FRAME = MIN(10, MAX(2, 2 * (6 - BURST_ATT_THRESH_PRE))); /* % we let the BURST_ATT_thresh control the initial table selection */ + BURST_ATT_THRESH = MIN(BURST_ATT_THRESH_PRE, 4); + BETA_MUTE_THR = MIN(4 + (OFF_FRAMES_LIMIT / 2) + 1, MAX(4, BURST_ATT_THRESH + 1 + (LC3_INT32)LC3_POW((LC3_FLOAT)2.0,BURST_ATT_THRESH_PRE - (LC3_FLOAT)1))); /* nominal time to start mandatory decrease of Xavg */ + } + + + /* Initialize in the same way as done in trans_burst_ana_fx(), even though this is not really needed */ + burst_att_thresh = BURST_ATT_THRESH; + att_per_frame_idx = ATT_PER_FRAME; + + + /* 10ms constants */ + thresh_tr_dB = 10.0; /* dB threshold kept same as for 20ms, even though transient analysis frame size was shortened */ + max_increase_grp_pow = 0; /* maximum amplification(dB) in case of onset transients, offset always deacy */ + + max_increase_grp_pow_lin = (LC3_FLOAT)1.0*LC3_POW((LC3_FLOAT)10.0, max_increase_grp_pow / (LC3_FLOAT)10.0)*(LC3_FLOAT)(32767.0 / 32768.0); + + + /* envelope setting */ + burst_att_thresh = BURST_ATT_THRESH + 1; + att_per_frame_idx = ATT_PER_FRAME - 1; + + + attDegreeFrames = 0; + if (burst_len > burst_att_thresh) + { + att_always = 1; + + /* Added to be able to able to use tables to be aligned with FX */ + /* Limit attDegreeFrames to OFF_FRAMES_LIMIT */ + attDegreeFrames = burst_len - burst_att_thresh; + + if (attDegreeFrames > OFF_FRAMES_LIMIT) + { + attDegreeFrames = OFF_FRAMES_LIMIT; + } + } + + + set_vec(1.0 * (32767.0/32768.0), mag_chg, n_grp); + set_vec(0.0, ph_dith, n_grp); + + set_vec(1.0 * (32767.0/32768.0), alpha, n_grp); + set_vec(0.0, beta, n_grp); + set_vec_int(0, tr_dec, n_grp); + + set_vec(1.0 * (32767.0/32768.0), att_val, n_grp); + + + + /* transient detection per band */ + for (i = 0;i < n_grp; i++) { + if(burst_len == 1) + { + /* first bad frame */ + grp_pow_change_lin[i] = LC3_POW((LC3_FLOAT)10.0, grp_pow_change[i]/(LC3_FLOAT)10.0); + + *stPhECU_beta_mute = BETA_MUTE_FAC_INI; + *stPhECU_beta_mute = *stPhECU_beta_mute / (LC3_FLOAT)2.0; + + /* transient processing */ + /* transients may be both rise and decay transients !! */ + + + if(LC3_FABS(grp_pow_change[i]) >= thresh_tr_dB) + { + + tr_dec[i] = 1; + } + + + /* magnitude modification */ + att_val[i] = 0.0f; + if(tr_dec[i] || att_always) { + + att_val[i] = MIN(max_increase_grp_pow_lin, grp_pow_change_lin[i]); /* % linear values !! */ + att_val[i] = LC3_SQRT(att_val[i]); + mag_chg[i] = att_val[i]; + stPhECU_mag_chg_1st[i] = att_val[i]; + } + else + { + mag_chg[i] = 1.0 * (LC3_FLOAT)(32767.0/32768.0); + stPhECU_mag_chg_1st[i] = (LC3_FLOAT)1.0; + } + } + else + { + /* burst handling based on states */ + + assert(burst_len >= 2); /* states used here */ + tr_dec[i] = 0; + + if (PLC_FADEOUT_IN_MS > 0) + { + assert(att_per_frame_idx >= 1 && att_per_frame_idx <= 10); + TABLEQ15 = POW_ATT_TABLES[att_per_frame_idx]; + att_val[i] = (LC3_FLOAT)1.0 * ( (LC3_FLOAT) TABLEQ15[MIN(OFF_FRAMES_LIMIT, attDegreeFrames )] / (LC3_FLOAT)32768.0); /* Table idx 0...N-1 therefore no + 1 */ + att_val[i] = att_val[i]; + } + else + { + + if (att_per_frame_idx == ATT_PER_FRAME) + { + att_val[i] = (LC3_FLOAT)1.0 * ( (LC3_FLOAT)POW_ATT_TABLE0[MIN(OFF_FRAMES_LIMIT, attDegreeFrames)] / (LC3_FLOAT)32768.0); + } + else + { + att_val[i] = (LC3_FLOAT)1.0 * ( (LC3_FLOAT)POW_ATT_TABLE1[MIN(OFF_FRAMES_LIMIT, attDegreeFrames)] / (LC3_FLOAT)32768.0); + } + } + + + if ( (att_val[i] != 0) && (att_val[i] * (LC3_FLOAT)32768.0 < (LC3_FLOAT)0.5) ) + { + att_val[i] = 0.0; /* for SNR measurments match in float lowest possible level to BASOP representation */ + } + + /* Apply attenuation */ + mag_chg[i] = stPhECU_mag_chg_1st[i]; + + mag_chg[i] = mag_chg[i] * att_val[i]; /* add additional attenuation from burst attenation logic */ + + if ((mag_chg[i] != 0) && (mag_chg[i] * (LC3_FLOAT)32768.0 < (LC3_FLOAT)0.5)) + { + mag_chg[i] = 0; /* for SNR measurments match in float lowest possible level to BASOP representation */ + } + + + + if(burst_len > BETA_MUTE_THR) + { + *stPhECU_beta_mute = *stPhECU_beta_mute * (LC3_FLOAT)BETA_MUTE_FAC; + } + + alpha[i] = mag_chg[i]; + + if (alpha[i] >= (LC3_FLOAT)(32766.0 / 32768.0)) + { + beta[i] = 0; /* align to BASOP more efficent use of beta */ + } + else + { + beta[i] = LC3_SQRT((LC3_FLOAT)1.0 - alpha[i]* alpha[i]) * *stPhECU_beta_mute; + } + + if ( i >= LGW32k-1) { + beta[i] = beta[i] * (LC3_FLOAT)0.1; + } + else if( i >= LGW16k-1) + { + beta[i] = beta[i] * (LC3_FLOAT)0.5; + } + + + /* limit Xavg noise contribution further in case of offset / tr_decay */ + + if ((burst_len <= burst_att_thresh) && (stPhECU_mag_chg_1st[i] < (LC3_FLOAT)(32767.0 / 32768.0))) + { + XavgFadeinFactor = (LC3_FLOAT)(burst_len - (LC3_FLOAT)1.0) / burst_att_thresh; + + XavgFadeinFactor = MIN((LC3_FLOAT)1.0, XavgFadeinFactor); + + beta[i] = beta[i] * XavgFadeinFactor; + + } + } + } + + if (thresh_dbg != NULL) + { + *thresh_dbg = XavgFadeinFactor; + } + + return; +} + diff --git a/lc3plus/plc_phecu_trans_burst_ana_sub.c b/lc3plus/plc_phecu_trans_burst_ana_sub.c new file mode 100644 index 0000000000000000000000000000000000000000..c860cd6ce3d69968dbd7b217ae7f363a7e791e27 --- /dev/null +++ b/lc3plus/plc_phecu_trans_burst_ana_sub.c @@ -0,0 +1,48 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "defines.h" +#include "functions.h" + + +void plc_phEcu_trans_burst_ana_sub(LC3_INT32 fs_idx, LC3_INT32 burst_len, LC3_INT32 n_grp, LC3_FLOAT *oold_spect_shape, + LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spect_shape, + LC3_FLOAT *old_EwPtr, LC3_FLOAT *stPhECU_beta_mute, + LC3_FLOAT *stPhECU_mag_chg_1st, LC3_FLOAT *stPhECU_Xavg, LC3_FLOAT *alpha, LC3_FLOAT *beta, LC3_FLOAT *mag_chg, LC3_INT32 *tr_dec_dbg, LC3_FLOAT *gpc_dbg) +{ + LC3_FLOAT gr_pow_left[MAX_LGW]; + LC3_FLOAT gr_pow_right[MAX_LGW]; + LC3_FLOAT trans[MAX_LGW]; + LC3_FLOAT grp_pow_change[MAX_LGW]; + LC3_FLOAT ph_dith[MAX_LGW]; + LC3_FLOAT att_val[MAX_LGW]; + LC3_INT32 tr_dec[MAX_LGW]; + + LC3_INT32 attDegreeFrames; + LC3_FLOAT thresh_dbg; + + UNUSED(tr_dec_dbg); + UNUSED(gpc_dbg); + + if (burst_len <= 1) + { + plc_phEcu_tba_spect_Xavg(fs_idx, n_grp, oold_spect_shape, oold_EwPtr, old_spect_shape, old_EwPtr, gr_pow_left, gr_pow_right, stPhECU_Xavg); + + plc_phEcu_tba_per_band_gain(n_grp, gr_pow_left, gr_pow_right, trans, grp_pow_change); + + } + + + plc_phEcu_tba_trans_dect_gains(burst_len, n_grp, grp_pow_change, stPhECU_beta_mute, stPhECU_mag_chg_1st, alpha, beta, mag_chg, ph_dith, tr_dec, att_val, &attDegreeFrames, &thresh_dbg); + + return; +} + diff --git a/lc3plus/plc_tdc.c b/lc3plus/plc_tdc.c new file mode 100644 index 0000000000000000000000000000000000000000..1a1a408f4d9d3b6216f048c34704735256eb5562 --- /dev/null +++ b/lc3plus/plc_tdc.c @@ -0,0 +1,763 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +/***************************************************************************\ + * contents/description: Main function for Time domain concealment +\***************************************************************************/ + +#include +#include "functions.h" + + +static LC3_INT16 TDC_random_short(LC3_INT16 *seed); +static LC3_FLOAT TDC_get_gainp(const LC3_FLOAT x[], const LC3_FLOAT y[], LC3_INT32 n); +static LC3_FLOAT TDC_get_gainc(const LC3_FLOAT x[], const LC3_FLOAT y[], const LC3_FLOAT *gain_p, const LC3_INT32 n, const LC3_INT32 frame_dms); +static void TDC_LPC_synthesis(const LC3_FLOAT a[], LC3_FLOAT x[], LC3_FLOAT y[], LC3_INT32 l, const LC3_FLOAT mem[], LC3_INT32 lpcorder, LC3_FLOAT *buf); +static void TDC_LPC_residu(const LC3_FLOAT *a, LC3_FLOAT *x, LC3_FLOAT *y, LC3_INT32 l, LC3_INT32 lpcorder); +static void TDC_highPassFiltering(const LC3_INT32 L_buffer, LC3_FLOAT exc2[], const LC3_FLOAT hp_filt[], const LC3_INT32 l_fir_fer); +static void TDC_f_preemph(LC3_FLOAT *signal, const LC3_FLOAT *mu, LC3_INT32 L, LC3_FLOAT *mem); +static void TDC_deemph(LC3_FLOAT *signal, const LC3_FLOAT *mu, LC3_INT32 L, const LC3_FLOAT *mem); +const LC3_FLOAT TDC_high_16[TDC_L_FIR_HP] = { 0.f, -0.0205f, -0.0651f, -0.1256f, -0.1792f, 0.8028f, -0.1792f, -0.1256f, -0.0651f, -0.0205f, 0.f }; +const LC3_FLOAT TDC_high_32[TDC_L_FIR_HP] = {-0.0517f, -0.0587f, -0.0820f, -0.1024f, -0.1164f, 0.8786f, -0.1164f, -0.1024f, -0.0820f, -0.0587f, -0.0517f}; +const LC3_FLOAT TDC_high_16_harm[TDC_L_FIR_HP] = { 0.0053f, 0.0000f, -0.0440f, 0.0000f, 0.2637f, 0.5500f, 0.2637f, 0.0000f, -0.0440f, 0.0000f, 0.0053f}; +const LC3_FLOAT TDC_high_32_harm[TDC_L_FIR_HP] = {-0.0053f, -0.0037f, -0.0140f, 0.0180f, 0.2668f, 0.4991f, 0.2668f, 0.0180f, -0.0140f, -0.0037f, -0.0053f}; +static void TDC_levinson(LC3_FLOAT *acf, LC3_INT32 len, LC3_FLOAT *out); +static void TDC_copyFLOAT(const LC3_FLOAT * X, LC3_FLOAT * Z, LC3_INT32 n); +static LC3_FLOAT TDC_dotFLOAT(const LC3_FLOAT * X, const LC3_FLOAT * Y, LC3_INT32 n); + +const LC3_INT32 beforeNextIncArray[4][4] = {{0,0,0,1}, + {0,1,0,1}, + {0,1,1,1}, + {1,1,1,1}}; +const LC3_INT32 nextIncArray[4][4] = {{1,0,0,0}, + {1,0,1,0}, + {1,0,1,1}, + {1,1,1,1}}; + +void processTdcApply_fl(const LC3_INT32 pitch_int, + const LC3_FLOAT *preemphFac, + const LC3_FLOAT* A, + const LC3_INT32 lpc_order, + const LC3_FLOAT* pcmbufHist, + const LC3_INT32 max_len_pcm_plc, + const LC3_INT32 N, + const LC3_INT32 frame_dms, + const LC3_INT32 SampRate, + const LC3_INT32 nbLostFramesInRow, + const LC3_INT32 overlap, + const LC3_FLOAT *stabFac, + LC3_FLOAT harmonicBuf[MAX_PITCH], + LC3_FLOAT synthHist[M], + LC3_INT32* fract, + LC3_INT16* seed, + LC3_FLOAT* gain_c, + LC3_FLOAT* alpha, + LC3_FLOAT* synth + ) +{ + LC3_FLOAT step, step_n; + LC3_INT32 i, len, Tc, nbLostCmpt_loc, nextInc, beforeNextInc; + LC3_FLOAT gain_h, tmp, gain_p; + LC3_FLOAT *exc2, *exc_buf, *exc, *x_pre, *buf, *pt_exc, *pt1_exc, *synthMemPtr; + LC3_FLOAT *harmonicBufPtr; + LC3_FLOAT synth_mem[M]; + const LC3_FLOAT *hp_filt, *high_harm; + LC3_FLOAT gainInov; + LC3_FLOAT hpBlendFac; + char *scratchSpace1st, *scratchSpaceTmp; + char scratchSpace[(MAX_LEN_PCM_PLC + MDCT_MEM_LEN_MAX + MAX_LEN_PCM_PLC + 1 + M) * sizeof(LC3_FLOAT)]; + LC3_FLOAT alphaPrev; + LC3_FLOAT throttle; + LC3_INT32 frame_dms_idx, nbLostFramesInRow_mod; + + memset(synth_mem, 0, M * sizeof(LC3_FLOAT)); + memset(scratchSpace, 0, (MAX_LEN_PCM_PLC + MDCT_MEM_LEN_MAX + MAX_LEN_PCM_PLC + 1 + M) * sizeof(LC3_FLOAT)); + + /* len of synthesized signal */ + len = N + overlap; + + nbLostCmpt_loc = floor(frame_dms/100.0 * (nbLostFramesInRow - 1) + 1); + frame_dms_idx = frame_dms / 25 - 1; /* 0,1,2,3 */ + nbLostFramesInRow_mod = (nbLostFramesInRow - 1) % 4; + + beforeNextInc = beforeNextIncArray[frame_dms_idx][nbLostFramesInRow_mod]; + nextInc = nextIncArray [frame_dms_idx][nbLostFramesInRow_mod]; + + if (nbLostCmpt_loc > PLC_FADEOUT_IN_MS/10) + { + gain_p = 0; + *gain_c = 0; + *alpha = 0; + memset(synth, 0, len * sizeof(LC3_FLOAT)); + return; + } + + Tc = pitch_int; + if (*fract > 0) { + Tc++; + } + + /*---------------------------------------------------------------- + * Buffer Initialization for timeDomainConcealment_Apply + * + * 1st + * |--exc_buf--|--x_pre--| + * | |--exc2--| + * | |--buf (LPC Syn)--| + * + *---------------------------------------------------------------*/ + + scratchSpace1st = scratchSpace; + exc_buf = (LC3_FLOAT*)scratchSpace1st; scratchSpace1st += (LC3_INT32)sizeof(LC3_FLOAT) * (Tc + N/2 + len); + exc = exc_buf + (Tc + N/2); + + scratchSpaceTmp = scratchSpace1st; + x_pre = (LC3_FLOAT*)scratchSpaceTmp; scratchSpaceTmp += (LC3_INT32)sizeof(LC3_FLOAT) * (lpc_order + Tc + N/2 + 1); + + /*---------------------------------------------------------------* + * LPC Residual * + *---------------------------------------------------------------*/ + if (nbLostFramesInRow == 1) + { + /* copy buffer to pre-emphasis buffer */ + TDC_copyFLOAT(&(pcmbufHist[max_len_pcm_plc-(lpc_order+Tc+N/2+1)]), &(x_pre[0]), lpc_order+Tc+N/2+1); + + /* apply pre-emphasis to the signal */ + TDC_f_preemph(&(x_pre[1]), preemphFac, lpc_order+Tc+N/2, &x_pre[0]); + + /* copy memory for LPC synth */ + TDC_copyFLOAT(&(x_pre[Tc+N/2+1]), synth_mem, lpc_order); + + /* LPC Residual */ + TDC_LPC_residu(A, &(x_pre[lpc_order+1]), &(exc[-(Tc+N/2)]), Tc+N/2, lpc_order); + } + + /*---------------------------------------------------------------* + * Calculate gains * + *---------------------------------------------------------------*/ + if (nbLostFramesInRow == 1) + { + if (pitch_int == Tc) + { + gain_p = TDC_get_gainp( &(x_pre[lpc_order+Tc+1]), &(x_pre[lpc_order+1]), N/2 ); + } + else + { + tmp = TDC_get_gainp( &(x_pre[lpc_order+Tc+1]), &(x_pre[lpc_order+2]), N/2 ); + gain_p = TDC_get_gainp( &(x_pre[lpc_order+Tc+1]), &(x_pre[lpc_order+1]), N/2 ); + + if (tmp > gain_p) { + Tc = pitch_int; + gain_p = tmp; + *fract = 0; + } + } + + if(gain_p < 0.0f) + { + gain_p = 0.0f; + } + + if(gain_p > 1.0f) + { + gain_p = 1.0f; + } + + *gain_c = 0.0f; + + if (pitch_int == Tc) + { + *gain_c = TDC_get_gainc( &(exc[-1]), &(exc[-1-Tc]), &gain_p, N/2, frame_dms ); + } + else + { + tmp = TDC_get_gainc( &(exc[-1]), &(exc[-1-pitch_int]), &gain_p, N/2, frame_dms ); + *gain_c = TDC_get_gainc( &(exc[-1]), &(exc[-1-Tc]) , &gain_p, N/2, frame_dms ); + *gain_c = MIN(*gain_c, tmp); + } + } + else + { + gain_p = *alpha; + } + + /*---------------------------------------------------------------* + * Damping factor * + *---------------------------------------------------------------*/ + + alphaPrev = 1; + if (nbLostFramesInRow > 1) + { + alphaPrev = *alpha; + } + + if (nextInc != 0) + { + switch (nbLostCmpt_loc) + { + case 1: + *alpha = (LC3_FLOAT)sqrt(gain_p); + if ( *alpha > 0.98f ) + { + *alpha = 0.98f; + } + else if ( *alpha < 0.925f ) + { + *alpha = 0.925f; + } + break; + case 2: + *alpha = (0.63f + 0.35f * (*stabFac)) * gain_p; + if ( *alpha < 0.919f ) + { + *alpha = 0.919f; + } + break; + default: + *alpha = (0.652f + 0.328f * (*stabFac)) * gain_p; + } + } + + if (nbLostCmpt_loc > 3) + { + switch (frame_dms) + { + case 25: *alpha *= PLC34_ATTEN_FAC_025; break; + case 50: *alpha *= PLC34_ATTEN_FAC_050; break; + case 100: *alpha *= PLC34_ATTEN_FAC_100; break; + } + } + + if (nbLostCmpt_loc > 5) + { + gain_p = *alpha; + } + + /*---------------------------------------------------------------* + * Construct the harmonic part * + * Last pitch cycle of the previous frame is repeatedly copied. * + *---------------------------------------------------------------*/ + + pt_exc = harmonicBuf; + pt1_exc = exc - Tc; + + if( nbLostFramesInRow == 1 ) + { + if (*stabFac >= 1) + { + TDC_copyFLOAT(pt1_exc, pt_exc, Tc); + } + else + { + /* These values are necessary for the last five filtered samples */ + TDC_copyFLOAT(&exc[-Tc], exc, (TDC_L_FIR_HP-1)/2); + + high_harm = TDC_high_32_harm; + if (SampRate <= 16000) + { + high_harm = TDC_high_16_harm; + } + + for( i = 0; i < Tc; i++ ) + { + pt_exc[i] = TDC_dotFLOAT(&pt1_exc[i-(TDC_L_FIR_HP-1)/2], high_harm, TDC_L_FIR_HP); + } + } + } + + /*---------------------------------------------------------------* + * Construct the random part of excitation * + *---------------------------------------------------------------*/ + scratchSpaceTmp = scratchSpace1st; + exc2 = (LC3_FLOAT*)scratchSpaceTmp; scratchSpaceTmp += (LC3_INT32)sizeof(LC3_FLOAT) * (len + TDC_L_FIR_HP - 1); + + for (i = 0; i < len + TDC_L_FIR_HP - 1; i++) { + exc2[i] = (LC3_FLOAT)TDC_random_short(seed); + } + + /* high pass noise */ + if (SampRate <= 16000 ) + { + hp_filt = TDC_high_16; + } else { + hp_filt = TDC_high_32; + } + + if ( nbLostFramesInRow == 1 ) + { + TDC_highPassFiltering(len, exc2, hp_filt, TDC_L_FIR_HP); + } + else + { + /* moves from 0 to 1, speed is defined by PLC3_HPBLENDTHROTTLE */ + throttle = (LC3_FLOAT)nbLostCmpt_loc / (nbLostCmpt_loc + PLC3_HPBLENDTHROTTLE); + hpBlendFac = (1 - *alpha) * throttle; + + for (i = 0; i < len; i++) + { + exc2[i] = hpBlendFac * exc2[i+TDC_L_FIR_HP/2] + (1 - hpBlendFac) * TDC_dotFLOAT(&exc2[i], hp_filt, TDC_L_FIR_HP ); + } + } + + /* normalize energy */ + gainInov = 1.0f / (LC3_FLOAT)sqrt(TDC_dotFLOAT( exc2, exc2, N ) / (LC3_FLOAT)N + 0.01f ); + gainInov *= (1.1f - 0.75* gain_p); + + /* gains */ + gain_h = alphaPrev; + tmp = *gain_c * *alpha / alphaPrev; + + /* update steps */ + step = (1.0f/(LC3_FLOAT)N) * (gain_h - *alpha); + step_n = (1.0f/(LC3_FLOAT)N) * (*gain_c - tmp); + + /*---------------------------------------------------------------* + * Construct the total excitation * + *---------------------------------------------------------------*/ + harmonicBufPtr = harmonicBuf + ((nbLostFramesInRow - 1) * N) % Tc; + + for ( i = 0; i < len; i++ ) { + /* harmonic */ + if (harmonicBufPtr - harmonicBuf >= Tc) { + harmonicBufPtr = harmonicBuf; + } + exc[i] = *harmonicBufPtr++; + exc[i] *= gain_h; + + /* random */ + exc2[i] *= *gain_c * gainInov; + + /* total */ + exc[i] = exc[i] + exc2[i]; + + /* update */ + gain_h -= step; + gain_h = MAX(gain_h, 0); + *gain_c -= step_n; + *gain_c = MAX(*gain_c, 0); + } + + *gain_c = tmp; + + /*----------------------------------------------------------* + * Compute the synthesis speech * + *----------------------------------------------------------*/ + buf = (LC3_FLOAT*)scratchSpace1st; scratchSpace1st += (LC3_INT32)sizeof(LC3_FLOAT) * (len + lpc_order); + synthMemPtr = synth_mem; + if (nbLostFramesInRow != 1) + { + synthMemPtr = synthHist; + } + + TDC_LPC_synthesis(A, + &exc[0], + synth, + len, + synthMemPtr, + lpc_order, + buf); + + TDC_copyFLOAT(&synth[N-lpc_order], synthHist, lpc_order); + + /*----------------------------------------------------------* + * Deemphasis * + *----------------------------------------------------------*/ + TDC_deemph( synth, preemphFac, len, &pcmbufHist[max_len_pcm_plc-1] ); + + /*----------------------------------------------------------* + * Fade to zero * + *----------------------------------------------------------*/ + if (beforeNextInc != 0) + { + if (nbLostCmpt_loc == PLC_FADEOUT_IN_MS/10) + { + gain_h = 1; + step = 1.0f/(LC3_FLOAT)N; + for ( i = 0; i < N; i++ ) { + synth[i] *= gain_h; + gain_h -= step; + } + memset(&synth[N], 0, overlap * sizeof(LC3_FLOAT)); + } + } +} + +/* Take only real part */ +void processTdcInverseOdft_fl(LC3_FLOAT *in, LC3_INT32 n_bands, LC3_FLOAT *out, LC3_INT32 lpc_order) +{ + LC3_INT32 i, j, k; + LC3_FLOAT buf[2*MAX_BANDS_NUMBER_PLC]; + Complex sum; + Complex res; + + /* Buffer for ifft */ + j = 0; + for (i = 0; i < n_bands - 1; i += 2) + { + buf[j] = in[i]; + j++; + } + + for (i = n_bands - 1; i > 0; i -= 2) + { + buf[j] = in[i]; + j++; + } + + for (i = 0; i < n_bands; i++) + { + buf[j] = in[i]; + j++; + } + + /* ifft */ + for (j = 0; j < n_bands; j++) + { + sum.r = 0, sum.i = 0; + res.r = 0, res.i = 0; + for (k = 0; k < n_bands; k++) + { + res = cexpi((2 * M_PI * (LC3_FLOAT) (j * k)) / (LC3_FLOAT) n_bands); + res.r = res.r * buf[k]; + res.i = res.i * buf[k]; + sum = cadd(sum, res); + } + + res = cexpi((LC3_FLOAT) j * M_PI / (2.0 * (LC3_FLOAT) n_bands)); + out[j] = (sum.r * res.r - sum.i * res.i); + } + + out[0] = out[0] * 1.0001; + if (out[0] == 0) + { + out[0] = 1; + zero_float(&out[1], lpc_order); + } +} + +void processTdcPreemphasis_fl(LC3_FLOAT *in, LC3_FLOAT *pre_emph_factor, LC3_INT32 n_bands) +{ + LC3_INT32 i; + + for (i = 0; i < n_bands; i++) + { + in[i] = in[i] * (1.0 - 2.0 * (*pre_emph_factor) * LC3_COS(2.0 * M_PI * (0.5 + (LC3_FLOAT) i) / (2.0 * (LC3_FLOAT) n_bands)) + (*pre_emph_factor) * (*pre_emph_factor)); + } +} + +void processTdcLpcEstimation_fl(LC3_FLOAT *r, LC3_INT32 fs_idx, LC3_INT32 len, LC3_FLOAT *A, LC3_INT32 frame_dms) +{ + LC3_INT32 i; + const LC3_FLOAT *lpc_array; + + lpc_array = plc_tdc_lpc_all[fs_idx]; + + if (fs_idx == 0 && frame_dms == 25) + { + lpc_array = plc_tdc_lpc_8_25ms; + } + + /* r[0] = r[0] * 1 */ + for (i = 1; i < len; i++) + { + r[i] = r[i] * lpc_array[i]; + } + + TDC_levinson(r, len - 1, A); +} + +/** random + * + * Parameters: + * seed I/O: seed for random number + * + * Function: + * Signed 16 bits random generator. + * + * Returns: + * random number + */ +static LC3_INT16 TDC_random_short(LC3_INT16 *seed) +{ + *seed = (LC3_INT16) (*seed * 12821L + 16831L); + return(*seed); +} + +static LC3_FLOAT TDC_get_gainp( /* output: gain of pitch */ + const LC3_FLOAT x[], /* input : input signal */ + const LC3_FLOAT y[], /* input : shifted input signal */ + LC3_INT32 n /* input : vector length */ +) +{ + LC3_FLOAT corr, ener; + LC3_INT16 i; + + corr = 0; ener = 1e-6f; + + for (i = 0; i < n; i++) + { + corr += x[i]*y[i]; + ener += y[i]*y[i]; + } + + return(corr/ener); +} + +static LC3_FLOAT TDC_get_gainc( /* output: gain of code */ + const LC3_FLOAT x[], /* input : input signal */ + const LC3_FLOAT y[], /* input : shifted input signal */ + const LC3_FLOAT *gain_p, /* input : gain of pitch */ + const LC3_INT32 n, /* input : vector length */ + const LC3_INT32 frame_dms /* input : frame length in dms */ +) +{ + LC3_FLOAT gain_c; + LC3_FLOAT gain_c_max; + LC3_INT16 i; + + gain_c = 0; gain_c_max = 0; + + for (i = 0; i < n; i++) + { + gain_c += ( x[-i] - *gain_p * y[-i] ) * ( x[-i] - *gain_p * y[-i] ); + } + + if (frame_dms < 100) + { + for (i = 0; i < n; i++) + { + gain_c_max += (x[-i] * x[-i]); + } + gain_c = MIN(gain_c, gain_c_max); + } + + gain_c = (LC3_FLOAT)sqrt(gain_c / n ); + + return gain_c; +} + +static void TDC_highPassFiltering(const LC3_INT32 L_buffer, /* i: buffer length */ + LC3_FLOAT exc2[], /* i/o: unvoiced excitation before the high pass filtering */ + const LC3_FLOAT hp_filt[], /* i: high pass filter coefficients */ + const LC3_INT32 l_fir_fer) /* i: high pass filter length */ +{ + LC3_INT32 i; + + for( i=0 ; i< L_buffer; i++ ) { + exc2[i] = TDC_dotFLOAT(&exc2[i], hp_filt, l_fir_fer); + } +} + +static void TDC_LPC_synthesis( + const LC3_FLOAT a[], + LC3_FLOAT x[], + LC3_FLOAT y[], + LC3_INT32 l, + const LC3_FLOAT mem[], + LC3_INT32 lpcorder, + LC3_FLOAT *buf + ) +{ + LC3_FLOAT s, *yy; + LC3_INT32 i, j; + + /* copy initial filter states into synthesis buffer */ + for (i=0; i < lpcorder; i++) + { + buf[i] = mem[i]; + } + yy = &buf[i]; + + for (i = 0; i < l; i++) + { + s = x[i]; + for (j = 1; j <= lpcorder; j++) + { + s -= a[j] * yy[i- j]; + } + y[i] = s; + yy[i] = y[i]; + } + + return; +} + + +/** TDC_LPC_residu + * + * Parameters: + * a I: LP filter coefficients (Q12) + * x I: input signal (usually speech) + * y O: output signal (usually residual) + * l I: size of filtering + * lpcorder I: Order of LP filter + * + * Function: + * Compute the LP residual by filtering the input speech through A(z). + * + * Returns: + * void + */ +static void TDC_LPC_residu(const LC3_FLOAT *a, LC3_FLOAT *x, LC3_FLOAT *y, LC3_INT32 l, LC3_INT32 lpcorder) +{ + LC3_FLOAT s; + LC3_INT32 i, j; + + for (i = 0; i < l; i++) + { + s = x[i]; + for (j = 1; j <= lpcorder; j++) + { + s += a[j] * x[i - j]; + } + y[i] = s; + } + + return; +} + + +/** TDC_f_preemph + * + * Parameters: + * signal I/O: signal + * mu I: preemphasis factor + * L I: vector size + * mem I: memory (x[-1]) + * + * Function: + * Filtering through 1 - mu z^-1 + * + * + * Returns: + * void + */ + +static void TDC_f_preemph(LC3_FLOAT *signal, const LC3_FLOAT *mu, LC3_INT32 L, LC3_FLOAT *mem) +{ + LC3_INT32 i; + + for (i = L - 1; i > 0; i--) + { + signal[i] = signal[i] - *mu * signal[i - 1]; + } + + signal[0] -= *mu * (*mem); + + return; +} + +/* + * TDC_deemph + * + * Parameters: + * signal I/O: signal + * mu I: deemphasis factor + * L I: vector size + * mem I: memory (signal[-1]) + * + * Function: + * Filtering through 1/(1-mu z^-1) + * Signal is divided by 2. + * + * Returns: + * void + */ +static void TDC_deemph(LC3_FLOAT *signal, const LC3_FLOAT *mu, LC3_INT32 L, const LC3_FLOAT *mem) +{ + LC3_INT32 i; + + signal[0] = signal[0] + *mu * (*mem); + + for (i = 1; i < L; i++) + { + signal[i] = signal[i] + *mu * signal[i - 1]; + } + + return; +} + +static void TDC_copyFLOAT(const LC3_FLOAT * X, LC3_FLOAT * Z, LC3_INT32 n) +{ + /* no values to copy */ + if ( (n < 1) || (X == Z) ){ + return; + } + /* If overlapping */ + if ( ( (Z > X) && (Z < X+n) ) || ( (Z < X) && (X < Z+n) ) ) { + memmove(Z, X, sizeof(LC3_FLOAT)*n); + } + else{ + memcpy(Z, X, sizeof(LC3_FLOAT)*n); + } +} + +static LC3_FLOAT TDC_dotFLOAT(const LC3_FLOAT * X, const LC3_FLOAT * Y, LC3_INT32 n) +{ + LC3_FLOAT acc; + LC3_INT32 i; + + acc = 0; + if (n) { + acc = X[0]*Y[0]; + } + + for (i=1; i= 0; i--) + { + out[j] = buf[k] - g * buf2[i]; + j++; k++; + } + + v = v * (1.0 - g * g); + } + + move_float(buf, out, len); + out[0] = 1; + + j = 1; + for (i = len - 1; i >= 0; i--) + { + out[j] = -buf[i]; + j++; + } +} + diff --git a/lc3plus/plc_tdc_tdac.c b/lc3plus/plc_tdc_tdac.c new file mode 100644 index 0000000000000000000000000000000000000000..329361b14c7f995b74a6ca2de051011c81ec088c --- /dev/null +++ b/lc3plus/plc_tdc_tdac.c @@ -0,0 +1,80 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processTdcTdac_fl(const LC3_FLOAT *synth_inp, const LC3_FLOAT *win, LC3_INT32 frame_length, LC3_INT32 la_zeroes, LC3_FLOAT *ola_mem) +{ + LC3_INT32 i, L, LD2, NZ, synth_len; + LC3_FLOAT synth[(MAX_LEN + MDCT_MEM_LEN_MAX)], *synth1, *synth2, *ola_mem1, *ola_mem2, sz; + const LC3_FLOAT *win1, *win2, *win3, *win4; + + assert(la_zeroes <= frame_length / 2); + + L = frame_length; + LD2 = L/2; + NZ = LD2 - la_zeroes; + synth_len = 2*L - la_zeroes; + + move_float(synth, synth_inp, synth_len); + + /* calculate x_ov[L+la_zeroes] ... x_ov[2*L-1] */ + win1 = &win[L + LD2 - 1]; + win2 = &win[L + LD2]; + + win3 = &win[LD2 - 1]; + win4 = &win[LD2]; + + synth1 = &synth[L + LD2 - 1 - la_zeroes]; + synth2 = &synth[L + LD2 - la_zeroes]; + + ola_mem1 = &ola_mem[LD2 - la_zeroes]; + ola_mem2 = &ola_mem[LD2 - la_zeroes - 1]; + + for (i = 0; i < NZ; i++) + { + /* analysis windowing + 2N -> N */ + sz = *synth1 * *win1 + *synth2 * *win2; + + /* N -> 2N + synthesis windowing */ + *ola_mem1 = sz * *win3; + *ola_mem2 = sz * *win4; + + /* pointer update */ + win1--; + win2++; + win3--; + win4++; + synth1--; + synth2++; + ola_mem1++; + ola_mem2--; + } + + for (; i < LD2; i++) + { + /* analysis windowing + 2N -> N */ + sz = *synth1 * *win1; + + /* N -> 2N + synthesis windowing */ + *ola_mem1 = sz * *win3; + + /* pointer update */ + win1--; + win2++; + win3--; + synth1--; + synth2++; + ola_mem1++; + } +} + diff --git a/lc3plus/plc_update.c b/lc3plus/plc_update.c new file mode 100644 index 0000000000000000000000000000000000000000..a151420eb7484c7fca0aaa3af5b67f4f994eec27 --- /dev/null +++ b/lc3plus/plc_update.c @@ -0,0 +1,125 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "options.h" + + +void processPlcUpdate_fl(PlcAdvSetup *PlcAdvSetup, LC3_INT32 frame_length, LC3_FLOAT *syntM, LC3_FLOAT *scf_q, + LC3_INT32 *nbLostCmpt, LC3_FLOAT *cum_alpha, LC3_INT32 bfi, LC3_INT32 *prevBfi, LC3_INT32 *prevprevBfi) +{ + LC3_FLOAT tmp[MAX_LEN_PCM_PLC]; + + move_float(tmp, &PlcAdvSetup->pcmbufHist[frame_length], PlcAdvSetup->max_len_pcm_plc - frame_length); + move_float(&PlcAdvSetup->pcmbufHist[0], tmp, PlcAdvSetup->max_len_pcm_plc - frame_length); + move_float(&PlcAdvSetup->pcmbufHist[PlcAdvSetup->max_len_pcm_plc - frame_length], syntM, frame_length); + + if (bfi != 1) + { + *nbLostCmpt = 0; + *cum_alpha = 1; + + if (PlcAdvSetup) + { + move_float(PlcAdvSetup->scf_q_old_old, PlcAdvSetup->scf_q_old, M); + move_float(PlcAdvSetup->scf_q_old, scf_q, M); + /* PLC fullband transient detector setting for non-bfi frames */ + PlcAdvSetup->PlcPhEcuSetup.PhECU_short_flag_prev = 0; /* fullband transient not active */ + } + } + + *prevprevBfi = *prevBfi; + *prevBfi = bfi; +} + +void plc_phEcu_processPLCspec2shape(LC3_INT16 prev_bfi, LC3_INT16 bfi, LC3_FLOAT q_d[], LC3_INT32 yLen, + LC3_FLOAT *stPhECU_oold_grp_shape, LC3_FLOAT *stPhECU_old_grp_shape) +{ + LC3_INT32 i, j, N_grp; + LC3_INT32 local_prev_bfi; + LC3_INT32 fs_idx; + LC3_FLOAT E_tot = 0.0; + LC3_INT32 l_grp; + LC3_FLOAT *pX; + + if (bfi != 1) /* compute only for bfi== 0 or 2 */ + { + fs_idx = (LC3_INT32)floor(yLen / 100); + assert(fs_idx < 5); + N_grp = xavg_N_grp[fs_idx]; + + local_prev_bfi = prev_bfi; + if (local_prev_bfi == 2) { + local_prev_bfi = 0; + } + + + /* Copy old to oold grp shape */ + for (i = 0; i < MAX_LGW; i++) + { + stPhECU_oold_grp_shape[i] = stPhECU_old_grp_shape[i]; + } + + /* Accumulate DC-coupled bins to total */ + E_tot = 0; + pX = q_d; /* ptr setup */ + for (i = 0; i < mdct_grp_bins[0]; i++) + { + E_tot += sqrf( *pX ); + pX++; + } + + /* Accumulate middle grps and add to total */ + for (i = 0; i < (N_grp - 1); i++) + { + l_grp = mdct_grp_bins[i + 1] - mdct_grp_bins[i]; ; + stPhECU_old_grp_shape[i] = 0.0; + for (j = 0; j < l_grp; j++) { + stPhECU_old_grp_shape[i] += sqrf( *pX ); + pX++; + } + E_tot += stPhECU_old_grp_shape[i]; + } + + /* Accumulate last subbband and add to total */ + stPhECU_old_grp_shape[(N_grp - 1)] = 0.0; + l_grp = mdct_grp_bins[N_grp] - mdct_grp_bins[N_grp - 1] - mdct_grp_bins[0]; + assert( (mdct_grp_bins[N_grp] - mdct_grp_bins[0]) <= yLen); + for (j = 0; j < l_grp; j++) + { + stPhECU_old_grp_shape[(N_grp - 1)] += sqrf( *pX ); + pX++; + } + E_tot += stPhECU_old_grp_shape[(N_grp - 1)]; + + + /* Normalize shape */ + for (i = 0; i < (N_grp); i++) { + if (E_tot > 0.0) { + stPhECU_old_grp_shape[i] /= E_tot; + } + else + { + stPhECU_old_grp_shape[i] = 0.0; + } + } + if (local_prev_bfi == 1) { + for (i = 0; i < MAX_LGW; i++) { + stPhECU_oold_grp_shape[i] = stPhECU_old_grp_shape[i]; + } + } + }/*bfi*/ + return; +} + +void processPlcUpdateSpec_fl(LC3_FLOAT *q_d_prev, LC3_FLOAT *q_d_fl_c, LC3_INT32 yLen) +{ + move_float(q_d_prev, q_d_fl_c, yLen); +} + diff --git a/lc3plus/quantize_spec.c b/lc3plus/quantize_spec.c new file mode 100644 index 0000000000000000000000000000000000000000..7886b4586d6e412a8c9aa44dbf004ed738ec61a6 --- /dev/null +++ b/lc3plus/quantize_spec.c @@ -0,0 +1,196 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static LC3_INT sign(LC3_FLOAT x); + +LC3_INT sign(LC3_FLOAT x) +{ + if (x > 0) + return 1; + + if (x < 0) + return -1; + + return 0; +} + +void processQuantizeSpec_fl(LC3_FLOAT x[], LC3_FLOAT gain, LC3_INT xq[], LC3_INT nt, LC3_INT totalBits, LC3_INT* nbits, LC3_INT* nbits2, LC3_INT fs, + LC3_INT* lastnzout, LC3_INT* codingdata, LC3_INT* lsbMode, LC3_INT mode, LC3_INT target, LC3_INT hrmode) +{ + + LC3_INT rateFlag = 0, i = 0, lastnz2 = 0, m = 0, maxlev = 0, k = 0; + LC3_INT nbits_lsb = 0; + LC3_INT c = 0; + LC3_INT a = 0, b = 0, lev1 = 0, sym = 0, t = 0, pki = 0; + LC3_INT a1_msb = 0, b1_msb = 0; + LC3_INT lastnz = 1; + LC3_FLOAT offset = 0.375; + + if (hrmode) + { + offset = 0.5; + } + + + /* Quantization */ + for (i = 0; i < nt; i++) { + xq[i] = trunc(x[i] / gain + offset * sign(x[i])); + if (hrmode == 0) { + assert(xq[i] <= 32767 && xq[i] >= -32768); + } + } + + /* Rate flag */ + + if ((fs < 48000 && totalBits > 320 + (fs / 8000 - 2) * 160) || (fs == 48000 && totalBits > 800)) { + rateFlag = 512; + } + + /* Init */ + if (mode == 0 && ((fs < 48000 && totalBits >= 640 + (fs / 8000 - 2) * 160) || (fs == 48000 && totalBits >= 1120))) { + mode = 1; + } + + /* Last non-zero 2-tuple */ + + for (i = nt - 2; i >= 2; i = i - 2) { + if (xq[i + 1] != 0 || xq[i] != 0) { + lastnz = i + 1; + break; + } + } + + + if (mode < 0) { + lastnz2 = lastnz + 1; + } else { + lastnz2 = 2; + } + + *nbits = 0; + *nbits2 = 0; + + /* Calculate number of estimated bits */ + + for (k = 0; k < lastnz; k = k + 2) { + t = c + rateFlag; + if (k > nt / 2) { + t += 256; + } + + codingdata[0] = t; + + a = abs(xq[k]); + b = abs(xq[k + 1]); + m = MAX(a, b); + + if (m == 0) { + maxlev = -1; + } else { + maxlev = 29 - (clz_func(MAX(m, 3)) - 1); + } + + codingdata[1] = maxlev; + + if (mode <= 0) { + *nbits = *nbits + MIN(a, 1) * 2048; + *nbits = *nbits + MIN(b, 1) * 2048; + } + + lev1 = 0; + + while (MAX(a, b) >= 4) { + pki = ari_spec_lookup_fl[t + lev1 * 1024]; + *nbits = *nbits + ari_spec_bits_fl[pki][16]; + + if (lev1 == 0 && mode > 0) { + nbits_lsb += 2; + } else { + *nbits = *nbits + 2 * 2048; + } + + a = a >> 1; + b = b >> 1; + lev1 = MIN(lev1 + 1, 3); + } + + pki = ari_spec_lookup_fl[t + lev1 * 1024]; + sym = a + 4 * b; + codingdata[2] = sym; + codingdata += 3; + *nbits = *nbits + ari_spec_bits_fl[pki][sym]; + + if (mode > 0) { + a1_msb = abs(xq[k]); + b1_msb = abs(xq[k + 1]); + + if (lev1 > 0) { + a1_msb = a1_msb >> 1; + b1_msb = b1_msb >> 1; + + if (a1_msb == 0 && xq[k] != 0) { + nbits_lsb++; + } + + if (b1_msb == 0 && xq[k + 1] != 0) { + nbits_lsb++; + } + } + + *nbits = *nbits + MIN(a1_msb, 1) * 2048; + *nbits = *nbits + MIN(b1_msb, 1) * 2048; + } + + if (mode >= 0 && (abs(xq[k]) != 0 || abs(xq[k + 1]) != 0) && *nbits <= target * 2048) { + lastnz2 = k + 2; + *nbits2 = *nbits; + } + + lev1 = lev1 - 1; + if (lev1 <= 0) { + t = 1 + (a + b) * (lev1 + 2); + } else { + t = 13 + lev1; + } + + c = (c & 15) * 16 + t; + } + + /* Number of bits */ + *nbits = ceil((LC3_FLOAT)*nbits / 2048.0); + + if (mode >= 0) { + *nbits2 = ceil((LC3_FLOAT)*nbits2 / 2048.0); + } else { + *nbits2 = *nbits; + } + + if (mode > 0) { + *nbits += nbits_lsb; + *nbits2 += nbits_lsb; + } + + /* Truncation of high-frequency coefficients */ + for (i = lastnz2; i <= lastnz; i++) { + xq[i] = 0; + } + + /* Truncation of LSBs */ + if (mode > 0 && *nbits > target) { + *lsbMode = 1; + } else { + *lsbMode = 0; + } + + *lastnzout = lastnz2; +} diff --git a/lc3plus/reorder_bitstream.c b/lc3plus/reorder_bitstream.c new file mode 100644 index 0000000000000000000000000000000000000000..77b50d7a13ba0dc8ffda32396bb5342b6438961d --- /dev/null +++ b/lc3plus/reorder_bitstream.c @@ -0,0 +1,41 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + + +void processReorderBitstream_fl(LC3_UINT8* bytes, LC3_INT32 n_pccw, LC3_INT32 n_pc, LC3_INT32 b_left, LC3_INT32 len) +{ + LC3_UINT8 bytes_local[MAX_NBYTES2]; + LC3_INT32 i, block_bytes; + + assert(b_left > 0); + + memcpy(bytes_local, bytes, len * sizeof(LC3_UINT8)); + + if (n_pccw == 0) + { + return; + } + + block_bytes = ceil((LC3_FLOAT) n_pc / 2.0); + + for (i = 0; i < block_bytes; i++) + { + bytes[i] = bytes_local[b_left + i]; + } + + for (i = 0; i < b_left; i++) + { + bytes[block_bytes + i] = bytes_local[i]; + } +} + diff --git a/lc3plus/resamp12k8.c b/lc3plus/resamp12k8.c new file mode 100644 index 0000000000000000000000000000000000000000..0cab5daae94fdd67d480dd8d3b2f7ef2cd55db4f --- /dev/null +++ b/lc3plus/resamp12k8.c @@ -0,0 +1,107 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void process_resamp12k8_fl(LC3_FLOAT x[], LC3_INT x_len, LC3_FLOAT mem_in[], LC3_INT mem_in_len, LC3_FLOAT mem_50[], LC3_FLOAT mem_out[], + LC3_INT mem_out_len, LC3_FLOAT y[], LC3_INT* y_len, LC3_INT fs_idx, LC3_INT frame_dms, LC3_INT fs) +{ + + + LC3_INT len_12k8 = 0, N12k8 = 0, i = 0, k = 0; + LC3_FLOAT mac = 0, buf_out[120 + MAX_LEN] = {0}, bufdown[128] = {0}, buf[120 + MAX_LEN] = {0}; + LC3_INT32 index_int, index_frac, resamp_upfac, resamp_delay, resamp_off_int, resamp_off_frac; + LC3_FLOAT u_11, u_21, u_1, u_2; + + const LC3_FLOAT *filter; + const LC3_FLOAT *filt_input, *filt_coeff; + + + switch (frame_dms) + { + case 25: + len_12k8 = LEN_12K8 / 4; + break; + case 50: + len_12k8 = LEN_12K8 / 2; + break; + case 100: + len_12k8 = LEN_12K8; + break; + } + + *y_len = len_12k8; + N12k8 = x_len * 12800 / fs; + + /* Init Input Buffer */ + memmove(buf, mem_in, mem_in_len * sizeof(LC3_FLOAT)); + memmove(&buf[mem_in_len], x, x_len * sizeof(LC3_FLOAT)); + memmove(mem_in, &buf[x_len], mem_in_len * sizeof(LC3_FLOAT)); + + + + filter = lp_filter[fs_idx]; + + /* Upsampling & Low-pass Filtering & Downsampling */ + + index_int = 1; + index_frac = 0; + resamp_upfac = resamp_params[fs_idx][0]; + resamp_delay = resamp_params[fs_idx][1]; + resamp_off_int = resamp_params[fs_idx][2]; + resamp_off_frac = resamp_params[fs_idx][3]; + + k = 0; + for (i = 0; i < N12k8; i++) { + + filt_input = &buf[index_int]; + filt_coeff = &filter[index_frac * resamp_delay * 2]; + + mac = mac_loop(filt_input, filt_coeff, (2 * resamp_delay)); + + bufdown[k++] = mac; + + index_int = index_int + resamp_off_int; + index_frac = index_frac + resamp_off_frac; + + if ((resamp_upfac - index_frac) <= 0) + { + index_int = index_int + 1; + index_frac = index_frac - resamp_upfac; + } + } + + + /* 50Hz High-Pass */ + u_11 = mem_50[0]; + u_21 = mem_50[1]; + + for (i = 0; i < len_12k8; i++) { + LC3_FLOAT y1 = (highpass50_filt_b[0] * bufdown[i] + u_11); + u_1 = (highpass50_filt_b[1] * bufdown[i] + u_21) - highpass50_filt_a[1] * y1; + u_2 = highpass50_filt_b[2] * bufdown[i] - highpass50_filt_a[2] * y1; + u_11 = u_1; + u_21 = u_2; + bufdown[i] = (LC3_FLOAT)y1; + } + + mem_50[0] = (LC3_FLOAT)u_11; + mem_50[1] = (LC3_FLOAT)u_21; + + /* Output Buffer */ + memmove(buf_out, mem_out, mem_out_len * sizeof(LC3_FLOAT)); + + memmove(&buf_out[mem_out_len], bufdown, len_12k8 * sizeof(LC3_FLOAT)); + + memmove(y, buf_out, (*y_len + 1) * sizeof(LC3_FLOAT)); + + memmove(mem_out, &buf_out[N12k8], mem_out_len * sizeof(LC3_FLOAT)); +} diff --git a/lc3plus/residual_coding.c b/lc3plus/residual_coding.c new file mode 100644 index 0000000000000000000000000000000000000000..42094d275f2a2cfb6b42b92dd0ad21f79b503fd1 --- /dev/null +++ b/lc3plus/residual_coding.c @@ -0,0 +1,76 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processResidualCoding_fl(LC3_FLOAT x[], LC3_INT xq[], LC3_FLOAT gain, LC3_INT L_spec, LC3_INT targetBits, LC3_INT nBits, uint8_t* resBits, LC3_INT* numResBits + , LC3_INT hrmode +) +{ + LC3_INT n = 0, m = 0, k = 0; + LC3_INT iter=0; + LC3_FLOAT offset; + LC3_INT iter_max = 1; + LC3_INT nz_idx[MAX_LEN] = {0}; + LC3_INT N_nz = 0, idx = 0; + + + memset(resBits, 0, MAX_RESBITS_LEN); + + m = targetBits - nBits + 4; + if (hrmode) + { + m += 10; + } + + assert(m <= MAX_RESBITS); + + offset = .25; + if (hrmode) + { + iter_max = EXT_RES_ITER_MAX; + + } + for (k = 0; k < L_spec; k ++) + { + if (xq[k]) + { + nz_idx[N_nz ++] = k; + } + } + while (iter < iter_max && n < m) + { + k = 0; + while (k < N_nz && n < m) + { + idx = nz_idx[k]; + + if (x[idx] >= (LC3_FLOAT)xq[idx] * gain) + { + resBits[n >> 3] |= 1 << (n & 7); + x[idx] -= gain * offset; + } + else + { + resBits[n >> 3] &= ~(1 << (n & 7)); + x[idx] += gain * offset; + } + + n++; + + k++; + } + iter ++; + offset *= .5; + } + + *numResBits = n; +} diff --git a/lc3plus/residual_decoding.c b/lc3plus/residual_decoding.c new file mode 100644 index 0000000000000000000000000000000000000000..97fd94afc35e19d43c5a7866bbffb92758cdad96 --- /dev/null +++ b/lc3plus/residual_decoding.c @@ -0,0 +1,97 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processResidualDecoding_fl(LC3_INT* bitsRead, LC3_FLOAT x[], LC3_INT L_spec, uint8_t prm[], LC3_INT resQBits + , LC3_INT hrmode +) +{ + LC3_INT k = 0, n = 0; + LC3_FLOAT offset1 = 0, offset2 = 0; + LC3_FLOAT offset = 0; + LC3_INT nz_idx[MAX_LEN] = {0}; + LC3_INT N_nz = 0, idx = 0; + + LC3_INT iter = 0, iter_max = 1; + + if (hrmode) + { + iter_max = EXT_RES_ITER_MAX; + offset = offset1 = offset2 = 0.25; + } + else + { + offset1 = 0.1875; + offset2 = 0.3125; + } + + if (hrmode) + { + /* enumerat non-zero coefficients */ + for (k = 0; k < L_spec; k ++) + { + if (x[k]) + { + nz_idx[N_nz ++] = k; + } + } + /* apply residual corrections */ + while (n < resQBits && iter < iter_max) + { + for (k = 0; k < N_nz; k ++) + { + idx = nz_idx[k]; + + if ((prm[n >> 3] & 1 << (n & 7)) == 0) + { + x[idx] -= offset; + } + else + { + + x[idx] += offset; + } + if (++n >= resQBits) + { + break; + } + } + offset /= 2; + iter ++; + } + } + else + { + while (k < L_spec && n < resQBits) { + if (x[k] != 0) { + if ((prm[n >> 3] & 1 << (n & 7)) == 0) + { + if (x[k] > 0) { + x[k] -= offset1; + } else { + x[k] -= offset2; + } + } else { + if (x[k] > 0) { + x[k] += offset2; + } else { + x[k] += offset1; + } + } + n++; + } + + k++; + } + } + *bitsRead = n; +} diff --git a/lc3plus/setup_com_lc3.c b/lc3plus/setup_com_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..17054d1ffcfdd63015e0e169b199ae606379217f --- /dev/null +++ b/lc3plus/setup_com_lc3.c @@ -0,0 +1,30 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + +#include "functions.h" +#include "options.h" + +LC3_FLOAT array_max_abs(LC3_FLOAT *in, LC3_INT32 len) +{ + LC3_FLOAT max; + LC3_INT32 i; + + max = LC3_FABS(in[0]); + + for (i = 0; i < len; i++) + { + if (LC3_FABS(in[i]) > LC3_FABS(max)) + { + max = LC3_FABS(in[i]); + } + } + + return max; +} + diff --git a/lc3plus/setup_dec_lc3.c b/lc3plus/setup_dec_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..c14309720ec4e0cae213b81d64ef7b170a5b651d --- /dev/null +++ b/lc3plus/setup_dec_lc3.c @@ -0,0 +1,444 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "setup_dec_lc3.h" +#include "functions.h" +#include +#include + +/* if decoder is null only size is reported */ +# include "fft/iis_fft.h" + +int alloc_decoder(LC3PLUS_Dec* decoder, int samplerate, int channels) +{ + int ch = 0; + size_t size = sizeof(LC3PLUS_Dec); + size_t frame_len = DYN_MAX_LEN_EXT(samplerate); + + void *PlcAdvSetup = NULL; + LC3_FLOAT *pcmbufHist, *harmonicBuf; + LC3_FLOAT *PhECU_oold_grp_shape, *PhECU_old_grp_shape; + LC3_FLOAT *PhECU_xfp; + Complex *PhECU_X_sav_m; + LC3_INT32 *PhECU_plocs; + LC3_FLOAT *PhECU_f0est, *PhECU_mag_chg_1st, *PhECU_Xavg; + LC3_FLOAT *sine_table1_phecu, *sine_table2_phecu; + HANDLE_IIS_FFT handle_fft_phaseecu; + HANDLE_IIS_FFT handle_ifft_phaseecu; + LC3_FLOAT *q_old_res; + + for (ch = 0; ch < channels; ch++) { + DecSetup* setup = balloc(decoder, &size, sizeof(DecSetup)); + + size_t max_pitch = ceilf(228.0 * CODEC_FS(samplerate) / 12800.0); + size_t pcm_plc_len = max_pitch + frame_len; + pcmbufHist = balloc(decoder, &size, sizeof(LC3_FLOAT) * pcm_plc_len); + harmonicBuf = balloc(decoder, &size, sizeof(LC3_FLOAT) * max_pitch); + PlcAdvSetup = balloc(decoder, &size, sizeof(*setup->PlcAdvSetup)); + PhECU_oold_grp_shape = balloc(decoder, &size, sizeof(LC3_FLOAT) *MAX_LGW); /* BASOP Word16 PhECU_oold_grp_shape_fx[MAX_LGW]; */ + PhECU_old_grp_shape = balloc(decoder, &size, sizeof(LC3_FLOAT) *MAX_LGW); /* BASOP Word16 PhECU_old_grp_shape_fx[MAX_LGW] ; */ + PhECU_xfp = balloc(decoder, &size, sizeof(LC3_FLOAT) *(frame_len * 16 / 10)); + PhECU_X_sav_m = balloc(decoder, &size, sizeof(Complex) *(((frame_len * 16 / 10) / 2) + 1));/*MAX_PLC_LMSPEC*/ + PhECU_plocs = balloc(decoder, &size, sizeof(LC3_INT32) * (((frame_len * 16 / 10) / 4) + 1 + 1)); /* BASOP Word16 *PhECU_plocs; */ + + handle_fft_phaseecu = balloc(decoder, &size, sizeof(IIS_FFT) * 1); + handle_ifft_phaseecu = balloc(decoder, &size, sizeof(IIS_FFT) * 1); + PhECU_f0est = balloc(decoder, &size, sizeof(LC3_FLOAT) * (((frame_len * 16 / 10) / 4) + 1)); /*BASOP Word32 *PhECU_f0est;*/ + PhECU_mag_chg_1st = balloc(decoder, &size, sizeof(LC3_FLOAT) *MAX_LGW); /* BASOP Word16 PhECU_mag_chg_1st[MAX_LGW];*/ + PhECU_Xavg = balloc(decoder, &size, sizeof(LC3_FLOAT) * MAX_LGW); /* BASOP Word16 PhECU_Xavg[MAX_LGW] ; */ + + sine_table1_phecu = balloc(decoder, &size, sizeof(LC3_FLOAT) * (((CODEC_FS(samplerate) * 16) / 1000) / 2 + 1)); + sine_table2_phecu = balloc(decoder, &size, sizeof(LC3_FLOAT) * (((CODEC_FS(samplerate) * 16) / 1000) / 2 + 1)); + + q_old_res = balloc(decoder, &size, sizeof(LC3_FLOAT) * frame_len); + + if (decoder) { + decoder->channel_setup[ch] = setup; + + setup->PlcAdvSetup = PlcAdvSetup; + + setup->PlcAdvSetup->pcmbufHist = pcmbufHist; + setup->PlcAdvSetup->PlcTdcSetup.harmonicBuf = harmonicBuf; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_oold_grp_shape = PhECU_oold_grp_shape; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_old_grp_shape = PhECU_old_grp_shape; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_xfp = PhECU_xfp; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_X_sav_m = PhECU_X_sav_m; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_plocs = PhECU_plocs; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_f0est = PhECU_f0est; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_mag_chg_1st = PhECU_mag_chg_1st; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Xavg = PhECU_Xavg; + setup->PlcAdvSetup->PlcPhEcuSetup.handle_fft_phaseecu = handle_fft_phaseecu; + setup->PlcAdvSetup->PlcPhEcuSetup.handle_ifft_phaseecu = handle_ifft_phaseecu; + + setup->PlcAdvSetup->PlcPhEcuSetup.handle_fft_phaseecu->sine_table = sine_table1_phecu; + setup->PlcAdvSetup->PlcPhEcuSetup.handle_ifft_phaseecu->sine_table = sine_table2_phecu; + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot = (CODEC_FS(samplerate) * 16) / 1000; + real_fft_init(&(setup->PlcAdvSetup->PlcPhEcuSetup.PhEcu_Fft), setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot, &(setup->PlcAdvSetup->PlcPhEcuSetup.handle_fft_phaseecu)); + real_ifft_init(&(setup->PlcAdvSetup->PlcPhEcuSetup.PhEcu_Ifft), setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot, &(setup->PlcAdvSetup->PlcPhEcuSetup.handle_ifft_phaseecu)); + setup->statePC.q_old_res = q_old_res; + } + } + + return (int)size; +} + +LC3PLUS_Error FillDecSetup(LC3PLUS_Dec* decoder, int samplerate, int channels, LC3PLUS_PlcMode plc_mode + , int hrmode +) +{ + memset(decoder, 0, lc3plus_dec_get_size(samplerate, channels)); + alloc_decoder(decoder, samplerate, channels); + + decoder->fs = CODEC_FS(samplerate); + decoder->fs_out = samplerate; + decoder->fs_idx = FS2FS_IDX(decoder->fs); + decoder->plcMeth = plc_mode; + + decoder->hrmode = hrmode != 0; + + if (decoder->fs_idx > 4) { + decoder->fs_idx = 5; + } + decoder->channels = channels; + decoder->frame_ms = 10; + decoder->frame_dms = 100; + decoder->BW_cutoff_bits = BW_cutoff_bits_all[decoder->fs_idx]; + + if (decoder->fs == 8000) { + decoder->tilt = 14; + } else if (decoder->fs == 16000) { + decoder->tilt = 18; + } else if (decoder->fs == 24000) { + decoder->tilt = 22; + } else if (decoder->fs == 32000) { + decoder->tilt = 26; + } else if (decoder->fs == 48000) { + decoder->tilt = 30; + } + else if (decoder->fs == 96000) { + decoder->tilt = 34; + } + + set_dec_frame_params(decoder); + + lc3plus_dec_set_ep_enabled(decoder, 0); + + return LC3PLUS_OK; +} + +/* set frame config params */ +void set_dec_frame_params(LC3PLUS_Dec* decoder) +{ + int ch = 0; + + if (decoder->fs_idx == 5) + { + decoder->hrmode = 1; + } + + decoder->frame_length = ceil(decoder->fs * 10 / 1000); /* fs * 0.01*2^6 */ + if (decoder->hrmode == 1) + { + decoder->yLen = decoder->frame_length; + } + else + { + decoder->yLen = MIN(MAX_BW, decoder->frame_length); + } + + decoder->bands_number = 64; + if (decoder->frame_ms == 2.5) + { + decoder->frame_length = decoder->frame_length >> 2; + decoder->yLen /= 4; + if (decoder->hrmode) + { + decoder->bands_number = bands_number_2_5ms_HR[decoder->fs_idx]; + } + else + { + decoder->bands_number = bands_number_2_5ms[decoder->fs_idx]; + } + } + if (decoder->frame_ms == 5) + { + decoder->frame_length = decoder->frame_length >> 1; + decoder->yLen /= 2; + decoder->bands_number = bands_number_5ms[decoder->fs_idx]; + } + + if (decoder->hrmode) + { + decoder->BW_cutoff_bits = 0; + } + else + { + decoder->BW_cutoff_bits = BW_cutoff_bits_all[decoder->fs_idx]; + } + + if (decoder->frame_ms == 10) + { + if (decoder->hrmode) + { + decoder->bands_offset = ACC_COEFF_PER_BAND_HR[decoder->fs_idx]; + } + else + { + decoder->bands_offset = ACC_COEFF_PER_BAND[decoder->fs_idx]; + } + decoder->cutoffBins = BW_cutoff_bin_all; + } + else if (decoder->frame_ms == 2.5) + { + if (decoder->hrmode) + { + decoder->bands_offset = ACC_COEFF_PER_BAND_2_5ms_HR[decoder->fs_idx]; + } + else + { + decoder->bands_offset = ACC_COEFF_PER_BAND_2_5ms[decoder->fs_idx]; + } + decoder->cutoffBins = BW_cutoff_bin_all_2_5ms; + } + else if (decoder->frame_ms == 5) + { + if (decoder->hrmode) + { + decoder->bands_offset = ACC_COEFF_PER_BAND_5ms_HR[decoder->fs_idx]; + } + else + { + decoder->bands_offset = ACC_COEFF_PER_BAND_5ms[decoder->fs_idx]; + } + decoder->cutoffBins = BW_cutoff_bin_all_5ms; + } + + decoder->n_bandsPLC = MIN(decoder->frame_length, 80); + + if (decoder->frame_ms == 10) + { + decoder->bands_offsetPLC = ACC_COEFF_PER_BAND_PLC[decoder->fs_idx]; + } + else if (decoder->frame_ms == 5) + { + decoder->bands_offsetPLC = ACC_COEFF_PER_BAND_PLC_5ms[decoder->fs_idx]; + + if (decoder->fs == 24000) + { + decoder->n_bandsPLC = 40; + } + } + else if (decoder->frame_ms == 2.5) + { + decoder->bands_offsetPLC = ACC_COEFF_PER_BAND_PLC_2_5ms[decoder->fs_idx]; + + if (decoder->fs == 48000) + { + decoder->n_bandsPLC = 60; + } + } + assert(decoder->bands_offsetPLC); + + if (decoder->frame_ms == 10) { + decoder->imdct_win = MDCT_WINS_10ms[decoder->hrmode][decoder->fs_idx]; + decoder->imdct_laZeros = MDCT_la_zeroes[decoder->fs_idx]; + decoder->imdct_winLen = MDCT_WINDOWS_LENGTHS_10ms[decoder->fs_idx]; + } + else if (decoder->frame_ms == 2.5) { + decoder->imdct_win = MDCT_WINS_2_5ms[decoder->hrmode][decoder->fs_idx]; + decoder->imdct_laZeros = MDCT_la_zeroes_2_5ms[decoder->fs_idx]; + decoder->imdct_winLen = MDCT_WINDOWS_LENGTHS_2_5ms[decoder->fs_idx]; + } + else if (decoder->frame_ms == 5) { + decoder->imdct_win = MDCT_WINS_5ms[decoder->hrmode][decoder->fs_idx]; + decoder->imdct_laZeros = MDCT_la_zeroes_5ms[decoder->fs_idx]; + decoder->imdct_winLen = MDCT_WINDOWS_LENGTHS_5ms[decoder->fs_idx]; + } + + decoder->la_zeroes = decoder->imdct_laZeros; + + decoder->imdct_memLen = decoder->frame_length - decoder->imdct_laZeros; + + for (ch = 0; ch < decoder->channels; ch++) { + DecSetup* setup = decoder->channel_setup[ch]; + + setup->ltpf_mem_beta_idx = -1; + + setup->statePC.seed = 24607; + + if (decoder) { + /* Init DCT4 structs */ + if (setup->dct4structImdct.length != 0) { + dct4_free(&setup->dct4structImdct); + dct4_init(&setup->dct4structImdct, decoder->frame_length); + } else { + dct4_init(&setup->dct4structImdct, decoder->frame_length); + } + + setup->PlcNsSetup.cum_alpha = 1; + setup->PlcNsSetup.seed = 24607; + setup->alpha = 1; + if (setup->PlcAdvSetup) + { + LC3_INT32 pitch_max = 0, pitch_ana_len = 0, tdc_synt_len = 0; + pitch_max = ceil(228.0 * (LC3_FLOAT) decoder->fs / 12800.0); + pitch_ana_len = pitch_max + decoder->frame_length * (LC3_FLOAT) 100 / decoder->frame_dms; + tdc_synt_len = 16 + 1 + pitch_max + ceil(decoder->frame_length / 2); + setup->PlcAdvSetup->max_len_pcm_plc = MAX(pitch_ana_len, tdc_synt_len); + setup->PlcAdvSetup->PlcTdcSetup.preemphFac = plc_preemph_fac[decoder->fs_idx]; + setup->PlcAdvSetup->PlcTdcSetup.seed = 24607; + setup->PlcAdvSetup->PlcTdcSetup.lpcorder = 16; + + if (decoder->fs_idx == 0 && decoder->frame_dms == 25) + { + setup->PlcAdvSetup->PlcTdcSetup.lpcorder = 8; + } + + setup->PlcAdvSetup->stabFac = 1; + setup->PlcAdvSetup->cum_fading_fast = 1; + setup->PlcAdvSetup->cum_fading_slow = 1; + setup->PlcAdvSetup->cum_fflcAtten = 1; + + if (decoder->fs_idx <= 4 && decoder->frame_dms == 100) + { + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot = (decoder->fs * 16) / 1000; /* 16 ms of samples at fs*/ + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_f0hzLtpBin = 0; + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_norm_corr = 0; + + set_vec(PHECU_GRP_SHAPE_INIT, setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_oold_grp_shape, MAX_LGW); + set_vec(PHECU_GRP_SHAPE_INIT, setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_old_grp_shape, MAX_LGW); + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_L_oold_xfp_w_E = (LC3_FLOAT)PHECU_LTOT_MIN_MAN * LC3_POW(2.0, PHECU_LTOT_MIN_EXP - 31); + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_L_old_xfp_w_E = (LC3_FLOAT)PHECU_LTOT_MIN_MAN * LC3_POW(2.0, PHECU_LTOT_MIN_EXP - 31); + + /* CFL uses separate buffers for pcmHist, xfp and Xsav and q_d , BASOP uses an optimized joint buffer*/ + zero_float(setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_xfp, setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot); + zero_cmplx(setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_X_sav_m, (setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot/2 + 1)); + + set_vec(POS_ONE_Q15, setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_mag_chg_1st, MAX_LGW); + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_beta_mute = (16384.0/32768.0); + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_seed = 21845; + + assert(decoder->frame_dms == 100); + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_LDWIN_OLAP = (decoder->frame_length / 4 ); /* 2.5 ms for regular 10 ms MDCT */ + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_t_adv = ( + decoder->frame_length + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_Lprot + + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_LDWIN_OLAP )/ 2; + } + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_short_flag_prev = 0; /* fullband transient */ + setup->PlcAdvSetup->PlcPhEcuSetup.PhECU_num_plocs = 0; + } + } + } +} + +LC3PLUS_Error update_dec_bitrate(LC3PLUS_Dec* decoder, int ch, int nBytes) +{ + int totalBits = 0, bitsTmp = 0, channel_bytes = 0, maxBytes = 0, minBytes = 0; + DecSetup* setup; + + if (decoder->hrmode) + { + switch (decoder->frame_dms) + { + case 25: + maxBytes = 210; + minBytes = MIN_NBYTES; + break; + case 50: + maxBytes = 375; + minBytes = MIN_NBYTES; + break; + case 100: + maxBytes = 625; + minBytes = MIN_NBYTES; + break; + default: + return LC3PLUS_HRMODE_ERROR; + } + } + else + { + minBytes = MIN_NBYTES; + maxBytes = MAX_NBYTES_100; // for backward compatibility, MAX_NBYTES_100 is used for all frame lengths + } + + channel_bytes = nBytes; + + setup = decoder->channel_setup[ch]; + + if (channel_bytes < minBytes || channel_bytes > maxBytes) + { + return LC3PLUS_NUMBYTES_ERROR; + } + + setup->targetBytes = channel_bytes; + setup->total_bits = setup->targetBytes << 3; + setup->enable_lpc_weighting = (setup->total_bits < 480); + setup->quantizedGainOff = + -(MIN(115, setup->total_bits / (10 * (decoder->fs_idx + 1))) + 105 + 5 * (decoder->fs_idx + 1)); + + if (decoder->hrmode && decoder->fs_idx == 5) + { + setup->quantizedGainOff = MAX(setup->quantizedGainOff, -181); + } + + totalBits = setup->total_bits; + + if (decoder->frame_ms == 2.5) { + setup->enable_lpc_weighting = setup->total_bits < 120; + totalBits = setup->total_bits * 4.0 * (1.0 - 0.4); + } + if (decoder->frame_ms == 5) { + setup->enable_lpc_weighting = (setup->total_bits < 240); + totalBits = setup->total_bits * 2 - 160; + } + + if (decoder->frame_length > 40 * ((LC3_FLOAT) (decoder->frame_dms) / 10.0)) { + setup->N_red_tns = 40 * ((LC3_FLOAT) (decoder->frame_dms) / 10.0); + setup->fs_red_tns = 40000; + } else { + setup->N_red_tns = decoder->frame_length; + setup->fs_red_tns = decoder->fs; + } + + bitsTmp = totalBits; + + if (bitsTmp < 400 + (decoder->fs_idx - 1) * 80) { + setup->ltpf_conf_beta = 0.4; + setup->ltpf_conf_beta_idx = 0; + } else if (bitsTmp < 480 + (decoder->fs_idx - 1) * 80) { + setup->ltpf_conf_beta = 0.35; + setup->ltpf_conf_beta_idx = 1; + } else if (bitsTmp < 560 + (decoder->fs_idx - 1) * 80) { + setup->ltpf_conf_beta = 0.3; + setup->ltpf_conf_beta_idx = 2; + } else if (bitsTmp < 640 + (decoder->fs_idx - 1) * 80) { + setup->ltpf_conf_beta = 0.25; + setup->ltpf_conf_beta_idx = 3; + } else { + setup->ltpf_conf_beta = 0; + setup->ltpf_conf_beta_idx = -1; + } + + /* No LTPF in hrmode */ + if (decoder->hrmode == 1) { + setup->ltpf_conf_beta = 0; + setup->ltpf_conf_beta_idx = -1; + } + + return LC3PLUS_OK; +} diff --git a/lc3plus/setup_dec_lc3.h b/lc3plus/setup_dec_lc3.h new file mode 100644 index 0000000000000000000000000000000000000000..6ed0f438ea7601d9646d9c821730f1ae9c1a630f --- /dev/null +++ b/lc3plus/setup_dec_lc3.h @@ -0,0 +1,112 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef SETUP_DEC_LC3_FL_H +#define SETUP_DEC_LC3_FL_H + +#include "constants.h" + +/* Channel state and bitrate-derived values go in this struct */ +typedef struct { + LC3_INT* stDec_ola_mem_fx; /* MDCT_MEM_LEN_MAX */ + LC3_INT total_bits; + LC3_INT enable_lpc_weighting; + LC3_INT targetBytes; + LC3_INT quantizedGainOff; + LC3_INT ltpf_param[3]; + LC3_INT ltpf_param_mem[3]; + LC3_INT ltpf_mem_pitch; + LC3_INT ltpf_mem_active; + LC3_INT ltpf_mem_pitch_fr; + LC3_INT ltpf_mem_beta_idx; + LC3_INT ltpf_conf_beta_idx; + LC3_INT spec_inv_idx; + LC3_INT concealMethod; + LC3_INT last_size; + LC3_INT BW_cutoff_idx_nf; + LC3_INT prev_BW_cutoff_idx_nf; + LC3_INT fs_red_tns; + LC3_INT N_red_tns; + LC3_INT scf_idx[SCF_MAX_PARAM]; + uint8_t resBits[MAX_RESBITS_LEN]; + LC3_INT tns_idx[TNS_NUMFILTERS_MAX * MAXLAG]; + + LC3_FLOAT prev_fac_ns; + LC3_FLOAT ltpf_mem_x[3 * MAX_LEN]; + LC3_FLOAT ltpf_mem_y[3 * MAX_LEN]; + LC3_FLOAT ltpf_mem_gain; + LC3_FLOAT ltpf_conf_beta; + LC3_FLOAT sqQdec_fl[MAX_LEN]; + LC3_FLOAT scf_q[M]; + LC3_FLOAT int_scf[MAX_BANDS_NUMBER]; + LC3_FLOAT x_fl[MAX_LEN]; + LC3_FLOAT imdct_mem[MAX_LEN]; + LC3_FLOAT alpha; + + Dct4 dct4structImdct; + + PlcSetup PlcSetup; + PlcNsSetup PlcNsSetup; + + pcState statePC; + PlcAdvSetup* PlcAdvSetup; +} DecSetup; + +/* Constants and sampling rate derived values go in this struct */ +struct LC3PLUS_Dec { + DecSetup* channel_setup[MAX_CHANNELS]; + const LC3_INT* W_fx; + const LC3_INT* bands_offset; + const LC3_INT* cutoffBins; + + LC3_INT fs; /* sampling rate, 44.1 maps to 48 */ + LC3_INT fs_out; /* output sampling rate */ + LC3_INT fs_idx; /* sampling rate index */ + LC3_INT frame_length; /* sampling rate index */ + LC3_INT channels; /* number of channels */ + LC3_FLOAT frame_ms; /* frame length in ms (wrong for 44.1) */ + LC3_INT frame_dms; /* frame length in ms * 10 (wrong for 44.1) */ + LC3_INT last_size; /* size of last frame, without error protection */ + LC3_INT ep_enabled; /* error protection enabled */ + LC3_INT error_report; /* corrected errors in last frame or -1 on error */ + + LC3_INT imdct_memLen; + LC3_INT imdct_winLen; + LC3_INT imdct_laZeros; + const LC3_FLOAT* imdct_win; + + LC3_INT yLen; + LC3_INT W_size; + LC3_INT la_zeroes; + LC3_INT bands_number; + LC3_INT ltpf_mem_x_len; + LC3_INT ltpf_mem_y_len; + LC3_INT BW_cutoff_bits; + LC3_INT tilt; + + LC3_INT hrmode; + LC3_INT specflip; + + const LC3_INT* bands_offsetPLC; + LC3_INT n_bandsPLC; + + LC3_INT32 rframe; + int plcMeth; /* PLC method for all channels */ + LC3_INT16 n_pccw; + LC3_INT16 be_bp_left; + LC3_INT16 be_bp_right; + LC3_INT16 n_pc; + LC3_INT16 m_fec; + int epmr; + LC3_INT16 combined_channel_coding; + int last_error; +}; + +#endif diff --git a/lc3plus/setup_enc_lc3.c b/lc3plus/setup_enc_lc3.c new file mode 100644 index 0000000000000000000000000000000000000000..986b43d6085443e801d293370634cd30bf9c7b6d --- /dev/null +++ b/lc3plus/setup_enc_lc3.c @@ -0,0 +1,546 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "setup_enc_lc3.h" +#include "functions.h" +#include + +/* if encoder is null only size is reported */ +int alloc_encoder(LC3PLUS_Enc* encoder, int channels) +{ + int ch = 0; + size_t size = sizeof(LC3PLUS_Enc); + + for (ch = 0; ch < channels; ch++) { + EncSetup* setup = balloc(encoder, &size, sizeof(EncSetup)); + if (encoder) { + encoder->channel_setup[ch] = setup; + } + } + + return (int)size; +} + +LC3PLUS_Error FillEncSetup(LC3PLUS_Enc* encoder, int samplerate, int channels + , int hrmode + , int32_t lfe_channel_array[] +) +{ + int ch = 0; + memset(encoder, 0, lc3plus_enc_get_size(samplerate, channels)); + alloc_encoder(encoder, channels); + + encoder->fs = CODEC_FS(samplerate); + encoder->fs_in = samplerate; + encoder->fs_idx = FS2FS_IDX(encoder->fs); + encoder->frame_dms = 100; + if (encoder->fs_idx > 4) { + encoder->fs_idx = 5; + } + + encoder->hrmode = hrmode != 0; + + encoder->channels = channels; + encoder->frame_ms = 10; + encoder->envelope_bits = 38; + encoder->global_gain_bits = 8; + encoder->noise_fac_bits = 3; + encoder->BW_cutoff_bits = BW_cutoff_bits_all[encoder->fs_idx]; + + encoder->r12k8_mem_in_len = 2 * 8 * encoder->fs / 12800; + encoder->r12k8_mem_out_len = 24; + + for (ch = 0; ch < encoder->channels; ch++) + { + encoder->channel_setup[ch]->lfe = lfe_channel_array[ch] != 0; + } + + encoder->bw_ctrl_active = 0; + encoder->bandwidth = encoder->fs / 2; + encoder->bandwidth_preset = encoder->fs / 2; + + + if (encoder->fs == 8000) { + encoder->tilt = 14; + } else if (encoder->fs == 16000) { + encoder->tilt = 18; + } else if (encoder->fs == 24000) { + encoder->tilt = 22; + } else if (encoder->fs == 32000) { + encoder->tilt = 26; + } else if (encoder->fs == 48000) { + encoder->tilt = 30; + } + else if (encoder->fs == 96000) { + encoder->tilt = 34; + } + + set_enc_frame_params(encoder); + return LC3PLUS_OK; +} + +/* set frame config params */ +void set_enc_frame_params(LC3PLUS_Enc* encoder) +{ + int ch = 0; + EncSetup* setup; + + encoder->frame_length = ceil(encoder->fs * 10 / 1000); /* fs * 0.01*2^6 */ + if (encoder->hrmode == 1) + { + encoder->yLen = encoder->frame_length; + } + else + { + encoder->yLen = MIN(MAX_BW, encoder->frame_length); + encoder->sns_damping = 0.85; + } + encoder->stEnc_mdct_mem_len = encoder->frame_length - encoder->la_zeroes; + encoder->bands_number = 64; + encoder->nSubdivisions = 3; + encoder->near_nyquist_index = encoder->bands_number - 2; + encoder->near_nyquist_flag = 0; + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN; + + if (encoder->fs_idx == 5) + { + encoder->hrmode = 1; + } + + if (encoder->hrmode) + { + encoder->BW_cutoff_bits = 0; + } + else + { + encoder->BW_cutoff_bits = BW_cutoff_bits_all[encoder->fs_idx]; + } + + if (encoder->frame_ms == 10) { + encoder->la_zeroes = MDCT_la_zeroes[encoder->fs_idx]; + if (encoder->hrmode) + { + encoder->bands_offset = ACC_COEFF_PER_BAND_HR[encoder->fs_idx]; + } + else + { + encoder->bands_offset = ACC_COEFF_PER_BAND[encoder->fs_idx]; + } + encoder->cutoffBins = BW_cutoff_bin_all; + + encoder->attdec_nblocks = 4; + encoder->attdec_damping = 0.5; + encoder->attdec_hangover_thresh = 2; + } + else if (encoder->frame_ms == 2.5) { + encoder->la_zeroes = MDCT_la_zeroes_2_5ms[encoder->fs_idx]; + if (encoder->hrmode) + { + encoder->bands_offset = ACC_COEFF_PER_BAND_2_5ms_HR[encoder->fs_idx]; + } + else + { + encoder->bands_offset = ACC_COEFF_PER_BAND_2_5ms[encoder->fs_idx]; + } + encoder->cutoffBins = BW_cutoff_bin_all_2_5ms; + } + else if (encoder->frame_ms == 5) { + encoder->la_zeroes = MDCT_la_zeroes_5ms[encoder->fs_idx]; + if (encoder->hrmode) + { + encoder->bands_offset = ACC_COEFF_PER_BAND_5ms_HR[encoder->fs_idx]; + } + else + { + encoder->bands_offset = ACC_COEFF_PER_BAND_5ms[encoder->fs_idx]; + } + encoder->cutoffBins = BW_cutoff_bin_all_5ms; + } + + if (encoder->frame_ms == 2.5) { + encoder->frame_length = encoder->frame_length >> 2; + encoder->yLen /= 4; + encoder->stEnc_mdct_mem_len = encoder->frame_length - encoder->la_zeroes; + if (encoder->hrmode) + { + encoder->bands_number = bands_number_2_5ms_HR[encoder->fs_idx]; + } + else + { + encoder->bands_number = bands_number_2_5ms[encoder->fs_idx]; + } + + encoder->nSubdivisions = 2; + encoder->near_nyquist_index = encoder->bands_number - 2; + encoder->ltpf_mem_in_len = LTPF_MEMIN_LEN + (LEN_12K8 >> 2); + } + + + if (encoder->frame_ms == 5) { + encoder->frame_length = encoder->frame_length >> 1; + encoder->yLen /= 2; + encoder->stEnc_mdct_mem_len = encoder->frame_length - encoder->la_zeroes; + encoder->bands_number = bands_number_5ms[encoder->fs_idx]; + encoder->nSubdivisions = 2; + encoder->near_nyquist_index = encoder->bands_number - 3; + } + + for (ch = 0; ch < encoder->channels; ch++) { + setup = encoder->channel_setup[ch]; + + setup->olpa_mem_pitch = 17; + + if (setup->mdctStruct.mem != NULL) { + mdct_free(&setup->mdctStruct); + mdct_init(&setup->mdctStruct, encoder->frame_length, encoder->frame_dms, encoder->fs_idx, encoder->hrmode); + + dct2_free(&setup->dct2StructSNS); + dct2_init(&setup->dct2StructSNS, M); + } + else + { + mdct_init(&setup->mdctStruct, encoder->frame_length, encoder->frame_dms, encoder->fs_idx, encoder->hrmode); + dct2_init(&setup->dct2StructSNS, M); + } + } +} + +/* change encoder bitrate */ +LC3PLUS_Error update_enc_bitrate(LC3PLUS_Enc* encoder, int bitrate) +{ + int ch = 0, bitsTmp = 0, minBR = 0, maxBR = 0, totalBytes = 0; + LC3_INT channel_bytes = 0, max_bytes = 0; + + if (encoder->hrmode) + { +#ifdef ENABLE_HR_MODE_FL + switch (encoder->frame_dms) + { + case 25: + maxBR = 672000; + if (encoder->fs == 48000) {minBR = MIN_BR_25MS_48KHZ_HR;} + else if (encoder->fs == 96000) {minBR = MIN_BR_25MS_96KHZ_HR;} + else { return LC3PLUS_HRMODE_ERROR;} + break; + case 50: + maxBR = 600000; + if (encoder->fs == 48000) {minBR = MIN_BR_50MS_48KHZ_HR;} + else if (encoder->fs == 96000) {minBR = MIN_BR_50MS_96KHZ_HR;} + else { return LC3PLUS_HRMODE_ERROR;} + break; + case 100: + maxBR = 500000; + if (encoder->fs == 48000) {minBR = MIN_BR_100MS_48KHZ_HR;} + else if (encoder->fs == 96000) {minBR = MIN_BR_100MS_96KHZ_HR;} + else { return LC3PLUS_HRMODE_ERROR;} + break; + default: + return LC3PLUS_HRMODE_ERROR; + } +#endif + } + else + { + minBR = (MIN_NBYTES << 3); + maxBR = MAX_BR; + + switch (encoder->frame_dms) + { + case 25: + minBR = MIN_BR_025DMS; + maxBR = MAX_BR; + break; + case 50: + minBR = MIN_BR_050DMS; + maxBR = MAX_BR; + /* have additional limitations for 5.0ms */ + switch (encoder->fs_in) + { + case 8000: maxBR = MAX_BR_050DMS_NB; break; + default: break; + } + break; + case 100: + /* have additional limitations for 10ms */ + minBR = MIN_BR_100DMS; + maxBR = MAX_BR; + switch (encoder->fs_in) + { + case 8000: maxBR = MAX_BR_100DMS_NB ; break; + case 16000: maxBR = MAX_BR_100DMS_WB ; break; + case 24000: maxBR = MAX_BR_100DMS_SSWB; break; + default: maxBR = MAX_BR; break; + } + break; + default: return LC3PLUS_FRAMEMS_ERROR; + } + maxBR *= (encoder->fs_in == 44100 ? 441. / 480 : 1); + } + minBR *= encoder->channels; + maxBR *= encoder->channels; + + encoder->combined_channel_coding = 0; + + if (encoder->channels > 1 && encoder->epmode) + { + if (encoder->bitrate * encoder->frame_length / (8 * encoder->fs_in) <= 160) + { + encoder->combined_channel_coding = 1; + } + } + + if (encoder->epmode > 0) + { + max_bytes = bitrate * encoder->frame_length / (8 * encoder->fs_in * encoder->channels); + if (max_bytes < FEC_SLOT_BYTES_MIN || max_bytes > FEC_SLOT_BYTES_MAX) + { + encoder->lc3_br_set = 0; + return LC3PLUS_BITRATE_ERROR; + } + } + + if (encoder->combined_channel_coding) + { + totalBytes = fec_get_data_size(encoder->epmode, encoder->combined_channel_coding, + bitrate * encoder->frame_length / (8 * encoder->fs_in)); + + encoder->channel_setup[0]->n_pccw = + fec_get_n_pccw(bitrate * encoder->frame_length / (8 * encoder->fs_in), encoder->epmode, + encoder->combined_channel_coding); + + encoder->channel_setup[0]->n_pc = fec_get_n_pc(encoder->epmode, encoder->channel_setup[0]->n_pccw, + bitrate * encoder->frame_length / (8 * encoder->fs_in)); + } + else + { + totalBytes = bitrate * encoder->frame_length / (8 * encoder->fs_in); + } + + if (encoder->frame_dms <= 50) + { + encoder->tnsMaxOrder = 4; + } else { + encoder->tnsMaxOrder = 8; + } + + if (bitrate < minBR || bitrate > maxBR) { + return LC3PLUS_BITRATE_ERROR; + } + + encoder->lc3_br_set = 1; + for (ch = 0; ch < encoder->channels; ch++) { + + EncSetup* setup = encoder->channel_setup[ch]; + + setup->targetBytes = totalBytes / encoder->channels + (ch < (totalBytes % encoder->channels)); + channel_bytes = totalBytes / encoder->channels + (ch < (totalBytes % encoder->channels)); + + if (encoder->combined_channel_coding) + { + setup->targetBytes = channel_bytes; + } + else + { + setup->targetBytes = fec_get_data_size(encoder->epmode, encoder->combined_channel_coding, channel_bytes); + setup->n_pccw = fec_get_n_pccw(channel_bytes, encoder->epmode, encoder->combined_channel_coding); + setup->n_pc = fec_get_n_pc(encoder->epmode, setup->n_pccw, channel_bytes); + } + // reduce bandwith to 12kHz if bitrate is low + if (encoder->frame_dms == 100 && + ((setup->targetBytes < 40 && encoder->fs == 48000) || + (setup->targetBytes < 36 && encoder->fs == 32000))) + { + encoder->bandwidth = MIN(12000, encoder->bandwidth_preset); + } + else + { + /* channel with highest index has lowest bitrate. + For a second channel with lower targetBytes, bandwidth is overwritten */ + encoder->bandwidth = encoder->bandwidth_preset; + } + encoder->bw_ctrl_cutoff_bin = encoder->bandwidth * encoder->frame_dms / 5000; + encoder->bw_index = (encoder->bandwidth / 4000) - 1; + setup->total_bits = setup->targetBytes << 3; + setup->targetBitsInit = setup->total_bits - encoder->envelope_bits - encoder->global_gain_bits - + encoder->noise_fac_bits - encoder->BW_cutoff_bits - + ceil(LC3_LOGTWO(encoder->frame_length / 2)) - 2 - 1; + + if (setup->total_bits > 1280) { + setup->targetBitsInit = setup->targetBitsInit - 1; + } + if (setup->total_bits > 2560) { + setup->targetBitsInit = setup->targetBitsInit - 1; + } + + if (encoder->hrmode) + { + setup->targetBitsInit -= 1; + } + + setup->targetBitsAri = setup->total_bits; + setup->enable_lpc_weighting = setup->total_bits < 480; + + if (encoder->frame_ms == 5) { + setup->enable_lpc_weighting = setup->total_bits < 240; + } + if (encoder->frame_ms == 2.5) { + setup->enable_lpc_weighting = setup->total_bits < 120; + } + + setup->quantizedGainOff = + -(MIN(115, setup->total_bits / (10 * (encoder->fs_idx + 1))) + 105 + 5 * (encoder->fs_idx + 1)); + + if (encoder->hrmode && encoder->fs_idx == 5) + { + setup->quantizedGainOff = MAX(setup->quantizedGainOff, -181); + } + + if (encoder->frame_ms == 10 && ((encoder->fs_in >= 44100 && setup->targetBytes >= 100) || + (encoder->fs_in == 32000 && setup->targetBytes >= 81)) && setup->targetBytes < 340 && encoder->hrmode == 0) { + setup->attack_handling = 1; + + } + else if (encoder->frame_dms == 75 && ((encoder->fs_in >= 44100 && setup->targetBytes >= 75) || + (encoder->fs_in == 32000 && setup->targetBytes >= 61)) && setup->targetBytes < 150 && encoder->hrmode == 0) + { + setup->attack_handling = 1; + } + else + { + /* reset for bitrate switching */ + setup->attack_handling = 0; + + setup->attdec_filter_mem[0] = 0; + setup->attdec_filter_mem[1] = 0; + + setup->attdec_detected = 0; + setup->attdec_position = 0; + setup->attdec_acc_energy = 0; + } + + bitsTmp = setup->total_bits; + if (encoder->frame_ms == 2.5) { + bitsTmp = bitsTmp * 4.0 * (1.0 - 0.4); + } + if (encoder->frame_ms == 5) { + bitsTmp = bitsTmp * 2 - 160; + } + + if (bitsTmp < 400 + (encoder->fs_idx - 1) * 80) { + setup->ltpf_enable = 1; + } else if (bitsTmp < 480 + (encoder->fs_idx - 1) * 80) { + setup->ltpf_enable = 1; + } else if (bitsTmp < 560 + (encoder->fs_idx - 1) * 80) { + setup->ltpf_enable = 1; + } else if (bitsTmp < 640 + (encoder->fs_idx - 1) * 80) { + setup->ltpf_enable = 1; + } else { + setup->ltpf_enable = 0; + } + if (encoder->hrmode) { + setup->ltpf_enable = 0; + } + + /* turn down SNS shaping for higher rates */ + if (encoder->hrmode == 0) { + encoder->sns_damping = 0.85; + } else { + encoder->sns_damping = 0.6; + if (encoder->fs_idx >= 4) { + if (encoder->frame_ms == 10) + { + if (setup->total_bits > 4400) { + encoder->sns_damping = 6881.0/32768.0; + } + } + if (encoder->frame_ms == 5) + { + if (setup->total_bits > 4600/2) { + encoder->sns_damping = 4915.0/32768.0; + } + } + if (encoder->frame_ms == 2.5) + { + if (setup->total_bits > 4600/4) { + encoder->sns_damping = 4915.0/32768.0; + } + } + } + } + + if (encoder->hrmode && encoder->fs_idx >= 4) + { + int real_rate = setup->targetBytes * 8000 / encoder->frame_ms; + setup->regBits = real_rate / 12500; + + if (encoder->fs_idx == 5) + { + if (encoder->frame_ms == 10) + { + setup->regBits +=2; + } + if (encoder->frame_ms == 2.5) + { + setup->regBits -= 6; + } + } + else + { + if (encoder->frame_ms == 2.5) + { + setup->regBits -= 6; + } + else if (encoder->frame_ms == 5) + { + setup->regBits += 0; + } + if (encoder->frame_ms == 10) + { + setup->regBits += 5; + } + } + if (setup->regBits < 6) + { + setup->regBits = 6; + } + if (setup->regBits > 23) + { + setup->regBits = 23; + } + } + else + { + setup->regBits = -1; + } + } + + encoder->bitrate = bitrate; + + return LC3PLUS_OK; +} + +void update_enc_bandwidth(LC3PLUS_Enc* encoder, int bandwidth) +{ + int index = 0; + + if (bandwidth >= encoder->fs_in) { + encoder->bandwidth = 0; + } + else + { + encoder->bandwidth = bandwidth; + index = FS2FS_IDX(bandwidth); + if (index > 4) { + index = 5; + } + encoder->bw_ctrl_cutoff_bin = encoder->cutoffBins[index]; + } +} diff --git a/lc3plus/setup_enc_lc3.h b/lc3plus/setup_enc_lc3.h new file mode 100644 index 0000000000000000000000000000000000000000..31f0cbeb50edfb2f21c87c29192f3539f9045401 --- /dev/null +++ b/lc3plus/setup_enc_lc3.h @@ -0,0 +1,119 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef SETUP_ENC_LC3_FL_H +#define SETUP_ENC_LC3_FL_H + +#include "constants.h" + +/* Channel state and bitrate-derived values go in this struct */ +typedef struct { + LC3_FLOAT targetBitsOff; + LC3_FLOAT ltpf_mem_normcorr; + LC3_FLOAT ltpf_mem_mem_normcorr; + LC3_FLOAT attdec_filter_mem[2]; + LC3_FLOAT attdec_acc_energy; + LC3_FLOAT r12k8_mem_50[2]; + LC3_FLOAT r12k8_mem_in[120]; + LC3_FLOAT r12k8_mem_out[24]; + LC3_FLOAT olpa_mem_s12k8[3]; + LC3_FLOAT olpa_mem_s6k4[LEN_6K4 + MAX_PITCH_6K4 + 16]; + LC3_FLOAT ltpf_mem_in[LTPF_MEMIN_LEN + LEN_12K8 + 1]; + LC3_FLOAT s_in_scaled[MAX_LEN]; + LC3_FLOAT s_12k8[LEN_12K8 + 1]; + LC3_FLOAT ener[MAX_BANDS_NUMBER]; + LC3_FLOAT scf_q[M]; + LC3_FLOAT scf[M]; + LC3_FLOAT int_scf[MAX_BANDS_NUMBER]; + LC3_FLOAT ltpf_mem_pitch; + + LC3_INT targetBytes; + LC3_INT total_bits; + LC3_INT targetBitsInit; + LC3_INT targetBitsAri; + LC3_INT enable_lpc_weighting; + LC3_INT ltpf_enable; + LC3_INT quantizedGainOff; + LC3_INT tns_bits; + LC3_INT targetBitsQuant; + LC3_INT olpa_mem_pitch; + LC3_INT ltpf_mem_ltpf_on; + LC3_INT mem_targetBits; + LC3_INT mem_specBits; + LC3_INT attack_handling; /* flag to enable attack handling */ + LC3_INT attdec_detected; + LC3_INT attdec_position; + LC3_INT ltpf_param[3]; + LC3_INT L_scf_idx[SCF_MAX_PARAM]; + LC3_INT codingdata[3 * MAX_LEN]; + uint8_t resBits[MAX_RESBITS_LEN]; + LC3_INT regBits; + + LC3_INT16 n_pc; + LC3_INT16 n_pccw; + LC3_INT16 be_bp_left; + LC3_INT16 be_bp_right; + + Mdct mdctStruct; + Dct2 dct2StructSNS; + + LC3_INT lfe; +} EncSetup; + +/* Constants and sampling rate derived values go in this struct */ +struct LC3PLUS_Enc { + EncSetup* channel_setup[MAX_CHANNELS]; + const LC3_INT* W_fx; + const LC3_INT* bands_offset; + const LC3_INT* cutoffBins; + + LC3_INT fs; /* encoder sampling rate 44.1 -> 48 */ + LC3_INT fs_in; /* input sampling rate */ + LC3_INT bitrate; /* global bitrate */ + LC3_INT fs_idx; /* sampling rate index */ + LC3_INT frame_length; /* audio samples / frame */ + LC3_INT channels; /* number of channels */ + LC3_INT epmode; /* error protection mode */ + LC3_FLOAT frame_ms; /* frame length in ms (wrong for 44.1) */ + LC3_INT frame_dms; /* frame length in ms * 10 (wrong for 44.1) */ + LC3_INT tilt; + LC3_INT lc3_br_set; + LC3_INT yLen; + LC3_INT W_size; + LC3_INT la_zeroes; + LC3_INT stEnc_mdct_mem_len; + LC3_INT bands_number; + LC3_INT nSubdivisions; + LC3_INT ltpf_mem_in_len; + LC3_INT envelope_bits; + LC3_INT global_gain_bits; + LC3_INT noise_fac_bits; + LC3_INT BW_cutoff_bits; + LC3_INT r12k8_mem_in_len; + LC3_INT r12k8_mem_out_len; + LC3_INT16 near_nyquist_index; + LC3_INT16 near_nyquist_flag; + LC3_INT tnsMaxOrder; + LC3_INT hrmode; + LC3_INT bandwidth; + LC3_INT bandwidth_preset; + LC3_INT bw_ctrl_active; + LC3_INT bw_ctrl_cutoff_bin; + LC3_INT bw_index; + LC3_FLOAT sns_damping; + LC3_INT attdec_nblocks; + LC3_FLOAT attdec_damping; + LC3_INT attdec_hangover_thresh; + + LC3_INT16 combined_channel_coding; + LC3_INT16 epmr; +}; + +#endif diff --git a/lc3plus/sns_compute_scf.c b/lc3plus/sns_compute_scf.c new file mode 100644 index 0000000000000000000000000000000000000000..5cb041925bbcf0dc5b8a0c47f0b5d8aa07d01bd1 --- /dev/null +++ b/lc3plus/sns_compute_scf.c @@ -0,0 +1,177 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processSnsComputeScf_fl(LC3_FLOAT* x, LC3_INT tilt, LC3_INT xLen, LC3_FLOAT* gains, LC3_INT smooth, LC3_FLOAT sns_damping, LC3_FLOAT attdec_damping_factor) +{ + LC3_INT bands_number = 0, d = 0, i = 0, j = 0, n = 0, n2 = 0, n4 = 0, mapping[64] = {0}; + LC3_FLOAT tmp[64] = {0}, x_tmp1[MAX_LEN] = {0}, x_tmp2[MAX_LEN] = {0}, sum = 0, mean = 0, xl4[16] = {0}, nf = 0, xl[64] = {0}, gains_smooth[M] = {0}, ratio = 0; + LC3_FLOAT W[6] = {1.0 / 12.0, 2.0 / 12.0, 3.0 / 12.0, 3.0 / 12.0, 2.0 / 12.0, 1.0 / 12.0}; + + bands_number = xLen; + assert(bands_number <= 64); + + /* 5 ms */ + if (bands_number < 64) { + d = 64 - bands_number; + + if (d < xLen) + { + j = 0; + for (i = 0; i < 2 * d; i = i + 2) { + tmp[i] = x[j]; + tmp[i + 1] = x[j]; + j++; + } + + move_float(&tmp[2 * d], &x[d], 64 - 2 * d); + } else if (ceil(64.0 / (LC3_FLOAT) xLen) == 4) + { + ratio = LC3_FABS((LC3_FLOAT) (1.0 - 32.0 / (LC3_FLOAT) xLen)); + n4 = round(ratio * xLen); + n2 = xLen - n4; + + j = 0; + for(i = 1; i <= n4; i++) + { + mapping[j] = i; + mapping[j + 1] = i; + mapping[j + 2] = i; + mapping[j + 3] = i; + j += 4; + } + + for (i = n4 + 1; i <= n4 + n2; i++) + { + mapping[j] = i; + mapping[j + 1] = i; + j += 2; + } + + + for (i = 0; i < 64; i++) + { + tmp[i] = x[mapping[i] - 1]; + } + } else { + assert(0 && "Unsupported number of bands!"); + } + + move_float(x, tmp, 64); + + bands_number = 64; + xLen = bands_number; + } + + + /* Smoothing */ + + x_tmp1[0] = x[0]; + + move_float(&x_tmp1[1], &x[0], xLen - 1); + + move_float(&x_tmp2[0], &x[1], xLen - 1); + + x_tmp2[xLen - 1] = x[xLen - 1]; + + for (i = 0; i < xLen; i++) { + x[i] = 0.5 * x[i] + 0.25 * (x_tmp1[i] + x_tmp2[i]); + } + + /* Pre-emphasis */ + for (i = 0; i < xLen; i++) { + x[i] = x[i] * LC3_POW(10.0, (LC3_FLOAT)i * (LC3_FLOAT)tilt / ((LC3_FLOAT)bands_number - 1.0) / 10.0); + } + + /* Noise floor at -40dB */ + for (i = 0; i < 64; i++) { + sum += x[i]; + } + + mean = sum / (LC3_FLOAT)xLen; + + nf = mean * LC3_POW(10.0, -40.0 / 10.0); + nf = MAX(nf, LC3_POW(2.0, -32.0)); + + for (i = 0; i < 64; i++) { + if (x[i] < nf) { + x[i] = nf; + } + } + + /* Log-domain */ + for (i = 0; i < 64; i++) { + xl[i] = LC3_LOGTWO(x[i]) / 2.0; + } + + /* Downsampling */ + for (n = 0; n < bands_number / 4; n++) { + if (n == 0) { + tmp[0] = xl[0]; + + move_float(&tmp[1], &xl[0], 5); + + } else if (n == (bands_number / 4 - 1)) { + move_float(tmp, &xl[59], 5); + + tmp[5] = xl[63]; + + } else { + move_float(tmp, &xl[n * 4 - 1], ((n * 4 + 5 - 1) - (n * 4 - 1) + 1)); + } + + sum = 0; + for (i = 0; i < 6; i++) { + sum += tmp[i] * W[i]; + } + + xl4[n] = sum; + } + + + /* Remove mean and scaling */ + + sum = 0; + for (i = 0; i < bands_number / 4; i++) { + sum += xl4[i]; + } + + mean = sum / ((LC3_FLOAT)bands_number / 4.0); + + for (i = 0; i < bands_number / 4; i++) { + gains[i] = sns_damping * (xl4[i] - mean); + } + + /* Smoothing */ + if (smooth) { + gains_smooth[0] = (gains[0] + gains[1] + gains[2]) / 3.0; + gains_smooth[1] = (gains[0] + gains[1] + gains[2] + gains[3]) / 4.0; + + for (i = 2; i < 14; i++) { + gains_smooth[i] = (gains[i - 2] + gains[i - 1] + gains[i] + gains[i + 1] + gains[i + 2]) / 5.0; + } + + gains_smooth[M - 2] = (gains[M - 4] + gains[M - 3] + gains[M - 2] + gains[M - 1]) / 4.0; + gains_smooth[M - 1] = (gains[M - 3] + gains[M - 2] + gains[M - 1]) / 3.0; + + sum = 0; + for (i = 0; i < M; i++) { + sum += gains_smooth[i]; + } + + mean = sum / (LC3_FLOAT)M; + + for (i = 0; i < M; i++) { + gains[i] = attdec_damping_factor * (gains_smooth[i] - mean); + } + } +} diff --git a/lc3plus/sns_interpolate_scf.c b/lc3plus/sns_interpolate_scf.c new file mode 100644 index 0000000000000000000000000000000000000000..4419397890d890f097d538b3ee4799ca1a14c7b9 --- /dev/null +++ b/lc3plus/sns_interpolate_scf.c @@ -0,0 +1,90 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processSnsInterpolateScf_fl(LC3_FLOAT* gains, LC3_INT encoder_side, LC3_INT bands_number, LC3_FLOAT* gains_int) +{ + LC3_INT i = 0, n = 0, d = 0, n4 = 0; + LC3_FLOAT tmp[MAX_BANDS_NUMBER_PLC] = {0}, ratio = 0; + + /* Interpolation */ + + gains_int[0] = gains[0]; + gains_int[1] = gains[0]; + + for (n = 0; n <= 14; n++) { + gains_int[n * 4 + 2] = gains[n] + (gains[n + 1] - gains[n]) / 8.0; + gains_int[n * 4 + 3] = gains[n] + 3.0 * (gains[n + 1] - gains[n]) / 8.0; + gains_int[n * 4 + 4] = gains[n] + 5.0 * (gains[n + 1] - gains[n]) / 8.0; + gains_int[n * 4 + 5] = gains[n] + 7.0 * (gains[n + 1] - gains[n]) / 8.0; + } + + gains_int[62] = gains[15] + (gains[15] - gains[14]) / 8.0; + gains_int[63] = gains[15] + 3.0 * (gains[15] - gains[14]) / 8.0; + + /* For 5ms */ + + if (bands_number < 64) { + d = 64 - bands_number; + + if (d < 32) + { + i = 0; + for (n = 0; n < 2 * d; n = n + 2) { + tmp[i] = (gains_int[n] + gains_int[n + 1]) / (LC3_FLOAT)2.0; + i++; + } + + for (n = 1; n < d; n++) { + gains_int[n] = gains_int[2 * n]; + } + + for (n = 2 * d; n < 64; n++) { + gains_int[n - d] = gains_int[n]; + } + + move_float(gains_int, tmp, d); + } else if (ceil(64.0 / (LC3_FLOAT) bands_number) == 4) + { + ratio = LC3_FABS((LC3_FLOAT) ((LC3_FLOAT)1.0 - (LC3_FLOAT)32.0 / (LC3_FLOAT) bands_number)); + n4 = LC3_ROUND(ratio * (LC3_FLOAT)bands_number); + + for (i = 0; i < n4; i++) + { + tmp[i] = (gains_int[4 * i] + gains_int[4 * i + 1] + gains_int[4 * i + 2] + gains_int[4 * i + 3]) / 4.0; + } + + for (i = 0; i < bands_number - n4; i++) + { + tmp[n4 + i] = (gains_int[4 * n4 + 2 * i] + gains_int[4 * n4 + 2 * i + 1]) / 2.0; + } + + move_float(gains_int, tmp, bands_number); + } else { + assert(0 && "Unsupported number of bands!"); + } + } + + /* Inversion at encoder-side */ + + if (encoder_side == 1) { + for (n = 0; n < bands_number; n++) { + gains_int[n] = -gains_int[n]; + } + } + + /* Linear domain */ + + for (n = 0; n < bands_number; n++) { + gains_int[n] = LC3_POW(2, gains_int[n]); + } +} diff --git a/lc3plus/sns_quantize_scf.c b/lc3plus/sns_quantize_scf.c new file mode 100644 index 0000000000000000000000000000000000000000..704127cce71fdab61027a76f66f9382859048ed4 --- /dev/null +++ b/lc3plus/sns_quantize_scf.c @@ -0,0 +1,517 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static void pvq_dec(LC3_INT k, LC3_INT m, LC3_INT LS_ind, LC3_INT MPVQ_ind, LC3_INT* pulses); +static LC3_INT find_last_indice_le(LC3_INT compare, const LC3_INT* array, LC3_INT len); +static void idct_II(LC3_FLOAT* in, LC3_FLOAT* out, LC3_INT len); + +void idct_II(LC3_FLOAT* in, LC3_FLOAT* out, LC3_INT len) +{ + LC3_INT i; + LC3_FLOAT norm1, sum; + + norm1 = 0.353553390593274; /* sqrt(2 / 16) */ + + for (i = 0; i < len; i++) { + sum = mac_loop(in, idct_lookup[i], len); + out[i] = norm1 * sum; + } +} + +static LC3_INT pvq_pulse_search(LC3_FLOAT *xabs, LC3_FLOAT *ener, LC3_FLOAT *corr, LC3_INT *y, LC3_INT start, LC3_INT end) +{ + LC3_INT i; + LC3_INT nBest; + LC3_FLOAT bestCorrSq, bestEn; + LC3_FLOAT corrSq, currCorr, currEn; + + nBest = 0; + bestCorrSq = 0.0; + bestEn = 0.0; + + *ener += 1; // Added once for the entire loop + + i = start; + + currCorr = *corr + xabs[i]; + currEn = *ener + (2 * y[i]); + + corrSq = currCorr * currCorr; + + bestEn = currEn; + bestCorrSq = corrSq; + nBest = i; + + /* Iterative max search as recommended in the spec */ + for (; i < end; i++) + { + currCorr = *corr + xabs[i]; + currEn = *ener + (2 * y[i]); + + corrSq = currCorr * currCorr; + + if ((corrSq * bestEn) > (bestCorrSq * currEn)) + { + bestEn = currEn; + bestCorrSq = corrSq; + nBest = i; + } + } + + *corr += xabs[nBest]; + *ener += (2 * y[nBest]); + + y[nBest] += 1; /* Add the selected unit pulse */ + + return nBest; +} + +static void pvq_enc_vec_normalize(LC3_FLOAT *vec, LC3_INT N) +{ + LC3_FLOAT mag = 0.0, norm_fac; + LC3_INT i; + + for (i = 0; i < N; i++) + { + mag += (vec[i] * vec[i]); + } + + norm_fac = 1.0 / LC3_SQRT(mag); + + for (i = 0; i < N; i++) + { + vec[i] = vec[i] * norm_fac; + } + + return; +} + +static void pvq_enc_search(LC3_FLOAT* x_in, LC3_INT y[4][M]) +{ + LC3_INT i, N, K, pulse_total, N_setA; + LC3_FLOAT abs_sum, projfac; + LC3_FLOAT xabs[16]; + LC3_FLOAT yy, xy; + + abs_sum = 0.0; + + /* Step 1 : Projection to pyramid N=16, K=6 */ + N = 16; + K = 6; + pulse_total = 0; + N_setA = 10; + + yy = xy = 0.0f; + + for (i = 0; i < N; i++) + { + xabs[i] = LC3_FABS(x_in[i]); + abs_sum += xabs[i]; + } + + projfac = (K - 1) / abs_sum; + + for (i = 0; i < N; i++) + { + y[3][i] = floor(xabs[i] * projfac); + + pulse_total += y[3][i]; + + yy += (y[3][i] * y[3][i]); + xy += (xabs[i] * y[3][i]); + } + + /* Step 2: Adding unit pulses up to K = 6 */ + for (; pulse_total < K; pulse_total++) + { + pvq_pulse_search(xabs, &yy, &xy, y[3], 0, N); + } + + /* Step 3: Adding unit pulses up to K = 8 */ + memcpy(y[2], y[3], sizeof(LC3_INT)*N); + K = 8; + + for (; pulse_total < K; pulse_total++) + { + pvq_pulse_search(xabs, &yy, &xy, y[2], 0, N); + } + + memcpy(y[1], y[2], sizeof(LC3_INT)*N_setA); + + /* Step 4: Remove unit pulses not belonging to set A */ + for (i = N_setA; i < N; i++) + { + y[1][i] = 0; + } + + /* Step 5: Update yy and xy terms to reflect y1 */ + yy = 0; + xy = 0; + pulse_total = 0; + + for (i = 0; i < N_setA; i++) + { + yy += (y[1][i] * y[1][i]); + xy += (xabs[i] * y[1][i]); + + pulse_total += y[1][i]; + } + + /* Step 6: Add unit pulses until K = 10 over N = 10 */ + K = 10; + for (; pulse_total < K; pulse_total++) + { + pvq_pulse_search(xabs, &yy, &xy, y[1], 0, N_setA); + } + + memcpy(y[0], y[1], sizeof(LC3_INT)*N); + + /* Step 7: Add unit pulses until K = 1 over N = 6 in set B*/ + pvq_pulse_search(xabs, &yy, &xy, y[0], N_setA, N); + + /* Step 8: Add signs to each of the 4 vectors from x */ + for (i = 0; i < N; i++) + { + if (x_in[i] < 0) + { + y[0][i] = -y[0][i]; + y[1][i] = -y[1][i]; + y[2][i] = -y[2][i]; + y[3][i] = -y[3][i]; + } + } + + return; +} + +static inline LC3_FLOAT calc_mse(LC3_FLOAT *t2rot, LC3_FLOAT *y, LC3_FLOAT gain, LC3_INT N) +{ + LC3_FLOAT mse; + LC3_INT i; + + mse = 0.0; + + for (i = 0; i < N; i++) + { + LC3_FLOAT err = (t2rot[i] - gain * y[i]); + mse += (err * err); + } + + return mse; +} + +static void sns_quant_adj_gain_shape_search(LC3_FLOAT *t2rot, LC3_INT y[4][M] , + LC3_INT *gain_idx, LC3_INT *shape_idx, LC3_FLOAT *y_norm, LC3_FLOAT *scq_gain) +{ + LC3_INT gidx, sidx; + LC3_FLOAT min_mse, mse; + LC3_INT N; + LC3_FLOAT yCur[4][16]; + LC3_INT i; + + const LC3_INT gain_levels[4] = { 2, 4, 4, 8 }; + const LC3_FLOAT *sns_vq_gains[4] = { sns_vq_reg_adj_gains_fl , sns_vq_reg_lf_adj_gains_fl , + sns_vq_near_adj_gains_fl , sns_vq_far_adj_gains_fl }; + + min_mse = -1.0; + N = 16; + + + *gain_idx = *shape_idx = 0; + + for (sidx = 0; sidx < 4; sidx++) + { + for (i = 0; i < N; i++) + { + yCur[sidx][i] = (LC3_FLOAT)y[sidx][i]; + } + + /* Step 9: Normalize the vectors */ + pvq_enc_vec_normalize(yCur[sidx], N); + + for (gidx = 0; gidx < gain_levels[sidx]; gidx++) + { + mse = calc_mse(t2rot, yCur[sidx], sns_vq_gains[sidx][gidx], N); + + if ((mse < min_mse) || (min_mse < 0)) + { + *gain_idx = gidx; + *shape_idx = sidx; + min_mse = mse; + } + } + } + + for (i = 0; i < N; i++) + { + y_norm[i] = yCur[*shape_idx][i]; + } + + *scq_gain = sns_vq_gains[*shape_idx][*gain_idx]; + + return; +} + +static void enc_push_sign(LC3_FLOAT val, LC3_UINT32 *next_sign_ind, LC3_INT *index) +{ + if (((*next_sign_ind & 0x80000000U) == 0) && (val != 0)) { + *index = 2 * (*index) + *next_sign_ind; + } + if (val < 0) { + *next_sign_ind = 1; + } + if (val > 0) { + *next_sign_ind = 0; + } + + return; +} + +static void MPVQ_enum(LC3_INT dim, LC3_INT *sns_vec, LC3_INT *index_val, LC3_INT *lead_sign_ind) +{ + LC3_UINT32 next_sign_ind; + LC3_INT k_val_acc; + LC3_INT pos; + LC3_INT index, n; + LC3_INT const *row_ptr; + + /* MPVQ-index composition loop */ + LC3_INT tmp_h_row; + LC3_INT tmp_val; + + next_sign_ind = 0x80000000U; + k_val_acc = 0; + pos = dim; + index = 0; + n = 0; + + row_ptr = (LC3_INT const *)&(pvq_enc_A[n]); + tmp_h_row = row_ptr[0]; + + for (pos--; pos >= 0; pos--) + { + tmp_val = sns_vec[pos]; + enc_push_sign(tmp_val, &next_sign_ind, &index); + + index += tmp_h_row; + k_val_acc += abs(tmp_val); + if (pos != 0) { + n += 1; /* switch row in offset table MPVQ_offsets(n, k) */ + } + row_ptr = (LC3_INT const *)&(pvq_enc_A[n]); + + tmp_h_row = row_ptr[k_val_acc]; + } + + *index_val = index; + *lead_sign_ind = next_sign_ind; + + return; +} + +static LC3_INT MSEsearch (LC3_FLOAT *scf, const LC3_FLOAT sns_CB[8][32]) +{ + LC3_FLOAT distance, mse; + LC3_INT i, n, ind; + + ind = 0; + + distance = (LC3_FLOAT) LC3_CONST_POW_2_100; + for (i = 0; i < 32; i++) { + mse = 0; + for (n = 0; n < 8; n++) { + mse += (scf[n] - sns_CB[n][i]) * (scf[n] - sns_CB[n][i]); + } + + if (mse < distance) { + distance = mse; + ind = i; + } + } + return ind; +} + +void process_snsQuantizesScf_Enc(LC3_FLOAT* env, LC3_INT* index, LC3_FLOAT* envq, Dct2 dct2structSNS) +{ + LC3_FLOAT stage2_en1_norm_sub[M]; + LC3_INT i, j; + LC3_FLOAT st1_vector[M]; + LC3_FLOAT pvq_target_pre[M]; + LC3_FLOAT pvq_target[M]; + LC3_FLOAT stage2_en1_norm_pre_sub[M]; + LC3_INT gain, shape; + LC3_FLOAT scfq_gain; + LC3_INT y[4][M]; + + /* Stage 1 split VQ */ + index[0] = MSEsearch(&env[0], sns_LFCB); /* ind_LF */ + index[1] = MSEsearch(&env[8], sns_HFCB); /* ind_HF */ + + j = 8; + for (i = 0; i < 8; i++, j++) { + st1_vector[i] = sns_LFCB[i][index[0]]; + st1_vector[j] = sns_HFCB[i][index[1]]; + } + + /* STAGE 2 */ + for (i = 0; i < 16; i++) { + pvq_target_pre[i] = env[i] - st1_vector[i]; + } + + dct2_apply(&dct2structSNS, pvq_target_pre, pvq_target); + pvq_enc_search(pvq_target, y); + sns_quant_adj_gain_shape_search(pvq_target, y, &gain, &shape, stage2_en1_norm_pre_sub, &scfq_gain); + + /* Inverse transform */ + idct_II(stage2_en1_norm_pre_sub, stage2_en1_norm_sub, M); + + index[2] = shape; + index[3] = gain; + + if (shape < 2) { + MPVQ_enum(10, y[shape], &index[5], &index[4]); + } + else { + MPVQ_enum(M, y[shape], &index[5], &index[4]); + } + + if (shape == 0) { + LC3_INT ls_ind, ind; + MPVQ_enum(6, &y[shape][10], &ind, &ls_ind); + index[6] = ind * 2 + ls_ind; + } + else if (shape == 2) { + index[6] = -1; + } + else { + index[6] = -2; + } + + for (i = 0; i < M; i++) { + envq[i] = st1_vector[i] + (stage2_en1_norm_sub[i] * scfq_gain); + } +} + +LC3_INT find_last_indice_le(LC3_INT compare, const LC3_INT* array, LC3_INT len) +{ + LC3_INT idx = 0, i = 0; + + for (i = 0; i < len; i++) { + if (compare >= array[i]) { + idx++; + } + } + + if (idx > 0) { + idx--; + } + + return idx; +} + +void pvq_dec(LC3_INT k, LC3_INT m, LC3_INT LS_ind, LC3_INT MPVQ_ind, LC3_INT* pulses) +{ + LC3_INT leading_sign = 0, idx = 0, k_delta = 0, pos = 0; + + leading_sign = 1 - 2 * LS_ind; + + /* Decoding loop */ + + for (pos = 0; pos < m; pos++) { + if (MPVQ_ind != 0) { + /* Find last indice */ + idx = find_last_indice_le(MPVQ_ind, &pvq_enc_A[m - pos - 1][0], k + 1); + MPVQ_ind = MPVQ_ind - pvq_enc_A[m - pos - 1][idx]; + k_delta = k - idx; + } else { + pulses[pos] = leading_sign * k; + break; + } + + if (k_delta != 0) { + pulses[pos] = leading_sign * k_delta; + if ((MPVQ_ind % 2) != 0) { + leading_sign = -1; + } else { + leading_sign = 1; + } + + MPVQ_ind = floor(MPVQ_ind / 2); + k = k - k_delta; + } + } +} + +void process_snsQuantizesScf_Dec(LC3_INT* scf_idx, LC3_FLOAT* scf_q) +{ + LC3_INT i = 0, submode = 0; + LC3_INT pulses2[6] = {0}, pulses[M] = {0}; + LC3_FLOAT st2_vector[M] = {0}, st2_vector_idct[M] = {0}, sum = 0; + + /* Decode first stage */ + + for (i = 0; i < 8; i++) { + scf_q[i] = sns_LFCB[i][scf_idx[0]]; + scf_q[i + 8] = sns_HFCB[i][scf_idx[1]]; + } + + /* STAGE 2 */ + /* Decode submode */ + + submode = scf_idx[2]; + + /* Decode pulses */ + + if (submode < 2) { + pvq_dec(10, 10, scf_idx[4], scf_idx[5], pulses); + + if (submode == 0) { + pvq_dec(1, 6, (scf_idx[6] % 2), floor(scf_idx[6] / 2), pulses2); + + move_int(&pulses[10], pulses2, 6); + + } else { + pulses[15] = 0; + } + } else if (submode == 2) { + pvq_dec(8, 16, scf_idx[4], scf_idx[5], pulses); + } else { + pvq_dec(6, 16, scf_idx[4], scf_idx[5], pulses); + } + + /* Normalization */ + + for (i = 0; i < M; i++) { + sum += pulses[i] * pulses[i]; + } + + sum = 1.0 / LC3_SQRT(sum); + + for (i = 0; i < M; i++) { + st2_vector[i] = pulses[i] * sum; + } + + /* Inverse transform */ + idct_II(st2_vector, st2_vector_idct, M); + + /* Gain */ + for (i = 0; i < M; i++) { + st2_vector_idct[i] = st2_vector_idct[i] * sns_dec_gains[submode][scf_idx[3]]; + } + + /* Add stage 1 and stage 2 */ + + for (i = 0; i < M; i++) { + scf_q[i] = scf_q[i] + st2_vector_idct[i]; + } +} diff --git a/lc3plus/structs.h b/lc3plus/structs.h new file mode 100644 index 0000000000000000000000000000000000000000..fea377da412ed0c7c1df662d74537495d911353c --- /dev/null +++ b/lc3plus/structs.h @@ -0,0 +1,186 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef STRUCTS_H +#define STRUCTS_H + +#include "defines.h" +#include "fft/iisfft.h" + +typedef struct { + LC3_FLOAT r; /* real part */ + LC3_FLOAT i; /* imaginary part */ +} Complex; + +typedef struct { + LC3_INT length; + void *handle; +} Fft; + +typedef struct { + LC3_INT length; + Fft fft; +} Dct2; + +typedef struct { + LC3_INT length; + Fft fft; +} Dct3; + +typedef struct { + LC3_INT length; + Complex *twid1; + Complex *twid2; + Fft fft; +} Dct4; + +typedef struct { + LC3_INT length; + LC3_INT leading_zeros; + LC3_INT mem_length; + const LC3_FLOAT *window; + LC3_FLOAT *mem; + Dct4 dct; +} Mdct; + +typedef struct { + uint32_t ac_low_fl; + uint32_t ac_range_fl; + int BER_detect; + + LC3_INT32 pc_c_bp; + LC3_INT32 pc_c_bp_side; + LC3_INT32 pc_bytes; + LC3_INT32 pc_b_left; + LC3_INT32 pc_b_right; + LC3_INT32 pc_enc; + LC3_INT32 pc_bfi; + LC3_INT32 pc_bbi; + LC3_INT32 pc_be_bp_left; + LC3_INT32 pc_be_bp_right; + LC3_INT32 pc_return; +} Decoder_State_fl; + +typedef struct { + LC3_INT bp; + LC3_INT low; + LC3_INT range; + LC3_INT cache; + LC3_INT carry; + LC3_INT carry_count; + uint8_t *ptr; + LC3_INT *bp_side; + LC3_INT *mask_side; +} Encoder_State_fl; + +typedef struct { + LC3_INT nbLostCmpt; + LC3_INT prevBfi; + LC3_INT prevprevBfi; + LC3_FLOAT q_d[MAX_LEN]; + LC3_FLOAT q_d_prev[MAX_LEN]; +} PlcSetup; + + +typedef struct { + LC3_FLOAT cum_alpha; + LC3_INT seed; +} PlcNsSetup; + +typedef struct { + LC3_INT32 seed; + LC3_INT32 ns_nbLostCmpt_pc; + LC3_FLOAT *q_old_res; + LC3_FLOAT prev_gg; +} pcState; + +typedef struct { + LC3_INT len; + LC3_INT sign; + LC3_FLOAT* table; +} Cfft; + +typedef struct T_IIS_FFT { + IIS_FFT_DIR sign; + LC3_INT32 len; + LC3_FLOAT* buffer; + LC3_FLOAT* sine_table; + Iisfft iisfft; + Cfft cfft; +} IIS_FFT; + +typedef struct T_IIS_FFT* HANDLE_IIS_FFT; + +typedef struct { + Fft PhEcu_Fft; /*no counterpart in BASOP */ + Fft PhEcu_Ifft; /*no counterpart in BASOP */ + + + LC3_FLOAT PhECU_f0hzLtpBin; /* BASOP Word16 PhECU_f0hzLtpBinQ7 */ + LC3_FLOAT PhECU_norm_corr; /* BASOP Word16 norm_corrQ15 */ + + LC3_FLOAT *PhECU_oold_grp_shape; /* BASOP Word16 PhECU_oold_grp_shape_fx[MAX_LGW]; */ + LC3_FLOAT *PhECU_old_grp_shape; /* BASOP Word16 PhECU_old_grp_shape_fx[MAX_LGW] ; */ + + LC3_FLOAT PhECU_L_oold_xfp_w_E; /* BASOP Word32 PhECU_L_oold_xfp_w_E_fx;*/ + LC3_FLOAT PhECU_L_old_xfp_w_E; /* BASOP Word32 PhECU_L_old_xfp_w_E_fx; */ + + LC3_INT32 PhECU_Lprot ; /* BASOP Word16 PhECU_Lprot_fx;*/ + + LC3_FLOAT *PhECU_xfp; + Complex *PhECU_X_sav_m; + LC3_INT32 *PhECU_plocs; /* BASOP Word16 *PhECU_plocs; */ /* MAX_PLOCS */ + LC3_FLOAT *PhECU_f0est; /*BASOP Word32 *PhECU_f0est;*/ + + LC3_FLOAT *PhECU_mag_chg_1st; /* BASOP Word16 PhECU_mag_chg_1st[MAX_LGW];*/ + LC3_FLOAT *PhECU_Xavg; /* BASOP Word16 PhECU_Xavg[MAX_LGW] ; */ + + LC3_FLOAT PhECU_beta_mute; /* BASOP Word16 PhECU_beta_mute*/ + + LC3_INT16 PhECU_seed; /* BASOP Word16 PhECU_seed_fx;*/ + + LC3_INT32 PhECU_LDWIN_OLAP; /* BASOP Word16 PhECU_LDWIN_OLAP; */ + LC3_INT32 PhECU_t_adv; /* BASOP Word16 t_adv; */ + + LC3_INT32 PhECU_short_flag_prev; + LC3_INT32 PhECU_time_offs; + LC3_INT32 PhECU_num_plocs; + HANDLE_IIS_FFT handle_fft_phaseecu; + HANDLE_IIS_FFT handle_ifft_phaseecu; + +} PlcPhEcuSetup; + +typedef struct { + LC3_INT16 seed; + LC3_FLOAT gain_c; + LC3_INT32 lpcorder; + LC3_FLOAT A[M+1]; + LC3_INT32 fract; + LC3_INT32 lagw_bw; + LC3_FLOAT preemphFac; + LC3_FLOAT *harmonicBuf; + LC3_FLOAT synthHist[M]; +} PlcTdcSetup; + +typedef struct { + LC3_FLOAT *pcmbufHist; + LC3_INT32 max_len_pcm_plc; + PlcTdcSetup PlcTdcSetup; + LC3_FLOAT stabFac; + LC3_FLOAT cum_fading_slow; + LC3_FLOAT cum_fading_fast; + LC3_FLOAT cum_fflcAtten; + LC3_FLOAT scf_q_old[M]; + LC3_FLOAT scf_q_old_old[M]; + PlcPhEcuSetup PlcPhEcuSetup; +} PlcAdvSetup; + + +#endif diff --git a/lc3plus/tns_coder.c b/lc3plus/tns_coder.c new file mode 100644 index 0000000000000000000000000000000000000000..ff3883d2b5fa964a7a2c4a4523757432d080a5cb --- /dev/null +++ b/lc3plus/tns_coder.c @@ -0,0 +1,374 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +static void xcorr(LC3_FLOAT* in, LC3_FLOAT* out, LC3_INT lag, LC3_INT inLen); +static void levdown(LC3_FLOAT* anxt, LC3_FLOAT* out_a, LC3_INT* len); +static void poly2rc(LC3_FLOAT* a, LC3_FLOAT* out, LC3_INT len); +static LC3_INT findRC_idx(const LC3_FLOAT* in1, const LC3_FLOAT* in2, LC3_FLOAT checkValue); + +void xcorr(LC3_FLOAT* in, LC3_FLOAT* out, LC3_INT lag, LC3_INT inLen) +{ + LC3_INT i = 0, m = 0; + LC3_FLOAT sum = 0, tmp_buf[MAX_LEN] = {0}; + + for (m = -lag; m <= lag; m++) { + /* Append zeros and input vector */ + + zero_float(tmp_buf, abs(m)); + + move_float(&tmp_buf[abs(m)], in, inLen - abs(m)); + + /* Calculate sum */ + sum = 0; + + for (i = 0; i < inLen; i++) { + sum += in[i] * tmp_buf[i]; + } + + out[m + lag] = sum; + } +} + +void levinsonDurbin(LC3_FLOAT* r, LC3_FLOAT* out_lev, LC3_FLOAT* rc_unq, LC3_FLOAT* error, LC3_INT len) +{ + LC3_INT t = 0, i = 0, j = 0; + LC3_FLOAT g = 0, v = 0, sum = 0, buf_tmp[MAX_LEN] = {0}; + + g = r[1] / r[0]; + out_lev[0] = g; + + v = (1.0 - g * g) * r[0]; + rc_unq[0] = -g; + + for (t = 1; t < len; t++) { + zero_float(buf_tmp, len + 1); + + sum = 0; + for (i = 1; i <= t; i++) { + sum += out_lev[i - 1] * r[i]; + } + + g = (r[t + 1] - sum) / v; + + j = 1; + for (i = t - 1; i >= 0; i--) { + buf_tmp[j] = out_lev[j - 1] - g * out_lev[i]; + j++; + } + + move_float(&out_lev[1], &buf_tmp[1], len); + + out_lev[0] = g; + + v = v * (1 - g * g); + rc_unq[t] = -g; + } + + /* Reorder out_lev */ + out_lev[0] = 1; + j = 1; + for (i = len - 1; i >= 0; i--) { + buf_tmp[j] = -out_lev[i]; + j++; + } + + move_float(&out_lev[1], &buf_tmp[1], (len - 1)); + + out_lev[len] = rc_unq[len - 1]; + + *error = v; +} + +void levdown(LC3_FLOAT* anxt, LC3_FLOAT* out_a, LC3_INT* len) +{ + LC3_INT i = 0, j = 0; + LC3_FLOAT tmp_buf[8] = {0}, tmp_buf1[8] = {0}, tmp_buf2[8] = {0}, knxt = 0; + + /* Initial length = 9 */ + + /* Drop the leading 1 */ + + move_float(&tmp_buf[0], &anxt[1], (*len - 1)); + + *len = *len - 1; /* Lenght = 8 */ + + /* Last coefficient */ + knxt = tmp_buf[*len - 1]; /* At [7] */ + + *len = *len - 1; /* Lenght = 7 */ + + move_float(tmp_buf1, tmp_buf, *len); + + j = 0; + for (i = *len - 1; i >= 0; i--) { + tmp_buf2[j] = knxt * tmp_buf[i]; + j++; + } + + out_a[0] = 1; + for (i = 0; i < *len; i++) { + out_a[i + 1] = (tmp_buf1[i] - tmp_buf2[i]) / (1.0 - (LC3_FABS(knxt)) * (LC3_FABS(knxt))); + } + + *len = *len + 1; /* Length = 8 */ +} + +void poly2rc(LC3_FLOAT* a, LC3_FLOAT* out, LC3_INT len) +{ + LC3_INT k = 0, i = 0, len_old = 0; + LC3_FLOAT buf[9] = {0}; + + len_old = len; + + zero_float(out, len - 1); + + /* Length = 9 */ + + /* Normalize */ + for (i = 0; i < len; i++) { + a[i] = a[i] / a[0]; + } + + out[len - 1] = a[len - 1]; + + /* Process */ + for (k = len - 2; k >= 0; k--) { + levdown(a, buf, &len); + out[k] = buf[len - 1]; /* Store last value */ + + move_float(a, buf, len); + } + + /* Shift output array by one to the left to lose leading 1 */ + for (i = 0; i < len_old - 1; i++) { + out[i] = out[i + 1]; + } +} + +LC3_INT findRC_idx(const LC3_FLOAT* in1, const LC3_FLOAT* in2, LC3_FLOAT checkValue) +{ + LC3_INT i = 0, ret = 0; + + for (i = 0; i < 17; i++) { + if (checkValue <= in1[i] && checkValue > in2[i]) { + ret = i; + } + } + + return ret; +} + +void processTnsCoder_fl(LC3_FLOAT* x, LC3_INT bw_cutoff_idx, LC3_INT bw_fcbin, LC3_INT fs, LC3_INT N, LC3_INT frame_dms, LC3_INT nBits, + LC3_INT* order_out, LC3_INT* rc_idx, LC3_INT* tns_numfilters, LC3_INT* bits_out + , LC3_INT16 near_nyquist_flag +) +{ + LC3_INT i = 0, stopfreq[2] = {0}, startfreq[2] = {0}, f = 0, numfilters = 0, maxOrder = 0, bits = 0, sub = 0, + subdiv_startfreq = 0, subdiv_stopfreq = 0, j = 0, rc_idx_tmp[8] = {0}, order_tmp[8] = {0}, tmp = 0, tns = 0; + LC3_FLOAT minPGfac = 0, minPredictionGain = 0, maxPG = 0, xcorr_out[MAX_LEN] = {0}, buf_tmp[MAX_LEN] = {0}, sum = 0, + subdiv_len = 0, nSubdivisions = 0, r[9] = {0}, out_lev[9] = {0}, rc_unq[9] = {0}, error_lev = 0, predGain = 0, + alpha = 0, rc[8] = {0}, st[9] = {0}, s = 0, tmpSave = 0, tmp_fl = 0; + const LC3_INT* order; + + /* Init */ + + if (fs >= 32000 && frame_dms >= 50) { + numfilters = 2; + } else { + numfilters = 1; + } + + if (N > 40 * ((LC3_FLOAT) (frame_dms) / 10.0)) { + N = 40 * ((LC3_FLOAT) (frame_dms) / 10.0); + fs = 40000; + } + + if (numfilters == 1) { + startfreq[0] = floor(600 * N * 2 / fs) + 1; + stopfreq[0] = N; + } else { + startfreq[0] = floor(600 * N * 2 / fs) + 1; + startfreq[1] = N / 2 + 1; + stopfreq[0] = N / 2; + stopfreq[1] = N; + } + + switch (frame_dms) + { + case 25: + maxOrder = 4; + nSubdivisions = 2.0; + break; + case 50: + maxOrder = 4; + nSubdivisions = 2.0; + break; + case 100: + maxOrder = 8; + nSubdivisions = 3.0; + break; + } + + minPGfac = 0.85; + maxPG = 2; + minPredictionGain = 1.5; + + if ((frame_dms >= 50 && nBits >= 48 * ((LC3_FLOAT) frame_dms / 10.0)) || frame_dms == 25) { + maxPG = minPredictionGain; + } + + if ((frame_dms >= 50 && nBits >= 48 * ((LC3_FLOAT) frame_dms / 10.0)) || frame_dms == 25) { + order = order1_tns; + } else { + order = order2_tns; + } + + /* Processing */ + if (bw_cutoff_idx >= 3 && numfilters == 2) { + numfilters = 2; + startfreq[1] = bw_fcbin / 2 + 1; + stopfreq[0] = bw_fcbin / 2; + stopfreq[1] = bw_fcbin; + } else { + numfilters = 1; + stopfreq[0] = bw_fcbin; + } + + bits = 0; + + for (f = 0; f < numfilters; f++) { + subdiv_len = ((LC3_FLOAT)stopfreq[f] + 1.0 - (LC3_FLOAT)startfreq[f]) / nSubdivisions; + + zero_float(r, 9); + + for (sub = 1; sub <= nSubdivisions; sub++) { + subdiv_startfreq = floor(subdiv_len * (sub - 1)) + startfreq[f] - 1; + subdiv_stopfreq = floor(subdiv_len * sub) + startfreq[f] - 1; + + sum = 0; + for (i = subdiv_startfreq; i < subdiv_stopfreq; i++) { + sum += x[i] * x[i]; + } + + if (sum < LC3_EPS) + { + zero_float(r, 9); + r[0] = 1; + break; + } + + move_float(buf_tmp, &x[subdiv_startfreq], subdiv_stopfreq - subdiv_startfreq); + + xcorr(buf_tmp, xcorr_out, maxOrder, subdiv_stopfreq - subdiv_startfreq); + + j = 0; + for (i = maxOrder; i >= 0; i--) { + r[j] = r[j] + xcorr_out[i] / sum; + j++; + } + } + + for (i = 0; i <= maxOrder; i++) { + r[i] = r[i] * lagw_tns[i]; + } + + levinsonDurbin(r, out_lev, rc_unq, &error_lev, maxOrder); + + predGain = r[0] / error_lev; + + if (predGain > minPredictionGain && near_nyquist_flag == 0) { + tns = 1; + } else { + tns = 0; + } + + bits++; + + if (tns == 1) { + /* LPC weighting */ + if (predGain < maxPG) { + alpha = (maxPG - predGain) * (minPGfac - 1.0) / (maxPG - minPredictionGain) + 1.0; + + for (i = 0; i <= maxOrder; i++) { + out_lev[i] = out_lev[i] * LC3_POW(alpha, i); + } + + poly2rc(out_lev, rc_unq, maxOrder + 1); + } + + /* PARCOR Quantization */ + for (i = 0; i < maxOrder; i++) { + rc_idx_tmp[i] = findRC_idx(&quants_thr_tns[1], &quants_thr_tns[0], rc_unq[i]); + } + + /* Filter Order */ + j = 0; + for (i = 0; i < maxOrder; i++) { + rc[i] = quants_pts_tns[rc_idx_tmp[i]]; + + if (rc[i] != 0) { + order_tmp[j] = i + 1; + j++; + } + } + + order_out[f] = order_tmp[j - 1]; + // Disable TNS if order is 0: + if (order_out[f] == 0) { + tns = 0; + + // Jump to else statement + goto tns_disabled; + } + tmp = order[order_out[f] - 1]; + + /* Huffman Coding of PARCOR coefficients */ + for (i = 0; i <= order_out[f] - 1; i++) { + tmp += huff_bits_tns[i][rc_idx_tmp[i]]; + } + + bits = bits + ceil((LC3_FLOAT)tmp / 2048.0); + + j = 0; + for (i = f * 8; i <= f * 8 + order_out[f] - 1; i++) { + rc_idx[i] = rc_idx_tmp[j]; + j++; + } + } + + /* Filtering */ + if (tns == 1) { + for (i = startfreq[f]; i <= stopfreq[f]; i++) { + s = x[i - 1]; + tmpSave = s; + + for (j = 0; j < order_out[f] - 1; j++) { + tmp_fl = rc[j] * s + st[j]; + s += rc[j] * st[j]; + + st[j] = tmpSave; + tmpSave = tmp_fl; + } + + s += rc[order_out[f] - 1] * st[order_out[f] - 1]; + + st[order_out[f] - 1] = tmpSave; + x[i - 1] = s; + } + } + } +tns_disabled: + + *tns_numfilters = numfilters; + *bits_out = bits; +} diff --git a/lc3plus/tns_decoder.c b/lc3plus/tns_decoder.c new file mode 100644 index 0000000000000000000000000000000000000000..d3aeefc3a379a224273e7cc7b7be1eee545af774 --- /dev/null +++ b/lc3plus/tns_decoder.c @@ -0,0 +1,52 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#include "options.h" +#include "functions.h" + +void processTnsDecoder_fl(LC3_FLOAT* x, LC3_INT* rc_idx, LC3_INT* order, LC3_INT numfilters, LC3_INT bw_fcbin, LC3_INT N, LC3_INT fs) +{ + LC3_INT startfreq[2] = {0}, stopfreq[2] = {0}, f = 0, i = 0, j = 0, m = 0, l = 0, rc_idx_f[9] = {0}; + LC3_FLOAT rc[9] = {0}, s = 0, st[9] = {0}; + + if (numfilters == 2) { + startfreq[0] = floor(600 * N * 2 / fs) + 1; + stopfreq[0] = bw_fcbin / 2; + startfreq[1] = bw_fcbin / 2 + 1; + stopfreq[1] = bw_fcbin; + } else { + startfreq[0] = floor(600 * N * 2 / fs) + 1; + stopfreq[0] = bw_fcbin; + } + + for (f = 0; f < numfilters; f++) { + if (order[f] > 0) { + j = 0; + + for (i = f * 8; i < f * 8 + 8; i++) { + rc_idx_f[j] = rc_idx[i]; + rc[j] = quants_pts_tns[rc_idx_f[j]]; + j++; + } + + for (m = startfreq[f]; m <= stopfreq[f]; m++) { + s = x[m - 1] - rc[order[f] - 1] * st[order[f] - 1]; + + for (l = order[f] - 2; l >= 0; l--) { + s = s - rc[l] * st[l]; + st[l + 1] = rc[l] * s + st[l]; + } + + st[0] = s; + x[m - 1] = s; + } + } + } +} diff --git a/lc3plus/util.h b/lc3plus/util.h new file mode 100644 index 0000000000000000000000000000000000000000..7ef6dedef7600c79a45549dabb1c4cf4d2d37f7f --- /dev/null +++ b/lc3plus/util.h @@ -0,0 +1,222 @@ +/****************************************************************************** +* ETSI TS 103 634 V1.4.1 * +* Low Complexity Communication Codec Plus (LC3plus) * +* * +* Copyright licence is solely granted through ETSI Intellectual Property * +* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * +* estoppel or otherwise. * +******************************************************************************/ + + +#ifndef UTIL_H +#define UTIL_H + +#include "clib.h" +#include "math.h" + +#ifdef _MSC_VER +/* strcasecmp is not available on visual studio */ +static LC3_INT strcasecmp(const char* a, const char* b) { + return _stricmp(a,b); +} +#endif + +/* restrict is not available on visual studio */ +#ifdef _MSC_VER +#define restrict __restrict +/* inline is not recognized in visual studio 13 required by matlab r2015a in win10 */ +#define inline __inline +#endif + +/* number of elements in array */ +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + +/* min max with no side effects */ +static inline LC3_INT imin(LC3_INT a, LC3_INT b) { return a < b ? a : b; } +static inline LC3_INT imax(LC3_INT a, LC3_INT b) { return a > b ? a : b; } + +/* restrict x to range [min, max] */ +static inline LC3_INT iclamp(LC3_INT min, LC3_INT x, LC3_INT max) { + return x < min ? min : x > max ? max : x; +} +static inline double fcmamp(double min, double x, double max) { + return x < min ? min : x > max ? max : x; +} +static inline LC3_FLOAT fclampf(LC3_FLOAT min, LC3_FLOAT x, LC3_FLOAT max) { + return x < min ? min : x > max ? max : x; +} + +/* x² */ +static inline LC3_FLOAT sqrf(LC3_FLOAT x) { return x * x; } + +/* convenience wrappers around memmove */ +static inline void move_float(LC3_FLOAT *dst, const LC3_FLOAT *src, LC3_INT len) { + memmove(dst, src, len * sizeof(LC3_FLOAT)); +} +static inline void move_int(LC3_INT *dst, const LC3_INT *src, LC3_INT len) { + memmove(dst, src, len * sizeof(LC3_INT)); +} + +/* convenience wrappers around memset */ +static inline void zero_float(LC3_FLOAT *x, LC3_INT len) { + memset(x, 0, len * sizeof(LC3_FLOAT)); +} +static inline void zero_int(LC3_INT *x, LC3_INT len) { + memset(x, 0, len * sizeof(LC3_INT)); +} + +/* multiply float vectors element by element, in-place */ +static inline void mult_vec(LC3_FLOAT *a, const LC3_FLOAT *b, + LC3_INT len) { + LC3_INT i = 0; + for (i = 0; i < len; i++) { + a[i] *= b[i]; + } +} + +/* multiply float vector with constant, in-place */ +static inline void mult_const(LC3_FLOAT *a, LC3_FLOAT b, LC3_INT len) { + LC3_INT i = 0; + for (i = 0; i < len; i++) { + a[i] *= b; + } +} + +/* sum of vector */ +static inline LC3_FLOAT sum_vec(const LC3_FLOAT *x, LC3_INT len) { + LC3_FLOAT sum = 0; + LC3_INT i = 0; + for (i = 0; i < len; i++) { + sum += x[i]; + } + return sum; +} + +/* complex constructor */ +static inline Complex cmplx(LC3_FLOAT r, LC3_FLOAT i) { return (Complex){r, i}; } + +/* complex a + b */ +static inline Complex cadd(Complex a, Complex b) { + return cmplx(a.r + b.r, a.i + b.i); +} + +/* complex a * b */ +static inline Complex cmul(Complex a, Complex b) { + return cmplx(a.r * b.r - a.i * b.i, a.i * b.r + a.r * b.i); +} + +/* mac operator */ +static inline LC3_FLOAT mac_loop(const LC3_FLOAT *array1, const LC3_FLOAT *array2, LC3_INT len) +{ + LC3_INT i; + LC3_FLOAT sum = 0.0; + + for (i = 0; i < len; i++) + { + sum += (*array1++) * (*array2++); + } + + return sum; +} + +/* complex eᶦˣ */ +static inline Complex cexpi(LC3_FLOAT x) { return cmplx(LC3_COS(x), LC3_SIN(x)); } + +/* complex -x */ +static inline Complex cneg(Complex x) { return cmplx(-x.r, -x.i); } + +/* convert string to number. return true on success */ +static inline bool str_to_int(const char *str, LC3_INT *value) { + char *end = NULL; + long v = str ? strtol(str, &end, 0) : 0; + *value = (LC3_INT)v; + return str && *end == 0 && v >= INT_MIN && v <= INT_MAX; +} + +/* returns true if str ends with str ends with suffix. ignoring case. str may be + * NULL */ +static inline bool str_ends_with(const char *str, const char *suffix) { + char *tmp = str ? strrchr(str, suffix[0]) : NULL; + return tmp && !strcasecmp(tmp, suffix); +} + +/* complex a - b */ +static inline Complex csub(Complex a, Complex b) { + return cmplx(a.r - b.r, a.i - b.i); +} + +static inline void move_cmplx(Complex *dst, const Complex *src, LC3_INT32 len) { + if (len > 0) { + memmove(dst, src, len * sizeof(Complex)); + assert(src[len - 1].r == dst[len - 1].r && src[len - 1].i == dst[len - 1].i); /*check that Cmplx is stored contiguously*/ + assert(src[0].r == dst[0].r && src[0].i == dst[0].i); /*check that Cmplx is stored contiguously*/ + } +} + +static inline void zero_cmplx(Complex *x, LC3_INT32 len) { + if(len > 0) { + memset(x, 0, len * sizeof(Complex)); + assert(x[0].r == 0 && x[0].i == 0 && x[len-1].r == 0 && x[len-1].i == 0); + } +} + +static inline Complex realtoc(LC3_FLOAT r) { return cmplx(r, 0); } + +/* set float vector to constant */ +static inline void set_vec(const LC3_FLOAT c, LC3_FLOAT *x, LC3_INT32 len) { + LC3_INT32 i = 0; + for (i = 0; i < len; i++) { + x[i] = c; + } +} + +/* set float vector to constant */ +static inline void set_vec_int(const LC3_INT32 c, LC3_INT32 *x, LC3_INT32 len) { + LC3_INT32 i = 0; + for (i = 0; i < len; i++) { + x[i] = c; + } +} + +static inline LC3_INT32 clz_func(LC3_INT32 inp) +{ +#if defined(__clang__) || defined(__GNUC__) + if (inp == 0) + { + return 0; + } + return __builtin_clz(inp); + +#elif defined(_WIN32) || defined(_WIN64) + LC3_INT32 leading_zero = 0; + + if (_BitScanReverse(&leading_zero, inp)) + { + return 31 - leading_zero; + } + else + return 0; + +#else + LC3_INT32 i = 0; + int64_t x = inp; + + if (inp == 0) + { + return 0; + } + + inp = (inp < 0) ? ~inp : inp; + + while (x < (int64_t)0x80000000L) + { + inp <<= 1; + i += 1; + } + + return i; +#endif +} + + +#endif diff --git a/lib_com/ari_hm.c b/lib_com/ari_hm.c index f1f9d5a42b213ddeb1a4050607d530af740a1236..3995913c43f7bfefb31276a0787aa0200b20ff6b 100644 --- a/lib_com/ari_hm.c +++ b/lib_com/ari_hm.c @@ -236,7 +236,7 @@ int16_t tcx_hm_render( } ELSE { - div_s( &tmp, 13915, PeakDeviation ); + tmp = div_s( 13915, PeakDeviation ); tmp = mult_r( tmp, tmp ); /* Q15 */ } @@ -282,7 +282,7 @@ void tcx_hm_modify_envelope( for ( k = 0; k < 2 * kTcxHmParabolaHalfWidth + 1; ++k ) { - div_s( &inv_shape[k], 512, add( 512, round_fx( L_mult( gain, p[k] ) ) ) ); + inv_shape[k] = div_s( 512, add( 512, round_fx( L_mult( gain, p[k] ) ) ) ); } h = 1; diff --git a/lib_com/arith_coder.c b/lib_com/arith_coder.c index 1912b4cbf279d6130a558a8486542b2702272ace..cc29c97477c0092860be5ea30582d716097fe805 100644 --- a/lib_com/arith_coder.c +++ b/lib_com/arith_coder.c @@ -281,7 +281,7 @@ void tcx_arith_scale_envelope( mean = L_add( mean, ienv[k] ); } tmp = norm_s( L_frame ); - div_s( &tmp2, 8192, shl( L_frame, tmp ) ); + tmp2 = div_s( 8192, shl( L_frame, tmp ) ); tmp = shl( tmp2, sub( tmp, 7 ) ); mean = L_shr( Mpy_32_16( mean, tmp ), 6 ); /* Q16 */ @@ -416,7 +416,7 @@ void tcx_arith_scale_envelope( IF( hib > 0 ) /* Bisection search */ { - div_s( &adjust, sub( hib_bits, target_bits ), sub( hib_bits, lob_bits ) ); + adjust = div_s( sub( hib_bits, target_bits ), sub( hib_bits, lob_bits ) ); scale = add( mult_r( sub( lob, hib ), adjust ), hib ); } ELSE @@ -439,7 +439,7 @@ void tcx_arith_scale_envelope( IF( lob > 0 ) /* Bisection search */ { - div_s( &adjust, sub( hib_bits, target_bits ), sub( hib_bits, lob_bits ) ); + adjust = div_s( sub( hib_bits, target_bits ), sub( hib_bits, lob_bits ) ); scale = add( mult_r( sub( lob, hib ), adjust ), hib ); } ELSE @@ -458,7 +458,7 @@ void tcx_arith_scale_envelope( } ELSE { - div_s( &adjust, mult_r( 31130 /*0.95f Q15*/, target_bits ), bits ); + adjust = div_s( mult_r( 31130 /*0.95f Q15*/, target_bits ), bits ); } scale = mult_r( scale, adjust ); } diff --git a/lib_com/basop32.c b/lib_com/basop32.c index 1f28351c7922a05a9c5c2ef2d48db2d2ec969161..3e608e4a6506c626dca99b99daf1d223d7d057c7 100644 --- a/lib_com/basop32.c +++ b/lib_com/basop32.c @@ -163,8 +163,6 @@ HISTORY: #ifdef BASOP_NOGLOB #include #endif /* BASOP_NOGLOB */ -#include "ivas_error.h" -#include "ivas_error_utils.h" #define WMC_TOOL_SKIP @@ -410,9 +408,6 @@ Word16 sub( Word16 var1, Word16 var2 ) L_diff = (Word32) var1 - var2; var_out = saturate( L_diff ); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( var_out ); } @@ -727,9 +722,7 @@ Word16 mult( Word16 var1, Word16 var2 ) return ( var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : L_mult | @@ -790,9 +783,6 @@ Word32 L_mult_o( Word16 var1, Word16 var2, Flag *Overflow ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( L_var_out ); } @@ -1000,15 +990,10 @@ Word16 round_fx( Word32 L_var1 ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : L_mac | @@ -1070,15 +1055,10 @@ Word32 L_mac( Word32 L_var3, Word16 var1, Word16 var2 ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( L_var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : L_msu | @@ -1140,15 +1120,10 @@ Word32 L_msu( Word32 L_var3, Word16 var1, Word16 var2 ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( L_var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : L_macNs | @@ -1421,9 +1396,6 @@ Word32 L_sub_o( Word32 L_var1, Word32 L_var2, Flag *Overflow ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( L_var_out ); } @@ -1781,14 +1753,8 @@ Word32 L_negate( Word32 L_var1 ) L_var_out = ( L_var1 == MIN_32 ) ? MAX_32 : -L_var1; -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( L_var_out ); } @@ -1868,9 +1834,7 @@ Word16 mult_r( Word16 var1, Word16 var2 ) return ( var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : L_shl | @@ -2109,9 +2073,7 @@ Word32 L_shr( Word32 L_var1, Word16 var2 ) return ( L_var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : shr_r | @@ -2176,9 +2138,6 @@ Word16 shr_r( Word16 var1, Word16 var2 ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( var_out ); } @@ -2315,15 +2274,10 @@ Word16 msu_r( Word32 L_var3, Word16 var1, Word16 var2 ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return ( var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | | Function Name : L_deposit_h | @@ -2697,7 +2651,7 @@ Word16 norm_s( Word16 var1 ) | It's a Q15 value (point between b15 and b14). | |___________________________________________________________________________| */ -ivas_error div_s( Word16 *result, Word16 var1, Word16 var2 ) +Word16 div_s( Word16 var1, Word16 var2 ) { Word16 var_out = 0; Word16 iteration; @@ -2706,11 +2660,15 @@ ivas_error div_s( Word16 *result, Word16 var1, Word16 var2 ) if ( ( var1 > var2 ) || ( var1 < 0 ) || ( var2 < 0 ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Division Error var1=%d var2=%d in div_s", var1, var2 ); + /* printf ("Division Error var1=%d var2=%d in ", var1, var2); printStack(); */ + char text[60]; + sprintf( text, "Division Error var1=%d var2=%d in ", var1, var2 ); + abort(); /* exit (0); */ } if ( var2 == 0 ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Division by 0 in div_s" ); + /* printf ("Division by 0, Fatal error in "); printStack(); */ + abort(); /* exit (0); */ } if ( var1 == 0 ) { @@ -2743,8 +2701,8 @@ ivas_error div_s( Word16 *result, Word16 var1, Word16 var2 ) BASOP_CHECK(); - *result = var_out; - return IVAS_ERR_OK; + + return ( var_out ); } @@ -2886,15 +2844,10 @@ Word32 L_mls( Word32 Lv, Word16 v ) BASOP_CHECK(); -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ return Temp; } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*__________________________________________________________________________ | | | Function Name : div_l | @@ -2933,32 +2886,33 @@ Word32 L_mls( Word32 Lv, Word16 v ) | It's a Q15 value (point between b15 and b14). | |___________________________________________________________________________| */ -ivas_error div_l( Word16 *result, Word32 L_num, Word16 den ) +Word16 div_l( Word32 L_num, Word16 den ) { Word16 var_out = (Word16) 0; Word32 L_den; Word16 iteration; - ivas_error error; - error = IVAS_ERR_OK; if ( den == (Word16) 0 ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Division by 0 in div_l, Fatal error in div_l" ); + /* printf("Division by 0 in div_l, Fatal error in "); printStack(); */ + exit( -1 ); } if ( ( L_num < (Word32) 0 ) || ( den < (Word16) 0 ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Division Error in div_l, Fatal error in div_l" ); + /* printf("Division Error in div_l, Fatal error in "); printStack(); */ + exit( -1 ); } L_den = L_deposit_h( den ); if ( L_num >= L_den ) { + + BASOP_CHECK(); - *result = MAX_16; - return error; + return MAX_16; } else { @@ -2975,13 +2929,10 @@ ivas_error div_l( Word16 *result, Word32 L_num, Word16 den ) } } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ BASOP_CHECK(); - *result = var_out; - return error; + return var_out; } } @@ -3138,9 +3089,7 @@ Word32 L_mac0( Word32 L_var3, Word16 var1, Word16 var2 ) return ( L_var_out ); } -#ifndef BASOP_NOGLOB -#endif /* ! BASOP_NOGLOB */ /*___________________________________________________________________________ | | Function Name : L_msu0 @@ -3200,8 +3149,5 @@ Word32 L_msu0( Word32 L_var3, Word16 var1, Word16 var2 ) return ( L_var_out ); } -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ #undef WMC_TOOL_SKIP diff --git a/lib_com/basop32.h b/lib_com/basop32.h index ff41a1d81da38fc2da042eb48464986c3ae76ae8..f1a7e1b8646ffb8d13fa33090acc23f218575732 100644 --- a/lib_com/basop32.h +++ b/lib_com/basop32.h @@ -79,10 +79,6 @@ #define _BASIC_OP_H #include "typedef.h" -#include "ivas_error.h" -#ifndef BASOP_NOGLOB - -#endif /* ! BASOP_NOGLOB */ #define BASOP_OVERFLOW2 /*___________________________________________________________________________ @@ -215,32 +211,32 @@ Word32 L_shr_r( Word32 L_var1, Word16 var2 ); /* round, 3 */ #endif /* BASOP_NOGLOB */ #ifndef BASOP_NOGLOB -Word32 L_abs( Word32 L_var1 ); /* Long abs, 1 */ -Word32 L_sat( Word32 L_var1 ); /* Long saturation, 4 */ -Word16 norm_s( Word16 var1 ); /* Short norm, 1 */ -ivas_error div_s( Word16 *result, Word16 var1, Word16 var2 ); /* Short division, 18 */ -Word16 norm_l( Word32 L_var1 ); /* Long norm, 1 */ -#else /* BASOP_NOGLOB */ +Word32 L_abs( Word32 L_var1 ); /* Long abs, 1 */ +Word32 L_sat( Word32 L_var1 ); /* Long saturation, 4 */ +Word16 norm_s( Word16 var1 ); /* Short norm, 1 */ +Word16 div_s( Word16 var1, Word16 var2 ); /* Short division, 18 */ +Word16 norm_l( Word32 L_var1 ); /* Long norm, 1 */ +#else /* BASOP_NOGLOB */ Word32 L_abs( Word32 L_var1 ); /* Long abs, 1 */ Word32 DEPR_L_sat_co( Word32 L_var1, Flag Overflow, Flag Carry ); /* Long saturation, 4 */ Word16 norm_s( Word16 var1 ); /* Short norm, 1 */ -ivas_error div_s( Word16 *result, Word16 var1, Word16 var2 ); /* Short division, 18 */ +Word16 div_s( Word16 var1, Word16 var2 ); /* Short division, 18 */ Word16 norm_l( Word32 L_var1 ); /* Long norm, 1 */ -#endif /* BASOP_NOGLOB */ +#endif /* BASOP_NOGLOB */ /* * Additional G.723.1 operators */ #ifndef BASOP_NOGLOB -Word32 L_mls( Word32, Word16 ); /* Weight FFS; currently assigned 5 */ -ivas_error div_l( Word16 *result, Word32, Word16 ); /* Weight FFS; currently assigned 32 */ -Word16 i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */ -#else /* BASOP_NOGLOB */ +Word32 L_mls( Word32, Word16 ); /* Weight FFS; currently assigned 5 */ +Word16 div_l( Word32, Word16 ); /* Weight FFS; currently assigned 32 */ +Word16 i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */ +#else /* BASOP_NOGLOB */ Word32 L_mls( Word32, Word16 ); /* Weight FFS; currently assigned 5 */ -ivas_error div_l( Word16 *result, Word32, Word16 ); /* Weight FFS; currently assigned 32 */ +Word16 div_l( Word32, Word16 ); /* Weight FFS; currently assigned 32 */ Word16 DEPR_i_mult( Word16 a, Word16 b ); /* Weight FFS; currently assigned 3 */ -#endif /* BASOP_NOGLOB */ +#endif /* BASOP_NOGLOB */ /* * New shiftless operators, not used in G.729/G.723.1 diff --git a/lib_com/basop_util.c b/lib_com/basop_util.c index bfd05e09e2b7c2d942d3dee75965eabcfb071a89..09ccc44ae6b3866ce969499625683790b2046d07 100644 --- a/lib_com/basop_util.c +++ b/lib_com/basop_util.c @@ -490,7 +490,7 @@ Word16 BASOP_Util_Divide1616_Scale( move16(); *s = add( *s, sy ); - div_s( &z, x, y ); + z = div_s( x, y ); if ( sign != 0 ) { @@ -670,7 +670,7 @@ Word16 idiv1616U( BASOP_SATURATE_WARNING_ON /* divide and shift */ - div_s( &tmp, x, y ); + tmp = div_s( x, y ); y = shr( tmp, sub( 15, s ) ); return y; @@ -781,7 +781,7 @@ Word16 BASOP_Util_Divide3216_Scale( *s = sub( sy, sx ); move16(); - div_s( &z, round_fx( x ), y ); + z = div_s( round_fx( x ), y ); if ( sign < 0 ) /* if sign bits differ, negate the result */ { diff --git a/lib_com/bitalloc.c b/lib_com/bitalloc.c index e8db20d13373e10b69cec977df5eeb4f2708cb71..e560e300a1c7e9a94dd990010905be6f2f500a45 100644 --- a/lib_com/bitalloc.c +++ b/lib_com/bitalloc.c @@ -289,7 +289,7 @@ int16_t BitAllocF( n = 0; tmp = add( band_end_HQ[num_env_bands - 1], shl( band_end_HQ[num_env_bands - 1], 1 ) ); exp1 = norm_s( tmp ); - div_s( &tmp, 16384, shl( tmp, exp1 ) ); /*15 + 14 - exp1*/ + tmp = div_s( 16384, shl( tmp, exp1 ) ); /*15 + 14 - exp1*/ exp2 = norm_s( tmp ); tmp = shl( tmp, exp2 ); exp1 = add( 29, sub( exp2, exp1 ) ); @@ -331,7 +331,7 @@ int16_t BitAllocF( n = 0; tmp = add( band_end_HQ[N - 1], shl( band_end_HQ[N - 1], 1 ) ); exp1 = norm_s( tmp ); - div_s( &tmp, 16384, shl( tmp, exp1 ) ); /*15 + 14 - exp1*/ + tmp = div_s( 16384, shl( tmp, exp1 ) ); /*15 + 14 - exp1*/ exp2 = norm_s( tmp ); tmp = shl( tmp, exp2 ); exp1 = add( 29, sub( exp2, exp1 ) ); @@ -364,7 +364,7 @@ int16_t BitAllocF( L_tmp1 = L_sub( t_fx, B_fx ); exp1 = sub( norm_l( L_tmp1 ), 1 ); exp2 = norm_s( n ); - div_s( &tmp, extract_h( L_shl( L_tmp1, exp1 ) ), shl( n, exp2 ) ); /*15 + 15 + exp1 - 16 - exp2*/ + tmp = div_s( extract_h( L_shl( L_tmp1, exp1 ) ), shl( n, exp2 ) ); /*15 + 15 + exp1 - 16 - exp2*/ #ifndef BASOP_NOGLOB m_fx = shl( tmp, sub( exp2, exp1 ) ); /*Q14*/ #else @@ -434,7 +434,7 @@ int16_t BitAllocF( { exp1 = sub( norm_l( L_tmp2 ), 1 ); exp2 = norm_s( n ); - div_s( &tmp, extract_h( L_shl( L_tmp2, exp1 ) ), shl( n, exp2 ) ); /*15 + 15 + exp1 - 16 - exp2*/ + tmp = div_s( extract_h( L_shl( L_tmp2, exp1 ) ), shl( n, exp2 ) ); /*15 + 15 + exp1 - 16 - exp2*/ #ifndef BASOP_NOGLOB m_fx = shl( tmp, sub( exp2, exp1 ) ); /*Q14*/ #else /* BASOP_NOGLOB */ @@ -589,7 +589,7 @@ static void Bit_group_fx( reordvct( y_index, band_num, index ); /* norm vector modification */ - div_s( &factor_fx, 1, band_num ); /*Q15 */ + factor_fx = div_s( 1, band_num ); /*Q15 */ IF( sub( thr, 5 ) > 0 ) { FOR( i = 0; i < band_num; i++ ) @@ -650,7 +650,7 @@ static void Bit_group_fx( { exp = norm_s( norm_sum ); tmp = shl( norm_sum, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp) */ Bits_avg_fx = L_mult( tmp, Bits ); /*Q(30-exp) */ FOR( k = 0; k <= i; k++ ) @@ -717,7 +717,7 @@ static void Bit_group_fx( { exp = norm_s( norm_sum ); tmp = shl( norm_sum, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp) */ Bits_avg_fx = L_mult( tmp, Bits ); /*Q(30-exp) */ FOR( k = 0; k < i; k++ ) { @@ -842,7 +842,7 @@ int16_t BitAllocWB( move16(); /*Q0 */ } } - div_s( &tmp, 1, BANDS - SFM_G1G2 ); /*Q15 */ + tmp = div_s( 1, BANDS - SFM_G1G2 ); /*Q15 */ Ravg_sub_32_fx[2] = L_mult( Rsum_sub_fx[2], tmp ); move32(); /*Q16 */ @@ -873,7 +873,7 @@ int16_t BitAllocWB( { exp = norm_s( Rsum_fx ); tmp = shl( Rsum_fx, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp) */ L_tmp1 = L_mult( B, Rsum_sub_fx[0] ); /*Q1 */ Mpy_32_16_ss( L_tmp1, tmp, &L_tmp, &lo ); B1 = extract_h( L_shl( L_tmp, add( exp, 1 ) ) ); /*Q0 */ @@ -970,7 +970,7 @@ int16_t BitAllocWB( { exp = norm_s( Rsum_fx ); tmp = shl( Rsum_fx, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp) */ L_tmp1 = L_mult( B, Rsum_sub_fx[0] ); /*Q1 */ Mpy_32_16_ss( L_tmp1, tmp, &L_tmp, &lo ); B1 = extract_h( L_shl( L_tmp, add( exp, 1 ) ) ); /*Q0 */ diff --git a/lib_com/bits_alloc.c b/lib_com/bits_alloc.c index 56e523b39225dcfd923c9ef48b9fad9514ee7b8e..ff840a9a631cdbfd0c772a76b323b08be11087ef 100644 --- a/lib_com/bits_alloc.c +++ b/lib_com/bits_alloc.c @@ -394,6 +394,7 @@ static ivas_error acelp_FCB_allocator( int16_t nBits_tmp; int16_t *p_fixed_cdk_index; ivas_error error; + int16_t max_n; error = IVAS_ERR_OK; @@ -424,13 +425,22 @@ static ivas_error acelp_FCB_allocator( } /* distribute the bit-budget equally between subframes */ - cdbk = 0; - while ( fcb_table( cdbk, L_subfr ) * nb_subfr <= *nBits ) + if ( L_subfr > L_SUBFR ) /* access fast_FCB_bits_2sfr */ { - cdbk++; + max_n = 6; + } + else + { + max_n = ACELP_FIXED_CDK_NB; + } + for ( cdbk = 0; cdbk < max_n; cdbk++ ) + { + if ( fcb_table( cdbk, L_subfr ) * nb_subfr > *nBits ) + { + break; + } } cdbk--; - #ifdef DEBUGGING if ( cdbk < 0 && coder_type != TRANSITION ) { @@ -455,29 +465,31 @@ static ivas_error acelp_FCB_allocator( *nBits -= nBits_tmp * nb_subfr; /* try to increase the FCB bit-budget of the first subframe(s) */ - step = fcb_table( cdbk + 1, L_subfr ) - nBits_tmp; - while ( *nBits >= step ) - { - ( *p_fixed_cdk_index )++; - *nBits -= step; - 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 = fcb_table( fixed_cdk_index[sfr] + 1, L_subfr ) - fcb_table( fixed_cdk_index[sfr], L_subfr ); - if ( *nBits >= step && cdbk >= 0 ) + if ( cdbk < ACELP_FIXED_CDK_NB - 1 ) { - fixed_cdk_index[sfr]++; - *nBits -= step; + step = fcb_table( cdbk + 1, L_subfr ) - nBits_tmp; + while ( *nBits >= step ) + { + ( *p_fixed_cdk_index )++; + *nBits -= step; + p_fixed_cdk_index++; + } - if ( *nBits >= step && fixed_cdk_index[sfr + 1] == fixed_cdk_index[sfr] - 1 ) + /* try to increase the FCB of the first subframe in cases when the next step is lower than the current step */ + step = fcb_table( fixed_cdk_index[sfr] + 1, L_subfr ) - fcb_table( fixed_cdk_index[sfr], L_subfr ); + if ( *nBits >= step && cdbk >= 0 ) { - sfr++; fixed_cdk_index[sfr]++; *nBits -= step; + + if ( *nBits >= step && fixed_cdk_index[sfr + 1] == fixed_cdk_index[sfr] - 1 ) + { + sfr++; + fixed_cdk_index[sfr]++; + *nBits -= step; + } } } - /* TRANSITION coding: allocate highest FCBQ bit-budget to the subframe with the glottal-shape codebook */ if ( tc_subfr >= L_SUBFR ) { diff --git a/lib_com/bitstream.c b/lib_com/bitstream.c index 25d388aed19ff1a5b7cacbaef8fbefa0b42e5696..2c90b913b577c4ad38635eaee2ea56c9f4f78485 100644 --- a/lib_com/bitstream.c +++ b/lib_com/bitstream.c @@ -170,12 +170,31 @@ Word16 rate2EVSmode( *-------------------------------------------------------------------*/ ivas_error ind_list_realloc( - BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - const int16_t max_num_indices /* i : new maximum number of allowed indices in the list */ + 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 */ ) { - int16_t i, ind_list_pos; + int16_t i, n, ch, n_channels, ind_list_pos, is_metadata, ivas_max_num_indices; INDICE_HANDLE new_ind_list; + BSTR_ENC_HANDLE hBstr; + + if ( st_ivas == NULL ) + { + return IVAS_ERR_OK; + } + + /* get the pointer to the beginning of the old buffer of indices (either metadata or core coders) */ + if ( old_ind_list == st_ivas->ind_list_metadata ) + { + is_metadata = 1; + ivas_max_num_indices = st_ivas->ivas_max_num_indices_metadata; + } + else + { + is_metadata = 0; + ivas_max_num_indices = st_ivas->ivas_max_num_indices; + } /* allocate new buffer of indices */ if ( ( new_ind_list = (INDICE_HANDLE) malloc( max_num_indices * sizeof( Indice ) ) ) == NULL ) @@ -184,14 +203,14 @@ ivas_error ind_list_realloc( } /* move indices from the old list to the new list */ - for ( i = 0; i < min( max_num_indices, *( hBstr->ivas_max_num_indices ) ); i++ ) + for ( i = 0; i < min( max_num_indices, ivas_max_num_indices ); i++ ) { - if ( ( *hBstr->ivas_ind_list_zero )[i].nb_bits > -1 ) + if ( old_ind_list[i].nb_bits > -1 ) { - new_ind_list[i].id = ( *hBstr->ivas_ind_list_zero )[i].id; - new_ind_list[i].value = ( *hBstr->ivas_ind_list_zero )[i].value; + 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 = ( *hBstr->ivas_ind_list_zero )[i].nb_bits; + new_ind_list[i].nb_bits = old_ind_list[i].nb_bits; } /* reset nb_bits of all other indices to -1 */ @@ -200,18 +219,74 @@ ivas_error ind_list_realloc( new_ind_list[i].nb_bits = -1; } - /* get the current position inside the old list */ - ind_list_pos = (int16_t) ( hBstr->ind_list - ( *hBstr->ivas_ind_list_zero ) ); + /* update parameters in all SCE elements */ + for ( n = 0; n < st_ivas->nSCE; n++ ) + { + /* get the pointer to hBstr */ + if ( is_metadata ) + { + hBstr = st_ivas->hSCE[n]->hMetaData; + } + else + { + hBstr = st_ivas->hSCE[n]->hCoreCoder[0]->hBstr; + } - /* free the old list */ - free( ( *hBstr->ivas_ind_list_zero ) ); + if ( hBstr != NULL ) + { + /* get the current position inside the old list */ + ind_list_pos = (int16_t) ( hBstr->ind_list - old_ind_list ); + + /* set pointers in the new list */ + *( hBstr->ivas_ind_list_zero ) = new_ind_list; + hBstr->ind_list = &new_ind_list[ind_list_pos]; + + /* set the new maximum number of indices */ + *( hBstr->ivas_max_num_indices ) = max_num_indices; + } + } + + /* update parameters in all CPE elements */ + for ( n = 0; n < st_ivas->nCPE; n++ ) + { + /* get the pointer to hBstr */ + if ( is_metadata ) + { + n_channels = 1; + } + else + { + n_channels = CPE_CHANNELS; + } + + for ( ch = 0; ch < n_channels; ch++ ) + { + if ( is_metadata ) + { + hBstr = st_ivas->hCPE[n]->hMetaData; + } + else + { + hBstr = st_ivas->hCPE[n]->hCoreCoder[ch]->hBstr; + } + + if ( hBstr != NULL ) + { + /* get the current position inside the old list */ + ind_list_pos = (int16_t) ( hBstr->ind_list - old_ind_list ); + + /* set pointers in the new list */ + *( hBstr->ivas_ind_list_zero ) = new_ind_list; + hBstr->ind_list = &new_ind_list[ind_list_pos]; - /* set pointers in the new list */ - hBstr->ind_list = &new_ind_list[ind_list_pos]; - *( hBstr->ivas_ind_list_zero ) = new_ind_list; + /* set the new maximum number of indices */ + *( hBstr->ivas_max_num_indices ) = max_num_indices; + } + } + } - /* set the new maximum number of indices */ - *( hBstr->ivas_max_num_indices ) = max_num_indices; + /* free the old list */ + free( old_ind_list ); return IVAS_ERR_OK; } @@ -319,7 +394,7 @@ int16_t get_ivas_max_num_indices( return 1650; } } - else if ( ivas_format == SBA_FORMAT ) + else if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { if ( ivas_total_brate <= IVAS_16k4 ) { @@ -405,15 +480,11 @@ int16_t get_ivas_max_num_indices( return 1650; } } - else if ( ivas_format == MC_FORMAT ) + else if ( ivas_format == MASA_ISM_FORMAT ) { if ( ivas_total_brate <= IVAS_16k4 ) { - return 250; - } - else if ( ivas_total_brate <= IVAS_24k4 ) - { - return 350; + return 300; } else if ( ivas_total_brate <= IVAS_32k ) { @@ -423,215 +494,83 @@ int16_t get_ivas_max_num_indices( { return 650; } - else if ( ivas_total_brate <= IVAS_64k ) - { - return 750; - } else if ( ivas_total_brate <= IVAS_80k ) { - return 850; + return 750; } - else if ( ivas_total_brate <= IVAS_128k ) + else if ( ivas_total_brate <= IVAS_160k ) { return 1150; } - else if ( ivas_total_brate <= IVAS_160k ) + else if ( ivas_total_brate <= IVAS_192k ) { - return 1420; + return 1250; } else if ( ivas_total_brate <= IVAS_256k ) { - return 2120; + return 1400; } else if ( ivas_total_brate <= IVAS_384k ) { - return 2250; - } - else - { - return 2450; - } - } - - return 2450; -} - -/*-----------------------------------------------------------------------* - * get_core_max_num_indices() - * - * Get the maximum allowed number of indices in the core coder - *-----------------------------------------------------------------------*/ - -/*! r: maximum number of indices */ -int16_t get_core_max_num_indices( - const int16_t core, /* i : core */ - const int32_t total_brate /* i : total bitrate */ -) -{ - /* set the maximum number of indices in the core coder */ - if ( core == ACELP_CORE || core == AMR_WB_CORE ) - { - if ( total_brate <= 9600 ) - { - return 60; - } - else if ( total_brate <= IVAS_13k2 ) - { - return 70; - } - else if ( total_brate <= IVAS_16k4 ) - { - return 80; - } - else if ( total_brate <= IVAS_24k4 ) - { - return 100; - } - else if ( total_brate <= IVAS_32k ) - { - return 180; - } - else if ( total_brate <= IVAS_48k ) - { - return 340; - } - else if ( total_brate <= IVAS_80k ) - { - return 450; - } - else if ( total_brate <= IVAS_96k ) - { - return 500; - } - else if ( total_brate <= IVAS_128k ) - { - return 550; - } - else if ( total_brate <= IVAS_160k ) - { - return 600; - } - else if ( total_brate <= IVAS_192k ) - { - return 650; - } - else if ( total_brate <= IVAS_256k ) - { - return 700; + return 1650; } else { - return 800; + return 1850; } } - else if ( core == TCX_20_CORE || core == TCX_10_CORE ) + else if ( ivas_format == MC_FORMAT ) { - if ( total_brate <= 9600 ) - { - return 100; - } - else if ( total_brate <= IVAS_13k2 ) - { - return 150; - } - else if ( total_brate <= IVAS_16k4 ) - { - return 200; - } - else if ( total_brate <= IVAS_24k4 ) - { - return 310; - } - else if ( total_brate <= IVAS_32k ) - { - return 330; - } - else if ( total_brate <= IVAS_48k ) + if ( ivas_total_brate <= IVAS_16k4 ) { - return 340; + return 250; } - else if ( total_brate <= IVAS_80k ) + else if ( ivas_total_brate <= IVAS_24k4 ) { - return 380; + return 350; } - else if ( total_brate <= IVAS_96k ) + else if ( ivas_total_brate <= IVAS_32k ) { return 400; } - else if ( total_brate <= IVAS_128k ) - { - return 460; - } - else if ( total_brate <= IVAS_160k ) - { - return 470; - } - else if ( total_brate <= IVAS_192k ) - { - return 570; - } - else if ( total_brate <= IVAS_256k ) - { - return 680; - } - else - { - return 800; - } - } - else if ( core == HQ_CORE ) - { - if ( total_brate <= 9600 ) - { - return 100; - } - else if ( total_brate <= IVAS_16k4 ) - { - return 200; - } - else if ( total_brate <= IVAS_24k4 ) - { - return 240; - } - else if ( total_brate <= IVAS_32k ) + else if ( ivas_total_brate <= IVAS_48k ) { - return 300; + return 650; } - else if ( total_brate <= IVAS_48k ) + else if ( ivas_total_brate <= IVAS_64k ) { - return 380; + return 750; } - else if ( total_brate <= IVAS_96k ) + else if ( ivas_total_brate <= IVAS_80k ) { - return 400; + return 850; } - else if ( total_brate <= IVAS_128k ) + else if ( ivas_total_brate <= IVAS_128k ) { - return 450; + return 1150; } - else if ( total_brate <= IVAS_160k ) + else if ( ivas_total_brate <= IVAS_160k ) { - return 550; + return 1420; } - else if ( total_brate <= IVAS_192k ) + else if ( ivas_total_brate <= IVAS_256k ) { - return 600; + return 2120; } - else if ( total_brate <= IVAS_256k ) + else if ( ivas_total_brate <= IVAS_384k ) { - return 700; + return 2250; } else { - return 800; + return 2450; } } - else - { - return 50; - } + + return 2450; } + /*-----------------------------------------------------------------------* * get_BWE_max_num_indices() * @@ -698,7 +637,7 @@ int16_t get_ivas_max_num_indices_metadata( return 80; } } - else if ( ivas_format == SBA_FORMAT ) + else if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { if ( ivas_total_brate <= IVAS_16k4 ) { @@ -772,6 +711,49 @@ int16_t get_ivas_max_num_indices_metadata( return 1750; } } + else if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( ivas_total_brate <= IVAS_16k4 ) + { + return 80; + } + else if ( ivas_total_brate <= IVAS_32k ) + { + return 125 + 100; + } + else if ( ivas_total_brate <= IVAS_48k ) + { + return 205 + 100; + } + else if ( ivas_total_brate <= IVAS_96k ) + { + return 240 + 150; + } + else if ( ivas_total_brate <= IVAS_128k ) + { + return 305 + 30; + } + else if ( ivas_total_brate <= IVAS_160k ) + { + return 425 + 30; + } + else if ( ivas_total_brate <= IVAS_192k ) + { + return 630 + 30; + } + else if ( ivas_total_brate <= IVAS_256k ) + { + return 850 + 30; + } + else if ( ivas_total_brate <= IVAS_384k ) + { + return 1000 + 30; + } + else + { + return 1750 + 30; + } + } else if ( ivas_format == MC_FORMAT ) { if ( ivas_total_brate <= IVAS_13k2 ) @@ -866,7 +848,7 @@ ivas_error check_ind_list_limits( #endif /* reallocate the buffer of indices with increased limit */ - if ( ( error = ind_list_realloc( hBstr, *( hBstr->ivas_max_num_indices ) + STEP_MAX_NUM_INDICES ) ) != IVAS_ERR_OK ) + if ( ( error = ind_list_realloc( *hBstr->ivas_ind_list_zero, *( hBstr->ivas_max_num_indices ) + STEP_MAX_NUM_INDICES, hBstr->st_ivas ) ) != IVAS_ERR_OK ) { return error; } @@ -894,7 +876,7 @@ ivas_error check_ind_list_limits( #endif /* no available empty slot -> need to re-allocate the buffer */ - if ( ( error = ind_list_realloc( hBstr, *( hBstr->ivas_max_num_indices ) + STEP_MAX_NUM_INDICES ) ) != IVAS_ERR_OK ) + if ( ( error = ind_list_realloc( *hBstr->ivas_ind_list_zero, *( hBstr->ivas_max_num_indices ) + STEP_MAX_NUM_INDICES, hBstr->st_ivas ) ) != IVAS_ERR_OK ) { return error; } @@ -2569,6 +2551,21 @@ ivas_error preview_indices( break; case 2: st_ivas->ivas_format = ISM_FORMAT; + + if ( total_brate >= IVAS_24k4 ) + { + if ( bit_stream[2] ) + { + if ( bit_stream[3] ) + { + st_ivas->ivas_format = SBA_ISM_FORMAT; + } + else + { + st_ivas->ivas_format = MASA_ISM_FORMAT; + } + } + } break; case 3: if ( bit_stream[2] == 0 ) @@ -2731,6 +2728,44 @@ ivas_error preview_indices( ivas_sba_config( 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 ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + /* read number of objects from the bitstream */ + if ( total_brate != SID_2k40 && total_brate != FRAME_NO_DATA ) + { + st_ivas->nchan_ism = 2 * bit_stream[total_brate / FRAMES_PER_SEC - 1] + bit_stream[total_brate / FRAMES_PER_SEC - 2] + 1; + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + } + + /* Read SBA planar flag and SBA order */ + st_ivas->sba_planar = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_EXTENDED + IVAS_COMBINED_FORMAT_SIGNALLING_BITS] == 1 ); + + if ( total_brate > IVAS_256k ) + { + st_ivas->sba_order = ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_EXTENDED + IVAS_COMBINED_FORMAT_SIGNALLING_BITS + 2] == 1 ); + st_ivas->sba_order += 2 * ( bit_stream[IVAS_FORMAT_SIGNALING_NBITS_EXTENDED + IVAS_COMBINED_FORMAT_SIGNALLING_BITS + 1] == 1 ); + } + else + { + st_ivas->sba_order = 3; + } + + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( total_brate, st_ivas->sba_order ); + + ivas_sba_config( 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 ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + /* read number of objects from the bitstream */ + st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */ + st_ivas->nchan_ism = 0; + + if ( total_brate != SID_2k40 && total_brate != FRAME_NO_DATA ) + { + st_ivas->nchan_ism = 2 * bit_stream[total_brate / FRAMES_PER_SEC - 1] + bit_stream[total_brate / FRAMES_PER_SEC - 2] + 1; + st_ivas->ism_mode = ivas_omasa_ism_mode_select( total_brate, st_ivas->nchan_ism ); + } + } } st_ivas->hDecoderConfig->ivas_total_brate = total_brate; @@ -3001,197 +3036,6 @@ ivas_error read_indices( return error; } -/*-------------------------------------------------------------------* - * read_indices_mime_handle_dtx() - * - * Handle DTX for MIME and RTP_DUMP decoding. - * Returns the actual total_brate. - *-------------------------------------------------------------------*/ - -static Word32 read_indices_mime_handle_dtx( - Decoder_State *st, - int16_t *CNG, - const Word16 isAMRWB_IOmode, - const Word16 core_mode, - Word32 total_brate, - const Word16 sti, - const Word16 speech_lost, - Word16 no_data, - const Word16 amrwb_rfc4867_flag ) -{ - Word16 curr_ft_good_sp = 0; - Word16 speech_bad = 0; - Word16 sid_upd_bad = 0, sid_update = 0; - Word16 amrwb_sid_first = 0; /* derived from sti SID_FIRST indicator in AMRWB payload */ - - /* keep st->CNG , st_bfi and total_brate updated for proper synthesis in DTX and FER */ - if ( total_brate > SID_2k40 ) - { - if ( st->bfi != 1 ) /* so far derived from q bit in AMRWB/AMRWBIO cases */ - { - curr_ft_good_sp = 1; - } - } - - /* handle q_bit and lost_sp clash , assume worst case */ - if ( speech_lost != 0 ) /* overrides a good q_bit */ - { - curr_ft_good_sp = 0; - st->bfi = 1; /* override qbit */ - } - - /* now_bfi_fx has been set based on q_bit and ToC fields */ - - /* SID_UPDATE check */ - if ( total_brate == SID_1k75 || total_brate == SID_2k40 ) - { - if ( st->bfi == 0 ) - { - /* typically from q bit */ - sid_update = 1; - } - else - { - sid_upd_bad = 1; /* may happen in saving from e.g. a CS-connection */ - } - } - - if ( isAMRWB_IOmode && total_brate == 0 && sti == 0 ) - { - if ( st->bfi ) - { - sid_upd_bad = 1; /* corrupt sid_first, signaled as bad SID */ - } - else - { - amrwb_sid_first = 1; /* 1-sti */ - } - } - - if ( sid_upd_bad != 0 && ( ( isAMRWB_IOmode != 0 && st->Opt_AMR_WB == 0 ) || /* switch to AMRWBIO */ - ( isAMRWB_IOmode != 1 && st->Opt_AMR_WB == 1 ) /* switch from AMRWBIO */ - ) ) - { - /* do not allow a normal start of CNG synthesis if this SID(with BER or FER) is a switch to/from AMRWBIO */ - sid_upd_bad = 0; /* revert this detection due to AMRWBIO/EVS mode switch */ - total_brate = 0; - no_data = 1; - assert( st->bfi == 1 ); /* bfi stays 1 */ - } - - if ( total_brate > SID_2k40 && st->bfi == 1 ) /* typically from q bit */ - { - speech_bad = 1; /* initial assumption, CNG synt state decides what to actually do */ - } - /* all frame types decoded */ - - /* update CNG synthesis state */ - /* Decoder can only enter CNG-synthesis for CNG frame types (sid_upd, sid_bad, sid_first) */ - if ( *CNG != 0 ) - { - /* We were in CNG synthesis */ - if ( curr_ft_good_sp != 0 ) - { - /* only a good speech frame makes decoder leave CNG synthesis */ - *CNG = 0; - } - } - else - { - /* We were in SPEECH synthesis */ - /* only a received SID frame can make the decoder enter into CNG synthesis */ - if ( amrwb_sid_first || sid_update || sid_upd_bad ) - { - *CNG = 1; - } - } - - /* Now modify bfi flag for the decoder's SPEECH/CNG synthesis logic */ - /* in SPEECH synthesis, make sure to activate speech PLC for a received NO_DATA frame, - no_data frames may be injected by the network or by the dejitter buffer */ - /* modify bfi_flag to stay/move into the correct decoder PLC section */ - if ( ( *CNG == 0 ) && ( no_data != 0 ) ) - { - /* treat NO_DATA received in speech synthesis as SP_LOST frames, SPEECH PLC code will now become active */ - st->bfi = 1; - /* total_brate= 0; always zero for no_data */ - } - - /* in CNG */ - /* handle bad speech frame(and bad SID frame) in the decoders CNG synthesis settings pair (total_brate, bfi) */ - if ( ( *CNG != 0 && ( speech_bad || speech_lost || no_data ) ) || /* SP_BAD or SPEECH_LOST) --> stay in CNG */ - sid_upd_bad ) /* SID_UPD_BAD --> start/stay CNG */ - { - st->bfi = 0; /* mark as good to not start speech PLC */ - total_brate = 0; /* this zeroing needed for speech_bad, sid_bad frames */ - } - - - /* now bfi, total_brate are set by RX-DTX handler:: - bfi==0, total_brate!=0 CNG or speech pending bitrate - bfi==0, total_brate==0 CNG will continue or start(sid_first, sid_bad) - bfi==1, total_brate!=0 speech PLC - bfi==1, total_brate==0 , speech PLC */ - - /* handle available AMRWB/AMRWBIO MIME header ToC rate-info at startup */ - if ( ( st->bfi == 1 && st->ini_frame == 0 ) && ( ( amrwb_rfc4867_flag != 0 ) || ( amrwb_rfc4867_flag == 0 && isAMRWB_IOmode != 0 ) ) ) /*AMRWB ToC */ - { - Word32 init_rate; - - init_rate = total_brate; /* default , may have been modified from original ToC value */ - if ( speech_lost != 0 || no_data != 0 ) - { - init_rate = ACELP_12k65; /* make sure the decoder starts up in a selected AMRWB mode */ - } - else if ( speech_bad != 0 ) - { - init_rate = AMRWB_IOmode2rate[core_mode]; /* read from from ToC */ - } - st->total_brate = init_rate; /* not updated on bfi as decoderSelectCodec is not called below */ - st->core_brate = init_rate; - } - - return total_brate; -} - - -/*-------------------------------------------------------------------* - * read_indices_mime_handle_sti_and_all_zero_bits() - * - * Handle STI and frames with all zero bits for MIME and RTP_DUMP decoding. - *-------------------------------------------------------------------*/ -static void read_indices_mime_handle_sti_and_all_zero_bits( - Decoder_State *st, - Word32 *total_brate, - Word16 sti ) -{ - Word16 k, sum = 0; - - if ( sti == 0 ) - { - *total_brate = 0; /* signal received SID_FIRST as a good frame with no bits */ - for ( k = 0; k < 35; k++ ) - { - st->bfi |= st->bit_stream[k]; /* partity check of 35 zeroes, any single 1 gives BFI */ - } - } - /* all zero bit SID_update results in a valid LP filter with extremely high LP-filter-gain */ - /* all zero bits signal may be a result of CS bit errors or erronesouly injected by gateways or bad dejitter handlers */ - if ( sti == 1 ) - { /*sid_update received */ - for ( k = 0; k < 35; k++ ) - { - sum += st->bit_stream[k]; /* check of 35 zeroes */ - } - - if ( sum == 0 ) - { - st->bfi = 1; /* eventually becomes SID_UPD_BAD */ - } - } -} - - /*-------------------------------------------------------------------* * get_rfFrameType() * diff --git a/lib_com/cnst.h b/lib_com/cnst.h index e1362b0d759ea2fc1762f11aa305f3290c3a8218..b8fcb059348754daa781848d8dea118b194a42b8 100644 --- a/lib_com/cnst.h +++ b/lib_com/cnst.h @@ -263,6 +263,7 @@ enum{ enum { IND_IVAS_FORMAT, + IND_SMODE_OMASA, IND_SMODE, IND_SID_TYPE, IND_BWIDTH, @@ -2237,11 +2238,6 @@ enum VOIP_RTPDUMP }; -typedef enum _COV_SMOOTHING_TYPE -{ - COV_SMOOTH_SPAR, - COV_SMOOTH_MC -} COV_SMOOTHING_TYPE; /* clang-format on */ #endif /* CNST_H */ diff --git a/lib_com/common_api_types.h b/lib_com/common_api_types.h index 2dc926dfc26c3438ca36234086508137279c8fe9..9360ffb7578eb57f43b37d0ff8d39dd7ab6502a9 100644 --- a/lib_com/common_api_types.h +++ b/lib_com/common_api_types.h @@ -44,13 +44,64 @@ * Common API constants *----------------------------------------------------------------------------------*/ +#define IVAS_NUM_FRAMES_PER_SEC 50 +#define IVAS_MAX_FRAME_SIZE ( 48000 / IVAS_NUM_FRAMES_PER_SEC ) + #define IVAS_MAX_BITS_PER_FRAME ( 512000 / 50 ) #define IVAS_MAX_NUM_OBJECTS 4 +#define IVAS_MAX_INPUT_CHANNELS 16 #define IVAS_MAX_OUTPUT_CHANNELS 16 -#define IVAS_CLDFB_NO_CHANNELS_MAX ( 60 ) +#define IVAS_CLDFB_NO_COL_MAX 16 +#define IVAS_CLDFB_NO_CHANNELS_MAX 60 #define IVAS_MAX_INPUT_LFE_CHANNELS 4 -#define RENDERER_HEAD_POSITIONS_PER_FRAME 4 + +#define IVAS_MAX_PARAM_SPATIAL_SUBFRAMES 4 +#ifndef API_5MS +#define RENDERER_HEAD_POSITIONS_PER_FRAME 4 // ToDo: should it be harmonized with IVAS_MAX_PARAM_SPATIAL_SUBFRAMES? +#endif + +#define QC_ABS_COEFF 6 +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define IVAS_NUM_FRAMES_PER_SEC 50 + +#define MAX_SPLIT_REND_BITRATE 768000 +#define IVAS_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES ( ( ( (int32_t) MAX_SPLIT_REND_BITRATE / IVAS_NUM_FRAMES_PER_SEC ) + 7 ) >> 3 ) +#endif + +/*----------------------------------------------------------------------------------* + * Common API enum for output audio configurations + *----------------------------------------------------------------------------------*/ + +typedef enum _IVAS_AUDIO_CONFIG +{ + AUDIO_CONFIG_INVALID, + AUDIO_CONFIG_MONO, /* mono output */ + AUDIO_CONFIG_STEREO, /* stereo output */ + AUDIO_CONFIG_5_1, /* 5.1 speakers layout CICP6 */ + AUDIO_CONFIG_7_1, /* 7.1 speakers layout CICP12 */ + AUDIO_CONFIG_5_1_2, /* 5.1+2 speakers layout CICP14 */ + AUDIO_CONFIG_5_1_4, /* 5.1+4 speakers layout CICP16 */ + AUDIO_CONFIG_7_1_4, /* 7.1+4 speakers layout CICP19 */ + AUDIO_CONFIG_LS_CUSTOM, /* custom loudspeaker layout */ + AUDIO_CONFIG_FOA, /* ambisonics, order 1 */ + AUDIO_CONFIG_HOA2, /* ambisonics, order 2 */ + AUDIO_CONFIG_HOA3, /* ambisonics, order 3 */ + AUDIO_CONFIG_OBA, /* object based audio */ + AUDIO_CONFIG_BINAURAL, /* binaural with HRIR */ + AUDIO_CONFIG_BINAURAL_SPLIT_CODED, /* split binaural with CLDFB coded output */ + AUDIO_CONFIG_BINAURAL_SPLIT_PCM, /* split binaural with PCM coded output */ + AUDIO_CONFIG_BINAURAL_ROOM_IR, /* binaural with BRIR */ + AUDIO_CONFIG_BINAURAL_ROOM_REVERB, /* binaural with HRIR + reverb */ + AUDIO_CONFIG_ISM1, /* ISM1 */ + AUDIO_CONFIG_ISM2, /* ISM2 */ + AUDIO_CONFIG_ISM3, /* ISM3 */ + AUDIO_CONFIG_ISM4, /* ISM4 */ + AUDIO_CONFIG_MASA1, /* MASA1 */ + AUDIO_CONFIG_MASA2, /* MASA2 */ + AUDIO_CONFIG_EXTERNAL /* external renderer */ + +} AUDIO_CONFIG; /*----------------------------------------------------------------------------------* @@ -89,6 +140,55 @@ typedef struct } IVAS_QUATERNION; +#ifdef SPLIT_REND_WITH_HEAD_ROT +typedef enum +{ + DEFAULT_AXIS, + YAW, + PITCH, + ROLL, + YAW_PITCH, + YAW_ROLL, + PITCH_ROLL +} IVAS_SPLIT_REND_ROT_AXIS; + +typedef enum +{ + IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE, + IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB, +} IVAS_SPLIT_REND_POSE_CORRECTION_MODE; + +typedef enum +{ + IVAS_SPLIT_REND_CODEC_LCLD, + IVAS_SPLIT_REND_CODEC_LC3PLUS, + IVAS_SPLIT_REND_CODEC_DEFAULT, /* Will use LCLD for CLDFB rendering paths and LC3plus for TD rendering paths */ + IVAS_SPLIT_REND_CODEC_NONE +} IVAS_SPLIT_REND_CODEC; + +typedef enum +{ + IVAS_SPLIT_REND_RENDERER_SELECTION_CREND, + IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV, + IVAS_SPLIT_REND_RENDERER_SELECTION_PARAMBIN, + IVAS_SPLIT_REND_RENDERER_SELECTION_TDREND, + IVAS_SPLIT_REND_RENDERER_SELECTION_DEFAULT, +} IVAS_SPLIT_REND_RENDERER_SELECTION; + +typedef struct ivas_split_rend_bits_t +{ + uint8_t *bits_buf; + int32_t buf_len; /*size of bits_buf in bytes. This field should be set by allocator of bits_buf*/ + int32_t bits_written; + int32_t bits_read; +#ifdef API_5MS + int16_t codec_frame_size_ms; +#endif + IVAS_SPLIT_REND_CODEC codec; + IVAS_SPLIT_REND_POSE_CORRECTION_MODE pose_correction; +} ivas_split_rend_bits_t, IVAS_SPLIT_REND_BITS_DATA, *IVAS_SPLIT_REND_BITS_HANDLE; +#endif + typedef struct { float x, y, z; @@ -111,6 +211,8 @@ 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; +typedef struct cldfb_filter_bank_struct *IVAS_CLDFB_FILTER_BANK_HANDLE; + #ifdef DEBUGGING typedef enum { @@ -128,6 +230,7 @@ typedef struct float yaw; float pitch; int16_t non_diegetic_flag; + } IVAS_REND_AudioObjectPosition; typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG @@ -139,15 +242,49 @@ typedef struct _IVAS_ROOM_ACOUSTICS_CONFIG float pAcoustic_dsr[IVAS_CLDFB_NO_CHANNELS_MAX]; /* - The room's Diffuse to Source Ratio per center frequency */ float acousticPreDelay; /* Time elapsed between input signal and late reverberation start, float, range [0.001..10] */ float inputPreDelay; /* Offset in seconds from where DSR is computed in the RIR (0 = at source), float, range [0.001..10] */ + + /* early reflections */ + int16_t use_er; /* ER activation flag */ + int32_t lowComplexity; /* Low complexity ER flag */ + IVAS_VECTOR3 dimensions; /* Room dimensions [m] */ + float AbsCoeff[QC_ABS_COEFF]; /* Absorption coeffs */ + IVAS_VECTOR3 ListenerOrigin; /* Listener origin */ + } IVAS_ROOM_ACOUSTICS_CONFIG_DATA; +#ifdef SPLIT_REND_WITH_HEAD_ROT + +typedef struct _IVAS_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*/ +#ifdef API_5MS + int16_t codec_frame_size_ms; /*Codec frame size in milliseconds, only relevant with LC3plus */ +#endif + IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode; + IVAS_SPLIT_REND_CODEC codec; + IVAS_SPLIT_REND_RENDERER_SELECTION rendererSelection; +} IVAS_SPLIT_REND_CONFIG_DATA; +#endif + typedef struct _IVAS_RENDER_CONFIG { #ifdef DEBUGGING IVAS_RENDER_TYPE_OVERRIDE renderer_type_override; #endif IVAS_ROOM_ACOUSTICS_CONFIG_DATA room_acoustics; - float directivity[3]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_CONFIG_DATA split_rend_config; +#endif + float directivity[IVAS_MAX_NUM_OBJECTS * 3]; } IVAS_RENDER_CONFIG_DATA, *IVAS_RENDER_CONFIG_HANDLE; typedef struct _IVAS_LS_CUSTOM_LAYOUT diff --git a/lib_com/delay_comp.c b/lib_com/delay_comp.c index 003d9422451fb3fd2b6fda1c1ff11047a0a3d816..630493a60f16f3bd69730b1033bca2bea6a1e689 100644 --- a/lib_com/delay_comp.c +++ b/lib_com/delay_comp.c @@ -55,6 +55,10 @@ int32_t get_delay( const int32_t 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 ) { int32_t delay = 0; @@ -69,13 +73,12 @@ int32_t get_delay( { delay = IVAS_ENC_DELAY_NS; - if ( ivas_format == MASA_FORMAT ) + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) { delay = 0; /* All delay is compensated in the decoder with MASA */ } } - - if ( ivas_format == SBA_FORMAT ) + if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { /* compensate for DirAC/SPAR filterbank delay */ delay += IVAS_FB_ENC_DELAY_NS; @@ -98,13 +101,20 @@ int32_t get_delay( { delay = IVAS_DEC_DELAY_NS; - if ( hCldfb != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) { - /* compensate for filterbank delay */ - delay += IVAS_FB_DEC_DELAY_NS; +#endif + if ( hCldfb != NULL ) + { + /* compensate for filterbank delay */ + delay += IVAS_FB_DEC_DELAY_NS; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT } +#endif - if ( ivas_format == MASA_FORMAT ) + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) { delay += IVAS_ENC_DELAY_NS; /* Compensate also the encoder delay in the decoder with MASA */ } diff --git a/lib_com/env_stab.c b/lib_com/env_stab.c index b4da4ce9d70d675dc0de77f32c6d1ca061ede6d5..a1957566b0f6dd21bc58b9b5a64c512617dfa977 100644 --- a/lib_com/env_stab.c +++ b/lib_com/env_stab.c @@ -44,6 +44,7 @@ #include "prot.h" #include "rom_com.h" #include "wmc_auto.h" +#include "stl.h" #ifdef DEBUGGING #include "assert.h" #endif @@ -93,7 +94,7 @@ float env_stability( Overflow = 0; env_delta = shl_o( *mem_env_delta, 1, &Overflow ); #else - env_delta = shl_o( *mem_env_delta, 1 ); + env_delta = shl( *mem_env_delta, 1 ); #endif } else diff --git a/lib_com/hq2_bit_alloc.c b/lib_com/hq2_bit_alloc.c index 6b53adec8f931b292bf97f51c06747c4a56930d8..34c37babd3481d74a4d8a06fd97905517b456659 100644 --- a/lib_com/hq2_bit_alloc.c +++ b/lib_com/hq2_bit_alloc.c @@ -96,7 +96,7 @@ static Word16 div_s_ss( norm_d = norm_s( d ); ds = shl( d, norm_d ); - div_s( &tmp, ns, ds ); + tmp = div_s( ns, ds ); res = shr( tmp, add( sub( norm_n, norm_d ), 15 ) ); return res; @@ -209,7 +209,7 @@ static void Bits2indvsb_fx( exp_normn = norm_s( be_sum_fx ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( be_cnt_fx ); - div_s( &Ravg_fx, shl( be_sum_fx, exp_normn ), shl( be_cnt_fx, exp_normd ) ); + Ravg_fx = div_s( shl( be_sum_fx, exp_normn ), shl( be_cnt_fx, exp_normd ) ); Ravg_fx = shr( Ravg_fx, 2 ); /* safe shift */ QRavg = add( sub( exp_normn, exp_normd ), 15 - 2 ); @@ -246,7 +246,7 @@ static void Bits2indvsb_fx( exp_normn = norm_s( be_sum_fx ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( Rcnt_fx ); - div_s( &Ravg_fx, shl( be_sum_fx, exp_normn ), shl( Rcnt_fx, exp_normd ) ); + Ravg_fx = div_s( shl( be_sum_fx, exp_normn ), shl( Rcnt_fx, exp_normd ) ); Ravg_fx = shr( Ravg_fx, 2 ); /* safe shift */ QRavg = add( sub( exp_normn, exp_normd ), 15 - 2 ); @@ -267,7 +267,7 @@ static void Bits2indvsb_fx( exp_normn = norm_s( Bits ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( be_sum_fx ); - div_s( &Bits_avg_fx, shl( Bits, exp_normn ), shl( be_sum_fx, exp_normd ) ); + Bits_avg_fx = div_s( shl( Bits, exp_normn ), shl( be_sum_fx, exp_normd ) ); Bits_avg_fx = shr( Bits_avg_fx, 2 ); /* safe_shift */ QBavg = add( sub( exp_normn, exp_normd ), 15 - 2 ); } @@ -623,20 +623,20 @@ void hq2_bit_alloc_har( exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( N_fx ); - div_l( &div_fx, L_shl( L_temp, exp_normn ), shl( N_fx, exp_normd ) ); /* (Qbe+exp_normn)-(0+exp_normd)-1) */ + div_fx = div_l( L_shl( L_temp, exp_normn ), shl( N_fx, exp_normd ) ); /* (Qbe+exp_normn)-(0+exp_normd)-1) */ L_norm_sum_avg = L_shr( L_deposit_h( div_fx ), add( sub( exp_normn, exp_normd ), 15 ) ); /* -> Qbe */ exp_norm = norm_l( L_norm_sum ); norm_sum_fx = extract_h( L_shl( L_norm_sum, exp_norm ) ); /* SWB_BWE_LR_Qbe+exp_norm-16 */ Qns = sub( add( SWB_BWE_LR_Qbe, exp_norm ), 16 ); - div_s( &Inv_norm_sum_fx, 0x4000 /* Q15 */, norm_sum_fx ); + Inv_norm_sum_fx = div_s( 0x4000 /* Q15 */, norm_sum_fx ); QIns = sub( 31, exp_norm ); /* 14 - (14+exp_norm-16) + 15 */ grp_bit_avg_fx = div_s_ss( B_fx, GRP_SB ); /* Q0 */ exp_normd = norm_s( p2a_bands_fx ); - div_s( &Inv_p2a_bands_fx, 0x3fff, shl( p2a_bands_fx, exp_normd ) ); /* 14-exp_normd+15 */ + Inv_p2a_bands_fx = div_s( 0x3fff, shl( p2a_bands_fx, exp_normd ) ); /* 14-exp_normd+15 */ QIpb = sub( 29, exp_normd ); L_temp = L_shl( Mpy_32_16( L_Ravg_sub[GRP_SB - 1], Inv_p2a_bands_fx ), sub( SWB_BWE_LR_Qbe, sub( QIpb, 1 ) ) ); @@ -655,7 +655,7 @@ void hq2_bit_alloc_har( exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( harmonic_band_fx ); - div_s( &div_fx, shl( norm_sum_fx, exp_normn ), shl( harmonic_band_fx, exp_normd ) ); + div_fx = div_s( shl( norm_sum_fx, exp_normn ), shl( harmonic_band_fx, exp_normd ) ); L_avg_enhf_en_diff = L_sub( L_temp_band_energy[index_fx[0]], L_shl( L_deposit_h( div_fx ), sub( sub( SWB_BWE_LR_Qbe, ( add( Qns, sub( exp_normn, exp_normd ) ) ) ), 31 ) ) ); /* Qbe - (Qns+exp_normn-(exp_normd)+15) -16 */ IF( sub( lf_hf_ge_r_fx, 26214 ) > 0x0 && L_sub( L_avg_enhf_en_diff, (Word32) ( 8 << SWB_BWE_LR_Qbe ) ) > 0x0L ) /* 0.8=26214.4(Q15) 8.0f=131072(Qbe) */ @@ -861,11 +861,11 @@ void hq2_bit_alloc( tmp = s_max( tmp, 1 ); IF( L_Ravg > 0 ) { - div_l( &div_fx, L_shl( L_Ravg, exp_normd ), tmp ); /* Qdiv = 14+exp_normd-(exp_normn)-1 */ + div_fx = div_l( L_shl( L_Ravg, exp_normd ), tmp ); /* Qdiv = 14+exp_normd-(exp_normn)-1 */ } ELSE { - div_l( &div_fx, L_shl( L_abs( L_Ravg ), exp_normd ), tmp ); /* Qdiv = 14+exp_normd-(exp_normn)-1 */ + div_fx = div_l( L_shl( L_abs( L_Ravg ), exp_normd ), tmp ); /* Qdiv = 14+exp_normd-(exp_normn)-1 */ div_fx = negate( div_fx ); } @@ -883,7 +883,7 @@ void hq2_bit_alloc( test(); IF( bit_budget_norm_fx > 0 && sub( bit_budget_norm_fx, tmp ) < 0 ) { - div_s( &div_fx, bit_budget_norm_fx, tmp ); + div_fx = div_s( bit_budget_norm_fx, tmp ); } Qdiv = add( sub( exp_normd, exp_normn ), 15 ); diff --git a/lib_com/hq2_core_com.c b/lib_com/hq2_core_com.c index aafe578b42507f58737fe96dd5cf4987041e0548..22a596a75fad2822ae3ff4a6e19c2991a3a665dd 100644 --- a/lib_com/hq2_core_com.c +++ b/lib_com/hq2_core_com.c @@ -334,7 +334,7 @@ void bit_allocation_second_fx( { exp = norm_s( band_width[k_sort[k]] ); tmp = shl( band_width[k_sort[k]], exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp = 29-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 */ @@ -354,7 +354,7 @@ void bit_allocation_second_fx( { exp = norm_s( band_width[k_sort[k]] ); tmp = shl( band_width[k_sort[k]], exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp = 29-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 */ diff --git a/lib_com/ifft_rel.c b/lib_com/ifft_rel.c index fc267a7a10bc80c9cfc5ed856e472959aa780f7c..28334b06db85cba527d725e8b48b75065f4ca566 100644 --- a/lib_com/ifft_rel.c +++ b/lib_com/ifft_rel.c @@ -229,7 +229,7 @@ void ifft_rel( *-----------------------------------------------------------------*/ idx = fft256_read_indexes; - xi0 = temp - 1; + xi0 = &temp[0] - 1; if ( n == 128 ) { for ( i = 0; i < n; i++ ) diff --git a/lib_com/ivas_cnst.h b/lib_com/ivas_cnst.h index 60807f62cbb847157cf4d56de29a811cc1ad2c71..29473c091c317e9d7d8af680d0ff3717482831b5 100755 --- a/lib_com/ivas_cnst.h +++ b/lib_com/ivas_cnst.h @@ -69,7 +69,8 @@ typedef enum SBA_FORMAT, /* IVAS SBA (ambisonics) format */ MASA_FORMAT, /* IVAS MASA format */ MC_FORMAT, /* IVAS multi-channel format */ - + MASA_ISM_FORMAT, /* IVAS combined MASA + objects format*/ + SBA_ISM_FORMAT /* IVAS combined SBA + objects format */ } IVAS_FORMAT; @@ -79,49 +80,9 @@ typedef enum #define IVAS_FORMAT_SIGNALING_NBITS 2 /* number of bits for signaling the IVAS format */ #define IVAS_FORMAT_SIGNALING_NBITS_EXTENDED ( IVAS_FORMAT_SIGNALING_NBITS + 1 ) +#define IVAS_COMBINED_FORMAT_SIGNALLING_BITS 1 -/*----------------------------------------------------------------------------------* - * IVAS output audio configurations - *----------------------------------------------------------------------------------*/ - -typedef enum -{ - AUDIO_CONFIG_INVALID, - AUDIO_CONFIG_MONO, /* mono output */ - AUDIO_CONFIG_STEREO, /* stereo output */ - AUDIO_CONFIG_5_1, /* 5.1 speakers layout CICP6 */ - AUDIO_CONFIG_7_1, /* 7.1 speakers layout CICP12 */ - AUDIO_CONFIG_5_1_2, /* 5.1+2 speakers layout CICP14 */ - AUDIO_CONFIG_5_1_4, /* 5.1+4 speakers layout CICP16 */ - AUDIO_CONFIG_7_1_4, /* 7.1+4 speakers layout CICP19 */ - AUDIO_CONFIG_LS_CUSTOM, /* custom loudspeaker layout */ - AUDIO_CONFIG_FOA, /* ambisonics, order 1 */ - AUDIO_CONFIG_HOA2, /* ambisonics, order 2 */ - AUDIO_CONFIG_HOA3, /* ambisonics, order 3 */ - AUDIO_CONFIG_OBA, /* object based audio */ - AUDIO_CONFIG_BINAURAL, /* binaural with HRIR */ - AUDIO_CONFIG_BINAURAL_ROOM_IR, /* binaural with BRIR */ - AUDIO_CONFIG_BINAURAL_ROOM_REVERB, /* binaural with HRIR + reverb */ - AUDIO_CONFIG_ISM1, /* ISM1 */ - AUDIO_CONFIG_ISM2, /* ISM2 */ - AUDIO_CONFIG_ISM3, /* ISM3 */ - AUDIO_CONFIG_ISM4, /* ISM4 */ - AUDIO_CONFIG_MASA1, /* MASA1 */ // TODO: seems not to be used - AUDIO_CONFIG_MASA2, /* MASA2 */ // TODO: seems not to be used - AUDIO_CONFIG_EXTERNAL /* external renderer */ - -} AUDIO_CONFIG; - -#ifdef DEBUGGING -typedef enum -{ - RENDER_TYPE_OVERRIDE_NONE, - RENDER_TYPE_OVERRIDE_CREND, - RENDER_TYPE_OVERRIDE_FASTCONV -} ivas_renderTypeOverride; -#endif - /*----------------------------------------------------------------------------------* * IVAS rendering configurations *----------------------------------------------------------------------------------*/ @@ -154,10 +115,30 @@ typedef enum RENDERER_PARAM_ISM, RENDERER_BINAURAL_MIXER_CONV, RENDERER_BINAURAL_MIXER_CONV_ROOM, - RENDERER_NON_DIEGETIC_DOWNMIX - + RENDERER_NON_DIEGETIC_DOWNMIX, + RENDERER_OSBA_STEREO, + RENDERER_OSBA_AMBI, + RENDERER_OSBA_LS } RENDERER_TYPE; +#ifdef DEBUGGING +typedef enum +{ + RENDER_TYPE_OVERRIDE_NONE, + RENDER_TYPE_OVERRIDE_CREND, + RENDER_TYPE_OVERRIDE_FASTCONV +} ivas_renderTypeOverride; +#endif + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +typedef enum +{ + PCM_INT16, + PCM_FLOAT32, + PCM_NOT_KNOW = 0xffff +} PCM_RESOLUTION; +#endif + /*----------------------------------------------------------------------------------* * IVAS general constants *----------------------------------------------------------------------------------*/ @@ -174,6 +155,7 @@ typedef enum #define CPE_CHANNELS 2 /* number of CPE (stereo) channels */ #define FOA_CHANNELS 4 /* number of FOA channels */ #define HOA2_CHANNELS 9 +#define HOA3_CHANNELS 16 #define MAX_NUM_OBJECTS 4 /* max. number of audio objects */ @@ -203,15 +185,13 @@ typedef enum #define MAX_JBM_SUBFRAMES_5MS 8 #define DEFAULT_JBM_SUBFRAMES_5MS 4 #define JBM_CLDFB_SLOTS_IN_SUBFRAME 4 -#define MAX_JBM_CLDFB_TIMESLOTS 32 +#define MAX_JBM_CLDFB_TIMESLOTS 32 #define DEFAULT_JBM_CLDFB_TIMESLOTS 16 #define MAX_JBM_L_FRAME48k 1920 #define MAX_JBM_L_FRAME_NS 40000000L #define MAX_SPAR_INTERNAL_CHANNELS IVAS_SPAR_MAX_CH #define MAX_CLDFB_DIGEST_CHANNELS 4 -#ifdef FIX_470_MASA_JBM_EXT #define MASA_JBM_RINGBUFFER_FRAMES 3 -#endif typedef enum { @@ -308,13 +288,7 @@ typedef enum #define MIN_BRATE_SWB_SCE ACELP_9k60 /* min. SCE bitrate where SWB is supported */ #define MIN_BRATE_SWB_STEREO IVAS_13k2 /* min. stereo bitrate where SWB is supported */ #define MIN_BRATE_FB_STEREO IVAS_32k /* min. SCE and stereo bitrate where FB is supported */ -#ifdef ISM_FB -#ifdef ISM_FB_16k4 #define MIN_BRATE_FB_ISM 16000 /* min. SCE bitrate where FB is supported in ISM format */ -#else -#define MIN_BRATE_FB_ISM 24000 /* min. SCE bitrate where FB is supported in ISM format */ -#endif -#endif #define MIN_TDM_BRATE_WB_TBE_1k05 12000 /* min. per channel bitrate where WB TBE @1.05 kbps is supported (0.35kbs at lower bitrates) */ #define MIN_BRATE_WB_TBE_1k05 9650 /* min. per channel bitrate where WB TBE @1.05 kbps is supported (0.35kbs at lower bitrates) */ @@ -338,11 +312,17 @@ typedef enum #define ISM_METADATA_INACTIVE_FLAG_BITS 1 /* flag to signal whether MD are sent in low-rate inactive frame */ #define ISM_METADATA_FLAG_BITS 2 +#define ISM_INACTIVE_IMP 0 /* == ISM_NO_META */ #define ISM_NO_META 0 #define ISM_LOW_IMP 1 #define ISM_MEDIUM_IMP 2 #define ISM_HIGH_IMP 3 +#define BRATE_ISM_INACTIVE 2450 /* CoreCoder bitrate in ISM no meta / inactive frames */ +#define BITS_ISM_INACTIVE ( BRATE_ISM_INACTIVE / FRAMES_PER_SEC ) +#define ADJUST_ISM_BRATE_NEG 6000 +#define ADJUST_ISM_BRATE_POS 8000 + #define ISM_AZIMUTH_NBITS 7 #define ISM_AZIMUTH_MIN -180.0f #define ISM_AZIMUTH_MAX 180.0f @@ -395,7 +375,11 @@ typedef enum { ISM_MODE_NONE, ISM_MODE_DISC, /* discrete ISM */ - ISM_MODE_PARAM /* parametric ISM */ + ISM_MODE_PARAM, /* parametric ISM */ + ISM_MASA_MODE_MASA_ONE_OBJ, /* MASA ISM mode when one object is encoded separately and remainder using MASA parameters */ + ISM_MASA_MODE_PARAM_ONE_OBJ, /* MASA ISM mode when one object is encoded separately and remainder using parametric object model */ + ISM_MASA_MODE_DISC, /* MASA ISM mode when all objects are encoded separarately */ + ISM_SBA_MODE_DISC /* MASA ISM mode when all objects are encoded separarately */ } ISM_MODE; @@ -404,7 +388,7 @@ enum { IND_ISM_NUM_OBJECTS, IND_ISM_EXTENDED_FLAG = IND_ISM_NUM_OBJECTS + MAX_NUM_OBJECTS, - IND_ISM_EXTENDED_NDP_FLAG, + IND_ISM_EXTENDED_NDP_FLAG, IND_ISM_METADATA_FLAG, IND_ISM_MD_NULL_FLAG = IND_ISM_METADATA_FLAG + MAX_NUM_OBJECTS, IND_ISM_MD_INACTIVE_FLAG = IND_ISM_MD_NULL_FLAG + MAX_NUM_OBJECTS, @@ -656,7 +640,7 @@ enum IND_STEREO_DFT_SIDEGAIN_FLAG, IND_STEREO_DFT_SIDEGAINS, - IND_STEREO_DFT_ITD_MODE = IND_STEREO_DFT_SIDEGAINS + 4 * STEREO_DFT_BAND_MAX + 72, + IND_STEREO_DFT_ITD_MODE = IND_STEREO_DFT_SIDEGAINS + 4 * STEREO_DFT_BAND_MAX + 120, IND_STEREO_DFT_ITD_HUFF, IND_STEREO_DFT_ITD_NEG, @@ -882,7 +866,8 @@ enum fea_names #define MDCT_ST_PLC_FADEOUT_DELAY_4_LSP_FADE 3 typedef enum { - EQUAL_CORES, + NOISE_GEN_MODE_UNDEF = -1, + EQUAL_CORES = 0, TCX10_IN_0_TCX20_IN_1, TCX20_IN_0_TCX10_IN_1, } TONALMDCTCONC_NOISE_GEN_MODE; @@ -990,6 +975,13 @@ typedef enum #define DIRAC_SLOT_NS 1250000L /* time duration of a time slot, 1.25ms (==DELAY_RENERER_NS/MAX_PARAM_SPATIAL_SUBFRAMES) */ #define DIRAC_SLOT_ENC_NS 5000000L +#define DIRAC_MONO_THRESH_SILENCE 3e4f +#define DIRAC_MONO_NORM_FACTOR 1e13f +#define DIRAC_MONO_ONE_ON_NORM_FACTOR (1.f / 1e13f) +#define DIRAC_MONO_MAX_THRESH 1e6f +#define DIRAC_MONO_MIN_THRESH 1e2f +#define DIRAC_MONO_FRAME_THRESH 15 /* 30ms */ + typedef enum { DIRAC_OPEN, /* initialize to default value */ @@ -1028,6 +1020,9 @@ typedef enum #define IVAS_ACTIVEW_DM_F_SCALE_VLBR 0.25f #define IVAS_SPAR_FOA_DFLT_FREQ_PER_CHAN 24000 +#define IVAS_SPAR_DYN_ACTIVEW_THRESH (0.0039f) +#define IVAS_SPAR_SIDE_CH_DYN_ACTIVEW_THRESH (32.0f) + #define MAX_QUANT_STRATS 3 #define MAX_CODING_STRATS 3 #define IVAS_NUM_PROB_MODELS 4 @@ -1060,7 +1055,7 @@ typedef enum #define IVAS_SPAR_BR_TABLE_LEN 20 -/* TD decorr */ // ToDo: not all 16CH are currently supported -> to be revisited later +/* TD decorr */ enum { IVAS_TD_DECORR_OUT_1CH = 1, @@ -1070,19 +1065,11 @@ enum IVAS_TD_DECORR_OUT_5CH, IVAS_TD_DECORR_OUT_6CH, IVAS_TD_DECORR_OUT_7CH, - IVAS_TD_DECORR_OUT_8CH, - IVAS_TD_DECORR_OUT_9CH, - IVAS_TD_DECORR_OUT_10CH, - IVAS_TD_DECORR_OUT_11CH, - IVAS_TD_DECORR_OUT_12CH, - IVAS_TD_DECORR_OUT_13CH, - IVAS_TD_DECORR_OUT_14CH, - IVAS_TD_DECORR_OUT_15CH, - IVAS_TD_DECORR_OUT_16CH + IVAS_TD_DECORR_OUT_8CH }; #define IVAS_SPAR_MAX_DMX_CHS 4 -#define IVAS_MAX_DECORR_CHS IVAS_TD_DECORR_OUT_15CH +#define IVAS_MAX_DECORR_CHS IVAS_TD_DECORR_OUT_8CH #define IVAS_MAX_DECORR_APD_SECTIONS 16 #define IVAS_APD_2_SECT 2 #define IVAS_APD_4_SECT 4 @@ -1169,6 +1156,10 @@ enum #define MASA_DELTA_AZI_DCT 10 #define MASA_TRANSP_BITS 1 +#define NO_BITS_MASA_ISM_NO_OBJ 2 +#define MASA2TOTAL_THR 0.98f +#define BITS_MASA2TOTTAL_DCT0 6 +#define STEP_M2T 0.1f #define MASA_HEADER_BITS 2 #define MASA_SUBFRAME_BITS 1 #define MASA_LOWBITRATE_MODE_BITS 1 @@ -1232,10 +1223,13 @@ enum #define MASA_ANGLE_AT_EQUATOR_DEG 0.738796268264740f #define MASA_INV_ANGLE_AT_EQUATOR_DEG 1.353553128183453f #define MASA_STEREO_MIN_BITRATE IVAS_24k4 +#define MAXIMUM_OMASA_FREQ_BANDS 8 /* Corresponds to maximum number of coding bands at 32 kbps */ +#define OMASA_STEREO_SW_CNT_MAX 100 #define MASA_BIT_REDUCT_PARAM 10 #define MASA_MAXIMUM_TWO_DIR_BANDS 24 #define NBITS_HR_COH 4 + typedef enum { MASA_STEREO_NOT_DEFINED, @@ -1249,6 +1243,7 @@ typedef enum MASA_FRAME_4SF } MASA_FRAME_MODE; + /*----------------------------------------------------------------------------------* * Multichannel format *----------------------------------------------------------------------------------*/ @@ -1322,9 +1317,11 @@ typedef enum MCT_CHAN_MODE_IGNORE } MCT_CHAN_MODE; + /*----------------------------------------------------------------------------------* * MC Param-Upmix Mode Constants *----------------------------------------------------------------------------------*/ + #define MC_PARAMUPMIX_MAX_TRANSPORT_CHANS 8 #define MC_PARAMUPMIX_MAX_INPUT_CHANS 12 #define MC_PARAMUPMIX_MAX_BITS 1024 /* Maximum number of bits for the MC Param-Upmix metadata */ @@ -1332,6 +1329,12 @@ typedef enum #define MC_PARAMUPMIX_NCH 2 /* number of channels to combine into 1 */ #define MC_PARAMUPMIX_MIN_CLDFB 8 +typedef enum _COV_SMOOTHING_TYPE +{ + COV_SMOOTH_SPAR, + COV_SMOOTH_MC +} COV_SMOOTHING_TYPE; + typedef struct { const int32_t *value; const uint16_t *length; @@ -1414,12 +1417,8 @@ typedef enum #define PARAM_MC_MAX_BAND_ABS_COV_DEC 10 #define PARAM_MC_ENER_LIMIT_INTRAFRAME (1.5f) #define PARAM_MC_ENER_LIMIT_INTERFRAME (2.0f) -#ifdef FIX_563_PARAMMC_LIMITER #define PARAM_MC_ENER_LIMIT_MAX_DELTA_FAC (15.0f) -#endif -#ifdef FIX_580_PARAMMC_ENER_BURSTS #define PARAM_MC_NUM_ATTACK_ILD_THRESH (3) -#endif #define PARAM_MC_LFE_ON_THRESH (8000.0f) #define PARAM_MC_BAND_TO_MDCT_BAND_RATIO 16 /* Ratio of resolution of CLDFB Bands to MDCT Bands */ #define PARAM_MC_SLOT_ENC_NS 2500000L @@ -1492,8 +1491,24 @@ typedef enum EFAP_DMX_INTENSITY } EFAP_VTX_DMX_TYPE; +#ifdef SPLIT_REND_WITH_HEAD_ROT +typedef enum +{ + ANY_YAW, + PITCH_ONLY, + ANY_ROLL, + PRED_ONLY, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + PRED_ROLL_ONLY, +#endif + COM_GAIN_ONLY, + LR_GAIN_ONLY +} IVAS_SPLIT_REND_POSE_TYPE; +#endif + #define VBAP_NUM_SEARCH_SECTORS 4 + /*----------------------------------------------------------------------------------* * Binaural Rendering Constants *----------------------------------------------------------------------------------*/ @@ -1501,10 +1516,13 @@ typedef enum #define BINAURAL_MAXBANDS 60 /* Max number of bands */ #define BINAURAL_CONVBANDS 50 /* Bands upto which convolution is performed */ #define BINAURAL_NTAPS 5 + +#define BINAURAL_NTAPS_SBA 3 + #define BINAURAL_NTAPS_MAX 96 #define HRTF_SH_ORDER 3 -#define HRTF_SH_CHANNELS 16 +#define HRTF_SH_CHANNELS HOA3_CHANNELS #define HRTF_LS_CHANNELS 15 #define HRTF_NUM_BINS 60 #define REVERB_PREDELAY_MAX 20 /* Max input delay for reverb module */ @@ -1518,8 +1536,8 @@ typedef enum { BINAURAL_INPUT_AUDIO_CONFIG_INVALID, BINAURAL_INPUT_AUDIO_CONFIG_COMBINED, /* 5_1, 5_1_2, 5_1_4, 7_1, 7_1_4 */ - BINAURAL_INPUT_AUDIO_CONFIG_HOA3, /* HOA3 */ - BINAURAL_INPUT_AUDIO_CONFIG_HOA2, /* HOA2 */ + BINAURAL_INPUT_AUDIO_CONFIG_HOA3, /* HOA3 */ + BINAURAL_INPUT_AUDIO_CONFIG_HOA2, /* HOA2 */ BINAURAL_INPUT_AUDIO_CONFIG_FOA, /* FOA */ BINAURAL_INPUT_AUDIO_CONFIG_UNDEFINED /* Not used */ @@ -1529,6 +1547,79 @@ typedef enum #define HEADROT_SHMAT_DIM ( ( HEADROT_ORDER + 1 ) * ( HEADROT_ORDER + 1 ) ) #define HEADROT_SHMAT_DIM2 ( HEADROT_SHMAT_DIM * HEADROT_SHMAT_DIM ) + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------------------* + * Split Binaural Rendering Constants + *----------------------------------------------------------------------------------*/ + +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define CLDFB_PLC_XF 2 /* Length of cross-fade into first good frame after frame loss in CLDFB cols. */ +#endif + +#define SPLIT_REND_DECOR_ALPHA 0.25f + +#define SPLIT_REND_MAX_YAW_ONLY_POSES 2 +#define SPLIT_REND_MAX_PITCH_ONLY_POSES 2 +#define SPLIT_REND_MAX_ROLL_ONLY_POSES 2 +#define SPLIT_REND_MAX_ONE_AXIS_MD_POSES 2 +#define MAX_EXTRAPOLATION_ANGLE 15.0f /* this means additional 15 degrees can be extrapolated on top of MD probing poses*/ + +#define SPLIT_REND_MAX_DOF 3 + +#define MAX_HEAD_ROT_POSES (2 + SPLIT_REND_MAX_YAW_ONLY_POSES + SPLIT_REND_MAX_PITCH_ONLY_POSES + SPLIT_REND_MAX_ROLL_ONLY_POSES) +#define MAX_SPLIT_REND_MD_BANDS 20 +#define MAX_SPLIT_MD_SUBFRAMES 1 +#define COMPLEX_MD_BAND_THRESH MAX_SPLIT_REND_MD_BANDS +#define COMPLEX_MD_BAND_THRESH_LOW 5 + +#ifndef SPLIT_REND_PRED_QUANT_63_PNTS +#define IVAS_SPLIT_REND_NUM_QUANT_STRATS 3 +#else +#define IVAS_SPLIT_REND_NUM_QUANT_STRATS 4 +#endif +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS +#define IVAS_SPLIT_REND_PRED_63QUANT_PNTS 63 +#define IVAS_SPLIT_REND_PRED_31QUANT_PNTS 31 +#define IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS 31 +#else +#define IVAS_SPLIT_REND_PRED_QUANT_PNTS 31 +#endif +#define IVAS_SPLIT_REND_D_QUANT_PNTS 15 +#define IVAS_SPLIT_REND_PRED_MIN_VAL -1.4f +#define IVAS_SPLIT_REND_PRED_MAX_VAL 1.4f + +#define IVAS_SPLIT_REND_PITCH_G_MIN_VAL 0.5f +#define IVAS_SPLIT_REND_PITCH_G_MAX_VAL 1.5f +#define IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS IVAS_SPLIT_REND_D_QUANT_PNTS +#define IVAS_SPLIT_REND_D_MIN_VAL 0.0f +#define IVAS_SPLIT_REND_D_MAX_VAL 1.0f + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS +#define IVAS_SPLIT_REND_PRED_ROLL_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )) +#define IVAS_SPLIT_REND_PRED_ROLL_1BYQ_STEP (( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) +#define IVAS_SPLIT_REND_PRED31_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )) +#define IVAS_SPLIT_REND_PRED31_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_31QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) +#define IVAS_SPLIT_REND_PRED63_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_63QUANT_PNTS - 1 )) +#define IVAS_SPLIT_REND_PRED63_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_63QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) +#else +#define IVAS_SPLIT_REND_PRED_Q_STEP (( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL ) / ( IVAS_SPLIT_REND_PRED_QUANT_PNTS - 1 )) +#define IVAS_SPLIT_REND_PRED_1BYQ_STEP (( IVAS_SPLIT_REND_PRED_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PRED_MAX_VAL - IVAS_SPLIT_REND_PRED_MIN_VAL )) +#endif + +#define IVAS_SPLIT_REND_D_Q_STEP (( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL ) / ( IVAS_SPLIT_REND_D_QUANT_PNTS - 1 )) +#define IVAS_SPLIT_REND_D_1BYQ_STEP (( IVAS_SPLIT_REND_D_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_D_MAX_VAL - IVAS_SPLIT_REND_D_MIN_VAL )) +#define IVAS_SPLIT_REND_PITCH_G_Q_STEP (( IVAS_SPLIT_REND_PITCH_G_MAX_VAL - IVAS_SPLIT_REND_PITCH_G_MIN_VAL ) / ( IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )) +#define IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP (( IVAS_SPLIT_REND_PITCH_G_QUANT_PNTS - 1 )/( IVAS_SPLIT_REND_PITCH_G_MAX_VAL - IVAS_SPLIT_REND_PITCH_G_MIN_VAL )) + +#define IVAS_SPLIT_REND_MAX_NUM_BYTES 4000 +#define IVAS_SPLIT_REND_HEAD_POSE_BITS 9 +#define IVAS_SPLIT_REND_DOF_BITS 2 +#define IVAS_SPLIT_REND_HQ_MODE_BITS 1 +#define IVAS_SPLIT_REND_ROT_AXIS_BITS 3 +#endif + + /*----------------------------------------------------------------------------------* * TD Binaural Object renderer *----------------------------------------------------------------------------------*/ @@ -1551,6 +1642,8 @@ typedef enum #define MAX_ANGULAR_STEP_INV ( 1.0f / MAX_ANGULAR_STEP ) #define MAX_INTERPOLATION_STEPS 12 +#define LR_IAC_LENGTH_NR_FC ( RV_LENGTH_NR_FC ) + /* ----- Enums - TD Renderer ----- */ typedef enum @@ -1562,14 +1655,13 @@ typedef enum typedef enum { TDREND_POSTYPE_ABSOLUTE, /* The source position is in absolute coordinates */ - TDREND_POSTYPE_RELATIVE_TO_LISTENER /* The source position is relative to the listener */ + TDREND_POSTYPE_NON_DIEGETIC /* The source position is non-diegetic */ } TDREND_PosType_t; typedef enum { TDREND_PLAYSTATUS_INITIAL, - TDREND_PLAYSTATUS_PLAYING, - TDREND_PLAYSTATUS_PLAYING_NON_DIEGETIC + TDREND_PLAYSTATUS_PLAYING } TDREND_PlayStatus_t; typedef enum @@ -1730,6 +1822,19 @@ typedef enum #define QUANT_STRAT_0 0 #define QUANT_STRAT_2 2 +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------------------* + * Split rendering bitrate constants + *----------------------------------------------------------------------------------*/ + +#define SPLIT_REND_256k 256000 +#define SPLIT_REND_320k 320000 +#define SPLIT_REND_384k 384000 +#define SPLIT_REND_512k 512000 +#define SPLIT_REND_768k 768000 +#define SPLIT_REND_MAX_BRATE SPLIT_REND_768k +#define SPLIT_REND_ADDITIONAL_BYTES_TO_READ 1 +#endif /*----------------------------------------------------------------------------------* * Limiter constants @@ -1738,24 +1843,53 @@ typedef enum #define IVAS_LIMITER_THRESHOLD 32729 /* -0.01 dBFS */ #define IVAS_LIMITER_ATTACK_SECONDS 0.005f + +/*----------------------------------------------------------------------------------* + * Early Reflection constants + *----------------------------------------------------------------------------------*/ + +#define ER_ABS_COEFF 6 +#define ER_MAX_SOURCES 25 +#define ER_REF_ORDER 1 +#define ER_NUM_REF 6 + +#define ER_AIR_COEFF (0.00137f) +#define ER_SOUND_SPEED (343.0f) +#define ER_MIN_WALL_DIST (0.1f) +#define ER_EUCLIDEAN_SCALE (1.29246971E-26f) + +#define ER_DEFAULT_ROOM_L (3.0f) +#define ER_DEFAULT_ROOM_W (4.0f) +#define ER_DEFAULT_ROOM_H (5.0f) +#define ER_RADIUS (1.0f) +#define ER_LIST_ORIGIN_X (0.0f) +#define ER_LIST_ORIGIN_Y (0.0f) +#define ER_LIST_HEIGHT (1.6f) + +#define ER_MIN_ROOM_DIMENSION (1.0f) +#define ER_MAX_ROOM_DIMENSION (999.0f) +#define ER_MIN_ABS_COEFF (0.0f) +#define ER_MAX_ABS_COEFF (1.0f) + + /*----------------------------------------------------------------------------------* * Stereo downmix EVS constants *----------------------------------------------------------------------------------*/ -#define STEREO_DMX_EVS_PHA_LEN_16 48 -#define STEREO_DMX_EVS_FAD_LEN_16 160 -#define STEREO_DMX_EVS_PHA_LEN_32 96 -#define STEREO_DMX_EVS_FAD_LEN_32 320 -#define STEREO_DMX_EVS_PHA_LEN_48 96 -#define STEREO_DMX_EVS_FAD_LEN_48 480 +#define STEREO_DMX_EVS_PHA_LEN_16 48 +#define STEREO_DMX_EVS_FAD_LEN_16 160 +#define STEREO_DMX_EVS_PHA_LEN_32 96 +#define STEREO_DMX_EVS_FAD_LEN_32 320 +#define STEREO_DMX_EVS_PHA_LEN_48 96 +#define STEREO_DMX_EVS_FAD_LEN_48 480 -#define STEREO_DMX_EVS_SUBBAND_SIZE 2 -#define STEREO_DMX_EVS_NB_SUBBAND_MAX (L_FRAME48k / (2 * STEREO_DMX_EVS_SUBBAND_SIZE)) +#define STEREO_DMX_EVS_SUBBAND_SIZE 2 +#define STEREO_DMX_EVS_NB_SUBBAND_MAX (L_FRAME48k / (2 * STEREO_DMX_EVS_SUBBAND_SIZE)) -#define STEREO_DMX_EVS_PHA_LEN_MAX 96 /* Max of PHA_LEN */ -#define STEREO_DMX_EVS_FAD_LEN_MAX 480 /* Max of FAD_LEN */ +#define STEREO_DMX_EVS_PHA_LEN_MAX 96 /* Max of PHA_LEN */ +#define STEREO_DMX_EVS_FAD_LEN_MAX 480 /* Max of FAD_LEN */ -#define STEREO_DMX_EVS_DATA_LEN_MAX (STEREO_DMX_EVS_PHA_LEN_MAX + L_FRAME48k) +#define STEREO_DMX_EVS_DATA_LEN_MAX (STEREO_DMX_EVS_PHA_LEN_MAX + L_FRAME48k) typedef enum { diff --git a/lib_com/ivas_cov_smooth.c b/lib_com/ivas_cov_smooth.c index e2aa44627bc46cf337e9d23a4360124c21ac9404..54d0d5f8dabac2d0948abe985e577eaf77f53686 100644 --- a/lib_com/ivas_cov_smooth.c +++ b/lib_com/ivas_cov_smooth.c @@ -40,7 +40,73 @@ #include "wmc_auto.h" #include "prot.h" +/*-----------------------------------------------------------------------------------------* + * Local constants + *-----------------------------------------------------------------------------------------*/ + #define BAND_SMOOTH_REST_START_IDX ( 2 ) + +/*-----------------------------------------------------------------------------------------* + * Function ivas_calculate_update_factor() + * + * To calculate the update factor + *-----------------------------------------------------------------------------------------*/ + +static float ivas_calculate_update_factor( + float *p_bin_to_band, + int16_t active_bins ) +{ + float update_factor_temp = 0.0f; + int16_t k; + + for ( k = 0; k < active_bins; k++ ) + { + update_factor_temp += p_bin_to_band[k]; + } + + return update_factor_temp; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_calculate_smoothning_factor() + * + * To calculate the Smoothning factor + *-----------------------------------------------------------------------------------------*/ + +static void ivas_calculate_smoothning_factor( + float *Smoothing_factor, + float update_factor, + const int16_t min_pool_size, + const float max_update_rate, + const COV_SMOOTHING_TYPE smooth_mode, + const int32_t ivas_total_brate, + int16_t j ) +{ + float smooth_fact; + *Smoothing_factor = update_factor / min_pool_size; + if ( smooth_mode != COV_SMOOTH_MC ) + { + if ( ivas_total_brate < IVAS_24k4 ) + { + smooth_fact = 0.5f; + } + else + { + smooth_fact = 0.75f; + } + *Smoothing_factor *= ( j + 1 ) * smooth_fact; + } + + if ( *Smoothing_factor > max_update_rate ) + { + *Smoothing_factor = max_update_rate; + } + + return; +} + + /*-----------------------------------------------------------------------------------------* * Function ivas_set_up_cov_smoothing() * @@ -53,84 +119,27 @@ static void ivas_set_up_cov_smoothing( const float max_update_rate, const int16_t min_pool_size, const COV_SMOOTHING_TYPE smooth_mode, /* i : flag multichannel vs SPAR */ - const int32_t ivas_total_brate ) { - int16_t j, k; - if ( ivas_total_brate < IVAS_24k4 ) - { - for ( j = 0; j < pFb->filterbank_num_bands; j++ ) - { - float update_factor; - float *p_bin_to_band; - update_factor = 0.0f; - p_bin_to_band = pFb->fb_bin_to_band.pp_short_stride_bin_to_band[j]; - int16_t active_bins; - active_bins = pFb->fb_bin_to_band.p_short_stride_num_bins_per_band[j]; - - for ( k = 0; k < active_bins; k++ ) - { - update_factor += p_bin_to_band[k]; - } - - hCovState->pSmoothing_factor[j] = update_factor / min_pool_size; - float smooth_fact; - if ( ivas_total_brate < IVAS_24k4 ) - { - smooth_fact = 0.5f; - } - else - { - smooth_fact = 0.75; - } - hCovState->pSmoothing_factor[j] *= ( j + 1 ) * smooth_fact; - - if ( hCovState->pSmoothing_factor[j] > max_update_rate ) - { - hCovState->pSmoothing_factor[j] = max_update_rate; - } - } - } - else if ( smooth_mode == COV_SMOOTH_MC ) + int16_t j; + float update_factor; + if ( smooth_mode == COV_SMOOTH_MC ) { for ( j = 0; j < pFb->filterbank_num_bands; j++ ) { - float update_factor; - update_factor = 0.0f; - - for ( k = 0; k < pFb->fb_bin_to_band.pFb_active_bins_per_band[j]; k++ ) - { - update_factor += pFb->fb_bin_to_band.pFb_bin_to_band[j][k]; - } - - hCovState->pSmoothing_factor[j] = update_factor / min_pool_size; - - if ( hCovState->pSmoothing_factor[j] > max_update_rate ) - { - hCovState->pSmoothing_factor[j] = max_update_rate; - } + int16_t active_bins = pFb->fb_bin_to_band.pFb_active_bins_per_band[j]; + update_factor = ivas_calculate_update_factor( pFb->fb_bin_to_band.pFb_bin_to_band[j], active_bins ); + ivas_calculate_smoothning_factor( &hCovState->pSmoothing_factor[j], update_factor, min_pool_size, max_update_rate, smooth_mode, ivas_total_brate, j ); } } else { for ( j = 0; j < pFb->filterbank_num_bands; j++ ) { - float update_factor; - float *p_bin_to_band; - int16_t active_bins; - update_factor = 0.0f; - p_bin_to_band = pFb->fb_bin_to_band.pp_short_stride_bin_to_band[j]; - active_bins = pFb->fb_bin_to_band.p_short_stride_num_bins_per_band[j]; - for ( k = 0; k < active_bins; k++ ) - { - update_factor += p_bin_to_band[k]; - } - hCovState->pSmoothing_factor[j] = update_factor / min_pool_size; - hCovState->pSmoothing_factor[j] *= ( j + 1 ) * 0.75f; - if ( hCovState->pSmoothing_factor[j] > max_update_rate ) - { - hCovState->pSmoothing_factor[j] = max_update_rate; - } + float *p_bin_to_band = pFb->fb_bin_to_band.pp_short_stride_bin_to_band[j]; + int16_t active_bins = pFb->fb_bin_to_band.p_short_stride_num_bins_per_band[j]; + update_factor = ivas_calculate_update_factor( p_bin_to_band, active_bins ); + ivas_calculate_smoothning_factor( &hCovState->pSmoothing_factor[j], update_factor, min_pool_size, max_update_rate, smooth_mode, ivas_total_brate, j ); } } diff --git a/lib_com/ivas_dirac_com.c b/lib_com/ivas_dirac_com.c index 20f4b24953afe5d8b4e1215337347c016327c1ac..29a057ed76afcba955e0dca110cec68c915aa271 100644 --- a/lib_com/ivas_dirac_com.c +++ b/lib_com/ivas_dirac_com.c @@ -111,12 +111,13 @@ ivas_error ivas_dirac_config( if ( ( (Encoder_Struct *) st_ivas )->hSpar != NULL ) { hFbMdft = ( (Encoder_Struct *) st_ivas )->hSpar->hFbMixer; + dirac_to_spar_md_bands = ( (Encoder_Struct *) st_ivas )->hSpar->dirac_to_spar_md_bands; } else { hFbMdft = NULL; + dirac_to_spar_md_bands = NULL; } - dirac_to_spar_md_bands = ( (Encoder_Struct *) st_ivas )->hSpar->dirac_to_spar_md_bands; } else { @@ -131,16 +132,17 @@ ivas_error ivas_dirac_config( if ( ( (Decoder_Struct *) st_ivas )->hSpar != NULL ) { hFbMdft = ( (Decoder_Struct *) st_ivas )->hSpar->hFbMixer; + dirac_to_spar_md_bands = ( (Decoder_Struct *) st_ivas )->hSpar->dirac_to_spar_md_bands; } else { hFbMdft = NULL; + dirac_to_spar_md_bands = NULL; } ( (Decoder_Struct *) st_ivas )->hDirAC->hFbMdft = hFbMdft; - dirac_to_spar_md_bands = ( (Decoder_Struct *) st_ivas )->hSpar->dirac_to_spar_md_bands; } - if ( ivas_format == SBA_FORMAT ) + if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { hConfig->nbands = IVAS_MAX_NUM_BANDS; @@ -158,7 +160,7 @@ ivas_error ivas_dirac_config( } hConfig->enc_param_start_band = 0; hConfig->dec_param_estim = FALSE; - if ( ivas_format == SBA_FORMAT ) /* skip for MASA decoder */ + if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) /* skip for MASA decoder */ { if ( ( error = ivas_dirac_sba_config( hQMetaData, element_mode, ivas_total_brate, sba_order, hConfig->nbands - spar_dirac_split_band ) ) != IVAS_ERR_OK ) { @@ -167,7 +169,7 @@ ivas_error ivas_dirac_config( if ( hQMetaData != NULL ) { - if ( enc_dec == ENC || ivas_format != SBA_FORMAT ) + if ( enc_dec == ENC || ( ivas_format != SBA_FORMAT && ivas_format != SBA_ISM_FORMAT ) ) /* Todo: This condition should probably be corrected in main */ { hConfig->nbands = hQMetaData->q_direction[0].cfg.nbands; } @@ -190,7 +192,7 @@ ivas_error ivas_dirac_config( } } - if ( ivas_format == SBA_FORMAT ) + if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { ivas_dirac_config_bands( band_grouping, IVAS_MAX_NUM_BANDS, (int16_t) ( Fs * INV_CLDFB_BANDWIDTH + 0.5f ), dirac_to_spar_md_bands, hQMetaData->useLowerBandRes, hConfig->enc_param_start_band, hFbMdft ); } @@ -307,7 +309,7 @@ void ivas_dirac_config_bands( } /*-------------------------------------------------------------------* - * ivas_sba_get_max_md_bits() + * ivas_get_dirac_sba_max_md_bits() * * Return maximum SBA DirAC metadata bit-budget and nominal bit-budget *-------------------------------------------------------------------*/ @@ -369,7 +371,7 @@ void ivas_get_dirac_sba_max_md_bits( *bits_frame_nominal = (int16_t) ( sba_total_brate / FRAMES_PER_SEC ); *metadata_max_bits = MAX16B; /* no limit */ } - *metadata_max_bits = (int16_t) ceilf( (float) *metadata_max_bits * nbands / 5 ); + *metadata_max_bits = (int16_t) min( (float) MAX16B, ceilf( (float) *metadata_max_bits * nbands / 5 ) ); *qmetadata_max_bit_req = QMETADATA_MAXBIT_REQ_SBA >> 1; return; diff --git a/lib_com/ivas_error.h b/lib_com/ivas_error.h index c86d94712598e3cd155dc04cc561140b0f178f9f..813b1d570fd631313186dee425b7f6b71fbd0d18 100644 --- a/lib_com/ivas_error.h +++ b/lib_com/ivas_error.h @@ -86,6 +86,10 @@ typedef enum IVAS_ERR_ISM_INVALID_METADATA_VALUE, IVAS_ERR_INVALID_MASA_FORMAT_METADATA_FILE, IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED, +#ifdef API_5MS + IVAS_ERR_TSM_NOT_ENABLED, + IVAS_ERR_FETCH_SIZE_NO_MULTIPLE_OF_5MS, +#endif #ifdef DEBUGGING IVAS_ERR_INVALID_FORCE_MODE, #ifdef DEBUG_AGC_ENCODER_CMD_OPTION @@ -135,6 +139,14 @@ typedef enum IVAS_ERR_INVALID_INPUT_ID, IVAS_ERR_WRONG_NUM_CHANNELS, IVAS_ERR_INVALID_BUFFER_SIZE, + IVAS_ERR_INVALID_RENDER_CONFIG, + 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 * @@ -233,6 +245,12 @@ 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_INVALID_HRTF: diff --git a/lib_com/ivas_fb_mixer.c b/lib_com/ivas_fb_mixer.c index a94a92c548785667f9cff7d72d53bf681d57ea4a..366a8a38cced9a97e9489915fe376538259040c3 100644 --- a/lib_com/ivas_fb_mixer.c +++ b/lib_com/ivas_fb_mixer.c @@ -474,7 +474,7 @@ void ivas_FB_mixer_close( void ivas_fb_mixer_pcm_ingest( IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */ - float pcm_in[][L_FRAME48k], /* i : input audio channels */ + float *pcm_in[], /* i : input audio channels */ float **ppOut_pcm, /* o : output audio channels */ const int16_t frame_len, /* i : frame length */ const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH] ) @@ -591,34 +591,35 @@ void ivas_fb_mixer_get_windowed_fr( * FB Mixer cross fading *-----------------------------------------------------------------------------------------*/ -static void ivas_fb_mixer_cross_fading( +void ivas_fb_mixer_cross_fading( IVAS_FB_MIXER_HANDLE hFbMixer, float **ppOut_pcm, float *pMdft_out_old, float *pMdft_out_new, const int16_t ch, - const int16_t frame_len ) + const int16_t frame_len, + const int16_t cf_offset ) { int16_t k, fade_start_offset, fade_end_offset; if ( hFbMixer->first_frame[ch] == 0 ) { - fade_start_offset = (int16_t) hFbMixer->cross_fade_start_offset; - fade_end_offset = (int16_t) hFbMixer->cross_fade_end_offset; + fade_start_offset = hFbMixer->cross_fade_start_offset; + fade_end_offset = hFbMixer->cross_fade_end_offset; for ( k = 0; k < fade_start_offset; k++ ) { - ppOut_pcm[ch][k] = pMdft_out_old[k + frame_len]; + ppOut_pcm[ch][k] = pMdft_out_old[k + cf_offset]; } for ( k = fade_start_offset; k < fade_end_offset; k++ ) { - ppOut_pcm[ch][k] = pMdft_out_new[k + frame_len] * hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] + pMdft_out_old[k + frame_len] * ( 1.0f - hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] ); + ppOut_pcm[ch][k] = pMdft_out_new[k + cf_offset] * hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] + pMdft_out_old[k + cf_offset] * ( 1.0f - hFbMixer->pFilterbank_cross_fade[k - fade_start_offset] ); } for ( k = fade_end_offset; k < frame_len; k++ ) { - ppOut_pcm[ch][k] = pMdft_out_new[k + frame_len]; + ppOut_pcm[ch][k] = pMdft_out_new[k + cf_offset]; } } else @@ -627,7 +628,7 @@ static void ivas_fb_mixer_cross_fading( for ( k = 0; k < frame_len; k++ ) { - ppOut_pcm[ch][k] = pMdft_out_new[k + frame_len]; + ppOut_pcm[ch][k] = pMdft_out_new[k + cf_offset]; } } @@ -717,7 +718,7 @@ void ivas_fb_mixer_process( ivas_imdft( pOut_fr_re, pOut_fr_im, pMdft_out[hist], frame_len ); } - ivas_fb_mixer_cross_fading( hFbMixer, ppOut_pcm, pMdft_out[0], pMdft_out[1], ch, frame_len ); + ivas_fb_mixer_cross_fading( hFbMixer, ppOut_pcm, pMdft_out[0], pMdft_out[1], ch, frame_len, frame_len ); } return; diff --git a/lib_com/ivas_ism_com.c b/lib_com/ivas_ism_com.c index d57f65850075efe85f046d284776e0cbd1cc3ef0..e1bdcfabc0b6c4767d8895a0b32dc0e4ac95f6d0 100644 --- a/lib_com/ivas_ism_com.c +++ b/lib_com/ivas_ism_com.c @@ -54,9 +54,7 @@ #define BETA_ISM_LOW_IMP 0.6f #define BETA_ISM_MEDIUM_IMP 0.8f -#ifdef FIX_562_ISM2_64KBPS #define MAX_BRATE_TCX_32k 48000 -#endif /*-------------------------------------------------------------------* @@ -65,7 +63,7 @@ * Convert bit-budget to bitrate *-------------------------------------------------------------------*/ -static void bitbudget_to_brate( +void bitbudget_to_brate( const int16_t x[], /* i : bitbudgets */ int32_t y[], /* o : bitrates */ const int16_t N /* i : number of entries to be converted */ @@ -89,16 +87,17 @@ static void bitbudget_to_brate( *-------------------------------------------------------------------*/ ivas_error ivas_ism_config( - const int32_t ism_total_brate, /* i : ISM total bitrate */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int16_t nchan_ism, /* i : number of objects */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - const int16_t ism_extended_metadata_flag, /* i : extended metadata flag */ - const int16_t null_metadata_flag[MAX_NUM_OBJECTS], /* i : NULL MD flag */ - const int16_t ism_imp[], /* i : ISM importance flags */ - int32_t element_brate[], /* o : element bitrate per object */ - int32_t total_brate[], /* o : total bitrate per object */ - int16_t nb_bits_metadata[] /* i/o: number of metadata bits */ + const int32_t ism_total_brate, /* i : ISM total bitrate */ + const int16_t nchan_transport, /* i : number of transport channels */ + const int16_t nchan_ism, /* i : number of objects */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ + const int16_t ism_extended_metadata_flag, /* i : extended metadata flag */ + const int16_t null_metadata_flag[MAX_NUM_OBJECTS], /* i : NULL MD flag */ + const int16_t ism_imp[], /* i : ISM importance flags */ + int32_t element_brate[], /* o : element bitrate per object */ + int32_t total_brate[], /* o : total bitrate per object */ + int16_t nb_bits_metadata[], /* i/o: number of metadata bits */ + const int16_t combined_format_flag /* i : flag indicating combined format */ ) { int16_t ch; @@ -111,8 +110,14 @@ ivas_error ivas_ism_config( ivas_error error; error = IVAS_ERR_OK; - - n_ISms = nchan_transport; + if ( combined_format_flag ) + { + n_ISms = nchan_ism; + } + else + { + n_ISms = nchan_transport; + } /* initialization */ ism_metadata_flag_global = 0; @@ -125,39 +130,53 @@ ivas_error ivas_ism_config( } } - /* decision about bitrates per channel - constant during the session (at one ivas_total_brate) */ - bits_ism = (int16_t) ( ism_total_brate / FRAMES_PER_SEC ); - set_s( bits_element, bits_ism / n_ISms, n_ISms ); - bits_element[n_ISms - 1] += bits_ism % n_ISms; - bitbudget_to_brate( bits_element, element_brate, n_ISms ); + /* decision about bitrates per channel */ + if ( combined_format_flag ) + { + /* combined format: decision about bitrates per channel - variable during the session (at one ivas_total_brate) */ + bits_ism = (int16_t) ( ism_total_brate / FRAMES_PER_SEC ); + set_s( bits_element, bits_ism / n_ISms, n_ISms ); + bits_element[n_ISms - 1] += bits_ism % n_ISms; - /* count ISM common signaling bits */ - if ( hIsmMeta != NULL ) + /* ISM common signaling bits are counted in MASA MD bit-budget */ + } + else { - if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) + /* ISM format: decision about bitrates per channel - constant during the session (at one ivas_total_brate) */ + bits_ism = (int16_t) ( ism_total_brate / FRAMES_PER_SEC ); + set_s( bits_element, bits_ism / n_ISms, n_ISms ); + bits_element[n_ISms - 1] += bits_ism % n_ISms; + bitbudget_to_brate( bits_element, element_brate, n_ISms ); + + /* count ISm common signaling bits */ + if ( hIsmMeta != NULL ) { - nb_bits_metadata[0] += ISM_EXTENDED_METADATA_BITS; + nb_bits_metadata[0] += n_ISms * ISM_METADATA_FLAG_BITS + nchan_ism; - if ( ism_extended_metadata_flag ) + if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { - nb_bits_metadata[0] += ISM_METADATA_IS_NDP_BITS; - } - } - nb_bits_metadata[0] += n_ISms * ISM_METADATA_FLAG_BITS + nchan_ism; + nb_bits_metadata[0] += ISM_EXTENDED_METADATA_BITS; - for ( ch = 0; ch < n_ISms; ch++ ) - { - if ( null_metadata_flag[ch] ) - { - nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS; - nb_bits_metadata[0] += ISM_METADATA_FLAG_BITS; + if ( ism_extended_metadata_flag ) + { + nb_bits_metadata[0] += ISM_METADATA_IS_NDP_BITS; + } } - else + + for ( ch = 0; ch < n_ISms; ch++ ) { - if ( ism_imp[ch] == ISM_NO_META ) + if ( null_metadata_flag[ch] ) { nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS; - nb_bits_metadata[0] += ISM_METADATA_INACTIVE_FLAG_BITS; + nb_bits_metadata[0] += ISM_METADATA_FLAG_BITS; + } + else + { + if ( ism_imp[ch] == ISM_NO_META ) + { + nb_bits_metadata[0] += ISM_METADATA_MD_FLAG_BITS; + nb_bits_metadata[0] += ISM_METADATA_INACTIVE_FLAG_BITS; + } } } } @@ -292,8 +311,7 @@ ivas_error ivas_ism_config( bits_CoreCoder[ch] = tmp; } -#ifdef FIX_562_ISM2_64KBPS - /* limitaton to avoid too high bitrate in one active TCX channel */ + /* limitation to avoid too high bitrate in one active TCX channel */ if ( element_brate[0] >= SCE_CORE_16k_LOW_LIMIT && element_brate[0] <= IVAS_32k ) { diff = 0; @@ -307,7 +325,6 @@ ivas_error ivas_ism_config( bits_CoreCoder[ch] = tmp; } } -#endif if ( diff > 0 ) { @@ -330,12 +347,40 @@ ivas_error ivas_ism_config( printf( "\nWarning: ISM bitbudget equal to SID!\n" ); } #endif + + if ( combined_format_flag ) + { + diff = 0; + } break; } } } } + if ( combined_format_flag ) + { + if ( diff > 0 ) + { + for ( ch = 0; ch < n_ISms; ch++ ) + { + if ( ism_imp[ch] <= ISM_MEDIUM_IMP ) + { + if ( diff > limit_high ) + { + diff += bits_CoreCoder[ch] - limit_high; + bits_CoreCoder[ch] = limit_high; + } + else + { + bits_CoreCoder[ch] += diff; + break; + } + } + } + } + } + bitbudget_to_brate( bits_CoreCoder, total_brate, n_ISms ); } @@ -344,7 +389,7 @@ ivas_error ivas_ism_config( { int32_t tmpL; tmpL = sum_l( total_brate, n_ISms ) + bits_side * FRAMES_PER_SEC; - if ( sum_l( element_brate, n_ISms ) != tmpL ) + if ( ism_total_brate != tmpL ) { return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "\nError: Mismatch in ISM bit-budget distribution. Exiting!\n" ); } @@ -510,10 +555,8 @@ void ivas_param_ism_config( hParamIsm->last_el_sgn[i] = 1; } -#ifdef FIX_549_DMX_GAIN hParamIsm->last_dmx_gain = 1.0f; set_f( hParamIsm->last_cardioid_left, 1.0f, MAX_NUM_OBJECTS ); -#endif return; } @@ -552,7 +595,8 @@ ISM_MODE ivas_ism_mode_select( * ---------------------------------------------------------------*/ void ivas_ism_metadata_close( - ISM_METADATA_HANDLE hIsmMetaData[] /* i/o : object metadata handles */ + ISM_METADATA_HANDLE hIsmMetaData[], /* i/o : object metadata handles */ + const int16_t first_idx /* i : index of first handle to deallocate */ ) { int16_t n; @@ -562,7 +606,7 @@ void ivas_ism_metadata_close( return; } - for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) + for ( n = first_idx; n < MAX_NUM_OBJECTS; n++ ) { if ( hIsmMetaData[n] != NULL ) { diff --git a/lib_com/ivas_masa_com.c b/lib_com/ivas_masa_com.c index b1a6c256d2a0eaf785e58ebadcc74dde392fd337..5076dc6661b6a548a2851e6960bf73c799eb19a5 100644 --- a/lib_com/ivas_masa_com.c +++ b/lib_com/ivas_masa_com.c @@ -69,13 +69,16 @@ static int16_t quantize_phi_masa( float phi, const int16_t flag_delta, float *ph *---------------------------------------------------------------*/ void ivas_masa_set_elements( - const int32_t ivas_total_brate, /* i : codec total bitrate */ + const int32_t ivas_total_brate, /* i : IVAS 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 */ + 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 */ ) { if ( nchan_transport == 2 ) @@ -87,17 +90,38 @@ void ivas_masa_set_elements( *element_mode = IVAS_SCE; /* This is needed for the initialization phase to initialize codec mode to SCE, since it is written first to the file*/ } + else if ( ivas_format == MASA_ISM_FORMAT && ism_mode != ISM_MODE_NONE ) + { + *nCPE = 1; + + if ( *element_mode == -1 ) + { + *element_mode = IVAS_CPE_DFT; /* To have it initialized in case it was not already. */ + } + if ( ivas_total_brate > MIN_BRATE_MDCT_STEREO ) + { + *element_mode = IVAS_CPE_MDCT; + if ( ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) && ( ivas_total_brate - ism_total_brate < MIN_BRATE_MDCT_STEREO ) ) + { + *element_mode = IVAS_CPE_DFT; + } + } + } else { *nCPE = 1; *nSCE = 0; - if ( ivas_total_brate > IVAS_48k ) + if ( ivas_total_brate > MIN_BRATE_MDCT_STEREO ) { *element_mode = IVAS_CPE_MDCT; } } hQMetaData->bits_frame_nominal = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC ); + if ( ivas_format == MASA_ISM_FORMAT && ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_DISC ) ) + { + hQMetaData->bits_frame_nominal -= (int16_t) ( ism_total_brate / FRAMES_PER_SEC ); + } } else if ( nchan_transport == 1 ) { @@ -187,7 +211,7 @@ void generate_gridEq( 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 int32_t ivas_total_brate, /* i : IVAS total bitrate */ const int16_t nchan_transport, /* i : number of transport channels (mono/stereo) */ const uint8_t isMcMasa /* i : toggle for selecting mcMASA specific config */ ) @@ -225,8 +249,14 @@ void ivas_masa_set_coding_config( if ( ivas_total_brate <= ivas_brate_tbl[i + SIZE_IVAS_BRATE_TBL - IVAS_NUM_ACTIVE_BRATES] ) { int16_t idx_bands; + if ( ivas_total_brate < IVAS_48k && nchan_transport == 2 && i > 3 ) + { + /* because it uses the bitallocation for the lower bit rates from 'masa_bits_LR_stereo' and it has 4 elements */ + i = 3; + } idx_bands = i; + if ( config->numberOfDirections > 1 ) { nTwoDirBands = config->joinedSubframes ? masa_twodir_bands_joined[i] : masa_twodir_bands[i]; @@ -768,3 +798,205 @@ void deindex_sph_idx( return; } + + +/*--------------------------------------------------------------- + * valid_ratio_index() + * + * Checking validity of the index of an ISM ratio index vector, + * within the indexing function. + *---------------------------------------------------------------*/ + +/*! 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 */ +) +{ + int16_t out; + int16_t i, sum, elem; + int16_t base[4]; + + sum = 0; + set_s( base, 1, len ); + + + for ( i = 1; i < len; i++ ) + { + base[i] = base[i - 1] * 10; + } + sum = 0; + for ( i = len - 1; i >= 0; i-- ) + { + elem = index / base[i]; + sum += elem; + index -= elem * base[i]; + } + if ( sum <= K ) + { + out = 1; + } + else + { + out = 0; + } + + return out; +} + + +/*--------------------------------------------------------------- + * reconstruct_ism_ratios() + * + * Obtains ISM ratio values from the quantized indexes + *---------------------------------------------------------------*/ + +void reconstruct_ism_ratios( + int16_t *ratio_ism_idx, /* i : index vector */ + const int16_t nchan_ism, /* i : number of components/objects */ + const float step, /* i : quantization step */ + float *q_energy_ratio_ism /* o : reconstructed ISM values */ +) +{ + int16_t i; + float sum; + + sum = 0; + for ( i = 0; i < nchan_ism - 1; i++ ) + { + q_energy_ratio_ism[i] = ratio_ism_idx[i] * step; + sum += q_energy_ratio_ism[i]; + } + + q_energy_ratio_ism[nchan_ism - 1] = 1.0f - sum; + + if ( q_energy_ratio_ism[nchan_ism - 1] < 0 ) + { + q_energy_ratio_ism[nchan_ism - 1] = 0.0f; + } + + return; +} + + +/*--------------------------------------------------------------- + * ivas_omasa_modify_masa_energy_ratios() + * + * Updates energy ratios by taking into account the MASA content contribution + * to the total audio scene + *---------------------------------------------------------------*/ + +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] ) +{ + int16_t i, m, d, b; + + for ( m = 0; m < MAX_PARAM_SPATIAL_SUBFRAMES; m++ ) + { + if ( hQMetaData->q_direction[0].cfg.nblocks == 1 ) + { + i = 0; + } + else + { + i = m; + } + + for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) + { + for ( d = 0; d < hQMetaData->no_directions; d++ ) + { + hQMetaData->q_direction[d].band_data[b].energy_ratio[m] = hQMetaData->q_direction[d].band_data[b].energy_ratio[m] * masa_to_total_energy_ratio[i][b]; + } + } + } + + return; +} + + +/*--------------------------------------------------------------- + * distribute_evenly_ism() + * + * Obtain ISM ratio indexes for even content distribution bbetween objects + *---------------------------------------------------------------*/ + +void distribute_evenly_ism( + int16_t *idx, /* o : index values */ + const int16_t K, /* i : sum of indexes */ + const int16_t nchan_ism /* i : number of objects */ +) +{ + int16_t i; + int16_t sum; + + sum = 0; + for ( i = 0; i < nchan_ism; i++ ) + { + idx[i] = (int16_t) ( K / nchan_ism ); + sum += idx[i]; + } + + assert( sum <= K ); + + i = 0; + while ( sum < K ) + { + if ( i == nchan_ism ) + { + i = 0; + } + idx[i]++; + sum++; + i++; + } + + return; +} + + +/*--------------------------------------------------------------- + * calculate_cpe_brate_MASA_ISM() + * + * Calculates bitrate for MASA_ISM mode that is not used for separated objects, + * * but for the CPE part (metadata included) + *---------------------------------------------------------------*/ + +/*! 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 */ +) +{ + int32_t cpe_brate; + int16_t k, sce_id; + + k = 0; + while ( k < SIZE_IVAS_BRATE_TBL && ivas_total_brate != ivas_brate_tbl[k] ) + { + k++; + } + + if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + cpe_brate = ivas_total_brate - sep_object_brate[k - 2][0]; /* take data from the first column */ + } + else if ( ism_mode == ISM_MASA_MODE_DISC ) + { + cpe_brate = ivas_total_brate; + + for ( sce_id = 0; sce_id < nchan_ism; sce_id++ ) + { + cpe_brate -= sep_object_brate[k - 2][nchan_ism - 1]; + } + } + else + { + cpe_brate = ivas_total_brate; + } + + return cpe_brate; +} diff --git a/lib_com/ivas_mcmasa_com.c b/lib_com/ivas_mcmasa_com.c index 1b7db4ff01a7c1426c65eb74c0cba4ab76cc8eaa..7e81e1fd1cd8317beeb8c359c34433a113896e02 100644 --- a/lib_com/ivas_mcmasa_com.c +++ b/lib_com/ivas_mcmasa_com.c @@ -101,7 +101,7 @@ void ivas_mcmasa_set_separate_channel_mode( 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 int32_t ivas_total_brate, /* i : IVAS 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 */ diff --git a/lib_com/ivas_omasa_com.c b/lib_com/ivas_omasa_com.c new file mode 100644 index 0000000000000000000000000000000000000000..14236c919d4333b73e8e9100a0fb7ccb9b89b347 --- /dev/null +++ b/lib_com/ivas_omasa_com.c @@ -0,0 +1,554 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include "ivas_cnst.h" +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_rom_com.h" +#include +#ifdef DEBUGGING +#include "debug.h" +#endif + +/*--------------------------------------------------------------- + * Local constants + *---------------------------------------------------------------*/ + +#define GAMMA_ISM_LOW_IMP 0.8f +#define GAMMA_ISM_MEDIUM_IMP 1.2f +#define GAMMA_ISM_HIGH_IMP 1.4f + +#define GAMMA_ISM_LOW_IMP2 0.9f +#define GAMMA_ISM_MEDIUM_IMP2 1.2f +#define GAMMA_ISM_HIGH_IMP2 1.35f + +#define GAMMA_ISM_LOW_IMP3 0.85f +#define GAMMA_ISM_MEDIUM_IMP3 1.15f +#define GAMMA_ISM_HIGH_IMP3 1.3f + +#define GAMMA_ISM_LOW_IMP4 0.8f +#define GAMMA_ISM_MEDIUM_IMP4 1.0f +#define GAMMA_ISM_HIGH_IMP4 1.2f + + +/*--------------------------------------------------------------- + * ivas_omasa_ism_mode_select() + * + * selects the ISM mode base on IVAS total bit-rate and + * the number of objects in the combined ISM MASA format mode + * ---------------------------------------------------------------*/ + +/*! r : ISM format mode */ +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 */ +) +{ + ISM_MODE ism_mode = ISM_MODE_NONE; + + switch ( nchan_ism ) + { + case 1: + if ( ivas_total_brate >= IVAS_24k4 ) + { + ism_mode = ISM_MASA_MODE_DISC; + } + else + { + ism_mode = ISM_MODE_NONE; + } + break; + case 2: + if ( ivas_total_brate >= IVAS_48k ) + { + ism_mode = ISM_MASA_MODE_DISC; + } + else if ( ivas_total_brate >= IVAS_32k ) + { + ism_mode = ISM_MASA_MODE_PARAM_ONE_OBJ; + } + else + { + ism_mode = ISM_MODE_NONE; + } + break; + case 3: + if ( ivas_total_brate >= IVAS_96k ) + { + ism_mode = ISM_MASA_MODE_DISC; + } + else if ( ivas_total_brate >= IVAS_64k ) + { + ism_mode = ISM_MASA_MODE_PARAM_ONE_OBJ; + } + else if ( ivas_total_brate >= IVAS_32k ) + { + ism_mode = ISM_MASA_MODE_MASA_ONE_OBJ; + } + else + { + ism_mode = ISM_MODE_NONE; + } + break; + case 4: + if ( ivas_total_brate >= IVAS_128k ) + { + ism_mode = ISM_MASA_MODE_DISC; + } + else if ( ivas_total_brate >= IVAS_64k ) + { + ism_mode = ISM_MASA_MODE_PARAM_ONE_OBJ; + } + else if ( ivas_total_brate >= IVAS_32k ) + { + ism_mode = ISM_MASA_MODE_MASA_ONE_OBJ; + } + else + { + ism_mode = ISM_MODE_NONE; + } + break; + } + + return ism_mode; +} + + +/*--------------------------------------------------------------- + * ivas_set_omasa_TC() + * + * set number of transport channels in OMASA format + * ---------------------------------------------------------------*/ + +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 */ +) +{ + switch ( ism_mode ) + { + case ISM_MASA_MODE_MASA_ONE_OBJ: + case ISM_MASA_MODE_PARAM_ONE_OBJ: + *nCPE = 1; + *nSCE = 1; + break; + case ISM_MASA_MODE_DISC: + *nCPE = 1; + *nSCE = nchan_ism; + break; + case ISM_MODE_NONE: + *nCPE = 1; + *nSCE = 0; + break; + default: + break; + } + + return; +} + + +/*--------------------------------------------------------------- + * ivas_interformat_brate() + * + * Bit-budget distribution in case of combined-format coding + * ---------------------------------------------------------------*/ + +/*! 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 */ +) +{ + int32_t element_brate_out; + int16_t nBits, limit_low, limit_high; + + nBits = (int16_t) ( element_brate / FRAMES_PER_SEC ); + + if ( ism_imp == ISM_INACTIVE_IMP ) + { + nBits = BITS_ISM_INACTIVE; + } + else + { + if ( ism_mode == ISM_MASA_MODE_DISC && ( ( nchan_ism == 4 && element_brate == 24000 ) || ( nchan_ism == 3 && element_brate <= 24000 ) || ( nchan_ism == 2 && element_brate <= 11000 ) ) ) /* for border case in DISC mode */ + { + if ( limit_flag == 1 && ( ( nchan_ism == 4 && element_brate == 24000 ) || ( nchan_ism == 3 && element_brate == 20000 ) || ( nchan_ism == 2 && element_brate <= 11000 ) ) ) + { + return element_brate; + } + + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP4 ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP4 ); + if ( limit_flag == -1 ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP4 ); + } + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP4 ); + if ( limit_flag == -1 ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP4 ); + } + } + } + else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || + ( ism_mode == ISM_MASA_MODE_DISC && element_brate == 9600 ) /* this condition corresponds to the ivas_total_brate = 24400 and 1 object */ + ) + { + if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && element_brate == IVAS_13k2 ) + { + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP3 ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP3 ); + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP4 ); + } + } + else + { + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP3 ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP3 ); + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP3 ); + } + } + } + else if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ && element_brate == 16000 ) + { + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP ); + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP3 ); + } + } + else + { + if ( ism_imp == ISM_LOW_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_LOW_IMP ); + } + else if ( ism_imp == ISM_MEDIUM_IMP ) + { + nBits = (int16_t) ( nBits * GAMMA_ISM_MEDIUM_IMP ); + } + else /* ISM_HIGH_IMP */ + { + nBits = (int16_t) ( nBits * GAMMA_ISM_HIGH_IMP ); + } + } + } + + limit_low = MIN_BRATE_SWB_BWE / FRAMES_PER_SEC; + if ( ism_imp == ISM_INACTIVE_IMP ) + { + limit_low = BITS_ISM_INACTIVE; + } + else if ( element_brate >= SCE_CORE_16k_LOW_LIMIT ) + { + limit_low = SCE_CORE_16k_LOW_LIMIT / FRAMES_PER_SEC; + } + + limit_high = IVAS_512k / FRAMES_PER_SEC; + if ( element_brate < SCE_CORE_16k_LOW_LIMIT ) + { + limit_high = ACELP_12k8_HIGH_LIMIT / FRAMES_PER_SEC; + } + + nBits = check_bounds_s( nBits, limit_low, limit_high ); + + element_brate_out = nBits * FRAMES_PER_SEC; + + return element_brate_out; +} + + +/*--------------------------------------------------------------- + * ivas_combined_format_brate_sanity() + * + * Sanity check in combined format coding + * ---------------------------------------------------------------*/ + +void ivas_combined_format_brate_sanity( + const int32_t element_brate, /* i : element bitrate */ + const int16_t core, /* i : core */ + int32_t *core_brate, /* i/o: core bitrate */ + int16_t *diff_nBits /* o : number of differential bits */ +) +{ + int16_t limit_high, nBits; + + /* sanity check: at lowest IVAS bit-rates and one ISM channel coded by + low-rate core-coder mode, it can happen that the CPE (MASA) bit-budget + for ACELP core-coding @12.8 kHz is too high */ + + if ( element_brate < ACELP_12k8_HIGH_LIMIT ) + { + limit_high = ACELP_12k8_HIGH_LIMIT / FRAMES_PER_SEC; + nBits = (int16_t) ( *core_brate / FRAMES_PER_SEC ); + + *diff_nBits = nBits - limit_high; + if ( *diff_nBits > 0 ) + { + if ( core == TCX_20_CORE || core == TCX_10_CORE ) + { + *diff_nBits = 0; + } + else /* ACELP core */ + { + *core_brate -= ( *diff_nBits * FRAMES_PER_SEC ); + } + } + } + + return; +} + + +/*--------------------------------------------------------------- + * bits_index_ism_ratio() + * + * + * ---------------------------------------------------------------*/ + +/*!r : number of bits for ISM ratio index */ +int16_t bits_index_ism_ratio( + const int16_t nchan_ism /* i : number of objects */ +) +{ + int16_t bits_index; + + bits_index = 0; + if ( nchan_ism == 2 ) + { + bits_index = 3; + } + else if ( nchan_ism == 3 ) + { + bits_index = 6; + } + else if ( nchan_ism == 4 ) + { + bits_index = 7; + } + else + { + assert( ( nchan_ism >= 2 && nchan_ism <= 4 ) && "Wrong number of objects for MASA_ISM." ); + } + + return bits_index; +} + + +/*--------------------------------------------------------------- + * calculate_nbits_meta() + * + * + * ---------------------------------------------------------------*/ + +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 ) +{ + int16_t sf, band, obj; + float priority[MAX_NUM_OBJECTS], max_p; + + if ( nchan_ism > 1 ) + { + set_f( priority, 0.0f, nchan_ism ); + for ( sf = 0; sf < numSf; sf++ ) + { + for ( band = 0; band < numCodingBands; band++ ) + { + for ( obj = 0; obj < nchan_ism; obj++ ) + { + priority[obj] = max( priority[obj], ( q_energy_ratio_ism[sf][band][obj] * ( 1 - masa_to_total_energy_ratio[sf][band] ) ) ); + } + } + } + } + else + { + priority[0] = 1; + } + + /* decide parameters for ISM metadata quantization */ + maximum( priority, nchan_ism, &max_p ); + for ( obj = 0; obj < nchan_ism; obj++ ) + { + if ( obj == idx_sep_obj ) + { + if ( ism_imp == 3 ) + { + priority[obj] = 1; + } + else if ( ism_imp == 2 ) + { + priority[obj] = ( 1 + max_p ) * 0.5f; + } + else + { + priority[obj] = max_p; + } + } + bits_ism[obj] = bits_direction_masa[0] - (int16_t) ( ( 1 - ( (int16_t) ( priority[obj] * 1000.0f ) ) * 0.001f ) * 6 ); + } + + return; +} + + +/*--------------------------------------------------------------- + * ivas_get_stereo_panning_gains() + * + * + *---------------------------------------------------------------*/ + +void ivas_get_stereo_panning_gains( + const float aziDeg, + const float eleDeg, + float panningGains[2] ) +{ + float aziRad, eleRad; + float y, mappedX, aziRadMapped, A, A2, A3; + const float LsAngleRad = 30.0f * PI_OVER_180; + /* Convert azi and ele to an azi value of the cone of confusion */ + aziRad = aziDeg * PI_OVER_180; + eleRad = eleDeg * PI_OVER_180; + y = ( sinf( aziRad ) * cosf( eleRad ) ); + mappedX = sqrtf( max( 0.0f, 1.0f - ( y * y ) ) ); + aziRadMapped = atan2f( y, mappedX ); + + if ( aziRadMapped >= LsAngleRad ) + { /* Left side */ + panningGains[0] = 1.0f; + panningGains[1] = 0.0f; + } + else if ( aziRadMapped <= -LsAngleRad ) + { /* Right side */ + panningGains[0] = 0.0f; + panningGains[1] = 1.0f; + } + else /* Tangent panning law */ + { + A = tanf( aziRadMapped ) / tanf( LsAngleRad ); + A2 = ( A - 1.0f ) / max( 0.001f, A + 1.0f ); + A3 = 1.0f / ( A2 * A2 + 1.0f ); + panningGains[0] = sqrtf( A3 ); + panningGains[1] = sqrtf( 1.0f - A3 ); + } + + return; +} + + +/*--------------------------------------------------------------- + * calculate_brate_limit_flag() + * + * + *---------------------------------------------------------------*/ + +/*! 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 */ +) +{ + int16_t n; + int16_t brate_limit_flag; + int16_t nzeros; + + brate_limit_flag = 0; + nzeros = 0; + for ( n = 0; n < nchan_ism; n++ ) + { + brate_limit_flag += ism_imp[n]; + if ( ism_imp[n] == 0 ) + { + nzeros++; + } + } + + if ( brate_limit_flag >= (int16_t) ( nchan_ism * 2.5f ) ) + { + brate_limit_flag = 1; + } + else + { + if ( nzeros / (float) nchan_ism >= 0.5f ) + { + brate_limit_flag = -1; /* there is no limitation, on the contrary */ + } + } + + return brate_limit_flag; +} diff --git a/lib_com/ivas_prot.h b/lib_com/ivas_prot.h old mode 100644 new mode 100755 index 9bc253776da52a8e80ea43224cf48643136b72d4..a9fba371abcdd13fcdd6dae9f62a6aee63ccc75b --- a/lib_com/ivas_prot.h +++ b/lib_com/ivas_prot.h @@ -107,16 +107,10 @@ ivas_error mct_enc_reconfigure( const uint16_t b_nchan_change /* i : flag indicating different channel count */ ); -ivas_error ivas_spar_md_enc_init -( - ivas_spar_md_enc_state_t *hMdEnc, /* o : MD encoder handle */ - const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ - const int16_t sba_order /* i : Ambisonic (SBA) order */ -); - ivas_error ivas_sba_enc_reconfigure( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ ); + /*! r: maximum SBA metadata bit-budget */ int16_t ivas_sba_get_max_md_bits( Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ @@ -163,7 +157,7 @@ ivas_error ivas_cpe_enc( ivas_error ivas_mct_enc( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data[MCT_MAX_CHANNELS][L_FRAME48k], /* i : input signals */ + 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 */ ); @@ -305,15 +299,31 @@ void stereo_dmx_evs_close_encoder( STEREO_DMX_EVS_ENC_HANDLE *hStereoDmxEVS /* i/o: Stereo downmix for EVS encoder handle */ ); +#if !defined(API_5MS) || defined (API_5MS_BASELINE) ivas_error ivas_dec( Decoder_Struct *st_ivas, /* i : IVAS decoder structure */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else int16_t *data /* o : output synthesis signal */ +#endif +#if defined SPLIT_REND_WITH_HEAD_ROT && !defined(API_5MS) + , + uint8_t *splitRendBitsBuf /* o : output split rendering bits */ +#endif ); +#endif ivas_error ivas_dec_setup( 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 : flushed PCM samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ); ivas_error create_sce_dec( @@ -367,7 +377,7 @@ ivas_error ivas_hp20_dec_reconfig( 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][L_FRAME48k], /* o : output synthesis signal */ + 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 */ ); @@ -375,14 +385,14 @@ ivas_error ivas_sce_dec( 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][L_FRAME48k], /* o : output synthesis signal */ + 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[][L_FRAME48k], /* o : output synthesis signal */ + 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 */ ); @@ -443,7 +453,7 @@ ivas_error ivas_core_dec( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ const int16_t n_channels, /* i : number of channels to be decoded */ - float output[CPE_CHANNELS][L_FRAME48k], /* o : output synthesis signal */ + float *output[CPE_CHANNELS], /* o : output synthesis signal */ float outputHB[CPE_CHANNELS][L_FRAME48k], /* o : output HB synthesis signal */ float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */ const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ @@ -482,7 +492,7 @@ void decod_gen_2sbfr( 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][L_FRAME48k], /* i/o: output synthesis signal */ + 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 */ ); @@ -636,7 +646,7 @@ void ivas_post_proc( 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][L_FRAME48k], /* 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 */ ); @@ -653,7 +663,12 @@ 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 : flushed samples (JBM) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ); /*! r: MC format mode (MCT, McMASA, ParamMC) */ @@ -679,7 +694,7 @@ MC_LS_SETUP ivas_mc_map_output_config_to_mc_ls_setup( void smooth_dft2td_transition( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: synthesis @external Fs */ + float *output[CPE_CHANNELS], /* i/o: synthesis @external Fs */ const int16_t output_frame /* i : output frame length */ ); @@ -768,7 +783,12 @@ ivas_error ivas_jbm_dec_render( const uint16_t nSamplesAsked, /* i : number of samples wanted */ uint16_t *nSamplesRendered, /* o : number of samples rendered */ uint16_t *nSamplesAvailableNext, /* o : number of samples still available in the rendering pipeline */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else int16_t *data /* o : output synthesis signal */ +#endif ); ivas_error ivas_jbm_dec_flush_renderer( @@ -780,7 +800,12 @@ ivas_error ivas_jbm_dec_flush_renderer( 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 : rendered samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ); ivas_error ivas_jbm_dec_feed_tc_to_renderer( @@ -819,16 +844,20 @@ int16_t ivas_jbm_dec_get_num_tc_channels( Decoder_Struct *st_ivas /* i : IVAS decoder handle */ ); -#ifdef FIX_470_MASA_JBM_EXT +#ifdef API_5MS +void ivas_jbm_dec_copy_tc_no_tsm( + Decoder_Struct *st_ivas, + float *tc[], + const int16_t output_frame ); +#endif + void ivas_jbm_dec_get_md_map_even_spacing( - const int16_t default_len, /* i : default frame length in metadata slots */ const int16_t len, /* i : length of the modfied frames in metadata slots */ const int16_t subframe_len, /* i : default length of a subframe */ const int16_t offset, /* i : current read offset into the md buffer */ const int16_t buf_len, /* i : length of the metadata buffer */ int16_t *map /* o : metadata index map */ ); -#endif TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( Decoder_Struct *st_ivas /* i : IVAS decoder handle */ @@ -837,7 +866,9 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( /*! r: render granularity */ int16_t ivas_jbm_dec_get_render_granularity( const RENDERER_TYPE rendererType, /* i : renderer type */ - const int32_t output_Fs /* i : sampling rate */ + 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( @@ -866,7 +897,6 @@ void ivas_jbm_dec_td_renderers_adapt_subframes( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); -#ifdef FIX_470_MASA_JBM_EXT ivas_error ivas_jbm_dec_metadata_open( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); @@ -874,7 +904,6 @@ ivas_error ivas_jbm_dec_metadata_open( void ivas_jbm_masa_sf_to_sf_map( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ); -#endif /*----------------------------------------------------------------------------------* @@ -891,7 +920,14 @@ ivas_error ivas_ism_config( const int16_t ism_imp[], /* i : ISM importance flags */ int32_t element_brate[], /* o : element bitrate per object */ int32_t total_brate[], /* o : total bitrate per object */ - int16_t nb_bits_metadata[] /* i/o: number of metadata bits */ + int16_t nb_bits_metadata[], /* i/o: number of metadata bits */ + const int16_t combined_format_flag /* i : flag indicating combined format */ +); + +void bitbudget_to_brate( + const int16_t x[], /* i : bitbudgets */ + int32_t y[], /* o : bitrates */ + const int16_t N /* i : number of entries to be converted */ ); void ivas_ism_reset_metadata( @@ -945,13 +981,14 @@ ivas_error ivas_ism_metadata_dec_create( ivas_error ivas_ism_enc( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data[MAX_NUM_OBJECTS][L_FRAME48k], /* i : input signal */ + float *data[MAX_NUM_OBJECTS], /* i : input signal */ const int16_t input_frame, /* i : input frame length per channel */ - int16_t *nb_bits_metadata /* i : number of metadata bits */ + 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_enc( - const int32_t ism_total_brate, /* i : ISM total bitrate */ + int32_t *ism_total_brate, /* i/o: ISM total bitrate */ const int16_t nchan_ism, /* i : number of ISM channels */ const int16_t nchan_transport, /* i : number of transport channels */ ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ @@ -961,7 +998,11 @@ ivas_error ivas_ism_metadata_enc( const int16_t localVAD[], /* i : VAD flag */ const int16_t ism_mode, /* i : ISM mode */ const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Config Handle */ - const int16_t ism_extended_metadata_flag /* i : Extended metadata flag */ + const int16_t ism_extended_metadata_flag, /* i : Extended metadata flag */ + const float lp_noise_CPE, /* i : LP filtered total noise estimation */ + const int16_t flag_omasa_ener_brate, /* i : less bitrate for objects in OMASA flag */ + int16_t *omasa_stereo_sw_cnt, + const int16_t ini_frame ); ivas_error ivas_ism_metadata_dec( @@ -976,7 +1017,8 @@ ivas_error ivas_ism_metadata_dec( 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 */ + int16_t *ism_extmeta_cnt, /* i/o: Number of change frames observed */ + DEC_CORE_HANDLE st0 /* i : core-coder handle */ ); @@ -996,7 +1038,7 @@ ivas_error ivas_param_ism_enc_open( void ivas_param_ism_enc( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data[MAX_NUM_OBJECTS][L_FRAME48k], /* i : input signal */ + float *data[MAX_NUM_OBJECTS], /* i : input signal */ const int16_t input_frame /* i : input frame length per channel */ ); @@ -1006,12 +1048,13 @@ void ivas_param_ism_enc_close( ); void ivas_ism_metadata_close( - ISM_METADATA_HANDLE hIsmMetaData[] /* i/o : object metadata handles */ + ISM_METADATA_HANDLE hIsmMetaData[], /* i/o : object metadata handles */ + const int16_t first_idx /* i : index of first handle to deallocate */ ); void ivas_param_ism_stereo_dmx( Encoder_Struct *st_ivas, /* i : IVAS encoder structure */ - float data[MAX_NUM_OBJECTS][L_FRAME48k], /* i/o: input signal/stereo dmx */ + float *data[MAX_NUM_OBJECTS], /* i/o: input signal/stereo dmx */ const int16_t input_frame /* i : Length of input frame */ ); @@ -1028,7 +1071,12 @@ ivas_error ivas_ism_dec_config( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const ISM_MODE last_ism_mode, /* i/o: last ISM mode */ uint16_t *nSamplesRendered, /* o : number of samples flushed on renderer change*/ - int16_t *data /* o : flushed PCM samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ); ivas_error ivas_param_ism_dec_open( @@ -1037,12 +1085,13 @@ ivas_error ivas_param_ism_dec_open( void ivas_param_ism_dec_close( DIRAC_DEC_HANDLE *hDirAC, /* i/o: decoder DirAC handle */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out, /* i/o: common spatial renderer data */ const AUDIO_CONFIG output_config /* i : output audio configuration */ ); void ivas_param_ism_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output */ + float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ ); void ivas_ism_dec_digest_tc( @@ -1055,6 +1104,15 @@ void ivas_param_ism_dec_digest_tc( float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ ); +#ifdef API_5MS +void ivas_ism_param_dec_tc_gain_ajust( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nSamples, /* i : number of samples to be compensate */ + const uint16_t nFadeLength, /* i : length of the crossfade in samples */ + float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ +); +#endif + 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 */ @@ -1154,6 +1212,13 @@ void ivas_get_ism_sid_quan_bitbudget( int16_t *nBits_sce_id /* o : number of Q bits for sce_id_dtx */ ); +#ifdef CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE +void ivas_ism_dtx_limit_noise_energy_for_near_silence( + SCE_DEC_HANDLE hSCE[], /* i/o: SCE encoder structures */ + const int16_t sce_id_dtx, /* i : SCE DTX ID */ + const int16_t nchan_transport /* i : number of transport channels */ +); +#endif /*----------------------------------------------------------------------------------* * DFT Stereo prototypes @@ -1778,13 +1843,13 @@ void stereo_tca_init_dec( void stereo_tca_dec( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float synth[CPE_CHANNELS][L_FRAME48k], /* i/o: output synth */ + 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[L_FRAME48k], /* i/o: output synthesis, R channel */ + float *output, /* i/o: output synthesis, R channel */ const int16_t output_frame /* i : frame length */ ); @@ -1840,7 +1905,7 @@ void stereo_icBWE_dec( void stereo_icBWE_decproc( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: output symthesis */ + 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 */ @@ -1916,7 +1981,9 @@ void stereo_tdm_prep_dwnmx ( const float *input1, /* i : right channel input */ const int16_t input_frame /* i : frame lenght */ ); + int16_t stereo_tdm_ener_analysis( + const int16_t ivas_format, /* i : IVAS format */ CPE_ENC_HANDLE hCPE, /* i : CPE structure */ const int16_t input_frame, /* i : Number of samples */ int16_t *tdm_SM_or_LRTD_Pri, /* o : channel combination scheme flag in TD stereo OR LRTD primary channel */ @@ -1939,6 +2006,8 @@ void stereo_td_init_dec( ); 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 */ @@ -1988,6 +2057,8 @@ void tdm_ol_pitch_comparison( ); 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 */ @@ -2004,6 +2075,8 @@ ivas_error signaling_enc_secondary( ); 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 */ @@ -2472,7 +2545,7 @@ void stereo_decoder_tcx( 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][L_FRAME48k], /* o : synthesis @internal_FS */ + float *signal_out[CPE_CHANNELS], /* o : synthesis @internal_FS */ float signal_outFB[CPE_CHANNELS][L_FRAME48k] /* o : synthesis @output_FS */ ); @@ -2595,7 +2668,7 @@ void sns_avq_dec( 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, + 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) */ ); @@ -2640,13 +2713,13 @@ void synchonize_channels_mdct_sid( void updateBuffersForDmxMdctStereo( CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */ const int16_t output_frame, /* i : output frame length */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: decoder output */ + 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][L_FRAME48k], /* o : output from core decoder */ + float *output[CPE_CHANNELS], /* o : output from core decoder */ const int16_t output_frame /* i : output frame length */ ); @@ -2713,7 +2786,7 @@ void stereo_cng_init_dec( ); void stereo_cng_compute_PScorr( - float output[CPE_CHANNELS][L_FRAME48k], /* i : Output signal */ + 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 */ @@ -2726,7 +2799,7 @@ void stereo_cng_dec_update( void stereo_cna_update_params( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i : Output signal */ + 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 */ ); @@ -3044,7 +3117,7 @@ void ivas_mct_core_dec( 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 */ - float signal_out[][L_FRAME48k] /* o : synthesis @internal_FS */ + float *signal_out[] /* o : synthesis @internal_FS */ ); void ivas_mct_dec_mct( @@ -3162,8 +3235,9 @@ int16_t ivas_qmetadata_dec_sid_decode( void ivas_qmetadata_to_dirac( const IVAS_QMETADATA_HANDLE hQMetaData, /* i : frame of MASA q_metadata */ - DIRAC_DEC_HANDLE hDirAC, /* o : DirAC decoder structure */ + DIRAC_DEC_HANDLE hDirAC, /* i : DirAC decoder structure */ MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ const int32_t ivas_total_brate, /* i : IVAS total bitrate */ const IVAS_FORMAT ivas_format, /* i : IVAS format */ const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ @@ -3358,13 +3432,15 @@ void ivas_dirac_param_est_enc( DIRAC_ENC_HANDLE hDirAC, IVAS_QDIRECTION *q_direction, const uint8_t useLowerRes, - float data_f[][L_FRAME48k], + float *data_f[], float **pp_fr_real, float **pp_fr_imag, const int16_t input_frame, const IVAS_FORMAT ivas_format , - const int16_t hodirac_flag, - const int16_t nchan_fb_in + const int16_t hodirac_flag, + const int16_t nchan_fb_in, + int16_t *mono_frame_count, + int16_t *dirac_mono_flag ); @@ -3447,27 +3523,28 @@ void ivas_sba_get_spar_hoa_md_flag( ); void ivas_sba_zero_vert_comp( - float sba_data[][L_FRAME48k], /* i/o: SBA data frame */ + float *sba_data[], /* i : SBA signals */ const int16_t sba_order, /* i : Ambisonic (SBA) order */ const int16_t sba_planar, /* i : SBA planar flag */ const int16_t input_frame /* i : input frame length */ ); void ivas_sba_getTCs( - float sba_data[][L_FRAME48k], /* i : SBA signals */ + float *sba_data[], /* i : SBA signals */ Encoder_Struct *st_ivas, /* i/o: Encoder struct */ const int16_t input_frame /* i : frame length */ ); +/*! r: SBA DirAC stereo flag */ int16_t ivas_sba_remapTCs( - float sba_data[][L_FRAME48k], /* i/o: SBA signals */ + 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][L_FRAME48k], /* o : output synthesis signal */ + 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 */ ); @@ -3526,7 +3603,7 @@ void ivas_dirac_enc( DIRAC_ENC_HANDLE hDirAC, /* i/o: encoder DirAC handle */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */ - float data_f[][L_FRAME48k], /* i/o: SBA channels */ + float *data_f[], /* i/o: SBA channels */ float **ppIn_FR_real, /* o : real freq domain values */ float **ppIn_FR_imag, /* o : imag freq domain values */ const int16_t input_frame, /* i : input frame length */ @@ -3534,6 +3611,7 @@ void ivas_dirac_enc( const IVAS_FORMAT ivas_format, /* i : ivas format */ int16_t hodirac_flag /* i : hodirac flag */ ); + 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 */ @@ -3565,35 +3643,23 @@ ivas_error ivas_dirac_sba_config( const int16_t nbands /* i : number of frequency bands */ ); -ivas_error ivas_dirac_dec_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ -); - -ivas_error ivas_dirac_allocate_parameters( - DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ - const int16_t params_flag /* i : set of parameters flag */ -); - 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 /* i/o: decoder DirAC handle */ -); - -void ivas_dirac_deallocate_parameters( - DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ - const int16_t params_flag /* i : set of parameters flag */ + 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 */ ); @@ -3612,8 +3678,11 @@ void ivas_dirac_dec_set_md_map( void ivas_dirac_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ + float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t nchan_transport /* i : number of transport channels */ +#ifdef API_5MS + ,const int16_t num_subframes /* i : number of subframes to render */ +#endif ); void ivas_dirac_dec_render( @@ -3642,12 +3711,6 @@ ivas_error ivas_td_decorr_reconfig_dec( uint16_t *useTdDecorr /* i/o: TD decorrelator flag */ ); -/*! r: Configured reqularization factor value */ -float configure_reqularization_factor( - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const int32_t ivas_total_brate /* i : total IVAS bitrate */ -); - void computeDiffuseness_mdft( float **buffer_intensity[DIRAC_NUM_DIMS], const float *buffer_energy, @@ -3674,109 +3737,6 @@ void computeDiffuseness( float *diffuseness ); -ivas_error ivas_dirac_dec_onset_detection_open( - const int16_t num_channels, - const int16_t num_freq_bands, - const int16_t max_band_decorr, - DIRAC_ONSET_DETECTION_PARAMS *ph_dirac_onset_detection_params, - DIRAC_ONSET_DETECTION_STATE *ph_dirac_onset_detection_state -); - -void ivas_dirac_dec_onset_detection_process( - const float *input_power_f, - float *onset_filter, - const int16_t num_protos_diff, - DIRAC_ONSET_DETECTION_PARAMS h_dirac_onset_detection_params, - DIRAC_ONSET_DETECTION_STATE h_dirac_onset_detection_state -); - -ivas_error ivas_dirac_dec_decorr_open( - DIRAC_DECORR_PARAMS **ph_freq_domain_decorr_ap_params, - DIRAC_DECORR_STATE **ph_freq_domain_decorr_ap_state, - const int16_t num_freq_bands, - int16_t num_outputs_diff, - const int16_t num_protos_diff, - const DIRAC_SYNTHESIS_CONFIG synthesisConf, - float *frequency_axis, - const int16_t nchan_transport, /* i : number of transport channels */ - const int32_t output_Fs /* i : output sampling rate */ -); - -void ivas_dirac_dec_decorr_process( - const int16_t num_freq_bands, - int16_t num_channels, - const int16_t num_protos_diff, - const DIRAC_SYNTHESIS_CONFIG synthesisConf, - const int16_t nchan_transport, /* i : number of transport channels */ - const float *input_frame_f, - const int16_t num_protos_dir, - const int16_t *proto_index_dir, - float *frame_dec_f, - float *onset_filter, - HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params, - HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state -); - -void ivas_dirac_dec_decorr_close( - HANDLE_DIRAC_DECORR_PARAMS *ph_dirac_decorr_params, - HANDLE_DIRAC_DECORR_STATE *ph_dirac_decorr_state -); - -ivas_error ivas_dirac_dec_output_synthesis_open( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const RENDERER_TYPE renderer_type, /* i : renderer type */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int32_t output_Fs /* i : output sampling rate */ - , - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -void ivas_dirac_dec_output_synthesis_init( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const int16_t nchan_out_woLFE, /* i : number of output audio channels without LFE */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -void ivas_dirac_dec_output_synthesis_close( - DIRAC_DEC_HANDLE hDirAC /* i/o: DirAC handle */ -); - -void ivas_dirac_dec_output_synthesis_process_slot( - const float *reference_power, /* i : Estimated power */ - const float *onset, /* i : onset filter */ - const int16_t *azimuth, - const int16_t *elevation, - const float *diffuseness, - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const int16_t sh_rot_max_order, - const float *p_Rmat, /* i : rotation matrix */ - const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ - const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int16_t ind_slot, /* i : index of the slot to be added to the input covariance */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( - 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 */ - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int16_t nbslots, /* i : number of slots to process */ - const float *onset_filter, - float *diffuseness, - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( - 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 */ - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const int16_t nbslots, /* i : number of slots to process */ - float *diffuseness_vector, /* i : diffuseness (needed for direction smoothing)*/ - float *reference_power_smooth, - float qualityBasedSmFactor -); void ivas_dirac_dec_get_response( const int16_t azimuth, @@ -3785,50 +3745,8 @@ void ivas_dirac_dec_get_response( const int16_t ambisonics_order ); -void compute_hoa_encoder_mtx( - const float *azimuth, - const float *elevation, - float *response, - const int16_t num_responses, - const int16_t ambisonics_order ); - -void ivas_dirac_dec_compute_gain_factors( - const int16_t num_freq_bands, - const float *diffuseness, - const int16_t max_band_decorr, - float *direct_gain_factor, - float *diffuse_gain_factor -); - -void ivas_dirac_dec_compute_power_factors( - const int16_t num_freq_bands, - const float *diffuseness, - const int16_t max_band_decorr, - float *direct_power_factor, - float *diffuse_power_factor -); - -void ivas_dirac_dec_compute_directional_responses( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ - const MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ - const int16_t *azimuth, - const int16_t *elevation, - const int16_t md_idx, - const float *surCohRatio, - const int16_t shd_rot_max_order, /* i : split-order rotation method */ - const float *p_Rmat, /* i : rotation matrix */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -); - -void ivas_dirac_dec_get_frequency_axis( - float *frequency_axis, /* o : array of center frequencies of a real filter bank */ - const int32_t output_Fs, /* i : sampling frequency */ - const int16_t num_freq_bands /* i : number of frequency bands */ -); - void calculate_hodirac_sector_parameters( - DIRAC_ENC_HANDLE hDirAC, + DIRAC_ENC_HANDLE hDirAC, float RealBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX],/* i : signal vector (L+1)^2 x N_bins, real part */ float ImagBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX],/* i : signal vector, imaginary part */ const float beta, /* i : forgetting factor for average filtering */ @@ -3844,7 +3762,7 @@ void calculate_hodirac_sector_parameters( void ivas_mc_paramupmix_enc( Encoder_Struct *st_ivas, /* i/o: IVAS Encoder handle */ BSTR_ENC_HANDLE hMetaData, /* i/o: IVAS Metadata bitstream handle */ - float data_f[][L_FRAME48k], /* i/o: input: MC data */ + float *data_f[], /* i/o: input/transport MC data */ const int16_t input_frame /* i : input frame length */ ); @@ -3859,7 +3777,7 @@ void ivas_mc_paramupmix_enc_close( void ivas_mc_paramupmix_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output */ + float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ ); ivas_error ivas_mc_paramupmix_dec_open( @@ -3877,6 +3795,21 @@ void ivas_mc_paramupmix_dec_read_BS( 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_mc_paramupmix_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 *input_f[], /* i : core-coder transport channels */ + float *output_f[] /* i/o: synthesized core-coder transport channels */ +); + void ivas_param_mc_metadata_open( const MC_LS_SETUP mc_ls_setup, /* i : MC ls setup */ const int16_t lfe_index, /* i : channel index of LFE */ @@ -3921,7 +3854,7 @@ void ivas_param_mc_enc_close( 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[][L_FRAME48k], /* i/o: input: MC data */ + float *data_f[], /* i/o: input/transport MC data */ const int16_t input_frame /* i : input frame length */ ); @@ -4161,8 +4094,8 @@ void FdCngDecodeDiracMDCTStereoSID( *----------------------------------------------------------------------------------*/ 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 */ + Encoder_Struct *st_ivas, /* i/o: IVAS encoder handle */ + const int16_t spar_reconfig_flag /* i : SPAR reconfiguration flag */ ); void ivas_spar_enc_close( @@ -4174,7 +4107,7 @@ void ivas_spar_enc_close( ivas_error ivas_spar_enc( Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data_f[][L_FRAME48k], /* i/o: input/transport audio channels */ + 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 */ @@ -4206,9 +4139,9 @@ void ivas_spar_config( const int16_t sid_format /* i : IVAS format indicator from SID frame */ ); -void ivas_sba_upmixer_renderer( +ivas_error ivas_sba_upmixer_renderer( Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */ - float output[][L_FRAME48k], /* i/o: transport/output audio channels */ + float *output[], /* i/o: transport/output audio channels */ const int16_t output_frame /* i : output frame length */ ); @@ -4216,6 +4149,7 @@ 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, const AUDIO_CONFIG output_config, /* i : output audio configuration */ const IVAS_OUTPUT_SETUP output_setup, /* i : output format setup */ const float hoa_dec_mtx[] /* i : HOA decoding mtx */ @@ -4223,10 +4157,11 @@ ivas_error ivas_sba_linear_renderer( void ivas_sba_mix_matrix_determiner( SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */ - float output[][L_FRAME48k], /* i/o: transport/output audio channels */ + 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 output_frame, /* i : output frame length */ + const int16_t num_md_sub_frames /* i : number of subframes in mixing matrix */ ); /* AGC */ @@ -4266,10 +4201,17 @@ void ivas_spar_agc_dec_close( ivas_agc_dec_state_t **hAgcDec /* i/o: AGC decoder handle */ ); +ivas_error ivas_spar_md_enc_init +( + ivas_spar_md_enc_state_t *hMdEnc, /* o : MD encoder handle */ + const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ + const int16_t sba_order /* i : Ambisonic (SBA) order */ +); + void ivas_agc_dec_process( ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */ - float pcm_in[][L_FRAME48k], /* i : input audio channels */ - float pcm_out[][L_FRAME48k], /* o : output audio channels */ + 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 */ ); @@ -4391,7 +4333,7 @@ int16_t ivas_is_res_channel( void ivas_spar_dec_agc_pca( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output[][L_FRAME48k], /* i/o: input/output audio channels */ + float *output[], /* i/o: input/output audio channels */ const int16_t output_frame /* i : output frame length */ ); @@ -4434,7 +4376,7 @@ void ivas_spar_dec_upmixer_sf( void ivas_spar_dec_upmixer( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output[][L_FRAME48k], /* i/o: input/output audio channels */ + 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 */ ); @@ -4451,15 +4393,17 @@ void ivas_spar_md_enc_close( ); ivas_error ivas_spar_md_enc_process( - ivas_spar_md_enc_state_t *hMdEnc, /* i/o: SPAR MD encoder handle */ - const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ + ivas_spar_md_enc_state_t *hMdEnc, /* i/o: SPAR MD encoder handle */ + const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], - BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */ + BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */ const int16_t dtx_vad, const int16_t nchan_inp, - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - float *prior_mixer[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH] /* i : prior mixer_matrix */ + const int16_t sba_order, /* i : Ambisonic (SBA) order */ + float *prior_mixer[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH], /* i : prior mixer_matrix */ + const int16_t dyn_active_w_flag, /* i : flag to indicate dynamic active W */ + const int16_t dirac_mono_flag /* i : flag to indicate mono only mode in SBA */ ); void ivas_compute_spar_params( @@ -4477,7 +4421,8 @@ void ivas_compute_spar_params( ivas_spar_md_com_cfg *hSparCfg, ivas_spar_md_t *hSparMd, float *pWscale, - const int16_t from_dirac + const int16_t from_dirac, + const int16_t dyn_active_w_flag ); void ivas_create_fullr_dmx_mat( @@ -4501,7 +4446,7 @@ void ivas_calc_c_p_coeffs( const int16_t band_idx, const int16_t dtx_vad, const int16_t compute_p_flag, - const int16_t planarCP + const int16_t dyn_active_w_flag ); void ivas_get_spar_md_from_dirac( @@ -4516,24 +4461,37 @@ void ivas_get_spar_md_from_dirac( const int16_t end_band, const int16_t order, const int16_t dtx_vad, - float Wscale_d[IVAS_MAX_NUM_BANDS] - , + float Wscale_d[IVAS_MAX_NUM_BANDS], const uint8_t useLowerRes, - const int16_t active_w_vlbr + const int16_t active_w_vlbr, + const int16_t dyn_active_w_flag ); /*! r: number of MD subframes */ int16_t ivas_get_spar_dec_md_num_subframes( const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int32_t ivas_total_brate /* i : IVAS total bitrate */ + const int32_t ivas_total_brate, /* i : IVAS total bitrate */ + const int32_t ivas_last_active_brate /* i : IVAS last active bitrate */ +); + +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 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( @@ -4569,13 +4527,19 @@ void ivas_spar_to_dirac( 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 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 */ + const int16_t sba_order /* i : Ambisonic (SBA) order */ +); + 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 */ @@ -4623,7 +4587,12 @@ void ivas_enc_cov_handler_process( const int16_t nchan_inp, const int16_t dtx_vad, const int16_t transient_det[2], - const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH] + const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH], + int16_t *res_ind, + const int16_t *remix_order, + int16_t *dyn_active_w_flag, + const int16_t nchan_transport, + const int16_t is_sba ); ivas_error ivas_spar_covar_smooth_enc_open( @@ -4632,7 +4601,7 @@ ivas_error ivas_spar_covar_smooth_enc_open( ivas_filterbank_t *pFb, /* i/o: FB handle */ const int16_t nchan_inp, /* i : number of input channels */ const COV_SMOOTHING_TYPE smooth_mode, /* i : Smooth covariance for SPAR or MC */ - const int32_t ivas_total_brate /* i : IVAS total bitrate */ + const int32_t ivas_total_brate /* i : IVAS total bitrate */ ); void ivas_spar_covar_smooth_enc_close( @@ -4754,7 +4723,7 @@ void ivas_pca_dec( 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[][L_FRAME48k] /* o : output audio channels */ + float *pcm_out[] /* o : output audio channels */ ); /* PCA utilities */ @@ -4854,15 +4823,14 @@ void ivas_spar_arith_coeffs_com_init( ); int16_t ivas_arith_encode_cmplx_cell_array( - - ivas_arith_t *pArith_re, - ivas_arith_t *pArith_re_diff, - const int16_t *pDo_diff, - const int16_t nB, - int16_t *pSymbol_re, - int16_t *pSymbol_old_re, - ivas_cell_dim_t *pCell_dims, - BSTR_ENC_HANDLE hMetaData, + ivas_arith_t *pArith_re, + ivas_arith_t *pArith_re_diff, + const int16_t *pDo_diff, + const int16_t nB, + int16_t *pSymbol_re, + int16_t *pSymbol_old_re, + ivas_cell_dim_t *pCell_dims, + BSTR_ENC_HANDLE hMetaData, const int16_t any_diff , const int16_t wc_strat_arith ); @@ -4970,13 +4938,18 @@ void ivas_copy_band_coeffs_idx_to_arr( const int16_t nB, int16_t *pSymbol_re, ivas_cell_dim_t *pCell_dims, - const ivas_coeffs_type_t coeff_type, - const int16_t planarCP + const ivas_coeffs_type_t coeff_type ); void ivas_clear_band_coeffs( ivas_band_coeffs_t *pband_coeffs, - const uint16_t num_bands +#ifdef CR_FIX_698_SBA_MSAN + const uint16_t num_bands, + const uint16_t num_ts +#else + const uint16_t num_bands +#endif + ); void ivas_clear_band_coeff_idx( @@ -5020,7 +4993,14 @@ void ivas_masa_enc_reconfigure( ); ivas_error ivas_masa_dec_reconfigure( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ); ivas_error ivas_masa_encode( @@ -5032,12 +5012,19 @@ ivas_error ivas_masa_encode( 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 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[][L_FRAME48k], /* i : Input audio channels */ + 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 */ ); @@ -5053,7 +5040,92 @@ void ivas_masa_set_elements( 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 */ + 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_DecodeExtendedGR( + uint16_t* bitstream, + int16_t* index, + const int16_t alph_size, + const int16_t gr_param +); + +int16_t ivas_qmetadata_encode_extended_gr_length( + const uint16_t value, + const uint16_t alphabet_size, + const int16_t gr_param); + +void ivas_qmetadata_encode_extended_gr( + 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 */ +); + +void ivas_masa_combine_directions( + MASA_ENCODER_HANDLE hMasa /* i/o: MASA encoder handle */ +); + +/*!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_get_stereo_panning_gains( + const float aziDeg, + const float eleDeg, + float panningGains[2] ); void ivas_masa_set_coding_config( @@ -5119,11 +5191,14 @@ void update_bits_next_block( void ivas_masa_prerender( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output[][L_FRAME48k], /* i/o: synthesized core-coder transport channels */ + float *output[], /* i/o: synthesized core-coder transport channels */ const int16_t output_frame /* i : output frame length per channel */ +#ifdef CR_FIX_585_MASA_2TC_DTX_EXT + , + const int16_t nchan_remapped /* i : number of transports used in core */ +#endif ); - 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 */ @@ -5144,6 +5219,22 @@ void ivas_binRenderer_close( BINAURAL_RENDERER_HANDLE *hBinRenderer /* i/o: decoder binaural renderer handle */ ); +void ivas_binaural_hrtf_close( + HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i/o: decoder binaural hrtf handle */ +); + +void ivas_init_binaural_hrtf( + HRTFS_FASTCONV *HrtfFastConv /* i/o: FASTCONV HRTF structure */ +); + +ivas_error ivas_allocate_binaural_hrtf( + HRTFS_FASTCONV *HrtfFastConv, /* i/o: FASTCONV HRTF structure */ + const AUDIO_CONFIG input_config, /* i : input audio configuration */ + const BINAURAL_INPUT_AUDIO_CONFIG bin_input_config, /* i : binaural input audio config */ + const RENDERER_TYPE renderer_type, /* i : renderer type */ + const int16_t allocate_init_flag /* i : Memory allocation flag */ +); + #ifdef DEBUGGING void ivas_binaural_cldfb( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ @@ -5153,18 +5244,29 @@ void ivas_binaural_cldfb( void ivas_binaural_cldfb_sf( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const int16_t n_samples_to_render, /* i : output frame length per channel */ + const int16_t slot_size, /* i : JBM slot size */ float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ - ); - #endif + void ivas_binRenderer( - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: fastconv binaural renderer handle */ + BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HEAD_TRACK_DATA_HANDLE hPostRendHeadTrackData, +#endif COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle */ int16_t subframe_idx, /* i : subframe index */ 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 */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ + float Cldfb_ImagBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ +#else + 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 */ +#endif 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 */ ); @@ -5248,7 +5350,8 @@ ivas_error vbap_init_data( VBAP_HANDLE *hVBAPdata, /* i/o: handle for VBAP data structure that will be initialized */ const float *speaker_node_azi_deg, /* i : vector of speaker node azimuths (positive left) */ const float *speaker_node_ele_deg, /* i : vector of speaker node elevations (positive up) */ - const int16_t num_speaker_nodes /* i : number of speaker nodes in the set */ + const int16_t num_speaker_nodes, /* i : number of speaker nodes in the set */ + const IVAS_FORMAT ivas_format /* i : IVAS format */ ); void vbap_free_data( @@ -5259,7 +5362,8 @@ void vbap_determine_gains( const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ float *gains, /* o : gain vector for speaker nodes for given direction */ const int16_t azi_deg, /* i : azimuth in degrees for panning direction (positive left) */ - const int16_t ele_deg /* i : elevation in degrees for panning direction (positive up) */ + const int16_t ele_deg, /* i : elevation in degrees for panning direction (positive up) */ + const int16_t use_object_mode /* i : select between object mode panning and spatial mode panning */ ); void v_sort_ind( @@ -5291,7 +5395,7 @@ void ivas_ls_setup_conversion( void ivas_ls_setup_conversion_process_mdct( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output[][L_FRAME48k] /* i/o: output synthesis signal */ + float *output[] /* i/o: output synthesis signal */ ); void ivas_ls_setup_conversion_process_mdct_param_mc( @@ -5372,7 +5476,7 @@ void ivas_mcmasa_enc( MCMASA_ENC_HANDLE hMcMasa, /* i/o: Encoder McMASA handle */ IVAS_QMETADATA_HANDLE hQMeta, /* o : Qmetadata handle */ MASA_ENCODER_HANDLE hMasa, /* i/o: Encoder MASA handle */ - float data_f[][L_FRAME48k], /* i : Input frame of audio */ + float *data_f[], /* i : Input frame of audio */ const int16_t input_frame, /* i : Input frame size */ const int16_t nchan_transport, /* i : Number of transport channels */ const int16_t nchan_inp /* i : Number of input channels */ @@ -5381,7 +5485,7 @@ void ivas_mcmasa_enc( void ivas_mcmasa_param_est_enc( MCMASA_ENC_HANDLE hMcMasa, /* i/o: Encoder McMASA handle */ MASA_ENCODER_HANDLE hMasa, /* i/o: Encoder MASA handle */ - float data_f[][L_FRAME48k], /* i : Input frame of audio */ + float *data_f[], /* i : Input frame of audio */ float elevation_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* o : Estimated elevation */ float azimuth_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* o : Estimated azimuth */ float energyRatio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* o : Estimated direct-to-total ratio*/ @@ -5422,7 +5526,9 @@ void computeReferencePower_enc( const int16_t num_freq_bands, /* i : Number of frequency bands */ const IVAS_FORMAT ivas_format, /* i : ivas_format */ int16_t ref_power_w, /* i : use 0 if hodirac is enabled */ - const int16_t nchan_ana /* i : number of analysis channels */ + const int16_t nchan_ana, /* i : number of analysis channels */ + int16_t *mono_frame_count, + int16_t *dirac_mono_flag ); ivas_error ivas_mono_dmx_renderer_open( @@ -5431,26 +5537,25 @@ ivas_error ivas_mono_dmx_renderer_open( void ivas_mono_downmix_render_passive( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/mono output */ + float *output_f[], /* i/o: synthesized core-coder transport channels/mono output */ const int16_t output_frame /* i : output frame length */ ); void ivas_mono_stereo_downmix_mcmasa( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/mono or stereo output */ + float *output_f[], /* i/o: synthesized core-coder transport channels/mono or stereo output */ int16_t output_frame /* i : output frame length per channel */ ); void ivas_lfe_synth_with_filters( MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth, /* i/o: LFE synthesis structure for McMASA */ - float data_f[][L_FRAME48k], /* o : output signals */ + float *data_f[], /* o : output signals */ const int16_t output_frame, /* i : output frame length per channel */ const int16_t separateChannelIndex, /* i : separate channel index */ const int16_t lfeChannelIndex /* i : LFE channel index */ ); -#ifdef FIX_572_LFE_LPF_ENC /*----------------------------------------------------------------------------------* * LFE encoder low pass filter prototypes *----------------------------------------------------------------------------------*/ @@ -5469,7 +5574,6 @@ void ivas_lfe_lpf_enc_apply( float data_lfe_ch[], /* i/o: LFE signal */ const int16_t input_frame /* i : input frame length per channel */ ); -#endif /*----------------------------------------------------------------------------------* @@ -5542,6 +5646,284 @@ void ivas_filter_process( ); +/*----------------------------------------------------------------------------------* + * OSBA prototypes + *----------------------------------------------------------------------------------*/ + +ivas_error ivas_osba_enc_open( + Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ +); + +void ivas_osba_enc_close( + OSBA_ENC_HANDLE *hOSba /* i/o: encoder OSBA handle */ +); + +ivas_error ivas_osba_enc_reconfig( + Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ +); + +void ivas_osba_enc( + OSBA_ENC_HANDLE hOSba, /* i/o: OSBA encoder handle */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handle */ + float *data_in_f[], /* i/o: Input / transport audio signals */ + const int16_t input_frame, /* i : Input frame size */ + const int16_t nchan_ism, /* i : Number of objects for parameter analysis */ + const ISM_MODE ism_mode, /* i : ISM mode */ + const int16_t sba_analysis_order, /* i : SBA order evaluated in DirAC/SPAR encoder */ + const int32_t input_Fs /* i : input sampling rate */ +); + +ivas_error ivas_masa_ism_data_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ +); + +ivas_error ivas_sba_ism_separate_object_renderer_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +); + +ivas_error ivas_osba_dirac_td_binaural( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[], /* o : output synthesis signal */ + const int16_t output_frame /* i : output frame length per channel */ +); + +ivas_error ivas_osba_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 nb_bits_metadata[] /* o : number of ISM metadata bits */ +); + +ivas_error ivas_osba_render( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output_f[], /* i/o: core-coder transport channels/object output */ + const int16_t output_frame /* i : output frame length per channel */ +); + +void ivas_masa_ism_data_close( + MASA_ISM_DATA_HANDLE *hMasaIsmData /* i/o: MASA_ISM 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_enc_config( + Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ +); + +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) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif +); + +void ivas_omasa_set_config( + OMASA_ENC_HANDLE hOMasa, /* i/o: OMASA encoder handle */ + MASA_ENCODER_HANDLE hMasa, /* i : MASA encoder handle */ + const int32_t input_Fs, /* i : Input sample rate */ + const ISM_MODE ism_mode /* i : ISM mode */ +); + +void ivas_omasa_enc( + OMASA_ENC_HANDLE hOMasa, /* i/o: OMASA encoder handle */ + MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder handle */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handle */ + float *data_in_f[], /* i/o: Input / transport audio signals */ + const int16_t input_frame, /* i : Input frame size */ + const int16_t nchan_transport, /* i : Number of transport channels */ + const int16_t nchan_ism, /* i : Number of objects for parameter analysis*/ + const ISM_MODE ism_mode, /* i : ISM mode */ + float *data_separated_object, /* o : Separated object audio signal */ + int16_t* idx_separated_object /* o : Index of the separated object */ +); + +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: flag for using less bitrate for objects in OMASA */ +int16_t ivas_omasa_ener_brate( + const int16_t nchan_ism, /* i : number of ISMs */ + const int32_t ivas_total_brate, /* i : IVAS total bitrate */ + float *data_f[], /* i : Input / transport audio signals */ + const int16_t input_frame /* i : Input frame size */ +); + +/*! 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 */ + int32_t *core_brate, /* i/o: core bitrate */ + 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_data_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ +); + +void ivas_omasa_data_close( + MASA_ISM_DATA_HANDLE *hMasaIsmData /* i/o: MASA_ISM rendering handle */ +); + +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 */ +); + +ivas_error ivas_omasa_dirac_td_binaural( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[], /* o : output synthesis signal */ + const int16_t output_frame /* i : output frame length per channel */ +); + +ivas_error ivas_omasa_dirac_td_binaural_jbm( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nSamplesAsked, /* i : number of samples requested */ + uint16_t *nSamplesRendered, /* o : number of samples rendered */ + uint16_t *nSamplesAvailable, /* o : number of samples still to render */ + const int16_t nchan_transport, /* i : number of transport channels */ + float *output_f[] /* o : rendered time signal */ +); + +void ivas_omasa_dirac_rend( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[], /* o : output synthesis signal */ + const int16_t output_frame /* i : output frame length per channel */ +); + +void ivas_omasa_rearrange_channels( + float *output[], /* o : output synthesis signal */ + const int16_t nchan_transport_ism, /* i : number of ISM TCs */ + const int16_t output_frame /* i : output frame length per channel */ +); + +void ivas_omasa_dirac_rend_jbm( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nSamplesAsked, /* i : number of samples requested */ + uint16_t *nSamplesRendered, /* o : number of samples rendered */ + uint16_t *nSamplesAvailable, /* o : number of samples still to render */ + const int16_t nchan_transport, /* i : number of transport channels */ + float *output_f[] /* o : rendered time signal */ +); + +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( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float input_f[][L_FRAME48k], /* i : separated object signal */ + float *output_f[], /* i/o: output signals */ + const int16_t output_frame /* i : output frame length per channel */ +); + +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 *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 *----------------------------------------------------------------------------------*/ @@ -5591,7 +5973,7 @@ void ivas_FB_mixer_close( void ivas_fb_mixer_pcm_ingest( IVAS_FB_MIXER_HANDLE hFbMixer, /* i/o: FB mixer handle */ - float pcm_in[][L_FRAME48k], /* i : input audio channels */ + 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] @@ -5630,6 +6012,16 @@ void ivas_fb_mixer_get_in_out_mapping( int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH] /* i/o: mixing mapping */ ); +void ivas_fb_mixer_cross_fading( + IVAS_FB_MIXER_HANDLE hFbMixer, + float **ppOut_pcm, + float *pMdft_out_old, + float *pMdft_out_new, + const int16_t ch, + const int16_t frame_len, + const int16_t cf_offset +); + /*! r: number of spectral bands */ int16_t ivas_get_num_bands_from_bw_idx( const int16_t bwidth /* i : audio bandwidth */ diff --git a/lib_com/ivas_qmetadata_com.c b/lib_com/ivas_qmetadata_com.c index 32b4653d2f4c40a1dc9befe955c442ce71241a23..ffd843d8a8699afae230d7db6a2f956ea3fd661c 100644 --- a/lib_com/ivas_qmetadata_com.c +++ b/lib_com/ivas_qmetadata_com.c @@ -149,6 +149,7 @@ ivas_error ivas_qmetadata_allocate_memory( { set_zero( hQMetaData->q_direction[dir].band_data[j].elevation, MAX_PARAM_SPATIAL_SUBFRAMES ); set_zero( hQMetaData->q_direction[dir].band_data[j].azimuth, MAX_PARAM_SPATIAL_SUBFRAMES ); + set_zero( hQMetaData->q_direction[dir].band_data[j].energy_ratio, MAX_PARAM_SPATIAL_SUBFRAMES ); } } diff --git a/lib_com/ivas_rom_com.c b/lib_com/ivas_rom_com.c index 5677a3cc9b48b95616b71944fc1583ce2ae16e89..de266ed6c5621c11471d4233b6fbdb395c2139f3 100644 --- a/lib_com/ivas_rom_com.c +++ b/lib_com/ivas_rom_com.c @@ -887,13 +887,12 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] = { /* When AGC is ON additional (AGC_BITS_PER_CH+1) bits may be taken from each core-coder channel so minimum core-coder bitrate per channel can be min core-coder bitrates as per the table - AGC_BITS_PER_CH */ - { 13200, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, - { { 10000, 8150, 13150 } }, + { 13200, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, { { 10000, 8150, 13150 } }, { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, - { 16400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, - { { 13200, 11350, 16350 } }, + { 16400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0, { { 13200, 11350, 16350 } }, { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, + { 24400, 0, SBA_FOA_ORDER, FB, 24000, 1, WYXZ, 1, 0,{ { 16400, 14850, 24350 } }, { { 15, 1, 5, 1 },{ 15, 1, 3, 1 },{ 7, 1, 3, 1 } }, 0, 0, 0 }, @@ -927,9 +926,7 @@ const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN] = { { 31, 11, 11, 1 },{ 1, 1, 1, 1 },{ 1, 1, 1, 1 } }, 1, 2, 0 }, { 256000, 0, SBA_HOA3_ORDER, FB, 24000, 4, WYXZ, 0, 0,{ { 76300, 73550, 112000 },{ 59350, 57200, 56000 },{ 42400, 40850, 48000 },{ 25450, 24500, 40000 } }, - { { 31, 11, 11, 1 },{ 1, 1, 1, 1 }, - { 1, 1, 1, 1 } - }, 1, 2, 0 }, + { { 31, 11, 11, 1 },{ 1, 1, 1, 1 }, { 1, 1, 1, 1 } }, 1, 2, 0 }, { 384000, 0, SBA_FOA_ORDER, FB, 24000, 4, WYXZ, 0, 0,{ { 128000, 128000, 128000 },{ 100000, 100000, 128000 },{ 79850, 79850, 104000 },{ 66600, 66600, 104000 } }, // not yet optimized { { 31, 1, 1, 1 },{ 1, 1, 1, 1 },{ 1, 1, 1, 1 } }, 1, 2, 0 }, @@ -1467,7 +1464,9 @@ const int16_t pr_pd_idx_pairs[3][3][2] = { { { 1, 1 },{ 2, 2 },{ 3, 3 } },{ { 1, const int16_t remix_order_set[1][DIRAC_MAX_ANA_CHANS] = { /* WYZX --> WYXZ... */ { 0, 1, 3, 2, 4, 5, 6, 7, 8, 9, 10 } }; +#ifdef SPAR_HOA_DBG const int16_t keep_planar[IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS] = { 1, 1, 1, 1, 1, 1 }; +#endif const int16_t HOA_keep_ind[IVAS_SPAR_MAX_FB_IN_CHAN] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 15}; const int16_t HOA_keep_ind_spar[IVAS_SPAR_MAX_CH] = {0, 1, 2, 3, 4, 8, 9, 10, 10, 10, 10}; const int16_t HOA_keep_ind_spar512[IVAS_SPAR_MAX_CH] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; @@ -2824,6 +2823,73 @@ const float McMASA_LFEGain_vectors[64] = -2.14f, 0.26f, 0.84f, 1.02f }; +/*----------------------------------------------------------------------------------* + * OMASA ROM tables + *----------------------------------------------------------------------------------*/ + +const int32_t sep_object_brate[][MAX_NUM_OBJECTS] = +{ + {0, 0, 0, 0}, /* 13k2 */ + {0, 0, 0, 0}, /* 16k4 */ + {9600, 0, 0, 0}, /* 24k4 */ + {IVAS_13k2, 0, 0, 0}, /* 32k */ + {16000, 11000, 0, 0}, /* 48k */ + {16000, 11700, 0, 0}, /* 64k */ + {20000, 16000, 0, 0}, /* 80k */ + {IVAS_32k, 20000, 20000, 0}, /* 96k */ + {IVAS_32k, IVAS_24k4, 24000, 24000}, /* 128k */ + {IVAS_48k, IVAS_32k, IVAS_24k4, 24000}, /* 160k */ + {IVAS_64k, IVAS_48k, IVAS_32k, IVAS_24k4}, /* 192k */ + {IVAS_96k, IVAS_64k, IVAS_48k, IVAS_32k}, /* 256k */ + {IVAS_128k, IVAS_80k, IVAS_64k, IVAS_48k}, /* 384k */ + {IVAS_128k, IVAS_96k, IVAS_80k, IVAS_64k} /* 512k */ +}; + +/* column wise DCT matrices for 4 5, and 8 dim */ +const float dct4[4*4] = +{ + 0.5000f, 0.6533f, 0.5000f, 0.2706f, + 0.5000f, 0.2706f, -0.5000f, -0.6533f, + 0.5000f, -0.2706f, -0.5000f, 0.6533f, + 0.5000f, -0.6533f, 0.5000f, -0.2706f +}; + +const float dct5[5*5] = +{ + 0.4472f, 0.6015f, 0.5117f, 0.3717f, 0.1954f, + 0.4472f, 0.3717f, -0.1954f, -0.6015f, -0.5117f, + 0.4472f, 0.0000f, -0.6325f, -0.0000f, 0.6325f, + 0.4472f, -0.3717f, -0.1954f, 0.6015f, -0.5117f, + 0.4472f, -0.6015f, 0.5117f, -0.3717f, 0.1954f +}; + +const float dct8[8*8] = +{ + 0.3536f, 0.4904f, 0.4619f, 0.4157f, 0.3536f, 0.2778f, 0.1913f, 0.0975f, + 0.3536f, 0.4157f, 0.1913f, -0.0975f, -0.3536f, -0.4904f, -0.4619f, -0.2778f, + 0.3536f, 0.2778f, -0.1913f, -0.4904f, -0.3536f, 0.0975f, 0.4619f, 0.4157f, + 0.3536f, 0.0975f, -0.4619f, -0.2778f, 0.3536f, 0.4157f, -0.1913f, -0.4904f, + 0.3536f, -0.0975f, -0.4619f, 0.2778f, 0.3536f, -0.4157f, -0.1913f, 0.4904f, + 0.3536f, -0.2778f, -0.1913f, 0.4904f, -0.3536f, -0.0975f, 0.4619f, -0.4157f, + 0.3536f, -0.4157f, 0.1913f, 0.0975f, -0.3536f, 0.4904f, -0.4619f, 0.2778f, + 0.3536f, -0.4904f, 0.4619f, -0.4157f, 0.3536f, -0.2778f, 0.1913f, -0.0975f +}; + +const float dct12[12*12]= +{ + 0.2887f, 0.4048f, 0.3943f, 0.3772f, 0.3536f, 0.3239f, 0.2887f, 0.2485f, 0.2041f, 0.1562f, 0.1057f, 0.0533f, + 0.2887f, 0.3772f, 0.2887f, 0.1562f, 0.0000f, -0.1562f, -0.2887f, -0.3772f, -0.4082f, -0.3772f, -0.2887f, -0.1562f, + 0.2887f, 0.3239f, 0.1057f, -0.1562f, -0.3536f, -0.4048f, -0.2887f, -0.0533f, 0.2041f, 0.3772f, 0.3943f, 0.2485f, + 0.2887f, 0.2485f, -0.1057f, -0.3772f, -0.3536f, -0.0533f, 0.2887f, 0.4048f, 0.2041f, -0.1562f, -0.3943f, -0.3239f, + 0.2887f, 0.1562f, -0.2887f, -0.3772f, -0.0000f, 0.3772f, 0.2887f, -0.1562f, -0.4082f, -0.1562f, 0.2887f, 0.3772f, + 0.2887f, 0.0533f, -0.3943f, -0.1562f, 0.3536f, 0.2485f, -0.2887f, -0.3239f, 0.2041f, 0.3772f, -0.1057f, -0.4048f, + 0.2887f, -0.0533f, -0.3943f, 0.1562f, 0.3536f, -0.2485f, -0.2887f, 0.3239f, 0.2041f, -0.3772f, -0.1057f, 0.4048f, + 0.2887f, -0.1562f, -0.2887f, 0.3772f, 0.0000f, -0.3772f, 0.2887f, 0.1562f, -0.4082f, 0.1562f, 0.2887f, -0.3772f, + 0.2887f, -0.2485f, -0.1057f, 0.3772f, -0.3536f, 0.0533f, 0.2887f, -0.4048f, 0.2041f, 0.1562f, -0.3943f, 0.3239f, + 0.2887f, -0.3239f, 0.1057f, 0.1562f, -0.3536f, 0.4048f, -0.2887f, 0.0533f, 0.2041f, -0.3772f, 0.3943f, -0.2485f, + 0.2887f, -0.3772f, 0.2887f, -0.1562f, -0.0000f, 0.1562f, -0.2887f, 0.3772f, -0.4082f, 0.3772f, -0.2887f, 0.1562f, + 0.2887f, -0.4048f, 0.3943f, -0.3772f, 0.3536f, -0.3239f, 0.2887f, -0.2485f, 0.2041f, -0.1562f, 0.1057f, -0.0533f +}; /*----------------------------------------------------------------------------------* * ISM ROM tables @@ -5597,11 +5663,17 @@ const int16_t ivas_num_active_bands[FB - WB + 1] = IVAS_16K_12BANDS_ACTIVE_BANDS, IVAS_FB_BANDS_12, IVAS_FB_BANDS_12 }; +/*------------------------------------------------------------------------------------------* + * SNS MSVQ codebooks and means + *------------------------------------------------------------------------------------------*/ + const int16_t ivas_sns_cdbks_tcx20_levels[SNS_MSVQ_NSTAGES_TCX20] = { 128, 64, 32, 32 }; + const int16_t ivas_sns_cdbks_tcx20_bits[SNS_MSVQ_NSTAGES_TCX20] = { 7, 6, 5, 5 }; /* pre-rounded codebook vectors for singed Q4.12 represantation */ -const float ivas_sns_cdbk_tcx20_stage1[ 128 * 16 ] = { +const float ivas_sns_cdbk_tcx20_stage1[ 128 * 16 ] = +{ -1.8305664f, -2.0878906f, -0.9638672f, 2.8059082f, 2.668213f, 1.1638184f, 1.390625f, 1.217041f, 1.3850098f, 0.44555664f, -0.47045898f, -0.5307617f, -0.810791f, -1.1647949f, -1.4560547f, -1.7612305f, -2.5979004f, -3.3308105f, -1.8554688f, -0.3605957f, 1.6828613f, 2.5871582f, 0.98168945f, 0.22436523f, -0.13110352f, 0.16699219f, 1.5004883f, 0.3293457f, 0.33569336f, 1.1591797f, 0.1796875f, -0.8718262f, 1.982666f, 2.2011719f, 1.1525879f, 0.8093262f, 0.86499023f, 1.1618652f, 1.2888184f, 1.3618164f, 1.0827637f, 0.83251953f, 0.12011719f, -0.7182617f, -2.1948242f, -3.0500488f, -3.3571777f, -3.53833f, @@ -5731,7 +5803,9 @@ const float ivas_sns_cdbk_tcx20_stage1[ 128 * 16 ] = { 1.7553711f, 2.8996582f, 1.9260254f, 0.40551758f, -0.0234375f, 0.44506836f, 0.31152344f, 0.1809082f, -0.47607422f, -0.4807129f, -1.204834f, -1.3293457f, -1.2412109f, -1.0134277f, -0.89501953f, -1.2602539f, 0.2253418f, 2.2539062f, 2.265625f, 0.57128906f, -0.7661133f, -0.6245117f, 0.21313477f, 1.2248535f, 0.8737793f, -0.12524414f, -0.9609375f, -2.416504f, -1.1223145f, -0.70532227f, -0.31469727f, -0.592041f, }; -const float ivas_sns_cdbk_tcx20_stage2[ 64 * 16 ] = { + +const float ivas_sns_cdbk_tcx20_stage2[ 64 * 16 ] = +{ -1.1569824f, -0.4765625f, 0.008056641f, 0.47802734f, 0.38330078f, -0.075683594f, -0.3737793f, -0.29516602f, -0.1352539f, 0.012939453f, 0.22241211f, 0.375f, 0.31689453f, 0.20874023f, 0.2541504f, 0.25439453f, -0.40600586f, -0.22070312f, -0.04272461f, 0.15893555f, -0.25195312f, -0.6623535f, -0.27172852f, 0.28735352f, 0.35742188f, 0.20166016f, 0.052246094f, -0.3647461f, -0.4506836f, 0.1862793f, 0.66796875f, 0.7585449f, 0.02734375f, -0.2097168f, -0.39819336f, -0.54296875f, -0.46850586f, -0.25146484f, -0.26953125f, -0.07495117f, 0.375f, 0.9343262f, 0.91625977f, 0.4267578f, 0.026123047f, -0.15576172f, -0.11425781f, -0.22021484f, @@ -5797,7 +5871,9 @@ const float ivas_sns_cdbk_tcx20_stage2[ 64 * 16 ] = { 0.3227539f, -1.0678711f, -1.1435547f, 0.068603516f, 0.7546387f, 0.38745117f, 0.09008789f, -0.0007324219f, -0.12792969f, 0.076416016f, 0.24853516f, 0.28735352f, 0.076660156f, -0.041748047f, -0.01977539f, 0.08911133f, 0.6101074f, -0.22070312f, -0.5324707f, -0.119384766f, 0.10473633f, 0.16333008f, -0.15112305f, -0.34472656f, -0.39746094f, -0.43652344f, -0.23876953f, 0.0017089844f, 0.056152344f, 0.22973633f, 0.50024414f, 0.7751465f, }; -const float ivas_sns_cdbk_tcx20_stage3[ 32 * 16 ] = { + +const float ivas_sns_cdbk_tcx20_stage3[ 32 * 16 ] = +{ -0.12109375f, -0.32348633f, -0.25976562f, 0.21435547f, 0.4814453f, 0.14819336f, -0.22363281f, -0.31030273f, -0.13256836f, 0.10107422f, 0.33276367f, 0.32495117f, 0.16577148f, -0.079833984f, -0.16210938f, -0.15527344f, 0.088378906f, -0.0146484375f, -0.13378906f, -0.29003906f, 0.873291f, -0.3125f, -0.19384766f, 0.19311523f, -0.09863281f, 0.052734375f, -0.13110352f, -0.021972656f, -0.07861328f, -0.01977539f, -0.07373047f, 0.1616211f, -0.115722656f, 0.28100586f, 0.2697754f, -0.10522461f, -0.107910156f, -0.2866211f, -0.36694336f, -0.33862305f, -0.15844727f, 0.01928711f, 0.17382812f, 0.21118164f, 0.2697754f, 0.17260742f, 0.07299805f, 0.009033203f, @@ -5831,7 +5907,9 @@ const float ivas_sns_cdbk_tcx20_stage3[ 32 * 16 ] = { 0.17895508f, -0.31396484f, -0.033203125f, -0.02734375f, -0.0637207f, -0.11791992f, -0.03466797f, 0.0061035156f, 0.07324219f, 0.072753906f, 0.14916992f, 0.13671875f, 0.12524414f, 0.017333984f, -0.08178711f, -0.08618164f, 0.13330078f, -0.15893555f, -0.22045898f, -0.032226562f, -0.07739258f, -0.25463867f, -0.32299805f, -0.2614746f, 0.039794922f, 0.18554688f, 0.1262207f, -0.04321289f, -0.010498047f, 0.13330078f, 0.31860352f, 0.44506836f, }; -const float ivas_sns_cdbk_tcx20_stage4[ 32 * 16 ] = { + +const float ivas_sns_cdbk_tcx20_stage4[ 32 * 16 ] = +{ -0.0056152344f, -0.03955078f, 0.071777344f, 0.26879883f, 0.44140625f, -0.08203125f, -0.20092773f, -0.009277344f, 0.05810547f, -0.06347656f, -0.07910156f, -0.05126953f, -0.07006836f, -0.068847656f, -0.07885742f, -0.09082031f, -0.011962891f, -0.060302734f, 0.011962891f, 0.049804688f, -0.044677734f, 0.037841797f, 0.099121094f, 0.06274414f, 0.022216797f, -0.09057617f, 0.00390625f, 0.38452148f, 0.1027832f, -0.5292969f, -0.3269043f, 0.28881836f, -0.3557129f, 0.3815918f, 0.10839844f, 0.08203125f, 0.03149414f, -0.0024414062f, -0.0036621094f, -0.02758789f, -0.03125f, -0.096191406f, -0.09326172f, -0.103515625f, -0.07006836f, 0.008056641f, 0.06616211f, 0.10644531f, @@ -5869,9 +5947,11 @@ const float ivas_sns_cdbk_tcx20_stage4[ 32 * 16 ] = { const float *const ivas_sns_cdbks_tcx20[SNS_MSVQ_NSTAGES_TCX20] = { ivas_sns_cdbk_tcx20_stage1, ivas_sns_cdbk_tcx20_stage2, ivas_sns_cdbk_tcx20_stage3, ivas_sns_cdbk_tcx20_stage4 }; const int16_t ivas_sns_cdbks_tcx10_levels[SNS_MSVQ_NSTAGES_TCX10] = { 128, 32, 8 }; + const int16_t ivas_sns_cdbks_tcx10_bits[SNS_MSVQ_NSTAGES_TCX10] = { 7, 5, 3 }; -const float ivas_sns_cdbk_tcx10_stage1[ 128 * 16 ] = { +const float ivas_sns_cdbk_tcx10_stage1[ 128 * 16 ] = +{ 1.0144043f, 1.1826172f, 0.3269043f, -0.6411133f, -1.2163086f, -1.1411133f, -1.1525879f, -0.8898926f, -0.19604492f, 0.7402344f, 1.1782227f, 1.0830078f, 0.78222656f, 0.26953125f, -0.33203125f, -1.0080566f, -0.38916016f, -0.31347656f, -1.1826172f, -2.036621f, -2.086914f, -1.8569336f, -1.637207f, -1.3156738f, -0.4182129f, 0.50634766f, 1.2770996f, 1.3771973f, 1.8566895f, 2.3503418f, 2.3015137f, 1.5678711f, 0.43652344f, 1.8859863f, 2.8059082f, 2.2385254f, 1.5480957f, 0.14331055f, 0.07299805f, -1.1218262f, -1.1103516f, -0.7336426f, -0.4194336f, -0.89624023f, -1.0429688f, -0.79785156f, -1.204834f, -1.8046875f, @@ -6001,7 +6081,9 @@ const float ivas_sns_cdbk_tcx10_stage1[ 128 * 16 ] = { 3.256836f, 3.5593262f, 2.2746582f, 1.1318359f, 0.3149414f, -0.02368164f, 0.27172852f, -0.19335938f, -0.48779297f, -0.9663086f, -0.9187012f, -1.0222168f, -1.512207f, -1.6816406f, -1.8964844f, -2.1069336f, -0.057617188f, -0.45092773f, -0.9638672f, -0.72143555f, 0.20703125f, 1.4692383f, 1.921875f, 1.6833496f, 1.3933105f, 0.6699219f, 0.17333984f, -0.43798828f, -0.9772949f, -1.1477051f, -1.3552246f, -1.4057617f, }; -const float ivas_sns_cdbk_tcx10_stage2[ 32 * 16 ] = { + +const float ivas_sns_cdbk_tcx10_stage2[ 32 * 16 ] = +{ 0.30615234f, 0.48828125f, -0.02709961f, -0.47680664f, -0.5300293f, -0.25463867f, -0.13305664f, -0.14941406f, -0.14819336f, 0.08666992f, 0.28833008f, 0.27514648f, 0.099365234f, -0.017578125f, 0.033203125f, 0.15893555f, 0.40942383f, -0.044189453f, -0.088378906f, 0.38720703f, 0.5151367f, 0.42236328f, 0.34960938f, 0.2680664f, 0.037597656f, -0.19970703f, -0.31054688f, -0.32617188f, -0.38452148f, -0.38085938f, -0.38598633f, -0.2692871f, -0.16040039f, -0.37548828f, -0.41479492f, -0.1237793f, 0.25708008f, 0.29589844f, 0.045410156f, -0.04345703f, -0.11450195f, -0.2019043f, 0.032470703f, 0.5847168f, 1.074707f, 0.3178711f, -0.43847656f, -0.73535156f, @@ -6035,7 +6117,9 @@ const float ivas_sns_cdbk_tcx10_stage2[ 32 * 16 ] = { -0.78149414f, 0.05517578f, 0.09863281f, -0.35083008f, -0.29174805f, 0.1352539f, 0.10620117f, -0.3515625f, -0.27514648f, 0.15917969f, 0.34326172f, 0.2626953f, 0.39916992f, 0.42089844f, 0.20947266f, -0.1394043f, -0.20361328f, -0.21557617f, -0.16308594f, -0.041748047f, -0.111083984f, -0.057617188f, 0.0390625f, 0.013183594f, 0.17358398f, 0.74902344f, 0.9448242f, 0.4477539f, -0.09423828f, -0.32739258f, -0.50634766f, -0.6467285f, }; -const float ivas_sns_cdbk_tcx10_stage3[ 8 * 16 ] = { + +const float ivas_sns_cdbk_tcx10_stage3[ 8 * 16 ] = +{ 0.15209961f, -0.12768555f, 0.09375f, -0.083496094f, -0.25390625f, 0.12524414f, 0.2993164f, -0.09863281f, -0.34814453f, -0.2434082f, -0.11254883f, -0.060058594f, 0.032470703f, 0.15527344f, 0.23413086f, 0.2355957f, -0.16235352f, -0.111083984f, -0.3173828f, -0.25634766f, 0.13842773f, 0.29858398f, 0.10498047f, 0.11743164f, 0.26611328f, 0.05444336f, -0.1459961f, -0.19238281f, 0.041748047f, 0.2097168f, 0.07421875f, -0.12011719f, -0.05078125f, 0.14770508f, -0.1003418f, -0.32104492f, -0.17504883f, -0.18652344f, -0.27148438f, -0.07788086f, 0.0036621094f, -0.04296875f, 0.10131836f, 0.34985352f, 0.3083496f, 0.10107422f, 0.0769043f, 0.13696289f, @@ -6053,7 +6137,8 @@ const int16_t ivas_sns_cdbks_side_tcx20_bits[SNS_MSVQ_NSTAGES_SIDE] = { 5, 5 }; const int16_t ivas_sns_cdbks_side_tcx10_levels[SNS_MSVQ_NSTAGES_SIDE] = { 32, 8 }; const int16_t ivas_sns_cdbks_side_tcx10_bits[SNS_MSVQ_NSTAGES_SIDE] = { 5, 3 }; -const float ivas_sns_cdbks_side_tcx20_stage1[ 32 * 16 ] = { +const float ivas_sns_cdbks_side_tcx20_stage1[ 32 * 16 ] = +{ -0.11376953f, -0.06591797f, 0.041992188f, 0.044677734f, 0.17871094f, -0.02758789f, -0.32592773f, -0.21069336f, -0.049072266f, 0.0126953125f, 0.012939453f, 0.015136719f, 0.08203125f, 0.12670898f, 0.12695312f, 0.15112305f, -0.017089844f, 0.09326172f, 0.2355957f, 0.2241211f, 0.107421875f, 0.05029297f, 0.039794922f, -0.0073242188f, -0.048339844f, -0.0871582f, -0.08520508f, -0.12060547f, -0.111572266f, -0.10620117f, -0.08911133f, -0.078125f, -0.26635742f, 0.27368164f, 0.4543457f, 0.1821289f, 0.6513672f, 0.18066406f, 0.14575195f, -0.008056641f, 0.2631836f, -0.045898438f, -0.52001953f, -0.1628418f, 0.038330078f, -0.31811523f, -0.4321289f, -0.43603516f, @@ -6088,7 +6173,8 @@ const float ivas_sns_cdbks_side_tcx20_stage1[ 32 * 16 ] = { -0.19580078f, -0.14624023f, -0.11303711f, -0.055908203f, -0.052001953f, -0.009033203f, 0.022949219f, -0.0068359375f, -0.032470703f, 0.0017089844f, 0.045410156f, 0.025146484f, 0.039794922f, 0.07543945f, 0.1574707f, 0.24267578f, }; -const float ivas_sns_cdbks_side_tcx20_stage2[ 32 * 16 ] = { +const float ivas_sns_cdbks_side_tcx20_stage2[ 32 * 16 ] = +{ -0.013916016f, 0.0007324219f, 0.017089844f, 0.005859375f, 0.056152344f, -0.08178711f, -0.2927246f, 0.00390625f, 0.140625f, 0.03881836f, 0.010498047f, 0.038330078f, 0.042236328f, 0.020751953f, 0.005859375f, 0.0075683594f, -0.07104492f, -0.10253906f, 0.038085938f, 0.091552734f, 0.118896484f, 0.13476562f, 0.05078125f, -0.111328125f, -0.13842773f, -0.20727539f, -0.25732422f, -0.15063477f, 0.032470703f, 0.08129883f, 0.17578125f, 0.31469727f, 0.0715332f, 0.029052734f, 0.01953125f, 0.008056641f, 0.0234375f, 0.020751953f, 0.032226562f, 0.021972656f, 0.03466797f, 0.017822266f, -0.037841797f, -0.14038086f, -0.21679688f, -0.11035156f, 0.057617188f, 0.16845703f, @@ -6125,7 +6211,8 @@ const float ivas_sns_cdbks_side_tcx20_stage2[ 32 * 16 ] = { const float *const ivas_sns_cdbks_side_tcx20[SNS_MSVQ_NSTAGES_SIDE] = { ivas_sns_cdbks_side_tcx20_stage1, ivas_sns_cdbks_side_tcx20_stage2 }; -const float ivas_sns_cdbks_side_tcx10_stage1[ 32 * 16 ] = { +const float ivas_sns_cdbks_side_tcx10_stage1[ 32 * 16 ] = +{ -0.23950195f, -0.203125f, -0.17822266f, -0.1315918f, -0.123291016f, -0.095947266f, -0.106933594f, -0.16552734f, -0.14941406f, -0.075683594f, 0.026367188f, 0.1015625f, 0.17041016f, 0.2770996f, 0.37890625f, 0.5148926f, 0.12890625f, 0.20825195f, 0.22924805f, 0.2998047f, 0.24267578f, 0.14477539f, 0.07861328f, 0.024658203f, -0.076171875f, -0.18432617f, -0.26660156f, -0.33251953f, -0.2758789f, -0.13964844f, -0.030517578f, -0.05126953f, -0.14160156f, -0.13305664f, -0.111816406f, -0.037353516f, -0.038085938f, 0.051513672f, 0.07348633f, 0.0073242188f, 0.044921875f, -0.0234375f, -0.123291016f, -0.01171875f, 0.28100586f, 0.24194336f, 0.0703125f, -0.1496582f, @@ -6158,9 +6245,11 @@ const float ivas_sns_cdbks_side_tcx10_stage1[ 32 * 16 ] = { 0.06982422f, 0.072265625f, 0.18261719f, 0.025390625f, -0.2475586f, -0.2861328f, -0.111572266f, -0.037109375f, 0.0036621094f, 0.031982422f, 0.043945312f, 0.057373047f, 0.078125f, 0.072021484f, 0.028564453f, 0.016357422f, 0.07836914f, 0.13549805f, 0.1743164f, 0.15478516f, 0.12573242f, -0.009521484f, -0.1508789f, -0.1965332f, -0.19604492f, -0.103027344f, -0.045898438f, -0.026123047f, 0.020263672f, 0.023925781f, 0.013183594f, 0.0014648438f, 0.25341797f, 0.22558594f, 0.2241211f, 0.17114258f, 0.18164062f, 0.16894531f, 0.16503906f, 0.20239258f, 0.17041016f, 0.025878906f, -0.16625977f, -0.24121094f, -0.31982422f, -0.4008789f, -0.38256836f, -0.27783203f, -}; +} +; -const float ivas_sns_cdbks_side_tcx10_stage2[ 8 * 16 ] = { +const float ivas_sns_cdbks_side_tcx10_stage2[ 8 * 16 ] = +{ -0.13989258f, -0.024658203f, 0.12670898f, 0.027832031f, 0.06689453f, 0.12817383f, 0.07495117f, -0.01977539f, -0.05834961f, -0.07543945f, -0.06542969f, -0.0546875f, -0.04345703f, -0.0063476562f, 0.034179688f, 0.029541016f, -0.06713867f, -0.11450195f, -0.09790039f, -0.091308594f, -0.12182617f, -0.010009766f, 0.10986328f, 0.115478516f, 0.060058594f, 0.038085938f, 0.020507812f, 0.017333984f, 0.024169922f, 0.028320312f, 0.038330078f, 0.05053711f, 0.05517578f, 0.030517578f, 0.0390625f, 0.05810547f, 0.021484375f, 0.032470703f, 0.040039062f, -0.0087890625f, -0.055908203f, -0.023925781f, 0.037109375f, 0.06347656f, 0.02709961f, -0.07373047f, -0.1274414f, -0.115234375f, @@ -6173,7 +6262,8 @@ const float ivas_sns_cdbks_side_tcx10_stage2[ 8 * 16 ] = { const float *const ivas_sns_cdbks_side_tcx10[SNS_MSVQ_NSTAGES_SIDE] = { ivas_sns_cdbks_side_tcx10_stage1, ivas_sns_cdbks_side_tcx10_stage2 }; -const int16_t sns_1st_cdbk[2][2][8 * 32] = { +const int16_t sns_1st_cdbk[2][2][8 * 32] = +{ { /* split 1 */ { /* TCX 20 */ -10900, -11064, -10637, -10471, -9051, -6381, -4688, -2438, @@ -6315,7 +6405,9 @@ const int16_t sns_1st_cdbk[2][2][8 * 32] = { } } }; -const int16_t sns_1st_means_16k[2][16] = { + +const int16_t sns_1st_means_16k[2][16] = +{ { /* TCX 20 */ 14210, 19017, 14362, 9309, 5385, 2674, 1055, -211, -1407, -3059, -4393, -8597, -11180, -11756, -12131, -13281, }, @@ -6323,7 +6415,9 @@ const int16_t sns_1st_means_16k[2][16] = { 12018, 15915, 11089, 6015, 847, -705, -539, -1548, -893, -2163, -1806, -4189, -7017, -8670, -8874, -9480, } }; -const int16_t sns_1st_means_25k6[2][16] = { + +const int16_t sns_1st_means_25k6[2][16] = +{ { /* TCX 20 */ 14973, 20323, 16461, 9554, 4017, 3103, 1602, 1694, -221, -1401, -6817, -10071, -11503, -11805, -13158, -16749, }, @@ -6331,7 +6425,9 @@ const int16_t sns_1st_means_25k6[2][16] = { 15560, 19489, 14623, 5595, 2084, 1699, 775, -1312, -2195, -6101, -9078, -9465, -7825, -6603, -7281, -9960, } }; -const int16_t sns_1st_means_32k[2][16] = { + +const int16_t sns_1st_means_32k[2][16] = +{ { /* TCX 20 */ 15041, 20603, 16969, 10289, 4973, 4283, 3003, 3316, 1684, -259, -6614, -9535, -10363, -11834, -16625, -24930, }, @@ -6340,100 +6436,108 @@ const int16_t sns_1st_means_32k[2][16] = { } }; -ACPL_QUANT_TABLE alpha_quant_table[] = -{ - { /* Alfa Fine */ - 33, /* nquant */ - 16, /* offset */ - { -2.000000e+000f, -1.809375e+000f, -1.637500e+000f, -1.484375e+000f, -1.350000e+000f, -1.234375e+000f, -1.137500e+000f, -1.059375e+000f, -1.000000e+000f, -9.406250e-001f, - -8.625000e-001f, -7.656250e-001f, -6.500000e-001f, -5.156250e-001f, -3.625000e-001f, -1.906250e-001f, +0.000000e+000f, +1.906250e-001f, +3.625000e-001f, +5.156250e-001f, - +6.500000e-001f, +7.656250e-001f, +8.625000e-001f, +9.406250e-001f, +1.000000e+000f, +1.059375e+000f, +1.137500e+000f, +1.234375e+000f, +1.350000e+000f, +1.484375e+000f, - +1.637500e+000f, +1.809375e+000f, +2.000000e+000f } /* data */ - }, /* End Alfa Fine */ - { /* Alfa Coarse */ - 17, /* nquant */ - 8, /* offset */ - { -2.000000e+000f, -1.637500e+000f, -1.350000e+000f, -1.137500e+000f, -1.000000e+000f, -8.625000e-001f, -6.500000e-001f, -3.625000e-001f, +0.000000e+000f, +3.625000e-001f, - +6.500000e-001f, +8.625000e-001f, +1.000000e+000f, +1.137500e+000f, +1.350000e+000f, +1.637500e+000f, +2.000000e+000f } /* data */ - } /* End Alfa Coarse */ -}; - -ACPL_QUANT_TABLE beta_quant_table[2][9] = -{ - { - { /* Beta Fine #1 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +2.375000e-001f, +5.500000e-001f, +9.375000e-001f, +1.400000e+000f, +1.937500e+000f, +2.550000e+000f, +3.237500e+000f, +4.000000e+000f } /* data */ - }, /* End Beta Fine #1 */ - { /* Beta Fine #2 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +2.035449e-001f, +4.713672e-001f, +8.034668e-001f, +1.199844e+000f, +1.660498e+000f, +2.185430e+000f, +2.774639e+000f, +3.428125e+000f } /* data */ - }, /* End Beta Fine #2 */ - { /* Beta Fine #3 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +1.729297e-001f, +4.004688e-001f, +6.826172e-001f, +1.019375e+000f, +1.410742e+000f, +1.856719e+000f, +2.357305e+000f, +2.912500e+000f } /* data */ - }, /* End Beta Fine #3 */ - { /* Beta Fine #4 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +1.456543e-001f, +3.373047e-001f, +5.749512e-001f, +8.585938e-001f, +1.188232e+000f, +1.563867e+000f, +1.985498e+000f, +2.453125e+000f } /* data */ - }, /* End Beta Fine #4 */ - { /* Beta Fine #5 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +1.217188e-001f, +2.818750e-001f, +4.804688e-001f, +7.175000e-001f, +9.929688e-001f, +1.306875e+000f, +1.659219e+000f, +2.050000e+000f } /* data */ - }, /* End Beta Fine #5 */ - { /* Beta Fine #6 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +1.011230e-001f, +2.341797e-001f, +3.991699e-001f, +5.960938e-001f, +8.249512e-001f, +1.085742e+000f, +1.378467e+000f, +1.703125e+000f } /* data */ - }, /* End Beta Fine #6 */ - { /* Beta Fine #7 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +8.386719e-002f, +1.942188e-001f, +3.310547e-001f, +4.943750e-001f, +6.841797e-001f, +9.004688e-001f, +1.143242e+000f, +1.412500e+000f } /* data */ - }, /* End Beta Fine #7 */ - { /* Beta Fine #8 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +6.995117e-002f, +1.619922e-001f, +2.761230e-001f, +4.123438e-001f, +5.706543e-001f, +7.510547e-001f, +9.535449e-001f, +1.178125e+000f } /* data */ - }, /* End Beta Fine #8 */ - { /* Beta Fine #9 */ - 9, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +5.937500e-002f, +1.375000e-001f, +2.343750e-001f, +3.500000e-001f, +4.843750e-001f, +6.375000e-001f, +8.093750e-001f, +1.000000e+000f } /* data */ - } /* End Beta Fine #9 */ - }, - { - { /* Beta Coarse #1 */ - 5, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +5.500000e-001f, +1.400000e+000f, +2.550000e+000f, +4.000000e+000f } /* data */ - }, /* End Beta Coarse #1 */ - { /* Beta Coarse #2 */ - 5, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +4.004688e-001f, +1.019375e+000f, +1.856719e+000f, +2.912500e+000f } /* data */ - }, /* End Beta Coarse #2 */ - { /* Beta Coarse #3 */ - 5, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +2.818750e-001f, +7.175000e-001f, +1.306875e+000f, +2.050000e+000f } /* data */ - }, /* End Beta Coarse #3 */ - { /* Beta Coarse #4 */ - 5, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +1.942188e-001f, +4.943750e-001f, +9.004688e-001f, +1.412500e+000f } /* data */ - }, /* End Beta Coarse #4 */ - { /* Beta Coarse #5 */ - 5, /* nquant */ - 0, /* offset */ - { +0.000000e+000f, +1.375000e-001f, +3.500000e-001f, +6.375000e-001f, +1.000000e+000f } /* data */ - } /* End Beta Coarse #5 */ - } + +/*----------------------------------------------------------------------* + * MC ParamUpmix ROM tables + *-----------------------------------------------------------------------*/ + +const ACPL_QUANT_TABLE ivas_mc_paramupmix_alpha_quant_table[] = +{ + /* Alfa Fine */ + { + 33, /* nquant */ + 16, /* offset */ + { -2.000000e+000f, -1.809375e+000f, -1.637500e+000f, -1.484375e+000f, -1.350000e+000f, -1.234375e+000f, -1.137500e+000f, -1.059375e+000f, -1.000000e+000f, -9.406250e-001f, + -8.625000e-001f, -7.656250e-001f, -6.500000e-001f, -5.156250e-001f, -3.625000e-001f, -1.906250e-001f, +0.000000e+000f, +1.906250e-001f, +3.625000e-001f, +5.156250e-001f, + +6.500000e-001f, +7.656250e-001f, +8.625000e-001f, +9.406250e-001f, +1.000000e+000f, +1.059375e+000f, +1.137500e+000f, +1.234375e+000f, +1.350000e+000f, +1.484375e+000f, + +1.637500e+000f, +1.809375e+000f, +2.000000e+000f } /* data */ + }, + { /* Alfa Coarse */ + 17, /* nquant */ + 8, /* offset */ + { -2.000000e+000f, -1.637500e+000f, -1.350000e+000f, -1.137500e+000f, -1.000000e+000f, -8.625000e-001f, -6.500000e-001f, -3.625000e-001f, +0.000000e+000f, +3.625000e-001f, + +6.500000e-001f, +8.625000e-001f, +1.000000e+000f, +1.137500e+000f, +1.350000e+000f, +1.637500e+000f, +2.000000e+000f } /* data */ + } +}; + +const ACPL_QUANT_TABLE ivas_mc_paramupmix_beta_quant_table[2][9] = +{ + { + /* Beta Fine #1 */ + { + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +2.375000e-001f, +5.500000e-001f, +9.375000e-001f, +1.400000e+000f, +1.937500e+000f, +2.550000e+000f, +3.237500e+000f, +4.000000e+000f } /* data */ + }, + { /* Beta Fine #2 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +2.035449e-001f, +4.713672e-001f, +8.034668e-001f, +1.199844e+000f, +1.660498e+000f, +2.185430e+000f, +2.774639e+000f, +3.428125e+000f } /* data */ + }, + { /* Beta Fine #3 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +1.729297e-001f, +4.004688e-001f, +6.826172e-001f, +1.019375e+000f, +1.410742e+000f, +1.856719e+000f, +2.357305e+000f, +2.912500e+000f } /* data */ + }, + { /* Beta Fine #4 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +1.456543e-001f, +3.373047e-001f, +5.749512e-001f, +8.585938e-001f, +1.188232e+000f, +1.563867e+000f, +1.985498e+000f, +2.453125e+000f } /* data */ + }, + { /* Beta Fine #5 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +1.217188e-001f, +2.818750e-001f, +4.804688e-001f, +7.175000e-001f, +9.929688e-001f, +1.306875e+000f, +1.659219e+000f, +2.050000e+000f } /* data */ + }, + { /* Beta Fine #6 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +1.011230e-001f, +2.341797e-001f, +3.991699e-001f, +5.960938e-001f, +8.249512e-001f, +1.085742e+000f, +1.378467e+000f, +1.703125e+000f } /* data */ + }, + { /* Beta Fine #7 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +8.386719e-002f, +1.942188e-001f, +3.310547e-001f, +4.943750e-001f, +6.841797e-001f, +9.004688e-001f, +1.143242e+000f, +1.412500e+000f } /* data */ + }, + { /* Beta Fine #8 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +6.995117e-002f, +1.619922e-001f, +2.761230e-001f, +4.123438e-001f, +5.706543e-001f, +7.510547e-001f, +9.535449e-001f, +1.178125e+000f } /* data */ + }, + { /* Beta Fine #9 */ + 9, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +5.937500e-002f, +1.375000e-001f, +2.343750e-001f, +3.500000e-001f, +4.843750e-001f, +6.375000e-001f, +8.093750e-001f, +1.000000e+000f } /* data */ + } + }, + { + /* Beta Coarse #1 */ + { + 5, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +5.500000e-001f, +1.400000e+000f, +2.550000e+000f, +4.000000e+000f } /* data */ + }, + { /* Beta Coarse #2 */ + 5, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +4.004688e-001f, +1.019375e+000f, +1.856719e+000f, +2.912500e+000f } /* data */ + }, + { /* Beta Coarse #3 */ + 5, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +2.818750e-001f, +7.175000e-001f, +1.306875e+000f, +2.050000e+000f } /* data */ + }, + { /* Beta Coarse #4 */ + 5, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +1.942188e-001f, +4.943750e-001f, +9.004688e-001f, +1.412500e+000f } /* data */ + }, + { /* Beta Coarse #5 */ + 5, /* nquant */ + 0, /* offset */ + { +0.000000e+000f, +1.375000e-001f, +3.500000e-001f, +6.375000e-001f, +1.000000e+000f } /* data */ + } + } }; /* clang-format on */ diff --git a/lib_com/ivas_rom_com.h b/lib_com/ivas_rom_com.h index 8dc958e06c9a0e3ff3c3c37add4c722a0a719888..c559a4f382d73f30076b42a3c6ca56242598c5da 100644 --- a/lib_com/ivas_rom_com.h +++ b/lib_com/ivas_rom_com.h @@ -180,7 +180,9 @@ extern const ivas_huff_models_t ivas_huff_drct_r_consts[TOTAL_DRCT_QUANT_STRATS] extern const ivas_huff_models_t ivas_huff_decd_r_consts[TOTAL_DECD_QUANT_STRATS]; extern const ivas_spar_br_table_t ivas_spar_br_table_consts[IVAS_SPAR_BR_TABLE_LEN]; extern const int16_t remix_order_set[1][DIRAC_MAX_ANA_CHANS]; +#ifdef SPAR_HOA_DBG extern const int16_t keep_planar[IVAS_SPAR_MAX_CH - FOA_CHANNELS]; +#endif extern const int16_t HOA_keep_ind[IVAS_SPAR_MAX_FB_IN_CHAN]; extern const int16_t HOA_keep_ind_spar[IVAS_SPAR_MAX_CH]; extern const int16_t HOA_keep_ind_spar512[IVAS_SPAR_MAX_CH]; @@ -260,7 +262,6 @@ extern const uint16_t ivas_param_mc_sym_freq_icc_combined_48_16bits[PARAM_MC_SZ_ extern const uint16_t ivas_param_mc_cum_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER]; extern const uint16_t ivas_param_mc_sym_freq_icc_delta_combined_48_16bits[2 * PARAM_MC_SZ_ICC_QUANTIZER - 1]; - /*----------------------------------------------------------------------------------* * Parametric Upmix MC ROM tables *----------------------------------------------------------------------------------*/ @@ -326,6 +327,16 @@ extern const float cb_azi_chan[]; extern const float McMASA_LFEGain_vectors[64]; +/*----------------------------------------------------------------------------------* + * MASA and ISM (OMASA) combined format ROM tables + *----------------------------------------------------------------------------------*/ + +extern const int32_t sep_object_brate[][MAX_NUM_OBJECTS]; +extern const float dct4[]; +extern const float dct5[]; +extern const float dct8[]; +extern const float dct12[]; + /*----------------------------------------------------------------------------------* * ISM ROM tables *----------------------------------------------------------------------------------*/ @@ -339,7 +350,6 @@ extern const float ism_elevation_borders[4]; extern const int16_t Param_ISM_band_grouping[MAX_PARAM_ISM_NBANDS + 1]; - /*----------------------------------------------------------------------------------* * LFE coding ROM tables *----------------------------------------------------------------------------------*/ @@ -418,6 +428,7 @@ extern const int16_t ivas_num_active_bands[FB - WB + 1]; /*------------------------------------------------------------------------------------------* * SNS MSVQ codebooks and means *------------------------------------------------------------------------------------------*/ + extern const int16_t ivas_sns_cdbks_tcx20_levels[]; extern const int16_t ivas_sns_cdbks_tcx20_bits[]; @@ -435,13 +446,19 @@ extern const int16_t ivas_sns_cdbks_side_tcx10_bits[]; extern const float *const ivas_sns_cdbks_side_tcx20[]; extern const float *const ivas_sns_cdbks_side_tcx10[]; -extern ACPL_QUANT_TABLE alpha_quant_table[]; -extern ACPL_QUANT_TABLE beta_quant_table[2][9]; - /* means and codebooks for the split VQ in the 2-stage SNS VQ */ extern const int16_t sns_1st_cdbk[2][2][8 * 32]; extern const int16_t sns_1st_means_16k[2][16]; extern const int16_t sns_1st_means_25k6[2][16]; extern const int16_t sns_1st_means_32k[2][16]; + + +/*----------------------------------------------------------------------* + * MC ParamUpmix ROM tables + *-----------------------------------------------------------------------*/ + +extern const ACPL_QUANT_TABLE ivas_mc_paramupmix_alpha_quant_table[]; +extern const ACPL_QUANT_TABLE ivas_mc_paramupmix_beta_quant_table[2][9]; + /* IVAS_ROM_COM_H */ #endif diff --git a/lib_com/ivas_sba_config.c b/lib_com/ivas_sba_config.c index a81e7921954167f7d63e2ec3d70aa25ea8d88c51..baf899e1f501b20489a039e992e068a64ed7fcd0 100644 --- a/lib_com/ivas_sba_config.c +++ b/lib_com/ivas_sba_config.c @@ -224,8 +224,7 @@ int16_t ivas_sba_get_nchan_metadata( { if ( ivas_total_brate >= IVAS_512k ) { - nb_channels = ( SBA_HOA2_ORDER + 1 ) * ( SBA_HOA2_ORDER + 1 ); - nb_channels += 2; + nb_channels = IVAS_SPAR_MAX_CH; nb_channels = min( nb_channels, ( sba_order + 1 ) * ( sba_order + 1 ) ); } else @@ -312,10 +311,10 @@ void ivas_sba_get_spar_hoa_md_flag( *-------------------------------------------------------------------*/ void ivas_sba_zero_vert_comp( - float sba_data[][L_FRAME48k], /* i : SBA signals */ - const int16_t sba_order, /* i : SBA order */ - const int16_t sba_planar, /* i : SBA planar flag */ - const int16_t input_frame /* i : frame length */ + float *sba_data[], /* i : SBA signals */ + const int16_t sba_order, /* i : SBA order */ + const int16_t sba_planar, /* i : SBA planar flag */ + const int16_t input_frame /* i : frame length */ ) { int16_t i, j; diff --git a/lib_com/ivas_spar_com.c b/lib_com/ivas_spar_com.c index ebc9c894665ae17a7d395cd66d4457af85eb7473..195a51432aabbceae5249c567bdf909d749ee8d0 100644 --- a/lib_com/ivas_spar_com.c +++ b/lib_com/ivas_spar_com.c @@ -77,11 +77,11 @@ *------------------------------------------------------------------------------------------*/ -static void ivas_get_pred_coeffs( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], float ppPred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], float ppDM_Fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], const int16_t in_chans, const int16_t start_band, const int16_t end_band, const int16_t active_w, const int16_t active_w_vlbr, const int16_t dtx_vad, const int16_t from_dirac ); +static void ivas_get_pred_coeffs( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], float ppPred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], float ppDM_Fv_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], const int16_t in_chans, const int16_t start_band, const int16_t end_band, const int16_t active_w, const int16_t active_w_vlbr, const int16_t dtx_vad, const int16_t from_dirac, const int16_t dyn_active_w_flag, const int16_t res_ind ); static void ivas_reorder_array( float in_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS], const int16_t in_chans, const int16_t order[IVAS_SPAR_MAX_CH], float ***mixer_mat, const int16_t start_band, const int16_t end_band ); -static void ivas_get_Wscaling_factor( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], float pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], 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 *pNum_dmx, const int16_t bands_bw, const int16_t active_w, const int16_t active_w_vlbr, float *pWscale ); +static void ivas_get_Wscaling_factor( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], float pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS], 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 *pNum_dmx, const int16_t bands_bw, const int16_t active_w, const int16_t active_w_vlbr, float *pWscale, const int16_t dyn_active_w_flag ); static void ivas_calc_post_pred_per_band( float *pppCov_mat_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], float ***mixer_mat, const int16_t num_ch, const int16_t num_dmx, const int16_t band_idx, float postpred_cov_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH] ); @@ -462,7 +462,9 @@ static void ivas_get_pred_coeffs( const int16_t active_w, const int16_t active_w_vlbr, const int16_t dtx_vad, - const int16_t from_dirac ) + const int16_t from_dirac, + const int16_t dyn_active_w_flag, + const int16_t res_ind ) { int16_t i, j, k, b; float abs_value; @@ -517,7 +519,17 @@ static void ivas_get_pred_coeffs( float real[IVAS_SPAR_MAX_CH - 1], dm_beta_re = 0, dm_g[IVAS_MAX_NUM_BANDS]; float dm_f_local, dm_w, dm_y, DM_F[IVAS_MAX_NUM_BANDS]; float num_f, den_f, passive_g; - float g_th_sq = IVAS_LIN_ACTIVEW_QUAD_ACTIVEW_THRESH * IVAS_LIN_ACTIVEW_QUAD_ACTIVEW_THRESH; + float activew_quad_thresh, g_th_sq; + + if ( dyn_active_w_flag == 1 ) + { + activew_quad_thresh = 1.0f; + } + else + { + activew_quad_thresh = IVAS_LIN_ACTIVEW_QUAD_ACTIVEW_THRESH; + } + g_th_sq = activew_quad_thresh * activew_quad_thresh; set_zero( dm_alpha, IVAS_MAX_NUM_BANDS ); @@ -580,7 +592,19 @@ static void ivas_get_pred_coeffs( den_f = max( dm_w, 1e-20f ); passive_g = dm_alpha[b] / den_f; - if ( passive_g < IVAS_LIN_ACTIVEW_QUAD_ACTIVEW_THRESH ) + if ( dyn_active_w_flag == 1 ) + { + dm_alpha[b] = 0.0f; + dm_w = 0.0f; + for ( i = 0; i < pred_dim; i++ ) + { + dm_v_re[i][b] = 0.0f; + } + dm_v_re[res_ind - 1][b] = 1.0f; + passive_g = activew_quad_thresh; + } + + if ( passive_g < activew_quad_thresh ) { /*linear activeW*/ dm_y = 0; @@ -604,7 +628,9 @@ static void ivas_get_pred_coeffs( float sqrt_val; /* quadratic activeW */ - num_f = ( dm_beta_re - ( 2 * dm_alpha[b] * IVAS_LIN_ACTIVEW_QUAD_ACTIVEW_THRESH ) ); + + num_f = ( dm_beta_re - ( 2 * dm_alpha[b] * activew_quad_thresh ) ); + sqrt_val = 4 * dm_alpha[b] * dm_alpha[b] * g_th_sq; sqrt_val += dm_beta_re * dm_beta_re; sqrt_val -= 4 * dm_beta_re * g_th_sq * dm_w; @@ -613,7 +639,7 @@ static void ivas_get_pred_coeffs( den_f = 2 * dm_beta_re * g_th_sq; den_f = max( den_f, 1e-20f ); - dm_g[b] = IVAS_LIN_ACTIVEW_QUAD_ACTIVEW_THRESH; + dm_g[b] = activew_quad_thresh; DM_F[b] = ( dm_g[b] * num_f ) / den_f; } } @@ -651,7 +677,8 @@ static void ivas_get_Wscaling_factor( const int16_t bands_bw, const int16_t active_w, const int16_t active_w_vlbr, - float *pWscale ) + float *pWscale, + const int16_t dyn_active_w_flag ) { int16_t b, ch; float dm_f_local, abs_val; @@ -670,7 +697,7 @@ static void ivas_get_Wscaling_factor( { pWscale[b] = 1; - if ( ( active_w == 1 ) && ( pNum_dmx[b * bands_bw] == 1 ) ) + if ( ( active_w == 1 ) && ( dyn_active_w_flag == 0 ) ) { float Gw_sq, g_sq = 0; @@ -802,27 +829,6 @@ void ivas_create_fullr_dmx_mat( { ivas_reorder_array( down_mix_mat1_re, in_chans, order, mixer_mat, start_band, end_band ); } - else - { - /* Custom 4x4 mult for WYiX case */ - for ( i = 0; i < in_chans; i++ ) - { - for ( b = start_band; b < end_band; b++ ) - { - /* row 0 */ - mixer_mat[0][i][b] = down_mix_mat1_re[0][i][b]; - - /*row 1 */ - mixer_mat[1][i][b] = IVAS_REMIX_MULT_FAC * ( down_mix_mat1_re[1][i][b] ); - - /* row 3 */ - mixer_mat[2][i][b] = IVAS_REMIX_MULT_FAC * ( down_mix_mat1_re[1][i][b] ); - - /* row 4 */ - mixer_mat[3][i][b] = down_mix_mat1_re[2][i][b]; - } - } - } return; } @@ -931,18 +937,6 @@ static void ivas_calc_post_pred_per_band( postpred_cov_re[i][j] = postpred_cov_re[j][i]; } } -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n Postpred cov: (band %d)\n", band_idx); - for (i = 0; i < num_ch; i++) - { - for (j = 0; j < num_ch; j++) - { - fprintf(stderr, "%f, ", postpred_cov_re[i][j]); - } - fprintf(stderr, "\n"); - } - fprintf(stderr, "\n\n"); */ -#endif return; } @@ -1254,7 +1248,7 @@ void ivas_calc_c_p_coeffs( const int16_t band_idx, const int16_t dtx_vad, const int16_t compute_p_flag, - const int16_t planarCP ) + const int16_t dyn_active_w_flag ) { int16_t i, j; float postpred_cov_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; @@ -1268,33 +1262,26 @@ void ivas_calc_c_p_coeffs( ivas_calc_c_coeffs_per_band( pSparMd, i_ts, postpred_cov_re, num_ch, num_dmx, band_idx, dtx_vad ); } - if ( planarCP ) + if ( dyn_active_w_flag ) { for ( i = 0; i < num_ch - num_dmx; i++ ) { - if ( !keep_planar[i] ) + for ( j = 0; j < num_dmx - 1; j++ ) { - for ( j = 0; j < num_dmx - 1; j++ ) - { - pSparMd->band_coeffs[band_idx + i_ts * IVAS_MAX_NUM_BANDS].C_re[i][j] = 0.0f; - } + pSparMd->band_coeffs[band_idx + i_ts * IVAS_MAX_NUM_BANDS].C_re[i][j] = 0.0f; } } } - if ( compute_p_flag == 1 ) { ivas_calc_p_coeffs_per_band( pSparMd, i_ts, postpred_cov_re, num_ch, dtx_vad, num_dmx, band_idx ); } - if ( planarCP ) + if ( dyn_active_w_flag ) { for ( i = num_dmx; i < num_ch; i++ ) { - if ( !keep_planar[i - num_dmx] ) - { - pSparMd->band_coeffs[band_idx + i_ts * IVAS_MAX_NUM_BANDS].P_re[i - num_dmx] = 0; - } + pSparMd->band_coeffs[band_idx + i_ts * IVAS_MAX_NUM_BANDS].P_re[i - num_dmx] = 0; } } } @@ -1548,48 +1535,17 @@ void ivas_compute_spar_params( ivas_spar_md_com_cfg *hSparCfg, ivas_spar_md_t *hSparMd, float *pWscale, - const int16_t from_dirac ) + const int16_t from_dirac, + const int16_t dyn_active_w_flag ) { float pred_coeffs_re[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS]; int16_t b, i, ndm; - ivas_get_pred_coeffs( cov_real, pred_coeffs_re, dm_fv_re, num_ch, start_band, end_band, active_w, - active_w_vlbr, - dtx_vad, from_dirac ); - -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n Prediction Coefficients:\n"); + ivas_get_pred_coeffs( cov_real, pred_coeffs_re, dm_fv_re, num_ch, start_band, end_band, active_w, active_w_vlbr, dtx_vad, from_dirac, dyn_active_w_flag, hSparMd->res_ind ); - for (i = 0; i < num_ch - 1; i++) - { - for (j = start_band; j < end_band; j++) - { - fprintf(stderr, "%f, ", pred_coeffs_re[i][j]); - } - fprintf(stderr, "\n"); - } - fprintf(stderr, "\n\n"); */ -#endif ivas_create_fullr_dmx_mat( pred_coeffs_re, dm_fv_re, mixer_mat, num_ch, start_band, end_band, active_w, hSparCfg ); -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n 1st DMX matrix (band 0):\n"); - - for (i = 0; i < num_ch; i++) - { - for (j = 0; j < num_ch; j++) - { - fprintf(stderr, "%f, ", mixer_mat[i][j][0]); - } - fprintf(stderr, "\n"); - } - fprintf(stderr, "\n\n");*/ -#endif - - ivas_get_Wscaling_factor( cov_real, pred_coeffs_re, mixer_mat, start_band, end_band, dtx_vad, num_ch, - hSparCfg->num_dmx_chans_per_band, bands_bw, active_w, - active_w_vlbr, - pWscale ); + ivas_get_Wscaling_factor( cov_real, pred_coeffs_re, mixer_mat, start_band, end_band, dtx_vad, num_ch, hSparCfg->num_dmx_chans_per_band, bands_bw, active_w, active_w_vlbr, pWscale, dyn_active_w_flag ); for ( b = start_band; b < end_band; b++ ) { @@ -1611,7 +1567,7 @@ void ivas_compute_spar_params( if ( ndm != num_ch ) { - ivas_calc_c_p_coeffs( hSparMd, cov_real, i_ts, mixer_mat, num_ch, ndm, b, dtx_vad, 1, 0 ); + ivas_calc_c_p_coeffs( hSparMd, cov_real, i_ts, mixer_mat, num_ch, ndm, b, dtx_vad, 1, dyn_active_w_flag ); #ifdef SPAR_HOA_DBG /* if (b == 0) */ @@ -1661,7 +1617,8 @@ void ivas_get_spar_md_from_dirac( 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 active_w_vlbr, + const int16_t dyn_active_w_flag ) { int16_t num_ch, band, i, j; int16_t block, ch; @@ -1675,6 +1632,8 @@ void ivas_get_spar_md_from_dirac( float **ppMixer_mat[IVAS_MAX_FB_MIXER_OUT_CH]; float *pMixer_mat[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]; float en_ratio_fac, diff_norm_order1, diff_norm_order2, diff_norm_order3; + int16_t active_w; + int16_t ndm, foa_ch, hoa2_ch; float P_dir_fact[IVAS_SPAR_MAX_CH - 1]; const int16_t *remix_order; @@ -1750,7 +1709,7 @@ void ivas_get_spar_md_from_dirac( { for ( band = start_band; band < end_band; band++ ) { - ndm = hSpar_md_cfg->num_dmx_chans_per_band[band - 1]; + ndm = hSpar_md_cfg->num_dmx_chans_per_band[band]; /*SPAR from DirAC*/ set_f( response_avg, 0.0f, MAX_OUTPUT_CHANNELS ); @@ -1832,7 +1791,6 @@ void ivas_get_spar_md_from_dirac( en_ratio_fac = ( 1.0f - diffuseness[band] ); - for ( i = 0; i < num_ch; i++ ) { for ( j = 0; j < num_ch; j++ ) @@ -1928,8 +1886,9 @@ void ivas_get_spar_md_from_dirac( } #endif - ivas_compute_spar_params( pCov_real, dm_fv_re, i_ts, ppMixer_mat, start_band, end_band, dtx_vad, - num_ch, 1, hSpar_md_cfg->active_w, active_w_vlbr, hSpar_md_cfg, hSpar_md, Wscale, 1 ); + active_w = ( dyn_active_w_flag == 1 ) || ( hSpar_md_cfg->active_w == 1 ); + + ivas_compute_spar_params( pCov_real, dm_fv_re, i_ts, ppMixer_mat, start_band, end_band, dtx_vad, num_ch, 1, active_w, active_w_vlbr, hSpar_md_cfg, hSpar_md, Wscale, 1, dyn_active_w_flag ); if ( mixer_mat != NULL ) { diff --git a/lib_com/ivas_spar_com_quant_util.c b/lib_com/ivas_spar_com_quant_util.c index 355e02ca76d05b1d187e3b950aa9ddd30e2b3ec1..863177130b74bf6fb0e86de770585110a2a80c50 100644 --- a/lib_com/ivas_spar_com_quant_util.c +++ b/lib_com/ivas_spar_com_quant_util.c @@ -243,11 +243,9 @@ void ivas_copy_band_coeffs_idx_to_arr( const int16_t nB, int16_t *pSymbol_re, ivas_cell_dim_t *pCell_dims, - const ivas_coeffs_type_t coeff_type, - const int16_t planarCP ) + const ivas_coeffs_type_t coeff_type ) { int16_t i, len; - int16_t j, k; int16_t *pPtr_idx = NULL; for ( i = 0; i < nB; i++ ) @@ -277,24 +275,8 @@ void ivas_copy_band_coeffs_idx_to_arr( len = pCell_dims[i].dim1 * pCell_dims[i].dim2; if ( ( coeff_type != DECX_COEFF ) ) { - if ( ( coeff_type == PRED_COEFF ) || !planarCP ) - { - mvs2s( pPtr_idx, pSymbol_re, len ); - pSymbol_re += len; - } - else - { - k = 0; - for ( j = 0; j < len; j++ ) - { - if ( keep_planar[(int16_t) floor( j / pCell_dims[i].dim2 )] ) - { - pSymbol_re[k] = pPtr_idx[j]; - k++; - } - } - pSymbol_re += k; - } + mvs2s( pPtr_idx, pSymbol_re, len ); + pSymbol_re += len; } } @@ -311,19 +293,46 @@ void ivas_copy_band_coeffs_idx_to_arr( void ivas_clear_band_coeffs( ivas_band_coeffs_t *pband_coeffs, +#ifdef CR_FIX_698_SBA_MSAN + const uint16_t num_bands, + const uint16_t num_ts ) +#else const uint16_t num_bands ) +#endif { +#ifdef CR_FIX_698_SBA_MSAN + uint16_t i, j; +#else uint16_t i; +#endif +#ifdef CR_FIX_698_SBA_MSAN + for ( j = 0; j < num_ts; j++ ) +#else for ( i = 0; i < num_bands; i++ ) +#endif { +#ifndef CR_FIX_698_SBA_MSAN set_zero( (float *) pband_coeffs[i].C_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) ); set_zero( (float *) pband_coeffs[i].P_re, ( IVAS_SPAR_MAX_CH - 1 ) ); set_zero( (float *) pband_coeffs[i].C_quant_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) ); set_zero( (float *) pband_coeffs[i].P_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) ); set_zero( pband_coeffs[i].pred_re, ( IVAS_SPAR_MAX_CH - 1 ) ); +#endif +#ifdef CR_FIX_698_SBA_MSAN + for ( i = 0; i < num_bands; i++ ) + { + set_zero( (float *) pband_coeffs[i + j * num_bands].C_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) ); + set_zero( (float *) pband_coeffs[i + j * num_bands].P_re, ( IVAS_SPAR_MAX_CH - 1 ) ); + set_zero( (float *) pband_coeffs[i + j * num_bands].C_quant_re, ( IVAS_SPAR_MAX_CH - IVAS_SPAR_MAX_DMX_CHS ) * ( IVAS_SPAR_MAX_DMX_CHS - 1 ) ); + set_zero( (float *) pband_coeffs[i + j * num_bands].P_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) ); + set_zero( pband_coeffs[i + j * num_bands].pred_re, ( IVAS_SPAR_MAX_CH - 1 ) ); + set_zero( pband_coeffs[i + j * num_bands].pred_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) ); + } +#else set_zero( pband_coeffs[i].pred_quant_re, ( IVAS_SPAR_MAX_CH - 1 ) ); +#endif } return; diff --git a/lib_com/ivas_stat_com.h b/lib_com/ivas_stat_com.h index 51337f1c5cd79e35aae5242e3804638d60b080c3..4e9a7bff9ffcbcc288f19023cb9d63b5b042cb56 100644 --- a/lib_com/ivas_stat_com.h +++ b/lib_com/ivas_stat_com.h @@ -81,6 +81,12 @@ typedef struct int16_t ism_md_inc_diff_cnt; /* counter of continuous frames where MD are transmitted in inactive segments when MD significantly changes */ float last_true_radius; /* last true Q radius value */ + int16_t ism_imp; /* ISM importance flag */ + int16_t ism_md_null_flag; + int16_t ism_md_lowrate_flag; + float q_azimuth_old; + float q_elevation_old; + } ISM_METADATA_FRAME, *ISM_METADATA_HANDLE; @@ -169,10 +175,8 @@ typedef struct ivas_param_ism_data_structure int16_t noisy_speech_buffer[PARAM_ISM_HYS_BUF_SIZE]; int16_t flag_equal_energy; -#ifdef FIX_549_DMX_GAIN float last_dmx_gain; float last_cardioid_left[MAX_NUM_OBJECTS]; -#endif } PARAM_ISM_CONFIG_DATA, *PARAM_ISM_CONFIG_HANDLE; @@ -223,6 +227,9 @@ typedef struct ivas_spar_md_t int16_t dtx_vad; float en_ratio_slow[IVAS_MAX_NUM_BANDS]; float ref_pow_slow[IVAS_MAX_NUM_BANDS]; + int16_t res_ind; + int16_t prior_dyn_active_w_flag; + } ivas_spar_md_t; typedef struct ivas_spar_md_prev_t @@ -444,6 +451,14 @@ typedef struct ivas_masa_common_spatial_meta_struct } MASA_COMMON_SPATIAL_META; +typedef struct ivas_omasa_meta_struct +{ + uint8_t num_dirs; + MASA_DIRECTIONAL_SPATIAL_META directional_meta[MASA_MAXIMUM_DIRECTIONS]; + MASA_COMMON_SPATIAL_META common_meta; + +} OMASA_SPATIAL_META, *OMASA_SPATIAL_META_HANDLE; + typedef struct ivas_masa_metadata_frame_struct { MASA_DECRIPTIVE_META descriptive_meta; @@ -464,6 +479,7 @@ typedef struct ivas_masa_config_struct uint8_t useCoherence; uint8_t coherencePresent; uint8_t mergeRatiosOverSubframes; + IVAS_FORMAT input_ivas_format; } MASA_CODEC_CONFIG; @@ -542,6 +558,7 @@ typedef struct ivas_masa_qmetadata_frame_struct int16_t metadata_max_bits; /* maximum allowed number of bits for metadata per frame */ uint8_t useLowerRes; uint8_t useLowerBandRes; + int16_t dirac_mono_flag; IVAS_SURROUND_COHERENCE_BAND_DATA *surcoh_band_data; /* Additional helper values to include all data required for writing to output file */ diff --git a/lib_com/ivas_stereo_ica_com.c b/lib_com/ivas_stereo_ica_com.c index f2fd09eca313f023215b7eb1cbff33a5c0d9c2c4..a68a9a709acc072f801cc669b1e33eae02617a42 100644 --- a/lib_com/ivas_stereo_ica_com.c +++ b/lib_com/ivas_stereo_ica_com.c @@ -77,7 +77,6 @@ static void interpTargetChannel( return; } - /* IVAS-220: QCToDo: (check N for dependency on the inputFs) */ N = L_shift_adapt; factor = ( (float) N ) / abs( d ); interp_factor2 = factor / INTERP_FACTOR1; diff --git a/lib_com/ivas_stereo_td_bit_alloc.c b/lib_com/ivas_stereo_td_bit_alloc.c index dee56c5dff17f6b34fb245fcf8beb729603e6b09..8282cb9dbdd173f65ea34d91eed100e0cfbc9b74 100644 --- a/lib_com/ivas_stereo_td_bit_alloc.c +++ b/lib_com/ivas_stereo_td_bit_alloc.c @@ -74,6 +74,8 @@ *-------------------------------------------------------------------*/ 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 */ @@ -136,7 +138,7 @@ void tdm_bit_alloc( *total_brate_sec = tdm_bit_allc_tbl[idx][coder_type]; /* secondary channel bitrate allocation based on the energy scaling ratio */ - if ( ( coder_type != UNVOICED ) || tdm_LRTD_flag == 1 ) + if ( ( ( ivas_format != MASA_ISM_FORMAT || ism_mode == ISM_MODE_NONE ) && ( ( coder_type != UNVOICED ) || tdm_LRTD_flag == 1 ) ) || ( ivas_format == MASA_ISM_FORMAT && ism_mode != ISM_MODE_NONE && coder_type > UNVOICED ) ) { bit_rate_diff = (float) ( element_brate_wo_meta - 2 * *total_brate_sec ); @@ -305,6 +307,8 @@ void tdm_bit_alloc( else { *total_brate_sec = min( *total_brate_sec, element_brate_wo_meta - ( 5900 + BWE_brate ) ); + + *total_brate_sec = max( *total_brate_sec, tdm_bit_allc_tbl[idx][coder_type] ); /* sanity check to ensure the secondary channel always gets the minimal bitrate it needs */ } /* Secondary channel bitrate adjusment */ @@ -416,7 +420,6 @@ void tdm_bit_alloc( *total_brate_sec += 100; } } - *total_brate_pri = element_brate_wo_meta - *total_brate_sec; return; diff --git a/lib_com/ivas_td_decorr.c b/lib_com/ivas_td_decorr.c index 4bf813ac35a0af46eedcaf4a3b91af489d722ae9..9e91517d4d38867c68a4ddc596705b13adcdb1c4 100644 --- a/lib_com/ivas_td_decorr.c +++ b/lib_com/ivas_td_decorr.c @@ -118,7 +118,7 @@ ivas_error ivas_td_decorr_reconfig_dec( ivas_error error; useTdDecorr_new = 0; - if ( ivas_format == SBA_FORMAT ) + if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { if ( nchan_transport == 1 ) { @@ -146,7 +146,7 @@ ivas_error ivas_td_decorr_reconfig_dec( if ( *useTdDecorr ) { - if ( ivas_total_brate >= IVAS_13k2 && ivas_format == SBA_FORMAT ) + if ( ivas_total_brate >= IVAS_13k2 && ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) ) { if ( *hTdDecorr == NULL ) { @@ -326,23 +326,12 @@ static int16_t ivas_get_APD_filt_orders( case IVAS_TD_DECORR_OUT_4CH: num_apd_sections = IVAS_APD_4_SECT; break; - case IVAS_TD_DECORR_OUT_5CH: case IVAS_TD_DECORR_OUT_6CH: case IVAS_TD_DECORR_OUT_7CH: case IVAS_TD_DECORR_OUT_8CH: num_apd_sections = IVAS_APD_8_SECT; break; - case IVAS_TD_DECORR_OUT_9CH: - case IVAS_TD_DECORR_OUT_10CH: - case IVAS_TD_DECORR_OUT_11CH: - case IVAS_TD_DECORR_OUT_12CH: - case IVAS_TD_DECORR_OUT_13CH: - case IVAS_TD_DECORR_OUT_14CH: - case IVAS_TD_DECORR_OUT_15CH: - case IVAS_TD_DECORR_OUT_16CH: - num_apd_sections = IVAS_APD_16_SECT; - break; default: assert( !"Invalid num out chans" ); break; @@ -359,7 +348,6 @@ static int16_t ivas_get_APD_filt_orders( { APD_filt_orders[i] = (int16_t) ceil( output_Fs * IVAS_DECORR_PARM_APD_TAU * R[i] / sum_R ); } - return num_apd_sections; } diff --git a/lib_com/ivas_transient_det.c b/lib_com/ivas_transient_det.c index 1e8f53c7ca5a1d17b7d49501169deaf7634914a6..aac25f50c990b2b93934316d2492cd8845c683a4 100644 --- a/lib_com/ivas_transient_det.c +++ b/lib_com/ivas_transient_det.c @@ -211,11 +211,12 @@ void ivas_transient_det_close( * * Transient detection process call *-----------------------------------------------------------------------------------------*/ + 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 */ + 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 */ ) { float in_duck_gain[L_FRAME48k]; diff --git a/lib_com/lerp.c b/lib_com/lerp.c index 1172710313bbb4057ca425e54c469f9260f74c4b..60e7bf628e415ed8bef6c440aaee372eb04f9dbb 100644 --- a/lib_com/lerp.c +++ b/lib_com/lerp.c @@ -132,7 +132,7 @@ static void lerp_proc( } /* Using the basop code to avoid reading beyond end of input for bufferOldSize=320, bufferNewSize=640 */ - div_s( &tmp, bufferOldSize, shl( bufferNewSize, 4 ) ); + tmp = div_s( bufferOldSize, shl( bufferNewSize, 4 ) ); shift = (float) ( L_shl( L_deposit_l( tmp ), 4 - 15 + 16 ) ) / 65536.0f; pos = 0.5f * shift - 0.5f; diff --git a/lib_com/lsf_tools.c b/lib_com/lsf_tools.c index 2f22dafa6135f48ddd03510c23b0eb4916774246..70d1e655c03f224e1349a54f36a77c349fe97267 100644 --- a/lib_com/lsf_tools.c +++ b/lib_com/lsf_tools.c @@ -2072,9 +2072,9 @@ void dec_FDCNG_MSVQ_stage1( for ( col = 0; col < cdk1_ivas_cols_per_segment[segm_ind]; col++ ) { - dct_vec[col] = (float) ( ( (Word16) cbpW8[col] ) << dct_col_shift_tab[col] ); - /* LOGIC( 1 ); SHIFT( 1 ); ADD( 1 ); - in BASOP: s_and(for W8->W16), shl(), sub() + 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 ); @@ -2444,7 +2444,7 @@ 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 */ - int16_t fdcngvq_dim, /* i : fdcng domain length */ + 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 */ diff --git a/lib_com/options.h b/lib_com/options.h index e4d3a06b589e5bc8982f4c9a738860aa0751817b..be3261f808c63ddbe7560694a0dab540adf8e556 100644 --- a/lib_com/options.h +++ b/lib_com/options.h @@ -124,45 +124,67 @@ /*#define DEBUG_AGC*/ /* debug SPAR AGC in-out */ #endif /*#define SPAR_HOA_DBG*/ /* SPAR HOA debug statements */ +/* #define DEBUG_OSBA */ /*#define DEBUG_BINAURAL_FILTER_DESIGN*/ /* debugging of Crend binaural filter design */ /*#define DEBUG_AGC_ENCODER_CMD_OPTION*/ /* Ability to force enable or disable AGC behaviour in DIRAC/SPAR via command line option */ -#define DEBUG_JBM_CMD_OPTION /* ability for telling the decoder the frontend fetch size and to not delay compensate for bad frames at the beginning */ +/*#define DEBUG_JBM_CMD_OPTION*/ /* ability for telling the decoder the frontend fetch size and to not delay compensate for bad frames at the beginning */ +/*#define VARIABLE_SPEED_DECODING*/ /* variable speed decoding employing the JBM functioniality; move to DEBUGGING after build for disabled is fixed */ -#define VARIABLE_SPEED_DECODING /* variable speed decoding employing the JBM functioniality; move to DEBUGGING after build for disabled is fixed */ +/*Split Rendering Debug switches*/ +/*#define DBG_WAV_WRITER*/ /* add debugging function dbgwrite_wav() */ +/*#define SPLIT_REND_WITH_HEAD_ROT_DEBUG*/ /* debugging switch for split rendering */ +/*#define SPLIT_POSE_CORRECTION_DEBUG*/ /* debugging switch for split rendering pose correction */ +/*#define SPLIT_MD_CODING_DEBUG*/ /* debugging switch for split rendering metadata coding */ -#endif +#endif /* DEBUGGING */ /* #################### End DEBUGGING switches ############################ */ -/* ################# Start DEVELOPMENT switches ######################## */ +/* keep as part of options.h */ #define BASOP_NOGLOB /* Disable global symbols in BASOPs, Overflow/Carry in BASOPs disabled, additional BASOPs in case of Overflow */ + + +/* ################# Start BE DEVELOPMENT switches ######################## */ +/* only BE switches wrt operation points tested in selection */ + /*#define FIX_I4_OL_PITCH*/ /* fix open-loop pitch used for EVS core switching */ +/*#define SPLIT_REND_WITH_HEAD_ROT*/ /* Dlb,FhG: Split Rendering contributions 21 and 35 */ +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define SPLIT_REND_PRED_QUANT_63_PNTS +#define SPLIT_REND_WITH_HEAD_ROT_PARAMBIN /* Nokia: Issue 623: Split rendering support for parambin renderer */ +#define FIX_658_SPLIT_REND_MASA /*Dlb : Fix for issue 658, uninitialized memory access in MASA in Split rendering 0DOF mode*/ +#define OSBA_SPLIT_RENDERING +#endif + +/* ### API_5MS switches start ### */ +#define API_5MS /* FhG: 5ms rendering capability */ +#ifdef API_5MS +#define API_5MS_BASELINE /* FhG: baseline with 20ms rendering and split rendering through 20ms branch */ +#define APLIT_5MS_FIX_TODO +#endif + +#define FIX_718_JBM_MD_UDPATE /* Fhg: fix issue #718, wrong setting of the update flag in the TD obj renderer in the JBM path */ +#define FIX_719_CRASH_IN_CLEANUP /* VA: issue 719: fix Decoder crash after call to goto to cleanup */ + -#define FIX_563_PARAMMC_LIMITER /* FhG: issue 563: fix ILD limiter when coming from silence w/o transient set */ -#define FIX_560_VAD_FLAG /* Eri: Issue 560 - VAD flag issue for unified stereo */ -#define FIX_549_DMX_GAIN /* FhG: issue 549: ParamISM output too quiet */ -#define FIX_470_MASA_JBM_EXT /* Nokia: Issue 470, fix MASA EXT output with JBM */ -#define ISM_FB /* issue 556: change SWB to FB coding in 1ISM at 24.4 kbps */ -#define FIX_558_PLC_DISCONT /* FhG: issue 558: fix discontinuities in DFT Stereo when switching from TCX concealment to ACELP */ -#define FIX_564 /* Nokia: Issue 564: Fix gains in JBM path for SBA with parametric binaural renderer */ -#define FIX_566_2DIR_MASA_384K /* Nokia: Issued 566: Bugfix in 384k MASA metadata encoding of second direction */ -#define FIX_568_ISM_BITRATE_SWITCHING /* Philips: Issue 568: Bugfix for renderer re-initialization by ISM and bitrate switching */ -#define FIX_565_SBA_BURST_IN_FEC /* VA: Issue 565: Fix noise burst during FEC, due to wrong total_brate initialization */ -#define FIX_562_ISM2_64KBPS /* VA: issue 562: fix ISM2 at 64kbps issue */ -#define FIX_559_EXTL_IGF_MISMATCH /* VA: issue 559: fix mismatch between st->extl and st->igf observed as crash in PlanarSBA bitrate switching */ -#define FIX_572_LFE_LPF_ENC /* FhG: issue 572: always apply the low pass filter to the LFE channel */ -#define FIX_QMETA_SID_5k2 /* Nokia: Issue 137: enable using full 5.2k bitrate in MASA SID */ -#define FIX_578_PARAMMC_ILD_BS /* FhG: Issue 578: transmitt also center ILD in band 0 when LFE is active in 3TC ParamMC */ -#define FIX_UNCLR_ISSUE /* VoiceAge: issue 574: Fix UNCLR mis-classifications in noisy speech stereo */ -#define FIX_TCX_LOWRATE_LIMITATION /* VA: issue 577: TCX bitrate limitation only when DEBUGGING is active */ -#define FIX_575_LOW_OVERLAP_PLC_RECOVERY /* FhG: Issue 575 fix for PLC and transistion to TCX5*/ -#define ISM_FB_16k4 /* VA: Issue: 579: change BW from SWB to FB in NxISM conditions to match the EVS codec */ -#define FIX_580_PARAMMC_ENER_BURSTS /* FhG: issue 580: energy bursts due to ILD holding when energy relations change too much */ +/* ################## End BE DEVELOPMENT switches ######################### */ +/* #################### Start NON-BE CR switches ########################## */ +/* any switch which is non-be wrt operation points tested in selection */ +/* all switches in this category should start with "CR_" */ + +#define CR_FIX_585_MASA_2TC_DTX_EXT /* Nokia: issue 585: fixes transition artifacts in MASA 2TC DTX by applying correct condition */ +#define CR_FIX_639_HQ_ACELP_TRANSITION /* Ericsson: Issue 639: Wrong sampling rate of SWB TBE excitation memory in 16 kHz core for DFT Stereo@32 kbps */ +#define CR_FIX_586_BPF_DFT_MEM /* FhG: issue 586: set input memory of DFT analysis of BPF signal to zero for HQ core to fix issue with PLC and bitrate switching */ +#define CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE /* FhG: fix for cng in ISM DTX on sudden silence periods */ +#define CR_FIX_698_SBA_MSAN /* Dlb: issue 698: Uninitialized memory read in SBA init */ + +/* ##################### End NON-BE CR switches ########################### */ /* ################## End DEVELOPMENT switches ######################### */ + /* clang-format on */ #endif diff --git a/lib_com/prot.h b/lib_com/prot.h index 592d0253d3c96bd051a055a394a9f7b23beb6c3b..47469062253eeb20a07cbf44418886540b91302a 100644 --- a/lib_com/prot.h +++ b/lib_com/prot.h @@ -521,12 +521,6 @@ int16_t get_ivas_max_num_indices( const int32_t ivas_total_brate /* i : IVAS total bitrate */ ); -/*! r: maximum number of indices */ -int16_t get_core_max_num_indices( - const int16_t core, /* i : core */ - const int32_t total_brate /* i : total bitrate */ -); - /*! r: maximum number of indices */ int16_t get_BWE_max_num_indices( const int32_t extl_brate /* i : extensiona layer bitrate */ @@ -539,8 +533,9 @@ int16_t get_ivas_max_num_indices_metadata( ); ivas_error ind_list_realloc( - BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle */ - const int16_t max_num_indices /* i : new maximum number of allowed indices in the list */ + 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 */ ); ivas_error check_ind_list_limits( @@ -726,6 +721,10 @@ int32_t get_delay( const int32_t 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 ); void decision_matrix_enc( @@ -1859,9 +1858,9 @@ void apply_envelope_enc( /*! r: Leading_sign_index, index, size, k_val */ PvqEntry mpvq_encode_vec( - const int16_t *vec_in, /* i : Signed pulse train */ - const int16_t dim_in, /* i : Dimension */ - int16_t k_val_local /* i/o : Num unit pulses */ + const int16_t *vec_in, /* i : Signed pulse train */ + const int16_t dim_in, /* i : Dimension */ + int16_t k_val_local /* i/o: Num unit pulses */ ); /*! r: Size, dim, k_val */ @@ -3972,7 +3971,7 @@ void set_impulse( float exc[], /* o : adaptive codebook excitation */ float y1[], /* o : filtered adaptive codebook excitation */ int16_t *imp_shape, /* o : adaptive codebook index */ - int16_t *imp_pos, /* o : position of the glotal impulse center index */ + int16_t *imp_pos, /* o : position of the glottal impulse center index */ float *gain_trans /* o : transition gain */ ); @@ -4931,7 +4930,7 @@ void FEC_encode( int16_t FEC_pos_dec( Decoder_State *st, /* i/o: decoder state structure */ - int16_t *last_pulse_pos, /* o : Last glotal pulse position in the lost ACB */ + int16_t *last_pulse_pos, /* o : Last glottal pulse position in the lost ACB */ float *enr_q, /* o : Decoded energy */ const int16_t nBits_es_Pred /* i : number of bits for Es_pred Q */ ); @@ -7986,7 +7985,7 @@ void writeTCXparam( const int16_t nbits_header, const int16_t nbits_start, const int16_t nbits_lpc, - const int16_t *no_param_tns, /* i : number of TNS parameters per subframe */ + const int16_t *no_param_tns, /* i : number of TNS parameters per subframe */ int16_t p_param[2], /* i/o: pointer to parameters from previous bs writing */ const int16_t target_bitsTCX10[2], const int16_t pre_past_flag ); @@ -8137,7 +8136,7 @@ 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 */ - int16_t fdcngvq_dim, /* i : fdcng domain length */ + 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 */ @@ -8156,12 +8155,12 @@ void extend_dctN_input( /*! r: (p_max , best candidate sofar ) */ int16_t msvq_stage1_dct_search( - const float *u, /* i : target */ - const int16_t N, /* i : target length and IDCT synthesis length */ + const float *u, /* i : target */ + const int16_t N, /* i : target length and IDCT synthesis length */ const int16_t 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 DCTTYPE dcttype, /* e.g. DCT_T2_16_XX, DCT_T2_24_XX; */ const int16_t max_dct_trunc, /* i : maximum of truncation lenghts */ - float *invTrfMatrix, /* i : IDCT synthesis matrix for dim N */ + float *invTrfMatrix, /* i : IDCT synthesis matrix for dim N */ const float *midQ_truncQ, /* i : midQ vector */ const float *dct_invScaleF, /* i : global inv scale factors */ const float *dct_scaleF, /* i : global scale factors */ diff --git a/lib_com/pvq_com.c b/lib_com/pvq_com.c index 133b7b62f743e0bc0720904fc7af82385cc40f92..2368f8436830d2e36068170df8ddc47c5d2e9d38 100644 --- a/lib_com/pvq_com.c +++ b/lib_com/pvq_com.c @@ -200,7 +200,6 @@ static void dsDiracPerQuanta( if ( t_quanta_o > sv[nsv >> 1] ) { dsIndex = nsv - dsIndex; /*single op*/ - ADD( 1 ); } for ( i = frQuanta[0][td] - 1; i >= 0; i-- ) { @@ -787,7 +786,7 @@ Word16 ratio( expNumer = norm_l( numer ); /* exponent */ manNumer = extract_h( L_shl( numer, expNumer ) ); /* mantissa */ manNumer = shr( manNumer, 1 ); /* Ensure the numerator < the denominator */ - div_s( "ient, manNumer, manDenom ); /* in Q14 */ + quotient = div_s( manNumer, manDenom ); /* in Q14 */ *expo = sub( expNumer, expDenom ); @@ -834,7 +833,7 @@ Word16 atan2_fx( */ expo = norm_l( arg ); man = extract_h( L_shl( arg, expo ) ); - div_s( &reciprocal, 0x3fff, man ); + reciprocal = div_s( 0x3fff, man ); expo = sub( 15 + 1, expo ); reciprocal = shr( reciprocal, expo ); /* Q14*/ angle = sub( 25736, reciprocal ); /* Q14 (EVS_PI/2 - 1/x) */ diff --git a/lib_com/rom_com.c b/lib_com/rom_com.c index 1e63eda4804791bcbb69de49d45b597417dcc734..f08f41a1df98eeb46a454f40d21a09ed61aad5e3 100755 --- a/lib_com/rom_com.c +++ b/lib_com/rom_com.c @@ -13714,43 +13714,6 @@ const float SHBCB_SubGain5bit[128] = -1.0319320f, -0.3646283f, -0.2706210f, -0.1999401f }; -/* 5-bit SWB TBE Gain shape codebook in linear domain */ -const float SHBCB_SubGain5bit_Linear[128] = -{ - 0.7148779f, 0.3338397f, 0.3968293f, 0.4288434f, - 0.3704218f, 0.4662302f, 0.4954065f, 0.6119182f, - 0.0953547f, 0.1157587f, 0.8737744f, 0.3276141f, - 0.0248484f, 0.4350941f, 0.5010864f, 0.5405046f, - 0.8070146f, 0.3943615f, 0.3038853f, 0.2585717f, - 0.3227228f, 0.5631068f, 0.2846687f, 0.6520339f, - 0.6003934f, 0.4863782f, 0.4977593f, 0.3544197f, - 0.9627575f, 0.0726042f, 0.0331859f, 0.0280922f, - 0.2727022f, 0.3460397f, 0.4562386f, 0.7493843f, - 0.7453516f, 0.5222745f, 0.2745141f, 0.1279921f, - 0.5206095f, 0.7343889f, 0.2366333f, 0.2559601f, - 0.7099450f, 0.2673885f, 0.1921454f, 0.5261242f, - 0.1327955f, 0.2004371f, 0.3135739f, 0.8913248f, - 0.1027291f, 0.1007387f, 0.0911556f, 0.9689233f, - 0.4677018f, 0.2990939f, 0.3447584f, 0.7242186f, - 0.0247854f, 0.0458665f, 0.3474266f, 0.7023649f, - 0.6324765f, 0.5506413f, 0.3273258f, 0.3947177f, - 0.7742773f, 0.4603549f, 0.1169132f, 0.0621896f, - 0.5940259f, 0.5914681f, 0.4394770f, 0.2279776f, - 0.2424894f, 0.5659803f, 0.5648066f, 0.4951982f, - 0.5773947f, 0.2484205f, 0.6670044f, 0.2593132f, - 0.9295383f, 0.2084896f, 0.1697136f, 0.1662293f, - 0.5284109f, 0.4850199f, 0.4179306f, 0.5341725f, - 0.5046524f, 0.3401957f, 0.5514884f, 0.5382623f, - 0.2758891f, 0.1518727f, 0.6583195f, 0.5768060f, - 0.1783466f, 0.3452303f, 0.5827488f, 0.6721577f, - 0.3645189f, 0.5012657f, 0.6931207f, 0.2671610f, - 0.4139961f, 0.6682788f, 0.4326411f, 0.4004867f, - 0.1617602f, 0.8647654f, 0.3020888f, 0.2133654f, - 0.3137825f, 0.3432938f, 0.7035535f, 0.4934421f, - 0.4418455f, 0.4953783f, 0.5813250f, 0.4439323f, - 0.0929112f, 0.4318886f, 0.5362644f, 0.6310444f -}; - /* 5-bit TD WB BWE temporal shaping codebook */ const float HBCB_SubGain5bit[128] = { diff --git a/lib_com/rom_com.h b/lib_com/rom_com.h index e6284ab417d0b2ef4a0704e8ef60dbdc45e968c2..ad234e26d437c082c9cc11e0625220f0aa2a5275 100644 --- a/lib_com/rom_com.h +++ b/lib_com/rom_com.h @@ -530,7 +530,6 @@ extern const float wb_bwe_lsfvq_cbook_8bit[]; extern const float lbr_wb_bwe_lsfvq_cbook_2bit[]; extern const float swb_tbe_lsfvq_cbook_8b[]; extern const float SHBCB_SubGain5bit[]; /* 5 bit Quantizer table for SHB gain shapes */ -extern const float SHBCB_SubGain5bit_Linear[]; extern const float HBCB_SubGain5bit[]; /* 5-bit TD WB BWE temporal shaping codebook */ extern const float SHBCB_FrameGain64[]; /* 6 bit Quantizer table for SHB overall gain */ extern const float SHBCB_FrameGain16[]; diff --git a/lib_com/stat_com.h b/lib_com/stat_com.h index 79976efa88ab63a6d3eb8948712e899a1e5e1f12..90203dc4700abd848353e13423f3ab42c2386895 100644 --- a/lib_com/stat_com.h +++ b/lib_com/stat_com.h @@ -461,7 +461,7 @@ typedef int16_t ( *TDecodeValue )( struct Decoder_State *st, int16_t index, int1 */ typedef float ( *TLinearPredictionFilter )( const int16_t order, const float parCoeff[], float *state, float x ); -/** Structure that defines mapping between a parameter and a bistream. */ +/** Structure that defines mapping between a parameter and a bitstream. */ typedef struct ParamBitMap { /** Number of bits in a bitstream required for the parameter. @@ -516,7 +516,7 @@ typedef struct ParamBitMap struct ParamsBitMap const *pSubParamBitMap; } ParamBitMap; -/** Structure that defines mapping between parameters and a bistream. */ +/** Structure that defines mapping between parameters and a bitstream. */ typedef struct ParamsBitMap { /** Number of parameters in params. */ @@ -573,7 +573,7 @@ typedef struct } FrameSizeParams; -typedef struct +typedef struct cldfb_filter_bank_struct { int16_t no_channels; int16_t no_col; diff --git a/lib_com/tcq_position_arith.c b/lib_com/tcq_position_arith.c index 186956207473f5e0d1a3197ff7f79c407e49654f..306f29a60b6cecbe071f6bc9a22d9c7389bd5517 100644 --- a/lib_com/tcq_position_arith.c +++ b/lib_com/tcq_position_arith.c @@ -350,7 +350,7 @@ void decode_position_ari_fx( mode_num_nz[0] = MAX_AR_FREQ; for ( i = 0; i < size; i++ ) { - div_l( &tmp, L_deposit_h( size - i - 1 ), size ); + tmp = div_l( L_deposit_h( size - i - 1 ), size ); mode_num_nz[i + 1] = round_fx( L_shr( L_deposit_h( tmp ), 1 ) ); } @@ -377,7 +377,7 @@ void decode_position_ari_fx( } else { - div_l( &tmp, L_deposit_h( nzp ), ( size - i ) ); + tmp = div_l( L_deposit_h( nzp ), ( size - i ) ); cp = L_sub( fxone, tmp ); } scp = Mult_32_16( scp, extract_l( cp ) ); @@ -422,7 +422,7 @@ void decode_position_ari_fx( mode_num_nz[0] = MAX_AR_FREQ; for ( i = 0; i < size; i++ ) { - div_l( &tmp, L_deposit_h( size - i - 1 ), size ); + tmp = div_l( L_deposit_h( size - i - 1 ), size ); mode_num_nz[i + 1] = round_fx( L_shr( L_deposit_h( tmp ), 1 ) ); } @@ -505,7 +505,7 @@ void decode_magnitude_usq_fx( else { Word16 tmp; - div_l( &tmp, L_deposit_h( magnzp ), magnp - i ); + tmp = div_l( L_deposit_h( magnzp ), magnp - i ); cp = L_sub( fxone, tmp ); } @@ -671,7 +671,7 @@ void decode_mangitude_tcq_fx( { exp1 = sub( norm_s( num ), 1 ); exp2 = norm_s( denum ); - div_s( &prob1_fx, shl( num, exp1 ), shl( denum, exp2 ) ); /*15 + exp1 - exp2 */ + prob1_fx = div_s( shl( num, exp1 ), shl( denum, exp2 ) ); /*15 + exp1 - exp2 */ exp = 15 + exp1 - exp2; prob1_fx = shl( prob1_fx, sub( 15, exp ) ); prob0_fx = sub( MAX_16, prob1_fx ); @@ -776,7 +776,7 @@ Word16 GetScale_fx( exp1 = sub( norm_l( bits_fx ), 1 ); exp2 = norm_s( blen - 1 ); - div_l( &tmp, L_shl( bits_fx, exp1 ), shl( blen - 1, exp2 ) ); + tmp = div_l( L_shl( bits_fx, exp1 ), shl( blen - 1, exp2 ) ); b = L_shr( L_deposit_l( tmp ), exp1 - exp2 ); ab = L_add( a, b ); @@ -904,7 +904,7 @@ Word32 encode_position_ari_fx( else { Word16 tmp; - div_l( &tmp, L_deposit_h( nz ), ( size - i ) ); + tmp = div_l( L_deposit_h( nz ), ( size - i ) ); cp = L_sub( fxone, tmp ); } scp = Mult_32_16( scp, extract_l( cp ) ); @@ -945,7 +945,7 @@ Word32 encode_position_ari_fx( for ( i = 0; i < size; i++ ) { Word16 tmp; - div_l( &tmp, L_deposit_h( size - i - 1 ), size ); + tmp = div_l( L_deposit_h( size - i - 1 ), size ); model_num_nz[i + 1] = round_fx( L_shr( L_deposit_h( tmp ), 1 ) ); if ( cur_quants[i] != 0 ) @@ -1010,7 +1010,7 @@ Word32 encode_magnitude_tcq_fx( { exp1 = sub( norm_s( num ), 1 ); exp2 = norm_s( denum ); - div_s( &prob1_fx, shl( num, exp1 ), shl( denum, exp2 ) ); /*15 + exp1 - exp2 */ + prob1_fx = div_s( shl( num, exp1 ), shl( denum, exp2 ) ); /*15 + exp1 - exp2 */ exp = 15 + exp1 - exp2; prob1_fx = shl( prob1_fx, sub( 15, exp ) ); prob0_fx = sub( MAX_16, prob1_fx ); @@ -1133,7 +1133,7 @@ Word32 encode_magnitude_usq_fx( else { Word16 tmp; - div_l( &tmp, L_deposit_h( magnzp ), magnp ); + tmp = div_l( L_deposit_h( magnzp ), magnp ); cp = L_sub( fxone, tmp ); } scp = Mult_32_16( scp, extract_l( cp ) ); diff --git a/lib_debug/debug.c b/lib_debug/debug.c index ce10231876d27e76b141333f2fa70423abb4430e..736f35d43d3b41ca29428063ff654f396e18e3e1 100644 --- a/lib_debug/debug.c +++ b/lib_debug/debug.c @@ -35,6 +35,7 @@ #include #include #include +#include #include "options.h" #ifdef DEBUGGING #include "debug.h" @@ -53,6 +54,9 @@ #include #else #endif +#ifdef DBG_WAV_WRITER +#include "tinywaveout_c.h" +#endif #include "wmc_auto.h" @@ -89,12 +93,19 @@ int16_t debug_level = 0; static FILE *in_fileptr[N_FILEPTR]; static FILE *out_fileptr[N_FILEPTR]; - +#ifdef DBG_WAV_WRITER +static WAVEFILEOUT *out_wavfileptr[N_FILEPTR]; +#endif static char *in_filename[N_FILEPTR]; static char *out_filename[N_FILEPTR]; - +#ifdef DBG_WAV_WRITER +static char *out_wavfilename[N_FILEPTR]; +#endif static int16_t in_count = 0; static int16_t out_count = 0; +#ifdef DBG_WAV_WRITER +static int16_t out_wav_count = 0; +#endif static int16_t flag_count = 0; static char *flag_name[N_DBGFLAG]; @@ -376,7 +387,7 @@ int16_t dbgread( * Closes opened files and frees allocated memory *--------------------------------------------------------------------*/ -void dbgclose() +void dbgclose( void ) { int16_t i; @@ -392,6 +403,13 @@ void dbgclose() free( out_filename[i] ); } +#ifdef DBG_WAV_WRITER + for ( i = 0; i < out_wav_count; i++ ) + { + CloseWav( out_wavfileptr[i] ); + free( out_wavfilename[i] ); + } +#endif for ( i = 0; i < snr_count; i++ ) { free( snr_name[i] ); @@ -847,4 +865,114 @@ int16_t make_dirs( const char *const pathname ) return 0; } +#ifdef DBG_WAV_WRITER +int16_t dbgwrite_wav( + const float *buffer[], /* i : Write buffer */ + const int16_t count_per_ch, /* i : Number of elements */ + const char *const filename, + int32_t fs, + int16_t num_chs ) +{ + int16_t index, i; + int16_t *tmp_buf; + + index = lookup( filename, (const char *const *) out_wavfilename, out_wav_count ); + + if ( index == -1 ) + { + if ( make_dirs( filename ) != 0 ) + { + fprintf( stderr, "dbgwrite: Could not create directory structure for %s. Exiting..\n", filename ); + exit( -1 ); + } + + index = out_wav_count; + out_wavfileptr[index] = CreateWav( (const char *) filename, fs, num_chs, 16 /* const uint32_t writeWaveExt */ ); + out_wavfilename[index] = malloc( sizeof( char ) * ( strlen( filename ) + 1 ) ); + strcpy( out_wavfilename[index], filename ); + out_wav_count++; + } + + if ( out_wavfileptr[index] != NULL ) + { + int16_t j, k; + float tmp; + tmp_buf = (int16_t *) calloc( count_per_ch * num_chs, sizeof( int16_t ) ); + k = 0; + for ( j = 0; j < count_per_ch; j++ ) + { + for ( i = 0; i < num_chs; i++, k++ ) + { + tmp = roundf( buffer[i][j] ); + tmp_buf[k] = ( tmp > MAX16B_FLT ) ? MAX16B : ( tmp < MIN16B_FLT ) ? MIN16B + : (short) tmp; + } + } + WriteWavShort( out_wavfileptr[index], tmp_buf, count_per_ch * num_chs ); + free( tmp_buf ); + } + else + { + fprintf( stderr, "dbgwrite_wav: Could not write to file: %s. Exiting..\n", filename ); + exit( -1 ); + } + + return 0; +} + + +int16_t dbgwrite_txt( + const float *buffer, /* i : Write buffer */ + const int16_t count, /* i : Number of elements */ + const char *const filename, + const char *const msg_opt ) +{ + int16_t index, i; + + index = lookup( filename, (const char *const *) out_filename, out_count ); + + if ( index == -1 ) + { + if ( make_dirs( filename ) != 0 ) + { + fprintf( stderr, "dbgwrite: Could not create directory structure for %s. Exiting..\n", filename ); + exit( -1 ); + } + + index = out_count; + out_fileptr[index] = fopen( filename, "w" ); + out_filename[index] = malloc( sizeof( char ) * ( strlen( filename ) + 1 ) ); + strcpy( out_filename[index], filename ); + out_count++; + } + + if ( out_fileptr[index] != NULL ) + { + if ( buffer != NULL ) + { + if ( msg_opt == NULL ) + { + for ( i = 0; i < count; i++ ) + { + fprintf( out_fileptr[index], "%f\n", buffer[i] ); + } + } + else + { + for ( i = 0; i < count; i++ ) + { + fprintf( out_fileptr[index], "%s %f\n", msg_opt, buffer[i] ); + } + } + } + } + else + { + fprintf( stderr, "dbgwrite_txt: Could not write to file: %s. Exiting..\n", filename ); + exit( -1 ); + } + + return 0; +} +#endif #endif /* DEBUGGING */ diff --git a/lib_debug/debug.h b/lib_debug/debug.h index 3d59cb00a0555a73c094ba80aa34de7fd9013710..ac2ac689b8a5fe768b5629c07239f41364995761 100644 --- a/lib_debug/debug.h +++ b/lib_debug/debug.h @@ -98,6 +98,19 @@ int16_t dbgwrite( #endif ); +#ifdef DBG_WAV_WRITER +int16_t dbgwrite_wav( + const float *buffer[], /* i : Write buffer */ + const int16_t count_per_ch, /* i : Number of elements */ + const char *const filename, + int32_t fs, + int16_t num_chs ); +int16_t dbgwrite_txt( + const float *buffer, /* i : Write buffer */ + const int16_t count, /* i : Number of elements */ + const char *const filename, + const char *const msg_opt ); +#endif void dbgwrite_mat_repeat( float *buffer, /* i : write buffer */ int16_t nRow, /* i : matrix size (rows) */ diff --git a/lib_debug/snr.c b/lib_debug/snr.c index f6e6fa9d5219bbb0d41e3394571bd770794bc97a..5efefe8737a460bebef59eda15c35fd648f3739e 100644 --- a/lib_debug/snr.c +++ b/lib_debug/snr.c @@ -423,7 +423,7 @@ void snr_celp( * Finalizes and presents accumulated SNR data *--------------------------------------------------------------------*/ -void print_snr() +void print_snr( void ) { int16_t i; double snr, segsnr, wsegsnr; diff --git a/lib_dec/FEC.c b/lib_dec/FEC.c index 2a49ff3b1fe9b50f286b1c23bd734bbb39a33bcd..c0db9325f504d743f2416272dc16a8e2859f7552 100644 --- a/lib_dec/FEC.c +++ b/lib_dec/FEC.c @@ -331,11 +331,8 @@ void FEC_exc_estim( /*-----------------------------------------------------------------* * Replicate the last spectrum in case the last good frame was coded by GSC *-----------------------------------------------------------------*/ -#ifndef FIX_565_SBA_BURST_IN_FEC - if ( ( st->last_coder_type == AUDIO || st->last_good == INACTIVE_CLAS ) && st->total_brate <= ACELP_24k40 && !st->Opt_AMR_WB ) -#else + if ( ( st->last_coder_type == AUDIO || st->last_good == INACTIVE_CLAS ) && st->total_brate <= MAX_GSC_INACTIVE_BRATE && !st->Opt_AMR_WB ) -#endif { /* Replication of the last spectrum, with a slight downscaling of its dynamic */ st->GSC_noisy_speech = st->Last_GSC_noisy_speech_flag; @@ -407,11 +404,8 @@ void FEC_exc_estim( /*-----------------------------------------------------------------* * Total excitation *-----------------------------------------------------------------*/ -#ifndef FIX_565_SBA_BURST_IN_FEC - if ( ( st->last_coder_type == AUDIO || st->last_good == INACTIVE_CLAS ) && st->total_brate <= ACELP_24k40 && !st->Opt_AMR_WB ) -#else + if ( ( st->last_coder_type == AUDIO || st->last_good == INACTIVE_CLAS ) && st->total_brate <= MAX_GSC_INACTIVE_BRATE && !st->Opt_AMR_WB ) -#endif { /* For GSC - the excitation is already computed */ mvr2r( exc, exc2, st->L_frame ); diff --git a/lib_dec/FEC_HQ_phase_ecu.c b/lib_dec/FEC_HQ_phase_ecu.c index 96974b9f8e7d1b96d9a759ecb2c815222193dafc..71c0c6b728efa9d29ea04adfdf62657df1170b8c 100644 --- a/lib_dec/FEC_HQ_phase_ecu.c +++ b/lib_dec/FEC_HQ_phase_ecu.c @@ -1079,7 +1079,7 @@ static void subst_spec( } i++; im_ind--; - if ( i >= gwlpr[k + 1] ) + if ( i >= ivas_gwlpr[k + 1] ) { k++; } @@ -1191,7 +1191,7 @@ static void subst_spec( i++; im_ind--; - if ( i >= gwlpr[k + 1] ) + if ( i >= ivas_gwlpr[k + 1] ) { k++; } @@ -1246,7 +1246,7 @@ static void subst_spec( } i++; - if ( i >= gwlpr[k + 1] ) + if ( i >= ivas_gwlpr[k + 1] ) { k++; } diff --git a/lib_dec/FEC_adapt_codebook.c b/lib_dec/FEC_adapt_codebook.c index 961dfc6a5d19fa38401eb9c7bb396546b267329d..1200e2651cf52f30ff9fb82be8440dc076e960c5 100644 --- a/lib_dec/FEC_adapt_codebook.c +++ b/lib_dec/FEC_adapt_codebook.c @@ -399,12 +399,12 @@ void FEC_SinOnset( } int16_t FEC_enhACB( - const int16_t L_frame, /* i : frame length */ - const int16_t last_L_frame, /* i : frame length of last frame */ - float *exc_io, /* i/o : adaptive codebook memory */ - const int16_t new_pit, /* i : decoded first frame pitch */ - const int16_t puls_pos, /* i : decoder position of the last glottal pulses decoded in the previous frame */ - const float bfi_pitch /* i : pitch used for concealment */ + const int16_t L_frame, /* i : frame length */ + const int16_t last_L_frame, /* i : frame length of last frame */ + float *exc_io, /* i/o: adaptive codebook memory */ + const int16_t new_pit, /* i : decoded first frame pitch */ + const int16_t puls_pos, /* i : decoder position of the last glottal pulses decoded in the previous frame */ + const float bfi_pitch /* i : pitch used for concealment */ ) { int16_t Tc, P0, sign, pit_search; diff --git a/lib_dec/FEC_clas_estim.c b/lib_dec/FEC_clas_estim.c index 4acd3dab9cef32fa47fafd57184f9edc2e52877a..8d54129a7c2d5945f07951153d958c86c21f1cb5 100644 --- a/lib_dec/FEC_clas_estim.c +++ b/lib_dec/FEC_clas_estim.c @@ -735,7 +735,7 @@ static void FEC_classificationMusic( int16_t FEC_pos_dec( Decoder_State *st, /* i/o: decoder state structure */ - int16_t *last_pulse_pos, /* o : last glotal pulse position in the lost ACB */ + int16_t *last_pulse_pos, /* o : last glottal pulse position in the lost ACB */ float *enr_q, /* o : decoded energy */ const int16_t nBits_es_Pred /* i : number of bits for Es_pred Q */ diff --git a/lib_dec/acelp_core_dec.c b/lib_dec/acelp_core_dec.c index 8d5e9de34d67e9fad94e36773518d26078bd0bea..1a909ac037f5a88dc177e64f21d1b434ec559527 100644 --- a/lib_dec/acelp_core_dec.c +++ b/lib_dec/acelp_core_dec.c @@ -707,7 +707,18 @@ ivas_error acelp_core_dec( if ( st->last_core != ACELP_CORE && st->element_mode > EVS_MONO ) { /* Prepare ACB memory of old_bwe_exc */ +#ifdef CR_FIX_639_HQ_ACELP_TRANSITION + if ( st->L_frame == L_FRAME ) + { + lerp( old_exc, old_bwe_exc, L_EXC_MEM_DEC * HIBND_ACB_L_FAC, L_EXC_MEM_DEC ); + } + else + { + lerp( old_exc, old_bwe_exc, L_EXC_MEM_DEC * 2, L_EXC_MEM_DEC ); + } +#else lerp( old_exc, old_bwe_exc, L_EXC_MEM_DEC * HIBND_ACB_L_FAC, L_EXC_MEM_DEC ); +#endif } /*-----------------------------------------------------------------* diff --git a/lib_dec/cng_dec.c b/lib_dec/cng_dec.c index 64403736c43fae6a323f248a586792506f0bac99..b7f462aa9d0f0ec28f322c3d46613504bdf911c9 100644 --- a/lib_dec/cng_dec.c +++ b/lib_dec/cng_dec.c @@ -737,9 +737,13 @@ static void shb_CNG_decod( ener = hTdCngDec->shb_cng_ener; } + gain = (float) sqrt( pow( 10, 0.1f * ener ) * L_FRAME16k / ener_excSHB ); st->hTdCngDec->shb_cng_gain = ener; +#ifdef DEBUGGING + /* note: state shb_cng_gain is actually an energy value in dB */ +#endif for ( i = 0; i < L_FRAME16k; i++ ) { @@ -783,6 +787,13 @@ void td_cng_dec_init( mvr2r( st->lsp_old, st->lspCNG, M ); hTdCngDec->last_allow_cn_step = 0; hTdCngDec->shb_cng_ener = -6.02f; + if ( st->element_mode != EVS_MONO ) + { + set_f( hTdCngDec->shb_lpcCNG, 0.0f, LPC_SHB_ORDER + 1 ); + hTdCngDec->shb_lpcCNG[0] = 1.0f; + hTdCngDec->shb_cng_gain = -82.0; /* a dB value approximately corresponding to shb index 0(used as index -15) */ + } + hTdCngDec->wb_cng_ener = -6.02f; hTdCngDec->last_wb_cng_ener = -6.02f; hTdCngDec->last_shb_cng_ener = -6.02f; @@ -825,8 +836,10 @@ void td_cng_dec_init( hTdCngDec->shb_dtx_count = 0; hTdCngDec->trans_cnt = 0; hTdCngDec->burst_cnt = 0; + hTdCngDec->last_shb_ener = 0.001f; + set_f( hTdCngDec->interpol_3_2_cng_dec, 0.0f, INTERP_3_2_MEM_LEN ); return; diff --git a/lib_dec/dec_tcx.c b/lib_dec/dec_tcx.c index dd10cef29324326de7e73a828b35889ae317853a..cffb6a1092ccf09839e6d7393126cb89a7ee3604 100644 --- a/lib_dec/dec_tcx.c +++ b/lib_dec/dec_tcx.c @@ -377,11 +377,7 @@ void IMDCT( TCX_MDCT_Inverse( x + w * L_spec_TCX5, win, L_ola, L_win - L_ola, L_ola, st->element_mode ); } -#ifndef FIX_575_LOW_OVERLAP_PLC_RECOVERY - tcx_windowing_synthesis_current_frame( win, tcx_aldo_window_2, tcx_mdct_window_half, tcx_mdct_window_minimum, L_ola, tcx_mdct_window_half_length, tcx_mdct_window_min_length, ( w > 0 ) ? 0 : left_rect, ( w > 0 ) || ( w == 0 && index == 2 ) ? MIN_OVERLAP : hTcxCfg->tcx_last_overlap_mode, acelp_zir, hTcxDec->old_syn_Overl, syn_Overl_TDAC, st->old_Aq_12_8, tcx_mdct_window_trans, L_win, tcx_offset < 0 ? -tcx_offset : 0, ( w > 0 ) || ( frame_cnt > 0 ) ? 1 : st->last_core_bfi, ( w > 0 ) || ( frame_cnt > 0 ) ? 0 : st->last_is_cng, fullbandScale ); -#else tcx_windowing_synthesis_current_frame( win, tcx_aldo_window_2, tcx_mdct_window_half, tcx_mdct_window_minimum, L_ola, tcx_mdct_window_half_length, tcx_mdct_window_min_length, ( w > 0 ) ? 0 : left_rect, ( w > 0 ) || ( w == 0 && index == 2 ) ? MIN_OVERLAP : hTcxCfg->tcx_last_overlap_mode, acelp_zir, hTcxDec->old_syn_Overl, syn_Overl_TDAC, st->old_Aq_12_8, tcx_mdct_window_trans, L_win, tcx_offset < 0 ? -tcx_offset : 0, ( w > 0 ) || ( frame_cnt > 0 ) ? 1 : st->last_core, ( w > 0 ) || ( frame_cnt > 0 ) ? 0 : st->last_is_cng, fullbandScale ); -#endif if ( w > 0 ) { @@ -398,13 +394,11 @@ void IMDCT( /* To assure that no garbage values are passed to overlap */ set_zero( xn_buf + L_frame + tcx_offset + ( L_ola >> 1 ), overlap - tcx_offset - ( L_ola >> 1 ) ); -#ifdef FIX_575_LOW_OVERLAP_PLC_RECOVERY if ( st->prev_bfi && frame_cnt == 0 && st->last_core != st->last_core_bfi && st->last_core_bfi == ACELP_CORE ) { tcx_windowing_synthesis_past_frame( old_syn_overl, tcx_aldo_window_1_trunc, tcx_mdct_window_half, tcx_mdct_window_minimum, overlap, tcx_mdct_window_half_length, tcx_mdct_window_min_length, hTcxCfg->tcx_last_overlap_mode ); v_add( xn_buf, old_syn_overl, xn_buf, overlap ); } -#endif } else if ( !bfi && ( frame_cnt == 0 ) && ( hTcxCfg->tcx_curr_overlap_mode == FULL_OVERLAP ) ) @@ -1252,7 +1246,6 @@ void decoder_tcx_noisefilling( if ( ( frame_cnt == 0 ) && ( L_frameTCX == hTcxDec->L_frameTCX >> 1 ) && ( st->tcxonly ) && ( !st->tonal_mdct_plc_active ) && ( st->nbLostCmpt == 1 ) && ( hTcxCfg->tcx_last_overlap_mode != FULL_OVERLAP ) && ( hTcxCfg->tcx_curr_overlap_mode != FULL_OVERLAP ) ) { E_2ndlast = E_last = EPSILON; -#ifdef FIX_575_LOW_OVERLAP_PLC_RECOVERY if ( st->element_mode > EVS_MONO ) { for ( i = 0; i < L_frameTCX; i = i + 2 ) @@ -1269,19 +1262,11 @@ void decoder_tcx_noisefilling( E_last += st->hTonalMDCTConc->lastBlockData.spectralData[i + 1] * st->hTonalMDCTConc->lastBlockData.spectralData[i + 1]; } } -#else - for ( i = 0; i < infoIGFStartLine; i = i + 2 ) - { - E_2ndlast += st->hTonalMDCTConc->lastBlockData.spectralData[i] * st->hTonalMDCTConc->lastBlockData.spectralData[i]; - E_last += st->hTonalMDCTConc->lastBlockData.spectralData[i + 1] * st->hTonalMDCTConc->lastBlockData.spectralData[i + 1]; - } -#endif tmp2 = E_2ndlast / E_last; /* replace higher energy TCX5 frame by lower one to avoid energy fluctuation */ if ( tmp2 > 2 ) { -#ifdef FIX_575_LOW_OVERLAP_PLC_RECOVERY if ( st->element_mode > EVS_MONO ) { for ( i = 0; i < L_frameTCX; i = i + 2 ) @@ -1296,16 +1281,9 @@ void decoder_tcx_noisefilling( st->hTonalMDCTConc->lastBlockData.spectralData[i] = st->hTonalMDCTConc->lastBlockData.spectralData[i + 1]; } } -#else - for ( i = 0; i < infoIGFStartLine; i = i + 2 ) - { - st->hTonalMDCTConc->lastBlockData.spectralData[i] = st->hTonalMDCTConc->lastBlockData.spectralData[i + 1]; - } -#endif } else if ( tmp2 < 0.5 ) { -#ifdef FIX_575_LOW_OVERLAP_PLC_RECOVERY if ( st->element_mode > EVS_MONO ) { for ( i = 0; i < L_frameTCX; i = i + 2 ) @@ -1320,12 +1298,6 @@ void decoder_tcx_noisefilling( st->hTonalMDCTConc->lastBlockData.spectralData[i + 1] = st->hTonalMDCTConc->lastBlockData.spectralData[i]; } } -#else - for ( i = 0; i < infoIGFStartLine; i = i + 2 ) - { - st->hTonalMDCTConc->lastBlockData.spectralData[i + 1] = st->hTonalMDCTConc->lastBlockData.spectralData[i]; - } -#endif } } diff --git a/lib_dec/gain_dec.c b/lib_dec/gain_dec.c index 99eecba56a4919f1790c0f3a022761b1328c65c3..6f769dd6eacc3d86850f8b8b69220d86f79801db 100644 --- a/lib_dec/gain_dec.c +++ b/lib_dec/gain_dec.c @@ -635,7 +635,7 @@ void gain_dec_SQ( index = get_next_indice( st, nBits >> 1 ); /*Ei = (G_PITCH_MAX - G_PITCH_MIN) / ((1 << (nBits>>1)) - 1);*/ /* set quantization step */ - div_s( &tmp16, 1, ( ( 1 << ( nBits >> 1 ) ) - 1 ) ); /* Q15*/ + tmp16 = div_s( 1, ( ( 1 << ( nBits >> 1 ) ) - 1 ) ); /* Q15*/ Ei = (float) mult_r( (int16_t) ( G_PITCH_MAX * 8192.0f + 0.5f ), tmp16 ) / 8192.0f; *gain_pit = usdequant( index, G_PITCH_MIN, Ei ); diff --git a/lib_dec/gs_dec.c b/lib_dec/gs_dec.c index 1244f977936891d9b449612dd6e93023a71c4fdb..5ed7aa92c4b33f7212c99d5fa896876c43b6b8e6 100644 --- a/lib_dec/gs_dec.c +++ b/lib_dec/gs_dec.c @@ -104,11 +104,7 @@ void decod_audio( } /* safety check in case of bit errors */ -#ifdef ISM_FB_16k4 if ( st->GSC_noisy_speech && st->bwidth < SWB && st->GSC_IVAS_mode == 0 ) -#else - if ( st->GSC_noisy_speech && st->bwidth != SWB && st->GSC_IVAS_mode == 0 ) -#endif { st->BER_detect = 1; st->GSC_noisy_speech = 0; diff --git a/lib_dec/hq_lr_dec.c b/lib_dec/hq_lr_dec.c index 47a5d10d5f838db5cede103c40071b42bd97ac18..3b9ae0c6fc00a0f530047829b526349bd9c1f7da 100644 --- a/lib_dec/hq_lr_dec.c +++ b/lib_dec/hq_lr_dec.c @@ -288,7 +288,7 @@ void hq_lr_dec( { exp2 = add( exp2, 1 ); } - div_s( &tmp, tmp2, tmp ); + tmp = div_s( tmp2, tmp ); L_tmp = L_deposit_h( tmp ); L_tmp = Isqrt_lc1( L_tmp, &exp2 ); move32(); /*Q(31-exp2) */ @@ -373,7 +373,7 @@ void hq_lr_dec( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -405,7 +405,7 @@ void hq_lr_dec( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -424,7 +424,7 @@ void hq_lr_dec( { exp = norm_s( tmp2 ); tmp2 = shl( tmp2, exp ); /*Q(exp) */ - div_s( &tmp2, 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ + tmp2 = div_s( 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -450,7 +450,7 @@ void hq_lr_dec( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -480,7 +480,7 @@ void hq_lr_dec( { exp = norm_s( tmp2 ); tmp2 = shl( tmp2, exp ); /*Q(exp) */ - div_s( &tmp2, 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ + tmp2 = div_s( 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -539,7 +539,7 @@ void hq_lr_dec( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -673,7 +673,7 @@ void hq_lr_dec( { exp = norm_s( tmp1 ); tmp1 = shl( tmp1, exp ); /*Q(exp) */ - div_s( &tmp1, 16384, tmp1 ); /*Q(15+14-exp = 29-exp) */ + tmp1 = div_s( 16384, tmp1 ); /*Q(15+14-exp = 29-exp) */ exp = sub( 29, exp ); } ELSE @@ -717,7 +717,7 @@ void hq_lr_dec( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -746,7 +746,7 @@ void hq_lr_dec( { exp = norm_s( tmp1 ); tmp1 = shl( tmp1, exp ); /*Q(exp) */ - div_s( &tmp1, 16384, tmp1 ); /*Q(15+14-exp=29-exp) */ + tmp1 = div_s( 16384, tmp1 ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -821,7 +821,7 @@ void hq_lr_dec( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -1219,7 +1219,7 @@ static float band_energy_dequant( #define WMC_TOOL_SKIP /* Get the reference energy */ exp_normd = norm_l( L_qint ); - div_s( &rev_qint_fx, 0x4000, round_fx( L_shl( L_qint, exp_normd ) ) ); /* Q14-(29+exp_normd-16)+15 */ + rev_qint_fx = div_s( 0x4000, round_fx( L_shl( L_qint, exp_normd ) ) ); /* Q14-(29+exp_normd-16)+15 */ Qrev_qint = sub( 14 - ( 29 - 16 ) + 15, exp_normd ); bq0 = (int16_t) round_fx( L_shl( L_mult( eref_fx, rev_qint_fx ), sub( 5, Qrev_qint ) ) ); /* 16-(10+Qrev_qint+1) */ @@ -1315,7 +1315,7 @@ static void mdct_spectrum_fine_gain_dec( exp_normn = norm_l( L_qint ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( gqlevs ); - div_l( &delta_fx, L_shl( L_qint, exp_normn ), shl( gqlevs, exp_normd ) ); + delta_fx = div_l( L_shl( L_qint, exp_normn ), shl( gqlevs, exp_normd ) ); Qdelta = add( sub( exp_normn, exp_normd ), 28 ); /* 29+exp_normn-(exp_normd)-1; */ L_delta = L_shl( L_deposit_h( delta_fx ), sub( 13, Qdelta ) ); /*q = (-qint + delta) / 2.0f; */ diff --git a/lib_dec/ivas_agc_dec.c b/lib_dec/ivas_agc_dec.c index 72ae68a57b34d61132eee2944adf4b6f27e52a4f..56a679de596ff92bddf09b764a8cb404b51a320e 100644 --- a/lib_dec/ivas_agc_dec.c +++ b/lib_dec/ivas_agc_dec.c @@ -173,8 +173,8 @@ void ivas_spar_agc_dec_close( void ivas_agc_dec_process( ivas_agc_dec_state_t *hAgcDec, /* i/o: AGC decoder handle */ - float pcm_in[][L_FRAME48k], /* i : input audio channels */ - float pcm_out[][L_FRAME48k], /* o : output audio channels */ + 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_frame /* i : output frame length */ ) diff --git a/lib_dec/ivas_binRenderer_internal.c b/lib_dec/ivas_binRenderer_internal.c index 5bd09236e0e40471c499b7d55495a096578e0c4f..cb2f7f5702cc945f99ba005721576bedac3f1e08 100644 --- a/lib_dec/ivas_binRenderer_internal.c +++ b/lib_dec/ivas_binRenderer_internal.c @@ -42,6 +42,10 @@ #include "ivas_rom_dec.h" #include "ivas_rom_com.h" #include "ivas_rom_binauralRenderer.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_rom_dec.h" +#include "lib_rend.h" +#endif #ifdef DEBUGGING #include "debug.h" #endif @@ -61,6 +65,10 @@ static void ivas_binRenderer_filterModule( float CLDFB_imag[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i : imag part of LS signals */ const int16_t numTimeSlots, /* i : number of time slots to process */ BINAURAL_RENDERER_HANDLE hBinRenderer /* i/o: fastconv binaural renderer handle */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t pos_idx +#endif ) { int16_t bandIdx, k, chIdx, tapIdx; @@ -71,8 +79,13 @@ static void ivas_binRenderer_filterModule( { for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + filterStatesLeftRealPtr = (float *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal[pos_idx][bandIdx][chIdx][0] ); + filterStatesLeftImagPtr = (float *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag[pos_idx][bandIdx][chIdx][0] ); +#else filterStatesLeftRealPtr = (float *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx][0] ); filterStatesLeftImagPtr = (float *) &( hBinRenderer->hBinRenConvModule->filterStatesLeftImag[bandIdx][chIdx][0] ); +#endif filterTapsLeftRealPtr = hBinRenderer->hBinRenConvModule->filterTapsLeftReal[bandIdx][chIdx]; filterTapsLeftImagPtr = hBinRenderer->hBinRenConvModule->filterTapsLeftImag[bandIdx][chIdx]; @@ -127,10 +140,18 @@ static ivas_error ivas_binRenderer_convModuleOpen( const int16_t renderer_type, const int16_t isLoudspeaker, const AUDIO_CONFIG input_config, - const HRTFS_FASTCONV_HANDLE hHrtf ) + const HRTFS_FASTCONV_HANDLE hHrtf +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif +) { int16_t bandIdx, chIdx; BINRENDERER_CONV_MODULE_HANDLE hBinRenConvModule; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx; +#endif /*-----------------------------------------------------------------* * prepare library opening @@ -180,7 +201,14 @@ static ivas_error ivas_binRenderer_convModuleOpen( } else { - hBinRenConvModule->numTaps = BINAURAL_NTAPS; + if ( hBinRenderer->ivas_format == SBA_FORMAT ) + { + hBinRenConvModule->numTaps = BINAURAL_NTAPS_SBA; + } + else + { + hBinRenConvModule->numTaps = BINAURAL_NTAPS; + } /* Use fixed order filtering */ bandIdx = 0; @@ -234,6 +262,57 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( hBinRenConvModule->filterStatesLeftReal = (float ****) malloc( num_poses * sizeof( float *** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } + + if ( ( hBinRenConvModule->filterStatesLeftImag = (float ****) malloc( num_poses * sizeof( float *** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } + + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + if ( ( hBinRenConvModule->filterStatesLeftReal[pos_idx] = (float ***) malloc( hBinRenderer->conv_band * sizeof( float ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } + + if ( ( hBinRenConvModule->filterStatesLeftImag[pos_idx] = (float ***) malloc( hBinRenderer->conv_band * sizeof( float ** ) ) ) == 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[pos_idx][bandIdx] = (float **) malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } + + if ( ( hBinRenConvModule->filterStatesLeftImag[pos_idx][bandIdx] = (float **) malloc( hBinRenderer->nInChannels * sizeof( float * ) ) ) == 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[pos_idx][bandIdx][chIdx] = (float *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } + + if ( ( hBinRenConvModule->filterStatesLeftImag[pos_idx][bandIdx][chIdx] = (float *) malloc( hBinRenConvModule->numTapsArray[bandIdx] * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); + } + } + } + } +#else + if ( ( hBinRenConvModule->filterStatesLeftReal = (float ***) malloc( hBinRenderer->conv_band * sizeof( float ** ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Convolution Module \n" ) ); @@ -269,6 +348,7 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } } +#endif /* SPLIT_REND_WITH_HEAD_ROT */ /* set memories */ for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) @@ -309,9 +389,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { +#ifndef SPLIT_REND_WITH_HEAD_ROT /* set the memories to zero */ set_zero( hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] ); set_zero( hBinRenConvModule->filterStatesLeftImag[bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] ); +#endif if ( isLoudspeaker ) { @@ -330,9 +412,11 @@ static ivas_error ivas_binRenderer_convModuleOpen( } else { +#ifndef SPLIT_REND_WITH_HEAD_ROT /* set the memories to zero */ set_zero( hBinRenConvModule->filterStatesLeftReal[bandIdx][chIdx], hBinRenConvModule->numTaps ); set_zero( hBinRenConvModule->filterStatesLeftImag[bandIdx][chIdx], hBinRenConvModule->numTaps ); +#endif if ( isLoudspeaker ) { @@ -376,11 +460,279 @@ static ivas_error ivas_binRenderer_convModuleOpen( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + for ( bandIdx = 0; bandIdx < hBinRenderer->conv_band; bandIdx++ ) + { + for ( chIdx = 0; chIdx < hBinRenderer->nInChannels; chIdx++ ) + { + /* set the memories to zero */ + set_zero( hBinRenConvModule->filterStatesLeftReal[pos_idx][bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] ); + set_zero( hBinRenConvModule->filterStatesLeftImag[pos_idx][bandIdx][chIdx], hBinRenConvModule->numTapsArray[bandIdx] ); + } + } + } +#endif + hBinRenderer->hBinRenConvModule = hBinRenConvModule; return IVAS_ERR_OK; } +/*-------------------------------------------------------------------------* + * ivas_init_binaural_hrtf() + * + * initialize memory for HrtfFastConv structure elements + *-------------------------------------------------------------------------*/ + +void ivas_init_binaural_hrtf( + HRTFS_FASTCONV *HrtfFastConv /* i/o: FASTCONV HRTF structure */ +) +{ + int16_t i; + + HrtfFastConv->leftHRIRReal_HOA3 = NULL; + HrtfFastConv->leftHRIRImag_HOA3 = NULL; + HrtfFastConv->rightHRIRReal_HOA3 = NULL; + HrtfFastConv->rightHRIRImag_HOA3 = NULL; + HrtfFastConv->FASTCONV_HOA3_latency_s = 0x00; + + HrtfFastConv->leftHRIRReal = NULL; + HrtfFastConv->leftHRIRImag = NULL; + HrtfFastConv->rightHRIRReal = NULL; + HrtfFastConv->rightHRIRImag = NULL; + HrtfFastConv->FASTCONV_HRIR_latency_s = 0x00; + + HrtfFastConv->leftBRIRReal = NULL; + HrtfFastConv->leftBRIRImag = NULL; + HrtfFastConv->rightBRIRReal = NULL; + HrtfFastConv->rightBRIRImag = NULL; + HrtfFastConv->FASTCONV_BRIR_latency_s = 0x00; + + HrtfFastConv->leftHRIRReal_HOA2 = NULL; + HrtfFastConv->leftHRIRImag_HOA2 = NULL; + HrtfFastConv->rightHRIRReal_HOA2 = NULL; + HrtfFastConv->rightHRIRImag_HOA2 = NULL; + HrtfFastConv->FASTCONV_HOA2_latency_s = 0x00; + + HrtfFastConv->leftHRIRReal_FOA = NULL; + HrtfFastConv->leftHRIRImag_FOA = NULL; + HrtfFastConv->rightHRIRReal_FOA = NULL; + HrtfFastConv->rightHRIRImag_FOA = NULL; + HrtfFastConv->FASTCONV_FOA_latency_s = 0x00; + + HrtfFastConv->allocate_init_flag = 0x00; + + for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) + { + HrtfFastConv->fastconvReverberationEneCorrections[i] = 0x00; + HrtfFastConv->fastconvReverberationEneCorrections[i] = 0x00; + } + + return; +} + + +/*-------------------------------------------------------------------------* + * ivas_alloc_pppMem() + * + * Allocate memory for tripple pointer elements + *-------------------------------------------------------------------------*/ + +static ivas_error ivas_alloc_pppMem( + float ****pppMem, + const int16_t dim1, + const int16_t dim2, + const int16_t dim3, + const int16_t allocate_init_flag ) +{ + int16_t i, j; + float ***localMem = NULL; + + if ( ( localMem = (float ***) malloc( dim1 * sizeof( float ** ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF memory" ); + } + + for ( i = 0; i < dim1; i++ ) + { + if ( ( localMem[i] = (float **) malloc( dim2 * sizeof( float * ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF memory" ); + } + if ( allocate_init_flag == 0 ) + { + for ( j = 0; j < dim2; j++ ) + { + if ( ( localMem[i][j] = (float *) malloc( dim3 * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HRTF memory" ); + } + } + } + } + + *pppMem = localMem; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------------* + * ivas_allocate_binaural_hrtf() + * + * Allocate memory for HrtfFastConv structure elements + *-------------------------------------------------------------------------*/ + +ivas_error ivas_allocate_binaural_hrtf( + HRTFS_FASTCONV *HrtfFastConv, /* i/o: FASTCONV HRTF structure */ + const AUDIO_CONFIG input_config, /* i : input audio configuration */ + const BINAURAL_INPUT_AUDIO_CONFIG bin_input_config, /* i : binaural input audio config */ + const RENDERER_TYPE renderer_type, /* i : renderer type */ + const int16_t allocate_init_flag /* i : Memory allocation flag */ +) +{ + if ( input_config == AUDIO_CONFIG_HOA3 || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_HOA3 ) + { + if ( ( HrtfFastConv->leftHRIRReal_HOA3 != NULL ) && ( HrtfFastConv->leftHRIRImag_HOA3 != NULL ) && ( HrtfFastConv->rightHRIRReal_HOA3 != NULL ) && ( HrtfFastConv->rightHRIRImag_HOA3 != NULL ) ) + { + return IVAS_ERR_OK; + } + else + { + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA3" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA3" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA3" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag_HOA3, BINAURAL_CONVBANDS, HOA3_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA3" ); + } + } + } + + if ( input_config == AUDIO_CONFIG_HOA2 || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) + { + if ( ( HrtfFastConv->leftHRIRReal_HOA2 != NULL ) && ( HrtfFastConv->leftHRIRImag_HOA2 != NULL ) && ( HrtfFastConv->rightHRIRReal_HOA2 != NULL ) && ( HrtfFastConv->rightHRIRImag_HOA2 != NULL ) ) + { + return IVAS_ERR_OK; + } + else + { + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_HOA2" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_HOA2" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_HOA2" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag_HOA2, BINAURAL_CONVBANDS, HOA2_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_HOA2" ); + } + } + } + + if ( input_config == AUDIO_CONFIG_FOA || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) + { + if ( ( HrtfFastConv->leftHRIRReal_FOA != NULL ) && ( HrtfFastConv->leftHRIRImag_FOA != NULL ) && ( HrtfFastConv->rightHRIRReal_FOA != NULL ) && ( HrtfFastConv->rightHRIRImag_FOA != NULL ) ) + { + return IVAS_ERR_OK; + } + else + { + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal_FOA" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag_FOA" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal_FOA" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag_FOA, BINAURAL_CONVBANDS, FOA_CHANNELS, BINAURAL_NTAPS_SBA, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag_FOA" ); + } + } + } + + if ( renderer_type == RENDERER_BINAURAL_FASTCONV || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) + { + if ( ( HrtfFastConv->leftHRIRReal != NULL ) && ( HrtfFastConv->leftHRIRImag != NULL ) && ( HrtfFastConv->rightHRIRReal != NULL ) && ( HrtfFastConv->rightHRIRImag != NULL ) ) + { + return IVAS_ERR_OK; + } + else + { + + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRReal" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftHRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftHRIRImag" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRReal" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightHRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightHRIRImag" ); + } + } + } + + if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || bin_input_config == BINAURAL_INPUT_AUDIO_CONFIG_COMBINED ) + { + if ( ( HrtfFastConv->leftBRIRReal != NULL ) && ( HrtfFastConv->leftBRIRImag != NULL ) && ( HrtfFastConv->rightBRIRReal != NULL ) && ( HrtfFastConv->rightBRIRImag != NULL ) ) + { + return IVAS_ERR_OK; + } + else + { + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftBRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRReal" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->leftBRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for leftBRIRImag" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightBRIRReal, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRReal" ); + } + if ( IVAS_ERR_OK != ivas_alloc_pppMem( &HrtfFastConv->rightBRIRImag, BINAURAL_CONVBANDS, HRTF_LS_CHANNELS, BINAURAL_NTAPS_MAX, allocate_init_flag ) ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for rightBRIRImag" ); + } + } + } + + return IVAS_ERR_OK; +} + + /*-------------------------------------------------------------------------* * ivas_binaural_HRTF_open() * @@ -388,10 +740,14 @@ static ivas_error ivas_binRenderer_convModuleOpen( *-------------------------------------------------------------------------*/ static ivas_error ivas_binaural_hrtf_open( - HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i : fastconv HRTF handle */ + HRTFS_FASTCONV_HANDLE *hHrtfFastConv, /* i : fastconv HRTF handle */ + const AUDIO_CONFIG input_config, /* i : output configuration */ + const RENDERER_TYPE renderer_type /* i : renderer type */ ) { int16_t i, j; + ivas_error error; + if ( hHrtfFastConv != NULL && *hHrtfFastConv != NULL ) { /* Tables already loaded from file */ @@ -407,51 +763,89 @@ static ivas_error ivas_binaural_hrtf_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate memory for FastConv HRTF tables" ); } - HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s; - HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s; - HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s; - HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s; - HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) + ivas_init_binaural_hrtf( HrtfFastConv ); + + if ( input_config == AUDIO_CONFIG_BINAURAL || renderer_type == RENDERER_BINAURAL_FASTCONV ) { - for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) - { - mvr2r( leftHRIRReal[i][j], HrtfFastConv->leftHRIRReal[i][j], BINAURAL_NTAPS ); - mvr2r( leftHRIRImag[i][j], HrtfFastConv->leftHRIRImag[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRReal[i][j], HrtfFastConv->rightHRIRReal[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRImag[i][j], HrtfFastConv->rightHRIRImag[i][j], BINAURAL_NTAPS ); + HrtfFastConv->FASTCONV_HRIR_latency_s = FASTCONV_HRIR_latency_s; + } + if ( input_config == AUDIO_CONFIG_HOA2 ) + { + HrtfFastConv->FASTCONV_HOA2_latency_s = FASTCONV_HOA2_latency_s; + } + if ( input_config == AUDIO_CONFIG_HOA3 ) + { + HrtfFastConv->FASTCONV_HOA3_latency_s = FASTCONV_HOA3_latency_s; + } + if ( input_config == AUDIO_CONFIG_FOA ) + { + HrtfFastConv->FASTCONV_FOA_latency_s = FASTCONV_FOA_latency_s; + } + if ( input_config == AUDIO_CONFIG_BINAURAL || renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) + { + HrtfFastConv->FASTCONV_BRIR_latency_s = FASTCONV_BRIR_latency_s; + } + HrtfFastConv->allocate_init_flag = 1; - mvr2r( leftBRIRReal[i][j], HrtfFastConv->leftBRIRReal[i][j], BINAURAL_NTAPS_MAX ); - mvr2r( leftBRIRImag[i][j], HrtfFastConv->leftBRIRImag[i][j], BINAURAL_NTAPS_MAX ); - mvr2r( rightBRIRReal[i][j], HrtfFastConv->rightBRIRReal[i][j], BINAURAL_NTAPS_MAX ); - mvr2r( rightBRIRImag[i][j], HrtfFastConv->rightBRIRImag[i][j], BINAURAL_NTAPS_MAX ); + if ( ( error = ivas_allocate_binaural_hrtf( HrtfFastConv, input_config, BINAURAL_INPUT_AUDIO_CONFIG_INVALID, renderer_type, HrtfFastConv->allocate_init_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) + { + if ( renderer_type == RENDERER_BINAURAL_FASTCONV ) + { + for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) + { + HrtfFastConv->leftHRIRReal[i][j] = leftHRIRReal[i][j]; + HrtfFastConv->leftHRIRImag[i][j] = leftHRIRImag[i][j]; + HrtfFastConv->rightHRIRReal[i][j] = rightHRIRReal[i][j]; + HrtfFastConv->rightHRIRImag[i][j] = rightHRIRImag[i][j]; + } } - - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + else if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { - mvr2r( leftHRIRReal_HOA3[i][j], HrtfFastConv->leftHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); - mvr2r( leftHRIRImag_HOA3[i][j], HrtfFastConv->leftHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRReal_HOA3[i][j], HrtfFastConv->rightHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRImag_HOA3[i][j], HrtfFastConv->rightHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); + for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) + { + HrtfFastConv->leftBRIRReal[i][j] = leftBRIRReal[i][j]; + HrtfFastConv->leftBRIRImag[i][j] = leftBRIRImag[i][j]; + HrtfFastConv->rightBRIRReal[i][j] = rightBRIRReal[i][j]; + HrtfFastConv->rightBRIRImag[i][j] = rightBRIRImag[i][j]; + } } - for ( j = 0; j < 9; j++ ) + if ( input_config == AUDIO_CONFIG_HOA3 ) { - mvr2r( leftHRIRReal_HOA2[i][j], HrtfFastConv->leftHRIRReal_HOA2[i][j], BINAURAL_NTAPS ); - mvr2r( leftHRIRImag_HOA2[i][j], HrtfFastConv->leftHRIRImag_HOA2[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRReal_HOA2[i][j], HrtfFastConv->rightHRIRReal_HOA2[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRImag_HOA2[i][j], HrtfFastConv->rightHRIRImag_HOA2[i][j], BINAURAL_NTAPS ); + for ( j = 0; j < HOA3_CHANNELS; j++ ) + { + HrtfFastConv->leftHRIRReal_HOA3[i][j] = leftHRIRReal_HOA3[i][j]; + HrtfFastConv->leftHRIRImag_HOA3[i][j] = leftHRIRImag_HOA3[i][j]; + HrtfFastConv->rightHRIRReal_HOA3[i][j] = rightHRIRReal_HOA3[i][j]; + HrtfFastConv->rightHRIRImag_HOA3[i][j] = rightHRIRImag_HOA3[i][j]; + } } - for ( j = 0; j < 4; j++ ) + if ( input_config == AUDIO_CONFIG_HOA2 ) { - mvr2r( leftHRIRReal_FOA[i][j], HrtfFastConv->leftHRIRReal_FOA[i][j], BINAURAL_NTAPS ); - mvr2r( leftHRIRImag_FOA[i][j], HrtfFastConv->leftHRIRImag_FOA[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRReal_FOA[i][j], HrtfFastConv->rightHRIRReal_FOA[i][j], BINAURAL_NTAPS ); - mvr2r( rightHRIRImag_FOA[i][j], HrtfFastConv->rightHRIRImag_FOA[i][j], BINAURAL_NTAPS ); + for ( j = 0; j < HOA2_CHANNELS; j++ ) + { + HrtfFastConv->leftHRIRReal_HOA2[i][j] = leftHRIRReal_HOA2[i][j]; + HrtfFastConv->leftHRIRImag_HOA2[i][j] = leftHRIRImag_HOA2[i][j]; + HrtfFastConv->rightHRIRReal_HOA2[i][j] = rightHRIRReal_HOA2[i][j]; + HrtfFastConv->rightHRIRImag_HOA2[i][j] = rightHRIRImag_HOA2[i][j]; + } + } + if ( input_config == AUDIO_CONFIG_FOA ) + { + for ( j = 0; j < FOA_CHANNELS; j++ ) + { + HrtfFastConv->leftHRIRReal_FOA[i][j] = leftHRIRReal_FOA[i][j]; + HrtfFastConv->leftHRIRImag_FOA[i][j] = leftHRIRImag_FOA[i][j]; + HrtfFastConv->rightHRIRReal_FOA[i][j] = rightHRIRReal_FOA[i][j]; + HrtfFastConv->rightHRIRImag_FOA[i][j] = rightHRIRImag_FOA[i][j]; + } } } - mvr2r( fastconvReverberationTimes, HrtfFastConv->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); mvr2r( fastconvReverberationEneCorrections, HrtfFastConv->fastconvReverberationEneCorrections, CLDFB_NO_CHANNELS_MAX ); @@ -581,6 +975,97 @@ static void ivas_binaural_obtain_DMX( } +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*------------------------------------------------------------------------- + * ivas_rend_openCldfbRend() + * + * Allocate and initialize CLDFB fast conv renderer handle + *------------------------------------------------------------------------*/ + +ivas_error ivas_rend_openCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs ) +{ + BINAURAL_RENDERER_HANDLE hBinRenderer; + int16_t convBand; + ivas_error error; + + error = IVAS_ERR_OK; + + /*-----------------------------------------------------------------* + * prepare library opening + *-----------------------------------------------------------------*/ + + if ( ( hBinRenderer = (BINAURAL_RENDERER_HANDLE) malloc( sizeof( BINAURAL_RENDERER ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural Renderer\n" ) ); + } + + if ( ( hBinRenderer->hInputSetup = (IVAS_OUTPUT_SETUP_HANDLE) malloc( sizeof( IVAS_OUTPUT_SETUP ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for output setup Binaural Renderer\n" ) ); + } + + hBinRenderer->rotInCldfb = 1; + hBinRenderer->ivas_format = SBA_FORMAT; + + hBinRenderer->max_band = (int16_t) ( ( BINAURAL_MAXBANDS * output_Fs ) / 48000 ); + convBand = hBinRenderer->max_band; + + hBinRenderer->timeSlots = MAX_PARAM_SPATIAL_SUBFRAMES; /* Corresponds to 5 msec sound to motion latency */ + + if ( convBand > BINAURAL_CONVBANDS ) + { + hBinRenderer->conv_band = BINAURAL_CONVBANDS; + } + else + { + hBinRenderer->conv_band = convBand; + } + + hBinRenderer->hInputSetup->is_loudspeaker_setup = 0; + hBinRenderer->hInputSetup->output_config = inConfig; + getAudioConfigNumChannels( inConfig, &hBinRenderer->hInputSetup->nchan_out_woLFE ); + + if ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + hBinRenderer->numPoses = pMultiBinPoseData->num_poses + 1; +#else + hBinRenderer->numPoses = pMultiBinPoseData->num_poses; +#endif + } + else + { + hBinRenderer->numPoses = 1; + } + + /* Load HRTF tables */ + if ( ( error = ivas_binaural_hrtf_open( &pCldfbRend->hHrtfFastConv, hBinRenderer->hInputSetup->output_config, RENDERER_BINAURAL_FASTCONV ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Allocate memories and buffers needed for convolutional module */ + if ( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, RENDERER_BINAURAL_FASTCONV, hBinRenderer->hInputSetup->is_loudspeaker_setup, inConfig, pCldfbRend->hHrtfFastConv, hBinRenderer->numPoses ) ) != IVAS_ERR_OK ) + { + return error; + } + + pCldfbRend->binaural_latency_ns = (int32_t) ( FASTCONV_HOA3_latency_s * 1000000000.f ); + hBinRenderer->hReverb = NULL; + hBinRenderer->hEFAPdata = NULL; + + pCldfbRend->hCldfbRend = hBinRenderer; + + return error; +} +#endif + + /*------------------------------------------------------------------------- * ivas_binRenderer_open() * @@ -615,6 +1100,21 @@ ivas_error ivas_binRenderer_open( hBinRenderer->rotInCldfb = 1; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + hBinRenderer->numPoses = st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses + 1; +#else + hBinRenderer->numPoses = st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses; +#endif + } + else + { + hBinRenderer->numPoses = 1; + } +#endif + /* Declare some common variables needed for renderer */ /* Which format used for binaural rendering (needed for late reverb) ? MC or SBA */ if ( st_ivas->hIntSetup.is_loudspeaker_setup ) @@ -648,18 +1148,22 @@ ivas_error ivas_binRenderer_open( } /* Load HRTF tables */ - ivas_binaural_hrtf_open( &st_ivas->hHrtfFastConv ); + if ( ( error = ivas_binaural_hrtf_open( &st_ivas->hHrtfFastConv, st_ivas->hIntSetup.output_config, st_ivas->renderer_type ) ) != IVAS_ERR_OK ) + { + return error; + } if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && ( st_ivas->hIntSetup.is_loudspeaker_setup == 0 ) ) { IVAS_OUTPUT_SETUP out_setup; /* Allocate memories and buffers needed for convolutional module in CICP19 */ - if ( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, - st_ivas->renderer_type, - 1, - AUDIO_CONFIG_7_1_4, - st_ivas->hHrtfFastConv ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, 1, AUDIO_CONFIG_7_1_4, st_ivas->hHrtfFastConv +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + hBinRenderer->numPoses +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -680,11 +1184,12 @@ ivas_error ivas_binRenderer_open( else { /* Allocate memories and buffers needed for convolutional module */ - if ( ( 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 ) + if ( ( error = ivas_binRenderer_convModuleOpen( hBinRenderer, st_ivas->renderer_type, st_ivas->hIntSetup.is_loudspeaker_setup, st_ivas->hIntSetup.output_config, st_ivas->hHrtfFastConv +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + hBinRenderer->numPoses +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -723,17 +1228,11 @@ ivas_error ivas_binRenderer_open( } /* Allocate memories needed for reverb module */ - if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM && st_ivas->hIntSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { - if ( ( error = ivas_binaural_reverb_open( &( hBinRenderer->hReverb ), - hBinRenderer->conv_band, - hBinRenderer->timeSlots, - &( st_ivas->hRenderConfig->roomAcoustics ), - st_ivas->hIntSetup.output_config, - st_ivas->hDecoderConfig->output_Fs, - RENDERER_BINAURAL_FASTCONV_ROOM, - st_ivas->hHrtfFastConv, - st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV && st_ivas->hIntSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + if ( ( error = ivas_binaural_reverb_open( &( hBinRenderer->hReverb ), hBinRenderer->conv_band, hBinRenderer->timeSlots, &( st_ivas->hRenderConfig->roomAcoustics ), st_ivas->hIntSetup.output_config, st_ivas->hDecoderConfig->output_Fs, + RENDERER_BINAURAL_FASTCONV, + st_ivas->hHrtfFastConv, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) { return error; } @@ -790,9 +1289,16 @@ ivas_error ivas_binRenderer_open( static void ivas_binRenderer_convModuleClose( BINAURAL_RENDERER_HANDLE *hBinRenderer /* i/o: fastconv binaural renderer handle */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif ) { int16_t bandIdx, chIdx; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t posIdx; +#endif BINRENDERER_CONV_MODULE_HANDLE hBinRenConvModule; hBinRenConvModule = ( *hBinRenderer )->hBinRenConvModule; @@ -830,6 +1336,39 @@ static void ivas_binRenderer_convModuleClose( hBinRenConvModule->filterTapsRightImag = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( posIdx = 0; posIdx < num_poses; posIdx++ ) + { + for ( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ ) + { + for ( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ ) + { + free( hBinRenConvModule->filterStatesLeftReal[posIdx][bandIdx][chIdx] ); + hBinRenConvModule->filterStatesLeftReal[posIdx][bandIdx][chIdx] = NULL; + + free( hBinRenConvModule->filterStatesLeftImag[posIdx][bandIdx][chIdx] ); + hBinRenConvModule->filterStatesLeftImag[posIdx][bandIdx][chIdx] = NULL; + } + + free( hBinRenConvModule->filterStatesLeftReal[posIdx][bandIdx] ); + hBinRenConvModule->filterStatesLeftReal[posIdx][bandIdx] = NULL; + + free( hBinRenConvModule->filterStatesLeftImag[posIdx][bandIdx] ); + hBinRenConvModule->filterStatesLeftImag[posIdx][bandIdx] = NULL; + } + + free( hBinRenConvModule->filterStatesLeftReal[posIdx] ); + hBinRenConvModule->filterStatesLeftReal[posIdx] = NULL; + + free( hBinRenConvModule->filterStatesLeftImag[posIdx] ); + hBinRenConvModule->filterStatesLeftImag[posIdx] = NULL; + } + free( hBinRenConvModule->filterStatesLeftReal ); + hBinRenConvModule->filterStatesLeftReal = NULL; + + free( hBinRenConvModule->filterStatesLeftImag ); + hBinRenConvModule->filterStatesLeftImag = NULL; +#else for ( bandIdx = 0; bandIdx < ( *hBinRenderer )->conv_band; bandIdx++ ) { for ( chIdx = 0; chIdx < ( *hBinRenderer )->nInChannels; chIdx++ ) @@ -853,7 +1392,7 @@ static void ivas_binRenderer_convModuleClose( free( hBinRenConvModule->filterStatesLeftImag ); hBinRenConvModule->filterStatesLeftImag = NULL; - +#endif free( ( *hBinRenderer )->hBinRenConvModule ); ( *hBinRenderer )->hBinRenConvModule = NULL; @@ -879,7 +1418,12 @@ void ivas_binRenderer_close( if ( ( *hBinRenderer )->hBinRenConvModule != NULL ) { - ivas_binRenderer_convModuleClose( hBinRenderer ); + ivas_binRenderer_convModuleClose( hBinRenderer +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + ( *hBinRenderer )->numPoses +#endif + ); } if ( ( *hBinRenderer )->hReverb != NULL ) @@ -893,6 +1437,89 @@ void ivas_binRenderer_close( return; } +/*------------------------------------------------------------------------- + * ivas_free_pppHrtfMem() + * + * Free fastconv binaural renderer hrtf memories + *------------------------------------------------------------------------*/ + +static void ivas_free_pppHrtfMem( + float ****ppppHRIR, + const int16_t dim, + const int16_t alloc_init ) +{ + int16_t i, j; + + if ( *ppppHRIR != NULL ) + { + for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) + { + if ( alloc_init == 0 ) + { + for ( j = 0; j < dim; j++ ) + { + free( ( *ppppHRIR )[i][j] ); + ( *ppppHRIR )[i][j] = NULL; + } + } + free( ( *ppppHRIR )[i] ); + ( *ppppHRIR )[i] = NULL; + } + free( *ppppHRIR ); + *ppppHRIR = NULL; + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_binaural_hrtf_close() + * + * Close fastconv binaural renderer hrtf memories + *------------------------------------------------------------------------*/ + +void ivas_binaural_hrtf_close( + HRTFS_FASTCONV_HANDLE *hHrtfFastConv /* i : fastconv HRTF handle */ +) +{ + int16_t allocate_init_flag; + + if ( hHrtfFastConv == NULL || *hHrtfFastConv == NULL ) + { + return; + } + + allocate_init_flag = ( *hHrtfFastConv )->allocate_init_flag; + + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRReal, HRTF_LS_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRImag, HRTF_LS_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRReal, HRTF_LS_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRImag, HRTF_LS_CHANNELS, allocate_init_flag ); + + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftBRIRReal, HRTF_LS_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftBRIRImag, HRTF_LS_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightBRIRReal, HRTF_LS_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightBRIRImag, HRTF_LS_CHANNELS, allocate_init_flag ); + + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRReal_HOA3, HOA3_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRImag_HOA3, HOA3_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRReal_HOA3, HOA3_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRImag_HOA3, HOA3_CHANNELS, allocate_init_flag ); + + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRReal_HOA2, HOA2_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRImag_HOA2, HOA2_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRReal_HOA2, HOA2_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRImag_HOA2, HOA2_CHANNELS, allocate_init_flag ); + + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRReal_FOA, FOA_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->leftHRIRImag_FOA, FOA_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRReal_FOA, FOA_CHANNELS, allocate_init_flag ); + ivas_free_pppHrtfMem( &( *hHrtfFastConv )->rightHRIRImag_FOA, FOA_CHANNELS, allocate_init_flag ); + + return; +} + /*-------------------------------------------------------------------------* * ivas_binaural_add_LFE() @@ -903,8 +1530,8 @@ void ivas_binRenderer_close( 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 */ + float *input_f[], /* i : transport channels */ + float *output_f[] /* o : synthesized core-coder transport channels/DirAC output */ ) { int16_t render_lfe, idx_lfe; @@ -929,6 +1556,7 @@ void ivas_binaural_add_LFE( { gain = ( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hHrtfCrend != NULL ) ) ? st_ivas->hCrendWrapper->hHrtfCrend->gain_lfe : GAIN_LFE; } + for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) { v_multc( input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], gain, input_f[st_ivas->hIntSetup.index_lfe[idx_lfe]], output_frame ); @@ -956,8 +1584,13 @@ void ivas_binaural_cldfb( { float Cldfb_RealBuffer[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#else float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif int16_t slot_idx, subframeIdx, index_slot, idx_in, idx_lfe, maxBand, ch; /* Implement a 5 msec loops */ @@ -991,10 +1624,84 @@ void ivas_binaural_cldfb( idx_in++; } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*LFE handling for split rendering cases*/ + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) + { + ch = st_ivas->hIntSetup.index_lfe[idx_lfe]; + cldfbAnalysis_ts( &( output_f[ch][maxBand * index_slot] ), Cldfb_RealBuffer[idx_in][slot_idx], Cldfb_ImagBuffer[idx_in][slot_idx], maxBand, st_ivas->cldfbAnaDec[idx_in] ); + idx_in++; + } + + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + mvr2r( Cldfb_RealBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + } + st_ivas->hSplitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + } + } +#endif } /* Implement binaural rendering */ - ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hCombinedOrientationData, subframeIdx, JBM_CLDFB_SLOTS_IN_SUBFRAME, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); + ivas_binRenderer( + st_ivas->hBinRenderer, +#ifdef SPLIT_REND_WITH_HEAD_ROT + &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, +#endif + st_ivas->hCombinedOrientationData, + subframeIdx, + JBM_CLDFB_SLOTS_IN_SUBFRAME, +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + NULL, +#endif + Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, + Cldfb_RealBuffer, Cldfb_ImagBuffer ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + int16_t pos_idx; + for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ ) + { + if ( st_ivas->hIntSetup.num_lfe > 0 ) + { + v_multc( Cldfb_RealBuffer[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_RealBuffer[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand ); + v_multc( Cldfb_ImagBuffer[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_ImagBuffer[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand ); + } + } + + for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) + { + for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ ) + { + for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + if ( st_ivas->hIntSetup.num_lfe > 0 ) + { + v_add( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], + Cldfb_RealBuffer[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], + Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], + maxBand ); + + v_add( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], + Cldfb_ImagBuffer[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], + Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], + maxBand ); + } + + mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + } + } + } + } +#endif /* Implement CLDFB synthesis */ for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) @@ -1006,8 +1713,13 @@ void ivas_binaural_cldfb( for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[0][ch][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[0][ch][slot_idx]; +#else RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch][slot_idx]; ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch][slot_idx]; +#endif } cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * maxBand] ), maxBand * MAX_PARAM_SPATIAL_SUBFRAMES, st_ivas->cldfbSynDec[ch] ); @@ -1027,20 +1739,25 @@ void ivas_binaural_cldfb( void ivas_binaural_cldfb_sf( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const int16_t n_samples_to_render, /* i : output frame length per channel */ + const int16_t slot_size, /* i : JBM slot size */ float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output */ ) { float Cldfb_RealBuffer[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_INTERN_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#else float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif int16_t slot_idx, subframeIdx, index_slot, idx_in, idx_lfe, maxBand, ch; - int16_t slot_size, slots_to_render, first_sf, last_sf; + int16_t slots_to_render, first_sf, last_sf; int16_t slot_index_start, slot_index_start_cldfb; /* Implement a 5 msec loops */ maxBand = (int16_t) ( ( CLDFB_NO_CHANNELS_MAX * st_ivas->hDecoderConfig->output_Fs ) / 48000 ); - slot_size = st_ivas->hTcBuffer->nb_subframes; /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ slots_to_render = min( st_ivas->hTcBuffer->num_slots - st_ivas->hTcBuffer->slots_rendered, n_samples_to_render / slot_size ); @@ -1076,17 +1793,69 @@ void ivas_binaural_cldfb_sf( } else { - cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[ch][maxBand * index_slot] ), - Cldfb_RealBuffer[idx_in][slot_idx], - Cldfb_ImagBuffer[idx_in][slot_idx], - maxBand, st_ivas->cldfbAnaDec[idx_in] ); + cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[ch][maxBand * index_slot] ), Cldfb_RealBuffer[idx_in][slot_idx], Cldfb_ImagBuffer[idx_in][slot_idx], maxBand, st_ivas->cldfbAnaDec[idx_in] ); idx_in++; } } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*LFE handling for split rendering cases*/ + if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) + { + ch = st_ivas->hIntSetup.index_lfe[idx_lfe]; + cldfbAnalysis_ts( &( output_f[ch][maxBand * index_slot] ), Cldfb_RealBuffer[idx_in][slot_idx], Cldfb_ImagBuffer[idx_in][slot_idx], maxBand, st_ivas->cldfbAnaDec[idx_in] ); + idx_in++; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + mvr2r( Cldfb_RealBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_index_start + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][slot_index_start + slot_idx], maxBand ); + } + st_ivas->hSplitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + } +#endif + } +#endif } /* Implement binaural rendering */ - ivas_binRenderer( st_ivas->hBinRenderer, st_ivas->hCombinedOrientationData, subframeIdx, st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); + ivas_binRenderer( + st_ivas->hBinRenderer, +#ifdef SPLIT_REND_WITH_HEAD_ROT + &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, +#endif + st_ivas->hCombinedOrientationData, + subframeIdx, + st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + Cldfb_RealBuffer, + Cldfb_ImagBuffer ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + int16_t pos_idx; + for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) + { + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) + { + for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_index_start + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_index_start + slot_idx], maxBand ); + } + } + } + } +#endif /* Implement CLDFB synthesis */ for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) @@ -1096,8 +1865,13 @@ void ivas_binaural_cldfb_sf( for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[0][ch][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[0][ch][slot_idx]; +#else RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch][slot_idx]; ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch][slot_idx]; +#endif } cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][slot_index_start_cldfb * maxBand] ), maxBand * st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], st_ivas->cldfbSynDec[ch] ); @@ -1120,22 +1894,52 @@ void ivas_binaural_cldfb_sf( *-------------------------------------------------------------------------*/ void ivas_binRenderer( - BINAURAL_RENDERER_HANDLE hBinRenderer, /* i/o: binaural renderer handle */ - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined head and external orientation handle*/ - int16_t subframe_idx, /* i : subframe index */ - const int16_t numTimeSlots, /* i : number of time slots to render */ - 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 */ + 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*/ + int16_t subframe_idx, /* i : subframe index */ + const int16_t numTimeSlots, /* i : number of time slots to render */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HEAD_TRACK_DATA_HANDLE hPostRendHeadTrackData, +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ + float Cldfb_ImagBuffer_Binaural[][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* o : Rotated Binaural signals */ +#else + 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 */ +#endif + 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 */ ) { int16_t chIdx, k; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx, num_poses; +#endif 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++ ) + { + for ( k = 0; k < numTimeSlots; k++ ) + { + set_zero( Cldfb_RealBuffer_Binaural[pos_idx][chIdx][k], CLDFB_NO_CHANNELS_MAX ); + set_zero( Cldfb_ImagBuffer_Binaural[pos_idx][chIdx][k], CLDFB_NO_CHANNELS_MAX ); + } + } + } +#else for ( chIdx = 0; chIdx < BINAURAL_CHANNELS; chIdx++ ) { for ( k = 0; k < numTimeSlots; k++ ) @@ -1144,10 +1948,10 @@ void ivas_binRenderer( set_zero( Cldfb_ImagBuffer_Binaural[chIdx][k], CLDFB_NO_CHANNELS_MAX ); } } +#endif /* Head rotation in HOA3 or CICPx */ - if ( - hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && hBinRenderer->rotInCldfb ) + if ( hCombinedOrientationData != NULL && hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && hBinRenderer->rotInCldfb ) { if ( hBinRenderer->hInputSetup->is_loudspeaker_setup == 0 ) { @@ -1174,7 +1978,75 @@ void ivas_binRenderer( ivas_sba2mc_cldfb( *( hBinRenderer->hInputSetup ), RealBuffer, ImagBuffer, hBinRenderer->nInChannels, hBinRenderer->conv_band, numTimeSlots, hBinRenderer->hoa_dec_mtx ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_binRenderer_filterModule( Cldfb_RealBuffer_Binaural[0], Cldfb_ImagBuffer_Binaural[0], RealBuffer, ImagBuffer, numTimeSlots, hBinRenderer, 0 ); +#else ivas_binRenderer_filterModule( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, RealBuffer, ImagBuffer, numTimeSlots, hBinRenderer ); +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*TODO : move this to a separate function*/ + if ( pMultiBinPoseData != NULL ) + { + if ( pMultiBinPoseData->num_poses > 1 ) + { + IVAS_QUATERNION Quaternions_rel, Quaternions_abs, *Quaternions_ref; + float Rmat_local[3][3]; + + if ( hCombinedOrientationData && hBinRenderer->rotInCldfb ) + { + Quaternions_ref = &hCombinedOrientationData->Quaternions[0]; + Quaternions_rel.w = -3.0f; /*euler*/ + Quaternions_abs.w = -3.0f; /*euler*/ + Quat2EulerDegree( *Quaternions_ref, &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ + + for ( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + Quaternions_rel.x = pMultiBinPoseData->relative_head_poses[pos_idx][0] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][0]; + Quaternions_rel.y = pMultiBinPoseData->relative_head_poses[pos_idx][1] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][1]; + Quaternions_rel.z = pMultiBinPoseData->relative_head_poses[pos_idx][2] - pMultiBinPoseData->relative_head_poses[pos_idx - 1][2]; + Quaternions_abs.x = Quaternions_abs.x + Quaternions_rel.x; + Quaternions_abs.y = Quaternions_abs.y + Quaternions_rel.y; + Quaternions_abs.z = Quaternions_abs.z + Quaternions_rel.z; + + + QuatToRotMat( Quaternions_rel, Rmat_local ); + if ( hBinRenderer->hInputSetup->is_loudspeaker_setup ) + { + rotateFrame_sd_cldfb( Rmat_local, RealBuffer, ImagBuffer, hBinRenderer->hInputSetup, hBinRenderer->hEFAPdata, numTimeSlots, hBinRenderer->conv_band ); + } + else + { + rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, Rmat_local, hBinRenderer->hInputSetup->nchan_out_woLFE, numTimeSlots, 3 ); + } + + ivas_binRenderer_filterModule( Cldfb_RealBuffer_Binaural[pos_idx], Cldfb_ImagBuffer_Binaural[pos_idx], RealBuffer, ImagBuffer, numTimeSlots, hBinRenderer, pos_idx ); + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + if ( hPostRendHeadTrackData != NULL ) + { + IVAS_QUATERNION *Quaternions_new1; + IVAS_QUATERNION Quaternions_new; + Quaternions_new1 = &hPostRendHeadTrackData->Quaternions[hPostRendHeadTrackData->num_quaternions++]; + Quaternions_new.w = -3.0f; /*euler*/ + Quat2EulerDegree( *Quaternions_new1, &Quaternions_new.z, &Quaternions_new.y, &Quaternions_new.x ); /*order in Quat2Euler seems to be reversed ?*/ + Quaternions_rel.x = Quaternions_new.x - Quaternions_abs.x; + Quaternions_rel.y = Quaternions_new.y - Quaternions_abs.y; + Quaternions_rel.z = Quaternions_new.z - Quaternions_abs.z; + Quaternions_abs.x = Quaternions_abs.x + Quaternions_rel.x; + Quaternions_abs.y = Quaternions_abs.y + Quaternions_rel.y; + Quaternions_abs.z = Quaternions_abs.z + Quaternions_rel.z; + + QuatToRotMat( Quaternions_rel, Rmat_local ); + rotateFrame_shd_cldfb( RealBuffer, ImagBuffer, Rmat_local, hBinRenderer->hInputSetup->nchan_out_woLFE, 3 ); + ivas_binRenderer_filterModule( Cldfb_RealBuffer_Binaural[num_poses], Cldfb_ImagBuffer_Binaural[num_poses], RealBuffer, ImagBuffer, numTimeSlots, hBinRenderer, num_poses ); + } +#endif + } + } + } +#endif /* Obtain the binaural dmx and compute the reverb */ if ( hBinRenderer->hReverb != NULL ) @@ -1201,9 +2073,18 @@ void ivas_binRenderer( { 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( Cldfb_RealBuffer_Binaural[pos_idx][chIdx][k], reverbRe[chIdx][k], Cldfb_RealBuffer_Binaural[pos_idx][chIdx][k], hBinRenderer->conv_band ); + v_add( Cldfb_ImagBuffer_Binaural[pos_idx][chIdx][k], reverbIm[chIdx][k], Cldfb_ImagBuffer_Binaural[pos_idx][chIdx][k], hBinRenderer->conv_band ); + } +#else /* Combine first and second parts to generate binaural output signal with room effect */ v_add( Cldfb_RealBuffer_Binaural[chIdx][k], reverbRe[chIdx][k], Cldfb_RealBuffer_Binaural[chIdx][k], hBinRenderer->conv_band ); v_add( Cldfb_ImagBuffer_Binaural[chIdx][k], reverbIm[chIdx][k], Cldfb_ImagBuffer_Binaural[chIdx][k], hBinRenderer->conv_band ); +#endif } } } @@ -1212,3 +2093,101 @@ void ivas_binRenderer( return; } + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*------------------------------------------------------------------------- + * ivas_rend_CldfbMultiBinRendProcess() + * + * + *-------------------------------------------------------------------------*/ + +void ivas_rend_CldfbMultiBinRendProcess( + const BINAURAL_RENDERER_HANDLE hCldfbRend, + const COMBINED_ORIENTATION_HANDLE *pCombinedOrientationData, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_Out_Real[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ + float Cldfb_Out_Imag[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t low_res_pre_rend_rot +#ifdef API_5MS + , + int16_t num_subframes +#endif +) +{ + int16_t slot_idx, ch_idx, idx, pose_idx, i, j; + int16_t sf_idx; + float Cldfb_RealBuffer_sfIn[MAX_INPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_sfIn[MAX_INPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HEAD_TRACK_DATA head_track_post; + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES + 1][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES + 1][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#else + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif + + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + idx = sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES + slot_idx; + for ( ch_idx = 0; ch_idx < hCldfbRend->nInChannels; ch_idx++ ) + { + mvr2r( &Cldfb_In_Real[ch_idx][idx][0], &Cldfb_RealBuffer_sfIn[ch_idx][slot_idx][0], hCldfbRend->max_band ); + mvr2r( &Cldfb_In_Imag[ch_idx][idx][0], &Cldfb_ImagBuffer_sfIn[ch_idx][slot_idx][0], hCldfbRend->max_band ); + } + } + + if ( ( *pCombinedOrientationData ) != NULL ) + { + if ( ( low_res_pre_rend_rot ) && ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) ) + { + ( *pCombinedOrientationData )->Quaternions[sf_idx] = ( *pCombinedOrientationData )->Quaternions[0]; + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + ( *pCombinedOrientationData )->Rmat[sf_idx][i][j] = ( *pCombinedOrientationData )->Rmat[0][i][j]; + } + } + } + ( *pCombinedOrientationData )->shd_rot_max_order = -1; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + head_track_post.num_quaternions = 0; + head_track_post.shd_rot_max_order = -1; + head_track_post.Quaternions[0] = ivas_split_rend_get_sf_rot_data( pHeadRotData->headPositionsPostRend, sf_idx ); +#endif + + ivas_binRenderer( hCldfbRend, + pMultiBinPoseData, + *pCombinedOrientationData, + sf_idx, + MAX_PARAM_SPATIAL_SUBFRAMES, +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + &head_track_post, +#endif + Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer_sfIn, Cldfb_ImagBuffer_sfIn ); + + for ( pose_idx = 0; pose_idx < hCldfbRend->numPoses; pose_idx++ ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + idx = sf_idx * MAX_PARAM_SPATIAL_SUBFRAMES + slot_idx; + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + mvr2r( &Cldfb_RealBuffer_Binaural[pose_idx][ch_idx][slot_idx][0], &Cldfb_Out_Real[( pose_idx * BINAURAL_CHANNELS ) + ch_idx][idx][0], hCldfbRend->max_band ); + mvr2r( &Cldfb_ImagBuffer_Binaural[pose_idx][ch_idx][slot_idx][0], &Cldfb_Out_Imag[( pose_idx * BINAURAL_CHANNELS ) + ch_idx][idx][0], hCldfbRend->max_band ); + } + } + } + } + + return; +} +#endif diff --git a/lib_dec/ivas_core_dec.c b/lib_dec/ivas_core_dec.c index 0f644b1d6fb013ded9a28c07980d5b5832256ea0..ee949f8665f4322fa45c9c4825e5a20aa747815e 100644 --- a/lib_dec/ivas_core_dec.c +++ b/lib_dec/ivas_core_dec.c @@ -60,7 +60,7 @@ ivas_error ivas_core_dec( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ MCT_DEC_HANDLE hMCT, /* i/o: MCT decoder structure */ const int16_t n_channels, /* i : number of channels to be decoded */ - float output[CPE_CHANNELS][L_FRAME48k], /* o : output synthesis signal */ + float *output[L_FRAME48k], /* o : output synthesis signal */ float hb_synth[CPE_CHANNELS][L_FRAME48k], /* o : output HB synthesis signal */ float DFT[CPE_CHANNELS][STEREO_DFT_BUF_MAX], /* o : DFT buffers */ const int16_t sba_dirac_stereo_flag /* i : signal stereo output for SBA DirAC */ @@ -274,6 +274,15 @@ ivas_error ivas_core_dec( } } + /*------------------------------------------------------------------* + * Sanity check in combined format coding + *-----------------------------------------------------------------*/ + + if ( hCPE != NULL && hCPE->element_mode == IVAS_CPE_DFT && hCPE->brate_surplus > 0 ) + { + ivas_combined_format_brate_sanity( hCPE->element_brate, sts[0]->core, &( sts[0]->core_brate ), &tmps ); + } + /*------------------------------------------------------------------* * Core Decoding *-----------------------------------------------------------------*/ diff --git a/lib_dec/ivas_cpe_dec.c b/lib_dec/ivas_cpe_dec.c index 9096843e9c6c6b3fccdba1c51df0ff9ee7a368ad..5318ec07a4c3749a6beebcbd0ee519149924974b 100644 --- a/lib_dec/ivas_cpe_dec.c +++ b/lib_dec/ivas_cpe_dec.c @@ -52,6 +52,8 @@ static void read_stereo_mode_and_bwidth( CPE_DEC_HANDLE hCPE, const Decoder_Struct *st_ivas ); +static void stereo_mode_combined_format_dec( const Decoder_Struct *st_ivas, CPE_DEC_HANDLE hCPE ); + /*--------------------------------------------------------------------------* * ivas_cpe_dec() @@ -60,11 +62,11 @@ static void read_stereo_mode_and_bwidth( CPE_DEC_HANDLE hCPE, const Decoder_Stru *--------------------------------------------------------------------------*/ 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][L_FRAME48k], /* 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 */ + 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 */ ) { int16_t i, n, n_channels; @@ -77,6 +79,8 @@ ivas_error ivas_cpe_dec( Decoder_State **sts; int32_t ivas_total_brate; ivas_error error; + int32_t cpe_brate; + int32_t element_brate_ref; error = IVAS_ERR_OK; @@ -93,10 +97,14 @@ ivas_error ivas_cpe_dec( sts[0]->BER_detect |= st_ivas->BER_detect; sts[1]->BER_detect |= st_ivas->BER_detect; + element_brate_ref = hCPE->element_brate; + /*------------------------------------------------------------------* * Read stereo technology info & audio bandwidth *-----------------------------------------------------------------*/ + stereo_mode_combined_format_dec( st_ivas, hCPE ); + read_stereo_mode_and_bwidth( hCPE, st_ivas ); /*----------------------------------------------------------------* @@ -162,7 +170,14 @@ ivas_error ivas_cpe_dec( { if ( st_ivas->hQMetaData != NULL && ivas_total_brate > IVAS_SID_5k2 ) { - stereo_dft_config( hCPE->hStereoDft == NULL ? NULL : hCPE->hStereoDft->hConfig, st_ivas->hQMetaData->bits_frame_nominal * FRAMES_PER_SEC, &sts[0]->bits_frame_nominal, &sts[1]->bits_frame_nominal ); + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + stereo_dft_config( hCPE->hStereoDft == NULL ? NULL : hCPE->hStereoDft->hConfig, (int32_t) ( 0.7f * st_ivas->hQMetaData->bits_frame_nominal * FRAMES_PER_SEC ), &sts[0]->bits_frame_nominal, &sts[1]->bits_frame_nominal ); + } + else + { + stereo_dft_config( hCPE->hStereoDft == NULL ? NULL : hCPE->hStereoDft->hConfig, st_ivas->hQMetaData->bits_frame_nominal * FRAMES_PER_SEC, &sts[0]->bits_frame_nominal, &sts[1]->bits_frame_nominal ); + } } else { @@ -218,7 +233,16 @@ ivas_error ivas_cpe_dec( /* read DFT Stereo side info */ nb_bits = (int16_t) ( ( hCPE->element_brate ) / FRAMES_PER_SEC - 0.8f * sts[0]->bits_frame_nominal ); - sts[1]->bit_stream = sts[0]->bit_stream + ivas_total_brate / FRAMES_PER_SEC - 1 - nb_bits_metadata; + cpe_brate = st_ivas->hCPE[0]->element_brate; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + sts[1]->bit_stream = sts[0]->bit_stream + cpe_brate / FRAMES_PER_SEC - 1 - nb_bits_metadata; + sts[1]->bit_stream += hCPE->brate_surplus / FRAMES_PER_SEC; + } + else + { + sts[1]->bit_stream = sts[0]->bit_stream + ivas_total_brate / FRAMES_PER_SEC - 1 - nb_bits_metadata; + } if ( ivas_total_brate == IVAS_SID_5k2 ) { @@ -226,7 +250,7 @@ ivas_error ivas_cpe_dec( sts[1]->bit_stream -= SID_FORMAT_NBITS; } - if ( st_ivas->ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE && ivas_total_brate > IVAS_SID_5k2 ) + if ( ( ( st_ivas->ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE ) || ( st_ivas->ivas_format == MASA_ISM_FORMAT && cpe_brate < MASA_STEREO_MIN_BITRATE ) ) && ivas_total_brate > IVAS_SID_5k2 ) { sts[0]->total_brate = hCPE->element_brate; /* Only mono downmix was transmitted in this case */ } @@ -237,6 +261,12 @@ ivas_error ivas_cpe_dec( /* subtract metadata bitbudget */ sts[0]->total_brate -= ( nb_bits_metadata * FRAMES_PER_SEC ); + + /* subtract bit-rate for combined format coding */ + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + sts[0]->total_brate += hCPE->brate_surplus; + } } else { @@ -248,6 +278,7 @@ ivas_error ivas_cpe_dec( /* signal bitrate for BW selection in the SCh */ sts[0]->bits_frame_channel = 0; sts[1]->bits_frame_channel = (int16_t) ( hCPE->element_brate / FRAMES_PER_SEC ); + sts[1]->bits_frame_channel += (int16_t) ( hCPE->brate_surplus / FRAMES_PER_SEC ); if ( st_ivas->hQMetaData != NULL ) { sts[1]->bits_frame_channel -= st_ivas->hQMetaData->metadata_max_bits; @@ -255,6 +286,14 @@ ivas_error ivas_cpe_dec( } else if ( hCPE->element_mode == IVAS_CPE_MDCT ) { + /* compute bit-rate surplus per channel in combined format coding */ + int32_t brate_surplus[CPE_CHANNELS]; + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + brate_surplus[0] = ( ( hCPE->brate_surplus / FRAMES_PER_SEC ) >> 1 ) * FRAMES_PER_SEC; + brate_surplus[1] = hCPE->brate_surplus - brate_surplus[0]; + } + if ( is_DTXrate( ivas_total_brate ) == 1 && ( sts[0]->first_CNG == 0 || sts[1]->first_CNG == 0 ) ) { if ( ( error = initMdctStereoDtxData( hCPE ) ) != IVAS_ERR_OK ) @@ -279,6 +318,13 @@ ivas_error ivas_cpe_dec( } sts[n]->bits_frame_nominal = (int16_t) ( sts[n]->total_brate / FRAMES_PER_SEC ); sts[n]->bits_frame_channel = (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) / n_channels ); + + /* subtract bit-rate for combined format coding */ + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + sts[n]->bits_frame_channel += (int16_t) ( brate_surplus[n] / FRAMES_PER_SEC ); + sts[n]->total_brate += brate_surplus[n]; + } } if ( !st_ivas->hMCT ) @@ -343,7 +389,10 @@ ivas_error ivas_cpe_dec( { if ( !st_ivas->bfi ) { - tdm_configure_dec( hCPE, &tdm_ratio_idx, nb_bits_metadata ); + tdm_configure_dec( + st_ivas->ivas_format, + st_ivas->ism_mode, + hCPE, &tdm_ratio_idx, nb_bits_metadata ); sts[1]->bit_stream = sts[0]->bit_stream + ( sts[0]->total_brate / FRAMES_PER_SEC ); } @@ -489,6 +538,11 @@ ivas_error ivas_cpe_dec( hCPE->last_element_brate = hCPE->element_brate; hCPE->last_element_mode = hCPE->element_mode; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + hCPE->element_brate = element_brate_ref; + } + if ( hCPE->element_mode == IVAS_CPE_DFT || hCPE->element_mode == IVAS_CPE_TD ) { stereo_cng_dec_update( hCPE, ivas_total_brate ); @@ -517,9 +571,13 @@ ivas_error ivas_cpe_dec( { dbgwrite( output[j], sizeof( float ), output_frame, 1, fname( debug_dir, "output.cpe", j, cpe_id, DEC ) ); } - tmpF = 0; - dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.sce", 0, cpe_id, DEC ) ); - dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.mct", 0, cpe_id, DEC ) ); + + if ( st_ivas->ivas_format != MASA_ISM_FORMAT ) + { + tmpF = 0; + dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.sce", 0, cpe_id, DEC ) ); + dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.mct", 0, cpe_id, DEC ) ); + } } } #endif @@ -546,6 +604,7 @@ ivas_error create_cpe_dec( Decoder_State *st; int32_t output_Fs; ivas_error error; + int32_t cpe_brate; error = IVAS_ERR_OK; @@ -584,7 +643,7 @@ ivas_error create_cpe_dec( hCPE->lt_es_em = 0.0f; /* Note: nchan_out is considered to be related to the structure. This is nchan_out for CPE and for MASA_format is always 2. */ - if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MC_FORMAT ) + if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT || st_ivas->ivas_format == MC_FORMAT ) { hCPE->nchan_out = CPE_CHANNELS; } @@ -593,7 +652,18 @@ ivas_error create_cpe_dec( hCPE->nchan_out = min( CPE_CHANNELS, st_ivas->hDecoderConfig->nchan_out ); } - if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE && st_ivas->hDecoderConfig->ivas_total_brate > IVAS_SID_5k2 ) + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + cpe_brate = element_brate; + } + else + { + cpe_brate = st_ivas->hDecoderConfig->ivas_total_brate; + } + + if ( ( ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE ) || + ( st_ivas->ivas_format == MASA_ISM_FORMAT && cpe_brate < MASA_STEREO_MIN_BITRATE ) ) && + st_ivas->hDecoderConfig->ivas_total_brate > IVAS_SID_5k2 ) { hCPE->nchan_out = 1; } @@ -604,13 +674,15 @@ ivas_error create_cpe_dec( set_f( hCPE->prev_synth[n], 0, NS2SA( output_Fs, IVAS_DEC_DELAY_NS - STEREO_DFT32MS_OVL_NS ) ); } + hCPE->brate_surplus = 0; + /*-----------------------------------------------------------------* * DFT stereo I/O Buffers: allocate and initialize *-----------------------------------------------------------------*/ for ( i = 0; i < CPE_CHANNELS; i++ ) { - if ( st_ivas->ivas_format == STEREO_FORMAT || st_ivas->ivas_format == MASA_FORMAT || + if ( st_ivas->ivas_format == STEREO_FORMAT || st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT || ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) || st_ivas->sba_dirac_stereo_flag ) { if ( ( hCPE->input_mem[i] = (float *) malloc( sizeof( float ) * NS2SA( output_Fs, STEREO_DFT32MS_OVL_NS ) ) ) == NULL ) @@ -1022,3 +1094,46 @@ static void read_stereo_mode_and_bwidth( return; } + + +/*------------------------------------------------------------------------- + * stereo_mode_combined_format_dec() + * + * Set stereo format in a combined format + *-------------------------------------------------------------------------*/ + +static void stereo_mode_combined_format_dec( + const Decoder_Struct *st_ivas, /* i : decoder main structure */ + CPE_DEC_HANDLE hCPE /* i/o: CPE handle */ +) +{ + int32_t element_brate_ref; + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + element_brate_ref = hCPE->element_brate; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && + ( ( st_ivas->nchan_ism == 3 && st_ivas->hDecoderConfig->ivas_total_brate == IVAS_96k ) || + ( st_ivas->nchan_ism == 4 && st_ivas->hDecoderConfig->ivas_total_brate == IVAS_128k ) ) ) + { + /* read OMASA stereo mode signalling */ + if ( get_next_indice( hCPE->hCoreCoder[0], NBITS_ELEMENT_MODE ) ) + { + hCPE->element_mode = IVAS_CPE_MDCT; + } + else + { + hCPE->element_mode = IVAS_CPE_DFT; + } + + if ( hCPE->element_mode == IVAS_CPE_MDCT ) + { + hCPE->element_brate = IVAS_64k; + hCPE->brate_surplus -= ( hCPE->element_brate - element_brate_ref ); + } + } + } + + return; +} diff --git a/lib_dec/ivas_dec.c b/lib_dec/ivas_dec.c index 439a90fb2c5cf291ad0206e248c167cd46aa404e..eff9a11c06232f1bb37a703e80d698c53bc6c1a8 100644 --- a/lib_dec/ivas_dec.c +++ b/lib_dec/ivas_dec.c @@ -53,25 +53,39 @@ ivas_error ivas_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - int16_t *data /* o : output synthesis signal */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif +#if defined SPLIT_REND_WITH_HEAD_ROT && !defined( API_5MS ) + , + uint8_t *splitRendBitsBuf /* o : output split rendering bits */ +#endif ) { int16_t n, output_frame, nchan_out; - Decoder_State *st; /* used for bitstream handling */ - float output[MAX_OUTPUT_CHANNELS][L_FRAME48k]; /* 'float' buffer for output synthesis, MAX_OUTPUT_CHANNELS channels */ + Decoder_State *st; /* used for bitstream handling */ + float *output[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; /* 'float' buffer for output synthesis */ int16_t nchan_remapped; - float output_lfe_ch[L_FRAME48k]; - int16_t nb_bits_metadata[MAX_SCE]; + int16_t nb_bits_metadata[MAX_SCE + 1]; int32_t output_Fs, ivas_total_brate; AUDIO_CONFIG output_config; float pan_left, pan_right; ivas_error error; - float *p_output[MAX_OUTPUT_CHANNELS]; + float *p_output[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; + int16_t num_md_sub_frames; + int32_t ism_total_brate; +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + int16_t nchan_out_syn_output; +#endif error = IVAS_ERR_OK; push_wmops( "ivas_dec" ); +#ifndef API_5MS_BASELINE /*----------------------------------------------------------------* * IVAS decoder setup * - read IVAS format signaling @@ -82,11 +96,16 @@ ivas_error ivas_dec( if ( st_ivas->bfi == 0 ) { - if ( ( error = ivas_dec_setup( st_ivas, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dec_setup( st_ivas, NULL, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + PCM_NOT_KNOW, +#endif + NULL ) ) != IVAS_ERR_OK ) { return error; } } +#endif /*----------------------------------------------------------------* * Initialization of local vars after struct has been set @@ -99,11 +118,13 @@ ivas_error ivas_dec( output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); - for ( n = 0; n < MAX_OUTPUT_CHANNELS; n++ ) + for ( n = 0; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) { - p_output[n] = &output[n][0]; + output[n] = st_ivas->p_output_f[n]; + p_output[n] = output[n]; } + /*----------------------------------------------------------------* * Combine orientations *----------------------------------------------------------------*/ @@ -113,12 +134,54 @@ ivas_error ivas_dec( return error; } +#if defined SPLIT_REND_WITH_HEAD_ROT && !defined( API_5MS ) + if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + assert( ( st_ivas->ivas_format != UNDEFINED_FORMAT && + st_ivas->ivas_format != MONO_FORMAT && + st_ivas->ivas_format != STEREO_FORMAT ) && + ( output_Fs == 48000 ) && "split binaural mode is currently supported with SBA, MASA, ISM, or MC formats and 48 kHz sampling rate only" ); +#else + assert( ( st_ivas->ivas_format == SBA_FORMAT || + st_ivas->ivas_format == MASA_FORMAT || + st_ivas->ivas_format == ISM_FORMAT || + ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode != ISM_MODE_PARAM ) || + ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode != MC_MODE_MCMASA ) ) && + ( output_Fs == 48000 ) && "split binaural mode is currently supported with SBA, discrete ISM, or MCT-MC formats and 48 kHz sampling rate only" ); +#endif + if ( ( error = ivas_set_split_rend_setup( &st_ivas->hSplitBinRend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hCombinedOrientationData, splitRendBitsBuf ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif +#if defined SPLIT_REND_WITH_HEAD_ROT && defined( API_5MS ) + if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + ivas_set_split_rend_ht_setup( &st_ivas->hSplitBinRend, st_ivas->hCombinedOrientationData ); + } +#endif + /*----------------------------------------------------------------* * Decoding + Rendering *----------------------------------------------------------------*/ if ( st_ivas->bfi && st_ivas->ini_frame == 0 ) { + for ( n = 0; n < nchan_out; n++ ) + { + /* note: these are intra-frame heap memories */ + if ( ( st_ivas->p_output_f[n] = (float *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) ); + } + output[n] = st_ivas->p_output_f[n]; + p_output[n] = output[n]; + } + /* zero output when first frame(s) is lost */ for ( n = 0; n < nchan_out; n++ ) { @@ -162,17 +225,29 @@ ivas_error ivas_dec( { return error; } +#ifdef CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE + + /* decode dominant object first so the noise energy of the other objects can be limited */ + if ( ( error = ivas_sce_dec( st_ivas, st_ivas->hISMDTX.sce_id_dtx, &output[st_ivas->hISMDTX.sce_id_dtx], output_frame, nb_bits_metadata[st_ivas->hISMDTX.sce_id_dtx] ) ) != IVAS_ERR_OK ) + { + return error; + } + + ivas_ism_dtx_limit_noise_energy_for_near_silence( st_ivas->hSCE, st_ivas->hISMDTX.sce_id_dtx, st_ivas->nchan_transport ); +#endif } else if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { - if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, st_ivas->hDirAC->hParamIsm, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, st_ivas->hDirAC->hParamIsm, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt, + st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK ) { return error; } } else /* ISM_MODE_DISC */ { - if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt, + st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK ) { return error; } @@ -180,10 +255,21 @@ ivas_error ivas_dec( for ( n = 0; n < st_ivas->nchan_transport; n++ ) { +#ifdef CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE + /* for DTX frames, dominant object has already been decoded before */ + if ( !( ( ivas_total_brate == IVAS_SID_5k2 || ivas_total_brate == FRAME_NO_DATA ) && n == st_ivas->hISMDTX.sce_id_dtx ) ) + { + if ( ( error = ivas_sce_dec( st_ivas, n, &output[n], output_frame, nb_bits_metadata[n] ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#else if ( ( error = ivas_sce_dec( st_ivas, n, &output[n], output_frame, nb_bits_metadata[n] ) ) != IVAS_ERR_OK ) { return error; } +#endif /* HP filtering */ hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); @@ -194,9 +280,17 @@ ivas_error ivas_dec( { if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) { + /* loudness correction */ + ivas_dirac_dec_binaural_sba_gain( output, st_ivas->nchan_transport, output_frame ); + ivas_param_ism_params_to_masa_param_mapping( st_ivas ); - ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, st_ivas->nchan_transport ); + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); } else if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) { @@ -252,16 +346,38 @@ ivas_error ivas_dec( /* Binaural rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { - - if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - return error; + if ( ( error = ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } } + else + { +#endif + if ( ( error = ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, AUDIO_CONFIG_7_1_4, AUDIO_CONFIG_BINAURAL_ROOM_IR, NULL, - NULL, NULL, NULL, p_output, output_Fs ) ) != IVAS_ERR_OK ) + NULL, NULL, NULL, p_output, output_Fs +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -327,9 +443,9 @@ ivas_error ivas_dec( } #ifdef DEBUG_LBR_SBA /* SCE Decoder Output */ - for ( int t = 0; t < 960; t++ ) + for ( int16_t t = 0; t < 960; t++ ) { - for ( int c = 0; c < st_ivas->nchan_transport; c++ ) + for ( int16_t c = 0; c < st_ivas->nchan_transport; c++ ) { float val = output[c][t] / MAX16B_FLT; dbgwrite( &val, sizeof( float ), 1, 1, "int_dec_core_out.raw" ); @@ -357,7 +473,8 @@ ivas_error ivas_dec( } ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi, - ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate ) ); + ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ) ); } ivas_sba_dirac_stereo_dec( st_ivas, output, output_frame, st_ivas->ivas_format == MC_FORMAT ); @@ -380,7 +497,9 @@ ivas_error ivas_dec( if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) { - ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame ); + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); + ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame, num_md_sub_frames ); } else if ( st_ivas->renderer_type != RENDERER_DISABLE ) { @@ -390,54 +509,361 @@ ivas_error ivas_dec( if ( st_ivas->ivas_format == MASA_FORMAT ) { +#ifdef CR_FIX_585_MASA_2TC_DTX_EXT + ivas_masa_prerender( st_ivas, output, output_frame, nchan_remapped ); +#else ivas_masa_prerender( st_ivas, output, output_frame ); +#endif } else if ( st_ivas->ivas_format == SBA_FORMAT && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) { -#ifdef FIX_564 /* loudness correction */ - ivas_dirac_dec_binaural_gain( output, nchan_remapped, output_frame ); -#else - float gain; + ivas_dirac_dec_binaural_sba_gain( output, nchan_remapped, output_frame ); + } + + /* Loudspeakers, Ambisonics or Binaural rendering */ + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + { + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, nchan_remapped +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); + } + else if ( st_ivas->ivas_format == MASA_FORMAT ) + { + if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC ) + { + if ( ( error = ivas_sba_linear_renderer( p_output, output_frame, nchan_remapped, + 0, + output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->renderer_type == RENDERER_DIRAC ) + { + ivas_dirac_dec( st_ivas, output, nchan_remapped +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); + } + } + else if ( !st_ivas->sba_dirac_stereo_flag && nchan_out != 1 ) + { + if ( ( error = ivas_sba_upmixer_renderer( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) /* Note: ivas_sba_linear_renderer() or ivas_dirac_dec() are called internally */ + { + return error; + } + } + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + int16_t nchan_ism, nchan_transport_ism; + int16_t dirac_bs_md_write_idx; - if ( nchan_remapped == 1 ) + st = st_ivas->hCPE[0]->hCoreCoder[0]; + set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); + + /* Set the number of objects for the parametric rendering */ + dirac_bs_md_write_idx = 0; + if ( st_ivas->hSpatParamRendCom != NULL ) + { + st_ivas->hSpatParamRendCom->numIsmDirections = 0; + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) + { + st_ivas->hSpatParamRendCom->numIsmDirections = st_ivas->nchan_ism; + } + + dirac_bs_md_write_idx = st_ivas->hSpatParamRendCom->dirac_bs_md_write_idx; /* Store the write-index for this frame */ + } + + /* MASA metadata decoding */ + if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Configuration of combined-format bit-budget distribution */ + ivas_set_surplus_brate_dec( st_ivas, &ism_total_brate ); + + st->bit_stream = &( st_ivas->bit_stream[( ism_total_brate / FRAMES_PER_SEC )] ); + + /* set ISM parameters and decode ISM metadata in OMASA format */ + if ( ( error = ivas_omasa_ism_metadata_dec( st_ivas, ism_total_brate, &nchan_ism, &nchan_transport_ism, dirac_bs_md_write_idx, &nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* decode ISM channels */ + for ( n = 0; n < nchan_transport_ism; n++ ) + { + if ( ( error = ivas_sce_dec( st_ivas, n, &output[st_ivas->nchan_transport + n], output_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) { - gain = 1.4454f; + return error; + } + } + + /* decode MASA channels */ + if ( ( error = ivas_cpe_dec( st_ivas, 0, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->hCPE[0]->nchan_out == 1 ) + { + mvr2r( output[0], output[1], output_frame ); /* Copy mono signal to stereo output channels */ + } + + /* HP filtering */ + for ( n = 0; n < getNumChanSynthesis( st_ivas ); n++ ) + { + hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); + } + + /* Rendering */ + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) + { + if ( ( error = ivas_omasa_dirac_td_binaural( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } } else { - gain = 1.3657f; + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); + } + } + else if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) + { + ivas_mono_downmix_render_passive( st_ivas, output, output_frame ); + } + else if ( st_ivas->renderer_type == RENDERER_DIRAC ) + { + ivas_omasa_dirac_rend( st_ivas, output, output_frame ); + } + + /* external output */ + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) + { + /* sanity check in case of bitrate switching */ + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" ); + } + + ivas_omasa_rearrange_channels( output, nchan_transport_ism, output_frame ); + } + } + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + int16_t nchan_ism, sba_ch_idx; + + set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); + nchan_ism = st_ivas->nchan_ism; + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + /* set ISM parameters and decode ISM metadata in OSBA format */ + if ( ( error = ivas_osba_ism_metadata_dec( st_ivas, ivas_total_brate, &nchan_ism, &nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + sba_ch_idx = st_ivas->nchan_ism; + } + else + { + nb_bits_metadata[1] += NO_BITS_MASA_ISM_NO_OBJ; + sba_ch_idx = 0; + } + + /* SBA metadata decoding */ + if ( ( error = ivas_spar_dec( st_ivas, nb_bits_metadata ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->nchan_transport == CPE_CHANNELS && st_ivas->nCPE >= 1 ) + { + st_ivas->hCPE[0]->element_brate = ivas_total_brate; + } + + /* core-decoding of transport channels */ + if ( st_ivas->nSCE == 1 ) + { + st = st_ivas->hSCE[0]->hCoreCoder[0]; + if ( ( error = ivas_sce_dec( st_ivas, 0, &output[0], output_frame, nb_bits_metadata[0] + nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->nCPE == 1 ) + { + st = st_ivas->hCPE[0]->hCoreCoder[0]; + if ( ( error = ivas_cpe_dec( st_ivas, 0, output, output_frame, nb_bits_metadata[0] + nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->nCPE > 1 ) + { + st = st_ivas->hCPE[0]->hCoreCoder[0]; + if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] + nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; } + } - for ( n = 0; n < nchan_remapped; n++ ) + if ( st_ivas->sba_dirac_stereo_flag ) + { + ivas_agc_dec_process( st_ivas->hSpar->hAgcDec, &output[sba_ch_idx], &output[sba_ch_idx], st_ivas->hSpar->hMdDec->spar_md_cfg.nchan_transport, output_frame ); + + if ( st_ivas->hSpar->hPCA != NULL ) { - v_multc( output[n], gain, output[n], output_frame ); + ivas_pca_dec( st_ivas->hSpar->hPCA, output_frame, st_ivas->hSpar->hMdDec->spar_md_cfg.nchan_transport, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->hDecoderConfig->last_ivas_total_brate, st_ivas->bfi, &output[sba_ch_idx] ); } + + ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi, + ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ) ); + + ivas_sba_dirac_stereo_dec( st_ivas, &output[sba_ch_idx], output_frame, 0 ); + } + + /* HP filtering */ + for ( n = 0; n < getNumChanSynthesis( st_ivas ); n++ ) + { + hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); + } + + nchan_remapped = ivas_sba_remapTCs( &output[sba_ch_idx], st_ivas, output_frame ); + +#ifdef DEBUG_OSBA + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + int16_t nchan = st_ivas->nchan_transport + st_ivas->nchan_ism; + for ( int16_t t = 0; t < output_frame; t++ ) + { + for ( int16_t c = 0; c < nchan; c++ ) + { + int16_t val = (int16_t) ( output[c][t] + 0.5f ); + dbgwrite( &val, sizeof( int16_t ), 1, 1, "./res/TC_dec_core_out.raw" ); + } + } + } #endif + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + { + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->last_active_ivas_total_brate ); + + ivas_sba_mix_matrix_determiner( st_ivas->hSpar, &output[sba_ch_idx], st_ivas->bfi, nchan_remapped, output_frame, num_md_sub_frames ); + } + else if ( st_ivas->renderer_type != RENDERER_DISABLE ) + { + ivas_spar_dec_agc_pca( st_ivas, &output[sba_ch_idx], output_frame ); + } + + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + { + /* loudness correction */ + ivas_dirac_dec_binaural_sba_gain( &output[sba_ch_idx], nchan_remapped, output_frame ); } /* Loudspeakers, Ambisonics or Binaural rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) { - ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, nchan_remapped ); + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, &output[sba_ch_idx], nchan_remapped +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); } - else if ( st_ivas->ivas_format == MASA_FORMAT ) + else if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) { - if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC ) + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - if ( ( error = ivas_sba_linear_renderer( p_output, output_frame, nchan_remapped, output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_osba_dirac_td_binaural( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) { return error; } } - else if ( st_ivas->renderer_type == RENDERER_DIRAC ) + else { - ivas_dirac_dec( st_ivas, output, nchan_remapped ); + ivas_sba_upmixer_renderer( st_ivas, &output[sba_ch_idx], output_frame ); } } - else if ( !st_ivas->sba_dirac_stereo_flag && nchan_out != 1 ) + else if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC && ( st_ivas->renderer_type == RENDERER_OSBA_STEREO || st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) ) + { + if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) + { + ivas_mono_downmix_render_passive( st_ivas, output, output_frame ); + } + else /* stereo output */ + { + /* shift SBA channels to avoid overwrite by ISM upmix in 1 object case */ + if ( nchan_ism == 1 ) + { + mvr2r( output[2], output[3], output_frame ); + mvr2r( output[1], output[2], output_frame ); + } + ivas_ism_render( st_ivas, p_output, output_frame ); + } + + for ( n = 0; n < nchan_out; n++ ) + { + v_add( output[n], output[n + max( nchan_out, nchan_ism )], output[n], output_frame ); + } + } + else if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS ) + { + if ( ( error = ivas_osba_render( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_EXTERNAL && !st_ivas->sba_dirac_stereo_flag && nchan_out != 1 ) { - ivas_sba_upmixer_renderer( st_ivas, output, output_frame ); /* Note: ivas_sba_linear_renderer() or ivas_dirac_dec() are called internally */ + if ( ( error = ivas_sba_upmixer_renderer( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) /*EXT output = individual objects + HOA3*/ + { + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + for ( n = 0; n < nchan_ism; n++ ) + { + delay_signal( output[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); + } + } + + if ( ( error = ivas_sba_upmixer_renderer( st_ivas, &output[sba_ch_idx], output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode == ISM_MODE_NONE ) + { + for ( n = st_ivas->hIntSetup.nchan_out_woLFE - 1; n >= 0; n-- ) + { + mvr2r( output[n], output[n + nchan_ism], output_frame ); + } + for ( n = 0; n < nchan_ism; n++ ) + { + set_zero( output[n], output_frame ); + } + } } } else if ( st_ivas->ivas_format == MC_FORMAT ) @@ -447,7 +873,7 @@ ivas_error ivas_dec( /* LFE channel decoder */ if ( st_ivas->mc_mode == MC_MODE_MCT ) { - ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); + ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output[LFE_CHANNEL] ); } if ( st_ivas->mc_mode == MC_MODE_MCT ) @@ -457,8 +883,6 @@ ivas_error ivas_dec( return error; } - mvr2r( output_lfe_ch, output[LFE_CHANNEL], output_frame ); - /* HP filtering */ for ( n = 0; n < st_ivas->nchan_transport; n++ ) { @@ -476,13 +900,38 @@ ivas_error ivas_dec( /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { - if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, - st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - return error; + if ( ( error = ivas_rend_crendProcessSplitBin( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, st_ivas->hDecoderConfig, + st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ) ) != IVAS_ERR_OK ) + { + return error; + } } + else + { +#endif + if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, + st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) - ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); + { + return error; + } + + ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif } else if ( st_ivas->renderer_type == RENDERER_MC ) { @@ -494,17 +943,31 @@ ivas_error ivas_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { - if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - return error; + if ( ( error = ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } } + else + { +#endif + if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } - ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); + ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif } } else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) { - ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); + ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output[LFE_CHANNEL] ); ivas_mc_paramupmix_dec_read_BS( st_ivas, st, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); @@ -513,16 +976,17 @@ ivas_error ivas_dec( return error; } - mvr2r( output_lfe_ch, output[LFE_CHANNEL], output_frame ); - ivas_mc_paramupmix_dec( st_ivas, output ); /* HP filtering */ - for ( n = 0; n < st_ivas->nchan_transport; n++ ) + if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) { - if ( n != LFE_CHANNEL ) + for ( n = 0; n < st_ivas->nchan_transport; n++ ) { - hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); + if ( n != LFE_CHANNEL ) + { + hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); + } } } @@ -532,15 +996,14 @@ ivas_error ivas_dec( } /* Rendering */ - if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { - if ( ( error = ivas_rend_crendProcess( st_ivas->hCrendWrapper, st_ivas->intern_config, st_ivas->hOutSetup.output_config, st_ivas->hDecoderConfig, - st_ivas->hCombinedOrientationData, &st_ivas->hIntSetup, st_ivas->hEFAPdata, p_output, output_Fs ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#endif { - return error; + ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); } - - ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); } else if ( st_ivas->renderer_type == RENDERER_MC ) { @@ -559,12 +1022,26 @@ ivas_error ivas_dec( } else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { - if ( ( ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - return error; + if ( ( error = ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } } + else + { +#endif + if ( ( error = ivas_td_binaural_renderer( st_ivas, p_output, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } - ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); + ivas_binaural_add_LFE( st_ivas, output_frame, p_output, p_output ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif } } else if ( st_ivas->mc_mode == MC_MODE_PARAMMC ) @@ -678,11 +1155,21 @@ ivas_error ivas_dec( /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) { - ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, st_ivas->nchan_transport ); + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); } else if ( st_ivas->renderer_type == RENDERER_DIRAC || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) /* rendering to CICPxx and Ambisonics */ { - ivas_dirac_dec( st_ivas, output, st_ivas->nchan_transport ); + ivas_dirac_dec( st_ivas, output, st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) { @@ -703,6 +1190,40 @@ ivas_error ivas_dec( } } +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && !defined( API_5MS ) + /*split rendering process calls*/ + if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + IVAS_DEC_SPLIT_REND_WRAPPER *hSplitBinRend; + int16_t max_band; + int16_t pcm_out; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + int16_t td_input; + + td_input = st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC; +#endif + hSplitBinRend = &st_ivas->hSplitBinRend; + max_band = (int16_t) ( ( BINAURAL_MAXBANDS * output_Fs ) / 48000 ); + pcm_out = ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + + if ( ( error = ivas_renderMultiBinToSplitBinaural( &hSplitBinRend->splitrend, st_ivas->hHeadTrackData->Quaternions, st_ivas->hRenderConfig->split_rend_config.splitRendBitRate, st_ivas->hRenderConfig->split_rend_config.codec, hSplitBinRend->hSplitRendBits, + hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural, hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural, + max_band, output, 1, +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + td_input, +#else + st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV, +#endif + pcm_out ) ) != IVAS_ERR_OK ) + { + return error; + } + + free( st_ivas->hSplitBinRend.hMultiBinCldfbData ); + st_ivas->hSplitBinRend.hMultiBinCldfbData = NULL; + } +#endif /*----------------------------------------------------------------* * Write IVAS output channels @@ -710,13 +1231,59 @@ ivas_error ivas_dec( * - float to integer conversion *----------------------------------------------------------------*/ - ivas_limiter_dec( st_ivas->hLimiter, p_output, nchan_out, output_frame, st_ivas->BER_detect ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + nchan_out_syn_output = BINAURAL_CHANNELS * st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses; + } + else + { + nchan_out_syn_output = nchan_out; + } -#ifdef DEBUGGING - st_ivas->noClipping += + if ( st_ivas->hDecoderConfig->Opt_Limiter ) #endif - ivas_syn_output( p_output, output_frame, nchan_out, data ); + { +#ifndef DISABLE_LIMITER + ivas_limiter_dec( st_ivas->hLimiter, p_output, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + nchan_out_syn_output, +#else + nchan_out, +#endif + output_frame, st_ivas->BER_detect ); +#endif + } +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + switch ( pcm_resolution ) + { + case PCM_INT16: +#endif +#ifdef DEBUGGING + st_ivas->noClipping += +#endif + ivas_syn_output( p_output, output_frame, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + nchan_out_syn_output, +#else + nchan_out, +#endif +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + (int16_t *) +#endif + data ); + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + break; + case PCM_FLOAT32: + ivas_syn_output_f( p_output, output_frame, nchan_out_syn_output, (float *) data ); + break; + default: + error = IVAS_ERR_UNKNOWN; + break; + } +#endif /*----------------------------------------------------------------* * Common updates *----------------------------------------------------------------*/ @@ -737,6 +1304,18 @@ ivas_error ivas_dec( st_ivas->ini_active_frame++; } + st_ivas->last_ivas_format = st_ivas->ivas_format; + + /* in case first frame(s) was/were lost, deallocate output buffers */ + if ( st_ivas->bfi && st_ivas->ini_frame == 0 ) + { + for ( n = 0; n < nchan_out; n++ ) + { + free( st_ivas->p_output_f[n] ); + st_ivas->p_output_f[n] = NULL; + } + } + #ifdef DEBUG_MODE_INFO dbgwrite( &st_ivas->bfi, sizeof( int16_t ), 1, output_frame, "res/bfi" ); dbgwrite( &st_ivas->BER_detect, sizeof( int16_t ), 1, output_frame, "res/BER_detect" ); diff --git a/lib_dec/ivas_dirac_dec.c b/lib_dec/ivas_dirac_dec.c index f3ea6912f32005efd1ec1d658363fc71a270bd22..853e51631c5ffaf05ce02a1d381e39ccb7fd64b3 100644 --- a/lib_dec/ivas_dirac_dec.c +++ b/lib_dec/ivas_dirac_dec.c @@ -51,206 +51,69 @@ * Local function prototypes *-----------------------------------------------------------------------*/ -static ivas_error ivas_dirac_alloc_mem( DIRAC_DEC_HANDLE hDirAC, const RENDERER_TYPE renderer_type, DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem, const int16_t hodirac_flag ); - -static void ivas_dirac_free_mem( DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem ); - -static void initDiffuseResponses( float *diffuse_response_function, const int16_t num_channels, AUDIO_CONFIG output_config, IVAS_OUTPUT_SETUP hOutSetup, const int16_t ambisonics_order, const IVAS_FORMAT ivas_format, int16_t *num_ele_spk_no_diffuse_rendering, AUDIO_CONFIG transport_config ); - -static void computeIntensityVector_dec( float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], const int16_t num_frequency_bands, float *intensity_real_x, float *intensity_real_y, float *intensity_real_z ); - -static void protoSignalComputation_shd( float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float *proto_direct_buffer_f, float *proto_diffuse_buffer_f, float *reference_power, const int16_t slot_index, const int16_t num_inputs, const int16_t num_outputs_diff, const int16_t num_freq_bands, float *p_Rmat ); - -static void protoSignalComputation1( float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float *proto_frame_f, float *proto_direct_buffer_f, float *reference_power, float *proto_power_smooth, const int16_t slot_index, const int16_t num_outputs_diff, const int16_t num_freq_bands ); - -static void protoSignalComputation2( float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float *proto_frame_f, float *proto_direct_buffer_f, float *reference_power, float *proto_power_smooth, const int16_t isloudspeaker, const int16_t slot_index, const int16_t num_freq_bands, MASA_STEREO_TYPE_DETECT *stereo_type_detect ); - -static void protoSignalComputation4( float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float *proto_frame_f, float *proto_direct_buffer_f, float *reference_power, float *proto_power_smooth, const int16_t slot_index, const int16_t num_outputs_diff, const int16_t num_freq_bands, const float *mtx_hoa_decoder, const int16_t nchan_transport, const int16_t *sba_map_tc_ind ); - -static void ivas_dirac_dec_compute_diffuse_proto( DIRAC_DEC_HANDLE hDirAC, const int16_t slot_idx ); - -static void computeDirectionAngles( float *intensity_real_x, float *intensity_real_y, float *intensity_real_z, const int16_t num_frequency_bands, int16_t *azimuth, int16_t *elevation ); - -static void ivas_masa_init_stereotype_detection( MASA_STEREO_TYPE_DETECT *stereo_type_detect ); - -static void ivas_masa_stereotype_detection( MASA_STEREO_TYPE_DETECT *stereo_type_detect ); - -static void ivas_lfe_synth_with_cldfb( MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth, float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float RealBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], float ImagBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], const int16_t slot_index, const int16_t subframe_index, const int16_t nchan_transport ); - -static void rotateAziEle_DirAC( int16_t *azi, int16_t *ele, const int16_t band1, const int16_t band2, const float *p_Rmat ); - - -/*------------------------------------------------------------------------- - * ivas_dirac_dec_open() - * - * Open decoder DirAC handle - *-------------------------------------------------------------------------*/ - -ivas_error ivas_dirac_dec_open( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +static ivas_error ivas_dirac_dec_config_internal( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const DIRAC_CONFIG_FLAG flag_config_inp /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ ) { + DIRAC_DEC_HANDLE hDirAC; ivas_error error; + DIRAC_CONFIG_FLAG flag_config; + flag_config = ( flag_config_inp == DIRAC_RECONFIGURE_MODE ) ? DIRAC_RECONFIGURE : flag_config_inp; error = IVAS_ERR_OK; - if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) - { - return error; - } - - return error; -} - - -/*------------------------------------------------------------------------- - * ivas_dirac_allocate_parameters() - * - * Allocate and initialize DirAC parameters - *-------------------------------------------------------------------------*/ - -ivas_error ivas_dirac_allocate_parameters( - DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ - const int16_t params_flag /* i : set of parameters flag */ -) -{ - int16_t i; + hDirAC = NULL; - if ( params_flag == 1 ) + if ( flag_config == DIRAC_RECONFIGURE ) { - if ( ( hDirAC->azimuth = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - - if ( ( hDirAC->elevation = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - - if ( ( hDirAC->diffuseness_vector = (float **) malloc( hDirAC->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - - if ( ( hDirAC->energy_ratio1 = (float **) malloc( hDirAC->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - - if ( ( hDirAC->spreadCoherence = (float **) malloc( hDirAC->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - - if ( ( hDirAC->surroundingCoherence = (float **) malloc( hDirAC->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( ( hDirAC->azimuth[i] = (int16_t *) malloc( hDirAC->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_s( hDirAC->azimuth[i], 0, hDirAC->num_freq_bands ); - - if ( ( hDirAC->elevation[i] = (int16_t *) malloc( hDirAC->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_s( hDirAC->elevation[i], 0, hDirAC->num_freq_bands ); - - if ( ( hDirAC->diffuseness_vector[i] = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_f( hDirAC->diffuseness_vector[i], 1.0f, hDirAC->num_freq_bands ); - - if ( ( hDirAC->energy_ratio1[i] = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_f( hDirAC->energy_ratio1[i], 0.0f, hDirAC->num_freq_bands ); - - if ( ( hDirAC->spreadCoherence[i] = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_f( hDirAC->spreadCoherence[i], 0.0f, hDirAC->num_freq_bands ); - - if ( ( hDirAC->surroundingCoherence[i] = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_f( hDirAC->surroundingCoherence[i], 0.0f, hDirAC->num_freq_bands ); - } + hDirAC = st_ivas->hDirAC; } - else if ( params_flag == 2 ) + else if ( flag_config == DIRAC_OPEN ) { - if ( ( hDirAC->azimuth2 = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } + /*-----------------------------------------------------------------* + * prepare library opening + *-----------------------------------------------------------------*/ - if ( ( hDirAC->elevation2 = (int16_t **) malloc( hDirAC->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) + if ( ( hDirAC = (DIRAC_DEC_HANDLE) malloc( sizeof( DIRAC_DEC_DATA ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } - if ( ( hDirAC->energy_ratio2 = (float **) malloc( hDirAC->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + if ( ( hDirAC->hConfig = (DIRAC_CONFIG_DATA_HANDLE) malloc( sizeof( DIRAC_CONFIG_DATA ) ) ) == NULL ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC Config\n" ) ); } - if ( ( hDirAC->spreadCoherence2 = (float **) malloc( hDirAC->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } + hDirAC->hParamIsm = NULL; + hDirAC->hParamIsmRendering = NULL; + st_ivas->hDirAC = hDirAC; + } - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( ( hDirAC->azimuth2[i] = (int16_t *) malloc( hDirAC->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_s( hDirAC->azimuth2[i], 0, hDirAC->num_freq_bands ); - if ( ( hDirAC->elevation2[i] = (int16_t *) malloc( hDirAC->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_s( hDirAC->elevation2[i], 0, hDirAC->num_freq_bands ); + /*-----------------------------------------------------------------* + * DirAC main configuration + *-----------------------------------------------------------------*/ - if ( ( hDirAC->energy_ratio2[i] = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_f( hDirAC->energy_ratio2[i], 0.0f, hDirAC->num_freq_bands ); + if ( ( error = ivas_dirac_config( (void *) st_ivas, DEC ) ) != IVAS_ERR_OK ) + { + return error; + } - if ( ( hDirAC->spreadCoherence2[i] = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); - } - set_f( hDirAC->spreadCoherence2[i], 0.0f, hDirAC->num_freq_bands ); - } + if ( flag_config == DIRAC_OPEN ) + { + hDirAC->spar_to_dirac_write_idx = ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) ? DELAY_DIRAC_PARAM_DEC_SFR : 0; + hDirAC->dithering_seed = DIRAC_DITH_SEED; + st_ivas->hDirAC = hDirAC; } - return IVAS_ERR_OK; + return error; } - -/*------------------------------------------------------------------------- - * ivas_dirac_dec_config() - * - * Open or reconfigure decoder DirAC/MASA handle - *-------------------------------------------------------------------------*/ - -ivas_error ivas_dirac_dec_config( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - const DIRAC_CONFIG_FLAG flag_config_inp /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ -) +static ivas_error ivas_dirac_rend_config( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const DIRAC_CONFIG_FLAG flag_config_inp, /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ + const int16_t dec_param_estim_old ) { DIRAC_DEC_HANDLE hDirAC; int16_t nchan_out_woLFE; @@ -262,27 +125,30 @@ ivas_error ivas_dirac_dec_config( float *proto_frame_f_old; int16_t proto_signal_decorr_on_old; uint16_t i, j, k; - int16_t dec_param_estim_old; float ls_azimuth[MAX_OUTPUT_CHANNELS]; float ls_elevation[MAX_OUTPUT_CHANNELS]; int32_t output_Fs, ivas_total_brate; ivas_error error; int16_t nchan_transport_orig; int16_t hodirac_flag; - int16_t map_idx; DIRAC_CONFIG_FLAG flag_config; + DIRAC_REND_HANDLE hDirACRend; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; flag_config = ( flag_config_inp == DIRAC_RECONFIGURE_MODE ) ? DIRAC_RECONFIGURE : flag_config_inp; error = IVAS_ERR_OK; - hDirAC = NULL; + hDirACRend = NULL; output_Fs = st_ivas->hDecoderConfig->output_Fs; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; hodirac_flag = ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ); + hDirAC = st_ivas->hDirAC; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + if ( flag_config == DIRAC_RECONFIGURE ) { - hDirAC = st_ivas->hDirAC; + hDirACRend = st_ivas->hDirACRend; } else if ( flag_config == DIRAC_OPEN ) { @@ -290,29 +156,21 @@ ivas_error ivas_dirac_dec_config( * prepare library opening *-----------------------------------------------------------------*/ - if ( ( hDirAC = (DIRAC_DEC_HANDLE) malloc( sizeof( DIRAC_DEC_DATA ) ) ) == NULL ) + if ( ( hDirACRend = (DIRAC_REND_HANDLE) malloc( sizeof( DIRAC_REND_DATA ) ) ) == NULL ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC renderer\n" ) ); } - if ( ( hDirAC->hConfig = (DIRAC_CONFIG_DATA_HANDLE) malloc( sizeof( DIRAC_CONFIG_DATA ) ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC Config\n" ) ); - } nchan_transport_old = 0; - hDirAC->hParamIsm = NULL; - hDirAC->hParamIsmRendering = NULL; - st_ivas->hDirAC = hDirAC; } - dec_param_estim_old = ( flag_config == DIRAC_RECONFIGURE ) ? hDirAC->hConfig->dec_param_estim : FALSE; nchan_transport_old = 0; num_outputs_dir_old = 0; num_outputs_diff_old = 0; num_protos_diff_old = 0; nchan_transport_orig = st_ivas->nchan_transport; - if ( st_ivas->ivas_format == SBA_FORMAT && !( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { st_ivas->nchan_transport = ivas_sba_get_nchan_metadata( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); } @@ -322,65 +180,46 @@ ivas_error ivas_dirac_dec_config( { nchan_transport = 1; } - - if ( flag_config == DIRAC_RECONFIGURE && st_ivas->ivas_format == SBA_FORMAT ) + if ( flag_config == DIRAC_RECONFIGURE && ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) ) { int16_t tmp1, tmp2, tmp3; ivas_sba_config( ivas_total_brate, st_ivas->sba_analysis_order, -1, &nchan_transport_old, st_ivas->sba_planar, &tmp1, &tmp2, &tmp3 ); } - /*-----------------------------------------------------------------* - * DirAC main configuration - *-----------------------------------------------------------------*/ - - if ( ( error = ivas_dirac_config( (void *) st_ivas, DEC ) ) != IVAS_ERR_OK ) - { - return error; - } - /*-----------------------------------------------------------------* * output setup: for parametric binaural renderer, use output setup, otherwise internal setup *-----------------------------------------------------------------*/ - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - hDirAC->hOutSetup = st_ivas->hOutSetup; - - hDirAC->hConfig->dec_param_estim = FALSE; - } - else - { - hDirAC->hOutSetup = st_ivas->hIntSetup; - } - nchan_out_woLFE = hDirAC->hOutSetup.nchan_out_woLFE; + hDirACRend->hOutSetup = st_ivas->hIntSetup; + nchan_out_woLFE = hDirACRend->hOutSetup.nchan_out_woLFE; - if ( hDirAC->hOutSetup.ls_azimuth != NULL && hDirAC->hOutSetup.ls_elevation != NULL ) + if ( hDirACRend->hOutSetup.ls_azimuth != NULL && hDirACRend->hOutSetup.ls_elevation != NULL ) { - mvr2r( hDirAC->hOutSetup.ls_azimuth, ls_azimuth, nchan_out_woLFE ); - mvr2r( hDirAC->hOutSetup.ls_elevation, ls_elevation, nchan_out_woLFE ); + mvr2r( hDirACRend->hOutSetup.ls_azimuth, ls_azimuth, nchan_out_woLFE ); + mvr2r( hDirACRend->hOutSetup.ls_elevation, ls_elevation, nchan_out_woLFE ); } - if ( hDirAC->hOutSetup.ambisonics_order == -1 ) + if ( hDirACRend->hOutSetup.ambisonics_order == -1 ) { - hDirAC->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; /* Order 3 is used by default in DirAC for SHD processing */ - if ( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_MONO || hDirAC->hOutSetup.output_config == AUDIO_CONFIG_STEREO ) + hDirACRend->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; /* Order 3 is used by default in DirAC for SHD processing */ + if ( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_MONO || hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_STEREO ) { - hDirAC->hOutSetup.ambisonics_order = SBA_FOA_ORDER; + hDirACRend->hOutSetup.ambisonics_order = SBA_FOA_ORDER; } } - else if ( hDirAC->hOutSetup.ambisonics_order >= SBA_FOA_ORDER ) + else if ( hDirACRend->hOutSetup.ambisonics_order >= SBA_FOA_ORDER ) { mvr2r( ls_azimuth_4d4, ls_azimuth, DIRAC_HOA_RENDERING_NUM_VIRT_DECORR_LS ); mvr2r( ls_elevation_4d4, ls_elevation, DIRAC_HOA_RENDERING_NUM_VIRT_DECORR_LS ); } - if ( hDirAC->hOutSetup.separateChannelEnabled && ( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_5_1 || hDirAC->hOutSetup.output_config == AUDIO_CONFIG_7_1 || hDirAC->hOutSetup.output_config == AUDIO_CONFIG_5_1_2 || hDirAC->hOutSetup.output_config == AUDIO_CONFIG_5_1_4 || hDirAC->hOutSetup.output_config == AUDIO_CONFIG_7_1_4 || ( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM && st_ivas->hLsSetupCustom->separate_ch_found ) ) ) + if ( hDirACRend->hOutSetup.separateChannelEnabled && ( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_5_1 || hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_7_1 || hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_5_1_2 || hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_5_1_4 || hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_7_1_4 || ( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM && st_ivas->hLsSetupCustom->separate_ch_found ) ) ) { /* Remove the channel of the separated signal from the output setup of the spatial synthesis */ - hDirAC->hOutSetup.nchan_out_woLFE--; - nchan_out_woLFE = hDirAC->hOutSetup.nchan_out_woLFE; - mvr2r( &ls_azimuth[hDirAC->hOutSetup.separateChannelIndex + 1], &ls_azimuth[hDirAC->hOutSetup.separateChannelIndex], nchan_out_woLFE - hDirAC->hOutSetup.separateChannelIndex ); - mvr2r( &ls_elevation[hDirAC->hOutSetup.separateChannelIndex + 1], &ls_elevation[hDirAC->hOutSetup.separateChannelIndex], nchan_out_woLFE - hDirAC->hOutSetup.separateChannelIndex ); + hDirACRend->hOutSetup.nchan_out_woLFE--; + nchan_out_woLFE = hDirACRend->hOutSetup.nchan_out_woLFE; + mvr2r( &ls_azimuth[hDirACRend->hOutSetup.separateChannelIndex + 1], &ls_azimuth[hDirACRend->hOutSetup.separateChannelIndex], nchan_out_woLFE - hDirACRend->hOutSetup.separateChannelIndex ); + mvr2r( &ls_elevation[hDirACRend->hOutSetup.separateChannelIndex + 1], &ls_elevation[hDirACRend->hOutSetup.separateChannelIndex], nchan_out_woLFE - hDirACRend->hOutSetup.separateChannelIndex ); } /*-----------------------------------------------------------------* @@ -389,102 +228,66 @@ ivas_error ivas_dirac_dec_config( st_ivas->nchan_transport = nchan_transport_orig; - if ( flag_config == DIRAC_OPEN ) - { - hDirAC->slot_size = (int16_t) ( ( output_Fs / FRAMES_PER_SEC ) / CLDFB_NO_COL_MAX ); - set_s( hDirAC->subframe_nbslots, 0, MAX_JBM_SUBFRAMES_5MS ); - set_s( hDirAC->subframe_nbslots, JBM_CLDFB_SLOTS_IN_SUBFRAME, DEFAULT_JBM_SUBFRAMES_5MS ); - hDirAC->nb_subframes = DEFAULT_JBM_SUBFRAMES_5MS; - hDirAC->subframes_rendered = 0; - hDirAC->slots_rendered = 0; - hDirAC->num_slots = DEFAULT_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME; - } - - if ( st_ivas->ivas_format == SBA_FORMAT && flag_config == DIRAC_RECONFIGURE && ( ( ivas_total_brate > IVAS_256k && st_ivas->hDecoderConfig->last_ivas_total_brate <= IVAS_256k ) || ( ivas_total_brate <= IVAS_256k && st_ivas->hDecoderConfig->last_ivas_total_brate > IVAS_256k ) ) ) - { - if ( st_ivas->hDecoderConfig->ivas_total_brate > IVAS_256k && hDirAC->azimuth2 == NULL ) - { - if ( ( error = ivas_dirac_allocate_parameters( hDirAC, 2 ) ) != IVAS_ERR_OK ) - { - return error; - } - } - else if ( st_ivas->hDecoderConfig->ivas_total_brate <= IVAS_256k && hDirAC->azimuth2 != NULL ) - { - ivas_dirac_deallocate_parameters( hDirAC, 2 ); - } - } - - /* band config needed only for SPAR with FOA output */ - if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_FOA && st_ivas->ivas_format == SBA_FORMAT && !hodirac_flag ) - { - return IVAS_ERR_OK; - } - - if ( nchan_transport_orig > 2 && hDirAC->hOutSetup.is_loudspeaker_setup && st_ivas->renderer_type == RENDERER_DIRAC && !hodirac_flag ) - { - hDirAC->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; - hDirAC->panningConf = DIRAC_PANNING_VBAP; - } - else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + if ( nchan_transport_orig > 2 && hDirACRend->hOutSetup.is_loudspeaker_setup && st_ivas->renderer_type == RENDERER_DIRAC && !hodirac_flag ) { - hDirAC->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; - hDirAC->panningConf = DIRAC_PANNING_VBAP; + hDirACRend->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; + hDirACRend->panningConf = DIRAC_PANNING_VBAP; } - else if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->mc_mode == MC_MODE_MCMASA ) && hDirAC->hOutSetup.output_config == AUDIO_CONFIG_MONO ) + else if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->mc_mode == MC_MODE_MCMASA ) && hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_MONO ) { - hDirAC->synthesisConf = DIRAC_SYNTHESIS_MONO; - hDirAC->panningConf = DIRAC_PANNING_HOA3; + hDirACRend->synthesisConf = DIRAC_SYNTHESIS_MONO; + hDirACRend->panningConf = DIRAC_PANNING_HOA3; nchan_out_woLFE = 1; } - else if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->mc_mode == MC_MODE_MCMASA ) && hDirAC->hOutSetup.is_loudspeaker_setup ) + else if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT || st_ivas->mc_mode == MC_MODE_MCMASA ) && hDirACRend->hOutSetup.is_loudspeaker_setup ) { - hDirAC->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; - hDirAC->panningConf = DIRAC_PANNING_VBAP; + hDirACRend->synthesisConf = DIRAC_SYNTHESIS_PSD_LS; + hDirACRend->panningConf = DIRAC_PANNING_VBAP; } - else if ( st_ivas->ivas_format == MASA_FORMAT && !hDirAC->hOutSetup.is_loudspeaker_setup && st_ivas->nchan_transport > 1 ) + else if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) && !hDirACRend->hOutSetup.is_loudspeaker_setup && st_ivas->nchan_transport > 1 ) { - hDirAC->synthesisConf = DIRAC_SYNTHESIS_PSD_SHD; - hDirAC->panningConf = DIRAC_PANNING_HOA3; + hDirACRend->synthesisConf = DIRAC_SYNTHESIS_PSD_SHD; + hDirACRend->panningConf = DIRAC_PANNING_HOA3; } else { - hDirAC->synthesisConf = DIRAC_SYNTHESIS_GAIN_SHD; - hDirAC->panningConf = DIRAC_PANNING_HOA3; + hDirACRend->synthesisConf = DIRAC_SYNTHESIS_GAIN_SHD; + hDirACRend->panningConf = DIRAC_PANNING_HOA3; } if ( flag_config == DIRAC_OPEN ) { - hDirAC->num_freq_bands = (int16_t) ( output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ); - if ( ( hDirAC->frequency_axis = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) + if ( ( hDirACRend->frequency_axis = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } - set_f( hDirAC->frequency_axis, 0.0f, hDirAC->num_freq_bands ); + set_f( hDirACRend->frequency_axis, 0.0f, hSpatParamRendCom->num_freq_bands ); - ivas_dirac_dec_get_frequency_axis( hDirAC->frequency_axis, output_Fs, hDirAC->num_freq_bands ); + ivas_dirac_dec_get_frequency_axis( hDirACRend->frequency_axis, output_Fs, hSpatParamRendCom->num_freq_bands ); } - if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->mc_mode == MC_MODE_MCMASA ) && hDirAC->panningConf == DIRAC_PANNING_HOA3 && nchan_transport == 2 ) + if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->mc_mode == MC_MODE_MCMASA ) && hDirACRend->panningConf == DIRAC_PANNING_HOA3 && nchan_transport == 2 ) { - if ( ( flag_config == DIRAC_RECONFIGURE && hDirAC->masa_stereo_type_detect == NULL ) || flag_config == DIRAC_OPEN ) + if ( ( flag_config == DIRAC_RECONFIGURE && hDirACRend->masa_stereo_type_detect == NULL ) || flag_config == DIRAC_OPEN ) { - if ( ( hDirAC->masa_stereo_type_detect = (MASA_STEREO_TYPE_DETECT *) malloc( sizeof( MASA_STEREO_TYPE_DETECT ) ) ) == NULL ) + if ( ( hDirACRend->masa_stereo_type_detect = (MASA_STEREO_TYPE_DETECT *) malloc( sizeof( MASA_STEREO_TYPE_DETECT ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - ivas_masa_init_stereotype_detection( hDirAC->masa_stereo_type_detect ); + ivas_masa_init_stereotype_detection( hDirACRend->masa_stereo_type_detect ); } else { - if ( flag_config == DIRAC_RECONFIGURE && hDirAC->masa_stereo_type_detect != NULL ) + if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->masa_stereo_type_detect != NULL ) { - free( hDirAC->masa_stereo_type_detect ); + free( hDirACRend->masa_stereo_type_detect ); } - hDirAC->masa_stereo_type_detect = NULL; + hDirACRend->masa_stereo_type_detect = NULL; } + hSpatParamRendCom->numIsmDirections = 0; /* By default, no ism directions, set correct number runtime when needed */ + /*-----------------------------------------------------------------* * (re)configure sub-modules *-----------------------------------------------------------------*/ @@ -492,45 +295,39 @@ ivas_error ivas_dirac_dec_config( /* prototype signal computation */ if ( flag_config == DIRAC_RECONFIGURE ) { - num_outputs_dir_old = hDirAC->num_outputs_dir; - num_outputs_diff_old = hDirAC->num_outputs_diff; - num_protos_diff_old = hDirAC->num_protos_diff; + num_outputs_dir_old = hDirACRend->num_outputs_dir; + num_outputs_diff_old = hDirACRend->num_outputs_diff; + num_protos_diff_old = hDirACRend->num_protos_diff; } /* allocate output setup related arrays */ - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - /* Two channels in parametric binaural rendering */ - hDirAC->num_outputs_diff = 2; - hDirAC->num_outputs_dir = 2; - } - else if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) { /* Directional and diffuses components in output LS format */ - hDirAC->num_outputs_diff = nchan_out_woLFE; - hDirAC->num_outputs_dir = nchan_out_woLFE; + hDirACRend->num_outputs_diff = nchan_out_woLFE; + hDirACRend->num_outputs_dir = nchan_out_woLFE; } - else if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + else if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { /* Directional and diffuses components in SHD */ /* Diffuseness components up to 1st order */ - hDirAC->num_outputs_diff = ( min( hDirAC->hOutSetup.ambisonics_order, 1 ) + 1 ) * ( min( hDirAC->hOutSetup.ambisonics_order, 1 ) + 1 ); - if ( ( st_ivas->ivas_format == SBA_FORMAT ) && ( ivas_total_brate >= IVAS_96k ) && ( hDirAC->hOutSetup.ambisonics_order > 1 ) && ( nchan_transport < 4 ) ) + hDirACRend->num_outputs_diff = ( min( hDirACRend->hOutSetup.ambisonics_order, 1 ) + 1 ) * ( min( hDirACRend->hOutSetup.ambisonics_order, 1 ) + 1 ); + if ( ( st_ivas->ivas_format == SBA_FORMAT ) && ( ivas_total_brate >= IVAS_96k ) && ( hDirACRend->hOutSetup.ambisonics_order > 1 ) && ( nchan_transport < 4 ) ) { - hDirAC->num_outputs_diff += 2; /* Add 2nd-order planar components for HRs */ + hDirACRend->num_outputs_diff += 2; /* Add 2nd-order planar components for HRs */ } - hDirAC->num_outputs_dir = ivas_sba_get_nchan( hDirAC->hOutSetup.ambisonics_order, 0 ); + hDirACRend->num_outputs_dir = ivas_sba_get_nchan( hDirACRend->hOutSetup.ambisonics_order, 0 ); } - else if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) + else if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) { - hDirAC->num_outputs_diff = DIRAC_HOA_RENDERING_NUM_VIRT_DECORR_LS; - hDirAC->num_outputs_dir = nchan_out_woLFE; + hDirACRend->num_outputs_diff = DIRAC_HOA_RENDERING_NUM_VIRT_DECORR_LS; + hDirACRend->num_outputs_dir = nchan_out_woLFE; } - else if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + else if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { - hDirAC->num_outputs_diff = 1; /* There is one output channel in mono */ - hDirAC->num_outputs_dir = 2; /* Two channels are pre-rendered for stereo type detection */ + hDirACRend->num_outputs_diff = 1; /* There is one output channel in mono */ + hDirACRend->num_outputs_dir = 2; /* Two channels are pre-rendered for stereo type detection */ } else { @@ -539,154 +336,132 @@ ivas_error ivas_dirac_dec_config( if ( flag_config == DIRAC_OPEN ) { - num_outputs_dir_old = hDirAC->num_outputs_dir; - if ( ( hDirAC->proto_index_dir = (int16_t *) malloc( sizeof( int16_t ) * hDirAC->num_outputs_dir ) ) == NULL ) + num_outputs_dir_old = hDirACRend->num_outputs_dir; + if ( ( hDirACRend->proto_index_dir = (int16_t *) malloc( sizeof( int16_t ) * hDirACRend->num_outputs_dir ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } - num_outputs_diff_old = hDirAC->num_outputs_diff; - if ( ( hDirAC->proto_index_diff = (int16_t *) malloc( sizeof( int16_t ) * hDirAC->num_outputs_diff ) ) == NULL ) + num_outputs_diff_old = hDirACRend->num_outputs_diff; + if ( ( hDirACRend->proto_index_diff = (int16_t *) malloc( sizeof( int16_t ) * hDirACRend->num_outputs_diff ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - if ( hDirAC->num_outputs_dir != num_outputs_dir_old && flag_config == DIRAC_RECONFIGURE ) + if ( hDirACRend->num_outputs_dir != num_outputs_dir_old && flag_config == DIRAC_RECONFIGURE ) { - free( hDirAC->proto_index_dir ); - if ( ( hDirAC->proto_index_dir = (int16_t *) malloc( sizeof( int16_t ) * hDirAC->num_outputs_dir ) ) == NULL ) + free( hDirACRend->proto_index_dir ); + if ( ( hDirACRend->proto_index_dir = (int16_t *) malloc( sizeof( int16_t ) * hDirACRend->num_outputs_dir ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - set_s( hDirAC->proto_index_dir, 0, hDirAC->num_outputs_dir ); + set_s( hDirACRend->proto_index_dir, 0, hDirACRend->num_outputs_dir ); - if ( hDirAC->num_outputs_diff != num_outputs_diff_old && flag_config == DIRAC_RECONFIGURE ) + if ( hDirACRend->num_outputs_diff != num_outputs_diff_old && flag_config == DIRAC_RECONFIGURE ) { - free( hDirAC->proto_index_diff ); - if ( ( hDirAC->proto_index_diff = (int16_t *) malloc( sizeof( int16_t ) * hDirAC->num_outputs_diff ) ) == NULL ) + free( hDirACRend->proto_index_diff ); + if ( ( hDirACRend->proto_index_diff = (int16_t *) malloc( sizeof( int16_t ) * hDirACRend->num_outputs_diff ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - set_s( hDirAC->proto_index_diff, 0, hDirAC->num_outputs_diff ); + set_s( hDirACRend->proto_index_diff, 0, hDirACRend->num_outputs_diff ); - hDirAC->sba_map_tc = sba_map_tc; - if ( st_ivas->ivas_format == SBA_FORMAT ) + hDirACRend->sba_map_tc = sba_map_tc; + + if ( ( st_ivas->ivas_format == SBA_FORMAT ) || ( st_ivas->ivas_format == SBA_ISM_FORMAT ) ) { if ( st_ivas->sba_order > SBA_FOA_ORDER && ivas_total_brate >= IVAS_512k ) { - hDirAC->sba_map_tc = sba_map_tc_512; + hDirACRend->sba_map_tc = sba_map_tc_512; } } if ( nchan_transport == 1 ) { - hDirAC->num_protos_ambi = 1; - hDirAC->num_protos_dir = 1; - hDirAC->num_protos_diff = 1; - - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - hDirAC->num_protos_dir = 2; - hDirAC->num_protos_diff = 2; - hDirAC->proto_index_dir[0] = 0; - hDirAC->proto_index_dir[1] = 1; - hDirAC->proto_index_diff[0] = 0; - hDirAC->proto_index_diff[1] = 1; - } + hDirACRend->num_protos_ambi = 1; + hDirACRend->num_protos_dir = 1; + hDirACRend->num_protos_diff = 1; } else if ( nchan_transport == 2 ) { - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - hDirAC->num_protos_ambi = 2; - hDirAC->num_protos_diff = 1; - hDirAC->num_protos_dir = 2; - hDirAC->proto_index_dir[1] = 1; + hDirACRend->num_protos_ambi = 2; + hDirACRend->num_protos_diff = 1; + hDirACRend->num_protos_dir = 2; + hDirACRend->proto_index_dir[1] = 1; } - else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - hDirAC->num_protos_dir = 2; - hDirAC->num_protos_diff = 2; - hDirAC->proto_index_dir[0] = 0; - hDirAC->proto_index_dir[1] = 1; - hDirAC->proto_index_diff[0] = 0; - hDirAC->proto_index_diff[1] = 1; - } - else if ( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_MONO ) + else if ( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_MONO ) { /* Following the foa rendering for code compatibility */ - hDirAC->num_protos_ambi = 2; - hDirAC->num_protos_dir = 2; - hDirAC->num_protos_diff = 3; - hDirAC->proto_index_dir[0] = 0; - hDirAC->proto_index_diff[0] = 0; + hDirACRend->num_protos_ambi = 2; + hDirACRend->num_protos_dir = 2; + hDirACRend->num_protos_diff = 3; + hDirACRend->proto_index_dir[0] = 0; + hDirACRend->proto_index_diff[0] = 0; } else { - hDirAC->num_protos_ambi = 2; - hDirAC->num_protos_diff = 3; + hDirACRend->num_protos_ambi = 2; + hDirACRend->num_protos_diff = 3; - for ( k = 0; k < hDirAC->num_outputs_diff; k++ ) + for ( k = 0; k < hDirACRend->num_outputs_diff; k++ ) { if ( ls_azimuth[k] > 0.0f ) { - hDirAC->proto_index_diff[k] = 1; + hDirACRend->proto_index_diff[k] = 1; } else if ( ls_azimuth[k] < 0.0f ) { - hDirAC->proto_index_diff[k] = 2; + hDirACRend->proto_index_diff[k] = 2; } else { - hDirAC->proto_index_diff[k] = 0; + hDirACRend->proto_index_diff[k] = 0; } } - if ( hDirAC->hOutSetup.is_loudspeaker_setup ) + if ( hDirACRend->hOutSetup.is_loudspeaker_setup ) { - hDirAC->num_protos_dir = 3; - mvs2s( hDirAC->proto_index_diff, hDirAC->proto_index_dir, nchan_out_woLFE ); + hDirACRend->num_protos_dir = 3; + mvs2s( hDirACRend->proto_index_diff, hDirACRend->proto_index_dir, nchan_out_woLFE ); } else { - hDirAC->num_protos_dir = 2; - hDirAC->proto_index_dir[1] = 1; + hDirACRend->num_protos_dir = 2; + hDirACRend->proto_index_dir[1] = 1; } } } else /* nchan_transport > 2 */ { - hDirAC->num_protos_ambi = 4; - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) + hDirACRend->num_protos_ambi = 4; + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) { - hDirAC->num_protos_diff = hDirAC->num_outputs_diff; - for ( k = 0; k < hDirAC->num_outputs_diff; k++ ) + hDirACRend->num_protos_diff = hDirACRend->num_outputs_diff; + for ( k = 0; k < hDirACRend->num_outputs_diff; k++ ) { - hDirAC->proto_index_diff[k] = k; + hDirACRend->proto_index_diff[k] = k; } - hDirAC->num_protos_dir = hDirAC->num_outputs_dir; - for ( k = 0; k < hDirAC->num_outputs_dir; k++ ) + hDirACRend->num_protos_dir = hDirACRend->num_outputs_dir; + for ( k = 0; k < hDirACRend->num_outputs_dir; k++ ) { - hDirAC->proto_index_dir[k] = k; + hDirACRend->proto_index_dir[k] = k; } } else { - hDirAC->num_protos_diff = 1; - hDirAC->num_protos_dir = nchan_transport; - if ( ( st_ivas->sba_planar ) && ( !( st_ivas->ivas_format == SBA_FORMAT ) ) ) - { - hDirAC->num_protos_dir++; - } + hDirACRend->num_protos_diff = 1; + hDirACRend->num_protos_dir = nchan_transport; - for ( k = 0; k < min( hDirAC->num_outputs_dir, hDirAC->num_protos_dir ); k++ ) + for ( k = 0; k < min( hDirACRend->num_outputs_dir, hDirACRend->num_protos_dir ); k++ ) { - if ( hDirAC->sba_map_tc[k] < hDirAC->num_outputs_dir ) + if ( hDirACRend->sba_map_tc[k] < hDirACRend->num_outputs_dir ) { - hDirAC->proto_index_dir[hDirAC->sba_map_tc[k]] = k; + hDirACRend->proto_index_dir[hDirACRend->sba_map_tc[k]] = k; } } } @@ -695,61 +470,61 @@ ivas_error ivas_dirac_dec_config( /* direct/diffuse responses */ if ( flag_config == DIRAC_OPEN ) { - if ( ( hDirAC->diffuse_response_function = (float *) malloc( sizeof( float ) * hDirAC->num_outputs_dir ) ) == NULL ) + if ( ( hDirACRend->diffuse_response_function = (float *) malloc( sizeof( float ) * hDirACRend->num_outputs_dir ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } /* reallocate static memory */ - else if ( flag_config == DIRAC_RECONFIGURE && hDirAC->num_outputs_dir != num_outputs_dir_old ) + else if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->num_outputs_dir != num_outputs_dir_old ) { - free( hDirAC->diffuse_response_function ); - hDirAC->diffuse_response_function = NULL; - if ( ( hDirAC->diffuse_response_function = (float *) malloc( sizeof( float ) * hDirAC->num_outputs_dir ) ) == NULL ) + free( hDirACRend->diffuse_response_function ); + hDirACRend->diffuse_response_function = NULL; + if ( ( hDirACRend->diffuse_response_function = (float *) malloc( sizeof( float ) * hDirACRend->num_outputs_dir ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - if ( ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) || ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) || ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) ) + if ( ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) || ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) || ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) ) { - initDiffuseResponses( hDirAC->diffuse_response_function, nchan_out_woLFE, hDirAC->hOutSetup.output_config, - hDirAC->hOutSetup, hDirAC->hOutSetup.ambisonics_order, st_ivas->ivas_format, &hDirAC->num_ele_spk_no_diffuse_rendering, st_ivas->transport_config ); + initDiffuseResponses( hDirACRend->diffuse_response_function, nchan_out_woLFE, hDirACRend->hOutSetup.output_config, + hDirACRend->hOutSetup, hDirACRend->hOutSetup.ambisonics_order, st_ivas->ivas_format, &hDirACRend->num_ele_spk_no_diffuse_rendering, st_ivas->transport_config ); } else { - initDiffuseResponses( hDirAC->diffuse_response_function, hDirAC->num_outputs_dir, AUDIO_CONFIG_FOA, - hDirAC->hOutSetup, hDirAC->hOutSetup.ambisonics_order, st_ivas->ivas_format, &hDirAC->num_ele_spk_no_diffuse_rendering, AUDIO_CONFIG_INVALID ); + initDiffuseResponses( hDirACRend->diffuse_response_function, hDirACRend->num_outputs_dir, AUDIO_CONFIG_FOA, + hDirACRend->hOutSetup, hDirACRend->hOutSetup.ambisonics_order, st_ivas->ivas_format, &hDirACRend->num_ele_spk_no_diffuse_rendering, AUDIO_CONFIG_INVALID ); } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) { if ( flag_config == DIRAC_OPEN ) { - if ( ( hDirAC->hoa_encoder = (float *) malloc( nchan_out_woLFE * hDirAC->num_outputs_diff * sizeof( float ) ) ) == NULL ) + if ( ( hDirACRend->hoa_encoder = (float *) malloc( nchan_out_woLFE * hDirACRend->num_outputs_diff * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - else if ( flag_config == DIRAC_RECONFIGURE && hDirAC->hoa_encoder && ( hDirAC->num_outputs_diff != num_outputs_diff_old ) ) + else if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->hoa_encoder && ( hDirACRend->num_outputs_diff != num_outputs_diff_old ) ) { - free( hDirAC->hoa_encoder ); - hDirAC->hoa_encoder = NULL; - if ( ( hDirAC->hoa_encoder = (float *) malloc( nchan_out_woLFE * hDirAC->num_outputs_diff * sizeof( float ) ) ) == NULL ) + free( hDirACRend->hoa_encoder ); + hDirACRend->hoa_encoder = NULL; + if ( ( hDirACRend->hoa_encoder = (float *) malloc( nchan_out_woLFE * hDirACRend->num_outputs_diff * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - set_f( hDirAC->hoa_encoder, 0.0f, nchan_out_woLFE * hDirAC->num_outputs_diff ); - compute_hoa_encoder_mtx( ls_azimuth, ls_elevation, hDirAC->hoa_encoder, hDirAC->num_outputs_diff, hDirAC->hOutSetup.ambisonics_order ); + set_f( hDirACRend->hoa_encoder, 0.0f, nchan_out_woLFE * hDirACRend->num_outputs_diff ); + compute_hoa_encoder_mtx( ls_azimuth, ls_elevation, hDirACRend->hoa_encoder, hDirACRend->num_outputs_diff, hDirACRend->hOutSetup.ambisonics_order ); } else { - if ( flag_config == DIRAC_RECONFIGURE && hDirAC->hoa_encoder ) + if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->hoa_encoder ) { - free( hDirAC->hoa_encoder ); + free( hDirACRend->hoa_encoder ); } - hDirAC->hoa_encoder = NULL; + hDirACRend->hoa_encoder = NULL; } /* VBAP */ @@ -758,25 +533,25 @@ ivas_error ivas_dirac_dec_config( st_ivas->hVBAPdata = NULL; } - if ( hDirAC->panningConf == DIRAC_PANNING_VBAP ) + if ( hDirACRend->panningConf == DIRAC_PANNING_VBAP ) { if ( flag_config == DIRAC_RECONFIGURE && st_ivas->hVBAPdata != NULL ) { vbap_free_data( &( st_ivas->hVBAPdata ) ); } - if ( ( error = vbap_init_data( &( st_ivas->hVBAPdata ), ls_azimuth, ls_elevation, nchan_out_woLFE ) ) != IVAS_ERR_OK ) + if ( ( error = vbap_init_data( &( st_ivas->hVBAPdata ), ls_azimuth, ls_elevation, nchan_out_woLFE, st_ivas->ivas_format ) ) != IVAS_ERR_OK ) { return error; } } - else if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + else if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { if ( flag_config == DIRAC_RECONFIGURE && st_ivas->hVBAPdata != NULL ) { vbap_free_data( &( st_ivas->hVBAPdata ) ); } - hDirAC->hoa_decoder = NULL; + hDirACRend->hoa_decoder = NULL; } else if ( flag_config == DIRAC_RECONFIGURE && st_ivas->hVBAPdata != NULL ) { @@ -786,67 +561,67 @@ ivas_error ivas_dirac_dec_config( /* HOA panning/dec */ if ( flag_config == DIRAC_OPEN ) { - hDirAC->hoa_decoder = NULL; - if ( ( hDirAC->panningConf == DIRAC_PANNING_HOA3 ) || st_ivas->ivas_format == SBA_FORMAT || ( nchan_transport > 2 ) ) + hDirACRend->hoa_decoder = NULL; + if ( ( hDirACRend->panningConf == DIRAC_PANNING_HOA3 ) || st_ivas->ivas_format == SBA_FORMAT || ( nchan_transport > 2 ) ) { - if ( hDirAC->hOutSetup.is_loudspeaker_setup ) + if ( hDirACRend->hOutSetup.is_loudspeaker_setup ) { if ( st_ivas->hoa_dec_mtx != NULL ) { free( st_ivas->hoa_dec_mtx ); st_ivas->hoa_dec_mtx = NULL; } - if ( ( error = ivas_sba_get_hoa_dec_matrix( hDirAC->hOutSetup, &st_ivas->hoa_dec_mtx, hDirAC->hOutSetup.ambisonics_order ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_sba_get_hoa_dec_matrix( hDirACRend->hOutSetup, &st_ivas->hoa_dec_mtx, hDirACRend->hOutSetup.ambisonics_order ) ) != IVAS_ERR_OK ) { return error; } - hDirAC->hoa_decoder = st_ivas->hoa_dec_mtx; + hDirACRend->hoa_decoder = st_ivas->hoa_dec_mtx; } } } /* decorrelation */ - proto_signal_decorr_on_old = ( flag_config == DIRAC_RECONFIGURE ) ? hDirAC->proto_signal_decorr_on : 0; - hDirAC->proto_signal_decorr_on = 1; - if ( ( nchan_transport > 2 ) && ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) ) + proto_signal_decorr_on_old = ( flag_config == DIRAC_RECONFIGURE ) ? hDirACRend->proto_signal_decorr_on : 0; + hDirACRend->proto_signal_decorr_on = 1; + if ( ( nchan_transport > 2 ) && ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) ) { /*switch off decorrelation for 4 transport channels*/ - hDirAC->proto_signal_decorr_on = 0; + hDirACRend->proto_signal_decorr_on = 0; } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { - hDirAC->proto_signal_decorr_on = 0; + hDirACRend->proto_signal_decorr_on = 0; } - if ( ( flag_config == DIRAC_OPEN && hDirAC->proto_signal_decorr_on ) || ( flag_config == DIRAC_RECONFIGURE && ( hDirAC->proto_signal_decorr_on && !proto_signal_decorr_on_old ) ) ) + if ( ( flag_config == DIRAC_OPEN && hDirACRend->proto_signal_decorr_on ) || ( flag_config == DIRAC_RECONFIGURE && ( hDirACRend->proto_signal_decorr_on && !proto_signal_decorr_on_old ) ) ) { - if ( ( error = ivas_dirac_dec_decorr_open( &( hDirAC->h_freq_domain_decorr_ap_params ), - &( hDirAC->h_freq_domain_decorr_ap_state ), - hDirAC->num_freq_bands, - hDirAC->num_outputs_diff, - hDirAC->num_protos_diff, - hDirAC->synthesisConf, - hDirAC->frequency_axis, + if ( ( error = ivas_dirac_dec_decorr_open( &( 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, nchan_transport > 2 ? 4 : nchan_transport, output_Fs ) ) != IVAS_ERR_OK ) { return error; } } - else if ( flag_config == DIRAC_RECONFIGURE && ( !hDirAC->proto_signal_decorr_on && proto_signal_decorr_on_old ) ) + else if ( flag_config == DIRAC_RECONFIGURE && ( !hDirACRend->proto_signal_decorr_on && proto_signal_decorr_on_old ) ) { - ivas_dirac_dec_decorr_close( &hDirAC->h_freq_domain_decorr_ap_params, &hDirAC->h_freq_domain_decorr_ap_state ); + ivas_dirac_dec_decorr_close( &hDirACRend->h_freq_domain_decorr_ap_params, &hDirACRend->h_freq_domain_decorr_ap_state ); } - else if ( flag_config == DIRAC_RECONFIGURE && hDirAC->proto_signal_decorr_on && proto_signal_decorr_on_old ) + else if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->proto_signal_decorr_on && proto_signal_decorr_on_old ) { - if ( nchan_transport != nchan_transport_old || hDirAC->num_outputs_diff != num_outputs_diff_old || flag_config_inp == DIRAC_RECONFIGURE_MODE ) + if ( nchan_transport != nchan_transport_old || hDirACRend->num_outputs_diff != num_outputs_diff_old || flag_config_inp == DIRAC_RECONFIGURE_MODE ) { /* close and reopen the decorrelator */ - ivas_dirac_dec_decorr_close( &hDirAC->h_freq_domain_decorr_ap_params, &hDirAC->h_freq_domain_decorr_ap_state ); + ivas_dirac_dec_decorr_close( &hDirACRend->h_freq_domain_decorr_ap_params, &hDirACRend->h_freq_domain_decorr_ap_state ); - if ( ( error = ivas_dirac_dec_decorr_open( &( hDirAC->h_freq_domain_decorr_ap_params ), &( hDirAC->h_freq_domain_decorr_ap_state ), hDirAC->num_freq_bands, hDirAC->num_outputs_diff, - hDirAC->num_protos_diff, hDirAC->synthesisConf, hDirAC->frequency_axis, nchan_transport > 2 ? 4 : nchan_transport, output_Fs ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_decorr_open( &( 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, nchan_transport > 2 ? 4 : nchan_transport, output_Fs ) ) != IVAS_ERR_OK ) { return error; } @@ -856,54 +631,54 @@ ivas_error ivas_dirac_dec_config( /* output synthesis */ if ( flag_config == DIRAC_OPEN ) { - if ( ( ivas_dirac_dec_output_synthesis_open( hDirAC, st_ivas->renderer_type, nchan_transport, output_Fs, hodirac_flag ) ) != IVAS_ERR_OK ) + if ( ( ivas_dirac_dec_output_synthesis_open( hSpatParamRendCom, hDirACRend, st_ivas->renderer_type, nchan_transport, output_Fs, hodirac_flag ) ) != IVAS_ERR_OK ) { return error; } - hDirAC->h_output_synthesis_psd_params.use_onset_filters = hDirAC->proto_signal_decorr_on; + hDirACRend->h_output_synthesis_psd_params.use_onset_filters = hDirACRend->proto_signal_decorr_on; } - else if ( ( flag_config == DIRAC_RECONFIGURE ) && ( ( nchan_transport != nchan_transport_old ) || ( hDirAC->num_outputs_diff != num_outputs_diff_old ) ) ) + else if ( ( flag_config == DIRAC_RECONFIGURE ) && ( ( nchan_transport != nchan_transport_old ) || ( hDirACRend->num_outputs_diff != num_outputs_diff_old ) ) ) { - ivas_dirac_dec_output_synthesis_close( hDirAC ); + ivas_dirac_dec_output_synthesis_close( hDirACRend ); - if ( ( ivas_dirac_dec_output_synthesis_open( hDirAC, st_ivas->renderer_type, nchan_transport, output_Fs, hodirac_flag ) ) != IVAS_ERR_OK ) + if ( ( ivas_dirac_dec_output_synthesis_open( hSpatParamRendCom, hDirACRend, st_ivas->renderer_type, nchan_transport, output_Fs, hodirac_flag ) ) != IVAS_ERR_OK ) { return error; } - hDirAC->h_output_synthesis_psd_params.use_onset_filters = hDirAC->proto_signal_decorr_on; + hDirACRend->h_output_synthesis_psd_params.use_onset_filters = hDirACRend->proto_signal_decorr_on; } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD || hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD || hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - hDirAC->h_output_synthesis_psd_params.use_onset_filters = 0; + hDirACRend->h_output_synthesis_psd_params.use_onset_filters = 0; } /*-----------------------------------------------------------------* * memory allocation *-----------------------------------------------------------------*/ - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - if ( flag_config == DIRAC_RECONFIGURE && hDirAC->proto_frame_f ) + if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->proto_frame_f ) { - free( hDirAC->proto_frame_f ); + free( hDirACRend->proto_frame_f ); } - hDirAC->proto_frame_f = NULL; + hDirACRend->proto_frame_f = NULL; } else { - if ( flag_config == DIRAC_OPEN || ( flag_config == DIRAC_RECONFIGURE && hDirAC->proto_frame_f == NULL ) ) + if ( flag_config == DIRAC_OPEN || ( flag_config == DIRAC_RECONFIGURE && hDirACRend->proto_frame_f == NULL ) ) { - if ( ( hDirAC->proto_frame_f = (float *) malloc( sizeof( float ) * 2 * hDirAC->num_protos_diff * hDirAC->num_freq_bands ) ) == NULL ) + if ( ( hDirACRend->proto_frame_f = (float *) malloc( sizeof( float ) * 2 * hDirACRend->num_protos_diff * hSpatParamRendCom->num_freq_bands ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - else if ( flag_config == DIRAC_RECONFIGURE && ( hDirAC->num_protos_diff != num_protos_diff_old ) ) + else if ( flag_config == DIRAC_RECONFIGURE && ( hDirACRend->num_protos_diff != num_protos_diff_old ) ) { - proto_frame_f_old = hDirAC->proto_frame_f; + proto_frame_f_old = hDirACRend->proto_frame_f; free( proto_frame_f_old ); - if ( ( hDirAC->proto_frame_f = (float *) malloc( sizeof( float ) * 2 * hDirAC->num_protos_diff * hDirAC->num_freq_bands ) ) == NULL ) + if ( ( hDirACRend->proto_frame_f = (float *) malloc( sizeof( float ) * 2 * hDirACRend->num_protos_diff * hSpatParamRendCom->num_freq_bands ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } @@ -913,31 +688,31 @@ ivas_error ivas_dirac_dec_config( if ( flag_config == DIRAC_OPEN ) { - hDirAC->buffer_energy = NULL; + hDirACRend->buffer_energy = NULL; } if ( ( flag_config == DIRAC_OPEN && hDirAC->hConfig->dec_param_estim == TRUE ) || ( flag_config == DIRAC_RECONFIGURE && ( hDirAC->hConfig->dec_param_estim == TRUE && dec_param_estim_old == FALSE ) ) ) { - hDirAC->index_buffer_intensity = 0; + hDirACRend->index_buffer_intensity = 0; for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) { for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) { - if ( ( hDirAC->buffer_intensity_real[i][j] = (float *) malloc( CLDFB_NO_CHANNELS_MAX * sizeof( float ) ) ) == NULL ) + if ( ( hDirACRend->buffer_intensity_real[i][j] = (float *) malloc( CLDFB_NO_CHANNELS_MAX * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } - set_f( hDirAC->buffer_intensity_real[i][j], 0.0f, CLDFB_NO_CHANNELS_MAX ); + set_f( hDirACRend->buffer_intensity_real[i][j], 0.0f, CLDFB_NO_CHANNELS_MAX ); } } - if ( hDirAC->buffer_energy == NULL ) + if ( hDirACRend->buffer_energy == NULL ) { - if ( ( hDirAC->buffer_energy = (float *) malloc( DIRAC_NO_COL_AVG_DIFF * CLDFB_NO_CHANNELS_MAX * sizeof( float ) ) ) == NULL ) + if ( ( hDirACRend->buffer_energy = (float *) malloc( DIRAC_NO_COL_AVG_DIFF * CLDFB_NO_CHANNELS_MAX * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } } - set_f( hDirAC->buffer_energy, 0.0f, DIRAC_NO_COL_AVG_DIFF * CLDFB_NO_CHANNELS_MAX ); + set_f( hDirACRend->buffer_energy, 0.0f, DIRAC_NO_COL_AVG_DIFF * CLDFB_NO_CHANNELS_MAX ); } else if ( ( flag_config == DIRAC_OPEN && hDirAC->hConfig->dec_param_estim == FALSE ) || ( flag_config == DIRAC_RECONFIGURE && ( hDirAC->hConfig->dec_param_estim == FALSE && dec_param_estim_old == TRUE ) ) ) { @@ -945,752 +720,398 @@ ivas_error ivas_dirac_dec_config( { for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) { - if ( flag_config == DIRAC_RECONFIGURE && hDirAC->buffer_intensity_real[i][j] ) + if ( flag_config == DIRAC_RECONFIGURE && hDirACRend->buffer_intensity_real[i][j] ) { - free( hDirAC->buffer_intensity_real[i][j] ); + free( hDirACRend->buffer_intensity_real[i][j] ); } - hDirAC->buffer_intensity_real[i][j] = NULL; + hDirACRend->buffer_intensity_real[i][j] = NULL; } } - if ( hDirAC->buffer_energy != NULL ) + if ( hDirACRend->buffer_energy != NULL ) { - free( hDirAC->buffer_energy ); - hDirAC->buffer_energy = NULL; + free( hDirACRend->buffer_energy ); + hDirACRend->buffer_energy = NULL; } } /* output synthesis */ - ivas_dirac_dec_output_synthesis_init( hDirAC, nchan_out_woLFE, hodirac_flag ); + ivas_dirac_dec_output_synthesis_init( hSpatParamRendCom, hDirACRend, nchan_out_woLFE, hodirac_flag ); /* Allocate stack memory */ if ( flag_config != DIRAC_OPEN ) { - ivas_dirac_free_mem( &( hDirAC->stack_mem ) ); + ivas_dirac_free_mem( &( hDirACRend->stack_mem ) ); } - if ( ( error = ivas_dirac_alloc_mem( hDirAC, st_ivas->renderer_type, &( hDirAC->stack_mem ), hodirac_flag ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_alloc_mem( hDirACRend, st_ivas->renderer_type, hSpatParamRendCom->num_freq_bands, &( hDirACRend->stack_mem ), hodirac_flag ) ) != IVAS_ERR_OK ) { return error; } - mvs2s( DirAC_block_grouping, hDirAC->block_grouping, MAX_PARAM_SPATIAL_SUBFRAMES + 1 ); - if ( flag_config == DIRAC_OPEN ) { - hDirAC->dirac_md_buffer_length = 0; - hDirAC->dirac_bs_md_write_idx = 0; - hDirAC->dirac_read_idx = 0; - hDirAC->spar_to_dirac_write_idx = 0; - if ( st_ivas->mc_mode == MC_MODE_MCMASA ) - { - hDirAC->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES; + st_ivas->hDirACRend = hDirACRend; + } - set_s( hDirAC->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); - for ( map_idx = 0; map_idx < DEFAULT_JBM_SUBFRAMES_5MS; map_idx++ ) - { - hDirAC->render_to_md_map[map_idx] = map_idx; - } - } - else if ( st_ivas->ivas_format == MASA_FORMAT ) - { - hDirAC->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR; - hDirAC->dirac_bs_md_write_idx = DELAY_MASA_PARAM_DEC_SFR; + return error; +} - set_s( hDirAC->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); - for ( map_idx = 0; map_idx < DEFAULT_JBM_SUBFRAMES_5MS; map_idx++ ) - { - hDirAC->render_to_md_map[map_idx] = map_idx; - } - } - else - { - int16_t num_slots_in_subfr; - num_slots_in_subfr = hDirAC->hConfig->dec_param_estim ? CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES : 1; - hDirAC->dirac_md_buffer_length = ( MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_DIRAC_PARAM_DEC_SFR ); - hDirAC->dirac_bs_md_write_idx = DELAY_DIRAC_PARAM_DEC_SFR; - hDirAC->spar_to_dirac_write_idx = DELAY_DIRAC_PARAM_DEC_SFR; - hDirAC->dirac_read_idx = 0; - hDirAC->dirac_estimator_idx = 0; - - set_s( hDirAC->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); - for ( map_idx = 0; map_idx < DEFAULT_JBM_SUBFRAMES_5MS * num_slots_in_subfr; map_idx++ ) - { - hDirAC->render_to_md_map[map_idx] = hDirAC->dirac_read_idx + map_idx / num_slots_in_subfr; - } - } - if ( ( error = ivas_dirac_allocate_parameters( hDirAC, 1 ) ) != IVAS_ERR_OK ) - { - return error; - } +/*------------------------------------------------------------------------- + * ivas_dirac_dec_config() + * + * Open or reconfigure decoder DirAC/MASA handle + *-------------------------------------------------------------------------*/ - if ( st_ivas->ivas_format == MASA_FORMAT || ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->hDecoderConfig->ivas_total_brate > IVAS_256k ) ) - { - if ( ( error = ivas_dirac_allocate_parameters( hDirAC, 2 ) ) != IVAS_ERR_OK ) - { - return error; - } - } - else - { - hDirAC->azimuth2 = NULL; - hDirAC->elevation2 = NULL; - hDirAC->energy_ratio2 = NULL; - hDirAC->spreadCoherence2 = NULL; - } +ivas_error ivas_dirac_dec_config( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + const DIRAC_CONFIG_FLAG flag_config_inp /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ +) +{ + ivas_error error; + int32_t output_Fs; + int16_t hodirac_flag; + int16_t sparfoa_flag; + DIRAC_CONFIG_FLAG dec_config_flag; + DIRAC_CONFIG_FLAG rend_config_flag; + DIRAC_CONFIG_FLAG common_rend_config_flag; + int16_t need_dirac_rend; + int16_t need_parambin; + int16_t dec_param_estim_old; + int16_t dec_param_estim_new; - hDirAC->hDiffuseDist = NULL; /* Memory is allocated from stack during runtime when needed */ + error = IVAS_ERR_OK; - hDirAC->dithering_seed = DIRAC_DITH_SEED; - st_ivas->hDirAC = hDirAC; - } + /* Solve and setup flags for inits */ + dec_config_flag = ( flag_config_inp == DIRAC_RECONFIGURE_MODE ) ? DIRAC_RECONFIGURE : flag_config_inp; - /* allocate transport channels*/ - if ( flag_config == DIRAC_OPEN ) - { - if ( st_ivas->hDecoderConfig->voip_active == 1 && st_ivas->hTcBuffer == NULL ) - { - if ( st_ivas->ivas_format == SBA_FORMAT ) - { - int16_t nchan_to_allocate; - - nchan_to_allocate = nchan_transport; - if ( st_ivas->nchan_transport == 1 && ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) || ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) - { - nchan_to_allocate++; /* we need a channel for the CNG in this case*/ - } - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - nchan_to_allocate = 2 * BINAURAL_CHANNELS; - } - if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, nchan_transport, nchan_to_allocate, nchan_to_allocate, hDirAC->slot_size ) ) != IVAS_ERR_OK ) - { - return error; - } - } - } - } - - return error; -} - - -/*------------------------------------------------------------------------- - * ivas_dirac_dec_close() - * - * Close DirAC memories - *------------------------------------------------------------------------*/ + output_Fs = st_ivas->hDecoderConfig->output_Fs; + hodirac_flag = ivas_get_hodirac_flag( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ); + dec_param_estim_old = ( dec_config_flag == DIRAC_RECONFIGURE ) ? st_ivas->hDirAC->hConfig->dec_param_estim : FALSE; -void ivas_dirac_dec_close( - DIRAC_DEC_HANDLE *hDirAC_out /* i/o: decoder DirAC handle */ -) -{ - int16_t i, j; - DIRAC_DEC_HANDLE hDirAC; - if ( hDirAC_out == NULL || *hDirAC_out == NULL ) + sparfoa_flag = 0; + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_FOA && st_ivas->ivas_format == SBA_FORMAT && !hodirac_flag ) { - return; + sparfoa_flag = 1; } - hDirAC = *hDirAC_out; - - /* Config & CLDFB */ - if ( hDirAC->hConfig != NULL ) + if ( ( error = ivas_dirac_dec_config_internal( st_ivas, dec_config_flag ) ) != IVAS_ERR_OK ) { - free( hDirAC->hConfig ); - hDirAC->hConfig = NULL; + return error; } - /* close Output synthesis sub-module */ - ivas_dirac_dec_output_synthesis_close( hDirAC ); - - /* close Decorrelator sub-module */ - if ( hDirAC->proto_signal_decorr_on ) + /* This is required for parambin */ + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) { - ivas_dirac_dec_decorr_close( &hDirAC->h_freq_domain_decorr_ap_params, &hDirAC->h_freq_domain_decorr_ap_state ); + st_ivas->hDirAC->hConfig->dec_param_estim = FALSE; } - /* Params */ - - /* free frequency axis buffer */ - if ( hDirAC->frequency_axis != NULL ) - { - free( hDirAC->frequency_axis ); - hDirAC->frequency_axis = NULL; - } + dec_param_estim_new = st_ivas->hDirAC->hConfig->dec_param_estim; - if ( hDirAC->diffuse_response_function != NULL ) + /* Setup renderers and meta */ + /* First, free everything if in reconfig and not the active renderer */ + need_parambin = 0; + switch ( st_ivas->renderer_type ) { - free( hDirAC->diffuse_response_function ); - hDirAC->diffuse_response_function = NULL; + case RENDERER_BINAURAL_PARAMETRIC: + case RENDERER_BINAURAL_PARAMETRIC_ROOM: + case RENDERER_STEREO_PARAMETRIC: + need_parambin = 1; + break; + default: + need_parambin = 0; } - if ( hDirAC->hoa_encoder != NULL ) + if ( !need_parambin ) { - free( hDirAC->hoa_encoder ); - hDirAC->hoa_encoder = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); +#else + ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); +#endif } - /* prototype indexing */ - if ( hDirAC->proto_index_dir != NULL ) + need_dirac_rend = 0; + switch ( st_ivas->renderer_type ) { - free( hDirAC->proto_index_dir ); - hDirAC->proto_index_dir = NULL; + case RENDERER_DIRAC: + case RENDERER_BINAURAL_FASTCONV: + case RENDERER_BINAURAL_FASTCONV_ROOM: + case RENDERER_SBA_LINEAR_ENC: + case RENDERER_SBA_LINEAR_DEC: + case RENDERER_OSBA_AMBI: + case RENDERER_OSBA_LS: + need_dirac_rend = 1; + break; + default: + need_dirac_rend = 0; } - if ( hDirAC->proto_index_diff != NULL ) + if ( !need_dirac_rend ) { - free( hDirAC->proto_index_diff ); - hDirAC->proto_index_dir = NULL; + ivas_dirac_rend_close( &st_ivas->hDirACRend ); } - /* States */ - - /* free prototype signal buffers */ - if ( hDirAC->proto_frame_f != NULL ) + if ( !sparfoa_flag ) { - free( hDirAC->proto_frame_f ); - hDirAC->proto_frame_f = NULL; - } + common_rend_config_flag = st_ivas->hSpatParamRendCom == NULL ? DIRAC_OPEN : flag_config_inp; + if ( ( error = ivas_spat_hSpatParamRendCom_config( &st_ivas->hSpatParamRendCom, common_rend_config_flag, dec_param_estim_new, + st_ivas->ivas_format, st_ivas->mc_mode, output_Fs, hodirac_flag ) ) != IVAS_ERR_OK ) + { + return error; + } - for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) - { - for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) + if ( need_dirac_rend ) { - if ( hDirAC->buffer_intensity_real[i][j] != NULL ) + rend_config_flag = st_ivas->hDirACRend == NULL ? DIRAC_OPEN : flag_config_inp; + if ( ( error = ivas_dirac_rend_config( st_ivas, rend_config_flag, dec_param_estim_old ) ) != IVAS_ERR_OK ) { - free( hDirAC->buffer_intensity_real[i][j] ); - hDirAC->buffer_intensity_real[i][j] = NULL; + return error; } } - } - if ( hDirAC->buffer_energy != NULL ) - { - free( hDirAC->buffer_energy ); - hDirAC->buffer_energy = NULL; - } - - ivas_dirac_deallocate_parameters( hDirAC, 1 ); - ivas_dirac_deallocate_parameters( hDirAC, 2 ); - - if ( hDirAC->masa_stereo_type_detect != NULL ) - { - free( hDirAC->masa_stereo_type_detect ); - hDirAC->masa_stereo_type_detect = NULL; - } - ivas_dirac_free_mem( &( hDirAC->stack_mem ) ); - - free( *hDirAC_out ); - *hDirAC_out = NULL; - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_dirac_deallocate_parameters() - * - * Deallocate DirAC parameters - *-------------------------------------------------------------------------*/ - -void ivas_dirac_deallocate_parameters( - DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ - const int16_t params_flag /* i : set of parameters flag */ -) -{ - int16_t i; - - if ( params_flag == 1 ) - { - if ( hDirAC->azimuth != NULL ) + if ( need_parambin ) { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) + if ( st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) { - if ( hDirAC->azimuth[i] != NULL ) + if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) { - free( hDirAC->azimuth[i] ); - hDirAC->azimuth[i] = NULL; + return error; } } - free( hDirAC->azimuth ); - hDirAC->azimuth = NULL; - } - - if ( hDirAC->elevation != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0] == NULL ) +#else + if ( st_ivas->hDiracDecBin == NULL ) +#endif { - if ( hDirAC->elevation[i] != NULL ) + if ( ( error = ivas_dirac_dec_init_binaural_data( st_ivas, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) { - free( hDirAC->elevation[i] ); - hDirAC->elevation[i] = NULL; + return error; } } - - free( hDirAC->elevation ); - hDirAC->elevation = NULL; - } - - if ( hDirAC->energy_ratio1 != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) + else { - if ( hDirAC->energy_ratio1[i] != NULL ) + /* This is required to keep BE in rate switching. This probably means that 1TC and 2TC MASA perform differently. */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params != NULL && !( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nSCE > 0 ) ) +#else + if ( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params != NULL && !( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nSCE > 0 ) ) +#endif + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_decorr_close( &st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params, &st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ); +#else + ivas_dirac_dec_decorr_close( &st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params, &st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_state ); +#endif + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( 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 ( ( 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 { - free( hDirAC->energy_ratio1[i] ); - hDirAC->energy_ratio1[i] = NULL; + return error; } - } - free( hDirAC->energy_ratio1 ); - hDirAC->energy_ratio1 = NULL; - } - if ( hDirAC->diffuseness_vector != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( hDirAC->diffuseness_vector[i] != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + /* copy td-decorr flag to split renderer side rendereres */ + for ( int16_t pos_idx = 1; pos_idx < st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses; pos_idx++ ) { - free( hDirAC->diffuseness_vector[i] ); - hDirAC->diffuseness_vector[i] = NULL; + st_ivas->hDiracDecBin[pos_idx]->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; } - } - free( hDirAC->diffuseness_vector ); - hDirAC->diffuseness_vector = NULL; - } + if ( !st_ivas->hDiracDecBin[0]->useTdDecorr ) +#else + if ( !st_ivas->hDiracDecBin->useTdDecorr ) +#endif - if ( hDirAC->spreadCoherence != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( hDirAC->spreadCoherence[i] != NULL ) { - free( hDirAC->spreadCoherence[i] ); - hDirAC->spreadCoherence[i] = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + 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 + { + float frequency_axis[CLDFB_NO_CHANNELS_MAX]; + + ivas_dirac_dec_get_frequency_axis( frequency_axis, st_ivas->hDecoderConfig->output_Fs, st_ivas->hSpatParamRendCom->num_freq_bands ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( error = ivas_dirac_dec_decorr_open( &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_params ), + &( st_ivas->hDiracDecBin[0]->h_freq_domain_decorr_ap_state ), +#else + if ( ( error = ivas_dirac_dec_decorr_open( &( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_params ), + &( st_ivas->hDiracDecBin->h_freq_domain_decorr_ap_state ), +#endif + st_ivas->hSpatParamRendCom->num_freq_bands, + BINAURAL_CHANNELS, + BINAURAL_CHANNELS, + DIRAC_SYNTHESIS_PSD_LS, + frequency_axis, + BINAURAL_CHANNELS, + st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) + { + return error; + } + } } - } - free( hDirAC->spreadCoherence ); - hDirAC->spreadCoherence = NULL; - } - if ( hDirAC->surroundingCoherence != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( hDirAC->surroundingCoherence[i] != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + for ( int16_t pos_idx = 0; pos_idx < st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses; pos_idx++ ) { - free( hDirAC->surroundingCoherence[i] ); - hDirAC->surroundingCoherence[i] = NULL; + st_ivas->hDiracDecBin[pos_idx]->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); } +#else + st_ivas->hDiracDecBin->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); +#endif } - free( hDirAC->surroundingCoherence ); - hDirAC->surroundingCoherence = NULL; } } - else if ( params_flag == 2 ) + + /* Allocate transport channel buffers for SBA format when in JBM */ + if ( dec_config_flag == DIRAC_OPEN ) { - if ( hDirAC->azimuth2 != NULL ) + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms && +#endif +#else + st_ivas->hDecoderConfig->voip_active == 1 && +#endif + st_ivas->hTcBuffer == NULL ) { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) + if ( st_ivas->ivas_format == SBA_FORMAT ) { - if ( hDirAC->azimuth2[i] != NULL ) - { - free( hDirAC->azimuth2[i] ); - hDirAC->azimuth2[i] = NULL; - } - } - free( hDirAC->azimuth2 ); - hDirAC->azimuth2 = NULL; - } + int16_t nchan_to_allocate; + int16_t nchan_transport; - if ( hDirAC->elevation2 != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( hDirAC->elevation2[i] != NULL ) + nchan_transport = st_ivas->nchan_transport; + + nchan_to_allocate = nchan_transport; + if ( st_ivas->nchan_transport == 1 && ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) || ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) { - free( hDirAC->elevation2[i] ); - hDirAC->elevation2[i] = NULL; + nchan_to_allocate++; /* we need a channel for the CNG in this case*/ } - } - free( hDirAC->elevation2 ); - hDirAC->elevation2 = NULL; - } - - if ( hDirAC->energy_ratio2 != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( hDirAC->energy_ratio2[i] != NULL ) + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) { - free( hDirAC->energy_ratio2[i] ); - hDirAC->energy_ratio2[i] = NULL; + nchan_to_allocate = 2 * BINAURAL_CHANNELS; } - } - free( hDirAC->energy_ratio2 ); - hDirAC->energy_ratio2 = NULL; - } - - if ( hDirAC->spreadCoherence2 != NULL ) - { - for ( i = 0; i < hDirAC->dirac_md_buffer_length; i++ ) - { - if ( hDirAC->spreadCoherence2[i] != NULL ) + if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, nchan_transport, nchan_to_allocate, nchan_to_allocate, st_ivas->hSpatParamRendCom->slot_size ) ) != IVAS_ERR_OK ) { - free( hDirAC->spreadCoherence2[i] ); - hDirAC->spreadCoherence2[i] = NULL; + return error; } } - free( hDirAC->spreadCoherence2 ); - hDirAC->spreadCoherence2 = NULL; } } - return; + return error; } /*------------------------------------------------------------------------- - * ivas_dirac_alloc_mem() + * ivas_dirac_dec_close() * - * Allocate stack memory for DirAC renderer + * Close DirAC memories *------------------------------------------------------------------------*/ -static ivas_error ivas_dirac_alloc_mem( - DIRAC_DEC_HANDLE hDirAC, - const RENDERER_TYPE renderer_type, - DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem, - const int16_t hodirac_flag ) +void ivas_dirac_dec_close( + DIRAC_DEC_HANDLE *hDirAC_out ) { - int16_t num_freq_bands, num_freq_bands_diff, size; - int16_t size_ho; - int16_t size_pf; - int16_t num_outputs_dir, num_outputs_diff; - int16_t num_protos_dir; - - num_protos_dir = hDirAC->num_protos_dir; - - num_freq_bands = hDirAC->num_freq_bands; - num_freq_bands_diff = hDirAC->h_output_synthesis_psd_params.max_band_decorr; - - num_outputs_dir = hDirAC->num_outputs_dir; - num_outputs_diff = hDirAC->num_outputs_diff; + DIRAC_DEC_HANDLE hDirAC; - size = num_freq_bands * num_outputs_dir; - if ( hodirac_flag ) - { - size_ho = size * DIRAC_HO_NUMSECTORS; - size_pf = num_freq_bands * DIRAC_HO_NUMSECTORS; - } - else + if ( hDirAC_out == NULL || *hDirAC_out == NULL ) { - size_ho = size; - size_pf = num_freq_bands; + return; } - /* PSD related buffers */ - hDirAC_mem->cy_auto_dir_smooth = NULL; - hDirAC_mem->proto_power_smooth = NULL; - hDirAC_mem->proto_power_diff_smooth = NULL; - hDirAC_mem->direct_responses_square = NULL; - hDirAC_mem->frame_dec_f = NULL; - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) - { - if ( ( hDirAC_mem->cy_auto_dir_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->cy_auto_dir_smooth, size ); - - if ( ( hDirAC_mem->proto_power_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->proto_power_smooth, size ); - - if ( ( hDirAC_mem->proto_power_diff_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->proto_power_diff_smooth, size ); - - if ( ( hDirAC_mem->direct_responses_square = (float *) malloc( sizeof( float ) * size ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->direct_responses_square, size ); - if ( hDirAC->proto_signal_decorr_on && ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) ) - { - if ( ( hDirAC_mem->frame_dec_f = (float *) malloc( sizeof( float ) * 2 * num_outputs_diff * num_freq_bands ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - } - } - hDirAC->h_output_synthesis_psd_state.proto_power_smooth = hDirAC_mem->proto_power_smooth; - hDirAC->h_output_synthesis_psd_state.proto_power_diff_smooth = hDirAC_mem->proto_power_diff_smooth; - hDirAC->h_output_synthesis_psd_state.cy_auto_dir_smooth = hDirAC_mem->cy_auto_dir_smooth; - hDirAC->h_output_synthesis_psd_state.direct_responses_square = hDirAC_mem->direct_responses_square; + hDirAC = *hDirAC_out; - /* Target and smoothed nrg factors/gains */ - if ( ( hDirAC_mem->cy_cross_dir_smooth = (float *) malloc( sizeof( float ) * size_ho ) ) == NULL ) + /* Config & CLDFB */ + if ( hDirAC->hConfig != NULL ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + free( hDirAC->hConfig ); + hDirAC->hConfig = NULL; } - set_zero( hDirAC_mem->cy_cross_dir_smooth, size ); - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) - { - if ( ( hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->cy_auto_diff_smooth, size ); - } - else - { - if ( ( hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands_diff ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->cy_auto_diff_smooth, num_outputs_diff * num_freq_bands_diff ); - } - hDirAC->h_output_synthesis_psd_state.cy_cross_dir_smooth = hDirAC_mem->cy_cross_dir_smooth; - hDirAC->h_output_synthesis_psd_state.cy_auto_diff_smooth = hDirAC_mem->cy_auto_diff_smooth; + free( *hDirAC_out ); + *hDirAC_out = NULL; - /*Responses (gains/factors)*/ - if ( ( hDirAC_mem->direct_responses = (float *) malloc( sizeof( float ) * size_ho ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - set_zero( hDirAC_mem->direct_responses, size ); + return; +} - hDirAC->h_output_synthesis_psd_state.direct_responses = hDirAC_mem->direct_responses; +/*------------------------------------------------------------------------- + * ivas_dirac_dec_read_BS() + * + * Read DirAC parameters from the bitstream + *------------------------------------------------------------------------*/ - /* Prototypes */ - hDirAC_mem->proto_direct_buffer_f = NULL; - hDirAC_mem->proto_diffuse_buffer_f = NULL; - if ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) +void ivas_dirac_dec_read_BS( + const int32_t ivas_total_brate, /* i : IVAS total bitrate */ + Decoder_State *st, /* i/o: decoder 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 */ +) +{ + int16_t i, j, b, dir, orig_dirac_bands; + int16_t next_bit_pos_orig; + if ( !st->bfi && ivas_total_brate > IVAS_SID_5k2 ) { - if ( ( hDirAC_mem->proto_direct_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_protos_dir * num_freq_bands ) ) == NULL ) + next_bit_pos_orig = st->next_bit_pos; + st->next_bit_pos = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC - 1 ); + if ( last_bit_pos > 0 ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + st->next_bit_pos = last_bit_pos; } + /* 1 bit flag for signaling metadata to read */ + b = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits )++; - if ( hDirAC->proto_signal_decorr_on ) + if ( b == 1 ) /* WB 4TCs condition, no other metadata to read*/ { - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) + orig_dirac_bands = hQMetaData->q_direction[0].cfg.nbands; + + hQMetaData->sba_inactive_mode = 1; + + /* if we start with a SID frame, we need to init the azi/ele arrays.*/ + if ( st->ini_frame == 0 ) { - if ( ( hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * size ) ) == NULL ) + for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + set_zero( hQMetaData->q_direction[0].band_data[b].azimuth, MAX_PARAM_SPATIAL_SUBFRAMES ); + set_zero( hQMetaData->q_direction[0].band_data[b].elevation, MAX_PARAM_SPATIAL_SUBFRAMES ); } } - else + + *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT ); + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; + hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; + } + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { - if ( ( hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands ) ) == NULL ) + for ( j = orig_dirac_bands - 2; j >= 0; j-- ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; + hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; + hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; } } - } - } - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f = hDirAC_mem->proto_direct_buffer_f; - hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f = hDirAC_mem->proto_diffuse_buffer_f; - /* Gains/power factors*/ - hDirAC_mem->direct_power_factor = NULL; - hDirAC_mem->diffuse_power_factor = NULL; - - if ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) - { - if ( ( hDirAC_mem->direct_power_factor = (float *) malloc( sizeof( float ) * size_pf ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + hQMetaData->q_direction->cfg.nbands = orig_dirac_bands; } - if ( ( hDirAC_mem->diffuse_power_factor = (float *) malloc( sizeof( float ) * size_pf ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - } - - hDirAC->h_output_synthesis_psd_state.direct_power_factor = hDirAC_mem->direct_power_factor; - hDirAC->h_output_synthesis_psd_state.diffuse_power_factor = hDirAC_mem->diffuse_power_factor; - - hDirAC_mem->reference_power = NULL; - hDirAC_mem->onset_filter = NULL; - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) - { - if ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) - { - if ( ( hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - if ( hDirAC->proto_signal_decorr_on ) - { - if ( ( hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - } - } - } - else - { - if ( num_protos_dir > 2 ) - { - if ( ( hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 5 * num_freq_bands ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - } - - if ( hDirAC->proto_signal_decorr_on ) - { - if ( ( hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ) ) == NULL ) - { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); - } - } - } - - return IVAS_ERR_OK; -} - - -static void ivas_dirac_free_mem( - DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem ) -{ - if ( hDirAC_mem->cy_auto_dir_smooth != NULL ) - { - free( hDirAC_mem->cy_auto_dir_smooth ); - } - if ( hDirAC_mem->proto_power_smooth != NULL ) - { - free( hDirAC_mem->proto_power_smooth ); - } - if ( hDirAC_mem->proto_power_diff_smooth != NULL ) - { - free( hDirAC_mem->proto_power_diff_smooth ); - } - if ( hDirAC_mem->direct_responses_square != NULL ) - { - free( hDirAC_mem->direct_responses_square ); - } - if ( hDirAC_mem->frame_dec_f != NULL ) - { - free( hDirAC_mem->frame_dec_f ); - } - if ( hDirAC_mem->cy_cross_dir_smooth != NULL ) - { - free( hDirAC_mem->cy_cross_dir_smooth ); - } - if ( hDirAC_mem->cy_auto_diff_smooth != NULL ) - { - free( hDirAC_mem->cy_auto_diff_smooth ); - } - if ( hDirAC_mem->direct_responses != NULL ) - { - free( hDirAC_mem->direct_responses ); - } - if ( hDirAC_mem->proto_direct_buffer_f != NULL ) - { - free( hDirAC_mem->proto_direct_buffer_f ); - } - if ( hDirAC_mem->proto_diffuse_buffer_f != NULL ) - { - free( hDirAC_mem->proto_diffuse_buffer_f ); - } - if ( hDirAC_mem->direct_power_factor != NULL ) - { - free( hDirAC_mem->direct_power_factor ); - } - if ( hDirAC_mem->diffuse_power_factor != NULL ) - { - free( hDirAC_mem->diffuse_power_factor ); - } - if ( hDirAC_mem->reference_power != NULL ) - { - free( hDirAC_mem->reference_power ); - } - if ( hDirAC_mem->onset_filter != NULL ) - { - free( hDirAC_mem->onset_filter ); - } - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_dirac_dec_read_BS() - * - * Read DirAC parameters from the bitstream - *------------------------------------------------------------------------*/ - -void ivas_dirac_dec_read_BS( - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - Decoder_State *st, /* i/o: decoder state structure */ - DIRAC_DEC_HANDLE hDirAC, /* i/o: decoder DirAC handle */ - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata */ - int16_t *nb_bits, /* o : number of bits read */ - const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ - int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ -) -{ - int16_t i, j, b, dir, orig_dirac_bands; - int16_t next_bit_pos_orig; - *nb_bits = 0; - if ( !st->bfi && ivas_total_brate > IVAS_SID_5k2 ) - { - next_bit_pos_orig = st->next_bit_pos; - st->next_bit_pos = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC - 1 ); - - /* 1 bit flag for signaling metadata to read */ - b = st->bit_stream[( st->next_bit_pos )--]; - ( *nb_bits )++; - - if ( b == 1 ) /* WB 4TCs condition, no other metadata to read*/ - { - orig_dirac_bands = hQMetaData->q_direction[0].cfg.nbands; - - hQMetaData->sba_inactive_mode = 1; - - /* if we start with a SID frame, we need to init the azi/ele arrays.*/ - if ( st->ini_frame == 0 ) - { - for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) - { - set_zero( hQMetaData->q_direction[0].band_data[b].azimuth, MAX_PARAM_SPATIAL_SUBFRAMES ); - set_zero( hQMetaData->q_direction[0].band_data[b].elevation, MAX_PARAM_SPATIAL_SUBFRAMES ); - } - } - - *nb_bits += ivas_qmetadata_dec_sid_decode( hQMetaData, st->bit_stream, &( st->next_bit_pos ), 0, NULL, SBA_FORMAT ); - for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) - { - hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].azimuth[i] = hQMetaData->q_direction[0].band_data[1].azimuth[0]; - hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].elevation[i] = hQMetaData->q_direction[0].band_data[1].elevation[0]; - hQMetaData->q_direction[0].band_data[orig_dirac_bands - 1].energy_ratio[i] = hQMetaData->q_direction[0].band_data[1].energy_ratio[0]; - } - for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) - { - for ( j = orig_dirac_bands - 2; j >= 0; j-- ) - { - hQMetaData->q_direction[0].band_data[j].azimuth[i] = hQMetaData->q_direction[0].band_data[0].azimuth[0]; - hQMetaData->q_direction[0].band_data[j].elevation[i] = hQMetaData->q_direction[0].band_data[0].elevation[0]; - hQMetaData->q_direction[0].band_data[j].energy_ratio[i] = hQMetaData->q_direction[0].band_data[0].energy_ratio[0]; - } - } - - hQMetaData->q_direction->cfg.nbands = orig_dirac_bands; - } - else + else { hQMetaData->sba_inactive_mode = 0; hQMetaData->is_masa_ivas_format = 0; @@ -1718,8 +1139,7 @@ void ivas_dirac_dec_read_BS( /* subtract mode signaling bits, since bitstream was moved after mode reading */ st->next_bit_pos = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC - 1 - SID_FORMAT_NBITS ); - - /* 1 bit flag for SPAR/DirAC, already read in read format function */ + /* 1 bit flag for signaling metadata to read */ b = st->bit_stream[( st->next_bit_pos )--]; ( *nb_bits )++; hQMetaData->sba_inactive_mode = 1; @@ -1760,9 +1180,9 @@ void ivas_dirac_dec_read_BS( st->next_bit_pos = next_bit_pos_orig; } - if ( hDirAC != NULL ) + if ( hDirAC != NULL && hSpatParamRendCom != NULL ) { - ivas_qmetadata_to_dirac( hQMetaData, hDirAC, NULL, ivas_total_brate, SBA_FORMAT, hodirac_flag, dirac_to_spar_md_bands ); + ivas_qmetadata_to_dirac( hQMetaData, hDirAC, NULL, hSpatParamRendCom, ivas_total_brate, SBA_FORMAT, hodirac_flag, dirac_to_spar_md_bands ); } return; @@ -1776,13 +1196,14 @@ void ivas_dirac_dec_read_BS( *-----------------------------------------------------------------------*/ void ivas_qmetadata_to_dirac( - const IVAS_QMETADATA_HANDLE hQMetaData, /* i : frame of MASA q_metadata */ - DIRAC_DEC_HANDLE hDirAC, /* o : DirAC decoder structure */ - MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ - const int32_t ivas_total_brate, /* i : IVAS total bitrate */ - const IVAS_FORMAT ivas_format, /* i : IVAS format */ - const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ - int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ + const IVAS_QMETADATA_HANDLE hQMetaData, /* i : frame of MASA q_metadata */ + DIRAC_DEC_HANDLE hDirAC, /* i : DirAC decoder structure */ + MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + const int32_t ivas_total_brate, /* i : IVAS total bitrate */ + const IVAS_FORMAT ivas_format, /* i : IVAS format */ + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + int16_t *dirac_to_spar_md_bands /* o : DirAC->SPAR MD bands */ ) { int16_t block, band; @@ -1802,7 +1223,8 @@ void ivas_qmetadata_to_dirac( int16_t no_secs = 1; q_direction = &( hQMetaData->q_direction[0] ); - hDirAC->numSimultaneousDirections = hQMetaData->no_directions; + hSpatParamRendCom->numParametricDirections = hQMetaData->no_directions; + hSpatParamRendCom->numSimultaneousDirections = hSpatParamRendCom->numParametricDirections + hSpatParamRendCom->numIsmDirections; if ( hMasa != NULL && ivas_total_brate > IVAS_SID_5k2 ) { @@ -1811,33 +1233,33 @@ void ivas_qmetadata_to_dirac( for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; ++block ) { - meta_write_index = ( hDirAC->dirac_bs_md_write_idx + block ) % hDirAC->dirac_md_buffer_length; + meta_write_index = ( hSpatParamRendCom->dirac_bs_md_write_idx + block ) % hSpatParamRendCom->dirac_md_buffer_length; for ( band = 0; band < hMasa->config.numCodingBands; ++band ) { for ( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { - hDirAC->azimuth[meta_write_index][b] = (int16_t) q_direction->band_data[band].azimuth[block]; - hDirAC->elevation[meta_write_index][b] = (int16_t) q_direction->band_data[band].elevation[block]; - hDirAC->energy_ratio1[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block]; - hDirAC->diffuseness_vector[meta_write_index][b] = 1.0f - q_direction->band_data[band].energy_ratio[block]; + hSpatParamRendCom->azimuth[meta_write_index][b] = (int16_t) q_direction->band_data[band].azimuth[block]; + hSpatParamRendCom->elevation[meta_write_index][b] = (int16_t) q_direction->band_data[band].elevation[block]; + hSpatParamRendCom->energy_ratio1[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block]; + hSpatParamRendCom->diffuseness_vector[meta_write_index][b] = 1.0f - q_direction->band_data[band].energy_ratio[block]; if ( q_direction->coherence_band_data != NULL ) { - hDirAC->spreadCoherence[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f; + hSpatParamRendCom->spreadCoherence[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f; } else { - hDirAC->spreadCoherence[meta_write_index][b] = 0.0f; + hSpatParamRendCom->spreadCoherence[meta_write_index][b] = 0.0f; } if ( hQMetaData->surcoh_band_data != NULL ) { - hDirAC->surroundingCoherence[meta_write_index][b] = hQMetaData->surcoh_band_data[band].surround_coherence[block] / 255.0f; + hSpatParamRendCom->surroundingCoherence[meta_write_index][b] = hQMetaData->surcoh_band_data[band].surround_coherence[block] / 255.0f; } else { - hDirAC->surroundingCoherence[meta_write_index][b] = 0.0f; + hSpatParamRendCom->surroundingCoherence[meta_write_index][b] = 0.0f; } } } @@ -1848,39 +1270,39 @@ void ivas_qmetadata_to_dirac( q_direction = &( hQMetaData->q_direction[1] ); for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; ++block ) { - meta_write_index = ( hDirAC->dirac_bs_md_write_idx + block ) % hDirAC->dirac_md_buffer_length; + meta_write_index = ( hSpatParamRendCom->dirac_bs_md_write_idx + block ) % hSpatParamRendCom->dirac_md_buffer_length; for ( band = 0; band < hMasa->config.numCodingBands; ++band ) { for ( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) { - hDirAC->azimuth2[meta_write_index][b] = (int16_t) q_direction->band_data[band].azimuth[block]; - hDirAC->elevation2[meta_write_index][b] = (int16_t) q_direction->band_data[band].elevation[block]; - hDirAC->energy_ratio2[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block]; - hDirAC->diffuseness_vector[meta_write_index][b] -= q_direction->band_data[band].energy_ratio[block]; + hSpatParamRendCom->azimuth2[meta_write_index][b] = (int16_t) q_direction->band_data[band].azimuth[block]; + hSpatParamRendCom->elevation2[meta_write_index][b] = (int16_t) q_direction->band_data[band].elevation[block]; + hSpatParamRendCom->energy_ratio2[meta_write_index][b] = q_direction->band_data[band].energy_ratio[block]; + hSpatParamRendCom->diffuseness_vector[meta_write_index][b] -= q_direction->band_data[band].energy_ratio[block]; if ( q_direction->coherence_band_data != NULL ) { - hDirAC->spreadCoherence2[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f; + hSpatParamRendCom->spreadCoherence2[meta_write_index][b] = q_direction->coherence_band_data[band].spread_coherence[block] / 255.0f; } else { - hDirAC->spreadCoherence2[meta_write_index][b] = 0.0f; + hSpatParamRendCom->spreadCoherence2[meta_write_index][b] = 0.0f; } } } } } - else if ( hDirAC->azimuth2 != NULL && hDirAC->elevation2 != NULL && hDirAC->energy_ratio2 != NULL && hDirAC->spreadCoherence2 != NULL ) + else if ( hSpatParamRendCom->azimuth2 != NULL && hSpatParamRendCom->elevation2 != NULL && hSpatParamRendCom->energy_ratio2 != NULL && hSpatParamRendCom->spreadCoherence2 != NULL ) { /* zero out old dir2 data */ for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; ++block ) { - meta_write_index = ( hDirAC->dirac_bs_md_write_idx + block ) % hDirAC->dirac_md_buffer_length; - set_s( hDirAC->azimuth2[meta_write_index], 0, hDirAC->num_freq_bands ); - set_s( hDirAC->elevation2[meta_write_index], 0, hDirAC->num_freq_bands ); - set_zero( hDirAC->energy_ratio2[meta_write_index], hDirAC->num_freq_bands ); - set_zero( hDirAC->spreadCoherence2[meta_write_index], hDirAC->num_freq_bands ); + meta_write_index = ( hSpatParamRendCom->dirac_bs_md_write_idx + block ) % hSpatParamRendCom->dirac_md_buffer_length; + set_s( hSpatParamRendCom->azimuth2[meta_write_index], 0, hSpatParamRendCom->num_freq_bands ); + set_s( hSpatParamRendCom->elevation2[meta_write_index], 0, hSpatParamRendCom->num_freq_bands ); + set_zero( hSpatParamRendCom->energy_ratio2[meta_write_index], hSpatParamRendCom->num_freq_bands ); + set_zero( hSpatParamRendCom->spreadCoherence2[meta_write_index], hSpatParamRendCom->num_freq_bands ); } } } @@ -1931,24 +1353,24 @@ void ivas_qmetadata_to_dirac( { band_start = band_grouping[band]; band_end = band_grouping[band + 1]; - tmp_write_idx_param_band = hDirAC->dirac_bs_md_write_idx; + tmp_write_idx_param_band = hSpatParamRendCom->dirac_bs_md_write_idx; for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) { for ( b = band_start; b < band_end; b++ ) { tmp_write_idx_band = tmp_write_idx_param_band; - hDirAC->spreadCoherence[block][b] = 0.0f; - hDirAC->surroundingCoherence[block][b] = 0.0f; + hSpatParamRendCom->spreadCoherence[block][b] = 0.0f; + hSpatParamRendCom->surroundingCoherence[block][b] = 0.0f; - hDirAC->elevation[tmp_write_idx_band][b] = 0; - hDirAC->azimuth[tmp_write_idx_band][b] = 0; - hDirAC->diffuseness_vector[tmp_write_idx_band][b] = 0.f; + hSpatParamRendCom->elevation[tmp_write_idx_band][b] = 0; + hSpatParamRendCom->azimuth[tmp_write_idx_band][b] = 0; + hSpatParamRendCom->diffuseness_vector[tmp_write_idx_band][b] = 0.f; - hDirAC->spreadCoherence[tmp_write_idx_band][b] = 0.0f; - hDirAC->surroundingCoherence[tmp_write_idx_band][b] = 0.0f; - hDirAC->energy_ratio1[tmp_write_idx_band][b] = 0; - tmp_write_idx_band = ( tmp_write_idx_band + 1 ) % hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->spreadCoherence[tmp_write_idx_band][b] = 0.0f; + hSpatParamRendCom->surroundingCoherence[tmp_write_idx_band][b] = 0.0f; + hSpatParamRendCom->energy_ratio1[tmp_write_idx_band][b] = 0; + tmp_write_idx_band = ( tmp_write_idx_band + 1 ) % hSpatParamRendCom->dirac_md_buffer_length; } } } @@ -1965,7 +1387,7 @@ void ivas_qmetadata_to_dirac( { band_start = band_grouping[band]; band_end = band_grouping[band + 1]; - tmp_write_idx_param_band = hDirAC->dirac_bs_md_write_idx; + tmp_write_idx_param_band = hSpatParamRendCom->dirac_bs_md_write_idx; if ( ivas_format == SBA_FORMAT ) { @@ -2027,79 +1449,79 @@ void ivas_qmetadata_to_dirac( if ( ivas_total_brate > IVAS_SID_5k2 && q_direction->coherence_band_data != NULL ) { - hDirAC->spreadCoherence[tmp_write_idx_band][b] = q_direction->coherence_band_data[qBand_idx].spread_coherence[block] / 255.0f; + hSpatParamRendCom->spreadCoherence[tmp_write_idx_band][b] = q_direction->coherence_band_data[qBand_idx].spread_coherence[block] / 255.0f; } else { - hDirAC->spreadCoherence[tmp_write_idx_band][b] = 0.0f; + hSpatParamRendCom->spreadCoherence[tmp_write_idx_band][b] = 0.0f; } if ( ivas_total_brate > IVAS_SID_5k2 && q_direction->coherence_band_data != NULL ) { - hDirAC->surroundingCoherence[tmp_write_idx_band][b] = hQMetaData->surcoh_band_data[qBand_idx].surround_coherence[0] / 255.0f; + hSpatParamRendCom->surroundingCoherence[tmp_write_idx_band][b] = hQMetaData->surcoh_band_data[qBand_idx].surround_coherence[0] / 255.0f; } else { - hDirAC->surroundingCoherence[tmp_write_idx_band][b] = 0.0f; + hSpatParamRendCom->surroundingCoherence[tmp_write_idx_band][b] = 0.0f; } - hDirAC->energy_ratio1[tmp_write_idx_band][b] = q_direction->band_data[qBand_idx].energy_ratio[0]; + hSpatParamRendCom->energy_ratio1[tmp_write_idx_band][b] = q_direction->band_data[qBand_idx].energy_ratio[0]; - hDirAC->diffuseness_vector[tmp_write_idx_band][b] = diffuseness; + hSpatParamRendCom->diffuseness_vector[tmp_write_idx_band][b] = diffuseness; if ( hodirac_flag ) { if ( idx_sec == 0 ) { - hDirAC->elevation[tmp_write_idx_band][b] = ele; - hDirAC->azimuth[tmp_write_idx_band][b] = azi; - hDirAC->energy_ratio1[tmp_write_idx_band][b] = 0.f; // not in use + hSpatParamRendCom->elevation[tmp_write_idx_band][b] = ele; + hSpatParamRendCom->azimuth[tmp_write_idx_band][b] = azi; + hSpatParamRendCom->energy_ratio1[tmp_write_idx_band][b] = 0.f; // not in use } else { assert( idx_sec == 1 ); - hDirAC->elevation2[tmp_write_idx_band][b] = ele; - hDirAC->azimuth2[tmp_write_idx_band][b] = azi; - hDirAC->energy_ratio2[tmp_write_idx_band][b] = 1.f - diffuseness_sec; + hSpatParamRendCom->elevation2[tmp_write_idx_band][b] = ele; + hSpatParamRendCom->azimuth2[tmp_write_idx_band][b] = azi; + hSpatParamRendCom->energy_ratio2[tmp_write_idx_band][b] = 1.f - diffuseness_sec; } } else { - hDirAC->elevation[tmp_write_idx_band][b] = ele; - hDirAC->azimuth[tmp_write_idx_band][b] = azi; + hSpatParamRendCom->elevation[tmp_write_idx_band][b] = ele; + hSpatParamRendCom->azimuth[tmp_write_idx_band][b] = azi; } } - tmp_write_idx_param_band = ( tmp_write_idx_param_band + 1 ) % hDirAC->dirac_md_buffer_length; + tmp_write_idx_param_band = ( tmp_write_idx_param_band + 1 ) % hSpatParamRendCom->dirac_md_buffer_length; } /* for ( block =...) */ } /* for ( band = ...) */ } /* for ( idx_sec = ...)*/ /* Bands not transmitted -> zeroed*/ - for ( b = band_grouping[band]; b < hDirAC->num_freq_bands; b++ ) + for ( b = band_grouping[band]; b < hSpatParamRendCom->num_freq_bands; b++ ) { - tmp_write_idx_band = hDirAC->dirac_bs_md_write_idx; + tmp_write_idx_band = hSpatParamRendCom->dirac_bs_md_write_idx; for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) { - hDirAC->spreadCoherence[block][b] = 0.0f; - hDirAC->surroundingCoherence[block][b] = 0.0f; - hDirAC->energy_ratio1[block][b] = 0; - - hDirAC->elevation[tmp_write_idx_band][b] = 0; - hDirAC->azimuth[tmp_write_idx_band][b] = 0; - hDirAC->diffuseness_vector[tmp_write_idx_band][b] = 0.f; - hDirAC->spreadCoherence[tmp_write_idx_band][b] = 0.0f; - hDirAC->surroundingCoherence[tmp_write_idx_band][b] = 0.0f; - hDirAC->energy_ratio1[tmp_write_idx_band][b] = 0; - tmp_write_idx_band = ( tmp_write_idx_band + 1 ) % hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->spreadCoherence[block][b] = 0.0f; + hSpatParamRendCom->surroundingCoherence[block][b] = 0.0f; + hSpatParamRendCom->energy_ratio1[block][b] = 0; + + hSpatParamRendCom->elevation[tmp_write_idx_band][b] = 0; + hSpatParamRendCom->azimuth[tmp_write_idx_band][b] = 0; + hSpatParamRendCom->diffuseness_vector[tmp_write_idx_band][b] = 0.f; + hSpatParamRendCom->spreadCoherence[tmp_write_idx_band][b] = 0.0f; + hSpatParamRendCom->surroundingCoherence[tmp_write_idx_band][b] = 0.0f; + hSpatParamRendCom->energy_ratio1[tmp_write_idx_band][b] = 0; + tmp_write_idx_band = ( tmp_write_idx_band + 1 ) % hSpatParamRendCom->dirac_md_buffer_length; } } } /* update buffer write index */ - hDirAC->dirac_bs_md_write_idx = ( hDirAC->dirac_bs_md_write_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_bs_md_write_idx = ( hSpatParamRendCom->dirac_bs_md_write_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % hSpatParamRendCom->dirac_md_buffer_length; return; } @@ -2118,39 +1540,47 @@ void ivas_dirac_dec_set_md_map( { int16_t num_slots_in_subfr; DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; hDirAC = st_ivas->hDirAC; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; #ifdef DEBUGGING assert( hDirAC ); + assert( hSpatParamRendCom ); #endif /* adapt subframes */ - hDirAC->num_slots = nCldfbTs; - hDirAC->slots_rendered = 0; + hSpatParamRendCom->num_slots = nCldfbTs; + hSpatParamRendCom->slots_rendered = 0; num_slots_in_subfr = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; - hDirAC->subframes_rendered = 0; + hSpatParamRendCom->subframes_rendered = 0; - ivas_jbm_dec_get_adapted_subframes( nCldfbTs, hDirAC->subframe_nbslots, &hDirAC->nb_subframes ); + ivas_jbm_dec_get_adapted_subframes( nCldfbTs, hSpatParamRendCom->subframe_nbslots, &hSpatParamRendCom->nb_subframes ); +#ifdef API_5MS + /* copy also to tc buffer */ + /* only for non-combined formats and combinded formats w/o discrete objects */ + if ( st_ivas->ivas_format != MASA_ISM_FORMAT || st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + st_ivas->hTcBuffer->nb_subframes = hSpatParamRendCom->nb_subframes; + mvs2s( hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, hSpatParamRendCom->nb_subframes ); + } +#endif /* set mapping according to dirac_read_idx */ - set_s( hDirAC->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); + set_s( hSpatParamRendCom->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); -#ifdef FIX_470_MASA_JBM_EXT if ( st_ivas->ivas_format == MASA_FORMAT ) { - ivas_jbm_dec_get_md_map_even_spacing( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, num_slots_in_subfr, 0, hDirAC->dirac_md_buffer_length, hDirAC->render_to_md_map ); + ivas_jbm_dec_get_md_map_even_spacing( nCldfbTs, num_slots_in_subfr, 0, hSpatParamRendCom->dirac_md_buffer_length, hSpatParamRendCom->render_to_md_map ); } else if ( hDirAC->hConfig == NULL || hDirAC->hConfig->dec_param_estim == 0 ) -#else - if ( hDirAC->hConfig == NULL || hDirAC->hConfig->dec_param_estim == 0 ) -#endif { - ivas_jbm_dec_get_md_map( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, num_slots_in_subfr, 0, hDirAC->dirac_md_buffer_length, hDirAC->render_to_md_map ); + ivas_jbm_dec_get_md_map( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, num_slots_in_subfr, 0, hSpatParamRendCom->dirac_md_buffer_length, hSpatParamRendCom->render_to_md_map ); } else { - ivas_jbm_dec_get_md_map( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, num_slots_in_subfr, hDirAC->dirac_read_idx, hDirAC->dirac_md_buffer_length, hDirAC->render_to_md_map ); + ivas_jbm_dec_get_md_map( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, num_slots_in_subfr, hSpatParamRendCom->dirac_read_idx, hSpatParamRendCom->dirac_md_buffer_length, hSpatParamRendCom->render_to_md_map ); } if ( hDirAC->hConfig == NULL || hDirAC->hConfig->dec_param_estim == 0 ) @@ -2159,18 +1589,18 @@ void ivas_dirac_dec_set_md_map( int16_t sf_idx, slot_idx, slot_idx_abs; slot_idx_abs = 0; - for ( sf_idx = 0; sf_idx < hDirAC->nb_subframes; sf_idx++ ) + for ( sf_idx = 0; sf_idx < hSpatParamRendCom->nb_subframes; sf_idx++ ) { tmp = 0.0f; - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[sf_idx]; slot_idx++ ) + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[sf_idx]; slot_idx++ ) { - tmp += (float) hDirAC->render_to_md_map[slot_idx_abs]; + tmp += (float) hSpatParamRendCom->render_to_md_map[slot_idx_abs]; slot_idx_abs++; } - hDirAC->render_to_md_map[sf_idx] = ( (int16_t) roundf( tmp / (float) hDirAC->subframe_nbslots[sf_idx] ) + hDirAC->dirac_read_idx ) % hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->render_to_md_map[sf_idx] = ( (int16_t) roundf( tmp / (float) hSpatParamRendCom->subframe_nbslots[sf_idx] ) + hSpatParamRendCom->dirac_read_idx ) % hSpatParamRendCom->dirac_md_buffer_length; } - set_s( &hDirAC->render_to_md_map[hDirAC->nb_subframes], 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME - hDirAC->nb_subframes ); + set_s( &hSpatParamRendCom->render_to_md_map[hSpatParamRendCom->nb_subframes], 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME - hSpatParamRendCom->nb_subframes ); } return; @@ -2185,21 +1615,28 @@ void ivas_dirac_dec_set_md_map( void ivas_dirac_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ + float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t nchan_transport /* i : number of transport channels */ +#ifdef API_5MS + , + const int16_t num_subframes /* i : number of subframes to render */ +#endif ) { int16_t subframe_idx; float *output_f_local[MAX_OUTPUT_CHANNELS]; float cng_td_buffer[L_FRAME16k]; int16_t nchan_out, n, n_samples_sf; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + + hSpatParamRendCom = st_ivas->hSpatParamRendCom; nchan_out = st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe; - n_samples_sf = JBM_CLDFB_SLOTS_IN_SUBFRAME * st_ivas->hDirAC->slot_size; + n_samples_sf = JBM_CLDFB_SLOTS_IN_SUBFRAME * hSpatParamRendCom->slot_size; for ( n = 0; n < nchan_out; n++ ) { - output_f_local[n] = &output_f[n][0]; + output_f_local[n] = output_f[n]; } for ( n = 0; n < nchan_transport; n++ ) @@ -2216,7 +1653,11 @@ void ivas_dirac_dec( ivas_dirac_dec_set_md_map( st_ivas, DEFAULT_JBM_CLDFB_TIMESLOTS ); +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { ivas_dirac_dec_render_sf( st_ivas, output_f_local, nchan_transport, NULL, NULL ); for ( n = 0; n < nchan_out; n++ ) @@ -2227,11 +1668,11 @@ void ivas_dirac_dec( if ( st_ivas->hDirAC->hConfig->dec_param_estim == 1 ) { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % hSpatParamRendCom->dirac_md_buffer_length; } else { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % hSpatParamRendCom->dirac_md_buffer_length; } for ( n = 0; n < nchan_transport; n++ ) @@ -2255,24 +1696,24 @@ void ivas_dirac_dec( *------------------------------------------------------------------------*/ 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 */ + 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 *nSamplesAvailableNext, /* o : number of CLDFB slots still to render */ + float *output_f[] /* o : rendered time signal */ ) { int16_t slots_to_render, first_sf, last_sf, subframe_idx; uint16_t slot_size, n_samples_sf, ch, nchan_intern; - DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; float *output_f_local[MAX_OUTPUT_CHANNELS]; - hDirAC = st_ivas->hDirAC; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; nchan_intern = st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe; #ifdef DEBUGGING - assert( hDirAC ); + assert( hSpatParamRendCom ); #endif for ( ch = 0; ch < nchan_intern; ch++ ) { @@ -2281,14 +1722,14 @@ void ivas_dirac_dec_render( slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ - slots_to_render = min( hDirAC->num_slots - hDirAC->slots_rendered, nSamplesAsked / slot_size ); + slots_to_render = min( hSpatParamRendCom->num_slots - hSpatParamRendCom->slots_rendered, nSamplesAsked / slot_size ); *nSamplesRendered = slots_to_render * slot_size; - first_sf = hDirAC->subframes_rendered; + first_sf = hSpatParamRendCom->subframes_rendered; last_sf = first_sf; while ( slots_to_render > 0 ) { - slots_to_render -= hDirAC->subframe_nbslots[last_sf]; + slots_to_render -= hSpatParamRendCom->subframe_nbslots[last_sf]; last_sf++; } @@ -2298,26 +1739,26 @@ void ivas_dirac_dec_render( for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { ivas_dirac_dec_render_sf( st_ivas, output_f_local, nchan_transport, NULL, NULL ); - n_samples_sf = hDirAC->subframe_nbslots[subframe_idx] * st_ivas->hDirAC->slot_size; + n_samples_sf = hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->slot_size; for ( ch = 0; ch < nchan_intern; ch++ ) { output_f_local[ch] += n_samples_sf; } } - if ( hDirAC->slots_rendered == hDirAC->num_slots ) + if ( hSpatParamRendCom->slots_rendered == hSpatParamRendCom->num_slots ) { if ( st_ivas->hDirAC->hConfig->dec_param_estim == 1 ) { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % hSpatParamRendCom->dirac_md_buffer_length; } else { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % hSpatParamRendCom->dirac_md_buffer_length; } } - *nSamplesAvailable = ( hDirAC->num_slots - hDirAC->slots_rendered ) * slot_size; + *nSamplesAvailableNext = ( hSpatParamRendCom->num_slots - hSpatParamRendCom->slots_rendered ) * slot_size; return; } @@ -2338,6 +1779,7 @@ void ivas_dirac_dec_render_sf( { int16_t i, ch, idx_in, idx_lfe; DIRAC_DEC_HANDLE hDirAC; + DIRAC_REND_HANDLE hDirACRend; float dirEne; float surCohEner; float surCohRatio[CLDFB_NO_CHANNELS_MAX]; @@ -2350,8 +1792,15 @@ void ivas_dirac_dec_render_sf( /*CLDFB: last output channels reserved to LFT for CICPx*/ float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#else float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif + float Cldfb_RealBuffer_Temp[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Temp[2][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; int16_t index, num_freq_bands; /* local copies of azi, ele, diffuseness */ @@ -2363,22 +1812,24 @@ void ivas_dirac_dec_render_sf( float *reference_power, *reference_power_smooth; float *onset_filter, *onset_filter_subframe, *p_onset_filter = NULL; uint16_t coherence_flag; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; push_wmops( "ivas_dirac_dec_render" ); /* Initialize aux buffers */ hDirAC = st_ivas->hDirAC; + hDirACRend = st_ivas->hDirACRend; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; - DirAC_mem = st_ivas->hDirAC->stack_mem; + DirAC_mem = hDirACRend->stack_mem; reference_power = DirAC_mem.reference_power; - reference_power_smooth = DirAC_mem.reference_power + hDirAC->num_freq_bands; + reference_power_smooth = DirAC_mem.reference_power + hSpatParamRendCom->num_freq_bands; onset_filter = DirAC_mem.onset_filter; - onset_filter_subframe = DirAC_mem.onset_filter + hDirAC->num_freq_bands; + onset_filter_subframe = ( DirAC_mem.onset_filter == NULL ) ? NULL : DirAC_mem.onset_filter + hSpatParamRendCom->num_freq_bands; hodirac_flag = ivas_get_hodirac_flag( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ); - - if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT ) + if ( st_ivas->hQMetaData != NULL && st_ivas->ivas_format != SBA_FORMAT && st_ivas->ivas_format != SBA_ISM_FORMAT ) { coherence_flag = st_ivas->hQMetaData->coherence_flag; } @@ -2406,51 +1857,49 @@ void ivas_dirac_dec_render_sf( #endif /* Subframe loop */ - slot_idx_start = hDirAC->slots_rendered; + slot_idx_start = hSpatParamRendCom->slots_rendered; slot_idx_start_cldfb_synth = 0; - subframe_idx = hDirAC->subframes_rendered; + subframe_idx = hSpatParamRendCom->subframes_rendered; if ( hDirAC->hConfig->dec_param_estim == FALSE ) { - md_idx = hDirAC->render_to_md_map[subframe_idx]; + md_idx = hSpatParamRendCom->render_to_md_map[subframe_idx]; } else { - md_idx = hDirAC->render_to_md_map[slot_idx_start]; + md_idx = hSpatParamRendCom->render_to_md_map[slot_idx_start]; } - /* ToDo: Another workaround for self test BE */ /* copy parameters into local buffers*/ if ( hDirAC->hConfig->dec_param_estim == FALSE ) { - mvs2s( hDirAC->azimuth[hDirAC->render_to_md_map[subframe_idx]], azimuth, hDirAC->num_freq_bands ); - mvs2s( hDirAC->elevation[hDirAC->render_to_md_map[subframe_idx]], elevation, hDirAC->num_freq_bands ); - mvr2r( hDirAC->diffuseness_vector[hDirAC->render_to_md_map[subframe_idx]], diffuseness_vector, hDirAC->num_freq_bands ); + mvs2s( hSpatParamRendCom->azimuth[hSpatParamRendCom->render_to_md_map[subframe_idx]], azimuth, hSpatParamRendCom->num_freq_bands ); + mvs2s( hSpatParamRendCom->elevation[hSpatParamRendCom->render_to_md_map[subframe_idx]], elevation, hSpatParamRendCom->num_freq_bands ); + mvr2r( hSpatParamRendCom->diffuseness_vector[hSpatParamRendCom->render_to_md_map[subframe_idx]], diffuseness_vector, hSpatParamRendCom->num_freq_bands ); } else { - set_zero( diffuseness_vector, hDirAC->num_freq_bands ); + set_zero( diffuseness_vector, hSpatParamRendCom->num_freq_bands ); } - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { - set_zero( reference_power_smooth, hDirAC->num_freq_bands ); + set_zero( reference_power_smooth, hSpatParamRendCom->num_freq_bands ); } else { - set_zero( onset_filter_subframe, hDirAC->num_freq_bands ); + set_zero( onset_filter_subframe, hSpatParamRendCom->num_freq_bands ); } if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] ) { p_Rmat = &st_ivas->hCombinedOrientationData->Rmat[subframe_idx][0][0]; - if ( st_ivas->hCombinedOrientationData->shd_rot_max_order == 0 ) { num_freq_bands = hDirAC->band_grouping[hDirAC->hConfig->enc_param_start_band]; if ( hDirAC->hConfig->dec_param_estim == FALSE ) { - rotateAziEle_DirAC( azimuth, elevation, num_freq_bands, hDirAC->num_freq_bands, p_Rmat ); + rotateAziEle_DirAC( azimuth, elevation, num_freq_bands, hSpatParamRendCom->num_freq_bands, p_Rmat ); } } } @@ -2462,56 +1911,59 @@ void ivas_dirac_dec_render_sf( if ( hDirAC->hConfig->dec_param_estim == FALSE ) { /* compute response */ - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { - ivas_dirac_dec_compute_power_factors( hDirAC->num_freq_bands, + ivas_dirac_dec_compute_power_factors( hSpatParamRendCom->num_freq_bands, diffuseness_vector, - hDirAC->h_output_synthesis_psd_params.max_band_decorr, - hDirAC->h_output_synthesis_psd_state.direct_power_factor, - hDirAC->h_output_synthesis_psd_state.diffuse_power_factor ); + hDirACRend->h_output_synthesis_psd_params.max_band_decorr, + hDirACRend->h_output_synthesis_psd_state.direct_power_factor, + hDirACRend->h_output_synthesis_psd_state.diffuse_power_factor ); if ( coherence_flag ) { - for ( i = 0; i < hDirAC->num_freq_bands; i++ ) + for ( i = 0; i < hSpatParamRendCom->num_freq_bands; i++ ) { - dirEne = hDirAC->h_output_synthesis_psd_state.direct_power_factor[i]; - surCohEner = hDirAC->h_output_synthesis_psd_state.diffuse_power_factor[i] * hDirAC->surroundingCoherence[md_idx][i]; - hDirAC->h_output_synthesis_psd_state.diffuse_power_factor[i] -= surCohEner; - hDirAC->h_output_synthesis_psd_state.direct_power_factor[i] += surCohEner; + dirEne = hDirACRend->h_output_synthesis_psd_state.direct_power_factor[i]; + surCohEner = hDirACRend->h_output_synthesis_psd_state.diffuse_power_factor[i] * hSpatParamRendCom->surroundingCoherence[md_idx][i]; + hDirACRend->h_output_synthesis_psd_state.diffuse_power_factor[i] -= surCohEner; + hDirACRend->h_output_synthesis_psd_state.direct_power_factor[i] += surCohEner; surCohRatio[i] = surCohEner / ( 1e-12f + dirEne + surCohEner ); } } else { - set_zero( surCohRatio, hDirAC->num_freq_bands ); + set_zero( surCohRatio, hSpatParamRendCom->num_freq_bands ); } } else { - ivas_dirac_dec_compute_gain_factors( hDirAC->num_freq_bands, - hDirAC->diffuseness_vector[md_idx], - hDirAC->h_output_synthesis_psd_params.max_band_decorr, - hDirAC->h_output_synthesis_psd_state.direct_power_factor, - hDirAC->h_output_synthesis_psd_state.diffuse_power_factor ); + ivas_dirac_dec_compute_gain_factors( hSpatParamRendCom->num_freq_bands, + hSpatParamRendCom->diffuseness_vector[md_idx], + hDirACRend->h_output_synthesis_psd_params.max_band_decorr, + hDirACRend->h_output_synthesis_psd_state.direct_power_factor, + hDirACRend->h_output_synthesis_psd_state.diffuse_power_factor ); if ( coherence_flag ) { - for ( i = 0; i < hDirAC->num_freq_bands; i++ ) + for ( i = 0; i < hSpatParamRendCom->num_freq_bands; i++ ) { - surCohRatio[i] = hDirAC->surroundingCoherence[md_idx][i]; + surCohRatio[i] = hSpatParamRendCom->surroundingCoherence[md_idx][i]; } } else { - set_zero( surCohRatio, hDirAC->num_freq_bands ); + set_zero( surCohRatio, hSpatParamRendCom->num_freq_bands ); } } + if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order == 1 ) { - ivas_dirac_dec_compute_directional_responses( hDirAC, + ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom, + hDirACRend, st_ivas->hVBAPdata, st_ivas->hMasa, + st_ivas->hMasaIsmData, azimuth, elevation, md_idx, @@ -2522,9 +1974,11 @@ void ivas_dirac_dec_render_sf( } else { - ivas_dirac_dec_compute_directional_responses( hDirAC, + ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom, + hDirACRend, st_ivas->hVBAPdata, st_ivas->hMasa, + st_ivas->hMasaIsmData, azimuth, elevation, md_idx, @@ -2535,24 +1989,54 @@ void ivas_dirac_dec_render_sf( } } - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[subframe_idx]; slot_idx++ ) + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && nchan_transport == 2 ) + { + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + index_slot = slot_idx_start + slot_idx; + + /* CLDFB Analysis*/ + for ( ch = 0; ch < nchan_transport; ch++ ) + { + cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[hDirACRend->sba_map_tc[ch]][hSpatParamRendCom->num_freq_bands * index_slot] ), + Cldfb_RealBuffer_Temp[ch][slot_idx], + Cldfb_ImagBuffer_Temp[ch][slot_idx], + hSpatParamRendCom->num_freq_bands, + st_ivas->cldfbAnaDec[ch] ); + } + } + + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) + { + ivas_omasa_preProcessStereoTransportsForMovedObjects( st_ivas, Cldfb_RealBuffer_Temp, Cldfb_ImagBuffer_Temp, hSpatParamRendCom->num_freq_bands, subframe_idx ); + } + } + + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) { index_slot = slot_idx_start + slot_idx; if ( hDirAC->hConfig->dec_param_estim == TRUE ) { - md_idx = hDirAC->render_to_md_map[index_slot]; + md_idx = hSpatParamRendCom->render_to_md_map[index_slot]; } else { - md_idx = hDirAC->render_to_md_map[subframe_idx]; + md_idx = hSpatParamRendCom->render_to_md_map[subframe_idx]; } - - if ( st_ivas->ivas_format == SBA_FORMAT ) + if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + for ( ch = 0; ch < nchan_transport; ch++ ) + { + mvr2r( pppQMfFrame_ts_re[ch][slot_idx], Cldfb_RealBuffer[ch][0], hSpatParamRendCom->num_freq_bands ); + mvr2r( pppQMfFrame_ts_im[ch][slot_idx], Cldfb_ImagBuffer[ch][0], hSpatParamRendCom->num_freq_bands ); + } + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && nchan_transport == 2 ) { for ( ch = 0; ch < nchan_transport; ch++ ) { - mvr2r( pppQMfFrame_ts_re[ch][slot_idx], Cldfb_RealBuffer[ch][0], hDirAC->num_freq_bands ); - mvr2r( pppQMfFrame_ts_im[ch][slot_idx], Cldfb_ImagBuffer[ch][0], hDirAC->num_freq_bands ); + mvr2r( Cldfb_RealBuffer_Temp[ch][slot_idx], Cldfb_RealBuffer[ch][0], hSpatParamRendCom->num_freq_bands ); + mvr2r( Cldfb_ImagBuffer_Temp[ch][slot_idx], Cldfb_ImagBuffer[ch][0], hSpatParamRendCom->num_freq_bands ); } } else @@ -2560,16 +2044,16 @@ void ivas_dirac_dec_render_sf( /* CLDFB Analysis*/ for ( ch = 0; ch < nchan_transport; ch++ ) { - cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[hDirAC->sba_map_tc[ch]][hDirAC->num_freq_bands * index_slot] ), + cldfbAnalysis_ts( &( st_ivas->hTcBuffer->tc[hDirACRend->sba_map_tc[ch]][hSpatParamRendCom->num_freq_bands * index_slot] ), Cldfb_RealBuffer[ch][0], Cldfb_ImagBuffer[ch][0], - hDirAC->num_freq_bands, + hSpatParamRendCom->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); } } /* CNG in DirAC, extra CLDFB ana for CNA*/ - if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && st_ivas->ivas_format != SBA_FORMAT ) + if ( st_ivas->nchan_transport == 1 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag && !( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) ) { Decoder_State *st = st_ivas->hSCE[0]->hCoreCoder[0]; @@ -2584,7 +2068,7 @@ void ivas_dirac_dec_render_sf( } /* LFE synthesis */ - if ( st_ivas->mc_mode == MC_MODE_MCMASA && !hDirAC->hOutSetup.separateChannelEnabled && !( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM && hDirAC->hOutSetup.num_lfe == 0 ) ) + if ( st_ivas->mc_mode == MC_MODE_MCMASA && !hDirACRend->hOutSetup.separateChannelEnabled && !( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM && hDirACRend->hOutSetup.num_lfe == 0 ) ) { ivas_lfe_synth_with_cldfb( st_ivas->hMasa->hMasaLfeSynth, Cldfb_RealBuffer, Cldfb_ImagBuffer, @@ -2598,35 +2082,35 @@ void ivas_dirac_dec_render_sf( * protoype signal computation *-----------------------------------------------------------------*/ - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[subframe_idx] && st_ivas->hCombinedOrientationData->shd_rot_max_order == 0 ) { protoSignalComputation_shd( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f, - hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f, + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f, + hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f, reference_power, slot_idx, nchan_transport, - hDirAC->num_outputs_diff, - hDirAC->num_freq_bands, + hDirACRend->num_outputs_diff, + hSpatParamRendCom->num_freq_bands, p_Rmat ); } else { protoSignalComputation_shd( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f, - hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f, + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f, + hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f, reference_power, slot_idx, nchan_transport, - hDirAC->num_outputs_diff, - hDirAC->num_freq_bands, + hDirACRend->num_outputs_diff, + hSpatParamRendCom->num_freq_bands, 0 ); } } - else if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + else if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { - protoSignalComputation2( Cldfb_RealBuffer, Cldfb_ImagBuffer, hDirAC->proto_frame_f, - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f, - reference_power, hDirAC->h_output_synthesis_psd_state.proto_power_smooth, - 0, slot_idx, hDirAC->num_freq_bands, hDirAC->masa_stereo_type_detect ); + protoSignalComputation2( Cldfb_RealBuffer, Cldfb_ImagBuffer, hDirACRend->proto_frame_f, + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f, + reference_power, hDirACRend->h_output_synthesis_psd_state.proto_power_smooth, + 0, slot_idx, hSpatParamRendCom->num_freq_bands, hDirACRend->masa_stereo_type_detect ); } else { @@ -2637,36 +2121,36 @@ void ivas_dirac_dec_render_sf( case 6: case 4: protoSignalComputation4( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC->proto_frame_f, - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f, + hDirACRend->proto_frame_f, + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f, reference_power, - hDirAC->h_output_synthesis_psd_state.proto_power_smooth, - slot_idx, hDirAC->num_outputs_diff, - hDirAC->num_freq_bands, - hDirAC->hoa_decoder, + hDirACRend->h_output_synthesis_psd_state.proto_power_smooth, + slot_idx, hDirACRend->num_outputs_diff, + hSpatParamRendCom->num_freq_bands, + hDirACRend->hoa_decoder, nchan_transport, - hDirAC->sba_map_tc ); + hDirACRend->sba_map_tc ); break; case 2: protoSignalComputation2( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC->proto_frame_f, - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f, + hDirACRend->proto_frame_f, + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f, reference_power, - hDirAC->h_output_synthesis_psd_state.proto_power_smooth, - hDirAC->hOutSetup.is_loudspeaker_setup, + hDirACRend->h_output_synthesis_psd_state.proto_power_smooth, + hDirACRend->hOutSetup.is_loudspeaker_setup, slot_idx, - hDirAC->num_freq_bands, - hDirAC->masa_stereo_type_detect ); + hSpatParamRendCom->num_freq_bands, + hDirACRend->masa_stereo_type_detect ); break; case 1: protoSignalComputation1( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC->proto_frame_f, - hDirAC->h_output_synthesis_psd_state.proto_direct_buffer_f, + hDirACRend->proto_frame_f, + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f, reference_power, - hDirAC->h_output_synthesis_psd_state.proto_power_smooth, + hDirACRend->h_output_synthesis_psd_state.proto_power_smooth, slot_idx, - hDirAC->num_protos_diff, - hDirAC->num_freq_bands ); + hDirACRend->num_protos_diff, + hSpatParamRendCom->num_freq_bands ); break; default: return; @@ -2680,37 +2164,37 @@ void ivas_dirac_dec_render_sf( if ( hDirAC->hConfig->dec_param_estim == TRUE ) { - mvs2s( &hDirAC->azimuth[md_idx][hDirAC->hConfig->enc_param_start_band], &azimuth[hDirAC->hConfig->enc_param_start_band], hDirAC->num_freq_bands - hDirAC->hConfig->enc_param_start_band ); - mvs2s( &hDirAC->elevation[md_idx][hDirAC->hConfig->enc_param_start_band], &elevation[hDirAC->hConfig->enc_param_start_band], hDirAC->num_freq_bands - hDirAC->hConfig->enc_param_start_band ); + mvs2s( &hSpatParamRendCom->azimuth[md_idx][hDirAC->hConfig->enc_param_start_band], &azimuth[hDirAC->hConfig->enc_param_start_band], hSpatParamRendCom->num_freq_bands - hDirAC->hConfig->enc_param_start_band ); + mvs2s( &hSpatParamRendCom->elevation[md_idx][hDirAC->hConfig->enc_param_start_band], &elevation[hDirAC->hConfig->enc_param_start_band], hSpatParamRendCom->num_freq_bands - hDirAC->hConfig->enc_param_start_band ); if ( ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) && st_ivas->hCombinedOrientationData->shd_rot_max_order == 0 ) { num_freq_bands = hDirAC->band_grouping[hDirAC->hConfig->enc_param_start_band]; - rotateAziEle_DirAC( azimuth, elevation, num_freq_bands, hDirAC->num_freq_bands, p_Rmat ); + rotateAziEle_DirAC( azimuth, elevation, num_freq_bands, hSpatParamRendCom->num_freq_bands, p_Rmat ); } - hDirAC->index_buffer_intensity = ( hDirAC->index_buffer_intensity % DIRAC_NO_COL_AVG_DIFF ) + 1; /* averaging_length = 32 */ + hDirACRend->index_buffer_intensity = ( hDirACRend->index_buffer_intensity % DIRAC_NO_COL_AVG_DIFF ) + 1; /* averaging_length = 32 */ - index = hDirAC->index_buffer_intensity; + index = hDirACRend->index_buffer_intensity; num_freq_bands = hDirAC->band_grouping[hDirAC->hConfig->enc_param_start_band]; computeIntensityVector_dec( Cldfb_RealBuffer, Cldfb_ImagBuffer, num_freq_bands, - hDirAC->buffer_intensity_real[0][index - 1], - hDirAC->buffer_intensity_real[1][index - 1], - hDirAC->buffer_intensity_real[2][index - 1] ); + hDirACRend->buffer_intensity_real[0][index - 1], + hDirACRend->buffer_intensity_real[1][index - 1], + hDirACRend->buffer_intensity_real[2][index - 1] ); - computeDirectionAngles( hDirAC->buffer_intensity_real[0][index - 1], - hDirAC->buffer_intensity_real[1][index - 1], - hDirAC->buffer_intensity_real[2][index - 1], + computeDirectionAngles( hDirACRend->buffer_intensity_real[0][index - 1], + hDirACRend->buffer_intensity_real[1][index - 1], + hDirACRend->buffer_intensity_real[2][index - 1], num_freq_bands, azimuth, elevation ); - mvr2r( reference_power, &( hDirAC->buffer_energy[( index - 1 ) * num_freq_bands] ), num_freq_bands ); + mvr2r( reference_power, &( hDirACRend->buffer_energy[( index - 1 ) * num_freq_bands] ), num_freq_bands ); - computeDiffuseness( hDirAC->buffer_intensity_real, hDirAC->buffer_energy, num_freq_bands, hDirAC->diffuseness_vector[md_idx] ); + computeDiffuseness( hDirACRend->buffer_intensity_real, hDirACRend->buffer_energy, num_freq_bands, hSpatParamRendCom->diffuseness_vector[md_idx] ); } #ifdef DEBUG_MODE_DIRAC @@ -2726,7 +2210,7 @@ void ivas_dirac_dec_render_sf( fp_referencePower = fopen( "./res/dbg_reference_power_C_dec.bin", "wb" ); - for ( i = 0; i < hDirAC->num_freq_bands; i++ ) + for ( i = 0; i < hSpatParamRendCom->num_freq_bands; i++ ) { float radius_length; float dv[3]; @@ -2740,7 +2224,7 @@ void ivas_dirac_dec_render_sf( fwrite( dv, sizeof( float ), 3, fp_direction_vector ); fwrite( &( hDirAC->diffuseness_vector[0][i] ), sizeof( float ), 1, fp_diffuseness ); - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { reference_power[i] = Cldfb_RealBuffer[0][0][i] * Cldfb_RealBuffer[0][0][i] + Cldfb_ImagBuffer[0][0][i] * Cldfb_ImagBuffer[0][0][i]; } @@ -2765,58 +2249,58 @@ void ivas_dirac_dec_render_sf( * frequency domain decorrelation *-----------------------------------------------------------------*/ - if ( hDirAC->proto_signal_decorr_on == 1 ) + if ( hDirACRend->proto_signal_decorr_on == 1 ) { /* decorrelate prototype frame */ - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - ivas_dirac_dec_decorr_process( hDirAC->num_freq_bands, - hDirAC->num_outputs_diff, - hDirAC->num_protos_diff, - hDirAC->synthesisConf, + ivas_dirac_dec_decorr_process( hSpatParamRendCom->num_freq_bands, + hDirACRend->num_outputs_diff, + hDirACRend->num_protos_diff, + hDirACRend->synthesisConf, nchan_transport, - hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f + slot_idx * 2 * hDirAC->num_freq_bands * hDirAC->num_outputs_diff, - hDirAC->num_protos_diff, - hDirAC->proto_index_diff, - hDirAC->h_output_synthesis_psd_state.proto_diffuse_buffer_f + slot_idx * 2 * hDirAC->num_freq_bands * hDirAC->num_outputs_diff + 2 * hDirAC->num_freq_bands * min( 4, nchan_transport ), + hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f + slot_idx * 2 * hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_diff, + hDirACRend->num_protos_diff, + hDirACRend->proto_index_diff, + hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f + slot_idx * 2 * hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_diff + 2 * hSpatParamRendCom->num_freq_bands * min( 4, nchan_transport ), onset_filter, - hDirAC->h_freq_domain_decorr_ap_params, - hDirAC->h_freq_domain_decorr_ap_state ); + hDirACRend->h_freq_domain_decorr_ap_params, + hDirACRend->h_freq_domain_decorr_ap_state ); - v_multc( onset_filter, 0.25f, onset_filter, hDirAC->num_freq_bands ); - v_add( onset_filter, onset_filter_subframe, onset_filter_subframe, hDirAC->num_freq_bands ); + v_multc( onset_filter, 0.25f, onset_filter, hSpatParamRendCom->num_freq_bands ); + v_add( onset_filter, onset_filter_subframe, onset_filter_subframe, hSpatParamRendCom->num_freq_bands ); p_onset_filter = onset_filter_subframe; } else { - ivas_dirac_dec_decorr_process( hDirAC->num_freq_bands, - hDirAC->num_outputs_diff, - hDirAC->num_protos_diff, - hDirAC->synthesisConf, + ivas_dirac_dec_decorr_process( hSpatParamRendCom->num_freq_bands, + hDirACRend->num_outputs_diff, + hDirACRend->num_protos_diff, + hDirACRend->synthesisConf, nchan_transport, - hDirAC->proto_frame_f, - hDirAC->num_protos_diff, - hDirAC->proto_index_diff, + hDirACRend->proto_frame_f, + hDirACRend->num_protos_diff, + hDirACRend->proto_index_diff, DirAC_mem.frame_dec_f, onset_filter, - hDirAC->h_freq_domain_decorr_ap_params, - hDirAC->h_freq_domain_decorr_ap_state ); + hDirACRend->h_freq_domain_decorr_ap_params, + hDirACRend->h_freq_domain_decorr_ap_state ); - hDirAC->proto_frame_dec_f = DirAC_mem.frame_dec_f; + hDirACRend->proto_frame_dec_f = DirAC_mem.frame_dec_f; p_onset_filter = onset_filter; } } else { - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - set_f( onset_filter_subframe, 1.f, hDirAC->num_freq_bands ); + set_f( onset_filter_subframe, 1.f, hSpatParamRendCom->num_freq_bands ); p_onset_filter = onset_filter_subframe; } else { /* no frequency domain decorrelation: use prototype frame */ - hDirAC->proto_frame_dec_f = hDirAC->proto_frame_f; + hDirACRend->proto_frame_dec_f = hDirACRend->proto_frame_f; p_onset_filter = NULL; } } @@ -2825,10 +2309,10 @@ void ivas_dirac_dec_render_sf( * output synthesis *-----------------------------------------------------------------*/ - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS || hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS || hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) { /*Compute diffuse prototypes*/ - ivas_dirac_dec_compute_diffuse_proto( hDirAC, slot_idx ); + ivas_dirac_dec_compute_diffuse_proto( hDirACRend, hSpatParamRendCom->num_freq_bands, slot_idx ); } /*Compute PSDs*/ @@ -2838,15 +2322,17 @@ void ivas_dirac_dec_render_sf( p_onset_filter, azimuth, elevation, - hDirAC->diffuseness_vector[md_idx], - hDirAC, + hSpatParamRendCom->diffuseness_vector[md_idx], + hSpatParamRendCom, + hDirACRend, st_ivas->hCombinedOrientationData->shd_rot_max_order, p_Rmat, st_ivas->hVBAPdata, - hDirAC->hOutSetup, + hDirACRend->hOutSetup, nchan_transport, md_idx, - hodirac_flag ); + hodirac_flag, + hDirAC->hConfig->dec_param_estim ); } else { @@ -2854,42 +2340,46 @@ void ivas_dirac_dec_render_sf( p_onset_filter, azimuth, elevation, - hDirAC->diffuseness_vector[md_idx], - hDirAC, + hSpatParamRendCom->diffuseness_vector[md_idx], + hSpatParamRendCom, + hDirACRend, 0, 0, st_ivas->hVBAPdata, - hDirAC->hOutSetup, + hDirACRend->hOutSetup, nchan_transport, md_idx, - hodirac_flag ); + hodirac_flag, + hDirAC->hConfig->dec_param_estim ); } if ( hDirAC->hConfig->dec_param_estim ) { - float fac = 1.0f / (float) hDirAC->subframe_nbslots[subframe_idx]; - v_multc_acc( hDirAC->diffuseness_vector[md_idx], fac, diffuseness_vector, hDirAC->num_freq_bands ); + float fac = 1.0f / (float) hSpatParamRendCom->subframe_nbslots[subframe_idx]; + v_multc_acc( hSpatParamRendCom->diffuseness_vector[md_idx], fac, diffuseness_vector, hSpatParamRendCom->num_freq_bands ); } - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { - v_add( reference_power, reference_power_smooth, reference_power_smooth, hDirAC->num_freq_bands ); + v_add( reference_power, reference_power_smooth, reference_power_smooth, hSpatParamRendCom->num_freq_bands ); } } - ivas_dirac_dec_output_synthesis_get_interpolator( &hDirAC->h_output_synthesis_psd_params, hDirAC->subframe_nbslots[subframe_idx] ); + ivas_dirac_dec_output_synthesis_get_interpolator( &hDirACRend->h_output_synthesis_psd_params, hSpatParamRendCom->subframe_nbslots[subframe_idx] ); - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC, + hSpatParamRendCom, + hDirACRend, nchan_transport, - hDirAC->subframe_nbslots[subframe_idx], + hSpatParamRendCom->subframe_nbslots[subframe_idx], p_onset_filter, diffuseness_vector, - hodirac_flag ); + hodirac_flag, + hDirAC->hConfig->dec_param_estim ); } else { @@ -2902,14 +2392,15 @@ void ivas_dirac_dec_render_sf( qualityBasedSmFactor *= qualityBasedSmFactor; } - ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( Cldfb_RealBuffer, Cldfb_ImagBuffer, - hDirAC, - hDirAC->subframe_nbslots[subframe_idx], + hSpatParamRendCom, + hDirACRend, + hSpatParamRendCom->subframe_nbslots[subframe_idx], diffuseness_vector, reference_power_smooth, - qualityBasedSmFactor ); + qualityBasedSmFactor, + hDirAC->hConfig->enc_param_start_band ); } /*-----------------------------------------------------------------* @@ -2920,15 +2411,48 @@ void ivas_dirac_dec_render_sf( if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + for ( ch = 0; ch < st_ivas->hBinRenderer->nInChannels; ch++ ) + { + mvr2r( Cldfb_RealBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_idx_start + slot_idx], hSpatParamRendCom->num_freq_bands ); + mvr2r( Cldfb_ImagBuffer[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][slot_idx_start + slot_idx], hSpatParamRendCom->num_freq_bands ); + } + } + st_ivas->hSplitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + } + } +#endif + /* Perform binaural rendering */ ivas_binRenderer( st_ivas->hBinRenderer, - st_ivas->hCombinedOrientationData, - subframe_idx, - hDirAC->subframe_nbslots[subframe_idx], - Cldfb_RealBuffer_Binaural, - Cldfb_ImagBuffer_Binaural, - Cldfb_RealBuffer, - Cldfb_ImagBuffer ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, +#endif + st_ivas->hCombinedOrientationData, subframe_idx, hSpatParamRendCom->subframe_nbslots[subframe_idx], Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + int16_t pos_idx; + for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) + { + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_idx_start + slot_idx], hSpatParamRendCom->num_freq_bands ); + mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_idx_start + slot_idx], hSpatParamRendCom->num_freq_bands ); + } + } + } + } +#endif /* Inverse CLDFB*/ for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) @@ -2937,27 +2461,28 @@ void ivas_dirac_dec_render_sf( float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES]; float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES]; - for ( i = 0; i < hDirAC->subframe_nbslots[subframe_idx]; i++ ) + for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + RealBuffer[i] = Cldfb_RealBuffer_Binaural[0][ch][i]; + ImagBuffer[i] = Cldfb_ImagBuffer_Binaural[0][ch][i]; +#else RealBuffer[i] = Cldfb_RealBuffer_Binaural[ch][i]; ImagBuffer[i] = Cldfb_ImagBuffer_Binaural[ch][i]; +#endif } - cldfbSynthesis( RealBuffer, - ImagBuffer, - &( output_f[ch][index_slot * hDirAC->num_freq_bands] ), - hDirAC->num_freq_bands * hDirAC->subframe_nbslots[subframe_idx], - st_ivas->cldfbSynDec[ch] ); + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * hSpatParamRendCom->num_freq_bands] ), hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[ch] ); } } - else if ( st_ivas->ivas_format == SBA_FORMAT ) + else if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { - for ( ch = 0; ch < hDirAC->hOutSetup.nchan_out_woLFE; ch++ ) + for ( ch = 0; ch < hDirACRend->hOutSetup.nchan_out_woLFE; ch++ ) { - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[subframe_idx]; slot_idx++ ) + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) { - mvr2r( Cldfb_RealBuffer[ch][slot_idx], pppQMfFrame_ts_re[ch][slot_idx], hDirAC->num_freq_bands ); - mvr2r( Cldfb_ImagBuffer[ch][slot_idx], pppQMfFrame_ts_im[ch][slot_idx], hDirAC->num_freq_bands ); + mvr2r( Cldfb_RealBuffer[ch][slot_idx], pppQMfFrame_ts_re[ch][slot_idx], hSpatParamRendCom->num_freq_bands ); + mvr2r( Cldfb_ImagBuffer[ch][slot_idx], pppQMfFrame_ts_im[ch][slot_idx], hSpatParamRendCom->num_freq_bands ); } } } @@ -2970,23 +2495,23 @@ void ivas_dirac_dec_render_sf( idx_in = 0; idx_lfe = 0; - outchannels = hDirAC->hOutSetup.nchan_out_woLFE + hDirAC->hOutSetup.num_lfe; - if ( hDirAC->hOutSetup.separateChannelEnabled && ( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_5_1 || - hDirAC->hOutSetup.output_config == AUDIO_CONFIG_7_1 || - hDirAC->hOutSetup.output_config == AUDIO_CONFIG_5_1_2 || - hDirAC->hOutSetup.output_config == AUDIO_CONFIG_5_1_4 || - hDirAC->hOutSetup.output_config == AUDIO_CONFIG_7_1_4 || - ( hDirAC->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM && st_ivas->hLsSetupCustom->separate_ch_found ) ) ) + outchannels = hDirACRend->hOutSetup.nchan_out_woLFE + hDirACRend->hOutSetup.num_lfe; + if ( hDirACRend->hOutSetup.separateChannelEnabled && ( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_5_1 || + hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_7_1 || + hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_5_1_2 || + hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_5_1_4 || + hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_7_1_4 || + ( hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM && st_ivas->hLsSetupCustom->separate_ch_found ) ) ) { outchannels++; } - if ( hDirAC->hOutSetup.separateChannelEnabled && hDirAC->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM ) + if ( hDirACRend->hOutSetup.separateChannelEnabled && hDirACRend->hOutSetup.output_config == AUDIO_CONFIG_LS_CUSTOM ) { float tmp_separated[L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; float tmp_lfe[L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; - const int16_t subframe_start_sample = index_slot * hDirAC->num_freq_bands; - const int16_t num_samples_subframe = hDirAC->num_freq_bands * hDirAC->subframe_nbslots[subframe_idx]; + const int16_t subframe_start_sample = index_slot * hSpatParamRendCom->num_freq_bands; + const int16_t num_samples_subframe = hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->subframe_nbslots[subframe_idx]; /* Move the separated and the LFE channels to temporary variables as spatial synthesis may overwrite current channels */ mvr2r( &( output_f[st_ivas->hOutSetup.separateChannelIndex][subframe_start_sample] ), tmp_separated, num_samples_subframe ); @@ -2994,17 +2519,17 @@ void ivas_dirac_dec_render_sf( for ( ch = 0; ch < outchannels; ch++ ) { - if ( ( hDirAC->hOutSetup.num_lfe > 0 ) && ( hDirAC->hOutSetup.index_lfe[idx_lfe] == ch ) ) + if ( ( hDirACRend->hOutSetup.num_lfe > 0 ) && ( hDirACRend->hOutSetup.index_lfe[idx_lfe] == ch ) ) { /* Move the LFE channel to the correct place */ mvr2r( tmp_lfe, &( output_f[ch][subframe_start_sample] ), num_samples_subframe ); - if ( idx_lfe < ( hDirAC->hOutSetup.num_lfe - 1 ) ) + if ( idx_lfe < ( hDirACRend->hOutSetup.num_lfe - 1 ) ) { idx_lfe++; } } - else if ( ( st_ivas->hLsSetupCustom->separate_ch_found ) && ( hDirAC->hOutSetup.separateChannelIndex == ch ) ) + else if ( ( st_ivas->hLsSetupCustom->separate_ch_found ) && ( hDirACRend->hOutSetup.separateChannelIndex == ch ) ) { /* Move the separated channel to the correct place. Thus, the separated channel is * combined with the synthesized channels here when there is a matching channel. */ @@ -3013,7 +2538,7 @@ void ivas_dirac_dec_render_sf( else { /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */ - for ( i = 0; i < hDirAC->subframe_nbslots[subframe_idx]; i++ ) + for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { RealBuffer[i] = Cldfb_RealBuffer[idx_in][i]; ImagBuffer[i] = Cldfb_ImagBuffer[idx_in][i]; @@ -3035,32 +2560,32 @@ void ivas_dirac_dec_render_sf( { for ( ch = 0; ch < outchannels; ch++ ) { - if ( ( hDirAC->hOutSetup.num_lfe > 0 ) && ( hDirAC->hOutSetup.index_lfe[idx_lfe] == ch ) ) + if ( ( hDirACRend->hOutSetup.num_lfe > 0 ) && ( hDirACRend->hOutSetup.index_lfe[idx_lfe] == ch ) ) { - if ( st_ivas->mc_mode == MC_MODE_MCMASA && !hDirAC->hOutSetup.separateChannelEnabled ) + if ( st_ivas->mc_mode == MC_MODE_MCMASA && !hDirACRend->hOutSetup.separateChannelEnabled ) { - for ( i = 0; i < hDirAC->subframe_nbslots[subframe_idx]; i++ ) + for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { RealBuffer[i] = Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS - 1][i]; ImagBuffer[i] = Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS - 1][i]; } - cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * hDirAC->num_freq_bands] ), hDirAC->num_freq_bands * hDirAC->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[hDirAC->hOutSetup.nchan_out_woLFE + idx_lfe] ); + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * hSpatParamRendCom->num_freq_bands] ), hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[hDirACRend->hOutSetup.nchan_out_woLFE + idx_lfe] ); } - else if ( st_ivas->mc_mode == MC_MODE_MCMASA && hDirAC->hOutSetup.separateChannelEnabled ) + else if ( st_ivas->mc_mode == MC_MODE_MCMASA && hDirACRend->hOutSetup.separateChannelEnabled ) { /* LFE has been synthesized in the time domain, do nothing. */ } else { - set_zero( &( output_f[ch][index_slot * hDirAC->num_freq_bands] ), hDirAC->subframe_nbslots[subframe_idx] * hDirAC->num_freq_bands ); + set_zero( &( output_f[ch][index_slot * hSpatParamRendCom->num_freq_bands] ), hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->num_freq_bands ); } - if ( idx_lfe < ( hDirAC->hOutSetup.num_lfe - 1 ) ) + if ( idx_lfe < ( hDirACRend->hOutSetup.num_lfe - 1 ) ) { idx_lfe++; } } - else if ( ( hDirAC->hOutSetup.separateChannelEnabled ) && ( hDirAC->hOutSetup.separateChannelIndex == ch ) ) + else if ( ( hDirACRend->hOutSetup.separateChannelEnabled ) && ( hDirACRend->hOutSetup.separateChannelIndex == ch ) ) { /* The separated channel is already set to output_f[hOutSetup.separateChannelIndex]. Thus, the separated * channel is combined with the synthesized channels here. */ @@ -3068,1169 +2593,19 @@ void ivas_dirac_dec_render_sf( else { /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */ - for ( i = 0; i < hDirAC->subframe_nbslots[subframe_idx]; i++ ) + for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { RealBuffer[i] = Cldfb_RealBuffer[idx_in][i]; ImagBuffer[i] = Cldfb_ImagBuffer[idx_in][i]; } - cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * hDirAC->num_freq_bands] ), hDirAC->num_freq_bands * hDirAC->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[idx_in] ); + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * hSpatParamRendCom->num_freq_bands] ), hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[idx_in] ); idx_in++; } } } } - hDirAC->slots_rendered += hDirAC->subframe_nbslots[subframe_idx]; - hDirAC->subframes_rendered++; - - pop_wmops(); - - return; -} - - -/*------------------------------------------------------------------------- - * compute_hoa_encoder_mtx() - * - * - *------------------------------------------------------------------------*/ - -void compute_hoa_encoder_mtx( - const float *azimuth, - const float *elevation, - float *response, - const int16_t num_responses, - const int16_t ambisonics_order ) -{ - int16_t k, num_sh; - - num_sh = ivas_sba_get_nchan( ambisonics_order, 0 ); - - for ( k = 0; k < num_responses; k++ ) - { - ivas_dirac_dec_get_response( (const int16_t) azimuth[k], (const int16_t) elevation[k], &response[k * num_sh], ambisonics_order ); - } - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_dirac_dec_get_frequency_axis() - * - * DirAC decoding initialization - *------------------------------------------------------------------------*/ - -void ivas_dirac_dec_get_frequency_axis( - float *frequency_axis, - const int32_t output_Fs, - const int16_t num_freq_bands ) -{ - int16_t k; - float const_part; - - /* calc cldfb frequency axis */ - const_part = (float) output_Fs / ( 2.0f * (float) num_freq_bands ); - for ( k = 0; k < num_freq_bands; ++k ) - { - frequency_axis[k] = ( (float) k + 0.5f ) * const_part; - } - - return; -} - - -/*------------------------------------------------------------------------- - * Local functions - *-------------------------------------------------------------------------*/ - -static void initDiffuseResponses( - float *diffuse_response_function, - const int16_t num_channels, - AUDIO_CONFIG output_config, - IVAS_OUTPUT_SETUP hOutSetup, - const int16_t ambisonics_order, - const IVAS_FORMAT ivas_format, - int16_t *num_ele_spk_no_diffuse_rendering, - AUDIO_CONFIG transport_config ) -{ - int16_t i, l, k, idx, num_horizontal_speakers; - *num_ele_spk_no_diffuse_rendering = 0; - - if ( output_config == AUDIO_CONFIG_MONO ) - { - diffuse_response_function[0] = 1.0f; - diffuse_response_function[1] = inv_sqrt( 3.0f ); - } - else if ( !( output_config == AUDIO_CONFIG_FOA || output_config == AUDIO_CONFIG_HOA2 || output_config == AUDIO_CONFIG_HOA3 ) ) - { - /* set diffuse response function */ - if ( ivas_format == MC_FORMAT && ( transport_config == AUDIO_CONFIG_5_1 || transport_config == AUDIO_CONFIG_7_1 ) && output_config == AUDIO_CONFIG_5_1_4 ) - { - num_horizontal_speakers = num_channels - NUM_ELEVATED_SPEAKERS; - - mvr2r( diffuse_response_CICP6, diffuse_response_function, num_horizontal_speakers ); - set_zero( &diffuse_response_function[num_horizontal_speakers], NUM_ELEVATED_SPEAKERS ); - *num_ele_spk_no_diffuse_rendering = NUM_ELEVATED_SPEAKERS; - } - else if ( ivas_format == MC_FORMAT && ( transport_config == AUDIO_CONFIG_5_1 || transport_config == AUDIO_CONFIG_7_1 ) && output_config == AUDIO_CONFIG_7_1_4 ) - { - num_horizontal_speakers = num_channels - NUM_ELEVATED_SPEAKERS; - - set_f( diffuse_response_function, sqrtf( 1.f / ( (float) num_horizontal_speakers ) ), num_horizontal_speakers ); - set_zero( &diffuse_response_function[num_horizontal_speakers], NUM_ELEVATED_SPEAKERS ); - *num_ele_spk_no_diffuse_rendering = NUM_ELEVATED_SPEAKERS; - } - else if ( ( ivas_format == MASA_FORMAT || ivas_format == MC_FORMAT ) && output_config == AUDIO_CONFIG_5_1 && num_channels == 5 ) - { - mvr2r( diffuse_response_CICP6, diffuse_response_function, num_channels ); - } - else if ( ( ivas_format == MASA_FORMAT || ivas_format == MC_FORMAT ) && output_config == AUDIO_CONFIG_5_1_2 && num_channels == 7 ) - { - mvr2r( diffuse_response_CICP14, diffuse_response_function, num_channels ); - } - else if ( ( ivas_format == MASA_FORMAT || ivas_format == MC_FORMAT ) && ( output_config == AUDIO_CONFIG_5_1_4 ) && ( num_channels == 9 ) ) - { - mvr2r( diffuse_response_CICP16, diffuse_response_function, num_channels ); - } - else if ( ( ivas_format == MASA_FORMAT || ivas_format == MC_FORMAT ) && ( output_config == AUDIO_CONFIG_LS_CUSTOM ) ) - { - if ( transport_config == AUDIO_CONFIG_5_1 || transport_config == AUDIO_CONFIG_7_1 ) - { - /* Detect loudspeakers with elevation */ - for ( i = 0, num_horizontal_speakers = 0; i < num_channels; i++ ) - { - if ( fabsf( hOutSetup.ls_elevation[i] ) <= 5.f ) - { - num_horizontal_speakers++; - diffuse_response_function[i] = 1.f; - } - else - { - *num_ele_spk_no_diffuse_rendering += 1; - diffuse_response_function[i] = 0.f; - } - } - /* Diffuse only to horizontal plane if enough loudspeakers */ - if ( num_horizontal_speakers > 2 ) - { - for ( i = 0; i < num_channels; i++ ) - { - diffuse_response_function[i] *= sqrtf( 1.f / (float) num_horizontal_speakers ); - } - } - else - { - *num_ele_spk_no_diffuse_rendering = 0; - set_f( diffuse_response_function, sqrtf( 1.f / (float) num_channels ), num_channels ); - } - } - else - { - set_f( diffuse_response_function, sqrtf( 1.f / (float) num_channels ), num_channels ); - } - } - else - { - set_f( diffuse_response_function, sqrtf( 1.f / (float) num_channels ), num_channels ); - } - } - else - { - idx = 0; - for ( l = 0; l <= ambisonics_order; l++ ) - { - for ( k = 0; k < ( 2 * l + 1 ); k++ ) - { - diffuse_response_function[idx++] = inv_sqrt( 2.0f * l + 1.0f ); - } - } - } - - return; -} - - -static void protoSignalComputation_shd( - float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float *proto_direct_buffer_f, - float *proto_diffuse_buffer_f, - float *reference_power, - const int16_t slot_index, - const int16_t num_inputs, - const int16_t num_outputs_diff, - const int16_t num_freq_bands, - float *p_Rmat ) -{ - int16_t l, k; - float *p_proto_direct_buffer; - float *p_proto_diffuse_buffer; - int16_t Rmat_k[4]; - float W_real, W_imag; - float Y_real, Y_imag; - float *p_k[4]; - - k = 0; /* to avoid compilation warning */ - - p_proto_direct_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * num_inputs; - p_proto_diffuse_buffer = proto_diffuse_buffer_f + slot_index * 2 * num_freq_bands * num_outputs_diff; - - if ( num_inputs == 1 ) - { - for ( l = 0; l < num_freq_bands; l++ ) - { - p_proto_direct_buffer[2 * l] = RealBuffer[0][0][l]; - p_proto_direct_buffer[2 * l + 1] = ImagBuffer[0][0][l]; - } - } - else if ( num_inputs == 2 ) - { - if ( p_Rmat != 0 ) - { - assert( num_inputs == 4 && "This code block should never be run with num_inputs != 4!" ); - - for ( l = 0; l < num_freq_bands; l++ ) - { - W_real = RealBuffer[0][0][l] + RealBuffer[1][0][l]; - W_imag = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; - - Y_real = RealBuffer[0][0][l] - RealBuffer[1][0][l]; - Y_imag = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; - - p_proto_direct_buffer[2 * l] = W_real; - p_proto_direct_buffer[2 * l + 1] = W_imag; - p_proto_direct_buffer[2 * num_freq_bands + 2 * l] = p_Rmat[0] * Y_real; - p_proto_direct_buffer[2 * num_freq_bands + 2 * l + 1] = p_Rmat[0] * Y_imag; - } - } - else - { - for ( l = 0; l < num_freq_bands; l++ ) - { - W_real = RealBuffer[0][0][l] + RealBuffer[1][0][l]; - W_imag = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; - - p_proto_direct_buffer[2 * l] = W_real; - p_proto_direct_buffer[2 * l + 1] = W_imag; - { - p_proto_direct_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l] - RealBuffer[1][0][l]; - p_proto_direct_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; - } - } - } - } - else if ( num_inputs >= 4 ) - { - p_k[0] = p_proto_direct_buffer; - p_k[1] = p_proto_direct_buffer + 2 * num_freq_bands; - p_k[2] = p_proto_direct_buffer + 4 * num_freq_bands; - p_k[3] = p_proto_direct_buffer + 6 * num_freq_bands; - Rmat_k[0] = 0; - Rmat_k[1] = 1; - Rmat_k[2] = 2; - Rmat_k[3] = 0; - - if ( p_Rmat != 0 ) - { - assert( num_inputs == 4 && "This code block should never be run with num_inputs != 4!" ); - - for ( l = 0; l < num_freq_bands; l++ ) - { - *( p_k[0] ) = RealBuffer[0][0][l]; - reference_power[l + num_freq_bands] = *( p_k[0] ) * *( p_k[0] ); - p_k[0]++; - *( p_k[0] ) = ImagBuffer[0][0][l]; - reference_power[l + num_freq_bands] += *( p_k[0] ) * *( p_k[0] ); - p_k[0]++; - reference_power[l] = 0.5f * reference_power[l + num_freq_bands]; - - for ( k = 1; k < 4; k++ ) - { - *( p_k[k] ) = p_Rmat[3 * Rmat_k[k] + 1] * RealBuffer[1][0][l] + p_Rmat[3 * Rmat_k[k] + 2] * RealBuffer[2][0][l] + p_Rmat[3 * Rmat_k[k] + 0] * RealBuffer[3][0][l]; - reference_power[l + ( k + 1 ) * num_freq_bands] = *( p_k[k] ) * *( p_k[k] ); - p_k[k]++; - *( p_k[k] ) = p_Rmat[3 * Rmat_k[k] + 1] * ImagBuffer[1][0][l] + p_Rmat[3 * Rmat_k[k] + 2] * ImagBuffer[2][0][l] + p_Rmat[3 * Rmat_k[k] + 0] * ImagBuffer[3][0][l]; - reference_power[l + ( k + 1 ) * num_freq_bands] += *( p_k[k] ) * *( p_k[k] ); - p_k[k]++; - reference_power[l] += 0.5f * ( reference_power[l + ( k + 1 ) * num_freq_bands] ); - } - - for ( k = 1; k < 4; k++ ) - { - RealBuffer[k][0][l] = p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l]; - ImagBuffer[k][0][l] = p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l + 1]; - } - } - } - else - { - set_zero( reference_power, num_freq_bands ); - for ( k = 0; k < 4; k++ ) - { - for ( l = 0; l < num_freq_bands; l++ ) - { - p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l] = RealBuffer[k][0][l]; - p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l + 1] = ImagBuffer[k][0][l]; - reference_power[l + ( k + 1 ) * num_freq_bands] = RealBuffer[k][0][l] * RealBuffer[k][0][l] + ImagBuffer[k][0][l] * ImagBuffer[k][0][l]; - reference_power[l] += 0.5f * ( reference_power[l + ( k + 1 ) * num_freq_bands] ); - } - } - } - - /* Additional transport channels = planar SBA components of degree higher than 1*/ - for ( ; k < num_inputs; k++ ) - { - for ( l = 0; l < num_freq_bands; l++ ) - { - p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l] = RealBuffer[k][0][l]; - p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l + 1] = ImagBuffer[k][0][l]; - } - } - } - - - /*Copy direct to diffuse proto*/ - mvr2r( p_proto_direct_buffer, p_proto_diffuse_buffer, 2 * num_freq_bands * min( num_outputs_diff, num_inputs ) ); - - if ( num_inputs == 1 ) - { - /* Add comfort noise addition (CNA) to diffuse proto only*/ - for ( l = 0; l < num_freq_bands; l++ ) - { - p_proto_diffuse_buffer[2 * l] += RealBuffer[1][0][l]; - p_proto_diffuse_buffer[2 * l + 1] += ImagBuffer[1][0][l]; - } - } - - return; -} - - -static void protoSignalComputation1( - float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float *proto_frame_f, - float *proto_direct_buffer_f, - float *reference_power, - float *proto_power_smooth, - const int16_t slot_index, - const int16_t num_outputs_diff, - const int16_t num_freq_bands ) -{ - int16_t l, k; - float *p_proto_buffer; - - p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands; - - for ( l = 0; l < num_freq_bands; l++ ) - { - reference_power[l] = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; - proto_power_smooth[l] += reference_power[l]; - p_proto_buffer[2 * l] = RealBuffer[0][0][l]; - p_proto_buffer[2 * l + 1] = ImagBuffer[0][0][l]; - - for ( k = 0; k < num_outputs_diff; k++ ) - { - proto_frame_f[2 * k * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; - proto_frame_f[2 * k * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; - } - } - - return; -} - - -static void protoSignalComputation2( - float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float *proto_frame_f, - float *proto_direct_buffer_f, - float *reference_power, - float *proto_power_smooth, - const int16_t isloudspeaker, - const int16_t slot_index, - const int16_t num_freq_bands, - MASA_STEREO_TYPE_DETECT *stereo_type_detect ) -{ - int16_t l; - float *p_proto_buffer; - float Real_aux, Imag_aux; - - float left_bb_power, right_bb_power, total_bb_power, lr_bb_power; - float lr_total_bb_ratio; - float a, b; - - float left_hi_power, right_hi_power, total_hi_power, lr_hi_power; - float lr_total_hi_ratio; - float a2, b2; - - float sum_power; - float sum_total_ratio[MASA_SUM_FREQ_RANGE_BINS]; - float min_sum_total_ratio; - float min_sum_total_ratio_db; - - float RealSubtract, ImagSubtract; - - float interpolatorSpaced = 0.0f; - float interpolatorDmx = 1.0f; - - int16_t dipole_freq_range[2]; - float tempSpaced, tempDmx; - - if ( isloudspeaker ) - { - p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * 3; - - for ( l = 0; l < num_freq_bands; l++ ) - { - float Left_power; - float Right_power; - Real_aux = RealBuffer[0][0][l] + RealBuffer[1][0][l]; - Imag_aux = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; - - Left_power = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; - Right_power = RealBuffer[1][0][l] * RealBuffer[1][0][l] + ImagBuffer[1][0][l] * ImagBuffer[1][0][l]; - - reference_power[l] = Left_power + Right_power; - proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; - - p_proto_buffer[2 * l] = Real_aux; - p_proto_buffer[2 * l + 1] = Imag_aux; - proto_power_smooth[l + num_freq_bands] += RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; - p_proto_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; - - proto_power_smooth[l + 2 * num_freq_bands] += RealBuffer[1][0][l] * RealBuffer[1][0][l]; - proto_power_smooth[l + 2 * num_freq_bands] += ImagBuffer[1][0][l] * ImagBuffer[1][0][l]; - p_proto_buffer[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; - p_proto_buffer[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; - - proto_frame_f[2 * l] = Real_aux; - proto_frame_f[2 * l + 1] = Imag_aux; - - proto_frame_f[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; - proto_frame_f[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; - proto_frame_f[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; - proto_frame_f[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; - } - } - else if ( stereo_type_detect != NULL ) - { - p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * 2; - - left_bb_power = 0.0f; - right_bb_power = 0.0f; - total_bb_power = 0.0f; - - left_hi_power = 0.0f; - right_hi_power = 0.0f; - total_hi_power = 0.0f; - - dipole_freq_range[0] = stereo_type_detect->dipole_freq_range[0]; - dipole_freq_range[1] = stereo_type_detect->dipole_freq_range[1]; - - a = 0.01f; /* Temporal smoothing coefficient */ - b = 1.0f - a; /* Temporal smoothing coefficient */ - a2 = 0.1f; /* Temporal smoothing coefficient */ - b2 = 1.0f - a2; /* Temporal smoothing coefficient */ - - if ( stereo_type_detect->interpolator > 0 ) - { - if ( stereo_type_detect->type_change_direction == MASA_STEREO_SPACED_MICS ) - { - interpolatorSpaced = ( (float) ( stereo_type_detect->interpolator ) ) / ( (float) MASA_STEREO_INTERPOLATION_SLOTS ); - interpolatorDmx = 1.0f - interpolatorSpaced; - } - else - { - interpolatorDmx = ( (float) ( stereo_type_detect->interpolator ) ) / ( (float) MASA_STEREO_INTERPOLATION_SLOTS ); - interpolatorSpaced = 1.0f - interpolatorDmx; - } - } - - for ( l = 0; l < num_freq_bands; l++ ) - { - float Left_power; - float Right_power; - - /* Compute sum signal */ - Real_aux = RealBuffer[0][0][l] + RealBuffer[1][0][l]; - Imag_aux = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; - - /* Compute reference power */ - Left_power = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; - Right_power = RealBuffer[1][0][l] * RealBuffer[1][0][l] + ImagBuffer[1][0][l] * ImagBuffer[1][0][l]; - - reference_power[l] = Left_power + Right_power; - - left_bb_power += Left_power; - right_bb_power += Right_power; - total_bb_power += reference_power[l]; - - if ( l > MASA_HI_FREQ_START_BIN ) - { - left_hi_power += Left_power; - right_hi_power += Right_power; - total_hi_power += reference_power[l]; - } - - if ( l < min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ) ) - { - sum_power = Real_aux * Real_aux + Imag_aux * Imag_aux; - - stereo_type_detect->sum_power[l] = a * sum_power + b * stereo_type_detect->sum_power[l]; - stereo_type_detect->total_power[l] = a * reference_power[l] + b * stereo_type_detect->total_power[l]; - - sum_total_ratio[l] = stereo_type_detect->sum_power[l] / ( stereo_type_detect->total_power[l] + EPSILON ); - } - - if ( l == 0 ) - { - RealSubtract = RealBuffer[0][0][l] - RealBuffer[1][0][l]; - ImagSubtract = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; - stereo_type_detect->subtract_power_y += RealSubtract * RealSubtract + ImagSubtract * ImagSubtract; - } - - /* Compute protos (and their power) for direct sound rendering */ - - /* W prototype */ - if ( stereo_type_detect->interpolator > 0 ) - { - if ( l < ( dipole_freq_range[1] - 1 ) || l >= MASA_SUM_PROTO_START_BIN ) - { - Real_aux = interpolatorSpaced * 0.5f * Real_aux + interpolatorDmx * Real_aux; - Imag_aux = interpolatorSpaced * 0.5f * Imag_aux + interpolatorDmx * Imag_aux; - proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; - p_proto_buffer[2 * l] = Real_aux; - p_proto_buffer[2 * l + 1] = Imag_aux; - } - else - { - tempSpaced = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; - tempDmx = Real_aux * Real_aux + Imag_aux * Imag_aux; - proto_power_smooth[l] += interpolatorSpaced * tempSpaced + interpolatorDmx * tempDmx; - p_proto_buffer[2 * l] = interpolatorSpaced * RealBuffer[0][0][l] + interpolatorDmx * Real_aux; - p_proto_buffer[2 * l + 1] = interpolatorSpaced * ImagBuffer[0][0][l] + interpolatorDmx * Imag_aux; - } - } - else if ( stereo_type_detect->masa_stereo_type == MASA_STEREO_SPACED_MICS ) - { - if ( l < ( dipole_freq_range[1] - 1 ) || l >= MASA_SUM_PROTO_START_BIN ) - { - Real_aux *= 0.5f; - Imag_aux *= 0.5f; - proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; - p_proto_buffer[2 * l] = Real_aux; - p_proto_buffer[2 * l + 1] = Imag_aux; - } - else - { - proto_power_smooth[l] += RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; - p_proto_buffer[2 * l] = RealBuffer[0][0][l]; - p_proto_buffer[2 * l + 1] = ImagBuffer[0][0][l]; - } - } - else - { - proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; - p_proto_buffer[2 * l] = Real_aux; - p_proto_buffer[2 * l + 1] = Imag_aux; - } - - /* Y prototype */ - if ( stereo_type_detect->interpolator > 0 ) - { - if ( l < ( dipole_freq_range[0] ) ) - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = interpolatorSpaced * p_proto_buffer[2 * l] + interpolatorDmx * ( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = interpolatorSpaced * p_proto_buffer[2 * l + 1] + interpolatorDmx * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); - } - else if ( l < ( dipole_freq_range[1] ) ) - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = interpolatorSpaced * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ) + interpolatorDmx * ( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = interpolatorSpaced * ( -( RealBuffer[0][0][l] - RealBuffer[1][0][l] ) ) + interpolatorDmx * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); - } - else - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = interpolatorSpaced * p_proto_buffer[2 * l] + interpolatorDmx * ( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = interpolatorSpaced * p_proto_buffer[2 * l + 1] + interpolatorDmx * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); - } - proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; - } - else if ( stereo_type_detect->masa_stereo_type == MASA_STEREO_SPACED_MICS ) - { - if ( l < ( dipole_freq_range[0] ) ) /* proto = W */ - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = p_proto_buffer[2 * l]; - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = p_proto_buffer[2 * l + 1]; - proto_power_smooth[l + num_freq_bands] = proto_power_smooth[l]; - } - else if ( l < ( dipole_freq_range[1] ) ) /* proto = -i * (x1-x2) * eq */ - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = -( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); - proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; - } - else /* proto = W */ - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = p_proto_buffer[2 * l]; - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = p_proto_buffer[2 * l + 1]; - proto_power_smooth[l + num_freq_bands] = proto_power_smooth[l]; - } - } - else - { - p_proto_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l] - RealBuffer[1][0][l]; - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; - proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; - } - - /* Compute protos for decorrelation */ - proto_frame_f[2 * l] = Real_aux; - proto_frame_f[2 * l + 1] = Imag_aux; - proto_frame_f[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; - proto_frame_f[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; - proto_frame_f[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; - proto_frame_f[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; - } - - if ( stereo_type_detect->interpolator > 0 ) - { - stereo_type_detect->interpolator++; - if ( stereo_type_detect->interpolator == MASA_STEREO_INTERPOLATION_SLOTS ) - { - stereo_type_detect->interpolator = 0; - stereo_type_detect->current_stereo_type = stereo_type_detect->type_change_direction; - } - } - - stereo_type_detect->left_bb_power = a * left_bb_power + b * stereo_type_detect->left_bb_power; - stereo_type_detect->right_bb_power = a * right_bb_power + b * stereo_type_detect->right_bb_power; - stereo_type_detect->total_bb_power = a * total_bb_power + b * stereo_type_detect->total_bb_power; - - lr_bb_power = ( stereo_type_detect->left_bb_power < stereo_type_detect->right_bb_power ) ? stereo_type_detect->left_bb_power : stereo_type_detect->right_bb_power; - lr_bb_power *= 2.0f; - lr_total_bb_ratio = 10.0f * log10f( lr_bb_power / ( stereo_type_detect->total_bb_power + EPSILON ) ); - - stereo_type_detect->left_hi_power = a2 * left_hi_power + b2 * stereo_type_detect->left_hi_power; - stereo_type_detect->right_hi_power = a2 * right_hi_power + b2 * stereo_type_detect->right_hi_power; - stereo_type_detect->total_hi_power = a2 * total_hi_power + b2 * stereo_type_detect->total_hi_power; - - lr_hi_power = ( stereo_type_detect->left_hi_power < stereo_type_detect->right_hi_power ) ? stereo_type_detect->left_hi_power : stereo_type_detect->right_hi_power; - lr_hi_power *= 2.0f; - lr_total_hi_ratio = 10.0f * log10f( lr_hi_power / ( stereo_type_detect->total_hi_power + EPSILON ) ); - - minimum( sum_total_ratio, min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ), &min_sum_total_ratio ); - min_sum_total_ratio_db = 10.0f * log10f( min_sum_total_ratio ); - - stereo_type_detect->lr_total_bb_ratio_db = lr_total_bb_ratio; - stereo_type_detect->lr_total_hi_ratio_db = lr_total_hi_ratio; - stereo_type_detect->min_sum_total_ratio_db = min_sum_total_ratio_db; - - ivas_masa_stereotype_detection( stereo_type_detect ); - } - else - { - p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * 2; - - for ( l = 0; l < num_freq_bands; l++ ) - { - Real_aux = RealBuffer[0][0][l] + RealBuffer[1][0][l]; - Imag_aux = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; - - reference_power[l] = Real_aux * Real_aux + Imag_aux * Imag_aux; - proto_power_smooth[l] += reference_power[l]; - p_proto_buffer[2 * l] = Real_aux; - p_proto_buffer[2 * l + 1] = Imag_aux; - - p_proto_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l] - RealBuffer[1][0][l]; - p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; - proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; - - proto_frame_f[2 * l] = Real_aux; - proto_frame_f[2 * l + 1] = Imag_aux; - - proto_frame_f[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; - proto_frame_f[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; - proto_frame_f[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; - proto_frame_f[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; - } - } - - return; -} - - -static void protoSignalComputation4( - float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float *proto_frame_f, - float *proto_direct_buffer_f, - float *reference_power, - float *proto_power_smooth, - const int16_t slot_index, - const int16_t num_outputs_diff, - const int16_t num_freq_bands, - const float *mtx_hoa_decoder, - const int16_t nchan_transport, - const int16_t *sba_map_tc_ind ) -{ - int16_t k, l; - int16_t n; - float sq_tmp; - float *p_proto_buffer; - - set_zero( reference_power, num_freq_bands ); - for ( k = 0; k < 4; k++ ) - { - for ( l = 0; l < num_freq_bands; l++ ) - { - sq_tmp = RealBuffer[k][0][l] * RealBuffer[k][0][l] + ImagBuffer[k][0][l] * ImagBuffer[k][0][l]; - reference_power[l] += 0.5f * sq_tmp; - } - } - - /*For decorrelated diffuseness*/ - for ( l = 0; l < num_outputs_diff; l++ ) - { - for ( k = 0; k < num_freq_bands; k++ ) - { - proto_frame_f[2 * l * num_freq_bands + 2 * k] = 0.f; - proto_frame_f[2 * l * num_freq_bands + 2 * k + 1] = 0.f; - for ( n = 0; n < nchan_transport; n++ ) - { - proto_frame_f[2 * l * num_freq_bands + 2 * k] += RealBuffer[n][0][k] * mtx_hoa_decoder[l * 16 + sba_map_tc_ind[n]]; - proto_frame_f[2 * l * num_freq_bands + 2 * k + 1] += ImagBuffer[n][0][k] * mtx_hoa_decoder[l * 16 + sba_map_tc_ind[n]]; - } - } - } - - p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * num_outputs_diff; - for ( k = 0; k < num_outputs_diff; k++ ) - { - for ( l = 0; l < num_freq_bands; l++ ) - { - sq_tmp = proto_frame_f[k * 2 * num_freq_bands + 2 * l] * proto_frame_f[k * 2 * num_freq_bands + 2 * l] + proto_frame_f[k * 2 * num_freq_bands + 2 * l + 1] * proto_frame_f[k * 2 * num_freq_bands + 2 * l + 1]; - proto_power_smooth[l + k * num_freq_bands] += sq_tmp; - p_proto_buffer[k * 2 * num_freq_bands + 2 * l] = proto_frame_f[k * 2 * num_freq_bands + 2 * l]; - p_proto_buffer[k * 2 * num_freq_bands + 2 * l + 1] = proto_frame_f[k * 2 * num_freq_bands + 2 * l + 1]; - } - } - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_dirac_dec_compute_diffuse_proto() - * - * Compute diffuse prototype buffer and smooth power, only for decorrelated bands - *------------------------------------------------------------------------*/ - -static void ivas_dirac_dec_compute_diffuse_proto( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const int16_t slot_idx /* i : slot index */ -) -{ - int16_t k, l; - int16_t num_freq_bands, num_freq_bands_diff; - float *p_diff_buffer, *p_diff_buffer_1; - float *p_proto_diff, *p_power_smooth, *proto_frame_dec_f; - DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params; - DIRAC_OUTPUT_SYNTHESIS_STATE *h_dirac_output_synthesis_state; - int16_t m; - float *p_hoa_enc; - - proto_frame_dec_f = hDirAC->proto_frame_dec_f; - h_dirac_output_synthesis_params = &( hDirAC->h_output_synthesis_psd_params ); - h_dirac_output_synthesis_state = &( hDirAC->h_output_synthesis_psd_state ); - - num_freq_bands = hDirAC->num_freq_bands; - num_freq_bands_diff = h_dirac_output_synthesis_params->max_band_decorr; - - p_diff_buffer = h_dirac_output_synthesis_state->proto_diffuse_buffer_f + slot_idx * 2 * num_freq_bands_diff * hDirAC->hOutSetup.nchan_out_woLFE; - p_diff_buffer_1 = p_diff_buffer + 1; - p_power_smooth = h_dirac_output_synthesis_state->proto_power_diff_smooth; - - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_PSD_SHD ) - { - for ( k = 0; k < hDirAC->hOutSetup.nchan_out_woLFE; k++ ) - { - p_proto_diff = proto_frame_dec_f + k * 2 * num_freq_bands; - for ( l = 0; l < num_freq_bands_diff; l++ ) - { - *p_diff_buffer = *( p_proto_diff++ ); - *p_diff_buffer_1 = *( p_proto_diff++ ); - *( p_power_smooth++ ) += ( *p_diff_buffer ) * ( *p_diff_buffer ) + ( *p_diff_buffer_1 ) * ( *p_diff_buffer_1 ); - p_diff_buffer += 2; - p_diff_buffer_1 += 2; - } - } - } - else - { - /*DIRAC_SYNTHESIS_PSD_SHD: Virtual LS->HOA encoding*/ - for ( k = 0; k < hDirAC->hOutSetup.nchan_out_woLFE; k++ ) - { - for ( l = 0; l < num_freq_bands_diff; l++ ) - { - p_hoa_enc = hDirAC->hoa_encoder + k; - p_proto_diff = proto_frame_dec_f + 2 * l; - - *p_diff_buffer = 0.f; - *p_diff_buffer_1 = 0.f; - - /*LS to HOA*/ - for ( m = 0; m < hDirAC->num_outputs_diff; m++ ) - { - *p_diff_buffer += ( *p_hoa_enc ) * ( *p_proto_diff ); - *p_diff_buffer_1 += ( *p_hoa_enc ) * ( *( p_proto_diff + 1 ) ); - p_hoa_enc += hDirAC->hOutSetup.nchan_out_woLFE; - p_proto_diff += 2 * num_freq_bands; - } - - *( p_power_smooth++ ) += ( *p_diff_buffer ) * ( *p_diff_buffer ) + ( *p_diff_buffer_1 ) * ( *p_diff_buffer_1 ); - p_diff_buffer += 2; - p_diff_buffer_1 += 2; - } - } - } - - return; -} - - -/*------------------------------------------------------------------------- - * computeDirectionAngles() - * - *------------------------------------------------------------------------*/ - -static void computeDirectionAngles( - float *intensity_real_x, - float *intensity_real_y, - float *intensity_real_z, - const int16_t num_frequency_bands, - int16_t *azimuth, - int16_t *elevation ) -{ - int16_t k; - float intensityNorm; - float x, y, z, radius; - - for ( k = 0; k < num_frequency_bands; ++k ) - - { - intensityNorm = *( intensity_real_x ) * *( intensity_real_x ) + - *( intensity_real_y ) * *( intensity_real_y ) + - *( intensity_real_z ) * *( intensity_real_z ); - - if ( intensityNorm <= EPSILON ) - { - intensityNorm = 1.0f; - x = 1.0f; - y = 0.0f; - z = 0.0f; - intensity_real_x++; - intensity_real_y++; - intensity_real_z++; - } - else - { - intensityNorm = sqrtf( 1.f / intensityNorm ); - x = *( intensity_real_x++ ) * intensityNorm; - y = *( intensity_real_y++ ) * intensityNorm; - z = *( intensity_real_z++ ) * intensityNorm; - } - radius = sqrtf( x * x + y * y ); - azimuth[k] = (int16_t) ( max( -180.0f, min( 180.0f, atan2f( y, x ) / EVS_PI * 180.0f ) ) + 0.5f ); - elevation[k] = (int16_t) ( max( -90.0f, min( 180.0f, atan2f( z, radius ) / EVS_PI * 180.0f ) ) + 0.5f ); - } - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_masa_init_stereotype_detection() - * - * Initialize stereo transport signal type detection - *------------------------------------------------------------------------*/ - -static void ivas_masa_init_stereotype_detection( - MASA_STEREO_TYPE_DETECT *stereo_type_detect ) -{ - stereo_type_detect->masa_stereo_type = MASA_STEREO_DOWNMIX; - stereo_type_detect->current_stereo_type = MASA_STEREO_DOWNMIX; - stereo_type_detect->type_change_direction = MASA_STEREO_DOWNMIX; - - stereo_type_detect->counter = 0; - stereo_type_detect->interpolator = 0; - - stereo_type_detect->dipole_freq_range[0] = 1; - stereo_type_detect->dipole_freq_range[1] = 3; - - stereo_type_detect->left_bb_power = 0.0f; /* Broadband estimates */ - stereo_type_detect->right_bb_power = 0.0f; - stereo_type_detect->total_bb_power = 0.0f; - - stereo_type_detect->left_hi_power = 0.0f; /* High-frequency estimates */ - stereo_type_detect->right_hi_power = 0.0f; - stereo_type_detect->total_hi_power = 0.0f; - - set_zero( stereo_type_detect->sum_power, MASA_SUM_FREQ_RANGE_BINS ); - set_zero( stereo_type_detect->total_power, MASA_SUM_FREQ_RANGE_BINS ); - - stereo_type_detect->subtract_power_y = 0.0f; - stereo_type_detect->subtract_power_y_smooth = 0.0f; - stereo_type_detect->target_power_y_smooth = 0.0f; - - stereo_type_detect->lr_total_bb_ratio_db = 0.0f; - stereo_type_detect->lr_total_hi_ratio_db = 0.0f; - stereo_type_detect->min_sum_total_ratio_db = 0.0f; - stereo_type_detect->subtract_target_ratio_db = 0.0f; - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_masa_stereotype_detection() - * - * Detect the type of the transport audio signals - *------------------------------------------------------------------------*/ - -static void ivas_masa_stereotype_detection( - MASA_STEREO_TYPE_DETECT *stereo_type_detect ) -{ - float lr_total_bb_ratio_db = stereo_type_detect->lr_total_bb_ratio_db; - float lr_total_hi_ratio_db = stereo_type_detect->lr_total_hi_ratio_db; - float min_sum_total_ratio_db = stereo_type_detect->min_sum_total_ratio_db; - float subtract_target_ratio_db = stereo_type_detect->subtract_target_ratio_db; - float change_to_spaced; - int16_t change_to_spaced_selection; - float change_to_downmix; - float change_to_downmix2; - int16_t change_to_downmix_selection; - float subtract_temp; - float min_sum_temp; - float lr_total_bb_temp; - float lr_total_hi_temp; - - /* Determine if the determined features match the spaced mic type */ - change_to_spaced_selection = 0; - if ( subtract_target_ratio_db < -3.0f ) - { - subtract_temp = ( -subtract_target_ratio_db - 3.0f ) / 3.0f; - min_sum_temp = max( -min_sum_total_ratio_db / 6.0f, 0.0f ); - lr_total_bb_temp = lr_total_bb_ratio_db / 6.0f; - - change_to_spaced = subtract_temp + min_sum_temp + lr_total_bb_temp; - - if ( change_to_spaced >= 1.0f ) - { - change_to_spaced_selection = 1; - } - } - - /* Determine if the determined features match the downmix type, according to a metric */ - change_to_downmix_selection = 0; - if ( subtract_target_ratio_db > 0.0f ) - { - subtract_temp = subtract_target_ratio_db / 3.0f; - min_sum_temp = ( min_sum_total_ratio_db + 1.0f ) / 6.0f; - lr_total_bb_temp = -lr_total_bb_ratio_db / 6.0f; - - change_to_downmix = subtract_temp + min_sum_temp + lr_total_bb_temp; - - if ( change_to_downmix >= 1.0f ) - { - change_to_downmix_selection = 1; - } - } - - /* Determine if the determined features match the downmix type, according to another metric */ - if ( lr_total_hi_ratio_db < -12.0f ) - { - subtract_temp = ( subtract_target_ratio_db + 4.0f ) / 3.0f; - min_sum_temp = min_sum_total_ratio_db / 6.0f; - lr_total_hi_temp = ( -lr_total_hi_ratio_db - 12.0f ) / 3.0f; - - change_to_downmix2 = subtract_temp + min_sum_temp + lr_total_hi_temp; - - if ( change_to_downmix2 >= 1.0f ) - { - change_to_downmix_selection = 1; - } - } - - if ( stereo_type_detect->counter < 400 ) - { - stereo_type_detect->counter++; - } - else - { - if ( change_to_spaced_selection == 1 ) - { - stereo_type_detect->masa_stereo_type = MASA_STEREO_SPACED_MICS; - } - else if ( change_to_downmix_selection == 1 ) - { - stereo_type_detect->masa_stereo_type = MASA_STEREO_DOWNMIX; - } - } - - if ( stereo_type_detect->interpolator == 0 ) - { - if ( stereo_type_detect->current_stereo_type != stereo_type_detect->masa_stereo_type ) - { - stereo_type_detect->interpolator = 1; - stereo_type_detect->type_change_direction = stereo_type_detect->masa_stereo_type; - } - } - - return; -} - - -/*------------------------------------------------------------------------- - * computeIntensityVector_dec() - * - * - *------------------------------------------------------------------------*/ - -static void computeIntensityVector_dec( - float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - const int16_t num_frequency_bands, - float *intensity_real_x, - float *intensity_real_y, - float *intensity_real_z ) -{ - /* - * W = a + ib; Y = c + id - * real(W*Y') = ac + bd - */ - int16_t i; - float real, img; - - for ( i = 0; i < num_frequency_bands; ++i ) - { - real = Cldfb_RealBuffer[0][0][i]; - img = Cldfb_ImagBuffer[0][0][i]; - intensity_real_x[i] = Cldfb_RealBuffer[3][0][i] * real + Cldfb_ImagBuffer[3][0][i] * img; - intensity_real_y[i] = Cldfb_RealBuffer[1][0][i] * real + Cldfb_ImagBuffer[1][0][i] * img; - intensity_real_z[i] = Cldfb_RealBuffer[2][0][i] * real + Cldfb_ImagBuffer[2][0][i] * img; - } - - return; -} - - -/*------------------------------------------------------------------------- - * ivas_lfe_synth_with_cldfb() - * - * - *------------------------------------------------------------------------*/ - -static void ivas_lfe_synth_with_cldfb( - MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth, - float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float RealBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - float ImagBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], - const int16_t slot_index, - const int16_t subframe_index, - const int16_t nchan_transport ) -{ - float lfeGain; - float transportGain; - float protoLfeReal, protoLfeImag; - int16_t i; - float transportEne, protoLfeEne, targetEneLfe, targetEneTrans; - - set_zero( RealBufferLfe[slot_index], CLDFB_NO_CHANNELS_MAX ); - set_zero( ImagBufferLfe[slot_index], CLDFB_NO_CHANNELS_MAX ); - - protoLfeReal = RealBuffer[0][0][0]; - protoLfeImag = ImagBuffer[0][0][0]; - transportEne = RealBuffer[0][0][0] * RealBuffer[0][0][0] + ImagBuffer[0][0][0] * ImagBuffer[0][0][0]; - for ( i = 1; i < nchan_transport; i++ ) - { - protoLfeReal += RealBuffer[i][0][0]; - protoLfeImag += ImagBuffer[i][0][0]; - transportEne += RealBuffer[i][0][0] * RealBuffer[i][0][0] + ImagBuffer[i][0][0] * ImagBuffer[i][0][0]; - } - protoLfeEne = protoLfeReal * protoLfeReal + protoLfeImag * protoLfeImag; - - targetEneLfe = transportEne * hMasaLfeSynth->lfeToTotalEnergyRatio[subframe_index]; - targetEneTrans = transportEne * max( ( 1.0f - hMasaLfeSynth->lfeToTotalEnergyRatio[subframe_index] ), 0.01f ); - - hMasaLfeSynth->transportEneSmooth *= MCMASA_LFE_SYNTH_ALPHA; - hMasaLfeSynth->protoLfeEneSmooth *= MCMASA_LFE_SYNTH_ALPHA; - hMasaLfeSynth->targetEneLfeSmooth *= MCMASA_LFE_SYNTH_ALPHA; - hMasaLfeSynth->targetEneTransSmooth *= MCMASA_LFE_SYNTH_ALPHA; - - hMasaLfeSynth->transportEneSmooth += transportEne; - hMasaLfeSynth->protoLfeEneSmooth += protoLfeEne; - hMasaLfeSynth->targetEneLfeSmooth += targetEneLfe; - hMasaLfeSynth->targetEneTransSmooth += targetEneTrans; - - lfeGain = min( 1.0f, sqrtf( hMasaLfeSynth->targetEneLfeSmooth / ( EPSILON + hMasaLfeSynth->protoLfeEneSmooth ) ) ); - transportGain = min( 1.0f, sqrtf( hMasaLfeSynth->targetEneTransSmooth / ( EPSILON + hMasaLfeSynth->transportEneSmooth ) ) ); - - RealBufferLfe[slot_index][0] = protoLfeReal * lfeGain; - ImagBufferLfe[slot_index][0] = protoLfeImag * lfeGain; - - RealBuffer[0][0][0] *= transportGain; - ImagBuffer[0][0][0] *= transportGain; - for ( i = 1; i < nchan_transport; i++ ) - { - RealBuffer[i][0][0] *= transportGain; - ImagBuffer[i][0][0] *= transportGain; - } - - return; -} - - -/*------------------------------------------------------------------------- - * rotateAziEle_DirAC() - * - * Apply rotation to DirAC DOAs - *------------------------------------------------------------------------*/ - -static void rotateAziEle_DirAC( - int16_t *azi, /* i/o: array of azimuth values */ - int16_t *ele, /* i/o: array of elevation values */ - const int16_t band1, /* i : bands to work on (lower limit) */ - const int16_t band2, /* i : bands to work on (upper bound) */ - const float *p_Rmat /* i : pointer to real-space rotation matrix */ -) -{ - int16_t b; - float dv_0, dv_1, dv_2; - float dv_r_0, dv_r_1, dv_r_2; - float w; - - push_wmops( "rotateAziEle_DirAC" ); - - for ( b = band1; b < band2; b++ ) - { - - /*Conversion spherical to cartesian coordinates*/ - w = cosf( ele[b] * PI_OVER_180 ); - dv_0 = w * cosf( azi[b] * PI_OVER_180 ); - dv_1 = w * sinf( azi[b] * PI_OVER_180 ); - dv_2 = sinf( ele[b] * PI_OVER_180 ); - - dv_r_0 = p_Rmat[0] * dv_0 + p_Rmat[1] * dv_1 + p_Rmat[2] * dv_2; - dv_r_1 = p_Rmat[3] * dv_0 + p_Rmat[4] * dv_1 + p_Rmat[5] * dv_2; - dv_r_2 = p_Rmat[6] * dv_0 + p_Rmat[7] * dv_1 + p_Rmat[8] * dv_2; - - /*Conversion spherical to cartesian coordinates*/ - azi[b] = (int16_t) ( atan2f( dv_r_1, dv_r_0 ) * _180_OVER_PI ); - ele[b] = (int16_t) ( atan2f( dv_r_2, sqrtf( dv_r_0 * dv_r_0 + dv_r_1 * dv_r_1 ) ) * _180_OVER_PI ); - } + hSpatParamRendCom->slots_rendered += hSpatParamRendCom->subframe_nbslots[subframe_idx]; + hSpatParamRendCom->subframes_rendered++; pop_wmops(); diff --git a/lib_dec/ivas_entropy_decoder.c b/lib_dec/ivas_entropy_decoder.c index 2f8e9bc3bf5d31c0742fd91cd9d9e5eff04062ff..bf91f3e695eb22d40715f4f545b77211756fa2f1 100644 --- a/lib_dec/ivas_entropy_decoder.c +++ b/lib_dec/ivas_entropy_decoder.c @@ -356,38 +356,6 @@ void ivas_arith_decode_cmplx_cell_array( arith_decode_cell_array_diff( cell_dims_diff, st0, num_bands, pArith_re, pArith_re_diff, cell_arr_diff_out, cell_arr_diff ); - -#ifdef SPAR_HOA_DBG - /*if ( 0 ) */ /*(pCell_dims[0].dim1 == 12) */ - /*{ - idx = 0; - fprintf( stdout, "\n\n OLD/NEW: \n\n" ); - for ( i = 0; i < num_bands; i++ ) - { - len = ( cell_dims[i].dim1 * cell_dims[i].dim2 ); - fprintf( stdout, "Non-diff Band %d: \n", i ); - - for ( j = 0; j < len; j++ ) - { - fprintf( stdout, ">>%d: %d \n", idx, cell_arr_no_diff[idx] ); - idx++; - } - } - idx = 0; - for ( i = 0; i < num_bands; i++ ) - { - len = ( cell_dims_diff[i].dim1 * cell_dims_diff[i].dim2 ); - fprintf( stdout, "Diff Band %d: \n", i ); - - for ( j = 0; j < len; j++ ) - { - fprintf( stdout, ">>%d: %d\t %d\n", idx, cell_arr_diff[idx], cell_arr_diff_out[idx] ); - idx++; - } - } - }*/ -#endif - idx = 0; idx1 = 0; for ( i = 0; i < num_bands; i++ ) diff --git a/lib_dec/ivas_init_dec.c b/lib_dec/ivas_init_dec.c index 22942030530dd939ed9d9fc5d666c1b78fef11e7..7c5642a5e9e37e6a36799c013fffa5f3fb9ead79 100644 --- a/lib_dec/ivas_init_dec.c +++ b/lib_dec/ivas_init_dec.c @@ -37,6 +37,9 @@ #include "ivas_rom_com.h" #include "ivas_stat_enc.h" #include "prot.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "common_api_types.h" +#endif #include #include #include @@ -54,6 +57,241 @@ static ivas_error ivas_read_format( Decoder_Struct *st_ivas, int16_t *num_bits_r 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; + int16_t cldfb_in, num_ch, ch, isCldfbNeeded, i, pcm_out; + SPLIT_REND_WRAPPER *hSplitRendWrapper; +#ifndef OSBA_SPLIT_RENDERING + CLDFB_TYPE cldfbMode; +#endif + + hSplitRendWrapper = &st_ivas->hSplitBinRend.splitrend; + pcm_out = ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + cldfb_in = 0; + + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || + st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || + st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || + st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + { + cldfb_in = 1; + } + + ivas_renderSplitGetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &hSplitRendWrapper->multiBinPoseData, st_ivas->hHeadTrackData->sr_pose_pred_axis ); + + isCldfbNeeded = 0; +#ifndef OSBA_SPLIT_RENDERING + cldfbMode = CLDFB_ANALYSIS; +#else + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV && st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + cldfb_in = 0; + } +#endif + if ( st_ivas->renderer_type != RENDERER_DISABLE ) + { + if ( cldfb_in == 0 ) + { + isCldfbNeeded = 1; +#ifndef OSBA_SPLIT_RENDERING + cldfbMode = CLDFB_ANALYSIS; +#endif + } + else if ( st_ivas->hRenderConfig->split_rend_config.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && cldfb_in ) + { + isCldfbNeeded = 1; +#ifndef OSBA_SPLIT_RENDERING + cldfbMode = CLDFB_SYNTHESIS; +#endif + } + else if ( pcm_out && cldfb_in ) + { + isCldfbNeeded = 1; +#ifndef OSBA_SPLIT_RENDERING + cldfbMode = CLDFB_SYNTHESIS; +#endif + } + } + + if ( 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 = MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; + for ( ch = 0; ch < num_ch; ch++ ) + { + hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL; + } + + num_ch = hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; + + for ( ch = 0; ch < num_ch; ch++ ) + { + if ( ( error = openCldfb( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), +#ifndef OSBA_SPLIT_RENDERING + cldfbMode, +#else + CLDFB_ANALYSIS, +#endif + st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not open CLDFB handles\n" ) ); + } + } + +#ifdef OSBA_SPLIT_RENDERING + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), + CLDFB_SYNTHESIS, + st_ivas->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + } + else if ( isCldfbNeeded == 0 && hSplitRendWrapper->hCldfbHandles != NULL ) + { + num_ch = MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; + for ( ch = 0; ch < num_ch; ch++ ) + { + if ( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] != NULL ) + { + deleteCldfb( &hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ); + hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL; + } + } +#ifdef OSBA_SPLIT_RENDERING + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] != NULL ) + { + deleteCldfb( &hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ); + hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] = NULL; + } + } +#endif + free( hSplitRendWrapper->hCldfbHandles ); + hSplitRendWrapper->hCldfbHandles = NULL; + } + +#ifdef OSBA_SPLIT_RENDERING + if ( ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD ) && + ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV || st_ivas->ivas_format != SBA_ISM_FORMAT ) ) +#else + if ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD ) +#endif + { + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( hSplitRendWrapper->hTdRendHandles[i] != NULL ) + { + hSplitRendWrapper->hTdRendHandles[i]->HrFiltSet_p = NULL; + ivas_td_binaural_close( &hSplitRendWrapper->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; + int16_t cldfb_in, pcm_out; + + pcm_out = ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + cldfb_in = 0; + + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || + st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || + st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || + st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + { + cldfb_in = 1; + } + + ivas_renderSplitGetMultiBinPoseData( &st_ivas->hRenderConfig->split_rend_config, &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, st_ivas->hHeadTrackData->sr_pose_pred_axis ); + + if ( cldfb_in == 1 && ( st_ivas->hSplitBinRend.splitrend.multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) + { + if ( ( st_ivas->hSplitBinRend.hCldfbDataOut = (IVAS_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE) malloc( sizeof( IVAS_DEC_SPLIT_REND_CLDFB_OUT_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for cldfb data out buffer\n" ) ); + } + } + +#ifdef API_5MS + if ( ( error = ivas_split_rend_choose_default_codec( &st_ivas->hRenderConfig->split_rend_config.codec, + &st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms, + ( cldfb_in == 0 ), + pcm_out ) ) != IVAS_ERR_OK ) + { + return error; + } +#else + ivas_split_rend_choose_default_codec( &st_ivas->hRenderConfig->split_rend_config.codec, ( cldfb_in == 0 ), pcm_out ); +#endif +#ifdef OSBA_SPLIT_RENDERING + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV && st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + cldfb_in = 0; + } +#endif + + error = ivas_split_renderer_open( &st_ivas->hSplitBinRend.splitrend, + &st_ivas->hRenderConfig->split_rend_config, + st_ivas->hDecoderConfig->output_Fs, + cldfb_in, pcm_out +#ifdef API_5MS + , + st_ivas->hDecoderConfig->Opt_5ms +#endif + ); +#ifndef API_5MS + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits; + if ( ( hSplitRendBits = (IVAS_SPLIT_REND_BITS_HANDLE) malloc( sizeof( IVAS_SPLIT_REND_BITS_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for split renderer Bits buffer\n" ) ); + } + + hSplitRendBits->bits_buf = NULL; + hSplitRendBits->bits_read = 0; + hSplitRendBits->bits_written = 0; + hSplitRendBits->buf_len = IVAS_MAX_SPLIT_REND_BITS_BUFFER_SIZE_IN_BYTES; + + st_ivas->hSplitBinRend.hSplitRendBits = hSplitRendBits; +#endif + return error; +} +#endif + /*-------------------------------------------------------------------* * ivas_dec_setup() @@ -62,9 +300,14 @@ static ivas_error doSanityChecks_IVAS( Decoder_Struct *st_ivas ); *-------------------------------------------------------------------*/ ivas_error ivas_dec_setup( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + 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 : flushed PCM samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { int16_t k, idx, num_bits_read; @@ -72,6 +315,7 @@ ivas_error ivas_dec_setup( Decoder_State *st; int32_t ivas_total_brate; ivas_error error; + error = IVAS_ERR_OK; num_bits_read = 0; @@ -114,7 +358,11 @@ ivas_error ivas_dec_setup( st_ivas->nchan_ism = nchan_ism; - if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -163,13 +411,31 @@ ivas_error ivas_dec_setup( /* reconfigure in case a change of operation mode is detected */ if ( ( ivas_total_brate > IVAS_SID_5k2 && ivas_total_brate != st_ivas->hDecoderConfig->last_ivas_total_brate ) || ( st_ivas->ini_active_frame == 0 ) ) { - if ( st_ivas->ini_active_frame == 0 && ivas_total_brate != FRAME_NO_DATA && ivas_total_brate < MASA_STEREO_MIN_BITRATE && st_ivas->nCPE == 1 ) + if ( st_ivas->last_ivas_format == MASA_FORMAT ) { - st_ivas->hCPE[0]->nchan_out = 1; + if ( st_ivas->ini_active_frame == 0 && ivas_total_brate != FRAME_NO_DATA && ivas_total_brate < MASA_STEREO_MIN_BITRATE && st_ivas->nCPE == 1 ) + { + st_ivas->hCPE[0]->nchan_out = 1; + } + else + { + if ( ( error = ivas_masa_dec_reconfigure( st_ivas, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) + { + return error; + } + } } else { - if ( ( error = ivas_masa_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_omasa_dec_config( st_ivas, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -177,6 +443,81 @@ ivas_error ivas_dec_setup( } } } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + st_ivas->nchan_transport = 2; /* always 2 MASA transport channels */ + + /* for the DISC mode the number of objects are written at the end of the bitstream, in the MASA metadata */ + st_ivas->nchan_ism = 2 * st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 1] + st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 2] + 1; + st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, st_ivas->nchan_ism ); + + if ( st_ivas->ini_frame > 0 ) + { + /* reconfigure in case a change of operation mode is detected */ + if ( ( ivas_total_brate > IVAS_SID_5k2 && ivas_total_brate != st_ivas->hDecoderConfig->last_ivas_total_brate ) || ( st_ivas->ini_active_frame == 0 ) ) + { + if ( ( error = ivas_omasa_dec_config( st_ivas, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + } + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + /* the number of objects is written at the end of the bitstream, in the SBA metadata */ + st_ivas->nchan_ism = 2 * st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 1] + st_ivas->bit_stream[ivas_total_brate / FRAMES_PER_SEC - 2] + 1; + + if ( ivas_total_brate < IVAS_24k4 || ivas_total_brate >= IVAS_256k ) + { + /* read Ambisonic (SBA) planar flag */ + st_ivas->sba_planar = st_ivas->bit_stream[num_bits_read]; + num_bits_read += SBA_PLANAR_BITS; + } + + st_ivas->sba_order = st_ivas->bit_stream[num_bits_read + 1]; + st_ivas->sba_order += 2 * st_ivas->bit_stream[num_bits_read]; + num_bits_read += SBA_ORDER_BITS; + + /* read Ambisonic (SBA) order */ + if ( ivas_total_brate < IVAS_256k ) + { + st_ivas->sba_order = 3; + } + + /* set Ambisonic (SBA) order used for analysis and coding */ + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order ); + + if ( st_ivas->ini_frame > 0 && ivas_total_brate != st_ivas->last_active_ivas_total_brate ) + { + if ( ( error = ivas_sba_dec_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + ivas_sba_config( 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*/ + if ( st_ivas->ini_frame > 0 && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + st_ivas->nCPE += ( st_ivas->nchan_ism + 1 ) >> 1; + } + } + + if ( ivas_total_brate >= IVAS_256k ) + { + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + } + else + { + st_ivas->ism_mode = ISM_MODE_NONE; + } + } else if ( st_ivas->ivas_format == MC_FORMAT ) { /* read MC configuration */ @@ -191,7 +532,12 @@ ivas_error ivas_dec_setup( num_bits_read += MC_LS_SETUP_BITS; /* select MC format mode; reconfigure the MC format decoder */ - ivas_mc_dec_config( st_ivas, idx, nSamplesRendered, data ); + ivas_mc_dec_config( st_ivas, idx, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + + data ); } /*-------------------------------------------------------------------* @@ -306,7 +652,11 @@ ivas_error ivas_dec_setup( st_ivas->ism_mode = (ISM_MODE) ( idx + 1 ); } - if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_dec_config( st_ivas, st_ivas->ism_mode, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -331,6 +681,20 @@ ivas_error ivas_dec_setup( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*-----------------------------------------------------------------* + * reconfig split rendering as renderer might change after bitrate switching + *-----------------------------------------------------------------*/ + + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( ( error = ivas_dec_reconfig_split_rend( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + /*----------------------------------------------------------------* * Reset bitstream pointers *----------------------------------------------------------------*/ @@ -404,14 +768,19 @@ static ivas_error ivas_read_format( { if ( st_ivas->bit_stream[*num_bits_read] ) { - /* placeholder for combined format signaling */ - ( *num_bits_read )++; + if ( st_ivas->bit_stream[*num_bits_read] ) + { + st_ivas->ivas_format = SBA_ISM_FORMAT; + } + else + { + st_ivas->ivas_format = MASA_ISM_FORMAT; + } } ( *num_bits_read )++; } - break; case 3: if ( st_ivas->bit_stream[*num_bits_read] ) @@ -421,8 +790,19 @@ static ivas_error ivas_read_format( else { st_ivas->ivas_format = SBA_FORMAT; + /* read Ambisonic (SBA) planar flag */ + st_ivas->sba_planar = st_ivas->bit_stream[( *num_bits_read ) + 1]; + + /* read Ambisonic (SBA) order */ + st_ivas->sba_order = st_ivas->bit_stream[( *num_bits_read ) + 2 + SBA_PLANAR_BITS]; + st_ivas->sba_order += 2 * st_ivas->bit_stream[( *num_bits_read ) + 1 + SBA_PLANAR_BITS]; + if ( st_ivas->sba_order == 0 ) + { + st_ivas->ivas_format = SBA_ISM_FORMAT; + } } ( *num_bits_read )++; + break; } } @@ -481,9 +861,6 @@ static ivas_error ivas_read_format( if ( st_ivas->ivas_format == SBA_FORMAT ) { - int16_t tc_mode_offset; - tc_mode_offset = (int16_t) ( ivas_total_brate / FRAMES_PER_SEC - 1 ); - idx = st_ivas->bit_stream[tc_mode_offset]; if ( st_ivas->sba_analysis_order == 0 ) { st_ivas->sba_analysis_order = SBA_FOA_ORDER; @@ -523,11 +900,21 @@ int16_t getNumChanSynthesis( { n = CPE_CHANNELS; } - else if ( st_ivas->hMCT != NULL || st_ivas->ivas_format == SBA_FORMAT ) + else if ( ( st_ivas->hMCT != NULL || st_ivas->ivas_format == SBA_FORMAT ) && st_ivas->ivas_format != SBA_ISM_FORMAT ) { n = st_ivas->nchan_transport; } - + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + n = st_ivas->nchan_transport + st_ivas->nchan_ism; + } + else + { + n = st_ivas->nchan_transport; + } + } return n; } @@ -616,6 +1003,10 @@ ivas_error ivas_init_decoder_front( { return error; } + if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, st_ivas->hDecoderConfig->orientation_tracking ) ) != IVAS_ERR_OK ) + { + return error; + } } /*-------------------------------------------------------------------* @@ -624,7 +1015,12 @@ ivas_error ivas_init_decoder_front( if ( st_ivas->hDecoderConfig->Opt_ExternalOrientation ) { - if ( ( error = ivas_external_orientation_open( &( st_ivas->hExtOrientationData ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_external_orientation_open( &( st_ivas->hExtOrientationData ) +#ifdef API_5MS + , + ( st_ivas->hDecoderConfig->Opt_5ms ) ? 1 : MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -636,7 +1032,12 @@ ivas_error ivas_init_decoder_front( if ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) { - if ( ( error = ivas_combined_orientation_open( &( st_ivas->hCombinedOrientationData ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_combined_orientation_open( &( st_ivas->hCombinedOrientationData ) +#ifdef API_5MS + , + ( st_ivas->hDecoderConfig->Opt_5ms ) ? 1 : MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -672,7 +1073,11 @@ ivas_error ivas_init_decoder_front( * Allocate and initialize Binaural Renderer configuration handle *--------------------------------------------------------------------*/ - if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { if ( ( error = ivas_render_config_open( &( st_ivas->hRenderConfig ) ) ) != IVAS_ERR_OK ) { @@ -699,7 +1104,7 @@ ivas_error ivas_init_decoder( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ) { - int16_t i, n; + int16_t i, n, k; int16_t sce_id, cpe_id; int16_t numCldfbAnalyses, numCldfbSyntheses; int16_t granularity, n_channels_transport_jbm; @@ -708,6 +1113,7 @@ ivas_error ivas_init_decoder( AUDIO_CONFIG output_config; DECODER_CONFIG_HANDLE hDecoderConfig; ivas_error error; + int32_t ism_total_brate; error = IVAS_ERR_OK; @@ -721,10 +1127,20 @@ ivas_error ivas_init_decoder( if ( output_config == AUDIO_CONFIG_EXTERNAL ) { - if ( !( st_ivas->ism_mode == ISM_MODE_PARAM ) ) + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + hDecoderConfig->nchan_out = audioCfg2channels( AUDIO_CONFIG_HOA3 ); + hDecoderConfig->nchan_out += st_ivas->nchan_ism; + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + hDecoderConfig->nchan_out = st_ivas->nchan_transport + st_ivas->nchan_ism; + } + else if ( !( st_ivas->ism_mode == ISM_MODE_PARAM ) ) { hDecoderConfig->nchan_out = st_ivas->nchan_transport; } + st_ivas->hOutSetup.nchan_out_woLFE = hDecoderConfig->nchan_out; } @@ -736,6 +1152,14 @@ ivas_error ivas_init_decoder( ivas_output_init( &( st_ivas->hOutSetup ), output_config ); + if ( st_ivas->ivas_format == SBA_ISM_FORMAT && output_config == AUDIO_CONFIG_EXTERNAL ) + { + st_ivas->hOutSetup.ambisonics_order = SBA_HOA3_ORDER; + st_ivas->intern_config = AUDIO_CONFIG_HOA3; + st_ivas->hOutSetup.output_config = AUDIO_CONFIG_HOA3; + st_ivas->hOutSetup.nchan_out_woLFE = audioCfg2channels( AUDIO_CONFIG_HOA3 ); + } + /* Only initialize transport setup if it is used */ if ( st_ivas->transport_config != AUDIO_CONFIG_INVALID ) { @@ -784,17 +1208,23 @@ ivas_error ivas_init_decoder( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT /*-----------------------------------------------------------------* - * Set head/orientation tracking + * Initialize binuaral split rendering *-----------------------------------------------------------------*/ - if ( st_ivas->hDecoderConfig->Opt_Headrotation ) + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) { - if ( ( error = ivas_orient_trk_SetTrackingType( st_ivas->hHeadTrackData->OrientationTracker, st_ivas->hDecoderConfig->orientation_tracking ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dec_init_split_rend( st_ivas ) ) != IVAS_ERR_OK ) { return error; } } + else + { + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses = 1; + } +#endif /*-----------------------------------------------------------------* * Allocate and initialize SCE/CPE and other handles @@ -828,183 +1258,430 @@ ivas_error ivas_init_decoder( return error; } - for ( n = 0; n < st_ivas->nchan_transport; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + 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 ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + if ( ( error = efap_init_data( &( st_ivas->hEFAPdata ), st_ivas->hOutSetup.ls_azimuth, st_ivas->hOutSetup.ls_elevation, st_ivas->hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ) != IVAS_ERR_OK ) + { + return error; + } + + ivas_output_init( &( st_ivas->hTransSetup ), AUDIO_CONFIG_STEREO ); + } + } + else if ( st_ivas->ivas_format == ISM_FORMAT ) + { + int32_t element_brate_tmp[MAX_NUM_OBJECTS]; + + st_ivas->nSCE = st_ivas->nchan_transport; /* "st_ivas->nchan_transport" is known from ivas_dec_setup */ + st_ivas->nCPE = 0; + st_ivas->ism_extmeta_active = -1; + st_ivas->ism_extmeta_cnt = 0; + + if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + { + st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE; + st_ivas->nSCE = MAX_PARAM_ISM_WAVE; + + if ( ( error = ivas_param_ism_dec_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ( error = ivas_ism_metadata_dec_create( 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 ( ( 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; + } + + st_ivas->hISMDTX.sce_id_dtx = 0; + + if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + { + st_ivas->hSCE[1]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed3 = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2; + } + } + else if ( st_ivas->ivas_format == SBA_FORMAT ) + { + if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = ivas_spar_dec_open( st_ivas, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC && st_ivas->hOutSetup.is_loudspeaker_setup ) + { + if ( ( error = ivas_sba_get_hoa_dec_matrix( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( hDecoderConfig->output_config != AUDIO_CONFIG_FOA && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_STEREO && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_MONO ) + { + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) + { + return error; + } + + st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; + } + else + { + int16_t band_grouping[IVAS_MAX_NUM_BANDS + 1]; + + st_ivas->hSpar->enc_param_start_band = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); + if ( ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ) + { + st_ivas->hSpar->enc_param_start_band = 0; + + set_c( (int8_t *) st_ivas->hQMetaData->twoDirBands, (int8_t) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); + st_ivas->hQMetaData->numTwoDirBands = (uint8_t) st_ivas->hQMetaData->q_direction[0].cfg.nbands; + } + + ivas_dirac_config_bands( band_grouping, IVAS_MAX_NUM_BANDS, (int16_t) ( st_ivas->hDecoderConfig->output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ), + 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 ); + + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + if ( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate / st_ivas->nchan_transport ) ) != 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++ ) + { + if ( ( error = create_cpe_dec( st_ivas, cpe_id, ( ivas_total_brate / st_ivas->nchan_transport ) * 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 */ + if ( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 ) + { + if ( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate / ( st_ivas->nSCE + st_ivas->nCPE ) ) ) != 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 ( st_ivas->nCPE > 1 ) + { + if ( ( error = create_mct_dec( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* set CNA/CNG flags */ + ivas_sba_set_cna_cng_flag( st_ivas ); + } + else if ( 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; + st_ivas->ism_extmeta_cnt = 0; + if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = ivas_masa_dec_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->renderer_type == RENDERER_DIRAC || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + { + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + if ( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate / st_ivas->nchan_transport ) ) != 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++ ) + { + if ( ( error = create_cpe_dec( st_ivas, cpe_id, ( ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS ) ) != 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 ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + int32_t temp_brate[MAX_SCE]; + st_ivas->ism_extmeta_active = -1; + st_ivas->ism_extmeta_cnt = 0; + + if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = ivas_spar_dec_open( st_ivas, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC && st_ivas->hOutSetup.is_loudspeaker_setup ) + { + if ( ( error = ivas_sba_get_hoa_dec_matrix( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( hDecoderConfig->output_config != AUDIO_CONFIG_FOA && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_STEREO && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_MONO ) + { + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) + { + return error; + } + + st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; + } + else + { + int16_t band_grouping[IVAS_MAX_NUM_BANDS + 1]; + + st_ivas->hSpar->enc_param_start_band = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); + if ( ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ) + { + st_ivas->hSpar->enc_param_start_band = 0; + + set_c( (int8_t *) st_ivas->hQMetaData->twoDirBands, (int8_t) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); + st_ivas->hQMetaData->numTwoDirBands = (uint8_t) st_ivas->hQMetaData->q_direction[0].cfg.nbands; + } + + ivas_dirac_config_bands( band_grouping, IVAS_MAX_NUM_BANDS, (int16_t) ( st_ivas->hDecoderConfig->output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ), + 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 ); + + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + if ( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate / st_ivas->nchan_transport ) ) != IVAS_ERR_OK ) + { + return error; + } + + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + } + + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + st_ivas->nCPE += ( st_ivas->nchan_ism + 1 ) >> 1; + st_ivas->element_mode_init = IVAS_CPE_MDCT; + } + + for ( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + if ( ( error = create_cpe_dec( st_ivas, cpe_id, ( ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); + } } - /* init EFAP for custom LS output and set hTransSetup */ - if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + /* create CPE element for DFT Stereo like upmix */ + if ( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 ) { - if ( ( error = efap_init_data( &( st_ivas->hEFAPdata ), st_ivas->hOutSetup.ls_azimuth, st_ivas->hOutSetup.ls_elevation, st_ivas->hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ) != IVAS_ERR_OK ) + if ( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate / ( st_ivas->nSCE + st_ivas->nCPE ) ) ) != IVAS_ERR_OK ) { return error; } - ivas_output_init( &( st_ivas->hTransSetup ), AUDIO_CONFIG_STEREO ); + 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; } - } - else if ( st_ivas->ivas_format == ISM_FORMAT ) - { - int32_t element_brate_tmp[MAX_NUM_OBJECTS]; - - st_ivas->nSCE = st_ivas->nchan_transport; /* "st_ivas->nchan_transport" is known from ivas_dec_setup */ - st_ivas->nCPE = 0; - st_ivas->ism_extmeta_active = -1; - st_ivas->ism_extmeta_cnt = 0; - if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - st_ivas->nchan_transport = MAX_PARAM_ISM_WAVE; - st_ivas->nSCE = MAX_PARAM_ISM_WAVE; - - if ( ( error = ivas_param_ism_dec_open( st_ivas ) ) != IVAS_ERR_OK ) + st_ivas->nchan_transport += st_ivas->nchan_ism; + } + if ( st_ivas->nCPE > 1 ) + { + if ( ( error = create_mct_dec( st_ivas ) ) != IVAS_ERR_OK ) { return error; } } - if ( ( error = ivas_ism_metadata_dec_create( st_ivas, st_ivas->nSCE, element_brate_tmp ) ) != IVAS_ERR_OK ) + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - return error; + st_ivas->nchan_transport -= st_ivas->nchan_ism; } - for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) { - if ( ( error = create_sce_dec( st_ivas, sce_id, element_brate_tmp[sce_id] ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec_create( st_ivas, st_ivas->nchan_ism, temp_brate ) ) != 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; + if ( ( error = ivas_masa_ism_data_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } } - st_ivas->hISMDTX.sce_id_dtx = 0; - if ( st_ivas->ism_mode == ISM_MODE_PARAM ) - { - st_ivas->hSCE[1]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed3 = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->seed2; - } + /* set CNA/CNG flags */ + ivas_sba_set_cna_cng_flag( st_ivas ); } - else if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT ) + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) { + st_ivas->ism_extmeta_active = -1; + st_ivas->ism_extmeta_cnt = 0; if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) { return error; } - if ( st_ivas->ivas_format == MASA_FORMAT ) + k = 0; + ism_total_brate = 0; + while ( k < SIZE_IVAS_BRATE_TBL && ivas_total_brate != ivas_brate_tbl[k] ) { - if ( ( error = ivas_masa_dec_open( st_ivas ) ) != IVAS_ERR_OK ) - { - return error; - } + k++; } - else if ( st_ivas->ivas_format == SBA_FORMAT ) + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { - if ( ( error = ivas_spar_dec_open( st_ivas, 0 ) ) != IVAS_ERR_OK ) + /* one separated object */ + st_ivas->nSCE = 1; + + ism_total_brate = sep_object_brate[k - 2][0]; + if ( ( error = create_sce_dec( st_ivas, 0, ism_total_brate ) ) != IVAS_ERR_OK ) { return error; } - if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC && st_ivas->hOutSetup.is_loudspeaker_setup ) - { - if ( ( error = ivas_sba_get_hoa_dec_matrix( st_ivas->hOutSetup, &st_ivas->hoa_dec_mtx, st_ivas->hIntSetup.ambisonics_order ) ) != IVAS_ERR_OK ) - { - return error; - } - } + reset_indices_dec( st_ivas->hSCE[0]->hCoreCoder[0] ); - if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec_create( st_ivas, 1, NULL ) ) != IVAS_ERR_OK ) { return error; } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + int32_t temp_brate[MAX_SCE]; + st_ivas->nSCE = st_ivas->nchan_ism; /* number of objects */ - if ( hDecoderConfig->output_config != AUDIO_CONFIG_FOA && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_STEREO && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_MONO ) - { - if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) - { - return error; - } - - st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; - } - else + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) { - int16_t band_grouping[IVAS_MAX_NUM_BANDS + 1]; + temp_brate[sce_id] = sep_object_brate[k - 2][st_ivas->nSCE - 1]; + ism_total_brate += temp_brate[sce_id]; - st_ivas->hSpar->enc_param_start_band = min( IVAS_MAX_NUM_BANDS, SPAR_DIRAC_SPLIT_START_BAND ); - if ( ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ) + if ( ( error = create_sce_dec( st_ivas, sce_id, temp_brate[sce_id] ) ) != IVAS_ERR_OK ) { - st_ivas->hSpar->enc_param_start_band = 0; - - set_c( (int8_t *) st_ivas->hQMetaData->twoDirBands, (int8_t) 1, st_ivas->hQMetaData->q_direction[0].cfg.nbands ); - st_ivas->hQMetaData->numTwoDirBands = (uint8_t) st_ivas->hQMetaData->q_direction[0].cfg.nbands; + return error; } - ivas_dirac_config_bands( band_grouping, IVAS_MAX_NUM_BANDS, (int16_t) ( st_ivas->hDecoderConfig->output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ), - st_ivas->hSpar->dirac_to_spar_md_bands, st_ivas->hQMetaData->useLowerBandRes, st_ivas->hSpar->enc_param_start_band, 0 ); + reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); } - st_ivas->sba_dirac_stereo_flag = ivas_get_sba_dirac_stereo_flag( st_ivas ); - } - if ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM && - st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_SBA_LINEAR_DEC && st_ivas->ivas_format != SBA_FORMAT ) - { - if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec_create( st_ivas, st_ivas->nchan_ism, temp_brate ) ) != IVAS_ERR_OK ) { return error; } } - for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + if ( ( error = ivas_masa_dec_open( st_ivas ) ) != IVAS_ERR_OK ) { - if ( ( error = create_sce_dec( st_ivas, sce_id, ivas_total_brate / st_ivas->nchan_transport ) ) != IVAS_ERR_OK ) - { - return error; - } - - reset_indices_dec( st_ivas->hSCE[sce_id]->hCoreCoder[0] ); + return error; } - for ( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + if ( ( error = ivas_omasa_data_open( st_ivas ) ) != IVAS_ERR_OK ) { - if ( ( error = create_cpe_dec( st_ivas, cpe_id, ( ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS ) ) != IVAS_ERR_OK ) - { - return error; - } - - for ( n = 0; n < CPE_CHANNELS; n++ ) - { - reset_indices_dec( st_ivas->hCPE[cpe_id]->hCoreCoder[n] ); - } + return error; } - /* create CPE element for DFT Stereo like upmix */ - if ( st_ivas->sba_dirac_stereo_flag && st_ivas->nCPE == 0 ) + if ( st_ivas->renderer_type == RENDERER_DIRAC || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) { - if ( ( error = create_cpe_dec( st_ivas, cpe_id, ivas_total_brate / ( st_ivas->nSCE + st_ivas->nCPE ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != 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 ( st_ivas->nCPE > 1 ) + if ( ( error = create_cpe_dec( st_ivas, 0, ivas_total_brate - ism_total_brate ) ) != IVAS_ERR_OK ) { - if ( ( error = create_mct_dec( st_ivas ) ) != IVAS_ERR_OK ) - { - return error; - } + return error; } - /* set CNA/CNG flags */ - ivas_sba_set_cna_cng_flag( st_ivas ); + for ( n = 0; n < CPE_CHANNELS; n++ ) + { + reset_indices_dec( st_ivas->hCPE[0]->hCoreCoder[n] ); + } } else if ( st_ivas->ivas_format == MC_FORMAT ) { @@ -1140,7 +1817,7 @@ ivas_error ivas_init_decoder( if ( st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_MCMASA_MONO_STEREO ) { - if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) { return error; } @@ -1156,7 +1833,7 @@ ivas_error ivas_init_decoder( } else { - vbap_determine_gains( st_ivas->hVBAPdata, st_ivas->hLsSetupCustom->separate_ch_gains, 0, 0 ); + vbap_determine_gains( st_ivas->hVBAPdata, st_ivas->hLsSetupCustom->separate_ch_gains, 0, 0, 0 ); } } @@ -1251,12 +1928,15 @@ ivas_error ivas_init_decoder( if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { + if ( ( error = ivas_binRenderer_open( st_ivas ) ) != IVAS_ERR_OK ) { return error; } } - else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + + /* ParamISM is handled separately from other common config */ + else if ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_PARAM && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) ) { if ( st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) { @@ -1281,13 +1961,20 @@ ivas_error ivas_init_decoder( if ( st_ivas->hIntSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - if ( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) { return error; } } + +#ifdef API_5MS_BASELINE +#ifndef API_5MS if ( st_ivas->hDecoderConfig->voip_active ) +#else + if ( st_ivas->hDecoderConfig->Opt_5ms ) +#endif +#endif { granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels( st_ivas ); @@ -1323,30 +2010,86 @@ ivas_error ivas_init_decoder( } 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 ) + st_ivas->hRenderConfig, st_ivas->hSetOfHRTF, st_ivas->hDecoderConfig->output_Fs +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses +#endif + ) ) != IVAS_ERR_OK ) { return error; } st_ivas->binaural_latency_ns = st_ivas->hCrendWrapper->binaural_latency_ns; +#ifdef API_5MS_BASELINE +#ifndef API_5MS if ( st_ivas->hDecoderConfig->voip_active ) +#else + if ( st_ivas->hDecoderConfig->Opt_5ms ) +#endif +#endif { - granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); - n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels( st_ivas ); + if ( ( st_ivas->ivas_format == MC_FORMAT ) && ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) + { + granularity = NS2SA( output_Fs, CLDFB_SLOT_NS ); - if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, n_channels_transport_jbm, n_channels_transport_jbm, n_channels_transport_jbm, granularity ) ) != IVAS_ERR_OK ) + n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels( st_ivas ); + + if ( ( error = ivas_jbm_dec_tc_buffer_open( 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( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); + + n_channels_transport_jbm = ivas_jbm_dec_get_num_tc_channels( st_ivas ); + + if ( ( error = ivas_jbm_dec_tc_buffer_open( 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 ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + /* Allocate TD renderer for the objects in DISC mode */ + if ( ( error = ivas_td_binaural_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + if ( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( st_ivas->renderer_type == RENDERER_DIRAC && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + if ( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) { return error; } } } - if ( st_ivas->ivas_format == ISM_FORMAT && - st_ivas->ism_mode == ISM_MODE_DISC && + if ( ( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && + ( st_ivas->ism_mode == ISM_MODE_DISC || st_ivas->ism_mode == ISM_SBA_MODE_DISC ) && ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_NON_DIEGETIC_DOWNMIX || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || + st_ivas->renderer_type == RENDERER_OSBA_STEREO || + st_ivas->renderer_type == RENDERER_OSBA_AMBI || + st_ivas->renderer_type == RENDERER_OSBA_LS || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) @@ -1357,6 +2100,26 @@ ivas_error ivas_init_decoder( } } + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + /* Allocate TD renderer for the objects in DISC mode */ + if ( ( error = ivas_td_binaural_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + if ( ( error = ivas_sba_ism_separate_object_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + /*-----------------------------------------------------------------* * LFE handles for rendering after rendering to adjust LFE delay to binaural filter delay *-----------------------------------------------------------------*/ @@ -1368,8 +2131,13 @@ ivas_error ivas_init_decoder( { if ( st_ivas->hBinRenderer->render_lfe ) { - /* Account for filterbank delay */ - binauralization_delay_ns += IVAS_FB_DEC_DELAY_NS; +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#endif + { + /* Account for filterbank delay */ + binauralization_delay_ns += IVAS_FB_DEC_DELAY_NS; + } } else { @@ -1417,7 +2185,7 @@ ivas_error ivas_init_decoder( } /* CLDFB Interpolation weights */ - if ( st_ivas->ivas_format == SBA_FORMAT && !st_ivas->sba_dirac_stereo_flag && st_ivas->hDecoderConfig->nchan_out != 1 ) + if ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && !st_ivas->sba_dirac_stereo_flag && st_ivas->hDecoderConfig->nchan_out != 1 ) { ivas_spar_get_cldfb_gains( st_ivas->hSpar, st_ivas->cldfbAnaDec[0], st_ivas->cldfbSynDec[0], hDecoderConfig ); } @@ -1426,16 +2194,24 @@ ivas_error ivas_init_decoder( * Allocate and initialize limiter struct *-----------------------------------------------------------------*/ - if ( ( st_ivas->hLimiter = ivas_limiter_open( hDecoderConfig->nchan_out, output_Fs ) ) == NULL ) + if ( ( error = ivas_limiter_open( &st_ivas->hLimiter, hDecoderConfig->nchan_out, output_Fs ) ) != IVAS_ERR_OK ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Failed to open limiter handle" ); + return error; } /*-----------------------------------------------------------------* * Allocate and initialize JBM struct + buffer *-----------------------------------------------------------------*/ + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms && +#endif +#else + st_ivas->hDecoderConfig->voip_active == 1 && +#endif + st_ivas->hTcBuffer == NULL ) - if ( st_ivas->hDecoderConfig->voip_active && 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( st_ivas ); @@ -1446,6 +2222,7 @@ ivas_error ivas_init_decoder( } } +#if !defined( API_5MS ) || defined( API_5MS_BASELINE ) if ( st_ivas->hTcBuffer == NULL ) { /* we need the handle anyway, but without the buffer*/ @@ -1454,8 +2231,8 @@ ivas_error ivas_init_decoder( return error; } } +#endif -#ifdef FIX_470_MASA_JBM_EXT if ( st_ivas->hJbmMetadata == NULL ) { if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) @@ -1466,7 +2243,35 @@ ivas_error ivas_init_decoder( } } } + + /*-----------------------------------------------------------------* + * Allocate floating-point output audio buffers + *-----------------------------------------------------------------*/ + +#ifdef API_5MS + if ( !st_ivas->hDecoderConfig->Opt_5ms ) +#else + if ( !st_ivas->hDecoderConfig->voip_active ) #endif + { + for ( n = 0; n < ivas_get_nchan_buffers_dec( st_ivas ); n++ ) + { + /* note: these are intra-frame heap memories */ + if ( ( st_ivas->p_output_f[n] = (float *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point output audio buffer!\n" ) ); + } + } + } + else + { + n = 0; + } + + for ( ; n < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) + { + st_ivas->p_output_f[n] = NULL; + } return error; } @@ -1670,7 +2475,16 @@ void ivas_initialize_handles_dec( /* rendering handles */ st_ivas->hBinRenderer = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + 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; st_ivas->hEFAPdata = NULL; st_ivas->hVBAPdata = NULL; @@ -1683,6 +2497,7 @@ void ivas_initialize_handles_dec( st_ivas->hHrtfFastConv = NULL; st_ivas->hHrtfParambin = NULL; st_ivas->hoa_dec_mtx = NULL; + st_ivas->hMasaIsmData = NULL; st_ivas->hHeadTrackData = NULL; st_ivas->hHrtfTD = NULL; @@ -1691,10 +2506,30 @@ void ivas_initialize_handles_dec( st_ivas->hExtOrientationData = NULL; st_ivas->hCombinedOrientationData = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + st_ivas->hSplitBinRend.hMultiBinCldfbData = NULL; + st_ivas->hSplitBinRend.hSplitRendBits = NULL; + st_ivas->hSplitBinRend.hCldfbDataOut = NULL; +#ifdef API_5MS + st_ivas->hSplitBinRend.tdDataOut = NULL; + st_ivas->hSplitBinRend.numTdSamplesPerChannelCached = 0; +#endif + ivas_init_split_rend_handles( &st_ivas->hSplitBinRend.splitrend ); +#endif + + /* JBM handles */ st_ivas->hTcBuffer = NULL; -#ifdef FIX_470_MASA_JBM_EXT st_ivas->hJbmMetadata = NULL; + + /* floating-point output audio buffers */ +#ifdef FIX_719_CRASH_IN_CLEANUP + for ( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ ) +#else + for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) #endif + { + st_ivas->p_output_f[i] = NULL; + } return; } @@ -1768,7 +2603,7 @@ void ivas_destroy_dec( } /* ISM metadata handles */ - ivas_ism_metadata_close( st_ivas->hIsmMetaData ); + ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 ); /* ISM renderer handle */ if ( st_ivas->hIsmRendererData != NULL ) @@ -1781,10 +2616,12 @@ void ivas_destroy_dec( /* DirAC handle */ if ( st_ivas->ivas_format == ISM_FORMAT ) { - ivas_param_ism_dec_close( &( st_ivas->hDirAC ), st_ivas->hDecoderConfig->output_config ); + ivas_param_ism_dec_close( &( st_ivas->hDirAC ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config ); } else { + ivas_dirac_rend_close( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) ); ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); } @@ -1825,11 +2662,45 @@ void ivas_destroy_dec( /* Fastconv binaural renderer handle */ ivas_binRenderer_close( &st_ivas->hBinRenderer ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* Split binaural renderer handle */ + ivas_split_renderer_close( &st_ivas->hSplitBinRend.splitrend ); + + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + free( st_ivas->hSplitBinRend.hCldfbDataOut ); + st_ivas->hSplitBinRend.hCldfbDataOut = NULL; + } + +#ifndef API_5MS + if ( st_ivas->hSplitBinRend.hSplitRendBits != NULL ) + { + free( st_ivas->hSplitBinRend.hSplitRendBits ); + st_ivas->hSplitBinRend.hSplitRendBits = NULL; + } +#endif +#ifdef API_5MS + if ( st_ivas->hSplitBinRend.tdDataOut != NULL ) + { + free( st_ivas->hSplitBinRend.tdDataOut ); + } +#endif +#endif + /* Parametric binaural renderer handle */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); +#else ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); +#endif /* Crend handle */ - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses +#endif + ); /* Reverb handle */ ivas_reverb_close( &st_ivas->hReverb ); @@ -1850,6 +2721,11 @@ void ivas_destroy_dec( free( st_ivas->hMonoDmxRenderer ); st_ivas->hMonoDmxRenderer = NULL; } + /* MASA ISM structure */ + ivas_masa_ism_data_close( &st_ivas->hMasaIsmData ); + + /* OMASA structure */ + ivas_omasa_data_close( &st_ivas->hMasaIsmData ); /* Head track data handle */ ivas_headTrack_close( &st_ivas->hHeadTrackData ); @@ -1874,6 +2750,8 @@ void ivas_destroy_dec( /* CRend binaural renderer handle */ ivas_HRTF_CRend_binary_close( &st_ivas->hSetOfHRTF ); + /* Fastconv HRTF memories */ + ivas_binaural_hrtf_close( &st_ivas->hHrtfFastConv ); /* Fastconv HRTF filters */ ivas_HRTF_fastconv_binary_close( &st_ivas->hHrtfFastConv ); @@ -1895,13 +2773,21 @@ void ivas_destroy_dec( ivas_jbm_dec_tc_buffer_close( &st_ivas->hTcBuffer ); -#ifdef FIX_470_MASA_JBM_EXT if ( st_ivas->hJbmMetadata != NULL ) { free( st_ivas->hJbmMetadata ); st_ivas->hJbmMetadata = NULL; } -#endif + + /* floating-point output audio buffers */ + for ( i = 0; i < MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS; i++ ) + { + if ( st_ivas->p_output_f[i] != NULL ) + { + free( st_ivas->p_output_f[i] ); + st_ivas->p_output_f[i] = NULL; + } + } /* main IVAS handle */ free( st_ivas ); @@ -1923,9 +2809,12 @@ void ivas_init_dec_get_num_cldfb_instances( int16_t *numCldfbSyntheses /* o : number of needed CLDFB synthesis instances */ ) { + IVAS_FORMAT ivas_format; *numCldfbAnalyses = st_ivas->nchan_transport; *numCldfbSyntheses = st_ivas->hDecoderConfig->nchan_out; + ivas_format = ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_NONE ) ? SBA_FORMAT : st_ivas->ivas_format; /* treat ISM_SBA_MODE_NONE just like SBA_FORMAT */ + switch ( st_ivas->renderer_type ) { case RENDERER_BINAURAL_PARAMETRIC: @@ -1941,14 +2830,37 @@ void ivas_init_dec_get_num_cldfb_instances( *numCldfbAnalyses = st_ivas->nchan_transport + 1; } + if ( ivas_format == SBA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + *numCldfbAnalyses += st_ivas->nchan_ism; + } + } + + if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + *numCldfbAnalyses += st_ivas->nchan_ism; + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + *numCldfbAnalyses = st_ivas->nchan_transport + 1; + } + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0]->useTdDecorr ) +#else if ( st_ivas->hDiracDecBin->useTdDecorr ) +#endif { *numCldfbAnalyses += 2; } break; case RENDERER_NON_DIEGETIC_DOWNMIX: case RENDERER_MONO_DOWNMIX: - if ( st_ivas->ivas_format == ISM_FORMAT ) + if ( ivas_format == ISM_FORMAT || ivas_format == MASA_ISM_FORMAT || ivas_format == SBA_ISM_FORMAT ) { /* CLDFB not used in rendering */ *numCldfbAnalyses = 0; @@ -1956,7 +2868,7 @@ void ivas_init_dec_get_num_cldfb_instances( } break; case RENDERER_DIRAC: - if ( st_ivas->ivas_format == SBA_FORMAT ) + if ( ivas_format == SBA_FORMAT ) { *numCldfbAnalyses = st_ivas->hSpar->hFbMixer->fb_cfg->num_in_chans; @@ -1973,13 +2885,13 @@ void ivas_init_dec_get_num_cldfb_instances( *numCldfbSyntheses = MAX_OUTPUT_CHANNELS; } } - if ( st_ivas->ivas_format != SBA_FORMAT ) + if ( ivas_format != SBA_FORMAT ) { if ( st_ivas->nchan_transport > 2 && st_ivas->sba_planar ) { *numCldfbAnalyses = st_ivas->nchan_transport + 1; } - else if ( st_ivas->nchan_transport == 1 && st_ivas->hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + else if ( st_ivas->nchan_transport == 1 && st_ivas->hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { *numCldfbAnalyses = st_ivas->nchan_transport + 1; } @@ -2014,7 +2926,10 @@ void ivas_init_dec_get_num_cldfb_instances( case RENDERER_BINAURAL_MIXER_CONV_ROOM: case RENDERER_BINAURAL_FASTCONV: case RENDERER_BINAURAL_FASTCONV_ROOM: - if ( st_ivas->ivas_format == SBA_FORMAT ) + case RENDERER_OSBA_STEREO: + case RENDERER_OSBA_AMBI: + case RENDERER_OSBA_LS: + if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { if ( st_ivas->sba_dirac_stereo_flag ) { @@ -2077,7 +2992,14 @@ void ivas_init_dec_get_num_cldfb_instances( if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_MONO && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_STEREO ) { - *numCldfbAnalyses = max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbAnalyses ); + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + { + *numCldfbAnalyses = max( MC_PARAMUPMIX_MAX_INPUT_CHANS, *numCldfbAnalyses ); + } + else + { + *numCldfbAnalyses = max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbAnalyses ); + } *numCldfbSyntheses = max( MC_PARAMUPMIX_MIN_CLDFB, *numCldfbSyntheses ); } @@ -2139,7 +3061,7 @@ static ivas_error doSanityChecks_IVAS( else if ( st_ivas->ivas_format == SBA_FORMAT ) { /* Verify SBA output coniguration */ - if ( output_config == AUDIO_CONFIG_INVALID || output_config == AUDIO_CONFIG_EXTERNAL ) + if ( output_config == AUDIO_CONFIG_INVALID ) { return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for SBA" ); } @@ -2160,9 +3082,20 @@ static ivas_error doSanityChecks_IVAS( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && 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 ) { - if ( !( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + if ( !( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) ) { return IVAS_ERROR( IVAS_ERR_HEAD_ROTATION_NOT_SUPPORTED, "Wrong set-up: Head-rotation not supported in this configuration" ); } @@ -2176,6 +3109,14 @@ static ivas_error doSanityChecks_IVAS( } } + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && output_config == AUDIO_CONFIG_EXTERNAL ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" ); + } + } + #ifdef DEBUGGING if ( ( st_ivas->hDecoderConfig->force_rend == FORCE_TD_RENDERER ) && ( ( st_ivas->ivas_format != MC_FORMAT && st_ivas->ivas_format != ISM_FORMAT ) || ( output_config != AUDIO_CONFIG_BINAURAL && output_config != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) || ( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_PARAM ) || ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode != MC_MODE_MCT ) ) ) { diff --git a/lib_dec/ivas_ism_dec.c b/lib_dec/ivas_ism_dec.c index c031ec8c4bd36f36f7cd001f840f9ebfaeffa7ff..1e9007920306c643966a3b65a87631e527daaad7 100644 --- a/lib_dec/ivas_ism_dec.c +++ b/lib_dec/ivas_ism_dec.c @@ -41,17 +41,22 @@ #include "wmc_auto.h" /*-------------------------------------------------------------------------* - * ivas_ism_bitrate_switching() + * ivas_ism_bitrate_switching_dec() * * *-------------------------------------------------------------------------*/ -static ivas_error ivas_ism_bitrate_switching( +static ivas_error ivas_ism_bitrate_switching_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const int16_t nchan_transport_old, /* i : last number of transport channels */ const ISM_MODE last_ism_mode, /* i : last ISM mode */ uint16_t *nSamplesRendered, /* o : number of samples rendered */ - int16_t *data /* o : rendered samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { ivas_error error; @@ -62,6 +67,7 @@ static ivas_error ivas_ism_bitrate_switching( int16_t tc_nchan_tc_new; int16_t tc_nchan_allocate_new; int16_t tc_granularity_new; + int16_t ch, nchan_out_buff, nchan_out_buff_old; AUDIO_CONFIG intern_config_old; IVAS_OUTPUT_SETUP hIntSetupOld; RENDERER_TYPE renderer_type_old; @@ -75,8 +81,10 @@ static ivas_error ivas_ism_bitrate_switching( st_ivas->ism_mode = last_ism_mode; ivas_init_dec_get_num_cldfb_instances( st_ivas, &numCldfbAnalyses_old, &numCldfbSyntheses_old ); st_ivas->ism_mode = ism_mode; + nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas ); - if ( ( error = ivas_ism_config( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->nchan_ism, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_config( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->nchan_ism, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL, + 0 ) ) != IVAS_ERR_OK ) { return error; } @@ -119,25 +127,34 @@ static ivas_error ivas_ism_bitrate_switching( ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->hDecoderConfig->output_config ); } +#ifdef API_5MS_BASELINE +#ifndef API_5MS if ( st_ivas->hDecoderConfig->voip_active ) +#else + if ( st_ivas->hDecoderConfig->Opt_5ms ) +#endif +#endif { /* transfer subframe info from DirAC or ParamMC to central tc buffer */ - if ( last_ism_mode == ISM_MODE_PARAM && st_ivas->hDirAC != NULL && ( st_ivas->renderer_type != RENDERER_MONO_DOWNMIX && st_ivas->renderer_type != RENDERER_DISABLE ) ) + if ( last_ism_mode == ISM_MODE_PARAM && st_ivas->hSpatParamRendCom != NULL && ( st_ivas->renderer_type != RENDERER_MONO_DOWNMIX && st_ivas->renderer_type != RENDERER_DISABLE ) ) { - st_ivas->hTcBuffer->nb_subframes = st_ivas->hDirAC->nb_subframes; - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hDirAC->subframes_rendered; - st_ivas->hTcBuffer->num_slots = st_ivas->hDirAC->num_slots; - st_ivas->hTcBuffer->slots_rendered = st_ivas->hDirAC->slots_rendered; - mvs2s( st_ivas->hDirAC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; + st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; + mvs2s( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } /* JBM: when granularity goes down (e.g. Discrete ISM with TD Obj Renderer -> ParamISM with binaural fastconv render what still fits in the new granularity */ - tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->hDecoderConfig->output_Fs ); - + tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->ivas_format, st_ivas->mc_mode, st_ivas->hDecoderConfig->output_Fs ); if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) { - if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, MC_MODE_NONE, last_ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, MC_MODE_NONE, last_ism_mode, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -166,17 +183,20 @@ static ivas_error ivas_ism_bitrate_switching( if ( st_ivas->ism_mode == ISM_MODE_DISC && last_ism_mode == ISM_MODE_PARAM ) { /* Deallocate the ParamISM struct */ - ivas_param_ism_dec_close( &( st_ivas->hDirAC ), st_ivas->hDecoderConfig->output_config ); + ivas_param_ism_dec_close( &( st_ivas->hDirAC ), &( st_ivas->hSpatParamRendCom ), st_ivas->hDecoderConfig->output_config ); -#ifdef FIX_568_ISM_BITRATE_SWITCHING - if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) -#else - if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL ) + if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM #endif + ) { /* close the parametric binaural renderer */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + 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 */ if ( st_ivas->hHrtfTD == NULL || st_ivas->hBinRendererTd == NULL ) { @@ -184,6 +204,13 @@ static ivas_error ivas_ism_bitrate_switching( { return error; } + if ( st_ivas->hIntSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + if ( ( error = ivas_reverb_open( &st_ivas->hReverb, st_ivas->hDecoderConfig->output_config, NULL, st_ivas->hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, st_ivas->hRenderConfig, st_ivas->hDecoderConfig->output_Fs ) ) != IVAS_ERR_OK ) + { + return error; + } + } } } else @@ -202,17 +229,22 @@ static ivas_error ivas_ism_bitrate_switching( } } -#ifdef FIX_568_ISM_BITRATE_SWITCHING if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR ) -#else - if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) -#endif { /* close the parametric binaural renderer */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); +#else ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); +#endif /* Open Crend Binaural renderer */ - if ( ( 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 ) + if ( ( 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 +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -229,11 +261,12 @@ static ivas_error ivas_ism_bitrate_switching( { return error; } -#ifdef FIX_568_ISM_BITRATE_SWITCHING - if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) -#else - if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL ) + + if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM #endif + ) { /* open the parametric binaural renderer */ if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) @@ -258,6 +291,11 @@ static ivas_error ivas_ism_bitrate_switching( { st_ivas->hHrtfTD = NULL; } + + if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + ivas_reverb_close( &st_ivas->hReverb ); + } } } else @@ -271,11 +309,7 @@ static ivas_error ivas_ism_bitrate_switching( } } -#ifdef FIX_568_ISM_BITRATE_SWITCHING if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR ) -#else - if ( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) -#endif { /* open the parametric binaural renderer */ if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) @@ -289,7 +323,12 @@ static ivas_error ivas_ism_bitrate_switching( } /* close the crend binaural renderer */ - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses +#endif + ); } } @@ -303,10 +342,48 @@ static ivas_error ivas_ism_bitrate_switching( } /*-----------------------------------------------------------------* - * Reconfigure TC buffer + * floating-point output audio buffers *-----------------------------------------------------------------*/ +#ifdef API_5MS + if ( !st_ivas->hDecoderConfig->Opt_5ms ) +#else + if ( !st_ivas->hDecoderConfig->voip_active ) +#endif + { + nchan_out_buff = ivas_get_nchan_buffers_dec( st_ivas ); + + if ( 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 ( ( st_ivas->p_output_f[ch] = (float *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( float ) ) ) == 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( st_ivas->p_output_f[ch] ); + st_ivas->p_output_f[ch] = NULL; + } + } + } + + /*-----------------------------------------------------------------* + * Reconfigure TC buffer + *-----------------------------------------------------------------*/ +#ifdef API_5MS +#ifdef API_5MS_BASELINE + if ( st_ivas->hDecoderConfig->Opt_5ms ) +#endif +#else if ( st_ivas->hDecoderConfig->voip_active == 1 ) +#endif { int16_t tc_nchan_full_new; DECODER_TC_BUFFER_HANDLE hTcBuffer; @@ -339,14 +416,14 @@ static ivas_error ivas_ism_bitrate_switching( } /* transfer subframe info from central tc buffer to ParamMC or McMASA (DirAC) */ - if ( st_ivas->hDirAC != NULL ) + if ( st_ivas->hSpatParamRendCom != NULL ) { - st_ivas->hDirAC->nb_subframes = st_ivas->hTcBuffer->nb_subframes; - st_ivas->hDirAC->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; - st_ivas->hDirAC->num_slots = st_ivas->hTcBuffer->num_slots; - st_ivas->hDirAC->slots_rendered = st_ivas->hTcBuffer->slots_rendered; + st_ivas->hSpatParamRendCom->nb_subframes = st_ivas->hTcBuffer->nb_subframes; + st_ivas->hSpatParamRendCom->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + st_ivas->hSpatParamRendCom->num_slots = st_ivas->hTcBuffer->num_slots; + st_ivas->hSpatParamRendCom->slots_rendered = st_ivas->hTcBuffer->slots_rendered; - mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hDirAC->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } } @@ -365,7 +442,12 @@ ivas_error ivas_ism_dec_config( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ const ISM_MODE last_ism_mode, /* i/o: last ISM mode */ uint16_t *nSamplesRendered, /* o : number of samples flushed when the renderer granularity changes */ - int16_t *data /* o : flushed PCM samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { int32_t ivas_total_brate; @@ -404,7 +486,11 @@ ivas_error ivas_ism_dec_config( { if ( ( st_ivas->ism_mode != last_ism_mode ) || ( st_ivas->hDecoderConfig->ivas_total_brate != st_ivas->hDecoderConfig->last_ivas_total_brate ) ) { - if ( ( error = ivas_ism_bitrate_switching( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_bitrate_switching_dec( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -427,7 +513,11 @@ ivas_error ivas_ism_dec_config( /* ISM mode switching */ if ( st_ivas->ism_mode != last_ism_mode ) { - if ( ( error = ivas_ism_bitrate_switching( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_bitrate_switching_dec( st_ivas, nchan_transport_old, last_ism_mode, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_dec/ivas_ism_dtx_dec.c b/lib_dec/ivas_ism_dtx_dec.c index 1c48050bee21382019bfebade5f3832a449e299a..682ba615fa3b57449965a326f0f1e9a56690ca39 100644 --- a/lib_dec/ivas_ism_dtx_dec.c +++ b/lib_dec/ivas_ism_dtx_dec.c @@ -31,6 +31,7 @@ *******************************************************************************************************/ #include +#include #include "options.h" #include "ivas_prot.h" #include "prot.h" @@ -95,7 +96,11 @@ ivas_error ivas_ism_dtx_dec( st_ivas->ism_mode = ism_mode_bstr; } - if ( ( error = ivas_ism_dec_config( st_ivas, last_ism_mode, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_dec_config( st_ivas, last_ism_mode, NULL, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + PCM_NOT_KNOW, +#endif + NULL ) ) != IVAS_ERR_OK ) { return error; } @@ -156,3 +161,51 @@ ivas_error ivas_ism_dtx_dec( return IVAS_ERR_OK; } + + +#ifdef CR_FIX_ISM_DTX_INFINITE_CNG_ON_TRAILING_SILENCE +/*-------------------------------------------------------------------* + * ivs_ism_dtx_limit_noise_energy_for_near_silence() + * + * for DTX frames where the energy of the sent noise estimate of the dominant object + * is near silence, limit the other objects CNG energies to the same level + *-------------------------------------------------------------------*/ + +void ivas_ism_dtx_limit_noise_energy_for_near_silence( + SCE_DEC_HANDLE hSCE[], /* i/o: SCE encoder structures */ + const int16_t sce_id_dtx, /* i : SCE DTX ID */ + const int16_t nchan_transport /* i : number of transport channels */ +) +{ + float fac, cng_noise_nrg_obj, cng_noise_nrg_dominant; + int16_t ch, cng_noise_level_len; + HANDLE_FD_CNG_COM hFdCngCom; + + hFdCngCom = hSCE[sce_id_dtx]->hCoreCoder[0]->hFdCngDec->hFdCngCom; + cng_noise_level_len = hFdCngCom->stopFFTbin - hFdCngCom->startBand; + cng_noise_nrg_dominant = dotp( hFdCngCom->cngNoiseLevel, hFdCngCom->cngNoiseLevel, cng_noise_level_len ); + + if ( cng_noise_nrg_dominant < 1.f ) + { + for ( ch = 0; ch < nchan_transport; ch++ ) + { + if ( ch == sce_id_dtx ) + { + continue; + } + + hFdCngCom = hSCE[ch]->hCoreCoder[0]->hFdCngDec->hFdCngCom; + cng_noise_level_len = hFdCngCom->stopFFTbin - hFdCngCom->startBand; + cng_noise_nrg_obj = dotp( hFdCngCom->cngNoiseLevel, hFdCngCom->cngNoiseLevel, cng_noise_level_len ); + + if ( cng_noise_nrg_obj > cng_noise_nrg_dominant ) + { + fac = sqrtf( cng_noise_nrg_dominant / cng_noise_nrg_obj ); + v_multc( hFdCngCom->cngNoiseLevel, fac, hFdCngCom->cngNoiseLevel, cng_noise_level_len ); + } + } + } + + return; +} +#endif diff --git a/lib_dec/ivas_ism_metadata_dec.c b/lib_dec/ivas_ism_metadata_dec.c index 86c43f0ffdf909a046ba02ff5b7015c4ce7b2786..13c8ceeb80386fdcc6fa492529bd2fb500b3f679 100644 --- a/lib_dec/ivas_ism_metadata_dec.c +++ b/lib_dec/ivas_ism_metadata_dec.c @@ -149,13 +149,13 @@ ivas_error ivas_ism_metadata_dec( ISM_DTX_DATA_DEC hISMDTX, /* i/o: ISM DTX structure */ const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Config Handle */ int16_t *ism_extmeta_active, /* i/o: Extended metadata active in renderer */ - int16_t *ism_extmeta_cnt /* i/o: Number of change frames observed */ + int16_t *ism_extmeta_cnt, /* i/o: Number of change frames observed */ + DEC_CORE_HANDLE st0 /* i : core-coder handle */ ) { int16_t ch, nb_bits_start = 0, last_bit_pos; int16_t idx_radius; int32_t element_brate[MAX_NUM_OBJECTS], total_brate[MAX_NUM_OBJECTS]; - DEC_CORE_HANDLE st0; int16_t ism_extmeta_bitstream; int16_t non_diegetic_flag_global; float yaw, pitch, radius; @@ -178,7 +178,6 @@ ivas_error ivas_ism_metadata_dec( push_wmops( "ism_meta_dec" ); /* initialization */ - st0 = hSCE[0]->hCoreCoder[0]; ism_metadata_flag_global = 0; nchan_transport_prev = *nchan_transport; @@ -204,11 +203,18 @@ ivas_error ivas_ism_metadata_dec( /*----------------------------------------------------------------* * Read ISM common signaling *----------------------------------------------------------------*/ + if ( ism_mode == ISM_SBA_MODE_DISC ) + { + /* number of objects was read in ivas_dec_setup() */ + st0->next_bit_pos += NO_BITS_MASA_ISM_NO_OBJ; + } + else if ( ism_mode != ISM_MASA_MODE_DISC && ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* number of objects was read in ivas_dec_setup() */ + st0->next_bit_pos += nchan_ism; - /* number of objects was read in ivas_dec_setup() */ - st0->next_bit_pos += nchan_ism; - - ism_mode = ivas_ism_mode_select( nchan_ism, ism_total_brate ); + ism_mode = ivas_ism_mode_select( nchan_ism, ism_total_brate ); + } if ( ism_mode == ISM_MODE_PARAM ) { @@ -225,7 +231,7 @@ ivas_error ivas_ism_metadata_dec( } /* read extended metadata presence flag */ - if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) + if ( ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) && ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { ism_extmeta_bitstream = get_next_indice( st0, ISM_EXTENDED_METADATA_BITS ); @@ -255,7 +261,19 @@ ivas_error ivas_ism_metadata_dec( /* Read ISM metadata flags (one per object) */ for ( ch = 0; ch < *nchan_transport; ch++ ) { - ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS ); + if ( ism_mode == ISM_SBA_MODE_DISC ) + { + ism_imp[ch] = get_next_indice( st0, 1 ); + } + else if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* ISM importance flag is already read in ivas_masa_decode() */ + ism_imp[ch] = hIsmMeta[ch]->ism_imp; + } + else + { + ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS ); + } if ( ism_imp[ch] > ISM_NO_META ) { @@ -276,14 +294,21 @@ ivas_error ivas_ism_metadata_dec( } /* read ISM_NO_META class signalling */ - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) { for ( ch = 0; ch < *nchan_transport; ch++ ) { if ( ism_imp[ch] == ISM_NO_META ) { /* low-rate ISM_NO_META frame */ - null_metadata_flag[ch] = get_next_indice( st0, ISM_METADATA_INACTIVE_FLAG_BITS ); + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + null_metadata_flag[ch] = hIsmMeta[ch]->ism_md_null_flag; + } + else + { + null_metadata_flag[ch] = get_next_indice( st0, ISM_METADATA_INACTIVE_FLAG_BITS ); + } } } @@ -291,17 +316,29 @@ ivas_error ivas_ism_metadata_dec( { if ( ism_imp[ch] == ISM_NO_META ) { - if ( null_metadata_flag[ch] ) + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { - /* read the true ISM class */ - ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS ); + lowrate_metadata_flag[ch] = hIsmMeta[ch]->ism_md_lowrate_flag; + + if ( null_metadata_flag[ch] == 0 ) + { + ism_metadata_flag_global |= lowrate_metadata_flag[ch]; + } } - else + else if ( ism_mode != ISM_SBA_MODE_DISC ) { - /* read presence of MD in low-rate ISM_NO_META frame flag */ - lowrate_metadata_flag[ch] = get_next_indice( st0, ISM_METADATA_INACTIVE_FLAG_BITS ); + if ( null_metadata_flag[ch] ) + { + /* read the true ISM class */ + ism_imp[ch] = get_next_indice( st0, ISM_METADATA_FLAG_BITS ); + } + else + { + /* read presence of MD in low-rate ISM_NO_META frame flag */ + lowrate_metadata_flag[ch] = get_next_indice( st0, ISM_METADATA_INACTIVE_FLAG_BITS ); - ism_metadata_flag_global |= lowrate_metadata_flag[ch]; + ism_metadata_flag_global |= lowrate_metadata_flag[ch]; + } } } } @@ -324,7 +361,7 @@ ivas_error ivas_ism_metadata_dec( for ( ch = 0; ch < nchan_ism; ch++ ) { hIsmMetaData = hIsmMeta[ch]; - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nb_bits_start = st0->next_bit_pos; } @@ -410,7 +447,7 @@ ivas_error ivas_ism_metadata_dec( } } /* save number of metadata bits read */ - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { nb_bits_metadata[ch] = st0->next_bit_pos - nb_bits_start; } @@ -494,13 +531,45 @@ ivas_error ivas_ism_metadata_dec( hISMDTX.ism_dtx_hangover_cnt += 1; } + if ( ism_mode == ISM_SBA_MODE_DISC ) + { + /* set the bitstream pointer to its original position */ + nb_bits_metadata[0] = st0->next_bit_pos; + st0->bit_stream = bstr_orig; + st0->next_bit_pos = next_bit_pos_orig; + + /* updates*/ + set_s( md_diff_flag, 1, nchan_ism ); + + update_last_metadata( nchan_ism, hIsmMeta, md_diff_flag ); + pop_wmops(); + return IVAS_ERR_OK; + } + + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + ism_metadata_flag_global = 1; + } + /*----------------------------------------------------------------* * Configuration and decision about bitrates per channel *----------------------------------------------------------------*/ if ( !bfi ) { - if ( ( error = ivas_ism_config( ism_total_brate, *nchan_transport, nchan_ism, hIsmMeta, ism_extmeta_bitstream, null_metadata_flag, ism_imp, element_brate, total_brate, nb_bits_metadata ) ) != IVAS_ERR_OK ) + int16_t masa_ism_flag = 0; + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + masa_ism_flag = 1; + + for ( ch = 0; ch < *nchan_transport; ch++ ) + { + element_brate[ch] = hSCE[ch]->element_brate; + } + } + + if ( ( error = ivas_ism_config( ism_total_brate, *nchan_transport, nchan_ism, hIsmMeta, ism_extmeta_bitstream, null_metadata_flag, ism_imp, element_brate, total_brate, nb_bits_metadata, + masa_ism_flag ) ) != IVAS_ERR_OK ) { return error; } @@ -510,20 +579,19 @@ ivas_error ivas_ism_metadata_dec( hIsmMeta[ch]->last_ism_metadata_flag = hIsmMeta[ch]->ism_metadata_flag; hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { -#ifdef FIX_562_ISM2_64KBPS if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) || ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) ) -#else - if ( ism_imp[ch] == ISM_NO_META && total_brate[ch] < ACELP_8k00 ) -#endif { hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; } } - hSCE[ch]->element_brate = element_brate[ch]; + if ( ism_mode != ISM_MASA_MODE_DISC && ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) + { + hSCE[ch]->element_brate = element_brate[ch]; + } hSCE[ch]->hCoreCoder[0]->total_brate = total_brate[ch]; } @@ -609,12 +677,20 @@ ivas_error ivas_ism_metadata_dec_create( st_ivas->hIsmMetaData[ch]->last_azimuth = 0; st_ivas->hIsmMetaData[ch]->last_elevation = 0; + st_ivas->hIsmMetaData[ch]->ism_imp = -1; + st_ivas->hIsmMetaData[ch]->ism_md_null_flag = 0; + st_ivas->hIsmMetaData[ch]->ism_md_lowrate_flag = 0; + ivas_ism_reset_metadata( st_ivas->hIsmMetaData[ch] ); } - if ( ( error = ivas_ism_config( st_ivas->hDecoderConfig->ivas_total_brate, n_ISms, n_ISms, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( element_brate_tmp != NULL ) { - return error; + if ( ( error = ivas_ism_config( st_ivas->hDecoderConfig->ivas_total_brate, n_ISms, n_ISms, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL, + 0 ) ) != IVAS_ERR_OK ) + { + return error; + } } st_ivas->hISMDTX.ism_dtx_hangover_cnt = IVAS_ISM_DTX_HO_MAX; @@ -626,7 +702,7 @@ ivas_error ivas_ism_metadata_dec_create( /*------------------------------------------------------------------------- * decode_angle_indices() * - * Decoding of an angle + * Decoding of a position/orientation angle *-------------------------------------------------------------------------*/ static void decode_angle_indices( @@ -845,7 +921,6 @@ static int16_t decode_radius( return idx_radius; } - /*-------------------------------------------------------------------* * ivas_ism_metadata_sid_dec() * diff --git a/lib_dec/ivas_ism_param_dec.c b/lib_dec/ivas_ism_param_dec.c index 2497f5ab988c4a042367ec78e5f33961254d897d..1d76765193fadbc8c1b96d33e3728153cdbc44a3 100644 --- a/lib_dec/ivas_ism_param_dec.c +++ b/lib_dec/ivas_ism_param_dec.c @@ -287,6 +287,7 @@ static void ivas_param_ism_compute_mixing_matrix( static void ivas_param_ism_render_slot( DIRAC_DEC_HANDLE hDirAC, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, float *Cldfb_RealBuffer_in[PARAM_ISM_MAX_DMX], float *Cldfb_ImagBuffer_in[PARAM_ISM_MAX_DMX], float Cldfb_RealBuffer[PARAM_ISM_MAX_CHAN][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], @@ -302,7 +303,7 @@ static void ivas_param_ism_render_slot( tmp_1 = hDirAC->hParamIsmRendering->interpolator[interpolator_idx]; - for ( bin_idx = 0; bin_idx < hDirAC->num_freq_bands; bin_idx++ ) + for ( bin_idx = 0; bin_idx < hSpatParamRendCom->num_freq_bands; bin_idx++ ) { /* smooth the mixing matrix */ for ( outchIdx = 0; outchIdx < num_ch_LS; outchIdx++ ) @@ -324,6 +325,7 @@ static void ivas_param_ism_render_slot( static void ivas_param_ism_rendering( DIRAC_DEC_HANDLE hDirAC, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, float Cldfb_RealBuffer_in[PARAM_ISM_MAX_DMX][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float Cldfb_ImagBuffer_in[PARAM_ISM_MAX_DMX][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float Cldfb_RealBuffer[PARAM_ISM_MAX_CHAN][4][CLDFB_NO_CHANNELS_MAX], @@ -339,7 +341,7 @@ static void ivas_param_ism_rendering( tmp_1 = hDirAC->hParamIsmRendering->interpolator[slot_idx]; - for ( bin_idx = 0; bin_idx < hDirAC->num_freq_bands; bin_idx++ ) + for ( bin_idx = 0; bin_idx < hSpatParamRendCom->num_freq_bands; bin_idx++ ) { /* smooth the mixing matrix */ for ( outchIdx = 0; outchIdx < num_ch_LS; outchIdx++ ) @@ -384,7 +386,11 @@ static ivas_error ivas_param_ism_rendering_init( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for interpolator\n" ) ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#else if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) +#endif { /* computation of proto matrix */ ivas_ism_get_proto_matrix( hOutSetup, nchan_transport, hParamIsmRendering->proto_matrix ); @@ -440,6 +446,7 @@ ivas_error ivas_param_ism_dec_open( int16_t i; DIRAC_DEC_HANDLE hDirAC; IVAS_OUTPUT_SETUP hOutSetup; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; AUDIO_CONFIG output_config; int32_t output_Fs; ivas_error error; @@ -457,6 +464,11 @@ ivas_error ivas_param_ism_dec_open( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); } + if ( ( hSpatParamRendCom = (SPAT_PARAM_REND_COMMON_DATA_HANDLE) malloc( sizeof( SPAT_PARAM_REND_COMMON_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + /* Assign memory to Param Object handle */ if ( ( hDirAC->hParamIsm = (PARAM_ISM_CONFIG_HANDLE) malloc( sizeof( PARAM_ISM_CONFIG_DATA ) ) ) == NULL ) { @@ -477,15 +489,15 @@ ivas_error ivas_param_ism_dec_open( * set input parameters *-----------------------------------------------------------------*/ - hDirAC->slot_size = (int16_t) ( ( output_Fs / FRAMES_PER_SEC ) / CLDFB_NO_COL_MAX ); + hSpatParamRendCom->slot_size = (int16_t) ( ( output_Fs / FRAMES_PER_SEC ) / CLDFB_NO_COL_MAX ); hDirAC->hConfig = NULL; - set_s( hDirAC->subframe_nbslots, 0, MAX_JBM_SUBFRAMES_5MS ); - set_s( hDirAC->subframe_nbslots, JBM_CLDFB_SLOTS_IN_SUBFRAME, DEFAULT_JBM_SUBFRAMES_5MS ); - hDirAC->nb_subframes = DEFAULT_JBM_SUBFRAMES_5MS; - hDirAC->subframes_rendered = 0; - hDirAC->slots_rendered = 0; - hDirAC->num_slots = DEFAULT_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME; - hDirAC->num_freq_bands = (int16_t) ( output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ); + set_s( hSpatParamRendCom->subframe_nbslots, 0, MAX_JBM_SUBFRAMES_5MS ); + set_s( hSpatParamRendCom->subframe_nbslots, JBM_CLDFB_SLOTS_IN_SUBFRAME, DEFAULT_JBM_SUBFRAMES_5MS ); + hSpatParamRendCom->nb_subframes = DEFAULT_JBM_SUBFRAMES_5MS; + hSpatParamRendCom->subframes_rendered = 0; + hSpatParamRendCom->slots_rendered = 0; + hSpatParamRendCom->num_slots = DEFAULT_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME; + hSpatParamRendCom->num_freq_bands = (int16_t) ( output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ); hDirAC->hParamIsm->nbands = MAX_PARAM_ISM_NBANDS; @@ -493,9 +505,9 @@ ivas_error ivas_param_ism_dec_open( { hDirAC->hParamIsm->band_grouping[i] = Param_ISM_band_grouping[i]; - if ( hDirAC->hParamIsm->band_grouping[i] > hDirAC->num_freq_bands ) + if ( hDirAC->hParamIsm->band_grouping[i] > hSpatParamRendCom->num_freq_bands ) { - hDirAC->hParamIsm->band_grouping[i] = hDirAC->num_freq_bands; + hDirAC->hParamIsm->band_grouping[i] = hSpatParamRendCom->num_freq_bands; } } @@ -516,7 +528,11 @@ ivas_error ivas_param_ism_dec_open( if ( !( output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO ) ) { /* Initialize Param ISM Rendering handle */ +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm ) +#else if ( st_ivas->hDecoderConfig->voip_active ) +#endif { if ( ( error = ivas_param_ism_rendering_init( hDirAC->hParamIsmRendering, hOutSetup, st_ivas->nchan_transport, MAX_JBM_CLDFB_TIMESLOTS, output_config ) ) != IVAS_ERR_OK ) { @@ -532,8 +548,13 @@ ivas_error ivas_param_ism_dec_open( } } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || + output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#else if ( !( output_config == AUDIO_CONFIG_EXTERNAL || output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO ) ) +#endif { /* Initialize efap handle */ if ( ( error = efap_init_data( &( st_ivas->hEFAPdata ), hOutSetup.ls_azimuth, hOutSetup.ls_elevation, hOutSetup.nchan_out_woLFE, EFAP_MODE_EFAP ) ) != IVAS_ERR_OK ) @@ -546,19 +567,23 @@ ivas_error ivas_param_ism_dec_open( set_zero( hDirAC->azimuth_values, MAX_NUM_OBJECTS ); set_zero( hDirAC->elevation_values, MAX_NUM_OBJECTS ); - hDirAC->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES; - hDirAC->dirac_bs_md_write_idx = 0; - hDirAC->dirac_read_idx = 0; + hSpatParamRendCom->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES; + hSpatParamRendCom->dirac_bs_md_write_idx = 0; + hSpatParamRendCom->dirac_read_idx = 0; hDirAC->spar_to_dirac_write_idx = 0; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#else if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#endif { - if ( ( error = ivas_dirac_allocate_parameters( hDirAC, 1 ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_allocate_parameters( hSpatParamRendCom, 1 ) ) != IVAS_ERR_OK ) { return error; } - if ( ( error = ivas_dirac_allocate_parameters( hDirAC, 2 ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_allocate_parameters( hSpatParamRendCom, 2 ) ) != IVAS_ERR_OK ) { return error; } @@ -567,8 +592,15 @@ ivas_error ivas_param_ism_dec_open( st_ivas->hISMDTX.dtx_flag = 0; st_ivas->hDirAC = hDirAC; + st_ivas->hSpatParamRendCom = hSpatParamRendCom; +#ifndef API_5MS if ( st_ivas->hDecoderConfig->voip_active ) +#else +#ifdef API_5MS_BASELINE + if ( st_ivas->hDecoderConfig->Opt_5ms ) +#endif +#endif { if ( st_ivas->renderer_type != RENDERER_MONO_DOWNMIX && st_ivas->renderer_type != RENDERER_DISABLE ) { @@ -582,17 +614,42 @@ ivas_error ivas_param_ism_dec_open( } else { - if ( ( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) +#ifdef API_5MS + int16_t n_slots_to_alloc; + if ( st_ivas->hDecoderConfig->Opt_tsm == 1 ) + { + n_slots_to_alloc = MAX_JBM_CLDFB_TIMESLOTS; + } + else + { + n_slots_to_alloc = CLDFB_SLOTS_PER_SUBFRAME * MAX_PARAM_SPATIAL_SUBFRAMES; + } + if ( ( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc = (float *) malloc( n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Param ISM JBM Rendering handle\n" ) ); } - set_zero( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc, MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hDirAC->num_freq_bands ); + set_zero( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc, n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands ); - if ( ( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) + if ( ( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc = (float *) malloc( n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Param ISM JBM Rendering handle\n" ) ); } - set_zero( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc, MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hDirAC->num_freq_bands ); + set_zero( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc, n_slots_to_alloc * nchan_transport * hSpatParamRendCom->num_freq_bands ); +#else + if ( ( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Param ISM JBM Rendering handle\n" ) ); + } + set_zero( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc, MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hSpatParamRendCom->num_freq_bands ); + + if ( ( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Param ISM JBM Rendering handle\n" ) ); + } + set_zero( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc, MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hSpatParamRendCom->num_freq_bands ); +#endif } if ( st_ivas->hTcBuffer == NULL ) { @@ -616,11 +673,13 @@ ivas_error ivas_param_ism_dec_open( } } } +#if !defined( API_5MS ) || defined API_5MS_BASELINE else { hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc = NULL; hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc = NULL; } +#endif pop_wmops(); return error; @@ -634,66 +693,70 @@ ivas_error ivas_param_ism_dec_open( *-------------------------------------------------------------------------*/ void ivas_param_ism_dec_close( - DIRAC_DEC_HANDLE *hDirAC_out, /* i/o: decoder DirAC handle */ - AUDIO_CONFIG output_config /* i : output audio configuration */ + DIRAC_DEC_HANDLE *hDirAC_out, /* i/o: decoder DirAC handle */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out, /* i/o: common spatial renderer data */ + AUDIO_CONFIG output_config /* i : output audio configuration */ ) { - DIRAC_DEC_HANDLE hDirAC; - - if ( hDirAC_out == NULL || *hDirAC_out == NULL ) + if ( hDirAC_out != NULL && *hDirAC_out != NULL ) { - return; - } - - hDirAC = *hDirAC_out; + DIRAC_DEC_HANDLE hDirAC; + hDirAC = *hDirAC_out; - /* Config & CLDFB */ - if ( hDirAC->hParamIsm != NULL ) - { - free( hDirAC->hParamIsm ); - hDirAC->hParamIsm = NULL; - } + /* Config & CLDFB */ + if ( hDirAC->hParamIsm != NULL ) + { + free( hDirAC->hParamIsm ); + hDirAC->hParamIsm = NULL; + } - if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { - ivas_dirac_deallocate_parameters( hDirAC, 1 ); - ivas_dirac_deallocate_parameters( hDirAC, 2 ); - } + if ( !( output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO ) ) + { + /* Param ISM Rendering */ + if ( hDirAC->hParamIsmRendering->interpolator != NULL ) + { + free( hDirAC->hParamIsmRendering->interpolator ); + hDirAC->hParamIsmRendering->interpolator = NULL; + } + if ( hDirAC->hParamIsmRendering->proto_matrix != NULL ) + { + free( hDirAC->hParamIsmRendering->proto_matrix ); + hDirAC->hParamIsmRendering->proto_matrix = NULL; + } + } - if ( !( output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO ) ) - { - /* Param ISM Rendering */ - if ( hDirAC->hParamIsmRendering->interpolator != NULL ) + if ( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc != NULL ) { - free( hDirAC->hParamIsmRendering->interpolator ); - hDirAC->hParamIsmRendering->interpolator = NULL; + free( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc ); + hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc = NULL; } - if ( hDirAC->hParamIsmRendering->proto_matrix != NULL ) + if ( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc != NULL ) { - free( hDirAC->hParamIsmRendering->proto_matrix ); - hDirAC->hParamIsmRendering->proto_matrix = NULL; + free( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc ); + hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc = NULL; } - } - if ( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc != NULL ) - { - free( hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc ); - hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc = NULL; - } - if ( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc != NULL ) - { - free( hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc ); - hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc = NULL; + if ( hDirAC->hParamIsmRendering != NULL ) + { + free( hDirAC->hParamIsmRendering ); + hDirAC->hParamIsmRendering = NULL; + } + + free( *hDirAC_out ); + *hDirAC_out = NULL; } - if ( hDirAC->hParamIsmRendering != NULL ) + if ( hSpatParamRendCom_out != NULL && *hSpatParamRendCom_out != NULL ) { - free( hDirAC->hParamIsmRendering ); - hDirAC->hParamIsmRendering = NULL; - } + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + { + ivas_dirac_deallocate_parameters( *hSpatParamRendCom_out, 1 ); + ivas_dirac_deallocate_parameters( *hSpatParamRendCom_out, 2 ); + } - free( *hDirAC_out ); - *hDirAC_out = NULL; + free( *hSpatParamRendCom_out ); + *hSpatParamRendCom_out = NULL; + } return; } @@ -706,17 +769,19 @@ void ivas_param_ism_dec_close( *-------------------------------------------------------------------------*/ void ivas_param_ism_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels/DirAC output*/ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output_f[] /* i/o: synthesized core-coder transport channels/DirAC output*/ ) { int16_t ch, nchan_transport, nchan_out, nchan_out_woLFE, i; int16_t subframe_idx, slot_idx, index_slot, bin_idx; int32_t ivas_total_brate; -#ifdef FIX_549_DMX_GAIN int16_t output_frame; +#ifndef API_5MS float gain, ene_tc, ene_sum, grad; float last_gain; +#else + float *p_tc[PARAM_ISM_MAX_DMX]; #endif float ref_power[CLDFB_NO_CHANNELS_MAX]; float cx_diag[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_DMX]; @@ -735,18 +800,27 @@ void ivas_param_ism_dec( float mixing_matrix[CLDFB_NO_CHANNELS_MAX][PARAM_ISM_MAX_CHAN * PARAM_ISM_MAX_DMX]; DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; IVAS_OUTPUT_SETUP hSetup; /* Initialization */ hDirAC = st_ivas->hDirAC; assert( hDirAC ); -#ifdef FIX_549_DMX_GAIN + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + assert( hSpatParamRendCom ); +#ifdef API_5MS + for ( i = 0; i < PARAM_ISM_MAX_DMX; i++ ) + { + p_tc[i] = output_f[i]; + } +#else + ene_tc = 0.0f; ene_sum = 0.0f; last_gain = st_ivas->hDirAC->hParamIsm->last_dmx_gain; - output_frame = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); #endif + output_frame = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); nchan_transport = st_ivas->nchan_transport; if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) @@ -814,23 +888,31 @@ void ivas_param_ism_dec( } } - for ( i = 0; i < nchan_transport; i++ ) + for ( j = 0; j < nchan_out_woLFE; j++ ) { - for ( j = 0; j < nchan_out_woLFE; j++ ) + if ( hDirAC->azimuth_values[j] > 0.0f ) { - if ( i == j ) + hDirAC->hParamIsmRendering->proto_matrix[j] = 1.0f; + hDirAC->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = 0.0f; + } + else + { + if ( hDirAC->azimuth_values[j] < 0.0f ) { - hDirAC->hParamIsmRendering->proto_matrix[( i * nchan_out_woLFE ) + j] = 1.0f; + hDirAC->hParamIsmRendering->proto_matrix[j] = 0.0f; + hDirAC->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = 1.0f; } - else + else /* == 0.0f */ { - hDirAC->hParamIsmRendering->proto_matrix[( i * nchan_out_woLFE ) + j] = 0.0f; + hDirAC->hParamIsmRendering->proto_matrix[j] = 0.5f; + hDirAC->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = 0.5f; } } } } - -#ifdef FIX_549_DMX_GAIN +#ifdef API_5MS + ivas_ism_param_dec_tc_gain_ajust( st_ivas, output_frame, output_frame / 2, p_tc ); +#else /* Energy Compensation */ for ( i = 0; i < output_frame; i++ ) { @@ -864,8 +946,7 @@ void ivas_param_ism_dec( } } st_ivas->hDirAC->hParamIsm->last_dmx_gain = gain; -#endif - +#endif /* API_5MS */ for ( ch = 0; ch < nchan_transport; ch++ ) { /*-----------------------------------------------------------------* @@ -873,14 +954,14 @@ void ivas_param_ism_dec( *-----------------------------------------------------------------*/ for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) { - cldfbAnalysis_ts( &( output_f[ch][hDirAC->num_freq_bands * slot_idx] ), Cldfb_RealBuffer_in[ch][slot_idx], Cldfb_ImagBuffer_in[ch][slot_idx], hDirAC->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); + cldfbAnalysis_ts( &( output_f[ch][hSpatParamRendCom->num_freq_bands * slot_idx] ), Cldfb_RealBuffer_in[ch][slot_idx], Cldfb_ImagBuffer_in[ch][slot_idx], hSpatParamRendCom->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); ivas_param_ism_collect_slot( hDirAC, Cldfb_RealBuffer_in[ch][slot_idx], Cldfb_ImagBuffer_in[ch][slot_idx], ch, ref_power, cx_diag ); } } /* Obtain Mixing Matrix on a frame-level */ - for ( bin_idx = 0; bin_idx < hDirAC->num_freq_bands; bin_idx++ ) + for ( bin_idx = 0; bin_idx < hSpatParamRendCom->num_freq_bands; bin_idx++ ) { set_f( mixing_matrix[bin_idx], 0.0f, nchan_transport * nchan_out_woLFE ); } @@ -888,28 +969,28 @@ void ivas_param_ism_dec( /* Compute mixing matrix */ ivas_param_ism_compute_mixing_matrix( st_ivas->nchan_ism, hDirAC, st_ivas->hISMDTX, direct_response, nchan_transport, nchan_out_woLFE, cx_diag, ref_power, mixing_matrix ); /* subframe loop for synthesis*/ - for ( subframe_idx = 0; subframe_idx < hDirAC->nb_subframes; subframe_idx++ ) + for ( subframe_idx = 0; subframe_idx < hSpatParamRendCom->nb_subframes; subframe_idx++ ) { - uint16_t slot_idx_start = subframe_idx * hDirAC->subframe_nbslots[subframe_idx]; + uint16_t slot_idx_start = subframe_idx * hSpatParamRendCom->subframe_nbslots[subframe_idx]; uint16_t idx_in; uint16_t idx_lfe; /* Set some memories to zero */ for ( ch = 0; ch < nchan_out_woLFE; ch++ ) { - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[subframe_idx]; slot_idx++ ) + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) { - set_f( Cldfb_RealBuffer[ch][slot_idx], 0.0f, hDirAC->num_freq_bands ); - set_f( Cldfb_ImagBuffer[ch][slot_idx], 0.0f, hDirAC->num_freq_bands ); + set_f( Cldfb_RealBuffer[ch][slot_idx], 0.0f, hSpatParamRendCom->num_freq_bands ); + set_f( Cldfb_ImagBuffer[ch][slot_idx], 0.0f, hSpatParamRendCom->num_freq_bands ); } } - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[subframe_idx]; slot_idx++ ) + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) { index_slot = slot_idx_start + slot_idx; /* Compute bandwise rendering to target LS using covariance rendering */ - ivas_param_ism_rendering( hDirAC, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, + ivas_param_ism_rendering( hDirAC, hSpatParamRendCom, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, Cldfb_RealBuffer, Cldfb_ImagBuffer, mixing_matrix, slot_idx, index_slot, nchan_out_woLFE, nchan_transport ); } @@ -922,7 +1003,7 @@ void ivas_param_ism_dec( { if ( ( hSetup.num_lfe > 0 ) && ( hSetup.index_lfe[idx_lfe] == ch ) ) { - set_zero( &( output_f[ch][slot_idx_start * hDirAC->num_freq_bands] ), hDirAC->subframe_nbslots[subframe_idx] * hDirAC->num_freq_bands ); + set_zero( &( output_f[ch][slot_idx_start * hSpatParamRendCom->num_freq_bands] ), hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->num_freq_bands ); if ( idx_lfe < ( hSetup.num_lfe - 1 ) ) { idx_lfe++; @@ -934,14 +1015,14 @@ void ivas_param_ism_dec( float *ImagBuffer[16]; /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */ - for ( i = 0; i < hDirAC->subframe_nbslots[subframe_idx]; i++ ) + for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { RealBuffer[i] = Cldfb_RealBuffer[idx_in][i]; ImagBuffer[i] = Cldfb_ImagBuffer[idx_in][i]; } - cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][slot_idx_start * hDirAC->num_freq_bands] ), - hDirAC->num_freq_bands * hDirAC->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[ch] ); + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][slot_idx_start * hSpatParamRendCom->num_freq_bands] ), + hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[ch] ); idx_in++; } @@ -1081,8 +1162,8 @@ void ivas_param_ism_dec_digest_tc( int16_t ch, nchan_transport, nchan_out, nchan_out_woLFE, i; int16_t slot_idx, bin_idx; int32_t ivas_total_brate; -#ifdef FIX_549_DMX_GAIN int16_t output_frame; +#ifndef API_5MS float gain, ene_tc, ene_sum, grad; float last_gain; #endif @@ -1091,16 +1172,21 @@ void ivas_param_ism_dec_digest_tc( /* Direct Response/EFAP Gains */ float direct_response[MAX_NUM_OBJECTS][PARAM_ISM_MAX_CHAN]; DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + int16_t fade_len; /* Initialization */ hDirAC = st_ivas->hDirAC; assert( hDirAC ); -#ifdef FIX_549_DMX_GAIN + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + assert( hSpatParamRendCom ); +#ifndef API_5MS ene_tc = 0.0f; ene_sum = 0.0f; last_gain = st_ivas->hDirAC->hParamIsm->last_dmx_gain; - output_frame = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); #endif + output_frame = nCldfbSlots * hSpatParamRendCom->num_freq_bands; + fade_len = output_frame / 2; nchan_transport = st_ivas->nchan_transport; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; @@ -1171,23 +1257,39 @@ void ivas_param_ism_dec_digest_tc( } } - for ( i = 0; i < nchan_transport; i++ ) + for ( j = 0; j < nchan_out_woLFE; j++ ) { - for ( j = 0; j < nchan_out_woLFE; j++ ) + if ( hDirAC->azimuth_values[j] > 0.0f ) { - if ( i == j ) + hDirAC->hParamIsmRendering->proto_matrix[j] = 1.0f; + hDirAC->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = 0.0f; + } + else + { + if ( hDirAC->azimuth_values[j] < 0.0f ) { - hDirAC->hParamIsmRendering->proto_matrix[( i * nchan_out_woLFE ) + j] = 1.0f; + hDirAC->hParamIsmRendering->proto_matrix[j] = 0.0f; + hDirAC->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = 1.0f; } - else + else /* == 0.0f */ { - hDirAC->hParamIsmRendering->proto_matrix[( i * nchan_out_woLFE ) + j] = 0.0f; + hDirAC->hParamIsmRendering->proto_matrix[j] = 0.5f; + hDirAC->hParamIsmRendering->proto_matrix[nchan_out_woLFE + j] = 0.5f; } } } } - -#ifdef FIX_549_DMX_GAIN +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm +#ifdef API_5MS_BASELINE + || !st_ivas->hDecoderConfig->Opt_5ms +#endif + ) + { + /*TODO : FhG to check*/ + ivas_ism_param_dec_tc_gain_ajust( st_ivas, output_frame, fade_len, transport_channels_f ); + } +#else /* Energy Compensation */ for ( i = 0; i < output_frame; i++ ) { @@ -1199,9 +1301,8 @@ void ivas_param_ism_dec_digest_tc( { /* Smoothing */ gain = 0.75f * gain + 0.25f * last_gain; - /* 10ms ramp */ - grad = ( gain - last_gain ) * 2.0f / (float) output_frame; /* slope between two consecutive gains, 480 samples length */ - for ( i = 0; i < ( output_frame / 2 ); i++ ) + grad = ( gain - last_gain ) / (float) fade_len; /* slope between two consecutive gains, 480 samples length */ + for ( i = 0; i < fade_len; i++ ) { transport_channels_f[0][i] *= ( last_gain + i * grad ); transport_channels_f[1][i] *= ( last_gain + i * grad ); @@ -1221,7 +1322,7 @@ void ivas_param_ism_dec_digest_tc( } } st_ivas->hDirAC->hParamIsm->last_dmx_gain = gain; -#endif +#endif /* API_5MS */ for ( ch = 0; ch < nchan_transport; ch++ ) { @@ -1230,19 +1331,32 @@ void ivas_param_ism_dec_digest_tc( *-----------------------------------------------------------------*/ for ( slot_idx = 0; slot_idx < nCldfbSlots; slot_idx++ ) { - float RealBuffer[CLDFB_NO_CHANNELS_MAX]; - float ImagBuffer[CLDFB_NO_CHANNELS_MAX]; +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm +#ifdef API_5MS_BASELINE + || !st_ivas->hDecoderConfig->Opt_5ms +#endif + ) + { +#endif - cldfbAnalysis_ts( &( transport_channels_f[ch][hDirAC->num_freq_bands * slot_idx] ), RealBuffer, ImagBuffer, hDirAC->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); - mvr2r( RealBuffer, &hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * hDirAC->num_freq_bands * nchan_transport + ch * hDirAC->num_freq_bands], hDirAC->num_freq_bands ); - mvr2r( ImagBuffer, &hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * hDirAC->num_freq_bands * nchan_transport + ch * hDirAC->num_freq_bands], hDirAC->num_freq_bands ); + float RealBuffer[CLDFB_NO_CHANNELS_MAX]; + float ImagBuffer[CLDFB_NO_CHANNELS_MAX]; + cldfbAnalysis_ts( &( transport_channels_f[ch][hSpatParamRendCom->num_freq_bands * slot_idx] ), RealBuffer, ImagBuffer, hSpatParamRendCom->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); + mvr2r( RealBuffer, &hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], hSpatParamRendCom->num_freq_bands ); + mvr2r( ImagBuffer, &hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], hSpatParamRendCom->num_freq_bands ); +#ifdef API_5MS + } + ivas_param_ism_collect_slot( hDirAC, &hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], &hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc[slot_idx * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands], ch, ref_power, cx_diag ); +#else ivas_param_ism_collect_slot( hDirAC, RealBuffer, ImagBuffer, ch, ref_power, cx_diag ); +#endif } } /* Obtain Mixing Matrix on a frame-level */ - for ( bin_idx = 0; bin_idx < hDirAC->num_freq_bands; bin_idx++ ) + for ( bin_idx = 0; bin_idx < hSpatParamRendCom->num_freq_bands; bin_idx++ ) { set_f( hDirAC->hParamIsmRendering->mixing_matrix_lin[bin_idx], 0.0f, nchan_transport * nchan_out_woLFE ); } @@ -1256,6 +1370,67 @@ void ivas_param_ism_dec_digest_tc( } +#ifdef API_5MS +/*-------------------------------------------------------------------------* + * ivas_ism_param_dec_tc_gain_ajust() + * + * + *-------------------------------------------------------------------------*/ + +void ivas_ism_param_dec_tc_gain_ajust( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nSamples, /* i : number of samples to be compensate */ + const uint16_t nFadeLength, /* i : length of the crossfade in samples */ + float *transport_channels_f[] /* i : synthesized core-coder transport channels/DirAC output */ +) + +{ + int16_t i; + float gain, ene_tc, ene_sum, grad; + float last_gain; + + ene_tc = 0.0f; + ene_sum = 0.0f; + last_gain = st_ivas->hDirAC->hParamIsm->last_dmx_gain; + + + for ( i = 0; i < nSamples; i++ ) + { + ene_tc += transport_channels_f[0][i] * transport_channels_f[0][i] + transport_channels_f[1][i] * transport_channels_f[1][i]; // L*L + R*R + ene_sum += ( transport_channels_f[0][i] + transport_channels_f[1][i] ) * ( transport_channels_f[0][i] + transport_channels_f[1][i] ); // (L+R)*(L+R) + } + gain = sqrtf( ene_tc / ( ene_sum + EPSILON ) ); + if ( st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame > 1 ) + { + /* Smoothing */ + gain = 0.75f * gain + 0.25f * last_gain; + /* 10ms ramp */ + grad = ( gain - last_gain ) / (float) nFadeLength; /* slope between two consecutive gains, 480 samples length */ + for ( i = 0; i < ( nFadeLength ); i++ ) + { + transport_channels_f[0][i] *= ( last_gain + i * grad ); + transport_channels_f[1][i] *= ( last_gain + i * grad ); + } + for ( ; i < nSamples; i++ ) + { + transport_channels_f[0][i] *= gain; + transport_channels_f[1][i] *= gain; + } + } + else + { + for ( i = 0; i < nSamples; i++ ) + { + transport_channels_f[0][i] *= gain; + transport_channels_f[1][i] *= gain; + } + } + st_ivas->hDirAC->hParamIsm->last_dmx_gain = gain; + + return; +} +#endif + /*-------------------------------------------------------------------------* * ivas_ism_param_dec_render_sf() * @@ -1278,6 +1453,7 @@ static void ivas_ism_param_dec_render_sf( float *Cldfb_RealBuffer_in[PARAM_ISM_MAX_DMX]; float *Cldfb_ImagBuffer_in[PARAM_ISM_MAX_DMX]; DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; int16_t slot_idx_start; int16_t idx_in; @@ -1285,31 +1461,32 @@ static void ivas_ism_param_dec_render_sf( int16_t subframe_idx; hDirAC = st_ivas->hDirAC; - slot_idx_start = hDirAC->slots_rendered; - subframe_idx = hDirAC->subframes_rendered; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + slot_idx_start = hSpatParamRendCom->slots_rendered; + subframe_idx = hSpatParamRendCom->subframes_rendered; /* Set some memories to zero */ for ( ch = 0; ch < nchan_out_woLFE; ch++ ) { - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[subframe_idx]; slot_idx++ ) + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) { - set_f( Cldfb_RealBuffer[ch][slot_idx], 0.0f, hDirAC->num_freq_bands ); - set_f( Cldfb_ImagBuffer[ch][slot_idx], 0.0f, hDirAC->num_freq_bands ); + set_f( Cldfb_RealBuffer[ch][slot_idx], 0.0f, hSpatParamRendCom->num_freq_bands ); + set_f( Cldfb_ImagBuffer[ch][slot_idx], 0.0f, hSpatParamRendCom->num_freq_bands ); } } - for ( slot_idx = 0; slot_idx < hDirAC->subframe_nbslots[subframe_idx]; slot_idx++ ) + for ( slot_idx = 0; slot_idx < hSpatParamRendCom->subframe_nbslots[subframe_idx]; slot_idx++ ) { index_slot = slot_idx_start + slot_idx; for ( ch = 0; ch < nchan_transport; ch++ ) { - Cldfb_RealBuffer_in[ch] = &hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc[index_slot * hDirAC->num_freq_bands * nchan_transport + ch * hDirAC->num_freq_bands]; - Cldfb_ImagBuffer_in[ch] = &hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc[index_slot * hDirAC->num_freq_bands * nchan_transport + ch * hDirAC->num_freq_bands]; + Cldfb_RealBuffer_in[ch] = &hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc[index_slot * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands]; + Cldfb_ImagBuffer_in[ch] = &hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc[index_slot * hSpatParamRendCom->num_freq_bands * nchan_transport + ch * hSpatParamRendCom->num_freq_bands]; } /* Compute bandwise rendering to target LS using covariance rendering */ - ivas_param_ism_render_slot( hDirAC, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, + ivas_param_ism_render_slot( hDirAC, hSpatParamRendCom, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, Cldfb_RealBuffer, Cldfb_ImagBuffer, hDirAC->hParamIsmRendering->mixing_matrix_lin, index_slot, slot_idx, nchan_out_woLFE, nchan_transport ); } @@ -1322,7 +1499,7 @@ static void ivas_ism_param_dec_render_sf( { if ( ( hSetup.num_lfe > 0 ) && ( hSetup.index_lfe[idx_lfe] == ch ) ) { - set_zero( output_f[ch], hDirAC->subframe_nbslots[subframe_idx] * hDirAC->num_freq_bands ); + set_zero( output_f[ch], hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->num_freq_bands ); if ( idx_lfe < ( hSetup.num_lfe - 1 ) ) { idx_lfe++; @@ -1334,19 +1511,19 @@ static void ivas_ism_param_dec_render_sf( float *ImagBuffer[16]; /* open CLDFB buffer up to CLDFB_NO_CHANNELS_MAX bands for 48kHz */ - for ( i = 0; i < hDirAC->subframe_nbslots[subframe_idx]; i++ ) + for ( i = 0; i < hSpatParamRendCom->subframe_nbslots[subframe_idx]; i++ ) { RealBuffer[i] = Cldfb_RealBuffer[idx_in][i]; ImagBuffer[i] = Cldfb_ImagBuffer[idx_in][i]; } cldfbSynthesis( RealBuffer, ImagBuffer, output_f[ch], - hDirAC->num_freq_bands * hDirAC->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[ch] ); + hSpatParamRendCom->num_freq_bands * hSpatParamRendCom->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[ch] ); idx_in++; } } - hDirAC->slots_rendered += hDirAC->subframe_nbslots[subframe_idx]; - hDirAC->subframes_rendered++; + hSpatParamRendCom->slots_rendered += hSpatParamRendCom->subframe_nbslots[subframe_idx]; + hSpatParamRendCom->subframes_rendered++; return; } @@ -1359,24 +1536,27 @@ static void ivas_ism_param_dec_render_sf( *-------------------------------------------------------------------------*/ 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 */ + 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 *nSamplesAvailableNext, /* o : number of CLDFB slots still to render */ + float *output_f[] /* o : rendered time signal */ ) { int16_t ch, slots_to_render, first_sf, last_sf, subframe_idx; uint16_t slot_size, n_samples_sf; DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; IVAS_OUTPUT_SETUP hSetup; int16_t nchan_transport, nchan_out, nchan_out_woLFE; float *output_f_local[MAX_OUTPUT_CHANNELS]; hDirAC = st_ivas->hDirAC; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; hSetup = st_ivas->hIntSetup; #ifdef DEBUGGING assert( hDirAC ); + assert( hSpatParamRendCom ); #endif nchan_transport = st_ivas->nchan_transport; if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) @@ -1393,14 +1573,14 @@ void ivas_param_ism_dec_render( slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ - slots_to_render = min( hDirAC->num_slots - hDirAC->slots_rendered, nSamplesAsked / slot_size ); + slots_to_render = min( hSpatParamRendCom->num_slots - hSpatParamRendCom->slots_rendered, nSamplesAsked / slot_size ); *nSamplesRendered = slots_to_render * slot_size; - first_sf = hDirAC->subframes_rendered; + first_sf = hSpatParamRendCom->subframes_rendered; last_sf = first_sf; while ( slots_to_render > 0 ) { - slots_to_render -= hDirAC->subframe_nbslots[last_sf]; + slots_to_render -= hSpatParamRendCom->subframe_nbslots[last_sf]; last_sf++; } #ifdef DEBUGGING @@ -1415,14 +1595,14 @@ void ivas_param_ism_dec_render( for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { ivas_ism_param_dec_render_sf( st_ivas, hSetup, nchan_transport, nchan_out, nchan_out_woLFE, output_f_local ); - n_samples_sf = hDirAC->subframe_nbslots[subframe_idx] * st_ivas->hDirAC->slot_size; + n_samples_sf = hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->slot_size; for ( ch = 0; ch < nchan_out; ch++ ) { output_f_local[ch] += n_samples_sf; } } - if ( hDirAC->slots_rendered == hDirAC->num_slots ) + if ( hSpatParamRendCom->slots_rendered == hSpatParamRendCom->num_slots ) { /* copy the memories */ /* store mixing matrix for next subframe */ @@ -1444,7 +1624,7 @@ void ivas_param_ism_dec_render( } } - *nSamplesAvailable = ( hDirAC->num_slots - hDirAC->slots_rendered ) * slot_size; + *nSamplesAvailableNext = ( hSpatParamRendCom->num_slots - hSpatParamRendCom->slots_rendered ) * slot_size; return; } @@ -1461,6 +1641,7 @@ void ivas_param_ism_params_to_masa_param_mapping( ) { DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; int16_t nBins; int16_t band_idx, bin_idx, sf_idx; int16_t brange[2]; @@ -1470,7 +1651,8 @@ void ivas_param_ism_params_to_masa_param_mapping( int32_t ivas_total_brate; hDirAC = st_ivas->hDirAC; - nBins = hDirAC->num_freq_bands; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + nBins = hSpatParamRendCom->num_freq_bands; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; @@ -1492,7 +1674,7 @@ void ivas_param_ism_params_to_masa_param_mapping( float energy_ratio; energy_ratio = powf( st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->coherence, 2.0f ); - hDirAC->numSimultaneousDirections = 1; + hSpatParamRendCom->numSimultaneousDirections = 1; azimuth[0] = (int16_t) roundf( hDirAC->azimuth_values[0] ); elevation[0] = (int16_t) roundf( hDirAC->elevation_values[0] ); @@ -1500,19 +1682,19 @@ void ivas_param_ism_params_to_masa_param_mapping( { for ( bin_idx = 0; bin_idx < nBins; bin_idx++ ) { - hDirAC->azimuth[sf_idx][bin_idx] = azimuth[0]; - hDirAC->elevation[sf_idx][bin_idx] = elevation[0]; + hSpatParamRendCom->azimuth[sf_idx][bin_idx] = azimuth[0]; + hSpatParamRendCom->elevation[sf_idx][bin_idx] = elevation[0]; - hDirAC->energy_ratio1[sf_idx][bin_idx] = energy_ratio; + hSpatParamRendCom->energy_ratio1[sf_idx][bin_idx] = energy_ratio; - hDirAC->spreadCoherence[sf_idx][bin_idx] = 0.0f; - hDirAC->surroundingCoherence[sf_idx][bin_idx] = 0.0; + hSpatParamRendCom->spreadCoherence[sf_idx][bin_idx] = 0.0f; + hSpatParamRendCom->surroundingCoherence[sf_idx][bin_idx] = 0.0; } } } else { - hDirAC->numSimultaneousDirections = 2; + hSpatParamRendCom->numSimultaneousDirections = 2; for ( band_idx = 0; band_idx < hDirAC->hParamIsm->nbands; band_idx++ ) { brange[0] = hDirAC->hParamIsm->band_grouping[band_idx]; @@ -1530,12 +1712,12 @@ void ivas_param_ism_params_to_masa_param_mapping( { for ( bin_idx = brange[0]; bin_idx < brange[1]; bin_idx++ ) { - hDirAC->azimuth[sf_idx][bin_idx] = azimuth[0]; - hDirAC->elevation[sf_idx][bin_idx] = elevation[0]; - hDirAC->energy_ratio1[sf_idx][bin_idx] = power_ratio[0]; - hDirAC->azimuth2[sf_idx][bin_idx] = azimuth[1]; - hDirAC->elevation2[sf_idx][bin_idx] = elevation[1]; - hDirAC->energy_ratio2[sf_idx][bin_idx] = power_ratio[1]; + hSpatParamRendCom->azimuth[sf_idx][bin_idx] = azimuth[0]; + hSpatParamRendCom->elevation[sf_idx][bin_idx] = elevation[0]; + hSpatParamRendCom->energy_ratio1[sf_idx][bin_idx] = power_ratio[0]; + hSpatParamRendCom->azimuth2[sf_idx][bin_idx] = azimuth[1]; + hSpatParamRendCom->elevation2[sf_idx][bin_idx] = elevation[1]; + hSpatParamRendCom->energy_ratio2[sf_idx][bin_idx] = power_ratio[1]; } } } @@ -1544,16 +1726,16 @@ void ivas_param_ism_params_to_masa_param_mapping( { for ( bin_idx = 0; bin_idx < nBins; bin_idx++ ) { - hDirAC->spreadCoherence[sf_idx][bin_idx] = 0.0f; - hDirAC->spreadCoherence2[sf_idx][bin_idx] = 0.0f; - hDirAC->surroundingCoherence[sf_idx][bin_idx] = 0.0; + hSpatParamRendCom->spreadCoherence[sf_idx][bin_idx] = 0.0f; + hSpatParamRendCom->spreadCoherence2[sf_idx][bin_idx] = 0.0f; + hSpatParamRendCom->surroundingCoherence[sf_idx][bin_idx] = 0.0; } } } } else { - hDirAC->numSimultaneousDirections = 1; + hSpatParamRendCom->numSimultaneousDirections = 1; azimuth[0] = (int16_t) roundf( hDirAC->azimuth_values[0] ); elevation[0] = (int16_t) roundf( hDirAC->elevation_values[0] ); @@ -1561,11 +1743,11 @@ void ivas_param_ism_params_to_masa_param_mapping( { for ( bin_idx = 0; bin_idx < nBins; bin_idx++ ) { - hDirAC->azimuth[sf_idx][bin_idx] = azimuth[0]; - hDirAC->elevation[sf_idx][bin_idx] = elevation[0]; - hDirAC->energy_ratio1[sf_idx][bin_idx] = 1.0f; - hDirAC->spreadCoherence[sf_idx][bin_idx] = 0.0f; - hDirAC->surroundingCoherence[sf_idx][bin_idx] = 0.0; + hSpatParamRendCom->azimuth[sf_idx][bin_idx] = azimuth[0]; + hSpatParamRendCom->elevation[sf_idx][bin_idx] = elevation[0]; + hSpatParamRendCom->energy_ratio1[sf_idx][bin_idx] = 1.0f; + hSpatParamRendCom->spreadCoherence[sf_idx][bin_idx] = 0.0f; + hSpatParamRendCom->surroundingCoherence[sf_idx][bin_idx] = 0.0; } } } diff --git a/lib_dec/ivas_ism_renderer.c b/lib_dec/ivas_ism_renderer.c index 77563629aea067143dfffa3946f8dd46547b3afe..b8b7fa0a0de101d7a6c704cc4cbc5123c963acef 100644 --- a/lib_dec/ivas_ism_renderer.c +++ b/lib_dec/ivas_ism_renderer.c @@ -82,7 +82,11 @@ ivas_error ivas_ism_renderer_open( set_f( st_ivas->hIsmRendererData->gains[i], 0.0f, MAX_OUTPUT_CHANNELS ); } +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm ) +#else if ( st_ivas->hDecoderConfig->voip_active ) +#endif { init_interpolator_length = NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_CLDFB_TIMESLOTS * CLDFB_SLOT_NS ); interpolator_length = (uint16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); @@ -92,7 +96,13 @@ ivas_error ivas_ism_renderer_open( init_interpolator_length = (uint16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); interpolator_length = init_interpolator_length; } - st_ivas->hIsmRendererData->interpolator = (float *) malloc( sizeof( float ) * init_interpolator_length ); + + if ( ( st_ivas->hIsmRendererData->interpolator = (float *) malloc( sizeof( float ) * init_interpolator_length ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for ISM renderer interpolator\n" ) ); + } + + for ( i = 0; i < interpolator_length; i++ ) { st_ivas->hIsmRendererData->interpolator[i] = (float) i / ( (float) interpolator_length - 1 ); @@ -238,6 +248,7 @@ void ivas_ism_render_sf( set_f( output_f[i], 0.0f, n_samples_to_render ); } + if ( st_ivas->hCombinedOrientationData && st_ivas->hCombinedOrientationData->enableCombinedOrientation[0] ) { ivas_jbm_dec_get_adapted_linear_interpolator( n_samples_to_render, @@ -338,3 +349,394 @@ void ivas_ism_get_stereo_gains( return; } + + +/*-------------------------------------------------------------------------* + * ivas_masa_oism_separate_object_renderer_open() + * + * Open structures, reserve memory, and init values. + *-------------------------------------------------------------------------*/ + +ivas_error ivas_omasa_separate_object_renderer_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + int16_t interpolator_length; + int16_t i; + int16_t init_interpolator_length; + + if ( ( st_ivas->hIsmRendererData = (ISM_RENDERER_HANDLE) malloc( sizeof( ISM_RENDERER_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM renderer \n" ) ); + } + + for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) + { + set_f( st_ivas->hIsmRendererData->prev_gains[i], 0.0f, MAX_OUTPUT_CHANNELS ); + } + +#ifndef API_5MS + // Todo OMASA JBM: This needs touches for VOIP path at least. Current version is mostly an adapted copy from ivas_ism_renderer_open() + if ( st_ivas->hDecoderConfig->voip_active ) + { + init_interpolator_length = NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_CLDFB_TIMESLOTS * CLDFB_SLOT_NS ); + interpolator_length = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); + } + else + { +#endif + init_interpolator_length = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); + interpolator_length = init_interpolator_length; +#ifndef API_5MS + } +#endif + st_ivas->hIsmRendererData->interpolator = (float *) malloc( sizeof( float ) * init_interpolator_length ); + + for ( i = 0; i < interpolator_length; i++ ) + { + st_ivas->hIsmRendererData->interpolator[i] = (float) i / ( (float) interpolator_length ); + } + st_ivas->hIsmRendererData->interpolator_length = interpolator_length; + + st_ivas->hMasaIsmData->delayBuffer_size = (int16_t) ( ( st_ivas->hDecoderConfig->output_Fs / 50 ) / MAX_PARAM_SPATIAL_SUBFRAMES ); + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + st_ivas->hMasaIsmData->delayBuffer_nchan = 1; + } + else + { + st_ivas->hMasaIsmData->delayBuffer_nchan = st_ivas->nchan_ism; + } + + if ( ( st_ivas->hMasaIsmData->delayBuffer = (float **) malloc( st_ivas->hMasaIsmData->delayBuffer_nchan * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); + } + + for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) + { + if ( ( st_ivas->hMasaIsmData->delayBuffer[i] = (float *) malloc( st_ivas->hMasaIsmData->delayBuffer_size * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); + } + set_zero( st_ivas->hMasaIsmData->delayBuffer[i], st_ivas->hMasaIsmData->delayBuffer_size ); + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------------* + * ivas_omasa_separate_object_renderer_close() + * + * Close structures, free memory. + *-------------------------------------------------------------------------*/ + +void ivas_omasa_separate_object_renderer_close( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + int16_t i; + + if ( st_ivas->hMasaIsmData != NULL ) + { + if ( st_ivas->hMasaIsmData->delayBuffer != NULL ) + { + for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) + { + if ( st_ivas->hMasaIsmData->delayBuffer[i] != NULL ) + { + free( st_ivas->hMasaIsmData->delayBuffer[i] ); + st_ivas->hMasaIsmData->delayBuffer[i] = NULL; + } + } + + free( st_ivas->hMasaIsmData->delayBuffer ); + st_ivas->hMasaIsmData->delayBuffer = NULL; + } + } + + if ( st_ivas->hIsmRendererData != NULL ) + { + if ( st_ivas->hIsmRendererData->interpolator != NULL ) + { + free( st_ivas->hIsmRendererData->interpolator ); + st_ivas->hIsmRendererData->interpolator = NULL; + } + + free( st_ivas->hIsmRendererData ); + st_ivas->hIsmRendererData = NULL; + } + + return; +} + + +/*-------------------------------------------------------------------------* + * ivas_omasa_separate_object_render() + * + * Rendering separated objects and mixing them to the parametrically rendered signals + *-------------------------------------------------------------------------*/ + +void ivas_omasa_separate_object_render( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float input_f[][L_FRAME48k], /* i : separated object signal */ + float *output_f[], /* i/o: output signals */ + const int16_t output_frame /* i : output frame length per channel */ +) +{ + VBAP_HANDLE hVBAPdata; + int16_t nchan_out_woLFE; + ISM_RENDERER_HANDLE hRendererData; + int16_t j, k, j2; + int16_t obj; + float gains[MAX_OUTPUT_CHANNELS]; + float g1, g2; + int16_t lfe_index; + int16_t azimuth, elevation; + int16_t num_objects; + uint8_t single_separated; + int16_t block; + int16_t subframe_len; + int16_t idx_offset; + int16_t dirac_read_idx; + + hVBAPdata = st_ivas->hVBAPdata; + nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE; + hRendererData = st_ivas->hIsmRendererData; + lfe_index = st_ivas->hDirACRend->hOutSetup.index_lfe[0]; + subframe_len = output_frame / MAX_PARAM_SPATIAL_SUBFRAMES; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + single_separated = 1; + num_objects = 1; + } + else + { + single_separated = 0; + num_objects = st_ivas->nchan_ism; + } + + for ( obj = 0; obj < num_objects; obj++ ) + { + delay_signal( input_f[obj], output_frame, st_ivas->hMasaIsmData->delayBuffer[obj], st_ivas->hMasaIsmData->delayBuffer_size ); /* Delay the signal to match CLDFB delay */ + + for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + { + idx_offset = block * subframe_len; + dirac_read_idx = ( st_ivas->hSpatParamRendCom->dirac_read_idx + block ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + + if ( single_separated ) + { + azimuth = st_ivas->hMasaIsmData->azimuth_separated_ism[dirac_read_idx]; + elevation = st_ivas->hMasaIsmData->elevation_separated_ism[dirac_read_idx]; + } + else + { + azimuth = st_ivas->hMasaIsmData->azimuth_ism[obj][dirac_read_idx]; + elevation = st_ivas->hMasaIsmData->elevation_ism[obj][dirac_read_idx]; + } + + if ( st_ivas->hOutSetup.is_planar_setup ) + { + /* If no elevation support in output format, then rendering should be done with zero elevation */ + elevation = 0; + } + + if ( hVBAPdata != NULL ) + { + vbap_determine_gains( hVBAPdata, gains, azimuth, elevation, 1 ); + } + else + { + ivas_dirac_dec_get_response( azimuth, elevation, gains, st_ivas->hDirACRend->hOutSetup.ambisonics_order ); + } + + for ( j = 0; j < nchan_out_woLFE; j++ ) + { + if ( st_ivas->hDirACRend->hOutSetup.num_lfe > 0 ) + { + j2 = j + ( j >= lfe_index ); + } + else + { + j2 = j; + } + + if ( fabsf( gains[j] ) > 0.0f || fabsf( hRendererData->prev_gains[obj][j] ) > 0.0f ) + { + for ( k = 0; k < subframe_len; k++ ) + { + g1 = hRendererData->interpolator[k]; + g2 = 1.0f - g1; + output_f[j2][k + idx_offset] += ( g1 * gains[j] + g2 * hRendererData->prev_gains[obj][j] ) * input_f[obj][k + idx_offset]; + } + } + hRendererData->prev_gains[obj][j] = gains[j]; + } + } + } + + st_ivas->hSpatParamRendCom->dirac_read_idx = ( st_ivas->hSpatParamRendCom->dirac_read_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + + return; +} + +/*-------------------------------------------------------------------------* + * ivas_omasa_separate_object_render_jbm() + * + * Rendering separated objects and mixing them to the parametrically rendered signals for JBM + *-------------------------------------------------------------------------*/ + +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 *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 */ +) +{ + VBAP_HANDLE hVBAPdata; + DIRAC_REND_HANDLE hDirACRend; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + int16_t nchan_out_woLFE, num_lfe; + ISM_RENDERER_HANDLE hRendererData; + int16_t j, k, j2; + int16_t obj; + float gains[MAX_OUTPUT_CHANNELS]; + float g1, g2; + int16_t lfe_index; + int16_t azimuth, elevation; + int16_t num_objects; + uint8_t single_separated; + float *input_f[MAX_TRANSPORT_CHANNELS]; + float *output_f_local[MAX_OUTPUT_CHANNELS]; + int16_t offsetSamples; + int16_t n_samples_sf, md_idx; + int16_t slots_to_render, first_sf, last_sf, subframe_idx; + + hVBAPdata = st_ivas->hVBAPdata; + hDirACRend = st_ivas->hDirACRend; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + nchan_out_woLFE = st_ivas->hIntSetup.nchan_out_woLFE; + num_lfe = st_ivas->hIntSetup.num_lfe; + hRendererData = st_ivas->hIsmRendererData; + lfe_index = hDirACRend->hOutSetup.index_lfe[0]; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + single_separated = 1; + num_objects = 1; + } + else + { + single_separated = 0; + num_objects = st_ivas->nchan_ism; + } + + offsetSamples = slots_rendered * hSpatParamRendCom->slot_size; + + for ( j = 0; j < nchan_out_woLFE + num_lfe; j++ ) + { + output_f_local[j] = output_f[j]; + } + + for ( obj = 0; obj < num_objects; obj++ ) + { + input_f[obj] = &st_ivas->hTcBuffer->tc[obj + 2][offsetSamples]; + } + + slots_to_render = nSamplesRendered / hSpatParamRendCom->slot_size; + first_sf = subframes_rendered; + last_sf = first_sf; + + while ( slots_to_render > 0 ) + { + slots_to_render -= hSpatParamRendCom->subframe_nbslots[last_sf]; + last_sf++; + } + + 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. */ + if ( slots_rendered == 0 ) + { + int16_t tcBufferSize; + + tcBufferSize = hSpatParamRendCom->num_slots * hSpatParamRendCom->slot_size; + delay_signal( input_f[obj], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer[obj], st_ivas->hMasaIsmData->delayBuffer_size ); + } + + offsetSamples = 0; + + for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) + { + n_samples_sf = hSpatParamRendCom->subframe_nbslots[subframe_idx] * hSpatParamRendCom->slot_size; + if ( n_samples_sf != hRendererData->interpolator_length ) + { + for ( k = 0; k < n_samples_sf; k++ ) + { + hRendererData->interpolator[k] = (float) k / ( (float) n_samples_sf ); + } + hRendererData->interpolator_length = n_samples_sf; + } + + md_idx = hSpatParamRendCom->render_to_md_map[subframe_idx]; + + if ( single_separated ) + { + azimuth = st_ivas->hMasaIsmData->azimuth_separated_ism[md_idx]; + elevation = st_ivas->hMasaIsmData->elevation_separated_ism[md_idx]; + } + else + { + azimuth = st_ivas->hMasaIsmData->azimuth_ism[obj][md_idx]; + elevation = st_ivas->hMasaIsmData->elevation_ism[obj][md_idx]; + } + + if ( st_ivas->hOutSetup.is_planar_setup ) + { + /* If no elevation support in output format, then rendering should be done with zero elevation */ + elevation = 0; + } + + if ( hVBAPdata != NULL ) + { + vbap_determine_gains( hVBAPdata, gains, azimuth, elevation, 1 ); + } + else + { + ivas_dirac_dec_get_response( azimuth, elevation, gains, hDirACRend->hOutSetup.ambisonics_order ); + } + + for ( j = 0; j < nchan_out_woLFE; j++ ) + { + if ( hDirACRend->hOutSetup.num_lfe > 0 ) + { + j2 = j + ( j >= lfe_index ); + } + else + { + j2 = j; + } + + if ( fabsf( gains[j] ) > 0.0f || fabsf( hRendererData->prev_gains[obj][j] ) > 0.0f ) + { + for ( k = 0; k < n_samples_sf; k++ ) + { + g1 = hRendererData->interpolator[k]; + g2 = 1.0f - g1; + output_f_local[j2][k + offsetSamples] += ( g1 * gains[j] + g2 * hRendererData->prev_gains[obj][j] ) * input_f[obj][k + offsetSamples]; + } + } + hRendererData->prev_gains[obj][j] = gains[j]; + } + + offsetSamples += n_samples_sf; + } + } + + return; +} diff --git a/lib_dec/ivas_jbm_dec.c b/lib_dec/ivas_jbm_dec.c index ff28af051a4766c6fd72627e7951768322bcd596..b0a0754c0ad768487446a715a9dfe381fdc429ba 100644 --- a/lib_dec/ivas_jbm_dec.c +++ b/lib_dec/ivas_jbm_dec.c @@ -54,34 +54,32 @@ static void ivas_jbm_dec_copy_tc( Decoder_Struct *st_ivas, const int16_t nSample static void ivas_jbm_dec_tc_buffer_playout( Decoder_Struct *st_ivas, const uint16_t nSamplesAsked, uint16_t *nSamplesRendered, float *output[] ); -#ifdef FIX_470_MASA_JBM_EXT static void ivas_jbm_dec_copy_masa_meta_to_buffer( Decoder_Struct *st_ivas ); static void ivas_jbm_masa_sf_to_slot_map( Decoder_Struct *st_ivas, const int16_t nCldfbTs ); -#endif - /*--------------------------------------------------------------------------* * ivas_jbm_dec_tc() * * Principal IVAS JBM decoder routine, decoding of metadata and transport channels *--------------------------------------------------------------------------*/ - ivas_error ivas_jbm_dec_tc( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ float *data /* o : transport channel signals */ ) { int16_t n, output_frame, nchan_out; - Decoder_State *st; /* used for bitstream handling */ - float output[MAX_TRANSPORT_CHANNELS][L_FRAME48k]; /* 'float' buffer for transport channels, MAX_TRANSPORT_CHANNELS channels */ + Decoder_State *st; /* used for bitstream handling */ + float *output[MAX_OUTPUT_CHANNELS]; /* 'float' buffer for output synthesis */ /* TODO: can be allocated dynamically using st_ivas->p_output_f */ + float p_output_f[MAX_TRANSPORT_CHANNELS][L_FRAME48k]; int16_t nchan_remapped; - float output_lfe_ch[L_FRAME48k]; - int16_t nb_bits_metadata[MAX_SCE]; + int16_t nb_bits_metadata[MAX_SCE + 1]; int32_t output_Fs, ivas_total_brate; AUDIO_CONFIG output_config; ivas_error error; float *p_output[MAX_TRANSPORT_CHANNELS]; + int16_t num_md_sub_frames; + int32_t ism_total_brate; error = IVAS_ERR_OK; @@ -100,6 +98,7 @@ ivas_error ivas_jbm_dec_tc( for ( n = 0; n < MAX_TRANSPORT_CHANNELS; n++ ) { + output[n] = p_output_f[n]; p_output[n] = &output[n][0]; } @@ -112,7 +111,7 @@ ivas_error ivas_jbm_dec_tc( /* zero output when first frame(s) is lost */ for ( n = 0; n < nchan_out; n++ ) { - set_f( output[n], 0.0f, output_frame ); + set_f( p_output[n], 0.0f, output_frame ); } #ifdef DEBUG_MODE_INFO @@ -125,7 +124,6 @@ ivas_error ivas_jbm_dec_tc( else if ( st_ivas->ivas_format == STEREO_FORMAT ) { st_ivas->hCPE[0]->element_brate = ivas_total_brate; - if ( ( error = ivas_cpe_dec( st_ivas, 0, output, output_frame, 0 ) ) != IVAS_ERR_OK ) { return error; @@ -154,14 +152,16 @@ ivas_error ivas_jbm_dec_tc( } else if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { - if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, st_ivas->hDirAC->hParamIsm, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, st_ivas->hDirAC->hParamIsm, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt, + st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK ) { return error; } } else /* ISM_MODE_DISC */ { - if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_metadata_dec( ivas_total_brate, st_ivas->nchan_ism, &( st_ivas->nchan_transport ), st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt, + st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK ) { return error; } @@ -181,6 +181,11 @@ ivas_error ivas_jbm_dec_tc( { ivas_mono_downmix_render_passive( st_ivas, output, output_frame ); } + else if ( st_ivas->ism_mode == ISM_MODE_PARAM && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) ) + { + /* loudness correction */ + ivas_dirac_dec_binaural_sba_gain( output, st_ivas->nchan_transport, output_frame ); + } } else if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == MASA_FORMAT ) { @@ -196,12 +201,10 @@ ivas_error ivas_jbm_dec_tc( return error; } -#ifdef FIX_470_MASA_JBM_EXT if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) { ivas_jbm_dec_copy_masa_meta_to_buffer( st_ivas ); } -#endif } else if ( st_ivas->ivas_format == SBA_FORMAT ) { @@ -259,7 +262,8 @@ ivas_error ivas_jbm_dec_tc( } ivas_spar_dec_gen_umx_mat( st_ivas->hSpar->hMdDec, st_ivas->nchan_transport, IVAS_MAX_NUM_BANDS, st_ivas->bfi, - ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate ) ); + ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ) ); } ivas_sba_dirac_stereo_dec( st_ivas, output, output_frame, st_ivas->ivas_format == MC_FORMAT ); @@ -282,7 +286,8 @@ ivas_error ivas_jbm_dec_tc( if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) { - ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame ); + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->last_active_ivas_total_brate ); + ivas_sba_mix_matrix_determiner( st_ivas->hSpar, output, st_ivas->bfi, nchan_remapped, output_frame, num_md_sub_frames ); } else { @@ -292,21 +297,106 @@ ivas_error ivas_jbm_dec_tc( if ( st_ivas->ivas_format == MASA_FORMAT ) { +#ifdef CR_FIX_585_MASA_2TC_DTX_EXT + ivas_masa_prerender( st_ivas, output, output_frame, nchan_remapped ); +#else ivas_masa_prerender( st_ivas, output, output_frame ); +#endif } else if ( st_ivas->ivas_format == SBA_FORMAT && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) { -#ifdef FIX_564 /* loudness correction */ - ivas_dirac_dec_binaural_gain( output, nchan_remapped, output_frame ); -#else - float gain = 0.8414f; /* Todo: Temporary gain for roughly matching the loudness. To be tuned later together with other outputs. Also, this is not inline with ivas_dec() */ + ivas_dirac_dec_binaural_sba_gain( output, nchan_remapped, output_frame ); + } + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + int16_t nchan_ism, nchan_transport_ism; + int16_t dirac_bs_md_write_idx; + + st = st_ivas->hCPE[0]->hCoreCoder[0]; + set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); - for ( n = 0; n < nchan_remapped; n++ ) + /* Set the number of objects for the parametric rendering */ + dirac_bs_md_write_idx = 0; + if ( st_ivas->hDirAC != NULL ) + { + st_ivas->hSpatParamRendCom->numIsmDirections = 0; + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) { - v_multc( output[n], gain, output[n], output_frame ); + st_ivas->hSpatParamRendCom->numIsmDirections = st_ivas->nchan_ism; } -#endif + + dirac_bs_md_write_idx = st_ivas->hSpatParamRendCom->dirac_bs_md_write_idx; /* Store the write-index for this frame */ + } + + /* MASA metadata decoding */ + if ( ( error = ivas_masa_decode( st_ivas, st, &nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Configuration of combined-format bit-budget distribution */ + ivas_set_surplus_brate_dec( st_ivas, &ism_total_brate ); + + st->bit_stream = &( st_ivas->bit_stream[( ism_total_brate / FRAMES_PER_SEC )] ); + + /* set ISM parameters and decode ISM metadata in OMASA format */ + if ( ( error = ivas_omasa_ism_metadata_dec( st_ivas, ism_total_brate, &nchan_ism, &nchan_transport_ism, dirac_bs_md_write_idx, &nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* decode ISM channels */ + for ( n = 0; n < nchan_transport_ism; n++ ) + { + if ( ( error = ivas_sce_dec( st_ivas, n, &output[st_ivas->nchan_transport + n], output_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* decode MASA channels */ + if ( ( error = ivas_cpe_dec( st_ivas, 0, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->hCPE[0]->nchan_out == 1 ) + { + mvr2r( output[0], output[1], output_frame ); /* Copy mono signal to stereo output channels */ + } + + /* HP filtering */ + for ( n = 0; n < getNumChanSynthesis( st_ivas ); n++ ) + { + hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); + } + + if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) + { + ivas_mono_downmix_render_passive( st_ivas, output, output_frame ); + } + else if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) + { + /* sanity check in case of bitrate switching */ + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_OUTPUT_FORMAT, "Incorrect output configuration specified for combined MASA and ISM format" ); + } + + /* in case of external rendering, rearrange the channels order */ + mvr2r( output[0], output[MAX_TRANSPORT_CHANNELS - 2], output_frame ); + mvr2r( output[1], output[MAX_TRANSPORT_CHANNELS - 1], output_frame ); + + for ( n = 0; n < nchan_transport_ism; n++ ) + { + mvr2r( output[st_ivas->nchan_transport + n], output[n], output_frame ); + } + mvr2r( output[MAX_TRANSPORT_CHANNELS - 2], output[n], output_frame ); + mvr2r( output[MAX_TRANSPORT_CHANNELS - 1], output[++n], output_frame ); + + ivas_jbm_dec_copy_masa_meta_to_buffer( st_ivas ); } } else if ( st_ivas->ivas_format == MC_FORMAT ) @@ -321,7 +411,7 @@ ivas_error ivas_jbm_dec_tc( st_ivas->hCPE[1]->hCoreCoder[1]->hTcxCfg = st_ivas->hCPE[1]->hCoreCoder[0]->hTcxCfg; } - ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output_lfe_ch ); + ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output[LFE_CHANNEL] ); } if ( st_ivas->mc_mode == MC_MODE_MCT ) @@ -331,8 +421,6 @@ ivas_error ivas_jbm_dec_tc( return error; } - mvr2r( output_lfe_ch, output[LFE_CHANNEL], output_frame ); - /* HP filtering */ for ( n = 0; n < st_ivas->nchan_transport; n++ ) { @@ -344,7 +432,8 @@ ivas_error ivas_jbm_dec_tc( if ( st_ivas->transport_config != st_ivas->intern_config && ( st_ivas->intern_config == AUDIO_CONFIG_FOA || st_ivas->intern_config == AUDIO_CONFIG_HOA2 || st_ivas->intern_config == AUDIO_CONFIG_HOA3 ) ) { - if ( ( st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe ) <= ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ) ) + if ( ( st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe ) >= + ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ) ) { ivas_mc2sba( st_ivas->hTransSetup, p_output, p_output, output_frame, st_ivas->hIntSetup.ambisonics_order, GAIN_LFE ); } @@ -362,6 +451,34 @@ ivas_error ivas_jbm_dec_tc( } } } + else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) + { + ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output[LFE_CHANNEL] ); + + ivas_mc_paramupmix_dec_read_BS( st_ivas, st, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); + + if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Rendering */ + if ( st_ivas->renderer_type == RENDERER_MC ) + { + if ( output_config == AUDIO_CONFIG_MONO || output_config == AUDIO_CONFIG_STEREO ) + { + /* HP filtering */ + for ( n = 0; n < st_ivas->nchan_transport; n++ ) + { + if ( n != LFE_CHANNEL ) + { + hp20( output[n], output_frame, st_ivas->mem_hp20_out[n], output_Fs ); + } + } + ivas_ls_setup_conversion( st_ivas, audioCfg2channels( AUDIO_CONFIG_5_1_2 ), output_frame, p_output, p_output ); + } + } + } else if ( st_ivas->mc_mode == MC_MODE_PARAMMC ) { /* read Parametric MC parameters from the bitstream */ @@ -471,15 +588,44 @@ ivas_error ivas_jbm_dec_tc( ivas_mono_stereo_downmix_mcmasa( st_ivas, output, output_frame ); } } +#ifdef API_5MS + else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) + { + + /* at least decode everything here, the rest is ToDo, for this we just output zeroes atm */ + ivas_lfe_dec( st_ivas->hLFE, st, output_frame, st_ivas->bfi, output[LFE_CHANNEL] ); + + ivas_mc_paramupmix_dec_read_BS( st_ivas, st, st_ivas->hMCParamUpmix, &nb_bits_metadata[0] ); + + if ( ( error = ivas_mct_dec( st_ivas, output, output_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif } /*----------------------------------------------------------------* * Write IVAS transport channels *----------------------------------------------------------------*/ - - ivas_syn_output_f( p_output, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data ); - +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm == 1 +#ifdef API_5MS_BASELINE + || !st_ivas->hDecoderConfig->Opt_5ms +#endif + ) + { +#endif + ivas_syn_output_f( p_output, output_frame, st_ivas->hTcBuffer->nchan_transport_jbm, data ); +#ifdef API_5MS + } + else + { + /* directly copy to tc buffers */ + ivas_jbm_dec_copy_tc_no_tsm( st_ivas, p_output, output_frame ); + } +#endif /*----------------------------------------------------------------* * Common updates @@ -501,6 +647,8 @@ ivas_error ivas_jbm_dec_tc( st_ivas->ini_active_frame++; } + st_ivas->last_ivas_format = st_ivas->ivas_format; + #ifdef DEBUG_MODE_INFO dbgwrite( &st_ivas->bfi, sizeof( int16_t ), 1, output_frame, "res/bfi" ); dbgwrite( &st_ivas->BER_detect, sizeof( int16_t ), 1, output_frame, "res/BER_detect" ); @@ -543,18 +691,31 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer( { p_data_f[n] = &data_f[n][0]; } - ivas_jbm_dec_copy_tc( st_ivas, nSamplesForRendering, nSamplesResidual, data, p_data_f ); +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm +#ifdef API_5MS_BASELINE + || !st_ivas->hDecoderConfig->Opt_5ms +#endif + ) + { +#endif + ivas_jbm_dec_copy_tc( st_ivas, nSamplesForRendering, nSamplesResidual, data, p_data_f ); +#ifdef API_5MS + } + else + { + *nSamplesResidual = 0; + } +#endif n_render_timeslots = st_ivas->hTcBuffer->n_samples_available / st_ivas->hTcBuffer->n_samples_granularity; if ( st_ivas->hTcBuffer->tc_buffer_mode == TC_BUFFER_MODE_BUFFER ) { ivas_jbm_dec_td_renderers_adapt_subframes( st_ivas ); -#ifdef FIX_470_MASA_JBM_EXT - if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) + if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) { ivas_jbm_masa_sf_to_slot_map( st_ivas, n_render_timeslots ); } -#endif } else if ( st_ivas->ivas_format == STEREO_FORMAT ) { @@ -584,12 +745,29 @@ ivas_error ivas_jbm_dec_feed_tc_to_renderer( { ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + n_render_timeslots *= ( st_ivas->hTcBuffer->n_samples_granularity / st_ivas->hSpatParamRendCom->slot_size ); + } + ivas_sba_dec_digest_tc( st_ivas, n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); + + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + ivas_ism_dec_digest_tc( st_ivas ); + } + } else if ( st_ivas->ivas_format == MC_FORMAT ) { if ( st_ivas->mc_mode == MC_MODE_MCT ) { ivas_jbm_dec_td_renderers_adapt_subframes( st_ivas ); } + else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) + { + ivas_mc_paramupmix_dec_digest_tc( st_ivas, (uint8_t) n_render_timeslots, st_ivas->hTcBuffer->n_samples_available ); + } else if ( st_ivas->mc_mode == MC_MODE_PARAMMC ) { ivas_param_mc_dec_digest_tc( st_ivas, (uint8_t) n_render_timeslots, p_data_f ); @@ -617,7 +795,12 @@ ivas_error ivas_jbm_dec_render( const uint16_t nSamplesAsked, /* i : number of samples wanted */ uint16_t *nSamplesRendered, /* o : number of samples rendered */ uint16_t *nSamplesAvailableNext, /* o : number of samples still available in the rendering pipeline */ - int16_t *data /* o : output synthesis signal */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { int16_t n, nchan_out; @@ -631,6 +814,7 @@ ivas_error ivas_jbm_dec_render( ivas_error error; float *p_output[MAX_OUTPUT_CHANNELS]; float *p_tc[MAX_TRANSPORT_CHANNELS]; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; error = IVAS_ERR_OK; @@ -640,18 +824,24 @@ ivas_error ivas_jbm_dec_render( * Initialization of local vars after struct has been set *----------------------------------------------------------------*/ + hSpatParamRendCom = st_ivas->hSpatParamRendCom; output_Fs = st_ivas->hDecoderConfig->output_Fs; nchan_out = st_ivas->hDecoderConfig->nchan_out; nchan_transport = st_ivas->hTcBuffer->nchan_transport_jbm; output_config = st_ivas->hDecoderConfig->output_config; nSamplesAskedLocal = nSamplesAsked + st_ivas->hTcBuffer->n_samples_discard; + for ( n = 0; n < MAX_OUTPUT_CHANNELS; n++ ) { p_output[n] = &output[n][0]; } +#ifdef FIX_676_JBM_USAN + for ( n = 0; n < st_ivas->hTcBuffer->nchan_buffer_full; n++ ) +#else for ( n = 0; n < st_ivas->hTcBuffer->nchan_transport_internal; n++ ) +#endif { p_tc[n] = &st_ivas->hTcBuffer->tc[n][st_ivas->hTcBuffer->n_samples_rendered]; } @@ -701,13 +891,12 @@ ivas_error ivas_jbm_dec_render( *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); pan_left = ( st_ivas->hDecoderConfig->non_diegetic_pan_gain + 1.f ) * 0.5f; pan_right = 1.f - pan_left; - v_multc( st_ivas->hTcBuffer->tc[0], pan_right, output[1], *nSamplesRendered ); - v_multc( st_ivas->hTcBuffer->tc[0], pan_left, output[0], *nSamplesRendered ); + v_multc( p_tc[0], pan_right, output[1], *nSamplesRendered ); + v_multc( p_tc[0], pan_left, output[0], *nSamplesRendered ); } else if ( st_ivas->renderer_type == RENDERER_PARAM_ISM || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) { ivas_param_ism_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); - if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) { /* Convert CICP19 -> Ambisonics */ @@ -718,7 +907,6 @@ ivas_error ivas_jbm_dec_render( else /* ISM_MODE_DISC */ { *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); - /* Loudspeaker or Ambisonics rendering */ if ( st_ivas->renderer_type == RENDERER_TD_PANNING || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { @@ -729,8 +917,8 @@ ivas_error ivas_jbm_dec_render( { pan_left = ( st_ivas->hDecoderConfig->non_diegetic_pan_gain + 1.f ) * 0.5f; pan_right = 1.f - pan_left; - v_multc( st_ivas->hTcBuffer->tc[0], pan_right, output[1], *nSamplesRendered ); - v_multc( st_ivas->hTcBuffer->tc[0], pan_left, output[0], *nSamplesRendered ); + v_multc( p_tc[0], pan_right, output[1], *nSamplesRendered ); + v_multc( p_tc[0], pan_left, output[0], *nSamplesRendered ); } else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) { @@ -759,7 +947,7 @@ ivas_error ivas_jbm_dec_render( #ifdef DEBUGGING else if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { - ivas_binaural_cldfb_sf( st_ivas, *nSamplesRendered, p_output ); + ivas_binaural_cldfb_sf( st_ivas, *nSamplesRendered, st_ivas->hTcBuffer->nb_subframes, p_output ); } #endif } @@ -783,7 +971,9 @@ ivas_error ivas_jbm_dec_render( mvr2r( st_ivas->hTcBuffer->tc[n] + st_ivas->hTcBuffer->n_samples_rendered, p_output[n], *nSamplesRendered ); } - if ( ( error = ivas_sba_linear_renderer( p_output, *nSamplesRendered, nchan_remapped, output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_sba_linear_renderer( p_output, *nSamplesRendered, nchan_remapped, + 0, + output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ) ) != IVAS_ERR_OK ) { return error; } @@ -798,26 +988,63 @@ ivas_error ivas_jbm_dec_render( ivas_sba_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); } } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + nchan_remapped = st_ivas->nchan_transport; + + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) + { + if ( ( ivas_omasa_dirac_td_binaural_jbm( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + ivas_dirac_dec_binaural_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output ); + } + } + else if ( st_ivas->renderer_type == RENDERER_DIRAC ) + { + ivas_omasa_dirac_rend_jbm( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, nchan_remapped, p_output ); + } + } else if ( st_ivas->ivas_format == MC_FORMAT ) { if ( st_ivas->mc_mode == MC_MODE_MCT ) { + int16_t crendInPlaceRotation = FALSE; *nSamplesRendered = min( st_ivas->hTcBuffer->n_samples_available, nSamplesAskedLocal ); if ( st_ivas->transport_config != st_ivas->intern_config && ( st_ivas->intern_config == AUDIO_CONFIG_FOA || st_ivas->intern_config == AUDIO_CONFIG_HOA2 || st_ivas->intern_config == AUDIO_CONFIG_HOA3 ) ) { - ivas_mc2sba( st_ivas->hTransSetup, p_tc, p_output, *nSamplesRendered, st_ivas->hIntSetup.ambisonics_order, GAIN_LFE ); + if ( ( st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe ) < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ) ) + { + crendInPlaceRotation = TRUE; + ivas_mc2sba( st_ivas->hTransSetup, p_tc, p_output, *nSamplesRendered, st_ivas->hIntSetup.ambisonics_order, GAIN_LFE ); + } } /* Rendering */ if ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { - if ( ( 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, p_tc, p_output, *nSamplesRendered, output_Fs ) ) != IVAS_ERR_OK ) + if ( ( 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 : p_tc, + p_output, + *nSamplesRendered, + output_Fs ) ) != IVAS_ERR_OK ) { return error; } - - ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, st_ivas->hTcBuffer->tc, p_output ); + ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, p_tc, p_output ); } else if ( st_ivas->renderer_type == RENDERER_MC ) { @@ -834,8 +1061,59 @@ ivas_error ivas_jbm_dec_render( { return error; } + ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, p_tc, p_output ); + } + } + else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) + { + ivas_mc_paramupmix_dec_render( st_ivas, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_tc, p_output ); + + /* HP filtering */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*no HPF when rendering is already done*/ + if ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) +#endif + { + for ( n = 0; n < st_ivas->nchan_transport; n++ ) + { + if ( n != LFE_CHANNEL ) + { + hp20( p_output[n], *nSamplesRendered, st_ivas->mem_hp20_out[n], output_Fs ); + } + } + } - ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, st_ivas->hTcBuffer->tc, p_output ); + if ( st_ivas->transport_config != st_ivas->intern_config && ( st_ivas->intern_config == AUDIO_CONFIG_FOA || st_ivas->intern_config == AUDIO_CONFIG_HOA2 || st_ivas->intern_config == AUDIO_CONFIG_HOA3 ) ) + { + ivas_mc2sba( st_ivas->hTransSetup, p_output, p_output, *nSamplesRendered, st_ivas->hIntSetup.ambisonics_order, GAIN_LFE ); + } + + /* Rendering */ + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*handled in CLDFB domain already*/ + if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#endif + { + ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, p_output, p_output ); + } + } + else if ( st_ivas->renderer_type == RENDERER_MC ) + { + ivas_ls_setup_conversion( st_ivas, MC_PARAMUPMIX_MAX_INPUT_CHANS, *nSamplesRendered, p_output, p_output ); + } + else if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) + { + ivas_mc2sba( st_ivas->hIntSetup, p_output, p_output, *nSamplesRendered, st_ivas->hOutSetup.ambisonics_order, 0.f ); + } + else if ( st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) + { + if ( ( ivas_td_binaural_renderer( st_ivas, p_output, *nSamplesRendered ) ) != IVAS_ERR_OK ) + { + return error; + } + ivas_binaural_add_LFE( st_ivas, *nSamplesRendered, p_output, p_output ); } } else if ( st_ivas->mc_mode == MC_MODE_PARAMMC ) @@ -844,7 +1122,7 @@ ivas_error ivas_jbm_dec_render( } else if ( st_ivas->mc_mode == MC_MODE_MCMASA ) { - int16_t offset = st_ivas->hDirAC->slots_rendered * st_ivas->hDirAC->slot_size; + int16_t offset = hSpatParamRendCom->slots_rendered * hSpatParamRendCom->slot_size; nchan_remapped = st_ivas->nchan_transport; if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) @@ -854,7 +1132,6 @@ ivas_error ivas_jbm_dec_render( else if ( st_ivas->renderer_type == RENDERER_DIRAC || st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) /* rendering to CICPxx and Ambisonics */ { ivas_dirac_dec_render( st_ivas, nchan_remapped, nSamplesAskedLocal, nSamplesRendered, nSamplesAvailableNext, p_output ); - if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC ) { /* we still need to copy the separate channel if available */ @@ -862,7 +1139,6 @@ ivas_error ivas_jbm_dec_render( { mvr2r( st_ivas->hTcBuffer->tc[LFE_CHANNEL - 1] + offset, output[st_ivas->hOutSetup.separateChannelIndex], *nSamplesRendered ); } - ivas_mc2sba( st_ivas->hIntSetup, p_output, p_output, *nSamplesRendered, st_ivas->hOutSetup.ambisonics_order, 0.f ); } else if ( st_ivas->intern_config == AUDIO_CONFIG_5_1 && ( output_config == AUDIO_CONFIG_5_1_2 || output_config == AUDIO_CONFIG_5_1_4 || output_config == AUDIO_CONFIG_7_1 ) ) @@ -912,15 +1188,47 @@ ivas_error ivas_jbm_dec_render( st_ivas->hTcBuffer->n_samples_discard = 0; } - ivas_limiter_dec( st_ivas->hLimiter, p_output, nchan_out, *nSamplesRendered, st_ivas->BER_detect ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->Opt_Limiter ) +#endif + { +#ifdef API_5MS + if ( !( st_ivas->ivas_format == MONO_FORMAT ) ) + { +#endif +#ifndef DISABLE_LIMITER + ivas_limiter_dec( st_ivas->hLimiter, p_output, nchan_out, *nSamplesRendered, st_ivas->BER_detect ); +#endif +#ifdef API_5MS + } +#endif + } +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + switch ( pcm_resolution ) + { + case PCM_INT16: +#endif #ifdef DEBUGGING - st_ivas->noClipping += + st_ivas->noClipping += #endif - ivas_syn_output( p_output, *nSamplesRendered, nchan_out, data ); + ivas_syn_output( p_output, *nSamplesRendered, nchan_out, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + (int16_t *) +#endif + data ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + break; + case PCM_FLOAT32: + ivas_syn_output_f( p_output, *nSamplesRendered, nchan_out, (float *) data ); + break; + default: + error = IVAS_ERR_UNKNOWN; + break; + } +#endif *nSamplesAvailableNext = st_ivas->hTcBuffer->n_samples_available; - pop_wmops(); return error; } @@ -941,7 +1249,12 @@ ivas_error ivas_jbm_dec_flush_renderer( 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 : rendered samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { ivas_error error; @@ -1056,6 +1369,36 @@ ivas_error ivas_jbm_dec_flush_renderer( return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong MC_MODE in VoIP renderer flushing!" ); } } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT || st_ivas->ivas_format == MASA_FORMAT ) + { + if ( ism_mode_old == ISM_MASA_MODE_DISC ) + { + float *tc_local[MAX_TRANSPORT_CHANNELS]; + + for ( ch_idx = 0; ch_idx < st_ivas->nchan_ism; ch_idx++ ) + { + tc_local[ch_idx] = &st_ivas->hTcBuffer->tc[ch_idx + 2][hTcBuffer->n_samples_rendered]; + mvr2r( st_ivas->hMasaIsmData->delayBuffer[ch_idx], tc_local[ch_idx], st_ivas->hMasaIsmData->delayBuffer_size ); + } + + if ( st_ivas->nchan_ism > 0 ) + { + if ( ( ivas_td_binaural_renderer_sf( st_ivas, p_output, hTcBuffer->n_samples_granularity ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + for ( ch_idx = 0; ch_idx < st_ivas->hDecoderConfig->nchan_out; ch_idx++ ) + { + set_zero( p_output[ch_idx], (int16_t) ( *nSamplesRendered ) ); + } + st_ivas->hTcBuffer->slots_rendered += 1; + st_ivas->hTcBuffer->subframes_rendered += 1; + } + } + } else { return IVAS_ERROR( IVAS_ERR_WRONG_MODE, "Wrong IVAS format in VoIP renderer flushing!" ); @@ -1063,13 +1406,46 @@ ivas_error ivas_jbm_dec_flush_renderer( } /* Only write out the valid data*/ - ivas_limiter_dec( st_ivas->hLimiter, p_output, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->Opt_Limiter ) +#endif + { +#ifdef API_5MS + if ( !( st_ivas->ivas_format == MONO_FORMAT ) ) + { +#endif +#ifndef DISABLE_LIMITER + ivas_limiter_dec( st_ivas->hLimiter, p_output, st_ivas->hDecoderConfig->nchan_out, *nSamplesRendered, st_ivas->BER_detect ); +#endif +#ifdef API_5MS + } +#endif + } +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + switch ( pcm_resolution ) + { + case PCM_INT16: +#endif #ifdef DEBUGGING - st_ivas->noClipping += + st_ivas->noClipping += +#endif + ivas_syn_output( p_output, *nSamplesRendered, st_ivas->hDecoderConfig->nchan_out, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + (int16_t *) #endif - ivas_syn_output( p_output, *nSamplesRendered, st_ivas->hDecoderConfig->nchan_out, data ); + data ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + break; + case PCM_FLOAT32: + ivas_syn_output_f( p_output, *nSamplesRendered, st_ivas->hDecoderConfig->nchan_out, (float *) data ); + break; + default: + error = IVAS_ERR_UNKNOWN; + break; + } +#endif return error; } @@ -1245,14 +1621,12 @@ void ivas_jbm_dec_get_md_map( } -#ifdef FIX_470_MASA_JBM_EXT /*--------------------------------------------------------------------------* * ivas_jbm_dec_get_md_map_even_spacing() * * Get an meta data map adapted to a time scale modified IVAS frame. Distribute slots evenly across the modified frame. *--------------------------------------------------------------------------*/ void ivas_jbm_dec_get_md_map_even_spacing( - const int16_t default_len, /* i : default frame length in metadata slots */ const int16_t len, /* i : length of the modfied frames in metadata slots */ const int16_t subframe_len, /* i : default length of a subframe */ const int16_t offset, /* i : current read offset into the md buffer */ @@ -1263,9 +1637,6 @@ void ivas_jbm_dec_get_md_map_even_spacing( int16_t map_idx, sf_idx, sf_length, increment, subframes_written; float decimal, decimal_sum, eps; int16_t subframe_map_length[MAX_PARAM_SPATIAL_SUBFRAMES]; -#ifdef DEBUGGING - assert( default_len % 2 == 0 ); -#endif /* subframe map length */ sf_length = len / subframe_len; @@ -1308,7 +1679,6 @@ void ivas_jbm_dec_get_md_map_even_spacing( } } } -#endif /*--------------------------------------------------------------------------* @@ -1364,10 +1734,33 @@ int16_t ivas_jbm_dec_get_num_tc_channels( } if ( st_ivas->ivas_format == SBA_FORMAT ) { - if ( ( st_ivas->sba_planar && num_tc >= 3 ) || ( num_tc == 3 ) ) + if ( +#ifndef FIX_PLANAR_SBA_JBM_RS + ( st_ivas->sba_planar && num_tc >= 3 ) || + ( +#endif + num_tc == 3 +#ifndef FIX_PLANAR_SBA_JBM_RS + ) +#endif + ) + { + num_tc++; + } + } + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_EXTERNAL ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) { num_tc++; } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + num_tc += st_ivas->nchan_ism; + } } } else if ( st_ivas->ivas_format == MC_FORMAT ) @@ -1385,7 +1778,8 @@ int16_t ivas_jbm_dec_get_num_tc_channels( /* do all static dmx already in the TC decoder if less channels than transported... */ if ( st_ivas->transport_config != st_ivas->intern_config && ( st_ivas->intern_config == AUDIO_CONFIG_FOA || st_ivas->intern_config == AUDIO_CONFIG_HOA2 || st_ivas->intern_config == AUDIO_CONFIG_HOA3 ) ) { - if ( ( st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe ) > ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ) ) + if ( ( st_ivas->hTransSetup.nchan_out_woLFE + st_ivas->hTransSetup.num_lfe ) >= + ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ) ) { num_tc = st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe; } @@ -1395,6 +1789,10 @@ int16_t ivas_jbm_dec_get_num_tc_channels( num_tc = st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe; } } + else if ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) + { + num_tc = MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; + } else if ( st_ivas->mc_mode == MC_MODE_MCMASA ) { if ( st_ivas->hOutSetup.separateChannelEnabled ) @@ -1410,6 +1808,12 @@ int16_t ivas_jbm_dec_get_num_tc_channels( } } } +#ifdef API_5MS + else if ( st_ivas->ivas_format == MONO_FORMAT && st_ivas->renderer_type == RENDERER_NON_DIEGETIC_DOWNMIX ) + { + num_tc = MAX_OUTPUT_CHANNELS_IN_DIEGETIC_PAN; + } +#endif return num_tc; } @@ -1468,6 +1872,9 @@ static void ivas_jbm_dec_copy_tc( } hTcBuffer->n_samples_rendered = 0; +#ifdef API_5MS + hTcBuffer->subframes_rendered = 0; +#endif return; } @@ -1478,10 +1885,11 @@ static void ivas_jbm_dec_copy_tc( * * *--------------------------------------------------------------------------*/ - /*! r: render granularity */ int16_t ivas_jbm_dec_get_render_granularity( 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 */ ) { @@ -1489,7 +1897,14 @@ int16_t ivas_jbm_dec_get_render_granularity( if ( rendererType == RENDERER_BINAURAL_OBJECTS_TD || rendererType == RENDERER_BINAURAL_MIXER_CONV || rendererType == RENDERER_BINAURAL_MIXER_CONV_ROOM ) { - render_granularity = NS2SA( output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); + if ( ( ivas_format == MC_FORMAT ) && ( mc_mode == MC_MODE_PARAMUPMIX ) ) + { + render_granularity = NS2SA( output_Fs, CLDFB_SLOT_NS ); + } + else + { + render_granularity = NS2SA( output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); + } } else { @@ -1499,7 +1914,6 @@ int16_t ivas_jbm_dec_get_render_granularity( return render_granularity; } - /*--------------------------------------------------------------------------* * ivas_jbm_dec_tc_buffer_open() * @@ -1563,34 +1977,66 @@ ivas_error ivas_jbm_dec_tc_buffer_open( } else { +#ifdef API_5MS + int16_t n_samp_full, n_samp_residual; +#else int16_t n_samp_full = ( NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) + hTcBuffer->n_samples_granularity - 1 ); int16_t n_samp_residual = hTcBuffer->n_samples_granularity - 1; +#endif int32_t offset; - - nsamp_to_allocate = hTcBuffer->nchan_buffer_full * n_samp_full; - nsamp_to_allocate += nchan_residual * n_samp_residual; - - if ( ( hTcBuffer->tc_buffer = (float *) malloc( nsamp_to_allocate * sizeof( float ) ) ) == NULL ) +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm ) { - return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for JBM TC Buffer\n" ) ); + n_samp_full = ( NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) + hTcBuffer->n_samples_granularity - 1 ); + n_samp_residual = hTcBuffer->n_samples_granularity - 1; } - set_zero( hTcBuffer->tc_buffer, nsamp_to_allocate ); - - offset = 0; - for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ ) + else { - hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset]; - offset += n_samp_full; + n_samp_full = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); + n_samp_residual = 0; } - for ( ; ch_idx < hTcBuffer->nchan_transport_internal; ch_idx++ ) +#endif + + + nsamp_to_allocate = hTcBuffer->nchan_buffer_full * n_samp_full; + nsamp_to_allocate += nchan_residual * n_samp_residual; + +#ifdef API_5MS + if ( nsamp_to_allocate == 0 ) { - hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset]; - offset += n_samp_residual; + hTcBuffer->tc_buffer = NULL; + for ( ch_idx = 0; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ ) + { + hTcBuffer->tc[ch_idx] = NULL; + } } - for ( ; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ ) + else { - hTcBuffer->tc[ch_idx] = NULL; +#endif + if ( ( hTcBuffer->tc_buffer = (float *) malloc( nsamp_to_allocate * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for JBM TC Buffer\n" ) ); + } + set_zero( hTcBuffer->tc_buffer, nsamp_to_allocate ); + + offset = 0; + for ( ch_idx = 0; ch_idx < hTcBuffer->nchan_buffer_full; ch_idx++ ) + { + hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset]; + offset += n_samp_full; + } + for ( ; ch_idx < hTcBuffer->nchan_transport_internal; ch_idx++ ) + { + hTcBuffer->tc[ch_idx] = &hTcBuffer->tc_buffer[offset]; + offset += n_samp_residual; + } + for ( ; ch_idx < MAX_TRANSPORT_CHANNELS; ch_idx++ ) + { + hTcBuffer->tc[ch_idx] = NULL; + } +#ifdef API_5MS } +#endif } st_ivas->hTcBuffer = hTcBuffer; @@ -1669,8 +2115,21 @@ ivas_error ivas_jbm_dec_tc_buffer_reconfigure( /* realloc buffers */ free( hTcBuffer->tc_buffer ); +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm ) + { + n_samp_full = ( NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) + hTcBuffer->n_samples_granularity - 1 ); + n_samp_residual = hTcBuffer->n_samples_granularity - 1; + } + else + { + n_samp_full = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); + n_samp_residual = 0; + } +#else n_samp_full = ( NS2SA( st_ivas->hDecoderConfig->output_Fs, MAX_JBM_L_FRAME_NS ) + hTcBuffer->n_samples_granularity - 1 ); n_samp_residual = hTcBuffer->n_samples_granularity - 1; +#endif nsamp_to_allocate = hTcBuffer->nchan_buffer_full * n_samp_full; nsamp_to_allocate += nchan_residual * n_samp_residual; @@ -1838,6 +2297,7 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( /* all renderers where we are done after TC decoding (might include DMX to mono/stereo */ case RENDERER_DISABLE: case RENDERER_MCMASA_MONO_STEREO: + case RENDERER_OSBA_STEREO: case RENDERER_MONO_DOWNMIX: buffer_mode = TC_BUFFER_MODE_BUFFER; break; @@ -1852,9 +2312,28 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( case RENDERER_PARAM_ISM: case RENDERER_BINAURAL_MIXER_CONV: case RENDERER_BINAURAL_MIXER_CONV_ROOM: +#ifdef API_5MS + case RENDERER_OSBA_AMBI: + case RENDERER_OSBA_LS: + buffer_mode = TC_BUFFER_MODE_RENDERER; + break; + case RENDERER_NON_DIEGETIC_DOWNMIX: + if ( st_ivas->ivas_format == MONO_FORMAT ) + { + buffer_mode = TC_BUFFER_MODE_BUFFER; + } + else + { + buffer_mode = TC_BUFFER_MODE_RENDERER; + } + break; +#else case RENDERER_NON_DIEGETIC_DOWNMIX: + case RENDERER_OSBA_AMBI: + case RENDERER_OSBA_LS: buffer_mode = TC_BUFFER_MODE_RENDERER; break; +#endif case RENDERER_MC_PARAMMC: if ( st_ivas->hParamMC->synthesis_conf == PARAM_MC_SYNTH_MONO_STEREO ) { @@ -1900,8 +2379,77 @@ TC_BUFFER_MODE ivas_jbm_dec_get_tc_buffer_mode( return buffer_mode; } +#ifdef API_5MS +void ivas_jbm_dec_copy_tc_no_tsm( + Decoder_Struct *st_ivas, + float *tc[], + const int16_t output_frame ) +{ + int16_t n_ch_full_copy; + int16_t n_ch_cldfb; + int16_t ch_idx; + DECODER_TC_BUFFER_HANDLE hTcBuffer; + + hTcBuffer = st_ivas->hTcBuffer; + hTcBuffer->n_samples_buffered = output_frame; + hTcBuffer->n_samples_available = hTcBuffer->n_samples_buffered; + n_ch_full_copy = min( hTcBuffer->nchan_transport_jbm, hTcBuffer->nchan_buffer_full ); + n_ch_cldfb = hTcBuffer->nchan_transport_jbm - hTcBuffer->nchan_buffer_full; + /* copy full tcs*/ + for ( ch_idx = 0; ch_idx < n_ch_full_copy; ch_idx++ ) + { + mvr2r( tc[ch_idx], st_ivas->hTcBuffer->tc[ch_idx], hTcBuffer->n_samples_buffered ); + } + + /* CLDFB ana for ParamMC/ParamISM */ + if ( n_ch_cldfb > 0 ) + { + float *cldfb_real_buffer; + float *cldfb_imag_buffer; + int16_t cldfb_ch, slot_idx, num_freq_bands; + + cldfb_real_buffer = NULL; + cldfb_imag_buffer = NULL; + num_freq_bands = 0; + + if ( st_ivas->ivas_format == ISM_FORMAT ) + { + cldfb_real_buffer = st_ivas->hDirAC->hParamIsmRendering->Cldfb_RealBuffer_tc; + cldfb_imag_buffer = st_ivas->hDirAC->hParamIsmRendering->Cldfb_ImagBuffer_tc; + num_freq_bands = st_ivas->hSpatParamRendCom->num_freq_bands; + ivas_ism_param_dec_tc_gain_ajust( st_ivas, output_frame, output_frame / 2, tc ); + } + else if ( st_ivas->ivas_format == MC_FORMAT ) + { + cldfb_real_buffer = st_ivas->hParamMC->Cldfb_RealBuffer_tc; + cldfb_imag_buffer = st_ivas->hParamMC->Cldfb_ImagBuffer_tc; + num_freq_bands = st_ivas->hParamMC->num_freq_bands; + } +#ifdef DEBUGGING + else + { + assert( 0 && "Residual (direct CLDFB transport channels) only possible for ParamMC/ParamISM!" ); + } +#endif + /* CLDFB Analysis*/ + + for ( cldfb_ch = 0; cldfb_ch < n_ch_cldfb; cldfb_ch++, ch_idx++ ) + { + for ( slot_idx = 0; slot_idx < DEFAULT_JBM_CLDFB_TIMESLOTS; slot_idx++ ) + { + cldfbAnalysis_ts( &( tc[ch_idx][num_freq_bands * slot_idx] ), + &cldfb_real_buffer[slot_idx * num_freq_bands * n_ch_cldfb + cldfb_ch * num_freq_bands], + &cldfb_imag_buffer[slot_idx * num_freq_bands * n_ch_cldfb + cldfb_ch * num_freq_bands], + num_freq_bands, st_ivas->cldfbAnaDec[cldfb_ch] ); + } + } + } + hTcBuffer->n_samples_rendered = 0; + hTcBuffer->subframes_rendered = 0; +} +#endif + -#ifdef FIX_470_MASA_JBM_EXT /*--------------------------------------------------------------------------* * ivas_jbm_dec_metadata_open() * @@ -1990,7 +2538,7 @@ static void ivas_jbm_masa_sf_to_slot_map( num_slots_in_subfr = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; /* Map input subframes to slots */ - ivas_jbm_dec_get_md_map_even_spacing( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, num_slots_in_subfr, 0, MAX_PARAM_SPATIAL_SUBFRAMES, sf_to_slot_map ); + ivas_jbm_dec_get_md_map_even_spacing( nCldfbTs, num_slots_in_subfr, 0, MAX_PARAM_SPATIAL_SUBFRAMES, sf_to_slot_map ); for ( slot_idx = 0; slot_idx < nCldfbTs; slot_idx++ ) { @@ -2070,4 +2618,3 @@ void ivas_jbm_masa_sf_to_sf_map( } extOutMeta->descriptiveMeta.numberOfDirections = numberOfDirections; } -#endif diff --git a/lib_dec/ivas_masa_dec.c b/lib_dec/ivas_masa_dec.c index 0576fe8121f4d2ae294dca9dd52348f1ef128684..37fe367ef64da0600446e17b20e21ac52b13e555 100644 --- a/lib_dec/ivas_masa_dec.c +++ b/lib_dec/ivas_masa_dec.c @@ -35,6 +35,7 @@ #include #include "ivas_cnst.h" #include "ivas_prot.h" +#include "ivas_prot_rend.h" #include "ivas_rom_com.h" #include "ivas_stat_dec.h" #include "prot.h" @@ -72,6 +73,12 @@ static int16_t decode_lfe_to_total_energy_ratio( MCMASA_LFE_SYNTH_DATA_HANDLE hM static ivas_error ivas_masa_dec_config( Decoder_Struct *st_ivas ); +static int16_t ivas_decode_masaism_metadata( IVAS_QMETADATA_HANDLE hQMetaData, MASA_DECODER_HANDLE hMasa, MASA_ISM_DATA_HANDLE hMasaIsmData, const int16_t nchan_ism, uint16_t *bit_stream, int16_t *next_bit_pos, const int16_t idx_separated_object, const int16_t ism_imp, const int16_t dirac_bs_md_write_idx, const int16_t dirac_md_buffer_length ); + +static void decode_index_slice( int16_t index, int16_t *ratio_idx_ism, const int16_t nchan_ism, const int16_t K ); +static void decode_ism_ratios( uint16_t *bit_stream, int16_t *next_bit_pos, float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], float ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], const int16_t nchan_ism, const int16_t nbands, const int16_t nblocks, const int16_t idx_separated_object ); +static void read_ism_ratio_index( int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], const int16_t nchan_ism, const int16_t numCodingBands, const int16_t sf, int16_t ratio_ism_idx_prev_sf[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], uint16_t *bit_stream, int16_t *next_bit_pos, float *masa_to_total_energy_ratio, const int16_t idx_sep_obj, int16_t *num_zeros ); + /*-----------------------------------------------------------------------* * ivas_masa_decode() @@ -93,13 +100,20 @@ ivas_error ivas_masa_decode( IVAS_FORMAT ivas_format; int16_t low_bitrate_mode, tmp_elem_mode; ivas_error error; + int16_t obj; + int16_t i, ch, ism_imp; + int16_t dirac_bs_md_write_idx; + int32_t masa_total_brate; + + dirac_bs_md_write_idx = 0; + ism_imp = 0; error = IVAS_ERR_OK; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; low_bitrate_mode = -1; /* This means that LBR mode is not used. */ - if ( st_ivas->hOutSetup.separateChannelEnabled ) + if ( st_ivas->hOutSetup.separateChannelEnabled || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) { masa_brate = st_ivas->hCPE[0]->element_brate; } @@ -130,13 +144,116 @@ ivas_error ivas_masa_decode( { if ( !( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ) { - /* the number of MASA transport channels was read in ivas_dec_setup() */ - st->next_bit_pos -= MASA_TRANSP_BITS; - *nb_bits_read += MASA_TRANSP_BITS; + if ( ivas_format != MASA_ISM_FORMAT ) + { + /* number of transport channels is always 2 for MASA_ISM format */ + /* the number of MASA transport channels was read in ivas_dec_setup() */ + st->next_bit_pos -= MASA_TRANSP_BITS; + *nb_bits_read += MASA_TRANSP_BITS; + } + + if ( ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode != ISM_MODE_NONE ) + { + /* the number of objects was read */ + st->next_bit_pos -= NO_BITS_MASA_ISM_NO_OBJ; + *nb_bits_read += NO_BITS_MASA_ISM_NO_OBJ; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + /* read index of separated object */ + /* nchan_ism should be > 1*/ + byteBuffer = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read )++; + st_ivas->hMasaIsmData->idx_separated_ism = 2 * byteBuffer + st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read )++; + } + else + { + st_ivas->hMasaIsmData->idx_separated_ism = -1; + } + + /* read ISM importance flag (one per object) */ + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + ism_imp = 0; + for ( i = 0; i < ISM_METADATA_FLAG_BITS; i++ ) + { + byteBuffer = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read )++; + ism_imp = ( ism_imp << 1 ) + byteBuffer; + } + st_ivas->hIsmMetaData[0]->ism_imp = ism_imp; + } + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + ism_imp = 0; + for ( i = 0; i < ISM_METADATA_FLAG_BITS; i++ ) + { + byteBuffer = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read )++; + ism_imp = ( ism_imp << 1 ) + byteBuffer; + } + st_ivas->hIsmMetaData[0]->ism_imp = ism_imp; + + /* reset */ + st_ivas->hIsmMetaData[0]->ism_md_null_flag = 0; + st_ivas->hIsmMetaData[0]->ism_md_lowrate_flag = 0; + if ( st_ivas->hIsmMetaData[0]->ism_imp == ISM_NO_META ) + { + /* read flags */ + st_ivas->hIsmMetaData[0]->ism_md_null_flag = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read ) += ISM_METADATA_MD_FLAG_BITS; + st_ivas->hIsmMetaData[0]->ism_md_lowrate_flag = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read ) += ISM_METADATA_INACTIVE_FLAG_BITS; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + for ( ch = 0; ch < st_ivas->nchan_ism; ch++ ) + { + ism_imp = 0; + for ( i = 0; i < ISM_METADATA_FLAG_BITS; i++ ) + { + byteBuffer = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read )++; + ism_imp = ( ism_imp << 1 ) + byteBuffer; + } + st_ivas->hIsmMetaData[ch]->ism_imp = ism_imp; + + /* reset */ + st_ivas->hIsmMetaData[ch]->ism_md_null_flag = 0; + st_ivas->hIsmMetaData[ch]->ism_md_lowrate_flag = 0; + if ( st_ivas->hIsmMetaData[ch]->ism_imp == ISM_NO_META ) + { + /* read flags */ + st_ivas->hIsmMetaData[ch]->ism_md_null_flag = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read ) += ISM_METADATA_MD_FLAG_BITS; + st_ivas->hIsmMetaData[ch]->ism_md_lowrate_flag = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read ) += ISM_METADATA_INACTIVE_FLAG_BITS; + } + } + st_ivas->flag_omasa_brate = 0; + if ( st_ivas->nchan_ism >= 3 && ivas_total_brate == IVAS_128k ) + { + st_ivas->flag_omasa_brate = st->bit_stream[( st->next_bit_pos )--]; + ( *nb_bits_read ) += 1; + } + } + } - /* Placeholder for descriptive metadata content */ + /* read the MASA_ISM_FORMAT bit */ + byteBuffer = st->bit_stream[( st->next_bit_pos )--]; + if ( byteBuffer == 1 ) + { + hMasa->config.input_ivas_format = MASA_ISM_FORMAT; + } + else + { + hMasa->config.input_ivas_format = MASA_FORMAT; + } + /* reserved bit */ byteBuffer = st->bit_stream[( st->next_bit_pos )--]; - byteBuffer += st->bit_stream[( st->next_bit_pos )--]; *nb_bits_read += MASA_HEADER_BITS; /* read number of directions */ @@ -192,9 +309,49 @@ ivas_error ivas_masa_decode( /* Remove already read bits from the bit budget */ hQMetaData->metadata_max_bits -= *nb_bits_read; - if ( ivas_total_brate >= IVAS_384k ) + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + if ( st_ivas->hDirAC != NULL ) + { + *nb_bits_read += ivas_decode_masaism_metadata( hQMetaData, st_ivas->hMasa, st_ivas->hMasaIsmData, st_ivas->nchan_ism, st->bit_stream, &st->next_bit_pos, + st_ivas->hMasaIsmData->idx_separated_ism, ism_imp, st_ivas->hSpatParamRendCom->dirac_bs_md_write_idx, st_ivas->hSpatParamRendCom->dirac_md_buffer_length ); + + for ( obj = 0; obj <= st_ivas->nchan_ism; obj++ ) + { + if ( st_ivas->hMasaIsmData->idx_separated_ism == obj ) + { + int16_t sf; + int16_t meta_write_index; + + for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + meta_write_index = ( st_ivas->hSpatParamRendCom->dirac_bs_md_write_idx + sf ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + st_ivas->hMasaIsmData->azimuth_separated_ism[meta_write_index] = st_ivas->hMasaIsmData->azimuth_ism[obj][meta_write_index]; + st_ivas->hMasaIsmData->elevation_separated_ism[meta_write_index] = st_ivas->hMasaIsmData->elevation_ism[obj][meta_write_index]; + } + } + } + } + else + { + *nb_bits_read += ivas_decode_masaism_metadata( hQMetaData, st_ivas->hMasa, st_ivas->hMasaIsmData, st_ivas->nchan_ism, st->bit_stream, &st->next_bit_pos, + st_ivas->hMasaIsmData->idx_separated_ism, ism_imp, 0, MAX_PARAM_SPATIAL_SUBFRAMES ); + } + } + } + + masa_total_brate = ivas_total_brate; + if ( ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + masa_total_brate = calculate_cpe_brate_MASA_ISM( st_ivas->ism_mode, ivas_total_brate, st_ivas->nchan_ism ); + } + + if ( masa_total_brate >= IVAS_384k ) { - if ( ivas_total_brate >= IVAS_512k ) + if ( masa_total_brate >= IVAS_512k ) { *nb_bits_read += ivas_qmetadata_dec_decode_hr_384_512( hQMetaData, st->bit_stream, &st->next_bit_pos, hMasa->data.sph_grid16, 16, 4, hMasa->config.numCodingBands ); } @@ -208,6 +365,12 @@ ivas_error ivas_masa_decode( *nb_bits_read += ivas_qmetadata_dec_decode( hQMetaData, st->bit_stream, &st->next_bit_pos, 0 ); } + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* Modify spatial metadata based on the MASA-to-total energy ratios */ + ivas_omasa_modify_masa_energy_ratios( hQMetaData, st_ivas->hMasaIsmData->masa_to_total_energy_ratio ); + } + /* Get direction decoding quality. EC 1 and 2 are handled by the default value. */ if ( hQMetaData->ec_flag == 2 ) { @@ -241,7 +404,8 @@ ivas_error ivas_masa_decode( return error; } - ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, hQMetaData, &st_ivas->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE ); + ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, hQMetaData, &st_ivas->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE, + st_ivas->ivas_format, st_ivas->ism_mode, 0 ); hQMetaData->metadata_max_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC; @@ -285,19 +449,81 @@ ivas_error ivas_masa_decode( } } } + if ( st_ivas->hDirAC != NULL ) { - ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, ivas_total_brate, ivas_format, 0, 0 ); + dirac_bs_md_write_idx = st_ivas->hSpatParamRendCom->dirac_bs_md_write_idx; /* Store the write-index for this frame */ + ivas_qmetadata_to_dirac( hQMetaData, st_ivas->hDirAC, hMasa, st_ivas->hSpatParamRendCom, ivas_total_brate, ivas_format, 0, 0 ); + } + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( hQMetaData->q_direction == NULL ) + { + if ( ( error = ivas_masa_dec_config( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( st_ivas->hDirAC != NULL ) + { + int16_t b; + int16_t block; + int16_t meta_write_index; + + for ( i = 0; i < st_ivas->hSpatParamRendCom->numIsmDirections; i++ ) + { + for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + { + meta_write_index = ( dirac_bs_md_write_idx + block ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + + for ( b = 0; b < st_ivas->hSpatParamRendCom->num_freq_bands; b++ ) + { + st_ivas->hSpatParamRendCom->diffuseness_vector[meta_write_index][b] -= st_ivas->hMasaIsmData->energy_ratio_ism[i][meta_write_index][b]; + } + } + } + + for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + { + meta_write_index = ( dirac_bs_md_write_idx + block ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + + for ( b = 0; b < st_ivas->hSpatParamRendCom->num_freq_bands; b++ ) + { + st_ivas->hSpatParamRendCom->diffuseness_vector[meta_write_index][b] = max( 0.0f, st_ivas->hSpatParamRendCom->diffuseness_vector[meta_write_index][b] ); + } + } + } } + st->next_bit_pos = next_bit_pos_orig; - if ( ivas_format == MASA_FORMAT && st_ivas->nCPE == 1 && st_ivas->hCPE[0]->hStereoDft != NULL && st_ivas->hCPE[0]->hStereoDft->hConfig != NULL ) + if ( ivas_format == MASA_ISM_FORMAT ) { - st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = ivas_total_brate < MASA_STEREO_MIN_BITRATE ? 1 : 0; + int32_t cpe_brate; + cpe_brate = calculate_cpe_brate_MASA_ISM( st_ivas->ism_mode, ivas_total_brate, st_ivas->nchan_ism ); - if ( ivas_total_brate <= IVAS_SID_5k2 ) + if ( st_ivas->nCPE == 1 && st_ivas->hCPE[0]->hStereoDft != NULL && st_ivas->hCPE[0]->hStereoDft->hConfig != NULL ) { - st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = 0; + st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = cpe_brate < MASA_STEREO_MIN_BITRATE ? 1 : 0; + + if ( ivas_total_brate <= IVAS_SID_5k2 ) + { + st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = 0; + } + } + } + else + { + if ( ivas_format == MASA_FORMAT && st_ivas->nCPE == 1 && st_ivas->hCPE[0]->hStereoDft != NULL && st_ivas->hCPE[0]->hStereoDft->hConfig != NULL ) + { + st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = ivas_total_brate < MASA_STEREO_MIN_BITRATE ? 1 : 0; + + if ( ivas_total_brate <= IVAS_SID_5k2 ) + { + st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = 0; + } } } @@ -316,7 +542,7 @@ ivas_error ivas_masa_decode( } } - if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) + if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) && st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) { create_masa_ext_out_meta( hMasa, hQMetaData, st_ivas->nchan_transport ); } @@ -337,6 +563,8 @@ ivas_error ivas_masa_dec_open( { MASA_DECODER_HANDLE hMasa; ivas_error error; + int16_t i; + int32_t ism_total_brate; error = IVAS_ERR_OK; @@ -345,7 +573,17 @@ ivas_error ivas_masa_dec_open( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA decoder\n" ) ); } - ivas_masa_set_elements( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &st_ivas->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE ); + ism_total_brate = 0; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 && ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) ) + { + for ( i = 0; i < st_ivas->nSCE; i++ ) + { + ism_total_brate += st_ivas->hSCE[i]->element_brate; + } + } + + ivas_masa_set_elements( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &st_ivas->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE, + st_ivas->ivas_format, st_ivas->ism_mode, ism_total_brate ); mvs2s( DirAC_block_grouping, hMasa->config.block_grouping, MAX_PARAM_SPATIAL_SUBFRAMES + 1 ); mvs2s( MASA_band_grouping_24, hMasa->config.band_grouping, MASA_FREQUENCY_BANDS + 1 ); @@ -384,7 +622,15 @@ ivas_error ivas_masa_dec_open( st_ivas->hMasa = hMasa; /* allocate transport channels*/ - if ( st_ivas->hDecoderConfig->voip_active == 1 && st_ivas->hTcBuffer == NULL && st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms && +#endif +#else + st_ivas->hDecoderConfig->voip_active == 1 && +#endif + st_ivas->hTcBuffer == NULL && st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) { int16_t nchan_to_allocate; TC_BUFFER_MODE buffer_mode; @@ -394,8 +640,17 @@ ivas_error ivas_masa_dec_open( { buffer_mode = TC_BUFFER_MODE_BUFFER; } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) + { + buffer_mode = TC_BUFFER_MODE_BUFFER; + } nchan_to_allocate = ivas_jbm_dec_get_num_tc_channels( st_ivas ); + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) + { + nchan_to_allocate = 1; + } + if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_to_allocate, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) { return error; @@ -486,21 +741,43 @@ static ivas_error ivas_masa_dec_config( uint8_t maxBand; int16_t maxBin; ivas_error error; - + int32_t ivas_total_brate; + int32_t ism_total_brate; error = IVAS_ERR_OK; hMasa = st_ivas->hMasa; - ivas_masa_set_elements( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &st_ivas->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE ); + ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + ism_total_brate = 0; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 && ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) ) + { + for ( i = 0; i < st_ivas->nSCE; i++ ) + { + ism_total_brate += st_ivas->hSCE[i]->element_brate; + } + } - ivas_masa_set_coding_config( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ); + ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &st_ivas->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE, st_ivas->ivas_format, st_ivas->ism_mode, ism_total_brate ); - if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->ivas_total_brate == IVAS_512k ) + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + ivas_masa_set_coding_config( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hCPE[0]->element_brate, st_ivas->nchan_transport, MC_MODE_NONE ); + } + else + { + ivas_masa_set_coding_config( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->nchan_transport, ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ); + } + + if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) && st_ivas->hDecoderConfig->ivas_total_brate == IVAS_512k ) { hMasa->config.mergeRatiosOverSubframes = 0; + /* initialize spherical grid */ if ( hMasa->data.sph_grid16 == NULL ) { - hMasa->data.sph_grid16 = (SPHERICAL_GRID_DATA *) malloc( sizeof( SPHERICAL_GRID_DATA ) ); + if ( ( hMasa->data.sph_grid16 = (SPHERICAL_GRID_DATA *) malloc( sizeof( SPHERICAL_GRID_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA data handle\n" ) ); + } generate_gridEq( hMasa->data.sph_grid16 ); } } @@ -563,12 +840,20 @@ static ivas_error ivas_masa_dec_config( *-------------------------------------------------------------------*/ void ivas_masa_prerender( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output[][L_FRAME48k], /* i/o: synthesized core-coder transport channels */ - const int16_t output_frame /* i : output frame length per channel */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + float *output[], /* i/o: synthesized core-coder transport channels */ + const int16_t output_frame /* i : output frame length per channel */ +#ifdef CR_FIX_585_MASA_2TC_DTX_EXT + , + const int16_t nchan_remapped /* i : number of transports used in core */ +#endif ) { +#ifdef CR_FIX_585_MASA_2TC_DTX_EXT + if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_transport == 2 && nchan_remapped == 1 ) +#else if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_transport == 2 && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE ) +#endif { if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_EXTERNAL ) { @@ -952,7 +1237,14 @@ static int16_t decode_lfe_to_total_energy_ratio( *-------------------------------------------------------------------*/ ivas_error ivas_masa_dec_reconfigure( - Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + uint16_t *nSamplesRendered, /* o : number of samples flushed from the previous frame (JBM) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { int16_t n, tmp, num_bits; @@ -962,18 +1254,42 @@ ivas_error ivas_masa_dec_reconfigure( int32_t ivas_total_brate, last_ivas_total_brate; int16_t numCldfbAnalyses_old, numCldfbSyntheses_old; ivas_error error; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + int16_t pos_idx; +#endif + int32_t ism_total_brate; error = IVAS_ERR_OK; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; last_ivas_total_brate = st_ivas->hDecoderConfig->last_ivas_total_brate; +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_5ms == 1 ) +#else + if ( st_ivas->hDecoderConfig->voip_active == 1 ) +#endif + { + if ( st_ivas->hSpatParamRendCom != NULL && st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity ) + { + mvs2s( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + } + } + ivas_init_dec_get_num_cldfb_instances( st_ivas, &numCldfbAnalyses_old, &numCldfbSyntheses_old ); /* renderer might have changed, reselect */ ivas_renderer_select( st_ivas ); - if ( st_ivas->renderer_type != RENDERER_DISABLE && st_ivas->hDirAC == NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend == NULL ) || + ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin[0] == NULL ) ) +#else + if ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend == NULL ) || + ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin == NULL ) ) +#endif { /* init a new DirAC dec */ if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) @@ -981,10 +1297,20 @@ ivas_error ivas_masa_dec_reconfigure( return error; } } - else if ( st_ivas->renderer_type == RENDERER_DISABLE && st_ivas->hDirAC != NULL ) + else if ( st_ivas->renderer_type == RENDERER_DISABLE || st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) { - /* close unnecessary DirAC dec */ - ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); + if ( st_ivas->hDirAC != NULL ) + { + /* close all unnecessary parametric decoding and rendering */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); +#else + ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); +#endif + ivas_dirac_rend_close( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) ); + ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); + } } /* possible reconfigure is done later */ @@ -1003,6 +1329,18 @@ ivas_error ivas_masa_dec_reconfigure( sts = st_ivas->hSCE[sce_id]->hCoreCoder; sts[0]->bit_stream = bit_stream + num_bits; num_bits += (int16_t) ( st_ivas->hSCE[sce_id]->element_brate / FRAMES_PER_SEC ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin[0] != NULL ) +#else + if ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin != NULL ) +#endif + { + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK ) + { + return error; + } + } } for ( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) @@ -1017,13 +1355,16 @@ ivas_error ivas_masa_dec_reconfigure( sts = st_ivas->hCPE[cpe_id]->hCoreCoder; sts[0]->bit_stream = bit_stream + num_bits; num_bits += (int16_t) ( st_ivas->hCPE[cpe_id]->element_brate / FRAMES_PER_SEC ); - if ( ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate >= MASA_STEREO_MIN_BITRATE ) || ( ivas_total_brate < MASA_STEREO_MIN_BITRATE && last_ivas_total_brate == FRAME_NO_DATA ) ) { st_ivas->hCPE[cpe_id]->nchan_out = 1; - if ( st_ivas->hDirAC != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend != NULL ) || ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin[0] != NULL ) ) +#else + if ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend != NULL ) || ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin != NULL ) ) +#endif { if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK ) { @@ -1035,7 +1376,11 @@ ivas_error ivas_masa_dec_reconfigure( { st_ivas->hCPE[cpe_id]->nchan_out = CPE_CHANNELS; - if ( st_ivas->hDirAC != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend != NULL ) || ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin[0] != NULL ) ) +#else + if ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend != NULL ) || ( ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) && st_ivas->hDiracDecBin != NULL ) ) +#endif { if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK ) { @@ -1044,66 +1389,171 @@ ivas_error ivas_masa_dec_reconfigure( } } } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + if ( st_ivas->hDiracDecBin[pos_idx] != NULL ) + { +#else if ( st_ivas->hDiracDecBin != NULL ) { - /* regularization factor is bitrate-dependent */ +#endif + /* regularization factor is bitrate-dependent */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + st_ivas->hDiracDecBin[pos_idx]->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); + } +#else st_ivas->hDiracDecBin->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); +#endif } - /*-----------------------------------------------------------------* - * TD Decorrelator - *-----------------------------------------------------------------*/ - if ( st_ivas->hDiracDecBin != NULL ) + if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->last_ivas_format == MASA_FORMAT ) /* note: switching within OMASA is handled in ivas_omasa_dec_config() */ { - if ( ( 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 ) + /*-----------------------------------------------------------------* + * TD Decorrelator + *-----------------------------------------------------------------*/ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0] != NULL ) +#else + if ( st_ivas->hDiracDecBin != NULL ) +#endif + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( 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 ( ( 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; + } + } + + /*-----------------------------------------------------------------* + * CLDFB instances + *-----------------------------------------------------------------*/ + + if ( ( error = ivas_cldfb_dec_reconfig( st_ivas, st_ivas->nchan_transport, numCldfbAnalyses_old, numCldfbSyntheses_old ) ) != IVAS_ERR_OK ) { return error; } - } - /*-----------------------------------------------------------------* - * CLDFB instances - *-----------------------------------------------------------------*/ + /*-----------------------------------------------------------------* + * Set-up MASA coding elements and bitrates + *-----------------------------------------------------------------*/ + } - if ( ( error = ivas_cldfb_dec_reconfig( st_ivas, st_ivas->nchan_transport, numCldfbAnalyses_old, numCldfbSyntheses_old ) ) != IVAS_ERR_OK ) + ism_total_brate = 0; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 && ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) ) { - return error; + for ( n = 0; n < st_ivas->nSCE; n++ ) + { + ism_total_brate += st_ivas->hSCE[n]->element_brate; + } } - /*-----------------------------------------------------------------* - * Set-up MASA coding elements and bitrates - *-----------------------------------------------------------------*/ + ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &tmp, &tmp, &tmp, + st_ivas->ivas_format, st_ivas->ism_mode, ism_total_brate ); - ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &tmp, &tmp, &tmp ); + if ( st_ivas->ivas_format == MASA_FORMAT ) + { + st_ivas->nchan_ism = 0; + st_ivas->ism_mode = ISM_MODE_NONE; + } +#ifdef API_5MS +#ifdef API_5MS_BASELINE + if ( st_ivas->hDecoderConfig->Opt_5ms == 1 ) +#endif +#else if ( st_ivas->hDecoderConfig->voip_active == 1 ) +#endif { int16_t tc_nchan_to_allocate; int16_t tc_nchan_transport; TC_BUFFER_MODE buffer_mode_new; + int16_t n_samples_granularity; + n_samples_granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); buffer_mode_new = ivas_jbm_dec_get_tc_buffer_mode( st_ivas ); tc_nchan_transport = ivas_jbm_dec_get_num_tc_channels( st_ivas ); tc_nchan_to_allocate = tc_nchan_transport; if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) { - tc_nchan_to_allocate = 2 * BINAURAL_CHANNELS; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + tc_nchan_to_allocate = 2 * BINAURAL_CHANNELS + 2; + } + else + { + tc_nchan_to_allocate = 2 * BINAURAL_CHANNELS; + } + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + n_samples_granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); /* Use the same granularity as tdrend */ + + if ( n_samples_granularity > st_ivas->hTcBuffer->n_samples_granularity ) + { + if ( ( error = ivas_jbm_dec_set_discard_samples( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + if ( n_samples_granularity < st_ivas->hTcBuffer->n_samples_granularity ) + { + if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, n_samples_granularity, st_ivas->renderer_type, st_ivas->intern_config, &st_ivas->hIntSetup, MC_MODE_NONE, ISM_MASA_MODE_DISC, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } } if ( tc_nchan_transport != st_ivas->hTcBuffer->nchan_transport_jbm || tc_nchan_to_allocate != st_ivas->hTcBuffer->nchan_transport_internal || buffer_mode_new != st_ivas->hTcBuffer->tc_buffer_mode ) { - if ( ( error = ivas_jbm_dec_tc_buffer_reconfigure( st_ivas, buffer_mode_new, tc_nchan_transport, tc_nchan_to_allocate, tc_nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_jbm_dec_tc_buffer_reconfigure( st_ivas, buffer_mode_new, tc_nchan_transport, tc_nchan_to_allocate, tc_nchan_to_allocate, n_samples_granularity ) ) != IVAS_ERR_OK ) { return error; } } + + if ( st_ivas->hSpatParamRendCom != NULL && st_ivas->hSpatParamRendCom->slot_size == st_ivas->hTcBuffer->n_samples_granularity ) + { + mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hSpatParamRendCom->nb_subframes = st_ivas->hTcBuffer->nb_subframes; + st_ivas->hSpatParamRendCom->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + } + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + int16_t granularityMultiplier = st_ivas->hTcBuffer->n_samples_granularity / st_ivas->hSpatParamRendCom->slot_size; + + for ( n = 0; n < MAX_JBM_SUBFRAMES_5MS; n++ ) + { + st_ivas->hSpatParamRendCom->subframe_nbslots[n] = st_ivas->hTcBuffer->subframe_nbslots[n] * granularityMultiplier; + } + } } return error; } +/*-------------------------------------------------------------------* + * ivas_spar_param_to_masa_param_mapping() + * + * Determine MASA metadata from the SPAR metadata + *-------------------------------------------------------------------*/ + 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 */ @@ -1130,15 +1580,22 @@ void ivas_spar_param_to_masa_param_mapping( int16_t slot_idx, slot_idx_start, sf; SPAR_DEC_HANDLE hSpar; float slot_fac; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; /* Set values */ hDirAC = st_ivas->hDirAC; - hDirAC->numSimultaneousDirections = 1; - hDiffuseDist = st_ivas->hDirAC->hDiffuseDist; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + hSpatParamRendCom->numParametricDirections = 1; + hSpatParamRendCom->numSimultaneousDirections = 1; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + hDiffuseDist = st_ivas->hDiracDecBin[0]->hDiffuseDist; +#else + hDiffuseDist = st_ivas->hDiracDecBin->hDiffuseDist; +#endif nchan_transport = st_ivas->nchan_transport; band_grouping = hDirAC->band_grouping; hSpar = st_ivas->hSpar; - dirac_write_idx = hDirAC->render_to_md_map[subframe]; + dirac_write_idx = hSpatParamRendCom->render_to_md_map[subframe]; /* Init arrays */ for ( i = 0; i < FOA_CHANNELS; i++ ) @@ -1169,7 +1626,8 @@ void ivas_spar_param_to_masa_param_mapping( } else { - mixer_mat_index = sf - SPAR_META_DELAY_SUBFRAMES; + + mixer_mat_index = ( ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->last_active_ivas_total_brate ) == 1 ) ? 0 : ( sf - SPAR_META_DELAY_SUBFRAMES ); for ( band = 0; band < SPAR_DIRAC_SPLIT_START_BAND; band++ ) { for ( i = 0; i < FOA_CHANNELS; i++ ) @@ -1210,7 +1668,7 @@ void ivas_spar_param_to_masa_param_mapping( set_zero( transportSignalEnergies[1], nBins ); set_zero( transportSignalCrossCorrelation, nBins ); - for ( slot = 0; slot < hDirAC->subframe_nbslots[subframe]; slot++ ) + for ( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) { for ( bin = 0; bin < nBins; bin++ ) { @@ -1270,13 +1728,13 @@ void ivas_spar_param_to_masa_param_mapping( ratio = I / fmaxf( 1e-12f, E ); /* Energy ratio */ ratio = fmaxf( 0.0f, fminf( 1.0f, ratio ) ); - hDirAC->azimuth[dirac_write_idx][bin] = (int16_t) roundf( azi / PI_OVER_180 ); - hDirAC->elevation[dirac_write_idx][bin] = (int16_t) roundf( ele / PI_OVER_180 ); - hDirAC->energy_ratio1[dirac_write_idx][bin] = ratio; - hDirAC->diffuseness_vector[dirac_write_idx][bin] = 1.0f - ratio; + hSpatParamRendCom->azimuth[dirac_write_idx][bin] = (int16_t) roundf( azi / PI_OVER_180 ); + hSpatParamRendCom->elevation[dirac_write_idx][bin] = (int16_t) roundf( ele / PI_OVER_180 ); + hSpatParamRendCom->energy_ratio1[dirac_write_idx][bin] = ratio; + hSpatParamRendCom->diffuseness_vector[dirac_write_idx][bin] = 1.0f - ratio; - hDirAC->spreadCoherence[dirac_write_idx][bin] = 0.0f; - hDirAC->surroundingCoherence[dirac_write_idx][bin] = 0.0f; + hSpatParamRendCom->spreadCoherence[dirac_write_idx][bin] = 0.0f; + hSpatParamRendCom->surroundingCoherence[dirac_write_idx][bin] = 0.0f; /* Determine directional distribution of the indirect audio based on the SPAR mixing matrices (and the transport audio signals when 2 TC) */ if ( hDiffuseDist != NULL ) @@ -1491,3 +1949,549 @@ static void create_masa_ext_out_meta( return; } + +static void decode_index_slice( + int16_t index, /* i : index to decode */ + int16_t *ratio_idx_ism, /* o : decodec array of integers */ + const int16_t nchan_ism, /* i : number of elements in array (objects) */ + const int16_t K ) /* i : sum of array elements */ +{ + int16_t i, j, sum, elem; + int16_t base[MAX_NUM_OBJECTS]; + + switch ( nchan_ism ) + { + case 2: + ratio_idx_ism[0] = index; + ratio_idx_ism[1] = K - ratio_idx_ism[0]; + break; + case 3: + case 4: + { + j = 0; + while ( index >= 0 ) + { + if ( valid_ratio_index( j, K, nchan_ism - 1 ) ) + { + index--; + } + j++; + } + j--; + base[0] = 1; + for ( i = 1; i < nchan_ism - 1; i++ ) + { + base[i] = base[i - 1] * 10; + } + sum = 0; + for ( i = nchan_ism - 2; i >= 0; i-- ) + { + elem = j / base[i]; + ratio_idx_ism[nchan_ism - i - 2] = elem; + sum += elem; + j -= elem * base[i]; + } + ratio_idx_ism[nchan_ism - 1] = K - sum; + } + + default: + break; + } + + return; +} + + +static void read_ism_ratio_index( + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], /* o : ISM read ratio indexes */ + const int16_t nchan_ism, /* i : number of objects */ + const int16_t numCodingBands, /* i : number of subbands */ + const int16_t sf, /* i : index of subframe */ + int16_t ratio_ism_idx_prev_sf[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], /* i : previous subframe ISM ratio indexes */ + uint16_t *bit_stream, /* i : bitstream */ + int16_t *next_bit_pos, /* i/o: position in bitstream */ + float *masa_to_total_energy_ratio, /* i : masa to total ratios */ + const int16_t idx_sep_obj, /* i : index of separated index, -1 if none */ + int16_t *num_zeros /* i/o: number of zero values in first subframe for separated object */ +) +{ + int16_t b, i, b_signif; + int16_t index; + int16_t GR_order, differential_subframe; + int16_t buf; + int16_t no_levels_ratio_ism; + int16_t bits_index; + int16_t ratio_ism_idx_ref[MAX_NUM_OBJECTS]; + int16_t idx_sep_obj_local, shift_one; + + idx_sep_obj_local = idx_sep_obj; + if ( idx_sep_obj > -1 ) + { + if ( idx_sep_obj == nchan_ism - 1 && nchan_ism > 2 ) + { + idx_sep_obj_local = 0; + } + } + + b_signif = 0; + no_levels_ratio_ism = ( ( 1 << PARAM_ISM_POW_RATIO_NBITS ) - 1 ); + while ( ( b_signif < numCodingBands ) && ( masa_to_total_energy_ratio[b_signif] >= MASA2TOTAL_THR ) ) + { + /* distribute evenly the objects */ + distribute_evenly_ism( ratio_ism_idx[b_signif], no_levels_ratio_ism, nchan_ism ); + b_signif++; + } + + if ( b_signif == numCodingBands ) + { + return; + } + else + { + + if ( sf == 0 ) + { + bits_index = bits_index_ism_ratio( nchan_ism ); + + /* read coding type */ + if ( bit_stream[( *next_bit_pos )--] == 1 ) + { + /* independent coding*/ + for ( b = 0; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + index = 0; + for ( i = 0; i < bits_index; i++ ) + { + index = ( index << 1 ) + bit_stream[( *next_bit_pos )--]; + } + decode_index_slice( index, ratio_ism_idx[b], nchan_ism, no_levels_ratio_ism ); + if ( idx_sep_obj > -1 && ratio_ism_idx[b][idx_sep_obj_local] == 0 ) + { + ( *num_zeros )++; + } + } + else + { + /* distribute evenly the objects */ + distribute_evenly_ism( ratio_ism_idx[b], no_levels_ratio_ism, nchan_ism ); + } + } + } + else + { + /* differential coding */ + index = 0; + for ( i = 0; i < bits_index; i++ ) + { + index = ( index << 1 ) + bit_stream[( *next_bit_pos )--]; + } + decode_index_slice( index, ratio_ism_idx[b_signif], nchan_ism, no_levels_ratio_ism ); + if ( idx_sep_obj > -1 && ratio_ism_idx[b_signif][idx_sep_obj_local] == 0 ) + { + ( *num_zeros )++; + } + mvs2s( ratio_ism_idx[b_signif], ratio_ism_idx_ref, nchan_ism ); + for ( b = b_signif + 1; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + ratio_ism_idx[b][nchan_ism - 1] = no_levels_ratio_ism; + for ( i = 0; i < nchan_ism - 1; i++ ) + { + buf = ivas_qmetadata_DecodeExtendedGR( bit_stream, next_bit_pos, 100, 0 ); + if ( ( buf % 2 ) == 0 ) + { + ratio_ism_idx[b][i] = -( buf >> 1 ); + } + else + { + ratio_ism_idx[b][i] = ( ( buf + 1 ) >> 1 ); + } + ratio_ism_idx[b][i] = ratio_ism_idx[b][i] + ratio_ism_idx_ref[i]; + ratio_ism_idx[b][nchan_ism - 1] -= ratio_ism_idx[b][i]; + } + mvs2s( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism ); + if ( idx_sep_obj > -1 && ratio_ism_idx[b][idx_sep_obj_local] == 0 ) + { + ( *num_zeros )++; + } + } + else + { + /* distribute evenly the objects */ + distribute_evenly_ism( ratio_ism_idx[b], no_levels_ratio_ism, nchan_ism ); + } + } + } + } + else + { + if ( numCodingBands > 1 ) + { + /* read prediction type */ + differential_subframe = bit_stream[( *next_bit_pos )--]; + } + else + { + differential_subframe = 1; + } + + if ( *num_zeros == numCodingBands ) + { + shift_one = 1; + } + else + { + shift_one = 0; + } + + if ( shift_one == 1 && nchan_ism == 2 ) + { + /* nothing has been sent ; values can be inferred */ + for ( b = b_signif; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + if ( idx_sep_obj_local == 0 ) + { + ratio_ism_idx[b][0] = 0; + ratio_ism_idx[b][1] = 7; + } + else + { + ratio_ism_idx[b][0] = 7; + ratio_ism_idx[b][1] = 0; + } + } + } + } + else + { + /* read GR order */ + GR_order = bit_stream[( *next_bit_pos )--]; + for ( b = b_signif; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + for ( i = 0; i < nchan_ism - 1 - shift_one; i++ ) + { + buf = ivas_qmetadata_DecodeExtendedGR( bit_stream, next_bit_pos, 100, GR_order ); + if ( ( buf % 2 ) == 0 ) + { + ratio_ism_idx[b][i] = -( buf >> 1 ); + } + else + { + ratio_ism_idx[b][i] = ( ( buf + 1 ) >> 1 ); + } + } + + /* insert separated obj */ + if ( shift_one ) + { + for ( i = nchan_ism - 1; i > idx_sep_obj_local; i-- ) + { + ratio_ism_idx[b][i] = ratio_ism_idx[b][i - 1]; + } + ratio_ism_idx[b][idx_sep_obj_local] = 0; /* this is only difference; need to pdate later as well */ + } + } + } + if ( differential_subframe ) + { + /* differential to previous subframe */ + for ( b = b_signif; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + ratio_ism_idx[b][nchan_ism - 1] = no_levels_ratio_ism; + for ( i = 0; i < nchan_ism - 1; i++ ) + { + ratio_ism_idx[b][i] = ratio_ism_idx[b][i] + ratio_ism_idx_prev_sf[b][i]; + if ( shift_one && i == idx_sep_obj_local ) + { + ratio_ism_idx[b][i] = 0; + } + ratio_ism_idx[b][nchan_ism - 1] -= ratio_ism_idx[b][i]; + } + } + else + { + /* distribute evenly the objects */ + distribute_evenly_ism( ratio_ism_idx[b], no_levels_ratio_ism, nchan_ism ); + } + } + } + else + { + /* difference to previous subband */ + ratio_ism_idx[b_signif][nchan_ism - 1] = no_levels_ratio_ism; + + /* first significant subband - differential to previous subframe */ + for ( i = 0; i < nchan_ism - 1; i++ ) + { + ratio_ism_idx[b_signif][i] = ratio_ism_idx[b_signif][i] + ratio_ism_idx_prev_sf[b_signif][i]; + if ( shift_one && i == idx_sep_obj_local ) + { + ratio_ism_idx[b_signif][i] = 0; + } + ratio_ism_idx[b_signif][nchan_ism - 1] -= ratio_ism_idx[b_signif][i]; + } + + /* rest of subbands differential to previous subband */ + mvs2s( ratio_ism_idx[b_signif], ratio_ism_idx_ref, nchan_ism ); + for ( b = b_signif + 1; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + ratio_ism_idx[b][nchan_ism - 1] = no_levels_ratio_ism; + for ( i = 0; i < nchan_ism - 1; i++ ) + { + ratio_ism_idx[b][i] = ratio_ism_idx[b][i] + ratio_ism_idx_ref[i]; + if ( shift_one && i == idx_sep_obj_local ) + { + ratio_ism_idx[b][i] = 0; + } + ratio_ism_idx[b][nchan_ism - 1] -= ratio_ism_idx[b][i]; + } + mvs2s( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism ); + } + else + { + /* distribute evenly the objects */ + distribute_evenly_ism( ratio_ism_idx[b], no_levels_ratio_ism, nchan_ism ); + } + } + } + } + } + + return; + } +} + + +static void decode_ism_ratios( + uint16_t *bit_stream, /* i : bitstream */ + int16_t *next_bit_pos, /* i/o: position in bitstream */ + float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* i : masa_to_total energy ratios */ + float ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], /* o : ISM ratios */ + const int16_t n_ism, /* i : number of objects */ + const int16_t nbands, /* i : number of subbands */ + const int16_t numSf, /* i : number of subframes */ + const int16_t idx_separated_object /* i : index of separated object */ +) +{ + int16_t sf, band; + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS]; + int16_t ratio_ism_idx_prev_sf[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS]; + float tmp; + int16_t num_zeros; + num_zeros = 0; + + /* hQMetaData->q_direction->cfg.nblocks; */ + for ( sf = 0; sf < numSf; sf++ ) + { + /* read ism ratio indexes */ + read_ism_ratio_index( ratio_ism_idx, n_ism, nbands, sf, ratio_ism_idx_prev_sf, bit_stream, next_bit_pos, masa_to_total_energy_ratio[sf], idx_separated_object, &num_zeros ); + /* save previous subframe index values */ + if ( sf < numSf - 1 ) + { + for ( band = 0; band < nbands; band++ ) + { + mvs2s( ratio_ism_idx[band], ratio_ism_idx_prev_sf[band], n_ism ); + } + } + + /* reconstructed values */ + for ( band = 0; band < nbands; band++ ) + { + reconstruct_ism_ratios( ratio_ism_idx[band], n_ism, 1.0f / (float) ( ( 1 << PARAM_ISM_POW_RATIO_NBITS ) - 1 ), ratio_ism[sf][band] ); + } + + if ( ( n_ism > 2 ) && ( idx_separated_object == n_ism - 1 ) ) + { + /* rotate */ + for ( band = 0; band < nbands; band++ ) + { + if ( masa_to_total_energy_ratio[sf][band] < MASA2TOTAL_THR ) + { + tmp = ratio_ism[sf][band][n_ism - 1]; + ratio_ism[sf][band][n_ism - 1] = ratio_ism[sf][band][0]; + ratio_ism[sf][band][0] = tmp; + } + } + } + + if ( nbands == 1 ) + { + for ( band = 1; band < 5; band++ ) + { + mvr2r( ratio_ism[sf][0], ratio_ism[sf][band], n_ism ); + } + } + } + + if ( numSf == 1 ) + { + for ( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + for ( band = 0; band < nbands; band++ ) + { + mvr2r( ratio_ism[0][band], ratio_ism[sf][band], n_ism ); + } + } + } + + return; +} + + +static int16_t ivas_decode_masaism_metadata( + IVAS_QMETADATA_HANDLE hQMetaData, + MASA_DECODER_HANDLE hMasa, + MASA_ISM_DATA_HANDLE hMasaIsmData, + const int16_t nchan_ism, + uint16_t *bit_stream, + int16_t *next_bit_pos, + const int16_t idx_separated_object, + const int16_t ism_imp, + const int16_t dirac_bs_md_write_idx, + const int16_t dirac_md_buffer_length ) +{ + int16_t sf, band, dir, nbands, nblocks, obj, i; + float energy_ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS]; + int16_t *band_mapping; + int16_t b; + int16_t bits_ism[MAX_NUM_OBJECTS], index; + uint16_t idx_el, idx_az; + float azimuth, elevation; + int16_t nb_bits_read; + float delta_phi; + int16_t meta_write_index; + + nb_bits_read = *next_bit_pos; + nbands = hQMetaData->q_direction->cfg.nbands; + nblocks = hQMetaData->q_direction->cfg.nblocks; + + /* Read MASA-to-total energy ratios */ + ivas_omasa_decode_masa_to_total( bit_stream, next_bit_pos, hMasaIsmData->masa_to_total_energy_ratio, nbands, nblocks ); + if ( nchan_ism > 1 ) + { + /* read ISM ratios */ + decode_ism_ratios( bit_stream, next_bit_pos, hMasaIsmData->masa_to_total_energy_ratio, energy_ratio_ism, nchan_ism, nbands, nblocks, idx_separated_object ); + } + else + { + for ( sf = 0; sf < nblocks; sf++ ) + { + for ( band = 0; band < nbands; band++ ) + { + energy_ratio_ism[sf][band][0] = 1.0f; + } + } + } + + /* read ISM metadata */ + calculate_nbits_meta( nchan_ism, energy_ratio_ism, hMasaIsmData->masa_to_total_energy_ratio, nblocks, nbands, bits_ism, idx_separated_object, ism_imp ); + for ( obj = 0; obj < nchan_ism; obj++ ) + { + index = 0; + if ( bits_ism[obj] < 8 ) /* if low resolution, can look to the past */ + { + /* read if same as previous */ + if ( bit_stream[( *next_bit_pos )--] ) + { + azimuth = hMasaIsmData->q_azimuth_old[obj]; + elevation = hMasaIsmData->q_elevation_old[obj]; + } + else + { + for ( i = 0; i < bits_ism[obj]; i++ ) + { + index = ( index << 1 ) + bit_stream[( *next_bit_pos )--]; + } + deindex_spherical_component( index, &azimuth, &elevation, &idx_az, &idx_el, bits_ism[obj], MC_LS_SETUP_INVALID ); + + if ( azimuth * hMasaIsmData->q_azimuth_old[obj] > 0 ) + { + delta_phi = 180.0f / (float) ( no_phi_masa[bits_ism[obj] - 1][idx_el] ); /* 360/2*/ + if ( azimuth - hMasaIsmData->q_azimuth_old[obj] > delta_phi ) + { + azimuth -= delta_phi; + } + else + { + if ( hMasaIsmData->q_azimuth_old[obj] - azimuth > delta_phi ) + { + azimuth += delta_phi; + } + } + } + + hMasaIsmData->q_azimuth_old[obj] = azimuth; + hMasaIsmData->q_elevation_old[obj] = elevation; + } + } + else + { + for ( i = 0; i < bits_ism[obj]; i++ ) + { + index = ( index << 1 ) + bit_stream[( *next_bit_pos )--]; + } + deindex_spherical_component( index, &azimuth, &elevation, &idx_az, &idx_el, bits_ism[obj], MC_LS_SETUP_INVALID ); + hMasaIsmData->q_azimuth_old[obj] = azimuth; + hMasaIsmData->q_elevation_old[obj] = elevation; + } + + for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + meta_write_index = ( dirac_bs_md_write_idx + sf ) % dirac_md_buffer_length; + hMasaIsmData->azimuth_ism[obj][meta_write_index] = (int16_t) rint( azimuth ); + hMasaIsmData->elevation_ism[obj][meta_write_index] = (int16_t) rint( elevation ); + } + } + + /* Modify ISM metadata based on the MASA-to-total energy ratios */ + for ( sf = 0; sf < nblocks; sf++ ) + { + for ( band = 0; band < nbands; band++ ) + { + for ( dir = 0; dir < nchan_ism; dir++ ) + { + energy_ratio_ism[sf][band][dir] *= ( 1.0f - hMasaIsmData->masa_to_total_energy_ratio[sf][band] ); + } + } + } + + /* Set data to struct in bins */ + band_mapping = hMasa->data.band_mapping; + for ( band = 0; band < hMasa->config.numCodingBands; ++band ) + { + for ( b = MASA_band_grouping_24[band_mapping[band]]; b < MASA_band_grouping_24[band_mapping[band + 1]]; ++b ) + { + for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; ++sf ) + { + if ( nblocks == 1 ) + { + i = 0; + } + else + { + i = sf; + } + + meta_write_index = ( dirac_bs_md_write_idx + sf ) % dirac_md_buffer_length; + + for ( dir = 0; dir < nchan_ism; dir++ ) + { + hMasaIsmData->energy_ratio_ism[dir][meta_write_index][b] = energy_ratio_ism[i][band][dir]; + } + } + } + } + + return ( nb_bits_read - *next_bit_pos ); +} diff --git a/lib_dec/ivas_mc_param_dec.c b/lib_dec/ivas_mc_param_dec.c index e67e96307df1ea0bfdbfeece7ebbc45bab264ec3..a85a35b3a55965f872acb7d876108ebcfc43e8ee 100644 --- a/lib_dec/ivas_mc_param_dec.c +++ b/lib_dec/ivas_mc_param_dec.c @@ -459,8 +459,36 @@ ivas_error ivas_param_mc_dec_open( ivas_param_mc_dec_init( hParamMC, nchan_transport, nchan_out_cov ); - if ( st_ivas->hDecoderConfig->voip_active && hParamMC->synthesis_conf != PARAM_MC_SYNTH_MONO_STEREO ) + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms && +#endif +#else + st_ivas->hDecoderConfig->voip_active && +#endif + hParamMC->synthesis_conf != PARAM_MC_SYNTH_MONO_STEREO ) { +#ifdef API_5MS + int16_t n_cldfb_slots; + + n_cldfb_slots = DEFAULT_JBM_CLDFB_TIMESLOTS; + if ( st_ivas->hDecoderConfig->Opt_tsm ) + { + n_cldfb_slots = MAX_JBM_CLDFB_TIMESLOTS; + } + if ( ( hParamMC->Cldfb_RealBuffer_tc = (float *) malloc( n_cldfb_slots * nchan_transport * hParamMC->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC JBM\n" ) ); + } + set_zero( hParamMC->Cldfb_RealBuffer_tc, n_cldfb_slots * nchan_transport * hParamMC->num_freq_bands ); + + if ( ( hParamMC->Cldfb_ImagBuffer_tc = (float *) malloc( n_cldfb_slots * nchan_transport * hParamMC->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC JBM\n" ) ); + } + set_zero( hParamMC->Cldfb_ImagBuffer_tc, n_cldfb_slots * nchan_transport * hParamMC->num_freq_bands ); +#else if ( ( hParamMC->Cldfb_RealBuffer_tc = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hParamMC->num_freq_bands * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC JBM\n" ) ); @@ -472,7 +500,7 @@ ivas_error ivas_param_mc_dec_open( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Parametric MC JBM\n" ) ); } set_zero( hParamMC->Cldfb_ImagBuffer_tc, MAX_JBM_CLDFB_TIMESLOTS * nchan_transport * hParamMC->num_freq_bands ); - +#endif if ( st_ivas->hTcBuffer == NULL ) { if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, nchan_transport, nchan_transport, 0, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) @@ -1451,6 +1479,10 @@ void ivas_param_mc_dec_digest_tc( hParamMC->slots_rendered = 0; hParamMC->subframes_rendered = 0; ivas_jbm_dec_get_adapted_subframes( nCldfbSlots, hParamMC->subframe_nbslots, &hParamMC->nb_subframes ); +#ifdef API_5MS + st_ivas->hTcBuffer->nb_subframes = hParamMC->nb_subframes; + mvs2s( hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, hParamMC->nb_subframes ); +#endif ivas_param_mc_dec_compute_interpolator( hParamMC->hMetadataPMC->bAttackPresent, hParamMC->hMetadataPMC->attackIndex, nCldfbSlots, hParamMC->h_output_synthesis_params.interpolator ); @@ -1463,18 +1495,28 @@ void ivas_param_mc_dec_digest_tc( /* slot loop for gathering the input data */ for ( slot_idx = 0; slot_idx < nCldfbSlots; slot_idx++ ) { - float RealBuffer[CLDFB_NO_CHANNELS_MAX]; - float ImagBuffer[CLDFB_NO_CHANNELS_MAX]; - - /* CLDFB Analysis*/ - for ( ch = 0; ch < nchan_transport; ch++ ) +#ifdef API_5MS + if ( st_ivas->hDecoderConfig->Opt_tsm +#ifdef API_5MS_BASELINE + || !st_ivas->hDecoderConfig->Opt_5ms +#endif + ) { - cldfbAnalysis_ts( &( transport_channels_f[ch][hParamMC->num_freq_bands * slot_idx] ), RealBuffer, ImagBuffer, hParamMC->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); +#endif + float RealBuffer[CLDFB_NO_CHANNELS_MAX]; + float ImagBuffer[CLDFB_NO_CHANNELS_MAX]; - mvr2r( RealBuffer, &hParamMC->Cldfb_RealBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport + ch * hParamMC->num_freq_bands], hParamMC->num_freq_bands ); - mvr2r( ImagBuffer, &hParamMC->Cldfb_ImagBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport + ch * hParamMC->num_freq_bands], hParamMC->num_freq_bands ); - } + /* CLDFB Analysis*/ + for ( ch = 0; ch < nchan_transport; ch++ ) + { + cldfbAnalysis_ts( &( transport_channels_f[ch][hParamMC->num_freq_bands * slot_idx] ), RealBuffer, ImagBuffer, hParamMC->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); + mvr2r( RealBuffer, &hParamMC->Cldfb_RealBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport + ch * hParamMC->num_freq_bands], hParamMC->num_freq_bands ); + mvr2r( ImagBuffer, &hParamMC->Cldfb_ImagBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport + ch * hParamMC->num_freq_bands], hParamMC->num_freq_bands ); + } +#ifdef API_5MS + } +#endif if ( slot_idx >= 2 * hParamMC->hMetadataPMC->attackIndex ) { ivas_dirac_dec_output_synthesis_cov_param_mc_collect_slot( &hParamMC->Cldfb_RealBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport], &hParamMC->Cldfb_ImagBuffer_tc[slot_idx * hParamMC->num_freq_bands * nchan_transport], cx, cx_imag, hParamMC, nchan_transport ); @@ -1536,11 +1578,11 @@ void ivas_param_mc_dec_digest_tc( *------------------------------------------------------------------------*/ 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 */ + 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 *nSamplesAvailableNext, /* o : number of CLDFB slots still to render */ + float *output_f[] /* o : rendered time signal */ ) { PARAM_MC_DEC_HANDLE hParamMC; @@ -1552,8 +1594,13 @@ void ivas_param_mc_dec_render( /*CLDFB*/ float Cldfb_RealBuffer[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer[MAX_INTERN_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; +#else float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][PARAM_MC_MAX_NSLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; +#endif /*Decorrelator*/ float onset_filter[MAX_CICP_CHANNELS * CLDFB_NO_CHANNELS_MAX]; /* format converter */ @@ -1750,9 +1797,34 @@ void ivas_param_mc_dec_render( if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { ivas_binRenderer( st_ivas->hBinRenderer, - st_ivas->hCombinedOrientationData, subframe_idx, +#ifdef SPLIT_REND_WITH_HEAD_ROT + &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + NULL, +#endif + st_ivas->hCombinedOrientationData, + subframe_idx, hParamMC->subframe_nbslots[subframe_idx], Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, Cldfb_RealBuffer, Cldfb_ImagBuffer ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + int16_t pos_idx; + for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) + { + for ( slot_idx = 0; slot_idx < hParamMC->subframe_nbslots[subframe_idx]; slot_idx++ ) + { + for ( ch = 0; ch < nchan_out_cldfb; ch++ ) + { + mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); + mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_idx_start + slot_idx], hParamMC->num_freq_bands ); + } + } + } + } +#endif } else if ( hParamMC->synthesis_conf == PARAM_MC_SYNTH_LS_CONV_CLDFB ) { @@ -1773,8 +1845,13 @@ void ivas_param_mc_dec_render( { if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + RealBuffer[i] = Cldfb_RealBuffer_Binaural[0][ch][i]; + ImagBuffer[i] = Cldfb_ImagBuffer_Binaural[0][ch][i]; +#else RealBuffer[i] = Cldfb_RealBuffer_Binaural[ch][i]; ImagBuffer[i] = Cldfb_ImagBuffer_Binaural[ch][i]; +#endif } else { @@ -1782,6 +1859,7 @@ void ivas_param_mc_dec_render( ImagBuffer[i] = Cldfb_ImagBuffer[ch][i]; } } + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][slot_idx_start_cldfb_synth * hParamMC->num_freq_bands] ), hParamMC->num_freq_bands * hParamMC->subframe_nbslots[subframe_idx], st_ivas->cldfbSynDec[ch] ); } @@ -1806,7 +1884,7 @@ void ivas_param_mc_dec_render( param_mc_update_mixing_matrices( hParamMC, hParamMC->h_output_synthesis_cov_state.mixing_matrix, hParamMC->h_output_synthesis_cov_state.mixing_matrix_res, nchan_transport, nchan_out_cov ); } hParamMC->subframes_rendered = last_sf; - *nSamplesAvailable = ( hParamMC->num_slots - hParamMC->slots_rendered ) * NS2SA( output_Fs, CLDFB_SLOT_NS ); + *nSamplesAvailableNext = ( hParamMC->num_slots - hParamMC->slots_rendered ) * NS2SA( output_Fs, CLDFB_SLOT_NS ); pop_wmops(); return; @@ -1827,7 +1905,7 @@ void ivas_param_mc_dec( PARAM_MC_DEC_HANDLE hParamMC; float Cldfb_RealBuffer_in[PARAM_MC_MAX_TRANSPORT_CHANS * PARAM_MC_MAX_NSLOTS * CLDFB_NO_CHANNELS_MAX]; float Cldfb_ImagBuffer_in[PARAM_MC_MAX_TRANSPORT_CHANS * PARAM_MC_MAX_NSLOTS * CLDFB_NO_CHANNELS_MAX]; - uint16_t nSamplesAsked, nSamplesAvailable, nSamplesRendered; + uint16_t nSamplesAsked, nSamplesAvailableNext, nSamplesRendered; hParamMC = st_ivas->hParamMC; assert( hParamMC ); @@ -1839,10 +1917,10 @@ void ivas_param_mc_dec( nSamplesAsked = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); ivas_param_mc_dec_digest_tc( st_ivas, DEFAULT_JBM_CLDFB_TIMESLOTS, output_f ); - ivas_param_mc_dec_render( st_ivas, nSamplesAsked, &nSamplesRendered, &nSamplesAvailable, output_f ); + ivas_param_mc_dec_render( st_ivas, nSamplesAsked, &nSamplesRendered, &nSamplesAvailableNext, output_f ); #ifdef DEBUGGING assert( nSamplesRendered == nSamplesAsked ); - assert( nSamplesAvailable == 0 ); + assert( nSamplesAvailableNext == 0 ); #endif /* set handle pointers back to NULL */ @@ -3054,19 +3132,13 @@ static void ivas_param_mc_bs_decode_parameter_values( int16_t i, j, k; float dequant_seq[PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE]; float dequant_ordered[PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE]; -#ifdef FIX_578_PARAMMC_ILD_BS int16_t n_lfe_idx; -#endif range_coding = bit_buffer[( *bit_pos )++]; /* Decoding the sequence */ -#ifdef FIX_578_PARAMMC_ILD_BS n_lfe_idx = map_size - map_size_wo_lfe; sz_seq = num_param_bands * ( map_size_wo_lfe ) + num_lfe_bands * n_lfe_idx; -#else - sz_seq = num_param_bands * ( map_size_wo_lfe ) + num_lfe_bands; -#endif set_s( idx, 0, PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE ); set_zero( dequant_ordered, PARAM_MC_MAX_PARAMETER_BANDS * PARAM_MC_MAX_VAL_MAP_SIZE ); @@ -3127,14 +3199,10 @@ static void ivas_param_mc_bs_decode_parameter_values( for ( i = 0; i < num_lfe_bands; i++ ) { -#ifdef FIX_578_PARAMMC_ILD_BS for ( j = 0; j < n_lfe_idx; j++ ) { dequant_ordered[map_size - n_lfe_idx + j + i * map_size] = dequant_seq[k++]; } -#else - dequant_ordered[map_size - 1 + i * map_size] = dequant_seq[k++]; -#endif } if ( !( *BER_detect ) ) diff --git a/lib_dec/ivas_mc_paramupmix_dec.c b/lib_dec/ivas_mc_paramupmix_dec.c index 6447c2f45607a216fb032c61dcc68c50796b8bc7..673d24018f36d492096000f9a3c38bc12a059440 100644 --- a/lib_dec/ivas_mc_paramupmix_dec.c +++ b/lib_dec/ivas_mc_paramupmix_dec.c @@ -36,6 +36,7 @@ #include "cnst.h" #include "prot.h" #include "ivas_prot.h" +#include "ivas_prot_rend.h" #include "ivas_cnst.h" #include "ivas_rom_com.h" #include "ivas_rom_dec.h" @@ -55,9 +56,19 @@ static void ps_pred_process( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, float qmf_mod_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], const int16_t ch ); -static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], float pcm_in[][L_FRAME48k], float **pp_out_pcm, const int16_t output_frame ); +static void ps_pred_process_sf( MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, DECODER_TC_BUFFER_HANDLE hTcBuffer, float qmf_mod_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_mod_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_side_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float qmf_side_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float *param_interpol, const int16_t ch, const int16_t slots_rendered ); -static int huff_read( Decoder_State *st, const int16_t ( *ht )[2] ); +#ifdef SPLIT_REND_WITH_HEAD_ROT +static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, float *output_f[MAX_OUTPUT_CHANNELS], int16_t slot_index_start ); +#else +static void ivas_mc_paramupmix_dec_sf( Decoder_Struct *st_ivas, float *output_f[MAX_OUTPUT_CHANNELS] ); +#endif + +static void ivas_param_upmix_dec_decorr_subframes( Decoder_Struct *st_ivas, const int16_t nSamplesForRendering ); + +static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], float *pcm_in[], float **pp_out_pcm, const int16_t output_frame ); + +static int16_t huff_read( Decoder_State *st, const int16_t ( *ht )[2] ); static void huffman_decode( Decoder_State *st, const int16_t nv, const int16_t ivStart, PAR_TYPE parType, QUANT_TYPE quant_type, const int16_t bNoDt, int32_t *vq ); @@ -154,8 +165,8 @@ void ivas_mc_paramupmix_dec_read_BS( *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output_f[][L_FRAME48k] /* i/o: synthesized core-coder transport channels */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + float *output_f[] /* i/o: synthesized core-coder transport channels */ ) { MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix; @@ -173,6 +184,22 @@ void ivas_mc_paramupmix_dec( float *pPcm_temp[MC_PARAMUPMIX_COMBINATIONS * 2]; /* decorrelated and undecorrelated*/ int16_t noparamupmix_delay; AUDIO_CONFIG output_config; + int16_t subframeIdx, idx_in, index_slot, maxBand; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_subfr[MC_PARAMUPMIX_MAX_INPUT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_subfr[MC_PARAMUPMIX_MAX_INPUT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + int16_t idx_lfe; +#else + float Cldfb_RealBuffer_subfr[3 + MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_subfr[3 + MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif + /* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ + int16_t chidx1[MC_PARAMUPMIX_COMBINATIONS] = { 0, 1, 4, 5 }; + int16_t chidx2[MC_PARAMUPMIX_COMBINATIONS] = { 2, 3, 6, 7 }; hMCParamUpmix = st_ivas->hMCParamUpmix; assert( hMCParamUpmix ); @@ -246,52 +273,328 @@ void ivas_mc_paramupmix_dec( mvr2r( hMCParamUpmix->betas[ch], hMCParamUpmix->beta_prev[ch], IVAS_MAX_NUM_BANDS ); } - /* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ - pPcm_temp[0] = output_f[4]; - pPcm_temp[1] = output_f[6]; - pPcm_temp[2] = output_f[5]; - pPcm_temp[3] = output_f[7]; - pPcm_temp[4] = output_f[8]; - pPcm_temp[5] = output_f[10]; - pPcm_temp[6] = output_f[9]; - pPcm_temp[7] = output_f[11]; - - /* CLDFB synthesis */ - for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS * 2; ch++ ) + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) { - for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + maxBand = (int16_t) ( ( CLDFB_NO_CHANNELS_MAX * st_ivas->hDecoderConfig->output_Fs ) / 48000 ); + /* fastconv binaural rendering and CLDFB synthesis */ + for ( subframeIdx = 0; subframeIdx < ( CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES ); subframeIdx++ ) { - float *ptr_im[1], *ptr_re[1]; - ptr_re[0] = Cldfb_RealBuffer[ch][slot_idx]; - ptr_im[0] = Cldfb_ImagBuffer[ch][slot_idx]; + index_slot = subframeIdx * MAX_PARAM_SPATIAL_SUBFRAMES; + /* cldfb analysis of non-coupled, non-LFE channels */ + idx_in = 0; + for ( ch = 0; ch < first_empty_channel - 2 * MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + if ( st_ivas->hIntSetup.index_lfe[0] != ch ) + { + pPcm_temp[ch] = output_f[ch]; + /* slot loop for gathering the input data */ + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + cldfbAnalysis_ts( &( pPcm_temp[ch][hMCParamUpmix->num_freq_bands * ( index_slot + slot_idx )] ), + Cldfb_RealBuffer_subfr[idx_in][slot_idx], + Cldfb_ImagBuffer_subfr[idx_in][slot_idx], + maxBand, st_ivas->cldfbAnaDec[2 * MC_PARAMUPMIX_COMBINATIONS + idx_in] ); + } + idx_in++; + } + } - cldfbSynthesis( ptr_re, ptr_im, &( pPcm_temp[ch][hMCParamUpmix->num_freq_bands * slot_idx] ), - hMCParamUpmix->num_freq_bands, st_ivas->cldfbSynDec[ch] ); + /* copy and reorder cldfb analysis of coupled channels */ + for ( ch = 0; ch < MAX_PARAM_SPATIAL_SUBFRAMES; ch++ ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + mvr2r( Cldfb_RealBuffer[chidx1[ch]][index_slot + slot_idx], Cldfb_RealBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[chidx1[ch]][index_slot + slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_RealBuffer[chidx2[ch]][index_slot + slot_idx], Cldfb_RealBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[chidx2[ch]][index_slot + slot_idx], Cldfb_ImagBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + } + idx_in += 2; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*LFE handling for split rendering cases*/ + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) + { + ch = st_ivas->hIntSetup.index_lfe[idx_lfe]; + /* slot loop for gathering the input data */ + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + cldfbAnalysis_ts( &( output_f[ch][maxBand * index_slot] ), + Cldfb_RealBuffer_subfr[idx_in][slot_idx], + Cldfb_ImagBuffer_subfr[idx_in][slot_idx], + maxBand, st_ivas->cldfbAnaDec[idx_in] ); + } + idx_in++; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + mvr2r( Cldfb_RealBuffer_subfr[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer_subfr[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + } + } + st_ivas->hSplitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + } +#endif + } +#endif + + /* Implement binaural rendering */ + ivas_binRenderer( st_ivas->hBinRenderer, +#ifdef SPLIT_REND_WITH_HEAD_ROT + &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, +#endif + st_ivas->hCombinedOrientationData, + subframeIdx, /* TODO (5ms) : tmu2Dlb please verify */ + JBM_CLDFB_SLOTS_IN_SUBFRAME, +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + NULL, +#endif + Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, + Cldfb_RealBuffer_subfr, + Cldfb_ImagBuffer_subfr ); + + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + int16_t pos_idx; + for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ ) + { + if ( st_ivas->hIntSetup.num_lfe > 0 ) + { + v_multc( Cldfb_RealBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_RealBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand ); + v_multc( Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], GAIN_LFE, Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], maxBand ); + } + } + for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) + { + for ( slot_idx = 0; slot_idx < JBM_CLDFB_SLOTS_IN_SUBFRAME; slot_idx++ ) + { + for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + if ( st_ivas->hIntSetup.num_lfe > 0 ) + { + v_add( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], + Cldfb_RealBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], + Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], + maxBand ); + + v_add( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], + Cldfb_ImagBuffer_subfr[st_ivas->hIntSetup.nchan_out_woLFE][slot_idx], + Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], + maxBand ); + } + mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][( subframeIdx * JBM_CLDFB_SLOTS_IN_SUBFRAME ) + slot_idx], maxBand ); + } + } + } + } +#endif + + /* Implement CLDFB synthesis */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES]; + float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES]; + + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[0][ch][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[0][ch][slot_idx]; +#else + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch][slot_idx]; +#endif + } + + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][index_slot * maxBand] ), maxBand * MAX_PARAM_SPATIAL_SUBFRAMES, st_ivas->cldfbSynDec[ch] ); + } } } - - /* adjust delay of other channels */ - noparamupmix_delay = NS2SA( output_Fs, IVAS_FB_DEC_DELAY_NS ); - for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + else { - float tmp_buf[L_SUBFRAME5MS_48k]; - mvr2r( &output_f[ch][output_frame - noparamupmix_delay], tmp_buf, noparamupmix_delay ); - mvr2r( output_f[ch], &output_f[ch][noparamupmix_delay], output_frame - noparamupmix_delay ); - mvr2r( hMCParamUpmix->pcm_delay[ch], output_f[ch], noparamupmix_delay ); - mvr2r( tmp_buf, hMCParamUpmix->pcm_delay[ch], noparamupmix_delay ); + pPcm_temp[0] = output_f[4]; + pPcm_temp[1] = output_f[6]; + pPcm_temp[2] = output_f[5]; + pPcm_temp[3] = output_f[7]; + pPcm_temp[4] = output_f[8]; + pPcm_temp[5] = output_f[10]; + pPcm_temp[6] = output_f[9]; + pPcm_temp[7] = output_f[11]; + + /* CLDFB synthesis */ + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS * 2; ch++ ) + { + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + float *ptr_im[1], *ptr_re[1]; + ptr_re[0] = Cldfb_RealBuffer[ch][slot_idx]; + ptr_im[0] = Cldfb_ImagBuffer[ch][slot_idx]; + + cldfbSynthesis( ptr_re, ptr_im, &( pPcm_temp[ch][hMCParamUpmix->num_freq_bands * slot_idx] ), + hMCParamUpmix->num_freq_bands, st_ivas->cldfbSynDec[ch] ); + } + } + + /* adjust delay of other channels */ + noparamupmix_delay = NS2SA( output_Fs, IVAS_FB_DEC_DELAY_NS ); + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + float tmp_buf[L_SUBFRAME5MS_48k]; + mvr2r( &output_f[ch][output_frame - noparamupmix_delay], tmp_buf, noparamupmix_delay ); + mvr2r( output_f[ch], &output_f[ch][noparamupmix_delay], output_frame - noparamupmix_delay ); + mvr2r( hMCParamUpmix->pcm_delay[ch], output_f[ch], noparamupmix_delay ); + mvr2r( tmp_buf, hMCParamUpmix->pcm_delay[ch], noparamupmix_delay ); + } } } - for ( ch = first_empty_channel; ch < MAX_OUTPUT_CHANNELS; ch++ ) + for ( ch = first_empty_channel; ch < ivas_get_nchan_buffers_dec( st_ivas ); ch++ ) { - set_f( output_f[ch], 0.0, L_FRAME48k ); + set_f( output_f[ch], 0.0f, output_frame ); } + pop_wmops(); return; } +/*------------------------------------------------------------------------- + * ivas_mc_paramupmix_dec_digest_tc() + * + * + *------------------------------------------------------------------------*/ + +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 */ +) +{ + MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix; + hMCParamUpmix = st_ivas->hMCParamUpmix; + assert( hMCParamUpmix ); + + push_wmops( "ivas_mc_paramupmix_dec_digest_tc" ); + + ivas_param_upmix_dec_decorr_subframes( st_ivas, nSamplesForRendering ); + + /* adapt subframes */ + ivas_jbm_dec_td_renderers_adapt_subframes( st_ivas ); + + ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbSlots, hMCParamUpmix->param_interpolator ); + + pop_wmops(); +} + + +/*------------------------------------------------------------------------- + * ivas_mc_paramupmix_dec_render() + * + * + *------------------------------------------------------------------------*/ + +void ivas_mc_paramupmix_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 *input_f[], /* i : core-coder transport channels */ + float *output_f[] /* i/o: synthesized core-coder transport channels */ +) +{ + int16_t slots_to_render, first_sf, last_sf, subframe_idx; + uint16_t slot_size, ch; + float *output_f_local[MAX_OUTPUT_CHANNELS]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t slot_index_start; +#endif + MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix; + + hMCParamUpmix = st_ivas->hMCParamUpmix; + assert( hMCParamUpmix ); + + push_wmops( "ivas_mc_paramupmix_dec_render" ); + + for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + output_f_local[ch] = output_f[ch]; + } + + slot_size = st_ivas->hTcBuffer->n_samples_granularity; + + /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ + slots_to_render = min( st_ivas->hTcBuffer->num_slots - st_ivas->hTcBuffer->slots_rendered, nSamplesAsked / slot_size ); + *nSamplesRendered = slots_to_render * slot_size; + first_sf = st_ivas->hTcBuffer->subframes_rendered; + last_sf = first_sf; + + for ( ch = 0; ch < MAX_TRANSPORT_CHANNELS; ch++ ) + { + mvr2r( input_f[ch], output_f_local[ch], *nSamplesRendered ); + } + + while ( slots_to_render > 0 ) + { + slots_to_render -= st_ivas->hTcBuffer->subframe_nbslots[last_sf]; + last_sf++; + } +#ifdef DEBUGGING + assert( slots_to_render == 0 ); +#endif + { + + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + mvr2r( hMCParamUpmix->alpha_prev[ch], hMCParamUpmix->alpha_sf[ch], IVAS_MAX_NUM_BANDS ); + mvr2r( hMCParamUpmix->beta_prev[ch], hMCParamUpmix->beta_sf[ch], IVAS_MAX_NUM_BANDS ); + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + slot_index_start = 0; +#endif + for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) + { + int16_t n_samples_sf = slot_size * st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_mc_paramupmix_dec_sf( st_ivas, output_f_local, slot_index_start ); + + slot_index_start += st_ivas->hTcBuffer->subframe_nbslots[subframe_idx]; +#else + ivas_mc_paramupmix_dec_sf( st_ivas, output_f_local ); +#endif + for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + output_f_local[ch] += n_samples_sf; + } + } + + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + mvr2r( hMCParamUpmix->alphas[ch], hMCParamUpmix->alpha_prev[ch], IVAS_MAX_NUM_BANDS ); + mvr2r( hMCParamUpmix->betas[ch], hMCParamUpmix->beta_prev[ch], IVAS_MAX_NUM_BANDS ); + } + } + + *nSamplesAvailable = ( st_ivas->hTcBuffer->num_slots - st_ivas->hTcBuffer->slots_rendered ) * slot_size; + + pop_wmops(); +} + + /*------------------------------------------------------------------------- * ivas_mc_paramupmix_dec_open() * @@ -349,11 +652,55 @@ ivas_error ivas_mc_paramupmix_dec_open( for ( i = 0; i < MC_PARAMUPMIX_MAX_TRANSPORT_CHANS; i++ ) { - if ( ( hMCParamUpmix->pcm_delay[i] = (float *) malloc( 240 * sizeof( float ) ) ) == NULL ) + if ( ( hMCParamUpmix->pcm_delay[i] = (float *) malloc( NS2SA( output_Fs, IVAS_FB_DEC_DELAY_NS ) * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for delay buffer\n" ) ); } - set_zero( hMCParamUpmix->pcm_delay[i], 240 ); + set_zero( hMCParamUpmix->pcm_delay[i], NS2SA( output_Fs, IVAS_FB_DEC_DELAY_NS ) ); + } + + /* allocate transport channels*/ + hMCParamUpmix->free_param_interpolator = 0; + hMCParamUpmix->param_interpolator = NULL; + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms == 1 && +#endif +#else + st_ivas->hDecoderConfig->voip_active == 1 && +#endif + st_ivas->hTcBuffer == NULL ) + { + int16_t nchan_to_allocate; + int16_t nchan_tc; + TC_BUFFER_MODE buffer_mode; + + buffer_mode = TC_BUFFER_MODE_RENDERER; + nchan_tc = ivas_jbm_dec_get_num_tc_channels( st_ivas ); + nchan_to_allocate = MC_PARAMUPMIX_MAX_INPUT_CHANS; + if ( ( hMCParamUpmix->param_interpolator = (float *) malloc( MAX_JBM_CLDFB_TIMESLOTS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for interpolator\n" ) ); + } + + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_STEREO || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_MONO ) + { + buffer_mode = TC_BUFFER_MODE_BUFFER; + nchan_tc = st_ivas->hDecoderConfig->nchan_out; + nchan_to_allocate = nchan_tc; + } + else if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) + { + nchan_to_allocate = MC_PARAMUPMIX_MAX_INPUT_CHANS; + } + if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, buffer_mode, nchan_tc, nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) + { + return error; + } + hMCParamUpmix->free_param_interpolator = 1; + + ivas_jbm_dec_get_adapted_linear_interpolator( DEFAULT_JBM_CLDFB_TIMESLOTS, DEFAULT_JBM_CLDFB_TIMESLOTS, hMCParamUpmix->param_interpolator ); } st_ivas->hMCParamUpmix = hMCParamUpmix; @@ -389,13 +736,114 @@ void ivas_mc_paramupmix_dec_close( free( ( *hMCParamUpmix )->pcm_delay[i] ); } } + if ( ( *hMCParamUpmix )->param_interpolator != NULL ) + { + if ( ( *hMCParamUpmix )->free_param_interpolator == 1 ) + { + free( ( *hMCParamUpmix )->param_interpolator ); + } + } free( *hMCParamUpmix ); *hMCParamUpmix = NULL; return; } +/*------------------------------------------------------------------------- + * ivas_param_upmix_dec_decorr_subframes() + * + * + *------------------------------------------------------------------------*/ +static void paramupmix_td_decorr_process_jbm( + ivas_td_decorr_state_t *hTdDecorr[], /* i/o: SPAR Covar. decoder handle */ + float *pcm_in[], /* i : input audio channels */ + float **pp_out_pcm, /* o : output audio channels */ + const int16_t output_frame /* i : output frame length */ +) +{ + int16_t j, k; + int16_t offset; + float in_duck_gain[L_FRAME48k], out_duck_gain[L_FRAME48k]; + + offset = (int16_t) ( output_frame * FRAMES_PER_SEC * IVAS_DECORR_PARM_LOOKAHEAD_TAU ); + + /* Look-ahead delay */ + for ( k = 0; k < MC_PARAMUPMIX_COMBINATIONS; k++ ) + { + mvr2r( pcm_in[k], pp_out_pcm[k], output_frame ); + delay_signal( pp_out_pcm[k], output_frame, hTdDecorr[k]->look_ahead_buf, offset ); + + /* In ducking gains */ + if ( hTdDecorr[k]->ducking_flag ) + { + ivas_td_decorr_get_ducking_gains( hTdDecorr[k]->pTrans_det, pcm_in[k], in_duck_gain, out_duck_gain, output_frame, 0 ); + + for ( j = 0; j < output_frame; j++ ) + { + pp_out_pcm[k][j] = pp_out_pcm[k][j] * in_duck_gain[j]; + } + } + + /* All pass delay section */ + ivas_td_decorr_APD_iir_filter( &hTdDecorr[k]->APD_filt_state[0], pp_out_pcm[k], hTdDecorr[k]->num_apd_sections, output_frame ); + + /* Out ducking gains */ + if ( hTdDecorr[k]->ducking_flag ) + { + for ( j = 0; j < output_frame; j++ ) + { + pp_out_pcm[k][j] = pp_out_pcm[k][j] * out_duck_gain[j]; + } + } + } + + return; +} + +static void ivas_param_upmix_dec_decorr_subframes( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const int16_t nSamplesForRendering ) +{ + MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix; + float *pPcm_tmp[MC_PARAMUPMIX_COMBINATIONS]; + float *p_tc[MC_PARAMUPMIX_COMBINATIONS]; + int16_t nchan_internal, ch; + int16_t nSamplesLeftForTD, default_frame; + + hMCParamUpmix = st_ivas->hMCParamUpmix; + assert( hMCParamUpmix ); + + push_wmops( "ivas_param_upmix_dec_decorr_subframes" ); + + /* TD decorrelator */ + default_frame = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); + nSamplesLeftForTD = nSamplesForRendering; + nchan_internal = MC_PARAMUPMIX_COMBINATIONS; + + for ( ch = 0; ch < nchan_internal; ch++ ) + { + pPcm_tmp[ch] = st_ivas->hTcBuffer->tc[ch + 8]; + p_tc[ch] = st_ivas->hTcBuffer->tc[ch + 4]; + } + + while ( nSamplesLeftForTD ) + { + int16_t nSamplesToDecorr = min( nSamplesLeftForTD, default_frame ); + + paramupmix_td_decorr_process_jbm( hMCParamUpmix->hTdDecorr, p_tc, pPcm_tmp, nSamplesToDecorr ); + + for ( ch = 0; ch < nchan_internal; ch++ ) + { + p_tc[ch] += nSamplesToDecorr; + } + + nSamplesLeftForTD -= nSamplesToDecorr; + } + pop_wmops(); + + return; +} /*****************************************************************************************/ /* local functions */ @@ -464,10 +912,352 @@ static void ps_pred_process( return; } +static void ps_pred_process_sf( + MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix, + DECODER_TC_BUFFER_HANDLE hTcBuffer, + float qmf_mod_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* in/out */ + float qmf_mod_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float qmf_side_re[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], /* in/out */ + float qmf_side_im[JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float *param_interpol, + const int16_t ch, + const int16_t slots_rendered ) +{ + float vmre, vmim, vsre, vsim; + int16_t iqmf, ipar, ismp, iismp; + float alpha_smp, beta_smp; + float *alpha1, *alpha2; + float *beta1, *beta2; + float *alpha_prev = hMCParamUpmix->alpha_prev[ch]; + float *beta_prev = hMCParamUpmix->beta_prev[ch]; + float *alpha_sf = hMCParamUpmix->alpha_sf[ch]; + float *beta_sf = hMCParamUpmix->beta_sf[ch]; + float dalpha, dbeta, ifac; + float alpha_start[IVAS_MAX_NUM_BANDS], beta_start[IVAS_MAX_NUM_BANDS]; + + const int16_t qmf_to_par_band[] = { + 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, + 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, + 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, + 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 + }; + + mvr2r( alpha_sf, alpha_start, IVAS_MAX_NUM_BANDS ); + mvr2r( beta_sf, beta_start, IVAS_MAX_NUM_BANDS ); + for ( iqmf = 0; iqmf < CLDFB_NO_CHANNELS_MAX; iqmf++ ) + { + ipar = qmf_to_par_band[iqmf]; + alpha1 = alpha_prev; + beta1 = beta_prev; + + ismp = 0; + alpha2 = hMCParamUpmix->alphas[ch]; + beta2 = hMCParamUpmix->betas[ch]; + alpha_smp = alpha_start[ipar]; + beta_smp = beta_start[ipar]; + + for ( iismp = 0; iismp < hTcBuffer->subframe_nbslots[hTcBuffer->subframes_rendered]; iismp++ ) + { + if ( ( slots_rendered == 0 ) && ( iismp == 0 ) ) + { + ifac = param_interpol[iismp]; + } + else + { + ifac = param_interpol[iismp] - param_interpol[iismp - 1]; + } + dalpha = ( alpha2[ipar] - alpha1[ipar] ) * ifac; + dbeta = ( beta2[ipar] - beta1[ipar] ) * ifac; + + alpha_smp += dalpha; + beta_smp += dbeta; + + vmre = qmf_mod_re[ismp][iqmf]; + vmim = qmf_mod_im[ismp][iqmf]; + vsre = qmf_side_re[ismp][iqmf]; + vsim = qmf_side_im[ismp][iqmf]; + + qmf_side_re[ismp][iqmf] = alpha_smp * vmre + beta_smp * vsre; + qmf_side_im[ismp][iqmf] = alpha_smp * vmim + beta_smp * vsim; + + ismp++; + } + alpha_sf[ipar] = alpha_smp; + beta_sf[ipar] = beta_smp; + } + + return; +} + + +static void ivas_mc_paramupmix_dec_sf( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + float *output_f[MAX_OUTPUT_CHANNELS] /* i/o: synthesized core-coder transport channels */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + int16_t slot_index_start +#endif +) +{ + int16_t i, ch, slot_idx, k; + float *pPcm_temp[MC_PARAMUPMIX_COMBINATIONS * 2]; /* decorrelated and undecorrelated*/ + /*CLDFB*/ + float Cldfb_RealBuffer[MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer[MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + int16_t noparamupmix_delay, n_samples_rendered; + MC_PARAMUPMIX_DEC_HANDLE hMCParamUpmix; + int16_t subframeIdx, idx_in, maxBand; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Cldfb_RealBuffer_subfr[MC_PARAMUPMIX_MAX_INPUT_CHANS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_subfr[MC_PARAMUPMIX_MAX_INPUT_CHANS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_RealBuffer_Binaural[1][BINAURAL_CHANNELS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[1][BINAURAL_CHANNELS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + int16_t idx_lfe; +#else + float Cldfb_RealBuffer_subfr[3 + MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_subfr[3 + MC_PARAMUPMIX_MAX_TRANSPORT_CHANS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][JBM_CLDFB_SLOTS_IN_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; +#endif + /* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ + int16_t chidx1[MC_PARAMUPMIX_COMBINATIONS] = { 0, 1, 4, 5 }; + int16_t chidx2[MC_PARAMUPMIX_COMBINATIONS] = { 2, 3, 6, 7 }; + hMCParamUpmix = st_ivas->hMCParamUpmix; + assert( hMCParamUpmix ); + + push_wmops( "ivas_mc_paramupmix_dec_sf" ); + + for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) + { + pPcm_temp[2 * i] = output_f[i + 4]; /* un-decorrelated */ + pPcm_temp[2 * i + 1] = output_f[i + 8]; /* decorrelated */ + } + + /* CLDFB Analysis*/ + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS * 2; ch++ ) + { + /* slot loop for gathering the input data */ + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + cldfbAnalysis_ts( &( pPcm_temp[ch][hMCParamUpmix->num_freq_bands * slot_idx] ), Cldfb_RealBuffer[ch][slot_idx], Cldfb_ImagBuffer[ch][slot_idx], hMCParamUpmix->num_freq_bands, st_ivas->cldfbAnaDec[ch] ); + } + } + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + ps_pred_process_sf( hMCParamUpmix, + st_ivas->hTcBuffer, + Cldfb_RealBuffer[2 * ch], /* in/out */ + Cldfb_ImagBuffer[2 * ch], + Cldfb_RealBuffer[2 * ch + 1], /* in/out decorr */ + Cldfb_ImagBuffer[2 * ch + 1], + &hMCParamUpmix->param_interpolator[st_ivas->hTcBuffer->slots_rendered], + ch, + st_ivas->hTcBuffer->slots_rendered ); + + /*-- m, s -> l, r ----------------------------*/ + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + for ( k = 0; k < CLDFB_NO_CHANNELS_MAX; k++ ) + { + float qlre = Cldfb_RealBuffer[2 * ch][slot_idx][k]; + float qlim = Cldfb_ImagBuffer[2 * ch][slot_idx][k]; + float qrre = Cldfb_RealBuffer[2 * ch + 1][slot_idx][k]; + float qrim = Cldfb_ImagBuffer[2 * ch + 1][slot_idx][k]; + + Cldfb_RealBuffer[2 * ch][slot_idx][k] = qlre + qrre; + Cldfb_ImagBuffer[2 * ch][slot_idx][k] = qlim + qrim; + Cldfb_RealBuffer[2 * ch + 1][slot_idx][k] = qlre - qrre; + Cldfb_ImagBuffer[2 * ch + 1][slot_idx][k] = qlim - qrim; + } + } + } + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) + { + maxBand = (int16_t) ( ( CLDFB_NO_CHANNELS_MAX * st_ivas->hDecoderConfig->output_Fs ) / 48000 ); + subframeIdx = st_ivas->hTcBuffer->subframes_rendered; + /* fastconv binaural rendering and CLDFB synthesis */ + /* cldfb analysis of non-coupled, non-LFE channels */ + idx_in = 0; + for ( ch = 0; ch < MC_PARAMUPMIX_MAX_INPUT_CHANS - 2 * MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + if ( st_ivas->hIntSetup.index_lfe[0] != ch ) + { + pPcm_temp[ch] = output_f[ch]; + /* slot loop for gathering the input data */ + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + cldfbAnalysis_ts( &( pPcm_temp[ch][hMCParamUpmix->num_freq_bands * slot_idx] ), + Cldfb_RealBuffer_subfr[idx_in][slot_idx], + Cldfb_ImagBuffer_subfr[idx_in][slot_idx], + maxBand, st_ivas->cldfbAnaDec[2 * MC_PARAMUPMIX_COMBINATIONS + idx_in] ); + } + idx_in++; + } + } + + /* copy and reorder cldfb analysis of coupled channels */ + for ( ch = 0; ch < MAX_PARAM_SPATIAL_SUBFRAMES; ch++ ) + { + for ( slot_idx = 0; slot_idx < MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) + { + mvr2r( Cldfb_RealBuffer[chidx1[ch]][slot_idx], Cldfb_RealBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[chidx1[ch]][slot_idx], Cldfb_ImagBuffer_subfr[idx_in][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_RealBuffer[chidx2[ch]][slot_idx], Cldfb_RealBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer[chidx2[ch]][slot_idx], Cldfb_ImagBuffer_subfr[idx_in + 1][slot_idx], CLDFB_NO_CHANNELS_MAX ); + } + idx_in += 2; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /*LFE handling for split rendering cases*/ + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + for ( idx_lfe = 0; idx_lfe < st_ivas->hIntSetup.num_lfe; idx_lfe++ ) + { + ch = st_ivas->hIntSetup.index_lfe[idx_lfe]; + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + cldfbAnalysis_ts( &( output_f[ch][maxBand * slot_idx] ), + Cldfb_RealBuffer_subfr[idx_in][slot_idx], + Cldfb_ImagBuffer_subfr[idx_in][slot_idx], + maxBand, st_ivas->cldfbAnaDec[idx_in] ); + } + idx_in++; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + for ( ch = 0; ch < ( st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe ); ch++ ) + { + mvr2r( Cldfb_RealBuffer_subfr[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_index_start + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer_subfr[ch][slot_idx], st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][slot_index_start + slot_idx], maxBand ); + } + } + + st_ivas->hSplitBinRend.hCldfbDataOut->config = st_ivas->hIntSetup.output_config; + } +#endif + } +#endif + + /* Implement binaural rendering */ + ivas_binRenderer( st_ivas->hBinRenderer, +#ifdef SPLIT_REND_WITH_HEAD_ROT + &st_ivas->hSplitBinRend.splitrend.multiBinPoseData, +#endif + st_ivas->hCombinedOrientationData, + subframeIdx, + st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], + Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, + Cldfb_RealBuffer_subfr, + Cldfb_ImagBuffer_subfr ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + int16_t pos_idx; + for ( pos_idx = 0; pos_idx < st_ivas->hBinRenderer->numPoses; pos_idx++ ) + { + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) + { + for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) + { + mvr2r( Cldfb_RealBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_index_start + slot_idx], maxBand ); + mvr2r( Cldfb_ImagBuffer_Binaural[pos_idx][ch][slot_idx], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[( pos_idx * BINAURAL_CHANNELS ) + ch][slot_index_start + slot_idx], maxBand ); + } + } + } + } +#endif + + + /* Implement CLDFB synthesis */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + float *RealBuffer[MAX_PARAM_SPATIAL_SUBFRAMES]; + float *ImagBuffer[MAX_PARAM_SPATIAL_SUBFRAMES]; + + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[subframeIdx]; slot_idx++ ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[0][ch][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[0][ch][slot_idx]; +#else + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch][slot_idx]; +#endif + } + + cldfbSynthesis( RealBuffer, ImagBuffer, &( output_f[ch][0] ), maxBand * st_ivas->hTcBuffer->subframe_nbslots[subframeIdx], st_ivas->cldfbSynDec[ch] ); + } + } + else + { + /* boxes = { 0 1 2 3 [4 6] [5 7] [8 10] [9 11] }; */ + pPcm_temp[0] = output_f[4]; + pPcm_temp[1] = output_f[6]; + pPcm_temp[2] = output_f[5]; + pPcm_temp[3] = output_f[7]; + pPcm_temp[4] = output_f[8]; + pPcm_temp[5] = output_f[10]; + pPcm_temp[6] = output_f[9]; + pPcm_temp[7] = output_f[11]; + + /* CLDFB synthesis */ + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS * 2; ch++ ) + { + for ( slot_idx = 0; slot_idx < st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; slot_idx++ ) + { + float *ptr_im[1], *ptr_re[1]; + ptr_re[0] = Cldfb_RealBuffer[ch][slot_idx]; + ptr_im[0] = Cldfb_ImagBuffer[ch][slot_idx]; + + cldfbSynthesis( ptr_re, ptr_im, &( pPcm_temp[ch][hMCParamUpmix->num_freq_bands * slot_idx] ), + hMCParamUpmix->num_freq_bands, st_ivas->cldfbSynDec[ch] ); + } + } + /* adjust delay of other channels */ + noparamupmix_delay = NS2SA( st_ivas->hDecoderConfig->output_Fs, IVAS_FB_DEC_DELAY_NS ); + n_samples_rendered = st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered] * hMCParamUpmix->num_freq_bands; + if ( n_samples_rendered > noparamupmix_delay ) + { + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + float tmp_buf[L_SUBFRAME5MS_48k]; + mvr2r( &output_f[ch][n_samples_rendered - noparamupmix_delay], tmp_buf, noparamupmix_delay ); + mvr2r( output_f[ch], &output_f[ch][noparamupmix_delay], n_samples_rendered - noparamupmix_delay ); + mvr2r( hMCParamUpmix->pcm_delay[ch], output_f[ch], noparamupmix_delay ); + mvr2r( tmp_buf, hMCParamUpmix->pcm_delay[ch], noparamupmix_delay ); + } + } + else + { + for ( ch = 0; ch < MC_PARAMUPMIX_COMBINATIONS; ch++ ) + { + float tmp_buf[L_SUBFRAME5MS_48k]; + mvr2r( &output_f[ch][0], tmp_buf, n_samples_rendered ); + mvr2r( hMCParamUpmix->pcm_delay[ch], output_f[ch], n_samples_rendered ); + mvr2r( &hMCParamUpmix->pcm_delay[ch][n_samples_rendered], &hMCParamUpmix->pcm_delay[ch][0], noparamupmix_delay - n_samples_rendered ); + mvr2r( tmp_buf, &hMCParamUpmix->pcm_delay[ch][noparamupmix_delay - n_samples_rendered], n_samples_rendered ); + } + } + } + + st_ivas->hTcBuffer->slots_rendered += st_ivas->hTcBuffer->subframe_nbslots[st_ivas->hTcBuffer->subframes_rendered]; + st_ivas->hTcBuffer->subframes_rendered++; + + pop_wmops(); +} + static void paramupmix_td_decorr_process( ivas_td_decorr_state_t *hTdDecorr[], /* i/o: SPAR Covar. decoder handle */ - float pcm_in[][L_FRAME48k], /* i : input audio channels */ + float *pcm_in[], /* i : input audio channels */ float **pp_out_pcm, /* o : output audio channels */ const int16_t output_frame /* i : output frame length */ ) @@ -512,7 +1302,7 @@ static void paramupmix_td_decorr_process( } -static int huff_read( +static int16_t huff_read( Decoder_State *st, const int16_t ( *ht )[2] ) { @@ -546,10 +1336,10 @@ static void huffman_decode( switch ( parType ) { case ALPHA: - nquant = alpha_quant_table[quant_type].nquant; + nquant = ivas_mc_paramupmix_alpha_quant_table[quant_type].nquant; break; case BETA: - nquant = beta_quant_table[quant_type][0].nquant; + nquant = ivas_mc_paramupmix_beta_quant_table[quant_type][0].nquant; break; default: assert( 0 ); @@ -572,10 +1362,10 @@ static void huffman_decode( switch ( parType ) { case ALPHA: - huff_node_table = huff_nodes_dt.alpha[quant_type]; + huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.alpha[quant_type]; break; case BETA: - huff_node_table = huff_nodes_dt.beta[quant_type]; + huff_node_table = ivas_mc_paramupmix_huff_nodes_dt.beta[quant_type]; break; default: huff_node_table = NULL; @@ -591,10 +1381,10 @@ static void huffman_decode( switch ( parType ) { case ALPHA: - huff_node_table = huff_nodes_df0.alpha[quant_type]; + huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.alpha[quant_type]; break; case BETA: - huff_node_table = huff_nodes_df0.beta[quant_type]; + huff_node_table = ivas_mc_paramupmix_huff_nodes_df0.beta[quant_type]; break; default: huff_node_table = NULL; @@ -605,10 +1395,10 @@ static void huffman_decode( switch ( parType ) { case ALPHA: - huff_node_table = huff_nodes_df.alpha[quant_type]; + huff_node_table = ivas_mc_paramupmix_huff_nodes_df.alpha[quant_type]; break; case BETA: - huff_node_table = huff_nodes_df.beta[quant_type]; + huff_node_table = ivas_mc_paramupmix_huff_nodes_df.beta[quant_type]; break; default: assert( 0 ); @@ -632,7 +1422,7 @@ static void dequant_alpha( float *v ) { int16_t iv; - ACPL_QUANT_TABLE *quant_table = &alpha_quant_table[quant_type]; + const ACPL_QUANT_TABLE *quant_table = &ivas_mc_paramupmix_alpha_quant_table[quant_type]; for ( iv = 0; iv < ivStart; iv++ ) { @@ -657,7 +1447,7 @@ static void dequant_beta( float *beta ) { int16_t iv; - ACPL_QUANT_TABLE *quant_table; + const ACPL_QUANT_TABLE *quant_table; for ( iv = 0; iv < ivStart; iv++ ) { @@ -666,7 +1456,7 @@ static void dequant_beta( for ( iv = ivStart; iv < nv; iv++ ) { - quant_table = &beta_quant_table[quant_type][ivas_param_upmx_mx_qmap[quant_type][aq[iv]]]; + quant_table = &ivas_mc_paramupmix_beta_quant_table[quant_type][ivas_param_upmx_mx_qmap[quant_type][aq[iv]]]; beta[iv] = quant_table->data[bq[iv]]; } diff --git a/lib_dec/ivas_mcmasa_dec.c b/lib_dec/ivas_mcmasa_dec.c index 99b3ff68744b0daf4e3460cd3c9ab3b764ad6bc3..efdb0a8122809153902ba3c5a4acbee1488f9c62 100755 --- a/lib_dec/ivas_mcmasa_dec.c +++ b/lib_dec/ivas_mcmasa_dec.c @@ -82,7 +82,7 @@ ivas_error ivas_mcmasa_dec_reconfig( { if ( st_ivas->hDirAC == NULL ) { - if ( ( error = ivas_dirac_dec_open( st_ivas ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_OPEN ) ) != IVAS_ERR_OK ) { return error; } @@ -96,51 +96,5 @@ ivas_error ivas_mcmasa_dec_reconfig( } } - /*-------------------------------------------------------------------* - * Close binaural rendering handles and re-allocate proper ones - * in McMASA renderer_type can be only RENDERER_BINAURAL_PARAMETRIC, RENDERER_BINAURAL_PARAMETRIC_ROOM - *--------------------------------------------------------------------*/ - - if ( st_ivas->hBinRenderer != NULL ) - { - ivas_binRenderer_close( &st_ivas->hBinRenderer ); - } - - if ( st_ivas->hDiracDecBin == NULL && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) - { - /* open parametric binaural renderer */ - if ( st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) - { - if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } - } - - if ( ( error = ivas_dirac_dec_init_binaural_data( st_ivas, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } - } - else if ( st_ivas->hDiracDecBin != NULL ) - { - if ( st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM ) - { - /* close unneeded renderer */ - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); - } - else - { - /* if necessary, close/open td-decorrs */ - if ( ( 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; - } - - /* regularization factor is bitrate-dependent */ - st_ivas->hDiracDecBin->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); - } - } - return error; } diff --git a/lib_dec/ivas_mct_core_dec.c b/lib_dec/ivas_mct_core_dec.c index 8309c9874dea415cf4288a06c88f2bafd2903eac..f7b12126acaa75beff526953363192a772ac9e2e 100644 --- a/lib_dec/ivas_mct_core_dec.c +++ b/lib_dec/ivas_mct_core_dec.c @@ -165,7 +165,7 @@ void ivas_mct_core_dec( 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 */ - float signal_out[][L_FRAME48k] /* o : synthesis @internal_FS */ + float *signal_out[] /* o : synthesis @internal_FS */ ) { int16_t i, k, ch, cpe_id, nChannels; @@ -217,8 +217,8 @@ void ivas_mct_core_dec( { /* Initialization or re-configuration of Stereo TCX */ sts[ch]->enablePlcWaveadjust = 0; - x[ch][0] = &signal_out[ch][0]; - x[ch][1] = &signal_out[ch][0] + L_FRAME48k / 2; + x[ch][0] = signal_out[ch]; + x[ch][1] = signal_out[ch] + ( L_FRAME48k / 2 ); } /*--------------------------------------------------------------------------------* diff --git a/lib_dec/ivas_mct_dec.c b/lib_dec/ivas_mct_dec.c old mode 100755 new mode 100644 index 7742656899b573b0cc86254b5cf43ebc76661131..02710355267aa6766922213c9c37852eac30ed19 --- a/lib_dec/ivas_mct_dec.c +++ b/lib_dec/ivas_mct_dec.c @@ -54,7 +54,14 @@ * Local function prototypes *-----------------------------------------------------------------------*/ -static ivas_error ivas_mc_dec_reconfig( Decoder_Struct *st_ivas, uint16_t *nSamplesRendered, int16_t *data ); +static ivas_error ivas_mc_dec_reconfig( Decoder_Struct *st_ivas, uint16_t *nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif +); /*--------------------------------------------------------------------------* * ivas_mct_dec() @@ -64,7 +71,7 @@ static ivas_error ivas_mc_dec_reconfig( Decoder_Struct *st_ivas, uint16_t *nSamp ivas_error ivas_mct_dec( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output[][L_FRAME48k], /* o : output synthesis signal */ + 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 */ ) @@ -82,6 +89,7 @@ ivas_error ivas_mct_dec( STnsData tnsData[MCT_MAX_BLOCKS][CPE_CHANNELS][2]; Decoder_State **sts; float synth[CPE_CHANNELS][L_FRAME_PLUS]; + float output_lfe_ch[L_FRAME48k]; int32_t ivas_total_brate; ivas_error error; @@ -93,6 +101,12 @@ ivas_error ivas_mct_dec( ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + if ( st_ivas->ivas_format == MC_FORMAT && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) + { + /* save LFE channel */ + mvr2r( output[LFE_CHANNEL], output_lfe_ch, output_frame ); + } + if ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCT && !st_ivas->bfi ) { /* get the number of channels from the signalled MC LS setup */ @@ -143,8 +157,8 @@ ivas_error ivas_mct_dec( for ( n = 0; n < CPE_CHANNELS; n++ ) { - x[n][0] = &output[n + cpe_id * CPE_CHANNELS][0]; - x[n][1] = &output[n + cpe_id * CPE_CHANNELS][L_FRAME48k / 2]; + x[n][0] = output[n + cpe_id * CPE_CHANNELS]; + x[n][1] = output[n + cpe_id * CPE_CHANNELS] + ( L_FRAME48k / 2 ); set_zero( x[n][0], L_FRAME48k / 2 ); set_zero( x[n][1], L_FRAME48k / 2 ); } @@ -160,7 +174,7 @@ ivas_error ivas_mct_dec( ivas_mct_core_dec( hMCT, st_ivas->hCPE, nCPE, output ); /* for sba to stereo output disable any further processing for TCs > 2 as it is not needed*/ - if ( st_ivas->sba_dirac_stereo_flag ) + if ( st_ivas->sba_dirac_stereo_flag && st_ivas->ivas_format != SBA_ISM_FORMAT ) { for ( cpe_id = 1; cpe_id < nCPE; cpe_id++ ) { @@ -178,8 +192,8 @@ ivas_error ivas_mct_dec( for ( n = 0; n < CPE_CHANNELS; n++ ) { - x[n][0] = &output[n + cpe_id * CPE_CHANNELS][0]; - x[n][1] = &output[n + cpe_id * CPE_CHANNELS][L_FRAME48k / 2]; + x[n][0] = output[n + cpe_id * CPE_CHANNELS]; + x[n][1] = output[n + cpe_id * CPE_CHANNELS] + ( L_FRAME48k / 2 ); } ivas_mdct_core_tns_ns( hCPE, fUseTns[cpe_id], tnsData[cpe_id], x, Aq[cpe_id], 1 ); @@ -199,8 +213,8 @@ ivas_error ivas_mct_dec( { for ( n = 0; n < CPE_CHANNELS; n++ ) { - x_all[n + cpe_id * CPE_CHANNELS][0] = &output[n + cpe_id * CPE_CHANNELS][0]; - x_all[n + cpe_id * CPE_CHANNELS][1] = &output[n + cpe_id * CPE_CHANNELS][L_FRAME48k / 2]; + x_all[n + cpe_id * CPE_CHANNELS][0] = output[n + cpe_id * CPE_CHANNELS]; + x_all[n + cpe_id * CPE_CHANNELS][1] = output[n + cpe_id * CPE_CHANNELS] + ( L_FRAME48k / 2 ); } } @@ -214,8 +228,8 @@ ivas_error ivas_mct_dec( for ( n = 0; n < CPE_CHANNELS; n++ ) { - x[n][0] = &output[n + cpe_id * CPE_CHANNELS][0]; - x[n][1] = &output[n + cpe_id * CPE_CHANNELS][L_FRAME48k / 2]; + x[n][0] = output[n + cpe_id * CPE_CHANNELS]; + x[n][1] = output[n + cpe_id * CPE_CHANNELS] + ( L_FRAME48k / 2 ); } ivas_mdct_core_reconstruct( hCPE, x, synth, fUseTns[cpe_id], 1 ); @@ -226,14 +240,13 @@ ivas_error ivas_mct_dec( for ( n = 0; n < CPE_CHANNELS; n++ ) { - - if ( st_ivas->sba_dirac_stereo_flag ) + if ( st_ivas->sba_dirac_stereo_flag && ( st_ivas->ivas_format != SBA_ISM_FORMAT || cpe_id >= nCPE - 2 ) ) { ivas_post_proc( NULL, hCPE, n, synth[n], NULL, output_frame, 1 ); } /* Postprocessing for ACELP/MDCT core switching and synchronization */ - if ( ( error = core_switching_post_dec( sts[n], synth[n], output[cpe_id * CPE_CHANNELS + n], hCPE->output_mem[1], st_ivas->ivas_format, 0, output_frame, 0 /*core_switching_flag*/, st_ivas->sba_dirac_stereo_flag, -1, hCPE->last_element_mode ) ) != IVAS_ERR_OK ) + if ( ( error = core_switching_post_dec( sts[n], synth[n], output[cpe_id * CPE_CHANNELS + n], hCPE->output_mem[1], st_ivas->ivas_format, 0, output_frame, 0 /*core_switching_flag*/, ( st_ivas->ivas_format != SBA_ISM_FORMAT || cpe_id >= nCPE - 2 ) ? st_ivas->sba_dirac_stereo_flag : 0, -1, hCPE->last_element_mode ) ) != IVAS_ERR_OK ) { return error; } @@ -254,7 +267,7 @@ ivas_error ivas_mct_dec( /* synthesis synchronization between stereo modes */ - if ( !st_ivas->sba_dirac_stereo_flag ) + if ( !st_ivas->sba_dirac_stereo_flag || ( st_ivas->ivas_format == SBA_ISM_FORMAT && cpe_id < nCPE - 2 ) ) { synchro_synthesis( ivas_total_brate, hCPE, output + cpe_id * CPE_CHANNELS, output_frame, 0 ); } @@ -267,6 +280,7 @@ ivas_error ivas_mct_dec( } #endif } + /* move channels after LFE to correct output for multi-channel MCT */ if ( st_ivas->ivas_format == MC_FORMAT && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) { @@ -280,7 +294,9 @@ ivas_error ivas_mct_dec( mvr2r( output[n - 1], output[n + 1], output_frame ); } mvr2r( tmp, output[LFE_CHANNEL - 1], output_frame ); - set_zero( output[LFE_CHANNEL], output_frame ); + + /* save LFE channel */ + mvr2r( output_lfe_ch, output[LFE_CHANNEL], output_frame ); } #ifdef DEBUG_MODE_INFO @@ -331,7 +347,7 @@ ivas_error create_mct_dec( *-----------------------------------------------------------------*/ /* Determine active channels */ - if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_PARAMMC ) || st_ivas->ivas_format == SBA_FORMAT ) + if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_PARAMMC ) || st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { hMCT->nchan_out_woLFE = st_ivas->nchan_transport; } @@ -441,7 +457,7 @@ ivas_error mct_dec_reconfigure( if ( b_nchan_change ) { /* Determine active channels */ - if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_PARAMMC ) || st_ivas->ivas_format == SBA_FORMAT ) + if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_PARAMMC ) || st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { hMCT->nchan_out_woLFE = st_ivas->nchan_transport; } @@ -618,7 +634,12 @@ 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 : flushed samples (JBM) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { AUDIO_CONFIG signaled_config; @@ -648,7 +669,11 @@ ivas_error ivas_mc_dec_config( { if ( st_ivas->hDecoderConfig->last_ivas_total_brate != st_ivas->hDecoderConfig->ivas_total_brate || st_ivas->transport_config != signaled_config || last_mc_mode != st_ivas->mc_mode ) { - ivas_mc_dec_reconfig( st_ivas, nSamplesRendered, data ); + ivas_mc_dec_reconfig( st_ivas, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ); } } @@ -668,7 +693,12 @@ ivas_error ivas_mc_dec_config( static ivas_error ivas_mc_dec_reconfig( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ uint16_t *nSamplesRendered, /* o : number of samples flushed from the last frame (JBM) */ - int16_t *data /* o : flushed samples (JBM) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { int16_t nchan_transport_old, nSCE_old, nCPE_old, sba_dirac_stereo_flag_old, nchan_hp20_old; @@ -725,8 +755,13 @@ static ivas_error ivas_mc_dec_reconfig( /* side effect of the renderer selection can be a changed internal config */ ivas_output_init( &( st_ivas->hIntSetup ), st_ivas->intern_config ); - +#ifdef API_5MS_BASELINE +#ifndef API_5MS if ( st_ivas->hDecoderConfig->voip_active ) +#else + if ( st_ivas->hDecoderConfig->Opt_5ms ) +#endif +#endif { /* transfer subframe info from DirAC or ParamMC to central tc buffer */ if ( last_mc_mode == MC_MODE_PARAMMC ) @@ -737,21 +772,25 @@ static ivas_error ivas_mc_dec_reconfig( st_ivas->hTcBuffer->slots_rendered = st_ivas->hParamMC->slots_rendered; mvs2s( st_ivas->hParamMC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } - else if ( last_mc_mode == MC_MODE_MCMASA && st_ivas->hDirAC != NULL ) + else if ( last_mc_mode == MC_MODE_MCMASA && st_ivas->hSpatParamRendCom != NULL ) { - st_ivas->hTcBuffer->nb_subframes = st_ivas->hDirAC->nb_subframes; - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hDirAC->subframes_rendered; - st_ivas->hTcBuffer->num_slots = st_ivas->hDirAC->num_slots; - st_ivas->hTcBuffer->slots_rendered = st_ivas->hDirAC->slots_rendered; - mvs2s( st_ivas->hDirAC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; + st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; + mvs2s( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } /* JBM: when granularity goes down (e.g. MCT with CREND -> ParamMC with binaural fastconv render what still fits in the new granularity */ - tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->hDecoderConfig->output_Fs ); + tc_granularity_new = ivas_jbm_dec_get_render_granularity( st_ivas->renderer_type, st_ivas->ivas_format, st_ivas->mc_mode, st_ivas->hDecoderConfig->output_Fs ); if ( tc_granularity_new < st_ivas->hTcBuffer->n_samples_granularity ) { - if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, last_mc_mode, ISM_MODE_NONE, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_jbm_dec_flush_renderer( st_ivas, tc_granularity_new, renderer_type_old, intern_config_old, &hIntSetupOld, last_mc_mode, ISM_MODE_NONE, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -796,7 +835,9 @@ static ivas_error ivas_mc_dec_reconfig( if ( st_ivas->hDirAC != NULL ) { - ivas_dirac_dec_close( &st_ivas->hDirAC ); + ivas_dirac_rend_close( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) ); + ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); vbap_free_data( &( st_ivas->hVBAPdata ) ); } @@ -880,7 +921,9 @@ static ivas_error ivas_mc_dec_reconfig( if ( st_ivas->hDirAC != NULL ) { - ivas_dirac_dec_close( &st_ivas->hDirAC ); + ivas_dirac_rend_close( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) ); + ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); vbap_free_data( &( st_ivas->hVBAPdata ) ); } @@ -1111,6 +1154,8 @@ static ivas_error ivas_mc_dec_reconfig( } else if ( st_ivas->renderer_type == RENDERER_DISABLE && st_ivas->hDirAC != NULL ) { + ivas_dirac_rend_close( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) ); ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); vbap_free_data( &( st_ivas->hVBAPdata ) ); @@ -1124,7 +1169,11 @@ static ivas_error ivas_mc_dec_reconfig( output_config = st_ivas->hDecoderConfig->output_config; /* binaural renderers*/ - if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { /* remove unneeded binaural renderers */ if ( st_ivas->hBinRenderer != NULL && ( st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV_ROOM ) ) @@ -1132,9 +1181,18 @@ static ivas_error ivas_mc_dec_reconfig( ivas_binRenderer_close( &st_ivas->hBinRenderer ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hCrend[0] != NULL ) && ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM && ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD || st_ivas->hIntSetup.output_config != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) +#else if ( ( st_ivas->hCrendWrapper != NULL ) && ( st_ivas->hCrendWrapper->hCrend != NULL ) && ( st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV && st_ivas->renderer_type != RENDERER_BINAURAL_MIXER_CONV_ROOM && ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD || st_ivas->hIntSetup.output_config != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) ) +#endif { - ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) ); + ivas_rend_closeCrend( &( st_ivas->hCrendWrapper ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses +#endif + ); } if ( st_ivas->hBinRendererTd != NULL && ( st_ivas->renderer_type != RENDERER_BINAURAL_OBJECTS_TD ) ) @@ -1142,21 +1200,19 @@ static ivas_error ivas_mc_dec_reconfig( ivas_td_binaural_close( &st_ivas->hBinRendererTd ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0] != NULL ) +#else if ( st_ivas->hDiracDecBin != NULL ) +#endif { if ( st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_close_binaural_data( st_ivas->hDiracDecBin ); +#else ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); - } - else - { - /* useTdDecorr may change => close and re-open */ - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); - - if ( ( error = ivas_dirac_dec_init_binaural_data( st_ivas, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } +#endif } } @@ -1168,21 +1224,6 @@ static ivas_error ivas_mc_dec_reconfig( return error; } } - else if ( st_ivas->hDiracDecBin == NULL && ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) ) - { - if ( st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) - { - if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } - } - - if ( ( error = ivas_dirac_dec_init_binaural_data( st_ivas, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } - } else if ( st_ivas->hBinRendererTd == NULL && st_ivas->renderer_type == RENDERER_BINAURAL_OBJECTS_TD ) { if ( ( error = ivas_td_binaural_open( st_ivas ) ) != IVAS_ERR_OK ) @@ -1192,21 +1233,41 @@ static ivas_error ivas_mc_dec_reconfig( if ( st_ivas->hIntSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - if ( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_initCrendWrapper( &st_ivas->hCrendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 1 +#endif + ) ) != IVAS_ERR_OK ) { 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 && ( st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV || st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) { - 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 ) + 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 +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -1235,18 +1296,6 @@ static ivas_error ivas_mc_dec_reconfig( #endif } - /*-----------------------------------------------------------------* - * TD Decorrelator - *-----------------------------------------------------------------*/ - - if ( st_ivas->hDiracDecBin != NULL ) - { - if ( ( 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; - } - } - /*-----------------------------------------------------------------* * CLDFB instances *-----------------------------------------------------------------*/ @@ -1259,8 +1308,13 @@ static ivas_error ivas_mc_dec_reconfig( /*-----------------------------------------------------------------* * Reconfigure TC buffer *-----------------------------------------------------------------*/ - +#ifdef API_5MS +#ifdef API_5MS_BASELINE + if ( st_ivas->hDecoderConfig->Opt_5ms == 1 ) +#endif +#else if ( st_ivas->hDecoderConfig->voip_active == 1 ) +#endif { int16_t tc_nchan_full_new; DECODER_TC_BUFFER_HANDLE hTcBuffer; @@ -1292,13 +1346,13 @@ static ivas_error ivas_mc_dec_reconfig( } /* transfer subframe info from central tc buffer to ParamMC or McMASA (DirAC) */ - if ( st_ivas->hDirAC != NULL ) + if ( st_ivas->hSpatParamRendCom != NULL ) { - st_ivas->hDirAC->nb_subframes = st_ivas->hTcBuffer->nb_subframes; - st_ivas->hDirAC->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; - st_ivas->hDirAC->num_slots = st_ivas->hTcBuffer->num_slots; - st_ivas->hDirAC->slots_rendered = st_ivas->hTcBuffer->slots_rendered; - mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hDirAC->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hSpatParamRendCom->nb_subframes = st_ivas->hTcBuffer->nb_subframes; + st_ivas->hSpatParamRendCom->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + st_ivas->hSpatParamRendCom->num_slots = st_ivas->hTcBuffer->num_slots; + st_ivas->hSpatParamRendCom->slots_rendered = st_ivas->hTcBuffer->slots_rendered; + mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } else if ( st_ivas->hParamMC != NULL ) { diff --git a/lib_dec/ivas_mdct_core_dec.c b/lib_dec/ivas_mdct_core_dec.c index deb62940661183ffd59ad804b8a7b930f79a0820..a7aa2c770116d5580710033dd538c6abe9e3a18f 100644 --- a/lib_dec/ivas_mdct_core_dec.c +++ b/lib_dec/ivas_mdct_core_dec.c @@ -526,7 +526,7 @@ void ivas_mdct_core_invQ( sts = hCPE->hCoreCoder; bfi = sts[0]->bfi; - noise_gen_mode_bfi = -1; + noise_gen_mode_bfi = NOISE_GEN_MODE_UNDEF; set_f( xn_buf, 0, L_MDCT_OVLP_MAX + L_FRAME_PLUS + L_MDCT_OVLP_MAX ); set_s( total_nbbits, 0, CPE_CHANNELS ); diff --git a/lib_dec/ivas_mono_dmx_renderer.c b/lib_dec/ivas_mono_dmx_renderer.c index d4dcb7ac7339e69e50347c4061c68b9547d8a3b9..56c13adf3703a1de2de7688b9ee5388ecb73c50a 100644 --- a/lib_dec/ivas_mono_dmx_renderer.c +++ b/lib_dec/ivas_mono_dmx_renderer.c @@ -84,9 +84,9 @@ ivas_error ivas_mono_dmx_renderer_open( *------------------------------------------------------------------------*/ void ivas_mono_downmix_render_passive( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/mono output */ - const int16_t output_frame /* i : output frame length */ + 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 */ ) { int16_t i, j, numInputChannels; @@ -94,6 +94,23 @@ void ivas_mono_downmix_render_passive( MONO_DOWNMIX_RENDERER_HANDLE hDownmix; numInputChannels = st_ivas->nSCE; + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + numInputChannels = st_ivas->nchan_ism; + } + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + numInputChannels = st_ivas->nchan_transport + 1; + } + else + { + numInputChannels = st_ivas->nchan_transport + st_ivas->nchan_ism; + } + } + hDownmix = st_ivas->hMonoDmxRenderer; set_zero( proto_signal, output_frame ); @@ -132,9 +149,9 @@ void ivas_mono_downmix_render_passive( *------------------------------------------------------------------------*/ void ivas_mono_stereo_downmix_mcmasa( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/mono or stereo output */ - int16_t output_frame /* i : output frame length per channel */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output_f[], /* i/o: synthesized core-coder transport channels/mono or stereo output */ + int16_t output_frame /* i : output frame length per channel */ ) { int16_t i; diff --git a/lib_dec/ivas_objectRenderer_internal.c b/lib_dec/ivas_objectRenderer_internal.c index 3be8a2c62ebfdf1c46806b276c8a7a0c8a54b23d..342cb865391928b03197f14a07f154545ac661cb 100644 --- a/lib_dec/ivas_objectRenderer_internal.c +++ b/lib_dec/ivas_objectRenderer_internal.c @@ -53,7 +53,15 @@ ivas_error ivas_td_binaural_open( Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ ) { - return ivas_td_binaural_open_unwrap( &st_ivas->hHrtfTD, st_ivas->hDecoderConfig->output_Fs, st_ivas->nchan_transport, st_ivas->ivas_format, + int16_t num_src; + + num_src = st_ivas->nchan_transport; + if ( ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) || ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) ) + { + num_src = st_ivas->nchan_ism; + } + + return ivas_td_binaural_open_unwrap( &st_ivas->hHrtfTD, st_ivas->hDecoderConfig->output_Fs, num_src, st_ivas->ivas_format, st_ivas->transport_config, st_ivas->hRenderConfig->directivity, st_ivas->hTransSetup, &st_ivas->hBinRendererTd, &st_ivas->binaural_latency_ns ); } @@ -72,6 +80,11 @@ ivas_error ivas_td_binaural_renderer( ) { int16_t ism_md_subframe_update; + int16_t nchan_transport; + + nchan_transport = ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + ? st_ivas->nchan_ism + : st_ivas->nchan_transport; if ( st_ivas->hDecoderConfig->Opt_delay_comp ) { @@ -81,15 +94,28 @@ ivas_error ivas_td_binaural_renderer( { ism_md_subframe_update = 2; } + + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + ism_md_subframe_update = 2; + } + return ivas_td_binaural_renderer_unwrap( st_ivas->hReverb, st_ivas->transport_config, - st_ivas->hBinRendererTd, st_ivas->nchan_transport, LFE_CHANNEL, st_ivas->ivas_format, + st_ivas->hBinRendererTd, + nchan_transport, + LFE_CHANNEL, st_ivas->ivas_format, st_ivas->hIsmMetaData, ( st_ivas->hCombinedOrientationData != NULL ) ? st_ivas->hCombinedOrientationData->enableCombinedOrientation : NULL, ( st_ivas->hCombinedOrientationData != NULL ) ? st_ivas->hCombinedOrientationData->Quaternions : NULL, ( st_ivas->hCombinedOrientationData != NULL ) ? st_ivas->hCombinedOrientationData->listenerPos : NULL, - ism_md_subframe_update, output, output_frame ); + ism_md_subframe_update, output, output_frame +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); } @@ -116,6 +142,21 @@ ivas_error ivas_td_binaural_renderer_sf( int16_t ism_md_subframe_update_jbm; int16_t c_indx, nS; + int16_t nchan_ism_internal, nchan_ism, ch_offset; + + /* Set the number of ISMs */ + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + nchan_ism_internal = st_ivas->nchan_ism; + nchan_ism = st_ivas->nchan_ism; + ch_offset = 2; + } + else + { + nchan_ism_internal = st_ivas->hTcBuffer->nchan_transport_internal; + nchan_ism = st_ivas->nchan_transport; + ch_offset = 0; + } /* Number of subframes to delay metadata to sync with audio */ if ( st_ivas->hDecoderConfig->Opt_delay_comp ) @@ -127,14 +168,19 @@ ivas_error ivas_td_binaural_renderer_sf( ism_md_subframe_update_jbm = st_ivas->hTcBuffer->nb_subframes - 2; } + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + ism_md_subframe_update_jbm = max( 0, st_ivas->hTcBuffer->nb_subframes - 2 ); + } + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { p_reverb_signal[ch] = reverb_signal[ch]; } - for ( ch = 0; ch < st_ivas->hTcBuffer->nchan_transport_internal; ch++ ) + for ( ch = 0; ch < nchan_ism_internal; ch++ ) { - tc_local[ch] = st_ivas->hTcBuffer->tc[ch] + st_ivas->hTcBuffer->n_samples_rendered; + tc_local[ch] = st_ivas->hTcBuffer->tc[ch + ch_offset] + st_ivas->hTcBuffer->n_samples_rendered; } for ( ch = 0; ch < st_ivas->hDecoderConfig->nchan_out; ch++ ) @@ -163,7 +209,7 @@ ivas_error ivas_td_binaural_renderer_sf( /* Update object position(s) */ c_indx = 0; - for ( nS = 0; nS < st_ivas->nchan_transport; nS++ ) + for ( nS = 0; nS < nchan_ism; nS++ ) { if ( !( st_ivas->ivas_format == MC_FORMAT && nS == LFE_CHANNEL ) ) /* Skip LFE for MC */ { @@ -174,7 +220,7 @@ ivas_error ivas_td_binaural_renderer_sf( } if ( subframe_idx == ism_md_subframe_update_jbm ) { - TDREND_Update_object_positions( st_ivas->hBinRendererTd, st_ivas->nchan_transport, st_ivas->ivas_format, st_ivas->hIsmMetaData ); + TDREND_Update_object_positions( st_ivas->hBinRendererTd, nchan_ism, st_ivas->ivas_format, st_ivas->hIsmMetaData ); } /* Update the listener's location/orientation */ @@ -192,7 +238,13 @@ ivas_error ivas_td_binaural_renderer_sf( } /* Render subframe */ +#ifdef FIX_718_JBM_MD_UDPATE + /* ism_md_subframe_update_jbm != subframe_idx: trigger update only for ism_md_subframe_update_jbm == subframe_idx, + where then the two TDREND_GetMix()-arguments subframe_idx and ism_md_subframe_update are equal, and we want to enforce the update inside TDREND_GetMix to use subframe_idx == 0 */ + if ( ( error = TDREND_GetMix( st_ivas->hBinRendererTd, output_f_local, output_frame, 0, ism_md_subframe_update_jbm != subframe_idx ) ) != IVAS_ERR_OK ) +#else if ( ( error = TDREND_GetMix( st_ivas->hBinRendererTd, output_f_local, output_frame, 0, ism_md_subframe_update_jbm ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -205,7 +257,7 @@ ivas_error ivas_td_binaural_renderer_sf( } - for ( ch = 0; ch < st_ivas->hTcBuffer->nchan_transport_internal; ch++ ) + for ( ch = 0; ch < nchan_ism_internal; ch++ ) { tc_local[ch] += output_frame; } diff --git a/lib_dec/ivas_omasa_dec.c b/lib_dec/ivas_omasa_dec.c new file mode 100644 index 0000000000000000000000000000000000000000..06a7e8ead384b2aa86872e624efaa6e3ddb9ea58 --- /dev/null +++ b/lib_dec/ivas_omasa_dec.c @@ -0,0 +1,823 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include "ivas_cnst.h" +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_prot_rend.h" +#include "ivas_rom_com.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Local constants + *------------------------------------------------------------------------*/ + +#define OMASA_TDREND_MATCHING_GAIN 0.7943f + + +/*-------------------------------------------------------------------* + * ivas_omasa_data_open() + * + * Allocate and initialize MASA_ISM rendering handle + *-------------------------------------------------------------------*/ + +ivas_error ivas_omasa_data_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ +) +{ + MASA_ISM_DATA_HANDLE hMasaIsmData; + int16_t ch, bin; + int16_t sf, obj_idx; + + if ( ( hMasaIsmData = (MASA_ISM_DATA_HANDLE) malloc( sizeof( MASA_ISM_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA ISM data\n" ) ); + } + + for ( bin = 0; bin < CLDFB_NO_CHANNELS_MAX; bin++ ) + { + for ( ch = 0; ch < 2; ch++ ) + { + hMasaIsmData->ismPreprocMatrix[ch][ch][bin] = 1.0f; + hMasaIsmData->ismPreprocMatrix[1 - ch][ch][bin] = 0.0f; + hMasaIsmData->eneMoveIIR[ch][bin] = 0.0f; + hMasaIsmData->enePreserveIIR[ch][bin] = 0.0f; + } + hMasaIsmData->preprocEneTarget[bin] = 0.0f; + hMasaIsmData->preprocEneRealized[bin] = 0.0f; + } + + hMasaIsmData->objectsMoved = 0; + hMasaIsmData->delayBuffer = NULL; + + for ( ch = 0; ch < MAX_NUM_OBJECTS; ch++ ) + { + hMasaIsmData->ism_is_edited[ch] = 0; + hMasaIsmData->q_elevation_old[ch] = 0.0f; + hMasaIsmData->q_azimuth_old[ch] = 0.0f; + } + + + for ( obj_idx = 0; obj_idx < MAX_NUM_OBJECTS; obj_idx++ ) + { + set_s( hMasaIsmData->azimuth_ism[obj_idx], 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + set_s( hMasaIsmData->elevation_ism[obj_idx], 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR; sf++ ) + { + set_zero( hMasaIsmData->energy_ratio_ism[obj_idx][sf], CLDFB_NO_CHANNELS_MAX ); + } + } + set_s( hMasaIsmData->azimuth_separated_ism, 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + set_s( hMasaIsmData->elevation_separated_ism, 0, MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR ); + + st_ivas->hMasaIsmData = hMasaIsmData; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * ivas_omasa_data_close() + * + * Deallocate MASA_ISM rendering handle + *-------------------------------------------------------------------*/ + +void ivas_omasa_data_close( + MASA_ISM_DATA_HANDLE *hMasaIsmData /* i/o: MASA_ISM rendering handle */ +) +{ + int16_t i; + + if ( hMasaIsmData == NULL || *hMasaIsmData == NULL ) + { + return; + } + + if ( ( *hMasaIsmData )->delayBuffer != NULL ) + { + for ( i = 0; i < ( *hMasaIsmData )->delayBuffer_nchan; i++ ) + { + free( ( *hMasaIsmData )->delayBuffer[i] ); + } + free( ( *hMasaIsmData )->delayBuffer ); + ( *hMasaIsmData )->delayBuffer = NULL; + } + + free( *hMasaIsmData ); + *hMasaIsmData = NULL; + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_dec_config() + * + * oMASA decoder configuration + *--------------------------------------------------------------------------*/ + +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) */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif +) +{ + int16_t k, sce_id, nSCE_old, nchan_hp20_old, numCldfbAnalyses_old, numCldfbSyntheses_old, n_MD; + int32_t ivas_total_brate, ism_total_brate, cpe_brate; + ISM_MODE ism_mode_old; + IVAS_FORMAT ivas_format_orig; + int16_t nchan_out_buff, nchan_out_buff_old; + ivas_error error; + RENDERER_TYPE old_renderer_type; + + /* initializations */ + ism_total_brate = 0; + ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + + /* save previous frame parameters */ + ism_mode_old = ivas_omasa_ism_mode_select( st_ivas->hDecoderConfig->last_ivas_total_brate, st_ivas->nchan_ism ); + st_ivas->ism_mode = ism_mode_old; + + ivas_format_orig = st_ivas->ivas_format; + st_ivas->ivas_format = st_ivas->last_ivas_format; + ivas_init_dec_get_num_cldfb_instances( st_ivas, &numCldfbAnalyses_old, &numCldfbSyntheses_old ); + nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas ); + st_ivas->ivas_format = ivas_format_orig; + + nSCE_old = st_ivas->nSCE; + nchan_hp20_old = getNumChanSynthesis( st_ivas ); + + /* set ism_mode of current frame */ + st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, st_ivas->nchan_ism ); + + /*-----------------------------------------------------------------* + * Renderer selection + *-----------------------------------------------------------------*/ + + old_renderer_type = st_ivas->renderer_type; + + /* MASA reconfig. */ + cpe_brate = calculate_cpe_brate_MASA_ISM( st_ivas->ism_mode, ivas_total_brate, st_ivas->nchan_ism ); + if ( st_ivas->ini_active_frame == 0 && ivas_total_brate != FRAME_NO_DATA && ( cpe_brate < MASA_STEREO_MIN_BITRATE ) && st_ivas->nCPE == 1 ) + { + st_ivas->hCPE[0]->nchan_out = 1; + } + else if ( ( error = ivas_masa_dec_reconfigure( st_ivas, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + data ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( cpe_brate < MASA_STEREO_MIN_BITRATE ) + { + st_ivas->hCPE[0]->nchan_out = 1; + } + else + { + st_ivas->hCPE[0]->nchan_out = 2; + } + + /* OMASA reconfig. */ + if ( st_ivas->hMasaIsmData == NULL && st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + if ( ( error = ivas_omasa_data_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + ivas_set_omasa_TC( st_ivas->ism_mode, st_ivas->nchan_ism, &st_ivas->nSCE, &st_ivas->nCPE ); + + /* re-configure hp20 memories */ + if ( ( error = ivas_hp20_dec_reconfig( st_ivas, nchan_hp20_old ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* reconfigure core-coders for ISMs */ + k = 0; + while ( k < SIZE_IVAS_BRATE_TBL && ivas_total_brate != ivas_brate_tbl[k] ) + { + k++; + } + + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + ism_total_brate += sep_object_brate[k - 2][st_ivas->nSCE - 1]; + } + + if ( ( error = ivas_corecoder_dec_reconfig( st_ivas, nSCE_old, 1, 2, 0, st_ivas->nSCE > 0 ? sep_object_brate[k - 2][st_ivas->nSCE - 1] : 0, ivas_total_brate - ism_total_brate ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ism_mode_old != st_ivas->ism_mode ) + { + /* ISM MD reconfig. */ + n_MD = 0; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + n_MD = 1; + + if ( st_ivas->hIsmMetaData[0] == NULL ) + { + if ( ( error = ivas_ism_metadata_dec_create( st_ivas, 1, NULL ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + n_MD = st_ivas->nchan_ism; + + ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 ); + + if ( ( error = ivas_ism_metadata_dec_create( st_ivas, st_ivas->nchan_ism, NULL ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + ivas_ism_metadata_close( st_ivas->hIsmMetaData, n_MD ); + + st_ivas->hCPE[0]->element_brate = ivas_total_brate - ism_total_brate; + + /*-----------------------------------------------------------------* + * Renderer selection + *-----------------------------------------------------------------*/ + + ivas_renderer_select( st_ivas ); + + /*-------------------------------------------------------------------* + * Reallocate rendering handles + *--------------------------------------------------------------------*/ + + if ( old_renderer_type != st_ivas->renderer_type ) + { + if ( st_ivas->renderer_type == RENDERER_MONO_DOWNMIX ) + { + if ( ( error = ivas_mono_dmx_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + if ( st_ivas->hMonoDmxRenderer != NULL ) + { + free( st_ivas->hMonoDmxRenderer ); + st_ivas->hMonoDmxRenderer = NULL; + } + } + } + + /* objects renderer reconfig. */ + if ( st_ivas->hMasaIsmData != NULL ) + { + ivas_omasa_separate_object_renderer_close( st_ivas ); + } + + if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + /* Allocate TD renderer for the objects in DISC mode */ + if ( ( error = ivas_td_binaural_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + if ( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + /* TD renderer handle */ + if ( st_ivas->hBinRendererTd != NULL ) + { + ivas_td_binaural_close( &st_ivas->hBinRendererTd ); + } + + if ( st_ivas->hHrtfTD != NULL ) // VE: this is copied from ivas_ism_bitrate_switching() but a review is needed + { + st_ivas->hHrtfTD = NULL; + } + + /* ISM renderer handle + ISM data handle */ + ivas_omasa_separate_object_renderer_close( st_ivas ); + } + } + + if ( st_ivas->renderer_type == RENDERER_DIRAC ) + { + if ( ( error = ivas_dirac_dec_config( st_ivas, DIRAC_RECONFIGURE ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + if ( ( error = ivas_omasa_separate_object_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + /* ISM renderer handle + ISM data handle */ + ivas_omasa_separate_object_renderer_close( st_ivas ); + } + } + + /*-----------------------------------------------------------------* + * TD Decorrelator + *-----------------------------------------------------------------*/ + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0] != NULL ) +#else + if ( st_ivas->hDiracDecBin != NULL ) +#endif + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( ( 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 ( ( 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; + } + } + + /*-----------------------------------------------------------------* + * CLDFB instances + *-----------------------------------------------------------------*/ + + if ( ( error = ivas_cldfb_dec_reconfig( st_ivas, 2, numCldfbAnalyses_old, numCldfbSyntheses_old ) ) != IVAS_ERR_OK ) + { + return error; + } + + /*-----------------------------------------------------------------* + * floating-point output audio buffers + *-----------------------------------------------------------------*/ + +#ifdef API_5MS + if ( !st_ivas->hDecoderConfig->Opt_5ms ) +#else + if ( !st_ivas->hDecoderConfig->voip_active ) +#endif + { + nchan_out_buff = ivas_get_nchan_buffers_dec( st_ivas ); + + if ( nchan_out_buff > nchan_out_buff_old ) + { + for ( k = nchan_out_buff_old; k < nchan_out_buff; k++ ) + { + /* note: these are intra-frame heap memories */ + if ( ( st_ivas->p_output_f[k] = (float *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( float ) ) ) == 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 ( k = nchan_out_buff; k < nchan_out_buff_old; k++ ) + { + free( st_ivas->p_output_f[k] ); + st_ivas->p_output_f[k] = NULL; + } + } + } + } + + return IVAS_ERR_OK; +} + + +/*--------------------------------------------------------------------------* + * ivas_set_surplus_brate_dec() + * + * set bit-rate surplus in combined format coding + *--------------------------------------------------------------------------*/ + +void ivas_set_surplus_brate_dec( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + int32_t *ism_total_brate /* i/o: ISM total bitrate */ +) +{ + int16_t n, bits_ism, bits_element[MAX_NUM_OBJECTS]; + int32_t ism_total_brate_ref, element_brate[MAX_NUM_OBJECTS]; + + *ism_total_brate = 0; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + *ism_total_brate = ivas_interformat_brate( st_ivas->ism_mode, 1, st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp, 0 ); + + st_ivas->hCPE[0]->brate_surplus = st_ivas->hSCE[0]->element_brate - *ism_total_brate; + + /* set 'st->total_brate'; there are no meta-data in ISM_MASA_MODE_PARAM_ONE_OBJ mode */ + st_ivas->hSCE[0]->hCoreCoder[0]->total_brate = *ism_total_brate; + + st_ivas->hSCE[0]->hCoreCoder[0]->low_rate_mode = 0; + if ( st_ivas->hIsmMetaData[0]->ism_imp == ISM_NO_META ) + { + st_ivas->hSCE[0]->hCoreCoder[0]->low_rate_mode = 1; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + int16_t brate_limit_flag, ism_imp[MAX_NUM_OBJECTS]; + + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + ism_imp[n] = st_ivas->hIsmMetaData[n]->ism_imp; + } + + brate_limit_flag = calculate_brate_limit_flag( ism_imp, st_ivas->nchan_ism ); + + ism_total_brate_ref = 0; + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + ism_total_brate_ref += st_ivas->hSCE[n]->element_brate; + } + + bits_ism = (int16_t) ( ism_total_brate_ref / FRAMES_PER_SEC ); + set_s( bits_element, bits_ism / st_ivas->nchan_ism, st_ivas->nchan_ism ); + bits_element[st_ivas->nchan_ism - 1] += bits_ism % st_ivas->nchan_ism; + bitbudget_to_brate( bits_element, element_brate, st_ivas->nchan_ism ); + + *ism_total_brate = 0; + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + st_ivas->hSCE[n]->element_brate = element_brate[n]; + + *ism_total_brate += ivas_interformat_brate( ISM_MASA_MODE_DISC, st_ivas->nchan_ism, st_ivas->hSCE[n]->element_brate, st_ivas->hIsmMetaData[n]->ism_imp, brate_limit_flag ); + + if ( ism_imp[n] > 1 && st_ivas->flag_omasa_brate == 1 && brate_limit_flag >= 0 ) + { + *ism_total_brate -= ADJUST_ISM_BRATE_NEG; + } + + if ( brate_limit_flag == -1 && ism_imp[n] >= 1 && st_ivas->nchan_ism >= 3 && ( ism_total_brate_ref - *ism_total_brate > IVAS_48k ) ) + { + *ism_total_brate += ADJUST_ISM_BRATE_POS; + } + } + st_ivas->hCPE[0]->brate_surplus = ism_total_brate_ref - *ism_total_brate; + + /* 'st->total_brate' is set in ivas_ism_config */ + } + else + { + st_ivas->hCPE[0]->brate_surplus = 0; + } + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_ism_metadata_dec() + * + * decode ISM metadata in OMASA format + *--------------------------------------------------------------------------*/ + +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 */ +) +{ + int16_t n, block; + int16_t azimuth_ism, elevation_ism, meta_write_index; + ivas_error error; + + /* set ISM parameters */ + *nchan_ism = st_ivas->nchan_ism; + *nchan_transport_ism = st_ivas->nchan_ism; + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + *nchan_ism = 1; + *nchan_transport_ism = 1; + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + *nchan_ism = 0; + *nchan_transport_ism = 1; + } + + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* decode ISM metadata */ + if ( ( error = ivas_ism_metadata_dec( ism_total_brate, *nchan_ism, nchan_transport_ism, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->bfi, + nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt, + st_ivas->hSCE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->hDirAC != NULL ) + { + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + azimuth_ism = (int16_t) ( st_ivas->hIsmMetaData[n]->azimuth + 0.5f ); + elevation_ism = (int16_t) ( st_ivas->hIsmMetaData[n]->elevation + 0.5f ); + + for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + { + meta_write_index = ( dirac_bs_md_write_idx + block ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + st_ivas->hMasaIsmData->azimuth_ism[n][meta_write_index] = azimuth_ism; + st_ivas->hMasaIsmData->elevation_ism[n][meta_write_index] = elevation_ism; + } + } + } + else /* ISM_MASA_MODE_MASA_ONE_OBJ */ + { + azimuth_ism = (int16_t) ( st_ivas->hIsmMetaData[0]->azimuth + 0.5f ); + elevation_ism = (int16_t) ( st_ivas->hIsmMetaData[0]->elevation + 0.5f ); + + for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + { + meta_write_index = ( dirac_bs_md_write_idx + block ) % st_ivas->hSpatParamRendCom->dirac_md_buffer_length; + st_ivas->hMasaIsmData->azimuth_separated_ism[meta_write_index] = azimuth_ism; + st_ivas->hMasaIsmData->elevation_separated_ism[meta_write_index] = elevation_ism; + } + } + } + } + + return IVAS_ERR_OK; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_dirac_rend() + * + * Rendering in OMASA format + *--------------------------------------------------------------------------*/ + +void ivas_omasa_dirac_rend( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[], /* o : output synthesis signal */ + const int16_t output_frame /* i : output frame length per channel */ +) +{ + int16_t n, dirac_read_idx; + float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + mvr2r( output[2], data_separated_objects[0], output_frame ); + } + else + { + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + mvr2r( output[n + 2], data_separated_objects[n], output_frame ); + } + } + + dirac_read_idx = st_ivas->hSpatParamRendCom->dirac_read_idx; + + ivas_dirac_dec( st_ivas, output, st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); + + st_ivas->hSpatParamRendCom->dirac_read_idx = dirac_read_idx; /* Original read index is needed for the next function which will update it again */ + + ivas_omasa_separate_object_render( st_ivas, data_separated_objects, output, output_frame ); + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_dirac_rend_jbm() + * + * Rendering in OMASA format for JBM + *--------------------------------------------------------------------------*/ + +void ivas_omasa_dirac_rend_jbm( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nSamplesAsked, /* i : number of samples requested */ + uint16_t *nSamplesRendered, /* o : number of samples rendered */ + uint16_t *nSamplesAvailable, /* o : number of samples still to render */ + const int16_t nchan_transport, /* i : number of transport channels */ + float *output_f[] /* o : rendered time signal */ +) +{ + int16_t subframes_rendered; + int16_t slots_rendered; + + subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; + + ivas_dirac_dec_render( st_ivas, nchan_transport, nSamplesAsked, nSamplesRendered, nSamplesAvailable, output_f ); + + ivas_omasa_separate_object_render_jbm( st_ivas, *nSamplesRendered, output_f, subframes_rendered, slots_rendered ); + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_dirac_td_binaural() + * + * Binaural rendering in OMASA format + *--------------------------------------------------------------------------*/ + +ivas_error ivas_omasa_dirac_td_binaural( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[], /* o : output synthesis signal */ + const int16_t output_frame /* i : output frame length per channel */ +) +{ + int16_t n; + float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; + float gain = OMASA_TDREND_MATCHING_GAIN; + ivas_error error; + float *p_sepobj[MAX_NUM_OBJECTS]; + + for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) + { + p_sepobj[n] = &data_separated_objects[n][0]; + } + + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + mvr2r( output[2 + n], data_separated_objects[n], output_frame ); + v_multc( data_separated_objects[n], gain, data_separated_objects[n], output_frame ); + } + + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + delay_signal( data_separated_objects[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); + } + + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, output, st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); + + if ( ( error = ivas_td_binaural_renderer( st_ivas, p_sepobj, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + v_add( output[n], p_sepobj[n], output[n], output_frame ); + } + + return IVAS_ERR_OK; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_dirac_td_binaural_render() + * + * Binaural rendering in OMASA format for JBM + *--------------------------------------------------------------------------*/ + +ivas_error ivas_omasa_dirac_td_binaural_jbm( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const uint16_t nSamplesAsked, /* i : number of samples requested */ + uint16_t *nSamplesRendered, /* o : number of samples rendered */ + uint16_t *nSamplesAvailable, /* o : number of samples still to render */ + const int16_t nchan_transport, /* i : number of transport channels */ + float *output_f[] /* o : rendered time signal */ +) +{ + int16_t n; + float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; + float gain = OMASA_TDREND_MATCHING_GAIN; + ivas_error error; + float *p_sepobj[MAX_NUM_OBJECTS]; + float *tc_local[MAX_TRANSPORT_CHANNELS]; + + for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) + { + p_sepobj[n] = &data_separated_objects[n][0]; + } + + /* 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 ) + { + int16_t tcBufferSize; + + tcBufferSize = st_ivas->hSpatParamRendCom->num_slots * st_ivas->hSpatParamRendCom->slot_size; + + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + tc_local[n] = st_ivas->hTcBuffer->tc[n + 2]; + v_multc( tc_local[n], gain, tc_local[n], tcBufferSize ); + delay_signal( tc_local[n], tcBufferSize, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); + } + } + + ivas_dirac_dec_binaural_render( st_ivas, nSamplesAsked, nSamplesRendered, nSamplesAvailable, nchan_transport, output_f ); + + if ( ( error = ivas_td_binaural_renderer_sf( st_ivas, p_sepobj, *nSamplesRendered ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + v_add( output_f[n], p_sepobj[n], output_f[n], *nSamplesRendered ); + } + + return IVAS_ERR_OK; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_rearrange_channels() + * + * in case of external rendering, rearrange the channels order + *--------------------------------------------------------------------------*/ + +void ivas_omasa_rearrange_channels( + float *output[], /* o : output synthesis signal */ + const int16_t nchan_transport_ism, /* o : number of ISM TCs */ + const int16_t output_frame /* i : output frame length per channel */ +) +{ + int16_t n; + float tmp_buff[CPE_CHANNELS][L_FRAME48k]; + + mvr2r( output[0], tmp_buff[0], output_frame ); + mvr2r( output[1], tmp_buff[1], output_frame ); + + for ( n = 0; n < nchan_transport_ism; n++ ) + { + mvr2r( output[CPE_CHANNELS + n], output[n], output_frame ); + } + mvr2r( tmp_buff[0], output[n], output_frame ); + mvr2r( tmp_buff[1], output[++n], output_frame ); + + return; +} diff --git a/lib_dec/ivas_osba_dec.c b/lib_dec/ivas_osba_dec.c new file mode 100644 index 0000000000000000000000000000000000000000..d162ad6c632f6765daf066b1619aa919b953f2a6 --- /dev/null +++ b/lib_dec/ivas_osba_dec.c @@ -0,0 +1,364 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include "ivas_cnst.h" +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_prot_rend.h" +#include "ivas_rom_com.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * ivas_masa_ism_data_open() + * + * Allocate and initialize MASA_ISM rendering handle + *-------------------------------------------------------------------*/ + +ivas_error ivas_masa_ism_data_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder handle */ +) +{ + MASA_ISM_DATA_HANDLE hMasaIsmData; + + if ( ( hMasaIsmData = (MASA_ISM_DATA_HANDLE) malloc( sizeof( MASA_ISM_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA ISM data\n" ) ); + } + hMasaIsmData->delayBuffer = NULL; + + st_ivas->hMasaIsmData = hMasaIsmData; + + return IVAS_ERR_OK; +} +/*-------------------------------------------------------------------* + * ivas_masa_ism_data_close() + * + * Deallocate MASA_ISM rendering handle + *-------------------------------------------------------------------*/ + +void ivas_masa_ism_data_close( + MASA_ISM_DATA_HANDLE *hMasaIsmData /* i/o: MASA_ISM rendering handle */ +) +{ + int16_t i; + + if ( hMasaIsmData == NULL || *hMasaIsmData == NULL ) + { + return; + } + + if ( ( *hMasaIsmData )->delayBuffer != NULL ) + { + for ( i = 0; i < ( *hMasaIsmData )->delayBuffer_nchan; i++ ) + { + free( ( *hMasaIsmData )->delayBuffer[i] ); + } + free( ( *hMasaIsmData )->delayBuffer ); + ( *hMasaIsmData )->delayBuffer = NULL; + } + + free( *hMasaIsmData ); + *hMasaIsmData = NULL; + + return; +} + +/*-------------------------------------------------------------------------* + * ivas_sba_ism_separate_object_renderer_open() + * + * Open structures, reserve memory, and init values. + *-------------------------------------------------------------------------*/ + +ivas_error ivas_sba_ism_separate_object_renderer_open( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + int16_t i; + + st_ivas->hMasaIsmData->delayBuffer_nchan = st_ivas->nchan_ism; + st_ivas->hMasaIsmData->delayBuffer_size = (int16_t) ( ( st_ivas->hDecoderConfig->output_Fs / 50 ) / MAX_PARAM_SPATIAL_SUBFRAMES ); + + if ( ( st_ivas->hMasaIsmData->delayBuffer = (float **) malloc( st_ivas->hMasaIsmData->delayBuffer_nchan * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); + } + + for ( i = 0; i < st_ivas->hMasaIsmData->delayBuffer_nchan; i++ ) + { + if ( ( st_ivas->hMasaIsmData->delayBuffer[i] = (float *) malloc( st_ivas->hMasaIsmData->delayBuffer_size * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for MASA ISM delay buffer \n" ) ); + } + set_zero( st_ivas->hMasaIsmData->delayBuffer[i], st_ivas->hMasaIsmData->delayBuffer_size ); + } + + + return IVAS_ERR_OK; +} + + +/*--------------------------------------------------------------------------* + * ivas_osba_dirac_td_binaural() + * + * Binaural rendering in OMASA format + *--------------------------------------------------------------------------*/ + +ivas_error ivas_osba_dirac_td_binaural( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[], /* o : output synthesis signal */ + const int16_t output_frame /* i : output frame length per channel */ +) +{ + int16_t n; + float data_separated_objects[MAX_NUM_OBJECTS][L_FRAME48k]; + + ivas_error error; + float *p_sepobj[MAX_NUM_OBJECTS]; + int16_t channel_offset; + + for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) + { + p_sepobj[n] = &data_separated_objects[n][0]; + } + + channel_offset = st_ivas->nchan_ism; + + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + mvr2r( output[n], data_separated_objects[n], output_frame ); + } + +#ifdef OSBA_SPLIT_RENDERING + if ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && + st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#endif + { + for ( n = 0; n < st_ivas->nchan_ism; n++ ) + { + delay_signal( data_separated_objects[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); + } + } + + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) + { + if ( ( error = ivas_sba_upmixer_renderer( st_ivas, &output[channel_offset], output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + ivas_dirac_dec_binaural( st_ivas, st_ivas->hCombinedOrientationData, &output[channel_offset], st_ivas->nchan_transport +#ifdef API_5MS + , + MAX_PARAM_SPATIAL_SUBFRAMES +#endif + ); + } + +#ifdef DEBUG_OSBA + { + for ( int16_t t = 0; t < output_frame; t++ ) + { + for ( int16_t c = 0; c < BINAURAL_CHANNELS; c++ ) + { + int16_t val = (int16_t) ( output[channel_offset + c][t] + 0.5f ); + dbgwrite( &val, sizeof( int16_t ), 1, 1, "./res/sba_fast_conv_out.raw" ); + } + } + } +#endif +#ifdef OSBA_SPLIT_RENDERING + if ( ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + int16_t slot_idx, num_cldfb_bands, b, nchan_transport_orig; + float Cldfb_RealBuffer[CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer[CLDFB_NO_CHANNELS_MAX]; + + num_cldfb_bands = st_ivas->hSplitBinRend.splitrend.hCldfbHandles->cldfbAna[0]->no_channels; + nchan_transport_orig = st_ivas->nchan_transport; + st_ivas->nchan_transport = st_ivas->nchan_ism; + ObjRenderIvasFrame_splitBinaural( st_ivas, output, output_frame ); + st_ivas->nchan_transport = nchan_transport_orig; + + for ( n = 0; n < st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses * BINAURAL_CHANNELS; ++n ) + { + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + cldfbAnalysis_ts( &( output[n][num_cldfb_bands * slot_idx] ), Cldfb_RealBuffer, Cldfb_ImagBuffer, num_cldfb_bands, st_ivas->hSplitBinRend.splitrend.hCldfbHandles->cldfbAna[n] ); + + for ( b = 0; b < num_cldfb_bands; b++ ) + { + st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx][b] = + ( 0.5f * st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[n][slot_idx][b] ) + + ( 0.5f * Cldfb_RealBuffer[b] ); + + st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx][b] = + ( 0.5f * st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[n][slot_idx][b] ) + + ( 0.5f * Cldfb_ImagBuffer[b] ); + } + } + } + } + else + { +#endif + if ( ( error = ivas_td_binaural_renderer( st_ivas, p_sepobj, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + +#ifdef DEBUG_OSBA + for ( int16_t t = 0; t < output_frame; t++ ) + { + for ( int16_t c = 0; c < BINAURAL_CHANNELS; c++ ) + { + int16_t val = (int16_t) ( p_sepobj[c][t] + 0.5f ); + dbgwrite( &val, sizeof( int16_t ), 1, 1, "./res/ism_td_bin_out.raw" ); + } + } +#endif + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + int16_t i; + for ( i = 0; i < output_frame; i++ ) + { + output[n][i] = 0.5f * output[channel_offset + n][i] + 0.5f * p_sepobj[n][i]; + } + } +#ifdef OSBA_SPLIT_RENDERING + } +#endif + + return IVAS_ERR_OK; +} + + +ivas_error ivas_osba_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 nb_bits_metadata[] /* o : number of ISM metadata bits */ +) +{ + ivas_error error; + int16_t nchan_transport_ism; + + /* set ISM parameters */ + nchan_transport_ism = st_ivas->nchan_ism; + *nchan_ism = st_ivas->nchan_ism; + + + /* decode ISM metadata */ + if ( ( error = ivas_ism_metadata_dec( ism_total_brate, *nchan_ism, &nchan_transport_ism, st_ivas->hIsmMetaData, NULL, st_ivas->bfi, + nb_bits_metadata, st_ivas->ism_mode, st_ivas->hISMDTX, NULL, &st_ivas->ism_extmeta_active, &st_ivas->ism_extmeta_cnt, st_ivas->hCPE[0]->hCoreCoder[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +/*-------------------------------------------------------------------------* + * ivas_osba_render() + * + * Object + SBA rendering process. + *-------------------------------------------------------------------------*/ + +ivas_error ivas_osba_render( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output_f[], /* i/o: core-coder transport channels/object output */ + const int16_t output_frame /* i : output frame length per channel */ +) +{ + float tmp_ism_out[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + float *p_tmp_ism_out[MAX_OUTPUT_CHANNELS]; + int16_t n, nchan_out, nchan_ism, sba_ch_idx; + ivas_error error; + + nchan_out = st_ivas->hDecoderConfig->nchan_out; + nchan_ism = st_ivas->nchan_ism; + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + sba_ch_idx = st_ivas->nchan_ism; + } + else + { + sba_ch_idx = 0; + } + + for ( n = 0; n < nchan_out; n++ ) + { + p_tmp_ism_out[n] = &tmp_ism_out[n][0]; + } + + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + for ( n = 0; n < nchan_ism; n++ ) + { + mvr2r( output_f[n], tmp_ism_out[n], output_frame ); + delay_signal( tmp_ism_out[n], output_frame, st_ivas->hMasaIsmData->delayBuffer[n], st_ivas->hMasaIsmData->delayBuffer_size ); + } + + if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI ) + { + ivas_ism2sba( p_tmp_ism_out, st_ivas->hIsmRendererData, st_ivas->hIsmMetaData, st_ivas->nchan_ism, output_frame, st_ivas->hIntSetup.ambisonics_order ); + } + else + { + ivas_ism_render( st_ivas, p_tmp_ism_out, output_frame ); + } + } + + if ( ( error = ivas_sba_upmixer_renderer( st_ivas, &output_f[sba_ch_idx], output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + for ( n = 0; n < nchan_out; n++ ) + { + v_add( output_f[n + nchan_ism], tmp_ism_out[n], output_f[n], output_frame ); + v_multc( output_f[n], 0.5f, output_f[n], output_frame ); + } + } + + return IVAS_ERR_OK; +} diff --git a/lib_dec/ivas_out_setup_conversion.c b/lib_dec/ivas_out_setup_conversion.c index 153764c98a97457fc5c600c42e30e26d82b04991..f03bb98e316c6cf67820f2c9384e084698878c54 100644 --- a/lib_dec/ivas_out_setup_conversion.c +++ b/lib_dec/ivas_out_setup_conversion.c @@ -559,8 +559,8 @@ void ivas_ls_setup_conversion( *-------------------------------------------------------------------------*/ void ivas_ls_setup_conversion_process_mdct( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output[][L_FRAME48k] /* i/o: output synthesis signal */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[] /* i/o: output synthesis signal */ ) { /* Declaration of all required variables */ @@ -592,8 +592,8 @@ void ivas_ls_setup_conversion_process_mdct( /* Assign output pointer to variable x */ for ( chInIdx = 0; chInIdx < inChannels; chInIdx++ ) { - x[chInIdx][0] = &output[chInIdx][0]; - x[chInIdx][1] = &output[chInIdx][0] + L_FRAME48k / 2; + x[chInIdx][0] = output[chInIdx]; + x[chInIdx][1] = output[chInIdx] + ( L_FRAME48k / 2 ); } /* Assign all the declared handles*/ diff --git a/lib_dec/ivas_output_config.c b/lib_dec/ivas_output_config.c index 16787b63cdd383b24bb8b3c93fe50513e1bca5d3..10491211c09c13a1fa5a58763c51687aa507f5be 100644 --- a/lib_dec/ivas_output_config.c +++ b/lib_dec/ivas_output_config.c @@ -34,6 +34,9 @@ #include "options.h" #include "ivas_cnst.h" #include "ivas_prot.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_prot_rend.h" +#endif #include "ivas_stat_dec.h" #ifdef DEBUGGING #include "debug.h" @@ -76,13 +79,21 @@ void ivas_renderer_select( st_ivas->hCombinedOrientationData->shd_rot_max_order = -1; } - if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { if ( st_ivas->ivas_format == ISM_FORMAT ) { if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { - if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( output_config == AUDIO_CONFIG_BINAURAL +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { *renderer_type = RENDERER_BINAURAL_PARAMETRIC; } @@ -93,7 +104,11 @@ void ivas_renderer_select( } else /* ISM_MODE_DISC */ { - if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { #ifdef DEBUGGING if ( st_ivas->hDecoderConfig->force_rend == FORCE_CLDFB_RENDERER ) @@ -104,11 +119,11 @@ void ivas_renderer_select( else { *renderer_type = RENDERER_BINAURAL_OBJECTS_TD; - *internal_config = AUDIO_CONFIG_BINAURAL; + *internal_config = output_config; } #else *renderer_type = RENDERER_BINAURAL_OBJECTS_TD; - *internal_config = AUDIO_CONFIG_BINAURAL; + *internal_config = output_config; #endif } else @@ -124,10 +139,14 @@ void ivas_renderer_select( } } } - else if ( st_ivas->ivas_format == MASA_FORMAT || ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->nchan_transport <= 2 ) ) + else if ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT || ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && st_ivas->nchan_transport <= 2 ) ) { *internal_config = output_config; - if ( output_config == AUDIO_CONFIG_BINAURAL ) + if ( output_config == AUDIO_CONFIG_BINAURAL +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { *renderer_type = RENDERER_BINAURAL_PARAMETRIC; } @@ -136,10 +155,14 @@ void ivas_renderer_select( *renderer_type = RENDERER_BINAURAL_PARAMETRIC_ROOM; } } - else if ( st_ivas->ivas_format == SBA_FORMAT ) + else if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { *internal_config = AUDIO_CONFIG_HOA3; - if ( output_config == AUDIO_CONFIG_BINAURAL ) + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { *renderer_type = RENDERER_BINAURAL_FASTCONV; } @@ -175,7 +198,12 @@ void ivas_renderer_select( if ( st_ivas->mc_mode == MC_MODE_MCMASA ) { *internal_config = output_config; - if ( output_config == AUDIO_CONFIG_BINAURAL ) + + if ( output_config == AUDIO_CONFIG_BINAURAL +#ifdef SPLIT_REND_WITH_HEAD_ROT + || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { *renderer_type = RENDERER_BINAURAL_PARAMETRIC; } @@ -187,7 +215,12 @@ void ivas_renderer_select( else { *internal_config = transport_config; - if ( output_config == AUDIO_CONFIG_BINAURAL ) + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM || output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) +#else + if ( output_config == AUDIO_CONFIG_BINAURAL || output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#endif { #ifdef DEBUGGING if ( ( ( ( st_ivas->transport_config == AUDIO_CONFIG_5_1 || st_ivas->transport_config == AUDIO_CONFIG_7_1 ) && ( st_ivas->hDecoderConfig->Opt_Headrotation || st_ivas->hDecoderConfig->Opt_ExternalOrientation ) ) || ( st_ivas->hDecoderConfig->force_rend == FORCE_TD_RENDERER ) ) && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && !( st_ivas->hDecoderConfig->force_rend == FORCE_CLDFB_RENDERER ) ) @@ -199,7 +232,7 @@ void ivas_renderer_select( } else { - if ( ( st_ivas->mc_mode == MC_MODE_MCT ) || ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) + if ( st_ivas->mc_mode == MC_MODE_MCT ) { *renderer_type = RENDERER_BINAURAL_MIXER_CONV; } @@ -208,7 +241,7 @@ void ivas_renderer_select( *renderer_type = RENDERER_BINAURAL_FASTCONV; } -#ifdef DEBUGGING +#if 0 // def DEBUGGING /*temp disabling this as paramMC crashes with CREND*/ if ( st_ivas->hRenderConfig->renderer_type_override == RENDER_TYPE_OVERRIDE_CREND ) { *renderer_type = RENDERER_BINAURAL_MIXER_CONV; @@ -223,11 +256,15 @@ void ivas_renderer_select( /* force HOA3 domain for rotation*/ *internal_config = AUDIO_CONFIG_HOA3; } + if ( ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && ( *renderer_type == RENDERER_BINAURAL_FASTCONV ) ) + { + *internal_config = AUDIO_CONFIG_7_1_4; + } } } else { - if ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) + if ( st_ivas->mc_mode == MC_MODE_MCT ) { *renderer_type = RENDERER_BINAURAL_MIXER_CONV_ROOM; } @@ -245,6 +282,10 @@ void ivas_renderer_select( *renderer_type = RENDERER_BINAURAL_FASTCONV_ROOM; } #endif + if ( ( st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && ( *renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) ) + { + *internal_config = AUDIO_CONFIG_5_1_2; + } } } } @@ -311,10 +352,13 @@ void ivas_renderer_select( } } } - else if ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == SBA_FORMAT ) + else if ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { + IVAS_FORMAT ivas_format; *renderer_type = RENDERER_DIRAC; - if ( st_ivas->ivas_format == SBA_FORMAT && + ivas_format = ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_NONE ) ? SBA_FORMAT : st_ivas->ivas_format; /* treat ISM_SBA_MODE_NONE just like SBA_FORMAT */ + + if ( ivas_format == SBA_FORMAT && ( output_config != AUDIO_CONFIG_5_1 && output_config != AUDIO_CONFIG_5_1_2 && output_config != AUDIO_CONFIG_5_1_4 && output_config != AUDIO_CONFIG_7_1 && output_config != AUDIO_CONFIG_7_1_4 && output_config != AUDIO_CONFIG_LS_CUSTOM && output_config != AUDIO_CONFIG_MONO && output_config != AUDIO_CONFIG_STEREO ) ) { if ( output_config == AUDIO_CONFIG_HOA2 || output_config == AUDIO_CONFIG_FOA ) @@ -331,27 +375,64 @@ void ivas_renderer_select( } st_ivas->renderer_type = RENDERER_SBA_LINEAR_DEC; } - else if ( ( st_ivas->ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_MONO && st_ivas->nchan_transport == 1 ) || - ( st_ivas->ivas_format == SBA_FORMAT && ( output_config == AUDIO_CONFIG_STEREO || output_config == AUDIO_CONFIG_MONO ) ) ) + else if ( ( ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_MONO && st_ivas->nchan_transport == 1 ) || + ( ivas_format == SBA_FORMAT && ( output_config == AUDIO_CONFIG_STEREO || output_config == AUDIO_CONFIG_MONO ) ) ) { *renderer_type = RENDERER_DISABLE; } - else if ( ( st_ivas->ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_MONO && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE && st_ivas->hDecoderConfig->ivas_total_brate > IVAS_SID_5k2 ) ) + else if ( ( ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_MONO && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE && st_ivas->hDecoderConfig->ivas_total_brate > IVAS_SID_5k2 ) ) { *renderer_type = RENDERER_DISABLE; } - else if ( st_ivas->ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_STEREO ) + else if ( ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_STEREO ) { *renderer_type = RENDERER_STEREO_PARAMETRIC; } - else if ( st_ivas->ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_EXTERNAL ) + else if ( ivas_format == MASA_FORMAT && output_config == AUDIO_CONFIG_EXTERNAL ) { *renderer_type = RENDERER_DISABLE; } - else if ( st_ivas->ivas_format == SBA_FORMAT && output_config == AUDIO_CONFIG_MONO ) + else if ( ivas_format == SBA_FORMAT && output_config == AUDIO_CONFIG_MONO ) { *renderer_type = RENDERER_SBA_LINEAR_DEC; } + else if ( ivas_format == SBA_ISM_FORMAT && output_config == AUDIO_CONFIG_STEREO ) + { + *renderer_type = RENDERER_OSBA_STEREO; + } + else if ( ivas_format == SBA_ISM_FORMAT && output_config == AUDIO_CONFIG_MONO ) + { + *renderer_type = RENDERER_MONO_DOWNMIX; + } + else if ( ivas_format == SBA_ISM_FORMAT && ( output_config == AUDIO_CONFIG_FOA || output_config == AUDIO_CONFIG_HOA2 || output_config == AUDIO_CONFIG_HOA3 ) ) + { + *renderer_type = RENDERER_OSBA_AMBI; + } + else if ( ivas_format == SBA_ISM_FORMAT && ( output_config == AUDIO_CONFIG_5_1 || output_config == AUDIO_CONFIG_5_1_2 || output_config == AUDIO_CONFIG_5_1_4 || output_config == AUDIO_CONFIG_7_1 || output_config == AUDIO_CONFIG_7_1_4 || output_config == AUDIO_CONFIG_LS_CUSTOM ) ) + { + *renderer_type = RENDERER_OSBA_LS; + } + else if ( ivas_format == SBA_ISM_FORMAT && output_config == AUDIO_CONFIG_EXTERNAL ) + { + *renderer_type = RENDERER_SBA_LINEAR_DEC; + } + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + *renderer_type = RENDERER_DIRAC; + + if ( output_config == AUDIO_CONFIG_MONO ) + { + *renderer_type = RENDERER_MONO_DOWNMIX; + } + else if ( output_config == AUDIO_CONFIG_STEREO ) + { + *renderer_type = RENDERER_STEREO_PARAMETRIC; + } + else if ( output_config == AUDIO_CONFIG_EXTERNAL ) + { + *renderer_type = RENDERER_DISABLE; + } } else if ( st_ivas->ivas_format == MC_FORMAT ) { diff --git a/lib_dec/ivas_pca_dec.c b/lib_dec/ivas_pca_dec.c index e73b3aa1d61f6025322a0913b7b8ea964680ab23..8dbbbded046491db1904bda01143ddc398e7ab9a 100644 --- a/lib_dec/ivas_pca_dec.c +++ b/lib_dec/ivas_pca_dec.c @@ -92,7 +92,7 @@ static void pca_dec_reset_mem_eigvec( static void pca_inv_transform_sub( float *eigVec, - float transformed_data[][L_FRAME48k], /* i : input/transformed audio channels */ + float *transformed_data[], /* i : input/transformed audio channels */ const int16_t start, const int16_t len, const int16_t n_channels ) @@ -129,7 +129,7 @@ static void pca_dec_inv_transform( float *qr, const int16_t n_samples, const int16_t n_channels, - float decoded_data[][L_FRAME48k] ) + float *decoded_data[] ) { int16_t j; int16_t slot_len; @@ -224,7 +224,7 @@ void ivas_pca_dec( 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[][L_FRAME48k] /* o : output audio channels */ + float *pcm_out[] /* o : output audio channels */ ) { float ql[IVAS_PCA_INTERP], qr[IVAS_PCA_INTERP]; diff --git a/lib_dec/ivas_post_proc.c b/lib_dec/ivas_post_proc.c old mode 100755 new mode 100644 index 7f1c84983b3834b6948e06c0af71cd88341cc0d0..a8089c7e23808aabb8aa9bc9431c716d2cee8366 --- a/lib_dec/ivas_post_proc.c +++ b/lib_dec/ivas_post_proc.c @@ -53,13 +53,13 @@ *-------------------------------------------------------------------------*/ 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][L_FRAME48k], /* 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 */ + 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 */ ) { #ifndef DEBUG_STEREO_DFT_NOCORE @@ -208,11 +208,7 @@ void stereo_dft_dec_core_switching( lerp( hCPE->input_mem_BPF[0], hCPE->input_mem_BPF[0], NS2SA( st->L_frame * FRAMES_PER_SEC, STEREO_DFT32MS_OVL_NS ), NS2SA( st->last_L_frame * FRAMES_PER_SEC, STEREO_DFT32MS_OVL_NS ) ); } -#ifdef FIX_558_PLC_DISCONT if ( st->prev_bfi && !( st->last_core_bfi == ACELP_CORE && st->last_con_tcx == 1 ) ) -#else - if ( st->prev_bfi ) -#endif { /* last_core needed for correctly decoding ACELP->TCX/HQ switching frames in ivas_core_dec(). In the following steps the decoder needs to consider if the core was changed due to a lost frame to apply the correct transition */ @@ -230,10 +226,21 @@ void stereo_dft_dec_core_switching( mvr2r( &output[st->L_frame - NS2SA( st->L_frame * FRAMES_PER_SEC, STEREO_DFT32MS_OVL_NS )], hCPE->hStereoDft->buff_LBTCX_mem, NS2SA( st->L_frame * FRAMES_PER_SEC, STEREO_DFT32MS_OVL_NS ) ); /* BPF */ +#ifdef CR_FIX_586_BPF_DFT_MEM + if ( st->p_bpf_noise_buf && st->core != HQ_CORE ) +#else if ( st->p_bpf_noise_buf ) +#endif { stereo_dft_dec_analyze( hCPE, st->p_bpf_noise_buf, DFT, 0, st->L_frame, output_frame, DFT_STEREO_DEC_ANA_BPF, 2, 0 ); } +#ifdef CR_FIX_586_BPF_DFT_MEM + /* st->p_bpf_noise_buf not updated for HQ core -> skip analysis and set input memory to zero */ + else if ( st->p_bpf_noise_buf && st->core == HQ_CORE ) + { + set_zero( hCPE->input_mem_BPF[0], STEREO_DFT32MS_OVL_16k ); + } +#endif /* TCX */ stereo_dft_dec_analyze( hCPE, synth, DFT, 0, L_frameTCX, output_frame, DFT_STEREO_DEC_ANA_FB, 0, 0 ); diff --git a/lib_dec/ivas_qmetadata_dec.c b/lib_dec/ivas_qmetadata_dec.c index 9e2d01f4dd40a6e0d3e9c24a1ba670e84a35da66..d5ef4c81c0f93a3567282ffc5342e8e8a625cb82 100644 --- a/lib_dec/ivas_qmetadata_dec.c +++ b/lib_dec/ivas_qmetadata_dec.c @@ -55,7 +55,6 @@ static int16_t ivas_qmetadata_raw_decode_dir( IVAS_QDIRECTION *q_direction, uint static uint16_t ivas_qmetadata_DecodeQuasiUniform( const uint16_t *bitstream, int16_t *index, const uint16_t alphabet_size ); -static int16_t ivas_qmetadata_DecodeExtendedGR( uint16_t *bitstream, int16_t *index, const int16_t alph_size, const int16_t gr_param ); static int16_t ivas_qmetadata_ReorderElevationDecoded( const int16_t elev_dist, const int16_t elev_avg, const int16_t elev_alph ); @@ -101,6 +100,8 @@ static int16_t read_surround_coherence_hr( uint16_t *bitstream, int16_t *p_bit_p static int16_t read_coherence_data_hr_512( uint16_t *bitstream, int16_t *p_bit_pos, IVAS_QMETADATA *hQMetaData, const int16_t idx_dir, const int16_t nbits_coh ); +static void read_stream_dct_coeffs_omasa( int16_t *q_idx, float *q_dct_data, const int16_t len_stream, uint16_t *bit_stream, int16_t *index, const int16_t first_line ); + /*-----------------------------------------------------------------------* * Global function definitions @@ -114,10 +115,10 @@ static int16_t read_coherence_data_hr_512( uint16_t *bitstream, int16_t *p_bit_p /*! r: number of bits read */ int16_t ivas_qmetadata_dec_decode( - IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: hQMetaData 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 */ + IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: hQMetaData 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 */ ) { int16_t d, b, m; @@ -607,6 +608,7 @@ int16_t ivas_qmetadata_dec_decode( bits_dir_target += bits_dir_raw; bits_dir_used += bits_dir; + #ifdef DEBUG_MODE_QMETADATA fprintf( pF, "frame %d: diff %d coh %d surcoh %d ", frame, bits_diff, bits_coherence, bits_sur_coherence ); fprintf( pF, "dir %d %d,%d,%d\n", ec_flag, start_index_0 - *index, total_bits_1dir, bits_dir_raw ); @@ -908,37 +910,58 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512( } if ( hQMetaData->no_directions == 2 ) { -#ifdef FIX_566_2DIR_MASA_384K float ratioSum; - for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ ) + if ( bits_sph_idx == 16 ) { - for ( m = 0; m < hQMetaData->q_direction[1].cfg.nblocks; m++ ) + for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ ) { - hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - diffuseness_reconstructions_hr[hQMetaData->q_direction[1].band_data[b].energy_ratio_index[m]]; + for ( m = 0; m < hQMetaData->q_direction[1].cfg.nblocks; m++ ) + { + hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - diffuseness_reconstructions_hr[hQMetaData->q_direction[1].band_data[b].energy_ratio_index[m]]; - /* Scale energy ratios that sum to over one */ - ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m]; + /* Scale energy ratios that sum to over one */ + ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m]; - if ( ratioSum > 1.0f ) - { - hQMetaData->q_direction[0].band_data[b].energy_ratio[m] /= ratioSum; - hQMetaData->q_direction[1].band_data[b].energy_ratio[m] /= ratioSum; + if ( ratioSum > 1.0f ) + { + hQMetaData->q_direction[0].band_data[b].energy_ratio[m] /= ratioSum; + hQMetaData->q_direction[1].band_data[b].energy_ratio[m] /= ratioSum; + } } } } -#else - for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ ) + else { - for ( m = 0; m < hQMetaData->q_direction[1].cfg.nblocks; m++ ) + int16_t pos_2dir_band[MASA_MAXIMUM_CODING_SUBBANDS]; + d = 0; + for ( b = hQMetaData->q_direction[0].cfg.start_band; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) + { + if ( hQMetaData->twoDirBands[b] == 1 ) + { + pos_2dir_band[d] = b; + d++; + } + else + { + pos_2dir_band[d] = 0; + } + } + for ( b = hQMetaData->q_direction[1].cfg.start_band; b < hQMetaData->q_direction[1].cfg.nbands; b++ ) { - hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - diffuseness_reconstructions_hr[hQMetaData->q_direction[1].band_data[b].energy_ratio_index[m]]; - if ( hQMetaData->q_direction[1].band_data[b].energy_ratio[m] > 1.0f - hQMetaData->q_direction[0].band_data[b].energy_ratio[m] ) + for ( m = 0; m < hQMetaData->q_direction[1].cfg.nblocks; m++ ) { - hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - hQMetaData->q_direction[0].band_data[b].energy_ratio[m]; + hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = 1.0f - diffuseness_reconstructions_hr[hQMetaData->q_direction[1].band_data[b].energy_ratio_index[m]]; + + ratioSum = hQMetaData->q_direction[0].band_data[pos_2dir_band[b]].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m]; + + if ( ratioSum > 1.0f ) + { + hQMetaData->q_direction[0].band_data[pos_2dir_band[b]].energy_ratio[m] /= ratioSum; + hQMetaData->q_direction[1].band_data[b].energy_ratio[m] /= ratioSum; + } } } } -#endif } if ( hQMetaData->no_directions == 2 ) @@ -1085,22 +1108,6 @@ int16_t ivas_qmetadata_dec_decode_hr_384_512( } } } - - /* Scale energy ratios that sum to over one */ - for ( b = 0; b < hQMetaData->q_direction[0].cfg.nbands; b++ ) - { - float ratioSum; - for ( m = 0; m < hQMetaData->q_direction[0].cfg.nblocks; m++ ) - { - ratioSum = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] + hQMetaData->q_direction[1].band_data[b].energy_ratio[m]; - - if ( ratioSum > 1.0f ) - { - hQMetaData->q_direction[0].band_data[b].energy_ratio[m] = hQMetaData->q_direction[0].band_data[b].energy_ratio[m] / ratioSum; - hQMetaData->q_direction[1].band_data[b].energy_ratio[m] = hQMetaData->q_direction[1].band_data[b].energy_ratio[m] / ratioSum; - } - } - } } #ifdef DEBUG_MODE_QMETADATA @@ -1181,9 +1188,7 @@ int16_t ivas_qmetadata_dec_sid_decode( float avg_direction_vector[3]; float direction_vector[3]; int16_t metadata_sid_bits; /* bits allocated to SID for metadata */ -#ifdef FIX_QMETA_SID_5k2 int16_t bits_delta, bits_dir; -#endif #ifdef DEBUG_MODE_QMETADATA static FILE *pF = NULL; static FILE *pF_azi = NULL; @@ -1202,23 +1207,17 @@ int16_t ivas_qmetadata_dec_sid_decode( if ( ivas_format == SBA_FORMAT ) { - /* TODO: still use old sid frame size to keep bitexactness */ - metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * 18 ) - 1; /* -1 for inactive mode header bit*/ + metadata_sid_bits = (int16_t) ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - 2 - SID_FORMAT_NBITS; /* -1 for inactive mode header bit*/ } else { -#ifdef FIX_QMETA_SID_5k2 metadata_sid_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; -#else - /* TODO: still use old sid frame size to keep bitexactness */ - metadata_sid_bits = ( 4400 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; -#endif } start_index = *index; /* read MASA SID descriptor */ - if ( ivas_format == MASA_FORMAT && nchan_transport == 2 ) /* corresponding to SID_MASA case; Todo: needs to be checked for SBA */ + if ( ivas_format == MASA_FORMAT && nchan_transport == 2 ) { b = bitstream[( *index )--]; if ( b ) @@ -1255,7 +1254,6 @@ int16_t ivas_qmetadata_dec_sid_decode( q_direction->not_in_2D = 1; } -#ifdef FIX_QMETA_SID_5k2 bits_dir = 0; if ( ivas_format != SBA_FORMAT ) { @@ -1318,7 +1316,6 @@ int16_t ivas_qmetadata_dec_sid_decode( } else { -#endif /* Decode diffuseness*/ for ( b = start_band; b < nbands; b++ ) @@ -1328,9 +1325,7 @@ int16_t ivas_qmetadata_dec_sid_decode( q_direction->band_data[b].bits_sph_idx[0] = bits_direction_masa[diffuseness_index[b]]; q_direction->band_data[b].azimuth_m_alphabet[0] = no_phi_masa[q_direction->band_data[b].bits_sph_idx[0] - 1][0]; } -#ifdef FIX_QMETA_SID_5k2 } -#endif for ( b = start_band; b < nbands; b++ ) { @@ -1376,14 +1371,10 @@ int16_t ivas_qmetadata_dec_sid_decode( { for ( b = start_band; b < nbands; b++ ) { -#ifdef FIX_QMETA_SID_5k2 if ( ivas_format == SBA_FORMAT ) { -#endif q_direction->band_data[b].azimuth_m_alphabet[0] = 1 << ( min( 5, q_direction->band_data[b].bits_sph_idx[0] ) ); -#ifdef FIX_QMETA_SID_5k2 } -#endif q_direction->band_data[b].azimuth_index[0] = ivas_qmetadata_DecodeQuasiUniform( bitstream, index, q_direction->band_data[b].azimuth_m_alphabet[0] ); q_direction->band_data[b].azimuth_index[0] = ivas_qmetadata_dereorder_generic( q_direction->band_data[b].azimuth_index[0] ) + ( q_direction->band_data[b].azimuth_m_alphabet[0] >> 1 ); @@ -1408,11 +1399,7 @@ int16_t ivas_qmetadata_dec_sid_decode( } } } - /* TODO: temporary hack to keep BE */ - if ( ivas_format != SBA_FORMAT ) - { - metadata_sid_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; - } + /*Read filling bits*/ while ( start_index - *index < metadata_sid_bits ) @@ -2325,7 +2312,7 @@ static uint16_t ivas_qmetadata_DecodeQuasiUniform( uint16_t tresh, value; #ifdef DEBUGGING - assert( ( alphabet_size >= 1 ) ); /* ToDo: fcs: to check if this additional conditon is really needed: && (alphabet_size <= (1U << 31) - 1));*/ + assert( ( alphabet_size >= 1 ) ); #endif bits = 30 - norm_l( alphabet_size ); /* bits = floor(log2(alphabet_size)) */ @@ -2356,7 +2343,8 @@ static uint16_t ivas_qmetadata_DecodeQuasiUniform( *------------------------------------------------------------------------*/ /*! r: Value decoded from the bitstream */ -static int16_t ivas_qmetadata_DecodeExtendedGR( +int16_t +ivas_qmetadata_DecodeExtendedGR( uint16_t *bitstream, /* i : pointer to the bitstream to read */ int16_t *index, /* i/o: position in the bitstream to start reading (gets updated with reading) */ const int16_t alph_size, /* i : size of the alphabet, used to calculate the number of bits needed */ @@ -3678,7 +3666,7 @@ static int16_t decode_fixed_rate_composed_index_coherence( /*-------------------------------------------------------------------* * read_coherence_data_hr_512() * - * + * Read coherence data at HR *-------------------------------------------------------------------*/ /*! r: number of bits read */ @@ -4347,3 +4335,203 @@ static void decode_combined_index( return; } + + +static void read_stream_dct_coeffs_omasa( + int16_t *q_idx, + float *q_dct_data, + const int16_t len_stream, + uint16_t *bit_stream, + int16_t *index, + const int16_t first_line ) +{ + int16_t sign, nbits; + int16_t i, j, i_min; + + float step; + int16_t GR1, GR2; + + step = STEP_M2T; + nbits = 0; + sign = 1; + if ( first_line == 0 ) + { + /* read sign */ + sign = bit_stream[( *index )--]; + if ( sign == 0 ) + { + sign = -1; + } + nbits++; + } + + set_s( q_idx, 0, len_stream ); + /* read DCT 0 component */ + for ( i = 0; i < BITS_MASA2TOTTAL_DCT0; i++ ) + { + q_idx[0] = ( q_idx[0] << 1 ) + bit_stream[( *index )--]; + } + q_idx[0] *= sign; + + if ( q_idx[0] != 0 ) + { + if ( len_stream >= 8 ) + { + /* read index of last index encoded with GR2 */ + i_min = 0; + j = 4; + for ( i = 0; i < j; i++ ) + { + i_min = ( i_min << 1 ) + bit_stream[( *index )--]; + } + nbits += j; + /* read GR orders */ + GR1 = bit_stream[( *index )--] + 1; + if ( GR1 == 2 ) + { + GR2 = bit_stream[( *index )--]; + } + else + { + GR2 = 0; + } + + /* read GR data */ + for ( i = 1; i <= i_min; i++ ) + { + q_idx[i] = ivas_qmetadata_DecodeExtendedGR( bit_stream, index, 100, GR1 ); + } + for ( i = i_min + 1; i < len_stream; i++ ) + { + q_idx[i] = ivas_qmetadata_DecodeExtendedGR( bit_stream, index, 100, GR2 ); + } + } + else + { + /* read GR order (only one) */ + GR1 = bit_stream[( *index )--]; + for ( i = 1; i < len_stream; i++ ) + { + q_idx[i] = ivas_qmetadata_DecodeExtendedGR( bit_stream, index, 100, GR1 ); + } + } + } + + /* deindex */ + q_dct_data[0] = q_idx[0] * step; + for ( i = 1; i < len_stream; i++ ) + { + if ( ( q_idx[i] % 2 ) == 0 ) + { + q_dct_data[i] = -( q_idx[i] >> 1 ) * step; + } + else + { + q_dct_data[i] = ( ( q_idx[i] + 1 ) >> 1 ) * step; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_omasa_decode_masa_to_total() + * + *------------------------------------------------------------------------*/ + +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 ) +{ + int16_t i, j, k; + int16_t q_idx[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + float q_dct_data[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS], + dct_data_tmp[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + int16_t n_streams, len_stream; + + /* Setup coding parameters */ + n_streams = 1; + len_stream = nbands * nblocks; + if ( len_stream == 32 ) + { + n_streams = 4; + len_stream = 8; + } + + set_s( q_idx, 0, nbands * nblocks ); + for ( i = 0; i < n_streams; i++ ) + { + read_stream_dct_coeffs_omasa( &q_idx[i * len_stream], &q_dct_data[i * len_stream], len_stream, bit_stream, index, i == 0 ); + } + + /* inverse DCT2 transform */ + switch ( len_stream ) + { + case 4: + matrix_product( dct4, nblocks, nblocks, 1, q_dct_data, nblocks, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nblocks ); + break; + case 5: + matrix_product( dct5, nbands, nbands, 1, q_dct_data, nbands, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nbands ); + break; + case 8: + matrix_product( dct8, nbands, nbands, 1, q_dct_data, nbands, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nbands ); + break; + case 12: + matrix_product( dct12, nbands, nbands, 1, q_dct_data, nbands, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nbands ); + break; + case 20: + matrix_product( dct5, nbands, nbands, 1, q_dct_data, nbands, nblocks, 0, dct_data_tmp ); + matrix_product( dct_data_tmp, nbands, nblocks, 0, dct4, nblocks, nblocks, 0, q_dct_data ); /* reuse of variable*/ + break; + case 32: + matrix_product( dct8, nbands, nbands, 1, q_dct_data, nbands, nblocks, 0, dct_data_tmp ); + matrix_product( dct_data_tmp, nbands, nblocks, 0, dct4, nblocks, nblocks, 0, q_dct_data ); + break; + default: + printf( "Incorrect number of coefficients for OMASA.\n" ); + break; + } + + k = 0; + for ( i = 0; i < nblocks; i++ ) + { + for ( j = 0; j < nbands; j++ ) + { + masa_to_total_energy_ratio[i][j] = max( 0.0f, q_dct_data[k] ); + masa_to_total_energy_ratio[i][j] = min( 1.0f, masa_to_total_energy_ratio[i][j] ); + k++; + } + } + + if ( nblocks == 1 ) + { + for ( i = 1; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + for ( j = 0; j < nbands; j++ ) + { + masa_to_total_energy_ratio[i][j] = masa_to_total_energy_ratio[0][j]; + } + } + } + + if ( nbands == 1 ) + { + for ( j = 1; j < 5; j++ ) + { + for ( i = 0; i < nblocks; i++ ) + { + masa_to_total_energy_ratio[i][j] = masa_to_total_energy_ratio[i][0]; + } + } + } + + return; +} diff --git a/lib_dec/ivas_range_uni_dec.c b/lib_dec/ivas_range_uni_dec.c index db0fbddeabd1d3f83ef2df5908f290383289bac9..6fbbaa5636d4a0c6f38be7afcf589afff04f2640 100644 --- a/lib_dec/ivas_range_uni_dec.c +++ b/lib_dec/ivas_range_uni_dec.c @@ -138,7 +138,7 @@ uint16_t rc_uni_dec_read_symbol_fastS( { rc_st_dec->bit_error_detected = 1; - /* for valid bistreams, always low < range, therefore setting low = range */ + /* for valid bitstreams, always low < range, therefore setting low = range */ /* will always reach the bitstream error condition branch on the next call */ rc_st_dec->rc_range = 0xFFFFFFFF; rc_st_dec->rc_low = rc_st_dec->rc_range; @@ -248,7 +248,7 @@ uint16_t rc_uni_dec_read_bit( { rc_st_dec->bit_error_detected = 1; - /* for valid bistreams, always low < range, therefore setting low = range */ + /* for valid bitstreams, always low < range, therefore setting low = range */ /* will always reach the bitstream error condition branch on the next call */ rc_st_dec->rc_range = 0xFFFFFFFF; rc_st_dec->rc_low = rc_st_dec->rc_range; @@ -303,7 +303,7 @@ uint16_t rc_uni_dec_read_bit_prob_fast( { rc_st_dec->bit_error_detected = 1; - /* for valid bistreams, always low < range, therefore setting low = range */ + /* for valid bitstreams, always low < range, therefore setting low = range */ /* will always reach the bitstream error condition branch on the next call */ rc_st_dec->rc_range = 0xFFFFFFFF; rc_st_dec->rc_low = rc_st_dec->rc_range; @@ -376,7 +376,7 @@ uint16_t rc_uni_dec_read_bits( { rc_st_dec->bit_error_detected = 1; - /* for valid bistreams, always low < range, therefore setting low = range */ + /* for valid bitstreams, always low < range, therefore setting low = range */ /* will always reach the bitstream error condition branch on the next call */ rc_st_dec->rc_range = 0xFFFFFFFF; rc_st_dec->rc_low = rc_st_dec->rc_range; @@ -482,7 +482,7 @@ static int16_t rc_uni_dec_read( { rc_st_dec->bit_error_detected = 1; - /* for valid bistreams, always low < range, therefore setting low = range */ + /* for valid bitstreams, always low < range, therefore setting low = range */ /* will always reach the bitstream error condition branch on the next call */ rc_st_dec->rc_range = 0xFFFFFFFF; rc_st_dec->rc_low = rc_st_dec->rc_range; diff --git a/lib_dec/ivas_rom_dec.c b/lib_dec/ivas_rom_dec.c index 6a33a36aaa072eb8fb15cf98c29159072bd55bcd..fc191e0deb938034ac1997daa6042ab7c776f4ab 100644 --- a/lib_dec/ivas_rom_dec.c +++ b/lib_dec/ivas_rom_dec.c @@ -541,291 +541,483 @@ const float dmxmtx_table[BINAURAL_CHANNELS][11] = }; -/* clang-format on */ +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------* + * Binuaral split rendering ROM tables + *-----------------------------------------------------------------------*/ + +/* rotations in this array are relative to ref rotation */ +const float ivas_split_rend_relative_yaw_pos_angles[SPLIT_REND_MAX_YAW_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_pitch_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {10.0f, 10.0f}; +const float ivas_split_rend_relative_roll_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {10.0f, 10.0f}; +const float ivas_split_rend_relative_one_axis_pos_angles[SPLIT_REND_MAX_ONE_AXIS_MD_POSES] = {-15.0f, 15.0f}; + +const float ivas_split_rend_relative_yaw_pos_angles_hq[SPLIT_REND_MAX_YAW_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_pitch_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_roll_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES] = {-15.0f, 15.0f}; +const float ivas_split_rend_relative_one_axis_pos_angles_hq[SPLIT_REND_MAX_ONE_AXIS_MD_POSES] = {-15.0f, 15.0f}; + +const int16_t ivas_split_rend_band_grouping[MAX_SPLIT_REND_MD_BANDS + 1] = +{ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 20, 25, 30, 35, 40, 50, 60 +}; + +const int32_t ivas_split_rend_huff_p_d_consts[IVAS_SPLIT_REND_D_QUANT_PNTS][3] = +{ + {0,8,252},{1,8,253},{2,7,124},{3,6,60},{4,5,28},{5,4,12}, + {6,3,4},{7,1,0},{8,3,5},{9,4,13},{10,5,29},{11,6,61}, + {12,7,125},{13,8,254},{14,8,255} +}; + +const int32_t ivas_split_rend_huff_p_d_diff_consts[IVAS_SPLIT_REND_D_QUANT_PNTS][3] = +{ + { 0, 1, 0 },{ 1, 2, 2 },{ 2, 3, 6 },{ 3, 4, 14 }, + { 4, 5, 30 },{ 5, 6, 62 },{ 6, 7, 126 },{ 7, 8, 254 }, + { 8, 9, 510 },{ 9, 10, 1022 },{ 10, 11, 2046 },{ 11, 12, 4094 }, + { 12, 13, 8190 },{ 13, 14, 16382 },{ 14, 14, 16383 } +}; + +const int32_t ivas_split_rend_huff_d_consts[IVAS_SPLIT_REND_D_QUANT_PNTS][3] = +{ + { 0, 1, 0 },{ 1, 2, 2 },{ 2, 3, 6 },{ 3, 4, 14 }, + { 4, 5, 30 },{ 5, 6, 62 },{ 6, 7, 126 },{ 7, 8, 254 }, + { 8, 9, 510 },{ 9, 10, 1022 },{ 10, 11, 2046 },{ 11, 12, 4094 }, + { 12, 13, 8190 },{ 13, 14, 16382 },{ 14, 14, 16383 } +}; + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS +const int32_t ivas_split_rend_huff_pred63_consts[IVAS_SPLIT_REND_PRED_63QUANT_PNTS][3] = +{ + {-31,11,2040}, + {-30,11,2041}, + {-29,11,2042}, + {-28,11,2043}, + {-27,10,1012}, + {-26,10,1013}, + {-25,10,1014}, + {-24,10,1015}, + {-23,9,498}, + {-22,9,499}, + {-21,9,500}, + {-20,9,501}, + {-19,8,242}, + {-18,8,243}, + {-17,8,244}, + {-16,8,245}, + {-15,7,112}, + {-14,7,113}, + {-13,7,114}, + {-12,7,115}, + {-11,6,48}, + {-10,6,49}, + {-9,6,50}, + {-8,6,51}, + {-7,5,16}, + {-6,5,17}, + {-5,5,18}, + {-4,5,19}, + {-3,4,2}, + {-2,4,3}, + {-1,4,4}, + {0,3,0}, + {1,4,5}, + {2,4,6}, + {3,4,7}, + {4,5,20}, + {5,5,21}, + {6,5,22}, + {7,5,23}, + {8,6,52}, + {9,6,53}, + {10,6,54}, + {11,6,55}, + {12,7,116}, + {13,7,117}, + {14,7,118}, + {15,7,119}, + {16,7,120}, + {17,8,246}, + {18,8,247}, + {19,8,248}, + {20,9,502}, + {21,9,503}, + {22,9,504}, + {23,9,505}, + {24,10,1016}, + {25,10,1017}, + {26,10,1018}, + {27,10,1019}, + {28,11,2044}, + {29,11,2045}, + {30,11,2046}, + {31,11,2047}, +}; + +const int32_t ivas_split_rend_huff_pred31_consts[IVAS_SPLIT_REND_PRED_31QUANT_PNTS][3] = +{ + {-15,10,1020},{-14,10,1021},{-13,9,506},{-12,9,507}, + {-11,8,250},{-10,8,251},{-9,7,120},{-8,7,121}, + {-7,6,56},{-6,6,57},{-5,5,24},{-4,5,25},{-3,4,8}, + {-2,4,9},{-1,3,2},{0,2,0},{1,3,3}, + {2,4,10},{3,4,11},{4,5,26},{5,5,27}, + {6,6,58},{7,6,59},{8,7,122},{9,7,123}, + {10,7,124},{11,8,252},{12,9,508},{13,9,509}, + {14,10,1022},{15,10,1023}, +}; + +const int32_t ivas_split_rend_huff_roll_pred_consts[IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS][3] = +{ + {-15,10,1020},{-14,10,1021},{-13,9,506},{-12,9,507}, + {-11,8,250},{-10,8,251},{-9,7,120},{-8,7,121}, + {-7,6,56},{-6,6,57},{-5,5,24},{-4,5,25},{-3,4,8}, + {-2,4,9},{-1,3,2},{0,2,0},{1,3,3}, + {2,4,10},{3,4,11},{4,5,26},{5,5,27}, + {6,6,58},{7,6,59},{8,7,122},{9,7,123}, + {10,7,124},{11,8,252},{12,9,508},{13,9,509}, +{14,10,1022},{15,10,1023}, +}; + +#else +const int32_t ivas_split_rend_huff_pred_consts[IVAS_SPLIT_REND_PRED_QUANT_PNTS][3] = { +{-15,10,1020},{-14,10,1021},{-13,9,506},{-12,9,507}, +{-11,8,250},{-10,8,251},{-9,7,120},{-8,7,121}, +{-7,6,56},{-6,6,57},{-5,5,24},{-4,5,25},{-3,4,8}, +{-2,4,9},{-1,3,2},{0,2,0},{1,3,3}, +{2,4,10},{3,4,11},{4,5,26},{5,5,27}, +{6,6,58},{7,6,59},{8,7,122},{9,7,123}, +{10,7,124},{11,8,252},{12,9,508},{13,9,509}, +{14,10,1022},{15,10,1023}, +}; +#endif +#endif -const int16_t huff_nodes_first_band_alpha[32][2] = { /* Alpha Fine Huffman table df0 */ - { -17, 1 }, - { 3, 2 }, - { -16, -18 }, - { 5, 4 }, - { -15, 6 }, - { -19, 7 }, - { 9, 8 }, - { 11, 10 }, - { -14, -20 }, - { 13, 12 }, - { -21, 14 }, - { -13, 15 }, - { 17, 16 }, - { -22, 18 }, - { -12, 19 }, - { -9, -10 }, - { -11, 20 }, - { -23, 21 }, - { -8, 22 }, - { -24, 23 }, - { -25, 24 }, - { -7, 25 }, - { -26, 26 }, - { 28, 27 }, - { -6, -27 }, - { -33, 29 }, - { -1, -28 }, - { -5, 30 }, - { -29, -30 }, - { -4, 31 }, - { -3, -31 }, - { -2, -32 } -}; -const int16_t huff_nodes_first_band_alpha_coarse[16][2] = { /* Alpha Coarse Huffman table df0 */ - { -9, 1 }, - { -8, 2 }, - { -10, 3 }, - { 5, 4 }, - { -7, 6 }, - { -11, 7 }, - { -5, 8 }, - { -6, 9 }, - { -12, 10 }, - { -13, 11 }, - { -4, 12 }, - { -14, 13 }, - { -3, 14 }, - { -15, 15 }, - { -2, -16 }, - { -1, -17 } -}; - - -const int16_t huff_nodes_alpha_1D_DF[64][2] = { /* Alpha Fine Huffman table df */ - { -33, 1 }, - { 3, 2 }, - { -32, -34 }, - { 5, 4 }, - { -31, -35 }, - { 7, 6 }, - { -30, 8 }, - { -36, 9 }, - { 11, 10 }, - { -37, 12 }, - { -29, 13 }, - { -28, 14 }, - { -38, 15 }, - { 17, 16 }, - { -27, -39 }, - { 19, 18 }, - { -26, 20 }, - { -40, 21 }, - { 23, 22 }, - { -41, 24 }, - { -25, 25 }, - { -24, 26 }, - { -42, 27 }, - { -43, 28 }, - { -23, 29 }, - { -44, 30 }, - { -22, 31 }, - { -45, 32 }, - { -21, 33 }, - { -20, 34 }, - { -46, 35 }, - { -19, 36 }, - { -47, 37 }, - { -18, -48 }, - { 39, 38 }, - { -17, -49 }, - { 41, 40 }, - { -16, 42 }, - { -1, -50 }, - { -65, 43 }, - { 45, 44 }, - { -51, 46 }, - { -15, 47 }, - { 49, 48 }, - { -52, 50 }, - { -14, 51 }, - { 53, 52 }, - { -13, 54 }, - { -53, 55 }, - { 57, 56 }, - { -12, 58 }, - { -54, 59 }, - { 61, 60 }, - { -55, 62 }, - { -11, 63 }, - { -10, -61 }, - { -5, -57 }, - { -58, -60 }, - { -56, -59 }, - { -4, -6 }, - { -7, -64 }, - { -9, -63 }, - { -3, -8 }, - { -2, -62 } -}; -const int16_t huff_nodes_alpha_1D_DF_coarse[32][2] = { /* Alpha Coarse Huffman table df */ - { -17, 1 }, - { -18, 2 }, - { -16, 3 }, - { -15, 4 }, - { -19, 5 }, - { 7, 6 }, - { -14, -20 }, - { 9, 8 }, - { -13, -21 }, - { 11, 10 }, - { -22, 12 }, - { -12, 13 }, - { -23, 14 }, - { -11, 15 }, - { -10, 16 }, - { -24, 17 }, - { -9, -25 }, - { 19, 18 }, - { -26, 20 }, - { -8, 21 }, - { 23, 22 }, - { 25, 24 }, - { -27, 26 }, - { -7, 27 }, - { -1, -33 }, - { -6, 28 }, - { -28, 29 }, - { -29, 30 }, - { -5, -31 }, - { -30, 31 }, - { -3, -4 }, - { -2, -32 } -}; - -const int16_t huff_nodes_alpha_1D_DT[64][2] = { /* Alpha Fine Huffman table dt */ - { -33, 1 }, - { -34, 2 }, - { -32, 3 }, - { 5, 4 }, - { -31, -35 }, - { 7, 6 }, - { -36, 8 }, - { -30, 9 }, - { 11, 10 }, - { -29, -37 }, - { 13, 12 }, - { 15, 14 }, - { -28, -38 }, - { 17, 16 }, - { -27, -39 }, - { 19, 18 }, - { -40, 20 }, - { -26, 21 }, - { 23, 22 }, - { -25, -41 }, - { 25, 24 }, - { -24, -42 }, - { 27, 26 }, - { -23, -43 }, - { 29, 28 }, - { -22, -44 }, - { 31, 30 }, - { -45, 32 }, - { -21, 33 }, - { -20, 34 }, - { -46, 35 }, - { -47, 36 }, - { -19, 37 }, - { -48, 38 }, - { -18, 39 }, - { 41, 40 }, - { -17, -49 }, - { 43, 42 }, - { -50, 44 }, - { -16, 45 }, - { 47, 46 }, - { -51, 48 }, - { -15, 49 }, - { 51, 50 }, - { -52, -65 }, - { -1, -14 }, - { 53, 52 }, - { -53, 54 }, - { -13, 55 }, - { 57, 56 }, - { -12, 58 }, - { -54, 59 }, - { 61, 60 }, - { -11, -55 }, - { -56, 62 }, - { -10, 63 }, - { -9, -57 }, - { -5, -6 }, - { -58, -61 }, - { -7, -59 }, - { -8, -62 }, - { -4, -60 }, - { -3, -64 }, - { -2, -63 } -}; -const int16_t huff_nodes_alpha_1D_DT_coarse[32][2] = { /* Alpha Coarse Huffman table dt */ - { -17, 1 }, - { -18, 2 }, - { -16, 3 }, - { -19, 4 }, - { -15, 5 }, - { 7, 6 }, - { -14, -20 }, - { 9, 8 }, - { -21, 10 }, - { -13, 11 }, - { 13, 12 }, - { -12, -22 }, - { 15, 14 }, - { -11, -23 }, - { 17, 16 }, - { -24, 18 }, - { -10, 19 }, - { -25, 20 }, - { -9, 21 }, - { 23, 22 }, - { -26, 24 }, - { -8, 25 }, - { 27, 26 }, - { -1, -33 }, - { -7, -27 }, - { 29, 28 }, - { -28, 30 }, - { -6, 31 }, - { -5, -29 }, - { -3, -31 }, - { -4, -30 }, - { -2, -32 } -}; - -const int16_t huff_nodes_first_band_beta[8][2] = /* Beta Fine Huffman table df0 */ - { { -1, 1 }, { -2, 2 }, { -3, 3 }, { -4, 4 }, { -5, 5 }, { -6, 6 }, { -7, 7 }, { -8, -9 } }; -const int16_t huff_nodes_first_band_beta_coarse[4][2] = /* Beta Coarse Huffman table df0 */ - { { -1, 1 }, { -2, 2 }, { -3, 3 }, { -4, -5 } }; - -const int16_t huff_nodes_beta_1D_DF[16][2] = /* Beta Fine Huffman table df */ - { { -9, 1 }, { -10, 2 }, { -8, 3 }, { -11, 4 }, { -7, 5 }, { 7, 6 }, { -6, -12 }, { 9, 8 }, { -5, -13 }, { 11, 10 }, { -4, -14 }, { -15, 12 }, { -3, 13 }, { -16, 14 }, { -2, 15 }, { -1, -17 } }; -const int16_t huff_nodes_beta_1D_DF_coarse[8][2] = /* Beta Coarse Huffman table df */ - { { -5, 1 }, { -6, 2 }, { -4, 3 }, { -3, 4 }, { -7, 5 }, { -2, 6 }, { -8, 7 }, { -1, -9 } }; - -const int16_t huff_nodes_beta_1D_DT[16][2] = /* Beta Fine Huffman table dt */ - { { -9, 1 }, { -10, 2 }, { -8, 3 }, { -11, 4 }, { -7, 5 }, { 7, 6 }, { -6, -12 }, { -13, 8 }, { -5, 9 }, { -14, 10 }, { -4, 11 }, { -15, 12 }, { -3, 13 }, { -16, 14 }, { -2, 15 }, { -1, -17 } }; -const int16_t huff_nodes_beta_1D_DT_coarse[8][2] = /* Beta Coarse Huffman table dt */ - { { -5, 1 }, { -6, 2 }, { -4, 3 }, { -7, 4 }, { -3, 5 }, { -8, 6 }, { -2, 7 }, { -1, -9 } }; - -HUFF_NODE_TABLE huff_nodes_df0 = { +/*----------------------------------------------------------------------* + * MC ParamUpmix ROM tables + *-----------------------------------------------------------------------*/ + +/* Alpha Fine Huffman table df0 */ +static const int16_t huff_nodes_first_band_alpha[32][2] = +{ + { -17, 1 }, + { 3, 2 }, + { -16, -18 }, + { 5, 4 }, + { -15, 6 }, + { -19, 7 }, + { 9, 8 }, + { 11, 10 }, + { -14, -20 }, + { 13, 12 }, + { -21, 14 }, + { -13, 15 }, + { 17, 16 }, + { -22, 18 }, + { -12, 19 }, + { -9, -10 }, + { -11, 20 }, + { -23, 21 }, + { -8, 22 }, + { -24, 23 }, + { -25, 24 }, + { -7, 25 }, + { -26, 26 }, + { 28, 27 }, + { -6, -27 }, + { -33, 29 }, + { -1, -28 }, + { -5, 30 }, + { -29, -30 }, + { -4, 31 }, + { -3, -31 }, + { -2, -32 } +}; + +/* Alpha Coarse Huffman table df0 */ +static const int16_t huff_nodes_first_band_alpha_coarse[16][2] = +{ + { -9, 1 }, + { -8, 2 }, + { -10, 3 }, + { 5, 4 }, + { -7, 6 }, + { -11, 7 }, + { -5, 8 }, + { -6, 9 }, + { -12, 10 }, + { -13, 11 }, + { -4, 12 }, + { -14, 13 }, + { -3, 14 }, + { -15, 15 }, + { -2, -16 }, + { -1, -17 } +}; + +/* Alpha Fine Huffman table df */ +static const int16_t huff_nodes_alpha_1D_DF[64][2] = +{ + { -33, 1 }, + { 3, 2 }, + { -32, -34 }, + { 5, 4 }, + { -31, -35 }, + { 7, 6 }, + { -30, 8 }, + { -36, 9 }, + { 11, 10 }, + { -37, 12 }, + { -29, 13 }, + { -28, 14 }, + { -38, 15 }, + { 17, 16 }, + { -27, -39 }, + { 19, 18 }, + { -26, 20 }, + { -40, 21 }, + { 23, 22 }, + { -41, 24 }, + { -25, 25 }, + { -24, 26 }, + { -42, 27 }, + { -43, 28 }, + { -23, 29 }, + { -44, 30 }, + { -22, 31 }, + { -45, 32 }, + { -21, 33 }, + { -20, 34 }, + { -46, 35 }, + { -19, 36 }, + { -47, 37 }, + { -18, -48 }, + { 39, 38 }, + { -17, -49 }, + { 41, 40 }, + { -16, 42 }, + { -1, -50 }, + { -65, 43 }, + { 45, 44 }, + { -51, 46 }, + { -15, 47 }, + { 49, 48 }, + { -52, 50 }, + { -14, 51 }, + { 53, 52 }, + { -13, 54 }, + { -53, 55 }, + { 57, 56 }, + { -12, 58 }, + { -54, 59 }, + { 61, 60 }, + { -55, 62 }, + { -11, 63 }, + { -10, -61 }, + { -5, -57 }, + { -58, -60 }, + { -56, -59 }, + { -4, -6 }, + { -7, -64 }, + { -9, -63 }, + { -3, -8 }, + { -2, -62 } +}; + +/* Alpha Coarse Huffman table df */ +static const int16_t huff_nodes_alpha_1D_DF_coarse[32][2] = +{ + { -17, 1 }, + { -18, 2 }, + { -16, 3 }, + { -15, 4 }, + { -19, 5 }, + { 7, 6 }, + { -14, -20 }, + { 9, 8 }, + { -13, -21 }, + { 11, 10 }, + { -22, 12 }, + { -12, 13 }, + { -23, 14 }, + { -11, 15 }, + { -10, 16 }, + { -24, 17 }, + { -9, -25 }, + { 19, 18 }, + { -26, 20 }, + { -8, 21 }, + { 23, 22 }, + { 25, 24 }, + { -27, 26 }, + { -7, 27 }, + { -1, -33 }, + { -6, 28 }, + { -28, 29 }, + { -29, 30 }, + { -5, -31 }, + { -30, 31 }, + { -3, -4 }, + { -2, -32 } +}; + +/* Alpha Fine Huffman table dt */ +static const int16_t huff_nodes_alpha_1D_DT[64][2] = +{ + { -33, 1 }, + { -34, 2 }, + { -32, 3 }, + { 5, 4 }, + { -31, -35 }, + { 7, 6 }, + { -36, 8 }, + { -30, 9 }, + { 11, 10 }, + { -29, -37 }, + { 13, 12 }, + { 15, 14 }, + { -28, -38 }, + { 17, 16 }, + { -27, -39 }, + { 19, 18 }, + { -40, 20 }, + { -26, 21 }, + { 23, 22 }, + { -25, -41 }, + { 25, 24 }, + { -24, -42 }, + { 27, 26 }, + { -23, -43 }, + { 29, 28 }, + { -22, -44 }, + { 31, 30 }, + { -45, 32 }, + { -21, 33 }, + { -20, 34 }, + { -46, 35 }, + { -47, 36 }, + { -19, 37 }, + { -48, 38 }, + { -18, 39 }, + { 41, 40 }, + { -17, -49 }, + { 43, 42 }, + { -50, 44 }, + { -16, 45 }, + { 47, 46 }, + { -51, 48 }, + { -15, 49 }, + { 51, 50 }, + { -52, -65 }, + { -1, -14 }, + { 53, 52 }, + { -53, 54 }, + { -13, 55 }, + { 57, 56 }, + { -12, 58 }, + { -54, 59 }, + { 61, 60 }, + { -11, -55 }, + { -56, 62 }, + { -10, 63 }, + { -9, -57 }, + { -5, -6 }, + { -58, -61 }, + { -7, -59 }, + { -8, -62 }, + { -4, -60 }, + { -3, -64 }, + { -2, -63 } +}; + +/* Alpha Coarse Huffman table dt */ +static const int16_t huff_nodes_alpha_1D_DT_coarse[32][2] = +{ + { -17, 1 }, + { -18, 2 }, + { -16, 3 }, + { -19, 4 }, + { -15, 5 }, + { 7, 6 }, + { -14, -20 }, + { 9, 8 }, + { -21, 10 }, + { -13, 11 }, + { 13, 12 }, + { -12, -22 }, + { 15, 14 }, + { -11, -23 }, + { 17, 16 }, + { -24, 18 }, + { -10, 19 }, + { -25, 20 }, + { -9, 21 }, + { 23, 22 }, + { -26, 24 }, + { -8, 25 }, + { 27, 26 }, + { -1, -33 }, + { -7, -27 }, + { 29, 28 }, + { -28, 30 }, + { -6, 31 }, + { -5, -29 }, + { -3, -31 }, + { -4, -30 }, + { -2, -32 } +}; + +/* Beta Fine Huffman table df0 */ +static const int16_t huff_nodes_first_band_beta[8][2] = +{ + { -1, 1 }, { -2, 2 }, { -3, 3 }, { -4, 4 }, { -5, 5 }, { -6, 6 }, { -7, 7 }, { -8, -9 } +}; + +/* Beta Coarse Huffman table df0 */ +static const int16_t huff_nodes_first_band_beta_coarse[4][2] = +{ + { -1, 1 }, { -2, 2 }, { -3, 3 }, { -4, -5 } +}; + +/* Beta Fine Huffman table df */ +static const int16_t huff_nodes_beta_1D_DF[16][2] = +{ + { -9, 1 }, { -10, 2 }, { -8, 3 }, { -11, 4 }, { -7, 5 }, { 7, 6 }, { -6, -12 }, { 9, 8 }, { -5, -13 }, { 11, 10 }, { -4, -14 }, { -15, 12 }, { -3, 13 }, { -16, 14 }, { -2, 15 }, { -1, -17 } +}; + +/* Beta Coarse Huffman table df */ +static const int16_t huff_nodes_beta_1D_DF_coarse[8][2] = +{ + { -5, 1 }, { -6, 2 }, { -4, 3 }, { -3, 4 }, { -7, 5 }, { -2, 6 }, { -8, 7 }, { -1, -9 } +}; + +/* Beta Fine Huffman table dt */ +static const int16_t huff_nodes_beta_1D_DT[16][2] = +{ + { -9, 1 }, { -10, 2 }, { -8, 3 }, { -11, 4 }, { -7, 5 }, { 7, 6 }, { -6, -12 }, { -13, 8 }, { -5, 9 }, { -14, 10 }, { -4, 11 }, { -15, 12 }, { -3, 13 }, { -16, 14 }, { -2, 15 }, { -1, -17 } +}; + +/* Beta Coarse Huffman table dt */ +static const int16_t huff_nodes_beta_1D_DT_coarse[8][2] = +{ + { -5, 1 }, { -6, 2 }, { -4, 3 }, { -7, 4 }, { -3, 5 }, { -8, 6 }, { -2, 7 }, { -1, -9 } +}; + +const HUFF_NODE_TABLE ivas_mc_paramupmix_huff_nodes_df0 = +{ { huff_nodes_first_band_alpha, huff_nodes_first_band_alpha_coarse }, { huff_nodes_first_band_beta, huff_nodes_first_band_beta_coarse } }; -HUFF_NODE_TABLE huff_nodes_df = { +const HUFF_NODE_TABLE ivas_mc_paramupmix_huff_nodes_df = +{ { huff_nodes_alpha_1D_DF, huff_nodes_alpha_1D_DF_coarse }, { huff_nodes_beta_1D_DF, huff_nodes_beta_1D_DF_coarse } }; -HUFF_NODE_TABLE huff_nodes_dt = { +const HUFF_NODE_TABLE ivas_mc_paramupmix_huff_nodes_dt = +{ { huff_nodes_alpha_1D_DT, huff_nodes_alpha_1D_DT_coarse }, { huff_nodes_beta_1D_DT, huff_nodes_beta_1D_DT_coarse } }; + +/* clang-format on */ diff --git a/lib_dec/ivas_rom_dec.h b/lib_dec/ivas_rom_dec.h index 7a19f170c0b00f12d5050d4224dcd05cc7960b98..b4c3c89fd611b190f95551b1a18f0c9c2b105309 100644 --- a/lib_dec/ivas_rom_dec.h +++ b/lib_dec/ivas_rom_dec.h @@ -121,26 +121,45 @@ extern const int16_t sba_map_tc_512[11]; extern const float dmxmtx_table[BINAURAL_CHANNELS][11]; -extern const int16_t huff_nodes_first_band_alpha[32][2]; -extern const int16_t huff_nodes_first_band_alpha_coarse[16][2]; - - -extern const int16_t huff_nodes_alpha_1D_DF[64][2]; -extern const int16_t huff_nodes_alpha_1D_DF_coarse[32][2]; - -extern const int16_t huff_nodes_alpha_1D_DT[64][2]; -extern const int16_t huff_nodes_alpha_1D_DT_coarse[32][2]; +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------* + * Binuaral split rendering ROM tables + *-----------------------------------------------------------------------*/ + +extern const float ivas_split_rend_relative_yaw_pos_angles[SPLIT_REND_MAX_YAW_ONLY_POSES]; +extern const float ivas_split_rend_relative_pitch_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_roll_pos_angles[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_one_axis_pos_angles[SPLIT_REND_MAX_ONE_AXIS_MD_POSES]; +extern const float ivas_split_rend_relative_one_axis_pos_angles_hq[SPLIT_REND_MAX_ONE_AXIS_MD_POSES]; + +extern const float ivas_split_rend_relative_yaw_pos_angles_hq[SPLIT_REND_MAX_YAW_ONLY_POSES]; +extern const float ivas_split_rend_relative_pitch_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES]; +extern const float ivas_split_rend_relative_roll_pos_angles_hq[SPLIT_REND_MAX_PITCH_ONLY_POSES]; + +extern const float ivas_split_rend_relative_pos_angles[MAX_HEAD_ROT_POSES][3]; +extern const int16_t ivas_split_rend_band_grouping[MAX_SPLIT_REND_MD_BANDS + 1]; +extern const int32_t ivas_split_rend_huff_d_consts[IVAS_SPLIT_REND_D_QUANT_PNTS][3]; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS +extern const int32_t ivas_split_rend_huff_pred63_consts[IVAS_SPLIT_REND_PRED_31QUANT_PNTS][3]; +extern const int32_t ivas_split_rend_huff_pred31_consts[IVAS_SPLIT_REND_PRED_31QUANT_PNTS][3]; +#else +extern const int32_t ivas_split_rend_huff_pred_consts[IVAS_SPLIT_REND_PRED_QUANT_PNTS][3]; +#endif +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS +extern const int32_t ivas_split_rend_huff_roll_pred_consts[IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS][3]; +#endif +extern const int32_t ivas_split_rend_huff_p_d_consts[IVAS_SPLIT_REND_D_QUANT_PNTS][3]; +extern const int32_t ivas_split_rend_huff_p_d_diff_consts[IVAS_SPLIT_REND_D_QUANT_PNTS][3]; +extern const int32_t split_rend_brate_tbl[]; +#endif -extern const int16_t huff_nodes_first_band_beta[8][2]; -extern const int16_t huff_nodes_first_band_beta_coarse[4][2]; -extern const int16_t huff_nodes_beta_1D_DF[16][2]; -extern const int16_t huff_nodes_beta_1D_DF_coarse[8][2]; +/*----------------------------------------------------------------------* + * MC ParamUpmix ROM tables + *-----------------------------------------------------------------------*/ -extern const int16_t huff_nodes_beta_1D_DT[16][2]; -extern const int16_t huff_nodes_beta_1D_DT_coarse[8][2]; -extern const HUFF_NODE_TABLE huff_nodes_df0; -extern const HUFF_NODE_TABLE huff_nodes_df; -extern const HUFF_NODE_TABLE huff_nodes_dt; +extern const HUFF_NODE_TABLE ivas_mc_paramupmix_huff_nodes_df0; +extern const HUFF_NODE_TABLE ivas_mc_paramupmix_huff_nodes_df; +extern const HUFF_NODE_TABLE ivas_mc_paramupmix_huff_nodes_dt; #endif diff --git a/lib_dec/ivas_sba_dec.c b/lib_dec/ivas_sba_dec.c index 22258a93658c1a4dbe219e21ac09eb3505e8fbd4..500b95f5e82dafb8420d01d405d59935c82fd1b7 100755 --- a/lib_dec/ivas_sba_dec.c +++ b/lib_dec/ivas_sba_dec.c @@ -65,7 +65,7 @@ void ivas_sba_set_cna_cng_flag( /* st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 0; */ /* st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag = 0; */ } - else if ( st_ivas->nchan_transport == 1 && ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) || ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) ) ) + else if ( st_ivas->nchan_transport == 1 && ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) || ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) ) ) { st_ivas->hSCE[0]->hCoreCoder[0]->cna_dirac_flag = 1; st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag = 1; @@ -110,11 +110,13 @@ ivas_error ivas_sba_dec_reconfigure( int16_t sba_dirac_stereo_flag_old; int32_t ivas_total_brate; int32_t last_ivas_total_brate; - - RENDERER_TYPE old_renderer_type; - + int16_t num_channels, num_md_sub_frames; + int16_t ch, nchan_out_buff, nchan_out_buff_old; DECODER_CONFIG_HANDLE hDecoderConfig; ivas_error error; + ISM_MODE ism_mode_old; + ism_mode_old = st_ivas->ism_mode; + error = IVAS_ERR_OK; hDecoderConfig = st_ivas->hDecoderConfig; @@ -128,15 +130,32 @@ ivas_error ivas_sba_dec_reconfigure( ivas_init_dec_get_num_cldfb_instances( st_ivas, &numCldfbAnalyses_old, &numCldfbSyntheses_old ); nchan_hp20_old = getNumChanSynthesis( st_ivas ); + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( ivas_total_brate >= IVAS_256k ) + { + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + } + else + { + st_ivas->ism_mode = ISM_MODE_NONE; + } + } + else + { + st_ivas->ism_mode = ISM_MODE_NONE; + } + nSCE_old = st_ivas->nSCE; nCPE_old = st_ivas->nCPE; nchan_transport_old = st_ivas->nchan_transport; sba_dirac_stereo_flag_old = st_ivas->sba_dirac_stereo_flag; + nchan_out_buff_old = ivas_get_nchan_buffers_dec( st_ivas ); st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->sba_order ); /* save old */ - if ( st_ivas->hDirAC == NULL && st_ivas->hSpar != NULL ) + if ( st_ivas->hDirAC == NULL && st_ivas->hSpar != NULL ) // ToDo; this never happens { st_ivas->hTcBuffer->num_slots = st_ivas->hSpar->num_slots; st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpar->nb_subframes; @@ -144,13 +163,13 @@ ivas_error ivas_sba_dec_reconfigure( st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpar->subframes_rendered; mvs2s( st_ivas->hSpar->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } - else if ( st_ivas->hDirAC != NULL ) + else if ( st_ivas->hSpatParamRendCom != NULL ) { - st_ivas->hTcBuffer->num_slots = st_ivas->hDirAC->num_slots; - st_ivas->hTcBuffer->nb_subframes = st_ivas->hDirAC->nb_subframes; - st_ivas->hTcBuffer->slots_rendered = st_ivas->hDirAC->slots_rendered; - st_ivas->hTcBuffer->subframes_rendered = st_ivas->hDirAC->subframes_rendered; - mvs2s( st_ivas->hDirAC->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + st_ivas->hTcBuffer->num_slots = st_ivas->hSpatParamRendCom->num_slots; + st_ivas->hTcBuffer->nb_subframes = st_ivas->hSpatParamRendCom->nb_subframes; + st_ivas->hTcBuffer->slots_rendered = st_ivas->hSpatParamRendCom->slots_rendered; + st_ivas->hTcBuffer->subframes_rendered = st_ivas->hSpatParamRendCom->subframes_rendered; + mvs2s( st_ivas->hSpatParamRendCom->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); } /*-----------------------------------------------------------------* @@ -181,6 +200,20 @@ ivas_error ivas_sba_dec_reconfigure( } } + else if ( last_ivas_total_brate < IVAS_24k4 && ivas_total_brate >= IVAS_24k4 ) + { + + num_channels = st_ivas->hSpar->hMdDec->spar_md_cfg.num_umx_chs; + + ivas_spar_md_dec_matrix_close( st_ivas->hSpar->hMdDec, num_channels ); + + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order_internal, ivas_total_brate, st_ivas->last_active_ivas_total_brate ); + if ( ( error = ivas_spar_md_dec_matrix_open( st_ivas->hSpar->hMdDec, num_channels, + num_md_sub_frames ) ) != IVAS_ERR_OK ) + { + return error; + } + } ivas_spar_config( ivas_total_brate, sba_order_internal, &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &hSpar->core_nominal_brate, st_ivas->sid_format ); } else @@ -216,7 +249,6 @@ ivas_error ivas_sba_dec_reconfigure( /* renderer might have changed */ intern_config_old = st_ivas->intern_config; - old_renderer_type = st_ivas->renderer_type; ivas_renderer_select( st_ivas ); /* side effect of the renderer selection can be a changed internal config */ @@ -242,29 +274,6 @@ ivas_error ivas_sba_dec_reconfigure( ivas_binRenderer_close( &st_ivas->hBinRenderer ); } - if ( st_ivas->renderer_type != old_renderer_type ) - { - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - if ( st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) - { - if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } - } - - if ( ( error = ivas_dirac_dec_init_binaural_data( st_ivas, st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) - { - return error; - } - } - } - else if ( st_ivas->hDiracDecBin != NULL && ( st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC ) ) - { - ivas_dirac_dec_close_binaural_data( &st_ivas->hDiracDecBin ); - } - if ( ( ( st_ivas->renderer_type != RENDERER_DISABLE ) && ( st_ivas->renderer_type != RENDERER_SBA_LINEAR_DEC ) ) || ( ( hDecoderConfig->output_config != AUDIO_CONFIG_FOA ) && ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_STEREO ) && ( st_ivas->hDecoderConfig->output_config != AUDIO_CONFIG_MONO ) ) || ( last_ivas_total_brate > IVAS_256k && ivas_total_brate <= IVAS_256k ) || ( last_ivas_total_brate <= IVAS_256k && ivas_total_brate > IVAS_256k ) ) { DIRAC_CONFIG_FLAG flag_config; @@ -281,11 +290,14 @@ ivas_error ivas_sba_dec_reconfigure( } /* synchronize subframe info */ - st_ivas->hDirAC->num_slots = st_ivas->hTcBuffer->num_slots; - st_ivas->hDirAC->nb_subframes = st_ivas->hTcBuffer->nb_subframes; - st_ivas->hDirAC->slots_rendered = st_ivas->hTcBuffer->slots_rendered; - st_ivas->hDirAC->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; - mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hDirAC->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + if ( st_ivas->hSpatParamRendCom != NULL ) + { + st_ivas->hSpatParamRendCom->num_slots = st_ivas->hTcBuffer->num_slots; + st_ivas->hSpatParamRendCom->nb_subframes = st_ivas->hTcBuffer->nb_subframes; + st_ivas->hSpatParamRendCom->slots_rendered = st_ivas->hTcBuffer->slots_rendered; + st_ivas->hSpatParamRendCom->subframes_rendered = st_ivas->hTcBuffer->subframes_rendered; + mvs2s( st_ivas->hTcBuffer->subframe_nbslots, st_ivas->hSpatParamRendCom->subframe_nbslots, MAX_JBM_SUBFRAMES_5MS ); + } } if ( ( error = ivas_dirac_sba_config( st_ivas->hQMetaData, &st_ivas->element_mode_init, ivas_total_brate, st_ivas->sba_analysis_order, ivas_get_hodirac_flag( ivas_total_brate, st_ivas->sba_analysis_order ) ? IVAS_MAX_NUM_BANDS : ( IVAS_MAX_NUM_BANDS - SPAR_DIRAC_SPLIT_START_BAND ) ) ) != IVAS_ERR_OK ) @@ -295,6 +307,8 @@ ivas_error ivas_sba_dec_reconfigure( if ( st_ivas->renderer_type == RENDERER_DISABLE ) { + ivas_dirac_rend_close( &( st_ivas->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( st_ivas->hSpatParamRendCom ) ); ivas_dirac_dec_close( &( st_ivas->hDirAC ) ); vbap_free_data( &( st_ivas->hVBAPdata ) ); @@ -308,12 +322,107 @@ ivas_error ivas_sba_dec_reconfigure( /*-----------------------------------------------------------------* * Allocate, initialize, and configure SCE/CPE/MCT handles *-----------------------------------------------------------------*/ + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( ism_mode_old == ISM_MODE_NONE && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + int32_t temp_brate[MAX_SCE]; + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + if ( ( error = ivas_ism_metadata_dec_create( st_ivas, st_ivas->nchan_ism, temp_brate ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( st_ivas->renderer_type == RENDERER_TD_PANNING || + st_ivas->renderer_type == RENDERER_NON_DIEGETIC_DOWNMIX || + st_ivas->renderer_type == RENDERER_SBA_LINEAR_ENC || + st_ivas->renderer_type == RENDERER_OSBA_STEREO || + st_ivas->renderer_type == RENDERER_OSBA_AMBI || + st_ivas->renderer_type == RENDERER_OSBA_LS || + st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV || + st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM || + st_ivas->renderer_type == RENDERER_BINAURAL_MIXER_CONV_ROOM ) ) + { + if ( ( error = ivas_ism_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + if ( st_ivas->renderer_type == RENDERER_BINAURAL_FASTCONV ) + { + /* Allocate TD renderer for the objects in DISC mode */ + if ( st_ivas->hBinRendererTd == NULL ) + { + if ( ( error = ivas_td_binaural_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + if ( ( error = ivas_masa_ism_data_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + /* Allocate 'hIsmRendererData' handle and memory for delay buffer within 'hMasaIsmData' */ + if ( ( error = ivas_sba_ism_separate_object_renderer_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + + st_ivas->nchan_transport += st_ivas->nchan_ism; + st_ivas->nCPE += ( st_ivas->nchan_ism + 1 ) >> 1; + } + else if ( ism_mode_old == ISM_SBA_MODE_DISC && st_ivas->ism_mode == ISM_MODE_NONE ) + { + /* ISM renderer handle */ + if ( st_ivas->hIsmRendererData != NULL ) + { + free( st_ivas->hIsmRendererData->interpolator ); + free( st_ivas->hIsmRendererData ); + st_ivas->hIsmRendererData = NULL; + } + ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 ); + ivas_masa_ism_data_close( &st_ivas->hMasaIsmData ); + + /* Time Domain binaural renderer handle */ + + if ( st_ivas->hBinRendererTd != NULL ) + { + if ( st_ivas->hBinRendererTd->HrFiltSet_p->ModelParams.modelROM == TRUE ) + { + ivas_td_binaural_close( &st_ivas->hBinRendererTd ); + if ( st_ivas->hHrtfTD != NULL ) + { + st_ivas->hHrtfTD = NULL; + } + } + } + nchan_transport_old += st_ivas->nchan_ism; + st_ivas->ism_mode = ISM_MODE_NONE; + } + else if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + st_ivas->nchan_transport += st_ivas->nchan_ism; + st_ivas->nCPE += ( st_ivas->nchan_ism + 1 ) >> 1; + nCPE_old = st_ivas->nCPE; + nchan_transport_old = st_ivas->nchan_transport; + } + } if ( ( error = ivas_corecoder_dec_reconfig( st_ivas, nSCE_old, nCPE_old, nchan_transport_old, sba_dirac_stereo_flag_old, st_ivas->hDecoderConfig->ivas_total_brate / st_ivas->nchan_transport, ( st_ivas->hDecoderConfig->ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS ) ) != IVAS_ERR_OK ) { return error; } + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + st_ivas->nchan_transport -= st_ivas->nchan_ism; + } + } + /*-----------------------------------------------------------------* * HP20 memories *-----------------------------------------------------------------*/ @@ -327,12 +436,21 @@ ivas_error ivas_sba_dec_reconfigure( * TD Decorrelator *-----------------------------------------------------------------*/ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0] != NULL ) + { + if ( ( 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 ) + { + return error; + } +#else if ( st_ivas->hDiracDecBin != NULL ) { if ( ( 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 } /*-----------------------------------------------------------------* @@ -347,8 +465,13 @@ ivas_error ivas_sba_dec_reconfigure( /*-----------------------------------------------------------------* * JBM TC buffer *-----------------------------------------------------------------*/ - +#ifdef API_5MS +#ifdef API_5MS_BASELINE + if ( st_ivas->hDecoderConfig->Opt_5ms == 1 ) +#endif +#else if ( st_ivas->hDecoderConfig->voip_active == 1 ) +#endif { int16_t tc_nchan_to_allocate; int16_t tc_nchan_tc; @@ -373,7 +496,7 @@ ivas_error ivas_sba_dec_reconfigure( } else { - if ( st_ivas->nchan_transport == 1 && ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) || ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) + if ( st_ivas->nchan_transport == 1 && ( ( st_ivas->renderer_type == RENDERER_DIRAC && st_ivas->hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) || ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) ) { tc_nchan_to_allocate++; /* we need a channel for the CNG in this case*/ } @@ -388,6 +511,39 @@ ivas_error ivas_sba_dec_reconfigure( } } + /*-----------------------------------------------------------------* + * floating-point output audio buffers + *-----------------------------------------------------------------*/ + +#ifdef API_5MS + if ( !st_ivas->hDecoderConfig->Opt_5ms ) +#else + if ( !st_ivas->hDecoderConfig->voip_active ) +#endif + { + nchan_out_buff = ivas_get_nchan_buffers_dec( st_ivas ); + + if ( 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 ( ( st_ivas->p_output_f[ch] = (float *) malloc( ( 48000 / FRAMES_PER_SEC ) * sizeof( float ) ) ) == 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( st_ivas->p_output_f[ch] ); + st_ivas->p_output_f[ch] = NULL; + } + } + } + return error; } @@ -403,7 +559,6 @@ ivas_error ivas_sba_dec_digest_tc( const int16_t nSamplesForRendering /* i : number of samples provided */ ) { - int16_t ch_idx; ivas_error error; @@ -420,7 +575,11 @@ ivas_error ivas_sba_dec_digest_tc( ivas_spar_dec_digest_tc( st_ivas, st_ivas->nchan_transport, nCldfbSlots, nSamplesForRendering ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0] != NULL && st_ivas->hDiracDecBin[0]->useTdDecorr ) +#else if ( st_ivas->hDiracDecBin != NULL && ( st_ivas->hDiracDecBin->useTdDecorr ) ) +#endif { int16_t nSamplesLeftForTD, default_frame; float *decorr_signal[BINAURAL_CHANNELS]; @@ -438,10 +597,20 @@ ivas_error ivas_sba_dec_digest_tc( while ( nSamplesLeftForTD ) { int16_t nSamplesToDecorr = min( nSamplesLeftForTD, default_frame ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0]->hTdDecorr ) +#else if ( st_ivas->hDiracDecBin->hTdDecorr ) +#endif { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_td_decorr_process( st_ivas->hDiracDecBin[0]->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr ); +#else ivas_td_decorr_process( st_ivas->hDiracDecBin->hTdDecorr, p_tc, decorr_signal, nSamplesToDecorr ); +#endif } + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) { decorr_signal[ch_idx] += nSamplesToDecorr; @@ -469,20 +638,22 @@ ivas_error ivas_sba_dec_digest_tc( *-------------------------------------------------------------------*/ void 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 */ + 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 *nSamplesAvailableNext, /* o : number of CLDFB slots still to render */ + float *output_f[] /* o : rendered time signal */ ) { int16_t slots_to_render, first_sf, last_sf, subframe_idx; uint16_t slot_size, ch; uint16_t nchan_internal, nchan_out; SPAR_DEC_HANDLE hSpar; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; float *output_f_local[MAX_OUTPUT_CHANNELS]; hSpar = st_ivas->hSpar; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; nchan_internal = ivas_sba_get_nchan_metadata( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate ); nchan_out = st_ivas->hIntSetup.nchan_out_woLFE + st_ivas->hIntSetup.num_lfe; @@ -524,22 +695,24 @@ void ivas_sba_dec_render( if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC ) { - ivas_sba_linear_renderer( output_f, *nSamplesRendered, st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hDecoderConfig->output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ); + ivas_sba_linear_renderer( output_f, *nSamplesRendered, st_ivas->hIntSetup.nchan_out_woLFE, + 0, + st_ivas->hDecoderConfig->output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ); } if ( st_ivas->hDirAC != NULL && hSpar->slots_rendered == hSpar->num_slots ) { if ( st_ivas->hDirAC->hConfig->dec_param_estim == 1 ) { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % hSpatParamRendCom->dirac_md_buffer_length; } else { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % hSpatParamRendCom->dirac_md_buffer_length; } } - *nSamplesAvailable = ( hSpar->num_slots - hSpar->slots_rendered ) * slot_size; + *nSamplesAvailableNext = ( hSpar->num_slots - hSpar->slots_rendered ) * slot_size; return; } diff --git a/lib_dec/ivas_sba_dirac_stereo_dec.c b/lib_dec/ivas_sba_dirac_stereo_dec.c index 6c1649d08705aa45414cd5b371db0ab4713fab97..1497c76dcbe69496242397b16bd3b0c23ed3776d 100644 --- a/lib_dec/ivas_sba_dirac_stereo_dec.c +++ b/lib_dec/ivas_sba_dirac_stereo_dec.c @@ -78,6 +78,13 @@ int16_t ivas_get_sba_dirac_stereo_flag( } } } + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + if ( output_config == AUDIO_CONFIG_STEREO ) + { + sba_dirac_stereo_flag = 1; + } + } return sba_dirac_stereo_flag; } @@ -486,14 +493,14 @@ static void ivas_sba_dirac_stereo_compute_hb_gain( *-------------------------------------------------------------------*/ static void ivas_sba_dirac_stereo_upmix_hb( - float hb_stereo_synth[CPE_CHANNELS][L_FRAME48k], /* i/o: stereo HB synthesis signal */ - float hb_synth[L_FRAME48k], /* i : HB signal */ - float hb_gain[NB_DIV], /* i : side gains for HB signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t mcmasa, /* i : McMASA flag */ - const int16_t sba_mono_flag, /* i : flag for mono output */ - const int16_t bwidth, /* i : bandwidth of signal */ - const STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i : Stereo DFT handle for mixing matrix */ + float hb_stereo_synth[CPE_CHANNELS][L_FRAME48k], /* i/o: stereo HB synthesis signal */ + float hb_synth[L_FRAME48k], /* i : HB signal */ + float hb_gain[NB_DIV], /* i : side gains for HB signal */ + const int16_t output_frame, /* i : output frame length per channel */ + const int16_t mcmasa, /* i : McMASA flag */ + const int16_t sba_mono_flag, /* i : flag for mono output */ + const int16_t bwidth, /* i : bandwidth of signal */ + const STEREO_DFT_DEC_DATA_HANDLE hStereoDft /* i : Stereo DFT handle for mixing matrix */ ) { int16_t i; @@ -588,7 +595,6 @@ static void ivas_sba_dirac_stereo_upmix_hb( } } - return; } @@ -600,10 +606,10 @@ static void ivas_sba_dirac_stereo_upmix_hb( *-------------------------------------------------------------------*/ static void ivas_sba_dirac_stereo_apply_td_stefi( - STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: output synthesis signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t spar_flag /* i : SPAR flag */ + STEREO_DFT_DEC_DATA_HANDLE hStereoDft, /* i/o: decoder DFT stereo handle */ + float *output[CPE_CHANNELS], /* i/o: output synthesis signal */ + const int16_t output_frame, /* i : output frame length per channel */ + const int16_t spar_flag /* i : SPAR flag */ ) { int16_t i; @@ -812,10 +818,10 @@ void ivas_sba_dirac_stereo_smooth_parameters( *-------------------------------------------------------------------*/ void ivas_sba_dirac_stereo_dec( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: output synthesis signal */ - const int16_t output_frame, /* i : output frame length per channel */ - const int16_t mcmasa /* i : McMASA flag */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ + float *output[CPE_CHANNELS], /* i/o: output synthesis signal */ + const int16_t output_frame, /* i : output frame length per channel */ + const int16_t mcmasa /* i : McMASA flag */ ) { int16_t dtx_flag, fd_cng_flag; @@ -849,7 +855,7 @@ void ivas_sba_dirac_stereo_dec( memOffset = NS2SA( output_frame * FRAMES_PER_SEC, IVAS_DEC_DELAY_NS - DELAY_BWE_TOTAL_NS ); ivas_sba_dirac_stereo_config( hStereoDft->hConfig ); - hStereoDft->nbands = ivas_sba_dirac_stereo_band_config( hStereoDft->band_limits, st_ivas->hDecoderConfig->output_Fs, hStereoDft->NFFT, ( st_ivas->ivas_format == SBA_FORMAT && !mcmasa ) ); + hStereoDft->nbands = ivas_sba_dirac_stereo_band_config( hStereoDft->band_limits, st_ivas->hDecoderConfig->output_Fs, hStereoDft->NFFT, ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && !mcmasa ) ); stereo_dft_dec_update( hStereoDft, output_frame, 1 /*st_ivas->sba_dirac_stereo_flag*/ ); if ( st_ivas->nchan_transport > 1 ) { @@ -873,9 +879,9 @@ void ivas_sba_dirac_stereo_dec( /* mapping of DirAC parameters (azimuth, elevation, diffuseness) to DFT Stereo parameters (side gain, prediction gain) */ map_params_dirac_to_stereo( hStereoDft, st_ivas->hQMetaData, tmp_synth, DFT[0], st_ivas->ivas_format == MC_FORMAT, - ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ) ? hSCE->hCoreCoder[0]->L_frame : output_frame, - ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ) ); - if ( st_ivas->ivas_format == SBA_FORMAT && !mcmasa ) + ( ( st_ivas->ivas_format != SBA_FORMAT && st_ivas->ivas_format != SBA_ISM_FORMAT ) || mcmasa ) ? hSCE->hCoreCoder[0]->L_frame : output_frame, + ( ( st_ivas->ivas_format != SBA_FORMAT && st_ivas->ivas_format != SBA_ISM_FORMAT ) || mcmasa ) ); + if ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && !mcmasa ) { set_f( hStereoDft->res_pred_gain, 1.f, 3 * STEREO_DFT_BAND_MAX ); } @@ -885,7 +891,8 @@ void ivas_sba_dirac_stereo_dec( ( st_ivas->hSpar != NULL && !mcmasa ) ? st_ivas->hSpar->hMdDec : NULL, ( st_ivas->hSpar != NULL && !mcmasa ) ? st_ivas->hSpar->hFbMixer->cross_fade_start_offset : 0, st_ivas->hDecoderConfig->output_Fs, st_ivas->nchan_transport, - ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate ) ); + ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ) ); /* DFT synthesis */ stereo_dft_dec_synthesize( hCPE, DFT, 0, output[0], output_frame ); @@ -918,7 +925,7 @@ void ivas_sba_dirac_stereo_dec( ivas_sba_dirac_stereo_compute_hb_gain( hStereoDft, hb_gain ); ivas_sba_dirac_stereo_upmix_hb( hb_synth_stereo, hSCE->save_hb_synth, hb_gain, output_frame, - ( st_ivas->ivas_format != SBA_FORMAT || mcmasa ), sba_mono_flag, hSCE->hCoreCoder[0]->bwidth, hStereoDft ); + ( ( st_ivas->ivas_format != SBA_FORMAT && st_ivas->ivas_format != SBA_ISM_FORMAT ) || mcmasa ), sba_mono_flag, hSCE->hCoreCoder[0]->bwidth, hStereoDft ); /* add HB to ACELP core */ v_add( output[0], hb_synth_stereo[0], output[0], output_frame ); @@ -927,7 +934,7 @@ void ivas_sba_dirac_stereo_dec( v_add( output[1], hb_synth_stereo[1], output[1], output_frame ); /* apply TD Stereo Filling as is done in ICBWE */ - ivas_sba_dirac_stereo_apply_td_stefi( hStereoDft, output, output_frame, ( st_ivas->ivas_format == SBA_FORMAT && !mcmasa ) ); + ivas_sba_dirac_stereo_apply_td_stefi( hStereoDft, output, output_frame, ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && !mcmasa ) ); } } diff --git a/lib_dec/ivas_sba_rendering_internal.c b/lib_dec/ivas_sba_rendering_internal.c index 6f3dd13b7a560ee083b59b8991db441840454416..aef59a576ed2448715aaa464e284925fdf46e7f1 100644 --- a/lib_dec/ivas_sba_rendering_internal.c +++ b/lib_dec/ivas_sba_rendering_internal.c @@ -219,10 +219,11 @@ void ivas_mc2sba( * Get TCs from Ambisonics signal in ACN *-------------------------------------------------------------------*/ +/*! r: SBA DirAC stereo flag */ int16_t ivas_sba_remapTCs( - float sba_data[][L_FRAME48k], /* i/o: SBA signals */ - Decoder_Struct *st_ivas, /* i/o: decoder struct */ - const int16_t output_frame /* i : frame length */ + float *sba_data[], /* i/o: SBA signals */ + Decoder_Struct *st_ivas, /* i/o: decoder struct */ + const int16_t output_frame /* i : frame length */ ) { int16_t nchan_remapped; @@ -365,15 +366,22 @@ void ivas_ism2sba_sf( for ( j = 0; j < sba_num_chans; j++ ) { g2 = hIsmRendererData->interpolator + offset; +#ifndef FIX_678_ISM_SBA_ASAN g1 = 1 - *g2; +#endif tc = buffer_in[i] + offset; out = buffer_out[j]; gain = hIsmRendererData->gains[i][j]; prev_gain = hIsmRendererData->prev_gains[i][j]; for ( k = 0; k < n_samples_to_render; k++ ) { +#ifdef FIX_678_ISM_SBA_ASAN + g1 = 1.0f - *g2; +#endif *( out++ ) += ( ( *( g2++ ) ) * gain + g1 * prev_gain ) * ( *( tc++ ) ); +#ifndef FIX_678_ISM_SBA_ASAN g1 = 1.0f - *g2; +#endif } } } @@ -387,13 +395,15 @@ void ivas_ism2sba_sf( * SBA upmix & rendering *-------------------------------------------------------------------*/ -void ivas_sba_upmixer_renderer( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */ - float output[][L_FRAME48k], /* i/o: transport/output audio channels */ - const int16_t output_frame /* i : output frame length */ +ivas_error ivas_sba_upmixer_renderer( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder struct */ + float *output[], /* i/o: transport/output audio channels */ + const int16_t output_frame /* i : output frame length */ ) { int16_t nchan_internal; + int16_t sba_ch_idx; + ivas_error error; push_wmops( "ivas_sba_upmixer_renderer" ); @@ -404,19 +414,31 @@ void ivas_sba_upmixer_renderer( if ( st_ivas->renderer_type == RENDERER_SBA_LINEAR_DEC ) { - float *output_f[MAX_OUTPUT_CHANNELS]; + float *output_f[MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS]; int16_t ch; + AUDIO_CONFIG output_config; - for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + output_config = ( st_ivas->ivas_format == SBA_ISM_FORMAT ? st_ivas->hOutSetup.output_config : st_ivas->hDecoderConfig->output_config ); + + sba_ch_idx = 0; + if ( st_ivas->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + sba_ch_idx = st_ivas->nchan_ism; + } + + for ( ch = 0; ch < ivas_get_nchan_buffers_dec( st_ivas ) - sba_ch_idx; ch++ ) { output_f[ch] = output[ch]; } - ivas_sba_linear_renderer( output_f, output_frame, st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->hDecoderConfig->output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ); + if ( ( error = ivas_sba_linear_renderer( output_f, output_frame, st_ivas->hIntSetup.nchan_out_woLFE, st_ivas->nchan_ism, output_config, st_ivas->hOutSetup, st_ivas->hoa_dec_mtx ) ) != IVAS_ERR_OK ) + { + return error; + } } pop_wmops(); - return; + return IVAS_ERR_OK; } @@ -487,9 +509,10 @@ static void ivas_sba_mtx_mult( *-------------------------------------------------------------------*/ 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 */ + 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, const AUDIO_CONFIG output_config, /* i : output audio configuration */ const IVAS_OUTPUT_SETUP output_setup, /* i : output format setup */ const float hoa_dec_mtx[] /* i : HOA decoding mtx */ @@ -558,6 +581,16 @@ ivas_error ivas_sba_linear_renderer( set_zero( output_f[i], output_frame ); } break; + case AUDIO_CONFIG_EXTERNAL: + for ( i = output_setup.nchan_out_woLFE - 1; i >= nchan_ism; i-- ) + { + mvr2r( output_f[i - nchan_ism], output_f[i], output_frame ); + } + for ( ; i >= 0; i-- ) + { + set_zero( output_f[i], output_frame ); + } + break; default: return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: illegal output configuration, Exiting.\n" ); } @@ -573,11 +606,12 @@ ivas_error ivas_sba_linear_renderer( *-------------------------------------------------------------------*/ void ivas_sba_mix_matrix_determiner( - SPAR_DEC_HANDLE hSpar, /* i/o: SPAR decoder handle */ - float output[][L_FRAME48k], /* 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 */ + 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*/ ) { int16_t i, ch; @@ -622,7 +656,7 @@ void ivas_sba_mix_matrix_determiner( /* Mixing matrix determiner */ num_bands_out = hSpar->hFbMixer->pFb->filterbank_num_bands; ivas_spar_dec_gen_umx_mat( hSpar->hMdDec, nchan_transport, num_bands_out, bfi, - MAX_PARAM_SPATIAL_SUBFRAMES ); + num_md_sub_frames ); return; } diff --git a/lib_dec/ivas_sce_dec.c b/lib_dec/ivas_sce_dec.c old mode 100755 new mode 100644 index 2e10552296ac32ad407d38cacef225c4a374cfb7..945a93858ac15f9e0684ab815bcb0aa870e2d7bf --- a/lib_dec/ivas_sce_dec.c +++ b/lib_dec/ivas_sce_dec.c @@ -54,7 +54,7 @@ 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][L_FRAME48k], /* o : output synthesis signal */ + 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 */ ) @@ -123,12 +123,8 @@ ivas_error ivas_sce_dec( /* only WB is supported */ st->bwidth = WB; } -#ifdef ISM_FB else if ( ( hSCE->element_brate < MIN_BRATE_FB_STEREO && !st->is_ism_format ) || ( hSCE->element_brate < MIN_BRATE_FB_ISM && st->is_ism_format ) ) -#else - else if ( hSCE->element_brate < MIN_BRATE_FB_STEREO ) -#endif { /* WB and SWB are supported */ st->bwidth = get_next_indice( st, 1 ) + WB; @@ -157,10 +153,18 @@ ivas_error ivas_sce_dec( if ( ( st_ivas->hQMetaData != NULL ) && ( st_ivas->ivas_format != SBA_FORMAT ) ) { - if ( st_ivas->mc_mode == MC_MODE_MCMASA && ivas_total_brate >= MCMASA_SEPARATE_BRATE ) + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + st->bits_frame_nominal = (int16_t) ( ( hSCE->element_brate / FRAMES_PER_SEC ) - ISM_NB_BITS_METADATA_NOMINAL ); + } + else if ( ( st_ivas->mc_mode == MC_MODE_MCMASA && ivas_total_brate >= MCMASA_SEPARATE_BRATE ) || ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) ) { st->bits_frame_nominal = (int16_t) ( hSCE->element_brate / FRAMES_PER_SEC ); } + else if ( st_ivas->ism_mode == ISM_MODE_NONE && st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + st->bits_frame_nominal = (int16_t) ( st_ivas->hSpar->core_nominal_brate / FRAMES_PER_SEC ); + } else { st->bits_frame_nominal = st_ivas->hQMetaData->bits_frame_nominal; @@ -175,6 +179,7 @@ ivas_error ivas_sce_dec( st->bits_frame_nominal = (int16_t) ( ( hSCE->element_brate / FRAMES_PER_SEC ) - ISM_NB_BITS_METADATA_NOMINAL ); } + /* set "total_brate" */ if ( !st_ivas->bfi && ivas_total_brate == IVAS_SID_5k2 ) { @@ -189,23 +194,18 @@ ivas_error ivas_sce_dec( { st->total_brate = ivas_total_brate; } -#ifndef FIX_565_SBA_BURST_IN_FEC - else if ( st_ivas->ivas_format != ISM_FORMAT ) /* note: in ISMs, total_brate[] is set in ivas_ism_config() */ + else if ( !st_ivas->bfi && st_ivas->ivas_format != ISM_FORMAT && st_ivas->ivas_format != MASA_ISM_FORMAT ) /* note: in ISMs, total_brate[] is set in ivas_ism_config() */ { st->total_brate = hSCE->element_brate - nb_bits_metadata * FRAMES_PER_SEC; } -#else - else if ( !st_ivas->bfi && st_ivas->ivas_format != ISM_FORMAT ) /* note: in ISMs, total_brate[] is set in ivas_ism_config() */ - { - st->total_brate = hSCE->element_brate - nb_bits_metadata * FRAMES_PER_SEC; - } -#endif + /*----------------------------------------------------------------* * Core codec configuration *----------------------------------------------------------------*/ /* set ACELP12k8 / ACELP16k flag for flexible ACELP core */ - if ( st_ivas->ivas_format == ISM_FORMAT && st->low_rate_mode && !( st->total_brate == SID_2k40 || st->total_brate == FRAME_NO_DATA ) ) + if ( ( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) && + st->low_rate_mode && !( st->total_brate == SID_2k40 || st->total_brate == FRAME_NO_DATA ) ) { st->flag_ACELP16k = 0; } @@ -301,9 +301,13 @@ ivas_error ivas_sce_dec( dbgwrite( &st->element_mode, sizeof( int16_t ), 1, output_frame, fname( debug_dir, "element_mode", 0, sce_id, DEC ) ); dbgwrite( output, sizeof( float ), output_frame, 1, fname( debug_dir, "output.sce", 0, sce_id, DEC ) ); - tmpF = 0; - dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.cpe", 0, sce_id, DEC ) ); - dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.mct", 0, sce_id, DEC ) ); + + if ( st_ivas->ivas_format != MASA_ISM_FORMAT ) + { + tmpF = 0; + dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.cpe", 0, sce_id, DEC ) ); + dbgwrite( &tmpF, sizeof( float ), 1, output_frame, fname( debug_dir, "output.mct", 0, sce_id, DEC ) ); + } } } #endif @@ -366,7 +370,7 @@ ivas_error create_sce_dec( st->total_brate = hSCE->element_brate; /* dummy initialization for getting right pointers initialization of input buffers in init_coder_ace_plus() */ st->mct_chan_mode = MCT_CHAN_MODE_REGULAR; st->is_ism_format = 0; - if ( st_ivas->ivas_format == ISM_FORMAT ) + if ( st_ivas->ivas_format == ISM_FORMAT || st_ivas->ivas_format == MASA_ISM_FORMAT ) { st->is_ism_format = 1; } diff --git a/lib_dec/ivas_sns_dec.c b/lib_dec/ivas_sns_dec.c index e11551d2a603439892d7d0589a20ffebe908d8d7..99fe5eb523dc1932cbe55d4cb2a3d27437e76ab8 100644 --- a/lib_dec/ivas_sns_dec.c +++ b/lib_dec/ivas_sns_dec.c @@ -161,7 +161,7 @@ void sns_avq_dec( { for ( i = 0; i < M; i++ ) { - SNS_Q[0][i] = SNS_Q[0][M + i]; + SNS_Q[0][i] = SNS_Q[1][i]; } sns_2st_dec( SNS_Q[0], index ); } @@ -178,11 +178,11 @@ void sns_avq_dec( *-------------------------------------------------------------------*/ 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, - float *SNS_Ql, /* o : Quantized SNS vectors (left channel) */ - float *SNS_Qr /* o : Quantized SNS vectors (right channe) */ + 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) */ ) { int16_t i, stereo_mode; @@ -228,6 +228,13 @@ void sns_avq_dec_stereo( return; } + +/*------------------------------------------------------------------- + * dequantize_sns() + * + * Dequantize SNS + *-------------------------------------------------------------------*/ + void dequantize_sns( int16_t indices[CPE_CHANNELS][NPRM_LPC_NEW], float snsQ_out[CPE_CHANNELS][NB_DIV][M], @@ -289,4 +296,6 @@ void dequantize_sns( } } } + + return; } diff --git a/lib_dec/ivas_spar_decoder.c b/lib_dec/ivas_spar_decoder.c old mode 100755 new mode 100644 index 906a73b31730d63c67fed8184637fa8f4a5e3532..d38953212b403a90ee9d3be9558eee69d69c5da4 --- a/lib_dec/ivas_spar_decoder.c +++ b/lib_dec/ivas_spar_decoder.c @@ -114,7 +114,9 @@ ivas_error ivas_spar_dec_open( } /* MD handle */ - if ( ( error = ivas_spar_md_dec_open( &hSpar->hMdDec, st_ivas->hDecoderConfig, num_channels_internal, sba_order_internal, st_ivas->sid_format ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_spar_md_dec_open( &hSpar->hMdDec, st_ivas->hDecoderConfig, num_channels_internal, sba_order_internal, st_ivas->sid_format, + st_ivas->last_active_ivas_total_brate /* i : IVAS last active bitrate */ + ) ) != IVAS_ERR_OK ) { return error; } @@ -173,6 +175,7 @@ ivas_error ivas_spar_dec_open( } } hSpar->i_subframe = 0; + hSpar->AGC_flag = 0; /*-----------------------------------------------------------------* * Configuration - set SPAR high-level parameters @@ -213,7 +216,15 @@ ivas_error ivas_spar_dec_open( } /* allocate transport channels*/ - if ( st_ivas->hDecoderConfig->voip_active == 1 && st_ivas->hTcBuffer == NULL ) + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms && +#endif +#else + st_ivas->hDecoderConfig->voip_active == 1 && +#endif + st_ivas->hTcBuffer == NULL ) { int16_t nchan_to_allocate; int16_t nchan_tc; @@ -317,14 +328,30 @@ ivas_error ivas_spar_dec( bit_stream_orig = st0->bit_stream; next_bit_pos_orig = st0->next_bit_pos; + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + last_bit_pos = (int16_t) ( ( hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ) - nb_bits_read[1]; + } + else + { + *nb_bits_read = 0; + last_bit_pos = 0; + } + /* read DirAC bitstream */ if ( st_ivas->hQMetaData != NULL ) { - ivas_dirac_dec_read_BS( hDecoderConfig->ivas_total_brate, st0, st_ivas->hDirAC, st_ivas->hQMetaData, nb_bits_read, - ivas_get_hodirac_flag( hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ), st_ivas->hSpar->dirac_to_spar_md_bands ); + ivas_dirac_dec_read_BS( hDecoderConfig->ivas_total_brate, st0, st_ivas->hDirAC, st_ivas->hSpatParamRendCom, st_ivas->hQMetaData, nb_bits_read, last_bit_pos, ivas_get_hodirac_flag( hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ), st_ivas->hSpar->dirac_to_spar_md_bands ); } - last_bit_pos = (int16_t) ( ( hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ); + if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + last_bit_pos = (int16_t) ( ( hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ) - nb_bits_read[1]; + } + else + { + last_bit_pos = (int16_t) ( ( hDecoderConfig->ivas_total_brate / FRAMES_PER_SEC ) - 1 ); + } if ( !st0->bfi && hDecoderConfig->ivas_total_brate == IVAS_SID_5k2 ) { last_bit_pos -= SID_FORMAT_NBITS; @@ -340,12 +367,12 @@ ivas_error ivas_spar_dec( st0->bit_stream = bstr_meta; st0->next_bit_pos = 0; st0->bits_frame = min( MAX_BITS_METADATA, last_bit_pos + 1 ); -#ifdef FIX_565_SBA_BURST_IN_FEC + if ( !st0->bfi ) -#endif { st0->total_brate = hDecoderConfig->ivas_total_brate; /* to avoid BER detect */ } + ivas_spar_dec_MD( st_ivas, st0 ); *nb_bits_read = st0->next_bit_pos + nb_bits_read_orig; @@ -725,7 +752,8 @@ static void ivas_spar_dec_MD( bfi = st_ivas->bfi; ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; num_channels = ivas_sba_get_nchan_metadata( sba_order, ivas_total_brate ); - num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, st_ivas->hDecoderConfig->ivas_total_brate ); + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); num_bands_out = hSpar->hFbMixer->pFb->filterbank_num_bands; @@ -777,7 +805,10 @@ static void ivas_spar_dec_MD( if ( ivas_total_brate > IVAS_SID_5k2 && !bfi && hSpar->hMdDec->dtx_vad ) { - hSpar->AGC_flag = get_next_indice( st0, 1 ); + if ( hSpar->hMdDec->spar_md_cfg.nchan_transport == 1 ) + { + hSpar->AGC_flag = get_next_indice( st0, 1 ); + } ivas_agc_read_bits( hSpar->hAgcDec, st0, hSpar->hMdDec->spar_md_cfg.nchan_transport, hSpar->AGC_flag ); } @@ -974,7 +1005,7 @@ static void ivas_spar_get_skip_mat( { for ( spar_band = 0; spar_band < num_spar_bands; spar_band++ ) { - if ( hSpar->hMdDec->mixer_mat[out_ch][in_ch][spar_band + i_ts * MAX_PARAM_SPATIAL_SUBFRAMES] != 0.0f ) + if ( hSpar->hMdDec->mixer_mat[out_ch][in_ch][spar_band + i_ts * IVAS_MAX_NUM_BANDS] != 0.0f ) { skip_flag = 0; break; @@ -1011,14 +1042,14 @@ static void ivas_spar_calc_smooth_facs( bin = 0; for ( b = 0; b < nbands_spar; b++ ) { - if ( b > 0 && bin2band->p_cldfb_map_to_spar_band[bin] < bin2band->p_cldfb_map_to_spar_band[bin - 1] ) + if ( bin >= CLDFB_NO_CHANNELS_MAX || ( b > 0 && bin2band->p_cldfb_map_to_spar_band[bin] < bin2band->p_cldfb_map_to_spar_band[bin - 1] ) ) { break; } /* calculate band-wise subframe energies */ subframe_band_nrg[b] = 0.f; - while ( b == bin2band->p_cldfb_map_to_spar_band[bin] ) + while ( bin < CLDFB_NO_CHANNELS_MAX && b == bin2band->p_cldfb_map_to_spar_band[bin] ) { for ( ts = 0; ts < MAX_PARAM_SPATIAL_SUBFRAMES; ts++ ) { @@ -1084,9 +1115,9 @@ static void ivas_spar_calc_smooth_facs( *-------------------------------------------------------------------*/ void ivas_spar_dec_agc_pca( - Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output[][L_FRAME48k], /* i/o: input/output audio channels */ - const int16_t output_frame /* i : output frame length */ + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + float *output[], /* i/o: input/output audio channels */ + const int16_t output_frame /* i : output frame length */ ) { int16_t nchan_transport; @@ -1170,6 +1201,10 @@ void ivas_spar_dec_set_render_map( hSpar->subframes_rendered = 0; set_s( hSpar->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); ivas_jbm_dec_get_adapted_subframes( nCldfbTs, hSpar->subframe_nbslots, &hSpar->nb_subframes ); +#ifdef API_5MS + st_ivas->hTcBuffer->nb_subframes = hSpar->nb_subframes; + mvs2s( hSpar->subframe_nbslots, st_ivas->hTcBuffer->subframe_nbslots, hSpar->nb_subframes ); +#endif ivas_jbm_dec_get_md_map( DEFAULT_JBM_CLDFB_TIMESLOTS, nCldfbTs, 1, 0, DEFAULT_JBM_CLDFB_TIMESLOTS, hSpar->render_to_md_map ); return; @@ -1200,7 +1235,8 @@ void ivas_spar_dec_set_render_params( nchan_transport = hSpar->hMdDec->spar_md_cfg.nchan_transport; num_bands_out = hSpar->hFbMixer->pFb->filterbank_num_bands; ivas_spar_dec_gen_umx_mat( hSpar->hMdDec, nchan_transport, num_bands_out, st_ivas->bfi, - ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate ) ); + ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ) ); ivas_spar_dec_set_render_map( st_ivas, n_cldfb_slots ); @@ -1292,12 +1328,13 @@ void ivas_spar_dec_digest_tc( void ivas_spar_dec_upmixer( Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ - float output[][L_FRAME48k], /* i/o: input/output audio channels */ + 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 */ ) { SPAR_DEC_HANDLE hSpar; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; int16_t nchan_transport, nchan_out; int16_t subframe_idx, n, i; int16_t n_samples_sf; @@ -1312,7 +1349,7 @@ void ivas_spar_dec_upmixer( for ( n = 0; n < MAX_OUTPUT_CHANNELS; n++ ) { - output_f_local[n] = &output[n][0]; + output_f_local[n] = output[n]; } for ( n = 0; n < nchan_internal; n++ ) @@ -1377,15 +1414,16 @@ void ivas_spar_dec_upmixer( st_ivas->hTcBuffer->tc[n] = NULL; } - if ( st_ivas->hDirAC != 0 ) + if ( st_ivas->hDirAC != NULL && st_ivas->hSpatParamRendCom != NULL ) { + hSpatParamRendCom = st_ivas->hSpatParamRendCom; if ( st_ivas->hDirAC->hConfig->dec_param_estim == 1 ) { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_CLDFB_TIMESLOTS ) % hSpatParamRendCom->dirac_md_buffer_length; } else { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % hSpatParamRendCom->dirac_md_buffer_length; } } @@ -1431,9 +1469,8 @@ void ivas_spar_dec_upmixer_sf( num_cldfb_bands = hSpar->hFbMixer->pFb->fb_bin_to_band.num_cldfb_bands; numch_in = hSpar->hFbMixer->fb_cfg->num_in_chans; numch_out = hSpar->hFbMixer->fb_cfg->num_out_chans; - - num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, hDecoderConfig->ivas_total_brate ); - + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_order, hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); slot_idx_start = hSpar->slots_rendered; for ( i = 0; i < nchan_internal; i++ ) @@ -1666,19 +1703,25 @@ void ivas_spar_dec_upmixer_sf( idx_lfe = 0; outchannels = st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe; + for ( ch = 0; ch < outchannels; ch++ ) { if ( ( st_ivas->hOutSetup.num_lfe > 0 ) && ( st_ivas->hOutSetup.index_lfe[idx_lfe] == ch ) ) { set_zero( output[ch], hSpar->subframe_nbslots[hSpar->subframes_rendered] * num_cldfb_bands ); - if ( idx_lfe < ( st_ivas->hDirAC->hOutSetup.num_lfe - 1 ) ) + if ( idx_lfe < ( st_ivas->hDirACRend->hOutSetup.num_lfe - 1 ) ) { idx_lfe++; } } else { - if ( hDecoderConfig->output_config == AUDIO_CONFIG_FOA || !( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + if ( hDecoderConfig->output_config == AUDIO_CONFIG_FOA || + !( st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_IR || st_ivas->hOutSetup.output_config == AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) ) { for ( ts = 0; ts < hSpar->subframe_nbslots[hSpar->subframes_rendered]; ts++ ) { diff --git a/lib_dec/ivas_spar_md_dec.c b/lib_dec/ivas_spar_md_dec.c index e83aa7e6174a85bb02b6be3cb08d87c7034d8c2c..909284d810606a52ad70527cfdbbc523acf6817a 100644 --- a/lib_dec/ivas_spar_md_dec.c +++ b/lib_dec/ivas_spar_md_dec.c @@ -62,15 +62,13 @@ static const int16_t ivas_spar_dec_plc_spatial_target[IVAS_SPAR_MAX_CH] = { 1, 0 * Static functions declaration *------------------------------------------------------------------------------------------*/ -static void ivas_get_spar_matrices( ivas_spar_md_dec_state_t *hMdDec, const int16_t num_bands_out, const int16_t n_ts, const int16_t bw, const int16_t dtx_vad, const int16_t nB, const int16_t numch_out, const int16_t active_w_vlbr ); +static void ivas_get_spar_matrices( ivas_spar_md_dec_state_t *hMdDec, const int16_t num_bands_out, const int16_t n_ts, const int16_t bw, const int16_t dtx_vad, const int16_t nB, const int16_t numch_out, const int16_t active_w_vlbr, const int16_t dyn_active_w_flag ); -static void ivas_decode_arith_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, const uint16_t qsi, const int16_t nB, const int16_t bands_bw, int16_t *pDo_diff, const int16_t freq_diff, const int16_t planarCP, const int16_t strat, const int32_t ivas_total_brate ); +static void ivas_decode_arith_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, const uint16_t qsi, const int16_t nB, const int16_t bands_bw, int16_t *pDo_diff, const int16_t strat, const int32_t ivas_total_brate ); -static void ivas_decode_huffman_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, const uint16_t qsi, const int16_t nB, const int16_t bands_bw, const int16_t planarCP ); +static void ivas_decode_huffman_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, const uint16_t qsi, const int16_t nB, const int16_t bands_bw ); -static void ivas_fill_band_coeffs_idx( ivas_band_coeffs_ind_t *pBands_idx, const int16_t nB, int16_t *pSymbol_re, ivas_cell_dim_t *pCell_dims, ivas_coeffs_type_t coeff_type, const int16_t planarCP ); - -static void ivas_get_band_idx_from_differential( ivas_spar_md_t *pSpar_md, const int16_t q_levels[2], const int16_t one_sided, const int16_t nB, const ivas_coeffs_type_t coeff_type ); +static void ivas_fill_band_coeffs_idx( ivas_band_coeffs_ind_t *pBands_idx, const int16_t nB, int16_t *pSymbol_re, ivas_cell_dim_t *pCell_dims, ivas_coeffs_type_t coeff_type ); static void ivas_mat_col_rearrange( float in_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], const int16_t order[IVAS_SPAR_MAX_CH], const int16_t i_ts, float ***mixer_mat, const int16_t bands, const int16_t num_ch ); @@ -84,7 +82,7 @@ static void ivas_parse_parameter_bitstream_dtx( ivas_spar_md_t *pSpar_md, Decode static ivas_error ivas_deindex_real_index( const int16_t *index, const int16_t q_levels, const float min_value, const float max_value, float *quant, const int16_t num_ch_dim2 ); -static void ivas_spar_dec_parse_md_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, int16_t *nB, int16_t *bands_bw, int16_t *dtx_vad, const int32_t ivas_total_brate, const int16_t use_planar_coeff, const int16_t sba_inactive_mode, const int32_t last_active_brate ); +static void ivas_spar_dec_parse_md_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder_State *st, int16_t *nB, int16_t *bands_bw, int16_t *dtx_vad, const int32_t ivas_total_brate, const int16_t sba_inactive_mode, const int32_t last_active_brate ); /*------------------------------------------------------------------------- @@ -92,15 +90,14 @@ static void ivas_spar_dec_parse_md_bs( ivas_spar_md_dec_state_t *hMdDec, Decoder * * Allocate and initialize SPAR MD decoder matrices *------------------------------------------------------------------------*/ - -static ivas_error ivas_spar_md_dec_matrix_open( +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 /* i : number of MD subframes */ ) { int16_t i, j; - + int16_t k; if ( ( hMdDec->spar_md.band_coeffs = (ivas_band_coeffs_t *) malloc( IVAS_MAX_NUM_BANDS * num_md_sub_frames * sizeof( ivas_band_coeffs_t ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for band_coeffs in SPAR MD" ); @@ -237,6 +234,19 @@ static ivas_error ivas_spar_md_dec_matrix_open( } } } + for ( i = 0; i < num_channels; i++ ) + { + for ( j = 0; j < num_channels; j++ ) + { + for ( k = 0; k < IVAS_MAX_NUM_BANDS; k++ ) + { + hMdDec->spar_coeffs_prev.C_re[i][j][k] = 0.0f; + hMdDec->spar_coeffs_prev.P_re[i][j][k] = 0.0f; + hMdDec->spar_coeffs_tar.C_re[i][j][k] = 0.0f; + hMdDec->spar_coeffs_tar.P_re[i][j][k] = 0.0f; + } + } + } return IVAS_ERR_OK; } @@ -250,8 +260,9 @@ static ivas_error ivas_spar_md_dec_matrix_open( /*! r: number of MD subframes */ int16_t ivas_get_spar_dec_md_num_subframes( - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - const int32_t ivas_total_brate /* i : IVAS total bitrate */ + const int16_t sba_order, /* i : Ambisonic (SBA) order */ + const int32_t ivas_total_brate, /* i : IVAS total bitrate */ + const int32_t ivas_last_active_brate /* i : IVAS last active bitrate */ ) { int16_t num_subframes; @@ -265,6 +276,12 @@ int16_t ivas_get_spar_dec_md_num_subframes( } } + if ( ( ivas_total_brate <= IVAS_SID_5k2 && ivas_last_active_brate < IVAS_24k4 ) || ( ivas_total_brate > IVAS_SID_5k2 && ivas_total_brate < IVAS_24k4 ) ) + { + + num_subframes = 1; + } + return ( num_subframes ); } @@ -280,7 +297,8 @@ ivas_error ivas_spar_md_dec_open( 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 int16_t sid_format, /* i : SID format */ + const int32_t last_active_ivas_total_brate /* i : IVAS last active bitrate */ ) { ivas_spar_md_dec_state_t *hMdDec; @@ -294,7 +312,7 @@ ivas_error ivas_spar_md_dec_open( return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD decoder" ); } - num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, hDecoderConfig->ivas_total_brate ); + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, hDecoderConfig->ivas_total_brate, last_active_ivas_total_brate ); if ( ( error = ivas_spar_md_dec_matrix_open( hMdDec, num_channels, num_md_sub_frames ) ) != IVAS_ERR_OK ) { @@ -316,6 +334,7 @@ ivas_error ivas_spar_md_dec_open( { hMdDec->table_idx = ivas_get_spar_table_idx( hDecoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); } + if ( ( error = ivas_spar_md_dec_init( hMdDec, hDecoderConfig, num_channels, sba_order ) ) != IVAS_ERR_OK ) { return error; @@ -332,8 +351,7 @@ ivas_error ivas_spar_md_dec_open( * * Deallocate SPAR MD decoder matrices *------------------------------------------------------------------------*/ - -static void ivas_spar_md_dec_matrix_close( +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 */ ) @@ -479,8 +497,12 @@ ivas_error ivas_spar_md_dec_init( const int16_t sba_order /* i : SBA order */ ) { - int16_t i, j, k; + int16_t i, j; +#ifdef CR_FIX_698_SBA_MSAN + int16_t nchan_transport, num_md_sub_frames; +#else int16_t nchan_transport; +#endif float pFC[IVAS_MAX_NUM_BANDS], PR_minmax[2]; ivas_sba_get_spar_hoa_md_flag( sba_order, hDecoderConfig->ivas_total_brate, &hMdDec->spar_hoa_md_flag, &hMdDec->spar_hoa_dirac2spar_md_flag ); @@ -521,54 +543,15 @@ ivas_error ivas_spar_md_dec_init( set_s( hMdDec->base_band_age, 0, IVAS_MAX_NUM_BANDS ); hMdDec->spar_plc_num_lost_frames = 0; hMdDec->spar_plc_enable_fadeout_flag = 1; - - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - for ( k = 0; k < IVAS_MAX_NUM_BANDS; k++ ) - { - hMdDec->spar_coeffs_prev.C_re[i][j][k] = 0; - } - } - } - - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - for ( k = 0; k < IVAS_MAX_NUM_BANDS; k++ ) - { - hMdDec->spar_coeffs_prev.P_re[i][j][k] = 0; - } - } - } - - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - for ( k = 0; k < IVAS_MAX_NUM_BANDS; k++ ) - { - hMdDec->spar_coeffs_tar.C_re[i][j][k] = 0; - } - } - } - - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - for ( k = 0; k < IVAS_MAX_NUM_BANDS; k++ ) - { - hMdDec->spar_coeffs_tar.P_re[i][j][k] = 0; - } - } - } - hMdDec->dtx_md_smoothing_cntr = 1; +#ifdef CR_FIX_698_SBA_MSAN + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, hDecoderConfig->ivas_total_brate, hDecoderConfig->ivas_total_brate ); + + ivas_clear_band_coeffs( hMdDec->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS, num_md_sub_frames ); +#else ivas_clear_band_coeffs( hMdDec->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS ); +#endif ivas_clear_band_coeff_idx( hMdDec->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdDec->spar_md_prev.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS ); @@ -584,6 +567,7 @@ ivas_error ivas_spar_md_dec_init( { set_zero( hMdDec->smooth_buf[i], 2 * SBA_DIRAC_NRG_SMOOTH_LONG + 1 ); } + for ( i = 0; i < IVAS_SPAR_MAX_CH; i++ ) { for ( j = 0; j < IVAS_SPAR_MAX_CH; j++ ) @@ -624,9 +608,6 @@ static ivas_error ivas_spar_set_dec_config( case 9: /* IVAS_HOA_2_CH */ hMdDec->num_decorr = IVAS_TD_DECORR_OUT_5CH; break; - case 16: /* IVAS_HOA_3_CH */ // ToDo: is this relevant? - hMdDec->num_decorr = IVAS_TD_DECORR_OUT_12CH; - break; case 6: /* IVAS_HOA_2_CH */ hMdDec->num_decorr = IVAS_TD_DECORR_OUT_2CH; break; @@ -658,6 +639,63 @@ static ivas_error ivas_spar_set_dec_config( return IVAS_ERR_OK; } +/*-----------------------------------------------------------------------------------------* + * Function ivas_dec_mono_sba_handling() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void ivas_dec_mono_sba_handling( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const int16_t sba_order /* i : Ambisonic (SBA) order */ +) +{ + int16_t mono_flag, b, block; + + mono_flag = 1; + + for ( b = 0; b < st_ivas->hQMetaData->q_direction[0].cfg.nbands; b++ ) + { + for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; ++block ) + { + float azimuth = st_ivas->hQMetaData->q_direction[0].band_data[b].azimuth[block]; + float elevation = st_ivas->hQMetaData->q_direction[0].band_data[b].azimuth[block]; + float energy_ratio = st_ivas->hQMetaData->q_direction[0].band_data[0].energy_ratio[block]; + if ( + ( azimuth != 0.0f ) || + ( elevation != 0.0f ) || + ( energy_ratio > 0.15f ) ) /* 0.15f is just above the lowest quantised value. */ + { + mono_flag = 0; + } + } + } + /* Combine the SPAR prediction coefs flag with the azimuth, elevation and energy ratio flag.*/ + mono_flag = mono_flag && ivas_spar_chk_zero_coefs( st_ivas, sba_order ); + + if ( mono_flag ) + { + /* Set Energy Ratio values to be zero */ + for ( b = 0; b < st_ivas->hQMetaData->q_direction[0].cfg.nbands; b++ ) + { + set_zero( st_ivas->hQMetaData->q_direction[0].band_data[b].energy_ratio, MAX_PARAM_SPATIAL_SUBFRAMES ); + } + if ( st_ivas->hDirAC != NULL ) + { + for ( block = 0; block < st_ivas->hSpatParamRendCom->dirac_md_buffer_length; ++block ) + { + /* Set directional Energy Ratio values to be zero */ + set_zero( st_ivas->hSpatParamRendCom->energy_ratio1[block], st_ivas->hSpatParamRendCom->num_freq_bands ); + if ( st_ivas->hQMetaData->no_directions == 2 ) + { + set_zero( st_ivas->hSpatParamRendCom->energy_ratio2[block], st_ivas->hSpatParamRendCom->num_freq_bands ); + } + /* Set Diffuseness values to be 1.0 */ + set_f( st_ivas->hSpatParamRendCom->diffuseness_vector[block], 1.0f, st_ivas->hSpatParamRendCom->num_freq_bands ); + } + } + } +} /*-----------------------------------------------------------------------------------------* * Function ivas_spar_md_dec_process() @@ -676,6 +714,7 @@ void ivas_spar_md_dec_process( ivas_spar_md_dec_state_t *hMdDec; int16_t num_md_chs; int16_t num_md_sub_frames; + int16_t dyn_active_w_flag; int16_t active_w_vlbr; hMdDec = st_ivas->hSpar->hMdDec; @@ -684,152 +723,46 @@ void ivas_spar_md_dec_process( num_md_chs = ivas_sba_get_nchan_metadata( sba_order, st_ivas->hDecoderConfig->ivas_total_brate ); - num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, st_ivas->hDecoderConfig->ivas_total_brate ); + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); - ivas_spar_dec_parse_md_bs( hMdDec, st0, &nB, &bw, &dtx_vad, st_ivas->hDecoderConfig->ivas_total_brate, - ivas_spar_br_table_consts[hMdDec->table_idx].usePlanarCoeff, st_ivas->hQMetaData->sba_inactive_mode, st_ivas->last_active_ivas_total_brate ); -#if 0 + if ( hMdDec->spar_md_cfg.nchan_transport > 1 && hMdDec->spar_md_cfg.nchan_transport <= 3 ) { - char f_name[100]; - int16_t num_bands = nB; - int16_t num_subframes = 1, num_block_groups = 1, num_elements = 1, byte_size = sizeof( float ); - int16_t num_ch = ivas_sba_get_nchan_metadata( sba_order, st_ivas->hDecoderConfig->ivas_total_brate ); - for ( b = 0; b < num_bands; b++ ) + hMdDec->spar_md.res_ind = 0; + dyn_active_w_flag = get_next_indice( st0, 1 ); + if ( dyn_active_w_flag == 1 ) { - sprintf( f_name, "spar_band_pred_coeffs_dec.bin" ); - ( b == 0 && frame == 0 ) ? dbgwrite( &num_bands, sizeof( num_bands ), 1, 1, f_name ) : false; - num_elements = num_ch - 1; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_block_groups, sizeof( num_block_groups ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - for ( j = 0; j < num_ch - 1; j++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[j], sizeof( float ), 1, 1, f_name ); - } - sprintf( f_name, "spar_band_C_coeffs_dec.bin" ); - ( b == 0 && frame == 0 ) ? dbgwrite( &num_bands, sizeof( num_bands ), 1, 1, f_name ) : false; - num_elements = ( hMdDec->spar_md_cfg.num_decorr_per_band[bw * b] - hMdDec->spar_md_cfg.num_dmx_chans_per_band[bw * b] ) * ( hMdDec->spar_md_cfg.num_dmx_chans_per_band[bw * b] - 1 ); - ( b == 0 && frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_block_groups, sizeof( num_block_groups ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - for ( j = 0; j < ( hMdDec->spar_md_cfg.num_decorr_per_band[bw * b] - hMdDec->spar_md_cfg.num_dmx_chans_per_band[bw * b] ); j++ ) - { - for ( k = 0; k < hMdDec->spar_md_cfg.num_dmx_chans_per_band[bw * b] - 1; k++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].C_re[j][k], sizeof( float ), 1, 1, f_name ); - } - } - sprintf( f_name, "spar_band_P_coeffs_dec.bin" ); - ( b == 0 && frame == 0 ) ? dbgwrite( &num_bands, sizeof( num_bands ), 1, 1, f_name ) : false; - num_elements = num_ch - 1; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &num_block_groups, sizeof( num_block_groups ), 1, 1, f_name ) : false; - ( b == 0 && frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - for ( j = 0; j < num_ch - 1; j++ ) + if ( hMdDec->spar_md_cfg.nchan_transport == 2 ) { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[j], sizeof( float ), 1, 1, f_name ); + hMdDec->spar_md.res_ind = get_next_indice( st0, 1 ); + hMdDec->spar_md.res_ind += hMdDec->spar_md_cfg.nchan_transport; } - } - } -#endif -#ifdef DEBUG_LBR_SBA - /* Dumping SPAR HOA Coefficients */ - /*char f_name[100]; - int16_t nbands = 12; - int16_t num_subframes = 1; - int16_t num_elements = 7; - int16_t num_block_group = 1; - int16_t byte_size = sizeof( float ); - - sprintf( f_name, "SBA_MD_values_dec_PR.bin" ); - ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - - for ( b = 0; b < nbands; b++ ) - { - for ( int16_t sf = 0; sf < num_subframes; sf++ ) - { - for ( int16_t bl = 0; bl < num_block_group; bl++ ) + else if ( hMdDec->spar_md_cfg.nchan_transport == 3 ) { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[0], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[1], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[2], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[3], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[4], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[5], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[6], byte_size, 1, 1, f_name ); - // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat ); + hMdDec->spar_md.res_ind = remix_order_set[hMdDec->spar_md_cfg.remix_unmix_order][hMdDec->spar_md_cfg.nchan_transport]; } } } - nbands = 12; // 6 total, just looking at SPAR - num_subframes = 1; - num_elements = 12; - num_block_group = 1; - byte_size = sizeof( float ); - - sprintf( f_name, "SBA_MD_values_dec_C.bin" ); - ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - - for ( b = 0; b < nbands; b++ ) + else { - for ( int16_t sf = 0; sf < num_subframes; sf++ ) + dyn_active_w_flag = 0; + if ( hMdDec->spar_md_cfg.nchan_transport == FOA_CHANNELS ) { - for ( int16_t bl = 0; bl < num_block_group; bl++ ) - { - for ( int16_t p = 0; p < 4; p++ ) - { - for ( int16_t r = 0; r < 3; r++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].C_re[p][r], byte_size, 1, 1, f_name ); - } - } - } + get_next_indice( st0, 1 ); } } - nbands = 12; // 6 total, just looking at SPAR - num_subframes = 1; - num_elements = 4; - num_block_group = 1; - byte_size = sizeof( float ); - sprintf( f_name, "SBA_MD_values_dec_P.bin" ); - ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; + ivas_spar_dec_parse_md_bs( hMdDec, st0, &nB, &bw, &dtx_vad, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->hQMetaData->sba_inactive_mode, st_ivas->last_active_ivas_total_brate ); + + ivas_dec_mono_sba_handling( st_ivas, sba_order ); - for ( b = 0; b < nbands; b++ ) - { - for ( int16_t sf = 0; sf < num_subframes; sf++ ) - { - for ( int16_t bl = 0; bl < num_block_group; bl++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[0], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[1], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[2], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[3], byte_size, 1, 1, f_name ); - // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat ); - } - } - }*/ -#endif /* SPAR to DirAC conversion */ if ( hMdDec->spar_hoa_dirac2spar_md_flag == 1 ) { - ivas_spar_to_dirac( st_ivas, hMdDec, dtx_vad, num_bands_out, bw ); + ivas_spar_to_dirac( st_ivas, hMdDec, dtx_vad, num_bands_out, bw, + dyn_active_w_flag ); } /* set correct number of bands*/ @@ -871,96 +804,6 @@ void ivas_spar_md_dec_process( } } #endif -#ifdef DEBUG_LBR_SBA - /* Dumping SPAR HOA Coefficients */ - /*char f_name[100]; - int16_t nbands = 12; - int16_t num_subframes = 1; - int16_t num_elements = 7; - int16_t num_block_group = 1; - int16_t byte_size = sizeof( float ); - - sprintf( f_name, "SBA_MD_values_dec_PR.bin" ); - ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - - for ( b = 0; b < nbands; b++ ) - { - for ( int16_t sf = 0; sf < num_subframes; sf++ ) - { - for ( int16_t bl = 0; bl < num_block_group; bl++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[0], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[1], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[2], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[3], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[4], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[5], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].pred_re[6], byte_size, 1, 1, f_name ); - // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat ); - } - } - } - nbands = 12; // 6 total, just looking at SPAR - num_subframes = 1; - num_elements = 12; - num_block_group = 1; - byte_size = sizeof( float ); - - sprintf( f_name, "SBA_MD_values_dec_C.bin" ); - ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - - for ( b = 0; b < nbands; b++ ) - { - for ( int16_t sf = 0; sf < num_subframes; sf++ ) - { - for ( int16_t bl = 0; bl < num_block_group; bl++ ) - { - for ( int16_t p = 0; p < 4; p++ ) - { - for ( int16_t r = 0; r < 3; r++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].C_re[p][r], byte_size, 1, 1, f_name ); - } - } - } - } - } - nbands = 12; // 6 total, just looking at SPAR - num_subframes = 1; - num_elements = 4; - num_block_group = 1; - byte_size = sizeof( float ); - - sprintf( f_name, "SBA_MD_values_dec_P.bin" ); - ( frame == 0 ) ? dbgwrite( &nbands, sizeof( nbands ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_elements, sizeof( num_elements ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_subframes, sizeof( num_subframes ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &num_block_group, sizeof( num_block_group ), 1, 1, f_name ) : false; - ( frame == 0 ) ? dbgwrite( &byte_size, sizeof( byte_size ), 1, 1, f_name ) : false; - - for ( b = 0; b < nbands; b++ ) - { - for ( int16_t sf = 0; sf < num_subframes; sf++ ) - { - for ( int16_t bl = 0; bl < num_block_group; bl++ ) - { - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[0], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[1], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[2], byte_size, 1, 1, f_name ); - dbgwrite( &hMdDec->spar_md.band_coeffs[b].P_re[3], byte_size, 1, 1, f_name ); - // fprintf(stdout, "%f\t%f\t%f\t%d\t%d\n", dirac_md_kbps, spar_md_kbps, sba_md_kbps, qsi, code_strat ); - } - } - }*/ -#endif /* expand DirAC MD to all time slots */ for ( i_ts = 1; i_ts < num_md_sub_frames; i_ts++ ) @@ -987,7 +830,7 @@ void ivas_spar_md_dec_process( } } - ivas_get_spar_matrices( hMdDec, num_bands_out, num_md_sub_frames, bw, dtx_vad, nB, num_md_chs, active_w_vlbr ); + ivas_get_spar_matrices( hMdDec, num_bands_out, num_md_sub_frames, bw, dtx_vad, nB, num_md_chs, active_w_vlbr, dyn_active_w_flag ); #ifdef DEBUG_SPAR_DIRAC_WRITE_OUT_PRED_PARS { @@ -1004,6 +847,7 @@ void ivas_spar_md_dec_process( { nB = nB << 1; } + for ( b = nB; b < num_bands_out; b++ ) { hMdDec->valid_bands[b] = 1; @@ -1017,15 +861,71 @@ void ivas_spar_md_dec_process( } +/*-----------------------------------------------------------------------------------------* + * Function ivas_spar_chk_zero_coefs() + * + * Check for zeroed SPAR coefficients + *-----------------------------------------------------------------------------------------*/ + +int16_t ivas_spar_chk_zero_coefs( + Decoder_Struct *st_ivas, /* i/o: IVAS decoder handle */ + const int16_t sba_order /* i : Ambisonic (SBA) order */ +) +{ + int16_t j, k, b, i_ts; + ivas_spar_md_dec_state_t *hMdDec; + int16_t num_md_sub_frames; + int16_t mono = 1; + int16_t ndec, ndm; + + hMdDec = st_ivas->hSpar->hMdDec; + + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); + + ndec = hMdDec->spar_md_cfg.num_decorr_per_band[0]; + ndm = hMdDec->spar_md_cfg.num_dmx_chans_per_band[0]; + + for ( i_ts = 0; i_ts < num_md_sub_frames; i_ts++ ) + { + for ( b = 0; b < min( hMdDec->spar_md.num_bands, SPAR_DIRAC_SPLIT_START_BAND ); b++ ) + { + for ( j = 0; j < ndm + ndec - 1; j++ ) + { + if ( hMdDec->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].pred_re[j] != 0.0f ) + { + mono = 0; + } + } + for ( j = 0; j < ndec; j++ ) + { + for ( k = 0; k < ndm - 1; k++ ) + { + if ( hMdDec->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].C_re[j][k] != 0.0f ) + { + mono = 0; + } + } + } + for ( j = 0; j < ndec; j++ ) + { + if ( hMdDec->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].P_re[j] != 0.0f ) + { + mono = 0; + } + } + } + } + return mono; +} + + /*-----------------------------------------------------------------------------------------* * Function ivas_spar_smooth_md_dtx() * * Smooth MD during no data frame during DTX *-----------------------------------------------------------------------------------------*/ -#ifdef SPAR_HOA_DBG -/* NOTE: No changes here as DTX only operates below 160kbps */ -#endif 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 */ @@ -1239,7 +1139,8 @@ static void ivas_get_spar_matrices( const int16_t dtx_vad, const int16_t nB, const int16_t numch_out, - const int16_t active_w_vlbr ) + const int16_t active_w_vlbr, + const int16_t dyn_active_w_flag ) { int16_t num_bands, dmx_ch, split_band; int16_t i, j, k, m, b, i_ts, active_w; @@ -1266,26 +1167,14 @@ static void ivas_get_spar_matrices( } } -#ifdef SPAR_HOA_DBG - /*for (b = 0; b < BANDS_12; b++) - { - for (i = 0; i < IVAS_SPAR_MAX_CH - 1; i++) - { - hMdDec->spar_md.band_coeffs[b].pred_re[i] = (float)(i + 1)/10; - for (j = 0; j < IVAS_SPAR_MAX_CH - 1; j++) - { - hMdDec->spar_md.band_coeffs[b].C_re[i][j] = (float)(i + j * 20 + 1)/10; - hMdDec->spar_md.band_coeffs[b].P_re[i][j] = (float)(i + j * 20 + 1)/10; - } - } - }*/ -#endif if ( bw == IVAS_RED_BAND_FACT ) { num_bands = num_bands >> 1; } - active_w = hMdDec->spar_md_cfg.active_w; + + active_w = ( dyn_active_w_flag == 1 ) || ( hMdDec->spar_md_cfg.active_w == 1 ); active_w_dm_fac = ( dtx_vad == 0 ) ? IVAS_ACTIVEW_DM_F_SCALE_DTX : ( ( active_w_vlbr ) ? IVAS_ACTIVEW_DM_F_SCALE_VLBR : IVAS_ACTIVEW_DM_F_SCALE ); + for ( i_ts = 0; i_ts < n_ts; i_ts++ ) { for ( i = 0; i < numch_out; i++ ) @@ -1338,6 +1227,11 @@ static void ivas_get_spar_matrices( IVAS_RMULT_FLOAT( tmp_C2_re[0][3], tmp_C1_re[3][0], re ); tmp_dm_re[0][0] += re; + if ( dyn_active_w_flag == 1 ) + { + tmp_dm_re[0][0] *= IVAS_SPAR_DYN_ACTIVEW_THRESH; + } + tmp_dm_re[0][1] = tmp_C2_re[0][1]; tmp_dm_re[0][2] = tmp_C2_re[0][2]; @@ -1354,24 +1248,6 @@ static void ivas_get_spar_matrices( { ivas_mat_col_rearrange( tmp_dm_re, order, i_ts, hMdDec->mixer_mat, b, numch_out ); } - else - { - /* Custom 4x4 mult for WYiX case */ - for ( i = 0; i < FOA_CHANNELS; i++ ) - { - /* row 0 */ - hMdDec->mixer_mat[i][0][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_dm_re[i][0]; - - /* row 1 */ - hMdDec->mixer_mat[i][1][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_dm_re[i][1]; - - /* row 3 */ - hMdDec->mixer_mat[i][2][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_dm_re[i][1]; - - /* row 4 */ - hMdDec->mixer_mat[i][3][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_dm_re[i][2]; - } - } } else { @@ -1379,24 +1255,6 @@ static void ivas_get_spar_matrices( { ivas_mat_col_rearrange( tmp_C1_re, order, i_ts, hMdDec->mixer_mat, b, numch_out ); } - else - { - /* Custom 4x4 mult for WYiX case */ - for ( i = 0; i < FOA_CHANNELS; i++ ) - { - /* row 0 */ - hMdDec->mixer_mat[i][0][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_C1_re[i][0]; - - /* row 1 */ - hMdDec->mixer_mat[i][1][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_C1_re[i][1]; - - /* row 3 */ - hMdDec->mixer_mat[i][2][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_C1_re[i][1]; - - /* row 4 */ - hMdDec->mixer_mat[i][3][b + i_ts * IVAS_MAX_NUM_BANDS] = tmp_C1_re[i][2]; - } - } } if ( dmx_ch > 0 ) @@ -1427,28 +1285,7 @@ static void ivas_get_spar_matrices( tmpC_re[j][k] = hMdDec->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].C_re[j - dmx_ch][k - 1]; } } -#ifdef SPAR_HOA_DBG - /*fprintf(stdout, "C matrix1: %d x %d\n\n", numch_out, dmx_ch); - for (j = 0; j < numch_out; j++) - { - for (k = 0; k < dmx_ch; k++) - { - fprintf(stdout, "%f, ", tmpC_re[j][k]); - } - fprintf(stdout, "\n"); - } - fprintf(stdout, "Mixer Mat: %d x %d\n\n", numch_out, numch_out); - for ( j = 0; j < numch_out; j++) - { - for (k = 0; k < numch_out; k++) - { - fprintf(stdout, "%f, ", hMdDec->mixer_mat[j][k][0][b]); - } - fprintf(stdout, "\n"); - - }*/ -#endif for ( j = dmx_ch; j < numch_out; j++ ) { for ( k = dmx_ch; k < numch_out; k++ ) @@ -1463,31 +1300,7 @@ static void ivas_get_spar_matrices( } } } -#ifdef SPAR_HOA_DBG - /*if (b == 0) - { - fprintf(stdout, "tmp_P matrix: %d x %d\n\n", numch_out, dmx_ch); - for (j = 0; j < numch_out; j++) - { - for (k = 0; k < numch_out; k++) - { - fprintf(stdout, "%f, ", tmpP_re[j][k]); - } - fprintf(stdout, "\n"); - - } - fprintf(stdout, "Mixer Mat: %d x %d\n\n", numch_out, numch_out); - for (j = 0; j < numch_out; j++) - { - for (k = 0; k < numch_out; k++) - { - fprintf(stdout, "%f, ", hMdDec->mixer_mat[j][k][0][b]); - } - fprintf(stdout, "\n"); - } - }*/ -#endif for ( j = 1; j < numch_out; j++ ) { for ( k = dmx_ch; k < numch_out; k++ ) @@ -1511,48 +1324,11 @@ static void ivas_get_spar_matrices( } } } -#ifdef SPAR_HOA_DBG - /*fprintf(stdout, "C matrix1: %d x %d\n\n", numch_out, dmx_ch); - for (j = 0; j < numch_out; j++) - { - for (k = 0; k < dmx_ch; k++) - { - fprintf(stdout, "%f, ", hMdDec->spar_coeffs.C_re[j][k][b]); - } - fprintf(stdout, "\n"); - }*/ -#endif hMdDec->spar_coeffs.C_re[0][0][( b * bw ) + i_ts * IVAS_MAX_NUM_BANDS] = max( 0, hMdDec->spar_coeffs.C_re[0][0][( b * bw ) + i_ts * IVAS_MAX_NUM_BANDS] ); } } -#ifdef SPAR_HOA_DBG - /* for (b = 0; b < 1; b++) - { - fprintf(stdout, "C matrix: %d x %d band %d\n\n", numch_out, dmx_ch, b); - for (j = 0; j < numch_out; j++) - { - for (k = 0; k < numch_out; k++) - { - fprintf(stdout, "%f, ", hMdDec->spar_coeffs.C_re[j][k][b]); - } - fprintf(stdout, "\n"); - - } - fprintf(stdout, "\nP matrix: %d x %d\n\n", numch_out, numch_out); - - for (j = 0; j < numch_out; j++) - { - for (k = 0; k < numch_out; k++) - { - fprintf(stdout, "%f, ", hMdDec->spar_coeffs.P_re[j][k][b]); - } - fprintf(stdout, "\n"); - - } - }*/ -#endif /* band mixing */ if ( bw == IVAS_RED_BAND_FACT ) @@ -1710,7 +1486,6 @@ static void ivas_spar_dec_parse_md_bs( int16_t *bands_bw, int16_t *dtx_vad, const int32_t ivas_total_brate, - const int16_t use_planar_coeff, const int16_t sba_inactive_mode, const int32_t last_active_brate ) { @@ -1718,9 +1493,8 @@ static void ivas_spar_dec_parse_md_bs( int16_t ii, jj, ndec, ndm, b, idx; uint16_t qsi; ivas_quant_strat_t qs; - int16_t strat, freq_diff, no_ec; + int16_t strat, no_ec; int16_t do_diff[IVAS_MAX_NUM_BANDS]; - int16_t planarCP; float quant[IVAS_SPAR_MAX_C_COEFF]; int16_t do_repeat[IVAS_MAX_NUM_BANDS]; int16_t bw_final, bw_fact; @@ -1833,20 +1607,8 @@ static void ivas_spar_dec_parse_md_bs( qs = hMdDec->spar_md_cfg.quant_strat[qsi]; - planarCP = 0; - if ( ( qsi == 2 ) && ( use_planar_coeff ) ) - { - planarCP = 1; -#ifdef SPAR_HOA_DBG - fprintf( stdout, "planarCP = 1\n" ); -#endif - } strat = get_next_indice( st0, 3 ); -#ifdef SPAR_HOA_DBG - /*fprintf(stdout, "\n\n no_ec = %d, strat = %d\n", no_ec, strat);*/ -#endif - freq_diff = 0; no_ec = 0; if ( strat < 2 ) @@ -1901,11 +1663,11 @@ static void ivas_spar_dec_parse_md_bs( if ( no_ec == 0 ) { - ivas_decode_arith_bs( hMdDec, st0, qsi, *nB, *bands_bw, do_diff, freq_diff, planarCP, strat, ivas_total_brate ); + ivas_decode_arith_bs( hMdDec, st0, qsi, *nB, *bands_bw, do_diff, strat, ivas_total_brate ); } else { - ivas_decode_huffman_bs( hMdDec, st0, qsi, *nB, *bands_bw, planarCP ); + ivas_decode_huffman_bs( hMdDec, st0, qsi, *nB, *bands_bw ); } for ( i = 0; i < *nB; i++ ) @@ -1958,77 +1720,6 @@ static void ivas_spar_dec_parse_md_bs( hMdDec->valid_bands[*bands_bw * i + j] = hMdDec->valid_bands[*bands_bw * i]; } } -#ifdef SPAR_HOA_DBG - int16_t b; - b = 0; - /*if ( 0 ) - { - for ( b = 0; b < *nB; b++ ) - { - int16_t ndec = hMdDec->spar_md_cfg.num_decorr_per_band[( *bands_bw ) * b]; - int16_t ndm = hMdDec->spar_md_cfg.num_dmx_chans_per_band[( *bands_bw ) * b]; - fprintf( stdout, "\n\nMETADATA PR: band %d, qsi %d\n\n", b, qsi ); - for ( i = 0; i < ndm + ndec - 1; i++ ) - { - fprintf( stdout, "i: %d -- %f\t %d\t %d\n", i, - hMdDec->spar_md.band_coeffs[b].pred_re[i], - hMdDec->spar_md_prev.band_coeffs_idx[b].pred_index_re[i], - hMdDec->spar_md.band_coeffs_idx[b].pred_index_re[i] ); - } - fprintf( stdout, "\n\n METADATA C: band %d\n\n", b ); - k = 0; - for ( i = 0; i < ndec; i++ ) - { - for ( j = 0; j < ( ndm - 1 ); j++ ) - { - fprintf( stdout, "i: %d -- %f\t %d\t %d\n", i, - hMdDec->spar_md.band_coeffs[b].C_re[i][j], - hMdDec->spar_md_prev.band_coeffs_idx[b].drct_index_re[k], - hMdDec->spar_md.band_coeffs_idx[b].drct_index_re[k] ); - k++; - } - } - fprintf( stdout, "\n\n METADATA Pd: band %d\n\n", b ); - for ( i = 0; i < ndec; i++ ) - { - fprintf( stdout, "i: %d -- %f\t %d\t %d\n", i, - hMdDec->spar_md.band_coeffs[b].P_re[i][i], - hMdDec->spar_md_prev.band_coeffs_idx[b].decd_index_re[i], - hMdDec->spar_md.band_coeffs_idx[b].decd_index_re[i] ); - } - fprintf( stdout, "\n\n" ); - int16_t ndec = hMdDec->spar_md_cfg.num_decorr_per_band[( *bands_bw ) * b]; - int16_t ndm = hMdDec->spar_md_cfg.num_dmx_chans_per_band[( *bands_bw ) * b]; - fprintf( stdout, "\n\n Metadata PR (15x1), C(15x15), P(15x15): band %d\n", b ); - for ( i = 0; i < ndm + ndec - 1; i++ ) - { - fprintf( stdout, "i: %d -- %.2f\t|\t", i, hMdDec->spar_md.band_coeffs[b].pred_re[i] ); - if ( i < ndec ) - { - if ( keep_planar[i] == 1 ) - { - fprintf( stdout, ">>" ); - } - else - { - fprintf( stdout, " " ); - } - for ( j = 0; j < ndm - 1; j++ ) - { - fprintf( stdout, "%.2f\t", hMdDec->spar_md.band_coeffs[b].C_re[i][j] ); - } - fprintf( stdout, "|\t" ); - for ( j = 0; j < ndec; j++ ) - { - fprintf( stdout, "%.2f\t", hMdDec->spar_md.band_coeffs[b].P_re[i][j] ); - } - } - fprintf( stdout, "\n" ); - } - fprintf( stdout, "\n" ); - } - }*/ -#endif return; } @@ -2047,8 +1738,6 @@ static void ivas_decode_arith_bs( const int16_t nB, const int16_t bands_bw, int16_t *pDo_diff, - const int16_t freq_diff, - const int16_t planarCP, const int16_t strat, const int32_t ivas_total_brate ) { @@ -2123,13 +1812,13 @@ static void ivas_decode_arith_bs( } } } - ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, pred_cell_dims, PRED_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, pred_cell_dims, PRED_COEFF ); } ivas_arith_decode_cmplx_cell_array( &hMdDec->arith_coeffs.pred_arith_re[qsi], &hMdDec->arith_coeffs.pred_arith_re_diff[qsi], st0, pred_cell_dims, pDo_diff, nB, symbol_arr_re, symbol_arr_old_re ); - ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, pred_cell_dims, PRED_COEFF, planarCP ); + ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, pred_cell_dims, PRED_COEFF ); if ( hMdDec->spar_hoa_md_flag && hMdDec->spar_hoa_dirac2spar_md_flag ) { @@ -2152,141 +1841,31 @@ static void ivas_decode_arith_bs( if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, drct_cell_dims, DRCT_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, drct_cell_dims, DRCT_COEFF ); } - if ( planarCP ) - { - for ( i = 0; i < nB; i++ ) - { - drct_cell_dims[i].dim1 = drct_cell_dims[i].dim1 - IVAS_SPAR_HOA3_NP_CHS; - } - } ivas_arith_decode_cmplx_cell_array( &hMdDec->arith_coeffs.drct_arith_re[qsi], &hMdDec->arith_coeffs.drct_arith_re_diff[qsi], st0, drct_cell_dims, pDo_diff, nB, symbol_arr_re, symbol_arr_old_re ); - ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, drct_cell_dims, DRCT_COEFF, planarCP ); + ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, drct_cell_dims, DRCT_COEFF ); if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decd_cell_dims, DECD_COEFF, planarCP ); - } - - if ( planarCP ) - { - for ( i = 0; i < nB; i++ ) - { - decd_cell_dims[i].dim1 = decd_cell_dims[i].dim1 - IVAS_SPAR_HOA3_NP_CHS; - } + ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decd_cell_dims, DECD_COEFF ); } ivas_arith_decode_cmplx_cell_array( &hMdDec->arith_coeffs.decd_arith_re[qsi], &hMdDec->arith_coeffs.decd_arith_re_diff[qsi], st0, decd_cell_dims, pDo_diff, nB, symbol_arr_re, symbol_arr_old_re ); - ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, decd_cell_dims, DECD_COEFF, planarCP ); + ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, decd_cell_dims, DECD_COEFF ); if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decx_cell_dims, DECX_COEFF, planarCP ); - } - - ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, decx_cell_dims, DECX_COEFF, planarCP ); - - if ( freq_diff == 1 ) - { -#ifdef SPAR_HOA_DBG - /* NOTE: This is currently unused code, and SPAR_HOA changes have not been made here. */ -#endif - ivas_get_band_idx_from_differential( &hMdDec->spar_md, hMdDec->spar_md_cfg.quant_strat->PR.q_levels, 0, nB, PRED_COEFF ); - ivas_get_band_idx_from_differential( &hMdDec->spar_md, hMdDec->spar_md_cfg.quant_strat->C.q_levels, 0, nB, DRCT_COEFF ); - ivas_get_band_idx_from_differential( &hMdDec->spar_md, hMdDec->spar_md_cfg.quant_strat->P_r.q_levels, 1, nB, DECD_COEFF ); - ivas_get_band_idx_from_differential( &hMdDec->spar_md, hMdDec->spar_md_cfg.quant_strat->P_c.q_levels, 0, nB, DECX_COEFF ); + ivas_copy_band_coeffs_idx_to_arr( hMdDec->spar_md_prev.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decx_cell_dims, DECX_COEFF ); } - return; -} - - -/*-----------------------------------------------------------------------------------------* - * Function ivas_get_band_idx_from_differential() - * - * - *-----------------------------------------------------------------------------------------*/ - -#ifdef SPAR_HOA_DBG -/* NOTE: No changes here as frequency differential coding is unused. */ -#endif -static void ivas_get_band_idx_from_differential( - ivas_spar_md_t *pSpar_md, - const int16_t q_levels[2], - const int16_t one_sided, - const int16_t nB, - const ivas_coeffs_type_t coeff_type ) -{ - int16_t i, k; - int16_t min_val, max_val; - int16_t index[FOA_CHANNELS - 1]; - int16_t band_idx[IVAS_MAX_NUM_BANDS][FOA_CHANNELS - 1]; - int16_t *ptr_idx = NULL; - - for ( i = 0; i < nB; i++ ) - { - switch ( coeff_type ) - { - case PRED_COEFF: - ptr_idx = pSpar_md->band_coeffs_idx[i].pred_index_re; - break; - case DRCT_COEFF: - ptr_idx = pSpar_md->band_coeffs_idx[i].drct_index_re; - break; - case DECD_COEFF: - ptr_idx = pSpar_md->band_coeffs_idx[i].decd_index_re; - break; - default: - assert( !"unsupported config!" ); - } - - if ( one_sided ) - { - min_val = 0; - max_val = q_levels[0] - 1; - } - else - { - min_val = (int16_t) -floor( q_levels[0] / 2.0f ); - max_val = (int16_t) floor( q_levels[0] / 2.0f ); - } - - if ( i == 0 ) - { - for ( k = 0; k < FOA_CHANNELS - 1; k++ ) - { - index[k] = ptr_idx[k]; - } - } - else - { - for ( k = 0; k < FOA_CHANNELS - 1; k++ ) - { - index[k] = ptr_idx[k] + band_idx[i][k]; - } - } - - for ( k = 0; k < FOA_CHANNELS - 1; k++ ) - { - if ( index[k] < min_val ) - { - index[k] = max_val - min_val + index[k] + 1; - } - if ( index[k] > max_val ) - { - index[k] = max_val + index[k] - min_val - 1; - } - - band_idx[i][k] = index[k]; - } - } + ivas_fill_band_coeffs_idx( hMdDec->spar_md.band_coeffs_idx, nB, symbol_arr_re, decx_cell_dims, DECX_COEFF ); return; } @@ -2303,10 +1882,9 @@ static void ivas_fill_band_coeffs_idx( const int16_t nB, int16_t *pSymbol_re, ivas_cell_dim_t *pCell_dims, - const ivas_coeffs_type_t coeff_type, - const int16_t planarCP ) + const ivas_coeffs_type_t coeff_type ) { - int16_t i, j, k, len; + int16_t i, len; int16_t *pPtr_idx = NULL; for ( i = 0; i < nB; i++ ) @@ -2339,30 +1917,9 @@ static void ivas_fill_band_coeffs_idx( if ( coeff_type != DECX_COEFF ) { - if ( ( coeff_type == PRED_COEFF ) || !planarCP ) - { - len = pCell_dims[i].dim1 * pCell_dims[i].dim2; - mvs2s( pSymbol_re, pPtr_idx, len ); - pSymbol_re += len; - } - else - { - k = 0; - len = ( pCell_dims[i].dim1 + IVAS_SPAR_HOA3_NP_CHS ) * pCell_dims[i].dim2; - for ( j = 0; j < len; j++ ) - { - if ( keep_planar[(int16_t) floor( j / pCell_dims[i].dim2 )] ) - { - pPtr_idx[j] = pSymbol_re[k]; - k++; - } - else - { - pPtr_idx[j] = 0; - } - } - pSymbol_re += k; - } + len = pCell_dims[i].dim1 * pCell_dims[i].dim2; + mvs2s( pSymbol_re, pPtr_idx, len ); + pSymbol_re += len; } } @@ -2381,8 +1938,7 @@ static void ivas_decode_huffman_bs( Decoder_State *st0, /* i/o: decoder state structure - for bitstream handling*/ const uint16_t qsi, const int16_t nB, - const int16_t bands_bw, - const int16_t planarCP ) + const int16_t bands_bw ) { int16_t i, j; int16_t ndm, ndec; @@ -2397,6 +1953,7 @@ static void ivas_decode_huffman_bs( drct_dim = ndec * ( ndm - 1 ); decd_dim = ndec; pred_offset = 0; + if ( hMdDec->spar_hoa_md_flag && hMdDec->spar_hoa_dirac2spar_md_flag ) { if ( i >= SPAR_DIRAC_SPLIT_START_BAND ) @@ -2423,26 +1980,12 @@ static void ivas_decode_huffman_bs( for ( j = 0; j < drct_dim; j++ ) { - if ( planarCP && !keep_planar[(int16_t) floor( j / ( ndm - 1 ) )] ) - { - hMdDec->spar_md.band_coeffs_idx[i].drct_index_re[j] = 0; - } - else - { - ivas_huffman_decode( &hMdDec->huff_coeffs.drct_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].drct_index_re[j] ); - } + ivas_huffman_decode( &hMdDec->huff_coeffs.drct_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].drct_index_re[j] ); } for ( j = 0; j < decd_dim; j++ ) { - if ( planarCP && !keep_planar[j] ) - { - hMdDec->spar_md.band_coeffs_idx[i].decd_index_re[j] = 0; - } - else - { - ivas_huffman_decode( &hMdDec->huff_coeffs.decd_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].decd_index_re[j] ); - } + ivas_huffman_decode( &hMdDec->huff_coeffs.decd_huff_re[qsi], st0, &hMdDec->spar_md.band_coeffs_idx[i].decd_index_re[j] ); } } @@ -2646,9 +2189,6 @@ static void ivas_spar_dec_compute_ramp_down_post_matrix( * Unquantize SPAR MD DYX indices *-----------------------------------------------------------------------------------------*/ -#ifdef SPAR_HOA_DBG -/* NOTE: No changes here as DTX only operates below 160kbps */ -#endif static void ivas_spar_unquant_dtx_indicies( ivas_spar_md_t *pSpar_md, const int16_t nB, @@ -2793,6 +2333,11 @@ static void ivas_parse_parameter_bitstream_dtx( sid_bits_len = st0->next_bit_pos - sid_bits_len; zero_pad_bits = ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - sid_bits_len; assert( zero_pad_bits >= 0 ); + if ( num_dmx_per_band[0] == 2 ) + { + zero_pad_bits -= 1; + } + for ( j = 0; j < zero_pad_bits; j++ ) { get_next_indice( st0, 1 ); @@ -2857,8 +2402,8 @@ void ivas_spar_to_dirac( 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 bw, /* i : band joining factor */ + const int16_t dyn_active_w_flag ) { DIRAC_DEC_HANDLE hDirAC; int16_t start_band, end_band, band, qmf_band_start, qmf_band_end; @@ -2873,9 +2418,6 @@ void ivas_spar_to_dirac( float dvx[IVAS_MAX_NUM_BANDS], dvy[IVAS_MAX_NUM_BANDS], dvz[IVAS_MAX_NUM_BANDS]; float radius; float en_ratio, res_pow; -#ifdef ENABLE_DITHER - int16_t *seed_ptr; -#endif int16_t num_slots_in_subfr; int16_t tmp_write_idx_param_band; int16_t tmp_write_idx_band; @@ -2885,12 +2427,17 @@ void ivas_spar_to_dirac( int16_t enc_param_start_band; int16_t active_w_vlbr; int16_t i, num_subframes; + int16_t active_w; + active_w = ( dyn_active_w_flag == 1 ) || ( hMdDec->spar_md_cfg.active_w == 1 ); sba_order_internal = min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ); start_band = 0; end_band = min( num_bands_out, SPAR_DIRAC_SPLIT_START_BAND ) / bw; hDirAC = st_ivas->hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + dirac_to_spar_md_bands = st_ivas->hSpar->dirac_to_spar_md_bands; enc_param_start_band = st_ivas->hSpar->enc_param_start_band / bw; active_w_vlbr = ( st_ivas->hDecoderConfig->ivas_total_brate < IVAS_24k4 ) ? 1 : 0; @@ -2898,9 +2445,6 @@ void ivas_spar_to_dirac( if ( hDirAC != NULL && ivas_get_hodirac_flag( st_ivas->hDecoderConfig->ivas_total_brate, st_ivas->sba_analysis_order ) == 0 ) { band_grouping = hDirAC->band_grouping; -#ifdef ENABLE_DITHER - seed_ptr = &hDirAC->dithering_seed; -#endif num_slots_in_subfr = st_ivas->hDirAC->hConfig->dec_param_estim ? CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES : 1; for ( band = start_band; band < end_band; band++ ) @@ -2933,8 +2477,7 @@ void ivas_spar_to_dirac( if ( st_ivas->nchan_transport == 1 ) { float w_en_norm, f_scale; - - if ( hMdDec->spar_md_cfg.active_w ) + if ( active_w ) { if ( dtx_vad == 0 ) { @@ -2975,18 +2518,11 @@ void ivas_spar_to_dirac( for ( band = start_band; band < end_band; band++ ) { -#ifdef ENABLE_DITHER - int16_t diff_idx, azi_dith, ele_dith; -#else int16_t azi_dith, ele_dith; -#endif tmp_write_idx_param_band = hDirAC->spar_to_dirac_write_idx; en_ratio = 1.0f - diffuseness[band]; -#ifdef ENABLE_DITHER - diff_idx = -#endif - masa_sq( 1.0f - en_ratio, diffuseness_thresholds, DIRAC_DIFFUSE_LEVELS ); + masa_sq( 1.0f - en_ratio, diffuseness_thresholds, DIRAC_DIFFUSE_LEVELS ); qmf_band_start = band_grouping[band]; qmf_band_end = band_grouping[band + 1]; @@ -2995,54 +2531,46 @@ void ivas_spar_to_dirac( { int16_t ts_start, ts_end, ts; - ts_start = hDirAC->block_grouping[block]; - ts_end = hDirAC->block_grouping[block + 1]; + ts_start = DirAC_block_grouping[block]; + ts_end = DirAC_block_grouping[block + 1]; for ( b = qmf_band_start; b < qmf_band_end; b++ ) { -#ifdef ENABLE_DITHER - azi_dith = (int16_t) ( azi[band] + rand_triangular_signed( seed_ptr ) * dirac_dithering_azi_scale[diff_idx] + 0.5f ); - ele_dith = (int16_t) ( ele[band] + rand_triangular_signed( seed_ptr ) * dirac_dithering_ele_scale[diff_idx] + 0.5f ); - /* limit the elevation to [-90, 90] */ - ele_dith = min( 90, ele_dith ); - ele_dith = max( -90, ele_dith ); -#else azi_dith = azi[band]; ele_dith = ele[band]; -#endif - hDirAC->energy_ratio1[block][b] = en_ratio; + hSpatParamRendCom->energy_ratio1[block][b] = en_ratio; tmp_write_idx_band = tmp_write_idx_param_band; if ( hDirAC->hConfig->dec_param_estim == FALSE ) { - hDirAC->elevation[tmp_write_idx_band][b] = ele_dith; - hDirAC->azimuth[tmp_write_idx_band][b] = azi_dith; - hDirAC->diffuseness_vector[tmp_write_idx_band][b] = diffuseness[band]; + hSpatParamRendCom->elevation[tmp_write_idx_band][b] = ele_dith; + hSpatParamRendCom->azimuth[tmp_write_idx_band][b] = azi_dith; + hSpatParamRendCom->diffuseness_vector[tmp_write_idx_band][b] = diffuseness[band]; } else { for ( ts = ts_start; ts < ts_end; ts++ ) { - hDirAC->elevation[tmp_write_idx_band][b] = ele_dith; - hDirAC->azimuth[tmp_write_idx_band][b] = azi_dith; - hDirAC->diffuseness_vector[tmp_write_idx_band][b] = diffuseness[band]; - tmp_write_idx_band = ( tmp_write_idx_band + 1 ) % hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->elevation[tmp_write_idx_band][b] = ele_dith; + hSpatParamRendCom->azimuth[tmp_write_idx_band][b] = azi_dith; + hSpatParamRendCom->diffuseness_vector[tmp_write_idx_band][b] = diffuseness[band]; + tmp_write_idx_band = ( tmp_write_idx_band + 1 ) % hSpatParamRendCom->dirac_md_buffer_length; } } } - tmp_write_idx_param_band = ( tmp_write_idx_param_band + num_slots_in_subfr ) % hDirAC->dirac_md_buffer_length; + tmp_write_idx_param_band = ( tmp_write_idx_param_band + num_slots_in_subfr ) % hSpatParamRendCom->dirac_md_buffer_length; } } /* update buffer write index */ if ( hDirAC->hConfig->dec_param_estim == FALSE ) { - hDirAC->spar_to_dirac_write_idx = ( hDirAC->spar_to_dirac_write_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % hDirAC->dirac_md_buffer_length; + hDirAC->spar_to_dirac_write_idx = ( hDirAC->spar_to_dirac_write_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % hSpatParamRendCom->dirac_md_buffer_length; } else { - hDirAC->spar_to_dirac_write_idx = ( hDirAC->spar_to_dirac_write_idx + CLDFB_NO_COL_MAX ) % hDirAC->dirac_md_buffer_length; + hDirAC->spar_to_dirac_write_idx = ( hDirAC->spar_to_dirac_write_idx + CLDFB_NO_COL_MAX ) % hSpatParamRendCom->dirac_md_buffer_length; } } else @@ -3079,8 +2607,9 @@ void ivas_spar_to_dirac( /* DirAC MD averaged over 4 subframes and converted to SPAR format similar to encoder processing */ if ( hMdDec->spar_md_cfg.nchan_transport > 1 ) { - ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, 1, NULL, &hMdDec->spar_md, &hMdDec->spar_md_cfg, - end_band, num_bands_out, ( hMdDec->spar_hoa_md_flag ) ? 1 : sba_order_internal, dtx_vad, NULL, st_ivas->hQMetaData->useLowerRes, active_w_vlbr ); + ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, 1, NULL, &hMdDec->spar_md, &hMdDec->spar_md_cfg, end_band, num_bands_out, ( hMdDec->spar_hoa_md_flag ) ? 1 : sba_order_internal, dtx_vad, NULL, + st_ivas->hQMetaData->useLowerRes, active_w_vlbr, + dyn_active_w_flag ); /* temporarily copy frame-wise prediction coefficients in DirAC bands*/ for ( pred_idx = 0; pred_idx < FOA_CHANNELS - 1; pred_idx++ ) @@ -3092,20 +2621,17 @@ void ivas_spar_to_dirac( } } - num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; - if ( st_ivas->hQMetaData->useLowerRes ) - { - num_subframes = 1; - } - - ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, num_subframes, NULL, &hMdDec->spar_md, &hMdDec->spar_md_cfg, - end_band, num_bands_out / bw, ( hMdDec->spar_hoa_md_flag ) ? 1 : sba_order_internal, dtx_vad, NULL, st_ivas->hQMetaData->useLowerRes, active_w_vlbr ); - + int16_t num_md_sub_frames; + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( sba_order_internal, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); + ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, num_md_sub_frames, NULL, &hMdDec->spar_md, &hMdDec->spar_md_cfg, + end_band, num_bands_out / bw, ( hMdDec->spar_hoa_md_flag ) ? 1 : sba_order_internal, dtx_vad, NULL, st_ivas->hQMetaData->useLowerRes, active_w_vlbr, + dyn_active_w_flag ); if ( st_ivas->hQMetaData->useLowerRes && dtx_vad ) { for ( band = SPAR_DIRAC_SPLIT_START_BAND; band < IVAS_MAX_NUM_BANDS; band++ ) { - for ( block = 1; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + for ( block = 1; block < num_md_sub_frames; block++ ) { for ( i = 0; i < FOA_CHANNELS - 1; i++ ) /* pred coefficient index (index 0, 1, 2 predicts Y, Z, X respectively) */ { @@ -3119,7 +2645,7 @@ void ivas_spar_to_dirac( } } /* expand DirAC TC 20ms MD for residual channels to all subframes*/ - for ( block = 0; block < MAX_PARAM_SPATIAL_SUBFRAMES; block++ ) + for ( block = 0; block < num_md_sub_frames; block++ ) { for ( band = SPAR_DIRAC_SPLIT_START_BAND; band < IVAS_MAX_NUM_BANDS; band++ ) { diff --git a/lib_dec/ivas_stat_dec.h b/lib_dec/ivas_stat_dec.h old mode 100644 new mode 100755 index 315cfbad668d813f787933ea38d810ec8daed60d..5b799c29e10881b48adc79dcae60d2d2187d8083 --- a/lib_dec/ivas_stat_dec.h +++ b/lib_dec/ivas_stat_dec.h @@ -40,6 +40,8 @@ #include "stat_dec.h" #include "ivas_stat_com.h" #include "ivas_stat_rend.h" + + /*----------------------------------------------------------------------------------* * DFT Stereo decoder structure *----------------------------------------------------------------------------------*/ @@ -290,6 +292,7 @@ typedef struct stereo_mdct_dec_data_structure STEREO_MDCT_BAND_PARAMETERS stbParamsTCX20; /* stereo frequency band parameters for TCX20 */ STEREO_MDCT_BAND_PARAMETERS stbParamsTCX10; /* stereo frequency band parameters for TCX10 */ STEREO_MDCT_BAND_PARAMETERS stbParamsTCX20afterACELP; /* stereo frequency band parameters for transition frame */ + /* only intraframe */ int16_t mdct_stereo_mode[2]; /* mdct stereo mode: LR, MS, band-wise MS */ int16_t global_ild[2]; /* Quantized ILD for the whole spectrum */ @@ -395,41 +398,11 @@ typedef struct } ISM_DTX_DATA_DEC; + /*----------------------------------------------------------------------------------* - * DirAC decoder structure + * DirAC decoder structures *----------------------------------------------------------------------------------*/ -typedef struct dirac_dec_stack_mem -{ - /*Decorrelator*/ - float *frame_dec_f; - - /*Prototypes*/ - float *proto_direct_buffer_f; - float *proto_diffuse_buffer_f; - - /*Prototype NRGs*/ - float *proto_power_smooth; - float *proto_power_diff_smooth; - - /*Gain or power factors for directional and diffuse streams*/ - float *direct_power_factor; - float *diffuse_power_factor; - - /*Directional responses (gains & Nrg)*/ - float *direct_responses; - float *direct_responses_square; - - /* Target co-variance mtx */ - float *cy_auto_dir_smooth; - float *cy_cross_dir_smooth; - float *cy_auto_diff_smooth; - - float *reference_power; - float *onset_filter; - -} DIRAC_DEC_STACK_MEM, *DIRAC_DEC_STACK_MEM_HANDLE; - typedef struct param_ism_rendering { float *proto_matrix; @@ -442,119 +415,34 @@ typedef struct param_ism_rendering } PARAM_ISM_RENDERING_DATA, *PARAM_ISM_RENDERING_HANDLE; -/*Onset detector*/ -typedef struct dirac_onset_detection_params_structure -{ - int16_t num_freq_bands; - int16_t max_band_decorr; - -} DIRAC_ONSET_DETECTION_PARAMS; - -typedef struct dirac_onset_detection_state_structure -{ - float *onset_detector_1; - float *onset_detector_2; - -} DIRAC_ONSET_DETECTION_STATE; - -/*Decorrelator*/ -typedef struct dirac_decorr_params_structure -{ - int16_t max_band_decorr; - int16_t max_frequency; - - int16_t *pre_delay; - int16_t *filter_length; - float *filter_coeff_num_real; - float *filter_coeff_den_real; - float *phase_coeff_real; - float *phase_coeff_imag; - int16_t *split_frequency_bands; - int16_t num_split_frequency_bands; - - int16_t use_ducker; - int16_t add_back_onsets_on; - - DIRAC_ONSET_DETECTION_PARAMS h_onset_detection_power_params; - -} DIRAC_DECORR_PARAMS, *HANDLE_DIRAC_DECORR_PARAMS; - -typedef struct dirac_decorr_state_structure -{ - float *decorr_buffer; - float *direct_energy_smooth; - float *reverb_energy_smooth; - - DIRAC_ONSET_DETECTION_STATE h_onset_detection_power_state; - -} DIRAC_DECORR_STATE, *HANDLE_DIRAC_DECORR_STATE; - -/*Output synthesis*/ -typedef struct dirac_output_synthesis_params_structure -{ - int16_t max_band_decorr; - - int16_t use_onset_filters; - - float *interpolator; - float *alpha_synthesis; - float *alpha_synthesis_fast; - int16_t numAlphas; - int16_t numAlphasFast; - - float *proto_matrix; - - float diffuse_compensation_factor; - float diffuse_compensation_factor_decorr; - -} DIRAC_OUTPUT_SYNTHESIS_PARAMS; - -typedef struct dirac_output_synthesis_state_structure +typedef struct ivas_dirac_dec_data_structure { - /* only pointer to local buffers */ - float *direct_responses; /* direct responses for DOA of current frame. Size: num_freq_bands*num_channels. */ - float *direct_responses_square; - float *diffuse_responses_square; /* squared diffuse responses. Size: num_channels. */ - - /* only pointer to local buffers */ - float *direct_power_factor; - float *diffuse_power_factor; - - float *proto_power_smooth; /* Smoothed power of the prototype signals. Size: num_freq_bands*num_channels. */ - float *proto_power_smooth_prev; /* Smoothed power of the prototype signals of the previous synthesis block. Size: num_freq_bands*num_channels. */ - - float *proto_power_diff_smooth; - float *proto_power_diff_smooth_prev; + DIRAC_CONFIG_DATA_HANDLE hConfig; - /* only pointer to local buffers */ - float *proto_direct_buffer_f; /* Buffer for direct sound prototype signals. Size: 2*num_freq_bands*num_channels*buffer_length (complex interleaved). */ - float *proto_diffuse_buffer_f; /* Buffer for diffuse sound prototype signals. Size: 2*num_freq_bands*num_channels*buffer_length (complex interleaved). */ + /*Parameter decoding*/ + float azimuth_values[MAX_PARAM_SPATIAL_SUBFRAMES * IVAS_MAX_NUM_BANDS]; + float elevation_values[MAX_PARAM_SPATIAL_SUBFRAMES * IVAS_MAX_NUM_BANDS]; + int16_t band_grouping[IVAS_MAX_NUM_BANDS + 1]; - /* Output gain memories */ - float *gains_dir_prev; /* Direct sound gains of current synthesis block. Size: num_freq_bands*num_channel. */ - float *gains_diff_prev; /* Diffuse sound gains of previous synthesis block. Size: num_freq_bands*num_channel. */ + int16_t dithering_seed; + int16_t spar_to_dirac_write_idx; - /* only pointer to local buffers */ - float *cy_auto_dir_smooth; /* Target auto PSD of direct sound. Size: num_freq_bands*num_channels. */ - float *cy_cross_dir_smooth; /* Target cross PSD of direct sound. Size: num_freq_bands*num_channels. */ - float *cy_auto_diff_smooth; /* Target auto PSD of diffuse sound. Size: num_freq_bands*num_channels. */ + /*sub-modules*/ + PARAM_ISM_CONFIG_HANDLE hParamIsm; /* Parametric ISM handle */ + float power_ratios[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS][MAX_PARAM_ISM_WAVE]; + PARAM_ISM_RENDERING_HANDLE hParamIsmRendering; - /* PSD memories */ - float *cy_auto_dir_smooth_prev; /* Target auto PSD of direct sound of previous synthesis block. Size: num_freq_bands*num_channels. */ - float *cy_cross_dir_smooth_prev; /* Target cross PSD of direct sound of previous synthesis block. Size: num_freq_bands*num_channels. */ - float *cy_auto_diff_smooth_prev; /* Target auto PSD of diffuse sound of previous synthesis block. Size: num_freq_bands*num_channels. */ + IVAS_FB_MIXER_HANDLE hFbMdft; - const float *onset_filter; +} DIRAC_DEC_DATA, *DIRAC_DEC_HANDLE; - /* Temporal smoothing memories */ - float *reference_power_smooth_prev; - float *direction_smoothness_prev; -} DIRAC_OUTPUT_SYNTHESIS_STATE; +/*----------------------------------------------------------------------------------* + * ParamMC structures + *----------------------------------------------------------------------------------*/ typedef struct dirac_output_synthesis_cov_state_structure { - /* only pointer to local buffers */ float *direct_power_factor; float *diffuse_power_factor; @@ -579,149 +467,6 @@ typedef struct dirac_output_synthesis_cov_state_structure } DIRAC_OUTPUT_SYNTHESIS_COV_STATE; -/* MASA stereo transport signal type detection structure */ -typedef struct -{ - MASA_TRANSPORT_SIGNAL_TYPE masa_stereo_type; - MASA_TRANSPORT_SIGNAL_TYPE current_stereo_type; - MASA_TRANSPORT_SIGNAL_TYPE type_change_direction; - - int16_t dipole_freq_range[2]; - - float left_bb_power; - float right_bb_power; - float total_bb_power; - - float left_hi_power; - float right_hi_power; - float total_hi_power; - - float sum_power[MASA_SUM_FREQ_RANGE_BINS]; - float total_power[MASA_SUM_FREQ_RANGE_BINS]; - - float subtract_power_y; - float subtract_power_y_smooth; - float target_power_y_smooth; - - float lr_total_bb_ratio_db; - float lr_total_hi_ratio_db; - float min_sum_total_ratio_db; - float subtract_target_ratio_db; - - int16_t counter; - int16_t interpolator; - -} MASA_STEREO_TYPE_DETECT; - -/* Diffuse sound directional distribution data structure */ -typedef struct ivas_diffuse_distribution_data_structure -{ - float diffuseRatioX[CLDFB_NO_CHANNELS_MAX]; - float diffuseRatioY[CLDFB_NO_CHANNELS_MAX]; - float diffuseRatioZ[CLDFB_NO_CHANNELS_MAX]; - -} DIFFUSE_DISTRIBUTION_DATA, *DIFFUSE_DISTRIBUTION_HANDLE; - - -/* ===== DirAC main structure ===== */ -typedef struct ivas_dirac_dec_data_structure -{ - DIRAC_CONFIG_DATA_HANDLE hConfig; - IVAS_OUTPUT_SETUP hOutSetup; - - int16_t slot_size; - int16_t subframe_nbslots[MAX_JBM_SUBFRAMES_5MS]; - int16_t subframes_rendered; - int16_t slots_rendered; - int16_t num_slots; - int16_t render_to_md_map[MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME]; - int16_t nb_subframes; - int16_t num_freq_bands; - - /*Parameter decoding*/ - float azimuth_values[MAX_PARAM_SPATIAL_SUBFRAMES * IVAS_MAX_NUM_BANDS]; - float elevation_values[MAX_PARAM_SPATIAL_SUBFRAMES * IVAS_MAX_NUM_BANDS]; - int16_t band_grouping[IVAS_MAX_NUM_BANDS + 1]; - - int16_t block_grouping[5]; - /* decoded, ungrouped and rounded values, we have 1 degree resolution anyway */ - int16_t **azimuth; - int16_t **elevation; - int16_t **azimuth2; - int16_t **elevation2; - - float **diffuseness_vector; - float **energy_ratio1; - float **energy_ratio2; - - float **spreadCoherence; - float **spreadCoherence2; - float **surroundingCoherence; - - int16_t dithering_seed; - int16_t dirac_bs_md_write_idx; - int16_t dirac_read_idx; - int16_t dirac_estimator_idx; - int16_t spar_to_dirac_write_idx; - int16_t dirac_md_buffer_length; - - int16_t numSimultaneousDirections; /* 1 or 2 */ - DIFFUSE_DISTRIBUTION_HANDLE hDiffuseDist; - - /*Parameter estimation*/ - int16_t index_buffer_intensity; - float *buffer_intensity_real[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF]; - float *buffer_energy; - - /*Decoder parameters */ - /*Prototypes*/ - int16_t num_outputs_dir; - int16_t num_outputs_diff; - int16_t num_protos_dir; - int16_t num_protos_diff; - int16_t num_protos_ambi; - DIRAC_SYNTHESIS_CONFIG synthesisConf; - DIRAC_PANNING_CONFIG panningConf; - - float *frequency_axis; - float *diffuse_response_function; - float *hoa_encoder; - const float *hoa_decoder; - - /*Options*/ - /* Decorrelator options */ - int16_t max_band_decorr; - - /* prototype computing */ - int16_t *proto_index_dir; - int16_t *proto_index_diff; - - int16_t proto_signal_decorr_on; - - /*Decoder states=memories*/ - float *proto_frame_f; - float *proto_frame_dec_f; - - DIRAC_DEC_STACK_MEM stack_mem; - MASA_STEREO_TYPE_DETECT *masa_stereo_type_detect; - - int16_t num_ele_spk_no_diffuse_rendering; - - /*sub-modules*/ - HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params; - HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state; - - DIRAC_OUTPUT_SYNTHESIS_PARAMS h_output_synthesis_psd_params; - DIRAC_OUTPUT_SYNTHESIS_STATE h_output_synthesis_psd_state; - - PARAM_ISM_CONFIG_HANDLE hParamIsm; /* Parametric ISM handle */ - float power_ratios[MAX_PARAM_ISM_NBANDS][MAX_PARAM_ISM_NBLOCKS][MAX_PARAM_ISM_WAVE]; - PARAM_ISM_RENDERING_HANDLE hParamIsmRendering; - IVAS_FB_MIXER_HANDLE hFbMdft; - const int16_t *sba_map_tc; - -} DIRAC_DEC_DATA, *DIRAC_DEC_HANDLE; - /*----------------------------------------------------------------------------------* * ParamMC structures @@ -737,10 +482,9 @@ typedef struct ivas_param_mc_diff_proto_info_structure } PARAM_MC_DIFF_PROTO_INFO; -/* ===== Parametric MC main structure ===== */ + typedef struct ivas_param_mc_dec_data_structure { - int16_t slot_size; float *Cldfb_RealBuffer_tc; float *Cldfb_ImagBuffer_tc; @@ -785,11 +529,11 @@ typedef struct ivas_param_mc_dec_data_structure } PARAM_MC_DEC_DATA, *PARAM_MC_DEC_HANDLE; + /*----------------------------------------------------------------------------------* * MC Param-Upmix Mode structures *----------------------------------------------------------------------------------*/ -/* ===== MC Param-Upmix Mode main structure ===== */ typedef struct ivas_mc_paramupmix_dec_data_structure { int16_t num_freq_bands; @@ -802,9 +546,14 @@ typedef struct ivas_mc_paramupmix_dec_data_structure int32_t beta_quant[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS]; int16_t first_frame; float *pcm_delay[MC_PARAMUPMIX_MAX_TRANSPORT_CHANS]; + float *param_interpolator; + float alpha_sf[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS]; + float beta_sf[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS]; + int16_t free_param_interpolator; } MC_PARAMUPMIX_DEC_DATA, *MC_PARAMUPMIX_DEC_HANDLE; + /*------------------------------------------------------------------------------------------* * SPAR decoder structures *------------------------------------------------------------------------------------------*/ @@ -864,6 +613,7 @@ typedef struct ivas_agc_dec_state_t } ivas_agc_dec_state_t; + /* PCA structure */ typedef struct { @@ -877,6 +627,7 @@ typedef struct } PCA_DEC_STATE; + /* main SPAR decoder structure */ typedef struct ivas_spar_dec_lib_t { @@ -971,6 +722,8 @@ typedef struct cpe_dec_data_structure float old_out_mdct[STEREO_MDCT2DFT_FADE_LEN_48k]; float old_outLB_mdct[2 * STEREO_MDCT2DFT_FADE_LEN_48k]; + int32_t brate_surplus; /* bitrate surplus for bitrate adaptation in combined format coding */ + } CPE_DEC_DATA, *CPE_DEC_HANDLE; @@ -986,6 +739,7 @@ typedef struct mct_dec_block_data_struct } MCT_DEC_BLOCK_DATA, *MCT_DEC_BLOCK_DATA_HANDLE; + typedef struct mct_dec_data_structure { int16_t nchan_out_woLFE; /* number of active channels within multi-channel configuration */ @@ -996,6 +750,7 @@ typedef struct mct_dec_data_structure int16_t chBitRatios[MCT_MAX_CHANNELS]; int16_t lowE_ch[MCT_MAX_CHANNELS]; /* note: pointer to local parameter */ uint16_t mc_global_ild[MCT_MAX_CHANNELS]; /* note: pointer to local parameter */ + } MCT_DEC_DATA, *MCT_DEC_HANDLE; @@ -1021,48 +776,6 @@ typedef struct ivas_lfe_dec_data_structure } LFE_DEC_DATA, *LFE_DEC_HANDLE; -// Note: the following structures are used only in lib_dec but this would likely change in the future -/*----------------------------------------------------------------------------------* - * VBAP structures - *----------------------------------------------------------------------------------*/ - -/* Defines a single virtual surface triplet of loudspeakers - * with a precalculated inverse matrix */ -typedef struct vbap_vs_triplet_structure -{ - uint8_t speaker_node[3]; - float inverse_matrix[3][3]; - -} VBAP_VS_TRIPLET; - - -/* Storage structure for fast runtime triplet search */ -typedef struct triplet_search_structure -{ - VBAP_VS_TRIPLET *triplets; - int16_t num_triplets; - int16_t initial_search_indices[VBAP_NUM_SEARCH_SECTORS]; - -} VBAP_SEARCH_STRUCT; - - -/* VBAP data structure. Contains the formed virtual surface arrangement * and supporting data. */ -typedef struct vbap_data_structure -{ - VBAP_SEARCH_STRUCT search_struct[2]; /* Default to max two groups in this implementation */ - int16_t num_search_structs; - int16_t num_speaker_nodes; - int16_t num_speaker_nodes_internal; - int16_t top_virtual_speaker_node_index; /* These indices can be negative */ - int16_t bottom_virtual_speaker_node_index; - int16_t back_virtual_speaker_node_index; - float *bottom_virtual_speaker_node_division_gains; - float *top_virtual_speaker_node_division_gains; - float *back_virtual_speaker_node_division_gains; - -} VBAP_DATA, *VBAP_HANDLE; - - /*----------------------------------------------------------------------------------* * renderer structures *----------------------------------------------------------------------------------*/ @@ -1071,11 +784,12 @@ typedef struct renderer_struct { float prev_gains[MAX_CICP_CHANNELS - 1][MAX_OUTPUT_CHANNELS]; float *interpolator; + int16_t interpolator_length; float gains[MAX_CICP_CHANNELS - 1][MAX_OUTPUT_CHANNELS]; } ISM_RENDERER_DATA, *ISM_RENDERER_HANDLE; - +#ifndef SPLIT_REND_WITH_HEAD_ROT /* Fastconv binaural data structure */ typedef struct ivas_binaural_rendering_struct { @@ -1099,45 +813,12 @@ typedef struct ivas_binaural_rendering_struct REVERB_STRUCT_HANDLE hReverb; } BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE; - +#endif /*----------------------------------------------------------------------------------* * MASA decoder structures *----------------------------------------------------------------------------------*/ -/* McMASA LFE synthesis structure */ -typedef struct ivas_mcmasa_lfe_synth_struct -{ - float lfeToTotalEnergyRatio[MAX_PARAM_SPATIAL_SUBFRAMES]; - int16_t lfeGainPrevIndex; - float transportEneSmooth; - float protoLfeEneSmooth; - float targetEneLfeSmooth; - float targetEneTransSmooth; - - float *lfeSynthRingBuffer; - int16_t ringBufferLoPointer; - int16_t ringBufferHiPointer; - float lowpassSum; - int16_t ringBufferSize; - - float *lfeSynthRingBuffer2; - int16_t ringBufferLoPointer2; - float lowpassSum2; - int16_t ringBufferSize2; - - float *delayBuffer_syncLp; - int16_t delayBuffer_syncLp_size; - - float *delayBuffer_syncDirAC; - int16_t delayBuffer_syncDirAC_size; - - float lfeGainPrev; - float transportGainPrev; - float interpolator[CLDFB_NO_CHANNELS_MAX]; - -} MCMASA_LFE_SYNTH_DATA, *MCMASA_LFE_SYNTH_DATA_HANDLE; - typedef struct ivas_masa_decoder_ext_out_meta_struct { MASA_DECRIPTIVE_META descriptiveMeta; @@ -1169,6 +850,39 @@ typedef struct ivas_masa_decoder_struct } MASA_DECODER, *MASA_DECODER_HANDLE; +/* Data structure for MASA_ISM rendering */ +typedef struct ivas_masa_ism_data_structure +{ + int16_t azimuth_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR]; + int16_t elevation_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR]; + float energy_ratio_ism[MAX_NUM_OBJECTS][MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR][CLDFB_NO_CHANNELS_MAX]; + float masa_to_total_energy_ratio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; + + int16_t azimuth_ism_edited[MAX_NUM_OBJECTS]; + int16_t elevation_ism_edited[MAX_NUM_OBJECTS]; + uint8_t ism_is_edited[MAX_NUM_OBJECTS]; + + int16_t idx_separated_ism; + int16_t azimuth_separated_ism[MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR]; + int16_t elevation_separated_ism[MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR]; + + float q_azimuth_old[MAX_NUM_OBJECTS]; + float q_elevation_old[MAX_NUM_OBJECTS]; + + float ismPreprocMatrix[2][2][CLDFB_NO_CHANNELS_MAX]; + uint8_t objectsMoved; + float eneMoveIIR[2][CLDFB_NO_CHANNELS_MAX]; + float enePreserveIIR[2][CLDFB_NO_CHANNELS_MAX]; + float preprocEneTarget[CLDFB_NO_CHANNELS_MAX]; + float preprocEneRealized[CLDFB_NO_CHANNELS_MAX]; + + float **delayBuffer; + int16_t delayBuffer_size; + int16_t delayBuffer_nchan; + +} MASA_ISM_DATA, *MASA_ISM_DATA_HANDLE; + + /*----------------------------------------------------------------------------------* * Decoder configuration structure *----------------------------------------------------------------------------------*/ @@ -1194,10 +908,49 @@ typedef struct decoder_config_structure #ifdef DEBUGGING int16_t force_rend; /* forced TD/CLDFB binaural renderer (for ISM and MC) */ #endif +#ifdef API_5MS + int16_t Opt_tsm; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t Opt_Limiter; +#endif +#ifdef API_5MS_BASELINE + int16_t Opt_5ms; +#endif +#else int16_t voip_active; +#endif int16_t Opt_delay_comp; /* flag indicating delay compensation active */ + } DECODER_CONFIG, *DECODER_CONFIG_HANDLE; +#ifdef SPLIT_REND_WITH_HEAD_ROT +typedef struct +{ + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + +} IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA, *IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE; + +typedef struct +{ + float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + AUDIO_CONFIG config; + +} IVAS_DEC_SPLIT_REND_CLDFB_OUT_DATA, *IVAS_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE; + +typedef struct +{ + IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE hMultiBinCldfbData; /*scratch buffer for frame by frame processing*/ + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits; /*scratch buffer for frame by frame processing*/ + SPLIT_REND_WRAPPER splitrend; + IVAS_DEC_SPLIT_REND_CLDFB_OUT_DATA_HANDLE hCldfbDataOut; /*buffer to store cldfb data before binauralization*/ +#ifdef API_5MS + float *tdDataOut; /*buffer to store TD data before binauralization*/ + int16_t numTdSamplesPerChannelCached; +#endif +} IVAS_DEC_SPLIT_REND_WRAPPER; +#endif typedef struct decoder_tc_buffer_structure { @@ -1221,7 +974,6 @@ typedef struct decoder_tc_buffer_structure } DECODER_TC_BUFFER, *DECODER_TC_BUFFER_HANDLE; -#ifdef FIX_470_MASA_JBM_EXT typedef struct jbm_metadata_structure { int16_t sf_write_idx; @@ -1239,8 +991,8 @@ typedef struct jbm_metadata_structure int16_t slot_md_buffer_length; int16_t sf_to_slot_map[MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME * MASA_JBM_RINGBUFFER_FRAMES]; + } JBM_METADATA, *JBM_METADATA_HANDLE; -#endif /*----------------------------------------------------------------------------------* @@ -1256,6 +1008,7 @@ typedef struct Decoder_Struct DECODER_CONFIG_HANDLE hDecoderConfig; /* Decoder configuration structure */ IVAS_FORMAT ivas_format; /* IVAS format */ + IVAS_FORMAT last_ivas_format; /* last frame IVAS format */ int16_t sid_format; /* IVAS format indicator from SID frame */ int16_t nchan_transport; /* number of transport channels */ IVAS_OUTPUT_SETUP hOutSetup; /* output setup structure */ @@ -1279,6 +1032,8 @@ typedef struct Decoder_Struct float **mem_hp20_out; /* output signals HP filter memories */ IVAS_LIMITER_HANDLE hLimiter; /* Limiter handle */ + float *p_output_f[MAX_OUTPUT_CHANNELS+MAX_NUM_OBJECTS]; /* floating-point output audio buffers */ + /* core-decoder modules */ int16_t nSCE; /* number of total SCEs */ int16_t nCPE; /* number of total CPEs */ @@ -1313,7 +1068,11 @@ 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_PARAMBIN + 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 */ @@ -1330,12 +1089,19 @@ typedef struct Decoder_Struct int32_t binaural_latency_ns; /* Binauralization latency in ns */ EXTERNAL_ORIENTATION_HANDLE hExtOrientationData; /* External orientation data structure */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData; /* Combined external and head orientation data structure */ + DIRAC_REND_HANDLE hDirACRend; /* DirAC renderer handle */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; /* Spatial parametric (DirAC rend, ParamBin, ParamISM) rendering common data handle. */ + MASA_ISM_DATA_HANDLE hMasaIsmData; + + int16_t flag_omasa_brate; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_SPLIT_REND_WRAPPER hSplitBinRend; /* split binuaral rendering handle */ +#endif /* JBM module */ DECODER_TC_BUFFER_HANDLE hTcBuffer; /* JBM structure */ -#ifdef FIX_470_MASA_JBM_EXT JBM_METADATA_HANDLE hJbmMetadata; /* Structure for metadata buffering in JBM */ -#endif #ifdef DEBUGGING int32_t noClipping; /* number of clipped samples */ diff --git a/lib_dec/ivas_stereo_cng_dec.c b/lib_dec/ivas_stereo_cng_dec.c index c12498c015e6a9d54b79278ec89f36c8bacbf6c7..276081237bc13b7ab89d659afc6cc37bb37ab38a 100644 --- a/lib_dec/ivas_stereo_cng_dec.c +++ b/lib_dec/ivas_stereo_cng_dec.c @@ -342,9 +342,13 @@ static void stereo_dft_generate_comfort_noise( ptr0 = cngNoiseLevel_upd; ptr1 = ptr0 + 2; ptr2 = ptr1 + 1; + assert( st->lp_ener > 0.0f ); + factor = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ); /* fixed factor in the loop below */ for ( i = 0; i < st->L_frame / 2 - 1; i++ ) { - *ptr0++ = 2.0f * sqrtf( st->lp_ener / st->L_frame * 0.5f ) * inv_sqrt( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); + ftmp = *ptr1 * *ptr1 + *ptr2 * *ptr2; + assert( ftmp > 0.0f ); + *ptr0++ = factor * inv_sqrt( ftmp ); ptr1 += 2; ptr2 += 2; } @@ -375,9 +379,18 @@ static void stereo_dft_generate_comfort_noise( ptr0 = shb_shape; ptr1 = ptr0 + 2; ptr2 = ptr1 + 1; + for ( i = 0; i < L_FRAME16k / 2 - 1; i++ ) { - ftmp = 1.0f / ( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); + ftmp = ( *ptr1 * *ptr1 + *ptr2 * *ptr2 ); + assert( ftmp > 0.0f ); + ftmp = 1.0f / ftmp; + /* in float: + both a = "div"=(1/(x^2+y^2) and sqrt(a) is used and summed up in the same loop. + + in BASOP: + sum up using inv_sqrt( *ptr1 * *ptr1 + *ptr2 * *ptr2 ), in this loop + and then sum up enr = sum( *ptr0 * *ptr0 ), in a subsequent MAC loop */ enr += ftmp; *ptr0++ = sqrtf( ftmp ); ptr1 += 2; @@ -455,6 +468,7 @@ static void stereo_dft_generate_comfort_noise( { /* high band generation, flipped spectrum */ + assert( enr != 0.0f ); scale = sqrtf( powf( 10, 0.1f * st->hTdCngDec->shb_cng_gain ) / enr ); ptr_shb = shb_shape + L_FRAME16k / 2 - 1; /* Averaging for Nyquist frequency */ @@ -730,10 +744,10 @@ void stereo_cng_dec_update( *-------------------------------------------------------------------*/ void stereo_cng_compute_PScorr( - float output[CPE_CHANNELS][L_FRAME48k], /* 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 */ + 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 */ ) { int16_t i; @@ -786,10 +800,10 @@ void stereo_cng_compute_PScorr( *-------------------------------------------------------------------*/ static void stereo_cng_compute_LRcorr( - CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */ - float output[CPE_CHANNELS][L_FRAME48k], /* i : Output signal */ - const int16_t output_frame, /* i : Output frame length */ - const int16_t tdm_ratio_idx /* i : TDM ratio index */ + CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */ + 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 */ ) { int16_t i; @@ -875,10 +889,10 @@ static void FindEmEs( *-------------------------------------------------------------------*/ void stereo_cna_update_params( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i : Output signal */ - const int16_t output_frame, /* i : Output frame length */ - const int16_t tdm_ratio_idx /* i : TDM ratio index */ + 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 */ ) { int16_t i; diff --git a/lib_dec/ivas_stereo_ica_dec.c b/lib_dec/ivas_stereo_ica_dec.c index b62857a8697ee25bec66d502791c6b3702f29bcc..e5c6c00b0a5683cf5a016ed6accfae28e077b592 100644 --- a/lib_dec/ivas_stereo_ica_dec.c +++ b/lib_dec/ivas_stereo_ica_dec.c @@ -54,9 +54,9 @@ * ---------------------------------------------------------------*/ void stereo_tca_dec( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float synth[CPE_CHANNELS][L_FRAME48k], /* i/o: output synth */ - const int16_t output_frame /* i : length of a frame per channel */ + 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 */ ) { /* Buffers, input Left and right channels @ input_Fs*/ @@ -148,8 +148,6 @@ void stereo_tca_dec( prevNCShift = (int16_t) abs( hStereoTCA->prevCorrLagStats ); currentNCShift = (int16_t) abs( hStereoTCA->corrLagStats ); - /* IVAS_fmToDo: QCTodo: Need to address [16, 32] kHz @ Encoder --> 48 kHz Decoder. 48kHz-->48kHz is ok */ - /*target_idx = (hStereoTCA->refChanIndx == L_CH_INDX) ? R_CH_INDX : L_CH_INDX;*/ if ( hCPE->element_mode == IVAS_CPE_TD && hCPE->last_element_mode == IVAS_CPE_TD ) { @@ -269,7 +267,7 @@ void stereo_tca_dec( void stereo_tca_scale_R_channel( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[L_FRAME48k], /* i/o: output synthesis, R channel */ + float *output, /* i/o: output synthesis, R channel */ const int16_t output_frame /* i : frame length */ ) { diff --git a/lib_dec/ivas_stereo_icbwe_dec.c b/lib_dec/ivas_stereo_icbwe_dec.c index 13722f2b2ab74d76c773fd093fd10481215f424f..2be60ffcba1ffa088554ee523c8148cf7f461e10 100644 --- a/lib_dec/ivas_stereo_icbwe_dec.c +++ b/lib_dec/ivas_stereo_icbwe_dec.c @@ -312,12 +312,6 @@ void stereo_icBWE_dec( specMapping = hStereoICBWE->prevSpecMapping; gsMapping = hStereoICBWE->prevgsMapping; -#ifdef QC_DBG_ICBWE - dbgwrite( &hStereoICBWE->refChanIndx_bwe, 2, 1, 1, "refChanIndx_bwe_dec.pcm" ); - dbgwrite( &specMapping, 4, 1, 1, "spMapping_dec.pcm" ); - dbgwrite( &gsMapping, 4, 1, 1, "gsMapping_dec.pcm" ); -#endif - if ( ( st->extl == SWB_TBE || st->extl == FB_TBE ) && st->flag_ACELP16k == 1 ) { mvr2r( voice_factors, nlMixFac, NB_SUBFR16k ); @@ -522,7 +516,7 @@ void stereo_icBWE_dec( void stereo_icBWE_decproc( CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: output synthesis */ + float *output[CPE_CHANNELS], /* i/o: output synthesis */ 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 */ @@ -739,7 +733,6 @@ void stereo_icBWE_decproc( { if ( hCPE->element_mode == IVAS_CPE_TD ) { - /* QC: TODO - TBV */ v_add( output[0], hStereoICBWE->memOutHB[hStereoICBWE->prev_refChanIndx_bwe], output[0], memOffset ); v_add( output[1], hStereoICBWE->memOutHB[!hStereoICBWE->prev_refChanIndx_bwe], output[1], memOffset ); } diff --git a/lib_dec/ivas_stereo_mdct_core_dec.c b/lib_dec/ivas_stereo_mdct_core_dec.c index 1019868229ad8d7ccdfb5612080c181ead59d50e..74dafc3aeeae012025cfb6f9e33561a446671991 100644 --- a/lib_dec/ivas_stereo_mdct_core_dec.c +++ b/lib_dec/ivas_stereo_mdct_core_dec.c @@ -141,7 +141,7 @@ static void stereo_mdct_dec_stereo( 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][L_FRAME48k], /* o : synthesis @internal_FS */ + float *signal_out[CPE_CHANNELS], /* o : synthesis @internal_FS */ float signal_outFB[CPE_CHANNELS][L_FRAME48k] /* o : synthesis @output_FS */ ) { @@ -215,9 +215,7 @@ void stereo_mdct_core_dec( set_s( ms_mask[1], 0, MAX_SFB ); initMdctStereoDecData( hCPE->hStereoMdct, sts[0]->igf, sts[0]->hIGFDec->igfData.igfInfo.grid, hCPE->element_brate, sts[0]->bwidth ); - - hCPE->hStereoMdct->isSBAStereoMode = ( ( st_ivas->ivas_format == SBA_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); - + hCPE->hStereoMdct->isSBAStereoMode = ( ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); if ( !bfi ) { ivas_mdct_dec_side_bits_frame_channel( hCPE, param_lpc, p_param, hCPE->hCoreCoder[0], nTnsBitsTCX10, param, 0, 0 ); diff --git a/lib_dec/ivas_stereo_mdct_stereo_dec.c b/lib_dec/ivas_stereo_mdct_stereo_dec.c index 76f740d6c6f4cf24bbdc1dded6b083f345eba3d4..2d2a40d21fbaacbe896e57c517ed57db117e897d 100644 --- a/lib_dec/ivas_stereo_mdct_stereo_dec.c +++ b/lib_dec/ivas_stereo_mdct_stereo_dec.c @@ -552,10 +552,10 @@ void synchonize_channels_mdct_sid( *-------------------------------------------------------------------*/ void updateBuffersForDmxMdctStereo( - CPE_DEC_HANDLE hCPE, /* i/o: CPE handle */ - const int16_t output_frame, /* i : output frame length */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: decoder output */ - float synth[CPE_CHANNELS][L_FRAME48k] /* i/o: decoder synthesis */ + 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 */ ) { int16_t delay_buf_out_len, tcxltp_mem_in_len, delta, i; @@ -634,9 +634,9 @@ void updateBuffersForDmxMdctStereo( *-------------------------------------------------------------------*/ void applyDmxMdctStereo( - const CPE_DEC_HANDLE hCPE, /* i : CPE handle */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: core decoder output */ - const int16_t output_frame /* i : output frame length */ + const CPE_DEC_HANDLE hCPE, /* i : CPE handle */ + float *output[CPE_CHANNELS], /* i/o: core decoder output */ + const int16_t output_frame /* i : output frame length */ ) { int16_t crossfade_len, i; diff --git a/lib_dec/ivas_stereo_switching_dec.c b/lib_dec/ivas_stereo_switching_dec.c index 013cc24660264ccf974f7bd9529ca8de09dc9d46..62ca749f405a258745496e5dcb629a30b8e30395 100644 --- a/lib_dec/ivas_stereo_switching_dec.c +++ b/lib_dec/ivas_stereo_switching_dec.c @@ -768,7 +768,7 @@ ivas_error stereo_memory_dec( if ( hCPE->hCoreCoder[0]->bfi == 0 ) { st = hCPE->hCoreCoder[1]; - hCPE->hStereoTD->tdm_LRTD_flag = get_indice_st( hCPE->hCoreCoder[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS - TDM_LP_REUSE_BITS - TDM_LR_CONTENT_BITS ), TDM_LR_CONTENT_BITS ); + hCPE->hStereoTD->tdm_LRTD_flag = get_indice_st( hCPE->hCoreCoder[0], hCPE->element_brate + hCPE->brate_surplus, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata + ( hCPE->brate_surplus / FRAMES_PER_SEC ) - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS - TDM_LP_REUSE_BITS - TDM_LR_CONTENT_BITS ), TDM_LR_CONTENT_BITS ); if ( hCPE->hStereoTD->tdm_LRTD_flag ) { @@ -876,7 +876,7 @@ ivas_error stereo_memory_dec( * Bitrate switching in MASA format *---------------------------------------------------------------*/ - if ( ivas_format == MASA_FORMAT && nchan_transport == 2 ) + if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) && nchan_transport == 2 ) { if ( hCPE->nchan_out == 1 ) { @@ -1008,11 +1008,11 @@ ivas_error stereo_memory_dec( *-------------------------------------------------------------------*/ 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][L_FRAME48k], /* 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 */ + 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 */ ) { int16_t n, delay_comp_TD, delay_comp_DFT; @@ -1786,9 +1786,9 @@ static float ncross_corr_self( #define DFT2TD_CORR_THRESH 0.9f void smooth_dft2td_transition( - CPE_DEC_HANDLE hCPE, /* i/o: CPE decoder structure */ - float output[CPE_CHANNELS][L_FRAME48k], /* i/o: synthesis @external Fs */ - const int16_t output_frame /* i : output frame lenght */ + 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 lenght */ ) { Decoder_State **sts; diff --git a/lib_dec/ivas_stereo_td_dec.c b/lib_dec/ivas_stereo_td_dec.c index 605d5ad388ca0f2bf6853c8deb59ac9cd881762d..630129c474b4b37678ae4c69e1476959085dc70f 100644 --- a/lib_dec/ivas_stereo_td_dec.c +++ b/lib_dec/ivas_stereo_td_dec.c @@ -84,6 +84,8 @@ void stereo_td_init_dec( *-------------------------------------------------------------------*/ 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 */ @@ -94,10 +96,15 @@ void tdm_configure_dec( int16_t tdm_tmp_SM_LRTD_flag; int16_t mod_ct, core, bits_offset; int16_t idx_LRTD_pri_side, tdm_inst_ratio_idx; + int32_t element_brate_adapt; + int16_t bstr_last_pos; hStereoTD = hCPE->hStereoTD; sts = hCPE->hCoreCoder; + element_brate_adapt = hCPE->element_brate + hCPE->brate_surplus; + bstr_last_pos = (int16_t) ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata + (int16_t) ( hCPE->brate_surplus / FRAMES_PER_SEC ); + /*----------------------------------------------------------------* * Decode CoreCoder signaling *----------------------------------------------------------------*/ @@ -123,7 +130,7 @@ void tdm_configure_dec( /* Get few parameters needed to decode the bitrate allocated to each channel */ /* Get the coder_type of the secondary channel (last parameter on 2 bits) */ - sts[1]->coder_type = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SECONDARY_SIGNALLING ), TDM_SECONDARY_SIGNALLING ); + sts[1]->coder_type = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SECONDARY_SIGNALLING, TDM_SECONDARY_SIGNALLING ); /* Get the LRTD config flag: 1 = LRTD configuration, favor closer bitrate per channel; 0 = Pri/Sec configuration, bitrates linked wrt. the mono */ @@ -151,19 +158,19 @@ void tdm_configure_dec( *----------------------------------------------------------------*/ /* Get the correlation ratio */ - *tdm_ratio_idx = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS ), TDM_RATIO_BITS ); + *tdm_ratio_idx = get_indice_st( sts[0], element_brate_adapt, (int16_t) ( bstr_last_pos - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS ), TDM_RATIO_BITS ); hStereoTD->tdm_use_IAWB_Ave_lpc = 0; if ( sts[1]->coder_type == INACTIVE ) { /* Get the flag on the LPC reusage type (primary channel of ave LPC */ - hStereoTD->tdm_use_IAWB_Ave_lpc = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS - TDM_LP_REUSE_BITS ), TDM_LP_REUSE_BITS ); + hStereoTD->tdm_use_IAWB_Ave_lpc = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS - TDM_LP_REUSE_BITS, TDM_LP_REUSE_BITS ); hStereoTD->tdm_lp_reuse_flag = 1; } else { /* Get the flag on the LPC reusage */ - hStereoTD->tdm_lp_reuse_flag = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS - TDM_LP_REUSE_BITS ), TDM_LP_REUSE_BITS ); + hStereoTD->tdm_lp_reuse_flag = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SECONDARY_SIGNALLING - TDM_RATIO_BITS - TDM_LP_REUSE_BITS, TDM_LP_REUSE_BITS ); } sts[0]->tdm_LRTD_flag = hStereoTD->tdm_LRTD_flag; /* the flag was already read in function stereo_memory_dec() */ @@ -219,7 +226,7 @@ void tdm_configure_dec( int16_t tmpS = 20; if ( hStereoTD->tdm_LRTD_flag == 0 ) { - tmpS = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS + STEREO_BITS_TCA_CHAN + STEREO_BITS_TCA_CORRSTATS ), STEREO_BITS_TCA_GD ); + tmpS = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS + STEREO_BITS_TCA_CHAN + STEREO_BITS_TCA_CORRSTATS, STEREO_BITS_TCA_GD ); } hCPE->hStereoDftDmx->targetGain = usdequant( tmpS, STEREO_TCA_GDMIN, STEREO_TCA_GDSTEP ); hCPE->hStereoDftDmx->targetGain = powf( 10, hCPE->hStereoDftDmx->targetGain ); @@ -228,9 +235,9 @@ void tdm_configure_dec( { if ( hStereoTD->tdm_LRTD_flag == 0 ) { - hCPE->hStereoTCA->refChanIndx = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS ), STEREO_BITS_TCA_CHAN ); - hCPE->hStereoTCA->indx_ica_NCShift = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS + STEREO_BITS_TCA_CHAN ), STEREO_BITS_TCA_CORRSTATS ); - hCPE->hStereoTCA->indx_ica_gD = get_indice_st( sts[0], hCPE->element_brate, (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) - nb_bits_metadata - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS + STEREO_BITS_TCA_CHAN + STEREO_BITS_TCA_CORRSTATS ), STEREO_BITS_TCA_GD ); + hCPE->hStereoTCA->refChanIndx = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS, STEREO_BITS_TCA_CHAN ); + hCPE->hStereoTCA->indx_ica_NCShift = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS + STEREO_BITS_TCA_CHAN, STEREO_BITS_TCA_CORRSTATS ); + hCPE->hStereoTCA->indx_ica_gD = get_indice_st( sts[0], element_brate_adapt, bstr_last_pos - TDM_SIGNAL_BITS_READ_FROM_THE_END_OF_BS + STEREO_BITS_TCA_CHAN + STEREO_BITS_TCA_CORRSTATS, STEREO_BITS_TCA_GD ); } else { @@ -250,7 +257,7 @@ void tdm_configure_dec( #endif /* set the BW of the secondary channel */ - if ( hStereoTD->tdm_LRTD_flag && hCPE->element_brate > IVAS_13k2 ) + if ( hStereoTD->tdm_LRTD_flag && sts[1]->bits_frame_channel >= IVAS_16k4 / FRAMES_PER_SEC ) { /* set BW of the secondary channel in LRTD stereo mode as the BW of the primary channel at higher bitrates */ sts[1]->bwidth = sts[0]->bwidth; @@ -265,7 +272,12 @@ void tdm_configure_dec( * bitbudget distribution between channels (taking into account also metadata bitbudget) *----------------------------------------------------------------*/ - tdm_bit_alloc( hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC, hStereoTD->tdm_lp_reuse_flag, &( sts[0]->total_brate ), &( sts[1]->total_brate ), &hStereoTD->tdm_low_rate_mode, sts[1]->coder_type, *tdm_ratio_idx, hStereoTD->tdm_Pitch_reuse_flag, sts[0]->bwidth, sts[1]->bwidth, sts[0]->flag_ACELP16k, hStereoTD->tdm_LRTD_flag, mod_ct, tdm_inst_ratio_idx ); + tdm_bit_alloc( ivas_format, + ism_mode, + hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC + hCPE->brate_surplus, + hStereoTD->tdm_lp_reuse_flag, &( sts[0]->total_brate ), &( sts[1]->total_brate ), + &hStereoTD->tdm_low_rate_mode, sts[1]->coder_type, *tdm_ratio_idx, hStereoTD->tdm_Pitch_reuse_flag, + sts[0]->bwidth, sts[1]->bwidth, sts[0]->flag_ACELP16k, hStereoTD->tdm_LRTD_flag, mod_ct, tdm_inst_ratio_idx ); return; } diff --git a/lib_dec/ivas_vbap.c b/lib_dec/ivas_vbap.c index 841f3df132015ea8ac0505bde28ffb4374ec315c..4098c62763774822c1162b0718e8f6d056520eaf 100644 --- a/lib_dec/ivas_vbap.c +++ b/lib_dec/ivas_vbap.c @@ -141,7 +141,7 @@ static enum VirtualSpeakerNodeType check_need_of_virtual_speaker_node( VBAP_HAND static int16_t determine_best_triplet_and_gains( VBAP_SEARCH_STRUCT *search_struct, const float panning_unit_vec[3], const int16_t azi_deg, float gains[3] ); -static void determine_virtual_speaker_node_division_gains( const int16_t virtual_speaker_node_index, float *virtual_node_division_gains, int16_t connections[][2], const enum VirtualSpeakerNodeType type, const int16_t max_num_connections, const int16_t num_speaker_nodes ); +static void determine_virtual_speaker_node_division_gains( const int16_t virtual_speaker_node_index, float *virtual_node_division_gains, int16_t connections[][2], const enum VirtualSpeakerNodeType type, const int16_t max_num_connections, const int16_t num_speaker_nodes, const int16_t use_object_mode ); static void reorder_triplets( VBAP_VS_TRIPLET *triplets, const int16_t *target_order, const int16_t num_triplets ); @@ -157,6 +157,8 @@ ivas_error vbap_init_data( const float *speaker_node_azi_deg, /* i : vector of speaker node azimuths (positive left) */ const float *speaker_node_ele_deg, /* i : vector of speaker node elevations (positive up) */ const int16_t num_speaker_nodes /* i : number of speaker nodes in the set */ + , + const IVAS_FORMAT ivas_format /* i : IVAS format */ ) { /* Variables */ @@ -207,6 +209,9 @@ ivas_error vbap_init_data( vbap->bottom_virtual_speaker_node_division_gains = NULL; vbap->top_virtual_speaker_node_division_gains = NULL; vbap->back_virtual_speaker_node_division_gains = NULL; + vbap->object_mode_bottom_virtual_speaker_node_division_gains = NULL; + vbap->object_mode_top_virtual_speaker_node_division_gains = NULL; + vbap->object_mode_back_virtual_speaker_node_division_gains = NULL; vbap->num_speaker_nodes = num_speaker_nodes; vbap->num_speaker_nodes_internal = num_speaker_nodes; @@ -229,6 +234,17 @@ ivas_error vbap_init_data( } set_zero( vbap->bottom_virtual_speaker_node_division_gains, num_speaker_nodes ); is_success &= vbap->bottom_virtual_speaker_node_division_gains != NULL; + + if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( ( vbap->object_mode_bottom_virtual_speaker_node_division_gains = (float *) malloc( num_speaker_nodes * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for VBAP data\n" ) ); + } + set_zero( vbap->object_mode_bottom_virtual_speaker_node_division_gains, num_speaker_nodes ); + is_success &= vbap->object_mode_bottom_virtual_speaker_node_division_gains != NULL; + } + speaker_node_azi_deg_internal[vbap->bottom_virtual_speaker_node_index] = 0.0f; speaker_node_ele_deg_internal[vbap->bottom_virtual_speaker_node_index] = -90.0f; } @@ -241,6 +257,17 @@ ivas_error vbap_init_data( } set_zero( vbap->top_virtual_speaker_node_division_gains, num_speaker_nodes ); is_success &= vbap->top_virtual_speaker_node_division_gains != NULL; + + if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( ( vbap->object_mode_top_virtual_speaker_node_division_gains = (float *) malloc( num_speaker_nodes * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for VBAP data\n" ) ); + } + set_zero( vbap->object_mode_top_virtual_speaker_node_division_gains, num_speaker_nodes ); + is_success &= vbap->object_mode_top_virtual_speaker_node_division_gains != NULL; + } + speaker_node_azi_deg_internal[vbap->top_virtual_speaker_node_index] = 0.0f; speaker_node_ele_deg_internal[vbap->top_virtual_speaker_node_index] = 90.0f; } @@ -253,6 +280,16 @@ ivas_error vbap_init_data( } set_zero( vbap->back_virtual_speaker_node_division_gains, num_speaker_nodes ); is_success &= vbap->back_virtual_speaker_node_division_gains != NULL; + + if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( ( vbap->object_mode_back_virtual_speaker_node_division_gains = (float *) malloc( num_speaker_nodes * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for VBAP data\n" ) ); + } + set_zero( vbap->object_mode_back_virtual_speaker_node_division_gains, num_speaker_nodes ); + is_success &= vbap->object_mode_back_virtual_speaker_node_division_gains != NULL; + } speaker_node_azi_deg_internal[vbap->back_virtual_speaker_node_index] = 180.0f; speaker_node_ele_deg_internal[vbap->back_virtual_speaker_node_index] = 0.0f; } @@ -342,11 +379,15 @@ ivas_error vbap_init_data( /* Determine how the virtual node gains should be distributed to real nodes, if necessary (checked within function). */ if ( is_success ) { - determine_virtual_speaker_node_division_gains( vbap->top_virtual_speaker_node_index, vbap->top_virtual_speaker_node_division_gains, connections, virtual_top_type, max_num_connections, num_speaker_nodes ); - - determine_virtual_speaker_node_division_gains( vbap->bottom_virtual_speaker_node_index, vbap->bottom_virtual_speaker_node_division_gains, connections, virtual_bottom_type, max_num_connections, num_speaker_nodes ); - - determine_virtual_speaker_node_division_gains( vbap->back_virtual_speaker_node_index, vbap->back_virtual_speaker_node_division_gains, connections, virtual_back_type, max_num_connections, num_speaker_nodes ); + determine_virtual_speaker_node_division_gains( vbap->top_virtual_speaker_node_index, vbap->top_virtual_speaker_node_division_gains, connections, virtual_top_type, max_num_connections, num_speaker_nodes, 0 ); + determine_virtual_speaker_node_division_gains( vbap->bottom_virtual_speaker_node_index, vbap->bottom_virtual_speaker_node_division_gains, connections, virtual_bottom_type, max_num_connections, num_speaker_nodes, 0 ); + determine_virtual_speaker_node_division_gains( vbap->back_virtual_speaker_node_index, vbap->back_virtual_speaker_node_division_gains, connections, virtual_back_type, max_num_connections, num_speaker_nodes, 0 ); + if ( ivas_format == MASA_ISM_FORMAT ) + { + determine_virtual_speaker_node_division_gains( vbap->top_virtual_speaker_node_index, vbap->object_mode_top_virtual_speaker_node_division_gains, connections, virtual_top_type == NO_VIRTUAL_SPEAKER_NODE ? NO_VIRTUAL_SPEAKER_NODE : VIRTUAL_SPEAKER_NODE_DISTRIBUTE_ENERGY, max_num_connections, num_speaker_nodes, 1 ); + determine_virtual_speaker_node_division_gains( vbap->bottom_virtual_speaker_node_index, vbap->object_mode_bottom_virtual_speaker_node_division_gains, connections, virtual_bottom_type == NO_VIRTUAL_SPEAKER_NODE ? NO_VIRTUAL_SPEAKER_NODE : VIRTUAL_SPEAKER_NODE_DISTRIBUTE_ENERGY, max_num_connections, num_speaker_nodes, 1 ); + determine_virtual_speaker_node_division_gains( vbap->back_virtual_speaker_node_index, vbap->object_mode_back_virtual_speaker_node_division_gains, connections, virtual_back_type == NO_VIRTUAL_SPEAKER_NODE ? NO_VIRTUAL_SPEAKER_NODE : VIRTUAL_SPEAKER_NODE_DISTRIBUTE_ENERGY, max_num_connections, num_speaker_nodes, 1 ); + } } pop_wmops(); @@ -391,6 +432,18 @@ void vbap_free_data( { free( ( *hVBAPdata )->back_virtual_speaker_node_division_gains ); } + if ( ( *hVBAPdata )->object_mode_bottom_virtual_speaker_node_division_gains != NULL ) + { + free( ( *hVBAPdata )->object_mode_bottom_virtual_speaker_node_division_gains ); + } + if ( ( *hVBAPdata )->object_mode_top_virtual_speaker_node_division_gains != NULL ) + { + free( ( *hVBAPdata )->object_mode_top_virtual_speaker_node_division_gains ); + } + if ( ( *hVBAPdata )->object_mode_back_virtual_speaker_node_division_gains != NULL ) + { + free( ( *hVBAPdata )->object_mode_back_virtual_speaker_node_division_gains ); + } if ( ( *hVBAPdata )->search_struct[0].triplets != NULL ) { free( ( *hVBAPdata )->search_struct[0].triplets ); @@ -418,6 +471,8 @@ void vbap_determine_gains( float *gains, /* o : gain vector for loudspeakers for given direction */ const int16_t azi_deg, /* i : azimuth in degrees for panning direction (positive left)*/ const int16_t ele_deg /* i : elevation in degrees for panning direction (positive up)*/ + , + const int16_t use_object_mode /* i : select between object mode panning and spatial mode panning */ ) { /* This function formulates gains for the given angle. The triplet-selection has been pre-formulated. */ @@ -451,9 +506,18 @@ void vbap_determine_gains( bottom_virtual_speaker_node_index = hVBAPdata->bottom_virtual_speaker_node_index; top_virtual_speaker_node_index = hVBAPdata->top_virtual_speaker_node_index; back_virtual_speaker_node_index = hVBAPdata->back_virtual_speaker_node_index; - bottom_virtual_speaker_node_division_gains = hVBAPdata->bottom_virtual_speaker_node_division_gains; - top_virtual_speaker_node_division_gains = hVBAPdata->top_virtual_speaker_node_division_gains; - back_virtual_speaker_node_division_gains = hVBAPdata->back_virtual_speaker_node_division_gains; + if ( use_object_mode ) + { + bottom_virtual_speaker_node_division_gains = hVBAPdata->object_mode_bottom_virtual_speaker_node_division_gains; + top_virtual_speaker_node_division_gains = hVBAPdata->object_mode_top_virtual_speaker_node_division_gains; + back_virtual_speaker_node_division_gains = hVBAPdata->object_mode_back_virtual_speaker_node_division_gains; + } + else + { + bottom_virtual_speaker_node_division_gains = hVBAPdata->bottom_virtual_speaker_node_division_gains; + top_virtual_speaker_node_division_gains = hVBAPdata->top_virtual_speaker_node_division_gains; + back_virtual_speaker_node_division_gains = hVBAPdata->back_virtual_speaker_node_division_gains; + } panning_wrap_angles( (float) azi_deg, (float) ele_deg, &azi_temp, &ele_temp ); azi_rad = azi_temp * PI_OVER_180; @@ -702,6 +766,8 @@ static void determine_virtual_speaker_node_division_gains( const enum VirtualSpeakerNodeType type, /* i : virtual speaker node typel */ const int16_t max_num_connections, /* i : max number of connections */ const int16_t num_speaker_nodes /* i : max number of speaker nodes */ + , + const int16_t use_object_mode /* i : use VBAP in object panning mode vs. spatial panning mode */ ) { /* When node type is VIRTUAL_SPEAKER_NODE_DISTRIBUTE_ENERGY, the gains of the virtual node @@ -744,6 +810,10 @@ static void determine_virtual_speaker_node_division_gains( for ( ch = 0; ch < num_speaker_nodes; ch++ ) { virtual_node_division_gains[ch] /= sum_val; + if ( use_object_mode ) + { + virtual_node_division_gains[ch] = powf( virtual_node_division_gains[ch], 0.8f ); + } } } @@ -1850,9 +1920,9 @@ static int16_t determine_non_crossing_planes( *-------------------------------------------------------------------------*/ static void reorder_triplets( - VBAP_VS_TRIPLET *triplets, /* i/o : VS triplets to be reordered */ - const int16_t *target_order, /* i : Target order for VS triplets */ - const int16_t num_triplets /* i : Number of VS triplets */ + VBAP_VS_TRIPLET *triplets, /* i/o: VS triplets to be reordered */ + const int16_t *target_order, /* i : Target order for VS triplets */ + const int16_t num_triplets /* i : Number of VS triplets */ ) { VBAP_VS_TRIPLET tempTriplets[VBAP_MAX_NUM_TRIPLETS]; diff --git a/lib_dec/jbm_jb4sb.h b/lib_dec/jbm_jb4sb.h index 00f5ccbb4078ab61d69873fb1cd6c3e25f5128a6..599730975da23f620c190baeafe7062160192ef0 100644 --- a/lib_dec/jbm_jb4sb.h +++ b/lib_dec/jbm_jb4sb.h @@ -77,13 +77,13 @@ struct JB4_DATAUNIT int16_t partialCopyOffset; int16_t nextCoderType; }; - +#ifndef API_5MS typedef enum { JBM_RENDERER_NONE, JBM_RENDERER_IVAS, } JBM_RENDERER_TYPE; - +#endif typedef struct JB4_DATAUNIT *JB4_DATAUNIT_HANDLE; diff --git a/lib_dec/jbm_pcmdsp_fifo.c b/lib_dec/jbm_pcmdsp_fifo.c index a3e893646442922769dcbccb395f3dd9d21f8c4f..ad0a860944623ba10822f7c8565d79c17c378408 100644 --- a/lib_dec/jbm_pcmdsp_fifo.c +++ b/lib_dec/jbm_pcmdsp_fifo.c @@ -38,6 +38,7 @@ #include #include "options.h" +#ifndef API_5MS #include "prot.h" #include "ivas_prot.h" #ifdef DEBUGGING @@ -267,3 +268,4 @@ uint16_t pcmdsp_fifo_nReadableSamplesPerChannel( { return h->size; } +#endif diff --git a/lib_dec/jbm_pcmdsp_fifo.h b/lib_dec/jbm_pcmdsp_fifo.h index b601cc2e0e0001aba14c562a3b36f3447e124e27..62ebc15d08b46bb812845743f3da13461a196576 100644 --- a/lib_dec/jbm_pcmdsp_fifo.h +++ b/lib_dec/jbm_pcmdsp_fifo.h @@ -41,7 +41,7 @@ #include #include "options.h" - +#ifndef API_5MS /** Ringbuffer (FIFO) with fixed capacity for audio samples. */ struct PCMDSP_FIFO @@ -81,5 +81,5 @@ int16_t pcmdsp_fifo_write_zero( PCMDSP_FIFO_HANDLE h, uint16_t nSamplesPerChanne int16_t pcmdsp_fifo_read( PCMDSP_FIFO_HANDLE h, uint16_t nSamplesPerChannel, uint8_t *samples ); uint16_t pcmdsp_fifo_nReadableSamplesPerChannel( const PCMDSP_FIFO_HANDLE h ); - +#endif #endif /* JBM_PCMDSP_FIFO_H */ diff --git a/lib_dec/lib_dec.c b/lib_dec/lib_dec.c index 5cc4bdd9b9a5d1b8f5fb9f9ffa075f1a3855fffc..b0d224b9c40d72a69b611f8596d752e7820f6895 100644 --- a/lib_dec/lib_dec.c +++ b/lib_dec/lib_dec.c @@ -31,6 +31,7 @@ *******************************************************************************************************/ #include "lib_dec.h" +#include "ivas_cnst.h" #include "ivas_prot.h" #include "ivas_prot_rend.h" #include "prot.h" @@ -53,11 +54,16 @@ struct IVAS_DEC_VOIP { uint16_t nSamplesFrame; /* Total number of samples in a frame (includes number of channels) */ JB4_HANDLE hJBM; +#ifndef API_5MS PCMDSP_APA_HANDLE hTimeScaler; +#endif uint16_t lastDecodedWasActive; - float *apaExecBuffer; /* Buffer for APA scaling */ +#ifndef API_5MS + float *apaExecBuffer; /* Buffer for APA scaling */ +#endif JB4_DATAUNIT_HANDLE hCurrentDataUnit; /* Points to the currently processed data unit */ uint16_t *bs_conversion_buf; /* Buffer for bitstream conversion from packed to serial */ +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING IVAS_DEC_VOIP_MODE voipMode; uint16_t speedFac; @@ -67,6 +73,7 @@ struct IVAS_DEC_VOIP PCMDSP_FIFO_HANDLE hFifoOut; uint8_t nTransportChannelsOld; uint16_t nSamplesAvailableNext; +#endif #ifdef SUPPORT_JBM_TRACEFILE IVAS_JBM_TRACE_DATA JbmTraceData; #endif @@ -84,8 +91,19 @@ struct IVAS_DEC bool hasDecodedFirstGoodFrame; /* False on init. Gets set to true after first good frame has been decoded -> all bitstream information is known from that point on */ bool isInitialized; - int16_t bitstreamformat; /* Bitstream format flag (G.192/MIME/VOIP_G192_RTP/VOIP_RTPDUMP) */ - bool Opt_VOIP; /* flag indicating VOIP mode with JBM */ + int16_t bitstreamformat; /* Bitstream format flag (G.192/MIME/VOIP_G192_RTP/VOIP_RTPDUMP) */ + bool Opt_VOIP; /* flag indicating VOIP mode with JBM */ +#ifdef API_5MS + int16_t tsm_scale; /* scale for TSM operation */ + int16_t tsm_max_scaling; + float *apaExecBuffer; /* Buffer for APA scaling */ + PCMDSP_APA_HANDLE hTimeScaler; + bool needNewFrame; + bool hasBeenFedFrame; + uint16_t nSamplesAvailableNext; + int16_t nSamplesRendered; + int16_t nTransportChannelsOld; +#endif int16_t amrwb_rfc4867_flag; /* MIME from rfc4867 is used */ int16_t sdp_hf_only; /* RTP payload format parameter: only Header-Full format without zero padding for size collision avoidance */ int16_t prev_ft_speech; /* RXDTX handler: previous frametype flag for G.192 format AMRWB SID_FIRST detection */ @@ -94,7 +112,7 @@ struct IVAS_DEC /*---------------------------------------------------------------------* - * Local functions + * Local function declarations *---------------------------------------------------------------------*/ static void IVAS_DEC_Close_VoIP( IVAS_DEC_VOIP *hVoIP ); @@ -105,14 +123,35 @@ static ivas_error evs_dec_main( Decoder_Struct *st_ivas, const int16_t nOutSampl static ivas_error input_format_API_to_internal( IVAS_DEC_INPUT_FORMAT input_format, int16_t *bitstream_format_internal, int16_t *sdp_hf_only, const bool is_voip_enabled ); static void init_decoder_config( DECODER_CONFIG_HANDLE hDecoderConfig ); static int16_t IVAS_DEC_VoIP_GetRenderGranularity( Decoder_Struct *st_ivas ); +#ifndef API_5MS static JBM_RENDERER_TYPE IVAS_DEC_VoIP_GetRendererConfig( IVAS_DEC_HANDLE hIvasDec ); +#endif static ivas_error IVAS_DEC_VoIP_reconfigure( IVAS_DEC_HANDLE hIvasDec, const uint16_t nTransportChannels, const uint16_t l_ts ); -static ivas_error IVAS_DEC_Setup( IVAS_DEC_HANDLE hIvasDec, uint16_t *nTcBufferGranularity, uint8_t *nTransportChannels, uint8_t *nOutChannels, uint16_t *nSamplesRendered, int16_t *data ); +static ivas_error IVAS_DEC_Setup( IVAS_DEC_HANDLE hIvasDec, uint16_t *nTcBufferGranularity, uint8_t *nTransportChannels, uint8_t *nOutChannels, uint16_t *nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const IVAS_DEC_PCM_TYPE pcmType, + void *data +#else + int16_t *data +#endif +); static ivas_error IVAS_DEC_GetTcSamples( IVAS_DEC_HANDLE hIvasDec, float *pcmBuf, int16_t *nOutSamples ); static ivas_error IVAS_DEC_RendererFeedTcSamples( IVAS_DEC_HANDLE hIvasDec, const int16_t nSamplesForRendering, int16_t *nSamplesResidual, float *pcmBuf ); -static ivas_error IVAS_DEC_GetRenderedSamples( IVAS_DEC_HANDLE hIvasDec, const uint16_t nSamplesForRendering, uint16_t *nSamplesRendered, uint16_t *nSamplesAvailableNext, int16_t *pcmBuf ); -static ivas_error IVAS_DEC_GetBufferedNumberOfSamples( IVAS_DEC_HANDLE hIvasDec, int16_t *nSamplesBuffered ); +static ivas_error IVAS_DEC_GetRenderedSamples( IVAS_DEC_HANDLE hIvasDec, const uint16_t nSamplesForRendering, uint16_t *nSamplesRendered, uint16_t *nSamplesAvailableNext, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_TYPE pcmType, + void *pcmBuf +#else + int16_t *pcmBuf +#endif +); +static ivas_error IVAS_DEC_GetBufferedNumberOfSamples( IVAS_DEC_HANDLE hIvasDec, int16_t *nSamplesBuffered ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +static PCM_RESOLUTION pcm_type_API_to_internal( const IVAS_DEC_PCM_TYPE pcmType ); +static void *pcm_buffer_offset( void *buffer, const IVAS_DEC_PCM_TYPE pcmType, int32_t offset ); +static ivas_error set_pcm_buffer_to_zero( void *buffer, const IVAS_DEC_PCM_TYPE pcmType, int16_t nZeroSamples ); +#endif /*---------------------------------------------------------------------* * IVAS_DEC_Open() * @@ -143,6 +182,17 @@ ivas_error IVAS_DEC_Open( } hIvasDec = *phIvasDec; hIvasDec->hVoIP = NULL; +#ifdef API_5MS + hIvasDec->apaExecBuffer = NULL; + hIvasDec->hTimeScaler = NULL; + hIvasDec->tsm_scale = 100; + hIvasDec->needNewFrame = false; + hIvasDec->nTransportChannelsOld = 0; + hIvasDec->nSamplesAvailableNext = 0; + hIvasDec->nSamplesRendered = 0; + hIvasDec->nSamplesFrame = 0; + hIvasDec->hasBeenFedFrame = false; +#endif hIvasDec->hasBeenFedFirstGoodFrame = false; hIvasDec->hasDecodedFirstGoodFrame = false; hIvasDec->isInitialized = false; @@ -177,6 +227,7 @@ ivas_error IVAS_DEC_Open( /* initialize Decoder Config. handle */ init_decoder_config( hIvasDec->st_ivas->hDecoderConfig ); + /* initialize pointers to handles to NULL */ ivas_initialize_handles_dec( st_ivas ); @@ -211,6 +262,7 @@ ivas_error IVAS_DEC_Open( st_ivas->sba_planar = 0; st_ivas->sba_analysis_order = 0; + return IVAS_ERR_OK; } @@ -238,8 +290,17 @@ static void init_decoder_config( hDecoderConfig->orientation_tracking = HEAD_ORIENT_TRK_NONE; hDecoderConfig->Opt_non_diegetic_pan = 0; hDecoderConfig->non_diegetic_pan_gain = 0; - +#ifdef API_5MS + hDecoderConfig->Opt_tsm = 0; +#ifdef SPLIT_REND_WITH_HEAD_ROT + hDecoderConfig->Opt_Limiter = 1; +#endif +#ifdef API_5MS_BASELINE + hDecoderConfig->Opt_5ms = 0; +#endif +#else hDecoderConfig->voip_active = 0; +#endif hDecoderConfig->Opt_delay_comp = 0; @@ -277,6 +338,14 @@ void IVAS_DEC_Close( ( *phIvasDec )->st_ivas = NULL; } +#ifdef API_5MS + apa_exit( &( *phIvasDec )->hTimeScaler ); + + if ( ( *phIvasDec )->apaExecBuffer != NULL ) + { + free( ( *phIvasDec )->apaExecBuffer ); + } +#endif free( *phIvasDec ); *phIvasDec = NULL; phIvasDec = NULL; @@ -285,86 +354,6 @@ void IVAS_DEC_Close( } -/*---------------------------------------------------------------------* - * mapOutputFormat() - * - * - *---------------------------------------------------------------------*/ - -static AUDIO_CONFIG mapOutputFormat( - const IVAS_DEC_AUDIO_CONFIG outputFormat ) -{ - AUDIO_CONFIG output_config; - - if ( outputFormat == IVAS_DEC_OUTPUT_EXT ) /* external renderer */ - { - output_config = AUDIO_CONFIG_EXTERNAL; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_MONO ) - { - output_config = AUDIO_CONFIG_MONO; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_STEREO ) - { - output_config = AUDIO_CONFIG_STEREO; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_5_1 ) - { - output_config = AUDIO_CONFIG_5_1; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_7_1 ) - { - output_config = AUDIO_CONFIG_7_1; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_5_1_2 ) - { - output_config = AUDIO_CONFIG_5_1_2; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_5_1_4 ) - { - output_config = AUDIO_CONFIG_5_1_4; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_7_1_4 ) - { - output_config = AUDIO_CONFIG_7_1_4; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_LS_CUSTOM ) - { - output_config = AUDIO_CONFIG_LS_CUSTOM; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_FOA ) - { - output_config = AUDIO_CONFIG_FOA; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_HOA2 ) - { - output_config = AUDIO_CONFIG_HOA2; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_HOA3 ) - { - output_config = AUDIO_CONFIG_HOA3; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_BINAURAL ) - { - output_config = AUDIO_CONFIG_BINAURAL; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR ) - { - output_config = AUDIO_CONFIG_BINAURAL_ROOM_IR; - } - else if ( outputFormat == IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB ) - { - output_config = AUDIO_CONFIG_BINAURAL_ROOM_REVERB; - } - else - { - output_config = AUDIO_CONFIG_INVALID; - } - - return output_config; -} - - /*---------------------------------------------------------------------* * mapIvasFormat( ) * @@ -386,8 +375,12 @@ static IVAS_DEC_BS_FORMAT mapIvasFormat( return IVAS_DEC_BS_MC; case SBA_FORMAT: return IVAS_DEC_BS_SBA; + case SBA_ISM_FORMAT: + return IVAS_DEC_BS_SBA_ISM; case MASA_FORMAT: return IVAS_DEC_BS_MASA; + case MASA_ISM_FORMAT: + return IVAS_DEC_BS_MASA_ISM; default: break; } @@ -404,9 +397,13 @@ static IVAS_DEC_BS_FORMAT mapIvasFormat( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_Configure( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - const uint32_t sampleRate, /* i : output sampling frequency */ - const IVAS_DEC_AUDIO_CONFIG outputFormat, /* i : output format */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const uint32_t sampleRate, /* i : output sampling frequency */ + const AUDIO_CONFIG outputConfig, /* i : output configuration */ +#ifdef API_5MS + const int16_t tsmEnabled, /* i : enable TSM */ + const int16_t enable5ms, +#endif const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const int16_t hrtfReaderEnabled, /* i : enable HRTF binary file input */ const int16_t enableHeadRotation, /* i : enable head rotation for binaural output */ @@ -433,8 +430,8 @@ ivas_error IVAS_DEC_Configure( return IVAS_ERR_WRONG_PARAMS; } - if ( hIvasDec->mode == IVAS_DEC_MODE_EVS && !( ( outputFormat == IVAS_DEC_OUTPUT_MONO && Opt_non_diegetic_pan == 0 ) || - ( outputFormat == IVAS_DEC_OUTPUT_STEREO && Opt_non_diegetic_pan == 1 ) ) ) + if ( hIvasDec->mode == IVAS_DEC_MODE_EVS && !( ( outputConfig == AUDIO_CONFIG_MONO && Opt_non_diegetic_pan == 0 ) || + ( outputConfig == AUDIO_CONFIG_STEREO && Opt_non_diegetic_pan == 1 ) ) ) { return IVAS_ERR_WRONG_MODE; } @@ -443,7 +440,7 @@ ivas_error IVAS_DEC_Configure( hDecoderConfig = st_ivas->hDecoderConfig; - hDecoderConfig->output_config = mapOutputFormat( outputFormat ); + hDecoderConfig->output_config = outputConfig; if ( hDecoderConfig->output_config == AUDIO_CONFIG_INVALID ) { return IVAS_ERR_WRONG_PARAMS; @@ -457,7 +454,7 @@ ivas_error IVAS_DEC_Configure( hDecoderConfig->nchan_out = 1; } - if ( outputFormat != IVAS_DEC_OUTPUT_EXT && outputFormat != IVAS_DEC_OUTPUT_LS_CUSTOM ) + if ( outputConfig != AUDIO_CONFIG_EXTERNAL && outputConfig != AUDIO_CONFIG_LS_CUSTOM ) { hDecoderConfig->nchan_out = audioCfg2channels( hDecoderConfig->output_config ); } @@ -483,9 +480,79 @@ ivas_error IVAS_DEC_Configure( hIvasDec->st_ivas->ivas_format = MONO_FORMAT; } +#ifdef API_5MS + hDecoderConfig->Opt_tsm = tsmEnabled; +#ifdef API_5MS_BASELINE + hDecoderConfig->Opt_5ms = enable5ms; +#endif + hIvasDec->nSamplesFrame = (uint16_t) ( hDecoderConfig->output_Fs / FRAMES_PER_SEC ); + hIvasDec->nSamplesAvailableNext = 0; + hIvasDec->nSamplesRendered = 0; + hIvasDec->tsm_scale = 100; + hIvasDec->tsm_max_scaling = 100; +#endif + + return error; +} + +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) +/*---------------------------------------------------------------------* + * IVAS_DEC_EnableSplitRendering( ) + * + * Intitialize Split rendering + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_EnableSplitRendering( + IVAS_DEC_HANDLE hIvasDec /* i/o: IVAS decoder handle */ +) +{ + DECODER_CONFIG_HANDLE hDecoderConfig; + ivas_error error; + + error = IVAS_ERR_OK; + + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + hDecoderConfig = hIvasDec->st_ivas->hDecoderConfig; + + hDecoderConfig->Opt_Headrotation = 1; +#ifdef API_5MS_BASELINE + hDecoderConfig->Opt_5ms = false; +#endif + + + hDecoderConfig->Opt_Limiter = 0; + return error; } +#endif + +#ifdef API_5MS +/*---------------------------------------------------------------------* + * IVAS_DEC_Get5msFlag( ) + * + * Get the 5ms flag + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_Get5msFlag( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + int16_t *enable5ms /* o : 5ms flag */ +) +{ + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || enable5ms == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + *enable5ms = (int16_t) hIvasDec->st_ivas->hDecoderConfig->Opt_5ms; + + return IVAS_ERR_OK; +} +#endif /*---------------------------------------------------------------------* * IVAS_DEC_EnableVoIP( ) @@ -497,9 +564,11 @@ ivas_error IVAS_DEC_Configure( ivas_error IVAS_DEC_EnableVoIP( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING const IVAS_DEC_VOIP_MODE voipMode, /* i : VoIP or variable speed */ const uint16_t speedFac, /* i : speed factor for variable speed */ +#endif #endif const int16_t jbmSafetyMargin, /* i : allowed delay reserve for JBM, in milliseconds */ const IVAS_DEC_INPUT_FORMAT inputFormat /* i : format of the input bitstream */ @@ -519,7 +588,14 @@ ivas_error IVAS_DEC_EnableVoIP( hDecoderConfig = hIvasDec->st_ivas->hDecoderConfig; hIvasDec->Opt_VOIP = 1; +#ifdef API_5MS + hDecoderConfig->Opt_tsm = 1; +#ifdef API_5MS_BASELINE + hDecoderConfig->Opt_5ms = 1; +#endif +#else hDecoderConfig->voip_active = 1; +#endif if ( hDecoderConfig->output_config != AUDIO_CONFIG_EXTERNAL ) { @@ -545,12 +621,15 @@ ivas_error IVAS_DEC_EnableVoIP( hIvasDec->hVoIP->lastDecodedWasActive = 0; hIvasDec->hVoIP->hCurrentDataUnit = NULL; +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING hIvasDec->hVoIP->voipMode = voipMode; hIvasDec->hVoIP->speedFac = speedFac; hIvasDec->hVoIP->needNewFrame = false; +#endif #endif hIvasDec->hVoIP->nSamplesFrame = (uint16_t) ( hDecoderConfig->output_Fs / FRAMES_PER_SEC ); +#ifndef API_5MS hIvasDec->hVoIP->nSamplesAvailableNext = 0; hIvasDec->hVoIP->rendererType = JBM_RENDERER_NONE; hIvasDec->hVoIP->hFifoOut = NULL; @@ -558,6 +637,7 @@ ivas_error IVAS_DEC_EnableVoIP( /* postpone init of the buffers until we know the real number of TCs*/ hIvasDec->hVoIP->apaExecBuffer = NULL; hIvasDec->hVoIP->nTransportChannelsOld = 0; +#endif #define WMC_TOOL_SKIP /* Bitstream conversion is not counted towards complexity and memory usage */ @@ -570,10 +650,12 @@ ivas_error IVAS_DEC_EnableVoIP( } /* initialize JBM */ +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING hIvasDec->hVoIP->hJBM = NULL; if ( hIvasDec->hVoIP->voipMode == IVAS_DEC_VOIP_MODE_VOIP ) { +#endif #endif if ( ( error = JB4_Create( &hIvasDec->hVoIP->hJBM ) != IVAS_ERR_OK ) != IVAS_ERR_OK ) { @@ -583,10 +665,13 @@ ivas_error IVAS_DEC_EnableVoIP( { return IVAS_ERR_FAILED_ALLOC; } +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING } #endif +#endif +#ifndef API_5MS /* postpone init of time scaler and output FIFO until we know the real number of TCs */ hIvasDec->hVoIP->hTimeScaler = NULL; #ifdef VARIABLE_SPEED_DECODING @@ -595,7 +680,7 @@ ivas_error IVAS_DEC_EnableVoIP( hIvasDec->hVoIP->needNewFrame = true; } #endif - +#endif return error; } @@ -639,9 +724,13 @@ ivas_error IVAS_DEC_FeedFrame_Serial( { hIvasDec->st_ivas->hDecoderConfig->ivas_total_brate = ACELP_8k00; } +#ifdef API_5MS + hIvasDec->isInitialized = true; +#endif } - +#ifndef API_5MS hIvasDec->isInitialized = true; +#endif } if ( !bfi ) /* TODO(mcjbm): Is this ok for bfi == 2 (partial frame)? Is there enough info to fully configure decoder? */ @@ -683,11 +772,18 @@ ivas_error IVAS_DEC_FeedFrame_Serial( st->use_partial_copy = 1; } +#ifdef API_5MS + hIvasDec->needNewFrame = false; + hIvasDec->hasBeenFedFrame = true; + hIvasDec->nSamplesRendered = 0; + hIvasDec->nSamplesAvailableNext = hIvasDec->nSamplesFrame; +#else #ifdef VARIABLE_SPEED_DECODING if ( hIvasDec->hVoIP != NULL && hIvasDec->hVoIP->voipMode == IVAS_DEC_VOIP_MODE_VARIABLE_SPEED ) { hIvasDec->hVoIP->needNewFrame = false; } +#endif #endif return error; @@ -700,10 +796,24 @@ ivas_error IVAS_DEC_FeedFrame_Serial( * Main function to decode to PCM data *---------------------------------------------------------------------*/ +#if !defined API_5MS || defined( API_5MS_BASELINE ) +#ifdef API_5MS_BASELINE +static ivas_error _GetSamples( +#else ivas_error IVAS_DEC_GetSamples( +#endif IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ - int16_t *nOutSamples /* o : number of samples per channel written to output buffer */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const PCM_RESOLUTION pcm_resolution, + void *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif + int16_t *nOutSamples /* o : number of samples per channel written to output buffer */ +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && !defined( API_5MS ) + , + uint8_t *splitRendBitsBuf /* o : output split rendering bits */ +#endif ) { Decoder_Struct *st_ivas; @@ -722,7 +832,15 @@ ivas_error IVAS_DEC_GetSamples( if ( hIvasDec->mode == IVAS_DEC_MODE_EVS ) { - if ( ( error = evs_dec_main( st_ivas, *nOutSamples, NULL, pcmBuf ) ) != IVAS_ERR_OK ) +#if defined DEBUGGING && defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + assert( pcm_resolution == PCM_INT16 ); +#endif + + if ( ( error = evs_dec_main( st_ivas, *nOutSamples, NULL, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + (int16_t *) +#endif + pcmBuf ) ) != IVAS_ERR_OK ) { return error; } @@ -730,7 +848,17 @@ ivas_error IVAS_DEC_GetSamples( else if ( hIvasDec->mode == IVAS_DEC_MODE_IVAS ) { /* run the main IVAS decoding routine */ - if ( ( error = ivas_dec( st_ivas, pcmBuf ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dec( st_ivas, + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_resolution, +#endif + pcmBuf +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && !defined( API_5MS ) + , + splitRendBitsBuf +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -745,12 +873,410 @@ ivas_error IVAS_DEC_GetSamples( return error; } +#endif +#ifdef API_5MS +ivas_error IVAS_DEC_GetSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const int16_t nSamplesAsked, /* i: number of samples wanted by the caller */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ + void *pcmBuf, /* o : output synthesis signal */ +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif + int16_t *nOutSamples, /* o : number of samples per channel written to output buffer */ + bool *needNewFrame /* indication that the decoder needs a new frame */ +#if defined SPLIT_REND_WITH_HEAD_ROT && !defined API_5MS + , + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits /* o : bitstream output for split rendering mode*/ +#endif +) +{ + ivas_error error; + int16_t nOutSamplesElse, result, nSamplesToRender; + uint16_t nSamplesRendered, nSamplesRendered_loop, l_ts, nTimeScalerOutSamples; + uint8_t nTransportChannels, nOutChannels; + error = IVAS_ERR_OK; + nSamplesRendered = 0; + nOutChannels = 0; + +#ifdef API_5MS_BASELINE + nSamplesRendered_loop = 0; + l_ts = 0; + nTransportChannels = 0; +#endif + + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( !hIvasDec->hasBeenFedFrame && hIvasDec->nSamplesAvailableNext == 0 ) + { + /* no frame was fed, do nothing but ask for a frame */ + *needNewFrame = true; + *nOutSamples = 0; + hIvasDec->needNewFrame = true; + return error; + } + + /* check if we are still at the beginning with bad frames, put out zeroes, keep track of subframes */ + if ( !hIvasDec->isInitialized && hIvasDec->st_ivas->bfi ) + { + hIvasDec->hasBeenFedFrame = false; + set_s( pcmBuf, 0, hIvasDec->st_ivas->hDecoderConfig->nchan_out * nSamplesAsked ); + hIvasDec->nSamplesRendered += nSamplesAsked; + *nOutSamples = nSamplesAsked; + hIvasDec->nSamplesAvailableNext -= nSamplesAsked; + if ( hIvasDec->nSamplesAvailableNext == 0 ) + { + hIvasDec->needNewFrame = true; + *needNewFrame = true; + } + } +#ifdef API_5MS_BASELINE + + /* only for 1st step 5ms API, split rendering still needs to go through the old decoding function */ + else + { + /* check if we need to run the setup function */ + if ( !hIvasDec->isInitialized || hIvasDec->hasBeenFedFrame ) + { + /* setup */ + if ( ( error = IVAS_DEC_Setup( hIvasDec, &l_ts, &nTransportChannels, &nOutChannels, &nSamplesRendered_loop, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcmType, + pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ) +#else + pcmBuf + nSamplesRendered * nOutChannels +#endif + + ) ) != IVAS_ERR_OK ) + { + return error; + } +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + /* :TODO: change nSamplesAsked also if we are in 5ms 0dof split rendering... */ +#endif + } + if ( !hIvasDec->st_ivas->hDecoderConfig->Opt_5ms ) + { + if ( ( error = _GetSamples( hIvasDec, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_type_API_to_internal( pcmType ), +#endif + pcmBuf, nOutSamples ) ) != IVAS_ERR_OK ) + { + return error; + } +#ifdef DEBUGGING + assert( *nOutSamples == nSamplesAsked ); +#endif + hIvasDec->nSamplesAvailableNext = 0; + hIvasDec->nSamplesRendered = *nOutSamples; + nSamplesRendered = *nOutSamples; + hIvasDec->needNewFrame = true; + hIvasDec->hasBeenFedFrame = false; + *needNewFrame = true; + } +#endif + else + { + /* check if we need to run the setup function, tc decoding and feeding the renderer */ + if ( !hIvasDec->isInitialized || hIvasDec->hasBeenFedFrame ) + { + int16_t nResidualSamples, nSamplesTcsScaled; +#ifndef API_5MS_BASELINE + /* setup */ + if ( ( error = IVAS_DEC_Setup( hIvasDec, &l_ts, &nTransportChannels, &nOutChannels, &nSamplesRendered_loop, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcmType, + pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ) +#else + pcmBuf + nSamplesRendered * nOutChannels +#endif + + ) ) != IVAS_ERR_OK ) + { + return error; + } +#endif + nSamplesRendered += nSamplesRendered_loop; + if ( nTransportChannels != hIvasDec->nTransportChannelsOld ) + { + IVAS_DEC_VoIP_reconfigure( hIvasDec, nTransportChannels, l_ts ); + } + /* decode TCs only */ + if ( ( error = IVAS_DEC_GetTcSamples( hIvasDec, hIvasDec->apaExecBuffer, &nOutSamplesElse ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm ) + { + if ( apa_set_scale( hIvasDec->hTimeScaler, hIvasDec->tsm_scale ) != 0 ) + { + return IVAS_ERR_UNKNOWN; + } + result = apa_exec( hIvasDec->hTimeScaler, hIvasDec->apaExecBuffer, hIvasDec->nSamplesFrame * nTransportChannels, (uint16_t) hIvasDec->tsm_max_scaling, hIvasDec->apaExecBuffer, &nTimeScalerOutSamples ); + if ( result != 0 ) + { + return IVAS_ERR_UNKNOWN; + } + assert( nTimeScalerOutSamples <= APA_BUF ); + } + else + { + nTimeScalerOutSamples = hIvasDec->nSamplesFrame * nTransportChannels; + } + nSamplesTcsScaled = nTimeScalerOutSamples / nTransportChannels; + + /* render IVAS frames */ + + + if ( ( error = IVAS_DEC_RendererFeedTcSamples( hIvasDec, nSamplesTcsScaled, &nResidualSamples, hIvasDec->apaExecBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm ) + { + /* feed residual samples to TSM for the next call */ + if ( apa_set_renderer_residual_samples( hIvasDec->hTimeScaler, (uint16_t) nResidualSamples ) != 0 ) + { + return IVAS_ERR_UNKNOWN; + } + } + hIvasDec->hasBeenFedFrame = false; + } + /* render IVAS frames directly to the output buffer */ + nSamplesToRender = nSamplesAsked - nSamplesRendered; + if ( ( error = IVAS_DEC_GetRenderedSamples( hIvasDec, nSamplesToRender, &nSamplesRendered_loop, &hIvasDec->nSamplesAvailableNext, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcmType, + pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ) +#else + pcmBuf + nSamplesRendered * nOutChannels +#endif + + ) ) != IVAS_ERR_OK ) + { + return error; + } + nSamplesRendered += nSamplesRendered_loop; + nSamplesToRender -= nSamplesRendered_loop; + if ( hIvasDec->nSamplesAvailableNext == 0 ) + { + *needNewFrame = true; + hIvasDec->needNewFrame = true; + } + else + { + *needNewFrame = false; + } + } +#ifdef API_5MS_BASELINE + } +#endif + + *nOutSamples = nSamplesRendered; + + return error; +} +#endif + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +ivas_error IVAS_DEC_GetSplitBinauralBitstream( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + void *pcmBuf_out, /* o : output synthesis signal for BINAURAL_SPLIT_PCM */ + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits, /* o : bitstream output for split rendering mode*/ + int16_t *nOutSamples, /* o : number of samples per channel written to output buffer */ + bool *needNewFrame /* indication that the decoder needs a new frame */ +) +{ + Decoder_Struct *st_ivas; + AUDIO_CONFIG output_config; + int32_t output_Fs; + float *writePtr; + float *readPtr, *readEnd; + float *pOutput[BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES]; + float output[BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES][L_FRAME48k]; + float pcmBuf[BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES * L_FRAME48k]; + int16_t numSamplesPerChannelCacheSize; + int16_t numSamplesPerChannelToDecode; + int16_t numSamplesPerChannelToSplitEncode; + int16_t i, j; + ivas_error error; + IVAS_DEC_SPLIT_REND_WRAPPER *hSplitBinRend; + int16_t max_band; + int16_t pcm_out; + int16_t td_input; + int16_t numPoses; + + error = IVAS_ERR_OK; + st_ivas = hIvasDec->st_ivas; + output_config = st_ivas->hDecoderConfig->output_config; + output_Fs = st_ivas->hDecoderConfig->output_Fs; + numSamplesPerChannelToDecode = (int16_t) ( output_Fs / FRAMES_PER_SEC ); + + *needNewFrame = FALSE; + hSplitBinRend = &st_ivas->hSplitBinRend; + ivas_set_split_rend_setup( hSplitBinRend, &st_ivas->hRenderConfig->split_rend_config, st_ivas->hCombinedOrientationData, hSplitRendBits ); + numPoses = hSplitBinRend->splitrend.multiBinPoseData.num_poses; + + if ( st_ivas->hDecoderConfig->Opt_5ms && + hIvasDec->st_ivas->hRenderConfig->split_rend_config.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && + ( hIvasDec->st_ivas->hRenderConfig->split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE || + hIvasDec->st_ivas->hRenderConfig->split_rend_config.dof == 0 ) ) + { + numSamplesPerChannelToSplitEncode = (int16_t) ( output_Fs / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ); + numSamplesPerChannelCacheSize = numSamplesPerChannelToDecode - numSamplesPerChannelToSplitEncode; + + if ( hSplitBinRend->tdDataOut == NULL ) + { + /* Allocate enough space to save all decoded samples that will not be split encoded directly after decoding */ + hSplitBinRend->tdDataOut = malloc( numSamplesPerChannelCacheSize * BINAURAL_CHANNELS * numPoses * sizeof( float ) ); + if ( hSplitBinRend->tdDataOut == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + } + } + else + { + numSamplesPerChannelToSplitEncode = (int16_t) ( output_Fs / FRAMES_PER_SEC ); + numSamplesPerChannelCacheSize = 0; + } + + if ( output_config != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && output_config != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + if ( numSamplesPerChannelToDecode == numSamplesPerChannelToSplitEncode || hSplitBinRend->numTdSamplesPerChannelCached == 0 ) + { + /* Decode and render */ + error = IVAS_DEC_GetSamples( + hIvasDec, + numSamplesPerChannelToDecode, + IVAS_DEC_PCM_FLOAT, + pcmBuf, + nOutSamples, + needNewFrame ); + if ( error != IVAS_ERR_OK ) + { + return error; + } +#ifdef DEBUGGING + assert( numSamplesPerChannelToDecode == *nOutSamples ); +#endif + + /* copy to cache if cache is in use */ + if ( hSplitBinRend->tdDataOut != NULL ) + { + writePtr = hSplitBinRend->tdDataOut; + readPtr = pcmBuf + numSamplesPerChannelToSplitEncode * BINAURAL_CHANNELS * numPoses; + readEnd = pcmBuf + *nOutSamples * BINAURAL_CHANNELS * numPoses; + + while ( readPtr != readEnd ) + { + *writePtr++ = *readPtr++; + } + hSplitBinRend->numTdSamplesPerChannelCached = *nOutSamples - numSamplesPerChannelToSplitEncode; + } + } + else + { + /* copy from cache */ + assert( hSplitBinRend->tdDataOut != NULL ); + + readPtr = hSplitBinRend->tdDataOut + ( numSamplesPerChannelCacheSize - hSplitBinRend->numTdSamplesPerChannelCached ) * BINAURAL_CHANNELS * numPoses; + readEnd = readPtr + numSamplesPerChannelToSplitEncode * BINAURAL_CHANNELS * numPoses; + writePtr = pcmBuf; + + while ( readPtr != readEnd ) + { + *writePtr++ = *readPtr++; + } + hSplitBinRend->numTdSamplesPerChannelCached -= numSamplesPerChannelToSplitEncode; + } + + /* change buffer layout */ + for ( i = 0; i < numSamplesPerChannelToSplitEncode; ++i ) + { + for ( j = 0; j < BINAURAL_CHANNELS * numPoses; ++j ) + { + output[j][i] = pcmBuf[i * BINAURAL_CHANNELS * numPoses + j]; + } + } + for ( i = 0; i < BINAURAL_CHANNELS * MAX_HEAD_ROT_POSES; ++i ) + { + pOutput[i] = output[i]; + } + max_band = (int16_t) ( ( BINAURAL_MAXBANDS * output_Fs ) / 48000 ); + pcm_out = ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0; + td_input = st_ivas->renderer_type != RENDERER_BINAURAL_FASTCONV && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC && st_ivas->renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && st_ivas->renderer_type != RENDERER_STEREO_PARAMETRIC; + + error = ivas_renderMultiBinToSplitBinaural( &hSplitBinRend->splitrend, + st_ivas->hHeadTrackData->Quaternions[0], + st_ivas->hRenderConfig->split_rend_config.splitRendBitRate, + st_ivas->hRenderConfig->split_rend_config.codec, +#ifdef API_5MS + st_ivas->hRenderConfig->split_rend_config.codec_frame_size_ms, +#endif + hSplitBinRend->hSplitRendBits, + hSplitBinRend->hMultiBinCldfbData->Cldfb_RealBuffer_Binaural, + hSplitBinRend->hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural, + max_band, + pOutput, + + 1, + td_input, + pcm_out ); + if ( error != IVAS_ERR_OK ) + { + return error; + } + + /* convert to int16 with limiting for BINAURAL_SPLIT_PCM */ + if ( pcm_out ) + { + if ( st_ivas->hDecoderConfig->Opt_5ms ) + { +#ifndef DISABLE_LIMITER + ivas_limiter_dec( st_ivas->hLimiter, pOutput, + st_ivas->hDecoderConfig->nchan_out, + numSamplesPerChannelToSplitEncode, st_ivas->BER_detect ); +#endif + } + else + { + ivas_limiter_dec( st_ivas->hLimiter, pOutput, + st_ivas->hDecoderConfig->nchan_out, + numSamplesPerChannelToSplitEncode, st_ivas->BER_detect ); + } + + +#ifdef DEBUGGING + st_ivas->noClipping += +#endif + ivas_syn_output( pOutput, numSamplesPerChannelToSplitEncode, + st_ivas->hDecoderConfig->nchan_out, + (int16_t *) pcmBuf_out ); + } + + free( st_ivas->hSplitBinRend.hMultiBinCldfbData ); + + return error; +} +#endif /*---------------------------------------------------------------------* * IVAS_DEC_Setup( ) * - * Main function to decode to PCM data of the transport channels + * *---------------------------------------------------------------------*/ static ivas_error IVAS_DEC_Setup( @@ -759,7 +1285,12 @@ static ivas_error IVAS_DEC_Setup( uint8_t *nTransportChannels, /* o : number of decoded transport PCM channels */ uint8_t *nOutChannels, /* o : number of decoded out channels (PCM or CLDFB) */ uint16_t *nSamplesRendered, /* o : number of samples flushed from the last frame */ - int16_t *data /* o : flushed samples */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ + void *data /* o : output synthesis signal */ +#else + int16_t *data /* o : output synthesis signal */ +#endif ) { ivas_error error; @@ -797,7 +1328,11 @@ static ivas_error IVAS_DEC_Setup( if ( st_ivas->bfi == 0 ) { - if ( ( error = ivas_dec_setup( st_ivas, nSamplesRendered, data ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dec_setup( st_ivas, nSamplesRendered, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_type_API_to_internal( pcmType ), +#endif + data ) ) != IVAS_ERR_OK ) { return error; } @@ -818,7 +1353,7 @@ static ivas_error IVAS_DEC_Setup( * Main function to decode to PCM data of the transport channels *---------------------------------------------------------------------*/ -ivas_error IVAS_DEC_GetTcSamples( +static ivas_error IVAS_DEC_GetTcSamples( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ float *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ int16_t *nOutSamples /* o : number of samples per channel written to output buffer */ @@ -870,7 +1405,7 @@ ivas_error IVAS_DEC_GetTcSamples( * Main function to decode to PCM data of the transport channels *---------------------------------------------------------------------*/ -ivas_error IVAS_DEC_RendererFeedTcSamples( +static ivas_error IVAS_DEC_RendererFeedTcSamples( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesForRendering, /* i : number of TC samples wanted from the renderer */ int16_t *nSamplesResidual, /* o : number of samples not fitting into the renderer grid and buffer for the next call */ @@ -902,15 +1437,20 @@ ivas_error IVAS_DEC_RendererFeedTcSamples( /*---------------------------------------------------------------------* * IVAS_DEC_GetRenderedSamples( ) * - * Main function to decode to PCM data of the transport channels + * Main function to render the transport channels to PCM output datat *---------------------------------------------------------------------*/ -ivas_error IVAS_DEC_GetRenderedSamples( +static ivas_error IVAS_DEC_GetRenderedSamples( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const uint16_t nSamplesForRendering, /* i : number of TC samples wanted from the renderer */ uint16_t *nSamplesRendered, /* o : number of samples rendered */ uint16_t *nSamplesAvailableNext, /* o : number of samples still available in the renerer pipeline */ - int16_t *pcmBuf /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_TYPE pcmType, + void *pcmBuf +#else + int16_t *pcmBuf +#endif ) { Decoder_Struct *st_ivas; @@ -926,7 +1466,11 @@ ivas_error IVAS_DEC_GetRenderedSamples( st_ivas = hIvasDec->st_ivas; /* run the main IVAS decoding routine */ - if ( ( error = ivas_jbm_dec_render( st_ivas, nSamplesForRendering, nSamplesRendered, nSamplesAvailableNext, pcmBuf ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_jbm_dec_render( st_ivas, nSamplesForRendering, nSamplesRendered, nSamplesAvailableNext, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcm_type_API_to_internal( pcmType ), +#endif + pcmBuf ) ) != IVAS_ERR_OK ) { return error; } @@ -935,8 +1479,15 @@ ivas_error IVAS_DEC_GetRenderedSamples( return error; } -ivas_error IVAS_DEC_GetBufferedNumberOfSamples( - IVAS_DEC_HANDLE hIvasDec, /* i/o : IVAS decoder handle */ + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetBufferedNumberOfSamples( ) + * + * Returns the number of objects available in the decoded bitstream + *---------------------------------------------------------------------*/ + +static ivas_error IVAS_DEC_GetBufferedNumberOfSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ int16_t *nSamplesBuffered /* o : number of samples still buffered */ ) { @@ -973,10 +1524,9 @@ ivas_error IVAS_DEC_GetNumObjects( { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - - if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT ) + if ( hIvasDec->st_ivas->ivas_format == ISM_FORMAT || hIvasDec->st_ivas->ivas_format == SBA_ISM_FORMAT || hIvasDec->st_ivas->ivas_format == MASA_ISM_FORMAT ) { - *numObjects = hIvasDec->st_ivas->hDecoderConfig->nchan_out; + *numObjects = hIvasDec->st_ivas->nchan_ism; } else { @@ -1058,13 +1608,12 @@ ivas_error IVAS_DEC_GetObjectMetadata( } st_ivas = hIvasDec->st_ivas; - - if ( st_ivas->ivas_format != ISM_FORMAT ) + if ( st_ivas->ivas_format != ISM_FORMAT && st_ivas->ivas_format != MASA_ISM_FORMAT && st_ivas->ivas_format != SBA_ISM_FORMAT ) { return IVAS_ERR_WRONG_MODE; } - if ( objectIdx >= st_ivas->hDecoderConfig->nchan_out ) + if ( objectIdx >= st_ivas->nchan_ism ) { return IVAS_ERR_INVALID_INDEX; } @@ -1105,14 +1654,9 @@ ivas_error IVAS_DEC_GetObjectMetadata( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetMasaMetadata( -#ifdef FIX_470_MASA_JBM_EXT IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ MASA_DECODER_EXT_OUT_META_HANDLE *hMasaExtOutMeta, /* o : pointer to handle, which will be set to point to metadata from the most recently decoded frame */ uint8_t getFromJbmBuffer /* i : get metadata from a JBM buffer */ -#else - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - MASA_DECODER_EXT_OUT_META_HANDLE *hMasaExtOutMeta /* o : pointer to handle, which will be set to point to metadata from the most recently decoded frame */ -#endif ) { if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) @@ -1120,23 +1664,22 @@ ivas_error IVAS_DEC_GetMasaMetadata( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - if ( hIvasDec->st_ivas->ivas_format != MASA_FORMAT ) + if ( hIvasDec->st_ivas->ivas_format != MASA_FORMAT && hIvasDec->st_ivas->ivas_format != MASA_ISM_FORMAT ) { return IVAS_ERR_WRONG_MODE; } -#ifdef FIX_470_MASA_JBM_EXT if ( getFromJbmBuffer ) { ivas_jbm_masa_sf_to_sf_map( hIvasDec->st_ivas ); } -#endif *hMasaExtOutMeta = hIvasDec->st_ivas->hMasa->data.extOutMeta; return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_FeedHeadTrackData( ) * @@ -1144,15 +1687,31 @@ ivas_error IVAS_DEC_GetMasaMetadata( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_FeedHeadTrackData( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef API_5MS + IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */ + IVAS_VECTOR3 Pos, /* i : listener position */ + const int16_t subframe_idx /*subframe index*/ +#else IVAS_QUATERNION *orientation, /* i : head-tracking data, listener orientation */ IVAS_VECTOR3 *Pos /* i : listener position */ +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const IVAS_SPLIT_REND_ROT_AXIS rot_axis +#endif ) { HEAD_TRACK_DATA_HANDLE hHeadTrackData; +#ifndef API_5MS int16_t i; +#endif +#ifdef API_5MS + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) +#else if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || orientation == NULL ) +#endif { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } @@ -1165,6 +1724,18 @@ ivas_error IVAS_DEC_FeedHeadTrackData( } /* Move head-tracking data to the decoder handle */ +#ifdef API_5MS + /* check for Euler angle signaling */ + if ( orientation.w == -3.0f ) + { + Euler2Quat( deg2rad( orientation.x ), deg2rad( orientation.y ), deg2rad( orientation.z ), &orientation ); + } + + ivas_orient_trk_Process( hHeadTrackData->OrientationTracker, orientation, FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES, &hHeadTrackData->Quaternions[subframe_idx] ); + hHeadTrackData->Pos[subframe_idx].x = Pos.x; + hHeadTrackData->Pos[subframe_idx].y = Pos.y; + hHeadTrackData->Pos[subframe_idx].z = Pos.z; +#else for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { /* check for Euler angle signaling */ @@ -1174,16 +1745,29 @@ ivas_error IVAS_DEC_FeedHeadTrackData( } ivas_orient_trk_Process( hHeadTrackData->OrientationTracker, orientation[i], FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES, &hHeadTrackData->Quaternions[i] ); + hHeadTrackData->Pos[i].x = Pos[i].x; hHeadTrackData->Pos[i].y = Pos[i].y; hHeadTrackData->Pos[i].z = Pos[i].z; } +#endif +#ifndef API_5MS +#ifdef SPLIT_REND_WITH_HEAD_ROT + hHeadTrackData->num_quaternions = 0; +#else hIvasDec->st_ivas->hHeadTrackData->num_quaternions = 0; +#endif +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT + hHeadTrackData->sr_pose_pred_axis = rot_axis; +#endif return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_FeedRefRotData( ) * @@ -1212,6 +1796,7 @@ ivas_error IVAS_DEC_FeedRefRotData( return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_FeedRefVectorData( ) * @@ -1234,9 +1819,11 @@ ivas_error IVAS_DEC_FeedRefVectorData( } pOtr = hIvasDec->st_ivas->hHeadTrackData->OrientationTracker; + return ivas_orient_trk_SetReferenceVector( pOtr, listenerPos, refPos ); } + /*---------------------------------------------------------------------* * IVAS_DEC_FeedExternalOrientationData( ) * @@ -1244,18 +1831,33 @@ ivas_error IVAS_DEC_FeedRefVectorData( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_FeedExternalOrientationData( - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifdef API_5MS + IVAS_QUATERNION orientation, /* i : external orientation data */ + int8_t enableHeadRotation, /* i : flag to enable head rotation for this frame */ + int8_t enableExternalOrientation, /* i : flag to enable external orientation for this frame */ + int8_t enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ + int16_t numFramesToTargetOrientation, /* i : number of frames until target orientation is reached */ + const int16_t subframe_idx /*i : subframe index*/ +#else IVAS_QUATERNION *orientation, /* i : external orientation data */ int8_t *enableHeadRotation, /* i : flag to enable head rotation for this frame */ int8_t *enableExternalOrientation, /* i : flag to enable external orientation for this frame */ int8_t *enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ int16_t *numFramesToTargetOrientation /* i : number of frames until target orientation is reached */ +#endif ) { EXTERNAL_ORIENTATION_HANDLE hExternalOrientationData; +#ifndef API_5MS int16_t i; +#endif +#ifdef API_5MS + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) +#else if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || orientation == NULL ) +#endif { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } @@ -1268,6 +1870,14 @@ ivas_error IVAS_DEC_FeedExternalOrientationData( } /* Move external orientation data to the decoder handle (invert orientations) */ +#ifdef API_5MS + QuaternionInverse( orientation, &hExternalOrientationData->Quaternions[subframe_idx] ); + + hExternalOrientationData->enableHeadRotation[subframe_idx] = enableHeadRotation; + hExternalOrientationData->enableExternalOrientation[subframe_idx] = enableExternalOrientation; + hExternalOrientationData->enableRotationInterpolation[subframe_idx] = enableRotationInterpolation; + hExternalOrientationData->numFramesToTargetOrientation[subframe_idx] = numFramesToTargetOrientation; +#else for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { QuaternionInverse( orientation[i], &hExternalOrientationData->Quaternions[i] ); @@ -1277,10 +1887,12 @@ ivas_error IVAS_DEC_FeedExternalOrientationData( hExternalOrientationData->enableRotationInterpolation[i] = enableRotationInterpolation[i]; hExternalOrientationData->numFramesToTargetOrientation[i] = numFramesToTargetOrientation[i]; } +#endif return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_FeedCustomLsData( ) * @@ -1365,7 +1977,7 @@ ivas_error IVAS_DEC_GetHrtfHandle( 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_HRTF_CREND_HANDLE *hSetOfHRTF /* o : Set of HRTF handle */ ) { if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hSetOfHRTF == NULL ) @@ -1378,6 +1990,7 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_GetHrtfFastConvHandle( ) * @@ -1385,8 +1998,8 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( *---------------------------------------------------------------------*/ ivas_error IVAS_DEC_GetHrtfFastConvHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/oL IVAS decoder handle */ - IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ ) { if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hHrtfFastConv == NULL ) @@ -1399,6 +2012,7 @@ ivas_error IVAS_DEC_GetHrtfFastConvHandle( return IVAS_ERR_OK; } + /*---------------------------------------------------------------------* * IVAS_DEC_GetHrtfParamBinHandle( ) * @@ -1420,6 +2034,54 @@ ivas_error IVAS_DEC_GetHrtfParamBinHandle( return IVAS_ERR_OK; } +#ifdef API_5MS +static ivas_error copyRendererConfigStruct( RENDER_CONFIG_HANDLE hRCin, IVAS_RENDER_CONFIG_HANDLE hRCout ) +{ + if ( hRCin == NULL || hRCout == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + +#ifdef DEBUGGING + switch ( hRCin->renderer_type_override ) + { + case RENDER_TYPE_OVERRIDE_CREND: + hRCout->renderer_type_override = IVAS_RENDER_TYPE_OVERRIDE_CREND; + break; + case RENDER_TYPE_OVERRIDE_FASTCONV: + hRCout->renderer_type_override = IVAS_RENDER_TYPE_OVERRIDE_FASTCONV; + break; + default: + hRCout->renderer_type_override = IVAS_RENDER_TYPE_OVERRIDE_NONE; + break; + } +#endif + hRCout->room_acoustics.override = hRCin->roomAcoustics.override; + hRCout->room_acoustics.nBands = hRCin->roomAcoustics.nBands; + hRCout->room_acoustics.acousticPreDelay = hRCin->roomAcoustics.acousticPreDelay; + hRCout->room_acoustics.inputPreDelay = hRCin->roomAcoustics.inputPreDelay; + + mvr2r( hRCin->roomAcoustics.pFc_input, hRCout->room_acoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); + mvr2r( hRCin->roomAcoustics.pAcoustic_rt60, hRCout->room_acoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); + mvr2r( hRCin->roomAcoustics.pAcoustic_dsr, hRCout->room_acoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); + mvr2r( hRCin->directivity, hRCout->directivity, 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; + hRCout->split_rend_config.codec_delay_ms = 0; + hRCout->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ + hRCout->split_rend_config.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + hRCout->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection; +#endif + hRCout->room_acoustics.use_er = hRCin->roomAcoustics.use_er; + hRCout->room_acoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity; + + return IVAS_ERR_OK; +} +#endif + /*---------------------------------------------------------------------* * IVAS_DEC_GetRenderConfig( ) * @@ -1431,13 +2093,18 @@ ivas_error IVAS_DEC_GetRenderConfig( const IVAS_RENDER_CONFIG_HANDLE hRCout /* o : Render configuration handle */ ) { +#ifndef API_5MS RENDER_CONFIG_HANDLE hRCin; +#endif if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hRenderConfig == NULL || hRCout == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef API_5MS + return copyRendererConfigStruct( hIvasDec->st_ivas->hRenderConfig, hRCout ); +#else hRCin = hIvasDec->st_ivas->hRenderConfig; #ifdef DEBUGGING switch ( hRCin->renderer_type_override ) @@ -1461,10 +2128,43 @@ ivas_error IVAS_DEC_GetRenderConfig( mvr2r( hRCin->roomAcoustics.pFc_input, hRCout->room_acoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); mvr2r( hRCin->roomAcoustics.pAcoustic_rt60, hRCout->room_acoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); mvr2r( hRCin->roomAcoustics.pAcoustic_dsr, hRCout->room_acoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); - mvr2r( hRCin->directivity, hRCout->directivity, 3 ); + mvr2r( hRCin->directivity, hRCout->directivity, 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; + hRCout->split_rend_config.codec_delay_ms = 0; + hRCout->split_rend_config.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + hRCout->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection; +#endif + + hRCout->room_acoustics.use_er = hRCin->roomAcoustics.use_er; + hRCout->room_acoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity; return IVAS_ERR_OK; +#endif +} + +#ifdef API_5MS +/*! r: error code*/ +ivas_error IVAS_DEC_GetDefaultRenderConfig( + IVAS_RENDER_CONFIG_HANDLE hRCout /* o : Render config handle */ +) +{ + RENDER_CONFIG_DATA RCin; + RENDER_CONFIG_HANDLE hRCin = &RCin; + ivas_error error; + + if ( ( error = ivas_render_config_init_from_rom( &hRCin ) ) != IVAS_ERR_OK ) + { + return error; + } + + return copyRendererConfigStruct( hRCin, hRCout ); } +#endif /*---------------------------------------------------------------------* @@ -1479,6 +2179,9 @@ ivas_error IVAS_DEC_FeedRenderConfig( ) { RENDER_CONFIG_HANDLE hRenderConfig; +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_error error; +#endif if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL || hIvasDec->st_ivas->hRenderConfig == NULL ) { @@ -1501,10 +2204,38 @@ ivas_error IVAS_DEC_FeedRenderConfig( hRenderConfig->roomAcoustics.nBands = renderConfig.room_acoustics.nBands; hRenderConfig->roomAcoustics.acousticPreDelay = renderConfig.room_acoustics.acousticPreDelay; hRenderConfig->roomAcoustics.inputPreDelay = renderConfig.room_acoustics.inputPreDelay; + + hRenderConfig->roomAcoustics.use_er = 0; + if ( renderConfig.room_acoustics.use_er == 1 ) + { + hRenderConfig->roomAcoustics.use_er = renderConfig.room_acoustics.use_er; + hRenderConfig->roomAcoustics.lowComplexity = renderConfig.room_acoustics.lowComplexity; + hRenderConfig->roomAcoustics.dimensions = renderConfig.room_acoustics.dimensions; + hRenderConfig->roomAcoustics.ListenerOrigin = renderConfig.room_acoustics.ListenerOrigin; + + mvr2r( renderConfig.room_acoustics.AbsCoeff, hRenderConfig->roomAcoustics.AbsCoeff, ER_ABS_COEFF ); + } + mvr2r( renderConfig.room_acoustics.pFc_input, hRenderConfig->roomAcoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); mvr2r( renderConfig.room_acoustics.pAcoustic_rt60, hRenderConfig->roomAcoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); mvr2r( renderConfig.room_acoustics.pAcoustic_dsr, hRenderConfig->roomAcoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); - mvr2r( renderConfig.directivity, hRenderConfig->directivity, 3 ); + + mvr2r( renderConfig.directivity, hRenderConfig->directivity, 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 */ + if ( hRenderConfig->split_rend_config.dof == 0 ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + } + + if ( ( error = ivas_split_rend_validate_config( &hRenderConfig->split_rend_config, ( hIvasDec->st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0 ) ) != IVAS_ERR_OK ) + { + return error; + } +#endif return IVAS_ERR_OK; } @@ -1539,7 +2270,11 @@ ivas_error IVAS_DEC_GetDelay( st_ivas = hIvasDec->st_ivas; hDecoderConfig = st_ivas->hDecoderConfig; +#ifdef SPLIT_REND_WITH_HEAD_ROT + nSamples[1] = NS2SA( hDecoderConfig->output_Fs, get_delay( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0], hDecoderConfig->output_config ) ); +#else nSamples[1] = NS2SA( hDecoderConfig->output_Fs, get_delay( DEC, hDecoderConfig->output_Fs, st_ivas->ivas_format, st_ivas->cldfbAnaDec[0] ) ); +#endif nSamples[2] = (int16_t) roundf( (float) st_ivas->binaural_latency_ns * hDecoderConfig->output_Fs / 1000000000.f ); nSamples[0] = nSamples[1] + nSamples[2]; @@ -1740,8 +2475,7 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( return IVAS_ERR_OK; } -#ifdef VARIABLE_SPEED_DECODING -#ifdef DEBUGGING +#if defined( VARIABLE_SPEED_DECODING ) || defined( API_5MS ) /*---------------------------------------------------------------------* * IVAS_DEC_VoIP_SetScale( ) * @@ -1750,20 +2484,224 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( ivas_error IVAS_DEC_VoIP_SetScale( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - const int16_t scale /* i : TSM scale to set */ +#ifdef API_5MS + const int16_t maxScaling, +#endif + const int16_t scale /* i : TSM scale to set */ ) { ivas_error error; error = IVAS_ERR_OK; +#ifdef API_5MS + if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm == false ) + { + return IVAS_ERR_TSM_NOT_ENABLED; + } + else + { + hIvasDec->tsm_scale = scale; + hIvasDec->tsm_max_scaling = maxScaling; + } +#else hIvasDec->hVoIP->speedFac = scale; +#endif + + return error; +} +#endif + + +#ifdef API_5MS +/*---------------------------------------------------------------------* + * IVAS_DEC_VoIP_GetSamples( ) + * + * Main function to decode one frame in VoIP + *---------------------------------------------------------------------*/ + +ivas_error IVAS_DEC_VoIP_GetSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + uint16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_TYPE pcmType, + void *pcmBuf, +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif + const uint32_t systemTimestamp_ms /* i : current system timestamp */ +#ifdef SUPPORT_JBM_TRACEFILE + , + JbmTraceFileWriterFn jbmWriterFn, + void *jbmWriter +#endif + +) +{ + Decoder_Struct *st_ivas; + DECODER_CONFIG_HANDLE hDecoderConfig; + IVAS_DEC_VOIP *hVoIP; + uint32_t extBufferedTime_ms, scale, maxScaling; + JB4_DATAUNIT_HANDLE dataUnit; + uint16_t extBufferedSamples; + int16_t timeScalingDone; + int16_t result; + ivas_error error; + int16_t nSamplesRendered; + uint8_t nOutChannels; + + error = IVAS_ERR_OK; + + st_ivas = hIvasDec->st_ivas; + hDecoderConfig = st_ivas->hDecoderConfig; + hVoIP = hIvasDec->hVoIP; + timeScalingDone = 0; + + nOutChannels = (uint8_t) st_ivas->hDecoderConfig->nchan_out; + nSamplesRendered = 0; + + if ( nSamplesPerChannel == 0 ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + /* make sure that the FIFO after decoder/scaler contains at least one sound card frame (i.e. 20ms) */ + while ( nSamplesRendered < nSamplesPerChannel ) + { + if ( hIvasDec->nSamplesAvailableNext == 0 ) + { + int16_t nSamplesBuffered; + nSamplesBuffered = 0; + if ( hIvasDec->hasBeenFedFirstGoodFrame ) + { + IVAS_DEC_GetBufferedNumberOfSamples( hIvasDec, &nSamplesBuffered ); + } + extBufferedSamples = nSamplesRendered + nSamplesBuffered; + + extBufferedTime_ms = extBufferedSamples * 1000 / hDecoderConfig->output_Fs; + + dataUnit = NULL; + + + /* pop one access unit from the jitter buffer */ + result = JB4_PopDataUnit( hVoIP->hJBM, systemTimestamp_ms, extBufferedTime_ms, &dataUnit, &scale, &maxScaling ); + if ( result != 0 ) + { + return IVAS_ERR_UNKNOWN; + } + + + maxScaling = maxScaling * hDecoderConfig->output_Fs / 1000; + /* avoid time scaling multiple times in one sound card slot */ + if ( scale != 100U ) + { + if ( timeScalingDone ) + { + scale = 100; + } + else + { + timeScalingDone = 1; + } + } + + /* limit scale to range supported by time scaler */ + if ( scale < APA_MIN_SCALE ) + { + scale = APA_MIN_SCALE; + } + else if ( scale > APA_MAX_SCALE ) + { + scale = APA_MAX_SCALE; + } + + IVAS_DEC_VoIP_SetScale( hIvasDec, (int16_t) maxScaling, (int16_t) scale ); + + /* copy bitstream into decoder state */ + if ( dataUnit ) + { + hIvasDec->hVoIP->hCurrentDataUnit = dataUnit; + + bsCompactToSerial( dataUnit->data, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize ); + IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, dataUnit->dataSize, 0 ); + } + else if ( hIvasDec->hasDecodedFirstGoodFrame ) + { + /* Decoder has been initialized with first good frame - do PLC */ + IVAS_DEC_FeedFrame_Serial( hIvasDec, hIvasDec->hVoIP->bs_conversion_buf, 0, 1 ); + } +#ifdef SUPPORT_JBM_TRACEFILE + /* jbmWriterFn and jbmWriter may be NULL if tracefile writing was not requested on CLI */ + if ( jbmWriterFn != NULL && jbmWriter != NULL ) + { + /* write JBM trace data entry */ + store_JbmData( hVoIP, dataUnit, systemTimestamp_ms, extBufferedSamples, hDecoderConfig->output_Fs ); + if ( ( jbmWriterFn( &hVoIP->JbmTraceData, jbmWriter ) ) != IVAS_ERR_OK ) + { + fprintf( stderr, "\nError writing JBM Trace data to file\n" ); + return IVAS_ERR_UNKNOWN; + } + } +#endif + if ( dataUnit ) + { + if ( dataUnit->partial_frame != 0 ) + { + hVoIP->lastDecodedWasActive = 1; + } + else + { + hVoIP->lastDecodedWasActive = !dataUnit->silenceIndicator; + } + /* data unit memory is no longer used */ + JB4_FreeDataUnit( hVoIP->hJBM, dataUnit ); + } + if ( !hIvasDec->hasBeenFedFirstGoodFrame ) + { + hIvasDec->nSamplesAvailableNext = hIvasDec->nSamplesFrame; + hIvasDec->nSamplesRendered = 0; + } + } + /* decode */ + if ( !hIvasDec->hasBeenFedFirstGoodFrame ) + { + /* codec mode to use not known yet - simply output silence */ + /* directly set output zero */ + int16_t nSamplesToZero = min( nSamplesPerChannel, hIvasDec->nSamplesAvailableNext ); +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + set_pcm_buffer_to_zero( pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ), pcmType, nSamplesToZero * nOutChannels ); +#else + set_s( pcmBuf + nSamplesRendered * nOutChannels, 0, nSamplesToZero * nOutChannels ); +#endif + nSamplesRendered += nSamplesToZero; + hIvasDec->nSamplesRendered += nSamplesToZero; + hIvasDec->nSamplesAvailableNext -= nSamplesToZero; + } + else + { + int16_t nSamplesToRender, nSamplesRendered_loop; + bool tmp; + nSamplesToRender = nSamplesPerChannel - nSamplesRendered; + + /* render IVAS frames directly to the output buffer */ + if ( ( error = IVAS_DEC_GetSamples( hIvasDec, nSamplesToRender, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcmType, + pcm_buffer_offset( pcmBuf, pcmType, nSamplesRendered * nOutChannels ), +#else + pcmBuf + nSamplesRendered * nOutChannels, +#endif + &nSamplesRendered_loop, &tmp ) ) != IVAS_ERR_OK ) + { + return error; + } + nSamplesRendered += nSamplesRendered_loop; + } + } return error; } -#endif -#endif - +#else /*---------------------------------------------------------------------* * IVAS_DEC_VoIP_GetSamples( ) * @@ -2149,6 +3087,7 @@ ivas_error IVAS_DEC_VoIP_GetSamples( return error; } +#endif /*---------------------------------------------------------------------* * IVAS_DEC_VoIP_Flush( ) @@ -2156,25 +3095,41 @@ ivas_error IVAS_DEC_VoIP_GetSamples( * Function to flush remaining audio in VoIP *---------------------------------------------------------------------*/ -ivas_error IVAS_DEC_VoIP_Flush( +ivas_error IVAS_DEC_Flush( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ - int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ - uint16_t *nSamplesAvailableNext, /* o : number of samples still available */ - int16_t *nSamplesFlushed /* o : number of samples flushed */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const IVAS_DEC_PCM_TYPE pcmType, + void *pcmBuf, +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif +#ifndef API_5MS + uint16_t *nSamplesAvailableNext, /* o : number of samples still available */ +#endif + int16_t *nSamplesFlushed /* o : number of samples flushed */ ) { ivas_error error; +#ifndef API_5MS IVAS_DEC_VOIP *hVoIP; int16_t rendererPcmBuf[( MAX_OUTPUT_CHANNELS * L_FRAME_MAX * APA_MAX_SCALE ) / 100]; +#endif uint16_t nSamplesToRender; uint16_t nSamplesFlushedLocal; error = IVAS_ERR_OK; +#ifndef API_5MS hVoIP = hIvasDec->hVoIP; +#endif +#ifdef API_5MS + *nSamplesFlushed = min( nSamplesPerChannel, hIvasDec->nSamplesAvailableNext ); +#else *nSamplesFlushed = min( nSamplesPerChannel, hVoIP->nSamplesAvailableNext ); +#endif +#ifndef API_5MS if ( hVoIP->rendererType == JBM_RENDERER_NONE ) { /* fetch a user-specified number of samples from FIFO */ @@ -2187,6 +3142,7 @@ ivas_error IVAS_DEC_VoIP_Flush( } else { + nSamplesToRender = (uint16_t) *nSamplesFlushed; /* render IVAS frames */ if ( ( error = IVAS_DEC_GetRenderedSamples( hIvasDec, nSamplesToRender, &nSamplesFlushedLocal, &hVoIP->nSamplesAvailableNext, rendererPcmBuf ) ) != IVAS_ERR_OK ) @@ -2207,7 +3163,19 @@ ivas_error IVAS_DEC_VoIP_Flush( *nSamplesAvailableNext = hVoIP->nSamplesAvailableNext; *nSamplesFlushed = (int16_t) nSamplesFlushedLocal; } +#else + nSamplesToRender = (uint16_t) *nSamplesFlushed; + /* render IVAS frames */ + if ( ( error = IVAS_DEC_GetRenderedSamples( hIvasDec, nSamplesToRender, &nSamplesFlushedLocal, &hIvasDec->nSamplesAvailableNext, +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + pcmType, +#endif + pcmBuf ) ) != IVAS_ERR_OK ) + { + return error; + } +#endif return error; } @@ -2222,7 +3190,11 @@ bool IVAS_DEC_VoIP_IsEmpty( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesAsked ) { +#ifdef API_5MS + return ( ( JB4_bufferedDataUnits( hIvasDec->hVoIP->hJBM ) == 0 ) && ( hIvasDec->nSamplesAvailableNext < nSamplesAsked ) ); +#else return ( ( JB4_bufferedDataUnits( hIvasDec->hVoIP->hJBM ) == 0 ) && ( hIvasDec->hVoIP->nSamplesAvailableNext < nSamplesAsked ) ); +#endif } @@ -2261,6 +3233,7 @@ static void IVAS_DEC_Close_VoIP( { JB4_Destroy( &hVoIP->hJBM ); +#ifndef API_5MS apa_exit( &hVoIP->hTimeScaler ); pcmdsp_fifo_destroy( &hVoIP->hFifoOut ); @@ -2269,7 +3242,7 @@ static void IVAS_DEC_Close_VoIP( { free( hVoIP->apaExecBuffer ); } - +#endif if ( hVoIP->bs_conversion_buf != NULL ) { #define WMC_TOOL_SKIP @@ -2374,7 +3347,6 @@ static ivas_error get_channel_config( AUDIO_CONFIG config, char *str ) { - if ( config == AUDIO_CONFIG_MONO ) { strcpy( str, "Mono" ); @@ -2431,6 +3403,16 @@ static ivas_error get_channel_config( { strcpy( str, "Binaural: room with reverb" ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + else if ( config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + strcpy( str, "BINAURAL_SPLIT_CODED" ); + } + else if ( config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + strcpy( str, "Binaural_Split_PCM" ); + } +#endif else if ( config == AUDIO_CONFIG_EXTERNAL ) { strcpy( str, "External renderer" ); @@ -2533,11 +3515,15 @@ static ivas_error printConfigInfo_dec( { fprintf( stdout, "Input configuration: Scene Based Audio, Ambisonic order %i%s, %d transport channel(s)\n", st_ivas->sba_order, st_ivas->sba_planar ? " (Planar)" : "", st_ivas->nchan_transport ); } + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + fprintf( stdout, "Input configuration: Combined Scene Based Audio, Ambisonic order %i, with %d Objects \n", st_ivas->sba_order, st_ivas->nchan_ism ); + } else if ( st_ivas->ivas_format == MASA_FORMAT ) { fprintf( stdout, "Input configuration: MASA - %d channel(s)\n", st_ivas->nchan_transport ); } - else /* MC_FORMAT */ + else if ( st_ivas->ivas_format == MC_FORMAT ) { if ( ( error = get_channel_config( st_ivas->transport_config, &config_str[0] ) ) != IVAS_ERR_OK ) { @@ -2546,6 +3532,10 @@ static ivas_error printConfigInfo_dec( fprintf( stdout, "Input configuration: %s\n", config_str ); } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + fprintf( stdout, "Input configuration: combined ISM and MASA (%i ISM stream(s)) \n", st_ivas->nchan_ism ); + } } get_channel_config( st_ivas->hDecoderConfig->output_config, &config_str[0] ); @@ -2598,15 +3588,32 @@ static ivas_error printConfigInfo_dec( } } +#ifdef API_5MS + /*-----------------------------------------------------------------* + * Print TSM mode info + *-----------------------------------------------------------------*/ + if ( st_ivas->hDecoderConfig->Opt_tsm ) + { + fprintf( stdout, "TSM mode: ON\n" ); + } +#ifdef API_5MS_BASELINE + /*-----------------------------------------------------------------* + * Print 5ms API mode info + *-----------------------------------------------------------------*/ + if ( st_ivas->hDecoderConfig->Opt_5ms ) + { + fprintf( stdout, "API 5ms mode: ON\n" ); + } +#endif +#else /*-----------------------------------------------------------------* * Print VoIP mode info *-----------------------------------------------------------------*/ - if ( st_ivas->hDecoderConfig->voip_active ) { fprintf( stdout, "VoIP mode: ON\n" ); } - +#endif return IVAS_ERR_OK; } @@ -2780,7 +3787,20 @@ static ivas_error evs_dec_main( v_multc( output[0], mixer_left, output[0], nOutSamples ); } - if ( floatBuf != NULL ) + +#ifdef API_5MS + if ( !st_ivas->hDecoderConfig->Opt_tsm +#ifdef API_5MS_BASELINE + && st_ivas->hDecoderConfig->Opt_5ms +#endif + + ) + { + ivas_jbm_dec_copy_tc_no_tsm( st_ivas, p_output, nOutSamples ); + } + else +#endif + if ( floatBuf != NULL ) { /* BE workaround */ int16_t pcm_buf_local[L_FRAME48k * MAX_OUTPUT_CHANNELS_IN_DIEGETIC_PAN]; @@ -2957,6 +3977,13 @@ ivas_error IVAS_DEC_GetSbaDebugParams( #endif /* DEBUGGING */ + +/*---------------------------------------------------------------------* + * input_format_API_to_internal() + * + * + *---------------------------------------------------------------------*/ + static ivas_error input_format_API_to_internal( IVAS_DEC_INPUT_FORMAT input_format, int16_t *bitstream_format_internal, @@ -3001,11 +4028,11 @@ static ivas_error input_format_API_to_internal( static int16_t IVAS_DEC_VoIP_GetRenderGranularity( Decoder_Struct *st_ivas ) { - return st_ivas->hTcBuffer->n_samples_granularity; } +#ifndef API_5MS /*---------------------------------------------------------------------* * IVAS_DEC_VoIP_GetRendererConfig() * @@ -3029,72 +4056,113 @@ static JBM_RENDERER_TYPE IVAS_DEC_VoIP_GetRendererConfig( return rendererType; } - +#endif /*---------------------------------------------------------------------* * IVAS_DEC_VoIP_reconfigure() * * *---------------------------------------------------------------------*/ - -ivas_error IVAS_DEC_VoIP_reconfigure( +static ivas_error IVAS_DEC_VoIP_reconfigure( IVAS_DEC_HANDLE hIvasDec, const uint16_t nTransportChannels, const uint16_t l_ts ) { +#ifndef API_5MS IVAS_DEC_VOIP *hVoIP; +#endif +#ifdef API_5MS + int16_t apa_buffer_size; +#endif + ivas_error error; +#ifndef API_5MS hVoIP = hIvasDec->hVoIP; +#endif +#ifdef API_5MS + apa_buffer_size = hIvasDec->nSamplesFrame; +#endif +#ifdef API_5MS + if ( hIvasDec->apaExecBuffer == NULL ) +#else if ( hIvasDec->hVoIP->hTimeScaler == NULL ) +#endif { - +#ifndef API_5MS uint16_t wss, css; float startQuality; +#endif DECODER_CONFIG_HANDLE hDecoderConfig; +#ifdef API_5MS + if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm ) + { + uint16_t wss, css; + float startQuality; + + startQuality = 1.0f; + apa_buffer_size = APA_BUF_PER_CHANNEL; +#else #ifdef VARIABLE_SPEED_DECODING startQuality = hVoIP->voipMode == IVAS_DEC_VOIP_MODE_VARIABLE_SPEED ? -2.0f : 1.0f; #else startQuality = 1.0f; +#endif #endif - /* get current renderer type*/ - hVoIP->rendererType = IVAS_DEC_VoIP_GetRendererConfig( hIvasDec ); - hDecoderConfig = hIvasDec->st_ivas->hDecoderConfig; - if ( hDecoderConfig->output_Fs == 8000 ) - { - wss = 1; - css = 1; - } - else if ( hDecoderConfig->output_Fs == 16000 ) - { - wss = 2; - css = 1; - } - else if ( hDecoderConfig->output_Fs == 32000 ) - { - wss = 4; - css = 2; - } - else if ( hDecoderConfig->output_Fs == 48000 ) - { - wss = 6; - css = 3; - } - else - { - return IVAS_ERR_INIT_ERROR; - } + /* get current renderer type*/ +#ifndef API_5MS + hVoIP->rendererType = IVAS_DEC_VoIP_GetRendererConfig( hIvasDec ); +#endif + hDecoderConfig = hIvasDec->st_ivas->hDecoderConfig; - if ( ( hIvasDec->hVoIP->apaExecBuffer = malloc( sizeof( float ) * APA_BUF_PER_CHANNEL * nTransportChannels ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); - } - set_zero( hIvasDec->hVoIP->apaExecBuffer, APA_BUF_PER_CHANNEL * nTransportChannels ); + if ( hDecoderConfig->output_Fs == 8000 ) + { + wss = 1; + css = 1; + } + else if ( hDecoderConfig->output_Fs == 16000 ) + { + wss = 2; + css = 1; + } + else if ( hDecoderConfig->output_Fs == 32000 ) + { + wss = 4; + css = 2; + } + else if ( hDecoderConfig->output_Fs == 48000 ) + { + wss = 6; + css = 3; + } + else + { + return IVAS_ERR_INIT_ERROR; + } +#ifndef API_5MS + if ( ( hIvasDec->hVoIP->apaExecBuffer = malloc( sizeof( float ) * APA_BUF_PER_CHANNEL * nTransportChannels ) ) == NULL ) + + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); + } + set_zero( hIvasDec->hVoIP->apaExecBuffer, APA_BUF_PER_CHANNEL * nTransportChannels ); +#endif +#ifdef API_5MS + if ( apa_init( &hIvasDec->hTimeScaler, + nTransportChannels ) != IVAS_ERR_OK || + apa_set_rate( hIvasDec->hTimeScaler, hDecoderConfig->output_Fs ) != 0 || + apa_set_complexity_options( hIvasDec->hTimeScaler, wss, css ) != 0 || + apa_set_quality( hIvasDec->hTimeScaler, startQuality, 4, 4 ) != 0 || + apa_set_renderer_granularity( hIvasDec->hTimeScaler, l_ts ) != 0 ) + { + return IVAS_ERR_INIT_ERROR; + } +#else if ( apa_init( &hIvasDec->hVoIP->hTimeScaler, nTransportChannels ) != IVAS_ERR_OK || apa_set_rate( hIvasDec->hVoIP->hTimeScaler, hDecoderConfig->output_Fs ) != 0 || @@ -3104,53 +4172,254 @@ ivas_error IVAS_DEC_VoIP_reconfigure( { return IVAS_ERR_INIT_ERROR; } +#endif - if ( hVoIP->hFifoOut == NULL && hVoIP->rendererType == JBM_RENDERER_NONE ) - { - /* we still need the FIFO out buffer */ - if ( pcmdsp_fifo_create( &hIvasDec->hVoIP->hFifoOut ) != 0 || - pcmdsp_fifo_init( hIvasDec->hVoIP->hFifoOut, (uint16_t) ( hDecoderConfig->output_Fs * 4 / FRAMES_PER_SEC ) /* 4 frames */, hDecoderConfig->nchan_out, sizeof( int16_t ) ) != 0 ) +#ifndef API_5MS + if ( hVoIP->hFifoOut == NULL && hVoIP->rendererType == JBM_RENDERER_NONE ) { - return IVAS_ERR_INIT_ERROR; + /* we still need the FIFO out buffer */ + if ( pcmdsp_fifo_create( &hIvasDec->hVoIP->hFifoOut ) != 0 || + pcmdsp_fifo_init( hIvasDec->hVoIP->hFifoOut, (uint16_t) ( hDecoderConfig->output_Fs * 4 / FRAMES_PER_SEC ) /* 4 frames */, hDecoderConfig->nchan_out, sizeof( int16_t ) ) != 0 ) + { + return IVAS_ERR_INIT_ERROR; + } } - } #ifdef VARIABLE_SPEED_DECODING - else if ( hIvasDec->hVoIP->voipMode == IVAS_DEC_VOIP_MODE_VARIABLE_SPEED ) - { - if ( pcmdsp_fifo_create( &hIvasDec->hVoIP->hFifoOut ) != 0 || - pcmdsp_fifo_init( hIvasDec->hVoIP->hFifoOut, (uint16_t) ( hDecoderConfig->output_Fs * 4 / FRAMES_PER_SEC ) /* 4 frames */, hDecoderConfig->nchan_out, sizeof( int16_t ) ) != 0 ) + else if ( hIvasDec->hVoIP->voipMode == IVAS_DEC_VOIP_MODE_VARIABLE_SPEED ) { - return IVAS_ERR_INIT_ERROR; + if ( pcmdsp_fifo_create( &hIvasDec->hVoIP->hFifoOut ) != 0 || + pcmdsp_fifo_init( hIvasDec->hVoIP->hFifoOut, (uint16_t) ( hDecoderConfig->output_Fs * 4 / FRAMES_PER_SEC ) /* 4 frames */, hDecoderConfig->nchan_out, sizeof( int16_t ) ) != 0 ) + { + return IVAS_ERR_INIT_ERROR; + } } - } +#endif #endif - if ( hIvasDec->mode == IVAS_DEC_MODE_EVS ) - { + if ( hIvasDec->mode == IVAS_DEC_MODE_EVS ) + { +#ifdef API_5MS + if ( apa_set_evs_compat_mode( hIvasDec->hTimeScaler, true ) != 0 ) +#else if ( apa_set_evs_compat_mode( hIvasDec->hVoIP->hTimeScaler, true ) != 0 ) +#endif + { + return IVAS_ERR_INIT_ERROR; + } + } +#ifdef API_5MS + if ( ( hIvasDec->apaExecBuffer = malloc( sizeof( float ) * apa_buffer_size * nTransportChannels ) ) == NULL ) + { - return IVAS_ERR_INIT_ERROR; + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); } + + set_zero( hIvasDec->apaExecBuffer, apa_buffer_size * nTransportChannels ); + } +#endif +#ifndef API_5MS + if ( ( hVoIP->apaExecBuffer = malloc( sizeof( float ) * APA_BUF_PER_CHANNEL * nTransportChannels ) ) == NULL ) + + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); } + + set_zero( hVoIP->apaExecBuffer, APA_BUF_PER_CHANNEL * nTransportChannels ); +#endif } else { - if ( apa_reconfigure( hVoIP->hTimeScaler, nTransportChannels, l_ts ) != 0 ) +#ifdef API_5MS + if ( hIvasDec->st_ivas->hDecoderConfig->Opt_tsm ) { - return IVAS_ERR_INIT_ERROR; + if ( apa_reconfigure( hIvasDec->hTimeScaler, nTransportChannels, l_ts ) != 0 ) +#else + if ( apa_reconfigure( hVoIP->hTimeScaler, nTransportChannels, l_ts ) != 0 ) +#endif + { + return IVAS_ERR_INIT_ERROR; + } +#ifdef API_5MS + apa_buffer_size = APA_BUF_PER_CHANNEL; + free( hIvasDec->apaExecBuffer ); + if ( ( hIvasDec->apaExecBuffer = malloc( sizeof( float ) * apa_buffer_size * nTransportChannels ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); + } + set_zero( hIvasDec->apaExecBuffer, apa_buffer_size * nTransportChannels ); } - +#endif /* realloc apa_exe_buffer */ +#ifndef API_5MS free( hIvasDec->hVoIP->apaExecBuffer ); if ( ( hIvasDec->hVoIP->apaExecBuffer = malloc( sizeof( float ) * APA_BUF_PER_CHANNEL * nTransportChannels ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Could not allocate VoIP handle" ); } set_zero( hIvasDec->hVoIP->apaExecBuffer, APA_BUF_PER_CHANNEL * nTransportChannels ); +#endif } + +#ifdef API_5MS + hIvasDec->nTransportChannelsOld = nTransportChannels; +#else hIvasDec->hVoIP->nTransportChannelsOld = (uint8_t) nTransportChannels; +#endif + + error = IVAS_ERR_OK; + + return error; +} + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*---------------------------------------------------------------------* + * IVAS_DEC_GetCldfbSamples() + * + * + *---------------------------------------------------------------------*/ + +/*! r: decoder error code */ +ivas_error IVAS_DEC_GetSplitRendBits( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_SPLIT_REND_BITS_HANDLE splitRendBits /* o : split rendering Bits structue */ +) +{ + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL /*|| hIvasDec->st_ivas->hSplitBinRend == NULL */ ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + splitRendBits->bits_buf = hIvasDec->st_ivas->hSplitBinRend.hSplitRendBits->bits_buf; + splitRendBits->bits_read = hIvasDec->st_ivas->hSplitBinRend.hSplitRendBits->bits_read; + splitRendBits->bits_written = hIvasDec->st_ivas->hSplitBinRend.hSplitRendBits->bits_written; + splitRendBits->buf_len = hIvasDec->st_ivas->hSplitBinRend.hSplitRendBits->buf_len; + splitRendBits->codec = hIvasDec->st_ivas->hSplitBinRend.hSplitRendBits->codec; + splitRendBits->pose_correction = hIvasDec->st_ivas->hSplitBinRend.hSplitRendBits->pose_correction; + + return IVAS_ERR_OK; +} + + +/*---------------------------------------------------------------------* + * IVAS_DEC_GetCldfbSamples() + * + * + *---------------------------------------------------------------------*/ + +// ToDo: currently unused +ivas_error IVAS_DEC_GetCldfbSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + float *out_real, /* o : buffer for decoded PCM real output in CLDFB domain */ + float *out_imag, /* o : buffer for decoded PCM imag output in CLDFB domain */ + AUDIO_CONFIG *audio_config, /* o : audio configuration */ + int16_t *nOutSamples /* o : number of samples per channel written to output buffer */ +) +{ + Decoder_Struct *st_ivas; + ivas_error error; + int16_t ch, b, slot_idx, num_chs, maxBand, num_samples; + + error = IVAS_ERR_OK; + + if ( hIvasDec == NULL || hIvasDec->st_ivas == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + st_ivas = hIvasDec->st_ivas; + num_samples = 0; + + if ( st_ivas->hSplitBinRend.hCldfbDataOut != NULL ) + { + *audio_config = st_ivas->hSplitBinRend.hCldfbDataOut->config; + if ( st_ivas->hSplitBinRend.hCldfbDataOut->config != AUDIO_CONFIG_INVALID ) + { + num_chs = audioCfg2channels( st_ivas->hSplitBinRend.hCldfbDataOut->config ); + maxBand = (int16_t) ( ( CLDFB_NO_CHANNELS_MAX * st_ivas->hDecoderConfig->output_Fs ) / 48000 ); + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + for ( b = 0; b < maxBand; b++ ) + { + for ( ch = 0; ch < num_chs; ch++ ) + { + *out_real++ = st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_RealBuffer[ch][slot_idx][b]; + *out_imag++ = st_ivas->hSplitBinRend.hCldfbDataOut->Cldfb_ImagBuffer[ch][slot_idx][b]; + } + } + } + num_samples = CLDFB_NO_COL_MAX * maxBand; + } + } + else + { + *audio_config = AUDIO_CONFIG_INVALID; + } + *nOutSamples = num_samples; + + return error; +} +#endif + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +void *pcm_buffer_offset( void *buffer, const IVAS_DEC_PCM_TYPE pcmType, int32_t offset ) +{ + switch ( pcmType ) + { + case IVAS_DEC_PCM_FLOAT: + { + float *tmpBuf = (float *) buffer; + return (void *) ( tmpBuf + offset ); + } + break; + case IVAS_DEC_PCM_INT16: + { + int16_t *tmpBuf = (int16_t *) buffer; + return (void *) ( tmpBuf + offset ); + } + break; + default: + return NULL; + } +} + +ivas_error set_pcm_buffer_to_zero( void *buffer, const IVAS_DEC_PCM_TYPE pcmType, int16_t nZeroSamples ) +{ + ivas_error error; error = IVAS_ERR_OK; + switch ( pcmType ) + { + case IVAS_DEC_PCM_FLOAT: + set_zero( (float *) buffer, nZeroSamples ); + break; + case IVAS_DEC_PCM_INT16: + set_s( (int16_t *) buffer, 0, nZeroSamples ); + break; + default: + error = IVAS_ERR_INTERNAL; + } return error; } + +PCM_RESOLUTION pcm_type_API_to_internal( const IVAS_DEC_PCM_TYPE pcmType ) +{ + PCM_RESOLUTION pcm_resolution; + pcm_resolution = PCM_NOT_KNOW; + switch ( pcmType ) + { + case IVAS_DEC_PCM_FLOAT: + pcm_resolution = PCM_FLOAT32; + break; + case IVAS_DEC_PCM_INT16: + pcm_resolution = PCM_INT16; + break; + default: + pcm_resolution = PCM_NOT_KNOW; + } + return pcm_resolution; +} + +#endif diff --git a/lib_dec/lib_dec.h b/lib_dec/lib_dec.h index ebcdd099c80da0eefb9519e848d5cd71399655ee..fa76331d7d955156c42fa69589e56e940f596935 100644 --- a/lib_dec/lib_dec.h +++ b/lib_dec/lib_dec.h @@ -40,27 +40,6 @@ * Decoder enums *---------------------------------------------------------------------*/ -/* output formats generated by the decoder */ -typedef enum _IVAS_DEC_OUTPUT_CONFIG -{ - IVAS_DEC_OUTPUT_MONO = 0x0001, - IVAS_DEC_OUTPUT_STEREO, - IVAS_DEC_OUTPUT_5_1, - IVAS_DEC_OUTPUT_7_1, - IVAS_DEC_OUTPUT_5_1_2, - IVAS_DEC_OUTPUT_5_1_4, - IVAS_DEC_OUTPUT_7_1_4, - IVAS_DEC_OUTPUT_LS_CUSTOM, - IVAS_DEC_OUTPUT_FOA, - IVAS_DEC_OUTPUT_HOA2, - IVAS_DEC_OUTPUT_HOA3, - IVAS_DEC_OUTPUT_BINAURAL, - IVAS_DEC_OUTPUT_BINAURAL_ROOM_IR, - IVAS_DEC_OUTPUT_BINAURAL_ROOM_REVERB, - IVAS_DEC_OUTPUT_EXT, - IVAS_DEC_OUTPUT_UNKNOWN = 0xffff -} IVAS_DEC_AUDIO_CONFIG; - /* mode the decoder is operating in */ typedef enum _IVAS_DEC_MODE { @@ -84,7 +63,7 @@ typedef enum _IVAS_DEC_COMPLEXITY_LEVEL IVAS_DEC_COMPLEXITY_LEVEL_THREE = 3 } IVAS_DEC_COMPLEXITY_LEVEL; - +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING typedef enum { @@ -92,6 +71,7 @@ typedef enum IVAS_DEC_VOIP_MODE_VARIABLE_SPEED = 1 } IVAS_DEC_VOIP_MODE; #endif +#endif #ifdef DEBUGGING typedef enum _IVAS_DEC_FORCED_REND_MODE @@ -103,6 +83,16 @@ typedef enum _IVAS_DEC_FORCED_REND_MODE } IVAS_DEC_FORCED_REND_MODE; #endif +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +typedef enum _IVAS_DEC_PCM_TYPE +{ + IVAS_DEC_PCM_INT16, + IVAS_DEC_PCM_FLOAT, + IVAS_DEC_PCM_INVALID +} IVAS_DEC_PCM_TYPE; +#endif + + /* bitstream formats that can be consumed */ typedef enum _IVAS_DEC_BS_FORMAT { @@ -110,8 +100,10 @@ typedef enum _IVAS_DEC_BS_FORMAT IVAS_DEC_BS_STEREO, IVAS_DEC_BS_MC, IVAS_DEC_BS_SBA, + IVAS_DEC_BS_SBA_ISM, IVAS_DEC_BS_OBJ, IVAS_DEC_BS_MASA, + IVAS_DEC_BS_MASA_ISM, IVAS_DEC_BS_UNKOWN = 0xffff } IVAS_DEC_BS_FORMAT; @@ -140,12 +132,16 @@ ivas_error IVAS_DEC_Open( ivas_error IVAS_DEC_Configure( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const uint32_t sampleRate, /* i : output sampling frequency */ - const IVAS_DEC_AUDIO_CONFIG outputFormat, /* i : output format */ - const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ + const AUDIO_CONFIG outputConfig, /* i : audio configuration */ +#ifdef API_5MS + const int16_t tsmEnabled, /* i : enable TSM */ + const int16_t enable5ms, /* i : enable 5ms rendering path */ +#endif + const int16_t customLsOutputEnabled, /* i : enable custom loudspeaker setup handle */ const int16_t hrtfReaderEnabled, /* i : enable HRTF binary file input */ const int16_t enableHeadRotation, /* i : enable head rotation for binaural output */ const int16_t enableExternalOrientation, /* i : enable external orientations */ - const HEAD_ORIENT_TRK_T orientation_tracking, /* i : head orientation tracking type */ + const HEAD_ORIENT_TRK_T orientation_tracking, /* i : head orientation tracking type */ const int16_t renderConfigEnabled, /* i : enable Renderer config. file for binaural output */ const int16_t Opt_non_diegetic_pan, /* i : diegetic or not */ const float non_diegetic_pan_gain, /* i : non diegetic panning gain */ @@ -169,10 +165,54 @@ ivas_error IVAS_DEC_FeedFrame_Serial( /*! r: decoder error code */ ivas_error IVAS_DEC_GetSamples( +#ifdef API_5MS + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const int16_t nSamplesAsked, /* i: number of samples wanted by the caller */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const IVAS_DEC_PCM_TYPE pcmType, /* i : type for the decoded PCM resolution */ + void *pcmBuf, /* o : output synthesis signal */ +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif + int16_t *nOutSamples, /* o : number of samples per channel written to output buffer */ + bool *needNewFrame /* indication that the decoder needs a new frame */ +#else IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ int16_t *nOutSamples /* o : number of samples per channel written to output buffer */ +#endif +#if defined SPLIT_REND_WITH_HEAD_ROT && !defined API_5MS + , + uint8_t *splitRendBitsBuf /* o : output split rendering bits */ +#endif +); + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +ivas_error IVAS_DEC_GetSplitBinauralBitstream( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + void *pcmBuf_out, /* o : output synthesis signal for BINAURAL_SPLIT_PCM */ + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits, /* o : bitstream output for split rendering mode */ + int16_t *nOutSamples, /* o : number of samples per channel written to output buffer */ + bool *needNewFrame /* indication that the decoder needs a new frame */ +); +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*! r: decoder error code */ +ivas_error IVAS_DEC_GetSplitRendBits( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_SPLIT_REND_BITS_HANDLE splitRendBits /* o : split rendering Bits structure */ +); + +/*! r: decoder error code */ +ivas_error IVAS_DEC_GetCldfbSamples( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + float *out_real, /* o : buffer for decoded PCM real output in CLDFB domain */ + float *out_imag, /* o : buffer for decoded PCM imag output in CLDFB domain */ + AUDIO_CONFIG *audio_config, /* o : audio configuration */ + int16_t *nOutSamples /* o : number of samples per channel written to output buffer */ ); +#endif /*! r: error code */ ivas_error IVAS_DEC_GetObjectMetadata( @@ -184,21 +224,26 @@ ivas_error IVAS_DEC_GetObjectMetadata( /*! r: error code */ ivas_error IVAS_DEC_GetMasaMetadata( -#ifdef FIX_470_MASA_JBM_EXT IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ MASA_DECODER_EXT_OUT_META_HANDLE *hMasaExtOutMeta, /* o : pointer to handle, which will be set to point to metadata from the most recently decoded frame */ uint8_t getFromJbmBuffer /* i : get metadata from a JBM buffer */ -#else - IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - MASA_DECODER_EXT_OUT_META_HANDLE *hMasaExtOutMeta /* o : pointer to handle, which will be set to point to metadata from the most recently decoded frame */ -#endif ); /*! r: error code */ ivas_error IVAS_DEC_FeedHeadTrackData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_QUATERNION *orientation, /* i : head-tracking data */ - IVAS_VECTOR3 *Pos /* i : listener position */ +#ifdef API_5MS + IVAS_QUATERNION orientation, /* i : head-tracking data, listener orientation */ + IVAS_VECTOR3 Pos, /* i : listener position */ + const int16_t subframe_idx /*subframe index*/ +#else + IVAS_QUATERNION *orientation, /* i : head-tracking data, listener orientation */ + IVAS_VECTOR3 *Pos /* i : listener position */ +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + IVAS_SPLIT_REND_ROT_AXIS rot_axis /*i : external control for rotation axis for split rendering */ +#endif ); /*! r: error code */ @@ -216,11 +261,20 @@ ivas_error IVAS_DEC_FeedRefVectorData( /*! r: error code */ ivas_error IVAS_DEC_FeedExternalOrientationData( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ - IVAS_QUATERNION *orientation, /* i : external orientation data */ - int8_t *enableHeadRotation, /* i : flag to enable head rotation for this frame */ - int8_t *enableExternalOrientation, /* i : flag to enable external orientation for this frame */ - int8_t *enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ - int16_t *numFramesToTargetOrientation /* i : number of frames until target orientation is reached */ +#ifdef API_5MS + IVAS_QUATERNION orientation, /* i : external orientation data */ + int8_t enableHeadRotation, /* i : flag to enable head rotation for this frame */ + int8_t enableExternalOrientation, /* i : flag to enable external orientation for this frame */ + int8_t enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ + int16_t numFramesToTargetOrientation, /* i : number of frames until target orientation is reached */ + const int16_t subframe_idx /*i : subframe index*/ +#else + IVAS_QUATERNION *orientation, /* i : external orientation data */ + int8_t *enableHeadRotation, /* i : flag to enable head rotation for this frame */ + int8_t *enableExternalOrientation, /* i : flag to enable external orientation for this frame */ + int8_t *enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ + int16_t *numFramesToTargetOrientation /* i : number of frames until target orientation is reached */ +#endif ); /*! r: error code */ @@ -234,6 +288,13 @@ ivas_error IVAS_DEC_VoIP_FeedFrame( const bool qBit /* i : Q bit for AMR-WB IO */ ); +#ifdef API_5MS +ivas_error IVAS_DEC_VoIP_SetScale( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + const int16_t maxScaling, /* i : maximum allowed TSM scale */ + const int16_t scale /* i : TSM scale to set */ +); +#else #ifdef VARIABLE_SPEED_DECODING #ifdef DEBUGGING /*! r: error code */ @@ -243,25 +304,41 @@ ivas_error IVAS_DEC_VoIP_SetScale( ); #endif #endif +#endif /*! r: error code */ ivas_error IVAS_DEC_VoIP_GetSamples( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ uint16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ - int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ - const uint32_t systemTimestamp_ms, /* i : current system timestamp */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + IVAS_DEC_PCM_TYPE pcmType, + void *pcmBuf, +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif + const uint32_t systemTimestamp_ms /* i : current system timestamp */ +#ifndef API_5MS + , uint16_t *sampleAvailableNext /* o : samples available for the next call */ +#endif #ifdef SUPPORT_JBM_TRACEFILE , JbmTraceFileWriterFn jbmWriterFn, void* jbmWriter #endif ); -ivas_error IVAS_DEC_VoIP_Flush( +ivas_error IVAS_DEC_Flush( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const int16_t nSamplesPerChannel, /* i : number of samples per channel requested to be written to output buffer */ - int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ - uint16_t *nSamplesAvailableNext, /* o : number of samples still available */ +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT + const IVAS_DEC_PCM_TYPE pcmType, + void *pcmBuf, +#else + int16_t *pcmBuf, /* i/o: buffer for decoded PCM output. The memory must already be allocated and be able to hold the expected number of output samples, based on frame size and number of output channels */ +#endif +#ifndef API_5MS + uint16_t *nSamplesAvailableNext, /* o : number of samples still available */ +#endif int16_t *nSamplesFlushed /* o : number of samples flushed */ ); @@ -270,14 +347,31 @@ ivas_error IVAS_DEC_VoIP_Flush( /*! r: error code */ ivas_error IVAS_DEC_EnableVoIP( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ +#ifndef API_5MS #ifdef VARIABLE_SPEED_DECODING const IVAS_DEC_VOIP_MODE voipMode, /* i : VoIP or variable speed */ const uint16_t speedFac, /* i : speed factor for variable speed */ +#endif #endif const int16_t jbmSafetyMargin, /* i : allowed delay reserve for JBM, in milliseconds */ const IVAS_DEC_INPUT_FORMAT inputFormat /* i : format of the input bitstream */ ); +#ifdef API_5MS +#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_Get5msFlag( + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + int16_t *enable5ms /* o : 5ms flag */ +); + +#endif + #ifdef DEBUGGING bool IVAS_DEC_GetBerDetectFlag( IVAS_DEC_HANDLE hIvasDec /* i : IVAS decoder handle */ @@ -346,21 +440,29 @@ ivas_error IVAS_DEC_GetHrtfCRendHandle( ); ivas_error IVAS_DEC_GetHrtfFastConvHandle( - IVAS_DEC_HANDLE hIvasDec, /* i/oL IVAS decoder handle */ - IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ + IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ + IVAS_DEC_HRTF_FASTCONV_HANDLE *hHrtfFastConv /* o : FASTCONV HRTF handle */ ); 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 */ + IVAS_DEC_HRTF_PARAMBIN_HANDLE *hHrtfParambin /* o : Parametric binauralizer HRTF handle */ ); + /*! r: error code*/ ivas_error IVAS_DEC_GetRenderConfig( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ const IVAS_RENDER_CONFIG_HANDLE hRCout /* o : Render config handle */ ); +#ifdef API_5MS +/*! r: error code*/ +ivas_error IVAS_DEC_GetDefaultRenderConfig( + IVAS_RENDER_CONFIG_HANDLE hRCout /* o : Render config handle */ +); +#endif + /*! r: error code*/ ivas_error IVAS_DEC_FeedRenderConfig( IVAS_DEC_HANDLE hIvasDec, /* i/o: IVAS decoder handle */ diff --git a/lib_dec/peak_vq_dec.c b/lib_dec/peak_vq_dec.c index df238a057f24507e98dffe81769b8914e2468f41..21c8014f86a9305006b8d4cc0c3faaadf5519e85 100644 --- a/lib_dec/peak_vq_dec.c +++ b/lib_dec/peak_vq_dec.c @@ -280,7 +280,7 @@ static void peak_vq_dec( pvq_bands = hvq_pvq_bitalloc( pvq_bits, core_brate, st->bwidth, ynrm, manE_peak, expE_peak, Rk, R, sel_bnds, &n_sel_bnds ); /* safety check in case of bit errors */ - if ( pvq_bands == 0 ) + if ( ( pvq_bands == 0 ) && st->element_mode == EVS_MONO ) /* PVQ bands may be zero for IVAS */ { st->BER_detect = 1; } diff --git a/lib_dec/rom_dec.c b/lib_dec/rom_dec.c index beba87c3dab82627e2d7182eac0a38746e59471f..e0ae59e586a4b5d3d2b30f613a87d76e9a8fc0be 100644 --- a/lib_dec/rom_dec.c +++ b/lib_dec/rom_dec.c @@ -92,7 +92,7 @@ const float lsf_tab[LPC_SHB_ORDER] = const int16_t gw[LGW_MAX] = { 1, 3, 6, 10, 16, 32, 64, 128, 192 }; /* 31.25 343.75 718.75 1218.75 1968.75 4000 8000 16000 24000 */ -const int16_t gwlpr[LGW_MAX] = { 1, 3*QUOT_LPR_LTR-1, 6*QUOT_LPR_LTR-1, 10*QUOT_LPR_LTR-1, 16*QUOT_LPR_LTR-1, 32*QUOT_LPR_LTR, 64*QUOT_LPR_LTR, 128*QUOT_LPR_LTR, 192*QUOT_LPR_LTR }; +const int16_t ivas_gwlpr[LGW_MAX] = { 1, 3*QUOT_LPR_LTR-1, 6*QUOT_LPR_LTR-1, 10*QUOT_LPR_LTR-1, 16*QUOT_LPR_LTR-1, 32*QUOT_LPR_LTR, 64*QUOT_LPR_LTR, 128*QUOT_LPR_LTR, 192*QUOT_LPR_LTR }; const float w_hamm48k_2[L_TRANA48k/2] = { @@ -243,5 +243,4 @@ const float w_hamm_sana16k_2[L_PROT_HAMM_LEN2_16k] = const float h_high3_32[L_FIR_FER2] = {-0.0517f, -0.0587f, -0.0820f, -0.1024f, -0.1164f, 0.8786f, -0.1164f, -0.1024f, -0.0820f, -0.0587f, -0.0517f}; const float h_high3_16[L_FIR_FER2] = { 0.f, -0.0205f, -0.0651f, -0.1256f, -0.1792f, 0.8028f, -0.1792f, -0.1256f, -0.0651f, -0.0205f, 0.f }; - /* clang-format on */ diff --git a/lib_dec/rom_dec.h b/lib_dec/rom_dec.h index 751a2e4da0c52c6f92ae2cea45ca9428c6a1cf19..5930eda56f102d1ca727252fe404549d9f72e650 100644 --- a/lib_dec/rom_dec.h +++ b/lib_dec/rom_dec.h @@ -56,7 +56,7 @@ extern const int16_t hestable[15]; extern const float lsf_tab[LPC_SHB_ORDER]; extern const int16_t gw[LGW_MAX]; -extern const int16_t gwlpr[LGW_MAX]; +extern const int16_t ivas_gwlpr[LGW_MAX]; extern const float w_hamm32k_2[L_TRANA32k / 2]; extern const float w_hamm16k_2[L_TRANA16k / 2]; extern const float w_hamm_sana32k_2[L_PROT_HAMM_LEN2_32k]; @@ -67,5 +67,4 @@ extern const float w_hamm_sana48k_2[L_PROT_HAMM_LEN2_48k]; extern const float h_high3_32[L_FIR_FER2]; extern const float h_high3_16[L_FIR_FER2]; - #endif diff --git a/lib_dec/tonalMDCTconcealment.c b/lib_dec/tonalMDCTconcealment.c index 86340ab181f6abf6af3116cb377064c773865a63..ce77ecb9711f730c89dfcffea2135984ab4581dc 100644 --- a/lib_dec/tonalMDCTconcealment.c +++ b/lib_dec/tonalMDCTconcealment.c @@ -126,7 +126,7 @@ void TonalMDCTConceal_SaveFreqSignal( const int16_t infoIGFStartLine ) { float *temp; - int16_t nOldSamples; + uint16_t nOldSamples; assert( nNewSamples > 0 && nNewSamples <= 2 * L_FRAME_MAX ); diff --git a/lib_enc/acelp_core_enc.c b/lib_enc/acelp_core_enc.c index d78f9bf25888ea73be399e04a4d086a681708366..ac6c820fa1baef922aa17907699b01c5e96898bf 100644 --- a/lib_enc/acelp_core_enc.c +++ b/lib_enc/acelp_core_enc.c @@ -461,7 +461,18 @@ ivas_error acelp_core_enc( if ( st->last_core != ACELP_CORE && st->element_mode > EVS_MONO ) { /* Prepare ACB memory of old_bwe_exc */ +#ifdef CR_FIX_639_HQ_ACELP_TRANSITION + if ( st->L_frame == L_FRAME ) + { + lerp( old_exc, old_bwe_exc, L_EXC_MEM_DEC * HIBND_ACB_L_FAC, L_EXC_MEM_DEC ); + } + else + { + lerp( old_exc, old_bwe_exc, L_EXC_MEM_DEC * 2, L_EXC_MEM_DEC ); + } +#else lerp( old_exc, old_bwe_exc, L_EXC_MEM_DEC * HIBND_ACB_L_FAC, L_EXC_MEM_DEC ); +#endif } diff --git a/lib_enc/bw_detect.c b/lib_enc/bw_detect.c index e1e068ab2ca2a284939a38bb711d882866ca11e6..121754e1dcd339c75a99d7fd76fd416faebfa8ae 100644 --- a/lib_enc/bw_detect.c +++ b/lib_enc/bw_detect.c @@ -579,12 +579,8 @@ void set_bw( { st->bwidth = WB; } -#ifdef ISM_FB else if ( st->bwidth > SWB && ( ( element_brate < MIN_BRATE_FB_STEREO && !st->is_ism_format ) || ( element_brate < MIN_BRATE_FB_ISM && st->is_ism_format ) ) ) -#else - else if ( element_brate < MIN_BRATE_FB_STEREO && st->bwidth > SWB ) -#endif { st->bwidth = SWB; } diff --git a/lib_enc/enc_prm.c b/lib_enc/enc_prm.c index 758d672d0b71fd6b9747c0fd580fb0a56c3764ee..61bfbf2f0feef1024e848d5c305613782eefb4e6 100644 --- a/lib_enc/enc_prm.c +++ b/lib_enc/enc_prm.c @@ -329,7 +329,7 @@ void writeTCXparam( const int16_t nbits_header, const int16_t nbits_start, const int16_t nbits_lpc, - const int16_t *no_param_tns, /* i : number of TNS parameters per subframe */ + const int16_t *no_param_tns, /* i : number of TNS parameters per subframe */ int16_t p_param[2], /* i/o: pointer to parameters from previous bs writing */ const int16_t target_bitsTCX10[2], const int16_t pre_past_flag ) diff --git a/lib_enc/gain_enc.c b/lib_enc/gain_enc.c index 4883ea77b4129e77f1aca399ef458e8201c45741..b114b34c7f171e6b0abe91b9029f6cd25788bc8d 100644 --- a/lib_enc/gain_enc.c +++ b/lib_enc/gain_enc.c @@ -561,7 +561,7 @@ void gain_enc_SQ( nBits_code = ( nBits_pitch + 1 ) >> 1; nBits_pitch = nBits_pitch >> 1; - div_s( &tmp16, 1, ( ( 1 << ( nBits_pitch ) ) - 1 ) ); /* Q15*/ + tmp16 = div_s( 1, ( ( 1 << ( nBits_pitch ) ) - 1 ) ); /* Q15*/ tmp1 = (float) mult_r( (int16_t) ( G_PITCH_MAX * 8192.0f + 0.5f ), tmp16 ) / 8192.0f; index = usquant( *gain_pit, gain_pit, G_PITCH_MIN, tmp1, ( 1 << nBits_pitch ) ); push_indice( hBstr, IND_GAIN_PIT, index, nBits_pitch ); diff --git a/lib_enc/hq_lr_enc.c b/lib_enc/hq_lr_enc.c index e43baef59d23cc060f93c77123aca1117e194a97..343a31713f1c1f49c56b75bb98a54906de482c62 100644 --- a/lib_enc/hq_lr_enc.c +++ b/lib_enc/hq_lr_enc.c @@ -362,7 +362,7 @@ void hq_lr_enc( { exp2 = add( exp2, 1 ); } - div_s( &tmp, tmp2, tmp ); + tmp = div_s( tmp2, tmp ); L_tmp = L_deposit_h( tmp ); L_tmp = Isqrt_lc1( L_tmp, &exp2 ); move32(); /*Q(31-exp2) */ @@ -443,7 +443,7 @@ void hq_lr_enc( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -477,7 +477,7 @@ void hq_lr_enc( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -497,7 +497,7 @@ void hq_lr_enc( { exp = norm_s( tmp2 ); tmp2 = shl( tmp2, exp ); /*Q(exp) */ - div_s( &tmp2, 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ + tmp2 = div_s( 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -522,7 +522,7 @@ void hq_lr_enc( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -552,7 +552,7 @@ void hq_lr_enc( { exp = norm_s( tmp2 ); tmp2 = shl( tmp2, exp ); /*Q(exp) */ - div_s( &tmp2, 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ + tmp2 = div_s( 16384, tmp2 ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -615,7 +615,7 @@ void hq_lr_enc( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -745,7 +745,7 @@ void hq_lr_enc( { exp = norm_s( tmp1 ); tmp1 = shl( tmp1, exp ); /*Q(exp) */ - div_s( &tmp1, 16384, tmp1 ); /*Q(15+14-exp = 29-exp) */ + tmp1 = div_s( 16384, tmp1 ); /*Q(15+14-exp = 29-exp) */ exp = sub( 29, exp ); } ELSE @@ -788,7 +788,7 @@ void hq_lr_enc( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -817,7 +817,7 @@ void hq_lr_enc( { exp = norm_s( tmp1 ); tmp1 = shl( tmp1, exp ); /*Q(exp) */ - div_s( &tmp1, 16384, tmp1 ); /*Q(15+14-exp=29-exp) */ + tmp1 = div_s( 16384, tmp1 ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -891,7 +891,7 @@ void hq_lr_enc( { exp = norm_s( tmp ); tmp = shl( tmp, exp ); /*Q(exp) */ - div_s( &tmp, 16384, tmp ); /*Q(15+14-exp=29-exp) */ + tmp = div_s( 16384, tmp ); /*Q(15+14-exp=29-exp) */ exp = sub( 29, exp ); } ELSE @@ -1512,7 +1512,7 @@ static float band_energy_quant( #define WMC_TOOL_SKIP exp_normd = norm_l( L_qint ); - div_s( &rev_qint_fx, 0x4000, round_fx( L_shl( L_qint, exp_normd ) ) ); /* Q14-(29+exp_normd-16)+15 */ + rev_qint_fx = div_s( 0x4000, round_fx( L_shl( L_qint, exp_normd ) ) ); /* Q14-(29+exp_normd-16)+15 */ Qrev_qint = sub( 14 - ( 29 - 16 ) + 15, exp_normd ); bq0 = round_fx( L_shl( L_mult( eref_fx, rev_qint_fx ), sub( 5, Qrev_qint ) ) ); /* 16-(10+Qrev_qint+1) */ @@ -1714,7 +1714,7 @@ static void mdct_spectrum_fine_gain_enc( exp_normn = norm_l( L_qint ); exp_normn = sub( exp_normn, 1 ); exp_normd = norm_s( gqlevs ); - div_l( &delta_fx, L_shl( L_qint, exp_normn ), shl( gqlevs, exp_normd ) ); + delta_fx = div_l( L_shl( L_qint, exp_normn ), shl( gqlevs, exp_normd ) ); Qdelta = add( sub( exp_normn, exp_normd ), 28 ); /* 29+exp_normn-(exp_normd)-1; */ L_delta = L_shl( L_deposit_h( delta_fx ), sub( 13, Qdelta ) ); /*q = (-qint + delta) / 2.0f; */ diff --git a/lib_enc/init_enc.c b/lib_enc/init_enc.c index 8cde5b838b1bf871b845a745fbc6f8d80a424659..3eb363324efe52396c1ab6ba7d2219ea19d6cc6a 100644 --- a/lib_enc/init_enc.c +++ b/lib_enc/init_enc.c @@ -126,6 +126,7 @@ ivas_error init_encoder( st->hBstr->ivas_max_num_indices = &st_ivas->ivas_max_num_indices; st->hBstr->nb_ind_tot = 0; st->hBstr->nb_bits_tot = 0; + st->hBstr->st_ivas = st_ivas; } else { diff --git a/lib_enc/ivas_core_enc.c b/lib_enc/ivas_core_enc.c index 7ff583a6d244e59ab05987986fe86f4510adc73d..3fdb704672ce3702de794eef9829a6a96397b87f 100644 --- a/lib_enc/ivas_core_enc.c +++ b/lib_enc/ivas_core_enc.c @@ -102,6 +102,7 @@ ivas_error ivas_core_enc( float tdm_lspQ_PCh[M], tdm_lsfQ_PCh[M]; int16_t last_element_mode, tdm_Pitch_reuse_flag; int32_t element_brate, last_element_brate, input_Fs; + int16_t diff_nBits; ivas_error error; int16_t max_num_indices_BWE; @@ -188,6 +189,16 @@ ivas_error ivas_core_enc( } } + /*------------------------------------------------------------------* + * Sanity check in combined format coding + *-----------------------------------------------------------------*/ + + diff_nBits = 0; + if ( hCPE != NULL && hCPE->element_mode == IVAS_CPE_DFT && hCPE->brate_surplus > 0 ) + { + ivas_combined_format_brate_sanity( hCPE->element_brate, sts[0]->core, &( sts[0]->core_brate ), &diff_nBits ); + } + /*---------------------------------------------------------------------* * Core Encoding *---------------------------------------------------------------------*/ @@ -363,11 +374,7 @@ ivas_error ivas_core_enc( } /* SWB TBE encoder */ -#ifdef FIX_559_EXTL_IGF_MISMATCH if ( st->extl == SWB_TBE || st->extl == FB_TBE ) -#else - if ( st->extl == SWB_TBE || st->extl == FB_TBE || ( st->igf && st->core == ACELP_CORE && st->extl != WB_TBE ) ) -#endif { if ( st->core_brate != FRAME_NO_DATA && st->core_brate != SID_2k40 ) { @@ -425,6 +432,20 @@ ivas_error ivas_core_enc( } } + /*------------------------------------------------------------------* + * Write potentially unused bits in combined format coding + *-----------------------------------------------------------------*/ + + if ( hCPE != NULL && hCPE->element_mode == IVAS_CPE_DFT && hCPE->brate_surplus > 0 ) + { + while ( diff_nBits > 0 ) + { + n = min( diff_nBits, 16 ); + push_indice( sts[0]->hBstr, IND_UNUSED, 0, n ); + diff_nBits -= n; + } + } + #ifdef DEBUG_MODE_INFO for ( n = 0; n < n_CoreChannels; n++ ) { diff --git a/lib_enc/ivas_core_pre_proc.c b/lib_enc/ivas_core_pre_proc.c index 07a32c868ac484705cfa02291e3533b479d1a9ed..63b103086e5510542cf80c359f5b284c95af837e 100644 --- a/lib_enc/ivas_core_pre_proc.c +++ b/lib_enc/ivas_core_pre_proc.c @@ -285,12 +285,10 @@ ivas_error pre_proc_ivas( { SetModeIndex( st, st->bits_frame_nominal * FRAMES_PER_SEC, element_mode, MCT_flag ); -#ifdef FIX_559_EXTL_IGF_MISMATCH if ( st->extl != -1 && st->extl != IGF_BWE && st->igf == 1 ) { st->igf = 0; } -#endif } diff --git a/lib_enc/ivas_core_pre_proc_front.c b/lib_enc/ivas_core_pre_proc_front.c index 20c2f164523ae396f77e29b1dab86b5eac69c8d2..92c66f0de3a45a8fedce45a6eef569ef81f0e68b 100644 --- a/lib_enc/ivas_core_pre_proc_front.c +++ b/lib_enc/ivas_core_pre_proc_front.c @@ -161,9 +161,6 @@ ivas_error pre_proc_front_ivas( float temp1F_icatdmResampBuf[L_FILT_MAX]; /* temp buffers for ICA TDM resamplers */ int16_t old_pitch1; /* previous frame OL pitch[1] @12.8 kHz */ int16_t LR_localVAD; -#ifndef FIX_560_VAD_FLAG - int16_t LR_vad_flag; -#endif ivas_error error; push_wmops( "pre_proc_front" ); @@ -180,9 +177,6 @@ ivas_error pre_proc_front_ivas( res_cod_SNR_M = tmpF; LR_localVAD = 0; -#ifndef FIX_560_VAD_FLAG - LR_vad_flag = 0; -#endif if ( hSCE != NULL ) { @@ -210,9 +204,6 @@ ivas_error pre_proc_front_ivas( { /* Combine localVAD and vad_flag from LR processing */ LR_localVAD = hCPE->hCoreCoder[0]->localVAD || hCPE->hCoreCoder[1]->localVAD; -#ifndef FIX_560_VAD_FLAG - LR_vad_flag = hCPE->hFrontVad[0]->hVAD->vad_flag || hCPE->hFrontVad[1]->hVAD->vad_flag; -#endif } if ( hCPE->hStereoTD != NULL ) @@ -466,10 +457,6 @@ ivas_error pre_proc_front_ivas( /* Add down mix stereo activity to LR vad_flag_dtx */ *vad_flag_dtx = *vad_flag_dtx || st->vad_flag; -#ifndef FIX_560_VAD_FLAG - /* Combine the LR VAD flag and stereo downmix VAD flag */ - st->vad_flag = ( LR_vad_flag || st->vad_flag ); -#endif /* Determine hangover flag status based on LR localVAD and downmix localVAD */ *vad_hover_flag = *vad_flag_dtx && !( LR_localVAD || st->localVAD ); diff --git a/lib_enc/ivas_corecoder_enc_reconfig.c b/lib_enc/ivas_corecoder_enc_reconfig.c index 10c627c91b153da841292af1cf6055fb3920a790..153d85e4f2383fbdb90f42a79202274813efae04 100644 --- a/lib_enc/ivas_corecoder_enc_reconfig.c +++ b/lib_enc/ivas_corecoder_enc_reconfig.c @@ -251,7 +251,7 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hCPE[0]->hStereoMdct = NULL; } - /* create missing core coder elements and set element bitrates for alrady existing ones */ + /* create missing core coder elements and set element bitrates for already existing ones */ if ( st_ivas->nSCE > 0 ) { nSCE_existing = min( nSCE_old, st_ivas->nSCE ); @@ -271,14 +271,14 @@ ivas_error ivas_corecoder_enc_reconfig( } /* propagate input audio buffers */ - if ( n_CoreCoder_existing > sce_id ) + if ( n_CoreCoder_existing > sce_id && hEncoderConfig->ivas_format != MASA_ISM_FORMAT ) { mvr2r( input_buff[sce_id], st_ivas->hSCE[sce_id]->hCoreCoder[0]->input_buff, len_inp_memory ); } /* only reset indices if it is not the first index list, this already contains the IVAS format bits */ - if ( sce_id > 0 ) + if ( sce_id > 0 || hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) { reset_indices_enc( st_ivas->hSCE[sce_id]->hCoreCoder[0]->hBstr, st_ivas->hSCE[sce_id]->hCoreCoder[0]->hBstr->nb_ind_tot ); @@ -303,7 +303,9 @@ ivas_error ivas_corecoder_enc_reconfig( copy_encoder_config( st_ivas, st_ivas->hCPE[cpe_id]->hCoreCoder[n], 0 ); st_ivas->hCPE[cpe_id]->hCoreCoder[n]->total_brate = st_ivas->hCPE[cpe_id]->element_brate / ( st_ivas->nCPE > 1 ? 1 : CPE_CHANNELS ); /* dummy initialization for getting right pointers initialization of input buffers in init_coder_ace_plus() */ - if ( cpe_id * CPE_CHANNELS + n > 0 || ( st_ivas->mc_mode == MC_MODE_MCMASA && st_ivas->nSCE > 0 ) ) + if ( ( cpe_id * CPE_CHANNELS + n > 0 ) || + ( st_ivas->mc_mode == MC_MODE_MCMASA && st_ivas->nSCE > 0 ) || + ( hEncoderConfig->ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 ) ) { reset_indices_enc( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr, st_ivas->hCPE[cpe_id]->hCoreCoder[n]->hBstr->nb_ind_tot ); @@ -468,6 +470,7 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->ivas_max_num_indices = &st_ivas->ivas_max_num_indices_metadata; st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->nb_ind_tot = 0; st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->nb_bits_tot = 0; + st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->st_ivas = st_ivas; } reset_indices_enc( st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData, st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData->nb_ind_tot ); @@ -517,7 +520,7 @@ ivas_error ivas_corecoder_enc_reconfig( st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->mdct_stereo_mode_cmdl = hEncoderConfig->stereo_mode_cmdl; #endif initMdctStereoEncData( st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct, hEncoderConfig->ivas_format, st_ivas->hCPE[st_ivas->nCPE - 1]->element_mode, st_ivas->hCPE[st_ivas->nCPE - 1]->element_brate, hEncoderConfig->max_bwidth, 0, NULL, 1 ); - st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->isSBAStereoMode = ( ( hEncoderConfig->ivas_format == SBA_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); + st_ivas->hCPE[st_ivas->nCPE - 1]->hStereoMdct->isSBAStereoMode = ( ( hEncoderConfig->ivas_format == SBA_FORMAT || hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); } } diff --git a/lib_enc/ivas_cpe_enc.c b/lib_enc/ivas_cpe_enc.c index 3c1d7a61c6832d086d73e5164c577dfa950f2b2f..cae911900082b45a6e3e4bf815fbf92f15311b04 100644 --- a/lib_enc/ivas_cpe_enc.c +++ b/lib_enc/ivas_cpe_enc.c @@ -45,6 +45,13 @@ #include "wmc_auto.h" +/*--------------------------------------------------------------------------* + * Local function prototypes + *--------------------------------------------------------------------------*/ + +static void stereo_mode_combined_format_enc( const Encoder_Struct *st_ivas, CPE_ENC_HANDLE hCPE ); + + /*-------------------------------------------------------------------* * ivas_cpe_enc() * @@ -101,6 +108,8 @@ ivas_error ivas_cpe_enc( ENCODER_CONFIG_HANDLE hEncoderConfig; int32_t ivas_total_brate; ivas_error error; + int32_t cpe_brate; + int32_t element_brate_ref; error = IVAS_ERR_OK; @@ -113,6 +122,7 @@ ivas_error ivas_cpe_enc( ivas_format = hEncoderConfig->ivas_format; input_Fs = hEncoderConfig->input_Fs; ivas_total_brate = hEncoderConfig->ivas_total_brate; + element_brate_ref = hCPE->element_brate; /*------------------------------------------------------------------* * Initialization - general @@ -168,6 +178,8 @@ ivas_error ivas_cpe_enc( hCPE->element_mode = select_stereo_mode( hCPE, ivas_format, ivas_total_brate ); } + stereo_mode_combined_format_enc( st_ivas, hCPE ); + if ( ( error = front_vad( hCPE, NULL, hEncoderConfig, &hCPE->hFrontVad[0], st_ivas->hMCT != NULL, input_frame, vad_flag_dtx, fr_bands, Etot_LR, lf_E, localVAD_HE_SAD, vad_hover_flag, band_energies_LR, NULL, NULL ) ) != IVAS_ERR_OK ) { return error; @@ -193,6 +205,7 @@ ivas_error ivas_cpe_enc( return error; } + /*----------------------------------------------------------------* * Set TD stereo parameters *----------------------------------------------------------------*/ @@ -265,12 +278,22 @@ ivas_error ivas_cpe_enc( sts[n]->element_mode = hCPE->element_mode; } + if ( hCPE->element_mode != IVAS_CPE_MDCT && ( hCPE->element_brate != hCPE->last_element_brate || hCPE->last_element_mode != hCPE->element_mode || - sts[0]->ini_frame == 0 || sts[0]->last_core_brate <= SID_2k40 ) ) /* If the last frame was SID or NO_DATA, we need to run stereo_dft_config here since VAD decision is not known yet */ + sts[0]->ini_frame == 0 || + ( ivas_total_brate != st_ivas->hEncoderConfig->last_ivas_total_brate ) || + sts[0]->last_core_brate <= SID_2k40 ) ) /* If the last frame was SID or NO_DATA, we need to run stereo_dft_config here since VAD decision is not known yet */ { if ( st_ivas->hQMetaData != NULL ) { - stereo_dft_config( hCPE->hStereoDft == NULL ? NULL : hCPE->hStereoDft->hConfig, st_ivas->hQMetaData->bits_frame_nominal * FRAMES_PER_SEC, &sts[0]->bits_frame_nominal, &sts[1]->bits_frame_nominal ); + if ( ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode != ISM_MODE_NONE ) + { + stereo_dft_config( hCPE->hStereoDft == NULL ? NULL : hCPE->hStereoDft->hConfig, (int32_t) ( 0.70f * st_ivas->hQMetaData->bits_frame_nominal * FRAMES_PER_SEC ), &sts[0]->bits_frame_nominal, &sts[1]->bits_frame_nominal ); + } + else + { + stereo_dft_config( hCPE->hStereoDft == NULL ? NULL : hCPE->hStereoDft->hConfig, st_ivas->hQMetaData->bits_frame_nominal * FRAMES_PER_SEC, &sts[0]->bits_frame_nominal, &sts[1]->bits_frame_nominal ); + } } else { @@ -294,6 +317,14 @@ ivas_error ivas_cpe_enc( if ( hCPE->element_mode == IVAS_CPE_MDCT ) { + /* compute bit-rate surplus per channel in combined format coding */ + int32_t brate_surplus[CPE_CHANNELS]; + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + brate_surplus[0] = ( ( hCPE->brate_surplus / FRAMES_PER_SEC ) >> 1 ) * FRAMES_PER_SEC; + brate_surplus[1] = hCPE->brate_surplus - brate_surplus[0]; + } + /* this is just for initialization, the true values of "total_brate" and "bits_frame_channel" are set later */ for ( n = 0; n < n_CoreChannels; n++ ) { @@ -310,6 +341,13 @@ ivas_error ivas_cpe_enc( sts[n]->bits_frame_nominal = (int16_t) ( hCPE->element_brate / FRAMES_PER_SEC ); sts[n]->bits_frame_channel = (int16_t) ( ( hCPE->element_brate / FRAMES_PER_SEC ) / n_CoreChannels ); sts[n]->total_brate = hCPE->element_brate / n_CoreChannels; + + /* subtract bit-rate for combined format coding */ + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + sts[n]->bits_frame_channel += (int16_t) ( brate_surplus[n] / FRAMES_PER_SEC ); + sts[n]->total_brate += brate_surplus[n]; + } } } @@ -320,7 +358,7 @@ ivas_error ivas_cpe_enc( hCPE->hStereoMdct->mdct_stereo_mode_cmdl = hEncoderConfig->mdct_stereo_mode_cmdl; #endif initMdctStereoEncData( hCPE->hStereoMdct, ivas_format, hCPE->element_mode, hCPE->element_brate, max_bwidth, 0, NULL, 0 ); - hCPE->hStereoMdct->isSBAStereoMode = ( ( ivas_format == SBA_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); + hCPE->hStereoMdct->isSBAStereoMode = ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); } } @@ -356,7 +394,9 @@ ivas_error ivas_cpe_enc( else if ( hCPE->element_mode == IVAS_CPE_TD ) { /* Determine the energy ratio between the 2 channels */ - tdm_ratio_idx = stereo_tdm_ener_analysis( hCPE, input_frame, &tdm_SM_or_LRTD_Pri, &tdm_ratio_idx_SM ); + tdm_ratio_idx = stereo_tdm_ener_analysis( + ivas_format, + hCPE, input_frame, &tdm_SM_or_LRTD_Pri, &tdm_ratio_idx_SM ); /* Compute the downmix signal based on the ratio index */ stereo_tdm_downmix( hCPE->hStereoTD, sts[0]->input, sts[1]->input, input_frame, tdm_ratio_idx, ( ( hCPE->hStereoTD->tdm_LRTD_flag == 0 ) ? tdm_SM_or_LRTD_Pri : 0 ), tdm_ratio_idx_SM ); @@ -364,6 +404,7 @@ ivas_error ivas_cpe_enc( /* signal the bitrate for BW selection in the SCh */ sts[0]->bits_frame_channel = 0; sts[1]->bits_frame_channel = (int16_t) ( hCPE->element_brate / FRAMES_PER_SEC ); + sts[1]->bits_frame_channel += (int16_t) ( hCPE->brate_surplus / FRAMES_PER_SEC ); if ( st_ivas->hQMetaData != NULL ) { sts[1]->bits_frame_channel -= st_ivas->hQMetaData->metadata_max_bits; @@ -488,7 +529,7 @@ ivas_error ivas_cpe_enc( if ( sts[0]->bwidth != sts[0]->last_bwidth || ( ( hCPE->last_element_brate != hCPE->element_brate || hCPE->last_element_mode != hCPE->element_mode ) && sts[0]->bwidth != sts[0]->max_bwidth ) ) { initMdctStereoEncData( hCPE->hStereoMdct, ivas_format, hCPE->element_mode, hCPE->element_brate, sts[0]->bwidth, 0, NULL, 0 ); - hCPE->hStereoMdct->isSBAStereoMode = ( ( ivas_format == SBA_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); + hCPE->hStereoMdct->isSBAStereoMode = ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); if ( hCPE->element_brate <= MAX_MDCT_ITD_BRATE && ivas_format == STEREO_FORMAT ) { @@ -518,7 +559,10 @@ ivas_error ivas_cpe_enc( { tdm_ol_pitch_comparison( hCPE, pitch_fr, voicing_fr ); - tdm_configure_enc( hCPE, Etot_last, tdm_SM_or_LRTD_Pri, tdm_ratio_idx, tdm_ratio_idx_SM, attack_flag[0], nb_bits_metadata ); + tdm_configure_enc( + ivas_format, + st_ivas->ism_mode, + hCPE, Etot_last, tdm_SM_or_LRTD_Pri, tdm_ratio_idx, tdm_ratio_idx_SM, attack_flag[0], nb_bits_metadata ); if ( hEncoderConfig->Opt_DTX_ON ) { @@ -550,6 +594,7 @@ ivas_error ivas_cpe_enc( * DFT Stereo parameters writing into the bitstream *----------------------------------------------------------------*/ + cpe_brate = 0; if ( hCPE->element_mode == IVAS_CPE_DFT ) { if ( hEncoderConfig->Opt_DTX_ON ) @@ -578,11 +623,14 @@ ivas_error ivas_cpe_enc( } /* Write stereo bitstream */ - if ( ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE && sts[0]->core_brate != SID_2k40 && sts[0]->core_brate != FRAME_NO_DATA ) + cpe_brate = st_ivas->hCPE[0]->element_brate; + + /* DFT stereo side bits */ + if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) && cpe_brate < MASA_STEREO_MIN_BITRATE && sts[0]->core_brate != SID_2k40 && sts[0]->core_brate != FRAME_NO_DATA ) { nb_bits = 0; /* Only mono downmix is transmitted in this case */ } - else if ( ivas_format == MASA_FORMAT && ( sts[0]->core_brate == SID_2k40 || sts[0]->core_brate == FRAME_NO_DATA ) ) + else if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) && ( sts[0]->core_brate == SID_2k40 || sts[0]->core_brate == FRAME_NO_DATA ) ) { nb_bits = hCPE->hMetaData->nb_bits_tot; } @@ -591,12 +639,18 @@ ivas_error ivas_cpe_enc( stereo_dft_enc_write_BS( hCPE, &nb_bits ); } - if ( !( ivas_format == MASA_FORMAT && ( sts[0]->core_brate == SID_2k40 || sts[0]->core_brate == FRAME_NO_DATA ) ) ) + /* Residual coding in MDCT domain */ + if ( !( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) && ( sts[0]->core_brate == SID_2k40 || sts[0]->core_brate == FRAME_NO_DATA ) ) ) { - /* Residual coding in MDCT domain */ - stereo_dft_enc_res( hCPE->hStereoDft, old_inp_12k8[1] + L_INP_MEM - STEREO_DFT_OVL_8k, hCPE->hMetaData, &nb_bits, (int16_t) ( ( hCPE->element_brate ) / FRAMES_PER_SEC - 0.8f * sts[0]->bits_frame_nominal - ( ( ivas_format == MASA_FORMAT ) ? nb_bits_metadata : 0 ) ) ); - } + int16_t max_bits = (int16_t) ( hCPE->element_brate / FRAMES_PER_SEC - 0.8f * sts[0]->bits_frame_nominal ); + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) + { + max_bits -= nb_bits_metadata; + max_bits += (int16_t) ( hCPE->brate_surplus / FRAMES_PER_SEC ); + } + stereo_dft_enc_res( hCPE->hStereoDft, old_inp_12k8[1] + L_INP_MEM - STEREO_DFT_OVL_8k, hCPE->hMetaData, &nb_bits, max_bits ); + } if ( sts[0]->core_brate == FRAME_NO_DATA || sts[0]->core_brate == SID_2k40 ) { assert( ( nb_bits <= ( ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS ) ) && "Stereo DFT CNG: bit budget is violated" ); @@ -611,8 +665,15 @@ ivas_error ivas_cpe_enc( /* subtract metadata bitbudget */ sts[0]->total_brate -= ( nb_bits_metadata * FRAMES_PER_SEC ); + + /* subtract bit-rate for combined format coding */ + if ( ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + sts[0]->total_brate += hCPE->brate_surplus; + } } + /*----------------------------------------------------------------* * Core Encoder *----------------------------------------------------------------*/ @@ -629,6 +690,11 @@ ivas_error ivas_cpe_enc( hCPE->last_element_brate = hCPE->element_brate; hCPE->last_element_mode = hCPE->element_mode; + if ( ivas_format == MASA_ISM_FORMAT ) + { + hCPE->element_brate = element_brate_ref; + } + if ( hCPE->element_mode == IVAS_CPE_MDCT && hCPE->hStereoMdct != NULL && hCPE->hStereoMdct->hItd != NULL ) { /* update input samples buffer */ @@ -672,7 +738,7 @@ ivas_error ivas_cpe_enc( dbgwrite( &n, 2, 1, input_frame, "res/TCA_idx_NCShift" ); dbgwrite( &n, 2, 1, input_frame, "res/TCA_idx_ica_gD" ); n = -1; - dbgwrite( &n, 2, 1, input_frame, "res/tdm_ratio_idx.enc" ); + // dbgwrite( &n, 2, 1, input_frame, "res/tdm_ratio_idx.enc" ); } else if ( hCPE->element_mode == IVAS_CPE_TD ) { @@ -689,7 +755,7 @@ ivas_error ivas_cpe_enc( else if ( hCPE->element_mode == IVAS_CPE_MDCT ) { n = -2; - dbgwrite( &n, 2, 1, input_frame, "res/tdm_ratio_idx.enc" ); + // dbgwrite( &n, 2, 1, input_frame, "res/tdm_ratio_idx.enc" ); } { @@ -762,13 +828,15 @@ ivas_error create_cpe_enc( hCPE->hFrontVad[0] = NULL; hCPE->hFrontVad[1] = NULL; + hCPE->brate_surplus = 0; + /*-----------------------------------------------------------------* * Input memory buffer: allocate and initialize *-----------------------------------------------------------------*/ for ( n = 0; n < CPE_CHANNELS; n++ ) { - if ( ivas_format == STEREO_FORMAT || ivas_format == MASA_FORMAT || ( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ) + if ( ivas_format == STEREO_FORMAT || ivas_format == MASA_FORMAT || ( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) || ivas_format == MASA_ISM_FORMAT ) { if ( ( hCPE->input_mem[n] = (float *) malloc( sizeof( float ) * NS2SA( input_Fs, STEREO_DFT_OVL_NS ) ) ) == NULL ) { @@ -812,6 +880,7 @@ ivas_error create_cpe_enc( hCPE->hMetaData->ind_list = st_ivas->ind_list_metadata; hCPE->hMetaData->ivas_ind_list_zero = &st_ivas->ind_list_metadata; hCPE->hMetaData->ivas_max_num_indices = &st_ivas->ivas_max_num_indices_metadata; + hCPE->hMetaData->st_ivas = st_ivas; reset_indices_enc( hCPE->hMetaData, st_ivas->ivas_max_num_indices_metadata ); } @@ -827,10 +896,12 @@ ivas_error create_cpe_enc( } copy_encoder_config( st_ivas, st, 1 ); + st->total_brate = hCPE->element_brate / ( st_ivas->nCPE > 1 ? 1 : CPE_CHANNELS ); /* dummy initialization for getting right pointers initialization of input buffers in init_coder_ace_plus() */ st->mct_chan_mode = MCT_CHAN_MODE_REGULAR; - if ( ( error = init_encoder( st, st_ivas, n, hEncoderConfig->var_SID_rate_flag, hEncoderConfig->interval_SID, 0, st_ivas->ism_mode ) ) != IVAS_ERR_OK ) + if ( ( error = init_encoder( st, st_ivas, n, hEncoderConfig->var_SID_rate_flag, hEncoderConfig->interval_SID, 0, + ISM_MODE_NONE ) ) != IVAS_ERR_OK ) { return error; } @@ -955,7 +1026,7 @@ ivas_error create_cpe_enc( hCPE->hStereoMdct->mdct_stereo_mode_cmdl = st_ivas->hEncoderConfig->mdct_stereo_mode_cmdl; #endif initMdctStereoEncData( hCPE->hStereoMdct, ivas_format, hCPE->element_mode, hCPE->element_brate, max_bwidth, 0, NULL, 1 ); - hCPE->hStereoMdct->isSBAStereoMode = ( ( ivas_format == SBA_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); + hCPE->hStereoMdct->isSBAStereoMode = ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && ( st_ivas->nchan_transport == 2 ) ); if ( hCPE->element_mode == IVAS_CPE_MDCT && element_brate <= MAX_MDCT_ITD_BRATE && ivas_format == STEREO_FORMAT ) { @@ -1066,3 +1137,60 @@ void destroy_cpe_enc( return; } + + +/*------------------------------------------------------------------------- + * stereo_mode_combined_format_enc() + * + * Set stereo format in a combined format + *-------------------------------------------------------------------------*/ + +static void stereo_mode_combined_format_enc( + const Encoder_Struct *st_ivas, /* i : encoder main structure */ + CPE_ENC_HANDLE hCPE /* i/o: CPE handle */ +) +{ + ENCODER_CONFIG_HANDLE hEncoderConfig; + int32_t element_brate_ref; + + hEncoderConfig = st_ivas->hEncoderConfig; + + if ( hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) + { + element_brate_ref = hCPE->element_brate; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && + ( ( hEncoderConfig->nchan_ism == 3 && hEncoderConfig->ivas_total_brate == IVAS_96k ) || + ( hEncoderConfig->nchan_ism == 4 && hEncoderConfig->ivas_total_brate == IVAS_128k ) ) ) + { + if ( hCPE->element_brate + hCPE->brate_surplus > IVAS_64k ) + { + st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt = 0; + } + else + { + st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt++; + st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt = min( st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt, OMASA_STEREO_SW_CNT_MAX ); + } + + if ( st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt < OMASA_STEREO_SW_CNT_MAX ) + { + hCPE->element_mode = IVAS_CPE_MDCT; + hCPE->element_brate = IVAS_64k; + hCPE->brate_surplus -= ( hCPE->element_brate - element_brate_ref ); + } + + /* write OMASA stereo mode signalling */ + if ( hCPE->element_mode == IVAS_CPE_MDCT ) + { + push_indice( hCPE->hCoreCoder[0]->hBstr, IND_SMODE_OMASA, 1, NBITS_ELEMENT_MODE ); + } + else + { + push_indice( hCPE->hCoreCoder[0]->hBstr, IND_SMODE_OMASA, 0, NBITS_ELEMENT_MODE ); + } + } + } + + return; +} diff --git a/lib_enc/ivas_decision_matrix_enc.c b/lib_enc/ivas_decision_matrix_enc.c index b160193ad3144dfadd7708640b915ff7b085770c..40c07944ecc492c446a9a543f5e807b26675f8dc 100644 --- a/lib_enc/ivas_decision_matrix_enc.c +++ b/lib_enc/ivas_decision_matrix_enc.c @@ -164,20 +164,6 @@ void ivas_decision_matrix_enc( /* select TCX core or HQ core using bits_frame_nominal to match the TCX configuration bitrate */ st->core = mdct_classifier( st, fft_buff, enerBuffer, st->bits_frame_nominal * FRAMES_PER_SEC ); } - -#ifndef FIX_TCX_LOWRATE_LIMITATION - /* Warning: TCX not available at low bitrates -> replace it by GSC */ - if ( st->core == TCX_20_CORE && st->total_brate < STEREO_TCX_MIN_RATE ) - { - st->core = ACELP_CORE; - st->coder_type = AUDIO; - st->sp_aud_decision2 = 0; - if ( st->low_rate_mode ) - { - st->coder_type = INACTIVE; - } - } -#endif } /* do not allow TD stereo ACELP core -> DFT stereo TCX core switching as it is on the WC complexity path */ @@ -223,24 +209,8 @@ void ivas_decision_matrix_enc( st->core = HQ_CORE; } } - -#ifndef FIX_TCX_LOWRATE_LIMITATION - /* TCX not available at low bitrates -> replace it by GSC */ - if ( st->core == TCX_20_CORE && st->total_brate < STEREO_TCX_MIN_RATE ) - { - st->core = ACELP_CORE; - st->coder_type = AUDIO; - st->sp_aud_decision2 = 0; - - if ( st->low_rate_mode ) - { - st->coder_type = INACTIVE; - } - } -#endif #endif -#ifdef FIX_TCX_LOWRATE_LIMITATION /* TCX not available at low bitrates -> replace it by GSC */ if ( st->core == TCX_20_CORE && st->total_brate < STEREO_TCX_MIN_RATE ) { @@ -253,7 +223,6 @@ void ivas_decision_matrix_enc( st->coder_type = INACTIVE; } } -#endif /*---------------------------------------------------------------------* * Select ACELP and GSC extension layer @@ -438,7 +407,7 @@ void ivas_signaling_enc( * Write element mode info *--------------------------------------------------------------------------*/ - if ( st->element_mode >= IVAS_CPE_DFT && element_brate < MIN_BRATE_MDCT_STEREO && !MCT_flag ) /* note: in MCT, the MDCT stereo is used exclusively */ + if ( ( st->element_mode == IVAS_CPE_DFT || st->element_mode == IVAS_CPE_TD ) && !MCT_flag ) /* note: in MCT, the MDCT stereo is used exclusively */ { ind = st->element_mode - IVAS_CPE_DFT; push_indice( hBstr, IND_SMODE, ind, NBITS_ELEMENT_MODE ); @@ -453,12 +422,8 @@ void ivas_signaling_enc( { /* only WB is supported */ } -#ifdef ISM_FB else if ( ( element_brate < MIN_BRATE_FB_STEREO && !st->is_ism_format ) || ( element_brate < MIN_BRATE_FB_ISM && st->is_ism_format ) ) -#else - else if ( element_brate < MIN_BRATE_FB_STEREO ) -#endif { /* WB and SWB are supported */ ind = st->bwidth - WB; diff --git a/lib_enc/ivas_dirac_enc.c b/lib_enc/ivas_dirac_enc.c index 1a25541d313e2caf29de099c1b5e3c83fb594dee..3251e3040873d573045663768237b9b3c440f71f 100644 --- a/lib_enc/ivas_dirac_enc.c +++ b/lib_enc/ivas_dirac_enc.c @@ -159,6 +159,7 @@ ivas_error ivas_dirac_enc_open( } hDirAC->index_buffer_intensity = 0; + hDirAC->mono_frame_count = 0; st_ivas->hDirAC = hDirAC; st_ivas->hSpar->enc_param_start_band = st_ivas->hDirAC->hConfig->enc_param_start_band; @@ -274,6 +275,7 @@ void ivas_dirac_enc_close( return; } + /*------------------------------------------------------------------------- * ivas_dirac_enc() * @@ -285,7 +287,7 @@ void ivas_dirac_enc( DIRAC_ENC_HANDLE hDirAC, /* i/o: encoder DirAC handle */ IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ BSTR_ENC_HANDLE hMetaData, /* i/o: Metadata bitstream handle */ - float data_f[][L_FRAME48k], /* i/o: SBA channels */ + float *data_f[], /* i/o: SBA channels */ float **ppIn_FR_real, /* o : real freq domain values */ float **ppIn_FR_imag, /* o : imag freq domain values */ const int16_t input_frame, /* i : input frame length */ @@ -299,7 +301,7 @@ void ivas_dirac_enc( int16_t i, j, b, i_ts; push_wmops( "ivas_dirac_enc" ); - ivas_dirac_param_est_enc( hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, ivas_format, hodirac_flag, hodirac_flag ? HOA2_CHANNELS : FOA_CHANNELS ); + ivas_dirac_param_est_enc( hDirAC, hQMetaData->q_direction, hQMetaData->useLowerRes, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, ivas_format, hodirac_flag, hodirac_flag ? HOA2_CHANNELS : FOA_CHANNELS, &( hDirAC->mono_frame_count ), &( hQMetaData->dirac_mono_flag ) ); if ( hQMetaData->q_direction->cfg.nbands > 0 ) { @@ -310,6 +312,20 @@ void ivas_dirac_enc( /* WB 4TC mode bit : disable for now*/ push_next_indice( hMetaData, 0, 1 ); + /* Set Energy Ratio to 0.0 if the mono flag is set, before the metadata is encoded */ + if ( hQMetaData->dirac_mono_flag ) + { + for ( b = hQMetaData->q_direction->cfg.start_band; b < hQMetaData->q_direction->cfg.nbands; b++ ) + { + for ( i_ts = 0; i_ts < ( ( dtx_vad == 1 ) ? hQMetaData->q_direction[0].cfg.nblocks : 1 ); i_ts++ ) + { + hQMetaData->q_direction[0].band_data[b].energy_ratio[i_ts] = 0.0f; + hQMetaData->q_direction[0].band_data[b].azimuth[i_ts] = 0.0f; + hQMetaData->q_direction[0].band_data[b].elevation[i_ts] = 0.0f; + } + } + } + ivas_qmetadata_enc_encode( hMetaData, hQMetaData, hodirac_flag ); } else @@ -388,6 +404,120 @@ void ivas_dirac_enc( return; } + +/*------------------------------------------------------------------------- + * ivas_dirac_get_mono_flag() + * + * + *-------------------------------------------------------------------------*/ + +static int16_t ivas_dirac_get_mono_flag( + const int16_t *band_grouping, /* i : Band grouping for estimation */ + float Cldfb_RealBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], /* i : Real part of input signal */ + float Cldfb_ImagBuffer[DIRAC_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], /* i : Imag part of input signal */ + const int16_t nchan_ana, /* i : number of analysis channels */ + int16_t *mono_frame_count ) /* i/o : current number of mono frames count */ +{ + int16_t brange[2]; + int16_t i, j, ch_idx; + float other_ch_band_power; + float W_band_power; + int16_t any_mc_band = 0; + int16_t any_mono_band = 0; + int16_t local_mono_flag = 0; + float W_band_power_norm; + float threshold = 0; + + /* Banded Power Calculations */ + for ( i = 0; i < DIRAC_MAX_NBANDS; i++ ) + { + W_band_power = 0; + other_ch_band_power = 0; + + brange[0] = band_grouping[i]; + brange[1] = band_grouping[i + 1]; + + /* Loop over the W channel bins to calculate the power in the band */ + for ( j = brange[0]; j < brange[1]; j++ ) + { + W_band_power += ( Cldfb_RealBuffer[0][j] * Cldfb_RealBuffer[0][j] ) + ( Cldfb_ImagBuffer[0][j] * Cldfb_ImagBuffer[0][j] ); + } + + /* Loop over the other channels and bins to calculate the power in the band */ + for ( ch_idx = 1; ch_idx < nchan_ana; ch_idx++ ) + { + /* abs()^2 */ + for ( j = brange[0]; j < brange[1]; j++ ) + { + other_ch_band_power += ( Cldfb_RealBuffer[ch_idx][j] * Cldfb_RealBuffer[ch_idx][j] ) + ( Cldfb_ImagBuffer[ch_idx][j] * Cldfb_ImagBuffer[ch_idx][j] ); + } + } + if ( other_ch_band_power < EPSILON ) + { + if ( W_band_power > DIRAC_MONO_THRESH_SILENCE ) + { + any_mono_band = 1; + } + } + else + { + if ( ( W_band_power > DIRAC_MONO_THRESH_SILENCE ) || ( other_ch_band_power > DIRAC_MONO_THRESH_SILENCE ) ) + { + W_band_power_norm = min( W_band_power, DIRAC_MONO_NORM_FACTOR ) * DIRAC_MONO_ONE_ON_NORM_FACTOR; + threshold = max( W_band_power_norm * DIRAC_MONO_MAX_THRESH, DIRAC_MONO_MIN_THRESH ); + if ( W_band_power / other_ch_band_power > threshold ) + { + any_mono_band = 1; + } + else + { + any_mc_band = 1; + } + } + } + } + /* If any band contains multi-channel content it's not mono */ + if ( any_mc_band ) + { + local_mono_flag = 0; + } + else + { + /* If any band contains mono content the frame is mono. */ + if ( any_mono_band ) + { + local_mono_flag = 1; + } + } + /* Hysteresis - only after DIRAC_MONO_FRAME_THRESH frames on mono will the actual mono flag be set */ + if ( local_mono_flag ) + { + if ( *mono_frame_count < DIRAC_MONO_FRAME_THRESH ) + { + ( *mono_frame_count )++; + } + } + else + { + /* Instantaneously disable actual mono flag if multi-channel content is observed */ + if ( any_mc_band ) + { + *mono_frame_count = 0; + } + } + + /* Final check if there has been mono for DIRAC_MONO_FRAME_THRESH number of frames than the content is declared mono */ + if ( *mono_frame_count == DIRAC_MONO_FRAME_THRESH ) + { + return 1; + } + else + { + return 0; + } +} + + /*------------------------------------------------------------------------- * computeReferencePower_enc() * @@ -401,20 +531,27 @@ void computeReferencePower_enc( float *reference_power, /* o : Estimated power */ const int16_t enc_param_start_band, /* i : first band to process */ const int16_t num_freq_bands, /* i : Number of frequency bands */ - const IVAS_FORMAT ivas_format, /* i : ivas_format */ + const IVAS_FORMAT ivas_format, /* i : ivas_format */ int16_t ref_power_w, /* i : use 0 if hodirac is enabled */ - const int16_t nchan_ana /* i : number of analysis channels */ + const int16_t nchan_ana, /* i : number of analysis channels */ + int16_t *mono_frame_count, /* i/o: Mono Frame Count */ + int16_t *dirac_mono_flag /* i/o: Mono Flag */ ) { int16_t brange[2]; int16_t ch_idx, i, j; - float reference_power_W[DIRAC_MAX_NBANDS]; + if ( dirac_mono_flag != NULL ) + { + *dirac_mono_flag = ivas_dirac_get_mono_flag( band_grouping, Cldfb_RealBuffer, Cldfb_ImagBuffer, nchan_ana, mono_frame_count ); + } + for ( i = 0; i < num_freq_bands; i++ ) { brange[0] = band_grouping[i + enc_param_start_band]; brange[1] = band_grouping[i + enc_param_start_band + 1]; + reference_power[i] = 0; reference_power_W[i] = 0; @@ -435,6 +572,7 @@ void computeReferencePower_enc( } v_multc( reference_power, 0.5f, reference_power, num_freq_bands ); + if ( ivas_format == SBA_FORMAT && ref_power_w == 1 ) { for ( i = 0; i < num_freq_bands; i++ ) @@ -457,13 +595,15 @@ void ivas_dirac_param_est_enc( DIRAC_ENC_HANDLE hDirAC, IVAS_QDIRECTION *q_direction, const uint8_t useLowerRes, - float data_f[][L_FRAME48k], + float *data_f[], float **pp_fr_real, float **pp_fr_imag, const int16_t input_frame, const IVAS_FORMAT ivas_format, const int16_t hodirac_flag, - const int16_t nchan_fb_in ) + const int16_t nchan_fb_in, + int16_t *mono_frame_count, + int16_t *dirac_mono_flag ) { int16_t i, d, ts, index, l_ts, num_freq_bands; int16_t band_m_idx, block_m_idx; @@ -481,9 +621,7 @@ void ivas_dirac_param_est_enc( float norm_tmp; int16_t mrange[2]; int16_t num_blocks; - float reference_power[CLDFB_NO_COL_MAX][DIRAC_NO_FB_BANDS_MAX]; - float azi_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; float ele_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; float diff_secs[2 * DIRAC_MAX_ANA_CHANS * DIRAC_MAX_NBANDS] = { 0 }; @@ -516,7 +654,7 @@ void ivas_dirac_param_est_enc( /* Copy current frame to memory for delay compensation */ for ( i = 0; i < nchan_fb_in; i++ ) { - pcm_in[i] = &data_f[i][0]; + pcm_in[i] = data_f[i]; p_Cldfb_RealBuffer[i] = &Cldfb_RealBuffer[i][0]; p_Cldfb_ImagBuffer[i] = &Cldfb_ImagBuffer[i][0]; } @@ -554,7 +692,6 @@ void ivas_dirac_param_est_enc( assert( pp_fr_real ); assert( pp_fr_imag ); #endif - for ( i = 0; i < nchan_fb_in; i++ ) { mvr2r( &pp_fr_real[i][ts * l_ts], Cldfb_RealBuffer[i], l_ts ); @@ -571,7 +708,9 @@ void ivas_dirac_param_est_enc( num_freq_bands, ivas_format, hodirac_flag ? 0 : 1, - FOA_CHANNELS ); + FOA_CHANNELS, + mono_frame_count, + dirac_mono_flag ); computeIntensityVector_enc( hDirAC, diff --git a/lib_enc/ivas_enc.c b/lib_enc/ivas_enc.c index 854354ceb8f1b2c2c1214d6be98ecc36dd7295c7..8096199382060275a91c8b75937c913e57536308 100644 --- a/lib_enc/ivas_enc.c +++ b/lib_enc/ivas_enc.c @@ -61,8 +61,8 @@ ivas_error ivas_enc( ENCODER_CONFIG_HANDLE hEncoderConfig; BSTR_ENC_HANDLE hMetaData; Encoder_State *st; /* used for bitstream handling */ - int16_t nb_bits_metadata[MAX_SCE]; - float data_f[MAX_INPUT_CHANNELS][L_FRAME48k]; + int16_t nb_bits_metadata[MAX_SCE + 1]; + float *data_f[MAX_INPUT_CHANNELS + MAX_NUM_OBJECTS]; int32_t ivas_total_brate; ivas_error error; error = IVAS_ERR_OK; @@ -83,12 +83,17 @@ ivas_error ivas_enc( input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); n_samples_chan = n_samples / nchan_inp; - set_s( nb_bits_metadata, 0, MAX_SCE ); + set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); /*----------------------------------------------------------------* * convert 'short' input data to 'float' *----------------------------------------------------------------*/ + for ( n = 0; n < MAX_INPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) + { + data_f[n] = st_ivas->p_data_f[n]; + } + n = 0; while ( n < nchan_inp ) { @@ -177,7 +182,8 @@ ivas_error ivas_enc( ivas_param_ism_stereo_dmx( st_ivas, data_f, input_frame ); /* Core coding of Stereo DMX */ - if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, nb_bits_metadata ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, nb_bits_metadata, + 0 ) ) != IVAS_ERR_OK ) { return error; } @@ -185,7 +191,8 @@ ivas_error ivas_enc( else if ( st_ivas->ism_mode == ISM_MODE_DISC ) { /* Analysis, decision about bitrates per channel & core coding */ - if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, nb_bits_metadata ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, nb_bits_metadata, + 0 ) ) != IVAS_ERR_OK ) { return error; } @@ -220,12 +227,14 @@ ivas_error ivas_enc( if ( st_ivas->hQMetaData != NULL && ivas_format != SBA_FORMAT ) { ivas_masa_estimate_energy( st_ivas->hMasa, data_f, input_frame, st_ivas->nchan_transport ); /* energy-estimation uses TF-resolution: 4x24 */ + if ( ( error = ivas_masa_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { return error; } if ( ( error = ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, - ivas_total_brate, hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1 ) ) != IVAS_ERR_OK ) + ivas_total_brate, hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1, + ISM_MODE_NONE, -1, NULL, -1, NULL, 0, 0 ) ) != IVAS_ERR_OK ) { return error; } @@ -266,20 +275,234 @@ ivas_error ivas_enc( } } } + else if ( ivas_format == MASA_ISM_FORMAT ) + { + float *data_separated_object; + int16_t idx_separated_object; + int16_t flag_omasa_ener_brate; + + flag_omasa_ener_brate = 0; + + /* Stereo transport is used also with monoMASA, duplicate mono if monoMASA */ + if ( ( st_ivas->hEncoderConfig->nchan_inp - hEncoderConfig->nchan_ism ) == 1 ) + { + v_multc( data_f[hEncoderConfig->nchan_ism], 1.0f / SQRT2, data_f[hEncoderConfig->nchan_ism], input_frame ); + mvr2r( data_f[hEncoderConfig->nchan_ism], data_f[hEncoderConfig->nchan_ism + 1], input_frame ); + } + + /* Estimate TF-tile energy for the input MASA stream */ + ivas_masa_estimate_energy( st_ivas->hMasa, &( data_f[hEncoderConfig->nchan_ism] ), input_frame, st_ivas->nchan_transport ); + + if ( ( error = ivas_omasa_enc_config( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + set_s( nb_bits_metadata, 0, MAX_SCE + 1 ); + idx_separated_object = 0; + data_separated_object = data_f[hEncoderConfig->nchan_ism + CPE_CHANNELS]; + + /* put audio object data in SCE's */ + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + /* Estimate MASA parameters for the objects */ + ivas_omasa_enc( st_ivas->hOMasa, st_ivas->hMasa, st_ivas->hIsmMetaData, data_f, input_frame, st_ivas->nchan_transport, hEncoderConfig->nchan_ism, st_ivas->ism_mode, data_separated_object, &idx_separated_object ); + } + + /* Encode ISMs transport channels */ + n = 0; + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + if ( ( error = ivas_sce_enc( st_ivas, 0, data_separated_object, input_frame, nb_bits_metadata[1] ) ) != IVAS_ERR_OK ) /* there are no metadata bits in SCE in this mode */ + { + return error; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + if ( ( error = ivas_ism_enc( st_ivas, &data_separated_object, input_frame, &nb_bits_metadata[1], 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + flag_omasa_ener_brate = ivas_omasa_ener_brate( st_ivas->hEncoderConfig->nchan_ism, ivas_total_brate, data_f, input_frame ); + + /* Analysis, decision about bitrates per channel & core coding */ + if ( ( error = ivas_ism_enc( st_ivas, data_f, input_frame, &nb_bits_metadata[1], flag_omasa_ener_brate ) ) != IVAS_ERR_OK ) + { + return error; + } + n = st_ivas->hEncoderConfig->nchan_ism; + } + + hMetaData = st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData; + + if ( st_ivas->nSCE > 0 ) + { + /* update pointer to the buffer of indices (ISM indices were alredy written) */ + hMetaData->ind_list = st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData->ind_list + st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData->nb_ind_tot; + st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->ind_list = st_ivas->hSCE[st_ivas->nSCE - 1]->hCoreCoder[0]->hBstr->ind_list + st_ivas->hSCE[st_ivas->nSCE - 1]->hCoreCoder[0]->hBstr->nb_ind_tot; + } + + /* Encode MASA parameters and write MASA metadata bitstream */ + if ( ( error = ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, nb_bits_metadata, st_ivas->nchan_transport, ivas_format, ivas_total_brate, st_ivas->hEncoderConfig->Opt_DTX_ON, st_ivas->nchan_transport == 2 ? st_ivas->hCPE[0]->element_mode : -1, + st_ivas->ism_mode, hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, idx_separated_object, st_ivas->hOMasa, st_ivas->hIsmMetaData[0]->ism_imp, flag_omasa_ener_brate ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Configuration of combined-format bit-budget distribution */ +#ifdef DEBUG_MODE_INFO + ivas_set_surplus_brate_enc( st_ivas, nb_bits_metadata ); +#else + ivas_set_surplus_brate_enc( st_ivas ); +#endif + + /* Encode MASA transport channels */ + if ( ( ivas_cpe_enc( st_ivas, 0, data_f[n], data_f[n + 1], input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( ivas_format == SBA_ISM_FORMAT ) + { + + ivas_osba_enc_reconfig( st_ivas ); + + /* Analyze objects and determine needed audio signals */ + ivas_osba_enc( st_ivas->hOSba, st_ivas->hIsmMetaData, data_f, input_frame, hEncoderConfig->nchan_ism, st_ivas->ism_mode, st_ivas->sba_analysis_order, + hEncoderConfig->input_Fs ); + + if ( st_ivas->ism_mode == ISM_MODE_NONE ) + { + if ( st_ivas->nchan_transport == 1 ) + { + st = st_ivas->hSCE[st_ivas->nSCE - 1]->hCoreCoder[0]; + hMetaData = st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData; + } + else + { + st = st_ivas->hCPE[0]->hCoreCoder[0]; + hMetaData = st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData; + } + + if ( st_ivas->hEncoderConfig->ivas_total_brate < IVAS_24k4 ) + { + /* Write SBA planar flag */ + push_indice( st->hBstr, IND_SMODE, hEncoderConfig->sba_planar, SBA_PLANAR_BITS ); + + /* hack to indicate OSBA bitstream at VLBR */ + push_indice( st->hBstr, IND_SMODE, 0, SBA_ORDER_BITS ); + } + else + { + /* Write SBA order */ + push_indice( st->hBstr, IND_SMODE, hEncoderConfig->sba_order, SBA_ORDER_BITS ); + } + + /* write the number of objects in ISM_SBA format*/ + push_next_indice( hMetaData, hEncoderConfig->nchan_ism - 1, NO_BITS_MASA_ISM_NO_OBJ ); + + /* SBA metadata encoding and SBA metadata bitstream writing */ + if ( ( error = ivas_spar_enc( st_ivas, data_f, input_frame, nb_bits_metadata, hMetaData ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* core-coding of transport channels */ + if ( st_ivas->nSCE == 1 ) + { + if ( ( error = ivas_sce_enc( st_ivas, 0, data_f[0], input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->nCPE == 1 ) /* Stereo DMX */ + { + if ( ( error = ivas_cpe_enc( st_ivas, 0, data_f[0], data_f[1], input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->nCPE > 1 ) /* FOA/HOA format */ + { + if ( ( error = ivas_mct_enc( st_ivas, data_f, input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else + { + + n = hEncoderConfig->nchan_ism; + st = st_ivas->hCPE[0]->hCoreCoder[0]; + hMetaData = st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData; + + if ( hEncoderConfig->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode != ISM_MODE_NONE ) + { + /* write the number of objects in ISM_SBA format*/ + push_next_indice( hMetaData, hEncoderConfig->nchan_ism - 1, NO_BITS_MASA_ISM_NO_OBJ ); + } + + if ( ( error = ivas_ism_metadata_enc( &st_ivas->hEncoderConfig->ivas_total_brate, n, st_ivas->hEncoderConfig->nchan_ism, st_ivas->hIsmMetaData, NULL, hMetaData, &nb_bits_metadata[1], 0, st_ivas->ism_mode, NULL, st_ivas->hEncoderConfig->ism_extended_metadata_flag, -1, 0, NULL, st->ini_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Write SBA planar flag */ + push_indice( st->hBstr, IND_SMODE, hEncoderConfig->sba_planar, SBA_PLANAR_BITS ); + + /* Write SBA order */ + push_indice( st->hBstr, IND_SMODE, hEncoderConfig->sba_order, SBA_ORDER_BITS ); + + /* SBA metadata encoding and SBA metadata bitstream writing */ + if ( ( error = ivas_spar_enc( st_ivas, &data_f[n], input_frame, nb_bits_metadata, hMetaData ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* get SBA TCs */ + ivas_sba_getTCs( &data_f[n], st_ivas, input_frame ); + + /* encode SBA transport channels */ + if ( st_ivas->nchan_transport == 1 ) + { + if ( ( error = ivas_sce_enc( st_ivas, hEncoderConfig->nchan_ism, data_f[n], input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->nCPE == 1 ) /* Stereo DMX */ + { + if ( ( error = ivas_cpe_enc( st_ivas, 0, data_f[n], data_f[n + 1], input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->nCPE > 1 ) /* FOA/HOA format */ + { + if ( ( error = ivas_mct_enc( st_ivas, data_f, input_frame, nb_bits_metadata[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + } else if ( ivas_format == MC_FORMAT ) { /* select MC format mode; write MC LS setup; reconfigure the MC format encoder */ - if ( ( ivas_mc_enc_config( st_ivas ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_mc_enc_config( st_ivas ) ) != IVAS_ERR_OK ) { return error; } hMetaData = ( st_ivas->nSCE > 0 ) ? st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData : st_ivas->hCPE[st_ivas->nCPE - 1]->hMetaData; -#ifdef FIX_572_LFE_LPF_ENC /* LFE low pass filter */ ivas_lfe_lpf_enc_apply( st_ivas->hLfeLpf, data_f[LFE_CHANNEL], input_frame ); -#endif /* LFE channel encoder */ if ( st_ivas->mc_mode == MC_MODE_MCT ) @@ -338,7 +561,10 @@ ivas_error ivas_enc( ivas_mcmasa_enc( st_ivas->hMcMasa, st_ivas->hQMetaData, st_ivas->hMasa, data_f, input_frame, st_ivas->nchan_transport, nchan_inp ); - if ( ( error = ivas_masa_encode( st_ivas->hMasa, st_ivas->hQMetaData, hMetaData, &nb_bits_metadata[0], st_ivas->nchan_transport, ivas_format, ivas_total_brate, 0, -1 ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_masa_encode( 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 ) { return error; } diff --git a/lib_enc/ivas_enc_cov_handler.c b/lib_enc/ivas_enc_cov_handler.c index fcf2efc6c293b5e8fd24ec16342dabff6ea2e153..3ecb96c31fabdaf1f66254c81bf049a2c138a699 100644 --- a/lib_enc/ivas_enc_cov_handler.c +++ b/lib_enc/ivas_enc_cov_handler.c @@ -107,6 +107,9 @@ ivas_error ivas_spar_covar_enc_open( hCovState->num_bins = (int16_t) ( input_Fs / FRAMES_PER_SEC ); hCovState->prior_dtx_present = 0; + set_zero( hCovState->bb_var_lt, FOA_CHANNELS ); + hCovState->prior_var_flag = -1; + *hCovEnc = hCovState; return error; @@ -143,6 +146,118 @@ void ivas_spar_covar_enc_close( } +/*-----------------------------------------------------------------------------------------* + * Function ivas_spar_get_activeW_flag() + * + * + *-----------------------------------------------------------------------------------------*/ + +static int16_t ivas_spar_get_activeW_flag( + ivas_enc_cov_handler_state_t *hCovEnc, + float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], + float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], + const int16_t dtx_vad, + const int16_t nchan_inp, + const int16_t nchan_transport, + int16_t *res_ind, + const int16_t *dmx_order ) +{ + int16_t b, ch, num_bands, num_chs, activeW_flag; + float bb_var[FOA_CHANNELS], sm_fact, side_ch_var, en_ratio; + num_chs = min( nchan_inp, FOA_CHANNELS ); + num_bands = ivas_get_num_bands_from_bw_idx( SPAR_CONFIG_BW ); + + set_zero( bb_var, FOA_CHANNELS ); + + if ( dtx_vad == 1 ) + { + for ( ch = 0; ch < num_chs; ch++ ) + { + for ( b = 0; b < num_bands; b++ ) + { + bb_var[ch] += cov_real[ch][ch][b]; + } + } + } + else + { + for ( ch = 0; ch < num_chs; ch++ ) + { + for ( b = 0; b < num_bands; b++ ) + { + bb_var[ch] += cov_dtx_real[ch][ch][b]; + } + } + } + + if ( hCovEnc->prior_var_flag == -1 ) + { + for ( ch = 0; ch < num_chs; ch++ ) + { + hCovEnc->bb_var_lt[ch] = bb_var[ch]; + } + } + else + { + sm_fact = 0.5f; + for ( ch = 0; ch < num_chs; ch++ ) + { + hCovEnc->bb_var_lt[ch] = sm_fact * hCovEnc->bb_var_lt[ch] + ( 1 - sm_fact ) * bb_var[ch]; + } + } + + side_ch_var = 0.0f; + for ( ch = nchan_transport; ch < num_chs; ch++ ) + { + side_ch_var += hCovEnc->bb_var_lt[dmx_order[ch]]; + } + + if ( side_ch_var < ( IVAS_SPAR_SIDE_CH_DYN_ACTIVEW_THRESH * IVAS_SPAR_SIDE_CH_DYN_ACTIVEW_THRESH ) ) + { + activeW_flag = 0; + } + else + { + en_ratio = hCovEnc->bb_var_lt[0] / side_ch_var; + if ( en_ratio < ( IVAS_SPAR_DYN_ACTIVEW_THRESH * IVAS_SPAR_DYN_ACTIVEW_THRESH ) ) + { + activeW_flag = 1; + } + else + { + activeW_flag = 0; + } + } + + if ( activeW_flag ) + { + *res_ind = 0; + if ( nchan_transport == 2 ) + { + int16_t max_idx; + float max_val; + max_idx = nchan_transport; + max_val = hCovEnc->bb_var_lt[max_idx]; + for ( ch = nchan_transport + 1; ch < num_chs; ch++ ) + { + if ( hCovEnc->bb_var_lt[ch] > max_val ) + { + max_idx = ch; + max_val = hCovEnc->bb_var_lt[ch]; + } + } + *res_ind = max_idx; + } + else if ( nchan_transport == 3 ) + { + *res_ind = dmx_order[nchan_transport]; + } + } + + return activeW_flag; +} + + /*-----------------------------------------------------------------------------------------* * Function ivas_enc_cov_handler_process() * @@ -161,7 +276,14 @@ void ivas_enc_cov_handler_process( const int16_t num_ch, const int16_t dtx_vad, const int16_t transient_det[2], - const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH] ) + const int16_t HOA_md_ind[IVAS_SPAR_MAX_CH], + int16_t *res_ind, + const int16_t *remix_order, + int16_t *dyn_active_w_flag, + const int16_t nchan_transport, + const int16_t is_sba + +) { int16_t i, j; int16_t dtx_cov_flag; @@ -177,6 +299,19 @@ void ivas_enc_cov_handler_process( cov_real, HOA_md_ind ); + if ( is_sba ) + { + *res_ind = 0; + if ( nchan_transport > 1 && nchan_transport <= ( FOA_CHANNELS - 1 ) ) + { + *dyn_active_w_flag = ivas_spar_get_activeW_flag( hCovEnc, cov_real, cov_real, dtx_vad, num_ch, nchan_transport, res_ind, remix_order ); + } + else + { + *dyn_active_w_flag = 0; + } + } + #ifdef DEBUG_SPAR_WRITE_OUT_COV { static FILE *fid = 0; diff --git a/lib_enc/ivas_entropy_coder.c b/lib_enc/ivas_entropy_coder.c index 4f45d0cc7e108fc410691acc9a078329889e9292..741338fbf206a540a913b657ef666aa0ff63b4e6 100644 --- a/lib_enc/ivas_entropy_coder.c +++ b/lib_enc/ivas_entropy_coder.c @@ -379,36 +379,6 @@ int16_t ivas_arith_encode_cmplx_cell_array( } total_len += len; } -#ifdef SPAR_HOA_DBG - /*if ( 0 )*/ /*(pCell_dims[0].dim1 == 12)*/ - /* - { - idx = 0; - fprintf( stdout, "\n\n OLD/NEW: \n\n" ); - for ( i = 0; i < nB; i++ ) - { - len = ( cell_dim[i].dim1 * cell_dim[i].dim2 ); - fprintf( stdout, "Non-diff Band %d: \n", i ); - - for ( j = 0; j < len; j++ ) - { - fprintf( stdout, ">>%d: %d \n", idx, input[idx] ); - idx++; - } - } - idx = 0; - for ( i = 0; i < nB; i++ ) - { - len = ( cell_dim_diff[i].dim1 * cell_dim_diff[i].dim2 ); - fprintf( stdout, "Diff Band %d: \n", i ); - for ( j = 0; j < len; j++ ) - { - fprintf( stdout, ">>%d: %d\t %d\n", idx, input_old[idx], input_new[idx] ); - idx++; - } - } - }*/ -#endif arith_result = arith_encode_cell_array( cell_dim, hMetaData, nB, pArith_re, input, wc_strat_arith ); if ( arith_result < 0 ) diff --git a/lib_enc/ivas_init_enc.c b/lib_enc/ivas_init_enc.c index fdb562243c3d4586725a49bb6b542a424a9a4340..4a870d5977fee90a1d6e8b9a7c7d47da0f23292f 100644 --- a/lib_enc/ivas_init_enc.c +++ b/lib_enc/ivas_init_enc.c @@ -37,6 +37,7 @@ #include "prot.h" #include "ivas_prot.h" #include "ivas_stat_enc.h" +#include "ivas_rom_com.h" #ifdef DEBUGGING #include "debug.h" #endif @@ -83,6 +84,30 @@ void ivas_write_format( ind = 7; nBits += extra_bits; break; + case MASA_ISM_FORMAT: + if ( st_ivas->ism_mode == ISM_MODE_NONE ) + { + ind = 7; /* send MASA format */ + nBits += extra_bits; + } + else + { + ind = 10; + nBits += extra_bits + IVAS_COMBINED_FORMAT_SIGNALLING_BITS; + } + break; + case SBA_ISM_FORMAT: + if ( st_ivas->hEncoderConfig->ivas_total_brate < IVAS_24k4 ) + { + ind = 6; /* send SBA format */ + nBits += extra_bits; + } + else + { + ind = 11; /* 1011 */ + nBits += extra_bits + IVAS_COMBINED_FORMAT_SIGNALLING_BITS; + } + break; default: assert( !"Invalid format. Aborting." ); break; @@ -161,7 +186,6 @@ void ivas_write_format_sid( ind = SID_MASA_2TC; } break; - default: assert( !"Reserved SID format symbol written." ); break; @@ -203,7 +227,14 @@ int16_t getNumChanAnalysis( { n = st_ivas->hEncoderConfig->nchan_inp; } - + else if ( st_ivas->hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) + { + n = st_ivas->hEncoderConfig->nchan_inp; + } + else if ( st_ivas->hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) + { + n = st_ivas->hEncoderConfig->nchan_ism + ( st_ivas->sba_analysis_order + 1 ) * ( st_ivas->sba_analysis_order + 1 ); + } return n; } @@ -314,10 +345,14 @@ void ivas_initialize_handles_enc( /* LFE handle */ st_ivas->hLFE = NULL; -#ifdef FIX_572_LFE_LPF_ENC /* LFE low pass filter handle */ st_ivas->hLfeLpf = NULL; -#endif + + /* Object MASA handle */ + st_ivas->hOMasa = NULL; + + /* OSBA handle */ + st_ivas->hOSba = NULL; return; } @@ -334,6 +369,7 @@ ivas_error ivas_init_encoder( ) { int16_t i, n; + int16_t nchan_inp_buff; int16_t sce_id, cpe_id; IVAS_FORMAT ivas_format; int32_t input_Fs, ivas_total_brate; @@ -359,6 +395,38 @@ ivas_error ivas_init_encoder( st_ivas->nchan_transport = -1; + /*-----------------------------------------------------------------* + * Allocate floating-point input audio buffers + *-----------------------------------------------------------------*/ + + nchan_inp_buff = hEncoderConfig->nchan_inp; + if ( ivas_format == MONO_FORMAT ) + { + nchan_inp_buff = 0; + } + else if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( hEncoderConfig->nchan_inp - hEncoderConfig->nchan_ism == 1 ) /* mono is duplicated in monoMASA */ + { + nchan_inp_buff++; + } + + nchan_inp_buff++; /* for *data_separated_object */ + } + + for ( n = 0; n < nchan_inp_buff; n++ ) + { + /* note: these are intra-frame heap memories */ + if ( ( st_ivas->p_data_f[n] = (float *) malloc( ( input_Fs / FRAMES_PER_SEC ) * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for floating-point input audio buffer!\n" ) ); + } + } + for ( ; n < MAX_INPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) + { + st_ivas->p_data_f[n] = NULL; + } + /*-----------------------------------------------------------------* * Allocate and initialize buffer of indices *-----------------------------------------------------------------*/ @@ -542,23 +610,167 @@ ivas_error ivas_init_encoder( } } } + else if ( ivas_format == MASA_ISM_FORMAT ) + { + int32_t element_brate_tmp[MAX_NUM_OBJECTS]; + int32_t ism_total_brate; + int16_t k; + + st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, hEncoderConfig->nchan_ism ); + st_ivas->nchan_transport = 2; + + if ( ( error = ivas_ism_metadata_enc_create( st_ivas, hEncoderConfig->nchan_ism, element_brate_tmp ) ) != IVAS_ERR_OK ) + { + return error; + } + + k = 0; + while ( k < SIZE_IVAS_BRATE_TBL && ivas_total_brate != ivas_brate_tbl[k] ) + { + k++; + } + + ism_total_brate = 0; + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + ism_total_brate += sep_object_brate[k - 2][st_ivas->nSCE - 1]; + if ( ( error = create_sce_enc( st_ivas, sce_id, sep_object_brate[k - 2][st_ivas->nSCE - 1] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = ivas_masa_enc_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + if ( ( error = ivas_omasa_enc_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ivas_total_brate - ism_total_brate >= MIN_BRATE_MDCT_STEREO ) + { + st_ivas->hEncoderConfig->element_mode_init = IVAS_CPE_MDCT; + } + else + { + st_ivas->hEncoderConfig->element_mode_init = IVAS_CPE_DFT; + } + + if ( ( error = create_cpe_enc( st_ivas, 0, ivas_total_brate - ism_total_brate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( ivas_format == SBA_ISM_FORMAT ) + { + int32_t element_brate_tmp[MAX_NUM_OBJECTS]; + st_ivas->ism_mode = ISM_MODE_NONE; + + if ( ivas_total_brate >= IVAS_256k ) + { + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + } + + if ( ( error = ivas_ism_metadata_enc_create( st_ivas, hEncoderConfig->nchan_ism, element_brate_tmp ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* allocate and initialize SBA handles */ + if ( ( error = ivas_qmetadata_open( &( st_ivas->hQMetaData ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, st_ivas->hEncoderConfig->sba_order ); + + if ( ( error = ivas_spar_enc_open( st_ivas, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = ivas_dirac_enc_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode == ISM_MODE_NONE ) + { + sce_id = 0; + /* allocate and initialize SBA core-coders */ + if ( st_ivas->nchan_transport == 1 ) + { + + if ( ( error = create_sce_enc( st_ivas, sce_id, ivas_total_brate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + for ( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + if ( ( error = create_cpe_enc( st_ivas, cpe_id, ( ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( st_ivas->nCPE > 1 ) + { + if ( ( error = create_mct_enc( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else + { + /* allocate and initialize MCT core coder */ + + st_ivas->nCPE += ( st_ivas->hEncoderConfig->nchan_ism + 1 ) >> 1; + + for ( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) + { + if ( ( error = create_cpe_enc( st_ivas, cpe_id, ( ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ( error = create_mct_enc( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( ( error = ivas_osba_enc_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } else if ( ivas_format == MC_FORMAT ) { st_ivas->mc_mode = ivas_mc_mode_select( hEncoderConfig->mc_input_setup, ivas_total_brate ); - hEncoderConfig->nchan_inp = ivas_mc_ls_setup_get_num_channels( hEncoderConfig->mc_input_setup ); - -#ifdef FIX_572_LFE_LPF_ENC if ( ( error = ivas_create_lfe_lpf_enc( &st_ivas->hLfeLpf, hEncoderConfig->input_Fs ) ) != IVAS_ERR_OK ) { return error; } -#endif if ( st_ivas->mc_mode == MC_MODE_MCT ) { st_ivas->nSCE = 0; - st_ivas->nCPE = hEncoderConfig->nchan_inp / 2; + st_ivas->nCPE = hEncoderConfig->nchan_inp / CPE_CHANNELS; for ( cpe_id = 0; cpe_id < st_ivas->nCPE; cpe_id++ ) { @@ -922,7 +1134,7 @@ void ivas_destroy_enc( } /* ISM metadata handles */ - ivas_ism_metadata_close( st_ivas->hIsmMetaData ); + ivas_ism_metadata_close( st_ivas->hIsmMetaData, 0 ); /* ISM DTX Handle */ if ( st_ivas->hISMDTX != NULL ) @@ -956,10 +1168,8 @@ void ivas_destroy_enc( /* LFE handle */ ivas_lfe_enc_close( &( st_ivas->hLFE ) ); -#ifdef FIX_572_LFE_LPF_ENC /* LFE low pass filter state */ ivas_lfe_lpf_enc_close( &( st_ivas->hLfeLpf ) ); -#endif /* Param-Upmix MC handle */ ivas_mc_paramupmix_enc_close( &( st_ivas->hMCParamUpmix ), st_ivas->hEncoderConfig->input_Fs ); @@ -970,6 +1180,12 @@ void ivas_destroy_enc( /* Multi-channel MASA handle */ ivas_mcmasa_enc_close( &( st_ivas->hMcMasa ), st_ivas->hEncoderConfig->input_Fs ); + /* OMASA handle */ + ivas_omasa_enc_close( &( st_ivas->hOMasa ) ); + + /* OSBA handle */ + ivas_osba_enc_close( &( st_ivas->hOSba ) ); + /* Stereo downmix for EVS encoder handle */ stereo_dmx_evs_close_encoder( &( st_ivas->hStereoDmxEVS ) ); @@ -991,6 +1207,16 @@ void ivas_destroy_enc( free( st_ivas->ind_list_metadata ); } + /* floating-point input audio buffers */ + for ( n = 0; n < MAX_INPUT_CHANNELS + MAX_NUM_OBJECTS; n++ ) + { + if ( st_ivas->p_data_f[n] != NULL ) + { + free( st_ivas->p_data_f[n] ); + st_ivas->p_data_f[n] = NULL; + } + } + /* main IVAS handle */ free( st_ivas ); diff --git a/lib_enc/ivas_ism_dtx_enc.c b/lib_enc/ivas_ism_dtx_enc.c index b9272ad2453a67d0d8928ecc269bbca03acbbd1b..c502bedf6cd299161e7fe9c45fb9729ec8263f07 100644 --- a/lib_enc/ivas_ism_dtx_enc.c +++ b/lib_enc/ivas_ism_dtx_enc.c @@ -312,7 +312,6 @@ void ivas_ism_get_sce_id_dtx( SCE_ENC_HANDLE hSCE[MAX_SCE], /* i/o: SCE encoder structure */ const int16_t nchan_transport, /* i : number of transport channels */ const int16_t input_frame /* i : input frame length per channel */ - ) { float tmp_energy[MAX_NUM_OBJECTS]; diff --git a/lib_enc/ivas_ism_enc.c b/lib_enc/ivas_ism_enc.c index 558455f017ce43db2b4cdf4cf1bdfadd0c87bf86..35878e58489cfecc09fa579ff602f333e7f0abce 100644 --- a/lib_enc/ivas_ism_enc.c +++ b/lib_enc/ivas_ism_enc.c @@ -49,10 +49,11 @@ *-------------------------------------------------------------------*/ ivas_error ivas_ism_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data[MAX_NUM_OBJECTS][L_FRAME48k], /* i : input signal */ - const int16_t input_frame, /* i : input frame length per channel */ - int16_t *nb_bits_metadata /* i : number of metadata bits */ + Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ + float *data[MAX_NUM_OBJECTS], /* i : input signal */ + 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 */ ) { SCE_ENC_HANDLE hSCE; @@ -88,6 +89,8 @@ ivas_error ivas_ism_enc( int16_t nchan_ism, dtx_flag, sid_flag, flag_noisy_speech; int16_t md_diff_flag[MAX_NUM_OBJECTS]; Encoder_State *prev_st = NULL; + int32_t ism_total_brate_ref, ism_total_brate; + int16_t i, nchan_transport_ism; ivas_error error; push_wmops( "ivas_ism_enc" ); @@ -105,12 +108,22 @@ ivas_error ivas_ism_enc( nchan_ism = st_ivas->hEncoderConfig->nchan_ism; set_s( md_diff_flag, 1, nchan_ism ); + nchan_transport_ism = st_ivas->nchan_transport; + if ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + nchan_transport_ism = 1; + nchan_ism = 1; + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + nchan_transport_ism = st_ivas->hEncoderConfig->nchan_ism; + } + /*------------------------------------------------------------------* * Preprocesing *-----------------------------------------------------------------*/ - /* in ISM format: st_ivas->nchan_transport = st_ivas->nSCE */ - for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) + for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) { hSCE = st_ivas->hSCE[sce_id]; st = hSCE->hCoreCoder[0]; @@ -222,11 +235,35 @@ ivas_error ivas_ism_enc( } else if ( st_ivas->ism_mode == ISM_MODE_PARAM ) { - ivas_ism_metadata_enc( st_ivas->hEncoderConfig->ivas_total_brate, nchan_ism, st_ivas->nchan_transport, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hSCE[st_ivas->nSCE - 1]->hMetaData, nb_bits_metadata, vad_flag, st_ivas->ism_mode, st_ivas->hDirAC->hParamIsm, st_ivas->hEncoderConfig->ism_extended_metadata_flag ); + ivas_ism_metadata_enc( &st_ivas->hEncoderConfig->ivas_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, st_ivas->hDirAC->hParamIsm, st_ivas->hEncoderConfig->ism_extended_metadata_flag, -1, 0, NULL, + st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame ); } else /* ISM_MODE_DISC */ { - ivas_ism_metadata_enc( st_ivas->hEncoderConfig->ivas_total_brate, nchan_ism, st_ivas->nchan_transport, 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 ); + if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + ism_total_brate = 0; + for ( i = 0; i < st_ivas->nSCE; i++ ) + { + ism_total_brate += st_ivas->hSCE[i]->element_brate; + } + } + else + { + ism_total_brate = st_ivas->hEncoderConfig->ivas_total_brate; + } + + ism_total_brate_ref = ism_total_brate; + + ivas_ism_metadata_enc( &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, st_ivas->hMasa != NULL ? st_ivas->hMasa->data.hOmasaData->lp_noise_CPE : 0, flag_omasa_ener_brate, st_ivas->hMasa != NULL ? &( st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt ) : NULL, + st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame ); + + if ( st_ivas->hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) + { + st_ivas->hCPE[0]->brate_surplus = ism_total_brate_ref - ism_total_brate; + } } update_last_metadata( nchan_ism, st_ivas->hIsmMetaData, md_diff_flag ); @@ -242,11 +279,17 @@ ivas_error ivas_ism_enc( ivas_write_format_sid( st_ivas->hEncoderConfig->ivas_format, IVAS_SCE, st->hBstr ); } + /*only metadata encoding is needed for this case*/ + if ( st_ivas->hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) + { + assert( st_ivas->ism_mode != ISM_MODE_NONE ); + return error; + } /*------------------------------------------------------------------* * CoreCoders encoding *-----------------------------------------------------------------*/ - for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) + for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) { hSCE = st_ivas->hSCE[sce_id]; st = hSCE->hCoreCoder[0]; @@ -310,7 +353,7 @@ ivas_error ivas_ism_enc( if ( dtx_flag ) { - for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) + for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) { if ( sce_id != st_ivas->hISMDTX->sce_id_dtx ) { @@ -328,7 +371,7 @@ ivas_error ivas_ism_enc( int16_t id, n; n = 0; - for ( sce_id = 0; sce_id < st_ivas->nchan_transport; sce_id++ ) + for ( sce_id = 0; sce_id < nchan_transport_ism; sce_id++ ) { if ( sce_id != st_ivas->hISMDTX->sce_id_dtx ) { @@ -405,7 +448,8 @@ ivas_error ivas_ism_enc_config( st_ivas->nSCE = st_ivas->nchan_transport; st_ivas->nCPE = 0; - if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hEncoderConfig->nchan_inp, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->hEncoderConfig->nchan_inp, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL, + 0 ) ) != IVAS_ERR_OK ) { return error; } diff --git a/lib_enc/ivas_ism_metadata_enc.c b/lib_enc/ivas_ism_metadata_enc.c index cbf3d945de498f5c3825081f70336b0cbd2f6109..1dabd090fc1deb5538c5d87a9c72bfe8589e8744 100644 --- a/lib_enc/ivas_ism_metadata_enc.c +++ b/lib_enc/ivas_ism_metadata_enc.c @@ -168,18 +168,21 @@ static void rate_ism_importance( *-------------------------------------------------------------------------*/ ivas_error ivas_ism_metadata_enc( - const int32_t ism_total_brate, /* i : ISM total bitrate */ - const int16_t nchan_ism, /* i : number of ISM channels */ - const int16_t nchan_transport, /* i : number of transport channels */ - ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ - SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */ - BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ - int16_t nb_bits_metadata[], /* o : number of metadata bits */ - const int16_t vad_flag[], /* i : VAD flag */ - const int16_t ism_mode, /* i : ISM mode */ - const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Enc Handle */ - const int16_t ism_extended_metadata_flag /* i : Extended metadata flag */ -) + int32_t *ism_total_brate, /* i/o: ISM total bitrate */ + const int16_t nchan_ism, /* i : number of ISM channels */ + const int16_t nchan_transport, /* i : number of transport channels */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ + SCE_ENC_HANDLE hSCE[], /* i/o: SCE encoder handles */ + BSTR_ENC_HANDLE hBstr, /* i/o: bitstream handle */ + int16_t nb_bits_metadata[], /* o : number of metadata bits */ + const int16_t vad_flag[], /* i : VAD flag */ + const int16_t ism_mode, /* i : ISM mode */ + const PARAM_ISM_CONFIG_HANDLE hParamIsm, /* i : Param ISM Enc Handle */ + const int16_t ism_extended_metadata_flag, /* i : Extended metadata flag */ + const float lp_noise_CPE, + const int16_t flag_omasa_ener_brate, /* i : less bitrate for objects in OMASA flag */ + int16_t *omasa_stereo_sw_cnt, + const int16_t ini_frame ) { int16_t i, ch, nb_bits_start = 0; int16_t flag_abs_azimuth[MAX_NUM_OBJECTS]; @@ -216,73 +219,97 @@ ivas_error ivas_ism_metadata_enc( set_s( null_metadata_flag, 0, nchan_ism ); set_s( lowrate_metadata_flag, 0, nchan_ism ); - /*----------------------------------------------------------------* - * Set Metadata presence / importance flag - *----------------------------------------------------------------*/ + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /*----------------------------------------------------------------* + * Rate importance of particular ISM streams in combined format coding + *----------------------------------------------------------------*/ - for ( ch = 0; ch < nchan_ism; ch++ ) + ivas_set_ism_importance_interformat( *ism_total_brate, nchan_transport, hIsmMeta, hSCE, lp_noise_CPE, ism_imp ); + } + else { - if ( ism_mode == ISM_MODE_PARAM ) - { - hIsmMeta[ch]->ism_metadata_flag = 1; - } - else if ( ism_mode == ISM_MODE_DISC ) - { - null_metadata_flag[ch] = !hIsmMeta[ch]->ism_metadata_flag; + /*----------------------------------------------------------------* + * Set Metadata presence / importance flag + *----------------------------------------------------------------*/ - if ( hIsmMeta[ch]->ism_metadata_flag == 1 ) + for ( ch = 0; ch < nchan_ism; ch++ ) + { + if ( ism_mode == ISM_MODE_PARAM ) + { + hIsmMeta[ch]->ism_metadata_flag = 1; + } + else if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) { - /* In case of low level noise for low bitrate inactive frames, do not sent metadata */ - hIsmMeta[ch]->ism_metadata_flag = vad_flag[ch] || hSCE[ch]->hCoreCoder[0]->lp_noise > 10 || hSCE[ch]->hCoreCoder[0]->tcxonly; + null_metadata_flag[ch] = !hIsmMeta[ch]->ism_metadata_flag; - /* in inactive frames, send MD 1) in ISM_MD_INC_DIFF_CNT_MAX consecutive frames when MD significantly change, 2) at least every ISM_MD_FEC_DIFF frames */ - if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) + if ( hIsmMeta[ch]->ism_metadata_flag == 1 ) { - if ( ( fabsf( hIsmMeta[ch]->azimuth - hIsmMeta[ch]->last_true_azimuth ) > ISM_MD_FEC_DIFF ) || - ( fabsf( hIsmMeta[ch]->elevation - hIsmMeta[ch]->last_true_elevation ) > ISM_MD_FEC_DIFF ) || ( fabsf( hIsmMeta[ch]->radius - hIsmMeta[ch]->last_true_radius ) > ISM_MD_RAD_FEC_DIFF ) ) + if ( ism_mode != ISM_SBA_MODE_DISC ) { - lowrate_metadata_flag[ch] = 1; - hIsmMeta[ch]->ism_md_inc_diff_cnt = 0; + /* In case of low level noise for low bitrate inactive frames, do not sent metadata */ + hIsmMeta[ch]->ism_metadata_flag = vad_flag[ch] || hSCE[ch]->hCoreCoder[0]->lp_noise > 10 || hSCE[ch]->hCoreCoder[0]->tcxonly; } - else if ( hIsmMeta[ch]->ism_md_inc_diff_cnt < ISM_MD_INC_DIFF_CNT_MAX ) + + /* in inactive frames, send MD 1) in ISM_MD_INC_DIFF_CNT_MAX consecutive frames when MD significantly change, 2) at least every ISM_MD_FEC_DIFF frames */ + if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) { - lowrate_metadata_flag[ch] = 1; + if ( ( fabsf( hIsmMeta[ch]->azimuth - hIsmMeta[ch]->last_true_azimuth ) > ISM_MD_FEC_DIFF ) || + ( fabsf( hIsmMeta[ch]->elevation - hIsmMeta[ch]->last_true_elevation ) > ISM_MD_FEC_DIFF ) || ( fabsf( hIsmMeta[ch]->radius - hIsmMeta[ch]->last_true_radius ) > ISM_MD_RAD_FEC_DIFF ) ) + { + + lowrate_metadata_flag[ch] = 1; - if ( hIsmMeta[ch]->ism_md_inc_diff_cnt % 2 == 0 ) + hIsmMeta[ch]->ism_md_inc_diff_cnt = 0; + } + else if ( hIsmMeta[ch]->ism_md_inc_diff_cnt < ISM_MD_INC_DIFF_CNT_MAX ) { - hIsmMeta[ch]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; + + lowrate_metadata_flag[ch] = 1; + + if ( hIsmMeta[ch]->ism_md_inc_diff_cnt % 2 == 0 ) + { + hIsmMeta[ch]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; + } + else + { + hIsmMeta[ch]->position_angle.angle2_diff_cnt = ISM_FEC_MAX; + } } - else + else if ( hIsmMeta[ch]->ism_md_fec_cnt_enc == ISM_MD_FEC_CNT_MAX ) { - hIsmMeta[ch]->position_angle.angle2_diff_cnt = ISM_FEC_MAX; + + lowrate_metadata_flag[ch] = 1; + + hIsmMeta[ch]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; } } - else if ( hIsmMeta[ch]->ism_md_fec_cnt_enc == ISM_MD_FEC_CNT_MAX ) - { - lowrate_metadata_flag[ch] = 1; - hIsmMeta[ch]->position_angle.angle1_diff_cnt = ISM_FEC_MAX; - } } } } - } - /*----------------------------------------------------------------* - * Rate importance of particular ISM streams - *----------------------------------------------------------------*/ - - rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); + /*----------------------------------------------------------------* + * Rate importance of particular ISM streams + *----------------------------------------------------------------*/ + if ( ism_mode != ISM_SBA_MODE_DISC ) + { + rate_ism_importance( nchan_transport, hIsmMeta, hSCE, lowrate_metadata_flag, ism_imp ); + } + } /*----------------------------------------------------------------* * Write ISM common signaling *----------------------------------------------------------------*/ - /* write number of objects - unary coding */ - for ( ch = 1; ch < nchan_ism; ch++ ) + if ( ism_mode != ISM_MASA_MODE_DISC && ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ && ism_mode != ISM_SBA_MODE_DISC ) { - push_indice( hBstr, IND_ISM_NUM_OBJECTS, 1, 1 ); + /* write number of objects - unary coding */ + for ( ch = 1; ch < nchan_ism; ch++ ) + { + push_indice( hBstr, IND_ISM_NUM_OBJECTS, 1, 1 ); + } + push_indice( hBstr, IND_ISM_NUM_OBJECTS, 0, 1 ); } - push_indice( hBstr, IND_ISM_NUM_OBJECTS, 0, 1 ); for ( ch = 0; ch < nchan_ism; ch++ ) { @@ -292,7 +319,7 @@ ivas_error ivas_ism_metadata_enc( } /* write extended metadata presence flag */ - if ( ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) + if ( ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) && *ism_total_brate >= ISM_EXTENDED_METADATA_BRATE ) { push_indice( hBstr, IND_ISM_EXTENDED_FLAG, ism_extended_metadata_flag, ISM_EXTENDED_METADATA_BITS ); @@ -306,26 +333,48 @@ ivas_error ivas_ism_metadata_enc( /* write ISM metadata flag (one per object) */ for ( ch = 0; ch < nchan_transport; ch++ ) { - if ( null_metadata_flag[ch] ) + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { - /* signal NULL metadata frame */ - push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); - - /* write the ISM class to ISM_NO_META and again the true ISM class */ - push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); - push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + /* flags will be written in ivas_masa_encode() */ + hIsmMeta[ch]->ism_imp = ism_imp[ch]; + hIsmMeta[ch]->ism_md_null_flag = null_metadata_flag[ch]; + hIsmMeta[ch]->ism_md_lowrate_flag = lowrate_metadata_flag[ch]; } else { - push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + if ( null_metadata_flag[ch] ) + { + /* signal NULL metadata frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 1, ISM_METADATA_MD_FLAG_BITS ); - if ( ism_imp[ch] == ISM_NO_META ) + /* write the ISM class to ISM_NO_META and again the true ISM class */ + if ( ism_mode != ISM_SBA_MODE_DISC ) + { + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, ISM_METADATA_FLAG_BITS ); + push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + } + else + { + push_indice( hBstr, IND_ISM_METADATA_FLAG, ISM_NO_META, 1 ); + } + } + else if ( ism_mode != ISM_SBA_MODE_DISC ) { - /* signal low-rate ISM_NO_META frame */ - push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); + push_indice( hBstr, IND_ISM_METADATA_FLAG, ism_imp[ch], ISM_METADATA_FLAG_BITS ); + + if ( ism_imp[ch] == ISM_NO_META ) + { + /* signal low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_NULL_FLAG, 0, ISM_METADATA_MD_FLAG_BITS ); - /* signal presence of MD in low-rate ISM_NO_META frame */ - push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); + /* signal presence of MD in low-rate ISM_NO_META frame */ + push_indice( hBstr, IND_ISM_MD_INACTIVE_FLAG, lowrate_metadata_flag[ch], ISM_METADATA_INACTIVE_FLAG_BITS ); + } + } + else /*ism_mode == ISM_SBA_MODE_DISC*/ + { + /* all objects are considered active*/ + push_indice( hBstr, IND_ISM_METADATA_FLAG, 1, 1 ); } } } @@ -349,7 +398,7 @@ ivas_error ivas_ism_metadata_enc( for ( ch = 0; ch < nchan_ism; ch++ ) { hIsmMetaData = hIsmMeta[ch]; - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_SBA_MODE_DISC ) { nb_bits_start = hBstr->nb_bits_tot; } @@ -384,7 +433,7 @@ ivas_error ivas_ism_metadata_enc( } else { - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_SBA_MODE_DISC ) { idx_angle1_abs = ism_quant_meta( hIsmMetaData->azimuth, &valQ, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); idx_angle2_abs = ism_quant_meta( hIsmMetaData->elevation, &valQ, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); @@ -394,26 +443,24 @@ ivas_error ivas_ism_metadata_enc( idx_angle1_abs = hParamIsm->azi_index[ch]; idx_angle2_abs = hParamIsm->ele_index[ch]; } - - encode_angle_indices( hBstr, &( hIsmMetaData->position_angle ), hIsmMetaData->last_ism_metadata_flag, hSCE[0]->hCoreCoder[0]->ini_frame, idx_angle1_abs, idx_angle2_abs, &flag_abs_azimuth[ch], &flag_abs_elevation[ch] ); + encode_angle_indices( hBstr, &( hIsmMetaData->position_angle ), hIsmMetaData->last_ism_metadata_flag, ini_frame, idx_angle1_abs, idx_angle2_abs, &flag_abs_azimuth[ch], &flag_abs_elevation[ch] ); /*----------------------------------------------------------------* * Quantize and encode radius, yaw, and pitch *----------------------------------------------------------------*/ - - if ( ism_mode == ISM_MODE_DISC && ism_extended_metadata_flag ) + if ( ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_SBA_MODE_DISC ) && ism_extended_metadata_flag ) { idx_angle1_abs = ism_quant_meta( hIsmMetaData->yaw, &valQ, ism_azimuth_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_AZIMUTH_NBITS ); idx_angle2_abs = ism_quant_meta( hIsmMetaData->pitch, &valQ, ism_elevation_borders, ISM_Q_STEP, ISM_Q_STEP_BORDER, 1 << ISM_ELEVATION_NBITS ); idx_radius_abs = usquant( hIsmMetaData->radius, &valQ, ISM_RADIUS_MIN, ISM_RADIUS_DELTA, 1 << ISM_RADIUS_NBITS ); - encode_angle_indices( hBstr, &( hIsmMetaData->orientation_angle ), hIsmMetaData->last_ism_metadata_flag, hSCE[0]->hCoreCoder[0]->ini_frame, idx_angle1_abs, idx_angle2_abs, &flag_abs_yaw[ch], &flag_abs_pitch[ch] ); + encode_angle_indices( hBstr, &( hIsmMetaData->orientation_angle ), hIsmMetaData->last_ism_metadata_flag, ini_frame, idx_angle1_abs, idx_angle2_abs, &flag_abs_yaw[ch], &flag_abs_pitch[ch] ); encode_radius( hBstr, &hIsmMetaData->last_radius_idx, &hIsmMetaData->radius_diff_cnt, hIsmMetaData->last_ism_metadata_flag, idx_radius_abs, &flag_abs_radius[ch] ); } } /* save number of metadata bits written */ - if ( ism_mode == ISM_MODE_DISC ) + if ( ism_mode == ISM_MODE_DISC || ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_SBA_MODE_DISC ) { nb_bits_metadata[ch] = hBstr->nb_bits_tot - nb_bits_start; } @@ -496,13 +543,39 @@ ivas_error ivas_ism_metadata_enc( } } + if ( ism_mode == ISM_SBA_MODE_DISC ) + { + int16_t md_diff_flag[MAX_NUM_OBJECTS]; + + set_s( md_diff_flag, 1, nchan_ism ); + for ( ch = 0; ch < nchan_ism; ch++ ) + { + hIsmMeta[ch]->last_ism_metadata_flag = hIsmMeta[ch]->ism_metadata_flag; + + if ( hIsmMeta[ch]->ism_metadata_flag == 0 ) + { + hIsmMeta[ch]->ism_md_fec_cnt_enc++; + } + else + { + hIsmMeta[ch]->ism_md_fec_cnt_enc = 0; + } + hIsmMeta[ch]->ism_md_inc_diff_cnt++; + hIsmMeta[ch]->ism_md_inc_diff_cnt = min( hIsmMeta[ch]->ism_md_inc_diff_cnt, ISM_MD_INC_DIFF_CNT_MAX ); + } + + update_last_metadata( nchan_ism, hIsmMeta, md_diff_flag ); + + pop_wmops(); + return error; + } if ( ism_mode == ISM_MODE_PARAM ) { /* Keep the metdata transmission as is during active parts */ /* But send the flag with 1 bit */ push_next_indice( hBstr, hParamIsm->flag_noisy_speech, 1 ); - /* Loop over multiwave to write the object indices into bistream */ + /* Loop over multiwave to write the object indices into bitstream */ for ( ch = 0; ch < MAX_PARAM_ISM_WAVE; ch++ ) { for ( nbands = 0; nbands < hParamIsm->nbands; nbands++ ) @@ -514,7 +587,7 @@ ivas_error ivas_ism_metadata_enc( } } - /* Loop over bands to write the power ratio's indices into bistream */ + /* Loop over bands to write the power ratio's indices into bitstream */ for ( nbands = 0; nbands < hParamIsm->nbands; nbands++ ) { for ( nblocks = 0; nblocks < hParamIsm->nblocks[nbands]; nblocks++ ) @@ -545,14 +618,78 @@ ivas_error ivas_ism_metadata_enc( } } } + else if ( ism_mode == ISM_SBA_MODE_DISC ) + { + pop_wmops(); + return error; + } + + /*----------------------------------------------------------------* + * Take into account the combined format bit-budget distribution + *----------------------------------------------------------------*/ + + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + int16_t bits_ism, bits_element[MAX_NUM_OBJECTS]; + int16_t brate_limit_flag; + int32_t ism_total_brate_ref; + ism_total_brate_ref = *ism_total_brate; + brate_limit_flag = calculate_brate_limit_flag( ism_imp, nchan_ism ); + + bits_ism = (int16_t) ( *ism_total_brate / FRAMES_PER_SEC ); + set_s( bits_element, bits_ism / nchan_ism, nchan_ism ); + bits_element[nchan_ism - 1] += bits_ism % nchan_ism; + bitbudget_to_brate( bits_element, element_brate, nchan_ism ); + + *ism_total_brate = 0; + for ( ch = 0; ch < nchan_ism; ch++ ) + { + *ism_total_brate += ivas_interformat_brate( ism_mode, nchan_ism, hSCE[ch]->element_brate, ism_imp[ch], brate_limit_flag ); + + if ( ism_imp[ch] > 1 && flag_omasa_ener_brate == 1 && brate_limit_flag >= 0 ) + { + *ism_total_brate -= ADJUST_ISM_BRATE_NEG; + } + + if ( brate_limit_flag == -1 && ism_imp[ch] >= 1 && nchan_ism >= 3 && ( ism_total_brate_ref - *ism_total_brate > IVAS_48k ) ) + { + *ism_total_brate += ADJUST_ISM_BRATE_POS; + } + } + ism_metadata_flag_global = 1; + + if ( ism_mode == ISM_MASA_MODE_DISC ) + { + brate_limit_flag = 0; + for ( int16_t n = 0; n < nchan_ism; n++ ) + { + brate_limit_flag += ism_imp[n]; + } + + if ( brate_limit_flag >= nchan_ism * ISM_HIGH_IMP - 2 ) + { + *omasa_stereo_sw_cnt = OMASA_STEREO_SW_CNT_MAX; + } + } + } /*----------------------------------------------------------------* * Configuration and decision about bitrates per channel *----------------------------------------------------------------*/ - if ( ( error = ivas_ism_config( ism_total_brate, nchan_transport, nchan_ism, hIsmMeta, ism_extended_metadata_flag, null_metadata_flag, ism_imp, element_brate, total_brate, nb_bits_metadata ) ) != IVAS_ERR_OK ) + if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) { - return error; + if ( ( error = ivas_ism_config( *ism_total_brate, nchan_transport, nchan_ism, hIsmMeta, ism_extended_metadata_flag, null_metadata_flag, ism_imp, element_brate, total_brate, nb_bits_metadata, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + if ( ( error = ivas_ism_config( *ism_total_brate, nchan_transport, nchan_ism, hIsmMeta, ism_extended_metadata_flag, null_metadata_flag, ism_imp, element_brate, total_brate, nb_bits_metadata, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } } for ( ch = 0; ch < nchan_ism; ch++ ) @@ -576,18 +713,22 @@ ivas_error ivas_ism_metadata_enc( hSCE[ch]->hCoreCoder[0]->low_rate_mode = 0; if ( ism_mode == ISM_MODE_DISC ) { -#ifdef FIX_562_ISM2_64KBPS if ( ism_imp[ch] == ISM_NO_META && ( ( total_brate[ch] < ACELP_8k00 && element_brate[ch] < SCE_CORE_16k_LOW_LIMIT ) || ( total_brate[ch] <= ACELP_16k_LOW_LIMIT && element_brate[ch] >= SCE_CORE_16k_LOW_LIMIT ) ) ) -#else - if ( ism_imp[ch] == ISM_NO_META && total_brate[ch] < ACELP_8k00 ) -#endif + { + hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; + } + + hSCE[ch]->element_brate = element_brate[ch]; + } + else if ( ism_mode == ISM_MASA_MODE_DISC || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + if ( ism_imp[ch] == ISM_INACTIVE_IMP ) { hSCE[ch]->hCoreCoder[0]->low_rate_mode = 1; } } - hSCE[ch]->element_brate = element_brate[ch]; hSCE[ch]->hCoreCoder[0]->total_brate = total_brate[ch]; /* write metadata only in active frames */ @@ -618,18 +759,46 @@ ivas_error ivas_ism_metadata_enc_create( int16_t ch, nchan_transport; ivas_error error; - if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + nchan_transport = st_ivas->nchan_transport; + if ( st_ivas->hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) { nchan_transport = MAX_PARAM_ISM_WAVE; + ivas_set_omasa_TC( st_ivas->ism_mode, n_ISms, &st_ivas->nSCE, &st_ivas->nCPE ); } - else + else if ( st_ivas->hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) { nchan_transport = n_ISms; } + else + { + if ( st_ivas->ism_mode == ISM_MODE_NONE ) + { + nchan_transport = st_ivas->nchan_transport; - st_ivas->nchan_transport = nchan_transport; - st_ivas->nSCE = nchan_transport; - st_ivas->nCPE = 0; + if ( nchan_transport == 1 ) + { + st_ivas->nSCE = 1; + st_ivas->nCPE = 0; + } + else + { + st_ivas->nSCE = 0; + st_ivas->nCPE = 1; + } + } + else if ( st_ivas->ism_mode == ISM_MODE_PARAM ) + { + nchan_transport = 2; + } + else + { + nchan_transport = n_ISms; + } + + st_ivas->nchan_transport = nchan_transport; + st_ivas->nSCE = nchan_transport; + st_ivas->nCPE = 0; + } /* allocate ISM metadata handles */ for ( ch = 0; ch < n_ISms; ch++ ) @@ -650,6 +819,12 @@ ivas_error ivas_ism_metadata_enc_create( st_ivas->hIsmMetaData[ch]->radius_diff_cnt = ISM_FEC_MAX - 2; st_ivas->hIsmMetaData[ch]->last_ism_metadata_flag = 0; + st_ivas->hIsmMetaData[ch]->ism_imp = -1; + st_ivas->hIsmMetaData[ch]->ism_md_null_flag = 0; + st_ivas->hIsmMetaData[ch]->ism_md_lowrate_flag = 0; + st_ivas->hIsmMetaData[ch]->q_azimuth_old = 0.0f; + st_ivas->hIsmMetaData[ch]->q_elevation_old = 0.0f; + ivas_ism_reset_metadata( st_ivas->hIsmMetaData[ch] ); st_ivas->hIsmMetaData[ch]->last_azimuth = 0.0f; @@ -662,9 +837,29 @@ ivas_error ivas_ism_metadata_enc_create( st_ivas->hIsmMetaData[ch]->last_true_radius = 1.0f; } - if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, nchan_transport, n_ISms, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL ) ) != IVAS_ERR_OK ) + if ( st_ivas->hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) { - return error; + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, nchan_transport, 1, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, nchan_transport, n_ISms, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else + { + if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, nchan_transport, n_ISms, NULL, 0, NULL, NULL, element_brate_tmp, NULL, NULL, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } } return IVAS_ERR_OK; diff --git a/lib_enc/ivas_ism_param_enc.c b/lib_enc/ivas_ism_param_enc.c index c3d50d24db4d73de5ceceb14aef7fda314b246e1..dbd31953a432baf28507afac38dffe881082ba9f 100644 --- a/lib_enc/ivas_ism_param_enc.c +++ b/lib_enc/ivas_ism_param_enc.c @@ -213,20 +213,18 @@ static void ivas_param_ism_enc_quantize_DOA( *-------------------------------------------------------------------------*/ void ivas_param_ism_stereo_dmx( - Encoder_Struct *st_ivas, /* i : IVAS encoder structure */ - float data[MAX_NUM_OBJECTS][L_FRAME48k], /* i/o: input signal/stereo dmx */ - const int16_t input_frame /* i : Length of input frame */ + Encoder_Struct *st_ivas, /* i : IVAS encoder structure */ + float *data[MAX_NUM_OBJECTS], /* i/o: input signal/stereo dmx */ + const int16_t input_frame /* i : Length of input frame */ ) { int16_t i, j; float alpha, azi_shift, tmp, tmp_1; float cardioid_left[MAX_NUM_OBJECTS], cardioid_right[MAX_NUM_OBJECTS]; float stereo_dmx[2][L_FRAME48k]; -#ifdef FIX_549_DMX_GAIN float dmx_gain, ene_dmx, ene_data, grad; float last_dmx_gain; float last_cardioid_left; -#endif ISM_METADATA_HANDLE hIsmMetaData; push_wmops( "ivas_param_ism_st_dmx" ); @@ -234,12 +232,10 @@ void ivas_param_ism_stereo_dmx( /*Initialization*/ alpha = 0.5; azi_shift = 0; -#ifdef FIX_549_DMX_GAIN dmx_gain = 0; ene_dmx = 0; ene_data = 0; last_dmx_gain = st_ivas->hDirAC->hParamIsm->last_dmx_gain; -#endif /* Set the stereo dmx to zero */ set_zero( stereo_dmx[0], L_FRAME48k ); @@ -249,24 +245,11 @@ void ivas_param_ism_stereo_dmx( for ( i = 0; i < st_ivas->hEncoderConfig->nchan_ism; i++ ) { hIsmMetaData = st_ivas->hIsmMetaData[i]; -#ifdef FIX_549_DMX_GAIN last_cardioid_left = st_ivas->hDirAC->hParamIsm->last_cardioid_left[i]; -#endif /*Compute the Cardioids for the corresponding object direction */ tmp = hIsmMetaData->azimuth * ( EVS_PI / 180 ); tmp_1 = ( EVS_PI / 2 ) + azi_shift; cardioid_left[i] = alpha + ( 1 - alpha ) * cosf( tmp - tmp_1 ); -#ifndef FIX_549_DMX_GAIN - cardioid_right[i] = alpha + ( 1 - alpha ) * cosf( tmp + tmp_1 ); - - /* Loop over all samples */ - for ( j = 0; j < input_frame; j++ ) - { - tmp = data[i][j]; - stereo_dmx[0][j] += cardioid_left[i] * tmp; /* DMX Left */ - stereo_dmx[1][j] += cardioid_right[i] * tmp; /* DMX Right */ - } -#else if ( st_ivas->hSCE[0]->hCoreCoder[0]->ini_frame > 0 ) { float last_cardioid_right; @@ -306,10 +289,8 @@ void ivas_param_ism_stereo_dmx( } } st_ivas->hDirAC->hParamIsm->last_cardioid_left[i] = cardioid_left[i]; -#endif } -#ifdef FIX_549_DMX_GAIN /* Energy compensation */ for ( j = 0; j < input_frame; j++ ) { @@ -342,7 +323,6 @@ void ivas_param_ism_stereo_dmx( } } st_ivas->hDirAC->hParamIsm->last_dmx_gain = dmx_gain; -#endif /* Copy the stereo dmx to data variable */ mvr2r( stereo_dmx[0], data[0], input_frame ); mvr2r( stereo_dmx[1], data[1], input_frame ); @@ -460,9 +440,9 @@ void ivas_param_ism_enc_close( *-------------------------------------------------------------------------*/ void ivas_param_ism_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data[MAX_NUM_OBJECTS][L_FRAME48k], /* i : input signal */ - const int16_t input_frame /* i : input frame length per channel */ + Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ + float *data[MAX_NUM_OBJECTS], /* i : input signal */ + const int16_t input_frame /* i : input frame length per channel */ ) { int16_t i, j, ts, l_ts; @@ -488,7 +468,7 @@ void ivas_param_ism_enc( for ( i = 0; i < nchan_ism; i++ ) { - pcm_in[i] = &data[i][0]; + pcm_in[i] = data[i]; set_zero( fb_RealBuffer[i], DIRAC_NO_FB_BANDS_MAX ); set_zero( fb_ImagBuffer[i], DIRAC_NO_FB_BANDS_MAX ); diff --git a/lib_enc/ivas_lfe_enc.c b/lib_enc/ivas_lfe_enc.c index 61072cc1872212f424a15b3c834be118c48b8bb9..82a6338dd4099b0256d64b57f84ceef0fe1873f1 100644 --- a/lib_enc/ivas_lfe_enc.c +++ b/lib_enc/ivas_lfe_enc.c @@ -344,10 +344,6 @@ void ivas_lfe_enc( zero_pad_len = hLFE->pWindow_state->zero_pad_len; pWindow_coeffs = hLFE->pWindow_state->pWindow_coeffs; -#ifndef FIX_572_LFE_LPF_ENC - /*Low Pass Filter */ - ivas_filter_process( &hLFE->filter_state, data_lfe_ch, input_frame ); -#endif /* Windowing */ ivas_dct_windowing( fade_len, full_len, dct_len, zero_pad_len, pWindow_coeffs, input_frame, wtda_audio, hLFE->old_wtda_audio, data_lfe_ch ); @@ -382,9 +378,6 @@ ivas_error ivas_create_lfe_enc( { int16_t input_frame; LFE_ENC_HANDLE hLFE; -#ifndef FIX_572_LFE_LPF_ENC - const float *filt_coeff; -#endif int16_t i, j; input_frame = (int16_t) ( input_Fs / FRAMES_PER_SEC ); @@ -426,10 +419,6 @@ ivas_error ivas_create_lfe_enc( lfe_window_init( hLFE->pWindow_state, input_Fs, input_frame ); -#ifndef FIX_572_LFE_LPF_ENC - ivas_lfe_lpf_select_filt_coeff( input_Fs, IVAS_FILTER_ORDER_4, &filt_coeff ); - ivas_filters_init( &hLFE->filter_state, filt_coeff, IVAS_FILTER_ORDER_4 ); -#endif /* Initialization for entropy coding */ hLFE->cum_freq_models[0][0] = ivas_str_lfe_freq_models.entropy_coder_model_fine_sg1; @@ -489,7 +478,7 @@ void ivas_lfe_enc_close( return; } -#ifdef FIX_572_LFE_LPF_ENC + /*------------------------------------------------------------------------- * ivas_create_lfe_lpf_enc() * @@ -563,4 +552,3 @@ void ivas_lfe_lpf_enc_apply( return; } -#endif diff --git a/lib_enc/ivas_masa_enc.c b/lib_enc/ivas_masa_enc.c index ec8c22bcd9d52bc3ce6047bcd9014350e329e51c..a98e42739bf00eed07871c03530d7104de3b14ea 100644 --- a/lib_enc/ivas_masa_enc.c +++ b/lib_enc/ivas_masa_enc.c @@ -47,8 +47,6 @@ static void combine_freqbands_and_subframes( MASA_ENCODER_HANDLE hMasa ); -static void combine_directions( MASA_ENCODER_HANDLE hMasa ); - static void find_n_largest( const float *input, int16_t *largestIndices, const int16_t numElements, const int16_t numLargest ); static void move_metadata_to_qmetadata( const MASA_ENCODER_HANDLE hMasa, IVAS_QMETADATA_HANDLE hQMeta ); @@ -59,6 +57,8 @@ static void compensate_energy_ratios( MASA_ENCODER_HANDLE hMasa ); static int16_t encode_lfe_to_total_energy_ratio( MASA_ENCODER_HANDLE hMasa, BSTR_ENC_HANDLE hMetaData, const int32_t ivas_total_brate ); +static void ivas_encode_masaism_metadata( MASA_ENCODER_HANDLE hMasa, IVAS_QMETADATA_HANDLE hQMetaData, BSTR_ENC_HANDLE hMetaData, ISM_METADATA_HANDLE hIsmMeta[], const int16_t nchan_ism, const int16_t low_bitrate_mode, const int16_t omasa_nbands, const int16_t omasa_nblocks, const int16_t idx_separated_object, const int16_t ism_imp ); + static void reduce_metadata_further( MASA_ENCODER_HANDLE hMasa, IVAS_QMETADATA_HANDLE hqmetadata, const IVAS_FORMAT ivas_format ); static void average_masa_metadata( MASA_METADATA_FRAME *masaMetadata, float energy[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], const SPHERICAL_GRID_DATA *sphGrid, const uint8_t useSphGrid ); @@ -98,6 +98,7 @@ ivas_error ivas_masa_enc_open( MASA_ENCODER_HANDLE hMasa; ENCODER_CONFIG_HANDLE hEncoderConfig; ivas_error error; + int32_t ism_total_brate; error = IVAS_ERR_OK; @@ -107,9 +108,10 @@ ivas_error ivas_masa_enc_open( } hEncoderConfig = st_ivas->hEncoderConfig; + generate_gridEq( &( hMasa->data.Sph_Grid16 ) ); - if ( hEncoderConfig->ivas_format == MASA_FORMAT ) + if ( hEncoderConfig->ivas_format == MASA_FORMAT || hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) { hMasa->data.num_Cldfb_instances = st_ivas->nchan_transport; } @@ -126,7 +128,17 @@ ivas_error ivas_masa_enc_open( } } - ivas_masa_set_elements( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &hEncoderConfig->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE ); + ism_total_brate = 0; + if ( hEncoderConfig->ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 && ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) ) + { + for ( i = 0; i < st_ivas->nSCE; i++ ) + { + ism_total_brate += st_ivas->hSCE[i]->element_brate; + } + } + + ivas_masa_set_elements( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &hEncoderConfig->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE, + hEncoderConfig->ivas_format, st_ivas->ism_mode, ism_total_brate ); mvs2s( DirAC_block_grouping, hMasa->config.block_grouping, MAX_PARAM_SPATIAL_SUBFRAMES + 1 ); mvs2s( MASA_band_grouping_24, hMasa->config.band_grouping, MASA_FREQUENCY_BANDS + 1 ); @@ -148,6 +160,28 @@ ivas_error ivas_masa_enc_open( set_zero( hMasa->data.dir_align_state.previous_azi_dir2, MASA_FREQUENCY_BANDS ); set_zero( hMasa->data.dir_align_state.previous_ele_dir2, MASA_FREQUENCY_BANDS ); + if ( hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) + { + OMASA_ENCODER_DATA_HANDLE hOmasaData; + + if ( ( hOmasaData = (OMASA_ENCODER_DATA_HANDLE) malloc( sizeof( OMASA_ENCODER_DATA_STATE ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data encoder\n" ) ); + } + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + set_f( hOmasaData->masa_to_total_energy_ratio[i], 0, MASA_FREQUENCY_BANDS ); + } + hOmasaData->lp_noise_CPE = -1; + hOmasaData->omasa_stereo_sw_cnt = OMASA_STEREO_SW_CNT_MAX; + + hMasa->data.hOmasaData = hOmasaData; + } + else + { + hMasa->data.hOmasaData = NULL; + } + st_ivas->hMasa = hMasa; return error; @@ -176,6 +210,12 @@ void ivas_masa_enc_close( deleteCldfb( &( ( *hMasa )->data.cldfbAnaEnc[i] ) ); } + if ( ( *hMasa )->data.hOmasaData != NULL ) + { + free( ( *hMasa )->data.hOmasaData ); + ( *hMasa )->data.hOmasaData = NULL; + } + free( ( *hMasa ) ); ( *hMasa ) = NULL; @@ -190,25 +230,35 @@ void ivas_masa_enc_close( *-----------------------------------------------------------------------*/ 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 */ + 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 */ ) { MASA_DIRECTIONAL_SPATIAL_META *h_orig_metadata; int16_t i, j; int16_t masa_sid_descriptor; + int16_t low_bitrate_mode; + int32_t masa_total_brate; masa_sid_descriptor = -1; h_orig_metadata = NULL; + low_bitrate_mode = 0; - if ( ivas_format == MASA_FORMAT ) + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) { /* Create the MASA SID descriptor for the metadata and CPE mode, in order to have the SID frame self-contained. */ if ( Opt_DTX_ON && hQMetaData != NULL ) @@ -245,7 +295,7 @@ ivas_error ivas_masa_encode( } } - if ( ivas_format == MASA_FORMAT && ivas_total_brate >= IVAS_384k ) + if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) && ivas_total_brate >= IVAS_384k ) { hMasa->config.mergeRatiosOverSubframes = 0; } @@ -254,10 +304,13 @@ ivas_error ivas_masa_encode( combine_freqbands_and_subframes( hMasa ); } - if ( hMasa->config.numberOfDirections == 2 && hMasa->config.numTwoDirBands < hMasa->config.numCodingBands && ivas_format == MASA_FORMAT ) + if ( hMasa->config.numberOfDirections == 2 && hMasa->config.numTwoDirBands < hMasa->config.numCodingBands && ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) ) { - /* Combine directions */ - combine_directions( hMasa ); + if ( ( ivas_format == MASA_ISM_FORMAT && ism_mode != ISM_MODE_NONE && ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) || ( ivas_format != MASA_ISM_FORMAT ) ) + { + /* Combine directions */ + ivas_masa_combine_directions( hMasa ); + } /* If we joined all bands, then metadata is now one directional. */ if ( hMasa->config.numTwoDirBands == 0 ) @@ -270,17 +323,121 @@ ivas_error ivas_masa_encode( /* Reset qmetadata bit budget */ hQMetaData->metadata_max_bits = hMasa->config.max_metadata_bits; - - if ( ivas_format == MASA_FORMAT ) + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) { - /* write the number of MASA transport channels */ - push_next_indice( hMetaData, nchan_transport - 1, MASA_TRANSP_BITS ); - hQMetaData->metadata_max_bits -= MASA_TRANSP_BITS; + if ( ivas_format == MASA_ISM_FORMAT && ism_mode != ISM_MODE_NONE ) + { + /* write the number of objects in ISM_MASA format*/ + push_next_indice( hMetaData, nchan_ism - 1, NO_BITS_MASA_ISM_NO_OBJ ); + hQMetaData->metadata_max_bits -= NO_BITS_MASA_ISM_NO_OBJ; + + /* write index of separated object if needed */ + if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && nchan_ism > 1 ) + { + push_next_indice( hMetaData, idx_separated_object, NO_BITS_MASA_ISM_NO_OBJ ); + hQMetaData->metadata_max_bits -= NO_BITS_MASA_ISM_NO_OBJ; + } + + /* write ISM importance flag (one per object) */ + if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + push_next_indice( hMetaData, hIsmMetaData[0]->ism_imp, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + } + else if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + if ( hIsmMetaData[0]->ism_md_null_flag ) + { + /* signal NULL metadata frame */ + push_next_indice( hMetaData, 1, ISM_METADATA_MD_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_MD_FLAG_BITS; + + /* write the ISM class to ISM_NO_META and again the true ISM class */ + push_next_indice( hMetaData, ISM_NO_META, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + push_next_indice( hMetaData, hIsmMetaData[0]->ism_imp, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + } + else + { + push_next_indice( hMetaData, hIsmMetaData[0]->ism_imp, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + + if ( hIsmMetaData[0]->ism_imp == ISM_NO_META ) + { + /* signal low-rate ISM_NO_META frame */ + push_next_indice( hMetaData, 0, ISM_METADATA_MD_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_MD_FLAG_BITS; + + /* signal presence of MD in low-rate ISM_NO_META frame */ + push_next_indice( hMetaData, hIsmMetaData[0]->ism_md_lowrate_flag, ISM_METADATA_INACTIVE_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_INACTIVE_FLAG_BITS; + } + } + } + else if ( ism_mode == ISM_MASA_MODE_DISC ) + { + for ( i = 0; i < nchan_ism; i++ ) + { + if ( hIsmMetaData[i]->ism_md_null_flag ) + { + /* signal NULL metadata frame */ + push_next_indice( hMetaData, 1, ISM_METADATA_MD_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_MD_FLAG_BITS; + + /* write the ISM class to ISM_NO_META and again the true ISM class */ + push_next_indice( hMetaData, ISM_NO_META, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + push_next_indice( hMetaData, hIsmMetaData[i]->ism_imp, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + } + else + { + push_next_indice( hMetaData, hIsmMetaData[i]->ism_imp, ISM_METADATA_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_FLAG_BITS; + + if ( hIsmMetaData[i]->ism_imp == ISM_NO_META ) + { + /* signal low-rate ISM_NO_META frame */ + push_next_indice( hMetaData, 0, ISM_METADATA_MD_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_MD_FLAG_BITS; + + /* signal presence of MD in low-rate ISM_NO_META frame */ + push_next_indice( hMetaData, hIsmMetaData[i]->ism_md_lowrate_flag, ISM_METADATA_INACTIVE_FLAG_BITS ); + hQMetaData->metadata_max_bits -= ISM_METADATA_INACTIVE_FLAG_BITS; + } + } + } - /* write placeholder data for descriptive metadata */ - push_next_indice( hMetaData, 0, MASA_HEADER_BITS ); - hQMetaData->metadata_max_bits -= MASA_HEADER_BITS; + if ( ivas_total_brate == IVAS_128k && nchan_ism >= 3 ) + { + push_next_indice( hMetaData, flag_omasa_ener_brate, 1 ); + hQMetaData->metadata_max_bits -= 1; + } + } + } + else + { + /* write the number of MASA transport channels */ + push_next_indice( hMetaData, nchan_transport - 1, MASA_TRANSP_BITS ); + hQMetaData->metadata_max_bits -= MASA_TRANSP_BITS; + } + if ( ivas_format == MASA_ISM_FORMAT && ism_mode == ISM_MODE_NONE ) + { + /* signal MASA_ISM_FORMAT to decoder */ + push_next_indice( hMetaData, 1, 1 ); + /* write reserved bit */ + push_next_indice( hMetaData, 0, MASA_HEADER_BITS - 1 ); + hQMetaData->metadata_max_bits -= MASA_HEADER_BITS; + } + else + { + /* the MASA_ISM_FORMAT is not signalled here */ + /* write reserved bits */ + push_next_indice( hMetaData, 0, MASA_HEADER_BITS ); + hQMetaData->metadata_max_bits -= MASA_HEADER_BITS; + } /* write number of directions */ push_next_indice( hMetaData, hQMetaData->no_directions - 1, 1 ); hQMetaData->metadata_max_bits -= 1; @@ -298,7 +455,7 @@ ivas_error ivas_masa_encode( } /* Move data from encoder to qmetadata */ - if ( ivas_format == MASA_FORMAT ) + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) { move_metadata_to_qmetadata( hMasa, hQMetaData ); } @@ -307,15 +464,38 @@ ivas_error ivas_masa_encode( { reduce_metadata_further( hMasa, hQMetaData, ivas_format ); + low_bitrate_mode = ( ivas_total_brate <= 32000 ); + /* Write low bitrate mode. 1 signals that we have merged through time, 0 signals merge through frequency. */ push_next_indice( hMetaData, hQMetaData->q_direction[0].cfg.nblocks == 1 ? 1 : 0, MASA_LOWBITRATE_MODE_BITS ); hQMetaData->metadata_max_bits -= MASA_LOWBITRATE_MODE_BITS; } + /* Encode MASA+ISM metadata */ + if ( ivas_format == MASA_ISM_FORMAT && ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + /* encode MASA/ISM energy ratios */ + ivas_encode_masaism_metadata( hMasa, hQMetaData, hMetaData, hIsmMetaData, nchan_ism, low_bitrate_mode, hOMasa->nCodingBands, hOMasa->nSubframes, + idx_separated_object, ism_imp ); + } + else + { + if ( ivas_format == MASA_ISM_FORMAT ) + { + hMasa->data.hOmasaData->masa_to_total_energy_ratio[0][0] = -1; /* signals NOT to adjust the energy ratios */ + } + } + /* Encode metadata */ - if ( ivas_total_brate >= IVAS_384k ) + masa_total_brate = ivas_total_brate; + if ( ivas_format == MASA_ISM_FORMAT && ism_mode == ISM_MASA_MODE_DISC ) + { + masa_total_brate = calculate_cpe_brate_MASA_ISM( ism_mode, ivas_total_brate, nchan_ism ); + } + + if ( masa_total_brate >= IVAS_384k ) { - if ( ivas_total_brate >= IVAS_512k ) + if ( masa_total_brate >= IVAS_512k ) { ivas_qmetadata_enc_encode_hr_384_512( hMetaData, hQMetaData, 16, 4 ); } @@ -329,6 +509,12 @@ ivas_error ivas_masa_encode( ivas_qmetadata_enc_encode( hMetaData, hQMetaData, 0 ); } + if ( ivas_format == MASA_ISM_FORMAT && ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + /* Modify spatial metadata based on the MASA-to-total energy ratios */ + ivas_omasa_modify_masa_energy_ratios( hQMetaData, hMasa->data.hOmasaData->masa_to_total_energy_ratio ); + } + *nb_bits_metadata = hMetaData->nb_bits_tot; if ( ivas_format == MASA_FORMAT && Opt_DTX_ON ) @@ -362,7 +548,7 @@ ivas_error ivas_masa_encode( if ( hMasa->config.numberOfDirections == 2 && hMasa->config.numTwoDirBands < hMasa->config.numCodingBands ) { /* Combine directions */ - combine_directions( hMasa ); + ivas_masa_combine_directions( hMasa ); /* If we joined all bands, then metadata is now one directional. */ if ( hMasa->config.numTwoDirBands == 0 ) @@ -406,7 +592,7 @@ ivas_error ivas_masa_encode( void ivas_masa_estimate_energy( MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder structure */ - float data_f[][L_FRAME48k], /* i : Input audio channels */ + 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 */ ) @@ -486,6 +672,8 @@ ivas_error ivas_masa_enc_config( uint8_t maxBand; int16_t maxBin, sf; ivas_error error; + int32_t ism_total_brate; + int32_t masa_total_brate; error = IVAS_ERR_OK; @@ -494,10 +682,20 @@ ivas_error ivas_masa_enc_config( ivas_format = st_ivas->hEncoderConfig->ivas_format; ivas_total_brate = st_ivas->hEncoderConfig->ivas_total_brate; - ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, hQMetaData, &st_ivas->hEncoderConfig->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE ); + ism_total_brate = 0; + if ( ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 && ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) ) + { + for ( i = 0; i < st_ivas->nSCE; i++ ) + { + ism_total_brate += st_ivas->hSCE[i]->element_brate; + } + } + + ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, hQMetaData, &st_ivas->hEncoderConfig->element_mode_init, &st_ivas->nSCE, &st_ivas->nCPE, + ivas_format, st_ivas->ism_mode, ism_total_brate ); hQMetaData->is_masa_ivas_format = 1; - if ( ivas_format == MASA_FORMAT ) + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) { masa_metadata_direction_alignment( hMasa ); @@ -522,7 +720,14 @@ ivas_error ivas_masa_enc_config( hMasa->config.numberOfDirections = 1; } - ivas_masa_set_coding_config( &( hMasa->config ), hMasa->data.band_mapping, ivas_total_brate, st_ivas->nchan_transport, ( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ); + if ( ivas_format == MASA_ISM_FORMAT ) + { + ivas_masa_set_coding_config( &( hMasa->config ), hMasa->data.band_mapping, st_ivas->hCPE[0]->element_brate, st_ivas->nchan_transport, MC_MODE_NONE ); + } + else + { + ivas_masa_set_coding_config( &( hMasa->config ), hMasa->data.band_mapping, ivas_total_brate, st_ivas->nchan_transport, ( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ); + } /* Setup importance weights for two-direction band selection. */ if ( hMasa->config.numberOfDirections == 2 ) @@ -607,7 +812,13 @@ ivas_error ivas_masa_enc_config( } maxBand--; - if ( ivas_total_brate > IVAS_256k ) + st_ivas->hQMetaData->q_direction->cfg.inactiveBands = 0; + masa_total_brate = ivas_total_brate; + if ( ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + masa_total_brate = calculate_cpe_brate_MASA_ISM( st_ivas->ism_mode, ivas_total_brate, st_ivas->hEncoderConfig->nchan_ism ); + } + if ( masa_total_brate >= IVAS_384k && ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) ) { int16_t continueLoop; continueLoop = 1; @@ -637,7 +848,7 @@ ivas_error ivas_masa_enc_config( } } - masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, hQMetaData, maxBand, ivas_total_brate > IVAS_256k, NULL ); + masa_sample_rate_band_correction( &( hMasa->config ), hMasa->data.band_mapping, hQMetaData, maxBand, masa_total_brate >= IVAS_384k, NULL ); if ( hMasa->config.numTwoDirBands >= hMasa->config.numCodingBands ) { @@ -647,9 +858,21 @@ ivas_error ivas_masa_enc_config( /* Transmit stereo signals using a mono downmix at lowest bitrates */ - if ( ivas_format == MASA_FORMAT && st_ivas->nCPE == 1 && st_ivas->hCPE[0]->hStereoDft != NULL && st_ivas->hCPE[0]->hStereoDft->hConfig != NULL ) + if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) && st_ivas->nCPE == 1 && st_ivas->hCPE[0]->hStereoDft != NULL && st_ivas->hCPE[0]->hStereoDft->hConfig != NULL ) + { + st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = ( ivas_total_brate - ism_total_brate < MASA_STEREO_MIN_BITRATE ) ? 1 : 0; + } + + if ( ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) { - st_ivas->hCPE[0]->hStereoDft->hConfig->force_mono_transmission = ivas_total_brate < MASA_STEREO_MIN_BITRATE ? 1 : 0; + if ( st_ivas->hCPE[0]->element_mode == IVAS_CPE_DFT || st_ivas->hMasa->data.hOmasaData->omasa_stereo_sw_cnt < OMASA_STEREO_SW_CNT_MAX ) + { + st_ivas->hMasa->data.hOmasaData->lp_noise_CPE = st_ivas->hCPE[0]->hCoreCoder[0]->lp_noise; + } + else + { + st_ivas->hMasa->data.hOmasaData->lp_noise_CPE = ( st_ivas->hCPE[0]->hCoreCoder[0]->lp_noise + st_ivas->hCPE[0]->hCoreCoder[1]->lp_noise ) / CPE_CHANNELS; + } } return error; @@ -886,8 +1109,7 @@ static void combine_freqbands_and_subframes( return; } - -static void combine_directions( +void ivas_masa_combine_directions( MASA_ENCODER_HANDLE hMasa ) { int16_t i, j, k; @@ -1003,7 +1225,7 @@ static void combine_directions( ambience2dir = 1.0f - ratioSum; hMeta->directional_meta[0].energy_ratio[j][i] = sumVecLen[j][i] / ( hMeta->directional_meta[0].energy_ratio[j][i] + hMeta->directional_meta[1].energy_ratio[j][i] + ambience2dir / 2.0f ); - + hMeta->directional_meta[1].energy_ratio[j][i] = 0.0f; if ( computeCoherence ) { ambience1dir = 1.0f - hMeta->directional_meta[0].energy_ratio[j][i]; @@ -1338,7 +1560,7 @@ static void reduce_metadata_further( /* Get energy for the input data in 4-subframe, 5-band format */ totalEnergySum = 0.0f; - if ( ivas_format == MASA_FORMAT ) /* Energy data is in 4-subframe, 24-band format */ + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) /* Energy data is in 4-subframe, 24-band format */ { for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { @@ -1717,9 +1939,19 @@ void ivas_masa_enc_reconfigure( int16_t n, tmp; int16_t sce_id, cpe_id; int32_t ivas_total_brate; + int32_t ism_total_brate; ivas_total_brate = st_ivas->hEncoderConfig->ivas_total_brate; + ism_total_brate = 0; + if ( st_ivas->hEncoderConfig->ivas_format == MASA_ISM_FORMAT && st_ivas->nSCE > 0 && ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) ) + { + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + ism_total_brate += st_ivas->hSCE[sce_id]->element_brate; + } + } + if ( ivas_total_brate != st_ivas->hEncoderConfig->last_ivas_total_brate ) { for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) @@ -1740,11 +1972,7 @@ void ivas_masa_enc_reconfigure( st_ivas->hCPE[cpe_id]->hCoreCoder[n]->total_brate = st_ivas->hCPE[cpe_id]->element_brate / ( st_ivas->nCPE > 1 ? 1 : CPE_CHANNELS ); /* dummy initialization for getting right pointers initialization of input buffers in init_coder_ace_plus() */ } - if ( ivas_total_brate < MASA_STEREO_MIN_BITRATE ) - { - st_ivas->hCPE[cpe_id]->element_mode = IVAS_CPE_DFT; - } - else if ( ivas_total_brate < MIN_BRATE_MDCT_STEREO ) + if ( ivas_total_brate - ism_total_brate < MASA_STEREO_MIN_BITRATE || ivas_total_brate - ism_total_brate < MIN_BRATE_MDCT_STEREO ) { st_ivas->hCPE[cpe_id]->element_mode = IVAS_CPE_DFT; } @@ -1754,7 +1982,8 @@ void ivas_masa_enc_reconfigure( } } - ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &tmp, &tmp, &tmp ); + ivas_masa_set_elements( ivas_total_brate, st_ivas->mc_mode, st_ivas->nchan_transport, st_ivas->hQMetaData, &tmp, &tmp, &tmp, + st_ivas->hEncoderConfig->ivas_format, st_ivas->ism_mode, ism_total_brate ); } return; @@ -1943,11 +2172,12 @@ static void copy_masa_metadata( * Compare the similarity of MASA metadata in two sub-frames *-------------------------------------------------------------------*/ +/* r: similarity decision */ static uint8_t are_masa_subframes_similar( const MASA_METADATA_HANDLE frame1, /* i : MASA metadata frame 1 */ const uint8_t sf1_idx, /* i : index of the subframe of frame1 to inspect */ const MASA_METADATA_HANDLE frame2, /* i : MASA metadata frame 2 */ - const uint8_t sf2_idx /* o : index of the subframe of frame2 to inspect */ + const uint8_t sf2_idx /* i : index of the subframe of frame2 to inspect */ ) { uint8_t num_dir; @@ -2130,7 +2360,7 @@ static void detect_framing_async( else if ( n_sim_stop == 3 ) { /* first sub-frame different that the rest 3 - => make a risky guess that the future sf would be the same too and we're in an offset case */ + => make a risky guess that the future sf would be the same too and we're in an offset case */ frame_mode = MASA_FRAME_1SF; found_offset = 3; } @@ -2328,3 +2558,1109 @@ static void masa_metadata_direction_alignment( return; } + + +/*-------------------------------------------------------------------* + * ivas_merge_masa_metadata() + * + * + *-------------------------------------------------------------------*/ + +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 */ +) +{ + int16_t sf, band; + uint8_t numCodingBands; + uint8_t numDirections; + uint8_t numSf; + MASA_METADATA_HANDLE hMeta; + float energyTimesRatioISM; + float energyTimesRatioMASA[2]; + float total_diff_nrg; + float eneBand; + float energyMerged[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; + + numCodingBands = hMasa->config.numCodingBands; + numDirections = hMasa->config.numberOfDirections; + numSf = hMasa->config.joinedSubframes == TRUE ? 1 : 4; + hMeta = &( hMasa->masaMetadata ); + + for ( sf = 0; sf < numSf; sf++ ) + { + for ( band = 0; band < numCodingBands; band++ ) + { + int16_t merge_dest; + float dir_sum; + uint8_t band_n_dirs; + if ( numDirections == 1 || ( numDirections == 2 && hMasa->data.twoDirBands[band] == 0 ) ) + { + band_n_dirs = 1; + } + else + { + band_n_dirs = 2; + } + + /* Compute energies */ + eneBand = hMasa->data.energy[sf][band]; + energyMerged[sf][band] = eneBand + hMasa->data.hOmasaData->energy_ism[sf][band]; + + /* Compute weights */ + energyTimesRatioMASA[0] = eneBand * hMeta->directional_meta[0].energy_ratio[sf][band]; + if ( band_n_dirs == 2 ) + { + energyTimesRatioMASA[1] = eneBand * hMeta->directional_meta[1].energy_ratio[sf][band]; + } + else + { + energyTimesRatioMASA[1] = 0.0f; + } + /* target is original MASA diffuseness */ + total_diff_nrg = eneBand * hMeta->common_meta.diffuse_to_total_ratio[sf][band]; + /* criterion is mean of ISM ratio and new ratio */ + energyTimesRatioISM = ( hOMasaMeta->directional_meta[0].energy_ratio[sf][band] + ( 1.0f - total_diff_nrg / ( EPSILON + eneBand + hMasa->data.hOmasaData->energy_ism[sf][band] ) ) ) / 2.0f * hMasa->data.hOmasaData->energy_ism[sf][band]; + + /* Determine combined metadata based on the weights */ + merge_dest = -1; + if ( ( band_n_dirs == 1 && energyTimesRatioMASA[0] < energyTimesRatioISM ) || + ( band_n_dirs == 2 && energyTimesRatioMASA[0] < energyTimesRatioMASA[1] && energyTimesRatioMASA[0] < energyTimesRatioISM ) ) + { + /* 1dir and ISM the most energetic, or 2dir and ISM the more energetic than MASA1 */ + merge_dest = 0; + } + else if ( band_n_dirs == 2 && energyTimesRatioMASA[1] <= energyTimesRatioMASA[0] && energyTimesRatioMASA[1] < energyTimesRatioISM ) + { + /* 2dir and ISM the most energetic and MASA2 the least energetic */ + merge_dest = 1; + } + + if ( merge_dest >= 0 ) /* replace one MASA with ISM */ + { + hMeta->directional_meta[merge_dest].azimuth[sf][band] = hOMasaMeta->directional_meta[0].azimuth[sf][band]; + hMeta->directional_meta[merge_dest].elevation[sf][band] = hOMasaMeta->directional_meta[0].elevation[sf][band]; + /* limit with the earlier direct-energy ratio */ + dir_sum = 1.0f - total_diff_nrg / ( EPSILON + eneBand + hMasa->data.hOmasaData->energy_ism[sf][band] ); /* new dir ratio */ + hMeta->directional_meta[merge_dest].energy_ratio[sf][band] = min( dir_sum, hOMasaMeta->directional_meta[0].energy_ratio[sf][band] ); /* clip with original ISM dir */ + hMeta->common_meta.diffuse_to_total_ratio[sf][band] = 1.0f - hMeta->directional_meta[merge_dest].energy_ratio[sf][band]; + + if ( hMasa->config.useCoherence ) + { + hMeta->directional_meta[merge_dest].spread_coherence[sf][band] = hOMasaMeta->directional_meta[0].spread_coherence[sf][band]; + hMeta->common_meta.surround_coherence[sf][band] = hOMasaMeta->common_meta.surround_coherence[sf][band]; + } + + /* recompute direct energy ratios to match the diffuse ratio */ + float direct_quota, direct_scaler; + direct_quota = 1.0f - hMeta->common_meta.diffuse_to_total_ratio[sf][band]; + if ( band_n_dirs == 1 ) + { + hMeta->directional_meta[0].energy_ratio[sf][band] = direct_quota; + } + else + { + dir_sum = hMeta->directional_meta[0].energy_ratio[sf][band] + hMeta->directional_meta[1].energy_ratio[sf][band]; + direct_scaler = direct_quota / ( EPSILON + dir_sum ); + hMeta->directional_meta[0].energy_ratio[sf][band] *= direct_scaler; + hMeta->directional_meta[1].energy_ratio[sf][band] *= direct_scaler; + } + } + } + } + + for ( sf = 0; sf < numSf; sf++ ) + { + for ( band = 0; band < numCodingBands; band++ ) + { + hMasa->data.energy[sf][band] = energyMerged[sf][band]; + } + } + + return; +} + + +static void quantize_ratio_ism_vector( + const float *ratio_ism, + int16_t *idx, + const int16_t nchan_ism, + const float masa_to_total_energy_ratio, + const int16_t idx_sep_object ) +{ + int16_t i, j, best_i, best_i2; + float dist, div, tmp, dist2, best_dist; + int16_t part_idx_sum, max_sum_idx; + float ratio_ism_loc[MAX_NUM_OBJECTS]; + int16_t no_ism_loc; + + max_sum_idx = ( 1 << PARAM_ISM_POW_RATIO_NBITS ) - 1; + + if ( idx_sep_object > -1 ) + { + if ( ratio_ism[idx_sep_object] < 1.0f / (float) ( max_sum_idx ) ) + { + /* take it out from quantize function */ + mvr2r( ratio_ism, ratio_ism_loc, idx_sep_object ); + mvr2r( &ratio_ism[idx_sep_object + 1], &ratio_ism_loc[idx_sep_object], nchan_ism - idx_sep_object - 1 ); + no_ism_loc = nchan_ism - 1; + } + else + { + no_ism_loc = nchan_ism; + mvr2r( ratio_ism, ratio_ism_loc, nchan_ism ); + } + } + else + { + no_ism_loc = nchan_ism; + mvr2r( ratio_ism, ratio_ism_loc, nchan_ism ); + } + + if ( nchan_ism > 1 ) + { + if ( masa_to_total_energy_ratio >= MASA2TOTAL_THR ) + { + distribute_evenly_ism( idx, max_sum_idx, nchan_ism ); + } + else + { + if ( no_ism_loc > 1 ) + { + + dist = 0.0f; + div = 1.0f / (float) ( max_sum_idx ); + + part_idx_sum = 0; + + for ( i = 0; i < no_ism_loc; i++ ) + { + idx[i] = (int16_t) ( ( ratio_ism_loc[i] ) * ( max_sum_idx ) ); + part_idx_sum += idx[i]; + + tmp = ( ratio_ism_loc[i] - ( idx[i] * div ) ); + dist += ( tmp * tmp ); + } + + best_dist = dist; + best_i2 = -1; + while ( part_idx_sum < max_sum_idx ) + { + best_i = -1; + /* check which index to increase by 1 for a possible improvement */ + + for ( i = 0; i < no_ism_loc; i++ ) + { + idx[i]++; + dist2 = 0.0f; + + for ( j = 0; j < no_ism_loc; j++ ) + { + tmp = ( ratio_ism_loc[i] - ( idx[i] * div ) ); + dist2 += ( tmp * tmp ); + } + + if ( dist2 < best_dist ) + { + best_i2 = best_i; + best_i = i; + best_dist = dist2; + } + idx[i]--; + } + if ( best_i > -1 ) + { + idx[best_i]++; + part_idx_sum++; + } + else + { + if ( best_i2 > -1 ) + { + idx[best_i2]++; + part_idx_sum++; + } + else + { + idx[no_ism_loc - 1] += max_sum_idx - part_idx_sum; + part_idx_sum = max_sum_idx; + } + } + } + assert( sum_s( idx, no_ism_loc ) == max_sum_idx ); + } + else + { + idx[0] = max_sum_idx; + } + + if ( no_ism_loc < nchan_ism ) + { + /* insert back the ratio of the separated object */ + for ( i = nchan_ism - 1; i > idx_sep_object; i-- ) + { + idx[i] = idx[i - 1]; + } + idx[idx_sep_object] = 0; + } + } + } + else + { + idx[0] = (int16_t) ( ( ratio_ism[0] ) * ( ( 1 << PARAM_ISM_POW_RATIO_NBITS ) - 1 ) + 0.5f ); + } + + return; +} + + +static int16_t index_slice_enum( + const int16_t *ratio_ism_idx, + const int16_t nchan_ism ) +{ + int16_t i; + int16_t x, index; + int16_t base; + + if ( nchan_ism == 2 ) + { + index = ratio_ism_idx[0]; + } + else + { + x = ratio_ism_idx[nchan_ism - 2]; + base = 10; + for ( i = nchan_ism - 3; i >= 0; i-- ) + { + x += ratio_ism_idx[i] * base; + base *= 10; + } + + index = 0; + i = 0; + while ( i <= x ) + { + if ( valid_ratio_index( i, 7, nchan_ism - 1 ) ) + { + index++; + } + i++; + } + index--; + } + + return index; +} + + +static void transform_difference_index( + const int16_t *diff_idx, + int16_t *idx, + const int16_t len ) +{ + int16_t i; + for ( i = 0; i < len; i++ ) + { + if ( diff_idx[i] <= 0 ) + { + idx[i] = -2 * diff_idx[i]; + } + else + { + idx[i] = 2 * diff_idx[i] - 1; + } + } + + return; +} + + +static void transform_index_and_GR_encode( + int16_t *diff_idx, /* i : differenc eindex to encode */ + const int16_t len, /* i : input length */ + const int16_t GR_order, /* i : GR order */ + BSTR_ENC_HANDLE hMetaData /* i/o: metadata bitstream handle */ +) +{ + int16_t i; + int16_t idx[IVAS_MAX_NUM_OBJECTS]; + + /* transform difference index into positive */ + transform_difference_index( diff_idx, idx, len ); + + /* GR encoding */ + for ( i = 0; i < len; i++ ) + { + ivas_qmetadata_encode_extended_gr( hMetaData, idx[i], 100, GR_order ); + } + + return; +} + + +static int16_t try_differential( + const int16_t numCodingBands, + const float *masa_to_total_energy_ratio, + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], + const int16_t nchan_ism, + const int16_t bits_index, + int16_t *p_b_signif ) +{ + int16_t b, i; + int16_t nbits0; + int16_t b_signif; + int16_t ratio_ism_idx_ref[MAX_NUM_OBJECTS]; + int16_t diff_idx[MAX_NUM_OBJECTS]; + + b_signif = 0; + while ( ( b_signif < numCodingBands ) && ( masa_to_total_energy_ratio[b_signif] >= MASA2TOTAL_THR ) ) + { + b_signif++; + } + + nbits0 = 0; + + if ( b_signif < numCodingBands ) + { + nbits0 = bits_index; + mvs2s( ratio_ism_idx[b_signif], ratio_ism_idx_ref, nchan_ism ); + + for ( b = b_signif + 1; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + v_sub_s( ratio_ism_idx[b], ratio_ism_idx_ref, diff_idx, nchan_ism ); + mvs2s( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism ); + + /* transform difference index into positive */ + transform_difference_index( diff_idx, diff_idx, nchan_ism - 1 ); + + /* GR encoding */ + for ( i = 0; i < nchan_ism - 1; i++ ) + { + nbits0 += ivas_qmetadata_encode_extended_gr_length( diff_idx[i], 100, 0 ); + } + } + } + } + *p_b_signif = b_signif; + + return nbits0; +} + + +static void differential_coding_first_subframe( + BSTR_ENC_HANDLE hMetaData, + const float *masa_to_total_energy_ratio, + const int16_t b_signif, + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], + const int16_t nchan_ism, + const int16_t numCodingBands, + const int16_t bits_index ) +{ + int16_t index, b; + int16_t ratio_ism_idx_ref[MAX_NUM_OBJECTS]; + int16_t diff_idx[MAX_NUM_OBJECTS]; + + /* differential encoding*/ + push_next_indice( hMetaData, 0, 1 ); + + if ( b_signif < numCodingBands ) + { + index = index_slice_enum( ratio_ism_idx[b_signif], nchan_ism ); + push_next_indice( hMetaData, index, bits_index ); + + mvs2s( ratio_ism_idx[b_signif], ratio_ism_idx_ref, nchan_ism ); + + for ( b = b_signif + 1; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + v_sub_s( ratio_ism_idx[b], ratio_ism_idx_ref, diff_idx, nchan_ism ); + mvs2s( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism ); + + /* transform difference index into positive */ + transform_index_and_GR_encode( diff_idx, nchan_ism - 1, 0, hMetaData ); + } + } + } + + return; +} + + +static void independent_coding_ratio_ism_idx( + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], /* i : ISM ratios */ + const float *masa_to_total_energy_ratio, /* i : MASA to total ratios */ + const int16_t nchan_ism, /* i : number of objects */ + const int16_t numCodingBands, /* i : number of subbands */ + const int16_t bits_index, /* i : number of bits per index */ + BSTR_ENC_HANDLE hMetaData /* i/o: metadata bitstream handle */ +) +{ + int16_t b, index; + + for ( b = 0; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + index = index_slice_enum( ratio_ism_idx[b], nchan_ism ); + push_next_indice( hMetaData, index, bits_index ); + } + } + + return; +} + + +static void remove_sep_obj( + int16_t *diff_idx, /* i/o: array of difference of indexes */ + const int16_t nchan_ism, /* i : number of objects */ + const int16_t idx_sep_obj /* i : index of separated object, to be taken out of array */ +) +{ + int16_t i; + + for ( i = idx_sep_obj; i < nchan_ism - 1; i++ ) + { + diff_idx[i] = diff_idx[i + 1]; + } + + return; +} + + +static void estimate_bits_subband_ism_ratio( + const int16_t *ratio_ism_idx, + const int16_t *ratio_ism_idx_ref, /* ( i/o ) */ + const int16_t nchan_ism, + const int16_t shift_one, + const int16_t idx_sep_obj, + int16_t *p_nbits0, + int16_t *p_nbits1 ) +{ + int16_t diff_idx[MAX_NUM_OBJECTS]; + int16_t nbits0, nbits1; + int16_t i; + + nbits0 = 0; + nbits1 = 0; + + /* take difference with respect to previous subframe */ + v_sub_s( ratio_ism_idx, ratio_ism_idx_ref, diff_idx, nchan_ism ); + + if ( shift_one ) + { + remove_sep_obj( diff_idx, nchan_ism, idx_sep_obj ); + } + + /* transform difference index into positive */ + transform_difference_index( diff_idx, diff_idx, nchan_ism - 1 - shift_one ); + + /* GR encoding */ + for ( i = 0; i < nchan_ism - 1 - shift_one; i++ ) + { + nbits0 += ivas_qmetadata_encode_extended_gr_length( diff_idx[i], 100, 0 ); + nbits1 += ivas_qmetadata_encode_extended_gr_length( diff_idx[i], 100, 1 ); + } + + *p_nbits0 = nbits0; + *p_nbits1 = nbits1; + + return; +} + + +static int16_t encode_ratio_ism_subframe( + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], + const int16_t nchan_ism, + const uint8_t numCodingBands, + const int16_t sf, + int16_t ratio_ism_idx_prev_sf[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], + BSTR_ENC_HANDLE hMetaData, + const float *masa_to_total_energy_ratio, + const int16_t shift_one, + const int16_t idx_separated_obj ) +{ + int16_t b, b_signif; + int16_t diff_idx[MAX_NUM_OBJECTS]; + int16_t nbits, nbits0, nbits1, GR_order, GR_order_sb; + int16_t differential_subframe; + int16_t ratio_ism_idx_ref[MAX_NUM_OBJECTS]; + int16_t bits_index; + int16_t nbits00, nbits11; + int16_t idx_sep_obj_local; +#ifdef DEBUGGING + int16_t bits_pos0; +#endif + + idx_sep_obj_local = idx_separated_obj; + if ( idx_separated_obj > -1 ) + { + if ( idx_separated_obj == nchan_ism - 1 ) + { + idx_sep_obj_local = 0; + } + } + nbits = 0; + nbits0 = 0; + nbits1 = 0; + +#ifdef DEBUGGING + bits_pos0 = hMetaData->nb_bits_tot; +#endif + differential_subframe = 1; /* the differences are taken with respect to previous subframe */ + + /* first subframe */ + bits_index = 0; + if ( sf == 0 ) + { + bits_index = bits_index_ism_ratio( nchan_ism ); + + nbits = 0; + for ( b = 0; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + nbits += bits_index; + } + } + + nbits0 = try_differential( numCodingBands, masa_to_total_energy_ratio, ratio_ism_idx, nchan_ism, bits_index, &b_signif ); + + if ( nbits <= nbits0 && nbits > 0 ) + { + /* independent encoding */ + push_next_indice( hMetaData, 1, 1 ); + independent_coding_ratio_ism_idx( ratio_ism_idx, masa_to_total_energy_ratio, nchan_ism, numCodingBands, bits_index, hMetaData ); + nbits = nbits + 1; + } + else + { + if ( nbits > 0 ) + { + differential_coding_first_subframe( hMetaData, masa_to_total_energy_ratio, b_signif, ratio_ism_idx, nchan_ism, numCodingBands, bits_index ); + nbits = nbits0 + 1; + } + } + +#ifdef DEBUGGING + assert( nbits == ( hMetaData->nb_bits_tot - bits_pos0 ) ); +#endif + } + else + { + /* not first subframe */ + if ( shift_one == 1 && nchan_ism == 2 ) + { + nbits = 0; + } + else + { + nbits0 = 0; + nbits1 = 0; + + for ( b = 0; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + estimate_bits_subband_ism_ratio( ratio_ism_idx[b], ratio_ism_idx_prev_sf[b], nchan_ism, shift_one, idx_sep_obj_local, &nbits00, &nbits11 ); + nbits0 += nbits00; + nbits1 += nbits11; + } + } + if ( nbits0 < nbits1 ) + { + GR_order = 0; + nbits = nbits0; + } + else + { + GR_order = 1; + nbits = nbits1; + } + + if ( numCodingBands > 1 ) + { + /* try the difference from subband to subband; first subband is compared to previous subframe first subband*/ + /* take difference with respect to previous subframe only for first subband */ + nbits0 = 0; + nbits1 = 0; + b_signif = 0; + while ( ( b_signif < numCodingBands ) && ( masa_to_total_energy_ratio[b_signif] >= MASA2TOTAL_THR ) ) + { + b_signif++; + } + + if ( b_signif < numCodingBands ) + { + estimate_bits_subband_ism_ratio( ratio_ism_idx[b_signif], ratio_ism_idx_prev_sf[b_signif], nchan_ism, shift_one, idx_sep_obj_local, &nbits0, &nbits1 ); + + mvs2s( ratio_ism_idx[b_signif], ratio_ism_idx_ref, nchan_ism ); + + for ( b = b_signif + 1; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + estimate_bits_subband_ism_ratio( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism, shift_one, idx_sep_obj_local, &nbits00, &nbits11 ); + nbits0 += nbits00; + nbits1 += nbits11; + mvs2s( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism ); + } + } + + if ( nbits0 < nbits1 ) + { + GR_order_sb = 0; + } + else + { + GR_order_sb = 1; + nbits0 = nbits1; + } + + if ( nbits0 < nbits ) + { + differential_subframe = 0; + nbits = nbits0; + GR_order = GR_order_sb; + } + + if ( nbits > 0 ) + { + /* write prediction type */ + push_next_indice( hMetaData, differential_subframe, 1 ); + /* write GR order */ + push_next_indice( hMetaData, GR_order, 1 ); + nbits++; /* for the prediction type */ + nbits++; /* for GR_order */ + + /* write data */ + if ( differential_subframe ) + { + for ( b = 0; b < numCodingBands; b++ ) + { + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + /* take difference with respect to previous subframe */ + v_sub_s( ratio_ism_idx[b], ratio_ism_idx_prev_sf[b], diff_idx, nchan_ism ); + + if ( shift_one ) + { + remove_sep_obj( diff_idx, nchan_ism, idx_sep_obj_local ); + } + + transform_index_and_GR_encode( diff_idx, nchan_ism - 1 - shift_one, GR_order, hMetaData ); + } + } + } + else + { + v_sub_s( ratio_ism_idx[b_signif], ratio_ism_idx_prev_sf[b_signif], diff_idx, nchan_ism ); + + if ( shift_one ) + { + remove_sep_obj( diff_idx, nchan_ism, idx_sep_obj_local ); + } + + transform_index_and_GR_encode( diff_idx, nchan_ism - 1 - shift_one, GR_order, hMetaData ); + + mvs2s( ratio_ism_idx[b_signif], ratio_ism_idx_ref, nchan_ism - shift_one ); + + for ( b = b_signif + 1; b < numCodingBands; b++ ) + { + /* take difference with respect to previous subband */ + if ( masa_to_total_energy_ratio[b] < MASA2TOTAL_THR ) + { + v_sub_s( ratio_ism_idx[b], ratio_ism_idx_ref, diff_idx, nchan_ism ); + + if ( shift_one ) + { + remove_sep_obj( diff_idx, nchan_ism, idx_sep_obj_local ); + } + + transform_index_and_GR_encode( diff_idx, nchan_ism - 1 - shift_one, GR_order, hMetaData ); + + mvs2s( ratio_ism_idx[b], ratio_ism_idx_ref, nchan_ism - shift_one ); + } + } + } + } + } + } + else + { + /* only differential wrt previous subframe is possible */ + /* write the differential to subframe case and no bit to signal the difference type */ + + if ( nbits > 0 ) + { + /* write GR order */ + push_next_indice( hMetaData, GR_order, 1 ); + nbits++; /* for GR_order */ + /* write data */ + /* only one subband */ + if ( masa_to_total_energy_ratio[0] < MASA2TOTAL_THR ) + { + /* take difference with respect to previous subframe */ + v_sub_s( ratio_ism_idx[0], ratio_ism_idx_prev_sf[0], diff_idx, nchan_ism ); + + if ( shift_one ) + { + remove_sep_obj( diff_idx, nchan_ism, idx_sep_obj_local ); + } + + transform_index_and_GR_encode( diff_idx, nchan_ism - 1 - shift_one, GR_order, hMetaData ); + } + } + } + +#ifdef DEBUGGING + assert( nbits == ( hMetaData->nb_bits_tot - bits_pos0 ) ); +#endif + } + } + + return nbits; +} + + +static void ivas_encode_masaism_metadata( + MASA_ENCODER_HANDLE hMasa, + IVAS_QMETADATA_HANDLE hQMetaData, /* i/o: q_metadata handle */ + BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream handle */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handles */ + const int16_t nchan_ism, /* i : number of ISM channels */ + const int16_t low_bitrate_mode, /* i : is low bitrate more? 1/0 */ + const int16_t omasa_nbands, + const int16_t omasa_nblocks, + const int16_t idx_separated_object, + const int16_t ism_imp ) +{ + int16_t sf, band; + uint8_t numCodingBands; + uint8_t numSf; + int16_t brange[2]; + float eneBand; + int16_t bin; + int16_t obj; + int16_t bits_ism[MAX_NUM_OBJECTS]; + uint16_t idx_sph; + float theta_q, phi_q; + uint16_t index_theta, index_phi; + float ratio_ism[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS]; + int16_t ratio_ism_idx[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS], ratio_ism_idx_prev_sf[MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS]; + float step; + int16_t inv_step; + float energy_ism, energy_ism_ind[MAX_NUM_OBJECTS]; + int16_t tmp, rotate; + int16_t n_ism_tmp, i; + OMASA_ENCODER_DATA_HANDLE hOmasaData = hMasa->data.hOmasaData; + int16_t nbands_work; + + /* use the values from hQMetaData */ + numCodingBands = (uint8_t) hQMetaData->q_direction->cfg.nbands; + numSf = (int8_t) hQMetaData->q_direction->cfg.nblocks; + nbands_work = min( numCodingBands, omasa_nbands ); + if ( numCodingBands == 1 ) + { + for ( sf = 0; sf < numSf; sf++ ) + { + if ( sum_f( hOmasaData->energy_ism[sf], omasa_nbands ) == 0.0f ) + { + hOmasaData->masa_to_total_energy_ratio[sf][0] = 1.0f; + } + else + { + brange[0] = hMasa->data.band_mapping[0]; + brange[1] = hMasa->data.band_mapping[omasa_nbands]; + eneBand = 0.0f; + for ( bin = brange[0]; bin < brange[1]; bin++ ) + { + eneBand += hMasa->data.energy[sf][bin]; + } + + energy_ism = 0.0f; + for ( obj = 0; obj < nchan_ism; obj++ ) + { + energy_ism_ind[obj] = 0.0f; + } + + for ( band = 0; band < omasa_nbands; band++ ) + { + energy_ism += hOmasaData->energy_ism[sf][band]; + for ( obj = 0; obj < nchan_ism; obj++ ) + { + energy_ism_ind[obj] += hOmasaData->energy_ism[sf][band] * hOmasaData->energy_ratio_ism[sf][band][obj]; + } + } + + for ( obj = 0; obj < nchan_ism; obj++ ) + { + hOmasaData->energy_ratio_ism[sf][0][obj] = energy_ism_ind[obj] / energy_ism; + } + hOmasaData->masa_to_total_energy_ratio[sf][0] = eneBand / ( eneBand + energy_ism + EPSILON ); + } + } + } + else if ( numSf == 1 ) + { + for ( band = 0; band < nbands_work; band++ ) + { + energy_ism = 0.0f; /* ISM energy for current subband */ + for ( obj = 0; obj < nchan_ism; obj++ ) + { + energy_ism_ind[obj] = 0.0f; + } + for ( sf = 0; sf < omasa_nblocks; sf++ ) + { + energy_ism += hOmasaData->energy_ism[sf][band]; + for ( obj = 0; obj < nchan_ism; obj++ ) + { + energy_ism_ind[obj] += hOmasaData->energy_ism[sf][band] * hOmasaData->energy_ratio_ism[sf][band][obj]; + } + } + + if ( energy_ism == 0.0f ) + { + hOmasaData->masa_to_total_energy_ratio[0][band] = 1.0f; + } + else + { + for ( obj = 0; obj < nchan_ism; obj++ ) + { + hOmasaData->energy_ratio_ism[0][band][obj] = energy_ism_ind[obj] / energy_ism; + } + brange[0] = hMasa->data.band_mapping[band]; + brange[1] = hMasa->data.band_mapping[band + 1]; + + eneBand = 0.0f; + for ( sf = 0; sf < omasa_nblocks; sf++ ) + { + for ( bin = brange[0]; bin < brange[1]; bin++ ) + { + eneBand += hMasa->data.energy[sf][bin]; + } + } + hOmasaData->masa_to_total_energy_ratio[0][band] = eneBand / ( eneBand + energy_ism + EPSILON ); + } + } + for ( band = nbands_work; band < numCodingBands; band++ ) + { + hOmasaData->masa_to_total_energy_ratio[0][band] = 1.0f; + + for ( obj = 0; obj < nchan_ism; obj++ ) + { + hOmasaData->energy_ratio_ism[0][band][obj] = hOmasaData->energy_ratio_ism[0][nbands_work - 1][obj]; + } + } + } + else + { + for ( sf = 0; sf < numSf; sf++ ) + { + for ( band = 0; band < nbands_work; band++ ) + { + if ( hOmasaData->energy_ism[sf][band] == 0.0f ) + { + hOmasaData->masa_to_total_energy_ratio[sf][band] = 1.0f; + } + else + { + brange[0] = hMasa->data.band_mapping[band]; + brange[1] = hMasa->data.band_mapping[band + 1]; + + eneBand = 0.0f; + for ( bin = brange[0]; bin < brange[1]; bin++ ) + { + eneBand += hMasa->data.energy[sf][bin]; + } + hOmasaData->masa_to_total_energy_ratio[sf][band] = eneBand / ( eneBand + hOmasaData->energy_ism[sf][band] + EPSILON ); + } + } + for ( band = nbands_work; band < numCodingBands; band++ ) + { + hOmasaData->masa_to_total_energy_ratio[sf][band] = 1.0f; + + for ( obj = 0; obj < nchan_ism; obj++ ) + { + hOmasaData->energy_ratio_ism[sf][band][obj] = hOmasaData->energy_ratio_ism[sf][nbands_work - 1][obj]; + } + } + } + } + ivas_omasa_encode_masa_to_total( hOmasaData->masa_to_total_energy_ratio, hMetaData, low_bitrate_mode, numCodingBands, numSf ); + + /* quantize ism_ratios */ + if ( nchan_ism > 1 ) + { + inv_step = ( ( 1 << PARAM_ISM_POW_RATIO_NBITS ) - 1 ); + step = 1.0f / inv_step; + + rotate = 0; + n_ism_tmp = 0; + + for ( sf = 0; sf < numSf; sf++ ) + { + for ( band = 0; band < numCodingBands; band++ ) + { + for ( obj = 0; obj < nchan_ism; obj++ ) + { + assert( ( hOmasaData->energy_ratio_ism[sf][band][obj] >= 0 ) && ( hOmasaData->energy_ratio_ism[sf][band][obj] <= 1 ) ); + ratio_ism[band][obj] = hOmasaData->energy_ratio_ism[sf][band][obj]; + } + + /* Quantize ISM ratios */ + quantize_ratio_ism_vector( ratio_ism[band], ratio_ism_idx[band], nchan_ism, hOmasaData->masa_to_total_energy_ratio[sf][band], idx_separated_object ); + if ( n_ism_tmp == numCodingBands && ratio_ism_idx[band][idx_separated_object] != 0 && hOmasaData->masa_to_total_energy_ratio[sf][band] < MASA2TOTAL_THR ) + { + i = 0; + while ( ratio_ism_idx[band][idx_separated_object] > 0 ) + { + if ( i != idx_separated_object ) + { + ratio_ism_idx[band][i]++; + ratio_ism_idx[band][idx_separated_object]--; + } + i++; + if ( i == nchan_ism ) + { + i = 0; + } + } + } + + /* reconstructed values */ + reconstruct_ism_ratios( ratio_ism_idx[band], nchan_ism, step, hMasa->data.hOmasaData->q_energy_ratio_ism[sf][band] ); + } + + if ( ( nchan_ism > 2 ) && ( idx_separated_object == nchan_ism - 1 ) ) + { + /* rotate components */ + rotate = 1; + for ( band = 0; band < numCodingBands; band++ ) + { + if ( hOmasaData->masa_to_total_energy_ratio[sf][band] < MASA2TOTAL_THR ) + { + tmp = ratio_ism_idx[band][nchan_ism - 1]; + ratio_ism_idx[band][nchan_ism - 1] = ratio_ism_idx[band][0]; + ratio_ism_idx[band][0] = tmp; + if ( sf == 0 && tmp == 0 ) + { + n_ism_tmp += 1; + } + + if ( n_ism_tmp == numCodingBands ) + { + assert( tmp == 0 ); + } + } + } + } + else + { + if ( idx_separated_object > -1 ) + { + for ( band = 0; band < numCodingBands; band++ ) + { + if ( hOmasaData->masa_to_total_energy_ratio[sf][band] < MASA2TOTAL_THR ) + { + if ( ratio_ism_idx[band][idx_separated_object] == 0 && sf == 0 ) + { + n_ism_tmp++; + } + } + } + } + } + + /* encode data for current subframe */ + if ( sf > 0 && n_ism_tmp == numCodingBands ) + { + encode_ratio_ism_subframe( ratio_ism_idx, nchan_ism, numCodingBands, sf, ratio_ism_idx_prev_sf, hMetaData, hOmasaData->masa_to_total_energy_ratio[sf], 1, idx_separated_object ); + } + else + { + encode_ratio_ism_subframe( ratio_ism_idx, nchan_ism, numCodingBands, sf, ratio_ism_idx_prev_sf, hMetaData, hOmasaData->masa_to_total_energy_ratio[sf], 0, idx_separated_object ); + } + + /* calculate quantized ISM ratios */ + /* save previous subframe indexes */ + for ( band = 0; band < numCodingBands; band++ ) + { + mvs2s( ratio_ism_idx[band], ratio_ism_idx_prev_sf[band], nchan_ism ); + } + + if ( rotate ) + { + for ( band = 0; band < numCodingBands; band++ ) + { + if ( hOmasaData->masa_to_total_energy_ratio[sf][band] < MASA2TOTAL_THR ) + { + tmp = ratio_ism_idx[band][nchan_ism - 1]; + ratio_ism_idx[band][nchan_ism - 1] = ratio_ism_idx[band][0]; + ratio_ism_idx[band][0] = tmp; + } + } + } + } + } + calculate_nbits_meta( nchan_ism, hOmasaData->q_energy_ratio_ism, hOmasaData->masa_to_total_energy_ratio, numSf, numCodingBands, bits_ism, idx_separated_object, ism_imp ); + /* quantize directions */ + for ( obj = 0; obj < nchan_ism; obj++ ) + { + if ( bits_ism[obj] < 8 ) + { + /* check is same as previous */ + if ( ( fabs( hIsmMeta[obj]->elevation - hIsmMeta[obj]->q_elevation_old ) < 0.01f ) && ( fabs( hIsmMeta[obj]->azimuth - hIsmMeta[obj]->q_azimuth_old ) < 0.01f ) ) + { + push_next_indice( hMetaData, 1, 1 ); + /* the old stays the same */ + } + else + { + push_next_indice( hMetaData, 0, 1 ); + idx_sph = quantize_direction( hIsmMeta[obj]->elevation, hIsmMeta[obj]->azimuth, bits_ism[obj], &theta_q, &phi_q, &index_theta, &index_phi, MC_LS_SETUP_INVALID ); + push_next_indice( hMetaData, idx_sph, bits_ism[obj] ); + hIsmMeta[obj]->q_elevation_old = hIsmMeta[obj]->elevation; + hIsmMeta[obj]->q_azimuth_old = hIsmMeta[obj]->azimuth; + } + } + else + { + idx_sph = quantize_direction( hIsmMeta[obj]->elevation, hIsmMeta[obj]->azimuth, bits_ism[obj], &theta_q, &phi_q, &index_theta, &index_phi, MC_LS_SETUP_INVALID ); + push_next_indice( hMetaData, idx_sph, bits_ism[obj] ); + hIsmMeta[obj]->q_elevation_old = hIsmMeta[obj]->elevation; + hIsmMeta[obj]->q_azimuth_old = hIsmMeta[obj]->azimuth; + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * ivas_merge_masa_transports() + * + * Merge MASA transport channels + *-------------------------------------------------------------------*/ + +void ivas_merge_masa_transports( + float data_in_f1[][L_FRAME48k], + float *data_in_f2[], + float *data_out_f[], + const int16_t input_frame, + const int16_t num_transport_channels ) +{ + int16_t i, j; + + for ( i = 0; i < num_transport_channels; i++ ) + { + for ( j = 0; j < input_frame; j++ ) + { + data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; + } + } + + return; +} diff --git a/lib_enc/ivas_mc_param_enc.c b/lib_enc/ivas_mc_param_enc.c index fe4f8e8cfcc54912cb246b4f5eb1ea9f0735537f..fba29756654186cdef4c5166f822b1b4b99865b3 100644 --- a/lib_enc/ivas_mc_param_enc.c +++ b/lib_enc/ivas_mc_param_enc.c @@ -35,9 +35,7 @@ #include "options.h" #include "cnst.h" #include "rom_enc.h" -#ifdef FIX_580_PARAMMC_ENER_BURSTS #include "ivas_rom_enc.h" -#endif #include "rom_com.h" #include "prot.h" #include "ivas_prot.h" @@ -56,9 +54,9 @@ * Local function prototypes *------------------------------------------------------------------------*/ -static void ivas_param_mc_dmx( PARAM_MC_ENC_HANDLE hParamMC, float data_f[][L_FRAME48k], float data_dmx[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_input, const int16_t nchan_transport ); +static void ivas_param_mc_dmx( PARAM_MC_ENC_HANDLE hParamMC, float *data_f[], float data_dmx[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_input, const int16_t nchan_transport ); -static void ivas_param_mc_param_est_enc( PARAM_MC_ENC_HANDLE hParamMC, float input_frame_t[][L_FRAME48k], float Cy_sum[][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS], float Cx_sum[][PARAM_MC_MAX_TRANSPORT_CHANS][PARAM_MC_MAX_TRANSPORT_CHANS], const int16_t input_frame, const int16_t nchan_input, const int16_t nchan_transport ); +static void ivas_param_mc_param_est_enc( PARAM_MC_ENC_HANDLE hParamMC, float *data_f[], float Cy_sum[][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS], float Cx_sum[][PARAM_MC_MAX_TRANSPORT_CHANS][PARAM_MC_MAX_TRANSPORT_CHANS], const int16_t input_frame, const int16_t nchan_input, const int16_t nchan_transport ); static void ivas_param_mc_parameter_quantizer( const float *x, const int16_t L, const int16_t sz_quantizer, const float *quantizer, int16_t *quant_idx, float *y ); @@ -215,13 +213,11 @@ ivas_error ivas_param_mc_enc_open( /* Init total/dmx ener factors */ set_f( hParamMC->ener_fac, 0.0f, PARAM_MC_MAX_PARAMETER_BANDS ); -#ifdef FIX_580_PARAMMC_ENER_BURSTS /* init previous ILDs */ for ( i = 0; i < PARAM_MC_MAX_PARAMETER_BANDS; i++ ) { set_zero( hParamMC->prev_ilds[i], PARAM_MC_SZ_ILD_MAP ); } -#endif st_ivas->hParamMC = hParamMC; @@ -397,10 +393,10 @@ void ivas_param_mc_enc_close( *------------------------------------------------------------------------*/ 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[][L_FRAME48k], /* i/o: input: MC data */ - const int16_t input_frame /* i : input frame length */ + 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 */ ) { int16_t k; @@ -493,10 +489,6 @@ void ivas_param_mc_enc( { hParamMC->hMetadataPMC.attackIndex = 0; } - -#ifndef FIX_580_PARAMMC_ENER_BURSTS - band_step = hParamMC->hMetadataPMC.bAttackPresent ? PARAM_MC_TRANSIENT_BAND_STEP : 1; -#endif } break; #ifdef DEBUGGING @@ -509,9 +501,7 @@ void ivas_param_mc_enc( /* parameter estimation*/ ivas_param_mc_param_est_enc( hParamMC, data_f, Cy_sum, Cx_sum, input_frame, nchan_inp, st_ivas->nchan_transport ); -#ifdef FIX_580_PARAMMC_ENER_BURSTS band_step = hParamMC->hMetadataPMC.bAttackPresent ? PARAM_MC_TRANSIENT_BAND_STEP : 1; -#endif /* ILD parameter quantization */ @@ -584,7 +574,7 @@ void ivas_param_mc_enc( static void ivas_param_mc_dmx( PARAM_MC_ENC_HANDLE hParamMC, /* i/o: Parametric MC encoder handle */ - float data_f[][L_FRAME48k], /* i : Input frame */ + float *data_f[], /* i : Input frame */ float data_dmx[][L_FRAME48k], /* o : Down mixed frame */ const int16_t input_frame, /* i : Input frame length */ const int16_t nchan_input, /* i : number of input channels */ @@ -625,7 +615,7 @@ static void ivas_param_mc_dmx( static void ivas_param_mc_param_est_enc( PARAM_MC_ENC_HANDLE hParamMC, /* i/o: Parametric MC encoder handle */ - float input_frame_t[][L_FRAME48k], /* i : Input frame in the time domain */ + float *data_f[], /* i : Input frame in the time domain */ float Cy_sum[][MAX_CICP_CHANNELS][MAX_CICP_CHANNELS], /* o : Covariance matrix for the original frame */ float Cx_sum[][PARAM_MC_MAX_TRANSPORT_CHANS][PARAM_MC_MAX_TRANSPORT_CHANS], /* o : Covariance matrix for the downmixed frame */ const int16_t input_frame, /* i : Input frame length */ @@ -683,7 +673,7 @@ static void ivas_param_mc_param_est_enc( for ( i = 0; i < nchan_input; i++ ) { idx_ls = map_ls[i]; - pcm_in[i] = &input_frame_t[idx_ls][0]; + pcm_in[i] = data_f[idx_ls]; p_slot_frame_f_real[i] = &slot_frame_f_real[i][0]; p_slot_frame_f_imag[i] = &slot_frame_f_imag[i][0]; } @@ -847,7 +837,6 @@ static void ivas_param_mc_param_est_enc( } } -#ifdef FIX_580_PARAMMC_ENER_BURSTS if ( !hParamMC->hMetadataPMC.bAttackPresent ) { const PARAM_MC_ILD_MAPPING *h_ild_mapping; @@ -903,7 +892,6 @@ static void ivas_param_mc_param_est_enc( hParamMC->hMetadataPMC.bAttackPresent = 1; } } -#endif if ( hParamMC->hMetadataPMC.bAttackPresent ) @@ -932,11 +920,7 @@ static void ivas_param_mc_param_est_enc( for ( ; cur_param_band < num_parameter_bands; cur_param_band += 2 ) { -#ifdef FIX_563_PARAMMC_LIMITER if ( cur_param_band < num_parameter_bands ) -#else - if ( cur_param_band + 1 < num_parameter_bands ) -#endif { for ( ch_idx1 = 0; ch_idx1 < nchan_transport; ++ch_idx1 ) { @@ -1332,11 +1316,7 @@ static void ivas_param_mc_quantize_ilds( ener_fac = 10.0f * log10f( ( tot_ener + EPSILON ) / ( dmx_ener + EPSILON ) ); delta_fac = ener_fac - hParamMC->ener_fac[freq_idx]; -#ifdef FIX_563_PARAMMC_LIMITER if ( !hParamMC->hMetadataPMC.bAttackPresent && ( delta_fac > PARAM_MC_ENER_LIMIT_INTERFRAME ) && ( delta_fac < PARAM_MC_ENER_LIMIT_MAX_DELTA_FAC ) ) -#else - if ( !hParamMC->hMetadataPMC.bAttackPresent && ( delta_fac > PARAM_MC_ENER_LIMIT_INTERFRAME ) ) -#endif { float limit_fac; limit_fac = powf( 10.0f, ( ( 0.3f * logf( delta_fac - PARAM_MC_ENER_LIMIT_INTERFRAME + 1.0f ) - ( delta_fac - PARAM_MC_ENER_LIMIT_INTERFRAME ) ) / 10.0f ) ); @@ -1346,13 +1326,11 @@ static void ivas_param_mc_quantize_ilds( hParamMC->ener_fac[freq_idx] = ener_fac; -#ifdef FIX_563_PARAMMC_LIMITER /* update also combined bands ener_fac when in transient frame */ if ( hParamMC->hMetadataPMC.bAttackPresent && ( ( freq_idx + 1 ) < hParamMC->hMetadataPMC.nbands_coded ) ) { hParamMC->ener_fac[freq_idx + 1] = ener_fac; } -#endif for ( k = 0; k < num_ilds_to_code; ++k ) { @@ -1366,13 +1344,11 @@ static void ivas_param_mc_quantize_ilds( ref_ener += Cx[ref_channel_idx][ref_channel_idx]; } ILD[k] = 10.0f * log10f( ( Nrg[h_ild_mapping->ild_index[k]] + EPSILON ) / ( hParamMC->hMetadataPMC.ild_factors[k] * ref_ener + EPSILON ) ); -#ifdef FIX_580_PARAMMC_ENER_BURSTS hParamMC->prev_ilds[freq_idx][k] = ILD[k]; if ( hParamMC->hMetadataPMC.bAttackPresent && ( ( freq_idx + 1 ) < hParamMC->hMetadataPMC.nbands_coded ) ) { hParamMC->prev_ilds[freq_idx + 1][k] = ILD[k]; } -#endif } @@ -1744,7 +1720,6 @@ static void ivas_param_mc_encode_parameter( if ( hMetadataPMC->bAttackPresent || hMetadataPMC->param_frame_idx == hMetadataPMC->coding_band_mapping[i] ) { /* LFE ICC/ILDs are always the last ones in coding band 0 */ -#ifdef FIX_578_PARAMMC_ILD_BS int16_t n_lfe_idx, k; n_lfe_idx = map_size - map_size_wo_lfe; for ( k = 0; k < n_lfe_idx; k++ ) @@ -1755,13 +1730,6 @@ static void ivas_param_mc_encode_parameter( idx_prev = idx; sz_seq++; } -#else - idx = quant_idx[( i + 1 ) * map_size - 1]; - seq[sz_seq] = idx; - seq_delta[sz_seq] = idx - idx_prev + idx_offset; - idx_prev = idx; - sz_seq++; -#endif } } } diff --git a/lib_enc/ivas_mc_paramupmix_enc.c b/lib_enc/ivas_mc_paramupmix_enc.c index 5c50c3d6bdd6946ff42c6dca80a34e953cf3fbc2..27ed7f250d93e8af5e3d6ed7abb965841140806d 100644 --- a/lib_enc/ivas_mc_paramupmix_enc.c +++ b/lib_enc/ivas_mc_paramupmix_enc.c @@ -53,9 +53,9 @@ * Local function prototypes *------------------------------------------------------------------------*/ -static void ivas_mc_paramupmix_dmx( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, float data_f[][L_FRAME48k], const int16_t input_frame ); +static void ivas_mc_paramupmix_dmx( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, float *data_f[], const int16_t input_frame ); -static void ivas_mc_paramupmix_param_est_enc( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, float input_frame_t[][L_FRAME48k], const int16_t input_frame, float alphas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS], float betas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS] ); +static void ivas_mc_paramupmix_param_est_enc( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, float *input_frame_t[], const int16_t input_frame, float alphas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS], float betas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS] ); static void get_huff_table( const PAR_TYPE par_type, const QUANT_TYPE quant_type, HUFF_TAB *df0, HUFF_TAB *df, HUFF_TAB *dt ); @@ -79,10 +79,10 @@ static void quantize_pars( const int16_t nv, const float *v, const int16_t nq, c *------------------------------------------------------------------------*/ void ivas_mc_paramupmix_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS Encoder handle */ - BSTR_ENC_HANDLE hBStr, /* i/o: IVAS Metadata bitstream handle */ - float data_f[][L_FRAME48k], /* i/o: input: MC data */ - const int16_t input_frame /* i : input frame length */ + Encoder_Struct *st_ivas, /* i/o: IVAS Encoder handle */ + BSTR_ENC_HANDLE hBStr, /* i/o: IVAS Metadata bitstream handle */ + float *data_f[], /* i/o: input/transport MC data */ + const int16_t input_frame /* i : input frame length */ ) { MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix; @@ -546,8 +546,8 @@ static void quantize_alpha( int16_t nq; const float *data; - nq = alpha_quant_table[quant_type].nquant; - data = alpha_quant_table[quant_type].data; + nq = ivas_mc_paramupmix_alpha_quant_table[quant_type].nquant; + data = ivas_mc_paramupmix_alpha_quant_table[quant_type].data; quantize_pars( nv, alpha, nq, data, aq, adeq ); @@ -567,7 +567,7 @@ static void quantize_beta( float *bdeq ) { int16_t iv, iq, iq0, iq1; - ACPL_QUANT_TABLE *tables = beta_quant_table[quant_type]; + const ACPL_QUANT_TABLE *tables = ivas_mc_paramupmix_beta_quant_table[quant_type]; ACPL_QUANT_TABLE quant_table; for ( iv = 0; iv < nv; iv++ ) @@ -602,7 +602,7 @@ static void quantize_beta( } } - *pnq = beta_quant_table[quant_type][0].nquant; + *pnq = ivas_mc_paramupmix_beta_quant_table[quant_type][0].nquant; return; } @@ -680,7 +680,7 @@ static void put_ec_data( static void ivas_mc_paramupmix_dmx( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, /* i/o: MC ParamUpmix encoder handle */ - float data_f[][L_FRAME48k], /* i/o: Input, downmix out */ + float *data_f[], /* i/o: Input, downmix out */ const int16_t input_frame /* i : Input frame length */ ) { @@ -725,7 +725,7 @@ static void ivas_mc_paramupmix_dmx( static void ivas_mc_paramupmix_param_est_enc( MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix, /* i/o: MC Param-Upmix encoder handle */ - float input_frame_t[][L_FRAME48k], /* i : Input frame in the time domain */ + float *data_f[], /* i : Input frame in the time domain */ const int16_t input_frame, /* i : Input frame length */ float alphas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS], float betas[MC_PARAMUPMIX_COMBINATIONS][IVAS_MAX_NUM_BANDS] ) @@ -753,8 +753,8 @@ static void ivas_mc_paramupmix_param_est_enc( for ( i = 0; i < MC_PARAMUPMIX_COMBINATIONS; i++ ) { - pcm_in[2 * i] = input_frame_t[chan1s[i]]; - pcm_in[2 * i + 1] = input_frame_t[chan2s[i]]; + pcm_in[2 * i] = data_f[chan1s[i]]; + pcm_in[2 * i + 1] = data_f[chan2s[i]]; } /*-----------------------------------------------------------------------------------------* @@ -821,7 +821,8 @@ static void ivas_mc_paramupmix_param_est_enc( } } - ivas_enc_cov_handler_process( hMCParamUpmix->hCovEnc[b], pp_in_fr_real, pp_in_fr_imag, cov_real, cov_dtx_real, hMCParamUpmix->hFbMixer->pFb, 0, hMCParamUpmix->hFbMixer->pFb->filterbank_num_bands, MC_PARAMUPMIX_NCH, 0 /*dtx_vad*/, transient_det[b], HOA_md_ind ); + ivas_enc_cov_handler_process( hMCParamUpmix->hCovEnc[b], pp_in_fr_real, pp_in_fr_imag, cov_real, cov_dtx_real, hMCParamUpmix->hFbMixer->pFb, 0, hMCParamUpmix->hFbMixer->pFb->filterbank_num_bands, MC_PARAMUPMIX_NCH, 0 /*dtx_vad*/, transient_det[b], HOA_md_ind, + NULL, NULL, NULL, 0, 0 ); } maxbands = hMCParamUpmix->hFbMixer->pFb->filterbank_num_bands; for ( b = 0; b < MC_PARAMUPMIX_COMBINATIONS; b++ ) diff --git a/lib_enc/ivas_mcmasa_enc.c b/lib_enc/ivas_mcmasa_enc.c index 9dbdbcab15b3f7de1c47813293cc4ef21573ec4b..3df783ad0523c9f39b183e13cb950612f7031cd7 100644 --- a/lib_enc/ivas_mcmasa_enc.c +++ b/lib_enc/ivas_mcmasa_enc.c @@ -65,7 +65,7 @@ typedef struct float xi[MCMASA_MAX_ANA_CHANS][MCMASA_MAX_ANA_CHANS]; } CovarianceMatrix; -static void ivas_mcmasa_dmx( MCMASA_ENC_HANDLE hMcMasa, float data_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_transport, const int16_t nchan_inp ); +static void ivas_mcmasa_dmx( MCMASA_ENC_HANDLE hMcMasa, float *data_f[], const int16_t input_frame, const int16_t nchan_transport, const int16_t nchan_inp ); static void compute_cov_mtx( float sr[MCMASA_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], float si[MCMASA_MAX_ANA_CHANS][DIRAC_NO_FB_BANDS_MAX], const int16_t freq, const int16_t N, CovarianceMatrix *COVls ); @@ -75,7 +75,7 @@ static void computeVerticalDiffuseness( float **buffer_intensity, const float *b static void computeEvenLayout( const float *ls_azimuth, float *ls_azimuth_even, const int16_t numChannels ); -static void computeLfeEnergy( MCMASA_ENC_HANDLE hMcMasa, float data_f[][L_FRAME48k], const int16_t input_frame ); +static void computeLfeEnergy( MCMASA_ENC_HANDLE hMcMasa, float *data_f[], const int16_t input_frame ); /*--------------------------------------------------------------------------* @@ -555,13 +555,14 @@ void ivas_mcmasa_enc_close( *--------------------------------------------------------------------------*/ void ivas_mcmasa_enc( - MCMASA_ENC_HANDLE hMcMasa, - IVAS_QMETADATA_HANDLE hQMeta, - MASA_ENCODER_HANDLE hMasa, - float data_f[][L_FRAME48k], - const int16_t input_frame, - const int16_t nchan_transport, - const int16_t nchan_inp ) + MCMASA_ENC_HANDLE hMcMasa, /* i/o: Encoder McMASA handle */ + IVAS_QMETADATA_HANDLE hQMeta, /* o : Qmetadata handle */ + MASA_ENCODER_HANDLE hMasa, /* i/o: Encoder MASA handle */ + float *data_f[], /* i : Input frame of audio */ + const int16_t input_frame, /* i : Input frame size */ + const int16_t nchan_transport, /* i : Number of transport channels */ + const int16_t nchan_inp /* i : Number of input channels */ +) { int16_t i, j, k; int16_t nBands = hMcMasa->nbands; @@ -725,7 +726,7 @@ void ivas_mcmasa_enc( void ivas_mcmasa_param_est_enc( MCMASA_ENC_HANDLE hMcMasa, /* i : McMASA encoder structure */ MASA_ENCODER_HANDLE hMasa, /* i : MASA encoder structure */ - float data_f[][L_FRAME48k], /* i : Audio frame in MC-format */ + float *data_f[], /* i : Audio frame in MC-format */ float elevation_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* o : Estimated elevation */ float azimuth_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* o : Estimated azimuth */ float energyRatio[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], /* o : Estimated direct-to-total ratio */ @@ -801,7 +802,7 @@ void ivas_mcmasa_param_est_enc( /* Copy current frame to memory for delay compensation */ for ( i = 0; i < numAnalysisChannels; i++ ) { - pcm_in[i] = &data_f[i][0]; + pcm_in[i] = data_f[i]; p_Chnl_RealBuffer[i] = &Chnl_RealBuffer[i][0]; p_Chnl_ImagBuffer[i] = &Chnl_ImagBuffer[i][0]; } @@ -979,7 +980,9 @@ void ivas_mcmasa_param_est_enc( num_freq_bands, MC_FORMAT, 0, - FOA_CHANNELS ); + FOA_CHANNELS, + NULL, + NULL ); /* Fill buffers of length "averaging_length" time slots for intensity and energy */ hMcMasa->index_buffer_intensity = ( hMcMasa->index_buffer_intensity % hMcMasa->no_col_avg_diff ) + 1; /* averaging_length = 32 */ @@ -1321,7 +1324,7 @@ void ivas_mcmasa_dmx_modify( /* Compute downmix */ static void ivas_mcmasa_dmx( MCMASA_ENC_HANDLE hMcMasa, - float data_f[][L_FRAME48k], + float *data_f[], const int16_t input_frame, const int16_t nchan_transport, const int16_t nchan_inp ) @@ -1615,7 +1618,7 @@ static void computeEvenLayout( static void computeLfeEnergy( MCMASA_ENC_HANDLE hMcMasa, - float data_f[][L_FRAME48k], + float *data_f[], const int16_t input_frame ) { int16_t l_ts; @@ -1632,13 +1635,14 @@ static void computeLfeEnergy( if ( hMcMasa->separateChannelEnabled ) { - mvr2r( &data_f[lfeChannelIndex][0], &( hMcMasa->delay_buffer_lfe[0][hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp] ), hMcMasa->offset_comp ); - mvr2r( &data_f[separateChannelIndex][0], &( hMcMasa->delay_buffer_lfe[1][hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp] ), hMcMasa->offset_comp ); + mvr2r( data_f[lfeChannelIndex], &( hMcMasa->delay_buffer_lfe[0][hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp] ), hMcMasa->offset_comp ); + mvr2r( data_f[separateChannelIndex], &( hMcMasa->delay_buffer_lfe[1][hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp] ), hMcMasa->offset_comp ); } else { pcm_in[0] = &data_f[lfeChannelIndex][0]; } + /* Reset variables */ set_zero( hMcMasa->lfeLfEne, MAX_PARAM_SPATIAL_SUBFRAMES ); set_zero( hMcMasa->totalLfEne, MAX_PARAM_SPATIAL_SUBFRAMES ); @@ -1652,9 +1656,9 @@ static void computeLfeEnergy( float lowPassSignal[2][L_FRAME48k]; mvr2r( &( hMcMasa->delay_buffer_lfe[0][0] ), &( delayedInputSignal[0][0] ), hMcMasa->num_slots_delay_comp * l_ts ); - mvr2r( &( data_f[lfeChannelIndex][hMcMasa->offset_comp] ), &( delayedInputSignal[0][hMcMasa->num_slots_delay_comp * l_ts] ), ( MDFT_NO_COL_MAX - hMcMasa->num_slots_delay_comp ) * l_ts ); + mvr2r( data_f[lfeChannelIndex] + hMcMasa->offset_comp, &( delayedInputSignal[0][hMcMasa->num_slots_delay_comp * l_ts] ), ( MDFT_NO_COL_MAX - hMcMasa->num_slots_delay_comp ) * l_ts ); mvr2r( &( hMcMasa->delay_buffer_lfe[1][0] ), &( delayedInputSignal[1][0] ), hMcMasa->num_slots_delay_comp * l_ts ); - mvr2r( &( data_f[separateChannelIndex][hMcMasa->offset_comp] ), &( delayedInputSignal[1][hMcMasa->num_slots_delay_comp * l_ts] ), ( MDFT_NO_COL_MAX - hMcMasa->num_slots_delay_comp ) * l_ts ); + mvr2r( data_f[separateChannelIndex] + hMcMasa->offset_comp, &( delayedInputSignal[1][hMcMasa->num_slots_delay_comp * l_ts] ), ( MDFT_NO_COL_MAX - hMcMasa->num_slots_delay_comp ) * l_ts ); lowpassCoef = 1.0f / ( (float) hMcMasa->ringBufferSize ); @@ -1725,8 +1729,8 @@ static void computeLfeEnergy( if ( hMcMasa->separateChannelEnabled ) { - mvr2r( &data_f[lfeChannelIndex][input_frame - hMcMasa->num_samples_delay_comp + hMcMasa->offset_comp], &( hMcMasa->delay_buffer_lfe[0][0] ), ( hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp ) ); - mvr2r( &data_f[separateChannelIndex][input_frame - hMcMasa->num_samples_delay_comp + hMcMasa->offset_comp], &( hMcMasa->delay_buffer_lfe[1][0] ), ( hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp ) ); + mvr2r( data_f[lfeChannelIndex] + ( input_frame - hMcMasa->num_samples_delay_comp + hMcMasa->offset_comp ), &( hMcMasa->delay_buffer_lfe[0][0] ), ( hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp ) ); + mvr2r( data_f[separateChannelIndex] + ( input_frame - hMcMasa->num_samples_delay_comp + hMcMasa->offset_comp ), &( hMcMasa->delay_buffer_lfe[1][0] ), ( hMcMasa->num_samples_delay_comp - hMcMasa->offset_comp ) ); } return; diff --git a/lib_enc/ivas_mct_core_enc.c b/lib_enc/ivas_mct_core_enc.c old mode 100755 new mode 100644 index 0c98f82d056c14fdccb22168f313ba6963a80b52..bad65750ef25dd439435aa722318be88545ac464 --- a/lib_enc/ivas_mct_core_enc.c +++ b/lib_enc/ivas_mct_core_enc.c @@ -143,8 +143,8 @@ static void AdjustChannelRatios( } for ( i = 3; i < nChannels; i++ ) { - cur_ratio = (float) chBitRatios[i] / sum_ratio; - tar_ratio = (float) force_ch_bit_ratios[i] / sum_tar_ratio; + cur_ratio = (float) chBitRatios[i] / ( sum_ratio + FLT_MIN ); + tar_ratio = (float) force_ch_bit_ratios[i] / ( sum_tar_ratio + FLT_MIN ); tar_ratio = min( tar_ratio, cur_ratio ); chBitRatios[i] = (int16_t) ( tar_ratio * sum_tar_ratio ); @@ -481,10 +481,14 @@ void ivas_mct_core_enc( nAvailBits -= IVAS_FORMAT_SIGNALING_NBITS; nAvailBits -= MC_LS_SETUP_BITS; } - else if ( ivas_format == SBA_FORMAT ) + else if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { nAvailBits -= IVAS_FORMAT_SIGNALING_NBITS_EXTENDED; nAvailBits -= SBA_ORDER_BITS + SBA_PLANAR_BITS; + if ( ivas_format == SBA_ISM_FORMAT && nChannels > 4 ) + { + nAvailBits -= IVAS_COMBINED_FORMAT_SIGNALLING_BITS; + } } for ( cpe_id = 0, i = 0; cpe_id < nCPE; cpe_id++ ) @@ -558,6 +562,7 @@ void ivas_mct_core_enc( #ifdef DEBUGGING format_bits = ( ivas_format == MC_FORMAT ? IVAS_FORMAT_SIGNALING_NBITS + MC_LS_SETUP_BITS : IVAS_FORMAT_SIGNALING_NBITS_EXTENDED + SBA_ORDER_BITS + SBA_PLANAR_BITS ); + format_bits += ( ivas_format == SBA_ISM_FORMAT && nChannels > FOA_CHANNELS ); mct_bits += hMCT->nBitsMCT + hMCT->nchan_out_woLFE; assert( ( total_brate + ( NBITS_BWIDTH + format_bits + mct_bits + sba_meta + lfe_bits ) * FRAMES_PER_SEC ) == ivas_total_brate ); #endif diff --git a/lib_enc/ivas_mct_enc.c b/lib_enc/ivas_mct_enc.c index 42ce327a4c47ea85b0f53df6a61a4a4bf336f632..895e8647972f7f6f94e18712a47490a545f67734 100644 --- a/lib_enc/ivas_mct_enc.c +++ b/lib_enc/ivas_mct_enc.c @@ -103,13 +103,19 @@ static void set_mct_enc_params( *-------------------------------------------------------------------*/ static void map_input_to_cpe_channels( - const Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float *pdata[MAX_INPUT_CHANNELS], /* o : mapped input pointers */ - float data[MCT_MAX_CHANNELS][L_FRAME48k] /* i : input channel data */ + const Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ + float *pdata[MAX_INPUT_CHANNELS], /* o : mapped input pointers */ + float *data[MCT_MAX_CHANNELS] /* i : input channel data */ ) { int16_t i, n; + int16_t nchan_transport; + nchan_transport = st_ivas->nchan_transport; + if ( st_ivas->hEncoderConfig->ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + nchan_transport += st_ivas->hEncoderConfig->nchan_ism; + } i = 0; for ( n = 0; n < LFE_CHANNEL - 1; n++ ) @@ -119,7 +125,7 @@ static void map_input_to_cpe_channels( } if ( st_ivas->hEncoderConfig->ivas_format == MC_FORMAT && ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) ) { - for ( n = LFE_CHANNEL + 1; n < st_ivas->nchan_transport; n++ ) + for ( n = LFE_CHANNEL + 1; n < nchan_transport; n++ ) { pdata[i] = data[n]; i++; @@ -128,7 +134,7 @@ static void map_input_to_cpe_channels( } else { - for ( ; n < st_ivas->nchan_transport; n++ ) + for ( ; n < nchan_transport; n++ ) { pdata[i] = data[n]; i++; @@ -136,7 +142,8 @@ static void map_input_to_cpe_channels( } /* odd channel CPE*/ - if ( ( st_ivas->nchan_transport < st_ivas->nCPE * CPE_CHANNELS ) || ( ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && st_ivas->hMCT->nchan_out_woLFE < st_ivas->nCPE * CPE_CHANNELS ) ) + if ( ( nchan_transport < st_ivas->nCPE * CPE_CHANNELS ) || ( ( st_ivas->mc_mode == MC_MODE_MCT || st_ivas->mc_mode == MC_MODE_PARAMUPMIX ) && st_ivas->hMCT->nchan_out_woLFE < st_ivas->nCPE * CPE_CHANNELS ) ) + { pdata[st_ivas->nCPE * CPE_CHANNELS - 1] = NULL; } @@ -152,10 +159,10 @@ static void map_input_to_cpe_channels( *-------------------------------------------------------------------*/ ivas_error ivas_mct_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data[MCT_MAX_CHANNELS][L_FRAME48k], /* i : input signal */ - const int16_t input_frame, /* i : input frame length per channel */ - const int16_t nb_bits_metadata /* i : number of metadata bits */ + 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 */ ) { int16_t n, cpe_id; @@ -304,9 +311,13 @@ ivas_error create_mct_enc( { hMCT->nchan_out_woLFE = st_ivas->hEncoderConfig->nchan_inp - 1; /* LFE channel is coded separately */ } - else if ( ivas_format == SBA_FORMAT ) + else if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { hMCT->nchan_out_woLFE = ivas_get_sba_num_TCs( ivas_total_brate, st_ivas->sba_analysis_order ); + if ( ivas_format == SBA_ISM_FORMAT && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + hMCT->nchan_out_woLFE += st_ivas->hEncoderConfig->nchan_ism; + } } else if ( ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_PARAMMC ) { @@ -430,7 +441,7 @@ ivas_error mct_enc_reconfigure( { hMCT->nchan_out_woLFE = ivas_param_mc_getNumTransportChannels( ivas_total_brate, st_ivas->hEncoderConfig->mc_input_setup ); } - else if ( ivas_format == SBA_FORMAT ) + else if ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) { hMCT->nchan_out_woLFE = st_ivas->nchan_transport; } diff --git a/lib_enc/ivas_omasa_enc.c b/lib_enc/ivas_omasa_enc.c new file mode 100644 index 0000000000000000000000000000000000000000..5f232d8168d6d6a646ae8765e395d034e9e40405 --- /dev/null +++ b/lib_enc/ivas_omasa_enc.c @@ -0,0 +1,1160 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include +#include +#include "ivas_cnst.h" +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_rom_com.h" +#include "ivas_rom_enc.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Local function prototypes + *------------------------------------------------------------------------*/ + +static void ivas_omasa_param_est_enc( OMASA_ENC_HANDLE hOMasa, OMASA_ENCODER_DATA_HANDLE hOmasaData, ISM_METADATA_HANDLE hIsmMeta[], float *data_f[], float elevation_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], float azimuth_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], float energyRatio[MASA_FREQUENCY_BANDS], float spreadCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], float surroundingCoherence[MASA_FREQUENCY_BANDS], float diffuseness_m[MASA_FREQUENCY_BANDS], const int16_t input_frame, const int16_t nchan_inp ); + +static void ivas_omasa_energy_and_ratio_est( OMASA_ENC_HANDLE hOMasa, OMASA_ENCODER_DATA_HANDLE hOmasaData, float *data_f[], const int16_t input_frame, const int16_t nchan_inp ); + +static void ivas_omasa_dmx( float *data_in_f[], float data_out_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_transport, const int16_t nchan_ism, ISM_METADATA_HANDLE hIsmMeta[], float prev_gains[][MASA_MAX_TRANSPORT_CHANNELS], const float interpolator[L_FRAME48k] ); + +static void computeIntensityVector_enc( const int16_t *band_grouping, float Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], float Cldfb_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], const int16_t num_frequency_bands, float intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] ); + +static void computeReferencePower_omasa( const int16_t *band_grouping, float Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], float Cldfb_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], float *reference_power, const int16_t enc_param_start_band, const int16_t num_freq_bands ); + +/*--------------------------------------------------------------------------* + * ivas_omasa_enc_open() + * + * Allocate and initialize OMASA handle + *--------------------------------------------------------------------------*/ + +ivas_error ivas_omasa_enc_open( + Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ +) +{ + int16_t i, j; + OMASA_ENC_HANDLE hOMasa; + int16_t numAnalysisChannels; + int16_t input_frame; + ivas_error error; + + error = IVAS_ERR_OK; + + assert( st_ivas->hMasa != NULL && "MASA encoder handle is not present" ); + + if ( ( hOMasa = (OMASA_ENC_HANDLE) malloc( sizeof( OMASA_ENC_STATE ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA encoder\n" ) ); + } + + numAnalysisChannels = st_ivas->hEncoderConfig->nchan_ism; + + /* open/initialize CLDFB */ + hOMasa->num_Cldfb_instances = numAnalysisChannels; + for ( i = 0; i < hOMasa->num_Cldfb_instances; i++ ) + { + openCldfb( &( hOMasa->cldfbAnaEnc[i] ), CLDFB_ANALYSIS, st_ivas->hEncoderConfig->input_Fs, CLDFB_PROTOTYPE_5_00MS ); + } + + /* intensity 3-dim */ + for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + hOMasa->direction_vector_m[i] = (float **) malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( float * ) ); + + for ( j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) + { + if ( ( hOMasa->direction_vector_m[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data\n" ) ); + } + set_zero( hOMasa->direction_vector_m[i][j], MASA_FREQUENCY_BANDS ); + } + } + + for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) + { + if ( ( hOMasa->buffer_intensity_real[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data\n" ) ); + } + set_zero( hOMasa->buffer_intensity_real[i][j], MASA_FREQUENCY_BANDS ); + } + } + + set_zero( hOMasa->buffer_energy, DIRAC_NO_COL_AVG_DIFF * MASA_FREQUENCY_BANDS ); + + for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) + { + set_f( hOMasa->prev_object_dm_gains[i], (float) sqrt( 0.5 ), MASA_MAX_TRANSPORT_CHANNELS ); + } + set_zero( hOMasa->broadband_energy_sm, MAX_NUM_OBJECTS + MASA_MAX_TRANSPORT_CHANNELS ); + set_zero( hOMasa->broadband_energy_prev, MAX_NUM_OBJECTS + MASA_MAX_TRANSPORT_CHANNELS ); + hOMasa->prev_selected_object = 0; + hOMasa->changing_object = 0; + + input_frame = (int16_t) ( st_ivas->hEncoderConfig->input_Fs / FRAMES_PER_SEC ); + for ( i = 0; i < input_frame; i++ ) + { + hOMasa->interpolator[i] = ( (float) i ) / ( (float) input_frame ); + hOMasa->fade_out_gain[i] = ( 1.0f + cosf( ( (float) i ) / ( (float) input_frame ) * EVS_PI ) ) / 2.0f; + hOMasa->fade_in_gain[i] = 1.0f - hOMasa->fade_out_gain[i]; + } + + hOMasa->index_buffer_intensity = 0; + + st_ivas->hOMasa = hOMasa; + + return error; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_enc_close() + * + * Close OMASA handle + *--------------------------------------------------------------------------*/ + +void ivas_omasa_enc_close( + OMASA_ENC_HANDLE *hOMasa /* i/o: encoder OMASA handle */ +) +{ + int16_t i, j; + + if ( hOMasa == NULL || *hOMasa == NULL ) + { + return; + } + + for ( i = 0; i < ( *hOMasa )->num_Cldfb_instances; i++ ) + { + deleteCldfb( &( ( *hOMasa )->cldfbAnaEnc[i] ) ); + } + + for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + for ( j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) + { + free( ( *hOMasa )->direction_vector_m[i][j] ); + ( *hOMasa )->direction_vector_m[i][j] = NULL; + } + + for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) + { + free( ( *hOMasa )->buffer_intensity_real[i][j] ); + ( *hOMasa )->buffer_intensity_real[i][j] = NULL; + } + + free( ( *hOMasa )->direction_vector_m[i] ); + ( *hOMasa )->direction_vector_m[i] = NULL; + } + + free( *hOMasa ); + ( *hOMasa ) = NULL; + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_enc_config() + * + * oMASA encoder configuration + *--------------------------------------------------------------------------*/ + +ivas_error ivas_omasa_enc_config( + Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ +) +{ + int16_t k, sce_id, nSCE_old; + int32_t ivas_total_brate, ism_total_brate; + ENCODER_CONFIG_HANDLE hEncoderConfig; + ivas_error error; + + hEncoderConfig = st_ivas->hEncoderConfig; + ivas_total_brate = hEncoderConfig->ivas_total_brate; + nSCE_old = st_ivas->nSCE; + + st_ivas->ism_mode = ivas_omasa_ism_mode_select( ivas_total_brate, hEncoderConfig->nchan_ism ); + st_ivas->nchan_transport = 2; + + /* reconfiguration in case of bitrate switching */ + if ( hEncoderConfig->last_ivas_total_brate != ivas_total_brate ) + { + ivas_set_omasa_TC( st_ivas->ism_mode, hEncoderConfig->nchan_ism, &st_ivas->nSCE, &st_ivas->nCPE ); + + k = 0; + while ( k < SIZE_IVAS_BRATE_TBL && ivas_total_brate != ivas_brate_tbl[k] ) + { + k++; + } + + ism_total_brate = 0; + for ( sce_id = 0; sce_id < st_ivas->nSCE; sce_id++ ) + { + ism_total_brate += sep_object_brate[k - 2][st_ivas->nSCE - 1]; + } + + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->nchan_transport, 1, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + if ( ( error = ivas_ism_config( st_ivas->hEncoderConfig->ivas_total_brate, st_ivas->nchan_transport, st_ivas->nSCE, NULL, 0, NULL, NULL, NULL, NULL, NULL, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* reconfigure core-coders for ISMs */ + if ( ( error = ivas_corecoder_enc_reconfig( st_ivas, nSCE_old, 1, 2, st_ivas->nSCE > 0 ? sep_object_brate[k - 2][st_ivas->nSCE - 1] : 0, ivas_total_brate - ism_total_brate, MC_MODE_NONE ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* re-write IVAS format signalling - actual 'ism_mode' was not known before */ + if ( st_ivas->nSCE > 0 ) + { + reset_indices_enc( st_ivas->hSCE[0]->hCoreCoder[0]->hBstr, st_ivas->hSCE[0]->hCoreCoder[0]->hBstr->nb_bits_tot ); + } + else + { + reset_indices_enc( st_ivas->hCPE[0]->hCoreCoder[0]->hBstr, st_ivas->hCPE[0]->hCoreCoder[0]->hBstr->nb_bits_tot ); + } + + ivas_write_format( st_ivas ); + + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->hOMasa == NULL ) + { + if ( ( error = ivas_omasa_enc_open( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC && st_ivas->hOMasa != NULL ) + { + ivas_omasa_enc_close( &( st_ivas->hOMasa ) ); + st_ivas->hOMasa = NULL; + } + + st_ivas->hCPE[0]->element_brate = ivas_total_brate - ism_total_brate; + + if ( ivas_total_brate - ism_total_brate >= MIN_BRATE_MDCT_STEREO ) + { + hEncoderConfig->element_mode_init = IVAS_CPE_MDCT; + } + else + { + hEncoderConfig->element_mode_init = IVAS_CPE_DFT; + } + } + + /* Configure MASA encoder based on frame parameters */ + if ( ( error = ivas_masa_enc_config( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode != ISM_MASA_MODE_DISC ) + { + /* Configure oMASA analysis based on MASA config */ + ivas_omasa_set_config( st_ivas->hOMasa, st_ivas->hMasa, st_ivas->hEncoderConfig->input_Fs, st_ivas->ism_mode ); + } + + return IVAS_ERR_OK; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_set_config() + * + * Frame-by-frame config for oMASA + *--------------------------------------------------------------------------*/ + +void ivas_omasa_set_config( + OMASA_ENC_HANDLE hOMasa, /* i/o: OMASA encoder handle */ + MASA_ENCODER_HANDLE hMasa, /* i : MASA encoder handle */ + const int32_t input_Fs, /* i : Input sample rate */ + const ISM_MODE ism_mode /* i : ISM mode */ +) +{ + uint8_t i, maxBin; + + /* Determine the number of bands */ + if ( ism_mode == ISM_MODE_NONE || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* use full resolution for the ISM+MASA merge and reduce later */ + hOMasa->nbands = 24; + } + else + { + hOMasa->nbands = hMasa->config.numCodingBands; + } + + hOMasa->nCodingBands = hMasa->config.numCodingBands; + + /* Determine the number of subframes */ + hOMasa->nSubframes = hMasa->config.joinedSubframes == TRUE ? 1 : MAX_PARAM_SPATIAL_SUBFRAMES; + + /* Determine band grouping */ + if ( hOMasa->nbands == 24 ) + { + mvs2s( MASA_band_grouping_24, hOMasa->band_grouping, 24 + 1 ); + } + else + { + for ( i = 0; i < hOMasa->nbands + 1; i++ ) + { + hOMasa->band_grouping[i] = MASA_band_grouping_24[hMasa->data.band_mapping[i]]; + } + } + + maxBin = (uint8_t) ( input_Fs * INV_CLDFB_BANDWIDTH + 0.5f ); + + for ( i = 1; i < hOMasa->nbands + 1; i++ ) + { + if ( hOMasa->band_grouping[i] >= maxBin ) + { + hOMasa->band_grouping[i] = maxBin; + hOMasa->nbands = i; + break; + } + } + + mvs2s( DirAC_block_grouping, hOMasa->block_grouping, MAX_PARAM_SPATIAL_SUBFRAMES + 1 ); + if ( hOMasa->nSubframes == 1 ) + { + hOMasa->block_grouping[1] = hOMasa->block_grouping[MAX_PARAM_SPATIAL_SUBFRAMES]; + } + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_enc() + * + * Main OMASA encoding function + *--------------------------------------------------------------------------*/ + +void ivas_omasa_enc( + OMASA_ENC_HANDLE hOMasa, /* i/o: OMASA encoder handle */ + MASA_ENCODER_HANDLE hMasa, /* i/o: MASA encoder handle */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handle */ + float *data_in_f[], /* i/o: Input / transport audio signals */ + const int16_t input_frame, /* i : Input frame size */ + const int16_t nchan_transport, /* i : Number of transport channels */ + const int16_t nchan_ism, /* i : Number of objects for parameter analysis */ + const ISM_MODE ism_mode, /* i : ISM mode */ + float *data_separated_object, /* o : Separated object audio signal */ + int16_t *idx_separated_object /* o : Index of the separated object */ +) +{ + int16_t i, j; + float data_out_f[MASA_MAX_TRANSPORT_CHANNELS][L_FRAME48k]; + + /* Determine separated object (when applicable) */ + if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + float broadband_energy[MAX_NUM_OBJECTS + MASA_MAX_TRANSPORT_CHANNELS]; + int16_t loudest_object; + int16_t selected_object; + int16_t nchan_all_inp; + float alpha; + uint8_t fade_out_separate_object; + uint8_t fade_in_separate_object; + + /* Estimate broadband energies */ + nchan_all_inp = nchan_ism + nchan_transport; + set_zero( broadband_energy, nchan_all_inp ); + for ( i = 0; i < nchan_all_inp; i++ ) + { + for ( j = 0; j < input_frame; j++ ) + { + broadband_energy[i] += data_in_f[i][j] * data_in_f[i][j]; + } + } + + /* Temporal averaging */ + alpha = 0.8f; + for ( i = 0; i < nchan_all_inp; i++ ) + { + hOMasa->broadband_energy_sm[i] = ( 1.0f - alpha ) * broadband_energy[i] + alpha * hOMasa->broadband_energy_sm[i]; + } + + /* Determine loudest object */ + loudest_object = 0; + for ( i = 1; i < nchan_ism; i++ ) + { + if ( hOMasa->broadband_energy_sm[i] > hOMasa->broadband_energy_sm[loudest_object] ) + { + loudest_object = i; + } + } + + /* Determine object to separate */ + selected_object = hOMasa->prev_selected_object; + fade_out_separate_object = 0; + fade_in_separate_object = 0; + if ( hOMasa->changing_object ) + { + hOMasa->changing_object = 0; + selected_object = loudest_object; + fade_in_separate_object = 1; + } + else + { + if ( loudest_object != hOMasa->prev_selected_object ) + { + float selected_ene; + float total_ene; + float selected_ratio; + float adaptive_threshold_dB; + float ratio_objects_dB; + float hardswitch_threshold = 0.25f; + + /* Compute the energy of the current and the previous selected object in the current and the previous frame */ + selected_ene = broadband_energy[loudest_object] + broadband_energy[hOMasa->prev_selected_object] + hOMasa->broadband_energy_prev[loudest_object] + hOMasa->broadband_energy_prev[hOMasa->prev_selected_object]; + + /* Compute the energy of all objects and MASA channels in the current and the previous frame */ + total_ene = 0.0f; + for ( i = 0; i < nchan_all_inp; i++ ) + { + total_ene += broadband_energy[i] + hOMasa->broadband_energy_prev[i]; + } + + /* Compute the ratio */ + selected_ratio = selected_ene / ( total_ene + EPSILON ); + + adaptive_threshold_dB = selected_ratio * 9.0f + 1.0f; /* selected ratio = 0 -> 1 dB, selected ratio = 1 -> 10 dB */ + ratio_objects_dB = 10.0f * log10f( hOMasa->broadband_energy_sm[loudest_object] / ( hOMasa->broadband_energy_sm[hOMasa->prev_selected_object] + EPSILON ) ); + + /* Adaptively determine whether to change the separated object. If they are quiet compared to the total energy, change easier, as other signals mask the change. */ + if ( ratio_objects_dB > adaptive_threshold_dB ) + { + if ( selected_ratio < hardswitch_threshold ) /* If low level compared to all audio channels, perform hardswitch */ + { + selected_object = loudest_object; + } + else /* If high level compared to all audio channels, perform switch via fade out fade in */ + { + hOMasa->changing_object = 1; + fade_out_separate_object = 1; + } + } + } + } + + /* Set values for next frame */ + for ( i = 0; i < nchan_all_inp; i++ ) + { + hOMasa->broadband_energy_prev[i] = broadband_energy[i]; + } + hOMasa->prev_selected_object = selected_object; + + /* Separate the selected object */ + *idx_separated_object = selected_object; + mvr2r( data_in_f[selected_object], data_separated_object, input_frame ); + if ( fade_out_separate_object ) + { + v_mult( data_separated_object, hOMasa->fade_out_gain, data_separated_object, input_frame ); + v_mult( data_in_f[selected_object], hOMasa->fade_in_gain, data_in_f[selected_object], input_frame ); + } + else if ( fade_in_separate_object ) + { + v_mult( data_separated_object, hOMasa->fade_in_gain, data_separated_object, input_frame ); + v_mult( data_in_f[selected_object], hOMasa->fade_out_gain, data_in_f[selected_object], input_frame ); + } + else + { + set_zero( data_in_f[selected_object], input_frame ); + } + } + + /* Analysis */ + if ( ism_mode == ISM_MODE_NONE || ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + OMASA_SPATIAL_META OMasaMeta; /* working memory for the ISM-object MASA-parameters */ + OMASA_SPATIAL_META_HANDLE hOMasaMeta; + uint8_t n_bands_orig, n_subframes_orig; + uint8_t numCodingBands_orig, joinedSubframes_orig; + + hOMasaMeta = &OMasaMeta; + hOMasaMeta->num_dirs = 1; + + /* merge MASA directions before adding ISM to the mixture */ + if ( hMasa->config.numberOfDirections == 2 ) + { + n_bands_orig = hMasa->config.numCodingBands; + hMasa->config.numCodingBands = MASA_FREQUENCY_BANDS; + + ivas_masa_combine_directions( hMasa ); + + hMasa->config.numCodingBands = (int8_t) n_bands_orig; + } + + /* force computation into high resolution */ + + n_subframes_orig = hOMasa->nSubframes; + hOMasa->nSubframes = MAX_PARAM_SPATIAL_SUBFRAMES; + + /* Estimate MASA parameters from the objects */ + /* NB: only first direction is populated */ + /* NB2: in energy_ratios and surround_coherence only first sub-frame contains valid data */ + ivas_omasa_param_est_enc( hOMasa, hMasa->data.hOmasaData, hIsmMeta, data_in_f, hOMasaMeta->directional_meta[0].elevation, hOMasaMeta->directional_meta[0].azimuth, hOMasaMeta->directional_meta[0].energy_ratio[0], hOMasaMeta->directional_meta[0].spread_coherence, hOMasaMeta->common_meta.surround_coherence[0], + hOMasaMeta->common_meta.diffuse_to_total_ratio[0], input_frame, nchan_ism ); + + /* copy energy_ratios and surrCoh from first sub-frame to the remaining ones */ + for ( i = 1; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + mvr2r( hOMasaMeta->directional_meta[0].energy_ratio[0], hOMasaMeta->directional_meta[0].energy_ratio[i], MASA_FREQUENCY_BANDS ); + mvr2r( hOMasaMeta->common_meta.surround_coherence[0], hOMasaMeta->common_meta.surround_coherence[i], MASA_FREQUENCY_BANDS ); + mvr2r( hOMasaMeta->common_meta.diffuse_to_total_ratio[0], hOMasaMeta->common_meta.diffuse_to_total_ratio[i], MASA_FREQUENCY_BANDS ); + } + + /* restore resolution parameters */ + hOMasa->nSubframes = n_subframes_orig; + + /* perform MASA+ISM merge in full resolution */ + numCodingBands_orig = hMasa->config.numCodingBands; + joinedSubframes_orig = hMasa->config.joinedSubframes; + + hMasa->config.numCodingBands = hOMasa->nbands; + hMasa->config.joinedSubframes = 0; + + ivas_merge_masa_metadata( hMasa, hOMasaMeta ); /* => merge result in hMasa->masaMetadata */ + + hMasa->config.numCodingBands = numCodingBands_orig; + hMasa->config.joinedSubframes = joinedSubframes_orig; + } + else if ( ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + /* Estimate energies and ratios */ + ivas_omasa_energy_and_ratio_est( hOMasa, hMasa->data.hOmasaData, data_in_f, input_frame, nchan_ism ); + } + + /* Move the ISM metadata to the first entry for encoding in the MASA_ONE_OBJ mode */ + if ( ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + hIsmMeta[0]->azimuth = hIsmMeta[*idx_separated_object]->azimuth; + hIsmMeta[0]->elevation = hIsmMeta[*idx_separated_object]->elevation; + } + + /* Downmix */ + ivas_omasa_dmx( data_in_f, data_out_f, input_frame, nchan_transport, nchan_ism, hIsmMeta, hOMasa->prev_object_dm_gains, hOMasa->interpolator ); + + /* Merge transport signals */ + ivas_merge_masa_transports( data_out_f, &( data_in_f[nchan_ism] ), data_in_f, input_frame, nchan_transport ); + + return; +} + + +/*-------------------------------------------------------------------------* + * ivas_set_ism_importance_interformat() + * + * Set the importance of particular ISM streams in combined-format coding + *-------------------------------------------------------------------------*/ + +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 */ +) +{ + Encoder_State *st; + int16_t ch, ctype, active_flag; + + for ( ch = 0; ch < nchan_transport; ch++ ) + { + st = hSCE[ch]->hCoreCoder[0]; + + active_flag = st->vad_flag; + + if ( active_flag == 0 ) + { + if ( st->lp_noise > 15 || lp_noise_CPE - st->lp_noise < 30 ) + { + active_flag = 1; + } + } + + /* do not use the low-rate core-coder mode at highest bit-rates */ + if ( ism_total_brate / nchan_transport > IVAS_48k ) + { + active_flag = 1; + } + + ctype = hSCE[ch]->hCoreCoder[0]->coder_type_raw; + + st->low_rate_mode = 0; + if ( active_flag == 0 ) + { + ism_imp[ch] = ISM_INACTIVE_IMP; + st->low_rate_mode = 1; + } + else if ( ctype == INACTIVE || ctype == UNVOICED ) + { + ism_imp[ch] = ISM_LOW_IMP; + } + else if ( ctype == VOICED ) + { + ism_imp[ch] = ISM_MEDIUM_IMP; + } + else /* GENERIC */ + { + ism_imp[ch] = ISM_HIGH_IMP; + } + + hIsmMeta[ch]->ism_metadata_flag = active_flag; /* flag is needed for the MD coding */ + } + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_set_surplus_brate_enc() + * + * set bit-rate surplus in combined format coding + *--------------------------------------------------------------------------*/ + +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 +) +{ + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + st_ivas->hCPE[0]->brate_surplus = st_ivas->hSCE[0]->element_brate - ivas_interformat_brate( ISM_MASA_MODE_PARAM_ONE_OBJ, 1, st_ivas->hSCE[0]->element_brate, st_ivas->hIsmMetaData[0]->ism_imp, 0 ); + /* note: ISM st->total_brate is iset in ivas_sce_enc() */ + } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_DISC || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + /* it is already set in ivas_ism_enc() */ + } + else + { + st_ivas->hCPE[0]->brate_surplus = 0; + } + +#ifdef DEBUG_MODE_INFO + if ( st_ivas->hSCE[0] != NULL ) + { + int16_t input_frame = (int16_t) ( st_ivas->hEncoderConfig->input_Fs / FRAMES_PER_SEC ); + float tmpF = 0; + + if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ ) + { + tmpF += st_ivas->hSCE[0]->hCoreCoder[0]->total_brate + (float) ( nb_bits_metadata[1] * 50 ); + } + else + { + for ( int16_t i = 0; i < st_ivas->hEncoderConfig->nchan_ism; i++ ) + { + tmpF += st_ivas->hSCE[i]->hCoreCoder[0]->total_brate + (float) ( nb_bits_metadata[i + 1] * 50 ); + } + } + tmpF /= 1000.f; + dbgwrite( &tmpF, 4, 1, input_frame, "res/brate_ISM" ); /* == ism_total_brate incl. ISM MD */ + tmpF = st_ivas->hEncoderConfig->ivas_total_brate / 1000.0f - tmpF; + dbgwrite( &tmpF, 4, 1, input_frame, "res/brate_MASA" ); /* == masa_total_brate incl. MASA MD */ + tmpF = nb_bits_metadata[0] * FRAMES_PER_SEC / 1000.0f; + dbgwrite( &tmpF, 4, 1, input_frame, "res/brate_MASA_MD" ); /* == MASA MD bitrate */ + } +#endif + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_ener_brate() + * + * + *--------------------------------------------------------------------------*/ + +/*! r: OMASA energy bitrate flag */ +int16_t ivas_omasa_ener_brate( + const int16_t nchan_ism, /* i : number of ISMs */ + const int32_t ivas_total_brate, /* i : IVAS total bitrate */ + float *data_f[], /* i : Input / transport audio signals */ + const int16_t input_frame /* i : Input frame size */ +) +{ + int16_t i, flag_omasa_ener_brate; + float energy_ism, energy_masa; + + flag_omasa_ener_brate = 0; + + if ( nchan_ism >= 3 && ivas_total_brate == IVAS_128k ) + { + energy_ism = 0.0f; + for ( i = 0; i < nchan_ism; i++ ) + { + energy_ism += sum2_f( data_f[i], input_frame ); + } + + energy_masa = 0.0f; + for ( i = nchan_ism; i < nchan_ism + MASA_MAXIMUM_DIRECTIONS; i++ ) + { + energy_masa += sum2_f( data_f[i], input_frame ); + } + + energy_ism = energy_ism / ( energy_masa + 1.0f ) * 2.0f / (float) ( nchan_ism ); + + if ( energy_ism < 1.0f ) + { + flag_omasa_ener_brate = 1; + } + } + + return flag_omasa_ener_brate; +} + + +/*--------------------------------------------------------------------------* + * Local functions + *--------------------------------------------------------------------------*/ + +/* Estimate MASA parameters from the objects */ +static void ivas_omasa_param_est_enc( + OMASA_ENC_HANDLE hOMasa, + OMASA_ENCODER_DATA_HANDLE hOmasaData, + ISM_METADATA_HANDLE hIsmMeta[], + float *data_f[], + float elevation_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], + float azimuth_m_values[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], + float energyRatio[MASA_FREQUENCY_BANDS], + float spreadCoherence[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS], + float surroundingCoherence[MASA_FREQUENCY_BANDS], + float diffuseness_m[MASA_FREQUENCY_BANDS], + const int16_t input_frame, + const int16_t nchan_ism ) +{ + float reference_power[CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + int16_t ts, i, j, d, k; + int16_t num_freq_bins, num_freq_bands, index; + float dir_v[DIRAC_NUM_DIMS]; + int16_t l_ts; + float Chnl_RealBuffer[MCMASA_MAX_ANA_CHANS][CLDFB_NO_CHANNELS_MAX]; + float Chnl_ImagBuffer[MCMASA_MAX_ANA_CHANS][CLDFB_NO_CHANNELS_MAX]; + float Foa_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX]; + float Foa_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX]; + float intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS]; + float direction_vector[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS]; + float diffuseness_vector[MASA_FREQUENCY_BANDS]; + int16_t band_m_idx, block_m_idx; + float renormalization_factor_diff[MASA_FREQUENCY_BANDS]; + float norm_tmp; + int16_t mrange[2], brange[2]; + + num_freq_bins = hOMasa->cldfbAnaEnc[0]->no_channels; + num_freq_bands = hOMasa->nbands; + l_ts = input_frame / CLDFB_NO_COL_MAX; + + /* Need to initialize renormalization_factors, and variables to be normalized */ + set_zero( renormalization_factor_diff, hOMasa->nbands ); + set_zero( diffuseness_m, hOMasa->nbands ); + + /* Compute ISM to FOA matrices */ + for ( i = 0; i < nchan_ism; i++ ) + { + hOMasa->chnlToFoaMtx[0][i] = 1.0f; + hOMasa->chnlToFoaMtx[1][i] = sinf( ( hIsmMeta[i]->azimuth / 180.0f * EVS_PI ) ) * cosf( ( hIsmMeta[i]->elevation / 180.0f * EVS_PI ) ); + hOMasa->chnlToFoaMtx[2][i] = sinf( ( hIsmMeta[i]->elevation / 180.0f * EVS_PI ) ); + hOMasa->chnlToFoaMtx[3][i] = cosf( ( hIsmMeta[i]->azimuth / 180.0f * EVS_PI ) ) * cosf( ( hIsmMeta[i]->elevation / 180.0f * EVS_PI ) ); + } + + /* do processing over all CLDFB time slots */ + for ( block_m_idx = 0; block_m_idx < hOMasa->nSubframes; block_m_idx++ ) + { + mrange[0] = hOMasa->block_grouping[block_m_idx]; + mrange[1] = hOMasa->block_grouping[block_m_idx + 1]; + + for ( band_m_idx = 0; band_m_idx < hOMasa->nbands; band_m_idx++ ) + { + hOMasa->direction_vector_m[0][block_m_idx][band_m_idx] = 0.0f; + hOMasa->direction_vector_m[1][block_m_idx][band_m_idx] = 0.0f; + hOMasa->direction_vector_m[2][block_m_idx][band_m_idx] = 0.0f; + } + + set_zero( hOmasaData->energy_ism[block_m_idx], num_freq_bands ); + + for ( ts = mrange[0]; ts < mrange[1]; ts++ ) + { + for ( i = 0; i < nchan_ism; i++ ) + { + cldfbAnalysis_ts( &( data_f[i][l_ts * ts] ), Chnl_RealBuffer[i], Chnl_ImagBuffer[i], l_ts, hOMasa->cldfbAnaEnc[i] ); + } + + /* Compute energy */ + for ( i = 0; i < num_freq_bands; i++ ) + { + brange[0] = hOMasa->band_grouping[i]; + brange[1] = hOMasa->band_grouping[i + 1]; + for ( j = brange[0]; j < brange[1]; j++ ) + { + for ( k = 0; k < nchan_ism; k++ ) + { + hOmasaData->energy_ism[block_m_idx][i] += Chnl_RealBuffer[k][j] * Chnl_RealBuffer[k][j] + Chnl_ImagBuffer[k][j] * Chnl_ImagBuffer[k][j]; + } + } + } + + /* Compute FOA */ + /* W */ + mvr2r( Chnl_RealBuffer[0], Foa_RealBuffer[0], num_freq_bins ); + mvr2r( Chnl_ImagBuffer[0], Foa_ImagBuffer[0], num_freq_bins ); + for ( i = 1; i < nchan_ism; i++ ) + { + v_add( Chnl_RealBuffer[i], Foa_RealBuffer[0], Foa_RealBuffer[0], num_freq_bins ); + v_add( Chnl_ImagBuffer[i], Foa_ImagBuffer[0], Foa_ImagBuffer[0], num_freq_bins ); + } + + /* Y */ + v_multc( Chnl_RealBuffer[0], hOMasa->chnlToFoaMtx[1][0], Foa_RealBuffer[1], num_freq_bins ); + v_multc( Chnl_ImagBuffer[0], hOMasa->chnlToFoaMtx[1][0], Foa_ImagBuffer[1], num_freq_bins ); + for ( i = 1; i < nchan_ism; i++ ) + { + v_multc_acc( Chnl_RealBuffer[i], hOMasa->chnlToFoaMtx[1][i], Foa_RealBuffer[1], num_freq_bins ); + v_multc_acc( Chnl_ImagBuffer[i], hOMasa->chnlToFoaMtx[1][i], Foa_ImagBuffer[1], num_freq_bins ); + } + + /* Z */ + v_multc( Chnl_RealBuffer[0], hOMasa->chnlToFoaMtx[2][0], Foa_RealBuffer[2], num_freq_bins ); + v_multc( Chnl_ImagBuffer[0], hOMasa->chnlToFoaMtx[2][0], Foa_ImagBuffer[2], num_freq_bins ); + for ( i = 1; i < nchan_ism; i++ ) + { + v_multc_acc( Chnl_RealBuffer[i], hOMasa->chnlToFoaMtx[2][i], Foa_RealBuffer[2], num_freq_bins ); + v_multc_acc( Chnl_ImagBuffer[i], hOMasa->chnlToFoaMtx[2][i], Foa_ImagBuffer[2], num_freq_bins ); + } + + /* X */ + v_multc( Chnl_RealBuffer[0], hOMasa->chnlToFoaMtx[3][0], Foa_RealBuffer[3], num_freq_bins ); + v_multc( Chnl_ImagBuffer[0], hOMasa->chnlToFoaMtx[3][0], Foa_ImagBuffer[3], num_freq_bins ); + for ( i = 1; i < nchan_ism; i++ ) + { + v_multc_acc( Chnl_RealBuffer[i], hOMasa->chnlToFoaMtx[3][i], Foa_RealBuffer[3], num_freq_bins ); + v_multc_acc( Chnl_ImagBuffer[i], hOMasa->chnlToFoaMtx[3][i], Foa_ImagBuffer[3], num_freq_bins ); + } + + /* Direction estimation */ + computeIntensityVector_enc( hOMasa->band_grouping, Foa_RealBuffer, Foa_ImagBuffer, num_freq_bands, intensity_real ); + computeDirectionVectors( intensity_real[0], intensity_real[1], intensity_real[2], 0, num_freq_bands, direction_vector[0], direction_vector[1], direction_vector[2] ); + + /* Power estimation for diffuseness */ + computeReferencePower_omasa( hOMasa->band_grouping, Foa_RealBuffer, Foa_ImagBuffer, reference_power[ts], 0, num_freq_bands ); + + /* Fill buffers of length "averaging_length" time slots for intensity and energy */ + hOMasa->index_buffer_intensity = ( hOMasa->index_buffer_intensity % DIRAC_NO_COL_AVG_DIFF ) + 1; /* averaging_length = 32 */ + index = hOMasa->index_buffer_intensity; + for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + /* only real part needed */ + mvr2r( intensity_real[i], &( hOMasa->buffer_intensity_real[i][index - 1][0] ), num_freq_bands ); + } + mvr2r( reference_power[ts], &( hOMasa->buffer_energy[( index - 1 ) * num_freq_bands] ), num_freq_bands ); + + computeDiffuseness( hOMasa->buffer_intensity_real, hOMasa->buffer_energy, num_freq_bands, diffuseness_vector ); + + for ( band_m_idx = 0; band_m_idx < hOMasa->nbands; band_m_idx++ ) + { + norm_tmp = reference_power[ts][band_m_idx] * ( 1 - diffuseness_vector[band_m_idx] ); + + hOMasa->direction_vector_m[0][block_m_idx][band_m_idx] += norm_tmp * direction_vector[0][band_m_idx]; + hOMasa->direction_vector_m[1][block_m_idx][band_m_idx] += norm_tmp * direction_vector[1][band_m_idx]; + hOMasa->direction_vector_m[2][block_m_idx][band_m_idx] += norm_tmp * direction_vector[2][band_m_idx]; + + diffuseness_m[band_m_idx] += reference_power[ts][band_m_idx] * diffuseness_vector[band_m_idx]; + renormalization_factor_diff[band_m_idx] += reference_power[ts][band_m_idx]; + } + } + + for ( band_m_idx = 0; band_m_idx < hOMasa->nbands; band_m_idx++ ) + { + for ( d = 0; d < DIRAC_NUM_DIMS; d++ ) + { + dir_v[d] = hOMasa->direction_vector_m[d][block_m_idx][band_m_idx]; + } + + ivas_qmetadata_direction_vector_to_azimuth_elevation( dir_v, &azimuth_m_values[block_m_idx][band_m_idx], &elevation_m_values[block_m_idx][band_m_idx] ); + } + + /* Set coherences to zero, as this mode is used at lowest bit rates where the coherences are not transmitted */ + for ( band_m_idx = 0; band_m_idx < hOMasa->nbands; band_m_idx++ ) + { + spreadCoherence[block_m_idx][band_m_idx] = 0.0f; + surroundingCoherence[band_m_idx] = 0.0f; + } + } + + /* Determine energy ratios */ + for ( band_m_idx = 0; band_m_idx < hOMasa->nbands; band_m_idx++ ) + { + if ( renormalization_factor_diff[band_m_idx] > EPSILON ) + { + diffuseness_m[band_m_idx] /= renormalization_factor_diff[band_m_idx]; + } + else + { + diffuseness_m[band_m_idx] = 0.0f; + } + + energyRatio[band_m_idx] = 1.0f - diffuseness_m[band_m_idx]; + } + + return; +} + + +/* Estimate energies and ratios */ +static void ivas_omasa_energy_and_ratio_est( + OMASA_ENC_HANDLE hOMasa, + OMASA_ENCODER_DATA_HANDLE hOmasaData, + float *data_f[], + const int16_t input_frame, + const int16_t nchan_ism ) +{ + int16_t ts, i, j, k; + int16_t num_freq_bands; + int16_t l_ts; + float Chnl_RealBuffer[MAX_NUM_OBJECTS][CLDFB_NO_CHANNELS_MAX]; + float Chnl_ImagBuffer[MAX_NUM_OBJECTS][CLDFB_NO_CHANNELS_MAX]; + int16_t block_m_idx; + int16_t mrange[2], brange[2]; + float tftile_energy; + float ism_ratio_sum; + + num_freq_bands = hOMasa->nbands; + l_ts = input_frame / CLDFB_NO_COL_MAX; + + /* do processing over all CLDFB time slots */ + for ( block_m_idx = 0; block_m_idx < hOMasa->nSubframes; block_m_idx++ ) + { + mrange[0] = hOMasa->block_grouping[block_m_idx]; + mrange[1] = hOMasa->block_grouping[block_m_idx + 1]; + + /* Reset variable */ + for ( i = 0; i < hOMasa->nbands; i++ ) + { + set_zero( hOmasaData->energy_ratio_ism[block_m_idx][i], nchan_ism ); + } + set_zero( hOmasaData->energy_ism[block_m_idx], num_freq_bands ); + + /* Compute CLDFB */ + for ( ts = mrange[0]; ts < mrange[1]; ts++ ) + { + for ( i = 0; i < nchan_ism; i++ ) + { + cldfbAnalysis_ts( &( data_f[i][l_ts * ts] ), Chnl_RealBuffer[i], Chnl_ImagBuffer[i], l_ts, hOMasa->cldfbAnaEnc[i] ); + } + + /* Compute energy */ + for ( i = 0; i < num_freq_bands; i++ ) + { + brange[0] = hOMasa->band_grouping[i]; + brange[1] = hOMasa->band_grouping[i + 1]; + for ( j = brange[0]; j < brange[1]; j++ ) + { + for ( k = 0; k < nchan_ism; k++ ) + { + tftile_energy = Chnl_RealBuffer[k][j] * Chnl_RealBuffer[k][j] + Chnl_ImagBuffer[k][j] * Chnl_ImagBuffer[k][j]; + hOmasaData->energy_ism[block_m_idx][i] += tftile_energy; + hOmasaData->energy_ratio_ism[block_m_idx][i][k] += tftile_energy; + } + } + } + } + + /* Compute ISM energy ratios */ + for ( i = 0; i < num_freq_bands; i++ ) + { + ism_ratio_sum = 0.0f; + for ( j = 0; j < nchan_ism; j++ ) + { + hOmasaData->energy_ratio_ism[block_m_idx][i][j] /= ( hOmasaData->energy_ism[block_m_idx][i] + EPSILON ); + ism_ratio_sum += hOmasaData->energy_ratio_ism[block_m_idx][i][j]; + } + + if ( ism_ratio_sum == 0.0f ) + { + float temp_ism_ratio = 1.0f / ( (float) nchan_ism ); + for ( j = 0; j < nchan_ism; j++ ) + { + hOmasaData->energy_ratio_ism[block_m_idx][i][j] = temp_ism_ratio; + } + } + } + } + + return; +} + + +/* Compute downmix */ +static void ivas_omasa_dmx( + float *data_in_f[], + float data_out_f[][L_FRAME48k], + const int16_t input_frame, + const int16_t nchan_transport, + const int16_t nchan_ism, + ISM_METADATA_HANDLE hIsmMeta[], + float prev_gains[][MASA_MAX_TRANSPORT_CHANNELS], + const float interpolator[L_FRAME48k] ) +{ + int16_t i, j, k; + float azimuth, elevation; + float gains[MASA_MAX_TRANSPORT_CHANNELS]; + float g1, g2; + + for ( i = 0; i < nchan_transport; i++ ) + { + set_zero( data_out_f[i], input_frame ); + } + + for ( i = 0; i < nchan_ism; i++ ) + { + azimuth = hIsmMeta[i]->azimuth; + elevation = hIsmMeta[i]->elevation; + + ivas_get_stereo_panning_gains( azimuth, elevation, gains ); + + /* Downmix using the panning gains */ + for ( j = 0; j < nchan_transport; j++ ) + { + if ( fabsf( gains[j] ) > 0.0 || fabsf( prev_gains[i][j] ) > 0.0f ) + { + for ( k = 0; k < input_frame; k++ ) + { + g1 = interpolator[k]; + g2 = 1.0f - g1; + data_out_f[j][k] += ( g1 * gains[j] + g2 * prev_gains[i][j] ) * data_in_f[i][k]; + } + } + prev_gains[i][j] = gains[j]; + } + } + + return; +} + + +static void computeIntensityVector_enc( + const int16_t *band_grouping, + float Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], + const int16_t num_frequency_bands, + float intensity_real[DIRAC_NUM_DIMS][MASA_FREQUENCY_BANDS] ) +{ + /* Reminder + * X = a + ib; Y = c + id + * X*Y = ac - bd + i(ad +bc) + */ + int16_t i, j; + float real, img; + int16_t brange[2]; + + for ( i = 0; i < num_frequency_bands; i++ ) + { + brange[0] = band_grouping[i]; + brange[1] = band_grouping[i + 1]; + + intensity_real[0][i] = 0; + intensity_real[1][i] = 0; + intensity_real[2][i] = 0; + + for ( j = brange[0]; j < brange[1]; j++ ) + { + real = Cldfb_RealBuffer[0][j]; + img = Cldfb_ImagBuffer[0][j]; + intensity_real[0][i] += Cldfb_RealBuffer[3][j] * real + Cldfb_ImagBuffer[3][j] * img; /* Intensity is XYZ order, audio is WYZX order. */ + intensity_real[1][i] += Cldfb_RealBuffer[1][j] * real + Cldfb_ImagBuffer[1][j] * img; + intensity_real[2][i] += Cldfb_RealBuffer[2][j] * real + Cldfb_ImagBuffer[2][j] * img; + } + } + + return; +} + + +static void computeReferencePower_omasa( + const int16_t *band_grouping, /* i : Band grouping for estimation */ + float Cldfb_RealBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Real part of input signal */ + float Cldfb_ImagBuffer[FOA_CHANNELS][CLDFB_NO_CHANNELS_MAX], /* i : Imag part of input signal */ + float *reference_power, /* o : Estimated power */ + const int16_t enc_param_start_band, /* i : first band to process */ + const int16_t num_freq_bands /* i : Number of frequency bands */ +) +{ + int16_t brange[2]; + int16_t ch_idx, i, j; + + for ( i = 0; i < num_freq_bands; i++ ) + { + brange[0] = band_grouping[i + enc_param_start_band]; + brange[1] = band_grouping[i + enc_param_start_band + 1]; + reference_power[i] = 0; + + for ( ch_idx = 0; ch_idx < FOA_CHANNELS; ch_idx++ ) + { + /* abs()^2 */ + for ( j = brange[0]; j < brange[1]; j++ ) + { + reference_power[i] += ( Cldfb_RealBuffer[ch_idx][j] * Cldfb_RealBuffer[ch_idx][j] ) + ( Cldfb_ImagBuffer[ch_idx][j] * Cldfb_ImagBuffer[ch_idx][j] ); + } + } + } + + v_multc( reference_power, 0.5f, reference_power, num_freq_bands ); + + return; +} diff --git a/lib_enc/ivas_osba_enc.c b/lib_enc/ivas_osba_enc.c new file mode 100644 index 0000000000000000000000000000000000000000..8630c9767137ac63c86b012a1df81bbafdae4f30 --- /dev/null +++ b/lib_enc/ivas_osba_enc.c @@ -0,0 +1,492 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include +#include +#include "ivas_cnst.h" +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_rom_com.h" +#include "ivas_rom_enc.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Local function prototypes + *------------------------------------------------------------------------*/ + +static void ivas_osba_render_ism_to_sba( float *data_in_f[], float data_out_f[][L_FRAME48k], const int16_t input_frame, const int16_t nchan_sba, const int16_t nchan_ism, ISM_METADATA_HANDLE hIsmMeta[], float prev_gains[][MAX_INPUT_CHANNELS], const float interpolator[L_FRAME48k] ); + +/*-------------------------------------------------------------------* + * ivas_merge_sba_transports() + * + * Merge SBA transport channels + *-------------------------------------------------------------------*/ + +static void ivas_merge_sba_transports( + float data_in_f1[][L_FRAME48k], + float *data_in_f2[], + float *data_out_f[], + const int16_t input_frame, + const int16_t sba_analysis_order ) +{ + int16_t i, j, nchan_sba; + + nchan_sba = ( sba_analysis_order + 1 ) * ( sba_analysis_order + 1 ); + + for ( i = 0; i < nchan_sba; i++ ) + { + for ( j = 0; j < input_frame; j++ ) + { + data_out_f[i][j] = data_in_f1[i][j] + data_in_f2[i][j]; + } + } + + return; +} + +/*--------------------------------------------------------------------------* + * ivas_osba_enc_open() + * + * Allocate and initialize OMASA handle + *--------------------------------------------------------------------------*/ + +ivas_error ivas_osba_enc_open( + Encoder_Struct *st_ivas /* i/o: IVAS encoder handle */ +) +{ + int16_t i; + OSBA_ENC_HANDLE hOSba; + int16_t input_frame; + ivas_error error; + int16_t len; + error = IVAS_ERR_OK; + + + if ( ( hOSba = (OSBA_ENC_HANDLE) malloc( sizeof( OSBA_ENC_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA encoder\n" ) ); + } + + + for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) + { + set_f( hOSba->prev_object_dm_gains[i], (float) sqrt( 0.5 ), MAX_INPUT_CHANNELS ); + } + + len = NS2SA( st_ivas->hEncoderConfig->input_Fs, IVAS_FB_ENC_DELAY_NS ); + + for ( i = 0; i < st_ivas->hEncoderConfig->nchan_ism; i++ ) + { + if ( ( hOSba->input_data_mem[i] = (float *) malloc( len * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OSBA input buffers" ); + } + set_f( hOSba->input_data_mem[i], 0.0f, len ); + } + + for ( ; i < MAX_NUM_OBJECTS; i++ ) + { + hOSba->input_data_mem[i] = NULL; + } + + input_frame = (int16_t) ( st_ivas->hEncoderConfig->input_Fs / FRAMES_PER_SEC ); + for ( i = 0; i < input_frame; i++ ) + { + hOSba->interpolator[i] = ( (float) i ) / ( (float) input_frame ); + } + + st_ivas->hOSba = hOSba; + + return error; +} + + +/*--------------------------------------------------------------------------* + * ivas_omasa_enc_close() + * + * Close OMASA handle + *--------------------------------------------------------------------------*/ + +void ivas_osba_enc_close( + OSBA_ENC_HANDLE *hOSba /* i/o: encoder OSBA handle */ +) +{ + if ( hOSba == NULL || *hOSba == NULL ) + { + return; + } + + for ( int16_t n = 0; n < MAX_NUM_OBJECTS; n++ ) + { + if ( ( *hOSba )->input_data_mem[n] != NULL ) + { + free( ( *hOSba )->input_data_mem[n] ); + ( *hOSba )->input_data_mem[n] = NULL; + } + } + + free( *hOSba ); + ( *hOSba ) = NULL; + + return; +} + + +/*--------------------------------------------------------------------------* + * ivas_osba_enc_reconfig() + * + * oSBA encoder reconfiguration + *--------------------------------------------------------------------------*/ + +ivas_error ivas_osba_enc_reconfig( + Encoder_Struct *st_ivas /* i/o: IVAS encoder structure */ +) +{ + + int16_t n, nSCE_old, nCPE_old, nchan_transport_old; + ISM_MODE old_ism_mode; + int32_t ivas_total_brate; + ivas_error error; + ENCODER_CONFIG_HANDLE hEncoderConfig; + + error = IVAS_ERR_OK; + hEncoderConfig = st_ivas->hEncoderConfig; + ivas_total_brate = hEncoderConfig->ivas_total_brate; + + if ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) + { + DIRAC_ENC_HANDLE hDirAC = st_ivas->hDirAC; + SPAR_ENC_HANDLE hSpar; + int16_t analysis_order_old; + int16_t spar_reconfig_flag; + int16_t nbands_old; + int16_t ndir_old; + + spar_reconfig_flag = 0; + old_ism_mode = st_ivas->ism_mode; + if ( ivas_total_brate >= IVAS_256k ) + { + st_ivas->ism_mode = ISM_SBA_MODE_DISC; + } + else + { + st_ivas->ism_mode = ISM_MODE_NONE; + } + nchan_transport_old = st_ivas->nchan_transport; + nCPE_old = st_ivas->nCPE; + nSCE_old = st_ivas->nSCE; + st_ivas->sba_analysis_order = ivas_sba_get_analysis_order( ivas_total_brate, hEncoderConfig->sba_order ); + analysis_order_old = ivas_sba_get_analysis_order( hEncoderConfig->last_ivas_total_brate, hEncoderConfig->sba_order ); + nbands_old = st_ivas->hQMetaData->q_direction->cfg.nbands; + ndir_old = st_ivas->hQMetaData->no_directions; + + if ( ( analysis_order_old != st_ivas->sba_analysis_order ) || ( old_ism_mode != st_ivas->ism_mode ) ) + { + int16_t i, n_old; + float **old_mem_hp20_in; + + n_old = st_ivas->hEncoderConfig->nchan_ism + ( analysis_order_old + 1 ) * ( analysis_order_old + 1 ); + n = st_ivas->hEncoderConfig->nchan_ism + ( st_ivas->sba_analysis_order + 1 ) * ( st_ivas->sba_analysis_order + 1 ); + + if ( n > n_old ) + { + /* save old mem_hp_20 pointer */ + old_mem_hp20_in = st_ivas->mem_hp20_in; + st_ivas->mem_hp20_in = NULL; + + if ( ( st_ivas->mem_hp20_in = (float **) malloc( n * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); + } + + for ( i = 0; i < n_old; i++ ) + { + st_ivas->mem_hp20_in[i] = old_mem_hp20_in[i]; + old_mem_hp20_in[i] = NULL; + } + /* create additional hp20 memories */ + for ( ; i < n; i++ ) + { + if ( ( st_ivas->mem_hp20_in[i] = (float *) malloc( L_HP20_MEM * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); + } + + set_f( st_ivas->mem_hp20_in[i], 0.0f, L_HP20_MEM ); + } + + free( old_mem_hp20_in ); + old_mem_hp20_in = NULL; + } + else if ( n < n_old ) + { + /* save old mem_hp_20 pointer */ + old_mem_hp20_in = st_ivas->mem_hp20_in; + st_ivas->mem_hp20_in = NULL; + + if ( ( st_ivas->mem_hp20_in = (float **) malloc( n * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for HP20 filter memory\n" ) ); + } + + for ( i = 0; i < n; i++ ) + { + st_ivas->mem_hp20_in[i] = old_mem_hp20_in[i]; + old_mem_hp20_in[i] = NULL; + } + /* remove superfluous hp20 memories */ + for ( ; i < n_old; i++ ) + { + free( old_mem_hp20_in[i] ); + old_mem_hp20_in[i] = NULL; + } + + free( old_mem_hp20_in ); + old_mem_hp20_in = NULL; + } + } + ivas_spar_config( ivas_total_brate, min( st_ivas->sba_analysis_order, IVAS_MAX_SBA_ORDER ), + &st_ivas->nchan_transport, &st_ivas->nSCE, &st_ivas->nCPE, &st_ivas->hSpar->core_nominal_brate, -1 ); + hSpar = st_ivas->hSpar; + + if ( st_ivas->nchan_transport == 1 ) + { + hEncoderConfig->element_mode_init = IVAS_SCE; + } + else + { + hEncoderConfig->element_mode_init = IVAS_CPE_MDCT; + } + if ( nchan_transport_old != st_ivas->nchan_transport || ( ivas_total_brate < IVAS_512k && hEncoderConfig->last_ivas_total_brate >= IVAS_512k ) || ( ivas_total_brate >= IVAS_512k && hEncoderConfig->last_ivas_total_brate < IVAS_512k ) ) + { + /* FB mixer handle */ + if ( hDirAC->hFbMixer != NULL ) + { + ivas_FB_mixer_close( &( hDirAC->hFbMixer ), hEncoderConfig->input_Fs, 0 ); + hDirAC->hFbMixer = NULL; + } + spar_reconfig_flag = 1; + ivas_spar_enc_close( &( st_ivas->hSpar ), hEncoderConfig->input_Fs, hEncoderConfig->nchan_inp, spar_reconfig_flag ); + + if ( ( error = ivas_spar_enc_open( st_ivas, spar_reconfig_flag ) ) != IVAS_ERR_OK ) + { + return error; + } + } + st_ivas->hSpar->spar_reconfig_flag = spar_reconfig_flag; + if ( ( error = ivas_dirac_enc_reconfigure( st_ivas ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( st_ivas->hQMetaData->q_direction->cfg.nbands != nbands_old || st_ivas->hQMetaData->no_directions != ndir_old ) + { + int16_t dir, j, i; + IVAS_QDIRECTION *q_direction = st_ivas->hQMetaData->q_direction; + for ( dir = 0; dir < st_ivas->hQMetaData->no_directions; dir++ ) + { + for ( j = 0; j < q_direction[dir].cfg.nbands; j++ ) + { + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + q_direction[dir].band_data[j].energy_ratio_index[i] = 0; + q_direction[dir].band_data[j].energy_ratio_index_mod[i] = 0; + } + } + } + } + hSpar->enc_param_start_band = hDirAC->hConfig->enc_param_start_band; + + /*-----------------------------------------------------------------* + * Allocate, initialize, and configure SCE/CPE/MCT handles + *-----------------------------------------------------------------*/ + if ( old_ism_mode == ISM_MODE_NONE && st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + st_ivas->nchan_transport += st_ivas->hEncoderConfig->nchan_ism; + st_ivas->nCPE += ( st_ivas->hEncoderConfig->nchan_ism + 1 ) >> 1; + } + else if ( old_ism_mode == ISM_SBA_MODE_DISC && st_ivas->ism_mode == ISM_MODE_NONE ) + { + nchan_transport_old += st_ivas->hEncoderConfig->nchan_ism; + } + else if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + st_ivas->nchan_transport += st_ivas->hEncoderConfig->nchan_ism; + st_ivas->nCPE += ( st_ivas->hEncoderConfig->nchan_ism + 1 ) >> 1; + nCPE_old = st_ivas->nCPE; + nchan_transport_old = st_ivas->nchan_transport; + } + + if ( ( error = ivas_corecoder_enc_reconfig( st_ivas, nSCE_old, nCPE_old, nchan_transport_old, ivas_total_brate / st_ivas->nchan_transport, ( ivas_total_brate / st_ivas->nchan_transport ) * CPE_CHANNELS, MC_MODE_NONE ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( st_ivas->ism_mode == ISM_SBA_MODE_DISC ) + { + /*retain original value for further processing*/ + st_ivas->nchan_transport -= st_ivas->hEncoderConfig->nchan_ism; + } + } + + return error; +} + + +/*--------------------------------------------------------------------------* + * ivas_osba_enc() + * + * Main OSBA encoding function + *--------------------------------------------------------------------------*/ + +void ivas_osba_enc( + OSBA_ENC_HANDLE hOSba, /* i/o: OSBA encoder handle */ + ISM_METADATA_HANDLE hIsmMeta[], /* i/o: ISM metadata handle */ + float *data_in_f[], /* i/o: Input / transport audio signals */ + const int16_t input_frame, /* i : Input frame size */ + const int16_t nchan_ism, /* i : Number of objects for parameter analysis */ + const ISM_MODE ism_mode, /* i : ISM mode */ + const int16_t sba_analysis_order, /* i : SBA order evaluated in DirAC/SPAR encoder */ + const int32_t input_Fs /* i : input sampling rate*/ +) +{ + float data_out_f[MAX_INPUT_CHANNELS][L_FRAME48k]; + int16_t n, delay_s; + delay_s = NS2SA( input_Fs, IVAS_FB_ENC_DELAY_NS ); + + if ( ism_mode == ISM_MODE_NONE ) + { + /*keep the delay buffer up to date*/ + for ( n = 0; n < nchan_ism; n++ ) + { + mvr2r( &data_in_f[n][input_frame - delay_s], hOSba->input_data_mem[n], delay_s ); + } + + /* Convert ISM to SBA */ + ivas_osba_render_ism_to_sba( data_in_f, data_out_f, input_frame, sba_analysis_order, nchan_ism, hIsmMeta, hOSba->prev_object_dm_gains, hOSba->interpolator ); + + /* Merge SBA signals */ + ivas_merge_sba_transports( data_out_f, &( data_in_f[nchan_ism] ), data_in_f, input_frame, sba_analysis_order ); + } + else + { + int16_t azimuth, elevation; + /* delay ISM input channels to match the SBA encoder delay */ + for ( n = 0; n < nchan_ism; n++ ) + { + delay_signal( data_in_f[n], input_frame, hOSba->input_data_mem[n], delay_s ); + + + /*keep prev gain upto date for bitrate switching*/ + azimuth = (int16_t) floorf( hIsmMeta[n]->azimuth + 0.5f ); + elevation = (int16_t) floorf( hIsmMeta[n]->elevation + 0.5f ); + ivas_dirac_dec_get_response( azimuth, elevation, hOSba->prev_object_dm_gains[n], sba_analysis_order ); + } + } + + /* Set the number of objects */ + hOSba->nchan_ism = nchan_ism; + + return; +} + + +/*--------------------------------------------------------------------------* + * Local functions + *--------------------------------------------------------------------------*/ + +/* Render ISMs to SBA */ +static void ivas_osba_render_ism_to_sba( + float *data_in_f[], + float data_out_f[][L_FRAME48k], + const int16_t input_frame, + const int16_t sba_analysis_order, + const int16_t nchan_ism, + ISM_METADATA_HANDLE hIsmMeta[], + float prev_gains[][MAX_INPUT_CHANNELS], + const float interpolator[L_FRAME48k] ) +{ + int16_t i, j, k; + int16_t azimuth, elevation; + float gains[MAX_INPUT_CHANNELS]; + float g1, g2; + float output_gain; + + int16_t nchan_sba; + + nchan_sba = ( sba_analysis_order + 1 ) * ( sba_analysis_order + 1 ); + + for ( i = 0; i < nchan_sba; i++ ) + { + set_zero( data_out_f[i], input_frame ); + } + + for ( i = 0; i < nchan_ism; i++ ) + { + azimuth = (int16_t) floorf( hIsmMeta[i]->azimuth + 0.5f ); + elevation = (int16_t) floorf( hIsmMeta[i]->elevation + 0.5f ); + + ivas_dirac_dec_get_response( azimuth, elevation, gains, sba_analysis_order ); + + /* Render using the sh gains */ + for ( j = 0; j < nchan_sba; j++ ) + { + if ( fabsf( gains[j] ) > 0.0 || fabsf( prev_gains[i][j] ) > 0.0f ) + { + for ( k = 0; k < input_frame; k++ ) + { + g1 = interpolator[k]; + g2 = 1.0f - g1; + data_out_f[j][k] += ( g1 * gains[j] + g2 * prev_gains[i][j] ) * data_in_f[i][k]; + } + } + prev_gains[i][j] = gains[j]; + } + } + + /* Gain with loudness-matching gains */ + output_gain = 0.7499f; + for ( j = 0; j < nchan_sba; j++ ) + { + for ( k = 0; k < input_frame; k++ ) + { + data_out_f[j][k] *= output_gain; + } + } + + return; +} diff --git a/lib_enc/ivas_qmetadata_enc.c b/lib_enc/ivas_qmetadata_enc.c index 3355db5b66cb7c450957fd479c3da9d160433763..9969669b93c56e34cfb2d9558d50179a8c374ff0 100644 --- a/lib_enc/ivas_qmetadata_enc.c +++ b/lib_enc/ivas_qmetadata_enc.c @@ -63,9 +63,9 @@ static int16_t ivas_qmetadata_entropy_encode_dir( BSTR_ENC_HANDLE hMetaData, IVA static int16_t ivas_qmetadata_raw_encode_dir( BSTR_ENC_HANDLE hMetaData, IVAS_QDIRECTION *q_direction, const int16_t nbands, const int16_t start_band ); -static int16_t ivas_qmetadata_encode_extended_gr_length( const uint16_t value, const uint16_t alphabet_size, const int16_t gr_param ); +int16_t +ivas_qmetadata_encode_extended_gr_length( const uint16_t value, const uint16_t alphabet_size, const int16_t gr_param ); -static void ivas_qmetadata_encode_extended_gr( BSTR_ENC_HANDLE hMetaData, const uint16_t value, const uint16_t alphabet_size, const int16_t gr_param ); static int16_t ivas_qmetadata_get_optimal_gr_param( uint16_t *unsigned_data, const int16_t count, const int16_t gr_param_count, int16_t *opt_gr_size ); @@ -129,6 +129,12 @@ static void ivas_qmetadata_reorder_2dir_bands_hr( IVAS_QMETADATA_HANDLE hQMetaDa static int16_t ivas_qmetadata_quantize_coherence_hr_512( IVAS_QMETADATA *hQMetaData, const int16_t idx_d, const int16_t all_coherence_zero, BSTR_ENC_HANDLE hMetaData, const int16_t bits_coh ); +static int16_t write_stream_dct_coeffs_omasa( int16_t *q_idx, const int16_t len_stream, BSTR_ENC_HANDLE hMetaData, const int16_t first_line, const int16_t low_bitrate_mode ); + +static int16_t find_optimal_GR_order( const int16_t *q_idx, const int16_t len, int16_t *GR ); + +static int16_t find_optimal_GR_orders( const int16_t *q_idx, const int16_t len, const int16_t len_max_GR1, int16_t *GR1, int16_t *GR2, int16_t *i_min ); + /*-----------------------------------------------------------------------* * ivas_qmetadata_enc_encode() @@ -759,7 +765,6 @@ ivas_error ivas_qmetadata_enc_encode_hr_384_512( bits_no_dirs_coh += #endif write_2dir_info( hMetaData, hQMetaData->twoDirBands, hQMetaData->q_direction[0].cfg.nbands, hQMetaData->numTwoDirBands ); -#ifdef FIX_566_2DIR_MASA_384K d = 0; for ( i = hQMetaData->q_direction[1].cfg.start_band; i < hQMetaData->q_direction[1].cfg.nbands; i++ ) { @@ -776,7 +781,6 @@ ivas_error ivas_qmetadata_enc_encode_hr_384_512( d++; } } -#endif for ( i = hQMetaData->numTwoDirBands; i < hQMetaData->q_direction[0].cfg.nbands; i++ ) { set_f( hQMetaData->q_direction[1].band_data[i].energy_ratio, 0.0f, hQMetaData->q_direction[1].cfg.nblocks ); @@ -833,9 +837,7 @@ ivas_error ivas_qmetadata_enc_encode_hr_384_512( } #endif -#ifdef FIX_QMETA_SID_5k2 q_direction->not_in_2D = 0; -#endif /*Coherence */ if ( all_coherence_zero == 0 ) @@ -979,17 +981,12 @@ void ivas_qmetadata_enc_sid_encode( if ( ivas_format == SBA_FORMAT ) { - /* TODO: still use old sid frame size to keep bitexactness */ - metadata_sid_bits = (int16_t) ( 5000 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - 1; /* -1 for inactive mode header bit*/ + metadata_sid_bits = (int16_t) ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - 2 - SID_FORMAT_NBITS; /* -1 for inactive mode header bit*/ } else { -#ifdef FIX_QMETA_SID_5k2 - /* TODO: still use old sid frame size to keep bitexactness */ + metadata_sid_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; -#else - metadata_sid_bits = ( 4400 /*IVAS_SID_5k2*/ - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; -#endif } #ifdef DEBUG_MODE_QMETADATA @@ -1045,7 +1042,6 @@ void ivas_qmetadata_enc_sid_encode( /*Encode the quantized diffuseness in raw coding*/ bits_dir = 0; bits_diff = 0; -#ifdef FIX_QMETA_SID_5k2 if ( ivas_format != SBA_FORMAT ) { for ( b = start_band; b < nbands; b++ ) @@ -1110,7 +1106,6 @@ void ivas_qmetadata_enc_sid_encode( } else { -#endif for ( b = start_band; b < nbands; b++ ) { q_direction->band_data[b].energy_ratio_index[0] = max( q_direction->band_data[b].energy_ratio_index[0], 4 ); @@ -1144,9 +1139,7 @@ void ivas_qmetadata_enc_sid_encode( } } } -#ifdef FIX_QMETA_SID_5k2 } -#endif assert( ( bits_delta >= 0 ) && "Bit budget in Qmetadata SID is violated!!!" ); /*Code diffuseness*/ @@ -1228,12 +1221,6 @@ void ivas_qmetadata_enc_sid_encode( } #endif - /* TODO: temporary to keep BE */ - if ( ivas_format != SBA_FORMAT ) - { - metadata_sid_bits = ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; - } - /* fill bits*/ assert( ( hMetaData->nb_bits_tot - bit_pos_start ) <= metadata_sid_bits && "Too many written bits!" ); while ( ( hMetaData->nb_bits_tot - bit_pos_start ) < metadata_sid_bits ) @@ -1275,6 +1262,7 @@ void reset_metadata_spatial( #endif hMetaData->ind_list[0].value = 1; metadata_sid_bits = (int16_t) ( IVAS_SID_5k2 - SID_2k40 ) / FRAMES_PER_SEC - SID_FORMAT_NBITS; + while ( hMetaData->nb_bits_tot < metadata_sid_bits ) { push_next_indice( hMetaData, 0, 1 ); /*fill bit*/ @@ -1552,32 +1540,66 @@ static void ivas_qmetadata_quantize_diffuseness_nrg_ratios_hr_512( if ( hQMetaData->no_directions == 2 ) { -#ifdef FIX_566_2DIR_MASA_384K float ratioSum; -#endif - for ( j = hQMetaData->q_direction[1].cfg.start_band; j < hQMetaData->q_direction[1].cfg.nbands; ++j ) + if ( bits_dir_hr == 16 ) { - for ( k = 0; k < hQMetaData->q_direction[1].cfg.nblocks; k++ ) + for ( j = hQMetaData->q_direction[1].cfg.start_band; j < hQMetaData->q_direction[1].cfg.nbands; j++ ) + { + for ( k = 0; k < hQMetaData->q_direction[1].cfg.nblocks; k++ ) + { + index = masa_sq( 1.0f - hQMetaData->q_direction[1].band_data[j].energy_ratio[k], diffuseness_thresholds_hr, HR_MASA_ER_LEVELS ); + push_next_indice( hMetaData, index, MASA_BITS_ER_HR ); + hQMetaData->q_direction[1].band_data[j].energy_ratio_index[k] = index; + hQMetaData->q_direction[1].band_data[j].energy_ratio[k] = 1.0f - diffuseness_reconstructions_hr[index]; + + ratioSum = hQMetaData->q_direction[0].band_data[j].energy_ratio[k] + hQMetaData->q_direction[1].band_data[j].energy_ratio[k]; + if ( ratioSum > 1.0f ) + { + hQMetaData->q_direction[0].band_data[j].energy_ratio[k] /= ratioSum; + hQMetaData->q_direction[1].band_data[j].energy_ratio[k] /= ratioSum; + } + + needed_bits[1] += MASA_BITS_ER_HR; + hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr; + } + } + } + else + { + int16_t pos_2dir_band[MASA_MAXIMUM_CODING_SUBBANDS]; + k = 0; + for ( j = hQMetaData->q_direction[0].cfg.start_band; j < hQMetaData->q_direction[0].cfg.nbands; j++ ) { - index = masa_sq( 1.0f - hQMetaData->q_direction[1].band_data[j].energy_ratio[k], diffuseness_thresholds_hr, HR_MASA_ER_LEVELS ); - push_next_indice( hMetaData, index, MASA_BITS_ER_HR ); - hQMetaData->q_direction[1].band_data[j].energy_ratio_index[k] = index; - hQMetaData->q_direction[1].band_data[j].energy_ratio[k] = 1.0f - diffuseness_reconstructions_hr[index]; -#ifdef FIX_566_2DIR_MASA_384K - ratioSum = hQMetaData->q_direction[0].band_data[j].energy_ratio[k] + hQMetaData->q_direction[1].band_data[j].energy_ratio[k]; - if ( ratioSum > 1.0f ) + if ( hQMetaData->twoDirBands[j] == 1 ) { - hQMetaData->q_direction[0].band_data[j].energy_ratio[k] /= ratioSum; - hQMetaData->q_direction[1].band_data[j].energy_ratio[k] /= ratioSum; + pos_2dir_band[k] = j; + k++; } -#else - if ( hQMetaData->q_direction[1].band_data[j].energy_ratio[k] > 1.0f - hQMetaData->q_direction[0].band_data[j].energy_ratio[k] ) + else { - hQMetaData->q_direction[1].band_data[j].energy_ratio[k] = 1.0f - hQMetaData->q_direction[0].band_data[j].energy_ratio[k]; + pos_2dir_band[k] = 0; + } + } + for ( j = hQMetaData->q_direction[1].cfg.start_band; j < hQMetaData->q_direction[1].cfg.nbands; j++ ) + { + for ( k = 0; k < hQMetaData->q_direction[1].cfg.nblocks; k++ ) + { + index = masa_sq( 1.0f - hQMetaData->q_direction[1].band_data[j].energy_ratio[k], diffuseness_thresholds_hr, HR_MASA_ER_LEVELS ); + push_next_indice( hMetaData, index, MASA_BITS_ER_HR ); + hQMetaData->q_direction[1].band_data[j].energy_ratio_index[k] = index; + hQMetaData->q_direction[1].band_data[j].energy_ratio[k] = 1.0f - diffuseness_reconstructions_hr[index]; + + ratioSum = hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio[k] + hQMetaData->q_direction[1].band_data[j].energy_ratio[k]; + + if ( ratioSum > 1.0f ) + { + hQMetaData->q_direction[0].band_data[pos_2dir_band[j]].energy_ratio[k] /= ratioSum; + hQMetaData->q_direction[1].band_data[j].energy_ratio[k] /= ratioSum; + } + + needed_bits[1] += MASA_BITS_ER_HR; + hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr; } -#endif - needed_bits[1] += MASA_BITS_ER_HR; - hQMetaData->q_direction[1].band_data[j].bits_sph_idx[k] = bits_dir_hr; } } } @@ -2213,7 +2235,7 @@ static void ivas_qmetadata_encode_quasi_uniform( int16_t bits; uint16_t tresh; #ifdef DEBUGGING - assert( ( alphabet_size >= 1 ) ); /* ToDo: fcs: to check if this additional conditon is really needed: && (alphabet_size <= (1U << 31) - 1));*/ + assert( ( alphabet_size >= 1 ) ); assert( value < alphabet_size ); #endif @@ -2452,7 +2474,7 @@ static int16_t ivas_qmetadata_encode_quasi_uniform_length( int16_t bits; uint16_t tresh; #ifdef DEBUGGING - assert( ( alphabet_size >= 1 ) ); /* ToDo: fcs: to check if this additional conditon is really needed: && (alphabet_size <= (1U << 31) - 1));*/ + assert( ( alphabet_size >= 1 ) ); assert( value < alphabet_size ); #endif @@ -2491,9 +2513,10 @@ static int16_t ivas_qmetadata_entropy_encode_dir( float avg_direction_vector[3], direction_vector[3], avg_azimuth, avg_elevation; int16_t avg_azimuth_alphabet, avg_elevation_alphabet; uint16_t avg_azimuth_index, avg_elevation_index; - int16_t avg_elevation_index_initial, avg_elevation_offset, avg_elevation_index_projected; - int16_t avg_azimuth_index_initial, avg_azimuth_offset, avg_azimuth_index_projected; - + int16_t avg_elevation_index_projected; + int16_t avg_azimuth_index_projected; + uint16_t avg_elevation_index_initial, avg_elevation_offset; + uint16_t avg_azimuth_index_initial, avg_azimuth_offset; int16_t elevation_bits_ec_best, azimuth_bits_ec_best; int16_t gr_param_elevation_best = 0, avg_elevation_index_best = 0; @@ -2615,13 +2638,15 @@ static int16_t ivas_qmetadata_entropy_encode_dir( { if ( sign_th < 0 ) { - avg_elevation_index = -avg_elevation_index; + avg_elevation_index = ( avg_elevation_alphabet >> 1 ) - avg_elevation_index; + } + else + { + avg_elevation_index += ( avg_elevation_alphabet >> 1 ); } avg_elevation *= sign_th; - avg_elevation_index += ( avg_elevation_alphabet >> 1 ); } - avg_azimuth_index = quantize_phi( avg_azimuth + 180, 0, &avg_azimuth, avg_azimuth_alphabet ); - + avg_azimuth_index = (uint16_t) ( quantize_phi( avg_azimuth + 180, 0, &avg_azimuth, avg_azimuth_alphabet ) ); /* Elevation only if not 2D */ if ( q_direction->not_in_2D > 0 ) { @@ -2638,10 +2663,9 @@ static int16_t ivas_qmetadata_entropy_encode_dir( } else { - avg_elevation_index = avg_elevation_index_initial + ivas_qmetadata_dereorder_generic( avg_elevation_offset ); + avg_elevation_index = (uint16_t) ( avg_elevation_index_initial + ivas_qmetadata_dereorder_generic( avg_elevation_offset ) ); } - - avg_elevation_index = ( avg_elevation_index + avg_elevation_alphabet ) % avg_elevation_alphabet; + avg_elevation_index = (uint16_t) ( ( avg_elevation_index + avg_elevation_alphabet ) % avg_elevation_alphabet ); all_zero_dist_elevation_indexes = 1; if ( q_direction->cfg.mc_ls_setup != MC_LS_SETUP_INVALID ) @@ -2744,7 +2768,7 @@ static int16_t ivas_qmetadata_entropy_encode_dir( if ( ( nbands - start_band >= 5 ) && ( q_direction->cfg.mc_ls_setup != MC_LS_SETUP_INVALID ) && ( nblocks > 1 ) ) { use_adapt_avg = calc_var_azi( q_direction, diffuseness_index_max_ec_frame, avg_azimuth - 180, &avg_azimuth ); - avg_azimuth_index = quantize_phi( avg_azimuth + 180, 0, &avg_azimuth, avg_azimuth_alphabet ); + avg_azimuth_index = (uint16_t) ( quantize_phi( avg_azimuth + 180, 0, &avg_azimuth, avg_azimuth_alphabet ) ); } avg_azimuth_index_initial = avg_azimuth_index; /* avg_azimuth_index;*/ azimuth_bits_ec_best = MAX16B; @@ -2754,9 +2778,8 @@ static int16_t ivas_qmetadata_entropy_encode_dir( for ( avg_azimuth_offset = 0; avg_azimuth_offset < q_direction->cfg.search_effort; avg_azimuth_offset++ ) { set_zero( avg_direction_vector, 3 ); - avg_azimuth_index = avg_azimuth_index_initial + ivas_qmetadata_dereorder_generic( avg_azimuth_offset ); - avg_azimuth_index = ( avg_azimuth_index + avg_azimuth_alphabet ) % avg_azimuth_alphabet; - + avg_azimuth_index = (uint16_t) ( avg_azimuth_index_initial + ivas_qmetadata_dereorder_generic( avg_azimuth_offset ) ); + avg_azimuth_index = (uint16_t) ( ( avg_azimuth_index + avg_azimuth_alphabet ) % avg_azimuth_alphabet ); all_zero_dist_azimuth_indexes = 1; azimuth_bits_ec = ivas_qmetadata_encode_quasi_uniform_length( ivas_qmetadata_reorder_generic( avg_azimuth_index - ( avg_azimuth_alphabet >> 1 ) ), avg_azimuth_alphabet ); @@ -3102,7 +3125,8 @@ static int16_t ivas_qmetadata_get_optimal_gr_param( * *------------------------------------------------------------------------*/ -static int16_t ivas_qmetadata_encode_extended_gr_length( +int16_t +ivas_qmetadata_encode_extended_gr_length( const uint16_t value, const uint16_t alphabet_size, const int16_t gr_param ) @@ -3245,7 +3269,7 @@ static int16_t ivas_qmetadata_reorder_azimuth_index( * *------------------------------------------------------------------------*/ -static void ivas_qmetadata_encode_extended_gr( +void ivas_qmetadata_encode_extended_gr( BSTR_ENC_HANDLE hMetaData, const uint16_t value, const uint16_t alphabet_size, @@ -3444,7 +3468,7 @@ static int16_t truncGR0( *-------------------------------------------------------------------*/ static int16_t truncGR0_chan( - float *data, + const float *data, float *data_hat, uint16_t *data_idx, const int16_t len, @@ -5997,3 +6021,494 @@ static float direction_distance( return d / (float) ( dim1 * dim2 ); } #endif + + +static int16_t divide_GR_orders( + const int16_t *q_idx, + const int16_t GR1, + const int16_t GR2, + const int16_t len, + const int16_t len_max_GR1, + int16_t *i_min ) +{ + int16_t nb_GR_min; + int16_t i, j, nb_GR; + nb_GR_min = 1000; + *i_min = -1; + for ( i = 0; i < min( len_max_GR1, len ); i++ ) + { + nb_GR = 0; + + for ( j = 0; j <= i; j++ ) + { + nb_GR += ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR1 ); + } + for ( j = i + 1; j < len; j++ ) + { + nb_GR += ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR2 ); + } + + if ( nb_GR < nb_GR_min ) + { + nb_GR_min = nb_GR; + *i_min = i + 1; + } + } + + return nb_GR_min; +} + + +static int16_t find_optimal_GR_order( + const int16_t *q_idx, + const int16_t len, + int16_t *GR ) +{ + int16_t nb_GR_0, nb_GR_1; + int16_t i; + /* find optimum length of the part encoded with GR2 */ + nb_GR_0 = 0; + nb_GR_1 = 0; + for ( i = 0; i < len; i++ ) + { + nb_GR_0 += ivas_qmetadata_encode_extended_gr_length( q_idx[i], 100, 0 ); + nb_GR_1 += ivas_qmetadata_encode_extended_gr_length( q_idx[i], 100, 1 ); + } + + if ( nb_GR_0 < nb_GR_1 ) + { + *GR = 0; + return nb_GR_0; + } + else + { + *GR = 1; + + return nb_GR_1; + } +} + + +static int16_t find_optimal_GR_orders( + const int16_t *q_idx, + const int16_t len, + const int16_t len_max_GR1, + int16_t *GR1, + int16_t *GR2, + int16_t *i_min ) +{ + int16_t nb_GR_20, nb_GR_21, nb_GR_10, nb_GR_min; + int16_t i_min_20, i_min_21, i_min_10; + /* find optimum length of the part encoded with GR2 */ + nb_GR_20 = divide_GR_orders( q_idx, 2, 0, len, len_max_GR1, &i_min_20 ); + nb_GR_21 = divide_GR_orders( q_idx, 2, 1, len, len_max_GR1, &i_min_21 ); + nb_GR_10 = divide_GR_orders( q_idx, 1, 0, len, len_max_GR1, &i_min_10 ); + + if ( nb_GR_20 < nb_GR_21 && nb_GR_20 < nb_GR_10 ) + { + *GR1 = 2; + *GR2 = 0; + nb_GR_min = nb_GR_20; + *i_min = i_min_20; + } + else + { + if ( nb_GR_21 < nb_GR_20 && nb_GR_21 < nb_GR_10 ) + { + *GR1 = 2; + *GR2 = 1; + nb_GR_min = nb_GR_21; + *i_min = i_min_21; + } + else + { + *GR1 = 1; + *GR2 = 0; + nb_GR_min = nb_GR_10; + *i_min = i_min_10; + } + } + + return nb_GR_min; +} + + +static int16_t write_stream_dct_coeffs_omasa( + int16_t *q_idx, /* i : array of indexes to be written */ + const int16_t len_stream, /* i : array length */ + BSTR_ENC_HANDLE hMetaData, /* i/o: metadata bitstream */ + const int16_t first_line, /* i : is first line of the matrix? 1/0 */ + const int16_t low_bitrate_mode /* i : is low bitrate mode? if yes, limit the number of bits written */ +) +{ + int16_t nb_bits = 0, bits_pos; + uint16_t nb_GR_min; + int16_t i, j; + int16_t changed, update_needed; + + int16_t GR1, GR2, i_min; + int16_t max_bits; + + bits_pos = hMetaData->nb_bits_tot; + if ( low_bitrate_mode == 1 ) + { + max_bits = 50; + } + else + { + max_bits = 1000; + } + + /* write DCT 0 component */ + /* write sign only if not the very first DCT coeff */ + if ( first_line == 0 ) + { + if ( q_idx[0] > 0 ) + { + push_next_indice( hMetaData, 1, 1 ); + push_next_indice( hMetaData, q_idx[0], BITS_MASA2TOTTAL_DCT0 ); + } + else + { + push_next_indice( hMetaData, 0, 1 ); + push_next_indice( hMetaData, -q_idx[0], BITS_MASA2TOTTAL_DCT0 ); + } + nb_bits += BITS_MASA2TOTTAL_DCT0 + 1; + } + else + { + push_next_indice( hMetaData, q_idx[0], BITS_MASA2TOTTAL_DCT0 ); + nb_bits += BITS_MASA2TOTTAL_DCT0; + } + + if ( q_idx[0] != 0 ) + { + i_min = 1; + GR2 = 0; + if ( len_stream >= 8 ) + { + nb_GR_min = find_optimal_GR_orders( &q_idx[1], len_stream - 1, 15, &GR1, &GR2, &i_min ); + } + else + { + nb_GR_min = find_optimal_GR_order( &q_idx[1], len_stream - 1, &GR1 ); + } + + assert( nb_GR_min < 1000 ); + changed = 1; + update_needed = 0; + while ( len_stream >= 8 && nb_GR_min > max_bits && changed >= 1 ) + { + update_needed = 1; + changed = 0; + for ( j = len_stream - 1; j > 6; j-- ) + { + if ( q_idx[j] >= 2 ) + { + + if ( j > i_min ) + { + changed = 1; + nb_GR_min -= ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR2 ); + q_idx[j] -= 2; + nb_GR_min += ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR2 ); + } + else + { + changed = 1; + nb_GR_min -= ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR1 ); + q_idx[j] -= 2; + nb_GR_min += ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, 0 ); + } + } + else if ( q_idx[j] == 1 ) + { + if ( j > i_min ) + { + changed = 1; + nb_GR_min -= ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR2 ); + q_idx[j] -= 1; + + nb_GR_min += ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR2 ); + } + else + { + changed = 1; + nb_GR_min -= ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, GR1 ); + q_idx[j] -= 1; + nb_GR_min += ivas_qmetadata_encode_extended_gr_length( q_idx[j], 100, 0 ); + } + } + if ( nb_GR_min < max_bits ) + { + break; + } + } + } + + if ( update_needed == 1 ) + { + /* re-calculate */ + /* find optimum length of the part encoded with GR2 */ + nb_GR_min = find_optimal_GR_orders( &q_idx[1], len_stream - 1, 15, &GR1, &GR2, &i_min ); + } + + if ( len_stream >= 8 ) + { + /* write number of indexes encoded with GR2 on 4 bits */ + push_next_indice( hMetaData, i_min, 4 ); + nb_bits += 4; + /* write GR orders */ + push_next_indice( hMetaData, GR1 - 1, 1 ); + nb_bits += 1; + if ( GR1 == 2 ) + { + push_next_indice( hMetaData, GR2, 1 ); + nb_bits += 1; + } + + /* write GR data */ + for ( i = 1; i <= i_min; i++ ) + { + ivas_qmetadata_encode_extended_gr( hMetaData, q_idx[i], 100, GR1 ); + } + + for ( i = i_min + 1; i < len_stream; i++ ) + { + ivas_qmetadata_encode_extended_gr( hMetaData, q_idx[i], 100, GR2 ); + } + } + else + { + /* len_stream <= 8 */ + /* write GR order */ + push_next_indice( hMetaData, GR1, 1 ); + nb_bits += 1; + for ( i = 1; i < len_stream; i++ ) + { + ivas_qmetadata_encode_extended_gr( hMetaData, q_idx[i], 100, GR1 ); + } + } + + nb_bits += nb_GR_min; + + assert( nb_bits == ( hMetaData->nb_bits_tot - bits_pos ) ); + } + + return nb_bits; +} + + +/*------------------------------------------------------------------------- + * ivas_omasa_encode_masa_to_total() + * + *------------------------------------------------------------------------*/ + +void ivas_omasa_encode_masa_to_total( + float masa_to_total_energy_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 ) +{ + int16_t i, j, k; + float data[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + float q_dct_data[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + float step = STEP_M2T; + int16_t q_idx[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + float dct_data_tmp[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + float dct_data[MAX_PARAM_SPATIAL_SUBFRAMES * MASA_FREQUENCY_BANDS]; + int16_t bits_pos, nb_bits; + int16_t n_streams, len_stream; + +#ifdef DEBUG_MODE_QMETADATA + static FILE *pF = NULL; + static FILE *pF_ratio = NULL; + + if ( pF == NULL ) + pF = fopen( "./res/qmetadata_ism_qidx__enc.txt", "w" ); + if ( pF_ratio == NULL ) + pF_ratio = fopen( "./res/qmetadata_masa2tot_enc.txt", "w" ); + +#endif + + bits_pos = hMetaData->nb_bits_tot; + k = 0; + for ( i = 0; i < nbands; i++ ) + { + for ( j = 0; j < nblocks; j++ ) + { + data[k] = masa_to_total_energy_ratio[j][i]; + k++; + } + } + + /* DCT2 transform */ + n_streams = 1; + len_stream = nbands * nblocks; + switch ( len_stream ) + { + case 4: + matrix_product( dct4, nblocks, nblocks, 0, data, 1, nblocks, 1, dct_data ); + n_streams = 1; + len_stream = 4; + break; + case 5: + matrix_product( dct5, nbands, nbands, 0, data, 1, nbands, 1, dct_data ); + n_streams = 1; + len_stream = nbands; + break; + case 8: + matrix_product( dct8, nbands, nbands, 0, data, 1, nbands, 1, dct_data ); + n_streams = 1; + len_stream = nbands; + break; + case 12: + matrix_product( dct12, nbands, nbands, 0, data, 1, nbands, 1, dct_data ); + n_streams = 1; + len_stream = nbands; + break; + case 20: + matrix_product( dct5, nbands, nbands, 0, data, nblocks, nbands, 1, dct_data_tmp ); + matrix_product( dct_data_tmp, nbands, nblocks, 0, dct4, nblocks, nblocks, 1, dct_data ); + n_streams = 1; + len_stream = nbands * nblocks; + break; + case 32: + matrix_product( dct8, nbands, nbands, 0, data, nblocks, nbands, 1, dct_data_tmp ); + matrix_product( dct_data_tmp, nbands, nblocks, 0, dct4, nblocks, nblocks, 1, dct_data ); + n_streams = nblocks; + len_stream = nbands; + break; + default: + printf( "Incorrect number of coefficients for OMASA.\n" ); + break; + } + + for ( k = 0; k < n_streams; k++ ) + { + j = k * len_stream; + /* quantize with fixed common step */ + q_idx[j] = (int16_t) rintf( dct_data[j] / step ); + + if ( q_idx[j] > ( ( 1 << BITS_MASA2TOTTAL_DCT0 ) - 1 ) ) /* limit DCT0 to BITS_MASA2TOTTAL_DCT0 bit representation */ + { + q_idx[j] = ( ( 1 << BITS_MASA2TOTTAL_DCT0 ) - 1 ); + } + + q_dct_data[j] = step * q_idx[j]; + + if ( q_idx[j] == 0 ) + { + set_s( &q_idx[j], 0, len_stream ); + set_zero( &q_dct_data[j], len_stream ); + } + else + { + for ( i = 1; i < len_stream; i++ ) + { + q_idx[j + i] = (int16_t) rintf( dct_data[j + i] / step ); + q_dct_data[j + i] = step * q_idx[j + i]; + if ( q_idx[j + i] <= 0 ) + { + q_idx[j + i] = -2 * q_idx[j + i]; + } + else + { + q_idx[j + i] = 2 * q_idx[j + i] - 1; + } + } + } + } + + /* write data */ + nb_bits = 0; + for ( i = 0; i < n_streams; i++ ) + { + nb_bits += write_stream_dct_coeffs_omasa( &q_idx[i * len_stream], len_stream, hMetaData, ( i == 0 ), low_bitrate_mode ); + } + + /* reconstruct masa2total */ + q_dct_data[0] = q_idx[0] * step; + for ( i = 1; i < len_stream; i++ ) + { + if ( ( q_idx[i] % 2 ) == 0 ) + { + q_dct_data[i] = -( q_idx[i] >> 1 ) * step; + } + else + { + q_dct_data[i] = ( ( q_idx[i] + 1 ) >> 1 ) * step; + } + } + + /* inverse DCT2 transform */ + switch ( len_stream ) + { + case 4: + matrix_product( dct4, nblocks, nblocks, 1, q_dct_data, nblocks, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nblocks ); + break; + case 5: + matrix_product( dct5, nbands, nbands, 1, q_dct_data, nbands, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nbands ); + break; + case 8: + matrix_product( dct8, nbands, nbands, 1, q_dct_data, nbands, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nbands ); + break; + case 12: + matrix_product( dct12, nbands, nbands, 1, q_dct_data, nbands, 1, 0, dct_data_tmp ); + mvr2r( dct_data_tmp, q_dct_data, nbands ); + break; + case 20: + matrix_product( dct5, nbands, nbands, 1, q_dct_data, nbands, nblocks, 0, dct_data_tmp ); + matrix_product( dct_data_tmp, nbands, nblocks, 0, dct4, nblocks, nblocks, 0, q_dct_data ); /* reuse of variable*/ + break; + case 32: + matrix_product( dct8, nbands, nbands, 1, q_dct_data, nbands, nblocks, 0, dct_data_tmp ); + matrix_product( dct_data_tmp, nbands, nblocks, 0, dct4, nblocks, nblocks, 0, q_dct_data ); + break; + default: + printf( "Incorrect number of coefficients for OMASA.\n" ); + break; + } + + k = 0; + for ( i = 0; i < nblocks; i++ ) + { + for ( j = 0; j < nbands; j++ ) + { + masa_to_total_energy_ratio[i][j] = max( 0.0f, q_dct_data[k] ); + masa_to_total_energy_ratio[i][j] = min( 1.0f, masa_to_total_energy_ratio[i][j] ); + k++; + } + } + assert( nb_bits == ( hMetaData->nb_bits_tot - bits_pos ) ); + +#ifdef DEBUG_MODE_QMETADATA + { + + fprintf( pF, "frame %d: ", frame ); + fprintf( pF_ratio, "frame %d: ", frame ); + + + /* direction_distance( elevation_orig, azimuth_orig, q_direction, nbands, nblocks, mat_dist );*/ + for ( i = 0; i < nbands; i++ ) + { + for ( j = 0; j < 4; j++ ) + { + fprintf( pF_ratio, " %5.2f ", hQMetaData->masa_to_total_energy_ratio[j][i] ); + } + } + for ( i = 0; i < 20; i++ ) + { + fprintf( pF, " %4d ", q_idx[i] ); + } + fprintf( pF, "\n" ); + fprintf( pF_ratio, "\n" ); + } +#endif + + return; +} diff --git a/lib_enc/ivas_qspherical_enc.c b/lib_enc/ivas_qspherical_enc.c index e79c0a01a71023610dc7ea0d615ce3af7457a696..cb245538cbdeb46ffdf06757f79003bf242d74c0 100644 --- a/lib_enc/ivas_qspherical_enc.c +++ b/lib_enc/ivas_qspherical_enc.c @@ -64,7 +64,7 @@ void quantize_direction_frame( ) { int16_t i, j; - int16_t idx; + uint16_t idx; /* Quantize directions */ q_direction->not_in_2D = 0; @@ -169,8 +169,7 @@ void quantize_direction_frame2D( float elevation_orig[MASA_MAXIMUM_CODING_SUBBANDS][MAX_PARAM_SPATIAL_SUBFRAMES] ) { int16_t i, j; - int16_t idx; - + uint16_t idx; /* Quantize directions */ q_direction->not_in_2D = 0; for ( i = q_direction->cfg.start_band; i < q_direction->cfg.nbands; i++ ) diff --git a/lib_enc/ivas_rom_enc.c b/lib_enc/ivas_rom_enc.c index a031d6df288ee817f891256e8bbb9cd3e1d724d8..ce24de702d8382fd4b7d14d8f6d348cc0bd5f891 100644 --- a/lib_enc/ivas_rom_enc.c +++ b/lib_enc/ivas_rom_enc.c @@ -837,13 +837,11 @@ const HUFF_TABLE huff_beta_table[2] = const int16_t mc_paramupmix_fb_remix_order[4] = {0, 1, 2, 3}; -#ifdef FIX_580_PARAMMC_ENER_BURSTS /*----------------------------------------------------------------------------------* * ParamMC ROM tables *----------------------------------------------------------------------------------*/ const float param_mc_ild_diff_threshold[20] = { 8.0f, 8.0f, 10.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f, 20.0f }; -#endif /* clang-format on */ diff --git a/lib_enc/ivas_rom_enc.h b/lib_enc/ivas_rom_enc.h index 170bf3182035352994fe7e57ae24d55cc84bb24f..fa45706cab5082c87232c012f9ce9fcc36602433 100644 --- a/lib_enc/ivas_rom_enc.h +++ b/lib_enc/ivas_rom_enc.h @@ -130,12 +130,10 @@ extern const HUFF_TABLE huff_alpha_table[2]; extern const HUFF_TABLE huff_beta_table[2]; extern const int16_t mc_paramupmix_fb_remix_order[4]; -#ifdef FIX_580_PARAMMC_ENER_BURSTS /*----------------------------------------------------------------------------------* * ParamMC ROM tables *----------------------------------------------------------------------------------*/ extern const float param_mc_ild_diff_threshold[20]; -#endif #endif diff --git a/lib_enc/ivas_sba_enc.c b/lib_enc/ivas_sba_enc.c index 53e2a62a14efbebdd8b2c8a86b3d6c21826a41db..318bc90ddd2a454a209c2862ff84a3e4a2d7e6c9 100644 --- a/lib_enc/ivas_sba_enc.c +++ b/lib_enc/ivas_sba_enc.c @@ -53,9 +53,9 @@ *-------------------------------------------------------------------*/ void ivas_sba_getTCs( - float sba_data[][L_FRAME48k], /* i : SBA signals */ - Encoder_Struct *st_ivas, /* i/o: Encoder struct */ - const int16_t input_frame /* i : frame length */ + float *sba_data[], /* i : SBA signals */ + Encoder_Struct *st_ivas, /* i/o: Encoder struct */ + const int16_t input_frame /* i : frame length */ ) { if ( st_ivas->hEncoderConfig->sba_planar ) diff --git a/lib_enc/ivas_sce_enc.c b/lib_enc/ivas_sce_enc.c index 97992ecb9f4b223f3dd3443e0756a6eb25e9c1a0..f8c7afa6caefbe5817a45680512c9818088db526 100644 --- a/lib_enc/ivas_sce_enc.c +++ b/lib_enc/ivas_sce_enc.c @@ -143,7 +143,7 @@ ivas_error ivas_sce_enc( /* set "bits_frame_nominal" */ if ( st_ivas->hQMetaData != NULL && st_ivas->hSpar == NULL ) { - if ( st_ivas->mc_mode == MC_MODE_MCMASA && st_ivas->hEncoderConfig->ivas_total_brate >= MCMASA_SEPARATE_BRATE ) + if ( ( ( st_ivas->mc_mode == MC_MODE_MCMASA ) && ( st_ivas->hEncoderConfig->ivas_total_brate >= MCMASA_SEPARATE_BRATE ) ) || ( st_ivas->ism_mode >= ISM_MASA_MODE_MASA_ONE_OBJ ) ) { st->bits_frame_nominal = (int16_t) ( hSCE->element_brate / FRAMES_PER_SEC ); } @@ -206,6 +206,17 @@ ivas_error ivas_sce_enc( reset_metadata_spatial( ivas_format, hSCE->hMetaData, hSCE->element_brate, &st->total_brate, st->core_brate, nb_bits_metadata ); + /*----------------------------------------------------------------* + * Combined format coding: get the ISM importance and the bit-rate + *----------------------------------------------------------------*/ + + if ( ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) + { + ivas_set_ism_importance_interformat( hSCE->element_brate, 1, st_ivas->hIsmMetaData, st_ivas->hSCE, st_ivas->hMasa->data.hOmasaData->lp_noise_CPE, &st_ivas->hIsmMetaData[0]->ism_imp ); + + st->total_brate = ivas_interformat_brate( ISM_MASA_MODE_PARAM_ONE_OBJ, 1, hSCE->element_brate, st_ivas->hIsmMetaData[0]->ism_imp, 0 ) - nb_bits_metadata * FRAMES_PER_SEC; + } + /*----------------------------------------------------------------* * Write IVAS format signaling in SID frames *----------------------------------------------------------------*/ @@ -224,6 +235,10 @@ ivas_error ivas_sce_enc( { st->flag_ACELP16k = set_ACELP_flag( IVAS_SCE, hSCE->element_brate, st->core_brate, 0, 0, -1, -1 ); } + else if ( st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ && st->low_rate_mode ) + { + st->flag_ACELP16k = 0; + } else { st->flag_ACELP16k = set_ACELP_flag( IVAS_SCE, hSCE->element_brate, st->total_brate, 0, 0, -1, -1 ); @@ -316,6 +331,7 @@ ivas_error create_sce_enc( hSCE->hMetaData->ind_list = st_ivas->ind_list_metadata; hSCE->hMetaData->ivas_ind_list_zero = &st_ivas->ind_list_metadata; hSCE->hMetaData->ivas_max_num_indices = &st_ivas->ivas_max_num_indices_metadata; + hSCE->hMetaData->st_ivas = st_ivas; reset_indices_enc( hSCE->hMetaData, st_ivas->ivas_max_num_indices_metadata ); } else @@ -334,6 +350,11 @@ ivas_error create_sce_enc( copy_encoder_config( st_ivas, st, 1 ); + if ( st_ivas->hEncoderConfig->ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_DISC ) ) + { + st->element_mode = IVAS_SCE; + } + st->total_brate = hSCE->element_brate; /* dummy initialization for getting right pointers initialization of input buffers in init_coder_ace_plus() */ st->mct_chan_mode = MCT_CHAN_MODE_REGULAR; diff --git a/lib_enc/ivas_spar_encoder.c b/lib_enc/ivas_spar_encoder.c index 5f382c4719882668e0f9892202e80d1b2c07d9a1..476a1f39c36c226f5e9e7ccf22e0a70460afc44f 100644 --- a/lib_enc/ivas_spar_encoder.c +++ b/lib_enc/ivas_spar_encoder.c @@ -48,7 +48,7 @@ * Local function prototypes *--------------------------------------------------------------------*/ -static ivas_error ivas_spar_enc_process( Encoder_Struct *st_ivas, const ENCODER_CONFIG_HANDLE hEncoderConfig, BSTR_ENC_HANDLE hMetaData, const int16_t front_vad_flag, float data_f[][L_FRAME48k] ); +static ivas_error ivas_spar_enc_process( Encoder_Struct *st_ivas, const ENCODER_CONFIG_HANDLE hEncoderConfig, BSTR_ENC_HANDLE hMetaData, const int16_t front_vad_flag, float *data_f[] ); /*------------------------------------------------------------------------- @@ -111,9 +111,7 @@ ivas_error ivas_spar_enc_open( nchan_transport = ivas_get_sba_num_TCs( hEncoderConfig->ivas_total_brate, sba_order_internal ); - // bw = ivas_get_bw_idx_from_sample_rate(pCfg->input_Fs); table_idx = ivas_get_spar_table_idx( ivas_total_brate, sba_order_internal, SPAR_CONFIG_BW, NULL, NULL ); - // ivas_set_bitrate_config(&hSpar->hMdEnc->spar_md_cfg, table_idx); /* MD handle */ if ( ( error = ivas_spar_md_enc_open( &( hSpar->hMdEnc ), hEncoderConfig, sba_order_internal ) ) != IVAS_ERR_OK ) @@ -168,6 +166,7 @@ ivas_error ivas_spar_enc_open( return error; } } + /* PCA handle */ hSpar->hPCA = NULL; if ( hEncoderConfig->Opt_PCA_ON ) @@ -314,7 +313,6 @@ void ivas_spar_enc_close( ( *hSpar ) = NULL; } - return; } @@ -326,11 +324,11 @@ void ivas_spar_enc_close( *-------------------------------------------------------------------*/ ivas_error ivas_spar_enc( - Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure */ - float data_f[][L_FRAME48k], /* 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 */ + 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 */ ) { ENCODER_CONFIG_HANDLE hEncoderConfig; @@ -339,8 +337,6 @@ ivas_error ivas_spar_enc( error = IVAS_ERR_OK; hEncoderConfig = st_ivas->hEncoderConfig; - /* check last sba_mode */ - /* front VAD */ if ( ( error = front_vad_spar( st_ivas->hSpar, data_f[0], hEncoderConfig, input_frame ) ) != IVAS_ERR_OK ) { @@ -369,6 +365,160 @@ ivas_error ivas_spar_enc( } +/*-------------------------------------------------------------------* + * ivas_spar_cov_md_process() + * + * Process call for SPAR covariance and MD encoder + *-------------------------------------------------------------------*/ + +static ivas_error ivas_spar_cov_md_process( + const ENCODER_CONFIG_HANDLE hEncoderConfig, + SPAR_ENC_HANDLE hSpar, + const IVAS_QMETADATA_HANDLE hQMetaData, + BSTR_ENC_HANDLE hMetaData, + const int16_t nchan_inp, + const int16_t sba_order, + float *ppIn_FR_real[IVAS_SPAR_MAX_CH], + float *ppIn_FR_imag[IVAS_SPAR_MAX_CH], + const int16_t transient_det[2], + const int16_t dtx_vad, + const int16_t nchan_transport, + int16_t *dyn_active_w_flag ) +{ + int16_t i, j, i_ts, b, table_idx; + int16_t active_w_vlbr; + /* note: the actual dimensions of matrixes correspond to num_channels = ivas_sba_get_nchan_metadata( sba_order, ivas_total_brate ); */ + float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; + float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; + float cov_real_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; + float cov_dtx_real_buf[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH][IVAS_MAX_NUM_BANDS]; + ivas_error error; + + error = IVAS_ERR_OK; + + active_w_vlbr = ( hEncoderConfig->ivas_total_brate < IVAS_24k4 ) ? 1 : 0; + + /*-----------------------------------------------------------------------------------------* + * Set SPAR bitrates + *-----------------------------------------------------------------------------------------*/ + + table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); + + if ( hSpar->hMdEnc->table_idx != table_idx ) + { + hSpar->hMdEnc->table_idx = table_idx; + if ( hEncoderConfig->ivas_total_brate != hEncoderConfig->last_ivas_total_brate && !hSpar->spar_reconfig_flag ) + { + if ( ( error = ivas_spar_md_enc_init( hSpar->hMdEnc, hEncoderConfig, sba_order ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + ivas_spar_set_bitrate_config( &hSpar->hMdEnc->spar_md_cfg, table_idx, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND, hSpar->hMdEnc->spar_hoa_dirac2spar_md_flag, 1, hEncoderConfig->Opt_PCA_ON, hSpar->AGC_Enable ); + } + } + + /*-----------------------------------------------------------------------------------------* + * Covariance process + *-----------------------------------------------------------------------------------------*/ + + for ( i = 0; i < nchan_inp; i++ ) + { + for ( j = 0; j < nchan_inp; j++ ) + { + cov_real[i][j] = cov_real_buf[i][j]; + cov_dtx_real[i][j] = cov_dtx_real_buf[i][j]; + for ( b = hSpar->hFbMixer->pFb->filterbank_num_bands; b < IVAS_MAX_NUM_BANDS; b++ ) + { + cov_real[i][j][b] = 0.0f; + cov_dtx_real[i][j][b] = 0.0f; + } + } + } + + ivas_enc_cov_handler_process( hSpar->hCovEnc, ppIn_FR_real, ppIn_FR_imag, cov_real, cov_dtx_real, hSpar->hFbMixer->pFb, 0, hSpar->hFbMixer->pFb->filterbank_num_bands, nchan_inp, dtx_vad, transient_det, hSpar->hMdEnc->HOA_md_ind, + &hSpar->hMdEnc->spar_md.res_ind, remix_order_set[hSpar->hMdEnc->spar_md_cfg.remix_unmix_order], dyn_active_w_flag, nchan_transport, 1 ); + + if ( nchan_transport > 1 && nchan_transport <= ( FOA_CHANNELS - 1 ) ) + { + push_next_indice( hMetaData, *dyn_active_w_flag, 1 ); + if ( ( *dyn_active_w_flag == 1 ) && ( nchan_transport == 2 ) ) + { + push_next_indice( hMetaData, hSpar->hMdEnc->spar_md.res_ind - nchan_transport, 1 ); + } + hSpar->front_vad_flag = ( *dyn_active_w_flag == 1 ) ? 1 : hSpar->front_vad_flag; + } + else + { + if ( nchan_transport == FOA_CHANNELS ) + { + push_next_indice( hMetaData, 0, 1 ); + } + } + + /*-----------------------------------------------------------------------------------------* + * MetaData encoder + *-----------------------------------------------------------------------------------------*/ + + if ( hSpar->hMdEnc->spar_hoa_md_flag == 0 ) + { + ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order, hSpar->hFbMixer->prior_mixer, *dyn_active_w_flag, hQMetaData->dirac_mono_flag ); + } + + if ( hSpar->hMdEnc->spar_hoa_dirac2spar_md_flag ) + { + 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]; + float Wscale_d[IVAS_MAX_NUM_BANDS]; + int16_t d_start_band, d_end_band; + int16_t dirac_band_idx; + + d_start_band = hSpar->enc_param_start_band; + d_end_band = IVAS_MAX_NUM_BANDS; + + for ( b = d_start_band; b < d_end_band; b++ ) + { + dirac_band_idx = hSpar->dirac_to_spar_md_bands[b] - d_start_band; + for ( i_ts = 0; i_ts < hQMetaData->q_direction->cfg.nblocks; i_ts++ ) + { + azi_dirac[b][i_ts] = hQMetaData->q_direction->band_data[dirac_band_idx].azimuth[i_ts]; + ele_dirac[b][i_ts] = hQMetaData->q_direction->band_data[dirac_band_idx].elevation[i_ts]; + } + diffuseness[b] = 1.0f - hQMetaData->q_direction->band_data[dirac_band_idx].energy_ratio[0]; + } + + if ( d_start_band >= 6 && dtx_vad == 1 ) + { + mvr2r( hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_quant_re, hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_re, IVAS_SPAR_MAX_CH - 1 ); + } + + for ( b = d_start_band; b < d_end_band; b++ ) + { + Wscale_d[b] = 1.0f; + for ( i = 1; i < nchan_inp; i++ ) + { + Wscale_d[b] += cov_real[i][i][b] / max( EPSILON, cov_real[0][0][b] ); + } + Wscale_d[b] = Wscale_d[b] / ( 1.0f + (float) sba_order ); /*DirAC normalized signal variance sums to 1 + order*/ + Wscale_d[b] = sqrtf( Wscale_d[b] ); + Wscale_d[b] = min( 2.0f, max( Wscale_d[b], 1.0f ) ); + } + + ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, 1, hSpar->hMdEnc->mixer_mat, &hSpar->hMdEnc->spar_md, &hSpar->hMdEnc->spar_md_cfg, d_start_band, d_end_band, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? 1 : sba_order, dtx_vad, Wscale_d, hQMetaData->useLowerRes, active_w_vlbr, *dyn_active_w_flag ); + } + + if ( hSpar->hMdEnc->spar_hoa_md_flag ) + { + ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order, hSpar->hFbMixer->prior_mixer, *dyn_active_w_flag, hQMetaData->dirac_mono_flag ); + } + + return error; +} + + /*-----------------------------------------------------------------------------------------* * Function ivas_spar_enc_process() * @@ -380,38 +530,30 @@ static ivas_error ivas_spar_enc_process( const ENCODER_CONFIG_HANDLE hEncoderConfig, /* i : configuration structure */ BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */ const int16_t front_vad_flag, /* i : front-VAD decision */ - float data_f[][L_FRAME48k] /* i/o: input/transport audio channels */ + float *data_f[] /* i/o: input/transport audio channels */ ) { float pcm_tmp[DIRAC_MAX_ANA_CHANS][L_FRAME48k * 2]; float *p_pcm_tmp[DIRAC_MAX_ANA_CHANS]; - int16_t i, j, b, i_ts, input_frame, dtx_vad; + int16_t i, j, input_frame, dtx_vad; int16_t transient_det[2]; int16_t hodirac_flag; int32_t ivas_total_brate, input_Fs; - float *cov_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; - float *cov_dtx_real[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH]; - int16_t nchan_inp, nchan_transport, sba_order; - int16_t table_idx; + int16_t nchan_inp, sba_order, nchan_transport; int16_t in_out_mixer_map[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH]; ivas_error error; const int16_t *order; SPAR_ENC_HANDLE hSpar = st_ivas->hSpar; IVAS_QMETADATA_HANDLE hQMetaData = st_ivas->hQMetaData; - int16_t ts, l_ts, num_del_samples; + int16_t ts, l_ts, num_del_samples, b, i_ts; float *ppIn_FR_real[IVAS_SPAR_MAX_CH], *ppIn_FR_imag[IVAS_SPAR_MAX_CH]; float wyzx_del_buf[FOA_CHANNELS][IVAS_FB_1MS_48K_SAMP]; + int16_t dyn_active_w_flag; int16_t nchan_fb_in; - /* ToDo: Commented for now*/ - /*int16_t start_nb_bits; - int16_t total_md_bits, total_sba_bits;*/ push_wmops( "ivas_spar_enc_process" ); - /* ToDo: Commented for now*/ - // start_nb_bits = hMetaData->nb_bits_tot; - /*-----------------------------------------------------------------------------------------* * Initialization *-----------------------------------------------------------------------------------------*/ @@ -427,9 +569,6 @@ static ivas_error ivas_spar_enc_process( nchan_inp = ivas_sba_get_nchan_metadata( sba_order, hEncoderConfig->ivas_total_brate ); assert( nchan_inp <= hEncoderConfig->nchan_inp ); - int16_t active_w_vlbr; - active_w_vlbr = ( hEncoderConfig->ivas_total_brate < IVAS_24k4 ) ? 1 : 0; - nchan_fb_in = hSpar->hFbMixer->fb_cfg->nchan_fb_in; nchan_transport = st_ivas->nchan_transport; @@ -454,9 +593,9 @@ static ivas_error ivas_spar_enc_process( if ( hSpar->hFbMixer->fb_cfg->active_w_mixing == 0 ) { /* fill delay (1 ms) buffer for all Transport channels */ - for ( i = 0; i < hSpar->hFbMixer->fb_cfg->num_out_chans; i++ ) + for ( i = 0; i < FOA_CHANNELS; i++ ) { - int idx = hSpar->hFbMixer->fb_cfg->remix_order[i]; + int16_t idx = hSpar->hFbMixer->fb_cfg->remix_order[i]; mvr2r( &hSpar->hFbMixer->ppFilterbank_prior_input[idx][hSpar->hFbMixer->fb_cfg->prior_input_length - num_del_samples], wyzx_del_buf[idx], num_del_samples ); } } @@ -478,7 +617,7 @@ static ivas_error ivas_spar_enc_process( { ppIn_FR_real[i] = p_pcm_tmp[i]; ppIn_FR_imag[i] = p_pcm_tmp[i] + input_frame; - p_pcm_tmp[i] = &data_f[i][0]; + p_pcm_tmp[i] = data_f[i]; } l_ts = input_frame / MAX_PARAM_SPATIAL_SUBFRAMES; @@ -515,100 +654,25 @@ static ivas_error ivas_spar_enc_process( ivas_dirac_enc( st_ivas->hDirAC, hQMetaData, hMetaData, data_f, ppIn_FR_real, ppIn_FR_imag, input_frame, dtx_vad, hEncoderConfig->ivas_format, hodirac_flag ); - /*-----------------------------------------------------------------------------------------* - * Set SPAR bitrates - *-----------------------------------------------------------------------------------------*/ - - table_idx = ivas_get_spar_table_idx( ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); - - if ( hSpar->hMdEnc->table_idx != table_idx ) + /* Set Energy Ratio to 0.0 if the mono flag has been set */ + if ( hQMetaData->dirac_mono_flag ) { - hSpar->hMdEnc->table_idx = table_idx; - if ( ( ivas_total_brate != hEncoderConfig->last_ivas_total_brate ) && ( !hSpar->spar_reconfig_flag ) ) + for ( b = hQMetaData->q_direction->cfg.start_band; b < hQMetaData->q_direction->cfg.nbands; b++ ) { - if ( ( error = ivas_spar_md_enc_init( hSpar->hMdEnc, hEncoderConfig, sba_order ) ) != IVAS_ERR_OK ) + for ( i_ts = 0; i_ts < ( ( dtx_vad == 1 ) ? hQMetaData->q_direction[0].cfg.nblocks : 1 ); i_ts++ ) { - return error; + hQMetaData->q_direction[0].band_data[b].energy_ratio[i_ts] = 0.0f; } } - else - { - ivas_spar_set_bitrate_config( &hSpar->hMdEnc->spar_md_cfg, table_idx, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND, hSpar->hMdEnc->spar_hoa_dirac2spar_md_flag, 1, hEncoderConfig->Opt_PCA_ON, hSpar->AGC_Enable ); - } } /*-----------------------------------------------------------------------------------------* - * Covariance process + * Covariance and MD processing *-----------------------------------------------------------------------------------------*/ - for ( i = 0; i < nchan_inp; i++ ) - { - for ( j = 0; j < nchan_inp; j++ ) - { - cov_real[i][j] = hSpar->hMdEnc->cov_real[i][j]; - cov_dtx_real[i][j] = hSpar->hMdEnc->cov_dtx_real[i][j]; - } - } - - ivas_enc_cov_handler_process( hSpar->hCovEnc, ppIn_FR_real, ppIn_FR_imag, cov_real, cov_dtx_real, hSpar->hFbMixer->pFb, 0, hSpar->hFbMixer->pFb->filterbank_num_bands, nchan_inp, dtx_vad, transient_det, hSpar->hMdEnc->HOA_md_ind ); - - nchan_transport = st_ivas->nchan_transport; - - /*-----------------------------------------------------------------------------------------* - * MetaData encoder - *-----------------------------------------------------------------------------------------*/ - - if ( hSpar->hMdEnc->spar_hoa_md_flag == 0 ) - { - ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order, hSpar->hFbMixer->prior_mixer ); - } - - if ( hSpar->hMdEnc->spar_hoa_dirac2spar_md_flag ) - { - 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]; - float Wscale_d[IVAS_MAX_NUM_BANDS]; - int16_t d_start_band, d_end_band; - int16_t dirac_band_idx; - - d_start_band = hSpar->enc_param_start_band; - d_end_band = IVAS_MAX_NUM_BANDS; - - for ( b = d_start_band; b < d_end_band; b++ ) - { - dirac_band_idx = hSpar->dirac_to_spar_md_bands[b] - d_start_band; - for ( i_ts = 0; i_ts < hQMetaData->q_direction->cfg.nblocks; i_ts++ ) - { - azi_dirac[b][i_ts] = hQMetaData->q_direction[0].band_data[dirac_band_idx].azimuth[i_ts]; - ele_dirac[b][i_ts] = hQMetaData->q_direction[0].band_data[dirac_band_idx].elevation[i_ts]; - } - diffuseness[b] = 1.0f - hQMetaData->q_direction->band_data[dirac_band_idx].energy_ratio[0]; - } - - if ( d_start_band >= 6 && dtx_vad == 1 ) - { - mvr2r( hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_quant_re, hSpar->hMdEnc->spar_md.band_coeffs[d_start_band - 1].P_re, IVAS_SPAR_MAX_CH - 1 ); - } - - for ( b = d_start_band; b < d_end_band; b++ ) - { - Wscale_d[b] = 1.0f; - for ( i = 1; i < nchan_inp; i++ ) - { - Wscale_d[b] += cov_real[i][i][b] / max( EPSILON, cov_real[0][0][b] ); - } - Wscale_d[b] = Wscale_d[b] / ( 1.0f + (float) sba_order ); /*DirAC normalized signal variance sums to 1 + order*/ - Wscale_d[b] = sqrtf( Wscale_d[b] ); - Wscale_d[b] = min( 2.0f, max( Wscale_d[b], 1.0f ) ); - } - - ivas_get_spar_md_from_dirac( azi_dirac, ele_dirac, diffuseness, 1, hSpar->hMdEnc->mixer_mat, &hSpar->hMdEnc->spar_md, &hSpar->hMdEnc->spar_md_cfg, d_start_band, d_end_band, ( hSpar->hMdEnc->spar_hoa_md_flag ) ? 1 : sba_order, dtx_vad, Wscale_d, hQMetaData->useLowerRes, active_w_vlbr ); - } - - if ( hSpar->hMdEnc->spar_hoa_md_flag ) + if ( ( error = ivas_spar_cov_md_process( hEncoderConfig, st_ivas->hSpar, st_ivas->hQMetaData, hMetaData, nchan_inp, sba_order, ppIn_FR_real, ppIn_FR_imag, transient_det, dtx_vad, nchan_transport, &dyn_active_w_flag ) ) != IVAS_ERR_OK ) { - ivas_spar_md_enc_process( hSpar->hMdEnc, hEncoderConfig, cov_real, cov_dtx_real, hMetaData, dtx_vad, nchan_inp, sba_order, hSpar->hFbMixer->prior_mixer ); + return error; } #ifdef DEBUG_LBR_SBA @@ -726,13 +790,46 @@ static ivas_error ivas_spar_enc_process( #endif if ( hSpar->hFbMixer->fb_cfg->active_w_mixing == 0 ) { - /* delayed W */ - mvr2r( wyzx_del_buf[0], p_pcm_tmp[0], num_del_samples ); - mvr2r( data_f[0], p_pcm_tmp[0] + num_del_samples, input_frame - num_del_samples ); + + /*cross fade between new active W channels and old passive W channel*/ + if ( dyn_active_w_flag == 1 ) + { + if ( hSpar->hMdEnc->spar_md.prior_dyn_active_w_flag != dyn_active_w_flag ) + { + float new_w[L_FRAME48k]; + + /* delayed W */ + mvr2r( wyzx_del_buf[0], p_pcm_tmp[0], num_del_samples ); + mvr2r( data_f[0], p_pcm_tmp[0] + num_del_samples, input_frame - num_del_samples ); + + mvr2r( wyzx_del_buf[hSpar->hMdEnc->spar_md.res_ind], new_w, num_del_samples ); + mvr2r( data_f[hSpar->hMdEnc->spar_md.res_ind], &new_w[num_del_samples], input_frame - num_del_samples ); + + if ( hSpar->hMdEnc->spar_md.prior_dyn_active_w_flag == 0 && dyn_active_w_flag == 1 ) + { + ivas_fb_mixer_cross_fading( hSpar->hFbMixer, p_pcm_tmp, p_pcm_tmp[0], new_w, 0, input_frame, 0 ); + } + else if ( hSpar->hMdEnc->spar_md.prior_dyn_active_w_flag == 1 && dyn_active_w_flag == 0 ) + { + ivas_fb_mixer_cross_fading( hSpar->hFbMixer, p_pcm_tmp, new_w, p_pcm_tmp[0], 0, input_frame, 0 ); + } + } + else + { + mvr2r( wyzx_del_buf[hSpar->hMdEnc->spar_md.res_ind], p_pcm_tmp[0], num_del_samples ); + mvr2r( data_f[hSpar->hMdEnc->spar_md.res_ind], p_pcm_tmp[0] + num_del_samples, input_frame - num_del_samples ); + } + } + else + { + /* delayed W */ + mvr2r( wyzx_del_buf[0], p_pcm_tmp[0], num_del_samples ); + mvr2r( data_f[0], p_pcm_tmp[0] + num_del_samples, input_frame - num_del_samples ); + } for ( i = 1; i < hSpar->hFbMixer->fb_cfg->num_out_chans; i++ ) { - int idx = hSpar->hFbMixer->fb_cfg->remix_order[i]; + int16_t idx = hSpar->hFbMixer->fb_cfg->remix_order[i]; /* delayed, reorderd and accumulated with (negative) prediction from W */ v_add( wyzx_del_buf[idx], p_pcm_tmp[i], p_pcm_tmp[i], num_del_samples ); @@ -740,29 +837,6 @@ static ivas_error ivas_spar_enc_process( } } -#if 0 /* SBA_TD_RESIDUAL */ - { - static FILE *fid = 0; - static int samplesWritten = 0; - int s; - if (!fid) - { - fid = fopen("enc_pcm.txt", "wt"); - } - if (samplesWritten < 8 * 48000) - { - for (s = 0; s < input_frame; s++) - { - for (i = 0; i < hSpar->hFbMixer->fb_cfg->num_out_chans; i++) - { - fprintf(fid, "%.8f ", p_pcm_tmp[i][s]); - } - fprintf(fid, "\n"); - } - samplesWritten += input_frame; - } - } -#endif /*-----------------------------------------------------------------------------------------* * PCA encoder *-----------------------------------------------------------------------------------------*/ @@ -781,9 +855,9 @@ static ivas_error ivas_spar_enc_process( } #ifdef DEBUG_LBR_SBA - for ( int t = 0; t < 960; t++ ) + for ( int16_t t = 0; t < 960; t++ ) { - for ( int c = 0; c < hSpar->hFbMixer->fb_cfg->num_out_chans; c++ ) + for ( int16_t c = 0; c < hSpar->hFbMixer->fb_cfg->num_out_chans; c++ ) { float val = p_pcm_tmp[c][t]; // / MAX16B_FLT; dbgwrite( &val, sizeof( float ), 1, 1, "int_enc_dmx.raw" ); @@ -794,20 +868,6 @@ static ivas_error ivas_spar_enc_process( ivas_spar_dump_signal_wav( input_frame, p_pcm_tmp, NULL, nchan_transport, spar_foa_enc_wav[0], "ivas_pca_enc()" ); #endif -#ifdef SPAR_HOA_DBG - /*FILE *fp = fopen("int_enc_dmx.raw", "ab"); - for (int16_t t = 0; t < 960; t++) - { - for (int16_t c = 0; c < hSpar->hFbMixer->filterbank_num_out_chans; c++) - { - for ( k = 0; k < 2; k++ ) - { - fb_mixer_in_buf.ppMixer[i][j][k] = hSpar->hMdEnc->mixer_mat[i][j]; - } - } - } - fclose( fp );*/ -#endif /*-----------------------------------------------------------------------------------------* * AGC *-----------------------------------------------------------------------------------------*/ @@ -818,14 +878,6 @@ static ivas_error ivas_spar_enc_process( { ivas_agc_enc_process( hSpar->hAgcEnc, hMetaData, p_pcm_tmp, p_pcm_tmp, hSpar->hFbMixer->fb_cfg->num_out_chans, hEncoderConfig ); } - else - { - /* IVAS_fmToDo: This AGC on/off bit should be removed when the command line option to force enable/disable AGC is - * removed. - * On the decoder side, ivas_agc_enc_get_flag could be used instead to determine if AGC is on or not. The - * ivas_agc_enc_get_flag function should be moved to ivas_agc_com.c and renamed when this occurs. */ - push_next_indice( hMetaData, 0, 1 ); - } } #ifdef DEBUG_SBA_AUDIO_DUMP /* Dump audio signal after ivas_agc_enc_process */ @@ -876,19 +928,23 @@ static ivas_error ivas_spar_enc_process( for ( j = 0; j < nchan_transport; j++ ) { - mvr2r( p_pcm_tmp[j], data_f[order[j]], input_frame ); + if ( st_ivas->nchan_transport < 3 ) + { + mvr2r( p_pcm_tmp[j], data_f[j], input_frame ); + } + else + { + mvr2r( p_pcm_tmp[j], data_f[order[j]], input_frame ); + } } for ( ; j < IVAS_SPAR_MAX_DMX_CHS; j++ ) { set_f( data_f[order[j]], 0.0f, input_frame ); } - pop_wmops(); + hSpar->hMdEnc->spar_md.prior_dyn_active_w_flag = dyn_active_w_flag; - /* ToDo: Commented for now */ - /*total_md_bits = hMetaData->nb_bits_tot - start_nb_bits; - total_sba_bits = ivas_sba_get_max_md_bits( st_ivas ); - assert( total_md_bits <= total_sba_bits );*/ + pop_wmops(); return error; } diff --git a/lib_enc/ivas_spar_md_enc.c b/lib_enc/ivas_spar_md_enc.c index 3a93f3d0a1af139357d6fe7d6152c3f66b662851..3aa05843adaf10b58a0e4c508fab5930004367da 100644 --- a/lib_enc/ivas_spar_md_enc.c +++ b/lib_enc/ivas_spar_md_enc.c @@ -45,7 +45,6 @@ /*------------------------------------------------------------------------------------------* * PreProcessor *------------------------------------------------------------------------------------------*/ -#define IVAS_MAX_MD_BYTES ( 1000 ) static const float pr_boost_range[2] = { 0.1f, 0.4f }; @@ -70,8 +69,9 @@ typedef enum ivas_strats_t static void ivas_band_mixer( float *cov_re[IVAS_SPAR_MAX_CH][IVAS_SPAR_MAX_CH], const int16_t num_ch, int16_t *num_bands, int16_t red_band_fact ); -static int16_t ivas_get_huffman_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR_ENC_HANDLE hMetaData, const int16_t nB, const int16_t qsi, const int16_t planarCP, const int16_t bands_bw ); -static int16_t ivas_get_arith_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR_ENC_HANDLE hMetaData, const int16_t *pDo_diff, const int16_t bands_bw, const int16_t nB, const int16_t qsi, const int16_t planarCP, const int16_t strat, const int32_t ivas_total_brate ); +static int16_t ivas_get_huffman_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR_ENC_HANDLE hMetaData, const int16_t nB, const int16_t qsi, const int16_t bands_bw ); + +static int16_t ivas_get_arith_coded_bs( ivas_spar_md_enc_state_t *hMdEnc, BSTR_ENC_HANDLE hMetaData, const int16_t *pDo_diff, const int16_t bands_bw, const int16_t nB, const int16_t qsi, const int16_t strat, const int32_t ivas_total_brate ); static ivas_error ivas_spar_set_enc_config( ivas_spar_md_enc_state_t *hMdEnc, int16_t *max_freq_per_chan, const int16_t nchan_transport, float *pFC, const int16_t nchan_inp ); @@ -79,7 +79,7 @@ static void ivas_select_next_strat( ivas_strats_t prior_strat, ivas_strats_t cs[ static void ivas_store_prior_coeffs( ivas_spar_md_enc_state_t *hMdEnc, const int16_t num_bands, const int16_t strat, const int16_t dtx_vad, const int16_t qsi ); -static void ivas_write_spar_md_bitstream( ivas_spar_md_enc_state_t *hMdEnc, const int16_t nB, const int16_t bands_bw, BSTR_ENC_HANDLE hMetaData, const int32_t ivas_total_brate, const int16_t strat, const int16_t qsi, const int16_t planarCP ); +static void ivas_write_spar_md_bitstream( ivas_spar_md_enc_state_t *hMdEnc, const int16_t nB, const int16_t bands_bw, BSTR_ENC_HANDLE hMetaData, const int32_t ivas_total_brate, const int16_t strat, const int16_t qsi ); static void ivas_spar_quant_pred_coeffs_dtx( ivas_spar_md_t *pSpar_md, const float *pValues, const int16_t ndm, int16_t *pIndex, const int16_t dim1, float *pQuant ); @@ -141,44 +141,6 @@ ivas_error ivas_spar_md_enc_open( } } - if ( ( hMdEnc->cov_real = (float ***) malloc( num_channels * sizeof( float ** ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov real matrix" ); - } - for ( i = 0; i < num_channels; i++ ) - { - if ( ( hMdEnc->cov_real[i] = (float **) malloc( num_channels * sizeof( float * ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov real matrix" ); - } - for ( j = 0; j < num_channels; j++ ) - { - if ( ( hMdEnc->cov_real[i][j] = (float *) malloc( IVAS_MAX_NUM_BANDS * sizeof( float ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov real matrix" ); - } - } - } - - if ( ( hMdEnc->cov_dtx_real = (float ***) malloc( num_channels * sizeof( float ** ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov dtx real matrix" ); - } - for ( i = 0; i < num_channels; i++ ) - { - if ( ( hMdEnc->cov_dtx_real[i] = (float **) malloc( num_channels * sizeof( float * ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov dtx real matrix" ); - } - for ( j = 0; j < num_channels; j++ ) - { - if ( ( hMdEnc->cov_dtx_real[i][j] = (float *) malloc( IVAS_MAX_NUM_BANDS * sizeof( float ) ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR cov dtx real matrix" ); - } - } - } - if ( ( hMdEnc->mixer_mat_local = (float ***) malloc( num_channels * sizeof( float ** ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for SPAR MD matrix" ); @@ -248,32 +210,6 @@ void ivas_spar_md_enc_close( free( hMdEnc->mixer_mat ); } - if ( hMdEnc->cov_real != NULL ) - { - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - free( hMdEnc->cov_real[i][j] ); - } - free( hMdEnc->cov_real[i] ); - } - free( hMdEnc->cov_real ); - } - - if ( hMdEnc->cov_dtx_real != NULL ) - { - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - free( hMdEnc->cov_dtx_real[i][j] ); - } - free( hMdEnc->cov_dtx_real[i] ); - } - free( hMdEnc->cov_dtx_real ); - } - if ( hMdEnc->mixer_mat_local != NULL ) { for ( i = 0; i < num_channels; i++ ) @@ -317,6 +253,8 @@ ivas_error ivas_spar_md_enc_init( ivas_sba_get_spar_hoa_ch_ind( num_channels, hEncoderConfig->ivas_total_brate, hMdEnc->HOA_md_ind ); table_idx = ivas_get_spar_table_idx( hEncoderConfig->ivas_total_brate, sba_order, SPAR_CONFIG_BW, NULL, NULL ); + hMdEnc->spar_md.prior_dyn_active_w_flag = 0; + ivas_spar_set_bitrate_config( &hMdEnc->spar_md_cfg, table_idx, ( hMdEnc->spar_hoa_md_flag ) ? IVAS_MAX_NUM_BANDS : SPAR_DIRAC_SPLIT_START_BAND, hMdEnc->spar_hoa_dirac2spar_md_flag, 1, hEncoderConfig->Opt_PCA_ON, #ifndef DEBUG_AGC_ENCODER_CMD_OPTION @@ -365,19 +303,11 @@ ivas_error ivas_spar_md_enc_init( } } - for ( i = 0; i < num_channels; i++ ) - { - for ( j = 0; j < num_channels; j++ ) - { - for ( k = 0; k < IVAS_MAX_NUM_BANDS; k++ ) - { - hMdEnc->cov_real[i][j][k] = 0; - hMdEnc->cov_dtx_real[i][j][k] = 0; - } - } - } - +#ifdef CR_FIX_698_SBA_MSAN + ivas_clear_band_coeffs( hMdEnc->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS, 1 ); +#else ivas_clear_band_coeffs( hMdEnc->spar_md.band_coeffs, IVAS_MAX_NUM_BANDS ); +#endif ivas_clear_band_coeff_idx( hMdEnc->spar_md.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdEnc->spar_md_prior.band_coeffs_idx, IVAS_MAX_NUM_BANDS ); ivas_clear_band_coeff_idx( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, IVAS_MAX_NUM_BANDS ); @@ -549,14 +479,15 @@ ivas_error ivas_spar_md_enc_process( BSTR_ENC_HANDLE hMetaData, /* i/o: MetaData handle */ const int16_t dtx_vad, const int16_t nchan_inp, - const int16_t sba_order, /* i : Ambisonic (SBA) order */ - float *prior_mixer[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH] /* i : prior mixer_matrix */ + const int16_t sba_order, /* i : Ambisonic (SBA) order */ + float *prior_mixer[IVAS_MAX_FB_MIXER_OUT_CH][IVAS_MAX_SPAR_FB_MIXER_IN_CH], /* i : prior mixer_matrix */ + const int16_t dyn_active_w_flag, /* i : flag to indicate dynamic active W */ + const int16_t dirac_mono_flag /* i : flag to indicate mono only mode in SBA */ ) { 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]; int16_t i, j, b, qsi, ndm, ndec, num_ch, num_quant_strats; - int16_t planarCP; float pred_coeffs_re_local[IVAS_SPAR_MAX_CH - 1][IVAS_MAX_NUM_BANDS]; int16_t k, bwidth, num_bands, num_bands_full, num_bands_bw; int16_t active_w, nchan_transport, dmx_switch, strat; @@ -579,7 +510,7 @@ ivas_error ivas_spar_md_enc_process( num_quant_strats = hMdEnc->spar_md_cfg.num_quant_strats; num_ch = ivas_sba_get_nchan_metadata( sba_order, hEncoderConfig->ivas_total_brate ); - active_w = hMdEnc->spar_md_cfg.active_w; + active_w = ( hMdEnc->spar_md_cfg.active_w == 1 ) || ( dyn_active_w_flag == 1 ); nchan_transport = hMdEnc->spar_md_cfg.nchan_transport; bwidth = ivas_get_bw_idx_from_sample_rate( hEncoderConfig->input_Fs ); @@ -627,6 +558,7 @@ ivas_error ivas_spar_md_enc_process( max_num_indices_tmp = MAX_BITS_METADATA; hMetaData_tmp.ivas_max_num_indices = &max_num_indices_tmp; hMetaData_tmp.ivas_ind_list_zero = (Indice **) ( &hMetaData_tmp.ind_list ); + hMetaData_tmp.st_ivas = NULL; /* Save state of metadata bitstream buffer */ bit_pos_start = hMetaData->nb_bits_tot; @@ -664,10 +596,39 @@ ivas_error ivas_spar_md_enc_process( } } - ivas_compute_spar_params( cov_real, dm_fv_re, 0, hMdEnc->mixer_mat, 0, nB, dtx_vad, num_ch, - bands_bw, active_w, - active_w_vlbr, - &hMdEnc->spar_md_cfg, &hMdEnc->spar_md, Wscale, 0 ); + ivas_compute_spar_params( cov_real, dm_fv_re, 0, hMdEnc->mixer_mat, 0, nB, dtx_vad, num_ch, bands_bw, active_w, active_w_vlbr, &hMdEnc->spar_md_cfg, &hMdEnc->spar_md, Wscale, 0, dyn_active_w_flag ); + + if ( dirac_mono_flag ) + { + int16_t i_ts; + int16_t num_md_sub_frames = 1; + + ndec = hMdEnc->spar_md_cfg.num_decorr_per_band[0]; + ndm = hMdEnc->spar_md_cfg.num_dmx_chans_per_band[0]; + + for ( i_ts = 0; i_ts < num_md_sub_frames; i_ts++ ) + { + for ( b = 0; b < IVAS_MAX_NUM_BANDS; b++ ) + { + for ( j = 0; j < ndm + ndec - 1; j++ ) + { + hMdEnc->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].pred_re[j] = 0.0f; + } + for ( j = 0; j < ndec; j++ ) + { + for ( k = 0; k < ndm - 1; k++ ) + { + hMdEnc->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].C_re[j][k] = 0.0f; + } + } + + for ( j = 0; j < ndec; j++ ) + { + hMdEnc->spar_md.band_coeffs[b + i_ts * IVAS_MAX_NUM_BANDS].P_re[j] = 0.0f; + } + } + } + } for ( i = 0; i < num_ch; i++ ) { @@ -682,7 +643,6 @@ ivas_error ivas_spar_md_enc_process( #ifdef DEBUG_LBR_SBA float dirac_md_kbps = (float) ( hMetaData->nb_bits_tot ) * 50 / 1000; #endif - planarCP = 0; code_strat = 0; #ifdef DEBUG_SBA_MD_DUMP ndec = -1; @@ -696,30 +656,6 @@ ivas_error ivas_spar_md_enc_process( #ifdef SPAR_HOA_DBG fprintf( stdout, "qsi = %d\n", qsi ); #endif - if ( qsi == 2 && ivas_spar_br_table_consts[hMdEnc->table_idx].usePlanarCoeff ) - { - planarCP = 1; -#ifdef SPAR_HOA_DBG - fprintf( stdout, "planarCP = 1\n" ); -#endif - } - else - { - planarCP = 0; - } - - if ( planarCP ) - { - for ( b = 0; b < num_bands; b++ ) - { - ndm = hMdEnc->spar_md_cfg.num_dmx_chans_per_band[b * bands_bw]; - - if ( ndm != num_ch ) - { - ivas_calc_c_p_coeffs( &hMdEnc->spar_md, cov_real, 0, hMdEnc->mixer_mat_local, num_ch, ndm, b, dtx_vad, 1, planarCP ); - } - } - } for ( b = 0; b < num_bands; b++ ) { ndm = hMdEnc->spar_md_cfg.num_dmx_chans_per_band[b * bands_bw]; @@ -729,43 +665,6 @@ ivas_error ivas_spar_md_enc_process( { if ( ndm != num_ch ) { -#ifdef SPAR_HOA_DBG - /* fprintf(stderr, "\n\n P coefficients: band %d\n", b); - - for (i = 0; i < ndec; i++) - { - for (j = 0; j < ndec; j++) - { - fprintf(stderr, "%f, ", hMdEnc->spar_md.band_coeffs[b].P_re[i][j]);//, hMdEnc->spar_md.band_coeffs[b].P_im[i][j]); - } - fprintf(stderr, "\n"); - } - fprintf(stderr, "\n\n"); */ -#endif - - - if ( planarCP ) - { - for ( i = 0; i < ndec; i++ ) - { - if ( !keep_planar[i] ) - { - hMdEnc->spar_md.band_coeffs[b].P_re[i] = 0.0f; - } - } -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n Planar P coefficients: band %d\n", b); - for (i = 0; i < ndec; i++) - { - for (j = 0; j < ndec; j++) - { - fprintf(stderr, "%f, ", hMdEnc->spar_md.band_coeffs[b].P_re[i][j]); //, hMdEnc->spar_md.band_coeffs[b].C_im[i][j]); - } - fprintf(stderr, "\n"); - } - fprintf(stderr, "\n\n"); */ -#endif - } ivas_quant_p_per_band( &hMdEnc->spar_md.band_coeffs[b], &hMdEnc->spar_md.band_coeffs_idx[b], &hMdEnc->spar_md_cfg.quant_strat[qsi], num_ch ); } ivas_quant_pred_coeffs_per_band( &hMdEnc->spar_md.band_coeffs[b], &hMdEnc->spar_md.band_coeffs_idx[b], &hMdEnc->spar_md_cfg.quant_strat[qsi], num_ch ); @@ -858,7 +757,20 @@ ivas_error ivas_spar_md_enc_process( if ( ( ndm != num_ch ) && ( ndm != 1 ) ) { - ivas_calc_c_p_coeffs( &hMdEnc->spar_md, cov_real, 0, hMdEnc->mixer_mat, num_ch, ndm, b, dtx_vad, 0, planarCP ); + ivas_calc_c_p_coeffs( &hMdEnc->spar_md, cov_real, 0, hMdEnc->mixer_mat, num_ch, ndm, b, dtx_vad, 0, dyn_active_w_flag ); + + if ( dirac_mono_flag ) + { + ndec = hMdEnc->spar_md_cfg.num_decorr_per_band[0]; + ndm = hMdEnc->spar_md_cfg.num_dmx_chans_per_band[0]; + for ( j = 0; j < ndec; j++ ) + { + for ( k = 0; k < ndm - 1; k++ ) + { + hMdEnc->spar_md.band_coeffs[b].C_re[j][k] = 0.0f; + } + } + } #ifdef SPAR_HOA_DBG /*fprintf(stderr, "\n\n C coefficients: band %d\n", b); @@ -872,44 +784,9 @@ ivas_error ivas_spar_md_enc_process( } fprintf(stderr, "\n\n"); */ #endif - if ( planarCP ) - { - for ( i = 0; i < num_ch - ndm; i++ ) - { - if ( !keep_planar[i] ) - { - for ( j = 0; j < ndm - 1; j++ ) - { - hMdEnc->spar_md.band_coeffs[b].C_re[i][j] = 0.0f; - } - } - } -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n Planar C coefficients: band %d\n", b); - - for (i = 0; i < num_ch - ndm; i++) - { - for (j = 0; j < ndm - 1; j++) - { - fprintf(stderr, "%f, ", hMdEnc->spar_md.band_coeffs[b].C_re[i][j]); // , hMdEnc->spar_md.band_coeffs[band_idx].C_im[i][j]); - } - fprintf(stderr, "\n"); - } - fprintf(stderr, "\n\n"); */ -#endif - } ivas_quant_c_per_band( &hMdEnc->spar_md.band_coeffs[b], &hMdEnc->spar_md.band_coeffs_idx[b], &hMdEnc->spar_md_cfg.quant_strat[qsi], ndec, ndm ); -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n quantised C indexes: band %d\n", b); - - for (i = 0; i < ndec * (ndm-1); i++) - { - fprintf(stderr, "%d, ", hMdEnc->spar_md.band_coeffs_idx[b].drct_index_re[i]); - } - fprintf(stderr, "\n\n");*/ -#endif } } @@ -937,7 +814,7 @@ ivas_error ivas_spar_md_enc_process( { reset_indices_enc( &hMetaData_tmp, md_indices_allocated ); - ivas_write_spar_md_bitstream( hMdEnc, num_bands, bands_bw, &hMetaData_tmp, hEncoderConfig->ivas_total_brate, strat, qsi, planarCP ); + ivas_write_spar_md_bitstream( hMdEnc, num_bands, bands_bw, &hMetaData_tmp, hEncoderConfig->ivas_total_brate, strat, qsi ); /*write to main buffer if its a valid bitstream*/ if ( hMetaData_tmp.nb_bits_tot > 0 ) @@ -1288,8 +1165,7 @@ static void ivas_write_spar_md_bitstream( BSTR_ENC_HANDLE hMetaData, const int32_t ivas_total_brate, const int16_t strat, - const int16_t qsi, - const int16_t planarCP ) + const int16_t qsi ) { int16_t no_ec, i; int16_t do_diff[IVAS_MAX_NUM_BANDS]; @@ -1399,12 +1275,14 @@ static void ivas_write_spar_md_bitstream( if ( no_ec == 1 ) { entropy_coding_result = - ivas_get_huffman_coded_bs( hMdEnc, hMetaData, nB, qsi, planarCP, bands_bw ); + ivas_get_huffman_coded_bs( hMdEnc, hMetaData, nB, qsi, + bands_bw ); } else { entropy_coding_result = - ivas_get_arith_coded_bs( hMdEnc, hMetaData, do_diff, bands_bw, nB, qsi, planarCP, strat, ivas_total_brate ); + ivas_get_arith_coded_bs( hMdEnc, hMetaData, do_diff, bands_bw, nB, qsi, + strat, ivas_total_brate ); } if ( entropy_coding_result < 0 ) @@ -1426,7 +1304,6 @@ static int16_t ivas_get_huffman_coded_bs( BSTR_ENC_HANDLE hMetaData, const int16_t nB, const int16_t qsi, - const int16_t planarCP, const int16_t bands_bw ) { int16_t i, j; @@ -1449,75 +1326,34 @@ static int16_t ivas_get_huffman_coded_bs( } } - if ( planarCP ) + for ( j = pred_offset; j < pred_coeff_dim; j++ ) { - for ( j = pred_offset; j < pred_coeff_dim; j++ ) - { - ivas_huffman_encode( &hMdEnc->huff_coeffs.pred_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].pred_index_re[j], &code, &len ); - if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) - { - return -1; - } - push_next_indice( hMetaData, code, len ); - } - - for ( j = 0; j < ndec * ( ndm - 1 ); j++ ) + ivas_huffman_encode( &hMdEnc->huff_coeffs.pred_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].pred_index_re[j], &code, &len ); + if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) { - if ( keep_planar[(int16_t) floor( j / ( ndm - 1 ) )] ) - { - ivas_huffman_encode( &hMdEnc->huff_coeffs.drct_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].drct_index_re[j], &code, &len ); - if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) - { - return -1; - } - push_next_indice( hMetaData, code, len ); - } - } - - for ( j = 0; j < ndec; j++ ) - { - if ( keep_planar[j] ) - { - ivas_huffman_encode( &hMdEnc->huff_coeffs.decd_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].decd_index_re[j], &code, &len ); - if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) - { - return -1; - } - push_next_indice( hMetaData, code, len ); - } + return -1; } + push_next_indice( hMetaData, code, len ); } - else + + for ( j = 0; j < ndec * ( ndm - 1 ); j++ ) { - for ( j = pred_offset; j < pred_coeff_dim; j++ ) + ivas_huffman_encode( &hMdEnc->huff_coeffs.drct_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].drct_index_re[j], &code, &len ); + if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) { - ivas_huffman_encode( &hMdEnc->huff_coeffs.pred_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].pred_index_re[j], &code, &len ); - if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) - { - return -1; - } - push_next_indice( hMetaData, code, len ); - } - - for ( j = 0; j < ndec * ( ndm - 1 ); j++ ) - { - ivas_huffman_encode( &hMdEnc->huff_coeffs.drct_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].drct_index_re[j], &code, &len ); - if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) - { - return -1; - } - push_next_indice( hMetaData, code, len ); + return -1; } + push_next_indice( hMetaData, code, len ); + } - for ( j = 0; j < ndec; j++ ) + for ( j = 0; j < ndec; j++ ) + { + ivas_huffman_encode( &hMdEnc->huff_coeffs.decd_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].decd_index_re[j], &code, &len ); + if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) { - ivas_huffman_encode( &hMdEnc->huff_coeffs.decd_huff_re[qsi], hMdEnc->spar_md.band_coeffs_idx[i].decd_index_re[j], &code, &len ); - if ( ( hMetaData->nb_bits_tot + len ) > hMdEnc->spar_md_cfg.max_bits_per_blk ) - { - return -1; - } - push_next_indice( hMetaData, code, len ); + return -1; } + push_next_indice( hMetaData, code, len ); } } @@ -1537,7 +1373,6 @@ static int16_t ivas_get_arith_coded_bs( const int16_t bands_bw, const int16_t nB, const int16_t qsi, - const int16_t planarCP, const int16_t strat, const int32_t ivas_total_brate ) { @@ -1617,11 +1452,11 @@ static int16_t ivas_get_arith_coded_bs( } } } - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, pred_cell_dims, PRED_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, pred_cell_dims, PRED_COEFF ); if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, pred_cell_dims, PRED_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, pred_cell_dims, PRED_COEFF ); } arith_result = ivas_arith_encode_cmplx_cell_array( &hMdEnc->arith_coeffs.pred_arith_re[qsi], &hMdEnc->arith_coeffs.pred_arith_re_diff[qsi], pDo_diff, nB, @@ -1650,26 +1485,13 @@ static int16_t ivas_get_arith_coded_bs( } } -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n band_indexes:\n"); - for (int16_t j = 1; j < drct_cell_dims[0].dim1 * drct_cell_dims[0].dim2; j++) - fprintf(stderr, "%d, ", hMdEnc->spar_md.band_coeffs_idx[0].drct_index_re[j]); - fprintf(stderr, "\n\n"); */ -#endif - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, drct_cell_dims, DRCT_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, drct_cell_dims, DRCT_COEFF ); if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, drct_cell_dims, DRCT_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, drct_cell_dims, DRCT_COEFF ); } - if ( planarCP ) - { - for ( i = 0; i < nB; i++ ) - { - drct_cell_dims[i].dim1 = drct_cell_dims[i].dim1 - IVAS_SPAR_HOA3_NP_CHS; - } - } arith_result = ivas_arith_encode_cmplx_cell_array( &hMdEnc->arith_coeffs.drct_arith_re[qsi], &hMdEnc->arith_coeffs.drct_arith_re_diff[qsi], pDo_diff, nB, symbol_arr_re, symbol_arr_old_re, drct_cell_dims, hMetaData, any_diff, hMdEnc->spar_md_cfg.max_bits_per_blk ); @@ -1678,20 +1500,13 @@ static int16_t ivas_get_arith_coded_bs( return -1; } - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, decd_cell_dims, DECD_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, decd_cell_dims, DECD_COEFF ); if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decd_cell_dims, DECD_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decd_cell_dims, DECD_COEFF ); } - if ( planarCP ) - { - for ( i = 0; i < nB; i++ ) - { - decd_cell_dims[i].dim1 = decd_cell_dims[i].dim1 - IVAS_SPAR_HOA3_NP_CHS; - } - } arith_result = ivas_arith_encode_cmplx_cell_array( &hMdEnc->arith_coeffs.decd_arith_re[qsi], &hMdEnc->arith_coeffs.decd_arith_re_diff[qsi], pDo_diff, nB, symbol_arr_re, symbol_arr_old_re, decd_cell_dims, hMetaData, any_diff, hMdEnc->spar_md_cfg.max_bits_per_blk ); if ( arith_result < 0 ) @@ -1699,11 +1514,11 @@ static int16_t ivas_get_arith_coded_bs( return -1; } - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, decx_cell_dims, DECX_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md.band_coeffs_idx, nB, symbol_arr_re, decx_cell_dims, DECX_COEFF ); if ( any_diff == 1 ) { - ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decx_cell_dims, DECX_COEFF, planarCP ); + ivas_copy_band_coeffs_idx_to_arr( hMdEnc->spar_md_prior.band_coeffs_idx_mapped, nB, symbol_arr_old_re, decx_cell_dims, DECX_COEFF ); } return 0; @@ -1981,6 +1796,11 @@ static void ivas_write_parameter_bitstream_dtx( sid_bits_len = hMetaData->nb_bits_tot - sid_bits_len; zero_pad_bits = ( SPAR_DTX_BANDS * SPAR_SID_BITS_TAR_PER_BAND ) - sid_bits_len; assert( zero_pad_bits >= 0 ); + if ( num_dmx[0] == 2 ) + { + zero_pad_bits -= 1; + } + while ( zero_pad_bits > 0 ) { j = min( zero_pad_bits, 16 ); @@ -2035,15 +1855,6 @@ static void ivas_quant_c_per_band( k++; } } -#ifdef SPAR_HOA_DBG - /*for (i = 0; i < ndec; i++) - { - for (j = 0; j < ndm - 1; j++) - { - ppIdx_re[i][j] = 100; - } - }*/ -#endif ivas_quantise_real_values( C_re, pQs->C.q_levels[0], pQs->C.min, pQs->C.max, pBand_coeffs_idx->drct_index_re, C_re, ndec * ( ndm - 1 ) ); k = 0; for ( i = 0; i < ndec; i++ ) @@ -2054,18 +1865,6 @@ static void ivas_quant_c_per_band( k++; } } -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n Quantising the C coeffs: \n"); - k = 0; - for (i = 0; i < ndec; i++) - { - for (j = 0; j < ndm - 1; j++) - { - fprintf(stderr, "%d,%d: %f, %f, %d\n", i, j, pband_coeffs->C_re[i][j], pband_coeffs->C_quant_re[i][j], pBand_coeffs_idx->drct_index_re[k]); - k++; - } - }*/ -#endif return; } @@ -2083,14 +1882,6 @@ static void ivas_quant_p_per_band( ivas_quant_strat_t *pQs, const int16_t num_ch ) { -#ifdef SPAR_HOA_DBG - /*fprintf(stderr, "\n\n P_d:\n"); - for (i = 0; i < dim; i++) - { - fprintf(stderr, "%f, ", P_re_diag[i]); - } - fprintf(stderr, "\n\n");*/ -#endif ivas_quantise_real_values( pband_coeffs->P_re, pQs->P_r.q_levels[0], pQs->P_r.min, pQs->P_r.max, pBand_coeffs_idx->decd_index_re, pband_coeffs->P_quant_re, num_ch - 1 ); return; diff --git a/lib_enc/ivas_stat_enc.h b/lib_enc/ivas_stat_enc.h index 6a5964e86c0885892b62bfac3d21b724e4549b77..05bf62a92a6e15889363b711912ddc11701667a5 100644 --- a/lib_enc/ivas_stat_enc.h +++ b/lib_enc/ivas_stat_enc.h @@ -612,6 +612,8 @@ typedef struct ivas_dirac_enc_data_structure float **buffer_intensity_real[DIRAC_NUM_DIMS]; float *buffer_energy; + /* Frame count for detecting mono */ + int16_t mono_frame_count; } DIRAC_ENC_DATA, *DIRAC_ENC_HANDLE; @@ -649,6 +651,8 @@ typedef struct ivas_enc_cov_handler_state_t ivas_cov_smooth_state_t *pCov_dtx_state; int16_t num_bins; int16_t prior_dtx_present; + float bb_var_lt[FOA_CHANNELS]; + int16_t prior_var_flag; } ivas_enc_cov_handler_state_t; @@ -662,8 +666,6 @@ typedef struct ivas_spar_md_enc_state_t int16_t num_decorr; float ***mixer_mat; - float ***cov_real; - float ***cov_dtx_real; float ***mixer_mat_local; ivas_spar_md_com_cfg spar_md_cfg; ivas_arith_coeffs_t arith_coeffs; @@ -708,6 +710,8 @@ typedef struct ivas_spar_enc_lib_t int16_t front_vad_dtx_flag; int16_t force_front_vad; + float *input_data_mem[MAX_NUM_OBJECTS]; + } SPAR_ENC_DATA, *SPAR_ENC_HANDLE; @@ -727,9 +731,7 @@ typedef struct ivas_param_mc_enc_data_structure int16_t lfe_index; int16_t icc_map_index[PARAM_MC_PARAMETER_FRAMES][PARAM_MC_SZ_ICC_MAP]; int16_t max_param_band_abs_cov; -#ifdef FIX_580_PARAMMC_ENER_BURSTS float prev_ilds[PARAM_MC_MAX_PARAMETER_BANDS][PARAM_MC_SZ_ILD_MAP]; -#endif float ener_fac[PARAM_MC_MAX_PARAMETER_BANDS]; @@ -753,6 +755,58 @@ typedef struct ivas_mc_paramupmix_enc_data_structure } MC_PARAMUPMIX_ENC_DATA, *MC_PARAMUPMIX_ENC_HANDLE; + +/*----------------------------------------------------------------------------------* + * Object MASA (OMASA) encoder structure + *----------------------------------------------------------------------------------*/ + +typedef struct ivas_omasa_enc_state_structure +{ + uint8_t nbands; + uint8_t nCodingBands; + uint8_t nSubframes; + + /* CLDFB analysis */ + int16_t num_Cldfb_instances; + HANDLE_CLDFB_FILTER_BANK cldfbAnaEnc[MAX_NUM_OBJECTS]; + + /* DirAC parameter estimation */ + float **direction_vector_m[DIRAC_NUM_DIMS]; /* Average direction vector */ + int16_t band_grouping[MASA_FREQUENCY_BANDS + 1]; + int16_t block_grouping[5]; + + /* diffuseness */ + int16_t index_buffer_intensity; + float *buffer_intensity_real[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF]; + float buffer_energy[DIRAC_NO_COL_AVG_DIFF * MASA_FREQUENCY_BANDS]; + + float chnlToFoaMtx[DIRAC_MAX_ANA_CHANS][MCMASA_MAX_ANA_CHANS]; + + float interpolator[L_FRAME48k]; + + float prev_object_dm_gains[MAX_NUM_OBJECTS][MASA_MAX_TRANSPORT_CHANNELS]; + float broadband_energy_sm[MAX_NUM_OBJECTS + MASA_MAX_TRANSPORT_CHANNELS]; + float broadband_energy_prev[MAX_NUM_OBJECTS + MASA_MAX_TRANSPORT_CHANNELS]; + int16_t prev_selected_object; + uint8_t changing_object; + float fade_out_gain[L_FRAME48k]; + float fade_in_gain[L_FRAME48k]; + +} OMASA_ENC_STATE, *OMASA_ENC_HANDLE; + + +typedef struct ivas_omasa_encoder_one_data_struct +{ + float energy_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; + float energy_ratio_ism[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS][MAX_NUM_OBJECTS]; + 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]; + float lp_noise_CPE; /* LP filtered total noise estimation */ + int16_t omasa_stereo_sw_cnt; + +} OMASA_ENCODER_DATA_STATE, *OMASA_ENCODER_DATA_HANDLE; + + /*----------------------------------------------------------------------------------* * MASA encoder structures *----------------------------------------------------------------------------------*/ @@ -780,6 +834,7 @@ typedef struct ivas_masa_sync_struct typedef struct ivas_masa_encoder_data_struct { float energy[MAX_PARAM_SPATIAL_SUBFRAMES][MASA_FREQUENCY_BANDS]; + int16_t num_Cldfb_instances; HANDLE_CLDFB_FILTER_BANK cldfbAnaEnc[MAX_NUM_ENC_CLDFB_INSTANCES]; int16_t band_mapping[MASA_FREQUENCY_BANDS + 1]; @@ -797,6 +852,8 @@ typedef struct ivas_masa_encoder_data_struct MASA_DIR_ALIGN_STATE dir_align_state; + OMASA_ENCODER_DATA_HANDLE hOmasaData; + } MASA_ENCODER_DATA; typedef struct ivas_masa_encoder_struct @@ -866,6 +923,20 @@ typedef struct ivas_mcmasa_enc_data_structure } MCMASA_ENC_DATA, *MCMASA_ENC_HANDLE; +/*----------------------------------------------------------------------------------* + * Object SBA (OSBA) encoder structure + *----------------------------------------------------------------------------------*/ + +typedef struct ivas_osba_enc_data_structure +{ + + float interpolator[L_FRAME48k]; + float prev_object_dm_gains[MAX_NUM_OBJECTS][MAX_INPUT_CHANNELS]; + + int16_t nchan_ism; + float *input_data_mem[MAX_NUM_OBJECTS]; + +} OSBA_ENC_DATA, *OSBA_ENC_HANDLE; /*----------------------------------------------------------------------------------* * Stereo CNG handle @@ -934,6 +1005,7 @@ typedef struct cpe_enc_data_structure float *input_mem[CPE_CHANNELS]; /* input channels buffers memory; needed to be up-to-date for TD->DFT stereo switching */ + int32_t brate_surplus; /* bitrate surplus for bitrate adaptation in combined format coding */ #ifdef DEBUGGING int16_t stereo_mode_cmdl; /* stereo mode forced from the commaand-line */ #endif @@ -1059,9 +1131,6 @@ typedef struct stereo_dmx_evs_enc_data_structure typedef struct ivas_lfe_enc_data_structure { -#ifndef FIX_572_LFE_LPF_ENC - ivas_filters_process_state_t filter_state; -#endif LFE_WINDOW_HANDLE pWindow_state; BSTR_ENC_HANDLE hBstr; /* pointer to encoder bitstream handle */ const uint16_t *cum_freq_models[IVAS_MAX_NUM_QUANT_STRATS][IVAS_MAX_NUM_DCT_COEF_GROUPS]; @@ -1134,6 +1203,8 @@ typedef struct { ENCODER_CONFIG_HANDLE hEncoderConfig; /* Encoder configuration structure */ + float *p_data_f[MAX_INPUT_CHANNELS+MAX_NUM_OBJECTS]; /* floating-point input audio buffers */ + Indice *ind_list; /* List of indices */ int16_t ivas_max_num_indices; /* Maximum allowed number of indices in the list */ Indice *ind_list_metadata; /* List of indices for metadata */ @@ -1163,10 +1234,10 @@ typedef struct PARAM_MC_ENC_HANDLE hParamMC; /* Parametric MC handle */ MC_PARAMUPMIX_ENC_HANDLE hMCParamUpmix; /* MC Param-Upmix handle */ MCMASA_ENC_HANDLE hMcMasa; /* Multi-channel MASA data handle */ + OSBA_ENC_HANDLE hOSba; /* Object-SBA data handle */ + OMASA_ENC_HANDLE hOMasa; /* Object-MASA data handle */ LFE_ENC_HANDLE hLFE; /* LFE data handle */ -#ifdef FIX_572_LFE_LPF_ENC ivas_filters_process_state_t *hLfeLpf; /* low pass filter state for LFE */ -#endif ISM_MODE ism_mode; /* ISM format mode */ MC_MODE mc_mode; /* MC format mode */ diff --git a/lib_enc/ivas_stereo_classifier.c b/lib_enc/ivas_stereo_classifier.c index eb0c054cd3500111c097736dd65a0f2664a2338c..8e979fcf1f7302b927102090784a6e7bce17afb5 100644 --- a/lib_enc/ivas_stereo_classifier.c +++ b/lib_enc/ivas_stereo_classifier.c @@ -107,10 +107,7 @@ int16_t select_stereo_mode( /* set binary flag indicating LRTD mode based on unclr/xtalk classifiers' decisions */ hStereoClassif->prev_lrtd_mode = hStereoClassif->lrtd_mode; -#ifdef FIX_UNCLR_ISSUE - hStereoClassif->unclr_decision = ( hStereoClassif->unclr_decision && hCPE->hCoreCoder[0]->flag_noisy_speech_snr == 0 && - hCPE->element_brate > IVAS_16k4 ); -#endif + hStereoClassif->unclr_decision = ( hStereoClassif->unclr_decision && hCPE->hCoreCoder[0]->flag_noisy_speech_snr == 0 && hCPE->element_brate > IVAS_16k4 ); hStereoClassif->lrtd_mode = ( ( hStereoClassif->unclr_decision | hStereoClassif->xtalk_decision ) && is_speech ); stereo_switching_flag = 1; @@ -123,7 +120,7 @@ int16_t select_stereo_mode( stereo_switching_flag = 0; } - if ( hCPE->element_brate >= MIN_BRATE_MDCT_STEREO ) + if ( hCPE->element_brate >= MIN_BRATE_MDCT_STEREO && !( hCPE->element_brate == IVAS_48k && ivas_total_brate == IVAS_32k ) ) /* the second condition for PARAM mode OMASA */ { hStereoClassif->prev_lrtd_mode = 0; hStereoClassif->lrtd_mode = 0; @@ -210,8 +207,6 @@ int16_t select_stereo_mode( set_f( hStereoClassif->xtalk_fv, -1.0f, SSC_MAX_NFEA ); } } - - #ifdef DEBUG_MODE_TD dbgwrite( &hStereoClassif->unclr_decision, sizeof( int16_t ), 1, L_FRAME16k, "res/unclr_decision.enc" ); dbgwrite( &hStereoClassif->xtalk_decision, sizeof( int16_t ), 1, L_FRAME16k, "res/xtalk_decision.enc" ); diff --git a/lib_enc/ivas_stereo_dft_enc_itd.c b/lib_enc/ivas_stereo_dft_enc_itd.c index f8155600e4096dbf5d6ae799dfece244cd41daa0..984c128e857283c71ed823471d0711bf79c791ce 100644 --- a/lib_enc/ivas_stereo_dft_enc_itd.c +++ b/lib_enc/ivas_stereo_dft_enc_itd.c @@ -1063,11 +1063,11 @@ void stereo_dft_enc_compute_itd( hStereoClassif->unclr_fv[E_sum_xcorr] = sum_xcorr; hStereoClassif->xtalk_fv[E_sum_xcorr] = sum_xcorr; -#ifdef DEBUG_STEREO_CLF - dbgwrite( &hStereoClassif->unclr_fv[E_cohSNR], sizeof( float ), 1, 1, "res/cohSNR.x" ); - dbgwrite( &hStereoClassif->unclr_fv[E_es_em], sizeof( float ), 1, 1, "res/es_em.x" ); - dbgwrite( &hStereoClassif->unclr_fv[E_d_prodL_prodR], sizeof( float ), 1, 1, "res/d_prodL_prodR.x" ); - dbgwrite( &hStereoClassif->unclr_fv[E_sum_xcorr], sizeof( float ), 1, 1, "res/sum_xcorr.x" ); +#if defined( DEBUG_MODE_DFT ) || defined( DEBUG_MODE_TD ) + dbgwrite( &hStereoClassif->unclr_fv[E_cohSNR], sizeof( float ), 1, 1, "res/stereo_clf_cohSNR.x" ); + dbgwrite( &hStereoClassif->unclr_fv[E_es_em], sizeof( float ), 1, 1, "res/stereo_clf_es_em.x" ); + dbgwrite( &hStereoClassif->unclr_fv[E_d_prodL_prodR], sizeof( float ), 1, 1, "res/stereo_clf_d_prodL_prodR.x" ); + dbgwrite( &hStereoClassif->unclr_fv[E_sum_xcorr], sizeof( float ), 1, 1, "res/stereo_clf_sum_xcorr.x" ); #endif } @@ -1117,12 +1117,12 @@ void stereo_dft_enc_compute_itd( hStereoClassif->unclr_fv[E_xcorr_itd_value] = total_max; hStereoClassif->xtalk_fv[E_xcorr_itd_value] = total_max; -#ifdef DEBUG_STEREO_CLF +#if defined( DEBUG_MODE_DFT ) || defined( DEBUG_MODE_TD ) { int16_t stmp = index - STEREO_DFT_ITD_MAX_ANA; dbgwrite( &stmp, sizeof( int16_t ), 1, 1, "res/raw_itd.x" ); } - dbgwrite( &hStereoClassif->unclr_fv[E_xcorr_itd_value], sizeof( float ), 1, 1, "res/xcorr_itd_value.x" ); + dbgwrite( &hStereoClassif->unclr_fv[E_xcorr_itd_value], sizeof( float ), 1, 1, "res/stereo_clf_raw_itd.x" ); #endif #ifdef DEBUG_MODE_DFT @@ -1347,9 +1347,10 @@ void stereo_dft_enc_compute_itd( /* collect UNCLR classifier parameters */ hStereoClassif->unclr_fv[E_ITD] = hItd->itd[k_offset]; -#ifdef DEBUG_STEREO_CLF - dbgwrite( &hItd->itd[k_offset], sizeof( float ), 1, 1, "res/ITD.x" ); +#if defined( DEBUG_MODE_DFT ) || defined( DEBUG_MODE_TD ) + dbgwrite( &hItd->itd[k_offset], sizeof( float ), 1, 1, "res/stereo_clf_ITD.x" ); #endif + /* limit ITD range for MDCT stereo even more */ if ( hCPE->element_mode == IVAS_CPE_MDCT && fabsf( hItd->itd[k_offset] ) > ITD_MAX_MDCT ) { diff --git a/lib_enc/ivas_stereo_dmx_evs.c b/lib_enc/ivas_stereo_dmx_evs.c index e2b1c09a340aec032cbe232169cd8468228cf18c..2ffc13d75d779e73ccc37561d3a4444c33e39672 100644 --- a/lib_enc/ivas_stereo_dmx_evs.c +++ b/lib_enc/ivas_stereo_dmx_evs.c @@ -175,7 +175,7 @@ void estimate_itd_wnd_fft( static void calc_poc( STEREO_DMX_EVS_POC_HANDLE hPOC, /* i/o: phase only correlation structure */ - STEREO_DMX_EVS_PHA_HANDLE hPHA, /* i/o : correlation filter structure */ + STEREO_DMX_EVS_PHA_HANDLE hPHA, /* i/o: correlation filter structure */ const float wnd[], /* i : window coef */ const float rfft_coef[], /* i : RFFT coef */ const float specLr[], /* i : Lch real-part spectra */ diff --git a/lib_enc/ivas_stereo_eclvq_enc.c b/lib_enc/ivas_stereo_eclvq_enc.c index fc622b53211efc8ee744f8a5ac3dba69815ba764..f71beece823e102c87ec95b1943e70956685e1e7 100644 --- a/lib_enc/ivas_stereo_eclvq_enc.c +++ b/lib_enc/ivas_stereo_eclvq_enc.c @@ -41,7 +41,7 @@ #include "prot.h" #include "wmc_auto.h" /* used only for norm_s in the code_length_from_count function */ -#include "basop32.h" +#include "stl.h" /*--------------------------------------------------------------- diff --git a/lib_enc/ivas_stereo_icbwe_enc.c b/lib_enc/ivas_stereo_icbwe_enc.c index 43ae497df8c602bdc9415f47ddb7cfaca78237ee..84de217618dc49d4ef9bd10b23d143eb9dbcf7eb 100644 --- a/lib_enc/ivas_stereo_icbwe_enc.c +++ b/lib_enc/ivas_stereo_icbwe_enc.c @@ -92,9 +92,6 @@ static int16_t ic_bwe_enc_specMapping( float temp, temp0, temp1, temp2, temp3, alpha; float a, b, c; float u, u1, u2; -#ifdef QC_DBG_ICBWE - float T_achieved; -#endif alpha = 0.5f; /* Calculate rxx(1)/rxx(0) of the non ref target */ @@ -165,23 +162,9 @@ static int16_t ic_bwe_enc_specMapping( /* Quantize spec. mapping **/ idx = (int16_t) usquant( u, specMapping, -0.6f, 0.2f, 1 << STEREO_ICBWE_SPBITS ); -#ifdef QC_DBG_ICBWE - dbgwrite( &specMapping, 4, 1, 1, "spMapping_enc.pcm" ); -#endif - - /* ic bwe spec mapping */ + /* IC-BWE spec mapping */ deemph( shb_synth_nonref, *specMapping, L_FRAME16k, memShbSpecMapping ); -#ifdef QC_DBG_ICBWE - temp1 = dotp( shb_synth_nonref, shb_synth_nonref + 1, L_FRAME16k - 1 ); - temp0 = dotp( shb_synth_nonref, shb_synth_nonref, L_FRAME16k - 1 ); - T_achieved = ( temp0 != 0 ) ? ( temp1 / temp0 ) : ( 0 ); - - dbgwrite( &T_desired, 4, 1, 1, "T_nonref_target.pcm" ); - dbgwrite( &Txx1, 4, 1, 1, "T_nonref_synth.pcm" ); - dbgwrite( &T_achieved, 4, 1, 1, "T_nonref_achieved.pcm" ); -#endif - return idx; } @@ -237,12 +220,6 @@ static int16_t ic_bwe_enc_gsMapping( *gsMapping = powf( 10, *gsMapping ); -#ifdef QC_DBG_ICBWE - dbgwrite( &relG_targ, 4, 1, 1, "relG_targ_enc.pcm" ); - dbgwrite( gsMapping, 4, 1, 1, "gsMapping_enc.pcm" ); - dbgwrite( &frame, sizeof( int32_t ), 1, 1, "frame_gsMapping_bwe.pcm" ); -#endif - return idx; } @@ -287,12 +264,6 @@ static void icbwe_dft_stereo_param( sum_nrg_R = sum_f( hStereoICBWE->mem_nrg_R, 2 ); sum_nrg_DMX = sum_f( hStereoICBWE->mem_nrg_DMX, 2 ); -#ifdef QC_DBG_ICBWE - dbgwrite( &nrg_L, 4, 1, 1, "nrg_L.pcm" ); - dbgwrite( &nrg_R, 4, 1, 1, "nrg_R.pcm" ); - dbgwrite( &nrg_DMX, 4, 1, 1, "nrg_DMX.pcm" ); -#endif - /* refChanIndex_bwe refinement */ if ( ( sum_nrg_R < 0.64f * sum_nrg_L && hStereoICBWE->refChanIndx_bwe == hStereoICBWE->prev_refChanIndx_bwe ) || sum_nrg_R < 0.36f * sum_nrg_L ) { @@ -417,7 +388,6 @@ void stereo_icBWE_enc( /* core switching reset */ if ( st->last_core != ACELP_CORE || st->core != ACELP_CORE || st->bwidth < SWB || st->extl == -1 ) { - /* IVAS-219: QCToDo: ICBWEDFT for WB TBV */ ic_bwe_enc_reset( hStereoICBWE ); if ( st->core != ACELP_CORE || st->bwidth < SWB || st->input_Fs < 32000 || st->extl == -1 ) { @@ -505,7 +475,6 @@ void stereo_icBWE_enc( mvr2r( shb_frame_nonref + L_FRAME16k, hStereoICBWE->mem_shb_speech_nonref, L_LOOK_16k ); /* core switching reset */ - /* IVAS-219: QCToDo: check this "if condition" if IVAS_CPE_TD is needed? */ if ( st->last_core != ACELP_CORE || st->core != ACELP_CORE || st->bwidth < SWB || st->element_mode != IVAS_CPE_TD || st->extl == -1 ) { ic_bwe_enc_reset( hStereoICBWE ); @@ -517,7 +486,7 @@ void stereo_icBWE_enc( } /* resets done here. Need to move them to a separate function */ - if ( ( hStereoICBWE->prev_refChanIndx_bwe != hStereoICBWE->refChanIndx_bwe ) || ( st->last_extl != st->extl ) || st->flag_ACELP16k != 1 ) /* IVAS-219: QCToDo: dont reset for SWB<->FB */ + if ( ( hStereoICBWE->prev_refChanIndx_bwe != hStereoICBWE->refChanIndx_bwe ) || ( st->last_extl != st->extl ) || st->flag_ACELP16k != 1 ) { hStereoICBWE->prevSpecMapping = 0; hStereoICBWE->memShbSpecMapping = 0; @@ -584,9 +553,6 @@ void stereo_icBWE_enc( { spIndx = 3; hStereoICBWE->prevSpecMapping = 0; -#ifdef QC_DBG_ICBWE - dbgwrite( &( hStereoICBWE->prevSpecMapping ), 4, 1, 1, "spMapping_enc.pcm" ); -#endif } push_indice( hBstr, IND_STEREO_ICBWE_REF, hStereoICBWE->refChanIndx_bwe, STEREO_ICBWE_REFBITS ); @@ -606,14 +572,7 @@ void stereo_icBWE_enc( push_indice( hBstr, IND_STEREO_ICBWE_GS, gsIndx, STEREO_ICBWE_GSBITS ); } -#ifdef QC_DBG_ICBWE - dbgwrite( &hStereoICBWE->refChanIndx_bwe, 2, 1, 1, "refChanIndx_bwe_enc.pcm" ); - dbgwrite( &hStereoICBWE->prevSpecMapping, 4, 1, 1, "spMapping_enc.pcm" ); - dbgwrite( &gDes, 4, 1, 1, "relG_targ_enc.pcm" ); - dbgwrite( &hStereoICBWE->prevgsMapping, 4, 1, 1, "gsMapping_enc.pcm" ); -#endif - - /* IC BWE Updates */ + /* IC-BWE updates */ hStereoICBWE->prev_refChanIndx_bwe = hStereoICBWE->refChanIndx_bwe; return; @@ -864,11 +823,5 @@ void stereo_icBWE_preproc( mvr2r( tempSHB, shb_speech_nonref, L_FRAME16k ); -#ifdef QC_DBG_ICBWE - dbgwrite( &refChanIndx_bwe, 2, 1, 1, "refChanIndx_bwe.pcm" ); - dbgwrite( &frame, sizeof( int32_t ), 1, 1, "frame_refChanIndx_bwe.pcm" ); - /*dbgwrite(hStereoICBWE->shb_speech_nonref, sizeof(float), L_FRAME16k, 1, "shb_speech_nonref.pcm");*/ -#endif - return; } diff --git a/lib_enc/ivas_stereo_mdct_core_enc.c b/lib_enc/ivas_stereo_mdct_core_enc.c index 16970d31db8915cdedbca914fab51b691e6ccdfb..c7ce9f4e47cd702cbcad18d73cccdc40de254003 100755 --- a/lib_enc/ivas_stereo_mdct_core_enc.c +++ b/lib_enc/ivas_stereo_mdct_core_enc.c @@ -173,6 +173,15 @@ void stereo_mdct_core_enc( sts[0]->hTcxEnc->tfm_mem = sts[1]->hTcxEnc->tfm_mem = sqrtf( 0.5f * ( sts[0]->hTcxEnc->tfm_mem * sts[0]->hTcxEnc->tfm_mem + sts[1]->hTcxEnc->tfm_mem * sts[1]->hTcxEnc->tfm_mem ) ); /* RMS */ sts[0]->hTcxEnc->tcxltp_norm_corr_past = sts[1]->hTcxEnc->tcxltp_norm_corr_past = 0.5f * ( sts[0]->hTcxEnc->tcxltp_norm_corr_past + sts[1]->hTcxEnc->tcxltp_norm_corr_past ); + +#if 0 + if ( sts[0]->bits_frame_channel + sts[1]->bits_frame_channel - meta_bits < 495 ) + { + sts[0]->hTranDet->transientDetector.bIsAttackPresent = 0; + sts[1]->hTranDet->transientDetector.bIsAttackPresent = 0; + } +#endif + for ( ch = 0; ch < CPE_CHANNELS; ch++ ) { st = sts[ch]; @@ -449,7 +458,7 @@ void stereo_mdct_core_enc( sts[ch]->total_brate = ( sts[ch]->bits_frame_channel + sts[ch]->side_bits_frame_channel ) * FRAMES_PER_SEC; } stereo_bits += SMDCT_NBBITS_SPLIT_RATIO; - assert( ( sts[0]->total_brate + sts[1]->total_brate + ( stereo_bits + signal_bits + meta_bits ) * FRAMES_PER_SEC ) == hCPE->element_brate ); + assert( ( sts[0]->total_brate + sts[1]->total_brate + ( stereo_bits + signal_bits + meta_bits ) * FRAMES_PER_SEC ) == hCPE->element_brate + hCPE->brate_surplus ); assert( hStereoMdct->split_ratio > 0 && hStereoMdct->split_ratio < SMDCT_BITRATE_RATIO_RANGE ); push_next_indice( hBstr, hStereoMdct->split_ratio, SMDCT_NBBITS_SPLIT_RATIO ); diff --git a/lib_enc/ivas_stereo_mdct_stereo_enc.c b/lib_enc/ivas_stereo_mdct_stereo_enc.c index b8ab5398ec4556f2e4177294ea8656d7c1c9ad40..d959cdba2fc5662d6089185b102fbecde893da9b 100755 --- a/lib_enc/ivas_stereo_mdct_stereo_enc.c +++ b/lib_enc/ivas_stereo_mdct_stereo_enc.c @@ -1133,14 +1133,14 @@ void initMdctStereoEncData( set_s( hStereoMdct->mdct_stereo_mode, -1, 2 ); /*Initialize sfb parameteres for TCX20 */ - stereo_mdct_init_bands( tcx_coded_lines, TCX_20_CORE, element_brate, igf, &hIgfGrid[IGF_GRID_LB_NORM], &hStereoMdct->stbParamsTCX20.sfbOffset[0], &hStereoMdct->stbParamsTCX20.sfbCnt ); + stereo_mdct_init_bands( tcx_coded_lines, TCX_20_CORE, element_brate, igf, igf ? &hIgfGrid[IGF_GRID_LB_NORM] : NULL, &hStereoMdct->stbParamsTCX20.sfbOffset[0], &hStereoMdct->stbParamsTCX20.sfbCnt ); /*Initialize sfb parameteres for TCX10 */ - stereo_mdct_init_bands( tcx_coded_lines, TCX_10_CORE, element_brate, igf, &hIgfGrid[IGF_GRID_LB_SHORT], + stereo_mdct_init_bands( tcx_coded_lines, TCX_10_CORE, element_brate, igf, igf ? &hIgfGrid[IGF_GRID_LB_SHORT] : NULL, &hStereoMdct->stbParamsTCX10.sfbOffset[0], &hStereoMdct->stbParamsTCX10.sfbCnt ); /*Initialize sfb parameteres for transitions */ - stereo_mdct_init_bands( tcx_coded_lines, -1, element_brate, igf, &hIgfGrid[IGF_GRID_LB_TRAN], + stereo_mdct_init_bands( tcx_coded_lines, -1, element_brate, igf, igf ? &hIgfGrid[IGF_GRID_LB_TRAN] : NULL, &hStereoMdct->stbParamsTCX20afterACELP.sfbOffset[0], &hStereoMdct->stbParamsTCX20afterACELP.sfbCnt ); set_s( hStereoMdct->IGFStereoMode, -1, 2 ); diff --git a/lib_enc/ivas_stereo_td_analysis.c b/lib_enc/ivas_stereo_td_analysis.c index d2d72c153426b47d40febe4c2079a100de5f2247..fc318ce6b68b3e1c6b925b33d0123c8ea6c7dec5 100644 --- a/lib_enc/ivas_stereo_td_analysis.c +++ b/lib_enc/ivas_stereo_td_analysis.c @@ -82,6 +82,8 @@ #define RMS_THR 100 #define RATIO_PG_LRTD 0.96f +#define IVAS_BRATE_OMASA_STEREO_SW_THR 15000 + /*-------------------------------------------------------------------* * Local function prototypes @@ -111,6 +113,7 @@ static float Comp_diff_lt_corr( CPE_ENC_HANDLE hCPE, const int16_t IsSideMono, c *-------------------------------------------------------------------*/ int16_t stereo_tdm_ener_analysis( + const int16_t ivas_format, /* i : IVAS format */ CPE_ENC_HANDLE hCPE, /* i : CPE structure */ const int16_t input_frame, /* i : Number of samples */ int16_t *tdm_SM_or_LRTD_Pri, /* o : channel combination scheme flag in TD stereo OR LRTD primary channel */ @@ -195,6 +198,15 @@ int16_t stereo_tdm_ener_analysis( * of L and R needed to create new mono/side signals *----------------------------------------------------------------*/ + if ( ivas_format == MASA_ISM_FORMAT ) + { + + if ( ( hCPE->hStereoClassif->lrtd_mode == 1 || hCPE->hStereoTD->prev_fr_LRTD_TD_dec == 1 ) && ( hCPE->element_brate - 50 * FRAMES_PER_SEC + hCPE->brate_surplus + hCPE->brate_surplus < IVAS_BRATE_OMASA_STEREO_SW_THR ) ) + { + hStereoTD->prev_fr_LRTD_TD_dec = 0; + } + } + rms_thd = RMS_MIN; if ( hCPE->hStereoClassif->lrtd_mode == 1 ) { @@ -350,9 +362,6 @@ int16_t stereo_tdm_ener_analysis( ratio_L = 0.6f; } -#ifdef FORCE_RATIO_L_0 - ratio_L = 0; -#endif dist = fabsf( ratio_L - tdm_ratio_tabl[0] ); desired_idx = 0; diff --git a/lib_enc/ivas_stereo_td_enc.c b/lib_enc/ivas_stereo_td_enc.c index 3f8fe558097f065547ef36a7dce5788895dfa12f..596c0dcfb61df22d6e457deb017ca25445078942 100644 --- a/lib_enc/ivas_stereo_td_enc.c +++ b/lib_enc/ivas_stereo_td_enc.c @@ -128,6 +128,7 @@ void stereo_td_init_enc( hStereoTD->tdm_hBstr_tmp.ivas_ind_list_zero = (Indice **) ( &hStereoTD->tdm_hBstr_tmp.ind_list ); hStereoTD->max_ind_tdm_tmp = MAX_IND_TDM_TMP; hStereoTD->tdm_hBstr_tmp.ivas_max_num_indices = &hStereoTD->max_ind_tdm_tmp; + hStereoTD->tdm_hBstr_tmp.st_ivas = NULL; reset_indices_enc( &hStereoTD->tdm_hBstr_tmp, MAX_IND_TDM_TMP ); return; @@ -289,8 +290,8 @@ ivas_error stereo_set_tdm( dbgwrite( &tmp, 2, 1, 320, "res/inst_ratio_L" ); dbgwrite( &ftmp, 4, 1, 320, "res/ratio_L" ); dbgwrite( &tmp, 2, 1, 320, "res/tdm_low_rate_mode" ); - dbgwrite( &tmp, 2, 1, 320, "res/tdm_lp_reuse_flag" ); - dbgwrite( &tmp, 2, 1, 320, "res/mod_ct.enx" ); + // dbgwrite( &tmp, 2, 1, 320, "res/tdm_lp_reuse_flag" ); + // dbgwrite( &tmp, 2, 1, 320, "res/mod_ct.enx" ); } #endif hCPE->hCoreCoder[0]->tdm_LRTD_flag = 0; @@ -308,6 +309,8 @@ ivas_error stereo_set_tdm( *-------------------------------------------------------------------*/ 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 */ @@ -423,6 +426,28 @@ void tdm_configure_enc( sts[1]->coder_type = GENERIC; } + if ( hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC + hCPE->brate_surplus < 12000 ) + { + if ( sts[1]->coder_type == UNVOICED ) + { + sts[1]->coder_type = GENERIC; + } + hStereoTD->tdm_lp_reuse_flag = 1; + + if ( hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC + hCPE->brate_surplus < 11000 ) + { + sts[1]->coder_type = INACTIVE; + } + } + + if ( hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC + hCPE->brate_surplus < 14700 ) + { + if ( sts[0]->coder_type == TRANSITION ) + { + sts[0]->coder_type = GENERIC; + } + } + mod_ct = AUDIO; if ( hCPE->element_brate < IVAS_24k4 ) { @@ -456,7 +481,12 @@ void tdm_configure_enc( * bitbudget distribution between channels (taking into account also metadata bitbudget) *----------------------------------------------------------------*/ - tdm_bit_alloc( hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC, hStereoTD->tdm_lp_reuse_flag, &( sts[0]->total_brate ), &( sts[1]->total_brate ), &( hStereoTD->tdm_low_rate_mode ), sts[1]->coder_type, tdm_ratio_bit_alloc_idx, hStereoTD->tdm_Pitch_reuse_flag, sts[0]->bwidth, sts[1]->bwidth, sts[0]->flag_ACELP16k, hStereoTD->tdm_LRTD_flag, mod_ct, hStereoTD->tdm_inst_ratio_idx ); + tdm_bit_alloc( ivas_format, + ism_mode, + hCPE->element_brate - nb_bits_metadata * FRAMES_PER_SEC + hCPE->brate_surplus, + hStereoTD->tdm_lp_reuse_flag, &( sts[0]->total_brate ), &( sts[1]->total_brate ), + &( hStereoTD->tdm_low_rate_mode ), sts[1]->coder_type, tdm_ratio_bit_alloc_idx, hStereoTD->tdm_Pitch_reuse_flag, + sts[0]->bwidth, sts[1]->bwidth, sts[0]->flag_ACELP16k, hStereoTD->tdm_LRTD_flag, mod_ct, hStereoTD->tdm_inst_ratio_idx ); if ( sts[0]->GSC_IVAS_mode > 0 && sts[0]->total_brate <= STEREO_GSC_BIT_RATE_ALLOC ) { @@ -519,9 +549,9 @@ void tdm_configure_enc( } #ifdef DEBUG_MODE_TD - dbgwrite( &hStereoTD->tdm_low_rate_mode, 2, 1, 320, "res/tdm_low_rate_mode" ); - dbgwrite( &hStereoTD->tdm_lp_reuse_flag, 2, 1, 320, "res/tdm_lp_reuse_flag" ); - dbgwrite( &mod_ct, 2, 1, 320, "res/mod_ct.enx" ); + dbgwrite( &hStereoTD->tdm_low_rate_mode, 2, 1, 320, "res/tdm_low_rate_mode_c" ); + dbgwrite( &hStereoTD->tdm_lp_reuse_flag, 2, 1, 320, "res/tdm_lp_reuse_flag_c" ); + dbgwrite( &mod_ct, 2, 1, 320, "res/mod_ct.enc" ); #endif /*----------------------------------------------------------------* @@ -828,4 +858,6 @@ void stereo_tdm_prep_dwnmx( } } } + + return; } diff --git a/lib_enc/lib_enc.c b/lib_enc/lib_enc.c index 18cfb9247d3df5f5e6c988b0e462bc0477692a7b..c1c8b047e8f20eadca1eae31aa9de92cb69f1810 100644 --- a/lib_enc/lib_enc.c +++ b/lib_enc/lib_enc.c @@ -76,7 +76,7 @@ static int16_t getInputBufferSize( const Encoder_Struct *st_ivas ); static ivas_error doCommonConfigureChecks( IVAS_ENC_HANDLE hIvasEnc ); static ivas_error doCommonSetterChecks( IVAS_ENC_HANDLE hIvasEnc ); static ivas_error sanitizeBandwidth( const IVAS_ENC_HANDLE hIvasEnc ); -static ivas_error sanitizeBitrateISM( const ENCODER_CONFIG_HANDLE hEncoderConfig, const IVAS_ENC_HANDLE hIvasEnc ); +static ivas_error sanitizeBitrateISM( const ENCODER_CONFIG_HANDLE hEncoderConfig, const bool extMetadataApi ); static void init_encoder_config( ENCODER_CONFIG_HANDLE hEncoderConfig ); static void resetIsmMetadataProvidedFlags( IVAS_ENC_HANDLE hIvasEnc ); static ivas_error bandwidthApiToInternal( const IVAS_ENC_BANDWIDTH maxBandwidth, int16_t *internalMaxBandwidth ); @@ -110,13 +110,7 @@ ivas_error IVAS_ENC_Open( * Allocate and initialize IVAS application encoder handle *-----------------------------------------------------------------*/ -#ifdef BITSTREAM_INDICES_MEMORY -#define WMC_TOOL_SKIP if ( ( *phIvasEnc = (IVAS_ENC_HANDLE) malloc( sizeof( struct IVAS_ENC ) ) ) == NULL ) -#undef WMC_TOOL_SKIP -#else - if ( ( *phIvasEnc = (IVAS_ENC_HANDLE) malloc( sizeof( struct IVAS_ENC ) ) ) == NULL ) -#endif { return IVAS_ERR_FAILED_ALLOC; } @@ -205,13 +199,7 @@ void IVAS_ENC_Close( ( *phIvasEnc )->st_ivas = NULL; -#ifdef BITSTREAM_INDICES_MEMORY -#define WMC_TOOL_SKIP free( *phIvasEnc ); -#undef WMC_TOOL_SKIP -#else - free( *phIvasEnc ); -#endif *phIvasEnc = NULL; phIvasEnc = NULL; @@ -342,6 +330,61 @@ ivas_error IVAS_ENC_ConfigureForStereo( } +/*---------------------------------------------------------------------* + * IVAS_ENC_ConfigureForMASAObjects() + * + * Configure and initialize the combined MASA and ISM encoder. + *---------------------------------------------------------------------*/ + +ivas_error IVAS_ENC_ConfigureForMASAObjects( + IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ + const int32_t inputFs, /* i : input sampling frequency */ + const int32_t bitrate, /* i : requested bitrate of the ouput bitstream */ + const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */ + const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */ + const uint16_t numObjects, /* i : number of objects to be encoded */ + const int16_t masaVariant /* i : index specifying the number of MASA transport channels */ +) +{ + Encoder_Struct *st_ivas; + ivas_error error; + + if ( ( error = doCommonConfigureChecks( hIvasEnc ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( numObjects > MAX_NUM_OBJECTS ) + { + return IVAS_ERR_TOO_MANY_INPUTS; + } + st_ivas = hIvasEnc->st_ivas; + switch ( masaVariant ) + { + case IVAS_ENC_MASA_2CH: + st_ivas->hEncoderConfig->nchan_inp = CPE_CHANNELS + numObjects; + st_ivas->hEncoderConfig->element_mode_init = IVAS_CPE_DFT; /* initialization only, might be changed later based on element_brate */ + break; + case IVAS_ENC_MASA_1CH: + st_ivas->hEncoderConfig->nchan_inp = 1 + numObjects; + st_ivas->hEncoderConfig->element_mode_init = IVAS_CPE_DFT; /* initialization only, might be changed later based on element_brate */ + break; + default: + return IVAS_ERR_INVALID_MASA_CONFIG; + break; + } + + st_ivas = hIvasEnc->st_ivas; + + /* Currently this is true but it is already shown in descriptive metadata that there can be inequality for this. */ + st_ivas->nchan_transport = st_ivas->hEncoderConfig->nchan_inp - numObjects; + st_ivas->hEncoderConfig->ivas_format = MASA_ISM_FORMAT; + st_ivas->hEncoderConfig->nchan_ism = numObjects; + + return configureEncoder( hIvasEnc, inputFs, bitrate, maxBandwidth, dtxConfig, IVAS_ENC_GetDefaultChannelAwareConfig() ); +} + + /*---------------------------------------------------------------------* * IVAS_ENC_ConfigureForObjects() * @@ -408,7 +451,7 @@ ivas_error IVAS_ENC_FeedObjectMetadata( return IVAS_ERR_NOT_CONFIGURED; } - if ( hIvasEnc->st_ivas->hEncoderConfig->ivas_format != ISM_FORMAT ) + if ( hIvasEnc->st_ivas->hEncoderConfig->ivas_format != ISM_FORMAT && hIvasEnc->st_ivas->hEncoderConfig->ivas_format != MASA_ISM_FORMAT && hIvasEnc->st_ivas->hEncoderConfig->ivas_format != SBA_ISM_FORMAT ) { return IVAS_ERR_METADATA_NOT_EXPECTED; } @@ -494,6 +537,55 @@ ivas_error IVAS_ENC_ConfigureForAmbisonics( return error; } +/*---------------------------------------------------------------------* + * IVAS_ENC_ConfigureForSBAObjects() + * + * Configure and initialize the combined SBA and ISM encoder. + *---------------------------------------------------------------------*/ + +ivas_error IVAS_ENC_ConfigureForSBAObjects( + IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ + const int32_t inputFs, /* i : input sampling frequency */ + const int32_t bitrate, /* i : requested bitrate of the ouput bitstream */ + const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */ + const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */ + const uint16_t numObjects, /* i : number of objects to be encoded */ + const IVAS_ENC_SBA_ORDER order, /* i : order of the Ambisonics input */ + const bool isPlanar, /* i : if true, input is treated as planar Ambisonics */ + const bool Opt_PCA_ON /* i : PCA option flag */ +) +{ + Encoder_Struct *st_ivas; + ivas_error error; + + if ( ( error = doCommonConfigureChecks( hIvasEnc ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( numObjects > MAX_NUM_OBJECTS ) + { + return IVAS_ERR_TOO_MANY_INPUTS; + } + st_ivas = hIvasEnc->st_ivas; + + st_ivas->hEncoderConfig->element_mode_init = IVAS_SCE; /* Just needs to be something not mono, will be set later */ + st_ivas->hEncoderConfig->sba_planar = isPlanar; + st_ivas->hEncoderConfig->sba_order = order; + + /* Input in ACN/SN3D in all cases (3D and planar): get number of channels */ + st_ivas->hEncoderConfig->nchan_inp = ivas_sba_get_nchan( st_ivas->hEncoderConfig->sba_order, isPlanar ) + numObjects; + + st_ivas->hEncoderConfig->Opt_PCA_ON = (int16_t) Opt_PCA_ON; + + /* Currently this is true but it is already shown in descriptive metadata that there can be inequality for this. */ + st_ivas->nchan_transport = st_ivas->hEncoderConfig->nchan_inp - numObjects; + st_ivas->hEncoderConfig->ivas_format = SBA_ISM_FORMAT; + st_ivas->hEncoderConfig->nchan_ism = numObjects; + + return configureEncoder( hIvasEnc, inputFs, bitrate, maxBandwidth, dtxConfig, IVAS_ENC_GetDefaultChannelAwareConfig() ); +} + /*---------------------------------------------------------------------* * IVAS_ENC_ConfigureForMasa() @@ -565,7 +657,7 @@ ivas_error IVAS_ENC_FeedMasaMetadata( return IVAS_ERR_NOT_CONFIGURED; } - if ( hIvasEnc->st_ivas->hEncoderConfig->ivas_format != MASA_FORMAT ) + if ( hIvasEnc->st_ivas->hEncoderConfig->ivas_format != MASA_FORMAT && hIvasEnc->st_ivas->hEncoderConfig->ivas_format != MASA_ISM_FORMAT ) { return IVAS_ERR_METADATA_NOT_EXPECTED; } @@ -627,6 +719,8 @@ ivas_error IVAS_ENC_ConfigureForMultichannel( break; } + hEncoderConfig->nchan_inp = ivas_mc_ls_setup_get_num_channels( hEncoderConfig->mc_input_setup ); + hIvasEnc->maxBandwidthUser = max_bwidth_user; error = configureEncoder( hIvasEnc, inputFs, bitrate, maxBandwidth, dtxConfig, IVAS_ENC_GetDefaultChannelAwareConfig() ); @@ -652,6 +746,7 @@ static ivas_error configureEncoder( Encoder_Struct *st_ivas; ENCODER_CONFIG_HANDLE hEncoderConfig; ivas_error error; + int32_t cpe_brate; error = IVAS_ERR_OK; @@ -769,7 +864,7 @@ static ivas_error configureEncoder( } else if ( hEncoderConfig->ivas_format == ISM_FORMAT ) { - if ( ( error = sanitizeBitrateISM( hEncoderConfig, hIvasEnc ) ) != IVAS_ERR_OK ) + if ( ( error = sanitizeBitrateISM( hEncoderConfig, hIvasEnc->extMetadataApi ) ) != IVAS_ERR_OK ) { return error; } @@ -793,6 +888,25 @@ static ivas_error configureEncoder( } } } + else if ( hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) + { + st_ivas->ism_mode = ivas_omasa_ism_mode_select( st_ivas->hEncoderConfig->ivas_total_brate, hEncoderConfig->nchan_ism ); + + cpe_brate = calculate_cpe_brate_MASA_ISM( st_ivas->ism_mode, st_ivas->hEncoderConfig->ivas_total_brate, hEncoderConfig->nchan_ism ); + + /*adapt element_mode according to the bit-rate*/ + if ( hEncoderConfig->element_mode_init != IVAS_SCE ) + { + if ( cpe_brate >= IVAS_48k ) + { + hEncoderConfig->element_mode_init = IVAS_CPE_MDCT; + } + } + } + else if ( hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) + { + st_ivas->ism_mode = ISM_MODE_NONE; + } } else /* EVS mono */ { @@ -868,7 +982,7 @@ static ivas_error configureEncoder( if ( hEncoderConfig->Opt_DTX_ON && hEncoderConfig->ivas_format != MONO_FORMAT && ( ( hEncoderConfig->ivas_format == SBA_FORMAT && ivas_get_sba_num_TCs( hEncoderConfig->ivas_total_brate, 1 ) > 2 ) || - hEncoderConfig->ivas_format == MC_FORMAT ) ) + hEncoderConfig->ivas_format == MC_FORMAT || hEncoderConfig->ivas_format == MASA_ISM_FORMAT || hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) ) { return IVAS_ERROR( IVAS_ERR_DTX_NOT_SUPPORTED, "DTX is not supported in this IVAS format and element mode." ); } @@ -947,7 +1061,11 @@ ivas_error IVAS_ENC_GetDelay( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + *delay = NS2SA( hEncoderConfig->input_Fs, get_delay( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL, AUDIO_CONFIG_INVALID ) ); +#else *delay = NS2SA( hEncoderConfig->input_Fs, get_delay( ENC, hEncoderConfig->input_Fs, hEncoderConfig->ivas_format, NULL ) ); +#endif *delay *= hEncoderConfig->nchan_inp; @@ -1588,6 +1706,14 @@ static ivas_error printConfigInfo_enc( fprintf( stdout, "IVAS mode: Multi-Channel 7.1+4\n" ); } } + else if ( hEncoderConfig->ivas_format == SBA_ISM_FORMAT ) + { + fprintf( stdout, "IVAS format: combined ISM and SBA (%i ISM stream(s))\n", hEncoderConfig->nchan_ism ); + } + else if ( hEncoderConfig->ivas_format == MASA_ISM_FORMAT ) + { + fprintf( stdout, "IVAS format: combined ISM and MASA (%i ISM stream(s))\n", hEncoderConfig->nchan_ism ); + } if ( hEncoderConfig->is_binaural ) { @@ -1657,13 +1783,11 @@ static ivas_error printConfigInfo_enc( { if ( newBandwidthApi != hEncoderConfig->max_bwidth ) { -#ifdef ISM_FB if ( hEncoderConfig->ivas_format == ISM_FORMAT ) { fprintf( stdout, "\nFB coding not supported below %.2f kbps for %i objects. Switching to SWB.\n", hEncoderConfig->nchan_ism * MIN_BRATE_FB_ISM / 1000.f, hEncoderConfig->nchan_ism ); } else -#endif { fprintf( stdout, "\nFB coding not supported below %.2f kbps. Switching to SWB.\n", MIN_BRATE_FB_STEREO / 1000.f ); } @@ -1747,7 +1871,7 @@ static ivas_error setBitrate( if ( hEncoderConfig->ivas_format == ISM_FORMAT ) { - if ( ( error = sanitizeBitrateISM( hEncoderConfig, hIvasEnc ) ) != IVAS_ERR_OK ) + if ( ( error = sanitizeBitrateISM( hEncoderConfig, hIvasEnc->extMetadataApi ) ) != IVAS_ERR_OK ) { return error; } @@ -1963,12 +2087,8 @@ static ivas_error sanitizeBandwidth( } else { -#ifdef ISM_FB if ( max_bwidth_tmp == FB && ( ( hEncoderConfig->ivas_format != ISM_FORMAT && hEncoderConfig->ivas_total_brate < MIN_BRATE_FB_STEREO ) || ( hEncoderConfig->ivas_format == ISM_FORMAT && hEncoderConfig->ivas_total_brate / hEncoderConfig->nchan_ism < MIN_BRATE_FB_ISM ) ) ) -#else - if ( max_bwidth_tmp == FB && hEncoderConfig->ivas_total_brate < MIN_BRATE_FB_STEREO ) -#endif { max_bwidth_tmp = SWB; } @@ -1992,7 +2112,7 @@ static ivas_error sanitizeBandwidth( static ivas_error sanitizeBitrateISM( const ENCODER_CONFIG_HANDLE hEncoderConfig, - const IVAS_ENC_HANDLE hIvasEnc ) + const bool extMetadataApi ) { if ( hEncoderConfig->ivas_total_brate > IVAS_128k && hEncoderConfig->nchan_inp == 1 ) { @@ -2024,7 +2144,7 @@ static ivas_error sanitizeBitrateISM( return IVAS_ERROR( IVAS_ERR_INVALID_BITRATE, "Too low bitrate for 4 ISM specified in IVAS: %d", hEncoderConfig->ivas_total_brate ); } - if ( hIvasEnc->extMetadataApi ) + if ( extMetadataApi ) { hEncoderConfig->ism_extended_metadata_flag = ( hEncoderConfig->ivas_total_brate >= ISM_EXTENDED_METADATA_BRATE ); } diff --git a/lib_enc/lib_enc.h b/lib_enc/lib_enc.h index 9d2578755799653924c3cddb6e5b8d8f176732f5..b7582ed9e428dd310c5bfb9cb539231cffe5dbb2 100644 --- a/lib_enc/lib_enc.h +++ b/lib_enc/lib_enc.h @@ -50,6 +50,8 @@ typedef enum _IVAS_ENC_INPUT_FORMAT IVAS_ENC_INPUT_SBA, IVAS_ENC_INPUT_MASA, IVAS_ENC_INPUT_MC, + IVAS_ENC_INPUT_MASA_ISM, + IVAS_ENC_INPUT_SBA_ISM, IVAS_DEC_INPUT_UNKNOWN = 0xffff } IVAS_ENC_INPUT_FORMAT; @@ -101,6 +103,12 @@ typedef enum _IVAS_ENC_COMPLEXITY_LEVEL IVAS_ENC_COMPLEXITY_LEVEL_THREE = 3 } IVAS_ENC_COMPLEXITY_LEVEL; +typedef enum _IVAS_ENC_COMBINED_FORMAT +{ + IVAS_ENC_MASA_ISM = 1, + IVAS_ENC_COMBINED_UNDEFINED = 0xffff +} IVAS_ENC_COMBINED_FORMAT; + #ifdef DEBUGGING typedef enum _IVAS_ENC_STEREO_MODE { @@ -193,6 +201,30 @@ ivas_error IVAS_ENC_ConfigureForObjects( const bool ism_extended_metadata /* i : Extended metadata used (true/false), where extended metadata includes radius and orientation */ ); +/*! r: encoder error code */ +ivas_error IVAS_ENC_ConfigureForMASAObjects( + IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ + const int32_t inputFs, /* i : input sampling frequency */ + const int32_t bitrate, /* i : requested bitrate of the ouput bitstream */ + const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */ + const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */ + const uint16_t numObjects, /* i : number of objects to be encoded */ + const int16_t masaVariant /* i : index specifying the number of MASA transport channels */ +); + +/*! r: encoder error code */ +ivas_error IVAS_ENC_ConfigureForSBAObjects( + IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ + const int32_t inputFs, /* i : input sampling frequency */ + const int32_t bitrate, /* i : requested bitrate of the ouput bitstream */ + const IVAS_ENC_BANDWIDTH maxBandwidth, /* i : bandwidth limitation */ + const IVAS_ENC_DTX_CONFIG dtxConfig, /* i : configuration of DTX, can by set to default by using IVAS_ENC_GetDefaultDtxConfig() */ + const uint16_t numObjects, /* i : number of objects to be encoded */ + const IVAS_ENC_SBA_ORDER order, /* i : order of the Ambisonics input */ + const bool isPlanar, /* i : if true, input is treated as planar Ambisonics */ + const bool Opt_PCA_ON /* i : PCA option flag */ +); + /*! r: error code */ ivas_error IVAS_ENC_ConfigureForAmbisonics( IVAS_ENC_HANDLE hIvasEnc, /* i/o: IVAS encoder handle */ diff --git a/lib_enc/lsf_msvq_ma_enc.c b/lib_enc/lsf_msvq_ma_enc.c index 349fb4f60ff5dcfaad6df0a2c91416cef1fbaa04..d75d570215db246449c83eee2a7ea664e3e782e8 100644 --- a/lib_enc/lsf_msvq_ma_enc.c +++ b/lib_enc/lsf_msvq_ma_enc.c @@ -148,7 +148,7 @@ int16_t msvq_stage1_dct_search( for ( c2 = 0; c2 < cols_per_segment[segm]; c2++ ) { #define WMC_TOOL_SKIP - tmp = dct_target[c2] - (float) ( ( (Word16) cbpW8[c2] ) << dct_col_shift_tab[c2] ); /* Word8 storage MSE inner loop */ + tmp = dct_target[c2] - (float) shl( (Word16) cbpW8[c2], dct_col_shift_tab[c2] ); /* note: BASOP shift left defined for signed integers */ LOGIC( 1 ); SHIFT( 1 ); ADD( 1 ); /* in BASOP: s_and(for W8->W16), shl(), sub()*/ @@ -555,7 +555,11 @@ void msvq_enc( { /* Subtract codebook entry from residual vector of parent node */ p1 = resid[0] + parents[c] * N; - p2 = cb_stage + ( indices[1][c * stages + s] ) * maxn; /* regular ptr init */ + p2 = NULL; + if ( cb_stage != NULL ) + { + p2 = cb_stage + ( indices[1][c * stages + s] ) * maxn; /* regular ptr init */ + } if ( s == 0 && applyDCT_flag != 0 ) { p2 = (const float *) &( st1_syn_vec_ptr[c * FDCNG_VQ_MAX_LEN] ); /*ptr init of stage 1 */ diff --git a/lib_enc/pre_proc.c b/lib_enc/pre_proc.c index 4a11f1b61f1d60360db9540f603d63b03c5b9b97..c035ef5ac4e1948a6cd385e5f4d3fd21cc49b985 100644 --- a/lib_enc/pre_proc.c +++ b/lib_enc/pre_proc.c @@ -381,7 +381,7 @@ void pre_proc( } else if ( st->rf_mode && st->core_brate != FRAME_NO_DATA && st->core_brate != SID_2k40 ) { - /* the RF config is for (n- fec_offset)th frame that will be packed along with the n-th frame bistream */ + /* the RF config is for (n- fec_offset)th frame that will be packed along with the n-th frame bitstream */ st->rf_mode = 1; st->codec_mode = MODE2; diff --git a/lib_enc/set_impulse.c b/lib_enc/set_impulse.c index 4cafeea9e8a253a5b53ee88df65a4e91b0e5796d..2c8a7fdd080353a7880fb30d7ffd018b2f5f70dc 100644 --- a/lib_enc/set_impulse.c +++ b/lib_enc/set_impulse.c @@ -61,10 +61,10 @@ static void convolve_tc2( const float g[], const float h[], float y[], const int /*---------------------------------------------------------------------------------------* * Function set_impulse() for TC * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * - * Builds glottal codebook contribution based on glotal impulses positions finding. * + * Builds glottal codebook contribution based on glottal impulses positions finding. * * * - * Returns a position of the glotal impulse center and * - * a number of the glotal impulse shape. * + * Returns a position of the glottal impulse center and * + * a number of the glottal impulse shape. * * * * |----| |----| xn * * imp_pos-> || | imp_shape-> | g1 | | * @@ -89,7 +89,7 @@ void set_impulse( float exc[], /* o : adaptive codebook excitation */ float y1[], /* o : filtered adaptive codebook excitation */ int16_t *imp_shape, /* o : adaptive codebook index */ - int16_t *imp_pos, /* o : position of the glotal impulse center index */ + int16_t *imp_pos, /* o : position of the glottal impulse center index */ float *gain_trans /* o : transition gain */ ) { diff --git a/lib_enc/stat_enc.h b/lib_enc/stat_enc.h index 4a47761f9c49f7da8551edcaf925993bc6b2b7a0..ee30669e3de561b8d2acb555512cc20c1826a0cf 100644 --- a/lib_enc/stat_enc.h +++ b/lib_enc/stat_enc.h @@ -46,7 +46,6 @@ #include "cnst.h" #include "ivas_cnst.h" - /*------------------------------------------------------------------------------------------* * Indice *------------------------------------------------------------------------------------------*/ @@ -69,6 +68,7 @@ typedef struct bitstream_enc_data_structure Indice *ind_list; /* list of indices */ int16_t *ivas_max_num_indices; /* maximum total number of indices in the list */ Indice **ivas_ind_list_zero; /* beginning of the buffer of indices */ + void *st_ivas; /* IVAS encoder structure */ } BSTR_ENC_DATA, *BSTR_ENC_HANDLE; /*----------------------------------------------------------------------------------* @@ -124,7 +124,7 @@ typedef struct float firState1; float firState2; - int16_t ramp_up_flag; /* bit map flags to indicate a ramp up in beginning of TCX frame */ + uint16_t ramp_up_flag; /* bit map flags to indicate a ramp up in beginning of TCX frame */ } SubblockEnergies; @@ -1322,7 +1322,7 @@ typedef struct enc_core_structure float bckr_tilt_lt; float lp_speech; - float lp_noise; /* CNG and DTX - LP filterend total noise estimation */ + float lp_noise; /* CNG and DTX - LP filtered total noise estimation */ int16_t active_cnt; /* counter of active frames */ TD_CNG_ENC_HANDLE hTdCngEnc; diff --git a/lib_enc/swb_tbe_enc.c b/lib_enc/swb_tbe_enc.c index 38a0fb73ff28753dcc9b97b21e722cc1cfe3f00f..d82af15f3505bc94f49385bfd6587263869ac48d 100644 --- a/lib_enc/swb_tbe_enc.c +++ b/lib_enc/swb_tbe_enc.c @@ -1259,7 +1259,7 @@ void swb_tbe_enc( GainFrame *= temp; } - if ( st->element_mode > EVS_MONO && st->L_frame != st->last_L_frame && st->coder_type == TRANSITION && st->coder_type_raw != VOICED && st->clas == VOICED_CLAS && st->last_clas == VOICED_CLAS && ( 3.0f * voice_factors[0] < voice_factors[( st->L_frame >> 6 ) - 1] ) ) + if ( st->element_mode > EVS_MONO && st->L_frame != st->last_L_frame && hBWE_TD->prev_gainFr_SHB != 0 && ( st->last_extl == SWB_TBE || st->last_extl == FB_TBE ) && st->coder_type == TRANSITION && st->coder_type_raw != VOICED && st->clas == VOICED_CLAS && st->last_clas == VOICED_CLAS && ( 3.0f * voice_factors[0] < voice_factors[( st->L_frame >> 6 ) - 1] ) ) { float fac = GainFrame / hBWE_TD->prev_gainFr_SHB; diff --git a/lib_enc/transient_detection.c b/lib_enc/transient_detection.c index 1f8b36819f22bfa028814c617b723c4f0760a872..04cf8ea2471a095aede392c3f01641dce49b3c15 100644 --- a/lib_enc/transient_detection.c +++ b/lib_enc/transient_detection.c @@ -241,7 +241,7 @@ void RunTransientDetection( UpdateDelayBuffer( filteredInput, length, &hTranDet->delayBuffer ); /* compute ramp up flag */ - pSubblockEnergies->ramp_up_flag = pSubblockEnergies->ramp_up_flag << 1; + 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 ) diff --git a/lib_rend/ivas_MSPred.c b/lib_rend/ivas_MSPred.c new file mode 100644 index 0000000000000000000000000000000000000000..33581631d45ff1cc91509ebdf72bfefbcf2121b6 --- /dev/null +++ b/lib_rend/ivas_MSPred.c @@ -0,0 +1,543 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_lcld_rom_tables.h" +#include "ivas_lcld_prot.h" +#include "ivas_prot_rend.h" +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * Function _round() + * + * + *-------------------------------------------------------------------*/ + +static int32_t _round( + float val ) +{ + return ( val > 0.0f ? (int32_t) ( val + 0.5f ) : (int32_t) ( val - 0.5f ) ); +} + + +/*-------------------------------------------------------------------* + * Function quantPhase() + * + * + *-------------------------------------------------------------------*/ + +int32_t quantPhase( + float phase ) +{ +#ifdef SIMPLE_PHASE + int32_t phaseQ; + if ( phase < 0.0f ) + { + phase += 2.0f * _PI_; + } + phaseQ = _round( phase * SIMPLE_PHASE_QUANT_FACTOR ); + phaseQ = ( phaseQ > SIMPLE_PHASE_MAX_VAL ? SIMPLE_PHASE_MIN_VAL : phaseQ ); +#else + int32_t phaseQ; + + phaseQ = _round( phase * PHASE_QUANT_FACTOR ); + if ( phaseQ == PHASE_MAX_VAL ) + { + phaseQ = PHASE_MIN_VAL; + } +#endif + return phaseQ; +} + + +/*-------------------------------------------------------------------* + * Function rot_pm_pi() + * + * + *-------------------------------------------------------------------*/ + +void rot_pm_pi( + float *pr, + float *pi ) +{ + /* (-1 + j0) */ + *pr = -( *pr ); + *pi = -( *pi ); + + return; +} + + +/*-------------------------------------------------------------------* + * Function ApplyInversePredictros() + * + * + *-------------------------------------------------------------------*/ + +void rot_p_pi_2( + float *pr, + float *pi ) +{ + /* (0 + j) */ + float r = *pr; + + *pr = -( *pi ); + *pi = r; + + return; +} + + +/*-------------------------------------------------------------------* + * Function rot_m_pi_2() + * + * + *-------------------------------------------------------------------*/ + +void rot_m_pi_2( + float *pr, + float *pi ) +{ + /* (0 - j) */ + float r = *pr; + + *pr = *pi; + *pi = -r; + + return; +} + + +/*-------------------------------------------------------------------* + * Function cplxmult() + * + * + *-------------------------------------------------------------------*/ + +void cplxmult( + float *pr1, + float *pi1, + float r2, + float i2 ) +{ + float r1 = *pr1, i1 = *pi1; + + *pr1 = r1 * r2 - i1 * i2; + *pi1 = r1 * i2 + i1 * r2; + + return; +} + + +/*-------------------------------------------------------------------* + * Function requantPhase() + * + * + *-------------------------------------------------------------------*/ + +int32_t requantPhase( + int32_t phaseQ ) +{ + + if ( phaseQ >= PHASE_MAX_VAL ) + { + phaseQ += PHASE_MAX_VAL; + phaseQ %= ( 2 * PHASE_MAX_VAL ); + phaseQ -= PHASE_MAX_VAL; + } + else if ( phaseQ < PHASE_MIN_VAL ) + { + phaseQ -= PHASE_MAX_VAL; + phaseQ %= ( 2 * PHASE_MAX_VAL ); + phaseQ += PHASE_MAX_VAL; + if ( phaseQ == PHASE_MAX_VAL ) + { + phaseQ = PHASE_MIN_VAL; + } + } + + return phaseQ; +} + + +/*-------------------------------------------------------------------* + * Function quantPred() + * + * + *-------------------------------------------------------------------*/ + +int32_t quantPred( + const float pred ) +{ + int32_t predQ = _round( pred * PRED_QUANT_FACTOR ); + predQ = predQ > PRED_MAX_VAL ? PRED_MAX_VAL : predQ; + predQ = predQ < PRED_MIN_VAL ? PRED_MIN_VAL : predQ; + + return predQ; +} + + +/*-------------------------------------------------------------------* + * Function dequantPhase() + * + * + *-------------------------------------------------------------------*/ + +float dequantPhase( + const int32_t phaseQ ) +{ +#ifdef SIMPLE_PHASE + return (float) phaseQ / SIMPLE_PHASE_QUANT_FACTOR; +#else + return (float) phaseQ / PHASE_QUANT_FACTOR; +#endif +} + + +/*-------------------------------------------------------------------* + * Function dequantPred() + * + * + *-------------------------------------------------------------------*/ + +float dequantPred( int32_t predQ ) +{ + return (float) predQ / PRED_QUANT_FACTOR; +} + + +/*-------------------------------------------------------------------* + * Function PrepEncode() + * + * + *-------------------------------------------------------------------*/ + +int32_t PrepEncode( + int32_t *piQuant, + const int32_t *piMSFlags, + const int32_t numBands ) +{ + int32_t b, numMSBands = 0; + + for ( b = 0; b < numBands; b++ ) + { + if ( piMSFlags[b] ) + { + piQuant[numMSBands++] = piQuant[b]; + } + } + + for ( b = numMSBands; b < numBands; b++ ) + { + piQuant[b] = 0; + } + + return numMSBands; +} + + +/*-------------------------------------------------------------------* + * Function EncodePhase() + * + * + *-------------------------------------------------------------------*/ + +void EncodePhase( + int32_t *phaseQuant, + const int32_t numMSBands, + const int32_t diffDim ) +{ + int32_t b; + + if ( diffDim > 0 ) + { + int32_t tmp1, tmp2; + tmp1 = phaseQuant[0]; + for ( b = 1; b < numMSBands; b++ ) + { + tmp2 = phaseQuant[b]; + phaseQuant[b] -= tmp1; + tmp1 = tmp2; + } + } + + if ( diffDim > 1 ) + { + int32_t tmp1, tmp2; + tmp1 = phaseQuant[1]; + for ( b = 2; b < numMSBands; b++ ) + { + tmp2 = phaseQuant[b]; + phaseQuant[b] -= tmp1; + tmp1 = tmp2; + } + } + for ( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] = requantPhase( phaseQuant[b] ); + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function DecodePhase() + * + * + *-------------------------------------------------------------------*/ + +void DecodePhase( + int32_t *phaseQuant, + const int32_t numMSBands, + const int32_t diffDim ) +{ + int32_t b; + + if ( diffDim > 1 ) + { + for ( b = 2; b < numMSBands; b++ ) + { + phaseQuant[b] += phaseQuant[b - 1]; + } + } + + if ( diffDim > 0 ) + { + for ( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] += phaseQuant[b - 1]; + } + } + + for ( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] = requantPhase( phaseQuant[b] ); + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function EncodePredCoef() + * + * + *-------------------------------------------------------------------*/ + +int32_t EncodePredCoef( + int32_t *predQuant, + const int32_t numMSBands ) +{ + int32_t b, tmp1, tmp2; + + tmp1 = predQuant[0]; + for ( b = 1; b < numMSBands; b++ ) + { + tmp2 = predQuant[b]; + predQuant[b] -= tmp1; + tmp1 = tmp2; + } + + return numMSBands; +} + + +/*-------------------------------------------------------------------* + * Function DecodePredCoef() + * + * + *-------------------------------------------------------------------*/ + +void DecodePredCoef( + int32_t *phaseQuant, + const int32_t numMSBands ) +{ + int32_t b; + + for ( b = 1; b < numMSBands; b++ ) + { + phaseQuant[b] += phaseQuant[b - 1]; + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function CountMSBits() + * + * + *-------------------------------------------------------------------*/ + +int32_t CountMSBits( + int32_t iNumBands, + const int32_t iMSMode, + const int32_t *piMSFlags, + const int32_t *piLRPhaseDiff, + const int32_t *piMSPredCoef ) +{ + int32_t iBitsWritten = 0; + int32_t b; + int32_t anyNonZero; + int32_t iNumMSBands = 0; + int32_t piPhaseCopy[MAX_BANDS_48] = { 0 }; + int32_t piPredCopy[MAX_BANDS_48] = { 0 }; + + iBitsWritten += 2; /* iMSMode */ + for ( b = 0; b < iNumBands; b++ ) + { + iNumMSBands += ( piMSFlags[b] != 0 ); + } + + if ( iNumMSBands == 0 ) + { + return iBitsWritten; + } + + if ( iNumMSBands < iNumBands ) + { + iBitsWritten += iNumBands; /* piMSFlags */ + } + + if ( iMSMode < 3 ) + { + return iBitsWritten; + } + + /* prepare arrays for coding evaluation */ + for ( b = 0; b < iNumBands; b++ ) + { + piPhaseCopy[b] = piLRPhaseDiff[b]; + piPredCopy[b] = piMSPredCoef[b]; + } + + /* Differential Coding of Phase Data*/ + PrepEncode( piPhaseCopy, piMSFlags, iNumBands ); + PrepEncode( piPredCopy, piMSFlags, iNumBands ); +#ifndef SIMPLE_PHASE + EncodePhase( piPhaseCopy, iNumMSBands, PHASE_DIFF_DIM ); +#endif + EncodePredCoef( piPredCopy, iNumMSBands ); + + iBitsWritten += 1; /* iMSPredAll */ + anyNonZero = 0; /* phase */ + for ( b = 0; b < iNumMSBands; b++ ) + { + if ( piPhaseCopy[b] != 0 ) + { + anyNonZero = 1; + break; + } + } + iBitsWritten++; /*anyNonZero Phase*/ + if ( anyNonZero ) + { +#ifdef SIMPLE_PHASE + iBitsWritten += iNumMSBands * SIMPLE_PHASE_BITS; +#else + iBitsWritten += PHASE_BAND0_BITS; + for ( b = 1; b < iNumMSBands; b++ ) + { + int32_t tabIdx = piPhaseCopy[b] - ENV_DELTA_MIN; + iBitsWritten += c_aaiRMSEnvHuffEnc[tabIdx][0]; + } +#endif + } + anyNonZero = 0; /* prediction */ + for ( b = 0; b < iNumMSBands; b++ ) + { + if ( piPredCopy[b] != 0 ) + { + anyNonZero = 1; + break; + } + } + + iBitsWritten++; /* any nonZero Pred */ + if ( anyNonZero ) + { + iBitsWritten += PRED_BAND0_BITS; + for ( b = 1; b < iNumMSBands; b++ ) + { + int32_t tabIdx = piPredCopy[b] - ENV_DELTA_MIN; + iBitsWritten += c_aaiRMSEnvHuffEnc[tabIdx][0]; + } + } + + return iBitsWritten; +} + + +#ifdef DEBUG_WRITE_MS_PRED +void writeMSPred( + int32_t *phaseQuant, + int32_t *predQuant, + int32_t MSMode, + int32_t numMSBands, + int32_t numBands, + void *fid, + int32_t *piMsFlags ) +{ + int32_t b; + + fid = (FILE *) fid; + fprintf( fid, "%d %d", MSMode, numMSBands ); + for ( b = 0; b < numMSBands; b++ ) + { + fprintf( fid, " %d", phaseQuant[b] ); + } + for ( b = numMSBands; b < numBands; b++ ) + { + fprintf( fid, " %d", 0 ); + } + for ( b = 0; b < numMSBands; b++ ) + { + fprintf( fid, " %d", predQuant[b] ); + } + for ( b = numMSBands; b < numBands; b++ ) + { + fprintf( fid, " %d", 0 ); + } + for ( b = 0; b < numBands; b++ ) + { + fprintf( fid, " %d", piMsFlags[b] ); + } + fprintf( fid, "\n" ); + + return; +} +#endif +#endif diff --git a/lib_rend/ivas_NoiseGen.c b/lib_rend/ivas_NoiseGen.c new file mode 100644 index 0000000000000000000000000000000000000000..e4a24fabd8d653cb5fa3b1043d7b36952a2cc783 --- /dev/null +++ b/lib_rend/ivas_NoiseGen.c @@ -0,0 +1,100 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include "prot.h" +#include "ivas_lcld_prot.h" +#include "ivas_prot_rend.h" +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------------------------* + * Function CreateNoiseGen() + * + * + *------------------------------------------------------------------------------------------*/ +// todo: not used!! +NoiseGen *CreateNoiseGen( void ) +{ + int32_t n; + + NoiseGen *psNoiseGen = NULL; + + psNoiseGen = (NoiseGen *) malloc( sizeof( NoiseGen ) ); + psNoiseGen->iNoiseBufferLength = 2048; + psNoiseGen->iNoiseBufferMask = 2047; + psNoiseGen->iNoiseBufferIndex = 0; + + psNoiseGen->pfNoiseBuffer = (float *) malloc( psNoiseGen->iNoiseBufferLength * sizeof( float ) ); + + /* Generate Laplacian distributed noise */ + for ( n = 0; n < psNoiseGen->iNoiseBufferLength; n++ ) + { + float fNoise = 0.0f; + float fScale = 0.707f; + fNoise = (float) ( ( rand() & ( RAND_MAX - 1 ) ) - ( RAND_MAX >> 1 ) ) / (float) RAND_MAX; + + if ( fNoise < 0.0 ) + { + fNoise = fScale * (float) logf( 1.0f + 1.9999999f * fNoise ); + } + else + { + fNoise = -fScale * (float) logf( 1.0f - 1.9999999f * fNoise ); + } + + psNoiseGen->pfNoiseBuffer[n] = fNoise; + } + + return psNoiseGen; +} + + +/*------------------------------------------------------------------------------------------* + * Function DeleteNoiseGen() + * + * + *------------------------------------------------------------------------------------------*/ + +void DeleteNoiseGen( NoiseGen *psNoiseGen ) +{ + free( psNoiseGen->pfNoiseBuffer ); + free( psNoiseGen ); + + return; +} + +extern float GetNoise( NoiseGen *psNoiseGen ); +#endif diff --git a/lib_rend/ivas_PerceptualModel.c b/lib_rend/ivas_PerceptualModel.c new file mode 100644 index 0000000000000000000000000000000000000000..4250a4fe8911c1a52404fa7b6aab700011347fe4 --- /dev/null +++ b/lib_rend/ivas_PerceptualModel.c @@ -0,0 +1,257 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_lcld_prot.h" +#include "prot.h" +#include "ivas_prot_rend.h" +#include "ivas_lcld_rom_tables.h" +#include +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------------------------* + * Local constants + *------------------------------------------------------------------------------------------*/ + +#define PERCEPTUAL_MODEL_SCALE ( 64 ) +#define PERCEPTUAL_MODEL_SCALE_SHIFT ( 6 ) +#define PERCEPTUAL_MODEL_ALPHA_SCALE ( 614 ) +#define PERCEPTUAL_MODEL_ALPHA_INV_SCALE ( 6827 ) +#define PERCEPTUAL_MODEL_ALPHA_SHIFT ( 11 ) + + +/*------------------------------------------------------------------------------------------* + * Function LogAdd() + * + * + *------------------------------------------------------------------------------------------*/ + +static inline int32_t LogAdd( + const int32_t iVal1, + const int32_t iVal2 ) +{ + int32_t iRetVal; + + if ( iVal1 > iVal2 ) + { + iRetVal = iVal1 - iVal2; + iRetVal = ( iRetVal < ( LOG_ADD_TABLE_LENGTH - 1 ) ) ? iRetVal : ( LOG_ADD_TABLE_LENGTH - 1 ); + iRetVal = iVal1 + c_aiLogAddTable[iRetVal]; + } + else + { + iRetVal = iVal2 - iVal1; + iRetVal = ( iRetVal < ( LOG_ADD_TABLE_LENGTH - 1 ) ) ? iRetVal : ( LOG_ADD_TABLE_LENGTH - 1 ); + iRetVal = iVal2 + c_aiLogAddTable[iRetVal]; + } + + return iRetVal; +} + + +/*------------------------------------------------------------------------------------------* + * Function PerceptualModel() + * + * + *------------------------------------------------------------------------------------------*/ + +void PerceptualModel( + const int32_t iMaxQuantBands, + const int32_t *piRMSEnvelope, + int32_t *piExcitation, + int32_t *piSMR ) +{ + int32_t n; + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t iSLOffset; + + piExcitation[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope[n] + c_aiBandwidthAdjust48[n]; + + /* Calculate sensation level offset */ + iSLOffset = c_aiDefaultTheta48[n] * ( piExcitation[n] - c_aiAbsoluteThresh48[n] ) >> PERCEPTUAL_MODEL_SLGAIN_SHIFT; + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + + /* Offset envelope by sensation level offset */ + piExcitation[n] -= iSLOffset; + + /* Convert to loudness domain (x^0.3) */ + piExcitation[n] = PERCEPTUAL_MODEL_ALPHA_SCALE * piExcitation[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t k; + const int32_t *piSpread; + + piSpread = &c_aaiSpreadFunction48[n * MAX_BANDS_48]; + piSMR[n] = piExcitation[n] + piSpread[n]; + for ( k = 0; k < iMaxQuantBands; k++ ) + { + if ( k != n ) + { + piSMR[n] = LogAdd( piSMR[n], piExcitation[k] + piSpread[k] ); + } + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR[n] = PERCEPTUAL_MODEL_ALPHA_INV_SCALE * piSMR[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + piSMR[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope[n] + c_aiBandwidthAdjust48[n] - piSMR[n]; + } + + return; +} + + +/*------------------------------------------------------------------------------------------* + * Function PerceptualModelStereo() + * + * + *------------------------------------------------------------------------------------------*/ + +void PerceptualModelStereo( + const int32_t iMaxQuantBands, + const int32_t *piMSFlags, + const int32_t *piRMSEnvelope0, + const int32_t *piRMSEnvelope1, + int32_t *piExcitation0, + int32_t *piExcitation1, + int32_t *piSMR0, + int32_t *piSMR1 ) +{ + int32_t n; + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t iMaxRMSEnv; + int32_t iSLOffset; + + iMaxRMSEnv = piRMSEnvelope0[n]; + + piExcitation0[n] = PERCEPTUAL_MODEL_SCALE * iMaxRMSEnv + c_aiBandwidthAdjust48[n]; /* piRMSEnvelope0[n] */ + + /* Calculate sensation level offset */ + iSLOffset = c_aiDefaultTheta48[n] * ( piExcitation0[n] - c_aiAbsoluteThresh48[n] ) >> PERCEPTUAL_MODEL_SLGAIN_SHIFT; + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + + /* Offset envelope by sensation level offset */ + piExcitation0[n] -= iSLOffset; + + /* Convert to loudness domain (x^0.3) */ + piExcitation0[n] = PERCEPTUAL_MODEL_ALPHA_SCALE * piExcitation0[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t k; + const int32_t *piSpread; + + piSpread = &c_aaiSpreadFunction48[n * MAX_BANDS_48]; + piSMR0[n] = piExcitation0[n] + piSpread[n]; + for ( k = 0; k < iMaxQuantBands; k++ ) + { + if ( k != n ) + { + piSMR0[n] = LogAdd( piSMR0[n], piExcitation0[k] + piSpread[k] ); + } + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t iMaxRMSEnv; + int32_t iSLOffset; + + iMaxRMSEnv = piRMSEnvelope1[n]; + + piExcitation1[n] = PERCEPTUAL_MODEL_SCALE * iMaxRMSEnv + c_aiBandwidthAdjust48[n]; /* piRMSEnvelope1[n] */ + + /* Calculate sensation level offset */ + iSLOffset = c_aiDefaultTheta48[n] * ( piExcitation1[n] - c_aiAbsoluteThresh48[n] ) >> PERCEPTUAL_MODEL_SLGAIN_SHIFT; + // iSLOffset = (iSLOffset > 0) ? iSLOffset : 0; + + /* Offset envelope by sensation level offset */ + piExcitation1[n] -= iSLOffset; + + /* Convert to loudness domain (x^0.3) */ + piExcitation1[n] = PERCEPTUAL_MODEL_ALPHA_SCALE * piExcitation1[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + } + + /* Spread excitation function */ + for ( n = 0; n < iMaxQuantBands; n++ ) + { + int32_t k; + const int32_t *piSpread; + + piSpread = &c_aaiSpreadFunction48[n * MAX_BANDS_48]; + piSMR1[n] = piExcitation1[n] + piSpread[n]; + for ( k = 0; k < iMaxQuantBands; k++ ) + { + if ( k != n ) + { + piSMR1[n] = LogAdd( piSMR1[n], piExcitation1[k] + piSpread[k] ); + } + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + if ( piMSFlags[n] == 1 ) + { + piSMR0[n] = ( piSMR0[n] > piSMR1[n] ) ? piSMR0[n] : piSMR1[n]; + piSMR1[n] = piSMR0[n]; + } + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR0[n] = PERCEPTUAL_MODEL_ALPHA_INV_SCALE * piSMR0[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + piSMR0[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope0[n] + c_aiBandwidthAdjust48[n] - piSMR0[n]; + } + + for ( n = 0; n < iMaxQuantBands; n++ ) + { + piSMR1[n] = PERCEPTUAL_MODEL_ALPHA_INV_SCALE * piSMR1[n] >> PERCEPTUAL_MODEL_ALPHA_SHIFT; + piSMR1[n] = PERCEPTUAL_MODEL_SCALE * piRMSEnvelope1[n] + c_aiBandwidthAdjust48[n] - piSMR1[n]; + } + + return; +} +#endif diff --git a/lib_rend/ivas_PredDecoder.c b/lib_rend/ivas_PredDecoder.c new file mode 100644 index 0000000000000000000000000000000000000000..abc78e894014d4f2e931fd5df7561235f39afa8a --- /dev/null +++ b/lib_rend/ivas_PredDecoder.c @@ -0,0 +1,337 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include "prot.h" +#include "ivas_prot_rend.h" +#include "ivas_lcld_prot.h" +#include "ivas_lcld_rom_tables.h" +#include "ivas_cldfb_codec_bitstream.h" +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * Function CreatePredictionDecoder() + * + * + *-------------------------------------------------------------------*/ + +ivas_error CreatePredictionDecoder( + PredictionDecoder **psPredictionDecoder_out, + const int32_t iChannels, + const int32_t iNumBlocks ) +{ + int16_t n; + + PredictionDecoder *psPredictionDecoder = NULL; + + if ( ( psPredictionDecoder = (PredictionDecoder *) malloc( sizeof( PredictionDecoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + psPredictionDecoder->iChannels = iChannels; + psPredictionDecoder->iNumBlocks = iNumBlocks; + + if ( ( psPredictionDecoder->piPredChanEnable = (int32_t *) malloc( sizeof( int32_t ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->piNumPredBands = (int32_t *) malloc( sizeof( int32_t ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psPredictionDecoder->ppfEstPredGain = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppiPredBandEnable = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppfA1Real = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppfA1Imag = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppiA1Mag = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppiA1Phase = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + for ( n = 0; n < psPredictionDecoder->iChannels; n++ ) + { + if ( ( psPredictionDecoder->ppfEstPredGain[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppiPredBandEnable[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppfA1Real[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppfA1Imag[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppiA1Mag[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psPredictionDecoder->ppiA1Phase[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + + /* pre-define these tables? */ + for ( n = 0; n < ( 1 << PRED_QUNAT_FILTER_MAG_BITS ); n++ ) + { + const float fInvMagScale = M_PI / ( 2.0f * (float) ( 1 << ( PRED_QUNAT_FILTER_MAG_BITS ) ) + 1.0f ); + psPredictionDecoder->pfMagLUT[n] = sinf( fInvMagScale * (float) n ); + } + + for ( n = 0; n < ( 1 << PRED_QUANT_FILTER_PHASE_BITS ); n++ ) + { + const float fInvPhaseScale = M_PI / (float) ( 1 << ( PRED_QUANT_FILTER_PHASE_BITS - 1 ) ); + int16_t iVal; + + iVal = n + PRED_QUANT_FILTER_PHASE_MIN; + psPredictionDecoder->pfP2RRealLUT[n] = cosf( fInvPhaseScale * (float) iVal ); + psPredictionDecoder->pfP2RImagLUT[n] = sinf( fInvPhaseScale * (float) iVal ); + } + + *psPredictionDecoder_out = psPredictionDecoder; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function DeletePredictionDecoder() + * + * + *-------------------------------------------------------------------*/ + +void DeletePredictionDecoder( + PredictionDecoder *psPredictionDecoder ) +{ + int32_t n; + + for ( n = 0; n < psPredictionDecoder->iChannels; n++ ) + { + free( psPredictionDecoder->ppfEstPredGain[n] ); + free( psPredictionDecoder->ppiPredBandEnable[n] ); + free( psPredictionDecoder->ppfA1Real[n] ); + free( psPredictionDecoder->ppfA1Imag[n] ); + free( psPredictionDecoder->ppiA1Mag[n] ); + free( psPredictionDecoder->ppiA1Phase[n] ); + } + free( psPredictionDecoder->piPredChanEnable ); + free( psPredictionDecoder->piNumPredBands ); + free( psPredictionDecoder->ppfEstPredGain ); + free( psPredictionDecoder->ppiPredBandEnable ); + free( psPredictionDecoder->ppfA1Real ); + free( psPredictionDecoder->ppfA1Imag ); + free( psPredictionDecoder->ppiA1Mag ); + free( psPredictionDecoder->ppiA1Phase ); + + free( psPredictionDecoder ); + psPredictionDecoder = NULL; + + return; +} + + +#define USE_TABLE_LOOKUP +/*-------------------------------------------------------------------* + * Function ReadPredictors() + * + * + *-------------------------------------------------------------------*/ + +int32_t ReadPredictors( + PredictionDecoder *psPredictionDecoder, + ivas_split_rend_bits_t *pBits ) +{ + int16_t iBitsRead = 0; + int32_t c; + + for ( c = 0; c < psPredictionDecoder->iChannels; c++ ) + { + psPredictionDecoder->piPredChanEnable[c] = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + + if ( psPredictionDecoder->piPredChanEnable[c] ) + { + int32_t b; + + for ( b = 0; b < LCLD_BANDS; b++ ) + { + psPredictionDecoder->ppiPredBandEnable[c][b] = 0; + } + psPredictionDecoder->piNumPredBands[c] = ivas_split_rend_bitstream_read_int32( pBits, 6 ); + iBitsRead += 6; + + for ( b = 0; b < psPredictionDecoder->piNumPredBands[c]; b++ ) + { + psPredictionDecoder->ppiPredBandEnable[c][b] = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + + if ( psPredictionDecoder->ppiPredBandEnable[c][b] == 1 ) + { +#ifdef USE_TABLE_LOOKUP + int32_t iA1Mag; + int32_t iA1Phase; + float fA1Real; + float fA1Imag; + iA1Mag = ivas_split_rend_bitstream_read_int32( pBits, PRED_QUNAT_FILTER_MAG_BITS ); + iBitsRead += PRED_QUNAT_FILTER_MAG_BITS; + iA1Phase = ivas_split_rend_bitstream_read_int32( pBits, PRED_QUANT_FILTER_PHASE_BITS ); + iBitsRead += PRED_QUANT_FILTER_PHASE_BITS; + + psPredictionDecoder->ppiA1Mag[c][b] = iA1Mag; + psPredictionDecoder->ppiA1Phase[c][b] = iA1Phase + PRED_QUANT_FILTER_PHASE_MIN; + + fA1Real = psPredictionDecoder->pfMagLUT[iA1Mag] * psPredictionDecoder->pfP2RRealLUT[iA1Phase]; + fA1Imag = psPredictionDecoder->pfMagLUT[iA1Mag] * psPredictionDecoder->pfP2RImagLUT[iA1Phase]; + + psPredictionDecoder->ppfA1Real[c][b] = fA1Real; + psPredictionDecoder->ppfA1Imag[c][b] = fA1Imag; +#else + const float fInvMagScale = M_PI / ( 2.0 * (float) ( 1 << ( PRED_QUNAT_FILTER_MAG_BITS ) ) + 1.0 ); + const float fInvPhaseScale = M_PI / (float) ( 1 << ( PRED_QUANT_FILTER_PHASE_BITS - 1 ) ); + int32_t iA1Mag; + int32_t iA1Phase; + float fA1Mag; + float fA1Phase; + float fA1Real; + float fA1Imag; + + iA1Mag = BSGetBits( psBSRead, PRED_QUNAT_FILTER_MAG_BITS ); + iBitsRead += PRED_QUNAT_FILTER_MAG_BITS; + + iA1Phase = BSGetBits( psBSRead, PRED_QUANT_FILTER_PHASE_BITS ); + iBitsRead += PRED_QUANT_FILTER_PHASE_BITS; + iA1Phase += PRED_QUANT_FILTER_PHASE_MIN; + + psPredictionDecoder->ppiA1Mag[c][b] = iA1Mag; + psPredictionDecoder->ppiA1Phase[c][b] = iA1Phase; + + fA1Mag = sinf( fInvMagScale * (float) iA1Mag ); + fA1Phase = fInvPhaseScale * (float) iA1Phase; + + fA1Real = fA1Mag * cosf( fA1Phase ); + fA1Imag = fA1Mag * sinf( fA1Phase ); + + psPredictionDecoder->ppfA1Real[c][b] = fA1Real; + psPredictionDecoder->ppfA1Imag[c][b] = fA1Imag; + + /* printf("Dec %f\t%f\t%f\n",fA1Real,fA1Imag,fA1Real * fA1Real + fA1Imag * fA1Imag); */ +#endif + } + } + } + else + { + int16_t b; + for ( b = 0; b < LCLD_BANDS; b++ ) + { + psPredictionDecoder->ppiPredBandEnable[c][b] = 0; + } + } + } + + return iBitsRead; +} + + +/*-------------------------------------------------------------------* + * Function ApplyInversePredictros() + * + * + *-------------------------------------------------------------------*/ + +void ApplyInversePredictros( + PredictionDecoder *psPredictionDecoder, + float ***pppfReal, + float ***pppfImag ) +{ + int32_t c; + for ( c = 0; c < psPredictionDecoder->iChannels; c++ ) + { + if ( psPredictionDecoder->piPredChanEnable[c] == 1 ) + { + int32_t b; + for ( b = 0; b < psPredictionDecoder->piNumPredBands[c]; b++ ) + { + if ( psPredictionDecoder->ppiPredBandEnable[c][b] == 1 ) + { + int32_t n; + float fA1Real; + float fA1Imag; + + fA1Real = psPredictionDecoder->ppfA1Real[c][b]; + fA1Imag = psPredictionDecoder->ppfA1Imag[c][b]; + for ( n = 1; n < psPredictionDecoder->iNumBlocks; n++ ) + { + float fReal; + float fImag; + + fReal = pppfReal[c][n][b] - fA1Real * pppfReal[c][n - 1][b] + fA1Imag * pppfImag[c][n - 1][b]; + fImag = pppfImag[c][n][b] - fA1Real * pppfImag[c][n - 1][b] - fA1Imag * pppfReal[c][n - 1][b]; + + pppfReal[c][n][b] = fReal; + pppfImag[c][n][b] = fImag; + } + } + } + } + } + + return; +} +#endif diff --git a/lib_rend/ivas_PredEncoder.c b/lib_rend/ivas_PredEncoder.c new file mode 100644 index 0000000000000000000000000000000000000000..59aa58129e944234024384f022280ca34d6caa9e --- /dev/null +++ b/lib_rend/ivas_PredEncoder.c @@ -0,0 +1,557 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include "ivas_lcld_prot.h" +#include "ivas_lcld_rom_tables.h" +#include "prot.h" +#include "ivas_prot_rend.h" +#include "ivas_cldfb_codec_bitstream.h" +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * Function CreatePredictionEncoder() + * + * + *-------------------------------------------------------------------*/ + +ivas_error CreatePredictionEncoder( + PredictionEncoder **psPredictionEncoder_out, + const int32_t iChannels, + const int32_t iNumBlocks ) +{ + int32_t k, n; + PredictionEncoder *psPredictionEncoder = NULL; + + if ( ( psPredictionEncoder = (PredictionEncoder *) malloc( sizeof( PredictionEncoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + psPredictionEncoder->iChannels = iChannels; + psPredictionEncoder->iNumBlocks = iNumBlocks; + + if ( ( psPredictionEncoder->pfWindow = (float *) malloc( sizeof( float ) * iNumBlocks ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + for ( n = 0; n < iNumBlocks; n++ ) + { + psPredictionEncoder->pfWindow[n] = 0.54f - 0.46f * cosf( 2.0f * M_PI * ( (float) n + 0.5f ) / (float) iNumBlocks ); + } + + if ( ( psPredictionEncoder->piPredChanEnable = (int32_t *) malloc( sizeof( int32_t ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + if ( ( psPredictionEncoder->piNumPredBands = (int32_t *) malloc( sizeof( int32_t ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + for ( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + psPredictionEncoder->piPredChanEnable[n] = 0; + psPredictionEncoder->piNumPredBands[n] = 40; // Will need to be set correctly + } + + if ( ( psPredictionEncoder->ppfEstPredGain = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfEstPredBitGain = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiPredBandEnable = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Real = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Imag = (float **) malloc( sizeof( float * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Mag = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Phase = (int32_t **) malloc( sizeof( int32_t * ) * iChannels ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + + for ( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + if ( ( psPredictionEncoder->ppfEstPredGain[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfEstPredBitGain[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiPredBandEnable[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Real[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppfA1Imag[n] = (float *) malloc( sizeof( float ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Mag[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + if ( ( psPredictionEncoder->ppiA1Phase[n] = (int32_t *) malloc( sizeof( int32_t ) * LCLD_BANDS ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD PredictionEncoder Module \n" ) ); + } + for ( k = 0; k < LCLD_BANDS; k++ ) + { + psPredictionEncoder->ppiPredBandEnable[n][k] = 0; + psPredictionEncoder->ppfA1Real[n][k] = 0.0; + psPredictionEncoder->ppfA1Imag[n][k] = 0.0; + } + } + + *psPredictionEncoder_out = psPredictionEncoder; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function DeletePredictionEncoder() + * + * + *-------------------------------------------------------------------*/ + +void DeletePredictionEncoder( + PredictionEncoder *psPredictionEncoder ) +{ + int32_t n; + + free( psPredictionEncoder->pfWindow ); + + for ( n = 0; n < psPredictionEncoder->iChannels; n++ ) + { + free( psPredictionEncoder->ppfEstPredGain[n] ); + free( psPredictionEncoder->ppfEstPredBitGain[n] ); + free( psPredictionEncoder->ppiPredBandEnable[n] ); + free( psPredictionEncoder->ppfA1Real[n] ); + free( psPredictionEncoder->ppfA1Imag[n] ); + free( psPredictionEncoder->ppiA1Mag[n] ); + free( psPredictionEncoder->ppiA1Phase[n] ); + } + free( psPredictionEncoder->piPredChanEnable ); + free( psPredictionEncoder->piNumPredBands ); + free( psPredictionEncoder->ppfEstPredGain ); + free( psPredictionEncoder->ppfEstPredBitGain ); + free( psPredictionEncoder->ppiPredBandEnable ); + free( psPredictionEncoder->ppfA1Real ); + free( psPredictionEncoder->ppfA1Imag ); + free( psPredictionEncoder->ppiA1Mag ); + free( psPredictionEncoder->ppiA1Phase ); + + free( psPredictionEncoder ); + + return; +} + + +//#define USE_RXX_WINDOW + +/*-------------------------------------------------------------------* + * Function ComputePredictors() + * + * + *-------------------------------------------------------------------*/ + +int32_t ComputePredictors( + PredictionEncoder *psPredictionEncoder, + float ***pppfReal, + float ***pppfImag ) +{ + int32_t c; + int32_t iPredictionBits = 0; + + for ( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + int32_t b; + psPredictionEncoder->piNumPredBands[c] = 50; + for ( b = 0; b < psPredictionEncoder->piNumPredBands[c]; b++ ) + { + int32_t n; + int32_t iNumBlocks; + float fGain = 0.0; + float fBitGain = 0.0; + float *pfRxxReal; + float *pfRxxImag; + float fA1Real; + float fA1Imag; + int32_t iA1Mag; + int32_t iA1Phase; + + iNumBlocks = psPredictionEncoder->iNumBlocks; + + pfRxxReal = psPredictionEncoder->pfRxxReal; + pfRxxImag = psPredictionEncoder->pfRxxImag; + + pfRxxReal[0] = 0.0; + pfRxxImag[0] = 0.0; + for ( n = 0; n < iNumBlocks; n++ ) + { +#ifdef USE_RXX_WINDOW + float fReal; + float fImag; + fReal = psPredictionEncoder->pfWindow[n] * pppfReal[c][n][b]; + fImag = psPredictionEncoder->pfWindow[n] * pppfImag[c][n][b]; + pfRxxReal[0] += ( fReal * fReal + fImag * fImag ); +#else + pfRxxReal[0] += ( pppfReal[c][n][b] * pppfReal[c][n][b] + pppfImag[c][n][b] * pppfImag[c][n][b] ); +#endif + } + + pfRxxReal[1] = 0.0; + pfRxxImag[1] = 0.0; + for ( n = 1; n < iNumBlocks; n++ ) + { +#ifdef USE_RXX_WINDOW + float fReal1; + float fImag1; + float fReal2; + float fImag2; + fReal1 = psPredictionEncoder->pfWindow[n] * pppfReal[c][n][b]; + fImag1 = psPredictionEncoder->pfWindow[n] * pppfImag[c][n][b]; + fReal2 = psPredictionEncoder->pfWindow[n - 1] * pppfReal[c][n - 1][b]; + fImag2 = psPredictionEncoder->pfWindow[n - 1] * pppfImag[c][n - 1][b]; + pfRxxReal[1] += ( fReal1 * fReal2 + fImag1 * fImag2 ); + pfRxxImag[1] += ( fImag1 * fReal2 - fReal1 * fImag2 ); +#else + pfRxxReal[1] += ( pppfReal[c][n][b] * pppfReal[c][n - 1][b] + pppfImag[c][n][b] * pppfImag[c][n - 1][b] ); + pfRxxImag[1] += ( pppfImag[c][n][b] * pppfReal[c][n - 1][b] - pppfReal[c][n][b] * pppfImag[c][n - 1][b] ); +#endif + } + + if ( pfRxxReal[0] > 1e-12f ) + { + float fA1Mag; + float fA1Phase; + float fGain2; + float fBitGain2; + + const float fMagScale = ( 2.0f * (float) ( 1 << ( PRED_QUNAT_FILTER_MAG_BITS ) ) + 1.0f ) / M_PI; + const float fInvMagScale = M_PI / ( 2.0f * (float) ( 1 << ( PRED_QUNAT_FILTER_MAG_BITS ) ) + 1.0f ); + const float fPhaseScale = (float) ( 1 << ( PRED_QUANT_FILTER_PHASE_BITS - 1 ) ) / M_PI; + const float fInvPhaseScale = M_PI / (float) ( 1 << ( PRED_QUANT_FILTER_PHASE_BITS - 1 ) ); + + /* Compute filter coefficeints */ + fA1Real = -pfRxxReal[1] / pfRxxReal[0]; + fA1Imag = -pfRxxImag[1] / pfRxxReal[0]; + + /* compute these before quant */ + /* Compute est coding gain based on quantized filter coefficients */ + fGain = 1.0f / ( 1.0f - fA1Real * fA1Real - fA1Imag * fA1Imag ); + fBitGain = 0.6f * log2f( fGain ) * (float) ( iNumBlocks ) - (float) ( PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS ); // Wrong fix (iNumBlocks-1) + + fA1Mag = sqrtf( fA1Real * fA1Real + fA1Imag * fA1Imag ); + fA1Mag = fMagScale * asinf( fA1Mag ); + iA1Mag = (int32_t) ( fA1Mag + 0.5f ); + iA1Mag = ( iA1Mag > PRED_QUANT_FILTER_MAG_MIN ) ? iA1Mag : PRED_QUANT_FILTER_MAG_MIN; + iA1Mag = ( iA1Mag < PRED_QUANT_FILTER_MAG_MAX ) ? iA1Mag : PRED_QUANT_FILTER_MAG_MAX; + fA1Mag = sinf( fInvMagScale * (float) iA1Mag ); + + fA1Phase = atan2f( fA1Imag, fA1Real ); + fA1Phase = fPhaseScale * fA1Phase; + iA1Phase = ( fA1Phase > 0.0f ) ? (int32_t) ( fA1Phase + 0.5f ) : (int32_t) ( fA1Phase - 0.5f ); + iA1Phase = ( iA1Phase > PRED_QUANT_FILTER_PHASE_MIN ) ? iA1Phase : PRED_QUANT_FILTER_PHASE_MIN; + iA1Phase = ( iA1Phase < PRED_QUANT_FILTER_PHASE_MAX ) ? iA1Phase : PRED_QUANT_FILTER_PHASE_MAX; // Is this the correct way to deal with this? should wrap? + fA1Phase = fInvPhaseScale * (float) iA1Phase; + + fA1Real = fA1Mag * cosf( fA1Phase ); + fA1Imag = fA1Mag * sinf( fA1Phase ); + + fGain2 = 1.0f / ( 1.0f - fA1Real * fA1Real - fA1Imag * fA1Imag ); + fBitGain2 = 0.6f * log2f( fGain ) * (float) ( iNumBlocks ) - (float) ( PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS ); // Wrong fix (iNumBlocks-1) + + fGain = ( fGain < fGain2 ) ? fGain : fGain2; + fBitGain = ( fBitGain < fBitGain2 ) ? fBitGain : fBitGain2; + } + else + { + psPredictionEncoder->ppfEstPredGain[c][b] = 0.0f; + fA1Real = 0.0f; + fA1Imag = 0.0f; + // iA1Real = 0; + // iA1Imag = 0; + iA1Mag = 0; + iA1Phase = 0; + fGain = -10.0f; // Fix this + } + + psPredictionEncoder->ppfEstPredGain[c][b] = fGain; + psPredictionEncoder->ppfEstPredBitGain[c][b] = fBitGain; + psPredictionEncoder->ppiPredBandEnable[c][b] = ( fBitGain > 0 ) ? 1 : 0; // Initial prediction enable + psPredictionEncoder->ppfA1Real[c][b] = fA1Real; + psPredictionEncoder->ppfA1Imag[c][b] = fA1Imag; + psPredictionEncoder->ppiA1Mag[c][b] = iA1Mag; + psPredictionEncoder->ppiA1Phase[c][b] = iA1Phase; + } +#if 0 + // Estimate if the savings outway the signaling cost + if(fChanPredictionGainBits > 1e20){//}(float)(psPredictionEncoder->piNumPredBands[c] + 6)){ + psPredictionEncoder->piPredChanEnable[c] = 1; + //printf("Prediction Enabled\n"); + iPredictionBits += 1; + iPredictionBits += 6; + for(b = 0; b < psPredictionEncoder->piNumPredBands[c]; b ++){ + iPredictionBits += 1; + if(psPredictionEncoder->ppiPredBandEnable[c][b] == 1){ + iPredictionBits += (PRED_QUANT_FILTER_BITS * 2); + printf("%f, ",(psPredictionEncoder->ppfEstPredGain[c][b])); + } + } + printf("\n"); + } + else{ + psPredictionEncoder->piPredChanEnable[c] = 0; + for(b = 0; b < psPredictionEncoder->piNumPredBands[c]; b ++){ + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + //printf("Prediction Disabled\n"); + iPredictionBits += 1; + } +#else + { + /*int32_t iDone; + int32_t iPredBands; + + iDone = 0; + iPredBands = 30; + while(iPredBands > 0 && iDone == 0){ + int32_t b; + float fBitGain; + + fBitGain = -7.0; + for(b = 0; b < iPredBands; b ++){ + fBitGain -= 1.0; + if(psPredictionEncoder->ppiPredBandEnable[c][b] == 1){ + fBitGain += psPredictionEncoder->ppfEstPredBitGain[c][b]; + } + } + if(fBitGain > 0.0){ //thresh + iDone ++; + } + else{ + iPredBands --; + } + }*/ + // int32_t b; + float fBestCost; + int32_t iPredBands; + float fBitGain; + + fBestCost = 0.0; + iPredBands = 0; + fBitGain = -7.0; + for ( b = 0; b < 30; b++ ) + { // still getting this decision wrong! + fBitGain -= 1.0; + if ( psPredictionEncoder->ppiPredBandEnable[c][b] == 1 ) + { + fBitGain += psPredictionEncoder->ppfEstPredBitGain[c][b]; + } + if ( fBitGain > fBestCost ) + { + fBestCost = fBitGain; + iPredBands = b; + } + } + + // printf("%d\t%f\n",iPredBands,fBestCost); + /*if(fBestCost < 300.0){ + iPredBands = 0; + }*/ + + if ( iPredBands > 0 ) + { + // int32_t b; + iPredictionBits += 1; + iPredictionBits += 6; + for ( b = 0; b < iPredBands; b++ ) + { + iPredictionBits += 1; + if ( psPredictionEncoder->ppiPredBandEnable[c][b] == 1 ) + { + iPredictionBits += ( PRED_QUNAT_FILTER_MAG_BITS + PRED_QUANT_FILTER_PHASE_BITS ); + } + } + for ( b = iPredBands; b < LCLD_BANDS; b++ ) + { + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + psPredictionEncoder->piPredChanEnable[c] = 1; + psPredictionEncoder->piNumPredBands[c] = iPredBands; + } + else + { + // int32_t b; + iPredictionBits += 1; + for ( b = 0; b < LCLD_BANDS; b++ ) + { + psPredictionEncoder->ppiPredBandEnable[c][b] = 0; + } + psPredictionEncoder->piPredChanEnable[c] = 0; + psPredictionEncoder->piNumPredBands[c] = 0; + } + } +#endif + } + + return iPredictionBits; +} + + +/*-------------------------------------------------------------------* + * Function ApplyForwardPredictors() + * + * + *-------------------------------------------------------------------*/ + +void ApplyForwardPredictors( + PredictionEncoder *psPredictionEncoder, + float ***pppfReal, + float ***pppfImag ) +{ + int32_t c; + for ( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + int32_t b; + if ( psPredictionEncoder->piPredChanEnable[c] == 1 ) + { + for ( b = 0; b < psPredictionEncoder->piNumPredBands[c]; b++ ) + { + if ( psPredictionEncoder->ppiPredBandEnable[c][b] == 1 ) + { + int32_t n; + float fOldReal; + float fOldImag; + float fA1Real; + float fA1Imag; + + fOldReal = pppfReal[c][0][b]; + fOldImag = pppfImag[c][0][b]; + fA1Real = psPredictionEncoder->ppfA1Real[c][b]; + fA1Imag = psPredictionEncoder->ppfA1Imag[c][b]; + for ( n = 1; n < psPredictionEncoder->iNumBlocks; n++ ) + { + float fReal; + float fImag; + + fReal = pppfReal[c][n][b] + fA1Real * fOldReal - fA1Imag * fOldImag; + fImag = pppfImag[c][n][b] + fA1Real * fOldImag + fA1Imag * fOldReal; + + fOldReal = pppfReal[c][n][b]; + fOldImag = pppfImag[c][n][b]; + + pppfReal[c][n][b] = fReal; + pppfImag[c][n][b] = fImag; + } + } + } + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function WritePredictors() + * + * + *-------------------------------------------------------------------*/ + +int32_t WritePredictors( + PredictionEncoder *psPredictionEncoder, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsWritten = 0; + int32_t c; + + for ( c = 0; c < psPredictionEncoder->iChannels; c++ ) + { + int32_t b; + ivas_split_rend_bitstream_write_int32( pBits, psPredictionEncoder->piPredChanEnable[c], 1 ); + iBitsWritten += 1; + + if ( psPredictionEncoder->piPredChanEnable[c] == 1 ) + { + ivas_split_rend_bitstream_write_int32( pBits, psPredictionEncoder->piNumPredBands[c], 6 ); + iBitsWritten += 6; + + for ( b = 0; b < psPredictionEncoder->piNumPredBands[c]; b++ ) + { + ivas_split_rend_bitstream_write_int32( pBits, psPredictionEncoder->ppiPredBandEnable[c][b], 1 ); + iBitsWritten += 1; + + if ( psPredictionEncoder->ppiPredBandEnable[c][b] == 1 ) + { + int32_t iA1Mag; + int32_t iA1Phase; + + iA1Mag = psPredictionEncoder->ppiA1Mag[c][b]; + iA1Phase = psPredictionEncoder->ppiA1Phase[c][b] - PRED_QUANT_FILTER_PHASE_MIN; + ivas_split_rend_bitstream_write_int32( pBits, iA1Mag, PRED_QUNAT_FILTER_MAG_BITS ); + iBitsWritten += PRED_QUNAT_FILTER_MAG_BITS; + ivas_split_rend_bitstream_write_int32( pBits, iA1Phase, PRED_QUANT_FILTER_PHASE_BITS ); + iBitsWritten += PRED_QUANT_FILTER_PHASE_BITS; + } + } + } + } + + return iBitsWritten; +} +#endif diff --git a/lib_rend/ivas_RMSEnvGrouping.c b/lib_rend/ivas_RMSEnvGrouping.c new file mode 100644 index 0000000000000000000000000000000000000000..770165ba6fb07d13cbba26733e9874f15d39bcff --- /dev/null +++ b/lib_rend/ivas_RMSEnvGrouping.c @@ -0,0 +1,951 @@ +/****************************************************************************************************** + + (C) 2022-2023 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. + +*******************************************************************************************************/ + +/* Double check cost function calculation */ + +#include +#include "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include "prot.h" +#include "ivas_prot_rend.h" +#include "ivas_lcld_prot.h" +#include "ivas_lcld_rom_tables.h" +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * Local ROM tables + * + * + *-------------------------------------------------------------------*/ + +static const float c_afThreshQuiet48[23] = { + -8.40653699e+01f, + -8.40653699e+01f, + -8.40653699e+01f, + -8.40653699e+01f, + -8.40653699e+01f, + -8.40653699e+01f, + -8.40653699e+01f, + -8.40653699e+01f, + -8.38067304e+01f, + -8.28409495e+01f, + -8.17031225e+01f, + -7.89799501e+01f, + -7.70607916e+01f, + -7.58484320e+01f, + -7.47976303e+01f, + -7.37491303e+01f, + -7.13163746e+01f, + -6.86144293e+01f, + -6.56295695e+01f, + -6.06521800e+01f, + -3.15408065e+01f, + -1.92542188e+01f, + -1.88401753e+01f, +}; + +static const float c_fiDefaultTheta48[MAX_BANDS_48] = { + 0.4375, + 0.4375, + 0.375, + 0.3125, + 0.3125, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, + 0.25, +}; + +typedef struct GMNODE +{ + int32_t iGroupStart; + int32_t iGroupLength; + float *pfMergedEnergydB; + int32_t *piQRMSEnvelope; + + int32_t iGroupRMSEnvelopeCost; + float fGroupSNRPenalty; + + struct GMNODE *psNext; +} GMNode; + +struct RMS_ENVELOPE_GROUPING +{ + int32_t iNumBlocks; + int32_t iMaxGroups; + float **ppfBandEnergy; + float **ppfBandEnergydB; + float **ppfWeight; + GMNode *psGMNodes; +}; + + +/*-------------------------------------------------------------------* + * Function CreateRMSEnvelopeGrouping() + * + * + *-------------------------------------------------------------------*/ + +RMSEnvelopeGrouping *CreateRMSEnvelopeGrouping( + const int32_t iNumBlocks ) +{ + int32_t n; + + RMSEnvelopeGrouping *psRMSEnvelopeGrouping; + + psRMSEnvelopeGrouping = (RMSEnvelopeGrouping *) malloc( sizeof( RMSEnvelopeGrouping ) ); + psRMSEnvelopeGrouping->iNumBlocks = iNumBlocks; + + psRMSEnvelopeGrouping->iMaxGroups = iNumBlocks >> 1; + + psRMSEnvelopeGrouping->ppfBandEnergy = (float **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( float * ) ); + psRMSEnvelopeGrouping->ppfBandEnergydB = (float **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( float * ) ); + psRMSEnvelopeGrouping->ppfWeight = (float **) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( float * ) ); + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + psRMSEnvelopeGrouping->ppfBandEnergy[n] = (float *) malloc( MAX_BANDS * 2 * sizeof( float ) ); /* 2 for stereo joint group calc */ + psRMSEnvelopeGrouping->ppfBandEnergydB[n] = (float *) malloc( MAX_BANDS * 2 * sizeof( float ) ); + psRMSEnvelopeGrouping->ppfWeight[n] = (float *) malloc( MAX_BANDS * 2 * sizeof( float ) ); + } + + psRMSEnvelopeGrouping->psGMNodes = (GMNode *) malloc( psRMSEnvelopeGrouping->iNumBlocks * sizeof( GMNode ) ); + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + psRMSEnvelopeGrouping->psGMNodes[n].pfMergedEnergydB = (float *) malloc( MAX_BANDS * 2 * sizeof( float ) ); + psRMSEnvelopeGrouping->psGMNodes[n].piQRMSEnvelope = (int32_t *) malloc( MAX_BANDS * 2 * sizeof( int32_t ) ); + psRMSEnvelopeGrouping->psGMNodes[n].iGroupRMSEnvelopeCost = -1; + psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty = -1.0; + } + + return psRMSEnvelopeGrouping; +} + + +/*-------------------------------------------------------------------* + * Function DeleteRMSEnvelopeGrouping() + * + * + *-------------------------------------------------------------------*/ + +void DeleteRMSEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping ) +{ + int32_t n; + + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + free( psRMSEnvelopeGrouping->ppfBandEnergy[n] ); + free( psRMSEnvelopeGrouping->ppfBandEnergydB[n] ); + free( psRMSEnvelopeGrouping->ppfWeight[n] ); + } + free( psRMSEnvelopeGrouping->ppfBandEnergy ); + free( psRMSEnvelopeGrouping->ppfBandEnergydB ); + free( psRMSEnvelopeGrouping->ppfWeight ); + + for ( n = 0; n < psRMSEnvelopeGrouping->iNumBlocks; n++ ) + { + free( psRMSEnvelopeGrouping->psGMNodes[n].pfMergedEnergydB ); + free( psRMSEnvelopeGrouping->psGMNodes[n].piQRMSEnvelope ); + } + free( psRMSEnvelopeGrouping->psGMNodes ); + + free( psRMSEnvelopeGrouping ); + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeBandEnergy() + * + * + *-------------------------------------------------------------------*/ + +static void ComputeBandEnergy( + const int32_t iChannels, + const int32_t iNumBlocks, + const int32_t iNumBands, + const int32_t *piBandwidths, + float ***pppfReal, + float ***pppfImag, + float **ppfBandEnergy, + float **ppfBandEnergydB, + float **ppfWeight ) +{ + int32_t n; + + for ( n = 0; n < iChannels; n++ ) + { + int32_t k; + int32_t iChanOffset; + + iChanOffset = n * iNumBands; + for ( k = 0; k < iNumBlocks; k++ ) + { + int32_t b; + int32_t iFBOffset; + float fMaxWeight; + + iFBOffset = 0; + fMaxWeight = 0.0f; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t m; + float fEnergy = 1e-12f; + float fWeight; + + for ( m = 0; m < piBandwidths[b]; m++ ) + { + fEnergy += ( pppfReal[n][k][iFBOffset] * pppfReal[n][k][iFBOffset] + pppfImag[n][k][iFBOffset] * pppfImag[n][k][iFBOffset] ); + iFBOffset++; + } + fEnergy /= (float) ( piBandwidths[b] ); // Correction removed normalization by 2 + ppfBandEnergy[k][iChanOffset + b] = fEnergy; + + fWeight = 0.33f * powf( 10.0f, 0.0068f * ( 10.0f * log10f( fEnergy ) - c_afThreshQuiet48[b] ) ); + fWeight = ( fWeight > 0.33f ) ? fWeight : 0.33f; + fWeight = ( fWeight < 1.0f ) ? fWeight : 1.0f; + fMaxWeight = ( fMaxWeight > fWeight ) ? fMaxWeight : fWeight; + ppfWeight[k][iChanOffset + b] = fWeight; + +#ifdef APPLY_TEMPORAL_SMOOTHING + if ( k > 0 ) + { + float fSmoothEnergy; + fSmoothEnergy = 0.7f * ppfBandEnergy[k - 1][iChanOffset + b] + 0.3f * fEnergy; + + fEnergy = ( fEnergy > fSmoothEnergy ) ? fEnergy : fSmoothEnergy; + } +#endif + fEnergy = 10.0f * log10f( fEnergy ); + ppfBandEnergydB[k][iChanOffset + b] = fEnergy; + } + for ( b = 0; b < iNumBands; b++ ) + { + ppfWeight[k][iChanOffset + b] /= fMaxWeight; + } + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function TryMerge() + * + * + *-------------------------------------------------------------------*/ + +/* THis is temporary cost function */ +static float TryMerge( + const int32_t iNumBands, + const int32_t iStartBlock, + const int32_t iGroupLength, + const float fMaxAllowedDiffdB, + float **ppfBandEnergy, + float **ppfBandEnergydB, +#ifdef APPLY_WEIGHT + float **ppfWeight, +#endif + float *pfMegredEnergydB ) +{ + int32_t b; + int32_t n; + float fMeanCost; + float fMaxCost; + float fMinDiffCost; + float fMaxDiffCost; + float fInvGroupSize = 1.0f / (float) iGroupLength; + float fInvNumBands = 1.0f / (float) iNumBands; + + for ( b = 0; b < iNumBands; b++ ) + { + float fGroupEnergy; + + + fGroupEnergy = 0.0; + for ( n = iStartBlock; n < ( iStartBlock + iGroupLength ); n++ ) + { + fGroupEnergy += ppfBandEnergy[n][b]; + } + fGroupEnergy *= fInvGroupSize; + fGroupEnergy = 10.0f * log10f( fGroupEnergy ); // Note epsolon was added when computing BandEnergy; + + pfMegredEnergydB[b] = fGroupEnergy; + } + + fMeanCost = 0.0; + fMaxCost = 0.0; + fMinDiffCost = 0.0; + fMaxDiffCost = 0.0; + for ( n = iStartBlock; n < ( iStartBlock + iGroupLength ); n++ ) + { + float fMeanAbsDiff; + float fMaxAbsDiff; + float fMaxDiff; + float fMinDiff; + + fMeanAbsDiff = 0.0; + fMaxAbsDiff = 0.0; + fMaxDiff = 0.0; + fMinDiff = 0.0; + for ( b = 0; b < iNumBands; b++ ) + { + float fDiff; + float fAbsDiff; + + fDiff = pfMegredEnergydB[b] - ppfBandEnergydB[n][b]; // Changed the order of this + fAbsDiff = fabsf( fDiff ); +#ifdef APPLY_WEIGHT + fAbsDiff *= ppfWeight[n][b]; +#endif + + fMeanAbsDiff += fAbsDiff; + fMaxAbsDiff = ( fMaxAbsDiff > fAbsDiff ) ? fMaxAbsDiff : fAbsDiff; + + + fMaxDiff = ( fMaxDiff > fDiff ) ? fMaxDiff : fDiff; + fMinDiff = ( fMinDiff < fDiff ) ? fMinDiff : fDiff; + } + fMeanAbsDiff *= fInvNumBands; + + fMeanCost = ( fMeanCost > fMeanAbsDiff ) ? fMeanCost : fMeanAbsDiff; + fMaxCost = ( fMaxCost > fMaxAbsDiff ) ? fMaxCost : fMaxAbsDiff; + + fMaxDiffCost = ( fMaxDiffCost > fMaxDiff ) ? fMaxDiffCost : fMaxDiff; + fMinDiffCost = ( fMinDiffCost < fMinDiff ) ? fMinDiffCost : fMinDiff; + } + + // printf("%f\t%f\t%f\t%f\n",fMeanCost,fMaxCost,fMaxDiffCost,fMinDiffCost); + + /*if(fMinDiffCost < -9.0){ // This prevents cliping + fMeanCost = 1e12; //Some large value + }*/ + + if ( fMaxCost > fMaxAllowedDiffdB ) + { + fMeanCost = 1e12f; // Some large value + } + + return fMeanCost; +} + + +/*-------------------------------------------------------------------* + * Function ComputeMergeRMS() + * + * + *-------------------------------------------------------------------*/ + +static void ComputeMergeRMS( + const int32_t iNumBands, + const int32_t iStartBlock, + const int32_t iGroupLength, + float **ppfBandEnergy, + float *pfMergedEnergydB, + int32_t *piQRMSEnvelope ) +{ + int32_t b; + float fInvGroupSize = 1.0f / (float) iGroupLength; + + for ( b = 0; b < iNumBands; b++ ) + { + int32_t n; + float fGroupEnergy; + float fRMSEnvelope; + int32_t iQRMSEnvelope; + + fGroupEnergy = 0.0; + for ( n = iStartBlock; n < ( iStartBlock + iGroupLength ); n++ ) + { + fGroupEnergy += ppfBandEnergy[n][b]; + } + fGroupEnergy *= fInvGroupSize; + + fRMSEnvelope = log2f( fGroupEnergy ); + iQRMSEnvelope = ( fRMSEnvelope > 0.0 ) ? (int32_t) ( fRMSEnvelope + 0.5 ) : (int32_t) ( fRMSEnvelope - 0.5 ); + + fGroupEnergy = 10.0f * log10f( fGroupEnergy ); // Note epsolon was added when computing BandEnergy; + + pfMergedEnergydB[b] = fGroupEnergy; + piQRMSEnvelope[b] = iQRMSEnvelope; + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeRMSEnvelopeBits() + * + * + *-------------------------------------------------------------------*/ + +static int32_t ComputeRMSEnvelopeBits( + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piQRMSEnevelope ) +{ + int32_t n; + int32_t iRMSEnvelopeBits = 0; + int32_t iChanOffset = 0; + + for ( n = 0; n < iChannels; n++ ) + { + int32_t b; + int32_t iLastRMSVal; + + iRMSEnvelopeBits += ENV0_BITS; + iLastRMSVal = piQRMSEnevelope[iChanOffset]; + for ( b = 1; b < iNumBands; b++ ) + { + int32_t iDelta; + + iDelta = piQRMSEnevelope[iChanOffset + b] - iLastRMSVal; + iDelta = ( iDelta > ENV_DELTA_MIN ) ? iDelta : ENV_DELTA_MIN; + iDelta = ( iDelta < ENV_DELTA_MAX ) ? iDelta : ENV_DELTA_MAX; + iDelta -= ENV_DELTA_MIN; + iRMSEnvelopeBits += c_aaiRMSEnvHuffEnc[iDelta][0]; + + iLastRMSVal = piQRMSEnevelope[iChanOffset + b]; + } + + iChanOffset += iNumBands; + } + + return iRMSEnvelopeBits; +} + + +/*-------------------------------------------------------------------* + * Function ComputeSNRPenalty() + * + * + *-------------------------------------------------------------------*/ + +static float ComputeSNRPenalty( + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t iStartBlock, + const int32_t iGroupLength, + float **ppfBandEnergydB, + const int32_t *piRMSEnvelope ) +{ + int32_t n; + int32_t iChanOffset; + float fSNRPenalty = 0.0; + + iChanOffset = 0; + for ( n = 0; n < iChannels; n++ ) + { + int32_t b; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t k; + float fRMSVal; + + fRMSVal = 3.0103f * (float) piRMSEnvelope[iChanOffset + b]; + + for ( k = iStartBlock; k < ( iStartBlock + iGroupLength ); k++ ) + { + float fDeltadB; + + fDeltadB = fRMSVal - ppfBandEnergydB[k][iChanOffset + b]; + if ( fDeltadB < -9.0309f ) + { + fSNRPenalty += 1e10f; // Some large number to prevent clipping + } + else /*if(fDeltadB < 0.0)*/ + { + fSNRPenalty += fabsf( c_fiDefaultTheta48[b] * fDeltadB - fDeltadB ) * 2.0f * (float) piBandwidths[b] / 6.0f; + } + } + } + + iChanOffset += iNumBands; + } + + return fSNRPenalty; +} + + +/*-------------------------------------------------------------------* + * Function TryMerge2() + * + * + *-------------------------------------------------------------------*/ + +static float TryMerge2( + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, + float **ppfBandEnergy, + float **ppfBandEnergydB, + GMNode *psGMNode1, + GMNode *psGMNode2 ) +{ + int32_t iRMSEnvBits1; + int32_t iRMSEnvBits2; + int32_t iRMSEnvBitsMerged; + float fSNRPenalty1; + float fSNRPenalty2; + float fSNRPenaltyMerged; + float fMergedCost = 0.0; + + /* First compute current RMS Envelope for each group */ + if ( psGMNode1->iGroupRMSEnvelopeCost == -1 || psGMNode1->fGroupSNRPenalty == -1.0 ) + { + ComputeMergeRMS( iNumBands * iChannels, psGMNode1->iGroupStart, psGMNode1->iGroupLength, ppfBandEnergy, psGMNode1->pfMergedEnergydB, psGMNode1->piQRMSEnvelope ); + + iRMSEnvBits1 = ComputeRMSEnvelopeBits( iChannels, iNumBands, psGMNode1->piQRMSEnvelope ); + + fSNRPenalty1 = ComputeSNRPenalty( iChannels, iNumBands, piBandwidths, psGMNode1->iGroupStart, psGMNode1->iGroupLength, ppfBandEnergydB, psGMNode1->piQRMSEnvelope ); + + psGMNode1->iGroupRMSEnvelopeCost = iRMSEnvBits1; + psGMNode1->fGroupSNRPenalty = fSNRPenalty1; + } + else + { + iRMSEnvBits1 = psGMNode1->iGroupRMSEnvelopeCost; + fSNRPenalty1 = psGMNode1->fGroupSNRPenalty; + } + + if ( psGMNode2->iGroupRMSEnvelopeCost == -1 || psGMNode2->fGroupSNRPenalty == -1.0 ) + { + ComputeMergeRMS( iNumBands * iChannels, psGMNode2->iGroupStart, psGMNode2->iGroupLength, ppfBandEnergy, psGMNode2->pfMergedEnergydB, psGMNode2->piQRMSEnvelope ); + + iRMSEnvBits2 = ComputeRMSEnvelopeBits( iChannels, iNumBands, psGMNode2->piQRMSEnvelope ); + + fSNRPenalty2 = ComputeSNRPenalty( iChannels, iNumBands, piBandwidths, psGMNode2->iGroupStart, psGMNode2->iGroupLength, ppfBandEnergydB, psGMNode2->piQRMSEnvelope ); + + psGMNode2->iGroupRMSEnvelopeCost = iRMSEnvBits2; + psGMNode2->fGroupSNRPenalty = fSNRPenalty2; + } + else + { + iRMSEnvBits2 = psGMNode2->iGroupRMSEnvelopeCost; + fSNRPenalty2 = psGMNode2->fGroupSNRPenalty; + } + + /* Compute the merged group */ + ComputeMergeRMS( iNumBands * iChannels, psGMNode1->iGroupStart, psGMNode1->iGroupLength + psGMNode2->iGroupLength, ppfBandEnergy, psGMNode1->pfMergedEnergydB, psGMNode1->piQRMSEnvelope ); + + /* Compute the RMS Envelope cost for merged group */ + iRMSEnvBitsMerged = ComputeRMSEnvelopeBits( iChannels, iNumBands, psGMNode1->piQRMSEnvelope ); + + /* Compute an approximation of the bit cost based on SNR increase/decrease due to merging */ + fSNRPenaltyMerged = ComputeSNRPenalty( iChannels, iNumBands, piBandwidths, psGMNode1->iGroupStart, psGMNode1->iGroupLength + psGMNode2->iGroupLength, ppfBandEnergydB, psGMNode1->piQRMSEnvelope ); + + fMergedCost = fSNRPenaltyMerged - fSNRPenalty1 - fSNRPenalty2 + (float) iRMSEnvBitsMerged - (float) iRMSEnvBits1 - (float) iRMSEnvBits2; + + return fMergedCost; +} + + +/*-------------------------------------------------------------------* + * Function ComputeGreedyGroups() + * + * + *-------------------------------------------------------------------*/ + +static void ComputeGreedyGroups( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const float fMeanAllowedDiffdB, + const float fMaxAllowedDiffdB ) +{ + float fBestMeanCost; + + fBestMeanCost = 0.0; + while ( fBestMeanCost < fMeanAllowedDiffdB ) + { + GMNode *psGMNode; + GMNode *psBestGMNode; + + fBestMeanCost = fMeanAllowedDiffdB; + psGMNode = &psRMSEnvelopeGrouping->psGMNodes[0]; + psBestGMNode = NULL; + while ( psGMNode->psNext != NULL ) + { + float fMeanCost; + int32_t iGroupLength; + + iGroupLength = psGMNode->iGroupLength + psGMNode->psNext->iGroupLength; + + fMeanCost = TryMerge( iNumBands * iChannels, + psGMNode->iGroupStart, + iGroupLength, // psGMNode->iGroupLength, //Fix this bug + fMaxAllowedDiffdB, + psRMSEnvelopeGrouping->ppfBandEnergy, + psRMSEnvelopeGrouping->ppfBandEnergydB, +#ifdef APPLY_WEIGHT + psRMSEnvelopeGrouping->ppfWeight, +#endif + psGMNode->pfMergedEnergydB ); + + + if ( fMeanCost < fBestMeanCost ) + { + fBestMeanCost = fMeanCost; + psBestGMNode = psGMNode; + } + + psGMNode = psGMNode->psNext; + } + + if ( fBestMeanCost < fMeanAllowedDiffdB && psBestGMNode != NULL && psBestGMNode->psNext != NULL ) + { + psBestGMNode->iGroupLength += psBestGMNode->psNext->iGroupLength; + psBestGMNode->psNext = psBestGMNode->psNext->psNext; + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeGreedyGroups2() + * + * + *-------------------------------------------------------------------*/ + +static void ComputeGreedyGroups2( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths ) +{ + float fBestMergeCost; + // int32_t iDone = 0; + fBestMergeCost = -1.0; + + while ( fBestMergeCost < 0.0 ) + { + GMNode *psGMNode; + GMNode *psBestGMNode; + + fBestMergeCost = 0.0; + psGMNode = &psRMSEnvelopeGrouping->psGMNodes[0]; + psBestGMNode = NULL; + while ( psGMNode->psNext != NULL ) + { + float fMergeCost; + + fMergeCost = TryMerge2( iChannels, iNumBands, piBandwidths, psRMSEnvelopeGrouping->ppfBandEnergy, psRMSEnvelopeGrouping->ppfBandEnergydB, psGMNode, psGMNode->psNext ); + + if ( fMergeCost < fBestMergeCost ) + { + fBestMergeCost = fMergeCost; + psBestGMNode = psGMNode; + } + + psGMNode = psGMNode->psNext; + } + + if ( fBestMergeCost < 0.0 && psBestGMNode != NULL && psBestGMNode->psNext != NULL ) + { + psBestGMNode->iGroupLength += psBestGMNode->psNext->iGroupLength; + psBestGMNode->iGroupRMSEnvelopeCost = -1; + psBestGMNode->fGroupSNRPenalty = -1.0; + psBestGMNode->psNext = psBestGMNode->psNext->psNext; + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeGreedyGroups3() + * + * + *-------------------------------------------------------------------*/ + +static void ComputeGreedyGroups3( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t iMaxGroups ) +{ + + int32_t iDone = 0; + int32_t iNumGroups = psRMSEnvelopeGrouping->iMaxGroups; + + while ( iDone == 0 ) + { + GMNode *psGMNode; + GMNode *psBestGMNode; + float fBestMergeCost; + + fBestMergeCost = 1e20f; + psGMNode = &psRMSEnvelopeGrouping->psGMNodes[0]; + psBestGMNode = NULL; + while ( psGMNode->psNext != NULL ) + { + float fMergeCost; + + fMergeCost = TryMerge2( iChannels, iNumBands, piBandwidths, psRMSEnvelopeGrouping->ppfBandEnergy, psRMSEnvelopeGrouping->ppfBandEnergydB, psGMNode, psGMNode->psNext ); + + if ( fMergeCost < fBestMergeCost ) + { + fBestMergeCost = fMergeCost; + psBestGMNode = psGMNode; + } + + psGMNode = psGMNode->psNext; + } + + if ( fBestMergeCost > 0.0 && iNumGroups <= iMaxGroups ) + { + iDone++; + } + else if ( psBestGMNode != NULL && psBestGMNode->psNext != NULL ) + { + psBestGMNode->iGroupLength += psBestGMNode->psNext->iGroupLength; + psBestGMNode->iGroupRMSEnvelopeCost = -1; + psBestGMNode->fGroupSNRPenalty = -1.0; + psBestGMNode->psNext = psBestGMNode->psNext->psNext; + iNumGroups--; + } + else + { + iDone++; // This only catches a problem + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeRMSEnvelope() + * + * + *-------------------------------------------------------------------*/ + +static void ComputeRMSEnvelope( + const int32_t iChannels, + const int32_t iNumBands, + const int32_t iNumGroups, + const int32_t *piGroupLengths, + float **ppfBandEnergy, + int32_t ***pppiRMSEnvelope ) +{ + int32_t n; + + for ( n = 0; n < iChannels; n++ ) + { + int32_t b; + int32_t iChanOffset; + + iChanOffset = n * iNumBands; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t k; + int32_t iBlockOffset; + + iBlockOffset = 0; + for ( k = 0; k < iNumGroups; k++ ) + { + int32_t m; + float fGroupEnergy; + fGroupEnergy = 0.0; + for ( m = 0; m < piGroupLengths[k]; m++ ) + { + fGroupEnergy += ppfBandEnergy[iBlockOffset][b + iChanOffset]; + iBlockOffset++; + } + fGroupEnergy /= (float) piGroupLengths[k]; + + fGroupEnergy = log2f( fGroupEnergy ); + pppiRMSEnvelope[n][k][b] = ( fGroupEnergy > 0.0 ) ? (int32_t) ( fGroupEnergy + 0.5 ) : (int32_t) ( fGroupEnergy - 0.5 ); // Bug fix + pppiRMSEnvelope[n][k][b] = ( pppiRMSEnvelope[n][k][b] > ENV_MIN ) ? pppiRMSEnvelope[n][k][b] : ENV_MIN; + pppiRMSEnvelope[n][k][b] = ( pppiRMSEnvelope[n][k][b] < ENV_MAX ) ? pppiRMSEnvelope[n][k][b] : ENV_MAX; + } + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function LimitRMSEnvelope() + * + * + *-------------------------------------------------------------------*/ + +static void LimitRMSEnvelope( + const int32_t iBandCount, + const int32_t iRMSDeltaMax, + const int32_t iRMSDeltaMin, + int32_t *piRMSEnvelope ) +{ + int32_t iBand; + int32_t iLastSCF; + + /* Increase low envelope values to ensure that the scale factors traces the large values correctly (checking for max deltas) */ + iLastSCF = piRMSEnvelope[iBandCount - 1]; + for ( iBand = iBandCount - 2; iBand > -1; iBand-- ) + { + int32_t iDelta; + + iDelta = iLastSCF - piRMSEnvelope[iBand]; + + if ( iDelta > iRMSDeltaMax ) + { +#ifdef DEBUG_VERBOSE + printf( "WARNING RMS envelope delta limited\n" ); +#endif + piRMSEnvelope[iBand] += ( iDelta - iRMSDeltaMax ); + } + + iLastSCF = piRMSEnvelope[iBand]; + } + + /* Increase low envelope values to ensure that the envelope traces the large values correctly (checking for min deltas)*/ + iLastSCF = piRMSEnvelope[0]; + for ( iBand = 1; iBand < iBandCount; iBand++ ) + { + int32_t iDelta; + + iDelta = piRMSEnvelope[iBand] - iLastSCF; + + if ( iDelta < iRMSDeltaMin ) + { +#ifdef DEBUG_VERBOSE + printf( "WARNING RMS envelope delta limited\n" ); +#endif + piRMSEnvelope[iBand] += ( iRMSDeltaMin - iDelta ); + } + + iLastSCF = piRMSEnvelope[iBand]; + } + + return; +} + + +/*-------------------------------------------------------------------* + * Function ComputeEnvelopeGrouping() + * + * + *-------------------------------------------------------------------*/ + +void ComputeEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, // pass in absolute thresh + float ***pppfReal, + float ***pppfImag, + int32_t *piNumGroups, + int32_t *piGroupLengths, + int32_t ***pppiRMSEnvelope ) +{ + int32_t n; + GMNode *psGMNode; + + /* Compute Band Energies */ + ComputeBandEnergy( iChannels, psRMSEnvelopeGrouping->iNumBlocks, iNumBands, piBandwidths, pppfReal, pppfImag, psRMSEnvelopeGrouping->ppfBandEnergy, psRMSEnvelopeGrouping->ppfBandEnergydB, psRMSEnvelopeGrouping->ppfWeight ); + + /* Init GMNodes */ + psRMSEnvelopeGrouping->psGMNodes[0].iGroupStart = 0; + psRMSEnvelopeGrouping->psGMNodes[0].iGroupLength = 2; + psRMSEnvelopeGrouping->psGMNodes[0].psNext = NULL; + psRMSEnvelopeGrouping->psGMNodes[0].iGroupRMSEnvelopeCost = -1; + psRMSEnvelopeGrouping->psGMNodes[0].fGroupSNRPenalty = -1.0f; + + for ( n = 1; n < psRMSEnvelopeGrouping->iMaxGroups; n++ ) + { + psRMSEnvelopeGrouping->psGMNodes[n - 1].psNext = &psRMSEnvelopeGrouping->psGMNodes[n]; + psRMSEnvelopeGrouping->psGMNodes[n].iGroupStart = n * 2; + psRMSEnvelopeGrouping->psGMNodes[n].iGroupLength = 2; + psRMSEnvelopeGrouping->psGMNodes[n].iGroupRMSEnvelopeCost = -1; + psRMSEnvelopeGrouping->psGMNodes[n].fGroupSNRPenalty = -1.0; + psRMSEnvelopeGrouping->psGMNodes[n].psNext = NULL; + } + + /* Perform grouping via Greedy Merge */ + + /* ComputeGreedyGroups2( psRMSEnvelopeGrouping, iChannels, iNumBands, piBandwidths );*/ + + /* Allows control over max groups can call using 16 if want same as previous call */ + ComputeGreedyGroups3( psRMSEnvelopeGrouping, iChannels, iNumBands, piBandwidths, LCLD_BLOCKS_PER_FRAME ); + + /* Calc Groups from Merge Results */ + *piNumGroups = 0; + psGMNode = &psRMSEnvelopeGrouping->psGMNodes[0]; + while ( psGMNode != NULL ) + { + piGroupLengths[*piNumGroups] = psGMNode->iGroupLength; + *piNumGroups += 1; + psGMNode = psGMNode->psNext; + } + + /* Compute RMS Envelope given group lengths */ + ComputeRMSEnvelope( iChannels, iNumBands, *piNumGroups, piGroupLengths, psRMSEnvelopeGrouping->ppfBandEnergy, pppiRMSEnvelope ); + + /* Envelope Tenting */ + for ( n = 0; n < iChannels; n++ ) + { + int32_t k; + for ( k = 0; k < *piNumGroups; k++ ) + { + LimitRMSEnvelope( iNumBands, ENV_DELTA_MAX, ENV_DELTA_MIN, pppiRMSEnvelope[n][k] ); + } + } + + return; +} +#endif diff --git a/lib_rend/ivas_cldfb_codec_bitstream.c b/lib_rend/ivas_cldfb_codec_bitstream.c new file mode 100644 index 0000000000000000000000000000000000000000..0b8126c7c545c4237f10c173bfee0ad9d8d19b7c --- /dev/null +++ b/lib_rend/ivas_cldfb_codec_bitstream.c @@ -0,0 +1,194 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "ivas_cldfb_codec_bitstream.h" +#include +#include "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include +#include "prot.h" +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------------------------* + * Local ROM tables + *------------------------------------------------------------------------------------------*/ + +static const uint32_t MASKS[] = { + 0x00000000, + 0x00000001, + 0x00000003, + 0x00000007, + 0x0000000f, + 0x0000001f, + 0x0000003f, + 0x0000007f, + 0x000000ff, + 0x000001ff, + 0x000003ff, + 0x000007ff, + 0x00000fff, + 0x00001fff, + 0x00003fff, + 0x00007fff, + 0x0000ffff, + 0x0001ffff, + 0x0003ffff, + 0x0007ffff, + 0x000fffff, + 0x001fffff, + 0x003fffff, + 0x007fffff, + 0x00ffffff, + 0x01ffffff, + 0x03ffffff, + 0x07ffffff, + 0x0fffffff, + 0x1fffffff, + 0x3fffffff, + 0x7fffffff, +}; + + +/*------------------------------------------------------------------------------------------* + * Function BSPutBits() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t BSPutBits( + Bitstream *psBitstream, + int32_t iValue, + int32_t iBitCount ) +{ + iValue &= MASKS[iBitCount]; + while ( iBitCount ) + { + int32_t iByte; + int32_t iRem; + int32_t iShift; + + iByte = psBitstream->iIndex >> 3; + iRem = 8 - ( psBitstream->iIndex - ( iByte << 3 ) ); /* 8 - psBitstream->iIndex & 0x7; */ + + iShift = iBitCount - iRem; + if ( iShift <= 0 ) + { + iShift *= -1; + psBitstream->puchBuffer[iByte] += (uint8_t) ( iValue << iShift ); + psBitstream->iIndex += iBitCount; + iBitCount = 0; + } + else + { + psBitstream->puchBuffer[iByte] += (uint8_t) ( iValue >> iShift ); + iValue &= MASKS[iShift]; + psBitstream->iIndex += iRem; + iBitCount -= iRem; + } + } + + if ( psBitstream->iDirection != BS_WRITE ) + { + psBitstream->iError = BS_ERROR_FAIL; + } + + return psBitstream->iError; +} + + +/*------------------------------------------------------------------------------------------* + * Function BSGetBits() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t BSGetBits( + Bitstream *psBitstream, + int32_t iBitCount ) +{ + int32_t iValue = 0; + + while ( iBitCount ) + { + uint8_t uchByte; + int32_t iByte; + int32_t iRem; + int32_t iShift; + + iByte = psBitstream->iIndex >> 3; + iRem = 8 - ( psBitstream->iIndex - ( iByte << 3 ) ); /* 8 - psBitstream->iIndex & 0x7; */ + uchByte = psBitstream->puchBuffer[iByte]; + iShift = iBitCount - iRem; + + if ( iShift <= 0 ) + { + iShift *= -1; + iValue += (int32_t) ( ( uchByte >> iShift ) & MASKS[iBitCount] ); + psBitstream->iIndex += iBitCount; + iBitCount = 0; + } + else + { + uchByte &= MASKS[iRem]; + iValue += ( ( (int32_t) uchByte ) << iShift ); + psBitstream->iIndex += iRem; + iBitCount -= iRem; + } + } + + if ( psBitstream->iDirection != BS_READ ) + { + psBitstream->iError = BS_ERROR_FAIL; + } + + return iValue; +} + + +/*------------------------------------------------------------------------------------------* + * Function BSForceBack() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t BSForceBack( + ivas_split_rend_bits_t *pBits, + int32_t iValue, + int32_t iBitCount ) +{ + pBits->bits_read -= iBitCount; + + return ( iValue >> iBitCount ); +} +#endif diff --git a/lib_rend/ivas_cldfb_codec_bitstream.h b/lib_rend/ivas_cldfb_codec_bitstream.h new file mode 100644 index 0000000000000000000000000000000000000000..1ca49b1edab7baf37a8c15e6ad7b9eb123d3deff --- /dev/null +++ b/lib_rend/ivas_cldfb_codec_bitstream.h @@ -0,0 +1,82 @@ +/****************************************************************************************************** + + (C) 2022-2023 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_CLDFB_CODEC_BITSTREAM_H_ +#define _IVAS_CLDFB_CODEC_BITSTREAM_H_ + +#include "lib_rend.h" +#include "ivas_prot_rend.h" +#include "options.h" + +#ifdef SPLIT_REND_WITH_HEAD_ROT + +// ToDo: file can be removed if SIMPLE_PHASE is removed + +enum +{ + BS_READ, + BS_WRITE +}; + +enum +{ + BS_ERROR_NONE, + BS_ERROR_FAIL +}; + +typedef struct BITSTREAM +{ + int32_t iMaxBuffer; + int32_t iDirection; + int32_t iBufferEnd; + int32_t iBufferStart; + int32_t iIndex; + int32_t iError; + uint8_t *puchBuffer; +} Bitstream; + +int32_t BSPutBits( + Bitstream *psBitstream, + int32_t iValue, + int32_t iBitCount ); + +int32_t BSGetBits( + Bitstream *psBitstream, + int32_t iBitCount ); + +int32_t BSForceBack( + ivas_split_rend_bits_t *pBits, + int32_t iValue, + int32_t iBitCount ); + +#endif +#endif /* _BITSTREAM_H_ */ diff --git a/lib_rend/ivas_crend.c b/lib_rend/ivas_crend.c index b2b488749952f4a748bd0cab3d294e4849f31bb6..6c0ca0e73a67480cc66b80ddfd292e33406c0923 100644 --- a/lib_rend/ivas_crend.c +++ b/lib_rend/ivas_crend.c @@ -53,7 +53,7 @@ * Initialize hHrtf handle *------------------------------------------------------------------------*/ -static ivas_error ivas_hrtf_init( +ivas_error ivas_hrtf_init( HRTFS_DATA *hHrtf /* i/o: HRTF handle */ ) { @@ -155,8 +155,8 @@ static ivas_error ivas_hrtf_close( static ivas_error ivas_rend_initCrend( CREND_WRAPPER *pCrend, - const AUDIO_CONFIG inIvasConfig, - const AUDIO_CONFIG outIvasConfig, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, HRTFS_CREND_HANDLE hSetOfHRTF, const int32_t output_Fs ) { @@ -165,11 +165,6 @@ static ivas_error ivas_rend_initCrend( IVAS_REND_AudioConfigType inConfigType; HRTFS_HANDLE hHrtf; ivas_error error; - IVAS_REND_AudioConfig inConfig; - IVAS_REND_AudioConfig outConfig; - - inConfig = getRendAudioConfigFromIvasAudioConfig( inIvasConfig ); - outConfig = getRendAudioConfigFromIvasAudioConfig( outIvasConfig ); inConfigType = getAudioConfigType( inConfig ); hHrtf = pCrend->hHrtfCrend; @@ -180,7 +175,11 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Encountered unsupported input config in Crend" ); } - if ( outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL && outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR && outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( outConfig != AUDIO_CONFIG_BINAURAL && outConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR && outConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB +#ifdef SPLIT_REND_WITH_HEAD_ROT + && outConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && outConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Encountered unsupported output type in Crend" ); } @@ -193,7 +192,6 @@ static ivas_error ivas_rend_initCrend( } } - if ( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ) != IVAS_ERR_OK ) { return error; @@ -214,7 +212,7 @@ static ivas_error ivas_rend_initCrend( if ( output_Fs == 48000 ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s; hHrtf->max_num_iterations = CRendBin_Combined_BRIR_max_num_iterations_48kHz; @@ -229,7 +227,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->num_iterations_diffuse[j] = CRendBin_Combined_BRIR_num_iterations_diffuse_48kHz[j]; hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_48kHz[j]; @@ -247,7 +245,7 @@ static ivas_error ivas_rend_initCrend( } else if ( output_Fs == 32000 ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s; hHrtf->max_num_iterations = CRendBin_Combined_BRIR_max_num_iterations_32kHz; @@ -262,7 +260,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->num_iterations_diffuse[j] = CRendBin_Combined_BRIR_num_iterations_diffuse_32kHz[j]; hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_32kHz[j]; @@ -280,7 +278,7 @@ static ivas_error ivas_rend_initCrend( } else if ( output_Fs == 16000 ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->latency_s = CRendBin_Combined_BRIR_latency_s; hHrtf->max_num_iterations = CRendBin_Combined_BRIR_max_num_iterations_16kHz; @@ -295,7 +293,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->num_iterations_diffuse[j] = CRendBin_Combined_BRIR_num_iterations_diffuse_16kHz[j]; hHrtf->pIndex_frequency_max_diffuse[j] = CRendBin_Combined_BRIR_pIndex_frequency_max_diffuse_16kHz[j]; @@ -318,23 +316,23 @@ static ivas_error ivas_rend_initCrend( for ( i = 0; i < hHrtf->max_num_ir; i++ ) { - if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 ) + if ( inConfig == AUDIO_CONFIG_5_1 ) { tmp = channelIndex_CICP6[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) + else if ( inConfig == AUDIO_CONFIG_7_1 ) { tmp = channelIndex_CICP12[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1_2 ) + else if ( inConfig == AUDIO_CONFIG_5_1_2 ) { tmp = channelIndex_CICP14[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1_4 ) + else if ( inConfig == AUDIO_CONFIG_5_1_4 ) { tmp = channelIndex_CICP16[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_7_1_4 ) + else if ( inConfig == AUDIO_CONFIG_7_1_4 ) { tmp = channelIndex_CICP19[i]; } @@ -345,7 +343,7 @@ static ivas_error ivas_rend_initCrend( if ( output_Fs == 48000 ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_48kHz[tmp]; } @@ -356,7 +354,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { 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]; @@ -374,7 +372,7 @@ static ivas_error ivas_rend_initCrend( } else if ( output_Fs == 32000 ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_32kHz[tmp]; } @@ -385,7 +383,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { 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]; @@ -403,7 +401,7 @@ static ivas_error ivas_rend_initCrend( } else if ( output_Fs == 16000 ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->inv_diffuse_weight[i] = CRendBin_Combined_BRIR_inv_diffuse_weight_16kHz[tmp]; } @@ -414,7 +412,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { 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]; @@ -438,7 +436,7 @@ static ivas_error ivas_rend_initCrend( } else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) { - if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA3 ) + if ( inConfig == AUDIO_CONFIG_HOA3 ) { if ( output_Fs == 48000 ) { @@ -525,7 +523,7 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Encountered Unsupported sampling rate in Crend" ); } } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA2 ) + else if ( inConfig == AUDIO_CONFIG_HOA2 ) { if ( output_Fs == 48000 ) { @@ -612,7 +610,7 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERROR( IVAS_ERR_INVALID_SAMPLING_RATE, "Encountered Unsupported sampling rate in Crend" ); } } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_FOA ) + else if ( inConfig == AUDIO_CONFIG_FOA ) { if ( output_Fs == 48000 ) { @@ -716,7 +714,7 @@ static ivas_error ivas_rend_initCrend( hHrtf->max_num_ir -= 1; /* subtract LFE */ hHrtf->gain_lfe = GAIN_LFE; - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->latency_s = hSetOfHRTF->hHRTF_brir_combined->latency_s; hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_brir_combined->max_num_iterations; @@ -731,7 +729,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->num_iterations_diffuse[j] = hSetOfHRTF->hHRTF_brir_combined->num_iterations_diffuse[j]; hHrtf->pIndex_frequency_max_diffuse[j] = hSetOfHRTF->hHRTF_brir_combined->pIndex_frequency_max_diffuse[j]; @@ -749,23 +747,23 @@ static ivas_error ivas_rend_initCrend( for ( i = 0; i < hHrtf->max_num_ir; i++ ) { - if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 ) + if ( inConfig == AUDIO_CONFIG_5_1 ) { tmp = channelIndex_CICP6[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) + else if ( inConfig == AUDIO_CONFIG_7_1 ) { tmp = channelIndex_CICP12[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1_2 ) + else if ( inConfig == AUDIO_CONFIG_5_1_2 ) { tmp = channelIndex_CICP14[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1_4 ) + else if ( inConfig == AUDIO_CONFIG_5_1_4 ) { tmp = channelIndex_CICP16[i]; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_7_1_4 ) + else if ( inConfig == AUDIO_CONFIG_7_1_4 ) { tmp = channelIndex_CICP19[i]; } @@ -774,7 +772,7 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error: Channel configuration not specified!\n\n" ); } - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { hHrtf->inv_diffuse_weight[i] = hSetOfHRTF->hHRTF_brir_combined->inv_diffuse_weight[tmp]; } @@ -785,7 +783,7 @@ static ivas_error ivas_rend_initCrend( for ( j = 0; j < BINAURAL_CHANNELS; j++ ) { - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) { 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]; @@ -804,7 +802,7 @@ static ivas_error ivas_rend_initCrend( } else if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) { - if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA3 ) + if ( inConfig == AUDIO_CONFIG_HOA3 ) { hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_hoa3->latency_s; hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa3->max_num_iterations; @@ -830,7 +828,7 @@ static ivas_error ivas_rend_initCrend( hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_hoa3->pOut_to_bin_diffuse_im[j]; } } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_HOA2 ) + else if ( inConfig == AUDIO_CONFIG_HOA2 ) { hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_hoa2->latency_s; hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_hoa2->max_num_iterations; @@ -856,7 +854,7 @@ static ivas_error ivas_rend_initCrend( hHrtf->pOut_to_bin_diffuse_im[j] = hSetOfHRTF->hHRTF_hrir_hoa2->pOut_to_bin_diffuse_im[j]; } } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_FOA ) + else if ( inConfig == AUDIO_CONFIG_FOA ) { hHrtf->latency_s = hSetOfHRTF->hHRTF_hrir_foa->latency_s; hHrtf->max_num_iterations = hSetOfHRTF->hHRTF_hrir_foa->max_num_iterations; @@ -894,6 +892,199 @@ static ivas_error ivas_rend_initCrend( return IVAS_ERR_OK; } + +/*------------------------------------------------------------------------- + * ivas_shoebox_data_init() + * + * Initialize shoebox_data_t handle + *------------------------------------------------------------------------*/ + +static ivas_error ivas_shoebox_data_init( + shoebox_data_t *hShoeboxData /* i/o: shoebox_data_t handle */ +) +{ + int16_t i; + + if ( hShoeboxData == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + for ( i = 0; i < 150; i++ ) + { + hShoeboxData->data[i] = 0.0f; + } + for ( i = 0; i < 1; i++ ) + { + hShoeboxData->size[i] = 0; + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ivas_shoebox_output_init() + * + * Initialize shoebox_output_t handle + *------------------------------------------------------------------------*/ + +static ivas_error ivas_shoebox_output_init( + shoebox_output_t *hShoeboxOutput /* i/o: shoebox_output_t handle */ +) +{ + if ( hShoeboxOutput == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + hShoeboxOutput->n_sources = 0; + hShoeboxOutput->n_ref = 0; + + ivas_shoebox_data_init( &hShoeboxOutput->times ); + ivas_shoebox_data_init( &hShoeboxOutput->gains ); + ivas_shoebox_data_init( &hShoeboxOutput->az_angle ); + ivas_shoebox_data_init( &hShoeboxOutput->el_angle ); + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ivas_shoebox_config_init() + * + * Initialize shoebox_config_t handle + *------------------------------------------------------------------------*/ + +static ivas_error ivas_shoebox_config_init_params( + shoebox_config_t *hShoeboxConfig /* i/o: shoebox_config_t handle */ +) +{ + int16_t i; + + if ( hShoeboxConfig == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + hShoeboxConfig->room_L = 0.0f; + hShoeboxConfig->room_W = 0.0f; + hShoeboxConfig->room_H = 0.0f; + + for ( i = 0; i < ER_ABS_COEFF; i++ ) + { + hShoeboxConfig->abs_coeff[i] = 0.0f; + } + for ( i = 0; i < 3; i++ ) + { + hShoeboxConfig->list_orig[i] = 0.0f; + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ivas_shoebox_obj_init() + * + * Initialize shoebox_obj_t handle + *------------------------------------------------------------------------*/ + +static ivas_error ivas_shoebox_obj_init( + shoebox_obj_t *hShoeboxObj /* i/o: shoebox_obj_t handle */ +) +{ + int16_t i; + + if ( hShoeboxObj == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + hShoeboxObj->isCartesian = 0; + hShoeboxObj->isRelative = 0; + hShoeboxObj->isZHeight = 0; + hShoeboxObj->isRadians = 0; + hShoeboxObj->MAX_SOURCES = 0; + hShoeboxObj->max_bands = 0; + hShoeboxObj->REF_ORDER = 0; + + for ( i = 0; i < 75; i++ ) + { + hShoeboxObj->src_pos[i] = 0.0f; + } + for ( i = 0; i < 25; i++ ) + { + hShoeboxObj->src_dist[i] = 0.0f; + } + for ( i = 0; i < 3; i++ ) + { + hShoeboxObj->list_pos[i] = 0.0f; + } + + hShoeboxObj->nSrc = 0; + hShoeboxObj->radius = 0.0f; + hShoeboxObj->min_wall_dist = 0.0f; + hShoeboxObj->soundspeed = 0.0f; + hShoeboxObj->air_coeff = 0.0f; + + ivas_shoebox_config_init_params( &hShoeboxObj->cal ); + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * ivas_er_init_handle() + * + * Initialize early reflections handle + *------------------------------------------------------------------------*/ + +static ivas_error ivas_er_init_handle( + er_struct_t *reflections /* i/o: early reflections handle */ +) +{ + int16_t i; + + if ( reflections == NULL ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + reflections->audio_config = AUDIO_CONFIG_INVALID; + reflections->use_er = 0; + reflections->is_ready = 0; + reflections->circ_len = 0; + reflections->circ_insert = 0; + reflections->n_total_reflections = 0; + reflections->is_cartesian = 0; + reflections->is_relative = 0; + reflections->max_frame_size = 0; + reflections->output_Fs = 0.0f; + + for ( i = 0; i < 75; i++ ) + { + reflections->source_positions[i] = 0.0f; + } + for ( i = 0; i < 3; i++ ) + { + reflections->user_origin[i] = 0.0f; + if ( i == 2 ) + { + reflections->user_origin[i] = ER_LIST_HEIGHT; + } + } + + reflections->circ_buffers = NULL; + reflections->closest_ch_idx = NULL; + + ivas_shoebox_output_init( &reflections->shoebox_data ); + ivas_shoebox_obj_init( &reflections->shoebox_lib ); + + return IVAS_ERR_OK; +} + + /*------------------------------------------------------------------------- * ivas_rend_initCrendWrapper() * @@ -901,9 +1092,18 @@ static ivas_error ivas_rend_initCrend( *------------------------------------------------------------------------*/ ivas_error ivas_rend_initCrendWrapper( - CREND_WRAPPER_HANDLE *pCrend ) + CREND_WRAPPER_HANDLE *pCrend +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif +) { int16_t i; + CREND_HANDLE hCrend; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx; +#endif if ( pCrend == NULL ) { @@ -916,39 +1116,84 @@ ivas_error ivas_rend_initCrendWrapper( } ( *pCrend )->binaural_latency_ns = 0; - ( *pCrend )->hCrend = NULL; ( *pCrend )->hHrtfCrend = NULL; - if ( ( ( *pCrend )->hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) +#endif { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for renderer handle" ); - } + hCrend = NULL; + if ( ( hCrend = (CREND_HANDLE) malloc( sizeof( CREND_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for renderer handle" ); + } - ( *pCrend )->hCrend->lfe_delay_line = NULL; + hCrend->lfe_delay_line = NULL; - for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) - { - ( *pCrend )->hCrend->freq_buffer_re[i] = NULL; - ( *pCrend )->hCrend->freq_buffer_im[i] = NULL; + for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) + { + hCrend->freq_buffer_re[i] = NULL; + hCrend->freq_buffer_im[i] = NULL; + } + + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + hCrend->prev_out_buffer[i] = NULL; + } + + hCrend->freq_buffer_re_diffuse = NULL; + hCrend->freq_buffer_im_diffuse = NULL; + hCrend->hReverb = NULL; + hCrend->reflections = NULL; + hCrend->delay_line_rw_index = 0; + hCrend->diffuse_delay_line_rw_index = 0; + hCrend->hTrack = NULL; + hCrend->m_fYaw = 0; + hCrend->m_fPitch = 0; + hCrend->m_fRoll = 0; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + ( *pCrend )->hCrend[pos_idx] = hCrend; +#else + ( *pCrend )->hCrend = hCrend; +#endif } - for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + return IVAS_ERR_OK; +} + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*------------------------------------------------------------------------- + * ivas_rend_openMultiBinCrend() + * + * Allocate and initialize crend renderer handle + *------------------------------------------------------------------------*/ + +ivas_error ivas_rend_openMultiBinCrend( + CREND_WRAPPER_HANDLE *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs ) +{ + ivas_error error; + + if ( ( error = ivas_rend_openCrend( pCrend, inConfig, outConfig, NULL /*hRendCfg*/, NULL, output_Fs +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + pMultiBinPoseData->num_poses +#endif + ) ) != IVAS_ERR_OK ) { - ( *pCrend )->hCrend->prev_out_buffer[i] = NULL; + return error; } - ( *pCrend )->hCrend->freq_buffer_re_diffuse = NULL; - ( *pCrend )->hCrend->freq_buffer_im_diffuse = NULL; - ( *pCrend )->hCrend->hReverb = NULL; - ( *pCrend )->hCrend->delay_line_rw_index = 0; - ( *pCrend )->hCrend->diffuse_delay_line_rw_index = 0; - ( *pCrend )->hCrend->hTrack = NULL; - ( *pCrend )->hCrend->m_fYaw = 0; - ( *pCrend )->hCrend->m_fPitch = 0; - ( *pCrend )->hCrend->m_fRoll = 0; - - return IVAS_ERR_OK; + return error; } +#endif + + /*------------------------------------------------------------------------- * ivas_rend_openCrend() * @@ -961,20 +1206,32 @@ ivas_error ivas_rend_openCrend( const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg, HRTFS_CREND_HANDLE hSetOfHRTF, - const int32_t output_Fs ) + const int32_t output_Fs +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif +) { int16_t i, subframe_length; int16_t max_total_ir_len; HRTFS_HANDLE hHrtf; CREND_HANDLE hCrend; ivas_error error; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx; +#endif error = IVAS_ERR_OK; - if ( ( error = ivas_rend_initCrendWrapper( pCrend ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_initCrendWrapper( pCrend +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + num_poses +#endif + ) ) != IVAS_ERR_OK ) { return error; } - hCrend = ( *pCrend )->hCrend; subframe_length = (int16_t) ( output_Fs / FRAMES_PER_SEC ) / MAX_PARAM_SPATIAL_SUBFRAMES; @@ -986,89 +1243,134 @@ ivas_error ivas_rend_openCrend( } } - hHrtf = ( *pCrend )->hHrtfCrend; - - if ( hHrtf != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) +#endif { - max_total_ir_len = hHrtf->max_num_iterations * subframe_length; +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCrend = ( *pCrend )->hCrend[pos_idx]; +#else + hCrend = ( *pCrend )->hCrend; +#endif + hHrtf = ( *pCrend )->hHrtfCrend; - for ( i = 0; i < hHrtf->max_num_ir; i++ ) + if ( hHrtf != NULL ) { - if ( ( hCrend->freq_buffer_re[i] = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) - { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero( hCrend->freq_buffer_re[i], max_total_ir_len ); + max_total_ir_len = hHrtf->max_num_iterations * subframe_length; - if ( ( hCrend->freq_buffer_im[i] = (float *) malloc( sizeof( float ) * 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[i] = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero( hCrend->freq_buffer_re[i], max_total_ir_len ); + + if ( ( hCrend->freq_buffer_im[i] = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero( hCrend->freq_buffer_im[i], max_total_ir_len ); } - set_zero( hCrend->freq_buffer_im[i], max_total_ir_len ); - } - for ( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - if ( ( hCrend->prev_out_buffer[i] = (float *) malloc( sizeof( float ) * 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[i] = (float *) malloc( sizeof( float ) * subframe_length ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero( hCrend->prev_out_buffer[i], subframe_length ); } - set_zero( hCrend->prev_out_buffer[i], subframe_length ); - } - max_total_ir_len = hHrtf->num_iterations_diffuse[0] * subframe_length; + max_total_ir_len = hHrtf->num_iterations_diffuse[0] * subframe_length; - if ( max_total_ir_len > 0 ) - { - if ( ( hCrend->freq_buffer_re_diffuse = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + if ( max_total_ir_len > 0 ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); - } - set_zero( hCrend->freq_buffer_re_diffuse, max_total_ir_len ); + if ( ( hCrend->freq_buffer_re_diffuse = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero( hCrend->freq_buffer_re_diffuse, max_total_ir_len ); - if ( ( hCrend->freq_buffer_im_diffuse = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + if ( ( hCrend->freq_buffer_im_diffuse = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero( hCrend->freq_buffer_im_diffuse, max_total_ir_len ); + } + else { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + hCrend->freq_buffer_re_diffuse = NULL; + hCrend->freq_buffer_im_diffuse = NULL; } - set_zero( hCrend->freq_buffer_im_diffuse, max_total_ir_len ); - } - else - { - hCrend->freq_buffer_re_diffuse = NULL; - hCrend->freq_buffer_im_diffuse = NULL; - } - max_total_ir_len = (int16_t) ( hHrtf->latency_s * output_Fs + 0.5f ) + subframe_length; - if ( max_total_ir_len > 0 ) - { - if ( ( hCrend->lfe_delay_line = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + max_total_ir_len = (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 = (float *) malloc( sizeof( float ) * max_total_ir_len ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Crend" ); + } + set_zero( hCrend->lfe_delay_line, max_total_ir_len ); + } + else + { + hCrend->lfe_delay_line = NULL; } - set_zero( hCrend->lfe_delay_line, max_total_ir_len ); - } - else - { - hCrend->lfe_delay_line = NULL; - } - if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) - { - if ( ( error = ivas_reverb_open( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, hRendCfg, output_Fs ) ) != IVAS_ERR_OK ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - return error; + if ( ( error = ivas_reverb_open( &( hCrend->hReverb ), inConfig, ( *pCrend )->hHrtfCrend, NULL, hRendCfg, output_Fs ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( 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" ); + } + ivas_er_init_handle( hCrend->reflections ); + hCrend->reflections->use_er = hRendCfg->roomAcoustics.use_er; + hCrend->reflections->lowComplexity = hRendCfg->roomAcoustics.lowComplexity; + + /* Set sample rate and frame size */ + hCrend->reflections->output_Fs = (float) output_Fs; + hCrend->reflections->max_frame_size = (int16_t) ( output_Fs / FRAMES_PER_SEC ); + + /* Init Shoebox */ + ivas_shoebox_config_init( &hCrend->reflections->shoebox_lib.cal, hRendCfg ); + + /* Init and compute Reflections */ + if ( ( error = ivas_er_init( hCrend->reflections, inConfig ) ) != IVAS_ERR_OK ) + { + return error; + }; + } + else + { + hCrend->reflections = NULL; + } } - } - else - { - hCrend->hReverb = NULL; + else + { + hCrend->hReverb = NULL; + } + + ( *pCrend )->binaural_latency_ns = (int32_t) ( ( *pCrend )->hHrtfCrend->latency_s * 1000000000.f ); } - ( *pCrend )->binaural_latency_ns = (int32_t) ( ( *pCrend )->hHrtfCrend->latency_s * 1000000000.f ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + ( *pCrend )->hCrend[pos_idx] = hCrend; +#else + ( *pCrend )->hCrend = hCrend; +#endif } - ( *pCrend )->hCrend = hCrend; - return IVAS_ERR_OK; } @@ -1080,9 +1382,18 @@ ivas_error ivas_rend_openCrend( *------------------------------------------------------------------------*/ void ivas_rend_closeCrend( - CREND_WRAPPER_HANDLE *pCrend ) + CREND_WRAPPER_HANDLE *pCrend +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif +) { int16_t i; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx; +#endif + CREND_HANDLE hCrend; if ( pCrend == NULL || *pCrend == NULL ) { @@ -1094,67 +1405,125 @@ void ivas_rend_closeCrend( ivas_hrtf_close( &( *pCrend )->hHrtfCrend ); } - if ( ( *pCrend )->hCrend != NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) +#endif { - for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCrend = ( *pCrend )->hCrend[pos_idx]; +#else + hCrend = ( *pCrend )->hCrend; +#endif + if ( hCrend != NULL ) { - if ( ( *pCrend )->hCrend->freq_buffer_re[i] != NULL ) + for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) { - free( ( *pCrend )->hCrend->freq_buffer_re[i] ); - ( *pCrend )->hCrend->freq_buffer_re[i] = NULL; + if ( hCrend->freq_buffer_re[i] != NULL ) + { + free( hCrend->freq_buffer_re[i] ); + hCrend->freq_buffer_re[i] = NULL; + } + if ( hCrend->freq_buffer_im[i] != NULL ) + { + free( hCrend->freq_buffer_im[i] ); + hCrend->freq_buffer_im[i] = NULL; + } } - if ( ( *pCrend )->hCrend->freq_buffer_im[i] != NULL ) + + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) { - free( ( *pCrend )->hCrend->freq_buffer_im[i] ); - ( *pCrend )->hCrend->freq_buffer_im[i] = NULL; + if ( hCrend->prev_out_buffer[i] != NULL ) + { + free( hCrend->prev_out_buffer[i] ); + hCrend->prev_out_buffer[i] = NULL; + } } - } - for ( i = 0; i < BINAURAL_CHANNELS; i++ ) - { - if ( ( *pCrend )->hCrend->prev_out_buffer[i] != NULL ) + if ( hCrend->lfe_delay_line != NULL ) { - free( ( *pCrend )->hCrend->prev_out_buffer[i] ); - ( *pCrend )->hCrend->prev_out_buffer[i] = NULL; + free( hCrend->lfe_delay_line ); + hCrend->lfe_delay_line = NULL; } - } - if ( ( *pCrend )->hCrend->lfe_delay_line != NULL ) - { - free( ( *pCrend )->hCrend->lfe_delay_line ); - ( *pCrend )->hCrend->lfe_delay_line = NULL; - } + if ( hCrend->freq_buffer_re_diffuse != NULL ) + { + free( hCrend->freq_buffer_re_diffuse ); + hCrend->freq_buffer_re_diffuse = NULL; + } - if ( ( *pCrend )->hCrend->freq_buffer_re_diffuse != NULL ) - { - free( ( *pCrend )->hCrend->freq_buffer_re_diffuse ); - ( *pCrend )->hCrend->freq_buffer_re_diffuse = NULL; - } + if ( hCrend->freq_buffer_im_diffuse != NULL ) + { + free( hCrend->freq_buffer_im_diffuse ); + hCrend->freq_buffer_im_diffuse = NULL; + } - if ( ( *pCrend )->hCrend->freq_buffer_im_diffuse != NULL ) - { - free( ( *pCrend )->hCrend->freq_buffer_im_diffuse ); - ( *pCrend )->hCrend->freq_buffer_im_diffuse = NULL; - } + if ( hCrend->hTrack != NULL ) + { + free( hCrend->hTrack ); + hCrend->hTrack = NULL; + } - if ( ( *pCrend )->hCrend->hTrack != NULL ) - { - free( ( *pCrend )->hCrend->hTrack ); - ( *pCrend )->hCrend->hTrack = NULL; - } + ivas_reverb_close( &hCrend->hReverb ); - ivas_reverb_close( &( *pCrend )->hCrend->hReverb ); + if ( hCrend->reflections != NULL ) + { + if ( hCrend->reflections->closest_ch_idx != NULL ) + { + free( hCrend->reflections->closest_ch_idx ); + hCrend->reflections->closest_ch_idx = NULL; + } - free( ( *pCrend )->hCrend ); - ( *pCrend )->hCrend = NULL; - free( *pCrend ); - *pCrend = NULL; + if ( hCrend->reflections->circ_buffers != NULL ) + { + free( hCrend->reflections->circ_buffers ); + hCrend->reflections->circ_buffers = NULL; + } + + free( hCrend->reflections ); + hCrend->reflections = NULL; + } + + free( hCrend ); + hCrend = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + ( *pCrend )->hCrend[pos_idx] = hCrend; +#else + ( *pCrend )->hCrend = hCrend; +#endif + } } + free( *pCrend ); + *pCrend = NULL; + return; } +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*------------------------------------------------------------------------- + * ivas_rend_openCldfbRend() + * + * Close CLDFB based fastconv binaural renderer memories + *------------------------------------------------------------------------*/ + +void ivas_rend_closeCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend ) +{ + if ( pCldfbRend->hCldfbRend->hInputSetup != NULL ) + { + free( pCldfbRend->hCldfbRend->hInputSetup ); + pCldfbRend->hCldfbRend->hInputSetup = NULL; + } + + ivas_binRenderer_close( &pCldfbRend->hCldfbRend ); + + ivas_HRTF_fastconv_binary_close( &pCldfbRend->hHrtfFastConv ); + + return; +} +#endif + /*-----------------------------------------------------------------------------------------* * Function ivas_rend_crendConvolver() * @@ -1163,12 +1532,17 @@ void ivas_rend_closeCrend( static ivas_error ivas_rend_crendConvolver( const CREND_WRAPPER *pCrend, - IVAS_REND_AudioConfig inConfig, - IVAS_REND_AudioConfig outConfig, + AUDIO_CONFIG inConfig, + AUDIO_CONFIG outConfig, float *pcm_in[], float *pcm_out[], const int32_t output_Fs, - const int16_t i_ts ) + const int16_t i_ts +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t pos_idx +#endif +) { int16_t i, j, k, m; int16_t subframe_length, idx_in; @@ -1180,6 +1554,12 @@ static ivas_error ivas_rend_crendConvolver( const float *pFreq_filt_re, *pFreq_filt_im; float pOut[L_FRAME48k * 2]; float tmp_out_re[L_FRAME48k], tmp_out_im[L_FRAME48k]; + CREND_HANDLE hCrend; +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCrend = pCrend->hCrend[pos_idx]; +#else + hCrend = pCrend->hCrend; +#endif ivas_error error; if ( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ) != IVAS_ERR_OK ) @@ -1197,7 +1577,7 @@ static ivas_error ivas_rend_crendConvolver( lfe_idx_in = -1; if ( getAudioConfigType( inConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { - if ( inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM ) { lfe_idx_in = LFE_CHANNEL; } @@ -1207,13 +1587,13 @@ static ivas_error ivas_rend_crendConvolver( } } - offset = pCrend->hCrend->delay_line_rw_index * subframe_length; /* subframe_length * ( pCrend->hHrtfCrend->max_num_iterations - 1 ); */ - offset_diffuse = pCrend->hCrend->diffuse_delay_line_rw_index * subframe_length; /* subframe_length *( pCrend->hHrtfCrend->num_iterations_diffuse[0] - 1 ); */ + offset = hCrend->delay_line_rw_index * subframe_length; /* subframe_length * ( pCrend->hHrtfCrend->max_num_iterations - 1 ); */ + offset_diffuse = hCrend->diffuse_delay_line_rw_index * subframe_length; /* subframe_length *( pCrend->hHrtfCrend->num_iterations_diffuse[0] - 1 ); */ if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { - set_zero( &pCrend->hCrend->freq_buffer_re_diffuse[offset_diffuse], subframe_length ); - set_zero( &pCrend->hCrend->freq_buffer_im_diffuse[offset_diffuse], subframe_length ); + set_zero( &hCrend->freq_buffer_re_diffuse[offset_diffuse], subframe_length ); + set_zero( &hCrend->freq_buffer_im_diffuse[offset_diffuse], subframe_length ); } i = 0; @@ -1224,10 +1604,10 @@ static ivas_error ivas_rend_crendConvolver( { if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { - pFreq_buf_re = &pCrend->hCrend->freq_buffer_re_diffuse[offset_diffuse]; - pFreq_buf_im = &pCrend->hCrend->freq_buffer_im_diffuse[offset_diffuse]; - pFreq_filt_re = &pCrend->hCrend->freq_buffer_re[i][offset]; - pFreq_filt_im = &pCrend->hCrend->freq_buffer_im[i][offset]; + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[offset_diffuse]; + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[offset_diffuse]; + pFreq_filt_re = &hCrend->freq_buffer_re[i][offset]; + pFreq_filt_im = &hCrend->freq_buffer_im[i][offset]; for ( k = 0; k < pCrend->hHrtfCrend->index_frequency_max_diffuse; k++ ) { @@ -1236,8 +1616,8 @@ static ivas_error ivas_rend_crendConvolver( } } - pFreq_buf_re = &pCrend->hCrend->freq_buffer_re[i][offset]; - pFreq_buf_im = &pCrend->hCrend->freq_buffer_im[i][offset]; + pFreq_buf_re = &hCrend->freq_buffer_re[i][offset]; + pFreq_buf_im = &hCrend->freq_buffer_im[i][offset]; ivas_mdft( pIn, pFreq_buf_re, pFreq_buf_im, subframe_length, subframe_length ); i++; @@ -1257,11 +1637,11 @@ static ivas_error ivas_rend_crendConvolver( offset = 0; for ( m = 0; m < pCrend->hHrtfCrend->num_iterations[i][j]; m++ ) { - offset_in = ( pCrend->hCrend->delay_line_rw_index + pCrend->hHrtfCrend->max_num_iterations - pCrend->hHrtfCrend->num_iterations[i][j] + m + 1 ); + offset_in = ( hCrend->delay_line_rw_index + pCrend->hHrtfCrend->max_num_iterations - pCrend->hHrtfCrend->num_iterations[i][j] + m + 1 ); offset_in = offset_in % ( pCrend->hHrtfCrend->max_num_iterations ); offset_in = offset_in * subframe_length; - pFreq_buf_re = &pCrend->hCrend->freq_buffer_re[i][offset_in]; - pFreq_buf_im = &pCrend->hCrend->freq_buffer_im[i][offset_in]; + pFreq_buf_re = &hCrend->freq_buffer_re[i][offset_in]; + pFreq_buf_im = &hCrend->freq_buffer_im[i][offset_in]; pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_re[i][j][offset]; pFreq_filt_im = &pCrend->hHrtfCrend->pOut_to_bin_im[i][j][offset]; @@ -1279,11 +1659,11 @@ static ivas_error ivas_rend_crendConvolver( offset = 0; for ( m = 0; m < pCrend->hHrtfCrend->num_iterations_diffuse[j]; m++ ) { - offset_diffuse = ( pCrend->hCrend->diffuse_delay_line_rw_index + m + 1 ); + offset_diffuse = ( hCrend->diffuse_delay_line_rw_index + m + 1 ); offset_diffuse = offset_diffuse % pCrend->hHrtfCrend->num_iterations_diffuse[0]; offset_diffuse = offset_diffuse * subframe_length; - pFreq_buf_re = &pCrend->hCrend->freq_buffer_re_diffuse[offset_diffuse]; - pFreq_buf_im = &pCrend->hCrend->freq_buffer_im_diffuse[offset_diffuse]; + pFreq_buf_re = &hCrend->freq_buffer_re_diffuse[offset_diffuse]; + pFreq_buf_im = &hCrend->freq_buffer_im_diffuse[offset_diffuse]; pFreq_filt_re = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_re[j][offset]; pFreq_filt_im = &pCrend->hHrtfCrend->pOut_to_bin_diffuse_im[j][offset]; @@ -1300,17 +1680,17 @@ static ivas_error ivas_rend_crendConvolver( pFreq_buf_re = &pcm_out[j][i_ts * subframe_length]; for ( k = 0; k < subframe_length; k++ ) { - pFreq_buf_re[k] = pOut[k] + pCrend->hCrend->prev_out_buffer[j][k]; - pCrend->hCrend->prev_out_buffer[j][k] = pOut[k + subframe_length]; + pFreq_buf_re[k] = pOut[k] + hCrend->prev_out_buffer[j][k]; + hCrend->prev_out_buffer[j][k] = pOut[k + subframe_length]; } } - pCrend->hCrend->delay_line_rw_index++; - pCrend->hCrend->delay_line_rw_index = pCrend->hCrend->delay_line_rw_index % ( pCrend->hHrtfCrend->max_num_iterations ); + hCrend->delay_line_rw_index++; + hCrend->delay_line_rw_index = hCrend->delay_line_rw_index % ( pCrend->hHrtfCrend->max_num_iterations ); if ( pCrend->hHrtfCrend->num_iterations_diffuse[0] > 0 ) { - pCrend->hCrend->diffuse_delay_line_rw_index++; - pCrend->hCrend->diffuse_delay_line_rw_index = pCrend->hCrend->diffuse_delay_line_rw_index % ( pCrend->hHrtfCrend->num_iterations_diffuse[0] ); + hCrend->diffuse_delay_line_rw_index++; + hCrend->diffuse_delay_line_rw_index = hCrend->diffuse_delay_line_rw_index % ( pCrend->hHrtfCrend->num_iterations_diffuse[0] ); } return IVAS_ERR_OK; @@ -1332,23 +1712,45 @@ ivas_error ivas_rend_crendProcess( IVAS_OUTPUT_SETUP_HANDLE hIntSetup, EFAP_HANDLE hEFAPdata, float *output[], /* i/o: input/output audio channels */ - const int32_t output_Fs ) + const int32_t output_Fs +#ifdef API_5MS + , + const int16_t num_subframes /* i : number of subframes to render */ +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t pos_idx +#endif +) { +#ifdef API_5MS + int16_t i, subframe_idx, subframe_len; +#else int16_t i, subframe_idx, output_frame, subframe_len; +#endif int16_t nchan_out; float pcm_tmp[BINAURAL_CHANNELS][L_FRAME48k]; float *p_pcm_tmp[BINAURAL_CHANNELS]; - AUDIO_CONFIG in_config; IVAS_REND_AudioConfigType inConfigType; ivas_error error; - IVAS_REND_AudioConfig inRendConfig; - IVAS_REND_AudioConfig outRendConfig; + + CREND_HANDLE hCrend; +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCrend = pCrend->hCrend[pos_idx]; +#else + hCrend = pCrend->hCrend; +#endif + int8_t combinedOrientationEnabled; combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { if ( hCombinedOrientationData->enableCombinedOrientation[subframe_idx] != 0 ) { @@ -1360,28 +1762,43 @@ ivas_error ivas_rend_crendProcess( push_wmops( "ivas_rend_crendProcess" ); - inRendConfig = getRendAudioConfigFromIvasAudioConfig( inConfig ); - outRendConfig = getRendAudioConfigFromIvasAudioConfig( outConfig ); - - in_config = getIvasAudioConfigFromRendAudioConfig( inRendConfig ); - - inConfigType = getAudioConfigType( inRendConfig ); + inConfigType = getAudioConfigType( inConfig ); - if ( ( error = getAudioConfigNumChannels( outRendConfig, &nchan_out ) ) != IVAS_ERR_OK ) + if ( ( error = getAudioConfigNumChannels( outConfig, &nchan_out ) ) != IVAS_ERR_OK ) { return error; } +#ifdef API_5MS + subframe_len = (int16_t) ( output_Fs / ( FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES ) ); +#else output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); subframe_len = output_frame / MAX_PARAM_SPATIAL_SUBFRAMES; +#endif for ( i = 0; i < BINAURAL_CHANNELS; i++ ) { p_pcm_tmp[i] = pcm_tmp[i]; } +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { + /* Early Reflections */ + if ( hCrend->reflections != NULL ) + { + if ( hCrend->reflections->use_er == 1 && hCrend->reflections->is_ready == 1 ) + { + if ( ( error = ivas_er_process( hCrend->reflections, subframe_len, subframe_idx, output, inConfig ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + if ( hDecoderConfig && combinedOrientationEnabled ) { /* Orientation tracking */ @@ -1390,7 +1807,7 @@ ivas_error ivas_rend_crendProcess( MC with elevation (5_1_2 / 5_1_4 / 7_1_4) -> BINAURAL SBA SPAR -> BINAURAL or BINAURAL_ROOM */ - if ( in_config == AUDIO_CONFIG_FOA || in_config == AUDIO_CONFIG_HOA2 || in_config == AUDIO_CONFIG_HOA3 ) + if ( inConfig == AUDIO_CONFIG_FOA || inConfig == AUDIO_CONFIG_HOA2 || inConfig == AUDIO_CONFIG_HOA3 ) { rotateFrame_shd( hCombinedOrientationData, output, subframe_len, *hIntSetup, subframe_idx ); } @@ -1401,16 +1818,25 @@ ivas_error ivas_rend_crendProcess( } } - if ( ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) || ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) ) + if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED || inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) { - if ( ( error = ivas_rend_crendConvolver( pCrend, inRendConfig, outRendConfig, output, p_pcm_tmp, output_Fs, subframe_idx ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, output, p_pcm_tmp, output_Fs, subframe_idx +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + pos_idx +#endif + ) ) != IVAS_ERR_OK ) { return error; } - if ( pCrend->hCrend->hReverb != NULL ) + if ( hCrend->hReverb != NULL ) { - if ( ( error = ivas_reverb_process( pCrend->hCrend->hReverb, in_config, 1, output, p_pcm_tmp, subframe_idx ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = ivas_reverb_process( pCrend->hCrend[pos_idx]->hReverb, inConfig, 1, output, p_pcm_tmp, subframe_idx ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_reverb_process( pCrend->hCrend->hReverb, inConfig, 1, output, p_pcm_tmp, subframe_idx ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -1425,7 +1851,11 @@ ivas_error ivas_rend_crendProcess( /* move to output */ for ( i = 0; i < nchan_out; i++ ) { +#ifdef API_5MS + mvr2r( pcm_tmp[i], output[i], num_subframes * subframe_len ); +#else mvr2r( pcm_tmp[i], output[i], output_frame ); +#endif } pop_wmops(); @@ -1457,19 +1887,29 @@ ivas_error ivas_rend_crendProcessSubframe( { int16_t subframe_idx, subframe_len; int16_t nchan_out, nchan_in, ch, first_sf, last_sf, slot_size, slots_to_render; - float *tc_local[MAX_TRANSPORT_CHANNELS]; + float *tc_local[MAX_OUTPUT_CHANNELS]; float pcm_tmp[BINAURAL_CHANNELS][L_FRAME48k]; float *p_pcm_tmp[BINAURAL_CHANNELS]; - AUDIO_CONFIG in_config; IVAS_REND_AudioConfigType inConfigType; ivas_error error; - IVAS_REND_AudioConfig inRendConfig; - IVAS_REND_AudioConfig outRendConfig; int8_t combinedOrientationEnabled; + CREND_HANDLE hCrend; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCrend = pCrend->hCrend[0]; +#else + hCrend = pCrend->hCrend; +#endif combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + if ( hCombinedOrientationData->enableCombinedOrientation[0] != 0 ) + { + combinedOrientationEnabled = 1; + } +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) { if ( hCombinedOrientationData->enableCombinedOrientation[subframe_idx] != 0 ) @@ -1478,22 +1918,19 @@ ivas_error ivas_rend_crendProcessSubframe( break; } } +#endif } push_wmops( "ivas_rend_crendProcessSubframe" ); - inRendConfig = getRendAudioConfigFromIvasAudioConfig( inConfig ); - outRendConfig = getRendAudioConfigFromIvasAudioConfig( outConfig ); - - in_config = getIvasAudioConfigFromRendAudioConfig( inRendConfig ); - inConfigType = getAudioConfigType( inRendConfig ); + inConfigType = getAudioConfigType( inConfig ); - if ( ( error = getAudioConfigNumChannels( outRendConfig, &nchan_out ) ) != IVAS_ERR_OK ) + if ( ( error = getAudioConfigNumChannels( outConfig, &nchan_out ) ) != IVAS_ERR_OK ) { return error; } - if ( ( error = getAudioConfigNumChannels( inRendConfig, &nchan_in ) ) != IVAS_ERR_OK ) + if ( ( error = getAudioConfigNumChannels( inConfig, &nchan_in ) ) != IVAS_ERR_OK ) { return error; } @@ -1514,7 +1951,6 @@ ivas_error ivas_rend_crendProcessSubframe( slots_to_render = min( hTcBuffer->num_slots - hTcBuffer->slots_rendered, n_samples_to_render / slot_size ); first_sf = hTcBuffer->subframes_rendered; last_sf = first_sf; - hTcBuffer->slots_rendered += slots_to_render; while ( slots_to_render > 0 ) { @@ -1526,41 +1962,65 @@ ivas_error ivas_rend_crendProcessSubframe( { subframe_len = hTcBuffer->subframe_nbslots[subframe_idx] * hTcBuffer->n_samples_granularity; + /* Early Reflections */ + if ( hCrend->reflections != NULL ) + { + if ( hCrend->reflections->use_er == 1 && hCrend->reflections->is_ready == 1 ) + { + if ( ( error = ivas_er_process( hCrend->reflections, subframe_len, subframe_idx, output, inConfig ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + if ( hDecoderConfig && combinedOrientationEnabled ) { /* Rotation in SHD for: MC with elevation (5_1_2 / 5_1_4 / 7_1_4) -> BINAURAL SBA SPAR -> BINAURAL or BINAURAL_ROOM */ - if ( in_config == AUDIO_CONFIG_FOA || in_config == AUDIO_CONFIG_HOA2 || in_config == AUDIO_CONFIG_HOA3 ) + if ( inConfig == AUDIO_CONFIG_FOA || inConfig == AUDIO_CONFIG_HOA2 || inConfig == AUDIO_CONFIG_HOA3 ) { - rotateFrame_shd( - hCombinedOrientationData, - tc_local, subframe_len, *hIntSetup, 0 ); + rotateFrame_shd( hCombinedOrientationData, tc_local, subframe_len, *hIntSetup, 0 ); } /* Rotation in SD for MC -> BINAURAL_ROOM */ else if ( ( hIntSetup != NULL ) && hIntSetup->is_loudspeaker_setup ) { - rotateFrame_sd( - hCombinedOrientationData, - tc_local, subframe_len, *hIntSetup, hEFAPdata, 0 ); + rotateFrame_sd( hCombinedOrientationData, tc_local, subframe_len, *hIntSetup, hEFAPdata, 0 ); } } if ( ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) || ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) ) { - if ( ( error = ivas_rend_crendConvolver( pCrend, inRendConfig, outRendConfig, tc_local, p_pcm_tmp, output_Fs, 0 ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local, p_pcm_tmp, output_Fs, 0, 0 ) ) != IVAS_ERR_OK ) +#else + if ( ( error = ivas_rend_crendConvolver( pCrend, inConfig, outConfig, tc_local, p_pcm_tmp, output_Fs, 0 ) ) != IVAS_ERR_OK ) + +#endif { return error; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( pCrend->hCrend[0]->hReverb != NULL ) + { + if ( ( error = ivas_reverb_process( pCrend->hCrend[0]->hReverb, inConfig, 1, tc_local, p_pcm_tmp, 0 ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#else if ( pCrend->hCrend->hReverb != NULL ) { - if ( ( error = ivas_reverb_process( pCrend->hCrend->hReverb, in_config, 1, tc_local, p_pcm_tmp, 0 ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_reverb_process( pCrend->hCrend->hReverb, inConfig, 1, tc_local, p_pcm_tmp, 0 ) ) != IVAS_ERR_OK ) { return error; } } +#endif + for ( ch = 0; ch < nchan_in; ch++ ) { tc_local[ch] += subframe_len; @@ -1569,6 +2029,7 @@ ivas_error ivas_rend_crendProcessSubframe( { p_pcm_tmp[ch] += subframe_len; } + hTcBuffer->slots_rendered += hTcBuffer->subframe_nbslots[subframe_idx]; } else { @@ -1587,3 +2048,170 @@ ivas_error ivas_rend_crendProcessSubframe( return IVAS_ERR_OK; } + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*-----------------------------------------------------------------------------------------* + * Function ivas_rend_crend_ProcessSplitBin() + * + * Process call for IVAS Crend renderer + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_rend_crendProcessSplitBin( + const CREND_WRAPPER *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + DECODER_CONFIG_HANDLE hDecoderConfig, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, + const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, + EFAP_HANDLE hEFAPdata, + float *output[], + const int32_t output_Fs ) +{ + int16_t i, j; + int16_t sf; + int16_t pos_idx, output_frame; + ivas_error error; + float gain_lfe; + float tmpLfeBuffer[L_FRAME48k]; + float tmpInputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + float *p_tmpInputBuffer[MAX_OUTPUT_CHANNELS]; + float tmpSplitBinBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + + output_frame = (int16_t) ( output_Fs / FRAMES_PER_SEC ); + + /* copy input */ + for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) + { + mvr2r( output[i], tmpInputBuffer[i], output_frame ); + } + + for ( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) + { + p_tmpInputBuffer[i] = tmpInputBuffer[i]; + } + + /* save current head positions */ + pCombinedOrientationDataLocal = hCombinedOrientationData; + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { +#ifdef API_5MS + for ( sf = 1; sf < hCombinedOrientationData->num_subframes; ++sf ) +#else + for ( sf = 1; sf < RENDERER_HEAD_POSITIONS_PER_FRAME; ++sf ) +#endif + { + combinedOrientationDataLocal.Quaternions[sf] = combinedOrientationDataLocal.Quaternions[0]; + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat[sf][i][j] = combinedOrientationDataLocal.Rmat[0][i][j]; + } + } + } + } + + /* copy LFE to tmpLfeBuffer and apply gain only once */ + if ( hIntSetup->num_lfe > 0 && hIntSetup->index_lfe[0] != -1 ) + { + mvr2r( output[hIntSetup->index_lfe[0]], tmpLfeBuffer, output_frame ); + gain_lfe = ( ( pCrend != NULL ) && ( pCrend->hHrtfCrend != NULL ) ) ? pCrend->hHrtfCrend->gain_lfe : GAIN_LFE; + v_multc( tmpLfeBuffer, gain_lfe, tmpLfeBuffer, output_frame ); + } + else + { + set_zero( tmpLfeBuffer, output_frame ); + } + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; ++pos_idx ) + { + /* Update head positions */ + + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; +#ifdef API_5MS + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#else + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif + { + Quaternions_orig[i] = combinedOrientationDataLocal.Quaternions[i]; + Quaternions_abs.w = -3.0f; + Quat2EulerDegree( combinedOrientationDataLocal.Quaternions[i], &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ + + Quaternions_abs.x += pMultiBinPoseData->relative_head_poses[pos_idx][0]; + Quaternions_abs.y += pMultiBinPoseData->relative_head_poses[pos_idx][1]; + Quaternions_abs.z += pMultiBinPoseData->relative_head_poses[pos_idx][2]; + combinedOrientationDataLocal.Quaternions[i] = Quaternions_abs; + QuatToRotMat( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat[i] ); + } + + + /* render inplace to first two channels of tmpInputBuffer */ + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + + for ( i = 0; i < 3; i++ ) + { + mvr2r( hCombinedOrientationData->Rmat_prev[pos_idx][i], pCombinedOrientationDataLocal->Rmat_prev[0][i], 3 ); + } + if ( ( error = ivas_rend_crendProcess( pCrend, + inConfig, + outConfig, + hDecoderConfig, + pCombinedOrientationDataLocal, + hIntSetup, + hEFAPdata, + p_tmpInputBuffer, + output_Fs, +#ifdef API_5MS + hCombinedOrientationData->num_subframes, +#endif + pos_idx ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( i = 0; i < 3; i++ ) + { + mvr2r( pCombinedOrientationDataLocal->Rmat_prev[0][i], hCombinedOrientationData->Rmat_prev[pos_idx][i], 3 ); + } + + for ( i = 0; i < BINAURAL_CHANNELS; ++i ) + { + /* accumulate LFE to output */ + v_add( tmpInputBuffer[i], tmpLfeBuffer, tmpInputBuffer[i], output_frame ); + + /* move to split bin output buffer */ + mvr2r( tmpInputBuffer[i], tmpSplitBinBuffer[pos_idx * BINAURAL_CHANNELS + i], output_frame ); + } + + /* overwrite rendered channels with input again for next iteration */ + for ( i = 0; i < hIntSetup->nchan_out_woLFE; ++i ) + { + mvr2r( output[i], tmpInputBuffer[i], output_frame ); + } + + /* restore original headrotation data */ +#ifdef API_5MS + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#else + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif + { + combinedOrientationDataLocal.Quaternions[i] = Quaternions_orig[i]; + } + } + + /* copy split binaural rendered signals to final output */ + for ( i = 0; i < BINAURAL_CHANNELS * pMultiBinPoseData->num_poses; ++i ) + { + mvr2r( tmpSplitBinBuffer[i], output[i], output_frame ); + } + + return IVAS_ERR_OK; +} +#endif diff --git a/lib_rend/ivas_dirac_ana.c b/lib_rend/ivas_dirac_ana.c index 6d2b8861bb66a3054d4afed3d2b452e318236a20..8e07698fbd1c3171d3d5994f614e72c66283439b 100644 --- a/lib_rend/ivas_dirac_ana.c +++ b/lib_rend/ivas_dirac_ana.c @@ -109,11 +109,17 @@ ivas_error ivas_dirac_ana_open( /* intensity 3-dim */ for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) { - hDirAC->direction_vector_m[i] = (float **) malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( float * ) ); + if ( ( hDirAC->direction_vector_m[i] = (float **) malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA decoder\n" ) ); + } for ( j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) { - hDirAC->direction_vector_m[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ); + if ( ( hDirAC->direction_vector_m[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA decoder\n" ) ); + } set_zero( hDirAC->direction_vector_m[i][j], MASA_FREQUENCY_BANDS ); } } @@ -122,7 +128,10 @@ ivas_error ivas_dirac_ana_open( { for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) { - hDirAC->buffer_intensity_real[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ); + if ( ( hDirAC->buffer_intensity_real[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for MASA decoder\n" ) ); + } set_zero( hDirAC->buffer_intensity_real[i][j], MASA_FREQUENCY_BANDS ); } } @@ -364,7 +373,6 @@ static void ivas_dirac_param_est_ana( energyRatio[block_m_idx][band_m_idx] = 1.0f - diffuseness_m[band_m_idx]; } - /* Todo Nokia: Implement coherence analysis */ for ( band_m_idx = 0; band_m_idx < hDirAC->nbands; band_m_idx++ ) { spreadCoherence[block_m_idx][band_m_idx] = 0.0f; diff --git a/lib_rend/ivas_dirac_dec_binaural_functions.c b/lib_rend/ivas_dirac_dec_binaural_functions.c index 4616993f79b1219ae3da63bb3ac564d7d97341e1..69d40c4a1746634690683d0b10adbce9a04a0f82 100644 --- a/lib_rend/ivas_dirac_dec_binaural_functions.c +++ b/lib_rend/ivas_dirac_dec_binaural_functions.c @@ -55,6 +55,9 @@ #define CLDFB_HALF_BIN_FREQUENCY_OFFSET 0.5f #define IVAS_TDET_DUCK_MULT_FAC_PARA_BIN ( 2.0f ) #define IVAS_TDET_DUCK_MULT_FAC_PARA_BIN_LOW_BR ( 3.0f ) +#define SBA_CARDI_TARGET_ENERGY_GAIN 0.5f + +#define STEREO_PREPROCESS_IIR_FACTOR ( 0.9f ) /* powf(0.95f, 4.0f) for sub-frame smoothing instead of CLDFB slot */ #define ADAPT_HTPROTO_IIR_FAC 0.81450625f @@ -64,7 +67,7 @@ #define ADAPT_HTPROTO_ROT_LIM_0 0.4f #define ADAPT_HTPROTO_ROT_LIM_1 0.8f -#define MAX_GAIN_CACHE_SIZE 6 +#define MAX_GAIN_CACHE_SIZE ( ( MASA_MAXIMUM_DIRECTIONS * 3 ) + MAX_NUM_OBJECTS ) /* == different calls to get gains */ typedef struct hrtfGainCache { @@ -74,6 +77,18 @@ typedef struct hrtfGainCache float shVec[HRTF_SH_CHANNELS]; } PARAMBIN_HRTF_GAIN_CACHE; +typedef struct parambin_rend_config_data +{ + int16_t separateCenterChannelRendering; + IVAS_FORMAT ivas_format; + MC_MODE mc_mode; + int32_t ivas_total_brate; + int16_t nchan_transport; + float qualityBasedSmFactor; + int16_t processReverb; + ISM_MODE ism_mode; +} PARAMBIN_REND_CONFIG, *PARAMBIN_REND_CONFIG_HANDLE; + /*------------------------------------------------------------------------- * Local function prototypes @@ -81,13 +96,22 @@ typedef struct hrtfGainCache static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, float *output_f[], const int16_t nchan_transport, const int16_t subframe ); -static void ivas_dirac_dec_decorrelate_slot( DIRAC_DEC_HANDLE hDirAC, const int16_t slot, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float decRe[][CLDFB_NO_CHANNELS_MAX], float decIm[][CLDFB_NO_CHANNELS_MAX] ); +static void ivas_dirac_dec_decorrelate_slot( DIRAC_DEC_BIN_HANDLE hDiracDecBin, const int16_t num_freq_bands, const int16_t slot, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float decRe[][CLDFB_NO_CHANNELS_MAX], float decIm[][CLDFB_NO_CHANNELS_MAX] ); -static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices( Decoder_Struct *st_ivas, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float Rmat[3][3], const int16_t subframe, const int16_t isHeadtracked ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN +static void ivas_dirac_dec_binaural_formulate_input_covariance_matrices( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const int16_t subframe, float *subFrameTotalEne, float *IIReneLimiter ); +static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, float Rmat[3][3], const int16_t subframe, const int16_t isHeadtracked, const float *subFrameTotalEne, const float *IIReneLimiter, const MASA_ISM_DATA_HANDLE hMasaIsmData ); +#else +static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float Rmat[3][3], const int16_t subframe, const int16_t isHeadtracked, const MASA_ISM_DATA_HANDLE hMasaIsmData ); +#endif -static void ivas_dirac_dec_binaural_determine_processing_matrices( Decoder_Struct *st_ivas, const int16_t max_band_decorr, float Rmat[3][3], const int16_t isHeadtracked ); +static void ivas_dirac_dec_binaural_determine_processing_matrices( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, PARAMBIN_REND_CONFIG_HANDLE hConfig, const int16_t max_band_decorr, float Rmat[3][3], const int16_t subframe, const int16_t isHeadtracked, const int16_t nchanSeparateChannels, const MASA_ISM_DATA_HANDLE hMasaIsmData ); -static void ivas_dirac_dec_binaural_process_output( Decoder_Struct *st_ivas, float *output_f[], float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const int16_t max_band_decorr, const int16_t numInChannels, const int16_t subframe ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN +static void ivas_dirac_dec_binaural_process_output( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], float *output_f[], float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const int16_t max_band_decorr, const int16_t numInChannels, const int16_t processReverb, const int16_t subframe, float outRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float outIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float reverbRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float reverbIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float decorrRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float decorrIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const uint8_t recompute ); +#else +static void ivas_dirac_dec_binaural_process_output( DIRAC_DEC_BIN_HANDLE hDiracDecBin, SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], float *output_f[], float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const int16_t max_band_decorr, const int16_t numInChannels, const int16_t processReverb, const int16_t subframe ); +#endif static void adaptTransportSignalsHeadtracked( COMBINED_ORIENTATION_HANDLE hHeadTrackData, 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 nSlots, float Rmat[3][3] ); @@ -115,132 +139,206 @@ ivas_error ivas_dirac_dec_init_binaural_data( HRTFS_PARAMBIN_HANDLE hHrtfParambin /* i : HRTF structure for rendering */ ) { - DIRAC_DEC_BIN_HANDLE hBinaural; + DIRAC_DEC_BIN_HANDLE hDiracDecBin; int16_t nBins; int32_t output_Fs; RENDERER_TYPE renderer_type; int16_t j, k, bin; float binCenterFreq, tmpFloat; ivas_error error; + float frequency_axis[CLDFB_NO_CHANNELS_MAX]; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + int16_t pos_idx; - hBinaural = st_ivas->hDiracDecBin; - - if ( hBinaural == NULL ) + for ( pos_idx = 0; pos_idx < st_ivas->hSplitBinRend.splitrend.multiBinPoseData.num_poses; pos_idx++ ) { - if ( ( hBinaural = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) + hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; +#else + hDiracDecBin = st_ivas->hDiracDecBin; +#endif + + if ( hDiracDecBin == NULL ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC binaural handle " ); + if ( ( hDiracDecBin = (DIRAC_DEC_BIN_HANDLE) malloc( sizeof( DIRAC_DEC_BIN_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC binaural handle " ); + } + + hDiracDecBin->hTdDecorr = NULL; + hDiracDecBin->hReverb = NULL; + hDiracDecBin->h_freq_domain_decorr_ap_params = NULL; + hDiracDecBin->h_freq_domain_decorr_ap_state = NULL; } - hBinaural->hTdDecorr = NULL; - hBinaural->hReverb = NULL; - } + output_Fs = st_ivas->hDecoderConfig->output_Fs; + nBins = st_ivas->hSpatParamRendCom->num_freq_bands; + renderer_type = st_ivas->renderer_type; + + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + for ( k = 0; k < BINAURAL_CHANNELS + MAX_NUM_OBJECTS; k++ ) + { + set_zero( hDiracDecBin->processMtxRe[j][k], nBins ); + set_zero( hDiracDecBin->processMtxIm[j][k], nBins ); + } + + for ( k = 0; k < BINAURAL_CHANNELS; k++ ) + { + set_zero( hDiracDecBin->processMtxDecRe[j][k], nBins ); + set_zero( hDiracDecBin->processMtxDecIm[j][k], nBins ); + } + set_zero( hDiracDecBin->ChEnePrev[j], nBins ); + set_zero( hDiracDecBin->ChEneOutPrev[j], nBins ); + } + set_zero( hDiracDecBin->ChCrossRePrev, nBins ); + set_zero( hDiracDecBin->ChCrossImPrev, nBins ); + set_zero( hDiracDecBin->ChCrossReOutPrev, nBins ); + set_zero( hDiracDecBin->ChCrossImOutPrev, nBins ); + hDiracDecBin->renderStereoOutputInsteadOfBinaural = 0; - nBins = st_ivas->hDirAC->num_freq_bands; - output_Fs = st_ivas->hDecoderConfig->output_Fs; - renderer_type = st_ivas->renderer_type; - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) - { - for ( k = 0; k < BINAURAL_CHANNELS + 1; k++ ) + for ( bin = 0; bin < nBins; bin++ ) { - set_zero( hBinaural->processMtxRe[j][k], nBins ); - set_zero( hBinaural->processMtxIm[j][k], nBins ); + binCenterFreq = ( (float) bin + CLDFB_HALF_BIN_FREQUENCY_OFFSET ) / (float) nBins * ( (float) output_Fs / 2.0f ); + /* These formulas and values are from Christian Borss's publication for binaural diffuse field coherence */ + tmpFloat = max( 0.0f, 1.0f - binCenterFreq / 2700.0f ); + hDiracDecBin->diffuseFieldCoherence[bin] = tmpFloat * sinf( binCenterFreq * EVS_PI / 550.0f ) / ( binCenterFreq * EVS_PI / 550.0f ); } - for ( k = 0; k < BINAURAL_CHANNELS; k++ ) + for ( bin = 0; bin < BINAURAL_COHERENCE_DIFFERENCE_BINS; bin++ ) { - set_zero( hBinaural->processMtxDecRe[j][k], nBins ); - set_zero( hBinaural->processMtxDecIm[j][k], nBins ); + hDiracDecBin->diffuseFieldCoherenceX[bin] = hDiracDecBin->diffuseFieldCoherence[bin] + diffuseFieldCoherenceDifferenceX[bin]; + hDiracDecBin->diffuseFieldCoherenceY[bin] = hDiracDecBin->diffuseFieldCoherence[bin] + diffuseFieldCoherenceDifferenceY[bin]; + hDiracDecBin->diffuseFieldCoherenceZ[bin] = hDiracDecBin->diffuseFieldCoherence[bin] + diffuseFieldCoherenceDifferenceZ[bin]; } - set_zero( hBinaural->ChEnePrev[j], nBins ); - set_zero( hBinaural->ChEneOutPrev[j], nBins ); - } - set_zero( hBinaural->ChCrossRePrev, nBins ); - set_zero( hBinaural->ChCrossImPrev, nBins ); - set_zero( hBinaural->ChCrossReOutPrev, nBins ); - set_zero( hBinaural->ChCrossImOutPrev, nBins ); - hBinaural->renderStereoOutputInsteadOfBinaural = 0; + if ( renderer_type == RENDERER_BINAURAL_PARAMETRIC ) /* Indication of binaural rendering without room effect */ + { + set_f( hDiracDecBin->earlyPartEneCorrection, 1.0f, CLDFB_NO_CHANNELS_MAX ); + hDiracDecBin->hReverb = NULL; + } + else if ( renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Indication of binaural rendering with room effect */ + { + mvr2r( hHrtfParambin->parametricEarlyPartEneCorrection, hDiracDecBin->earlyPartEneCorrection, nBins ); - for ( bin = 0; bin < nBins; bin++ ) - { - binCenterFreq = ( (float) bin + CLDFB_HALF_BIN_FREQUENCY_OFFSET ) / (float) nBins * ( (float) output_Fs / 2.0f ); - /* These formulas and values are from Christian Borss's publication for binaural diffuse field coherence */ - tmpFloat = max( 0.0f, 1.0f - binCenterFreq / 2700.0f ); - hBinaural->diffuseFieldCoherence[bin] = tmpFloat * sinf( binCenterFreq * EVS_PI / 550.0f ) / ( binCenterFreq * EVS_PI / 550.0f ); - } + /* reconfiguration needed when Reverb. parameters are changed -> close and open the handle again */ + if ( hDiracDecBin->hReverb != NULL && ( ( hDiracDecBin->hReverb->numBins != nBins ) || + ( hDiracDecBin->hReverb->blockSize != CLDFB_SLOTS_PER_SUBFRAME ) ) ) + { + ivas_binaural_reverb_close( &( hDiracDecBin->hReverb ) ); + } - for ( bin = 0; bin < BINAURAL_COHERENCE_DIFFERENCE_BINS; bin++ ) - { - hBinaural->diffuseFieldCoherenceX[bin] = hBinaural->diffuseFieldCoherence[bin] + diffuseFieldCoherenceDifferenceX[bin]; - hBinaural->diffuseFieldCoherenceY[bin] = hBinaural->diffuseFieldCoherence[bin] + diffuseFieldCoherenceDifferenceY[bin]; - hBinaural->diffuseFieldCoherenceZ[bin] = hBinaural->diffuseFieldCoherence[bin] + diffuseFieldCoherenceDifferenceZ[bin]; - } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( hDiracDecBin->hReverb == NULL && pos_idx == 0 ) /* open reverb only for the main direction */ +#else + if ( hDiracDecBin->hReverb == NULL ) +#endif + { + if ( ( error = ivas_binaural_reverb_open( &hDiracDecBin->hReverb, + nBins, + CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, + st_ivas->hIntSetup.output_config, + output_Fs, + RENDERER_BINAURAL_PARAMETRIC_ROOM, + st_ivas->hHrtfFastConv, + st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else if ( renderer_type == RENDERER_STEREO_PARAMETRIC ) + { + set_f( hDiracDecBin->earlyPartEneCorrection, 1.0f, CLDFB_NO_CHANNELS_MAX ); + hDiracDecBin->hReverb = NULL; + hDiracDecBin->renderStereoOutputInsteadOfBinaural = 1; + } + else /* Not valid renderer type for this renderer */ + { + assert( false ); + } - if ( renderer_type == RENDERER_BINAURAL_PARAMETRIC ) /* Indication of binaural rendering without room effect */ - { - set_f( hBinaural->earlyPartEneCorrection, 1.0f, CLDFB_NO_CHANNELS_MAX ); - hBinaural->hReverb = NULL; - } - else if ( renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) /* Indication of binaural rendering with room effect */ - { - mvr2r( hHrtfParambin->parametricEarlyPartEneCorrection, hBinaural->earlyPartEneCorrection, nBins ); + hDiracDecBin->hDiffuseDist = NULL; /* Memory is allocated from stack during runtime when needed */ + + if ( hDiracDecBin->hTdDecorr == NULL ) + { + hDiracDecBin->useTdDecorr = 0; + } - /* reconfiguration needed when Reverb. parameters are changed -> close and open the handle again */ - if ( hBinaural->hReverb != NULL && ( ( hBinaural->hReverb->numBins != nBins ) || - ( hBinaural->hReverb->blockSize != CLDFB_SLOTS_PER_SUBFRAME ) ) ) + if ( hDiracDecBin->h_freq_domain_decorr_ap_params != NULL ) { - ivas_binaural_reverb_close( &( hBinaural->hReverb ) ); + ivas_dirac_dec_decorr_close( &hDiracDecBin->h_freq_domain_decorr_ap_params, &hDiracDecBin->h_freq_domain_decorr_ap_state ); } - if ( hBinaural->hReverb == NULL ) +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( pos_idx == 0 ) /* open decorrelator only for the main direction */ { - if ( ( error = ivas_binaural_reverb_open( &hBinaural->hReverb, - nBins, - CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, NULL, - st_ivas->hIntSetup.output_config, - output_Fs, - RENDERER_BINAURAL_PARAMETRIC_ROOM, - st_ivas->hHrtfFastConv, - st_ivas->hHrtfParambin ) ) != IVAS_ERR_OK ) +#endif + if ( ( 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; } + + if ( !hDiracDecBin->useTdDecorr && !( st_ivas->ivas_format == ISM_FORMAT && st_ivas->ism_mode == ISM_MODE_PARAM ) ) + { + ivas_dirac_dec_get_frequency_axis( frequency_axis, output_Fs, nBins ); + if ( ( error = ivas_dirac_dec_decorr_open( &( hDiracDecBin->h_freq_domain_decorr_ap_params ), + &( hDiracDecBin->h_freq_domain_decorr_ap_state ), + nBins, + BINAURAL_CHANNELS, + BINAURAL_CHANNELS, + DIRAC_SYNTHESIS_PSD_LS, + frequency_axis, + BINAURAL_CHANNELS, + output_Fs ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN } - } - else if ( renderer_type == RENDERER_STEREO_PARAMETRIC ) - { - set_f( hBinaural->earlyPartEneCorrection, 1.0f, CLDFB_NO_CHANNELS_MAX ); - hBinaural->hReverb = NULL; - hBinaural->renderStereoOutputInsteadOfBinaural = 1; - } - else /* Not valid renderer type for this renderer */ - { - assert( false ); - } + else + { + hDiracDecBin->useTdDecorr = st_ivas->hDiracDecBin[0]->useTdDecorr; /* copy the flag, but the implementation re-uses the decorrelated signal */ + } +#endif - if ( hBinaural->hTdDecorr == NULL ) - { - hBinaural->useTdDecorr = 0; - } + hDiracDecBin->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); - if ( ( 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, &( hBinaural->hTdDecorr ), &( hBinaural->useTdDecorr ) ) ) != IVAS_ERR_OK ) - { - return error; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + st_ivas->hDiracDecBin[pos_idx] = hDiracDecBin; } - - hBinaural->reqularizationFactor = configure_reqularization_factor( st_ivas->ivas_format, st_ivas->hDecoderConfig->ivas_total_brate ); - - st_ivas->hDiracDecBin = hBinaural; +#else + st_ivas->hDiracDecBin = hDiracDecBin; +#endif /* allocate transport channels*/ - if ( st_ivas->hDecoderConfig->voip_active == 1 && st_ivas->hTcBuffer == NULL ) + if ( +#ifdef API_5MS +#ifdef API_5MS_BASELINE + st_ivas->hDecoderConfig->Opt_5ms && +#endif +#else + st_ivas->hDecoderConfig->voip_active == 1 && +#endif + st_ivas->hTcBuffer == NULL ) { int16_t nchan_to_allocate; + int16_t n_samples_granularity; nchan_to_allocate = 2 * BINAURAL_CHANNELS; - if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, ivas_jbm_dec_get_num_tc_channels( st_ivas ), nchan_to_allocate, nchan_to_allocate, NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ) ) ) != IVAS_ERR_OK ) + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + nchan_to_allocate = 2 * BINAURAL_CHANNELS + 2; + } + + n_samples_granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC && st_ivas->ism_mode == ISM_MASA_MODE_DISC ) + { + n_samples_granularity = NS2SA( st_ivas->hDecoderConfig->output_Fs, FRAME_SIZE_NS / MAX_PARAM_SPATIAL_SUBFRAMES ); /* Use the same granularity as tdrend */ + } + + if ( ( error = ivas_jbm_dec_tc_buffer_open( st_ivas, TC_BUFFER_MODE_RENDERER, ivas_jbm_dec_get_num_tc_channels( st_ivas ), nchan_to_allocate, nchan_to_allocate, n_samples_granularity ) ) != IVAS_ERR_OK ) { return error; } @@ -260,20 +358,50 @@ 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_PARAMBIN + int16_t pos_idx; +#endif if ( hBinaural == NULL || *hBinaural == NULL ) { return; } +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + if ( hBinaural[pos_idx] != NULL ) + { + if ( hBinaural[pos_idx]->hReverb != NULL ) + { + ivas_binaural_reverb_close( &( hBinaural[pos_idx]->hReverb ) ); + } + + ivas_td_decorr_dec_close( &( hBinaural[pos_idx]->hTdDecorr ) ); + + if ( hBinaural[pos_idx]->h_freq_domain_decorr_ap_params != NULL ) + { + ivas_dirac_dec_decorr_close( &( hBinaural[pos_idx]->h_freq_domain_decorr_ap_params ), &( hBinaural[pos_idx]->h_freq_domain_decorr_ap_state ) ); + } + + free( hBinaural[pos_idx] ); + hBinaural[pos_idx] = NULL; + } + } +#else if ( ( *hBinaural )->hReverb != NULL ) { ivas_binaural_reverb_close( &( ( *hBinaural )->hReverb ) ); } ivas_td_decorr_dec_close( &( ( *hBinaural )->hTdDecorr ) ); + if ( ( *hBinaural )->h_freq_domain_decorr_ap_params != NULL ) + { + ivas_dirac_dec_decorr_close( &( *hBinaural )->h_freq_domain_decorr_ap_params, &( *hBinaural )->h_freq_domain_decorr_ap_state ); + } free( *hBinaural ); *hBinaural = NULL; +#endif return; } @@ -343,13 +471,13 @@ void ivas_dirac_dec_binaural_render( int16_t slots_to_render, first_sf, last_sf, subframe_idx; uint16_t slot_size, ch; uint16_t nchan_out; - DIRAC_DEC_HANDLE hDirAC; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; float *output_f_local[MAX_OUTPUT_CHANNELS]; - hDirAC = st_ivas->hDirAC; + hSpatParamRendCom = st_ivas->hSpatParamRendCom; nchan_out = BINAURAL_CHANNELS; #ifdef DEBUGGING - assert( hDirAC ); + assert( hSpatParamRendCom ); #endif for ( ch = 0; ch < nchan_out; ch++ ) { @@ -358,14 +486,14 @@ void ivas_dirac_dec_binaural_render( slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); /* loop for synthesis, assume we always have to render in multiples of 5ms subframes with spills */ - slots_to_render = min( hDirAC->num_slots - hDirAC->slots_rendered, nSamplesAsked / slot_size ); + slots_to_render = min( hSpatParamRendCom->num_slots - hSpatParamRendCom->slots_rendered, nSamplesAsked / slot_size ); *nSamplesRendered = slots_to_render * slot_size; - first_sf = hDirAC->subframes_rendered; + first_sf = hSpatParamRendCom->subframes_rendered; last_sf = first_sf; while ( slots_to_render > 0 ) { - slots_to_render -= hDirAC->subframe_nbslots[last_sf]; + slots_to_render -= hSpatParamRendCom->subframe_nbslots[last_sf]; last_sf++; } @@ -374,34 +502,34 @@ void ivas_dirac_dec_binaural_render( #endif for ( subframe_idx = first_sf; subframe_idx < last_sf; subframe_idx++ ) { - int16_t n_samples_sf = slot_size * hDirAC->subframe_nbslots[subframe_idx]; + int16_t n_samples_sf = slot_size * hSpatParamRendCom->subframe_nbslots[subframe_idx]; ivas_dirac_dec_binaural_internal( st_ivas, st_ivas->hCombinedOrientationData, output_f_local, nchan_transport, subframe_idx ); + for ( ch = 0; ch < nchan_out; ch++ ) { output_f_local[ch] += n_samples_sf; } } - if ( hDirAC->slots_rendered == hDirAC->num_slots ) + if ( hSpatParamRendCom->slots_rendered == hSpatParamRendCom->num_slots ) { - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + DEFAULT_JBM_SUBFRAMES_5MS ) % hSpatParamRendCom->dirac_md_buffer_length; } - *nSamplesAvailable = ( hDirAC->num_slots - hDirAC->slots_rendered ) * slot_size; + *nSamplesAvailable = ( hSpatParamRendCom->num_slots - hSpatParamRendCom->slots_rendered ) * slot_size; return; } -#ifdef FIX_564 /*------------------------------------------------------------------------- - * ivas_dirac_dec_binaural_gain() + * ivas_dirac_dec_binaural_sba_gain() * * loudness correction for parametric binaural renderer *------------------------------------------------------------------------*/ -void ivas_dirac_dec_binaural_gain( - float output[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ +void ivas_dirac_dec_binaural_sba_gain( + float *output[], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t nchan_remapped, /* i : num channels after remapping of TCs */ const int16_t output_frame /* i : output frame length */ ) @@ -425,7 +553,6 @@ void ivas_dirac_dec_binaural_gain( return; } -#endif /*------------------------------------------------------------------------- @@ -437,51 +564,71 @@ void ivas_dirac_dec_binaural_gain( void ivas_dirac_dec_binaural( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ + float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t nchan_transport /* i : number of transport channels */ +#ifdef API_5MS + , + const int16_t num_subframes /* i : number of subframes to render */ +#endif ) { int16_t subframe; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; float cng_td_buffer[L_FRAME16k]; float *p_output[MAX_OUTPUT_CHANNELS]; int16_t ch; int16_t slot_size; int16_t numInChannels; + float *decorr_signal[BINAURAL_CHANNELS], decorr_signal_buff[BINAURAL_CHANNELS][L_FRAME48k]; + + hSpatParamRendCom = st_ivas->hSpatParamRendCom; slot_size = NS2SA( st_ivas->hDecoderConfig->output_Fs, CLDFB_SLOT_NS ); - for ( ch = 0; ch < 2 * BINAURAL_CHANNELS; ch++ ) + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - p_output[ch] = &output_f[ch][0]; + p_output[ch] = output_f[ch]; + p_output[ch + BINAURAL_CHANNELS] = decorr_signal_buff[ch]; } numInChannels = nchan_transport; - if ( st_ivas->hOutSetup.separateChannelEnabled ) + if ( st_ivas->hOutSetup.separateChannelEnabled || ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) ) ) { numInChannels++; } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_DISC && ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + numInChannels += (uint8_t) st_ivas->nchan_ism; + } + for ( ch = 0; ch < numInChannels; ch++ ) { st_ivas->hTcBuffer->tc[ch] = &output_f[ch][0]; } ivas_dirac_dec_set_md_map( st_ivas, DEFAULT_JBM_CLDFB_TIMESLOTS ); - if ( st_ivas->ivas_format == SBA_FORMAT ) + if ( st_ivas->ivas_format == SBA_FORMAT || st_ivas->ivas_format == SBA_ISM_FORMAT ) { ivas_spar_dec_set_render_map( st_ivas, DEFAULT_JBM_CLDFB_TIMESLOTS ); } - +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( st_ivas->hDiracDecBin[0]->useTdDecorr ) +#else if ( st_ivas->hDiracDecBin->useTdDecorr ) +#endif { - float *decorr_signal[BINAURAL_CHANNELS]; int16_t output_frame; for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - decorr_signal[ch] = (float *) &( output_f[ch + BINAURAL_CHANNELS][0] ); + decorr_signal[ch] = decorr_signal_buff[ch]; st_ivas->hTcBuffer->tc[ch + BINAURAL_CHANNELS] = decorr_signal[ch]; } output_frame = (int16_t) ( st_ivas->hDecoderConfig->output_Fs / FRAMES_PER_SEC ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_td_decorr_process( st_ivas->hDiracDecBin[0]->hTdDecorr, p_output, decorr_signal, output_frame ); +#else ivas_td_decorr_process( st_ivas->hDiracDecBin->hTdDecorr, p_output, decorr_signal, output_frame ); +#endif } if ( nchan_transport == 1 && st_ivas->nchan_transport != 2 && st_ivas->hSCE[0]->hCoreCoder[0] != NULL && st_ivas->hSCE[0]->hCoreCoder[0]->cng_sba_flag ) @@ -491,9 +638,13 @@ void ivas_dirac_dec_binaural( generate_masking_noise_lb_dirac( st->hFdCngDec->hFdCngCom, st_ivas->hTcBuffer->tc[nchan_transport], DEFAULT_JBM_CLDFB_TIMESLOTS, st->cna_dirac_flag && st->flag_cna ); } +#ifdef API_5MS + for ( subframe = 0; subframe < num_subframes; subframe++ ) +#else for ( subframe = 0; subframe < MAX_PARAM_SPATIAL_SUBFRAMES; subframe++ ) +#endif { - int16_t n_samples_sf = slot_size * st_ivas->hDirAC->subframe_nbslots[subframe]; + int16_t n_samples_sf = slot_size * hSpatParamRendCom->subframe_nbslots[subframe]; ivas_dirac_dec_binaural_internal( st_ivas, hCombinedOrientationData, p_output, nchan_transport, subframe ); @@ -501,7 +652,7 @@ void ivas_dirac_dec_binaural( { p_output[ch] += n_samples_sf; } - st_ivas->hDirAC->dirac_read_idx = ( st_ivas->hDirAC->dirac_read_idx + 1 ) % st_ivas->hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_read_idx = ( hSpatParamRendCom->dirac_read_idx + 1 ) % hSpatParamRendCom->dirac_md_buffer_length; } for ( ch = 0; ch < 2 * BINAURAL_CHANNELS; ch++ ) @@ -517,7 +668,6 @@ void ivas_dirac_dec_binaural( * Local functions *------------------------------------------------------------------------*/ - static void ivas_dirac_dec_binaural_internal( Decoder_Struct *st_ivas, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, @@ -525,26 +675,68 @@ static void ivas_dirac_dec_binaural_internal( const int16_t nchan_transport, const int16_t subframe ) { - DIRAC_DEC_HANDLE hDirAC; + DIRAC_DEC_BIN_HANDLE hDiracDecBin; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + PARAMBIN_REND_CONFIG config_data; int16_t slot, ch, numInChannels; - float Cldfb_RealBuffer_in[4][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; - float Cldfb_ImagBuffer_in[4][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_RealBuffer_in[6][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_in[6][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + int16_t nchanSeparateChannels; float Rmat[3][3]; int16_t max_band_decorr; DIFFUSE_DISTRIBUTION_DATA diffuseDistData; int16_t nBins, offsetSamples; int16_t i, j; - hDirAC = st_ivas->hDirAC; - nBins = hDirAC->num_freq_bands; - offsetSamples = hDirAC->slots_rendered * nBins; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + int16_t pos_idx; + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + float tmp_Cldfb_out_re[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float tmp_Cldfb_out_im[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + /* these allow re-using the reverb and freq-domain decorrelator signals from ivas_dirac_dec_binaural_process_output() in split rendering for the side renderings */ + float reverbRe[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float reverbIm[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float decorrRe[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float decorrIm[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; + float subFrameTotalEne[CLDFB_NO_CHANNELS_MAX]; + float IIReneLimiter[CLDFB_NO_CHANNELS_MAX]; + + hDiracDecBin = st_ivas->hDiracDecBin[0]; +#else + hDiracDecBin = st_ivas->hDiracDecBin; +#endif + assert( hDiracDecBin ); + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + nBins = hSpatParamRendCom->num_freq_bands; + offsetSamples = hSpatParamRendCom->slots_rendered * nBins; + + /* Setup internal config */ + config_data.separateCenterChannelRendering = st_ivas->hOutSetup.separateChannelEnabled; + config_data.ivas_format = st_ivas->ivas_format; + config_data.mc_mode = st_ivas->mc_mode; + config_data.ivas_total_brate = st_ivas->hDecoderConfig->ivas_total_brate; + config_data.nchan_transport = st_ivas->nchan_transport; + config_data.qualityBasedSmFactor = st_ivas->hMasa != NULL ? st_ivas->hMasa->data.dir_decode_quality : 1.0f; + config_data.processReverb = st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ? 1 : 0; + if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + config_data.ism_mode = st_ivas->ism_mode; + } + else + { + config_data.ism_mode = ISM_MODE_NONE; + } /* The input channel number at this processing function (not nchan_transport) */ numInChannels = BINAURAL_CHANNELS; - if ( st_ivas->hOutSetup.separateChannelEnabled ) + if ( config_data.separateCenterChannelRendering || ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) ) ) { numInChannels++; } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_DISC && ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + numInChannels += (uint8_t) st_ivas->nchan_ism; + } Rmat[0][0] = 1.0f; Rmat[0][1] = 0.0f; @@ -559,7 +751,7 @@ static void ivas_dirac_dec_binaural_internal( Rmat[2][2] = 1.0f; /* CLDFB Analysis of input */ - for ( slot = 0; slot < hDirAC->subframe_nbslots[subframe]; slot++ ) + for ( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) { for ( ch = 0; ch < numInChannels; ch++ ) { @@ -571,7 +763,7 @@ static void ivas_dirac_dec_binaural_internal( Cldfb_ImagBuffer_in[ch][slot], nBins, st_ivas->cldfbAnaDec[ch] ); } - else if ( st_ivas->nchan_transport == 2 ) /* Stereo signal transmitted as mono with DFT stereo */ + else if ( config_data.nchan_transport == 2 ) /* Stereo signal transmitted as mono with DFT stereo */ { /* At mono input duplicate the channel to dual-mono */ mvr2r( Cldfb_RealBuffer_in[0][slot], Cldfb_RealBuffer_in[1][slot], nBins ); @@ -586,7 +778,7 @@ static void ivas_dirac_dec_binaural_internal( int16_t slotInFrame; numCoreBands = st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom->numCoreBands; - slotInFrame = hDirAC->slots_rendered + slot; + slotInFrame = hSpatParamRendCom->slots_rendered + slot; generate_masking_noise_dirac( st_ivas->hSCE[0]->hCoreCoder[0]->hFdCngDec->hFdCngCom, st_ivas->cldfbAnaDec[1], @@ -638,7 +830,7 @@ static void ivas_dirac_dec_binaural_internal( } } - if ( st_ivas->hDiracDecBin->useTdDecorr ) + if ( hDiracDecBin->useTdDecorr ) { for ( ch = BINAURAL_CHANNELS; ch < ( 2 * BINAURAL_CHANNELS ); ch++ ) { @@ -647,8 +839,8 @@ static void ivas_dirac_dec_binaural_internal( Cldfb_RealBuffer_in[ch][slot], Cldfb_ImagBuffer_in[ch][slot], nBins, st_ivas->cldfbAnaDec[ch] ); - - if ( st_ivas->nchan_transport == 1 && st_ivas->ivas_format == SBA_FORMAT ) + if ( config_data.nchan_transport == 1 && + ( config_data.ivas_format == SBA_FORMAT || config_data.ivas_format == SBA_ISM_FORMAT ) ) { v_multc( Cldfb_RealBuffer_in[ch][slot], INV_SQRT_2, Cldfb_RealBuffer_in[ch][slot], nBins ); v_multc( Cldfb_ImagBuffer_in[ch][slot], INV_SQRT_2, Cldfb_ImagBuffer_in[ch][slot], nBins ); @@ -657,129 +849,775 @@ static void ivas_dirac_dec_binaural_internal( } } - if ( st_ivas->ivas_format == SBA_FORMAT ) + if ( config_data.ivas_format == SBA_FORMAT || config_data.ivas_format == SBA_ISM_FORMAT ) { - st_ivas->hDirAC->hDiffuseDist = &diffuseDistData; + hDiracDecBin->hDiffuseDist = &diffuseDistData; ivas_spar_param_to_masa_param_mapping( st_ivas, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, subframe ); - ivas_sba_prototype_renderer( st_ivas, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, subframe ); } + if ( st_ivas->ivas_format == MASA_ISM_FORMAT && nchan_transport == 2 && st_ivas->ism_mode != ISM_MASA_MODE_DISC && st_ivas->ism_mode != ISM_MASA_MODE_MASA_ONE_OBJ ) + { + ivas_omasa_preProcessStereoTransportsForMovedObjects( st_ivas, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, nBins, subframe ); + } + if ( hCombinedOrientationData ) { for ( i = 0; i < 3; i++ ) { for ( j = 0; j < 3; j++ ) { - Rmat[i][j] = hCombinedOrientationData->Rmat[subframe][i][j]; + Rmat[i][j] = hCombinedOrientationData->Rmat[subframe][i][j]; + } + } + + if ( nchan_transport == 2 ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + /* 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( hCombinedOrientationData, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat ); + + ivas_dirac_dec_binaural_check_and_switch_transports_headtracked( hCombinedOrientationData, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, nBins, hSpatParamRendCom->subframe_nbslots[subframe], Rmat ); + } + } + + +#ifndef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, Rmat, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, st_ivas->hMasaIsmData ); +#endif + + if ( config_data.ivas_format == ISM_FORMAT ) + { + max_band_decorr = 0; + } + else if ( hDiracDecBin->useTdDecorr ) + { + max_band_decorr = CLDFB_NO_CHANNELS_MAX; + } + else + { + max_band_decorr = hDiracDecBin->h_freq_domain_decorr_ap_params->max_band_decorr; + } + + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_binaural_formulate_input_covariance_matrices( hDiracDecBin, hSpatParamRendCom, &config_data, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, subframe, + subFrameTotalEne, IIReneLimiter ); + ivas_dirac_dec_binaural_formulate_target_covariance_matrices( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + subFrameTotalEne, IIReneLimiter, st_ivas->hMasaIsmData ); +#endif + + nchanSeparateChannels = 0; + if ( config_data.separateCenterChannelRendering || ( st_ivas->ivas_format == MASA_ISM_FORMAT && ( st_ivas->ism_mode == ISM_MASA_MODE_MASA_ONE_OBJ || st_ivas->ism_mode == ISM_MASA_MODE_PARAM_ONE_OBJ ) ) ) + { + nchanSeparateChannels = 1; + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT && st_ivas->ism_mode == ISM_MASA_MODE_DISC && ( st_ivas->renderer_type == RENDERER_STEREO_PARAMETRIC || st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) ) + { + nchanSeparateChannels = (uint8_t) st_ivas->nchan_ism; + } + + ivas_dirac_dec_binaural_determine_processing_matrices( hDiracDecBin, hSpatParamRendCom, &config_data, max_band_decorr, Rmat, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + nchanSeparateChannels, st_ivas->hMasaIsmData ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + pMultiBinPoseData = &st_ivas->hSplitBinRend.splitrend.multiBinPoseData; + +#ifdef FIX_658_SPLIT_REND_MASA + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#else + if ( pMultiBinPoseData != NULL && pMultiBinPoseData->num_poses > 1 ) +#endif + { + ivas_dirac_dec_binaural_process_output( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_f, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, + max_band_decorr, numInChannels, config_data.processReverb, subframe, tmp_Cldfb_out_re, tmp_Cldfb_out_im, + reverbRe, reverbIm, decorrRe, decorrIm, 1 ); + + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + for ( i = 0; i < CLDFB_SLOTS_PER_SUBFRAME; i++ ) + { + mvr2r( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + mvr2r( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + } + } + } + else + { + ivas_dirac_dec_binaural_process_output( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_f, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, + max_band_decorr, numInChannels, config_data.processReverb, subframe, NULL, NULL, + reverbRe, reverbIm, decorrRe, decorrIm, 1 ); + } +#else + ivas_dirac_dec_binaural_process_output( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_f, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, max_band_decorr, numInChannels, config_data.processReverb, subframe ); +#endif + + hDiracDecBin->hDiffuseDist = NULL; + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + 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 */ + IVAS_QUATERNION Quaternions_rot, Quaternions_abs, *Quaternions_ref; + float Rmat_local[3][3]; + + if ( hCombinedOrientationData ) + { + Quaternions_ref = &hCombinedOrientationData->Quaternions[0]; + Quaternions_rot.w = -3.0f; /* signal to use Euler */ + Quaternions_abs.w = -3.0f; /* signal to use Euler */ + Quat2EulerDegree( *Quaternions_ref, &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ + + for ( pos_idx = 1; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + Quaternions_rot.x = Quaternions_abs.x + pMultiBinPoseData->relative_head_poses[pos_idx][0]; + Quaternions_rot.y = Quaternions_abs.y + pMultiBinPoseData->relative_head_poses[pos_idx][1]; + Quaternions_rot.z = Quaternions_abs.z + pMultiBinPoseData->relative_head_poses[pos_idx][2]; + + QuatToRotMat( Quaternions_rot, Rmat_local ); + + hDiracDecBin = st_ivas->hDiracDecBin[pos_idx]; + assert( hDiracDecBin != NULL && "No DiracDecBin handle for this position" ); + if ( config_data.ivas_format == SBA_FORMAT || config_data.ivas_format == SBA_ISM_FORMAT ) + { + hDiracDecBin->hDiffuseDist = &diffuseDistData; + } + + /* re-use input covariance for the side renderings */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + mvr2r( st_ivas->hDiracDecBin[0]->ChEne[ch], hDiracDecBin->ChEne[ch], hSpatParamRendCom->num_freq_bands ); + } + mvr2r( st_ivas->hDiracDecBin[0]->ChCrossRe, hDiracDecBin->ChCrossRe, hSpatParamRendCom->num_freq_bands ); + mvr2r( st_ivas->hDiracDecBin[0]->ChCrossIm, hDiracDecBin->ChCrossIm, hSpatParamRendCom->num_freq_bands ); + + ivas_dirac_dec_binaural_formulate_target_covariance_matrices( hDiracDecBin, hSpatParamRendCom, &config_data, Rmat_local, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + subFrameTotalEne, IIReneLimiter, st_ivas->hMasaIsmData ); + + ivas_dirac_dec_binaural_determine_processing_matrices( hDiracDecBin, hSpatParamRendCom, &config_data, max_band_decorr, Rmat_local, subframe, + hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0, + nchanSeparateChannels, st_ivas->hMasaIsmData ); + + + /* re-use reverb and decorr from main direction for the sides */ + ivas_dirac_dec_binaural_process_output( hDiracDecBin, hSpatParamRendCom, st_ivas->cldfbSynDec, output_f, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, + max_band_decorr, numInChannels, config_data.processReverb, subframe, tmp_Cldfb_out_re, tmp_Cldfb_out_im, + reverbRe, reverbIm, decorrRe, decorrIm, 0 ); + + /* copy from temporary buffer to the main split rendering buffer */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + for ( i = 0; i < CLDFB_SLOTS_PER_SUBFRAME; i++ ) + { + mvr2r( tmp_Cldfb_out_re[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural[pos_idx * BINAURAL_CHANNELS + ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + mvr2r( tmp_Cldfb_out_im[ch][i], st_ivas->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural[pos_idx * BINAURAL_CHANNELS + ch][subframe * CLDFB_SLOTS_PER_SUBFRAME + i], CLDFB_NO_CHANNELS_MAX ); + } + } + + hDiracDecBin->hDiffuseDist = NULL; + } + } + } + + /* update this counter only after the last rendering of split directions */ +#endif + hSpatParamRendCom->slots_rendered += hSpatParamRendCom->subframe_nbslots[subframe]; + hSpatParamRendCom->subframes_rendered++; + + return; +} + + +static void ivas_dirac_dec_decorrelate_slot( + DIRAC_DEC_BIN_HANDLE hDiracDecBin, + const int16_t num_freq_bands, + const int16_t slot, + float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float decRe[][CLDFB_NO_CHANNELS_MAX], + float decIm[][CLDFB_NO_CHANNELS_MAX] ) +{ + int16_t offset, ch, bin; + float onset_filter[BINAURAL_CHANNELS * CLDFB_NO_CHANNELS_MAX]; /* 2 ch, 60 bins */ + float decorrelatedFrameInterleaved[2 * BINAURAL_CHANNELS * CLDFB_NO_CHANNELS_MAX]; /* 2 ch, real + imag, 60 bins */ + float protoFrameF[2 * BINAURAL_CHANNELS * CLDFB_NO_CHANNELS_MAX]; /* 2 ch, real + imag, 60 bins */ + const int16_t protoIndexDir[BINAURAL_CHANNELS] = { 0, 1 }; + + /* Decorrelation needs interleaved data. Copy left and right signals to proto_frame_f */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + offset = num_freq_bands * BINAURAL_CHANNELS * ch; + for ( bin = 0; bin < num_freq_bands; bin++ ) + { + protoFrameF[( bin * BINAURAL_CHANNELS ) + offset] = inRe[ch][slot][bin]; + protoFrameF[( bin * BINAURAL_CHANNELS ) + offset + 1] = inIm[ch][slot][bin]; + } + } + + /* Decorrelate proto signal to decorrelatedFrameInterleaved */ + ivas_dirac_dec_decorr_process( num_freq_bands, + BINAURAL_CHANNELS, + BINAURAL_CHANNELS, + DIRAC_SYNTHESIS_PSD_LS, + BINAURAL_CHANNELS, + protoFrameF, + BINAURAL_CHANNELS, + protoIndexDir, + decorrelatedFrameInterleaved, + onset_filter, + hDiracDecBin->h_freq_domain_decorr_ap_params, + hDiracDecBin->h_freq_domain_decorr_ap_state ); + + /* De-interleave decorrelated signals*/ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + offset = num_freq_bands * BINAURAL_CHANNELS * ch; + for ( bin = 0; bin < num_freq_bands; bin++ ) + { + decRe[ch][bin] = decorrelatedFrameInterleaved[( bin * BINAURAL_CHANNELS ) + offset]; + decIm[ch][bin] = decorrelatedFrameInterleaved[( bin * BINAURAL_CHANNELS ) + offset + 1]; + } + } + + return; +} + + +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN +static void ivas_dirac_dec_binaural_formulate_input_covariance_matrices( + DIRAC_DEC_BIN_HANDLE hDiracDecBin, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, + PARAMBIN_REND_CONFIG_HANDLE hConfig, + float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + const int16_t subframe, + float *subFrameTotalEne, + float *IIReneLimiter ) +{ + int16_t ch, slot, bin; + int16_t nBins; + float IIReneLimiterFactor; + float qualityBasedSmFactor; + float lowBitRateEQ[CLDFB_NO_CHANNELS_MAX]; + uint8_t applyLowBitRateEQ; + IVAS_FORMAT ivas_format; + int32_t ivas_total_brate; + int16_t nchan_transport; + + ivas_format = hConfig->ivas_format; + ivas_total_brate = hConfig->ivas_total_brate; + nchan_transport = hConfig->nchan_transport; + qualityBasedSmFactor = hConfig->qualityBasedSmFactor; + qualityBasedSmFactor *= qualityBasedSmFactor; + nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */ + + set_zero( hDiracDecBin->ChCrossRe, nBins ); + set_zero( hDiracDecBin->ChCrossIm, nBins ); + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + set_zero( hDiracDecBin->ChEne[ch], nBins ); + } + + /* Determine EQ for low bit rates (13.2 and 16.4 kbps) */ + applyLowBitRateEQ = 0; + if ( ( ivas_format == MASA_FORMAT || ivas_format == MC_FORMAT ) && ivas_total_brate < MASA_STEREO_MIN_BITRATE ) + { + applyLowBitRateEQ = 1; + if ( ivas_total_brate == IVAS_16k4 ) + { + for ( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ ) + { + lowBitRateEQ[bin + LOW_BIT_RATE_BINAURAL_EQ_OFFSET] = lowBitRateBinauralEQ[bin] * 0.5f + 0.5f; + } + } + else + { + for ( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ ) + { + lowBitRateEQ[bin + LOW_BIT_RATE_BINAURAL_EQ_OFFSET] = lowBitRateBinauralEQ[bin]; + } + } + } + + /* Formulate input and target covariance matrices for this subframe */ + set_zero( subFrameTotalEne, CLDFB_NO_CHANNELS_MAX ); + + /* 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++ ) + { + float instEne; + + instEne = ( inRe[ch][slot][bin] * inRe[ch][slot][bin] ); + instEne += ( inIm[ch][slot][bin] * inIm[ch][slot][bin] ); + hDiracDecBin->ChEne[ch][bin] += instEne; + subFrameTotalEne[bin] += instEne; + } + hDiracDecBin->ChCrossRe[bin] += inRe[0][slot][bin] * inRe[1][slot][bin]; + hDiracDecBin->ChCrossRe[bin] += inIm[0][slot][bin] * inIm[1][slot][bin]; + hDiracDecBin->ChCrossIm[bin] += inRe[0][slot][bin] * inIm[1][slot][bin]; + hDiracDecBin->ChCrossIm[bin] -= inIm[0][slot][bin] * inRe[1][slot][bin]; + } + } + + /* Apply EQ at low bit rates */ + if ( applyLowBitRateEQ ) + { + int16_t 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[bin] *= lowBitRateEQ[bin]; + } + for ( ; bin < nBins; bin++ ) + { + subFrameTotalEne[bin] *= lowBitRateEQ[lastEqBin]; + } + } + + if ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && nchan_transport == 2 ) + { + float tempRe, tempIm; + float subFrameSumEne[CLDFB_NO_CHANNELS_MAX]; + + v_multc( subFrameTotalEne, SBA_CARDI_TARGET_ENERGY_GAIN, subFrameTotalEne, nBins ); + + set_zero( subFrameSumEne, CLDFB_NO_CHANNELS_MAX ); + for ( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) + { + for ( bin = 0; bin < nBins; bin++ ) + { + tempRe = inRe[0][slot][bin] + inRe[1][slot][bin]; + tempIm = inIm[0][slot][bin] + inIm[1][slot][bin]; + subFrameSumEne[bin] += tempRe * tempRe + tempIm * tempIm; + } + } + + for ( bin = 0; bin < nBins; bin++ ) + { + subFrameTotalEne[bin] = max( subFrameTotalEne[bin], subFrameSumEne[bin] ); + } + } + + /* Temporal IIR-type smoothing of covariance matrices. Also apply encoding quality based smoothing factor. */ + if ( ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE ) + { + IIReneLimiterFactor = 16.0f + ( 1.0f - qualityBasedSmFactor ); + } + else + { + IIReneLimiterFactor = 8.0f + ( 1.0f - qualityBasedSmFactor ); + } + for ( bin = 0; bin < nBins; bin++ ) + { + float eneRatio; + + /* 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. */ + eneRatio = ( hDiracDecBin->ChEne[0][bin] + hDiracDecBin->ChEne[1][bin] ) / fmaxf( 1e-12f, ( hDiracDecBin->ChEnePrev[0][bin] + hDiracDecBin->ChEnePrev[1][bin] ) ); + IIReneLimiter[bin] = fminf( 1.0f, eneRatio * IIReneLimiterFactor ); + + hDiracDecBin->ChCrossRe[bin] *= qualityBasedSmFactor; + hDiracDecBin->ChCrossIm[bin] *= qualityBasedSmFactor; + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hDiracDecBin->ChEne[ch][bin] *= qualityBasedSmFactor; + } + + hDiracDecBin->ChCrossRe[bin] += IIReneLimiter[bin] * hDiracDecBin->ChCrossRePrev[bin]; + hDiracDecBin->ChCrossIm[bin] += IIReneLimiter[bin] * hDiracDecBin->ChCrossImPrev[bin]; + + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hDiracDecBin->ChEne[ch][bin] += IIReneLimiter[bin] * hDiracDecBin->ChEnePrev[ch][bin]; + } + + /* Store energy values and coefficients for next round */ + hDiracDecBin->ChCrossRePrev[bin] = hDiracDecBin->ChCrossRe[bin]; + hDiracDecBin->ChCrossImPrev[bin] = hDiracDecBin->ChCrossIm[bin]; + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hDiracDecBin->ChEnePrev[ch][bin] = hDiracDecBin->ChEne[ch][bin]; + } + } + + return; +} + +static void ivas_dirac_dec_binaural_formulate_target_covariance_matrices( + DIRAC_DEC_BIN_HANDLE hDiracDecBin, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, + PARAMBIN_REND_CONFIG_HANDLE hConfig, + float Rmat[3][3], + const int16_t subframe, + const int16_t isHeadtracked, + const float *subFrameTotalEne, + const float *IIReneLimiter, + const MASA_ISM_DATA_HANDLE hMasaIsmData ) +{ + int16_t ch, bin; + int16_t separateCenterChannelRendering; + int16_t nBins, idx; + float frameMeanDiffusenessEneWeight[CLDFB_NO_CHANNELS_MAX]; + float qualityBasedSmFactor; + int16_t dirac_read_idx; + PARAMBIN_HRTF_GAIN_CACHE gainCache[MAX_GAIN_CACHE_SIZE]; + IVAS_FORMAT ivas_format; + MC_MODE mc_mode; + int16_t gainCacheBaseIndex; + + separateCenterChannelRendering = hConfig->separateCenterChannelRendering; + ivas_format = hConfig->ivas_format; + mc_mode = hConfig->mc_mode; + qualityBasedSmFactor = hConfig->qualityBasedSmFactor; + qualityBasedSmFactor *= qualityBasedSmFactor; + nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */ + + set_zero( hDiracDecBin->ChCrossReOut, nBins ); + set_zero( hDiracDecBin->ChCrossImOut, nBins ); + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + set_zero( hDiracDecBin->ChEneOut[ch], nBins ); + } + set_zero( hDiracDecBin->frameMeanDiffuseness, nBins ); + + set_zero( frameMeanDiffusenessEneWeight, CLDFB_NO_CHANNELS_MAX ); + + for ( idx = 0; idx < MAX_GAIN_CACHE_SIZE; idx++ ) + { + gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */ + } + + dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe]; + + /* Determine target covariance matrix containing target binaural properties */ + for ( bin = 0; bin < nBins; bin++ ) + { + float diffuseness = 1.0f; /* ratio1 and ratio2 are subtracted from diffuseness further below */ + float diffusenessValForDecorrelationReduction = 1.0f; + float diffEneValForDecorrelationReduction; + float surCoh = 0.0f, spreadCoh = 0.0f; /* Default values if spreadSurroundCoherenceApplied == false */ + float diffEne, dirEne, meanEnePerCh; + int16_t dirIndex; + + /* 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 = hDiracDecBin->earlyPartEneCorrection[bin] * subFrameTotalEne[bin] / 2.0f; + + /* Determine direct part target covariance matrix (for 1 or 2 directions) */ + for ( dirIndex = 0; dirIndex < hSpatParamRendCom->numSimultaneousDirections; dirIndex++ ) + { + int16_t aziDeg, eleDeg; + float lRealp, lImagp, rRealp, rImagp; + float lRealpTmp, lImagpTmp, rRealpTmp, rImagpTmp; + float hrtfEne[BINAURAL_CHANNELS], hrtfCrossRe, hrtfCrossIm, ratio; + uint8_t isIsmDirection = 0; + + if ( dirIndex == 0 ) /* For first of the two simultaneous directions */ + { + aziDeg = hSpatParamRendCom->azimuth[dirac_read_idx][bin]; + eleDeg = hSpatParamRendCom->elevation[dirac_read_idx][bin]; + ratio = hSpatParamRendCom->energy_ratio1[dirac_read_idx][bin]; + spreadCoh = hSpatParamRendCom->spreadCoherence[dirac_read_idx][bin]; + gainCacheBaseIndex = 0; + } + else if ( ivas_format != MASA_ISM_FORMAT || ( ivas_format == MASA_ISM_FORMAT && dirIndex < hSpatParamRendCom->numParametricDirections ) ) /* For second of the two simultaneous directions */ + { + if ( ( ratio = hSpatParamRendCom->energy_ratio2[dirac_read_idx][bin] ) < 0.001 ) + { + /* 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]; + eleDeg = hSpatParamRendCom->elevation2[dirac_read_idx][bin]; + spreadCoh = hSpatParamRendCom->spreadCoherence2[dirac_read_idx][bin]; + gainCacheBaseIndex = 3; + } + else /* For object directions of MASA_ISM_FORMAT */ + { + isIsmDirection = 1; + uint16_t ismDirIndex; + ismDirIndex = 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]; + eleDeg = hMasaIsmData->elevation_ism_edited[ismDirIndex]; + } + else + { + aziDeg = hMasaIsmData->azimuth_ism[ismDirIndex][dirac_read_idx]; + eleDeg = hMasaIsmData->elevation_ism[ismDirIndex][dirac_read_idx]; + } + ratio = hMasaIsmData->energy_ratio_ism[ismDirIndex][dirac_read_idx][bin]; + spreadCoh = 0.0f; + gainCacheBaseIndex = 6 + ismDirIndex; + } + + diffuseness -= ratio; /* diffuseness = 1 - ratio1 - ratio2 */ + + if ( diffuseness < 0.0f ) + { + diffuseness = 0.0f; + } + if ( isIsmDirection ) + { + /* Objects cause lesser decorrelation reduction, to avoid removing all decorrelation when only objects are present */ + diffusenessValForDecorrelationReduction -= ratio * 0.5f; + } + else + { + diffusenessValForDecorrelationReduction -= ratio; + } + + if ( separateCenterChannelRendering ) + { + /* In masa + mono rendering mode, the center directions originate from phantom sources, so the + * spread coherence is increased */ + float aziRad, eleRad, doaVectorX, spatialAngleDeg, altSpreadCoh; + + aziRad = (float) aziDeg * PI_OVER_180; + eleRad = (float) eleDeg * PI_OVER_180; + doaVectorX = cosf( aziRad ) * cosf( eleRad ); + spatialAngleDeg = acosf( doaVectorX ) * _180_OVER_PI; + altSpreadCoh = 1.0f - ( spatialAngleDeg / 30.0f ); + spreadCoh = max( spreadCoh, altSpreadCoh ); + } + + getDirectPartGains( bin, aziDeg, eleDeg, &lRealp, &lImagp, &rRealp, &rImagp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[gainCacheBaseIndex], isHeadtracked ); + + 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 = 0.0f; + } + + if ( spreadCoh > 0.0f ) + { + float centerMul, sidesMul; + float hrtfEneCenter, hrtfEneSides, hrtfEneRealized, eneCorrectionFactor; + float w1, w2, w3, eq; + + hrtfEneCenter = ( lRealp * lRealp ) + ( lImagp * lImagp ) + ( rRealp * rRealp ) + ( rImagp * rImagp ); + + /* 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 ( spreadCoh < 0.5f ) + { + /* 0.0f < spreadCoh < 0.5f */ + sidesMul = 0.5774f * spreadCoh * 2.0f; /* sqrt(1/3) = 0.5774f */ + centerMul = 1.0f - ( spreadCoh * 2.0f ) + sidesMul; + } + else + { + /* 0.5f <= spreadCoh < 1.0f */ + centerMul = 2.0f - ( 2.0f * spreadCoh ); + sidesMul = inv_sqrt( centerMul + 2.0f ); + centerMul *= sidesMul; + } + + /* Apply the gain for the center source of the three coherent sources */ + lRealp *= centerMul; + lImagp *= centerMul; + rRealp *= centerMul; + rImagp *= centerMul; + + /* Apply the gain for the left source of the three coherent sources */ + getDirectPartGains( bin, aziDeg + 30, eleDeg, &lRealpTmp, &lImagpTmp, &rRealpTmp, &rImagpTmp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[gainCacheBaseIndex + 1], isHeadtracked ); + + hrtfEneSides = ( lRealpTmp * lRealpTmp ) + ( lImagpTmp * lImagpTmp ) + ( rRealpTmp * rRealpTmp ) + ( rImagpTmp * rImagpTmp ); + lRealp += sidesMul * lRealpTmp; + lImagp += sidesMul * lImagpTmp; + rRealp += sidesMul * rRealpTmp; + rImagp += sidesMul * rImagpTmp; + + /* Apply the gain for the right source of the three coherent sources. + * -30 degrees to 330 wrapping due to internal functions. */ + getDirectPartGains( bin, aziDeg + 330, eleDeg, &lRealpTmp, &lImagpTmp, &rRealpTmp, &rImagpTmp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[gainCacheBaseIndex + 2], isHeadtracked ); + hrtfEneSides += ( lRealpTmp * lRealpTmp ) + ( lImagpTmp * lImagpTmp ) + ( rRealpTmp * rRealpTmp ) + ( rImagpTmp * rImagpTmp ); + lRealp += sidesMul * lRealpTmp; + lImagp += sidesMul * lImagpTmp; + rRealp += sidesMul * rRealpTmp; + rImagp += sidesMul * rImagpTmp; + + /* Formulate an eneCorrectionFactor that compensates for the coherent summation of the HRTFs */ + hrtfEneRealized = ( lRealp * lRealp ) + ( lImagp * lImagp ) + ( rRealp * rRealp ) + ( rImagp * rImagp ); + eneCorrectionFactor = ( ( hrtfEneSides * sidesMul * sidesMul ) + + ( hrtfEneCenter * centerMul * centerMul ) ) / + max( 1e-12f, hrtfEneRealized ); + + /* Weighting factors to determine appropriate target spectrum for spread coherent sound */ + if ( spreadCoh < 0.5 ) + { + w1 = 1.0f - 2.0f * spreadCoh; + w2 = 2.0f * spreadCoh; + w3 = 0.0f; + } + else + { + w1 = 0.0f; + w2 = 2.0f - 2.0f * spreadCoh; + w3 = 2.0f * spreadCoh - 1.0f; + } + + if ( ( ivas_format == MC_FORMAT && mc_mode == MC_MODE_MCMASA ) ) + { + idx = 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 *= w1 * 1.0f + ( w2 + w3 ) * spreadCohEne1[idx]; + } + else + { + eneCorrectionFactor *= w1 * 1.0f + w2 * spreadCohEne05[idx] + w3 * spreadCohEne1[idx]; + } + } + + /* Equalize the spread coherent combined HRTFs */ + eq = min( 4.0f, sqrtf( eneCorrectionFactor ) ); + lRealp *= eq; + lImagp *= eq; + rRealp *= eq; + rImagp *= eq; + } + + hrtfEne[0] = ( lRealp * lRealp ) + ( lImagp * lImagp ); + hrtfEne[1] = ( rRealp * rRealp ) + ( rImagp * rImagp ); + hrtfCrossRe = ( lRealp * rRealp ) + ( lImagp * rImagp ); + hrtfCrossIm = ( -lImagp * rRealp ) + ( lRealp * rImagp ); + + /* Add direct part (1 or 2) covariance matrix */ + dirEne = ratio * meanEnePerCh; + hDiracDecBin->ChEneOut[0][bin] += dirEne * hrtfEne[0]; /* Dir ene part*/ + hDiracDecBin->ChEneOut[1][bin] += dirEne * hrtfEne[1]; + hDiracDecBin->ChCrossReOut[bin] += dirEne * hrtfCrossRe; /* Dir cross re */ + hDiracDecBin->ChCrossImOut[bin] += dirEne * hrtfCrossIm; /* Dir cross im */ + } + + /* Add diffuse / ambient part covariance matrix */ + diffuseness = max( 0.0f, diffuseness ); + diffEne = diffuseness * meanEnePerCh; + surCoh = hSpatParamRendCom->surroundingCoherence[dirac_read_idx][bin]; + + diffusenessValForDecorrelationReduction = max( 0.0f, diffusenessValForDecorrelationReduction ); + diffEneValForDecorrelationReduction = diffusenessValForDecorrelationReduction * meanEnePerCh; + + if ( ( ivas_format == MC_FORMAT && mc_mode == MC_MODE_MCMASA ) ) + { + if ( !hDiracDecBin->renderStereoOutputInsteadOfBinaural ) + { + float spectrumModVal; + + idx = 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 = ( 1.0f - surCoh ) + surCoh * surCohEne[idx]; + diffEne *= spectrumModVal; + + /* Modify also the value for decorrelation reduction */ + diffEneValForDecorrelationReduction *= spectrumModVal; + } + } + hDiracDecBin->ChEneOut[0][bin] += diffEne; /* Diff ene part*/ + hDiracDecBin->ChEneOut[1][bin] += diffEne; + + if ( hDiracDecBin->renderStereoOutputInsteadOfBinaural ) + { + /* When rendering stereo, ambience (except for surround coherent sound) has zero ICC. */ + hDiracDecBin->ChCrossReOut[bin] += surCoh * diffEne; + } + else /* When rendering binaural, ambience has frequency dependent ICC. */ + { + if ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && bin < BINAURAL_COHERENCE_DIFFERENCE_BINS ) + { + float diffuseFieldCoherence; + diffuseFieldCoherence = hDiracDecBin->hDiffuseDist->diffuseRatioX[bin] * hDiracDecBin->diffuseFieldCoherenceX[bin] + hDiracDecBin->hDiffuseDist->diffuseRatioY[bin] * hDiracDecBin->diffuseFieldCoherenceY[bin] + hDiracDecBin->hDiffuseDist->diffuseRatioZ[bin] * hDiracDecBin->diffuseFieldCoherenceZ[bin]; + hDiracDecBin->ChCrossReOut[bin] += ( ( 1.0f - surCoh ) * diffuseFieldCoherence + surCoh ) * diffEne; + } + else + { + hDiracDecBin->ChCrossReOut[bin] += ( ( 1.0f - surCoh ) * hDiracDecBin->diffuseFieldCoherence[bin] + surCoh ) * diffEne; } } - if ( nchan_transport == 2 ) - { - adaptTransportSignalsHeadtracked( hCombinedOrientationData, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, nBins, hDirAC->subframe_nbslots[subframe], Rmat ); - - ivas_dirac_dec_binaural_check_and_switch_transports_headtracked( hCombinedOrientationData, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, nBins, hDirAC->subframe_nbslots[subframe], Rmat ); - } + /* Store parameters for formulating average diffuseness over frame */ + hDiracDecBin->frameMeanDiffuseness[bin] += diffEneValForDecorrelationReduction; + frameMeanDiffusenessEneWeight[bin] += meanEnePerCh; } - ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices( st_ivas, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, Rmat, subframe, - hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0 ); - - if ( st_ivas->ivas_format == ISM_FORMAT ) - { - max_band_decorr = 0; - } - else if ( st_ivas->hDiracDecBin->useTdDecorr ) - { - max_band_decorr = CLDFB_NO_CHANNELS_MAX; - } - else + /* Formulate average diffuseness over frame */ + for ( bin = 0; bin < nBins; bin++ ) { - max_band_decorr = st_ivas->hDirAC->h_freq_domain_decorr_ap_params->max_band_decorr; + hDiracDecBin->frameMeanDiffuseness[bin] /= fmaxf( 1e-12f, frameMeanDiffusenessEneWeight[bin] ); } - ivas_dirac_dec_binaural_determine_processing_matrices( st_ivas, max_band_decorr, Rmat, - hCombinedOrientationData && hCombinedOrientationData->enableCombinedOrientation[subframe] > 0 ); - ivas_dirac_dec_binaural_process_output( st_ivas, output_f, Cldfb_RealBuffer_in, Cldfb_ImagBuffer_in, max_band_decorr, numInChannels, subframe ); - - st_ivas->hDirAC->hDiffuseDist = NULL; - - - hDirAC->slots_rendered += hDirAC->subframe_nbslots[subframe]; - hDirAC->subframes_rendered++; - - return; -} + for ( bin = 0; bin < nBins; bin++ ) + { + hDiracDecBin->ChCrossReOut[bin] *= qualityBasedSmFactor; + hDiracDecBin->ChCrossImOut[bin] *= qualityBasedSmFactor; + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hDiracDecBin->ChEneOut[ch][bin] *= qualityBasedSmFactor; + } -static void ivas_dirac_dec_decorrelate_slot( - DIRAC_DEC_HANDLE hDirAC, - const int16_t slot, - float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], - float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], - float decRe[][CLDFB_NO_CHANNELS_MAX], - float decIm[][CLDFB_NO_CHANNELS_MAX] ) -{ - int16_t offset, ch, bin; - float onset_filter[BINAURAL_CHANNELS * CLDFB_NO_CHANNELS_MAX]; /* 2 ch, 60 bins */ - float decorrelatedFrameInterleaved[2 * BINAURAL_CHANNELS * CLDFB_NO_CHANNELS_MAX]; /* 2 ch, real + imag, 60 bins */ + hDiracDecBin->ChCrossReOut[bin] += IIReneLimiter[bin] * hDiracDecBin->ChCrossReOutPrev[bin]; + hDiracDecBin->ChCrossImOut[bin] += IIReneLimiter[bin] * hDiracDecBin->ChCrossImOutPrev[bin]; - /* Decorrelation needs interleaved data. Copy left and right signals to proto_frame_f */ - for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - offset = hDirAC->num_freq_bands * BINAURAL_CHANNELS * ch; - for ( bin = 0; bin < hDirAC->num_freq_bands; bin++ ) + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - hDirAC->proto_frame_f[( bin * BINAURAL_CHANNELS ) + offset] = inRe[ch][slot][bin]; - hDirAC->proto_frame_f[( bin * BINAURAL_CHANNELS ) + offset + 1] = inIm[ch][slot][bin]; + hDiracDecBin->ChEneOut[ch][bin] += IIReneLimiter[bin] * hDiracDecBin->ChEneOutPrev[ch][bin]; } - } - /* Decorrelate proto signal to decorrelatedFrameInterleaved */ - ivas_dirac_dec_decorr_process( hDirAC->num_freq_bands, - hDirAC->num_outputs_diff, - hDirAC->num_protos_diff, - hDirAC->synthesisConf, - BINAURAL_CHANNELS, - hDirAC->proto_frame_f, - hDirAC->num_protos_diff, - hDirAC->proto_index_diff, - decorrelatedFrameInterleaved, - onset_filter, - hDirAC->h_freq_domain_decorr_ap_params, - hDirAC->h_freq_domain_decorr_ap_state ); + /* Store energy values and coefficients for next round */ + hDiracDecBin->ChCrossReOutPrev[bin] = hDiracDecBin->ChCrossReOut[bin]; + hDiracDecBin->ChCrossImOutPrev[bin] = hDiracDecBin->ChCrossImOut[bin]; - /* De-interleave decorrelated signals*/ - for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) - { - offset = hDirAC->num_freq_bands * BINAURAL_CHANNELS * ch; - for ( bin = 0; bin < hDirAC->num_freq_bands; bin++ ) + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - decRe[ch][bin] = decorrelatedFrameInterleaved[( bin * BINAURAL_CHANNELS ) + offset]; - decIm[ch][bin] = decorrelatedFrameInterleaved[( bin * BINAURAL_CHANNELS ) + offset + 1]; + hDiracDecBin->ChEneOutPrev[ch][bin] = hDiracDecBin->ChEneOut[ch][bin]; } } return; } - - +#else static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matrices( - Decoder_Struct *st_ivas, + DIRAC_DEC_BIN_HANDLE hDiracDecBin, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, + PARAMBIN_REND_CONFIG_HANDLE hConfig, float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float Rmat[3][3], const int16_t subframe, - const int16_t isHeadtracked ) + const int16_t isHeadtracked, + const MASA_ISM_DATA_HANDLE hMasaIsmData ) { int16_t ch, slot, bin; - uint8_t separateCenterChannelRendering; + int16_t separateCenterChannelRendering; int16_t nBins, idx; float frameMeanDiffusenessEneWeight[CLDFB_NO_CHANNELS_MAX]; - DIRAC_DEC_HANDLE hDirAC; - DIRAC_DEC_BIN_HANDLE h; float IIReneLimiterFactor; float qualityBasedSmFactor; float lowBitRateEQ[CLDFB_NO_CHANNELS_MAX]; @@ -787,22 +1625,31 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric int16_t dirac_read_idx; float subFrameTotalEne[CLDFB_NO_CHANNELS_MAX]; PARAMBIN_HRTF_GAIN_CACHE gainCache[MAX_GAIN_CACHE_SIZE]; - - hDirAC = st_ivas->hDirAC; - h = st_ivas->hDiracDecBin; - separateCenterChannelRendering = st_ivas->hOutSetup.separateChannelEnabled; - nBins = hDirAC->num_freq_bands; /* Actually bins */ - - set_zero( h->ChCrossRe, nBins ); - set_zero( h->ChCrossIm, nBins ); - set_zero( h->ChCrossReOut, nBins ); - set_zero( h->ChCrossImOut, nBins ); + IVAS_FORMAT ivas_format; + MC_MODE mc_mode; + int32_t ivas_total_brate; + int16_t nchan_transport; + int16_t gainCacheBaseIndex; + + separateCenterChannelRendering = hConfig->separateCenterChannelRendering; + ivas_format = hConfig->ivas_format; + mc_mode = hConfig->mc_mode; + ivas_total_brate = hConfig->ivas_total_brate; + nchan_transport = hConfig->nchan_transport; + qualityBasedSmFactor = hConfig->qualityBasedSmFactor; + qualityBasedSmFactor *= qualityBasedSmFactor; + nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */ + + set_zero( hDiracDecBin->ChCrossRe, nBins ); + set_zero( hDiracDecBin->ChCrossIm, nBins ); + set_zero( hDiracDecBin->ChCrossReOut, nBins ); + set_zero( hDiracDecBin->ChCrossImOut, nBins ); for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - set_zero( h->ChEne[ch], nBins ); - set_zero( h->ChEneOut[ch], nBins ); + set_zero( hDiracDecBin->ChEne[ch], nBins ); + set_zero( hDiracDecBin->ChEneOut[ch], nBins ); } - set_zero( h->frameMeanDiffuseness, nBins ); + set_zero( hDiracDecBin->frameMeanDiffuseness, nBins ); set_zero( frameMeanDiffusenessEneWeight, CLDFB_NO_CHANNELS_MAX ); @@ -813,10 +1660,10 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric /* Determine EQ for low bit rates (13.2 and 16.4 kbps) */ applyLowBitRateEQ = 0; - if ( ( st_ivas->ivas_format == MASA_FORMAT || st_ivas->ivas_format == MC_FORMAT ) && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE ) + if ( ( ivas_format == MASA_FORMAT || ivas_format == MC_FORMAT ) && ivas_total_brate < MASA_STEREO_MIN_BITRATE ) { applyLowBitRateEQ = 1; - if ( st_ivas->hDecoderConfig->ivas_total_brate == IVAS_16k4 ) + if ( ivas_total_brate == IVAS_16k4 ) { for ( bin = 0; bin < LOW_BIT_RATE_BINAURAL_EQ_BINS; bin++ ) { @@ -834,10 +1681,10 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric /* Formulate input and target covariance matrices for this subframe */ set_zero( subFrameTotalEne, CLDFB_NO_CHANNELS_MAX ); - dirac_read_idx = hDirAC->render_to_md_map[subframe]; + dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe]; /* Calculate input covariance matrix */ - for ( slot = 0; slot < hDirAC->subframe_nbslots[subframe]; slot++ ) + for ( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) { for ( bin = 0; bin < nBins; bin++ ) { @@ -847,13 +1694,13 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric instEne = ( inRe[ch][slot][bin] * inRe[ch][slot][bin] ); instEne += ( inIm[ch][slot][bin] * inIm[ch][slot][bin] ); - h->ChEne[ch][bin] += instEne; + hDiracDecBin->ChEne[ch][bin] += instEne; subFrameTotalEne[bin] += instEne; } - h->ChCrossRe[bin] += inRe[0][slot][bin] * inRe[1][slot][bin]; - h->ChCrossRe[bin] += inIm[0][slot][bin] * inIm[1][slot][bin]; - h->ChCrossIm[bin] += inRe[0][slot][bin] * inIm[1][slot][bin]; - h->ChCrossIm[bin] -= inIm[0][slot][bin] * inRe[1][slot][bin]; + hDiracDecBin->ChCrossRe[bin] += inRe[0][slot][bin] * inRe[1][slot][bin]; + hDiracDecBin->ChCrossRe[bin] += inIm[0][slot][bin] * inIm[1][slot][bin]; + hDiracDecBin->ChCrossIm[bin] += inRe[0][slot][bin] * inIm[1][slot][bin]; + hDiracDecBin->ChCrossIm[bin] -= inIm[0][slot][bin] * inRe[1][slot][bin]; } } @@ -872,27 +1719,35 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric } } - if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->nchan_transport == 2 ) + if ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && nchan_transport == 2 ) { float tempRe, tempIm; + float subFrameSumEne[CLDFB_NO_CHANNELS_MAX]; - set_zero( subFrameTotalEne, CLDFB_NO_CHANNELS_MAX ); + v_multc( subFrameTotalEne, SBA_CARDI_TARGET_ENERGY_GAIN, subFrameTotalEne, nBins ); - for ( slot = 0; slot < hDirAC->subframe_nbslots[subframe]; slot++ ) + set_zero( subFrameSumEne, CLDFB_NO_CHANNELS_MAX ); + for ( slot = 0; slot < hSpatParamRendCom->subframe_nbslots[subframe]; slot++ ) { for ( bin = 0; bin < nBins; bin++ ) { tempRe = inRe[0][slot][bin] + inRe[1][slot][bin]; tempIm = inIm[0][slot][bin] + inIm[1][slot][bin]; - subFrameTotalEne[bin] += tempRe * tempRe + tempIm * tempIm; + subFrameSumEne[bin] += tempRe * tempRe + tempIm * tempIm; } } + for ( bin = 0; bin < nBins; bin++ ) + { + subFrameTotalEne[bin] = max( subFrameTotalEne[bin], subFrameSumEne[bin] ); + } } /* Determine target covariance matrix containing target binaural properties */ for ( bin = 0; bin < nBins; bin++ ) { - float diffuseness = 1.0f; /* ratio1 and ratio2 are subtracted from diffuseness further below */ + float diffuseness = 1.0f; /* ratio1 and ratio2 are subtracted from diffuseness further below */ + float diffusenessValForDecorrelationReduction = 1.0f; + float diffEneValForDecorrelationReduction; float surCoh = 0.0f, spreadCoh = 0.0f; /* Default values if spreadSurroundCoherenceApplied == false */ float diffEne, dirEne, meanEnePerCh; int16_t dirIndex; @@ -902,26 +1757,28 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric * 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 = h->earlyPartEneCorrection[bin] * subFrameTotalEne[bin] / 2.0f; + meanEnePerCh = hDiracDecBin->earlyPartEneCorrection[bin] * subFrameTotalEne[bin] / 2.0f; /* Determine direct part target covariance matrix (for 1 or 2 directions) */ - for ( dirIndex = 0; dirIndex < hDirAC->numSimultaneousDirections; dirIndex++ ) + for ( dirIndex = 0; dirIndex < hSpatParamRendCom->numSimultaneousDirections; dirIndex++ ) { int16_t aziDeg, eleDeg; float lRealp, lImagp, rRealp, rImagp; float lRealpTmp, lImagpTmp, rRealpTmp, rImagpTmp; float hrtfEne[BINAURAL_CHANNELS], hrtfCrossRe, hrtfCrossIm, ratio; + uint8_t isIsmDirection = 0; if ( dirIndex == 0 ) /* For first of the two simultaneous directions */ { - aziDeg = hDirAC->azimuth[dirac_read_idx][bin]; - eleDeg = hDirAC->elevation[dirac_read_idx][bin]; - ratio = hDirAC->energy_ratio1[dirac_read_idx][bin]; - spreadCoh = hDirAC->spreadCoherence[dirac_read_idx][bin]; + aziDeg = hSpatParamRendCom->azimuth[dirac_read_idx][bin]; + eleDeg = hSpatParamRendCom->elevation[dirac_read_idx][bin]; + ratio = hSpatParamRendCom->energy_ratio1[dirac_read_idx][bin]; + spreadCoh = hSpatParamRendCom->spreadCoherence[dirac_read_idx][bin]; + gainCacheBaseIndex = 0; } - else /* For second of the two simultaneous directions */ + else if ( ivas_format != MASA_ISM_FORMAT || ( ivas_format == MASA_ISM_FORMAT && dirIndex < hSpatParamRendCom->numParametricDirections ) ) /* For second of the two simultaneous directions */ { - if ( ( ratio = hDirAC->energy_ratio2[dirac_read_idx][bin] ) < 0.001 ) + if ( ( ratio = hSpatParamRendCom->energy_ratio2[dirac_read_idx][bin] ) < 0.001 ) { /* 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 @@ -929,12 +1786,48 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric * it is better to save complexity. */ continue; } - aziDeg = hDirAC->azimuth2[dirac_read_idx][bin]; - eleDeg = hDirAC->elevation2[dirac_read_idx][bin]; - spreadCoh = hDirAC->spreadCoherence2[dirac_read_idx][bin]; + aziDeg = hSpatParamRendCom->azimuth2[dirac_read_idx][bin]; + eleDeg = hSpatParamRendCom->elevation2[dirac_read_idx][bin]; + spreadCoh = hSpatParamRendCom->spreadCoherence2[dirac_read_idx][bin]; + gainCacheBaseIndex = 3; } + else /* For object directions of MASA_ISM_FORMAT */ + { + isIsmDirection = 1; + uint16_t ismDirIndex; + ismDirIndex = 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]; + eleDeg = hMasaIsmData->elevation_ism_edited[ismDirIndex]; + } + else + { + aziDeg = hMasaIsmData->azimuth_ism[ismDirIndex][dirac_read_idx]; + eleDeg = hMasaIsmData->elevation_ism[ismDirIndex][dirac_read_idx]; + } + ratio = hMasaIsmData->energy_ratio_ism[ismDirIndex][dirac_read_idx][bin]; + spreadCoh = 0.0f; + gainCacheBaseIndex = 6 + ismDirIndex; + } + diffuseness -= ratio; /* diffuseness = 1 - ratio1 - ratio2 */ + if ( diffuseness < 0.0f ) + { + diffuseness = 0.0f; + } + if ( isIsmDirection ) + { + /* Objects cause lesser decorrelation reduction, to avoid removing all decorrelation when only objects are present */ + diffusenessValForDecorrelationReduction -= ratio * 0.5f; + } + else + { + diffusenessValForDecorrelationReduction -= ratio; + } + if ( separateCenterChannelRendering ) { /* In masa + mono rendering mode, the center directions originate from phantom sources, so the @@ -949,9 +1842,9 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric spreadCoh = max( spreadCoh, altSpreadCoh ); } - getDirectPartGains( bin, aziDeg, eleDeg, &lRealp, &lImagp, &rRealp, &rImagp, h->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[( dirIndex * 3 )], isHeadtracked ); + getDirectPartGains( bin, aziDeg, eleDeg, &lRealp, &lImagp, &rRealp, &rImagp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[gainCacheBaseIndex], isHeadtracked ); - if ( h->renderStereoOutputInsteadOfBinaural ) + if ( hDiracDecBin->renderStereoOutputInsteadOfBinaural ) { /* Synthesizing spread coherence is not needed for stereo loudspeaker output, * as directional sound is reproduced with two loudspeakers in any case */ @@ -992,7 +1885,7 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric rImagp *= centerMul; /* Apply the gain for the left source of the three coherent sources */ - getDirectPartGains( bin, aziDeg + 30, eleDeg, &lRealpTmp, &lImagpTmp, &rRealpTmp, &rImagpTmp, h->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[( dirIndex * 3 + 1 )], isHeadtracked ); + getDirectPartGains( bin, aziDeg + 30, eleDeg, &lRealpTmp, &lImagpTmp, &rRealpTmp, &rImagpTmp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[gainCacheBaseIndex + 1], isHeadtracked ); hrtfEneSides = ( lRealpTmp * lRealpTmp ) + ( lImagpTmp * lImagpTmp ) + ( rRealpTmp * rRealpTmp ) + ( rImagpTmp * rImagpTmp ); lRealp += sidesMul * lRealpTmp; @@ -1002,8 +1895,7 @@ 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. */ - getDirectPartGains( bin, aziDeg + 330, eleDeg, &lRealpTmp, &lImagpTmp, &rRealpTmp, &rImagpTmp, h->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[( dirIndex * 3 + 2 )], isHeadtracked ); - + getDirectPartGains( bin, aziDeg + 330, eleDeg, &lRealpTmp, &lImagpTmp, &rRealpTmp, &rImagpTmp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[gainCacheBaseIndex + 2], isHeadtracked ); hrtfEneSides += ( lRealpTmp * lRealpTmp ) + ( lImagpTmp * lImagpTmp ) + ( rRealpTmp * rRealpTmp ) + ( rImagpTmp * rImagpTmp ); lRealp += sidesMul * lRealpTmp; lImagp += sidesMul * lImagpTmp; @@ -1030,7 +1922,7 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric w3 = 2.0f * spreadCoh - 1.0f; } - if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ) + if ( ( ivas_format == MC_FORMAT && mc_mode == MC_MODE_MCMASA ) ) { idx = min( bin, MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS - 1 ); @@ -1060,68 +1952,70 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric /* Add direct part (1 or 2) covariance matrix */ dirEne = ratio * meanEnePerCh; - h->ChEneOut[0][bin] += dirEne * hrtfEne[0]; /* Dir ene part*/ - h->ChEneOut[1][bin] += dirEne * hrtfEne[1]; - h->ChCrossReOut[bin] += dirEne * hrtfCrossRe; /* Dir cross re */ - h->ChCrossImOut[bin] += dirEne * hrtfCrossIm; /* Dir cross im */ + hDiracDecBin->ChEneOut[0][bin] += dirEne * hrtfEne[0]; /* Dir ene part*/ + hDiracDecBin->ChEneOut[1][bin] += dirEne * hrtfEne[1]; + hDiracDecBin->ChCrossReOut[bin] += dirEne * hrtfCrossRe; /* Dir cross re */ + hDiracDecBin->ChCrossImOut[bin] += dirEne * hrtfCrossIm; /* Dir cross im */ } /* Add diffuse / ambient part covariance matrix */ diffuseness = max( 0.0f, diffuseness ); diffEne = diffuseness * meanEnePerCh; - surCoh = hDirAC->surroundingCoherence[dirac_read_idx][bin]; - if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) ) + surCoh = hSpatParamRendCom->surroundingCoherence[dirac_read_idx][bin]; + + diffusenessValForDecorrelationReduction = max( 0.0f, diffusenessValForDecorrelationReduction ); + diffEneValForDecorrelationReduction = diffusenessValForDecorrelationReduction * meanEnePerCh; + + if ( ( ivas_format == MC_FORMAT && mc_mode == MC_MODE_MCMASA ) ) { - if ( !h->renderStereoOutputInsteadOfBinaural ) + if ( !hDiracDecBin->renderStereoOutputInsteadOfBinaural ) { + float spectrumModVal; + idx = min( bin, MASA_NUM_DEFINED_SUR_SPR_COH_ENE_BINS - 1 ); /* Apply target spectrum that emphasizes low frequencies when the sound is surround coherent */ - diffEne *= ( 1.0f - surCoh ) + surCoh * surCohEne[idx]; + spectrumModVal = ( 1.0f - surCoh ) + surCoh * surCohEne[idx]; + diffEne *= spectrumModVal; + + /* Modify also the value for decorrelation reduction */ + diffEneValForDecorrelationReduction *= spectrumModVal; } } - h->ChEneOut[0][bin] += diffEne; /* Diff ene part*/ - h->ChEneOut[1][bin] += diffEne; + hDiracDecBin->ChEneOut[0][bin] += diffEne; /* Diff ene part*/ + hDiracDecBin->ChEneOut[1][bin] += diffEne; - if ( h->renderStereoOutputInsteadOfBinaural ) + if ( hDiracDecBin->renderStereoOutputInsteadOfBinaural ) { /* When rendering stereo, ambience (except for surround coherent sound) has zero ICC. */ - h->ChCrossReOut[bin] += surCoh * diffEne; + hDiracDecBin->ChCrossReOut[bin] += surCoh * diffEne; } else /* When rendering binaural, ambience has frequency dependent ICC. */ { - if ( st_ivas->ivas_format == SBA_FORMAT && bin < BINAURAL_COHERENCE_DIFFERENCE_BINS ) + if ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && bin < BINAURAL_COHERENCE_DIFFERENCE_BINS ) { float diffuseFieldCoherence; - diffuseFieldCoherence = hDirAC->hDiffuseDist->diffuseRatioX[bin] * h->diffuseFieldCoherenceX[bin] + hDirAC->hDiffuseDist->diffuseRatioY[bin] * h->diffuseFieldCoherenceY[bin] + hDirAC->hDiffuseDist->diffuseRatioZ[bin] * h->diffuseFieldCoherenceZ[bin]; - h->ChCrossReOut[bin] += ( ( 1.0f - surCoh ) * diffuseFieldCoherence + surCoh ) * diffEne; + diffuseFieldCoherence = hDiracDecBin->hDiffuseDist->diffuseRatioX[bin] * hDiracDecBin->diffuseFieldCoherenceX[bin] + hDiracDecBin->hDiffuseDist->diffuseRatioY[bin] * hDiracDecBin->diffuseFieldCoherenceY[bin] + hDiracDecBin->hDiffuseDist->diffuseRatioZ[bin] * hDiracDecBin->diffuseFieldCoherenceZ[bin]; + hDiracDecBin->ChCrossReOut[bin] += ( ( 1.0f - surCoh ) * diffuseFieldCoherence + surCoh ) * diffEne; } else { - h->ChCrossReOut[bin] += ( ( 1.0f - surCoh ) * h->diffuseFieldCoherence[bin] + surCoh ) * diffEne; + hDiracDecBin->ChCrossReOut[bin] += ( ( 1.0f - surCoh ) * hDiracDecBin->diffuseFieldCoherence[bin] + surCoh ) * diffEne; } } /* Store parameters for formulating average diffuseness over frame */ - h->frameMeanDiffuseness[bin] += diffEne; + hDiracDecBin->frameMeanDiffuseness[bin] += diffEneValForDecorrelationReduction; frameMeanDiffusenessEneWeight[bin] += meanEnePerCh; } /* Formulate average diffuseness over frame */ for ( bin = 0; bin < nBins; bin++ ) { - h->frameMeanDiffuseness[bin] /= fmaxf( 1e-12f, frameMeanDiffusenessEneWeight[bin] ); - } - - /* Determine encoding quality based additional smoothing factor */ - qualityBasedSmFactor = 1.0f; - if ( st_ivas->hMasa != NULL ) - { - qualityBasedSmFactor = st_ivas->hMasa->data.dir_decode_quality; - qualityBasedSmFactor *= qualityBasedSmFactor; + hDiracDecBin->frameMeanDiffuseness[bin] /= fmaxf( 1e-12f, frameMeanDiffusenessEneWeight[bin] ); } - /* Temporal IIR-type smoothing of covariance matrices */ - if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE ) + /* Temporal IIR-type smoothing of covariance matrices. Also apply encoding quality based smoothing factor. */ + if ( ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE ) { IIReneLimiterFactor = 16.0f + ( 1.0f - qualityBasedSmFactor ); } @@ -1136,65 +2030,86 @@ static void ivas_dirac_dec_binaural_formulate_input_and_target_covariance_matric /* 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. */ - eneRatio = ( h->ChEne[0][bin] + h->ChEne[1][bin] ) / fmaxf( 1e-12f, ( h->ChEnePrev[0][bin] + h->ChEnePrev[1][bin] ) ); + eneRatio = ( hDiracDecBin->ChEne[0][bin] + hDiracDecBin->ChEne[1][bin] ) / fmaxf( 1e-12f, ( hDiracDecBin->ChEnePrev[0][bin] + hDiracDecBin->ChEnePrev[1][bin] ) ); IIReneLimiter = fminf( 1.0f, eneRatio * IIReneLimiterFactor ); - h->ChCrossRe[bin] *= qualityBasedSmFactor; - h->ChCrossIm[bin] *= qualityBasedSmFactor; - h->ChCrossReOut[bin] *= qualityBasedSmFactor; - h->ChCrossImOut[bin] *= qualityBasedSmFactor; + hDiracDecBin->ChCrossRe[bin] *= qualityBasedSmFactor; + hDiracDecBin->ChCrossIm[bin] *= qualityBasedSmFactor; + hDiracDecBin->ChCrossReOut[bin] *= qualityBasedSmFactor; + hDiracDecBin->ChCrossImOut[bin] *= qualityBasedSmFactor; for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - h->ChEne[ch][bin] *= qualityBasedSmFactor; - h->ChEneOut[ch][bin] *= qualityBasedSmFactor; + hDiracDecBin->ChEne[ch][bin] *= qualityBasedSmFactor; + hDiracDecBin->ChEneOut[ch][bin] *= qualityBasedSmFactor; } - h->ChCrossRe[bin] += IIReneLimiter * h->ChCrossRePrev[bin]; - h->ChCrossIm[bin] += IIReneLimiter * h->ChCrossImPrev[bin]; - h->ChCrossReOut[bin] += IIReneLimiter * h->ChCrossReOutPrev[bin]; - h->ChCrossImOut[bin] += IIReneLimiter * h->ChCrossImOutPrev[bin]; + hDiracDecBin->ChCrossRe[bin] += IIReneLimiter * hDiracDecBin->ChCrossRePrev[bin]; + hDiracDecBin->ChCrossIm[bin] += IIReneLimiter * hDiracDecBin->ChCrossImPrev[bin]; + hDiracDecBin->ChCrossReOut[bin] += IIReneLimiter * hDiracDecBin->ChCrossReOutPrev[bin]; + hDiracDecBin->ChCrossImOut[bin] += IIReneLimiter * hDiracDecBin->ChCrossImOutPrev[bin]; for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - h->ChEne[ch][bin] += IIReneLimiter * h->ChEnePrev[ch][bin]; - h->ChEneOut[ch][bin] += IIReneLimiter * h->ChEneOutPrev[ch][bin]; + hDiracDecBin->ChEne[ch][bin] += IIReneLimiter * hDiracDecBin->ChEnePrev[ch][bin]; + hDiracDecBin->ChEneOut[ch][bin] += IIReneLimiter * hDiracDecBin->ChEneOutPrev[ch][bin]; } /* Store energy values and coefficients for next round */ - h->ChCrossRePrev[bin] = h->ChCrossRe[bin]; - h->ChCrossImPrev[bin] = h->ChCrossIm[bin]; - h->ChCrossReOutPrev[bin] = h->ChCrossReOut[bin]; - h->ChCrossImOutPrev[bin] = h->ChCrossImOut[bin]; + hDiracDecBin->ChCrossRePrev[bin] = hDiracDecBin->ChCrossRe[bin]; + hDiracDecBin->ChCrossImPrev[bin] = hDiracDecBin->ChCrossIm[bin]; + hDiracDecBin->ChCrossReOutPrev[bin] = hDiracDecBin->ChCrossReOut[bin]; + hDiracDecBin->ChCrossImOutPrev[bin] = hDiracDecBin->ChCrossImOut[bin]; for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) { - h->ChEnePrev[ch][bin] = h->ChEne[ch][bin]; - h->ChEneOutPrev[ch][bin] = h->ChEneOut[ch][bin]; + hDiracDecBin->ChEnePrev[ch][bin] = hDiracDecBin->ChEne[ch][bin]; + hDiracDecBin->ChEneOutPrev[ch][bin] = hDiracDecBin->ChEneOut[ch][bin]; } } return; } - +#endif static void ivas_dirac_dec_binaural_determine_processing_matrices( - Decoder_Struct *st_ivas, + DIRAC_DEC_BIN_HANDLE hDiracDecBin, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, + PARAMBIN_REND_CONFIG_HANDLE hConfig, const int16_t max_band_decorr, float Rmat[3][3], - const int16_t isHeadtracked ) + const int16_t subframe, + const int16_t isHeadtracked, + const int16_t nchanSeparateChannels, + const MASA_ISM_DATA_HANDLE hMasaIsmData ) { int16_t chA, chB, bin; - uint8_t separateCenterChannelRendering; + int16_t separateCenterChannelRendering; int16_t nBins; - DIRAC_DEC_BIN_HANDLE h; - PARAMBIN_HRTF_GAIN_CACHE gainCache; + int16_t dirac_read_idx; + PARAMBIN_HRTF_GAIN_CACHE gainCache[MAX_NUM_OBJECTS]; + int16_t idx; + ISM_MODE ism_mode; + IVAS_FORMAT ivas_format; + MC_MODE mc_mode; + int32_t ivas_total_brate; + int16_t nchan_transport; + + ivas_format = hConfig->ivas_format; + separateCenterChannelRendering = nchanSeparateChannels > 0; + mc_mode = hConfig->mc_mode; + ivas_total_brate = hConfig->ivas_total_brate; + nchan_transport = hConfig->nchan_transport; + nBins = hSpatParamRendCom->num_freq_bands; /* Actually bins */ - h = st_ivas->hDiracDecBin; - separateCenterChannelRendering = st_ivas->hOutSetup.separateChannelEnabled; - nBins = st_ivas->hDirAC->num_freq_bands; /* Actually bins */ + ism_mode = hConfig->ism_mode; - gainCache.azi = -1000; /* Use -1000 as value for uninitialized cache. */ + dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe]; + + for ( idx = 0; idx < MAX_NUM_OBJECTS; idx++ ) + { + gainCache[idx].azi = -1000; /* Use -1000 as value for uninitialized cache. */ + } for ( bin = 0; bin < nBins; bin++ ) { @@ -1210,21 +2125,21 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( CrEneR = 0.0f; /* Formulate main processing matrix M */ - formulate2x2MixingMatrix( h->ChEne[0][bin], h->ChEne[1][bin], - h->ChCrossRe[bin], h->ChCrossIm[bin], - h->ChEneOut[0][bin], h->ChEneOut[1][bin], - h->ChCrossReOut[bin], h->ChCrossImOut[bin], - prototypeMtx, Mre, Mim, h->reqularizationFactor ); + formulate2x2MixingMatrix( hDiracDecBin->ChEne[0][bin], hDiracDecBin->ChEne[1][bin], + hDiracDecBin->ChCrossRe[bin], hDiracDecBin->ChCrossIm[bin], + hDiracDecBin->ChEneOut[0][bin], hDiracDecBin->ChEneOut[1][bin], + hDiracDecBin->ChCrossReOut[bin], hDiracDecBin->ChCrossImOut[bin], + prototypeMtx, Mre, Mim, hDiracDecBin->reqularizationFactor ); /* Load estimated covariance matrix to the [2][2] matrix form */ - CxRe[0][0] = h->ChEne[0][bin]; - CxRe[1][1] = h->ChEne[1][bin]; - CxRe[1][0] = h->ChCrossRe[bin]; - CxRe[0][1] = h->ChCrossRe[bin]; + CxRe[0][0] = hDiracDecBin->ChEne[0][bin]; + CxRe[1][1] = hDiracDecBin->ChEne[1][bin]; + CxRe[1][0] = hDiracDecBin->ChCrossRe[bin]; + CxRe[0][1] = hDiracDecBin->ChCrossRe[bin]; CxIm[0][0] = 0.0f; CxIm[1][1] = 0.0f; - CxIm[1][0] = h->ChCrossIm[bin]; - CxIm[0][1] = -h->ChCrossIm[bin]; + CxIm[1][0] = hDiracDecBin->ChCrossIm[bin]; + CxIm[0][1] = -hDiracDecBin->ChCrossIm[bin]; /* Make matrix multiplication M*Cx*M' to determine resulting covariance matrix of processing input with M */ matrixMul( Mre, Mim, CxRe, CxIm, tmpMtxRe, tmpMtxIm ); @@ -1240,30 +2155,30 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( /* Subtract the resulting covariance matrix from the target covariance matrix to determine * what signal component is missing. The result is the target covariance matrix for the residual signal, i.e., * a residual covariance matrix. */ - CrEneL = max( 0.0f, h->ChEneOut[0][bin] - resultMtxRe[0][0] ); - CrEneR = max( 0.0f, h->ChEneOut[1][bin] - resultMtxRe[1][1] ); - CrCrossRe = h->ChCrossReOut[bin] - resultMtxRe[1][0]; - CrCrossIm = h->ChCrossImOut[bin] - resultMtxIm[1][0]; + CrEneL = max( 0.0f, hDiracDecBin->ChEneOut[0][bin] - resultMtxRe[0][0] ); + CrEneR = max( 0.0f, hDiracDecBin->ChEneOut[1][bin] - resultMtxRe[1][1] ); + CrCrossRe = hDiracDecBin->ChCrossReOut[bin] - resultMtxRe[1][0]; + CrCrossIm = hDiracDecBin->ChCrossImOut[bin] - resultMtxIm[1][0]; /* The amount of the decorrelated sound is further controlled based on the spatial metadata, * by determining an energy-suppressed residual covariance matrix that is a control parameter * that guides the processing of the decorrelated sound to a residual signal. * The procedure improves quality in e.g. double-talk 2-direction rendering situations.*/ - if ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->hDecoderConfig->ivas_total_brate < MASA_STEREO_MIN_BITRATE ) + if ( ivas_format == MASA_FORMAT && ivas_total_brate < MASA_STEREO_MIN_BITRATE ) { decorrelationReductionFactor = 1.0f; } - else if ( ( st_ivas->ivas_format == MC_FORMAT && st_ivas->mc_mode == MC_MODE_MCMASA ) || ( st_ivas->ivas_format == MASA_FORMAT && st_ivas->nchan_transport == 1 ) ) + else if ( ( ivas_format == MC_FORMAT && mc_mode == MC_MODE_MCMASA ) || ( ivas_format == MASA_FORMAT && nchan_transport == 1 ) ) { - decorrelationReductionFactor = sqrtf( fmaxf( 0.0f, h->frameMeanDiffuseness[bin] ) ); + decorrelationReductionFactor = sqrtf( fmaxf( 0.0f, hDiracDecBin->frameMeanDiffuseness[bin] ) ); } - else if ( st_ivas->ivas_format == SBA_FORMAT && st_ivas->nchan_transport == 1 ) + else if ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && nchan_transport == 1 ) { decorrelationReductionFactor = 1.0f; } else { - decorrelationReductionFactor = fmaxf( 0.0f, h->frameMeanDiffuseness[bin] ); + decorrelationReductionFactor = fmaxf( 0.0f, hDiracDecBin->frameMeanDiffuseness[bin] ); } CrEneL *= decorrelationReductionFactor; CrEneR *= decorrelationReductionFactor; @@ -1272,7 +2187,7 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( /* Determine a residual mixing matrix Mdec for processing the decorrelated signal to obtain * the residual signal (that has the residual covariance matrix) */ - formulate2x2MixingMatrix( h->ChEne[0][bin], h->ChEne[1][bin], + formulate2x2MixingMatrix( hDiracDecBin->ChEne[0][bin], hDiracDecBin->ChEne[1][bin], 0.0f, 0.0f, /* Decorrelated signal has ideally no cross-terms */ CrEneL, CrEneR, CrCrossRe, CrCrossIm, @@ -1289,7 +2204,7 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( /* The regularizations at determining mixing matrices cause signal energy to be lost to some degree, which is compensated for here */ realizedOutputEne = CrEneL + CrEneR + resultMtxRe[0][0] + resultMtxRe[1][1]; - targetOutputEne = h->ChEneOut[0][bin] + h->ChEneOut[1][bin]; + targetOutputEne = hDiracDecBin->ChEneOut[0][bin] + hDiracDecBin->ChEneOut[1][bin]; missingOutputEne = fmaxf( 0.0f, targetOutputEne - realizedOutputEne ); gain = sqrtf( ( resultMtxRe[0][0] + resultMtxRe[1][1] + missingOutputEne ) / @@ -1310,15 +2225,15 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( { for ( chB = 0; chB < BINAURAL_CHANNELS; chB++ ) { - h->processMtxRePrev[chA][chB][bin] = h->processMtxRe[chA][chB][bin]; - h->processMtxImPrev[chA][chB][bin] = h->processMtxIm[chA][chB][bin]; - h->processMtxDecRePrev[chA][chB][bin] = h->processMtxDecRe[chA][chB][bin]; - h->processMtxDecImPrev[chA][chB][bin] = h->processMtxDecIm[chA][chB][bin]; - - h->processMtxRe[chA][chB][bin] = Mre[chA][chB]; - h->processMtxIm[chA][chB][bin] = Mim[chA][chB]; - h->processMtxDecRe[chA][chB][bin] = MdecRe[chA][chB]; - h->processMtxDecIm[chA][chB][bin] = MdecIm[chA][chB]; + hDiracDecBin->processMtxRePrev[chA][chB][bin] = hDiracDecBin->processMtxRe[chA][chB][bin]; + hDiracDecBin->processMtxImPrev[chA][chB][bin] = hDiracDecBin->processMtxIm[chA][chB][bin]; + hDiracDecBin->processMtxDecRePrev[chA][chB][bin] = hDiracDecBin->processMtxDecRe[chA][chB][bin]; + hDiracDecBin->processMtxDecImPrev[chA][chB][bin] = hDiracDecBin->processMtxDecIm[chA][chB][bin]; + + hDiracDecBin->processMtxRe[chA][chB][bin] = Mre[chA][chB]; + hDiracDecBin->processMtxIm[chA][chB][bin] = Mim[chA][chB]; + hDiracDecBin->processMtxDecRe[chA][chB][bin] = MdecRe[chA][chB]; + hDiracDecBin->processMtxDecIm[chA][chB][bin] = MdecIm[chA][chB]; } } @@ -1330,20 +2245,56 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( float gainFactor; int16_t aziDeg = 0; int16_t eleDeg = 0; + uint8_t instantChange = 0; - gainFactor = 0.8414f * sqrtf( h->earlyPartEneCorrection[bin] ); - for ( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + if ( ivas_format == MASA_ISM_FORMAT ) + { + gainFactor = 0.7943f * sqrtf( hDiracDecBin->earlyPartEneCorrection[bin] ); + } + else { - h->processMtxRePrev[chA][2][bin] = h->processMtxRe[chA][2][bin]; - h->processMtxImPrev[chA][2][bin] = h->processMtxIm[chA][2][bin]; + gainFactor = 0.8414f * sqrtf( hDiracDecBin->earlyPartEneCorrection[bin] ); } - getDirectPartGains( bin, aziDeg, eleDeg, &lRealp, &lImagp, &rRealp, &rImagp, h->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache, isHeadtracked ); + for ( chB = 0; chB < nchanSeparateChannels; chB++ ) + { + if ( ivas_format == MASA_ISM_FORMAT ) + { + if ( ism_mode == ISM_MASA_MODE_DISC ) + { + aziDeg = hMasaIsmData->azimuth_ism[chB][dirac_read_idx]; + eleDeg = hMasaIsmData->elevation_ism[chB][dirac_read_idx]; + } + else + { + aziDeg = hMasaIsmData->azimuth_separated_ism[dirac_read_idx]; + eleDeg = hMasaIsmData->elevation_separated_ism[dirac_read_idx]; + instantChange = 1; + } + } + + for ( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + hDiracDecBin->processMtxRePrev[chA][chB + 2][bin] = hDiracDecBin->processMtxRe[chA][chB + 2][bin]; + hDiracDecBin->processMtxImPrev[chA][chB + 2][bin] = hDiracDecBin->processMtxIm[chA][chB + 2][bin]; + } + + getDirectPartGains( bin, aziDeg, eleDeg, &lRealp, &lImagp, &rRealp, &rImagp, hDiracDecBin->renderStereoOutputInsteadOfBinaural, Rmat, &gainCache[chB], isHeadtracked ); + + hDiracDecBin->processMtxRe[0][chB + 2][bin] = lRealp * gainFactor; + hDiracDecBin->processMtxIm[0][chB + 2][bin] = lImagp * gainFactor; + hDiracDecBin->processMtxRe[1][chB + 2][bin] = rRealp * gainFactor; + hDiracDecBin->processMtxIm[1][chB + 2][bin] = rImagp * gainFactor; - h->processMtxRe[0][2][bin] = lRealp * gainFactor; - h->processMtxIm[0][2][bin] = lImagp * gainFactor; - h->processMtxRe[1][2][bin] = rRealp * gainFactor; - h->processMtxIm[1][2][bin] = rImagp * gainFactor; + if ( instantChange ) + { + for ( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + hDiracDecBin->processMtxRePrev[chA][chB + 2][bin] = hDiracDecBin->processMtxRe[chA][chB + 2][bin]; + hDiracDecBin->processMtxImPrev[chA][chB + 2][bin] = hDiracDecBin->processMtxIm[chA][chB + 2][bin]; + } + } + } } } @@ -1352,45 +2303,86 @@ static void ivas_dirac_dec_binaural_determine_processing_matrices( static void ivas_dirac_dec_binaural_process_output( - Decoder_Struct *st_ivas, + DIRAC_DEC_BIN_HANDLE hDiracDecBin, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, + HANDLE_CLDFB_FILTER_BANK cldfbSynDec[MAX_OUTPUT_CHANNELS], float *output_f[], float inRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], float inIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], const int16_t max_band_decorr, const int16_t numInChannels, - const int16_t subframe ) + const int16_t processReverb, + const int16_t subframe +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + , + float outRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float outIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float reverbRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float reverbIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float decorrRe[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + float decorrIm[][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX], + const uint8_t recompute +#endif +) { int16_t slot, bin, chA, chB; int16_t nBins; float outSlotRe[CLDFB_NO_CHANNELS_MAX], outSlotIm[CLDFB_NO_CHANNELS_MAX]; float decSlotRe[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX], decSlotIm[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; +#ifndef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN float reverbRe[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; float reverbIm[BINAURAL_CHANNELS][CLDFB_SLOTS_PER_SUBFRAME][CLDFB_NO_CHANNELS_MAX]; - DIRAC_DEC_BIN_HANDLE h; +#endif float interpVal; float *decSlotRePointer; float *decSlotImPointer; int16_t offsetSamples; int16_t nSlots; - h = st_ivas->hDiracDecBin; - nBins = st_ivas->hDirAC->num_freq_bands; + nBins = hSpatParamRendCom->num_freq_bands; offsetSamples = 0; - nSlots = st_ivas->hDirAC->subframe_nbslots[subframe]; + nSlots = hSpatParamRendCom->subframe_nbslots[subframe]; - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + if ( processReverb ) { /* Process second / room effect part of binaural output when needed */ - ivas_binaural_reverb_processSubframe( st_ivas->hDiracDecBin->hReverb, numInChannels, nSlots, inRe, inIm, reverbRe, reverbIm ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( recompute == 1 ) + { +#endif + ivas_binaural_reverb_processSubframe( hDiracDecBin->hReverb, numInChannels, nSlots, inRe, inIm, reverbRe, reverbIm ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + } +#endif } interpVal = 0.0f; for ( slot = 0; slot < nSlots; slot++ ) { interpVal += 1.0f / (float) nSlots; - if ( !st_ivas->hDiracDecBin->useTdDecorr && max_band_decorr > 0 ) + if ( !hDiracDecBin->useTdDecorr && max_band_decorr > 0 ) { - ivas_dirac_dec_decorrelate_slot( st_ivas->hDirAC, slot, inRe, inIm, decSlotRe, decSlotIm ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( recompute == 1 ) + { +#endif + ivas_dirac_dec_decorrelate_slot( hDiracDecBin, nBins, slot, inRe, inIm, decSlotRe, decSlotIm ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + for ( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + mvr2r( decSlotRe[chA], decorrRe[chA][slot], CLDFB_NO_CHANNELS_MAX ); + mvr2r( decSlotIm[chA], decorrIm[chA][slot], CLDFB_NO_CHANNELS_MAX ); + } + } + else + { + for ( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) + { + mvr2r( decorrRe[chA][slot], decSlotRe[chA], CLDFB_NO_CHANNELS_MAX ); + mvr2r( decorrIm[chA][slot], decSlotIm[chA], CLDFB_NO_CHANNELS_MAX ); + } + } +#endif } for ( chA = 0; chA < BINAURAL_CHANNELS; chA++ ) @@ -1403,49 +2395,62 @@ static void ivas_dirac_dec_binaural_process_output( /* Processing of the first / HRTF part of the binaural output. */ for ( chB = 0; chB < numInChannels; chB++ ) { - if ( st_ivas->hDiracDecBin->useTdDecorr ) + if ( chB < BINAURAL_CHANNELS ) { - decSlotRePointer = inRe[chB + 2][slot]; - decSlotImPointer = inIm[chB + 2][slot]; + /* Decorrelator signal for TD decorrelation is stored in two input channels above the two normal inputs. + * It should be noted that TD decorrelation is used only in cases where numInChannels is 2. If this + * changes, additional adjustments are required. When using CLDFB decorrelator, we simply assign the + * pointers to buffers. */ + if ( hDiracDecBin->useTdDecorr ) + { + decSlotRePointer = inRe[chB + 2][slot]; + decSlotImPointer = inIm[chB + 2][slot]; + } + else + { + decSlotRePointer = decSlotRe[chB]; + decSlotImPointer = decSlotIm[chB]; + } } else { - decSlotRePointer = decSlotRe[chB]; - decSlotImPointer = decSlotIm[chB]; + decSlotRePointer = NULL; /* below these pointers are used only for chB < 2 */ + decSlotImPointer = NULL; } + for ( bin = 0; bin < nBins; bin++ ) { float gain; /* Mixing using the formulated processing matrix M */ - gain = ( 1.0f - interpVal ) * h->processMtxRePrev[chA][chB][bin] + - interpVal * h->processMtxRe[chA][chB][bin]; + gain = ( 1.0f - interpVal ) * hDiracDecBin->processMtxRePrev[chA][chB][bin] + + interpVal * hDiracDecBin->processMtxRe[chA][chB][bin]; outSlotRe[bin] += gain * inRe[chB][slot][bin]; outSlotIm[bin] += gain * inIm[chB][slot][bin]; - gain = ( 1.0f - interpVal ) * h->processMtxImPrev[chA][chB][bin] + - interpVal * h->processMtxIm[chA][chB][bin]; + gain = ( 1.0f - interpVal ) * hDiracDecBin->processMtxImPrev[chA][chB][bin] + + interpVal * hDiracDecBin->processMtxIm[chA][chB][bin]; outSlotRe[bin] -= gain * inIm[chB][slot][bin]; outSlotIm[bin] += gain * inRe[chB][slot][bin]; /* Mixing decorrelated signals using the formulated residual processing matrix Mdec */ if ( bin < max_band_decorr && chB < 2 ) { - gain = ( 1.0f - interpVal ) * h->processMtxDecRePrev[chA][chB][bin] + - interpVal * h->processMtxDecRe[chA][chB][bin]; + gain = ( 1.0f - interpVal ) * hDiracDecBin->processMtxDecRePrev[chA][chB][bin] + + interpVal * hDiracDecBin->processMtxDecRe[chA][chB][bin]; outSlotRe[bin] += gain * decSlotRePointer[bin]; outSlotIm[bin] += gain * decSlotImPointer[bin]; - gain = ( 1.0f - interpVal ) * h->processMtxDecImPrev[chA][chB][bin] + - interpVal * h->processMtxDecIm[chA][chB][bin]; + gain = ( 1.0f - interpVal ) * hDiracDecBin->processMtxDecImPrev[chA][chB][bin] + + interpVal * hDiracDecBin->processMtxDecIm[chA][chB][bin]; outSlotRe[bin] -= gain * decSlotImPointer[bin]; outSlotIm[bin] += gain * decSlotRePointer[bin]; } } } - if ( st_ivas->renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM ) + if ( processReverb ) { /* Combine second (reverb) part with the first (HRTF) part to obtain binaural output signal with room effect */ v_add( outSlotRe, reverbRe[chA][slot], outSlotRe, CLDFB_NO_CHANNELS_MAX ); @@ -1455,8 +2460,22 @@ static void ivas_dirac_dec_binaural_process_output( outSlotRePr = &( outSlotRe[0] ); outSlotImPr = &( outSlotIm[0] ); +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + if ( outRe != NULL && outIm != NULL ) + { + /* provide the data outside in CLDFB domain => mainly for split rendering */ + mvr2r( outSlotRePr, outRe[chA][slot], CLDFB_NO_CHANNELS_MAX ); + mvr2r( outSlotImPr, outIm[chA][slot], CLDFB_NO_CHANNELS_MAX ); + } + if ( recompute == 1 ) + { + /* Inverse filter bank */ + cldfbSynthesis( &outSlotRePr, &outSlotImPr, &( output_f[chA][nBins * slot + offsetSamples] ), nBins, cldfbSynDec[chA] ); + } +#else /* Inverse filter bank */ - cldfbSynthesis( &outSlotRePr, &outSlotImPr, &( output_f[chA][nBins * slot + offsetSamples] ), nBins, st_ivas->cldfbSynDec[chA] ); + cldfbSynthesis( &outSlotRePr, &outSlotImPr, &( output_f[chA][nBins * slot + offsetSamples] ), nBins, cldfbSynDec[chA] ); +#endif } } @@ -2221,3 +3240,229 @@ float configure_reqularization_factor( return reqularizationFactor; } + + +/*-------------------------------------------------------------------* + * ivas_omasa_preProcessStereoTransportsForMovedObjects() + * + * + *-------------------------------------------------------------------*/ + +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 ) +{ + int16_t bin, ch, inCh, outCh, ismDirIndex, slot; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + MASA_ISM_DATA_HANDLE hMasaIsmData; + uint8_t enableCentering; + int16_t dirac_read_idx; + int16_t nSlots; + + hSpatParamRendCom = st_ivas->hSpatParamRendCom; + hMasaIsmData = st_ivas->hMasaIsmData; + + if ( st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_FOA || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_HOA2 || st_ivas->hDecoderConfig->output_config == AUDIO_CONFIG_HOA3 ) + { + enableCentering = 0; + } + else + { + enableCentering = 1; + } + + /* Bypass processing until first object is moved */ + if ( hMasaIsmData->objectsMoved == 0 ) + { + for ( ismDirIndex = 0; ismDirIndex < hSpatParamRendCom->numIsmDirections; ismDirIndex++ ) + { + if ( hMasaIsmData->ism_is_edited[ismDirIndex] ) + { + hMasaIsmData->objectsMoved = 1; + } + } + if ( hMasaIsmData->objectsMoved == 0 ) + { + /* No objects have moved so far */ + return; + } + } + + /* Perform object-movement based processing */ + nSlots = hSpatParamRendCom->subframe_nbslots[subframe]; + dirac_read_idx = hSpatParamRendCom->render_to_md_map[subframe]; + + for ( bin = 0; bin < nBins; bin++ ) + { + float ismPreprocMtxNew[2][2]; + float ismPreprocMtxIncrement[2][2]; + float eneMove[2]; + float enePreserve[2]; + float ismRatioAcc; + float subframeEne; + float normEnes[2]; + float remainderNormEne; + + set_zero( ismPreprocMtxNew[0], 2 ); + set_zero( ismPreprocMtxNew[1], 2 ); + set_zero( ismPreprocMtxIncrement[0], 2 ); + set_zero( ismPreprocMtxIncrement[1], 2 ); + set_zero( eneMove, 2 ); + set_zero( enePreserve, 2 ); + ismRatioAcc = 0.0f; + subframeEne = 0.0f; + set_zero( normEnes, 2 ); + + /* Determine transport normalized energies and subframe energy */ + for ( slot = 0; slot < nSlots; slot++ ) + { + for ( ch = 0; ch < 2; ch++ ) + { + normEnes[ch] += inRe[ch][slot][bin] * inRe[ch][slot][bin]; + normEnes[ch] += inIm[ch][slot][bin] * inIm[ch][slot][bin]; + } + } + subframeEne = normEnes[0] + normEnes[1]; + normEnes[0] /= fmaxf( 1e-12f, subframeEne ); + normEnes[1] /= fmaxf( 1e-12f, subframeEne ); + + /* For each ismDir, formulate a mix-matrix that moves object audio signals between + * left and right channels when needed. Make a combined matrix by a ratio-weighted sum */ + for ( ismDirIndex = 0; ismDirIndex < hSpatParamRendCom->numIsmDirections; ismDirIndex++ ) + { + float panGainsOut[2]; + float panGainsIn[2]; + float ratio; + float panEnesOut[2]; + float panEnesIn[2]; + float centeringFactor; + + ratio = hMasaIsmData->energy_ratio_ism[ismDirIndex][dirac_read_idx][bin]; + + ismRatioAcc += ratio; + + /* Get input and output panning gains */ + ivas_get_stereo_panning_gains( hMasaIsmData->azimuth_ism[ismDirIndex][dirac_read_idx], + hMasaIsmData->elevation_ism[ismDirIndex][dirac_read_idx], + panGainsIn ); + + if ( hMasaIsmData->ism_is_edited[ismDirIndex] ) + { + ivas_get_stereo_panning_gains( hMasaIsmData->azimuth_ism_edited[ismDirIndex], + hMasaIsmData->elevation_ism_edited[ismDirIndex], + panGainsOut ); + } + else + { + /* When not edited, input and output pan gains are the same */ + for ( ch = 0; ch < 2; ch++ ) + { + panGainsOut[ch] = panGainsIn[ch]; + } + } + + /* Determine pan enes */ + for ( ch = 0; ch < 2; ch++ ) + { + panEnesOut[ch] = panGainsOut[ch] * panGainsOut[ch]; + panEnesIn[ch] = panGainsIn[ch] * panGainsIn[ch]; + } + + if ( enableCentering ) + { + centeringFactor = fmaxf( 0.0f, 2.0f * fabsf( panEnesIn[0] - panEnesOut[0] ) - 1.0f ); + for ( ch = 0; ch < 2; ch++ ) + { + panEnesOut[ch] *= ( 1.0f - centeringFactor ); + panEnesOut[ch] += 0.5f * centeringFactor; + } + } + + for ( ch = 0; ch < 2; ch++ ) + { + float eneMoveThis; + float enePreserveThis; + eneMoveThis = fmaxf( 0.0f, panEnesIn[ch] - panEnesOut[ch] ); + enePreserveThis = panEnesIn[ch] - eneMoveThis; + + eneMove[ch] += ratio * eneMoveThis; + enePreserve[ch] += ratio * enePreserveThis; + + /* Subtract object parts from normEnes */ + normEnes[ch] -= panEnesIn[ch] * ratio; + } + } + + /* Any remaining (non-object) energy is set to be preserved at both channels */ + remainderNormEne = fmaxf( 0.0f, ( 1.0f - ismRatioAcc ) - normEnes[0] - normEnes[1] ); + for ( ch = 0; ch < 2; ch++ ) + { + enePreserve[ch] += fmaxf( 0.0f, normEnes[ch] + remainderNormEne / 2.0f ); + } + + /* Temporally average energy moving and preserving, and generate the transport signal preprocessing matrix */ + for ( ch = 0; ch < 2; ch++ ) + { + float normVal; + hMasaIsmData->eneMoveIIR[ch][bin] *= STEREO_PREPROCESS_IIR_FACTOR; + hMasaIsmData->eneMoveIIR[ch][bin] += eneMove[ch] * subframeEne; + hMasaIsmData->enePreserveIIR[ch][bin] *= STEREO_PREPROCESS_IIR_FACTOR; + hMasaIsmData->enePreserveIIR[ch][bin] += enePreserve[ch] * subframeEne; + normVal = fmaxf( EPSILON, hMasaIsmData->eneMoveIIR[ch][bin] + hMasaIsmData->enePreserveIIR[ch][bin] ); + ismPreprocMtxNew[ch][ch] = sqrtf( hMasaIsmData->enePreserveIIR[ch][bin] / normVal ); + ismPreprocMtxNew[1 - ch][ch] = sqrtf( hMasaIsmData->eneMoveIIR[ch][bin] / normVal ); + } + + /* Get increment value for temporal interpolation */ + for ( inCh = 0; inCh < 2; inCh++ ) + { + for ( outCh = 0; outCh < 2; outCh++ ) + { + ismPreprocMtxIncrement[outCh][inCh] = ( ismPreprocMtxNew[outCh][inCh] - hMasaIsmData->ismPreprocMatrix[outCh][inCh][bin] ) / (float) nSlots; + } + } + + /* Mix signals */ + for ( slot = 0; slot < nSlots; slot++ ) + { + float eqVal; + float outSlotRe[2]; + float outSlotIm[2]; + + set_zero( outSlotRe, 2 ); + set_zero( outSlotIm, 2 ); + + for ( outCh = 0; outCh < 2; outCh++ ) + { + for ( inCh = 0; inCh < 2; inCh++ ) + { + hMasaIsmData->ismPreprocMatrix[outCh][inCh][bin] += ismPreprocMtxIncrement[outCh][inCh]; + outSlotRe[outCh] += inRe[inCh][slot][bin] * hMasaIsmData->ismPreprocMatrix[outCh][inCh][bin]; + outSlotIm[outCh] += inIm[inCh][slot][bin] * hMasaIsmData->ismPreprocMatrix[outCh][inCh][bin]; + } + } + + /* IIR average the energy measures and determine and apply energy-preserving equalizer */ + hMasaIsmData->preprocEneTarget[bin] *= STEREO_PREPROCESS_IIR_FACTOR; + hMasaIsmData->preprocEneRealized[bin] *= STEREO_PREPROCESS_IIR_FACTOR; + for ( ch = 0; ch < 2; ch++ ) + { + hMasaIsmData->preprocEneTarget[bin] += inRe[ch][slot][bin] * inRe[ch][slot][bin]; + hMasaIsmData->preprocEneTarget[bin] += inIm[ch][slot][bin] * inIm[ch][slot][bin]; + hMasaIsmData->preprocEneRealized[bin] += outSlotRe[ch] * outSlotRe[ch]; + hMasaIsmData->preprocEneRealized[bin] += outSlotIm[ch] * outSlotIm[ch]; + } + eqVal = fminf( 4.0f, sqrtf( hMasaIsmData->preprocEneTarget[bin] / fmaxf( 1e-12f, hMasaIsmData->preprocEneRealized[bin] ) ) ); + for ( ch = 0; ch < 2; ch++ ) + { + inRe[ch][slot][bin] = outSlotRe[ch] * eqVal; + inIm[ch][slot][bin] = outSlotIm[ch] * eqVal; + } + } + } + + return; +} diff --git a/lib_dec/ivas_dirac_decorr_dec.c b/lib_rend/ivas_dirac_decorr_dec.c similarity index 99% rename from lib_dec/ivas_dirac_decorr_dec.c rename to lib_rend/ivas_dirac_decorr_dec.c index 3687ed53b186321928374b7f55b33e8f6d99a998..e8311888819097d56c1a30837fe588d2cd501046 100644 --- a/lib_dec/ivas_dirac_decorr_dec.c +++ b/lib_rend/ivas_dirac_decorr_dec.c @@ -37,9 +37,9 @@ #include "cnst.h" #include "prot.h" #include "ivas_prot.h" +#include "ivas_prot_rend.h" #include "ivas_stat_dec.h" #include "ivas_cnst.h" -#include "ivas_rom_com.h" #include "ivas_rom_dec.h" #ifdef DEBUGGING #include "debug.h" diff --git a/lib_dec/ivas_dirac_onsets_dec.c b/lib_rend/ivas_dirac_onsets_dec.c similarity index 99% rename from lib_dec/ivas_dirac_onsets_dec.c rename to lib_rend/ivas_dirac_onsets_dec.c index c094b45ff68aa32a7770f677b3c61e70b763f127..8a03dc2c50da814c0788b1c81325e87633e0ec46 100644 --- a/lib_dec/ivas_dirac_onsets_dec.c +++ b/lib_rend/ivas_dirac_onsets_dec.c @@ -36,6 +36,7 @@ #include "cnst.h" #include "prot.h" #include "ivas_prot.h" +#include "ivas_prot_rend.h" #include "ivas_cnst.h" #include "ivas_rom_com.h" #include "ivas_rom_dec.h" diff --git a/lib_dec/ivas_dirac_output_synthesis_dec.c b/lib_rend/ivas_dirac_output_synthesis_dec.c old mode 100755 new mode 100644 similarity index 81% rename from lib_dec/ivas_dirac_output_synthesis_dec.c rename to lib_rend/ivas_dirac_output_synthesis_dec.c index 4f25d5a465f606d87e22439f962df2a2a1fd1fb3..7c73d0fc9e4abd006873290e9d7c51dd137b7ea2 --- a/lib_dec/ivas_dirac_output_synthesis_dec.c +++ b/lib_rend/ivas_dirac_output_synthesis_dec.c @@ -37,6 +37,7 @@ #include "cnst.h" #include "prot.h" #include "ivas_prot.h" +#include "ivas_prot_rend.h" #include "ivas_stat_dec.h" #include "ivas_cnst.h" #include "ivas_rom_com.h" @@ -87,11 +88,12 @@ static void normalizePanningGains( float *direct_response, const int16_t num_cha *------------------------------------------------------------------------*/ ivas_error ivas_dirac_dec_output_synthesis_open( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - RENDERER_TYPE renderer_type, /* i : renderer type */ - const int16_t nchan_transport, /* i : number of transport channels */ - const int32_t output_Fs, /* i : output sampling rate */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + RENDERER_TYPE renderer_type, /* i : renderer type */ + const int16_t nchan_transport, /* i : number of transport channels */ + const int32_t output_Fs, /* i : output sampling rate */ + const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ ) { int16_t idx, ch_idx; @@ -101,20 +103,20 @@ ivas_error ivas_dirac_dec_output_synthesis_open( float temp_alpha_synthesis[CLDFB_NO_CHANNELS_MAX]; /* pointers to structs for allocation */ - DIRAC_OUTPUT_SYNTHESIS_PARAMS *dirac_output_synthesis_params = &( hDirAC->h_output_synthesis_psd_params ); - DIRAC_OUTPUT_SYNTHESIS_STATE *dirac_output_synthesis_state = &( hDirAC->h_output_synthesis_psd_state ); + DIRAC_OUTPUT_SYNTHESIS_PARAMS *dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params ); + DIRAC_OUTPUT_SYNTHESIS_STATE *dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state ); /* check / set input parameters */ - assert( hDirAC->num_freq_bands > 0 && "Error: Number of frequency bands <= 0!" ); - assert( hDirAC->hOutSetup.nchan_out_woLFE > 0 && "Error: Number of output channels > 0!" ); - assert( hDirAC->num_outputs_diff > 0 ); - assert( hDirAC->slot_size > 0 ); - assert( hDirAC->hOutSetup.is_loudspeaker_setup == 0 || hDirAC->hOutSetup.is_loudspeaker_setup == 1 ); - assert( hDirAC->diffuse_response_function != NULL ); + assert( hSpatParamRendCom->num_freq_bands > 0 && "Error: Number of frequency bands <= 0!" ); + assert( hDirACRend->hOutSetup.nchan_out_woLFE > 0 && "Error: Number of output channels > 0!" ); + assert( hDirACRend->num_outputs_diff > 0 ); + assert( hSpatParamRendCom->slot_size > 0 ); + assert( hDirACRend->hOutSetup.is_loudspeaker_setup == 0 || hDirACRend->hOutSetup.is_loudspeaker_setup == 1 ); + assert( hDirACRend->diffuse_response_function != NULL ); - if ( hDirAC->proto_signal_decorr_on ) + if ( hDirACRend->proto_signal_decorr_on ) { - dirac_output_synthesis_params->max_band_decorr = hDirAC->h_freq_domain_decorr_ap_params->max_band_decorr; + dirac_output_synthesis_params->max_band_decorr = hDirACRend->h_freq_domain_decorr_ap_params->max_band_decorr; } else { @@ -126,16 +128,16 @@ ivas_error ivas_dirac_dec_output_synthesis_open( *-----------------------------------------------------------------*/ dirac_output_synthesis_state->diffuse_responses_square = NULL; - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { if ( ( dirac_output_synthesis_state->diffuse_responses_square = (float *) malloc( 2 * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } } - else if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + else if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { - if ( ( dirac_output_synthesis_state->diffuse_responses_square = (float *) malloc( hDirAC->hOutSetup.nchan_out_woLFE * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->diffuse_responses_square = (float *) malloc( hDirACRend->hOutSetup.nchan_out_woLFE * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } @@ -143,16 +145,16 @@ ivas_error ivas_dirac_dec_output_synthesis_open( /* prototype power buffers */ dirac_output_synthesis_state->proto_power_smooth_prev = NULL; - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { - if ( ( dirac_output_synthesis_state->proto_power_smooth_prev = (float *) malloc( hDirAC->num_freq_bands * hDirAC->num_protos_dir * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->proto_power_smooth_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * hDirACRend->num_protos_dir * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } } - if ( dirac_output_synthesis_params->max_band_decorr > 0 && ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS || hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) ) + if ( dirac_output_synthesis_params->max_band_decorr > 0 && ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS || hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) ) { - if ( ( dirac_output_synthesis_state->proto_power_diff_smooth_prev = (float *) malloc( dirac_output_synthesis_params->max_band_decorr * hDirAC->hOutSetup.nchan_out_woLFE * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->proto_power_diff_smooth_prev = (float *) malloc( dirac_output_synthesis_params->max_band_decorr * hDirACRend->hOutSetup.nchan_out_woLFE * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } @@ -171,42 +173,42 @@ ivas_error ivas_dirac_dec_output_synthesis_open( /* target PSD buffers */ if ( hodirac_flag ) { - size = hDirAC->num_freq_bands * hDirAC->num_outputs_dir * DIRAC_HO_NUMSECTORS; + size = hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir * DIRAC_HO_NUMSECTORS; } else { - size = hDirAC->num_freq_bands * hDirAC->num_outputs_dir; + size = hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir; } if ( ( dirac_output_synthesis_state->cy_cross_dir_smooth_prev = (float *) malloc( size * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { dirac_output_synthesis_state->cy_auto_dir_smooth_prev = NULL; - if ( ( dirac_output_synthesis_state->cy_auto_diff_smooth_prev = (float *) malloc( dirac_output_synthesis_params->max_band_decorr * hDirAC->num_outputs_diff * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->cy_auto_diff_smooth_prev = (float *) malloc( dirac_output_synthesis_params->max_band_decorr * hDirACRend->num_outputs_diff * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } } else { - if ( ( dirac_output_synthesis_state->cy_auto_dir_smooth_prev = (float *) malloc( hDirAC->num_freq_bands * hDirAC->num_outputs_dir * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->cy_auto_dir_smooth_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) { - if ( ( dirac_output_synthesis_state->cy_auto_diff_smooth_prev = (float *) malloc( hDirAC->num_freq_bands * hDirAC->num_outputs_dir * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->cy_auto_diff_smooth_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } } else { - if ( ( dirac_output_synthesis_state->cy_auto_diff_smooth_prev = (float *) malloc( hDirAC->num_freq_bands * hDirAC->num_outputs_diff * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->cy_auto_diff_smooth_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_diff * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } @@ -219,23 +221,23 @@ ivas_error ivas_dirac_dec_output_synthesis_open( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - if ( ( dirac_output_synthesis_state->gains_diff_prev = (float *) malloc( dirac_output_synthesis_params->max_band_decorr * hDirAC->num_outputs_diff * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->gains_diff_prev = (float *) malloc( dirac_output_synthesis_params->max_band_decorr * hDirACRend->num_outputs_diff * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } } - else if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_PSD_SHD && hDirAC->synthesisConf != DIRAC_SYNTHESIS_MONO ) + else if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_PSD_SHD && hDirACRend->synthesisConf != DIRAC_SYNTHESIS_MONO ) { - if ( ( dirac_output_synthesis_state->gains_diff_prev = (float *) malloc( hDirAC->num_freq_bands * hDirAC->num_outputs_diff * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->gains_diff_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_diff * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } } else { - if ( ( dirac_output_synthesis_state->gains_diff_prev = (float *) malloc( hDirAC->num_freq_bands * hDirAC->num_outputs_dir * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->gains_diff_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } @@ -246,32 +248,32 @@ ivas_error ivas_dirac_dec_output_synthesis_open( *-----------------------------------------------------------------*/ /* compute alpha */ - if ( !( renderer_type == RENDERER_BINAURAL_PARAMETRIC || renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) ) + if ( !( renderer_type == RENDERER_BINAURAL_PARAMETRIC || renderer_type == RENDERER_BINAURAL_PARAMETRIC_ROOM || hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) ) { - computeAlphaSynthesis( temp_alpha_synthesis, DIRAC_AVG_LENGTH_SYNTH_MS, DIRAC_ALPHA_MAX, &dirac_output_synthesis_params->numAlphas, hDirAC->slot_size, hDirAC->num_freq_bands, hDirAC->frequency_axis, output_Fs ); + computeAlphaSynthesis( temp_alpha_synthesis, DIRAC_AVG_LENGTH_SYNTH_MS, DIRAC_ALPHA_MAX, &dirac_output_synthesis_params->numAlphas, hSpatParamRendCom->slot_size, hSpatParamRendCom->num_freq_bands, hDirACRend->frequency_axis, output_Fs ); if ( ( dirac_output_synthesis_params->alpha_synthesis = (float *) malloc( dirac_output_synthesis_params->numAlphas * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } mvr2r( temp_alpha_synthesis, dirac_output_synthesis_params->alpha_synthesis, dirac_output_synthesis_params->numAlphas ); - computeAlphaSynthesis( temp_alpha_synthesis, DIRAC_AVG_LENGTH_SYNTH_MS_FAST, DIRAC_ALPHA_MAX_FAST, &dirac_output_synthesis_params->numAlphasFast, hDirAC->slot_size, hDirAC->num_freq_bands, hDirAC->frequency_axis, output_Fs ); + computeAlphaSynthesis( temp_alpha_synthesis, DIRAC_AVG_LENGTH_SYNTH_MS_FAST, DIRAC_ALPHA_MAX_FAST, &dirac_output_synthesis_params->numAlphasFast, hSpatParamRendCom->slot_size, hSpatParamRendCom->num_freq_bands, hDirACRend->frequency_axis, output_Fs ); if ( ( dirac_output_synthesis_params->alpha_synthesis_fast = (float *) malloc( dirac_output_synthesis_params->numAlphasFast * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } mvr2r( temp_alpha_synthesis, dirac_output_synthesis_params->alpha_synthesis_fast, dirac_output_synthesis_params->numAlphasFast ); - if ( ( dirac_output_synthesis_state->reference_power_smooth_prev = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->reference_power_smooth_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } - if ( ( dirac_output_synthesis_state->direction_smoothness_prev = (float *) malloc( hDirAC->num_freq_bands * sizeof( float ) ) ) == NULL ) + if ( ( dirac_output_synthesis_state->direction_smoothness_prev = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC synthesis\n" ) ); } - set_zero( dirac_output_synthesis_state->reference_power_smooth_prev, hDirAC->num_freq_bands ); - set_zero( dirac_output_synthesis_state->direction_smoothness_prev, hDirAC->num_freq_bands ); + set_zero( dirac_output_synthesis_state->reference_power_smooth_prev, hSpatParamRendCom->num_freq_bands ); + set_zero( dirac_output_synthesis_state->direction_smoothness_prev, hSpatParamRendCom->num_freq_bands ); } else { @@ -288,13 +290,13 @@ ivas_error ivas_dirac_dec_output_synthesis_open( } /* prepare diffuse response function */ - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { num_diffuse_responses = 2; } else { - num_diffuse_responses = hDirAC->hOutSetup.nchan_out_woLFE; + num_diffuse_responses = hDirACRend->hOutSetup.nchan_out_woLFE; } if ( dirac_output_synthesis_state->diffuse_responses_square != NULL ) @@ -302,34 +304,34 @@ ivas_error ivas_dirac_dec_output_synthesis_open( for ( ch_idx = 0; ch_idx < num_diffuse_responses; ++ch_idx ) { /*dirac_output_synthesis_state->diffuse_responses_square[ch_idx] = pow(dirac_output_synthesis_params->diffuse_response_function[ch_idx]/max_response, 2.0f);*/ - tmp = hDirAC->diffuse_response_function[ch_idx]; + tmp = hDirACRend->diffuse_response_function[ch_idx]; dirac_output_synthesis_state->diffuse_responses_square[ch_idx] = tmp * tmp; } } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { int16_t diff_compensation_order; float diff_nrg_total, diff_nrg, diff_nrg_trans, diff_nrg_decorr; diff_compensation_order = nchan_transport >= 3 ? 3 : 2; /* compensate missing diffuseness modelling up order 2, except for HR*/ - diff_compensation_order = min( diff_compensation_order, hDirAC->hOutSetup.ambisonics_order ); + diff_compensation_order = min( diff_compensation_order, hDirACRend->hOutSetup.ambisonics_order ); diff_nrg_total = 0; diff_nrg_trans = 0; diff_nrg_decorr = 0; for ( ch_idx = 0; ch_idx < ( diff_compensation_order + 1 ) * ( diff_compensation_order + 1 ); ch_idx++ ) { - diff_nrg = hDirAC->diffuse_response_function[ch_idx] * hDirAC->diffuse_response_function[ch_idx]; + diff_nrg = hDirACRend->diffuse_response_function[ch_idx] * hDirACRend->diffuse_response_function[ch_idx]; diff_nrg_total += diff_nrg; /* is it a transport channel?*/ - if ( ch_idx == 0 || hDirAC->proto_index_dir[ch_idx] != 0 ) + if ( ch_idx == 0 || hDirACRend->proto_index_dir[ch_idx] != 0 ) { diff_nrg_trans += diff_nrg; } /* is it a decorrelated or transport channel?*/ - if ( ch_idx < hDirAC->num_outputs_diff ) + if ( ch_idx < hDirACRend->num_outputs_diff ) { diff_nrg_decorr += diff_nrg; } @@ -354,9 +356,10 @@ ivas_error ivas_dirac_dec_output_synthesis_open( *------------------------------------------------------------------------*/ void ivas_dirac_dec_output_synthesis_init( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const int16_t nchan_out_woLFE, /* i : number of output audio channels without LFE */ - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const int16_t nchan_out_woLFE, /* i : number of output audio channels without LFE */ + const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ ) { int16_t size; @@ -364,8 +367,8 @@ void ivas_dirac_dec_output_synthesis_init( DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params; DIRAC_OUTPUT_SYNTHESIS_STATE *h_dirac_output_synthesis_state; - h_dirac_output_synthesis_params = &( hDirAC->h_output_synthesis_psd_params ); - h_dirac_output_synthesis_state = &( hDirAC->h_output_synthesis_psd_state ); + h_dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params ); + h_dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state ); /*-----------------------------------------------------------------* * init outputSynthesisPSD_Init @@ -374,45 +377,45 @@ void ivas_dirac_dec_output_synthesis_init( /* initialize buffers */ if ( h_dirac_output_synthesis_state->cy_auto_dir_smooth_prev != NULL ) { - set_zero( h_dirac_output_synthesis_state->cy_auto_dir_smooth_prev, hDirAC->num_freq_bands * hDirAC->num_outputs_dir ); + set_zero( h_dirac_output_synthesis_state->cy_auto_dir_smooth_prev, hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir ); } if ( hodirac_flag ) { - size = hDirAC->num_freq_bands * hDirAC->num_outputs_dir * DIRAC_HO_NUMSECTORS; + size = hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir * DIRAC_HO_NUMSECTORS; } else { - size = hDirAC->num_freq_bands * hDirAC->num_outputs_dir; + size = hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir; } set_zero( h_dirac_output_synthesis_state->cy_cross_dir_smooth_prev, size ); - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - set_zero( h_dirac_output_synthesis_state->cy_auto_diff_smooth_prev, h_dirac_output_synthesis_params->max_band_decorr * hDirAC->num_outputs_diff ); + set_zero( h_dirac_output_synthesis_state->cy_auto_diff_smooth_prev, h_dirac_output_synthesis_params->max_band_decorr * hDirACRend->num_outputs_diff ); } - else if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_PSD_SHD ) + else if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_PSD_SHD ) { - set_zero( h_dirac_output_synthesis_state->cy_auto_diff_smooth_prev, hDirAC->num_freq_bands * hDirAC->num_outputs_diff ); + set_zero( h_dirac_output_synthesis_state->cy_auto_diff_smooth_prev, hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_diff ); } else { - set_zero( h_dirac_output_synthesis_state->cy_auto_diff_smooth_prev, hDirAC->num_freq_bands * hDirAC->num_outputs_dir ); + set_zero( h_dirac_output_synthesis_state->cy_auto_diff_smooth_prev, hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir ); } if ( h_dirac_output_synthesis_state->proto_power_smooth_prev != NULL ) { - set_zero( h_dirac_output_synthesis_state->proto_power_smooth_prev, hDirAC->num_freq_bands * hDirAC->num_protos_dir ); + set_zero( h_dirac_output_synthesis_state->proto_power_smooth_prev, hSpatParamRendCom->num_freq_bands * hDirACRend->num_protos_dir ); } set_zero( h_dirac_output_synthesis_state->gains_dir_prev, size ); - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - set_zero( h_dirac_output_synthesis_state->gains_diff_prev, h_dirac_output_synthesis_params->max_band_decorr * hDirAC->num_outputs_diff ); + set_zero( h_dirac_output_synthesis_state->gains_diff_prev, h_dirac_output_synthesis_params->max_band_decorr * hDirACRend->num_outputs_diff ); } else { - set_zero( h_dirac_output_synthesis_state->gains_diff_prev, hDirAC->num_freq_bands * hDirAC->num_outputs_dir ); + set_zero( h_dirac_output_synthesis_state->gains_diff_prev, hSpatParamRendCom->num_freq_bands * hDirACRend->num_outputs_dir ); } if ( h_dirac_output_synthesis_state->proto_power_diff_smooth_prev != NULL ) @@ -431,12 +434,12 @@ void ivas_dirac_dec_output_synthesis_init( *------------------------------------------------------------------------*/ void ivas_dirac_dec_output_synthesis_close( - DIRAC_DEC_HANDLE hDirAC /* i/o: DirAC handle */ + DIRAC_REND_HANDLE hDirACRend /* i/o: DirAC handle */ ) { /* pointers to structs for allocation */ - DIRAC_OUTPUT_SYNTHESIS_PARAMS *dirac_output_synthesis_params = &( hDirAC->h_output_synthesis_psd_params ); - DIRAC_OUTPUT_SYNTHESIS_STATE *dirac_output_synthesis_state = &( hDirAC->h_output_synthesis_psd_state ); + DIRAC_OUTPUT_SYNTHESIS_PARAMS *dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params ); + DIRAC_OUTPUT_SYNTHESIS_STATE *dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state ); /*-----------------------------------------------------------------* * memory deallocation @@ -537,15 +540,16 @@ void ivas_dirac_dec_output_synthesis_process_slot( const int16_t *azimuth, const int16_t *elevation, const float *diffuseness, - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ const int16_t sh_rot_max_order, const float *p_Rmat, /* i : rotation matrix */ const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ const int16_t nchan_transport, /* i : number of transport channels*/ const int16_t md_idx, - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -) + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + const int16_t dec_param_estim ) { int16_t num_freq_bands, num_channels_dir; int16_t num_freq_bands_diff, num_channels_diff; @@ -555,8 +559,8 @@ void ivas_dirac_dec_output_synthesis_process_slot( DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params; DIRAC_OUTPUT_SYNTHESIS_STATE *h_dirac_output_synthesis_state; - h_dirac_output_synthesis_params = &( hDirAC->h_output_synthesis_psd_params ); - h_dirac_output_synthesis_state = &( hDirAC->h_output_synthesis_psd_state ); + h_dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params ); + h_dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state ); h_dirac_output_synthesis_state->onset_filter = onset; @@ -565,21 +569,23 @@ void ivas_dirac_dec_output_synthesis_process_slot( *-----------------------------------------------------------------*/ /* collect some often used parameters */ - num_freq_bands = hDirAC->num_freq_bands; - num_channels_dir = hDirAC->num_outputs_dir; - num_channels_diff = hDirAC->num_outputs_diff; + num_freq_bands = hSpatParamRendCom->num_freq_bands; + num_channels_dir = hDirACRend->num_outputs_dir; + num_channels_diff = hDirACRend->num_outputs_diff; num_freq_bands_diff = h_dirac_output_synthesis_params->max_band_decorr; - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_LS ) { num_channels_dir = hOutSetup.nchan_out_woLFE; } - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD && hodirac_flag ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD && hodirac_flag ) { - ivas_dirac_dec_compute_directional_responses( hDirAC, + ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom, + hDirACRend, hVBAPdata, NULL, + NULL, azimuth, elevation, md_idx, @@ -589,45 +595,47 @@ void ivas_dirac_dec_output_synthesis_process_slot( hodirac_flag ); } - if ( hDirAC->hConfig->dec_param_estim == FALSE && hodirac_flag ) + if ( dec_param_estim == FALSE && hodirac_flag ) { - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - v_multc( hDirAC->energy_ratio1[md_idx], -1.f, aux_buf, num_freq_bands ); + v_multc( hSpatParamRendCom->energy_ratio1[md_idx], -1.f, aux_buf, num_freq_bands ); v_addc( aux_buf, 1.f, aux_buf, num_freq_bands ); - mvr2r( hDirAC->energy_ratio1[md_idx], + mvr2r( hSpatParamRendCom->energy_ratio1[md_idx], h_dirac_output_synthesis_state->direct_power_factor, num_freq_bands ); mvr2r( aux_buf, h_dirac_output_synthesis_state->diffuse_power_factor, num_freq_bands ); - v_multc( hDirAC->energy_ratio2[md_idx], -1.f, aux_buf, num_freq_bands ); + v_multc( hSpatParamRendCom->energy_ratio2[md_idx], -1.f, aux_buf, num_freq_bands ); v_addc( aux_buf, 1.f, aux_buf, num_freq_bands ); - mvr2r( hDirAC->energy_ratio2[md_idx], - &h_dirac_output_synthesis_state->direct_power_factor[hDirAC->num_freq_bands], + mvr2r( hSpatParamRendCom->energy_ratio2[md_idx], + &h_dirac_output_synthesis_state->direct_power_factor[hSpatParamRendCom->num_freq_bands], num_freq_bands ); mvr2r( aux_buf, - &h_dirac_output_synthesis_state->diffuse_power_factor[hDirAC->num_freq_bands], + &h_dirac_output_synthesis_state->diffuse_power_factor[hSpatParamRendCom->num_freq_bands], num_freq_bands ); } else { ivas_dirac_dec_compute_gain_factors( num_freq_bands, - hDirAC->diffuseness_vector[md_idx], + hSpatParamRendCom->diffuseness_vector[md_idx], h_dirac_output_synthesis_params->max_band_decorr, h_dirac_output_synthesis_state->direct_power_factor, h_dirac_output_synthesis_state->diffuse_power_factor ); } } - else // ( hDirAC->hConfig->dec_param_estim == TRUE ) - if ( hDirAC->hConfig->dec_param_estim == TRUE ) + else // ( dec_param_estim == TRUE ) + if ( dec_param_estim == TRUE ) { /* compute direct responses */ - ivas_dirac_dec_compute_directional_responses( hDirAC, + ivas_dirac_dec_compute_directional_responses( hSpatParamRendCom, + hDirACRend, hVBAPdata, NULL, + NULL, azimuth, elevation, md_idx, @@ -636,7 +644,7 @@ void ivas_dirac_dec_output_synthesis_process_slot( p_Rmat, hodirac_flag ); - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { ivas_dirac_dec_compute_gain_factors( num_freq_bands, diffuseness, @@ -710,7 +718,7 @@ void ivas_dirac_dec_output_synthesis_process_slot( for ( ch_idx = min( 4, nchan_transport ); ch_idx < num_channels_diff; ch_idx++ ) { v_multc( h_dirac_output_synthesis_state->diffuse_power_factor, - hDirAC->diffuse_response_function[ch_idx], + hDirACRend->diffuse_response_function[ch_idx], aux_buf, num_freq_bands_diff ); @@ -738,7 +746,7 @@ void ivas_dirac_dec_output_synthesis_process_slot( { computeTargetPSDs_diffuse_with_onsets( num_channels_dir, num_freq_bands, h_dirac_output_synthesis_params->max_band_decorr, - hDirAC->proto_index_diff, + hDirACRend->proto_index_diff, h_dirac_output_synthesis_state->diffuse_power_factor, reference_power, h_dirac_output_synthesis_state->diffuse_responses_square, @@ -749,7 +757,7 @@ void ivas_dirac_dec_output_synthesis_process_slot( } /* process other PSDs only slot wise for 4 transport channels */ - if ( hDirAC->hConfig->dec_param_estim == TRUE ) + if ( dec_param_estim == TRUE ) { computeTargetPSDs_direct( num_channels_dir, num_freq_bands, h_dirac_output_synthesis_state->direct_power_factor, reference_power, h_dirac_output_synthesis_state->direct_responses, h_dirac_output_synthesis_state->direct_responses_square, h_dirac_output_synthesis_state->cy_auto_dir_smooth, h_dirac_output_synthesis_state->cy_cross_dir_smooth ); @@ -769,13 +777,14 @@ void ivas_dirac_dec_output_synthesis_process_slot( void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( 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 */ - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ const int16_t nchan_transport, /* i : number of transport channels */ const int16_t nbslots, /* i : number of slots to process */ const float *onset_filter, float *diffuseness, - const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ -) + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + const int16_t dec_param_estim ) { int16_t buf_idx, ch_idx, i, l; int16_t num_freq_bands, num_freq_bands_diff; @@ -798,15 +807,15 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( float ratio[DIRAC_HO_NUMSECTORS * CLDFB_NO_CHANNELS_MAX]; /* collect some often used parameters */ - h_dirac_output_synthesis_params = hDirAC->h_output_synthesis_psd_params; - h_dirac_output_synthesis_state = hDirAC->h_output_synthesis_psd_state; - proto_direct_index = hDirAC->proto_index_dir; + h_dirac_output_synthesis_params = hDirACRend->h_output_synthesis_psd_params; + h_dirac_output_synthesis_state = hDirACRend->h_output_synthesis_psd_state; + proto_direct_index = hDirACRend->proto_index_dir; - num_protos_dir = hDirAC->num_protos_dir; - num_freq_bands = hDirAC->num_freq_bands; + num_protos_dir = hDirACRend->num_protos_dir; + num_freq_bands = hSpatParamRendCom->num_freq_bands; num_freq_bands_diff = h_dirac_output_synthesis_params.max_band_decorr; - num_channels_dir = hDirAC->num_outputs_dir; - num_channels_diff = hDirAC->num_outputs_diff; + num_channels_dir = hDirACRend->num_outputs_dir; + num_channels_diff = hDirACRend->num_outputs_diff; nchan_transport_foa = min( 4, nchan_transport ); @@ -816,7 +825,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( if ( hodirac_flag ) { - assert( hDirAC->hConfig->dec_param_estim == FALSE ); /*Direct gain*/ for ( ch_idx = 0; ch_idx < nchan_transport_foa; ch_idx++ ) { @@ -841,7 +849,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( for ( l = 0; l < num_freq_bands; l++ ) { aux_buf[l] = 1.f - diffuseness[l]; - ratio[l] = 1.f - h_dirac_output_synthesis_state.direct_power_factor[hDirAC->num_freq_bands + l]; + ratio[l] = 1.f - h_dirac_output_synthesis_state.direct_power_factor[hSpatParamRendCom->num_freq_bands + l]; ratio[l + num_freq_bands] = 1.f - ratio[l]; } @@ -862,12 +870,12 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( for ( ch_idx = nchan_transport_foa; ch_idx < num_channels_diff; ch_idx++ ) { v_multc( h_dirac_output_synthesis_state.diffuse_power_factor, - hDirAC->diffuse_response_function[ch_idx], + hDirACRend->diffuse_response_function[ch_idx], &h_dirac_output_synthesis_state.cy_auto_diff_smooth[ch_idx * num_freq_bands_diff], num_freq_bands_diff ); } } - else if ( hDirAC->hConfig->dec_param_estim == FALSE ) + else if ( dec_param_estim == FALSE ) { /*Direct gain*/ for ( ch_idx = 0; ch_idx < nchan_transport_foa; ch_idx++ ) @@ -902,7 +910,7 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( /*Diffuse gain*/ for ( ch_idx = nchan_transport_foa; ch_idx < num_channels_diff; ch_idx++ ) { - v_multc( h_dirac_output_synthesis_state.diffuse_power_factor, hDirAC->diffuse_response_function[ch_idx], &h_dirac_output_synthesis_state.cy_auto_diff_smooth[ch_idx * num_freq_bands_diff], num_freq_bands_diff ); + v_multc( h_dirac_output_synthesis_state.diffuse_power_factor, hDirACRend->diffuse_response_function[ch_idx], &h_dirac_output_synthesis_state.cy_auto_diff_smooth[ch_idx * num_freq_bands_diff], num_freq_bands_diff ); } } @@ -1116,8 +1124,8 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( for ( l = 0; l < num_freq_bands_diff; l++ ) { g = g1 * ( *( p_gains_diff++ ) ) + g2 * ( *( p_gains_diff_prev++ ) ); - output_real[l * num_channels_dir + hDirAC->sba_map_tc[ch_idx]] += g * ( *( p_proto++ ) ); /* maps ch_idx 5 to 8 */ - output_imag[l * num_channels_dir + hDirAC->sba_map_tc[ch_idx]] += g * ( *( p_proto++ ) ); + output_real[l * num_channels_dir + hDirACRend->sba_map_tc[ch_idx]] += g * ( *( p_proto++ ) ); /* maps ch_idx 5 to 8 */ + output_imag[l * num_channels_dir + hDirACRend->sba_map_tc[ch_idx]] += g * ( *( p_proto++ ) ); } } else @@ -1134,14 +1142,14 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( * Copy output or HOA decoder *-----------------------------------------------------------------*/ - if ( hDirAC->hOutSetup.is_loudspeaker_setup && hDirAC->hoa_decoder != NULL ) + if ( hDirACRend->hOutSetup.is_loudspeaker_setup && hDirACRend->hoa_decoder != NULL ) { float *p_real, *p_imag; const float *hoa_decoder; - hoa_decoder = hDirAC->hoa_decoder; + hoa_decoder = hDirACRend->hoa_decoder; - for ( ch_idx = 0; ch_idx < hDirAC->hOutSetup.nchan_out_woLFE; ch_idx++ ) + for ( ch_idx = 0; ch_idx < hDirACRend->hOutSetup.nchan_out_woLFE; ch_idx++ ) { p_real = RealBuffer[ch_idx][buf_idx]; p_imag = ImagBuffer[ch_idx][buf_idx]; @@ -1215,11 +1223,13 @@ void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( 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 */ - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ const int16_t nbslots, /* i : number of slots to process */ float *diffuseness_vector, float *reference_power_smooth, - float qualityBasedSmFactor ) + float qualityBasedSmFactor, + const int16_t enc_param_start_band ) { int16_t buf_idx, num_freq_bands; int16_t diff_start_band; @@ -1252,24 +1262,24 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( push_wmops( "dirac_out_synth_sfr" ); - h_dirac_output_synthesis_params = &( hDirAC->h_output_synthesis_psd_params ); - h_dirac_output_synthesis_state = &( hDirAC->h_output_synthesis_psd_state ); - proto_direct_index = hDirAC->proto_index_dir; - num_protos_dir = hDirAC->num_protos_dir; - nchan_out_woLFE = hDirAC->hOutSetup.nchan_out_woLFE; + h_dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params ); + h_dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state ); + proto_direct_index = hDirACRend->proto_index_dir; + num_protos_dir = hDirACRend->num_protos_dir; + nchan_out_woLFE = hDirACRend->hOutSetup.nchan_out_woLFE; /* collect some often used parameters */ - num_freq_bands = hDirAC->num_freq_bands; + num_freq_bands = hSpatParamRendCom->num_freq_bands; /*-----------------------------------------------------------------* * compute target PSDs *-----------------------------------------------------------------*/ - if ( hDirAC->hConfig->enc_param_start_band == 0 ) + if ( enc_param_start_band == 0 ) { diff_start_band = h_dirac_output_synthesis_params->use_onset_filters == 1 ? h_dirac_output_synthesis_params->max_band_decorr : 0; - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { nchan_target_psds = 2; } @@ -1297,11 +1307,13 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( * compute variables for stereo transport signal type detection *-----------------------------------------------------------------*/ - if ( hDirAC->masa_stereo_type_detect != NULL ) + if ( hDirACRend->masa_stereo_type_detect != NULL ) { + MASA_STEREO_TYPE_DETECT *masa_stereo_type_detect = hDirACRend->masa_stereo_type_detect; + p_cy_auto_dir_smooth = h_dirac_output_synthesis_state->cy_auto_dir_smooth; p_cy_auto_diff_smooth = h_dirac_output_synthesis_state->cy_auto_diff_smooth; - if ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { target_power_y = p_cy_auto_dir_smooth[num_freq_bands] / ( sqrtf( h_dirac_output_synthesis_state->direct_power_factor[0] ) + EPSILON ); target_power_y += p_cy_auto_diff_smooth[num_freq_bands] / ( sqrtf( h_dirac_output_synthesis_state->diffuse_power_factor[0] ) + EPSILON ); @@ -1310,19 +1322,19 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( { target_power_y = p_cy_auto_dir_smooth[num_freq_bands] + p_cy_auto_diff_smooth[num_freq_bands]; } - subtract_power_y = hDirAC->masa_stereo_type_detect->subtract_power_y; + subtract_power_y = masa_stereo_type_detect->subtract_power_y; a = 0.0004f; /* Temporal smoothing coefficient */ b = 1.0f - a; /* Temporal smoothing coefficient */ - hDirAC->masa_stereo_type_detect->target_power_y_smooth = a * target_power_y + b * hDirAC->masa_stereo_type_detect->target_power_y_smooth; - hDirAC->masa_stereo_type_detect->subtract_power_y_smooth = a * subtract_power_y + b * hDirAC->masa_stereo_type_detect->subtract_power_y_smooth; + masa_stereo_type_detect->target_power_y_smooth = a * target_power_y + b * masa_stereo_type_detect->target_power_y_smooth; + masa_stereo_type_detect->subtract_power_y_smooth = a * subtract_power_y + b * masa_stereo_type_detect->subtract_power_y_smooth; - subtract_target_ratio = hDirAC->masa_stereo_type_detect->subtract_power_y_smooth / ( hDirAC->masa_stereo_type_detect->target_power_y_smooth + EPSILON ); + subtract_target_ratio = masa_stereo_type_detect->subtract_power_y_smooth / ( masa_stereo_type_detect->target_power_y_smooth + EPSILON ); subtract_target_ratio_db = 10.0f * log10f( subtract_target_ratio ); - hDirAC->masa_stereo_type_detect->subtract_target_ratio_db = subtract_target_ratio_db; + masa_stereo_type_detect->subtract_target_ratio_db = subtract_target_ratio_db; - hDirAC->masa_stereo_type_detect->subtract_power_y = 0.0f; + masa_stereo_type_detect->subtract_power_y = 0.0f; } /*-----------------------------------------------------------------* @@ -1345,8 +1357,6 @@ void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( indexFast = min( l, alphaMaxBinFast ); /* Estimate the smoothness of the directions based on the diffuseness parameter */ - /* TODO: check this, seems buggy in the case of parame estim on the decoder side, - because the pointer here points already to the following subframe, ist this intended?*/ instDirectionSmoothness = 1.0f - diffuseness_vector[l]; instDirectionSmoothness = min( max( instDirectionSmoothness, 0.0f ), 1.0f ); @@ -1731,9 +1741,11 @@ static void ivas_dirac_dec_get_response_split_order( *------------------------------------------------------------------------*/ void ivas_dirac_dec_compute_directional_responses( - DIRAC_DEC_HANDLE hDirAC, /* i/o: DirAC handle */ - const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ - const MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ + const MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ + MASA_ISM_DATA_HANDLE hMasaIsm, /* i : MASA_ISM data structure */ const int16_t *azimuth, const int16_t *elevation, const int16_t md_idx, @@ -1761,24 +1773,25 @@ void ivas_dirac_dec_compute_directional_responses( elevation2 = NULL; transport_signal_type = MASA_STEREO_NOT_DEFINED; - if ( hDirAC->masa_stereo_type_detect != NULL ) + if ( hDirACRend->masa_stereo_type_detect != NULL ) { - dipole_freq_range[0] = hDirAC->masa_stereo_type_detect->dipole_freq_range[0]; - dipole_freq_range[1] = hDirAC->masa_stereo_type_detect->dipole_freq_range[1]; - transport_signal_type = hDirAC->masa_stereo_type_detect->masa_stereo_type; + dipole_freq_range[0] = hDirACRend->masa_stereo_type_detect->dipole_freq_range[0]; + dipole_freq_range[1] = hDirACRend->masa_stereo_type_detect->dipole_freq_range[1]; + transport_signal_type = hDirACRend->masa_stereo_type_detect->masa_stereo_type; } - num_channels_dir = hDirAC->num_outputs_dir; - if ( hDirAC->numSimultaneousDirections == 2 ) + num_channels_dir = hDirACRend->num_outputs_dir; + if ( hSpatParamRendCom->numParametricDirections == 2 ) { - azimuth2 = hDirAC->azimuth2[md_idx]; - elevation2 = hDirAC->elevation2[md_idx]; + azimuth2 = hSpatParamRendCom->azimuth2[md_idx]; + elevation2 = hSpatParamRendCom->elevation2[md_idx]; } + codingBand = -1; assert( num_channels_dir <= MAX_OUTPUT_CHANNELS && "Number of channels is too high" ); - for ( k = 0; k < hDirAC->num_freq_bands; ++k ) + for ( k = 0; k < hSpatParamRendCom->num_freq_bands; ++k ) { if ( hMasa != NULL && k == MASA_band_grouping_24[hMasa->data.band_mapping[codingBand + 1]] ) { @@ -1787,24 +1800,24 @@ void ivas_dirac_dec_compute_directional_responses( if ( hMasa != NULL && k > MASA_band_grouping_24[hMasa->data.band_mapping[codingBand]] && k < MASA_band_grouping_24[hMasa->data.band_mapping[codingBand + 1]] && - k != hDirAC->h_output_synthesis_psd_params.max_band_decorr ) + k != hDirACRend->h_output_synthesis_psd_params.max_band_decorr ) { /* Panning gains have to be computed only for the first bin of the coding band in MASA, for other bins the previous values can be used */ - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { - mvr2r_inc( &hDirAC->h_output_synthesis_psd_state.direct_responses_square[k - 1], - hDirAC->num_freq_bands, &hDirAC->h_output_synthesis_psd_state.direct_responses_square[k], - hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( &hDirACRend->h_output_synthesis_psd_state.direct_responses_square[k - 1], + hSpatParamRendCom->num_freq_bands, &hDirACRend->h_output_synthesis_psd_state.direct_responses_square[k], + hSpatParamRendCom->num_freq_bands, num_channels_dir ); } - mvr2r_inc( &hDirAC->h_output_synthesis_psd_state.direct_responses[k - 1], - hDirAC->num_freq_bands, - &hDirAC->h_output_synthesis_psd_state.direct_responses[k], - hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( &hDirACRend->h_output_synthesis_psd_state.direct_responses[k - 1], + hSpatParamRendCom->num_freq_bands, + &hDirACRend->h_output_synthesis_psd_state.direct_responses[k], + hSpatParamRendCom->num_freq_bands, num_channels_dir ); } else { /* HOA3 PANNING */ - if ( hDirAC->panningConf == DIRAC_PANNING_HOA3 ) + if ( hDirACRend->panningConf == DIRAC_PANNING_HOA3 ) { set_f( direct_response_hoa, 1.0f, MAX_OUTPUT_CHANNELS ); set_f( direct_response_dir2, 1.0f, MAX_OUTPUT_CHANNELS ); @@ -1820,36 +1833,36 @@ void ivas_dirac_dec_compute_directional_responses( } else { - ivas_dirac_dec_get_response( azimuth[k], elevation[k], direct_response_hoa, hDirAC->hOutSetup.ambisonics_order ); + ivas_dirac_dec_get_response( azimuth[k], elevation[k], direct_response_hoa, hDirACRend->hOutSetup.ambisonics_order ); if ( hodirac_flag ) { - ivas_dirac_dec_get_response( azimuth2[k], elevation2[k], direct_response_dir2, hDirAC->hOutSetup.ambisonics_order ); + ivas_dirac_dec_get_response( azimuth2[k], elevation2[k], direct_response_dir2, hDirACRend->hOutSetup.ambisonics_order ); } } - if ( hMasa == NULL && hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hMasa == NULL && hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) { - mvr2r_inc( direct_response_hoa, 1, &hDirAC->h_output_synthesis_psd_state.direct_responses[k], hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( direct_response_hoa, 1, &hDirACRend->h_output_synthesis_psd_state.direct_responses[k], hSpatParamRendCom->num_freq_bands, num_channels_dir ); if ( hodirac_flag ) { - mvr2r_inc( direct_response_dir2, 1, &hDirAC->h_output_synthesis_psd_state.direct_responses[k + hDirAC->num_freq_bands * num_channels_dir], hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( direct_response_dir2, 1, &hDirACRend->h_output_synthesis_psd_state.direct_responses[k + hSpatParamRendCom->num_freq_bands * num_channels_dir], hSpatParamRendCom->num_freq_bands, num_channels_dir ); } } - else if ( ( ( hDirAC->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) && ( hMasa != NULL ) ) || - hDirAC->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD || hDirAC->synthesisConf == DIRAC_SYNTHESIS_MONO ) + else if ( ( ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_GAIN_SHD ) && ( hMasa != NULL ) ) || + hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD || hDirACRend->synthesisConf == DIRAC_SYNTHESIS_MONO ) { /* Synthesize the first direction */ - spreadCoherencePanningHoa( azimuth[k], elevation[k], hDirAC->spreadCoherence[md_idx][k], direct_response_hoa, num_channels_dir, hDirAC->hOutSetup.ambisonics_order ); + spreadCoherencePanningHoa( azimuth[k], elevation[k], hSpatParamRendCom->spreadCoherence[md_idx][k], direct_response_hoa, num_channels_dir, hDirACRend->hOutSetup.ambisonics_order ); /* Synthesize the second direction and combine the gains */ - if ( hDirAC->numSimultaneousDirections == 2 ) + if ( hSpatParamRendCom->numParametricDirections == 2 ) { - spreadCoherencePanningHoa( azimuth2[k], elevation2[k], hDirAC->spreadCoherence2[md_idx][k], direct_response_dir2, num_channels_dir, hDirAC->hOutSetup.ambisonics_order ); + spreadCoherencePanningHoa( azimuth2[k], elevation2[k], hSpatParamRendCom->spreadCoherence2[md_idx][k], direct_response_dir2, num_channels_dir, hDirACRend->hOutSetup.ambisonics_order ); /* Combine gains from the two directions */ - totalDirect = hDirAC->energy_ratio1[md_idx][k] + hDirAC->energy_ratio2[md_idx][k] + EPSILON; - directRatio[0] = hDirAC->energy_ratio1[md_idx][k] / totalDirect; - directRatio[1] = hDirAC->energy_ratio2[md_idx][k] / totalDirect; + totalDirect = hSpatParamRendCom->energy_ratio1[md_idx][k] + hSpatParamRendCom->energy_ratio2[md_idx][k] + EPSILON; + directRatio[0] = hSpatParamRendCom->energy_ratio1[md_idx][k] / totalDirect; + directRatio[1] = hSpatParamRendCom->energy_ratio2[md_idx][k] / totalDirect; for ( l = 0; l < num_channels_dir; l++ ) { direct_response_hoa[l] *= directRatio[0]; @@ -1857,6 +1870,55 @@ void ivas_dirac_dec_compute_directional_responses( } } + if ( hSpatParamRendCom->numIsmDirections > 0 ) + { + int16_t dir; + float direct_response_temp[MAX_OUTPUT_CHANNELS]; + float direct_response_ism[MAX_OUTPUT_CHANNELS]; + float masaDirect; + float ismDirect; + + set_zero( direct_response_ism, num_channels_dir ); + + for ( dir = 0; dir < hSpatParamRendCom->numIsmDirections; dir++ ) + { + if ( hMasaIsm->ism_is_edited[dir] ) + { + ivas_dirac_dec_get_response( hMasaIsm->azimuth_ism_edited[dir], hMasaIsm->elevation_ism_edited[dir], direct_response_temp, hDirACRend->hOutSetup.ambisonics_order ); + } + else + { + ivas_dirac_dec_get_response( hMasaIsm->azimuth_ism[dir][md_idx], hMasaIsm->elevation_ism[dir][md_idx], direct_response_temp, hDirACRend->hOutSetup.ambisonics_order ); + } + + for ( l = 0; l < num_channels_dir; l++ ) + { + direct_response_ism[l] += direct_response_temp[l] * hMasaIsm->energy_ratio_ism[dir][md_idx][k]; + } + } + + masaDirect = hSpatParamRendCom->energy_ratio1[md_idx][k] + EPSILON; + if ( hSpatParamRendCom->numParametricDirections == 2 ) + { + masaDirect += hSpatParamRendCom->energy_ratio2[md_idx][k]; + } + + ismDirect = hMasaIsm->energy_ratio_ism[0][md_idx][k]; + for ( dir = 1; dir < hSpatParamRendCom->numIsmDirections; dir++ ) + { + ismDirect += hMasaIsm->energy_ratio_ism[dir][md_idx][k]; + } + + totalDirect = masaDirect + ismDirect; + directRatio[0] = masaDirect / totalDirect; + directRatio[1] = ismDirect / totalDirect; + for ( l = 0; l < num_channels_dir; l++ ) + { + direct_response_hoa[l] *= directRatio[0]; + direct_response_hoa[l] += directRatio[1] * direct_response_ism[l]; + } + } + /* Synthesize surrounding coherence */ if ( surCohRatio != NULL && surCohRatio[k] > 0.f ) { @@ -1868,10 +1930,10 @@ void ivas_dirac_dec_compute_directional_responses( /* Set computed gains */ direct_response = direct_response_hoa; - if ( hDirAC->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) { v_mult( direct_response, direct_response, direct_response_square, num_channels_dir ); - mvr2r_inc( direct_response_square, 1, &hDirAC->h_output_synthesis_psd_state.direct_responses_square[k], hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( direct_response_square, 1, &hDirACRend->h_output_synthesis_psd_state.direct_responses_square[k], hSpatParamRendCom->num_freq_bands, num_channels_dir ); if ( transport_signal_type == MASA_STEREO_SPACED_MICS ) { @@ -1883,33 +1945,33 @@ void ivas_dirac_dec_compute_directional_responses( } else { - set_f( direct_response, 1.0f, hDirAC->num_protos_ambi ); + set_f( direct_response, 1.0f, hDirACRend->num_protos_ambi ); } } - mvr2r_inc( direct_response, 1, &hDirAC->h_output_synthesis_psd_state.direct_responses[k], hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( direct_response, 1, &hDirACRend->h_output_synthesis_psd_state.direct_responses[k], hSpatParamRendCom->num_freq_bands, num_channels_dir ); } else { assert( 0 && "Not supported synthesis method!" ); } } - else if ( hDirAC->panningConf == DIRAC_PANNING_VBAP ) /*VBAP*/ + else if ( hDirACRend->panningConf == DIRAC_PANNING_VBAP ) /*VBAP*/ { /* Synthesize the first direction */ - spreadCoherencePanningVbap( azimuth[k], elevation[k], hDirAC->spreadCoherence[md_idx][k], direct_response_ls, num_channels_dir, hVBAPdata ); + spreadCoherencePanningVbap( azimuth[k], elevation[k], hSpatParamRendCom->spreadCoherence[md_idx][k], direct_response_ls, num_channels_dir, hVBAPdata ); normalizePanningGains( direct_response_ls, num_channels_dir ); /* Synthesize the second direction and combine the gains */ - if ( hDirAC->numSimultaneousDirections == 2 ) + if ( hSpatParamRendCom->numParametricDirections == 2 ) { - spreadCoherencePanningVbap( azimuth2[k], elevation2[k], hDirAC->spreadCoherence2[md_idx][k], direct_response_dir2, num_channels_dir, hVBAPdata ); + spreadCoherencePanningVbap( azimuth2[k], elevation2[k], hSpatParamRendCom->spreadCoherence2[md_idx][k], direct_response_dir2, num_channels_dir, hVBAPdata ); normalizePanningGains( direct_response_dir2, num_channels_dir ); /* Combine gains from the two directions */ - totalDirect = hDirAC->energy_ratio1[md_idx][k] + hDirAC->energy_ratio2[md_idx][k] + EPSILON; - directRatio[0] = hDirAC->energy_ratio1[md_idx][k] / totalDirect; - directRatio[1] = hDirAC->energy_ratio2[md_idx][k] / totalDirect; + totalDirect = hSpatParamRendCom->energy_ratio1[md_idx][k] + hSpatParamRendCom->energy_ratio2[md_idx][k] + EPSILON; + directRatio[0] = hSpatParamRendCom->energy_ratio1[md_idx][k] / totalDirect; + directRatio[1] = hSpatParamRendCom->energy_ratio2[md_idx][k] / totalDirect; for ( l = 0; l < num_channels_dir; l++ ) { direct_response_ls[l] *= directRatio[0]; @@ -1918,18 +1980,68 @@ void ivas_dirac_dec_compute_directional_responses( normalizePanningGains( direct_response_ls, num_channels_dir ); } + if ( hSpatParamRendCom->numIsmDirections > 0 ) + { + int16_t dir; + float direct_response_temp[MAX_OUTPUT_CHANNELS]; + float direct_response_ism[MAX_OUTPUT_CHANNELS]; + float masaDirect; + float ismDirect; + + set_zero( direct_response_ism, num_channels_dir ); + + for ( dir = 0; dir < hSpatParamRendCom->numIsmDirections; dir++ ) + { + if ( hMasaIsm->ism_is_edited[dir] ) + { + vbap_determine_gains( hVBAPdata, direct_response_temp, hMasaIsm->azimuth_ism_edited[dir], hMasaIsm->elevation_ism_edited[dir], 1 ); + } + else + { + vbap_determine_gains( hVBAPdata, direct_response_temp, hMasaIsm->azimuth_ism[dir][md_idx], hMasaIsm->elevation_ism[dir][md_idx], 1 ); + } + + for ( l = 0; l < num_channels_dir; l++ ) + { + direct_response_ism[l] += direct_response_temp[l] * hMasaIsm->energy_ratio_ism[dir][md_idx][k]; + } + } + normalizePanningGains( direct_response_ism, num_channels_dir ); + + masaDirect = hSpatParamRendCom->energy_ratio1[md_idx][k] + EPSILON; + if ( hSpatParamRendCom->numParametricDirections == 2 ) + { + masaDirect += hSpatParamRendCom->energy_ratio2[md_idx][k]; + } + + ismDirect = hMasaIsm->energy_ratio_ism[0][md_idx][k]; + for ( dir = 1; dir < hSpatParamRendCom->numIsmDirections; dir++ ) + { + ismDirect += hMasaIsm->energy_ratio_ism[dir][md_idx][k]; + } + + totalDirect = masaDirect + ismDirect; + directRatio[0] = masaDirect / totalDirect; + directRatio[1] = ismDirect / totalDirect; + for ( l = 0; l < num_channels_dir; l++ ) + { + direct_response_ls[l] *= directRatio[0]; + direct_response_ls[l] += directRatio[1] * direct_response_ism[l]; + } + normalizePanningGains( direct_response_ls, num_channels_dir ); + } /* Synthesize surrounding coherence */ if ( surCohRatio != NULL && surCohRatio[k] > 0.f ) { int16_t num_channels_surrCoh; num_channels_surrCoh = num_channels_dir; - num_channels_surrCoh -= hDirAC->num_ele_spk_no_diffuse_rendering; + num_channels_surrCoh -= hDirACRend->num_ele_spk_no_diffuse_rendering; for ( l = 0; l < num_channels_dir; l++ ) { direct_response_ls[l] *= sqrtf( 1.0f - surCohRatio[k] ); - if ( hDirAC->diffuse_response_function[l] > 0.f ) + if ( hDirACRend->diffuse_response_function[l] > 0.f ) { direct_response_ls[l] += sqrtf( surCohRatio[k] / (float) num_channels_surrCoh ); } @@ -1940,8 +2052,8 @@ void ivas_dirac_dec_compute_directional_responses( /* Set computed gains */ direct_response = direct_response_ls; v_mult( direct_response, direct_response, direct_response_square, num_channels_dir ); - mvr2r_inc( direct_response_square, 1, &hDirAC->h_output_synthesis_psd_state.direct_responses_square[k], hDirAC->num_freq_bands, num_channels_dir ); - mvr2r_inc( direct_response, 1, &hDirAC->h_output_synthesis_psd_state.direct_responses[k], hDirAC->num_freq_bands, num_channels_dir ); + mvr2r_inc( direct_response_square, 1, &hDirACRend->h_output_synthesis_psd_state.direct_responses_square[k], hSpatParamRendCom->num_freq_bands, num_channels_dir ); + mvr2r_inc( direct_response, 1, &hDirACRend->h_output_synthesis_psd_state.direct_responses[k], hSpatParamRendCom->num_freq_bands, num_channels_dir ); } else { @@ -2019,7 +2131,7 @@ void ivas_dirac_dec_compute_power_factors( void ivas_lfe_synth_with_filters( MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth, /* i/o: LFE synthesis structure for McMASA */ - float data_f[][L_FRAME48k], /* o : output signals */ + float *data_f[], /* o : output signals */ const int16_t output_frame, /* i : output frame length per channel */ const int16_t separateChannelIndex, /* i : separate channel index */ const int16_t lfeChannelIndex /* i : LFE channel index */ @@ -2403,12 +2515,12 @@ static void spreadCoherencePanningVbap( return; } - vbap_determine_gains( hVBAPdata, direct_response, azimuth, elevation ); + vbap_determine_gains( hVBAPdata, direct_response, azimuth, elevation, 0 ); if ( spreadCoh > 0.f ) { - vbap_determine_gains( hVBAPdata, direct_response_left, azimuth + 30, elevation ); - vbap_determine_gains( hVBAPdata, direct_response_right, azimuth - 30, elevation ); + vbap_determine_gains( hVBAPdata, direct_response_left, azimuth + 30, elevation, 0 ); + vbap_determine_gains( hVBAPdata, direct_response_right, azimuth - 30, elevation, 0 ); if ( spreadCoh < 0.5f ) { diff --git a/lib_rend/ivas_dirac_rend.c b/lib_rend/ivas_dirac_rend.c new file mode 100644 index 0000000000000000000000000000000000000000..326930e0db35299781f9104cc38bdc2e79147bf0 --- /dev/null +++ b/lib_rend/ivas_dirac_rend.c @@ -0,0 +1,2032 @@ +/****************************************************************************************************** + +(C) 2022-2023 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 "prot.h" +#include "ivas_prot.h" +#include "ivas_prot_rend.h" +#include "ivas_cnst.h" +#include "ivas_rom_dec.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * ivas_dirac_allocate_parameters() + * + * Allocate and initialize DirAC parameters + *-------------------------------------------------------------------------*/ + +ivas_error ivas_dirac_allocate_parameters( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */ + const int16_t params_flag /* i : set of parameters flag */ +) +{ + int16_t i; + + if ( params_flag == 1 ) + { + if ( ( hSpatParamRendCom->azimuth = (int16_t **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->elevation = (int16_t **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->diffuseness_vector = (float **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->energy_ratio1 = (float **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->spreadCoherence = (float **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->surroundingCoherence = (float **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + for ( i = 0; i < hSpatParamRendCom->dirac_md_buffer_length; i++ ) + { + if ( ( hSpatParamRendCom->azimuth[i] = (int16_t *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_s( hSpatParamRendCom->azimuth[i], 0, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->elevation[i] = (int16_t *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_s( hSpatParamRendCom->elevation[i], 0, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->diffuseness_vector[i] = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_f( hSpatParamRendCom->diffuseness_vector[i], 1.0f, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->energy_ratio1[i] = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_f( hSpatParamRendCom->energy_ratio1[i], 0.0f, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->spreadCoherence[i] = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_f( hSpatParamRendCom->spreadCoherence[i], 0.0f, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->surroundingCoherence[i] = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_f( hSpatParamRendCom->surroundingCoherence[i], 0.0f, hSpatParamRendCom->num_freq_bands ); + } + } + else if ( params_flag == 2 ) + { + if ( ( hSpatParamRendCom->azimuth2 = (int16_t **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->elevation2 = (int16_t **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( int16_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->energy_ratio2 = (float **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + if ( ( hSpatParamRendCom->spreadCoherence2 = (float **) malloc( hSpatParamRendCom->dirac_md_buffer_length * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + + for ( i = 0; i < hSpatParamRendCom->dirac_md_buffer_length; i++ ) + { + if ( ( hSpatParamRendCom->azimuth2[i] = (int16_t *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_s( hSpatParamRendCom->azimuth2[i], 0, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->elevation2[i] = (int16_t *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( int16_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_s( hSpatParamRendCom->elevation2[i], 0, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->energy_ratio2[i] = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_f( hSpatParamRendCom->energy_ratio2[i], 0.0f, hSpatParamRendCom->num_freq_bands ); + + if ( ( hSpatParamRendCom->spreadCoherence2[i] = (float *) malloc( hSpatParamRendCom->num_freq_bands * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC\n" ) ); + } + set_f( hSpatParamRendCom->spreadCoherence2[i], 0.0f, hSpatParamRendCom->num_freq_bands ); + } + } + + return IVAS_ERR_OK; +} + + +ivas_error ivas_spat_hSpatParamRendCom_config( + SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out, /* i/o: IVAS decoder structure */ + const DIRAC_CONFIG_FLAG flag_config_inp, /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ + const int16_t dec_param_estim_flag, + const IVAS_FORMAT ivas_format, + const MC_MODE mc_mode, + const int32_t output_Fs, + const int16_t hodirac_flag ) +{ + ivas_error error; + int16_t map_idx; + DIRAC_CONFIG_FLAG flag_config; + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom; + + flag_config = ( flag_config_inp == DIRAC_RECONFIGURE_MODE ) ? DIRAC_RECONFIGURE : flag_config_inp; + error = IVAS_ERR_OK; + + hSpatParamRendCom = NULL; + + if ( flag_config == DIRAC_RECONFIGURE ) + { + hSpatParamRendCom = *hSpatParamRendCom_out; + } + else if ( flag_config == DIRAC_OPEN ) + { + /*-----------------------------------------------------------------* + * prepare library opening + *-----------------------------------------------------------------*/ + + if ( ( hSpatParamRendCom = (SPAT_PARAM_REND_COMMON_DATA_HANDLE) malloc( sizeof( SPAT_PARAM_REND_COMMON_DATA ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for DirAC meta\n" ) ); + } + + *hSpatParamRendCom_out = hSpatParamRendCom; + } + + + if ( flag_config == DIRAC_OPEN ) + { + hSpatParamRendCom->slot_size = (int16_t) ( ( output_Fs / FRAMES_PER_SEC ) / CLDFB_NO_COL_MAX ); + set_s( hSpatParamRendCom->subframe_nbslots, 0, MAX_JBM_SUBFRAMES_5MS ); + set_s( hSpatParamRendCom->subframe_nbslots, JBM_CLDFB_SLOTS_IN_SUBFRAME, DEFAULT_JBM_SUBFRAMES_5MS ); + hSpatParamRendCom->nb_subframes = DEFAULT_JBM_SUBFRAMES_5MS; + hSpatParamRendCom->subframes_rendered = 0; + hSpatParamRendCom->slots_rendered = 0; + hSpatParamRendCom->num_slots = DEFAULT_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME; + hSpatParamRendCom->num_freq_bands = (int16_t) ( output_Fs * INV_CLDFB_BANDWIDTH + 0.5f ); + hSpatParamRendCom->numSimultaneousDirections = 0; + hSpatParamRendCom->numParametricDirections = 0; + hSpatParamRendCom->numIsmDirections = 0; + } + + /*-----------------------------------------------------------------* + * set input parameters + *-----------------------------------------------------------------*/ + if ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && flag_config == DIRAC_RECONFIGURE ) + { + if ( hodirac_flag && hSpatParamRendCom->azimuth2 == NULL ) + { + if ( ( error = ivas_dirac_allocate_parameters( hSpatParamRendCom, 2 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( !hodirac_flag && hSpatParamRendCom->azimuth2 != NULL ) + { + ivas_dirac_deallocate_parameters( hSpatParamRendCom, 2 ); + } + } + + if ( flag_config == DIRAC_OPEN ) + { + hSpatParamRendCom->dirac_md_buffer_length = 0; + hSpatParamRendCom->dirac_bs_md_write_idx = 0; + hSpatParamRendCom->dirac_read_idx = 0; + if ( mc_mode == MC_MODE_MCMASA ) + { + hSpatParamRendCom->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES; + + set_s( hSpatParamRendCom->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); + for ( map_idx = 0; map_idx < DEFAULT_JBM_SUBFRAMES_5MS; map_idx++ ) + { + hSpatParamRendCom->render_to_md_map[map_idx] = map_idx; + } + } + else if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT ) + { + hSpatParamRendCom->dirac_md_buffer_length = MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_MASA_PARAM_DEC_SFR; + hSpatParamRendCom->dirac_bs_md_write_idx = DELAY_MASA_PARAM_DEC_SFR; + + set_s( hSpatParamRendCom->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); + for ( map_idx = 0; map_idx < DEFAULT_JBM_SUBFRAMES_5MS; map_idx++ ) + { + hSpatParamRendCom->render_to_md_map[map_idx] = map_idx; + } + } + else + { + int16_t num_slots_in_subfr; + num_slots_in_subfr = dec_param_estim_flag ? CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES : 1; + hSpatParamRendCom->dirac_md_buffer_length = ( MAX_PARAM_SPATIAL_SUBFRAMES + DELAY_DIRAC_PARAM_DEC_SFR ); + hSpatParamRendCom->dirac_bs_md_write_idx = DELAY_DIRAC_PARAM_DEC_SFR; + hSpatParamRendCom->dirac_read_idx = 0; + + set_s( hSpatParamRendCom->render_to_md_map, 0, MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME ); + for ( map_idx = 0; map_idx < DEFAULT_JBM_SUBFRAMES_5MS * num_slots_in_subfr; map_idx++ ) + { + hSpatParamRendCom->render_to_md_map[map_idx] = hSpatParamRendCom->dirac_read_idx + map_idx / num_slots_in_subfr; + } + } + + if ( ( error = ivas_dirac_allocate_parameters( hSpatParamRendCom, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT || ( ( ivas_format == SBA_FORMAT || ivas_format == SBA_ISM_FORMAT ) && hodirac_flag ) ) + { + if ( ( error = ivas_dirac_allocate_parameters( hSpatParamRendCom, 2 ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + hSpatParamRendCom->azimuth2 = NULL; + hSpatParamRendCom->elevation2 = NULL; + hSpatParamRendCom->energy_ratio2 = NULL; + hSpatParamRendCom->spreadCoherence2 = NULL; + } + } + + return error; +} + + +void ivas_spat_hSpatParamRendCom_close( + SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out ) +{ + if ( hSpatParamRendCom_out == NULL || *hSpatParamRendCom_out == NULL ) + { + return; + } + + ivas_dirac_deallocate_parameters( *hSpatParamRendCom_out, 1 ); + ivas_dirac_deallocate_parameters( *hSpatParamRendCom_out, 2 ); + + free( *hSpatParamRendCom_out ); + *hSpatParamRendCom_out = NULL; + + return; +} + +void ivas_dirac_rend_close( + DIRAC_REND_HANDLE *hDirACRend_out ) +{ + int16_t i, j; + DIRAC_REND_HANDLE hDirACRend; + + if ( hDirACRend_out == NULL || *hDirACRend_out == NULL ) + { + return; + } + + hDirACRend = *hDirACRend_out; + + /* close Output synthesis sub-module */ + ivas_dirac_dec_output_synthesis_close( hDirACRend ); + + /* close Decorrelator sub-module */ + if ( hDirACRend->proto_signal_decorr_on ) + { + ivas_dirac_dec_decorr_close( &hDirACRend->h_freq_domain_decorr_ap_params, &hDirACRend->h_freq_domain_decorr_ap_state ); + } + + /* Params */ + + /* free frequency axis buffer */ + if ( hDirACRend->frequency_axis != NULL ) + { + free( hDirACRend->frequency_axis ); + hDirACRend->frequency_axis = NULL; + } + + if ( hDirACRend->diffuse_response_function != NULL ) + { + free( hDirACRend->diffuse_response_function ); + hDirACRend->diffuse_response_function = NULL; + } + + if ( hDirACRend->hoa_encoder != NULL ) + { + free( hDirACRend->hoa_encoder ); + hDirACRend->hoa_encoder = NULL; + } + + /* prototype indexing */ + if ( hDirACRend->proto_index_dir != NULL ) + { + free( hDirACRend->proto_index_dir ); + hDirACRend->proto_index_dir = NULL; + } + + if ( hDirACRend->proto_index_diff != NULL ) + { + free( hDirACRend->proto_index_diff ); + hDirACRend->proto_index_dir = NULL; + } + + /* States */ + + /* free prototype signal buffers */ + if ( hDirACRend->proto_frame_f != NULL ) + { + free( hDirACRend->proto_frame_f ); + hDirACRend->proto_frame_f = NULL; + } + + for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) + { + for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) + { + if ( hDirACRend->buffer_intensity_real[i][j] != NULL ) + { + free( hDirACRend->buffer_intensity_real[i][j] ); + hDirACRend->buffer_intensity_real[i][j] = NULL; + } + } + } + if ( hDirACRend->buffer_energy != NULL ) + { + free( hDirACRend->buffer_energy ); + hDirACRend->buffer_energy = NULL; + } + + if ( hDirACRend->masa_stereo_type_detect != NULL ) + { + free( hDirACRend->masa_stereo_type_detect ); + hDirACRend->masa_stereo_type_detect = NULL; + } + + ivas_dirac_free_mem( &( hDirACRend->stack_mem ) ); + + free( *hDirACRend_out ); + *hDirACRend_out = NULL; + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_dirac_deallocate_parameters() + * + * Deallocate DirAC parameters + *-------------------------------------------------------------------------*/ + +void ivas_dirac_deallocate_parameters( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */ + const int16_t params_flag /* i : set of parameters flag */ +) +{ + int16_t i; + int16_t md_buffer_length; + + if ( hSpatParamRendCom == NULL ) + { + return; + } + + md_buffer_length = hSpatParamRendCom->dirac_md_buffer_length; + + if ( params_flag == 1 ) + { + if ( hSpatParamRendCom->azimuth != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->azimuth[i] != NULL ) + { + free( hSpatParamRendCom->azimuth[i] ); + hSpatParamRendCom->azimuth[i] = NULL; + } + } + + free( hSpatParamRendCom->azimuth ); + hSpatParamRendCom->azimuth = NULL; + } + + if ( hSpatParamRendCom->elevation != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->elevation[i] != NULL ) + { + free( hSpatParamRendCom->elevation[i] ); + hSpatParamRendCom->elevation[i] = NULL; + } + } + + free( hSpatParamRendCom->elevation ); + hSpatParamRendCom->elevation = NULL; + } + + if ( hSpatParamRendCom->energy_ratio1 != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->energy_ratio1[i] != NULL ) + { + free( hSpatParamRendCom->energy_ratio1[i] ); + hSpatParamRendCom->energy_ratio1[i] = NULL; + } + } + free( hSpatParamRendCom->energy_ratio1 ); + hSpatParamRendCom->energy_ratio1 = NULL; + } + + if ( hSpatParamRendCom->diffuseness_vector != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->diffuseness_vector[i] != NULL ) + { + free( hSpatParamRendCom->diffuseness_vector[i] ); + hSpatParamRendCom->diffuseness_vector[i] = NULL; + } + } + + free( hSpatParamRendCom->diffuseness_vector ); + hSpatParamRendCom->diffuseness_vector = NULL; + } + + if ( hSpatParamRendCom->spreadCoherence != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->spreadCoherence[i] != NULL ) + { + free( hSpatParamRendCom->spreadCoherence[i] ); + hSpatParamRendCom->spreadCoherence[i] = NULL; + } + } + free( hSpatParamRendCom->spreadCoherence ); + hSpatParamRendCom->spreadCoherence = NULL; + } + + if ( hSpatParamRendCom->surroundingCoherence != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->surroundingCoherence[i] != NULL ) + { + free( hSpatParamRendCom->surroundingCoherence[i] ); + hSpatParamRendCom->surroundingCoherence[i] = NULL; + } + } + free( hSpatParamRendCom->surroundingCoherence ); + hSpatParamRendCom->surroundingCoherence = NULL; + } + } + else if ( params_flag == 2 ) + { + if ( hSpatParamRendCom->azimuth2 != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->azimuth2[i] != NULL ) + { + free( hSpatParamRendCom->azimuth2[i] ); + hSpatParamRendCom->azimuth2[i] = NULL; + } + } + free( hSpatParamRendCom->azimuth2 ); + hSpatParamRendCom->azimuth2 = NULL; + } + + if ( hSpatParamRendCom->elevation2 != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->elevation2[i] != NULL ) + { + free( hSpatParamRendCom->elevation2[i] ); + hSpatParamRendCom->elevation2[i] = NULL; + } + } + free( hSpatParamRendCom->elevation2 ); + hSpatParamRendCom->elevation2 = NULL; + } + + if ( hSpatParamRendCom->energy_ratio2 != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->energy_ratio2[i] != NULL ) + { + free( hSpatParamRendCom->energy_ratio2[i] ); + hSpatParamRendCom->energy_ratio2[i] = NULL; + } + } + free( hSpatParamRendCom->energy_ratio2 ); + hSpatParamRendCom->energy_ratio2 = NULL; + } + + if ( hSpatParamRendCom->spreadCoherence2 != NULL ) + { + for ( i = 0; i < md_buffer_length; i++ ) + { + if ( hSpatParamRendCom->spreadCoherence2[i] != NULL ) + { + free( hSpatParamRendCom->spreadCoherence2[i] ); + hSpatParamRendCom->spreadCoherence2[i] = NULL; + } + } + free( hSpatParamRendCom->spreadCoherence2 ); + hSpatParamRendCom->spreadCoherence2 = NULL; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_dirac_alloc_mem() + * + * Allocate stack memory for DirAC renderer + *------------------------------------------------------------------------*/ + +ivas_error ivas_dirac_alloc_mem( + DIRAC_REND_HANDLE hDirACRend, + const RENDERER_TYPE renderer_type, + const int16_t num_freq_bands, + DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem, + const int16_t hodirac_flag ) +{ + int16_t num_freq_bands_diff, size; + int16_t size_ho; + int16_t size_pf; + int16_t num_outputs_dir, num_outputs_diff; + int16_t num_protos_dir; + + num_protos_dir = hDirACRend->num_protos_dir; + + num_freq_bands_diff = hDirACRend->h_output_synthesis_psd_params.max_band_decorr; + + num_outputs_dir = hDirACRend->num_outputs_dir; + num_outputs_diff = hDirACRend->num_outputs_diff; + + size = num_freq_bands * num_outputs_dir; + if ( hodirac_flag ) + { + size_ho = size * DIRAC_HO_NUMSECTORS; + size_pf = num_freq_bands * DIRAC_HO_NUMSECTORS; + } + else + { + size_ho = size; + size_pf = num_freq_bands; + } + + /* PSD related buffers */ + hDirAC_mem->cy_auto_dir_smooth = NULL; + hDirAC_mem->proto_power_smooth = NULL; + hDirAC_mem->proto_power_diff_smooth = NULL; + hDirAC_mem->direct_responses_square = NULL; + hDirAC_mem->frame_dec_f = NULL; + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + { + if ( ( hDirAC_mem->cy_auto_dir_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->cy_auto_dir_smooth, size ); + + if ( ( hDirAC_mem->proto_power_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->proto_power_smooth, size ); + + if ( ( hDirAC_mem->proto_power_diff_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->proto_power_diff_smooth, size ); + + if ( ( hDirAC_mem->direct_responses_square = (float *) malloc( sizeof( float ) * size ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->direct_responses_square, size ); + if ( hDirACRend->proto_signal_decorr_on && ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) ) + { + if ( ( hDirAC_mem->frame_dec_f = (float *) malloc( sizeof( float ) * 2 * num_outputs_diff * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + } + hDirACRend->h_output_synthesis_psd_state.proto_power_smooth = hDirAC_mem->proto_power_smooth; + hDirACRend->h_output_synthesis_psd_state.proto_power_diff_smooth = hDirAC_mem->proto_power_diff_smooth; + hDirACRend->h_output_synthesis_psd_state.cy_auto_dir_smooth = hDirAC_mem->cy_auto_dir_smooth; + hDirACRend->h_output_synthesis_psd_state.direct_responses_square = hDirAC_mem->direct_responses_square; + + /* Target and smoothed nrg factors/gains */ + if ( ( hDirAC_mem->cy_cross_dir_smooth = (float *) malloc( sizeof( float ) * size_ho ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->cy_cross_dir_smooth, size ); + + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + { + if ( ( hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * size ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->cy_auto_diff_smooth, size ); + } + else + { + if ( ( hDirAC_mem->cy_auto_diff_smooth = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands_diff ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->cy_auto_diff_smooth, num_outputs_diff * num_freq_bands_diff ); + } + hDirACRend->h_output_synthesis_psd_state.cy_cross_dir_smooth = hDirAC_mem->cy_cross_dir_smooth; + hDirACRend->h_output_synthesis_psd_state.cy_auto_diff_smooth = hDirAC_mem->cy_auto_diff_smooth; + + /*Responses (gains/factors)*/ + if ( ( hDirAC_mem->direct_responses = (float *) malloc( sizeof( float ) * size_ho ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + set_zero( hDirAC_mem->direct_responses, size ); + + + hDirACRend->h_output_synthesis_psd_state.direct_responses = hDirAC_mem->direct_responses; + + /* Prototypes */ + hDirAC_mem->proto_direct_buffer_f = NULL; + hDirAC_mem->proto_diffuse_buffer_f = NULL; + if ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) + { + if ( ( hDirAC_mem->proto_direct_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_protos_dir * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + + if ( hDirACRend->proto_signal_decorr_on ) + { + if ( hDirACRend->synthesisConf == DIRAC_SYNTHESIS_PSD_SHD ) + { + if ( ( hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * size ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + else + { + if ( ( hDirAC_mem->proto_diffuse_buffer_f = (float *) malloc( sizeof( float ) * 2 * MAX_PARAM_SPATIAL_SUBFRAMES * num_outputs_diff * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + } + } + hDirACRend->h_output_synthesis_psd_state.proto_direct_buffer_f = hDirAC_mem->proto_direct_buffer_f; + hDirACRend->h_output_synthesis_psd_state.proto_diffuse_buffer_f = hDirAC_mem->proto_diffuse_buffer_f; + + /* Gains/power factors*/ + hDirAC_mem->direct_power_factor = NULL; + hDirAC_mem->diffuse_power_factor = NULL; + + if ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) + { + if ( ( hDirAC_mem->direct_power_factor = (float *) malloc( sizeof( float ) * size_pf ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + if ( ( hDirAC_mem->diffuse_power_factor = (float *) malloc( sizeof( float ) * size_pf ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + + hDirACRend->h_output_synthesis_psd_state.direct_power_factor = hDirAC_mem->direct_power_factor; + hDirACRend->h_output_synthesis_psd_state.diffuse_power_factor = hDirAC_mem->diffuse_power_factor; + + hDirAC_mem->reference_power = NULL; + hDirAC_mem->onset_filter = NULL; + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_GAIN_SHD ) + { + if ( renderer_type != RENDERER_BINAURAL_PARAMETRIC && renderer_type != RENDERER_BINAURAL_PARAMETRIC_ROOM && renderer_type != RENDERER_STEREO_PARAMETRIC ) + { + if ( ( hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + if ( hDirACRend->proto_signal_decorr_on ) + { + if ( ( hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * num_outputs_diff * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + } + } + else + { + if ( num_protos_dir > 2 ) + { + if ( ( hDirAC_mem->reference_power = (float *) malloc( sizeof( float ) * 5 * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + + if ( hDirACRend->proto_signal_decorr_on ) + { + if ( ( hDirAC_mem->onset_filter = (float *) malloc( sizeof( float ) * 2 * num_freq_bands ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate stack memory for DirAC\n" ) ); + } + } + } + + return IVAS_ERR_OK; +} + + +void ivas_dirac_free_mem( + DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem ) +{ + if ( hDirAC_mem->cy_auto_dir_smooth != NULL ) + { + free( hDirAC_mem->cy_auto_dir_smooth ); + } + if ( hDirAC_mem->proto_power_smooth != NULL ) + { + free( hDirAC_mem->proto_power_smooth ); + } + if ( hDirAC_mem->proto_power_diff_smooth != NULL ) + { + free( hDirAC_mem->proto_power_diff_smooth ); + } + if ( hDirAC_mem->direct_responses_square != NULL ) + { + free( hDirAC_mem->direct_responses_square ); + } + if ( hDirAC_mem->frame_dec_f != NULL ) + { + free( hDirAC_mem->frame_dec_f ); + } + if ( hDirAC_mem->cy_cross_dir_smooth != NULL ) + { + free( hDirAC_mem->cy_cross_dir_smooth ); + } + if ( hDirAC_mem->cy_auto_diff_smooth != NULL ) + { + free( hDirAC_mem->cy_auto_diff_smooth ); + } + if ( hDirAC_mem->direct_responses != NULL ) + { + free( hDirAC_mem->direct_responses ); + } + if ( hDirAC_mem->proto_direct_buffer_f != NULL ) + { + free( hDirAC_mem->proto_direct_buffer_f ); + } + if ( hDirAC_mem->proto_diffuse_buffer_f != NULL ) + { + free( hDirAC_mem->proto_diffuse_buffer_f ); + } + if ( hDirAC_mem->direct_power_factor != NULL ) + { + free( hDirAC_mem->direct_power_factor ); + } + if ( hDirAC_mem->diffuse_power_factor != NULL ) + { + free( hDirAC_mem->diffuse_power_factor ); + } + if ( hDirAC_mem->reference_power != NULL ) + { + free( hDirAC_mem->reference_power ); + } + if ( hDirAC_mem->onset_filter != NULL ) + { + free( hDirAC_mem->onset_filter ); + } + + return; +} + + +/*------------------------------------------------------------------------- + * compute_hoa_encoder_mtx() + * + * + *------------------------------------------------------------------------*/ + +void compute_hoa_encoder_mtx( + const float *azimuth, + const float *elevation, + float *response, + const int16_t num_responses, + const int16_t ambisonics_order ) +{ + int16_t k, num_sh; + + num_sh = ivas_sba_get_nchan( ambisonics_order, 0 ); + + for ( k = 0; k < num_responses; k++ ) + { + ivas_dirac_dec_get_response( (const int16_t) azimuth[k], (const int16_t) elevation[k], &response[k * num_sh], ambisonics_order ); + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_dirac_dec_get_frequency_axis() + * + * DirAC decoding initialization + *------------------------------------------------------------------------*/ + +void ivas_dirac_dec_get_frequency_axis( + float *frequency_axis, + const int32_t output_Fs, + const int16_t num_freq_bands ) +{ + int16_t k; + float const_part; + + /* calc cldfb frequency axis */ + const_part = (float) output_Fs / ( 2.0f * (float) num_freq_bands ); + for ( k = 0; k < num_freq_bands; ++k ) + { + frequency_axis[k] = ( (float) k + 0.5f ) * const_part; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Local functions + *-------------------------------------------------------------------------*/ + +void initDiffuseResponses( + float *diffuse_response_function, + const int16_t num_channels, + AUDIO_CONFIG output_config, + IVAS_OUTPUT_SETUP hOutSetup, + const int16_t ambisonics_order, + const IVAS_FORMAT ivas_format, + int16_t *num_ele_spk_no_diffuse_rendering, + AUDIO_CONFIG transport_config ) +{ + int16_t i, l, k, idx, num_horizontal_speakers; + *num_ele_spk_no_diffuse_rendering = 0; + + if ( output_config == AUDIO_CONFIG_MONO ) + { + diffuse_response_function[0] = 1.0f; + diffuse_response_function[1] = inv_sqrt( 3.0f ); + } + else if ( !( output_config == AUDIO_CONFIG_FOA || output_config == AUDIO_CONFIG_HOA2 || output_config == AUDIO_CONFIG_HOA3 ) ) + { + /* set diffuse response function */ + if ( ivas_format == MC_FORMAT && ( transport_config == AUDIO_CONFIG_5_1 || transport_config == AUDIO_CONFIG_7_1 ) && output_config == AUDIO_CONFIG_5_1_4 ) + { + num_horizontal_speakers = num_channels - NUM_ELEVATED_SPEAKERS; + + mvr2r( diffuse_response_CICP6, diffuse_response_function, num_horizontal_speakers ); + set_zero( &diffuse_response_function[num_horizontal_speakers], NUM_ELEVATED_SPEAKERS ); + *num_ele_spk_no_diffuse_rendering = NUM_ELEVATED_SPEAKERS; + } + else if ( ivas_format == MC_FORMAT && ( transport_config == AUDIO_CONFIG_5_1 || transport_config == AUDIO_CONFIG_7_1 ) && output_config == AUDIO_CONFIG_7_1_4 ) + { + num_horizontal_speakers = num_channels - NUM_ELEVATED_SPEAKERS; + + set_f( diffuse_response_function, sqrtf( 1.f / ( (float) num_horizontal_speakers ) ), num_horizontal_speakers ); + set_zero( &diffuse_response_function[num_horizontal_speakers], NUM_ELEVATED_SPEAKERS ); + *num_ele_spk_no_diffuse_rendering = NUM_ELEVATED_SPEAKERS; + } + else if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT || ivas_format == MC_FORMAT ) && output_config == AUDIO_CONFIG_5_1 && num_channels == 5 ) + { + mvr2r( diffuse_response_CICP6, diffuse_response_function, num_channels ); + } + else if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT || ivas_format == MC_FORMAT ) && output_config == AUDIO_CONFIG_5_1_2 && num_channels == 7 ) + { + mvr2r( diffuse_response_CICP14, diffuse_response_function, num_channels ); + } + else if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT || ivas_format == MC_FORMAT ) && ( output_config == AUDIO_CONFIG_5_1_4 ) && ( num_channels == 9 ) ) + { + mvr2r( diffuse_response_CICP16, diffuse_response_function, num_channels ); + } + else if ( ( ivas_format == MASA_FORMAT || ivas_format == MASA_ISM_FORMAT || ivas_format == MC_FORMAT ) && ( output_config == AUDIO_CONFIG_LS_CUSTOM ) ) + { + if ( transport_config == AUDIO_CONFIG_5_1 || transport_config == AUDIO_CONFIG_7_1 ) + { + /* Detect loudspeakers with elevation */ + for ( i = 0, num_horizontal_speakers = 0; i < num_channels; i++ ) + { + if ( fabsf( hOutSetup.ls_elevation[i] ) <= 5.f ) + { + num_horizontal_speakers++; + diffuse_response_function[i] = 1.f; + } + else + { + *num_ele_spk_no_diffuse_rendering += 1; + diffuse_response_function[i] = 0.f; + } + } + /* Diffuse only to horizontal plane if enough loudspeakers */ + if ( num_horizontal_speakers > 2 ) + { + for ( i = 0; i < num_channels; i++ ) + { + diffuse_response_function[i] *= sqrtf( 1.f / (float) num_horizontal_speakers ); + } + } + else + { + *num_ele_spk_no_diffuse_rendering = 0; + set_f( diffuse_response_function, sqrtf( 1.f / (float) num_channels ), num_channels ); + } + } + else + { + set_f( diffuse_response_function, sqrtf( 1.f / (float) num_channels ), num_channels ); + } + } + else + { + set_f( diffuse_response_function, sqrtf( 1.f / (float) num_channels ), num_channels ); + } + } + else + { + idx = 0; + for ( l = 0; l <= ambisonics_order; l++ ) + { + for ( k = 0; k < ( 2 * l + 1 ); k++ ) + { + diffuse_response_function[idx++] = inv_sqrt( 2.0f * l + 1.0f ); + } + } + } + + return; +} + + +void protoSignalComputation_shd( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_direct_buffer_f, + float *proto_diffuse_buffer_f, + float *reference_power, + const int16_t slot_index, + const int16_t num_inputs, + const int16_t num_outputs_diff, + const int16_t num_freq_bands, + float *p_Rmat ) +{ + int16_t l, k; + float *p_proto_direct_buffer; + float *p_proto_diffuse_buffer; + int16_t Rmat_k[4]; + float W_real, W_imag; + float Y_real, Y_imag; + float *p_k[4]; + + k = 0; /* to avoid compilation warning */ + + p_proto_direct_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * num_inputs; + p_proto_diffuse_buffer = proto_diffuse_buffer_f + slot_index * 2 * num_freq_bands * num_outputs_diff; + + if ( num_inputs == 1 ) + { + for ( l = 0; l < num_freq_bands; l++ ) + { + p_proto_direct_buffer[2 * l] = RealBuffer[0][0][l]; + p_proto_direct_buffer[2 * l + 1] = ImagBuffer[0][0][l]; + } + } + else if ( num_inputs == 2 ) + { + if ( p_Rmat != 0 ) + { + assert( num_inputs == 4 && "This code block should never be run with num_inputs != 4!" ); + + for ( l = 0; l < num_freq_bands; l++ ) + { + W_real = RealBuffer[0][0][l] + RealBuffer[1][0][l]; + W_imag = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; + + Y_real = RealBuffer[0][0][l] - RealBuffer[1][0][l]; + Y_imag = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; + + p_proto_direct_buffer[2 * l] = W_real; + p_proto_direct_buffer[2 * l + 1] = W_imag; + p_proto_direct_buffer[2 * num_freq_bands + 2 * l] = p_Rmat[0] * Y_real; + p_proto_direct_buffer[2 * num_freq_bands + 2 * l + 1] = p_Rmat[0] * Y_imag; + } + } + else + { + for ( l = 0; l < num_freq_bands; l++ ) + { + W_real = RealBuffer[0][0][l] + RealBuffer[1][0][l]; + W_imag = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; + + p_proto_direct_buffer[2 * l] = W_real; + p_proto_direct_buffer[2 * l + 1] = W_imag; + { + p_proto_direct_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l] - RealBuffer[1][0][l]; + p_proto_direct_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; + } + } + } + } + else if ( num_inputs >= 4 ) + { + p_k[0] = p_proto_direct_buffer; + p_k[1] = p_proto_direct_buffer + 2 * num_freq_bands; + p_k[2] = p_proto_direct_buffer + 4 * num_freq_bands; + p_k[3] = p_proto_direct_buffer + 6 * num_freq_bands; + Rmat_k[0] = 0; + Rmat_k[1] = 1; + Rmat_k[2] = 2; + Rmat_k[3] = 0; + + if ( p_Rmat != 0 ) + { + assert( num_inputs == 4 && "This code block should never be run with num_inputs != 4!" ); + + for ( l = 0; l < num_freq_bands; l++ ) + { + *( p_k[0] ) = RealBuffer[0][0][l]; + reference_power[l + num_freq_bands] = *( p_k[0] ) * *( p_k[0] ); + p_k[0]++; + *( p_k[0] ) = ImagBuffer[0][0][l]; + reference_power[l + num_freq_bands] += *( p_k[0] ) * *( p_k[0] ); + p_k[0]++; + reference_power[l] = 0.5f * reference_power[l + num_freq_bands]; + + for ( k = 1; k < 4; k++ ) + { + *( p_k[k] ) = p_Rmat[3 * Rmat_k[k] + 1] * RealBuffer[1][0][l] + p_Rmat[3 * Rmat_k[k] + 2] * RealBuffer[2][0][l] + p_Rmat[3 * Rmat_k[k] + 0] * RealBuffer[3][0][l]; + reference_power[l + ( k + 1 ) * num_freq_bands] = *( p_k[k] ) * *( p_k[k] ); + p_k[k]++; + *( p_k[k] ) = p_Rmat[3 * Rmat_k[k] + 1] * ImagBuffer[1][0][l] + p_Rmat[3 * Rmat_k[k] + 2] * ImagBuffer[2][0][l] + p_Rmat[3 * Rmat_k[k] + 0] * ImagBuffer[3][0][l]; + reference_power[l + ( k + 1 ) * num_freq_bands] += *( p_k[k] ) * *( p_k[k] ); + p_k[k]++; + reference_power[l] += 0.5f * ( reference_power[l + ( k + 1 ) * num_freq_bands] ); + } + + for ( k = 1; k < 4; k++ ) + { + RealBuffer[k][0][l] = p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l]; + ImagBuffer[k][0][l] = p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l + 1]; + } + } + } + else + { + set_zero( reference_power, num_freq_bands ); + for ( k = 0; k < 4; k++ ) + { + for ( l = 0; l < num_freq_bands; l++ ) + { + p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l] = RealBuffer[k][0][l]; + p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l + 1] = ImagBuffer[k][0][l]; + reference_power[l + ( k + 1 ) * num_freq_bands] = RealBuffer[k][0][l] * RealBuffer[k][0][l] + ImagBuffer[k][0][l] * ImagBuffer[k][0][l]; + reference_power[l] += 0.5f * ( reference_power[l + ( k + 1 ) * num_freq_bands] ); + } + } + } + + /* Additional transport channels = planar SBA components of degree higher than 1*/ + for ( ; k < num_inputs; k++ ) + { + for ( l = 0; l < num_freq_bands; l++ ) + { + p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l] = RealBuffer[k][0][l]; + p_proto_direct_buffer[k * 2 * num_freq_bands + 2 * l + 1] = ImagBuffer[k][0][l]; + } + } + } + + + /*Copy direct to diffuse proto*/ + mvr2r( p_proto_direct_buffer, p_proto_diffuse_buffer, 2 * num_freq_bands * min( num_outputs_diff, num_inputs ) ); + + if ( num_inputs == 1 ) + { + /* Add comfort noise addition (CNA) to diffuse proto only*/ + for ( l = 0; l < num_freq_bands; l++ ) + { + p_proto_diffuse_buffer[2 * l] += RealBuffer[1][0][l]; + p_proto_diffuse_buffer[2 * l + 1] += ImagBuffer[1][0][l]; + } + } + + return; +} + + +void protoSignalComputation1( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_frame_f, + float *proto_direct_buffer_f, + float *reference_power, + float *proto_power_smooth, + const int16_t slot_index, + const int16_t num_outputs_diff, + const int16_t num_freq_bands ) +{ + int16_t l, k; + float *p_proto_buffer; + + p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands; + + for ( l = 0; l < num_freq_bands; l++ ) + { + reference_power[l] = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; + proto_power_smooth[l] += reference_power[l]; + p_proto_buffer[2 * l] = RealBuffer[0][0][l]; + p_proto_buffer[2 * l + 1] = ImagBuffer[0][0][l]; + + for ( k = 0; k < num_outputs_diff; k++ ) + { + proto_frame_f[2 * k * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; + proto_frame_f[2 * k * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; + } + } + + return; +} + + +void protoSignalComputation2( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_frame_f, + float *proto_direct_buffer_f, + float *reference_power, + float *proto_power_smooth, + const int16_t isloudspeaker, + const int16_t slot_index, + const int16_t num_freq_bands, + MASA_STEREO_TYPE_DETECT *stereo_type_detect ) +{ + int16_t l; + float *p_proto_buffer; + float Real_aux, Imag_aux; + + float left_bb_power, right_bb_power, total_bb_power, lr_bb_power; + float lr_total_bb_ratio; + float a, b; + + float left_hi_power, right_hi_power, total_hi_power, lr_hi_power; + float lr_total_hi_ratio; + float a2, b2; + + float sum_power; + float sum_total_ratio[MASA_SUM_FREQ_RANGE_BINS]; + float min_sum_total_ratio; + float min_sum_total_ratio_db; + + float RealSubtract, ImagSubtract; + + float interpolatorSpaced = 0.0f; + float interpolatorDmx = 1.0f; + + int16_t dipole_freq_range[2]; + float tempSpaced, tempDmx; + + if ( isloudspeaker ) + { + p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * 3; + + for ( l = 0; l < num_freq_bands; l++ ) + { + float Left_power; + float Right_power; + Real_aux = RealBuffer[0][0][l] + RealBuffer[1][0][l]; + Imag_aux = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; + + Left_power = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; + Right_power = RealBuffer[1][0][l] * RealBuffer[1][0][l] + ImagBuffer[1][0][l] * ImagBuffer[1][0][l]; + + reference_power[l] = Left_power + Right_power; + proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; + + p_proto_buffer[2 * l] = Real_aux; + p_proto_buffer[2 * l + 1] = Imag_aux; + proto_power_smooth[l + num_freq_bands] += RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; + p_proto_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; + + proto_power_smooth[l + 2 * num_freq_bands] += RealBuffer[1][0][l] * RealBuffer[1][0][l]; + proto_power_smooth[l + 2 * num_freq_bands] += ImagBuffer[1][0][l] * ImagBuffer[1][0][l]; + p_proto_buffer[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; + p_proto_buffer[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; + + proto_frame_f[2 * l] = Real_aux; + proto_frame_f[2 * l + 1] = Imag_aux; + + proto_frame_f[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; + proto_frame_f[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; + proto_frame_f[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; + proto_frame_f[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; + } + } + else if ( stereo_type_detect != NULL ) + { + p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * 2; + + left_bb_power = 0.0f; + right_bb_power = 0.0f; + total_bb_power = 0.0f; + + left_hi_power = 0.0f; + right_hi_power = 0.0f; + total_hi_power = 0.0f; + + dipole_freq_range[0] = stereo_type_detect->dipole_freq_range[0]; + dipole_freq_range[1] = stereo_type_detect->dipole_freq_range[1]; + + a = 0.01f; /* Temporal smoothing coefficient */ + b = 1.0f - a; /* Temporal smoothing coefficient */ + a2 = 0.1f; /* Temporal smoothing coefficient */ + b2 = 1.0f - a2; /* Temporal smoothing coefficient */ + + if ( stereo_type_detect->interpolator > 0 ) + { + if ( stereo_type_detect->type_change_direction == MASA_STEREO_SPACED_MICS ) + { + interpolatorSpaced = ( (float) ( stereo_type_detect->interpolator ) ) / ( (float) MASA_STEREO_INTERPOLATION_SLOTS ); + interpolatorDmx = 1.0f - interpolatorSpaced; + } + else + { + interpolatorDmx = ( (float) ( stereo_type_detect->interpolator ) ) / ( (float) MASA_STEREO_INTERPOLATION_SLOTS ); + interpolatorSpaced = 1.0f - interpolatorDmx; + } + } + + for ( l = 0; l < num_freq_bands; l++ ) + { + float Left_power; + float Right_power; + + /* Compute sum signal */ + Real_aux = RealBuffer[0][0][l] + RealBuffer[1][0][l]; + Imag_aux = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; + + /* Compute reference power */ + Left_power = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; + Right_power = RealBuffer[1][0][l] * RealBuffer[1][0][l] + ImagBuffer[1][0][l] * ImagBuffer[1][0][l]; + + reference_power[l] = Left_power + Right_power; + + left_bb_power += Left_power; + right_bb_power += Right_power; + total_bb_power += reference_power[l]; + + if ( l > MASA_HI_FREQ_START_BIN ) + { + left_hi_power += Left_power; + right_hi_power += Right_power; + total_hi_power += reference_power[l]; + } + + if ( l < min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ) ) + { + sum_power = Real_aux * Real_aux + Imag_aux * Imag_aux; + + stereo_type_detect->sum_power[l] = a * sum_power + b * stereo_type_detect->sum_power[l]; + stereo_type_detect->total_power[l] = a * reference_power[l] + b * stereo_type_detect->total_power[l]; + + sum_total_ratio[l] = stereo_type_detect->sum_power[l] / ( stereo_type_detect->total_power[l] + EPSILON ); + } + + if ( l == 0 ) + { + RealSubtract = RealBuffer[0][0][l] - RealBuffer[1][0][l]; + ImagSubtract = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; + stereo_type_detect->subtract_power_y += RealSubtract * RealSubtract + ImagSubtract * ImagSubtract; + } + + /* Compute protos (and their power) for direct sound rendering */ + + /* W prototype */ + if ( stereo_type_detect->interpolator > 0 ) + { + if ( l < ( dipole_freq_range[1] - 1 ) || l >= MASA_SUM_PROTO_START_BIN ) + { + Real_aux = interpolatorSpaced * 0.5f * Real_aux + interpolatorDmx * Real_aux; + Imag_aux = interpolatorSpaced * 0.5f * Imag_aux + interpolatorDmx * Imag_aux; + proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; + p_proto_buffer[2 * l] = Real_aux; + p_proto_buffer[2 * l + 1] = Imag_aux; + } + else + { + tempSpaced = RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; + tempDmx = Real_aux * Real_aux + Imag_aux * Imag_aux; + proto_power_smooth[l] += interpolatorSpaced * tempSpaced + interpolatorDmx * tempDmx; + p_proto_buffer[2 * l] = interpolatorSpaced * RealBuffer[0][0][l] + interpolatorDmx * Real_aux; + p_proto_buffer[2 * l + 1] = interpolatorSpaced * ImagBuffer[0][0][l] + interpolatorDmx * Imag_aux; + } + } + else if ( stereo_type_detect->masa_stereo_type == MASA_STEREO_SPACED_MICS ) + { + if ( l < ( dipole_freq_range[1] - 1 ) || l >= MASA_SUM_PROTO_START_BIN ) + { + Real_aux *= 0.5f; + Imag_aux *= 0.5f; + proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; + p_proto_buffer[2 * l] = Real_aux; + p_proto_buffer[2 * l + 1] = Imag_aux; + } + else + { + proto_power_smooth[l] += RealBuffer[0][0][l] * RealBuffer[0][0][l] + ImagBuffer[0][0][l] * ImagBuffer[0][0][l]; + p_proto_buffer[2 * l] = RealBuffer[0][0][l]; + p_proto_buffer[2 * l + 1] = ImagBuffer[0][0][l]; + } + } + else + { + proto_power_smooth[l] += Real_aux * Real_aux + Imag_aux * Imag_aux; + p_proto_buffer[2 * l] = Real_aux; + p_proto_buffer[2 * l + 1] = Imag_aux; + } + + /* Y prototype */ + if ( stereo_type_detect->interpolator > 0 ) + { + if ( l < ( dipole_freq_range[0] ) ) + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = interpolatorSpaced * p_proto_buffer[2 * l] + interpolatorDmx * ( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = interpolatorSpaced * p_proto_buffer[2 * l + 1] + interpolatorDmx * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); + } + else if ( l < ( dipole_freq_range[1] ) ) + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = interpolatorSpaced * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ) + interpolatorDmx * ( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = interpolatorSpaced * ( -( RealBuffer[0][0][l] - RealBuffer[1][0][l] ) ) + interpolatorDmx * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); + } + else + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = interpolatorSpaced * p_proto_buffer[2 * l] + interpolatorDmx * ( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = interpolatorSpaced * p_proto_buffer[2 * l + 1] + interpolatorDmx * ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); + } + proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; + } + else if ( stereo_type_detect->masa_stereo_type == MASA_STEREO_SPACED_MICS ) + { + if ( l < ( dipole_freq_range[0] ) ) /* proto = W */ + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = p_proto_buffer[2 * l]; + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = p_proto_buffer[2 * l + 1]; + proto_power_smooth[l + num_freq_bands] = proto_power_smooth[l]; + } + else if ( l < ( dipole_freq_range[1] ) ) /* proto = -i * (x1-x2) * eq */ + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = ( ImagBuffer[0][0][l] - ImagBuffer[1][0][l] ); + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = -( RealBuffer[0][0][l] - RealBuffer[1][0][l] ); + proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; + } + else /* proto = W */ + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = p_proto_buffer[2 * l]; + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = p_proto_buffer[2 * l + 1]; + proto_power_smooth[l + num_freq_bands] = proto_power_smooth[l]; + } + } + else + { + p_proto_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l] - RealBuffer[1][0][l]; + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; + proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; + } + + /* Compute protos for decorrelation */ + proto_frame_f[2 * l] = Real_aux; + proto_frame_f[2 * l + 1] = Imag_aux; + proto_frame_f[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; + proto_frame_f[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; + proto_frame_f[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; + proto_frame_f[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; + } + + if ( stereo_type_detect->interpolator > 0 ) + { + stereo_type_detect->interpolator++; + if ( stereo_type_detect->interpolator == MASA_STEREO_INTERPOLATION_SLOTS ) + { + stereo_type_detect->interpolator = 0; + stereo_type_detect->current_stereo_type = stereo_type_detect->type_change_direction; + } + } + + stereo_type_detect->left_bb_power = a * left_bb_power + b * stereo_type_detect->left_bb_power; + stereo_type_detect->right_bb_power = a * right_bb_power + b * stereo_type_detect->right_bb_power; + stereo_type_detect->total_bb_power = a * total_bb_power + b * stereo_type_detect->total_bb_power; + + lr_bb_power = ( stereo_type_detect->left_bb_power < stereo_type_detect->right_bb_power ) ? stereo_type_detect->left_bb_power : stereo_type_detect->right_bb_power; + lr_bb_power *= 2.0f; + lr_total_bb_ratio = 10.0f * log10f( lr_bb_power / ( stereo_type_detect->total_bb_power + EPSILON ) ); + + stereo_type_detect->left_hi_power = a2 * left_hi_power + b2 * stereo_type_detect->left_hi_power; + stereo_type_detect->right_hi_power = a2 * right_hi_power + b2 * stereo_type_detect->right_hi_power; + stereo_type_detect->total_hi_power = a2 * total_hi_power + b2 * stereo_type_detect->total_hi_power; + + lr_hi_power = ( stereo_type_detect->left_hi_power < stereo_type_detect->right_hi_power ) ? stereo_type_detect->left_hi_power : stereo_type_detect->right_hi_power; + lr_hi_power *= 2.0f; + lr_total_hi_ratio = 10.0f * log10f( lr_hi_power / ( stereo_type_detect->total_hi_power + EPSILON ) ); + + minimum( sum_total_ratio, min( num_freq_bands, MASA_SUM_FREQ_RANGE_BINS ), &min_sum_total_ratio ); + min_sum_total_ratio_db = 10.0f * log10f( min_sum_total_ratio ); + + stereo_type_detect->lr_total_bb_ratio_db = lr_total_bb_ratio; + stereo_type_detect->lr_total_hi_ratio_db = lr_total_hi_ratio; + stereo_type_detect->min_sum_total_ratio_db = min_sum_total_ratio_db; + + ivas_masa_stereotype_detection( stereo_type_detect ); + } + else + { + p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * 2; + + for ( l = 0; l < num_freq_bands; l++ ) + { + Real_aux = RealBuffer[0][0][l] + RealBuffer[1][0][l]; + Imag_aux = ImagBuffer[0][0][l] + ImagBuffer[1][0][l]; + + reference_power[l] = Real_aux * Real_aux + Imag_aux * Imag_aux; + proto_power_smooth[l] += reference_power[l]; + p_proto_buffer[2 * l] = Real_aux; + p_proto_buffer[2 * l + 1] = Imag_aux; + + p_proto_buffer[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l] - RealBuffer[1][0][l]; + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l] - ImagBuffer[1][0][l]; + proto_power_smooth[l + num_freq_bands] += p_proto_buffer[2 * num_freq_bands + 2 * l] * p_proto_buffer[2 * num_freq_bands + 2 * l] + p_proto_buffer[2 * num_freq_bands + 2 * l + 1] * p_proto_buffer[2 * num_freq_bands + 2 * l + 1]; + + proto_frame_f[2 * l] = Real_aux; + proto_frame_f[2 * l + 1] = Imag_aux; + + proto_frame_f[2 * num_freq_bands + 2 * l] = RealBuffer[0][0][l]; + proto_frame_f[2 * num_freq_bands + 2 * l + 1] = ImagBuffer[0][0][l]; + proto_frame_f[4 * num_freq_bands + 2 * l] = RealBuffer[1][0][l]; + proto_frame_f[4 * num_freq_bands + 2 * l + 1] = ImagBuffer[1][0][l]; + } + } + + return; +} + + +void protoSignalComputation4( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_frame_f, + float *proto_direct_buffer_f, + float *reference_power, + float *proto_power_smooth, + const int16_t slot_index, + const int16_t num_outputs_diff, + const int16_t num_freq_bands, + const float *mtx_hoa_decoder, + const int16_t nchan_transport, + const int16_t *sba_map_tc_ind ) +{ + int16_t k, l; + int16_t n; + float sq_tmp; + float *p_proto_buffer; + + set_zero( reference_power, num_freq_bands ); + for ( k = 0; k < 4; k++ ) + { + for ( l = 0; l < num_freq_bands; l++ ) + { + sq_tmp = RealBuffer[k][0][l] * RealBuffer[k][0][l] + ImagBuffer[k][0][l] * ImagBuffer[k][0][l]; + reference_power[l] += 0.5f * sq_tmp; + } + } + + /*For decorrelated diffuseness*/ + for ( l = 0; l < num_outputs_diff; l++ ) + { + for ( k = 0; k < num_freq_bands; k++ ) + { + proto_frame_f[2 * l * num_freq_bands + 2 * k] = 0.f; + proto_frame_f[2 * l * num_freq_bands + 2 * k + 1] = 0.f; + for ( n = 0; n < nchan_transport; n++ ) + { + proto_frame_f[2 * l * num_freq_bands + 2 * k] += RealBuffer[n][0][k] * mtx_hoa_decoder[l * 16 + sba_map_tc_ind[n]]; + proto_frame_f[2 * l * num_freq_bands + 2 * k + 1] += ImagBuffer[n][0][k] * mtx_hoa_decoder[l * 16 + sba_map_tc_ind[n]]; + } + } + } + + p_proto_buffer = proto_direct_buffer_f + slot_index * 2 * num_freq_bands * num_outputs_diff; + for ( k = 0; k < num_outputs_diff; k++ ) + { + for ( l = 0; l < num_freq_bands; l++ ) + { + sq_tmp = proto_frame_f[k * 2 * num_freq_bands + 2 * l] * proto_frame_f[k * 2 * num_freq_bands + 2 * l] + proto_frame_f[k * 2 * num_freq_bands + 2 * l + 1] * proto_frame_f[k * 2 * num_freq_bands + 2 * l + 1]; + proto_power_smooth[l + k * num_freq_bands] += sq_tmp; + p_proto_buffer[k * 2 * num_freq_bands + 2 * l] = proto_frame_f[k * 2 * num_freq_bands + 2 * l]; + p_proto_buffer[k * 2 * num_freq_bands + 2 * l + 1] = proto_frame_f[k * 2 * num_freq_bands + 2 * l + 1]; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_dirac_dec_compute_diffuse_proto() + * + * Compute diffuse prototype buffer and smooth power, only for decorrelated bands + *------------------------------------------------------------------------*/ + +void ivas_dirac_dec_compute_diffuse_proto( + DIRAC_REND_HANDLE hDirACRend, + const int16_t num_freq_bands, + const int16_t slot_idx /* i : slot index */ +) +{ + int16_t k, l; + int16_t num_freq_bands_diff; + float *p_diff_buffer, *p_diff_buffer_1; + float *p_proto_diff, *p_power_smooth, *proto_frame_dec_f; + DIRAC_OUTPUT_SYNTHESIS_PARAMS *h_dirac_output_synthesis_params; + DIRAC_OUTPUT_SYNTHESIS_STATE *h_dirac_output_synthesis_state; + int16_t m; + float *p_hoa_enc; + + proto_frame_dec_f = hDirACRend->proto_frame_dec_f; + h_dirac_output_synthesis_params = &( hDirACRend->h_output_synthesis_psd_params ); + h_dirac_output_synthesis_state = &( hDirACRend->h_output_synthesis_psd_state ); + + num_freq_bands_diff = h_dirac_output_synthesis_params->max_band_decorr; + + p_diff_buffer = h_dirac_output_synthesis_state->proto_diffuse_buffer_f + slot_idx * 2 * num_freq_bands_diff * hDirACRend->hOutSetup.nchan_out_woLFE; + p_diff_buffer_1 = p_diff_buffer + 1; + p_power_smooth = h_dirac_output_synthesis_state->proto_power_diff_smooth; + + if ( hDirACRend->synthesisConf != DIRAC_SYNTHESIS_PSD_SHD ) + { + for ( k = 0; k < hDirACRend->hOutSetup.nchan_out_woLFE; k++ ) + { + p_proto_diff = proto_frame_dec_f + k * 2 * num_freq_bands; + for ( l = 0; l < num_freq_bands_diff; l++ ) + { + *p_diff_buffer = *( p_proto_diff++ ); + *p_diff_buffer_1 = *( p_proto_diff++ ); + *( p_power_smooth++ ) += ( *p_diff_buffer ) * ( *p_diff_buffer ) + ( *p_diff_buffer_1 ) * ( *p_diff_buffer_1 ); + p_diff_buffer += 2; + p_diff_buffer_1 += 2; + } + } + } + else + { + /*DIRAC_SYNTHESIS_PSD_SHD: Virtual LS->HOA encoding*/ + for ( k = 0; k < hDirACRend->hOutSetup.nchan_out_woLFE; k++ ) + { + for ( l = 0; l < num_freq_bands_diff; l++ ) + { + p_hoa_enc = hDirACRend->hoa_encoder + k; + p_proto_diff = proto_frame_dec_f + 2 * l; + + *p_diff_buffer = 0.f; + *p_diff_buffer_1 = 0.f; + + /*LS to HOA*/ + for ( m = 0; m < hDirACRend->num_outputs_diff; m++ ) + { + *p_diff_buffer += ( *p_hoa_enc ) * ( *p_proto_diff ); + *p_diff_buffer_1 += ( *p_hoa_enc ) * ( *( p_proto_diff + 1 ) ); + p_hoa_enc += hDirACRend->hOutSetup.nchan_out_woLFE; + p_proto_diff += 2 * num_freq_bands; + } + + *( p_power_smooth++ ) += ( *p_diff_buffer ) * ( *p_diff_buffer ) + ( *p_diff_buffer_1 ) * ( *p_diff_buffer_1 ); + p_diff_buffer += 2; + p_diff_buffer_1 += 2; + } + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * computeDirectionAngles() + * + *------------------------------------------------------------------------*/ + +void computeDirectionAngles( + float *intensity_real_x, + float *intensity_real_y, + float *intensity_real_z, + const int16_t num_frequency_bands, + int16_t *azimuth, + int16_t *elevation ) +{ + int16_t k; + float intensityNorm; + float x, y, z, radius; + + for ( k = 0; k < num_frequency_bands; ++k ) + + { + intensityNorm = *( intensity_real_x ) * *( intensity_real_x ) + + *( intensity_real_y ) * *( intensity_real_y ) + + *( intensity_real_z ) * *( intensity_real_z ); + + if ( intensityNorm <= EPSILON ) + { + intensityNorm = 1.0f; + x = 1.0f; + y = 0.0f; + z = 0.0f; + intensity_real_x++; + intensity_real_y++; + intensity_real_z++; + } + else + { + intensityNorm = sqrtf( 1.f / intensityNorm ); + x = *( intensity_real_x++ ) * intensityNorm; + y = *( intensity_real_y++ ) * intensityNorm; + z = *( intensity_real_z++ ) * intensityNorm; + } + radius = sqrtf( x * x + y * y ); + azimuth[k] = (int16_t) ( max( -180.0f, min( 180.0f, atan2f( y, x ) / EVS_PI * 180.0f ) ) + 0.5f ); + elevation[k] = (int16_t) ( max( -90.0f, min( 180.0f, atan2f( z, radius ) / EVS_PI * 180.0f ) ) + 0.5f ); + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_masa_init_stereotype_detection() + * + * Initialize stereo transport signal type detection + *------------------------------------------------------------------------*/ + +void ivas_masa_init_stereotype_detection( + MASA_STEREO_TYPE_DETECT *stereo_type_detect ) +{ + stereo_type_detect->masa_stereo_type = MASA_STEREO_DOWNMIX; + stereo_type_detect->current_stereo_type = MASA_STEREO_DOWNMIX; + stereo_type_detect->type_change_direction = MASA_STEREO_DOWNMIX; + + stereo_type_detect->counter = 0; + stereo_type_detect->interpolator = 0; + + stereo_type_detect->dipole_freq_range[0] = 1; + stereo_type_detect->dipole_freq_range[1] = 3; + + stereo_type_detect->left_bb_power = 0.0f; /* Broadband estimates */ + stereo_type_detect->right_bb_power = 0.0f; + stereo_type_detect->total_bb_power = 0.0f; + + stereo_type_detect->left_hi_power = 0.0f; /* High-frequency estimates */ + stereo_type_detect->right_hi_power = 0.0f; + stereo_type_detect->total_hi_power = 0.0f; + + set_zero( stereo_type_detect->sum_power, MASA_SUM_FREQ_RANGE_BINS ); + set_zero( stereo_type_detect->total_power, MASA_SUM_FREQ_RANGE_BINS ); + + stereo_type_detect->subtract_power_y = 0.0f; + stereo_type_detect->subtract_power_y_smooth = 0.0f; + stereo_type_detect->target_power_y_smooth = 0.0f; + + stereo_type_detect->lr_total_bb_ratio_db = 0.0f; + stereo_type_detect->lr_total_hi_ratio_db = 0.0f; + stereo_type_detect->min_sum_total_ratio_db = 0.0f; + stereo_type_detect->subtract_target_ratio_db = 0.0f; + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_masa_stereotype_detection() + * + * Detect the type of the transport audio signals + *------------------------------------------------------------------------*/ + +void ivas_masa_stereotype_detection( + MASA_STEREO_TYPE_DETECT *stereo_type_detect ) +{ + float lr_total_bb_ratio_db = stereo_type_detect->lr_total_bb_ratio_db; + float lr_total_hi_ratio_db = stereo_type_detect->lr_total_hi_ratio_db; + float min_sum_total_ratio_db = stereo_type_detect->min_sum_total_ratio_db; + float subtract_target_ratio_db = stereo_type_detect->subtract_target_ratio_db; + float change_to_spaced; + int16_t change_to_spaced_selection; + float change_to_downmix; + float change_to_downmix2; + int16_t change_to_downmix_selection; + float subtract_temp; + float min_sum_temp; + float lr_total_bb_temp; + float lr_total_hi_temp; + + /* Determine if the determined features match the spaced mic type */ + change_to_spaced_selection = 0; + if ( subtract_target_ratio_db < -3.0f ) + { + subtract_temp = ( -subtract_target_ratio_db - 3.0f ) / 3.0f; + min_sum_temp = max( -min_sum_total_ratio_db / 6.0f, 0.0f ); + lr_total_bb_temp = lr_total_bb_ratio_db / 6.0f; + + change_to_spaced = subtract_temp + min_sum_temp + lr_total_bb_temp; + + if ( change_to_spaced >= 1.0f ) + { + change_to_spaced_selection = 1; + } + } + + /* Determine if the determined features match the downmix type, according to a metric */ + change_to_downmix_selection = 0; + if ( subtract_target_ratio_db > 0.0f ) + { + subtract_temp = subtract_target_ratio_db / 3.0f; + min_sum_temp = ( min_sum_total_ratio_db + 1.0f ) / 6.0f; + lr_total_bb_temp = -lr_total_bb_ratio_db / 6.0f; + + change_to_downmix = subtract_temp + min_sum_temp + lr_total_bb_temp; + + if ( change_to_downmix >= 1.0f ) + { + change_to_downmix_selection = 1; + } + } + + /* Determine if the determined features match the downmix type, according to another metric */ + if ( lr_total_hi_ratio_db < -12.0f ) + { + subtract_temp = ( subtract_target_ratio_db + 4.0f ) / 3.0f; + min_sum_temp = min_sum_total_ratio_db / 6.0f; + lr_total_hi_temp = ( -lr_total_hi_ratio_db - 12.0f ) / 3.0f; + + change_to_downmix2 = subtract_temp + min_sum_temp + lr_total_hi_temp; + + if ( change_to_downmix2 >= 1.0f ) + { + change_to_downmix_selection = 1; + } + } + + if ( stereo_type_detect->counter < 400 ) + { + stereo_type_detect->counter++; + } + else + { + if ( change_to_spaced_selection == 1 ) + { + stereo_type_detect->masa_stereo_type = MASA_STEREO_SPACED_MICS; + } + else if ( change_to_downmix_selection == 1 ) + { + stereo_type_detect->masa_stereo_type = MASA_STEREO_DOWNMIX; + } + } + + if ( stereo_type_detect->interpolator == 0 ) + { + if ( stereo_type_detect->current_stereo_type != stereo_type_detect->masa_stereo_type ) + { + stereo_type_detect->interpolator = 1; + stereo_type_detect->type_change_direction = stereo_type_detect->masa_stereo_type; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * computeIntensityVector_dec() + * + * + *------------------------------------------------------------------------*/ + +void computeIntensityVector_dec( + float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + const int16_t num_frequency_bands, + float *intensity_real_x, + float *intensity_real_y, + float *intensity_real_z ) +{ + /* + * W = a + ib; Y = c + id + * real(W*Y') = ac + bd + */ + int16_t i; + float real, img; + + for ( i = 0; i < num_frequency_bands; ++i ) + { + real = Cldfb_RealBuffer[0][0][i]; + img = Cldfb_ImagBuffer[0][0][i]; + intensity_real_x[i] = Cldfb_RealBuffer[3][0][i] * real + Cldfb_ImagBuffer[3][0][i] * img; + intensity_real_y[i] = Cldfb_RealBuffer[1][0][i] * real + Cldfb_ImagBuffer[1][0][i] * img; + intensity_real_z[i] = Cldfb_RealBuffer[2][0][i] * real + Cldfb_ImagBuffer[2][0][i] * img; + } + + return; +} + + +/*------------------------------------------------------------------------- + * ivas_lfe_synth_with_cldfb() + * + * + *------------------------------------------------------------------------*/ + +void ivas_lfe_synth_with_cldfb( + MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth, + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float RealBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + const int16_t slot_index, + const int16_t subframe_index, + const int16_t nchan_transport ) +{ + float lfeGain; + float transportGain; + float protoLfeReal, protoLfeImag; + int16_t i; + float transportEne, protoLfeEne, targetEneLfe, targetEneTrans; + + set_zero( RealBufferLfe[slot_index], CLDFB_NO_CHANNELS_MAX ); + set_zero( ImagBufferLfe[slot_index], CLDFB_NO_CHANNELS_MAX ); + + protoLfeReal = RealBuffer[0][0][0]; + protoLfeImag = ImagBuffer[0][0][0]; + transportEne = RealBuffer[0][0][0] * RealBuffer[0][0][0] + ImagBuffer[0][0][0] * ImagBuffer[0][0][0]; + for ( i = 1; i < nchan_transport; i++ ) + { + protoLfeReal += RealBuffer[i][0][0]; + protoLfeImag += ImagBuffer[i][0][0]; + transportEne += RealBuffer[i][0][0] * RealBuffer[i][0][0] + ImagBuffer[i][0][0] * ImagBuffer[i][0][0]; + } + protoLfeEne = protoLfeReal * protoLfeReal + protoLfeImag * protoLfeImag; + + targetEneLfe = transportEne * hMasaLfeSynth->lfeToTotalEnergyRatio[subframe_index]; + targetEneTrans = transportEne * max( ( 1.0f - hMasaLfeSynth->lfeToTotalEnergyRatio[subframe_index] ), 0.01f ); + + hMasaLfeSynth->transportEneSmooth *= MCMASA_LFE_SYNTH_ALPHA; + hMasaLfeSynth->protoLfeEneSmooth *= MCMASA_LFE_SYNTH_ALPHA; + hMasaLfeSynth->targetEneLfeSmooth *= MCMASA_LFE_SYNTH_ALPHA; + hMasaLfeSynth->targetEneTransSmooth *= MCMASA_LFE_SYNTH_ALPHA; + + hMasaLfeSynth->transportEneSmooth += transportEne; + hMasaLfeSynth->protoLfeEneSmooth += protoLfeEne; + hMasaLfeSynth->targetEneLfeSmooth += targetEneLfe; + hMasaLfeSynth->targetEneTransSmooth += targetEneTrans; + + lfeGain = min( 1.0f, sqrtf( hMasaLfeSynth->targetEneLfeSmooth / ( EPSILON + hMasaLfeSynth->protoLfeEneSmooth ) ) ); + transportGain = min( 1.0f, sqrtf( hMasaLfeSynth->targetEneTransSmooth / ( EPSILON + hMasaLfeSynth->transportEneSmooth ) ) ); + + RealBufferLfe[slot_index][0] = protoLfeReal * lfeGain; + ImagBufferLfe[slot_index][0] = protoLfeImag * lfeGain; + + RealBuffer[0][0][0] *= transportGain; + ImagBuffer[0][0][0] *= transportGain; + for ( i = 1; i < nchan_transport; i++ ) + { + RealBuffer[i][0][0] *= transportGain; + ImagBuffer[i][0][0] *= transportGain; + } + + return; +} + + +/*------------------------------------------------------------------------- + * rotateAziEle_DirAC() + * + * Apply rotation to DirAC DOAs + *------------------------------------------------------------------------*/ + +void rotateAziEle_DirAC( + int16_t *azi, /* i/o: array of azimuth values */ + int16_t *ele, /* i/o: array of elevation values */ + const int16_t band1, /* i : bands to work on (lower limit) */ + const int16_t band2, /* i : bands to work on (upper bound) */ + const float *p_Rmat /* i : pointer to real-space rotation matrix */ +) +{ + int16_t b; + float dv_0, dv_1, dv_2; + float dv_r_0, dv_r_1, dv_r_2; + float w; + + push_wmops( "rotateAziEle_DirAC" ); + + for ( b = band1; b < band2; b++ ) + { + + /*Conversion spherical to cartesian coordinates*/ + w = cosf( ele[b] * PI_OVER_180 ); + dv_0 = w * cosf( azi[b] * PI_OVER_180 ); + dv_1 = w * sinf( azi[b] * PI_OVER_180 ); + dv_2 = sinf( ele[b] * PI_OVER_180 ); + + dv_r_0 = p_Rmat[0] * dv_0 + p_Rmat[1] * dv_1 + p_Rmat[2] * dv_2; + dv_r_1 = p_Rmat[3] * dv_0 + p_Rmat[4] * dv_1 + p_Rmat[5] * dv_2; + dv_r_2 = p_Rmat[6] * dv_0 + p_Rmat[7] * dv_1 + p_Rmat[8] * dv_2; + + /*Conversion spherical to cartesian coordinates*/ + azi[b] = (int16_t) ( atan2f( dv_r_1, dv_r_0 ) * _180_OVER_PI ); + ele[b] = (int16_t) ( atan2f( dv_r_2, sqrtf( dv_r_0 * dv_r_0 + dv_r_1 * dv_r_1 ) ) * _180_OVER_PI ); + } + + pop_wmops(); + + return; +} diff --git a/lib_rend/ivas_efap.c b/lib_rend/ivas_efap.c index 4301d75dec749b89b32404dbcad9c59de9dd329e..42ef8beaa3249d8ee4cb25a09cf62cc049fea268 100644 --- a/lib_rend/ivas_efap.c +++ b/lib_rend/ivas_efap.c @@ -719,7 +719,7 @@ static void add_ghost_speakers( int16_t numVertex; int16_t lengthVertGhst; /* Nb of vertical ghost added */ int16_t lengthHorGhst; /* Nb of Horizontal Ghost */ - int16_t i, j, k, n, a; /* Integer for loops */ + int16_t i, j, k, a; /* Integer for loops */ int16_t num_new; /* Number of new vertices to add */ float maxAngle; /* Max azimuth tolerance for extend the LS setup horizontaly */ float newDiff; /* Angle differences that will help us set the extended LS setup */ @@ -842,12 +842,8 @@ static void add_ghost_speakers( } /* Adding new virtual speakers */ - n = 0; - for ( i = 0; i < k; ++i ) { - ++n; - if ( sectors[i] > 1 ) { newDiff = tmpAngleDiff[i] / sectors[i]; @@ -858,7 +854,6 @@ static void add_ghost_speakers( newAzi = tmpAzi[i] + ( j + 1 ) * newDiff; add_vertex( vertexArray, newAzi, 0, numVertex + a, EFAP_DMX_INTENSITY ); - ++n; ++a; if ( j > 0 ) @@ -1016,7 +1011,6 @@ static void visible_edges( int16_t maxVertex; int16_t i, j, k; int16_t a, b; - int16_t nbOfEdges; int16_t tmpSurface[4]; int16_t counter[EFAP_MAX_SIZE_TMP_BUFF][EFAP_MAX_SIZE_TMP_BUFF]; int16_t counterTranspose[EFAP_MAX_SIZE_TMP_BUFF][EFAP_MAX_SIZE_TMP_BUFF]; @@ -1059,16 +1053,11 @@ static void visible_edges( } } - nbOfEdges = 0; for ( i = 0; i < maxVertex + 1; ++i ) { for ( j = 0; j < maxVertex + 1; ++j ) { counter[i][j] = counterTranspose[i][j] + counterTranspose[j][i]; - if ( counter[i][j] == 1 ) - { - ++nbOfEdges; - } } } diff --git a/lib_rend/ivas_hrtf.c b/lib_rend/ivas_hrtf.c index 136873668bb2731f44a63badd6a9c7c32b4f27b2..380afccca3643bbd48882f90e5d96658201a615d 100644 --- a/lib_rend/ivas_hrtf.c +++ b/lib_rend/ivas_hrtf.c @@ -36,6 +36,7 @@ #include "ivas_prot_rend.h" #include "ivas_error.h" #include "wmc_auto.h" +#include "ivas_prot.h" /*-----------------------------------------------------------------------* * ivas_HRTF_binary_open() @@ -139,7 +140,7 @@ ivas_error ivas_HRTF_fastconv_binary_open( { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for FASTCONV HRTF tables!" ); } - + ivas_init_binaural_hrtf( *hHrtfFastConv ); return IVAS_ERR_OK; } diff --git a/work_in_progress/readme.txt b/lib_rend/ivas_lc3plus_common.c similarity index 76% rename from work_in_progress/readme.txt rename to lib_rend/ivas_lc3plus_common.c index 02be8c90f2f1ad57a9b3e225f171abe1e95774c0..db33f9861fec97e629bf2e8453cb0aefb97f6426 100644 --- a/work_in_progress/readme.txt +++ b/lib_rend/ivas_lc3plus_common.c @@ -30,9 +30,31 @@ *******************************************************************************************************/ - -Note: Contributions found in the directory work_in_progress are work in -progress, lacking integration, evaluation and decision. - -The delta is relative to IVAS_Pre-Release_Float_ANSI-C__2022_02_06.zip, -as published on https://immersivevoiceandaudio.org. +#include "options.h" +#include "ivas_lc3plus_common.h" +#include "ivas_error.h" +#include "lc3.h" + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*-----------------------------------------------------------------------------------------* + * Function IVAS_LC3PLUS_LC3plusErrToIvasErr() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_LC3plusErrToIvasErr( + const LC3PLUS_Error lc3PlusError ) +{ + switch ( lc3PlusError ) + { + case LC3PLUS_OK: + return IVAS_ERR_OK; + case LC3PLUS_BITRATE_ERROR: + return IVAS_ERR_LC3PLUS_INVALID_BITRATE; + default: + break; + } + + return IVAS_ERR_INTERNAL; +} +#endif diff --git a/lib_util/head_rotation_file_reader.h b/lib_rend/ivas_lc3plus_common.h similarity index 76% rename from lib_util/head_rotation_file_reader.h rename to lib_rend/ivas_lc3plus_common.h index d4a2af84e7de49ec978be1bfd9e2f66a9dfbaca7..93a37488cc92de08c197022d4470ad8947a86fec 100644 --- a/lib_util/head_rotation_file_reader.h +++ b/lib_rend/ivas_lc3plus_common.h @@ -30,9 +30,28 @@ *******************************************************************************************************/ -#ifndef IVAS_HR_FILE_READER_H -#define IVAS_HR_FILE_READER_H - -#include "common_api_types.h" - -#endif /* IVAS_HR_FILE_READER_H */ +#ifndef IVAS_LC3PLUS_COM_H +#define IVAS_LC3PLUS_COM_H + + +#include +#include "ivas_error.h" +#include "lc3.h" + +/*! common configuration parameters between encoder and decoder */ +typedef struct LC3PLUS_CONFIG +{ + /*! frame duration in microseconds [10000, 5000, 2500] */ + uint32_t lc3plus_frame_duration_us; + /*! ivas frame duration in microseconds [20000, 5000] */ + uint32_t ivas_frame_duration_us; + /*! sampling rate*/ + uint32_t samplerate; + /*! number of channels */ + uint16_t channels; +} LC3PLUS_CONFIG; + +/*! utility function to convert LC3PLUS_Errors to the suitable ivas_error */ +ivas_error IVAS_LC3PLUS_LC3plusErrToIvasErr( const LC3PLUS_Error lc3PlusError ); + +#endif /* IVAS_LC3PLUS_COM_H */ diff --git a/lib_rend/ivas_lc3plus_dec.c b/lib_rend/ivas_lc3plus_dec.c new file mode 100644 index 0000000000000000000000000000000000000000..78372c4fbbe1ffd69ba76dc820c3dddb6cb07762 --- /dev/null +++ b/lib_rend/ivas_lc3plus_dec.c @@ -0,0 +1,782 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include "prot.h" +#include "ivas_prot.h" +#include "ivas_lc3plus_dec.h" +#include "ivas_lc3plus_common.h" +#include "lc3.h" +#include "ivas_error_utils.h" +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_Open() + * + * + *------------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_DEC_Open( + const LC3PLUS_CONFIG config, /* i : LC3plus decoder configuration */ +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + const int16_t enableCaching, /* i : if set to 0, the decoder will NOT use cached frame to flush algorithmic delay after skipped frames */ +#endif + IVAS_LC3PLUS_DEC_HANDLE *handle /* o : decoder handle */ +) +{ + LC3PLUS_Error err; + int32_t decoder_size; + int16_t lc3plusFrameIdx; + int16_t numLC3plusFramesPerIvasFrame; + int16_t i; + + if ( ( *handle = malloc( sizeof( struct IVAS_LC3PLUS_DEC_HANDLE ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + if ( 0 == config.lc3plus_frame_duration_us ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid lc3plus_frame_duration_us (0)\n" ); + } +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + ( *handle )->cachingEnabled = enableCaching; +#endif + numLC3plusFramesPerIvasFrame = (int16_t) ( config.ivas_frame_duration_us / config.lc3plus_frame_duration_us ); + +#ifdef LC3PLUS_DEC_COLLECT_STATS + ( *handle )->stats.action_histogram[DEC_ACTION_DECODE_AND_DROP] = 0; + ( *handle )->stats.action_histogram[DEC_ACTION_DECODE_AND_USE] = 0; + ( *handle )->stats.action_histogram[DEC_ACTION_SKIP] = 0; + ( *handle )->stats.action_histogram[DEC_ACTION_CACHE] = 0; + ( *handle )->stats.num_cached_frames_decoded_and_dropped = 0; +#endif + + ( *handle )->num_decs = 0; + ( *handle )->pcm_conversion_buffer = NULL; + ( *handle )->handles = NULL; + ( *handle )->selective_decoding_states = NULL; + ( *handle )->bitstream_caches = NULL; + + if ( ( ( *handle )->handles = malloc( config.channels * sizeof( IVAS_LC3PLUS_DEC_HANDLE ) ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + if ( ( ( *handle )->selective_decoding_states = malloc( config.channels * sizeof( IVAS_LC3PLUS_DEC_SELECTIVE_DECODING_STATE * ) ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + for ( i = 0; i < config.channels; ++i ) + { + ( *handle )->handles[i] = NULL; + ( *handle )->selective_decoding_states[i] = NULL; + } + +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + if ( enableCaching ) + { +#endif + if ( ( ( *handle )->bitstream_caches = malloc( config.channels * sizeof( IVAS_LC3PLUS_DEC_BITSTREAM_CACHE * ) ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + for ( i = 0; i < config.channels; ++i ) + { + ( *handle )->bitstream_caches[i] = NULL; + } +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + } +#endif + + ( *handle )->num_decs = config.channels; + for ( int32_t iCh = 0; iCh < config.channels; iCh++ ) + { + ( *handle )->selective_decoding_states[iCh] = NULL; + if ( NULL != ( *handle )->bitstream_caches ) + { + ( *handle )->bitstream_caches[iCh] = NULL; + } + /* allocate and configure LC3plus decoder */ + decoder_size = lc3plus_dec_get_size( config.samplerate, 1 ); + if ( 0 == decoder_size ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_dec_get_size failed\n" ); + } + + if ( ( ( *handle )->handles[iCh] = malloc( decoder_size ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + + err = lc3plus_dec_init( ( *handle )->handles[iCh], config.samplerate, 1, LC3PLUS_PLC_ADVANCED, 0 ); + if ( LC3PLUS_OK != err ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_dec_init failed\n" ); + } + + err = lc3plus_dec_set_frame_dms( ( *handle )->handles[iCh], config.lc3plus_frame_duration_us / 100 ); + if ( LC3PLUS_OK != err ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_dec_set_frame_dms failed\n" ); + } + + /* allocate and configure per LC3plus decoder skip state */ + if ( ( ( *handle )->selective_decoding_states[iCh] = malloc( sizeof( IVAS_LC3PLUS_DEC_SELECTIVE_DECODING_STATE ) ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + + if ( ( ( *handle )->selective_decoding_states[iCh]->frame_actions = malloc( numLC3plusFramesPerIvasFrame * sizeof( SelectiveDecAction ) ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + + ( *handle )->selective_decoding_states[iCh]->has_skipped_a_frame = 0; + ( *handle )->selective_decoding_states[iCh]->shall_decode_cached_frame = 0; + for ( lc3plusFrameIdx = 0; lc3plusFrameIdx < numLC3plusFramesPerIvasFrame; lc3plusFrameIdx++ ) + { + ( *handle )->selective_decoding_states[iCh]->frame_actions[lc3plusFrameIdx] = DEC_ACTION_DECODE_AND_USE; + } + +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + if ( enableCaching ) + { +#endif + /* allocate and configure per LC3plus decoder bitstream cache */ + if ( ( ( *handle )->bitstream_caches[iCh] = malloc( sizeof( IVAS_LC3PLUS_DEC_BITSTREAM_CACHE ) ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity = 400 /*LC3plus max non-HR octet count*/ * numLC3plusFramesPerIvasFrame; + if ( ( ( *handle )->bitstream_caches[iCh]->bitstream_cache = malloc( ( *handle )->bitstream_caches[iCh]->bitstream_cache_capacity ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder\n" ); + } + ( *handle )->bitstream_caches[iCh]->bitstream_cache_size = 0; +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + } +#endif + } + + ( *handle )->config = config; + if ( config.ivas_frame_duration_us < config.lc3plus_frame_duration_us || config.ivas_frame_duration_us % config.lc3plus_frame_duration_us != 0 ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + 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" ); + } + + if ( ( ( *handle )->pcm_conversion_buffer = malloc( sizeof( int16_t ) * config.samplerate * config.lc3plus_frame_duration_us / 1000000 ) ) == NULL ) + { + IVAS_LC3PLUS_DEC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus decoder wrapper pcm_conversion_buffer\n" ); + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_AllocateSubframeDecodingMatrix() + * + * + *------------------------------------------------------------------------*/ + +ivas_error IVAS_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 ) + { + IVAS_LC3PLUS_DEC_FreeSubframeDecodingMatrix( *subframeChannelMatrix ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "subframeChannelMatrix allocation failed\n" ); + } + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_AllocateSubframeDecodingMatrix() + * + * + *------------------------------------------------------------------------*/ + +void IVAS_LC3PLUS_DEC_FreeSubframeDecodingMatrix( + int16_t **subframeChannelMatrix ) +{ + for ( int16_t i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) + { + free( subframeChannelMatrix[i] ); + } + + free( subframeChannelMatrix ); + + return; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_SetSelectiveDecodingMatrix() + * + * + *------------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_DEC_SetSelectiveDecodingMatrix( + IVAS_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 effectiveIvasSubframeDuration; + int16_t actual_num_spatial_subframes; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "IVAS_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.ivas_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "invalid ivas_frame_duration_us/lc3plus_frame_duration_us values\n" ); + } + + effectiveIvasSubframeDuration = (int16_t) ( handle->config.ivas_frame_duration_us == 20000 ? handle->config.ivas_frame_duration_us / MAX_PARAM_SPATIAL_SUBFRAMES : handle->config.ivas_frame_duration_us ); + numIvasSubFramesPerLC3frame = (int16_t) handle->config.lc3plus_frame_duration_us / effectiveIvasSubframeDuration; + actual_num_spatial_subframes = (int16_t) handle->config.ivas_frame_duration_us / effectiveIvasSubframeDuration; + /* 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 ( +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + handle->cachingEnabled && +#endif + ( 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; + } + } + } + } + +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + if ( handle->cachingEnabled ) + { +#endif + /* 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; + } + } + } +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + } +#endif + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_GetDelay() + * + * + *------------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_DEC_GetDelay( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder handle */ + int32_t *delayInSamples /* o : decoder delay in number of samples per channel */ +) +{ + int32_t tmpDelayInSamples; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "IVAS_LC3PLUS_DEC_HANDLE is NULL\n" ); + } + if ( NULL == delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "delayInSamples is NULL\n" ); + } + + *delayInSamples = 0; + /* sanity check whether all encoders are actually configured identically */ + for ( uint32_t iDec = 0; iDec < handle->num_decs; iDec++ ) + { + if ( NULL == handle->handles[iDec] ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3plus decoder handle is NULL\n" ); + } + + tmpDelayInSamples = lc3plus_dec_get_delay( handle->handles[iDec] ); + if ( 0 != *delayInSamples && tmpDelayInSamples != *delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Not all mono LC3plus decoders are configured identically\n" ); + } + + *delayInSamples = tmpDelayInSamples; + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_Close() + * + * + *------------------------------------------------------------------------*/ + +void IVAS_LC3PLUS_DEC_Close( + IVAS_LC3PLUS_DEC_HANDLE *handle /* i/o: Pointer to LC3plus decoder handle */ +) +{ + if ( NULL == handle || NULL == *handle ) + { + return; + } +#ifdef LC3PLUS_DEC_COLLECT_STATS + printLC3plusDecStats( &( *handle )->stats ); +#endif + for ( uint32_t iDec = 0; iDec < ( *handle )->num_decs; iDec++ ) + { + if ( NULL != ( *handle )->handles && NULL != ( *handle )->handles[iDec] ) + { + lc3plus_free_decoder_structs( ( *handle )->handles[iDec] ); + free( ( *handle )->handles[iDec] ); + } + + if ( NULL != ( *handle )->selective_decoding_states && NULL != ( *handle )->selective_decoding_states[iDec] ) + { + free( ( *handle )->selective_decoding_states[iDec]->frame_actions ); + free( ( *handle )->selective_decoding_states[iDec] ); + } + + if ( NULL != ( *handle )->bitstream_caches && NULL != ( *handle )->bitstream_caches[iDec] ) + { + free( ( *handle )->bitstream_caches[iDec]->bitstream_cache ); + free( ( *handle )->bitstream_caches[iDec] ); + } + } + + if ( NULL != ( *handle )->pcm_conversion_buffer ) + { + free( ( *handle )->pcm_conversion_buffer ); + } + free( ( *handle )->handles ); + + if ( NULL != ( *handle )->bitstream_caches ) + { + free( ( *handle )->bitstream_caches ); + } + free( ( *handle )->selective_decoding_states ); + + free( *handle ); + *handle = NULL; + + return; +} + + +/*------------------------------------------------------------------------- + * decode_or_conceal_one_lc3plus_frame() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error decode_or_conceal_one_lc3plus_frame( + LC3PLUS_Dec *dec, + uint8_t *bitstream_in, + const int32_t bitstream_in_length, + int16_t **pcm_out_buffer, + const int32_t badFrameIndicator ) +{ + LC3PLUS_Error err; + + push_wmops( "lc3plus_dec16" ); + err = lc3plus_dec16( dec, bitstream_in, bitstream_in_length, pcm_out_buffer, NULL, badFrameIndicator ); + pop_wmops(); + + if ( err == LC3PLUS_DECODE_ERROR && 1 == badFrameIndicator ) + { + /* LC3PLUS_DECODE_ERROR && badFrameIndicator means that the decoder has successfully concealed, which is actually OK. */ + err = LC3PLUS_OK; + } + + if ( err != LC3PLUS_OK ) + { + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_dec16 failed\n" ); + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_Decode_or_Conceal_internal() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error IVAS_LC3PLUS_DEC_Decode_or_Conceal_internal( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder configuration */ + uint8_t *bitstream_in, /* i : pointer to input bitstream */ + int32_t bitstream_in_size, /* i : size of bitstream_in */ + const int16_t badFrameIndicator, /* i : bad frame indicator. If set to 1, triggers concealment */ + float **pcm_out /* o : decoded samples */ +) +{ + uint32_t iDec; + int32_t iLc3plusFrame; + int32_t lc3framesPerIvasFrame; + int32_t ivasSampleIndex; + int16_t numSamplesPerLC3plusChannel; + int32_t bitstreamOffsetPerCoder; + ivas_error err; + uint8_t *bitstream_in_iter = bitstream_in; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Dec_Wrap_Handle is NULL\n" ); + } + if ( NULL == bitstream_in ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bitstream_in is NULL\n" ); + } + if ( NULL == pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_out is NULL\n" ); + } + if ( badFrameIndicator != 0 && badFrameIndicator != 1 ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "badFrameIndicator must be 1 or 0\n" ); + } + if ( badFrameIndicator == 0 && bitstream_in_size <= 0 ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "bitstream_in_size must be positive\n" ); + } + + if ( handle->config.ivas_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "ivas_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" ); + } + + lc3framesPerIvasFrame = handle->config.ivas_frame_duration_us / handle->config.lc3plus_frame_duration_us; + + numSamplesPerLC3plusChannel = (int16_t) ( handle->config.samplerate / ( 1000000 / handle->config.ivas_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++ ) + { + if ( handle->selective_decoding_states[iDec]->shall_decode_cached_frame ) + { + if ( 0 == handle->bitstream_caches[iDec]->bitstream_cache_size ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "LC3plus cache is empty\n" ); + } + + err = decode_or_conceal_one_lc3plus_frame( handle->handles[iDec], handle->bitstream_caches[iDec]->bitstream_cache, handle->bitstream_caches[iDec]->bitstream_cache_size, &handle->pcm_conversion_buffer, badFrameIndicator ); + if ( err != IVAS_ERR_OK ) + { + return IVAS_ERROR( err, "lc3plus decoding failed\n" ); + } + handle->selective_decoding_states[iDec]->shall_decode_cached_frame = 0; + handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; +#ifdef LC3PLUS_DEC_COLLECT_STATS + handle->stats.num_cached_frames_decoded_and_dropped++; +#endif + } + + /* reset cache if caching is enabled - it has either been decoded or is not needed */ + if ( NULL != handle->bitstream_caches ) + { + handle->bitstream_caches[iDec]->bitstream_cache_size = 0; + } +#ifdef LC3PLUS_DEC_COLLECT_STATS + handle->stats.action_histogram[handle->selective_decoding_states[iDec]->frame_actions[iLc3plusFrame]]++; +#endif + switch ( handle->selective_decoding_states[iDec]->frame_actions[iLc3plusFrame] ) + { + 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 ); + if ( err != IVAS_ERR_OK ) + { + return IVAS_ERROR( err, "lc3plus decoding failed\n" ); + } + handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; + break; + } + case DEC_ACTION_DECODE_AND_USE: + { + 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] = (float) handle->pcm_conversion_buffer[iSampleInt16]; + } + handle->selective_decoding_states[iDec]->has_skipped_a_frame = 0; + break; + } + 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; + } + case DEC_ACTION_CACHE: + { + 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; + } + case DEC_ACTION_NUM_ENUMS: + default: + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "invalid LC3plus decoder state\n" ); + } + + 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; + } + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_Decode() + * + * + *------------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_DEC_Decode( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder configuration */ + uint8_t *bitstream_in, /* i : pointer to input bitstream */ + const int32_t bitstream_in_size, /* i : size of bitstream_in */ + float **pcm_out /* o : decoded samples */ +) +{ + int16_t badFrameIndicator; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Dec_Wrap_Handle is NULL\n" ); + } + if ( NULL == bitstream_in ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bitstream_in is NULL\n" ); + } + if ( NULL == pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_out is NULL\n" ); + } + badFrameIndicator = 0; + + return IVAS_LC3PLUS_DEC_Decode_or_Conceal_internal( handle, bitstream_in, bitstream_in_size, badFrameIndicator, pcm_out ); +} + + +/*------------------------------------------------------------------------- + * IVAS_LC3PLUS_DEC_Conceal() + * + * + *------------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_DEC_Conceal( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : LC3plus decoder handle */ + float **pcm_out /* o : concealed samples */ +) +{ + uint8_t bitstream_in[LC3PLUS_MAX_BYTES]; + int16_t badFrameIndicator; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Dec_Wrap_Handle is NULL\n" ); + } + + if ( NULL == pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_out is NULL\n" ); + } + + /* LC3plus API requires a non-NULL bitstream pointer, even when triggering concealment */ + badFrameIndicator = 1; + + return IVAS_LC3PLUS_DEC_Decode_or_Conceal_internal( handle, bitstream_in, 0, badFrameIndicator, pcm_out ); +} + + +#ifdef LC3PLUS_DEC_COLLECT_STATS +void printLC3plusDecStats( const IVAS_LC3PLUS_DEC_COLLECT_STATS *stats ) +{ + int32_t sum_pushed_frames = 0; + int32_t sum_decoded_and_dropped_frames, sum_skipped_frames; + + sum_pushed_frames = stats->action_histogram[DEC_ACTION_DECODE_AND_USE] + stats->action_histogram[DEC_ACTION_SKIP] + stats->action_histogram[DEC_ACTION_CACHE]; + + sum_decoded_and_dropped_frames = + stats->action_histogram[DEC_ACTION_DECODE_AND_DROP] + stats->num_cached_frames_decoded_and_dropped; + + sum_skipped_frames = stats->action_histogram[DEC_ACTION_SKIP] + stats->action_histogram[DEC_ACTION_CACHE]; + + if ( sum_pushed_frames == 0 ) + { + printf( "\n Dec didn't run" ); + return; + } + + printf( "\nsum_pushed_frames: %i\n", sum_pushed_frames ); + printf( " DECODE_AND_USE count: %i \n", stats->action_histogram[DEC_ACTION_DECODE_AND_USE] ); + printf( " SKIP count: %i\n", stats->action_histogram[DEC_ACTION_SKIP] ); + printf( " CACHE count: %i\n", stats->action_histogram[DEC_ACTION_CACHE] ); + printf( "Decoded-and-Dropped:\n" ); + printf( " DECODE_AND_DROP count: %i \n", stats->action_histogram[DEC_ACTION_DECODE_AND_DROP] ); + printf( " DEC_CACHE count: %i\n", stats->num_cached_frames_decoded_and_dropped ); + printf( " perc of req : %f\n", 100.f * (float) sum_decoded_and_dropped_frames / sum_pushed_frames ); + printf( "Workload saved: \n" ); + printf( " Skipped perc. of req %f\n", 100.f * (float) sum_skipped_frames / sum_pushed_frames ); + + return; +} +#endif diff --git a/lib_rend/ivas_lc3plus_dec.h b/lib_rend/ivas_lc3plus_dec.h new file mode 100644 index 0000000000000000000000000000000000000000..0bd14280e639f7e10f4df4fa11748528daf69900 --- /dev/null +++ b/lib_rend/ivas_lc3plus_dec.h @@ -0,0 +1,144 @@ +/****************************************************************************************************** + + (C) 2022-2023 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_LC3PLUS_DEC_H +#define IVAS_LC3PLUS_DEC_H + +#include +#include "options.h" +#include "lc3.h" +#include "ivas_error.h" +#include "ivas_lc3plus_common.h" +#include "ivas_cnst.h" + +#ifdef DEBUGGING +/* if defined, collects runtime stats and prints them in the DTOR */ +// #define LC3PLUS_DEC_COLLECT_STATS +/* if defined, caching can be disabled, otherwise it's always active */ +// #define LC3PLUS_DEC_ALLOW_DISABLE_CACHING +#endif + +typedef enum +{ + DEC_ACTION_DECODE_AND_DROP = 0, + DEC_ACTION_DECODE_AND_USE, + DEC_ACTION_SKIP, + DEC_ACTION_CACHE, + DEC_ACTION_NUM_ENUMS +} SelectiveDecAction; + +#ifdef LC3PLUS_DEC_COLLECT_STATS +typedef struct IVAS_LC3PLUS_DEC_COLLECT_STATS +{ + int32_t action_histogram[DEC_ACTION_NUM_ENUMS]; + int32_t num_cached_frames_decoded_and_dropped; +} IVAS_LC3PLUS_DEC_COLLECT_STATS; + +void printLC3plusDecStats( const IVAS_LC3PLUS_DEC_COLLECT_STATS *stats ); +#endif + +typedef struct IVAS_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; + /*! if set to 1, decoder will skip decoding for the next frame */ + SelectiveDecAction *frame_actions; + /*! if set to 1, decoder will decode the cache before decoding any of current frames */ + int16_t shall_decode_cached_frame; +} IVAS_LC3PLUS_DEC_SELECTIVE_DECODING_STATE; + +typedef struct IVAS_LC3PLUS_DEC_BITSTREAM_CACHE +{ + uint8_t *bitstream_cache; + int32_t bitstream_cache_capacity; + int32_t bitstream_cache_size; +} IVAS_LC3PLUS_DEC_BITSTREAM_CACHE; + +/* decoder wrapper */ +typedef struct IVAS_LC3PLUS_DEC_HANDLE +{ + LC3PLUS_Dec **handles; + IVAS_LC3PLUS_DEC_SELECTIVE_DECODING_STATE **selective_decoding_states; + IVAS_LC3PLUS_DEC_BITSTREAM_CACHE **bitstream_caches; + uint32_t num_decs; + int16_t *pcm_conversion_buffer; + LC3PLUS_CONFIG config; +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + int16_t cachingEnabled; +#endif +#ifdef LC3PLUS_DEC_COLLECT_STATS + IVAS_LC3PLUS_DEC_COLLECT_STATS stats; +#endif +} * IVAS_LC3PLUS_DEC_HANDLE; + +ivas_error IVAS_LC3PLUS_DEC_Open( + const LC3PLUS_CONFIG config, /* i : decoder configuration */ +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + const int16_t enableCaching, /* i : if set to 0, the decoder will NOT use cached frame to flush algorithmic delay after skipped frames */ +#endif + IVAS_LC3PLUS_DEC_HANDLE *handle /* o : decoder handle */ +); + +ivas_error IVAS_LC3PLUS_DEC_GetDelay( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + int32_t *delayInSamples /* o : algorithmic delay of encoding and decoding in number of samples per channel */ +); + +void IVAS_LC3PLUS_DEC_Close( + IVAS_LC3PLUS_DEC_HANDLE *handle /* i/o: pointer to decoder handle */ +); + +/*! 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 IVAS_LC3PLUS_DEC_SetSelectiveDecodingMatrix( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + int16_t *subframeChannelMatrix[MAX_PARAM_SPATIAL_SUBFRAMES] /* i : */ +); + +ivas_error IVAS_LC3PLUS_DEC_Decode( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + uint8_t *bitstream_in, /* i : pointer to input bitstream */ + const int32_t bitstream_in_size, /* i : size of bitstream_in */ + float **pcm_out /* o : decoded samples */ +); + +ivas_error IVAS_LC3PLUS_DEC_Conceal( + IVAS_LC3PLUS_DEC_HANDLE handle, /* i : decoder handle */ + float **pcm_out /* o : concealed samples */ +); + +ivas_error IVAS_LC3PLUS_DEC_AllocateSubframeDecodingMatrix( + int16_t ***subframeChannelMatrix, + const uint32_t num_decs ); + +void IVAS_LC3PLUS_DEC_FreeSubframeDecodingMatrix( int16_t **subframeChannelMatrix ); + +#endif /* IVAS_LC3PLUS_DEC_H */ diff --git a/lib_rend/ivas_lc3plus_enc.c b/lib_rend/ivas_lc3plus_enc.c new file mode 100644 index 0000000000000000000000000000000000000000..dd4268a1f16720aee4d3b853d207f3db6cfe4a47 --- /dev/null +++ b/lib_rend/ivas_lc3plus_enc.c @@ -0,0 +1,331 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "ivas_lc3plus_enc.h" +#include "ivas_lc3plus_common.h" +#include "lc3.h" +#include "ivas_error_utils.h" +#include "prot.h" +#include "wmc_auto.h" + + +/*-------------------------------------------------------------------* + * Function IVAS_LC3PLUS_ENC_Open() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_ENC_Open( + const LC3PLUS_CONFIG config, /* i : LC3plus encoder configuration */ + const uint32_t bitsPerSecond, /* i : bit rate */ + IVAS_LC3PLUS_ENC_HANDLE *handle /* o : encoder handle */ +) +{ + int32_t bitsPerSecondPerChannel; + int32_t encoder_size; + LC3PLUS_Error err; + int32_t lfeChans[1] = { 0 }; + int16_t i; + + if ( 0U == config.channels ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid number of channels\n" ); + } + bitsPerSecondPerChannel = bitsPerSecond / config.channels; + + encoder_size = lc3plus_enc_get_size( config.samplerate, 1 ); + if ( 0 == encoder_size ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc_get_size failed\n" ); + } + + if ( ( *handle = malloc( sizeof( struct IVAS_LC3PLUS_ENC_HANDLE ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + ( *handle )->pcm_conversion_buffer = NULL; + ( *handle )->num_encs = 0; + if ( ( ( *handle )->handles = malloc( config.channels * sizeof( IVAS_LC3PLUS_ENC_HANDLE ) ) ) == NULL ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus wrapper handle\n" ); + } + + for ( i = 0; i < config.channels; ++i ) + { + ( *handle )->handles[i] = NULL; + } + ( *handle )->num_encs = config.channels; + + for ( int32_t iCh = 0; iCh < config.channels; iCh++ ) + { + if ( ( ( *handle )->handles[iCh] = malloc( encoder_size ) ) == NULL ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder\n" ); + } + + err = lc3plus_enc_init( ( *handle )->handles[iCh], config.samplerate, 1, 0, lfeChans ); + if ( err != LC3PLUS_OK ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_init failed\n" ); + } + + err = lc3plus_enc_set_frame_dms( ( *handle )->handles[iCh], config.lc3plus_frame_duration_us / 100 ); + if ( err != LC3PLUS_OK ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_frame_dms failed\n" ); + } + + err = lc3plus_enc_set_bitrate( ( *handle )->handles[iCh], bitsPerSecondPerChannel ); + if ( err != LC3PLUS_OK ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc_set_bitrate failed\n" ); + } + } + + if ( config.ivas_frame_duration_us < config.lc3plus_frame_duration_us || config.ivas_frame_duration_us % config.lc3plus_frame_duration_us != 0 ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + 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" ); + } + + ( *handle )->config = config; + ( *handle )->pcm_conversion_buffer = malloc( sizeof( int16_t ) * config.samplerate * config.lc3plus_frame_duration_us / 1000000 ); + if ( NULL == ( *handle )->pcm_conversion_buffer ) + { + IVAS_LC3PLUS_ENC_Close( handle ); + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LC3plus encoder wrapper pcm_conversion_buffer\n" ); + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function IVAS_LC3PLUS_ENC_GetDelay() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_ENC_GetDelay( + IVAS_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *delayInSamples /* o : encoder delay in number of samples per channel */ +) +{ + int32_t tmpDelayInSamples; + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + if ( NULL == delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "delayInSamples is NULL\n" ); + } + + *delayInSamples = 0; + /* sanity check whether all encoders are actually configured identically */ + 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" ); + } + + tmpDelayInSamples = lc3plus_enc_get_delay( handle->handles[iEnc] ); + if ( 0 != *delayInSamples && tmpDelayInSamples != *delayInSamples ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "Not all mono LC3plus encoders are configured identically\n" ); + } + *delayInSamples = tmpDelayInSamples; + } + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function IVAS_LC3PLUS_ENC_GetOutputBitstreamSize() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_ENC_GetOutputBitstreamSize( + IVAS_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *bsSize /* o : size of each bitstream frame in bytes */ +) +{ + int32_t bitstreamSizeMultiplier; + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + if ( NULL == bsSize ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bsSize is NULL\n" ); + } + + *bsSize = 0; + 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" ); + } + *bsSize += lc3plus_enc_get_num_bytes( handle->handles[iEnc] ); + } + + if ( handle->config.ivas_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "ivas_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" ); + } + bitstreamSizeMultiplier = handle->config.ivas_frame_duration_us / handle->config.lc3plus_frame_duration_us; + + *bsSize *= bitstreamSizeMultiplier; + + return IVAS_ERR_OK; +} + + +/*-------------------------------------------------------------------* + * Function IVAS_LC3PLUS_ENC_Close() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_LC3PLUS_ENC_Close( + IVAS_LC3PLUS_ENC_HANDLE *handle /* i/o: pointer to LC3plus encoder handle */ +) +{ + if ( NULL == handle || NULL == *handle ) + { + return; + } + for ( uint32_t iEnc = 0; iEnc < ( *handle )->num_encs; iEnc++ ) + { + if ( NULL != ( *handle )->handles[iEnc] ) + { + lc3plus_free_encoder_structs( ( *handle )->handles[iEnc] ); + free( ( *handle )->handles[iEnc] ); + } + } + if ( NULL != ( *handle )->pcm_conversion_buffer ) + { + free( ( *handle )->pcm_conversion_buffer ); + } + + free( ( *handle )->handles ); + free( *handle ); + + *handle = NULL; + + return; +} + + +/*-------------------------------------------------------------------* + * Function IVAS_LC3PLUS_ENC_Encode() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_LC3PLUS_ENC_Encode( + IVAS_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + float **pcm_in, /* i : pointer input samples */ + void *bitstream_out /* o : pointer to bitstream frame */ +) +{ + uint32_t numSamplesPerLC3plusChannel; + uint32_t lc3framesPerIvasFrame; + int32_t ivasSampleIndex; + uint8_t *bitstream_out_iter = bitstream_out; + int32_t num_bytes = 0; + LC3PLUS_Error err; + + push_wmops( "IVAS_LC3PLUS_ENC_Encode" ); + + if ( NULL == handle ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "LC3PLUS_Enc_Wrap_Handle is NULL\n" ); + } + if ( NULL == pcm_in ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "pcm_in is NULL\n" ); + } + if ( NULL == bitstream_out ) + { + return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "bitstream_out is NULL\n" ); + } + + if ( handle->config.ivas_frame_duration_us % handle->config.lc3plus_frame_duration_us != 0 ) + { + return IVAS_ERROR( IVAS_ERR_NOT_IMPLEMENTED, "ivas_frame_duration_us must be equal or multiple of lc3plus_frame_duration_us \n" ); + } + lc3framesPerIvasFrame = handle->config.ivas_frame_duration_us / handle->config.lc3plus_frame_duration_us; + + numSamplesPerLC3plusChannel = handle->config.samplerate / ( 1000000 / handle->config.ivas_frame_duration_us ) / lc3framesPerIvasFrame; + for ( uint32_t iEnc = 0; iEnc < handle->num_encs; iEnc++ ) + { + for ( uint32_t iLc3plusFrame = 0; iLc3plusFrame < lc3framesPerIvasFrame; iLc3plusFrame++ ) + { + for ( uint32_t iSampleInt16 = 0; iSampleInt16 < numSamplesPerLC3plusChannel; iSampleInt16++ ) + { + ivasSampleIndex = iSampleInt16 + iLc3plusFrame * numSamplesPerLC3plusChannel; + handle->pcm_conversion_buffer[iSampleInt16] = (int16_t) max( INT16_MIN, min( pcm_in[iEnc][ivasSampleIndex], INT16_MAX ) ); + } + + num_bytes = 0; + push_wmops( "lc3plus_enc16" ); + err = lc3plus_enc16( handle->handles[iEnc], &handle->pcm_conversion_buffer, bitstream_out_iter, &num_bytes, NULL ); + pop_wmops(); + if ( err != LC3PLUS_OK ) + { + return IVAS_ERROR( IVAS_LC3PLUS_LC3plusErrToIvasErr( err ), "lc3plus_enc16 failed\n" ); + } + if ( 0 == num_bytes ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL, "lc3plus_enc16 did not produce output\n" ); + } + + bitstream_out_iter += num_bytes; + } + } + + pop_wmops(); + + return IVAS_ERR_OK; +} diff --git a/lib_rend/ivas_lc3plus_enc.h b/lib_rend/ivas_lc3plus_enc.h new file mode 100644 index 0000000000000000000000000000000000000000..d58ecf1b653deec0295e99e6dcd6550c9cd24970 --- /dev/null +++ b/lib_rend/ivas_lc3plus_enc.h @@ -0,0 +1,76 @@ +/****************************************************************************************************** + + (C) 2022-2023 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_LC3PLUS_ENC_H +#define IVAS_LC3PLUS_ENC_H + +#include +#include "lc3.h" +#include "ivas_error.h" +#include "ivas_lc3plus_common.h" + +/* encoder wrapper */ +typedef struct IVAS_LC3PLUS_ENC_HANDLE +{ + LC3PLUS_CONFIG config; + LC3PLUS_Enc **handles; + uint32_t num_encs; + int16_t *pcm_conversion_buffer; +} * IVAS_LC3PLUS_ENC_HANDLE; + +ivas_error IVAS_LC3PLUS_ENC_Open( + const LC3PLUS_CONFIG config, /* i : encoder configuration */ + const uint32_t bitsPerSecond, /* i : bit rate */ + IVAS_LC3PLUS_ENC_HANDLE *handle /* o : LC3plus encoder handle */ +); + +ivas_error IVAS_LC3PLUS_ENC_GetDelay( + IVAS_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *delayInSamples /* o : algorithmic delay of encoding and decoding in number of samples per channel */ +); + +ivas_error IVAS_LC3PLUS_ENC_GetOutputBitstreamSize( + IVAS_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + int32_t *bsSize /* o : size of each bitstream frame in bytes */ +); + +void IVAS_LC3PLUS_ENC_Close( + IVAS_LC3PLUS_ENC_HANDLE *handle /* i/o: pointer to LC3plus encoder handle */ +); + +ivas_error IVAS_LC3PLUS_ENC_Encode( + IVAS_LC3PLUS_ENC_HANDLE handle, /* i : LC3plus encoder handle */ + float **pcm_in, /* i : pointer input samples */ + void *bitstream_out /* o : pointer to bitstream frame */ +); + +#endif /* IVAS_LC3PLUS_ENC_H */ diff --git a/lib_rend/ivas_lcld_decoder.c b/lib_rend/ivas_lcld_decoder.c new file mode 100644 index 0000000000000000000000000000000000000000..27979fddd113b70f1f05c7138b361a21689813ed --- /dev/null +++ b/lib_rend/ivas_lcld_decoder.c @@ -0,0 +1,1714 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_lcld_prot.h" +#include "ivas_lcld_rom_tables.h" +#include "ivas_cldfb_codec_bitstream.h" +#include "prot.h" +#include +#include "ivas_prot_rend.h" +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------------------------* + * Local constants + *------------------------------------------------------------------------------------------*/ + +#define DECODER_ERROR_NONE ( 0 ) // todo: not really used + +#define HUFF_READ_SIZE ( 4 ) + + +/*------------------------------------------------------------------------------------------* + * Local structures + *------------------------------------------------------------------------------------------*/ + +#ifdef ROM_TO_RAM +typedef struct TableNode +{ + struct TableNode **ppoNextTable; + struct TableNode *poOrderedNext; + + int32_t *piCodeIndex; + int32_t *piDifference; + int32_t *piLength; +} TableNode; +typedef struct TableList +{ + TableNode *poOrderedTop; + TableNode *poOrderedBottom; + +} TableList; +#endif + +struct LCLD_DECODER +{ + int32_t iSampleRate; + int32_t iChannels; + int32_t iNumBlocks; + + int32_t iNumBands; + const int32_t *piBandwidths; + + int32_t iMSMode; + int32_t *piMSFlags; +#ifdef ROM_TO_RAM + TableList *ptable_list; + uint32_t ( *c_apauiHuffDecTable_RAM[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE]; + uint32_t num_decode_table[2 * ALLOC_TABLE_SIZE]; +#endif + int32_t piMSPredCoefs[MAX_BANDS]; + int32_t piLRPhaseDiffs[MAX_BANDS]; +#ifdef ENABLE_PMOD_ADJUST + int32_t **ppiHiSMRFlags; +#endif + int32_t iCommonGrouping; + int32_t *piNumGroups; + int32_t **ppiGroupLengths; + + int32_t ***pppiRMSEnvelope; + int32_t ***pppiSMR; + int32_t ***pppiExcitation; + int32_t ***pppiAlloc; + + int32_t iAllocOffset; + + int32_t ***pppiLCLDSignReal; + int32_t ***pppiLCLDSignImag; + int32_t ***pppiQLCLDReal; + int32_t ***pppiQLCLDImag; + + PredictionDecoder *psPredictionDecoder; + + + NoiseGen *psNoiseGen; + + int32_t iLastError; +}; + +#ifdef ROM_TO_RAM +static void CreateDecodeTable( LCLDDecoder *psLCLDDecoder, int32_t num, const uint16_t ( *ppuiEncTable )[2], int32_t iSize, int32_t iReadLength, uint32_t *iTables ); +static TableNode *CreateTableList( int32_t iReadLength ); +static void DeleteTableList( TableList *ptable_list, int32_t iTables ); +static TableNode *GetNextTable( int32_t iIndex, TableList *table_list, TableNode *poParent, int32_t iReadLength, uint32_t *iTablesCreated ); +static void AddcodeTableList( TableList *ptable_list, int32_t iLength, int32_t iCode, int32_t iCodeIndex, int32_t iReadLength, uint32_t *iTables ); +static void CompleteTables( LCLDDecoder *psLCLDDecoder, int32_t n, TableList *ptable_list, int32_t iReadLength, int32_t iTablesCreated ); + +static TableNode *CreateTableList( int32_t iReadLength ) +{ + int32_t n; + int32_t iMaxTables; + TableNode *ptable_top; + iMaxTables = 1 << iReadLength; + ptable_top = (TableNode *) malloc( sizeof( TableNode ) ); + ptable_top->ppoNextTable = + (TableNode **) malloc( iMaxTables * sizeof( TableNode * ) ); + ptable_top->piCodeIndex = (int32_t *) malloc( iMaxTables * sizeof( int32_t ) ); + ptable_top->piDifference = (int32_t *) malloc( iMaxTables * sizeof( int32_t ) ); + ptable_top->piLength = (int32_t *) malloc( iMaxTables * sizeof( int32_t ) ); + for ( n = 0; n < iMaxTables; n++ ) + { + ptable_top->ppoNextTable[n] = NULL; + ptable_top->piCodeIndex[n] = 0xffff; + ptable_top->piDifference[n] = 0; + ptable_top->piLength[n] = 0; + } + + return ptable_top; +} +static void DeleteTableList( TableList *ptable_list, int32_t iTables ) +{ + + TableNode *node; + node = ptable_list->poOrderedTop; + + while ( ( iTables ) ) + { + + TableNode *node1 = node; + node = node1->poOrderedNext; + if ( node1->piCodeIndex != NULL ) + { + free( node1->piCodeIndex ); + } + if ( node1->piLength != NULL ) + { + free( node1->piLength ); + } + if ( node1->piDifference != NULL ) + { + free( node1->piDifference ); + } + if ( node1->ppoNextTable != NULL ) + { + free( node1->ppoNextTable ); + } + if ( node1 != NULL ) + { + free( node1 ); + } + iTables--; + } + if ( ptable_list != NULL ) + { + free( ptable_list ); + } +} +static TableNode *GetNextTable( int32_t iIndex, TableList *table_list, TableNode *poParent, int32_t iReadLength, uint32_t *iTablesCreated ) +{ + TableNode *poNextNode; + + if ( poParent->ppoNextTable[iIndex] == NULL ) + { + poNextNode = CreateTableList( iReadLength ); + poParent->ppoNextTable[iIndex] = poNextNode; + poParent->piDifference[iIndex] = *iTablesCreated; /* this is a link to the next table rather than the difference */ + table_list->poOrderedBottom->poOrderedNext = poNextNode; + table_list->poOrderedBottom = poNextNode; + + ( *iTablesCreated )++; + } + else + { + poNextNode = poParent->ppoNextTable[iIndex]; + } + + return poNextNode; +} +static void CompleteTables( LCLDDecoder *psLCLDDecoder, int32_t n, TableList *ptable_list, int32_t iReadLength, int32_t iTablesCreated ) +{ + + int32_t iMaxTables; + int32_t j; + TableNode *poNode; + + iMaxTables = 1 << iReadLength; + psLCLDDecoder->c_apauiHuffDecTable_RAM[n] = + malloc( iTablesCreated * iMaxTables * sizeof( uint32_t * ) ); + + poNode = ptable_list->poOrderedTop; + for ( j = 0; j < iTablesCreated; j++ ) + { + int32_t k; + if ( poNode != NULL ) + { + for ( k = 0; k < iMaxTables; k++ ) + { + uint32_t uiCode; + uiCode = poNode->piDifference[k]; + uiCode <<= 16; + uiCode |= poNode->piCodeIndex[k]; + psLCLDDecoder->c_apauiHuffDecTable_RAM[n][j][k] = uiCode; + } + } + poNode = poNode->poOrderedNext; + } +} +static void AddcodeTableList( TableList *ptable_list, int32_t iLength, int32_t iCode, int32_t iCodeIndex, int32_t iReadLength, uint32_t *iTables ) +{ + int32_t iDifference; + int32_t iMask; + int32_t iCurrentLength; + int32_t iIndex; + int32_t iCodeLow; + int32_t iCodeHigh; + + TableNode *poNode; + poNode = ptable_list->poOrderedTop; + iMask = ( 1 << iReadLength ) - 1; + iCurrentLength = iLength; + while ( iCurrentLength > iReadLength ) + { + iDifference = iCurrentLength - iReadLength; + iIndex = iCode >> iDifference; + iIndex &= iMask; + poNode = GetNextTable( iIndex, ptable_list, poNode, iReadLength, iTables ); + iCurrentLength -= iReadLength; + } + + iMask = ( 1 << iCurrentLength ) - 1; + iDifference = iReadLength - iCurrentLength; + iCodeLow = ( iCode & iMask ) << iDifference; + iMask = ( 1 << iDifference ) - 1; + iCodeHigh = iCodeLow | iMask; + for ( iIndex = iCodeLow; iIndex <= iCodeHigh; iIndex++ ) + { + poNode->piCodeIndex[iIndex] = iCodeIndex; + poNode->piDifference[iIndex] = iDifference; + poNode->piLength[iIndex] = iLength; + } +} + +static void CreateDecodeTable( LCLDDecoder *psLCLDDecoder, int32_t num, const uint16_t ( *ppuiEncTable )[2], int32_t iSize, int32_t iReadLength, uint32_t *iTables ) +{ + int32_t n; + uint32_t **ppsort_enc_table; + TableList *ptable_list; + ptable_list = (TableList *) malloc( sizeof( TableList ) ); + + ppsort_enc_table = (uint32_t **) malloc( iSize * sizeof( int32_t * ) ); + for ( n = 0; n < iSize; n++ ) + { + + ppsort_enc_table[n] = (uint32_t *) malloc( 3 * sizeof( int32_t ) ); + ppsort_enc_table[n][0] = (uint32_t) ppuiEncTable[n][0]; + ppsort_enc_table[n][1] = (uint32_t) ppuiEncTable[n][1]; + ppsort_enc_table[n][2] = (uint32_t) n; + } + + for ( n = 0; n < iSize; n++ ) + { + uint32_t iMin; + int32_t iMinIndex; + int32_t k; + + iMin = ppsort_enc_table[n][0]; + iMinIndex = n; + for ( k = n; k < iSize; k++ ) + { + if ( ppsort_enc_table[k][0] < iMin ) + { + iMin = ppsort_enc_table[k][0]; + iMinIndex = k; + } + } + + if ( iMinIndex != n ) + { + uint32_t uiLength; + uint32_t uiCode; + uint32_t uiCodeIndex; + + uiLength = ppsort_enc_table[n][0]; + uiCode = ppsort_enc_table[n][1]; + uiCodeIndex = ppsort_enc_table[n][2]; + + ppsort_enc_table[n][0] = ppsort_enc_table[iMinIndex][0]; + ppsort_enc_table[n][1] = ppsort_enc_table[iMinIndex][1]; + ppsort_enc_table[n][2] = ppsort_enc_table[iMinIndex][2]; + + ppsort_enc_table[iMinIndex][0] = uiLength; + ppsort_enc_table[iMinIndex][1] = uiCode; + ppsort_enc_table[iMinIndex][2] = uiCodeIndex; + } + } + ptable_list->poOrderedTop = CreateTableList( iReadLength ); + ptable_list->poOrderedBottom = ptable_list->poOrderedTop; + for ( n = 0; n < iSize; n++ ) + { + int32_t iLength; + int32_t iCode; + int32_t iCodeIndex; + + iLength = ppsort_enc_table[n][0]; + iCode = ppsort_enc_table[n][1]; + iCodeIndex = ppsort_enc_table[n][2]; + AddcodeTableList( ptable_list, iLength, iCode, iCodeIndex, iReadLength, + iTables ); + } + + CompleteTables( psLCLDDecoder, num, ptable_list, iReadLength, *iTables ); + DeleteTableList( ptable_list, *iTables ); + for ( n = 0; n < iSize; n++ ) + { + free( ppsort_enc_table[n] ); + } + free( ppsort_enc_table ); +} +#endif + + +/*------------------------------------------------------------------------------------------* + * Function CreateLCLDDecoder() + * + * + *------------------------------------------------------------------------------------------*/ + +ivas_error CreateLCLDDecoder( + LCLDDecoder **psLCLDDecoder_out, + const int32_t iSampleRate, + const int32_t iChannels ) +{ + int32_t n; +#ifdef ROM_TO_RAM + int32_t read_length; +#endif + ivas_error error; + LCLDDecoder *psLCLDDecoder = NULL; + + assert( iSampleRate == 48000 ); // Fix + + if ( ( psLCLDDecoder = (LCLDDecoder *) malloc( sizeof( LCLDDecoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + psLCLDDecoder->iSampleRate = iSampleRate; + psLCLDDecoder->iChannels = iChannels; + psLCLDDecoder->iNumBlocks = LCLD_BLOCKS_PER_FRAME; + psLCLDDecoder->iAllocOffset = 0; + + psLCLDDecoder->iNumBands = MAX_BANDS_48; // Fix + psLCLDDecoder->piBandwidths = c_aiBandwidths48; // Fix + + psLCLDDecoder->iMSMode = 0; + if ( ( psLCLDDecoder->piMSFlags = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + for ( n = 0; n < MAX_BANDS; n++ ) + { + psLCLDDecoder->piLRPhaseDiffs[n] = 0; + psLCLDDecoder->piMSPredCoefs[n] = 0; + } +#ifdef ENABLE_PMOD_ADJUST + psLCLDDecoder->ppiHiSMRFlags = + (int32_t **) malloc( psLCLDDecoder->iChannels * sizeof( int32_t * ) ); +#endif + + psLCLDDecoder->iCommonGrouping = 1; /* Common grouping always on only impacts stereo */ + if ( ( psLCLDDecoder->piNumGroups = (int32_t *) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->ppiGroupLengths = (int32_t **) malloc( psLCLDDecoder->iChannels * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiRMSEnvelope = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiSMR = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiExcitation = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiAlloc = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDDecoder->pppiLCLDSignReal = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiLCLDSignImag = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiQLCLDReal = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiQLCLDImag = (int32_t ***) malloc( psLCLDDecoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + for ( n = 0; n < iChannels; n++ ) + { + int16_t k; +#ifdef ENABLE_PMOD_ADJUST + psLCLDDecoder->ppiHiSMRFlags[n] = + (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ); + ; +#endif + if ( ( psLCLDDecoder->ppiGroupLengths[n] = (int32_t *) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiRMSEnvelope[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiSMR[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiExcitation[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiAlloc[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDDecoder->pppiLCLDSignReal[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiLCLDSignImag[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiQLCLDReal[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiQLCLDImag[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + if ( ( psLCLDDecoder->pppiRMSEnvelope[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiSMR[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiExcitation[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiAlloc[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDDecoder->pppiLCLDSignReal[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiLCLDSignImag[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiQLCLDReal[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( psLCLDDecoder->pppiQLCLDImag[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + } + +#ifdef ROM_TO_RAM + read_length = READ_LENGTH; + for ( n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) + { + psLCLDDecoder->num_decode_table[n] = 1; + if ( c_apauiHuffEncTabels[n] != NULL ) + { + + CreateDecodeTable( psLCLDDecoder, n, c_apauiHuffEncTabels[n], num_row_aauiLCLDHuff[n], read_length, &psLCLDDecoder->num_decode_table[n] ); + } + else + { + psLCLDDecoder->c_apauiHuffDecTable_RAM[n] = NULL; + } + } +#endif + if ( ( error = CreatePredictionDecoder( &psLCLDDecoder->psPredictionDecoder, iChannels, psLCLDDecoder->iNumBlocks ) ) != IVAS_ERR_OK ) + { + return error; + } + psLCLDDecoder->psNoiseGen = NULL; // CreateNoiseGen(); // No noise fill for now + + psLCLDDecoder->iLastError = DECODER_ERROR_NONE; + + *psLCLDDecoder_out = psLCLDDecoder; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------------------------* + * Function CreateLCLDDecoder() + * + * + *------------------------------------------------------------------------------------------*/ + +void DeleteLCLDDecoder( LCLDDecoder *psLCLDDecoder ) +{ + int32_t k, n; + + if ( psLCLDDecoder != NULL ) + { + if ( psLCLDDecoder->piMSFlags != NULL ) + { + free( psLCLDDecoder->piMSFlags ); + } + + if ( psLCLDDecoder->piNumGroups != NULL ) + { + free( psLCLDDecoder->piNumGroups ); + } + + if ( psLCLDDecoder->ppiGroupLengths != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + free( psLCLDDecoder->ppiGroupLengths[n] ); + } + free( psLCLDDecoder->ppiGroupLengths ); + } + + if ( psLCLDDecoder->pppiRMSEnvelope != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiRMSEnvelope[n][k] ); + } + free( psLCLDDecoder->pppiRMSEnvelope[n] ); + } + free( psLCLDDecoder->pppiRMSEnvelope ); + } + + if ( psLCLDDecoder->pppiSMR != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiSMR[n][k] ); + } + free( psLCLDDecoder->pppiSMR[n] ); + } + free( psLCLDDecoder->pppiSMR ); + } + + if ( psLCLDDecoder->pppiExcitation != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiExcitation[n][k] ); + } + free( psLCLDDecoder->pppiExcitation[n] ); + } + free( psLCLDDecoder->pppiExcitation ); + } + +#ifdef ENABLE_PMOD_ADJUST + if ( psLCLDDecoder->ppiHiSMRFlags != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + free( psLCLDDecoder->ppiHiSMRFlags[n] ); + } + free( psLCLDDecoder->ppiHiSMRFlags ); + } +#endif + + if ( psLCLDDecoder->pppiAlloc != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiAlloc[n][k] ); + } + free( psLCLDDecoder->pppiAlloc[n] ); + } + free( psLCLDDecoder->pppiAlloc ); + } + + if ( psLCLDDecoder->pppiLCLDSignReal != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiLCLDSignReal[n][k] ); + } + free( psLCLDDecoder->pppiLCLDSignReal[n] ); + } + free( psLCLDDecoder->pppiLCLDSignReal ); + } + + if ( psLCLDDecoder->pppiLCLDSignImag != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiLCLDSignImag[n][k] ); + } + free( psLCLDDecoder->pppiLCLDSignImag[n] ); + } + free( psLCLDDecoder->pppiLCLDSignImag ); + } + + if ( psLCLDDecoder->pppiQLCLDReal != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiQLCLDReal[n][k] ); + } + free( psLCLDDecoder->pppiQLCLDReal[n] ); + } + free( psLCLDDecoder->pppiQLCLDReal ); + } + + if ( psLCLDDecoder->pppiQLCLDImag != NULL ) + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDDecoder->pppiQLCLDImag[n][k] ); + } + free( psLCLDDecoder->pppiQLCLDImag[n] ); + } + free( psLCLDDecoder->pppiQLCLDImag ); + } + +#ifdef ROM_TO_RAM + for ( uint32_t n = 0; n < ALLOC_TABLE_SIZE * 2; n++ ) + { + if ( psLCLDDecoder->num_decode_table[n] > 1 ) + { + + if ( psLCLDDecoder->c_apauiHuffDecTable_RAM[n] != NULL ) + { + free( psLCLDDecoder->c_apauiHuffDecTable_RAM[n] ); + } + } + } +#endif + + if ( psLCLDDecoder->psPredictionDecoder != NULL ) + { + DeletePredictionDecoder( psLCLDDecoder->psPredictionDecoder ); + psLCLDDecoder->psPredictionDecoder = NULL; + } + + if ( psLCLDDecoder->psNoiseGen != NULL ) + { + DeleteNoiseGen( psLCLDDecoder->psNoiseGen ); + } + + free( psLCLDDecoder ); + } +} + + +/*------------------------------------------------------------------------------------------* + * Function LCLDDecoderGetError() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t LCLDDecoderGetError( LCLDDecoder *psLCLDDecoder ) +{ + return psLCLDDecoder->iLastError; +} + + +/*------------------------------------------------------------------------------------------* + * Local function declarations + * + * + *------------------------------------------------------------------------------------------*/ + +static void ApplyRMSEnvelope( const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iNumGroups, const int32_t *piGroupLengths, int32_t **ppiRMSEnvelope, float **ppfReal, float **ppfImag ); + +static void ReplaceSign( const int32_t iNumBlocks, const int32_t iNumLCLDBands, int32_t **ppiSignReal, int32_t **ppiSignImag, float **ppfReal, float **ppfImag ); + +static void InvQuantizeSpectrum( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, int32_t **ppiAlloc, int32_t **ppiQReal, int32_t **ppiQImag, float **ppfReal, float **ppfImag, NoiseGen *psNoiseGen ); + +static void InvMSCoding( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iMSMode, const int32_t *piMSFlags, const int32_t *piLRPhaseDiffs, const int32_t *piMSPredCoefs, float ***pppfReal, float ***pppfImag ); + +static int32_t ReadHeaderInformation( int32_t *piNumBands, ivas_split_rend_bits_t *pBits ); + +static int32_t ReadMSInformation( const int32_t iNumBands, int32_t *piMSMode, int32_t *piMSFlags, int32_t *piLRPhaseDiffs, int32_t *piMSPredCoefs, ivas_split_rend_bits_t *pBits ); + +static int32_t ReadGroupInformation( const int32_t iChannels, const int32_t iNumBlocks, int32_t *piCommonGrouping, int32_t *piNumGroups, int32_t **ppiGroupLengths, ivas_split_rend_bits_t *pBits ); + +static int32_t ReadHuff( const uint32_t ( *pauiHuffDecTable )[HUFF_DEC_TABLE_SIZE], int32_t *piSymbol, ivas_split_rend_bits_t *pBits ); + +static int32_t ReadRMSEnvelope( const int32_t iChannels, const int32_t *piNumGroups, const int32_t iNumBands, int32_t ***pppiRMSEnvelope, ivas_split_rend_bits_t *pBits ); + +static int32_t ReadAllocInformation( int32_t *piAllocOffset, ivas_split_rend_bits_t *pBits ); + +#ifdef ROM_TO_RAM +static int32_t +ReadLCLDData( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t *piPredEnable, int32_t **ppiAlloc, int32_t **ppiSignReal, int32_t **ppiSignImag, int32_t **ppiQReal, int32_t **ppiQImag, ivas_split_rend_bits_t *pBits, uint32_t ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE] ); +#else +static int32_t +ReadLCLDData( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t *piPredEnable, int32_t **ppiAlloc, int32_t **ppiSignReal, int32_t **ppiSignImag, int32_t **ppiQReal, int32_t **ppiQImag, ivas_split_rend_bits_t *pBits ); +#endif + +static void ComputeAllocation( const int32_t iChannels, const int32_t *piNumGroups, const int32_t iNumBands, int32_t ***pppiSMR, const int32_t iAllocOffset, int32_t ***pppiAlloc ); + + +/*------------------------------------------------------------------------------------------* + * Function DecodeLCLDFrame() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t DecodeLCLDFrame( + LCLDDecoder *psLCLDDecoder, + ivas_split_rend_bits_t *pBits, + float ***pppfLCLDReal, + float ***pppfLCLDImag ) +{ + int32_t k, n; + + ReadHeaderInformation( &psLCLDDecoder->iNumBands, pBits ); + + if ( psLCLDDecoder->iChannels == 2 ) + { + ReadMSInformation( psLCLDDecoder->iNumBands, &psLCLDDecoder->iMSMode, psLCLDDecoder->piMSFlags, psLCLDDecoder->piLRPhaseDiffs, psLCLDDecoder->piMSPredCoefs, pBits ); + } + + ReadPredictors( psLCLDDecoder->psPredictionDecoder, pBits ); + + ReadGroupInformation( psLCLDDecoder->iChannels, psLCLDDecoder->iNumBlocks, &psLCLDDecoder->iCommonGrouping, psLCLDDecoder->piNumGroups, psLCLDDecoder->ppiGroupLengths, pBits ); + + ReadRMSEnvelope( psLCLDDecoder->iChannels, (const int32_t *) psLCLDDecoder->piNumGroups, psLCLDDecoder->iNumBands, psLCLDDecoder->pppiRMSEnvelope, pBits ); + +#ifdef ENABLE_PMOD_ADJUST + ReadPmodInformation( psLCLDDecoder->ppiHiSMRFlags, psLCLDDecoder->psBSRead, psLCLDDecoder->iChannels, psLCLDDecoder->iNumBands ); +#endif + + ReadAllocInformation( &psLCLDDecoder->iAllocOffset, pBits ); + + if ( psLCLDDecoder->iChannels == 2 && psLCLDDecoder->iCommonGrouping == 1 ) + { /* MS Mode? */ + for ( k = 0; k < psLCLDDecoder->piNumGroups[0]; k++ ) + { + PerceptualModelStereo( psLCLDDecoder->iNumBands, psLCLDDecoder->piMSFlags, + psLCLDDecoder->pppiRMSEnvelope[0][k], + psLCLDDecoder->pppiRMSEnvelope[1][k], + psLCLDDecoder->pppiExcitation[0][k], + psLCLDDecoder->pppiExcitation[1][k], + psLCLDDecoder->pppiSMR[0][k], + psLCLDDecoder->pppiSMR[1][k] ); + } + } + else + { + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { // This will be updated to support multiple sample rates + for ( k = 0; k < psLCLDDecoder->piNumGroups[n]; k++ ) + { + PerceptualModel( psLCLDDecoder->iNumBands, psLCLDDecoder->pppiRMSEnvelope[n][k], psLCLDDecoder->pppiExcitation[n][k], psLCLDDecoder->pppiSMR[n][k] ); + } + } + } + + ComputeAllocation( psLCLDDecoder->iChannels, (const int32_t *) psLCLDDecoder->piNumGroups, psLCLDDecoder->iNumBands, psLCLDDecoder->pppiSMR, psLCLDDecoder->iAllocOffset, psLCLDDecoder->pppiAlloc ); + + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + ReadLCLDData( + psLCLDDecoder->piNumGroups[n], + (const int32_t *) psLCLDDecoder->ppiGroupLengths[n], + psLCLDDecoder->iNumBands, psLCLDDecoder->piBandwidths, + (const int32_t *) + psLCLDDecoder->psPredictionDecoder->ppiPredBandEnable[n], + psLCLDDecoder->pppiAlloc[n], + psLCLDDecoder->pppiLCLDSignReal[n], psLCLDDecoder->pppiLCLDSignImag[n], + psLCLDDecoder->pppiQLCLDReal[n], psLCLDDecoder->pppiQLCLDImag[n], + pBits +#ifdef ROM_TO_RAM + , + psLCLDDecoder->c_apauiHuffDecTable_RAM +#endif + ); + } + + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + InvQuantizeSpectrum( psLCLDDecoder->piNumGroups[n], + (const int32_t *) psLCLDDecoder->ppiGroupLengths[n], + psLCLDDecoder->iNumBands, psLCLDDecoder->piBandwidths, + psLCLDDecoder->pppiAlloc[n], + psLCLDDecoder->pppiQLCLDReal[n], + psLCLDDecoder->pppiQLCLDImag[n], + pppfLCLDReal[n], pppfLCLDImag[n], + psLCLDDecoder->psNoiseGen ); + + ReplaceSign( psLCLDDecoder->iNumBlocks, LCLD_BANDS, + psLCLDDecoder->pppiLCLDSignReal[n], + psLCLDDecoder->pppiLCLDSignImag[n], + pppfLCLDReal[n], pppfLCLDImag[n] ); + } + + ApplyInversePredictros( psLCLDDecoder->psPredictionDecoder, pppfLCLDReal, pppfLCLDImag ); + + for ( n = 0; n < psLCLDDecoder->iChannels; n++ ) + { + ApplyRMSEnvelope( psLCLDDecoder->iNumBands, psLCLDDecoder->piBandwidths, + psLCLDDecoder->piNumGroups[n], + (const int32_t *) psLCLDDecoder->ppiGroupLengths[n], + psLCLDDecoder->pppiRMSEnvelope[n], + pppfLCLDReal[n], pppfLCLDImag[n] ); + } + + if ( psLCLDDecoder->iChannels == 2 && psLCLDDecoder->iMSMode > 0 ) + { + InvMSCoding( psLCLDDecoder->iNumBlocks, psLCLDDecoder->iNumBands, + psLCLDDecoder->piBandwidths, psLCLDDecoder->iMSMode, + (const int32_t *) psLCLDDecoder->piMSFlags, + (const int32_t *) psLCLDDecoder->piLRPhaseDiffs, + (const int32_t *) psLCLDDecoder->piMSPredCoefs, + pppfLCLDReal, pppfLCLDImag ); + } + + return 0; +} + + +/*------------------------------------------------------------------------------------------* + * Local functions + * + * + *------------------------------------------------------------------------------------------*/ + +static void ApplyRMSEnvelope( + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t iNumGroups, + const int32_t *piGroupLengths, + int32_t **ppiRMSEnvelope, + float **ppfReal, + float **ppfImag ) +{ + int32_t b, k, n; + int32_t iBlockOffset, iFBOffset; + + iBlockOffset = 0; + for ( n = 0; n < iNumGroups; n++ ) + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t m; + int32_t iRMSEnv; + float fGain; + + iRMSEnv = ppiRMSEnvelope[n][b]; + fGain = + c_afRMSEnvReconstructTable[ENV_RECONSTRUCT_TABLE_CENTER + iRMSEnv]; + for ( m = 0; m < piBandwidths[b]; m++ ) + { + ppfReal[iBlockOffset][iFBOffset] *= fGain; + ppfImag[iBlockOffset][iFBOffset] *= fGain; + iFBOffset++; + } + } + iBlockOffset++; + } + } + + return; +} + + +static void ReplaceSign( + const int32_t iNumBlocks, + const int32_t iNumLCLDBands, + int32_t **ppiSignReal, + int32_t **ppiSignImag, + float **ppfReal, + float **ppfImag ) +{ + int32_t b, n; + + for ( n = 0; n < iNumBlocks; n++ ) + { + for ( b = 0; b < iNumLCLDBands; b++ ) + { + if ( ppiSignReal[n][b] == 1 ) + { + ppfReal[n][b] = -ppfReal[n][b]; + } + + if ( ppiSignImag[n][b] == 1 ) + { + ppfImag[n][b] = -ppfImag[n][b]; + } + } + } + + return; +} + + +static void InvQuantizeSpectrum( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + int32_t **ppiAlloc, + int32_t **ppiQReal, + int32_t **ppiQImag, + float **ppfReal, + float **ppfImag, + NoiseGen *psNoiseGen /* Pass in NULL to switch off noise gen */ +) +{ + int32_t b, k, n; + int32_t iBlockOffest, iFBOffset; + + iBlockOffest = 0; + for ( n = 0; n < iNumGroups; n++ ) + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t m; + int32_t iAlloc; + float fInvSCFGain; + + iAlloc = ppiAlloc[n][b]; + fInvSCFGain = c_afInvScaleFactor[iAlloc]; + + if ( iAlloc > 0 ) + { + for ( m = 0; m < piBandwidths[b]; m++ ) + { + int32_t iQuantValue; + + iQuantValue = ppiQReal[iBlockOffest][iFBOffset]; + ppfReal[iBlockOffest][iFBOffset] = (float) iQuantValue * fInvSCFGain; + + iQuantValue = ppiQImag[iBlockOffest][iFBOffset]; + ppfImag[iBlockOffest][iFBOffset] = (float) iQuantValue * fInvSCFGain; + + iFBOffset++; + } + } + else if ( psNoiseGen != NULL ) + { + for ( m = 0; m < piBandwidths[b]; m++ ) + { + ppfReal[iBlockOffest][iFBOffset] = 0.7f * GetNoise( psNoiseGen ); + ppfImag[iBlockOffest][iFBOffset] = 0.7f * GetNoise( psNoiseGen ); + + iFBOffset++; + } + } + else + { + iFBOffset += piBandwidths[b]; + } + } + + iBlockOffest++; + } + } + + return; +} + + +static void InvMSCoding( + const int32_t iNumBlocks, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t iMSMode, + const int32_t *piMSFlags, + const int32_t *piLRPhaseDiffs, + const int32_t *piMSPredCoefs, + float ***pppfReal, + float ***pppfImag ) +{ + if ( iMSMode > 0 ) + { + int32_t b; + int32_t iFBOffset; + int32_t bms = 0; +#if defined SIMPLE_PHASE + void( *pFuncPhaseRotateOptions[4] ) = { &rot_zero, &rot_m_pi_2, &rot_pm_pi, &rot_p_pi_2 }; +#endif + + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + if ( piMSFlags[b] == 1 ) + { + int32_t n; +#if defined SIMPLE_PHASE + void ( *pFuncPhaseRotate )( float *, float * ) = + pFuncPhaseRotateOptions[piLRPhaseDiffs[bms]]; +#endif + for ( n = 0; n < piBandwidths[b]; n++ ) + { + int32_t k; + for ( k = 0; k < iNumBlocks; k++ ) + { + float fLeftReal; + float fLeftImag; + float fRightReal; + float fRightImag; + + if ( iMSMode == 3 ) + { + float fPred; + fPred = dequantPred( piMSPredCoefs[bms] ); + pppfReal[1][k][iFBOffset] += fPred * pppfReal[0][k][iFBOffset]; + pppfImag[1][k][iFBOffset] += fPred * pppfImag[0][k][iFBOffset]; + } + + fLeftReal = ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] ); + fLeftImag = ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] ); + fRightReal = ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] ); + fRightImag = ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] ); + + if ( iMSMode == 3 ) + { +#ifdef SIMPLE_PHASE + ( *pFuncPhaseRotate )( &fRightReal, &fRightImag ); +#else + int32_t phaseIdx; + phaseIdx = piLRPhaseDiffs[bms] - PHASE_MIN_VAL; + cplxmult( &fRightReal, &fRightImag, c_afRotRealImag[phaseIdx][0], -c_afRotRealImag[phaseIdx][1] ); +#endif + } + + pppfReal[0][k][iFBOffset] = fLeftReal; + pppfReal[1][k][iFBOffset] = fRightReal; + pppfImag[0][k][iFBOffset] = fLeftImag; + pppfImag[1][k][iFBOffset] = fRightImag; + } + iFBOffset++; + } + + bms++; + } + else + { + iFBOffset += piBandwidths[b]; + } + } + } + + return; +} + + +/* Currently only the number of bands in frame */ +static int32_t ReadHeaderInformation( + int32_t *piNumBands, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsRead; + + iBitsRead = 0; + *piNumBands = ivas_split_rend_bitstream_read_int32( pBits, 5 ); + iBitsRead += 5; + + return iBitsRead; +} + + +static int32_t ReadMSInformation( + const int32_t iNumBands, + int32_t *piMSMode, + int32_t *piMSFlags, + int32_t *piLRPhaseDiffs, + int32_t *piMSPredCoefs, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsRead; + + iBitsRead = 0; + *piMSMode = ivas_split_rend_bitstream_read_int32( pBits, 2 ); + iBitsRead += 2; + + if ( *piMSMode == 0 ) + { + int32_t n; + for ( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = 0; + } + } + else if ( *piMSMode == 1 ) + { + int32_t n; + for ( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = 1; + } + } + else if ( *piMSMode == 2 ) + { + int32_t n; + for ( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + } + } + else if ( *piMSMode == 3 ) + { + int32_t n; + int32_t iMSPredAll; + int32_t iNumMSPredBands = 0; + int32_t anyNonZero; + iMSPredAll = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + if ( iMSPredAll ) + { + iNumMSPredBands = iNumBands; + for ( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = 1; + } + } + else + { + for ( n = 0; n < iNumBands; n++ ) + { + piMSFlags[n] = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + if ( piMSFlags[n] ) + { + iNumMSPredBands++; + } + } + } + anyNonZero = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + if ( anyNonZero ) + { +#ifdef SIMPLE_PHASE + for ( n = 0; n < iNumMSPredBands; n++ ) + { + piLRPhaseDiffs[n] = BSGetBits( psBSRead, SIMPLE_PHASE_BITS ); + iBitsRead += SIMPLE_PHASE_BITS; + } +#else + piLRPhaseDiffs[0] = ivas_split_rend_bitstream_read_int32( pBits, PHASE_BAND0_BITS ); + piLRPhaseDiffs[0] += PHASE_MIN_VAL; + iBitsRead += PHASE_BAND0_BITS; + for ( n = 1; n < iNumMSPredBands; n++ ) + { + int32_t tabIdx; + iBitsRead += ReadHuff( c_aaiRMSEnvHuffDec, &tabIdx, pBits ); + piLRPhaseDiffs[n] = tabIdx + ENV_DELTA_MIN; + } + DecodePhase( piLRPhaseDiffs, iNumMSPredBands, PHASE_DIFF_DIM ); +#endif + } + else + { + for ( n = 0; n < iNumMSPredBands; n++ ) + { + piLRPhaseDiffs[n] = 0; + } + } + anyNonZero = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + if ( anyNonZero ) + { + piMSPredCoefs[0] = ivas_split_rend_bitstream_read_int32( pBits, PRED_BAND0_BITS ); + piMSPredCoefs[0] += PRED_MIN_VAL; + iBitsRead += PRED_BAND0_BITS; + for ( n = 1; n < iNumMSPredBands; n++ ) + { + int32_t tabIdx; + iBitsRead += ReadHuff( c_aaiRMSEnvHuffDec, &tabIdx, pBits ); + piMSPredCoefs[n] = tabIdx + ENV_DELTA_MIN; + } + DecodePredCoef( piMSPredCoefs, iNumMSPredBands ); + } + else + { + for ( n = 0; n < iNumMSPredBands; n++ ) + { + piMSPredCoefs[n] = 0; + } + } +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "ms_mode_dec.txt", "wt" ); + } + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumMSPredBands, iNumBands, fid, piMSFlags ); + } +#endif + } + else + { + printf( "ERROR UNSUPPORTED MS MODE\n" ); + } + + return iBitsRead; +} + + +static int32_t ReadGroupInformation( + const int32_t iChannels, + const int32_t iNumBlocks, + int32_t *piCommonGrouping, + int32_t *piNumGroups, + int32_t **ppiGroupLengths, + ivas_split_rend_bits_t *pBits ) +{ + int32_t c, k, iBitsRead; + + iBitsRead = 0; + if ( iChannels == 2 ) + { + *piCommonGrouping = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + + if ( *piCommonGrouping == 1 ) + { + piNumGroups[0] = 0; + ppiGroupLengths[0][piNumGroups[0]] = 1; + for ( k = 0; k < ( iNumBlocks - 1 ); k++ ) + { + int32_t iGroupStart; + + iGroupStart = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + + if ( iGroupStart == 1 ) + { + piNumGroups[0]++; + ppiGroupLengths[0][piNumGroups[0]] = 1; + } + else + { + ppiGroupLengths[0][piNumGroups[0]]++; + } + } + piNumGroups[0]++; + + piNumGroups[1] = piNumGroups[0]; + for ( k = 0; k < piNumGroups[1]; k++ ) + { + ppiGroupLengths[1][k] = ppiGroupLengths[0][k]; + } + } + else + { + for ( c = 0; c < iChannels; c++ ) + { + piNumGroups[c] = 0; + ppiGroupLengths[c][piNumGroups[c]] = 1; + for ( k = 0; k < ( iNumBlocks - 1 ); k++ ) + { + int32_t iGroupStart; + + iGroupStart = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + + if ( iGroupStart == 1 ) + { + piNumGroups[c]++; + ppiGroupLengths[c][piNumGroups[c]] = 1; + } + else + { + ppiGroupLengths[c][piNumGroups[c]]++; + } + } + piNumGroups[c]++; + } + } + } + else + { + for ( c = 0; c < iChannels; c++ ) + { + piNumGroups[c] = 0; + ppiGroupLengths[c][piNumGroups[c]] = 1; + for ( k = 0; k < ( iNumBlocks - 1 ); k++ ) + { + int32_t iGroupStart; + + iGroupStart = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + + if ( iGroupStart == 1 ) + { + piNumGroups[c]++; + ppiGroupLengths[c][piNumGroups[c]] = 1; + } + else + { + ppiGroupLengths[c][piNumGroups[c]]++; + } + } + piNumGroups[c]++; + } + } + + return iBitsRead; +} + + +static int32_t ReadHuff( + const uint32_t ( *pauiHuffDecTable )[HUFF_DEC_TABLE_SIZE], + int32_t *piSymbol, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsRead; + int32_t iSymbol; + int32_t iIndex; + int32_t iVal; + + iVal = 0; + iIndex = 0; + iSymbol = 0xFFFF; + iBitsRead = 0; + while ( iSymbol == 0xFFFF ) + { + iIndex = ivas_split_rend_bitstream_read_int32( pBits, HUFF_READ_SIZE ); + iBitsRead += HUFF_READ_SIZE; + + iIndex = pauiHuffDecTable[iVal][iIndex]; + iSymbol = ( iIndex & 0xFFFF ); + + iVal = ( iIndex >> 16 ); + } + + if ( iVal ) + { + BSForceBack( pBits, iIndex, iVal ); + iBitsRead -= iVal; + } + + *piSymbol = iSymbol; + + return iBitsRead; +} + + +static int32_t ReadRMSEnvelope( + const int32_t iChannels, + const int32_t *piNumGroups, + const int32_t iNumBands, + int32_t ***pppiRMSEnvelope, + ivas_split_rend_bits_t *pBits ) +{ + int32_t b, k, n; + int32_t iBitsRead, iLastRMSVal; + + iBitsRead = 0; + for ( n = 0; n < iChannels; n++ ) + { + for ( k = 0; k < piNumGroups[n]; k++ ) + { + iLastRMSVal = ivas_split_rend_bitstream_read_int32( pBits, ENV0_BITS ); + iBitsRead += ENV0_BITS; + + iLastRMSVal += ENV_MIN; + pppiRMSEnvelope[n][k][0] = iLastRMSVal; + for ( b = 1; b < iNumBands; b++ ) + { + int32_t iDelta; + + iBitsRead += ReadHuff( c_aaiRMSEnvHuffDec, &iDelta, pBits ); + + iDelta += ENV_DELTA_MIN; + iLastRMSVal += iDelta; + pppiRMSEnvelope[n][k][b] = iLastRMSVal; + } + } + } + + return iBitsRead; +} + + +#ifdef ENABLE_PMOD_ADJUST +static int32_t ReadPmodInformation( int32_t **ppiHiSMRFlags, Bitstream *psBSRead, int32_t iChannels, int32_t iNumBands ) +{ + int32_t iBitsRead; + int32_t c; + iBitsRead = 0; + for ( c = 0; c < iChannels; c++ ) + { + int32_t b; + int32_t iFlags = BSGetBits( psBSRead, 1 ); + iBitsRead += 1; + if ( iFlags ) + { + for ( b = 0; b < iNumBands; b++ ) + { + ppiHiSMRFlags[c][b] = BSGetBits( psBSRead, 1 ); + iBitsRead += 1; + } + } + else + { + for ( b = 0; b < iNumBands; b++ ) + { + ppiHiSMRFlags[c][b] = 0; + } + } + } +#ifdef WRITE_HISMR_FLAGS + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "hismr_dec.txt", "wt" ); + } + for ( c = 0; c < iChannels; c++ ) + { + int32_t b; + for ( b = 0; b < iNumBands; b++ ) + { + if ( c == iChannels - 1 && b == iNumBands - 1 ) + { + fprintf( fid, "%d\n", ppiHiSMRFlags[c][b] ); + } + else + { + fprintf( fid, "%d ", ppiHiSMRFlags[c][b] ); + } + } + } + } +#endif + return iBitsRead; +} +#endif + + +static int32_t ReadAllocInformation( + int32_t *piAllocOffset, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsRead; + + iBitsRead = 0; + *piAllocOffset = ivas_split_rend_bitstream_read_int32( pBits, ALLOC_OFFSET_BITS ); + *piAllocOffset += MIN_ALLOC_OFFSET; + iBitsRead += ALLOC_OFFSET_BITS; + + return iBitsRead; +} +#ifdef ROM_TO_RAM +static int32_t ReadLCLDData( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t *piPredEnable, + int32_t **ppiAlloc, + int32_t **ppiSignReal, + int32_t **ppiSignImag, + int32_t **ppiQReal, + int32_t **ppiQImag, + ivas_split_rend_bits_t *pBits, + uint32_t ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE] ) +#else +static int32_t ReadLCLDData( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t *piPredEnable, + int32_t **ppiAlloc, + int32_t **ppiSignReal, + int32_t **ppiSignImag, + int32_t **ppiQReal, + int32_t **ppiQImag, + ivas_split_rend_bits_t *pBits ) +#endif +{ + int32_t b, k, m, n; + int32_t iBitsRead, iBlockOffest, iFBOffset; + int32_t iAlloc, iHuffDim, iHuffMod; + + iBitsRead = 0; + iBlockOffest = 0; + for ( n = 0; n < iNumGroups; n++ ) + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + iAlloc = ppiAlloc[n][b]; + + iHuffDim = c_aiHuffmanDim[iAlloc]; + iHuffMod = c_aiHuffmanMod[iAlloc]; + + if ( iAlloc > 0 ) + { + const uint32_t( *pauiHuffmanTable )[HUFF_DEC_TABLE_SIZE] = NULL; + const uint32_t( *pauiHuffmanTableDPCM )[HUFF_DEC_TABLE_SIZE] = NULL; +#ifdef USE_DEMOD_TABLES + const int32_t( *paiDemodTable )[2] = NULL; +#endif +#ifdef ROM_TO_RAM + pauiHuffmanTable = (const uint32_t( * )[HUFF_DEC_TABLE_SIZE]) c_apauiHuffDecTables[iAlloc]; + pauiHuffmanTableDPCM = (const uint32_t( * )[HUFF_DEC_TABLE_SIZE]) c_apauiHuffDecTables[ALLOC_TABLE_SIZE + iAlloc]; +#else + pauiHuffmanTable = c_apauiHuffDecTables[iAlloc]; + pauiHuffmanTableDPCM = c_apauiHuffDecTables[ALLOC_TABLE_SIZE + iAlloc]; +#endif +#ifdef USE_DEMOD_TABLES + paiDemodTable = c_apaiDemodTables[iAlloc]; +#endif + for ( m = 0; m < piBandwidths[b]; m++ ) + { + int32_t iQuantValue1 = 0; + int32_t iQuantValue2 = 0; + + if ( piPredEnable[iFBOffset] == 1 ) + { + if ( iHuffDim == 2 ) + { + int32_t iSymbol; + iBitsRead += ReadHuff( pauiHuffmanTableDPCM, &iSymbol, pBits ); +#ifdef USE_DEMOD_TABLES + iQuantValue1 = paiDemodTable[iSymbol][0]; + iQuantValue2 = paiDemodTable[iSymbol][1]; +#else + iQuantValue1 = iSymbol / iHuffMod; + iQuantValue2 = iSymbol % iHuffMod; +#endif + } + else + { + iBitsRead += ReadHuff( pauiHuffmanTableDPCM, &iQuantValue1, pBits ); + iBitsRead += ReadHuff( pauiHuffmanTableDPCM, &iQuantValue2, pBits ); + } + } + else + { + if ( iHuffDim == 2 ) + { + int32_t iSymbol; + + iBitsRead += ReadHuff( pauiHuffmanTable, &iSymbol, pBits ); +#ifdef USE_DEMOD_TABLES + iQuantValue1 = paiDemodTable[iSymbol][0]; + iQuantValue2 = paiDemodTable[iSymbol][1]; +#else + iQuantValue1 = iSymbol / iHuffMod; + iQuantValue2 = iSymbol % iHuffMod; +#endif + } + else + { + iBitsRead += ReadHuff( pauiHuffmanTable, &iQuantValue1, pBits ); + iBitsRead += ReadHuff( pauiHuffmanTable, &iQuantValue2, pBits ); + } + } + + ppiQReal[iBlockOffest][iFBOffset] = iQuantValue1; + ppiQImag[iBlockOffest][iFBOffset] = iQuantValue2; + + if ( iQuantValue1 > 0 ) + { + ppiSignReal[iBlockOffest][iFBOffset] = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + } + else + { + ppiSignReal[iBlockOffest][iFBOffset] = 0; + } + if ( iQuantValue2 > 0 ) + { + ppiSignImag[iBlockOffest][iFBOffset] = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + iBitsRead += 1; + } + else + { + ppiSignImag[iBlockOffest][iFBOffset] = 0; + } + + iFBOffset++; + } + } + else + { + for ( m = 0; m < piBandwidths[b]; m++ ) + { + ppiSignReal[iBlockOffest][iFBOffset] = 0; + ppiSignImag[iBlockOffest][iFBOffset] = 0; + iFBOffset++; + } + } + } + + iBlockOffest++; + } + } + + return iBitsRead; +} + + +static void ComputeAllocation( + const int32_t iChannels, + const int32_t *piNumGroups, + const int32_t iNumBands, + int32_t ***pppiSMR, + const int32_t iAllocOffset, + int32_t ***pppiAlloc ) +{ + int32_t b, k, n, iAlloc; + + for ( n = 0; n < iChannels; n++ ) + { + for ( k = 0; k < piNumGroups[n]; k++ ) + { + for ( b = 0; b < iNumBands; b++ ) + { + iAlloc = ( ( pppiSMR[n][k][b] + iAllocOffset * ALLOC_OFFSET_SCALE ) >> 5 ); + iAlloc = ( iAlloc > MIN_ALLOC ) ? iAlloc : MIN_ALLOC; + iAlloc = ( iAlloc < MAX_ALLOC ) ? iAlloc : MAX_ALLOC; + pppiAlloc[n][k][b] = iAlloc; + } + } + } + + return; +} +#endif diff --git a/lib_rend/ivas_lcld_encoder.c b/lib_rend/ivas_lcld_encoder.c new file mode 100644 index 0000000000000000000000000000000000000000..c7ae7a291fef9a5d919b423b2a59f04243ea483a --- /dev/null +++ b/lib_rend/ivas_lcld_encoder.c @@ -0,0 +1,2040 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include +#include "ivas_lcld_prot.h" +#include "ivas_lcld_rom_tables.h" +#include "prot.h" +#include "ivas_cldfb_codec_bitstream.h" +#include "ivas_prot_rend.h" +#ifdef ENABLE_PMOD_ADJUST +#include "ton_corr.h" +#endif +#include "wmc_auto.h" + +#define ENCODER_ERROR_NONE ( 0 ) // todo: not really used + +/*------------------------------------------------------------------------------------------* + * Local structures + *------------------------------------------------------------------------------------------*/ + +struct LCLD_ENCODER +{ + int32_t iSampleRate; + int32_t iChannels; + int32_t iNumBlocks; + + int32_t iTargetBitRate; + int32_t iTargetBitsPerFrame; + + int32_t iNumBands; + const int32_t *piBandwidths; + + int32_t iMSMode; + int32_t *piMSFlags; + int32_t piMSPredCoefs[MAX_BANDS]; + int32_t piLRPhaseDiffs[MAX_BANDS]; + int32_t iAllowSidePred; + +#ifdef ENABLE_PMOD_ADJUST + int32_t **ppiHiSMRFlags; +#endif + + RMSEnvelopeGrouping *psRMSEnvelopeGrouping; + + int32_t iCommonGrouping; + int32_t *piNumGroups; + int32_t **ppiGroupLengths; + + int32_t ***pppiRMSEnvelope; + int32_t ***pppiSMR; + int32_t ***pppiExcitation; + int32_t ***pppiAlloc; + + int32_t iAllocOffset; + + int32_t ***pppiLCLDSignReal; + int32_t ***pppiLCLDSignImag; + int32_t ***pppiQLCLDReal; + int32_t ***pppiQLCLDImag; + + + PredictionEncoder *psPredictionEncoder; + int32_t iLastError; +}; + + +/*------------------------------------------------------------------------------------------* + * Function CreateLCLDEncoder() + * + * + *------------------------------------------------------------------------------------------*/ + +ivas_error CreateLCLDEncoder( + LCLDEncoder **psLCLDEncoder_out, + const int32_t iSampleRate, + const int32_t iChannels, + const int32_t iTargetBitRate, + const int32_t iAllowSidePred ) +{ + int32_t n; + LCLDEncoder *psLCLDEncoder; + ivas_error error; + + assert( iSampleRate == 48000 ); // Fix + + if ( ( psLCLDEncoder = (LCLDEncoder *) malloc( sizeof( LCLDEncoder ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + psLCLDEncoder->iSampleRate = iSampleRate; + psLCLDEncoder->iChannels = iChannels; + psLCLDEncoder->iNumBlocks = LCLD_BLOCKS_PER_FRAME; + psLCLDEncoder->iAllocOffset = 0; + + psLCLDEncoder->iTargetBitRate = iTargetBitRate; + psLCLDEncoder->iTargetBitsPerFrame = iTargetBitRate * LCLD_BLOCKS_PER_FRAME * LCLD_BANDS / iSampleRate; + + psLCLDEncoder->iNumBands = MAX_BANDS_48; // Fix + psLCLDEncoder->piBandwidths = c_aiBandwidths48; // Fix + + psLCLDEncoder->iMSMode = 0; + if ( ( psLCLDEncoder->piMSFlags = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + for ( n = 0; n < MAX_BANDS; n++ ) + { + psLCLDEncoder->piLRPhaseDiffs[n] = 0; + psLCLDEncoder->piMSPredCoefs[n] = 0; + } + psLCLDEncoder->iAllowSidePred = iAllowSidePred; + + psLCLDEncoder->psRMSEnvelopeGrouping = CreateRMSEnvelopeGrouping( psLCLDEncoder->iNumBlocks ); + + psLCLDEncoder->iCommonGrouping = 1; //*Common grouping always on only impacts stereo */ + if ( ( psLCLDEncoder->piNumGroups = (int32_t *) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->ppiGroupLengths = (int32_t **) malloc( psLCLDEncoder->iChannels * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiRMSEnvelope = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiSMR = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiExcitation = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiAlloc = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + if ( ( psLCLDEncoder->pppiLCLDSignReal = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiLCLDSignImag = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiQLCLDReal = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiQLCLDImag = (int32_t ***) malloc( psLCLDEncoder->iChannels * sizeof( int32_t ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } +#ifdef ENABLE_PMOD_ADJUST + if ( ( psLCLDEncoder->ppiHiSMRFlags = (int32_t **) malloc( psLCLDEncoder->iChannels * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } +#endif + + + for ( n = 0; n < iChannels; n++ ) + { + int32_t k; +#ifdef ENABLE_PMOD_ADJUST + if ( ( psLCLDEncoder->ppiHiSMRFlags[n] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } +#endif + if ( ( psLCLDEncoder->ppiGroupLengths[n] = (int32_t *) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiRMSEnvelope[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiSMR[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiExcitation[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiAlloc[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + if ( ( psLCLDEncoder->pppiLCLDSignReal[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiLCLDSignImag[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiQLCLDReal[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiQLCLDImag[n] = (int32_t **) malloc( LCLD_BLOCKS_PER_FRAME * sizeof( int32_t * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + if ( ( psLCLDEncoder->pppiRMSEnvelope[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiSMR[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiExcitation[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiAlloc[n][k] = (int32_t *) malloc( MAX_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + + if ( ( psLCLDEncoder->pppiLCLDSignReal[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiLCLDSignImag[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiQLCLDReal[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + if ( ( psLCLDEncoder->pppiQLCLDImag[n][k] = (int32_t *) malloc( LCLD_BANDS * sizeof( int32_t ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + } + + if ( ( error = CreatePredictionEncoder( &( psLCLDEncoder->psPredictionEncoder ), iChannels, psLCLDEncoder->iNumBlocks ) ) != IVAS_ERR_OK ) + { + return error; + } + + psLCLDEncoder->iLastError = ENCODER_ERROR_NONE; + + *psLCLDEncoder_out = psLCLDEncoder; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------------------------* + * Function DeleteLCLDEncoder() + * + * + *------------------------------------------------------------------------------------------*/ + +void DeleteLCLDEncoder( + LCLDEncoder *psLCLDEncoder ) +{ + int32_t k, n; + + if ( psLCLDEncoder != NULL ) + { + + if ( psLCLDEncoder->piMSFlags != NULL ) + { + free( psLCLDEncoder->piMSFlags ); + } + + if ( psLCLDEncoder->piNumGroups != NULL ) + { + free( psLCLDEncoder->piNumGroups ); + } + + if ( psLCLDEncoder->psRMSEnvelopeGrouping != NULL ) + { + DeleteRMSEnvelopeGrouping( psLCLDEncoder->psRMSEnvelopeGrouping ); + } + + if ( psLCLDEncoder->ppiGroupLengths != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + free( psLCLDEncoder->ppiGroupLengths[n] ); + } + free( psLCLDEncoder->ppiGroupLengths ); + } +#ifdef ENABLE_PMOD_ADJUST + if ( psLCLDEncoder->ppiHiSMRFlags != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + free( psLCLDEncoder->ppiHiSMRFlags[n] ); + } + free( psLCLDEncoder->ppiHiSMRFlags ); + } +#endif + if ( psLCLDEncoder->pppiRMSEnvelope != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiRMSEnvelope[n][k] ); + } + free( psLCLDEncoder->pppiRMSEnvelope[n] ); + } + free( psLCLDEncoder->pppiRMSEnvelope ); + } + + if ( psLCLDEncoder->pppiSMR != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiSMR[n][k] ); + } + free( psLCLDEncoder->pppiSMR[n] ); + } + free( psLCLDEncoder->pppiSMR ); + } + + if ( psLCLDEncoder->pppiExcitation != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiExcitation[n][k] ); + } + free( psLCLDEncoder->pppiExcitation[n] ); + } + free( psLCLDEncoder->pppiExcitation ); + } + + if ( psLCLDEncoder->pppiAlloc != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiAlloc[n][k] ); + } + free( psLCLDEncoder->pppiAlloc[n] ); + } + free( psLCLDEncoder->pppiAlloc ); + } + + if ( psLCLDEncoder->pppiLCLDSignReal != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiLCLDSignReal[n][k] ); + } + free( psLCLDEncoder->pppiLCLDSignReal[n] ); + } + free( psLCLDEncoder->pppiLCLDSignReal ); + } + + if ( psLCLDEncoder->pppiLCLDSignImag != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiLCLDSignImag[n][k] ); + } + free( psLCLDEncoder->pppiLCLDSignImag[n] ); + } + free( psLCLDEncoder->pppiLCLDSignImag ); + } + + if ( psLCLDEncoder->pppiQLCLDReal != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiQLCLDReal[n][k] ); + } + free( psLCLDEncoder->pppiQLCLDReal[n] ); + } + free( psLCLDEncoder->pppiQLCLDReal ); + } + + if ( psLCLDEncoder->pppiQLCLDImag != NULL ) + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + for ( k = 0; k < LCLD_BLOCKS_PER_FRAME; k++ ) + { + free( psLCLDEncoder->pppiQLCLDImag[n][k] ); + } + free( psLCLDEncoder->pppiQLCLDImag[n] ); + } + free( psLCLDEncoder->pppiQLCLDImag ); + } + + DeletePredictionEncoder( psLCLDEncoder->psPredictionEncoder ); + free( psLCLDEncoder ); + } + + return; +} + + +/*------------------------------------------------------------------------------------------* + * Function LCLDEncoderGetError() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t LCLDEncoderGetError( LCLDEncoder *psLCLDEncoder ) +{ + return psLCLDEncoder->iLastError; +} + + +/*------------------------------------------------------------------------------------------* + * Local function declarations + *------------------------------------------------------------------------------------------*/ + +static int32_t MSModeCalculation( const int32_t iNumBlocks, const int32_t iNumBands, const int32_t *piBandwidths, float ***pppfReal, float ***pppfImag, int32_t *piMSMode, int32_t *piLRPhaseDiff, int32_t *piMSPredCoef, const int32_t iAllowSidePred, int32_t *piMSFlags ); + +static void RemoveRMSEnvelope( const int32_t iNumBands, const int32_t *piBandwidths, const int32_t iNumGroups, const int32_t *piGroupLengths, int32_t **ppiRMSEnvelope, float **ppfReal, float **ppfImag ); + +static int32_t CountLCLDBits( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t *piPredEnable, int32_t **ppiAlloc, int32_t **ppiQReal, int32_t **ppiQImag ); + +static int32_t WriteHeaderInformation( const int32_t iNumBands, ivas_split_rend_bits_t *pBits ); + +static int32_t WritePmodInformation( const int32_t **ppiHiSMRFlags, Bitstream *psBSWrite, int32_t iChannels, int32_t iNumBands ); + +static int32_t WriteMSInformation( const int32_t iNumBands, const int32_t iMSMode, const int32_t *piMSFlags, const int32_t *piLRPhaseDiffs, const int32_t *piMSPredCoefs, int32_t iNumMSPredBands, ivas_split_rend_bits_t *pBits ); + +static int32_t WriteGroupInformation( const int32_t iChannels, const int32_t iCommonGrouping, const int32_t *piNumGroups, int32_t **ppiGroupLengths, ivas_split_rend_bits_t *pBits ); + +static int32_t WriteRMSEnvelope( const int32_t iChannels, const int32_t *piNumGroups, const int32_t iNumBands, int32_t ***pppiRMSEnvelope, ivas_split_rend_bits_t *pBits ); + +static int32_t WriteAllocInformation( const int32_t iAllocOffset, + ivas_split_rend_bits_t *pBits ); + +static int32_t WriteLCLDData( const int32_t iNumGroups, const int32_t *piGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, const int32_t *piPredEnable, int32_t **ppiAlloc, int32_t **ppiSignReal, int32_t **ppiSignImag, int32_t **ppiQReal, int32_t **ppiQImag, ivas_split_rend_bits_t *pBits ); + +static int32_t ComputeAllocation( const int32_t iChannels, const int32_t *piNumGroups, int32_t **ppiGroupLengths, const int32_t iNumBands, const int32_t *piBandwidths, float ***pppfReal, float ***pppfImag, int32_t ***pppiSMR, const int32_t iAvailableBits, int32_t *piAllocOffset, int32_t ***pppiAlloc, int32_t ***pppiQReal, int32_t ***pppiQImag, int32_t ***pppiSignReal, int32_t ***pppiSignImag, int32_t **ppiPredEnable, float **ppfA1Real, float **ppfA1Imag ); + + +/*------------------------------------------------------------------------------------------* + * Function EncodeLCLDFrame() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t EncodeLCLDFrame( + LCLDEncoder *psLCLDEncoder, + float ***pppfLCLDReal, + float ***pppfLCLDImag, + int32_t *piBitsWritten, + const int32_t available_bits, + ivas_split_rend_bits_t *pBits ) +{ + int32_t n; + int32_t iAvailableBits, iBitsWritten; + int32_t iNumMSBands = 0; + iAvailableBits = available_bits; // HCBR for now + iBitsWritten = 0; + + /* Do MS calc here */ + if ( psLCLDEncoder->iChannels == 2 ) + { + iNumMSBands = MSModeCalculation( psLCLDEncoder->iNumBlocks, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + pppfLCLDReal, + pppfLCLDImag, + &psLCLDEncoder->iMSMode, + psLCLDEncoder->piLRPhaseDiffs, + psLCLDEncoder->piMSPredCoefs, + psLCLDEncoder->iAllowSidePred, + psLCLDEncoder->piMSFlags ); + + if ( psLCLDEncoder->iMSMode > 0 ) + { + psLCLDEncoder->iCommonGrouping = 1; // Make sure common grouping is enabled when MS is in use + } + } + +#ifdef ENABLE_PMOD_ADJUST + CalcTonQuotas( psLCLDEncoder->iChannels, psLCLDEncoder->iNumBands, psLCLDEncoder->piBandwidths, pppfLCLDReal, pppfLCLDImag, psLCLDEncoder->ppiHiSMRFlags ); +#endif + + /* Compute Grouping and RMS Envelopes */ + if ( psLCLDEncoder->iChannels == 2 && psLCLDEncoder->iCommonGrouping == 1 ) + { + ComputeEnvelopeGrouping( psLCLDEncoder->psRMSEnvelopeGrouping, + psLCLDEncoder->iChannels, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + pppfLCLDReal, + pppfLCLDImag, + &psLCLDEncoder->piNumGroups[0], + psLCLDEncoder->ppiGroupLengths[0], + psLCLDEncoder->pppiRMSEnvelope ); + + psLCLDEncoder->piNumGroups[1] = psLCLDEncoder->piNumGroups[0]; + for ( n = 0; n < psLCLDEncoder->piNumGroups[0]; n++ ) + { + psLCLDEncoder->ppiGroupLengths[1][n] = psLCLDEncoder->ppiGroupLengths[0][n]; + } + } + else + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + ComputeEnvelopeGrouping( psLCLDEncoder->psRMSEnvelopeGrouping, + psLCLDEncoder->iChannels, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + &pppfLCLDReal[n], + &pppfLCLDImag[n], + &psLCLDEncoder->piNumGroups[n], + psLCLDEncoder->ppiGroupLengths[n], + &psLCLDEncoder->pppiRMSEnvelope[n] ); + } + } + + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + RemoveRMSEnvelope( psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + psLCLDEncoder->piNumGroups[n], + (const int32_t *) psLCLDEncoder->ppiGroupLengths[n], + psLCLDEncoder->pppiRMSEnvelope[n], + pppfLCLDReal[n], + pppfLCLDImag[n] ); + } + + ComputePredictors( psLCLDEncoder->psPredictionEncoder, pppfLCLDReal, pppfLCLDImag ); + + iBitsWritten += WriteHeaderInformation( psLCLDEncoder->iNumBands, pBits ); + + if ( psLCLDEncoder->iChannels == 2 ) + { + iBitsWritten += WriteMSInformation( psLCLDEncoder->iNumBands, + psLCLDEncoder->iMSMode, + (const int32_t *) psLCLDEncoder->piMSFlags, + (const int32_t *) psLCLDEncoder->piLRPhaseDiffs, + (const int32_t *) psLCLDEncoder->piMSPredCoefs, + iNumMSBands, + pBits ); + } + + + iBitsWritten += WritePredictors( psLCLDEncoder->psPredictionEncoder, pBits ); + + iBitsWritten += WriteGroupInformation( psLCLDEncoder->iChannels, psLCLDEncoder->iCommonGrouping, (const int32_t *) psLCLDEncoder->piNumGroups, psLCLDEncoder->ppiGroupLengths, pBits ); + + iBitsWritten += WriteRMSEnvelope( psLCLDEncoder->iChannels, (const int32_t *) psLCLDEncoder->piNumGroups, psLCLDEncoder->iNumBands, psLCLDEncoder->pppiRMSEnvelope, pBits ); + +#ifdef ENABLE_PMOD_ADJUST + iBitsWritten += WritePmodInformation( psLCLDEncoder->ppiHiSMRFlags, + psLCLDEncoder->psBSWrite, + psLCLDEncoder->iChannels, + psLCLDEncoder->iNumBands ); +#endif + + if ( psLCLDEncoder->iChannels == 2 && psLCLDEncoder->iCommonGrouping == 1 ) + { + int32_t k; + for ( k = 0; k < psLCLDEncoder->piNumGroups[0]; k++ ) + { + PerceptualModelStereo( psLCLDEncoder->iNumBands, + psLCLDEncoder->piMSFlags, + psLCLDEncoder->pppiRMSEnvelope[0][k], + psLCLDEncoder->pppiRMSEnvelope[1][k], + psLCLDEncoder->pppiExcitation[0][k], + psLCLDEncoder->pppiExcitation[1][k], + psLCLDEncoder->pppiSMR[0][k], + psLCLDEncoder->pppiSMR[1][k] ); + } + } + else + { + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + int32_t k; + for ( k = 0; k < psLCLDEncoder->piNumGroups[n]; k++ ) + { + PerceptualModel( psLCLDEncoder->iNumBands, + psLCLDEncoder->pppiRMSEnvelope[n][k], + psLCLDEncoder->pppiExcitation[n][k], + psLCLDEncoder->pppiSMR[n][k] ); + } + } + } + + iAvailableBits -= iBitsWritten; + ComputeAllocation( psLCLDEncoder->iChannels, + (const int32_t *) psLCLDEncoder->piNumGroups, + psLCLDEncoder->ppiGroupLengths, + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + pppfLCLDReal, + pppfLCLDImag, + psLCLDEncoder->pppiSMR, + iAvailableBits, + &psLCLDEncoder->iAllocOffset, + psLCLDEncoder->pppiAlloc, + psLCLDEncoder->pppiQLCLDReal, + psLCLDEncoder->pppiQLCLDImag, + psLCLDEncoder->pppiLCLDSignReal, + psLCLDEncoder->pppiLCLDSignImag, + psLCLDEncoder->psPredictionEncoder->ppiPredBandEnable, + psLCLDEncoder->psPredictionEncoder->ppfA1Real, + psLCLDEncoder->psPredictionEncoder->ppfA1Imag ); + + iBitsWritten += WriteAllocInformation( psLCLDEncoder->iAllocOffset, + pBits ); + + for ( n = 0; n < psLCLDEncoder->iChannels; n++ ) + { + iBitsWritten += WriteLCLDData( psLCLDEncoder->piNumGroups[n], + (const int32_t *) psLCLDEncoder->ppiGroupLengths[n], + psLCLDEncoder->iNumBands, + psLCLDEncoder->piBandwidths, + (const int32_t *) psLCLDEncoder->psPredictionEncoder->ppiPredBandEnable[n], + psLCLDEncoder->pppiAlloc[n], + psLCLDEncoder->pppiLCLDSignReal[n], + psLCLDEncoder->pppiLCLDSignImag[n], + psLCLDEncoder->pppiQLCLDReal[n], + psLCLDEncoder->pppiQLCLDImag[n], + pBits ); + } + *piBitsWritten = iBitsWritten; + + return 0; +} + + +/*------------------------------------------------------------------------------------------* + * Function GetNumGroups() + * + * + *------------------------------------------------------------------------------------------*/ + +int32_t GetNumGroups( LCLDEncoder *psLCLDEncoder ) +{ + return psLCLDEncoder->piNumGroups[0]; +} + + +/*------------------------------------------------------------------------------------------* + * Local functions + * + * + *------------------------------------------------------------------------------------------*/ + +static int32_t MSModeCalculation( + const int32_t iNumBlocks, + const int32_t iNumBands, + const int32_t *piBandwidths, + float ***pppfReal, + float ***pppfImag, + int32_t *piMSMode, + int32_t *piLRPhaseDiffs, + int32_t *piMSPredCoefs, + const int32_t iAllowSidePred, + int32_t *piMSFlags ) +{ + int32_t b; + int32_t iFBOffset; + int32_t iNumMSBands; + int32_t piMSPredFlags[MAX_BANDS] = { 0 }; + int32_t iNumMSPredBands = 0; + float msBitsReduction = 0.0f; + float msPredBitsReduction = 0.0f; + int32_t msBits; + int32_t msPredBits; + float fPred; +#if defined SIMPLE_PHASE + void( *pFuncPhaseRotateOptions[4] ) = { &rot_zero, &rot_p_pi_2, &rot_pm_pi, &rot_m_pi_2 }; +#endif + const float one_by_log10_2 = 3.32192809488736f; + + *piMSMode = 0; + iFBOffset = 0; + iNumMSBands = 0; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t n; + float fLeftEnergy; + float fRightEnergy; + float fMidEnergy; + float fSideEnergy; + float fLRRatio; + float fMSRatio; + float fMSPredRatio; + float fMidEnergyPred; + float fSideEnergyPred; + float fLRCovReal = 0.0f; + float fLRCovImag = 0.0f; + int32_t iPhase; + int32_t iPred; + int32_t tabIdx = 0; + + fLeftEnergy = 0.0f; + fRightEnergy = 0.0f; + fMidEnergy = 0.0; + fSideEnergy = 0.0; + + for ( n = 0; n < piBandwidths[b]; n++ ) + { + int32_t k; + for ( k = 0; k < iNumBlocks; k++ ) + { + float fMidReal; + float fMidImag; + float fSideReal; + float fSideImag; + + fMidReal = 0.5f * ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] ); + fMidImag = 0.5f * ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] ); + fSideReal = 0.5f * ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] ); + fSideImag = 0.5f * ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] ); + + fLeftEnergy += ( pppfReal[0][k][iFBOffset] * pppfReal[0][k][iFBOffset] + pppfImag[0][k][iFBOffset] * pppfImag[0][k][iFBOffset] ); + fRightEnergy += ( pppfReal[1][k][iFBOffset] * pppfReal[1][k][iFBOffset] + pppfImag[1][k][iFBOffset] * pppfImag[1][k][iFBOffset] ); + fMidEnergy += ( fMidReal * fMidReal + fMidImag * fMidImag ); + fSideEnergy += ( fSideReal * fSideReal + fSideImag * fSideImag ); + + fLRCovReal += ( pppfReal[0][k][iFBOffset] * pppfReal[1][k][iFBOffset] + pppfImag[0][k][iFBOffset] * pppfImag[1][k][iFBOffset] ); + fLRCovImag += ( pppfImag[0][k][iFBOffset] * pppfReal[1][k][iFBOffset] - pppfImag[1][k][iFBOffset] * pppfReal[0][k][iFBOffset] ); + } + + iFBOffset++; + } + + /* compute L/R phase difference if high coherence */ + if ( fLRCovReal * fLRCovReal + fLRCovImag * fLRCovImag > 0.5f * fLeftEnergy * fRightEnergy ) + { + float fPhase = (float) atan2( fLRCovImag, fLRCovReal ); // ToDo: replace by atan2f() + iPhase = quantPhase( fPhase ); + } + else + { + iPhase = 0; + } + piLRPhaseDiffs[b] = iPhase; + + /* adjust covariance based on phase rotation */ +#ifdef SIMPLE_PHASE + cplxmult( &fLRCovReal, &fLRCovImag, c_afRotRealImagSimple[iPhase][0], -c_afRotRealImagSimple[iPhase][1] ); +#else + tabIdx = iPhase - PHASE_MIN_VAL; + cplxmult( &fLRCovReal, &fLRCovImag, c_afRotRealImag[tabIdx][0], -c_afRotRealImag[tabIdx][1] ); +#endif + /* compute MS prediction coefficient based on LR covariance*/ + fMidEnergyPred = 0.25f * ( fLeftEnergy + fRightEnergy + 2.0f * fLRCovReal ); + fSideEnergyPred = 0.25f * ( fLeftEnergy + fRightEnergy - 2.0f * fLRCovReal ); + + /* M/S prediction */ + fPred = fMidEnergyPred == 0.0f ? 0.0f : 0.25f * ( fLeftEnergy - fRightEnergy ) / fMidEnergyPred; + iPred = quantPred( fPred ); + fPred = dequantPred( iPred ); + piMSPredCoefs[b] = iPred; + + /* evaluation */ + fSideEnergyPred += ( fPred * fPred * fMidEnergyPred - 2.0f * fPred * 0.25f * ( fLeftEnergy - fRightEnergy ) ); + /* -= fPred * fPred * fMidEnergyPred doesn't work because fPred is quantized and does not match MS/MM exactly */ + fMSPredRatio = log10f( ( fMidEnergyPred + 1e-12f ) / ( fSideEnergyPred + 1e-12f ) ); + + fLeftEnergy = log10f( fLeftEnergy + 1e-12f ); + fRightEnergy = log10f( fRightEnergy + 1e-12f ); + fMidEnergy = log10f( fMidEnergy + 1e-12f ); + fSideEnergy = log10f( fSideEnergy + 1e-12f ); + + if ( fLeftEnergy > fRightEnergy ) + { + fLRRatio = fLeftEnergy - fRightEnergy; + } + else + { + fLRRatio = fRightEnergy - fLeftEnergy; + } + + if ( fMidEnergy > fSideEnergy ) + { + fMSRatio = fMidEnergy - fSideEnergy; + } + else + { + fMSRatio = fSideEnergy - fMidEnergy; + } + + if ( fMSRatio > fLRRatio ) + { + iNumMSBands++; + piMSFlags[b] = 1; + } + else + { + piMSFlags[b] = 0; + } + + if ( fMSRatio > fLRRatio ) + { + float maskThresShift_dB_by_10 = ( fMSRatio - fLRRatio ) * (float) c_aiDefaultTheta48[b] / 16.0f; + msBitsReduction += (float) ( piBandwidths[b] * iNumBlocks * 2 ) * one_by_log10_2 * maskThresShift_dB_by_10; /* * 2 for real/imag */ + } + + if ( fMSPredRatio > fLRRatio ) + { + float maskThresShift_dB_by_10 = ( fMSPredRatio - fLRRatio ) * (float) c_aiDefaultTheta48[b] / 16.0f; + msPredBitsReduction += (float) ( piBandwidths[b] * iNumBlocks * 2 ) * one_by_log10_2 * maskThresShift_dB_by_10; + iNumMSPredBands++; + piMSPredFlags[b] = 1; + } + else + { + piMSPredFlags[b] = 0; + } + } + + msPredBits = CountMSBits( iNumBands, 3, piMSPredFlags, piLRPhaseDiffs, piMSPredCoefs ); + msPredBitsReduction = max( msPredBitsReduction - (float) msPredBits, 0.0f ); + msBits = CountMSBits( iNumBands, 2, piMSFlags, NULL, NULL ); + msBitsReduction = max( msBitsReduction - (float) msBits, 0.0f ); +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "bit_red.txt", "wt" ); + } + fprintf( fid, "%.1f %.1f %d %d\n", msBitsReduction, msPredBitsReduction, msBits, msPredBits ); + } +#endif + + if ( iAllowSidePred && msPredBitsReduction > 1.1f * msBitsReduction ) + { + *piMSMode = 3; + for ( b = 0; b < iNumBands; b++ ) + { + piMSFlags[b] = piMSPredFlags[b]; + } + iNumMSBands = iNumMSPredBands; + } + else if ( iNumMSBands == iNumBands ) + { + *piMSMode = 1; + } + else if ( iNumMSBands > 0 ) + { + *piMSMode = 2; + } + else + { + *piMSMode = 0; + } + + if ( *piMSMode > 0 ) + { + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { +#if defined SIMPLE_PHASE + void ( *pFuncPhaseRotate )( float *, float * ) = pFuncPhaseRotateOptions[piLRPhaseDiffs[b]]; +#endif + if ( piMSFlags[b] == 1 ) + { + int32_t n; + for ( n = 0; n < piBandwidths[b]; n++ ) + { + int32_t k; + for ( k = 0; k < iNumBlocks; k++ ) + { + float fMidReal; + float fMidImag; + float fSideReal; + float fSideImag; + + if ( *piMSMode == 3 ) + { +#ifdef SIMPLE_PHASE + ( *pFuncPhaseRotate )( &pppfReal[1][k][iFBOffset], &pppfImag[1][k][iFBOffset] ); +#else + int32_t phaseIdx; + + phaseIdx = piLRPhaseDiffs[b] - PHASE_MIN_VAL; + cplxmult( &pppfReal[1][k][iFBOffset], &pppfImag[1][k][iFBOffset], c_afRotRealImag[phaseIdx][0], c_afRotRealImag[phaseIdx][1] ); +#endif + } + + fMidReal = 0.5f * ( pppfReal[0][k][iFBOffset] + pppfReal[1][k][iFBOffset] ); + fMidImag = 0.5f * ( pppfImag[0][k][iFBOffset] + pppfImag[1][k][iFBOffset] ); + fSideReal = 0.5f * ( pppfReal[0][k][iFBOffset] - pppfReal[1][k][iFBOffset] ); + fSideImag = 0.5f * ( pppfImag[0][k][iFBOffset] - pppfImag[1][k][iFBOffset] ); + + if ( *piMSMode == 3 ) + { + fPred = dequantPred( piMSPredCoefs[b] ); + fSideReal -= fPred * fMidReal; + fSideImag -= fPred * fMidImag; + } + + pppfReal[0][k][iFBOffset] = fMidReal; + pppfReal[1][k][iFBOffset] = fSideReal; + pppfImag[0][k][iFBOffset] = fMidImag; + pppfImag[1][k][iFBOffset] = fSideImag; + } + iFBOffset++; + } + } + else + { + iFBOffset += piBandwidths[b]; + } + } + } + +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "ms_mode_enc_raw.txt", "wt" ); + } + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumBands, iNumBands, fid, piMSFlags ); + } +#endif + if ( *piMSMode == 3 ) + { + /* Differential Coding of Phase Data*/ + PrepEncode( piLRPhaseDiffs, piMSFlags, iNumBands ); + PrepEncode( piMSPredCoefs, piMSFlags, iNumBands ); +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "ms_mode_enc.txt", "wt" ); + } + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumMSBands, iNumBands, fid, piMSFlags ); + } +#endif + /* Differential Coding*/ +#ifndef SIMPLE_PHASE + EncodePhase( piLRPhaseDiffs, iNumMSBands, PHASE_DIFF_DIM ); +#endif + EncodePredCoef( piMSPredCoefs, iNumMSBands ); +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "ms_mode_enc_diff.txt", "wt" ); + } + writeMSPred( piLRPhaseDiffs, piMSPredCoefs, *piMSMode, iNumMSBands, iNumBands, fid, piMSFlags ); + } +#endif + } + + return iNumMSBands; +} + + +static void RemoveRMSEnvelope( + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t iNumGroups, + const int32_t *piGroupLengths, + int32_t **ppiRMSEnvelope, + float **ppfReal, + float **ppfImag ) +{ + int32_t k, n, b, iFBOffset, m, iRMSEnv; + int32_t iBlockOffset; + float fGain; + + iBlockOffset = 0; + for ( n = 0; n < iNumGroups; n++ ) + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + iRMSEnv = ppiRMSEnvelope[n][b]; + fGain = c_afRMSEnvReconstructTable[ENV_RECONSTRUCT_TABLE_CENTER - iRMSEnv]; + for ( m = 0; m < piBandwidths[b]; m++ ) + { + ppfReal[iBlockOffset][iFBOffset] *= fGain; + ppfImag[iBlockOffset][iFBOffset] *= fGain; + iFBOffset++; + } + } + iBlockOffset++; + } + } + + return; +} + + +static void QuantizeSpectrumDPCM_Opt( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + int32_t **ppiAlloc, + float **ppfReal, + float **ppfImag, + int32_t **ppiQReal, + int32_t **ppiQImag, + int32_t **ppiSignReal, + int32_t **ppiSignImag, + int32_t *piPredEnable, + float *pfA1Real, + float *pfA1Imag ) /* Pass in 2 previous value buffers NULLABLE */ +{ + int32_t b, m, n, iBlockOffset; + float fVal, fPrevReal, fPrevImag, fPredReal, fPredImag; + int32_t iFBOffset; + int32_t k, iAlloc, iQuantValue, iMaxQuantVal; + float fSCFGain, fInvSCFGain; + + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + for ( m = 0; m < piBandwidths[b]; m++ ) + { + iBlockOffset = 0; + fPrevReal = 0.0; + fPrevImag = 0.0; + for ( n = 0; n < iNumGroups; n++ ) + { + iAlloc = ppiAlloc[n][b]; + iMaxQuantVal = c_aiQuantMaxValues[iAlloc]; + fSCFGain = c_afScaleFactor[iAlloc]; + fInvSCFGain = c_afInvScaleFactor[iAlloc]; + + if ( piPredEnable[iFBOffset] == 1 ) + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + fPredReal = 0.0; + fPredImag = 0.0; + + fPredReal = pfA1Real[iFBOffset] * fPrevReal - pfA1Imag[iFBOffset] * fPrevImag; + fPredImag = pfA1Real[iFBOffset] * fPrevImag + pfA1Imag[iFBOffset] * fPrevReal; + + fVal = ppfReal[iBlockOffset][iFBOffset] + fPredReal; + if ( fVal > 0.0 ) + { + iQuantValue = (int32_t) ( fSCFGain * fVal + 0.5 ); + ppiSignReal[iBlockOffset][iFBOffset] = 0; + } + else + { + iQuantValue = (int32_t) ( -fSCFGain * fVal + 0.5 ); + ppiSignReal[iBlockOffset][iFBOffset] = 1; + } + iQuantValue = ( iQuantValue < iMaxQuantVal ) ? iQuantValue : iMaxQuantVal; + + ppiQReal[iBlockOffset][iFBOffset] = iQuantValue; + + fVal = ppfImag[iBlockOffset][iFBOffset] + fPredImag; + if ( fVal > 0.0 ) + { + iQuantValue = (int32_t) ( fSCFGain * fVal + 0.5 ); + ppiSignImag[iBlockOffset][iFBOffset] = 0; + } + else + { + iQuantValue = (int32_t) ( -fSCFGain * fVal + 0.5 ); + ppiSignImag[iBlockOffset][iFBOffset] = 1; + } + + iQuantValue = ( iQuantValue < iMaxQuantVal ) ? iQuantValue : iMaxQuantVal; + ppiQImag[iBlockOffset][iFBOffset] = iQuantValue; + + + if ( ppiSignReal[iBlockOffset][iFBOffset] == 0 ) + { + fPrevReal = fInvSCFGain * (float) ppiQReal[iBlockOffset][iFBOffset] - fPredReal; + } + else + { + fPrevReal = -fInvSCFGain * (float) ppiQReal[iBlockOffset][iFBOffset] - fPredReal; + } + if ( ppiSignImag[iBlockOffset][iFBOffset] == 0 ) + { + fPrevImag = fInvSCFGain * (float) ppiQImag[iBlockOffset][iFBOffset] - fPredImag; + } + else + { + fPrevImag = -fInvSCFGain * (float) ppiQImag[iBlockOffset][iFBOffset] - fPredImag; + } + + iBlockOffset++; + } + } + else + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + fVal = ppfReal[iBlockOffset][iFBOffset]; + if ( fVal > 0.0 ) + { + iQuantValue = (int32_t) ( fSCFGain * fVal + 0.5 ); + ppiSignReal[iBlockOffset][iFBOffset] = 0; + } + else + { + iQuantValue = (int32_t) ( -fSCFGain * fVal + 0.5 ); + ppiSignReal[iBlockOffset][iFBOffset] = 1; + } + iQuantValue = ( iQuantValue < iMaxQuantVal ) ? iQuantValue : iMaxQuantVal; + + ppiQReal[iBlockOffset][iFBOffset] = iQuantValue; + + fVal = ppfImag[iBlockOffset][iFBOffset]; + if ( fVal > 0.0 ) + { + iQuantValue = (int32_t) ( fSCFGain * fVal + 0.5 ); + ppiSignImag[iBlockOffset][iFBOffset] = 0; + } + else + { + iQuantValue = (int32_t) ( -fSCFGain * fVal + 0.5 ); + ppiSignImag[iBlockOffset][iFBOffset] = 1; + } + iQuantValue = ( iQuantValue < iMaxQuantVal ) ? iQuantValue : iMaxQuantVal; + ppiQImag[iBlockOffset][iFBOffset] = iQuantValue; + iBlockOffset++; + } + } + } + + iFBOffset++; + } + } + + return; +} + + +static void QuantizeSpectrumDPCM( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + int32_t **ppiAlloc, + float **ppfReal, + float **ppfImag, + int32_t **ppiQReal, + int32_t **ppiQImag, + int32_t **ppiSignReal, + int32_t **ppiSignImag, + int32_t *piPredEnable, + float *pfA1Real, + float *pfA1Imag ) /* Pass in 2 previous value buffers NULLABLE */ +{ + int32_t b, m, n, iBlockOffset; + float fVal, fPrevReal, fPrevImag, fPredReal, fPredImag; + int32_t iFBOffset; + int32_t k, iAlloc, iQuantValue, iMaxQuantVal; + float fSCFGain, fInvSCFGain; + + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + for ( m = 0; m < piBandwidths[b]; m++ ) + { + iBlockOffset = 0; + fPrevReal = 0.0; + fPrevImag = 0.0; + for ( n = 0; n < iNumGroups; n++ ) + { + + iAlloc = ppiAlloc[n][b]; + iMaxQuantVal = c_aiQuantMaxValues[iAlloc]; + fSCFGain = c_afScaleFactor[iAlloc]; + fInvSCFGain = c_afInvScaleFactor[iAlloc]; + + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + fPredReal = 0.0; + fPredImag = 0.0; + + if ( piPredEnable[iFBOffset] == 1 ) + { + fPredReal = pfA1Real[iFBOffset] * fPrevReal - pfA1Imag[iFBOffset] * fPrevImag; + fPredImag = pfA1Real[iFBOffset] * fPrevImag + pfA1Imag[iFBOffset] * fPrevReal; + } + else + { // don't need + fPredReal = 0.0; + fPredImag = 0.0; + } + + fVal = ppfReal[iBlockOffset][iFBOffset] + fPredReal; + if ( fVal > 0.0 ) + { + iQuantValue = (int32_t) ( fSCFGain * fVal + 0.5 ); + ppiSignReal[iBlockOffset][iFBOffset] = 0; + } + else + { + iQuantValue = (int32_t) ( -fSCFGain * fVal + 0.5 ); + ppiSignReal[iBlockOffset][iFBOffset] = 1; + } +#ifdef _DEBUG_VERBOSE + if ( iQuantValue > iMaxQuantVal ) + { + printf( "Value out of range %d\t%d\t%d\t%d\n", b, iAlloc, iQuantValue, iMaxQuantVal ); + iQuantValue = iMaxQuantVal; + } +#else + iQuantValue = ( iQuantValue < iMaxQuantVal ) ? iQuantValue : iMaxQuantVal; +#endif + + ppiQReal[iBlockOffset][iFBOffset] = iQuantValue; + + fVal = ppfImag[iBlockOffset][iFBOffset] + fPredImag; + if ( fVal > 0.0 ) + { + iQuantValue = (int32_t) ( fSCFGain * fVal + 0.5 ); + ppiSignImag[iBlockOffset][iFBOffset] = 0; + } + else + { + iQuantValue = (int32_t) ( -fSCFGain * fVal + 0.5 ); + ppiSignImag[iBlockOffset][iFBOffset] = 1; + } + +#ifdef _DEBUG_VERBOSE + if ( iQuantValue > iMaxQuantVal ) + { + printf( "Value out of range %d\t%d\t%d\t%d\n", b, iAlloc, iQuantValue, iMaxQuantVal ); + iQuantValue = iMaxQuantVal; + } +#else + iQuantValue = ( iQuantValue < iMaxQuantVal ) ? iQuantValue : iMaxQuantVal; +#endif + ppiQImag[iBlockOffset][iFBOffset] = iQuantValue; + + if ( piPredEnable[iFBOffset] == 1 ) + { + if ( ppiSignReal[iBlockOffset][iFBOffset] == 0 ) + { + fPrevReal = fInvSCFGain * (float) ppiQReal[iBlockOffset][iFBOffset] - fPredReal; + } + else + { + fPrevReal = -fInvSCFGain * (float) ppiQReal[iBlockOffset][iFBOffset] - fPredReal; + } + if ( ppiSignImag[iBlockOffset][iFBOffset] == 0 ) + { + fPrevImag = fInvSCFGain * (float) ppiQImag[iBlockOffset][iFBOffset] - fPredImag; + } + else + { + fPrevImag = -fInvSCFGain * (float) ppiQImag[iBlockOffset][iFBOffset] - fPredImag; + } + } + else + { // don't need // ToDo ? + fPrevReal = 0.0; + fPrevImag = 0.0; + } + + iBlockOffset++; + } + } + + iFBOffset++; + } + } + + return; +} + + +static int32_t CountLCLDBits( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t *piPredEnable, + int32_t **ppiAlloc, + int32_t **ppiQReal, + int32_t **ppiQImag ) +{ + int32_t k, n, b, iFBOffset; + int32_t iBits, iBlockOffest; + int32_t m, iAlloc, iHuffDim, iHuffMod; + + iBits = 0; + iBlockOffest = 0; + for ( n = 0; n < iNumGroups; n++ ) + { + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + iAlloc = ppiAlloc[n][b]; + + iHuffDim = c_aiHuffmanDim[iAlloc]; + iHuffMod = c_aiHuffmanMod[iAlloc]; + + if ( iAlloc > 0 ) + { +#ifndef ROM_TO_RAM + const uint32_t( *pauiHuffmanTable )[2] = NULL; + const uint32_t( *pauiHuffmanTableDPCM )[2] = NULL; +#else + const uint16_t( *pauiHuffmanTable )[2] = NULL; + const uint16_t( *pauiHuffmanTableDPCM )[2] = NULL; +#endif + pauiHuffmanTable = c_apauiHuffEncTabels[iAlloc]; + pauiHuffmanTableDPCM = c_apauiHuffEncTabels[ALLOC_TABLE_SIZE + iAlloc]; + for ( m = 0; m < piBandwidths[b]; m++ ) + { + int32_t iQuantValue1; + int32_t iQuantValue2; + + iQuantValue1 = ppiQReal[iBlockOffest][iFBOffset]; + iQuantValue2 = ppiQImag[iBlockOffest][iFBOffset]; + + iBits += ( iQuantValue1 > 0 ) ? 1 : 0; /* Sign bit for vals > 0 */ + iBits += ( iQuantValue2 > 0 ) ? 1 : 0; /* Sign bit for vals > 0 */ + + if ( piPredEnable[iFBOffset] == 1 ) + { + if ( iHuffDim == 2 ) + { + iQuantValue1 *= iHuffMod; + iQuantValue1 += iQuantValue2; + iBits += pauiHuffmanTableDPCM[iQuantValue1][0]; + } + else + { + iBits += pauiHuffmanTableDPCM[iQuantValue1][0]; + iBits += pauiHuffmanTableDPCM[iQuantValue2][0]; + } + } + else + { + if ( iHuffDim == 2 ) + { + iQuantValue1 *= iHuffMod; + iQuantValue1 += iQuantValue2; + iBits += pauiHuffmanTable[iQuantValue1][0]; + } + else + { + iBits += pauiHuffmanTable[iQuantValue1][0]; + iBits += pauiHuffmanTable[iQuantValue2][0]; + } + } + + iFBOffset++; + } + } + else + { + iFBOffset += piBandwidths[b]; + } + } + + iBlockOffest++; + } + } + + return iBits; +} + + +/* Currently only the number of bands in frame */ +static int32_t WriteHeaderInformation( + const int32_t iNumBands, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsWritten; + + iBitsWritten = 0; + ivas_split_rend_bitstream_write_int32( pBits, iNumBands, 5 ); + iBitsWritten += 5; + + return iBitsWritten; +} + + +static int32_t WriteMSInformation( + const int32_t iNumBands, + const int32_t iMSMode, + const int32_t *piMSFlags, + const int32_t *piLRPhaseDiff, + const int32_t *piMSPredCoef, + int32_t iNumMSPredBands, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsWritten; + int32_t iMSPredAll = ( iNumMSPredBands == iNumBands ); +#ifdef DEBUG_WRITE_MS_PRED + int32_t iBitsWrittenTmp = 0; +#endif + iBitsWritten = 0; + ivas_split_rend_bitstream_write_int32( pBits, iMSMode, 2 ); + iBitsWritten += 2; + + if ( iMSMode == 3 ) + { + ivas_split_rend_bitstream_write_int32( pBits, iMSPredAll, 1 ); + iBitsWritten += 1; + } + + if ( iMSMode == 2 || ( iMSMode == 3 && !iMSPredAll ) ) + { + int32_t n; + for ( n = 0; n < iNumBands; n++ ) + { + ivas_split_rend_bitstream_write_int32( pBits, piMSFlags[n], 1 ); + iBitsWritten += 1; + } + } + +#ifdef DEBUG_WRITE_MS_PRED + iBitsWrittenTmp = iBitsWritten; +#endif + if ( iMSMode == 3 ) + { + int32_t b; + int32_t anyNonZero; + anyNonZero = 0; + for ( b = 0; b < iNumMSPredBands; b++ ) + { + if ( piLRPhaseDiff[b] != 0 ) + { + anyNonZero = 1; + break; + } + } + ivas_split_rend_bitstream_write_int32( pBits, anyNonZero, 1 ); + iBitsWritten++; + + if ( anyNonZero ) + { +#ifdef SIMPLE_PHASE + for ( b = 0; b < iNumMSPredBands; b++ ) + { + BSPutBits( psBSWrite, piLRPhaseDiff[b], SIMPLE_PHASE_BITS ); + iBitsWritten += SIMPLE_PHASE_BITS; + } +#else + ivas_split_rend_bitstream_write_int32( pBits, piLRPhaseDiff[0] - PHASE_MIN_VAL, PHASE_BAND0_BITS ); + iBitsWritten += PHASE_BAND0_BITS; + for ( b = 1; b < iNumMSPredBands; b++ ) + { + int32_t tabIdx = piLRPhaseDiff[b] - ENV_DELTA_MIN; + ivas_split_rend_bitstream_write_int32( pBits, c_aaiRMSEnvHuffEnc[tabIdx][1], c_aaiRMSEnvHuffEnc[tabIdx][0] ); + iBitsWritten += c_aaiRMSEnvHuffEnc[tabIdx][0]; + } +#endif + } + + anyNonZero = 0; + for ( b = 0; b < iNumMSPredBands; b++ ) + { + if ( piMSPredCoef[b] != 0 ) + { + anyNonZero = 1; + break; + } + } + + ivas_split_rend_bitstream_write_int32( pBits, anyNonZero, 1 ); + iBitsWritten++; + + if ( anyNonZero ) + { + ivas_split_rend_bitstream_write_int32( pBits, piMSPredCoef[0] - PRED_MIN_VAL, PRED_BAND0_BITS ); + iBitsWritten += PRED_BAND0_BITS; + for ( b = 1; b < iNumMSPredBands; b++ ) + { + int32_t tabIdx = piMSPredCoef[b] - ENV_DELTA_MIN; + ivas_split_rend_bitstream_write_int32( pBits, c_aaiRMSEnvHuffEnc[tabIdx][1], c_aaiRMSEnvHuffEnc[tabIdx][0] ); + iBitsWritten += c_aaiRMSEnvHuffEnc[tabIdx][0]; + } + } + } +#ifdef DEBUG_WRITE_MS_PRED + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "ms_pred_bitrate.txt", "wt" ); + } + fprintf( fid, "%f\n", (float) ( ( iBitsWritten - iBitsWrittenTmp ) * ( iMSMode == 3 ) * 50 ) / 1000.0f ); /*kb/s*/ + } +#endif + + return iBitsWritten; +} + + +static int32_t WriteGroupInformation( + const int32_t iChannels, + const int32_t iCommonGrouping, + const int32_t *piNumGroups, + int32_t **ppiGroupLengths, + ivas_split_rend_bits_t *pBits ) +{ + int32_t c, k, n, iBitsWritten; + + iBitsWritten = 0; + if ( iChannels == 2 && iCommonGrouping == 1 ) + { + ivas_split_rend_bitstream_write_int32( pBits, iCommonGrouping, 1 ); + iBitsWritten += 1; + + for ( n = 0; n < piNumGroups[0]; n++ ) + { + for ( k = 1; k < ppiGroupLengths[0][n]; k++ ) + { + ivas_split_rend_bitstream_write_int32( pBits, 0, 1 ); + iBitsWritten += 1; + } + if ( n < ( piNumGroups[0] - 1 ) ) + { + ivas_split_rend_bitstream_write_int32( pBits, 1, 1 ); + iBitsWritten += 1; + } + } + } + else if ( iChannels == 2 ) + { + ivas_split_rend_bitstream_write_int32( pBits, iCommonGrouping, 1 ); + iBitsWritten += 1; + + for ( c = 0; c < iChannels; c++ ) + { + for ( n = 0; n < piNumGroups[c]; n++ ) + { + for ( k = 1; k < ppiGroupLengths[c][n]; k++ ) + { + ivas_split_rend_bitstream_write_int32( pBits, 0, 1 ); + iBitsWritten += 1; + } + if ( n < ( piNumGroups[c] - 1 ) ) + { + ivas_split_rend_bitstream_write_int32( pBits, 1, 1 ); + iBitsWritten += 1; + } + } + } + } + else + { + for ( c = 0; c < iChannels; c++ ) + { + for ( n = 0; n < piNumGroups[c]; n++ ) + { + for ( k = 1; k < ppiGroupLengths[c][n]; k++ ) + { + ivas_split_rend_bitstream_write_int32( pBits, 0, 1 ); + iBitsWritten += 1; + } + + if ( n < ( piNumGroups[c] - 1 ) ) + { + ivas_split_rend_bitstream_write_int32( pBits, 1, 1 ); + iBitsWritten += 1; + } + } + } + } + + return iBitsWritten; +} + + +static int32_t WriteRMSEnvelope( + const int32_t iChannels, + const int32_t *piNumGroups, + const int32_t iNumBands, + int32_t ***pppiRMSEnvelope, + ivas_split_rend_bits_t *pBits ) +{ + int32_t k, n; + int32_t iBitsWritten; + + iBitsWritten = 0; + for ( n = 0; n < iChannels; n++ ) + { + for ( k = 0; k < piNumGroups[n]; k++ ) + { + int32_t b; + int32_t iLastRMSVal; + + iLastRMSVal = pppiRMSEnvelope[n][k][0]; + iLastRMSVal = ( iLastRMSVal > ENV_MIN ) ? iLastRMSVal : ENV_MIN; + iLastRMSVal = ( iLastRMSVal < ENV_MAX ) ? iLastRMSVal : ENV_MAX; + ivas_split_rend_bitstream_write_int32( pBits, ( iLastRMSVal - ENV_MIN ), ENV0_BITS ); + iBitsWritten += ENV0_BITS; + + for ( b = 1; b < iNumBands; b++ ) + { + int32_t iDelta; + + iDelta = pppiRMSEnvelope[n][k][b] - iLastRMSVal; + iDelta = ( iDelta > ENV_DELTA_MIN ) ? iDelta : ENV_DELTA_MIN; + iDelta = ( iDelta < ENV_DELTA_MAX ) ? iDelta : ENV_DELTA_MAX; + iDelta -= ENV_DELTA_MIN; + ivas_split_rend_bitstream_write_int32( pBits, c_aaiRMSEnvHuffEnc[iDelta][1], c_aaiRMSEnvHuffEnc[iDelta][0] ); + iBitsWritten += c_aaiRMSEnvHuffEnc[iDelta][0]; + + iLastRMSVal = pppiRMSEnvelope[n][k][b]; + } + } + } + + return iBitsWritten; +} + + +#ifdef ENABLE_PMOD_ADJUST +static int32_t WritePmodInformation( + const int32_t **ppiHiSMRFlags, + Bitstream *psBSWrite, + int32_t iChannels, + int32_t iNumBands ) +{ + int32_t iBitsWritten, c, b; + + iBitsWritten = 0; + + for ( c = 0; c < iChannels; c++ ) + { + int32_t anyNonZero = 0; + const int32_t *flags = ppiHiSMRFlags[c]; + for ( b = 0; b < iNumBands; b++ ) + { + if ( flags[b] ) + { + anyNonZero = 1; + break; + } + } + BSPutBits( psBSWrite, anyNonZero, 1 ); + iBitsWritten += 1; + if ( anyNonZero ) + { + for ( b = 0; b < iNumBands; b++ ) + { + BSPutBits( psBSWrite, flags[b], 1 ); + iBitsWritten += 1; + } + } + } +#ifdef WRITE_HISMR_FLAGS + { + static FILE *fid = 0; + if ( !fid ) + { + fid = fopen( "hismr_enc.txt", "wt" ); + } + for ( c = 0; c < iChannels; c++ ) + { + int32_t b; + for ( b = 0; b < iNumBands; b++ ) + { + if ( c == iChannels - 1 && b == iNumBands - 1 ) + { + fprintf( fid, "%d\n", ppiHiSMRFlags[c][b] ); + } + else + { + fprintf( fid, "%d ", ppiHiSMRFlags[c][b] ); + } + } + } + } +#endif + + return iBitsWritten; +} +#endif + + +static int32_t WriteAllocInformation( + const int32_t iAllocOffset, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsWritten; + + iBitsWritten = 0; + + if ( iAllocOffset < MIN_ALLOC_OFFSET || iAllocOffset > MAX_ALLOC_OFFSET ) + { + printf( "Serious error\n" ); + } + + ivas_split_rend_bitstream_write_int32( pBits, ( iAllocOffset - MIN_ALLOC_OFFSET ), ALLOC_OFFSET_BITS ); + iBitsWritten += ALLOC_OFFSET_BITS; + + return iBitsWritten; +} + + +static int32_t WriteLCLDData( + const int32_t iNumGroups, + const int32_t *piGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + const int32_t *piPredEnable, + int32_t **ppiAlloc, + int32_t **ppiSignReal, + int32_t **ppiSignImag, + int32_t **ppiQReal, + int32_t **ppiQImag, + ivas_split_rend_bits_t *pBits ) +{ + int32_t n; + int32_t iBitsWritten; + int32_t iBlockOffest; + + iBitsWritten = 0; + iBlockOffest = 0; + + for ( n = 0; n < iNumGroups; n++ ) + { + int32_t k; + for ( k = 0; k < piGroupLengths[n]; k++ ) + { + int32_t b; + int32_t iFBOffset; + + iFBOffset = 0; + for ( b = 0; b < iNumBands; b++ ) + { + int32_t m; + int32_t iAlloc; + int32_t iHuffDim; + int32_t iHuffMod; + + iAlloc = ppiAlloc[n][b]; + + iHuffDim = c_aiHuffmanDim[iAlloc]; + iHuffMod = c_aiHuffmanMod[iAlloc]; + + if ( iAlloc > 0 ) + { +#ifndef ROM_TO_RAM + const uint32_t( *pauiHuffmanTable )[2] = NULL; + const uint32_t( *pauiHuffmanTableDPCM )[2] = NULL; +#else + const uint16_t( *pauiHuffmanTable )[2] = NULL; + const uint16_t( *pauiHuffmanTableDPCM )[2] = NULL; +#endif + pauiHuffmanTable = c_apauiHuffEncTabels[iAlloc]; + pauiHuffmanTableDPCM = c_apauiHuffEncTabels[ALLOC_TABLE_SIZE + iAlloc]; + for ( m = 0; m < piBandwidths[b]; m++ ) + { + int32_t iQuantValue1; + int32_t iQuantValue2; + + iQuantValue1 = ppiQReal[iBlockOffest][iFBOffset]; + iQuantValue2 = ppiQImag[iBlockOffest][iFBOffset]; + + if ( piPredEnable[iFBOffset] == 1 ) + { + if ( iHuffDim == 2 ) + { + int32_t iSymbol; + iSymbol = iQuantValue1; + iSymbol *= iHuffMod; + iSymbol += iQuantValue2; + ivas_split_rend_bitstream_write_int32( pBits, pauiHuffmanTableDPCM[iSymbol][1], pauiHuffmanTableDPCM[iSymbol][0] ); + iBitsWritten += pauiHuffmanTableDPCM[iSymbol][0]; + } + else + { + ivas_split_rend_bitstream_write_int32( pBits, pauiHuffmanTableDPCM[iQuantValue1][1], pauiHuffmanTableDPCM[iQuantValue1][0] ); + iBitsWritten += pauiHuffmanTableDPCM[iQuantValue1][0]; + + ivas_split_rend_bitstream_write_int32( pBits, pauiHuffmanTableDPCM[iQuantValue2][1], pauiHuffmanTableDPCM[iQuantValue2][0] ); + iBitsWritten += pauiHuffmanTableDPCM[iQuantValue2][0]; + } + } + else + { + if ( iHuffDim == 2 ) + { + int32_t iSymbol; + iSymbol = iQuantValue1; + iSymbol *= iHuffMod; + iSymbol += iQuantValue2; + ivas_split_rend_bitstream_write_int32( pBits, pauiHuffmanTable[iSymbol][1], pauiHuffmanTable[iSymbol][0] ); + iBitsWritten += pauiHuffmanTable[iSymbol][0]; + } + else + { + ivas_split_rend_bitstream_write_int32( pBits, pauiHuffmanTable[iQuantValue1][1], pauiHuffmanTable[iQuantValue1][0] ); + iBitsWritten += pauiHuffmanTable[iQuantValue1][0]; + + ivas_split_rend_bitstream_write_int32( pBits, pauiHuffmanTable[iQuantValue2][1], pauiHuffmanTable[iQuantValue2][0] ); + iBitsWritten += pauiHuffmanTable[iQuantValue2][0]; + } + } + + if ( iQuantValue1 > 0 ) + { + ivas_split_rend_bitstream_write_int32( pBits, ppiSignReal[iBlockOffest][iFBOffset], 1 ); + iBitsWritten += 1; + } + if ( iQuantValue2 > 0 ) + { + ivas_split_rend_bitstream_write_int32( pBits, ppiSignImag[iBlockOffest][iFBOffset], 1 ); + iBitsWritten += 1; + } + + iFBOffset++; + } + } + else + { + iFBOffset += piBandwidths[b]; + } + } + + iBlockOffest++; + } + } + + return iBitsWritten; +} + + +static int32_t ComputeAllocation( + const int32_t iChannels, + const int32_t *piNumGroups, + int32_t **ppiGroupLengths, + const int32_t iNumBands, + const int32_t *piBandwidths, + float ***pppfReal, + float ***pppfImag, + int32_t ***pppiSMR, + const int32_t iAvailableBits, + int32_t *piAllocOffset, + int32_t ***pppiAlloc, + int32_t ***pppiQReal, + int32_t ***pppiQImag, + int32_t ***pppiSignReal, + int32_t ***pppiSignImag, + int32_t **ppiPredEnable, + float **ppfA1Real, + float **ppfA1Imag ) +{ + int32_t iBitsUsed, iDone, iDelta; + int32_t b, k, n; + int32_t iLimitAllocOffset; + + iBitsUsed = ALLOC_OFFSET_BITS; /* Bits used for Alloc Offset */ + + iDone = 0; + iDelta = -MIN_ALLOC_OFFSET; + *piAllocOffset = 0; + + while ( iDone == 0 ) + { + iBitsUsed = ALLOC_OFFSET_BITS; + + iLimitAllocOffset = *piAllocOffset; + iLimitAllocOffset = ( iLimitAllocOffset > MIN_ALLOC_OFFSET ) ? iLimitAllocOffset : MIN_ALLOC_OFFSET; + iLimitAllocOffset = ( iLimitAllocOffset < MAX_ALLOC_OFFSET ) ? iLimitAllocOffset : MAX_ALLOC_OFFSET; + + for ( n = 0; n < iChannels; n++ ) + { + for ( k = 0; k < piNumGroups[n]; k++ ) + { + for ( b = 0; b < iNumBands; b++ ) + { + int32_t iAlloc; + iAlloc = ( ( pppiSMR[n][k][b] + iLimitAllocOffset * ALLOC_OFFSET_SCALE ) >> 5 ); + iAlloc = ( iAlloc > MIN_ALLOC ) ? iAlloc : MIN_ALLOC; + iAlloc = ( iAlloc < MAX_ALLOC ) ? iAlloc : MAX_ALLOC; + pppiAlloc[n][k][b] = iAlloc; + } + } + + QuantizeSpectrumDPCM_Opt( piNumGroups[n], + (const int32_t *) ppiGroupLengths[n], + iNumBands, + piBandwidths, + pppiAlloc[n], + pppfReal[n], + pppfImag[n], + pppiQReal[n], + pppiQImag[n], + pppiSignReal[n], + pppiSignImag[n], + ppiPredEnable[n], + ppfA1Real[n], + ppfA1Imag[n] ); + + iBitsUsed += CountLCLDBits( piNumGroups[n], + (const int32_t *) ppiGroupLengths[n], + iNumBands, + piBandwidths, + (const int32_t *) ppiPredEnable[n], + pppiAlloc[n], + pppiQReal[n], + pppiQImag[n] ); + } + + if ( *piAllocOffset <= MIN_ALLOC_OFFSET && iBitsUsed > iAvailableBits ) + { +#ifdef DEBUG_VERBOSE + printf( "Frame can not be coded with the number of bits available\n" ); +#endif + // iLastError = ENC_ERROR_STREAM_FAILURE; + return -1; + } + else if ( *piAllocOffset >= MAX_ALLOC_OFFSET && iBitsUsed < iAvailableBits ) + { + *piAllocOffset = MAX_ALLOC_OFFSET; + iDone++; + } + else + { + if ( iDelta == 0 && iBitsUsed > iAvailableBits ) + { + iDelta = 1; + } + else if ( iDelta == 0 && iBitsUsed < iAvailableBits ) + { + iDone++; + } + else if ( iBitsUsed == iAvailableBits ) + { + iDone++; + } + + if ( iBitsUsed > iAvailableBits ) + { + *piAllocOffset -= iDelta; + iDelta >>= 1; + } + else if ( iBitsUsed < iAvailableBits ) + { + *piAllocOffset += iDelta; + iDelta >>= 1; + } + } + } + + // printf("%d\n",*piAllocOffset); + // printf("%d\t%d\t%d\n",pppiAlloc[0][0][0],pppiAlloc[0][0][1],pppiAlloc[0][0][22]); + + // printf("%d\t%d\t%d\t%d\n",*piAllocOffset,iAvailableBits,iBitsUsed,iAvailableBits - iBitsUsed); + + return iBitsUsed; +} +#endif diff --git a/lib_rend/ivas_lcld_prot.h b/lib_rend/ivas_lcld_prot.h new file mode 100644 index 0000000000000000000000000000000000000000..2d60f127dc6222353c1801a17f098eacabf3137d --- /dev/null +++ b/lib_rend/ivas_lcld_prot.h @@ -0,0 +1,332 @@ +/****************************************************************************************************** + + (C) 2022-2023 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_LCLD_ENCODER_H_ +#define _IVAS_LCLD_ENCODER_H_ + +#include "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "lib_rend.h" +#include "ivas_lcld_rom_tables.h" + + +typedef struct LCLD_ENCODER LCLDEncoder; + +ivas_error CreateLCLDEncoder( + LCLDEncoder **psLCLDEncoder, + const int32_t iSampleRate, + const int32_t iChannels, + const int32_t iTargetBitRate, + const int32_t iAllowSidePred ); + +void DeleteLCLDEncoder( + LCLDEncoder *psLCLDEncoder ); + +int32_t LCLDEncoderGetError( + LCLDEncoder *psLCLDEncoder ); + +int32_t EncodeLCLDFrame( + LCLDEncoder *psLCLDEncoder, + float ***pppfLCLDReal, + float ***pppfLCLDImag, + int32_t *piNumiBites, + const int32_t available_bits, + ivas_split_rend_bits_t *pBits ); + +int32_t GetNumGroups( + LCLDEncoder *psLCLDEncoder ); + + +typedef struct LCLD_DECODER LCLDDecoder; + +ivas_error CreateLCLDDecoder( + LCLDDecoder **psLCLDDecoder_out, + const int32_t iSampleRate, + const int32_t iChannels ); + +void DeleteLCLDDecoder( + LCLDDecoder *psLCLDDecoder ); + +int32_t LCLDDecoderGetError( + LCLDDecoder *psLCLDDecoder ); + +int32_t DecodeLCLDFrame( + LCLDDecoder *psLCLDDecoder, + ivas_split_rend_bits_t *pBits, + float ***pppfLCLDReal, + float ***pppfLCLDImag ); + + +/*----------------------------------------------------------------------------------* + * MSPred prototypes + *----------------------------------------------------------------------------------*/ + +int32_t quantPhase( + float phase ); + +void cplxmult( + float *pr1, + float *pi1, + float r2, + float i2 ); + +void rot_pm_pi( + float *pr, + float *pi ); + +void rot_p_pi_2( + float *pr, + float *pi ); + +void rot_m_pi_2( + float *pr, + float *pi ); + +int32_t requantPhase( + int32_t phaseQ ); + +int32_t quantPred( + const float pred ); + +float dequantPhase( + const int32_t phaseQ ); + +float dequantPred( + int32_t predQ ); + +int32_t PrepEncode( + int32_t *piQuant, + const int32_t *piMSFlags, + const int32_t numBands ); + +void EncodePhase( + int32_t *phaseQuant, + const int32_t numMSBands, + const int32_t diffDim ); + +void DecodePhase( + int32_t *phaseQuant, + const int32_t numMSBands, + const int32_t diffDim ); + +int32_t EncodePredCoef( + int32_t *predQuant, + const int32_t numMSBands ); + +void DecodePredCoef( + int32_t *phaseQuant, + const int32_t numMSBands ); + +void writeMSPred( + int32_t *phaseQuant, + int32_t *predQuant, + const int32_t MSMode, + const int32_t numMSBands, + int32_t numBands, + void *fid, + int32_t *piMsFlags ); + +int32_t CountMSBits( + int32_t iNumBands, + const int32_t iMSMode, + const int32_t *piMSFlags, + const int32_t *piLRPhaseDiff, + const int32_t *piMSPredCoef ); + + +/*----------------------------------------------------------------------------------* + * NoiseGen prototypes + *----------------------------------------------------------------------------------*/ + +typedef struct NOISE_GEN +{ + int32_t iNoiseBufferLength; + int32_t iNoiseBufferMask; + int32_t iNoiseBufferIndex; + float *pfNoiseBuffer; +} NoiseGen; + +NoiseGen *CreateNoiseGen( void ); + +void DeleteNoiseGen( NoiseGen *psNoiseGen ); + +inline float GetNoise( NoiseGen *psNoiseGen ) +{ + float fNoiseSample; + + fNoiseSample = psNoiseGen->pfNoiseBuffer[psNoiseGen->iNoiseBufferIndex]; + psNoiseGen->iNoiseBufferIndex++; + psNoiseGen->iNoiseBufferIndex &= psNoiseGen->iNoiseBufferMask; + + return fNoiseSample; +} + + +/*----------------------------------------------------------------------------------* + * PereptualModel prototypes + *----------------------------------------------------------------------------------*/ + +extern void PerceptualModel( + const int32_t iMaxQuantBands, + const int32_t *piRMSEnvelope, + int32_t *piExcitation, + int32_t *piSMR ); + +extern void PerceptualModelStereo( + const int32_t iMaxQuantBands, + const int32_t *piMSFlags, + const int32_t *piRMSEnvelope0, + const int32_t *piRMSEnvelope1, + int32_t *piExcitation0, + int32_t *piExcitation1, + int32_t *piSMR0, + int32_t *piSMR1 ); + +/*----------------------------------------------------------------------------------* + * PredEncoder/PredDecoder prototypes + *----------------------------------------------------------------------------------*/ + + +typedef struct PREDICTION_ENCODER +{ + int32_t iChannels; + int32_t iNumBlocks; + + float *pfWindow; + float pfRxxReal[2]; + float pfRxxImag[2]; + + int32_t *piPredChanEnable; + int32_t *piNumPredBands; + + float **ppfEstPredGain; + float **ppfEstPredBitGain; + int32_t **ppiPredBandEnable; + + float **ppfA1Real; + float **ppfA1Imag; + + int32_t **ppiA1Mag; + int32_t **ppiA1Phase; +} PredictionEncoder; + +ivas_error CreatePredictionEncoder( + PredictionEncoder **psPredictionEncoder_out, + const int32_t iChannels, + const int32_t iNumBlocks ); + +void DeletePredictionEncoder( + PredictionEncoder *psPredictionEncoder ); + +int32_t ComputePredictors( + PredictionEncoder *psPredictionEncoder, + float ***pppfReal, + float ***pppfImag ); + +void ApplyForwardPredictors( + PredictionEncoder *psPredictionEncoder, + float ***pppfReal, + float ***pppfImag ); + + +int32_t WritePredictors( + PredictionEncoder *psPredictionEncoder, + ivas_split_rend_bits_t *pBits ); + +typedef struct PREDICTION_DECODER +{ + int32_t iChannels; + int32_t iNumBlocks; + + int32_t *piPredChanEnable; + int32_t *piNumPredBands; + + float **ppfEstPredGain; + int32_t **ppiPredBandEnable; + + float **ppfA1Real; + float **ppfA1Imag; + + int32_t **ppiA1Mag; + int32_t **ppiA1Phase; + + float pfMagLUT[1 << PRED_QUNAT_FILTER_MAG_BITS]; + float pfP2RRealLUT[1 << PRED_QUANT_FILTER_PHASE_BITS]; + float pfP2RImagLUT[1 << PRED_QUANT_FILTER_PHASE_BITS]; + +} PredictionDecoder; + +ivas_error CreatePredictionDecoder( + PredictionDecoder **psPredictionDecoder_out, + const int32_t iChannels, + const int32_t iNumBlocks ); + +void DeletePredictionDecoder( + PredictionDecoder *psPredictionDecoder ); + +int32_t ReadPredictors( + PredictionDecoder *psPredictionDecoder, + ivas_split_rend_bits_t *pBits ); + +void ApplyInversePredictros( + PredictionDecoder *psPredictionDecoder, + float ***pppfReal, + float ***pppfImag ); + + +/*----------------------------------------------------------------------------------* + * RMSEnvGrouping prototypes + *----------------------------------------------------------------------------------*/ + +typedef struct RMS_ENVELOPE_GROUPING RMSEnvelopeGrouping; + +RMSEnvelopeGrouping *CreateRMSEnvelopeGrouping( + const int32_t iNumBlocks ); + +void DeleteRMSEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping ); + +void ComputeEnvelopeGrouping( + RMSEnvelopeGrouping *psRMSEnvelopeGrouping, + const int32_t iChannels, + const int32_t iNumBands, + const int32_t *piBandwidths, + float ***pppfReal, + float ***pppfImag, + int32_t *piNumGroups, + int32_t *piGroupLengths, + int32_t ***pppiRMSEnvelope ); + + +#endif + +#endif /* _LCLD_ENCODER_H_ */ diff --git a/lib_rend/ivas_lcld_rom_tables.c b/lib_rend/ivas_lcld_rom_tables.c new file mode 100644 index 0000000000000000000000000000000000000000..6f3c529836799097039613d20d55a11f9b41953a --- /dev/null +++ b/lib_rend/ivas_lcld_rom_tables.c @@ -0,0 +1,53066 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "ivas_lcld_rom_tables.h" +#include "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "wmc_auto.h" +#include "prot.h" +#include "ivas_lcld_prot.h" + +/* clang-format off */ + +const float c_afRotRealImagSimple[SIMPLE_PHASE_MAX_VAL + 1][2] = { + { 1.0f, 0.0f }, /* zero */ + { 0.0f, 1.0f }, /* pi/2 */ + { -1.0f, 0.0f }, /* pi */ + { 0.0f, -1.0f }, /* 3*pi/2 */ +}; + +/* phi = (-12:12)'/12 *pi; tmp = [cos(phi),sin(phi)]; tmp = tmp';sprintf('{%.8ff, %.8ff},\n',tmp(:)) */ +const float c_afRotRealImag[PHASE_MAX_VAL - PHASE_MIN_VAL + 1][2] = +{ + { -1.00000000f, -0.00000000f }, + { -0.96592583f, -0.25881905f }, + { -0.86602540f, -0.50000000f }, + { -0.70710678f, -0.70710678f }, + { -0.50000000f, -0.86602540f }, + { -0.25881905f, -0.96592583f }, + { 0.00000000f, -1.00000000f }, + { 0.25881905f, -0.96592583f }, + { 0.50000000f, -0.86602540f }, + { 0.70710678f, -0.70710678f }, + { 0.86602540f, -0.50000000f }, + { 0.96592583f, -0.25881905f }, + { 1.00000000f, 0.00000000f }, + { 0.96592583f, 0.25881905f }, + { 0.86602540f, 0.50000000f }, + { 0.70710678f, 0.70710678f }, + { 0.50000000f, 0.86602540f }, + { 0.25881905f, 0.96592583f }, + { 0.00000000f, 1.00000000f }, + { -0.25881905f, 0.96592583f }, + { -0.50000000f, 0.86602540f }, + { -0.70710678f, 0.70710678f }, + { -0.86602540f, 0.50000000f }, + { -0.96592583f, 0.25881905f }, + { -1.00000000f, 0.00000000f } +}; + +/* Move this to perceptual model ? */ +const int32_t c_aiBandwidths48[MAX_BANDS_48] = +{ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 4, + 6, + 6, + 7, + 10, +}; + + +const float c_afScaleFactor[ALLOC_TABLE_SIZE] = { + 0.0f, + 0.353553390593f, + 0.420448207627f, + 0.500000000000f, + 0.594603557501f, + 0.707106781187f, + 0.840896415254f, + 1.000000000000f, + 1.189207115003f, + 1.414213562373f, + 1.681792830507f, + 2.000000000000f, + 2.378414230005f, + 2.828427124746f, + 3.363585661015f, + 4.0f, + 4.756828460011f, + 5.656854249492f, + 6.727171322030f, + 8.0f, + 9.513656920022f, + 11.31370849898f, + 13.45434264406f, + 16.00000000000f, + 19.02731384004f, + 22.62741699797f, + 26.90868528812f, + 32.000000000000000f, + 38.054627680087073f, + 45.254833995939038f, + 53.817370576237735f, + 64.000000000000000f, +}; + +const float c_afInvScaleFactor[ALLOC_TABLE_SIZE] = { + 0.0f, + 2.367513562373095f, + 2.046407115002721f, + 1.775900000000000f, + 1.536446415253715f, + 1.323056781186548f, + 1.132903557501360f, + 0.965800000000000f, + 0.821348207626857f, + 0.695103390593274f, + 0.587801778750680f, + 0.495800000000000f, + 0.418124103813429f, + 0.352176695296637f, + 0.296200889375340f, + 0.249400000000000f, + 0.209812051906714f, + 0.176538347648318f, + 0.148525444687670f, + 0.124900000000000f, + 0.105056025953357f, + 0.088388347648318f, + 0.074325444687670f, + 0.062500000000000f, + 0.052556025953357f, + 0.044194173824159f, + 0.037162722343835f, + 0.031250000000000f, + 0.026278012976679f, + 0.022097086912080f, + 0.018581361171918f, + 0.015625000000000f, +}; + +const float c_afRMSEnvReconstructTable[ENV_RECONSTRUCT_TABLE_SIZE] = { + 2.32830644e-10f, + 3.29272254e-10f, + 4.65661287e-10f, + 6.58544508e-10f, + 9.31322575e-10f, + 1.31708902e-09f, + 1.86264515e-09f, + 2.63417803e-09f, + 3.72529030e-09f, + 5.26835606e-09f, + 7.45058060e-09f, + 1.05367121e-08f, + 1.49011612e-08f, + 2.10734243e-08f, + 2.98023224e-08f, + 4.21468485e-08f, + 5.96046448e-08f, + 8.42936970e-08f, + 1.19209290e-07f, + 1.68587394e-07f, + 2.38418579e-07f, + 3.37174788e-07f, + 4.76837158e-07f, + 6.74349576e-07f, + 9.53674316e-07f, + 1.34869915e-06f, + 1.90734863e-06f, + 2.69739830e-06f, + 3.81469727e-06f, + 5.39479661e-06f, + 7.62939453e-06f, + 1.07895932e-05f, + 1.52587891e-05f, + 2.15791864e-05f, + 3.05175781e-05f, + 4.31583729e-05f, + 6.10351562e-05f, + 8.63167458e-05f, + 1.22070312e-04f, + 1.72633492e-04f, + 2.44140625e-04f, + 3.45266983e-04f, + 4.88281250e-04f, + 6.90533966e-04f, + 9.76562500e-04f, + 1.38106793e-03f, + 1.95312500e-03f, + 2.76213586e-03f, + 3.90625000e-03f, + 5.52427173e-03f, + 7.81250000e-03f, + 1.10485435e-02f, + 1.56250000e-02f, + 2.20970869e-02f, + 3.12500000e-02f, + 4.41941738e-02f, + 6.25000000e-02f, + 8.83883476e-02f, + 1.25000000e-01f, + 1.76776695e-01f, + 2.50000000e-01f, + 3.53553391e-01f, + 5.00000000e-01f, + 7.07106781e-01f, + 1.00000000e+00f, + 1.41421356e+00f, + 2.00000000e+00f, + 2.82842712e+00f, + 4.00000000e+00f, + 5.65685425e+00f, + 8.00000000e+00f, + 1.13137085e+01f, + 1.60000000e+01f, + 2.26274170e+01f, + 3.20000000e+01f, + 4.52548340e+01f, + 6.40000000e+01f, + 9.05096680e+01f, + 1.28000000e+02f, + 1.81019336e+02f, + 2.56000000e+02f, + 3.62038672e+02f, + 5.12000000e+02f, + 7.24077344e+02f, + 1.02400000e+03f, + 1.44815469e+03f, + 2.04800000e+03f, + 2.89630938e+03f, + 4.09600000e+03f, + 5.79261875e+03f, + 8.19200000e+03f, + 1.15852375e+04f, + 1.63840000e+04f, + 2.31704750e+04f, + 3.27680000e+04f, + 4.63409500e+04f, + 6.55360000e+04f, + 9.26819000e+04f, + 1.31072000e+05f, + 1.85363800e+05f, + 2.62144000e+05f, + 3.70727600e+05f, + 5.24288000e+05f, + 7.41455200e+05f, + 1.04857600e+06f, + 1.48291040e+06f, + 2.09715200e+06f, + 2.96582080e+06f, + 4.19430400e+06f, + 5.93164160e+06f, + 8.38860800e+06f, + 1.18632832e+07f, + 1.67772160e+07f, + 2.37265664e+07f, + 3.35544320e+07f, + 4.74531328e+07f, + 6.71088640e+07f, + 9.49062656e+07f, + 1.34217728e+08f, + 1.89812531e+08f, + 2.68435456e+08f, + 3.79625062e+08f, + 5.36870912e+08f, + 7.59250125e+08f, + 1.07374182e+09f, + 1.51850025e+09f, + 2.14748365e+09f, + 3.03700050e+09f, + 4.29496730e+09f, +}; + +const int32_t c_aiQuantMaxValues[ALLOC_TABLE_SIZE] = { + 0, + 3, + 3, + 4, + 5, + 5, + 6, + 7, + 8, + 9, + 12, + 13, + 16, + 17, + 19, + 23, + 26, + 26, + 27, + 28, + 31, + 36, + 38, + 45, + 54, + 64, + 76, + 90, + 108, + 128, + 152, + 180, +}; + +const int32_t c_aiHuffmanDim[ALLOC_TABLE_SIZE] = { + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, +}; + +const int32_t c_aiHuffmanMod[ALLOC_TABLE_SIZE] = { + 0, + 4, + 4, + 5, + 6, + 6, + 7, + 8, + 9, + 10, + 13, + 14, + 17, + 18, + 20, + 24, + 27, + 27, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, +}; + +const int32_t c_aiHuffmanSize[ALLOC_TABLE_SIZE] = { + 1, + 16, + 16, + 25, + 36, + 36, + 49, + 64, + 81, + 100, + 169, + 196, + 289, + 324, + 400, + 576, + 729, + 729, + 28, + 29, + 32, + 37, + 39, + 46, + 55, + 65, + 77, + 91, + 109, + 129, + 153, + 181, +}; + +const uint32_t c_aaiRMSEnvHuffEnc[64][2] = { + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0012, 0x000b }, + { 0x000d, 0x0002 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0007, 0x0004 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0005, 0x0003 }, + { 0x0004, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0003 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, +}; + +const uint32_t c_aaiRMSEnvHuffDec[13][HUFF_DEC_TABLE_SIZE] = { + { + 0x0002ffff, + 0x0001ffff, + 0x0000001d, + 0x00000022, + 0x0001001e, + 0x0001001e, + 0x00010021, + 0x00010021, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0006ffff, + 0x0007ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x00000017, + 0x00000018, + 0x00000025, + 0x00010019, + 0x00010019, + 0x00010024, + 0x00010024, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + }, + { + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x0009ffff, + 0x0008ffff, + 0x0000002c, + 0x0000002d, + 0x00010010, + 0x00010010, + 0x0001002b, + 0x0001002b, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x000bffff, + 0x000cffff, + 0x000affff, + 0x00000031, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + }, + { + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x00000000, + 0x00000001, + 0x00000002, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + }, + { + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + }, +}; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc1[16][2] = +#else +const uint16_t c_aauiLCLDHuffEnc1[16][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0005, 0x0001 }, + { 0x000b, 0x0000 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec1[3][16] = { + { + 0x0001ffff, + 0x00000005, + 0x00010001, + 0x00010001, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x00000009, + 0x00010006, + 0x00010006, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00010003, + 0x00010003, + 0x00010007, + 0x00010007, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc2[16][2] = +#else +const uint16_t c_aauiLCLDHuffEnc2[16][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0005, 0x0001 }, + { 0x000c, 0x0000 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000b, 0x0003 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec2[3][16] = { + { + 0x0001ffff, + 0x00000005, + 0x00010001, + 0x00010001, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x00000009, + 0x00010006, + 0x00010006, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00000003, + 0x00000007, + 0x0000000b, + 0x0000000c, + 0x0000000d, + 0x0000000e, + 0x0001000f, + 0x0001000f, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc3[25][2] = +#else +const uint16_t c_aauiLCLDHuffEnc3[25][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000d, 0x0000 }, + { 0x000d, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x0009, 0x0001 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec3[10][16] = { + { + 0x0001ffff, + 0x00000006, + 0x00010001, + 0x00010001, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x0000000c, + 0x00010007, + 0x00010007, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x00000010, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + }, + { + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, +}; +#endif + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc4[36][2] = +#else +const uint16_t c_aauiLCLDHuffEnc4[36][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0010, 0x0000 }, + { 0x0010, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000e, 0x0006 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0010, 0x0008 }, + { 0x0010, 0x0009 }, + { 0x0010, 0x000a }, + { 0x0010, 0x000b }, + { 0x0010, 0x000c }, + { 0x0010, 0x000d }, + { 0x0010, 0x000e }, + { 0x0010, 0x000f }, + { 0x0010, 0x0010 }, + { 0x0010, 0x0011 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec4[5][16] = { + { + 0x0001ffff, + 0x00000007, + 0x00010001, + 0x00010001, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x0000000e, + 0x00010008, + 0x00010008, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + }, + { + 0x0004ffff, + 0x0003ffff, + 0x00010003, + 0x00010003, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x0000001f, + 0x00000020, + 0x00010021, + 0x00010021, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + }, + { + 0x00000004, + 0x00000005, + 0x0000000a, + 0x0000000b, + 0x00000010, + 0x00000011, + 0x00000015, + 0x00000016, + 0x00000017, + 0x00000018, + 0x00000019, + 0x0000001a, + 0x0000001b, + 0x0000001c, + 0x0000001d, + 0x0000001e, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc5[36][2] = +#else +const uint16_t c_aauiLCLDHuffEnc5[36][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000f, 0x0003 }, + { 0x0012, 0x0000 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0011, 0x0008 }, + { 0x0012, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000d, 0x0001 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0011, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0011, 0x000b }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec5[10][16] = { + { + 0x0001ffff, + 0x00000007, + 0x00010001, + 0x00010001, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x0000000e, + 0x00010008, + 0x00010008, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + }, + { + 0x0003ffff, + 0x0000000f, + 0x00010009, + 0x00010009, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x0004ffff, + 0x0005ffff, + 0x00010004, + 0x00010004, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, + { + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + }, + { + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + }, + { + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc6[49][2] = +#else +const uint16_t c_aauiLCLDHuffEnc6[49][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x0010, 0x0003 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x0010, 0x0004 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x0012, 0x0007 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0011, 0x0004 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0010, 0x0005 }, + { 0x000f, 0x0003 }, + { 0x0011, 0x0005 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0013, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec6[7][16] = { + { + 0x0001ffff, + 0x00000008, + 0x00010001, + 0x00010001, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x00000010, + 0x00010009, + 0x00010009, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + }, + { + 0x0003ffff, + 0x00000017, + 0x00010016, + 0x00010016, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x0004ffff, + 0x00000004, + 0x0000000b, + 0x0000001c, + 0x0001001d, + 0x0001001d, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x00000027, + 0x00000028, + 0x00000029, + 0x0000002a, + 0x0000002b, + 0x0000002c, + 0x0000002d, + 0x0000002e, + 0x0000002f, + 0x00000030, + 0x00010024, + 0x00010024, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x00000005, + 0x00000006, + 0x0000000c, + 0x0000000d, + 0x00000013, + 0x00000014, + 0x00000019, + 0x0000001a, + 0x0000001b, + 0x0000001f, + 0x00000020, + 0x00000021, + 0x00000022, + 0x00000023, + 0x00000025, + 0x00000026, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc7[64][2] = +#else +const uint16_t c_aauiLCLDHuffEnc7[64][2] = +#endif + { + { 0x0002, 0x0001 }, + { 0x0002, 0x0002 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x0015, 0x0000 }, + { 0x0015, 0x0001 }, + { 0x0015, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0014, 0x0011 }, + { 0x0015, 0x0003 }, + { 0x0015, 0x0004 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0015, 0x0005 }, + { 0x0015, 0x0006 }, + { 0x0015, 0x0007 }, + { 0x000a, 0x0001 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0001 }, + { 0x000f, 0x0004 }, + { 0x0012, 0x0006 }, + { 0x0015, 0x0008 }, + { 0x0015, 0x0009 }, + { 0x0015, 0x000a }, + { 0x000f, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x0012, 0x0007 }, + { 0x0014, 0x0012 }, + { 0x0015, 0x000b }, + { 0x0015, 0x000c }, + { 0x0015, 0x000d }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0013, 0x000b }, + { 0x0014, 0x0015 }, + { 0x0015, 0x000e }, + { 0x0015, 0x000f }, + { 0x0015, 0x0010 }, + { 0x0015, 0x0011 }, + { 0x0015, 0x0012 }, + { 0x0015, 0x0013 }, + { 0x0015, 0x0014 }, + { 0x0015, 0x0015 }, + { 0x0015, 0x0016 }, + { 0x0015, 0x0017 }, + { 0x0015, 0x0018 }, + { 0x0015, 0x0019 }, + { 0x0015, 0x001a }, + { 0x0015, 0x001b }, + { 0x0015, 0x001c }, + { 0x0015, 0x001d }, + { 0x0015, 0x001e }, + { 0x0015, 0x001f }, + { 0x0015, 0x0020 }, + { 0x0015, 0x0021 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec7[25][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00010009, + 0x00010009, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + }, + { + 0x0003ffff, + 0x0004ffff, + 0x00010012, + 0x00010012, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x0005ffff, + 0x0000001a, + 0x00010013, + 0x00010013, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + }, + { + 0x0007ffff, + 0x0006ffff, + 0x00000014, + 0x00000022, + 0x00010004, + 0x00010004, + 0x0001000c, + 0x0001000c, + 0x0001001b, + 0x0001001b, + 0x00010020, + 0x00010020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + }, + { + 0x0018ffff, + 0x0000000d, + 0x00000024, + 0x00000028, + 0x00000029, + 0x0000002b, + 0x0001002a, + 0x0001002a, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + }, + { + 0x000effff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x0008ffff, + 0x0009ffff, + 0x000dffff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + }, + { + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + }, + { + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + }, + { + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + }, + { + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, + { + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + }, + { + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + }, + { + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + }, + { + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + }, + { + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc8[81][2] = +#else +const uint16_t c_aauiLCLDHuffEnc8[81][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x0014, 0x0008 }, + { 0x0017, 0x0000 }, + { 0x0017, 0x0001 }, + { 0x0017, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000f, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0015, 0x000d }, + { 0x0017, 0x0003 }, + { 0x0017, 0x0004 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0013, 0x0005 }, + { 0x0017, 0x0005 }, + { 0x0017, 0x0006 }, + { 0x0017, 0x0007 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000b, 0x0001 }, + { 0x000f, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0016, 0x0015 }, + { 0x0017, 0x0008 }, + { 0x0017, 0x0009 }, + { 0x0017, 0x000a }, + { 0x000f, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x0012, 0x0006 }, + { 0x0014, 0x0009 }, + { 0x0017, 0x000b }, + { 0x0017, 0x000c }, + { 0x0017, 0x000d }, + { 0x0017, 0x000e }, + { 0x0013, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0013, 0x0007 }, + { 0x0015, 0x000e }, + { 0x0017, 0x000f }, + { 0x0017, 0x0010 }, + { 0x0017, 0x0011 }, + { 0x0017, 0x0012 }, + { 0x0017, 0x0013 }, + { 0x0016, 0x0016 }, + { 0x0016, 0x0017 }, + { 0x0015, 0x000f }, + { 0x0016, 0x0018 }, + { 0x0017, 0x0014 }, + { 0x0017, 0x0015 }, + { 0x0017, 0x0016 }, + { 0x0017, 0x0017 }, + { 0x0017, 0x0018 }, + { 0x0017, 0x0019 }, + { 0x0017, 0x001a }, + { 0x0017, 0x001b }, + { 0x0017, 0x001c }, + { 0x0017, 0x001d }, + { 0x0017, 0x001e }, + { 0x0017, 0x001f }, + { 0x0017, 0x0020 }, + { 0x0017, 0x0021 }, + { 0x0017, 0x0022 }, + { 0x0017, 0x0023 }, + { 0x0017, 0x0024 }, + { 0x0017, 0x0025 }, + { 0x0017, 0x0026 }, + { 0x0017, 0x0027 }, + { 0x0017, 0x0028 }, + { 0x0017, 0x0029 }, + { 0x0016, 0x0019 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec8[16][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00010001, + 0x00010001, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003ffff, + 0x0004ffff, + 0x00010014, + 0x00010014, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + }, + { + 0x0005ffff, + 0x00000015, + 0x0001001d, + 0x0001001d, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0007ffff, + 0x0006ffff, + 0x00000016, + 0x00000026, + 0x00010004, + 0x00010004, + 0x0001000d, + 0x0001000d, + 0x0001001e, + 0x0001001e, + 0x00010024, + 0x00010024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + }, + { + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + }, + { + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x00000005, + 0x00000028, + 0x00010017, + 0x00010017, + 0x0001002d, + 0x0001002d, + 0x0001002f, + 0x0001002f, + }, + { + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020050, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + }, + { + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + }, + { + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + }, + { + 0x00010021, + 0x00010021, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x00010031, + 0x00010031, + }, + { + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + }, + { + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + }, + { + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc9[100][2] = +#else +const uint16_t c_aauiLCLDHuffEnc9[100][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x0011, 0x0004 }, + { 0x0014, 0x000a }, + { 0x0017, 0x0000 }, + { 0x0017, 0x0001 }, + { 0x0017, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0013, 0x0007 }, + { 0x0016, 0x0018 }, + { 0x0017, 0x0003 }, + { 0x0017, 0x0004 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000e, 0x0002 }, + { 0x0011, 0x0005 }, + { 0x0014, 0x000b }, + { 0x0016, 0x0019 }, + { 0x0017, 0x0005 }, + { 0x0017, 0x0006 }, + { 0x0009, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0015, 0x000f }, + { 0x0017, 0x0007 }, + { 0x0017, 0x0008 }, + { 0x0017, 0x0009 }, + { 0x000d, 0x0005 }, + { 0x000c, 0x0003 }, + { 0x000e, 0x0003 }, + { 0x0010, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0014, 0x000c }, + { 0x0017, 0x000a }, + { 0x0016, 0x001a }, + { 0x0017, 0x000b }, + { 0x0017, 0x000c }, + { 0x0011, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0011, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0015, 0x0010 }, + { 0x0017, 0x000d }, + { 0x0017, 0x000e }, + { 0x0017, 0x000f }, + { 0x0017, 0x0010 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0014, 0x000d }, + { 0x0015, 0x0011 }, + { 0x0017, 0x0011 }, + { 0x0016, 0x001b }, + { 0x0017, 0x0012 }, + { 0x0017, 0x0013 }, + { 0x0017, 0x0014 }, + { 0x0017, 0x0015 }, + { 0x0017, 0x0016 }, + { 0x0015, 0x0012 }, + { 0x0015, 0x0013 }, + { 0x0017, 0x0017 }, + { 0x0016, 0x001c }, + { 0x0017, 0x0018 }, + { 0x0017, 0x0019 }, + { 0x0017, 0x001a }, + { 0x0017, 0x001b }, + { 0x0017, 0x001c }, + { 0x0017, 0x001d }, + { 0x0017, 0x001e }, + { 0x0017, 0x001f }, + { 0x0017, 0x0020 }, + { 0x0017, 0x0021 }, + { 0x0017, 0x0022 }, + { 0x0017, 0x0023 }, + { 0x0017, 0x0024 }, + { 0x0017, 0x0025 }, + { 0x0017, 0x0026 }, + { 0x0017, 0x0027 }, + { 0x0017, 0x0028 }, + { 0x0017, 0x0029 }, + { 0x0017, 0x002a }, + { 0x0017, 0x002b }, + { 0x0017, 0x002c }, + { 0x0017, 0x002d }, + { 0x0017, 0x002e }, + { 0x0017, 0x002f }, + { 0x0016, 0x001d }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec9[22][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00010001, + 0x00010001, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003ffff, + 0x0004ffff, + 0x00000016, + 0x0000001f, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x00000029, + 0x00010017, + 0x00010017, + 0x00010020, + 0x00010020, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x000bffff, + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x0000000f, + 0x00000022, + 0x0000002b, + 0x00000033, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + }, + { + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + }, + { + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + }, + { + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + }, + { + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x000fffff, + 0x000dffff, + 0x000cffff, + 0x000effff, + 0x00000006, + 0x0000001a, + 0x0000002d, + 0x0000003e, + 0x00010010, + 0x00010010, + }, + { + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + }, + { + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + }, + { + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + }, + { + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + 0x00010025, + 0x00010025, + }, + { + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x0001002e, + 0x0001002e, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x0001003a, + 0x0001003a, + }, + { + 0x0001003b, + 0x0001003b, + 0x00010040, + 0x00010040, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010049, + 0x00010049, + }, + { + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + 0x00010052, + 0x00010052, + }, + { + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x0001005a, + 0x0001005a, + }, + { + 0x0001005b, + 0x0001005b, + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc10[169][2] = +#else +const uint16_t c_aauiLCLDHuffEnc10[169][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0004, 0x0002 }, + { 0x0005, 0x0002 }, + { 0x0007, 0x0002 }, + { 0x000a, 0x0002 }, + { 0x000e, 0x0004 }, + { 0x0011, 0x0007 }, + { 0x0013, 0x0012 }, + { 0x0016, 0x0000 }, + { 0x0016, 0x0001 }, + { 0x0016, 0x0002 }, + { 0x0016, 0x0003 }, + { 0x0016, 0x0004 }, + { 0x0004, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0007, 0x0003 }, + { 0x000a, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0013 }, + { 0x0015, 0x0035 }, + { 0x0016, 0x0005 }, + { 0x0016, 0x0006 }, + { 0x0016, 0x0007 }, + { 0x0016, 0x0008 }, + { 0x0005, 0x0003 }, + { 0x0004, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000e, 0x0005 }, + { 0x0010, 0x0008 }, + { 0x0013, 0x0014 }, + { 0x0014, 0x001d }, + { 0x0016, 0x0009 }, + { 0x0016, 0x000a }, + { 0x0016, 0x000b }, + { 0x0016, 0x000c }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000f, 0x0005 }, + { 0x0011, 0x0008 }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0016, 0x000d }, + { 0x0016, 0x000e }, + { 0x0016, 0x000f }, + { 0x0016, 0x0010 }, + { 0x000a, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000d, 0x0006 }, + { 0x000f, 0x0006 }, + { 0x0011, 0x0009 }, + { 0x0013, 0x0015 }, + { 0x0014, 0x0020 }, + { 0x0016, 0x0011 }, + { 0x0016, 0x0012 }, + { 0x0016, 0x0013 }, + { 0x0016, 0x0014 }, + { 0x0016, 0x0015 }, + { 0x000e, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0007 }, + { 0x000f, 0x0007 }, + { 0x0011, 0x000a }, + { 0x0012, 0x000c }, + { 0x0016, 0x0016 }, + { 0x0016, 0x0017 }, + { 0x0016, 0x0018 }, + { 0x0016, 0x0019 }, + { 0x0016, 0x001a }, + { 0x0016, 0x001b }, + { 0x0016, 0x001c }, + { 0x0011, 0x000b }, + { 0x0010, 0x0009 }, + { 0x0011, 0x000c }, + { 0x0011, 0x000d }, + { 0x0013, 0x0016 }, + { 0x0016, 0x001d }, + { 0x0016, 0x001e }, + { 0x0016, 0x001f }, + { 0x0016, 0x0020 }, + { 0x0016, 0x0021 }, + { 0x0016, 0x0022 }, + { 0x0016, 0x0023 }, + { 0x0016, 0x0024 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0012, 0x000d }, + { 0x0013, 0x0017 }, + { 0x0016, 0x0025 }, + { 0x0016, 0x0026 }, + { 0x0016, 0x0027 }, + { 0x0016, 0x0028 }, + { 0x0016, 0x0029 }, + { 0x0016, 0x002a }, + { 0x0016, 0x002b }, + { 0x0016, 0x002c }, + { 0x0016, 0x002d }, + { 0x0015, 0x0036 }, + { 0x0015, 0x0037 }, + { 0x0014, 0x0023 }, + { 0x0015, 0x0038 }, + { 0x0016, 0x002e }, + { 0x0016, 0x002f }, + { 0x0016, 0x0030 }, + { 0x0016, 0x0031 }, + { 0x0016, 0x0032 }, + { 0x0016, 0x0033 }, + { 0x0016, 0x0034 }, + { 0x0016, 0x0035 }, + { 0x0016, 0x0036 }, + { 0x0016, 0x0037 }, + { 0x0016, 0x0038 }, + { 0x0016, 0x0039 }, + { 0x0016, 0x003a }, + { 0x0016, 0x003b }, + { 0x0016, 0x003c }, + { 0x0016, 0x003d }, + { 0x0016, 0x003e }, + { 0x0016, 0x003f }, + { 0x0016, 0x0040 }, + { 0x0016, 0x0041 }, + { 0x0016, 0x0042 }, + { 0x0016, 0x0043 }, + { 0x0016, 0x0044 }, + { 0x0016, 0x0045 }, + { 0x0016, 0x0046 }, + { 0x0016, 0x0047 }, + { 0x0016, 0x0048 }, + { 0x0016, 0x0049 }, + { 0x0016, 0x004a }, + { 0x0016, 0x004b }, + { 0x0016, 0x004c }, + { 0x0016, 0x004d }, + { 0x0016, 0x004e }, + { 0x0016, 0x004f }, + { 0x0016, 0x0050 }, + { 0x0016, 0x0051 }, + { 0x0016, 0x0052 }, + { 0x0016, 0x0053 }, + { 0x0016, 0x0054 }, + { 0x0016, 0x0055 }, + { 0x0016, 0x0056 }, + { 0x0016, 0x0057 }, + { 0x0016, 0x0058 }, + { 0x0016, 0x0059 }, + { 0x0016, 0x005a }, + { 0x0016, 0x005b }, + { 0x0016, 0x005c }, + { 0x0016, 0x005d }, + { 0x0016, 0x005e }, + { 0x0016, 0x005f }, + { 0x0016, 0x0060 }, + { 0x0016, 0x0061 }, + { 0x0016, 0x0062 }, + { 0x0016, 0x0063 }, + { 0x0016, 0x0064 }, + { 0x0016, 0x0065 }, + { 0x0016, 0x0066 }, + { 0x0016, 0x0067 }, + { 0x0016, 0x0068 }, + { 0x0016, 0x0069 }, + { 0x0015, 0x0039 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec10[45][16] = { + { + 0x0002ffff, + 0x0001ffff, + 0x00000001, + 0x0000000d, + 0x0000000f, + 0x0000001b, + 0x0001000e, + 0x0001000e, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + }, + { + 0x0004ffff, + 0x0003ffff, + 0x0000001d, + 0x00000029, + 0x00010003, + 0x00010003, + 0x00010010, + 0x00010010, + 0x00010027, + 0x00010027, + 0x00010028, + 0x00010028, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, + { + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x0008ffff, + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x0001001e, + 0x0001001e, + 0x00010036, + 0x00010036, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + }, + { + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020043, + 0x00020043, + 0x00020043, + 0x00020043, + }, + { + 0x0012ffff, + 0x000effff, + 0x000dffff, + 0x000affff, + 0x0009ffff, + 0x000bffff, + 0x000cffff, + 0x00000013, + 0x00000020, + 0x0000004f, + 0x0001002c, + 0x0001002c, + 0x00010038, + 0x00010038, + 0x00010044, + 0x00010044, + }, + { + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + }, + { + 0x00020046, + 0x00020046, + 0x00020046, + 0x00020046, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + }, + { + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + }, + { + 0x0000003b, + 0x0000005b, + 0x0000005c, + 0x0000006a, + 0x00010007, + 0x00010007, + 0x00010014, + 0x00010014, + 0x00010021, + 0x00010021, + 0x0001003a, + 0x0001003a, + 0x00010052, + 0x00010052, + 0x0001005e, + 0x0001005e, + }, + { + 0x0023ffff, + 0x0024ffff, + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x00000022, + 0x0000002e, + 0x0000002f, + }, + { + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + }, + { + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + }, + { + 0x0014ffff, + 0x0017ffff, + 0x0015ffff, + 0x0016ffff, + 0x001cffff, + 0x0013ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + }, + { + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + }, + { + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + }, + { + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020032, + 0x00020032, + 0x00020032, + 0x00020032, + }, + { + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + }, + { + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004c, + }, + { + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020054, + 0x00020054, + 0x00020054, + 0x00020054, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020055, + }, + { + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + }, + { + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + }, + { + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + }, + { + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + }, + { + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020067, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006d, + }, + { + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020071, + }, + { + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + }, + { + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + }, + { + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007d, + }, + { + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020081, + }, + { + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020085, + }, + { + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020089, + 0x00020089, + 0x00020089, + 0x00020089, + }, + { + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008d, + 0x0002008d, + 0x0002008d, + 0x0002008d, + }, + { + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020091, + }, + { + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020095, + 0x00020095, + 0x00020095, + 0x00020095, + }, + { + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020097, + 0x00020097, + 0x00020097, + 0x00020097, + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020099, + 0x00020099, + 0x00020099, + 0x00020099, + }, + { + 0x0002009a, + 0x0002009a, + 0x0002009a, + 0x0002009a, + 0x0002009b, + 0x0002009b, + 0x0002009b, + 0x0002009b, + 0x0002009c, + 0x0002009c, + 0x0002009c, + 0x0002009c, + 0x0002009d, + 0x0002009d, + 0x0002009d, + 0x0002009d, + }, + { + 0x0002009e, + 0x0002009e, + 0x0002009e, + 0x0002009e, + 0x0002009f, + 0x0002009f, + 0x0002009f, + 0x0002009f, + 0x000200a0, + 0x000200a0, + 0x000200a0, + 0x000200a0, + 0x000200a1, + 0x000200a1, + 0x000200a1, + 0x000200a1, + }, + { + 0x000200a2, + 0x000200a2, + 0x000200a2, + 0x000200a2, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc11[196][2] = +#else +const uint16_t c_aauiLCLDHuffEnc11[196][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0012, 0x000d }, + { 0x0014, 0x001f }, + { 0x0016, 0x0000 }, + { 0x0016, 0x0001 }, + { 0x0016, 0x0002 }, + { 0x0016, 0x0003 }, + { 0x0016, 0x0004 }, + { 0x0004, 0x0004 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x000b, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x0010, 0x0007 }, + { 0x0012, 0x000e }, + { 0x0014, 0x0020 }, + { 0x0016, 0x0005 }, + { 0x0016, 0x0006 }, + { 0x0016, 0x0007 }, + { 0x0016, 0x0008 }, + { 0x0005, 0x0005 }, + { 0x0004, 0x0005 }, + { 0x0006, 0x0004 }, + { 0x0007, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x0011, 0x000a }, + { 0x0012, 0x000f }, + { 0x0015, 0x003b }, + { 0x0016, 0x0009 }, + { 0x0016, 0x000a }, + { 0x0016, 0x000b }, + { 0x0016, 0x000c }, + { 0x0007, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0005 }, + { 0x000b, 0x0005 }, + { 0x000d, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x0012, 0x0010 }, + { 0x0014, 0x0021 }, + { 0x0016, 0x000d }, + { 0x0016, 0x000e }, + { 0x0016, 0x000f }, + { 0x0016, 0x0010 }, + { 0x0016, 0x0011 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000d, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0011, 0x000b }, + { 0x0013, 0x0017 }, + { 0x0014, 0x0022 }, + { 0x0016, 0x0012 }, + { 0x0016, 0x0013 }, + { 0x0016, 0x0014 }, + { 0x0016, 0x0015 }, + { 0x0016, 0x0016 }, + { 0x000c, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0008 }, + { 0x0012, 0x0011 }, + { 0x0014, 0x0023 }, + { 0x0015, 0x003c }, + { 0x0016, 0x0017 }, + { 0x0016, 0x0018 }, + { 0x0016, 0x0019 }, + { 0x0016, 0x001a }, + { 0x0016, 0x001b }, + { 0x000f, 0x0008 }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0009 }, + { 0x0011, 0x000c }, + { 0x0013, 0x0018 }, + { 0x0014, 0x0024 }, + { 0x0016, 0x001c }, + { 0x0016, 0x001d }, + { 0x0016, 0x001e }, + { 0x0016, 0x001f }, + { 0x0016, 0x0020 }, + { 0x0016, 0x0021 }, + { 0x0016, 0x0022 }, + { 0x0011, 0x000d }, + { 0x0010, 0x0009 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + { 0x0014, 0x0025 }, + { 0x0015, 0x003d }, + { 0x0014, 0x0026 }, + { 0x0016, 0x0023 }, + { 0x0016, 0x0024 }, + { 0x0016, 0x0025 }, + { 0x0016, 0x0026 }, + { 0x0016, 0x0027 }, + { 0x0016, 0x0028 }, + { 0x0016, 0x0029 }, + { 0x0014, 0x0027 }, + { 0x0013, 0x0019 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0016, 0x002a }, + { 0x0016, 0x002b }, + { 0x0016, 0x002c }, + { 0x0016, 0x002d }, + { 0x0016, 0x002e }, + { 0x0016, 0x002f }, + { 0x0016, 0x0030 }, + { 0x0016, 0x0031 }, + { 0x0016, 0x0032 }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0016, 0x0033 }, + { 0x0016, 0x0034 }, + { 0x0016, 0x0035 }, + { 0x0016, 0x0036 }, + { 0x0016, 0x0037 }, + { 0x0016, 0x0038 }, + { 0x0016, 0x0039 }, + { 0x0016, 0x003a }, + { 0x0016, 0x003b }, + { 0x0016, 0x003c }, + { 0x0016, 0x003d }, + { 0x0016, 0x003e }, + { 0x0016, 0x003f }, + { 0x0016, 0x0040 }, + { 0x0016, 0x0041 }, + { 0x0016, 0x0042 }, + { 0x0016, 0x0043 }, + { 0x0016, 0x0044 }, + { 0x0016, 0x0045 }, + { 0x0016, 0x0046 }, + { 0x0016, 0x0047 }, + { 0x0016, 0x0048 }, + { 0x0016, 0x0049 }, + { 0x0016, 0x004a }, + { 0x0016, 0x004b }, + { 0x0016, 0x004c }, + { 0x0016, 0x004d }, + { 0x0016, 0x004e }, + { 0x0016, 0x004f }, + { 0x0016, 0x0050 }, + { 0x0016, 0x0051 }, + { 0x0016, 0x0052 }, + { 0x0016, 0x0053 }, + { 0x0016, 0x0054 }, + { 0x0016, 0x0055 }, + { 0x0016, 0x0056 }, + { 0x0016, 0x0057 }, + { 0x0016, 0x0058 }, + { 0x0016, 0x0059 }, + { 0x0016, 0x005a }, + { 0x0016, 0x005b }, + { 0x0016, 0x005c }, + { 0x0016, 0x005d }, + { 0x0016, 0x005e }, + { 0x0016, 0x005f }, + { 0x0016, 0x0060 }, + { 0x0016, 0x0061 }, + { 0x0016, 0x0062 }, + { 0x0016, 0x0063 }, + { 0x0016, 0x0064 }, + { 0x0016, 0x0065 }, + { 0x0016, 0x0066 }, + { 0x0016, 0x0067 }, + { 0x0016, 0x0068 }, + { 0x0016, 0x0069 }, + { 0x0016, 0x006a }, + { 0x0016, 0x006b }, + { 0x0016, 0x006c }, + { 0x0016, 0x006d }, + { 0x0016, 0x006e }, + { 0x0016, 0x006f }, + { 0x0016, 0x0070 }, + { 0x0016, 0x0071 }, + { 0x0016, 0x0072 }, + { 0x0016, 0x0073 }, + { 0x0016, 0x0074 }, + { 0x0016, 0x0075 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec11[50][16] = { + { + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000001, + 0x0000000e, + 0x0000001d, + 0x0001000f, + 0x0001000f, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0007ffff, + 0x0005ffff, + 0x0004ffff, + 0x0006ffff, + 0x00010003, + 0x00010003, + 0x0001001f, + 0x0001001f, + 0x0001002a, + 0x0001002a, + 0x0001002c, + 0x0001002c, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + }, + { + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + }, + { + 0x000bffff, + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x00000005, + 0x00000021, + 0x00000046, + 0x00000048, + 0x00010013, + 0x00010013, + 0x0001002e, + 0x0001002e, + 0x0001003b, + 0x0001003b, + 0x00010047, + 0x00010047, + }, + { + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + }, + { + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + }, + { + 0x00010054, + 0x00010054, + 0x00010057, + 0x00010057, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + }, + { + 0x0014ffff, + 0x0011ffff, + 0x0010ffff, + 0x000effff, + 0x000fffff, + 0x000cffff, + 0x000dffff, + 0x00000015, + 0x0000004b, + 0x00000063, + 0x00010006, + 0x00010006, + 0x00010030, + 0x00010030, + 0x0001003d, + 0x0001003d, + }, + { + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, + { + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + }, + { + 0x00010059, + 0x00010059, + 0x00010071, + 0x00010071, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + }, + { + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + }, + { + 0x00000017, + 0x00000032, + 0x00000040, + 0x0000004d, + 0x0000005a, + 0x00000066, + 0x00000068, + 0x00000070, + 0x00000072, + 0x00000073, + 0x00000074, + 0x0000007e, + 0x0000007f, + 0x00000080, + 0x0001003f, + 0x0001003f, + }, + { + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0013ffff, + 0x0012ffff, + 0x00000008, + }, + { + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + }, + { + 0x000200c2, + 0x000200c2, + 0x000200c2, + 0x000200c2, + 0x000200c3, + 0x000200c3, + 0x000200c3, + 0x000200c3, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + }, + { + 0x001affff, + 0x0019ffff, + 0x0015ffff, + 0x0018ffff, + 0x001dffff, + 0x0016ffff, + 0x0017ffff, + 0x001bffff, + 0x001cffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + }, + { + 0x00020043, + 0x00020043, + 0x00020043, + 0x00020043, + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020045, + 0x00020045, + 0x00020045, + 0x00020045, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x0002004f, + }, + { + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + }, + { + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020035, + }, + { + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + }, + { + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005e, + }, + { + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020069, + 0x00020069, + 0x00020069, + 0x00020069, + }, + { + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020042, + }, + { + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006d, + }, + { + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + }, + { + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007a, + }, + { + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020081, + }, + { + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020085, + }, + { + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020089, + 0x00020089, + 0x00020089, + 0x00020089, + }, + { + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008d, + 0x0002008d, + 0x0002008d, + 0x0002008d, + }, + { + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020091, + }, + { + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020095, + 0x00020095, + 0x00020095, + 0x00020095, + }, + { + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020097, + 0x00020097, + 0x00020097, + 0x00020097, + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020099, + 0x00020099, + 0x00020099, + 0x00020099, + }, + { + 0x0002009a, + 0x0002009a, + 0x0002009a, + 0x0002009a, + 0x0002009b, + 0x0002009b, + 0x0002009b, + 0x0002009b, + 0x0002009c, + 0x0002009c, + 0x0002009c, + 0x0002009c, + 0x0002009d, + 0x0002009d, + 0x0002009d, + 0x0002009d, + }, + { + 0x0002009e, + 0x0002009e, + 0x0002009e, + 0x0002009e, + 0x0002009f, + 0x0002009f, + 0x0002009f, + 0x0002009f, + 0x000200a0, + 0x000200a0, + 0x000200a0, + 0x000200a0, + 0x000200a1, + 0x000200a1, + 0x000200a1, + 0x000200a1, + }, + { + 0x000200a2, + 0x000200a2, + 0x000200a2, + 0x000200a2, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + }, + { + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a9, + 0x000200a9, + 0x000200a9, + 0x000200a9, + }, + { + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200ad, + 0x000200ad, + 0x000200ad, + 0x000200ad, + }, + { + 0x000200ae, + 0x000200ae, + 0x000200ae, + 0x000200ae, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200b1, + 0x000200b1, + 0x000200b1, + 0x000200b1, + }, + { + 0x000200b2, + 0x000200b2, + 0x000200b2, + 0x000200b2, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b5, + 0x000200b5, + 0x000200b5, + 0x000200b5, + }, + { + 0x000200b6, + 0x000200b6, + 0x000200b6, + 0x000200b6, + 0x000200b7, + 0x000200b7, + 0x000200b7, + 0x000200b7, + 0x000200b8, + 0x000200b8, + 0x000200b8, + 0x000200b8, + 0x000200b9, + 0x000200b9, + 0x000200b9, + 0x000200b9, + }, + { + 0x000200ba, + 0x000200ba, + 0x000200ba, + 0x000200ba, + 0x000200bb, + 0x000200bb, + 0x000200bb, + 0x000200bb, + 0x000200bc, + 0x000200bc, + 0x000200bc, + 0x000200bc, + 0x000200bd, + 0x000200bd, + 0x000200bd, + 0x000200bd, + }, + { + 0x000200be, + 0x000200be, + 0x000200be, + 0x000200be, + 0x000200bf, + 0x000200bf, + 0x000200bf, + 0x000200bf, + 0x000200c0, + 0x000200c0, + 0x000200c0, + 0x000200c0, + 0x000200c1, + 0x000200c1, + 0x000200c1, + 0x000200c1, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc12[289][2] = +#else +const uint16_t c_aauiLCLDHuffEnc12[289][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0004, 0x0004 }, + { 0x0005, 0x0004 }, + { 0x0007, 0x0004 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0004 }, + { 0x000e, 0x0006 }, + { 0x0010, 0x0009 }, + { 0x0012, 0x0014 }, + { 0x0013, 0x001f }, + { 0x0016, 0x0000 }, + { 0x0016, 0x0001 }, + { 0x0016, 0x0002 }, + { 0x0016, 0x0003 }, + { 0x0016, 0x0004 }, + { 0x0016, 0x0005 }, + { 0x0016, 0x0006 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000d, 0x0006 }, + { 0x000f, 0x0008 }, + { 0x0011, 0x000c }, + { 0x0013, 0x0020 }, + { 0x0016, 0x0007 }, + { 0x0015, 0x0063 }, + { 0x0016, 0x0008 }, + { 0x0016, 0x0009 }, + { 0x0016, 0x000a }, + { 0x0016, 0x000b }, + { 0x0016, 0x000c }, + { 0x0005, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000d, 0x0007 }, + { 0x0010, 0x000a }, + { 0x0012, 0x0015 }, + { 0x0015, 0x0064 }, + { 0x0016, 0x000d }, + { 0x0016, 0x000e }, + { 0x0016, 0x000f }, + { 0x0016, 0x0010 }, + { 0x0016, 0x0011 }, + { 0x0016, 0x0012 }, + { 0x0016, 0x0013 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0008, 0x0005 }, + { 0x000a, 0x0005 }, + { 0x000c, 0x0005 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x000b }, + { 0x0012, 0x0016 }, + { 0x0014, 0x0037 }, + { 0x0015, 0x0065 }, + { 0x0016, 0x0014 }, + { 0x0016, 0x0015 }, + { 0x0016, 0x0016 }, + { 0x0016, 0x0017 }, + { 0x0016, 0x0018 }, + { 0x0016, 0x0019 }, + { 0x0008, 0x0006 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0006 }, + { 0x000c, 0x0006 }, + { 0x000e, 0x0008 }, + { 0x0010, 0x000c }, + { 0x0011, 0x000d }, + { 0x0013, 0x0021 }, + { 0x0015, 0x0066 }, + { 0x0016, 0x001a }, + { 0x0016, 0x001b }, + { 0x0016, 0x001c }, + { 0x0016, 0x001d }, + { 0x0016, 0x001e }, + { 0x0016, 0x001f }, + { 0x0016, 0x0020 }, + { 0x000b, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0009 }, + { 0x0011, 0x000e }, + { 0x0013, 0x0022 }, + { 0x0015, 0x0067 }, + { 0x0015, 0x0068 }, + { 0x0016, 0x0021 }, + { 0x0016, 0x0022 }, + { 0x0016, 0x0023 }, + { 0x0016, 0x0024 }, + { 0x0016, 0x0025 }, + { 0x0016, 0x0026 }, + { 0x0016, 0x0027 }, + { 0x000e, 0x000a }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000e, 0x000b }, + { 0x000f, 0x000a }, + { 0x0011, 0x000f }, + { 0x0013, 0x0023 }, + { 0x0014, 0x0038 }, + { 0x0016, 0x0028 }, + { 0x0016, 0x0029 }, + { 0x0016, 0x002a }, + { 0x0016, 0x002b }, + { 0x0016, 0x002c }, + { 0x0016, 0x002d }, + { 0x0016, 0x002e }, + { 0x0016, 0x002f }, + { 0x0016, 0x0030 }, + { 0x0010, 0x000d }, + { 0x000f, 0x000b }, + { 0x0010, 0x000e }, + { 0x0010, 0x000f }, + { 0x0012, 0x0017 }, + { 0x0013, 0x0024 }, + { 0x0014, 0x0039 }, + { 0x0016, 0x0031 }, + { 0x0016, 0x0032 }, + { 0x0016, 0x0033 }, + { 0x0016, 0x0034 }, + { 0x0016, 0x0035 }, + { 0x0016, 0x0036 }, + { 0x0016, 0x0037 }, + { 0x0016, 0x0038 }, + { 0x0016, 0x0039 }, + { 0x0016, 0x003a }, + { 0x0013, 0x0025 }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0016, 0x003b }, + { 0x0016, 0x003c }, + { 0x0016, 0x003d }, + { 0x0016, 0x003e }, + { 0x0016, 0x003f }, + { 0x0016, 0x0040 }, + { 0x0016, 0x0041 }, + { 0x0016, 0x0042 }, + { 0x0016, 0x0043 }, + { 0x0016, 0x0044 }, + { 0x0015, 0x0069 }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0015, 0x006a }, + { 0x0015, 0x006b }, + { 0x0015, 0x006c }, + { 0x0016, 0x0045 }, + { 0x0016, 0x0046 }, + { 0x0016, 0x0047 }, + { 0x0016, 0x0048 }, + { 0x0016, 0x0049 }, + { 0x0016, 0x004a }, + { 0x0016, 0x004b }, + { 0x0016, 0x004c }, + { 0x0016, 0x004d }, + { 0x0016, 0x004e }, + { 0x0016, 0x004f }, + { 0x0016, 0x0050 }, + { 0x0016, 0x0051 }, + { 0x0015, 0x006d }, + { 0x0016, 0x0052 }, + { 0x0016, 0x0053 }, + { 0x0016, 0x0054 }, + { 0x0016, 0x0055 }, + { 0x0016, 0x0056 }, + { 0x0016, 0x0057 }, + { 0x0016, 0x0058 }, + { 0x0016, 0x0059 }, + { 0x0016, 0x005a }, + { 0x0016, 0x005b }, + { 0x0016, 0x005c }, + { 0x0016, 0x005d }, + { 0x0016, 0x005e }, + { 0x0016, 0x005f }, + { 0x0016, 0x0060 }, + { 0x0016, 0x0061 }, + { 0x0016, 0x0062 }, + { 0x0016, 0x0063 }, + { 0x0016, 0x0064 }, + { 0x0016, 0x0065 }, + { 0x0016, 0x0066 }, + { 0x0016, 0x0067 }, + { 0x0016, 0x0068 }, + { 0x0016, 0x0069 }, + { 0x0016, 0x006a }, + { 0x0016, 0x006b }, + { 0x0016, 0x006c }, + { 0x0016, 0x006d }, + { 0x0016, 0x006e }, + { 0x0016, 0x006f }, + { 0x0016, 0x0070 }, + { 0x0016, 0x0071 }, + { 0x0016, 0x0072 }, + { 0x0016, 0x0073 }, + { 0x0016, 0x0074 }, + { 0x0016, 0x0075 }, + { 0x0016, 0x0076 }, + { 0x0016, 0x0077 }, + { 0x0016, 0x0078 }, + { 0x0016, 0x0079 }, + { 0x0016, 0x007a }, + { 0x0016, 0x007b }, + { 0x0016, 0x007c }, + { 0x0016, 0x007d }, + { 0x0016, 0x007e }, + { 0x0016, 0x007f }, + { 0x0016, 0x0080 }, + { 0x0016, 0x0081 }, + { 0x0016, 0x0082 }, + { 0x0016, 0x0083 }, + { 0x0016, 0x0084 }, + { 0x0016, 0x0085 }, + { 0x0016, 0x0086 }, + { 0x0016, 0x0087 }, + { 0x0016, 0x0088 }, + { 0x0016, 0x0089 }, + { 0x0016, 0x008a }, + { 0x0016, 0x008b }, + { 0x0016, 0x008c }, + { 0x0016, 0x008d }, + { 0x0016, 0x008e }, + { 0x0016, 0x008f }, + { 0x0016, 0x0090 }, + { 0x0016, 0x0091 }, + { 0x0016, 0x0092 }, + { 0x0016, 0x0093 }, + { 0x0016, 0x0094 }, + { 0x0016, 0x0095 }, + { 0x0016, 0x0096 }, + { 0x0016, 0x0097 }, + { 0x0016, 0x0098 }, + { 0x0016, 0x0099 }, + { 0x0016, 0x009a }, + { 0x0016, 0x009b }, + { 0x0016, 0x009c }, + { 0x0016, 0x009d }, + { 0x0016, 0x009e }, + { 0x0016, 0x009f }, + { 0x0016, 0x00a0 }, + { 0x0016, 0x00a1 }, + { 0x0016, 0x00a2 }, + { 0x0016, 0x00a3 }, + { 0x0016, 0x00a4 }, + { 0x0016, 0x00a5 }, + { 0x0016, 0x00a6 }, + { 0x0016, 0x00a7 }, + { 0x0016, 0x00a8 }, + { 0x0016, 0x00a9 }, + { 0x0016, 0x00aa }, + { 0x0016, 0x00ab }, + { 0x0016, 0x00ac }, + { 0x0016, 0x00ad }, + { 0x0016, 0x00ae }, + { 0x0016, 0x00af }, + { 0x0016, 0x00b0 }, + { 0x0016, 0x00b1 }, + { 0x0016, 0x00b2 }, + { 0x0016, 0x00b3 }, + { 0x0016, 0x00b4 }, + { 0x0016, 0x00b5 }, + { 0x0016, 0x00b6 }, + { 0x0016, 0x00b7 }, + { 0x0016, 0x00b8 }, + { 0x0016, 0x00b9 }, + { 0x0016, 0x00ba }, + { 0x0016, 0x00bb }, + { 0x0016, 0x00bc }, + { 0x0016, 0x00bd }, + { 0x0016, 0x00be }, + { 0x0016, 0x00bf }, + { 0x0016, 0x00c0 }, + { 0x0016, 0x00c1 }, + { 0x0016, 0x00c2 }, + { 0x0016, 0x00c3 }, + { 0x0016, 0x00c4 }, + { 0x0016, 0x00c5 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec12[76][16] = { + { + 0x0003ffff, + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000001, + 0x00000011, + 0x00000012, + 0x00000023, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + }, + { + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x00000004, + 0x00000015, + 0x00000026, + 0x00000036, + 0x00000044, + 0x00000046, + 0x00010003, + 0x00010003, + 0x00010045, + 0x00010045, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + }, + { + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020035, + }, + { + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + }, + { + 0x000bffff, + 0x0009ffff, + 0x000affff, + 0x0007ffff, + 0x0008ffff, + 0x00000038, + 0x00000048, + 0x00000058, + 0x00010005, + 0x00010005, + 0x00010027, + 0x00010027, + 0x00010055, + 0x00010055, + 0x00010057, + 0x00010057, + }, + { + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + }, + { + 0x00010018, + 0x00010018, + 0x0001005a, + 0x0001005a, + 0x0001006a, + 0x0001006a, + 0x00010078, + 0x00010078, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020069, + 0x00020069, + 0x00020069, + 0x00020069, + }, + { + 0x0018ffff, + 0x0029ffff, + 0x003affff, + 0x0010ffff, + 0x0011ffff, + 0x000fffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x00000007, + 0x00000029, + 0x0000003a, + 0x0000004a, + 0x00000077, + 0x00000079, + 0x0000007a, + }, + { + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + }, + { + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + }, + { + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + }, + { + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + }, + { + 0x004bffff, + 0x0012ffff, + 0x0015ffff, + 0x0013ffff, + 0x0014ffff, + 0x0016ffff, + 0x0017ffff, + 0x0000003c, + 0x0000006d, + 0x0000007d, + 0x0000008d, + 0x0000008e, + 0x0000009a, + 0x0000009b, + 0x00010009, + 0x00010009, + }, + { + 0x0001001a, + 0x0001001a, + 0x0001004c, + 0x0001004c, + 0x0001005c, + 0x0001005c, + 0x0001006c, + 0x0001006c, + 0x0001007c, + 0x0001007c, + 0x00010088, + 0x00010088, + 0x0001008b, + 0x0001008b, + 0x0001008c, + 0x0001008c, + }, + { + 0x0002011f, + 0x0002011f, + 0x0002011f, + 0x0002011f, + 0x00020120, + 0x00020120, + 0x00020120, + 0x00020120, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + }, + { + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x00030099, + 0x00030099, + 0x00030099, + 0x00030099, + 0x00030099, + 0x00030099, + 0x00030099, + 0x00030099, + }, + { + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + }, + { + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + }, + { + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + }, + { + 0x0025ffff, + 0x001fffff, + 0x0019ffff, + 0x0020ffff, + 0x001effff, + 0x0021ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + }, + { + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + }, + { + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020043, + 0x00020043, + 0x00020043, + 0x00020043, + 0x0002004e, + 0x0002004e, + 0x0002004e, + 0x0002004e, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x0002004f, + }, + { + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + }, + { + 0x00020054, + 0x00020054, + 0x00020054, + 0x00020054, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + }, + { + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + }, + { + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020032, + 0x00020032, + 0x00020032, + 0x00020032, + }, + { + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + }, + { + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + }, + { + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + }, + { + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020071, + }, + { + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + }, + { + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + }, + { + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + }, + { + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020084, + }, + { + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020087, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x0002008f, + }, + { + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020093, + }, + { + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + 0x0034ffff, + 0x0035ffff, + 0x0036ffff, + 0x0037ffff, + 0x0038ffff, + 0x0039ffff, + }, + { + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020095, + 0x00020095, + 0x00020095, + 0x00020095, + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020097, + 0x00020097, + 0x00020097, + 0x00020097, + }, + { + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020098, + 0x0002009f, + 0x0002009f, + 0x0002009f, + 0x0002009f, + 0x000200a0, + 0x000200a0, + 0x000200a0, + 0x000200a0, + 0x000200a1, + 0x000200a1, + 0x000200a1, + 0x000200a1, + }, + { + 0x000200a2, + 0x000200a2, + 0x000200a2, + 0x000200a2, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + }, + { + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a9, + 0x000200a9, + 0x000200a9, + 0x000200a9, + }, + { + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ad, + 0x000200ad, + 0x000200ad, + 0x000200ad, + 0x000200ae, + 0x000200ae, + 0x000200ae, + 0x000200ae, + }, + { + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200b1, + 0x000200b1, + 0x000200b1, + 0x000200b1, + 0x000200b2, + 0x000200b2, + 0x000200b2, + 0x000200b2, + }, + { + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b5, + 0x000200b5, + 0x000200b5, + 0x000200b5, + 0x000200b6, + 0x000200b6, + 0x000200b6, + 0x000200b6, + }, + { + 0x000200b7, + 0x000200b7, + 0x000200b7, + 0x000200b7, + 0x000200b8, + 0x000200b8, + 0x000200b8, + 0x000200b8, + 0x000200b9, + 0x000200b9, + 0x000200b9, + 0x000200b9, + 0x000200ba, + 0x000200ba, + 0x000200ba, + 0x000200ba, + }, + { + 0x000200bb, + 0x000200bb, + 0x000200bb, + 0x000200bb, + 0x000200bc, + 0x000200bc, + 0x000200bc, + 0x000200bc, + 0x000200bd, + 0x000200bd, + 0x000200bd, + 0x000200bd, + 0x000200be, + 0x000200be, + 0x000200be, + 0x000200be, + }, + { + 0x000200bf, + 0x000200bf, + 0x000200bf, + 0x000200bf, + 0x000200c0, + 0x000200c0, + 0x000200c0, + 0x000200c0, + 0x000200c1, + 0x000200c1, + 0x000200c1, + 0x000200c1, + 0x000200c2, + 0x000200c2, + 0x000200c2, + 0x000200c2, + }, + { + 0x000200c3, + 0x000200c3, + 0x000200c3, + 0x000200c3, + 0x000200c4, + 0x000200c4, + 0x000200c4, + 0x000200c4, + 0x000200c5, + 0x000200c5, + 0x000200c5, + 0x000200c5, + 0x000200c6, + 0x000200c6, + 0x000200c6, + 0x000200c6, + }, + { + 0x000200c7, + 0x000200c7, + 0x000200c7, + 0x000200c7, + 0x000200c8, + 0x000200c8, + 0x000200c8, + 0x000200c8, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200ca, + 0x000200ca, + 0x000200ca, + 0x000200ca, + }, + { + 0x000200cb, + 0x000200cb, + 0x000200cb, + 0x000200cb, + 0x000200cc, + 0x000200cc, + 0x000200cc, + 0x000200cc, + 0x000200cd, + 0x000200cd, + 0x000200cd, + 0x000200cd, + 0x000200ce, + 0x000200ce, + 0x000200ce, + 0x000200ce, + }, + { + 0x000200cf, + 0x000200cf, + 0x000200cf, + 0x000200cf, + 0x000200d0, + 0x000200d0, + 0x000200d0, + 0x000200d0, + 0x000200d1, + 0x000200d1, + 0x000200d1, + 0x000200d1, + 0x000200d2, + 0x000200d2, + 0x000200d2, + 0x000200d2, + }, + { + 0x000200d3, + 0x000200d3, + 0x000200d3, + 0x000200d3, + 0x000200d4, + 0x000200d4, + 0x000200d4, + 0x000200d4, + 0x000200d5, + 0x000200d5, + 0x000200d5, + 0x000200d5, + 0x000200d6, + 0x000200d6, + 0x000200d6, + 0x000200d6, + }, + { + 0x000200d7, + 0x000200d7, + 0x000200d7, + 0x000200d7, + 0x000200d8, + 0x000200d8, + 0x000200d8, + 0x000200d8, + 0x000200d9, + 0x000200d9, + 0x000200d9, + 0x000200d9, + 0x000200da, + 0x000200da, + 0x000200da, + 0x000200da, + }, + { + 0x003bffff, + 0x003cffff, + 0x003dffff, + 0x003effff, + 0x003fffff, + 0x0040ffff, + 0x0041ffff, + 0x0042ffff, + 0x0043ffff, + 0x0044ffff, + 0x0045ffff, + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x0049ffff, + 0x004affff, + }, + { + 0x000200db, + 0x000200db, + 0x000200db, + 0x000200db, + 0x000200dc, + 0x000200dc, + 0x000200dc, + 0x000200dc, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200de, + 0x000200de, + 0x000200de, + 0x000200de, + }, + { + 0x000200df, + 0x000200df, + 0x000200df, + 0x000200df, + 0x000200e0, + 0x000200e0, + 0x000200e0, + 0x000200e0, + 0x000200e1, + 0x000200e1, + 0x000200e1, + 0x000200e1, + 0x000200e2, + 0x000200e2, + 0x000200e2, + 0x000200e2, + }, + { + 0x000200e3, + 0x000200e3, + 0x000200e3, + 0x000200e3, + 0x000200e4, + 0x000200e4, + 0x000200e4, + 0x000200e4, + 0x000200e5, + 0x000200e5, + 0x000200e5, + 0x000200e5, + 0x000200e6, + 0x000200e6, + 0x000200e6, + 0x000200e6, + }, + { + 0x000200e7, + 0x000200e7, + 0x000200e7, + 0x000200e7, + 0x000200e8, + 0x000200e8, + 0x000200e8, + 0x000200e8, + 0x000200e9, + 0x000200e9, + 0x000200e9, + 0x000200e9, + 0x000200ea, + 0x000200ea, + 0x000200ea, + 0x000200ea, + }, + { + 0x000200eb, + 0x000200eb, + 0x000200eb, + 0x000200eb, + 0x000200ec, + 0x000200ec, + 0x000200ec, + 0x000200ec, + 0x000200ed, + 0x000200ed, + 0x000200ed, + 0x000200ed, + 0x000200ee, + 0x000200ee, + 0x000200ee, + 0x000200ee, + }, + { + 0x000200ef, + 0x000200ef, + 0x000200ef, + 0x000200ef, + 0x000200f0, + 0x000200f0, + 0x000200f0, + 0x000200f0, + 0x000200f1, + 0x000200f1, + 0x000200f1, + 0x000200f1, + 0x000200f2, + 0x000200f2, + 0x000200f2, + 0x000200f2, + }, + { + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f4, + 0x000200f4, + 0x000200f4, + 0x000200f4, + 0x000200f5, + 0x000200f5, + 0x000200f5, + 0x000200f5, + 0x000200f6, + 0x000200f6, + 0x000200f6, + 0x000200f6, + }, + { + 0x000200f7, + 0x000200f7, + 0x000200f7, + 0x000200f7, + 0x000200f8, + 0x000200f8, + 0x000200f8, + 0x000200f8, + 0x000200f9, + 0x000200f9, + 0x000200f9, + 0x000200f9, + 0x000200fa, + 0x000200fa, + 0x000200fa, + 0x000200fa, + }, + { + 0x000200fb, + 0x000200fb, + 0x000200fb, + 0x000200fb, + 0x000200fc, + 0x000200fc, + 0x000200fc, + 0x000200fc, + 0x000200fd, + 0x000200fd, + 0x000200fd, + 0x000200fd, + 0x000200fe, + 0x000200fe, + 0x000200fe, + 0x000200fe, + }, + { + 0x000200ff, + 0x000200ff, + 0x000200ff, + 0x000200ff, + 0x00020100, + 0x00020100, + 0x00020100, + 0x00020100, + 0x00020101, + 0x00020101, + 0x00020101, + 0x00020101, + 0x00020102, + 0x00020102, + 0x00020102, + 0x00020102, + }, + { + 0x00020103, + 0x00020103, + 0x00020103, + 0x00020103, + 0x00020104, + 0x00020104, + 0x00020104, + 0x00020104, + 0x00020105, + 0x00020105, + 0x00020105, + 0x00020105, + 0x00020106, + 0x00020106, + 0x00020106, + 0x00020106, + }, + { + 0x00020107, + 0x00020107, + 0x00020107, + 0x00020107, + 0x00020108, + 0x00020108, + 0x00020108, + 0x00020108, + 0x00020109, + 0x00020109, + 0x00020109, + 0x00020109, + 0x0002010a, + 0x0002010a, + 0x0002010a, + 0x0002010a, + }, + { + 0x0002010b, + 0x0002010b, + 0x0002010b, + 0x0002010b, + 0x0002010c, + 0x0002010c, + 0x0002010c, + 0x0002010c, + 0x0002010d, + 0x0002010d, + 0x0002010d, + 0x0002010d, + 0x0002010e, + 0x0002010e, + 0x0002010e, + 0x0002010e, + }, + { + 0x0002010f, + 0x0002010f, + 0x0002010f, + 0x0002010f, + 0x00020110, + 0x00020110, + 0x00020110, + 0x00020110, + 0x00020111, + 0x00020111, + 0x00020111, + 0x00020111, + 0x00020112, + 0x00020112, + 0x00020112, + 0x00020112, + }, + { + 0x00020113, + 0x00020113, + 0x00020113, + 0x00020113, + 0x00020114, + 0x00020114, + 0x00020114, + 0x00020114, + 0x00020115, + 0x00020115, + 0x00020115, + 0x00020115, + 0x00020116, + 0x00020116, + 0x00020116, + 0x00020116, + }, + { + 0x00020117, + 0x00020117, + 0x00020117, + 0x00020117, + 0x00020118, + 0x00020118, + 0x00020118, + 0x00020118, + 0x00020119, + 0x00020119, + 0x00020119, + 0x00020119, + 0x0002011a, + 0x0002011a, + 0x0002011a, + 0x0002011a, + }, + { + 0x0002011b, + 0x0002011b, + 0x0002011b, + 0x0002011b, + 0x0002011c, + 0x0002011c, + 0x0002011c, + 0x0002011c, + 0x0002011d, + 0x0002011d, + 0x0002011d, + 0x0002011d, + 0x0002011e, + 0x0002011e, + 0x0002011e, + 0x0002011e, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc13[324][2] = +#else +const uint16_t c_aauiLCLDHuffEnc13[324][2] = +#endif + { + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x000a, 0x0005 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x000b }, + { 0x0010, 0x0011 }, + { 0x0012, 0x002d }, + { 0x0015, 0x0000 }, + { 0x0014, 0x0035 }, + { 0x0015, 0x0001 }, + { 0x0015, 0x0002 }, + { 0x0015, 0x0003 }, + { 0x0015, 0x0004 }, + { 0x0015, 0x0005 }, + { 0x0004, 0x0008 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0006, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0009, 0x0006 }, + { 0x000c, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x0010, 0x0012 }, + { 0x0011, 0x001a }, + { 0x0015, 0x0006 }, + { 0x0015, 0x0007 }, + { 0x0015, 0x0008 }, + { 0x0015, 0x0009 }, + { 0x0015, 0x000a }, + { 0x0015, 0x000b }, + { 0x0015, 0x000c }, + { 0x0005, 0x0007 }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0005, 0x0008 }, + { 0x0006, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0006 }, + { 0x000c, 0x0009 }, + { 0x000e, 0x000c }, + { 0x0010, 0x0013 }, + { 0x0012, 0x002e }, + { 0x0015, 0x000d }, + { 0x0015, 0x000e }, + { 0x0015, 0x000f }, + { 0x0015, 0x0010 }, + { 0x0015, 0x0011 }, + { 0x0015, 0x0012 }, + { 0x0015, 0x0013 }, + { 0x0005, 0x0009 }, + { 0x0004, 0x000d }, + { 0x0005, 0x000a }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000a }, + { 0x000f, 0x000e }, + { 0x0010, 0x0014 }, + { 0x0011, 0x001b }, + { 0x0014, 0x0036 }, + { 0x0015, 0x0014 }, + { 0x0015, 0x0015 }, + { 0x0015, 0x0016 }, + { 0x0015, 0x0017 }, + { 0x0015, 0x0018 }, + { 0x0015, 0x0019 }, + { 0x0006, 0x0008 }, + { 0x0005, 0x000b }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0008 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x000a }, + { 0x000e, 0x000d }, + { 0x0010, 0x0015 }, + { 0x0011, 0x001c }, + { 0x0013, 0x0053 }, + { 0x0015, 0x001a }, + { 0x0015, 0x001b }, + { 0x0015, 0x001c }, + { 0x0015, 0x001d }, + { 0x0015, 0x001e }, + { 0x0015, 0x001f }, + { 0x0015, 0x0020 }, + { 0x0008, 0x0008 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000b }, + { 0x000d, 0x000b }, + { 0x000f, 0x000f }, + { 0x0010, 0x0016 }, + { 0x0011, 0x001d }, + { 0x0014, 0x0037 }, + { 0x0015, 0x0021 }, + { 0x0015, 0x0022 }, + { 0x0015, 0x0023 }, + { 0x0015, 0x0024 }, + { 0x0015, 0x0025 }, + { 0x0015, 0x0026 }, + { 0x0015, 0x0027 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000b, 0x0009 }, + { 0x000c, 0x000c }, + { 0x000d, 0x000c }, + { 0x000f, 0x0010 }, + { 0x0010, 0x0017 }, + { 0x0012, 0x002f }, + { 0x0015, 0x0028 }, + { 0x0015, 0x0029 }, + { 0x0015, 0x002a }, + { 0x0015, 0x002b }, + { 0x0015, 0x002c }, + { 0x0015, 0x002d }, + { 0x0015, 0x002e }, + { 0x0015, 0x002f }, + { 0x0015, 0x0030 }, + { 0x000c, 0x000d }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000d, 0x000d }, + { 0x000e, 0x000e }, + { 0x000f, 0x0011 }, + { 0x0010, 0x0018 }, + { 0x0011, 0x001e }, + { 0x0014, 0x0038 }, + { 0x0015, 0x0031 }, + { 0x0015, 0x0032 }, + { 0x0015, 0x0033 }, + { 0x0015, 0x0034 }, + { 0x0015, 0x0035 }, + { 0x0015, 0x0036 }, + { 0x0015, 0x0037 }, + { 0x0015, 0x0038 }, + { 0x0015, 0x0039 }, + { 0x000f, 0x0012 }, + { 0x000e, 0x000f }, + { 0x000e, 0x0010 }, + { 0x000e, 0x0011 }, + { 0x000f, 0x0013 }, + { 0x0010, 0x0019 }, + { 0x0011, 0x001f }, + { 0x0013, 0x0054 }, + { 0x0015, 0x003a }, + { 0x0014, 0x0039 }, + { 0x0015, 0x003b }, + { 0x0015, 0x003c }, + { 0x0015, 0x003d }, + { 0x0015, 0x003e }, + { 0x0015, 0x003f }, + { 0x0015, 0x0040 }, + { 0x0015, 0x0041 }, + { 0x0015, 0x0042 }, + { 0x0010, 0x001a }, + { 0x000f, 0x0014 }, + { 0x000f, 0x0015 }, + { 0x0010, 0x001b }, + { 0x0011, 0x0020 }, + { 0x0012, 0x0030 }, + { 0x0013, 0x0055 }, + { 0x0015, 0x0043 }, + { 0x0015, 0x0044 }, + { 0x0014, 0x003a }, + { 0x0015, 0x0045 }, + { 0x0015, 0x0046 }, + { 0x0015, 0x0047 }, + { 0x0015, 0x0048 }, + { 0x0015, 0x0049 }, + { 0x0015, 0x004a }, + { 0x0015, 0x004b }, + { 0x0015, 0x004c }, + { 0x0012, 0x0031 }, + { 0x0011, 0x0021 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0012, 0x0032 }, + { 0x0015, 0x004d }, + { 0x0015, 0x004e }, + { 0x0015, 0x004f }, + { 0x0015, 0x0050 }, + { 0x0015, 0x0051 }, + { 0x0015, 0x0052 }, + { 0x0015, 0x0053 }, + { 0x0015, 0x0054 }, + { 0x0015, 0x0055 }, + { 0x0015, 0x0056 }, + { 0x0015, 0x0057 }, + { 0x0015, 0x0058 }, + { 0x0015, 0x0059 }, + { 0x0015, 0x005a }, + { 0x0014, 0x003b }, + { 0x0012, 0x0033 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0015, 0x005b }, + { 0x0015, 0x005c }, + { 0x0015, 0x005d }, + { 0x0015, 0x005e }, + { 0x0015, 0x005f }, + { 0x0015, 0x0060 }, + { 0x0015, 0x0061 }, + { 0x0015, 0x0062 }, + { 0x0015, 0x0063 }, + { 0x0015, 0x0064 }, + { 0x0015, 0x0065 }, + { 0x0015, 0x0066 }, + { 0x0015, 0x0067 }, + { 0x0015, 0x0068 }, + { 0x0015, 0x0069 }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec13[89][16] = { + { + 0x0006ffff, + 0x0005ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x00000000, + 0x00000001, + 0x00000012, + 0x00000014, + 0x00000015, + 0x00000025, + 0x00000026, + 0x00000037, + 0x00010013, + 0x00010013, + }, + { + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + }, + { + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + }, + { + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x000bffff, + 0x0009ffff, + 0x000affff, + 0x0007ffff, + 0x0008ffff, + 0x00000005, + 0x00000017, + 0x00000029, + 0x0000005a, + 0x0000005c, + 0x0001003a, + 0x0001003a, + 0x0001004b, + 0x0001004b, + 0x0001005b, + 0x0001005b, + }, + { + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + }, + { + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + }, + { + 0x0001003c, + 0x0001003c, + 0x0001006f, + 0x0001006f, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x0002004d, + }, + { + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + }, + { + 0x0012ffff, + 0x0011ffff, + 0x0010ffff, + 0x000fffff, + 0x000dffff, + 0x000cffff, + 0x000effff, + 0x00000007, + 0x00000019, + 0x0000002b, + 0x0000004e, + 0x0000005f, + 0x00000070, + 0x0000007e, + 0x0000007f, + 0x00000080, + }, + { + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + }, + { + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020093, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + }, + { + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + }, + { + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020091, + }, + { + 0x00010072, + 0x00010072, + 0x00010083, + 0x00010083, + 0x00010090, + 0x00010090, + 0x00010094, + 0x00010094, + 0x000100a3, + 0x000100a3, + 0x000100a4, + 0x000100a4, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + }, + { + 0x0016ffff, + 0x00000009, + 0x0000001b, + 0x0000002d, + 0x0000003f, + 0x00000050, + 0x00000062, + 0x00000073, + 0x00000084, + 0x00000095, + 0x000000a2, + 0x000000a5, + 0x0001003e, + 0x0001003e, + 0x00010061, + 0x00010061, + }, + { + 0x0021ffff, + 0x0024ffff, + 0x003dffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0019ffff, + 0x0017ffff, + 0x0018ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + }, + { + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + }, + { + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + }, + { + 0x00030085, + 0x00030085, + 0x00030085, + 0x00030085, + 0x00030085, + 0x00030085, + 0x00030085, + 0x00030085, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + }, + { + 0x000300a6, + 0x000300a6, + 0x000300a6, + 0x000300a6, + 0x000300a6, + 0x000300a6, + 0x000300a6, + 0x000300a6, + 0x000300b5, + 0x000300b5, + 0x000300b5, + 0x000300b5, + 0x000300b5, + 0x000300b5, + 0x000300b5, + 0x000300b5, + }, + { + 0x000100c9, + 0x000100c9, + 0x000100ca, + 0x000100ca, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + }, + { + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b8, + 0x000200b8, + 0x000200b8, + 0x000200b8, + 0x000200c8, + 0x000200c8, + 0x000200c8, + 0x000200c8, + }, + { + 0x0000013e, + 0x0000013f, + 0x00000140, + 0x00000141, + 0x00000142, + 0x00000143, + 0x00010052, + 0x00010052, + 0x00010097, + 0x00010097, + 0x000100a8, + 0x000100a8, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + }, + { + 0x0054ffff, + 0x0055ffff, + 0x0056ffff, + 0x0057ffff, + 0x0058ffff, + 0x0000000c, + 0x00000041, + 0x00000064, + 0x00000086, + 0x00000099, + 0x000000ab, + 0x000000c7, + 0x000000da, + 0x000000db, + 0x000000dc, + 0x000000dd, + }, + { + 0x000000de, + 0x000000df, + 0x000000e0, + 0x000000e1, + 0x000000e2, + 0x000000e3, + 0x000000e4, + 0x000000e5, + 0x000000e6, + 0x000000e7, + 0x000000e8, + 0x000000e9, + 0x000000ea, + 0x000000eb, + 0x000000ec, + 0x000000ed, + }, + { + 0x000000ee, + 0x000000ef, + 0x000000f0, + 0x000000f1, + 0x000000f2, + 0x000000f3, + 0x000000f4, + 0x000000f5, + 0x000000f6, + 0x000000f7, + 0x000000f8, + 0x000000f9, + 0x000000fa, + 0x000000fb, + 0x000000fc, + 0x000000fd, + }, + { + 0x000000fe, + 0x000000ff, + 0x00000100, + 0x00000101, + 0x00000102, + 0x00000103, + 0x00000104, + 0x00000105, + 0x00000106, + 0x00000107, + 0x00000108, + 0x00000109, + 0x0000010a, + 0x0000010b, + 0x0000010c, + 0x0000010d, + }, + { + 0x0000010e, + 0x0000010f, + 0x00000110, + 0x00000111, + 0x00000112, + 0x00000113, + 0x00000114, + 0x00000115, + 0x00000116, + 0x00000117, + 0x00000118, + 0x00000119, + 0x0000011a, + 0x0000011b, + 0x0000011c, + 0x0000011d, + }, + { + 0x0000011e, + 0x0000011f, + 0x00000120, + 0x00000121, + 0x00000122, + 0x00000123, + 0x00000124, + 0x00000125, + 0x00000126, + 0x00000127, + 0x00000128, + 0x00000129, + 0x0000012a, + 0x0000012b, + 0x0000012c, + 0x0000012d, + }, + { + 0x0000012e, + 0x0000012f, + 0x00000130, + 0x00000131, + 0x00000132, + 0x00000133, + 0x00000134, + 0x00000135, + 0x00000136, + 0x00000137, + 0x00000138, + 0x00000139, + 0x0000013a, + 0x0000013b, + 0x0000013c, + 0x0000013d, + }, + { + 0x0026ffff, + 0x002dffff, + 0x0037ffff, + 0x0023ffff, + 0x0044ffff, + 0x002effff, + 0x003affff, + 0x0022ffff, + 0x002cffff, + 0x0035ffff, + 0x002fffff, + 0x0036ffff, + 0x0040ffff, + 0x0049ffff, + 0x0030ffff, + 0x0038ffff, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x0041ffff, + 0x004affff, + 0x0042ffff, + 0x0025ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + 0x0034ffff, + 0x0039ffff, + 0x003bffff, + 0x003cffff, + }, + { + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + }, + { + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + }, + { + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + }, + { + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + }, + { + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + }, + { + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, + { + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + }, + { + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + }, + { + 0x00030088, + 0x00030088, + 0x00030088, + 0x00030088, + 0x00030088, + 0x00030088, + 0x00030088, + 0x00030088, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + }, + { + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + }, + { + 0x0003008c, + 0x0003008c, + 0x0003008c, + 0x0003008c, + 0x0003008c, + 0x0003008c, + 0x0003008c, + 0x0003008c, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + }, + { + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + }, + { + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + }, + { + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + }, + { + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + }, + { + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + 0x0003009c, + }, + { + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009d, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + 0x0003009e, + }, + { + 0x003effff, + 0x003fffff, + 0x0043ffff, + 0x0045ffff, + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x004bffff, + 0x004cffff, + 0x004dffff, + 0x004effff, + 0x004fffff, + 0x0050ffff, + 0x0051ffff, + 0x0052ffff, + 0x0053ffff, + }, + { + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + }, + { + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + }, + { + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + }, + { + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030065, + 0x00030065, + 0x00030065, + 0x00030065, + 0x00030065, + 0x00030065, + 0x00030065, + 0x00030065, + }, + { + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + }, + { + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + 0x000300ac, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + }, + { + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ae, + 0x000300ae, + 0x000300ae, + 0x000300ae, + 0x000300ae, + 0x000300ae, + 0x000300ae, + 0x000300ae, + }, + { + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + }, + { + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + }, + { + 0x000300b3, + 0x000300b3, + 0x000300b3, + 0x000300b3, + 0x000300b3, + 0x000300b3, + 0x000300b3, + 0x000300b3, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + }, + { + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + }, + { + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + }, + { + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300bb, + 0x000300bb, + 0x000300bb, + 0x000300bb, + 0x000300bb, + 0x000300bb, + 0x000300bb, + 0x000300bb, + }, + { + 0x000300bc, + 0x000300bc, + 0x000300bc, + 0x000300bc, + 0x000300bc, + 0x000300bc, + 0x000300bc, + 0x000300bc, + 0x000300bd, + 0x000300bd, + 0x000300bd, + 0x000300bd, + 0x000300bd, + 0x000300bd, + 0x000300bd, + 0x000300bd, + }, + { + 0x000300be, + 0x000300be, + 0x000300be, + 0x000300be, + 0x000300be, + 0x000300be, + 0x000300be, + 0x000300be, + 0x000300bf, + 0x000300bf, + 0x000300bf, + 0x000300bf, + 0x000300bf, + 0x000300bf, + 0x000300bf, + 0x000300bf, + }, + { + 0x000300c0, + 0x000300c0, + 0x000300c0, + 0x000300c0, + 0x000300c0, + 0x000300c0, + 0x000300c0, + 0x000300c0, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + }, + { + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + }, + { + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c5, + 0x000300c5, + 0x000300c5, + 0x000300c5, + 0x000300c5, + 0x000300c5, + 0x000300c5, + 0x000300c5, + }, + { + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300cb, + 0x000300cb, + 0x000300cb, + 0x000300cb, + 0x000300cb, + 0x000300cb, + 0x000300cb, + 0x000300cb, + }, + { + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + }, + { + 0x000300ce, + 0x000300ce, + 0x000300ce, + 0x000300ce, + 0x000300ce, + 0x000300ce, + 0x000300ce, + 0x000300ce, + 0x000300cf, + 0x000300cf, + 0x000300cf, + 0x000300cf, + 0x000300cf, + 0x000300cf, + 0x000300cf, + 0x000300cf, + }, + { + 0x000300d0, + 0x000300d0, + 0x000300d0, + 0x000300d0, + 0x000300d0, + 0x000300d0, + 0x000300d0, + 0x000300d0, + 0x000300d1, + 0x000300d1, + 0x000300d1, + 0x000300d1, + 0x000300d1, + 0x000300d1, + 0x000300d1, + 0x000300d1, + }, + { + 0x000300d2, + 0x000300d2, + 0x000300d2, + 0x000300d2, + 0x000300d2, + 0x000300d2, + 0x000300d2, + 0x000300d2, + 0x000300d3, + 0x000300d3, + 0x000300d3, + 0x000300d3, + 0x000300d3, + 0x000300d3, + 0x000300d3, + 0x000300d3, + }, + { + 0x000300d4, + 0x000300d4, + 0x000300d4, + 0x000300d4, + 0x000300d4, + 0x000300d4, + 0x000300d4, + 0x000300d4, + 0x000300d5, + 0x000300d5, + 0x000300d5, + 0x000300d5, + 0x000300d5, + 0x000300d5, + 0x000300d5, + 0x000300d5, + }, + { + 0x000300d6, + 0x000300d6, + 0x000300d6, + 0x000300d6, + 0x000300d6, + 0x000300d6, + 0x000300d6, + 0x000300d6, + 0x000300d7, + 0x000300d7, + 0x000300d7, + 0x000300d7, + 0x000300d7, + 0x000300d7, + 0x000300d7, + 0x000300d7, + }, + { + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc14[400][2] = +#else +const uint16_t c_aauiLCLDHuffEnc14[400][2] = +#endif + { + { 0x0005, 0x0007 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0006, 0x0006 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000c }, + { 0x000f, 0x0013 }, + { 0x0010, 0x001b }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x0007 }, + { 0x0008, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x000a }, + { 0x000e, 0x000e }, + { 0x000f, 0x0014 }, + { 0x0011, 0x002a }, + { 0x0012, 0x004a }, + { 0x0013, 0x0084 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0005, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0005, 0x000d }, + { 0x0006, 0x0008 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000b }, + { 0x000e, 0x000f }, + { 0x000f, 0x0015 }, + { 0x0012, 0x004b }, + { 0x0013, 0x0085 }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0005, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0006, 0x0009 }, + { 0x0008, 0x0008 }, + { 0x0009, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000d, 0x000d }, + { 0x000e, 0x0010 }, + { 0x0010, 0x001c }, + { 0x0011, 0x002b }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0006, 0x000a }, + { 0x0005, 0x0011 }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0007, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x000a, 0x0009 }, + { 0x000c, 0x000c }, + { 0x000e, 0x0011 }, + { 0x000f, 0x0016 }, + { 0x0010, 0x001d }, + { 0x0012, 0x004c }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0007, 0x0009 }, + { 0x0006, 0x000d }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0009, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000b, 0x000a }, + { 0x000d, 0x000e }, + { 0x000f, 0x0017 }, + { 0x0011, 0x002c }, + { 0x0010, 0x001e }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0009, 0x000a }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0009, 0x000b }, + { 0x000a, 0x000b }, + { 0x000b, 0x000b }, + { 0x000d, 0x000f }, + { 0x000e, 0x0012 }, + { 0x000f, 0x0018 }, + { 0x0011, 0x002d }, + { 0x0011, 0x002e }, + { 0x0013, 0x0086 }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x000b, 0x000c }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x000d }, + { 0x000c, 0x000d }, + { 0x000d, 0x0010 }, + { 0x000e, 0x0013 }, + { 0x000f, 0x0019 }, + { 0x0010, 0x001f }, + { 0x0013, 0x0087 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0013, 0x0088 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x000d, 0x0011 }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000d, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000e, 0x0014 }, + { 0x0010, 0x0020 }, + { 0x0010, 0x0021 }, + { 0x0012, 0x004d }, + { 0x0011, 0x002f }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x000f, 0x001a }, + { 0x000e, 0x0015 }, + { 0x000e, 0x0016 }, + { 0x000e, 0x0017 }, + { 0x000f, 0x001b }, + { 0x0011, 0x0030 }, + { 0x0011, 0x0031 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0010, 0x0022 }, + { 0x0010, 0x0023 }, + { 0x0010, 0x0024 }, + { 0x0010, 0x0025 }, + { 0x0011, 0x0032 }, + { 0x0011, 0x0033 }, + { 0x0012, 0x004e }, + { 0x0012, 0x004f }, + { 0x0014, 0x0052 }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0011, 0x0034 }, + { 0x0011, 0x0035 }, + { 0x0012, 0x0050 }, + { 0x0012, 0x0051 }, + { 0x0013, 0x008e }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0012, 0x0052 }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0014, 0x006b }, + { 0x0013, 0x0091 }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0013, 0x0092 }, + { 0x0012, 0x0053 }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0013, 0x0093 }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec14[53][16] = { + { + 0x0009ffff, + 0x0007ffff, + 0x0008ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x00000001, + 0x00000014, + 0x00000015, + 0x00000016, + 0x00000029, + 0x0000002a, + 0x0000003d, + }, + { + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + }, + { + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, + { + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, + { + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + }, + { + 0x00010054, + 0x00010054, + 0x00010064, + 0x00010064, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + }, + { + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + }, + { + 0x000fffff, + 0x000dffff, + 0x000effff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x0000001a, + 0x0000002e, + 0x00000041, + 0x00000055, + 0x00000079, + 0x0000007a, + 0x00010005, + 0x00010005, + 0x0001002d, + 0x0001002d, + }, + { + 0x0002008d, + 0x0002008d, + 0x0002008d, + 0x0002008d, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + }, + { + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + }, + { + 0x00010007, + 0x00010007, + 0x00010043, + 0x00010043, + 0x0001006a, + 0x0001006a, + 0x0001007d, + 0x0001007d, + 0x0001008c, + 0x0001008c, + 0x0001008f, + 0x0001008f, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + }, + { + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020069, + 0x00020069, + 0x00020069, + 0x00020069, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + }, + { + 0x0024ffff, + 0x0018ffff, + 0x0017ffff, + 0x0015ffff, + 0x0014ffff, + 0x0016ffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0000001c, + 0x00000030, + 0x00000057, + 0x00000090, + 0x000000a1, + 0x000000a2, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + }, + { + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003006b, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + }, + { + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + }, + { + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + }, + { + 0x00020045, + 0x00020045, + 0x00020045, + 0x00020045, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020058, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + }, + { + 0x00010080, + 0x00010080, + 0x00010093, + 0x00010093, + 0x000100b4, + 0x000100b4, + 0x000100b8, + 0x000100b8, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + }, + { + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200b5, + 0x000200b5, + 0x000200b5, + 0x000200b5, + 0x000200b6, + 0x000200b6, + 0x000200b6, + 0x000200b6, + 0x000200b7, + 0x000200b7, + 0x000200b7, + 0x000200b7, + }, + { + 0x000000a6, + 0x000000a7, + 0x000000c8, + 0x000000c9, + 0x000000ca, + 0x000000cb, + 0x00010009, + 0x00010009, + 0x0001001e, + 0x0001001e, + 0x00010032, + 0x00010032, + 0x00010059, + 0x00010059, + 0x0001006c, + 0x0001006c, + }, + { + 0x0022ffff, + 0x0023ffff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001effff, + 0x0000000a, + 0x00000046, + 0x0000005a, + 0x0000006e, + 0x00000094, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + }, + { + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + 0x00030081, + }, + { + 0x00030082, + 0x00030082, + 0x00030082, + 0x00030082, + 0x00030082, + 0x00030082, + 0x00030082, + 0x00030082, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + }, + { + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300b9, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + 0x000300ba, + }, + { + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cc, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + 0x000300cd, + }, + { + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + }, + { + 0x000100f2, + 0x000100f2, + 0x000100f4, + 0x000100f4, + 0x00010106, + 0x00010106, + 0x0001011a, + 0x0001011a, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + }, + { + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200ce, + 0x000200ce, + 0x000200ce, + 0x000200ce, + 0x000200cf, + 0x000200cf, + 0x000200cf, + 0x000200cf, + }, + { + 0x000200de, + 0x000200de, + 0x000200de, + 0x000200de, + 0x000200df, + 0x000200df, + 0x000200df, + 0x000200df, + 0x000200f0, + 0x000200f0, + 0x000200f0, + 0x000200f0, + 0x00020107, + 0x00020107, + 0x00020107, + 0x00020107, + }, + { + 0x0000018c, + 0x0000018d, + 0x0000018e, + 0x0000018f, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x00010021, + 0x00010021, + 0x00010034, + 0x00010034, + 0x00010083, + 0x00010083, + 0x00010095, + 0x00010095, + }, + { + 0x00010098, + 0x00010098, + 0x000100bb, + 0x000100bb, + 0x000100bc, + 0x000100bc, + 0x000100bd, + 0x000100bd, + 0x000100d1, + 0x000100d1, + 0x000100d2, + 0x000100d2, + 0x000100e0, + 0x000100e0, + 0x000100f1, + 0x000100f1, + }, + { + 0x0025ffff, + 0x0026ffff, + 0x0028ffff, + 0x0027ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + 0x0034ffff, + }, + { + 0x0000000d, + 0x0000000e, + 0x0000000f, + 0x00000010, + 0x00000011, + 0x00000012, + 0x00000013, + 0x00000022, + 0x00000023, + 0x00000024, + 0x00000025, + 0x00000026, + 0x00000027, + 0x00000035, + 0x00000036, + 0x00000037, + }, + { + 0x00000038, + 0x00000039, + 0x0000003a, + 0x0000003b, + 0x00000048, + 0x00000049, + 0x0000004a, + 0x0000004b, + 0x0000004c, + 0x0000004d, + 0x0000004e, + 0x0000004f, + 0x0000005c, + 0x0000005d, + 0x0000005e, + 0x0000005f, + }, + { + 0x00000087, + 0x00000088, + 0x00000089, + 0x0000008a, + 0x0000008b, + 0x00000096, + 0x00000097, + 0x00000099, + 0x0000009a, + 0x0000009b, + 0x0000009c, + 0x0000009d, + 0x0000009e, + 0x0000009f, + 0x000000aa, + 0x000000ab, + }, + { + 0x00000060, + 0x00000061, + 0x00000062, + 0x00000063, + 0x0000006f, + 0x00000070, + 0x00000071, + 0x00000072, + 0x00000073, + 0x00000074, + 0x00000075, + 0x00000076, + 0x00000077, + 0x00000084, + 0x00000085, + 0x00000086, + }, + { + 0x000000ac, + 0x000000ad, + 0x000000ae, + 0x000000af, + 0x000000b0, + 0x000000b1, + 0x000000b2, + 0x000000b3, + 0x000000be, + 0x000000bf, + 0x000000c0, + 0x000000c1, + 0x000000c2, + 0x000000c3, + 0x000000c4, + 0x000000c5, + }, + { + 0x000000c6, + 0x000000c7, + 0x000000d0, + 0x000000d3, + 0x000000d4, + 0x000000d5, + 0x000000d6, + 0x000000d7, + 0x000000d8, + 0x000000d9, + 0x000000da, + 0x000000db, + 0x000000e1, + 0x000000e2, + 0x000000e3, + 0x000000e4, + }, + { + 0x000000e5, + 0x000000e6, + 0x000000e7, + 0x000000e8, + 0x000000e9, + 0x000000ea, + 0x000000eb, + 0x000000ec, + 0x000000ed, + 0x000000ee, + 0x000000ef, + 0x000000f3, + 0x000000f5, + 0x000000f6, + 0x000000f7, + 0x000000f8, + }, + { + 0x000000f9, + 0x000000fa, + 0x000000fb, + 0x000000fc, + 0x000000fd, + 0x000000fe, + 0x000000ff, + 0x00000100, + 0x00000101, + 0x00000102, + 0x00000103, + 0x00000104, + 0x00000105, + 0x00000108, + 0x00000109, + 0x0000010a, + }, + { + 0x0000010b, + 0x0000010c, + 0x0000010d, + 0x0000010e, + 0x0000010f, + 0x00000110, + 0x00000111, + 0x00000112, + 0x00000113, + 0x00000114, + 0x00000115, + 0x00000116, + 0x00000117, + 0x00000118, + 0x00000119, + 0x0000011b, + }, + { + 0x0000011c, + 0x0000011d, + 0x0000011e, + 0x0000011f, + 0x00000120, + 0x00000121, + 0x00000122, + 0x00000123, + 0x00000124, + 0x00000125, + 0x00000126, + 0x00000127, + 0x00000128, + 0x00000129, + 0x0000012a, + 0x0000012b, + }, + { + 0x0000012c, + 0x0000012d, + 0x0000012e, + 0x0000012f, + 0x00000130, + 0x00000131, + 0x00000132, + 0x00000133, + 0x00000134, + 0x00000135, + 0x00000136, + 0x00000137, + 0x00000138, + 0x00000139, + 0x0000013a, + 0x0000013b, + }, + { + 0x0000013c, + 0x0000013d, + 0x0000013e, + 0x0000013f, + 0x00000140, + 0x00000141, + 0x00000142, + 0x00000143, + 0x00000144, + 0x00000145, + 0x00000146, + 0x00000147, + 0x00000148, + 0x00000149, + 0x0000014a, + 0x0000014b, + }, + { + 0x0000014c, + 0x0000014d, + 0x0000014e, + 0x0000014f, + 0x00000150, + 0x00000151, + 0x00000152, + 0x00000153, + 0x00000154, + 0x00000155, + 0x00000156, + 0x00000157, + 0x00000158, + 0x00000159, + 0x0000015a, + 0x0000015b, + }, + { + 0x0000015c, + 0x0000015d, + 0x0000015e, + 0x0000015f, + 0x00000160, + 0x00000161, + 0x00000162, + 0x00000163, + 0x00000164, + 0x00000165, + 0x00000166, + 0x00000167, + 0x00000168, + 0x00000169, + 0x0000016a, + 0x0000016b, + }, + { + 0x0000016c, + 0x0000016d, + 0x0000016e, + 0x0000016f, + 0x00000170, + 0x00000171, + 0x00000172, + 0x00000173, + 0x00000174, + 0x00000175, + 0x00000176, + 0x00000177, + 0x00000178, + 0x00000179, + 0x0000017a, + 0x0000017b, + }, + { + 0x0000017c, + 0x0000017d, + 0x0000017e, + 0x0000017f, + 0x00000180, + 0x00000181, + 0x00000182, + 0x00000183, + 0x00000184, + 0x00000185, + 0x00000186, + 0x00000187, + 0x00000188, + 0x00000189, + 0x0000018a, + 0x0000018b, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc15[576][2] = +#else +const uint16_t c_aauiLCLDHuffEnc15[576][2] = +#endif + { + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0007, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0008 }, + { 0x000b, 0x000b }, + { 0x000d, 0x000e }, + { 0x000e, 0x0011 }, + { 0x000f, 0x001a }, + { 0x0012, 0x006e }, + { 0x0014, 0x0000 }, + { 0x0013, 0x00cc }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0005, 0x000d }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0006, 0x000b }, + { 0x0007, 0x0009 }, + { 0x0008, 0x000a }, + { 0x000a, 0x000a }, + { 0x000c, 0x000c }, + { 0x000d, 0x000f }, + { 0x000f, 0x001b }, + { 0x0011, 0x003d }, + { 0x0011, 0x003e }, + { 0x0013, 0x00cd }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0005, 0x0010 }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0006, 0x000c }, + { 0x0007, 0x000a }, + { 0x0009, 0x0009 }, + { 0x000a, 0x000b }, + { 0x000c, 0x000d }, + { 0x000e, 0x0012 }, + { 0x0010, 0x0027 }, + { 0x0011, 0x003f }, + { 0x0012, 0x006f }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0006, 0x000d }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0006, 0x000e }, + { 0x0007, 0x000b }, + { 0x0008, 0x000b }, + { 0x0009, 0x000a }, + { 0x000b, 0x000c }, + { 0x000c, 0x000e }, + { 0x000e, 0x0013 }, + { 0x000f, 0x001c }, + { 0x0011, 0x0040 }, + { 0x0012, 0x0070 }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0006, 0x000f }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0007, 0x000c }, + { 0x0009, 0x000b }, + { 0x000a, 0x000c }, + { 0x000b, 0x000d }, + { 0x000d, 0x0010 }, + { 0x000e, 0x0014 }, + { 0x0010, 0x0028 }, + { 0x0011, 0x0041 }, + { 0x0013, 0x00ce }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0007, 0x000d }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x000c }, + { 0x0009, 0x000c }, + { 0x000b, 0x000e }, + { 0x000c, 0x000f }, + { 0x000e, 0x0015 }, + { 0x0010, 0x0029 }, + { 0x0011, 0x0042 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0008, 0x000d }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x000e }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x000b, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000d, 0x0011 }, + { 0x000f, 0x001d }, + { 0x0010, 0x002a }, + { 0x0011, 0x0043 }, + { 0x0014, 0x003d }, + { 0x0013, 0x00cf }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x0009, 0x000f }, + { 0x0008, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x000d }, + { 0x000b, 0x0010 }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0012 }, + { 0x000e, 0x0016 }, + { 0x0010, 0x002b }, + { 0x0011, 0x0044 }, + { 0x0012, 0x0071 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x000b, 0x0011 }, + { 0x000a, 0x000e }, + { 0x000a, 0x000f }, + { 0x000b, 0x0012 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000e, 0x0017 }, + { 0x0010, 0x002c }, + { 0x0012, 0x0072 }, + { 0x0011, 0x0045 }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x000c, 0x0013 }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000e, 0x0018 }, + { 0x000f, 0x001e }, + { 0x0010, 0x002d }, + { 0x0011, 0x0046 }, + { 0x0011, 0x0047 }, + { 0x0011, 0x0048 }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x000e, 0x0019 }, + { 0x000d, 0x0016 }, + { 0x000d, 0x0017 }, + { 0x000e, 0x001a }, + { 0x000e, 0x001b }, + { 0x000f, 0x001f }, + { 0x0010, 0x002e }, + { 0x0011, 0x0049 }, + { 0x0012, 0x0073 }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0010, 0x002f }, + { 0x000f, 0x0020 }, + { 0x0010, 0x0030 }, + { 0x000f, 0x0021 }, + { 0x0010, 0x0031 }, + { 0x0011, 0x004a }, + { 0x0011, 0x004b }, + { 0x0012, 0x0074 }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0013, 0x00d2 }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0012, 0x0075 }, + { 0x0010, 0x0032 }, + { 0x0010, 0x0033 }, + { 0x0011, 0x004c }, + { 0x0011, 0x004d }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0012, 0x0076 }, + { 0x0013, 0x00d5 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0012, 0x0077 }, + { 0x0012, 0x0078 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0013, 0x00d8 }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0012, 0x0079 }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + { 0x0014, 0x0104 }, + { 0x0014, 0x0105 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x0107 }, + { 0x0014, 0x0108 }, + { 0x0014, 0x0109 }, + { 0x0014, 0x010a }, + { 0x0014, 0x010b }, + { 0x0014, 0x010c }, + { 0x0014, 0x010d }, + { 0x0014, 0x010e }, + { 0x0014, 0x010f }, + { 0x0014, 0x0110 }, + { 0x0014, 0x0111 }, + { 0x0014, 0x0112 }, + { 0x0014, 0x0113 }, + { 0x0014, 0x0114 }, + { 0x0014, 0x0115 }, + { 0x0014, 0x0116 }, + { 0x0014, 0x0117 }, + { 0x0014, 0x0118 }, + { 0x0014, 0x0119 }, + { 0x0014, 0x011a }, + { 0x0014, 0x011b }, + { 0x0014, 0x011c }, + { 0x0014, 0x011d }, + { 0x0014, 0x011e }, + { 0x0014, 0x011f }, + { 0x0014, 0x0120 }, + { 0x0014, 0x0121 }, + { 0x0014, 0x0122 }, + { 0x0014, 0x0123 }, + { 0x0014, 0x0124 }, + { 0x0014, 0x0125 }, + { 0x0014, 0x0126 }, + { 0x0014, 0x0127 }, + { 0x0014, 0x0128 }, + { 0x0014, 0x0129 }, + { 0x0014, 0x012a }, + { 0x0014, 0x012b }, + { 0x0014, 0x012c }, + { 0x0014, 0x012d }, + { 0x0014, 0x012e }, + { 0x0014, 0x012f }, + { 0x0014, 0x0130 }, + { 0x0014, 0x0131 }, + { 0x0014, 0x0132 }, + { 0x0014, 0x0133 }, + { 0x0014, 0x0134 }, + { 0x0014, 0x0135 }, + { 0x0014, 0x0136 }, + { 0x0014, 0x0137 }, + { 0x0014, 0x0138 }, + { 0x0014, 0x0139 }, + { 0x0014, 0x013a }, + { 0x0014, 0x013b }, + { 0x0014, 0x013c }, + { 0x0014, 0x013d }, + { 0x0014, 0x013e }, + { 0x0014, 0x013f }, + { 0x0014, 0x0140 }, + { 0x0014, 0x0141 }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0143 }, + { 0x0014, 0x0144 }, + { 0x0014, 0x0145 }, + { 0x0014, 0x0146 }, + { 0x0014, 0x0147 }, + { 0x0014, 0x0148 }, + { 0x0014, 0x0149 }, + { 0x0014, 0x014a }, + { 0x0014, 0x014b }, + { 0x0014, 0x014c }, + { 0x0014, 0x014d }, + { 0x0014, 0x014e }, + { 0x0014, 0x014f }, + { 0x0014, 0x0150 }, + { 0x0014, 0x0151 }, + { 0x0014, 0x0152 }, + { 0x0014, 0x0153 }, + { 0x0014, 0x0154 }, + { 0x0014, 0x0155 }, + { 0x0014, 0x0156 }, + { 0x0014, 0x0157 }, + { 0x0014, 0x0158 }, + { 0x0014, 0x0159 }, + { 0x0014, 0x015a }, + { 0x0014, 0x015b }, + { 0x0014, 0x015c }, + { 0x0014, 0x015d }, + { 0x0014, 0x015e }, + { 0x0014, 0x015f }, + { 0x0014, 0x0160 }, + { 0x0014, 0x0161 }, + { 0x0014, 0x0162 }, + { 0x0014, 0x0163 }, + { 0x0014, 0x0164 }, + { 0x0014, 0x0165 }, + { 0x0014, 0x0166 }, + { 0x0014, 0x0167 }, + { 0x0014, 0x0168 }, + { 0x0014, 0x0169 }, + { 0x0014, 0x016a }, + { 0x0014, 0x016b }, + { 0x0014, 0x016c }, + { 0x0014, 0x016d }, + { 0x0014, 0x016e }, + { 0x0014, 0x016f }, + { 0x0014, 0x0170 }, + { 0x0014, 0x0171 }, + { 0x0014, 0x0172 }, + { 0x0014, 0x0173 }, + { 0x0014, 0x0174 }, + { 0x0014, 0x0175 }, + { 0x0014, 0x0176 }, + { 0x0014, 0x0177 }, + { 0x0014, 0x0178 }, + { 0x0014, 0x0179 }, + { 0x0014, 0x017a }, + { 0x0014, 0x017b }, + { 0x0014, 0x017c }, + { 0x0014, 0x017d }, + { 0x0014, 0x017e }, + { 0x0014, 0x017f }, + { 0x0014, 0x0180 }, + { 0x0014, 0x0181 }, + { 0x0014, 0x0182 }, + { 0x0014, 0x0183 }, + { 0x0014, 0x0184 }, + { 0x0014, 0x0185 }, + { 0x0014, 0x0186 }, + { 0x0014, 0x0187 }, + { 0x0014, 0x0188 }, + { 0x0014, 0x0189 }, + { 0x0014, 0x018a }, + { 0x0014, 0x018b }, + { 0x0014, 0x018c }, + { 0x0014, 0x018d }, + { 0x0014, 0x018e }, + { 0x0014, 0x018f }, + { 0x0014, 0x0190 }, + { 0x0014, 0x0191 }, + { 0x0014, 0x0192 }, + { 0x0014, 0x0193 }, + { 0x0014, 0x0194 }, + { 0x0014, 0x0195 }, + { 0x0014, 0x0196 }, + { 0x0014, 0x0197 }, + { 0x0013, 0x00db }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec15[73][16] = { + { + 0x000cffff, + 0x000bffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x0002ffff, + 0x0001ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x00000019, + 0x0000001a, + 0x00000031, + 0x00000032, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, + { + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + }, + { + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, + { + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + }, + { + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + }, + { + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + 0x00030062, + }, + { + 0x00010091, + 0x00010091, + 0x00010092, + 0x00010092, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + }, + { + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + }, + { + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007a, + }, + { + 0x00010005, + 0x00010005, + 0x0001001e, + 0x0001001e, + 0x00010036, + 0x00010036, + 0x0001004d, + 0x0001004d, + 0x00010065, + 0x00010065, + 0x00010078, + 0x00010078, + 0x0001007b, + 0x0001007b, + 0x0001007c, + 0x0001007c, + }, + { + 0x0015ffff, + 0x0014ffff, + 0x0012ffff, + 0x0013ffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x00000006, + 0x0000001f, + 0x0000004e, + 0x0000007d, + 0x00000090, + 0x00000093, + 0x000000a9, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + }, + { + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + }, + { + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + }, + { + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + }, + { + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + }, + { + 0x000100ad, + 0x000100ad, + 0x000100c0, + 0x000100c0, + 0x000100c3, + 0x000100c3, + 0x000100c4, + 0x000100c4, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020038, + }, + { + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020067, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200c1, + 0x000200c1, + 0x000200c1, + 0x000200c1, + 0x000200c2, + 0x000200c2, + 0x000200c2, + 0x000200c2, + }, + { + 0x00000097, + 0x000000ae, + 0x000000c5, + 0x000000d8, + 0x000000d9, + 0x000000da, + 0x00010008, + 0x00010008, + 0x00010050, + 0x00010050, + 0x00010068, + 0x00010068, + 0x0001007f, + 0x0001007f, + 0x00010096, + 0x00010096, + }, + { + 0x002fffff, + 0x0020ffff, + 0x001fffff, + 0x001effff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x00000021, + 0x00000039, + 0x00000051, + 0x00000080, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + }, + { + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + 0x000300c6, + }, + { + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + 0x000300dc, + }, + { + 0x000300f1, + 0x000300f1, + 0x000300f1, + 0x000300f1, + 0x000300f1, + 0x000300f1, + 0x000300f1, + 0x000300f1, + 0x000300f2, + 0x000300f2, + 0x000300f2, + 0x000300f2, + 0x000300f2, + 0x000300f2, + 0x000300f2, + 0x000300f2, + }, + { + 0x00010109, + 0x00010109, + 0x0001010b, + 0x0001010b, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + }, + { + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020081, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200c7, + 0x000200c7, + 0x000200c7, + 0x000200c7, + }, + { + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200f0, + 0x000200f0, + 0x000200f0, + 0x000200f0, + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f4, + 0x000200f4, + 0x000200f4, + 0x000200f4, + }, + { + 0x0000010a, + 0x0000010c, + 0x00000121, + 0x00000122, + 0x0001000b, + 0x0001000b, + 0x00010023, + 0x00010023, + 0x00010053, + 0x00010053, + 0x00010099, + 0x00010099, + 0x000100de, + 0x000100de, + 0x000100f5, + 0x000100f5, + }, + { + 0x0024ffff, + 0x0022ffff, + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x0000003b, + 0x0000006b, + 0x00000082, + 0x0000009a, + 0x000000b1, + 0x000000c8, + 0x000000df, + 0x000000f6, + 0x00000108, + }, + { + 0x0040ffff, + 0x0041ffff, + 0x0042ffff, + 0x0043ffff, + 0x0044ffff, + 0x0045ffff, + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x002dffff, + 0x002effff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x0021ffff, + 0x0023ffff, + }, + { + 0x0002013b, + 0x0002013b, + 0x0002013b, + 0x0002013b, + 0x00020154, + 0x00020154, + 0x00020154, + 0x00020154, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00030083, + 0x00030083, + 0x00030083, + 0x00030083, + 0x00030083, + 0x00030083, + 0x00030083, + 0x00030083, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + }, + { + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + }, + { + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x0003006c, + 0x0003006c, + 0x0003006c, + 0x0003006c, + 0x0003006c, + 0x0003006c, + 0x0003006c, + 0x0003006c, + }, + { + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300b2, + 0x000300ca, + 0x000300ca, + 0x000300ca, + 0x000300ca, + 0x000300ca, + 0x000300ca, + 0x000300ca, + 0x000300ca, + }, + { + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + }, + { + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + }, + { + 0x0003010d, + 0x0003010d, + 0x0003010d, + 0x0003010d, + 0x0003010d, + 0x0003010d, + 0x0003010d, + 0x0003010d, + 0x0003010e, + 0x0003010e, + 0x0003010e, + 0x0003010e, + 0x0003010e, + 0x0003010e, + 0x0003010e, + 0x0003010e, + }, + { + 0x00030123, + 0x00030123, + 0x00030123, + 0x00030123, + 0x00030123, + 0x00030123, + 0x00030123, + 0x00030123, + 0x00030124, + 0x00030124, + 0x00030124, + 0x00030124, + 0x00030124, + 0x00030124, + 0x00030124, + 0x00030124, + }, + { + 0x0001013e, + 0x0001013e, + 0x0001016c, + 0x0001016c, + 0x0001016d, + 0x0001016d, + 0x0001023f, + 0x0001023f, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + }, + { + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020055, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200f8, + 0x000200f8, + 0x000200f8, + 0x000200f8, + }, + { + 0x0002010f, + 0x0002010f, + 0x0002010f, + 0x0002010f, + 0x00020120, + 0x00020120, + 0x00020120, + 0x00020120, + 0x00020127, + 0x00020127, + 0x00020127, + 0x00020127, + 0x0002013a, + 0x0002013a, + 0x0002013a, + 0x0002013a, + }, + { + 0x00000237, + 0x00000238, + 0x00000239, + 0x0000023a, + 0x0000023b, + 0x0000023c, + 0x0000023d, + 0x0000023e, + 0x0001000e, + 0x0001000e, + 0x00010026, + 0x00010026, + 0x0001006d, + 0x0001006d, + 0x0001009d, + 0x0001009d, + }, + { + 0x000100cb, + 0x000100cb, + 0x000100cc, + 0x000100cc, + 0x00010112, + 0x00010112, + 0x00010125, + 0x00010125, + 0x00010126, + 0x00010126, + 0x00010128, + 0x00010128, + 0x00010138, + 0x00010138, + 0x00010139, + 0x00010139, + }, + { + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + 0x0034ffff, + 0x0035ffff, + 0x0036ffff, + 0x0037ffff, + 0x0038ffff, + 0x0039ffff, + 0x003affff, + 0x003bffff, + 0x003cffff, + 0x003dffff, + 0x003effff, + 0x003fffff, + }, + { + 0x0000000d, + 0x0000000f, + 0x00000010, + 0x00000011, + 0x00000012, + 0x00000013, + 0x00000014, + 0x00000015, + 0x00000016, + 0x00000017, + 0x00000027, + 0x00000028, + 0x00000029, + 0x0000002a, + 0x0000002b, + 0x0000002c, + }, + { + 0x0000002d, + 0x0000002e, + 0x0000002f, + 0x0000003e, + 0x0000003f, + 0x00000040, + 0x00000041, + 0x00000042, + 0x00000043, + 0x00000044, + 0x00000045, + 0x00000046, + 0x00000047, + 0x00000056, + 0x00000057, + 0x00000058, + }, + { + 0x00000059, + 0x0000005a, + 0x0000005b, + 0x0000005c, + 0x0000005d, + 0x0000005e, + 0x0000005f, + 0x0000006e, + 0x0000006f, + 0x00000070, + 0x00000071, + 0x00000072, + 0x00000073, + 0x00000074, + 0x00000075, + 0x00000076, + }, + { + 0x00000077, + 0x00000084, + 0x00000085, + 0x00000086, + 0x00000087, + 0x00000088, + 0x00000089, + 0x0000008a, + 0x0000008b, + 0x0000008c, + 0x0000008d, + 0x0000008e, + 0x0000008f, + 0x0000009c, + 0x0000009e, + 0x0000009f, + }, + { + 0x000000a0, + 0x000000a1, + 0x000000a2, + 0x000000a3, + 0x000000a4, + 0x000000a5, + 0x000000a6, + 0x000000a7, + 0x000000b4, + 0x000000b5, + 0x000000b6, + 0x000000b7, + 0x000000b8, + 0x000000b9, + 0x000000ba, + 0x000000bb, + }, + { + 0x000000bc, + 0x000000bd, + 0x000000be, + 0x000000bf, + 0x000000cd, + 0x000000ce, + 0x000000cf, + 0x000000d0, + 0x000000d1, + 0x000000d2, + 0x000000d3, + 0x000000d4, + 0x000000d5, + 0x000000d6, + 0x000000d7, + 0x000000e3, + }, + { + 0x000000e4, + 0x000000e5, + 0x000000e6, + 0x000000e7, + 0x000000e8, + 0x000000e9, + 0x000000ea, + 0x000000eb, + 0x000000ec, + 0x000000ed, + 0x000000ee, + 0x000000ef, + 0x000000f9, + 0x000000fa, + 0x000000fb, + 0x000000fc, + }, + { + 0x000000fd, + 0x000000fe, + 0x000000ff, + 0x00000100, + 0x00000101, + 0x00000102, + 0x00000103, + 0x00000104, + 0x00000105, + 0x00000106, + 0x00000107, + 0x00000110, + 0x00000111, + 0x00000113, + 0x00000114, + 0x00000115, + }, + { + 0x00000116, + 0x00000117, + 0x00000118, + 0x00000119, + 0x0000011a, + 0x0000011b, + 0x0000011c, + 0x0000011d, + 0x0000011e, + 0x0000011f, + 0x00000129, + 0x0000012a, + 0x0000012b, + 0x0000012c, + 0x0000012d, + 0x0000012e, + }, + { + 0x0000012f, + 0x00000130, + 0x00000131, + 0x00000132, + 0x00000133, + 0x00000134, + 0x00000135, + 0x00000136, + 0x00000137, + 0x0000013c, + 0x0000013d, + 0x0000013f, + 0x00000140, + 0x00000141, + 0x00000142, + 0x00000143, + }, + { + 0x00000144, + 0x00000145, + 0x00000146, + 0x00000147, + 0x00000148, + 0x00000149, + 0x0000014a, + 0x0000014b, + 0x0000014c, + 0x0000014d, + 0x0000014e, + 0x0000014f, + 0x00000150, + 0x00000151, + 0x00000152, + 0x00000153, + }, + { + 0x00000155, + 0x00000156, + 0x00000157, + 0x00000158, + 0x00000159, + 0x0000015a, + 0x0000015b, + 0x0000015c, + 0x0000015d, + 0x0000015e, + 0x0000015f, + 0x00000160, + 0x00000161, + 0x00000162, + 0x00000163, + 0x00000164, + }, + { + 0x00000165, + 0x00000166, + 0x00000167, + 0x00000168, + 0x00000169, + 0x0000016a, + 0x0000016b, + 0x0000016e, + 0x0000016f, + 0x00000170, + 0x00000171, + 0x00000172, + 0x00000173, + 0x00000174, + 0x00000175, + 0x00000176, + }, + { + 0x00000177, + 0x00000178, + 0x00000179, + 0x0000017a, + 0x0000017b, + 0x0000017c, + 0x0000017d, + 0x0000017e, + 0x0000017f, + 0x00000180, + 0x00000181, + 0x00000182, + 0x00000183, + 0x00000184, + 0x00000185, + 0x00000186, + }, + { + 0x00000187, + 0x00000188, + 0x00000189, + 0x0000018a, + 0x0000018b, + 0x0000018c, + 0x0000018d, + 0x0000018e, + 0x0000018f, + 0x00000190, + 0x00000191, + 0x00000192, + 0x00000193, + 0x00000194, + 0x00000195, + 0x00000196, + }, + { + 0x00000197, + 0x00000198, + 0x00000199, + 0x0000019a, + 0x0000019b, + 0x0000019c, + 0x0000019d, + 0x0000019e, + 0x0000019f, + 0x000001a0, + 0x000001a1, + 0x000001a2, + 0x000001a3, + 0x000001a4, + 0x000001a5, + 0x000001a6, + }, + { + 0x000001a7, + 0x000001a8, + 0x000001a9, + 0x000001aa, + 0x000001ab, + 0x000001ac, + 0x000001ad, + 0x000001ae, + 0x000001af, + 0x000001b0, + 0x000001b1, + 0x000001b2, + 0x000001b3, + 0x000001b4, + 0x000001b5, + 0x000001b6, + }, + { + 0x000001b7, + 0x000001b8, + 0x000001b9, + 0x000001ba, + 0x000001bb, + 0x000001bc, + 0x000001bd, + 0x000001be, + 0x000001bf, + 0x000001c0, + 0x000001c1, + 0x000001c2, + 0x000001c3, + 0x000001c4, + 0x000001c5, + 0x000001c6, + }, + { + 0x000001c7, + 0x000001c8, + 0x000001c9, + 0x000001ca, + 0x000001cb, + 0x000001cc, + 0x000001cd, + 0x000001ce, + 0x000001cf, + 0x000001d0, + 0x000001d1, + 0x000001d2, + 0x000001d3, + 0x000001d4, + 0x000001d5, + 0x000001d6, + }, + { + 0x000001d7, + 0x000001d8, + 0x000001d9, + 0x000001da, + 0x000001db, + 0x000001dc, + 0x000001dd, + 0x000001de, + 0x000001df, + 0x000001e0, + 0x000001e1, + 0x000001e2, + 0x000001e3, + 0x000001e4, + 0x000001e5, + 0x000001e6, + }, + { + 0x000001e7, + 0x000001e8, + 0x000001e9, + 0x000001ea, + 0x000001eb, + 0x000001ec, + 0x000001ed, + 0x000001ee, + 0x000001ef, + 0x000001f0, + 0x000001f1, + 0x000001f2, + 0x000001f3, + 0x000001f4, + 0x000001f5, + 0x000001f6, + }, + { + 0x000001f7, + 0x000001f8, + 0x000001f9, + 0x000001fa, + 0x000001fb, + 0x000001fc, + 0x000001fd, + 0x000001fe, + 0x000001ff, + 0x00000200, + 0x00000201, + 0x00000202, + 0x00000203, + 0x00000204, + 0x00000205, + 0x00000206, + }, + { + 0x00000207, + 0x00000208, + 0x00000209, + 0x0000020a, + 0x0000020b, + 0x0000020c, + 0x0000020d, + 0x0000020e, + 0x0000020f, + 0x00000210, + 0x00000211, + 0x00000212, + 0x00000213, + 0x00000214, + 0x00000215, + 0x00000216, + }, + { + 0x00000217, + 0x00000218, + 0x00000219, + 0x0000021a, + 0x0000021b, + 0x0000021c, + 0x0000021d, + 0x0000021e, + 0x0000021f, + 0x00000220, + 0x00000221, + 0x00000222, + 0x00000223, + 0x00000224, + 0x00000225, + 0x00000226, + }, + { + 0x00000227, + 0x00000228, + 0x00000229, + 0x0000022a, + 0x0000022b, + 0x0000022c, + 0x0000022d, + 0x0000022e, + 0x0000022f, + 0x00000230, + 0x00000231, + 0x00000232, + 0x00000233, + 0x00000234, + 0x00000235, + 0x00000236, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc16[729][2] = +#else +const uint16_t c_aauiLCLDHuffEnc16[729][2] = +#endif + { + { 0x0006, 0x000d }, + { 0x0005, 0x0010 }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x000a }, + { 0x0009, 0x000b }, + { 0x000b, 0x000d }, + { 0x000c, 0x000e }, + { 0x000e, 0x0016 }, + { 0x0010, 0x002d }, + { 0x0011, 0x0051 }, + { 0x0012, 0x008c }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0005, 0x0011 }, + { 0x0004, 0x000f }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0007, 0x000c }, + { 0x0008, 0x000b }, + { 0x000a, 0x000c }, + { 0x000b, 0x000e }, + { 0x000d, 0x0010 }, + { 0x000e, 0x0017 }, + { 0x000f, 0x001c }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0006, 0x0013 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0006, 0x0014 }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0009, 0x000c }, + { 0x000a, 0x000d }, + { 0x000c, 0x000f }, + { 0x000d, 0x0011 }, + { 0x000f, 0x001d }, + { 0x0011, 0x0052 }, + { 0x0012, 0x008d }, + { 0x0012, 0x008e }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0006, 0x0015 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0007, 0x000f }, + { 0x0008, 0x000c }, + { 0x0009, 0x000d }, + { 0x000b, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000d, 0x0012 }, + { 0x000f, 0x001e }, + { 0x0012, 0x008f }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0006, 0x0018 }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x000d }, + { 0x000a, 0x000e }, + { 0x000b, 0x0010 }, + { 0x000c, 0x0011 }, + { 0x000e, 0x0018 }, + { 0x0010, 0x002e }, + { 0x0012, 0x0090 }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0007, 0x0012 }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0008, 0x000e }, + { 0x0009, 0x000e }, + { 0x000b, 0x0011 }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000e, 0x0019 }, + { 0x0010, 0x002f }, + { 0x0012, 0x0091 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0007, 0x0015 }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0008, 0x000f }, + { 0x0009, 0x000f }, + { 0x000a, 0x000f }, + { 0x000b, 0x0012 }, + { 0x000d, 0x0014 }, + { 0x000e, 0x001a }, + { 0x000f, 0x001f }, + { 0x0013, 0x010f }, + { 0x0011, 0x0053 }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x0008, 0x0010 }, + { 0x0007, 0x0018 }, + { 0x0007, 0x0019 }, + { 0x0008, 0x0011 }, + { 0x0008, 0x0012 }, + { 0x0009, 0x0010 }, + { 0x000a, 0x0010 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0013 }, + { 0x000e, 0x001b }, + { 0x000f, 0x0020 }, + { 0x0010, 0x0030 }, + { 0x0012, 0x0092 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0009, 0x0011 }, + { 0x0008, 0x0013 }, + { 0x0009, 0x0012 }, + { 0x0009, 0x0013 }, + { 0x000a, 0x0011 }, + { 0x000a, 0x0012 }, + { 0x000b, 0x0014 }, + { 0x000c, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000e, 0x001c }, + { 0x000f, 0x0021 }, + { 0x0013, 0x0110 }, + { 0x0012, 0x0093 }, + { 0x0012, 0x0094 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x000b, 0x0015 }, + { 0x000a, 0x0013 }, + { 0x000a, 0x0014 }, + { 0x000a, 0x0015 }, + { 0x000b, 0x0016 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0016 }, + { 0x000d, 0x0017 }, + { 0x000f, 0x0022 }, + { 0x0010, 0x0031 }, + { 0x0012, 0x0095 }, + { 0x0012, 0x0096 }, + { 0x0014, 0x006f }, + { 0x0013, 0x0111 }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x000c, 0x0016 }, + { 0x000b, 0x0017 }, + { 0x000c, 0x0017 }, + { 0x000c, 0x0018 }, + { 0x000c, 0x0019 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x001d }, + { 0x000f, 0x0023 }, + { 0x000f, 0x0024 }, + { 0x0011, 0x0054 }, + { 0x0012, 0x0097 }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x000e, 0x001e }, + { 0x000d, 0x0019 }, + { 0x000d, 0x001a }, + { 0x000d, 0x001b }, + { 0x000e, 0x001f }, + { 0x000f, 0x0025 }, + { 0x000f, 0x0026 }, + { 0x0010, 0x0032 }, + { 0x0010, 0x0033 }, + { 0x0012, 0x0098 }, + { 0x0013, 0x0112 }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x000f, 0x0027 }, + { 0x000f, 0x0028 }, + { 0x000f, 0x0029 }, + { 0x000f, 0x002a }, + { 0x0010, 0x0034 }, + { 0x000f, 0x002b }, + { 0x0011, 0x0055 }, + { 0x0012, 0x0099 }, + { 0x0012, 0x009a }, + { 0x0012, 0x009b }, + { 0x0014, 0x009d }, + { 0x0013, 0x0113 }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0011, 0x0056 }, + { 0x0010, 0x0035 }, + { 0x0010, 0x0036 }, + { 0x0010, 0x0037 }, + { 0x0011, 0x0057 }, + { 0x0012, 0x009c }, + { 0x0012, 0x009d }, + { 0x0012, 0x009e }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0012, 0x009f }, + { 0x0011, 0x0058 }, + { 0x0012, 0x00a0 }, + { 0x0014, 0x00c0 }, + { 0x0011, 0x0059 }, + { 0x0013, 0x0114 }, + { 0x0012, 0x00a1 }, + { 0x0014, 0x00c1 }, + { 0x0013, 0x0115 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + { 0x0014, 0x0104 }, + { 0x0014, 0x0105 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x0107 }, + { 0x0014, 0x0108 }, + { 0x0014, 0x0109 }, + { 0x0014, 0x010a }, + { 0x0014, 0x010b }, + { 0x0014, 0x010c }, + { 0x0014, 0x010d }, + { 0x0014, 0x010e }, + { 0x0014, 0x010f }, + { 0x0014, 0x0110 }, + { 0x0014, 0x0111 }, + { 0x0014, 0x0112 }, + { 0x0014, 0x0113 }, + { 0x0014, 0x0114 }, + { 0x0014, 0x0115 }, + { 0x0014, 0x0116 }, + { 0x0014, 0x0117 }, + { 0x0014, 0x0118 }, + { 0x0014, 0x0119 }, + { 0x0014, 0x011a }, + { 0x0014, 0x011b }, + { 0x0014, 0x011c }, + { 0x0014, 0x011d }, + { 0x0014, 0x011e }, + { 0x0014, 0x011f }, + { 0x0014, 0x0120 }, + { 0x0014, 0x0121 }, + { 0x0014, 0x0122 }, + { 0x0014, 0x0123 }, + { 0x0014, 0x0124 }, + { 0x0014, 0x0125 }, + { 0x0013, 0x0116 }, + { 0x0014, 0x0126 }, + { 0x0014, 0x0127 }, + { 0x0014, 0x0128 }, + { 0x0014, 0x0129 }, + { 0x0014, 0x012a }, + { 0x0014, 0x012b }, + { 0x0014, 0x012c }, + { 0x0014, 0x012d }, + { 0x0014, 0x012e }, + { 0x0014, 0x012f }, + { 0x0014, 0x0130 }, + { 0x0014, 0x0131 }, + { 0x0014, 0x0132 }, + { 0x0014, 0x0133 }, + { 0x0014, 0x0134 }, + { 0x0014, 0x0135 }, + { 0x0014, 0x0136 }, + { 0x0014, 0x0137 }, + { 0x0014, 0x0138 }, + { 0x0014, 0x0139 }, + { 0x0014, 0x013a }, + { 0x0014, 0x013b }, + { 0x0014, 0x013c }, + { 0x0014, 0x013d }, + { 0x0014, 0x013e }, + { 0x0014, 0x013f }, + { 0x0014, 0x0140 }, + { 0x0014, 0x0141 }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0143 }, + { 0x0014, 0x0144 }, + { 0x0014, 0x0145 }, + { 0x0014, 0x0146 }, + { 0x0014, 0x0147 }, + { 0x0014, 0x0148 }, + { 0x0014, 0x0149 }, + { 0x0014, 0x014a }, + { 0x0014, 0x014b }, + { 0x0014, 0x014c }, + { 0x0014, 0x014d }, + { 0x0014, 0x014e }, + { 0x0014, 0x014f }, + { 0x0014, 0x0150 }, + { 0x0014, 0x0151 }, + { 0x0014, 0x0152 }, + { 0x0014, 0x0153 }, + { 0x0014, 0x0154 }, + { 0x0014, 0x0155 }, + { 0x0014, 0x0156 }, + { 0x0014, 0x0157 }, + { 0x0014, 0x0158 }, + { 0x0014, 0x0159 }, + { 0x0014, 0x015a }, + { 0x0014, 0x015b }, + { 0x0014, 0x015c }, + { 0x0014, 0x015d }, + { 0x0014, 0x015e }, + { 0x0014, 0x015f }, + { 0x0014, 0x0160 }, + { 0x0014, 0x0161 }, + { 0x0014, 0x0162 }, + { 0x0014, 0x0163 }, + { 0x0014, 0x0164 }, + { 0x0014, 0x0165 }, + { 0x0014, 0x0166 }, + { 0x0014, 0x0167 }, + { 0x0014, 0x0168 }, + { 0x0014, 0x0169 }, + { 0x0014, 0x016a }, + { 0x0014, 0x016b }, + { 0x0014, 0x016c }, + { 0x0014, 0x016d }, + { 0x0014, 0x016e }, + { 0x0014, 0x016f }, + { 0x0014, 0x0170 }, + { 0x0014, 0x0171 }, + { 0x0014, 0x0172 }, + { 0x0014, 0x0173 }, + { 0x0014, 0x0174 }, + { 0x0014, 0x0175 }, + { 0x0014, 0x0176 }, + { 0x0014, 0x0177 }, + { 0x0014, 0x0178 }, + { 0x0014, 0x0179 }, + { 0x0014, 0x017a }, + { 0x0014, 0x017b }, + { 0x0014, 0x017c }, + { 0x0014, 0x017d }, + { 0x0014, 0x017e }, + { 0x0014, 0x017f }, + { 0x0014, 0x0180 }, + { 0x0014, 0x0181 }, + { 0x0014, 0x0182 }, + { 0x0014, 0x0183 }, + { 0x0014, 0x0184 }, + { 0x0014, 0x0185 }, + { 0x0014, 0x0186 }, + { 0x0014, 0x0187 }, + { 0x0014, 0x0188 }, + { 0x0014, 0x0189 }, + { 0x0014, 0x018a }, + { 0x0014, 0x018b }, + { 0x0014, 0x018c }, + { 0x0014, 0x018d }, + { 0x0014, 0x018e }, + { 0x0014, 0x018f }, + { 0x0014, 0x0190 }, + { 0x0014, 0x0191 }, + { 0x0014, 0x0192 }, + { 0x0014, 0x0193 }, + { 0x0014, 0x0194 }, + { 0x0014, 0x0195 }, + { 0x0014, 0x0196 }, + { 0x0014, 0x0197 }, + { 0x0014, 0x0198 }, + { 0x0014, 0x0199 }, + { 0x0014, 0x019a }, + { 0x0014, 0x019b }, + { 0x0014, 0x019c }, + { 0x0014, 0x019d }, + { 0x0014, 0x019e }, + { 0x0014, 0x019f }, + { 0x0014, 0x01a0 }, + { 0x0014, 0x01a1 }, + { 0x0014, 0x01a2 }, + { 0x0014, 0x01a3 }, + { 0x0014, 0x01a4 }, + { 0x0014, 0x01a5 }, + { 0x0014, 0x01a6 }, + { 0x0014, 0x01a7 }, + { 0x0014, 0x01a8 }, + { 0x0014, 0x01a9 }, + { 0x0014, 0x01aa }, + { 0x0014, 0x01ab }, + { 0x0014, 0x01ac }, + { 0x0014, 0x01ad }, + { 0x0014, 0x01ae }, + { 0x0014, 0x01af }, + { 0x0014, 0x01b0 }, + { 0x0014, 0x01b1 }, + { 0x0014, 0x01b2 }, + { 0x0014, 0x01b3 }, + { 0x0014, 0x01b4 }, + { 0x0014, 0x01b5 }, + { 0x0014, 0x01b6 }, + { 0x0014, 0x01b7 }, + { 0x0014, 0x01b8 }, + { 0x0014, 0x01b9 }, + { 0x0014, 0x01ba }, + { 0x0014, 0x01bb }, + { 0x0014, 0x01bc }, + { 0x0014, 0x01bd }, + { 0x0014, 0x01be }, + { 0x0014, 0x01bf }, + { 0x0014, 0x01c0 }, + { 0x0014, 0x01c1 }, + { 0x0014, 0x01c2 }, + { 0x0014, 0x01c3 }, + { 0x0014, 0x01c4 }, + { 0x0014, 0x01c5 }, + { 0x0014, 0x01c6 }, + { 0x0014, 0x01c7 }, + { 0x0014, 0x01c8 }, + { 0x0014, 0x01c9 }, + { 0x0014, 0x01ca }, + { 0x0014, 0x01cb }, + { 0x0014, 0x01cc }, + { 0x0014, 0x01cd }, + { 0x0014, 0x01ce }, + { 0x0014, 0x01cf }, + { 0x0014, 0x01d0 }, + { 0x0014, 0x01d1 }, + { 0x0014, 0x01d2 }, + { 0x0014, 0x01d3 }, + { 0x0014, 0x01d4 }, + { 0x0014, 0x01d5 }, + { 0x0014, 0x01d6 }, + { 0x0014, 0x01d7 }, + { 0x0014, 0x01d8 }, + { 0x0014, 0x01d9 }, + { 0x0014, 0x01da }, + { 0x0014, 0x01db }, + { 0x0014, 0x01dc }, + { 0x0014, 0x01dd }, + { 0x0014, 0x01de }, + { 0x0014, 0x01df }, + { 0x0014, 0x01e0 }, + { 0x0014, 0x01e1 }, + { 0x0014, 0x01e2 }, + { 0x0014, 0x01e3 }, + { 0x0014, 0x01e4 }, + { 0x0014, 0x01e5 }, + { 0x0014, 0x01e6 }, + { 0x0014, 0x01e7 }, + { 0x0014, 0x01e8 }, + { 0x0014, 0x01e9 }, + { 0x0014, 0x01ea }, + { 0x0014, 0x01eb }, + { 0x0014, 0x01ec }, + { 0x0014, 0x01ed }, + { 0x0014, 0x01ee }, + { 0x0014, 0x01ef }, + { 0x0014, 0x01f0 }, + { 0x0014, 0x01f1 }, + { 0x0014, 0x01f2 }, + { 0x0014, 0x01f3 }, + { 0x0014, 0x01f4 }, + { 0x0014, 0x01f5 }, + { 0x0014, 0x01f6 }, + { 0x0014, 0x01f7 }, + { 0x0014, 0x01f8 }, + { 0x0014, 0x01f9 }, + { 0x0014, 0x01fa }, + { 0x0014, 0x01fb }, + { 0x0014, 0x01fc }, + { 0x0014, 0x01fd }, + { 0x0014, 0x01fe }, + { 0x0014, 0x01ff }, + { 0x0014, 0x0200 }, + { 0x0014, 0x0201 }, + { 0x0014, 0x0202 }, + { 0x0014, 0x0203 }, + { 0x0014, 0x0204 }, + { 0x0014, 0x0205 }, + { 0x0014, 0x0206 }, + { 0x0014, 0x0207 }, + { 0x0014, 0x0208 }, + { 0x0014, 0x0209 }, + { 0x0014, 0x020a }, + { 0x0014, 0x020b }, + { 0x0014, 0x020c }, + { 0x0014, 0x020d }, + { 0x0014, 0x020e }, + { 0x0014, 0x020f }, + { 0x0014, 0x0210 }, + { 0x0014, 0x0211 }, + { 0x0014, 0x0212 }, + { 0x0014, 0x0213 }, + { 0x0014, 0x0214 }, + { 0x0014, 0x0215 }, + { 0x0013, 0x0117 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec16[85][16] = { + { + 0x000fffff, + 0x000dffff, + 0x000effff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0000001c, + }, + { + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + }, + { + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + }, + { + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + }, + { + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + }, + { + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006e, + 0x0003006e, + 0x0003006e, + 0x0003006e, + 0x0003006e, + 0x0003006e, + 0x0003006e, + 0x0003006e, + }, + { + 0x000100be, + 0x000100be, + 0x000100bf, + 0x000100bf, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + }, + { + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + }, + { + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + }, + { + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020088, + }, + { + 0x00020089, + 0x00020089, + 0x00020089, + 0x00020089, + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a4, + }, + { + 0x000000bd, + 0x000000c0, + 0x000000c1, + 0x000000d9, + 0x00010005, + 0x00010005, + 0x00010006, + 0x00010006, + 0x00010022, + 0x00010022, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x00010057, + 0x00010057, + }, + { + 0x00010071, + 0x00010071, + 0x00010072, + 0x00010072, + 0x00010087, + 0x00010087, + 0x0001008b, + 0x0001008b, + 0x0001008c, + 0x0001008c, + 0x000100a2, + 0x000100a2, + 0x000100a5, + 0x000100a5, + 0x000100a6, + 0x000100a6, + }, + { + 0x0019ffff, + 0x0017ffff, + 0x0018ffff, + 0x0015ffff, + 0x0016ffff, + 0x0012ffff, + 0x0010ffff, + 0x0011ffff, + 0x0013ffff, + 0x0014ffff, + 0x00000007, + 0x00000023, + 0x00000058, + 0x00000073, + 0x0000008d, + 0x000000a7, + }, + { + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + }, + { + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + 0x000300a8, + }, + { + 0x000200f5, + 0x000200f5, + 0x000200f5, + 0x000200f5, + 0x000200f6, + 0x000200f6, + 0x000200f6, + 0x000200f6, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300c2, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + 0x000300d8, + }, + { + 0x000300da, + 0x000300da, + 0x000300da, + 0x000300da, + 0x000300da, + 0x000300da, + 0x000300da, + 0x000300da, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + }, + { + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + 0x000200a9, + 0x000200a9, + 0x000200a9, + 0x000200a9, + }, + { + 0x000200c3, + 0x000200c3, + 0x000200c3, + 0x000200c3, + 0x000200dc, + 0x000200dc, + 0x000200dc, + 0x000200dc, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200f4, + 0x000200f4, + 0x000200f4, + 0x000200f4, + }, + { + 0x0000005b, + 0x00000076, + 0x00000090, + 0x000000c5, + 0x000000df, + 0x000000f8, + 0x0000010e, + 0x00000110, + 0x00000111, + 0x00000112, + 0x00010009, + 0x00010009, + 0x00010025, + 0x00010025, + 0x0001005a, + 0x0001005a, + }, + { + 0x00010075, + 0x00010075, + 0x0001008f, + 0x0001008f, + 0x000100aa, + 0x000100aa, + 0x000100c4, + 0x000100c4, + 0x000100de, + 0x000100de, + 0x000100f3, + 0x000100f3, + 0x000100f7, + 0x000100f7, + 0x0001010f, + 0x0001010f, + }, + { + 0x0032ffff, + 0x0043ffff, + 0x0025ffff, + 0x0023ffff, + 0x0024ffff, + 0x0021ffff, + 0x0020ffff, + 0x0022ffff, + 0x001cffff, + 0x001affff, + 0x001bffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0000000a, + 0x00000040, + }, + { + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + }, + { + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + }, + { + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + }, + { + 0x000300f9, + 0x000300f9, + 0x000300f9, + 0x000300f9, + 0x000300f9, + 0x000300f9, + 0x000300f9, + 0x000300f9, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + }, + { + 0x00030113, + 0x00030113, + 0x00030113, + 0x00030113, + 0x00030113, + 0x00030113, + 0x00030113, + 0x00030113, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + }, + { + 0x0003012b, + 0x0003012b, + 0x0003012b, + 0x0003012b, + 0x0003012b, + 0x0003012b, + 0x0003012b, + 0x0003012b, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + }, + { + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200c6, + 0x000200c6, + 0x000200c6, + 0x000200c6, + }, + { + 0x00010145, + 0x00010145, + 0x00010146, + 0x00010146, + 0x00010147, + 0x00010147, + 0x00010149, + 0x00010149, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + }, + { + 0x000200e1, + 0x000200e1, + 0x000200e1, + 0x000200e1, + 0x00020114, + 0x00020114, + 0x00020114, + 0x00020114, + 0x00020129, + 0x00020129, + 0x00020129, + 0x00020129, + 0x0002012d, + 0x0002012d, + 0x0002012d, + 0x0002012d, + }, + { + 0x000000c8, + 0x000000fc, + 0x00000130, + 0x00000131, + 0x00000148, + 0x00000160, + 0x00000161, + 0x00000162, + 0x00010028, + 0x00010028, + 0x00010042, + 0x00010042, + 0x0001005d, + 0x0001005d, + 0x000100ad, + 0x000100ad, + }, + { + 0x000100c7, + 0x000100c7, + 0x000100e2, + 0x000100e2, + 0x000100fb, + 0x000100fb, + 0x00010115, + 0x00010115, + 0x00010116, + 0x00010116, + 0x0001012e, + 0x0001012e, + 0x0001012f, + 0x0001012f, + 0x00010144, + 0x00010144, + }, + { + 0x0054ffff, + 0x0031ffff, + 0x0030ffff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + 0x0027ffff, + 0x0026ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x0000000c, + 0x00000078, + 0x00000093, + }, + { + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + 0x000300af, + }, + { + 0x0002017c, + 0x0002017c, + 0x0002017c, + 0x0002017c, + 0x00020180, + 0x00020180, + 0x00020180, + 0x00020180, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x00030117, + 0x00030117, + 0x00030117, + 0x00030117, + 0x00030117, + 0x00030117, + 0x00030117, + 0x00030117, + 0x0003014a, + 0x0003014a, + 0x0003014a, + 0x0003014a, + 0x0003014a, + 0x0003014a, + 0x0003014a, + 0x0003014a, + }, + { + 0x0003015f, + 0x0003015f, + 0x0003015f, + 0x0003015f, + 0x0003015f, + 0x0003015f, + 0x0003015f, + 0x0003015f, + 0x00030163, + 0x00030163, + 0x00030163, + 0x00030163, + 0x00030163, + 0x00030163, + 0x00030163, + 0x00030163, + }, + { + 0x0003017b, + 0x0003017b, + 0x0003017b, + 0x0003017b, + 0x0003017b, + 0x0003017b, + 0x0003017b, + 0x0003017b, + 0x0003017e, + 0x0003017e, + 0x0003017e, + 0x0003017e, + 0x0003017e, + 0x0003017e, + 0x0003017e, + 0x0003017e, + }, + { + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020045, + 0x00020045, + 0x00020045, + 0x00020045, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005e, + }, + { + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020094, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200e4, + 0x000200e4, + 0x000200e4, + 0x000200e4, + }, + { + 0x000200e5, + 0x000200e5, + 0x000200e5, + 0x000200e5, + 0x000200fd, + 0x000200fd, + 0x000200fd, + 0x000200fd, + 0x000200fe, + 0x000200fe, + 0x000200fe, + 0x000200fe, + 0x00020118, + 0x00020118, + 0x00020118, + 0x00020118, + }, + { + 0x00020132, + 0x00020132, + 0x00020132, + 0x00020132, + 0x0002014b, + 0x0002014b, + 0x0002014b, + 0x0002014b, + 0x0002014c, + 0x0002014c, + 0x0002014c, + 0x0002014c, + 0x0002014d, + 0x0002014d, + 0x0002014d, + 0x0002014d, + }, + { + 0x00020164, + 0x00020164, + 0x00020164, + 0x00020164, + 0x00020165, + 0x00020165, + 0x00020165, + 0x00020165, + 0x00020166, + 0x00020166, + 0x00020166, + 0x00020166, + 0x0002017a, + 0x0002017a, + 0x0002017a, + 0x0002017a, + }, + { + 0x000100e3, + 0x000100e3, + 0x00010100, + 0x00010100, + 0x00010133, + 0x00010133, + 0x0001014f, + 0x0001014f, + 0x0001017f, + 0x0001017f, + 0x00010182, + 0x00010182, + 0x000101e7, + 0x000101e7, + 0x000102d8, + 0x000102d8, + }, + { + 0x000002d2, + 0x000002d3, + 0x000002d4, + 0x000002d5, + 0x000002d6, + 0x000002d7, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001007a, + 0x0001007a, + 0x0001007b, + 0x0001007b, + 0x000100ae, + 0x000100ae, + }, + { + 0x0034ffff, + 0x0033ffff, + 0x0035ffff, + 0x0036ffff, + 0x0039ffff, + 0x0037ffff, + 0x0038ffff, + 0x003affff, + 0x003bffff, + 0x003cffff, + 0x003dffff, + 0x003effff, + 0x003fffff, + 0x0040ffff, + 0x0041ffff, + 0x0042ffff, + }, + { + 0x0000002f, + 0x00000030, + 0x00000031, + 0x00000032, + 0x00000033, + 0x00000034, + 0x00000035, + 0x00000046, + 0x00000047, + 0x00000048, + 0x00000049, + 0x0000004a, + 0x0000004b, + 0x0000004c, + 0x0000004d, + 0x0000004e, + }, + { + 0x0000000f, + 0x00000010, + 0x00000011, + 0x00000012, + 0x00000013, + 0x00000014, + 0x00000015, + 0x00000016, + 0x00000017, + 0x00000018, + 0x00000019, + 0x0000001a, + 0x0000002b, + 0x0000002c, + 0x0000002d, + 0x0000002e, + }, + { + 0x0000004f, + 0x00000050, + 0x0000005f, + 0x00000060, + 0x00000061, + 0x00000062, + 0x00000063, + 0x00000064, + 0x00000065, + 0x00000066, + 0x00000067, + 0x00000068, + 0x00000069, + 0x0000006a, + 0x0000006b, + 0x0000007c, + }, + { + 0x0000007d, + 0x0000007e, + 0x0000007f, + 0x00000080, + 0x00000081, + 0x00000082, + 0x00000083, + 0x00000084, + 0x00000085, + 0x00000086, + 0x00000095, + 0x00000096, + 0x00000097, + 0x00000098, + 0x00000099, + 0x0000009a, + }, + { + 0x000000b9, + 0x000000ba, + 0x000000bb, + 0x000000bc, + 0x000000ca, + 0x000000cb, + 0x000000cc, + 0x000000cd, + 0x000000ce, + 0x000000cf, + 0x000000d0, + 0x000000d1, + 0x000000d2, + 0x000000d3, + 0x000000d4, + 0x000000d5, + }, + { + 0x000000d6, + 0x000000d7, + 0x000000e6, + 0x000000e7, + 0x000000e8, + 0x000000e9, + 0x000000ea, + 0x000000eb, + 0x000000ec, + 0x000000ed, + 0x000000ee, + 0x000000ef, + 0x000000f0, + 0x000000f1, + 0x000000f2, + 0x000000ff, + }, + { + 0x0000009b, + 0x0000009c, + 0x0000009d, + 0x0000009e, + 0x0000009f, + 0x000000a0, + 0x000000a1, + 0x000000b0, + 0x000000b1, + 0x000000b2, + 0x000000b3, + 0x000000b4, + 0x000000b5, + 0x000000b6, + 0x000000b7, + 0x000000b8, + }, + { + 0x00000101, + 0x00000102, + 0x00000103, + 0x00000104, + 0x00000105, + 0x00000106, + 0x00000107, + 0x00000108, + 0x00000109, + 0x0000010a, + 0x0000010b, + 0x0000010c, + 0x0000010d, + 0x00000119, + 0x0000011a, + 0x0000011b, + }, + { + 0x0000011c, + 0x0000011d, + 0x0000011e, + 0x0000011f, + 0x00000120, + 0x00000121, + 0x00000122, + 0x00000123, + 0x00000124, + 0x00000125, + 0x00000126, + 0x00000127, + 0x00000128, + 0x00000134, + 0x00000135, + 0x00000136, + }, + { + 0x00000137, + 0x00000138, + 0x00000139, + 0x0000013a, + 0x0000013b, + 0x0000013c, + 0x0000013d, + 0x0000013e, + 0x0000013f, + 0x00000140, + 0x00000141, + 0x00000142, + 0x00000143, + 0x0000014e, + 0x00000150, + 0x00000151, + }, + { + 0x00000152, + 0x00000153, + 0x00000154, + 0x00000155, + 0x00000156, + 0x00000157, + 0x00000158, + 0x00000159, + 0x0000015a, + 0x0000015b, + 0x0000015c, + 0x0000015d, + 0x0000015e, + 0x00000167, + 0x00000168, + 0x00000169, + }, + { + 0x0000016a, + 0x0000016b, + 0x0000016c, + 0x0000016d, + 0x0000016e, + 0x0000016f, + 0x00000170, + 0x00000171, + 0x00000172, + 0x00000173, + 0x00000174, + 0x00000175, + 0x00000176, + 0x00000177, + 0x00000178, + 0x00000179, + }, + { + 0x0000017d, + 0x00000181, + 0x00000183, + 0x00000184, + 0x00000185, + 0x00000186, + 0x00000187, + 0x00000188, + 0x00000189, + 0x0000018a, + 0x0000018b, + 0x0000018c, + 0x0000018d, + 0x0000018e, + 0x0000018f, + 0x00000190, + }, + { + 0x00000191, + 0x00000192, + 0x00000193, + 0x00000194, + 0x00000195, + 0x00000196, + 0x00000197, + 0x00000198, + 0x00000199, + 0x0000019a, + 0x0000019b, + 0x0000019c, + 0x0000019d, + 0x0000019e, + 0x0000019f, + 0x000001a0, + }, + { + 0x000001a1, + 0x000001a2, + 0x000001a3, + 0x000001a4, + 0x000001a5, + 0x000001a6, + 0x000001a7, + 0x000001a8, + 0x000001a9, + 0x000001aa, + 0x000001ab, + 0x000001ac, + 0x000001ad, + 0x000001ae, + 0x000001af, + 0x000001b0, + }, + { + 0x000001b1, + 0x000001b2, + 0x000001b3, + 0x000001b4, + 0x000001b5, + 0x000001b6, + 0x000001b7, + 0x000001b8, + 0x000001b9, + 0x000001ba, + 0x000001bb, + 0x000001bc, + 0x000001bd, + 0x000001be, + 0x000001bf, + 0x000001c0, + }, + { + 0x0044ffff, + 0x0045ffff, + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x0049ffff, + 0x004affff, + 0x004bffff, + 0x004cffff, + 0x004dffff, + 0x004effff, + 0x004fffff, + 0x0050ffff, + 0x0051ffff, + 0x0052ffff, + 0x0053ffff, + }, + { + 0x000001c1, + 0x000001c2, + 0x000001c3, + 0x000001c4, + 0x000001c5, + 0x000001c6, + 0x000001c7, + 0x000001c8, + 0x000001c9, + 0x000001ca, + 0x000001cb, + 0x000001cc, + 0x000001cd, + 0x000001ce, + 0x000001cf, + 0x000001d0, + }, + { + 0x000001d1, + 0x000001d2, + 0x000001d3, + 0x000001d4, + 0x000001d5, + 0x000001d6, + 0x000001d7, + 0x000001d8, + 0x000001d9, + 0x000001da, + 0x000001db, + 0x000001dc, + 0x000001dd, + 0x000001de, + 0x000001df, + 0x000001e0, + }, + { + 0x000001e1, + 0x000001e2, + 0x000001e3, + 0x000001e4, + 0x000001e5, + 0x000001e6, + 0x000001e8, + 0x000001e9, + 0x000001ea, + 0x000001eb, + 0x000001ec, + 0x000001ed, + 0x000001ee, + 0x000001ef, + 0x000001f0, + 0x000001f1, + }, + { + 0x000001f2, + 0x000001f3, + 0x000001f4, + 0x000001f5, + 0x000001f6, + 0x000001f7, + 0x000001f8, + 0x000001f9, + 0x000001fa, + 0x000001fb, + 0x000001fc, + 0x000001fd, + 0x000001fe, + 0x000001ff, + 0x00000200, + 0x00000201, + }, + { + 0x00000202, + 0x00000203, + 0x00000204, + 0x00000205, + 0x00000206, + 0x00000207, + 0x00000208, + 0x00000209, + 0x0000020a, + 0x0000020b, + 0x0000020c, + 0x0000020d, + 0x0000020e, + 0x0000020f, + 0x00000210, + 0x00000211, + }, + { + 0x00000212, + 0x00000213, + 0x00000214, + 0x00000215, + 0x00000216, + 0x00000217, + 0x00000218, + 0x00000219, + 0x0000021a, + 0x0000021b, + 0x0000021c, + 0x0000021d, + 0x0000021e, + 0x0000021f, + 0x00000220, + 0x00000221, + }, + { + 0x00000222, + 0x00000223, + 0x00000224, + 0x00000225, + 0x00000226, + 0x00000227, + 0x00000228, + 0x00000229, + 0x0000022a, + 0x0000022b, + 0x0000022c, + 0x0000022d, + 0x0000022e, + 0x0000022f, + 0x00000230, + 0x00000231, + }, + { + 0x00000232, + 0x00000233, + 0x00000234, + 0x00000235, + 0x00000236, + 0x00000237, + 0x00000238, + 0x00000239, + 0x0000023a, + 0x0000023b, + 0x0000023c, + 0x0000023d, + 0x0000023e, + 0x0000023f, + 0x00000240, + 0x00000241, + }, + { + 0x00000242, + 0x00000243, + 0x00000244, + 0x00000245, + 0x00000246, + 0x00000247, + 0x00000248, + 0x00000249, + 0x0000024a, + 0x0000024b, + 0x0000024c, + 0x0000024d, + 0x0000024e, + 0x0000024f, + 0x00000250, + 0x00000251, + }, + { + 0x00000252, + 0x00000253, + 0x00000254, + 0x00000255, + 0x00000256, + 0x00000257, + 0x00000258, + 0x00000259, + 0x0000025a, + 0x0000025b, + 0x0000025c, + 0x0000025d, + 0x0000025e, + 0x0000025f, + 0x00000260, + 0x00000261, + }, + { + 0x00000262, + 0x00000263, + 0x00000264, + 0x00000265, + 0x00000266, + 0x00000267, + 0x00000268, + 0x00000269, + 0x0000026a, + 0x0000026b, + 0x0000026c, + 0x0000026d, + 0x0000026e, + 0x0000026f, + 0x00000270, + 0x00000271, + }, + { + 0x00000272, + 0x00000273, + 0x00000274, + 0x00000275, + 0x00000276, + 0x00000277, + 0x00000278, + 0x00000279, + 0x0000027a, + 0x0000027b, + 0x0000027c, + 0x0000027d, + 0x0000027e, + 0x0000027f, + 0x00000280, + 0x00000281, + }, + { + 0x00000282, + 0x00000283, + 0x00000284, + 0x00000285, + 0x00000286, + 0x00000287, + 0x00000288, + 0x00000289, + 0x0000028a, + 0x0000028b, + 0x0000028c, + 0x0000028d, + 0x0000028e, + 0x0000028f, + 0x00000290, + 0x00000291, + }, + { + 0x00000292, + 0x00000293, + 0x00000294, + 0x00000295, + 0x00000296, + 0x00000297, + 0x00000298, + 0x00000299, + 0x0000029a, + 0x0000029b, + 0x0000029c, + 0x0000029d, + 0x0000029e, + 0x0000029f, + 0x000002a0, + 0x000002a1, + }, + { + 0x000002a2, + 0x000002a3, + 0x000002a4, + 0x000002a5, + 0x000002a6, + 0x000002a7, + 0x000002a8, + 0x000002a9, + 0x000002aa, + 0x000002ab, + 0x000002ac, + 0x000002ad, + 0x000002ae, + 0x000002af, + 0x000002b0, + 0x000002b1, + }, + { + 0x000002b2, + 0x000002b3, + 0x000002b4, + 0x000002b5, + 0x000002b6, + 0x000002b7, + 0x000002b8, + 0x000002b9, + 0x000002ba, + 0x000002bb, + 0x000002bc, + 0x000002bd, + 0x000002be, + 0x000002bf, + 0x000002c0, + 0x000002c1, + }, + { + 0x000002c2, + 0x000002c3, + 0x000002c4, + 0x000002c5, + 0x000002c6, + 0x000002c7, + 0x000002c8, + 0x000002c9, + 0x000002ca, + 0x000002cb, + 0x000002cc, + 0x000002cd, + 0x000002ce, + 0x000002cf, + 0x000002d0, + 0x000002d1, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc17[729][2] = +#else +const uint16_t c_aauiLCLDHuffEnc17[729][2] = +#endif + { + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0009, 0x000f }, + { 0x000a, 0x000f }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0014 }, + { 0x000e, 0x0017 }, + { 0x0010, 0x002d }, + { 0x0011, 0x004c }, + { 0x0012, 0x008a }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0006, 0x0016 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0008, 0x0010 }, + { 0x000a, 0x0010 }, + { 0x000b, 0x0011 }, + { 0x000c, 0x0012 }, + { 0x000e, 0x0018 }, + { 0x000f, 0x0020 }, + { 0x0011, 0x004d }, + { 0x0013, 0x00e4 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0006, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0007, 0x0014 }, + { 0x0008, 0x0011 }, + { 0x0009, 0x0010 }, + { 0x000a, 0x0011 }, + { 0x000b, 0x0012 }, + { 0x000c, 0x0013 }, + { 0x000e, 0x0019 }, + { 0x000f, 0x0021 }, + { 0x0010, 0x002e }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0006, 0x001e }, + { 0x0005, 0x001e }, + { 0x0005, 0x001f }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0007, 0x0015 }, + { 0x0008, 0x0012 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x0012 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0014 }, + { 0x000e, 0x001a }, + { 0x000f, 0x0022 }, + { 0x0010, 0x002f }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0008, 0x0013 }, + { 0x0009, 0x0012 }, + { 0x000a, 0x0013 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0015 }, + { 0x000f, 0x0023 }, + { 0x0010, 0x0030 }, + { 0x0011, 0x004e }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0007, 0x0018 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0007, 0x0019 }, + { 0x0007, 0x001a }, + { 0x0008, 0x0014 }, + { 0x0009, 0x0013 }, + { 0x000a, 0x0014 }, + { 0x000b, 0x0014 }, + { 0x000c, 0x0016 }, + { 0x000d, 0x0016 }, + { 0x000f, 0x0024 }, + { 0x0010, 0x0031 }, + { 0x0011, 0x004f }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0007, 0x001b }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0007, 0x001c }, + { 0x0007, 0x001d }, + { 0x0008, 0x0015 }, + { 0x0009, 0x0014 }, + { 0x000a, 0x0015 }, + { 0x000a, 0x0016 }, + { 0x000c, 0x0017 }, + { 0x000d, 0x0017 }, + { 0x000e, 0x001b }, + { 0x000f, 0x0025 }, + { 0x0011, 0x0050 }, + { 0x0011, 0x0051 }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0008, 0x0016 }, + { 0x0007, 0x001e }, + { 0x0007, 0x001f }, + { 0x0007, 0x0020 }, + { 0x0007, 0x0021 }, + { 0x0008, 0x0017 }, + { 0x0008, 0x0018 }, + { 0x0009, 0x0015 }, + { 0x000a, 0x0017 }, + { 0x000b, 0x0015 }, + { 0x000c, 0x0018 }, + { 0x000e, 0x001c }, + { 0x000e, 0x001d }, + { 0x0010, 0x0032 }, + { 0x0012, 0x008b }, + { 0x0012, 0x008c }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0008, 0x0019 }, + { 0x0007, 0x0022 }, + { 0x0007, 0x0023 }, + { 0x0008, 0x001a }, + { 0x0008, 0x001b }, + { 0x0009, 0x0016 }, + { 0x0009, 0x0017 }, + { 0x000a, 0x0018 }, + { 0x000b, 0x0016 }, + { 0x000c, 0x0019 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x001e }, + { 0x0010, 0x0033 }, + { 0x0011, 0x0052 }, + { 0x0014, 0x0052 }, + { 0x0013, 0x00e9 }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0009, 0x0018 }, + { 0x0008, 0x001c }, + { 0x0008, 0x001d }, + { 0x0009, 0x0019 }, + { 0x0009, 0x001a }, + { 0x000a, 0x0019 }, + { 0x000a, 0x001a }, + { 0x000b, 0x0017 }, + { 0x000c, 0x001a }, + { 0x000d, 0x0019 }, + { 0x000e, 0x001f }, + { 0x000f, 0x0026 }, + { 0x0010, 0x0034 }, + { 0x0012, 0x008d }, + { 0x0013, 0x00ea }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x000b, 0x0018 }, + { 0x0009, 0x001b }, + { 0x000a, 0x001b }, + { 0x000a, 0x001c }, + { 0x000a, 0x001d }, + { 0x000b, 0x0019 }, + { 0x000b, 0x001a }, + { 0x000c, 0x001b }, + { 0x000d, 0x001a }, + { 0x000e, 0x0020 }, + { 0x000f, 0x0027 }, + { 0x0012, 0x008e }, + { 0x0011, 0x0053 }, + { 0x0013, 0x00eb }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x000c, 0x001c }, + { 0x000b, 0x001b }, + { 0x000b, 0x001c }, + { 0x000b, 0x001d }, + { 0x000c, 0x001d }, + { 0x000c, 0x001e }, + { 0x000d, 0x001b }, + { 0x000d, 0x001c }, + { 0x000e, 0x0021 }, + { 0x0010, 0x0035 }, + { 0x0010, 0x0036 }, + { 0x0011, 0x0054 }, + { 0x0013, 0x00ec }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x000d, 0x001d }, + { 0x000c, 0x001f }, + { 0x000c, 0x0020 }, + { 0x000c, 0x0021 }, + { 0x000d, 0x001e }, + { 0x000d, 0x001f }, + { 0x000e, 0x0022 }, + { 0x000f, 0x0028 }, + { 0x0010, 0x0037 }, + { 0x0010, 0x0038 }, + { 0x0010, 0x0039 }, + { 0x0012, 0x008f }, + { 0x0013, 0x00ed }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x000e, 0x0023 }, + { 0x000d, 0x0020 }, + { 0x000d, 0x0021 }, + { 0x000e, 0x0024 }, + { 0x000e, 0x0025 }, + { 0x000e, 0x0026 }, + { 0x000f, 0x0029 }, + { 0x0010, 0x003a }, + { 0x0010, 0x003b }, + { 0x0012, 0x0090 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x000f, 0x002a }, + { 0x000e, 0x0027 }, + { 0x000f, 0x002b }, + { 0x000f, 0x002c }, + { 0x000f, 0x002d }, + { 0x0010, 0x003c }, + { 0x0010, 0x003d }, + { 0x0011, 0x0055 }, + { 0x0011, 0x0056 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0012, 0x0091 }, + { 0x0010, 0x003e }, + { 0x0010, 0x003f }, + { 0x0011, 0x0057 }, + { 0x0011, 0x0058 }, + { 0x0011, 0x0059 }, + { 0x0012, 0x0092 }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0012, 0x0093 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0013, 0x00f0 }, + { 0x0012, 0x0094 }, + { 0x0012, 0x0095 }, + { 0x0012, 0x0096 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0012, 0x0097 }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0014, 0x00f6 }, + { 0x0014, 0x00f7 }, + { 0x0014, 0x00f8 }, + { 0x0014, 0x00f9 }, + { 0x0014, 0x00fa }, + { 0x0014, 0x00fb }, + { 0x0014, 0x00fc }, + { 0x0014, 0x00fd }, + { 0x0014, 0x00fe }, + { 0x0014, 0x00ff }, + { 0x0014, 0x0100 }, + { 0x0014, 0x0101 }, + { 0x0014, 0x0102 }, + { 0x0014, 0x0103 }, + { 0x0014, 0x0104 }, + { 0x0014, 0x0105 }, + { 0x0014, 0x0106 }, + { 0x0014, 0x0107 }, + { 0x0014, 0x0108 }, + { 0x0014, 0x0109 }, + { 0x0014, 0x010a }, + { 0x0014, 0x010b }, + { 0x0014, 0x010c }, + { 0x0014, 0x010d }, + { 0x0014, 0x010e }, + { 0x0014, 0x010f }, + { 0x0014, 0x0110 }, + { 0x0014, 0x0111 }, + { 0x0014, 0x0112 }, + { 0x0014, 0x0113 }, + { 0x0014, 0x0114 }, + { 0x0014, 0x0115 }, + { 0x0014, 0x0116 }, + { 0x0014, 0x0117 }, + { 0x0014, 0x0118 }, + { 0x0014, 0x0119 }, + { 0x0014, 0x011a }, + { 0x0014, 0x011b }, + { 0x0014, 0x011c }, + { 0x0014, 0x011d }, + { 0x0014, 0x011e }, + { 0x0014, 0x011f }, + { 0x0014, 0x0120 }, + { 0x0014, 0x0121 }, + { 0x0014, 0x0122 }, + { 0x0014, 0x0123 }, + { 0x0014, 0x0124 }, + { 0x0014, 0x0125 }, + { 0x0014, 0x0126 }, + { 0x0014, 0x0127 }, + { 0x0014, 0x0128 }, + { 0x0014, 0x0129 }, + { 0x0014, 0x012a }, + { 0x0014, 0x012b }, + { 0x0014, 0x012c }, + { 0x0014, 0x012d }, + { 0x0014, 0x012e }, + { 0x0014, 0x012f }, + { 0x0014, 0x0130 }, + { 0x0014, 0x0131 }, + { 0x0014, 0x0132 }, + { 0x0014, 0x0133 }, + { 0x0014, 0x0134 }, + { 0x0014, 0x0135 }, + { 0x0014, 0x0136 }, + { 0x0014, 0x0137 }, + { 0x0014, 0x0138 }, + { 0x0014, 0x0139 }, + { 0x0014, 0x013a }, + { 0x0014, 0x013b }, + { 0x0014, 0x013c }, + { 0x0014, 0x013d }, + { 0x0014, 0x013e }, + { 0x0014, 0x013f }, + { 0x0014, 0x0140 }, + { 0x0014, 0x0141 }, + { 0x0014, 0x0142 }, + { 0x0014, 0x0143 }, + { 0x0014, 0x0144 }, + { 0x0014, 0x0145 }, + { 0x0014, 0x0146 }, + { 0x0014, 0x0147 }, + { 0x0014, 0x0148 }, + { 0x0014, 0x0149 }, + { 0x0014, 0x014a }, + { 0x0014, 0x014b }, + { 0x0014, 0x014c }, + { 0x0014, 0x014d }, + { 0x0014, 0x014e }, + { 0x0014, 0x014f }, + { 0x0014, 0x0150 }, + { 0x0014, 0x0151 }, + { 0x0014, 0x0152 }, + { 0x0014, 0x0153 }, + { 0x0014, 0x0154 }, + { 0x0014, 0x0155 }, + { 0x0014, 0x0156 }, + { 0x0014, 0x0157 }, + { 0x0014, 0x0158 }, + { 0x0014, 0x0159 }, + { 0x0014, 0x015a }, + { 0x0014, 0x015b }, + { 0x0014, 0x015c }, + { 0x0014, 0x015d }, + { 0x0014, 0x015e }, + { 0x0014, 0x015f }, + { 0x0014, 0x0160 }, + { 0x0014, 0x0161 }, + { 0x0014, 0x0162 }, + { 0x0014, 0x0163 }, + { 0x0014, 0x0164 }, + { 0x0014, 0x0165 }, + { 0x0014, 0x0166 }, + { 0x0014, 0x0167 }, + { 0x0014, 0x0168 }, + { 0x0014, 0x0169 }, + { 0x0014, 0x016a }, + { 0x0014, 0x016b }, + { 0x0014, 0x016c }, + { 0x0014, 0x016d }, + { 0x0014, 0x016e }, + { 0x0014, 0x016f }, + { 0x0014, 0x0170 }, + { 0x0014, 0x0171 }, + { 0x0014, 0x0172 }, + { 0x0014, 0x0173 }, + { 0x0014, 0x0174 }, + { 0x0014, 0x0175 }, + { 0x0014, 0x0176 }, + { 0x0014, 0x0177 }, + { 0x0014, 0x0178 }, + { 0x0014, 0x0179 }, + { 0x0014, 0x017a }, + { 0x0014, 0x017b }, + { 0x0014, 0x017c }, + { 0x0014, 0x017d }, + { 0x0014, 0x017e }, + { 0x0014, 0x017f }, + { 0x0014, 0x0180 }, + { 0x0014, 0x0181 }, + { 0x0014, 0x0182 }, + { 0x0014, 0x0183 }, + { 0x0014, 0x0184 }, + { 0x0014, 0x0185 }, + { 0x0014, 0x0186 }, + { 0x0014, 0x0187 }, + { 0x0014, 0x0188 }, + { 0x0014, 0x0189 }, + { 0x0014, 0x018a }, + { 0x0014, 0x018b }, + { 0x0014, 0x018c }, + { 0x0014, 0x018d }, + { 0x0014, 0x018e }, + { 0x0014, 0x018f }, + { 0x0014, 0x0190 }, + { 0x0014, 0x0191 }, + { 0x0014, 0x0192 }, + { 0x0014, 0x0193 }, + { 0x0014, 0x0194 }, + { 0x0014, 0x0195 }, + { 0x0014, 0x0196 }, + { 0x0014, 0x0197 }, + { 0x0014, 0x0198 }, + { 0x0014, 0x0199 }, + { 0x0014, 0x019a }, + { 0x0014, 0x019b }, + { 0x0014, 0x019c }, + { 0x0014, 0x019d }, + { 0x0014, 0x019e }, + { 0x0014, 0x019f }, + { 0x0014, 0x01a0 }, + { 0x0014, 0x01a1 }, + { 0x0014, 0x01a2 }, + { 0x0014, 0x01a3 }, + { 0x0014, 0x01a4 }, + { 0x0014, 0x01a5 }, + { 0x0014, 0x01a6 }, + { 0x0014, 0x01a7 }, + { 0x0014, 0x01a8 }, + { 0x0014, 0x01a9 }, + { 0x0014, 0x01aa }, + { 0x0014, 0x01ab }, + { 0x0014, 0x01ac }, + { 0x0014, 0x01ad }, + { 0x0014, 0x01ae }, + { 0x0014, 0x01af }, + { 0x0014, 0x01b0 }, + { 0x0014, 0x01b1 }, + { 0x0014, 0x01b2 }, + { 0x0014, 0x01b3 }, + { 0x0014, 0x01b4 }, + { 0x0014, 0x01b5 }, + { 0x0014, 0x01b6 }, + { 0x0014, 0x01b7 }, + { 0x0014, 0x01b8 }, + { 0x0014, 0x01b9 }, + { 0x0014, 0x01ba }, + { 0x0014, 0x01bb }, + { 0x0014, 0x01bc }, + { 0x0014, 0x01bd }, + { 0x0014, 0x01be }, + { 0x0014, 0x01bf }, + { 0x0014, 0x01c0 }, + { 0x0014, 0x01c1 }, + { 0x0014, 0x01c2 }, + { 0x0014, 0x01c3 }, + { 0x0014, 0x01c4 }, + { 0x0014, 0x01c5 }, + { 0x0014, 0x01c6 }, + { 0x0014, 0x01c7 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec17[93][16] = { + { + 0x0010ffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0006ffff, + 0x0005ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + }, + { + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + }, + { + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + }, + { + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + }, + { + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + }, + { + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x000100c0, + 0x000100c0, + 0x000100c1, + 0x000100c1, + 0x000100d9, + 0x000100d9, + 0x000100da, + 0x000100da, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + }, + { + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020054, + 0x00020054, + 0x00020054, + 0x00020054, + }, + { + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020057, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + }, + { + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + }, + { + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020089, + 0x00020089, + 0x00020089, + 0x00020089, + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008a, + }, + { + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + }, + { + 0x00000024, + 0x0000003e, + 0x00000059, + 0x00000074, + 0x0000008e, + 0x000000a8, + 0x000000bd, + 0x000000c2, + 0x000000c3, + 0x000000d8, + 0x000000db, + 0x000000dc, + 0x000000f4, + 0x000000f5, + 0x00010004, + 0x00010004, + }, + { + 0x00010005, + 0x00010005, + 0x00010006, + 0x00010006, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x0001003d, + 0x0001003d, + 0x00010058, + 0x00010058, + 0x00010072, + 0x00010072, + 0x00010073, + 0x00010073, + }, + { + 0x00010087, + 0x00010087, + 0x0001008c, + 0x0001008c, + 0x0001008d, + 0x0001008d, + 0x000100a2, + 0x000100a2, + 0x000100a6, + 0x000100a6, + 0x000100a7, + 0x000100a7, + 0x000100be, + 0x000100be, + 0x000100bf, + 0x000100bf, + }, + { + 0x001effff, + 0x001dffff, + 0x001cffff, + 0x0019ffff, + 0x0018ffff, + 0x001affff, + 0x001bffff, + 0x0012ffff, + 0x0011ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x00000007, + 0x00000008, + }, + { + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + }, + { + 0x00020111, + 0x00020111, + 0x00020111, + 0x00020111, + 0x00020112, + 0x00020112, + 0x00020112, + 0x00020112, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + }, + { + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + }, + { + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300dd, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + }, + { + 0x000300f3, + 0x000300f3, + 0x000300f3, + 0x000300f3, + 0x000300f3, + 0x000300f3, + 0x000300f3, + 0x000300f3, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + }, + { + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x000300f7, + 0x0003010f, + 0x0003010f, + 0x0003010f, + 0x0003010f, + 0x0003010f, + 0x0003010f, + 0x0003010f, + 0x0003010f, + }, + { + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + }, + { + 0x0001010e, + 0x0001010e, + 0x00010113, + 0x00010113, + 0x00010114, + 0x00010114, + 0x0001012a, + 0x0001012a, + 0x0001012b, + 0x0001012b, + 0x0001012c, + 0x0001012c, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + }, + { + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020090, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200c5, + 0x000200c5, + 0x000200c5, + 0x000200c5, + }, + { + 0x000200df, + 0x000200df, + 0x000200df, + 0x000200df, + 0x000200f8, + 0x000200f8, + 0x000200f8, + 0x000200f8, + 0x000200f9, + 0x000200f9, + 0x000200f9, + 0x000200f9, + 0x00020110, + 0x00020110, + 0x00020110, + 0x00020110, + }, + { + 0x00000146, + 0x00000147, + 0x00010026, + 0x00010026, + 0x00010041, + 0x00010041, + 0x0001005c, + 0x0001005c, + 0x00010091, + 0x00010091, + 0x000100c6, + 0x000100c6, + 0x000100e0, + 0x000100e0, + 0x000100fa, + 0x000100fa, + }, + { + 0x0025ffff, + 0x0000000b, + 0x00000027, + 0x00000042, + 0x0000005d, + 0x00000077, + 0x00000092, + 0x000000ac, + 0x000000c7, + 0x000000e1, + 0x000000fb, + 0x00000115, + 0x00000129, + 0x0000012d, + 0x0000012e, + 0x00000145, + }, + { + 0x0040ffff, + 0x0039ffff, + 0x002dffff, + 0x002cffff, + 0x002bffff, + 0x0028ffff, + 0x0026ffff, + 0x0027ffff, + 0x0029ffff, + 0x002affff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + }, + { + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + 0x000300ad, + }, + { + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300e2, + 0x000300fc, + 0x000300fc, + 0x000300fc, + 0x000300fc, + 0x000300fc, + 0x000300fc, + 0x000300fc, + 0x000300fc, + }, + { + 0x00030116, + 0x00030116, + 0x00030116, + 0x00030116, + 0x00030116, + 0x00030116, + 0x00030116, + 0x00030116, + 0x0003012f, + 0x0003012f, + 0x0003012f, + 0x0003012f, + 0x0003012f, + 0x0003012f, + 0x0003012f, + 0x0003012f, + }, + { + 0x00030130, + 0x00030130, + 0x00030130, + 0x00030130, + 0x00030130, + 0x00030130, + 0x00030130, + 0x00030130, + 0x00030144, + 0x00030144, + 0x00030144, + 0x00030144, + 0x00030144, + 0x00030144, + 0x00030144, + 0x00030144, + }, + { + 0x00030148, + 0x00030148, + 0x00030148, + 0x00030148, + 0x00030148, + 0x00030148, + 0x00030148, + 0x00030148, + 0x00030149, + 0x00030149, + 0x00030149, + 0x00030149, + 0x00030149, + 0x00030149, + 0x00030149, + 0x00030149, + }, + { + 0x00030160, + 0x00030160, + 0x00030160, + 0x00030160, + 0x00030160, + 0x00030160, + 0x00030160, + 0x00030160, + 0x00030161, + 0x00030161, + 0x00030161, + 0x00030161, + 0x00030161, + 0x00030161, + 0x00030161, + 0x00030161, + }, + { + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020043, + 0x00020043, + 0x00020043, + 0x00020043, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x000200ae, + 0x000200ae, + 0x000200ae, + 0x000200ae, + }, + { + 0x000200c8, + 0x000200c8, + 0x000200c8, + 0x000200c8, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200c9, + 0x000200e3, + 0x000200e3, + 0x000200e3, + 0x000200e3, + 0x000200fd, + 0x000200fd, + 0x000200fd, + 0x000200fd, + }, + { + 0x0001014b, + 0x0001014b, + 0x00010165, + 0x00010165, + 0x0001017a, + 0x0001017a, + 0x0001017c, + 0x0001017c, + 0x0001017d, + 0x0001017d, + 0x0001017e, + 0x0001017e, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + }, + { + 0x00020117, + 0x00020117, + 0x00020117, + 0x00020117, + 0x00020131, + 0x00020131, + 0x00020131, + 0x00020131, + 0x0002014a, + 0x0002014a, + 0x0002014a, + 0x0002014a, + 0x0002015f, + 0x0002015f, + 0x0002015f, + 0x0002015f, + }, + { + 0x00020162, + 0x00020162, + 0x00020162, + 0x00020162, + 0x00020163, + 0x00020163, + 0x00020163, + 0x00020163, + 0x00020164, + 0x00020164, + 0x00020164, + 0x00020164, + 0x0002017b, + 0x0002017b, + 0x0002017b, + 0x0002017b, + }, + { + 0x00010029, + 0x00010029, + 0x00010044, + 0x00010044, + 0x0001005f, + 0x0001005f, + 0x00010079, + 0x00010079, + 0x00010094, + 0x00010094, + 0x000100af, + 0x000100af, + 0x000100fe, + 0x000100fe, + 0x00010118, + 0x00010118, + }, + { + 0x0000007a, + 0x00000095, + 0x000000ca, + 0x000000e4, + 0x000000ff, + 0x00000132, + 0x00000133, + 0x0000014c, + 0x0000014d, + 0x0000014e, + 0x00000166, + 0x00000167, + 0x0000017f, + 0x00000180, + 0x00000196, + 0x00000197, + }, + { + 0x003effff, + 0x003fffff, + 0x0036ffff, + 0x0035ffff, + 0x0037ffff, + 0x0038ffff, + 0x0031ffff, + 0x002effff, + 0x0032ffff, + 0x002fffff, + 0x0030ffff, + 0x0033ffff, + 0x0034ffff, + 0x0000000e, + 0x00000045, + 0x00000060, + }, + { + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + }, + { + 0x000300e5, + 0x000300e5, + 0x000300e5, + 0x000300e5, + 0x000300e5, + 0x000300e5, + 0x000300e5, + 0x000300e5, + 0x0003011a, + 0x0003011a, + 0x0003011a, + 0x0003011a, + 0x0003011a, + 0x0003011a, + 0x0003011a, + 0x0003011a, + }, + { + 0x00030134, + 0x00030134, + 0x00030134, + 0x00030134, + 0x00030134, + 0x00030134, + 0x00030134, + 0x00030134, + 0x00030181, + 0x00030181, + 0x00030181, + 0x00030181, + 0x00030181, + 0x00030181, + 0x00030181, + 0x00030181, + }, + { + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + }, + { + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b0, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + 0x000300b1, + }, + { + 0x00030182, + 0x00030182, + 0x00030182, + 0x00030182, + 0x00030182, + 0x00030182, + 0x00030182, + 0x00030182, + 0x00030198, + 0x00030198, + 0x00030198, + 0x00030198, + 0x00030198, + 0x00030198, + 0x00030198, + 0x00030198, + }, + { + 0x00030199, + 0x00030199, + 0x00030199, + 0x00030199, + 0x00030199, + 0x00030199, + 0x00030199, + 0x00030199, + 0x0003019a, + 0x0003019a, + 0x0003019a, + 0x0003019a, + 0x0003019a, + 0x0003019a, + 0x0003019a, + 0x0003019a, + }, + { + 0x000200cc, + 0x000200cc, + 0x000200cc, + 0x000200cc, + 0x00020100, + 0x00020100, + 0x00020100, + 0x00020100, + 0x00020119, + 0x00020119, + 0x00020119, + 0x00020119, + 0x0002014f, + 0x0002014f, + 0x0002014f, + 0x0002014f, + }, + { + 0x000102d5, + 0x000102d5, + 0x000102d6, + 0x000102d6, + 0x000102d7, + 0x000102d7, + 0x000102d8, + 0x000102d8, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x000200cb, + 0x000200cb, + 0x000200cb, + 0x000200cb, + }, + { + 0x00020168, + 0x00020168, + 0x00020168, + 0x00020168, + 0x00020195, + 0x00020195, + 0x00020195, + 0x00020195, + 0x0002019b, + 0x0002019b, + 0x0002019b, + 0x0002019b, + 0x0002019e, + 0x0002019e, + 0x0002019e, + 0x0002019e, + }, + { + 0x000201b1, + 0x000201b1, + 0x000201b1, + 0x000201b1, + 0x000201b2, + 0x000201b2, + 0x000201b2, + 0x000201b2, + 0x000201b3, + 0x000201b3, + 0x000201b3, + 0x000201b3, + 0x000201cc, + 0x000201cc, + 0x000201cc, + 0x000201cc, + }, + { + 0x0051ffff, + 0x0052ffff, + 0x0053ffff, + 0x0054ffff, + 0x0055ffff, + 0x0056ffff, + 0x0057ffff, + 0x0058ffff, + 0x0059ffff, + 0x005affff, + 0x005bffff, + 0x005cffff, + 0x003bffff, + 0x003affff, + 0x003cffff, + 0x003dffff, + }, + { + 0x00010062, + 0x00010062, + 0x000100e7, + 0x000100e7, + 0x00010101, + 0x00010101, + 0x0001011b, + 0x0001011b, + 0x00010135, + 0x00010135, + 0x00010150, + 0x00010150, + 0x0001019c, + 0x0001019c, + 0x0001019d, + 0x0001019d, + }, + { + 0x000002ae, + 0x000002af, + 0x000002b0, + 0x000002b1, + 0x000002b2, + 0x000002b3, + 0x000002b4, + 0x000002b5, + 0x0001002b, + 0x0001002b, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010061, + 0x00010061, + }, + { + 0x000101b0, + 0x000101b0, + 0x000102b6, + 0x000102b6, + 0x000102b7, + 0x000102b7, + 0x000102b8, + 0x000102b8, + 0x000102b9, + 0x000102b9, + 0x000102ba, + 0x000102ba, + 0x000102bb, + 0x000102bb, + 0x000102bc, + 0x000102bc, + }, + { + 0x000102bd, + 0x000102bd, + 0x000102be, + 0x000102be, + 0x000102bf, + 0x000102bf, + 0x000102c0, + 0x000102c0, + 0x000102c1, + 0x000102c1, + 0x000102c2, + 0x000102c2, + 0x000102c3, + 0x000102c3, + 0x000102c4, + 0x000102c4, + }, + { + 0x000102c5, + 0x000102c5, + 0x000102c6, + 0x000102c6, + 0x000102c7, + 0x000102c7, + 0x000102c8, + 0x000102c8, + 0x000102c9, + 0x000102c9, + 0x000102ca, + 0x000102ca, + 0x000102cb, + 0x000102cb, + 0x000102cc, + 0x000102cc, + }, + { + 0x000102cd, + 0x000102cd, + 0x000102ce, + 0x000102ce, + 0x000102cf, + 0x000102cf, + 0x000102d0, + 0x000102d0, + 0x000102d1, + 0x000102d1, + 0x000102d2, + 0x000102d2, + 0x000102d3, + 0x000102d3, + 0x000102d4, + 0x000102d4, + }, + { + 0x0044ffff, + 0x0041ffff, + 0x0042ffff, + 0x0043ffff, + 0x0045ffff, + 0x0048ffff, + 0x0046ffff, + 0x0047ffff, + 0x0049ffff, + 0x004affff, + 0x004bffff, + 0x004cffff, + 0x004dffff, + 0x004effff, + 0x004fffff, + 0x0050ffff, + }, + { + 0x00000032, + 0x00000033, + 0x00000034, + 0x00000035, + 0x00000048, + 0x00000049, + 0x0000004a, + 0x0000004b, + 0x0000004c, + 0x0000004d, + 0x0000004e, + 0x0000004f, + 0x00000050, + 0x00000063, + 0x00000064, + 0x00000065, + }, + { + 0x00000066, + 0x00000067, + 0x00000068, + 0x00000069, + 0x0000006a, + 0x0000006b, + 0x0000007c, + 0x0000007d, + 0x0000007e, + 0x0000007f, + 0x00000080, + 0x00000081, + 0x00000082, + 0x00000083, + 0x00000084, + 0x00000085, + }, + { + 0x00000086, + 0x00000097, + 0x00000098, + 0x00000099, + 0x0000009a, + 0x0000009b, + 0x0000009c, + 0x0000009d, + 0x0000009e, + 0x0000009f, + 0x000000a0, + 0x000000a1, + 0x000000b2, + 0x000000b3, + 0x000000b4, + 0x000000b5, + }, + { + 0x00000011, + 0x00000012, + 0x00000013, + 0x00000014, + 0x00000015, + 0x00000016, + 0x00000017, + 0x00000018, + 0x00000019, + 0x0000001a, + 0x0000002c, + 0x0000002d, + 0x0000002e, + 0x0000002f, + 0x00000030, + 0x00000031, + }, + { + 0x000000b6, + 0x000000b7, + 0x000000b8, + 0x000000b9, + 0x000000ba, + 0x000000bb, + 0x000000bc, + 0x000000cd, + 0x000000ce, + 0x000000cf, + 0x000000d0, + 0x000000d1, + 0x000000d2, + 0x000000d3, + 0x000000d4, + 0x000000d5, + }, + { + 0x00000104, + 0x00000105, + 0x00000106, + 0x00000107, + 0x00000108, + 0x00000109, + 0x0000010a, + 0x0000010b, + 0x0000010c, + 0x0000010d, + 0x0000011c, + 0x0000011d, + 0x0000011e, + 0x0000011f, + 0x00000120, + 0x00000121, + }, + { + 0x00000122, + 0x00000123, + 0x00000124, + 0x00000125, + 0x00000126, + 0x00000127, + 0x00000128, + 0x00000136, + 0x00000137, + 0x00000138, + 0x00000139, + 0x0000013a, + 0x0000013b, + 0x0000013c, + 0x0000013d, + 0x0000013e, + }, + { + 0x000000d6, + 0x000000d7, + 0x000000e6, + 0x000000e8, + 0x000000e9, + 0x000000ea, + 0x000000eb, + 0x000000ec, + 0x000000ed, + 0x000000ee, + 0x000000ef, + 0x000000f0, + 0x000000f1, + 0x000000f2, + 0x00000102, + 0x00000103, + }, + { + 0x0000013f, + 0x00000140, + 0x00000141, + 0x00000142, + 0x00000143, + 0x00000151, + 0x00000152, + 0x00000153, + 0x00000154, + 0x00000155, + 0x00000156, + 0x00000157, + 0x00000158, + 0x00000159, + 0x0000015a, + 0x0000015b, + }, + { + 0x0000015c, + 0x0000015d, + 0x0000015e, + 0x00000169, + 0x0000016a, + 0x0000016b, + 0x0000016c, + 0x0000016d, + 0x0000016e, + 0x0000016f, + 0x00000170, + 0x00000171, + 0x00000172, + 0x00000173, + 0x00000174, + 0x00000175, + }, + { + 0x00000176, + 0x00000177, + 0x00000178, + 0x00000179, + 0x00000183, + 0x00000184, + 0x00000185, + 0x00000186, + 0x00000187, + 0x00000188, + 0x00000189, + 0x0000018a, + 0x0000018b, + 0x0000018c, + 0x0000018d, + 0x0000018e, + }, + { + 0x0000018f, + 0x00000190, + 0x00000191, + 0x00000192, + 0x00000193, + 0x00000194, + 0x0000019f, + 0x000001a0, + 0x000001a1, + 0x000001a2, + 0x000001a3, + 0x000001a4, + 0x000001a5, + 0x000001a6, + 0x000001a7, + 0x000001a8, + }, + { + 0x000001a9, + 0x000001aa, + 0x000001ab, + 0x000001ac, + 0x000001ad, + 0x000001ae, + 0x000001af, + 0x000001b4, + 0x000001b5, + 0x000001b6, + 0x000001b7, + 0x000001b8, + 0x000001b9, + 0x000001ba, + 0x000001bb, + 0x000001bc, + }, + { + 0x000001bd, + 0x000001be, + 0x000001bf, + 0x000001c0, + 0x000001c1, + 0x000001c2, + 0x000001c3, + 0x000001c4, + 0x000001c5, + 0x000001c6, + 0x000001c7, + 0x000001c8, + 0x000001c9, + 0x000001ca, + 0x000001cb, + 0x000001cd, + }, + { + 0x000001ce, + 0x000001cf, + 0x000001d0, + 0x000001d1, + 0x000001d2, + 0x000001d3, + 0x000001d4, + 0x000001d5, + 0x000001d6, + 0x000001d7, + 0x000001d8, + 0x000001d9, + 0x000001da, + 0x000001db, + 0x000001dc, + 0x000001dd, + }, + { + 0x000001de, + 0x000001df, + 0x000001e0, + 0x000001e1, + 0x000001e2, + 0x000001e3, + 0x000001e4, + 0x000001e5, + 0x000001e6, + 0x000001e7, + 0x000001e8, + 0x000001e9, + 0x000001ea, + 0x000001eb, + 0x000001ec, + 0x000001ed, + }, + { + 0x000001ee, + 0x000001ef, + 0x000001f0, + 0x000001f1, + 0x000001f2, + 0x000001f3, + 0x000001f4, + 0x000001f5, + 0x000001f6, + 0x000001f7, + 0x000001f8, + 0x000001f9, + 0x000001fa, + 0x000001fb, + 0x000001fc, + 0x000001fd, + }, + { + 0x000001fe, + 0x000001ff, + 0x00000200, + 0x00000201, + 0x00000202, + 0x00000203, + 0x00000204, + 0x00000205, + 0x00000206, + 0x00000207, + 0x00000208, + 0x00000209, + 0x0000020a, + 0x0000020b, + 0x0000020c, + 0x0000020d, + }, + { + 0x0000020e, + 0x0000020f, + 0x00000210, + 0x00000211, + 0x00000212, + 0x00000213, + 0x00000214, + 0x00000215, + 0x00000216, + 0x00000217, + 0x00000218, + 0x00000219, + 0x0000021a, + 0x0000021b, + 0x0000021c, + 0x0000021d, + }, + { + 0x0000021e, + 0x0000021f, + 0x00000220, + 0x00000221, + 0x00000222, + 0x00000223, + 0x00000224, + 0x00000225, + 0x00000226, + 0x00000227, + 0x00000228, + 0x00000229, + 0x0000022a, + 0x0000022b, + 0x0000022c, + 0x0000022d, + }, + { + 0x0000022e, + 0x0000022f, + 0x00000230, + 0x00000231, + 0x00000232, + 0x00000233, + 0x00000234, + 0x00000235, + 0x00000236, + 0x00000237, + 0x00000238, + 0x00000239, + 0x0000023a, + 0x0000023b, + 0x0000023c, + 0x0000023d, + }, + { + 0x0000023e, + 0x0000023f, + 0x00000240, + 0x00000241, + 0x00000242, + 0x00000243, + 0x00000244, + 0x00000245, + 0x00000246, + 0x00000247, + 0x00000248, + 0x00000249, + 0x0000024a, + 0x0000024b, + 0x0000024c, + 0x0000024d, + }, + { + 0x0000024e, + 0x0000024f, + 0x00000250, + 0x00000251, + 0x00000252, + 0x00000253, + 0x00000254, + 0x00000255, + 0x00000256, + 0x00000257, + 0x00000258, + 0x00000259, + 0x0000025a, + 0x0000025b, + 0x0000025c, + 0x0000025d, + }, + { + 0x0000025e, + 0x0000025f, + 0x00000260, + 0x00000261, + 0x00000262, + 0x00000263, + 0x00000264, + 0x00000265, + 0x00000266, + 0x00000267, + 0x00000268, + 0x00000269, + 0x0000026a, + 0x0000026b, + 0x0000026c, + 0x0000026d, + }, + { + 0x0000026e, + 0x0000026f, + 0x00000270, + 0x00000271, + 0x00000272, + 0x00000273, + 0x00000274, + 0x00000275, + 0x00000276, + 0x00000277, + 0x00000278, + 0x00000279, + 0x0000027a, + 0x0000027b, + 0x0000027c, + 0x0000027d, + }, + { + 0x0000027e, + 0x0000027f, + 0x00000280, + 0x00000281, + 0x00000282, + 0x00000283, + 0x00000284, + 0x00000285, + 0x00000286, + 0x00000287, + 0x00000288, + 0x00000289, + 0x0000028a, + 0x0000028b, + 0x0000028c, + 0x0000028d, + }, + { + 0x0000028e, + 0x0000028f, + 0x00000290, + 0x00000291, + 0x00000292, + 0x00000293, + 0x00000294, + 0x00000295, + 0x00000296, + 0x00000297, + 0x00000298, + 0x00000299, + 0x0000029a, + 0x0000029b, + 0x0000029c, + 0x0000029d, + }, + { + 0x0000029e, + 0x0000029f, + 0x000002a0, + 0x000002a1, + 0x000002a2, + 0x000002a3, + 0x000002a4, + 0x000002a5, + 0x000002a6, + 0x000002a7, + 0x000002a8, + 0x000002a9, + 0x000002aa, + 0x000002ab, + 0x000002ac, + 0x000002ad, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc18[28][2] = +#else +const uint16_t c_aauiLCLDHuffEnc18[28][2] = +#endif + { + { 0x0004, 0x0001 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec18[6][16] = { + { + 0x0001ffff, + 0x00000000, + 0x00000007, + 0x00000008, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00010004, + 0x00010004, + 0x00010005, + 0x00010005, + 0x00010006, + 0x00010006, + }, + { + 0x0002ffff, + 0x0000000c, + 0x0001000b, + 0x0001000b, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003ffff, + 0x00000010, + 0x0001000f, + 0x0001000f, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0005ffff, + 0x0004ffff, + 0x00010013, + 0x00010013, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc19[29][2] = +#else +const uint16_t c_aauiLCLDHuffEnc19[29][2] = +#endif + { + { 0x0004, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0001 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0012, 0x0003 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec19[6][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00000000, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00010004, + 0x00010004, + 0x00010005, + 0x00010005, + }, + { + 0x0003ffff, + 0x0000000e, + 0x0001000d, + 0x0001000d, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x0004ffff, + 0x00000012, + 0x00010011, + 0x00010011, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x0005ffff, + 0x00000016, + 0x00010015, + 0x00010015, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + }, + { + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc20[32][2] = +#else +const uint16_t c_aauiLCLDHuffEnc20[32][2] = +#endif + { + { 0x0004, 0x0002 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec20[6][16] = { + { + 0x0002ffff, + 0x0001ffff, + 0x00000000, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003ffff, + 0x00000011, + 0x00010010, + 0x00010010, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + }, + { + 0x0004ffff, + 0x00000015, + 0x00010014, + 0x00010014, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x0005ffff, + 0x00000019, + 0x00010018, + 0x00010018, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + }, + { + 0x0000001b, + 0x0000001c, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc21[37][2] = +#else +const uint16_t c_aauiLCLDHuffEnc21[37][2] = +#endif + { + { 0x0005, 0x0002 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec21[7][16] = { + { + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + 0x0000000b, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + }, + { + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x0004ffff, + 0x00000013, + 0x00000014, + 0x00000015, + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + }, + { + 0x0005ffff, + 0x0000001a, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + }, + { + 0x0006ffff, + 0x0000001e, + 0x0001001d, + 0x0001001d, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + }, + { + 0x00000020, + 0x00000021, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc22[39][2] = +#else +const uint16_t c_aauiLCLDHuffEnc22[39][2] = +#endif + { + { 0x0005, 0x0002 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000c, 0x0001 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000f, 0x0001 }, + { 0x000e, 0x0003 }, + { 0x0011, 0x0000 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec22[9][16] = { + { + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x00000001, + 0x00000002, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + 0x0000000b, + 0x0000000c, + }, + { + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x00000016, + 0x00000017, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + }, + { + 0x0007ffff, + 0x0000001d, + 0x0000001e, + 0x0000001f, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, + { + 0x0008ffff, + 0x00000025, + 0x00010022, + 0x00010022, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + }, + { + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc23[46][2] = +#else +const uint16_t c_aauiLCLDHuffEnc23[46][2] = +#endif + { + { 0x0005, 0x0003 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0001 }, + { 0x0010, 0x0001 }, + { 0x0012, 0x0000 }, + { 0x0012, 0x0001 }, + { 0x0011, 0x0001 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec23[12][16] = { + { + 0x0006ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x00000001, + 0x00000002, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + }, + { + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + }, + { + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x0008ffff, + 0x0007ffff, + 0x0000001a, + 0x0000001b, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + }, + { + 0x000affff, + 0x0009ffff, + 0x00000022, + 0x00000023, + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + }, + { + 0x000bffff, + 0x0000002a, + 0x00010029, + 0x00010029, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + }, + { + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc24[55][2] = +#else +const uint16_t c_aauiLCLDHuffEnc24[55][2] = +#endif + { + { 0x0005, 0x0004 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0004, 0x000f }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0010, 0x0001 }, + { 0x0011, 0x0001 }, + { 0x0013, 0x0000 }, + { 0x0012, 0x0001 }, + { 0x0013, 0x0001 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec24[17][16] = { + { + 0x0008ffff, + 0x0009ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x00000001, + 0x00000002, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00000007, + }, + { + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + }, + { + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x000cffff, + 0x000affff, + 0x000bffff, + 0x0000001d, + 0x0000001e, + 0x0000001f, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + }, + { + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + }, + { + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + }, + { + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + }, + { + 0x000fffff, + 0x000dffff, + 0x000effff, + 0x00000028, + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + }, + { + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + }, + { + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + }, + { + 0x0010ffff, + 0x00000032, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + }, + { + 0x00010034, + 0x00010034, + 0x00010036, + 0x00010036, + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020035, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc25[65][2] = +#else +const uint16_t c_aauiLCLDHuffEnc25[65][2] = +#endif + { + { 0x0005, 0x0005 }, + { 0x0004, 0x000c }, + { 0x0004, 0x000d }, + { 0x0004, 0x000e }, + { 0x0005, 0x0006 }, + { 0x0004, 0x000f }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000f, 0x0003 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0004 }, + { 0x0010, 0x0001 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0011, 0x0001 }, + { 0x0012, 0x0000 }, + { 0x0012, 0x0001 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec25[19][16] = { + { + 0x000cffff, + 0x000bffff, + 0x0002ffff, + 0x0001ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x00000001, + 0x00000002, + 0x00000003, + 0x00000005, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + }, + { + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + }, + { + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x000fffff, + 0x000dffff, + 0x000effff, + 0x00000022, + 0x00000023, + 0x00000024, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + }, + { + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + }, + { + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + }, + { + 0x0011ffff, + 0x0010ffff, + 0x0000002e, + 0x0000002f, + 0x00000030, + 0x00000031, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + }, + { + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + }, + { + 0x0012ffff, + 0x00000038, + 0x0000003a, + 0x0000003b, + 0x0000003c, + 0x0000003d, + 0x00010035, + 0x00010035, + 0x00010037, + 0x00010037, + 0x00010039, + 0x00010039, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + }, + { + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc26[77][2] = +#else +const uint16_t c_aauiLCLDHuffEnc26[77][2] = +#endif + { + { 0x0006, 0x0004 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0005, 0x001f }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000e, 0x0002 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000f, 0x0003 }, + { 0x000e, 0x0005 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0011, 0x0002 }, + { 0x0012, 0x0001 }, + { 0x0010, 0x0005 }, + { 0x0012, 0x0002 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec26[26][16] = { + { + 0x0010ffff, + 0x000effff, + 0x000fffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + }, + { + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + }, + { + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + }, + { + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, + { + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + }, + { + 0x0014ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x00000027, + 0x00000028, + 0x00000029, + 0x0000002a, + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + }, + { + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020032, + 0x00020032, + 0x00020032, + 0x00020032, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + }, + { + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + }, + { + 0x0017ffff, + 0x0015ffff, + 0x0016ffff, + 0x00000035, + 0x00000036, + 0x00000037, + 0x00000038, + 0x00000039, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + }, + { + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + }, + { + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + }, + { + 0x0019ffff, + 0x0018ffff, + 0x00000042, + 0x00000043, + 0x00000044, + 0x00000047, + 0x00010040, + 0x00010040, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + }, + { + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + }, + { + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x00020046, + 0x00020046, + 0x00020046, + 0x00020046, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc27[91][2] = +#else +const uint16_t c_aauiLCLDHuffEnc27[91][2] = +#endif + { + { 0x0006, 0x0006 }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0005, 0x001f }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000f, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x0010, 0x0003 }, + { 0x000f, 0x0005 }, + { 0x0012, 0x0000 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0011, 0x0004 }, + { 0x0011, 0x0005 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec27[28][16] = { + { + 0x0010ffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + }, + { + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, + { + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + }, + { + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + }, + { + 0x0014ffff, + 0x0013ffff, + 0x0011ffff, + 0x0012ffff, + 0x0000002c, + 0x0000002d, + 0x0000002e, + 0x0000002f, + 0x00000030, + 0x00000031, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + }, + { + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, + { + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x0017ffff, + 0x0018ffff, + 0x0015ffff, + 0x0016ffff, + 0x0000003e, + 0x0000003f, + 0x00000040, + 0x00000041, + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + }, + { + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + }, + { + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + }, + { + 0x001affff, + 0x001bffff, + 0x0019ffff, + 0x0000004d, + 0x00000050, + 0x00000051, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004e, + 0x0001004e, + 0x00020046, + 0x00020046, + 0x00020046, + 0x00020046, + }, + { + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + }, + { + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + }, + { + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + }, + { + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc28[109][2] = +#else +const uint16_t c_aauiLCLDHuffEnc28[109][2] = +#endif + { + { 0x0006, 0x0008 }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0005, 0x0012 }, + { 0x0005, 0x0013 }, + { 0x0005, 0x0014 }, + { 0x0005, 0x0015 }, + { 0x0005, 0x0016 }, + { 0x0005, 0x0017 }, + { 0x0005, 0x0018 }, + { 0x0005, 0x0019 }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0006, 0x0009 }, + { 0x0005, 0x001f }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0010, 0x0006 }, + { 0x0011, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0000 }, + { 0x0010, 0x0008 }, + { 0x0010, 0x0009 }, + { 0x0013, 0x0001 }, + { 0x0011, 0x0007 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec28[30][16] = { + { + 0x000fffff, + 0x0010ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + }, + { + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + }, + { + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + }, + { + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + }, + { + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + }, + { + 0x0015ffff, + 0x0014ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x00000032, + 0x00000033, + 0x00000034, + 0x00000035, + 0x00000036, + 0x00000037, + 0x00000038, + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + }, + { + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + }, + { + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + }, + { + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + }, + { + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, + { + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + }, + { + 0x0019ffff, + 0x0018ffff, + 0x0016ffff, + 0x0017ffff, + 0x00000047, + 0x00000048, + 0x00000049, + 0x0000004a, + 0x0000004b, + 0x0000004c, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + }, + { + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004d, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + }, + { + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + }, + { + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020054, + 0x00020054, + 0x00020054, + 0x00020054, + }, + { + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001affff, + 0x00000055, + 0x00000057, + 0x0000005a, + 0x0000005c, + 0x0000005e, + 0x0000005f, + 0x00010056, + 0x00010056, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + }, + { + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + 0x00030061, + }, + { + 0x0001005d, + 0x0001005d, + 0x00010060, + 0x00010060, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + }, + { + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020068, + 0x00020068, + 0x00020068, + 0x00020068, + }, + { + 0x00020069, + 0x00020069, + 0x00020069, + 0x00020069, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc29[129][2] = +#else +const uint16_t c_aauiLCLDHuffEnc29[129][2] = +#endif + { + { 0x0006, 0x0009 }, + { 0x0005, 0x0019 }, + { 0x0006, 0x000a }, + { 0x0005, 0x001a }, + { 0x0005, 0x001b }, + { 0x0005, 0x001c }, + { 0x0006, 0x000b }, + { 0x0005, 0x001d }, + { 0x0005, 0x001e }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0005, 0x001f }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0006, 0x0030 }, + { 0x0006, 0x0031 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0011, 0x0007 }, + { 0x000f, 0x0008 }, + { 0x0012, 0x0000 }, + { 0x000f, 0x0009 }, + { 0x0010, 0x0005 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x0012, 0x0001 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0011, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0011, 0x0009 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec29[34][16] = { + { + 0x000fffff, + 0x0010ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + }, + { + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + 0x00030001, + }, + { + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x00010039, + 0x00010039, + 0x0001003a, + 0x0001003a, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + }, + { + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + }, + { + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + }, + { + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + }, + { + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + }, + { + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + }, + { + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + }, + { + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + }, + { + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002d, + }, + { + 0x0016ffff, + 0x0014ffff, + 0x0015ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0000003b, + 0x0000003c, + 0x0000003d, + 0x0000003e, + 0x0000003f, + 0x00000040, + 0x00000041, + 0x00000042, + 0x00010030, + 0x00010030, + }, + { + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + }, + { + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + }, + { + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + }, + { + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + }, + { + 0x00010052, + 0x00010052, + 0x00010053, + 0x00010053, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004b, + }, + { + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x0002004e, + 0x0002004e, + 0x0002004e, + 0x0002004e, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x0002004f, + }, + { + 0x001cffff, + 0x001bffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x00000054, + 0x00000055, + 0x00000056, + 0x00000057, + 0x00000058, + 0x00000059, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + }, + { + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + }, + { + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + }, + { + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + }, + { + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + }, + { + 0x0001006a, + 0x0001006a, + 0x0001006c, + 0x0001006c, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + }, + { + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x001dffff, + 0x001effff, + 0x0000006d, + 0x00000071, + 0x00000072, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + }, + { + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + }, + { + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + }, + { + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + }, + { + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + }, + { + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007d, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc30[153][2] = +#else +const uint16_t c_aauiLCLDHuffEnc30[153][2] = +#endif + { + { 0x0007, 0x0009 }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0006, 0x0030 }, + { 0x0006, 0x0031 }, + { 0x0006, 0x0032 }, + { 0x0006, 0x0033 }, + { 0x0006, 0x0034 }, + { 0x0006, 0x0035 }, + { 0x0006, 0x0036 }, + { 0x0006, 0x0037 }, + { 0x0006, 0x0038 }, + { 0x0006, 0x0039 }, + { 0x0006, 0x003a }, + { 0x0006, 0x003b }, + { 0x0006, 0x003c }, + { 0x0006, 0x003d }, + { 0x0006, 0x003e }, + { 0x0006, 0x003f }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0007, 0x0015 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0007, 0x0018 }, + { 0x0007, 0x0019 }, + { 0x0007, 0x001a }, + { 0x0007, 0x001b }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x000a, 0x0008 }, + { 0x0009, 0x000f }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000c, 0x0008 }, + { 0x000b, 0x000e }, + { 0x000b, 0x000f }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000d, 0x0008 }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000d, 0x0009 }, + { 0x000c, 0x000d }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000e, 0x0008 }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x000f, 0x0008 }, + { 0x0010, 0x0006 }, + { 0x000e, 0x000d }, + { 0x000e, 0x000e }, + { 0x000e, 0x000f }, + { 0x0010, 0x0007 }, + { 0x000f, 0x0009 }, + { 0x0010, 0x0008 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x000f, 0x000d }, + { 0x0010, 0x0009 }, + { 0x0011, 0x0000 }, + { 0x0011, 0x0001 }, + { 0x0011, 0x0002 }, + { 0x000f, 0x000e }, + { 0x0010, 0x000a }, + { 0x0011, 0x0003 }, + { 0x0011, 0x0004 }, + { 0x0011, 0x0005 }, + { 0x000f, 0x000f }, + { 0x0011, 0x0006 }, + { 0x0011, 0x0007 }, + { 0x0011, 0x0008 }, + { 0x0011, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0011, 0x000b }, + { 0x0010, 0x000b }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec30[39][16] = { + { + 0x0010ffff, + 0x000effff, + 0x000fffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + }, + { + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + }, + { + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + }, + { + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + }, + { + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + }, + { + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, + { + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + }, + { + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + }, + { + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + }, + { + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + }, + { + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + }, + { + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020032, + 0x00020032, + 0x00020032, + 0x00020032, + }, + { + 0x0000004d, + 0x0000004e, + 0x00010000, + 0x00010000, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + }, + { + 0x00010039, + 0x00010039, + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + }, + { + 0x0017ffff, + 0x0018ffff, + 0x0016ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x00000045, + 0x00000046, + 0x00000047, + 0x00000048, + 0x00000049, + 0x0000004a, + 0x0000004b, + 0x0000004c, + }, + { + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + }, + { + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + }, + { + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + }, + { + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + }, + { + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + }, + { + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020057, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + }, + { + 0x001fffff, + 0x0020ffff, + 0x001dffff, + 0x001effff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x00000065, + 0x00000068, + 0x00000069, + 0x0000006b, + 0x0000006c, + 0x0000006e, + 0x0001005e, + 0x0001005e, + }, + { + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + 0x00010064, + 0x00010064, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + }, + { + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006a, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + 0x0003006d, + }, + { + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + }, + { + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + }, + { + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + 0x00030075, + }, + { + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + }, + { + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + }, + { + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0025ffff, + 0x0026ffff, + 0x0000007d, + 0x00000081, + 0x00000083, + 0x00000088, + 0x0000008d, + 0x00000098, + 0x0001007a, + 0x0001007a, + 0x0001007b, + 0x0001007b, + }, + { + 0x0001007c, + 0x0001007c, + 0x00010082, + 0x00010082, + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010087, + 0x00010087, + 0x0001008c, + 0x0001008c, + 0x00010091, + 0x00010091, + }, + { + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x00030089, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + }, + { + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + 0x0003008e, + }, + { + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x0003008f, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + }, + { + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + 0x00030093, + }, + { + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + 0x00030095, + }, + { + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030096, + 0x00030097, + 0x00030097, + 0x00030097, + 0x00030097, + 0x00030097, + 0x00030097, + 0x00030097, + 0x00030097, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc31[181][2] = +#else +const uint16_t c_aauiLCLDHuffEnc31[181][2] = +#endif + { + { 0x0007, 0x000b }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0006, 0x0018 }, + { 0x0006, 0x0019 }, + { 0x0006, 0x001a }, + { 0x0006, 0x001b }, + { 0x0006, 0x001c }, + { 0x0006, 0x001d }, + { 0x0006, 0x001e }, + { 0x0006, 0x001f }, + { 0x0006, 0x0020 }, + { 0x0006, 0x0021 }, + { 0x0006, 0x0022 }, + { 0x0006, 0x0023 }, + { 0x0006, 0x0024 }, + { 0x0006, 0x0025 }, + { 0x0006, 0x0026 }, + { 0x0006, 0x0027 }, + { 0x0006, 0x0028 }, + { 0x0006, 0x0029 }, + { 0x0006, 0x002a }, + { 0x0006, 0x002b }, + { 0x0006, 0x002c }, + { 0x0006, 0x002d }, + { 0x0006, 0x002e }, + { 0x0006, 0x002f }, + { 0x0006, 0x0030 }, + { 0x0006, 0x0031 }, + { 0x0006, 0x0032 }, + { 0x0006, 0x0033 }, + { 0x0006, 0x0034 }, + { 0x0006, 0x0035 }, + { 0x0006, 0x0036 }, + { 0x0006, 0x0037 }, + { 0x0006, 0x0038 }, + { 0x0006, 0x0039 }, + { 0x0006, 0x003a }, + { 0x0006, 0x003b }, + { 0x0006, 0x003c }, + { 0x0006, 0x003d }, + { 0x0006, 0x003e }, + { 0x0007, 0x000c }, + { 0x0006, 0x003f }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0007, 0x0015 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0007, 0x0018 }, + { 0x0007, 0x0019 }, + { 0x0007, 0x001a }, + { 0x0007, 0x001b }, + { 0x0007, 0x001c }, + { 0x0007, 0x001d }, + { 0x0007, 0x001e }, + { 0x0007, 0x001f }, + { 0x0007, 0x0020 }, + { 0x0007, 0x0021 }, + { 0x0007, 0x0022 }, + { 0x0007, 0x0023 }, + { 0x0007, 0x0024 }, + { 0x0007, 0x0025 }, + { 0x0007, 0x0026 }, + { 0x0007, 0x0027 }, + { 0x0007, 0x0028 }, + { 0x0007, 0x0029 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0008, 0x0012 }, + { 0x0008, 0x0013 }, + { 0x0008, 0x0014 }, + { 0x0008, 0x0015 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000a, 0x000e }, + { 0x000a, 0x000f }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000b, 0x000e }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000b, 0x000f }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000c, 0x000d }, + { 0x000d, 0x0008 }, + { 0x000c, 0x000e }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000c, 0x000f }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000e, 0x000d }, + { 0x000e, 0x000e }, + { 0x000e, 0x000f }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x0010, 0x0009 }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x0010, 0x000a }, + { 0x0010, 0x000b }, + { 0x0010, 0x000c }, + { 0x0010, 0x000d }, + { 0x0011, 0x000a }, + { 0x0010, 0x000e }, + { 0x000f, 0x000f }, + { 0x0010, 0x000f }, + { 0x0012, 0x0000 }, + { 0x0012, 0x0001 }, + { 0x0011, 0x000b }, + { 0x0011, 0x000c }, + { 0x0010, 0x0010 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0011, 0x000d }, + { 0x0011, 0x000e }, + { 0x0011, 0x000f }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0010, 0x0011 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0012, 0x0010 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec31[43][16] = { + { + 0x0010ffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + }, + { + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + }, + { + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020007, + }, + { + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + }, + { + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + }, + { + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + }, + { + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + }, + { + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + }, + { + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + }, + { + 0x00000051, + 0x00000052, + 0x00000053, + 0x00000054, + 0x00000055, + 0x00000056, + 0x00010000, + 0x00010000, + 0x0001002b, + 0x0001002b, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + }, + { + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + }, + { + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + }, + { + 0x00010040, + 0x00010040, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + }, + { + 0x0019ffff, + 0x0018ffff, + 0x0016ffff, + 0x0017ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0000004a, + 0x0000004b, + 0x0000004c, + 0x0000004d, + 0x0000004e, + 0x0000004f, + 0x00000050, + }, + { + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + }, + { + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + }, + { + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + }, + { + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005d, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + 0x0003005e, + }, + { + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x0003005f, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + 0x00030060, + }, + { + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + }, + { + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020068, + 0x00020068, + 0x00020068, + 0x00020068, + }, + { + 0x00010069, + 0x00010069, + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + 0x0001006c, + 0x0001006c, + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00010072, + 0x00010072, + }, + { + 0x0021ffff, + 0x0020ffff, + 0x001effff, + 0x001fffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x00000070, + 0x00000071, + 0x00000073, + 0x00000074, + 0x00000075, + 0x00000076, + 0x00000078, + 0x0000007b, + }, + { + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + }, + { + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + 0x0003007c, + }, + { + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + }, + { + 0x0003007f, + 0x0003007f, + 0x0003007f, + 0x0003007f, + 0x0003007f, + 0x0003007f, + 0x0003007f, + 0x0003007f, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + 0x00030080, + }, + { + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020084, + }, + { + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020088, + }, + { + 0x0000009c, + 0x000000a4, + 0x00010089, + 0x00010089, + 0x0001008a, + 0x0001008a, + 0x0001008b, + 0x0001008b, + 0x0001008c, + 0x0001008c, + 0x0001008e, + 0x0001008e, + 0x0001008f, + 0x0001008f, + 0x00010096, + 0x00010096, + }, + { + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0025ffff, + 0x0000008d, + 0x00000090, + 0x00000091, + 0x00000092, + 0x00000093, + 0x00000095, + 0x00000097, + }, + { + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + 0x0003009a, + }, + { + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009b, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + 0x0003009f, + }, + { + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a0, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + 0x000300a1, + }, + { + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + }, + { + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020098, + 0x00020099, + 0x00020099, + 0x00020099, + 0x00020099, + 0x0002009d, + 0x0002009d, + 0x0002009d, + 0x0002009d, + 0x0002009e, + 0x0002009e, + 0x0002009e, + 0x0002009e, + }, + { + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + }, + { + 0x000200a9, + 0x000200a9, + 0x000200a9, + 0x000200a9, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ab, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200ac, + }, + { + 0x000200ad, + 0x000200ad, + 0x000200ad, + 0x000200ad, + 0x000200ae, + 0x000200ae, + 0x000200ae, + 0x000200ae, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200b0, + 0x000200b0, + 0x000200b0, + 0x000200b0, + }, + { + 0x000200b1, + 0x000200b1, + 0x000200b1, + 0x000200b1, + 0x000200b2, + 0x000200b2, + 0x000200b2, + 0x000200b2, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b3, + 0x000200b4, + 0x000200b4, + 0x000200b4, + 0x000200b4, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc33[16][2] = +#else +const uint16_t c_aauiLCLDHuffEnc33[16][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0008, 0x0000 }, + { 0x0008, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec33[2][16] = { + { + 0x0001ffff, + 0x00000005, + 0x00010001, + 0x00010001, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00000002, + 0x00000003, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + 0x0000000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc34[16][2] = +#else +const uint16_t c_aauiLCLDHuffEnc34[16][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0008, 0x0000 }, + { 0x0008, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec34[2][16] = { + { + 0x0001ffff, + 0x00000005, + 0x00010001, + 0x00010001, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00000002, + 0x00000003, + 0x00000006, + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + 0x0000000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc35[25][2] = +#else +const uint16_t c_aauiLCLDHuffEnc35[25][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0000 }, + { 0x0009, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0007, 0x0007 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec35[9][16] = { + { + 0x0001ffff, + 0x00000006, + 0x00010001, + 0x00010001, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0007ffff, + 0x0008ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0006ffff, + 0x00000014, + 0x00000015, + 0x00000016, + 0x00000017, + 0x00000018, + 0x00010002, + 0x00010002, + 0x0001000a, + 0x0001000a, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + }, + { + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc36[36][2] = +#else +const uint16_t c_aauiLCLDHuffEnc36[36][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x000b, 0x0000 }, + { 0x000b, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0008, 0x0005 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0003 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000b, 0x000e }, + { 0x000b, 0x000f }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000a, 0x000e }, + { 0x000a, 0x000f }, + { 0x000a, 0x0010 }, + { 0x000a, 0x0011 }, + { 0x000a, 0x0012 }, + { 0x000a, 0x0013 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec36[7][16] = { + { + 0x0001ffff, + 0x00000007, + 0x00010006, + 0x00010006, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x00000008, + 0x0001000d, + 0x0001000d, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + }, + { + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + }, + { + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + }, + { + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + }, + { + 0x00010003, + 0x00010003, + 0x00010004, + 0x00010004, + 0x00010005, + 0x00010005, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc37[36][2] = +#else +const uint16_t c_aauiLCLDHuffEnc37[36][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000c, 0x0000 }, + { 0x000c, 0x0001 }, + { 0x000c, 0x0002 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000c, 0x000d }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000c, 0x0011 }, + { 0x000c, 0x0012 }, + { 0x000c, 0x0013 }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000c, 0x0016 }, + { 0x000c, 0x0017 }, + { 0x000c, 0x0018 }, + { 0x000c, 0x0019 }, + { 0x000b, 0x000d }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec37[4][16] = { + { + 0x0001ffff, + 0x00000007, + 0x00010006, + 0x00010006, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003ffff, + 0x0002ffff, + 0x0001000d, + 0x0001000d, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + }, + { + 0x00000019, + 0x0000001a, + 0x0000001b, + 0x0000001c, + 0x0000001d, + 0x0000001e, + 0x0000001f, + 0x00000020, + 0x00000021, + 0x00000022, + 0x00010023, + 0x00010023, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + }, + { + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000009, + 0x0000000a, + 0x0000000b, + 0x0000000f, + 0x00000010, + 0x00000011, + 0x00000012, + 0x00000013, + 0x00000014, + 0x00000015, + 0x00000016, + 0x00000017, + 0x00000018, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc38[49][2] = +#else +const uint16_t c_aauiLCLDHuffEnc38[49][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0000 }, + { 0x000d, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000b, 0x000a }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0003 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000c, 0x0013 }, + { 0x000b, 0x000b }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000d, 0x0010 }, + { 0x000d, 0x0011 }, + { 0x000d, 0x0012 }, + { 0x000d, 0x0013 }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000d, 0x0016 }, + { 0x000d, 0x0017 }, + { 0x000d, 0x0018 }, + { 0x000d, 0x0019 }, + { 0x000d, 0x001a }, + { 0x000d, 0x001b }, + { 0x000d, 0x001c }, + { 0x000d, 0x001d }, + { 0x000d, 0x001e }, + { 0x000d, 0x001f }, + { 0x000d, 0x0020 }, + { 0x000d, 0x0021 }, + { 0x000d, 0x0022 }, + { 0x000d, 0x0023 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec38[22][16] = { + { + 0x0001ffff, + 0x00000008, + 0x00010001, + 0x00010001, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020007, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003ffff, + 0x0002ffff, + 0x00010009, + 0x00010009, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + }, + { + 0x0014ffff, + 0x0015ffff, + 0x00000003, + 0x00000015, + 0x0001000a, + 0x0001000a, + 0x00010016, + 0x00010016, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + }, + { + 0x0005ffff, + 0x0006ffff, + 0x0004ffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, + { + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + }, + { + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + }, + { + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + }, + { + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + }, + { + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + }, + { + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc39[64][2] = +#else +const uint16_t c_aauiLCLDHuffEnc39[64][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x000f, 0x0000 }, + { 0x000f, 0x0001 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0003 }, + { 0x000d, 0x000e }, + { 0x000f, 0x0008 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000d, 0x000f }, + { 0x000f, 0x000c }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x000f, 0x000f }, + { 0x000f, 0x0010 }, + { 0x000f, 0x0011 }, + { 0x000f, 0x0012 }, + { 0x000f, 0x0013 }, + { 0x000f, 0x0014 }, + { 0x000f, 0x0015 }, + { 0x000f, 0x0016 }, + { 0x000f, 0x0017 }, + { 0x000f, 0x0018 }, + { 0x000f, 0x0019 }, + { 0x000f, 0x001a }, + { 0x000f, 0x001b }, + { 0x000f, 0x001c }, + { 0x000f, 0x001d }, + { 0x000f, 0x001e }, + { 0x000f, 0x001f }, + { 0x000f, 0x0020 }, + { 0x000f, 0x0021 }, + { 0x000f, 0x0022 }, + { 0x000f, 0x0023 }, + { 0x000f, 0x0024 }, + { 0x000f, 0x0025 }, + { 0x000f, 0x0026 }, + { 0x000f, 0x0027 }, + { 0x000f, 0x0028 }, + { 0x000f, 0x0029 }, + { 0x000e, 0x0015 }, + { 0x000e, 0x0016 }, + { 0x000e, 0x0017 }, + { 0x000e, 0x0018 }, + { 0x000e, 0x0019 }, + { 0x000e, 0x001a }, + { 0x000e, 0x001b }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec39[12][16] = { + { + 0x0001ffff, + 0x00000009, + 0x00010008, + 0x00010008, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003ffff, + 0x0002ffff, + 0x0001000a, + 0x0001000a, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + 0x00030012, + }, + { + 0x0008ffff, + 0x0007ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x0005ffff, + 0x0006ffff, + 0x0004ffff, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + }, + { + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003b, + }, + { + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + }, + { + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + }, + { + 0x00010004, + 0x00010004, + 0x00010005, + 0x00010005, + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + }, + { + 0x0001001f, + 0x0001001f, + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + }, + { + 0x00010027, + 0x00010027, + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + }, + { + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc40[81][2] = +#else +const uint16_t c_aauiLCLDHuffEnc40[81][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0002, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000f, 0x0011 }, + { 0x0011, 0x0000 }, + { 0x0011, 0x0001 }, + { 0x0011, 0x0002 }, + { 0x0011, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0002 }, + { 0x000e, 0x0009 }, + { 0x0011, 0x0004 }, + { 0x0011, 0x0005 }, + { 0x0011, 0x0006 }, + { 0x0011, 0x0007 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0005 }, + { 0x0011, 0x0008 }, + { 0x0011, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0011, 0x000b }, + { 0x0011, 0x000c }, + { 0x000b, 0x0003 }, + { 0x000a, 0x0003 }, + { 0x000c, 0x0003 }, + { 0x0011, 0x000d }, + { 0x0011, 0x000e }, + { 0x0011, 0x000f }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0011, 0x0012 }, + { 0x0011, 0x0013 }, + { 0x0011, 0x0014 }, + { 0x0011, 0x0015 }, + { 0x0011, 0x0016 }, + { 0x0011, 0x0017 }, + { 0x0011, 0x0018 }, + { 0x0011, 0x0019 }, + { 0x0011, 0x001a }, + { 0x0011, 0x001b }, + { 0x0011, 0x001c }, + { 0x0011, 0x001d }, + { 0x0011, 0x001e }, + { 0x0011, 0x001f }, + { 0x0011, 0x0020 }, + { 0x0011, 0x0021 }, + { 0x0011, 0x0022 }, + { 0x0011, 0x0023 }, + { 0x0011, 0x0024 }, + { 0x0011, 0x0025 }, + { 0x0011, 0x0026 }, + { 0x0011, 0x0027 }, + { 0x0011, 0x0028 }, + { 0x0011, 0x0029 }, + { 0x0011, 0x002a }, + { 0x0011, 0x002b }, + { 0x0011, 0x002c }, + { 0x0011, 0x002d }, + { 0x0011, 0x002e }, + { 0x0011, 0x002f }, + { 0x0011, 0x0030 }, + { 0x0011, 0x0031 }, + { 0x0011, 0x0032 }, + { 0x0011, 0x0033 }, + { 0x0011, 0x0034 }, + { 0x0011, 0x0035 }, + { 0x0011, 0x0036 }, + { 0x0011, 0x0037 }, + { 0x0011, 0x0038 }, + { 0x0011, 0x0039 }, + { 0x0011, 0x003a }, + { 0x0011, 0x003b }, + { 0x0010, 0x001e }, + { 0x0010, 0x001f }, + { 0x0010, 0x0020 }, + { 0x0010, 0x0021 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec40[36][16] = { + { + 0x0001ffff, + 0x0000000a, + 0x00010009, + 0x00010009, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x00000014, + 0x0001000b, + 0x0001000b, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x0005ffff, + 0x0004ffff, + 0x0003ffff, + 0x0000001d, + 0x00010003, + 0x00010003, + 0x0001001b, + 0x0001001b, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, + { + 0x0000004f, + 0x00000050, + 0x00010004, + 0x00010004, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + 0x0000004d, + 0x0000004e, + }, + { + 0x0023ffff, + 0x000affff, + 0x0006ffff, + 0x000bffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + }, + { + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + }, + { + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + }, + { + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + }, + { + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + }, + { + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + }, + { + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + }, + { + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + }, + { + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + }, + { + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + }, + { + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + }, + { + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + }, + { + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + }, + { + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + }, + { + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, + { + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + }, + { + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + }, + { + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + 0x00030044, + }, + { + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + }, + { + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + }, + { + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + }, + { + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + }, + { + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc41[100][2] = +#else +const uint16_t c_aauiLCLDHuffEnc41[100][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x0011, 0x0014 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0002, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x0010, 0x000b }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x000d, 0x0002 }, + { 0x0011, 0x0015 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000d, 0x0003 }, + { 0x0010, 0x000c }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0010, 0x000d }, + { 0x000f, 0x0007 }, + { 0x0012, 0x0027 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec41[16][16] = { + { + 0x0001ffff, + 0x0000000b, + 0x00010001, + 0x00010001, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0002ffff, + 0x00000016, + 0x0001000c, + 0x0001000c, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + }, + { + 0x0004ffff, + 0x0003ffff, + 0x00010003, + 0x00010003, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + }, + { + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0006ffff, + 0x0005ffff, + 0x0000000e, + 0x00000021, + 0x00000028, + 0x00010029, + 0x00010029, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, + { + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + }, + { + 0x00010005, + 0x00010005, + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + }, + { + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + 0x00010022, + 0x00010022, + }, + { + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + }, + { + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + }, + { + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + }, + { + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + }, + { + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + }, + { + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + 0x00010052, + 0x00010052, + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + }, + { + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x0001005a, + 0x0001005a, + 0x0001005b, + 0x0001005b, + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc42[169][2] = +#else +const uint16_t c_aauiLCLDHuffEnc42[169][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000e, 0x0006 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000d, 0x0004 }, + { 0x0010, 0x0013 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000f, 0x000b }, + { 0x0011, 0x0025 }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0009, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000d, 0x0005 }, + { 0x0010, 0x0014 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0007 }, + { 0x0010, 0x0015 }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0012, 0x0045 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0012, 0x0046 }, + { 0x0012, 0x0047 }, + { 0x0012, 0x0048 }, + { 0x0012, 0x0049 }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec42[28][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00010001, + 0x00010001, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0003ffff, + 0x0004ffff, + 0x0000001c, + 0x00000028, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001a, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + }, + { + 0x000affff, + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x0001001d, + 0x0001001d, + 0x00010029, + 0x00010029, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + }, + { + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + }, + { + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + }, + { + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x001bffff, + 0x0009ffff, + 0x0008ffff, + 0x00000012, + 0x0000002b, + 0x00000037, + 0x0001001e, + 0x0001001e, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020004, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + }, + { + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a7, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + }, + { + 0x000100a3, + 0x000100a3, + 0x000100a4, + 0x000100a4, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a5, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a6, + }, + { + 0x000dffff, + 0x000bffff, + 0x000cffff, + 0x000effff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + }, + { + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x00010020, + 0x00010020, + }, + { + 0x00010021, + 0x00010021, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + }, + { + 0x00010005, + 0x00010005, + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + }, + { + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + }, + { + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + 0x00010042, + 0x00010042, + }, + { + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + }, + { + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + 0x00010052, + 0x00010052, + }, + { + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x0001005a, + 0x0001005a, + }, + { + 0x0001005b, + 0x0001005b, + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + }, + { + 0x00010063, + 0x00010063, + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x00010069, + 0x00010069, + 0x0001006a, + 0x0001006a, + }, + { + 0x0001006b, + 0x0001006b, + 0x0001006c, + 0x0001006c, + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00010070, + 0x00010070, + 0x00010071, + 0x00010071, + 0x00010072, + 0x00010072, + }, + { + 0x00010073, + 0x00010073, + 0x00010074, + 0x00010074, + 0x00010075, + 0x00010075, + 0x00010076, + 0x00010076, + 0x00010077, + 0x00010077, + 0x00010078, + 0x00010078, + 0x00010079, + 0x00010079, + 0x0001007a, + 0x0001007a, + }, + { + 0x0001007b, + 0x0001007b, + 0x0001007c, + 0x0001007c, + 0x0001007d, + 0x0001007d, + 0x0001007e, + 0x0001007e, + 0x0001007f, + 0x0001007f, + 0x00010080, + 0x00010080, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + }, + { + 0x00010083, + 0x00010083, + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010087, + 0x00010087, + 0x00010088, + 0x00010088, + 0x00010089, + 0x00010089, + 0x0001008a, + 0x0001008a, + }, + { + 0x0001008b, + 0x0001008b, + 0x0001008c, + 0x0001008c, + 0x0001008d, + 0x0001008d, + 0x0001008e, + 0x0001008e, + 0x0001008f, + 0x0001008f, + 0x00010090, + 0x00010090, + 0x00010091, + 0x00010091, + 0x00010092, + 0x00010092, + }, + { + 0x00010093, + 0x00010093, + 0x00010094, + 0x00010094, + 0x00010095, + 0x00010095, + 0x00010096, + 0x00010096, + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + 0x00010099, + 0x00010099, + 0x0001009a, + 0x0001009a, + }, + { + 0x0001009b, + 0x0001009b, + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + 0x000100a1, + 0x000100a1, + 0x000100a2, + 0x000100a2, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc43[196][2] = +#else +const uint16_t c_aauiLCLDHuffEnc43[196][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0009, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x0010, 0x0017 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x0010, 0x0018 }, + { 0x0012, 0x0050 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000d, 0x0004 }, + { 0x0011, 0x002a }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000c, 0x0005 }, + { 0x000f, 0x000d }, + { 0x0012, 0x0051 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0005 }, + { 0x000f, 0x000e }, + { 0x0011, 0x002b }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0011, 0x002c }, + { 0x000f, 0x000f }, + { 0x0010, 0x0019 }, + { 0x0012, 0x0052 }, + { 0x0012, 0x0053 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0011, 0x002d }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec43[32][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00010001, + 0x00010001, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x0005ffff, + 0x0003ffff, + 0x0004ffff, + 0x0000001e, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + }, + { + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + }, + { + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030003, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + 0x00030011, + }, + { + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x000bffff, + 0x0007ffff, + 0x0006ffff, + 0x00000004, + 0x00000012, + 0x0000002d, + 0x00000038, + 0x00000039, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + }, + { + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + }, + { + 0x001cffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x00000005, + 0x00000013, + 0x00000048, + 0x0001002e, + 0x0001002e, + 0x0001003b, + 0x0001003b, + 0x00010047, + 0x00010047, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + }, + { + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + }, + { + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + }, + { + 0x000dffff, + 0x000effff, + 0x000cffff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + }, + { + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x00010030, + 0x00010030, + }, + { + 0x00010006, + 0x00010006, + 0x00010007, + 0x00010007, + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + }, + { + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x00010022, + 0x00010022, + }, + { + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x0001003d, + 0x0001003d, + }, + { + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + }, + { + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + 0x00010052, + 0x00010052, + }, + { + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x0001005a, + 0x0001005a, + 0x0001005b, + 0x0001005b, + }, + { + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + }, + { + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x00010069, + 0x00010069, + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + }, + { + 0x0001006c, + 0x0001006c, + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00010070, + 0x00010070, + 0x00010071, + 0x00010071, + 0x00010072, + 0x00010072, + 0x00010073, + 0x00010073, + }, + { + 0x00010074, + 0x00010074, + 0x00010075, + 0x00010075, + 0x00010076, + 0x00010076, + 0x00010077, + 0x00010077, + 0x00010078, + 0x00010078, + 0x00010079, + 0x00010079, + 0x0001007a, + 0x0001007a, + 0x0001007b, + 0x0001007b, + }, + { + 0x0001007c, + 0x0001007c, + 0x0001007d, + 0x0001007d, + 0x0001007e, + 0x0001007e, + 0x0001007f, + 0x0001007f, + 0x00010080, + 0x00010080, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + 0x00010083, + 0x00010083, + }, + { + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010087, + 0x00010087, + 0x00010088, + 0x00010088, + 0x00010089, + 0x00010089, + 0x0001008a, + 0x0001008a, + 0x0001008b, + 0x0001008b, + }, + { + 0x0001008c, + 0x0001008c, + 0x0001008d, + 0x0001008d, + 0x0001008e, + 0x0001008e, + 0x0001008f, + 0x0001008f, + 0x00010090, + 0x00010090, + 0x00010091, + 0x00010091, + 0x00010092, + 0x00010092, + 0x00010093, + 0x00010093, + }, + { + 0x00010094, + 0x00010094, + 0x00010095, + 0x00010095, + 0x00010096, + 0x00010096, + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + 0x00010099, + 0x00010099, + 0x0001009a, + 0x0001009a, + 0x0001009b, + 0x0001009b, + }, + { + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + 0x000100a1, + 0x000100a1, + 0x000100a2, + 0x000100a2, + 0x000100a3, + 0x000100a3, + }, + { + 0x000100a4, + 0x000100a4, + 0x000100a5, + 0x000100a5, + 0x000100a6, + 0x000100a6, + 0x000100a7, + 0x000100a7, + 0x000100a8, + 0x000100a8, + 0x000100a9, + 0x000100a9, + 0x000100aa, + 0x000100aa, + 0x000100ab, + 0x000100ab, + }, + { + 0x000100ac, + 0x000100ac, + 0x000100ad, + 0x000100ad, + 0x000100ae, + 0x000100ae, + 0x000100af, + 0x000100af, + 0x000100b0, + 0x000100b0, + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + }, + { + 0x000100b4, + 0x000100b4, + 0x000100b5, + 0x000100b5, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + 0x000100b8, + 0x000100b8, + 0x000100b9, + 0x000100b9, + 0x000100ba, + 0x000100ba, + 0x000100bb, + 0x000100bb, + }, + { + 0x000100bc, + 0x000100bc, + 0x000100bd, + 0x000100bd, + 0x000100be, + 0x000100be, + 0x000100bf, + 0x000100bf, + 0x000100c0, + 0x000100c0, + 0x000100c1, + 0x000100c1, + 0x000100c2, + 0x000100c2, + 0x000100c3, + 0x000100c3, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc44[289][2] = +#else +const uint16_t c_aauiLCLDHuffEnc44[289][2] = +#endif + { + { 0x0001, 0x0001 }, + { 0x0003, 0x0001 }, + { 0x0006, 0x0002 }, + { 0x0008, 0x0002 }, + { 0x000b, 0x0002 }, + { 0x000f, 0x000a }, + { 0x0011, 0x0022 }, + { 0x0014, 0x0000 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0014, 0x0006 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000e, 0x0007 }, + { 0x0012, 0x003f }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0006, 0x0003 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000f, 0x000b }, + { 0x0012, 0x0040 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x0010, 0x0013 }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0014, 0x0020 }, + { 0x0014, 0x0021 }, + { 0x0014, 0x0022 }, + { 0x0014, 0x0023 }, + { 0x0014, 0x0024 }, + { 0x0014, 0x0025 }, + { 0x0014, 0x0026 }, + { 0x0014, 0x0027 }, + { 0x0014, 0x0028 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x0011, 0x0023 }, + { 0x0012, 0x0041 }, + { 0x0014, 0x0029 }, + { 0x0014, 0x002a }, + { 0x0013, 0x007b }, + { 0x0014, 0x002b }, + { 0x0014, 0x002c }, + { 0x0014, 0x002d }, + { 0x0014, 0x002e }, + { 0x0014, 0x002f }, + { 0x0014, 0x0030 }, + { 0x0014, 0x0031 }, + { 0x0014, 0x0032 }, + { 0x000f, 0x000c }, + { 0x000e, 0x0009 }, + { 0x000f, 0x000d }, + { 0x0011, 0x0024 }, + { 0x0012, 0x0042 }, + { 0x0014, 0x0033 }, + { 0x0014, 0x0034 }, + { 0x0014, 0x0035 }, + { 0x0014, 0x0036 }, + { 0x0014, 0x0037 }, + { 0x0014, 0x0038 }, + { 0x0014, 0x0039 }, + { 0x0014, 0x003a }, + { 0x0014, 0x003b }, + { 0x0014, 0x003c }, + { 0x0014, 0x003d }, + { 0x0014, 0x003e }, + { 0x0013, 0x007c }, + { 0x0011, 0x0025 }, + { 0x0012, 0x0043 }, + { 0x0014, 0x003f }, + { 0x0014, 0x0040 }, + { 0x0014, 0x0041 }, + { 0x0014, 0x0042 }, + { 0x0014, 0x0043 }, + { 0x0014, 0x0044 }, + { 0x0014, 0x0045 }, + { 0x0014, 0x0046 }, + { 0x0014, 0x0047 }, + { 0x0014, 0x0048 }, + { 0x0014, 0x0049 }, + { 0x0014, 0x004a }, + { 0x0014, 0x004b }, + { 0x0014, 0x004c }, + { 0x0014, 0x004d }, + { 0x0014, 0x004e }, + { 0x0014, 0x004f }, + { 0x0014, 0x0050 }, + { 0x0014, 0x0051 }, + { 0x0014, 0x0052 }, + { 0x0014, 0x0053 }, + { 0x0014, 0x0054 }, + { 0x0014, 0x0055 }, + { 0x0014, 0x0056 }, + { 0x0014, 0x0057 }, + { 0x0014, 0x0058 }, + { 0x0014, 0x0059 }, + { 0x0014, 0x005a }, + { 0x0014, 0x005b }, + { 0x0014, 0x005c }, + { 0x0014, 0x005d }, + { 0x0014, 0x005e }, + { 0x0014, 0x005f }, + { 0x0014, 0x0060 }, + { 0x0014, 0x0061 }, + { 0x0014, 0x0062 }, + { 0x0014, 0x0063 }, + { 0x0014, 0x0064 }, + { 0x0014, 0x0065 }, + { 0x0014, 0x0066 }, + { 0x0014, 0x0067 }, + { 0x0014, 0x0068 }, + { 0x0014, 0x0069 }, + { 0x0014, 0x006a }, + { 0x0014, 0x006b }, + { 0x0014, 0x006c }, + { 0x0014, 0x006d }, + { 0x0014, 0x006e }, + { 0x0014, 0x006f }, + { 0x0014, 0x0070 }, + { 0x0014, 0x0071 }, + { 0x0014, 0x0072 }, + { 0x0014, 0x0073 }, + { 0x0014, 0x0074 }, + { 0x0014, 0x0075 }, + { 0x0014, 0x0076 }, + { 0x0014, 0x0077 }, + { 0x0014, 0x0078 }, + { 0x0014, 0x0079 }, + { 0x0014, 0x007a }, + { 0x0014, 0x007b }, + { 0x0014, 0x007c }, + { 0x0014, 0x007d }, + { 0x0014, 0x007e }, + { 0x0014, 0x007f }, + { 0x0014, 0x0080 }, + { 0x0014, 0x0081 }, + { 0x0014, 0x0082 }, + { 0x0014, 0x0083 }, + { 0x0014, 0x0084 }, + { 0x0014, 0x0085 }, + { 0x0014, 0x0086 }, + { 0x0014, 0x0087 }, + { 0x0014, 0x0088 }, + { 0x0014, 0x0089 }, + { 0x0014, 0x008a }, + { 0x0014, 0x008b }, + { 0x0014, 0x008c }, + { 0x0014, 0x008d }, + { 0x0014, 0x008e }, + { 0x0014, 0x008f }, + { 0x0014, 0x0090 }, + { 0x0014, 0x0091 }, + { 0x0014, 0x0092 }, + { 0x0014, 0x0093 }, + { 0x0014, 0x0094 }, + { 0x0014, 0x0095 }, + { 0x0014, 0x0096 }, + { 0x0014, 0x0097 }, + { 0x0014, 0x0098 }, + { 0x0014, 0x0099 }, + { 0x0014, 0x009a }, + { 0x0014, 0x009b }, + { 0x0014, 0x009c }, + { 0x0014, 0x009d }, + { 0x0014, 0x009e }, + { 0x0014, 0x009f }, + { 0x0014, 0x00a0 }, + { 0x0014, 0x00a1 }, + { 0x0014, 0x00a2 }, + { 0x0014, 0x00a3 }, + { 0x0014, 0x00a4 }, + { 0x0014, 0x00a5 }, + { 0x0014, 0x00a6 }, + { 0x0014, 0x00a7 }, + { 0x0014, 0x00a8 }, + { 0x0014, 0x00a9 }, + { 0x0014, 0x00aa }, + { 0x0014, 0x00ab }, + { 0x0014, 0x00ac }, + { 0x0014, 0x00ad }, + { 0x0014, 0x00ae }, + { 0x0014, 0x00af }, + { 0x0014, 0x00b0 }, + { 0x0014, 0x00b1 }, + { 0x0014, 0x00b2 }, + { 0x0014, 0x00b3 }, + { 0x0014, 0x00b4 }, + { 0x0014, 0x00b5 }, + { 0x0014, 0x00b6 }, + { 0x0014, 0x00b7 }, + { 0x0014, 0x00b8 }, + { 0x0014, 0x00b9 }, + { 0x0014, 0x00ba }, + { 0x0014, 0x00bb }, + { 0x0014, 0x00bc }, + { 0x0014, 0x00bd }, + { 0x0014, 0x00be }, + { 0x0014, 0x00bf }, + { 0x0014, 0x00c0 }, + { 0x0014, 0x00c1 }, + { 0x0014, 0x00c2 }, + { 0x0014, 0x00c3 }, + { 0x0014, 0x00c4 }, + { 0x0014, 0x00c5 }, + { 0x0014, 0x00c6 }, + { 0x0014, 0x00c7 }, + { 0x0014, 0x00c8 }, + { 0x0014, 0x00c9 }, + { 0x0014, 0x00ca }, + { 0x0014, 0x00cb }, + { 0x0014, 0x00cc }, + { 0x0014, 0x00cd }, + { 0x0014, 0x00ce }, + { 0x0014, 0x00cf }, + { 0x0014, 0x00d0 }, + { 0x0014, 0x00d1 }, + { 0x0014, 0x00d2 }, + { 0x0014, 0x00d3 }, + { 0x0014, 0x00d4 }, + { 0x0014, 0x00d5 }, + { 0x0014, 0x00d6 }, + { 0x0014, 0x00d7 }, + { 0x0014, 0x00d8 }, + { 0x0014, 0x00d9 }, + { 0x0014, 0x00da }, + { 0x0014, 0x00db }, + { 0x0014, 0x00dc }, + { 0x0014, 0x00dd }, + { 0x0014, 0x00de }, + { 0x0014, 0x00df }, + { 0x0014, 0x00e0 }, + { 0x0014, 0x00e1 }, + { 0x0014, 0x00e2 }, + { 0x0014, 0x00e3 }, + { 0x0014, 0x00e4 }, + { 0x0014, 0x00e5 }, + { 0x0014, 0x00e6 }, + { 0x0014, 0x00e7 }, + { 0x0014, 0x00e8 }, + { 0x0014, 0x00e9 }, + { 0x0014, 0x00ea }, + { 0x0014, 0x00eb }, + { 0x0014, 0x00ec }, + { 0x0014, 0x00ed }, + { 0x0014, 0x00ee }, + { 0x0014, 0x00ef }, + { 0x0014, 0x00f0 }, + { 0x0014, 0x00f1 }, + { 0x0014, 0x00f2 }, + { 0x0014, 0x00f3 }, + { 0x0014, 0x00f4 }, + { 0x0014, 0x00f5 }, + { 0x0013, 0x007d }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec44[27][16] = { + { + 0x0002ffff, + 0x0001ffff, + 0x00010001, + 0x00010001, + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + 0x00030000, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + }, + { + 0x0004ffff, + 0x0003ffff, + 0x00000003, + 0x00000014, + 0x00000033, + 0x00000034, + 0x00010024, + 0x00010024, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + }, + { + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x000affff, + 0x0006ffff, + 0x0005ffff, + 0x00000026, + 0x00010004, + 0x00010004, + 0x00010015, + 0x00010015, + 0x00010036, + 0x00010036, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + }, + { + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + }, + { + 0x0009ffff, + 0x0007ffff, + 0x0008ffff, + 0x00000038, + 0x00010005, + 0x00010005, + 0x00010027, + 0x00010027, + 0x00010055, + 0x00010055, + 0x00010057, + 0x00010057, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + }, + { + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + 0x00030067, + }, + { + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020068, + 0x00020068, + 0x00020068, + 0x00020068, + }, + { + 0x000dffff, + 0x000cffff, + 0x000effff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x000bffff, + }, + { + 0x0000011a, + 0x0000011b, + 0x0000011c, + 0x0000011d, + 0x0000011e, + 0x0000011f, + 0x0001004c, + 0x0001004c, + 0x00010066, + 0x00010066, + 0x00010120, + 0x00010120, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + }, + { + 0x0000001e, + 0x0000001f, + 0x00000020, + 0x00000021, + 0x00000029, + 0x0000002a, + 0x0000002b, + 0x0000002c, + 0x0000002d, + 0x0000002e, + 0x0000002f, + 0x00000030, + 0x00000031, + 0x00000032, + 0x00000039, + 0x0000003a, + }, + { + 0x00000007, + 0x00000008, + 0x00000009, + 0x0000000a, + 0x0000000b, + 0x0000000c, + 0x0000000d, + 0x0000000e, + 0x0000000f, + 0x00000010, + 0x00000018, + 0x00000019, + 0x0000001a, + 0x0000001b, + 0x0000001c, + 0x0000001d, + }, + { + 0x0000003b, + 0x0000003c, + 0x0000003d, + 0x0000003e, + 0x0000003f, + 0x00000040, + 0x00000041, + 0x00000042, + 0x00000043, + 0x0000004a, + 0x0000004b, + 0x0000004d, + 0x0000004e, + 0x0000004f, + 0x00000050, + 0x00000051, + }, + { + 0x00000052, + 0x00000053, + 0x00000054, + 0x0000005a, + 0x0000005b, + 0x0000005c, + 0x0000005d, + 0x0000005e, + 0x0000005f, + 0x00000060, + 0x00000061, + 0x00000062, + 0x00000063, + 0x00000064, + 0x00000065, + 0x00000069, + }, + { + 0x0000006a, + 0x0000006b, + 0x0000006c, + 0x0000006d, + 0x0000006e, + 0x0000006f, + 0x00000070, + 0x00000071, + 0x00000072, + 0x00000073, + 0x00000074, + 0x00000075, + 0x00000076, + 0x00000077, + 0x00000078, + 0x00000079, + }, + { + 0x0000007a, + 0x0000007b, + 0x0000007c, + 0x0000007d, + 0x0000007e, + 0x0000007f, + 0x00000080, + 0x00000081, + 0x00000082, + 0x00000083, + 0x00000084, + 0x00000085, + 0x00000086, + 0x00000087, + 0x00000088, + 0x00000089, + }, + { + 0x0000008a, + 0x0000008b, + 0x0000008c, + 0x0000008d, + 0x0000008e, + 0x0000008f, + 0x00000090, + 0x00000091, + 0x00000092, + 0x00000093, + 0x00000094, + 0x00000095, + 0x00000096, + 0x00000097, + 0x00000098, + 0x00000099, + }, + { + 0x0000009a, + 0x0000009b, + 0x0000009c, + 0x0000009d, + 0x0000009e, + 0x0000009f, + 0x000000a0, + 0x000000a1, + 0x000000a2, + 0x000000a3, + 0x000000a4, + 0x000000a5, + 0x000000a6, + 0x000000a7, + 0x000000a8, + 0x000000a9, + }, + { + 0x000000aa, + 0x000000ab, + 0x000000ac, + 0x000000ad, + 0x000000ae, + 0x000000af, + 0x000000b0, + 0x000000b1, + 0x000000b2, + 0x000000b3, + 0x000000b4, + 0x000000b5, + 0x000000b6, + 0x000000b7, + 0x000000b8, + 0x000000b9, + }, + { + 0x000000ba, + 0x000000bb, + 0x000000bc, + 0x000000bd, + 0x000000be, + 0x000000bf, + 0x000000c0, + 0x000000c1, + 0x000000c2, + 0x000000c3, + 0x000000c4, + 0x000000c5, + 0x000000c6, + 0x000000c7, + 0x000000c8, + 0x000000c9, + }, + { + 0x000000ca, + 0x000000cb, + 0x000000cc, + 0x000000cd, + 0x000000ce, + 0x000000cf, + 0x000000d0, + 0x000000d1, + 0x000000d2, + 0x000000d3, + 0x000000d4, + 0x000000d5, + 0x000000d6, + 0x000000d7, + 0x000000d8, + 0x000000d9, + }, + { + 0x000000da, + 0x000000db, + 0x000000dc, + 0x000000dd, + 0x000000de, + 0x000000df, + 0x000000e0, + 0x000000e1, + 0x000000e2, + 0x000000e3, + 0x000000e4, + 0x000000e5, + 0x000000e6, + 0x000000e7, + 0x000000e8, + 0x000000e9, + }, + { + 0x000000ea, + 0x000000eb, + 0x000000ec, + 0x000000ed, + 0x000000ee, + 0x000000ef, + 0x000000f0, + 0x000000f1, + 0x000000f2, + 0x000000f3, + 0x000000f4, + 0x000000f5, + 0x000000f6, + 0x000000f7, + 0x000000f8, + 0x000000f9, + }, + { + 0x000000fa, + 0x000000fb, + 0x000000fc, + 0x000000fd, + 0x000000fe, + 0x000000ff, + 0x00000100, + 0x00000101, + 0x00000102, + 0x00000103, + 0x00000104, + 0x00000105, + 0x00000106, + 0x00000107, + 0x00000108, + 0x00000109, + }, + { + 0x0000010a, + 0x0000010b, + 0x0000010c, + 0x0000010d, + 0x0000010e, + 0x0000010f, + 0x00000110, + 0x00000111, + 0x00000112, + 0x00000113, + 0x00000114, + 0x00000115, + 0x00000116, + 0x00000117, + 0x00000118, + 0x00000119, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc45[324][2] = +#else +const uint16_t c_aauiLCLDHuffEnc45[324][2] = +#endif + { + { 0x0002, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000c, 0x0005 }, + { 0x0010, 0x0025 }, + { 0x0012, 0x0088 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0006, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x000b, 0x0004 }, + { 0x000f, 0x0014 }, + { 0x0011, 0x0048 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0005, 0x0005 }, + { 0x0004, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0007, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000d, 0x0007 }, + { 0x000f, 0x0015 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0007, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0005 }, + { 0x000b, 0x0005 }, + { 0x000d, 0x0008 }, + { 0x0010, 0x0026 }, + { 0x0012, 0x0089 }, + { 0x0012, 0x008a }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000d, 0x0009 }, + { 0x000f, 0x0016 }, + { 0x0011, 0x0049 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x000c, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x000d }, + { 0x0010, 0x0027 }, + { 0x0012, 0x008b }, + { 0x0012, 0x008c }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x000f, 0x0017 }, + { 0x000f, 0x0018 }, + { 0x000f, 0x0019 }, + { 0x0012, 0x008d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0012, 0x008e }, + { 0x0012, 0x008f }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec45[50][16] = { + { + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000025, + 0x00010001, + 0x00010001, + 0x00010013, + 0x00010013, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x0007ffff, + 0x0005ffff, + 0x0004ffff, + 0x0006ffff, + 0x00010003, + 0x00010003, + 0x00010027, + 0x00010027, + 0x00010036, + 0x00010036, + 0x00010038, + 0x00010038, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + 0x00030039, + }, + { + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + }, + { + 0x000effff, + 0x001fffff, + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x00000005, + 0x0000005a, + 0x0000005c, + 0x00010017, + 0x00010017, + 0x0001003a, + 0x0001003a, + 0x0001004b, + 0x0001004b, + 0x0001005b, + 0x0001005b, + }, + { + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + }, + { + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + }, + { + 0x0030ffff, + 0x0031ffff, + 0x000cffff, + 0x000dffff, + 0x000bffff, + 0x00000006, + 0x0000003c, + 0x0000005e, + 0x00010018, + 0x00010018, + 0x0001002a, + 0x0001002a, + 0x0001004d, + 0x0001004d, + 0x0001006c, + 0x0001006c, + }, + { + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + }, + { + 0x00020007, + 0x00020007, + 0x00020007, + 0x00020007, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x0002005f, + }, + { + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + }, + { + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x000fffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001effff, + }, + { + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x0001003f, + 0x0001003f, + }, + { + 0x00010008, + 0x00010008, + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + }, + { + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + }, + { + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + }, + { + 0x00010040, + 0x00010040, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + }, + { + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + 0x00010052, + 0x00010052, + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + 0x00010056, + 0x00010056, + }, + { + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + }, + { + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x00010069, + 0x00010069, + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + 0x00010070, + 0x00010070, + 0x00010071, + 0x00010071, + }, + { + 0x00010072, + 0x00010072, + 0x00010073, + 0x00010073, + 0x00010074, + 0x00010074, + 0x00010075, + 0x00010075, + 0x00010076, + 0x00010076, + 0x00010077, + 0x00010077, + 0x00010078, + 0x00010078, + 0x00010079, + 0x00010079, + }, + { + 0x0001007a, + 0x0001007a, + 0x0001007b, + 0x0001007b, + 0x0001007c, + 0x0001007c, + 0x0001007d, + 0x0001007d, + 0x0001007e, + 0x0001007e, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + 0x00010083, + 0x00010083, + }, + { + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010087, + 0x00010087, + 0x00010088, + 0x00010088, + 0x00010089, + 0x00010089, + 0x0001008a, + 0x0001008a, + 0x0001008b, + 0x0001008b, + }, + { + 0x0001008c, + 0x0001008c, + 0x0001008d, + 0x0001008d, + 0x0001008e, + 0x0001008e, + 0x0001008f, + 0x0001008f, + 0x00010090, + 0x00010090, + 0x00010091, + 0x00010091, + 0x00010092, + 0x00010092, + 0x00010093, + 0x00010093, + }, + { + 0x00010094, + 0x00010094, + 0x00010095, + 0x00010095, + 0x00010096, + 0x00010096, + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + 0x00010099, + 0x00010099, + 0x0001009a, + 0x0001009a, + 0x0001009b, + 0x0001009b, + }, + { + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + 0x000100a1, + 0x000100a1, + 0x000100a2, + 0x000100a2, + 0x000100a3, + 0x000100a3, + }, + { + 0x000100a4, + 0x000100a4, + 0x000100a5, + 0x000100a5, + 0x000100a6, + 0x000100a6, + 0x000100a7, + 0x000100a7, + 0x000100a8, + 0x000100a8, + 0x000100a9, + 0x000100a9, + 0x000100aa, + 0x000100aa, + 0x000100ab, + 0x000100ab, + }, + { + 0x000100ac, + 0x000100ac, + 0x000100ad, + 0x000100ad, + 0x000100ae, + 0x000100ae, + 0x000100af, + 0x000100af, + 0x000100b0, + 0x000100b0, + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + }, + { + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + }, + { + 0x000100b4, + 0x000100b4, + 0x000100b5, + 0x000100b5, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + 0x000100b8, + 0x000100b8, + 0x000100b9, + 0x000100b9, + 0x000100ba, + 0x000100ba, + 0x000100bb, + 0x000100bb, + }, + { + 0x000100bc, + 0x000100bc, + 0x000100bd, + 0x000100bd, + 0x000100be, + 0x000100be, + 0x000100bf, + 0x000100bf, + 0x000100c0, + 0x000100c0, + 0x000100c1, + 0x000100c1, + 0x000100c2, + 0x000100c2, + 0x000100c3, + 0x000100c3, + }, + { + 0x000100c4, + 0x000100c4, + 0x000100c5, + 0x000100c5, + 0x000100c6, + 0x000100c6, + 0x000100c7, + 0x000100c7, + 0x000100c8, + 0x000100c8, + 0x000100c9, + 0x000100c9, + 0x000100ca, + 0x000100ca, + 0x000100cb, + 0x000100cb, + }, + { + 0x000100cc, + 0x000100cc, + 0x000100cd, + 0x000100cd, + 0x000100ce, + 0x000100ce, + 0x000100cf, + 0x000100cf, + 0x000100d0, + 0x000100d0, + 0x000100d1, + 0x000100d1, + 0x000100d2, + 0x000100d2, + 0x000100d3, + 0x000100d3, + }, + { + 0x000100d4, + 0x000100d4, + 0x000100d5, + 0x000100d5, + 0x000100d6, + 0x000100d6, + 0x000100d7, + 0x000100d7, + 0x000100d8, + 0x000100d8, + 0x000100d9, + 0x000100d9, + 0x000100da, + 0x000100da, + 0x000100db, + 0x000100db, + }, + { + 0x000100dc, + 0x000100dc, + 0x000100dd, + 0x000100dd, + 0x000100de, + 0x000100de, + 0x000100df, + 0x000100df, + 0x000100e0, + 0x000100e0, + 0x000100e1, + 0x000100e1, + 0x000100e2, + 0x000100e2, + 0x000100e3, + 0x000100e3, + }, + { + 0x000100e4, + 0x000100e4, + 0x000100e5, + 0x000100e5, + 0x000100e6, + 0x000100e6, + 0x000100e7, + 0x000100e7, + 0x000100e8, + 0x000100e8, + 0x000100e9, + 0x000100e9, + 0x000100ea, + 0x000100ea, + 0x000100eb, + 0x000100eb, + }, + { + 0x000100ec, + 0x000100ec, + 0x000100ed, + 0x000100ed, + 0x000100ee, + 0x000100ee, + 0x000100ef, + 0x000100ef, + 0x000100f0, + 0x000100f0, + 0x000100f1, + 0x000100f1, + 0x000100f2, + 0x000100f2, + 0x000100f3, + 0x000100f3, + }, + { + 0x000100f4, + 0x000100f4, + 0x000100f5, + 0x000100f5, + 0x000100f6, + 0x000100f6, + 0x000100f7, + 0x000100f7, + 0x000100f8, + 0x000100f8, + 0x000100f9, + 0x000100f9, + 0x000100fa, + 0x000100fa, + 0x000100fb, + 0x000100fb, + }, + { + 0x000100fc, + 0x000100fc, + 0x000100fd, + 0x000100fd, + 0x000100fe, + 0x000100fe, + 0x000100ff, + 0x000100ff, + 0x00010100, + 0x00010100, + 0x00010101, + 0x00010101, + 0x00010102, + 0x00010102, + 0x00010103, + 0x00010103, + }, + { + 0x00010104, + 0x00010104, + 0x00010105, + 0x00010105, + 0x00010106, + 0x00010106, + 0x00010107, + 0x00010107, + 0x00010108, + 0x00010108, + 0x00010109, + 0x00010109, + 0x0001010a, + 0x0001010a, + 0x0001010b, + 0x0001010b, + }, + { + 0x0001010c, + 0x0001010c, + 0x0001010d, + 0x0001010d, + 0x0001010e, + 0x0001010e, + 0x0001010f, + 0x0001010f, + 0x00010110, + 0x00010110, + 0x00010111, + 0x00010111, + 0x00010112, + 0x00010112, + 0x00010113, + 0x00010113, + }, + { + 0x00010114, + 0x00010114, + 0x00010115, + 0x00010115, + 0x00010116, + 0x00010116, + 0x00010117, + 0x00010117, + 0x00010118, + 0x00010118, + 0x00010119, + 0x00010119, + 0x0001011a, + 0x0001011a, + 0x0001011b, + 0x0001011b, + }, + { + 0x0001011c, + 0x0001011c, + 0x0001011d, + 0x0001011d, + 0x0001011e, + 0x0001011e, + 0x0001011f, + 0x0001011f, + 0x00010120, + 0x00010120, + 0x00010121, + 0x00010121, + 0x00010122, + 0x00010122, + 0x00010123, + 0x00010123, + }, + { + 0x00010124, + 0x00010124, + 0x00010125, + 0x00010125, + 0x00010126, + 0x00010126, + 0x00010127, + 0x00010127, + 0x00010128, + 0x00010128, + 0x00010129, + 0x00010129, + 0x0001012a, + 0x0001012a, + 0x0001012b, + 0x0001012b, + }, + { + 0x0001012c, + 0x0001012c, + 0x0001012d, + 0x0001012d, + 0x0001012e, + 0x0001012e, + 0x0001012f, + 0x0001012f, + 0x00010130, + 0x00010130, + 0x00010131, + 0x00010131, + 0x00010132, + 0x00010132, + 0x00010133, + 0x00010133, + }, + { + 0x00010134, + 0x00010134, + 0x00010135, + 0x00010135, + 0x00010136, + 0x00010136, + 0x00010137, + 0x00010137, + 0x00010138, + 0x00010138, + 0x00010139, + 0x00010139, + 0x0001013a, + 0x0001013a, + 0x0001013b, + 0x0001013b, + }, + { + 0x0001013c, + 0x0001013c, + 0x0001013d, + 0x0001013d, + 0x0001013e, + 0x0001013e, + 0x0001013f, + 0x0001013f, + 0x00010140, + 0x00010140, + 0x00010141, + 0x00010141, + 0x00010142, + 0x00010142, + 0x00010143, + 0x00010143, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc46[400][2] = +#else +const uint16_t c_aauiLCLDHuffEnc46[400][2] = +#endif + { + { 0x0002, 0x0002 }, + { 0x0003, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000d, 0x000a }, + { 0x000f, 0x0018 }, + { 0x0012, 0x00a6 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0004 }, + { 0x000a, 0x0006 }, + { 0x000c, 0x0008 }, + { 0x000e, 0x0011 }, + { 0x0012, 0x00a7 }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000d, 0x000b }, + { 0x000f, 0x0019 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0007, 0x0006 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0005 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x0009 }, + { 0x000e, 0x0012 }, + { 0x000f, 0x001a }, + { 0x0012, 0x00a8 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0009, 0x0007 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000c }, + { 0x000e, 0x0013 }, + { 0x0010, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x000b, 0x0009 }, + { 0x000a, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000b, 0x000b }, + { 0x000d, 0x000d }, + { 0x000f, 0x001b }, + { 0x0010, 0x002d }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x000d, 0x000e }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000d, 0x000f }, + { 0x000f, 0x001c }, + { 0x000f, 0x001d }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x000f, 0x001e }, + { 0x000f, 0x001f }, + { 0x000f, 0x0020 }, + { 0x000f, 0x0021 }, + { 0x0010, 0x002e }, + { 0x0012, 0x00a9 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0012, 0x00aa }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0010, 0x002f }, + { 0x0013, 0x0062 }, + { 0x0011, 0x0057 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0012, 0x00ab }, + { 0x0012, 0x00ac }, + { 0x0012, 0x00ad }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec46[61][16] = { + { + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x00010001, + 0x00010001, + 0x00010015, + 0x00010015, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + }, + { + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + }, + { + 0x0008ffff, + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x00000018, + 0x0000003f, + 0x00000051, + 0x00000052, + 0x00010003, + 0x00010003, + 0x0001002b, + 0x0001002b, + 0x0001003c, + 0x0001003c, + 0x0001003e, + 0x0001003e, + }, + { + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + }, + { + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + 0x00030050, + }, + { + 0x00010054, + 0x00010054, + 0x00010064, + 0x00010064, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + }, + { + 0x0012ffff, + 0x0023ffff, + 0x000effff, + 0x000dffff, + 0x000cffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x0000001a, + 0x00000041, + 0x00000079, + 0x0000007a, + 0x00010005, + 0x00010005, + 0x0001002d, + 0x0001002d, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + }, + { + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + }, + { + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x00030078, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + 0x0003007b, + }, + { + 0x0001008e, + 0x0001008e, + 0x0001008f, + 0x0001008f, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020056, + 0x00020056, + 0x00020056, + 0x00020056, + }, + { + 0x00010007, + 0x00010007, + 0x0001002f, + 0x0001002f, + 0x00010043, + 0x00010043, + 0x00010069, + 0x00010069, + 0x0001007c, + 0x0001007c, + 0x0001007d, + 0x0001007d, + 0x0001008c, + 0x0001008c, + 0x0001008d, + 0x0001008d, + }, + { + 0x0034ffff, + 0x0035ffff, + 0x0036ffff, + 0x0037ffff, + 0x0038ffff, + 0x0039ffff, + 0x003affff, + 0x003bffff, + 0x003cffff, + 0x0010ffff, + 0x0011ffff, + 0x000fffff, + 0x00000057, + 0x0000006a, + 0x00000090, + 0x000000a1, + }, + { + 0x0002018e, + 0x0002018e, + 0x0002018e, + 0x0002018e, + 0x0002018f, + 0x0002018f, + 0x0002018f, + 0x0002018f, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + }, + { + 0x00010189, + 0x00010189, + 0x0001018a, + 0x0001018a, + 0x0001018b, + 0x0001018b, + 0x0001018c, + 0x0001018c, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, + { + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020094, + 0x0002018d, + 0x0002018d, + 0x0002018d, + 0x0002018d, + }, + { + 0x0013ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0014ffff, + 0x0015ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + }, + { + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + }, + { + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + }, + { + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x0001005a, + 0x0001005a, + }, + { + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + }, + { + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + }, + { + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + }, + { + 0x0001005b, + 0x0001005b, + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + }, + { + 0x00010063, + 0x00010063, + 0x0001006b, + 0x0001006b, + 0x0001006c, + 0x0001006c, + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00010070, + 0x00010070, + 0x00010071, + 0x00010071, + }, + { + 0x00010072, + 0x00010072, + 0x00010073, + 0x00010073, + 0x00010074, + 0x00010074, + 0x00010075, + 0x00010075, + 0x00010076, + 0x00010076, + 0x00010077, + 0x00010077, + 0x0001007e, + 0x0001007e, + 0x0001007f, + 0x0001007f, + }, + { + 0x00010080, + 0x00010080, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + 0x00010083, + 0x00010083, + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010087, + 0x00010087, + }, + { + 0x00010088, + 0x00010088, + 0x00010089, + 0x00010089, + 0x0001008a, + 0x0001008a, + 0x0001008b, + 0x0001008b, + 0x00010092, + 0x00010092, + 0x00010093, + 0x00010093, + 0x00010095, + 0x00010095, + 0x00010096, + 0x00010096, + }, + { + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + 0x00010099, + 0x00010099, + 0x0001009a, + 0x0001009a, + 0x0001009b, + 0x0001009b, + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + }, + { + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + 0x000100a2, + 0x000100a2, + 0x000100a4, + 0x000100a4, + 0x000100a5, + 0x000100a5, + 0x000100a6, + 0x000100a6, + 0x000100a7, + 0x000100a7, + 0x000100a8, + 0x000100a8, + }, + { + 0x000100a9, + 0x000100a9, + 0x000100aa, + 0x000100aa, + 0x000100ab, + 0x000100ab, + 0x000100ac, + 0x000100ac, + 0x000100ad, + 0x000100ad, + 0x000100ae, + 0x000100ae, + 0x000100af, + 0x000100af, + 0x000100b0, + 0x000100b0, + }, + { + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + 0x000100b4, + 0x000100b4, + 0x000100b5, + 0x000100b5, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + 0x000100b8, + 0x000100b8, + }, + { + 0x000100b9, + 0x000100b9, + 0x000100ba, + 0x000100ba, + 0x000100bb, + 0x000100bb, + 0x000100bc, + 0x000100bc, + 0x000100bd, + 0x000100bd, + 0x000100be, + 0x000100be, + 0x000100bf, + 0x000100bf, + 0x000100c0, + 0x000100c0, + }, + { + 0x0024ffff, + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + }, + { + 0x000100c1, + 0x000100c1, + 0x000100c2, + 0x000100c2, + 0x000100c3, + 0x000100c3, + 0x000100c4, + 0x000100c4, + 0x000100c5, + 0x000100c5, + 0x000100c6, + 0x000100c6, + 0x000100c7, + 0x000100c7, + 0x000100c8, + 0x000100c8, + }, + { + 0x000100c9, + 0x000100c9, + 0x000100ca, + 0x000100ca, + 0x000100cb, + 0x000100cb, + 0x000100cc, + 0x000100cc, + 0x000100cd, + 0x000100cd, + 0x000100ce, + 0x000100ce, + 0x000100cf, + 0x000100cf, + 0x000100d0, + 0x000100d0, + }, + { + 0x000100d1, + 0x000100d1, + 0x000100d2, + 0x000100d2, + 0x000100d3, + 0x000100d3, + 0x000100d4, + 0x000100d4, + 0x000100d5, + 0x000100d5, + 0x000100d6, + 0x000100d6, + 0x000100d7, + 0x000100d7, + 0x000100d8, + 0x000100d8, + }, + { + 0x000100d9, + 0x000100d9, + 0x000100da, + 0x000100da, + 0x000100db, + 0x000100db, + 0x000100dc, + 0x000100dc, + 0x000100dd, + 0x000100dd, + 0x000100de, + 0x000100de, + 0x000100df, + 0x000100df, + 0x000100e0, + 0x000100e0, + }, + { + 0x000100e1, + 0x000100e1, + 0x000100e2, + 0x000100e2, + 0x000100e3, + 0x000100e3, + 0x000100e4, + 0x000100e4, + 0x000100e5, + 0x000100e5, + 0x000100e6, + 0x000100e6, + 0x000100e7, + 0x000100e7, + 0x000100e8, + 0x000100e8, + }, + { + 0x000100e9, + 0x000100e9, + 0x000100ea, + 0x000100ea, + 0x000100eb, + 0x000100eb, + 0x000100ec, + 0x000100ec, + 0x000100ed, + 0x000100ed, + 0x000100ee, + 0x000100ee, + 0x000100ef, + 0x000100ef, + 0x000100f0, + 0x000100f0, + }, + { + 0x000100f1, + 0x000100f1, + 0x000100f2, + 0x000100f2, + 0x000100f3, + 0x000100f3, + 0x000100f4, + 0x000100f4, + 0x000100f5, + 0x000100f5, + 0x000100f6, + 0x000100f6, + 0x000100f7, + 0x000100f7, + 0x000100f8, + 0x000100f8, + }, + { + 0x000100f9, + 0x000100f9, + 0x000100fa, + 0x000100fa, + 0x000100fb, + 0x000100fb, + 0x000100fc, + 0x000100fc, + 0x000100fd, + 0x000100fd, + 0x000100fe, + 0x000100fe, + 0x000100ff, + 0x000100ff, + 0x00010100, + 0x00010100, + }, + { + 0x00010101, + 0x00010101, + 0x00010102, + 0x00010102, + 0x00010103, + 0x00010103, + 0x00010104, + 0x00010104, + 0x00010105, + 0x00010105, + 0x00010106, + 0x00010106, + 0x00010107, + 0x00010107, + 0x00010108, + 0x00010108, + }, + { + 0x00010109, + 0x00010109, + 0x0001010a, + 0x0001010a, + 0x0001010b, + 0x0001010b, + 0x0001010c, + 0x0001010c, + 0x0001010d, + 0x0001010d, + 0x0001010e, + 0x0001010e, + 0x0001010f, + 0x0001010f, + 0x00010110, + 0x00010110, + }, + { + 0x00010111, + 0x00010111, + 0x00010112, + 0x00010112, + 0x00010113, + 0x00010113, + 0x00010114, + 0x00010114, + 0x00010115, + 0x00010115, + 0x00010116, + 0x00010116, + 0x00010117, + 0x00010117, + 0x00010118, + 0x00010118, + }, + { + 0x00010119, + 0x00010119, + 0x0001011a, + 0x0001011a, + 0x0001011b, + 0x0001011b, + 0x0001011c, + 0x0001011c, + 0x0001011d, + 0x0001011d, + 0x0001011e, + 0x0001011e, + 0x0001011f, + 0x0001011f, + 0x00010120, + 0x00010120, + }, + { + 0x00010121, + 0x00010121, + 0x00010122, + 0x00010122, + 0x00010123, + 0x00010123, + 0x00010124, + 0x00010124, + 0x00010125, + 0x00010125, + 0x00010126, + 0x00010126, + 0x00010127, + 0x00010127, + 0x00010128, + 0x00010128, + }, + { + 0x00010129, + 0x00010129, + 0x0001012a, + 0x0001012a, + 0x0001012b, + 0x0001012b, + 0x0001012c, + 0x0001012c, + 0x0001012d, + 0x0001012d, + 0x0001012e, + 0x0001012e, + 0x0001012f, + 0x0001012f, + 0x00010130, + 0x00010130, + }, + { + 0x00010131, + 0x00010131, + 0x00010132, + 0x00010132, + 0x00010133, + 0x00010133, + 0x00010134, + 0x00010134, + 0x00010135, + 0x00010135, + 0x00010136, + 0x00010136, + 0x00010137, + 0x00010137, + 0x00010138, + 0x00010138, + }, + { + 0x00010139, + 0x00010139, + 0x0001013a, + 0x0001013a, + 0x0001013b, + 0x0001013b, + 0x0001013c, + 0x0001013c, + 0x0001013d, + 0x0001013d, + 0x0001013e, + 0x0001013e, + 0x0001013f, + 0x0001013f, + 0x00010140, + 0x00010140, + }, + { + 0x00010141, + 0x00010141, + 0x00010142, + 0x00010142, + 0x00010143, + 0x00010143, + 0x00010144, + 0x00010144, + 0x00010145, + 0x00010145, + 0x00010146, + 0x00010146, + 0x00010147, + 0x00010147, + 0x00010148, + 0x00010148, + }, + { + 0x00010149, + 0x00010149, + 0x0001014a, + 0x0001014a, + 0x0001014b, + 0x0001014b, + 0x0001014c, + 0x0001014c, + 0x0001014d, + 0x0001014d, + 0x0001014e, + 0x0001014e, + 0x0001014f, + 0x0001014f, + 0x00010150, + 0x00010150, + }, + { + 0x00010151, + 0x00010151, + 0x00010152, + 0x00010152, + 0x00010153, + 0x00010153, + 0x00010154, + 0x00010154, + 0x00010155, + 0x00010155, + 0x00010156, + 0x00010156, + 0x00010157, + 0x00010157, + 0x00010158, + 0x00010158, + }, + { + 0x00010159, + 0x00010159, + 0x0001015a, + 0x0001015a, + 0x0001015b, + 0x0001015b, + 0x0001015c, + 0x0001015c, + 0x0001015d, + 0x0001015d, + 0x0001015e, + 0x0001015e, + 0x0001015f, + 0x0001015f, + 0x00010160, + 0x00010160, + }, + { + 0x00010161, + 0x00010161, + 0x00010162, + 0x00010162, + 0x00010163, + 0x00010163, + 0x00010164, + 0x00010164, + 0x00010165, + 0x00010165, + 0x00010166, + 0x00010166, + 0x00010167, + 0x00010167, + 0x00010168, + 0x00010168, + }, + { + 0x00010169, + 0x00010169, + 0x0001016a, + 0x0001016a, + 0x0001016b, + 0x0001016b, + 0x0001016c, + 0x0001016c, + 0x0001016d, + 0x0001016d, + 0x0001016e, + 0x0001016e, + 0x0001016f, + 0x0001016f, + 0x00010170, + 0x00010170, + }, + { + 0x00010171, + 0x00010171, + 0x00010172, + 0x00010172, + 0x00010173, + 0x00010173, + 0x00010174, + 0x00010174, + 0x00010175, + 0x00010175, + 0x00010176, + 0x00010176, + 0x00010177, + 0x00010177, + 0x00010178, + 0x00010178, + }, + { + 0x00010179, + 0x00010179, + 0x0001017a, + 0x0001017a, + 0x0001017b, + 0x0001017b, + 0x0001017c, + 0x0001017c, + 0x0001017d, + 0x0001017d, + 0x0001017e, + 0x0001017e, + 0x0001017f, + 0x0001017f, + 0x00010180, + 0x00010180, + }, + { + 0x00010181, + 0x00010181, + 0x00010182, + 0x00010182, + 0x00010183, + 0x00010183, + 0x00010184, + 0x00010184, + 0x00010185, + 0x00010185, + 0x00010186, + 0x00010186, + 0x00010187, + 0x00010187, + 0x00010188, + 0x00010188, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc47[576][2] = +#else +const uint16_t c_aauiLCLDHuffEnc47[576][2] = +#endif + { + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0004 }, + { 0x0008, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000c, 0x000b }, + { 0x000d, 0x000d }, + { 0x0010, 0x0041 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000d, 0x000e }, + { 0x000f, 0x0025 }, + { 0x000f, 0x0026 }, + { 0x0012, 0x00f6 }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0005, 0x0006 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000d, 0x000f }, + { 0x000f, 0x0027 }, + { 0x0012, 0x00f7 }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0006 }, + { 0x0009, 0x0008 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000c }, + { 0x000e, 0x0017 }, + { 0x0010, 0x0042 }, + { 0x0012, 0x00f8 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0008, 0x0008 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0009 }, + { 0x000a, 0x0009 }, + { 0x000b, 0x0009 }, + { 0x000d, 0x0010 }, + { 0x000f, 0x0028 }, + { 0x000f, 0x0029 }, + { 0x0011, 0x007f }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x000a, 0x000a }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x000b }, + { 0x000b, 0x000a }, + { 0x000d, 0x0011 }, + { 0x000f, 0x002a }, + { 0x0010, 0x0043 }, + { 0x0012, 0x00f9 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000c, 0x000d }, + { 0x000d, 0x0012 }, + { 0x000e, 0x0018 }, + { 0x0010, 0x0044 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x000e, 0x0019 }, + { 0x000d, 0x0013 }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x000f, 0x002b }, + { 0x0010, 0x0045 }, + { 0x0013, 0x0066 }, + { 0x0012, 0x00fa }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0010, 0x0046 }, + { 0x000f, 0x002c }, + { 0x000f, 0x002d }, + { 0x0010, 0x0047 }, + { 0x0011, 0x0080 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0010, 0x0048 }, + { 0x0010, 0x0049 }, + { 0x0011, 0x0081 }, + { 0x0013, 0x008b }, + { 0x0012, 0x00fb }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0012, 0x00fc }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0013, 0x014c }, + { 0x0013, 0x014d }, + { 0x0013, 0x014e }, + { 0x0013, 0x014f }, + { 0x0013, 0x0150 }, + { 0x0013, 0x0151 }, + { 0x0013, 0x0152 }, + { 0x0013, 0x0153 }, + { 0x0013, 0x0154 }, + { 0x0013, 0x0155 }, + { 0x0013, 0x0156 }, + { 0x0013, 0x0157 }, + { 0x0013, 0x0158 }, + { 0x0013, 0x0159 }, + { 0x0013, 0x015a }, + { 0x0013, 0x015b }, + { 0x0013, 0x015c }, + { 0x0013, 0x015d }, + { 0x0013, 0x015e }, + { 0x0013, 0x015f }, + { 0x0013, 0x0160 }, + { 0x0013, 0x0161 }, + { 0x0013, 0x0162 }, + { 0x0013, 0x0163 }, + { 0x0013, 0x0164 }, + { 0x0013, 0x0165 }, + { 0x0013, 0x0166 }, + { 0x0013, 0x0167 }, + { 0x0013, 0x0168 }, + { 0x0013, 0x0169 }, + { 0x0013, 0x016a }, + { 0x0013, 0x016b }, + { 0x0013, 0x016c }, + { 0x0013, 0x016d }, + { 0x0013, 0x016e }, + { 0x0013, 0x016f }, + { 0x0013, 0x0170 }, + { 0x0013, 0x0171 }, + { 0x0013, 0x0172 }, + { 0x0013, 0x0173 }, + { 0x0013, 0x0174 }, + { 0x0013, 0x0175 }, + { 0x0013, 0x0176 }, + { 0x0013, 0x0177 }, + { 0x0013, 0x0178 }, + { 0x0013, 0x0179 }, + { 0x0013, 0x017a }, + { 0x0013, 0x017b }, + { 0x0013, 0x017c }, + { 0x0013, 0x017d }, + { 0x0013, 0x017e }, + { 0x0013, 0x017f }, + { 0x0013, 0x0180 }, + { 0x0013, 0x0181 }, + { 0x0013, 0x0182 }, + { 0x0013, 0x0183 }, + { 0x0013, 0x0184 }, + { 0x0013, 0x0185 }, + { 0x0013, 0x0186 }, + { 0x0013, 0x0187 }, + { 0x0013, 0x0188 }, + { 0x0013, 0x0189 }, + { 0x0013, 0x018a }, + { 0x0013, 0x018b }, + { 0x0013, 0x018c }, + { 0x0013, 0x018d }, + { 0x0013, 0x018e }, + { 0x0013, 0x018f }, + { 0x0013, 0x0190 }, + { 0x0013, 0x0191 }, + { 0x0013, 0x0192 }, + { 0x0013, 0x0193 }, + { 0x0013, 0x0194 }, + { 0x0013, 0x0195 }, + { 0x0013, 0x0196 }, + { 0x0013, 0x0197 }, + { 0x0013, 0x0198 }, + { 0x0013, 0x0199 }, + { 0x0013, 0x019a }, + { 0x0013, 0x019b }, + { 0x0013, 0x019c }, + { 0x0013, 0x019d }, + { 0x0013, 0x019e }, + { 0x0013, 0x019f }, + { 0x0013, 0x01a0 }, + { 0x0013, 0x01a1 }, + { 0x0013, 0x01a2 }, + { 0x0013, 0x01a3 }, + { 0x0013, 0x01a4 }, + { 0x0013, 0x01a5 }, + { 0x0013, 0x01a6 }, + { 0x0013, 0x01a7 }, + { 0x0013, 0x01a8 }, + { 0x0013, 0x01a9 }, + { 0x0013, 0x01aa }, + { 0x0013, 0x01ab }, + { 0x0013, 0x01ac }, + { 0x0013, 0x01ad }, + { 0x0013, 0x01ae }, + { 0x0013, 0x01af }, + { 0x0013, 0x01b0 }, + { 0x0013, 0x01b1 }, + { 0x0013, 0x01b2 }, + { 0x0013, 0x01b3 }, + { 0x0013, 0x01b4 }, + { 0x0013, 0x01b5 }, + { 0x0013, 0x01b6 }, + { 0x0013, 0x01b7 }, + { 0x0013, 0x01b8 }, + { 0x0013, 0x01b9 }, + { 0x0013, 0x01ba }, + { 0x0013, 0x01bb }, + { 0x0013, 0x01bc }, + { 0x0013, 0x01bd }, + { 0x0013, 0x01be }, + { 0x0013, 0x01bf }, + { 0x0013, 0x01c0 }, + { 0x0013, 0x01c1 }, + { 0x0013, 0x01c2 }, + { 0x0013, 0x01c3 }, + { 0x0013, 0x01c4 }, + { 0x0013, 0x01c5 }, + { 0x0013, 0x01c6 }, + { 0x0013, 0x01c7 }, + { 0x0013, 0x01c8 }, + { 0x0013, 0x01c9 }, + { 0x0013, 0x01ca }, + { 0x0013, 0x01cb }, + { 0x0013, 0x01cc }, + { 0x0013, 0x01cd }, + { 0x0013, 0x01ce }, + { 0x0013, 0x01cf }, + { 0x0013, 0x01d0 }, + { 0x0013, 0x01d1 }, + { 0x0013, 0x01d2 }, + { 0x0013, 0x01d3 }, + { 0x0013, 0x01d4 }, + { 0x0013, 0x01d5 }, + { 0x0013, 0x01d6 }, + { 0x0013, 0x01d7 }, + { 0x0013, 0x01d8 }, + { 0x0013, 0x01d9 }, + { 0x0013, 0x01da }, + { 0x0013, 0x01db }, + { 0x0013, 0x01dc }, + { 0x0013, 0x01dd }, + { 0x0013, 0x01de }, + { 0x0013, 0x01df }, + { 0x0013, 0x01e0 }, + { 0x0013, 0x01e1 }, + { 0x0013, 0x01e2 }, + { 0x0013, 0x01e3 }, + { 0x0013, 0x01e4 }, + { 0x0013, 0x01e5 }, + { 0x0013, 0x01e6 }, + { 0x0013, 0x01e7 }, + { 0x0013, 0x01e8 }, + { 0x0013, 0x01e9 }, + { 0x0013, 0x01ea }, + { 0x0013, 0x01eb }, + { 0x0012, 0x00fd }, + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec47[87][16] = { + { + 0x0004ffff, + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x0000001a, + 0x00000031, + 0x00010001, + 0x00010001, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + }, + { + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + }, + { + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + }, + { + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x00000004, + 0x00000034, + 0x00000060, + 0x00000062, + 0x0001001c, + 0x0001001c, + 0x0001004b, + 0x0001004b, + 0x00010061, + 0x00010061, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + }, + { + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x00030079, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + 0x0003007a, + }, + { + 0x00010036, + 0x00010036, + 0x00010065, + 0x00010065, + 0x0001007c, + 0x0001007c, + 0x00010090, + 0x00010090, + 0x00010091, + 0x00010091, + 0x00010092, + 0x00010092, + 0x00020005, + 0x00020005, + 0x00020005, + 0x00020005, + }, + { + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + }, + { + 0x0017ffff, + 0x0028ffff, + 0x0039ffff, + 0x0012ffff, + 0x0011ffff, + 0x0010ffff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x00000006, + 0x0000004e, + 0x00000093, + 0x0001001e, + 0x0001001e, + }, + { + 0x00020095, + 0x00020095, + 0x00020095, + 0x00020095, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + }, + { + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x00030066, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + 0x0003007d, + }, + { + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x00030094, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + }, + { + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300aa, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + }, + { + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x0001007e, + 0x0001007e, + 0x000100ac, + 0x000100ac, + 0x000100c1, + 0x000100c1, + 0x000100c2, + 0x000100c2, + 0x0002004f, + 0x0002004f, + 0x0002004f, + 0x0002004f, + }, + { + 0x0014ffff, + 0x00000008, + 0x00000050, + 0x0000007f, + 0x00000096, + 0x000000ad, + 0x000000c0, + 0x000000c3, + 0x000000d9, + 0x000000da, + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + 0x00010038, + 0x00010038, + }, + { + 0x004affff, + 0x004bffff, + 0x004cffff, + 0x004dffff, + 0x004effff, + 0x004fffff, + 0x0050ffff, + 0x0051ffff, + 0x0052ffff, + 0x0053ffff, + 0x0054ffff, + 0x0055ffff, + 0x0056ffff, + 0x0016ffff, + 0x0015ffff, + 0x0013ffff, + }, + { + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x0002023f, + 0x0002023f, + 0x0002023f, + 0x0002023f, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + 0x00030069, + }, + { + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300c4, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + 0x000300db, + }, + { + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200af, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200dd, + }, + { + 0x0001023b, + 0x0001023b, + 0x0001023c, + 0x0001023c, + 0x0001023d, + 0x0001023d, + 0x0001023e, + 0x0001023e, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x001bffff, + 0x001affff, + 0x001dffff, + 0x001cffff, + 0x0020ffff, + 0x0018ffff, + 0x0019ffff, + 0x001effff, + 0x001fffff, + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + }, + { + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010052, + 0x00010052, + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + }, + { + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x0001005a, + 0x0001005a, + 0x0001005b, + 0x0001005b, + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + }, + { + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010023, + 0x00010023, + }, + { + 0x00010009, + 0x00010009, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + }, + { + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x0001003a, + 0x0001003a, + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + }, + { + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + }, + { + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + 0x0001006c, + 0x0001006c, + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00010070, + 0x00010070, + 0x00010071, + 0x00010071, + }, + { + 0x00010072, + 0x00010072, + 0x00010073, + 0x00010073, + 0x00010074, + 0x00010074, + 0x00010075, + 0x00010075, + 0x00010076, + 0x00010076, + 0x00010077, + 0x00010077, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + }, + { + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + }, + { + 0x00010083, + 0x00010083, + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010087, + 0x00010087, + 0x00010088, + 0x00010088, + 0x00010089, + 0x00010089, + 0x0001008a, + 0x0001008a, + }, + { + 0x0001008b, + 0x0001008b, + 0x0001008c, + 0x0001008c, + 0x0001008d, + 0x0001008d, + 0x0001008e, + 0x0001008e, + 0x0001008f, + 0x0001008f, + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + 0x00010099, + 0x00010099, + }, + { + 0x0001009a, + 0x0001009a, + 0x0001009b, + 0x0001009b, + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + 0x000100a1, + 0x000100a1, + }, + { + 0x000100a2, + 0x000100a2, + 0x000100a3, + 0x000100a3, + 0x000100a4, + 0x000100a4, + 0x000100a5, + 0x000100a5, + 0x000100a6, + 0x000100a6, + 0x000100a7, + 0x000100a7, + 0x000100ae, + 0x000100ae, + 0x000100b0, + 0x000100b0, + }, + { + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + 0x000100b4, + 0x000100b4, + 0x000100b5, + 0x000100b5, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + 0x000100b8, + 0x000100b8, + }, + { + 0x000100b9, + 0x000100b9, + 0x000100ba, + 0x000100ba, + 0x000100bb, + 0x000100bb, + 0x000100bc, + 0x000100bc, + 0x000100bd, + 0x000100bd, + 0x000100be, + 0x000100be, + 0x000100bf, + 0x000100bf, + 0x000100c5, + 0x000100c5, + }, + { + 0x000100c6, + 0x000100c6, + 0x000100c7, + 0x000100c7, + 0x000100c8, + 0x000100c8, + 0x000100c9, + 0x000100c9, + 0x000100ca, + 0x000100ca, + 0x000100cb, + 0x000100cb, + 0x000100cc, + 0x000100cc, + 0x000100cd, + 0x000100cd, + }, + { + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + 0x002effff, + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + 0x0034ffff, + 0x0035ffff, + 0x0036ffff, + 0x0037ffff, + 0x0038ffff, + }, + { + 0x000100ce, + 0x000100ce, + 0x000100cf, + 0x000100cf, + 0x000100d0, + 0x000100d0, + 0x000100d1, + 0x000100d1, + 0x000100d2, + 0x000100d2, + 0x000100d3, + 0x000100d3, + 0x000100d4, + 0x000100d4, + 0x000100d5, + 0x000100d5, + }, + { + 0x000100d6, + 0x000100d6, + 0x000100d7, + 0x000100d7, + 0x000100d8, + 0x000100d8, + 0x000100dc, + 0x000100dc, + 0x000100de, + 0x000100de, + 0x000100df, + 0x000100df, + 0x000100e0, + 0x000100e0, + 0x000100e1, + 0x000100e1, + }, + { + 0x000100e2, + 0x000100e2, + 0x000100e3, + 0x000100e3, + 0x000100e4, + 0x000100e4, + 0x000100e5, + 0x000100e5, + 0x000100e6, + 0x000100e6, + 0x000100e7, + 0x000100e7, + 0x000100e8, + 0x000100e8, + 0x000100e9, + 0x000100e9, + }, + { + 0x000100ea, + 0x000100ea, + 0x000100eb, + 0x000100eb, + 0x000100ec, + 0x000100ec, + 0x000100ed, + 0x000100ed, + 0x000100ee, + 0x000100ee, + 0x000100ef, + 0x000100ef, + 0x000100f0, + 0x000100f0, + 0x000100f1, + 0x000100f1, + }, + { + 0x000100f2, + 0x000100f2, + 0x000100f4, + 0x000100f4, + 0x000100f5, + 0x000100f5, + 0x000100f6, + 0x000100f6, + 0x000100f7, + 0x000100f7, + 0x000100f8, + 0x000100f8, + 0x000100f9, + 0x000100f9, + 0x000100fa, + 0x000100fa, + }, + { + 0x000100fb, + 0x000100fb, + 0x000100fc, + 0x000100fc, + 0x000100fd, + 0x000100fd, + 0x000100fe, + 0x000100fe, + 0x000100ff, + 0x000100ff, + 0x00010100, + 0x00010100, + 0x00010101, + 0x00010101, + 0x00010102, + 0x00010102, + }, + { + 0x00010103, + 0x00010103, + 0x00010104, + 0x00010104, + 0x00010105, + 0x00010105, + 0x00010106, + 0x00010106, + 0x00010107, + 0x00010107, + 0x00010108, + 0x00010108, + 0x00010109, + 0x00010109, + 0x0001010a, + 0x0001010a, + }, + { + 0x0001010b, + 0x0001010b, + 0x0001010c, + 0x0001010c, + 0x0001010d, + 0x0001010d, + 0x0001010e, + 0x0001010e, + 0x0001010f, + 0x0001010f, + 0x00010110, + 0x00010110, + 0x00010111, + 0x00010111, + 0x00010112, + 0x00010112, + }, + { + 0x00010113, + 0x00010113, + 0x00010114, + 0x00010114, + 0x00010115, + 0x00010115, + 0x00010116, + 0x00010116, + 0x00010117, + 0x00010117, + 0x00010118, + 0x00010118, + 0x00010119, + 0x00010119, + 0x0001011a, + 0x0001011a, + }, + { + 0x0001011b, + 0x0001011b, + 0x0001011c, + 0x0001011c, + 0x0001011d, + 0x0001011d, + 0x0001011e, + 0x0001011e, + 0x0001011f, + 0x0001011f, + 0x00010120, + 0x00010120, + 0x00010121, + 0x00010121, + 0x00010122, + 0x00010122, + }, + { + 0x00010123, + 0x00010123, + 0x00010124, + 0x00010124, + 0x00010125, + 0x00010125, + 0x00010126, + 0x00010126, + 0x00010127, + 0x00010127, + 0x00010128, + 0x00010128, + 0x00010129, + 0x00010129, + 0x0001012a, + 0x0001012a, + }, + { + 0x0001012b, + 0x0001012b, + 0x0001012c, + 0x0001012c, + 0x0001012d, + 0x0001012d, + 0x0001012e, + 0x0001012e, + 0x0001012f, + 0x0001012f, + 0x00010130, + 0x00010130, + 0x00010131, + 0x00010131, + 0x00010132, + 0x00010132, + }, + { + 0x00010133, + 0x00010133, + 0x00010134, + 0x00010134, + 0x00010135, + 0x00010135, + 0x00010136, + 0x00010136, + 0x00010137, + 0x00010137, + 0x00010138, + 0x00010138, + 0x00010139, + 0x00010139, + 0x0001013a, + 0x0001013a, + }, + { + 0x0001013b, + 0x0001013b, + 0x0001013c, + 0x0001013c, + 0x0001013d, + 0x0001013d, + 0x0001013e, + 0x0001013e, + 0x0001013f, + 0x0001013f, + 0x00010140, + 0x00010140, + 0x00010141, + 0x00010141, + 0x00010142, + 0x00010142, + }, + { + 0x00010143, + 0x00010143, + 0x00010144, + 0x00010144, + 0x00010145, + 0x00010145, + 0x00010146, + 0x00010146, + 0x00010147, + 0x00010147, + 0x00010148, + 0x00010148, + 0x00010149, + 0x00010149, + 0x0001014a, + 0x0001014a, + }, + { + 0x0001014b, + 0x0001014b, + 0x0001014c, + 0x0001014c, + 0x0001014d, + 0x0001014d, + 0x0001014e, + 0x0001014e, + 0x0001014f, + 0x0001014f, + 0x00010150, + 0x00010150, + 0x00010151, + 0x00010151, + 0x00010152, + 0x00010152, + }, + { + 0x003affff, + 0x003bffff, + 0x003cffff, + 0x003dffff, + 0x003effff, + 0x003fffff, + 0x0040ffff, + 0x0041ffff, + 0x0042ffff, + 0x0043ffff, + 0x0044ffff, + 0x0045ffff, + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x0049ffff, + }, + { + 0x00010153, + 0x00010153, + 0x00010154, + 0x00010154, + 0x00010155, + 0x00010155, + 0x00010156, + 0x00010156, + 0x00010157, + 0x00010157, + 0x00010158, + 0x00010158, + 0x00010159, + 0x00010159, + 0x0001015a, + 0x0001015a, + }, + { + 0x0001015b, + 0x0001015b, + 0x0001015c, + 0x0001015c, + 0x0001015d, + 0x0001015d, + 0x0001015e, + 0x0001015e, + 0x0001015f, + 0x0001015f, + 0x00010160, + 0x00010160, + 0x00010161, + 0x00010161, + 0x00010162, + 0x00010162, + }, + { + 0x00010163, + 0x00010163, + 0x00010164, + 0x00010164, + 0x00010165, + 0x00010165, + 0x00010166, + 0x00010166, + 0x00010167, + 0x00010167, + 0x00010168, + 0x00010168, + 0x00010169, + 0x00010169, + 0x0001016a, + 0x0001016a, + }, + { + 0x0001016b, + 0x0001016b, + 0x0001016c, + 0x0001016c, + 0x0001016d, + 0x0001016d, + 0x0001016e, + 0x0001016e, + 0x0001016f, + 0x0001016f, + 0x00010170, + 0x00010170, + 0x00010171, + 0x00010171, + 0x00010172, + 0x00010172, + }, + { + 0x00010173, + 0x00010173, + 0x00010174, + 0x00010174, + 0x00010175, + 0x00010175, + 0x00010176, + 0x00010176, + 0x00010177, + 0x00010177, + 0x00010178, + 0x00010178, + 0x00010179, + 0x00010179, + 0x0001017a, + 0x0001017a, + }, + { + 0x0001017b, + 0x0001017b, + 0x0001017c, + 0x0001017c, + 0x0001017d, + 0x0001017d, + 0x0001017e, + 0x0001017e, + 0x0001017f, + 0x0001017f, + 0x00010180, + 0x00010180, + 0x00010181, + 0x00010181, + 0x00010182, + 0x00010182, + }, + { + 0x00010183, + 0x00010183, + 0x00010184, + 0x00010184, + 0x00010185, + 0x00010185, + 0x00010186, + 0x00010186, + 0x00010187, + 0x00010187, + 0x00010188, + 0x00010188, + 0x00010189, + 0x00010189, + 0x0001018a, + 0x0001018a, + }, + { + 0x0001018b, + 0x0001018b, + 0x0001018c, + 0x0001018c, + 0x0001018d, + 0x0001018d, + 0x0001018e, + 0x0001018e, + 0x0001018f, + 0x0001018f, + 0x00010190, + 0x00010190, + 0x00010191, + 0x00010191, + 0x00010192, + 0x00010192, + }, + { + 0x00010193, + 0x00010193, + 0x00010194, + 0x00010194, + 0x00010195, + 0x00010195, + 0x00010196, + 0x00010196, + 0x00010197, + 0x00010197, + 0x00010198, + 0x00010198, + 0x00010199, + 0x00010199, + 0x0001019a, + 0x0001019a, + }, + { + 0x0001019b, + 0x0001019b, + 0x0001019c, + 0x0001019c, + 0x0001019d, + 0x0001019d, + 0x0001019e, + 0x0001019e, + 0x0001019f, + 0x0001019f, + 0x000101a0, + 0x000101a0, + 0x000101a1, + 0x000101a1, + 0x000101a2, + 0x000101a2, + }, + { + 0x000101a3, + 0x000101a3, + 0x000101a4, + 0x000101a4, + 0x000101a5, + 0x000101a5, + 0x000101a6, + 0x000101a6, + 0x000101a7, + 0x000101a7, + 0x000101a8, + 0x000101a8, + 0x000101a9, + 0x000101a9, + 0x000101aa, + 0x000101aa, + }, + { + 0x000101ab, + 0x000101ab, + 0x000101ac, + 0x000101ac, + 0x000101ad, + 0x000101ad, + 0x000101ae, + 0x000101ae, + 0x000101af, + 0x000101af, + 0x000101b0, + 0x000101b0, + 0x000101b1, + 0x000101b1, + 0x000101b2, + 0x000101b2, + }, + { + 0x000101b3, + 0x000101b3, + 0x000101b4, + 0x000101b4, + 0x000101b5, + 0x000101b5, + 0x000101b6, + 0x000101b6, + 0x000101b7, + 0x000101b7, + 0x000101b8, + 0x000101b8, + 0x000101b9, + 0x000101b9, + 0x000101ba, + 0x000101ba, + }, + { + 0x000101bb, + 0x000101bb, + 0x000101bc, + 0x000101bc, + 0x000101bd, + 0x000101bd, + 0x000101be, + 0x000101be, + 0x000101bf, + 0x000101bf, + 0x000101c0, + 0x000101c0, + 0x000101c1, + 0x000101c1, + 0x000101c2, + 0x000101c2, + }, + { + 0x000101c3, + 0x000101c3, + 0x000101c4, + 0x000101c4, + 0x000101c5, + 0x000101c5, + 0x000101c6, + 0x000101c6, + 0x000101c7, + 0x000101c7, + 0x000101c8, + 0x000101c8, + 0x000101c9, + 0x000101c9, + 0x000101ca, + 0x000101ca, + }, + { + 0x000101cb, + 0x000101cb, + 0x000101cc, + 0x000101cc, + 0x000101cd, + 0x000101cd, + 0x000101ce, + 0x000101ce, + 0x000101cf, + 0x000101cf, + 0x000101d0, + 0x000101d0, + 0x000101d1, + 0x000101d1, + 0x000101d2, + 0x000101d2, + }, + { + 0x000101d3, + 0x000101d3, + 0x000101d4, + 0x000101d4, + 0x000101d5, + 0x000101d5, + 0x000101d6, + 0x000101d6, + 0x000101d7, + 0x000101d7, + 0x000101d8, + 0x000101d8, + 0x000101d9, + 0x000101d9, + 0x000101da, + 0x000101da, + }, + { + 0x000101db, + 0x000101db, + 0x000101dc, + 0x000101dc, + 0x000101dd, + 0x000101dd, + 0x000101de, + 0x000101de, + 0x000101df, + 0x000101df, + 0x000101e0, + 0x000101e0, + 0x000101e1, + 0x000101e1, + 0x000101e2, + 0x000101e2, + }, + { + 0x000101e3, + 0x000101e3, + 0x000101e4, + 0x000101e4, + 0x000101e5, + 0x000101e5, + 0x000101e6, + 0x000101e6, + 0x000101e7, + 0x000101e7, + 0x000101e8, + 0x000101e8, + 0x000101e9, + 0x000101e9, + 0x000101ea, + 0x000101ea, + }, + { + 0x000101eb, + 0x000101eb, + 0x000101ec, + 0x000101ec, + 0x000101ed, + 0x000101ed, + 0x000101ee, + 0x000101ee, + 0x000101ef, + 0x000101ef, + 0x000101f0, + 0x000101f0, + 0x000101f1, + 0x000101f1, + 0x000101f2, + 0x000101f2, + }, + { + 0x000101f3, + 0x000101f3, + 0x000101f4, + 0x000101f4, + 0x000101f5, + 0x000101f5, + 0x000101f6, + 0x000101f6, + 0x000101f7, + 0x000101f7, + 0x000101f8, + 0x000101f8, + 0x000101f9, + 0x000101f9, + 0x000101fa, + 0x000101fa, + }, + { + 0x000101fb, + 0x000101fb, + 0x000101fc, + 0x000101fc, + 0x000101fd, + 0x000101fd, + 0x000101fe, + 0x000101fe, + 0x000101ff, + 0x000101ff, + 0x00010200, + 0x00010200, + 0x00010201, + 0x00010201, + 0x00010202, + 0x00010202, + }, + { + 0x00010203, + 0x00010203, + 0x00010204, + 0x00010204, + 0x00010205, + 0x00010205, + 0x00010206, + 0x00010206, + 0x00010207, + 0x00010207, + 0x00010208, + 0x00010208, + 0x00010209, + 0x00010209, + 0x0001020a, + 0x0001020a, + }, + { + 0x0001020b, + 0x0001020b, + 0x0001020c, + 0x0001020c, + 0x0001020d, + 0x0001020d, + 0x0001020e, + 0x0001020e, + 0x0001020f, + 0x0001020f, + 0x00010210, + 0x00010210, + 0x00010211, + 0x00010211, + 0x00010212, + 0x00010212, + }, + { + 0x00010213, + 0x00010213, + 0x00010214, + 0x00010214, + 0x00010215, + 0x00010215, + 0x00010216, + 0x00010216, + 0x00010217, + 0x00010217, + 0x00010218, + 0x00010218, + 0x00010219, + 0x00010219, + 0x0001021a, + 0x0001021a, + }, + { + 0x0001021b, + 0x0001021b, + 0x0001021c, + 0x0001021c, + 0x0001021d, + 0x0001021d, + 0x0001021e, + 0x0001021e, + 0x0001021f, + 0x0001021f, + 0x00010220, + 0x00010220, + 0x00010221, + 0x00010221, + 0x00010222, + 0x00010222, + }, + { + 0x00010223, + 0x00010223, + 0x00010224, + 0x00010224, + 0x00010225, + 0x00010225, + 0x00010226, + 0x00010226, + 0x00010227, + 0x00010227, + 0x00010228, + 0x00010228, + 0x00010229, + 0x00010229, + 0x0001022a, + 0x0001022a, + }, + { + 0x0001022b, + 0x0001022b, + 0x0001022c, + 0x0001022c, + 0x0001022d, + 0x0001022d, + 0x0001022e, + 0x0001022e, + 0x0001022f, + 0x0001022f, + 0x00010230, + 0x00010230, + 0x00010231, + 0x00010231, + 0x00010232, + 0x00010232, + }, + { + 0x00010233, + 0x00010233, + 0x00010234, + 0x00010234, + 0x00010235, + 0x00010235, + 0x00010236, + 0x00010236, + 0x00010237, + 0x00010237, + 0x00010238, + 0x00010238, + 0x00010239, + 0x00010239, + 0x0001023a, + 0x0001023a, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc48[729][2] = +#else +const uint16_t c_aauiLCLDHuffEnc48[729][2] = +#endif + { + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0006 }, + { 0x0006, 0x0006 }, + { 0x0008, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x000b, 0x000b }, + { 0x000c, 0x000d }, + { 0x000f, 0x0030 }, + { 0x0010, 0x0055 }, + { 0x0012, 0x0136 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000c, 0x000e }, + { 0x000d, 0x0012 }, + { 0x000f, 0x0031 }, + { 0x0011, 0x00a0 }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0005, 0x0008 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0009 }, + { 0x0006, 0x0008 }, + { 0x0007, 0x0008 }, + { 0x0008, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000c, 0x000f }, + { 0x000d, 0x0013 }, + { 0x000f, 0x0032 }, + { 0x0011, 0x00a1 }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0007, 0x0009 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0008 }, + { 0x000b, 0x000c }, + { 0x000d, 0x0014 }, + { 0x000e, 0x001d }, + { 0x000f, 0x0033 }, + { 0x0012, 0x0137 }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0008, 0x000a }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x000b }, + { 0x0009, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000c, 0x0010 }, + { 0x000d, 0x0015 }, + { 0x000f, 0x0034 }, + { 0x0010, 0x0056 }, + { 0x0012, 0x0138 }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0009, 0x000a }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0009, 0x000b }, + { 0x000a, 0x000b }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0016 }, + { 0x000e, 0x001e }, + { 0x0010, 0x0057 }, + { 0x0011, 0x00a2 }, + { 0x0011, 0x00a3 }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x000b, 0x000d }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x000e }, + { 0x000c, 0x0012 }, + { 0x000d, 0x0017 }, + { 0x000e, 0x001f }, + { 0x0010, 0x0058 }, + { 0x0012, 0x0139 }, + { 0x0011, 0x00a4 }, + { 0x0012, 0x013a }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x000c, 0x0013 }, + { 0x000b, 0x000f }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x0020 }, + { 0x000f, 0x0035 }, + { 0x0012, 0x013b }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x000e, 0x0021 }, + { 0x000d, 0x0019 }, + { 0x000e, 0x0022 }, + { 0x000e, 0x0023 }, + { 0x000f, 0x0036 }, + { 0x0010, 0x0059 }, + { 0x0011, 0x00a5 }, + { 0x0013, 0x0083 }, + { 0x0011, 0x00a6 }, + { 0x0012, 0x013c }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0010, 0x005a }, + { 0x000f, 0x0037 }, + { 0x000f, 0x0038 }, + { 0x000f, 0x0039 }, + { 0x0010, 0x005b }, + { 0x0010, 0x005c }, + { 0x0013, 0x0095 }, + { 0x0011, 0x00a7 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0013, 0x009c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0010, 0x005d }, + { 0x0010, 0x005e }, + { 0x0013, 0x00a9 }, + { 0x0010, 0x005f }, + { 0x0013, 0x00aa }, + { 0x0012, 0x013d }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0011, 0x00a8 }, + { 0x0013, 0x00c1 }, + { 0x0011, 0x00a9 }, + { 0x0013, 0x00c2 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0012, 0x013e }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0013, 0x014c }, + { 0x0013, 0x014d }, + { 0x0013, 0x014e }, + { 0x0013, 0x014f }, + { 0x0013, 0x0150 }, + { 0x0013, 0x0151 }, + { 0x0013, 0x0152 }, + { 0x0013, 0x0153 }, + { 0x0013, 0x0154 }, + { 0x0013, 0x0155 }, + { 0x0013, 0x0156 }, + { 0x0013, 0x0157 }, + { 0x0013, 0x0158 }, + { 0x0013, 0x0159 }, + { 0x0013, 0x015a }, + { 0x0013, 0x015b }, + { 0x0013, 0x015c }, + { 0x0013, 0x015d }, + { 0x0013, 0x015e }, + { 0x0013, 0x015f }, + { 0x0013, 0x0160 }, + { 0x0013, 0x0161 }, + { 0x0013, 0x0162 }, + { 0x0013, 0x0163 }, + { 0x0013, 0x0164 }, + { 0x0013, 0x0165 }, + { 0x0013, 0x0166 }, + { 0x0013, 0x0167 }, + { 0x0013, 0x0168 }, + { 0x0013, 0x0169 }, + { 0x0013, 0x016a }, + { 0x0013, 0x016b }, + { 0x0013, 0x016c }, + { 0x0013, 0x016d }, + { 0x0013, 0x016e }, + { 0x0013, 0x016f }, + { 0x0013, 0x0170 }, + { 0x0013, 0x0171 }, + { 0x0013, 0x0172 }, + { 0x0013, 0x0173 }, + { 0x0013, 0x0174 }, + { 0x0013, 0x0175 }, + { 0x0013, 0x0176 }, + { 0x0013, 0x0177 }, + { 0x0013, 0x0178 }, + { 0x0013, 0x0179 }, + { 0x0013, 0x017a }, + { 0x0013, 0x017b }, + { 0x0013, 0x017c }, + { 0x0013, 0x017d }, + { 0x0013, 0x017e }, + { 0x0013, 0x017f }, + { 0x0013, 0x0180 }, + { 0x0013, 0x0181 }, + { 0x0013, 0x0182 }, + { 0x0013, 0x0183 }, + { 0x0013, 0x0184 }, + { 0x0013, 0x0185 }, + { 0x0013, 0x0186 }, + { 0x0013, 0x0187 }, + { 0x0013, 0x0188 }, + { 0x0013, 0x0189 }, + { 0x0013, 0x018a }, + { 0x0013, 0x018b }, + { 0x0013, 0x018c }, + { 0x0013, 0x018d }, + { 0x0013, 0x018e }, + { 0x0013, 0x018f }, + { 0x0013, 0x0190 }, + { 0x0013, 0x0191 }, + { 0x0013, 0x0192 }, + { 0x0013, 0x0193 }, + { 0x0013, 0x0194 }, + { 0x0013, 0x0195 }, + { 0x0013, 0x0196 }, + { 0x0013, 0x0197 }, + { 0x0013, 0x0198 }, + { 0x0013, 0x0199 }, + { 0x0013, 0x019a }, + { 0x0013, 0x019b }, + { 0x0013, 0x019c }, + { 0x0013, 0x019d }, + { 0x0013, 0x019e }, + { 0x0013, 0x019f }, + { 0x0013, 0x01a0 }, + { 0x0013, 0x01a1 }, + { 0x0013, 0x01a2 }, + { 0x0013, 0x01a3 }, + { 0x0013, 0x01a4 }, + { 0x0013, 0x01a5 }, + { 0x0013, 0x01a6 }, + { 0x0013, 0x01a7 }, + { 0x0013, 0x01a8 }, + { 0x0013, 0x01a9 }, + { 0x0013, 0x01aa }, + { 0x0013, 0x01ab }, + { 0x0013, 0x01ac }, + { 0x0013, 0x01ad }, + { 0x0013, 0x01ae }, + { 0x0013, 0x01af }, + { 0x0013, 0x01b0 }, + { 0x0013, 0x01b1 }, + { 0x0013, 0x01b2 }, + { 0x0013, 0x01b3 }, + { 0x0013, 0x01b4 }, + { 0x0013, 0x01b5 }, + { 0x0013, 0x01b6 }, + { 0x0013, 0x01b7 }, + { 0x0013, 0x01b8 }, + { 0x0013, 0x01b9 }, + { 0x0013, 0x01ba }, + { 0x0013, 0x01bb }, + { 0x0013, 0x01bc }, + { 0x0013, 0x01bd }, + { 0x0013, 0x01be }, + { 0x0013, 0x01bf }, + { 0x0013, 0x01c0 }, + { 0x0013, 0x01c1 }, + { 0x0013, 0x01c2 }, + { 0x0013, 0x01c3 }, + { 0x0013, 0x01c4 }, + { 0x0013, 0x01c5 }, + { 0x0013, 0x01c6 }, + { 0x0013, 0x01c7 }, + { 0x0013, 0x01c8 }, + { 0x0013, 0x01c9 }, + { 0x0013, 0x01ca }, + { 0x0013, 0x01cb }, + { 0x0013, 0x01cc }, + { 0x0013, 0x01cd }, + { 0x0013, 0x01ce }, + { 0x0013, 0x01cf }, + { 0x0013, 0x01d0 }, + { 0x0013, 0x01d1 }, + { 0x0013, 0x01d2 }, + { 0x0013, 0x01d3 }, + { 0x0013, 0x01d4 }, + { 0x0013, 0x01d5 }, + { 0x0013, 0x01d6 }, + { 0x0013, 0x01d7 }, + { 0x0013, 0x01d8 }, + { 0x0013, 0x01d9 }, + { 0x0013, 0x01da }, + { 0x0013, 0x01db }, + { 0x0013, 0x01dc }, + { 0x0013, 0x01dd }, + { 0x0013, 0x01de }, + { 0x0013, 0x01df }, + { 0x0013, 0x01e0 }, + { 0x0013, 0x01e1 }, + { 0x0013, 0x01e2 }, + { 0x0013, 0x01e3 }, + { 0x0013, 0x01e4 }, + { 0x0013, 0x01e5 }, + { 0x0013, 0x01e6 }, + { 0x0013, 0x01e7 }, + { 0x0013, 0x01e8 }, + { 0x0013, 0x01e9 }, + { 0x0013, 0x01ea }, + { 0x0013, 0x01eb }, + { 0x0013, 0x01ec }, + { 0x0013, 0x01ed }, + { 0x0013, 0x01ee }, + { 0x0013, 0x01ef }, + { 0x0013, 0x01f0 }, + { 0x0013, 0x01f1 }, + { 0x0013, 0x01f2 }, + { 0x0013, 0x01f3 }, + { 0x0013, 0x01f4 }, + { 0x0013, 0x01f5 }, + { 0x0013, 0x01f6 }, + { 0x0013, 0x01f7 }, + { 0x0013, 0x01f8 }, + { 0x0013, 0x01f9 }, + { 0x0013, 0x01fa }, + { 0x0013, 0x01fb }, + { 0x0013, 0x01fc }, + { 0x0013, 0x01fd }, + { 0x0013, 0x01fe }, + { 0x0013, 0x01ff }, + { 0x0013, 0x0200 }, + { 0x0013, 0x0201 }, + { 0x0013, 0x0202 }, + { 0x0013, 0x0203 }, + { 0x0013, 0x0204 }, + { 0x0013, 0x0205 }, + { 0x0013, 0x0206 }, + { 0x0013, 0x0207 }, + { 0x0013, 0x0208 }, + { 0x0013, 0x0209 }, + { 0x0013, 0x020a }, + { 0x0013, 0x020b }, + { 0x0013, 0x020c }, + { 0x0013, 0x020d }, + { 0x0013, 0x020e }, + { 0x0013, 0x020f }, + { 0x0013, 0x0210 }, + { 0x0013, 0x0211 }, + { 0x0013, 0x0212 }, + { 0x0013, 0x0213 }, + { 0x0013, 0x0214 }, + { 0x0013, 0x0215 }, + { 0x0013, 0x0216 }, + { 0x0013, 0x0217 }, + { 0x0013, 0x0218 }, + { 0x0013, 0x0219 }, + { 0x0013, 0x021a }, + { 0x0013, 0x021b }, + { 0x0013, 0x021c }, + { 0x0013, 0x021d }, + { 0x0013, 0x021e }, + { 0x0013, 0x021f }, + { 0x0013, 0x0220 }, + { 0x0013, 0x0221 }, + { 0x0013, 0x0222 }, + { 0x0013, 0x0223 }, + { 0x0013, 0x0224 }, + { 0x0013, 0x0225 }, + { 0x0013, 0x0226 }, + { 0x0013, 0x0227 }, + { 0x0013, 0x0228 }, + { 0x0013, 0x0229 }, + { 0x0013, 0x022a }, + { 0x0013, 0x022b }, + { 0x0013, 0x022c }, + { 0x0013, 0x022d }, + { 0x0013, 0x022e }, + { 0x0013, 0x022f }, + { 0x0013, 0x0230 }, + { 0x0013, 0x0231 }, + { 0x0013, 0x0232 }, + { 0x0013, 0x0233 }, + { 0x0013, 0x0234 }, + { 0x0013, 0x0235 }, + { 0x0013, 0x0236 }, + { 0x0013, 0x0237 }, + { 0x0013, 0x0238 }, + { 0x0013, 0x0239 }, + { 0x0013, 0x023a }, + { 0x0013, 0x023b }, + { 0x0013, 0x023c }, + { 0x0013, 0x023d }, + { 0x0013, 0x023e }, + { 0x0013, 0x023f }, + { 0x0013, 0x0240 }, + { 0x0013, 0x0241 }, + { 0x0013, 0x0242 }, + { 0x0013, 0x0243 }, + { 0x0013, 0x0244 }, + { 0x0013, 0x0245 }, + { 0x0013, 0x0246 }, + { 0x0013, 0x0247 }, + { 0x0013, 0x0248 }, + { 0x0013, 0x0249 }, + { 0x0013, 0x024a }, + { 0x0013, 0x024b }, + { 0x0013, 0x024c }, + { 0x0013, 0x024d }, + { 0x0013, 0x024e }, + { 0x0013, 0x024f }, + { 0x0013, 0x0250 }, + { 0x0013, 0x0251 }, + { 0x0013, 0x0252 }, + { 0x0013, 0x0253 }, + { 0x0013, 0x0254 }, + { 0x0013, 0x0255 }, + { 0x0013, 0x0256 }, + { 0x0013, 0x0257 }, + { 0x0013, 0x0258 }, + { 0x0013, 0x0259 }, + { 0x0013, 0x025a }, + { 0x0013, 0x025b }, + { 0x0013, 0x025c }, + { 0x0013, 0x025d }, + { 0x0013, 0x025e }, + { 0x0013, 0x025f }, + { 0x0013, 0x0260 }, + { 0x0013, 0x0261 }, + { 0x0013, 0x0262 }, + { 0x0013, 0x0263 }, + { 0x0013, 0x0264 }, + { 0x0013, 0x0265 }, + { 0x0013, 0x0266 }, + { 0x0013, 0x0267 }, + { 0x0013, 0x0268 }, + { 0x0013, 0x0269 }, + { 0x0013, 0x026a }, + { 0x0013, 0x026b }, + { 0x0012, 0x013f }, + + }; + +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec48[110][16] = { + { + 0x0005ffff, + 0x0003ffff, + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000037, + 0x00010001, + 0x00010001, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + }, + { + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + }, + { + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + }, + { + 0x0001003a, + 0x0001003a, + 0x00010054, + 0x00010054, + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x00020003, + 0x00020003, + 0x00020003, + 0x00020003, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + }, + { + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + }, + { + 0x000bffff, + 0x000affff, + 0x0009ffff, + 0x0008ffff, + 0x0006ffff, + 0x0007ffff, + 0x00000004, + 0x00000020, + 0x0000003b, + 0x00000055, + 0x0000006c, + 0x0000006f, + 0x00000088, + 0x00000089, + 0x0001001f, + 0x0001001f, + }, + { + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + }, + { + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x00030087, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + 0x0003008a, + }, + { + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a3, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x000200a4, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020071, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008b, + }, + { + 0x00000072, + 0x0000008c, + 0x000000a6, + 0x000000bd, + 0x000000bf, + 0x000000c0, + 0x00010006, + 0x00010006, + 0x00010057, + 0x00010057, + 0x000100a2, + 0x000100a2, + 0x000100a5, + 0x000100a5, + 0x000100be, + 0x000100be, + }, + { + 0x001dffff, + 0x002effff, + 0x003fffff, + 0x0050ffff, + 0x0019ffff, + 0x0013ffff, + 0x0012ffff, + 0x0010ffff, + 0x0011ffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x00000007, + 0x00000022, + 0x0000003d, + }, + { + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, + { + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + }, + { + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x0003008d, + 0x000300a7, + 0x000300a7, + 0x000300a7, + 0x000300a7, + 0x000300a7, + 0x000300a7, + 0x000300a7, + 0x000300a7, + }, + { + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300c1, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + 0x000300d9, + }, + { + 0x000100f5, + 0x000100f5, + 0x000100f6, + 0x000100f6, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x000200a8, + 0x000200a8, + 0x000200a8, + 0x000200a8, + }, + { + 0x000200c2, + 0x000200c2, + 0x000200c2, + 0x000200c2, + 0x000200d8, + 0x000200d8, + 0x000200d8, + 0x000200d8, + 0x000200da, + 0x000200da, + 0x000200da, + 0x000200da, + 0x000200db, + 0x000200db, + 0x000200db, + 0x000200db, + }, + { + 0x00010008, + 0x00010008, + 0x00010024, + 0x00010024, + 0x0001003f, + 0x0001003f, + 0x0001005a, + 0x0001005a, + 0x00010074, + 0x00010074, + 0x000100c3, + 0x000100c3, + 0x000100dc, + 0x000100dc, + 0x000100f4, + 0x000100f4, + }, + { + 0x0015ffff, + 0x0014ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x00000009, + 0x00000075, + 0x0000008f, + 0x000000a9, + 0x000000dd, + 0x000000f3, + 0x000000f7, + 0x000000f8, + 0x0000010e, + 0x0000010f, + 0x00000111, + }, + { + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030090, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + 0x00030091, + }, + { + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + }, + { + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300ab, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + 0x000300de, + }, + { + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300e0, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + }, + { + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012a, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + 0x0003012c, + }, + { + 0x0061ffff, + 0x0062ffff, + 0x0063ffff, + 0x0064ffff, + 0x0065ffff, + 0x0066ffff, + 0x0067ffff, + 0x0068ffff, + 0x0069ffff, + 0x006affff, + 0x006bffff, + 0x006cffff, + 0x006dffff, + 0x001bffff, + 0x001affff, + 0x001cffff, + }, + { + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200ac, + 0x000200c4, + 0x000200c4, + 0x000200c4, + 0x000200c4, + }, + { + 0x000102d4, + 0x000102d4, + 0x000102d5, + 0x000102d5, + 0x000102d6, + 0x000102d6, + 0x000102d7, + 0x000102d7, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + }, + { + 0x000200e1, + 0x000200e1, + 0x000200e1, + 0x000200e1, + 0x00020113, + 0x00020113, + 0x00020113, + 0x00020113, + 0x00020146, + 0x00020146, + 0x00020146, + 0x00020146, + 0x000202d8, + 0x000202d8, + 0x000202d8, + 0x000202d8, + }, + { + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0027ffff, + 0x0025ffff, + 0x0026ffff, + 0x0028ffff, + 0x0029ffff, + 0x002affff, + 0x002bffff, + 0x002cffff, + 0x002dffff, + }, + { + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + }, + { + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + }, + { + 0x00010026, + 0x00010026, + 0x00010027, + 0x00010027, + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + }, + { + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + }, + { + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + }, + { + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + }, + { + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + }, + { + 0x00010077, + 0x00010077, + 0x00010078, + 0x00010078, + 0x00010079, + 0x00010079, + 0x0001007a, + 0x0001007a, + 0x0001007b, + 0x0001007b, + 0x0001007c, + 0x0001007c, + 0x0001007d, + 0x0001007d, + 0x0001007e, + 0x0001007e, + }, + { + 0x0001007f, + 0x0001007f, + 0x00010080, + 0x00010080, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + 0x00010083, + 0x00010083, + 0x00010084, + 0x00010084, + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + }, + { + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x00010069, + 0x00010069, + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + }, + { + 0x00010092, + 0x00010092, + 0x00010093, + 0x00010093, + 0x00010094, + 0x00010094, + 0x00010095, + 0x00010095, + 0x00010096, + 0x00010096, + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + 0x00010099, + 0x00010099, + }, + { + 0x0001009a, + 0x0001009a, + 0x0001009b, + 0x0001009b, + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + 0x000100a1, + 0x000100a1, + }, + { + 0x000100ad, + 0x000100ad, + 0x000100ae, + 0x000100ae, + 0x000100af, + 0x000100af, + 0x000100b0, + 0x000100b0, + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + 0x000100b4, + 0x000100b4, + }, + { + 0x000100b5, + 0x000100b5, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + 0x000100b8, + 0x000100b8, + 0x000100b9, + 0x000100b9, + 0x000100ba, + 0x000100ba, + 0x000100bb, + 0x000100bb, + 0x000100bc, + 0x000100bc, + }, + { + 0x000100c5, + 0x000100c5, + 0x000100c6, + 0x000100c6, + 0x000100c7, + 0x000100c7, + 0x000100c8, + 0x000100c8, + 0x000100c9, + 0x000100c9, + 0x000100ca, + 0x000100ca, + 0x000100cb, + 0x000100cb, + 0x000100cc, + 0x000100cc, + }, + { + 0x000100cd, + 0x000100cd, + 0x000100ce, + 0x000100ce, + 0x000100cf, + 0x000100cf, + 0x000100d0, + 0x000100d0, + 0x000100d1, + 0x000100d1, + 0x000100d2, + 0x000100d2, + 0x000100d3, + 0x000100d3, + 0x000100d4, + 0x000100d4, + }, + { + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + 0x0033ffff, + 0x0034ffff, + 0x0035ffff, + 0x0036ffff, + 0x0037ffff, + 0x0038ffff, + 0x0039ffff, + 0x003affff, + 0x003bffff, + 0x003cffff, + 0x003dffff, + 0x003effff, + }, + { + 0x000100d5, + 0x000100d5, + 0x000100d6, + 0x000100d6, + 0x000100d7, + 0x000100d7, + 0x000100df, + 0x000100df, + 0x000100e2, + 0x000100e2, + 0x000100e3, + 0x000100e3, + 0x000100e4, + 0x000100e4, + 0x000100e5, + 0x000100e5, + }, + { + 0x000100e6, + 0x000100e6, + 0x000100e7, + 0x000100e7, + 0x000100e8, + 0x000100e8, + 0x000100e9, + 0x000100e9, + 0x000100ea, + 0x000100ea, + 0x000100eb, + 0x000100eb, + 0x000100ec, + 0x000100ec, + 0x000100ed, + 0x000100ed, + }, + { + 0x000100ee, + 0x000100ee, + 0x000100ef, + 0x000100ef, + 0x000100f0, + 0x000100f0, + 0x000100f1, + 0x000100f1, + 0x000100f2, + 0x000100f2, + 0x000100f9, + 0x000100f9, + 0x000100fb, + 0x000100fb, + 0x000100fc, + 0x000100fc, + }, + { + 0x000100fd, + 0x000100fd, + 0x000100fe, + 0x000100fe, + 0x000100ff, + 0x000100ff, + 0x00010100, + 0x00010100, + 0x00010101, + 0x00010101, + 0x00010102, + 0x00010102, + 0x00010103, + 0x00010103, + 0x00010104, + 0x00010104, + }, + { + 0x00010105, + 0x00010105, + 0x00010106, + 0x00010106, + 0x00010107, + 0x00010107, + 0x00010108, + 0x00010108, + 0x00010109, + 0x00010109, + 0x0001010a, + 0x0001010a, + 0x0001010b, + 0x0001010b, + 0x0001010c, + 0x0001010c, + }, + { + 0x0001010d, + 0x0001010d, + 0x00010110, + 0x00010110, + 0x00010112, + 0x00010112, + 0x00010114, + 0x00010114, + 0x00010115, + 0x00010115, + 0x00010116, + 0x00010116, + 0x00010117, + 0x00010117, + 0x00010118, + 0x00010118, + }, + { + 0x00010119, + 0x00010119, + 0x0001011a, + 0x0001011a, + 0x0001011b, + 0x0001011b, + 0x0001011c, + 0x0001011c, + 0x0001011d, + 0x0001011d, + 0x0001011e, + 0x0001011e, + 0x0001011f, + 0x0001011f, + 0x00010120, + 0x00010120, + }, + { + 0x00010121, + 0x00010121, + 0x00010122, + 0x00010122, + 0x00010123, + 0x00010123, + 0x00010124, + 0x00010124, + 0x00010125, + 0x00010125, + 0x00010126, + 0x00010126, + 0x00010127, + 0x00010127, + 0x00010128, + 0x00010128, + }, + { + 0x00010129, + 0x00010129, + 0x0001012b, + 0x0001012b, + 0x0001012d, + 0x0001012d, + 0x0001012e, + 0x0001012e, + 0x0001012f, + 0x0001012f, + 0x00010130, + 0x00010130, + 0x00010131, + 0x00010131, + 0x00010132, + 0x00010132, + }, + { + 0x00010133, + 0x00010133, + 0x00010134, + 0x00010134, + 0x00010135, + 0x00010135, + 0x00010136, + 0x00010136, + 0x00010137, + 0x00010137, + 0x00010138, + 0x00010138, + 0x00010139, + 0x00010139, + 0x0001013a, + 0x0001013a, + }, + { + 0x0001013b, + 0x0001013b, + 0x0001013c, + 0x0001013c, + 0x0001013d, + 0x0001013d, + 0x0001013e, + 0x0001013e, + 0x0001013f, + 0x0001013f, + 0x00010140, + 0x00010140, + 0x00010141, + 0x00010141, + 0x00010142, + 0x00010142, + }, + { + 0x00010143, + 0x00010143, + 0x00010144, + 0x00010144, + 0x00010145, + 0x00010145, + 0x00010147, + 0x00010147, + 0x00010148, + 0x00010148, + 0x00010149, + 0x00010149, + 0x0001014a, + 0x0001014a, + 0x0001014b, + 0x0001014b, + }, + { + 0x0001014c, + 0x0001014c, + 0x0001014d, + 0x0001014d, + 0x0001014e, + 0x0001014e, + 0x0001014f, + 0x0001014f, + 0x00010150, + 0x00010150, + 0x00010151, + 0x00010151, + 0x00010152, + 0x00010152, + 0x00010153, + 0x00010153, + }, + { + 0x00010154, + 0x00010154, + 0x00010155, + 0x00010155, + 0x00010156, + 0x00010156, + 0x00010157, + 0x00010157, + 0x00010158, + 0x00010158, + 0x00010159, + 0x00010159, + 0x0001015a, + 0x0001015a, + 0x0001015b, + 0x0001015b, + }, + { + 0x0001015c, + 0x0001015c, + 0x0001015d, + 0x0001015d, + 0x0001015e, + 0x0001015e, + 0x0001015f, + 0x0001015f, + 0x00010160, + 0x00010160, + 0x00010161, + 0x00010161, + 0x00010162, + 0x00010162, + 0x00010163, + 0x00010163, + }, + { + 0x00010164, + 0x00010164, + 0x00010165, + 0x00010165, + 0x00010166, + 0x00010166, + 0x00010167, + 0x00010167, + 0x00010168, + 0x00010168, + 0x00010169, + 0x00010169, + 0x0001016a, + 0x0001016a, + 0x0001016b, + 0x0001016b, + }, + { + 0x0040ffff, + 0x0041ffff, + 0x0042ffff, + 0x0043ffff, + 0x0044ffff, + 0x0045ffff, + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x0049ffff, + 0x004affff, + 0x004bffff, + 0x004cffff, + 0x004dffff, + 0x004effff, + 0x004fffff, + }, + { + 0x0001016c, + 0x0001016c, + 0x0001016d, + 0x0001016d, + 0x0001016e, + 0x0001016e, + 0x0001016f, + 0x0001016f, + 0x00010170, + 0x00010170, + 0x00010171, + 0x00010171, + 0x00010172, + 0x00010172, + 0x00010173, + 0x00010173, + }, + { + 0x00010174, + 0x00010174, + 0x00010175, + 0x00010175, + 0x00010176, + 0x00010176, + 0x00010177, + 0x00010177, + 0x00010178, + 0x00010178, + 0x00010179, + 0x00010179, + 0x0001017a, + 0x0001017a, + 0x0001017b, + 0x0001017b, + }, + { + 0x0001017c, + 0x0001017c, + 0x0001017d, + 0x0001017d, + 0x0001017e, + 0x0001017e, + 0x0001017f, + 0x0001017f, + 0x00010180, + 0x00010180, + 0x00010181, + 0x00010181, + 0x00010182, + 0x00010182, + 0x00010183, + 0x00010183, + }, + { + 0x00010184, + 0x00010184, + 0x00010185, + 0x00010185, + 0x00010186, + 0x00010186, + 0x00010187, + 0x00010187, + 0x00010188, + 0x00010188, + 0x00010189, + 0x00010189, + 0x0001018a, + 0x0001018a, + 0x0001018b, + 0x0001018b, + }, + { + 0x0001018c, + 0x0001018c, + 0x0001018d, + 0x0001018d, + 0x0001018e, + 0x0001018e, + 0x0001018f, + 0x0001018f, + 0x00010190, + 0x00010190, + 0x00010191, + 0x00010191, + 0x00010192, + 0x00010192, + 0x00010193, + 0x00010193, + }, + { + 0x00010194, + 0x00010194, + 0x00010195, + 0x00010195, + 0x00010196, + 0x00010196, + 0x00010197, + 0x00010197, + 0x00010198, + 0x00010198, + 0x00010199, + 0x00010199, + 0x0001019a, + 0x0001019a, + 0x0001019b, + 0x0001019b, + }, + { + 0x0001019c, + 0x0001019c, + 0x0001019d, + 0x0001019d, + 0x0001019e, + 0x0001019e, + 0x0001019f, + 0x0001019f, + 0x000101a0, + 0x000101a0, + 0x000101a1, + 0x000101a1, + 0x000101a2, + 0x000101a2, + 0x000101a3, + 0x000101a3, + }, + { + 0x000101a4, + 0x000101a4, + 0x000101a5, + 0x000101a5, + 0x000101a6, + 0x000101a6, + 0x000101a7, + 0x000101a7, + 0x000101a8, + 0x000101a8, + 0x000101a9, + 0x000101a9, + 0x000101aa, + 0x000101aa, + 0x000101ab, + 0x000101ab, + }, + { + 0x000101ac, + 0x000101ac, + 0x000101ad, + 0x000101ad, + 0x000101ae, + 0x000101ae, + 0x000101af, + 0x000101af, + 0x000101b0, + 0x000101b0, + 0x000101b1, + 0x000101b1, + 0x000101b2, + 0x000101b2, + 0x000101b3, + 0x000101b3, + }, + { + 0x000101b4, + 0x000101b4, + 0x000101b5, + 0x000101b5, + 0x000101b6, + 0x000101b6, + 0x000101b7, + 0x000101b7, + 0x000101b8, + 0x000101b8, + 0x000101b9, + 0x000101b9, + 0x000101ba, + 0x000101ba, + 0x000101bb, + 0x000101bb, + }, + { + 0x000101bc, + 0x000101bc, + 0x000101bd, + 0x000101bd, + 0x000101be, + 0x000101be, + 0x000101bf, + 0x000101bf, + 0x000101c0, + 0x000101c0, + 0x000101c1, + 0x000101c1, + 0x000101c2, + 0x000101c2, + 0x000101c3, + 0x000101c3, + }, + { + 0x000101c4, + 0x000101c4, + 0x000101c5, + 0x000101c5, + 0x000101c6, + 0x000101c6, + 0x000101c7, + 0x000101c7, + 0x000101c8, + 0x000101c8, + 0x000101c9, + 0x000101c9, + 0x000101ca, + 0x000101ca, + 0x000101cb, + 0x000101cb, + }, + { + 0x000101cc, + 0x000101cc, + 0x000101cd, + 0x000101cd, + 0x000101ce, + 0x000101ce, + 0x000101cf, + 0x000101cf, + 0x000101d0, + 0x000101d0, + 0x000101d1, + 0x000101d1, + 0x000101d2, + 0x000101d2, + 0x000101d3, + 0x000101d3, + }, + { + 0x000101d4, + 0x000101d4, + 0x000101d5, + 0x000101d5, + 0x000101d6, + 0x000101d6, + 0x000101d7, + 0x000101d7, + 0x000101d8, + 0x000101d8, + 0x000101d9, + 0x000101d9, + 0x000101da, + 0x000101da, + 0x000101db, + 0x000101db, + }, + { + 0x000101dc, + 0x000101dc, + 0x000101dd, + 0x000101dd, + 0x000101de, + 0x000101de, + 0x000101df, + 0x000101df, + 0x000101e0, + 0x000101e0, + 0x000101e1, + 0x000101e1, + 0x000101e2, + 0x000101e2, + 0x000101e3, + 0x000101e3, + }, + { + 0x000101e4, + 0x000101e4, + 0x000101e5, + 0x000101e5, + 0x000101e6, + 0x000101e6, + 0x000101e7, + 0x000101e7, + 0x000101e8, + 0x000101e8, + 0x000101e9, + 0x000101e9, + 0x000101ea, + 0x000101ea, + 0x000101eb, + 0x000101eb, + }, + { + 0x0051ffff, + 0x0052ffff, + 0x0053ffff, + 0x0054ffff, + 0x0055ffff, + 0x0056ffff, + 0x0057ffff, + 0x0058ffff, + 0x0059ffff, + 0x005affff, + 0x005bffff, + 0x005cffff, + 0x005dffff, + 0x005effff, + 0x005fffff, + 0x0060ffff, + }, + { + 0x000101ec, + 0x000101ec, + 0x000101ed, + 0x000101ed, + 0x000101ee, + 0x000101ee, + 0x000101ef, + 0x000101ef, + 0x000101f0, + 0x000101f0, + 0x000101f1, + 0x000101f1, + 0x000101f2, + 0x000101f2, + 0x000101f3, + 0x000101f3, + }, + { + 0x000101f4, + 0x000101f4, + 0x000101f5, + 0x000101f5, + 0x000101f6, + 0x000101f6, + 0x000101f7, + 0x000101f7, + 0x000101f8, + 0x000101f8, + 0x000101f9, + 0x000101f9, + 0x000101fa, + 0x000101fa, + 0x000101fb, + 0x000101fb, + }, + { + 0x000101fc, + 0x000101fc, + 0x000101fd, + 0x000101fd, + 0x000101fe, + 0x000101fe, + 0x000101ff, + 0x000101ff, + 0x00010200, + 0x00010200, + 0x00010201, + 0x00010201, + 0x00010202, + 0x00010202, + 0x00010203, + 0x00010203, + }, + { + 0x00010204, + 0x00010204, + 0x00010205, + 0x00010205, + 0x00010206, + 0x00010206, + 0x00010207, + 0x00010207, + 0x00010208, + 0x00010208, + 0x00010209, + 0x00010209, + 0x0001020a, + 0x0001020a, + 0x0001020b, + 0x0001020b, + }, + { + 0x0001020c, + 0x0001020c, + 0x0001020d, + 0x0001020d, + 0x0001020e, + 0x0001020e, + 0x0001020f, + 0x0001020f, + 0x00010210, + 0x00010210, + 0x00010211, + 0x00010211, + 0x00010212, + 0x00010212, + 0x00010213, + 0x00010213, + }, + { + 0x00010214, + 0x00010214, + 0x00010215, + 0x00010215, + 0x00010216, + 0x00010216, + 0x00010217, + 0x00010217, + 0x00010218, + 0x00010218, + 0x00010219, + 0x00010219, + 0x0001021a, + 0x0001021a, + 0x0001021b, + 0x0001021b, + }, + { + 0x0001021c, + 0x0001021c, + 0x0001021d, + 0x0001021d, + 0x0001021e, + 0x0001021e, + 0x0001021f, + 0x0001021f, + 0x00010220, + 0x00010220, + 0x00010221, + 0x00010221, + 0x00010222, + 0x00010222, + 0x00010223, + 0x00010223, + }, + { + 0x00010224, + 0x00010224, + 0x00010225, + 0x00010225, + 0x00010226, + 0x00010226, + 0x00010227, + 0x00010227, + 0x00010228, + 0x00010228, + 0x00010229, + 0x00010229, + 0x0001022a, + 0x0001022a, + 0x0001022b, + 0x0001022b, + }, + { + 0x0001022c, + 0x0001022c, + 0x0001022d, + 0x0001022d, + 0x0001022e, + 0x0001022e, + 0x0001022f, + 0x0001022f, + 0x00010230, + 0x00010230, + 0x00010231, + 0x00010231, + 0x00010232, + 0x00010232, + 0x00010233, + 0x00010233, + }, + { + 0x00010234, + 0x00010234, + 0x00010235, + 0x00010235, + 0x00010236, + 0x00010236, + 0x00010237, + 0x00010237, + 0x00010238, + 0x00010238, + 0x00010239, + 0x00010239, + 0x0001023a, + 0x0001023a, + 0x0001023b, + 0x0001023b, + }, + { + 0x0001023c, + 0x0001023c, + 0x0001023d, + 0x0001023d, + 0x0001023e, + 0x0001023e, + 0x0001023f, + 0x0001023f, + 0x00010240, + 0x00010240, + 0x00010241, + 0x00010241, + 0x00010242, + 0x00010242, + 0x00010243, + 0x00010243, + }, + { + 0x00010244, + 0x00010244, + 0x00010245, + 0x00010245, + 0x00010246, + 0x00010246, + 0x00010247, + 0x00010247, + 0x00010248, + 0x00010248, + 0x00010249, + 0x00010249, + 0x0001024a, + 0x0001024a, + 0x0001024b, + 0x0001024b, + }, + { + 0x0001024c, + 0x0001024c, + 0x0001024d, + 0x0001024d, + 0x0001024e, + 0x0001024e, + 0x0001024f, + 0x0001024f, + 0x00010250, + 0x00010250, + 0x00010251, + 0x00010251, + 0x00010252, + 0x00010252, + 0x00010253, + 0x00010253, + }, + { + 0x00010254, + 0x00010254, + 0x00010255, + 0x00010255, + 0x00010256, + 0x00010256, + 0x00010257, + 0x00010257, + 0x00010258, + 0x00010258, + 0x00010259, + 0x00010259, + 0x0001025a, + 0x0001025a, + 0x0001025b, + 0x0001025b, + }, + { + 0x0001025c, + 0x0001025c, + 0x0001025d, + 0x0001025d, + 0x0001025e, + 0x0001025e, + 0x0001025f, + 0x0001025f, + 0x00010260, + 0x00010260, + 0x00010261, + 0x00010261, + 0x00010262, + 0x00010262, + 0x00010263, + 0x00010263, + }, + { + 0x00010264, + 0x00010264, + 0x00010265, + 0x00010265, + 0x00010266, + 0x00010266, + 0x00010267, + 0x00010267, + 0x00010268, + 0x00010268, + 0x00010269, + 0x00010269, + 0x0001026a, + 0x0001026a, + 0x0001026b, + 0x0001026b, + }, + { + 0x0001026c, + 0x0001026c, + 0x0001026d, + 0x0001026d, + 0x0001026e, + 0x0001026e, + 0x0001026f, + 0x0001026f, + 0x00010270, + 0x00010270, + 0x00010271, + 0x00010271, + 0x00010272, + 0x00010272, + 0x00010273, + 0x00010273, + }, + { + 0x00010274, + 0x00010274, + 0x00010275, + 0x00010275, + 0x00010276, + 0x00010276, + 0x00010277, + 0x00010277, + 0x00010278, + 0x00010278, + 0x00010279, + 0x00010279, + 0x0001027a, + 0x0001027a, + 0x0001027b, + 0x0001027b, + }, + { + 0x0001027c, + 0x0001027c, + 0x0001027d, + 0x0001027d, + 0x0001027e, + 0x0001027e, + 0x0001027f, + 0x0001027f, + 0x00010280, + 0x00010280, + 0x00010281, + 0x00010281, + 0x00010282, + 0x00010282, + 0x00010283, + 0x00010283, + }, + { + 0x00010284, + 0x00010284, + 0x00010285, + 0x00010285, + 0x00010286, + 0x00010286, + 0x00010287, + 0x00010287, + 0x00010288, + 0x00010288, + 0x00010289, + 0x00010289, + 0x0001028a, + 0x0001028a, + 0x0001028b, + 0x0001028b, + }, + { + 0x0001028c, + 0x0001028c, + 0x0001028d, + 0x0001028d, + 0x0001028e, + 0x0001028e, + 0x0001028f, + 0x0001028f, + 0x00010290, + 0x00010290, + 0x00010291, + 0x00010291, + 0x00010292, + 0x00010292, + 0x00010293, + 0x00010293, + }, + { + 0x00010294, + 0x00010294, + 0x00010295, + 0x00010295, + 0x00010296, + 0x00010296, + 0x00010297, + 0x00010297, + 0x00010298, + 0x00010298, + 0x00010299, + 0x00010299, + 0x0001029a, + 0x0001029a, + 0x0001029b, + 0x0001029b, + }, + { + 0x0001029c, + 0x0001029c, + 0x0001029d, + 0x0001029d, + 0x0001029e, + 0x0001029e, + 0x0001029f, + 0x0001029f, + 0x000102a0, + 0x000102a0, + 0x000102a1, + 0x000102a1, + 0x000102a2, + 0x000102a2, + 0x000102a3, + 0x000102a3, + }, + { + 0x000102a4, + 0x000102a4, + 0x000102a5, + 0x000102a5, + 0x000102a6, + 0x000102a6, + 0x000102a7, + 0x000102a7, + 0x000102a8, + 0x000102a8, + 0x000102a9, + 0x000102a9, + 0x000102aa, + 0x000102aa, + 0x000102ab, + 0x000102ab, + }, + { + 0x000102ac, + 0x000102ac, + 0x000102ad, + 0x000102ad, + 0x000102ae, + 0x000102ae, + 0x000102af, + 0x000102af, + 0x000102b0, + 0x000102b0, + 0x000102b1, + 0x000102b1, + 0x000102b2, + 0x000102b2, + 0x000102b3, + 0x000102b3, + }, + { + 0x000102b4, + 0x000102b4, + 0x000102b5, + 0x000102b5, + 0x000102b6, + 0x000102b6, + 0x000102b7, + 0x000102b7, + 0x000102b8, + 0x000102b8, + 0x000102b9, + 0x000102b9, + 0x000102ba, + 0x000102ba, + 0x000102bb, + 0x000102bb, + }, + { + 0x000102bc, + 0x000102bc, + 0x000102bd, + 0x000102bd, + 0x000102be, + 0x000102be, + 0x000102bf, + 0x000102bf, + 0x000102c0, + 0x000102c0, + 0x000102c1, + 0x000102c1, + 0x000102c2, + 0x000102c2, + 0x000102c3, + 0x000102c3, + }, + { + 0x000102c4, + 0x000102c4, + 0x000102c5, + 0x000102c5, + 0x000102c6, + 0x000102c6, + 0x000102c7, + 0x000102c7, + 0x000102c8, + 0x000102c8, + 0x000102c9, + 0x000102c9, + 0x000102ca, + 0x000102ca, + 0x000102cb, + 0x000102cb, + }, + { + 0x000102cc, + 0x000102cc, + 0x000102cd, + 0x000102cd, + 0x000102ce, + 0x000102ce, + 0x000102cf, + 0x000102cf, + 0x000102d0, + 0x000102d0, + 0x000102d1, + 0x000102d1, + 0x000102d2, + 0x000102d2, + 0x000102d3, + 0x000102d3, + }, +}; + +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc49[729][2] = +#else +const uint16_t c_aauiLCLDHuffEnc49[729][2] = +#endif + { + { 0x0002, 0x0003 }, + { 0x0003, 0x0003 }, + { 0x0005, 0x0007 }, + { 0x0007, 0x000a }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0009, 0x0009 }, + { 0x000b, 0x000d }, + { 0x000d, 0x0014 }, + { 0x000d, 0x0015 }, + { 0x0010, 0x0052 }, + { 0x0011, 0x0098 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0005, 0x0008 }, + { 0x0006, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x000a, 0x000a }, + { 0x000b, 0x000e }, + { 0x000d, 0x0016 }, + { 0x000f, 0x0031 }, + { 0x0010, 0x0053 }, + { 0x0012, 0x012a }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x000b }, + { 0x0007, 0x000c }, + { 0x0008, 0x000d }, + { 0x0009, 0x000a }, + { 0x000a, 0x000b }, + { 0x000c, 0x000f }, + { 0x000d, 0x0017 }, + { 0x000f, 0x0032 }, + { 0x0010, 0x0054 }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + { 0x0013, 0x0028 }, + { 0x0013, 0x0029 }, + { 0x0013, 0x002a }, + { 0x0013, 0x002b }, + { 0x0007, 0x000d }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x000e }, + { 0x0009, 0x000b }, + { 0x000b, 0x000f }, + { 0x000c, 0x0010 }, + { 0x000e, 0x001d }, + { 0x000f, 0x0033 }, + { 0x0011, 0x0099 }, + { 0x0013, 0x002c }, + { 0x0013, 0x002d }, + { 0x0013, 0x002e }, + { 0x0013, 0x002f }, + { 0x0013, 0x0030 }, + { 0x0013, 0x0031 }, + { 0x0013, 0x0032 }, + { 0x0013, 0x0033 }, + { 0x0013, 0x0034 }, + { 0x0013, 0x0035 }, + { 0x0013, 0x0036 }, + { 0x0013, 0x0037 }, + { 0x0013, 0x0038 }, + { 0x0013, 0x0039 }, + { 0x0013, 0x003a }, + { 0x0008, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0008, 0x0010 }, + { 0x0009, 0x000c }, + { 0x000a, 0x000c }, + { 0x000c, 0x0011 }, + { 0x000d, 0x0018 }, + { 0x000e, 0x001e }, + { 0x0011, 0x009a }, + { 0x0011, 0x009b }, + { 0x0013, 0x003b }, + { 0x0013, 0x003c }, + { 0x0013, 0x003d }, + { 0x0013, 0x003e }, + { 0x0013, 0x003f }, + { 0x0013, 0x0040 }, + { 0x0013, 0x0041 }, + { 0x0013, 0x0042 }, + { 0x0013, 0x0043 }, + { 0x0013, 0x0044 }, + { 0x0013, 0x0045 }, + { 0x0013, 0x0046 }, + { 0x0013, 0x0047 }, + { 0x0013, 0x0048 }, + { 0x0013, 0x0049 }, + { 0x0008, 0x0011 }, + { 0x0007, 0x0013 }, + { 0x0008, 0x0012 }, + { 0x0008, 0x0013 }, + { 0x0009, 0x000d }, + { 0x000a, 0x000d }, + { 0x000b, 0x0010 }, + { 0x000c, 0x0012 }, + { 0x000e, 0x001f }, + { 0x000e, 0x0020 }, + { 0x0010, 0x0055 }, + { 0x0011, 0x009c }, + { 0x0013, 0x004a }, + { 0x0013, 0x004b }, + { 0x0013, 0x004c }, + { 0x0013, 0x004d }, + { 0x0013, 0x004e }, + { 0x0013, 0x004f }, + { 0x0013, 0x0050 }, + { 0x0013, 0x0051 }, + { 0x0013, 0x0052 }, + { 0x0013, 0x0053 }, + { 0x0013, 0x0054 }, + { 0x0013, 0x0055 }, + { 0x0013, 0x0056 }, + { 0x0013, 0x0057 }, + { 0x0013, 0x0058 }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x000e }, + { 0x000b, 0x0011 }, + { 0x000c, 0x0013 }, + { 0x000d, 0x0019 }, + { 0x000e, 0x0021 }, + { 0x0010, 0x0056 }, + { 0x0010, 0x0057 }, + { 0x0013, 0x0059 }, + { 0x0013, 0x005a }, + { 0x0013, 0x005b }, + { 0x0013, 0x005c }, + { 0x0013, 0x005d }, + { 0x0013, 0x005e }, + { 0x0013, 0x005f }, + { 0x0013, 0x0060 }, + { 0x0013, 0x0061 }, + { 0x0013, 0x0062 }, + { 0x0013, 0x0063 }, + { 0x0013, 0x0064 }, + { 0x0013, 0x0065 }, + { 0x0013, 0x0066 }, + { 0x0013, 0x0067 }, + { 0x0013, 0x0068 }, + { 0x000b, 0x0012 }, + { 0x000a, 0x000f }, + { 0x000a, 0x0010 }, + { 0x000a, 0x0011 }, + { 0x000c, 0x0014 }, + { 0x000c, 0x0015 }, + { 0x000d, 0x001a }, + { 0x000e, 0x0022 }, + { 0x0010, 0x0058 }, + { 0x0010, 0x0059 }, + { 0x0013, 0x0069 }, + { 0x0013, 0x006a }, + { 0x0013, 0x006b }, + { 0x0013, 0x006c }, + { 0x0013, 0x006d }, + { 0x0013, 0x006e }, + { 0x0013, 0x006f }, + { 0x0013, 0x0070 }, + { 0x0013, 0x0071 }, + { 0x0013, 0x0072 }, + { 0x0013, 0x0073 }, + { 0x0013, 0x0074 }, + { 0x0013, 0x0075 }, + { 0x0013, 0x0076 }, + { 0x0013, 0x0077 }, + { 0x0013, 0x0078 }, + { 0x0013, 0x0079 }, + { 0x000c, 0x0016 }, + { 0x000b, 0x0013 }, + { 0x000c, 0x0017 }, + { 0x000c, 0x0018 }, + { 0x000c, 0x0019 }, + { 0x000e, 0x0023 }, + { 0x000e, 0x0024 }, + { 0x000f, 0x0034 }, + { 0x0010, 0x005a }, + { 0x0011, 0x009d }, + { 0x0013, 0x007a }, + { 0x0013, 0x007b }, + { 0x0013, 0x007c }, + { 0x0013, 0x007d }, + { 0x0013, 0x007e }, + { 0x0013, 0x007f }, + { 0x0013, 0x0080 }, + { 0x0013, 0x0081 }, + { 0x0013, 0x0082 }, + { 0x0013, 0x0083 }, + { 0x0013, 0x0084 }, + { 0x0013, 0x0085 }, + { 0x0013, 0x0086 }, + { 0x0013, 0x0087 }, + { 0x0013, 0x0088 }, + { 0x0013, 0x0089 }, + { 0x0013, 0x008a }, + { 0x000e, 0x0025 }, + { 0x000d, 0x001b }, + { 0x000d, 0x001c }, + { 0x000d, 0x001d }, + { 0x000e, 0x0026 }, + { 0x000f, 0x0035 }, + { 0x0010, 0x005b }, + { 0x0011, 0x009e }, + { 0x0011, 0x009f }, + { 0x0012, 0x012b }, + { 0x0013, 0x008b }, + { 0x0013, 0x008c }, + { 0x0013, 0x008d }, + { 0x0013, 0x008e }, + { 0x0013, 0x008f }, + { 0x0013, 0x0090 }, + { 0x0013, 0x0091 }, + { 0x0013, 0x0092 }, + { 0x0013, 0x0093 }, + { 0x0013, 0x0094 }, + { 0x0013, 0x0095 }, + { 0x0013, 0x0096 }, + { 0x0013, 0x0097 }, + { 0x0013, 0x0098 }, + { 0x0013, 0x0099 }, + { 0x0013, 0x009a }, + { 0x0013, 0x009b }, + { 0x0010, 0x005c }, + { 0x000f, 0x0036 }, + { 0x000e, 0x0027 }, + { 0x000f, 0x0037 }, + { 0x000f, 0x0038 }, + { 0x0010, 0x005d }, + { 0x0011, 0x00a0 }, + { 0x0013, 0x009c }, + { 0x0012, 0x012c }, + { 0x0013, 0x009d }, + { 0x0013, 0x009e }, + { 0x0013, 0x009f }, + { 0x0013, 0x00a0 }, + { 0x0013, 0x00a1 }, + { 0x0013, 0x00a2 }, + { 0x0013, 0x00a3 }, + { 0x0013, 0x00a4 }, + { 0x0013, 0x00a5 }, + { 0x0013, 0x00a6 }, + { 0x0013, 0x00a7 }, + { 0x0013, 0x00a8 }, + { 0x0013, 0x00a9 }, + { 0x0013, 0x00aa }, + { 0x0013, 0x00ab }, + { 0x0013, 0x00ac }, + { 0x0013, 0x00ad }, + { 0x0013, 0x00ae }, + { 0x0010, 0x005e }, + { 0x000f, 0x0039 }, + { 0x0010, 0x005f }, + { 0x0010, 0x0060 }, + { 0x0011, 0x00a1 }, + { 0x0010, 0x0061 }, + { 0x0013, 0x00af }, + { 0x0013, 0x00b0 }, + { 0x0012, 0x012d }, + { 0x0013, 0x00b1 }, + { 0x0013, 0x00b2 }, + { 0x0013, 0x00b3 }, + { 0x0013, 0x00b4 }, + { 0x0013, 0x00b5 }, + { 0x0013, 0x00b6 }, + { 0x0013, 0x00b7 }, + { 0x0013, 0x00b8 }, + { 0x0013, 0x00b9 }, + { 0x0013, 0x00ba }, + { 0x0013, 0x00bb }, + { 0x0013, 0x00bc }, + { 0x0013, 0x00bd }, + { 0x0013, 0x00be }, + { 0x0013, 0x00bf }, + { 0x0013, 0x00c0 }, + { 0x0013, 0x00c1 }, + { 0x0013, 0x00c2 }, + { 0x0012, 0x012e }, + { 0x0011, 0x00a2 }, + { 0x0011, 0x00a3 }, + { 0x0013, 0x00c3 }, + { 0x0013, 0x00c4 }, + { 0x0013, 0x00c5 }, + { 0x0013, 0x00c6 }, + { 0x0013, 0x00c7 }, + { 0x0013, 0x00c8 }, + { 0x0013, 0x00c9 }, + { 0x0013, 0x00ca }, + { 0x0013, 0x00cb }, + { 0x0013, 0x00cc }, + { 0x0013, 0x00cd }, + { 0x0013, 0x00ce }, + { 0x0013, 0x00cf }, + { 0x0013, 0x00d0 }, + { 0x0013, 0x00d1 }, + { 0x0013, 0x00d2 }, + { 0x0013, 0x00d3 }, + { 0x0013, 0x00d4 }, + { 0x0013, 0x00d5 }, + { 0x0013, 0x00d6 }, + { 0x0013, 0x00d7 }, + { 0x0013, 0x00d8 }, + { 0x0013, 0x00d9 }, + { 0x0013, 0x00da }, + { 0x0013, 0x00db }, + { 0x0013, 0x00dc }, + { 0x0013, 0x00dd }, + { 0x0013, 0x00de }, + { 0x0013, 0x00df }, + { 0x0012, 0x012f }, + { 0x0013, 0x00e0 }, + { 0x0013, 0x00e1 }, + { 0x0013, 0x00e2 }, + { 0x0013, 0x00e3 }, + { 0x0013, 0x00e4 }, + { 0x0013, 0x00e5 }, + { 0x0013, 0x00e6 }, + { 0x0013, 0x00e7 }, + { 0x0013, 0x00e8 }, + { 0x0013, 0x00e9 }, + { 0x0013, 0x00ea }, + { 0x0013, 0x00eb }, + { 0x0013, 0x00ec }, + { 0x0013, 0x00ed }, + { 0x0013, 0x00ee }, + { 0x0013, 0x00ef }, + { 0x0013, 0x00f0 }, + { 0x0013, 0x00f1 }, + { 0x0013, 0x00f2 }, + { 0x0013, 0x00f3 }, + { 0x0013, 0x00f4 }, + { 0x0013, 0x00f5 }, + { 0x0013, 0x00f6 }, + { 0x0013, 0x00f7 }, + { 0x0013, 0x00f8 }, + { 0x0013, 0x00f9 }, + { 0x0013, 0x00fa }, + { 0x0013, 0x00fb }, + { 0x0013, 0x00fc }, + { 0x0013, 0x00fd }, + { 0x0013, 0x00fe }, + { 0x0013, 0x00ff }, + { 0x0013, 0x0100 }, + { 0x0013, 0x0101 }, + { 0x0013, 0x0102 }, + { 0x0013, 0x0103 }, + { 0x0013, 0x0104 }, + { 0x0013, 0x0105 }, + { 0x0013, 0x0106 }, + { 0x0013, 0x0107 }, + { 0x0013, 0x0108 }, + { 0x0013, 0x0109 }, + { 0x0013, 0x010a }, + { 0x0013, 0x010b }, + { 0x0013, 0x010c }, + { 0x0013, 0x010d }, + { 0x0013, 0x010e }, + { 0x0013, 0x010f }, + { 0x0013, 0x0110 }, + { 0x0013, 0x0111 }, + { 0x0013, 0x0112 }, + { 0x0013, 0x0113 }, + { 0x0013, 0x0114 }, + { 0x0013, 0x0115 }, + { 0x0013, 0x0116 }, + { 0x0013, 0x0117 }, + { 0x0013, 0x0118 }, + { 0x0013, 0x0119 }, + { 0x0013, 0x011a }, + { 0x0013, 0x011b }, + { 0x0013, 0x011c }, + { 0x0013, 0x011d }, + { 0x0013, 0x011e }, + { 0x0013, 0x011f }, + { 0x0013, 0x0120 }, + { 0x0013, 0x0121 }, + { 0x0013, 0x0122 }, + { 0x0013, 0x0123 }, + { 0x0013, 0x0124 }, + { 0x0013, 0x0125 }, + { 0x0013, 0x0126 }, + { 0x0013, 0x0127 }, + { 0x0013, 0x0128 }, + { 0x0013, 0x0129 }, + { 0x0013, 0x012a }, + { 0x0013, 0x012b }, + { 0x0013, 0x012c }, + { 0x0013, 0x012d }, + { 0x0013, 0x012e }, + { 0x0013, 0x012f }, + { 0x0013, 0x0130 }, + { 0x0013, 0x0131 }, + { 0x0013, 0x0132 }, + { 0x0013, 0x0133 }, + { 0x0013, 0x0134 }, + { 0x0013, 0x0135 }, + { 0x0013, 0x0136 }, + { 0x0013, 0x0137 }, + { 0x0013, 0x0138 }, + { 0x0013, 0x0139 }, + { 0x0013, 0x013a }, + { 0x0013, 0x013b }, + { 0x0013, 0x013c }, + { 0x0013, 0x013d }, + { 0x0013, 0x013e }, + { 0x0013, 0x013f }, + { 0x0013, 0x0140 }, + { 0x0013, 0x0141 }, + { 0x0013, 0x0142 }, + { 0x0013, 0x0143 }, + { 0x0013, 0x0144 }, + { 0x0013, 0x0145 }, + { 0x0013, 0x0146 }, + { 0x0013, 0x0147 }, + { 0x0013, 0x0148 }, + { 0x0013, 0x0149 }, + { 0x0013, 0x014a }, + { 0x0013, 0x014b }, + { 0x0013, 0x014c }, + { 0x0013, 0x014d }, + { 0x0013, 0x014e }, + { 0x0013, 0x014f }, + { 0x0013, 0x0150 }, + { 0x0013, 0x0151 }, + { 0x0013, 0x0152 }, + { 0x0013, 0x0153 }, + { 0x0013, 0x0154 }, + { 0x0013, 0x0155 }, + { 0x0013, 0x0156 }, + { 0x0013, 0x0157 }, + { 0x0013, 0x0158 }, + { 0x0013, 0x0159 }, + { 0x0013, 0x015a }, + { 0x0013, 0x015b }, + { 0x0013, 0x015c }, + { 0x0013, 0x015d }, + { 0x0013, 0x015e }, + { 0x0013, 0x015f }, + { 0x0013, 0x0160 }, + { 0x0013, 0x0161 }, + { 0x0013, 0x0162 }, + { 0x0013, 0x0163 }, + { 0x0013, 0x0164 }, + { 0x0013, 0x0165 }, + { 0x0013, 0x0166 }, + { 0x0013, 0x0167 }, + { 0x0013, 0x0168 }, + { 0x0013, 0x0169 }, + { 0x0013, 0x016a }, + { 0x0013, 0x016b }, + { 0x0013, 0x016c }, + { 0x0013, 0x016d }, + { 0x0013, 0x016e }, + { 0x0013, 0x016f }, + { 0x0013, 0x0170 }, + { 0x0013, 0x0171 }, + { 0x0013, 0x0172 }, + { 0x0013, 0x0173 }, + { 0x0013, 0x0174 }, + { 0x0013, 0x0175 }, + { 0x0013, 0x0176 }, + { 0x0013, 0x0177 }, + { 0x0013, 0x0178 }, + { 0x0013, 0x0179 }, + { 0x0013, 0x017a }, + { 0x0013, 0x017b }, + { 0x0013, 0x017c }, + { 0x0013, 0x017d }, + { 0x0013, 0x017e }, + { 0x0013, 0x017f }, + { 0x0013, 0x0180 }, + { 0x0013, 0x0181 }, + { 0x0013, 0x0182 }, + { 0x0013, 0x0183 }, + { 0x0013, 0x0184 }, + { 0x0013, 0x0185 }, + { 0x0013, 0x0186 }, + { 0x0013, 0x0187 }, + { 0x0013, 0x0188 }, + { 0x0013, 0x0189 }, + { 0x0013, 0x018a }, + { 0x0013, 0x018b }, + { 0x0013, 0x018c }, + { 0x0013, 0x018d }, + { 0x0013, 0x018e }, + { 0x0013, 0x018f }, + { 0x0013, 0x0190 }, + { 0x0013, 0x0191 }, + { 0x0013, 0x0192 }, + { 0x0013, 0x0193 }, + { 0x0013, 0x0194 }, + { 0x0013, 0x0195 }, + { 0x0013, 0x0196 }, + { 0x0013, 0x0197 }, + { 0x0013, 0x0198 }, + { 0x0013, 0x0199 }, + { 0x0013, 0x019a }, + { 0x0013, 0x019b }, + { 0x0013, 0x019c }, + { 0x0013, 0x019d }, + { 0x0013, 0x019e }, + { 0x0013, 0x019f }, + { 0x0013, 0x01a0 }, + { 0x0013, 0x01a1 }, + { 0x0013, 0x01a2 }, + { 0x0013, 0x01a3 }, + { 0x0013, 0x01a4 }, + { 0x0013, 0x01a5 }, + { 0x0013, 0x01a6 }, + { 0x0013, 0x01a7 }, + { 0x0013, 0x01a8 }, + { 0x0013, 0x01a9 }, + { 0x0013, 0x01aa }, + { 0x0013, 0x01ab }, + { 0x0013, 0x01ac }, + { 0x0013, 0x01ad }, + { 0x0013, 0x01ae }, + { 0x0013, 0x01af }, + { 0x0013, 0x01b0 }, + { 0x0013, 0x01b1 }, + { 0x0013, 0x01b2 }, + { 0x0013, 0x01b3 }, + { 0x0013, 0x01b4 }, + { 0x0013, 0x01b5 }, + { 0x0013, 0x01b6 }, + { 0x0013, 0x01b7 }, + { 0x0013, 0x01b8 }, + { 0x0013, 0x01b9 }, + { 0x0013, 0x01ba }, + { 0x0013, 0x01bb }, + { 0x0013, 0x01bc }, + { 0x0013, 0x01bd }, + { 0x0013, 0x01be }, + { 0x0013, 0x01bf }, + { 0x0013, 0x01c0 }, + { 0x0013, 0x01c1 }, + { 0x0013, 0x01c2 }, + { 0x0013, 0x01c3 }, + { 0x0013, 0x01c4 }, + { 0x0013, 0x01c5 }, + { 0x0013, 0x01c6 }, + { 0x0013, 0x01c7 }, + { 0x0013, 0x01c8 }, + { 0x0013, 0x01c9 }, + { 0x0013, 0x01ca }, + { 0x0013, 0x01cb }, + { 0x0013, 0x01cc }, + { 0x0013, 0x01cd }, + { 0x0013, 0x01ce }, + { 0x0013, 0x01cf }, + { 0x0013, 0x01d0 }, + { 0x0013, 0x01d1 }, + { 0x0013, 0x01d2 }, + { 0x0013, 0x01d3 }, + { 0x0013, 0x01d4 }, + { 0x0013, 0x01d5 }, + { 0x0013, 0x01d6 }, + { 0x0013, 0x01d7 }, + { 0x0013, 0x01d8 }, + { 0x0013, 0x01d9 }, + { 0x0013, 0x01da }, + { 0x0013, 0x01db }, + { 0x0013, 0x01dc }, + { 0x0013, 0x01dd }, + { 0x0013, 0x01de }, + { 0x0013, 0x01df }, + { 0x0013, 0x01e0 }, + { 0x0013, 0x01e1 }, + { 0x0013, 0x01e2 }, + { 0x0013, 0x01e3 }, + { 0x0013, 0x01e4 }, + { 0x0013, 0x01e5 }, + { 0x0013, 0x01e6 }, + { 0x0013, 0x01e7 }, + { 0x0013, 0x01e8 }, + { 0x0013, 0x01e9 }, + { 0x0013, 0x01ea }, + { 0x0013, 0x01eb }, + { 0x0013, 0x01ec }, + { 0x0013, 0x01ed }, + { 0x0013, 0x01ee }, + { 0x0013, 0x01ef }, + { 0x0013, 0x01f0 }, + { 0x0013, 0x01f1 }, + { 0x0013, 0x01f2 }, + { 0x0013, 0x01f3 }, + { 0x0013, 0x01f4 }, + { 0x0013, 0x01f5 }, + { 0x0013, 0x01f6 }, + { 0x0013, 0x01f7 }, + { 0x0013, 0x01f8 }, + { 0x0013, 0x01f9 }, + { 0x0013, 0x01fa }, + { 0x0013, 0x01fb }, + { 0x0013, 0x01fc }, + { 0x0013, 0x01fd }, + { 0x0013, 0x01fe }, + { 0x0013, 0x01ff }, + { 0x0013, 0x0200 }, + { 0x0013, 0x0201 }, + { 0x0013, 0x0202 }, + { 0x0013, 0x0203 }, + { 0x0013, 0x0204 }, + { 0x0013, 0x0205 }, + { 0x0013, 0x0206 }, + { 0x0013, 0x0207 }, + { 0x0013, 0x0208 }, + { 0x0013, 0x0209 }, + { 0x0013, 0x020a }, + { 0x0013, 0x020b }, + { 0x0013, 0x020c }, + { 0x0013, 0x020d }, + { 0x0013, 0x020e }, + { 0x0013, 0x020f }, + { 0x0013, 0x0210 }, + { 0x0013, 0x0211 }, + { 0x0013, 0x0212 }, + { 0x0013, 0x0213 }, + { 0x0013, 0x0214 }, + { 0x0013, 0x0215 }, + { 0x0013, 0x0216 }, + { 0x0013, 0x0217 }, + { 0x0013, 0x0218 }, + { 0x0013, 0x0219 }, + { 0x0013, 0x021a }, + { 0x0013, 0x021b }, + { 0x0013, 0x021c }, + { 0x0013, 0x021d }, + { 0x0013, 0x021e }, + { 0x0013, 0x021f }, + { 0x0013, 0x0220 }, + { 0x0013, 0x0221 }, + { 0x0013, 0x0222 }, + { 0x0013, 0x0223 }, + { 0x0013, 0x0224 }, + { 0x0013, 0x0225 }, + { 0x0013, 0x0226 }, + { 0x0013, 0x0227 }, + { 0x0013, 0x0228 }, + { 0x0013, 0x0229 }, + { 0x0013, 0x022a }, + { 0x0013, 0x022b }, + { 0x0013, 0x022c }, + { 0x0013, 0x022d }, + { 0x0013, 0x022e }, + { 0x0013, 0x022f }, + { 0x0013, 0x0230 }, + { 0x0013, 0x0231 }, + { 0x0013, 0x0232 }, + { 0x0013, 0x0233 }, + { 0x0013, 0x0234 }, + { 0x0013, 0x0235 }, + { 0x0013, 0x0236 }, + { 0x0013, 0x0237 }, + { 0x0013, 0x0238 }, + { 0x0013, 0x0239 }, + { 0x0013, 0x023a }, + { 0x0013, 0x023b }, + { 0x0013, 0x023c }, + { 0x0013, 0x023d }, + { 0x0013, 0x023e }, + { 0x0013, 0x023f }, + { 0x0013, 0x0240 }, + { 0x0013, 0x0241 }, + { 0x0013, 0x0242 }, + { 0x0013, 0x0243 }, + { 0x0013, 0x0244 }, + { 0x0013, 0x0245 }, + { 0x0013, 0x0246 }, + { 0x0013, 0x0247 }, + { 0x0013, 0x0248 }, + { 0x0013, 0x0249 }, + { 0x0013, 0x024a }, + { 0x0013, 0x024b }, + { 0x0013, 0x024c }, + { 0x0013, 0x024d }, + { 0x0013, 0x024e }, + { 0x0013, 0x024f }, + { 0x0013, 0x0250 }, + { 0x0013, 0x0251 }, + { 0x0013, 0x0252 }, + { 0x0013, 0x0253 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec49[113][16] = { + { + 0x0006ffff, + 0x0005ffff, + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x00010001, + 0x00010001, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + }, + { + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + 0x00030002, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + }, + { + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + }, + { + 0x0001006d, + 0x0001006d, + 0x0001006e, + 0x0001006e, + 0x0001006f, + 0x0001006f, + 0x00010088, + 0x00010088, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x00000070, + 0x00000087, + 0x00000089, + 0x0000008a, + 0x00010003, + 0x00010003, + 0x0001001f, + 0x0001001f, + 0x0001003a, + 0x0001003a, + 0x00010051, + 0x00010051, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + }, + { + 0x000fffff, + 0x000effff, + 0x000cffff, + 0x000dffff, + 0x0007ffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x00000004, + 0x00000005, + 0x00000020, + 0x00000021, + 0x0000003b, + 0x00000056, + 0x0000006c, + }, + { + 0x000200bf, + 0x000200bf, + 0x000200bf, + 0x000200bf, + 0x000200c0, + 0x000200c0, + 0x000200c0, + 0x000200c0, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x0003003c, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + }, + { + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x00030071, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + 0x0003008b, + }, + { + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a2, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + 0x000300a3, + }, + { + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a4, + 0x000300a5, + 0x000300a5, + 0x000300a5, + 0x000300a5, + 0x000300a5, + 0x000300a5, + 0x000300a5, + 0x000300a5, + }, + { + 0x0001008d, + 0x0001008d, + 0x000100a7, + 0x000100a7, + 0x000100bd, + 0x000100bd, + 0x000100d9, + 0x000100d9, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + }, + { + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020072, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200a6, + 0x000200be, + 0x000200be, + 0x000200be, + 0x000200be, + }, + { + 0x00000059, + 0x00000073, + 0x0000008e, + 0x000000a8, + 0x000000c1, + 0x000000c2, + 0x000000d8, + 0x000000da, + 0x000000db, + 0x000000dc, + 0x00010007, + 0x00010007, + 0x00010023, + 0x00010023, + 0x00010058, + 0x00010058, + }, + { + 0x0023ffff, + 0x0034ffff, + 0x0045ffff, + 0x0056ffff, + 0x001affff, + 0x0019ffff, + 0x0018ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0011ffff, + 0x0010ffff, + 0x0012ffff, + 0x0013ffff, + 0x0014ffff, + 0x0000003e, + }, + { + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x00030074, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + 0x000300a9, + }, + { + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300c3, + 0x000300f4, + 0x000300f4, + 0x000300f4, + 0x000300f4, + 0x000300f4, + 0x000300f4, + 0x000300f4, + 0x000300f4, + }, + { + 0x000300f5, + 0x000300f5, + 0x000300f5, + 0x000300f5, + 0x000300f5, + 0x000300f5, + 0x000300f5, + 0x000300f5, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + 0x000300f6, + }, + { + 0x00010112, + 0x00010112, + 0x0001012a, + 0x0001012a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x0002008f, + }, + { + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020090, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200aa, + 0x000200c4, + 0x000200c4, + 0x000200c4, + 0x000200c4, + 0x000200dd, + 0x000200dd, + 0x000200dd, + 0x000200dd, + }, + { + 0x000200de, + 0x000200de, + 0x000200de, + 0x000200de, + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f3, + 0x000200f7, + 0x000200f7, + 0x000200f7, + 0x000200f7, + 0x00020110, + 0x00020110, + 0x00020110, + 0x00020110, + }, + { + 0x0000012c, + 0x0000012e, + 0x00010025, + 0x00010025, + 0x00010040, + 0x00010040, + 0x0001005b, + 0x0001005b, + 0x000100df, + 0x000100df, + 0x000100f8, + 0x000100f8, + 0x0001010f, + 0x0001010f, + 0x00010111, + 0x00010111, + }, + { + 0x001fffff, + 0x0020ffff, + 0x0000000a, + 0x00000026, + 0x00000041, + 0x00000091, + 0x000000ab, + 0x000000ac, + 0x000000c5, + 0x000000c6, + 0x000000e0, + 0x000000f9, + 0x0000010e, + 0x00000113, + 0x00000129, + 0x0000012b, + }, + { + 0x0067ffff, + 0x0068ffff, + 0x0069ffff, + 0x006affff, + 0x006bffff, + 0x006cffff, + 0x006dffff, + 0x006effff, + 0x006fffff, + 0x0070ffff, + 0x0021ffff, + 0x0022ffff, + 0x001cffff, + 0x001bffff, + 0x001dffff, + 0x001effff, + }, + { + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030076, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + 0x00030077, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + 0x0003005c, + }, + { + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x00030092, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + 0x000300e1, + }, + { + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fa, + 0x000300fb, + 0x000300fb, + 0x000300fb, + 0x000300fb, + 0x000300fb, + 0x000300fb, + 0x000300fb, + 0x000300fb, + }, + { + 0x00030114, + 0x00030114, + 0x00030114, + 0x00030114, + 0x00030114, + 0x00030114, + 0x00030114, + 0x00030114, + 0x0003012d, + 0x0003012d, + 0x0003012d, + 0x0003012d, + 0x0003012d, + 0x0003012d, + 0x0003012d, + 0x0003012d, + }, + { + 0x00030145, + 0x00030145, + 0x00030145, + 0x00030145, + 0x00030145, + 0x00030145, + 0x00030145, + 0x00030145, + 0x00030146, + 0x00030146, + 0x00030146, + 0x00030146, + 0x00030146, + 0x00030146, + 0x00030146, + 0x00030146, + }, + { + 0x000102d5, + 0x000102d5, + 0x000102d6, + 0x000102d6, + 0x000102d7, + 0x000102d7, + 0x000102d8, + 0x000102d8, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x000200fc, + 0x000200fc, + 0x000200fc, + 0x000200fc, + }, + { + 0x00020116, + 0x00020116, + 0x00020116, + 0x00020116, + 0x00020131, + 0x00020131, + 0x00020131, + 0x00020131, + 0x00020144, + 0x00020144, + 0x00020144, + 0x00020144, + 0x00020164, + 0x00020164, + 0x00020164, + 0x00020164, + }, + { + 0x0025ffff, + 0x0026ffff, + 0x0028ffff, + 0x002affff, + 0x002effff, + 0x0029ffff, + 0x0027ffff, + 0x0033ffff, + 0x002dffff, + 0x0024ffff, + 0x002bffff, + 0x002cffff, + 0x002fffff, + 0x0030ffff, + 0x0031ffff, + 0x0032ffff, + }, + { + 0x00010085, + 0x00010085, + 0x00010086, + 0x00010086, + 0x00010093, + 0x00010093, + 0x00010094, + 0x00010094, + 0x00010095, + 0x00010095, + 0x00010096, + 0x00010096, + 0x00010097, + 0x00010097, + 0x00010098, + 0x00010098, + }, + { + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + }, + { + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x00010028, + 0x00010028, + }, + { + 0x00010061, + 0x00010061, + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + }, + { + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + }, + { + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + }, + { + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + }, + { + 0x00010099, + 0x00010099, + 0x0001009a, + 0x0001009a, + 0x0001009b, + 0x0001009b, + 0x0001009c, + 0x0001009c, + 0x0001009d, + 0x0001009d, + 0x0001009e, + 0x0001009e, + 0x0001009f, + 0x0001009f, + 0x000100a0, + 0x000100a0, + }, + { + 0x000100a1, + 0x000100a1, + 0x000100ad, + 0x000100ad, + 0x000100ae, + 0x000100ae, + 0x000100af, + 0x000100af, + 0x000100b0, + 0x000100b0, + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + }, + { + 0x0001007d, + 0x0001007d, + 0x0001007e, + 0x0001007e, + 0x0001007f, + 0x0001007f, + 0x00010080, + 0x00010080, + 0x00010081, + 0x00010081, + 0x00010082, + 0x00010082, + 0x00010083, + 0x00010083, + 0x00010084, + 0x00010084, + }, + { + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + }, + { + 0x000100b4, + 0x000100b4, + 0x000100b5, + 0x000100b5, + 0x000100b6, + 0x000100b6, + 0x000100b7, + 0x000100b7, + 0x000100b8, + 0x000100b8, + 0x000100b9, + 0x000100b9, + 0x000100ba, + 0x000100ba, + 0x000100bb, + 0x000100bb, + }, + { + 0x000100bc, + 0x000100bc, + 0x000100c7, + 0x000100c7, + 0x000100c8, + 0x000100c8, + 0x000100c9, + 0x000100c9, + 0x000100ca, + 0x000100ca, + 0x000100cb, + 0x000100cb, + 0x000100cc, + 0x000100cc, + 0x000100cd, + 0x000100cd, + }, + { + 0x000100ce, + 0x000100ce, + 0x000100cf, + 0x000100cf, + 0x000100d0, + 0x000100d0, + 0x000100d1, + 0x000100d1, + 0x000100d2, + 0x000100d2, + 0x000100d3, + 0x000100d3, + 0x000100d4, + 0x000100d4, + 0x000100d5, + 0x000100d5, + }, + { + 0x000100d6, + 0x000100d6, + 0x000100d7, + 0x000100d7, + 0x000100e2, + 0x000100e2, + 0x000100e3, + 0x000100e3, + 0x000100e4, + 0x000100e4, + 0x000100e5, + 0x000100e5, + 0x000100e6, + 0x000100e6, + 0x000100e7, + 0x000100e7, + }, + { + 0x00010069, + 0x00010069, + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + 0x00010078, + 0x00010078, + 0x00010079, + 0x00010079, + 0x0001007a, + 0x0001007a, + 0x0001007b, + 0x0001007b, + 0x0001007c, + 0x0001007c, + }, + { + 0x0035ffff, + 0x0036ffff, + 0x0037ffff, + 0x0038ffff, + 0x0039ffff, + 0x003affff, + 0x003bffff, + 0x003cffff, + 0x003dffff, + 0x003effff, + 0x003fffff, + 0x0040ffff, + 0x0041ffff, + 0x0042ffff, + 0x0043ffff, + 0x0044ffff, + }, + { + 0x000100e8, + 0x000100e8, + 0x000100e9, + 0x000100e9, + 0x000100ea, + 0x000100ea, + 0x000100eb, + 0x000100eb, + 0x000100ec, + 0x000100ec, + 0x000100ed, + 0x000100ed, + 0x000100ee, + 0x000100ee, + 0x000100ef, + 0x000100ef, + }, + { + 0x000100f0, + 0x000100f0, + 0x000100f1, + 0x000100f1, + 0x000100f2, + 0x000100f2, + 0x000100fd, + 0x000100fd, + 0x000100fe, + 0x000100fe, + 0x000100ff, + 0x000100ff, + 0x00010100, + 0x00010100, + 0x00010101, + 0x00010101, + }, + { + 0x00010102, + 0x00010102, + 0x00010103, + 0x00010103, + 0x00010104, + 0x00010104, + 0x00010105, + 0x00010105, + 0x00010106, + 0x00010106, + 0x00010107, + 0x00010107, + 0x00010108, + 0x00010108, + 0x00010109, + 0x00010109, + }, + { + 0x0001010a, + 0x0001010a, + 0x0001010b, + 0x0001010b, + 0x0001010c, + 0x0001010c, + 0x0001010d, + 0x0001010d, + 0x00010115, + 0x00010115, + 0x00010117, + 0x00010117, + 0x00010118, + 0x00010118, + 0x00010119, + 0x00010119, + }, + { + 0x0001011a, + 0x0001011a, + 0x0001011b, + 0x0001011b, + 0x0001011c, + 0x0001011c, + 0x0001011d, + 0x0001011d, + 0x0001011e, + 0x0001011e, + 0x0001011f, + 0x0001011f, + 0x00010120, + 0x00010120, + 0x00010121, + 0x00010121, + }, + { + 0x00010122, + 0x00010122, + 0x00010123, + 0x00010123, + 0x00010124, + 0x00010124, + 0x00010125, + 0x00010125, + 0x00010126, + 0x00010126, + 0x00010127, + 0x00010127, + 0x00010128, + 0x00010128, + 0x0001012f, + 0x0001012f, + }, + { + 0x00010130, + 0x00010130, + 0x00010132, + 0x00010132, + 0x00010133, + 0x00010133, + 0x00010134, + 0x00010134, + 0x00010135, + 0x00010135, + 0x00010136, + 0x00010136, + 0x00010137, + 0x00010137, + 0x00010138, + 0x00010138, + }, + { + 0x00010139, + 0x00010139, + 0x0001013a, + 0x0001013a, + 0x0001013b, + 0x0001013b, + 0x0001013c, + 0x0001013c, + 0x0001013d, + 0x0001013d, + 0x0001013e, + 0x0001013e, + 0x0001013f, + 0x0001013f, + 0x00010140, + 0x00010140, + }, + { + 0x00010141, + 0x00010141, + 0x00010142, + 0x00010142, + 0x00010143, + 0x00010143, + 0x00010147, + 0x00010147, + 0x00010148, + 0x00010148, + 0x00010149, + 0x00010149, + 0x0001014a, + 0x0001014a, + 0x0001014b, + 0x0001014b, + }, + { + 0x0001014c, + 0x0001014c, + 0x0001014d, + 0x0001014d, + 0x0001014e, + 0x0001014e, + 0x0001014f, + 0x0001014f, + 0x00010150, + 0x00010150, + 0x00010151, + 0x00010151, + 0x00010152, + 0x00010152, + 0x00010153, + 0x00010153, + }, + { + 0x00010154, + 0x00010154, + 0x00010155, + 0x00010155, + 0x00010156, + 0x00010156, + 0x00010157, + 0x00010157, + 0x00010158, + 0x00010158, + 0x00010159, + 0x00010159, + 0x0001015a, + 0x0001015a, + 0x0001015b, + 0x0001015b, + }, + { + 0x0001015c, + 0x0001015c, + 0x0001015d, + 0x0001015d, + 0x0001015e, + 0x0001015e, + 0x0001015f, + 0x0001015f, + 0x00010160, + 0x00010160, + 0x00010161, + 0x00010161, + 0x00010162, + 0x00010162, + 0x00010163, + 0x00010163, + }, + { + 0x00010165, + 0x00010165, + 0x00010166, + 0x00010166, + 0x00010167, + 0x00010167, + 0x00010168, + 0x00010168, + 0x00010169, + 0x00010169, + 0x0001016a, + 0x0001016a, + 0x0001016b, + 0x0001016b, + 0x0001016c, + 0x0001016c, + }, + { + 0x0001016d, + 0x0001016d, + 0x0001016e, + 0x0001016e, + 0x0001016f, + 0x0001016f, + 0x00010170, + 0x00010170, + 0x00010171, + 0x00010171, + 0x00010172, + 0x00010172, + 0x00010173, + 0x00010173, + 0x00010174, + 0x00010174, + }, + { + 0x00010175, + 0x00010175, + 0x00010176, + 0x00010176, + 0x00010177, + 0x00010177, + 0x00010178, + 0x00010178, + 0x00010179, + 0x00010179, + 0x0001017a, + 0x0001017a, + 0x0001017b, + 0x0001017b, + 0x0001017c, + 0x0001017c, + }, + { + 0x0001017d, + 0x0001017d, + 0x0001017e, + 0x0001017e, + 0x0001017f, + 0x0001017f, + 0x00010180, + 0x00010180, + 0x00010181, + 0x00010181, + 0x00010182, + 0x00010182, + 0x00010183, + 0x00010183, + 0x00010184, + 0x00010184, + }, + { + 0x0046ffff, + 0x0047ffff, + 0x0048ffff, + 0x0049ffff, + 0x004affff, + 0x004bffff, + 0x004cffff, + 0x004dffff, + 0x004effff, + 0x004fffff, + 0x0050ffff, + 0x0051ffff, + 0x0052ffff, + 0x0053ffff, + 0x0054ffff, + 0x0055ffff, + }, + { + 0x00010185, + 0x00010185, + 0x00010186, + 0x00010186, + 0x00010187, + 0x00010187, + 0x00010188, + 0x00010188, + 0x00010189, + 0x00010189, + 0x0001018a, + 0x0001018a, + 0x0001018b, + 0x0001018b, + 0x0001018c, + 0x0001018c, + }, + { + 0x0001018d, + 0x0001018d, + 0x0001018e, + 0x0001018e, + 0x0001018f, + 0x0001018f, + 0x00010190, + 0x00010190, + 0x00010191, + 0x00010191, + 0x00010192, + 0x00010192, + 0x00010193, + 0x00010193, + 0x00010194, + 0x00010194, + }, + { + 0x00010195, + 0x00010195, + 0x00010196, + 0x00010196, + 0x00010197, + 0x00010197, + 0x00010198, + 0x00010198, + 0x00010199, + 0x00010199, + 0x0001019a, + 0x0001019a, + 0x0001019b, + 0x0001019b, + 0x0001019c, + 0x0001019c, + }, + { + 0x0001019d, + 0x0001019d, + 0x0001019e, + 0x0001019e, + 0x0001019f, + 0x0001019f, + 0x000101a0, + 0x000101a0, + 0x000101a1, + 0x000101a1, + 0x000101a2, + 0x000101a2, + 0x000101a3, + 0x000101a3, + 0x000101a4, + 0x000101a4, + }, + { + 0x000101a5, + 0x000101a5, + 0x000101a6, + 0x000101a6, + 0x000101a7, + 0x000101a7, + 0x000101a8, + 0x000101a8, + 0x000101a9, + 0x000101a9, + 0x000101aa, + 0x000101aa, + 0x000101ab, + 0x000101ab, + 0x000101ac, + 0x000101ac, + }, + { + 0x000101ad, + 0x000101ad, + 0x000101ae, + 0x000101ae, + 0x000101af, + 0x000101af, + 0x000101b0, + 0x000101b0, + 0x000101b1, + 0x000101b1, + 0x000101b2, + 0x000101b2, + 0x000101b3, + 0x000101b3, + 0x000101b4, + 0x000101b4, + }, + { + 0x000101b5, + 0x000101b5, + 0x000101b6, + 0x000101b6, + 0x000101b7, + 0x000101b7, + 0x000101b8, + 0x000101b8, + 0x000101b9, + 0x000101b9, + 0x000101ba, + 0x000101ba, + 0x000101bb, + 0x000101bb, + 0x000101bc, + 0x000101bc, + }, + { + 0x000101bd, + 0x000101bd, + 0x000101be, + 0x000101be, + 0x000101bf, + 0x000101bf, + 0x000101c0, + 0x000101c0, + 0x000101c1, + 0x000101c1, + 0x000101c2, + 0x000101c2, + 0x000101c3, + 0x000101c3, + 0x000101c4, + 0x000101c4, + }, + { + 0x000101c5, + 0x000101c5, + 0x000101c6, + 0x000101c6, + 0x000101c7, + 0x000101c7, + 0x000101c8, + 0x000101c8, + 0x000101c9, + 0x000101c9, + 0x000101ca, + 0x000101ca, + 0x000101cb, + 0x000101cb, + 0x000101cc, + 0x000101cc, + }, + { + 0x000101cd, + 0x000101cd, + 0x000101ce, + 0x000101ce, + 0x000101cf, + 0x000101cf, + 0x000101d0, + 0x000101d0, + 0x000101d1, + 0x000101d1, + 0x000101d2, + 0x000101d2, + 0x000101d3, + 0x000101d3, + 0x000101d4, + 0x000101d4, + }, + { + 0x000101d5, + 0x000101d5, + 0x000101d6, + 0x000101d6, + 0x000101d7, + 0x000101d7, + 0x000101d8, + 0x000101d8, + 0x000101d9, + 0x000101d9, + 0x000101da, + 0x000101da, + 0x000101db, + 0x000101db, + 0x000101dc, + 0x000101dc, + }, + { + 0x000101dd, + 0x000101dd, + 0x000101de, + 0x000101de, + 0x000101df, + 0x000101df, + 0x000101e0, + 0x000101e0, + 0x000101e1, + 0x000101e1, + 0x000101e2, + 0x000101e2, + 0x000101e3, + 0x000101e3, + 0x000101e4, + 0x000101e4, + }, + { + 0x000101e5, + 0x000101e5, + 0x000101e6, + 0x000101e6, + 0x000101e7, + 0x000101e7, + 0x000101e8, + 0x000101e8, + 0x000101e9, + 0x000101e9, + 0x000101ea, + 0x000101ea, + 0x000101eb, + 0x000101eb, + 0x000101ec, + 0x000101ec, + }, + { + 0x000101ed, + 0x000101ed, + 0x000101ee, + 0x000101ee, + 0x000101ef, + 0x000101ef, + 0x000101f0, + 0x000101f0, + 0x000101f1, + 0x000101f1, + 0x000101f2, + 0x000101f2, + 0x000101f3, + 0x000101f3, + 0x000101f4, + 0x000101f4, + }, + { + 0x000101f5, + 0x000101f5, + 0x000101f6, + 0x000101f6, + 0x000101f7, + 0x000101f7, + 0x000101f8, + 0x000101f8, + 0x000101f9, + 0x000101f9, + 0x000101fa, + 0x000101fa, + 0x000101fb, + 0x000101fb, + 0x000101fc, + 0x000101fc, + }, + { + 0x000101fd, + 0x000101fd, + 0x000101fe, + 0x000101fe, + 0x000101ff, + 0x000101ff, + 0x00010200, + 0x00010200, + 0x00010201, + 0x00010201, + 0x00010202, + 0x00010202, + 0x00010203, + 0x00010203, + 0x00010204, + 0x00010204, + }, + { + 0x0057ffff, + 0x0058ffff, + 0x0059ffff, + 0x005affff, + 0x005bffff, + 0x005cffff, + 0x005dffff, + 0x005effff, + 0x005fffff, + 0x0060ffff, + 0x0061ffff, + 0x0062ffff, + 0x0063ffff, + 0x0064ffff, + 0x0065ffff, + 0x0066ffff, + }, + { + 0x00010205, + 0x00010205, + 0x00010206, + 0x00010206, + 0x00010207, + 0x00010207, + 0x00010208, + 0x00010208, + 0x00010209, + 0x00010209, + 0x0001020a, + 0x0001020a, + 0x0001020b, + 0x0001020b, + 0x0001020c, + 0x0001020c, + }, + { + 0x0001020d, + 0x0001020d, + 0x0001020e, + 0x0001020e, + 0x0001020f, + 0x0001020f, + 0x00010210, + 0x00010210, + 0x00010211, + 0x00010211, + 0x00010212, + 0x00010212, + 0x00010213, + 0x00010213, + 0x00010214, + 0x00010214, + }, + { + 0x00010215, + 0x00010215, + 0x00010216, + 0x00010216, + 0x00010217, + 0x00010217, + 0x00010218, + 0x00010218, + 0x00010219, + 0x00010219, + 0x0001021a, + 0x0001021a, + 0x0001021b, + 0x0001021b, + 0x0001021c, + 0x0001021c, + }, + { + 0x0001021d, + 0x0001021d, + 0x0001021e, + 0x0001021e, + 0x0001021f, + 0x0001021f, + 0x00010220, + 0x00010220, + 0x00010221, + 0x00010221, + 0x00010222, + 0x00010222, + 0x00010223, + 0x00010223, + 0x00010224, + 0x00010224, + }, + { + 0x00010225, + 0x00010225, + 0x00010226, + 0x00010226, + 0x00010227, + 0x00010227, + 0x00010228, + 0x00010228, + 0x00010229, + 0x00010229, + 0x0001022a, + 0x0001022a, + 0x0001022b, + 0x0001022b, + 0x0001022c, + 0x0001022c, + }, + { + 0x0001022d, + 0x0001022d, + 0x0001022e, + 0x0001022e, + 0x0001022f, + 0x0001022f, + 0x00010230, + 0x00010230, + 0x00010231, + 0x00010231, + 0x00010232, + 0x00010232, + 0x00010233, + 0x00010233, + 0x00010234, + 0x00010234, + }, + { + 0x00010235, + 0x00010235, + 0x00010236, + 0x00010236, + 0x00010237, + 0x00010237, + 0x00010238, + 0x00010238, + 0x00010239, + 0x00010239, + 0x0001023a, + 0x0001023a, + 0x0001023b, + 0x0001023b, + 0x0001023c, + 0x0001023c, + }, + { + 0x0001023d, + 0x0001023d, + 0x0001023e, + 0x0001023e, + 0x0001023f, + 0x0001023f, + 0x00010240, + 0x00010240, + 0x00010241, + 0x00010241, + 0x00010242, + 0x00010242, + 0x00010243, + 0x00010243, + 0x00010244, + 0x00010244, + }, + { + 0x00010245, + 0x00010245, + 0x00010246, + 0x00010246, + 0x00010247, + 0x00010247, + 0x00010248, + 0x00010248, + 0x00010249, + 0x00010249, + 0x0001024a, + 0x0001024a, + 0x0001024b, + 0x0001024b, + 0x0001024c, + 0x0001024c, + }, + { + 0x0001024d, + 0x0001024d, + 0x0001024e, + 0x0001024e, + 0x0001024f, + 0x0001024f, + 0x00010250, + 0x00010250, + 0x00010251, + 0x00010251, + 0x00010252, + 0x00010252, + 0x00010253, + 0x00010253, + 0x00010254, + 0x00010254, + }, + { + 0x00010255, + 0x00010255, + 0x00010256, + 0x00010256, + 0x00010257, + 0x00010257, + 0x00010258, + 0x00010258, + 0x00010259, + 0x00010259, + 0x0001025a, + 0x0001025a, + 0x0001025b, + 0x0001025b, + 0x0001025c, + 0x0001025c, + }, + { + 0x0001025d, + 0x0001025d, + 0x0001025e, + 0x0001025e, + 0x0001025f, + 0x0001025f, + 0x00010260, + 0x00010260, + 0x00010261, + 0x00010261, + 0x00010262, + 0x00010262, + 0x00010263, + 0x00010263, + 0x00010264, + 0x00010264, + }, + { + 0x00010265, + 0x00010265, + 0x00010266, + 0x00010266, + 0x00010267, + 0x00010267, + 0x00010268, + 0x00010268, + 0x00010269, + 0x00010269, + 0x0001026a, + 0x0001026a, + 0x0001026b, + 0x0001026b, + 0x0001026c, + 0x0001026c, + }, + { + 0x0001026d, + 0x0001026d, + 0x0001026e, + 0x0001026e, + 0x0001026f, + 0x0001026f, + 0x00010270, + 0x00010270, + 0x00010271, + 0x00010271, + 0x00010272, + 0x00010272, + 0x00010273, + 0x00010273, + 0x00010274, + 0x00010274, + }, + { + 0x00010275, + 0x00010275, + 0x00010276, + 0x00010276, + 0x00010277, + 0x00010277, + 0x00010278, + 0x00010278, + 0x00010279, + 0x00010279, + 0x0001027a, + 0x0001027a, + 0x0001027b, + 0x0001027b, + 0x0001027c, + 0x0001027c, + }, + { + 0x0001027d, + 0x0001027d, + 0x0001027e, + 0x0001027e, + 0x0001027f, + 0x0001027f, + 0x00010280, + 0x00010280, + 0x00010281, + 0x00010281, + 0x00010282, + 0x00010282, + 0x00010283, + 0x00010283, + 0x00010284, + 0x00010284, + }, + { + 0x00010285, + 0x00010285, + 0x00010286, + 0x00010286, + 0x00010287, + 0x00010287, + 0x00010288, + 0x00010288, + 0x00010289, + 0x00010289, + 0x0001028a, + 0x0001028a, + 0x0001028b, + 0x0001028b, + 0x0001028c, + 0x0001028c, + }, + { + 0x0001028d, + 0x0001028d, + 0x0001028e, + 0x0001028e, + 0x0001028f, + 0x0001028f, + 0x00010290, + 0x00010290, + 0x00010291, + 0x00010291, + 0x00010292, + 0x00010292, + 0x00010293, + 0x00010293, + 0x00010294, + 0x00010294, + }, + { + 0x00010295, + 0x00010295, + 0x00010296, + 0x00010296, + 0x00010297, + 0x00010297, + 0x00010298, + 0x00010298, + 0x00010299, + 0x00010299, + 0x0001029a, + 0x0001029a, + 0x0001029b, + 0x0001029b, + 0x0001029c, + 0x0001029c, + }, + { + 0x0001029d, + 0x0001029d, + 0x0001029e, + 0x0001029e, + 0x0001029f, + 0x0001029f, + 0x000102a0, + 0x000102a0, + 0x000102a1, + 0x000102a1, + 0x000102a2, + 0x000102a2, + 0x000102a3, + 0x000102a3, + 0x000102a4, + 0x000102a4, + }, + { + 0x000102a5, + 0x000102a5, + 0x000102a6, + 0x000102a6, + 0x000102a7, + 0x000102a7, + 0x000102a8, + 0x000102a8, + 0x000102a9, + 0x000102a9, + 0x000102aa, + 0x000102aa, + 0x000102ab, + 0x000102ab, + 0x000102ac, + 0x000102ac, + }, + { + 0x000102ad, + 0x000102ad, + 0x000102ae, + 0x000102ae, + 0x000102af, + 0x000102af, + 0x000102b0, + 0x000102b0, + 0x000102b1, + 0x000102b1, + 0x000102b2, + 0x000102b2, + 0x000102b3, + 0x000102b3, + 0x000102b4, + 0x000102b4, + }, + { + 0x000102b5, + 0x000102b5, + 0x000102b6, + 0x000102b6, + 0x000102b7, + 0x000102b7, + 0x000102b8, + 0x000102b8, + 0x000102b9, + 0x000102b9, + 0x000102ba, + 0x000102ba, + 0x000102bb, + 0x000102bb, + 0x000102bc, + 0x000102bc, + }, + { + 0x000102bd, + 0x000102bd, + 0x000102be, + 0x000102be, + 0x000102bf, + 0x000102bf, + 0x000102c0, + 0x000102c0, + 0x000102c1, + 0x000102c1, + 0x000102c2, + 0x000102c2, + 0x000102c3, + 0x000102c3, + 0x000102c4, + 0x000102c4, + }, + { + 0x000102c5, + 0x000102c5, + 0x000102c6, + 0x000102c6, + 0x000102c7, + 0x000102c7, + 0x000102c8, + 0x000102c8, + 0x000102c9, + 0x000102c9, + 0x000102ca, + 0x000102ca, + 0x000102cb, + 0x000102cb, + 0x000102cc, + 0x000102cc, + }, + { + 0x000102cd, + 0x000102cd, + 0x000102ce, + 0x000102ce, + 0x000102cf, + 0x000102cf, + 0x000102d0, + 0x000102d0, + 0x000102d1, + 0x000102d1, + 0x000102d2, + 0x000102d2, + 0x000102d3, + 0x000102d3, + 0x000102d4, + 0x000102d4, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc50[28][2] = +#else +const uint16_t c_aauiLCLDHuffEnc50[28][2] = +#endif + { + { 0x0002, 0x0001 }, + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0001 }, + { 0x0004, 0x0001 }, + { 0x0005, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000f, 0x0001 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec50[6][16] = { + { + 0x0001ffff, + 0x00000004, + 0x00010003, + 0x00010003, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + }, + { + 0x0002ffff, + 0x00000008, + 0x00010007, + 0x00010007, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00020006, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x0003ffff, + 0x0000000c, + 0x0001000b, + 0x0001000b, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0005ffff, + 0x0004ffff, + 0x0001000f, + 0x0001000f, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + 0x00030010, + }, + { + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc51[29][2] = +#else +const uint16_t c_aauiLCLDHuffEnc51[29][2] = +#endif + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0001 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000d, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec51[6][16] = { + { + 0x0001ffff, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x0002ffff, + 0x0000000a, + 0x00010009, + 0x00010009, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x0003ffff, + 0x0000000e, + 0x0001000d, + 0x0001000d, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x0004ffff, + 0x0005ffff, + 0x00000011, + 0x00000012, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + 0x0003000f, + }, + { + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + }, + { + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc52[32][2] = +#else +const uint16_t c_aauiLCLDHuffEnc52[32][2] = +#endif + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0001 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0001 }, + { 0x0007, 0x0001 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000a, 0x0001 }, + { 0x000b, 0x0001 }, + { 0x000c, 0x0001 }, + { 0x000e, 0x0001 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0001 }, + { 0x0011, 0x0002 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0003 }, + { 0x0014, 0x0000 }, + { 0x0013, 0x0003 }, + { 0x0014, 0x0001 }, + { 0x0014, 0x0002 }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec52[7][16] = { + { + 0x0001ffff, + 0x0002ffff, + 0x00000004, + 0x00000005, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x0003ffff, + 0x0000000b, + 0x0001000a, + 0x0001000a, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x0004ffff, + 0x0000000f, + 0x0001000e, + 0x0001000e, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x00010013, + 0x00010013, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + }, + { + 0x00000017, + 0x00000019, + 0x0000001a, + 0x0000001b, + 0x0000001c, + 0x0000001d, + 0x00010018, + 0x00010018, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc53[37][2] = +#else +const uint16_t c_aauiLCLDHuffEnc53[37][2] = +#endif + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0002 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0002 }, + { 0x0005, 0x0003 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0007, 0x0001 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x0009, 0x0001 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0011, 0x0004 }, + { 0x0010, 0x0003 }, + { 0x0011, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec53[9][16] = { + { + 0x0002ffff, + 0x0001ffff, + 0x00000004, + 0x00000005, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x0003ffff, + 0x0000000d, + 0x0001000a, + 0x0001000a, + 0x0001000b, + 0x0001000b, + 0x0001000c, + 0x0001000c, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + }, + { + 0x0005ffff, + 0x0004ffff, + 0x00000011, + 0x00000012, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + 0x0003000e, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x0007ffff, + 0x0008ffff, + 0x0006ffff, + 0x0000001a, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, + { + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + }, + { + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + }, + { + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc54[39][2] = +#else +const uint16_t c_aauiLCLDHuffEnc54[39][2] = +#endif + { + { 0x0002, 0x0002 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0002 }, + { 0x0003, 0x0003 }, + { 0x0004, 0x0003 }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0002 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0008, 0x0001 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0002 }, + { 0x000f, 0x0003 }, + { 0x0011, 0x0002 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec54[9][16] = { + { + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000004, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020000, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x0004ffff, + 0x0000000e, + 0x0000000f, + 0x00000010, + 0x0001000c, + 0x0001000c, + 0x0001000d, + 0x0001000d, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x00000015, + 0x00000016, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + }, + { + 0x0008ffff, + 0x0007ffff, + 0x0000001e, + 0x0000001f, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x00020019, + 0x00020019, + 0x00020019, + 0x00020019, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + 0x00030020, + }, + { + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00010025, + 0x00010025, + 0x00010026, + 0x00010026, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc55[46][2] = +#else +const uint16_t c_aauiLCLDHuffEnc55[46][2] = +#endif + { + { 0x0003, 0x0003 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0003 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0002 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0002 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0002 }, + { 0x000c, 0x0003 }, + { 0x000d, 0x0002 }, + { 0x000d, 0x0003 }, + { 0x000e, 0x0002 }, + { 0x000e, 0x0003 }, + { 0x000f, 0x0003 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec55[10][16] = { + { + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00010000, + 0x00010000, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0005ffff, + 0x0004ffff, + 0x00000011, + 0x00000012, + 0x0001000d, + 0x0001000d, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + }, + { + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030013, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + 0x00030014, + }, + { + 0x0007ffff, + 0x0006ffff, + 0x00000019, + 0x0000001a, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, + { + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001b, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0009ffff, + 0x0008ffff, + 0x00000020, + 0x00000021, + 0x00000022, + 0x00000023, + 0x0001001f, + 0x0001001f, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001d, + 0x0002001e, + 0x0002001e, + 0x0002001e, + 0x0002001e, + }, + { + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x0001002d, + 0x0001002d, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc56[55][2] = +#else +const uint16_t c_aauiLCLDHuffEnc56[55][2] = +#endif + { + { 0x0003, 0x0003 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0004 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0005, 0x0003 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0003 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0008, 0x0002 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0002 }, + { 0x0009, 0x0003 }, + { 0x000a, 0x0002 }, + { 0x000a, 0x0003 }, + { 0x000b, 0x0003 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0002 }, + { 0x0010, 0x0003 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0000 }, + { 0x0011, 0x0003 }, + { 0x0012, 0x0005 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec56[12][16] = { + { + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x00000004, + 0x00000005, + 0x00010000, + 0x00010000, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0006ffff, + 0x0005ffff, + 0x00000011, + 0x00000012, + 0x00000013, + 0x00000014, + 0x0001000e, + 0x0001000e, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030015, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + 0x00030016, + }, + { + 0x0009ffff, + 0x0007ffff, + 0x0008ffff, + 0x0000001a, + 0x0000001b, + 0x0000001c, + 0x00010019, + 0x00010019, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020017, + 0x00020018, + 0x00020018, + 0x00020018, + 0x00020018, + }, + { + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020022, + 0x00020022, + 0x00020022, + 0x00020022, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + }, + { + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + 0x0003001f, + }, + { + 0x000bffff, + 0x000affff, + 0x00000025, + 0x00000026, + 0x00000027, + 0x00000028, + 0x00000029, + 0x0000002a, + 0x00010023, + 0x00010023, + 0x00010024, + 0x00010024, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + }, + { + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + }, + { + 0x0001002b, + 0x0001002b, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010033, + 0x00010033, + 0x00010034, + 0x00010034, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc57[65][2] = +#else +const uint16_t c_aauiLCLDHuffEnc57[65][2] = +#endif + { + { 0x0003, 0x0004 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0004 }, + { 0x0004, 0x0005 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0005, 0x0004 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0007, 0x0003 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0003 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0003 }, + { 0x000c, 0x0004 }, + { 0x000d, 0x0003 }, + { 0x000c, 0x0005 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0003 }, + { 0x0010, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0010, 0x0004 }, + { 0x0010, 0x0005 }, + { 0x0013, 0x0000 }, + { 0x0011, 0x0005 }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0012, 0x0007 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec57[14][16] = { + { + 0x0004ffff, + 0x0003ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00010000, + 0x00010000, + 0x00010002, + 0x00010002, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + }, + { + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x00000014, + 0x00000015, + 0x00000016, + 0x0001000f, + 0x0001000f, + 0x00010010, + 0x00010010, + 0x00010011, + 0x00010011, + 0x00010012, + 0x00010012, + 0x00010013, + 0x00010013, + }, + { + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001b, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x0002001c, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + 0x00030017, + }, + { + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030018, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + 0x00030019, + }, + { + 0x000affff, + 0x0008ffff, + 0x0009ffff, + 0x00000020, + 0x00000021, + 0x00000023, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x0002001a, + 0x0002001a, + 0x0002001a, + 0x0002001a, + }, + { + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020027, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00020028, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + }, + { + 0x000dffff, + 0x000cffff, + 0x000bffff, + 0x0000002a, + 0x0000002d, + 0x0000002e, + 0x00010029, + 0x00010029, + 0x0001002b, + 0x0001002b, + 0x0001002c, + 0x0001002c, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + }, + { + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + }, + { + 0x0001003b, + 0x0001003b, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010040, + 0x00010040, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + }, + { + 0x0001002f, + 0x0001002f, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010034, + 0x00010034, + 0x00010035, + 0x00010035, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x0001003a, + 0x0001003a, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc58[77][2] = +#else +const uint16_t c_aauiLCLDHuffEnc58[77][2] = +#endif + { + { 0x0004, 0x0005 }, + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0005 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0006, 0x0004 }, + { 0x0006, 0x0005 }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0007, 0x0004 }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0009, 0x0003 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0003 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x000f, 0x0006 }, + { 0x0010, 0x0004 }, + { 0x000f, 0x0007 }, + { 0x0010, 0x0005 }, + { 0x0010, 0x0006 }, + { 0x0010, 0x0007 }, + { 0x0013, 0x0000 }, + { 0x0013, 0x0001 }, + { 0x0012, 0x0006 }, + { 0x0011, 0x0007 }, + { 0x0013, 0x0002 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0012, 0x0007 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec58[17][16] = { + { + 0x0005ffff, + 0x0004ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x00000000, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00000007, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + 0x00010003, + 0x00010003, + }, + { + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + }, + { + 0x0008ffff, + 0x0006ffff, + 0x0007ffff, + 0x00000017, + 0x00000018, + 0x00000019, + 0x0000001a, + 0x0000001b, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + }, + { + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020020, + 0x00020021, + 0x00020021, + 0x00020021, + 0x00020021, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + 0x0003001c, + }, + { + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001d, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + 0x0003001e, + }, + { + 0x000cffff, + 0x000bffff, + 0x0009ffff, + 0x000affff, + 0x00000024, + 0x00000025, + 0x00000026, + 0x00000027, + 0x00010022, + 0x00010022, + 0x00010023, + 0x00010023, + 0x0002001f, + 0x0002001f, + 0x0002001f, + 0x0002001f, + }, + { + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + }, + { + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002d, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + }, + { + 0x0010ffff, + 0x000effff, + 0x000fffff, + 0x000dffff, + 0x00000033, + 0x00000035, + 0x00000036, + 0x00000037, + 0x00010030, + 0x00010030, + 0x00010031, + 0x00010031, + 0x00010032, + 0x00010032, + 0x00010034, + 0x00010034, + }, + { + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + }, + { + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010046, + 0x00010046, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + }, + { + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020047, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020048, + 0x00020049, + 0x00020049, + 0x00020049, + 0x00020049, + 0x0002004a, + 0x0002004a, + 0x0002004a, + 0x0002004a, + }, + { + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x0001003c, + 0x0001003c, + 0x0001003d, + 0x0001003d, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc59[91][2] = +#else +const uint16_t c_aauiLCLDHuffEnc59[91][2] = +#endif + { + { 0x0003, 0x0005 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0006 }, + { 0x0004, 0x0007 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0006 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0006, 0x0006 }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0007, 0x0005 }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0008, 0x0003 }, + { 0x0008, 0x0004 }, + { 0x0008, 0x0005 }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000d, 0x0003 }, + { 0x000d, 0x0004 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000e, 0x0003 }, + { 0x000e, 0x0004 }, + { 0x000e, 0x0005 }, + { 0x000f, 0x0003 }, + { 0x000f, 0x0004 }, + { 0x000f, 0x0005 }, + { 0x0011, 0x0008 }, + { 0x0011, 0x0009 }, + { 0x0013, 0x0000 }, + { 0x0011, 0x000a }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0011, 0x000b }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0012, 0x000f }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec59[20][16] = { + { + 0x0006ffff, + 0x0004ffff, + 0x0005ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00000006, + 0x00010000, + 0x00010000, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + }, + { + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x0009ffff, + 0x0008ffff, + 0x0007ffff, + 0x0000001a, + 0x0000001b, + 0x0000001c, + 0x0000001d, + 0x0000001e, + 0x0000001f, + 0x00000020, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020023, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020024, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020025, + 0x00020026, + 0x00020026, + 0x00020026, + 0x00020026, + }, + { + 0x000dffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x0000002b, + 0x0000002c, + 0x0000002d, + 0x0000002e, + 0x00010027, + 0x00010027, + 0x00010028, + 0x00010028, + 0x00010029, + 0x00010029, + 0x0001002a, + 0x0001002a, + }, + { + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020035, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + }, + { + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, + { + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0010ffff, + 0x000effff, + 0x000fffff, + 0x00010037, + 0x00010037, + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020034, + }, + { + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + }, + { + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x0003003d, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + }, + { + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + }, + { + 0x0001003c, + 0x0001003c, + 0x0001003e, + 0x0001003e, + 0x0001003f, + 0x0001003f, + 0x00010042, + 0x00010042, + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010046, + 0x00010046, + 0x00010047, + 0x00010047, + }, + { + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + }, + { + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + 0x00010052, + 0x00010052, + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc60[109][2] = +#else +const uint16_t c_aauiLCLDHuffEnc60[109][2] = +#endif + { + { 0x0004, 0x0007 }, + { 0x0002, 0x0003 }, + { 0x0003, 0x0005 }, + { 0x0004, 0x0008 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x0007 }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0006, 0x0007 }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0007, 0x0006 }, + { 0x0007, 0x0007 }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0009, 0x0004 }, + { 0x0009, 0x0005 }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000b, 0x0004 }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0004 }, + { 0x000c, 0x0005 }, + { 0x000c, 0x0006 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000e, 0x0005 }, + { 0x000e, 0x0006 }, + { 0x000e, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x000f, 0x0005 }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0006 }, + { 0x0010, 0x0006 }, + { 0x000f, 0x0007 }, + { 0x000f, 0x0008 }, + { 0x000f, 0x0009 }, + { 0x0010, 0x0007 }, + { 0x0010, 0x0008 }, + { 0x0010, 0x0009 }, + { 0x0011, 0x000a }, + { 0x0013, 0x0000 }, + { 0x0011, 0x000b }, + { 0x0013, 0x0001 }, + { 0x0013, 0x0002 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0013, 0x0003 }, + { 0x0013, 0x0004 }, + { 0x0013, 0x0005 }, + { 0x0013, 0x0006 }, + { 0x0013, 0x0007 }, + { 0x0013, 0x0008 }, + { 0x0013, 0x0009 }, + { 0x0013, 0x000a }, + { 0x0013, 0x000b }, + { 0x0013, 0x000c }, + { 0x0013, 0x000d }, + { 0x0013, 0x000e }, + { 0x0013, 0x000f }, + { 0x0013, 0x0010 }, + { 0x0013, 0x0011 }, + { 0x0013, 0x0012 }, + { 0x0013, 0x0013 }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0012, 0x0013 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec60[24][16] = { + { + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x00000000, + 0x00000003, + 0x00000004, + 0x00010002, + 0x00010002, + 0x00020001, + 0x00020001, + 0x00020001, + 0x00020001, + }, + { + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + }, + { + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + }, + { + 0x000dffff, + 0x000cffff, + 0x0008ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x0000001b, + 0x0000001c, + 0x0000001d, + 0x0000001e, + 0x0000001f, + 0x00000020, + 0x00010013, + 0x00010013, + 0x00010014, + 0x00010014, + }, + { + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030021, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + 0x00030022, + }, + { + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030023, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + 0x00030024, + }, + { + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030025, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + 0x00030026, + }, + { + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030027, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + }, + { + 0x00020029, + 0x00020029, + 0x00020029, + 0x00020029, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002a, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002b, + 0x0002002c, + 0x0002002c, + 0x0002002c, + 0x0002002c, + }, + { + 0x0011ffff, + 0x0010ffff, + 0x000fffff, + 0x000effff, + 0x00000031, + 0x00000032, + 0x00000033, + 0x00000037, + 0x0001002d, + 0x0001002d, + 0x0001002e, + 0x0001002e, + 0x0001002f, + 0x0001002f, + 0x00010030, + 0x00010030, + }, + { + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + }, + { + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + }, + { + 0x00010041, + 0x00010041, + 0x00010042, + 0x00010042, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + }, + { + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0013ffff, + 0x0012ffff, + 0x0000003f, + 0x00000043, + 0x00000044, + 0x00000045, + 0x0001003c, + 0x0001003c, + 0x0001003e, + 0x0001003e, + 0x00010040, + 0x00010040, + }, + { + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030046, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + 0x00030048, + }, + { + 0x0001006a, + 0x0001006a, + 0x0001006b, + 0x0001006b, + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004b, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002004c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + }, + { + 0x00010047, + 0x00010047, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004d, + 0x0001004d, + 0x0001004e, + 0x0001004e, + 0x0001004f, + 0x0001004f, + 0x00010050, + 0x00010050, + 0x00010051, + 0x00010051, + }, + { + 0x00010052, + 0x00010052, + 0x00010053, + 0x00010053, + 0x00010054, + 0x00010054, + 0x00010055, + 0x00010055, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + 0x00010059, + 0x00010059, + }, + { + 0x0001005a, + 0x0001005a, + 0x0001005b, + 0x0001005b, + 0x0001005c, + 0x0001005c, + 0x0001005d, + 0x0001005d, + 0x0001005e, + 0x0001005e, + 0x0001005f, + 0x0001005f, + 0x00010060, + 0x00010060, + 0x00010061, + 0x00010061, + }, + { + 0x00010062, + 0x00010062, + 0x00010063, + 0x00010063, + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x00010069, + 0x00010069, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc61[129][2] = +#else +const uint16_t c_aauiLCLDHuffEnc61[129][2] = +#endif + { + { 0x0004, 0x0008 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x0009 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0005, 0x0008 }, + { 0x0005, 0x0009 }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0006, 0x0008 }, + { 0x0006, 0x0009 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0007, 0x0008 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0008, 0x0006 }, + { 0x0008, 0x0007 }, + { 0x0008, 0x0008 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0009, 0x0006 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000b, 0x0005 }, + { 0x000b, 0x0006 }, + { 0x000b, 0x0007 }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000c, 0x0006 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000d, 0x0005 }, + { 0x000d, 0x0006 }, + { 0x000d, 0x0007 }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000e, 0x0008 }, + { 0x000d, 0x000b }, + { 0x000e, 0x0009 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x0010, 0x000c }, + { 0x0011, 0x0015 }, + { 0x0010, 0x000d }, + { 0x000f, 0x000f }, + { 0x0010, 0x000e }, + { 0x0010, 0x000f }, + { 0x0012, 0x0000 }, + { 0x0011, 0x0016 }, + { 0x0010, 0x0010 }, + { 0x0010, 0x0011 }, + { 0x0011, 0x0017 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0012, 0x0010 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + { 0x0012, 0x0014 }, + { 0x0012, 0x0015 }, + { 0x0012, 0x0016 }, + { 0x0012, 0x0017 }, + { 0x0012, 0x0018 }, + { 0x0012, 0x0019 }, + { 0x0012, 0x001a }, + { 0x0012, 0x001b }, + { 0x0012, 0x001c }, + { 0x0012, 0x001d }, + { 0x0012, 0x001e }, + { 0x0012, 0x001f }, + { 0x0012, 0x0020 }, + { 0x0012, 0x0021 }, + { 0x0012, 0x0022 }, + { 0x0012, 0x0023 }, + { 0x0012, 0x0024 }, + { 0x0012, 0x0025 }, + { 0x0012, 0x0026 }, + { 0x0012, 0x0027 }, + { 0x0012, 0x0028 }, + { 0x0012, 0x0029 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec61[33][16] = { + { + 0x0008ffff, + 0x0007ffff, + 0x0005ffff, + 0x0006ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x00000000, + 0x00000003, + 0x00000004, + 0x00000005, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + }, + { + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + }, + { + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + 0x0003000d, + }, + { + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + }, + { + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + }, + { + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + }, + { + 0x000effff, + 0x000cffff, + 0x000dffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x0000001e, + 0x0000001f, + 0x00000020, + 0x00000021, + 0x00000022, + 0x00000023, + 0x00000024, + 0x00000025, + 0x00000026, + 0x00000027, + }, + { + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030028, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + 0x00030029, + }, + { + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002a, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + }, + { + 0x00010038, + 0x00010038, + 0x00010039, + 0x00010039, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002e, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x0002002f, + 0x00020030, + 0x00020030, + 0x00020030, + 0x00020030, + }, + { + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020031, + 0x00020032, + 0x00020032, + 0x00020032, + 0x00020032, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020033, + 0x00020034, + 0x00020034, + 0x00020034, + 0x00020034, + }, + { + 0x0014ffff, + 0x0013ffff, + 0x000fffff, + 0x0010ffff, + 0x0011ffff, + 0x0012ffff, + 0x0000003a, + 0x0000003b, + 0x0000003c, + 0x0000003d, + 0x00010035, + 0x00010035, + 0x00010036, + 0x00010036, + 0x00010037, + 0x00010037, + }, + { + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020044, + 0x00020046, + 0x00020046, + 0x00020046, + 0x00020046, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + 0x0003003e, + }, + { + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x0003003f, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + 0x00030040, + }, + { + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030041, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + 0x00030042, + }, + { + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030043, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + 0x00030045, + }, + { + 0x00000055, + 0x00000056, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x0001004a, + 0x0001004a, + 0x0001004b, + 0x0001004b, + 0x0001004c, + 0x0001004c, + 0x00010050, + 0x00010050, + }, + { + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0016ffff, + 0x0015ffff, + 0x0000004d, + 0x0000004f, + 0x00000051, + 0x00000052, + }, + { + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + }, + { + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + }, + { + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020058, + 0x00020059, + 0x00020059, + 0x00020059, + 0x00020059, + 0x0002005a, + 0x0002005a, + 0x0002005a, + 0x0002005a, + }, + { + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005e, + }, + { + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + }, + { + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020064, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020066, + }, + { + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020068, + 0x00020068, + 0x00020068, + 0x00020068, + 0x00020069, + 0x00020069, + 0x00020069, + 0x00020069, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006a, + }, + { + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + }, + { + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020072, + }, + { + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + }, + { + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007a, + }, + { + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007e, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc62[153][2] = +#else +const uint16_t c_aauiLCLDHuffEnc62[153][2] = +#endif + { + { 0x0004, 0x0009 }, + { 0x0003, 0x0006 }, + { 0x0003, 0x0007 }, + { 0x0004, 0x000a }, + { 0x0004, 0x000b }, + { 0x0005, 0x000a }, + { 0x0005, 0x000b }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0005, 0x0010 }, + { 0x0005, 0x0011 }, + { 0x0006, 0x000a }, + { 0x0006, 0x000b }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0007, 0x0009 }, + { 0x0007, 0x000a }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0008, 0x0009 }, + { 0x0008, 0x000a }, + { 0x0008, 0x000b }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0009, 0x0007 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x000a, 0x0004 }, + { 0x000a, 0x0005 }, + { 0x000a, 0x0006 }, + { 0x000a, 0x0007 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000b, 0x0007 }, + { 0x000c, 0x0007 }, + { 0x000c, 0x0008 }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000d, 0x0007 }, + { 0x000c, 0x000d }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000e, 0x0008 }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000f, 0x000c }, + { 0x000e, 0x000d }, + { 0x000f, 0x000d }, + { 0x000f, 0x000e }, + { 0x000f, 0x000f }, + { 0x0010, 0x000f }, + { 0x0010, 0x0010 }, + { 0x0011, 0x0019 }, + { 0x0010, 0x0011 }, + { 0x0010, 0x0012 }, + { 0x0010, 0x0013 }, + { 0x0010, 0x0014 }, + { 0x0010, 0x0015 }, + { 0x0012, 0x0000 }, + { 0x0010, 0x0016 }, + { 0x0011, 0x001a }, + { 0x0010, 0x0017 }, + { 0x0012, 0x0001 }, + { 0x0012, 0x0002 }, + { 0x0012, 0x0003 }, + { 0x0011, 0x001b }, + { 0x0012, 0x0004 }, + { 0x0012, 0x0005 }, + { 0x0012, 0x0006 }, + { 0x0012, 0x0007 }, + { 0x0012, 0x0008 }, + { 0x0012, 0x0009 }, + { 0x0012, 0x000a }, + { 0x0012, 0x000b }, + { 0x0012, 0x000c }, + { 0x0012, 0x000d }, + { 0x0012, 0x000e }, + { 0x0012, 0x000f }, + { 0x0012, 0x0010 }, + { 0x0012, 0x0011 }, + { 0x0012, 0x0012 }, + { 0x0012, 0x0013 }, + { 0x0012, 0x0014 }, + { 0x0012, 0x0015 }, + { 0x0012, 0x0016 }, + { 0x0012, 0x0017 }, + { 0x0012, 0x0018 }, + { 0x0011, 0x001c }, + { 0x0012, 0x0019 }, + { 0x0012, 0x001a }, + { 0x0012, 0x001b }, + { 0x0012, 0x001c }, + { 0x0012, 0x001d }, + { 0x0012, 0x001e }, + { 0x0012, 0x001f }, + { 0x0012, 0x0020 }, + { 0x0012, 0x0021 }, + { 0x0012, 0x0022 }, + { 0x0012, 0x0023 }, + { 0x0012, 0x0024 }, + { 0x0012, 0x0025 }, + { 0x0012, 0x0026 }, + { 0x0012, 0x0027 }, + { 0x0012, 0x0028 }, + { 0x0012, 0x0029 }, + { 0x0012, 0x002a }, + { 0x0012, 0x002b }, + { 0x0012, 0x002c }, + { 0x0012, 0x002d }, + { 0x0012, 0x002e }, + { 0x0012, 0x002f }, + { 0x0012, 0x0030 }, + { 0x0012, 0x0031 }, + { 0x0011, 0x001d }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec62[41][16] = { + { + 0x0009ffff, + 0x0008ffff, + 0x0005ffff, + 0x0006ffff, + 0x0007ffff, + 0x0001ffff, + 0x0002ffff, + 0x0003ffff, + 0x0004ffff, + 0x00000000, + 0x00000003, + 0x00000004, + 0x00010001, + 0x00010001, + 0x00010002, + 0x00010002, + }, + { + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + }, + { + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + 0x00030008, + }, + { + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x00030009, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + 0x0003000a, + }, + { + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000b, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + 0x0003000c, + }, + { + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x00010020, + 0x00010020, + 0x00010021, + 0x00010021, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + }, + { + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + }, + { + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020014, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020015, + 0x00020016, + 0x00020016, + 0x00020016, + 0x00020016, + }, + { + 0x00000029, + 0x0000002a, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + }, + { + 0x0012ffff, + 0x0010ffff, + 0x0011ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x00000022, + 0x00000023, + 0x00000024, + 0x00000025, + 0x00000026, + 0x00000027, + 0x00000028, + }, + { + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + }, + { + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + }, + { + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + }, + { + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + }, + { + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + }, + { + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + }, + { + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020036, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020037, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020038, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003a, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003b, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + }, + { + 0x0019ffff, + 0x0018ffff, + 0x0017ffff, + 0x0013ffff, + 0x0014ffff, + 0x0015ffff, + 0x0016ffff, + 0x00000041, + 0x00000042, + 0x00000043, + 0x00000044, + 0x00000045, + 0x00000046, + 0x00000048, + 0x00010040, + 0x00010040, + }, + { + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020053, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00020055, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + 0x00030047, + }, + { + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x00030049, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + 0x0003004a, + }, + { + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004b, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + 0x0003004c, + }, + { + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004e, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + 0x0003004f, + }, + { + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x0002004d, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020050, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020051, + 0x00020052, + 0x00020052, + 0x00020052, + 0x00020052, + }, + { + 0x0000005a, + 0x0000005c, + 0x0000005d, + 0x0000005e, + 0x0000005f, + 0x00000060, + 0x00000062, + 0x00000064, + 0x00010054, + 0x00010054, + 0x00010056, + 0x00010056, + 0x00010057, + 0x00010057, + 0x00010058, + 0x00010058, + }, + { + 0x001dffff, + 0x001effff, + 0x001fffff, + 0x0020ffff, + 0x0021ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0025ffff, + 0x0026ffff, + 0x0027ffff, + 0x0028ffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x00000059, + }, + { + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020096, + 0x00020097, + 0x00020097, + 0x00020097, + 0x00020097, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + 0x0003005b, + }, + { + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030063, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + 0x00030068, + }, + { + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x0003007e, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + 0x00030098, + }, + { + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020065, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020066, + 0x00020067, + 0x00020067, + 0x00020067, + 0x00020067, + }, + { + 0x00020069, + 0x00020069, + 0x00020069, + 0x00020069, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006a, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006b, + 0x0002006c, + 0x0002006c, + 0x0002006c, + 0x0002006c, + }, + { + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006d, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006e, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x0002006f, + 0x00020070, + 0x00020070, + 0x00020070, + 0x00020070, + }, + { + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020071, + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020072, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020073, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + }, + { + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020075, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020076, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + }, + { + 0x00020079, + 0x00020079, + 0x00020079, + 0x00020079, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + }, + { + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007d, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x0002007f, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020081, + 0x00020081, + 0x00020081, + 0x00020081, + }, + { + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020082, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020083, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020084, + 0x00020085, + 0x00020085, + 0x00020085, + 0x00020085, + }, + { + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020086, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020087, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020088, + 0x00020089, + 0x00020089, + 0x00020089, + 0x00020089, + }, + { + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008a, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008b, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008c, + 0x0002008d, + 0x0002008d, + 0x0002008d, + 0x0002008d, + }, + { + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008e, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x0002008f, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020090, + 0x00020091, + 0x00020091, + 0x00020091, + 0x00020091, + }, + { + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020092, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020093, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020094, + 0x00020095, + 0x00020095, + 0x00020095, + 0x00020095, + }, +}; +#endif +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffEnc63[181][2] = +#else +const uint16_t c_aauiLCLDHuffEnc63[181][2] = +#endif + { + { 0x0004, 0x0008 }, + { 0x0003, 0x0005 }, + { 0x0002, 0x0003 }, + { 0x0004, 0x0009 }, + { 0x0005, 0x000c }, + { 0x0005, 0x000d }, + { 0x0005, 0x000e }, + { 0x0005, 0x000f }, + { 0x0006, 0x000c }, + { 0x0006, 0x000d }, + { 0x0006, 0x000e }, + { 0x0006, 0x000f }, + { 0x0006, 0x0010 }, + { 0x0006, 0x0011 }, + { 0x0006, 0x0012 }, + { 0x0006, 0x0013 }, + { 0x0006, 0x0014 }, + { 0x0006, 0x0015 }, + { 0x0006, 0x0016 }, + { 0x0006, 0x0017 }, + { 0x0007, 0x000b }, + { 0x0007, 0x000c }, + { 0x0007, 0x000d }, + { 0x0007, 0x000e }, + { 0x0007, 0x000f }, + { 0x0007, 0x0010 }, + { 0x0007, 0x0011 }, + { 0x0007, 0x0012 }, + { 0x0007, 0x0013 }, + { 0x0007, 0x0014 }, + { 0x0007, 0x0015 }, + { 0x0007, 0x0016 }, + { 0x0007, 0x0017 }, + { 0x0008, 0x000c }, + { 0x0008, 0x000d }, + { 0x0008, 0x000e }, + { 0x0008, 0x000f }, + { 0x0008, 0x0010 }, + { 0x0008, 0x0011 }, + { 0x0008, 0x0012 }, + { 0x0008, 0x0013 }, + { 0x0008, 0x0014 }, + { 0x0008, 0x0015 }, + { 0x0009, 0x0008 }, + { 0x0009, 0x0009 }, + { 0x0009, 0x000a }, + { 0x0009, 0x000b }, + { 0x0009, 0x000c }, + { 0x0009, 0x000d }, + { 0x0009, 0x000e }, + { 0x0009, 0x000f }, + { 0x0009, 0x0010 }, + { 0x0009, 0x0011 }, + { 0x0009, 0x0012 }, + { 0x0009, 0x0013 }, + { 0x0009, 0x0014 }, + { 0x0009, 0x0015 }, + { 0x000a, 0x0007 }, + { 0x0009, 0x0016 }, + { 0x0009, 0x0017 }, + { 0x000a, 0x0008 }, + { 0x000a, 0x0009 }, + { 0x000a, 0x000a }, + { 0x000a, 0x000b }, + { 0x000a, 0x000c }, + { 0x000a, 0x000d }, + { 0x000a, 0x000e }, + { 0x000b, 0x0008 }, + { 0x000b, 0x0009 }, + { 0x000b, 0x000a }, + { 0x000a, 0x000f }, + { 0x000b, 0x000b }, + { 0x000b, 0x000c }, + { 0x000b, 0x000d }, + { 0x000c, 0x0009 }, + { 0x000c, 0x000a }, + { 0x000c, 0x000b }, + { 0x000c, 0x000c }, + { 0x000c, 0x000d }, + { 0x000c, 0x000e }, + { 0x000c, 0x000f }, + { 0x000d, 0x0008 }, + { 0x000d, 0x0009 }, + { 0x000d, 0x000a }, + { 0x000d, 0x000b }, + { 0x000d, 0x000c }, + { 0x000d, 0x000d }, + { 0x000d, 0x000e }, + { 0x000d, 0x000f }, + { 0x000d, 0x0010 }, + { 0x000d, 0x0011 }, + { 0x000e, 0x0007 }, + { 0x000e, 0x0008 }, + { 0x000e, 0x0009 }, + { 0x000e, 0x000a }, + { 0x000e, 0x000b }, + { 0x000e, 0x000c }, + { 0x000e, 0x000d }, + { 0x000e, 0x000e }, + { 0x000e, 0x000f }, + { 0x000f, 0x0008 }, + { 0x000f, 0x0009 }, + { 0x000f, 0x000a }, + { 0x000f, 0x000b }, + { 0x000f, 0x000c }, + { 0x0010, 0x0009 }, + { 0x0010, 0x000a }, + { 0x000f, 0x000d }, + { 0x0010, 0x000b }, + { 0x0010, 0x000c }, + { 0x0010, 0x000d }, + { 0x0011, 0x000e }, + { 0x0011, 0x000f }, + { 0x0010, 0x000e }, + { 0x0011, 0x0010 }, + { 0x0011, 0x0011 }, + { 0x0012, 0x0014 }, + { 0x0014, 0x0000 }, + { 0x0010, 0x000f }, + { 0x0012, 0x0015 }, + { 0x0012, 0x0016 }, + { 0x0014, 0x0001 }, + { 0x0012, 0x0017 }, + { 0x0012, 0x0018 }, + { 0x0012, 0x0019 }, + { 0x0013, 0x0010 }, + { 0x0012, 0x001a }, + { 0x0014, 0x0002 }, + { 0x0012, 0x001b }, + { 0x0014, 0x0003 }, + { 0x0014, 0x0004 }, + { 0x0014, 0x0005 }, + { 0x0013, 0x0011 }, + { 0x0014, 0x0006 }, + { 0x0013, 0x0012 }, + { 0x0014, 0x0007 }, + { 0x0014, 0x0008 }, + { 0x0014, 0x0009 }, + { 0x0014, 0x000a }, + { 0x0014, 0x000b }, + { 0x0014, 0x000c }, + { 0x0014, 0x000d }, + { 0x0014, 0x000e }, + { 0x0013, 0x0013 }, + { 0x0014, 0x000f }, + { 0x0014, 0x0010 }, + { 0x0014, 0x0011 }, + { 0x0014, 0x0012 }, + { 0x0014, 0x0013 }, + { 0x0014, 0x0014 }, + { 0x0014, 0x0015 }, + { 0x0014, 0x0016 }, + { 0x0014, 0x0017 }, + { 0x0014, 0x0018 }, + { 0x0014, 0x0019 }, + { 0x0014, 0x001a }, + { 0x0014, 0x001b }, + { 0x0014, 0x001c }, + { 0x0014, 0x001d }, + { 0x0014, 0x001e }, + { 0x0014, 0x001f }, + { 0x0013, 0x0014 }, + { 0x0013, 0x0015 }, + { 0x0013, 0x0016 }, + { 0x0013, 0x0017 }, + { 0x0013, 0x0018 }, + { 0x0013, 0x0019 }, + { 0x0013, 0x001a }, + { 0x0013, 0x001b }, + { 0x0013, 0x001c }, + { 0x0013, 0x001d }, + { 0x0013, 0x001e }, + { 0x0013, 0x001f }, + { 0x0013, 0x0020 }, + { 0x0013, 0x0021 }, + { 0x0013, 0x0022 }, + { 0x0013, 0x0023 }, + { 0x0013, 0x0024 }, + { 0x0013, 0x0025 }, + { 0x0013, 0x0026 }, + { 0x0013, 0x0027 }, + + }; +#ifndef ROM_TO_RAM +const uint32_t c_aauiLCLDHuffDec63[39][16] = { + { + 0x0008ffff, + 0x0006ffff, + 0x0007ffff, + 0x0003ffff, + 0x0004ffff, + 0x0005ffff, + 0x0001ffff, + 0x0002ffff, + 0x00000000, + 0x00000003, + 0x00010001, + 0x00010001, + 0x00020002, + 0x00020002, + 0x00020002, + 0x00020002, + }, + { + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030004, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + 0x00030005, + }, + { + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030006, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + 0x00030007, + }, + { + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020008, + 0x00020009, + 0x00020009, + 0x00020009, + 0x00020009, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000a, + 0x0002000b, + 0x0002000b, + 0x0002000b, + 0x0002000b, + }, + { + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000c, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000d, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000e, + 0x0002000f, + 0x0002000f, + 0x0002000f, + 0x0002000f, + }, + { + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020010, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020011, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020012, + 0x00020013, + 0x00020013, + 0x00020013, + 0x00020013, + }, + { + 0x00000025, + 0x00000026, + 0x00000027, + 0x00000028, + 0x00000029, + 0x0000002a, + 0x00010014, + 0x00010014, + 0x00010015, + 0x00010015, + 0x00010016, + 0x00010016, + 0x00010017, + 0x00010017, + 0x00010018, + 0x00010018, + }, + { + 0x00010019, + 0x00010019, + 0x0001001a, + 0x0001001a, + 0x0001001b, + 0x0001001b, + 0x0001001c, + 0x0001001c, + 0x0001001d, + 0x0001001d, + 0x0001001e, + 0x0001001e, + 0x0001001f, + 0x0001001f, + 0x00010020, + 0x00010020, + }, + { + 0x0014ffff, + 0x0011ffff, + 0x0012ffff, + 0x0013ffff, + 0x0009ffff, + 0x000affff, + 0x000bffff, + 0x000cffff, + 0x000dffff, + 0x000effff, + 0x000fffff, + 0x0010ffff, + 0x00000021, + 0x00000022, + 0x00000023, + 0x00000024, + }, + { + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002b, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + 0x0003002c, + }, + { + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002d, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + 0x0003002e, + }, + { + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x0003002f, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + 0x00030030, + }, + { + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030031, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + 0x00030032, + }, + { + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030033, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + 0x00030034, + }, + { + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030035, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + 0x00030036, + }, + { + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030037, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + 0x00030038, + }, + { + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003a, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + 0x0003003b, + }, + { + 0x00010043, + 0x00010043, + 0x00010044, + 0x00010044, + 0x00010045, + 0x00010045, + 0x00010047, + 0x00010047, + 0x00010048, + 0x00010048, + 0x00010049, + 0x00010049, + 0x00020039, + 0x00020039, + 0x00020039, + 0x00020039, + }, + { + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003c, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003d, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003e, + 0x0002003f, + 0x0002003f, + 0x0002003f, + 0x0002003f, + }, + { + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020040, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020041, + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020042, + 0x00020046, + 0x00020046, + 0x00020046, + 0x00020046, + }, + { + 0x001dffff, + 0x001affff, + 0x001bffff, + 0x001cffff, + 0x0015ffff, + 0x0016ffff, + 0x0017ffff, + 0x0018ffff, + 0x0019ffff, + 0x0000004a, + 0x0000004b, + 0x0000004c, + 0x0000004d, + 0x0000004e, + 0x0000004f, + 0x00000050, + }, + { + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030051, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + 0x00030052, + }, + { + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030053, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + 0x00030054, + }, + { + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030055, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + 0x00030056, + }, + { + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030057, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + 0x00030058, + }, + { + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x00030059, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + 0x0003005a, + }, + { + 0x00010064, + 0x00010064, + 0x00010065, + 0x00010065, + 0x00010066, + 0x00010066, + 0x00010067, + 0x00010067, + 0x00010068, + 0x00010068, + 0x0001006b, + 0x0001006b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + 0x0002005b, + }, + { + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005c, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005d, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005e, + 0x0002005f, + 0x0002005f, + 0x0002005f, + 0x0002005f, + }, + { + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020060, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020061, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020062, + 0x00020063, + 0x00020063, + 0x00020063, + 0x00020063, + }, + { + 0x0026ffff, + 0x0025ffff, + 0x0022ffff, + 0x0023ffff, + 0x0024ffff, + 0x0020ffff, + 0x0021ffff, + 0x001effff, + 0x001fffff, + 0x00000069, + 0x0000006a, + 0x0000006c, + 0x0000006d, + 0x0000006e, + 0x00000071, + 0x00000076, + }, + { + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x0003006f, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + 0x00030070, + }, + { + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030072, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + 0x00030073, + }, + { + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020074, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020077, + 0x00020078, + 0x00020078, + 0x00020078, + 0x00020078, + 0x0002007a, + 0x0002007a, + 0x0002007a, + 0x0002007a, + }, + { + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007b, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007c, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x0002007e, + 0x00020080, + 0x00020080, + 0x00020080, + 0x00020080, + }, + { + 0x0001007d, + 0x0001007d, + 0x00010084, + 0x00010084, + 0x00010086, + 0x00010086, + 0x0001008f, + 0x0001008f, + 0x000100a1, + 0x000100a1, + 0x000100a2, + 0x000100a2, + 0x000100a3, + 0x000100a3, + 0x000100a4, + 0x000100a4, + }, + { + 0x000100a5, + 0x000100a5, + 0x000100a6, + 0x000100a6, + 0x000100a7, + 0x000100a7, + 0x000100a8, + 0x000100a8, + 0x000100a9, + 0x000100a9, + 0x000100aa, + 0x000100aa, + 0x000100ab, + 0x000100ab, + 0x000100ac, + 0x000100ac, + }, + { + 0x000100ad, + 0x000100ad, + 0x000100ae, + 0x000100ae, + 0x000100af, + 0x000100af, + 0x000100b0, + 0x000100b0, + 0x000100b1, + 0x000100b1, + 0x000100b2, + 0x000100b2, + 0x000100b3, + 0x000100b3, + 0x000100b4, + 0x000100b4, + }, + { + 0x00000091, + 0x00000092, + 0x00000093, + 0x00000094, + 0x00000095, + 0x00000096, + 0x00000097, + 0x00000098, + 0x00000099, + 0x0000009a, + 0x0000009b, + 0x0000009c, + 0x0000009d, + 0x0000009e, + 0x0000009f, + 0x000000a0, + }, + { + 0x00000075, + 0x00000079, + 0x0000007f, + 0x00000081, + 0x00000082, + 0x00000083, + 0x00000085, + 0x00000087, + 0x00000088, + 0x00000089, + 0x0000008a, + 0x0000008b, + 0x0000008c, + 0x0000008d, + 0x0000008e, + 0x00000090, + }, +}; +#endif + +#ifndef ROM_TO_RAM +const uint32_t ( *c_apauiHuffEncTabels[2 * ALLOC_TABLE_SIZE] )[2] = +#else +const uint16_t ( *c_apauiHuffEncTabels[2 * ALLOC_TABLE_SIZE] )[2] = +#endif + { + NULL, + c_aauiLCLDHuffEnc1, + c_aauiLCLDHuffEnc2, + c_aauiLCLDHuffEnc3, + c_aauiLCLDHuffEnc4, + c_aauiLCLDHuffEnc5, + c_aauiLCLDHuffEnc6, + c_aauiLCLDHuffEnc7, + c_aauiLCLDHuffEnc8, + c_aauiLCLDHuffEnc9, + c_aauiLCLDHuffEnc10, + c_aauiLCLDHuffEnc11, + c_aauiLCLDHuffEnc12, + c_aauiLCLDHuffEnc13, + c_aauiLCLDHuffEnc14, + c_aauiLCLDHuffEnc15, + c_aauiLCLDHuffEnc16, + c_aauiLCLDHuffEnc17, + c_aauiLCLDHuffEnc18, + c_aauiLCLDHuffEnc19, + c_aauiLCLDHuffEnc20, + c_aauiLCLDHuffEnc21, + c_aauiLCLDHuffEnc22, + c_aauiLCLDHuffEnc23, + c_aauiLCLDHuffEnc24, + c_aauiLCLDHuffEnc25, + c_aauiLCLDHuffEnc26, + c_aauiLCLDHuffEnc27, + c_aauiLCLDHuffEnc28, + c_aauiLCLDHuffEnc29, + c_aauiLCLDHuffEnc30, + c_aauiLCLDHuffEnc31, + NULL, + c_aauiLCLDHuffEnc33, + c_aauiLCLDHuffEnc34, + c_aauiLCLDHuffEnc35, + c_aauiLCLDHuffEnc36, + c_aauiLCLDHuffEnc37, + c_aauiLCLDHuffEnc38, + c_aauiLCLDHuffEnc39, + c_aauiLCLDHuffEnc40, + c_aauiLCLDHuffEnc41, + c_aauiLCLDHuffEnc42, + c_aauiLCLDHuffEnc43, + c_aauiLCLDHuffEnc44, + c_aauiLCLDHuffEnc45, + c_aauiLCLDHuffEnc46, + c_aauiLCLDHuffEnc47, + c_aauiLCLDHuffEnc48, + c_aauiLCLDHuffEnc49, + c_aauiLCLDHuffEnc50, + c_aauiLCLDHuffEnc51, + c_aauiLCLDHuffEnc52, + c_aauiLCLDHuffEnc53, + c_aauiLCLDHuffEnc54, + c_aauiLCLDHuffEnc55, + c_aauiLCLDHuffEnc56, + c_aauiLCLDHuffEnc57, + c_aauiLCLDHuffEnc58, + c_aauiLCLDHuffEnc59, + c_aauiLCLDHuffEnc60, + c_aauiLCLDHuffEnc61, + c_aauiLCLDHuffEnc62, + c_aauiLCLDHuffEnc63, + }; +#ifndef ROM_TO_RAM +const uint32_t ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE] = { + NULL, + c_aauiLCLDHuffDec1, + c_aauiLCLDHuffDec2, + c_aauiLCLDHuffDec3, + c_aauiLCLDHuffDec4, + c_aauiLCLDHuffDec5, + c_aauiLCLDHuffDec6, + c_aauiLCLDHuffDec7, + c_aauiLCLDHuffDec8, + c_aauiLCLDHuffDec9, + c_aauiLCLDHuffDec10, + c_aauiLCLDHuffDec11, + c_aauiLCLDHuffDec12, + c_aauiLCLDHuffDec13, + c_aauiLCLDHuffDec14, + c_aauiLCLDHuffDec15, + c_aauiLCLDHuffDec16, + c_aauiLCLDHuffDec17, + c_aauiLCLDHuffDec18, + c_aauiLCLDHuffDec19, + c_aauiLCLDHuffDec20, + c_aauiLCLDHuffDec21, + c_aauiLCLDHuffDec22, + c_aauiLCLDHuffDec23, + c_aauiLCLDHuffDec24, + c_aauiLCLDHuffDec25, + c_aauiLCLDHuffDec26, + c_aauiLCLDHuffDec27, + c_aauiLCLDHuffDec28, + c_aauiLCLDHuffDec29, + c_aauiLCLDHuffDec30, + c_aauiLCLDHuffDec31, + NULL, + c_aauiLCLDHuffDec33, + c_aauiLCLDHuffDec34, + c_aauiLCLDHuffDec35, + c_aauiLCLDHuffDec36, + c_aauiLCLDHuffDec37, + c_aauiLCLDHuffDec38, + c_aauiLCLDHuffDec39, + c_aauiLCLDHuffDec40, + c_aauiLCLDHuffDec41, + c_aauiLCLDHuffDec42, + c_aauiLCLDHuffDec43, + c_aauiLCLDHuffDec44, + c_aauiLCLDHuffDec45, + c_aauiLCLDHuffDec46, + c_aauiLCLDHuffDec47, + c_aauiLCLDHuffDec48, + c_aauiLCLDHuffDec49, + c_aauiLCLDHuffDec50, + c_aauiLCLDHuffDec51, + c_aauiLCLDHuffDec52, + c_aauiLCLDHuffDec53, + c_aauiLCLDHuffDec54, + c_aauiLCLDHuffDec55, + c_aauiLCLDHuffDec56, + c_aauiLCLDHuffDec57, + c_aauiLCLDHuffDec58, + c_aauiLCLDHuffDec59, + c_aauiLCLDHuffDec60, + c_aauiLCLDHuffDec61, + c_aauiLCLDHuffDec62, + c_aauiLCLDHuffDec63, +}; +#else +const uint32_t num_row_aauiLCLDHuff[2 * ALLOC_TABLE_SIZE] = { 0, 16, 16, 25, 36, 36, 49, 64, 81, 100, + 169, 196, 289, 324, 400, 576, 729, 729, 28, 29, + 32, 37, 39, 46, 55, 65, 77, 91, 109, 129, + 153, 181, 0, 16, 16, 25, 36, 36, 49, 64, 81, + 100, 169, 196, 289, 324, 400, 576, 729, 729, 28, + 29, 32, 37, 39, 46, 55, 65, 77, 91, 109, + 129, 153, 181 }; +#endif +#ifdef USE_DEMOD_TABLES +const int32_t c_aaiHuffDemod1[16][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, +}; + +const int32_t c_aaiHuffDemod2[16][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, +}; + +const int32_t c_aaiHuffDemod3[25][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, +}; + +const int32_t c_aaiHuffDemod4[36][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, +}; + +const int32_t c_aaiHuffDemod5[36][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, +}; + +const int32_t c_aaiHuffDemod6[49][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, +}; + +const int32_t c_aaiHuffDemod7[64][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, +}; + +const int32_t c_aaiHuffDemod8[81][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, +}; + +const int32_t c_aaiHuffDemod9[100][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, +}; + +const int32_t c_aaiHuffDemod10[169][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, +}; + +const int32_t c_aaiHuffDemod11[196][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, +}; + +const int32_t c_aaiHuffDemod12[289][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, +}; + +const int32_t c_aaiHuffDemod13[324][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, +}; + +const int32_t c_aaiHuffDemod14[400][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, +}; + +const int32_t c_aaiHuffDemod15[576][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 0, + 20, + 0, + 21, + 0, + 22, + 0, + 23, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 1, + 20, + 1, + 21, + 1, + 22, + 1, + 23, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 2, + 20, + 2, + 21, + 2, + 22, + 2, + 23, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 3, + 20, + 3, + 21, + 3, + 22, + 3, + 23, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 4, + 20, + 4, + 21, + 4, + 22, + 4, + 23, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 5, + 20, + 5, + 21, + 5, + 22, + 5, + 23, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 6, + 20, + 6, + 21, + 6, + 22, + 6, + 23, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 7, + 20, + 7, + 21, + 7, + 22, + 7, + 23, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 8, + 20, + 8, + 21, + 8, + 22, + 8, + 23, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 9, + 20, + 9, + 21, + 9, + 22, + 9, + 23, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 10, + 20, + 10, + 21, + 10, + 22, + 10, + 23, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 11, + 20, + 11, + 21, + 11, + 22, + 11, + 23, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 12, + 20, + 12, + 21, + 12, + 22, + 12, + 23, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 13, + 20, + 13, + 21, + 13, + 22, + 13, + 23, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 14, + 20, + 14, + 21, + 14, + 22, + 14, + 23, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 15, + 20, + 15, + 21, + 15, + 22, + 15, + 23, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 16, + 20, + 16, + 21, + 16, + 22, + 16, + 23, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 17, + 20, + 17, + 21, + 17, + 22, + 17, + 23, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 18, + 20, + 18, + 21, + 18, + 22, + 18, + 23, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, + 19, + 20, + 19, + 21, + 19, + 22, + 19, + 23, + 20, + 0, + 20, + 1, + 20, + 2, + 20, + 3, + 20, + 4, + 20, + 5, + 20, + 6, + 20, + 7, + 20, + 8, + 20, + 9, + 20, + 10, + 20, + 11, + 20, + 12, + 20, + 13, + 20, + 14, + 20, + 15, + 20, + 16, + 20, + 17, + 20, + 18, + 20, + 19, + 20, + 20, + 20, + 21, + 20, + 22, + 20, + 23, + 21, + 0, + 21, + 1, + 21, + 2, + 21, + 3, + 21, + 4, + 21, + 5, + 21, + 6, + 21, + 7, + 21, + 8, + 21, + 9, + 21, + 10, + 21, + 11, + 21, + 12, + 21, + 13, + 21, + 14, + 21, + 15, + 21, + 16, + 21, + 17, + 21, + 18, + 21, + 19, + 21, + 20, + 21, + 21, + 21, + 22, + 21, + 23, + 22, + 0, + 22, + 1, + 22, + 2, + 22, + 3, + 22, + 4, + 22, + 5, + 22, + 6, + 22, + 7, + 22, + 8, + 22, + 9, + 22, + 10, + 22, + 11, + 22, + 12, + 22, + 13, + 22, + 14, + 22, + 15, + 22, + 16, + 22, + 17, + 22, + 18, + 22, + 19, + 22, + 20, + 22, + 21, + 22, + 22, + 22, + 23, + 23, + 0, + 23, + 1, + 23, + 2, + 23, + 3, + 23, + 4, + 23, + 5, + 23, + 6, + 23, + 7, + 23, + 8, + 23, + 9, + 23, + 10, + 23, + 11, + 23, + 12, + 23, + 13, + 23, + 14, + 23, + 15, + 23, + 16, + 23, + 17, + 23, + 18, + 23, + 19, + 23, + 20, + 23, + 21, + 23, + 22, + 23, + 23, +}; + +const int32_t c_aaiHuffDemod16[729][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 0, + 20, + 0, + 21, + 0, + 22, + 0, + 23, + 0, + 24, + 0, + 25, + 0, + 26, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 1, + 20, + 1, + 21, + 1, + 22, + 1, + 23, + 1, + 24, + 1, + 25, + 1, + 26, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 2, + 20, + 2, + 21, + 2, + 22, + 2, + 23, + 2, + 24, + 2, + 25, + 2, + 26, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 3, + 20, + 3, + 21, + 3, + 22, + 3, + 23, + 3, + 24, + 3, + 25, + 3, + 26, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 4, + 20, + 4, + 21, + 4, + 22, + 4, + 23, + 4, + 24, + 4, + 25, + 4, + 26, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 5, + 20, + 5, + 21, + 5, + 22, + 5, + 23, + 5, + 24, + 5, + 25, + 5, + 26, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 6, + 20, + 6, + 21, + 6, + 22, + 6, + 23, + 6, + 24, + 6, + 25, + 6, + 26, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 7, + 20, + 7, + 21, + 7, + 22, + 7, + 23, + 7, + 24, + 7, + 25, + 7, + 26, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 8, + 20, + 8, + 21, + 8, + 22, + 8, + 23, + 8, + 24, + 8, + 25, + 8, + 26, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 9, + 20, + 9, + 21, + 9, + 22, + 9, + 23, + 9, + 24, + 9, + 25, + 9, + 26, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 10, + 20, + 10, + 21, + 10, + 22, + 10, + 23, + 10, + 24, + 10, + 25, + 10, + 26, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 11, + 20, + 11, + 21, + 11, + 22, + 11, + 23, + 11, + 24, + 11, + 25, + 11, + 26, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 12, + 20, + 12, + 21, + 12, + 22, + 12, + 23, + 12, + 24, + 12, + 25, + 12, + 26, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 13, + 20, + 13, + 21, + 13, + 22, + 13, + 23, + 13, + 24, + 13, + 25, + 13, + 26, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 14, + 20, + 14, + 21, + 14, + 22, + 14, + 23, + 14, + 24, + 14, + 25, + 14, + 26, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 15, + 20, + 15, + 21, + 15, + 22, + 15, + 23, + 15, + 24, + 15, + 25, + 15, + 26, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 16, + 20, + 16, + 21, + 16, + 22, + 16, + 23, + 16, + 24, + 16, + 25, + 16, + 26, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 17, + 20, + 17, + 21, + 17, + 22, + 17, + 23, + 17, + 24, + 17, + 25, + 17, + 26, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 18, + 20, + 18, + 21, + 18, + 22, + 18, + 23, + 18, + 24, + 18, + 25, + 18, + 26, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, + 19, + 20, + 19, + 21, + 19, + 22, + 19, + 23, + 19, + 24, + 19, + 25, + 19, + 26, + 20, + 0, + 20, + 1, + 20, + 2, + 20, + 3, + 20, + 4, + 20, + 5, + 20, + 6, + 20, + 7, + 20, + 8, + 20, + 9, + 20, + 10, + 20, + 11, + 20, + 12, + 20, + 13, + 20, + 14, + 20, + 15, + 20, + 16, + 20, + 17, + 20, + 18, + 20, + 19, + 20, + 20, + 20, + 21, + 20, + 22, + 20, + 23, + 20, + 24, + 20, + 25, + 20, + 26, + 21, + 0, + 21, + 1, + 21, + 2, + 21, + 3, + 21, + 4, + 21, + 5, + 21, + 6, + 21, + 7, + 21, + 8, + 21, + 9, + 21, + 10, + 21, + 11, + 21, + 12, + 21, + 13, + 21, + 14, + 21, + 15, + 21, + 16, + 21, + 17, + 21, + 18, + 21, + 19, + 21, + 20, + 21, + 21, + 21, + 22, + 21, + 23, + 21, + 24, + 21, + 25, + 21, + 26, + 22, + 0, + 22, + 1, + 22, + 2, + 22, + 3, + 22, + 4, + 22, + 5, + 22, + 6, + 22, + 7, + 22, + 8, + 22, + 9, + 22, + 10, + 22, + 11, + 22, + 12, + 22, + 13, + 22, + 14, + 22, + 15, + 22, + 16, + 22, + 17, + 22, + 18, + 22, + 19, + 22, + 20, + 22, + 21, + 22, + 22, + 22, + 23, + 22, + 24, + 22, + 25, + 22, + 26, + 23, + 0, + 23, + 1, + 23, + 2, + 23, + 3, + 23, + 4, + 23, + 5, + 23, + 6, + 23, + 7, + 23, + 8, + 23, + 9, + 23, + 10, + 23, + 11, + 23, + 12, + 23, + 13, + 23, + 14, + 23, + 15, + 23, + 16, + 23, + 17, + 23, + 18, + 23, + 19, + 23, + 20, + 23, + 21, + 23, + 22, + 23, + 23, + 23, + 24, + 23, + 25, + 23, + 26, + 24, + 0, + 24, + 1, + 24, + 2, + 24, + 3, + 24, + 4, + 24, + 5, + 24, + 6, + 24, + 7, + 24, + 8, + 24, + 9, + 24, + 10, + 24, + 11, + 24, + 12, + 24, + 13, + 24, + 14, + 24, + 15, + 24, + 16, + 24, + 17, + 24, + 18, + 24, + 19, + 24, + 20, + 24, + 21, + 24, + 22, + 24, + 23, + 24, + 24, + 24, + 25, + 24, + 26, + 25, + 0, + 25, + 1, + 25, + 2, + 25, + 3, + 25, + 4, + 25, + 5, + 25, + 6, + 25, + 7, + 25, + 8, + 25, + 9, + 25, + 10, + 25, + 11, + 25, + 12, + 25, + 13, + 25, + 14, + 25, + 15, + 25, + 16, + 25, + 17, + 25, + 18, + 25, + 19, + 25, + 20, + 25, + 21, + 25, + 22, + 25, + 23, + 25, + 24, + 25, + 25, + 25, + 26, + 26, + 0, + 26, + 1, + 26, + 2, + 26, + 3, + 26, + 4, + 26, + 5, + 26, + 6, + 26, + 7, + 26, + 8, + 26, + 9, + 26, + 10, + 26, + 11, + 26, + 12, + 26, + 13, + 26, + 14, + 26, + 15, + 26, + 16, + 26, + 17, + 26, + 18, + 26, + 19, + 26, + 20, + 26, + 21, + 26, + 22, + 26, + 23, + 26, + 24, + 26, + 25, + 26, + 26, +}; + +const int32_t c_aaiHuffDemod17[729][2] = { + 0, + 0, + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 12, + 0, + 13, + 0, + 14, + 0, + 15, + 0, + 16, + 0, + 17, + 0, + 18, + 0, + 19, + 0, + 20, + 0, + 21, + 0, + 22, + 0, + 23, + 0, + 24, + 0, + 25, + 0, + 26, + 1, + 0, + 1, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 10, + 1, + 11, + 1, + 12, + 1, + 13, + 1, + 14, + 1, + 15, + 1, + 16, + 1, + 17, + 1, + 18, + 1, + 19, + 1, + 20, + 1, + 21, + 1, + 22, + 1, + 23, + 1, + 24, + 1, + 25, + 1, + 26, + 2, + 0, + 2, + 1, + 2, + 2, + 2, + 3, + 2, + 4, + 2, + 5, + 2, + 6, + 2, + 7, + 2, + 8, + 2, + 9, + 2, + 10, + 2, + 11, + 2, + 12, + 2, + 13, + 2, + 14, + 2, + 15, + 2, + 16, + 2, + 17, + 2, + 18, + 2, + 19, + 2, + 20, + 2, + 21, + 2, + 22, + 2, + 23, + 2, + 24, + 2, + 25, + 2, + 26, + 3, + 0, + 3, + 1, + 3, + 2, + 3, + 3, + 3, + 4, + 3, + 5, + 3, + 6, + 3, + 7, + 3, + 8, + 3, + 9, + 3, + 10, + 3, + 11, + 3, + 12, + 3, + 13, + 3, + 14, + 3, + 15, + 3, + 16, + 3, + 17, + 3, + 18, + 3, + 19, + 3, + 20, + 3, + 21, + 3, + 22, + 3, + 23, + 3, + 24, + 3, + 25, + 3, + 26, + 4, + 0, + 4, + 1, + 4, + 2, + 4, + 3, + 4, + 4, + 4, + 5, + 4, + 6, + 4, + 7, + 4, + 8, + 4, + 9, + 4, + 10, + 4, + 11, + 4, + 12, + 4, + 13, + 4, + 14, + 4, + 15, + 4, + 16, + 4, + 17, + 4, + 18, + 4, + 19, + 4, + 20, + 4, + 21, + 4, + 22, + 4, + 23, + 4, + 24, + 4, + 25, + 4, + 26, + 5, + 0, + 5, + 1, + 5, + 2, + 5, + 3, + 5, + 4, + 5, + 5, + 5, + 6, + 5, + 7, + 5, + 8, + 5, + 9, + 5, + 10, + 5, + 11, + 5, + 12, + 5, + 13, + 5, + 14, + 5, + 15, + 5, + 16, + 5, + 17, + 5, + 18, + 5, + 19, + 5, + 20, + 5, + 21, + 5, + 22, + 5, + 23, + 5, + 24, + 5, + 25, + 5, + 26, + 6, + 0, + 6, + 1, + 6, + 2, + 6, + 3, + 6, + 4, + 6, + 5, + 6, + 6, + 6, + 7, + 6, + 8, + 6, + 9, + 6, + 10, + 6, + 11, + 6, + 12, + 6, + 13, + 6, + 14, + 6, + 15, + 6, + 16, + 6, + 17, + 6, + 18, + 6, + 19, + 6, + 20, + 6, + 21, + 6, + 22, + 6, + 23, + 6, + 24, + 6, + 25, + 6, + 26, + 7, + 0, + 7, + 1, + 7, + 2, + 7, + 3, + 7, + 4, + 7, + 5, + 7, + 6, + 7, + 7, + 7, + 8, + 7, + 9, + 7, + 10, + 7, + 11, + 7, + 12, + 7, + 13, + 7, + 14, + 7, + 15, + 7, + 16, + 7, + 17, + 7, + 18, + 7, + 19, + 7, + 20, + 7, + 21, + 7, + 22, + 7, + 23, + 7, + 24, + 7, + 25, + 7, + 26, + 8, + 0, + 8, + 1, + 8, + 2, + 8, + 3, + 8, + 4, + 8, + 5, + 8, + 6, + 8, + 7, + 8, + 8, + 8, + 9, + 8, + 10, + 8, + 11, + 8, + 12, + 8, + 13, + 8, + 14, + 8, + 15, + 8, + 16, + 8, + 17, + 8, + 18, + 8, + 19, + 8, + 20, + 8, + 21, + 8, + 22, + 8, + 23, + 8, + 24, + 8, + 25, + 8, + 26, + 9, + 0, + 9, + 1, + 9, + 2, + 9, + 3, + 9, + 4, + 9, + 5, + 9, + 6, + 9, + 7, + 9, + 8, + 9, + 9, + 9, + 10, + 9, + 11, + 9, + 12, + 9, + 13, + 9, + 14, + 9, + 15, + 9, + 16, + 9, + 17, + 9, + 18, + 9, + 19, + 9, + 20, + 9, + 21, + 9, + 22, + 9, + 23, + 9, + 24, + 9, + 25, + 9, + 26, + 10, + 0, + 10, + 1, + 10, + 2, + 10, + 3, + 10, + 4, + 10, + 5, + 10, + 6, + 10, + 7, + 10, + 8, + 10, + 9, + 10, + 10, + 10, + 11, + 10, + 12, + 10, + 13, + 10, + 14, + 10, + 15, + 10, + 16, + 10, + 17, + 10, + 18, + 10, + 19, + 10, + 20, + 10, + 21, + 10, + 22, + 10, + 23, + 10, + 24, + 10, + 25, + 10, + 26, + 11, + 0, + 11, + 1, + 11, + 2, + 11, + 3, + 11, + 4, + 11, + 5, + 11, + 6, + 11, + 7, + 11, + 8, + 11, + 9, + 11, + 10, + 11, + 11, + 11, + 12, + 11, + 13, + 11, + 14, + 11, + 15, + 11, + 16, + 11, + 17, + 11, + 18, + 11, + 19, + 11, + 20, + 11, + 21, + 11, + 22, + 11, + 23, + 11, + 24, + 11, + 25, + 11, + 26, + 12, + 0, + 12, + 1, + 12, + 2, + 12, + 3, + 12, + 4, + 12, + 5, + 12, + 6, + 12, + 7, + 12, + 8, + 12, + 9, + 12, + 10, + 12, + 11, + 12, + 12, + 12, + 13, + 12, + 14, + 12, + 15, + 12, + 16, + 12, + 17, + 12, + 18, + 12, + 19, + 12, + 20, + 12, + 21, + 12, + 22, + 12, + 23, + 12, + 24, + 12, + 25, + 12, + 26, + 13, + 0, + 13, + 1, + 13, + 2, + 13, + 3, + 13, + 4, + 13, + 5, + 13, + 6, + 13, + 7, + 13, + 8, + 13, + 9, + 13, + 10, + 13, + 11, + 13, + 12, + 13, + 13, + 13, + 14, + 13, + 15, + 13, + 16, + 13, + 17, + 13, + 18, + 13, + 19, + 13, + 20, + 13, + 21, + 13, + 22, + 13, + 23, + 13, + 24, + 13, + 25, + 13, + 26, + 14, + 0, + 14, + 1, + 14, + 2, + 14, + 3, + 14, + 4, + 14, + 5, + 14, + 6, + 14, + 7, + 14, + 8, + 14, + 9, + 14, + 10, + 14, + 11, + 14, + 12, + 14, + 13, + 14, + 14, + 14, + 15, + 14, + 16, + 14, + 17, + 14, + 18, + 14, + 19, + 14, + 20, + 14, + 21, + 14, + 22, + 14, + 23, + 14, + 24, + 14, + 25, + 14, + 26, + 15, + 0, + 15, + 1, + 15, + 2, + 15, + 3, + 15, + 4, + 15, + 5, + 15, + 6, + 15, + 7, + 15, + 8, + 15, + 9, + 15, + 10, + 15, + 11, + 15, + 12, + 15, + 13, + 15, + 14, + 15, + 15, + 15, + 16, + 15, + 17, + 15, + 18, + 15, + 19, + 15, + 20, + 15, + 21, + 15, + 22, + 15, + 23, + 15, + 24, + 15, + 25, + 15, + 26, + 16, + 0, + 16, + 1, + 16, + 2, + 16, + 3, + 16, + 4, + 16, + 5, + 16, + 6, + 16, + 7, + 16, + 8, + 16, + 9, + 16, + 10, + 16, + 11, + 16, + 12, + 16, + 13, + 16, + 14, + 16, + 15, + 16, + 16, + 16, + 17, + 16, + 18, + 16, + 19, + 16, + 20, + 16, + 21, + 16, + 22, + 16, + 23, + 16, + 24, + 16, + 25, + 16, + 26, + 17, + 0, + 17, + 1, + 17, + 2, + 17, + 3, + 17, + 4, + 17, + 5, + 17, + 6, + 17, + 7, + 17, + 8, + 17, + 9, + 17, + 10, + 17, + 11, + 17, + 12, + 17, + 13, + 17, + 14, + 17, + 15, + 17, + 16, + 17, + 17, + 17, + 18, + 17, + 19, + 17, + 20, + 17, + 21, + 17, + 22, + 17, + 23, + 17, + 24, + 17, + 25, + 17, + 26, + 18, + 0, + 18, + 1, + 18, + 2, + 18, + 3, + 18, + 4, + 18, + 5, + 18, + 6, + 18, + 7, + 18, + 8, + 18, + 9, + 18, + 10, + 18, + 11, + 18, + 12, + 18, + 13, + 18, + 14, + 18, + 15, + 18, + 16, + 18, + 17, + 18, + 18, + 18, + 19, + 18, + 20, + 18, + 21, + 18, + 22, + 18, + 23, + 18, + 24, + 18, + 25, + 18, + 26, + 19, + 0, + 19, + 1, + 19, + 2, + 19, + 3, + 19, + 4, + 19, + 5, + 19, + 6, + 19, + 7, + 19, + 8, + 19, + 9, + 19, + 10, + 19, + 11, + 19, + 12, + 19, + 13, + 19, + 14, + 19, + 15, + 19, + 16, + 19, + 17, + 19, + 18, + 19, + 19, + 19, + 20, + 19, + 21, + 19, + 22, + 19, + 23, + 19, + 24, + 19, + 25, + 19, + 26, + 20, + 0, + 20, + 1, + 20, + 2, + 20, + 3, + 20, + 4, + 20, + 5, + 20, + 6, + 20, + 7, + 20, + 8, + 20, + 9, + 20, + 10, + 20, + 11, + 20, + 12, + 20, + 13, + 20, + 14, + 20, + 15, + 20, + 16, + 20, + 17, + 20, + 18, + 20, + 19, + 20, + 20, + 20, + 21, + 20, + 22, + 20, + 23, + 20, + 24, + 20, + 25, + 20, + 26, + 21, + 0, + 21, + 1, + 21, + 2, + 21, + 3, + 21, + 4, + 21, + 5, + 21, + 6, + 21, + 7, + 21, + 8, + 21, + 9, + 21, + 10, + 21, + 11, + 21, + 12, + 21, + 13, + 21, + 14, + 21, + 15, + 21, + 16, + 21, + 17, + 21, + 18, + 21, + 19, + 21, + 20, + 21, + 21, + 21, + 22, + 21, + 23, + 21, + 24, + 21, + 25, + 21, + 26, + 22, + 0, + 22, + 1, + 22, + 2, + 22, + 3, + 22, + 4, + 22, + 5, + 22, + 6, + 22, + 7, + 22, + 8, + 22, + 9, + 22, + 10, + 22, + 11, + 22, + 12, + 22, + 13, + 22, + 14, + 22, + 15, + 22, + 16, + 22, + 17, + 22, + 18, + 22, + 19, + 22, + 20, + 22, + 21, + 22, + 22, + 22, + 23, + 22, + 24, + 22, + 25, + 22, + 26, + 23, + 0, + 23, + 1, + 23, + 2, + 23, + 3, + 23, + 4, + 23, + 5, + 23, + 6, + 23, + 7, + 23, + 8, + 23, + 9, + 23, + 10, + 23, + 11, + 23, + 12, + 23, + 13, + 23, + 14, + 23, + 15, + 23, + 16, + 23, + 17, + 23, + 18, + 23, + 19, + 23, + 20, + 23, + 21, + 23, + 22, + 23, + 23, + 23, + 24, + 23, + 25, + 23, + 26, + 24, + 0, + 24, + 1, + 24, + 2, + 24, + 3, + 24, + 4, + 24, + 5, + 24, + 6, + 24, + 7, + 24, + 8, + 24, + 9, + 24, + 10, + 24, + 11, + 24, + 12, + 24, + 13, + 24, + 14, + 24, + 15, + 24, + 16, + 24, + 17, + 24, + 18, + 24, + 19, + 24, + 20, + 24, + 21, + 24, + 22, + 24, + 23, + 24, + 24, + 24, + 25, + 24, + 26, + 25, + 0, + 25, + 1, + 25, + 2, + 25, + 3, + 25, + 4, + 25, + 5, + 25, + 6, + 25, + 7, + 25, + 8, + 25, + 9, + 25, + 10, + 25, + 11, + 25, + 12, + 25, + 13, + 25, + 14, + 25, + 15, + 25, + 16, + 25, + 17, + 25, + 18, + 25, + 19, + 25, + 20, + 25, + 21, + 25, + 22, + 25, + 23, + 25, + 24, + 25, + 25, + 25, + 26, + 26, + 0, + 26, + 1, + 26, + 2, + 26, + 3, + 26, + 4, + 26, + 5, + 26, + 6, + 26, + 7, + 26, + 8, + 26, + 9, + 26, + 10, + 26, + 11, + 26, + 12, + 26, + 13, + 26, + 14, + 26, + 15, + 26, + 16, + 26, + 17, + 26, + 18, + 26, + 19, + 26, + 20, + 26, + 21, + 26, + 22, + 26, + 23, + 26, + 24, + 26, + 25, + 26, + 26, +}; + +const int32_t ( *c_apaiDemodTables[ALLOC_TABLE_SIZE] )[2] = { + NULL, + c_aaiHuffDemod1, + c_aaiHuffDemod2, + c_aaiHuffDemod3, + c_aaiHuffDemod4, + c_aaiHuffDemod5, + c_aaiHuffDemod6, + c_aaiHuffDemod7, + c_aaiHuffDemod8, + c_aaiHuffDemod9, + c_aaiHuffDemod10, + c_aaiHuffDemod11, + c_aaiHuffDemod12, + c_aaiHuffDemod13, + c_aaiHuffDemod14, + c_aaiHuffDemod15, + c_aaiHuffDemod16, + c_aaiHuffDemod17, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +}; +#endif + +const int32_t c_aiLogAddTable[LOG_ADD_TABLE_LENGTH] = { + 0x40, + 0x40, + 0x3F, + 0x3F, + 0x3E, + 0x3E, + 0x3D, + 0x3D, + 0x3C, + 0x3C, + 0x3B, + 0x3B, + 0x3A, + 0x3A, + 0x39, + 0x39, + 0x38, + 0x38, + 0x37, + 0x37, + 0x37, + 0x36, + 0x36, + 0x35, + 0x35, + 0x34, + 0x34, + 0x33, + 0x33, + 0x33, + 0x32, + 0x32, + 0x31, + 0x31, + 0x31, + 0x30, + 0x30, + 0x2F, + 0x2F, + 0x2F, + 0x2E, + 0x2E, + 0x2D, + 0x2D, + 0x2D, + 0x2C, + 0x2C, + 0x2B, + 0x2B, + 0x2B, + 0x2A, + 0x2A, + 0x2A, + 0x29, + 0x29, + 0x29, + 0x28, + 0x28, + 0x27, + 0x27, + 0x27, + 0x26, + 0x26, + 0x26, + 0x25, + 0x25, + 0x25, + 0x24, + 0x24, + 0x24, + 0x23, + 0x23, + 0x23, + 0x23, + 0x22, + 0x22, + 0x22, + 0x21, + 0x21, + 0x21, + 0x20, + 0x20, + 0x20, + 0x20, + 0x1F, + 0x1F, + 0x1F, + 0x1E, + 0x1E, + 0x1E, + 0x1E, + 0x1D, + 0x1D, + 0x1D, + 0x1C, + 0x1C, + 0x1C, + 0x1C, + 0x1B, + 0x1B, + 0x1B, + 0x1B, + 0x1A, + 0x1A, + 0x1A, + 0x1A, + 0x19, + 0x19, + 0x19, + 0x19, + 0x18, + 0x18, + 0x18, + 0x18, + 0x18, + 0x17, + 0x17, + 0x17, + 0x17, + 0x16, + 0x16, + 0x16, + 0x16, + 0x16, + 0x15, + 0x15, + 0x15, + 0x15, + 0x15, + 0x14, + 0x14, + 0x14, + 0x14, + 0x14, + 0x13, + 0x13, + 0x13, + 0x13, + 0x13, + 0x13, + 0x12, + 0x12, + 0x12, + 0x12, + 0x12, + 0x11, + 0x11, + 0x11, + 0x11, + 0x11, + 0x11, + 0x10, + 0x10, + 0x10, + 0x10, + 0x10, + 0x10, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0F, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0E, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0D, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0C, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0B, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x0A, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x09, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x08, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x07, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x06, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x05, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x04, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x03, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x02, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x01, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, +}; + +const int32_t c_aiBandwidthAdjust48[MAX_BANDS_48] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 64, + 64, + 64, + 64, + 64, + 101, + 101, + 128, + 165, + 165, + 180, + 213, +}; + +const int32_t c_aiAbsoluteThresh48[MAX_BANDS_48] = { + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1787, + -1782, + -1761, + -1737, + -1679, + -1638, + -1613, + -1590, + -1568, + -1516, + -1459, + -1395, + -1289, + -671, + -409, + -401, +}; + + +#if PERCEPTUAL_MODEL_SLGAIN_SHIFT == 4 +const int32_t c_aiDefaultTheta48[MAX_BANDS_48] = { + 7, + 7, + 6, + 5, + 5, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, +}; +#elif PERCEPTUAL_MODEL_SLGAIN_SHIFT == 8 +const int32_t c_aiDefaultTheta48[MAX_BANDS_48] = { + 112, + 112, + 96, + 80, + 80, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, + 64, +}; +#endif + +const int32_t c_aaiSpreadFunction48[MAX_BANDS_48 * MAX_BANDS_48] = { + 0, + -1561, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -289, + -4, + -1234, + -2295, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -569, + -229, + -8, + -905, + -1705, + -2324, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -789, + -445, + -173, + -16, + -656, + -1271, + -1765, + -2172, + -2520, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -961, + -616, + -340, + -136, + -28, + -488, + -976, + -1382, + -1729, + -2032, + -2305, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1088, + -743, + -465, + -257, + -148, + -31, + -371, + -769, + -1114, + -1417, + -1689, + -2054, + -2483, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1198, + -852, + -574, + -364, + -209, + -148, + -42, + -300, + -635, + -936, + -1207, + -1572, + -2000, + -2376, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1293, + -948, + -669, + -458, + -301, + -183, + -145, + -56, + -258, + -547, + -816, + -1179, + -1606, + -1982, + -2311, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1375, + -1029, + -750, + -539, + -381, + -260, + -180, + -142, + -68, + -231, + -487, + -846, + -1272, + -1647, + -1976, + -2261, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1444, + -1099, + -820, + -608, + -449, + -328, + -233, + -194, + -138, + -77, + -213, + -555, + -978, + -1352, + -1681, + -1966, + -2268, + -2552, + -2552, + -2552, + -2552, + -2552, + -2552, + -1501, + -1155, + -876, + -665, + -505, + -383, + -287, + -210, + -193, + -130, + -79, + -298, + -711, + -1083, + -1411, + -1696, + -1997, + -2288, + -2550, + -2552, + -2552, + -2552, + -2552, + -1567, + -1221, + -942, + -730, + -570, + -448, + -351, + -272, + -206, + -189, + -151, + -72, + -349, + -713, + -1039, + -1324, + -1625, + -1915, + -2177, + -2448, + -2552, + -2552, + -2552, + -1650, + -1304, + -1025, + -813, + -653, + -530, + -432, + -352, + -285, + -227, + -177, + -163, + -69, + -297, + -613, + -895, + -1195, + -1485, + -1746, + -2017, + -2238, + -2401, + -2545, + -1727, + -1381, + -1102, + -890, + -730, + -607, + -509, + -428, + -360, + -301, + -249, + -180, + -153, + -72, + -257, + -527, + -824, + -1112, + -1373, + -1643, + -1865, + -2028, + -2171, + -1798, + -1452, + -1173, + -960, + -800, + -677, + -579, + -498, + -430, + -370, + -317, + -246, + -192, + -145, + -76, + -224, + -505, + -790, + -1050, + -1320, + -1540, + -1703, + -1847, + -1860, + -1514, + -1234, + -1022, + -862, + -738, + -640, + -559, + -490, + -430, + -377, + -306, + -224, + -197, + -136, + -81, + -242, + -515, + -771, + -1040, + -1260, + -1422, + -1566, + -1923, + -1577, + -1297, + -1085, + -925, + -801, + -703, + -621, + -553, + -492, + -439, + -367, + -284, + -213, + -198, + -144, + -83, + -235, + -479, + -744, + -963, + -1125, + -1268, + -1986, + -1640, + -1360, + -1148, + -988, + -864, + -766, + -684, + -615, + -555, + -501, + -429, + -345, + -273, + -211, + -204, + -146, + -89, + -216, + -465, + -680, + -841, + -984, + -2043, + -1697, + -1417, + -1205, + -1044, + -921, + -822, + -741, + -672, + -611, + -557, + -485, + -401, + -328, + -264, + -211, + -205, + -140, + -93, + -227, + -430, + -588, + -729, + -2104, + -1758, + -1479, + -1266, + -1106, + -982, + -884, + -802, + -733, + -673, + -619, + -546, + -461, + -388, + -324, + -269, + -212, + -211, + -151, + -100, + -195, + -336, + -472, + -2163, + -1817, + -1537, + -1324, + -1164, + -1040, + -942, + -860, + -791, + -731, + -676, + -604, + -519, + -445, + -380, + -325, + -268, + -226, + -219, + -147, + -114, + -167, + -280, + -2203, + -1857, + -1577, + -1365, + -1205, + -1081, + -982, + -901, + -831, + -771, + -717, + -644, + -559, + -485, + -420, + -364, + -306, + -252, + -239, + -206, + -132, + -122, + -163, + -2224, + -1878, + -1598, + -1386, + -1225, + -1102, + -1003, + -921, + -852, + -792, + -737, + -665, + -580, + -505, + -441, + -385, + -326, + -271, + -222, + -224, + -176, + -121, + -114, +}; +#endif diff --git a/lib_rend/ivas_lcld_rom_tables.h b/lib_rend/ivas_lcld_rom_tables.h new file mode 100644 index 0000000000000000000000000000000000000000..e4321fa003b41b3b085e532de67c7e621c8186de --- /dev/null +++ b/lib_rend/ivas_lcld_rom_tables.h @@ -0,0 +1,423 @@ +/****************************************************************************************************** + + (C) 2022-2023 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_TABLES_H_ +#define _IVAS_TABLES_H_ + +#include +#include "options.h" + +#ifndef M_PI + +#define M_PI 3.14159265358979323846264338327950288f // todo: replace by EVS_PI + +#endif + +#define LCLD_BLOCKS_PER_FRAME ( 16 ) +#define LCLD_MAX_BLOCKS_PER_FRAME ( 16 ) +#define LCLD_BANDS ( 60 ) + +#define MAX_BANDS ( 23 ) +#define MAX_BANDS_48 ( 23 ) + +#define ENV_MIN ( -64 ) +#define ENV_MAX ( 64 ) + +#define ENV0_BITS ( 7 ) + +#define ENV_DELTA_MIN ( -32 ) +#define ENV_DELTA_MAX ( 31 ) + +#define ENV_RECONSTRUCT_TABLE_SIZE ( 129 ) + +#define ENV_RECONSTRUCT_TABLE_CENTER ( 64 ) + +#define MIN_ALLOC ( 0 ) +#define MAX_ALLOC ( 31 ) + +#define ALLOC_OFFSET_SCALE ( 8 ) + +#define ALLOC_OFFSET_BITS ( 8 ) + +#define MIN_ALLOC_OFFSET ( -128 ) +#define MAX_ALLOC_OFFSET ( 127 ) +#ifdef ROM_TO_RAM +#define READ_LENGTH ( 4 ) +#endif + +#define ALLOC_TABLE_SIZE ( 32 ) + +#ifndef _PI_ +#define _PI_ ( 3.14159265358979f ) +#endif +#define PRED_MAX_VAL ( 12 ) +#define PRED_MIN_VAL ( -PRED_MAX_VAL ) +#define PRED_QUANT_FACTOR ( (float) PRED_MAX_VAL ) +#define PRED_BAND0_BITS ( 5 ) + +#define PHASE_MAX_VAL ( 12 ) +#define PHASE_MIN_VAL ( -PHASE_MAX_VAL ) +#define PHASE_QUANT_FACTOR ( (float) PHASE_MAX_VAL / _PI_ ) +#define PHASE_DIFF_DIM ( 2 ) +#define PHASE_BAND0_BITS ( 5 ) + +#define SIMPLE_PHASE_MAX_VAL ( 3 ) +#define SIMPLE_PHASE_MIN_VAL ( 0 ) +#define SIMPLE_PHASE_BITS ( 2 ) +#define SIMPLE_PHASE_QUANT_FACTOR ( 2.0f / _PI_ ) + +#define TON_QUOTA_ABS_THRESHOLD ( 8.0f ) +#define TON_QUOTA_INC_THRESHOLD ( 4.0f ) + +#define PERCEPTUAL_MODEL_SLGAIN_SHIFT ( 8 ) + +//#define USE_DEMOD_TABLES + +#define HUFF_DEC_TABLE_SIZE ( 16 ) + +extern const float c_afRotRealImag[PRED_MAX_VAL - PRED_MIN_VAL + 1][2]; +extern const float c_afRotRealImagSimple[SIMPLE_PHASE_MAX_VAL + 1][2]; +extern const int32_t c_aiDefaultTheta48[MAX_BANDS_48]; + +extern const float c_afScaleFactor[ALLOC_TABLE_SIZE]; +extern const float c_afInvScaleFactor[ALLOC_TABLE_SIZE]; +extern const float c_afRMSEnvReconstructTable[ENV_RECONSTRUCT_TABLE_SIZE]; +extern const int32_t c_aiQuantMaxValues[ALLOC_TABLE_SIZE]; +extern const int32_t c_aiHuffmanDim[ALLOC_TABLE_SIZE]; +extern const int32_t c_aiHuffmanMod[ALLOC_TABLE_SIZE]; +extern const int32_t c_aiHuffmanSize[ALLOC_TABLE_SIZE]; + + +#define LOG_ADD_TABLE_LENGTH ( 512 ) + +extern const int32_t c_aiBandwidths48[MAX_BANDS_48]; +extern const int32_t c_aiLogAddTable[LOG_ADD_TABLE_LENGTH]; +extern const int32_t c_aiBandwidthAdjust48[MAX_BANDS_48]; +extern const int32_t c_aiAbsoluteThresh48[MAX_BANDS_48]; +extern const int32_t c_aiDefaultTheta48[MAX_BANDS_48]; +extern const int32_t c_aaiSpreadFunction48[MAX_BANDS_48 * MAX_BANDS_48]; + + +#define PRED_QUNAT_FILTER_MAG_BITS ( 3 ) +#define PRED_QUANT_FILTER_PHASE_BITS ( 5 ) +#define PRED_QUANT_FILTER_MAG_MIN ( 0 ) +#define PRED_QUANT_FILTER_MAG_MAX ( 7 ) +#define PRED_QUANT_FILTER_PHASE_MIN ( -16 ) +#define PRED_QUANT_FILTER_PHASE_MAX ( 15 ) + + +#ifndef ROM_TO_RAM +extern const uint32_t c_aauiLCLDHuffEnc1[16][2]; + +extern const uint32_t c_aauiLCLDHuffDec1[3][16]; + +extern const uint32_t c_aauiLCLDHuffEnc2[16][2]; + +extern const uint32_t c_aauiLCLDHuffDec2[3][16]; +extern const uint32_t c_aauiLCLDHuffEnc3[25][2]; + +extern const uint32_t c_aauiLCLDHuffDec3[10][16]; +extern const uint32_t c_aauiLCLDHuffEnc4[36][2]; + +extern const uint32_t c_aauiLCLDHuffDec4[5][16]; +extern const uint32_t c_aauiLCLDHuffEnc5[36][2]; + +extern const uint32_t c_aauiLCLDHuffDec5[10][16]; +extern const uint32_t c_aauiLCLDHuffEnc6[49][2]; + +extern const uint32_t c_aauiLCLDHuffDec6[7][16]; +extern const uint32_t c_aauiLCLDHuffEnc7[64][2]; + +extern const uint32_t c_aauiLCLDHuffDec7[25][16]; +extern const uint32_t c_aauiLCLDHuffEnc8[81][2]; + +extern const uint32_t c_aauiLCLDHuffDec8[16][16]; +extern const uint32_t c_aauiLCLDHuffEnc9[100][2]; + +extern const uint32_t c_aauiLCLDHuffDec9[22][16]; +extern const uint32_t c_aauiLCLDHuffEnc10[169][2]; + +extern const uint32_t c_aauiLCLDHuffDec10[45][16]; +extern const uint32_t c_aauiLCLDHuffEnc11[196][2]; + +extern const uint32_t c_aauiLCLDHuffDec11[50][16]; +extern const uint32_t c_aauiLCLDHuffEnc12[289][2]; + +extern const uint32_t c_aauiLCLDHuffDec12[76][16]; +extern const uint32_t c_aauiLCLDHuffEnc13[324][2]; + +extern const uint32_t c_aauiLCLDHuffDec13[89][16]; +extern const uint32_t c_aauiLCLDHuffEnc14[400][2]; + +extern const uint32_t c_aauiLCLDHuffDec14[53][16]; +extern const uint32_t c_aauiLCLDHuffEnc15[576][2]; + +extern const uint32_t c_aauiLCLDHuffDec15[73][16]; +extern const uint32_t c_aauiLCLDHuffEnc16[729][2]; + +extern const uint32_t c_aauiLCLDHuffDec16[85][16]; +extern const uint32_t c_aauiLCLDHuffEnc17[729][2]; + +extern const uint32_t c_aauiLCLDHuffDec17[93][16]; +extern const uint32_t c_aauiLCLDHuffEnc18[28][2]; + +extern const uint32_t c_aauiLCLDHuffDec18[6][16]; +extern const uint32_t c_aauiLCLDHuffEnc19[29][2]; + +extern const uint32_t c_aauiLCLDHuffDec19[6][16]; +extern const uint32_t c_aauiLCLDHuffEnc20[32][2]; + +extern const uint32_t c_aauiLCLDHuffDec20[6][16]; +extern const uint32_t c_aauiLCLDHuffEnc21[37][2]; + +extern const uint32_t c_aauiLCLDHuffDec21[7][16]; +extern const uint32_t c_aauiLCLDHuffEnc22[39][2]; + +extern const uint32_t c_aauiLCLDHuffDec22[9][16]; +extern const uint32_t c_aauiLCLDHuffEnc23[46][2]; + +extern const uint32_t c_aauiLCLDHuffDec23[12][16]; +extern const uint32_t c_aauiLCLDHuffEnc24[55][2]; + +extern const uint32_t c_aauiLCLDHuffDec24[17][16]; +extern const uint32_t c_aauiLCLDHuffEnc25[65][2]; + +extern const uint32_t c_aauiLCLDHuffDec25[19][16]; +extern const uint32_t c_aauiLCLDHuffEnc26[77][2]; + +extern const uint32_t c_aauiLCLDHuffDec26[26][16]; +extern const uint32_t c_aauiLCLDHuffEnc27[91][2]; + +extern const uint32_t c_aauiLCLDHuffDec27[28][16]; +extern const uint32_t c_aauiLCLDHuffEnc28[109][2]; + +extern const uint32_t c_aauiLCLDHuffDec28[30][16]; +extern const uint32_t c_aauiLCLDHuffEnc29[129][2]; + +extern const uint32_t c_aauiLCLDHuffDec29[34][16]; +extern const uint32_t c_aauiLCLDHuffEnc30[153][2]; + +extern const uint32_t c_aauiLCLDHuffDec30[39][16]; +extern const uint32_t c_aauiLCLDHuffEnc31[181][2]; + +extern const uint32_t c_aauiLCLDHuffDec31[43][16]; +extern const uint32_t c_aauiLCLDHuffEnc33[16][2]; + +extern const uint32_t c_aauiLCLDHuffDec33[2][16]; +extern const uint32_t c_aauiLCLDHuffEnc34[16][2]; + +extern const uint32_t c_aauiLCLDHuffDec34[2][16]; +extern const uint32_t c_aauiLCLDHuffEnc35[25][2]; + +extern const uint32_t c_aauiLCLDHuffDec35[9][16]; +extern const uint32_t c_aauiLCLDHuffEnc36[36][2]; + +extern const uint32_t c_aauiLCLDHuffDec36[7][16]; +extern const uint32_t c_aauiLCLDHuffEnc37[36][2]; + +extern const uint32_t c_aauiLCLDHuffDec37[4][16]; +extern const uint32_t c_aauiLCLDHuffEnc38[49][2]; + +extern const uint32_t c_aauiLCLDHuffDec38[22][16]; +extern const uint32_t c_aauiLCLDHuffEnc39[64][2]; + +extern const uint32_t c_aauiLCLDHuffDec39[12][16]; +extern const uint32_t c_aauiLCLDHuffEnc40[81][2]; + +extern const uint32_t c_aauiLCLDHuffDec40[36][16]; +extern const uint32_t c_aauiLCLDHuffEnc41[100][2]; + +extern const uint32_t c_aauiLCLDHuffDec41[16][16]; +extern const uint32_t c_aauiLCLDHuffEnc42[169][2]; + +extern const uint32_t c_aauiLCLDHuffDec42[28][16]; +extern const uint32_t c_aauiLCLDHuffEnc43[196][2]; + +extern const uint32_t c_aauiLCLDHuffDec43[32][16]; +extern const uint32_t c_aauiLCLDHuffEnc44[289][2]; + +extern const uint32_t c_aauiLCLDHuffDec44[27][16]; +extern const uint32_t c_aauiLCLDHuffEnc45[324][2]; + +extern const uint32_t c_aauiLCLDHuffDec45[50][16]; +extern const uint32_t c_aauiLCLDHuffEnc46[400][2]; + +extern const uint32_t c_aauiLCLDHuffDec46[61][16]; +extern const uint32_t c_aauiLCLDHuffEnc47[576][2]; + +extern const uint32_t c_aauiLCLDHuffDec47[87][16]; +extern const uint32_t c_aauiLCLDHuffEnc48[729][2]; + +extern const uint32_t c_aauiLCLDHuffDec48[110][16]; +extern const uint32_t c_aauiLCLDHuffEnc49[729][2]; + +extern const uint32_t c_aauiLCLDHuffDec49[113][16]; +extern const uint32_t c_aauiLCLDHuffEnc50[28][2]; + +extern const uint32_t c_aauiLCLDHuffDec50[6][16]; +extern const uint32_t c_aauiLCLDHuffEnc51[29][2]; + +extern const uint32_t c_aauiLCLDHuffDec51[6][16]; +extern const uint32_t c_aauiLCLDHuffEnc52[32][2]; + +extern const uint32_t c_aauiLCLDHuffDec52[7][16]; +extern const uint32_t c_aauiLCLDHuffEnc53[37][2]; + +extern const uint32_t c_aauiLCLDHuffDec53[9][16]; +extern const uint32_t c_aauiLCLDHuffEnc54[39][2]; + +extern const uint32_t c_aauiLCLDHuffDec54[9][16]; +extern const uint32_t c_aauiLCLDHuffEnc55[46][2]; + +extern const uint32_t c_aauiLCLDHuffDec55[10][16]; +extern const uint32_t c_aauiLCLDHuffEnc56[55][2]; + +extern const uint32_t c_aauiLCLDHuffDec56[12][16]; +extern const uint32_t c_aauiLCLDHuffEnc57[65][2]; + +extern const uint32_t c_aauiLCLDHuffDec57[14][16]; +extern const uint32_t c_aauiLCLDHuffEnc58[77][2]; + +extern const uint32_t c_aauiLCLDHuffDec58[17][16]; +extern const uint32_t c_aauiLCLDHuffEnc59[91][2]; + +extern const uint32_t c_aauiLCLDHuffDec59[20][16]; +extern const uint32_t c_aauiLCLDHuffEnc60[109][2]; + +extern const uint32_t c_aauiLCLDHuffDec60[24][16]; +extern const uint32_t c_aauiLCLDHuffEnc61[129][2]; + +extern const uint32_t c_aauiLCLDHuffDec61[33][16]; + +extern const uint32_t c_aauiLCLDHuffEnc62[153][2]; + + +extern const uint32_t c_aauiLCLDHuffDec62[41][16]; +extern const uint32_t c_aauiLCLDHuffEnc63[181][2]; + +extern const uint32_t c_aauiLCLDHuffDec63[39][16]; + +extern const uint32_t ( *c_apauiHuffEncTabels[2 * ALLOC_TABLE_SIZE] )[2]; +extern const uint32_t ( *c_apauiHuffDecTables[2 * ALLOC_TABLE_SIZE] )[HUFF_DEC_TABLE_SIZE]; +#else +extern const uint16_t c_aauiLCLDHuffEnc1[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc2[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc3[25][2]; +extern const uint16_t c_aauiLCLDHuffEnc4[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc5[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc6[49][2]; +extern const uint16_t c_aauiLCLDHuffEnc7[64][2]; +extern const uint16_t c_aauiLCLDHuffEnc8[81][2]; +extern const uint16_t c_aauiLCLDHuffEnc9[100][2]; +extern const uint16_t c_aauiLCLDHuffEnc10[169][2]; +extern const uint16_t c_aauiLCLDHuffEnc11[196][2]; +extern const uint16_t c_aauiLCLDHuffEnc12[289][2]; +extern const uint16_t c_aauiLCLDHuffEnc13[324][2]; +extern const uint16_t c_aauiLCLDHuffEnc14[400][2]; +extern const uint16_t c_aauiLCLDHuffEnc15[576][2]; +extern const uint16_t c_aauiLCLDHuffEnc16[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc17[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc18[28][2]; +extern const uint16_t c_aauiLCLDHuffEnc19[29][2]; +extern const uint16_t c_aauiLCLDHuffEnc20[32][2]; +extern const uint16_t c_aauiLCLDHuffEnc21[37][2]; +extern const uint16_t c_aauiLCLDHuffEnc22[39][2]; +extern const uint16_t c_aauiLCLDHuffEnc23[46][2]; +extern const uint16_t c_aauiLCLDHuffEnc24[55][2]; +extern const uint16_t c_aauiLCLDHuffEnc25[65][2]; +extern const uint16_t c_aauiLCLDHuffEnc26[77][2]; +extern const uint16_t c_aauiLCLDHuffEnc27[91][2]; +extern const uint16_t c_aauiLCLDHuffEnc28[109][2]; +extern const uint16_t c_aauiLCLDHuffEnc29[129][2]; +extern const uint16_t c_aauiLCLDHuffEnc30[153][2]; +extern const uint16_t c_aauiLCLDHuffEnc31[181][2]; +extern const uint16_t c_aauiLCLDHuffEnc33[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc34[16][2]; +extern const uint16_t c_aauiLCLDHuffEnc35[25][2]; +extern const uint16_t c_aauiLCLDHuffEnc36[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc37[36][2]; +extern const uint16_t c_aauiLCLDHuffEnc38[49][2]; +extern const uint16_t c_aauiLCLDHuffEnc39[64][2]; +extern const uint16_t c_aauiLCLDHuffEnc40[81][2]; +extern const uint16_t c_aauiLCLDHuffEnc41[100][2]; +extern const uint16_t c_aauiLCLDHuffEnc42[169][2]; +extern const uint16_t c_aauiLCLDHuffEnc43[196][2]; +extern const uint16_t c_aauiLCLDHuffEnc44[289][2]; +extern const uint16_t c_aauiLCLDHuffEnc45[324][2]; +extern const uint16_t c_aauiLCLDHuffEnc46[400][2]; +extern const uint16_t c_aauiLCLDHuffEnc47[576][2]; +extern const uint16_t c_aauiLCLDHuffEnc48[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc49[729][2]; +extern const uint16_t c_aauiLCLDHuffEnc50[28][2]; +extern const uint16_t c_aauiLCLDHuffEnc51[29][2]; +extern const uint16_t c_aauiLCLDHuffEnc52[32][2]; +extern const uint16_t c_aauiLCLDHuffEnc53[37][2]; +extern const uint16_t c_aauiLCLDHuffEnc54[39][2]; +extern const uint16_t c_aauiLCLDHuffEnc55[46][2]; +extern const uint16_t c_aauiLCLDHuffEnc56[55][2]; +extern const uint16_t c_aauiLCLDHuffEnc57[65][2]; +extern const uint16_t c_aauiLCLDHuffEnc58[77][2]; +extern const uint16_t c_aauiLCLDHuffEnc59[91][2]; +extern const uint16_t c_aauiLCLDHuffEnc60[109][2]; +extern const uint16_t c_aauiLCLDHuffEnc61[129][2]; +extern const uint16_t c_aauiLCLDHuffEnc62[153][2]; +extern const uint16_t c_aauiLCLDHuffEnc63[181][2]; +extern const uint16_t ( *c_apauiHuffEncTabels[2 * ALLOC_TABLE_SIZE] )[2]; +extern const uint32_t num_row_aauiLCLDHuff[2 * ALLOC_TABLE_SIZE]; +#endif + +#ifdef USE_DEMOD_TABLES +extern const int32_t c_aaiHuffDemod1[16][2]; +extern const int32_t c_aaiHuffDemod2[16][2]; +extern const int32_t c_aaiHuffDemod3[25][2]; +extern const int32_t c_aaiHuffDemod4[36][2]; +extern const int32_t c_aaiHuffDemod5[36][2]; +extern const int32_t c_aaiHuffDemod6[49][2]; +extern const int32_t c_aaiHuffDemod7[64][2]; +extern const int32_t c_aaiHuffDemod8[81][2]; +extern const int32_t c_aaiHuffDemod9[100][2]; +extern const int32_t c_aaiHuffDemod10[169][2]; +extern const int32_t c_aaiHuffDemod11[196][2]; +extern const int32_t c_aaiHuffDemod12[289][2]; +extern const int32_t c_aaiHuffDemod13[324][2]; +extern const int32_t c_aaiHuffDemod14[400][2]; +extern const int32_t c_aaiHuffDemod15[576][2]; +extern const int32_t c_aaiHuffDemod16[729][2]; +extern const int32_t c_aaiHuffDemod17[729][2]; +extern const int32_t ( *c_apaiDemodTables[ALLOC_TABLE_SIZE] )[2]; +#endif + +extern const uint32_t c_aaiRMSEnvHuffEnc[64][2]; +extern const uint32_t c_aaiRMSEnvHuffDec[13][HUFF_DEC_TABLE_SIZE]; + + +#endif /* _TABLES_H_ */ diff --git a/lib_rend/ivas_limiter.c b/lib_rend/ivas_limiter.c index 106c4330341b0e42e8b30ab1db2470cd31d62740..0953e8a825dc3aecfe8a51b004da4a2400884199 100644 --- a/lib_rend/ivas_limiter.c +++ b/lib_rend/ivas_limiter.c @@ -101,9 +101,10 @@ static int16_t detect_strong_saturations( *-------------------------------------------------------------------*/ /*! r : limiter struct handle */ -IVAS_LIMITER_HANDLE ivas_limiter_open( - const int16_t max_num_channels, /* i : maximum number of I/O channels to be processed */ - const int32_t sampling_rate /* i : sampling rate for processing */ +ivas_error ivas_limiter_open( + IVAS_LIMITER_HANDLE *hLimiter_out, /* o : limiter struct handle */ + const int16_t max_num_channels, /* i : maximum number of I/O channels to be processed */ + const int32_t sampling_rate /* i : sampling rate for processing */ ) { int16_t i; @@ -111,17 +112,21 @@ IVAS_LIMITER_HANDLE ivas_limiter_open( if ( max_num_channels <= 0 || sampling_rate <= 0 ) { - return NULL; + return ( IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Wrong parameters for Limiter\n" ) ); } if ( ( hLimiter = malloc( sizeof( IVAS_LIMITER ) ) ) == NULL ) { - return NULL; + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Limiter handle\n" ) ); } hLimiter->max_num_channels = max_num_channels; hLimiter->num_channels = max_num_channels; - hLimiter->channel_ptrs = malloc( max_num_channels * sizeof( float * ) ); + + if ( ( hLimiter->channel_ptrs = malloc( max_num_channels * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Limiter handle\n" ) ); + } hLimiter->sampling_rate = sampling_rate; hLimiter->gain = 1.f; hLimiter->release_heuristic = 0.f; @@ -136,7 +141,9 @@ IVAS_LIMITER_HANDLE ivas_limiter_open( hLimiter->channel_ptrs[i] = NULL; } - return hLimiter; + *hLimiter_out = hLimiter; + + return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_mcmasa_ana.c b/lib_rend/ivas_mcmasa_ana.c index b90b02ed14ee5cfa2325f35ede25880b38f8b314..43a91b348977bc92aa89885d18fe416fdf829ec9 100644 --- a/lib_rend/ivas_mcmasa_ana.c +++ b/lib_rend/ivas_mcmasa_ana.c @@ -83,9 +83,9 @@ static void computeEvenLayout( const float *ls_azimuth, float *ls_azimuth_even, *--------------------------------------------------------------------------*/ ivas_error ivas_mcmasa_ana_open( - MCMASA_ANA_HANDLE *hMcMasaPtr, /* i/o: McMASA data handle pointer */ - const IVAS_REND_AudioConfig inConfig, /* i : Input config */ - int32_t input_Fs /* i : Sampling frequency */ + MCMASA_ANA_HANDLE *hMcMasaPtr, /* i/o: McMASA data handle pointer */ + const AUDIO_CONFIG inConfig, /* i : Input config */ + int32_t input_Fs /* i : Sampling frequency */ ) { int16_t i, j; @@ -106,7 +106,7 @@ ivas_error ivas_mcmasa_ana_open( return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for McMasa\n" ) ); } - if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 ) + if ( inConfig == AUDIO_CONFIG_5_1 ) { nchan_inp = 6; mvr2r( ls_azimuth_CICP6, ls_azimuth, nchan_inp - 1 ); @@ -114,7 +114,7 @@ ivas_error ivas_mcmasa_ana_open( hMcMasa->numHorizontalChannels = 5; hMcMasa->isHorizontalSetup = 1; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) + else if ( inConfig == AUDIO_CONFIG_7_1 ) { nchan_inp = 8; mvr2r( ls_azimuth_CICP12, ls_azimuth, nchan_inp - 1 ); @@ -122,7 +122,7 @@ ivas_error ivas_mcmasa_ana_open( hMcMasa->numHorizontalChannels = 7; hMcMasa->isHorizontalSetup = 1; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1_2 ) + else if ( inConfig == AUDIO_CONFIG_5_1_2 ) { nchan_inp = 8; mvr2r( ls_azimuth_CICP14, ls_azimuth, nchan_inp - 1 ); @@ -130,7 +130,7 @@ ivas_error ivas_mcmasa_ana_open( hMcMasa->numHorizontalChannels = 5; hMcMasa->isHorizontalSetup = 0; } - else if ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1_4 ) + else if ( inConfig == AUDIO_CONFIG_5_1_4 ) { nchan_inp = 10; mvr2r( ls_azimuth_CICP16, ls_azimuth, nchan_inp - 1 ); diff --git a/lib_rend/ivas_objectRenderer.c b/lib_rend/ivas_objectRenderer.c index 2ba225b2f15723187a77c6c8ca5404f7526e366b..e50b625e4cc6b19f337919f282327f7745367abd 100644 --- a/lib_rend/ivas_objectRenderer.c +++ b/lib_rend/ivas_objectRenderer.c @@ -36,6 +36,9 @@ #include "prot.h" #include "ivas_prot.h" #include "ivas_prot_rend.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_prot.h" +#endif #include #include "ivas_rom_com.h" #ifdef DEBUGGING @@ -190,30 +193,35 @@ ivas_error ivas_td_binaural_open_unwrap( TDREND_MIX_SRC_SetDirAtten( pBinRendTd, nS, DirAtten_p ); } } - if ( ivas_format == ISM_FORMAT ) + + if ( ivas_format == ISM_FORMAT || ivas_format == MASA_ISM_FORMAT || ivas_format == SBA_ISM_FORMAT ) { DirAtten_p = pBinRendTd->DirAtten_p; - if ( NULL == directivity ) - { - DirAtten_p->ConeInnerAngle = 360.0f; /* Front cone */ - DirAtten_p->ConeOuterAngle = 360.0f; /* Back cone */ - DirAtten_p->ConeOuterGain = 1.0f; /* Back attenuation */ - } - else - { - DirAtten_p->ConeInnerAngle = directivity[0]; - DirAtten_p->ConeOuterAngle = directivity[1]; - DirAtten_p->ConeOuterGain = directivity[2]; - } for ( nS = 0; nS < nchan_rend; nS++ ) { + if ( NULL == directivity ) + { + DirAtten_p->ConeInnerAngle = 360.0f; /* Front cone */ + DirAtten_p->ConeOuterAngle = 360.0f; /* Back cone */ + DirAtten_p->ConeOuterGain = 1.0f; /* Back attenuation */ + } + else + { + DirAtten_p->ConeInnerAngle = directivity[nS * 3]; + DirAtten_p->ConeOuterAngle = directivity[nS * 3 + 1]; + DirAtten_p->ConeOuterGain = directivity[nS * 3 + 2]; + } TDREND_MIX_SRC_SetDirAtten( pBinRendTd, nS, DirAtten_p ); } } *hBinRendererTd = pBinRendTd; - *binaural_latency_ns = (int32_t) ( ( *hBinRendererTd )->HrFiltSet_p->latency_s * 1000000000.f ); + + if ( ivas_format != MASA_ISM_FORMAT && ivas_format != SBA_ISM_FORMAT ) + { + *binaural_latency_ns = (int32_t) ( ( *hBinRendererTd )->HrFiltSet_p->latency_s * 1000000000.f ); + } return error; } @@ -265,6 +273,10 @@ ivas_error ivas_td_binaural_renderer_unwrap( const int16_t ism_md_subframe_update, /* i : Number of subframes to delay ism metadata to sync with audio */ float *output[], /* i/o: SCE channels / Binaural synthesis */ const int16_t output_frame /* i : output frame length */ +#ifdef API_5MS + , + const int16_t num_subframes /* i : number of subframes to render */ +#endif ) { int16_t subframe_length; @@ -280,7 +292,11 @@ ivas_error ivas_td_binaural_renderer_unwrap( p_reverb_signal[ch] = reverb_signal[ch]; } +#ifdef API_5MS + subframe_length = output_frame / num_subframes; +#else subframe_length = output_frame / MAX_PARAM_SPATIAL_SUBFRAMES; +#endif c_indx = 0; for ( nS = 0; nS < num_src; nS++ ) @@ -293,7 +309,11 @@ ivas_error ivas_td_binaural_renderer_unwrap( } } +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { if ( subframe_idx == ism_md_subframe_update ) { @@ -302,7 +322,6 @@ ivas_error ivas_td_binaural_renderer_unwrap( } /* Update the listener's location/orientation */ TDREND_Update_listener_orientation( hBinRendererTd, ( enableCombinedOrientation != NULL ) ? enableCombinedOrientation[subframe_idx] : 0, ( Quaternions != NULL ) ? &Quaternions[subframe_idx] : NULL, ( Pos != NULL ) ? &Pos[subframe_idx] : NULL ); - if ( hReverb != NULL ) { if ( ( error = ivas_reverb_process( hReverb, transport_config, 0, output, p_reverb_signal, subframe_idx ) ) != IVAS_ERR_OK ) @@ -316,6 +335,17 @@ ivas_error ivas_td_binaural_renderer_unwrap( { return error; } + + /* Advance subframe pointer */ + c_indx = 0; + for ( nS = 0; nS < num_src; nS++ ) + { + if ( !( ivas_format == MC_FORMAT && nS == lfe_idx ) ) /* Skip LFE for MC */ + { + hBinRendererTd->Sources[c_indx]->InputFrame_p += subframe_length; + c_indx++; + } + } } if ( hReverb != NULL ) @@ -352,7 +382,6 @@ ivas_error TDREND_GetMix( float hrf_left_delta[SFX_SPAT_BIN_MAX_FILTER_LENGTH]; float hrf_right_delta[SFX_SPAT_BIN_MAX_FILTER_LENGTH]; int16_t intp_count; - float pan_left, pan_right; int16_t subframe_update_flag; subframe_update_flag = subframe_idx == ism_md_subframe_update; @@ -388,14 +417,6 @@ ivas_error TDREND_GetMix( { error = TDREND_REND_RenderSourceHRFilt( Src_p, hrf_left_delta, hrf_right_delta, intp_count, output_buf, subframe_length ); } - - if ( ( SrcRend_p->InputAvailable == TRUE ) && ( SrcRend_p->PlayStatus == TDREND_PLAYSTATUS_PLAYING_NON_DIEGETIC ) ) - { - pan_left = ( SrcSpatial_p->Pos_p[1] + 1.f ) * 0.5f; - pan_right = 1.f - pan_left; - v_multc_acc( &Src_p->InputFrame_p[subframe_idx * subframe_length], pan_left, output_buf[0], subframe_length ); - v_multc_acc( &Src_p->InputFrame_p[subframe_idx * subframe_length], pan_right, output_buf[1], subframe_length ); - } } /* Populate output variable */ @@ -439,7 +460,7 @@ static void TDREND_Clear_Update_flags( *---------------------------------------------------------------------*/ void TDREND_Update_object_positions( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o : TD Renderer handle */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */ const int16_t num_src, /* i : number of sources to render */ const IVAS_FORMAT in_format, /* i : Format of input sources */ const ISM_METADATA_HANDLE *hIsmMetaData /* i : Input metadata for ISM objects */ @@ -455,7 +476,7 @@ void TDREND_Update_object_positions( /* For each source, write the frame data to the source object*/ for ( nS = 0; nS < num_src; nS++ ) { - if ( in_format == ISM_FORMAT ) + if ( in_format == ISM_FORMAT || in_format == MASA_ISM_FORMAT || in_format == SBA_ISM_FORMAT ) { /* Update the source positions */ /* Source position and direction */ @@ -472,12 +493,13 @@ void TDREND_Update_object_positions( Pos[1] = hIsmMetaData[nS]->azimuth / 90.f; Pos[2] = 0; TDREND_MIX_SRC_SetPos( hBinRendererTd, nS, Pos ); - TDREND_MIX_SRC_SetPlayState( hBinRendererTd, nS, TDREND_PLAYSTATUS_PLAYING_NON_DIEGETIC ); + hBinRendererTd->Sources[nS]->SrcSpatial_p->PosType = TDREND_POSTYPE_NON_DIEGETIC; } else { - TDREND_MIX_SRC_SetPlayState( hBinRendererTd, nS, TDREND_PLAYSTATUS_PLAYING ); + hBinRendererTd->Sources[nS]->SrcSpatial_p->PosType = TDREND_POSTYPE_ABSOLUTE; } + TDREND_MIX_SRC_SetDir( hBinRendererTd, nS, Dir ); } } @@ -563,7 +585,7 @@ void TDREND_Update_listener_orientation( ivas_error ivas_td_binaural_open_ext( TDREND_WRAPPER *pTDRend, - IVAS_REND_AudioConfig inConfig, + AUDIO_CONFIG inConfig, RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration */ LSSETUP_CUSTOM_STRUCT *customLsInput, const int32_t outFs ) @@ -573,9 +595,10 @@ ivas_error ivas_td_binaural_open_ext( IVAS_FORMAT ivas_format; IVAS_OUTPUT_SETUP hTransSetup; ivas_error error; + float *directivity = NULL; - if ( inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = getAudioConfigNumChannels( inConfig, &nchan_transport ) ) != IVAS_ERR_OK ) { @@ -587,10 +610,17 @@ ivas_error ivas_td_binaural_open_ext( nchan_transport = customLsInput->num_spk; } - transport_config = getIvasAudioConfigFromRendAudioConfig( inConfig ); + transport_config = inConfig; ivas_format = ( getAudioConfigType( inConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ? MC_FORMAT : ISM_FORMAT; - hTransSetup.ls_azimuth = customLsInput->ls_azimuth; - hTransSetup.ls_elevation = customLsInput->ls_elevation; + + hTransSetup.ls_azimuth = NULL; + hTransSetup.ls_elevation = NULL; + + if ( inConfig == AUDIO_CONFIG_LS_CUSTOM ) + { + hTransSetup.ls_azimuth = customLsInput->ls_azimuth; + hTransSetup.ls_elevation = customLsInput->ls_elevation; + } if ( NULL != hRendCfg ) { @@ -609,14 +639,18 @@ ivas_error ivas_td_binaural_open_ext( *---------------------------------------------------------------------*/ ivas_error ivas_td_binaural_renderer_ext( - const TDREND_WRAPPER *pTDRend, /* i : TD Renderer wrapper structure */ - const IVAS_REND_AudioConfig inConfig, /* i : Input audio configuration */ - const LSSETUP_CUSTOM_STRUCT *customLsInput, /* i : Input custom loudspeaker layout */ + const TDREND_WRAPPER *pTDRend, /* i : TD Renderer wrapper structure */ + const AUDIO_CONFIG inConfig, /* i : Input audio configuration */ + const LSSETUP_CUSTOM_STRUCT *customLsInput, /* i : Input custom loudspeaker layout */ const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData, /* i : Combined head and external orientations */ - const IVAS_REND_AudioObjectPosition *currentPos, /* i : Object position */ - const REVERB_HANDLE hReverb, /* i : Reverberator handle */ - const int16_t output_frame, /* i : output frame length */ - float output[][L_FRAME48k] /* i/o: SCE channels / Binaural synthesis */ + const IVAS_REND_AudioObjectPosition *currentPos, /* i : Object position */ + const REVERB_HANDLE hReverb, /* i : Reverberator handle */ + const int16_t ism_md_subframe_update_ext, /* i : Metadata Delay in subframes to sync with audio delay */ +#ifdef API_5MS + const int32_t output_Fs, /* i : output sampling rate */ +#endif + const int16_t output_frame, /* i : output frame length */ + float output[][L_FRAME48k] /* i/o: SCE channels / Binaural synthesis */ ) { ISM_METADATA_FRAME hIsmMetaDataFrame; @@ -627,7 +661,6 @@ ivas_error ivas_td_binaural_renderer_ext( IVAS_REND_AudioConfigType inConfigType; AUDIO_CONFIG transport_config; ivas_error error; - int16_t ism_md_subframe_update_ext; float *p_output[MAX_OUTPUT_CHANNELS]; int16_t ch; @@ -641,13 +674,13 @@ ivas_error ivas_td_binaural_renderer_ext( inConfigType = getAudioConfigType( inConfig ); lfe_idx = LFE_CHANNEL; hIsmMetaData[0] = NULL; - ism_md_subframe_update_ext = 0; + if ( inConfigType == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) { ivas_format = MC_FORMAT; - transport_config = getIvasAudioConfigFromRendAudioConfig( inConfig ); - if ( inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + transport_config = inConfig; + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = getAudioConfigNumChannels( inConfig, &num_src ) ) != IVAS_ERR_OK ) { @@ -678,7 +711,12 @@ ivas_error ivas_td_binaural_renderer_ext( ( hCombinedOrientationData != NULL ) ? ( *hCombinedOrientationData )->enableCombinedOrientation : NULL, ( hCombinedOrientationData != NULL ) ? ( *hCombinedOrientationData )->Quaternions : NULL, ( hCombinedOrientationData != NULL ) ? ( *hCombinedOrientationData )->listenerPos : NULL, - ism_md_subframe_update_ext, p_output, output_frame ) ) != IVAS_ERR_OK ) + ism_md_subframe_update_ext, p_output, output_frame +#ifdef API_5MS + , + (int16_t) ( ( output_frame * FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES ) / output_Fs ) +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -688,6 +726,169 @@ ivas_error ivas_td_binaural_renderer_ext( return IVAS_ERR_OK; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*---------------------------------------------------------------------* + * ObjRenderIvasFrame_splitBinaural() + * + * Render to multiple binaural pairs based on relative head positions for split rendering. + *---------------------------------------------------------------------*/ + +ivas_error ObjRenderIvasFrame_splitBinaural( + 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 */ +) +{ + int16_t i; + float tmpProcessing[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + float tmpBinaural[MAX_HEAD_ROT_POSES * 2][L_FRAME48k]; + float *p_tmpProcessing[MAX_OUTPUT_CHANNELS]; + int16_t pos_idx; + IVAS_QUATERNION originalHeadRot[MAX_PARAM_SPATIAL_SUBFRAMES]; + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + BINAURAL_TD_OBJECT_RENDERER_HANDLE tmpTdRendHandle; + ivas_error error; + + push_wmops( "ObjRenderIvasFrame_splitBinaural" ); + + pMultiBinPoseData = &st_ivas->hSplitBinRend.splitrend.multiBinPoseData; + + /* If not yet allocated, open additional instances of TD renderer */ + for ( i = 0; i < pMultiBinPoseData->num_poses - 1; ++i ) + { + if ( st_ivas->hSplitBinRend.splitrend.hTdRendHandles[i] != NULL ) + { + continue; + } + + if ( ( error = ivas_td_binaural_open_unwrap( &st_ivas->hHrtfTD, + st_ivas->hDecoderConfig->output_Fs, + st_ivas->nchan_transport, + st_ivas->ivas_format, + st_ivas->transport_config, + st_ivas->hRenderConfig->directivity, + st_ivas->hTransSetup, + &st_ivas->hSplitBinRend.splitrend.hTdRendHandles[i], + &st_ivas->binaural_latency_ns ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* Save current head positions */ +#ifdef API_5MS + for ( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + originalHeadRot[i] = st_ivas->hCombinedOrientationData->Quaternions[i]; + } + + + /* Copy input audio to a processing buffer. Cannot render in-place because binaurally rendered + * audio would overwrite original material, which is still needed for rendering next head pose. */ + for ( i = 0; i < st_ivas->nchan_transport; ++i ) + { + mvr2r( output[i], tmpProcessing[i], output_frame ); + } + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + /* Update head positions */ + if ( pos_idx != 0 ) + { +#ifdef API_5MS + for ( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + if ( originalHeadRot[i].w == -3.0f ) + { + st_ivas->hCombinedOrientationData->Quaternions[i].w = -3.0f; + st_ivas->hCombinedOrientationData->Quaternions[i].x = originalHeadRot[i].x + pMultiBinPoseData->relative_head_poses[pos_idx][0]; + st_ivas->hCombinedOrientationData->Quaternions[i].y = originalHeadRot[i].y + pMultiBinPoseData->relative_head_poses[pos_idx][1]; + st_ivas->hCombinedOrientationData->Quaternions[i].z = originalHeadRot[i].z + pMultiBinPoseData->relative_head_poses[pos_idx][2]; + } + else + { + st_ivas->hCombinedOrientationData->Quaternions[i].w = -3.0f; + + Quat2EulerDegree( originalHeadRot[i], /* TODO tmu : fix bug with ordering*/ + &st_ivas->hCombinedOrientationData->Quaternions[i].z, + &st_ivas->hCombinedOrientationData->Quaternions[i].y, + &st_ivas->hCombinedOrientationData->Quaternions[i].x ); + + st_ivas->hCombinedOrientationData->Quaternions[i].x += pMultiBinPoseData->relative_head_poses[pos_idx][0]; + st_ivas->hCombinedOrientationData->Quaternions[i].y += pMultiBinPoseData->relative_head_poses[pos_idx][1]; + st_ivas->hCombinedOrientationData->Quaternions[i].z += pMultiBinPoseData->relative_head_poses[pos_idx][2]; + } + } + } + + /* Handle the 1 ISM case where there is only one channel in the input buffer */ + for ( i = 0; i < max( st_ivas->nchan_transport, BINAURAL_CHANNELS ); ++i ) + { + p_tmpProcessing[i] = tmpProcessing[i]; + } + + /* Render */ + if ( pos_idx == 0 ) + { + if ( ( error = ivas_td_binaural_renderer( st_ivas, p_tmpProcessing, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + /* Tmp swap renderer handles for rendering call */ + tmpTdRendHandle = st_ivas->hBinRendererTd; + st_ivas->hBinRendererTd = st_ivas->hSplitBinRend.splitrend.hTdRendHandles[pos_idx - 1]; + + if ( ( error = ivas_td_binaural_renderer( st_ivas, p_tmpProcessing, output_frame ) ) != IVAS_ERR_OK ) + { + return error; + } + + st_ivas->hBinRendererTd = tmpTdRendHandle; + } + + /* Copy rendered audio to tmp storage buffer. Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + mvr2r( tmpProcessing[0], tmpBinaural[2 * pos_idx], output_frame ); + mvr2r( tmpProcessing[1], tmpBinaural[2 * pos_idx + 1], output_frame ); + + /* Overwrite first 2 channels with original input audio again */ + mvr2r( output[0], tmpProcessing[0], output_frame ); + mvr2r( output[1], tmpProcessing[1], output_frame ); + } + + /* Copy from storage buffer to output */ + for ( i = 0; i < pMultiBinPoseData->num_poses * BINAURAL_CHANNELS; ++i ) + { + mvr2r( tmpBinaural[i], output[i], output_frame ); + } + + /* Restore original head rotation */ +#ifdef API_5MS + for ( i = 0; i < st_ivas->hCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + st_ivas->hCombinedOrientationData->Quaternions[i] = originalHeadRot[i]; + } + + pop_wmops(); + + return IVAS_ERR_OK; +} +#endif + + /*---------------------------------------------------------------------* * angles_to_vec() * diff --git a/lib_rend/ivas_objectRenderer_hrFilt.c b/lib_rend/ivas_objectRenderer_hrFilt.c index 6463261ec47145ba640e0bb77312f4afce673dc9..ef7966f6bfc357c31e0a80b83c06d8df774f687a 100644 --- a/lib_rend/ivas_objectRenderer_hrFilt.c +++ b/lib_rend/ivas_objectRenderer_hrFilt.c @@ -79,8 +79,6 @@ ivas_error TDREND_REND_RenderSourceHRFilt( v_add( LeftOutputFrame, output_buf[0], output_buf[0], subframe_length ); v_add( RightOutputFrame, output_buf[1], output_buf[1], subframe_length ); - Src_p->InputFrame_p += subframe_length; /* Increment input pointer */ - return IVAS_ERR_OK; } @@ -97,6 +95,7 @@ void GetFilterFromAngle( TDREND_HRFILT_FiltSet_t *HrFiltSet_p, /* i/o: HR filter set structure */ const float Elev, /* i : Elevation, degrees */ float Azim, /* i : Azimuth, degrees */ + const int16_t filterlength, /* i : Filter length */ float *hrf_left, /* o : Left HR filter */ float *hrf_right, /* o : Right HR filter */ int16_t *itd /* o : ITD value */ @@ -105,8 +104,9 @@ void GetFilterFromAngle( GenerateFilter( Elev, Azim, &HrFiltSet_p->ModelParams, &HrFiltSet_p->ModelEval ); - mvr2r( HrFiltSet_p->ModelEval.hrfModL, hrf_left, HrFiltSet_p->ModelParams.K ); - mvr2r( HrFiltSet_p->ModelEval.hrfModR, hrf_right, HrFiltSet_p->ModelParams.K ); + mvr2r( HrFiltSet_p->ModelEval.hrfModL, hrf_left, filterlength ); + mvr2r( HrFiltSet_p->ModelEval.hrfModR, hrf_right, filterlength ); + /* 4. Evaluate the ITD */ if ( HrFiltSet_p->ModelParams.UseItdModel ) { diff --git a/lib_rend/ivas_objectRenderer_mix.c b/lib_rend/ivas_objectRenderer_mix.c index 509d22d320f98ef6d1fcc17dc55b3ec8cc5ae14b..f65f6a45224f312969c8acc85d668af9e60edc3a 100644 --- a/lib_rend/ivas_objectRenderer_mix.c +++ b/lib_rend/ivas_objectRenderer_mix.c @@ -37,6 +37,7 @@ #include "ivas_rom_TdBinauralRenderer.h" #include "ivas_error.h" #include "wmc_auto.h" +#include "ivas_rom_rend.h" #ifdef DEBUGGING #include "debug.h" #endif @@ -309,13 +310,12 @@ ivas_error TDREND_MIX_AddSrc( } else { - if ( ( PosType < TDREND_POSTYPE_ABSOLUTE ) || ( PosType > TDREND_POSTYPE_RELATIVE_TO_LISTENER ) ) + if ( ( PosType < TDREND_POSTYPE_ABSOLUTE ) || ( PosType > TDREND_POSTYPE_NON_DIEGETIC ) ) { return ( IVAS_ERROR( IVAS_ERR_INTERNAL, "Invalid position type!\n" ) ); } else { - /* Alloc and init a complete source: signal+spatial+rend components */ if ( ( error = TDREND_SRC_Alloc( &Src_p ) ) != IVAS_ERR_OK ) { @@ -384,43 +384,62 @@ static ivas_error DefaultBSplineModel( model = &( HrFiltSet_p->ModelParams ); modelITD = &( HrFiltSet_p->ModelParamsITD ); + switch ( output_Fs ) + { + case 48000: + HrFiltSet_p->lr_energy_and_iac[0] = defaultHRIR_left_avg_power_48kHz; + HrFiltSet_p->lr_energy_and_iac[1] = defaultHRIR_right_avg_power_48kHz; + HrFiltSet_p->lr_energy_and_iac[2] = defaultHRIR_coherence_48kHz; + break; + case 32000: + HrFiltSet_p->lr_energy_and_iac[0] = defaultHRIR_left_avg_power_32kHz; + HrFiltSet_p->lr_energy_and_iac[1] = defaultHRIR_right_avg_power_32kHz; + HrFiltSet_p->lr_energy_and_iac[2] = defaultHRIR_coherence_32kHz; + break; + case 16000: + HrFiltSet_p->lr_energy_and_iac[0] = defaultHRIR_left_avg_power_16kHz; + HrFiltSet_p->lr_energy_and_iac[1] = defaultHRIR_right_avg_power_16kHz; + HrFiltSet_p->lr_energy_and_iac[2] = defaultHRIR_coherence_16kHz; + break; + } + /* Set ROM flag for correct deallocation */ model->modelROM = TRUE; /* int16_t parameters */ model->UseItdModel = 1; model->SplineDegree = 4; - model->elevDim2 = 20; - model->elevDim3 = 18; - model->AlphaN = 578; + model->elevDim2 = 17; + model->elevDim3 = 15; + model->AlphaN = 470; model->num_unique_azim_splines = 1; - model->elevSegSamples = 3; - model->elevBsLen[0] = 4; - model->elevBsLen[1] = 7; - model->elevBsLen[2] = 10; - model->elevBsLen[3] = 7; + model->elevSegSamples = 4; + model->elevBsLen[0] = 5; + model->elevBsLen[1] = 9; + model->elevBsLen[2] = 13; + model->elevBsLen[3] = 9; model->elevBsStart[0] = 0; - model->elevBsStart[1] = 4; - model->elevBsStart[2] = 11; - model->elevBsStart[3] = 21; + model->elevBsStart[1] = 5; + model->elevBsStart[2] = 14; + model->elevBsStart[3] = 27; - model->azimDim2 = orange53_rom_azimDim2; - model->azimDim3 = orange53_rom_azimDim3; - model->azim_start_idx = orange53_rom_azim_start_idx; - model->azimSegSamples = orange53_rom_azimSegSamples; - model->azimShapeIdx = orange53_rom_azimShapeIdx; - model->azimShapeSampFactor = orange53_rom_azimShapeSampFactor; + model->azimDim2 = defaultHRIR_rom_azimDim2; + model->azimDim3 = defaultHRIR_rom_azimDim3; + model->azim_start_idx = defaultHRIR_rom_azim_start_idx; + model->azimSegSamples = defaultHRIR_rom_azimSegSamples; + model->azimShapeIdx = defaultHRIR_rom_azimShapeIdx; + model->azimShapeSampFactor = defaultHRIR_rom_azimShapeSampFactor; /* float parameters */ - model->elevKSeq = (const float *) orange53_rom_elevKSeq; - model->elevBsShape = (const float *) orange53_rom_elevBsShape; + model->elevKSeq = (const float *) defaultHRIR_rom_elevKSeq; + model->elevBsShape = (const float *) defaultHRIR_rom_elevBsShape; if ( ( model->azimBsShape = (const float **) malloc( model->num_unique_azim_splines * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - model->azimBsShape[0] = (const float *) orange53_rom_azimBsShape; + model->azimBsShape[0] = (const float *) defaultHRIR_rom_azimBsShape; if ( ( model->azimKSeq = (float **) malloc( 18 * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); @@ -429,16 +448,16 @@ static ivas_error DefaultBSplineModel( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } - if ( ( model->azimKSeq[17] = (float *) malloc( 2 * sizeof( float * ) ) ) == NULL ) + if ( ( model->azimKSeq[model->elevDim3 - 1] = (float *) malloc( 2 * sizeof( float * ) ) ) == NULL ) { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Binaural TD renderer\n" ) ); } model->azimKSeq[0][0] = 0.0f; - model->azimKSeq[17][0] = 0.0f; + model->azimKSeq[model->elevDim3 - 1][0] = 0.0f; model->azimKSeq[0][1] = 360.0f; - model->azimKSeq[17][1] = 360.0f; + model->azimKSeq[model->elevDim3 - 1][1] = 360.0f; - for ( i = 1; i < 17; i++ ) + for ( i = 1; i < model->elevDim3 - 1; i++ ) { if ( ( model->azimKSeq[i] = (float *) malloc( model->azimDim2[i] * sizeof( float * ) ) ) == NULL ) /* azimDim2[i] = 91, i=2..15 */ { @@ -446,17 +465,17 @@ static ivas_error DefaultBSplineModel( } for ( j = 0; j < model->azimDim2[i]; j++ ) { - model->azimKSeq[i][j] = (float) orange53_rom_azimSegSamples[0] * j; + model->azimKSeq[i][j] = (float) defaultHRIR_rom_azimSegSamples[0] * j; } } switch ( output_Fs ) { case 48000: - model->AlphaL = (const float *) orange53_rom_AlphaL48; - model->AlphaR = (const float *) orange53_rom_AlphaR48; - model->EL = (const float *) orange53_rom_EL48; - model->ER = (const float *) orange53_rom_ER48; + model->AlphaL = (const float *) defaultHRIR_rom_AlphaL48; + model->AlphaR = (const float *) defaultHRIR_rom_AlphaR48; + model->EL = (const float *) defaultHRIR_rom_EL48; + model->ER = (const float *) defaultHRIR_rom_ER48; model->K = 128; if ( HrFiltSet_p->ModelParams.UseItdModel ) { @@ -464,10 +483,10 @@ static ivas_error DefaultBSplineModel( } break; case 32000: - model->AlphaL = (const float *) orange53_rom_AlphaL32; - model->AlphaR = (const float *) orange53_rom_AlphaR32; - model->EL = (const float *) orange53_rom_EL32; - model->ER = (const float *) orange53_rom_ER32; + model->AlphaL = (const float *) defaultHRIR_rom_AlphaL32; + model->AlphaR = (const float *) defaultHRIR_rom_AlphaR32; + model->EL = (const float *) defaultHRIR_rom_EL32; + model->ER = (const float *) defaultHRIR_rom_ER32; model->K = 86; if ( HrFiltSet_p->ModelParams.UseItdModel ) { @@ -475,10 +494,10 @@ static ivas_error DefaultBSplineModel( } break; case 16000: - model->AlphaL = (const float *) orange53_rom_AlphaL16; - model->AlphaR = (const float *) orange53_rom_AlphaR16; - model->EL = (const float *) orange53_rom_EL16; - model->ER = (const float *) orange53_rom_ER16; + model->AlphaL = (const float *) defaultHRIR_rom_AlphaL16; + model->AlphaR = (const float *) defaultHRIR_rom_AlphaR16; + model->EL = (const float *) defaultHRIR_rom_EL16; + model->ER = (const float *) defaultHRIR_rom_ER16; model->K = 43; if ( HrFiltSet_p->ModelParams.UseItdModel ) { @@ -504,7 +523,7 @@ static ivas_error DefaultBSplineModel( modelITD->elevBsStart[2] = 11; modelITD->elevBsStart[3] = 21; - modelITD->elevKSeq = model->elevKSeq; + modelITD->elevKSeq = defaultHRIR_rom_ITD_elevKSeq; modelITD->azimBsLen[0] = 11; modelITD->azimBsLen[1] = 21; @@ -517,14 +536,14 @@ static ivas_error DefaultBSplineModel( modelITD->azimSegSamples = 10; - modelITD->azimKSeq = orange53_rom_ITD_azimKSeq; - modelITD->W = (const float *) orange53_rom_ITD_W; - modelITD->azimBsShape = (const float *) orange53_rom_ITD_azimBsShape; - modelITD->elevBsShape = (const float *) orange53_rom_ITD_elevBsShape; + modelITD->azimKSeq = defaultHRIR_rom_ITD_azimKSeq; + modelITD->W = (const float *) defaultHRIR_rom_ITD_W; + modelITD->azimBsShape = (const float *) defaultHRIR_rom_ITD_azimBsShape; + modelITD->elevBsShape = (const float *) defaultHRIR_rom_ITD_elevBsShape; HRTF_model_precalc( model ); - HrFiltSet_p->latency_s = orange53_rom_latency_s; + HrFiltSet_p->latency_s = defaultHRIR_rom_latency_s; HrFiltSet_p->SampleRate = output_Fs; HrFiltSet_p->FiltLength = HrFiltSet_p->ModelParams.K; diff --git a/lib_rend/ivas_objectRenderer_sfx.c b/lib_rend/ivas_objectRenderer_sfx.c index 679887b3ecfdc233aa5c554141b9af9bd475897e..fd1c44060f7256bd13b7950578c2071be276ba54 100644 --- a/lib_rend/ivas_objectRenderer_sfx.c +++ b/lib_rend/ivas_objectRenderer_sfx.c @@ -182,6 +182,12 @@ static void sincResample( const float *p_sinc_forward; const float *p_sinc_backward; + /* avoid division by 0 */ + if ( 0 == length_out ) + { + return; + } + /* Compute fractional time step */ t_step = (float) ( length_in ) / (float) ( length_out ); diff --git a/lib_rend/ivas_objectRenderer_sources.c b/lib_rend/ivas_objectRenderer_sources.c index 8debd6619bc341bc6a55f83b8ff28bc239403bd5..2706a9c5c85604f398c3bcddb4341fb3e78a94db 100644 --- a/lib_rend/ivas_objectRenderer_sources.c +++ b/lib_rend/ivas_objectRenderer_sources.c @@ -218,7 +218,7 @@ static void TDREND_SRC_REND_Init( /* Internal state */ SrcRend_p->InputAvailable = FALSE; - SrcRend_p->PlayStatus = TDREND_PLAYSTATUS_INITIAL; + SrcRend_p->PlayStatus = TDREND_PLAYSTATUS_PLAYING; /* SrcGain */ for ( nC = 0; nC < SPAT_BIN_MAX_INPUT_CHANNELS; nC++ ) { @@ -275,82 +275,80 @@ void TDREND_SRC_REND_UpdateFiltersFromSpatialParams( Listener_p = hBinRendererTd->Listener_p; HrFiltSet_p = hBinRendererTd->HrFiltSet_p; - *filterlength = HrFiltSet_p->FiltLength; + *filterlength = min( HrFiltSet_p->FiltLength, SFX_SPAT_BIN_MAX_FILTER_LENGTH ); - /* 1. Map source pos to the coordinate system of the listener */ - switch ( SrcSpatial_p->PosType ) + if ( SrcSpatial_p->PosType == TDREND_POSTYPE_ABSOLUTE ) { - case TDREND_POSTYPE_RELATIVE_TO_LISTENER: - /* Listener relative position */ - mvr2r( SrcSpatial_p->Pos_p, ListRelPos, 3 ); - break; - case TDREND_POSTYPE_ABSOLUTE: - /* Absolute position */ - TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos, ListRelPosAbs ); - break; - default: /* Illegal position type */ -#ifdef DEBUGGING - printf( "Warning! TDREND_SRC_REND_UpdateFiltersFromSpatialParams: Invalid position type. Assuming absolute position!\n" ); -#endif - /* Assume absolute position */ - TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos, ListRelPosAbs ); - break; - } - ListRelDist = TDREND_SPATIAL_VecNorm( ListRelPos ); + /* Absolute position */ + TDREND_SPATIAL_VecMapToNewCoordSystem( SrcSpatial_p->Pos_p, Listener_p->Pos, Listener_p->Front, Listener_p->Up, Listener_p->Right, ListRelPos, ListRelPosAbs ); + ListRelDist = TDREND_SPATIAL_VecNorm( ListRelPos ); - /* 2. Evaluate the Elevation and Azimuth angles */ - if ( ( ListRelPos[0] == 0 ) && ( ListRelPos[1] == 0 ) && ( ListRelPos[2] == 0 ) ) - { - Elev = 0.0; - Azim = 0.0; - } - else - { - Elev = _180_OVER_PI * atan2f( ListRelPos[2], sqrtf( ListRelPos[0] * ListRelPos[0] + ListRelPos[1] * ListRelPos[1] ) ); - /* Basis set is [front, right, up], which is a left-handed coordinate system. Minus sign here is to change to a positive-left system for azimuth */ - Azim = -1.0f * _180_OVER_PI * (float) atan2f( ListRelPos[1], ListRelPos[0] ); - } + /* 2. Evaluate the Elevation and Azimuth angles */ + if ( ( ListRelPos[0] == 0 ) && ( ListRelPos[1] == 0 ) && ( ListRelPos[2] == 0 ) ) + { + Elev = 0.0; + Azim = 0.0; + } + else + { + Elev = _180_OVER_PI * atan2f( ListRelPos[2], sqrtf( ListRelPos[0] * ListRelPos[0] + ListRelPos[1] * ListRelPos[1] ) ); + /* Basis set is [front, right, up], which is a left-handed coordinate system. Minus sign here is to change to a positive-left system for azimuth */ + Azim = -1.0f * _180_OVER_PI * (float) atan2f( ListRelPos[1], ListRelPos[0] ); + } - GetFilterFromAngle( HrFiltSet_p, Elev, Azim, hrf_left, hrf_right, itd ); + GetFilterFromAngle( HrFiltSet_p, Elev, Azim, *filterlength, hrf_left, hrf_right, itd ); - /* 6. Evaluate the directional and distance gains */ - /* Directional gain */ - *SrcRend_p->DirGain_p = 1.0f; - if ( SrcSpatial_p->DirAttenEnabled ) - { - *SrcRend_p->DirGain_p = TDREND_SRC_SPATIAL_GetDirGain( &SrcSpatial_p->DirAtten, SrcSpatial_p->Front_p, ListRelPosAbs ); - } + /* 6. Evaluate the directional and distance gains */ + /* Directional gain */ + *SrcRend_p->DirGain_p = 1.0f; + if ( SrcSpatial_p->DirAttenEnabled ) + { + *SrcRend_p->DirGain_p = TDREND_SRC_SPATIAL_GetDirGain( &SrcSpatial_p->DirAtten, SrcSpatial_p->Front_p, ListRelPosAbs ); + } - /* Distance gain */ - *SrcRend_p->DistGain_p = 1.0f; - if ( hBinRendererTd->UseCommonDistAttenModel ) - { - if ( hBinRendererTd->DistAttenEnabled ) + /* Distance gain */ + *SrcRend_p->DistGain_p = 1.0f; + if ( hBinRendererTd->UseCommonDistAttenModel ) { - SrcSpatial_p->DistAtten.DistAttenModel = hBinRendererTd->DistAttenModel; - *SrcRend_p->DistGain_p = TDREND_SRC_SPATIAL_GetDistGain( &SrcSpatial_p->DistAtten, ListRelDist ); + if ( hBinRendererTd->DistAttenEnabled ) + { + SrcSpatial_p->DistAtten.DistAttenModel = hBinRendererTd->DistAttenModel; + *SrcRend_p->DistGain_p = TDREND_SRC_SPATIAL_GetDistGain( &SrcSpatial_p->DistAtten, ListRelDist ); + } } - } - else - { - if ( SrcSpatial_p->DistAttenEnabled ) + else { - *SrcRend_p->DistGain_p = TDREND_SRC_SPATIAL_GetDistGain( &SrcSpatial_p->DistAtten, ListRelDist ); + if ( SrcSpatial_p->DistAttenEnabled ) + { + *SrcRend_p->DistGain_p = TDREND_SRC_SPATIAL_GetDistGain( &SrcSpatial_p->DistAtten, ListRelDist ); + } } - } - /* Update total gains */ - *Gain = ( *SrcRend_p->SrcGain_p ) * ( *SrcRend_p->DirGain_p ) * ( *SrcRend_p->DistGain_p ) * hBinRendererTd->Gain; + /* Update total gains */ + *Gain = ( *SrcRend_p->SrcGain_p ) * ( *SrcRend_p->DirGain_p ) * ( *SrcRend_p->DistGain_p ) * hBinRendererTd->Gain; - /* Delta for interpolation, in case the angular step exceeds MAX_ANGULAR_STEP */ - elev_delta = Elev - Src_p->elev_prev; - azim_delta = Azim - Src_p->azim_prev; - Src_p->elev_prev = Elev; - Src_p->azim_prev = Azim; + /* Delta for interpolation, in case the angular step exceeds MAX_ANGULAR_STEP */ + elev_delta = Elev - Src_p->elev_prev; + azim_delta = Azim - Src_p->azim_prev; + Src_p->elev_prev = Elev; + Src_p->azim_prev = Azim; - azim_delta = ( azim_delta > 180.0f ) ? ( azim_delta - 360 ) : ( ( azim_delta < -180.0f ) ? ( azim_delta + 360 ) : ( azim_delta ) ); /* map to -180:180 range */ - *intp_count = min( MAX_INTERPOLATION_STEPS, max( (int16_t) ( fabsf( azim_delta ) * MAX_ANGULAR_STEP_INV ), (int16_t) ( fabsf( elev_delta ) * MAX_ANGULAR_STEP_INV ) ) ); + azim_delta = ( azim_delta > 180.0f ) ? ( azim_delta - 360 ) : ( ( azim_delta < -180.0f ) ? ( azim_delta + 360 ) : ( azim_delta ) ); /* map to -180:180 range */ + *intp_count = min( MAX_INTERPOLATION_STEPS, max( (int16_t) ( fabsf( azim_delta ) * MAX_ANGULAR_STEP_INV ), (int16_t) ( fabsf( elev_delta ) * MAX_ANGULAR_STEP_INV ) ) ); + } + else /* TDREND_POSTYPE_NON_DIEGETIC */ + { + *itd = 0; + *Gain = 1.0f; + set_f( hrf_left, 0.0f, *filterlength ); + set_f( hrf_right, 0.0f, *filterlength ); + hrf_left[0] = ( SrcSpatial_p->Pos_p[1] + 1.f ) * 0.5f; + hrf_right[0] = 1.f - hrf_left[0]; + *intp_count = MAX_INTERPOLATION_STEPS; + Src_p->elev_prev = 0; + Src_p->azim_prev = 360.0f; /* Dummy angle -- sets max interpolation if switching to TDREND_POSTYPE_ABSOLUTE */ + } if ( ( *intp_count > 0 ) && subframe_update_flag ) { @@ -674,7 +672,7 @@ void TDREND_SRC_Init( /* Reset memory buffers */ Src_p->itd = 0; Src_p->previtd = 0; - Src_p->filterlength = -1; + Src_p->filterlength = 1; /* Init to unit impulse of length 1 */ set_f( Src_p->mem_itd, 0.0f, ITD_MEM_LEN ); set_f( Src_p->mem_hrf_left, 0.0f, SFX_SPAT_BIN_MAX_FILTER_LENGTH - 1 ); set_f( Src_p->mem_hrf_right, 0.0f, SFX_SPAT_BIN_MAX_FILTER_LENGTH - 1 ); @@ -685,6 +683,7 @@ void TDREND_SRC_Init( Src_p->hrf_right_prev[0] = 1; Src_p->azim_prev = 0.0f; Src_p->elev_prev = 0.0f; + Src_p->Gain = 1; Src_p->prevGain = 1.0f; return; diff --git a/lib_rend/ivas_omasa_ana.c b/lib_rend/ivas_omasa_ana.c index eeed6a8253cce3146db337b57c3858c48cc60387..f669a6767167702c2ca5962f3485d8bd67cadeb2 100644 --- a/lib_rend/ivas_omasa_ana.c +++ b/lib_rend/ivas_omasa_ana.c @@ -116,11 +116,17 @@ ivas_error ivas_omasa_ana_open( /* intensity 3-dim */ for ( i = 0; i < DIRAC_NUM_DIMS; i++ ) { - hOMasa->direction_vector_m[i] = (float **) malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( float * ) ); + if ( ( hOMasa->direction_vector_m[i] = (float **) malloc( MAX_PARAM_SPATIAL_SUBFRAMES * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data\n" ) ); + } for ( j = 0; j < MAX_PARAM_SPATIAL_SUBFRAMES; j++ ) { - hOMasa->direction_vector_m[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ); + if ( ( hOMasa->direction_vector_m[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data\n" ) ); + } set_zero( hOMasa->direction_vector_m[i][j], MASA_FREQUENCY_BANDS ); } } @@ -129,7 +135,10 @@ ivas_error ivas_omasa_ana_open( { for ( j = 0; j < DIRAC_NO_COL_AVG_DIFF; j++ ) { - hOMasa->buffer_intensity_real[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ); + if ( ( hOMasa->buffer_intensity_real[i][j] = (float *) malloc( MASA_FREQUENCY_BANDS * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for OMASA data\n" ) ); + } set_zero( hOMasa->buffer_intensity_real[i][j], MASA_FREQUENCY_BANDS ); } } diff --git a/lib_rend/ivas_output_init.c b/lib_rend/ivas_output_init.c index 4e1479faf89f1a6666fbd1ea1d2d420128c87d47..3c4bf2d2aae334d0bfca06d2ff2e2f7badc14767 100644 --- a/lib_rend/ivas_output_init.c +++ b/lib_rend/ivas_output_init.c @@ -91,6 +91,10 @@ int16_t audioCfg2channels( nchan_out = 8; break; case AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif case AUDIO_CONFIG_BINAURAL_ROOM_IR: case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: nchan_out = 2; @@ -218,6 +222,10 @@ void ivas_output_init( hOutSetup->is_planar_setup = 0; break; case AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif case AUDIO_CONFIG_BINAURAL_ROOM_IR: case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: case AUDIO_CONFIG_ISM1: @@ -245,3 +253,145 @@ void ivas_output_init( return; } + + +/*-----------------------------------------------------------------* + * ivas_get_nchan_buffers_dec() + * + * Return number of decoder audio buffers + *-----------------------------------------------------------------*/ + +/*! r: number of decoder buffers */ +int16_t ivas_get_nchan_buffers_dec( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +) +{ + int16_t nchan_out_buff; + AUDIO_CONFIG output_config; + + output_config = st_ivas->hDecoderConfig->output_config; + + nchan_out_buff = MAX_OUTPUT_CHANNELS; + + if ( st_ivas->ivas_format == MONO_FORMAT ) + { + nchan_out_buff = 0; + } + else if ( st_ivas->ivas_format == STEREO_FORMAT ) + { + nchan_out_buff = max( st_ivas->hDecoderConfig->nchan_out, CPE_CHANNELS ); + } + else if ( st_ivas->ivas_format == ISM_FORMAT ) + { + nchan_out_buff = st_ivas->nchan_ism; + + if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe ); + } + else if ( output_config != AUDIO_CONFIG_EXTERNAL ) + { + nchan_out_buff = max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + else if ( st_ivas->ivas_format == SBA_FORMAT ) + { + nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; + + if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe ); + } + else + { + nchan_out_buff = max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + else if ( st_ivas->ivas_format == MASA_FORMAT ) + { + nchan_out_buff = CPE_CHANNELS; + + if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe ); + } + else if ( output_config != AUDIO_CONFIG_EXTERNAL ) + { + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + else if ( st_ivas->ivas_format == MASA_ISM_FORMAT ) + { + nchan_out_buff = st_ivas->nchan_ism + CPE_CHANNELS; + + if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe ); + } + else if ( output_config != AUDIO_CONFIG_EXTERNAL ) + { + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + else if ( st_ivas->ivas_format == SBA_ISM_FORMAT ) + { + nchan_out_buff = st_ivas->nchan_ism + st_ivas->nchan_transport; + + if ( st_ivas->hMCT != NULL ) + { + nchan_out_buff = ( ( nchan_out_buff + 1 ) >> 1 ) << 1; /* ensure odd number of channels in MCT */ + } + + if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe ); + } + else if ( output_config != AUDIO_CONFIG_EXTERNAL ) + { + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( output_config ) ); + + if ( st_ivas->renderer_type == RENDERER_OSBA_AMBI || st_ivas->renderer_type == RENDERER_OSBA_LS ) + { + nchan_out_buff = max( nchan_out_buff + st_ivas->nchan_ism, audioCfg2channels( output_config ) ); /* needed for ivas_sba_upmixer_renderer() */ + } + else + { + nchan_out_buff = max( nchan_out_buff + st_ivas->nchan_ism, audioCfg2channels( output_config ) ); /* needed for iivas_spar_dec_upmixer_sf() which is based on 'nchan_out' */ + } + } + else if ( output_config == AUDIO_CONFIG_EXTERNAL ) + { + nchan_out_buff = st_ivas->hDecoderConfig->nchan_out + st_ivas->nchan_ism; /*take into account sba_ch_idx' in ivas_dec() */ + } + + nchan_out_buff = min( nchan_out_buff, MAX_OUTPUT_CHANNELS + MAX_NUM_OBJECTS ); + } + else if ( st_ivas->ivas_format == MC_FORMAT ) + { + nchan_out_buff = st_ivas->hDecoderConfig->nchan_out; + + if ( output_config == AUDIO_CONFIG_LS_CUSTOM ) + { + nchan_out_buff = max( nchan_out_buff, st_ivas->hOutSetup.nchan_out_woLFE + st_ivas->hOutSetup.num_lfe ); + } + else + { + nchan_out_buff = max( audioCfg2channels( st_ivas->transport_config ), audioCfg2channels( st_ivas->intern_config ) ); + nchan_out_buff = max( nchan_out_buff, audioCfg2channels( output_config ) ); + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( output_config == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || output_config == 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.h b/lib_rend/ivas_prot_rend.h index 803a612502e88c4edc139db1c8c7dbf2bd704748..578bac9dee37d3b9d4848a574c6439ae8b9a95d7 100644 --- a/lib_rend/ivas_prot_rend.h +++ b/lib_rend/ivas_prot_rend.h @@ -37,6 +37,7 @@ #include "options.h" #include "ivas_error.h" #include "lib_rend.h" +#include "ivas_stat_rend.h" #include "ivas_stat_dec.h" // Note: needed until #156 is resolved /* clang-format off */ @@ -46,20 +47,14 @@ *----------------------------------------------------------------------------------*/ IVAS_REND_AudioConfigType getAudioConfigType( - const IVAS_REND_AudioConfig config + const AUDIO_CONFIG config ); ivas_error getAudioConfigNumChannels( - const IVAS_REND_AudioConfig config, + const AUDIO_CONFIG config, int16_t *numChannels ); -AUDIO_CONFIG getIvasAudioConfigFromRendAudioConfig( - IVAS_REND_AudioConfig rendConfig ); - -IVAS_REND_AudioConfig getRendAudioConfigFromIvasAudioConfig( - AUDIO_CONFIG config ); - /*----------------------------------------------------------------------------------* * output setup prototypes @@ -75,12 +70,19 @@ void ivas_output_init( const AUDIO_CONFIG output_config /* i : output audio configuration */ ); +/*! r: number of decoder buffers */ +int16_t ivas_get_nchan_buffers_dec( + Decoder_Struct *st_ivas /* i/o: IVAS decoder structure */ +); + + /*----------------------------------------------------------------------------------* * Limiter prototypes *----------------------------------------------------------------------------------*/ -/*! r: limiter struct handle */ -IVAS_LIMITER_HANDLE ivas_limiter_open( + +ivas_error ivas_limiter_open( + IVAS_LIMITER_HANDLE *hLimiter_out, /* o : limiter struct handle */ const int16_t num_channels, /* i : number of I/O channels */ const int32_t sampling_rate /* i : sampling rate for processing */ ); @@ -133,7 +135,7 @@ void efap_determine_gains( /*----------------------------------------------------------------------------------* - * SBA rendering + * DirAC/MASA rendering *----------------------------------------------------------------------------------*/ void ivas_sba_prototype_renderer( @@ -149,20 +151,20 @@ ivas_error ivas_sba_get_hoa_dec_matrix( const int16_t ambisonics_order /* i : Ambisonics order */ ); -#ifdef FIX_564 - -void ivas_dirac_dec_binaural_gain( - float output[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ +void ivas_dirac_dec_binaural_sba_gain( + float *output[], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t nchan_remapped, /* i : num channels after remapping of TCs */ const int16_t output_frame /* i : output frame length */ ); -#endif void ivas_dirac_dec_binaural( Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure */ COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i : combined orientation handle */ - float output_f[][L_FRAME48k], /* i/o: synthesized core-coder transport channels/DirAC output */ + float *output_f[], /* i/o: synthesized core-coder transport channels/DirAC output */ const int16_t nchan_transport /* i : number of transport channels */ +#ifdef API_5MS + ,const int16_t num_subframes /* i : number of subframes to render */ +#endif ); void ivas_dirac_dec_binaural_render( @@ -187,6 +189,324 @@ ivas_error ivas_dirac_dec_binaural_copy_hrtfs( HRTFS_PARAMBIN_HANDLE *hHrtfParambin /* i/o: HRTF structure for rendering */ ); +/*! r: Configured reqularization factor value */ +float configure_reqularization_factor( + const IVAS_FORMAT ivas_format, /* i : IVAS format */ + const int32_t ivas_total_brate /* i : total IVAS bitrate */ +); + +ivas_error ivas_dirac_alloc_mem( + DIRAC_REND_HANDLE hDirACRend, + const RENDERER_TYPE renderer_type, + const int16_t num_freq_bands, + DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem, + const int16_t hodirac_flag +); + +void ivas_dirac_free_mem( + DIRAC_DEC_STACK_MEM_HANDLE hDirAC_mem +); + +void initDiffuseResponses( + float *diffuse_response_function, + const int16_t num_channels, + AUDIO_CONFIG output_config, + IVAS_OUTPUT_SETUP hOutSetup, + const int16_t ambisonics_order, + const IVAS_FORMAT ivas_format, + int16_t *num_ele_spk_no_diffuse_rendering, + AUDIO_CONFIG transport_config +); + +void computeIntensityVector_dec( + float Cldfb_RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + const int16_t num_frequency_bands, + float *intensity_real_x, + float *intensity_real_y, + float *intensity_real_z +); + +void protoSignalComputation_shd( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_direct_buffer_f, + float *proto_diffuse_buffer_f, + float *reference_power, + const int16_t slot_index, + const int16_t num_inputs, + const int16_t num_outputs_diff, + const int16_t num_freq_bands, + float *p_Rmat +); + +void protoSignalComputation1( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_frame_f, + float *proto_direct_buffer_f, + float *reference_power, + float *proto_power_smooth, + const int16_t slot_index, + const int16_t num_outputs_diff, + const int16_t num_freq_bands +); + +void protoSignalComputation2( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_frame_f, + float *proto_direct_buffer_f, + float *reference_power, + float *proto_power_smooth, + const int16_t isloudspeaker, + const int16_t slot_index, + const int16_t num_freq_bands, + MASA_STEREO_TYPE_DETECT *stereo_type_detect +); + +void protoSignalComputation4( + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float *proto_frame_f, + float *proto_direct_buffer_f, + float *reference_power, + float *proto_power_smooth, + const int16_t slot_index, + const int16_t num_outputs_diff, + const int16_t num_freq_bands, + const + float *mtx_hoa_decoder, + const int16_t nchan_transport, + const int16_t *sba_map_tc_ind +); + +void ivas_dirac_dec_compute_diffuse_proto( + DIRAC_REND_HANDLE hDirACRend, + const int16_t num_freq_bands, + const int16_t slot_idx +); + +void computeDirectionAngles( + float *intensity_real_x, + float *intensity_real_y, + float *intensity_real_z, + const int16_t num_frequency_bands, + int16_t *azimuth, + int16_t *elevation +); + +void ivas_masa_init_stereotype_detection( + MASA_STEREO_TYPE_DETECT *stereo_type_detect +); + +void ivas_masa_stereotype_detection( + MASA_STEREO_TYPE_DETECT *stereo_type_detect +); + +void ivas_lfe_synth_with_cldfb( + MCMASA_LFE_SYNTH_DATA_HANDLE hMasaLfeSynth, + float RealBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBuffer[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float RealBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float ImagBufferLfe[MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + const int16_t slot_index, + const int16_t subframe_index, + const int16_t nchan_transport +); + +void rotateAziEle_DirAC( + int16_t *azi, + int16_t *ele, + const int16_t band1, + const int16_t band2, + const float *p_Rmat +); + +ivas_error ivas_dirac_dec_onset_detection_open( + const int16_t num_channels, + const int16_t num_freq_bands, + const int16_t max_band_decorr, + DIRAC_ONSET_DETECTION_PARAMS *ph_dirac_onset_detection_params, + DIRAC_ONSET_DETECTION_STATE *ph_dirac_onset_detection_state +); + +void ivas_dirac_dec_onset_detection_process( + const float *input_power_f, + float *onset_filter, + const int16_t num_protos_diff, + DIRAC_ONSET_DETECTION_PARAMS h_dirac_onset_detection_params, + DIRAC_ONSET_DETECTION_STATE h_dirac_onset_detection_state +); + +ivas_error ivas_dirac_dec_decorr_open( + DIRAC_DECORR_PARAMS **ph_freq_domain_decorr_ap_params, + DIRAC_DECORR_STATE **ph_freq_domain_decorr_ap_state, + const int16_t num_freq_bands, + int16_t num_outputs_diff, + const int16_t num_protos_diff, + const DIRAC_SYNTHESIS_CONFIG synthesisConf, + float *frequency_axis, + const int16_t nchan_transport, /* i : number of transport channels */ + const int32_t output_Fs /* i : output sampling rate */ +); + +void ivas_dirac_dec_decorr_process( + const int16_t num_freq_bands, + int16_t num_channels, + const int16_t num_protos_diff, + const DIRAC_SYNTHESIS_CONFIG synthesisConf, + const int16_t nchan_transport, /* i : number of transport channels */ + const float *input_frame_f, + const int16_t num_protos_dir, + const int16_t *proto_index_dir, + float *frame_dec_f, + float *onset_filter, + HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params, + HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state +); + +void ivas_dirac_dec_decorr_close( + HANDLE_DIRAC_DECORR_PARAMS *ph_dirac_decorr_params, + HANDLE_DIRAC_DECORR_STATE *ph_dirac_decorr_state +); + +ivas_error ivas_dirac_dec_output_synthesis_open( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const RENDERER_TYPE renderer_type, /* i : renderer type */ + const int16_t nchan_transport, /* i : number of transport channels */ + const int32_t output_Fs, /* i : output sampling rate */ + const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ +); + +void ivas_dirac_dec_output_synthesis_init( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const int16_t nchan_out_woLFE, /* i : number of output audio channels without LFE */ + const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ +); + +void ivas_dirac_dec_output_synthesis_close( + DIRAC_REND_HANDLE hDirACRend /* i/o: DirAC handle */ +); + +void ivas_dirac_dec_output_synthesis_process_slot( + const float *reference_power, /* i : Estimated power */ + const float *onset, /* i : onset filter */ + const int16_t *azimuth, + const int16_t *elevation, + const float *diffuseness, + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const int16_t sh_rot_max_order, + const float *p_Rmat, /* i : rotation matrix */ + const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ + const IVAS_OUTPUT_SETUP hOutSetup, /* i : output setup structure */ + const int16_t nchan_transport, /* i : number of transport channels */ + const int16_t ind_slot, /* i : index of the slot to be added to the input covariance */ + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + const int16_t dec_param_estim /* i : flag to indicate parameter estimation mode */ +); + +void ivas_dirac_dec_output_synthesis_process_subframe_gain_shd( + 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 */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const int16_t nchan_transport, /* i : number of transport channels */ + const int16_t nbslots, /* i : number of slots to process */ + const float *onset_filter, + float *diffuseness, + const int16_t hodirac_flag, /* i : flag to indicate HO-DirAC mode */ + const int16_t dec_param_estim /* i : flag to indicate parameter estimation mode */ +); + +void ivas_dirac_dec_output_synthesis_process_subframe_psd_ls( + 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 */ + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const int16_t nbslots, /* i : number of slots to process */ + float *diffuseness_vector, /* i : diffuseness (needed for direction smoothing)*/ + float *reference_power_smooth, + float qualityBasedSmFactor, + const int16_t enc_param_start_band +); + +void compute_hoa_encoder_mtx( + const float *azimuth, + const float *elevation, + float *response, + const int16_t num_responses, + const int16_t ambisonics_order ); + +void ivas_dirac_dec_compute_gain_factors( + const int16_t num_freq_bands, + const float *diffuseness, + const int16_t max_band_decorr, + float *direct_gain_factor, + float *diffuse_gain_factor +); + +void ivas_dirac_dec_compute_power_factors( + const int16_t num_freq_bands, + const float *diffuseness, + const int16_t max_band_decorr, + float *direct_power_factor, + float *diffuse_power_factor +); + +void ivas_dirac_dec_compute_directional_responses( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common spatial renderer data handle */ + DIRAC_REND_HANDLE hDirACRend, /* i/o: DirAC renderer handle */ + const VBAP_HANDLE hVBAPdata, /* i : VBAP structure */ + const MASA_DECODER_HANDLE hMasa, /* i : MASA decoder structure */ + MASA_ISM_DATA_HANDLE hMasaIsm, /* i : MASA_ISM data structure */ + const int16_t *azimuth, + const int16_t *elevation, + const int16_t md_idx, + const float *surCohRatio, + const int16_t shd_rot_max_order, /* i : split-order rotation method */ + const float *p_Rmat, /* i : rotation matrix */ + const int16_t hodirac_flag /* i : flag to indicate HO-DirAC mode */ +); + +void ivas_dirac_dec_get_frequency_axis( + float *frequency_axis, /* o : array of center frequencies of a real filter bank */ + const int32_t output_Fs, /* i : sampling frequency */ + const int16_t num_freq_bands /* i : number of frequency bands */ +); + +ivas_error ivas_spat_hSpatParamRendCom_config( + SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out, + const DIRAC_CONFIG_FLAG flag_config_inp, /* i/ : Flag determining if we open or reconfigure the DirAC decoder */ + const int16_t dec_param_estim_flag, + const IVAS_FORMAT ivas_format, + const MC_MODE mc_mode, + const int32_t output_Fs, + const int16_t hodirac_flag +); + +void ivas_spat_hSpatParamRendCom_close( + SPAT_PARAM_REND_COMMON_DATA_HANDLE *hSpatParamRendCom_out +); + +void ivas_dirac_rend_close( + DIRAC_REND_HANDLE *hDirACRend_out +); + +ivas_error ivas_dirac_allocate_parameters( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */ + const int16_t params_flag /* i : set of parameters flag */ +); + +void ivas_dirac_deallocate_parameters( + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom, /* i/o: common data for spatial parametric rendering */ + const int16_t params_flag /* i : set of parameters flag */ +); + + /*----------------------------------------------------------------------------------* * HRTF @@ -243,16 +563,23 @@ ivas_error ivas_td_binaural_renderer_unwrap( const int16_t ism_md_subframe_update, float *output[], /* i/o: SCE channels / Binaural synthesis */ const int16_t output_frame /* i : output frame length */ +#ifdef API_5MS + ,const int16_t num_subframes /* i : number of subframes to render */ +#endif ); ivas_error ivas_td_binaural_renderer_ext( const TDREND_WRAPPER *pTDRend, /* i : TD Renderer wrapper structure */ - const IVAS_REND_AudioConfig inConfig, /* i : Input audio configuration */ + const AUDIO_CONFIG inConfig, /* i : Input audio configuration */ const LSSETUP_CUSTOM_STRUCT *customLsInput, /* i : Input custom loudspeaker layout */ - const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData, /* i : Combined head and external orientations */ + const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData,/* i : Combined head and external orientations */ const IVAS_REND_AudioObjectPosition *currentPos, /* i : Object position */ const REVERB_HANDLE hReverb, /* i : Reverberator handle */ - const int16_t output_frame, /* i : output frame length */ + const int16_t ism_md_subframe_update_ext, /* i : Metadata Delay in subframes to sync with audio delay */ +#ifdef API_5MS + const int32_t output_Fs, /* i : output sampling rate */ +#endif + const int16_t output_frame, /* i : output frame length */ float output[][L_FRAME48k] /* i/o: SCE channels / Binaural synthesis */ ); @@ -270,7 +597,7 @@ ivas_error ivas_td_binaural_open_unwrap( ivas_error ivas_td_binaural_open_ext( TDREND_WRAPPER *pTDRend, - const IVAS_REND_AudioConfig inConfig, + const AUDIO_CONFIG inConfig, RENDER_CONFIG_DATA *hRendCfg, /* i : Renderer configuration */ LSSETUP_CUSTOM_STRUCT *customLsInput, const int32_t output_Fs @@ -280,7 +607,6 @@ void ivas_td_binaural_close( BINAURAL_TD_OBJECT_RENDERER_HANDLE *hBinRendererTd /* i/o: TD binaural object renderer handle */ ); - ivas_error TDREND_GetMix( BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD renderer handle */ float *output[], /* i/o: ISM object synth / rendered output in 0,1 */ @@ -297,7 +623,7 @@ void TDREND_Update_listener_orientation( ); void TDREND_Update_object_positions( - BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o : TD Renderer handle */ + BINAURAL_TD_OBJECT_RENDERER_HANDLE hBinRendererTd, /* i/o: TD Renderer handle */ const int16_t num_src, /* i : number of sources to render */ const IVAS_FORMAT in_format, /* i : Format of input sources */ const ISM_METADATA_HANDLE *hIsmMetaData /* i : Input metadata for ISM objects */ @@ -314,6 +640,7 @@ void GetFilterFromAngle( TDREND_HRFILT_FiltSet_t *HrFiltSet_p, /* i/o: HR filter set structure */ const float Elev, /* i : Elevation, degrees */ float Azim, /* i : Azimuth, degrees */ + const int16_t filterlength, /* i : Filter length */ float *LeftFilter, /* o : Left HR filter */ float *RightFilter, /* o : Right HR filter */ int16_t *itd /* o : ITD value */ @@ -496,13 +823,30 @@ ivas_error ivas_rend_openCrend( RENDER_CONFIG_DATA *hRendCfg, HRTFS_CREND_HANDLE hSetOfHRTF, const int32_t output_Fs +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif ); void ivas_rend_closeCrend( - CREND_WRAPPER_HANDLE *pCrend ); + CREND_WRAPPER_HANDLE *pCrend +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif +); + +ivas_error ivas_hrtf_init( + HRTFS_DATA *hHrtf /* i/o: HRTF handle */ +); ivas_error ivas_rend_initCrendWrapper( - CREND_WRAPPER_HANDLE *pCrend + CREND_WRAPPER_HANDLE *pCrend +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t num_poses +#endif ); ivas_error ivas_rend_crendProcess( @@ -515,6 +859,13 @@ ivas_error ivas_rend_crendProcess( EFAP_HANDLE hEFAPdata, float *output[], /* i/o: input/output audio channels */ const int32_t output_Fs +#ifdef API_5MS + ,const int16_t num_subframes /* i : number of subframes to render */ +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t pos_idx +#endif ); ivas_error ivas_rend_crendProcessSubframe( @@ -532,6 +883,7 @@ ivas_error ivas_rend_crendProcessSubframe( const int32_t output_Fs /* i : output sampling rate */ ); + /*----------------------------------------------------------------------------------* * Reverberator *----------------------------------------------------------------------------------*/ @@ -566,6 +918,7 @@ ivas_error ivas_reverb_open( REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */ const HRTFS_HANDLE hHrtf, /* i : HRTF handle */ + const float *lr_energy_and_iac[], /* i : precomuputed lr energies and iac */ RENDER_CONFIG_DATA *pConfig, /* i : Reverb configuration */ const int32_t output_Fs /* i : output sampling rate */ ); @@ -757,6 +1110,60 @@ void ivas_reverb_get_hrtf_set_properties( ); +/*---------------------------------------------------------------------------------* + * Shoebox Prototypes + *-----------------------------------------------------------------------------------*/ + +void ivas_shoebox_config_init( + shoebox_config_t *cal, + RENDER_CONFIG_HANDLE pConfig +); + +void ivas_shoebox_init( + shoebox_obj_t *obj, + shoebox_config_t *cal +); + +void ivas_shoebox_set_scene ( + shoebox_obj_t *obj, + shoebox_output_t *ER_PARAMS, + const float list_pos[3], + const float src_pos_data[], + const uint16_t isCartesian, + const uint16_t isRelative +); + +/*---------------------------------------------------------------------------------* + * Early reflections prototypes + *-----------------------------------------------------------------------------------*/ + +ivas_error ivas_er_init( + er_struct_t *reflections, + const AUDIO_CONFIG inConfig +); + +ivas_error ivas_er_set_reflections_mode( + er_struct_t *reflections, + const AUDIO_CONFIG inConfig +); + +ivas_error ivas_er_compute_reflections( + er_struct_t *reflections +); + +ivas_error ivas_er_encoder_init( + er_struct_t *reflections +); + +ivas_error ivas_er_process( + er_struct_t *reflections, + const int16_t frame_size, + const int16_t subframe_idx, + float **io, + const AUDIO_CONFIG inConfig +); + + /*---------------------------------------------------------------------------------* * Rotation Prototypes *-----------------------------------------------------------------------------------*/ @@ -776,15 +1183,28 @@ void Euler2Quat( IVAS_QUATERNION *quat /* o : quaternion describing the rotation */ ); -float deg2rad( float degrees ); - +float deg2rad( + float degrees +); +float rad2deg( + float radians +); void QuatToRotMat( const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ float Rmat[3][3] /* o : real-space rotation matrix for this rotation */ ); +#ifdef SPLIT_REND_WITH_HEAD_ROT +void Quat2EulerDegree( + const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ + float *yaw, /* o : yaw */ + float *pitch, /* o : pitch */ + float *roll /* o : roll */ +); +#endif + void rotateAziEle( float azi_in, /* i : output elevation */ float ele_in, /* i : input elevation */ @@ -838,6 +1258,10 @@ void rotateFrame_sd_cldfb( ivas_error ivas_external_orientation_open( EXTERNAL_ORIENTATION_HANDLE *hExtOrientationData /* o : external orientation handle */ +#ifdef API_5MS + , + const int16_t num_subframes +#endif ); void ivas_external_orientation_close( @@ -846,6 +1270,10 @@ void ivas_external_orientation_close( ivas_error ivas_combined_orientation_open( COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData /* o : combined orientation handle */ +#ifdef API_5MS + , + const int16_t num_subframes +#endif ); void ivas_combined_orientation_close( @@ -945,13 +1373,259 @@ ivas_error ivas_orient_trk_Process( IVAS_QUATERNION *pTrkRot /* o : tracked rotation */ ); +#ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef API_5MS +void ivas_set_split_rend_ht_setup( + IVAS_DEC_SPLIT_REND_WRAPPER *hSplitBinRend, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); +#endif +/*----------------------------------------------------------------------------------* + * Split binaural renderer prototypes + *----------------------------------------------------------------------------------*/ + +ivas_error ivas_set_split_rend_setup( + IVAS_DEC_SPLIT_REND_WRAPPER *hSplitBinRend, + IVAS_SPLIT_REND_CONFIG_DATA *hSplitBinConfig, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i/o: combined orientation handle */ +#ifdef API_5MS + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits +#else + uint8_t *splitRendBitsBuf +#endif +); + +void ivas_init_split_rend_handles( + SPLIT_REND_WRAPPER *hSplitRendWrapper +); + +void ivas_init_split_post_rend_handles( + SPLIT_POST_REND_WRAPPER *hSplitRendWrapper +); + +ivas_error ivas_split_renderer_open( + SPLIT_REND_WRAPPER *hSplitBinRend, + const IVAS_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const int32_t output_Fs, + const int16_t is_cldfb_in, + const int16_t is_pcm_out +#ifdef API_5MS + , + const int16_t is_5ms_frame +#endif +); + +void ivas_split_renderer_close( + SPLIT_REND_WRAPPER *hSplitBinRend +); + +ivas_error ivas_splitBinLCLDEncOpen( + BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc, + const int32_t iSampleRate, + const int16_t iChannels, + const int32_t iDataRate ); + +void ivas_splitBinLCLDEncClose( + BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc +); + +void ivas_splitBinLCLDEncProcess( + BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc, + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int32_t available_bits, + ivas_split_rend_bits_t *pBits +); + +ivas_error ivas_splitBinLCLDDecOpen( + BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec, + const int32_t iSampleRate, + const int16_t iChannels +); + +void ivas_splitBinLCLDDecClose( + BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec +); + +void ivas_splitBinLCLDDecProcess( + BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, + ivas_split_rend_bits_t *pBits, + float Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t bfi +); + +ivas_error ivas_splitBinPreRendOpen( + BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + const int32_t output_Fs +#endif +); + +ivas_error ivas_splitBinPostRendOpen( + BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs +); + +void ivas_init_multi_bin_pose_data( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +); + +void ivas_renderSplitGetMultiBinPoseData( + const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_SPLIT_REND_ROT_AXIS rot_axis +); + +void ivas_renderSplitUpdateNoCorrectionPoseData( + const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +); + +ivas_error ivas_renderMultiBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, +#ifdef API_5MS + const IVAS_QUATERNION headPosition, +#else + const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + const int32_t SplitRendBitRate, + IVAS_SPLIT_REND_CODEC splitCodec, +#ifdef API_5MS + int16_t codec_frame_size_ms, +#endif + ivas_split_rend_bits_t *pBits, + float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t max_bands, + float *output[], + const int16_t low_res_pre_rend_rot, + int16_t td_input, + const int16_t pcm_out +); + +void ivas_rend_CldfbSplitPreRendProcess( + const BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, +#ifdef API_5MS + const IVAS_QUATERNION headPosition, +#else + const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + ivas_split_rend_bits_t *pBits, + const int32_t target_md_bits, + const int16_t low_res_pre_rend_rot +); + +void ivas_rend_CldfbSplitPostRendProcess( + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, +#ifdef API_5MS + const IVAS_QUATERNION QuaternionPost, + float Cldfb_RealBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], +#else + const IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES], + float Cldfb_RealBuffer_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], +#endif + float output[][L_FRAME48k], + const int16_t is_cldfb_in +); + +void ivas_splitBinPreRendClose( + BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend +); + +void ivas_splitBinPostRendClose( + BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend ); + +void ivas_splitBinPostRendMdDec( + ivas_split_rend_bits_t *pBits, + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + ,BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend +#endif +); + +ivas_error ivas_splitBinRendPLCOpen( + SPLIT_REND_PLC_HANDLE* phSplitRendPLC +); + +void ivas_splitBinRendPLCClose(SPLIT_REND_PLC_HANDLE* phSplitRendPLC +); + +void ivas_splitBinRendPLCsaveState( + SPLIT_REND_PLC_HANDLE hSplitRendPLC, + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs +); + +void ivas_splitBinRendPLC_xf( + SPLIT_REND_PLC_HANDLE hSplitRendPLC, + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs +); + +void ivas_splitBinRendPLC( + SPLIT_REND_PLC_HANDLE hSplitRendPLC, + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs +); + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +void ivas_log_cldfb2wav_data( + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + HANDLE_CLDFB_FILTER_BANK *cldfbSyn, + const int16_t num_chs, + const int16_t num_freq_bands, + const int32_t output_Fs, + const int16_t start_slot_idx, + const int16_t md_band_idx, + const char *filename +); +#endif + +void ivas_SplitRenderer_GetRotMd( + BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + const int16_t low_res +); + +void ivas_SplitRenderer_PostRenderer( + BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, +#ifdef API_5MS + float Cldfb_RealBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + float Cldfb_ImagBuffer_Ref_Binaural[][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act +#else + float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternions_act[MAX_PARAM_SPATIAL_SUBFRAMES] +#endif +); + +#endif + /*----------------------------------------------------------------------------------* * Rendering & merging to MASA format *----------------------------------------------------------------------------------*/ ivas_error ivas_mcmasa_ana_open( MCMASA_ANA_HANDLE *hMcMasaPtr, /* i/o: McMASA data handle pointer */ - const IVAS_REND_AudioConfig inConfig, /* i : Input config */ + const AUDIO_CONFIG inConfig, /* i : Input config */ int32_t input_Fs /* i : Sampling frequency */ ); @@ -1050,9 +1724,206 @@ ivas_error masaPrerendOpen( ); void masaPrerendClose( - MASA_PREREND_HANDLE *hMasaPrerendPtr /* i/o: prerenderer handle to be closed */ + MASA_PREREND_HANDLE *hMasaPrerendPtr /* i/o: prerenderer handle to be closed */ +); + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------------------* + * Split rendering + *----------------------------------------------------------------------------------*/ + +/* TODO(sgi): Rework interface */ +ivas_error ObjRenderIvasFrame_splitBinaural( + 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 */ +); + +ivas_error ivas_rend_crendProcessSplitBin( + const CREND_WRAPPER *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + DECODER_CONFIG_HANDLE hDecoderConfig, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, + const IVAS_OUTPUT_SETUP_HANDLE hIntSetup, + EFAP_HANDLE hEFAPdata, + float *output[], + const int32_t output_Fs +); + +ivas_error ivas_rend_openMultiBinCrend( + CREND_WRAPPER_HANDLE *pCrend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs +); + +void ivas_rend_CldfbMultiBinRendProcess( + const BINAURAL_RENDERER_HANDLE hCldfbRend, + const COMBINED_ORIENTATION_HANDLE *pCombinedOrientationData, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_Out_Real[MAX_HEAD_ROT_POSES*BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Binaural signals */ + float Cldfb_Out_Imag[MAX_HEAD_ROT_POSES*BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t low_res_pre_rend_rot +#ifdef API_5MS + , + int16_t num_subframes +#endif +); + +ivas_error ivas_rend_openCldfb( + HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_INPUT_CHANNELS], + const AUDIO_CONFIG inConfig, + const int32_t output_Fs +); + +ivas_error ivas_rend_openCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs +); + +void ivas_mat_mult_2by2_complex( + float in_re1[2][2], + float in_im1[2][2], + float in_re2[2][2], + float in_im2[2][2], + float out_re2[2][2], + float out_im2[2][2] +); + +void ivas_split_rend_bitstream_init( + ivas_split_rend_bits_t *pBits, + const int32_t buf_len_bytes, uint8_t *pbuf +); + +void ivas_split_rend_huffman_dec_init_min_max_len( + ivas_split_rend_huffman_cfg_t *p_huff_cfg +); + +void ivas_split_rend_init_huff_cfg( + BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg ); + +void set_fix_rotation_mat( + float fix_pos_rot_mat[][BINAURAL_CHANNELS][BINAURAL_CHANNELS], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +); + +void set_pose_types( + IVAS_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +); + +int16_t wrap_a( + int16_t val, + const int16_t min_val, + const int16_t max_val +); + +void ivas_SplitRenderer_getdiagdiff( + int16_t in_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + int16_t out_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + const int16_t sign, + const int16_t min_val, + const int16_t max_val +); + +void ivas_split_rend_bitstream_write_int32( + ivas_split_rend_bits_t *pBits, + const int32_t val, + const int32_t bits +); + +int32_t ivas_split_rend_bitstream_read_int32( + ivas_split_rend_bits_t *pBits, + const int32_t bits +); + +#ifndef API_5MS +IVAS_QUATERNION ivas_split_rend_get_sf_rot_data( + const IVAS_QUATERNION headPositions[RENDERER_HEAD_POSITIONS_PER_FRAME], + int16_t subframe_idx +); +#endif + +void ivas_rend_closeCldfbRend( + CLDFB_REND_WRAPPER *pCldfbRend +); + +int32_t ivas_get_lcld_bitrate( + const int32_t SplitRendBitRate, + const IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode ); +int32_t ivas_get_split_rend_md_target_brate( + const int32_t SplitRendBitRate, + const int16_t pcm_out +); + +int32_t ivas_get_lc3plus_bitrate( + const int32_t SplitRendBitRate, + const IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode +#ifdef API_5MS +, int16_t split_prerender_frame_size_ms +#endif +); + +int8_t ivas_get_lc3plus_bitrate_id( + const int32_t SplitRendBitRate +); + +int32_t ivas_get_lc3plus_size_from_id( + const int8_t SplitRendBitRateId, + const IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode +#ifdef API_5MS +,int16_t split_prerender_frame_size_ms +#endif +); + +ivas_error ivas_split_rend_validate_config( + const IVAS_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const int16_t is_pcm_out +); + +void ivas_split_rend_get_quant_params( + const int16_t num_md_bands, + int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], +#endif + int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t *num_quant_strats, + int16_t *num_complex_bands +); + +#ifdef API_5MS +ivas_error +#else +void +#endif +ivas_split_rend_choose_default_codec( + IVAS_SPLIT_REND_CODEC *pCodec, /* i/o: pointer to codec setting */ +#ifdef API_5MS + int16_t *pCodec_frame_size_ms, /* i/o: pointer to codec frame size setting */ +#endif + int16_t isRenderingInTd, /* i : flag: is rendering done in TD? */ + int16_t pcm_out /*i : flag to indicate PCM output*/ + ); + +#endif /* clang-format on */ diff --git a/lib_rend/ivas_reflections.c b/lib_rend/ivas_reflections.c new file mode 100644 index 0000000000000000000000000000000000000000..bf3bbbb34cfd805294d9ee8d08163fc7c44a495c --- /dev/null +++ b/lib_rend/ivas_reflections.c @@ -0,0 +1,544 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include +#include "prot.h" +#include "rom_dec.h" +#include "lib_rend.h" +#include "ivas_prot_rend.h" +#include "ivas_stat_rend.h" +#include "ivas_cnst.h" +#include "ivas_prot.h" +#include "ivas_rom_com.h" +#include "wmc_auto.h" +#ifdef DEBUGGING +#include "debug.h" +#endif + + +/*-----------------------------------------------------------------------------------------* + * Local constants/tabels + *-----------------------------------------------------------------------------------------*/ + +static uint16_t LC_mixing_5_1[5] = { 0, 1, 2, 0, 1 }; + +static uint16_t LC_mixing_7_1[7] = { 0, 1, 2, 3, 4, 3, 4 }; + +static uint16_t LC_mixing_5_1_2[7] = { 0, 1, 2, 3, 4, 0, 1 }; + +static uint16_t LC_mixing_5_1_4[9] = { 0, 1, 2, 3, 4, 0, 1, 2, 3 }; + +static uint16_t LC_mixing_7_1_4[11] = { 0, 1, 2, 3, 4, 3, 4, 0, 1, 2, 3 }; + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_er_init() + * + * Initializes the reflections data structure according to the requested input config. + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_er_init( + er_struct_t *reflections, + const AUDIO_CONFIG inConfig ) +{ + ivas_error error; + uint8_t i; + + /* Set to defaults for shoebox */ + reflections->is_ready = 0; + reflections->audio_config = AUDIO_CONFIG_INVALID; + reflections->is_cartesian = 0; + reflections->is_relative = 1; + reflections->shoebox_data.n_ref = ER_NUM_REF; + reflections->user_origin[0] = 0.0f; + reflections->user_origin[1] = 0.0f; + reflections->user_origin[2] = ER_LIST_HEIGHT; + + /* Store scene origin if present */ + for ( i = 0; i < 3; i++ ) + { + reflections->user_origin[i] = reflections->shoebox_lib.cal.list_orig[i]; + } + + /* Init Shoebox */ + ivas_shoebox_init( &reflections->shoebox_lib, &reflections->shoebox_lib.cal ); + + /* Set mode */ + if ( ( error = ivas_er_set_reflections_mode( reflections, inConfig ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Compute the static reflections (first frame) */ + if ( ( error = ivas_er_compute_reflections( reflections ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( reflections->closest_ch_idx = (uint16_t *) malloc( reflections->n_total_reflections * sizeof( uint16_t ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + set_s( (int16_t *) reflections->closest_ch_idx, 0, reflections->n_total_reflections ); + + if ( ( error = getAudioConfigNumChannels( reflections->audio_config, &( reflections->nchan_out ) ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Initialize Encoder */ + if ( ( error = ivas_er_encoder_init( reflections ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Update flag to indicate that reflection module is ready to process */ + reflections->is_ready = 1; + + return error; +} + + +/*-----------------------------------------------------------------------------------------* + Function ivas_er_set_reflections_mode() + + Function sets the ER source positions based on the audio config + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_er_set_reflections_mode( + er_struct_t *reflections, + const AUDIO_CONFIG inConfig ) +{ + ivas_error error; + uint16_t ch; + error = IVAS_ERR_OK; + + if ( reflections->audio_config == inConfig ) + { + return error; + } + + reflections->is_ready = 0; + reflections->audio_config = inConfig; + + switch ( reflections->audio_config ) + { + case AUDIO_CONFIG_MONO: + reflections->shoebox_data.n_sources = 1; + reflections->n_LC_sources = 1; + reflections->LC_mixing = LC_mixing_5_1; + reflections->source_positions[0] = 0; + reflections->source_positions[1] = 0; + reflections->source_positions[2] = ER_RADIUS; + break; + case AUDIO_CONFIG_STEREO: + reflections->shoebox_data.n_sources = 2; + reflections->n_LC_sources = 2; + reflections->LC_mixing = LC_mixing_5_1; + for ( ch = 0; ch < reflections->shoebox_data.n_sources; ch++ ) + { + reflections->source_positions[3 * ch] = deg2rad( ls_azimuth_CICP2[ch] ); + reflections->source_positions[1 + ( 3 * ch )] = deg2rad( ls_elevation_CICP2[ch] ); + reflections->source_positions[2 + ( 3 * ch )] = ER_RADIUS; + } + break; + case AUDIO_CONFIG_5_1: + reflections->shoebox_data.n_sources = 5; + reflections->n_LC_sources = 3; + reflections->LC_mixing = LC_mixing_5_1; + for ( ch = 0; ch < reflections->shoebox_data.n_sources; ch++ ) + { + reflections->source_positions[3 * ch] = deg2rad( ls_azimuth_CICP6[ch] ); + reflections->source_positions[1 + ( 3 * ch )] = deg2rad( ls_elevation_CICP6[ch] ); + reflections->source_positions[2 + ( 3 * ch )] = ER_RADIUS; + } + break; + case AUDIO_CONFIG_7_1: + reflections->shoebox_data.n_sources = 7; + reflections->n_LC_sources = 5; + reflections->LC_mixing = LC_mixing_7_1; + for ( ch = 0; ch < reflections->shoebox_data.n_sources; ch++ ) + { + reflections->source_positions[3 * ch] = deg2rad( ls_azimuth_CICP12[ch] ); + reflections->source_positions[1 + ( 3 * ch )] = deg2rad( ls_elevation_CICP12[ch] ); + reflections->source_positions[2 + ( 3 * ch )] = ER_RADIUS; + } + break; + case AUDIO_CONFIG_5_1_2: + reflections->shoebox_data.n_sources = 7; + reflections->n_LC_sources = 5; + reflections->LC_mixing = LC_mixing_5_1_2; + for ( ch = 0; ch < reflections->shoebox_data.n_sources; ch++ ) + { + reflections->source_positions[3 * ch] = deg2rad( ls_azimuth_CICP14[ch] ); + reflections->source_positions[1 + ( 3 * ch )] = deg2rad( ls_elevation_CICP14[ch] ); + reflections->source_positions[2 + ( 3 * ch )] = ER_RADIUS; + } + break; + case AUDIO_CONFIG_5_1_4: + reflections->shoebox_data.n_sources = 9; + reflections->n_LC_sources = 5; + reflections->LC_mixing = LC_mixing_5_1_4; + for ( ch = 0; ch < reflections->shoebox_data.n_sources; ch++ ) + { + reflections->source_positions[3 * ch] = deg2rad( ls_azimuth_CICP16[ch] ); + reflections->source_positions[1 + ( 3 * ch )] = deg2rad( ls_elevation_CICP16[ch] ); + reflections->source_positions[2 + ( 3 * ch )] = ER_RADIUS; + } + break; + case AUDIO_CONFIG_7_1_4: + reflections->shoebox_data.n_sources = 11; + reflections->n_LC_sources = 5; + reflections->LC_mixing = LC_mixing_7_1_4; + for ( ch = 0; ch < reflections->shoebox_data.n_sources; ch++ ) + { + reflections->source_positions[3 * ch] = deg2rad( ls_azimuth_CICP19[ch] ); + reflections->source_positions[1 + ( 3 * ch )] = deg2rad( ls_elevation_CICP19[ch] ); + reflections->source_positions[2 + ( 3 * ch )] = ER_RADIUS; + } + break; + case AUDIO_CONFIG_HOA3: + reflections->use_er = 0; + break; + case AUDIO_CONFIG_HOA2: + reflections->use_er = 0; + break; + case AUDIO_CONFIG_FOA: + reflections->use_er = 0; + break; + default: + reflections->audio_config = AUDIO_CONFIG_INVALID; + return IVAS_ERROR( IVAS_ERR_INVALID_ER_PARAM, "Unsupported reflections mode" ); + } + + return error; +} + + +/*-----------------------------------------------------------------------------------------* + Function ivas_er_encoder_init() + + Function that initializes the er encoder + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_er_encoder_init( + er_struct_t *reflections ) +{ + ivas_error error = IVAS_ERR_OK; + uint16_t i, j, src_idx; + uint16_t min_index = 0; + float p_x, p_y, p_z; + float p_x_src, p_y_src, p_z_src; + float tmp; + float dist, min_dist = 0; + + if ( !reflections ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + if ( getAudioConfigType( reflections->audio_config ) == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) + { + /* Compute MC-snap location (closest channel position to reflection direction) */ + for ( i = 0; i < reflections->n_total_reflections; i++ ) + { + /* Compute cartesian points for reflection (from degrees) */ + p_x = ER_RADIUS * ( cosf( deg2rad( reflections->shoebox_data.el_angle.data[i] ) ) * cosf( deg2rad( reflections->shoebox_data.az_angle.data[i] ) ) ); + p_y = ER_RADIUS * ( cosf( deg2rad( reflections->shoebox_data.el_angle.data[i] ) ) * sinf( deg2rad( reflections->shoebox_data.az_angle.data[i] ) ) ); + p_z = ER_RADIUS * ( sinf( deg2rad( reflections->shoebox_data.el_angle.data[i] ) ) ); + + /* Calculate the euclidean distance to each point in the config ls setup */ + for ( j = 0; j < reflections->nchan_out; j++ ) + { + /* Ignore LFE */ + if ( j != LFE_CHANNEL ) + { + src_idx = ( j > LFE_CHANNEL ) ? j - 1 : j; + + p_x_src = reflections->source_positions[src_idx * 3 + 2] * ( cosf( reflections->source_positions[src_idx * 3 + 1] ) * cosf( reflections->source_positions[src_idx * 3] ) ); + p_y_src = reflections->source_positions[src_idx * 3 + 2] * ( cosf( reflections->source_positions[src_idx * 3 + 1] ) * sinf( reflections->source_positions[src_idx * 3] ) ); + p_z_src = reflections->source_positions[src_idx * 3 + 2] * sinf( reflections->source_positions[src_idx * 3 + 1] ); + + tmp = ( p_x_src - p_x ) * ( p_x_src - p_x ); + tmp += ( p_y_src - p_y ) * ( p_y_src - p_y ); + tmp += ( p_z_src - p_z ) * ( p_z_src - p_z ); + dist = sqrtf( tmp ); + + /* Save index of closest channel */ + if ( src_idx == 0 ) + { + min_dist = dist; + min_index = j; + } + else + { + if ( dist < min_dist ) + { + min_dist = dist; + min_index = j; + } + } + } + } + + reflections->closest_ch_idx[i] = (uint16_t) min_index; + } + } + + return error; +} + + +/*-----------------------------------------------------------------------------------------* + Function ivas_er_compute_reflections() + + Function computes reflections using the shoebox library and sets up the circular buffers + structure for the early reflections process + *-----------------------------------------------------------------------------------------*/ + +ivas_error ivas_er_compute_reflections( + er_struct_t *reflections ) +{ + ivas_error error = IVAS_ERR_OK; + uint16_t circ_len, i, j; + float tmp; + + reflections->is_ready = 0; + + /* Disabled case */ + if ( reflections->audio_config == AUDIO_CONFIG_INVALID ) + { + return error; + } + + /* Run shoebox with current reflection parameters */ + ivas_shoebox_set_scene( &( reflections->shoebox_lib ), &( reflections->shoebox_data ), reflections->shoebox_lib.cal.list_orig, + reflections->source_positions, reflections->is_cartesian, reflections->is_relative ); + + /* Convert reflection times in seconds to samples and keep track of max */ + circ_len = 0; + for ( i = 0; i < reflections->shoebox_data.n_sources; i++ ) + { + for ( j = 0; j < reflections->shoebox_data.n_ref; j++ ) + { + tmp = reflections->shoebox_data.times.data[j + ( i * reflections->shoebox_data.n_ref )]; + tmp = roundf( tmp * reflections->output_Fs ); + reflections->shoebox_data.times.data[j + ( i * reflections->shoebox_data.n_ref )] = tmp; + circ_len = ( (uint16_t) tmp > circ_len ) ? (uint16_t) tmp : circ_len; + } + } + + /* If max delay is less than max frame size, use max frame size to compute circ buffer length */ + circ_len = ( circ_len > (uint16_t) reflections->max_frame_size ) ? circ_len : (uint16_t) reflections->max_frame_size; + circ_len += (uint16_t) reflections->max_frame_size; + + /* If circ buffers exist and size is the same, reset memory to all zeros */ + /* If size is different, reallocate circ buffers */ + /* Otherwise allocate new circ buffers */ + if ( reflections->circ_buffers ) + { + if ( reflections->circ_len == circ_len ) + { + /* circ buffers exist and size is the same */ + set_f( reflections->circ_buffers, 0.0f, + reflections->shoebox_data.n_sources * reflections->circ_len ); + } + else + { + /* circ buffers exist but size is different */ + reflections->circ_len = circ_len; + free( reflections->circ_buffers ); + if ( ( reflections->circ_buffers = (float *) malloc( reflections->shoebox_data.n_sources * reflections->circ_len * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections buffers" ); + } + set_f( reflections->circ_buffers, 0.0f, reflections->shoebox_data.n_sources * reflections->circ_len ); + } + } + else + { + /* circ buffers do not exist */ + reflections->circ_len = circ_len; + if ( ( reflections->circ_buffers = (float *) malloc( reflections->shoebox_data.n_sources * reflections->circ_len * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Early Reflections buffers" ); + } + set_f( reflections->circ_buffers, 0.0f, reflections->shoebox_data.n_sources * reflections->circ_len ); + } + + + /* Initialize circular buffer insertion point */ + reflections->circ_insert = reflections->circ_len - (uint16_t) reflections->max_frame_size; + + /* Get total reflections number */ + reflections->n_total_reflections = reflections->shoebox_data.n_sources * reflections->shoebox_data.n_ref; + + /* Check that reflection buffers were allocated */ + if ( error != IVAS_ERR_OK ) + { + return error; + } + + return error; +} + + +/*-----------------------------------------------------------------------------------------* +Function ivas_er_process() + +Takes a buffer of N channels, returns a buffer of N*6 channels containing the early +reflections (one per wall). The process is a delay line architecture +*-----------------------------------------------------------------------------------------*/ + + +ivas_error ivas_er_process( + er_struct_t *reflections, + const int16_t subframe_size, + const int16_t subframe_idx, + float **io, + const AUDIO_CONFIG inConfig ) +{ + ivas_error error = IVAS_ERR_OK; + uint16_t i, j, k, subframe_offset; + uint16_t ref_no, ref_delay; + uint16_t n_ref_sources, n_ref; + int16_t samp_idx, in_ch_idx, buf_ch_idx, ref_out_idx; + float ref_gain; + float *buffer_ch; + + if ( !reflections ) + { + return IVAS_ERR_INIT_ERROR; + } + + /* should not arrive here if reflections are disabled but in case it does just do nothing */ + if ( reflections->use_er != 1 ) + { + return error; + } + + /* Ensure all reflection memory is allocated */ + if ( !reflections->circ_buffers || !reflections->is_ready ) + { + return IVAS_ERR_INIT_ERROR; + } + + subframe_offset = subframe_idx * subframe_size; + n_ref = reflections->shoebox_data.n_ref; + + /* If low complexity ER are requested only compute ER for n_LC_sources */ + if ( reflections->lowComplexity ) + { + n_ref_sources = reflections->n_LC_sources; + } + else + { + n_ref_sources = reflections->shoebox_data.n_sources; + } + + /* Channel case, copy input into buffers panning for LC mode and skipping LFE */ + if ( getAudioConfigType( inConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) + { + /* Loop through all input sources filling circular buffers */ + for ( i = 0; i < reflections->shoebox_data.n_sources; i++ ) + { + /* Pull correct circular buffer depending on complexity mode */ + buf_ch_idx = ( reflections->lowComplexity == 1 ) ? reflections->LC_mixing[i] : i; + buffer_ch = &( reflections->circ_buffers[buf_ch_idx * reflections->circ_len] ); + + /* Skip LFE from input buffer */ + in_ch_idx = ( i >= LFE_CHANNEL ) ? i + 1 : i; + samp_idx = reflections->circ_insert; + + /* If less than number of reflection sources, overwrite buffer */ + if ( i == buf_ch_idx ) + { + for ( j = 0; j < subframe_size; j++ ) + { + buffer_ch[samp_idx++] = io[in_ch_idx][j + subframe_offset]; + samp_idx = samp_idx % reflections->circ_len; + } + } + /* Accumulate with buffer for low complexity mixed sources */ + else + { + for ( j = 0; j < subframe_size; j++ ) + { + buffer_ch[samp_idx++] += io[in_ch_idx][j + subframe_offset]; + samp_idx = samp_idx % reflections->circ_len; + } + } + } + } + else + { + return IVAS_ERR_INVALID_INPUT_FORMAT; + } + + /* Loop through sources retrieve reflections from circ buffers */ + for ( i = 0; i < n_ref_sources; i++ ) + { + /* Access correct row of input circ buffer */ + buffer_ch = &( reflections->circ_buffers[i * reflections->circ_len] ); + + /* Loop through reflections */ + for ( j = 0; j < n_ref; j++ ) + { + ref_no = j + ( i * n_ref ); + ref_gain = reflections->shoebox_data.gains.data[ref_no]; + ref_delay = (uint16_t) reflections->shoebox_data.times.data[ref_no]; + ref_out_idx = reflections->closest_ch_idx[ref_no]; + + /* Determine start idx of reflection in circ buffer based on + current insert idx and reflection delay */ + samp_idx = (int16_t) reflections->circ_insert - ref_delay; + if ( samp_idx < 0 ) + { + samp_idx = (int16_t) reflections->circ_len + samp_idx; + } + + /* Pull reflection from circ buffer and apply gain */ + for ( k = 0; k < subframe_size; k++ ) + { + io[ref_out_idx][k + subframe_offset] += buffer_ch[samp_idx++] * ref_gain; + samp_idx = samp_idx % reflections->circ_len; + } + } + } + + /* Increment circular buffer start index */ + reflections->circ_insert = ( reflections->circ_insert + subframe_size ) % reflections->circ_len; + + return error; +} diff --git a/lib_rend/ivas_render_config.c b/lib_rend/ivas_render_config.c index 7dfc4b7c4b0f3d7b48ed15df54d28199ad5f35b4..5f12c7521447ed3270108ec9380396abd7dbb0ea 100644 --- a/lib_rend/ivas_render_config.c +++ b/lib_rend/ivas_render_config.c @@ -49,6 +49,8 @@ #define IVAS_REVERB_DEFAULT_PRE_DELAY 0.016f #define IVAS_REVERB_DEFAULT_INPUT_DELAY 0.1f +#define IVAS_REVERB_DEFAULT_USE_ER 0 + /*-----------------------------------------------------------------------* * ivas_render_config_open() @@ -102,11 +104,11 @@ ivas_error ivas_render_config_init_from_rom( RENDER_CONFIG_HANDLE *hRenderConfig /* i/o: Renderer config handle */ ) { + int16_t i; if ( hRenderConfig == NULL || *hRenderConfig == NULL ) { return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Unexpected null pointer while attempting to fill renderer configuration from ROM" ); } - #ifdef DEBUGGING ( *hRenderConfig )->renderer_type_override = RENDER_TYPE_OVERRIDE_NONE; #endif @@ -114,6 +116,7 @@ ivas_error ivas_render_config_init_from_rom( ( *hRenderConfig )->roomAcoustics.nBands = IVAS_REVERB_DEFAULT_N_BANDS; ( *hRenderConfig )->roomAcoustics.acousticPreDelay = IVAS_REVERB_DEFAULT_PRE_DELAY; ( *hRenderConfig )->roomAcoustics.inputPreDelay = IVAS_REVERB_DEFAULT_INPUT_DELAY; + ( *hRenderConfig )->roomAcoustics.use_er = IVAS_REVERB_DEFAULT_USE_ER; set_zero( &( *hRenderConfig )->roomAcoustics.pFc_input[0], CLDFB_NO_CHANNELS_MAX ); set_zero( &( *hRenderConfig )->roomAcoustics.pAcoustic_rt60[0], CLDFB_NO_CHANNELS_MAX ); set_zero( &( *hRenderConfig )->roomAcoustics.pAcoustic_dsr[0], CLDFB_NO_CHANNELS_MAX ); @@ -122,9 +125,24 @@ ivas_error ivas_render_config_init_from_rom( mvr2r( ivas_reverb_default_RT60, ( *hRenderConfig )->roomAcoustics.pAcoustic_rt60, IVAS_REVERB_DEFAULT_N_BANDS ); mvr2r( ivas_reverb_default_DSR, ( *hRenderConfig )->roomAcoustics.pAcoustic_dsr, IVAS_REVERB_DEFAULT_N_BANDS ); - ( *hRenderConfig )->directivity[0] = 360.0f; /* Front cone */ - ( *hRenderConfig )->directivity[1] = 360.0f; /* Back cone */ - ( *hRenderConfig )->directivity[2] = 1.0f; /* Back attenuation */ + for ( i = 0; i < MAX_NUM_OBJECTS; i++ ) + { + ( *hRenderConfig )->directivity[i * 3] = 360.0f; /* Front cone */ + ( *hRenderConfig )->directivity[i * 3 + 1] = 360.0f; /* Back cone */ + ( *hRenderConfig )->directivity[i * 3 + 2] = 1.0f; /* Back attenuation */ + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + ( *hRenderConfig )->split_rend_config.splitRendBitRate = SPLIT_REND_768k; + ( *hRenderConfig )->split_rend_config.dof = 3; + ( *hRenderConfig )->split_rend_config.hq_mode = 0; + ( *hRenderConfig )->split_rend_config.codec_delay_ms = 0; +#ifdef API_5MS + ( *hRenderConfig )->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ +#endif + ( *hRenderConfig )->split_rend_config.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + ( *hRenderConfig )->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + ( *hRenderConfig )->split_rend_config.rendererSelection = IVAS_SPLIT_REND_RENDERER_SELECTION_DEFAULT; +#endif return IVAS_ERR_OK; } diff --git a/lib_rend/ivas_reverb.c b/lib_rend/ivas_reverb.c index 6374b6812e98f6d53829eb3a6566dcfaf28c14e9..ee00cb30c8f628808ce457b975dfbc23791bbf8f 100644 --- a/lib_rend/ivas_reverb.c +++ b/lib_rend/ivas_reverb.c @@ -996,12 +996,6 @@ static void set_reverb_acoustic_data( pParams->pHrtf_avg_pwr_response_r_const = (const float *) pParams->pHrtf_avg_pwr_response_r; pParams->pHrtf_inter_aural_coherence_const = (const float *) pParams->pHrtf_inter_aural_coherence; } - else - { - pParams->pHrtf_avg_pwr_response_l_const = orange53_left_avg_power; - pParams->pHrtf_avg_pwr_response_r_const = orange53_right_avg_power; - pParams->pHrtf_inter_aural_coherence_const = orange53_coherence; - } /* interpolate input table data for T60 and DSR to the FFT filter grid */ ivas_reverb_interpolate_acoustic_data( nr_fc_input, pRoomAcoustics->pFc_input, pRoomAcoustics->pAcoustic_rt60, pRoomAcoustics->pAcoustic_dsr, @@ -1099,6 +1093,7 @@ ivas_error ivas_reverb_open( REVERB_HANDLE *hReverb, /* i/o: Reverberator handle */ const AUDIO_CONFIG input_audio_config, /* i : reverb. input audio configuration */ const HRTFS_HANDLE hHrtf, /* i : HRTF handle */ + const float *lr_energy_and_iac[], /* precomuputed lr energies and iac*/ RENDER_CONFIG_HANDLE hRenderConfig, /* i : Renderer configuration handle */ const int32_t output_Fs /* i : output sampling rate */ ) @@ -1172,6 +1167,12 @@ ivas_error ivas_reverb_open( params.pFc[bin_idx] = freq_step * bin_idx; } + if ( hHrtf == NULL && lr_energy_and_iac != NULL ) + { + params.pHrtf_avg_pwr_response_l_const = lr_energy_and_iac[0]; + params.pHrtf_avg_pwr_response_r_const = lr_energy_and_iac[1]; + params.pHrtf_inter_aural_coherence_const = lr_energy_and_iac[2]; + } /* set up reverb acoustic data on the basis of HRTF data and renderer config */ set_reverb_acoustic_data( ¶ms, input_audio_config, hHrtf, &hRenderConfig->roomAcoustics, subframe_len, nr_fc_input, nr_fc_fft_filter ); @@ -1182,6 +1183,12 @@ ivas_error ivas_reverb_open( pState->pConfig.roomAcoustics.override = hRenderConfig->roomAcoustics.override; pState->pConfig.roomAcoustics.nBands = hRenderConfig->roomAcoustics.nBands; + if ( hRenderConfig->roomAcoustics.use_er == 1 ) + { + pState->pConfig.roomAcoustics.use_er = hRenderConfig->roomAcoustics.use_er; + pState->pConfig.roomAcoustics.lowComplexity = hRenderConfig->roomAcoustics.lowComplexity; + } + /* set up input downmix */ pState->dmx_gain = calc_dmx_gain(); @@ -1609,7 +1616,7 @@ ivas_error ivas_reverb_process( /*------------------------------------------------------------------------- - * ivas_binaural_reverb_processFrame() + * ivas_binaural_reverb_processSubFrame() * * Compute the reverberation - room effect *------------------------------------------------------------------------*/ @@ -1813,7 +1820,7 @@ ivas_error ivas_binaural_reverb_open( set_f( hReverb->preDelayBufferImag[k], 0.0f, hReverb->numBins ); } - if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) + if ( renderer_type == RENDERER_BINAURAL_FASTCONV ) { if ( !roomAcoustics->override ) { @@ -1900,7 +1907,7 @@ ivas_error ivas_binaural_reverb_open( } else { - if ( renderer_type == RENDERER_BINAURAL_FASTCONV_ROOM ) + if ( renderer_type == RENDERER_BINAURAL_FASTCONV ) { ivas_binaural_reverb_setReverbTimes( hReverb, sampling_rate, hHrtfFastConv->fastconvReverberationTimes, hHrtfFastConv->fastconvReverberationEneCorrections ); ivas_binaural_reverb_setPreDelay( hReverb, 10 ); diff --git a/lib_rend/ivas_reverb_utils.c b/lib_rend/ivas_reverb_utils.c index 6ff101bec56d53d8b040a4504c027ec5b2e64250..58613f425745f62db3f98d37629aba5f5eb5c74f 100644 --- a/lib_rend/ivas_reverb_utils.c +++ b/lib_rend/ivas_reverb_utils.c @@ -52,7 +52,6 @@ #define FFT_SPECTRUM_SIZE ( 1 + ( RV_FILTER_MAX_FFT_SIZE / 2 ) ) #define N_INITIAL_IGNORED_FRAMES 4 -#define NUM_CLDFB_TAPES 7 /*-----------------------------------------------------------------------------------------* * Local function prototypes @@ -225,7 +224,7 @@ static void get_IR_from_filter_taps( output_sample_idx = 0; /* Assign CLDFB taps */ - if ( input_audio_config == AUDIO_CONFIG_FOA || input_audio_config == AUDIO_CONFIG_HOA2 || input_audio_config == AUDIO_CONFIG_HOA3 ) + if ( input_audio_config == AUDIO_CONFIG_HOA3 ) { for ( band_idx = 0; band_idx < BINAURAL_CONVBANDS; band_idx++ ) { @@ -235,6 +234,26 @@ static void get_IR_from_filter_taps( convolver_state.filter_taps_right_im[band_idx] = hHrtfFastConv->rightHRIRImag_HOA3[band_idx][hrtf_idx]; } } + else if ( input_audio_config == AUDIO_CONFIG_HOA2 ) + { + for ( band_idx = 0; band_idx < BINAURAL_CONVBANDS; band_idx++ ) + { + convolver_state.filter_taps_left_re[band_idx] = hHrtfFastConv->leftHRIRReal_HOA2[band_idx][hrtf_idx]; + convolver_state.filter_taps_left_im[band_idx] = hHrtfFastConv->leftHRIRImag_HOA2[band_idx][hrtf_idx]; + convolver_state.filter_taps_right_re[band_idx] = hHrtfFastConv->rightHRIRReal_HOA2[band_idx][hrtf_idx]; + convolver_state.filter_taps_right_im[band_idx] = hHrtfFastConv->rightHRIRImag_HOA2[band_idx][hrtf_idx]; + } + } + else if ( input_audio_config == AUDIO_CONFIG_FOA ) + { + for ( band_idx = 0; band_idx < BINAURAL_CONVBANDS; band_idx++ ) + { + convolver_state.filter_taps_left_re[band_idx] = hHrtfFastConv->leftHRIRReal_FOA[band_idx][hrtf_idx]; + convolver_state.filter_taps_left_im[band_idx] = hHrtfFastConv->leftHRIRImag_FOA[band_idx][hrtf_idx]; + convolver_state.filter_taps_right_re[band_idx] = hHrtfFastConv->rightHRIRReal_FOA[band_idx][hrtf_idx]; + convolver_state.filter_taps_right_im[band_idx] = hHrtfFastConv->rightHRIRImag_FOA[band_idx][hrtf_idx]; + } + } else { array_idx = 0; @@ -313,7 +332,7 @@ static void get_IR_from_filter_taps( } } - ivas_cldfb_convolver( &convolver_state, out_CLDFB_real, out_CLDFB_imag, real_buffer_in, imag_buffer_in, BINAURAL_CONVBANDS, NUM_CLDFB_TAPES ); + ivas_cldfb_convolver( &convolver_state, out_CLDFB_real, out_CLDFB_imag, real_buffer_in, imag_buffer_in, BINAURAL_CONVBANDS, BINAURAL_NTAPS ); ppRealBuf[0] = out_CLDFB_real[0]; ppImagBuf[0] = out_CLDFB_imag[0]; diff --git a/lib_rend/ivas_rom_TdBinauralRenderer.c b/lib_rend/ivas_rom_TdBinauralRenderer.c index 4b56fb4883d7fb0b26d230409dd250cb75406f85..c3c8ae11826ef28e0b25f12a1b5c5b58fc0432b7 100644 --- a/lib_rend/ivas_rom_TdBinauralRenderer.c +++ b/lib_rend/ivas_rom_TdBinauralRenderer.c @@ -46,12416 +46,10119 @@ /*------------------------------------------------------------------------- * TD Binaural rendering related ROM tables *------------------------------------------------------------------------*/ -/* TD renderer HRTF default model Orange53 */ -const float orange53_rom_latency_s = 0.000020834f; -const int16_t orange53_rom_azimDim2[18] = { -1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, +/* TD renderer default HRIR model */ +const float defaultHRIR_rom_latency_s = 0.000020834f; +const int16_t defaultHRIR_rom_azimDim2[15] = { +1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 1, }; -const int16_t orange53_rom_azimDim3[18] = { -1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, +const int16_t defaultHRIR_rom_azimDim3[15] = { +1, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 1, }; -const int16_t orange53_rom_azim_start_idx[18] = { -0, 1, 37, 73, 109, 145, 181, 217, 253, 289, 325, 361, 397, 433, 469, 505, 541, 577, +const int16_t defaultHRIR_rom_azim_start_idx[15] = { +0, 1, 37, 73, 109, 145, 181, 217, 253, 289, 325, 361, 397, 433, 469, }; -const int16_t orange53_rom_azimSegSamples[1] = { +const int16_t defaultHRIR_rom_azimSegSamples[1] = { 10, }; -const int16_t orange53_rom_azimShapeIdx[18] = { --1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, +const int16_t defaultHRIR_rom_azimShapeIdx[15] = { +-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, }; -const int16_t orange53_rom_azimShapeSampFactor[18] = { --1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, +const int16_t defaultHRIR_rom_azimShapeSampFactor[15] = { +-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, }; -const float orange53_rom_elevKSeq[16] = { --90.000000f, -78.000000f, -66.000000f, -54.000000f, -42.000000f, -30.000000f, -18.000000f, -6.000000f, 6.000000f, 18.000000f, 30.000000f, 42.000000f, 54.000000f, 66.000000f, 78.000000f, 90.000000f, +const float defaultHRIR_rom_elevKSeq[13] = { +-90.000000f, -75.000000f, -60.000000f, -45.000000f, -30.000000f, -15.000000f, 0.000000f, 15.000000f, 30.000000f, 45.000000f, 60.000000f, 75.000000f, 90.000000f, }; -const uint32_t orange53_rom_elevBsShape[28] = { -0x3f800000,0x3e97b426,0x3d17b426,0x00000000,0x00000000,0x3f1097b4,0x3f04bda1,0x3e800000,0x3d97b426,0x3c17b426,0x00000000,0x00000000,0x3e07e6b7,0x3eca4588,0x3f155555,0x3f0ca458,0x3ebc0ca4,0x3e2aaaab,0x3d4a4588,0x3bca4588,0x00000000,0x00000000,0x3bca4588,0x3d4a4588,0x3e2aaaab,0x3ebda12f,0x3f12f685,0x3f2aaaab, +const uint32_t defaultHRIR_rom_elevBsShape[36] = { +0x3f800000,0x3ed80000,0x3e000000,0x3c800000,0x00000000,0xaa000000,0x3efe0000,0x3f180000,0x3eea0000,0x3e800000,0x3dd80000,0x3d000000,0x3b800000,0x00000000,0x29800000,0x3da2aaab,0x3e855555,0x3eea0000,0x3f155555,0x3f13aaab,0x3ef00000,0x3ea0aaab,0x3e2aaaab,0x3d900000,0x3caaaaab,0x3b2aaaab,0x27800000,0xa9000000,0x3b2aaaab,0x3caaaaab,0x3d900000,0x3e2aaaab,0x3ea15555,0x3ef55555,0x3f1caaab,0x3f2aaaab, }; -const uint32_t orange53_rom_azimBsShape[21] = { +const uint32_t defaultHRIR_rom_azimBsShape[21] = { 0x3f2aaaab,0x3f283c13,0x3f21735f,0x3f17152a,0x3f09e60f,0x3ef55555,0x3ed44f30,0x3eb242e7,0x3e90b9af,0x3e627984,0x3e2aaaab,0x3df8d4fe,0x3daec33e,0x3d6a2798,0x3d1374bc,0x3caaaaab,0x3c2ec33e,0x3b9374bc,0x3aaec33e,0x392ec33e,0x26800000, }; -const uint32_t orange53_rom_AlphaL48[578 * 128] = { -0x3e1a1a51,0x3d8e5bf0,0x3e1e0827,0x3dee7975,0x3def54ee,0x3df4defb,0x3dfaa8a7,0x3e008e19,0x3e02e452,0x3dfbf25a,0x3df9eb18,0x3df04fca,0x3deae4b5,0x3de9c46a,0x3deac813,0x3de56c8f,0x3de7eb79,0x3de1f8b3,0x3de37d57,0x3dd6a991,0x3df42dce,0x3cf0bd44,0xbb3b4c7d,0xbd433247,0x3d4862f8, -0xbafcf373,0xbd49f6c8,0xbd3facbe,0xbd2568e5,0xbd098869,0xbd5e4293,0xbd688fbd,0xbd3a26c5,0xbc8736a8,0x3d6e02f7,0xbd1331c7,0xbcb6d501,0xbd8ce61b,0x3de9c34c,0x3e1c65ce,0x3e1859c5,0x3e1f5dc4,0x3e2dd730,0x3e39b76a,0x3e3c715c,0x3e26d0e5,0x3e2ba196,0x3e1ff90f,0x3e156d88,0x3e13a92e, -0x3e151ef5,0x3e0760ac,0x3e0fac1c,0x3e09d74c,0x3e01bf7a,0x3dfe9228,0x3e11159e,0x3bed8591,0x3d24b108,0x3cc8a92f,0x3cac7fb1,0x3d78cc60,0x3ccb1e5e,0x3d192f63,0x3c104aa1,0x3d100563,0x3cc2e546,0x3dd8f4d3,0x3d13e7b2,0x3cf88d2b,0x3d37ffad,0x3cb9276b,0x3d64adcd,0x3b4ea968,0x3e342a42, -0x3e2d5a8a,0x3e2fd379,0x3e3cdc2b,0x3e5eb00b,0x3e64d17f,0x3e6cd42b,0x3e5b4be7,0x3e474f8c,0x3e34acd4,0x3e2b21e1,0x3e2111e6,0x3e19f35a,0x3e1a2b2b,0x3e0e0703,0x3e11e0b0,0x3df4c803,0x3e0b3051,0x3da040fd,0xbc9dd369,0x3ce09752,0x3d1a5018,0x3ba6a845,0x3cbdc3ce,0x3ce607e9,0x3d0001ca, -0x3da47832,0xbc152084,0x3d4f2355,0x3bdec29e,0x3d31a86f,0x3d4c30f2,0x3d2adfdd,0x3c1672fe,0x3dd33cb5,0xbcca0e89,0x3d94dc49,0x3e45fb19,0x3e2e0170,0x3e5267c9,0x3e77ad98,0x3e8992ee,0x3e87fa54,0x3e752368,0x3e5d41aa,0x3e4b253e,0x3e34713d,0x3e254cd7,0x3e202ffb,0x3e148413,0x3e0e0f12, -0x3e0cd414,0x3deea780,0x3def16b8,0x3d9d1975,0x3ce379e6,0x3d59a17a,0x3c26786b,0x3d3cf6c4,0x3b815490,0x3d04adda,0xbc58957d,0x3c4a5886,0x3c233d31,0x3d3b0b7d,0x3c0f13f6,0x3d047483,0xbc3f95c5,0x3ccd9a62,0x3d0e0e03,0x3d7da82c,0x3d9fb11d,0x3deb165d,0x3e6b0fa8,0x3e46ae6c,0x3e6eea23, -0x3e959d34,0x3ea4fcd0,0x3ea63388,0x3e95c403,0x3e812c07,0x3e5d65d4,0x3e467d5e,0x3e361a44,0x3e28d28d,0x3e252fb7,0x3e199836,0x3e108f97,0x3df13b2c,0x3de17eb7,0x3d91c42f,0xbd39c4b7,0x3ca50541,0xbb81ae0f,0x3ba23a3b,0x3c0b162f,0x3b740bcf,0x3c766a22,0x3c1d4775,0x3c0c006f,0x3b9b9a9e, -0x3ccde9b9,0x3c55ecac,0x3cac5f6b,0x3d3ed36d,0x3d0a43db,0x3c9e9409,0x3c7dd89e,0x3deec944,0x3e8e51c3,0x3e84aff4,0x3e953ede,0x3e9cc9bb,0x3ea56078,0x3ea96bf9,0x3eb1be80,0x3eaae2ed,0x3e90c3e3,0x3e92770d,0x3e895166,0x3e6ff9fa,0x3e676b94,0x3e4c996e,0x3e409883,0x3e162f37,0x3e01c0c1, -0x3dbb9edb,0x3c7893f0,0x3d5c9169,0xba85d1e6,0x3cbee44f,0xbb150c71,0x3c1bb010,0x3aa888fe,0x3c8ef449,0x3c91c277,0x3c0bbd56,0x3c1c9ee4,0x3c0547c5,0x3d441339,0x3c9bf98f,0xbc80ab80,0x3dc90429,0x3d5d6c1f,0x3e2b840c,0x3e92a8c1,0x3e8fdb39,0x3ea0ebf1,0x3eac05a0,0x3eb4d2c8,0x3eacf1e2, -0x3eaf723e,0x3ea1468b,0x3e907c5a,0x3e8b6952,0x3e824b41,0x3e853372,0x3e75deea,0x3e5f32c3,0x3e54f959,0x3e1f16a4,0x3e1e6288,0x3d8dffb2,0xbc4ec06a,0x3c833f2e,0x3cc21ac5,0x3ca8818e,0x3c2ab03c,0x3c2a336c,0x3bdc6101,0xbb3e79be,0x3bc8b3e9,0x3bdaf939,0x3ce1e8fb,0x3c73c4c6,0x3a35a400, -0x3d16a8fc,0x3d8ce8a6,0x3cf51b18,0x3c7806da,0x3e3678a4,0x3ebb6040,0x3eaf9649,0x3ed50475,0x3ec359e3,0x3ebfd026,0x3eb14094,0x3ea5f7b8,0x3e9ca7da,0x3ea460f8,0x3ea6d449,0x3eae8774,0x3ea862ad,0x3e944c50,0x3e7f7ce2,0x3e5e09b6,0x3e2a1dce,0x3e1f9f46,0x3db22b27,0x3cf8ad63,0x3cfe4944, -0xbb8ca691,0x3d04a011,0x3c3bff45,0x3cc92890,0xb7d806e8,0x3ce43e2c,0x3c96fc11,0x3c0a0220,0x3c06df58,0x3cac6048,0x3d089927,0x3d53a9f5,0x3d11a37f,0x3cd8f19e,0xbb7d8779,0x3e3d07f5,0x3ecedba0,0x3ecd22e8,0x3edba289,0x3ec2800e,0x3ebbdf7b,0x3eb697bf,0x3ea6cc41,0x3ea7578e,0x3eb75668, -0x3ebc0dfb,0x3eb66bff,0x3eaa139c,0x3e96143c,0x3e75304b,0x3e50d02f,0x3e1925d1,0x3e266566,0x3d94149c,0x3cb9efc3,0x3d11e85c,0x3d31806b,0x3bb2582e,0x3cf16a0f,0xb7f45bf1,0x3c86d198,0x3ba08d1c,0xbc034760,0x3d1939af,0x3b1c7be4,0x3cb2d8a2,0xbc957ddf,0x3d81550d,0xbb88d04c,0x3e102cfe, -0x3c780416,0x3eb27f66,0x3ec71176,0x3ec1aeb1,0x3ebb4ace,0x3eadff72,0x3eae6c0d,0x3ea8ca7d,0x3eade8d8,0x3eac8274,0x3ea46d07,0x3e9ede97,0x3e9a2bb1,0x3e89464d,0x3e7ee4b6,0x3e5a8037,0x3e39ab67,0x3e1caf23,0x3e183718,0x3d99337b,0x3d2f7fd2,0x3d7ebd8e,0x3b1ad340,0x3c778404,0x3cc60cf0, -0x3c270223,0x3c8a86ef,0x3cca821d,0x3cf824d8,0x3bff25a2,0xba00a51b,0x3cc7a026,0x3cd84577,0x3d7121d6,0xbc4cb980,0x3d9f1ef2,0x3d551c50,0x3e0884bd,0x3ed7b94b,0x3eaa3029,0x3eb586c4,0x3e9a1614,0x3e976d88,0x3e9fe886,0x3e93a24e,0x3e9b0667,0x3eae2b14,0x3e9d26bd,0x3e90503d,0x3e83b63b, -0x3e52ab06,0x3e284311,0x3e170036,0x3e074397,0x3e10f157,0x3e046813,0x3b553ef6,0x3a1144aa,0x3d31223d,0x3bf30c28,0x3ccb14a7,0x3c2e74ba,0xbc09f093,0x3c727040,0x3bb3f0d5,0x3c56a44d,0x3d11b319,0x3cccb091,0x3da46072,0xbc497351,0x3d2e823b,0x3e1038e5,0xbd2882e2,0x3e847bea,0x3e8d245b, -0x3e7b4cd0,0x3e824418,0x3e814711,0x3e82c602,0x3e8372b1,0x3e8068a9,0x3e6858e4,0x3e651196,0x3e633cd9,0x3e64099a,0x3e53c966,0x3e46e357,0x3e34112b,0x3e201db3,0x3e123799,0x3e2b83bb,0x3d81ab98,0xbbd31041,0x3df449d7,0xb9fbdb75,0x3d463b47,0x3cd09b7c,0xbc35ad3b,0x3d742929,0x3c722a9f, -0x3d13ab95,0xbb53ffad,0x3c99733d,0x3cf345da,0xbb833858,0x3d5973f4,0x3d29a761,0x3dd52000,0x3d2e248b,0x3dd072d9,0x3e749546,0x3e4e90be,0x3e5a2fa3,0x3e5e204c,0x3e6c97c4,0x3e743a38,0x3e663c2c,0x3e5bdc7c,0x3e56ccdd,0x3e49005d,0x3e3e7617,0x3e30ba00,0x3e2a08ff,0x3e1502cc,0x3e0bd9e1, -0x3df4d4ac,0x3e12ea9d,0x3dfb6114,0x3a90607b,0x3bbf7f02,0x3d4f3eda,0x3bdc2fc6,0x3cec54ff,0x3d08fef0,0xbcb91b87,0x3c5be31e,0x3cf0da96,0x3ce7ebfb,0x3cafe594,0x3c24c452,0x3d34da47,0x3d0a4032,0x3c876694,0x3d2cba39,0xbc0d78c0,0x3e1cd7f6,0x3e3581a2,0x3e298402,0x3e4b7038,0x3e4a0c78, -0x3e54c118,0x3e5a0728,0x3e570f2d,0x3e537000,0x3e4ffcbd,0x3e39b4d8,0x3e256ad8,0x3e0be8c6,0x3e09662a,0x3df7b5ac,0x3e00726a,0x3de089e4,0x3e154aea,0x3d801f47,0x3d430752,0x3d5aabd9,0x3d4c26d4,0x3d1cdd0d,0x3ca314a7,0x3cef1e9c,0x3d209ff4,0x3ddb00e5,0xbd0248f9,0x3da5b8b8,0x3c2a89f8, -0x3d509c53,0x3d35b11f,0x3c862c44,0x3d72258b,0x3dd7f7de,0xbcc9892b,0x3e337043,0x3e1e6660,0x3e23cd33,0x3e193ee1,0x3e2b5faf,0x3e2c4ea2,0x3e3a4e99,0x3e2be55e,0x3e220c96,0x3e17f0aa,0x3e144672,0x3e109ea3,0x3e068f10,0x3e082d05,0x3e05da54,0x3e0e04f5,0x3e0189c6,0x3e0d2580,0x3e005211, -0xbc9c3c1c,0x3d4031dd,0x3ce8e334,0x3d84d03a,0x3d4f1231,0x3d517852,0x3d1b6f46,0x3cbc5fe3,0x3d090e0a,0x3d0d937c,0x3df0a594,0xbb18333d,0x3d594f5a,0x3d49c515,0xbce7e480,0x3deb3ad2,0x3d260b2b,0x3e209e41,0x3e09d517,0x3e0fd0e6,0x3e111576,0x3e16324d,0x3e1532ac,0x3e19d2ae,0x3e16474b, -0x3e15d14d,0x3e139389,0x3e0f66c3,0x3e0ae43a,0x3e07e946,0x3e071ddf,0x3e06b962,0x3e07afb8,0x3e06f130,0x3e015d1c,0x3e24ef6c,0x3d4acd38,0xbc0aec7a,0xbd4dd4d0,0x3d36942d,0xbc575276,0xbd57b097,0xbd711897,0xbd40ba77,0xbd2e308a,0xbd8a1415,0xbd947303,0xbd3af73f,0x3c36bc0f,0x3d80566f, -0xbd35a013,0xbcd0f897,0x3e43d85a,0x3ee1f87b,0x3e986ebc,0x3eb729b1,0x3ea0ebf0,0x3ea29c3f,0x3ea644cd,0x3ea96d6d,0x3ead7612,0x3eb08a20,0x3ea9c090,0x3ea8bf6b,0x3ea2ba35,0x3e9f242b,0x3e9e3eb7,0x3e9e92eb,0x3e9a5ce0,0x3e9be992,0x3e97b5a9,0x3e985a65,0x3e91e88e,0x3e9b86a9,0x3e5dbaa3, -0x3e1aee63,0xbc0ccd7b,0x3e7e542d,0x3e2014c5,0xbb689f87,0x3a22f2f9,0x3c30be13,0x3cdef744,0xbb0d8129,0xb9488333,0x3d0eb504,0x3e0a9091,0x3e88cda2,0x3d03a166,0x3dfe9b06,0x3d5e3538,0x3eb76518,0x3ed14339,0x3ed31b2c,0x3edd3aa3,0x3eee4534,0x3efd9257,0x3f0043b8,0x3ee26f4a,0x3eea6a13, -0x3edb2b9e,0x3ecd5c4f,0x3ecb8da8,0x3eccb0b0,0x3eb82e69,0x3ec450cd,0x3eba7301,0x3eb20936,0x3eab99de,0x3eb5e17d,0x3e286646,0x3e56342a,0x3e263beb,0x3e3f9c7f,0x3e80d156,0x3e1c6fee,0x3e5637b5,0x3e1db35b,0x3e4a89cc,0x3e42a539,0x3e976006,0x3e3c724b,0x3e4618d9,0x3e6b13d2,0x3e4bc03a, -0x3e7757eb,0x3e699289,0x3ef2011c,0x3ee17c83,0x3ef834a7,0x3f03c58b,0x3f19f250,0x3f1c1979,0x3f219849,0x3f154843,0x3f0857b9,0x3efa00ec,0x3eef7968,0x3ee03fd9,0x3ed47aa8,0x3ed217a1,0x3ec1ab45,0x3ec215fc,0x3eab0796,0x3eadd970,0x3e858824,0x3df7341a,0x3e20aca8,0x3e4777f2,0x3dfdbd09, -0x3e085951,0x3e272312,0x3e0874ec,0x3e8503ce,0x3dea22ab,0x3e41cc86,0x3e0231b2,0x3e460a28,0x3e57e930,0x3e539050,0x3e28b6a5,0x3ead26e6,0x3e0db830,0x3e94b0df,0x3ef920df,0x3ef6e286,0x3f124573,0x3f2b4850,0x3f3ab2d8,0x3f37584e,0x3f254ec2,0x3f16208b,0x3f0b194b,0x3efa5e75,0x3ee732cc, -0x3edba0c9,0x3ec94764,0x3ec070db,0x3eb9e352,0x3ea13450,0x3e953db1,0x3e6918ed,0x3e166184,0x3e27d070,0x3db76ee7,0x3e0f0f06,0x3d88a30b,0x3dd6aca1,0x3d1a90c4,0x3d7d2eba,0x3d97ecff,0x3e079938,0x3da55e1f,0x3e0b67ef,0x3d98c7e6,0x3e0ab36e,0x3e4223d8,0x3e6c76d5,0x3ea691ff,0x3ed14669, -0x3f0ab870,0x3f117d6f,0x3f280023,0x3f5051ba,0x3f625887,0x3f630b1d,0x3f4b257b,0x3f3013d1,0x3f191c90,0x3f0c8a06,0x3f000f69,0x3eeb3e4d,0x3ee16ffc,0x3ecfb241,0x3ebf1d8d,0x3ea382f2,0x3e8f2fd2,0x3e52ef1e,0x3c308120,0x3dad816b,0x3d2bf363,0x3d29c9b9,0x3d1bf3f4,0x3cbbc318,0x3d2f6f6a, -0x3d04c204,0x3d355e6f,0x3cee0e1f,0x3da6f15d,0x3d819db2,0x3dcbf3d8,0x3e28bffe,0x3e1a3599,0x3e334a85,0x3e7af175,0x3eecc9f4,0x3f27a370,0x3f367826,0x3f4d8700,0x3f5959fd,0x3f64e913,0x3f6e9d5c,0x3f7aea69,0x3f713b4c,0x3f49297c,0x3f48cb86,0x3f3efc1f,0x3f2d78f4,0x3f236bec,0x3f10d0db, -0x3f080bb6,0x3edda28a,0x3eb87482,0x3e8e205b,0x3e04acac,0x3e215d35,0x3d706413,0x3db8764e,0x3cd8e5cf,0x3d28c71a,0x3cd4872e,0x3d4ea52d,0x3d8b9d0c,0x3d5f788d,0x3d957e59,0x3da3e53b,0x3e2c3965,0x3e1c623f,0x3dd509ec,0x3ebc188a,0x3eb0d37f,0x3f05a071,0x3f3aaec6,0x3f51550b,0x3f659f43, -0x3f744eaa,0x3f82362e,0x3f7e3a3f,0x3f824e58,0x3f7178c3,0x3f5b4148,0x3f563a7f,0x3f44c7c6,0x3f42d7b6,0x3f2ec55c,0x3f1c43e2,0x3f0eac96,0x3ee688f7,0x3ed17a8a,0x3e86b7fc,0x3dbdf5a1,0x3e060015,0x3dec539a,0x3db32211,0x3d85d058,0x3d5aef83,0x3d382b8c,0x3cd20fd6,0x3d1951a1,0x3d4cf4bf, -0x3dc1451a,0x3db8d7bd,0x3da2d158,0x3e2b414b,0x3e8860f2,0x3e635ce4,0x3e95b627,0x3f15475f,0x3f708912,0x3f6ded71,0x3f85690c,0x3f810805,0x3f808d3e,0x3f754b86,0x3f7563cc,0x3f6ee377,0x3f725a24,0x3f6ac124,0x3f6a325d,0x3f598d4f,0x3f3e0068,0x3f287c46,0x3f13bda4,0x3eefec65,0x3ecf8168, -0x3e946ed0,0x3e40a9e9,0x3e1388f2,0x3da56f98,0x3e0b7f0e,0x3d9844f1,0x3dad674a,0x3cff91d7,0x3db9fba1,0x3db04363,0x3d749f81,0x3d8c1a9d,0x3dbbd47a,0x3e3528b9,0x3e5b1c57,0x3e81ea00,0x3e500f5f,0x3e9d2bb3,0x3f1dae46,0x3f792da1,0x3f7c6467,0x3f7ef63a,0x3f733eca,0x3f70c0ce,0x3f7ce0a0, -0x3f6dad57,0x3f72bb4b,0x3f7e6344,0x3f7a3e89,0x3f6b8b10,0x3f550b00,0x3f3f9814,0x3f1f8868,0x3f0b7798,0x3ed687aa,0x3ed1e126,0x3e7f777b,0x3e4354f1,0x3e1a5e8f,0x3e4453e9,0x3da31b30,0x3e03a53c,0x3d444085,0x3da05731,0x3d4591a8,0x3d59b44e,0x3e0634cb,0x3d552fca,0x3dee218e,0x3d61728f, -0x3e6d75ca,0x3e32c35b,0x3ed8d275,0x3eb35227,0x3f59a7d7,0x3f68b894,0x3f6c7306,0x3f56e2f9,0x3f612c98,0x3f702ddf,0x3f78bc38,0x3f7b64b4,0x3f76e5d8,0x3f66a093,0x3f5dcdef,0x3f5606ba,0x3f3f3e62,0x3f2fe739,0x3f16dc61,0x3ef7d34c,0x3eda3d6d,0x3ec1eb31,0x3e976486,0x3e5c1a06,0x3e8304dc, -0x3dcabdac,0x3e06dcb4,0x3df39ca6,0x3db48557,0x3d9bda96,0x3ddccf45,0x3e293a5a,0x3d8d8586,0x3d7b4ffd,0x3de53edf,0x3e0c699d,0x3e7f8ce8,0x3df61648,0x3ea9912d,0x3f000344,0x3f172d41,0x3f6e914b,0x3f661b0a,0x3f6639d3,0x3f5a8182,0x3f586a79,0x3f69b041,0x3f580e56,0x3f5e0822,0x3f6b9b41, -0x3f5535c8,0x3f4342a5,0x3f31cbe9,0x3f1195d9,0x3ef3c651,0x3ed89c69,0x3ed5a17e,0x3ed1cff4,0x3ed251af,0x3e316fca,0x3de6d690,0x3e3817d1,0x3dc9ede6,0x3e03a65a,0x3da505a8,0x3d24842b,0x3db7bddd,0x3d9cfbc5,0x3dd361e8,0x3e251abc,0x3e311a54,0x3e8c449b,0x3d92405a,0x3e944d62,0x3ebdfa0d, -0x3e63ca7b,0x3f354bcc,0x3f3e837c,0x3f3a64ac,0x3f3ae4fb,0x3f440bb6,0x3f478e80,0x3f48a18f,0x3f49951b,0x3f3b4820,0x3f3639d9,0x3f2f7edf,0x3f27bc11,0x3f190c3e,0x3f0b124b,0x3efcb4c0,0x3ee000b7,0x3edf7b18,0x3ef7ddf4,0x3e8e1f69,0x3e203b2f,0x3ec26b6d,0x3e2da5cf,0x3e59bd81,0x3e1754e7, -0x3d2749fc,0x3e4c7fb0,0x3dc11cb5,0x3e2aab9b,0x3d8156ed,0x3e0b40b4,0x3e26f818,0x3e00e142,0x3e8260c7,0x3e87c31e,0x3edd2851,0x3eb03057,0x3ee5df68,0x3f29899f,0x3f219c85,0x3f273fbd,0x3f2d8b9c,0x3f364bab,0x3f3b2fa9,0x3f332d09,0x3f2ca806,0x3f283f55,0x3f1b0fe7,0x3f11d555,0x3f05c8ee, -0x3efe9aea,0x3ee7f5a2,0x3ed9062a,0x3ecd837d,0x3edcee19,0x3ed4f3e4,0x3e3a933c,0x3e08b1c6,0x3e80246e,0x3dfed7dd,0x3e187724,0x3e1a207b,0x3d2a1173,0x3dc961c1,0x3e1cecfd,0x3e1c83a9,0x3e13ef04,0x3dd68c7d,0x3e59a379,0x3e3ee817,0x3e57528d,0x3e80cb91,0x3e4c5430,0x3f044175,0x3f0ab2d5, -0x3f0bf88c,0x3f1d327d,0x3f1d788b,0x3f23dada,0x3f284614,0x3f24055a,0x3f205fdf,0x3f1be973,0x3f11a199,0x3f055e33,0x3eee5198,0x3ee90217,0x3ed7c73b,0x3ed40748,0x3ec56be0,0x3edcd6e4,0x3e93669a,0x3e913c33,0x3e79e056,0x3e87ac82,0x3e5a5229,0x3e362dbf,0x3e5f5b7d,0x3e37538d,0x3ec76008, -0x3dae7f33,0x3e994650,0x3e18ab12,0x3e7038c1,0x3e83a76a,0x3e4a9659,0x3e9ff057,0x3ecc8a24,0x3dec91a3,0x3f052b6f,0x3f009848,0x3f00a373,0x3ef23ea9,0x3f07cba1,0x3f06f80c,0x3f106e0a,0x3f088371,0x3f03c120,0x3efc5140,0x3ef6cc58,0x3ef0fce7,0x3ee73ea1,0x3ee3a0e3,0x3edf055f,0x3ee939b9, -0x3edb5eef,0x3edcd7c1,0x3ee1e00c,0x3e165a3a,0x3e8cf480,0x3e76ec13,0x3ea5ec97,0x3e8d580a,0x3e842c85,0x3e87ae03,0x3e77a9c4,0x3e780671,0x3e8ae074,0x3ece4808,0x3e223659,0x3ea3a168,0x3e851044,0x3dbb59e6,0x3ef1473e,0x3e9f88e0,0x3eec5891,0x3ed5582b,0x3edc83eb,0x3edcc077,0x3ee37193, -0x3ee1c413,0x3ee8080b,0x3ee2c121,0x3ee1af31,0x3edf1447,0x3edaae20,0x3ed60954,0x3ed31c5c,0x3ed174a7,0x3ed0ecbb,0x3ed16b4a,0x3ecf7a36,0x3ec706d2,0x3ee77b0f,0x3e9f44fe,0x3e38c6af,0xba87e4e7,0x3e9c6d87,0x3e33bb6e,0x3af55f53,0xbc8103d1,0x3bcaedbe,0x3c9dda6a,0xbd0032ea,0xbcf4512c, -0x3d0b257a,0x3e67bebe,0x3ea9c410,0x3ce2d3c2,0x3e18618b,0x3f20a721,0x3e931b44,0x3e71f650,0x3dd0d233,0x3e2b8139,0x3e2c5d8f,0x3e31d305,0x3e2fb2c2,0x3e31f7ea,0x3e332c7c,0x3e2ee651,0x3e318472,0x3e307b05,0x3e2d51c9,0x3e2bbc76,0x3e2a7889,0x3e237c71,0x3e2455aa,0x3e1f24cb,0x3e1f0b89, -0x3e21f879,0x3e0a8881,0x3e8a60fd,0x3ea08713,0x3ea0571b,0x3e77f3c7,0x3e9e8be3,0x3ea4311f,0x3ea350fb,0x3e9fd8c7,0x3e9a4b20,0x3eade564,0x3ead0f03,0x3eae199e,0x3ea92c13,0x3e717c25,0x3ea69bda,0x3eb2db6a,0x3ef512ba,0x3e7fbe0e,0x3e5e79e3,0x3e68855c,0x3e7cfae7,0x3e788a54,0x3e81937f, -0x3e80ad89,0x3e6bbcd5,0x3e7e4ae0,0x3e739987,0x3e697c65,0x3e6ad2a3,0x3e66b07f,0x3e4959c5,0x3e575805,0x3e46766c,0x3e45374a,0x3e3b8720,0x3e220a68,0x3ea8b9f5,0x3e8c583e,0x3e8d51bc,0x3e94b8ae,0x3e663441,0x3e851e3b,0x3e88b3ab,0x3e9923ef,0x3e850567,0x3e975ff9,0x3e18d232,0x3e8850ea, -0x3e932aa7,0x3e94595a,0x3ea67b71,0x3e91c1cc,0x3ecf84b7,0x3e4e4951,0x3e61a10b,0x3e88dd00,0x3e94fa3b,0x3e9a7516,0x3e953e48,0x3e974332,0x3e9424ed,0x3e90a9fa,0x3e916262,0x3e918a32,0x3e86e33a,0x3e742143,0x3e6628d3,0x3e506b0c,0x3e43768d,0x3e45f53f,0x3e1a9fb2,0x3e5c576e,0x3ea2f297, -0x3e6fe1ce,0x3e640fef,0x3e7283bb,0x3e488275,0x3e510a64,0x3e2f98a3,0x3e101445,0x3e7e4cc9,0x3e26fcc5,0x3e7357bc,0x3e514af0,0x3e5f5934,0x3e7ce28e,0x3e9d2f72,0x3e67fb99,0x3ece4bf9,0x3ea65a33,0x3e4651b5,0x3e932c50,0x3ea5820d,0x3ea8eeb9,0x3eaa7f61,0x3ea00cc5,0x3ea0071b,0x3ea09c13, -0x3e9ce7ae,0x3e97a6a5,0x3e90736d,0x3e7c4dec,0x3e5b6c71,0x3e4af6cb,0x3e36e141,0x3e280a95,0x3e0fb75d,0x3e220113,0x3e4a9868,0x3e044020,0x3e2b9ba0,0x3ddcb307,0x3e0d320e,0x3db83a99,0x3e102d24,0x3dd7b115,0x3dfd51da,0x3db0db1d,0x3e088149,0x3e0da2ca,0x3e5ebc7a,0x3e4bad17,0x3e60861b, -0x3e6468c5,0x3e8c65f2,0x3ea524fe,0x3e4057a5,0x3eab582f,0x3ebd34a4,0x3ec7e1bc,0x3ecb00ec,0x3ec59150,0x3ebe6304,0x3eb6be99,0x3eb9786b,0x3eb76796,0x3ea3d40d,0x3e8d90b8,0x3e769de4,0x3e57e4c6,0x3e39c764,0x3e2d778e,0x3e115662,0x3e18d74a,0x3e62305c,0x3dfd28af,0x3de21d2d,0x3da3a1be, -0x3d4674a4,0x3d45b4af,0x3ce2df14,0x3d07c4d2,0x3d3e52ef,0x3d611259,0x3d70b053,0x3dcecb89,0x3e03c9b4,0x3e1936f2,0x3e38d8cd,0x3e92dd4a,0x3edd8330,0x3eb15dff,0x3e34b97b,0x3ead1495,0x3ecdb73f,0x3ed06d07,0x3edc1d53,0x3ee99927,0x3f041f9b,0x3f08049c,0x3ef7216c,0x3ee3b302,0x3ee4909d, -0x3ee6ad76,0x3ec81eae,0x3ea9b140,0x3ea52a04,0x3e98deac,0x3e781715,0x3e53e90c,0x3e632e61,0x3e0802c0,0x3e102fd1,0x3dc0fef3,0x3db3547f,0x3d6dfa78,0x3d884be9,0x3d711409,0x3d9b9a1b,0x3d984785,0x3dc77234,0x3e0604c3,0x3dfa6022,0x3e5239b4,0x3e9ad23c,0x3e7b2425,0x3ef11cf4,0x3eb4f784, -0x3e73fa62,0x3ecd4e52,0x3eefa9ab,0x3ef41410,0x3f0a5496,0x3f0d3edc,0x3f1c9e8d,0x3f1847c3,0x3f1910b4,0x3f1554e0,0x3f00237e,0x3edced27,0x3eb48c62,0x3e9eea60,0x3e81042b,0x3e8d2fc7,0x3e68e9ce,0x3e89c7e2,0x3e94d7a6,0x3e60d913,0x3e1bc93f,0x3dda1721,0x3da2cd26,0x3d7d09bb,0x3d79ba4b, -0x3d81266f,0x3d9bfded,0x3db2949e,0x3dc54fa9,0x3e18a47e,0x3e4f4c21,0x3e5d1c3f,0x3e88f3ec,0x3eca6838,0x3f14be28,0x3eda0c57,0x3e765622,0x3eab061e,0x3e84c34a,0x3ece0f22,0x3ee8bfe6,0x3ef58465,0x3f1e82d9,0x3f26f74a,0x3f11de02,0x3ee8a02d,0x3eb0ddcf,0x3e81c767,0x3e5f543f,0x3e6b8485, -0x3e62586e,0x3e790440,0x3e405ca1,0x3e7e24cf,0x3e8d6e3a,0x3e5abec5,0x3e606924,0x3e1092b0,0x3deea8df,0x3dd4e6ea,0x3dbe0025,0x3dcc8e0b,0x3e027f3e,0x3dda4183,0x3e02e658,0x3e13ba38,0x3e62fc5c,0x3e8291d7,0x3ec0c3ae,0x3ec5691b,0x3f234f6e,0x3eea167a,0x3e15e480,0x3e6262e6,0x3e571c72, -0x3eac8559,0x3ecbbcad,0x3f06506c,0x3f0c4830,0x3f0da888,0x3ee24397,0x3eaac50c,0x3e7afeaf,0x3e3049ae,0x3e45b940,0x3e434659,0x3e5116c5,0x3e4edbe5,0x3e1c69a4,0x3e712490,0x3e954aee,0x3e5b2226,0x3e70d0ea,0x3e3ae3ce,0x3e1d3677,0x3e07ea99,0x3ded1e73,0x3de6cf5c,0x3e4e807d,0x3e078a55, -0x3dff66a9,0x3e21859e,0x3e7df0f3,0x3e7406e1,0x3ed5310b,0x3e9005e8,0x3f248cc9,0x3e194091,0x3e156ea5,0x3e77304a,0x3e930aa2,0x3ed56aa6,0x3f05507f,0x3f1c92bd,0x3f10c1ec,0x3effd2ff,0x3ed86e98,0x3ebc3f40,0x3eabe17c,0x3e9bc9a6,0x3e905c1f,0x3e80e4a9,0x3e4cd0be,0x3e59c3e4,0x3e329c22, -0x3e924d6b,0x3e95d742,0x3e8c46a8,0x3e7aac69,0x3e62bfdc,0x3e2a4266,0x3e1e03ef,0x3dd1b108,0x3e0cab84,0x3e8be4b9,0x3e125de8,0x3e1e91a7,0x3e1d35e6,0x3e531d63,0x3e6d8087,0x3ebc2665,0x3ebcfa30,0x3f17637c,0x3f08015e,0x3e06823a,0x3eda08e6,0x3ec22dd4,0x3f0bd6cd,0x3f13db6b,0x3f1af049, -0x3f0cdbe7,0x3efc8ca4,0x3ebf4083,0x3ea5dbc1,0x3e93746d,0x3e868d75,0x3e8191df,0x3e8580c3,0x3e7b5d73,0x3e984275,0x3e8dcdc7,0x3e9d6160,0x3ec71307,0x3ea189c5,0x3e78f3bf,0x3e76b483,0x3e5693f5,0x3e2b1fe6,0x3e1d1175,0x3e23c9dc,0x3e49ca90,0x3e487dfd,0x3e4d6eec,0x3e7b11c1,0x3e580862, -0x3e976e34,0x3ebadfae,0x3e742657,0x3f2fcab2,0x3e9d5afd,0x3ec412e2,0x3efb7ae8,0x3f04fdaf,0x3f1a15ad,0x3f1f33cc,0x3f17b7b9,0x3f1ae816,0x3f13f3ee,0x3f096524,0x3eee173d,0x3ec316f6,0x3eabb3a6,0x3e8f31b2,0x3e897f18,0x3e817d08,0x3ea9b753,0x3ea45099,0x3ec4c3d8,0x3ed87cf8,0x3e955229, -0x3eb9f295,0x3e8364fc,0x3e66c95e,0x3e3d933b,0x3e36915a,0x3e394f3d,0x3e656f7b,0x3e52dfe8,0x3e6c957e,0x3e72a638,0x3e9ee175,0x3e9f0e18,0x3ec23687,0x3ed420e3,0x3f0e5da6,0x3f095a63,0x3ed70cc1,0x3f04d3a2,0x3f0b9f83,0x3f0e3d03,0x3f0f5914,0x3f0dfd53,0x3f093e92,0x3f051526,0x3efcdb4d, -0x3ee01a6d,0x3ed0182b,0x3ebb960b,0x3eb16d45,0x3eb5b484,0x3eb22a6d,0x3ebd6f4f,0x3eb05439,0x3eb8524c,0x3ed9c491,0x3eb13851,0x3eab9370,0x3e99bed4,0x3e80b653,0x3e68753c,0x3e7d3396,0x3e6745f6,0x3e7ad5dc,0x3e7d11f9,0x3e85b83e,0x3e71b154,0x3e99e35f,0x3ea1fca7,0x3ed3dfa6,0x3edc2ee9, -0x3f09bd60,0x3eef0840,0x3ee72756,0x3f00f6aa,0x3f034c0b,0x3f008796,0x3eff6b51,0x3f00a314,0x3ef277c3,0x3ee73842,0x3ed6eb11,0x3ee7e312,0x3ee61959,0x3ee881bb,0x3ee69289,0x3ee0d2eb,0x3ed211b2,0x3ecede29,0x3eaf4190,0x3ecbc0bb,0x3ed75e09,0x3eb71be2,0x3ebdc4b7,0x3eac7965,0x3eab06ce, -0x3eb53395,0x3e954862,0x3ea2143f,0x3ebb5c18,0x3e93a979,0x3ea7dda1,0x3e9ecdaa,0x3ebb9580,0x3ed0d34e,0x3edac36e,0x3ed8a943,0x3f02c5a6,0x3eccbe0b,0x3ee6093c,0x3ed9c0c0,0x3ecfe63c,0x3eed0103,0x3ee9ce30,0x3ef55bdc,0x3ef8e9ec,0x3efdbe06,0x3f0015a7,0x3efc8484,0x3ef8b5be,0x3efef43c, -0x3eecc974,0x3ee1a664,0x3ee67822,0x3ee157fc,0x3ece0ee8,0x3edfe3cb,0x3ef4ad41,0x3ee659bc,0x3ee7fd25,0x3ee461e7,0x3ed51821,0x3ebd52f9,0x3edf4a6e,0x3edf0d61,0x3ee085cc,0x3eeeb267,0x3ec03dfb,0x3ee852ee,0x3ef51a9d,0x3ed58713,0x3ef44c75,0x3efa4ac6,0x3ee8f1f4,0x3ea4c00e,0x3eaecc87, -0x3eade53e,0x3eaae4bb,0x3ead598d,0x3eaa9a39,0x3ead49a7,0x3ea9b2c5,0x3ea90306,0x3ea95021,0x3eaa8889,0x3eabeda9,0x3ead8389,0x3eab2dd6,0x3eabe351,0x3eaa266d,0x3ea4c8a7,0x3ea138ea,0x3e963a57,0x3ed75fd9,0x3eeebc04,0x3ecd0a3b,0x3ed85c40,0x3eed19d2,0x3ed16dd6,0x3ed69a80,0x3ecceff0, -0x3ecce41c,0x3ed59edd,0x3ed92872,0x3ed756de,0x3ee8d42b,0x3ecdd8bf,0x3ed87378,0x3ef9d928,0x3f0d6ff8,0xbdab300f,0xbdc2504c,0xbe0b7d3b,0xbdadb453,0xbdbb5491,0xbdbec60e,0xbdcab4dc,0xbdd3b211,0xbde27ee0,0xbdcb1949,0xbdbe132e,0xbda6dc7f,0xbda1a9f8,0xbda12b70,0xbda21417,0xbda1a91c, -0xbda371d5,0xbd9e8306,0xbd9afc84,0xbd83e10b,0xbdb1cfb0,0xbbad8129,0x3d99bf14,0x3e94bf5c,0xbd40b524,0x3d7f3aa8,0x3e8ee57d,0x3e8bb5dc,0x3e8695a5,0x3e7247ca,0x3e8da3ae,0x3e87740c,0x3e6b9723,0x3dae8cdb,0xbd8a96e7,0x3e8038aa,0x3de38536,0x3e8f1b39,0xbd99f427,0xbdcb086c,0xbde596ac, -0xbdef2bd8,0xbe1a9426,0xbe2c0c19,0xbe3867e2,0xbe078334,0xbdfb5efb,0xbdd9de3a,0xbdba9825,0xbdb191a5,0xbdb98b32,0xbdb1c3ee,0xbdc25a8f,0xbdbbb3f7,0xbda1a11d,0xbd87825c,0xbdb0b973,0x3dedfce4,0x3d79211e,0x3de265d6,0x3d5509ae,0xbd0e3341,0x3de1ade0,0x3d251bf3,0x3dd001a6,0x3d2d846b, -0x3d899c48,0xbda8232d,0x3d9c55c9,0x3d86bf8e,0x3d216d43,0x3da4075d,0x3d0df756,0x3d53e80e,0xbe2e147e,0xbdf9b936,0xbe2077dc,0xbe2c1260,0xbe786385,0xbe83e86d,0xbe946cc6,0xbe60ffbb,0xbe2a2696,0xbde88395,0xbdcd423f,0xbdbc15dc,0xbdc44d75,0xbddb4ca9,0xbdce88d7,0xbdd44f5e,0xbd886311, -0xbd94b527,0xbae940f6,0x3df1b089,0x3db104de,0x3c7908f6,0x3db09f39,0x3d90ac4e,0x3cba5e79,0x3d724b9a,0xbda6b60f,0x3d854238,0xbbb8cd86,0x3d89915e,0x3c46dc84,0x3bdf80c9,0x3cdb24b0,0x3dab0d59,0xbdb6c83a,0x3e0f6c73,0x3d519bd6,0xbe120eb2,0xbde2b415,0xbe359488,0xbe92e002,0xbeaa48b9, -0xbeb718f7,0xbe753614,0xbe1fca17,0xbdfeaaba,0xbda9978c,0xbd918ae5,0xbda1b47e,0xbdbd235c,0xbdc833b4,0xbdc4f6a6,0xbd7d1101,0xbd005f50,0x3c29fb0e,0x3d9528e3,0x3d0a2739,0x3dc21a3e,0x3cbf6353,0x3da48011,0x3cf2075f,0x3dbafabc,0x3d91590f,0x3d8976c5,0xbab2c046,0x3d3f08b2,0x3c2a08cb, -0x3dd5fd6d,0x3d964c44,0x3bb45c94,0x3c3cc62c,0xbd62f5bb,0xbd833212,0xbe254329,0xbe3b9cc4,0xbe7bbca8,0xbec84039,0xbeeaf61e,0xbefacfbe,0xbeb04891,0xbe648e83,0xbdd91586,0xbda9d7e5,0xbd9f2e92,0xbdba89b9,0xbdee619a,0xbdeed1e5,0xbdd1b3ea,0xbd6e38bc,0xbc8eff99,0x3d08d847,0x3e22de80, -0x3dbf5cb6,0x3da826eb,0x3d8a9f0e,0x3d3297b9,0x3d50a054,0x3caf2a23,0x3cef8f36,0x3cc1874a,0x3d355573,0x3bb7dfe6,0x3d7af3a9,0x3d579670,0x3cb0e469,0x3d42723d,0x3d948c2e,0x3d8205ff,0xbe4aadeb,0xbe8b4887,0xbe956116,0xbeaad4a2,0xbebb0c0b,0xbec4849d,0xbee0c82b,0xbeed410e,0xbecfe308, -0xbe522372,0xbe8a4880,0xbe80eddd,0xbe699df6,0xbe70da65,0xbe6cdd17,0xbe4c1c22,0xbde02ffb,0xbd68bbe8,0x39aa2258,0x3df44c69,0x3d6ea853,0x3dcca6ae,0x3d334fc5,0x3d9d02ae,0x3d3dc508,0x3d926e24,0x3d4fb640,0x3d032a5a,0x3caf5f33,0x3c2e5497,0x3d0bb2e8,0xbd025d3b,0x3bde1e02,0x3ded5140, -0xbe1b8d4e,0x3d1922ca,0xbe13ab58,0xbed971e4,0xbef202f0,0xbedbecdd,0xbee3240e,0xbef79b82,0xbf030869,0xbf0085d5,0xbee5b74e,0xbea467c9,0xbebbfd35,0xbec1eeda,0xbeda83d3,0xbec2b1e0,0xbe98f2e7,0xbe812fe7,0xbdf40bce,0xbd994c8f,0x3d127be1,0x3e39558d,0x3dbb6c35,0x3d511177,0x3d23ee7d, -0x3cc2c385,0x3c89b6f0,0x3c8de171,0x3d302bc2,0x3da608ad,0x3d815473,0x3d571cfb,0x3dca5d74,0x3e10090b,0x3dbf339f,0x3d0e8e88,0x3e2cfcd9,0x3e17ac54,0xbe4cef7f,0xbf21467c,0xbf03a048,0xbf067161,0xbebf6085,0xbeac3ec6,0xbeba91a7,0xbeb163b5,0xbebf60fa,0xbefc1551,0xbf0cf7e8,0xbf1e9c81, -0xbf176969,0xbefbe1b0,0xbed18424,0xbea8ad94,0xbe39493a,0xbdda0f41,0x3c1e0419,0x3dae7d3c,0x3ddeda84,0x3e0b568f,0x3cbbce0a,0x3d709880,0x3d78a41a,0x3dcdb76c,0x3d88a753,0x3dd0da21,0x3dac7a9c,0x3db2855c,0x3de373d6,0x3d284492,0x3d517cbf,0x3d465462,0x3e3d845a,0x3dd2aa86,0xbe5c2c2e, -0xbf0aee95,0xbee1593e,0xbe62bb54,0xbe67b184,0xbe43c410,0xbea6dd08,0xbe97ad38,0xbed0057f,0xbf17fba8,0xbf29596f,0xbf2a1d16,0xbf1a3a11,0xbf046362,0xbecaf512,0xbe9f344c,0xbe300ca2,0xbe0bc1b3,0x3d069dd4,0x3d9ec94a,0x3df9dcdd,0x3d8f2ec5,0x3e01d9b8,0x3d633abc,0x3dfc268b,0x3db3370e, -0x3deb2c99,0x3e60087a,0x3d61a01c,0x3dcda8c8,0x3d90a648,0x3e39949a,0x3d3a3493,0x3e1782ea,0xbd964756,0x3d6b35db,0xbedf15a7,0xbebda55f,0xbe962c91,0x3def5b4b,0xbd98164e,0xbe31f59c,0xbea841c9,0xbec0882f,0xbeeb76c9,0xbee9c9e1,0xbf04761e,0xbf0a6644,0xbef5c616,0xbed8fc00,0xbea9623e, -0xbe571da0,0xbe1281ec,0xbdba4c13,0x3a7038d1,0x3dd67ec5,0x3d25685a,0x3e393b70,0x3dd49415,0x3da3d8a3,0x3dc5c16f,0x3d5a32b8,0x3d90ffe9,0x3e48b8eb,0x3df59eb8,0x3df28588,0x3dc99d0c,0x3dd994ca,0x3a03e97a,0x3e5d758f,0x3d5773ac,0xbe488551,0xbe611758,0xbeb8db0d,0xbe6ed831,0xbe5857fa, -0xbdd81795,0xbdc34a40,0xbe7db08d,0xbe872103,0xbebdf26e,0xbf0373d3,0xbef42755,0xbee4c7b7,0xbec8de7b,0xbe8763fa,0xbe33a46c,0xbe012ccb,0xbdfae53a,0xbdb72b40,0xbda07f3e,0x3e41a4e8,0x3e7de439,0x3dea3c4f,0x3e461875,0x3e009799,0x3e0c4d09,0x3e237384,0x3e02c7ba,0x3e4b7186,0x3e061d0d, -0x3d90c19a,0x3d36d224,0xbc96a05e,0x3e71b78d,0x3c4024ce,0x3ca3468c,0x3e834ab6,0xbe8a0545,0xbe6a7776,0xbe0fbf98,0xbcf5ed32,0xbd5f7d3b,0xbda8f916,0xbe2c9f90,0xbe653cac,0xbe708352,0xbe7f14a2,0xbe926cd1,0xbe92b44a,0xbe748376,0xbe4a3c4f,0xbe121b7a,0xbdc7a3c9,0xbd6b8bcd,0xbe021e75, -0x3df69194,0x3e8c8682,0xbd732e4f,0x3e255ad7,0x3d94f010,0x3dece85d,0x3e5249c5,0x3d255740,0x3e1d8ae9,0x3dcf6d3a,0x3e57afb5,0x3e081d61,0x3dc51494,0x3e244ad9,0x3d618a0d,0x3dafacec,0xbd885c00,0x3e19c5b8,0x3d4fd5ad,0xbe175962,0xbd431645,0xbcdc5cdb,0xbd97bbd7,0xbde4d63e,0xbe19854d, -0xbe245652,0xbe273d80,0xbe2ee7a0,0xbe1e7070,0xbe074e35,0xbdd28af5,0xbdab408d,0xbd060d0d,0xbbd049ea,0x3c30ea30,0xbd0bb1d0,0xbd515912,0x3e657b16,0x3e79c947,0x3db2b569,0x3e5a0c77,0x3e2b32fb,0x3e0d358a,0x3e8404ea,0x3e49a6fb,0x3e0cf675,0x3e1a3a0d,0x3e2acd0e,0x3e4224b4,0x3e068eee, -0x3e3e5852,0x3e53b1de,0x3e579084,0x3eb43ebd,0xbcd3f1a3,0xbd19d73e,0xbb129cc0,0xbcec1412,0xbd7d82d6,0xbdcad90d,0xbdfd59fd,0xbdfb27ee,0xbe0110d1,0xbe029ec3,0xbd9c786c,0xbd01fd13,0x3c8d717a,0x3cfde8e8,0x3d8050a6,0x3d7a3272,0x3d8ca546,0xbcac41c0,0x3e114166,0x3e095393,0x3e25dd50, -0x3de238e6,0x3e1db13c,0x3e3864e2,0x3e009005,0x3e31b764,0xbdaf3245,0x3e8c051a,0x3c90df85,0x3e589dc1,0x3df3f386,0x3dfee11a,0x3e6fe156,0x3e0856f9,0x3d400ecd,0x3ee90d14,0xbdc0e377,0xbcccba74,0xbd325bcd,0xbd184215,0xbccbfa45,0xbc885412,0xbcb98971,0x3c19579a,0x3cf89be0,0x3d5ddd8e, -0x3d88f2e8,0x3da0faec,0x3deff302,0x3dad51e9,0x3d6c1e37,0x3d38c1ee,0x3d54c85f,0x3c92a471,0x3c50ff69,0x3eba1f64,0x3e4efb28,0x3e68bca9,0x3def3fe0,0x3e1bfb1e,0x3dfb2849,0x3e26da49,0x3e296bcb,0x3e4d651b,0x3e36f67d,0xbc5c235c,0x3ea0c4d1,0x3e08626f,0x3e3653fe,0x3ee3d081,0xbcbf66c0, -0x3d9a6930,0xbdfc80e2,0xbd536758,0xbd909e1e,0xbd983eff,0xbda71a0b,0xbdaf3d92,0xbdb8ec73,0xbdac555b,0xbda060e1,0xbd918205,0xbd7e7762,0xbd60230f,0xbd438977,0xbd538c2f,0xbd3fd5db,0xbd4b7f04,0xbd6ec04b,0xbd3a7ccf,0xbe0394a9,0x3d617ccd,0x3e778f34,0x3efa2f77,0x3d5a412e,0x3e6c63b0, -0x3ef05b2f,0x3f01cc26,0x3eeec7c9,0x3ee79165,0x3f04e301,0x3f03056a,0x3ee0369c,0x3e372838,0x3ca6422e,0x3ef11a64,0x3e9b84e9,0xbd82763c,0x3d82ce3d,0x3cd78f7f,0x3df2f532,0x3d72422a,0x3d65f473,0x3d576247,0x3d6b80e7,0x3d6c0ceb,0x3d5daf3f,0x3d596911,0x3d53c23f,0x3d4684fd,0x3d431056, -0x3d49f6c2,0x3d5a3f0f,0x3d5c14c6,0x3d67efda,0x3d6d2215,0x3d7ffd03,0x3d6e9b03,0x3d9e8d6c,0xbcb7ca04,0xbd9888ab,0xbde11609,0x3ad44aac,0xbd907ba4,0xbdf0eecb,0xbdef6fa4,0xbde204be,0xbdcc0795,0xbe081eca,0xbe08bdef,0xbdf8bcd3,0xbdbcf86a,0x3c1eda91,0xbdea2e12,0xbde198ec,0xbe4bfd11, -0x3d3af0ac,0x3db7c092,0x3d96d008,0x3d5510b9,0x3d87b6d1,0x3d8bf7e7,0x3d75ddf5,0x3d77a09c,0x3d7863a9,0x3d6d8c0e,0x3d65f952,0x3d642ac2,0x3d876b4f,0x3d81d4cd,0x3d8d4fc8,0x3d98e4ad,0x3da0af53,0x3dafeb5b,0x3dd652b4,0xbd49ce15,0xbabff51b,0xbcc82f34,0xbd0aa084,0x3cb6cdf2,0xbca04157, -0xbb6356df,0xbd20c156,0xbc1616b0,0xbd052b15,0x3d99394b,0xbcbde902,0xbd09e112,0xbc969c5f,0xbd3e47ba,0xbc36161c,0xbd94c7d2,0x3e1e8989,0x3dd57577,0x3da25969,0x3d36342b,0x3d82ee9a,0x3d735561,0x3d192fb4,0x3d3682cf,0x3d1f6ab6,0x3d0849bb,0x3cc38b5d,0x3d054d6b,0x3d497e88,0x3d55c6bb, -0x3d7d0f4e,0x3da1c691,0x3da7ad14,0x3dedc2f9,0x3d7c6cb2,0xbd300173,0x3c694e87,0x3c9299ba,0xbba5ca24,0x3c83e37f,0x3bd69cfc,0x3cbfadda,0x3da8b16b,0xbca4525a,0x3d28b7f1,0xbcdda3c1,0x3cac31a8,0x3c70238f,0x3b1bdb05,0xbd5a3777,0x3d8c2341,0xbdd8a76e,0x3cd397b3,0x3e420c56,0x3dc3861c, -0x3d343b17,0x3d4ad177,0x3d6faeab,0x3cf08dbe,0x3d3ceed7,0x3d3c43d8,0x3d415e9e,0x3d2aa069,0x3d0b5ce5,0x3d874501,0x3d6e8c82,0x3d8c3400,0x3db0bd00,0x3ddddd69,0x3e0115da,0x3dd19e40,0x3d487e66,0x3da15363,0x3cca771a,0x3d88f23a,0x3cf7001f,0x3d617508,0x3caa4952,0x3d18b89d,0x3d1c6988, -0x3d6ed03c,0x3c383eac,0x3cf79aa5,0xbceb6558,0x3c0308e8,0x3cba6e94,0x3d6b7447,0x3df14411,0x3de5fe38,0x3e6f554e,0x3dd27a92,0x3d1bfeb0,0x3d54627e,0x3cfad96c,0xbb854eab,0x3cc431a5,0x3cedcb44,0x3c96e9be,0x3b3b8a61,0x3c9140cb,0x3d296c68,0x3d4d1806,0x3d75a359,0x3db9382b,0x3de47f64, -0x3e08b9f8,0x3de7622f,0x3c1f6df9,0x3d7eaa29,0x3d50f19a,0x3d4cfa6d,0x3d751a43,0x3d1b8da5,0x3d61fcb9,0x3d4dd610,0x3d635454,0x3d12301c,0x3d5f4a05,0x3d0be482,0x3d1d79b2,0x3d81c9cb,0x3d4a6135,0xbb13cdc6,0xbda62fea,0x3e086b20,0x3eb98f9e,0x3e558cc1,0x3e1f27ca,0x3e52bbb5,0x3e3933af, -0x3ddfc855,0xbdbebc23,0xbe5c73b8,0xbe4981b9,0xbe50fea4,0xbe7096fc,0xbe8a660f,0xbe5eff36,0xbe10e1df,0xbdeaf5a5,0xbd525780,0x3c9b6849,0x3d4fd5c1,0x3d267a69,0x3da34710,0x3d44081d,0x3d58d0a4,0x3cf8e37a,0x3d2dcca6,0x3d4c8d86,0x3d533cf4,0x3d190428,0x3cd43886,0x3cc59fcd,0x3ca54d08, -0x3dd06e7d,0x3d64b442,0xbd5fb1b6,0x3e221895,0xbd86a93b,0x3e0c60f7,0x3ea139a4,0x3e43b5e5,0x3e286a8d,0x3e223625,0x3d2fb29c,0xbd5259b3,0xbe57c321,0xbe8b3426,0xbe95e816,0xbea86513,0xbe8aaa31,0xbe387bda,0xbda751ad,0xbc7f17a1,0x3d4505ab,0x3d6f8724,0x3db08da8,0x3d41b5c1,0xbcf93336, -0xbb0d4af3,0x3cb954e1,0x3d116452,0x3d1d85b3,0x3cb6736b,0x3c98fc26,0x3d1ad441,0x3d999f27,0x3d68afa3,0x3d9cd7d6,0x3d8b2874,0x3c9c9a83,0x3d88b63a,0x3d97170e,0xbd1b1539,0xbe5a5912,0x3db1efde,0x3ef28532,0x3ecb1dbb,0x3f0c577d,0x3ebb7418,0x3e9440fa,0x3e38dd0d,0xbded7bc5,0xbe8e4825, -0xbe876b97,0xbe2d6cab,0xbd68d6e5,0x3d5946c6,0x3dd31ae0,0x3dc5f84b,0x3ded5d0b,0x3def63b8,0x3e381c57,0x3dadc5ae,0x3c708a18,0x3d170a20,0xbbc7fc2a,0x3d29739e,0x3d133a6d,0x3cfa397e,0x3d834bab,0x3d7e1688,0x3dcb5a3d,0x3d8bbc60,0x3d5ac387,0x3d8c1f10,0x3ca90954,0x3cb77378,0xbda09ac5, -0xbc8d52e1,0xbe4b930c,0x3dbf224f,0x3f2601a5,0x3f110f86,0x3f1fce91,0x3ee4352a,0x3ec094a3,0x3df37597,0x3d08b73c,0xbd7d4eb9,0xbccd1c39,0x3d9ea5a6,0x3e147aea,0x3e614de1,0x3e322e2f,0x3e2bfb2e,0x3e29d328,0x3e32b81c,0x3e7468da,0x3dd1cc54,0x3ce9b430,0x3d9d0fb6,0x3cc86ff0,0x3d07205c, -0x3d290368,0x3d521b23,0x3d8ae4e7,0x3da089f7,0x3e046efc,0x3d96490f,0x3d5394a1,0x3d7e5406,0xbced99a5,0x3d65f193,0xbdf5bb1a,0x3e1b2073,0xbe1e7d7c,0x3f108ac1,0x3f0a60a7,0x3ef223ae,0x3f0cf4db,0x3eaab3de,0x3e31c0d5,0xbd9c607f,0xbce58bdd,0x3b407883,0x3daa4432,0x3dc503a5,0x3dc56aeb, -0x3dc61750,0x3dbbe3fc,0x3dd6d635,0x3e4173fb,0x3e2f0752,0x3e3cc85b,0x3d8faf0b,0x3d22c0c8,0x3d11f32b,0x3d40af56,0x3d0e8843,0x3d4a7dec,0x3d72433b,0x3d4088f6,0x3d736f05,0x3df20795,0x3da676ee,0x3d7f1a46,0x3dd2a12b,0x3d8aa4fc,0x3dd4f130,0xbd091361,0x3d9f4d44,0xbd1adf90,0xbcbde8f1, -0x3ecad521,0x3e1bc1bf,0x3e45b0fb,0x3c01fa21,0xbd94f909,0xbe2f2e94,0xbe1f4f64,0xbdf11f06,0x3d6eb608,0x3e020206,0x3e1f5368,0x3e346602,0x3e4d61e4,0x3e32a9e8,0x3e315799,0x3d6aec55,0x3d51c8e7,0x3b9ac291,0xbd88b3ec,0x3b5db953,0x3ca02504,0x3cd2ef99,0x3ca2581d,0x3d59b06a,0x3db7924e, -0x3daad63b,0x3dbe8744,0x3d33e2ba,0x3d2dcd51,0xbc10b677,0x3dc11610,0x3c9154e0,0x3d5b146d,0x3e209de6,0xbe79167f,0x3e176261,0x3cebdb6d,0xbd2f6ea5,0xbcb3e686,0xbdf8ae1e,0xbe353f5c,0xbe4d6336,0xbe569dcc,0xbe54c6cd,0xbe1a097c,0xbdaa6e42,0x3d19a8ba,0x3db9581a,0x3e25be77,0x3e2dd630, -0x3e219de4,0x3cd44785,0xbc8a736a,0xbd994283,0xbd5fd983,0xbc8c2a65,0xbd51e356,0x3c1cf676,0x3d286e87,0x3db606a1,0x3d572e38,0x3d9db8f9,0x3cc24cc2,0x3d921d41,0x3d2a1005,0x3cfae14a,0xbcc5fca1,0xbc7b798e,0xbd05e173,0xbd143c19,0xbdfda39f,0xbe160b5a,0xbdb4595c,0xbe00a437,0xbe239b50, -0xbe21d6d6,0xbe1abada,0xbe155b61,0xbdec384f,0xbdc22827,0xbd329f69,0x3c47d374,0x3d6afc1f,0x3dd50665,0x3dee4bf4,0x3dc8b2f5,0x3d98dc30,0x3c834795,0xbbab9300,0xbd6bc9ab,0xbd95d550,0xbcc61fdd,0xbd23d980,0x3befa875,0x3d106d08,0x3d266947,0x3d78e9b1,0x3d5232e4,0x3c39386f,0x3d13dc1f, -0x3cf34d17,0x3d89ef36,0x3c43836b,0x3ca645bc,0xbc4ad148,0xbd20f41b,0xbd8a4b9e,0xbe071856,0xbe052481,0xbe144a35,0xbe10a7d1,0xbe04c09a,0xbdf24306,0xbde3caa0,0xbd80200d,0xbce115eb,0x3d16e42d,0xbcd2afa0,0xbc9378a2,0xbd114bb3,0xbd39c96f,0xbcfd2802,0xbc910376,0xbcbbe760,0xbc1044f2, -0xbd2383ac,0xbd7ebf5d,0xbcc51aa5,0xbd5ba12e,0xbce8f361,0xbc8ec575,0xbd542282,0xb9fc3bc8,0xbd805d0d,0xbc85c3a2,0xbc8e86c8,0x3b865d03,0xbb9d3e50,0xbcae511c,0xbc42eedb,0xbd0f7d20,0xbd9adf82,0xbd80b959,0xbe20adc1,0xbe173f86,0xbe0e4583,0xbe08709a,0xbe1e4d31,0xbe1f5aa0,0xbe29e5e9, -0xbe38eab0,0xbe445035,0xbe4fcf8c,0xbe35c850,0xbe242bd5,0xbe15d715,0xbe068968,0xbe079e7d,0xbe0d05f1,0xbe10467a,0xbe0aef2e,0xbe0e1a87,0xbd5a4e11,0xbd9c1314,0xbd9a15c9,0xbdce8acd,0xbd988ff9,0xbd865954,0xbdb35a87,0xbdc5b262,0xbdcbf7fd,0xbde7a1a3,0xbdeb7f81,0xbda9c64a,0xbe0db320, -0xbde658b3,0xbd810164,0xbe380c2d,0xbe181d20,0xbe015a13,0xbdee6466,0xbdf72ed0,0xbdecd205,0xbde9d087,0xbddf52bc,0xbdd8b253,0xbdc3fc27,0xbdb370c8,0xbdac56fa,0xbdb2b9a6,0xbdc17933,0xbdc97a5c,0xbdd289ed,0xbdd23cd2,0xbdca0baf,0xbdc187b5,0xbdb76d26,0xbdd155dc,0xbe04787e,0xbe019da6, -0xbc8daa47,0xbe0b7f35,0xbe0837f8,0xbd406d2c,0xbd350263,0xbd218dac,0xbd1464fd,0xbd00a456,0xbd13aec7,0xbd482ed5,0xbe076078,0xbe02c67f,0xbcea668b,0xbdf67d7b,0xbe48af8c,0x3e041f98,0x3e045e3e,0x3da8f229,0x3dc321db,0x3dc5bc62,0x3dc2a66a,0x3db814b6,0x3db1ebfc,0x3db28ee4,0x3da0ceba, -0x3d99e103,0x3d8e3aae,0x3d91948a,0x3d98097f,0x3d9f5462,0x3d9fbfc6,0x3da52a20,0x3da3e27d,0x3da4537d,0x3da26398,0x3d9a283a,0x3de0ce99,0x3dd566c5,0x3cd3024d,0x3de3c7ea,0x3ddf3d62,0x3d0cc1e0,0x3d1c3e42,0x3d1d2951,0x3d2cfd9d,0x3d3fdd25,0x3d452774,0x3d752201,0x3ddf512d,0x3dee3d3b, -0x3d26a081,0x3de050cb,0x3de84931,0x3e0a24ff,0x3df7a865,0x3dfaf193,0x3df78779,0x3df39b61,0x3df3ec7a,0x3df3295d,0x3da4786e,0x3d9c4f85,0x3d96c131,0x3d8fef52,0x3d9b53ec,0x3db4190b,0x3db358a9,0x3dd323e8,0x3dd083ec,0x3dd22778,0x3dc0dfc8,0x3dae3c8e,0x3dd1ae0f,0x3dbde50b,0x3d9b7fb4, -0x3ddf938c,0x3dd5bb03,0x3d912bc2,0x3dcdbe69,0x3dce3ef8,0x3dce6f5c,0x3dd4e9f3,0x3daa6412,0x3db29c79,0x3dc36157,0x3ddd70de,0x3de83acb,0x3df26085,0x3e468d4e,0x3e2b20fe,0x3e24c58d,0x3e35c7be,0x3e2ac983,0x3e291465,0x3e0b9549,0x3e121239,0x3dae905b,0x3d5831ac,0x3d017764,0x3d349fb6, -0x3d6469b9,0x3d9d2b3d,0x3dbf8334,0x3dd04626,0x3dda03e6,0x3dd97058,0x3db3f186,0x3dd036d2,0x3df6cb8b,0x3da179f3,0x3dcf927d,0x3db50a46,0x3d9c772c,0x3db724f9,0x3d971221,0x3dc810e1,0x3df09ef3,0x3dab561c,0x3dc7b514,0x3dc17f93,0x3dcb394a,0x3dde8061,0x3e00db9d,0x3e243afd,0x3e525d6c, -0x3e23d5c7,0x3e1d9d6d,0x3e20a6dc,0x3e212dd0,0x3e2b8bdb,0x3e1b8040,0x3e198ec4,0x3d4d2117,0xbbaebead,0x3b276bfc,0xbaff8aba,0x3c9a235b,0x3d397ef0,0x3d99b12a,0x3dcb9440,0x3dd56d2d,0x3ddd168a,0x3da7b409,0x3da485fb,0x3dbcf6b4,0x3d7333fb,0x3d7cbc34,0x3d7ad02b,0x3d8a8806,0x3d35be46, -0x3d8ffa70,0x3d6ed217,0x3d917da4,0x3d807665,0x3d877b13,0x3db5150c,0x3da069e5,0x3da6dcc0,0x3e17fc92,0x3e1eff93,0x3e7ffbcb,0x3e7b458f,0x3e404dc1,0x3e812426,0x3e744edc,0x3e6080e3,0x3e3f1e8f,0x3e3cb5ee,0x3d85f045,0xbb7f20e2,0xbd676308,0xbcafc8e5,0x3c29762a,0x3d6f3642,0x3dc10b25, -0x3de0b5ce,0x3de5c95f,0x3de0fa3e,0x3daeb9e0,0x3dab9f5b,0x3de85a5b,0x3d40e6d3,0x3d893c26,0x3d4e0983,0x3d551682,0x3d208a06,0x3d3a3077,0x3d50196b,0x3d85d4b0,0x3d4e2144,0x3d767449,0x3d8890a5,0x3d91ca75,0x3dcca2ca,0x3e073104,0x3e3efffb,0x3eb63272,0x3f0ca50d,0x3ecd83e3,0x3ed4beef, -0x3ec831e3,0x3eaa920b,0x3e85c387,0x3e6a0197,0x3deecc33,0xbca868f0,0xbe7a1c60,0xbe385783,0xbe27d718,0xbdaef2b0,0xbd40b179,0x3d6a7a3f,0x3dd5f83c,0x3dd8a678,0x3dcbdae3,0x3d6ff919,0x3d53ccc8,0x3d445886,0x3d8842af,0x3d45d8ae,0x3d2efb08,0x3cf2e75e,0x3d2cd4be,0x3d490a55,0x3d8c3ff9, -0x3d92d98f,0x3de5d61d,0x3e0e5005,0x3e524deb,0x3e86852a,0x3e78d492,0x3ec93817,0x3e9d066e,0x3ecc8597,0x3f16db48,0x3f22a721,0x3ee2b976,0x3e989dd4,0x3e894267,0x3eaaa547,0x3e6af1ae,0x3e2a6fff,0x3d66e45c,0x3e0a0a58,0x3e445fee,0x3e8b43a2,0x3e8d735a,0x3e705e6e,0x3e4afa9e,0x3e2566ca, -0x3de73f5a,0x3e073dbe,0x3d8249ab,0x3d709966,0x3d915873,0x3d82b74c,0x3d8410a0,0x3d44c4d5,0x3d7746fd,0x3d8f6437,0x3d8eb431,0x3d971f43,0x3d9a85df,0x3d993c51,0x3dabb065,0x3ddfb74f,0x3e2c7dcd,0x3e2600ea,0x3e9b8d70,0x3eec1e06,0x3f0945bb,0x3ebdc55c,0x3d95deea,0x3c9780b0,0x3d4dc8ba, -0x3e6267fb,0x3e444db8,0x3e5c1af8,0x3e7dfdb5,0x3e9b4775,0x3ea6eb8b,0x3eaa57e9,0x3eaa2d07,0x3eabfe4a,0x3ea9236d,0x3e8530ae,0x3e506104,0x3e2be3c1,0x3e18ae89,0x3db59a23,0x3d8f4a8d,0x3db4c5d7,0x3d8585a6,0x3ccd5961,0x3d43dbcf,0x3d28e9bf,0x3dd976fa,0x3da4a9ab,0x3dafe22a,0x3d79a74e, -0x3e069dba,0x3e12c461,0x3e685a0a,0x3e1ca092,0x3ecddf54,0x3ec31523,0x3d7c16ce,0xbde93bda,0xbf0e1078,0xbe80f2ec,0xbe431587,0x3d5e8df6,0x3dc99b60,0x3e499a84,0x3e87d35c,0x3eaddeb8,0x3eb0e086,0x3eadfa9d,0x3eb6171b,0x3eb4caeb,0x3ebc3152,0x3ea64327,0x3e884bfb,0x3e4eadd5,0x3e3ee05f, -0x3de37d57,0x3db0b5f0,0x3d9471f5,0x3d940ba3,0x3d028d2d,0x3d49e9e6,0x3d7e5c19,0x3e00177e,0x3d9572e9,0x3db23465,0x3db2306e,0x3deb5fee,0x3df2dda1,0x3e58f306,0x3e2f4ca0,0x3ed6923b,0xbd11b437,0xbe9cf3de,0xbeb9519c,0xbf401678,0xbecf4aa4,0xbe858da4,0xbd23279f,0xbc5d8b77,0x3da69354, -0x3e2751a6,0x3e803b5a,0x3eacf139,0x3eb36717,0x3eb277ce,0x3ea61417,0x3e8f51b3,0x3e8c3f39,0x3e6bc85d,0x3e57643e,0x3dee32be,0x3de720af,0x3d949768,0x3da60e9d,0x3da38680,0x3d95efc3,0x3db027ba,0x3d97de89,0x3d9bad30,0x3dabe888,0x3dc7d169,0x3dafc120,0x3dda9cab,0x3dfb2dd9,0x3e29c5bf, -0x3e179cef,0x3ea4b6a9,0x3e6ab40d,0xbee16f0e,0xbeb5b190,0xbec9f70a,0xbea79e1c,0xbe8c5760,0xbdea6d54,0xbc9b23cc,0x3d8e50f1,0x3e1e2bfc,0x3e49fd2c,0x3e87439f,0x3e901918,0x3e962aa3,0x3e996a74,0x3ea42c39,0x3e90a308,0x3e408399,0x3de79915,0x3d59cda3,0x3b4caef3,0x3d452cab,0x3c843e77, -0x3cc4785e,0x3cd17ed0,0x3d9d94ad,0x3d8f1f5c,0x3ce8ba49,0x3d5e7bbe,0x3d6ab0a8,0x3da2613e,0x3d859f84,0x3e0ab9c5,0x3e32b218,0xbb8a4fa3,0x3e40a0ae,0xbe0f62fb,0xbe425ac5,0xbe5170d9,0xbe9d9c79,0xbe5f0d7f,0xbe29cf24,0xbd812c92,0x3da064e4,0x3e2f0a6e,0x3e65ef69,0x3e8f624a,0x3e934dab, -0x3e8e072b,0x3e891168,0x3e7ba307,0x3e6cf704,0x3e187395,0x3e06f4f4,0x3d2945d0,0xbc487019,0x3d751355,0x3ca4e697,0x3cf895d3,0x3d1d096c,0x3d34688b,0x3d170c37,0x3d110327,0x3c579649,0x3c060e90,0x3cfc7489,0x3d9348ce,0x3d973b7c,0x3d1e2705,0x3d6cd1c6,0x3d99c17b,0xbc830a9c,0xbd20a7ab, -0xbe289b07,0xbe33d46e,0xbe61e696,0xbe0d91e8,0xbdaba576,0xbcdd1ac0,0x3d80d0c3,0x3dfed036,0x3e394e71,0x3e40f346,0x3e4cd84d,0x3e545b43,0x3e4303b4,0x3e26cc77,0x3e07911e,0x3dc36d41,0x3d9359f8,0x3d7ba188,0x3cb82574,0x3b871b60,0x3cfaf773,0x3c6550f7,0x3c452046,0x3cba192a,0x3cc19fdc, -0x3c4596be,0x3bb67a47,0x3bb3d8cd,0x3c104257,0x3d256fc7,0x3b35b9e2,0xbbf97f3a,0x3c70b077,0xbd186b00,0xbdb854b8,0xbde45316,0xbdf30071,0xbe0c9cf9,0xbe3daaf5,0xbe047976,0xbdbaa3e6,0xbd704e03,0xbd079589,0xbac83f89,0x3d21e248,0x3d3bcd2e,0x3d7fd6fa,0x3da6c0d3,0x3d46094c,0x3d060754, -0x3bfa14ea,0x3c1f378d,0x3befcbe3,0xbc1c5c45,0x3c12786a,0xbc83fdda,0x3bbad1fd,0xbbd5dec8,0xbb145d54,0x3c0f96f5,0xbc8a6315,0x3c873c22,0x3bf1ab1a,0x3b99f93c,0xbb824e0d,0xbc8210a3,0xbcc3181e,0xbc4db171,0xbd48d813,0xbd803cc9,0xbe07f20b,0xbdaeee56,0xbdda3bf7,0xbdd7cfb7,0xbdc462c0, -0xbe0930aa,0xbe23cd7c,0xbe3ba0f1,0xbe3b49ac,0xbe356fc5,0xbe3a65f8,0xbe376e1c,0xbe3a5a25,0xbe395b37,0xbe228218,0xbe082981,0xbe00f767,0xbded13c3,0xbdd2ba17,0xbdb43682,0xbddc1cd4,0xbda71e88,0xbd9d6836,0xbd68f502,0xbd6305b9,0xbd38cd52,0xbd3f0af9,0xbd2edc2c,0xbd8c227d,0xbd822a9d, -0xbd6f0a00,0xbda2a6bf,0xbd830139,0xbdc8b426,0xbdf7c21e,0xbd9a3fb5,0xbd861511,0xbd85d1d7,0xbd965204,0xbd951037,0xbd988c8c,0xbd96d592,0xbd88465b,0xbd8b0487,0xbd8582bd,0xbd8ac4ff,0xbd887dee,0xbd8279a1,0xbd7305ec,0xbd7120d5,0xbd70967f,0xbd80f978,0xbd7c0962,0xbd6915e8,0xbd6b5d71, -0xbd4e9036,0xbd3e82c4,0xbd8c0af0,0xbdfaf49d,0xbd2f2044,0xbd7fae08,0xbdeeef37,0xbdfe30a2,0xbdf74446,0xbdf09c8b,0xbdfa9f6d,0xbdf91055,0xbdf2d2c3,0xbd86c468,0xbd40e41c,0xbe069f9b,0xbdb8cb7d,0xbdd0ada5,0x3d42bd58,0xbc44e121,0x3aeeffcc,0x3ccc5700,0x3cbc0d24,0x3cac7de3,0x3c2c5112, -0x3c136649,0x3c27db80,0x3c8d0868,0x3cc40b47,0x3cf2efbd,0x3d042829,0x3d09142f,0x3d0ade59,0x3d07ec76,0x3d075497,0x3cfb3a97,0x3ce698a8,0x3ce6c4e1,0x3cc03244,0x3c9f4679,0x3d2868a9,0x3ddfa5f5,0x3c4bc1ca,0x3d15308e,0x3dd89d86,0x3dd84a47,0x3dd86020,0x3dc8c3b2,0x3dddf7ee,0x3dd15e8c, -0x3dbba724,0x3d267b60,0x3c06b44a,0x3de7a24c,0x3d738901,0x3e279853,0x3d4495d7,0x3cfbb8e8,0x3cd4238a,0x3d160035,0x3b68a64f,0xbbc7d5bd,0x3b88308d,0x3c87ee67,0x3cd8c962,0x3cf36583,0x3d17667d,0x3d3e4a60,0x3d493aa1,0x3d45da0b,0x3d4f9ff4,0x3d330ee5,0x3d1386c6,0x3d0d899d,0x3cf7500a, -0x3d806c46,0x3d5c68f1,0x3d93ad66,0x3d319328,0x3cce9794,0x3d8c3b2e,0x3d48cfe5,0x3d8061b4,0x3d4de42c,0x3d60ad94,0x3c883db1,0x3d855f5f,0x3d6d916c,0x3d6187a2,0x3d8dad7c,0x3d65f552,0x3d6421cb,0xbd22465d,0x3c7894b5,0xbbc05881,0x3ac6b80c,0xbd6f91d0,0xbd8d9615,0xbd3ea5f6,0xbc81cf36, -0x3c4ce12a,0x3cf3f121,0x3d51e919,0x3d765b2e,0x3d7be61f,0x3d9220bb,0x3d8480d2,0x3d697dd0,0x3d2b8982,0x3d0d550e,0x3d095940,0x3d50286b,0x3d618a45,0x3d1e46f8,0x3d4ce5b3,0x3d5dc2c9,0x3d122c6b,0x3d6b5688,0x3cc74295,0x3d347c2d,0x3d1bd817,0x3d493c76,0x3d108cf9,0x3d2dd33c,0x3d4b4f72, -0x3dc8d902,0x3cef5966,0x3e1e74f1,0x3da7fe87,0xbd396313,0xbbc2c136,0x3ba74ef7,0xbd82865b,0xbdbab940,0xbd422363,0xbcb564c5,0x3b1d7950,0x3ae59f37,0x3ce80506,0x3d5f3aeb,0x3d7ed9ce,0x3da0c602,0x3d9ca2c0,0x3d81d8b7,0x3d31bf89,0x3d277ac8,0x3cee83d6,0x3d5d1728,0x3d61fc3c,0x3d80e2e8, -0x3d52d86b,0x3d57a41c,0x3d20fdb6,0x3d46815d,0x3d79ce5c,0x3d7dc887,0x3d02740e,0x3d130fb7,0x3d1a258a,0x3d83788c,0x3da0b399,0x3d5a1c83,0x3d068e51,0xbd15f595,0xbcee0d4b,0xbdb88415,0xbd8eee67,0xbd8db6e6,0xbe248eab,0xbe2dce47,0xbde5fc64,0xbd82217e,0xbca4fdc1,0x3c64a78b,0x3d36f5cf, -0x3d805bcd,0x3d964f94,0x3dbb7e93,0x3dc26d82,0x3d92c6aa,0x3d443e03,0x3d278ecf,0x3d21e204,0x3d52f9c6,0x3d859fc6,0x3d40b261,0x3d63a6d5,0x3d525c79,0x3d3b8c7d,0x3d5a7144,0x3d49a86f,0x3d58463c,0x3d1974ad,0x3c6f5001,0x3d4b5978,0x3d75bcd1,0x3d3a4d7b,0x3da2ee4a,0x3dea555b,0x3e93ab2f, -0x3d2423e7,0xbe4dcb99,0xbe24aaea,0xbe702aee,0xbecf978e,0xbedc6c32,0xbec1c866,0xbe1a8293,0x3d019316,0x3dad07ac,0x3de2658d,0x3e289dd6,0x3e62b823,0x3e74f3fd,0x3e4e6c8c,0x3e4c9497,0x3e0de955,0x3dd1dbb4,0x3da9f4b2,0x3d69a3ab,0x3d98ce15,0x3d64227a,0x3d736bd0,0x3d46e6df,0x3cdb8683, -0x3d4547cd,0x3d6737dc,0x3d97dbd1,0x3d756f7d,0x3d9b1849,0x3de7b5d5,0x3cf63687,0x3d98f39f,0x3e5ec9b7,0xbca67b30,0x3e0a2323,0xbddebe79,0xbedae635,0xbeec6e27,0xbf126e19,0xbf0359de,0xbecca311,0xbe81f859,0xbd99d120,0x3d254f4c,0x3e0583c5,0x3e2d7bb7,0x3e2e3e14,0x3e10991a,0x3de9fc32, -0x3dd1e9ce,0x3dc396f0,0x3d710ca2,0x3d7ab7f4,0x3d89aa0d,0x3dc02255,0x3da547e5,0x3d8019ad,0x3d63c78a,0x3d39d85b,0x3d4150a0,0x3d87fd7c,0x3d8a59bb,0x3d64e857,0x3d7acc0d,0x3d3efca7,0x3d2cb623,0x3df55652,0x3d980d06,0x3d003301,0x3e3fd045,0x3e863e8e,0xbe75d33b,0xbf72d54b,0xbf546c75, -0xbf7e198e,0xbf3a057f,0xbf1f4813,0xbeff1bd4,0xbe68fca2,0xbd5b4fb9,0x3b4d6236,0x3c20e6df,0xbbf33b68,0x3b54fa2e,0x3c26609b,0x3cec1878,0x3c7c5599,0x3cef3da5,0x3c8783fe,0x3d9f3dfc,0x3df91d57,0x3dd4353e,0x3dcfbda7,0x3d768db3,0x3d5dc01b,0x3d23e5af,0x3d0fa338,0x3d1a282c,0x3dd3f60f, -0x3d850723,0x3d8ad117,0x3d660034,0x3d2f021a,0x3cc29d90,0x3dcb03b5,0x3dbb3249,0xbba1c426,0xbee047bb,0xbf8cfe91,0xbf72d753,0xbf55d6dd,0xbf3a844a,0xbf2f0c2c,0xbf0dc9e6,0xbede0e1d,0xbeb30c02,0xbea4952a,0xbea689e6,0xbe8e0c75,0xbe65255f,0xbdf0cb0b,0xbd7a19bf,0xbd1a4d1a,0x3ac10a6b, -0xbbbc24dd,0x3da46dc2,0x3dc1ca47,0x3da2f556,0x3d8b4ae6,0x3d9c5e71,0x3d7c13e4,0x3ce7a2f9,0x3d25bf7a,0x3d459017,0x3dad61bd,0x3d043271,0x3d9c9414,0x3cc6fa95,0x3e1a0b77,0xbca83b01,0x3e03bc09,0xbe8591cd,0xbe56bfcb,0xbf7deabf,0xbf515c14,0xbf485a1a,0xbf23138c,0xbf236158,0xbf1b8075, -0xbef0bbc1,0xbeeefb32,0xbeef107d,0xbee839df,0xbee3bf61,0xbeb8d0e8,0xbe82e08f,0xbe0e8b22,0xbd4a1bac,0xbd31518b,0x3c72d812,0x3d20eb58,0x3d839409,0x3d802836,0x3d1a0911,0x3d724076,0x3d4b1349,0x3d67e2e2,0x3d39c9b6,0x3db7694f,0x3d800984,0xbd05e1d4,0x3d2e8327,0x3d44e3f9,0xbc90937d, -0x3acb729c,0xbe028e4a,0x3d66c797,0xbe4c64c5,0xbf0a2b76,0xbee9626d,0xbf19fb71,0xbf0c11b3,0xbf02d8b5,0xbebc8001,0xbe6d0ac7,0xbe25ef1b,0xbe022a2f,0xbe1cfcfe,0xbea3cd36,0xbebae790,0xbea4f8a7,0xbe8b7331,0xbe6f353b,0xbe22fc43,0xbd95742c,0x3ce81421,0x3d390ae2,0x3ce6869b,0x3da6e44a, -0x3d8e4af1,0x3d867d57,0x3d56f0d2,0x3d499bf0,0x3cba5526,0x3d36a7cb,0x3d12318e,0x3b9f5031,0x3d01b0a6,0xbc1a22a0,0xbcca2a2d,0xbe109812,0x3cb00f0f,0xbe82225c,0xbe59249e,0xbdfd3eef,0xbee6aad3,0xbeb8f32f,0xbeb1fdc5,0xbea778d8,0xbe71d4d5,0xbe19db77,0xbdb71eab,0xbdc6242e,0xbd8b5542, -0xbda2b09b,0xbdb95f68,0xbe0e950b,0xbddf721f,0xbe00c6a1,0xbdccefa7,0xbd8bb7e0,0x3c1d732c,0x3cb3bbfb,0x3d978134,0x3d52e816,0xbbcfaadd,0x3cd7fd96,0xba7418e9,0xb80c1a87,0x3cd3aeca,0x3b86e1c5,0x3c8cffec,0x3b4ee542,0x3c637596,0x39e3fa2b,0xbb08e4ee,0xbaedffcf,0xbd8920b5,0xbdc8ff7a, -0xbe4f5d3b,0xbe2e9461,0xbe2aa3f9,0xbe4642dd,0xbe530640,0xbe3732d4,0xbe2f4902,0xbe27900e,0xbe15450b,0xbe274ed5,0xbe1dd9d9,0xbe36f9cc,0xbe436a3a,0xbe5123b3,0xbe469f03,0xbe3e8689,0xbe3030f7,0xbe0d5384,0xbdce48e6,0xbda0806f,0xbd4fc06b,0x3c48b6b7,0x3bfc1715,0xbcd9715b,0x3aff0306, -0x3b22fc7d,0x3bd58413,0x3c0677dc,0x3aeedfea,0x3b22e9ba,0xbc6e90ce,0xbc62b916,0xbc2c5011,0xbd4abe78,0xbd5c06d3,0xbdf1d342,0xbdd4c6c7,0xbdfe7c82,0xbe006106,0xbde19860,0xbdf9bc4c,0xbe0fc8da,0xbe1d69ce,0xbe33ee71,0xbe4817c4,0xbe5e6514,0xbe6d391a,0xbe9160e2,0xbe4d74be,0xbe46dde4, -0xbe17bc18,0xbe120cc7,0xbe16cabb,0xbe11a8de,0xbe024339,0xbe1c4f60,0xbd9e019c,0xbd5db4a2,0xbd1ea5ab,0xbd31cedc,0xbca734d1,0xbc5c2cc6,0xbcef2d8f,0xbbbae80a,0xbd41919d,0xbce402af,0xbd0d2a8f,0xbcfce9a9,0xbd0e1d49,0xbda697ad,0xbdb25c59,0xbdfe9043,0xbde4d63e,0xbd9e6f7a,0xbd09b88d, -0xbd75f435,0xbd8294b4,0xbd7a681c,0xbd803e42,0xbd620eb7,0xbd6bf4b9,0xbd2e9ec1,0xbd0f5598,0xbca0104f,0xbd39d915,0xbd6f5ce3,0xbd96f05e,0xbd8fa8eb,0xbd7246b9,0xbd88a694,0xbd4f1ca5,0xbd0e2585,0xbd86e76b,0xbd9a5e4b,0xbd965f97,0xbd8fb271,0xbda7cd11,0xbd920a94,0xbd5baedf,0xbd79fbba, -0xbd686631,0xbd45d736,0xbd520e54,0xbd022102,0xbd09563b,0xbd20d3cd,0xbce74bda,0xbd32630b,0xbd6a89eb,0xbdb5cf6d,0xbd1c42a4,0xbd33c1bf,0xbd354bae,0xbd4763b6,0xbd65df29,0xbd825a0b,0xbd966bb2,0xbda1e813,0xbdafbdd5,0xbdb6505b,0xbdaed0ed,0xbd9e0c14,0xbd99b9e6,0xbd8a0e60,0xbd869c2c, -0xbd877432,0xbd87fb22,0xbd77de5f,0xbd65e261,0xbdabab6e,0xbda776d9,0xbd628d41,0xbd8d49fd,0xbd8e94e4,0xbd41740a,0xbd37d429,0xbd41f598,0xbd4d9444,0xbd579df2,0xbd7352da,0xbd7df456,0xbda18e98,0xbd949716,0xbd9b4717,0xbdb91ef7,0xbd84a992,0x3e15519f,0x3dbd62bc,0x3db45354,0x3d9f1373, -0x3da03ba0,0x3d9f1141,0x3db75f03,0x3dcf23da,0x3de39df8,0x3dee8369,0x3df8a19c,0x3df4acfd,0x3de6c117,0x3ddfb01b,0x3ddd55ca,0x3dd4835a,0x3dd4b429,0x3dccf1f7,0x3dca64d7,0x3dbf3ae0,0x3dcca9fa,0x3dadfe4a,0x3d5eb856,0xbc3d9396,0x3dc646f5,0x3d6dde1a,0xbc389552,0xbc272a08,0xbbe9f853, -0x3ad3bbd6,0xbc483ce0,0xbc2da2f1,0x3b111094,0x3d478f07,0x3dc74412,0x3baf8759,0x3d20db5f,0x3cb85e01,0x3dc772ee,0x3db19373,0x3db4cbab,0x3db62936,0x3ded5665,0x3e127585,0x3e2fd974,0x3e4251df,0x3e545d7c,0x3e425906,0x3e34a2bf,0x3e2c0c6b,0x3e284075,0x3e10db4c,0x3e10eaaf,0x3e05d92d, -0x3df352c0,0x3dea65fc,0x3df7a844,0x3d81c123,0x3db00242,0x3d81a725,0x3d9ad128,0x3dcadb01,0x3d6f8f2a,0x3db4180f,0x3d8d8b70,0x3da2d02d,0x3d916cef,0x3dd29a3e,0x3d68b92f,0x3d8948b1,0x3d97b45b,0x3d8928cd,0x3d6f4079,0x3cfb2589,0x3d3e9618,0x3c82394d,0x3cc85984,0x3cc4f289,0x3dbe7592, -0x3e197a95,0x3e513855,0x3e83c6d9,0x3e8cd27e,0x3e8713d8,0x3e6e0f68,0x3e557ba4,0x3e413c66,0x3e312659,0x3e1d3baf,0x3e162cd7,0x3df74325,0x3def5e3e,0x3dc56177,0x3d888fa5,0x3da79fac,0x3dc240ba,0x3d937cdc,0x3d8a51d5,0x3d9eabad,0x3d8d47eb,0x3df08c5b,0x3d9bdabe,0x3da56d20,0x3d4b0d81, -0x3d89ff53,0x3d865c0c,0x3d83628c,0x3d725e08,0x3d96b5de,0x3baaf4d8,0x3cab146b,0xba9bea1c,0x3c4ea4b1,0x3c84bb4b,0x3dcbd12a,0x3e38452e,0x3e813783,0x3eb1d66b,0x3ec10e3f,0x3eaa5cae,0x3e9b2c1b,0x3e83c466,0x3e7dda39,0x3e4b2d3c,0x3e2f69e9,0x3e1dcc80,0x3df716ac,0x3de6f935,0x3dc8fa3e, -0x3daa1c7d,0x3dc032a8,0x3d951f63,0x3d9f20f4,0x3d7530a7,0x3d852a26,0x3d7bb50c,0x3d766007,0x3d8aacec,0x3d61b747,0x3d1d673b,0x3d0aec45,0x3d286644,0x3d4e19e3,0x3d292fc3,0x3c3073f5,0xbd14bc42,0xbd4db297,0xbda2fcf4,0xbdb51f13,0xbdbb4b5b,0x3d8539f2,0x3e47c20a,0x3e94ff52,0x3ecc2cd5, -0x3edc7288,0x3ecb6f27,0x3ea7ab06,0x3e8e0898,0x3e75141a,0x3e5a3d84,0x3e3ded6e,0x3e29f71b,0x3dffdd0f,0x3de2edf9,0x3db7264a,0x3d6dcd8d,0x3da98cfb,0x3d971a0a,0x3d86bf17,0x3d77abc0,0x3d31c05f,0x3d7797d5,0x3d66c5af,0x3d7c369b,0x3cfb3e14,0x3cefadab,0x3c658909,0x3d16a889,0x3d00019a, -0x3cf9972f,0x3b8318ec,0xbdd8ca58,0xbe93d7bd,0xbea8cdb7,0xbea689f3,0xbeafecd6,0xbe5904c4,0xbdbe7774,0x3d92a24f,0x3e6e3fa0,0x3ecc4498,0x3f1854fd,0x3f12b124,0x3f106498,0x3ee61bdd,0x3ed16600,0x3e9474f3,0x3e5f8141,0x3e1cedc5,0x3e0020c0,0x3e17bde6,0x3e048441,0x3def90a4,0x3dae870f, -0x3dacfb12,0x3d82aba4,0x3d3c3c38,0x3d807cae,0x3d7c67c3,0x3d8644da,0x3d507bf5,0x3d05d373,0x3d1c9f17,0xbcae2b40,0xbd40ccd1,0xbd2737d3,0xbdbc339e,0xbe5ab843,0xbeafb249,0xbefeec78,0xbefc1426,0xbeb11c84,0xbdd7529a,0xbd4ab197,0xbde31aea,0x3c9afe1e,0x3dfe8c38,0x3e883775,0x3e7137c2, -0x3e63530b,0x3e69307e,0x3e63c104,0x3e5ee1f9,0x3e56e311,0x3e212a7e,0x3e0b830d,0x3ddbacbd,0x3daea1e6,0x3dd0f7e1,0x3d949223,0x3d8f5cd9,0x3d6c9060,0x3d3c3a92,0x3d812e29,0x3d85073d,0x3d81bf43,0x3d845d4b,0x3d507aa2,0x3d39037d,0x3d2be089,0x3cae5f3b,0xbd39fdeb,0xbdc87202,0xbeda6f22, -0xbede26e0,0xbe35c8cd,0xbd0de89b,0x3ea9f572,0x3e1dbcfb,0xbcb8f8d3,0xbea0b00a,0xbe8b61ec,0xbe6bbd88,0xbd1fbea6,0xbc31e37c,0x3e04cc74,0x3e42f18b,0x3e1ff6a1,0x3e1c52d1,0x3e0996eb,0x3e134ef7,0x3e22b5db,0x3ddb4ec7,0x3daade6a,0x3dbc076a,0x3d9fc5dd,0x3da54eae,0x3d888bdb,0x3d65e2bc, -0x3d3cf8aa,0x3d677633,0x3dd02ab8,0x3d278bce,0x3cd06a6e,0x3d02bdfd,0xbd304a0e,0xbd9546e2,0xbe598bcb,0xbe0c3620,0xbf05db16,0xbe97b2e5,0x3eed26b6,0x3f09e1e0,0x3f55b82b,0x3eab2879,0x3e0c3c5a,0xbe2114f7,0xbe62b17a,0xbe559e7c,0xbcc09f28,0x3c29fa5b,0x3ddf8a74,0x3e0f7de1,0x3dfe6f8d, -0x3dbd8c61,0x3daac0fa,0x3d9cae8d,0x3de6bbd5,0x3d9fef53,0x3d87430a,0x3d875491,0x3d9dc135,0x3d768aba,0x3d8b2a09,0x3d35965c,0x3d7e962f,0x3d5e00f3,0x3d201768,0x3d4363dd,0x3c530159,0x3c9c4748,0xbdac4558,0xbd677ea0,0xbe83adef,0xbdcf7169,0xbf05af8c,0x3f0a6cfb,0x3f3488cc,0x3f1eeaed, -0x3f24e06e,0x3ec78756,0x3e906c9a,0x3dddaf4e,0x3e0d2321,0x3e0debdd,0x3d58a1e2,0x3dabc3a1,0x3d75f664,0x3d7d77e8,0x3d80fdc1,0x3d9da9d9,0x3db4ab89,0x3d8c02d3,0x3d7cf20a,0x3d90bcfc,0x3d836562,0x3d826a18,0x3d38d239,0x3d6200bd,0x3d4c026e,0x3d2be4a5,0x3d9788f6,0x3da2b906,0xbcaa2353, -0x3d164082,0x3c4e1a1a,0xbba5bfff,0xbd1b08c3,0x3c77d31f,0xbe5291bb,0xbdbbe580,0xbd791149,0xbd625b09,0x3f2f0c8f,0x3edff989,0x3efaf338,0x3e97ec54,0x3e555db7,0x3e1d1f52,0x3d9d5004,0x3de4b616,0x3e563f02,0x3e58cee5,0x3e0bdbdb,0x3dee7956,0x3d54ea43,0xbb6fd1c5,0xbd610aa4,0x3c2e4fa2, -0x3d8864f5,0x3ddd52a9,0x3d88b738,0x3d89d923,0x3d36827f,0x3d4a864a,0x3d610bbc,0x3d54c127,0x3d0a816c,0x3d00894e,0x3cac56ae,0x3b9ca37a,0x3c5167ce,0x3cb8949c,0x3d62b388,0xbe33d7d1,0xbd89f945,0x3da381d2,0xbeb41258,0x3ecfb480,0x3e9be463,0x3e62b591,0x3e792503,0x3e0ac696,0x3de38821, -0x3db7234c,0x3c99c640,0xbd174853,0xbd33bf93,0xbd1532d5,0x3bd3f3a1,0x3c54d385,0xbbce8a29,0xbc936bc1,0xbd4423c5,0x3bc29297,0x3d274a80,0x3cd68fed,0x3d17e38d,0x3d8b1c07,0x3d810742,0x3d42027c,0x3d073003,0x3ca7f3ae,0x3d400b8a,0x3cacea34,0x3d1e7e36,0x3cd90b41,0x3d09773e,0xbbc223f2, -0xbd500b9c,0x3c256c15,0xbd0329a7,0x3cf464ec,0xbd227331,0xbc40b376,0x3e4ccf6a,0x3e126eed,0x3e1e2467,0x3dda2714,0x3d9372ba,0x3d2e71c2,0xbc64df7a,0xbd42ac0f,0xbd786b4b,0xbd733c58,0xbd96d135,0xbd97d1b3,0xbd91d9dd,0xbdb2afb2,0xbda5aebf,0xbd6c3812,0xbc9e0f49,0xbb465c9c,0xbd718d9e, -0xbd4d60af,0x3a2aea25,0xbcf43e7c,0xbc33c999,0x3c7ff29b,0xbced771f,0xbc07f08b,0x3c0504a6,0x3c794861,0xb9d660fb,0xbc71955a,0x3bd57e60,0xbc18e163,0xbd4b46b9,0xbd1abb36,0xbd81d7d9,0x3df42bb8,0x3df67e0d,0x3df8d339,0x3e306971,0x3e0e9e59,0x3df88e08,0x3dc57dc1,0x3db5d355,0x3d923521, -0x3d2ebefe,0xbc173ed3,0xbd7d69b7,0xbdecdd59,0xbdb741aa,0xbdb2d3c3,0xbd5ed0b8,0xbd55112c,0xbc96415e,0xbd634dea,0xbd6971cc,0xbd05ea01,0xbce168ac,0xbc92e409,0xbba5afc5,0x3c2b94dd,0x3c128796,0x3dd696a5,0xbccabaa9,0x3d8b357d,0xbb830cef,0x3ceb3b0f,0x3d316135,0xbce5d39d,0x3d6482c7, -0x3d9c00c5,0xbd8625a5,0x3e1d78b8,0x3e122b07,0x3e154216,0x3e037c82,0x3e1daa24,0x3e2cba69,0x3e4472eb,0x3e2a6365,0x3e12dc73,0x3e07ee7c,0x3e0325c4,0x3e06c010,0x3ddbf80b,0x3de5d54b,0x3dd8a4c1,0x3dd1a051,0x3dc5939e,0x3dd93438,0x3dcb289d,0xbd090029,0x3cd70ee6,0x3cd101e3,0x3d7689db, -0x3d1cd80b,0x3d6d8044,0x3d2b7f62,0x3d27b39c,0x3cc7dac4,0x3d374375,0x3de07474,0xbb7c1c79,0x3d859b64,0x3d303d18,0xbd8fd206,0x3e0c76de,0x3d932162,0x3e141767,0x3ded0289,0x3dfdc2ed,0x3e01fd70,0x3e057804,0x3dffdb4b,0x3e0320e0,0x3dfca581,0x3dfd0745,0x3defef90,0x3dd95144,0x3dc02daf, -0x3db3238e,0x3db9d51a,0x3dc03e26,0x3dc597ff,0x3dc913ad,0x3dc01da0,0x3dff6a3c,0x3d57e043,0xbcda5479,0xbdfc49c9,0x3d805601,0xbc0ddd5f,0xbde1d467,0xbdfbebca,0xbdd2df7b,0xbdbff45d,0xbdf0bc68,0xbde729d0,0xbda770a6,0x3c8d04d5,0x3dae6253,0xbdbf7178,0xbcda85ee,0x3e2f27aa,0xbd4c2c4b, -0xbcb40400,0xbdc7d0cc,0xbd722129,0xbd74defa,0xbd661a89,0xbd53e2fe,0xbd50723a,0xbd488112,0xbd50c420,0xbd58e2f0,0xbd4f9faf,0xbd529092,0xbd52ce47,0xbd5487d7,0xbd4e0170,0xbd4ffdb7,0xbd4a164e,0xbd4f622b,0xbd3301cc,0xbd80311c,0x3d00dcdd,0x3daeaf95,0x3e27147b,0x3b2ccc32,0x3da5e45f, -0x3e27443e,0x3e2639e8,0x3e1e1697,0x3e0f519f,0x3e2afb1e,0x3e24e644,0x3e15cdb1,0x3dc3dd9d,0xbc631419,0x3e0a9701,0x3dd0266c,0x3e1c7108,0xbdafc438,0xbdd7a8ac,0xbdd7e355,0xbdcec809,0xbdab9e23,0xbd8e3a9d,0xbd7814c8,0xbd5cd467,0xbd56bce8,0xbd3cea7f,0xbd42c6f4,0xbd60d41c,0xbd7f0b06, -0xbd6d9152,0xbd7729ae,0xbd72ee77,0xbd5f4a14,0xbd5cb1da,0xbd919e0f,0x3db7b0e1,0x3d324d57,0x3d897c85,0x3d7bb19a,0xbb7d099e,0x3d87e2e3,0x3d2e9fa0,0x3db3a0da,0x3d47762f,0x3d8b472c,0xbd0e1e9e,0x3d55898d,0x3d54e678,0x3cf2e132,0x3d7967bc,0x3cf4cf5b,0x3d1bb2b9,0xbe0c01eb,0xbe030cc6, -0xbdf40e81,0xbdd9f7fb,0xbda8862f,0xbd85a1c8,0xbd60c5f1,0xbd869e07,0xbd786ab6,0xbd33eb08,0xbd4e34a4,0xbd570027,0xbd6f4acd,0xbd7cef87,0xbd6fc39c,0xbd80eaa3,0xbd40290f,0xbd8d536a,0xbabb5039,0x3dd7ccd8,0x3d5cf99e,0x3cef505c,0x3d860368,0x3d36d59c,0x3d0a6674,0x3d3451aa,0xbd1376c8, -0x3dafb23c,0x3c2138b2,0x3d893ee3,0x3ccc83cb,0xbb613ad8,0x3b97e821,0x3cee1712,0xbd991576,0x3c283b66,0xbdd00460,0xbe3bac49,0xbe29e826,0xbe2fddb0,0xbdf4e643,0xbdac8a1e,0xbd840791,0xbd5b6ea8,0xbd039354,0xbc0f7877,0xbc7b093d,0xbcf5c000,0xbd5fb0cb,0xbd6da21f,0xbd72e62f,0xbd7be848, -0xbd5edeb9,0xbd5c4f9d,0xbc207762,0x3d27823d,0xbb4c0519,0x3d6aded5,0xbac02805,0x3d4e15af,0x3c085be9,0x3d9d86e1,0x3d6246c8,0x3d70fc2e,0x3ca267f5,0x3d5894ee,0x3ccdf910,0x3d534b36,0x3b0ee474,0xbb543a9d,0x3a56dbd8,0xbd258db9,0xbde60286,0xbe25a2ad,0xbe034311,0xbdda348a,0xbdb5d3a6, -0xbd8326ff,0xbd5f6e40,0xbd9361dc,0xbd788d90,0xbce778e1,0xbcbc4f89,0xbcf318e8,0xbd22ac77,0xbd4ca630,0xbd6e8031,0xbd5b2cd4,0xbd4c5cbe,0xbd22d3bb,0x3b8652c2,0x3e02fc21,0x3d3bcee1,0x3d926786,0x3d354001,0x3d080f27,0x3d25a276,0x3cf68fa3,0x3d384d6b,0x3d3ad455,0x3d422cee,0x3d0664cd, -0x3d036dbc,0xbcac4323,0xbd395297,0xbcdb57df,0xbd439fdc,0xbe6ed054,0xbe5c3224,0xbe11c6fa,0xbe433aa5,0xbdf53d2f,0x3b823bae,0x3c2f7831,0xbc5dc443,0xbd9d6b07,0xbe07a72e,0xbdc56b96,0xbd98f1d6,0xbd84a4f3,0xbd83a0f2,0xbe0db728,0xbe015f65,0xbdc7b606,0xbd7035eb,0xbd32b792,0xbd00f1ff, -0x3d8b19e0,0x3c011ed3,0x3d91888a,0x3cd7ea99,0x3d854176,0x3d0f8093,0x3d79e275,0x3d494b00,0x3d2a0ffa,0x3d037aef,0x3c9b401b,0x3c17a44c,0x3d02b2f7,0x3cfb406b,0xbd1f144e,0xbd79d9c7,0xbe24b41c,0xbd929967,0x3e605e47,0x3e92ae9c,0x3e9f2b3b,0x3d400c38,0xbdaed375,0xbe354d7e,0xbe852cec, -0xbe7c1576,0xbe897e99,0xbe1b3921,0xbdc3de06,0xbd607721,0xbccbdedf,0xbcb9c31e,0xbd4766f7,0x3b8c0e5f,0xbca465c2,0x3d25c5f2,0x3df6e115,0x3d8f1032,0x3d516ab6,0x3d4f7cde,0x3d320d14,0x3cef9828,0x3d39fb4d,0x3d61751b,0x3d8b7ce8,0x3d4058da,0x3c972146,0x3cb405aa,0xbd14028d,0xbd968652, -0xbdacd1db,0xbe417caa,0xbe56ce9d,0x3e1852cf,0x3f14192d,0x3eb13c69,0x3e1f93f9,0xbd71a770,0xbe11e1b4,0xbe01e89c,0xbe29f5d2,0xbe1b3b27,0xbe47d983,0xbe54fde5,0xbe5fa33f,0xbe8576a8,0xbe6001ff,0xbe060a09,0xbd3d4972,0xbca931c3,0xbcfe4f21,0x3c28fb84,0x3d62a700,0x3d2c7ef4,0x3dad95c4, -0x3d25ee93,0x3d8b5a68,0x3d273f56,0x3d87a351,0x3d5b3b8d,0x3d587dd3,0x3cc759d9,0x3c5bba16,0xbbd89147,0xbc2ace30,0xbc0a37a8,0xbd5274b5,0xbda3bc04,0x3e40071b,0x3eb357e8,0x3e9da81c,0x3d114f7a,0xbed1e28a,0xbe40255a,0xbe0d5e88,0x3d5bc16c,0x3c073cad,0x3d32c3d4,0x3c898098,0xbb4a477a, -0xbd774c99,0xbe1c6489,0xbe03663b,0xbdcb871b,0xbcd19996,0xbc8f23d7,0xbd874867,0x3c73d48d,0x3d82a5f1,0x3d1050f5,0x3ced572d,0x3d70cb6d,0x3cd2c714,0x3d3b3dc7,0x3d69505d,0x3d8e96e8,0x3d54a6e4,0x3d17fa47,0x3cb7572f,0x3c840d17,0xbcb8f4a3,0x3c72c3ca,0xbc31a7a6,0x3def6e9f,0x3ed2e489, -0x3e9cc9b3,0xbdeef9ad,0xbe27d9d7,0xbf0d0c0d,0xbe3a0ff0,0x3a72ef04,0x3e51c881,0x3e1748ac,0x3e37e4bd,0x3e2049ab,0x3e77edc6,0x3e5e113f,0x3e080d89,0x3d6b8560,0xba96e583,0xbd1011d6,0xbd79e1a6,0xbdc9fd27,0xbc938b73,0x3c332acf,0xbb641271,0x3d24db8a,0x3c8ff68a,0x3c045d73,0x3bf99971, -0x3d2dc4f6,0x3d81a157,0x3d5f0850,0x3d926f16,0x3d884069,0x3d07ba6b,0x3d23f22d,0x3d9939ee,0x3d501488,0x3e0a58f8,0x3ef31b1a,0x3eade983,0xbe582f59,0xbdf25193,0xbe52bdbb,0xbdf70d2c,0xbe079388,0xbd12a13c,0x3c6b3907,0x3de38cbb,0x3e48a7c7,0x3e8a3c2f,0x3e539edb,0x3e5292a2,0x3e394215, -0x3e021766,0x3cf6b09d,0xbca1ea03,0xbd98ace6,0xbd8471ef,0x3da74424,0x3d154427,0xbb85e84b,0x3d34325b,0x3cdc01d7,0x3d68f982,0x3d5107a6,0x3d3665fc,0x3d50fc36,0x3cbdd357,0x3cf9e0e3,0x3dba2cfc,0x3da75bd3,0x3db39d5a,0x3e723b4e,0x3d8884bd,0x3eabd6ff,0x3d24d2b1,0x3b8d8dd5,0x3cce7ba8, -0xbd09d17e,0xbd20289b,0xbd6a459e,0xbd2bd816,0x3d8fbc60,0x3e02ee62,0x3e13e0d6,0x3e1ccefd,0x3e0740b6,0x3d9219ec,0x3cd957de,0xb9c2be92,0xbc0e0542,0xbcc977da,0xbd27d903,0x3be4e9f7,0x3cfc1864,0xbc268dd9,0x3cbf8b10,0x3cf124b5,0x3d511eb9,0x3d1dc862,0x3cb9c69a,0x3cb73d13,0x3cedcb07, -0x3cc85ab9,0x3cfd390e,0x3d26fd1b,0x3db855e9,0x3da879a0,0x3dd73db7,0x3e10eb96,0x3e275bcd,0x3e0b0025,0x3c8c7906,0x3d4e0a19,0x3d11767e,0x3cdf8b4e,0x3ccd3909,0x3cbcf75d,0x3db60447,0x3dfd7e4e,0x3e267ed9,0x3e20e4d9,0x3e2029c1,0x3e0b84c1,0x3de45526,0x3de1fb04,0x3dc6afcf,0x3db3da9a, -0x3d993c64,0x3d48dc04,0x3d849b4f,0x3d8ebeb4,0x3db5b49a,0x3d677ab5,0x3d1c169c,0x3d37d1b1,0x3d41d1e8,0x3d320456,0x3d262469,0x3d0cbc08,0x3d1c5251,0x3d059fc2,0x3d63b17c,0x3d76b48c,0x3e0268b3,0x3dc88384,0x3e088dc1,0x3d7dbad9,0x3d4fe26d,0x3d5df5e2,0x3cf4ba9a,0x3d5a42ab,0x3d97a17c, -0x3db361cc,0x3db241d6,0x3db6f76f,0x3df49592,0x3de28831,0x3e04fd2f,0x3dffc28c,0x3e09bf2c,0x3e115af0,0x3e08c312,0x3df4eec7,0x3e1b923e,0x3dc4b404,0x3d7c83dd,0x3d732a1f,0x3dab0831,0x3d78b036,0x3d6aed4b,0x3db7001a,0x3d570abf,0x3d52d288,0x3dc3fe48,0x3d1e66c2,0x3d88f799,0x3d30ffa6, -0x3d904f5c,0x3dd98290,0x3dc41cff,0x3d9e0a4a,0x3e1cd717,0x3d1490ad,0x3d542a16,0x3d4487d6,0x3d51cfc6,0x3d25a5a9,0x3ca5fed4,0x3c63a354,0x3d04f3fc,0x3d4d1b91,0x3d5bdddb,0x3d8aaa96,0x3d91beb2,0x3db082ca,0x3d9cd150,0x3d972cfe,0x3dbfd349,0x3db7ff4d,0x3d9fd2c8,0x3ddf5845,0x3df10f65, -0x3de109f7,0x3ddc170d,0x3e009f67,0x3de0919f,0x3db588cc,0x3de045f8,0x3dd7f273,0x3de2ebe6,0x3de12d32,0x3d5ac4dc,0x3dfa3195,0x3dc6da63,0x3daee16d,0x3e090c48,0x3d98cb99,0x3dd980f9,0x3cbd745b,0x3d2165be,0x3d113cbd,0x3d0b0f7e,0x3d1d6f75,0x3d3d204b,0x3d46a7f8,0x3d4a57c3,0x3d4da1ba, -0x3d5f4344,0x3d742b48,0x3d846171,0x3d927662,0x3d8dc5eb,0x3d8c9d94,0x3d88a9c7,0x3d8580f6,0x3d78c768,0x3d702410,0x3dd6d677,0x3e121bdf,0x3e008e27,0x3dbf977b,0x3e09e9de,0x3e14e2ba,0x3e1b4285,0x3e0fe3d6,0x3e0c7008,0x3e1bb244,0x3e1d3feb,0x3e0ffa05,0x3e01efb4,0x3da72a64,0x3e1289d8, -0x3e1d6e61,0x3da38e3e,0xbd3508a4,0xbd3c5f5b,0x3cf78a8f,0xbbea7a82,0xbc138d1c,0xbbf9b800,0xbcae1685,0xbd044b47,0xbd3ccd46,0xbd4069fe,0xbd458ef6,0xbd2dc19a,0xbd0fda18,0xbcfad848,0xbcdfce10,0xbcc42ca9,0xbcb78a18,0xbcabefd4,0xbc989984,0xbc98165b,0xbc266a7c,0xbd9333d8,0xbdadd6db, -0xbd11d566,0xbd846c37,0xbdb0b142,0xbd371670,0xbd3a8f86,0xbd2d0104,0xbd2afa69,0xbd5eb2a7,0xbd6d7008,0xbd7e117e,0xbdc89ecb,0xbd7dbe7a,0xbd732e17,0xbdd53382,0xbe29081f,0xbd4d41db,0x3ca5b218,0x3c397ac2,0x3c07348a,0xbce6aee2,0xbd7f4d00,0xbdce33eb,0xbdcfb6a7,0xbdd0f406,0xbda59fc6, -0xbd75fff9,0xbd43415f,0xbd2fd124,0xbcef4511,0xbcfce286,0xbce864c3,0xbcc56951,0xbc898b26,0xbc0ad36e,0xbd8d27f7,0xbd46e55b,0xbd2cefbc,0xbd9145e2,0xbd433aed,0xbd071c96,0xbd315b9f,0xbd53040c,0xbd2f8f57,0xbd4649c1,0xbac2f03e,0xbcf5e88c,0xbd6ab265,0xbd5818cf,0xbd8c3efc,0xbd265cbd, -0xbde732a9,0x3d7b8fd8,0x3d96ec47,0x3d5ccdd1,0x3d524c94,0xbd0ed12b,0xbdc70b3b,0xbe332920,0xbe43cdf9,0xbe3d06f5,0xbe163f82,0xbdde096c,0xbd9b69a0,0xbd82370e,0xbd403a2b,0xbd1444e0,0xbd01cee0,0xbcba925b,0xba2ac682,0xbcd2a5f4,0xbd8e74c1,0xbcf7f00d,0xbd2cf4fe,0xbd270b44,0xbca1c3f0, -0xbd124c06,0xbbb85f6b,0xb7919a83,0xbd27d4e5,0x3b409372,0xbce36080,0xbc6b1944,0xbcd392c8,0xbd3f2a85,0xbdaa0d9b,0xbc7315c7,0xbe0e1d4c,0xbd5f7381,0x3e334389,0x3dbd87f3,0x3dc96ecd,0xbcf8a7b1,0xbe0243cf,0xbe6e44bd,0xbe875ad2,0xbe700a8f,0xbe36ed5b,0xbdf9f9b0,0xbd9e42ea,0xbd86f547, -0xbd1e532c,0xbd097eec,0xbcf998e3,0xbc6218d9,0x3b880d90,0xbb0562ab,0xbc60a0ec,0x3ba8478a,0xbc2b72b0,0x3c01d2ba,0xbb92a10a,0x3c61fd28,0x3bd92b86,0x3cfc1ced,0x3cc9f139,0x3d204063,0x3c966193,0x3d1af0f5,0xbd305e6f,0xbc92e993,0xbc7c0fad,0x3cae2587,0x3ca110d2,0x3cb976dd,0x3e786f00, -0x3e13574c,0x3e14f159,0xbd143477,0xbe3a9488,0xbe9ed73d,0xbeb37009,0xbea88930,0xbe6c51ce,0xbe236250,0xbdccc165,0xbdb3728a,0xbd7d229b,0xbd319b60,0xbd110ca4,0xbc0de161,0x3c12276d,0x3c6065ec,0xbc3cd36f,0x3ceba39d,0x3cbea2aa,0x3cc878a2,0x3d11c4e5,0x3cd2983b,0x3d417228,0x3d4b9260, -0x3d66e5b3,0x3d1f7874,0x3d2bc81a,0x3d18d6a4,0x3b17c200,0x3b022166,0x3a2d27c8,0xbd103095,0xbd5a8241,0x3dfc60db,0x3e94e227,0x3e6723ea,0x3e5148e6,0x3ced3832,0xbd8ac747,0xbe6b103a,0xbe88ec11,0xbea54fd4,0xbebc33d3,0xbea761fa,0xbe973d88,0xbe4fe689,0xbe1e7276,0xbde7e28b,0xbdd5b3c6, -0xbd5c5ff6,0xbcb7411c,0xbc8c1436,0xbd06d9f2,0xbc6e3564,0xbac53ea2,0x3c39fbfc,0x3cc79d7e,0x3cfa8fa1,0x3d345f8e,0x3d2cf609,0x3d086849,0x3d0f32a1,0x3d27125c,0x3cd3c530,0x3d9236ef,0x3d1646a3,0xbcfd37b1,0xbc51880b,0xbc29c81f,0x3debd030,0x3e103c7e,0x3c9d4ab5,0xbdb45eaf,0xbe561fbe, -0xbe6370f2,0xbe0d2390,0xbe5a5220,0xbe929aef,0xbee54206,0xbecdca27,0xbec24adb,0xbec0ace1,0xbe99d2e1,0xbe56bad8,0xbdf2da72,0xbd9a648b,0xbd04f1d2,0xbd5cc822,0x3acdce65,0x3b8937e9,0x3c9bd235,0x3cf134c2,0x3d119e16,0x3d131907,0x3d2a99c7,0x3d397b8d,0x3d61775d,0x3c5486c4,0x3ac034f9, -0xbce75f39,0xbd525c4a,0xbd2b84c9,0xbcb6b5f6,0xbbb2c281,0x3e76aec5,0x3d5cb109,0xbedf8777,0xbee14d76,0xbf1c3133,0xbe6788b3,0xbbdb6e39,0x3e86d430,0x3e3059f7,0x3db2e073,0xbdec4e5d,0xbdb3d8dc,0xbe217c3d,0xbe44378e,0xbe0f4495,0xbe11e9c1,0xbe0a2ed4,0xbe133a0c,0xbe19f01c,0xbdbba862, -0xbd7f7656,0xbce8259a,0xbbb3a25b,0xba8e9dae,0x3d073dd5,0x3caff3f6,0x3d81fe02,0x3d848757,0x3cbdbc3a,0x3d0dcf08,0x3cce9f9e,0xbb211dfa,0x3ce775a3,0x3bcd1849,0x3dba1ad9,0xbc9692aa,0x3de47b8f,0xbe269a9e,0xbf3dce4d,0xbf16070f,0xbef0c5e6,0xbe095e30,0x3d89a243,0x3e829920,0x3e9c6301, -0x3e87a086,0x3e1182fc,0x3dd17e37,0x3d064f89,0x3c9f29e8,0xbbe81cbf,0xbcde9912,0xbdb7d330,0xbdd23061,0xbdf10c36,0xbdca35b6,0xbdc87825,0xbd85e827,0xbd6d212a,0xbbedbdc7,0xbc78417a,0x3aa45a0d,0x3d5b5ae3,0x3d86c54e,0x3c31d9cf,0x3d26364e,0x3d70d34d,0xbc2cddb2,0x3d9989cc,0x3c3456bd, -0x3de96de9,0xbda5fdde,0xbbac42e0,0xbf3ac37b,0xbeed24d9,0xbea4f61a,0xbcb17b30,0xbd88c90e,0xbd32f509,0x3c868e46,0x3dbad460,0x3df0657e,0x3e73a699,0x3dfea3a0,0x3daab069,0x3d51c6b7,0x3d65b89c,0x3d0636cd,0x3c0745b4,0xbc26f34f,0xbca4bae8,0xbe095ad6,0xbdd8374c,0xbd9f1862,0xbd819cdd, -0xbd7f7a99,0xbce8ad54,0xbcf0ee9b,0x3d02b41a,0x3d28657e,0x3ca55c1a,0x3d4fc792,0x3d1cc7dd,0xbc16eb78,0x3bef6e75,0xbda98b10,0x3d3898ab,0xbdef6b60,0xbebbf544,0xbe2e6034,0xbe1fd179,0xbdd2ece2,0xbe4191c0,0xbd8e273c,0x3d2887ea,0x3db19f4d,0x3e3a1119,0x3e4257a6,0x3da94cf8,0x3daef713, -0x3d71d172,0x3db75683,0x3d9a9adf,0x3d6385dd,0x3d48c56e,0xbd6abbc1,0xbdb78145,0xbde3d61a,0xbdb25774,0xbd8594fd,0xbca42d00,0xbc91e01c,0xba969579,0x3cd049f1,0x3d10e8b9,0x3d36c70c,0x3d569cda,0x3d4b2853,0x3d261489,0xbb8f4a5c,0xbd42aaf4,0x3d635118,0xbe05b69f,0xbda8a31a,0xbbf9e29e, -0xbe8ade4e,0xbdfcee6c,0xbdc00e15,0xbdb0fc33,0xbce4c8e9,0xbc8602ca,0xbba142af,0xbd139e6f,0xbc68d408,0x3c3821e6,0xbad035f0,0x3be0dfb8,0x3d32d845,0x3d9681a2,0x3db0b6d7,0x3dd678ae,0x3d16d9a6,0x3bcdfadb,0xbca3cd19,0xbd7cf693,0x399038a2,0xbd25f02e,0x3cc8d74e,0x3d1eaba7,0x3d073e33, -0x3d4e3454,0x3d37e553,0x3d1417df,0x3c984e5f,0x3b3f7f52,0x3be8b687,0x3c86d670,0xba28fc5e,0xbc200214,0xbdb0ceaa,0xbd64990b,0xbd1830ca,0xbd578eab,0xbd443a98,0xbd19304b,0xbcf86d8f,0xbc563d50,0x3b89f16e,0xbbcc25be,0xbb5056a6,0xbc12065a,0x3c16a6b6,0x3cfab2a0,0x3d55dff6,0x3d78eb6c, -0x3d9a22ec,0x3db05ff5,0x3da524a7,0x3dab9059,0x3d9aa7f3,0x3d9d8d29,0x3d976450,0x3d830a9d,0x3d97c8c6,0x3daa370e,0x3d5198fe,0x3d718487,0x3d3289be,0x3d1e3660,0x3cb51d78,0x3cb7c8a7,0x3c4ad828,0x3c28e623,0x3c58d40e,0xbc9faa19,0xb90ac992,0x3c3ac4c2,0xbd4300cc,0xbd206ea9,0xbd00ef6d, -0xbce15822,0xbcf0f0e6,0xbd04ef2e,0xbcea5f91,0xbce94c78,0xbce3eed1,0xbd00c6fc,0x3c2e0b2d,0x3d2bd8f4,0x3da0e3c5,0x3da6772d,0x3dbb888c,0x3dc17def,0x3dd29985,0x3deee9a2,0x3dfe0213,0x3de5d769,0x3dcc8501,0x3dc7bd2a,0x3da0eafd,0x3d55af1f,0x3cede1d2,0x3d225697,0xbc760703,0x3b50c591, -0xba840801,0x3c655526,0x3c837114,0xbcb28528,0xbc16ca02,0xbd3008a7,0xbd22d15f,0x3d30f6dd,0xbccd6d5b,0xbc9159a4,0xbca80537,0xbca4a92e,0xbc718c1a,0xbc196764,0xbc2281ee,0x3aee3935,0x3c62a826,0x3cca5420,0x3cc1156a,0x3ca17987,0x3cf4ac07,0x3ccaf0fb,0x3cbfc347,0x3cdbeba7,0x3cb2d553, -0x3c1ac924,0x3c8e15d2,0x3d6af0b0,0x3cf6c857,0x3c2d4d3e,0xbc07e16f,0x3ba842f5,0xbc500a3c,0xbbf9d6f8,0xbc3dfa2b,0x3bd0258a,0xbbc857a2,0xbc6e6fb0,0x3c4b7331,0xbc502487,0x3c8c26d3,0x3d769d0c,0xbd1f931d,0xbd120cf7,0xbcb18800,0xbc3c7272,0xbc52c7e5,0xbc3e62c9,0xbc557371,0xbc6aeb7e, -0xbc78c703,0xbc567bc9,0xbc4d89bc,0xbc278f10,0xbb9c93bc,0x3b063763,0x3bbe9cf7,0x3bb25fe6,0x3bcec013,0x3bf798fc,0x3c1772e1,0x3c63f6c2,0x3bdf7557,0xba9945b5,0x3c96c7bd,0x3db70770,0xbc4bb8e5,0xbb849b94,0x3d801835,0x3d8c03cd,0x3d77d0fa,0x3d68c1a3,0x3d7ac270,0x3d69e3b3,0x3d3fd382, -0xbc996e51,0xbd081277,0x3d55c4d0,0xbb9d5a19,0xbc6c20ea,0x3d3daf98,0x3da501a7,0x3d1b2c53,0x3d2574d4,0x3d2de600,0x3d207ab3,0x3d026b9d,0x3cf56b52,0x3cea04a8,0x3ce20d0f,0x3cdbe60e,0x3cbc4bbc,0x3cbdd2f9,0x3cc0a099,0x3cc30c70,0x3cb6b251,0x3cbad151,0x3cbb786a,0x3cc51ef7,0x3cc4e54e, -0x3cd19fb1,0x3d465abf,0x3ceb3188,0xbd6807c6,0x3d6534f3,0x3d126d6d,0xbd4b3d96,0xbd3f0c8f,0xbd39084b,0xbd16cb72,0xbd1e5770,0xbd0d1cf8,0xbcbed7af,0x3d108cf7,0x3d8b9fc7,0xbd2919da,0x3cfb72a8,0x3c8161aa,0x3ddcff70,0x3dc811a4,0x3dd73827,0x3dbf4174,0x3d5df29e,0x3d019006,0x3c9ef7ad, -0x3be4fdb7,0x3c0954de,0x3c356515,0x3c7b011f,0x3ca384ad,0x3cdb410b,0x3cc3de0e,0x3cbd96ba,0x3cbc766b,0x3ccd0c3c,0x3cac6909,0x3c852a2b,0x3c334c8a,0x3c81d17b,0xbbb30011,0x3d069c82,0x3d3cd587,0x3a44fba1,0x3d0f9462,0x3ce9f5bf,0x3d0507e9,0x3d07cd12,0x3d204b55,0x3cac35ba,0x3cf0bdf5, -0x3d40f648,0x3d254241,0x3d2ef2d9,0x3df4c940,0x3e002313,0x3dec4d13,0x3e067bec,0x3de56d26,0x3d79d470,0x3ce93f6d,0x3c99a27e,0x3c0d23d6,0xbb43beb0,0xbc8e1a56,0xbc5055e3,0xbc036de8,0xbab130bd,0xbbb57c6d,0x38c02b50,0xbad7be46,0x3bf12280,0xbb4112d3,0x3c4940fd,0x3d177154,0x3c0dcaa3, -0x3d0adaaf,0x3cc0304f,0x3c95c557,0x3d18f64e,0x3cbe7381,0x3d70bde8,0x3d70f2e4,0x3d2f22ef,0x3d324fcd,0x3d1fc49b,0x3d7b9890,0x3d829077,0x3d906bd4,0x3df61276,0x3e24c908,0x3e2f2d70,0x3e49fec4,0x3e5a44e6,0x3e4757d8,0x3db12f28,0x3c818df9,0xbc9ef3f9,0xbd42eef7,0xbd7b3aa3,0xbd55e81d, -0xbd32f9ed,0xbd03d0b0,0xbbfef512,0xbc295210,0xbc291ed7,0xbc018f45,0xbb5b0e12,0xbc94bcdb,0xbc2fc72c,0x3c0c0163,0xbc0609f1,0xbbe5c3b9,0x3c0d3fd7,0x3c975b8a,0x3c3d12bd,0x3d1a875a,0x3cf3db15,0x3d0abc28,0x3d0f7dbb,0x3d2edc78,0x3d510a21,0x3d55e3e8,0x3d7f0bad,0x3decf194,0x3dbb8bea, -0x3e20b4b5,0x3e38fee7,0x3e0b0e43,0x3e453dd4,0x3e1dba1b,0x3daf7dd6,0x3ce78f1e,0x3c25a005,0xbcd6f332,0xbd28f663,0xbd9bb6a4,0xbd99b375,0xbd804539,0xbd72dddf,0xbd5956ba,0xbd3e6a74,0xbd3445a6,0xbcd3b69d,0xbd34c462,0xbd0e9e32,0x3d66a014,0xbc1b04a8,0x3cc0f0f6,0x3c6b889f,0x3cc0c7ae, -0x3c3b4fbe,0x3cfb9d75,0x3d3bbf46,0x3d559bfa,0x3d0afc19,0x3d13e659,0x3d08682b,0x3d922801,0x3db7ff71,0x3ddb80e7,0x3e24a783,0x3e2a5788,0x3ddbc09d,0xbe0497dc,0xbbeeb290,0xbd41eafe,0xbb9ba40e,0x3d80040b,0x3e23f3a4,0x3d61cc6b,0xbcedeaa1,0xbe0b3c47,0xbe107312,0xbe2c6c0a,0xbdf9ea09, -0xbd7767fa,0xbca85cb3,0xbd6ca961,0xbd1571f9,0xbd296098,0xbd276f38,0xbc164658,0xbd19b6a1,0x3c5f7b5d,0xbb1e076e,0x3cc33074,0x3cf6fd76,0x3d2039c4,0x3d1513b6,0x3d11826a,0x3d6d7f2e,0x3d9707f6,0x3d9b06c9,0x3cdc1114,0x3d1e5d8e,0x3d75dbe4,0x3d5723db,0x3ca1101b,0xbde2c659,0xbec6abc2, -0xbeaaccb2,0xbe6f90ca,0x3d7f490c,0x3e4085ac,0x3ea072e6,0x3ea0c281,0x3e8787b5,0x3e72071a,0x3daa71e5,0x3cca4ec5,0xbc4a05ab,0xbd1dd0a7,0xbd76a4d9,0xbda0b4c6,0xbda06456,0xbdc8f32c,0xbd2bc400,0xbc93bfd0,0xbc4a3cbc,0x3c573be2,0x3ca9c9cb,0x3d0c5140,0x3d2a2cbd,0x3d5bf8d6,0x3d6d63f0, -0x3d2eb89a,0x3cc62aab,0x3bebe242,0xbb98cb97,0x3d1f290b,0x3d1f21f9,0x3cae7c34,0x3d343031,0xbdd08302,0xbe9e8202,0xbe8c2659,0xbd01d9b8,0x3ea9b139,0x3ea653ae,0x3eb0c6ea,0x3ea0f741,0x3ea8b8f4,0x3e9b4e6f,0x3ed323c7,0x3ece8cd0,0x3edeecf6,0x3ee3cd72,0x3ecde93c,0x3e8e5a3c,0x3e3b78d2, -0x3d9d8755,0x3cf9e9fe,0xbd370186,0xbdada1c1,0xbd2c2165,0xbd7281e2,0xbc917bec,0xbc0ba0b6,0xbbb747ab,0x3d60ee8f,0x3d53977d,0x3c98ce39,0x3d30fb5e,0x3d223b6d,0xbb46c8d0,0xbaeffb56,0xbc989cf7,0xbd6a06c9,0xbcf865d8,0xbea41fb6,0xbe8ed5e0,0x3ea578da,0x3efd0f14,0x3f4d1c44,0x3ee8abcd, -0x3ec45bee,0x3e5268c2,0x3ea56620,0x3ebce958,0x3ef117d3,0x3f04cec3,0x3f0b43ac,0x3f1c5f0e,0x3ef8864a,0x3ecbe002,0x3e9160ca,0x3e35741c,0x3e0e053b,0x3b0033f4,0xbd61a1bc,0xbd976602,0xbd55adff,0xbd11d391,0xbc925522,0xbc162452,0x3d2e452f,0x3d6bd0a5,0xbbc971a6,0x3d3b1e88,0x3d28d5bb, -0x3b21a919,0xbc7d0aae,0xbcc99cd9,0xbdba8e92,0xbdc46295,0xbeb65e7b,0x3ea400a6,0x3f14dc3c,0x3f0cb6b1,0x3f241f69,0x3ebdb8ae,0x3e87bce1,0x3e1268f5,0x3e85a3a0,0x3ea850e1,0x3ec5bcc9,0x3eabdc1f,0x3eab8da4,0x3eb2d4d7,0x3e9b43d3,0x3e80a23e,0x3e64724d,0x3e33d88d,0x3e0fa75a,0x3d60d1dc, -0xba028806,0x3cd56ca6,0xbcc5ac67,0x3b858861,0x3cc43303,0x3ca8eb9e,0x3d40f8fc,0x3d21efca,0xbc34be9a,0x3d02f711,0x3c83dddf,0xbbbe9443,0xbc96041b,0x3c6385ee,0xbdbd8477,0xbd55dc0b,0x3da37a6f,0x3d16192b,0x3ee790d9,0x3ec6fe1d,0x3ed20e76,0x3e3a13d9,0x3dac23dc,0x3c93fd7c,0x3bbc0ce2, -0xbd06c01b,0x3cb204d0,0x3da53ab4,0x3e1fd602,0x3df948c0,0x3e1c2fb8,0x3e267409,0x3e341ad8,0x3e15d1d9,0x3e0622ff,0x3de315df,0xbd34c002,0xbc9fb551,0x3cd6db1c,0xba781cd4,0x3ca6e306,0x3cb8be1a,0x3d36a2b5,0x3d1bf7a0,0x3d31fc01,0x3d7af625,0x3d63d24c,0x3cd4e03e,0x3d4e426a,0xbd844bdc, -0xbcc50ab4,0x3cb2d13c,0xbe083d10,0x3e958c67,0x3e5565f5,0x3e298ee8,0x3e014870,0x3da40cc8,0x3d816101,0x3d3fbb98,0xbca0420c,0xbd5648e7,0xbd05f03b,0xbd09dc57,0x3c295a7a,0x3d351e63,0x3da9a2e7,0x3db314ba,0x3da2fc49,0x3d91db1a,0x3dacff2d,0x3d2f88da,0x3d6a8eb2,0x3dade5cb,0x3dca8fb0, -0x3d6fede0,0x3d34cfba,0x3d58d3f7,0x3d2ae2f5,0x3d679355,0x3d460e0c,0x3d2f477a,0x3d1c3133,0x3c7322d3,0xbc1ec6d5,0x3c3d0f68,0x3cd96777,0x3d69926c,0x3c6b6a4f,0xba9744db,0x3d91f93f,0x3d490745,0x3cb6f7c5,0x3d1bd1c7,0x3cd89685,0x3c02bc5c,0xbcdee5e2,0xbd7971e1,0xbd829fc6,0xbd45b53f, -0xbd0612e3,0xbc97baba,0x3acb237e,0x3c1b74b2,0x3c0af24b,0x3ca8d4f8,0x3c977d67,0x3d6eb0f9,0x3d61bcb0,0x3d1166af,0x3cf6a38d,0x3d545dd5,0x3d192f36,0x3ce514e7,0x3d27347b,0x3ce0bad8,0x3c96c819,0x3cd70e56,0x3c82fecf,0x3c8d41ee,0x3c36bc2b,0x3c5b66ca,0x3c45c298,0x3c0effd7,0xbc7e0d66, -0x3cdfb519,0x3c63cba9,0x3ca7a13d,0x3d26820f,0x3cf781ae,0x3cd1ab2d,0x3cc39189,0x3d456cce,0x3d832909,0x3d8abb98,0x3cfd1fe6,0x3c05d688,0xbbe071ca,0xbc4f5102,0xbc76a42c,0xbc34f56d,0x3c125220,0xbcd1452b,0x3ce83539,0x3d8f57eb,0x3d3d570b,0x3d045ea7,0x3d07322c,0x3d2d77c3,0x3cb6b8f6, -0x3c872332,0x3d083627,0x3cc66708,0x3cd426dc,0x3c84f2a5,0x3c28be63,0x3cfccf86,0x3b2ed8b7,0x3d0ca3f1,0x3caf8d35,0xbcba2dcc,0x3cd92d80,0x3cf450d0,0x3ce697a0,0x3c91d515,0x3cc8c259,0x3cf66b59,0x3cf9aada,0x3bb4bd38,0xbc4866dc,0xbc9b5d6c,0xbc4133e7,0xba752c94,0xbb216bde,0x3be4c827, -0x3c295620,0x3a40044b,0x3b0c9680,0x3b8919aa,0x3ba9b2d7,0x3c976443,0x3ca8e202,0x3d081582,0x3cb85ec8,0x3cb9d1cd,0x3d0ec15e,0x3d079663,0x3d1e5dff,0x3c7735bc,0x3cac06d6,0x3c9dc7e5,0xbaa642f2,0x3c87359f,0xba1ddcfa,0xbcf9f50a,0x3d1970a4,0x3d19c812,0x3ce68872,0x3ca1a7a0,0x3cbbfc57, -0x3cd0159d,0x3ccf5f23,0x3cb4efa9,0x3ccb06d4,0x3cf29a5c,0x3d07fcac,0x3cfcdadc,0x3cc3751c,0x3c6c4263,0x3c04e9ff,0x3bf4e41b,0x3c0076bf,0x3c3102cb,0x3c4f699d,0x3c62b76f,0x3bfd784f,0x3d0f5fd3,0x3ca90fa4,0xbc8bdd82,0x3d2c7d7d,0x3ce249c1,0xbcfb08f2,0xbd1852e7,0xbd012bfe,0xbce19031, -0xbcf735ab,0xbcd030cf,0xbc9ca918,0x3cb123f0,0x3d1ea592,0xbcc69107,0x3c0f74f1,0x3d1de969,0xbde001ff,0xbde5023e,0xbe0ab446,0xbdba3203,0xbdbcd48e,0xbdc16ece,0xbdbd1652,0xbdb963b9,0xbda9d954,0xbda06253,0xbd9a7f97,0xbd9676a8,0xbd969dbd,0xbd972b92,0xbd9985a0,0xbd9ab34d,0xbda15288, -0xbda0b71a,0xbda7862f,0xbd9ebb16,0xbdb39214,0xbd5f11a0,0xbc2324b6,0x3db024d4,0xbd8ecb24,0xbc475cc4,0x3db25e81,0x3db0705e,0x3da89768,0x3d8e44cf,0x3db48e31,0x3dac3c6d,0x3d86fbee,0x3bb065b0,0xbd9f1f34,0x3dae8438,0x3cc67d55,0x3e282c33,0xbda7a6ea,0xbe159853,0xbe1cf107,0xbe1e1b7c, -0xbe1c6881,0xbe0e43e4,0xbde4eaed,0xbdd4efb7,0xbddd1484,0xbdd429c8,0xbddaa303,0xbddd29ca,0xbddd9ec2,0xbdd0ef91,0xbdd41628,0xbdc9a7bb,0xbdce63a3,0xbdcb2df3,0xbdd36ec0,0xbc4692a6,0xbd167627,0xbbf9df7f,0xbce8becf,0xbd890dba,0x39b7a9ed,0xbcfb6c96,0x39bb8fc8,0xbcc7c339,0xbc248aac, -0xbd95d482,0xbc12a550,0xbba96cc9,0xbcd5f6ff,0x3bc8fa76,0xbcb1ae1b,0x3c0ad66a,0xbe6c9765,0xbe4050e1,0xbe561446,0xbe52f4b4,0xbe4c6cea,0xbe2f1446,0xbdea4f4a,0xbddcc9a5,0xbdc8b5d6,0xbdd0158e,0xbdcd12fb,0xbdd17897,0xbdbd051b,0xbdc4ec87,0xbdcb309f,0xbdd1cabc,0xbdd7c140,0xbde1ba71, -0xbdaa60a6,0xbd01f9d7,0xbd122366,0xbd641bd2,0xbc9d50c3,0xbc750934,0xbcc736f8,0xbba4d1f4,0xbd90b56c,0xbbd61907,0xbcf3b7cd,0x3bbbe502,0xbce0d0ac,0xbd079c55,0xbc8de8d6,0x3d13d6f8,0xbdc8318f,0x3df7fee7,0xbd1ba6ad,0xbea5337d,0xbe846b7a,0xbe959109,0xbe849815,0xbe5b5d99,0xbdf26860, -0xbe0489e9,0xbe158297,0xbe0f8f63,0xbe1bdaff,0xbe135867,0xbe0ed573,0xbdfbaffb,0xbde6905a,0xbdd09e0f,0xbde5b6bd,0xbdd8a14f,0xbdb3fde4,0xbd6da357,0xbd514168,0xbcb5f5c4,0xbd1978c6,0xbbde3413,0xbc8298f4,0x3c821814,0x3cb724c0,0x3c820bc8,0xba470d2d,0x3cbe1621,0xbc859b70,0x3d582b2a, -0x3cb281fc,0xbba20b9c,0xbcf50b96,0xbdc55d89,0xbe3710a4,0xbebf0892,0xbea0076d,0xbe9fefe8,0xbe985902,0xbe794b4f,0xbe0753b8,0xbdfb7726,0xbdf406f2,0xbe0e9db4,0xbe01b4b5,0xbdec1624,0xbda27fd6,0xbdb6da57,0xbdc65a12,0xbdca321d,0xbdedd8e0,0xbdccd5ce,0xbdaed45b,0xbd3d2acb,0xbd28aa24, -0xbcf3aed0,0xbbb29533,0x3b42186a,0x3c91c5a6,0x3caddb12,0x3d17a359,0x3cf221eb,0x3d1b8994,0x3c8befe6,0x3cfb58b8,0x3c8fd7db,0xbc226e90,0x3baba1e2,0x3b9280d8,0xbe3dd4bc,0xbecfd669,0xbed43d14,0xbee13d45,0xbec0c052,0xbe5cc25d,0xbe16a8b6,0xbd8712cd,0xbde5c160,0xbde6aa98,0xbddd1e56, -0xbe30d777,0xbe6da35c,0xbe788218,0xbe83b260,0xbe45958d,0xbe207aa5,0xbe1aed76,0xbe058746,0xbe0908ab,0xbd896f14,0xbd032c4b,0xbc696f35,0xbc577505,0x3c02a211,0x3ca55a9a,0x3d1fa2a2,0x3d202666,0x3ce58d99,0x3cb1af09,0xbbc2206f,0xbce7d16a,0xbdd38cf9,0xbdcb0fff,0xbd7e1a1b,0xbe4278c7, -0xbdf20145,0xbe6228fb,0xbd9fd5f1,0x3d02a0fe,0x3df889f4,0xbc2f9eb6,0xbd9993b6,0xbde82122,0x3cba640c,0x3e29fb4a,0x3ebe3d6f,0x3ebf682b,0x3ec54d4e,0x3eb09c67,0x3e7285c2,0x3df36b6d,0xba963302,0xbd034ff4,0xbd6544b0,0xbd5c32f0,0xbd9c8a8a,0xbd812e48,0xbd1378ab,0xbc1e2498,0x3c0066b8, -0x3cc2e1b2,0x3d1dbc30,0x3d31d404,0x3cf88a58,0x3cbcb79e,0x3b81553a,0x3c46f9f3,0x3c9527d6,0xbd181a12,0xbda0a130,0xbdf977ca,0xbe91c5d6,0xbce73e84,0x3ec0bf2c,0x3e5ffb56,0x3e3cffb8,0xbe15740c,0xbe404484,0xbe461086,0xbc46ce4d,0x3e289603,0x3e85f2ae,0x3e7d8162,0x3e4714e3,0x3e47b8c2, -0x3e3c8337,0x3e120a9f,0x3df671e2,0x3d453c0e,0x3d1fd0df,0x3b61eb04,0xbcedf526,0xbd3b1fbe,0xbd6e0eb9,0xbd34ce5b,0xbd1a0201,0xbca47ecd,0x3ce3ba7b,0x3d1c943b,0xbb2ff137,0x3cd11645,0x3c94d923,0xbcf5eded,0xbd5bcdb1,0xbd1e779f,0xbdd1174d,0xbd81f214,0x3d504316,0x3e3dfa5e,0x3e530ef3, -0xbd704ebd,0xbeb498e8,0xbe983c3c,0xbe94830f,0xbe59fdd7,0xbe38f8f6,0xbe054d60,0xbe5cb6da,0xbe164c4d,0xbe119cee,0xbe01164b,0xbd6a9a83,0x3b5ff209,0x3d91093c,0x3d3d353c,0x3cb48d70,0x3d201d24,0x3ca33df9,0x3b69b91d,0xbc9d7523,0xbd052f49,0xbc19fa6f,0xbc9504fd,0x3cadca26,0x3d2a30ef, -0xbc803889,0x3ced56e4,0x3c814a7f,0xbbe959b0,0xbcf55574,0xbc8ea9cb,0xbd6007b7,0x3d13e0dc,0x3e84fbaa,0x3e1b20ea,0xbe946fe4,0xbeb8e599,0xbf1ba945,0xbed9ef21,0xbecde4da,0xbe900fce,0xbed29ec4,0xbee8653a,0xbf00bdc0,0xbebd67e9,0xbe8a6d26,0xbe67d8c6,0xbe53a50e,0xbe296543,0xbdf5ec79, -0xbd9ef220,0xbd83e40c,0x3d51691c,0x3d4a688c,0x3bb7dd72,0x3d502dcf,0x3d133aa0,0x3d0ea4ef,0x3d07a34b,0x3d1db041,0x3cbcffb8,0xbc8e957c,0x3cd8803e,0x3cfbfb19,0x3cb3d41a,0x3cb2fcf7,0x3c4c59a9,0x3d25b461,0x3db74189,0x3e185da3,0xbc85a528,0xbee7828a,0xbebb15c6,0xbe96d836,0xbe8681ed, -0xbe919014,0xbea99abe,0xbeb50ac8,0xbecd73d3,0xbec5434c,0xbee1715d,0xbea82669,0xbea321b2,0xbe76824d,0xbe21fbb3,0xbdc4edd7,0xbd3e43b9,0xbcae3b8b,0x3ad806f8,0x3d87bd8d,0x3d9af6c0,0x3d079f26,0x3d359aa6,0x3c263231,0xbbe6f96a,0x3c538eff,0x3c4c0545,0x3c9a9e7e,0x3c9377c7,0xbc07cba2, -0xbc9107bc,0xbc1d2a16,0x3d7a90f8,0x3da83308,0xbcc7508d,0x3e45f26f,0xbe19c99a,0xbe417f07,0xbe1fa5bd,0xbe10a38a,0xbe207f05,0xbe222f3d,0xbe2377d9,0xbdaebe68,0xbd8e1e1b,0xbdea49d2,0xbdd69aa9,0xbe32a890,0xbe5c8d00,0xbe69ecc2,0xbe550c21,0xbe33c90d,0xbdbbd2f5,0xbdaf1fd4,0x3c0ba0f8, -0x3db431a2,0xbd8d9690,0xbc279716,0xbd190feb,0xbc5d5c20,0x3cc7067f,0xbc9d45cb,0x3c43d380,0xbba1a5ed,0x3cd2a75e,0x3c72a54f,0x3c505603,0x3ca6abb9,0xbc8fbcf0,0xbbc4b7c9,0xbc4478d4,0x3cdc70b1,0x3ac2b3e7,0xbde777aa,0xbdc9a983,0xbddf8b60,0xbdedeba5,0xbdf51369,0xbdfb2742,0xbd9be7cd, -0xbd575088,0xbd4f29d2,0xbda005b5,0xbdbbeb1f,0xbdf42345,0xbdec5de0,0xbdb4f5af,0xbd930e46,0xbd8930ad,0xbdbbf2b2,0xbdd46921,0xbc838748,0x3bfb2cac,0xbd4e9a63,0xbbde957c,0xbcd5312f,0xbc0c1561,0x3c82fea2,0x3cac5e4c,0x3bec3166,0x3c339ab1,0x3c296c91,0x3c1b493e,0xbb1d2f80,0x3a3fd1a4, -0x3d0be437,0x3c923f11,0x3c0cd186,0xbd40fd98,0xbd564495,0xbda99036,0xbe0763a5,0xbdef5235,0xbde52959,0xbde51cf9,0xbdebd071,0xbdde17a5,0xbdb72eed,0xbd82ae7a,0xbd341044,0xbcf58e28,0xbcf0eaa0,0xbceb10ca,0xbd2db0ff,0xbd71ba7e,0xbdb4d28b,0xbd7fd031,0xbd8b9192,0xbd329386,0xbd5e4dda, -0xbcf4cc8b,0xbc437fe3,0xbc8fd819,0xbace0538,0xbd600147,0x3cf5732f,0xbcfa1c0c,0x3a985ef9,0xbc9a63d6,0xbc5e6cd8,0x3ca7a621,0xbc63d737,0xbceb7c30,0x3d0b76ec,0xbd9dd77f,0xbda0fda2,0xbd8f8915,0xbd52b3be,0xbd928449,0xbda74715,0xbdbf7ad1,0xbd999abf,0xbd8bdbf1,0xbd8c8f75,0xbd9296e8, -0xbd9a422a,0xbd8bee8f,0xbd9666e0,0xbd912674,0xbd868222,0xbd4af8ea,0xbd259350,0xbd4a327d,0x3c9c40a0,0xbc4533ab,0x3a35072e,0xbca0df94,0xbc4702b5,0xbc0c2dce,0xbc035ce7,0xbc7b56fb,0xbbafd68f,0xbca14a8c,0xbd408b4f,0x3bccbd0e,0xbd1d2b0c,0xbccd99b5,0x3cc90b23,0xbd90b84f,0xbd29120f, -0xbd9f9ff2,0xbd827aee,0xbd93b34a,0xbd9f321b,0xbda49c49,0xbd9d389b,0xbda5e68c,0xbda78c76,0xbda729d9,0xbd9d662c,0xbd9085f9,0xbd83abeb,0xbd785734,0xbd74300d,0xbd75cfe5,0xbd82fe65,0xbd8f8550,0xbd8e7972,0xbdaf21e5,0xbd5cf29f,0xbba2df10,0x3d673a73,0xbd49709b,0x3b37e31f,0x3d93f560, -0x3da3f393,0x3d8c80cd,0x3d7e4fdf,0x3d96ca0b,0x3d89c439,0x3d51bc6c,0xbbc236e6,0xbd42c0ad,0x3d72e3d6,0x3c846bf6,0xbdc84e62,0x3d4ea81b,0x3c3c0289,0x3db23ff5,0x3d2cd5a2,0x3d283714,0x3d2011a2,0x3d4821eb,0x3d54917f,0x3d5a8ec4,0x3d5f6c56,0x3d6b26dd,0x3d6dda60,0x3d752028,0x3d7a9bf2, -0x3d83d523,0x3d7cffbb,0x3d7af9b1,0x3d6c567c,0x3d69d3e8,0x3d479219,0x3d86b3c6,0xbcb26a40,0xbd8f9c85,0xbe050f01,0x3b182ef6,0xbd855653,0xbe03af08,0xbe02d696,0xbdf77574,0xbdded1c8,0xbe0957e7,0xbe0640a5,0xbdf74897,0xbda9715f,0x3bc6e4cf,0xbdee3f07,0xbdccd857,0xbe44a707,0xbc7d7ea0, -0x3cc9c6b9,0x3c86d1df,0x3bbaf3bb,0x3d498b37,0x3d8dc43a,0x3d9825b8,0x3d9559d3,0x3da035af,0x3d9753b7,0x3d9d15c0,0x3dae4ea7,0x3dbb6549,0x3da4c750,0x3dae36c3,0x3da0d65e,0x3d8bedbe,0x3d86e990,0x3db2e3c7,0xbd86dc1c,0xbcb5ee62,0xbd3274fc,0xbd31b628,0x3c4f3b58,0xbd13e65e,0xbc63d934, -0xbd4778f5,0xbcbc6dbc,0xbd0cad25,0x3d5f5780,0xbd0e97b9,0xbd27b135,0xbd0c7bf9,0xbd6ae6aa,0xbd0b0252,0xbe04a328,0x3d16371d,0x3c2f02c7,0xbb6a1e9b,0xbc9c23ea,0x3d71f1a0,0x3db0845c,0x3dbc6953,0x3dcec0b0,0x3dd82dfd,0x3dddb8d0,0x3e0109d0,0x3e0606e6,0x3e0eb704,0x3e0db33b,0x3df5a3d9, -0x3df18adf,0x3db075f2,0x3dd8b380,0x3d153e00,0xbdb1792c,0xbcafcf8a,0xbbc40881,0xbd194d6f,0xbc8fd572,0x3b74c902,0xbb1748cf,0x3d828a62,0xbd04ee04,0x3cfcf2e2,0xbcdb5bf4,0xbba1251f,0xbc4720aa,0xbcfd12fa,0xbda19a38,0xbc29ebe8,0xbe5f7172,0xbe18b8a0,0xbab12c8a,0xbd8e7398,0xbdb07b9d, -0x3d251fab,0x3dd1e6dd,0x3def09ad,0x3df5dd72,0x3df6085c,0x3de120e2,0x3e08e5db,0x3e1a5553,0x3e28dfc9,0x3e172458,0x3e0f4353,0x3e0348ef,0x3dd01dcb,0x3dcdbe0d,0x3d8109e2,0xbbcc76eb,0x3d19c2e8,0xbc816cdc,0x3cb3cd44,0xbc898a68,0x3d15b9ab,0xbbff0ca0,0x3c788d3e,0x3b98b637,0x3d27086f, -0x3bc64984,0xbb3b8fa5,0xbd48d27c,0xbd04eec2,0xbd51718e,0xbd32ef4f,0xbda1ce4d,0xbddd6e88,0x3d1f5178,0xbd9bd6f8,0xbdad89f5,0x3d641d15,0x3df982b5,0x3e014e33,0x3e16d937,0x3e145299,0x3e1c4f94,0x3e3e542e,0x3e4edc70,0x3e6d975a,0x3e5f2b2c,0x3e4b6adc,0x3e332904,0x3e0bbe32,0x3e04e8be, -0x3d9bfe59,0xbdde5590,0x3ba7e1a8,0xbcab370a,0x3a2979df,0x3c8ea249,0x3c9669b3,0x3d2850bc,0x3d2bedf7,0x3d2f4d9d,0x3cfed803,0x3d1a9391,0x3a865652,0xbc82a095,0xbcc93590,0xbd7997a3,0xbe109e8e,0xbe3ce494,0x3c43c67a,0x3e9f4564,0x3e7cc8b5,0x3ea09d64,0x3e905678,0x3e73f17c,0x3e1dd45b, -0x3e8b4dc7,0x3eb80d0b,0x3edf0885,0x3ed41bdc,0x3ed73096,0x3ea71bb4,0x3e9c21b1,0x3e6a12c0,0x3e29cf65,0x3dcfb201,0x3dbd1f73,0x3db42ff7,0xbc9b63b6,0x3d51817f,0xbc75af6e,0x3d0fb5b1,0x3c31a9d1,0x3d16b1e4,0x3d2deafc,0x3d213c07,0x3c9011ee,0x3ca4b67f,0xbc81877b,0xbd81a21d,0xbba98de8, -0xbd46a275,0xbe0f94d4,0xbb6f59c2,0xbd66fb7b,0x3e0fe26c,0x3ec46afc,0x3e8fe86c,0x3e585c3f,0x3e18439d,0x3e1b8bab,0x3d41f13b,0x3dc0c532,0x3de36b39,0x3e1e523c,0x3e8bd1cc,0x3e9c2338,0x3eadc0b1,0x3e99718a,0x3e9063a7,0x3e842101,0x3e4417f5,0x3e3c6247,0x3d94fa9f,0xbd5536db,0x3aa5d507, -0x3b8b1077,0x3c98b1df,0x3cda7ea4,0x3d010d5f,0x3d1c6e07,0x3d27a8be,0x3d1599b6,0x3c59e0fe,0x3c878973,0x3c17735f,0xbd351005,0xbc954e11,0x3c3acf7d,0xbd39860e,0x3e16d72b,0x3e6de173,0x3d6f4438,0xbce8a138,0xbded4cb2,0x3d1052df,0x3d9aeac1,0x3da1d65f,0xbd733894,0xbdf0a5f1,0xbe421061, -0xbdc9b4b0,0xbd87cb31,0x3ad09edb,0xbc95e13c,0x3b9ddb90,0xbc1892c6,0x3d17d595,0x3d3e925a,0x3d98d41e,0x3d6eec58,0x3b12eb10,0x3bfadc3d,0x3ceb0292,0x3c9d471c,0x3b8905dd,0x3cd28643,0x3d396225,0x3aba9d06,0x3d0a0563,0x3cc2688c,0x396da6a1,0x3ce7391c,0x3c9aa4ad,0x3d849a81,0xbc5147ee, -0x3e044531,0x3da3f81d,0xbe71fbce,0xbe1fdddf,0xbd51be1d,0x3ce72bbf,0x3d253fdd,0x3d50aaa0,0xbe047575,0xbe72749b,0xbe909090,0xbea59f53,0xbe8fd00e,0xbe8bfa35,0xbe6078d1,0xbe4c6b6c,0xbe3d0dd1,0xbe00845b,0xbd9c8e43,0xbc768b5e,0x3c3ccd88,0x3d0caa93,0x3ce602c9,0xba814da9,0x3cc6986b, -0xbc1ca916,0x3ce89f4e,0x3d138086,0xbcd966c0,0x3d4bae2c,0x3d25a777,0x3bf8574b,0x3c9340ea,0x3d250bc7,0x3d4ebee3,0x3daa9fd1,0xbc7e8a37,0xbe8c2fc5,0xbd26728d,0x3d45c2bb,0x3e59a9f7,0x3dec659d,0x3d2b8dc2,0xbda95b58,0xbd9aa01d,0xbdfda860,0xbe29c74f,0xbe62d08f,0xbe9258f6,0xbe90c2e5, -0xbe7dc97e,0xbe451c27,0xbe21ce2d,0xbe0136bd,0xbdc394ad,0xbd6048ea,0xbcb816de,0xbcc0cf50,0x3c0dcd90,0x3c136fc8,0x3c189cd7,0x3ca4310a,0x3cb46bad,0x3cc469df,0xbc3558d1,0x3cc99517,0x3ca81378,0x3cb1bb10,0x3cb651e2,0xbc110adf,0xbb8d6bb3,0xbd31fefa,0xbe9497c6,0xbdd7e96b,0x3e1789cf, -0x3dab3401,0x3d815ad5,0x3e179c07,0x3e47378e,0x3e334c2c,0x3e1fc959,0x3e2e77b4,0x3e07284c,0xb9b08709,0xbdcf5cd8,0xbdc70f75,0xbe310a58,0xbe48a5b4,0xbe3c3ecf,0xbe1d43fb,0xbdbcd3a3,0xbd7f6ee7,0x3b6c334b,0x3c456bb7,0xbccedaa5,0xbc7e165e,0xbc8990ac,0xbc2c8592,0xbc1fd214,0x3bce0e8b, -0x3c452580,0x3c5c543b,0x3cd5510b,0xbbd89311,0xbbf4e4a9,0xbcecfc90,0xbda99beb,0xbca799e1,0xbe2d3c24,0xbd83877c,0x3ce04035,0x3caabbe2,0x3d8ded08,0x3d6ee901,0x3d16c7c2,0x3cada6e5,0xbb8e88a5,0xbcaf55a2,0xbd0babea,0xbd22b03b,0xbcb5df91,0x3aed6498,0x3bb8023f,0xba7e881d,0xbd1cc902, -0xbd77fe68,0xbd916f85,0xbd9c815f,0xbdd600ea,0xbd7acc43,0xbd987354,0xbd09925a,0xbc995eb7,0xbc5b224c,0x3c26a5f4,0x39ac7e32,0x3bceaa5e,0x3c1ce6fa,0x3c43655e,0x3bacf7d8,0xbcd53cde,0xbc7ac51a,0xbd46989b,0xbd77fa17,0xbd80efb8,0xbca422af,0x3d47e929,0x3cc1ad8d,0x3d13fa50,0x3ca0794f, -0x3cc83a6e,0x3d1e8b6c,0x3c4c1f6f,0x3c14bd0f,0xbc17b6f6,0xbbea9c07,0xbc5b4007,0xbb5acb57,0xbb2c483f,0xbcaee9da,0xbcdb8860,0xbd38cc10,0xbd21b23a,0xbd7cd2d8,0xbdaabd6a,0xbd924416,0xbd524cf5,0xbd6bf930,0xbcd2f4a4,0xbc848c8a,0xbcba4d4f,0xbc021477,0x3c2536b9,0x3c576a8c,0x3c0c0248, -0x3b9d7f65,0x3af8d597,0xbc6d92ad,0xbd62bda5,0xbd1430d5,0xbd1dde83,0x3c840211,0x3c7ae5e9,0x3c9b02df,0x3d0d6bdc,0x3ce47218,0x3cb39ea3,0x3c9d7f21,0xba77f88b,0xbca553ec,0xbd1dfefe,0xbd0fca55,0xbd1f479a,0xbd33cc3f,0xbd3ed8bb,0xbd3b4e6a,0xbd1cb29f,0xbd27beaf,0xbc86d0e1,0xbd38d3b9, -0xbd6f7e86,0xbd462288,0xbd2d4033,0xbd11ff40,0xbd186cca,0xbd0ba64d,0xbc8a26b3,0x3c55825f,0xbcf5b797,0x3c601f1f,0xbc43dda0,0x3c35c209,0xbbdf013a,0xbcf48bc3,0xbcac59fc,0xb90a255d,0xbdb7447d,0x3c225399,0x3c1d6c63,0x3c767e6b,0x3c856878,0x3ce0c566,0x3d1af959,0x3d4dd12f,0x3d314736, -0x3d17035d,0x3cf64975,0x3c86da6a,0x3b6608d6,0xbc1a5f69,0xbc056734,0xbc53af60,0xbc9b985d,0xbcd9c17d,0xbd06eb42,0xbd0c895e,0xbd71cb05,0xbd301071,0xbd57ec00,0xbd3e9669,0xbd2f15cb,0xbd2271b4,0xbd4e2bd8,0xbd54ece1,0xbd627d81,0xbd421cdc,0xbb4e0f15,0xbd8246f7,0xbcf70465,0xbd058ba2, -0xbd960579,0xbc073fc5,0xbd0b2a5f,0x3cc4a763,0x3c32c43a,0x3c723690,0x3c8b853d,0x3c931e5c,0x3c8c228e,0x3c99267b,0x3c55e76d,0x3c268c48,0x3bf42c10,0x3bc0bf1f,0x3baf2c4e,0x3b1f850f,0x3b14dbf3,0x3b0ac3c5,0x3b4446da,0x3ba22739,0x3bb4a375,0x3c4f3b41,0xbd192d21,0xbda16ed1,0xbdb59663, -0xbd088786,0xbd9c0fd5,0xbdc1c0ba,0xbdca0fee,0xbdb81430,0xbdb169ce,0xbdcd2d6a,0xbdcf1e2b,0xbdb36307,0xbd71fd35,0xbc9f32e3,0xbdb91d1c,0xbda65ca6,0x380b6add,0x3d8acdb8,0x3da1f75a,0x3d13e835,0x3d296441,0x3d29fbb9,0x3d2c0ea6,0x3d37ceed,0x3d483056,0x3d5cd439,0x3d3f90f8,0x3d32a820, -0x3d253c1d,0x3d1cd24e,0x3d1467ce,0x3d0de305,0x3d0d8ba6,0x3d119d68,0x3d0dc945,0x3d10e309,0x3d16adae,0x3cfce32b,0x3d962802,0x3da42e1c,0x3d11ec36,0x3d865437,0x3da2b89d,0x3d32b2a7,0x3d379f5f,0x3d304bfa,0x3d2df0b9,0x3d565fb1,0x3d52c6c6,0x3d5c46b0,0x3da6b623,0x3d871554,0x3d10cb30, -0x3d9efc75,0x3d1c7c24,0x3d3f5b44,0x3d76c641,0x3d917241,0x3d907cbb,0x3d9d726d,0x3da7c76f,0x3dc430de,0x3da7fdb4,0x3da77b2d,0x3d8db48a,0x3d872c6b,0x3d7ee6df,0x3d6d4c22,0x3d555bb4,0x3d4a91a8,0x3d2c0e60,0x3d364183,0x3d20fba7,0x3ce68e8d,0x3d939684,0x3d57f6f9,0x3d406ca0,0x3d8f63d4, -0x3d62c8f2,0x3d4d7d02,0x3d71680d,0x3d89b9a3,0x3d67cfd0,0x3d8bf97a,0x3d1f9a55,0x3d417149,0x3d59c7d0,0x3d6776a5,0x3d635df6,0x3d497135,0x3d93852e,0x3dad45ef,0x3d92257d,0x3dbeb6c7,0x3db72eb6,0x3ddb6abc,0x3de4d85f,0x3e0eb1b5,0x3de85e94,0x3dd4838e,0x3db8351f,0x3d9a5b0d,0x3d801886, -0x3d3de15b,0x3d295e3a,0x3d268ea6,0x3cef83c2,0x3d21f934,0x3c942792,0x3d4d4243,0x3dc3374e,0x3d3b288b,0x3d6502a3,0x3d34164b,0x3d09cbe4,0x3d6d7fb2,0x3d1983b8,0x3d053678,0x3d8278be,0x3d24a3b4,0x3d725643,0x3d06f3b9,0x3d285ab1,0x3d26e153,0x3d1c1ac2,0x3d4421fa,0x3c6ef6e6,0x3d03ca9e, -0x3df2543e,0x3e010ae4,0x3e02db94,0x3e1049c0,0x3e15b040,0x3e2f8231,0x3e2aea20,0x3e272026,0x3e04bf47,0x3df642ec,0x3dca95e3,0x3dae1ebd,0x3d80ec49,0x3d496e91,0x3cced3fa,0x3cff85de,0x3c53737d,0x3cd55e1e,0x3d381dfe,0x3ae52333,0x3cda08ee,0x3b2e3457,0x3ca26f30,0x3cbcf25a,0x3d0d91ab, -0x3cc68ee8,0x3c935dee,0x3cea42d8,0x3d0eaa61,0x3c849a61,0x3c8c7fde,0x3bb2db7e,0x3cfeb488,0x3cbcd2e9,0x3d6d9ad8,0x3dd34d5e,0x3e097021,0x3e11310a,0x3e0687de,0x3e1ccbf5,0x3e39e7c4,0x3e5d7167,0x3e33ab01,0x3e2e9263,0x3e13f3d2,0x3ddbf91a,0x3d869134,0x3cd62e04,0x3cddf276,0x3ca923fd, -0xb73b506c,0x3c4f8cda,0xbc150af3,0x3c8b3d82,0x3dc0d75a,0x3c4cf53a,0x3ccb5cf7,0xbad0fc7a,0x3aa3d755,0x3ca243d4,0x3c78fe5a,0x3cda8869,0x3caa13e8,0x3d049efb,0x3cf8ed0c,0x3b7cda55,0x3bb9e126,0x3c19b327,0x3ca21ed7,0x3d14759a,0x3e43f031,0x3e97582b,0x3e37803c,0x3ea62020,0x3eb18cd0, -0x3e9fbe40,0x3e94d72e,0x3e84f98b,0x3e9f28a5,0x3e8dada8,0x3e77b550,0x3eb1aaf8,0x3ed395aa,0x3ec7619a,0x3e9c609f,0x3e4efdb2,0x3e50623a,0x3e1d5d5b,0x3dac0101,0x3d3fb808,0x3d55b26b,0xbb7620a0,0x3d07ca17,0x3c0e26cc,0x3d0dafb5,0x3d00cafb,0x3d176833,0x3ce447c6,0x3bf3861c,0x3caf4130, -0x3d0023b9,0x3d22e2ca,0x3da14ec6,0x3dd0a665,0x3de4cbdd,0x3e032666,0x3de21de4,0x3e03ea2c,0xbdb086f5,0xbddfe4e0,0xbe093efc,0x3c7c54a0,0x3e09e17d,0x3e58ba57,0x3d8e0ab5,0xbd1cbbed,0xbe00c1d7,0xbe1e919f,0xbe3d065d,0xbe179359,0xbe0870b6,0xbde88f7d,0xbe1b1afa,0xbdb8a02e,0xbda04fa8, -0x3d0f9c40,0x3dedb22b,0x3d81e7d9,0x3d340619,0x3cca7f4f,0x3c9303e5,0x3cdcdc74,0x3d0832ed,0x3d1ce5bc,0x3d0993b4,0x3c955c48,0x3c8bc9cb,0x3be1594d,0x3cb05a33,0x3d12ff06,0x3d6dab41,0x3dc5360d,0x3e3a5e6b,0xbd4302b9,0xbe543bcf,0xbdb20fb6,0xbd1d295d,0xbcc9f6bc,0xbdcde38d,0xbe03c2b8, -0xbe1a58e7,0xbe690eb8,0xbe57625e,0xbe88e3dc,0xbe6d5343,0xbe63ce2d,0xbe826457,0xbe591a60,0xbe4293b5,0xbdc740f7,0xbdc9f350,0xbcf8f20b,0x3d1302e4,0x3d2be5a0,0x3d8e1c1e,0x3ceae2c1,0x3d2dcb56,0x3cd800b3,0x3d27eb11,0x3d1f2954,0xbb04d61e,0x3d2ebdb2,0x3d339bd5,0x3cbee5b4,0x3d6639b7, -0x3d5c8563,0x3db15479,0x3db11059,0xbcc71911,0xbdc92696,0x3d57c533,0x3e08ecfb,0x3e4aa49f,0xbce53da4,0xbdfbcc37,0xbe27457e,0xbde9dcda,0xbd99c8d1,0x3d8a8034,0xbca56e91,0xbcf1fa4d,0xbd4fb267,0xbddea361,0xbe014cdd,0xbdfd92d9,0xbdb05482,0xbdc4d09c,0xbd62dd5a,0xbc6af8f6,0xbc5da6f6, -0x3bd3a7b3,0x3ca239d9,0x3b196d6f,0x3ccb60a1,0x3cafffa9,0x3d16d38b,0xbb07d3a4,0x3d2a0d9b,0x3d4a0871,0x3c44680a,0x3d365b98,0x3cc57736,0x3d5fb9da,0xbbabce94,0xbdde82b2,0x3e098339,0x3e5e8ab6,0x3e2b7e54,0x3dc6c640,0x3d7fc47f,0x3df9618c,0x3e012ef1,0x3e3ceb14,0x3e814576,0x3e7d0ab2, -0x3e50c453,0x3e051627,0x3db95b75,0x3d362cba,0xbac22663,0xbd3c49a1,0xbd938f4c,0xbd93a101,0xbd598eea,0xbd268f41,0xbcc6b5e5,0xbcd40c66,0xbcc58230,0xbc90dacb,0x3c1b6dd6,0x3a959311,0x3bf12db1,0xbac25827,0x3cd287dc,0x3ce745c6,0x3c58fffc,0x3c403fc1,0x3cc5a90e,0xb9ad09f9,0xbc87fbe9, -0x3e462b9b,0x3dc67175,0x3dd1410c,0x3df806f6,0x3d8ddad9,0xbca0d590,0xbdb10f47,0xbce4a110,0xbca2a603,0x3c102b08,0x3ca95f59,0x3e2234c8,0x3e056fa0,0x3dabd694,0x3db2ba4f,0x3d82d5a3,0x3c9e3c0c,0x3c7cfdc5,0xbc9e75f3,0xbd4277a6,0xbd267efb,0xbd8138a7,0xbd2dcdfa,0xbcda3645,0xbb2fd832, -0x3c805ca5,0x3b8ee5ec,0xbb09191e,0x3b0d6c08,0x3cf376a3,0x3d2842df,0x3d98387f,0x3d339b80,0xbbca59ad,0x3d4b49e2,0x3b74e264,0x3c8ad88c,0x3e0b68d9,0x3dc016ab,0x3d93995c,0xbbfab1fc,0xbc694e66,0xbc24faa7,0x3ae9e3df,0xbbbdcb93,0x3c5795a3,0x3d71d887,0x3d32c464,0x3d953b16,0x3d82958b, -0x3d35920d,0x3c701a8d,0xbc4ae993,0xbd30f1a3,0xbcf0202d,0xbcd7a078,0xbd7800a6,0xbb88b1dc,0x3ce80b2f,0xba04be69,0xbbb46242,0xbab4575c,0xbb8f1bfd,0x3bdb8416,0x3beeff9e,0x3c48838d,0x3c5f2069,0x3c607f52,0x3c61dd72,0x3b855d24,0x3cb6c34b,0x3d0ce062,0x3d37d111,0x3cc73278,0x3c863755, -0x3cde3896,0x3bf6662a,0x3c76723f,0xba4762f6,0xbc968913,0xbcd956ad,0xbd224fd5,0xbcad4e17,0x3a1718df,0x3c3b1791,0x3cf9e68e,0x3c5809d6,0xbc2a7bda,0xbd12d82f,0xbd01d412,0xbcb212af,0xbac1891b,0xbc79eee8,0xbcb6e71d,0x3c50e3f8,0xbbf52324,0xbc2e870f,0xbb8c0457,0x3b5b34fc,0x3b0e0bcb, -0x3b98f74d,0x3ba6e741,0x3bfde16f,0x3c9ffbc7,0x3bc6322b,0x3c2291bd,0x3cd04262,0x3c49387b,0x3d0190c1,0xb7a44571,0xbbd2edae,0x3c12d87f,0x3cb26e41,0x3ca0fef4,0x3cac41cb,0x3cb0db25,0x3ce442c3,0x3cdbf765,0x3cacebd4,0xbc225b31,0xbcb9e6cd,0xbd02aed5,0xbd2315d2,0xbd36c482,0xbd43210b, -0xbd0654e0,0xbd00cc4a,0xbceb5d92,0xbc226593,0xbc9cce1c,0xbc360bba,0xbc4ca359,0xbb9d787a,0x3c4f2d9f,0xbb8ec250,0x3bdc3a89,0x3cdb4f6d,0x3a6b0e13,0x3c97ec74,0x3af1165c,0x3cad6d28,0x3cd3a92a,0x3cfb8b61,0x3c83adfa,0x3c95ec43,0xbc32daca,0xbba85e5f,0xbc6a1f1e,0xbccc238e,0xbcee391d, -0xbd0a4031,0xbd180f9b,0xbd30a6b3,0xbd24a19b,0xbd0bd291,0xbcb01dc0,0xbc3c020d,0xbc1e0192,0xbbb064f9,0xbb7d099d,0xbbdd5ab6,0xbc6c6241,0xbc89a568,0xbc87b206,0xbcbee769,0xbc449cb0,0xbadfa43f,0x3c3167db,0x3be6dcc2,0x3c1b7902,0x3c88adaf,0x3cbb9c72,0x3c76ff6a,0x3cb6c855,0xbb9108ea, -0x3cf43d0b,0x3cb54d93,0x3b97b2ad,0x3c447009,0x3c2019ec,0x3d146167,0xbc128c9d,0xbbd23e61,0xbb94a208,0xbaf85392,0xb9b872ba,0x39bfd728,0x3af94da4,0x3ba2c742,0x3b953288,0x3ab217a8,0xbb356842,0xbbe09e3e,0xbbfa082a,0xbc16e773,0xbc2822ef,0xbc14663e,0xbbb7815a,0xbbc1ac79,0xbba01d6d, -0x3ce1d826,0x3d146de4,0x3a8efb98,0x3cda40d4,0x3d2170d1,0x3c24aaaf,0x3c1fc455,0x3c3278c6,0x3c4f6ab9,0x3ca5bd15,0x3cca7377,0x3caf02e2,0x3d220f30,0x3cdc965b,0x3c8c2b73,0x3d3f280e,0x3a2649ea,0x3cfeb479,0xbb2ac289,0x3cd0b002,0x3cb0c950,0x3cb99b4b,0x3ce4c9aa,0x3cb5a096,0x3cb14859, -0x3cb84dec,0x3c8f5bbd,0x3c787c38,0x3c6eca39,0x3c47db6f,0x3c2f3442,0x3c0cbf91,0x3c2ca678,0x3c3f06cc,0x3c42f83f,0x3c5f7c59,0x3c731caa,0x3c771cee,0xba9c5d8a,0x3bb91c82,0x3d55a5d3,0xbad4b5fd,0x3b38bd39,0x3d4784ba,0x3d3be05d,0x3d3d7d1f,0x3d2bf657,0x3d2eca4b,0x3d239e22,0x3d0eda35, -0x3b3a68ea,0xb8b5be4c,0x3d3c2e14,0x3bd79c94,0x3ce89bba,0x3cf906bb,0x3d3cfa26,0x3d4b10a3,0x3d940874,0x3d6d66b4,0x3d5ae255,0x3d7bccff,0x3d3b1f62,0x3d0b8749,0x3cc8872a,0x3c673efc,0x3be61a37,0x3b6006eb,0x3c14ecf8,0x3c094d4f,0x3bf4f2f1,0x3c31371b,0x3c7e9b58,0x3c6ba11b,0x3c830881, -0x3c953910,0x3ce1bb1a,0x3b9b9c8a,0x3be62751,0x3d10a453,0x3c9e7c65,0x3c948bbc,0x3c80b993,0x3cc0e34d,0x3ccd9cba,0x3cb9a0d8,0x3c93b298,0x3c89453d,0x3c889f71,0x3ca89b68,0x3bc1a5bb,0x3d188fdb,0x3d6d2b7d,0x3d7f260d,0x3dc65779,0x3d6d1fb1,0x3d540707,0x3d802495,0x3d0e17cf,0x3cb2954b, -0x3c5f1eb0,0xbc4071a0,0xbca9dcb8,0xbcfb4aa0,0xbccadf69,0xbc97f71e,0xbca24acf,0xbc1ea767,0xb9983f47,0xbbfcd0bc,0xb9a6b5bd,0x3c39e92e,0x3a38bda9,0x3b6c8859,0x3c730a5d,0x3c710874,0x3caf02a1,0x3c803896,0xbb94a407,0x3cd64a8f,0x3c93b412,0x3c67c2c5,0x3c9646a5,0x3c894db3,0x3c8b3edf, -0x3caceb87,0x3d132b86,0x3d8c7699,0x3db630d3,0x3dd9565b,0x3e2c6d92,0x3de2a407,0x3ddd4dcb,0x3e0abd53,0x3db2bca3,0x3d7def28,0x3d0a35f6,0xbb6f2954,0xbcdeee5c,0xbd209e9e,0xbcd66605,0xbce15865,0xbd014d5b,0xbc840108,0xbb62d2cb,0xbc411db7,0x3afa054a,0x3c3de8e5,0x3be319e1,0x3be302e4, -0x3b2fbfeb,0x3cf33f70,0x3c1e74da,0x3cbf7555,0x3c555225,0x3d09ac6c,0x3cc2d8dc,0x3c0ce585,0x3b5fc704,0x3c69829f,0x3c3fa3af,0x3ce13ea7,0x3d109adf,0x3d68f84f,0x3db3519b,0x3dd74b53,0x3e21cd6c,0x3daac3a7,0x3d79eaec,0x3dc4d55b,0x3d824a25,0x3d083f23,0x3cf0cb77,0xbce8c33d,0xbd54afac, -0xbda5bd70,0xbd92b7e9,0xbd8890d5,0xbd8a42d3,0xbd3bcd3b,0xbcf097dc,0xbcb24088,0xbbcf158b,0x3c7156d8,0x3a9f5cde,0xbac5738b,0x3bbafab6,0x3cc18911,0x3cc38856,0x3ccf6d1b,0x3c8b9657,0x3d09a3cf,0x3ce54fcb,0x3cab32af,0x3cd93672,0x3d143b7d,0x3d324856,0x3d43989e,0x3dafbb2a,0xbc55a237, -0xbc8582d2,0xbd888fcd,0xbdac5e9a,0xbdfb7816,0xbdec60a5,0xbe204d57,0xbe1e10b7,0xbe19494f,0xbe1e7b76,0xbe148761,0xbe2cea1a,0xbe2c28f3,0xbe1e8732,0xbe0aaa09,0xbd9a0c49,0xbd5689ca,0xbd1867ce,0xbc1b2e01,0x3c4c7a69,0x3c2d4b11,0x3c1eba01,0x3c0be45d,0x3c6c7d70,0x3ccf5aef,0x3cdd732c, -0x3cd8b6e8,0x3c747653,0x3c469beb,0x3c9d75dc,0x3d08d2ec,0xbaa5cd9d,0x3ac5e53f,0x3d317c8e,0x3c984a05,0x3cba6d80,0xbdcc2d9b,0xbe5ccd8d,0xbe407e16,0xbe22a0f2,0xbe425582,0xbe81b952,0xbe6c960c,0xbe3b5656,0xbe1f3ff7,0xbe3116c5,0xbe7f1e0a,0xbe8e13fd,0xbea678c2,0xbe9d0250,0xbe87fd1c, -0xbe559b55,0xbe2313ec,0xbdc2be9c,0xbd94777d,0x3a93ef58,0x3bff85cc,0x3b046568,0x3b98b838,0x3b87dace,0x3c9b7794,0x3ca97e1a,0x3ceb6cf5,0x3cc97cd8,0x3cec2243,0x3d1c89c2,0x3ce1d8a8,0x3d2a12c5,0x3cdeadba,0x3c47ab23,0x3cd10c19,0xbe058528,0xbdd8c780,0xbd179c13,0xbd63b2e8,0xbd81ffad, -0xbe11126b,0xbe05cc65,0xbdf9e98e,0x3cb41b0c,0x3dc32404,0x3da5bae2,0x3c85524f,0xbd61747a,0xbe0028e1,0xbe0038e3,0xbe1c51d6,0xbe000652,0xbe107777,0xbdd7b757,0xbd9c0d61,0xbd638de1,0x3b83c7b1,0xbb13417c,0xbb6fbebe,0x3c5fdaf3,0x3d158d16,0x3d19774a,0x3d4718ad,0x3b7c7adb,0x3d34c0aa, -0x3d0dd8ba,0x3c986b7d,0xb8b55a63,0xba931856,0xbd250926,0xbb9be203,0xbd524d75,0xbcde53de,0xbdc68940,0xbe4624ba,0xbe3e84bb,0xbe16af44,0xbdd8931f,0xbe0a747e,0xbc11b23b,0x3d255771,0xbbec8979,0x3d5299a8,0x3b34075c,0xbd2fe756,0xbd23f423,0xbd124e0b,0xbd0063c8,0xbd5a0b3c,0xbd518ec5, -0xbd5d74cd,0xbd79831b,0xbd27ea71,0xbcc741fc,0xbc71f152,0x3b087d5e,0x3cbb90c3,0x3cf38cb4,0x3cf65d40,0xbc4e0408,0x3d056937,0x3cde837f,0x3b32e2eb,0x3c3fa279,0xbc236fd9,0xbc7edd25,0xbd21803f,0x3db6c4e6,0xbd933627,0xbeabb4f8,0xbea93c4d,0xbe61510f,0xbe545116,0xbe57bda5,0xbe2419ad, -0xbe667d55,0xbe870c91,0xbe6eebe1,0xbe2baca4,0xbdb01e51,0xbddbe02d,0xbd46abd8,0xbd057fbc,0xbc723ec8,0xbc0b3703,0xbc071230,0xbd6264ae,0xbd4814a6,0xbd306b8e,0xbd7529fc,0xbd3989c9,0xbc8c582b,0xbb334999,0x3b7d0ec9,0x3b037b80,0xbc52ff97,0x3c7dbe56,0x3cc90c44,0x3ceb2c61,0x3c8aba54, -0xbc493e2b,0x3ccc2464,0x3cddae75,0xbd950586,0xbe063a17,0xbe6e2ccc,0xbe3f77b7,0xbe077ab8,0xbe0a3473,0xbdfbfc80,0xbe2daaa5,0xbe1a527e,0xbe32af2c,0xbe3c00a5,0xbe441eea,0xbded5586,0xbda9dcd9,0xbd75c9b5,0xbd34e6eb,0xbd0329b6,0xbd5f14b7,0xbd43ba36,0xbcd2b35b,0xbd68f2f4,0xbd2d6a1b, -0xbb81d479,0x3ab72068,0x3c045f46,0x3bfef370,0xbc7d1b6e,0xbc0a6c52,0xbc820211,0x3b96c3cf,0xba7fdf76,0xbc42fabb,0xbc71836b,0x3d0d7c95,0xbb54e0a5,0xbb10e1ee,0x3d3c536c,0xbe153ad2,0xbddb148e,0xbd9e3a52,0xbd62706b,0xbd72f1ab,0xbd4327ce,0xbd08bb27,0xbd30f3b4,0xbd4f0dc3,0xbd8b07ce, -0xbd400432,0xbdbf164b,0xbdfd7001,0xbe15e9e5,0xbdfc6d43,0xbd6bbebe,0xbc3750ed,0x3bce2890,0xbc800b5c,0xbb3ec004,0x3b889cf9,0xbd27c8af,0xbc397cd8,0xbc27d20c,0xbc0ad877,0x3c5f8cb7,0x3beb149c,0xb9f64e88,0xbaa4e1d6,0xbb09b335,0x3bbda7a2,0xbadab53c,0xbc97ede0,0xbcd29a90,0xbd3c6b11, -0xbcdceb78,0xbc4b7f19,0xbcdd98c9,0xbcd6991f,0xbccda78c,0xbd1f8d59,0xbd2218e4,0xbd2b1ba0,0xbcff8fcd,0xbca9d75d,0xbce6aa79,0xbd2ceee6,0xbd4c8c14,0xbd8b3174,0xbd9541b1,0xbd6b7f61,0xbd1d8f43,0xbc8f3e7c,0x3963c0c1,0x3ba990c5,0xbc2e3bb9,0x3b51e0ec,0x3bc47080,0x3ba54758,0x3c1ea66f, -0x3c831330,0x3b343f14,0x3c10c17f,0xba12c7e0,0xba1466c7,0x3b0e41bf,0xba85f482,0xbae44d04,0xbb463ca4,0xbc117b9f,0xbc06ace5,0xbcc95eb4,0xbc9f52ea,0xbc63bc56,0xbd2d0686,0xbd6a93f1,0xbd71a382,0xbd84fee0,0xbd9ea264,0xbd9babd5,0xbd93a5f4,0xbd8a2524,0xbd340fed,0xbd080178,0xbcce2fc1, -0xbc0b1f72,0xbb337a54,0xbb676473,0xbc1a4f9a,0x3c129159,0xbb9701ad,0xbc8e1c96,0xb8591946,0x3b32df4a,0x3bc78d9a,0x3ad809aa,0x3b5433b1,0x3b3f307c,0xbc44ca34,0xbcfd2a47,0xbc1fa526,0xbc8f59df,0xbb464f85,0xbc967ba8,0xbc63afa9,0xbce47923,0xbca35529,0xbc8b5412,0xbd2f1767,0xbd539773, -0xbd3f9f3a,0xbd296731,0xbd55acfc,0xbd577477,0xbd67e844,0xbd36dbe6,0xbd208522,0xbd126f5c,0xbd200d09,0xbd28a304,0xbd21039d,0xbd284ff6,0xbd0ddb2c,0xbcb08060,0xbc3f8fdb,0xb9ff8806,0xbb1b2c46,0xbc8fdaf5,0xbcb25d41,0xbcf1ff31,0xbcef2905,0xbcf227ab,0xbd0e12c5,0xbd0c62d7,0xbd22214e, -0xbcb86361,0xbd0939cd,0xbc9fbd72,0xbce1e362,0xbd39f3f7,0xbccd9143,0xbc5d494c,0xbd71dd7f,0xbd5a2540,0xbd09a65a,0xbcff2f64,0xbd123b07,0xbd1dab3e,0xbd2684fb,0xbd2cacf3,0xbd422887,0xbd3ff313,0xbd3de7bd,0xbd322bdb,0xbd1fbd95,0xbd0b1f0c,0xbcf8c2cb,0xbcd5406c,0xbccae027,0xbcd50aea, -0xbcddc2fa,0xbcd7e58c,0xbc987a55,0xbd277458,0xbcf749f3,0x3c3e4c5f,0xbd3ef3b6,0xbd166bde,0x3c7234c1,0x3c85f226,0x3c4af74b,0x3c2310d0,0x3c04c9fd,0x3b929c3b,0x3b7fd57f,0xbd14e7e9,0xbd423282,0x3c31cc0e,0xbd0576f7,0xbd5cf85d,0x3d1ee9dc,0x3d810d14,0x3cc2f01f,0x3cf5bb50,0x3d0281e5, -0x3d07c45c,0x3cd400cf,0x3cb9f2cd,0x3ca207d7,0x3ca4ffb9,0x3cabffe6,0x3ca2d056,0x3ca05188,0x3ca36a29,0x3ca97d88,0x3c93dfa5,0x3c936aaa,0x3c93ca6d,0x3c9ff2ec,0x3ca092d1,0x3c865d34,0x3d46385c,0x3d32676a,0x3c048657,0x3d493b40,0x3d459e50,0x3c64fac3,0x3c586274,0x3c453115,0x3c6f141c, -0x3ca9ce01,0x3cbb90b1,0x3cd02cd1,0x3d4d57aa,0x3d5921ac,0x3c491b9a,0x3d3f687d,0x3d30e19a,0x3d893b74,0x3d85db45,0x3d8acfe7,0x3d887499,0x3d11d39c,0x3cb1a323,0x3b9301fb,0xbbc6acbe,0xbaea540f,0x3be20494,0x3c1ca467,0x3c767e96,0x3cadafe3,0x3c804748,0x3c96c56d,0x3c9e831c,0x3cc4ad63, -0x3cbb8e4d,0x3c75d658,0x3d1525f7,0x3d0ef1b7,0x3cb9bf0c,0x3d3218d1,0x3d2dd3ab,0x3cf6552f,0x3d31bd5c,0x3d33cd53,0x3d13aa6b,0x3d2f12e8,0x3ca8f874,0x3cd62a3d,0x3d16b320,0x3d40836c,0x3d3f6158,0x3d3b518b,0x3db26fe6,0x3da93fbd,0x3d9b9ff1,0x3db55f09,0x3dba90ee,0x3d6022a8,0x3cf74ec0, -0x3b2324f1,0x393d4853,0xbbed225e,0xbb7055e5,0x3b99bbbe,0x3be46f50,0x3c6733b0,0x3bace3bf,0x3bb987bb,0x3c1196e1,0x3c9939ff,0x3c69ffa7,0x3c8a292d,0x3d1d21f5,0x3cd4c1d6,0x3d04f106,0x3d10da0f,0x3cde2b18,0x3d378d64,0x3cda549c,0x3d1666d2,0x3d57fa90,0x3d0fbea8,0x3d3784e9,0x3cd21bdf, -0x3d349d1e,0x3d483c23,0x3d4404a4,0x3d90eac2,0x3daead34,0x3dd21380,0x3def017a,0x3df1177f,0x3e041157,0x3d67ab65,0x3c1c7da1,0xbd35440c,0xbd9651d4,0xbd9a8eb7,0xbd3122aa,0xbcf0d96b,0xbc7fb139,0xbaf5bdf0,0xbc0c43a0,0xbbbfbb7d,0x3a95b3d9,0x3c636aec,0x3c2ccfda,0x3b862cac,0x3c8711d2, -0x3be3c379,0x3bf244b7,0x3bcc39b3,0x3ca9a9d8,0x3cc81c13,0x3d1e5fe5,0x3cb4e338,0x3c86dfa8,0x3c90db82,0x3cda1212,0x3bec17a4,0x3d19da34,0x3d374c15,0x3d7b6e79,0x3d83a303,0x3dafe663,0x3dc12a36,0x3d9c86a9,0x3de77591,0x3e046136,0x3dbc187d,0x3d5b7260,0xbc5dfd4e,0xbcdcdba9,0xbd42ea70, -0xbd29bcfd,0xbc9422ca,0xbbde631e,0x3bbf561a,0xbc83123a,0xbc8c820c,0xbb1e31c2,0x3c609564,0x3c20ca2f,0xbc1ce738,0x3ce69a0b,0xb9f616fd,0x3c468314,0xbb10395e,0x3a401e32,0x3c6725ca,0x3c27dc25,0x3cb3ed89,0x3c75d059,0x3ceb49d6,0x3cad426a,0x3a95459f,0x3d0f30d4,0x3d51434f,0x3d2159d5, -0x3d808c06,0x3db44d45,0x3ca225ca,0xbd147627,0xbd3f5ff0,0xbc318b02,0x3babb382,0x3c27c079,0x3c6ba7d8,0xbd11779b,0xbcd156f7,0xbd3c2a5e,0xbe2103d6,0xbe50f066,0xbe50bd4c,0xbe09a7aa,0xbdcdd2fc,0xbe3321a0,0xbdff3ed9,0xbda4c51b,0xbc9e9ea5,0x3c1cbf24,0xbc4c716d,0x3c0b7ca4,0x3a1a3f26, -0x3c9dd14f,0x3d08b5c2,0x3cbd1c27,0x3c9a6184,0x3caba976,0x3d27c9fc,0x3d0878ba,0x3c83b066,0x3b752e90,0x3ca9e037,0x3ca4b605,0x3df56a31,0xbd69d84d,0xbd6eb69c,0x3d69fa54,0x3de204bb,0x3e361fc0,0x3e6a95b2,0x3e696609,0x3e06b065,0x3e3a972a,0x3e0d83ae,0x3d8cc8b2,0x3d5b7390,0x3cb4762e, -0xbd2bcc16,0xbd92e744,0xbd887ff7,0x3bec230b,0xbbf6c7f2,0xbce263c0,0xbcb7c5ff,0xbd051597,0xbc8ba8ae,0xbbc89558,0xbb878af6,0x3bd21742,0x3c959663,0x3cb2c5ce,0x3d210758,0x3ce6cae5,0x3d36da9a,0x3d450f84,0x3d68f163,0x3d0d8806,0x3ca51f29,0x3b9cc198,0xbcc5fbbe,0xbd60a399,0x3d1a2e0b, -0x3d9c7148,0x3dcdd2d6,0x3e3b9fee,0x3ea9bb52,0x3eb61c16,0x3e54a185,0x3e1f9ac6,0x3df10d49,0x3db9d82c,0x3e20c38e,0x3e25bc39,0x3e0536ba,0x3e00992a,0x3dbe0853,0x3dc722bf,0x3d242f20,0x3d007e84,0xbbefe35d,0xbd02e74d,0xbc88d6fe,0xbc95f87f,0x3b83341c,0x3c35c82b,0x3d0542a0,0x3d1b059a, -0x3cefea39,0x3c7739c2,0x3d2afeef,0x3d00761c,0x3ca6a263,0x3be89718,0xbc0111b4,0xbcc12fc8,0xbcedadc5,0xbb1dfb15,0x3d237ba5,0x3d95d871,0x3e2174e3,0x3e85ba27,0x3e9e6e45,0x3e90341a,0x3e0db099,0x3d81327d,0x3cb83f7b,0x3d1513fa,0x3d99a2ad,0x3dfe5d83,0x3e1b8cff,0x3e101dd5,0x3de906cc, -0x3d9a2313,0x3d4166c5,0x3d4d18ee,0x3c136f23,0x3ba7c81e,0xbc18adf6,0x3c1bb66e,0x3b7695aa,0x3ca0919b,0x3d22efd3,0x3cebbd49,0x3cba126e,0xbb5fc88f,0x3cb5a2cf,0x3c9db909,0x3cbc9f28,0xbaab0907,0x3af5817c,0xbc752849,0x3cc62060,0xbd8a4f85,0x3d3dde1e,0x3e56bbfd,0x3e8994fc,0x3ec696d4, -0x3ea8e5a4,0x3e803769,0x3da10821,0x3e03c87a,0x3dd52b05,0x3de7467a,0x3d8829d5,0x3d2e4c71,0x3d845f42,0x3d4570f8,0x3d4d6d18,0x3d7a60ad,0x3d5a969e,0x3d2c0d26,0x3c5715e3,0xbb974853,0x3c9e604e,0xbb4e915d,0x3c8aa405,0x3cc648a8,0x3cdfeb35,0x3c9474a4,0x3c40b3c9,0xbbcd6255,0x3c85b864, -0x3ca9aa88,0x3d11ff85,0x3c7631ab,0x3ca50353,0xbcb3db75,0x3b793000,0xbd0dbc40,0x3d95e690,0x3e8249b0,0x3e5fc020,0x3e8d4b04,0x3e83f1ec,0x3e7a4f2a,0x3e275518,0x3e19e81a,0x3e2af034,0x3e5de2dc,0x3de2d6e9,0x3d4a66b2,0x3d86484a,0x3c81a645,0xbbfd9392,0x3b7cc19d,0x3c947115,0x3d46f2ab, -0x3d95ad44,0x3cbcc11c,0x3cc8571f,0x3aa02834,0x3b75e9ec,0x3c65d130,0x3cb76c2c,0x3c91ea64,0x3c94e82e,0xbbab1fbe,0x3c47f47a,0x3cb66776,0x3c9010b1,0x3ceb2fdf,0xbc7f474d,0xbb810d86,0x3d1af5e1,0xbdbf9ae6,0x3dc82e82,0x3deeb2cd,0x3dfa716d,0x3e2dab09,0x3e128f71,0x3dc692f7,0x3d179c65, -0x3b9adc42,0xbcea5d28,0xbd0ca62a,0xbd1c55e4,0xbc369b35,0x3c8922bf,0x3d3fb249,0x3d7f6095,0x3d7e8fd5,0x3d81d121,0x3d834017,0x3c6d9edb,0x3bd163b9,0x3d57bf15,0x3d062616,0x3d0b878b,0x3cafcd3d,0x3c6c7c28,0x3c89e0aa,0x3c25459b,0x3ca63fdd,0x3c7e0d3f,0x3cdc0038,0x3c88bf00,0x3c43e1a8, -0x3ceea5fc,0x3c33c4da,0x3cea7fdb,0x3cd27c24,0x3d0673a4,0x3da40f9c,0x3d9ad76e,0x3da6a0de,0x3d8747d9,0x3d548415,0x3d1869ac,0x3c95f33f,0x3c11255b,0xbbb3366a,0xbb858d9f,0xbb9b808d,0xbc123b7e,0x3c3fce77,0x3cb72103,0x3d1384b7,0x3d2056a3,0x3d3ea491,0x3d6394a8,0x3cbe4910,0x3bf73d80, -0x3c881614,0x3c675c10,0x3cb5a72d,0x3c9e2918,0x3c69088b,0x3c3d195d,0x3c8e7aba,0x3cb89708,0x3c93c992,0x3cb51742,0x3cc325b5,0x3c7ffac9,0x3bcd78c4,0x3c36dceb,0x3c805481,0x3d9321c7,0x3d5d7409,0x3d77539a,0x3d91a451,0x3d5548aa,0x3d29b3ab,0x3d05b817,0x3d10b483,0x3d032702,0x3ccf4f28, -0x3cabd059,0x3c560395,0x3b297fe5,0x3c224aa1,0x3c69475f,0x3cc555ec,0x3cff7c70,0x3d1ee11c,0x3d2a834c,0x3d30f59f,0x3ce5a011,0x3ce1b053,0x3cc42a81,0x3cc34350,0x3cc08957,0x3c9045cf,0x3d69b9e5,0x3c7a185d,0x3d3832cc,0x3cb7cd3c,0x3d04ffdf,0x3d120bab,0x3c894b0d,0x3d0953fb,0x3d4a1783, -0xbd4de798,0x3d7e768d,0x3d739b83,0x3d606758,0x3d3e6dcf,0x3d606d83,0x3d6b57eb,0x3d6e2287,0x3d33a23b,0x3d091f04,0x3cd1d92c,0x3c8b2255,0x3c3775bc,0x3ad9b6d9,0x3bf71e2a,0x3c34243f,0x3c1aa0bc,0x3c2c2f2a,0x3c1d8e49,0x3ca94ec8,0xbb84b947,0x3c57b92a,0x3c3d402f,0x3c76bb0a,0x3c0946c2, -0x3c29d28c,0x3c2d8ec2,0x3c8d6b85,0x3ba06d50,0x3c913f13,0x3d2a3b40,0xbbe91ff5,0x3d13703d,0x3c2a5d9f,0xbd1d8e27,0x3d84af92,0x3d13ae17,0x3d830d59,0x3d3c0970,0x3d47c175,0x3d46da3f,0x3d42feda,0x3d35effd,0x3d3ac89e,0x3d37071c,0x3d33ab6c,0x3d2b0b02,0x3d209df4,0x3d14b509,0x3d057958, -0x3d0b7aec,0x3d0d6f6d,0x3d16296a,0x3d1edf37,0x3d1da53c,0x3d34737d,0x3cf46094,0xbbc6216f,0xbd6cac53,0x3d11c3ae,0xba573e7f,0xbd8456f6,0xbd8fbf68,0xbd81faef,0xbd75690e,0xbd8f3334,0xbd88ab7e,0xbd5927ed,0x3bc954d7,0x3d28f920,0xbd7afd02,0xbc894a2c,0x3d83de31,0xbde84204,0xbdca11dd, -0xbdf64f6b,0xbdb0f466,0xbdb6edf7,0xbdba73f3,0xbdbb84e1,0xbdbc02e9,0xbdb82ee5,0xbdae815a,0xbdad723c,0xbda92789,0xbda726ba,0xbda76a07,0xbdabaa94,0xbda89623,0xbdab010b,0xbda4f575,0xbda90ea6,0xbd9ec002,0xbdb309a8,0xbd5ffa54,0xbc707e73,0x3da08fbc,0xbd8f4445,0xbc8e12a6,0x3da072ad, -0x3d9c4178,0x3d9284aa,0x3d719d04,0x3d9a2754,0x3d90bac2,0x3d585ada,0xbb83a652,0xbda2509a,0x3d8896bd,0x3c4f5286,0x3deb96ea,0xbdb00235,0xbe05c830,0xbe0d1694,0xbe14ffad,0xbe232201,0xbe222963,0xbe1a3763,0xbdffa2df,0xbdf24bca,0xbddd8788,0xbdd1ba7f,0xbdd8e86a,0xbde5f4ed,0xbdd2fd7f, -0xbddd8eb3,0xbdcbc390,0xbdc86dcf,0xbdc0e9d4,0xbdd10bb9,0xbc5109e7,0xbd1cea29,0xbc23deca,0xbcf817e3,0xbd84ff54,0xbab78bcb,0xbd11b929,0xbc0b7abf,0xbcfc321c,0xbcaf7966,0xbd9b8db3,0xbcacd76f,0xbc8d3a9f,0xbd11aca2,0xbc3b440d,0xbcf8664b,0x3bccc157,0xbe3091ab,0xbe1d3f02,0xbe3418ff, -0xbe38d9fd,0xbe47edb8,0xbe44a357,0xbe3542cf,0xbe199d5f,0xbe074655,0xbdfff789,0xbdf08afd,0xbdedbcc5,0xbdf52b59,0xbdf44f04,0xbde38147,0xbdd74ec1,0xbdca7a3d,0xbdd66895,0xbd92fd0f,0xbc9b854e,0xbd06e123,0xbd5506f3,0xbc8c1b45,0xbc6373e2,0xbcc97a84,0xbc20b33a,0xbd98ae2a,0xbc8dd74e, -0xbd1cabb6,0xbc05e981,0xbd183059,0xbd34f5cd,0xbd025c6d,0x3b289cda,0xbdbe5cdd,0x3d953f5f,0xbd1f9633,0xbe79ef67,0xbe53ac64,0xbe816f13,0xbe8a91b0,0xbe8ea1c2,0xbe85eef1,0xbe462843,0xbe251d1b,0xbe0fa886,0xbe07c760,0xbe06b8e8,0xbe13229e,0xbe03dceb,0xbdf70906,0xbdd2cf7e,0xbdcdca5f, -0xbdbf2236,0xbd9590e4,0xbd3a201e,0xbd59a55b,0xbc8c0ffd,0xbd0b9cc7,0xbb1b0909,0xbc20f20a,0x3c28fe4b,0x3c0d585f,0xba9987be,0xbc369ed4,0x3ac42bbc,0xbd04aadc,0x3cc6447a,0xba46d19b,0xbcf17ff5,0xbd0155dc,0xbd853c5b,0xbdee4a2c,0xbe8c44ed,0xbe81df5f,0xbe853c7a,0xbe967a36,0xbe938621, -0xbe88b448,0xbe66f725,0xbe32c513,0xbe318806,0xbe196b40,0xbe171aac,0xbe1d70b1,0xbe10847d,0xbe03f5d5,0xbdd6db46,0xbdde307f,0xbdc98be9,0xbd96cb2c,0xbc384f15,0xbd25a8e9,0xbcc8b6cf,0xbc8506cb,0xbc0e1473,0x3c6bd4dd,0x3bd72b68,0x3c677b19,0x3a0aa72b,0x3cb75b00,0x3c07d08f,0xbc130f9c, -0xbc6ea6e7,0xbd26b63f,0xbd02864c,0xbcc99913,0xbd744bc5,0xbdbd00b0,0xbd02aeab,0xb9dee5e3,0x3c4e0ad1,0x3d7b0995,0x3d034f57,0x3be9283f,0xbd81cdb7,0xbe1f5f1c,0xbe36cd5f,0xbe3b7b76,0xbe3fa7a2,0xbe1c0c49,0xbe4a6f68,0xbe2b4730,0xbe05149f,0xbdc4a6a1,0xbdab75db,0xbe021c56,0xbd875954, -0xbd50979f,0xbcb34170,0xbcc8f2b5,0xbaa75d4c,0x3cc348ac,0x3c1b1d9e,0x3c41de60,0x3cbf4f05,0x3c53e337,0x3aabaf63,0x3a8d148e,0x3c5f8cd1,0x3caf0923,0x3d271d0e,0xbd3db9bf,0xbc6d57e4,0x3d80a131,0x3d615339,0x3d2fde45,0x3db9508e,0x3c5272a9,0x3d37e512,0x3d852a28,0xbceb4d38,0xbd35cc60, -0xbb37207f,0xbc65bf11,0xbc3ffaa0,0xbc9c4c4c,0xbcab0d27,0xbd62cd2b,0xbd8de44c,0xbdbfd29c,0xbdefb2cc,0xbda46e71,0xbd506da6,0xbd9328f6,0xbd17a36f,0xbce85023,0xbbd830b8,0x3cb90f93,0x3c4dfff8,0x3cb26794,0x3c804bbe,0x3d20bcf4,0x3d14a26f,0x3c9cd544,0x3b7ae32a,0xbca89a52,0xbd1430b3, -0xbcf30bad,0x3d0cc059,0x3c5fbfcb,0x3c72a497,0xbcbd5f3b,0xbdc9144c,0xbe19990d,0xbe425cde,0xbe448773,0xbe0a1bb6,0xbde44a0e,0xbd83bcda,0xbda21824,0xbda42a25,0xbd952cb2,0xbd83ec74,0xbd28381a,0xbd04dee7,0xbc9ec020,0xbc79f5ae,0xbd0cd6ea,0xbcaea096,0xbccb2ca3,0xbca3a14a,0xbcc4a7ea, -0xbc0f0779,0x3d07173d,0x3c89019f,0x3c0515b0,0x3ab244d8,0x3cdf20d9,0x3cba6fb5,0x3c858575,0x3b9d1f5b,0x3b625c4b,0x3ccc31f0,0x3c0cea4b,0x3d461500,0x3cc9164f,0x3cdae3c6,0xbd6f9858,0xbe8c44b2,0xbe557f71,0xbe5ed033,0xbe0582d0,0xbe01dae8,0xbdd0dd86,0xbd8047ea,0xbdd1e42a,0xbddc0646, -0xbd5cade5,0xbd890fad,0xbd2ccc9d,0xbc865fde,0x3c97d2a9,0x3c759b5c,0x3c75e1cf,0x3c8b508d,0x3c6bf1e5,0x3c341b19,0x3b3154d7,0x3b317b9d,0x3d4dc05b,0x3bab2d46,0x3b9207b1,0xbb41f1cd,0x3c0a2d99,0x3c3902a9,0x3cb5a931,0x3c12b968,0x3ae8646c,0x3cb467da,0x3c90bfb0,0x3d2406f0,0x3d7d76c4, -0xbd751166,0xbe16792b,0xbeae9e0b,0xbe286a54,0xbd644279,0x3d59fc04,0xbcd4ee51,0xbc9ff4da,0xbc909c90,0xbd2165d1,0xbd223a31,0xbb1a2a24,0xbcfe0a69,0xbd37c6c1,0xbd5e9635,0xbd64e814,0xbd15bd54,0x3c8e9a1b,0x3cb65822,0x3c9cb103,0x3d4dd4e1,0x3cc591e8,0x3ca18ad2,0x3d296133,0x3bec101c, -0xbb183e3e,0xbbe30c72,0x3b7a8074,0x3c6ae3ac,0x3cb8d777,0x3c2aa929,0xb897c174,0x3ccb9716,0x3bada4d8,0x3dfc5435,0x3d372225,0xbe82b434,0xbe67c477,0xbe4c23e4,0xbe1904fc,0xbe224f77,0xbde875ce,0xbe1ab6d5,0xbe338365,0xbe3ee301,0xbddd4067,0xbd8f1fce,0xbde73aff,0xbd156477,0x3ba06a2f, -0x3d1c79ac,0x3d7abf54,0x3d0f14c6,0x3c199686,0x3cc5a425,0x3c623bab,0x3c482225,0x3c8132d9,0x3c990a12,0x3cbb2b05,0x3d0b6466,0x3ce19ea9,0x3aa4ff70,0x3c29a843,0xbaf90d89,0x3cae724a,0x3c15bfb0,0x3d0ee464,0x3d2738bb,0xbc0ddf42,0x3db2ad5f,0xbd99bcd1,0xbde35e3c,0xbdba09bc,0xbdb81d4f, -0xbd7b8d72,0xbd378e77,0xbd593916,0xbd2e46dc,0xbd0c3be8,0xbd1385ae,0xbd650c72,0xbd72150e,0xbd8d3b9e,0xbd1092ea,0xbcda9d21,0xbc95e8d7,0xbc5967f5,0xbc607e24,0x3d114295,0x3d4b759a,0x3a72ede4,0x3d158cf1,0x3c28f521,0x3c1e81a9,0x3c69beeb,0xbc1c4ad0,0xb9974249,0x3b384d95,0x3c3b453d, -0x3bced930,0x3b90ee64,0x3d00c4f7,0x3c30832c,0x3c14f463,0xbc74961b,0x3c5b9fa2,0xbcd6929b,0xbdb7cf7d,0xbd5d4397,0xbd2e75c7,0xbd250b6b,0xbd4cc6c4,0xbd71c959,0xbd51620a,0xbd6bf206,0xbd4dc127,0xbd212b5a,0xbce7ff07,0xbccd4cdd,0xbc2f7132,0x3bd14eca,0x3c95dfc6,0x3c59011b,0x3a2130db, -0xbb7aac53,0x3cf3fb52,0x3ce4b158,0x3bada58d,0x3c898296,0x3c08e9f3,0x3bb3e665,0x3c86b870,0x3c86d389,0x3ccb914f,0x3c241571,0x3c22d98b,0x3bc79263,0xbab34e8e,0x3b00e028,0x3c61950f,0x3a47d826,0x3d21bb74,0xbcfc0c82,0xbccd0ab2,0xbcac0eea,0xbd140add,0xbcfc58e4,0xbcc73e02,0xbc9319f9, -0xbc7a7af8,0xbc3c8a61,0xbbde4c51,0xbc0cfa7f,0x39e0ed3a,0x3c2eef65,0x3c1451d0,0x3c1fd498,0x3c3eae5c,0x3c16fd1a,0xbbcf5e1a,0x3bce3df4,0x3c05b3c7,0x3bdcc420,0xbb3f2a4c,0x3b2d8479,0x3c0da8c5,0x3c2f2b9a,0x3ca3c29b,0xbbbe6cf9,0x3d2415f8,0xbb0a6f01,0x3c9f4844,0xbb5298eb,0xbc040022, -0x3cb3f6f8,0xbb49fba4,0xbc46b308,0x3daab355,0xbb497a6b,0xbb1b5a29,0xbbe30503,0xbb950d23,0xbc461fab,0xbcb907dc,0xbd0541fb,0xbcba5acf,0xbc64e6e1,0xbbba2961,0x3ba643b9,0x3c48de0d,0x3ca2935f,0x3c8a9bc9,0x3c6af276,0x3c4f21e0,0x3c4c55e5,0x3c6053f1,0x3bd4b293,0x3ccb17cf,0x3c995c5f, -0x3ce28fa8,0x3cd1db2e,0x3cd740d3,0x3ce2d759,0x3cec013f,0x3cde8f8e,0x3d0dea19,0x3d0c765b,0x3b2caaf1,0x3d841235,0x3d1410ec,0x3d231324,0x3da553e6,0x3c13a1fb,0x3c6ee584,0xbca9a4f5,0xbc103d8e,0xbc50ca79,0xbc77370d,0xbc7d7120,0xbc4bf1fd,0xbc46dbba,0xbc1331ad,0xbbffd6ca,0xbbd70412, -0xbbb85a14,0xbb950a79,0xbae4dad7,0xbb723cce,0xbb85cde5,0xbba39a0d,0xbbdf5869,0xbbf18842,0xbc5a4c2d,0x3c351482,0x3d236d8e,0x3d6c7875,0x3c21ac2e,0x3d2bfd5f,0x3d8915fb,0x3d959b9a,0x3d8dd24a,0x3d892a1e,0x3d9ffc8c,0x3d9e3b5b,0x3d82dd1b,0x3d082167,0x3b7a08f8,0x3d84a52d,0x3d5e8711, -0xbc01d83c,0x3c7c00b8,0xbc198231,0x3d4df5d0,0x3c83ad92,0x3c8becab,0x3c9adca6,0x3ce10dc9,0x3cec9cdd,0x3ccd0660,0x3cd71830,0x3ccf9a0c,0x3cbc8aaa,0x3cbd9e4c,0x3cc1bbfa,0x3cc881b4,0x3cd70d91,0x3ce252c0,0x3ce4d197,0x3cdbbe80,0x3cad7cca,0x3d149377,0xbd066a7d,0xbd954cfe,0xbdf70cd2, -0xbc250519,0xbd87b8dc,0xbdf610cd,0xbdf562d9,0xbdead960,0xbdd63504,0xbe01cbdd,0xbdfb744a,0xbde7a248,0xbda84cc8,0xbc0525e3,0xbdde7fb6,0xbdc377fa,0xbe28b9a8,0xbcf60caf,0xbbaadbac,0xbb890418,0x3b8664b0,0x3d376049,0x3d682d64,0x3d47af9b,0x3d6be726,0x3d538d48,0x3d23353c,0x3d0a7ace, -0x3cf7389c,0x3cfbd9fa,0x3d056fd2,0x3d132d08,0x3d1d3dc6,0x3cedcb8d,0x3ceb1a18,0x3d468764,0xbd94ddba,0xbd128e76,0xbd511118,0xbd437d16,0x3acb6c55,0xbd2c9769,0xbcd31246,0xbd683475,0xbcfabddd,0xbd3943e5,0x3cf48a84,0xbd3571ec,0xbd4f1a33,0xbd520fd7,0xbd976483,0xbd552260,0xbdf194ed, -0x3b3e605b,0xbc7f0243,0xbc696101,0xbb99a08d,0x3d6320a7,0x3d99770f,0x3d48a4dd,0x3d8ac29f,0x3d71c5f3,0x3d2e4bd8,0x3d09f35d,0x3d0e22d4,0x3d17efb6,0x3d483227,0x3d49bcbd,0x3d70d4f3,0x3d075cf5,0x3d4f5191,0x3bc3873d,0xbdaf50ce,0xbd0faffe,0xbc8a76a9,0xbd0a44e4,0xbc86ba4e,0xbb43a159, -0xbc388822,0x3d3a68bc,0xbd0d83a4,0x3c7c1e37,0xbd0f4120,0xbc299e83,0xbcc1dd39,0xbd2496f1,0xbda0643e,0xbcd23e6a,0xbe31c413,0xbe00b93c,0xbcbc2a81,0xbd6319c0,0xbcc8e0d4,0x3d8cf7fb,0x3debcf53,0x3dbfe21e,0x3dff3a57,0x3dda73cc,0x3d8ebfc1,0x3d492d6f,0x3d1d491a,0x3d368942,0x3d5cd2a5, -0x3d6c3cd5,0x3d886c53,0x3d28ce2f,0x3d32524b,0x3cc83126,0xbcc5c468,0x3c6f23b0,0xbcbea5e6,0x3ca89863,0xbbeed08c,0x3d0c9ead,0xbc3b6aa5,0x3b50a202,0x3a70e745,0x3ce19ea4,0xbbc1b3da,0xbbb27ff8,0xbd63383a,0xbd5e07ba,0xbda1a221,0xbd7d34d8,0xbd86c2f2,0xbdb72da1,0x3c945917,0xbd0d964a, -0xbcc73445,0x3db25945,0x3dd906f4,0x3d97bcdf,0x3dfb5596,0x3dc69bc8,0x3d72baad,0x3d102196,0x3d2d4b0a,0x3d4fa968,0x3d97ce6f,0x3da9b3db,0x3daecf31,0x3d555a63,0x3d4b09a2,0x3cb6d6d0,0xbdced800,0xbc8f4582,0xbcdc3edb,0xbaac397f,0x3c66bc9b,0x3c8af80f,0x3ce623a7,0x3cb76dcb,0x3cc5ac97, -0x3cbdc182,0x3cb258ce,0xbc1ba844,0xbceb906e,0xbd12d51c,0xbd7ac078,0xbddec691,0xbc3bda63,0x3e28531e,0x3eb8802d,0x3e6c499f,0x3d3839a7,0xbcc169d1,0xbd8e9e80,0xbe10b514,0xbdd95bdd,0xbd85aae6,0x3b26c6f8,0x3d45b225,0x3d353077,0x3cdadf86,0x3d60d5d8,0x3d6ff3f7,0x3d793ded,0x3d2ec590, -0x3d486bf4,0x3d21c5bf,0xbd023447,0x3ce880d0,0xbca38357,0x3cabaf9d,0xbb7e4fc1,0x3ce5262c,0x3bd0f46f,0x3bf6ea48,0x3cbe643e,0xba4c7e31,0x3b55f06c,0x3d00a828,0x3d4e1e83,0x3ca119b0,0xbce9108d,0x3d780689,0x3da4a3f4,0x3e039af5,0x3db6c9e4,0x3cb975c1,0xbd301a90,0xbd2313b4,0xbdb0e4ab, -0xbdd019e6,0xbda79d50,0xbd2ef165,0x3d393f65,0x3d32b1c6,0x3d897485,0x3dadb3dd,0x3dea12a3,0x3dfc339e,0x3e0c829d,0x3dc3c62e,0x3dd7c531,0x3ae2a4c6,0xbda6ed7e,0xbcc948f2,0xbc83d077,0x3bd40ef9,0x3c962a5c,0x3d14e092,0x3ca31fb6,0x3ca8ba3a,0x3c78ded9,0x3d0dac5b,0x3d2da4b6,0x3c149e39, -0xbb6d159f,0x3d124ed5,0x3d933880,0x3d3ff1fd,0x3d601f12,0x3db2378d,0x3d196aa6,0x3c54cf41,0xbbb9e206,0xbb10749f,0x3cf21526,0x3de95fe3,0x3c19d1e4,0x3a43d60a,0x3d1b6080,0x3ccf8b9a,0x3d187c97,0x3d90c32e,0x3d862c2e,0x3d5264da,0x3bb9c597,0x3cef1579,0x3d35498d,0x3d080b2c,0x3c997a89, -0xbb27aec9,0xbbae93c9,0x3c841f39,0x3c3786e5,0x3d4e66ee,0x3b89f41f,0x3bab246d,0x3c1260e4,0x3d061429,0x3cff3234,0x3d437001,0x3d2195ab,0x3d14b4f8,0x3d6f62c6,0x3cd72877,0x3bacde19,0x3ccbe4ae,0xbd041bc9,0xbd219ce8,0x3d54ee00,0x3dbf8e52,0x3e2129e8,0x3e3f58ab,0x3e043ed6,0x3da5dc66, -0x3c50c458,0x3d02476f,0x3c178cc1,0xbbae089b,0x3b8f9283,0xba1e5318,0xbc777d72,0xbb3dac4b,0x3cad7bfb,0x3c8b2648,0x3c83b0f3,0x3ce3e13e,0x3ce6896a,0x3be36b63,0x3cf4f828,0x3d60a1a5,0x3c239a4f,0xbb6bff34,0xbb822e9f,0x3cc4ae53,0x3cbc8bad,0x3d516120,0x3bc0b871,0x3cb37261,0x3c8fc4e8, -0x3d3472ac,0x3d118a29,0xbd286928,0xbcd67aed,0x3ac396ca,0x3dde2e79,0x3d295024,0xbc0fa8d2,0xbd046978,0xbda4b69c,0xbe11458f,0xbe1a0c44,0xbe126779,0xbdc141f0,0xbdc3cdf6,0xbc9d1baa,0x3c54785f,0x3cde2dd7,0x3cfa11f3,0x3d0413b9,0x3c6ef3a9,0x3cb0f6fd,0x3c8537f4,0x3c717f85,0x3c8d427b, -0x3cb2f399,0x3d3a74b8,0x3c6225e5,0x3c17ee82,0x3b93d851,0xb9d3ed5c,0x3bf65dad,0x3d1eb174,0x3ccb91b7,0x3ca848e2,0x3bf8ac06,0x3cb6dc30,0xbe04d66a,0xbd8d53ff,0x3dc289d3,0x3d12e3f0,0x3bc047f1,0x3d931d69,0x3de43292,0x3da08a54,0x3d19f079,0xbb1d58cb,0xbcd3e304,0xbd81cda7,0xbccdb98f, -0xbc70106d,0xbd00719c,0xbd0dd963,0xbcee2a6e,0xbd08cb67,0xbbfc0c88,0x3c27b93e,0x3b9121a1,0x3c83791d,0x3cd405ef,0x3c8e3796,0x3c63f131,0x3ca694a2,0x3c91fed6,0x3cb5a336,0x3cc0c07e,0x3c459983,0x3c7edf34,0xbba10426,0x3c010782,0xbbbf4842,0xbcc615c9,0x3c7e8be0,0xbdb25e08,0xbd1696d5, -0xbc48a32f,0xbccf59a7,0x3c5ba540,0x3bc92e6e,0x3ce872b3,0x3d8be795,0x3cdba7b2,0xbc13807e,0xbd41d80f,0xbc89af90,0xbc375321,0x3c124326,0x3c8e1617,0x3c9bb9e3,0x3c8ed9f1,0x3bc929b3,0x3a018cd0,0xbc41916f,0x3b34dcda,0x3c44ba09,0xbc5dc7d4,0x3c5a2352,0x3c90a113,0x3b8f09f3,0x3cfb72e2, -0x3c990e6e,0x3c9de6c7,0x3c5d8492,0x3c861c00,0x3c9bd04e,0x3b95db24,0x3ca0d5de,0xbb0537a7,0xbb1dd189,0xbd71940b,0xbd09718f,0x3cbfdca2,0x3b2812a6,0x3c8615b0,0x3c797b6b,0x3d20a2d2,0x3d8ab657,0x3d6b7fa6,0x3d69cd88,0x3d34e830,0x3d0475b4,0x3cc39628,0x3cab8ae0,0x3cc36f5f,0x3c8e706b, -0x3cb56bbf,0x3c78d0d7,0x3c8d7ef0,0x3c23bd32,0xbb21cc1f,0x3aa683f6,0x3c3c71a0,0x3b80bd3c,0x3c52bf87,0x3c80ec7b,0x3b83b1cd,0x3c17e7e4,0x3c8d13af,0x3c8103f0,0x3c275d28,0xbbef2758,0x3bc79325,0xbb424c8e,0xbd011f96,0xbcc8252e,0xbd0c99f8,0x3b675e22,0x3c85f730,0x3c6b9c11,0x3cc9361b, -0x3d074b00,0x3d0a2ccb,0x3d05b9be,0x3ceff029,0x3cfcb0ea,0x3d226f0e,0x3cde8ff9,0x3c8f7a35,0x3b80ea07,0x3c2aabc9,0x3c8163ae,0x3cc0267e,0x3c9a8f3f,0x3cf667f8,0x3c3d85f8,0x3bf70c7e,0x3c118eda,0x3c878363,0x3c601035,0x3c488572,0x3c964442,0x3c6e9ef3,0x3d07154e,0xbc02e79b,0x3c9cd0ea, -0xbbd891e9,0x3c116b46,0xbb84d275,0xbcf3731e,0xbc5e2bcc,0xbbbaf25e,0xbc432c1a,0x3c7a2348,0x3c7ec9b2,0x3cbaba70,0x3cd218ac,0x3d047177,0x3d233d96,0x3d55c6df,0x3d4a6b82,0x3d2cd6cf,0x3d0d2c07,0x3d0d7eaa,0x3d17f695,0x3d1d883d,0x3d155bcc,0x3cf6a1ec,0x3cf636d6,0x3ce00195,0x3cc81c2f, -0x3cee1440,0x3c68696d,0x3c99de76,0x3c4fa3e2,0x3c9b8b2a,0x3c86c75e,0x3c533fc8,0x3c09e3e2,0x3b6cf2fb,0x3a355e9b,0x3b1b2bc4,0x3ce7b25a,0xbc606498,0x3a354def,0x3c42f13a,0xbbfcadab,0x3c2215db,0xbc4d4cae,0x3c84a074,0x3c73cd08,0x3c834a8c,0x3c8c912f,0x3c9c90ee,0x3c969b51,0x3c95a47d, -0x3c8a001f,0x3c9f2b56,0x3caf600d,0x3caad463,0x3c96acce,0x3c8900f1,0x3c85f610,0x3c920ade,0x3c95847b,0x3c9454a0,0x3c8eea14,0x3cae8c1b,0xbb2f883a,0xbc9a9d8d,0xbc8a5e02,0xbb848823,0xbcb2e041,0xbca3521e,0xbcc19999,0xbcaa2cdb,0xbc99c320,0xbce891a0,0xbcf2a326,0xbcb2e803,0xbcaa561c, -0xbbd0fb5e,0xbca0a4c5,0xbcf3ee03,0x3c76be3a,0xbb527a17,0x3d18b10d,0xbc1a9ea7,0xbb165aac,0xbb154b35,0xbb0cfe90,0xbbb74cf0,0xbbfa8c69,0xbc1741d2,0xbc14d8cf,0xbc05c71d,0xbc04001d,0xbc1ca79b,0xbc27d5f8,0xbc2d9e54,0xbc228201,0xbc1c6479,0xbc05fdd7,0xbc10b076,0xbbdd4bbb,0xbc57af0a, -0x3d0bfa16,0x3d45a8ab,0x3cc76bac,0x3cd6ea71,0x3d4b8ea8,0x3d06eab0,0x3d08d9c5,0x3cfc2fe5,0x3cf120bf,0x3d29a7f7,0x3d24bcde,0x3d1f01c4,0x3d535383,0x3cd45d72,0x3c9b5d56,0x3d48a656,0x3c2f42e9,0x3b476fa0,0x3c1ee042,0x3c5ae31a,0x3c013ec9,0xbc607f43,0xbcbbe162,0xbd0312eb,0xbd14d5ef, -0xbd081eb6,0xbcc286a2,0xbcaceba4,0xbc8952ca,0xbc7e193f,0xbc49b274,0xbc245a56,0xbbfb95a0,0xbbf2e4a1,0xbc376e50,0xbc90f92b,0x3d156467,0x3c8418ac,0x3c9023fb,0x3d223a67,0x3c9f2c0b,0x3cbc7c5a,0x3cb8d4a6,0x3d10b243,0x3cce0605,0x3cf75b2c,0xbc1f82d8,0x3c8edda8,0x3c98f747,0x3cb67b66, -0x3ca0a9fb,0x3c46bd89,0x3d0e3fc0,0x3d2bac7b,0x3cff7c6d,0x3d36f5e5,0x3d096002,0x3b50aa39,0xbc788ee0,0xbcf0a129,0xbce722a9,0xbcdaa847,0xbc83c89b,0xbc8d0916,0xbc98e555,0xbc912ae6,0xbc865337,0xbc47b084,0xbc1eda81,0xbbbc7439,0xbcadc494,0x3c428d01,0x3d5685da,0x3c8b5f73,0x3cbc1448, -0x3cf4e8db,0x3c9f620b,0x3d0ee72b,0x3c844a7d,0xbb39f220,0x3d436bbc,0x3bedbe7d,0x3d03400f,0x3bbae6e9,0x3c894095,0x3c82a2d6,0x3c8139cd,0x3c898b68,0xbb6d52ae,0x3c9ed531,0x3dab7e81,0x3d84663d,0x3d711ee0,0xbc523fe0,0xbd510995,0xbd9c990c,0xbdae491b,0xbd9dcbd5,0xbd2b9685,0xbcfa93c8, -0xbc9a6ce6,0xbca308d3,0xbc7311b2,0xbc066df5,0xbbb0d25a,0xbc129496,0xbcab54b2,0xbb14fca7,0x3c21d6f9,0xbc91c762,0x3c36387e,0xbb146e13,0x3cb8a51c,0x3c86a4d5,0x3cd122d5,0x3c1fb925,0x3c56421f,0x3b01bf57,0x3c5893a5,0x3b51149d,0x3b343173,0xbc0bf67b,0x3c773bd4,0xba85a9dc,0x3ca982d1, -0x3da44570,0x3dd8b65b,0x3dfaa787,0x3dc412b3,0x3d15adc9,0x3be1cf7c,0xbd2b7609,0xbd33b4b9,0xbd2b7789,0xbc9dc480,0xbc92b70b,0xbcd9dacb,0xbcb6c84e,0xbcd17a1d,0xbca2bd70,0xbc6efb87,0xbc69c62f,0xbcbeae1f,0xbbac5caf,0x3d238922,0xbc05b9a5,0x3bbb8cf7,0x3a973bf5,0x3a8f439a,0x3cb82999, -0x3bc9ec44,0x3c474d9c,0x3c360a99,0x3cbc3bb7,0x3be5ffca,0xbbe10ddb,0xba2afdc8,0x3c51a506,0x3c5659df,0x3d08d0f4,0x3e8118a1,0x3e350c40,0xbdb7670a,0xbd4ad846,0xbdefd858,0xbe1979ec,0xbe16b49b,0xbd89e060,0xbcdaf486,0x3d8f7cd9,0x3dc663b4,0x3df7b995,0x3e29f597,0x3e30f88b,0x3e1dfff9, -0x3dd9c65f,0x3db92a98,0x3d423326,0x3c065592,0x3c1bb455,0x3cb56e24,0xbc5c7949,0x3c0f397a,0x3a8ba75c,0x3c96a480,0x3ccae5f2,0x3b92cd89,0x3b8a217e,0x3c9b8b5f,0x3cc6c600,0x3d471fd0,0x3d94f262,0x3d26249e,0x3d8e4991,0x3dd5524f,0x3e241f98,0x3d559e9a,0xbc92c0ef,0xbcdb546d,0x3c914dbe, -0xbd21cb62,0x3e127f9e,0x3e49bd9f,0x3e21686b,0x3e139f5b,0x3d70361b,0xbb8f6304,0xbb9a4589,0xbc9b51c1,0xbd050826,0xbd10bf7a,0xbd358f4b,0xbddade23,0xbd205e3b,0xbcfd3aa8,0x3d06f371,0x3d878e5a,0x3d2dda77,0x3cbde319,0x3c9e4ad7,0x3c6e3ec5,0x3ccb62c0,0x3cd0ec20,0x3cd98f5d,0x3c354b24, -0x3d069a3a,0x3cf2b76f,0x3ccb73fe,0x3d797a40,0x3d784fc9,0x3d6e61c1,0x3d741846,0x3d99aaeb,0x3c4c7137,0xbd000a40,0x3d2cc72c,0x3d7e7c36,0x3e0ec625,0x3e0d4498,0x3de14d01,0x3cbb6f9d,0xbd033c59,0xbd8063e3,0xbda67f84,0xbdb9f9fe,0xbded6239,0xbdc8e0c4,0xbd8beb50,0xbd2939e3,0xbb82d9d6, -0xbc52a62b,0x3bbfde4b,0x3ce351c7,0x3c93b8f0,0x3d1155bf,0x3c1d82a2,0x3c8d1d1f,0x3d76629e,0x3bd370b2,0xbbdf920a,0x3bb1d20d,0x3ccfe88d,0x3d0dbf02,0x3d81ce10,0x3d170067,0x3d1a4728,0x3d54088a,0x3d96af86,0x3d32abe3,0x3c0a20d1,0x3cd9c9c5,0x3dbf796b,0x3d8b4ae4,0x3d5a4089,0x3ca1d6b2, -0x3c8f30ec,0xbc869005,0xbce1600a,0xbcb4828f,0xbd16344d,0xbca120b9,0xbd41e225,0xbcfc90f5,0xbccc7a8f,0xbc21b367,0xbc85e794,0xbd039beb,0xbad641d0,0x3c861b3d,0x3c0f5f19,0x3c305907,0x3ccd55a1,0x3c88ba2e,0x3d9a3793,0x3a697a8b,0xbba06e46,0x3ca42015,0x3b727920,0x3cc3b25b,0x3d7d0faa, -0x3cf8daeb,0x3b52e54d,0x3d1f1260,0x3b64b6ba,0xbbdcde57,0x3d5edfa3,0x3e1adc2b,0x3e1a2953,0x3cb8ff44,0x3d73ac97,0x3d5e9d68,0x3b2a3568,0x3d90ebbd,0x3dc37b7f,0x3d718a31,0x3dae02e4,0x3d9110e6,0x3db8b0ec,0x3d5dc29f,0x3d042230,0x3b2feb20,0xbb43d35f,0xbc47d924,0x3c875658,0x3c9d4c2a, -0x3c817966,0x3c27b6c5,0x3c9df65e,0x3c9e3989,0x3d213a22,0x3c9788ed,0x3c393475,0x3cc461df,0x3baefe3f,0x3c653dda,0x3ce02df6,0x3cad7f9e,0x3ce4a786,0x3c972cae,0x3c6c99d3,0x3dfae4e8,0x3dc9311d,0x3da82bdd,0x3dbd44a2,0x3cf17553,0x3caaede2,0xbadc0758,0xbbcde11f,0x3c5c6abe,0x3d03aff0, -0x3d44e3a9,0x3d899fc0,0x3d1bf919,0x3d8f98c9,0x3d52a91b,0x3d26e380,0x3c013c8c,0x3c34b31d,0x3c54cbf7,0x3b295c05,0x3d02a2ed,0x3cc271a6,0x3b7c0061,0x3c6ed968,0x3c19f6ef,0x3cb06e79,0x3c8b4895,0x3bf85886,0x3c9a51fc,0x3c9807e1,0x3caf12ad,0x3d35adfe,0x3c9a68e4,0x3c830ced,0x3d163c93, -0x3c37f9ab,0x3d2ffc37,0x3dcf0b18,0x3d392930,0x3c97622b,0xbc898604,0xbc3056c6,0xbcd83b6e,0xbd6872cd,0xbc2bff62,0x3c813d5b,0x3d25277c,0x3ccd23a1,0x3d3636a6,0x3d90ed89,0x3d87e58d,0x3d4e155e,0x3c15d82e,0xbc29ba11,0xbc34a39d,0x3c5df490,0x3b5527c3,0x3bd93ff0,0x3d097504,0x3c71f5ed, -0x3c7cb313,0x3cba71b6,0x3b92dc53,0x3ca32c77,0x3c61fb17,0x3cdcf4f8,0x3cf0e049,0x3cf9d5a3,0x3d0c67ae,0x3cf2994f,0x3d355241,0x3d746f8e,0x3d362444,0x3cd7aa6f,0x3b8e7d2e,0x3b9f1afc,0x3b1e2fc1,0x3b215680,0xbbd41121,0xbce0b2db,0xbbb368fb,0x3b7fd452,0x3ca7d257,0x3ca7753d,0x3ccad3c2, -0x3d0e8b6d,0x3cf614a1,0x3ca449b8,0xba80dbbf,0xbb2a40e6,0xbc065e1d,0x3b34cb09,0x3cc27400,0x3ca35edf,0x3cb0fb57,0x3cbddcc8,0x3c70ef15,0x3c85a0fe,0x3ce35077,0x3c978f0f,0x3c04e8a6,0x3c7a074d,0x3c6b1d17,0x3cb458b0,0x3c80aab3,0x3ca312ce,0x3d11180c,0x3cf318eb,0x3cd4c7da,0x3bfbe665, -0x3b866e21,0x3c97adcd,0x3cc5251c,0x3c3eb2ac,0x3b8c2c04,0xbb4387ea,0x3b430cd0,0x3bb49e3b,0x3c1e74dd,0x3c387f26,0x3c4758bd,0x3c3c5254,0x39979c14,0xbb11070a,0xbbe61fcd,0x3a8c02df,0xbc474362,0x3b1b110e,0x3c9970a2,0x3c6087e5,0x3ca95226,0x3ca8420c,0x3cd93366,0x3ceee15b,0x3c9ca29d, -0x3c026fcd,0x3d2ea430,0x3c1d64f1,0x3ce3db6a,0x3c3cbc6b,0x3cd88757,0x3ce21832,0x3ceef1b9,0x3c916079,0x3cb2991f,0x3c832787,0x3c5535d3,0xba648da6,0xbc4ce0dd,0xbc4b6d07,0xbc866add,0xbcb123d5,0xbcb3f51e,0xbc9c93b6,0xbc93b93a,0xbc8d6108,0xbc7eedc6,0xbc2b37c0,0xbbe7ebc4,0xbbbcdf50, -0xbc1f892e,0xbc44f141,0xbc7a946c,0xbc24f41d,0x3cc7ad1a,0x3c97a71f,0x3cccb662,0x3cabaddb,0x3cd1b19f,0x3cc7907f,0x3d1002b8,0x3d23f8ed,0x3d0df8fc,0x3d1ffb6b,0x3cbae9ae,0x3d278efe,0x3d246581,0x3cc9574f,0x3cba5806,0x3d06791d,0x3ced634d,0x3bcbb6fa,0x3bc95d03,0x3c0822ad,0x3c0d712f, -0x3bfb1a47,0x3bb8e89a,0x3b9948aa,0x3ba7f2c2,0x3b7f7e2a,0x3b5d491a,0x3b7d4ae9,0x3b7f915b,0x3b4022a1,0x3a307620,0xb960b165,0x3a809fe4,0x3b0db935,0x3b368754,0xbbd20cc5,0x3ca6f28f,0x3d01b021,0x3cb4310b,0x3cd61485,0x3d141de3,0x3cb94e4e,0x3cc20851,0x3c98ff4e,0x3c8de07f,0x3ca95413, -0x3ca5583b,0x3c8a162b,0x3cf29539,0x3cc676aa,0x3c584d5c,0x3cfc6f11,0x3c764b61,0xbcc93545,0xbd4d169c,0xbc946a84,0xbca11134,0xbcaf37f3,0xbcbbb8dd,0xbcb168e7,0xbca71ebc,0xbc9b8bfb,0xbc887794,0xbc7a0bd6,0xbc4c1bc4,0xbc6401b5,0xbc768acc,0xbc8d7d77,0xbc69924a,0xbc594322,0xbc3f57d5, -0xbc42543b,0xbc47db47,0xbc1893ad,0xbd2735d2,0xbd1dbb6a,0x3bb78ce1,0xbd1dbd31,0xbd260dbc,0x3b244dec,0xb96e5ef3,0x3a7a3e24,0xba814ecc,0xbbd2f222,0xbc18cba8,0xbc629f4e,0xbd2aeb5e,0xbd1e26b9,0x3b7965a1,0xbd13d08e,0xb91993fd,0xbc8025e5,0xbd197a65,0xbd36551a,0xbd436ea8,0xbd4030fa, -0xbd2d1354,0xbd093a36,0xbc9bdfe9,0xbc82422c,0xbc698637,0xbc79d4ef,0xbc9c407a,0xbcd15bb4,0xbc82390b,0xbc811cf3,0xbc43c79a,0xbc61837d,0xbc26679e,0xbba92938,0xbce0542a,0xbcabef46,0xbc2c5068,0xbd08539f,0xbccc7467,0xbb770d1f,0xbcb6771b,0xbcdea6b9,0xbcbe4f6b,0xbcd500c4,0xbbe30d45, -0xbc812403,0xbc9cfbae,0xbcbb1c27,0xbca3abd1,0xbcbec828,0xbcd747d8,0xbd53587b,0xbd52ede6,0xbd988fe8,0xbda0cf9f,0xbdabf634,0xbd93b330,0xbd660466,0xbd1f7660,0xbcc116fe,0xbc4d0786,0xbcaf42e1,0xbcd5fcd2,0xbd1b7451,0xbcc5dc3d,0xbc8affc8,0xbc042eb0,0xbc4e998f,0xbab0ad87,0xbc8bd094, -0xbd1f6c07,0xbc64e4fb,0xbccd451d,0xbc96373c,0xbbb180f4,0xbc2ba957,0xbb2d5f47,0xbc1f19ba,0xbd08047a,0xbc1117c1,0xbcad314f,0xbc16dac5,0xbc42498d,0xbc369942,0xba864635,0xbc61f81f,0x3d17191b,0x3befc1b8,0xbdd84d91,0xbdc02250,0xbdf02382,0xbdee84c9,0xbdcbbbd1,0xbd96d6f9,0xbcebcc6b, -0xbbf8668e,0xbbce285e,0xbc2a985a,0xbcbaaeb0,0xbd358e73,0xbc99953e,0xbc4b9ea1,0xbb400096,0xbb51becc,0x3bc8b348,0xba4f40e6,0xbc2b609a,0x3c09bd70,0xb9bca28e,0x3c17eeb6,0x3b0575c2,0x3cd8014f,0xbbbc22ab,0x3bc7f2ef,0x3ac66f5b,0x3c1e4660,0xba8ae6bb,0x3a58868c,0xba9bab49,0x3c0cf2ab, -0x3bf23fcb,0xbb89613b,0xba1a81db,0xbcd0dba1,0xbe067113,0xbe11156e,0xbe17eae9,0xbe2cf008,0xbe170014,0xbde42ad8,0xbd98a7f9,0xbcd949eb,0x38fd558c,0xbc761254,0xbd07cfc9,0xbd76b32c,0xbd01455b,0xbc93dd2f,0xbaba6068,0xbbdb2db7,0x3bae9094,0x3c18df3c,0xbd240e67,0x3c5b903c,0xbbcddb06, -0x3c28f496,0x3c801821,0x3cffcf30,0x3cc074f3,0x3c50284e,0x3c284df0,0x3c52ef05,0x3c5699d9,0x3c09ca03,0x3ca5928e,0x3cb09ce1,0x3d0f1b7f,0x3d16f0a9,0xbd5fc2dd,0xbe1c977e,0xbdfbe770,0xbdd98836,0x3caeec48,0x3ca3ff8d,0x3d4c932d,0x3dd9215e,0x3d8f637e,0x3d0794aa,0x3d06998b,0x3c870552, -0x3bc83d7b,0xbcd477f6,0xbd904158,0xbd8f25c9,0x3c4fbb94,0x3c68139e,0x3cc84782,0x3c7d6bf8,0xbb41f542,0x3cb55cb5,0xbc522e7c,0x3c6765f5,0x3b89902f,0x3cc03442,0x3b428b59,0x3c50ea7a,0x3d021c15,0x3cf8c7db,0x3cea766a,0x3c20247d,0xbcce9198,0xbcf253a1,0x3be25288,0xbd785b26,0xb9d7bb77, -0xbc88aaa1,0x3c3b6956,0x3c44deed,0x3cdf8608,0x3be4db64,0xbb91d9a4,0xbcadf84f,0xbd8ab936,0xbdbc28e7,0xbe0ff66a,0xbe274324,0xbe1eacfa,0xbe11634e,0xbdc2d1ed,0xbd97b136,0xbd533e76,0xbd49fc37,0xbc2fc26c,0xbcc8397f,0xba8bb1b9,0x3c2c923c,0x3b94aca6,0x3c3b96f7,0x3c526ffc,0x3ce763fd, -0x3ca5c18f,0x3c82b014,0x3b1e615d,0x3d075c73,0x3d08fe75,0x3c96de34,0x3d3274f9,0x3cea5ee2,0xbc46c188,0x3b9ecf67,0xbd2d734d,0xbd1a93ca,0xbbea22d3,0xbd122a39,0xbdf34b21,0xbe0a9267,0xbde03b99,0xbd6aafb6,0x3cda0ecf,0x3d0bd1e5,0xbcfbf0b8,0xbd326282,0xbda4d5dd,0xbde1f149,0xbde2f299, -0xbdd6a70a,0xbda31fcb,0xbd8ea813,0xbd202a9c,0xbc95c09b,0xbc534c71,0x3ba9537b,0xbb8883e5,0x3b9f081b,0x3c45e99f,0x3d7cf85f,0x3bae248a,0x3bcce354,0xb7bd4956,0x3c8ce6ce,0x3c98c3bb,0x3d4afba4,0xbadb4319,0xbbf97c33,0xbc921b04,0xbbda2d09,0xbcd655fe,0xbcfb5dfb,0xbd88810b,0xbe151767, -0xbe8f1ee5,0xbe6914a8,0xbe55fc28,0xbdf4881d,0xbd96fe10,0xbd1a3eee,0xbcf06254,0xbc42d43a,0xbcba7ccc,0xbca6ad3b,0xbcf6fb67,0xbd038c57,0xbd178eb9,0xbca2575c,0xbbb09856,0xbc6ee518,0xbcde4b7d,0xbc159e76,0xbc50e016,0xbc021b71,0x3bf8ac1e,0x3d734c13,0x3bd6b087,0xbbc2e85b,0x3ba54102, -0x3b0ba59c,0x3c178581,0x3d3dad27,0x3b3bf933,0xbc880b17,0xbc758b62,0xbd089ce1,0x3c9f31aa,0xbd5cb27b,0xbe35a9c9,0xbe6205ee,0xbe9313cb,0xbe53114c,0xbe29523e,0xbdc4d836,0xbe25ec63,0xbe229f0e,0xbe015fab,0xbd8bd826,0xbcd033c5,0xbc13c785,0x3b492cf4,0x3b71896e,0xbbc4295b,0x3c097dec, -0x3c92dbbb,0xba739e5f,0xbb1fb915,0xbb80cc6c,0xbb0bff72,0xbbc59b2a,0x3b1d3331,0x3cfee71a,0x3c640fa9,0x3bbbcf20,0x3cb9decc,0x3a93eaba,0x3b8aeca1,0x3c7afa6b,0x3bd517aa,0xbc2ac177,0x3c2f8011,0xbc4521d5,0xbd4ec51d,0xbdbe1c2f,0xbe419ca4,0xbe3d334e,0xbe4fe766,0xbe342e25,0xbe177500, -0xbdc3559b,0xbdba21c4,0xbdd4c42c,0xbe0f038f,0xbde0470e,0xbd94b929,0xbd7a38af,0xbcbe9516,0x3b7cc222,0x3c822a7a,0x3a2e63f0,0xbc79b144,0xbc8fefa8,0xbceadf10,0xbc884c0b,0x3c4ee26e,0x3bfa9ef6,0x3c1e93c7,0x3b9e29af,0x3a7fd9d7,0x3b85d301,0xbbaa44e4,0x39e3ef86,0xbbbba439,0xbaa1873f, -0xbc52c6d0,0x3c5dbb9b,0xbc2dfdd9,0xbbd95fef,0x3d1c31a4,0xbda47d12,0xbdbf5c76,0xbdb627f2,0xbdc7f5df,0xbd1e7bcf,0xbca596d7,0xbd07b2cb,0xbcc696be,0xbc11156e,0x3c263ace,0x3aaef29f,0xbce3c2b5,0xbd6f0346,0xbd5a5eb4,0xbd1ec9b9,0xbca2d409,0xbb39cbec,0x3b5c4585,0x3c36eb2a,0x3bbd6654, -0xbb3b69c5,0xbc9a6e76,0xbb06c157,0x3a25e7b8,0x3bf914ea,0x3c27e02f,0x3c0b9d97,0x3ba4b33a,0x3c68efe4,0x3be4411f,0x3b8f61df,0x3b84c64d,0xbbf222ba,0xbbad7bbd,0xbd116f99,0xbcd52ec0,0xbd03de82,0xbd56ff5d,0xbd388bce,0xbd092476,0xbcc455ff,0xbcc29f96,0xbcece083,0xbd070856,0xbd17504b, -0xbd1de4ba,0xbd03f47a,0xbcb0cba2,0xbcab6f19,0xbca1b08a,0xbc4538ae,0xbc89baa3,0xbc569f95,0xbc455124,0xbc96cbec,0xbc7cd016,0xb9a71051,0xbb1bb022,0x3b8d33be,0x3c3601f5,0x3c4b2936,0x3bb6a170,0x3bf3b260,0x3b92923a,0x3b173d59,0x3b9e11a5,0x397fcdf3,0xbb7e68e8,0xbb8d529a,0xbc054246, -0xbc482a11,0xbc7c3b65,0xbd0503ed,0xbc83e4c7,0xbcbfc1ad,0xbcf6866d,0xbd09982d,0xbd0581e6,0xbcebb4b1,0xbd0d7c7f,0xbd1e6040,0xbd52b557,0xbcbfab2b,0xbbf3b551,0x3c68ef7b,0x3bd09ca5,0xba0445f7,0xbbbad5bf,0xbc4fa9c7,0xbc2d9e37,0xbc972146,0xbca08904,0xbb00cbb9,0xba422a80,0x3b9a832e, -0x3b1158a6,0xbb6a63e6,0x3bfd6eb4,0xbbfb045c,0xbc45e638,0xbb792d27,0xbbd14a97,0x3a3634ea,0xbc5053ac,0xbbb862b3,0xbc919c69,0xbc98afeb,0x3cb902ae,0x3b31fbbd,0xbc149f71,0xbc3dcdfd,0xbc2f466e,0xbc459b1e,0xbc79b8a3,0xbcad592c,0xbc69e086,0xbbe3caeb,0xb8d09b5f,0xbbc37752,0xbc756c26, -0xbc9eb15f,0xbc9335c3,0xbc41d209,0xbbf52b80,0xbb7c387c,0x3b823847,0xbb846a4e,0xbc86f7c9,0xbc62557f,0xbc8d373b,0xbc85d2fc,0xbc26460d,0xbbb58c56,0xbc08181d,0xbc3fcb39,0x3a64e73b,0xbada4cc1,0x3898088a,0x3c684538,0xbb9879b3,0x3c26515a,0x3cc57d30,0xbc4bd568,0xbcbc3b1e,0xbbd2a05e, -0xbb1468c4,0xbb61623f,0xbbb2ebfc,0xbbefd0a9,0xbbfa5656,0xbc0d03b2,0xbc0e6d3a,0xbc30c847,0xbc39a677,0xbc0cf756,0xbb4dc08a,0xb942f26e,0x3a4a48ca,0xb97ae54a,0xba1e5438,0xbadc7f56,0xbadf19c8,0x3b45c59f,0xbc870a02,0xbc7ae47a,0x3c3d11cf,0xbc87825c,0xbc7fdf3c,0x3c5a2763,0x3c8433fe, -0x3c82fb45,0x3c7769a2,0x3c86527a,0x3c6c6ae9,0x3c3155d0,0xbc7ce55d,0xbc940ed7,0x3c41649b,0xbc3a503b,0xbb51e5fe,0x3d414f53,0x3d3c5319,0x3cfe295e,0x3cfdd4bf,0x3d0cf508,0x3d12affb,0x3d2515eb,0x3d28f2d2,0x3d1dad27,0x3d176402,0x3d0fe29a,0x3d04071b,0x3d089de4,0x3d0b2379,0x3d0e6621, -0x3d0920bd,0x3d0a8116,0x3d054b15,0x3d09537a,0x3d0272f4,0x3d0aa72f,0x3d231a1f,0x3ca9c622,0xbd2a3596,0x3d3eec34,0x3cd32707,0xbd160b4c,0xbd153066,0xbd12b1e6,0xbcf0ffc6,0xbd094570,0xbcf1e660,0xbca1dbab,0x3cadad24,0x3d42641e,0xbce6be52,0x3c5bb5e0,0xbc7c2dca,0x3cbc868f,0x3cce4b24, -0x3d144828,0x3d3ef7e1,0x3d9cba84,0x3da7591c,0x3d8da0d3,0x3d866932,0x3d749c7f,0x3d411b08,0x3d2ef245,0x3d28f7c7,0x3d31a0f9,0x3d19324f,0x3d27583d,0x3d1a7afe,0x3d25d29e,0x3d19c75e,0x3d11b3ce,0x3c7cbca8,0x3cc163d4,0x3b7996ed,0x3cf7a9b7,0x3d345092,0x3c269602,0x3ceb9a3d,0x3c92624f, -0x3cb9a7fa,0x3ca544cf,0x3d016ecd,0x3c64f92b,0x3ca1e37a,0x3ca8e32e,0x3c4faab7,0x3c5ca75c,0x3c251987,0x3bf602aa,0x3c5b0bb1,0x3d04b136,0x3d3ae139,0x3dc9ace2,0x3de5fb48,0x3db235ca,0x3da93d96,0x3d832688,0x3d357b95,0x3d3a18b6,0x3d368a7d,0x3d3fce7a,0x3d3a7a1c,0x3d301360,0x3d292fdd, -0x3d3692bd,0x3d286dbb,0x3d1124d2,0x3cffb9fa,0x3cbdbd8f,0x3d06863a,0x3ce6cee1,0x3cbb7a2a,0x3d1a903d,0x3c96d920,0x3d385e8b,0x3d097013,0x3cda2420,0x3cb12620,0x3ceb5561,0x3cd008f1,0x3cbd4228,0x3c8c0e59,0x3cdb5a32,0xbcbcb69f,0xbd4b1e76,0xbcc16470,0x3b260686,0x3d1b0a96,0x3e107c47, -0x3e29a926,0x3e004be0,0x3dfd8ae0,0x3dbecec4,0x3d5eca0c,0x3d349600,0x3d1947f2,0x3d2c311a,0x3d172d6b,0x3d173551,0x3d096579,0x3d286c87,0x3d0b96b0,0x3ce169a0,0x3cf46ee8,0x3ca7ddd0,0x3becab6c,0x3cbfe3a1,0x3cdcc072,0x3cfce338,0x3cd35cbf,0x3c246ef9,0x3c2b896c,0x3c6d1c09,0x3c6ca988, -0x3c9ef308,0x3c90aa6d,0x3c4c47b8,0xba942aa5,0xbba3a6f5,0xbc4a82c8,0xbd899046,0xbd30b367,0xbc43d1fb,0x3ca41d4e,0x3e1c1684,0x3e378aa8,0x3e0f76da,0x3e0677d1,0x3db4e268,0x3d2eab39,0x3d371bda,0x3d4e6d1e,0x3d654665,0x3d5658b1,0x3d50e646,0x3d3f2101,0x3d68a90d,0x3d2e154f,0x3cea6df3, -0x3d20e820,0x3c7b11dd,0x3c92d7b9,0x3c6f9073,0x3c94e14c,0x3cc755f9,0x3c698c05,0x3c4885cd,0x3c46a233,0x3c711b3d,0x3c6278fb,0x3c0c3f0b,0x3c410f53,0x3c0ffdea,0xbba9a119,0xbc76f02c,0xbd69b12c,0x3d81922a,0x3e1401e0,0x3dd35e4e,0x3dbbc484,0x3d0f02ad,0x3ccd0d71,0x3d2eb362,0xbaf7c79a, -0xbcfa87e2,0xbd42dd1a,0xbd973fee,0xbdb73cce,0xbdd3a81b,0xbcae7a1a,0x3aa23fc2,0xbdaa27da,0xbd1df838,0xbb25317d,0x3d85866c,0x3d2b2c0c,0x3cab35f1,0x3cb04ec0,0x3cb5e62b,0x3cbfb2e0,0x3ceb8886,0x3c70695a,0x3c361d78,0x3cde1667,0x3ce105a6,0x3c8f17b4,0x3abbd7f2,0xba2f16b0,0xbc345dc9, -0xbce37608,0xbc096fab,0x3d44dc38,0x3d6190d7,0x3dec69f1,0x3defa0ec,0x3dc92d30,0x3d6e5083,0x3cffbcec,0x3c87dff7,0x3be96ffd,0x3ca6c3f2,0x3d0b5bfd,0x3d16d98c,0x3d1d082e,0x3d5806fc,0x3d400a9a,0x3d844886,0x3e062172,0x3dbc26bd,0x3d8a9e35,0x3d4e8ffc,0x3c5ec3c2,0x3cccf29c,0x3c270bc2, -0x3c94a96c,0x3ca49555,0x3cee110c,0x3c883285,0x3c913406,0x3c880021,0x3d113e6d,0x3cfd1310,0x3cdb4588,0x3ce2e5d3,0x3d3253e9,0x3d432ea4,0x3d205fdb,0x3c19a1f7,0x3d90f2a3,0x3e00d315,0x3dbf4d37,0x3d775995,0x3dd57892,0x3dfac5c6,0x3e0da8f9,0x3d82f89b,0x3d631159,0x3d9ba490,0x3de0c9b3, -0x3e0bf66b,0x3e15a5ce,0x3de4c564,0x3dacfc25,0x3d0ffa5d,0x3d003eed,0x3cb8ef71,0x3c83cbd3,0x3c2d8f91,0x3c1cc315,0x3c9c89ee,0x3cf12cfc,0x3ce1bd14,0x3d565e97,0x3c87671a,0x3b0c14ef,0x3b9fca2f,0x3c8811e6,0x3c9a84da,0x3d416e21,0x3cafa253,0x3c68cb7b,0x3b88be9d,0x3a31d2ef,0xbc7f9192, -0x3ce899a8,0x3db5c367,0x3dd0c506,0x3e543f69,0x3e10c9cb,0x3dff7a24,0x3dd9abce,0x3d676b96,0x3d6fb7bf,0x3da0bb90,0x3dde0233,0x3e06c173,0x3e024299,0x3de768ee,0x3d993be4,0x3c8a4774,0x3d0e0333,0x3d1e5551,0x3c3db9e3,0x3c8f181e,0x3b38b8ab,0x3c8e0204,0x3c3ef22e,0x3cae9f96,0x3d55cad3, -0x3c552c8a,0xba3e505e,0x3c3a58a3,0x3bc53dff,0x3c848764,0x3d54a4e6,0xbbc36010,0x3bfd2660,0xbcbe3b3c,0x3cc52283,0xbc72b552,0x3d445d47,0x3e09a740,0x3e3379b4,0x3e995812,0x3e189aa3,0x3dab3958,0x3cbf8307,0x3d51a87e,0x3d3cdc69,0x3d9c2641,0x3d8a2449,0x3d8e2da7,0x3d6c44ce,0x3d98dcfa, -0x3da3a45f,0x3da8c0b6,0x3db0ce10,0x3d9731ec,0x3d042259,0x3c90341d,0x3cb89853,0x3c069249,0x3cb53965,0x3cc82c59,0x3d1c7c9e,0x3c41ec81,0x3b900276,0x3ccb109f,0x3c287b61,0x3c1f46b0,0x3ccb659a,0x3c5da2b1,0x3d03f802,0xbc27a08b,0x3cd4b558,0xbcab5293,0x3d1ffd63,0x3e52638b,0x3e2b40f1, -0x3e166d47,0x3df93613,0x3e038c2d,0x3e09c653,0x3e035da7,0x3e0d184d,0x3e113a4e,0x3da92ada,0x3d4c612e,0x3d4f2edf,0x3ccbe71d,0x3c44f0bb,0xbb12155b,0x3c7cb127,0x3c975f0e,0x3d002c19,0x3c6ba398,0x3c6ec3a8,0x3be7e7d8,0x3c0c316f,0x3c57edf2,0x3c927f6d,0x3cb467e7,0x3c855044,0x3bdb2a3e, -0x3c1ed855,0x3cb743d6,0x3cc81cda,0x3cdf112f,0xbc6c7dd3,0x3c17753f,0x3c9a4045,0xbd57f71a,0x3daaea3b,0x3dc97082,0x3da66fd9,0x3d8a5229,0x3d5ec8d8,0x3d4bc4c0,0x3d906400,0x3caaa983,0xbbd8e5a7,0xbc09a0f8,0x3cd0f78a,0x3d23a06c,0x3d3121d8,0x3d0a19bf,0x3d03c19b,0x3d1f326b,0x3d0cfe91, -0x3d1bb285,0x3c274b12,0x3b91221a,0x3ccc6685,0x3cc01e26,0x3cde36dd,0x3cb71445,0x3c2c26d5,0x3c45f52c,0x3c476805,0x3c871170,0x3c71c922,0x3c812167,0x3c70d4d2,0x3ba93ec1,0x3cbbb374,0x3cc1532a,0x3d235473,0x3b9e501b,0x3c6ff275,0x3d6236f7,0x3d05d471,0x3c8c229e,0x3d0e7a37,0x3d488f92, -0x3d951866,0x3d45af07,0x3d22b752,0x3ccb2a30,0x3ca91302,0x3c6253a3,0x3bb7eb6e,0x3b5e6450,0xba048ddd,0xbb15865f,0x3b1777d3,0x3c43e7b0,0x3cb0a2ee,0x38d2330a,0xbb7b2a05,0x3c218b57,0x3c26473b,0x3c47cee5,0x3c4ed18e,0x3c435313,0x3bfc68b9,0x3be8c625,0x3c7a729a,0x3c829718,0x3c8706e7, -0x3cb0def7,0x3c88fcb2,0x3c75c7a2,0x3c151ef7,0x3a0e469b,0x3ce64677,0x3c9edd67,0x3cd02991,0x3d0ba723,0x3d26dfd0,0x3d3d5fd8,0x3d697363,0x3d55163a,0x3d403080,0x3d2706fd,0x3cd57aca,0x3c61fb0b,0x3b8625dc,0x3bd3bb0f,0x3ba09b69,0x3b6d0d1c,0x3bfba965,0x3c032b7f,0x3c2fc996,0x3c826780, -0x3c2de89c,0x3c5492f9,0x3c36522d,0x3c6f391f,0x3cc674ec,0x3c240b38,0x3d04af02,0x3c56ea5a,0x3cc60067,0x3c75ddd8,0x3cbc61de,0x3d0454ed,0x3c250152,0x3cf89977,0x3cd5282b,0xbc244c3c,0x3d0215a6,0x3d2257f9,0x3d3403b3,0x3d3193a9,0x3d531b44,0x3d633f13,0x3d7dd442,0x3d44c1c7,0x3d1d0d23, -0x3cf402bc,0x3cd0d30d,0x3cb71e85,0x3c6c7f1c,0x3c88d224,0x3c99b9ae,0x3ca4edcd,0x3caf155b,0x3cb0b219,0x3ce92140,0x3c2a7428,0x3ca11376,0x3cb5c59d,0x3ce1a4d8,0x3ca93bc0,0x3ca5f641,0x3ca7a82f,0x3cbb1e59,0x3c369baa,0x3c747fde,0x3c8f6b6f,0xbbbd6319,0x3c3ada0c,0x3b7f1161,0xbc761d38, -0x3d08a30d,0x3d1270d7,0x3d1215b0,0x3cf9bed7,0x3d076f3e,0x3d0fec5a,0x3d16d686,0x3d172480,0x3d24503e,0x3d1e09e2,0x3d1ccea6,0x3d15a4d6,0x3d0825a2,0x3cf0e8bc,0x3cd68d83,0x3ce14c58,0x3ce27d92,0x3ce5e72f,0x3ce89a6e,0x3cdd3ca8,0x3cfac5b9,0x3d0a46af,0x3c88b472,0xbca6520a,0x3d1310f7, -0x3c9ea354,0xbc9bd342,0xbcb6e786,0xbc9e480f,0xbc88bcd2,0xbca13e78,0xbc89e05d,0xbc26fdd1,0x3cb3b2a5,0x3d15d0fa,0xbc6f37ef,0x3c3ff00f,0x3d5a2e9d,0xbd728361,0xbd2afb2c,0xbd5e62b6,0xbd2340b3,0xbd2c9eb1,0xbd2fc28e,0xbd4bf421,0xbd56e6ad,0xbd4dac48,0xbd4bbfa7,0xbd4a66eb,0xbd430179, -0xbd3d20da,0xbd39faeb,0xbd39b7b0,0xbd395296,0xbd3ee11a,0xbd3d85e3,0xbd3de89d,0xbd2d7fc8,0xbd50d227,0xbcb88dd8,0x3c0cd695,0x3d91483f,0xbd0e1ebd,0x3bbe703c,0x3d93294f,0x3d9007f8,0x3d881661,0x3d68c6a3,0x3d8dc515,0x3d8664db,0x3d61b80a,0x3c4f3e8e,0xbd2506c1,0x3d66b1d9,0x3ca6536e, -0x3d1ad7c8,0xbd7795f3,0xbd5ff076,0xbd74eb14,0xbd831c70,0xbdb37763,0xbdbf0006,0xbdaddc12,0xbdad857c,0xbda829cf,0xbd936448,0xbd8884bf,0xbd837654,0xbd83b297,0xbd75a85d,0xbd7d48c8,0xbd763b53,0xbd613ef2,0xbd563da0,0xbd7beba8,0x3c1c8173,0xbc41d4bd,0x3c0063f7,0xbb4352bc,0xbcfec849, -0x3c63a38b,0xbc3444b1,0x3c0ea0c6,0xbbcde9a3,0x398fa529,0xbd25c4b6,0x3ba4bb12,0x3a37955d,0xbc1d8f55,0xbb157816,0xbc81791d,0xbc96ec3a,0xbd7e51c4,0xbd389403,0xbd540d79,0xbd6a78da,0xbdc93fbe,0xbdf1ab68,0xbdc9ed11,0xbddb5130,0xbdc97450,0xbdb45793,0xbd9c18c2,0xbd9074ab,0xbd86c60a, -0xbd8ccefb,0xbd899280,0xbd91b969,0xbd6a6981,0xbd80cc38,0xbd1e9ac3,0x3c20c4d8,0xbbf68082,0xbcc7c243,0x3b43f3cf,0x3b99eb80,0xbc0954c6,0x3b6bdb52,0xbd346f3e,0xbb082aa3,0xbcabfed8,0x3b5431a8,0xbc3ee4ce,0xbc872728,0xbc739675,0xbbb86b72,0xbd718f44,0xbd475a49,0xbd6f9f70,0xbd71ff33, -0xbd91308a,0xbda918f3,0xbe0dbc57,0xbe2c22a9,0xbe13abe7,0xbe220018,0xbe1560ed,0xbdeb03dc,0xbdd39a24,0xbdb27c39,0xbdb499ee,0xbda85634,0xbd9e3a8a,0xbd9a89bf,0xbd7d17fd,0xbd6342e5,0xbd348d60,0xbc9c9d74,0xbcf1fa9a,0xbbb735fe,0xbc0c3956,0x3c6754b7,0xba92a281,0x3c625ef2,0x3c125556, -0x3bd4869f,0xbb55e077,0x3bc7f3be,0xbb424071,0x3c45df62,0xbbf535fe,0xbcf43041,0xbd31cd11,0xbdaf8837,0xbd802a5c,0xbd18c117,0xbd1283c0,0xbd085495,0xbe03ac53,0xbe28325c,0xbe108257,0xbe2c413b,0xbe1abb9e,0xbe067aea,0xbdd3eceb,0xbdc05753,0xbda6fef2,0xbdbbe36b,0xbdb49772,0xbdb2abd1, -0xbd8e304f,0xbd7dadb7,0xbd37793f,0x3cbe674d,0xbc279d92,0xbc195b4a,0x3b824a90,0x3c332559,0x3cb97864,0x3c34672a,0x3c07705b,0x3b28525b,0x3c7def35,0x3b9f12af,0x3b8fbf73,0xbc0ed815,0xbccb94f9,0xbcdea550,0xbd69a01c,0x3c020889,0xbcd14324,0xbda76fcf,0xbdbb5035,0xbe2d9b83,0xbe3eeef1, -0xbe4d126e,0xbe044fee,0xbe10135a,0xbe0e3393,0xbe2d7350,0xbe09b7e0,0xbdc066a5,0xbd20b53d,0xbd39b0a9,0xbd47b1df,0xbd920f5b,0xbd3e98c9,0xbd5a7f90,0xbd88c991,0xbc8a66ba,0xbd06cb5e,0x3bf87025,0xbc1397dc,0x3c13e760,0x3ca7d4a1,0x3c6c4207,0x3c5bf382,0x3c749193,0x3bcced1a,0x3bdb02f9, -0x3c30f87a,0xbae15921,0xbc211d5d,0x3b8ff9e0,0xbd3f3dfb,0x3d226693,0x3d625610,0x3daa93c8,0x3d4686bc,0x3a1f0335,0xbdb7396a,0xbd92b569,0x3c6667b0,0xbcdebf1e,0xbcabdecd,0xbb98c325,0xbadea743,0xbc929a39,0xbcf88f16,0xbd439906,0xbd84256d,0xbdd5cb69,0xbdb9c750,0xbdd1433f,0xbcf30aee, -0x3cdcf849,0xbc69bf04,0xbc014526,0xbb24642e,0x3b8ff25d,0x3c9553d0,0x3c0d98ae,0x3bbe39f0,0x3c30660a,0x3ca00999,0x3c74fd97,0x3c9e9b02,0x3cab19ec,0x3c8253e3,0x3ce9dbed,0x3d03861e,0x3d95a2c5,0x3cbb2381,0x3cb0bcb9,0x3c8324a8,0xbd0adf69,0xbdc5b115,0xbe10791b,0xbdd859f7,0xbd8f6872, -0xbd229413,0xbd59254c,0xbd9aa626,0xbdbdbac2,0xbdd0ba34,0xbd8cf68a,0xbd303aab,0xbd54ecf1,0xbd0b0613,0xbd21e181,0xbd12e806,0xbc78984b,0xba8a7358,0x3c10c250,0xbc2ebe1a,0x3b327f6e,0x3d28f551,0x3c3fe9db,0x3b6f69d5,0x3b48a530,0x3bae76d0,0x3c4e53f7,0x3d31eec6,0x3cd711da,0x3cd9c5e7, -0x3cf83e5d,0x3d18ca3c,0x3d47221d,0x3b86ba84,0xbc77e9fc,0xbca89874,0xbe087ace,0xbe05e21e,0xbe213202,0xbdbc0758,0xbd9cbc47,0xbd8c5544,0xbdce8dec,0xbdfe21d0,0xbe048542,0xbe03ee09,0xbdc99f08,0xbd89af57,0xbd15325b,0xbca1dc71,0xbcb932d4,0xbb349b02,0x3bbabb70,0x3c1a5df9,0x3c2979a6, -0x3c82fefa,0x3c0aabbf,0x3d2f3910,0x3be7b5ca,0xbb2fb0c6,0x3c4ec540,0xbb853c5e,0x3c44aa1d,0x3d11a8db,0x3cda95ab,0x3c916dcd,0x3c8c4e6c,0x3a6a4fbc,0x3d0c45bc,0xbb12f90b,0xbd178557,0xbd8c99eb,0xbe34b61e,0xbe0d63b9,0xbdb466ac,0xb9fb10df,0x3bf85c50,0x3d3a0b96,0x3d24d3ec,0x3d0d5d32, -0x3c6fbb94,0x3c909b8c,0xbca34cf5,0xbd1016e6,0xbd21387f,0xbd201291,0xbcf5d34a,0x3b9990c5,0x3c628149,0x3c135486,0x3cd07e32,0x3ccde04f,0x3ca25d8a,0x3cab0dc5,0x3b42cbd3,0xbb84abe8,0x3c4aba5c,0x3b8424a0,0x3c32dfec,0x3c3748c0,0x3c52be6c,0x3bf38b7e,0x3ce0f49f,0x3c16ff62,0x3d912af8, -0x3cdcaf9b,0xbe2736d9,0xbe02b27b,0xbdc5cb50,0xbdf08b74,0xbe073b96,0xbdc86f32,0xbdb79a5b,0xbdb20d36,0xbda9bd50,0xbd37b197,0xbd4ead9c,0xbd86e15e,0xbcc932a1,0xbbc241d8,0xbc903645,0x3ca72867,0x3c1b46a9,0xbca8c8e6,0x3c3f1bf8,0x3b67973c,0xbbc8a50f,0x3c1cbffd,0x3c23e4de,0x3c66f3de, -0x3c984f9c,0x3c1a180a,0x3968f0ff,0x3bf63767,0x3bce130e,0x3ce7ecdf,0x3be0eea1,0x3cfd657c,0x3c9e9b73,0xbc784bb8,0x3db0eb6e,0xbcf6676c,0xbd1fc474,0xbd16ef50,0xbd957138,0xbda27dfa,0xbd9f3a25,0xbd82922e,0xbd0fcd17,0xbbb4e2e4,0x3ba5500a,0xbb41c17c,0xbbf3b2c8,0xbbb353e6,0xbccf0fc0, -0xbd06b389,0xbcdef07f,0xbc99e010,0xbc95d007,0x3c94fc1b,0x3c968c94,0xbc6122a1,0x3c35ff8c,0x3a9de8be,0x3bb932af,0x3bdb158f,0xbc0d2a8f,0x3a8bd08a,0xb9c79798,0xbaa3016e,0xbb68e480,0x3c222afc,0x3c671f3f,0x3aa589f8,0x3c306890,0x3bd47ab7,0x3ce8e972,0x3c426c3c,0xbd1825d4,0xbd0b5a5b, -0xbd639737,0xbd5148e5,0xbd652294,0xbd5f3e98,0xbd1812e2,0xbce546fe,0xbc7909db,0xbc6ba173,0xbc7c1a35,0xbc8dfd4c,0xbcefdaba,0xbcc1b20a,0xbc8d8757,0xbc3ba005,0xbc57e517,0xbc584384,0x3c2c1880,0x3c5bcbb7,0x39384e65,0x3c14a9c3,0x3bba0783,0x3b745832,0x3c68eaea,0x3c391be1,0x3be27f61, -0x3bab04b4,0x3c3116f6,0x3cb69b66,0x3c40a3ab,0x3c8436ab,0x3d02482e,0x3cd4672d,0x3c97a81a,0xbc97ef1e,0xbcc62070,0xbd0167f8,0xbd3268fd,0xbd1a4e10,0xbd083d59,0xbcff4a9d,0xbcff9cb3,0xbcf37795,0xbccf95bb,0xbcbd77ad,0xbc89a0a0,0xbc535073,0xbbec5187,0xbb89c5f4,0xbc0808a2,0xbc1014fe, -0xbc8e8563,0xbbdc2bd0,0xbc150c74,0xbb2e0c41,0xbc1327bf,0xbba1533a,0xbace0380,0xbade99e1,0x3ba9c035,0xbcf6b9a5,0x3c79e4a9,0xbc4c59ea,0x3c737f37,0x3b0330f0,0x3b903e99,0x3ccbec8f,0x3bb25e72,0xbbe4da6d,0x3d0a35aa,0xbcfd8ff6,0xbcca6791,0xbcbf3bbf,0xbca4fabb,0xbcd8dd9c,0xbd008c3a, -0xbd109d18,0xbce76ca5,0xbcb7c9b9,0xbc97407b,0xbc69635e,0xbc3df7fa,0xbbdb6faf,0xbc40c1fe,0xbc51732d,0xbc2dc7bd,0xbc0fd58c,0xbbf5d91b,0xbc47f37d,0x3c95f436,0x3accb493,0x3b8b313a,0xbb7a9b1e,0x3977cf4a,0xbb85f86c,0xba1ce9e9,0xbb4f00b5,0x3bc50820,0xbb8d2dbf,0xbce73227,0x3c2f611b, -0xbc5d4208,0xbc0c040a,0x3ccf3aab,0xbceef432,0xbb3dbaa7,0xbcdd2407,0xbc98014e,0xbcadbcb0,0xbcafd0f8,0xbcad4d25,0xbc9c3905,0xbc9f3431,0xbc9b734e,0xbc9ce11c,0xbc96e81d,0xbc8cdabc,0xbc8214fc,0xbc622a23,0xbc625577,0xbc6903c3,0xbc83b989,0xbc92cb5a,0xbc8e031b,0xbccd203d,0xbbe97225, -0x3cb1bb16,0x3d5ef7f0,0xbbfef37b,0x3ca8db13,0x3d6eb5e9,0x3d825bd5,0x3d667eb6,0x3d5614a7,0x3d7ac436,0x3d713b75,0x3d471ef3,0x3c8b3af4,0xbbf9d62e,0x3d579f77,0x3cfe2710,0xbcaecec2,0x3cda98f9,0x3c6126a9,0x3d460809,0x3cbc2507,0x3cb3c4ad,0x3ca1b891,0x3cb34c56,0x3cb82895,0x3cb0cbd1, -0x3ccaf1bb,0x3cd0e1a2,0x3cbbb32c,0x3cbfd452,0x3cc7610a,0x3cd52687,0x3cdb0a5b,0x3ce561eb,0x3ce6d953,0x3ce9aa79,0x3cc77c28,0x3d0a2d44,0xbc3ba6da,0xbd22a015,0xbd95b880,0x3ba002e3,0xbd0f1ff3,0xbd9592aa,0xbd94da10,0xbd8db74f,0xbd7e39d9,0xbd9d654a,0xbd97ecfd,0xbd872645,0xbd35944a, -0x3c1e0ffd,0xbd82f89d,0xbd59a69f,0xbdccedca,0x3c68dbe7,0x3cc5030e,0x3c99a49a,0x3c56f504,0x3cd23704,0x3cf1a744,0x3ce6401a,0x3d1c840e,0x3d21c686,0x3d075319,0x3d108fd4,0x3d0da8d0,0x3d173a31,0x3d0fc4a3,0x3d184c1a,0x3d2008aa,0x3d0d2f2c,0x3d0f76c9,0x3d3daa6e,0xbd154623,0xbc2d6147, -0xbcb4d50d,0xbca2d87f,0x3c57341b,0xbc9ff4b2,0xbbb007a2,0xbcdccecd,0xbc2290f9,0xbca8f126,0x3cf4679b,0xbc77d696,0xbc9715c4,0xbc592f32,0xbce1c43a,0xbca002e0,0xbd211940,0x3d590f24,0x3cbaadb0,0x3c84f5fd,0x3b507c28,0x3c26853d,0x3c47d999,0x3bea5751,0x3d0a1195,0x3d222261,0x3ce4512e, -0x3cefac0d,0x3d0a36f3,0x3d1f3575,0x3d316d30,0x3d35b831,0x3d56a41e,0x3d208f0c,0x3d5628f7,0x3c7b39d0,0xbd42bc15,0xbc338fbd,0x3a7778d1,0xbc06ab2e,0x3a9e4838,0x3b26c7e4,0x3a8e51c9,0x3d2858c1,0xbc617368,0x3c86e863,0xbc67578d,0x3c33caba,0x3c1f94ca,0x3a77dd6c,0xbcc30a3b,0x3cbf56ce, -0xbd91a409,0xbc5185d3,0x3d2cc0d5,0x3b9bd46e,0xbb982b98,0x3bb70f6e,0x3cbd8a29,0x3c734173,0x3d533a89,0x3d778343,0x3d2558ab,0x3d489cc2,0x3d2ea838,0x3d60387a,0x3d4ad0ed,0x3d4ed9c8,0x3d7b2634,0x3d45576f,0x3d5493ca,0x3d0b7648,0xbaa01243,0x3ce3be52,0xbb471efe,0x3d000e18,0x3c26a981, -0x3cd92989,0x3b2fa334,0x3c0721f0,0x3c1f2ac9,0x3ca0054c,0x3af99452,0x3c9714ea,0xbc56e1ba,0xbbf19056,0xba57f2eb,0xbc250b20,0x3c7b97c2,0x3d03d36c,0x3d7cee3b,0x3cba3af3,0xbbf2cf0b,0xbc974b95,0xbcf0b4ca,0xbcb4a786,0x3d0ef065,0x3d5dadf7,0x3ced7ed6,0x3cf3a0bd,0x3d1fd640,0x3d490fe9, -0x3d7324fd,0x3d848461,0x3d93705b,0x3d6cd8b4,0x3d6af5d9,0x3cf306db,0xbd69a8dd,0x3beab4f2,0xbba85103,0x3cad2a05,0x3cf1c6a1,0x3ca80c7f,0x3cda6712,0x3c8202cc,0x3cb3a9b5,0x3c3a1698,0x3c912844,0x3c48e356,0x3c896ed2,0x3ca9c1ea,0x3c7b7976,0xbc6919cf,0xbd1167dc,0x3b195fd4,0x3db15fe6, -0x3cbd8453,0xbbf5d959,0x3c1361af,0x3d28485e,0x3d3816eb,0x3c542e87,0xbc226665,0x35b06602,0x3af5f6ee,0xbc974b30,0xbcc7a765,0xbca169d0,0x3b52d0e5,0x3cc5e685,0x3d186377,0x3d4dd2d6,0x3d09a1a5,0xbc1e5d1a,0x3cca8578,0xbb4cb0bb,0x3cbd2447,0x3bd31d6f,0x3caa3f5b,0x3c9b3dec,0x3c99069b, -0x3c5b0da3,0x3c9c46f0,0x3ca43541,0x3c045782,0x3a8e689d,0xbcaa785c,0xbd5984fe,0xbb73eca8,0x3daf0724,0x3dbbdec7,0x3d914e58,0x3d364973,0x3dba4df7,0xbcafbe1c,0xbdd1e547,0xbda0c0cd,0xbd842c5a,0xbcf601d1,0xbd87e55f,0xbd2f361b,0xbc5fe04b,0x3c451624,0x3d6821fc,0x3d890c39,0x3da9112e, -0x3d52f655,0x3d5d921b,0xbcc6c005,0xbd7651d4,0xbc9ef555,0xbc00a51d,0x3c1efbf3,0x3c88432b,0x3cbec772,0x3c6d60f8,0x3c26d399,0x3b8415f7,0x3c804ed7,0x3ca58ce2,0x3cfbc575,0x3bd13b9d,0x3cea5c20,0x3d864744,0x3d9546cb,0x3c9a6e5c,0x3c705e1e,0xbadfdf3b,0x3d00835c,0x3dc237a8,0x3d0852a2, -0x3d4da3c8,0x3dd47fec,0x3d9cb343,0x3d1024c7,0xbccc03e8,0xbd00da84,0xbc99fb44,0x3a84582a,0x3bb9a21c,0x3c13a2b0,0xbc258fee,0xbc157560,0x3a2bbac3,0x3c118adf,0xba784d19,0xbb4dc267,0xbc844527,0x3c7ed373,0x3c92b81f,0x3cd8d9a9,0x3c5ae23b,0x3becc67e,0x3c49d20b,0x3c023c98,0x3c760916, -0x3d5f9481,0x3d162213,0x3cfb93a2,0x3c8790a5,0x3b7be1c6,0xbd481464,0xbcedee88,0xbc5a40e5,0x3c3585d4,0x3d6cb4cd,0x3dcd507a,0x3e1e498b,0x3e158dd7,0x3e18efa9,0x3ddddadc,0x3d883eba,0x3d648f8e,0x3ca7ff58,0x3c453ca3,0xbb9b6aac,0xbc789b3e,0xbc96a718,0xbcd7463b,0xbb464a9c,0x3be76836, -0x3b92bd27,0x3c99c1b9,0x3bff1892,0x3cae79a9,0x3cff6bb3,0x3cb8e3f0,0x3c9de89b,0x3aeeecc2,0x3c2eef6b,0x3bd66b80,0x3c4cc346,0x3d0ffb5c,0x3ce26a6a,0x3ceb3f62,0xbbd10f01,0xbc77f4b1,0xbbed17b0,0xbcbf7990,0xbc163b32,0x3b59e476,0x3da49778,0x3d27c898,0x3c759c1c,0x3c0afe24,0x3b368f27, -0x3b3830ef,0x3cfba75e,0x3c8e3fe4,0x3c821bb1,0xbc08fc93,0x3cac680e,0x3cfe68cc,0x3d023f4d,0x3cce07e6,0x3c90457b,0xbb4824fc,0xbbd8c1db,0x3ac07121,0x3c022c25,0x3c8776c4,0x3c526d20,0x3c7e4302,0x3c2f197a,0x3c3aab7b,0x3c532155,0x3bc51bc2,0x3c140a93,0x3c60a517,0x3c441900,0x3c684676, -0x3b8cc63a,0x3b3d62fb,0xbdba1a8e,0xbd3f4516,0x3d8455de,0x3d0324c1,0x3d2c7ef8,0x3d43930f,0x3d9432da,0x3d8dfbed,0x3d324e60,0x3cfb394b,0x3d40388b,0x3d055e6a,0x3d3d56d5,0x3d0dea91,0x3bd3389f,0xbbfd14d9,0xbc3af3af,0xbc751aca,0xbbc502cb,0xbba33dcc,0xbc662bf4,0xbc28b935,0x3a9de8f7, -0x3815f81e,0x3bd05ff1,0x3c694d79,0x3bd7d036,0x3c0ed784,0x3be277f4,0x3bcbd5dc,0x3c668909,0x3c1c25aa,0x3c57cd93,0xbbd06ad9,0xbcc23fab,0x3c3089f8,0xbd54927e,0xbc5ce15d,0x3b9a3d67,0x3c097315,0x3d11b444,0x3d0648f2,0x3d287763,0x3d91efb5,0x3d5e020b,0x3d265664,0x3ca5404a,0x3cad9353, -0x3ca368ed,0x3cafa6de,0x3cf6a9b7,0x3d025bd4,0x3ce3d5db,0x3cd31176,0x3c706780,0xbc86131c,0xbc27f41a,0x3c10d479,0xbc4ebb07,0x3bbfc40d,0x3c3bef7c,0x3c316471,0x3cc73348,0x3c2c0db2,0x3c6d0bb1,0x3b607db2,0x3bd1b84b,0x3bbfd526,0xbbb49374,0x3b33ce0b,0xbc338001,0xbc1ba1c5,0xbc657016, -0x3ad569ac,0x3d048ce7,0x3cc27767,0x3cbd685a,0x3ce6dc47,0x3d2bc793,0x3d747c63,0x3d1a77f8,0x3ce2e1bd,0x3c691dcc,0x3ca21ba7,0x3ca83b6b,0x3cb5ca31,0x3caac1e1,0x3c8403f8,0x3c9b7623,0x3ca9eee6,0x3cc881cc,0x3c618dd6,0xbb280bc0,0xbb149051,0x3c1af20f,0xbb1ca038,0x3bef8719,0x3c038d0b, -0xbb945eb7,0x3a2f4889,0x3c0f2084,0x3c1f4c59,0x3c2d7710,0x3c41317a,0x3c2f91bc,0x3bc363a6,0xbc4cfd7f,0xbb9571e9,0xbc6fe34a,0x3cdfa79e,0x3cedda0c,0x3cb97ca3,0x3cd6ee67,0x3d0be54e,0x3d11514e,0x3d1d758a,0x3cf9ec99,0x3cd4e6f8,0x3c8af221,0x3c325a42,0x3b7d4cc3,0xbb5002aa,0x3aaa3acc, -0x3b27582a,0x3bd9c21a,0x3bbce1f9,0x3cd7ecc4,0x3c53f96a,0x3b808852,0x3b8daf5d,0x3c1f50d0,0x3b96a229,0xbac0c4f2,0xbbf8bd4b,0xbb16932a,0x3cc20383,0xbcab4453,0x3c902765,0xbba8156e,0x3c303536,0x3aec4162,0xbc07bbeb,0x35b1d964,0x3c32b7f4,0xbd27c88c,0x3c3f344f,0x3c76f7c0,0x3cc7b202, -0x3cfa5018,0x3d1fdb6b,0x3d4079a1,0x3d7227f6,0x3d4ef836,0x3d2a9f69,0x3d10d361,0x3ce996d9,0x3ca8ab7f,0x3c21f302,0x3c3a6b88,0x3c487b27,0x3c70d9df,0x3c4c295e,0x3c116c1c,0x3c22e0c0,0xbc9992d6,0xbbbf900e,0xbc633798,0xbbccd5b8,0xbbeac76a,0xbb0d99cc,0xbc3f2d92,0xbc821428,0xbca6abbd, -0xbca1cdbe,0x39b1a979,0xbd108ecf,0xbc92ab2b,0xbc8f1845,0xbd18f01f,0xb881d3ff,0xbb3c3c4b,0x3cea581d,0x3cba343e,0x3cc44172,0x3cc7db26,0x3cd3a92a,0x3ccfba97,0x3cdab521,0x3cc892bc,0x3ccb9dfc,0x3cc35538,0x3cb7837b,0x3cb3c6d4,0x3cacae03,0x3cb53a61,0x3cb2af61,0x3cb5671e,0x3cbf96ff, -0x3cc6efed,0x3d0718c1,0x3b6f9e46,0xbcb06394,0xbd043b74,0x3b239ed4,0xbcc19eb6,0xbd2287e3,0xbd3320ef,0xbd157dd8,0xbd08923e,0xbd257e38,0xbd1faa36,0xbcffa270,0xbc8aeb10,0x3b89f274,0xbcff58ba,0xbce8a56a,0x3ce75d20,0xbc9f84b1,0x3c26f113,0xbd0d2062,0xbc8f8f80,0xbc8ea04d,0xbc96263a, -0xbca330fa,0xbcae4c6f,0xbccb6328,0xbcb09319,0xbcb31763,0xbccb72ff,0xbcb914be,0xbcb17663,0xbca875ac,0xbcb14699,0xbcb72074,0xbcb09556,0xbcb176c9,0xbc95397e,0xbcd0a03d,0x3cb0050b,0x3d21d3e5,0x3d1ed536,0x3c405e25,0x3d248159,0x3d2f8e5c,0x3d327e28,0x3d25a73e,0x3d171d86,0x3d4b0689, -0x3d485e96,0x3d3f6b5e,0x3d40d415,0x3c23901c,0x3d140d65,0x3d49151c,0x3d74da73,0xbb7b5425,0xbc08d6d9,0xbb390332,0xbbc88a91,0xbc97968a,0xbce5f639,0xbd2ded67,0xbcfcff80,0xbd07379b,0xbd1bef7b,0xbd0322a6,0xbcf8cf01,0xbce552fa,0xbcf59a70,0xbcfbb673,0xbceb7acc,0xbccf6a19,0xbcdbad1b, -0xbd0b4d82,0x3d05128a,0x3c42835c,0x3c8efe14,0x3cfe4416,0x3bacf974,0x3c8bdd0c,0x3c6b8e12,0x3cfbdbfa,0x3c8bec2e,0x3cb3c78f,0xbcb357b9,0x3c96ba0a,0x3cb48b36,0x3cab12a1,0x3ce3bb7d,0x3c72ea62,0x3d4321b8,0xbc33d103,0x39c0cc74,0x3c0a088e,0x378b7bbc,0xbcb132af,0xbcdc1356,0xbd5ac259, -0xbd00bd79,0xbd0a4f76,0xbd4ed07b,0xbd213f73,0xbd122947,0xbcdf0569,0xbd13f277,0xbd0fe251,0xbd162704,0xbcd398b8,0xbd1f9295,0xba0d1516,0x3d47538d,0x3c57a3a5,0x3c76be1f,0x3ce4ca1b,0x3c8b92c2,0x3c858168,0x3c528a4c,0xbc7db229,0x3d160b05,0xbb869e96,0x3cd61ce7,0x3c35ee78,0x3c813e2b, -0x3cadf6ad,0x3d13a004,0x3bac9a3c,0x3d60b6c2,0x3cf226c0,0x3d036a34,0x3d42c636,0x3d068dba,0xbc27578e,0xbd09199e,0xbd9c1945,0xbd2daa4f,0xbd2d61e4,0xbd8389a5,0xbd39e716,0xbd24628c,0xbcf1caa0,0xbd2cf5fe,0xbd23f2d2,0xbd1721ee,0xbd09cefe,0xbd1f918d,0xbc5c44e9,0x3c181629,0xbc90a306, -0x3c6ad660,0xbb1525b3,0x3cbfe97c,0xba2489a6,0x3cd63d51,0x3c282291,0x3c572370,0xbbef6f31,0x3c2b8d31,0x3c501f64,0x3d01afd7,0x3caebe8c,0x3cfbd844,0x3c84ec05,0x3d01ba65,0x3d0cd3a7,0x3ce81cf0,0x3d5caf00,0x3c9cbb9c,0xbc3a48c2,0xbcd2610b,0xbd909a0b,0xbd0b4786,0xbd1d2e2d,0xbd9a131d, -0xbd58eebe,0xbd29eab7,0xbcc74e50,0xbd2df915,0xbd3c3d65,0xbd33f3b3,0xbd07d9bc,0xbd1501bf,0xbc3ac0b8,0x3d53efeb,0xbbe3a624,0x3c70792e,0x3c419876,0x3c35d2d6,0x3c902873,0x3bdc43b4,0x3c0dac27,0x3c1a545d,0x3c280189,0x3b706b9a,0x3cab6b94,0x3cc370e3,0x3ce3295e,0x3d17f449,0x3d7107b5, -0x3d53e531,0x3d169331,0xbdee14e4,0xbd9bf9f6,0xbd6c47dd,0xbd919f90,0xbd7d1dfc,0xbd95d5b2,0xbd8258a8,0xbd1bd9d5,0xbd273992,0xbcfeeea3,0xbcb2d59c,0x3c29d0b8,0x3cda66b6,0x3cf31eba,0x39ce3458,0xbbf7ba3c,0xbcb25374,0xbc0cabb2,0x3c39113b,0xbc90701a,0x3c99e130,0x3c0133b4,0x3cbb2744, -0x3c2756b3,0x3ca9a028,0x3c99578f,0x3c135ac1,0x3ceb01f0,0x3cf84fcf,0x3b899dc9,0x3b717acb,0x3cb154ff,0x3d1507ad,0x3b89b4e3,0x3d3f68e6,0xbbfac5a2,0xbc9259f3,0x3cf5a98e,0x3d700c47,0x3c4d9acc,0xbca838ad,0xbd3983b3,0xbb56e57e,0xb974fb02,0xbd02042b,0xbb85f7a2,0x3b6b8cab,0x3c4a7321, -0xbc907fc2,0xbd14decf,0xbd7c0dd4,0xbc8abc22,0xbcce54d6,0x3914f3e1,0x3ca14da5,0x3b7d06bd,0x3aebe894,0x3c0025cc,0x3c405ad8,0x3c68c9b1,0x3c5bb848,0x3c409adf,0x3b850b4e,0x3c66ef0b,0x3c444df2,0x3d2ca874,0x3ce628f4,0x3caca706,0x3d18497e,0x3d5711b9,0xbc063228,0x3bf5ed2c,0x3c14d017, -0x3c78c032,0x3d5b07e0,0x3cb595ba,0x3d03f37a,0x3b4d0044,0xbcf2373d,0xbd324b33,0xbd125356,0xbd368290,0xbd2d9f0f,0xbd673f23,0xbda046c9,0xbd7b20e5,0xbd416395,0xbcc47d91,0xbd1a78f3,0xbca4c22a,0xb9673396,0xbb8c0440,0x3bee0eb4,0x3c892059,0x3ca6008c,0x3c04086a,0x3c33583b,0xbbeed08a, -0x3b7b4b04,0xba90d102,0x3c433d63,0x3d3865dc,0x3cd97dec,0x3d0a7679,0xbae512a7,0x3cc89664,0xb9d63f59,0x3c380c9e,0x3cf5b58b,0x3d40ccde,0x3da0df76,0x3d3b5377,0x3d678a8f,0x3cf422e7,0x3d55192c,0x3d81fc53,0x3d8f53ba,0x3d19ec87,0x3ca7c647,0xbc0ed7a7,0xbcb4d7b7,0xbcdf84b7,0xbc964ba9, -0xbce46434,0xbd387436,0xbc57e6e6,0xba9b8c9a,0xbb69be20,0xbc0f6c05,0x3d176931,0x3cb13fc1,0x3c26274e,0x3bff5651,0x3b46224e,0x3c9eb1a5,0xbb989379,0x3c3b73f8,0x3ccc5d8b,0x3d013293,0x3caa3ec5,0xbae3ac1e,0xbbbb6ef4,0x3c14ade3,0x3d469b95,0x3d6f4845,0x3d658589,0x3d1358c8,0x3c9a2167, -0x3cbfb2ad,0x3d27b3c6,0x3de51a8f,0x3e160045,0x3e0f5f97,0x3df91f02,0x3dbecd7f,0x3dc1a77f,0x3d3ea229,0x3cbca8ce,0x3b5ac558,0xbb82f4d1,0xbc57080b,0xbc011e7a,0xbc384448,0xbbd8730c,0xbb4d5705,0x3c726820,0x3c6cd340,0x3bb07de2,0x3c5c803b,0x3c4d3e96,0x3c9f5172,0x3ca00d6f,0x3cadb6b1, -0x3bd9d48f,0x3b96cc41,0x3c6c37c3,0x3c8ca97e,0x3cd58d18,0x3da536e1,0x3d90c663,0x3d561851,0x3d89fdd4,0x3cdf847d,0xba22c091,0xbb90cf8a,0x3cce91b9,0x3d1fc65b,0x3d7e7027,0x3d8d57db,0x3db5bbfa,0x3d82b8e4,0x3d991792,0x3d34b076,0x3d00ec23,0x3c7f1a04,0x3bf0cb71,0xbb111671,0xbbe8b3dd, -0x3c5a40db,0x3ba1ab2a,0xbbcfccb0,0x3acccd2c,0x3b00188f,0x3c8f66ba,0x3c3e2e1c,0x3b50a677,0x3c3ed2c5,0x3bc53ebf,0x3c4055ee,0x3d1766c4,0x3ceec258,0x3ca9f3da,0x3cfc3701,0xb9e6854b,0x3cde165a,0x3d42d497,0x3cb8d245,0x3c592e76,0x3a85068a,0xbca76eb9,0xbccff0d4,0xbc4147ef,0x3ca0c8cf, -0x3cfaa485,0x3cbfe592,0x3c98e05f,0x3cf3d311,0x3d21dbcd,0x3d40ffd8,0x3d103283,0x3c61cdbb,0xbadd9386,0xbb6c367d,0x3b056541,0x3b40c1fe,0x3b994ece,0x3cc9f67b,0x3bfa07ea,0x3c248759,0x3cd3795d,0x3b2c246b,0x3c1beffa,0x3afac511,0x3c249059,0x3c192936,0x3b9c53c9,0x3c4970d7,0x3c1785cf, -0x3c6034c6,0x3cfc5398,0x3d043b81,0x3c97d7b3,0xbb90a796,0xb8ef85e7,0xbb127a79,0x3a812696,0x3b753726,0x3ad85657,0x3c705976,0x3c745938,0x3c4379ff,0x3c1aedbd,0x3be14c23,0x3c0ca52f,0x3c5ba089,0x3c111cad,0xb897dd79,0x3b187f4d,0x3b7e15d3,0x3c78f22a,0x3cc2fecd,0x3c9447d1,0x3c5a7a71, -0x3c71756d,0x3b34e4d9,0x3bd44a74,0x3c7a2f48,0x3c5cec40,0x3c07b09c,0x3c1e06b9,0x3c10c8b3,0x3c7773a5,0x3c142d33,0x3c598742,0x3cc8bcf7,0x3c9af46f,0x3d04b31b,0x3bdf6cef,0xba92dfe8,0x3c2178d8,0x3bb7eebe,0x3c394d31,0x3c5a9dfb,0x3c8f1ed4,0x3c9791a3,0x3cb961f6,0x3ced6cc9,0x3cb09b18, -0x3c807fce,0x3c4096f9,0x3b9db18f,0x3a8f5b0f,0xb8bb1cd7,0x3c1e52b0,0x3be2571d,0x3ca31569,0x3cba9d0c,0x3c72c18f,0x3c51e695,0x3c3e2115,0x3c5b38ad,0x3c63250c,0x3c076858,0x3c0e2255,0x3d0dc104,0x3c03ddb6,0x3c9792be,0x3b1c4380,0x3c4d57e8,0x3cb3cd6a,0x3ca3f1c5,0x3c4fdb0b,0x3c9704de, -0x3b0222d3,0x3c19e56d,0x3bd9450e,0x3bdb9242,0x3beceaae,0x3bb842f4,0x3bab2ca3,0x3bf8e3cd,0x3c02a5ff,0x3bf831ed,0x3c438c98,0x3c8e7ed9,0x3ca58beb,0x3cbc34d8,0x3cba75a1,0x3ca713da,0x3c8737a6,0x3c3842a1,0x3c40535e,0x3ca3b8b6,0x3ca5b29c,0x3cdcc680,0x3cd724ab,0x3cc34cf2,0x3ccc803c, -0x3cd92e2f,0x3cc90871,0x3c878026,0x3c837bfc,0x39620f32,0x3c7a4e9f,0x3c876f55,0x3bb0d311,0x3c59cb62,0x3c547f1d,0x3cf6f204,0x3a425914,0x3b2e0f78,0x3b33b2be,0x3b362927,0x3b44095d,0x3b695f72,0x3b746b0f,0x3b81b0e1,0x3b9e8c8e,0x3bbf41a7,0x3bb4dbaf,0x3b90eaae,0x3b8aa88b,0x3b1d07c5, -0x3b002b51,0x3b2076eb,0x3b69ac8f,0x3b7decb8,0x3aa7113a,0x3cde93fe,0x3d1e4559,0x3cc722f4,0x3cd42b20,0x3d203daf,0x3ce3d31d,0x3ce843df,0x3cd840aa,0x3cd585cb,0x3cf49d1d,0x3cf2464c,0x3cd29e9b,0x3d0b86ef,0x3cbbf8fd,0x3cceffc9,0x3d21d321,0x3c316367,0xbd01f396,0xbd49350b,0xbc7a3ef1, -0xbca75553,0xbcb582e6,0xbccb70d0,0xbcc7847e,0xbccbe774,0xbccd8688,0xbcabfb66,0xbc9a4671,0xbc8a9c16,0xbc8af7da,0xbc8c6266,0xbc8d8c84,0xbc875c2d,0xbc88e36d,0xbc8598bf,0xbc851fac,0xbc89fa54,0xbc570e9d,0xbd37fd48,0xbd3aa993,0xbc0f59b8,0xbd26382d,0xbd3d9dd9,0xbc597fad,0xbc6f5164, -0xbc588533,0xbc6c48aa,0xbcaa4c42,0xbcb18661,0xbcc3be36,0xbd436b88,0xbd2984d5,0xbc357a1f,0xbd39d07d,0xbcd1a59d,0xbccc5aed,0xbd05555f,0xbd2c8674,0xbd571f5c,0xbd52a080,0xbd418510,0xbd2b73d8,0xbce8225a,0xbcda7473,0xbcd26eb6,0xbccbf8c3,0xbcc123e6,0xbcb58c92,0xbc8a39de,0xbc99c4b6, -0xbc93a029,0xbca10303,0xbc842967,0xbc1e6443,0xbd1e18b8,0xbcef1254,0xbc9e38b6,0xbd22a511,0xbcf66fbc,0xbc930861,0xbce26217,0xbd06aa9a,0xbcece59f,0xbd065594,0xbc4c3463,0xbca981ee,0xbcd0eac6,0xbce66f47,0xbce39a3b,0xbcf0cc59,0xbd350840,0xbd297782,0xbd1705db,0xbd7295c4,0xbd97a237, -0xbd9bd971,0xbd932a19,0xbd859925,0xbd45b1f6,0xbd0a166c,0xbcd44985,0xbcde068b,0xbcd0fd3b,0xbcc149db,0xbc9fecac,0xbc8e8333,0xbc83d519,0xbc9fde93,0xbc051974,0xbcc69726,0xbd53a381,0xbcc2779a,0xbce9d639,0xbcc56804,0xbc3af8ce,0xbcbaef88,0xbbfd6e51,0xbc1a6624,0xbd18b558,0xbc5ba1e8, -0xbcd48ce9,0xbc253f3d,0xbc8ab440,0xbc9e973e,0xbc801a0e,0xbcdd07a0,0xbbbd2c66,0xbc227e93,0xbd835eab,0xbd996eda,0xbdec73cc,0xbdddd886,0xbdc1885b,0xbd985f23,0xbd49221f,0xbd10f25a,0xbd03dbf7,0xbd00e001,0xbcd64ae9,0xbcbbb525,0xbc2f67b2,0xbc0805e3,0xbc2852a2,0xbc12a2b8,0x39719e40, -0xbbb32a8f,0xbcb3513e,0x3aad968e,0xbbc60520,0x3bebaac7,0xbb844646,0x3c109427,0xbbc541f0,0x3bdddee4,0x3a342aeb,0x3b90379a,0xbbb10284,0x3a8d877c,0xba34b09d,0x3c0f0d84,0xbaf93caf,0xbc54482c,0xbc9f978b,0xbd07491a,0xbd8d7ca8,0xbdc61fde,0xbdf273ed,0xbe039afe,0xbdfe7d39,0xbdde9ea4, -0xbda7f75e,0xbd49aaeb,0xbcc84fe9,0xbce362e1,0xbcecbf03,0xbce8904c,0xbc9c56cc,0xbc723657,0xbc52c829,0xbc688cdc,0xb9cfb6b1,0x3b70cc49,0xbd43468b,0x3bb0151c,0xbba5fe68,0x3c63cad4,0x3cbdbc79,0x3cacbd4b,0x3cd7c1c4,0x3c5d275d,0x3c41de2c,0x3badb8d0,0x3c07ff44,0x3c92e3d5,0x3c9ea0bb, -0x3c2ed429,0x3c953c37,0xbb5904de,0xbdfec802,0xbe05db25,0xbdc1d3a2,0xbd9f74cc,0xbc8351e8,0xbd475981,0xbd45525b,0xbd27cfb2,0xbb90e02d,0x3bd5ec16,0x3b36d9b7,0x3cc95f16,0x3d17cc77,0x3cd00023,0xbc0a7a13,0xbc7d6075,0x3d5bb6dd,0x3cf23092,0x3ca246d0,0xbb5d8da6,0xbc9242ec,0x3c16a765, -0xbbcb9fab,0x3c8461ce,0x3b3b1e69,0x39ed4852,0x3c82b65f,0x3cc0b230,0x3c403382,0x3ca8504f,0x3be1df9e,0xbce592dc,0xbc6a8640,0xbce670c3,0xbd066af4,0xbde3c35c,0x3c0398a4,0x3d4ce6b1,0x3d4adfee,0xbc96c730,0xbdc4b840,0xbdeeb375,0xbdef4964,0xbdfaceaf,0xbd813293,0xbcc65c66,0xbb4efeba, -0xbd198647,0xbd8069d4,0xbd777bde,0xbd8c784b,0xbd792ceb,0xbd87510b,0xbd5086a1,0xbc821a83,0xbd10d562,0xbcdc4608,0xbc49c017,0xbb150921,0x3c635bba,0x3cafce1b,0x3ca8160a,0x3c252d8b,0x3b077c64,0x3b10d1e0,0x3c156677,0x3c5556f1,0x3ced2b16,0x3b9796c9,0xbb88d1d5,0xbb81d5b0,0x3baa3978, -0xbc2ca0c0,0x3c2679ff,0x3b36e67f,0xbcbffdde,0xb74de3c3,0xbd74f607,0xbd87fc47,0xbd97b472,0xba70f3a2,0x3d0253f1,0x3c8b7efe,0x3bb02122,0xbcfc2700,0xbd3651c1,0xbd3ab50d,0xbd4a7fa2,0xbd2de5c9,0xbd2fb149,0xbd022bfe,0xbcbea0bc,0xbcdc11a0,0xbc2514f7,0xbc9f5734,0x3c79d2e0,0x3c446f11, -0xb7974397,0x3aee5288,0x38ccdcd5,0xba67293e,0xbbaf84f7,0x3b5a644e,0x3cd4168c,0x3cb0b166,0x3cbf1db7,0xbb0249c6,0xbc1419f6,0x3ba21846,0xbbde37d0,0xbd2d7c7b,0xbd3f2bd7,0xbce3e586,0xbd2b8b7f,0xbceda708,0xbbbc0524,0x3cdfcd32,0x3cb9af84,0xbcac4497,0xbc8b6911,0xbd001fcf,0xbd20c884, -0xbd174db7,0xbce08ac1,0xbc63cd33,0xbcae9538,0xbc7c2980,0xbcbfa377,0xbd1df3a7,0xbc7f0631,0xbcaf3ea4,0x3c3c0c82,0x3c928e54,0xbc7c13ec,0x3c04d0db,0x3b09b599,0x3b1164bd,0x3afc3242,0x3c17b4b0,0x3c556d11,0x3cc1055c,0x3cdfb316,0xb997225d,0x3b911138,0x3c93c604,0xbd04f9f7,0xbdbeec12, -0xbdef9bc8,0xbe03549a,0xbdd25122,0xbd94987f,0x3b2aad6f,0xbc4c945b,0xbc75a2fe,0xbd3eef4b,0xbccbfdbb,0xbc8f566e,0xbc37037d,0xbd15b052,0xbd23cb9e,0xbcd85552,0xbcb9f946,0xbc302cb2,0xbc7905d7,0xbc44ef84,0xbc065b8e,0xbc24bb00,0x3c13fbec,0x3c49908d,0xba66e59d,0x3c3fdccb,0x3c2c6b6f, -0x3c534872,0x3c9cc4dd,0x3c9f7335,0x3b1ced9c,0x3ae024cc,0xbc356824,0x3bc181cc,0xbb8ea6f7,0xbd2dafc7,0xbd6b6427,0xbdb26282,0xbda1c58a,0xbd84df4a,0xbd968bfa,0xbd718b0e,0xbd03e39c,0xbd0ac3d1,0xbd441a41,0xbdace2cf,0xbd5f1f53,0xbd28d467,0xbcb2463e,0xbbf8b4a3,0x3b70c826,0x3c20596e, -0xbc74185a,0xbca9f055,0xbc388957,0xbcbcda98,0xbc31b485,0x3bda2697,0x3a79940d,0x3abf08a5,0xb9e37a40,0xbbae739e,0xbb0a7d37,0x3b39297c,0xbb1aa114,0xbb223383,0xb82d4280,0x3c44a20f,0x3cda662a,0xbb9d72a3,0xba56b1e7,0x3c5489ef,0xbd3468d5,0xbd008461,0xbd0b4e02,0xbd14af5b,0xbd23da59, -0xbd0820ef,0xbcc9cf0c,0xbc1d5344,0x3a85930b,0xbc0f0a6c,0xbc642664,0xbccf39d1,0xbd086ea9,0xbd0c991b,0xbcfaaced,0xbcb708e4,0xbbe4aba9,0xbb30396b,0x395a530b,0x3b935bdb,0xbb67f875,0xbc9284f0,0xbb814915,0xbafbc3a1,0x3c04205f,0x3c219fc0,0x3b8051f4,0xbb95d1c3,0xbb18013e,0xbae66026, -0xb9ec0485,0xbbb6e2c4,0xbc2073cb,0xbc7f6ef5,0xbcadcbd5,0xbca12272,0xbc36112d,0xbc7770a2,0xbca0ab35,0xbc4ff658,0xbcdab29d,0xbcf774d0,0xbd05c31e,0xbcaaf9dd,0xbc8ac36f,0xbc496b7a,0xbca2420c,0xbcc2ecf3,0xbceb0107,0xbc9b23db,0xbc2dc043,0xbb3ee6f2,0xba4e8dbe,0xbae8edaa,0xbba3d976, -0xbb37da89,0x3a99e4e3,0xbb9fac05,0xbb4ee9f8,0x3b2f5032,0x3b8bc06d,0x3b8c1495,0x3c06e7ee,0x3c01cfac,0x3b6b9426,0x3aee2c71,0xbb8c9bde,0xbaf82b28,0xbb325c37,0xbc207ddb,0xbbca0e65,0xbc8707cd,0xbc9b4c81,0xbc58dbba,0xbcc2e7dc,0xbcf5c5d8,0xbcf3ffc6,0xbcf85569,0xbd133dc6,0xbcf653f0, -0xbcb1caf3,0xbc3cdd51,0xbb84a104,0xb9d7856c,0x3b366070,0x3be105c4,0x3c1d6ffe,0x3c947b00,0x3c3be51d,0x3c5c6f1a,0x3c010fc4,0x39c57d90,0x3bbf4330,0x3b0cd5a8,0x3b6b92f5,0xba65a27f,0xbc034e8b,0x3b73619e,0xbbebe580,0xbb2d90d9,0xbaf7d5bf,0xbba3e88f,0xbb81a35a,0xbc44c00f,0xbc253c12, -0xbc6b2cfa,0xbc63a269,0x3baea025,0xbc85f9e3,0xbca4eb79,0xbc89eeab,0xbc586d07,0xbc8fea77,0xbc92d5b6,0xbca10915,0xbc144886,0xbba78569,0xba0df047,0x3ba6eb33,0x3c57e9ba,0x3cb37a22,0x3c902b29,0x3c39f9bb,0x3c09cff9,0x3c0dc7cb,0x3c16c38f,0x3b9bc3a4,0x3c016c15,0xbaa25f2f,0xbbce0eb5, -0xbc3e44a6,0xbc1aad4a,0xbc48e464,0xbc6dcfcb,0xbc9edc82,0xbc4365ea,0xbc75e264,0xbb9fcfcd,0xbbea202c,0xbc5f8505,0xbb75d756,0x3b421e56,0xbcc038ac,0xbcf0e68d,0xbcb56a01,0xbc9b429c,0xbcad167f,0xbcb5a6b0,0xbcbb35cb,0xbcb89e73,0xbcca17a7,0xbcbfe389,0xbcaf7571,0xbc9b6502,0xbc8ec66d, -0xbc8b2d09,0xbc7eaed7,0xbc7e4598,0xbc59597a,0xbc550f63,0xbc65c043,0xbc663f44,0xbc6fc6fa,0xbcbdce0f,0xbc77f767,0x3c82082e,0xbcd89fc6,0xbca0113b,0x3c65f1cd,0x3c80390a,0x3c6862d3,0x3c544ea2,0x3c3ad665,0x3c04468d,0x3bec05a5,0xbc951b61,0xbcd58b19,0x3c461f00,0xbc78d8e4,0xbd05f831, -0x3d0577a7,0x3d0fc025,0x3cc76792,0x3cc001ce,0x3ccf3151,0x3cc7250c,0x3ce204fc,0x3ce4ce4d,0x3cda40b0,0x3ce36913,0x3ce7a43d,0x3cd869b9,0x3ccb93cb,0x3cca7eb4,0x3cd74f5b,0x3ccb0892,0x3cccc2a0,0x3cc3150d,0x3ccc7af9,0x3cbec74d,0x3cccab68,0x3cebce63,0x3c572121,0xbd2b4286,0x3d0f74ed, -0x3c8d5f38,0xbd1c73af,0xbd159740,0xbd1335bc,0xbcfc4f6e,0xbd08ab85,0xbcf645ab,0xbcb6590b,0x3c5c0b96,0x3d122566,0xbcffa95a,0x3bc1dd43,0xbcb127bb,0x3c99569a,0x3c6ab3f8,0x3cac06cf,0x3cc932fe,0x3d428147,0x3d527020,0x3d2bf95b,0x3d1ff85a,0x3d1c7ae5,0x3d12de0e,0x3cfba241,0x3d013717, -0x3d1c7ac6,0x3d0230b7,0x3d084921,0x3cf61153,0x3d06bbae,0x3cf6f1b7,0x3ce8b1e1,0x3bda8999,0x3c4f4708,0xbaac75db,0x3ca86959,0x3cfdae1a,0xba8a87d5,0x3c9912e5,0x3c37937a,0x3c5ddc33,0x3c2a9d2d,0x3c9e930a,0x3bcabcc5,0x3c2723a3,0x3c5155db,0x3bdee953,0x3b96a617,0x3b7a26ec,0x3c59c1b6, -0x3c3750a8,0x3cbbd622,0x3ccb8562,0x3d80f8f1,0x3d8a11a2,0x3d4e3d00,0x3d68ff81,0x3d54e0cb,0x3d405507,0x3d1a0db1,0x3d11eac2,0x3d3529b2,0x3d2125dc,0x3d1aecfc,0x3d0a2cab,0x3d1d3bef,0x3d100d3f,0x3ce6c2e1,0x3c9b9d2c,0x3c63b4c8,0x3ce3143b,0x3ca03fc2,0x3c6c9685,0x3cb700a0,0x3c407afc, -0x3d044310,0x3cbc5713,0x3c881cf7,0x3c5fe51e,0x3c973888,0x3c90edad,0x3c6c6fe6,0x3c1f4d84,0x3c856ce3,0xbcaca54e,0xbd00333a,0xbcce9a30,0xbc2a1f96,0x3be86541,0x3dae658c,0x3dc59a68,0x3d8c115a,0x3d74e25e,0x3d514dc3,0x3d4c09d3,0x3d16a596,0x3d09efac,0x3d5a765a,0x3d23d867,0x3d2080f3, -0x3cfcfdcb,0x3d2c2078,0x3d089c40,0x3ce08779,0x3cabe648,0x3c57a940,0x3beef47a,0x3c9303c2,0x3c922622,0x3c4e5a00,0x3cadac07,0x3c20ae13,0x3bf873c0,0x3b97311e,0x3bb6c1b2,0x3c444e49,0x3c351b08,0x3bbedb2a,0x3b9ba8f1,0xbc485307,0xbc5df3f5,0xbcc0f5e4,0xbc87c08b,0x3b52220b,0x3c4a1cc4, -0x3dc779cf,0x3dd7519e,0x3d9b0c38,0x3db004f5,0x3d981e78,0x3d76a94b,0x3d2d5e05,0x3d257cb6,0x3d646cb9,0x3d4ec6dd,0x3d417710,0x3d130e9a,0x3d4c4832,0x3d2224da,0x3cd54b46,0x3ce8bc15,0x3c441df2,0x3ca9875a,0x3c8f9321,0x3ca7d861,0x3c680013,0x3c8900e3,0x3c63fe54,0x3c47e07f,0x3c0056ba, -0x3bf20729,0x3c1486b9,0x3c437369,0x3b945736,0xbb8229dd,0xbc90a6be,0xbd53eb20,0x3d134c97,0x3d4d2d5c,0x3d0667d1,0x3d653abe,0x3d15a817,0x3d1fa5e0,0x3ce53aaf,0x3c9ef4d2,0x3c853be5,0x3ce7a72e,0xbb92205a,0xbcbecf57,0xbd54dd45,0xbc6b622a,0x3beeb566,0xbc306362,0xbbfbeb4e,0xbafef7ec, -0x3d10903f,0x3cde4a6e,0x3bff6c7d,0x3bdc514b,0x3c8d58a1,0x3ca1448d,0xbb3c6fbb,0x3c98a0fa,0x3c940850,0x3b3df001,0x3cacd579,0x3c060e17,0xbc2dcbd1,0x3b8a4f00,0xba4f1fbf,0xbcd972d4,0xbcee031d,0x3d7d6c22,0x3d4d9ab9,0x3b9880a1,0xbae8cd3f,0xbcca0428,0x3ca6314b,0x3a088a3f,0xbd23f85d, -0x3c8671a8,0x3d136870,0x3cc16559,0x3d174f00,0x3d13c028,0x3d428658,0x3d29a172,0x3d40e977,0x3d7a0e62,0x3d4c3133,0x3d38e795,0x3d0813cc,0x3a083a58,0x3ca32e5e,0x3c8eea80,0x3cc95b1b,0x3cc34cc9,0x3cbf1e7a,0x3c2422b5,0x3b998e88,0x3c140356,0x3bddf356,0x3c01c17b,0x3cd74580,0x3b8d1c63, -0x3bfdabad,0x3ca8471d,0x3d495e03,0x3caf4eb8,0x3cf7b7c0,0x3d3a7905,0x3da31424,0x3e1873e6,0x3e27cc98,0x3e181c00,0x3db7447f,0x3d51094e,0x3c8ac780,0x3c1b3601,0x3c61996f,0x3d13d0f2,0x3d907151,0x3d78962e,0x3d5e9871,0x3d2f95cc,0x3cc76a29,0x3c3356ed,0x3c2321d5,0x3b68565d,0x3b18edbf, -0x3a83bb3f,0x3d1071f3,0x3ceca5fe,0xbbe8e658,0x3c08f6e3,0xbbfb21cf,0x3ac34608,0xbb678380,0x3be32155,0x3ca723cb,0x3d1c4cc3,0x3d250b94,0x3ccc9a1f,0x3bde665c,0xbcbdb223,0x3c0c0714,0x3da25b88,0x3dff64d7,0x3e661ba6,0x3e3c1cf2,0x3e2ba647,0x3dce2714,0x3d894178,0x3d1e9b5f,0x3d69c722, -0x3d336e15,0x3d5ff1a5,0x3d7da028,0x3d312b3c,0x3cbdb88f,0x3bd8fd4a,0x3b65bdc5,0x3a016e38,0xbb1d5303,0x3b61f734,0xbb1d4d3e,0xbbd72060,0x3cf4fe8f,0x3cf2c60f,0xbc9fc721,0x3c113d3f,0x3ba2529c,0x3c0559a2,0x3b584d1d,0x3c89199c,0x3c471995,0x3d0068a1,0x3d1d1baf,0x3c843c3c,0x3b8d8461, -0xbc34508e,0x3d186241,0x3dcf3cb0,0x3e008384,0x3e23ff7e,0x3deedb01,0x3db24bd3,0x3d30377d,0x3db43a95,0x3d9f6192,0x3d225838,0x3d23e3e5,0x3c563ca2,0xbc78653b,0xbc3f1eb4,0xbb683d3f,0x3c3d4845,0x3c1dd330,0x3bcae053,0x3bccebb9,0x3b398ecb,0x3c1cd65f,0x3bb1ab06,0x3cb89d15,0x3cb53ee0, -0x3c465b99,0x3c54e7a3,0x3c3e6be5,0x3c5e37e4,0x3cbec980,0x3cc5d116,0x3c46288e,0x3c53c290,0x3c9d6896,0xbc4c4de4,0x3c1948b4,0x3c5a8956,0x3d3041c8,0x3e13dd03,0x3e06d0e3,0x3e136d84,0x3e0129f6,0x3de391bc,0x3d724cf2,0x3d952624,0x3d9e966b,0x3da4ee97,0x3d84379f,0x3d43c8ba,0x3d833bc0, -0x3d2e4660,0x3cb60f67,0x3c2385f8,0x3b01627a,0x3a8e533f,0x3c8124ba,0x3c7a256a,0x3c87d192,0x3bc269fe,0x3be01a96,0x3c108e8c,0x3bea4226,0x3b5e2c0b,0x3a003a25,0x3be2989a,0x3bbb90f3,0x3c5acd54,0x3c2a89e7,0x3cd0b81a,0x3c1e6705,0x3c7b0b33,0x3ccd61b9,0xbcc36915,0x3d8a6ff5,0x3d9ca9f4, -0x3d8bd481,0x3d7b2423,0x3d29ad79,0x3cdf63c7,0x3cbaf5bc,0x3c5df60c,0x3b02dee7,0xbba654f1,0x3b0d97ce,0x3c925288,0x3ce9b878,0x3ca75722,0x3c8cd516,0x3be5f15b,0x3c5f9759,0x3c89a19d,0xba217b3c,0xbad3354f,0x3c279aa1,0x3c69f899,0x3c6843b6,0x3c2e030b,0x3c09cb86,0x3bf07367,0x3bfe488f, -0x3c20194c,0x3c3517ec,0x3c888bc6,0x3c51987f,0x3c2a02a0,0x3c79d5dc,0x3c535493,0x3cd1b422,0x3ca62b7c,0x3ce34698,0x3d51ecc4,0x3d303a49,0x3d151243,0x3cd90f92,0x3ca533ca,0x3c49eb3c,0x3ba5f3ae,0x3b84f919,0x3c010824,0x3bd61fa4,0x3b83f1d5,0x3bed59f5,0x3c2f9fa4,0x3c110d58,0x3bf5f5ff, -0x3bd139df,0x3b77aced,0x3b6485c3,0x3b8a6d49,0xbae69150,0x3c1019e2,0x3b83ced2,0x3bb5ea89,0x3b84762e,0x3bf1cda1,0x3bb0f4e3,0x3bf7f491,0x3c3ff3be,0x3c21253a,0x3c22d9b8,0x3c6fbbd2,0x3c62e2c1,0x3c56d086,0x3c48d82e,0x3bf91846,0x3d0560d5,0x3cb7dbdb,0x3cc0205c,0x3cefc851,0x3cbdacd7, -0x3c8ac53b,0x3c1832db,0x3c948a63,0x3ca749db,0x3cc35b30,0x3c2175be,0x3a6bb33d,0xbc21bc44,0xbba6d35e,0xb9f5b7a1,0x3bf4999e,0x3bde49e1,0x3ab0eed6,0x3c0805d1,0x3c917f41,0x3c046f06,0x3c4d2908,0x3c0ac74c,0x3c051d7e,0x3c0ea4d4,0x3b781b12,0x3ca477c3,0x3c66bef4,0x3c8229c7,0x3c46e4d0, -0x3c5915e9,0x3cacf801,0x3c20a798,0x3cc84c59,0x3cd64698,0xbcb78309,0x3c82f3da,0x3c8a8ff7,0x3c86f186,0x3c4b33cc,0x3c5fbef4,0x3c81f511,0x3c8b0d47,0x3c027cef,0x3ad000ab,0xbafc33ea,0xb9ec4be5,0x3b764a11,0x3bb2153c,0x3be529df,0x3b8de48a,0x39fcc13e,0x3b15565d,0x3b04e45b,0x3bd815f9, -0x3b79d533,0x3bdeb3bb,0x3babad39,0x3bb0edd2,0x3b5ca1c6,0x3b14704a,0x3b929630,0x3c11f4f0,0x3a51334c,0x3c0d01f1,0x3c628ee2,0x3a81d6b8,0x3c675c35,0x3b4e347d,0xbc97d9c2,0x3cacf738,0x3c354b52,0x3c6e7bd9,0x3c008d0f,0x3c12efe6,0x3c1fabca,0x3c215117,0x3c0bad16,0x3c135957,0x3c23d73a, -0x3c33dd4c,0x3c25ddad,0x3c011a25,0x3b874a1d,0x3a9e8b5b,0x3ada67eb,0x3b65d97a,0x3ba81567,0x3bbe8b7e,0x3bbbd2cc,0x3bc14f25,0x3bf6e0da,0xbb8b8157,0xbcdaa5d8,0x3c275651,0xbb34e6ba,0xbd00175d,0xbd08405f,0xbcf7bc2b,0xbce496a6,0xbcf844db,0xbce86a3a,0xbcbe0389,0xba20d58e,0x3c40c4d8, -0xbcdfc551,0xbc0c2d3a,0x3bf60ce8,0xbd1bb01a,0xbcf2cb4a,0xbd04a03f,0xbccad9c5,0xbcddfe3b,0xbce34680,0xbd058984,0xbd098a46,0xbd01387e,0xbd05e1ac,0xbd05a9c5,0xbcf079d8,0xbcf3a4ae,0xbcf32233,0xbcf368fa,0xbcf4304c,0xbcfc6929,0xbcff4a61,0xbcfa0d4f,0xbce061ce,0xbd085cdd,0xbc8f7674, -0x3b865ff0,0x3d4e19b2,0xbcd2c7b6,0x3a8a176b,0x3d48cc6a,0x3d4632a7,0x3d3bf1f5,0x3d1f7e41,0x3d3ef652,0x3d32f221,0x3d160fb7,0x3bbac46d,0xbcf47c25,0x3d214588,0x3c30108e,0x3ca05d4a,0xbd23fd99,0xbce12c66,0xbcdb023c,0xbcde824b,0xbd45a79d,0xbd66e42c,0xbd48e7c9,0xbd57acd6,0xbd4ff0c9, -0xbd27edab,0xbd2c14e8,0xbd2c7385,0xbd2d84ae,0xbd2458b1,0xbd2e3faa,0xbd334e92,0xbd18a38c,0xbd10014b,0xbd314aae,0x3ba2d7ef,0xbc18101e,0x3bf7ea72,0xbb8871b0,0xbcc181b4,0x3be06942,0xbc1475f8,0x3b90379c,0xbbdb94ff,0xbb2c5e5a,0xbcd8bd48,0x3b2df75c,0xbaa73898,0xbbf9a780,0xba14e82e, -0xbc433828,0xbc901c28,0xbd05541d,0xbc896487,0xbcb6f519,0xbcce8d46,0xbd76e18c,0xbd909404,0xbd575be2,0xbd8959a2,0xbd80285e,0xbd3f0177,0xbd4a0bdc,0xbd45134b,0xbd38cf42,0xbd4a2153,0xbd477bbf,0xbd65b483,0xbd27eac2,0xbd3490a5,0xbceeaabc,0x3beb1ef8,0xbbca409c,0xbc5e5a22,0xb8eb0ff4, -0x3af6bb30,0xbc4ade6c,0x3afd3039,0xbd01c6ff,0xbc03b8e0,0xbc87bf56,0xbaee96c3,0xbbf0154f,0xbc541d22,0xbc457c62,0xbb912b77,0xbd2b3fec,0xbd2d1abe,0xbd0e384e,0xbc197628,0xbc114259,0xbc28d9eb,0xbd898a75,0xbdc5246f,0xbd8d8028,0xbdbc7acc,0xbda66f3c,0xbd5f050f,0xbd81beb5,0xbd704333, -0xbd711654,0xbd6f049b,0xbd6c18c4,0xbd86201e,0xbd37a357,0xbd2a9d6d,0xbd164126,0xbc6b58da,0xbcb5c44e,0x3ad132a8,0xbbaf7393,0x3bd7fb06,0xbc2aa8fc,0x3c0119c1,0x3c032398,0x3b0a337b,0xbbbd1f0b,0xb969d7f0,0xb92125f4,0x3b600a66,0xbbe064eb,0xbc7e1b94,0xbd001065,0xbd5d18ef,0xbcb53a3a, -0x3c483781,0xbb5e1d49,0xbc3e4632,0xbdad3d12,0xbdc13115,0xbd873af3,0xbdc7c381,0xbdbf1eb6,0xbd7c156c,0xbd88dffb,0xbd830f25,0xbd6f1e14,0xbd8c109e,0xbd8bbbd7,0xbd9850f8,0xbd563420,0xbd371e2c,0xbd0e3e41,0x3ca300c0,0xbbb20ae5,0x3a8e47a0,0x3bc7a9a8,0x3c2d45b9,0x3c1cde33,0x3c71fc59, -0x3c34682e,0x3b1ed564,0x3be2ec80,0x3b2a4137,0x3c43285c,0xbb1bad7f,0xbc8d3372,0xbc3c0e7c,0xbd1b9e14,0xbc4d71bf,0xbd2e98f4,0xbdf7a4f6,0xbdc473a5,0xbd6e4bd3,0xbd6c39b7,0xbdad9859,0xbdff37e1,0xbdb0cee5,0xbd81c24f,0xbd4bc9a6,0xbd56b905,0xbd4392bf,0xbc336ae3,0xbcead668,0xbd21663c, -0xbd442e63,0xbd3ee045,0xbd68c2a0,0xbd8bf1e2,0xbcd66978,0xbcff2281,0xbc07da21,0xbbbde4cd,0x3c02b4af,0xbbad0bdc,0x3c36b38e,0x3c830823,0x3a40defb,0x3c15150e,0x3b636999,0xbc2ac9a7,0xbb37bd7c,0xbb4f95c3,0x39f0b06a,0xbd6012bd,0xba58a2bf,0xbcc520f4,0xbd2062e8,0xbcf4e2e9,0xbd614480, -0xbd885dbe,0xbd7f0551,0xbd678bf2,0xbd57f154,0xbd7ca0e6,0xbd699e4a,0xbd0a20cc,0xbcc6c16a,0xbd0a301c,0xbd603bd9,0xbd7b21c9,0xbd90f2d9,0xbd854bf2,0xbd854d6a,0xbc29d486,0x3cc81157,0x399e5533,0x3b78b5bb,0x3b95d71d,0x3c109648,0x3c7d8f45,0x3bf47980,0xbb1d13d5,0x3b51c8a5,0xbb5b807c, -0x3b555b53,0x3cc3e9a4,0x3c0c7a9a,0xbc66ab09,0xbcffe0b4,0xba0926fb,0xbb440835,0x3b9c6b59,0x3ca99c92,0x39784e71,0xbd55abb0,0xbd881b5c,0xbdbc74e3,0xbe14cb47,0xbdb130af,0xbd7e1a0c,0xbd6da9a1,0xbd954069,0xbda9843f,0xbdb05950,0xbd9709b0,0xbd6987ad,0xbccefd9c,0xbcd22761,0xbcd59ee6, -0xbce777e6,0xbc98c2cd,0xbb4e9020,0xbb73cb1f,0x3c31f88e,0x3c3fb2c0,0xbbbbdbfd,0x3b3e21fc,0xbb29c274,0x3a3ac42f,0xbbfc75cf,0x3a7d915a,0x3b372e3e,0x3cc3def1,0x3d0c43a3,0x3c60423b,0x3c8588f4,0x3c96a2da,0x3cce026d,0x3c7fb97b,0xbcae4df5,0xbdda79c8,0xbdc04f2e,0xbde53b71,0xbe04b9dc, -0xbdb2a86e,0xbd8b8100,0xbda30d12,0xbdc7ae1f,0xbdd8e5b2,0xbdba2f5d,0xbda22784,0xbd6f978b,0xbd12c5ed,0xbce97a99,0xbd0896c4,0xbc9e309a,0xbc58c094,0xbb0dfae4,0xbbd4b1db,0x3cd456b7,0x3c97ec10,0xbc927719,0x3b85508e,0x3b15b669,0x3b11eadc,0xba79b506,0x3c0c6fa5,0xbbcdb325,0x3d090c44, -0x3d03895f,0x3cdd0c70,0x3b5c4406,0x3cc6ea39,0xbbb71362,0xbd82d164,0xbdb42b50,0xbe385bad,0xbde5cfba,0xbd8e2e0b,0xbc59af40,0x3b903a8a,0x3c9dc453,0xbc2d414a,0xbce635f2,0xbd5a60fe,0xbd7136da,0xbd991044,0xbd973a29,0xbd84736f,0xbd816967,0xbd42e875,0xbc980769,0xbb80f2d7,0xba89f075, -0x3b946656,0x3c61e107,0x3c7ca979,0x3b4d6c02,0x3c204ed8,0x3bd91494,0x3b346aa4,0x3c839479,0x3caa5d60,0x3c26dfcf,0x3c57793f,0x3adbe63e,0x3c112e23,0x3b80986b,0x3d2205e0,0x3bcd15e6,0xbdef4f5e,0xbdbdcfec,0xbd921a2d,0xbda383c6,0xbdd20078,0xbe0275ba,0xbd9c59f8,0xbd6ac70b,0xbd70ebf4, -0xbcadebe3,0xbc92b865,0xbc90d22c,0x3b91c379,0x3ba6e4cc,0x3c15fee2,0x3c93c3a5,0x3c0cf483,0xbbc48fea,0x3b85410a,0x3be11a0c,0x3b8949cc,0x3c5af697,0x3c49f09d,0x3ba14f25,0xbad42794,0xbb93a75f,0xbbaefb28,0xbb74807a,0xbbc8b9b0,0xba25649f,0x3baa7ee3,0x3ce6db75,0x3c83e743,0xb842f5b7, -0x3d548e7a,0xbd03b326,0xbd16d88c,0xbce79aa1,0xbd47152b,0xbd2db98f,0xbd3dd565,0xbd908851,0xbcf7fd4e,0xbc01d643,0x3bc69fc5,0xbc487cf7,0xbcc6f45c,0xbd089843,0xbd1d063b,0xbd0fcfe6,0xbcec8953,0xbcdcb97b,0xbcad9fa2,0x3ba98933,0x3b98465e,0xbc38bcbc,0xbb35adfb,0xba758ddf,0x3a206620, -0xb9e92f1f,0xbb24091f,0x3a408533,0x3b1c4ff1,0x3baa83de,0x3bb12b04,0x3c19a3d2,0x3c6d65b6,0x3b22860d,0x3b086b5e,0xbc00f42e,0x3c4a612d,0x3b779e80,0xbcc8b515,0xbc63bd1c,0xbc9670e0,0xbccaac1e,0xbd187b52,0xbd697bfb,0xbd04e687,0xbcb1a51b,0xbc11a4b5,0xbc2390d8,0xbc0bf3b4,0xbb8c0afd, -0xbc483696,0xbc48abc7,0xbc8f9178,0xbc8a21e5,0xbc889248,0xbc8eb5b6,0xbbc50069,0x3b668b0c,0x3a3eae4c,0x3bc33da7,0x3b7521db,0x3b2cd0f9,0x3bb34d80,0x3be4e582,0x3bd3f213,0x3add4f5c,0x3b2a27cf,0x3ba94198,0x3b5dae23,0x3bcdbd44,0x3c60b0d6,0x3c0fd48e,0x3c925c4a,0xbc3a8b36,0xbc62dbc7, -0xbc96657a,0xbcd37272,0xbcff4afc,0xbd02d8d6,0xbd0ea173,0xbcff2ae7,0xbceb5af9,0xbcb42970,0xbc5d97ed,0xbb864df5,0x3b4d03d4,0xbabbbb84,0xbb92045d,0xbc2075e2,0xbc299ce0,0xbc8b60f7,0xbc841c80,0xbc53ddd1,0xbb87d369,0xbbb8361a,0xbb1e83d3,0xbac43673,0xb9e575dc,0x3b6fcacb,0xbc76cd22, -0x3ba5e23b,0xbc072eb2,0x3b9d7d22,0xbb238603,0xbbc96452,0x3c374c50,0xbb5caf9c,0xbb9c003b,0x3cbcc30f,0xbc7d91c9,0xbc9614e3,0xbcb5b2f5,0xbcc7bec1,0xbd023de3,0xbd1d0bb2,0xbd42e52f,0xbd157ca7,0xbcdea113,0xbcaba9ac,0xbc88192d,0xbc63017b,0xbc07374a,0xbbf17871,0xbba92f53,0xbb085acb, -0xba6c9e74,0x3b590961,0xbad2f87e,0x3b559f19,0xbb8019f4,0xbb9b9e61,0xbc08ed78,0xbbef30dd,0xbc2b6a89,0xbbe69037,0xbbf398dd,0x3b01c40a,0xba1b9a18,0xbc3b137a,0x3c8f623a,0x3a102d7e,0x3b9bc621,0x3cc757a3,0xbc702fce,0xbc3a867b,0xbca614b7,0xbc86b227,0xbc98fbe1,0xbca014fa,0xbca8a8bd, -0xbca11872,0xbcabf420,0xbca24a99,0xbca6850e,0xbc9c92d8,0xbc88b17c,0xbc633561,0xbc3b9294,0xbc526ff9,0xbc65ce88,0xbc7dbd76,0xbc8797a6,0xbc87c685,0xbc950e0b,0xbc602b2a,0x39a585d2,0x3c9550e1,0xbc645064,0x387f5c34,0x3cb2ad78,0x3cd2b0f3,0x3cb694bc,0x3ca6b798,0x3cd0513e,0x3cc3a949, -0x3c8ccc8b,0xbb0e638d,0xbc67f686,0x3c978d30,0x3bf6ebbf,0xbccf27cd,0x3d01f763,0x3ca714a5,0x3d21dbe7,0x3cba99ce,0x3cbd4d2c,0x3cb186c6,0x3cc9133e,0x3cd01896,0x3ccd76ab,0x3cc5659e,0x3ccb4b8e,0x3ce1b0b2,0x3cd9bd67,0x3cd43534,0x3cce9cf0,0x3cd66631,0x3ce0be8a,0x3cdf6072,0x3ce42fe5, -0x3cc8e5df,0x3cfbd3be,0x3ac2d540,0xbca7b393,0xbd5731b5,0x3c63cc34,0xbc8a9cd0,0xbd5ae70a,0xbd578a42,0xbd4cc754,0xbd352fc7,0xbd5fa201,0xbd552b11,0xbd36716e,0xbcc51330,0x3c814e05,0xbd39571f,0xbcfed1ee,0xbd80ea76,0x3cd46082,0x3d09fcb6,0x3d019b02,0x3ccfdcb6,0x3d23546f,0x3d322e0c, -0x3d3ed3ff,0x3d335675,0x3d331798,0x3d33d3ab,0x3d28b8ff,0x3d250fd4,0x3d1cdc86,0x3d1bf4ae,0x3d1b8f77,0x3d142063,0x3d084a9a,0x3d04c855,0x3d19cbf9,0xbca85186,0xb86b0a90,0xbc173fe4,0xbbc81033,0x3c8f1123,0xbc4be596,0x3b60cd89,0xbc4dd96e,0xbb1f2d8c,0xbc0a6484,0x3cddf000,0xbbac8450, -0xbc0108c4,0xbb545890,0xbc3267a1,0xbbe1e6ed,0xbc687ed3,0x3d421238,0x3cd00471,0x3cbf74b3,0x3c49add0,0x3d090a43,0x3d25546b,0x3d286a55,0x3d07f206,0x3d1557de,0x3d4fb6bc,0x3d33d9b6,0x3d31085f,0x3d12b9ff,0x3d292372,0x3d2bb5dc,0x3d36c320,0x3d12f433,0x3d3301cb,0x3c49ceb6,0xbce4a911, -0xbb1026b0,0x3c38dafb,0xb923115d,0x3b771cba,0x3b843a50,0x3b255e7d,0x3d0d6356,0xbbc9f595,0x3c76dacc,0xbbba76f0,0x3c6bbcd0,0x3c0c5037,0x3adfef5f,0xbc5af845,0x3ccbbfbb,0xbcfb1d1b,0x3c856b88,0x3d568f38,0x3cfdaf39,0x3c6e5998,0x3d4eebfe,0x3d8fd5ea,0x3da53d3f,0x3d8a3c56,0x3d89057d, -0x3d9068fb,0x3d81f588,0x3d74e635,0x3d62c36b,0x3d667fa4,0x3d50cd31,0x3d47b61e,0x3d28e182,0x3d253469,0x3c9681ab,0x3a208ea1,0x3cbe422d,0x3bb147e1,0x3ccbd546,0x3be4b5e0,0x3c3955c8,0x3b9fcae7,0x3bfb9514,0x3b4510a8,0x3c449941,0x3a9d1114,0x3c8aa2a9,0xbc155697,0xbb2ab8c4,0x3c0f58c4, -0x3a7e377a,0x3d012ce2,0x3d209779,0x3d10cf52,0x3c29eaac,0xbc43f78d,0x3cdcd252,0x3d12828f,0x3d4058bf,0x3d13e2be,0x3d1c0cc6,0x3d9a3343,0x3d6c84a0,0x3d63818a,0x3d2369c5,0x3d58895a,0x3d6754bc,0x3d6e9378,0x3d49f977,0x3d375f7d,0x3c7abf5b,0xbd12da38,0x3c11d6f8,0x3bcfee2a,0x3c9eebfa, -0x3caf040d,0x3b991370,0x3cb05eef,0x3c831ef2,0x3c54518b,0x3b8b130a,0x3c303851,0x3c857813,0x3c2c6ed8,0x3c0aa8f5,0x3c68b44f,0xbb5995ba,0xbd388509,0xbc9e3ec4,0x3cf55ca3,0x3d0827b3,0x3d6b60ec,0x3db3eef1,0x3db0e3ba,0x3d17fcee,0x3d3d064e,0x3cd3200b,0x3d1fa8d7,0x3d26c591,0x3d0fc7d7, -0x3cb96d98,0x3c01686e,0x3af0e18d,0x3bfbcfda,0x3c9176fb,0x3d0b3a0f,0x3c95a4a2,0xbc84b66d,0x3c3e4bd0,0xbc25a727,0x3c47893d,0x3bc120a6,0x3be8ada8,0x3c41a513,0x3c625642,0x3bd4eec8,0x3c924ba4,0x3c1ffd02,0xbc239933,0xbae432c2,0xbbf576e8,0xbd1adf60,0xbb942dff,0x3bc689df,0x3ced3d21, -0xbb432a73,0xbcf46d50,0xbd8a42fe,0xbd1fb6d0,0xbd56ec24,0xbd514eea,0xbd8c8c1a,0xbd59df54,0xbc877d20,0xbd14b2f4,0xbcf2b278,0xbcb86254,0xbb309770,0x3ccc554f,0x3db03d9e,0x3d4a3a85,0x3d439ff4,0x392b62c8,0xbd0260c6,0xbb28dfb4,0x3b51cc1a,0x3c7fe1e8,0x3c9f47d8,0x3c588420,0x3c3b5410, -0x3b9d632a,0x3b3e06d5,0x3a0b897c,0x3c309afc,0x3cebd3a4,0x3aaa2b2c,0xba9ed9f0,0xbc2a5ebb,0x3aaadcd4,0x3c6d5fbe,0x3d2df892,0x3d166628,0x3cf7c9a5,0x3d326f57,0x3d834e2f,0x3d789063,0x3c97df11,0x3c90d935,0x3c061869,0x3ccc454a,0x3d0f6c3a,0x3d347c20,0x3d51ac35,0x3d294814,0x3cb3a35e, -0x3cb5bfb1,0x3b9dc5a0,0x3c42645e,0x3c6c507d,0xbb54801c,0xb9b8b271,0xbbaa4214,0x3ceadc29,0x3cb5057a,0xbb9bb460,0x3bfe0fa2,0x3b438184,0x3c0e3ba8,0x3b02627b,0x3c05cab0,0xbaa46af3,0x3d0aa0ef,0x3d124ed2,0x3cf0169e,0x3b84d17c,0x3c536e37,0x3cf6cfae,0x3d4ddd28,0x3d8dc6fd,0x3e0711ba, -0x3e0e8b2b,0x3e0ddf51,0x3d60d712,0x3d841f05,0x3d075030,0x3b8b3ed2,0x3c9629ae,0x3c4cac06,0x3cd1218a,0x3cbb5ab8,0x3c9b2c99,0x3c00c2c1,0xbb568be9,0x3bf9c78c,0xbabe3b66,0xbb9f6635,0x3c0e4c6a,0x3c0475be,0x3cba3f07,0x3ce2b31d,0xbc5f6b7d,0x3c5b2af0,0x3bd3e27e,0x3a319463,0x3c20d041, -0x3c438ad0,0x3a9ed817,0x3cd38e1d,0x3d246da2,0x3ce63ab5,0x3d0d3506,0xbc0b631c,0xbc1af35b,0x3ca0c4f3,0x3d45dc4b,0x3df668c4,0x3dd68e6d,0x3d9aacf7,0x3cab627f,0x3c5799dd,0xbbec7319,0xbb9ac156,0xbd218a19,0xbd339e7c,0xbd763475,0xbcebf75e,0xbc41e9b7,0x3b593380,0x3bd84ac5,0x3c0c25de, -0xbb78965b,0xbb098b29,0x3c118fb9,0x3b4ba3e1,0x3c8593ea,0x3c55cf63,0xb997fd4a,0x3c459020,0x3c5a30ba,0xba89b9a2,0x3c41c238,0x3c802750,0x3ca6f056,0x3c9b561c,0x3c7a3b15,0xbbfb5149,0xbb03a433,0xbd3a5427,0xbbd9b639,0x3dc69255,0x3d93a541,0x3da30df4,0x3da3b50f,0x3d9ea142,0x3d2ac90a, -0x3d2bee83,0x3d4045cf,0x3daa877c,0x3d76f88c,0x3d7417dd,0x3d3af9c2,0x3cb177ea,0x3b14f13c,0x3c2247dd,0x3c003fbb,0x3c90fbed,0x3ce97451,0x3b9834de,0x3c1779ed,0x3c4b9341,0x3c74f263,0x3c8d6717,0x3c28e574,0x3b17e6f5,0x3b6b1377,0x3b2980a9,0x3b83d462,0x3c1c7c5a,0xbb99aee6,0x3c8a728a, -0x3b777ff8,0x3b106f32,0x3ca72f7a,0xbd1f6d82,0x3c48d484,0x3d0a13bb,0x3d275053,0x3d6d423e,0x3d707164,0x3d663c7c,0x3d48f1a3,0x3cf9b5b6,0x3c73b6ed,0x3c7a9d5d,0x3c2fb6a3,0x3b3a171d,0xbc83932f,0xbbe4f5cb,0x3ba2b706,0x3c9e6dfc,0x3c525da4,0x3bfa2ae1,0xbc638e5a,0xbc3db967,0x3c016d04, -0xbbf8f780,0x3c3447e0,0x3c56a4ad,0x3b9c9225,0x3cae51d3,0x3c3344b8,0x3c82cd3a,0x3c2704cc,0x3c8860fe,0x3c919736,0x3c025f6f,0x3c63947d,0x3b69084f,0x3bcb5cc0,0xbbe64892,0x3c26e6dc,0x3d29a3b8,0x3d0ae81a,0x3d177ed0,0x3d1043ec,0x3d1e30e8,0x3d34f220,0x3d05fac9,0x3d00fe6e,0x3d02edbc, -0x3cf261c2,0x3cd68879,0x3c9bb799,0x3c996aa2,0x3c6fed9e,0x3c85a138,0x3c7bdbe4,0x3cabb4e4,0x3c90c1ce,0xbb5fdc27,0xbb040e4c,0x3c27b215,0x3b63dc04,0x3c33e1f1,0x3c2b89f9,0x3aaf5ec5,0x3b839921,0x3c1fc462,0x3c25e701,0x3c0a191f,0x3ba5ef51,0x3c425237,0x3bf3321b,0xbbce83c9,0xb9349b6f, -0xbc154ac4,0x3cb67208,0x3cb1bb2d,0x3c8eab66,0x3caf8b17,0x3cb891a9,0x3ccdcfae,0x3ce5bac7,0x3cdc17ce,0x3ccb25b6,0x3cb61e5a,0x3ca1d44d,0x3c9705c7,0x3c8b7748,0x3c855e6a,0x3c6914f2,0x3c3e3d19,0x3c48df5c,0x3cd4d207,0x3c5c8168,0x3c054c96,0x3c0774e2,0x3c5d5b45,0x3c23482d,0x3bf2facc, -0x3c07a6d1,0x3bb1ffe5,0x3cdff8ef,0xbc257154,0x3c90c2e5,0xbb26dea2,0x3c21dd07,0x3b89be72,0xbc1e4aa5,0x3a6a5712,0x3c1ab699,0xbcb6c6d5,0x3c2d1807,0x3c376424,0x3c85547b,0x3c994943,0x3cb6a43c,0x3ccf0a3f,0x3ced953e,0x3cc201ec,0x3ca5b834,0x3c8fa6fa,0x3c77917d,0x3c3ffc86,0x3c0e8f4e, -0x3c16b4fe,0x3c271138,0x3c58819a,0x3c3a662c,0x3bffec17,0x3c4ce60b,0xbb928197,0x3b1410e7,0xbb2d0878,0x3b21afef,0xba769abd,0xba0c2b98,0xbb649ccc,0xbb356d6e,0xbbc3e54f,0xbaeaa533,0x3c84931c,0xbc4f5e16,0x3af948cb,0x3ab603c1,0xbc898fda,0x3c2ac5da,0x3a2e8807,0x3ca1240b,0x3c7942e6, -0x3c81b3a5,0x3c840439,0x3c8958f3,0x3c8a66b8,0x3c95a33d,0x3c9091b8,0x3c8f0360,0x3c881ba2,0x3c80fda3,0x3c7abfaa,0x3c6d8010,0x3c7525bf,0x3c70d2c3,0x3c6c120e,0x3c7b58f7,0x3c80a05a,0x3ca82dd8,0x3b919029,0xbc639bc7,0xbced6a02,0x3ba1d05a,0xbc6708f8,0xbd081f6b,0xbd15c3b0,0xbd01755f, -0xbceddaaf,0xbd103a66,0xbd09cc1d,0xbcd782c0,0xbc295eb7,0x3ba2270c,0xbcdf65f5,0xbc9fafea,0x3ca5402d,0xbc8fa708,0xbb20251a,0xbd08326f,0xbc864c92,0xbc76c649,0xbc665b8e,0xbc7dd8c7,0xbc887715,0xbc96931f,0xbc95d539,0xbc97097e,0xbc916a6c,0xbc8e386a,0xbc909a91,0xbc99f60b,0xbc9cba68, -0xbca21dab,0xbc9bffdd,0xbc9eaa61,0xbc869acf,0xbcb9ae63,0x3c625457,0x3d013e70,0x3d2b7637,0x3b977f57,0x3cfb0458,0x3d3104f4,0x3d33b242,0x3d27f64d,0x3d15ce48,0x3d43757e,0x3d3f0b49,0x3d312bd3,0x3d11cf07,0x39e0a307,0x3d12a242,0x3d1cd687,0x3d7d549c,0xbb9166a5,0xbc510d43,0xbc01ae0d, -0xbb83d1d4,0xbc53975a,0xbcaf4809,0xbd031fdc,0xbd0ad0a3,0xbd07970a,0xbcda31f5,0xbcbe048e,0xbcbaf90f,0xbcddc6f9,0xbcde8a66,0xbce4953a,0xbcd0a60d,0xbcc0dcb3,0xbcc6e616,0xbcfe2f9f,0x3cdb786a,0x3c280802,0x3c945684,0x3cbf734b,0xb9cbcf79,0x3c6b438e,0x3c19b843,0x3cc5be1d,0x3c3937dd, -0x3c879cd3,0xbc9cfbf0,0x3c84319f,0x3c850084,0x3c485cac,0x3ca2ab61,0x3c3fe6ad,0x3ce31b5d,0xbcfa278f,0xbc688618,0xbb3f8ee0,0x3bce24b6,0xbbc4ef2d,0xbc757772,0xbd053aea,0xbd0d99a1,0xbd0e9515,0xbce4d642,0xbcaf0cc9,0xbcbafcff,0xbcf068ec,0xbd097ec6,0xbd0bfeac,0xbd0c4075,0xbcdf4815, -0xbd150f8e,0xbbf86f9e,0x3d1704ec,0x3c41e143,0x3c3e042b,0x3ca7ae6f,0x3c37b422,0x3bfe8f86,0x3beacb77,0xbca6b753,0x3cae9fbf,0xbbe4618e,0x3c8f514c,0x3bc2ae2b,0x3b32705c,0x3b9b579e,0x3c89ba7c,0xbc59cd0c,0x3d4b17ce,0x3ca162bd,0xbc2423de,0x3c8c1215,0x3cecda4d,0x3be74496,0xbcb72eb7, -0xbd56b403,0xbd823f35,0xbd6e4d91,0xbd189b05,0xbcdd39d5,0xbcbca4fb,0xbd1912fb,0xbd291046,0xbd2a2f6c,0xbd152091,0xbd15ece3,0xbd1e2af0,0xbcb81e1a,0x3b1fcd2b,0xbc6a6644,0x3c7cc0b1,0xbb84920c,0x3c672931,0xbc1759c7,0x3c8f4820,0x3be4cd36,0x3b994e77,0xbc08e19b,0x3bb2c5a3,0x3c1189cb, -0x3c95dc3e,0x3bef8276,0x3c139e1f,0x3b97f2e1,0xbbe843d2,0xbc350e7a,0xbcd95992,0x3c926391,0x3d0aeda3,0x3c9a3fef,0xbb112855,0xbd1b082d,0xbd3fd4ba,0xbd43c9d2,0xbd076887,0xbc981737,0xbca9cddb,0xbd056814,0xbd32887e,0xbd4bccd6,0xbd3f24da,0xbd2d7b4a,0xbd2fffaa,0xbcd23a2d,0x3d1b0893, -0xbbe8f869,0x3c6da475,0x3c03bdbc,0x3af6dc2d,0x3a595434,0x3b0b02a1,0x3c151633,0x3ab8887b,0x3ba3232b,0xba4f0e0f,0x3c826f5b,0x3b3f0187,0xbb4f4f81,0xbae763f3,0x3c813888,0x3cee2ec7,0x38e57237,0xbd9fe768,0xbd82c40e,0xbdc23252,0xbd475fc1,0xbd3239d8,0xbd5bca95,0xbd8f1d4c,0xbd8e1ced, -0xbd77f426,0xbd628064,0xbd06266f,0xbc8c0749,0xbc05c215,0xbbbff1af,0xbcc95993,0xbccfb104,0xbd109ab4,0xbcd5f1ca,0xb985a7e5,0xbca0953c,0x3c0afc7a,0xbba1ce4d,0x3c74f47f,0x3c5bc1f1,0x3c4f5ed5,0x3c1170f5,0x3b8da76c,0x3c686c09,0x3ba8556a,0xbaf67001,0xbbfaa83a,0x3bcb0e25,0x3cd37102, -0x3a9d3559,0xbc6010fb,0xbd2de45c,0xbdc810ed,0xbd7f9551,0xbd099d43,0xbb68e6db,0x3b2893e4,0x3b849b31,0xbce928e2,0xbce17890,0x3bfabe8c,0xb9cd2a7e,0xbbb6455a,0xbc32342b,0xbcdc7494,0xbd1ea04f,0xbd648ba9,0xbccbcdd3,0xbd0473e6,0x3bc01368,0x3cae222e,0x3b5dd04f,0x3baad07a,0x3c0dbf90, -0x3c0b68cc,0xbad8b203,0x3ba024ca,0x3ba363a9,0x3b8eca2b,0x3aa24602,0x3ae73e7f,0x3c6af6fd,0x3c8095d3,0xba1b4278,0xbcc2e226,0xbbba0db3,0x3d02f762,0x3c7a907f,0x3cc3050a,0x3cb4e1a3,0x3bf0cd56,0x3cc5dec4,0x3b04b62a,0xbd74fe53,0xbd99687a,0xbda2bbde,0xbd0154d4,0xbd3d594b,0xbd1fb620, -0xbd1def6d,0xbd3c5dbd,0xbd095eb3,0xbcb091eb,0xbc74f0d9,0xbcc9c18d,0xbc6ff354,0xbb775ca2,0xbab26c39,0x3c657293,0x3c8d4dbe,0x3c8fcd5c,0xbb9dd2d9,0x3bf703c2,0xbb9297fc,0x3b153e9a,0x393361fb,0x3c18e47d,0xbbc5e026,0x3cc5e69f,0x3d0bf6ea,0x3d140409,0x3d20abf4,0x3d31db66,0x3d1e04b7, -0x3d849381,0x3d834058,0x3cba1ff1,0x3d008c3f,0xbae938e6,0xbd6d9e9a,0xbd4073ca,0xbd2b5d78,0xb9e49c6f,0xbd492423,0xbd50ace0,0xbd60f0d7,0xbd5ca0c3,0xbd34d609,0xbca63461,0xbca40dea,0xbcf9ef06,0xbc211ccd,0xba236597,0xba655ffb,0x3b39c67e,0x3cdb63a4,0x3c55bcf0,0xbb06be75,0x3b6c1721, -0x3b9be8d9,0x3be5719f,0x3ae74ed7,0x3c517f58,0x3b42d148,0x3cfe438f,0x3cee5365,0x3d3958de,0x3cd018aa,0x39cd05fd,0x3c11f6b7,0x3c181882,0x3ccbde36,0xbb463618,0x3d0cdecb,0x3d3797e5,0x3cbec9be,0x3d43ffae,0x3d51bfe9,0x3d3b3f5d,0x3c917310,0xbbe90a40,0xbbec3b96,0xbd02dfd5,0xbd2a64eb, -0xbd3d47fd,0xbd127901,0xbcf25bcd,0xbc152be3,0xbb3cf563,0x382fdcab,0x3be8acab,0x3be96aca,0x3bb6bd22,0xbbf7d2cb,0x3bae221e,0x3be538e3,0x3ac23d97,0x3c16bc9d,0x3c85082e,0x3c9b36ba,0x3ca12e41,0x3c75da21,0x3be21d89,0x3b5a8e85,0x3d99be83,0x3d6a5059,0x3954eedd,0x3c2fcc81,0x3c2fec26, -0xbbc71030,0xbcd8af53,0xbcfe7cfc,0xbb663ae5,0x3cb809e8,0x3d5fcc50,0x3d4c5eef,0x3ccfd865,0x3c901c7a,0x3cc4606c,0x3cb10ec9,0x3c5b3a13,0x3cb04a3c,0x3c567ee7,0x3b9b97c9,0x3cca5867,0x3c4772a6,0x3b87bdfc,0x3cadfa17,0x3ca9fbbf,0x3c71935f,0x3c6451d0,0x3bca6c00,0x3bf1f611,0x3c2e6147, -0x3bfca6c4,0x3c7de36c,0x3c7310ce,0x3cd160b0,0x3d0a09e3,0x3c0b7fe4,0x3d13ad49,0x3c97d45c,0x3a742314,0x3b94666d,0x3c10ad25,0xbbdcc302,0xbc88ee9d,0xbcbbac6e,0xbc9f6d82,0xbc3533b0,0x3c2924c2,0x3a40e00a,0x3baf55a2,0xb9edcd4b,0xbc0d90ae,0xbc4e12c1,0xbaebb1f4,0xbba5d680,0xbb27091e, -0x3be8112f,0xbaa60a7f,0x3ad09ec4,0x3ca6e5de,0x3bc86516,0x3c102d87,0x3c775994,0x3b3a4a59,0x3c3abf24,0x3bb53ce2,0x3c855e3f,0x3c96d8ac,0x3c751667,0x3cb6930a,0x3c54a662,0x3c7984ca,0x3c8d9c54,0x3d034fef,0x3cab0902,0xbb4938b2,0x3b841362,0x3bb6e160,0xbaaa56dc,0xbc242055,0xbcae22e7, -0xbc91a7aa,0xbc44a619,0xbabf61b1,0x3b6ee44a,0x3bb61a9a,0x3ba4d77e,0x3b93a1a6,0x3bf63fe2,0x3c64a079,0x3c2356b0,0x3c0a0835,0x3c4b3b85,0x3cb74e95,0x3c8d759c,0x3c437a5e,0x3c83fa6c,0x3c06c42f,0x3c22e579,0x3c82d665,0x3c6351a8,0x3c21a9ca,0x3c402f0a,0x3c3302a3,0x3c642d96,0x3c28fcd6, -0x3c596641,0x3cb60daf,0x3cab0340,0x3cc7f0fe,0x3ba891f3,0xba2a37d4,0x3b64f390,0xbb02f97d,0xbb2bcdf5,0xbb5a7916,0xbbb1bc68,0xb9ac4c9d,0xbaf3f657,0xbb511543,0xbb33efc1,0x3ab92a77,0x3ba0aa67,0x3bbd92cc,0x3be38db2,0x3a2f92ce,0x3bb7c933,0xba840e0f,0x3c3c4139,0x3c88085e,0x3c3d7322, -0x3c1d0f80,0x3c30f615,0x3c67a00a,0x3c79781a,0x3c47fff2,0x3b9fe1af,0x3cde8d9b,0x3bb9f944,0x3c891a2f,0x3be00e8d,0x3c2af179,0x3c9232c9,0x3c3f8d81,0x3c07d1a5,0x3c8443bf,0xbaf148e0,0xba19765d,0xbbb0b949,0xbbe2369e,0xbc3cd7e3,0xbc81d4f3,0xbca61989,0xbcb515cf,0xbc9b568f,0xbc8498ea, -0xbc7223e9,0xbc71cdcf,0xbc4efeb3,0xbc64ad7c,0xbc452027,0xbc2eda18,0xbc208092,0xbc2df2d4,0xbc13555d,0x3c27d608,0x3c0f242b,0x3c7cab2c,0x3c67623c,0x3c875984,0x3c8f1a9e,0x3cb00fb7,0x3cb5ded8,0x3ca7f87c,0x3cad1b1d,0x3c19067e,0x3cc9f42a,0x3ca40a86,0x3c565461,0x3c9c3420,0x3c148d98, -0x3c7e1969,0xbb177298,0xba5869cb,0xbab738e3,0xbafb557b,0xbb033e46,0xbac7ee54,0xbab1d574,0xb9e398f1,0xbad7978b,0xbb420a72,0xbb4f32c8,0xbb497306,0xbb483f28,0xbb1ac653,0xbb237704,0xbb22d7df,0xbb124c38,0xbaba1970,0xbbbcff66,0x3c430cbb,0x3cc23b49,0x3cb3e699,0x3c5b5729,0x3cd35999, -0x3cc7238d,0x3cd16521,0x3cba251c,0x3cb1a429,0x3ccb3974,0x3cc6715d,0x3caab85b,0x3ca8ad2d,0x3c32b9b3,0x3ca116a0,0x3ccc9bc9,0x3b6302c2,0xbc006adc,0xbcc5527e,0x3bbdae3d,0xbb84fdbd,0xbb9d9ff6,0xbb8db3f0,0xbb8a1564,0xbb7ddf92,0xbb71152b,0xbb8b88ab,0xbb8a68cb,0xbb118e80,0xbae3428d, -0xbabf4d62,0xbafd78bc,0xba9eb96c,0xba814d80,0xb97124d4,0xba5e3ff9,0xbb1776e7,0x3b243121,0xbcddc14c,0xbd07e953,0xbc84834d,0xbcafacd5,0xbd09ad8c,0xbca6615b,0xbcaea8fc,0xbca11425,0xbc9a7d10,0xbcd64524,0xbcd70763,0xbcd23934,0xbd188e10,0xbcb2715a,0xbc9cfb81,0xbd1d7713,0xbd1542b4, -0xbc01c5ab,0xbbd71af2,0xbc32e92c,0xbc375566,0xbc8269d2,0xbc70ecd9,0xbc2779c9,0xbc0dfad5,0xbbbf8c16,0xbb1644e2,0xb9c14138,0xba89335a,0xbb92519d,0xba9791bc,0xba8f257f,0x3ad08a90,0xbb2980e2,0x397a6deb,0x3c0a1050,0xbcdceffb,0xbc6f1a8f,0xbc2d221c,0xbcd4e3cb,0xbc5f1979,0xbc51b4e1, -0xbc851d1c,0xbcc8bfe6,0xbc9405cc,0xbcb38224,0x3b54fac8,0xbc41a677,0xbc956a61,0xbca1973d,0xbcbdcf95,0xbc9402e4,0xbd23d086,0xbc0a163c,0xbc34e588,0xbca3c15d,0xbc9b1059,0xbcd558c1,0xbcc13292,0xbc7b9966,0xbca47b79,0xbc81f216,0xbc0217fd,0xbb7d15d6,0xbb06a9b3,0xbbe1fe0e,0xbac76b79, -0xba86b622,0x3bd238c7,0xbb967b0a,0x3bd8c50a,0xbc312ab4,0xbd22e75b,0xbc43ba21,0xbc4ab207,0xbc8445e7,0xbc01b251,0xbc4cba67,0xbbe23d04,0x3add284f,0xbce1bf12,0xbb868d1d,0xbc9da32f,0xbb23d732,0xbc34cced,0xbc889bbc,0xbcd4e996,0xbc88083d,0xbce8c789,0xbc1bf014,0xbc503111,0xbcb79edf, -0xbcc4c199,0xbd36da88,0xbd279710,0xbcbedf3e,0xbcb15a80,0xbc3855e7,0xbb8a2161,0x3a4a35c7,0x3a853975,0xbc3258b9,0x3a52c270,0x3b23348d,0x3c2aee05,0x3acb4ca4,0x3c248eef,0x3b61f839,0xbc56fd16,0x3c530a4f,0x3b56f14b,0x3c33c092,0xbb9d2489,0x3c089048,0xbbf4deaa,0x3b74e4e3,0xbaa30368, -0x3bc4f99c,0xbb42bf73,0x3c18ebc4,0xbc21a564,0xbbcf78d1,0xbc619a98,0xbc43b563,0xbcf7d600,0xbccea90f,0xbc4abacf,0xbd09cd9e,0xbcf32cbd,0xbd4b779d,0xbd3218a9,0xbce1b03a,0xbd1c82cf,0xbcf02e17,0xbc533d34,0xbb7ceae0,0xbb3e48cb,0xbc482424,0xbb3c064e,0x3a8ad7df,0x3c6af16b,0xbb8fd744, -0x3bf97144,0x3b9d2ace,0xbd4c0fdf,0x3bc372a2,0x36fcdde8,0x3c33d4f8,0x3c4c2c4e,0x3bb17d53,0x3c85ecae,0x3c46d690,0x3bc4d84b,0x3afdf2ce,0x3bab8e1f,0x3c45f14f,0x3b18aead,0xbbcde3bd,0xbc80d39e,0xbd13e0c5,0xbd5a16da,0xbd8b550c,0xbd00f58a,0xbd29f38d,0xbd4ef15f,0xbce74fd6,0xbcc8a78e, -0xbca1b539,0xbc182545,0xbaf25343,0x3bb6ed24,0x3ca17181,0x3cc9c8bc,0x3cb3edee,0xbc0d9561,0xbc95169c,0x3d1b2392,0x3ccc8086,0x3ca497f1,0xbc006fec,0xbc84e145,0x3c823911,0x3acf1eab,0x3c2673f8,0xba17c449,0x3c9c6028,0x3c216a6d,0x3c1ec547,0x3bec5173,0x3bd352c3,0xbbbcddc3,0xbc08fa8a, -0xbc83061f,0xbcedf509,0xbcd72325,0xbd1327bd,0xbd1c46b9,0xbc7604ec,0xbcdfe352,0xbd249e22,0xbd0564d0,0xbcfaca62,0xbcd1d2e2,0xbc99e2b5,0xbd084c30,0xbd0f5e9f,0xbc702fe5,0xbd08869d,0xbd1916de,0xbd3b7209,0xbcb986d5,0xbc5ac0e1,0xbc9985da,0xbcc6df08,0xbbaeec1b,0xbcbddea2,0xbcbbc779, -0xbc17b1f5,0x3b3fa8c6,0x3c5ffb80,0x3c88c7e2,0xba8e9ea9,0x3ae2a601,0xba612a27,0x3b403ea0,0xbb43badc,0x3a4b1892,0xbae0e494,0x3ba5103f,0x390c36fe,0xbce65a0a,0xbcf38e75,0x3b9a1af5,0x3cdbf7b4,0x3cfc1977,0xbb21d50e,0xbcbfd80b,0xbd38bb06,0xbd5f01f9,0xbd3cebaf,0xbcf76128,0xbc86bbc0, -0x3b8e927c,0xbb9f4781,0xbc74feb9,0xbce382e3,0xbcca26f6,0xbcc441bd,0xbca1a3c8,0xbc77f77f,0xbb9f11af,0xbbe340eb,0xbc862b34,0xbb4bd663,0xbbb82f8f,0x3c7ed4bc,0x3c23631b,0xbb1c8f5e,0x3b1549d5,0x3b38755e,0x3ae530da,0x3a6661a8,0x3ba651ff,0xbc23c1bf,0x3c87315c,0x3cad4259,0x3cd25ef2, -0x3c622ca9,0x3cf61172,0x3d18c718,0x3c80bcc7,0xbc171e43,0xbd25f751,0xbcb3767a,0xbc8a033b,0xbc93ac61,0xbc485c02,0xbc3631dc,0xbc04bd6e,0xbc562151,0xbce34e1f,0xbd29f2e4,0xbd340712,0xbd2b582f,0xbce9ac52,0xbc8ba266,0xb9ff9475,0xbc521f31,0xbc99722b,0xbb32bcf1,0x3c0b4fea,0x3baeb15a, -0x3c23052e,0xbb1b82e8,0x3bb9dadc,0x3b4b8d96,0xbb0cd7f7,0x3be89e4e,0x3c174df9,0x3badca14,0x3c92d149,0x3ce4433a,0x3d02bbd7,0x3d1381dc,0xbba7f97d,0xbd107efd,0xbd8be01a,0xbd73d85a,0xbd260cfd,0x3b00f6c1,0x3c5f6e7d,0x3c41be81,0xbd14b39f,0xbd81dcfa,0xbd5a14b6,0xbd75820f,0xbd3c83a4, -0xbd22f31d,0xbd16a455,0xbd07c42e,0xbcc6d3e2,0xbcbf27ce,0xbc3b8cc9,0xbc731775,0xbc07df33,0xba88f469,0x3a97bd45,0xb9b4437b,0x3b2bebda,0xbb8fa884,0x3b051c46,0x3bb16d16,0x3b8c640c,0x3b49066b,0x3c0d3f67,0x3ca319fd,0x3ca1e9a5,0x3c45a0e5,0x3b96318c,0xbc00fd80,0xbcf45707,0xbd1bfb54, -0xbd140404,0xbd5948c8,0xbd1ac8ec,0xbd0c8016,0xbcd54cd3,0xbc2c7011,0xbc1eac7b,0xbb959c04,0xbb39644b,0xbc295444,0xbc584f70,0xbc9dc71d,0xbb7e3c34,0x3b8f406b,0x3c10f5d1,0x3b8f8c15,0x3b39ea9e,0x3ba24d00,0xbc699e56,0xbbe9d35d,0x3c558243,0x3ca4f977,0x3ca3e37d,0x3b81b924,0x3bcf7c78, -0x3c1c8f4d,0x3c35b7f3,0x3bcbc327,0x3a4673bf,0xbb8c77ae,0x3bc8911b,0x3c3a707b,0x3a5c18f6,0x3c810041,0xbc02fe28,0xbd0d8175,0xbcdc4347,0xbcabc577,0xbb32dc9a,0x3a8d5707,0x3b7cfa29,0x3be9b37d,0xbca08616,0xbca745b2,0x3a0a69ba,0x3ac81748,0xb989781a,0xbbff3154,0xbc609c16,0xbc54b7c8, -0x3a3a76f0,0x3c09bbae,0x3c232d77,0x3bbaa2b5,0x3bccea68,0x3c26cfa1,0xbb367b24,0x38e73dc8,0x3a9810ec,0x3b2fac39,0x3c6dee61,0x3c3ee64b,0x3c04bf2d,0x3c48306c,0x3c5a0c75,0x3c0f2159,0x3c05bf71,0x3bceb613,0xbb2d4de1,0xbc86ea3f,0xbc6420aa,0xbc198d50,0xbadbddb2,0xba8fa981,0x3bf7169b, -0xbaa586ea,0xbba21c5a,0xbb34c0ba,0xbc1df6a2,0xbc214304,0xbc2382e1,0xbb281d01,0x3b463652,0x3bc8d29c,0x3bbfbf5d,0x3c1745cf,0x3c8e2a77,0x3c88a805,0x3c8262ca,0x3c2586f2,0x3b23228b,0x3b7c186d,0x3b725914,0x3b639687,0x3c05c6e0,0x3c427792,0x3bb8d12f,0x3c04f4f2,0x3c129d81,0x3bffe5e4, -0x3bd3cb27,0x39b42044,0x3b382131,0xb9acdd72,0xbc29f12a,0xbbda5852,0xbc20a828,0xbb854e4b,0x3b3ee53f,0xba55af8d,0xba11138e,0xbafe556f,0xbb5f9ea8,0xbc1a292d,0xbc26e0e6,0xbc5be102,0xbca6c350,0xbc212ba3,0xbb52bb48,0x3b29f082,0x3bcab824,0x3c0d5e3f,0x3c1b2325,0x3bc304d3,0x3c4a4d54, -0x3b5a5d69,0xbab57f0b,0x3b86c8dc,0x3b0edad5,0x3bd142d5,0x3bd7f763,0x3bc063d7,0x3c12e0e8,0x3c000222,0xbb9bd0a6,0x3bd1a92e,0xb8e7232e,0x3be3c134,0xbb59d8f0,0xbbd8533f,0xbc173dda,0xbb787e23,0x3af21a9d,0x3bf5aa99,0x3ac550cc,0x3a069011,0xb9c7440f,0xbb289339,0xbb51d47f,0xbaf9d0ea, -0xba0b2316,0x3ad564a3,0x3b85b39c,0x39e822c1,0xbba562be,0xbc19d8fd,0xbc2ce612,0xbc13b2ef,0xbbe30ad1,0xbbb91705,0xbb5bc2f0,0xbb728b20,0xbc12da96,0xbba29318,0xbbc300a0,0xbb85b5b5,0xbae5db04,0xb97f1cae,0xba1276da,0xbb1e0378,0x3b1a69c4,0x3b4c140d,0x3c4ec1f7,0x3baa1544,0x3b8a04c1, -0x3c202aba,0x3bd905bf,0x3aa57c4a,0xbc3fd609,0x3b7a2f9e,0x3b67dce8,0x3b5de9ec,0x3b4afbc7,0x3b5b30d2,0x3b3ef9d1,0x3ae6cc03,0x3aa7edaf,0x39db9908,0xb97fd9bf,0x3a1f4b9f,0x3b383a41,0x3b8a9ee6,0x3bb122cb,0x3baa10b3,0x3ba8438b,0x3b9dfcc7,0x3b99e5ad,0x3be2b28c,0xbbf7dbb4,0xbc4399c7, -0x377527a9,0xbbfe571f,0xbc463df9,0x39b7219b,0x381c6983,0x39bb05f7,0x39d3c173,0xbb1e9f4f,0xbb71b46b,0xbb146d04,0xbc314606,0xbbf55dc0,0xbaf784ae,0xbc54e686,0x3b6bee0d,0x3caa6281,0x3cd7ff48,0x3bdd088f,0x3c3680b9,0x3c5b7b82,0x3c699cd1,0x3c8141f6,0x3c8192d5,0x3c6dccd3,0x3c54f703, -0x3c4e06ba,0x3c50e8ea,0x3c51ed2b,0x3c539c18,0x3c5f284c,0x3c52ea24,0x3c5b7612,0x3c643807,0x3c617821,0x3c58aeba,0x3c595942,0x3cdb5efa,0x3cae2b33,0xbc601649,0x3ce3388d,0x3cbff89a,0xbc33772a,0xbc26ffef,0xbc2c5812,0xbc01e75d,0xbbcc43f6,0xbb90e4d2,0xb7f43f99,0x3cb4e884,0x3cddc1eb, -0xbc21b1c7,0x3c91044a,0x3bf341dc,0x3c7d9adb,0x3c1abcc1,0x3c7ccdf5,0x3cafce82,0x3d0b4b14,0x3d107466,0x3cf3c8e9,0x3cc038ad,0x3ca4c82c,0x3c9b0c93,0x3c8fe702,0x3c9493a9,0x3ca38a76,0x3c8113eb,0x3c8d846e,0x3c9914a2,0x3c957603,0x3c879d49,0x3c8b1771,0x3c95d2fa,0x3c90c310,0x3c13d8ab, -0x3cc41d7d,0x3cc16ea9,0x3be758d4,0x3c8ae803,0x3c80a964,0x3c6ccd79,0x3c702216,0x3c296b6a,0x3c45fa8b,0x3c5c5ea9,0x3c6445d1,0x3c3397a9,0x3c206291,0x3c83d6b8,0x3b0f87c4,0x3a4f461e,0x3c5920ad,0x3ca99f4b,0x3d2ed3ff,0x3d437f0d,0x3d0af809,0x3cc47c9d,0x3c92f2d8,0x3c96f39a,0x3c936fd1, -0x3c9710a3,0x3cafb35d,0x3c99c532,0x3c9d9e0a,0x3cc54fbb,0x3cb878ee,0x3c99e7da,0x3ccad7a1,0x3ce56816,0x3c9de40e,0x3cdb9c95,0x3caf9dcf,0x3c57c5f4,0x3cbc04b6,0x3c01eb27,0x3c6adc0a,0x3cbbc570,0x3c22a3cd,0x3c812eea,0x3c745e1e,0x3c718972,0x3c470b67,0x3bcc2683,0x3c2881fa,0x3bcc36ef, -0xbb8998b6,0xbc1f783f,0x3b0bfe7b,0x3cb54fd2,0x3d875e3d,0x3d9d17fe,0x3d712eb4,0x3d1ea105,0x3cc8d555,0x3cab30ed,0x3c9ef6fd,0x3ca5e0d0,0x3cd9355f,0x3c90524a,0x3c95e6b3,0x3cc94051,0x3cb7ebbf,0x3c926b13,0x3cc5e09a,0x3cc41183,0x3c8427f9,0x3c8e63a5,0x3c410227,0x3c6a71bb,0x3c4084f0, -0x3c7f7eed,0x3ba6f5b9,0x3b901d40,0x398049e6,0x3bef3d84,0x3c6ac153,0x3c2089b8,0x39fe10ac,0x3a70f217,0xbb95361e,0xbc068bc3,0xbc35a070,0xbca71493,0x39c9515e,0x3c1d9ed0,0x3d8aa66c,0x3d99c686,0x3d531cd3,0x3d05fb0b,0x3c893f6d,0x3c7c42e4,0x3c7ebd94,0x3c92060e,0x3cd32b2c,0x3cbdfe86, -0x3cce2d25,0x3d032739,0x3cf79dc6,0x3cc69041,0x3cc641bb,0x3cf187f0,0x3c53a1f9,0x3cc42f23,0x3c53e5b3,0x3c045cb5,0x3bf4964e,0x3b85f86f,0x3c126594,0x3b6fac80,0x3b77ba57,0x3af61e7f,0x3c0ddeca,0x3b68df5a,0x38b9edf8,0xbc8448fd,0xbc3265e2,0x3cd98ba3,0x3d2b8200,0x3c43124a,0x3c9028c3, -0x3c8b3dcf,0x3ca0065b,0x3cd11406,0x3d0d64ab,0x3cb0c92b,0x3b7c3ace,0xbc8fc995,0xbc6ccfef,0xbcd2cbc2,0xbd251f70,0xbcab21ef,0xbbc70b03,0xbc19e47e,0xbbaff5bb,0x3ad62aff,0x3ca7fd01,0x3cbd6c68,0x3c3805d6,0x3ca788f9,0x3c2636df,0x3c5f9f31,0x3c9f84b1,0x3c4e3157,0x3b9581df,0x3b08e1e6, -0x3c087818,0x3b8135c6,0x3c23294e,0xbbb0bf31,0xbabc5c4c,0x3b4d33ce,0x3ceeda7b,0xbc82337f,0xbcff7402,0xbd4a7156,0xbcbc3113,0xbbb78f71,0x3d56377c,0x3d673fea,0x3d10c3a4,0x3ad76a7b,0xbc6db09f,0xbc52e08f,0x3c3ff985,0x3ceabc06,0x3cb31ac4,0x3d032d03,0x3cf77d41,0x3d18efdd,0x3d0231fb, -0x3cc2a39e,0x3c971c5f,0x3b98c4be,0x3c80c4e3,0x3c78f577,0x3cb1b4bc,0x3c9dd339,0xbac7b93f,0x3a7c25d4,0x3b092708,0x3bd82c5f,0xbb6eca5b,0xbb7d1d86,0xbb0cd06e,0x3c5afe67,0x3c512e1e,0x3a57c7f3,0xbb8fb075,0x3d09d279,0x3d43ad1a,0x3d1fe62a,0x3d15558d,0x3d724307,0x3d6a5ce2,0x3d20833c, -0x3d5f1941,0xbcb8ed61,0xbd208c40,0xbbadda1b,0x3bf43d02,0x3cc84c31,0x3ca5322a,0x3c88013d,0x3c570f7e,0x3c79877f,0x3c848842,0x3c26f06d,0x3c01257b,0x3bf75805,0x3b7026ee,0x3c90d618,0x3ca47eeb,0x3c74dbaf,0xbbd771a0,0x3b95e8f0,0xbbbd630f,0x3a5021d4,0x38160f88,0x3bd29589,0xbbf4ece6, -0x3ca39374,0x3ccb7266,0x3d2cdbe1,0x3cd08f22,0x3d29d5cf,0x3d66b2d8,0x3d82dfb4,0x3da75c5d,0x3e08da43,0x3daf7b60,0x3d9e6e90,0x3d8417b2,0x3a83e5ae,0xbc6a7a29,0x3ca748bf,0x3ce474fe,0x3d2be5e9,0x3cb8fc5b,0x3c929510,0x3afc0609,0xbc2a49f1,0xbad783e2,0xba726dce,0xbaf8837d,0x3c16f298, -0x3b9ec350,0x3cbb1c0c,0x3c59cb42,0x3be05b53,0x3b82576f,0x3b0b8b92,0x3b835793,0x3bc53593,0x3a1c2688,0x3c1a89d7,0x3c244098,0x3ca7c640,0x3ce3250d,0x3d31edab,0x3d3192a0,0xbc7a0c9e,0x3c8aaa75,0x3d6bb944,0x3dbe0f76,0x3e13bd1a,0x3e07e336,0x3ddc20a8,0x3d237339,0x3c95b07d,0xbbb1e3b0, -0x3c01e0ff,0xb7e41170,0x3bd08a9b,0xbb7f19b1,0x3c399a6a,0x3c4b1362,0x3bfb96eb,0x3b3bae59,0x3aa17487,0x3bba6122,0x3a771a5a,0x3c095930,0x3c8ecbf5,0x3c40bee0,0x3c3baf9b,0x3c057828,0x3b376867,0x3b5ccc82,0x3c27de61,0x3b93fcd5,0x3c07ee48,0x3cae0f71,0x3cbd3121,0x3cfc3b8b,0x3bef1d52, -0x3c20687d,0x3d2aad1f,0x3d58172a,0x3dcbd370,0x3da50b1f,0x3d787fcb,0x3d8d9cf9,0x3d8a52ce,0x3d9c8e57,0x3d5a3a34,0x3d8163ab,0x3dbdd55c,0x3d917792,0x3d336d38,0x3d16915c,0x3c339bc5,0x3aaedf8b,0x3ac62016,0x3bc85b72,0x3bdfeb35,0x3c76826d,0x3c968fc5,0x3c87495a,0x3c0c0d06,0x3c94cc79, -0x3c86b9bc,0x3c29d9e4,0x3c84beb6,0x3c68c30b,0x3cc6eb02,0x3c788058,0x3c777e36,0x3c682061,0x3c845dab,0x3c1107cf,0x3cd17034,0x3cc031dd,0xbc0d598c,0x3d100618,0x3d0d7a16,0x3d1087e7,0x3d021016,0x3d182041,0x3d0b7b1c,0x3cf75161,0x3be8bbed,0xbbae3080,0xbb36c756,0x3c80012d,0x3d155ff2, -0x3d3bbaeb,0x3d496279,0x3d296764,0x3caa30ca,0x3c8d07f9,0x3c7d674d,0x3bfc066a,0x3c22d2ae,0x3c8c81be,0x3cdf2b61,0x3c689117,0x3c23fabd,0x3bf80e86,0x3bd17c5f,0x3c4db5d2,0x3c890582,0x3c9a5bf6,0x3ca0ba02,0x3c855cc3,0x3cad9c3c,0x3cbcca7b,0x3cc1eb94,0x3cc3cdc5,0x3c8a2fb6,0x3c47c828, -0x3ccd033c,0x3cc31fd5,0x3cb3cf6a,0x3cc9d5af,0x3cd03239,0x3cec32c3,0x3c8940c0,0x3c5fa127,0x3c33186e,0x3c87c517,0x3ca0cb31,0x3cc5605c,0x3cdf2316,0x3cb57bd2,0x3c741892,0x3c84a6a4,0x3c74ebbf,0x3c96c0fe,0x3c93b3f4,0x3c2708c9,0x3c2d4fce,0x3c41fea5,0x3c296679,0x3c55442c,0x3c64af9f, -0x3c21240b,0x3bf48463,0x3c4032a7,0x3c3a7751,0x3c4aafba,0x3c6d6ffe,0x3c64ec2b,0x3c7b926c,0x3c4315bf,0x3c44b06c,0x3c90dbe5,0x3c82c12f,0x3cc7f295,0x3d072eb3,0x3cf47abf,0x3ce152fe,0x3cded395,0x3cca8d23,0x3c9f09a6,0x3c47bded,0x3bf1a0e3,0x3b75789c,0x3b2e15cc,0x3a59a6eb,0x3b2326e0, -0x3bc9d26b,0x3c1b726f,0x3c1d7ec6,0x3c6ddabb,0x3c840d9f,0x3c10b7b0,0x3c0022ba,0x3c31ca16,0x3c853a07,0x3cc01059,0x3c4f9108,0x3c9e1b93,0x3c88addc,0x3c6d26e2,0x3c7bb5a2,0x3c7a4fde,0x3ca8fb47,0x3c48a9fb,0x3ca53029,0x3c93a586,0x3bd99138,0x3cccea99,0x3cd38420,0x3cb4c382,0x3c85a32a, -0x3ca1d8a7,0x3ca610dc,0x3cb3d0e2,0x3c73d386,0x3c42f840,0x3c1f5fdd,0x3beedc46,0x3b932627,0x392542ac,0x3b39de31,0x3b4e997c,0x398b7dba,0xba59ee13,0xbb59912c,0x39f742a0,0x3b4842ae,0x3c28c694,0x3c7f5146,0x3c912173,0x3c7f5c66,0x3c838c5e,0x3caa9bf9,0x3ccd4bd9,0x3ca43f22,0x3cc66a85, -0x3ca970be,0x3c92fd13,0x3cc734c8,0x3c8fadaa,0x3bfa2243,0x3cf63727,0x3cbc9cdf,0x3c942b7c,0x3c7e1aa7,0x3c8ca9fb,0x3c948620,0x3c9831f7,0x3c8f7a65,0x3c95ef4b,0x3c9174c3,0x3c8a68e8,0x3c79adeb,0x3c5fa29a,0x3c4c01ac,0x3c34b85f,0x3c32e090,0x3c32d6e8,0x3c47b2ad,0x3c5a932d,0x3c59ab4b, -0x3c500a19,0x3ca2610e,0x3c799b3c,0xbb516d38,0x3cb35f4b,0x3c9a8d6b,0xba8cd667,0xbb20a817,0xbb1d2917,0xbab9a932,0xbacbba6b,0x3961c264,0x3b1ee52c,0x3c9103cf,0x3cb17d4a,0xbacbe73c,0x3c63db61,0x3cce4b50,0xbce7ee9b,0xbcf2afcc,0xbcc0b2f8,0xbca6f4f9,0xbcaee83e,0xbca7b097,0xbcb88707, -0xbcbafefb,0xbcac64c3,0xbcb99d21,0xbcbb68c5,0xbca9b704,0xbcabf71f,0xbcaadf37,0xbcad66fb,0xbcabd69d,0xbcb02bb5,0xbcabe2b1,0xbcad5c3c,0xbc9c4572,0xbcabbd24,0xbc9814a7,0xbba6d21e,0x3d090b39,0xbcc4a855,0xbc0485b1,0x3d00308b,0x3cf15444,0x3ce5f388,0x3cc1ab7c,0x3cdcda61,0x3cca79dd, -0x3ca1aa57,0xbbbf1ba4,0xbcdc15e2,0x3cbc11d6,0xbb453bdf,0x3c27e485,0xbcebb7ae,0xbccb0570,0xbcdb36e8,0xbccef6a8,0xbd1c5a4d,0xbd2c5d56,0xbd1837ae,0xbd2eeb8a,0xbd28b879,0xbd01f40e,0xbd068ba6,0xbd049d54,0xbd05b357,0xbcf35e63,0xbcf441e8,0xbce27dcf,0xbcd70959,0xbcc08dd9,0xbcc1a962, -0x3a25631a,0xbbd45fae,0x3b9fc78f,0xbc18c8b8,0xbca3225e,0x3b9e32f3,0xbc3d5103,0xbba487f7,0xbc22f3e3,0xbbf4a0f8,0xbc8561f3,0xb9c33f6a,0xbb8e6b33,0xbc1bd736,0xbc0367b2,0xbc22fe41,0xbccd8e05,0xbd0ef096,0xbcd8c54a,0xbcfdf83b,0xbccd2b9c,0xbd382000,0xbd4dd263,0xbd189788,0xbd4d6bf7, -0xbd43f79a,0xbd11993a,0xbd180f5d,0xbd12fa98,0xbd0ceee5,0xbd0f656d,0xbd0bfbb0,0xbd0a7bd7,0xbcee7640,0xbcdddd9d,0xbc7375bb,0x3aca32c8,0xbaa30b8c,0xbc261584,0xbb5d60b9,0xba436cf9,0xbbdaa666,0xbb37de4d,0xbccd6eb6,0xbc64df9d,0xbc5a7a2f,0xbbcd1e4d,0xbbc28d62,0xbc205a9e,0xbc3cad15, -0xbc71c274,0xbd076250,0xbcb53102,0xbcb3d30f,0xbce460db,0xbce9221f,0xbcb5e145,0xbd74a3f1,0xbd9ffc33,0xbd722977,0xbda52df0,0xbd97bae5,0xbd326243,0xbd5b0238,0xbd411ff6,0xbd48c8ec,0xbd326d7f,0xbd23248b,0xbd1669bb,0xbcff3fab,0xbcc68efc,0xbc6587a3,0xbb183703,0xbb1e4608,0x3c00665f, -0xba72cfea,0x3aedb3dd,0x3b868c37,0xba7e2781,0x3aea39d0,0xbae2f2bd,0xbb57984b,0x3a0d0ba2,0x3b876ec4,0x3ad0a012,0xbb8adf39,0xbc9d9f4f,0xbc92ebad,0xbd3c2ca1,0xbd1ad00b,0xbcc984c7,0xbd08f878,0xbc8c2c93,0xbd796c96,0xbd8b0ca8,0xbd4ac23f,0xbd9b5670,0xbd8f879d,0xbd35537d,0xbd44ede3, -0xbd39942f,0xbd294e3c,0xbd41d3fc,0xbd421d11,0xbd36fe8f,0xbd19710e,0xbce324d2,0xbc1de985,0x3c572798,0x3bd1cf05,0x3bf377e9,0x3bbc8272,0x3bd9340f,0x3c489069,0x3bfea931,0x3bc46266,0xbab70711,0x3b1d3599,0x3ab2df54,0x3c3e1366,0x39bad098,0xbc10779a,0xbcba6c35,0xbcf1e9d1,0x3c4cf159, -0xbd1ff773,0xbd9165f6,0xbd90881f,0xbd90c892,0xbd7cd0f6,0xbd844aa3,0xbd656f49,0xbd0f563c,0xbd10a0c6,0xbd8acb57,0xbd469d61,0xbd39c073,0xbcfa68a4,0xbc9dfa3e,0xbc9016b0,0xbc89befb,0xbcc6a387,0xbd04d310,0xbd208db1,0xbc6f5306,0xbbd7ecb9,0x3c148b51,0xba2f4515,0x3abc6c56,0x3c840b62, -0x3bcd812e,0x3b65868b,0x3b058aec,0x39efa82d,0xbab754d3,0x3ac57234,0xbc3a3c81,0xbc43dcd0,0x3b8c7765,0xbc4f953e,0xbd6f10b8,0xbd6617f6,0xbd510d71,0xbd289903,0xbd02f871,0xbcffad6b,0xbc61a601,0xbc3b8802,0xbd3eabdd,0xbd5706d3,0xbd3d754c,0xbc492766,0x3b3c7076,0xbbfcd273,0xbcb03019, -0xbd26c36c,0xbd6ffdae,0xbd406801,0xbd29092e,0xbc478714,0x3c6a221d,0x3b410545,0x3b8314d3,0x3c35f2e9,0x3c677a43,0x39166c2d,0xb9400451,0xbafe76ff,0x3b257f18,0xbba09df2,0xba9d9a23,0xbc01d6d5,0x3c557c55,0x395c926b,0xbcae7224,0xbd19f062,0x3cd577fc,0x3c852557,0x3c4a4ece,0xbc79befd, -0xbd8f14a7,0xbdd5268a,0xbdfadcb8,0xbda87385,0xbdab1ce4,0xbd7b361c,0xbd7fe568,0xbd3dd0f6,0xbd65418a,0xbda3b7cb,0xbd6ff5e1,0xbd45d879,0xbd011c98,0xbcaf7f96,0xbc3d5428,0xbcaaec88,0xbc2c9c19,0x39b56cb7,0x3c5606d9,0xbaf38b78,0xbb90cc08,0xbb0b258f,0xbb9a07f0,0xb8601a19,0xbadfa856, -0xbb85b1ec,0xba09ee74,0xbc38f900,0x3ba963ff,0x3c442948,0x3d17ac39,0x3ccf7ec3,0x3d59b324,0x3d36e72a,0x3bc23eb1,0xbd08f56a,0xbdce6b20,0xbdf7941f,0xbe0962d5,0xbd8199ec,0xbdd85357,0xbdbc7068,0xbd9fa609,0xbd899172,0xbd6ab283,0xbd8c6c09,0xbd50d9fe,0xbd221559,0xbcd3f7b9,0xbca946ed, -0xbc91674f,0xbc6fc978,0xbc414c4f,0x3ab1e8b4,0x3cb36242,0xbb2353e5,0xbbf9d140,0x3b448362,0xbb4ace2b,0x3a819d86,0xbabd948f,0xbb77d498,0xba00a737,0x3b4d695f,0x3c731475,0x3ca58a9e,0x3d3db00b,0x3d125975,0x3c0db939,0xbbf403a2,0xbd5788be,0xbd784279,0xbda8dfd4,0xbd54b65b,0xbcc5ebe8, -0x3c0755f1,0xbd459297,0xbd581324,0xbd3745a6,0xbd09b941,0xbccd4112,0xbcc6a5c0,0xbd1bc06f,0xbd389ad4,0xbd3130e3,0xbd28a31c,0xbcf3a6dd,0xbc1cebf9,0xbb8aa457,0xbae066a0,0x3c92c499,0x3bbcf503,0x3bded974,0x3b9ffe29,0x3ad08587,0xba8cc6a7,0x3baf61aa,0xba9b6ca9,0x3b1c2c88,0x3c5c79ff, -0x3ca06e07,0x3c6fe57e,0x3ca89560,0x3b9eb350,0x3cc14cf5,0xbb6f5648,0xbdad9e3a,0xbda94fa5,0xbdacc50b,0xbda0bb2f,0xbd91fd58,0xbcdce1db,0xbd0f688b,0xbd00f94c,0xbd467e4e,0xbcf9297f,0xbd08a411,0xbd405b72,0xbd057b8e,0xbcc2746c,0xbc13f4a0,0xbbb09d29,0xbbf138b8,0xbc63fc36,0xbadc75ef, -0x3afbc6c3,0x3c04e0b8,0x3c3b4c10,0x3c2e301e,0x3bbb2c1e,0x3c033f95,0x3c205805,0x3c898cc1,0x3c3471e9,0x3bad1c44,0x3b8177b8,0x3aea0a5f,0x3c950d79,0x3c6857d8,0x3be9a329,0x3cc1ae35,0xbd1920a2,0xbd3feeaf,0xbd2b8369,0xbd3c313d,0xbce2f235,0xbc9a8f98,0xbd0237a0,0xbc65598e,0xbb817217, -0xbbe99e49,0x3b07bf33,0x3bbaa364,0x3c27c777,0x3c0a788a,0x3b80e84f,0xbba46484,0xbbb94a54,0xbb61db54,0x3c686826,0x3c689441,0x3b7981c3,0x3c085ed6,0x3bd0cac2,0x3b8326ba,0x3a48d659,0x3a1565e9,0x3ba27c12,0x3c1e573f,0x3bdda5f6,0x3bb055b0,0x3c21c804,0x3c6127bd,0x3be1b159,0x3b9e1a69, -0xbc313481,0xb990a312,0xbbf2230d,0xbcbf64a9,0xbc9840df,0xbc936df0,0xbc78ebf2,0xbc877d3f,0xbcbfd0dc,0xbc3e0393,0xbc011de6,0xbc10d7d1,0xbb5b0f8e,0xb9f3bee1,0x3b9794f6,0x3b7bbf2c,0x3b88b36b,0x3a58491d,0xbad07b7e,0xbb72073e,0xbb7dda29,0x3bc17bc1,0x3c021e74,0xbb22f3f6,0x3bd52bdc, -0x3c06b758,0x3c3192ce,0x3c23aed5,0x3c153969,0x3bf6e541,0x3b952f3f,0x3bbdaee6,0x3c030c96,0x3ba31532,0x3bc244cd,0x3c074a00,0x3bb89df2,0x3be94e17,0xbc2c9341,0xbbaa936a,0xbbd12f44,0xbbf2e601,0xbc2f76eb,0xbc30d192,0xbc18c36c,0xbc663662,0xbc80ca1f,0xbc760bd5,0xbc2254b4,0xbbcd9b80, -0xba5dda8c,0xbb1445a1,0xbb1034d4,0x39b81544,0xbab3cb40,0xbbe6412d,0xbbc1713d,0xbbd9c311,0xbb1da54c,0xbbe624ef,0xb99fd73b,0x3b8fcf31,0x3c08e797,0x3c2f9258,0xbbbcddf8,0x3b7b88a7,0xba981c0d,0x3bebf6ba,0x3bb14fec,0x3989c4ed,0x3c14d64f,0xbad8a47e,0xbb811858,0x3cead7a0,0x3aa127b1, -0xbb1d1bba,0xbbd0d15b,0xbc1c4a1b,0xbc3b0140,0xbc80254c,0xbca8d355,0xbc42fe96,0xbbafe3cc,0xbac189b4,0x3aab23d5,0x3b6b2acb,0x3bbc2713,0x3ba2de15,0x3b764b96,0x3b07c1f8,0x3af96943,0x3b9d8cb3,0x39832701,0x3b994784,0x3b116c78,0x3b8caf6e,0x3b07ae68,0x3b256555,0x3a7db7b0,0x3b51aa4b, -0x3b2a74b3,0x3c378c2b,0x3bf85656,0x3a27decd,0x3c8ab375,0x3bb6ca03,0x3c40b09f,0x3cd9670b,0xba8c886f,0xbba3aa99,0xbc030c15,0xbb83da74,0xbba2c3d5,0xbbb68756,0xbbc86b3e,0xbbc1306e,0xbbdc700d,0xbbe41ca8,0xbbfd1f1e,0xbbe98d1d,0xbbcb7d7f,0xbba5ec29,0xbb6b0130,0xbb87edf9,0xbb83dd0d, -0xbb7dd759,0xbb958591,0xbba2807b,0xbbcd96ea,0xbbc74f44,0x3b7d2feb,0x3cb59cd7,0xbbdd3bee,0x3b96a04e,0x3cdf9b4c,0x3cf4a259,0x3cd807fc,0x3cc78f9c,0x3cdf07e2,0x3cd4a04c,0x3cb166a2,0x3b51a0cc,0xbbcbd8f6,0x3cc0a32c,0x3c1d23a3,0xbbdcc977,0x3ce8c9df,0x3cb58e36,0x3cf5e42b,0x3c916f6d, -0x3c999859,0x3ca2b195,0x3cc6298d,0x3cd170c5,0x3cd31c74,0x3cc0e024,0x3cbaf0dd,0x3cbc66c3,0x3cb4d771,0x3cb3c3ee,0x3cb38c26,0x3cb9eaf3,0x3cc326d5,0x3cc33504,0x3cc44787,0x3cb07323,0x3cd7acc0,0x3c24debd,0xbbebe8f2,0xbd23df42,0x3c95bc95,0xbb951c19,0xbd212c07,0xbd2273cc,0xbd1bf31c, -0xbd071f22,0xbd22a407,0xbd18b9b1,0xbcfc0c48,0xbc1b9945,0x3ca09909,0xbd103bba,0xbc87878b,0xbd2574c5,0x3cb7bb35,0x3c9d9748,0x3c883e8e,0x3c67f4c4,0x3cf3f84c,0x3d1b9095,0x3d25c6c7,0x3d14c8de,0x3d15dc38,0x3d1461e6,0x3d0574ba,0x3d0192aa,0x3d07096e,0x3d091b46,0x3d0dd3c0,0x3d0a8217, -0x3cf96133,0x3cf1fd0b,0x3d0f51b0,0xbbad3a1c,0x3c048960,0xbb4d0b9d,0x3b53f9d9,0x3ca39542,0xbb77a66d,0x3bd37399,0xbbbc2a8c,0x3ae99052,0xba9acd1b,0x3cba2a34,0x39bba836,0x38b473a8,0x3b5fe619,0xbbbe6f4b,0x3a83a6d9,0xbbcf41e3,0x3d0b3fb3,0x3be59ea8,0x3c0fda1f,0x3bffc852,0x3d18af5e, -0x3d46eb66,0x3d54ca89,0x3d31ba16,0x3d1bb924,0x3d24f38a,0x3d04f933,0x3d075fc2,0x3d047d22,0x3d1aeeaf,0x3d22201c,0x3d2cd5f9,0x3d0c7eb6,0x3d1cf8b2,0x3cb4a8bf,0xbb98dd5f,0x3c178d80,0x3c8aaebc,0x3bee2ae0,0x3be78586,0x3c6944b5,0x3b172c79,0x3cd13075,0x3aaca3a3,0x3c560157,0x3ad2fa4f, -0x3c6505cb,0x3c5048b0,0x3bf0eca3,0xbc3ad797,0x3cb11af4,0xbc72e2bd,0x3c0a6ea1,0x3c6950f9,0xbb85ce2b,0xbc2abda2,0x3d00f86c,0x3d6b0898,0x3d88ba8c,0x3d7f4d42,0x3d659e09,0x3d6a7912,0x3d37a8f4,0x3d2765ba,0x3d4374bf,0x3d51fc20,0x3d4d0bfd,0x3d4951fb,0x3d26e531,0x3d208039,0x3cf7a4b3, -0x3c8f6fcb,0x3cefa9d6,0x3c344064,0x3caef53a,0x3c151b8b,0x3ca65aa1,0x3b845bb6,0x3aa7cc26,0xb9a2e7b6,0x3bf01a25,0x3ba23d7c,0x3c7e7d1a,0x3aab7213,0x3b015773,0x3a88b623,0x3bdae09b,0x3c84fa03,0x3c8cbd00,0x388353d7,0xbc415d15,0xbbee641e,0x3d3d5e08,0x3d8f1632,0x3d9d37ee,0x3d81ba0b, -0x3d4fe44e,0x3d5b07dd,0x3d1c22f6,0x3d1e93f0,0x3d1df2ef,0x3d4fa6e2,0x3d5e70d6,0x3d643510,0x3d4029d1,0x3d2fa75e,0x3ce909e8,0xbbc1f626,0x3ca3814a,0x3c7c4045,0x3c8dbbb5,0x3c88487f,0x3c603aed,0x3c308b9b,0x3befe8f5,0x3b9ba838,0x3aa68530,0x3bdbd286,0x3c378bde,0x3c3f5d62,0x3c3a6551, -0xbbca537b,0xbb27a45e,0x3bad218c,0x3b3ae96f,0x3d03aab7,0x3c91ca29,0x3bcfa90d,0x3cdf9097,0x3d1cb7b0,0x3d30464a,0x3d806071,0x3d5d33e5,0x3cedd98f,0x3c9b4156,0x3c42a0e0,0x3bbaf368,0x3c97c542,0x3c9f8042,0x3b024730,0x3c34ad89,0x3cced5b8,0x3cefc20b,0x3ba6928a,0x3ca96eab,0x3c2da739, -0x3c45ffc6,0x3b9cfb8f,0x3c8fe98a,0x3bb9956e,0x3a96767e,0x3b78cafd,0x3be23fe4,0x3b0c0b6d,0x3b5ad2ed,0xbb85649c,0xbbc89867,0xbcbabfd2,0x3cf7aa72,0xbcbd9e1c,0xbc5e802b,0xbbc01868,0x3a763f64,0x3baa75bc,0x3c3b778f,0x3c9d6f6c,0x3c81921d,0x3b6b2eb9,0xbbce0412,0xbd01f6e3,0xbc871edd, -0xbc1bdfe2,0x3bcb9b1b,0x3cb038f1,0x3d15692c,0x3d928d8e,0x3d47d636,0x3d2a9f7e,0x3beb7c38,0xbc5273a9,0x3c1349e2,0x3c304c6e,0x3ca25363,0x3ca3783f,0x3bb40c61,0x3b71d75a,0x3b68a841,0x3b70796b,0x3ac4fa1b,0x3b9d0e0a,0xbb5c4c04,0x3c114afd,0x3c44675a,0x3be2960b,0xbc4f524e,0x3ceff36f, -0x3cdd5a23,0x3ca9f702,0x3c90e0c6,0x3c1372eb,0x3ccf3184,0x3cf79c77,0x3d89c0bc,0x3ca6e148,0x3aaa709c,0xbc6d3b1f,0x3c99170d,0x3d14c596,0x3d118f88,0x3d21f5b0,0x3cdb3b04,0x3c861d61,0x3c1536e6,0x3c81a26b,0x3c6e9820,0x3c219dd4,0x3c26fd87,0x3caf981a,0x3c2f8766,0x3b829357,0x3aaa1283, -0xbace9597,0x3b1cf92c,0x3b5c648e,0x3ac2b095,0x3b395f6d,0xbbc09faa,0x3bfd3665,0x3c1bc98d,0x3d26e02b,0x3c84456d,0x3d09b1d5,0x3d167b60,0x3d1349ec,0x3d222ec3,0x3db236fc,0x3d7a3b3c,0x3d6942e0,0x3d98fa37,0x3c535c2f,0xb8d91d7c,0xbb9377da,0x3d11a8c4,0x3d3bb45b,0x3d146d0c,0x3d1fb8fb, -0x3cd439b2,0x3bec744e,0x3b40b462,0x3c2a838f,0x3a259fc5,0x3adcb26d,0x3c0b6f7d,0x3d033744,0xbb4778a7,0xbab2937d,0x3b58d246,0x3aaa3a1a,0x3b7e216b,0x398fc0af,0x3afb3e4f,0x3aa201af,0x3c1c3e9a,0x3c046762,0x3cafd719,0x3d255687,0x3d37700c,0xb8a7b3b6,0x3cb66ab4,0x3d9221ad,0x3dc315e4, -0x3e26efb8,0x3deb5064,0x3dae39f0,0x3d13b20b,0xbc47f0b9,0xbd08c788,0xbcb5b729,0x3b87746c,0x3c6978f0,0xbbb6361b,0x3b868c49,0x3c0fdcb0,0x3ca94643,0x3c6ae7d3,0x3c000cf7,0x3933f6d1,0xbb531c6a,0x3b8a1232,0x3ca7c955,0x3c2b3a83,0x3becc909,0x3c0f762a,0x3b91b00e,0x3b5f21d1,0x3b998270, -0xb9c6b09b,0x3adfe7c5,0x3c8304fc,0x3cba30d7,0x3cfcd5ac,0x3c838fed,0x3c626126,0xbc1fe832,0x3c292a00,0x3dba8f33,0x3d90b618,0x3d6f5f39,0x3d99823f,0x3dc5b109,0x3de69702,0x3d9feced,0x3d8930c6,0x3d2ce169,0x3c9f4da3,0x3ca3f2ff,0x3c34dec8,0xbbcb4417,0xbca11b7b,0xbc6c172f,0xbc95fd81, -0xbbd2c4a4,0x3bec4041,0xba162fad,0x3bf76316,0x3c65041d,0x3bf0d6ae,0x3c034618,0x3bfb32b3,0x3c18e6fc,0x3c626daa,0x3ca3dcb5,0x3c963cfc,0x3ca37dd4,0x3c190e8f,0x3c7653be,0x39e3b989,0x3c3dc3b6,0x3cc01944,0xbd030aad,0x3cc7f444,0x3d005ede,0x3cf9606a,0x3d3cfe6b,0x3d40b4e2,0x3d47dc4c, -0x3d645aa6,0x3d12ffab,0x3ca3bc23,0x3c0bdb6a,0x3ce057e6,0x3d0ad215,0x3d1fde62,0x3d1ffc96,0x3d21b4a0,0x3d0032ce,0x3ccd8319,0x3c902460,0x3b229366,0x3be797f3,0x3c6cf3eb,0x3c143a45,0x3c8ccd0b,0x3c7ddef5,0x3bc33994,0x3c492d18,0x3c1a2da9,0x3c8e3003,0x3c16bbde,0x3c488995,0x3c6f3ad7, -0x3c4ed863,0x3c9df8b0,0x3c772dfa,0x3c538e2b,0xba4f515b,0x3bd5eb2a,0x3cd86ed6,0x3c9da9de,0x3c991feb,0x3ccf2e44,0x3d065398,0x3d3b1a19,0x3d160e2a,0x3cfd301b,0x3ca07d3e,0x3cb05e24,0x3ca0999a,0x3cb96c65,0x3cb4b2bd,0x3c8ae5dd,0x3c834c00,0x3c4400ef,0x3c4a8237,0x3c091faa,0x3ae528c2, -0xba01e756,0x3baf4442,0x3b91e7a0,0x3c2c100e,0x3c371c24,0x3be0781c,0x3bad846f,0x3c0f19bf,0x3c1eb03a,0x3c1e84a2,0x3c3099d9,0x3c459f6a,0x3c1c119b,0x3ac16ce7,0x3b561e87,0xb9b1717c,0x3ca73f1e,0x3cab4692,0x3cb2a01f,0x3cd52b26,0x3ce299ee,0x3ce89749,0x3cf0a452,0x3cc8adad,0x3cc28a7c, -0x3cabf8ff,0x3c5d5526,0x3b785ae3,0xbb3c2f44,0xbad47b36,0xbb129d45,0x3b1a8a82,0x3b0b439c,0x3b53483b,0x3aab656a,0x3b5f1919,0x3b03f4f4,0x3be29d98,0x3bbc1cfa,0x3c063af2,0x3c595b98,0x3c147587,0x3cb7075c,0x3a79f257,0x3c87facc,0x3bd66bce,0x3c5cddd4,0x3c4f001f,0x3ac0d93a,0x3c2797a4, -0x3c5ce9a4,0xbba46328,0x3c9dbb5d,0x3c9f46c6,0x3ca8a01a,0x3ca52759,0x3cca9614,0x3cde529e,0x3d04aeb2,0x3ce8bd7f,0x3cbfc919,0x3ca13388,0x3c97ae0e,0x3c9eab79,0x3c86b1eb,0x3c8f1141,0x3c87562a,0x3c6a6281,0x3c62ae04,0x3c5adeed,0x3c7b1257,0x3bb48a9c,0x3c2a4881,0x3c16cb05,0x3c54b9c9, -0x3c1fef3b,0x3c1f1864,0x3c0320bd,0x3c1e0f77,0x3bbd01d8,0x3c0b3c1b,0x3c78f026,0xba279e2d,0x3c1d18e0,0x3c01cd24,0xbb68763f,0x3c9f8433,0x3c2fe5e3,0x3caa12cd,0x3c934e4b,0x3c9c51f8,0x3c9e46a7,0x3ca306d6,0x3c9c6ee7,0x3c9df805,0x3c937c84,0x3c95cd91,0x3c927d44,0x3c849a0e,0x3c65dd2a, -0x3c4e94c1,0x3c5367cc,0x3c5c0aa5,0x3c68593d,0x3c71ac96,0x3c6c3eaf,0x3c89d29d,0x3c25f7a7,0xbb02a989,0xbc82295d,0x3c3d4810,0xba3d8e5c,0xbc8b7378,0xbc9c66fb,0xbc8606c6,0xbc7096d9,0xbc91489f,0xbc83833d,0xbc3fcfd8,0x3ae356fe,0x3c4d8339,0xbc55dadf,0xbb8e870a,0x3cd1af5b,0xbc9fd2ff, -0xbc373367,0xbcebea8f,0xbc8aba13,0xbc852721,0xbc6e9492,0xbc8bf5cc,0xbc92807f,0xbc8f63fe,0xbc949c99,0xbc979ea7,0xbc9514bc,0xbc952d2c,0xbc9579de,0xbc984c2d,0xbc96b505,0xbc9b473b,0xbc9a1fb0,0xbc9a5083,0xbc837b27,0xbcaa45f3,0x3b95ded7,0x3ca91eb0,0x3d20458f,0xbb71c5e7,0x3c9a9a95, -0x3d242941,0x3d20bff9,0x3d15e065,0x3d03ac63,0x3d27d5b4,0x3d22ca15,0x3d1251e3,0x3cbd7ad2,0xbbea9fe9,0x3d00cb1c,0x3cd04185,0x3d3f5f11,0xbc46ea74,0xbcaede2e,0xbca2fd3b,0xbc494560,0xbca3d5cd,0xbcc3d9e8,0xbcc81dfa,0xbcdfb282,0xbcf0206e,0xbcd8e335,0xbcd9c835,0xbcdda808,0xbce481fc, -0xbcd596bf,0xbcd6ee7e,0xbccece6c,0xbcb89cec,0xbcb1a15e,0xbcd060e0,0x3cb2a313,0x3bf5c88a,0x3c6947c8,0x3c65007e,0xbbb09366,0x3c5eab1b,0x3b061378,0x3c5eedcf,0x3b8d6b2b,0x3c1e7a1d,0xbc891790,0x3c3098d9,0x3c318b47,0x3bcdf817,0x3c1abbf0,0x3bc8d735,0x3c22eac1,0xbd00cb2a,0xbcc7442a, -0xbca33fd1,0xbb9d00d6,0xbc9b5148,0xbcc2de4d,0xbcc7e923,0xbcf8363a,0xbd0431c7,0xbcf9a92d,0xbcf7dad2,0xbcfd19d9,0xbcf9d650,0xbd00f723,0xbcfaebc4,0xbd08f258,0xbccafcbb,0xbcf7aa73,0xbb9bcf9e,0x3cff5de0,0x3c3d864c,0x3ba89ace,0x3c6a600f,0x3c0cc201,0x3bb1ca4f,0x3b40a6b1,0xbcbfc7d2, -0x3c043501,0xbc0e17b3,0x3c2e3b8f,0x3a6d5f26,0x3a6b2b86,0x3b0389ee,0x3b96d9dc,0xbca015cb,0x3ce79e4c,0x3b8b74f5,0xbd1230f0,0xbcb76cd0,0x3b0eddf1,0xbc6055c0,0xbce76e86,0xbcf691ba,0xbd2d1b33,0xbd4020d7,0xbd1af08f,0xbd2230ee,0xbd1dfc16,0xbd2888ec,0xbd2070d1,0xbd16df0e,0xbd10ea10, -0xbcfa2f6b,0xbce718f3,0xbc26b762,0x3c2f79da,0xbb59a680,0x3c62397a,0xbae858cd,0x3c45db81,0x3a82cde3,0x3c073c43,0x396b1248,0xb9a441c8,0xbbdc4e16,0x3bbad8ed,0x3b89dbd7,0x3c774fae,0x3b9f419a,0xbbb341a8,0xba395c59,0xbcc6589c,0xbca2af20,0xbd356291,0xbc973777,0x3c6b1d08,0xbc67d049, -0xbcb31ec4,0xbce0684b,0xbd261a0b,0xbd390dbd,0xbd2bc4e6,0xbd1bee77,0xbd2110b9,0xbd16fa73,0xbd27f392,0xbd2e786a,0xbd390f1d,0xbd0c7a0e,0xbcf854af,0xbc122c1d,0x3d29da3d,0x3be3b810,0x3c80e2e2,0x3beebb31,0x3b5a8132,0x3c48fe33,0xba1301c4,0x3aa82f36,0xbb7d26fc,0x3ae2e581,0x39559ba9, -0x3c233b1a,0x3baabfad,0x3b02f842,0xbc832c50,0x3ad2fda4,0x3d38ccb1,0xbcc018bd,0xbd850855,0xbd83abb9,0xbdb95e22,0xbd8700fe,0xbd7f1841,0xbd74f3bd,0xbcc7c0c1,0xbc8a961d,0xbd463729,0xbd721582,0xbd4728c8,0xbcb114c3,0xbbe2d3d9,0xbab0194c,0xbd027805,0xbce2c38c,0xbd07ecd9,0xbca120f7, -0x3b3ec40c,0xbc413a88,0x3c33d555,0xbb1370a5,0x3c2d8048,0x3c5a0f5a,0x3b5194ff,0xbaa681ec,0x3b55c482,0xba5628a6,0xbb9e1ac6,0x3bb3819c,0xbbf60d6f,0xb961e280,0x3c795ee6,0x3c832b77,0xbd209a07,0xbd820048,0xbd24b7ee,0xbc05097e,0x3d022894,0x3b989c6c,0x3c82d4ae,0x3cdf9bf3,0xbacdaadb, -0xbccab9c4,0xbd1a434b,0xbcad3b17,0xbc94fda7,0xbc132c29,0xbcdfe971,0xbd11aa87,0xbd4c865e,0xbcda1feb,0xbcfbb62f,0x3ae11c90,0x3cd0784d,0x3c1d2886,0x3c4a9fb6,0x3bb791ea,0x3b6ac50a,0x3a629613,0x3a4290e9,0x3a401d7d,0x3b0bbbf8,0xb92ba130,0xbac266d2,0xbb9f4d4d,0x3c4110fe,0x3ae51c7f, -0xbbd921dd,0xbcab5c8e,0x3cbf360e,0xbbf1e8da,0xbc9f996d,0xbce7cb68,0xbd9894e4,0xbd7c64ba,0xbd8d58f5,0xbd77251a,0xbd67ed74,0xbd4fd85c,0xbd446f14,0xbd504886,0xbd36e78c,0xbd15d0bc,0xbd0ab4f4,0xbcda115c,0xbc81b473,0xbc65d254,0xbc8fd514,0xbc68379e,0x3b499173,0x3c192db5,0x3cfb8d8d, -0xbaf074ab,0xbb256fc9,0x3b84a2fd,0xbb31f747,0x388e7721,0xb8f5ddb8,0xbb2df045,0xb9e555dd,0xbba3b04d,0xbba49fa8,0x3b0a0e82,0x3cce8cad,0x3cf6ddd3,0x3d42de9b,0x3cd08dc7,0x3ba40456,0xbc7b5be6,0xbd9a6625,0xbda0debf,0xbdc1055f,0xbd92e2d8,0xbd9b9d5f,0xbd72bd81,0xbd48d541,0xbd575948, -0xbd37a6bc,0xbd35522d,0xbd072cf7,0xbcd24957,0xbc8cc315,0xbc7e1a05,0xbcbfe616,0xbc05699b,0xbb0e9e1a,0x39b9dada,0x3cac0939,0x3abe8f09,0xbc198c5c,0x3bd37e1a,0xbbb81609,0x3b11c13d,0x3b530a6e,0xbb27e97c,0xb9e13fc9,0x3b7a8f72,0x3c151403,0x3c32c6b4,0x3d224319,0x3cf57b20,0x3cb815d9, -0x3d0854b6,0x3d35d037,0x3d14f211,0xbb17572e,0xbbcc4f98,0xbb8e5cd2,0xbb8d18b6,0xbc2f6d7d,0xba32d7de,0xbbc5115e,0x3caff684,0x3c6fd60f,0x3c2267ae,0xbc80014a,0xbcd0d038,0xbd014136,0xbceca104,0xbcdf8b7d,0xbc35606e,0xbbffc719,0xbbc83078,0x3c9d2f31,0x3b3d1532,0x3b4ccd5d,0x3b9df151, -0x3a8e7554,0xb9a9abf1,0x3ae53ba4,0x3a103cb0,0x3b9dd329,0x3c3ee688,0x3c9a2be9,0x3ca86677,0x3d09725f,0x3ca258cf,0x3d59c816,0x3cceeffe,0xbd359688,0xbcf138bc,0xbd1eed72,0xbc99113c,0xbc18ea30,0x3c53ed76,0x3be2fee0,0xba9c8690,0xbd1f4429,0xbcfcf6a7,0xbd02a065,0xbcb18d98,0xbc585972, -0xbc5a158f,0xbca64745,0xbc361038,0xbc3cc2db,0xbc64904d,0x3c02d7b9,0x3c11ef54,0x3c1536a4,0x3c01aaaa,0x3b96948e,0x3bb6ddce,0x3c60c3cf,0x3c5770e8,0x3c634a4e,0x3c8dae6c,0x3c61574e,0x3cb381e6,0x3c266fb7,0x3c9d94c1,0x3ccaabe5,0x3b9170d8,0x3d159415,0x3baa4f56,0xbb90b24e,0xbba3addb, -0xbc0a3cea,0xbc770fd5,0xbc764a38,0xbc1c4d92,0x3be108e1,0x3c8e17d4,0x3cb0ab03,0x3c86c50f,0x3c6bb447,0x3cafcc81,0x3c82f8ad,0x3c576eb2,0x3becea7b,0x3b83bbdb,0x3b5c878f,0x3c467c37,0x3c12260b,0x3aee3098,0x3c537967,0x3c112f47,0x3c367a7a,0x3c42aa09,0xb8412af8,0x3ba4dd86,0x3b653509, -0x3bd33945,0x3bab6a7a,0x3c0c7bbc,0x3c8d886d,0x3c5bdec1,0x3c9fa710,0x3c71fb50,0x3c966033,0x3b94c775,0xbc916d71,0xbc675829,0xbc846d32,0xbc59a34f,0xbc76f612,0xbc79560a,0xbbaa598d,0xbaa1542d,0x3aa645c6,0xbb03ecc7,0xbb61b248,0x3b542d78,0x3a13be74,0xbaa559c7,0xbb429e63,0xbbb85b9a, -0xbb882cd3,0xbb47fdce,0x3be33964,0x3c0d6f50,0x3bc8e555,0x3c3857ec,0x3bf75786,0x3be1c1d0,0x3c44e7c9,0x3c25bf93,0x3bf0627f,0x3bdf6c84,0x3c025eed,0x3c4bc737,0x3c0798a1,0x3c319205,0x3c9d2e49,0x3c73614b,0x3c90a256,0xbb5d72d3,0xbbadd2d0,0xbb05086c,0xbbdee4e3,0xbbdbd9df,0xbbf38905, -0xbc23a681,0xbc1e0739,0xbc07cc09,0xbc059dcd,0xbb83c71c,0xbba70ba7,0xbb8c57ec,0xbbe27d34,0xbc1fe059,0xbc3b5d21,0xbc0276fb,0xbc8a6e7d,0xbbf264a8,0xbad45878,0x3b062831,0x3b489b4d,0x3b49a7f8,0x3bb6f491,0x3c0000a4,0x3c13340e,0xbb15c7e0,0x3c9c9b2e,0x3b411f59,0x3c5fa1dd,0x3bb57c4e, -0x3bfc2609,0x3c7d46ef,0x3c0f725d,0x3b518c2f,0x3cc18266,0x3b4963f2,0x3b37cee7,0xbad6ef99,0xbb713894,0xbbdb0ebc,0xbc27885c,0xbc52b584,0xbc145fe7,0xbbbf7fbc,0xbb4c5531,0xbae17ef5,0x3af1575f,0x3bb1cd66,0x3bd18e6e,0x3bea4e1b,0x3bc57075,0x3bc25db2,0x3bf5857a,0x3b621a81,0x3c60bd13, -0x3c15e8e6,0x3c470901,0x3c398f19,0x3c5c8d7a,0x3c4fb196,0x3c6cbd72,0x3c5a9c2a,0x3c6f2d85,0x3c447524,0x39c0b57c,0x3c8e91ef,0x3c247c62,0x3c195b80,0x3cadb1db,0x3baf2bd9,0x3c204f1b,0xbafe15a7,0x3a075a15,0xb971c088,0xba569568,0xba952764,0xbaab3a15,0xbb258a14,0xbb27ae12,0xbb4937b8, -0xbb3e91b2,0xbb211090,0xbb1ecde6,0xbb1e3480,0xbb4be30c,0xbb5d81a0,0xbb6f7994,0xbb6e396c,0xbb55252e,0xbbbe4645,0x3bb95d14,0x3c8df3ff,0x3cbf8d46,0x3be1fc4d,0x3c9635a7,0x3cd93f62,0x3cec3207,0x3cd30219,0x3cc849ab,0x3ce78cfe,0x3cdf12fe,0x3cbbdad7,0x3c83b549,0x3be141af,0x3cbadde1, -0x3cad9799,0x3b99a12f,0x3bd0652b,0xbbaecbdb,0x3c969e59,0x3bc4539d,0x3ba4f687,0x3ba6d450,0x3ba5e5a0,0x3bc6fa44,0x3c039bca,0x3bf99875,0x3c01aa36,0x3c0529f0,0x3bf44ec7,0x3bf3d9f2,0x3bef2567,0x3c0708a4,0x3c0e2d3a,0x3c0a44d0,0x3c0d0a70,0x3be74242,0x3c41976b,0xbc5c0390,0xbcc11358, -0xbcc043d6,0xbbe348a7,0xbcbdb6df,0xbcd2d3ac,0xbcdbd0bd,0xbccf6149,0xbcbcb499,0xbcf61b5c,0xbcefb2dd,0xbcdc3bed,0xbcdbab42,0xbbba81f2,0xbcc4dfd6,0xbcf8b39e,0xbd27d2e0,0x3b906854,0x3bb4210b,0x3ab58462,0x3ab9b3db,0xbb0b399a,0x3a9e815e,0x3c2f05ba,0x3c1f26ff,0x3c338011,0x3c312616, -0x3c1988e3,0x3c0b6c27,0x3c0517fb,0x3c3bb10b,0x3c47a475,0x3c3b5088,0x3c18ea36,0x3c3a9e18,0x3c99208f,0xbc906d1e,0xbba6486d,0xbbf00623,0xbc7848d6,0xba915f19,0xbc0965ac,0xbc0e30d3,0xbc97b5d7,0xbc347380,0xbc5f6603,0x3c40221e,0xbc00fd53,0xbc2966ba,0xbc1d75d9,0xbc8eb767,0xbc29dfc7, -0xbce5037a,0x3c759965,0x3b0b524c,0xbba3ef49,0xbb9995c8,0xbc4b8413,0xbc144779,0x3c10d2c6,0x3bfdb983,0x3c33365d,0x3c370ec0,0x3bef1f6d,0x3be310f0,0x3bafc615,0x3c4a57ff,0x3c5c3d2c,0x3c788443,0x3c13e87c,0x3c93c43a,0x3b397455,0xbcc6d0ac,0xbb325996,0xbb051b89,0xbbed29ec,0xbb03985d, -0xbb860c21,0xbb8f76a2,0x3c1929b7,0xbc95da56,0x3b34f128,0xbc3130f0,0x3b33a7fb,0x3a33154c,0xbb8f647d,0xbcab0a95,0xb8cc0f92,0xbcf900f5,0xbb794113,0x3b5f27c4,0xbc39309b,0xbbe19b4e,0xbce3a79b,0xbc9780cf,0x3c3b6f4a,0x3c3a066e,0x3c7994dd,0x3c7c74a4,0x3c23cd01,0x3bdbde4d,0x3b4c4bd1, -0x3c880402,0x3c924e15,0x3c909d01,0x3c5a636e,0x3ca5d197,0x3c81c7c5,0x3b3ab6da,0x3cb315c6,0x3bcca911,0x3c7d7ab7,0x3ace842a,0x3c6510e9,0xbbdebb96,0xba9d1082,0xbb4ee499,0x3bd61d3f,0x3ad21ff9,0x3c0d017e,0xbb7442ec,0xba5a5815,0xbc3c3047,0xbbb0bdc9,0xbc6be91f,0xbbd7eda6,0x3ba41688, -0xbc8f56b2,0xbc47b9a6,0xbd217b95,0xbcf728d3,0x3b7c622d,0x3b8a1d55,0x3c5abbd1,0x3c728413,0x3c04c21c,0x3b97e53f,0x36123adc,0x3c590670,0x3c95c0b4,0x3ca90ab3,0x3c44d93c,0x3c977f5d,0x3c941ee6,0xbcca259a,0x3c912f75,0x3c0a1c64,0x3c524ffe,0x3c61fc7c,0x3c4b34a1,0x3c3bcc0b,0x3b89860a, -0x3b192022,0xb90450e8,0x3be98e08,0x3c0bcf46,0x3c19f8f4,0x3bdad2c9,0xbc78081a,0xbcdc22f1,0xbc507fca,0xbd62a7cd,0x3bb4fb0b,0xbc3d5a18,0xbcd0977d,0x392942fd,0x3c4145cb,0x3bbcfb8d,0x3d480d81,0x3d4648af,0x3ca5560d,0x3c8c9bd2,0x3bf980b6,0x3c2183c8,0x3bfbb2d4,0x3bb29ae2,0x3cdcdd86, -0x3ce41c82,0x3d00bbad,0x3c639f0f,0xbbcd6166,0x3c85cf76,0x39496040,0x3c5ab06b,0x3b483545,0x3c565072,0x3a16454c,0xb9f0599c,0x3be290f0,0xbbbccc3e,0xbc08c983,0x3b767d4d,0xbb94200f,0xbc630fca,0xbcdd3f7a,0x3c4403dd,0xbd177d99,0xbc3dbe8c,0x3ce536a9,0x3c096775,0x3c82d4dd,0xbcada7b9, -0xbcf103c3,0xbcd4b135,0xbc892b3b,0xbc3eabc0,0xbc4b4b59,0xbcf72cb0,0xbd073fe0,0xbcb1ea21,0xbc369b9e,0x3b01c9cc,0x3c743b4d,0xba56da6e,0x3c0e9ecf,0xbc503bd8,0xbc4e9a7d,0x3b324972,0x3c686d6b,0x3bef0572,0x3bdde753,0x3b8ef659,0x3af3dfbd,0xba75ce12,0xba0e57d8,0xbb29b5e4,0xba883472, -0xbb9f8e57,0xbb9a3762,0x3a3e41c8,0x3b87b928,0xbcd6c48d,0x3bf6d0cf,0xbc00911d,0xbd01d042,0xbd15c9ae,0xbd822e29,0xbd4aea22,0xbd11df4e,0xbc8409b1,0x3ca5feee,0x3cd648cc,0xbbb56ff1,0xbafff850,0xba4533c6,0x3cb15af3,0x3cc3b80e,0x3c7b7ddd,0x3be5210d,0x3b1b9354,0x3c312a74,0x3b871815, -0xbaa60875,0x3c1bfcc9,0x3c5b56d8,0x3b330209,0xbb845951,0x3badecb6,0xbb4de26b,0x3bc57153,0x3ab504ea,0xba5e69e8,0xbb04f375,0xbaf4ad4d,0xbb95e21b,0xbbd1ae3d,0x3c36105b,0x3bb445f4,0x3ca26efa,0x3c08c5eb,0xbc53c199,0xbcc74cfb,0xbd33052f,0xbcc93222,0xbc38d650,0xbc21be8b,0x3c068abd, -0x3bb57bff,0xbcdb8583,0xbbca1db6,0xbba2a41c,0x3c6d6e23,0x3b87f448,0x3b4400a5,0xbb463590,0xbb14924d,0x3c0f01d1,0xbb2ac76d,0xbbd2f2fa,0x3b76d564,0x3ca92237,0xbbbbc070,0xbb3e792b,0x3b75697d,0xb9f71be6,0x3b4f4440,0xbaec4806,0x3bb9bbd1,0x3a4f1dfc,0x3bd1e086,0x39b6cc4c,0x3c45af8a, -0x3ca69329,0x3d002cf7,0x3cca83e1,0x3cfa7818,0x3d653ba3,0x3d4d0348,0x3d7578fd,0x3ce8afa5,0x3bfc6bf8,0xbc6722f9,0xbcdf5786,0xbd0f23f7,0xbd1d2578,0xbceea2d3,0xbca5760b,0xbbca6d0c,0xbbc2f81b,0xbb087743,0xba08d725,0xbaf3a927,0xbaee5813,0xbc26b141,0xbbd9beba,0xba966fb9,0x3c2758a0, -0x3b2e90df,0x3b7b433d,0x3be79c04,0x3a8eb353,0x3ada09e5,0x39be863e,0x3a9e1105,0x3ba1d219,0x3c5c07b7,0x3c9312bd,0x3cab0cce,0x3ce3ea02,0x3c97eb00,0xbd08dc1e,0xbd0f6cce,0xbbdaa1df,0xbc3378d7,0x3b8ef036,0x3cdb8f83,0x3d4455bb,0x3d5c7a5b,0x3d047ed2,0x3bec52f6,0xbd0a7915,0xbd300cb1, -0xbd05e400,0xbcc6bf19,0xbc9f9def,0xbc65dd2f,0xbc824422,0xbc634353,0xbbc75731,0xb9df6e5c,0xbc4a7496,0xb92bafba,0x3c85b3ab,0x3ba56d83,0x3b4e7538,0xbaa71240,0x3c25914c,0x3c81ce16,0x3c355b65,0x3c6297b1,0x3c630c6a,0x3c674cd1,0x3c4ee583,0x3ba0a526,0x3afdbe6a,0x3c384620,0xbbed450b, -0x3b938fcd,0x3c8083be,0x3c5a7278,0x3ca15a8e,0x3c8ece00,0x3cd80887,0x3d205e7c,0x3cf944c8,0x3cf204c9,0x3cf82cd0,0x3cabf179,0x3c25467f,0x3beb2f78,0x3bf5cb52,0x3c3913f4,0x3c86ace7,0x3c9608d7,0x3c872388,0x3bb6185e,0x3bcfd466,0x3c1fe24e,0xbb01e7e1,0x3c026bb4,0x3c332c6c,0x3c19c57f, -0x3c75aacf,0x3bdfc6db,0x3b3519b5,0x3aa93429,0x3b688ab5,0x3bf40001,0x3b983d6f,0x3c3da265,0x3c228622,0x3be6bf36,0xbc03f683,0xbb9995b0,0x3bf4bce0,0x3aa5b25d,0xb94dc6d9,0x3b8cd5aa,0x3c342498,0x3cbb9132,0x3c9bcb5f,0x3c919460,0x3c7828cf,0x3c1ed3da,0x3bee8c4f,0x3bfec2b1,0x3bfdcf92, -0x3bbcf6f3,0x3c02d547,0x3c04900d,0x3c37ae59,0x3c06708e,0xbb084e99,0x3accca2c,0x3bfb7213,0x3b7c65d0,0x3c0ce210,0x3bf6bee5,0x3b63ef76,0x3ba104aa,0x3bed3af8,0x3bdc5944,0x3beb23b4,0x3bb24246,0x3bfbef6f,0x3bb0f96d,0xbabdbe9d,0x39bb503b,0xbc103ca9,0x3b45867b,0x3bca85f4,0x3b5f5cf3, -0x3bb584f3,0x3bea3fd2,0x3be78fec,0x3bbee736,0x3b615fc8,0x3b79c71d,0x3a8601de,0x3bdf8a3a,0x3bb7a60b,0x3b8990a4,0x3b9478f0,0x3b6011ed,0x3b9efa68,0x3b7ef7d7,0x3c2b7b6f,0x3b077517,0xba6bf9e7,0x3ba47733,0x3c10a7ae,0x3bbc4bba,0x3b1fcc32,0xb9cf223e,0x3b908485,0x3c2c7768,0xbac07af3, -0x3c33cb34,0x3b5ae3f8,0x3c1b15e9,0x3b9dacf8,0xbad01d2b,0x3ab8c3a9,0x3b23c8fd,0x3ab8b234,0x3c52fae3,0x3c398881,0x3c57cd7d,0x3c5af498,0x3c7b03df,0x3c8e8d4d,0x3cad078f,0x3caf147c,0x3ca2b437,0x3c9b06ab,0x3c802a0a,0x3c64182e,0x3c4c6716,0x3c4e1a26,0x3c48d2d9,0x3c4e05d5,0x3c399722, -0x3c32bd44,0x3c27a39b,0xb97a176f,0x3ac75a79,0xbb1dbfcd,0x3a944c10,0x3b2357ad,0x3b873d34,0x3a86703b,0xbad2309e,0xbaceea1a,0xba997f72,0x3bfbad7a,0xbb93334e,0x3a06a19e,0x3b733bbb,0xb9c0991a,0x3bed6025,0xb9f9f57c,0x3c479d39,0x3c384c97,0x3c3b9347,0x3c3cf797,0x3c4307ac,0x3c3748bc, -0x3c2d6968,0x3c1ea63a,0x3c2116d5,0x3c267292,0x3c2d0ea0,0x3c32fc5a,0x3c2ef9f8,0x3c2f922d,0x3c2f5a01,0x3c2d7d6f,0x3c3251e4,0x3c336ea4,0x3c63e12b,0x3b0a5db9,0xbbad0c08,0xbb58b44d,0x3b12aa18,0xbbd8e77d,0xbbb26f87,0xbbc7e762,0xbb81a6fd,0xbb3ab222,0xbbb2d5de,0xbbc356a4,0xbb555615, -0xbb2f1a0d,0x3b59569f,0xbb47c4e0,0xbbdc5b74,0x3c8d68b7,0x3bd19e79,0x3c82d4e2,0xbbaed42c,0x3a8dd06b,0x3b21f6fe,0x3b7f088c,0x3b83f1c7,0x3b79d026,0x3b592bf7,0x3b4e40dd,0x3b3a73c4,0x3ad5a9f1,0x3abb6ce7,0x3aa55127,0x3aafa99d,0x3ab7e5d1,0x3ad5eb7c,0x3ad7743e,0x3ae7cdd7,0x3b27489e, -0x3a09416a,0x3ca16759,0x3cb5e804,0x3bca3703,0x3c8eab26,0x3cbcace7,0x3c03dc0c,0x3c0c8901,0x3bf493d9,0x3bf3708f,0x3c469beb,0x3c532453,0x3c66163e,0x3cc9ff51,0x3c86498e,0x3bd67910,0x3cc08e22,0x3cc509f1,0x3bfe0cda,0xba451baf,0x3abff402,0x3b8ef0ab,0x3bf74304,0x3c1d32b4,0x3bf2219d, -0x3be219a9,0x3ba5629b,0x3b3630e3,0x3b584617,0x3b3b6d31,0x3b39c8b5,0x3ac5762b,0x3ad1d870,0x3ab53742,0x3b442b1b,0x3b0eeecc,0x3a2c4797,0x3ca7c8b3,0x3c6eb4cd,0x3c39d183,0x3cb095d3,0x3c620d37,0x3c164ca7,0x3c38a4b0,0x3c7803a6,0x3c31db11,0x3c67be21,0x3a6a642b,0x3c3c8a7c,0x3c6f695e, -0x3c686a82,0x3c4d77d6,0x3c26727d,0x3cbd485f,0xbafa5b3c,0xbbabf4f8,0x3b2f3cf5,0x3bcd5578,0x3c6d6436,0x3c8def13,0x3c2fc8ec,0x3c489377,0x3c0aedbd,0x3aded73b,0x3ab7c5ef,0x39b0d718,0x39eacaf5,0x391d06b5,0x3aa59ade,0x3a16b3ec,0x3b9369ce,0xba240d81,0x3c661b85,0x3cfab967,0x3c891086, -0x3c9fb33d,0x3ca59c55,0x3c41c202,0x3c676968,0x3ba84743,0xba29a774,0x3c911aa2,0x3b5cedc9,0x3c7d742a,0x3c1b88fe,0x3c58d396,0x3c5b046c,0x3c1a11b1,0x3be76e1e,0x3c91a102,0x3c040d80,0xbc209f3e,0xbba5e49b,0xbaaf3031,0x3c815b98,0x3cc68dd4,0x3c6d1e9e,0x3c8b4e99,0x3c17be7c,0xb9c18bbd, -0x3b8336f2,0x3a8f96c9,0x3b09c8ee,0xbacc7082,0xbaf7f5c7,0xba7a25a1,0x3a55a092,0xbaa22dc6,0x3c3c8316,0x3ca9cc9d,0x3c1d5e9d,0x3c84c203,0x3bf64102,0x3c793f84,0x3bc58e55,0x3c259d6f,0xb9f8e957,0x38f726d6,0xbb2a46be,0x3c114257,0x3c0603b2,0x3c849198,0x3bf09efa,0x3adf2dc8,0x3634ce7d, -0xb9de8ec2,0x3abc5186,0xbc80ace6,0x3a7055b9,0x3b3a268d,0x3cf159ec,0x3d0cb2cd,0x3c9ddb61,0x3cb890b3,0x3c661823,0xbbaba424,0xbb43ab39,0xbba9675a,0xbb9c9ddf,0xbad22560,0x39e8ea51,0xba6a3dc5,0x3b7607dd,0x371f23da,0x3c3ebdd4,0x3d1ccf63,0x3c63d681,0x3cc0eb9b,0x3c3948d1,0x3bcb86a4, -0x3c266470,0xba050c5c,0x3a0aea02,0xbabd838c,0x3aa078d3,0x3b15bb51,0x3bf69818,0x3bfc94e9,0x3bff266f,0xbc3fb744,0x3bb3f4ef,0x3d2c84d1,0x3b706bc6,0xbcceb654,0xbc9bbe3b,0xbd06bbce,0xbcd215a3,0xbc6fcce4,0xbb7f67bd,0x3bf425fe,0x3bf1da51,0xbc031e2b,0xbc9146fb,0xbcd1cb06,0xbd0d2252, -0xbca1ae8f,0xbbf61d54,0xbc99aab8,0xbc26b757,0xbb3610b6,0x3c90a178,0x3cba80ef,0x3b873ddb,0x3c40e4c7,0x3c31673e,0x3c8753d6,0x3c178508,0x3b35559d,0xbb52ccc9,0x3b0e2715,0xbba76d79,0xbadcdce2,0x3c868cd9,0x3b974c88,0x3c1f8b50,0x3c0ae59b,0x3d266e90,0xbc278e78,0xbd0845f8,0xbc1e2149, -0x3bb2beb2,0x3c85ac7b,0x3ca544c0,0x3c86e1cd,0x3abe409c,0x3c8f3efa,0x3c7e50dc,0xbc134505,0xbbed9e40,0xbbeb13e2,0x3a689463,0x3c49a69d,0x3c800738,0x3c559822,0x3c732664,0x3bb06ce6,0x3c2f40e6,0x3c34fb34,0x3c687b3f,0x3cacd2ca,0x3bc5e862,0x3a1d8c4f,0x3932a3f5,0x39ada9dc,0x3aa053c3, -0xba2f54f4,0xbb7e993b,0xbbe6c05d,0xbbe16332,0xbbac3ad1,0x3b0be71e,0x3ca6117a,0xba75b67c,0x3c0a7853,0xbccd0edb,0xbd468f8a,0xbcda3332,0xbc9d2892,0x3c2babaa,0x3c9c5e32,0x3c584561,0xba18d0e0,0xbc7b8750,0xbced6839,0xbcbc1ae2,0xbbe97a60,0x3c8cd55a,0x3c82cf28,0x3c8f0b0b,0x3c74eb62, -0x3c5973f6,0x3bd7200c,0x3bf896e7,0x3c65e03b,0x3c367fe9,0x3cd263a7,0x3b5be759,0x3993227c,0xb9131af4,0xb9e692c3,0xbb1b3c88,0xbb2a7028,0xbaf4e438,0xba3f82a2,0x39015232,0xbbbe1633,0xbbca37c5,0x3be1f737,0x3c2137e0,0x3c9ac162,0x3bcfe39c,0x39e651f4,0x3c5c139b,0x3cbe66c0,0x3ca24102, -0x3caab62c,0xbbbdd5f4,0x3b89959c,0xba57d817,0xbbf58bd2,0xbbbcc92c,0x3b6a9dd7,0x3cb36fe5,0x3c29303a,0x3be78281,0xbb29ae9f,0x3b446b01,0xbb470813,0x3aff713f,0x3c730014,0x3c0f909b,0x3c8ff237,0x3bef430b,0xbabbdf9c,0x3bc5892b,0xbb56041c,0x3b31fe21,0x3b746918,0x3ad93760,0x3bab2a84, -0x3c016d98,0x3bc7ac2e,0x3bf50f7d,0x3c935ed6,0x3c91bc01,0x3d17e10c,0x3d893fd2,0x3dec913b,0x3de9d993,0x3dc895a5,0x3d667593,0x3cd62b38,0xbc6fa43d,0x3cb00480,0x3c92f04b,0xbb814668,0xbc12b457,0xbc3a267a,0x3c1309fc,0x3c87293b,0x3c948865,0x3a97ed5f,0x3ad908fd,0xbb94d9c5,0xbacb5ba8, -0x3b1f19ba,0x3b918cc5,0x3c746c96,0x3be2ad05,0x3bd17725,0x3c0dcbfd,0x3a573a54,0x377f2b5b,0x3b0fea92,0x3ba40eff,0x3c1b6bba,0x3c33662b,0x3c9baee0,0x3cf1491a,0x3d0cbbb6,0x3d1a0b23,0x3d09bfee,0x3cf91517,0x3cecbf62,0x3d32d5a3,0x3d4d75ec,0x3d90afee,0x3d9c35e1,0x3d75bc79,0x3d27bf38, -0x3ce34b12,0x3cb1c970,0xbc1c306e,0xbc95b302,0xbc089bc1,0xbc918e22,0xbc3087f1,0xbc288f50,0xba63f155,0x3b11e63a,0x3b0cf5e3,0x3c5e80fb,0x3c647e8e,0x3c46a31e,0x3bc7479f,0x3b17c636,0x3b442c91,0x3c870012,0x3c8546cc,0x3c566c35,0x3c8df636,0x3c96cdef,0x3cddb8dc,0x3c8a7b03,0x3c566c82, -0x3ccc399f,0x3c1257a1,0x3cca8d6c,0x3d3219d8,0x3d24d065,0x3d145c49,0x3cd5f9f4,0x3c8a564b,0x3c8672d8,0x3ccf878d,0x3cf2a176,0x3ceaf517,0x3cc7c54e,0x3cb26649,0x3c9f3268,0x3c839caf,0x3ca393a6,0x3c7dea9d,0x3baea4df,0x3bdc78a0,0x3bdb43b0,0x3bf67acc,0x3be7d7a1,0x3bc3fed5,0x3c933db5, -0x3c33b923,0x3c5a5bfe,0x3c7f5aae,0x3bbf5942,0x3bce5b6d,0x3aa38bc6,0x3bb0cbfc,0x3bf62130,0x3c3c71af,0x3c7a5b51,0x3c946f23,0x3cda6b11,0x3d094d7e,0x3cbb18d5,0x3c57f797,0x3c0a0abd,0x3c005d1b,0xbaa2a06a,0x3bc6dfce,0x3c2a49cb,0x3c900627,0x3c8b7e13,0x3c9b36fd,0x3cb00c06,0x3c883538, -0x3c5d2071,0x3be96fe4,0x3c3a04c6,0x3c2b9b8e,0x3c121bfd,0x3c21c4b3,0x3c0906f9,0x3c386a8d,0x3c830e89,0x3c5477c7,0x3c69a7d6,0x3c4faf13,0x3c0086bb,0x3bcf37ea,0x3c2d5688,0x3c0b74f8,0x3bca44c5,0x3c1a9543,0x3c2f3b31,0x3c6ff5ca,0x3c5dd32e,0x3c7befb3,0x3cb269e2,0x3c90f4e1,0x3c658362, -0x3c37c0dc,0x3be0756e,0x3c219db4,0x3c320de9,0x3c31545e,0x3c1322a6,0x3c0697ea,0x3c1db939,0x3c326991,0x3c2f39d7,0x3c0ac768,0x3bd07c52,0x3ba45f81,0x3b9eeae0,0x3bce5369,0x3be1b1b3,0x3c10515c,0x3c02fd6c,0x3c500a21,0x3c808dbc,0x3c3f07b0,0x3c5d69d1,0x3c2596fa,0x3c174332,0x3c1439bb, -0x3bd3c662,0x3c0ec5a4,0x3c98dbee,0x3c2c0c1e,0x3c81ffe1,0x3c44d0c0,0x3c936e05,0x3c8a00de,0x3ca249ba,0x3c6337fb,0x3c3ddf52,0x3c1ef3a2,0x3c5812f6,0x3c4d0166,0x3c390e83,0x3c63fc81,0x3c7fcc22,0x3c900232,0x3c5838b0,0x3c1a6d72,0x3bdd523b,0x3ba8a5a1,0x3b6e6ef9,0x3b351ad5,0x3b5ae320, -0x3b5bbeb0,0x3b380415,0x3b2a42f9,0x3a820bcd,0x3b6e012f,0x3c0d7035,0x3c199d5f,0x3c3fb224,0x3c566531,0x3c67fe2c,0x3c77076d,0x3c88a0d8,0x3c89d74d,0x3c531201,0x3c5fb81d,0x3be6fbed,0x3c416828,0x3c57770d,0x3c04d713,0x3c0937c9,0x3c75d712,0x3c9b0cc9,0x3c042ae9,0x3c06710a,0x3c0b842e, -0x3c0e0d85,0x3c0cc4b7,0x3bf77390,0x3bf7aa9f,0x3bf56b5b,0x3c01f746,0x3c013b77,0x3bf84509,0x3bee5980,0x3bd80fce,0x3bd974f9,0x3bdf023f,0x3bf32b4c,0x3c028d72,0x3c0542b1,0x3be34bb7,0x3c8d2c92,0x3ca8a995,0x3c46f57a,0x3c910bd2,0x3ca85f36,0x3c3d5f3c,0x3c4038ce,0x3c3cb718,0x3c44b383, -0x3c608ebd,0x3c67e7c1,0x3c623cd2,0x3ca21600,0x3c8979cb,0x3c4858e0,0x3ca1dfab,0x3c84046e,0xbc8fc787,0xbcb7abf2,0xbc17aadb,0xbc376d09,0xbc4752fd,0xbc416628,0xbc67eff4,0xbc6d858c,0xbc5b3d47,0xbc529404,0xbc4db67a,0xbc4419ad,0xbc3f6620,0xbc3e7bf4,0xbc4876ab,0xbc3fe50e,0xbc45b59c, -0xbc480568,0xbc46be11,0xbc375472,0xbc31b17e,0xbc993b1e,0xbc5929b1,0x3c6266b6,0xbca039b9,0xbc7553eb,0x3c2fac3d,0x3c1d00f8,0x3c195bff,0x3be64464,0x3bd72505,0x3bb38ecd,0x3b36bb53,0xbc67fe59,0xbca74711,0x3bf1bcab,0xbc50653f,0xbba7f132,0xbc8b5a45,0xbc70c924,0xbc924051,0xbc7e3f16, -0xbcc8b7cd,0xbcdf2ed7,0xbcc430f3,0xbcb947d7,0xbcb111ab,0xbc9aee40,0xbc8e1e89,0xbc91bd43,0xbca52574,0xbc8ed99b,0xbc936eea,0xbc90fbf7,0xbc87f20d,0xbc63e603,0xbc3d7cd2,0xbc043c14,0xbc02b8f4,0xb99c6f00,0xbc50088e,0xbc702f6c,0xbadb8c7a,0xbc4fea49,0xbc403326,0xbc4073b9,0xbc244c33, -0xbbc66b7f,0xbb937a24,0xbbc86763,0xbc0fcda9,0xbc3a420f,0xbc17142d,0xbcafddc1,0xbc766b63,0xbc6264db,0xbca7d063,0xbc8052ad,0xbd086279,0xbd1c86d8,0xbcfc422e,0xbcef990d,0xbcd15086,0xbcbded9e,0xbca3246f,0xbca26915,0xbcbbfedc,0xbcaabe47,0xbcac7fbe,0xbcb6ce87,0xbca2ef48,0xbc7a0685, -0xbc46bbaf,0xbc2a3161,0xbb90a984,0xbc15908f,0xbbb423a4,0xbb0b8135,0xbc2ef738,0xbbae5892,0xbc71e6bb,0xbc90a16f,0xbc04254c,0xbc06edf9,0xbb9626e0,0xbb9237fc,0xbbc62f86,0xbc5fe2ae,0xbc84f82d,0xbc743a2f,0xbc0199c4,0xbc87fef5,0xbcbdfbba,0xbc67286d,0xbd27bc81,0xbd5798e4,0xbd339532, -0xbd2e3e64,0xbd166d3b,0xbcf2bebe,0xbcd35fa8,0xbcd11d90,0xbd09a9db,0xbcdf2794,0xbcd51d79,0xbcd34fcf,0xbcafb17c,0xbc652cb9,0xbbe869bc,0xbb72af35,0x3b597afb,0x3bbb5e02,0x3ba8dd56,0x3b25a4ff,0x3b7ba872,0xbbea2b6d,0xbb4c7782,0xbb956d5f,0x3ab0fc89,0x3b4afc98,0x3b5340ed,0x3b5581d8, -0x3b2fbb2f,0xbc52f74f,0xbbe0679c,0xbc9babc9,0xbc5112c4,0xbbf76150,0xbcb3f98a,0xbc1a24bf,0xbd4b98fe,0xbd7830ad,0xbd46d99d,0xbd3e574b,0xbd19c89c,0xbd03865e,0xbccedc2a,0xbcc82dc9,0xbcffea06,0xbcec5a28,0xbcefbd64,0xbcf7b16a,0xbcd7f4e4,0xbc845000,0xbb4a2e33,0xbac23593,0x3c167c96, -0x3bedd8dc,0x3bf8d889,0x3c13bdba,0x3c27e8c0,0x3bc6e9c5,0xb99e3162,0xbb07fa5f,0xb9cfe117,0x3ba63b50,0x3c17cee4,0x3bfadba9,0x3bbe2eb4,0xbc2af94f,0xbc1cfbf0,0xbc4df6f5,0xbd80835e,0xbd574c6c,0xbd74a24e,0xbd6d5755,0xbd700ba2,0xbd580724,0xbd13b9a1,0xbc95a36d,0xbb9422dd,0xbbaf13d2, -0xbb9e5492,0xbbe2a553,0xbc7c0407,0xbc74cbba,0xbc55adae,0x3bacdb24,0xbbca71d8,0xbc49743a,0xbc9179a9,0xbba2ef3a,0x3b84c7bc,0x3a8f8d87,0x3c433388,0x3be1f027,0x3be26754,0xba46fe58,0xbb19c66c,0x3ab3baa0,0xbc0ed5b3,0xbbcd8ab1,0x3bb31c08,0x3b2d1c18,0xbb88b59c,0xbbbf7aa5,0xbc392080, -0xbd0ab4ad,0xbcea7198,0x3c77b28d,0xbaa7de0e,0xba73f95f,0xbcb7f4c8,0xbcaf984e,0xbca44dc2,0xbc21bb71,0xbc198073,0xbc9cd24b,0xbca20af4,0xbcaec6ca,0xbcde7945,0xbc773803,0xbc8745a7,0xbd105dc6,0xbce6edde,0xbc93cd2a,0xbc149710,0x3b87172d,0x3b2a4ca8,0x3c4b6109,0xba2fae1b,0xbaba06cf, -0x3aae9c41,0x38496542,0xbaacd4e9,0xbba105cb,0xbbba1f6a,0xbbaf37b0,0xbc58b058,0xbc32a39e,0xbba98041,0x3bacea9c,0xbcafdac0,0xbcb48884,0xbd36d1e5,0xbd795647,0xbd73f360,0xbd8e18fd,0xbd9f59ac,0xbd916eea,0xbd83d7c2,0xbcbb397d,0xbc0cf5a5,0xbcc196ca,0xbcd7ea4e,0xbd1a954a,0xbd2319aa, -0xbccb287c,0xbc86dd90,0xbc22eb7a,0xbbdd1731,0xba88ffb8,0xbbdb9c87,0xba8c0512,0x3bc54812,0x3c1e8617,0xbbb38ce9,0xbc143e21,0x39b9cd27,0xbbca1487,0x3ac1791a,0xbba294cc,0xbb648065,0xbbaa7813,0xbb742d38,0xbc63339c,0xbc613750,0xbc53478a,0xbbf0cc44,0x3c07954d,0xbbb25270,0xbd23774b, -0xbd7ea430,0xbdcf27d0,0xbdbf5542,0xbdaf3a85,0xbd83e102,0xbcfe8406,0xbcd19a87,0xbd436ffc,0xbd44745a,0xbd5097f9,0xbd070fa3,0xbcc6684f,0xbc3b011d,0xbc101d96,0xbb9da805,0xbb14b7c6,0xbb9e9c38,0xbadb898e,0x3be7581c,0x3c0aa37d,0xba8802e2,0xbb4fff8b,0x3ac1ac12,0xbb4fee6d,0xb9c05d90, -0xbb7d65e4,0x3b289388,0x3b0b4543,0x3b48d434,0x3ab3a2d5,0x3b857ccd,0x3ba97c5b,0x3c4385be,0x3d5b422c,0x3d5d8b01,0x3cd8802b,0xbc1459be,0xbd4c1cc4,0xbd8fb86d,0xbd8c8d7f,0xbcf824cf,0xbccd55e3,0xbcbf0dad,0xbd3176d6,0xbd6988b4,0xbd52be84,0xbcd7379a,0xbc96dc82,0xbc5551e9,0xbcb1fc7e, -0xbc5581ba,0xbc088a2c,0xbc13266b,0x3b56a522,0x3b770f77,0x3bede8c3,0x3a943bef,0x3b16f1c7,0x3b09832b,0x3a5c758c,0xb89c5e79,0xb8fdc9ba,0x3b2cceff,0x3bddec04,0x3bbcc9d2,0x3c8bc5ea,0x3caba5c1,0x3d1c3d9f,0x3d1b23a8,0xbc37cb2a,0xbce3ff68,0xbd8a1b12,0xbd459fea,0xbcb9b2b0,0xbc6d1580, -0xbc05b343,0xbc3df950,0xbcd0732f,0xbd32c55e,0xbd6df4a2,0xbd928aad,0xbd765780,0xbd64a665,0xbd2eb5e9,0xbcd01327,0xbc1c6689,0xbc2438f3,0xbbdc1fba,0xbc1dac17,0xbbe49de8,0xbad5f951,0x3c4c4c03,0x3b2b5845,0x3a49a037,0x3938d567,0x3bf5d886,0x3c33df8d,0x3bbd8b42,0x3c24627f,0x3c054bb6, -0x3c430a04,0x3c02edc2,0x3c706f6d,0x3c14eb25,0x3bb148b4,0x3cd07f0f,0xbc0f4f28,0xbc243663,0xbc52a9fd,0xbc5f12fc,0xbc2ceee4,0xbba8bfb5,0xbb0f05ef,0x3c859ec2,0x3cc32931,0x3c97de91,0x3c3d0792,0xbb5eaf3b,0xbc769493,0xbc54b5cb,0xbc7728c4,0xbc8b96d4,0xbc1f5e93,0xbbba91d3,0x3ba54212, -0x3bc9e831,0x3ad9dd44,0x3aabc6b6,0x3b8cd2b0,0x3bd82543,0x3bcefec8,0x3bbb2da0,0x3b0f422e,0xba3ecc64,0xb9ef5672,0x3aa63452,0x3bcc42d4,0x3bbab04a,0x3bcb65a3,0x3bf9bd88,0x3b9f102a,0x3900c6bc,0xbb6bf7ab,0xbc3d719d,0xbc249faa,0xbc4d5c0a,0xbc1958ff,0xbc0defeb,0xbc182d15,0x3a2f3fa9, -0x3be6309d,0x3c417374,0x3c103c0f,0x3bde248d,0xbb34aa03,0xb8e86ed5,0x3b1cdb4b,0x3b7fa2be,0x3b94e6db,0x3b3e8a39,0x3ad25f70,0x3b8c5abc,0x3c090c4f,0x3c0647e3,0x3bfb67f6,0x3bec1e21,0x3bdde209,0x3babcb61,0x3bf59b11,0x3c049464,0x3bd623e6,0x3bf34c06,0x3c05436d,0x3bd721df,0x3bd5bc5f, -0x3be4d56f,0x3bbabbb8,0x3b1bed68,0xbacd82f0,0x3aae008b,0xbb8d597c,0xbbeba23d,0xbc23f710,0xbc41cd04,0xbc6fdb77,0xbc520693,0xbc1d599c,0xbbcd61a1,0xb9ca9f18,0x3b92d904,0x3c0c554f,0x3c337bc5,0x3c5e72d6,0x3c7a2b08,0x3c2bc50e,0x3c436398,0x3b93cbf3,0x3b3cc33a,0x3be22f70,0x3bb43aa9, -0x3bae73a5,0x3b4ca9e7,0x38f352de,0x3bb5834d,0x3a358a94,0x3acd9faf,0x3b945ce2,0x3bc0edf1,0x3beef79d,0x3b52d1d4,0x3c033b47,0x3b2b3abc,0x3a896614,0x3c3687cb,0xbb0d60a5,0xbb6d5f22,0xbb4f5dea,0xbb20ad23,0xbad9fd20,0xbaa5b59c,0xbaea07d9,0x3b14a127,0x3b52be89,0x3b7d82d3,0x3b609deb, -0x3a942f8b,0x38e93cf0,0xba89b15b,0xba81ef0f,0x3a88d230,0x3b3a403c,0x3bd21ee8,0x3be0c27c,0x3b1e5537,0x3a4fd3e6,0xbab5c373,0xbb011945,0xba6f2ef2,0xbae00a3e,0xbb0c926d,0xbbad57c3,0x39c8436b,0xbb01abc3,0xbac65cb5,0x3b59a0cc,0xbb106663,0x3ad7e6e0,0x3c12a399,0xbbac4146,0xbbcf96e5, -0xbb4c6f1e,0xba8c4455,0xbb0715d9,0xbb419176,0xbb71f2b6,0xbb90f487,0xbbb3cb9c,0xbbb4d60f,0xbba4d4ab,0xbb849ce9,0xbb32465d,0xba120bf1,0x3a9fa05b,0x3b01236f,0x3b1dff29,0x3b30f7d9,0x3b012e99,0x3aaaeda2,0x3b1b466f,0xbb73a745,0xb8d94fbf,0x3c5eda3d,0xbbbb4310,0xbb1f28f0,0x3c61edf7, -0x3c78d397,0x3c6aaa84,0x3c5ee541,0x3c67f2d1,0x3c545529,0x3c3cb121,0xba7de037,0xbba4b419,0x3c5a6cef,0x3a9c8b6e,0xbb4b5f6f,0x3cb07214,0x3cb2f7d2,0x3c9ed9d1,0x3c61cd5e,0x3c6841d1,0x3c67582e,0x3c876701,0x3c8e3f09,0x3c8c489b,0x3c896f75,0x3c88c6bd,0x3c8512a9,0x3c845fc8,0x3c829d8a, -0x3c7e4ceb,0x3c8191d5,0x3c870dda,0x3c85ae0e,0x3c881e1e,0x3c78acf3,0x3c8e11f5,0x3c5d2e01,0x3b33b59a,0xbcd18aa6,0x3c9a9090,0x3ba8a947,0xbccd03af,0xbcc85514,0xbcc0cc57,0xbca4c167,0xbcbb8bca,0xbcab1776,0xbc8631f2,0x3b4180b8,0x3ca4ffdb,0xbcab1ccf,0xbadd5cf2,0xbc895efd,0x3c9cc4c7, -0x3c7ac417,0x3c810129,0x3c71200f,0x3cc4454c,0x3ce38074,0x3ce1503d,0x3cdd86bc,0x3ce08115,0x3ccda27e,0x3ccfb0d0,0x3ccd112f,0x3cc67e2d,0x3cc243b7,0x3cc1e184,0x3cb4b1bb,0x3cabff7d,0x3ca1a79c,0x3cb11dee,0x3abc604f,0x3c0e3a52,0x3a832ec2,0x3c20779c,0x3c972e95,0xba9f112f,0x3bf1754b, -0x3a511b7f,0x3b9c1570,0x3ba83850,0x3c859b2b,0x3b5af31d,0x3bcb6fce,0x3c0bb882,0x3a6739f7,0x3bb95603,0x3c2187f0,0x3cdb9d6a,0x3c358f4e,0x3c5a9765,0x3c352efb,0x3cd53285,0x3d03474c,0x3cfcefa2,0x3cffca8b,0x3cf5a921,0x3ce815dd,0x3ce514af,0x3ce21e83,0x3cbe7cd3,0x3cd3cfed,0x3cd895cb, -0x3cdb575a,0x3cc3212b,0x3cc5adb9,0x3c86c81a,0x3b8ca13e,0x3c17a9e7,0x3c8d8b97,0x3c45b689,0x3c0c6fa1,0x3c2d33f6,0x3afdf317,0x3c862d62,0x3bd710f7,0x3c2d9247,0x3bf77962,0x3c35057b,0x3c76ac43,0x3c59f5f8,0x3a4f2018,0x3cb77a00,0x3b9a9b21,0x3c35213f,0x3c6e9026,0x3c22c6dc,0x3c030031, -0x3cedc3d5,0x3d31c655,0x3d2df2d6,0x3d38f440,0x3d33824d,0x3d18bd30,0x3d223e68,0x3d165511,0x3d105b76,0x3d1284df,0x3d07648a,0x3cf319e0,0x3cdd20bc,0x3cc20147,0x3ca3c2aa,0x3c69279e,0x3c92f3bd,0x3c2d2ad6,0x3c917801,0x3c4e499f,0x3c2e1e15,0x3b2db196,0xbb4255bb,0xbb1243c6,0x3baf7d4c, -0x3c109579,0x3c2d15db,0x3c2abae1,0x3c1189cc,0x3b191a4e,0x3c338474,0x3cdac28c,0x3cc55378,0x3c3e92c7,0x3c0a36ee,0x3b39aa99,0x3cf9a3ae,0x3d269a0f,0x3d2b506d,0x3d351540,0x3d2784e5,0x3d156b7e,0x3d123d72,0x3d0fbd0f,0x3cd6186e,0x3d0b6c1f,0x3d1174cd,0x3d104694,0x3d04c2cb,0x3ce465a5, -0x3ca10fab,0x3bda8044,0x3c80d1e0,0x3c88c5e4,0x3c890a49,0x3c7353e3,0x3c0ba4b4,0x3b6f298c,0xb9eca255,0xb9a11bc2,0x3a118ce7,0x3bf6f6df,0x3c0482e3,0x3c72c47c,0x3c8afb13,0x3b0888d7,0x3c67f545,0xbc287ad7,0xbb83f549,0x3c4e4306,0x3c16a1d5,0x3ca37cf4,0x3cc56e38,0x3d0e0169,0x3d39c069, -0x3d1478cc,0x3d0d5f5e,0x3d2867e4,0x3ce8c3bc,0x3c8eb741,0x39b22e4b,0x3c1de34a,0x3c3aafd9,0x3c000ade,0x3c2ca9bb,0x3ca6fe0f,0x3cd373d0,0x3c7af854,0x3c8f8a24,0x3bc2330b,0x3c9a1027,0x3c591564,0x3be8164a,0x3a4f00b6,0xbb88cc09,0xba1b55cd,0xbb84fab0,0xbad5a375,0x3bd36967,0x3c21b173, -0x3c1ac230,0xbc0e3b7d,0x3c82c341,0x3b3f8474,0x3bc99836,0x3caee739,0x3c702a96,0x3bf53f55,0x3c89ffaf,0x3c54d977,0x3aaf8a72,0x3c94269e,0x3c949cc0,0x3c44d7ae,0xbb331714,0xbbed9258,0xbc13da83,0x3c250230,0x3cd1cf83,0x3d3f3190,0x3d12ef4f,0x3cfce07c,0x3c4babe3,0xba6c9416,0x3c46e12d, -0x3c8f86a6,0x3bf1c99e,0x3b7627d8,0x3b44a176,0x3b2f612b,0x3b378549,0xbb83fb10,0xbb44d6c2,0xbb8570ee,0xbc0a6b7c,0xbbc7d3f1,0x3b94b86a,0x3c95dc23,0x3b682313,0xbc90ec02,0xbce143ea,0xbd394f4d,0xbcc54554,0x3c90b124,0x3d184f07,0x3d44ef57,0x3d4170ce,0x3d0c0054,0x3ca01094,0x3c81f569, -0x3c506c10,0x3c9a3461,0x3ccd6748,0x3cfbf3a1,0x3cdebf05,0x3c8395ef,0x3c53d7a4,0x3c3c47b6,0x3c806eb3,0x3c790c8b,0x3c2f762a,0x3c480227,0x3b86e9c7,0x39de3f60,0xbaf05fdb,0xbb0fd317,0xba7a309e,0xbb4b3b1f,0xba1dd967,0xbb26f94d,0xbaf77f88,0xbbd63845,0xbc0eac48,0xbc27583c,0xbc5c419c, -0xbb1a3a86,0xbb0e270d,0xbbc9a9d7,0x3c0bc37a,0x3d961219,0x3d3f7262,0x3d4ea499,0x3d2f64b7,0x3d10a25c,0x3cbe26f2,0x3c749171,0x3caae797,0x3ca7f500,0x3ce04188,0x3ced807c,0x3cddefa2,0x3c4f12c7,0x3c3600a3,0x3c4028b8,0x3bd02a3b,0x3c6ef277,0x3c384b7b,0x3c09cbd8,0x3b5ef627,0x3b113b96, -0x39a83781,0xb8827a40,0x3a710e60,0xb7eb8bbf,0x3b708927,0x3b9a9a59,0x3ba4d878,0x3b2ecec3,0x3bb96469,0x3bba2f92,0x3c4e3aee,0x3d5ef42e,0x3d997081,0x3dca83f8,0x3db6b38d,0x3debce1e,0x3d4da63c,0x3c8f31ab,0x3a2d08df,0x3bda5bf8,0xba188816,0xba70edbe,0xbc9ae9a6,0xbc81e56d,0xbc5c992f, -0x3bf3e398,0x3c8eb68c,0x3cac648e,0x3cbf4e79,0x3c8aade3,0x3b38302d,0x3c2cc8af,0x3c46cb46,0x3c1b888e,0x3be62575,0x3b68fa66,0x3b36f432,0x3b32a2a9,0x3b41557f,0x3a99a283,0x3b7703bd,0x3beb6a04,0x3bda5c13,0x3ca07b6e,0x3d0a4370,0x3d11165d,0x3d4bb118,0xb864b29c,0x3ca60763,0x3da91d58, -0x3dbee089,0x3dc7e5a5,0x3dc6d9ef,0x3dbb1b31,0x3d80cfc5,0x3cfaf6d5,0x3c4a6fe6,0x3c7e169f,0xbb80a31b,0x3ba765b2,0xbb6b0fdc,0xbc4bd08b,0xbc7b71a6,0xbc15bc08,0xbc90a1f9,0xbc1f0300,0x3b448e7c,0x3bbf42d9,0x3c0b1345,0x3c068cf3,0x39981fb6,0x3aa4be33,0x3bee52ac,0x3c0ce675,0x3c22335e, -0x3c2a98fa,0x3c698151,0x3c8e8a44,0x3c8b2826,0x3c922da4,0x3c0b5b7a,0x3c91818a,0x3ca109f4,0xbad1971c,0x3d2b1074,0x3d32abc7,0x3d180d05,0x3d30758b,0x3d235cb0,0x3d26ea6f,0x3d4e6d2f,0x3d28b8bb,0x3cf651dd,0x3c95feb7,0x3caae901,0x3c86e3a2,0x3c1a9f19,0x3c26fd1b,0x3bfedfc8,0x3a72a426, -0x3ae9c60b,0x399c167f,0xbb7b8a52,0x3adb5f88,0x3c1158f3,0x3c7d6bbb,0x3c65c150,0x3c4f1885,0x3bfb2471,0x3be71900,0x3bbf9ee1,0x3c0f67df,0x3be45bbe,0x3c2b9943,0x3c2e1dd4,0x3c293f12,0x3c89229b,0x3c915a48,0x3ce5ae7a,0x3c3e316c,0x3c6b7c26,0x3cc4ed1e,0x3ca72140,0x3c80cb72,0x3cbe64e9, -0x3cecb443,0x3d13577c,0x3cfef1c3,0x3cf95396,0x3cf0ce5f,0x3ce3a345,0x3cc85f71,0x3c7d3732,0x3c80dcb9,0x3c4c603a,0x3c28e00a,0x3c434f9d,0x3c357a00,0x3c3e85f9,0x3c1c49ac,0x3c02e8e9,0x3c75206f,0x3c3054ae,0x3c25a46e,0x3c0d2450,0x3c06f6d9,0x3c038b32,0x3c31d7d9,0x3c4a487f,0x3c4986a6, -0x3c551169,0x3c5fc6bc,0x3c550f57,0x3c3dfd22,0x3c32ea03,0x3c11e5dc,0x3cb535d9,0x3c9dc0d1,0x3c986d60,0x3ca6f1e9,0x3ca3f5c2,0x3c99ed28,0x3c997a71,0x3cabd383,0x3cc2e715,0x3ccf9abe,0x3ca1da6a,0x3c87ab2b,0x3c5ea488,0x3c8263cd,0x3c964f8c,0x3ca6d429,0x3c982b1f,0x3cb6f7e3,0x3c8d74c3, -0x3c8bcd14,0x3c52ae2d,0x3c70c6ef,0x3c462715,0x3c3f3613,0x3c4af57d,0x3c0d4136,0x3ca64aea,0x3c17dfc6,0x3c7f9883,0x3c2b36a3,0x3c522087,0x3c870215,0x3c2da290,0x3c9680f1,0x3c9191fc,0xbbcd718f,0x3c08edbb,0x3c431e80,0x3c6a82ff,0x3c800bf1,0x3cae573f,0x3ccf4f68,0x3cf1cc52,0x3cc296fa, -0x3c908f8a,0x3c5b2b82,0x3c4112a6,0x3c183c7f,0x3bc030f5,0x3bd2a68d,0x3bdc6f85,0x3c054f6d,0x3c1cecf1,0x3c1e0610,0x3c87a6d5,0x3c13ab4b,0x3c4bc8d5,0x3c36a5af,0x3c49f5e3,0x3c0a736d,0x3bf163a5,0x3bef9998,0x3c03bcdd,0x3b8696e4,0x3be04a18,0x3c10380a,0x3a1363ab,0x3be32654,0x3af25b74, -0xbbc6d037,0x3c40a68d,0x3c521c94,0x3c669b8f,0x3c47dca7,0x3c508684,0x3c4e68a9,0x3c4cf0f5,0x3c39d41c,0x3c41cc8d,0x3c40cf2b,0x3c529944,0x3c535e20,0x3c46b0bf,0x3c3de1c1,0x3c363ce1,0x3c495e85,0x3c56eec5,0x3c67a128,0x3c6bc2e0,0x3c60c58c,0x3c7bcab2,0x3c604b20,0x3bc7e7f2,0xbc01175d, -0x3c5af979,0x3bc4ac71,0xbc1fd410,0xbc34da25,0xbc11def9,0xbbf4dca2,0xbc1052f8,0xbbf1262f,0xbb8fff44,0x3beb2b35,0x3c552460,0xbbb4d03c,0x3b66abc0,0x3c8b7132,0xbc96551e,0xbc714760,0xbcaeaab3,0xbc5edc44,0xbc61eb84,0xbc5299ce,0xbc791b2c,0xbc845d54,0xbc82f3a9,0xbc83fdc5,0xbc83468f, -0xbc7a3152,0xbc73e24c,0xbc756fac,0xbc807b37,0xbc806472,0xbc862495,0xbc87010e,0xbc859572,0xbc687f9b,0xbc8f9c1f,0xbb8b18e1,0x3c0b9baf,0x3cfe1cba,0xbc1aa772,0x3be20b5b,0x3cf514f3,0x3cf11e7d,0x3ce40a41,0x3cc40b87,0x3cf1e89e,0x3ce822b0,0x3cc6c82f,0x3c26f3db,0xbc40b946,0x3ccb3ce4, -0x3c5a7dbd,0x3cfe940e,0xbc623e9f,0xbc827155,0xbc812057,0xbc58bcd1,0xbcb97401,0xbcd4337c,0xbcd52992,0xbcdf5e56,0xbcdce811,0xbcbe23a6,0xbca4f9e4,0xbca4c9bc,0xbcc42ad0,0xbcbc44b1,0xbcc3f338,0xbcc0e805,0xbca871ec,0xbc9ed107,0xbcbad8a8,0x3c17f366,0x391e8162,0x3c137847,0x3b952236, -0xbc1250cc,0x3be4bb08,0xbb7d661d,0x3b869233,0xbad00a59,0x3b75abc3,0xbc3fa284,0x3b95cb9b,0x3bbd319b,0x3afc8a52,0x3b2320cd,0x3ac3727b,0x3b8a7881,0xbcc322df,0xbc5f2337,0xbc6b071a,0xbc017c5b,0xbcbc7419,0xbce9e42a,0xbce97cbf,0xbd03eb15,0xbcf73847,0xbcd7dc64,0xbcac85b2,0xbcaef7f7, -0xbcd81979,0xbce2bedf,0xbceb2ed0,0xbd02cc2e,0xbcc5e0d2,0xbcd87f04,0xbc366629,0x3c5a132f,0x3b5287d3,0xba0ae9f1,0x3bf63249,0x3ba706a3,0xbb85bd37,0xba64d53c,0xbca8aa2b,0xbb3a1481,0xbbf3647c,0x3b982044,0xbb3a9415,0xb9549ea9,0x3a835fed,0x3ad8c5f4,0xbc731a61,0x3c858948,0xb91065ff, -0xbc9cf823,0xbc2ae499,0xbbb924c5,0xbcdf0ab8,0xbd23c97c,0xbd25282e,0xbd479ad5,0xbd390021,0xbd10d493,0xbcd3ace1,0xbcbeb388,0xbd1815f6,0xbd135304,0xbd131bc0,0xbd16ed99,0xbced80d4,0xbcd6730a,0xbc838fa2,0x390ee6c0,0xbbe2b1ab,0x3c1334c2,0x3b003689,0x3c235b77,0xbb64b20d,0xb9a29989, -0xbb799375,0xbb824b1e,0xbac99006,0x3bed03c0,0x3a4be79c,0x3c56afe1,0x3bf90446,0xbc1e09b9,0xba8812c6,0xbc2cadf8,0xbc2b6a5f,0xbc931dd6,0xbbfc50d1,0x3bad42a6,0xbcb83a2d,0xbd02f88b,0xbd1b1b81,0xbd3e29de,0xbd30ca2e,0xbd10306e,0xbcc45f3a,0xbcc2c924,0xbd0aa907,0xbd1b182c,0xbd28e513, -0xbd3b4c15,0xbd0da32d,0xbcf408b7,0xbc6e371f,0x3cbb4cc4,0x3b5f42b3,0x3c27b3f6,0x3c213da5,0x3c037cdb,0x3bcc8305,0xbaaf5ba7,0xbb82d60e,0xbbd9351c,0x3ae20205,0x3ba9472c,0x3bfc230e,0x3c134e15,0x3ba5e8ad,0xbc01c5c1,0x3baa53c3,0xbc3f9a11,0xbd240668,0xbd61ffdd,0xbd4b5384,0xbd555597, -0xbd79bbf8,0xbd89e8d9,0xbd60efb3,0xbd49cfc1,0xbcfcf576,0xbc6a951a,0xbc9a1e9b,0xbc88acb0,0xbc40628f,0xbc23e736,0xbc15ed4a,0xbc8ba188,0xbca93eff,0xbcd13823,0xbc87468b,0x3ae89226,0xbb8ede61,0x3b67901a,0x3bfbb87e,0x3c45db00,0x3b98c2cb,0xba244b34,0xbb857891,0xbaf73c3f,0xbc1bb462, -0xbbd6562d,0x3954cd06,0x3b92b46b,0x3bcf6579,0x3c6be432,0xbca53919,0xbc12260a,0xbca08f6b,0xbc6264f2,0xbc325d1c,0x3a16527e,0xbbd19b1f,0x3a1567ce,0x3aab2a9e,0xbb0c42d2,0xbc0ee5b1,0xbade1eae,0xbc32d74e,0xbc4ec163,0xbc887bcb,0xbcf89941,0xbd188ac7,0xbd58f7e5,0xbd054dcf,0xbce8576e, -0xba2947ff,0x3ca4f9fb,0x3bf0044d,0x3c19a355,0xbb0c34fa,0xbb877149,0xb8b1ab0a,0x3ab1e163,0xb9714d13,0xbbbfca48,0xbbb22ad2,0xbbca664c,0xbbebfcf3,0xbb1279af,0xbbda50b8,0xbbd1c3ba,0xbbd56f64,0xbcd1f270,0xbd3b9af4,0xbd59a4d9,0xbd3f693c,0xbd256e69,0xbd39a2f5,0xbd50bdc4,0xbd7bb7ec, -0xbd1f2f4f,0xbccdc4a3,0xbc787ec3,0xbd221116,0xbd489bb4,0xbd4f3ed3,0xbd2c5adb,0xbcfa5c78,0xbcaa081b,0xbc7f8b9a,0xbc7d90a6,0xbc2e5bfd,0x3b6d8bb7,0x3bb55c46,0x3bbf4efe,0xbbf7f511,0xbba45be9,0xba1ee8a4,0xbb639870,0xb9896c48,0xbbada541,0xbb536a10,0xbbb249df,0xbb895ec1,0xbc404748, -0xbc3f04bb,0xbc98c690,0xbc296a26,0x3b505b20,0xbc43d6d2,0xbcf96e68,0xbd2da707,0xbd900014,0xbdb17037,0xbdcbdc8c,0xbd91cc4b,0xbd792940,0xbd31d4af,0xbcddefe6,0xbd518083,0xbd6b9d69,0xbd751ce1,0xbd3ce9ec,0xbced332f,0xbc3d1da1,0xbc2755f3,0xbc583a38,0xbb981294,0x3b913864,0x3b7a7194, -0xbba6c786,0x39c403f7,0xbb798e49,0xba7fc251,0xbb5eb809,0xba91ce10,0xba599712,0x37a99e59,0x3a926460,0xbb528e01,0x3b8839f2,0x3a4982ab,0x3c12de0e,0xbb15e7fd,0x3d8584e0,0x3d49556c,0x3c392e98,0xbcd92c2d,0xbd9390e0,0xbda4eaa2,0xbd8b60c0,0xbc9505d8,0xbcc6885f,0xbc91f3cb,0xbc9772df, -0xbc8c0d20,0xbc97c899,0xbc8ba099,0xbcb73311,0xbcdac47b,0xbcd9f71b,0xbc9a35cc,0xbc4e05fe,0xbc12ca7e,0x3c07ae38,0x3b9b4d0c,0x3b81ff6b,0xb94be710,0xba50b78a,0xbb13dd31,0x3a15ba9e,0x39b36022,0xbaba8e37,0x3ab91391,0x3bbaa74d,0x3b16bd21,0x3c7387f7,0x3c9cdd67,0x3d2c25bb,0x3d41f752, -0x3cea62f9,0x3cb6af54,0xbcd15ae4,0x3a0a5c74,0x390554ce,0xbc0418f5,0xbcf269cc,0xbd4f4dc6,0xbd582d7b,0xbd6dbe81,0xbd83994d,0xbd2fe9ca,0xbd03cab0,0xbd37f5b6,0xbcc86fc3,0xbc8b0bc8,0xbc7a5ac2,0xbc970f45,0xbc9d6dd8,0xbc9c8400,0x3ac06ec3,0x3b0a43e3,0x3a727df9,0xb97db0d8,0x3abc44e2, -0x3c05156b,0x3bafd86c,0x3b7d4075,0x3b8ec36e,0x3c2a7562,0x3c1982c6,0x3c7c51a1,0x3c295e0a,0x3cb87d8a,0x3ca6e8b3,0x3c23d4a6,0x3d1bf7a7,0x3985425c,0xbc188181,0xbc30830c,0xbc4c646a,0xbc2c3cf5,0xbbd24375,0xbbce8452,0x3c17beb1,0x3c6ddf35,0x3bf468df,0x3ad0ae47,0xbc0507e0,0xbc7469ed, -0xbcadf317,0xbcc3a1f0,0xbcb65bff,0xbc98e48f,0xbc63fc92,0x3a132070,0x3b58642a,0x3a93efaf,0x3c3920d6,0x3bf33439,0x3bd179d8,0x3bbfca63,0xba647e1b,0x3b5a0de9,0x3b809ee6,0x3bdbe7ee,0x3bce0542,0x3bb7713a,0x3c2d7229,0x3bee8590,0x3c1017cf,0x3c4085b5,0x3c60c80b,0x3beaa6a2,0xbc2e2658, -0xbba8be63,0xbbd61632,0xbb921d37,0xbbb5f094,0xbc2dc517,0xba1f344f,0x3b97f29a,0x3c1ac616,0x3bf1db38,0x3bcb6c16,0x3b1075dc,0xbb147c83,0xba230c11,0xba8da0b4,0xbad7873a,0xbb0642f9,0x39629b52,0x3c00d53a,0x3c36b33c,0x3c127d9e,0x3c4845fb,0x3c1206ad,0x3bfff3f5,0x3c3822b9,0x3c445e03, -0x3c45429a,0x3c26f6ef,0x3c2432c2,0x3c2545a9,0x3c01882d,0x3c256d3e,0x3c83cfce,0x3c4f2954,0x3c867ea9,0x3b08562b,0x3a31ccb4,0xbb0a871c,0xbbfab6d2,0xbc168d28,0xbc2164ce,0xbc29a682,0xbbc4f9d1,0xbb078eb2,0x3b801584,0x3bf064db,0x3c4c0d2a,0x3c830211,0x3c86d314,0x3c8831fc,0x3c546de1, -0x3c4be880,0x3c197883,0x3c1b192b,0x3c145698,0x3c24f972,0x3bda0b87,0x3c0097e6,0x3c0f3369,0x3c0a472a,0x3c265192,0x3a353be7,0x3c5a826a,0x3b3be423,0x3c202b64,0x3b978fe8,0x3bb610a2,0x3c75e156,0x3c1f107f,0x3bd68992,0x3c3e2ac1,0xbbdd28c9,0xbbc0b982,0xbbdef8ee,0xbbc2e775,0xbbdf9296, -0xbc09b6af,0xbc3f8883,0xbbf5bac4,0xbb9a4d76,0xbb364016,0xb9c99308,0x3a4fb4dd,0x3b834904,0x3b3a9c6c,0x3b716edb,0x3bea8ca8,0x3c0f0a54,0x3c37b382,0x3c4514aa,0x3c7e1cfb,0x3c3d51a3,0x3c3fff56,0x3c089c5d,0x3bdd8daa,0x3b6f0530,0x3ba30f91,0x3b42cf05,0x3bcd4ef2,0x3b7d5ed7,0xbb3f7842, -0x3c130535,0x3aa8e2dc,0x3a816435,0x3c28d4c6,0xbbd5f4be,0x39b97696,0xbbd56bdc,0xbb8d3e20,0xbbb5d60f,0xbbd7a789,0xbbf1fb20,0xbbf4c479,0xbc03b540,0xbbe50690,0xbbd03f30,0xbbab94e3,0xbb808bc8,0xbb277691,0xba9fd3e0,0xba6b4124,0xba2d828f,0xba7909cf,0xbaf19557,0xbb11e534,0xbb5e1bb8, -0x3a299abb,0x3c1c2ace,0x3c99fb7b,0xba734024,0x3c0fb526,0x3caa3e65,0x3cb9b195,0x3ca4ee4a,0x3c99c568,0x3cac35ff,0x3ca2635f,0x3c873f2f,0x3bcd598e,0xbad8eaab,0x3c973c93,0x3c3e5aaa,0xbbed6e0c,0x3c7ef636,0x3c03c486,0x3cb5e35b,0x3c4e9331,0x3c45e3f8,0x3c3e4d9b,0x3c4e9f23,0x3c5b0375, -0x3c6c063f,0x3c5f5a20,0x3c61e9c6,0x3c642f6a,0x3c65480f,0x3c650c65,0x3c5dabef,0x3c623569,0x3c676823,0x3c602fcf,0x3c65d697,0x3c48decd,0x3c81efc1,0xbb154b1a,0xbc5c53e3,0xbccf48e4,0x3b95b084,0xbc44a2ec,0xbcdcee10,0xbcddb48e,0xbcd0e32e,0xbcb96a88,0xbce78b68,0xbcdc5163,0xbcc36fa9, -0xbc7a755f,0x3bc4cc51,0xbcbca362,0xbc98e960,0xbd037243,0x3c3eaa98,0x3c6f0a95,0x3c52276e,0x3c2f9ed5,0x3c568ec9,0x3c81a79a,0x3ca06b9b,0x3c86e4bb,0x3c9654d9,0x3c99c1ab,0x3ca8b7cd,0x3caaa0c4,0x3c97a4d9,0x3c9ccfee,0x3c9da389,0x3c8fd505,0x3c854cf7,0x3c882b3e,0x3ca5ab2d,0xbc44f4bb, -0xb96a76f4,0xbb65e348,0xbba0aad6,0x3bfb5cbf,0xbbd5c5c8,0xbadb1a22,0xbc3154fc,0xbb890751,0xbb977889,0x3c853a76,0xbb7e435e,0xbb394712,0xba591cba,0xbc1bd82c,0xbb27cebe,0xbc08df1b,0x3cc335b1,0x3c63ab82,0x3c32d9c3,0x3bfb6fcc,0x3c48082b,0x3c705a6f,0x3cb6ff94,0x3c92caf4,0x3c9cd260, -0x3ca9022e,0x3cc05544,0x3cc371f5,0x3c91c7a1,0x3cb21459,0x3caa4241,0x3cac9607,0x3c86635c,0x3cb23067,0x3ba6bf88,0xbc8ac7ad,0xb91ecd22,0x3bc74e46,0x39e176c4,0x3b28f2e9,0xba3104bc,0xbb014b75,0x3c70b89e,0xbc13fd6c,0x3c0b75c9,0xbb121c82,0x3bae7227,0x3bef991e,0x3b6b63a1,0xbc2ef44f, -0x3c657a40,0xbc7d15cc,0xb99798f9,0x3c88d363,0x3c049d0f,0x3ba52a3f,0x3bf539f2,0x3c6de43a,0x3cd51c19,0x3c969d57,0x3cb6cfbb,0x3cc2ecce,0x3cff0bdb,0x3cfbc62f,0x3ca96db9,0x3ce0559e,0x3cced431,0x3cb2af84,0x3ca1f415,0x3caecbc3,0x3c323478,0x3abd0726,0x3c853f76,0x3bec6074,0x3c933d50, -0x3bd285e2,0x3bf5502d,0xbba5528e,0xbb68b26b,0xbb9c7d19,0x3c1636f0,0x3bdf9d56,0x3bd6bb47,0x3b548a54,0x3bd49d7e,0xbbcdbd5d,0x3b8842a8,0x3c7419e8,0x3c31b885,0x3c943250,0x3baad386,0x3b6e2dff,0x3c05fa25,0x3c6edce3,0x3ce0ea67,0x3cab77e1,0x3cb876b3,0x3cd9cc70,0x3d00086b,0x3d01f402, -0x3c916188,0x3cd81136,0x3cdd03cd,0x3cd682c8,0x3ca6d5fd,0x3ca854cf,0x3c20ed94,0xbcab04ee,0x3c3bef81,0x3c07fb54,0x3c86bece,0x3c8a97c0,0x3b94cbe8,0x3bbc8b84,0xbaaca156,0xbb094263,0x3ad0403d,0x3c304f17,0x3bbbe888,0x3c63dbfb,0x3c27d86c,0xbb793d1f,0xbb6ac47f,0xbd4bfceb,0xbcefbcac, -0x3cec0b9f,0x3ca43c22,0x3c4890bc,0x3bdf0499,0x3c040a75,0x3c90fd75,0x3c77970c,0x3cdd22c7,0x3d4821b8,0x3d218d01,0x3cee6122,0x3c5e29f6,0x3bf6960e,0x3b22a51c,0x3c9bcae6,0x3cad4ce7,0x3ce71751,0x3cbfb197,0x3b42b468,0x3c9c3522,0x3b92a20d,0x3c90d669,0x3be61928,0x3bc5f878,0xb9dfdf02, -0xbb2f5a60,0xba6196ee,0xbbe7d654,0xbba5fb77,0xbad48441,0x3bdbfc3a,0x3af536bb,0xbc29ddbe,0xbc6957dd,0x3c07cfff,0x3ccd73f4,0x3c937203,0xba849b29,0xba89dc4c,0x3ba3a73d,0x3b7aaa7f,0xb9897c6a,0x3b762a35,0x3b581937,0x3c1dd42b,0xbc14fe18,0xbc34bfef,0xbbe7e3db,0xb8c62137,0x3c21e6d4, -0x3cc44bc3,0x3c21d4a2,0x3c894c91,0xba04c00b,0xbbd0e597,0x3bc8eaeb,0x3bbc2a30,0x3b81ee92,0x3b542249,0x3b096d2e,0x3b43b589,0x3a216cc7,0xbbbef841,0xbb961513,0xbb570266,0xbb2d47d4,0xbc2d3b1e,0xbbb47d62,0x3a05666c,0x39e58ef6,0xbcd89656,0xbce68a88,0xbcc5ad8f,0xbc2be281,0x3c67488b, -0x3c6adee9,0x3c95696c,0x3c7702c3,0x3ccf4d34,0x3cd518c3,0x3ccab7e1,0x3c92d8ae,0x3c4723ad,0x3c498cd6,0x3c48bbca,0x3be54bba,0x39f361d4,0x3a2181fe,0x3c01e18d,0x3c12c42e,0x3bfaa014,0x3bef5709,0xbbb7a5d9,0x39b777d8,0x39c58658,0x39a754cb,0xb8f16790,0x3b6c54cb,0xbb0630f0,0x3a3c633f, -0xbb64e799,0xbb17d581,0xbb8f4363,0xbc369b96,0xbca108e8,0xbcc16b77,0xbc813cf8,0xbc980f2d,0xbb4ac4e0,0x3a9023f1,0x3c953cfc,0x3c3ef7c0,0x3c197fdb,0x3c504ae0,0x3c1ac2a4,0x3bf64576,0x3bc323ec,0x3c52cd34,0x3c1160a2,0x3bb3110c,0x3b8c48e5,0x3b711522,0x3b3bd9a9,0xba1023d9,0x3c1a1b23, -0x3aa4e185,0x3bdac084,0x3bfbfc3c,0xbb9192a7,0xbb887068,0x3b2507bb,0xbb4e9b9b,0x3ae1a4b1,0x3a295922,0xbb03f0b2,0x3b90da18,0x3ad7bed2,0xbacbf656,0x3a7623aa,0x3badf715,0x3b1ed722,0x3b01d4e0,0x3d519e19,0x3d19bbd1,0x3cec5d63,0x3c4780e6,0x3ccd0d2c,0x3bd3ed9d,0xba83388a,0xb7251d39, -0xbc9a0f38,0xbce81a8e,0xbcbc0679,0xbc8fb160,0xbc42387b,0xbcaafd2c,0xbbaa513a,0xb9e6b213,0x3c2d704c,0x3c1ed3a7,0x3c21caee,0xbb977861,0x3c213e20,0x3c26d229,0xbb56bea7,0x3af44b13,0x38a1555e,0xb990bd15,0x3aa446df,0x3b283e20,0xbaa3e537,0x3a83b834,0x3b867dae,0x3b9b25a8,0x3c4e6d9e, -0x3ca8ef01,0x3cfd6eb3,0x3d2ed0f6,0xbc26a911,0x3c879310,0x3d9bae61,0x3d9c66dc,0x3d89f211,0x3d588a42,0x3d077c19,0x39d3e367,0xbc0b90ad,0xbc656aa1,0xbc48495d,0xbb58b147,0x3b9f9130,0xbc5f9116,0xbc557443,0xbc816efd,0xbc9d27b7,0xbccc6d6f,0xbc6ea00d,0xbb96e7ea,0xbc1b05d5,0xbac2b025, -0x3b543c76,0x391a65cb,0x3b6fd541,0x3c075940,0x3b1a3b76,0x3b315ae7,0x3b657110,0x3c1fab68,0x3c5afc7d,0x3c440b81,0x3c917912,0x3c3ebf67,0x3c42ff87,0x3cd39ca1,0xbbec2afe,0x3c9f1fd8,0x3cd461ed,0x3cc9b8d3,0x3d0fc678,0x3d2b342c,0x3d3b70ab,0x3d3bb0d0,0x3cf3ca92,0x3c7ace54,0x3b160c06, -0x3ae9695f,0xbba0183e,0xbc4ca370,0xbc7c2b25,0xbc3982e3,0xba1f9b2c,0x39d980b1,0xb8c2eb0a,0xbbeba919,0x3b39ca74,0x3c2a39a2,0x3b8a49c4,0x3c1b70f4,0x3c06adc8,0x3bb1b959,0x3c2a3a33,0x3c0dcdac,0x3c2d4479,0x3c234fc3,0x3c418457,0x3c1bfa0e,0x3bd3157c,0x3c3a745c,0x3bd5606a,0x3c670cec, -0x396a4371,0x3c0e6dcc,0x3cc0d7ed,0x3cb462bd,0x3cb8c60a,0x3cd9fb81,0x3d01ea19,0x3d175907,0x3cf90a3a,0x3cdd65a0,0x3cc0ef79,0x3ca3d9b7,0x3c926634,0x3c6335d8,0x3c18be22,0x3c19104b,0x3c492ff8,0x3c37abc3,0x3c416648,0x3c349da6,0x3b4a81d5,0x3b9f194f,0x3c23d1ce,0x3beb5bb7,0x3c23f113, -0x3c195037,0x3c0374f3,0x3c0e8cf0,0x3c49f599,0x3c402a5b,0x3c28f52e,0x3bd85e0c,0x3c20f1a4,0x3c0ca344,0x3b55c153,0x3b69365e,0x3b4c6c1c,0x3c8ab823,0x3c897c09,0x3c5be3ae,0x3c6da5f5,0x3c78b8e8,0x3c87a4d5,0x3c9a7f6b,0x3ca86ff4,0x3cbde10b,0x3cde1f70,0x3cc5f874,0x3cc3c7db,0x3ca74c0c, -0x3cbdb9e4,0x3cc2b3ce,0x3cab8771,0x3ca3216f,0x3cd54879,0x3c9543a4,0x3c6534b3,0x3c4e5742,0x3c4e37b2,0x3c34f5bc,0x3c297482,0x3c0fb68d,0x3c0f090b,0x3c824b14,0x3b468f4c,0x3c3fda2a,0x3b8e9d3c,0x3c0433c2,0x3c02922f,0x3b8615b8,0x3c33936f,0x3c62939f,0xbc1447be,0x3c16e166,0x3c1ee9fa, -0x3c4cf442,0x3c6555c7,0x3c898022,0x3c97d1a9,0x3ca3e5ae,0x3c959da8,0x3c819125,0x3c5c67c0,0x3c5d18dc,0x3c55566c,0x3c5cb541,0x3c41c405,0x3c3c6a84,0x3c778d3d,0x3c747db0,0x3c5ba2af,0x3c90cdd9,0x3c2e3189,0x3c4a1133,0x3c138ddb,0x3c13cf36,0x3bb475cc,0x3b8375be,0x3b2b130a,0x3b0d9f83, -0xb937fbc7,0x3b0375d4,0x3c185e11,0xbb6b80a1,0x3b3edeea,0x3a10b3b8,0xbc04a549,0x3bc9bf4f,0x3b10f809,0x3c4bf045,0x3c24c3dc,0x3c267062,0x3c239893,0x3c24e64a,0x3c215401,0x3c2a72a7,0x3c3288ec,0x3c44348b,0x3c50ae6e,0x3c52ea0c,0x3c4eb4d3,0x3c4d656f,0x3c5457dc,0x3c573b52,0x3c5024c8, -0x3c48b3f4,0x3c43c6cf,0x3c5d95fe,0x3b940b5c,0xbb8fbec7,0xbc1b59e0,0x3b8023ab,0xbba6b161,0xbc44bb58,0xbc5a8ba9,0xbc3d16ea,0xbc2bcf22,0xbc5c2828,0xbc5836cb,0xbc2630f5,0xbb6b1764,0x3b90778a,0xbc192f6b,0xbbe665c5,0x3c47faf3,0xbaf1f87b,0x3bbaff83,0xbc40fbfc,0xbb5738eb,0xbb2e4c36, -0xbaf9884d,0xbb28f852,0xbb4852c1,0xbb592fdb,0xbb84d04b,0xbb901995,0xbb9b6e32,0xbb7aa63a,0xbb7c0c0d,0xbb8712ce,0xbb970ae9,0xbb9fc5e0,0xbb9f6743,0xbb995953,0xbb618faf,0xbbd85e5d,0x3c4400ce,0x3c9e4a8e,0x3c982084,0x3c065fc3,0x3c9cff1a,0x3c9c579a,0x3ca0e39b,0x3c9663a9,0x3c8726e7, -0x3cb6d685,0x3cb678c5,0x3ca9afea,0x3cb15358,0x3bd3e737,0x3c883988,0x3cbe55a2,0x3d04335c,0xba8ae761,0xbb963cbe,0xbaff0836,0x39d9fba8,0xb9d5ee0b,0xbad6773f,0xbb80bb75,0xbbde86f3,0xbbfe8131,0xbc01ca9a,0xbb82e5c2,0xbb33e4de,0xbb8d8669,0xbbcabda7,0xbbed8264,0xbbf0b3c1,0xbbac77e7, -0xbbc0a1ba,0xbc21b397,0x3c8be55e,0x3c1d7c3c,0x3c4d7bb3,0x3c8a9f8e,0x3baf7b2a,0x3c0ed8c6,0x3bdedaab,0x3c561498,0x3c011821,0x3c51febb,0xbb78e1db,0x3c1b3132,0x3c53d723,0x3c39d271,0x3c2c3aec,0x3c184880,0x3cb71b55,0xbc2d4c6d,0xbb92f2c0,0x3a81c217,0x3b7c7a5a,0x3b9925a8,0x3b58b72c, -0xba71ec26,0xbbd35649,0xbc0bae71,0xbc28a4ef,0xbb55cf1a,0xbb3803db,0xbbaf2269,0xbc121dff,0xbc201bc2,0xbc3a5aba,0xbbc04244,0xbc3090de,0x3ae52cf9,0x3cbdceb9,0x3c308424,0x3c53db47,0x3c8207c3,0x3c1a1280,0x3bbf77c3,0x3b517edc,0xbbfd7a40,0x3c31855b,0x3a58efdd,0x3c59cdef,0x3b60f48a, -0x3bf8d5d0,0x3c0d9f1a,0x3c15d77e,0x3aaac165,0x3cb8ddc8,0x3ac135b1,0xbc1258cb,0x3a7886ab,0x3b809eb6,0x3c18fdbc,0x3bb94975,0xbafbdafb,0xbc3f9c4c,0xbc6b41a4,0xbc8e7d35,0xbb637f9e,0xb80a252a,0xbb90c05d,0xbc3774b0,0xbc605101,0xbc65b65f,0xbc20cbd3,0xbc408d3b,0xbba04ead,0x3c091d54, -0xb988940b,0x3c6975be,0x3ba6633a,0x3c52b016,0xbb4551b8,0x3bae4473,0xbb22888c,0xbb281a7c,0x370e5d82,0x3c1b8a1b,0x3af6a1f7,0x3c8719a8,0x3c21b488,0xbb6d8334,0x3b837a93,0x3bfcc64e,0xb9191f78,0xbc2ee828,0x3bcb3ad4,0x3bee6124,0x3c8debeb,0x3c81aae1,0x3b9fffbf,0xbbc8414a,0xbc562ced, -0xbc8fdf3e,0xbb91c6c2,0xbb6163ad,0xbc03c091,0xbc5c77b2,0xbc839f5d,0xbc9248d4,0xbc290569,0xbc4c2f64,0xbbc4778a,0x3cdb67d4,0x3ba1736f,0x3c86ae8d,0x3c3c53d2,0x3bfafb33,0x3b26fed2,0xbb84f26e,0xbb8d5561,0xbbe47cdd,0x3b620ec5,0x3bc4cef8,0x3b94266f,0x3c12969c,0x3b7c9474,0xbbd8041a, -0x3c6ff929,0xbc338728,0xba96aca5,0xbcb9ed21,0xbc3629d1,0xbca0ec0a,0xbce7f9fe,0xbd0ea010,0xbcd8abba,0xbd2d8e5d,0xbceff07c,0xbc15719b,0xbc849a67,0xbc42e718,0xbc386ba5,0xbc8a9898,0xbc7ff024,0xbcb490df,0xbc7e5bff,0xbc3a5e54,0x3bf237a7,0x3c81cd0e,0x3a9f8d6f,0x3c7e2f05,0x3c003c93, -0x3c521480,0x3b2ff51b,0x3b0151c4,0xbb3047fa,0xbb75b505,0xbbed7776,0xbb6bbafb,0x3b6889b1,0x3bd0bf20,0x3c5ce650,0x3cc82ad8,0xbc25f0ef,0x3c887b5f,0xbc2f4507,0xbcf3383d,0xbc3ec0ae,0x3b6715df,0x3c6ad4a8,0x3c95a331,0x3c3913c5,0x3bfa97d8,0x3ab81b2d,0x3bae88f2,0x3b34a4c6,0x395246fc, -0xbb983ce6,0xbbbe4abf,0xbc189beb,0xbc932f27,0xbbf9c2b4,0xbc2ef79b,0x3bf2725d,0x3c8c3f07,0x3c2095e2,0x3b732eee,0xb9411049,0xbb4179cc,0xbb208dd0,0xb8e14720,0x39a58a54,0xbbadafd1,0xbb9200ed,0xbbe863e9,0xbbab7806,0xbc25f776,0xbc4aba45,0xbbabc0df,0x3c0c5a9c,0xbc9b33fe,0xbcf68be7, -0xbc45879a,0xbb070bdf,0x3b5de0d8,0x3bcea36e,0xbac85a33,0xbc8ed70b,0xbccff9a5,0xbcda8df3,0xbc35ca4c,0xbc9a76b0,0xbc865c5e,0xbca29db3,0xbcba525e,0xbc9762f4,0xbc784d1e,0xbc0d9564,0xbc2c2a95,0xbb16515e,0x3c4cd61a,0x3be40011,0x3a88c3d4,0xbb2d0102,0x3b558304,0xbab521eb,0x3b0b4335, -0xba8c3a9b,0xbb6a4fa9,0xba19f8d2,0xbb51d5cf,0xbb1a8164,0xbbdcaeb9,0xbc243c2a,0xbcaa90fd,0xbc385a02,0xbba01efa,0xbc5e842e,0x3b64036e,0x3b621400,0xbc86be07,0xbc8564a9,0xbcf7f7f6,0xbd199d15,0xbd0c6739,0xbce53ef4,0xbc616815,0xbca97540,0xbc8274e0,0xbcc8bf41,0xbca3618a,0xbc89c21c, -0xbc3bdf68,0xbc20ddce,0xbc547065,0xbb1b64dc,0x3c55ea7e,0x3bd9a825,0xbc164746,0x3ae7c849,0xb9054b60,0xbaba949e,0xbae14489,0xba0a694f,0x3ac42edb,0xba860d70,0x3ab2fb88,0xbb57f361,0x3bc15dd2,0x3a3bb074,0x3ba64bb9,0xbc0655d8,0x3d41e757,0x3cc9aa0e,0x3bf9a900,0xbb94e499,0xbd11e1f0, -0xbc52635d,0xbc165205,0xbc9958d7,0xba0ee552,0x3b7c8174,0xbaa43ddb,0x3b8da25e,0xbb642885,0xbc396c2a,0xbc09a4b0,0xbc38afe7,0xbc3e0d10,0xbc511fe2,0xbc316c97,0xbba90485,0x3c13d4d3,0x3bdcb3bb,0xbb16334d,0x3821271d,0xbae64c9c,0xbb12af24,0xba3f9d5e,0xb9c7c3a9,0xbad6cd02,0x3a96aec6, -0x3b97f937,0x3ac2bb47,0x3bf5d8c9,0x3c627829,0x3d06af1f,0x3d2b8153,0x3d566f88,0x3d887304,0x3d47e7fd,0x3d7783be,0x3d04b8a1,0x3c95d879,0xbc44b873,0xbd2adadf,0xbcf6d0fd,0xbcaf3a6a,0xbb9d558e,0x3be403b1,0x3a38a441,0xbb94b447,0xbc43edbc,0xbc54084a,0xbc97c379,0xbc74238d,0xbc2e7af6, -0xbc3c0494,0x3b9ea1b8,0x3b8e2287,0xbb767e8b,0x3b4e62b2,0x3b908747,0x3c2af141,0x3baa094d,0x399c14d2,0x3ad4c868,0x3c23ae27,0x3c3f5c30,0x3ca3a263,0x3c99bfc5,0x3cca2f89,0x3cef150f,0x3cb3fd7c,0x3d00c6bd,0x3cc4973d,0x3cac2ff1,0x3cc3428c,0x3cb7db6a,0x3cd8272d,0x3cb7a79e,0x3c49bcab, -0x3c218b00,0x39d4c5d9,0xbc18101c,0xbc8bcf63,0xbc91b9c4,0xbc8c45ad,0xbc8fd2b8,0xbc8ad724,0xbc3d12ec,0xbc463194,0xbc22a127,0xbb354563,0x3b54e718,0x3b17249d,0x3c30f611,0x3b9174bb,0x3b9cba12,0x3c0869af,0x3b19b2b6,0x3c167a24,0x3c07fe7a,0x3c5c05ea,0x3c55d5d3,0x3c4785d8,0x3c7cce4d, -0x3c59f063,0x3c86d887,0x3cc5974e,0x3ca84515,0x3c88ffd5,0x3c2da91c,0x3c8611da,0x3c849e4c,0x3c9b4480,0x3c9bec46,0x3c78b7ba,0x3c73d067,0x3c4c19d7,0x3c5d8e34,0x3bfe4dbf,0x3bc29301,0x3b5e5f4f,0x3abf19ba,0x3b81a75c,0x3b92de50,0x3b94354d,0x3b6054e5,0x3bd92fbc,0x3c5b4280,0x3c4b2c46, -0x3c1726b5,0x3c369b3d,0x3be3c09c,0x3bda1853,0x3c4c1cea,0x3c375c44,0x3c1d27c1,0x3c296631,0x3c24149c,0x3c3717ea,0x3c32843e,0x3c5b535d,0x3ca26dd5,0x3c7ad5d5,0x3ca529e5,0x3c307cc2,0x3bec5e8a,0x3c0a25f3,0x3bc94946,0x3bde1f3e,0x3c09ce1f,0x3c4102b7,0x3c72c579,0x3c91370e,0x3cc21d94, -0x3c9b754b,0x3ca47f10,0x3c94e2a9,0x3c90be7a,0x3c914b09,0x3c458b94,0x3c6ade3e,0x3c47f6b1,0x3c8b52ce,0x3c8f02ec,0x3c510017,0x3c24cc65,0x3c23e1f2,0x3c3b8a8a,0x3c2f3fe5,0x3c15329b,0x3b71d7e0,0x3c840200,0x3b9390e1,0x3c2dcf4e,0x3b95bda0,0x3c1f44fc,0x3c811204,0x3c86c73b,0x3c62dfe6, -0x3c28a7bd,0x3b9c1019,0x3bed71ea,0x3bdfe7dd,0x3be9f879,0x3bd0ce52,0x3b967f18,0x3aba99b5,0x381dea9b,0xb9be9940,0xbacdd05e,0x3a4cada6,0x3b24d9e5,0x3bdb7778,0x3ba2fa07,0x3b96445d,0x3bda2fbc,0x3bb75897,0x3b38515d,0x3b87dc69,0x3c6bba59,0x3c5d3b95,0x3c81737a,0x3c5eb27b,0x3c59252a, -0x3c474943,0x3c6e3aee,0x3c75a72f,0x3c5a5315,0x3c59ef43,0x3bdc6854,0x3c68650b,0x3c41265c,0x3be117c5,0x3c1e9715,0x3be44181,0x3c462445,0x3b821795,0x3b885563,0x3b68eb11,0x3b54e36a,0x3b484905,0x3b69017b,0x3b8f0c85,0x3bbd369f,0x3bd80d42,0x3bf1eb79,0x3bfd39be,0x3befec97,0x3be95297, -0x3bd2bb61,0x3bc5c3b9,0x3bb0bde9,0x3ba049b6,0x3ba9329b,0x3b19cea5,0x3c2436af,0x3c72ad50,0x3c514b28,0x3c282230,0x3c7e7974,0x3c543f53,0x3c6076ad,0x3c45ea2c,0x3c3f6f7a,0x3c5c2abb,0x3c571ae8,0x3c3aff91,0x3c53c22b,0x3c1c0537,0x3c4419de,0x3c82ffe8,0x3c01149a,0xbb2ef793,0xbc2795da, -0x3b8e5227,0xb94e1ae8,0xba5cb35a,0xba4354bf,0xbaf452e6,0xbaf2ee76,0xba7433b4,0xbac1d669,0xbabd771d,0xbab10990,0xb982ccf3,0x38e94937,0x3966a4fb,0xb93a2761,0xb9f6242b,0xba28f1cb,0xb9ec7f74,0xba38b1dd,0x3a89f022,0xbc482bd8,0xbc5d7cb5,0xba7a4c65,0xbc25ff5b,0xbc6be0f3,0xbb833bd9, -0xbb94d472,0xbb80bf7b,0xbb8a7d61,0xbbe3df5a,0xbbe921d7,0xbc026979,0xbc7d9b5b,0xbc236724,0xbb8188a9,0xbc799396,0xbc80389f,0xbbc450b8,0xb945997a,0xbb02a2bd,0xba6999fd,0xbbb6a451,0xbbe1f880,0xbb70235f,0xbbc6b8b4,0xbbc1ca91,0xbbbbf03e,0xbb11cc84,0xba079e66,0xba8f81f8,0xbacd99f9, -0xbb01f404,0xbafac58c,0xbb0860f5,0xb9c13af7,0x3b0c57c3,0xbc26ae1f,0xbb97d4ae,0xb9c74077,0xbc243220,0xbbcbdcd4,0xbb7bfe9d,0xbbfee9aa,0xbc33a7af,0xbbf26f1c,0xbbe71916,0x3b77387c,0xbb9cd3fe,0xbba5f9d6,0xbbb4ceaf,0xbc2feb88,0xbbc2f09c,0xbc809af5,0xb8d54124,0x3a55c6bf,0xbb6632f1, -0xbae15355,0xbc2353cf,0xbc5100c2,0xbbb9b6d9,0xbc339492,0xbc1f9d17,0xbc1a0365,0xbb017d20,0x397fa375,0xb91c2bcb,0xbadbd545,0xbb788f54,0xbb6688f8,0xbb92d2f2,0x3a9a3815,0xbbcaf4d4,0xbc791e2a,0xbb47e6d5,0xbb090581,0xbb9ca584,0xbad57c26,0xbc01b5a3,0xbb810fab,0xba821c26,0xbc65493f, -0x39b45d84,0xbbc09114,0xbb07b64b,0xbab4b2b5,0xbb7cb020,0xbc3a9e8c,0xbb4f2e71,0xbc78028c,0xbbfcfc19,0x3b2f93ca,0xbb805731,0x3aeed4c3,0xbc5866e5,0xbc9cef8a,0xbc126567,0xbc93e1e0,0xbc8ad1d4,0xbc894e8f,0xbbb87e06,0xb9c569e9,0xbb35c676,0xbb8dad98,0xbbb92e9f,0xbbb5b8a5,0xbb89211c, -0x3a919e4a,0xbb2ef1bb,0xbb97fe29,0x3bfe6090,0x3bf8f05d,0x3c1e7574,0x3acb848e,0x3b077e0d,0xbbfa4ec5,0xbb440368,0xbb729fe5,0x3be8ee1c,0x3b8e799f,0x3ae72a60,0x3ae3a159,0x3b8b008b,0xbc3c3382,0xba51f337,0x3acb715f,0xbb8599d4,0x3c089aaa,0xbb91094c,0xb63ab1dd,0xbc932931,0xbcbf3ed7, -0xbc376c37,0xbcab2f64,0xbc9a758a,0xbc6ae48c,0xbb5b14d5,0x3ae28fc3,0x3aa5219f,0xbb8b9f85,0xbc013028,0xbbf72678,0xbbfd6c2b,0xba8da7f4,0xbacda579,0xbc784648,0x3be61e27,0x3be1b85c,0x3c20687e,0x3c35ce6c,0x3b2afad0,0x3b615ad7,0xbb43e81b,0xbb8f60de,0x3b3cb229,0x3c18da3f,0x3b973186, -0x3c193b4c,0x3b5f9e31,0xbb9ec677,0xbb4b29e9,0xbd655780,0xbd16ad7d,0xbb940f70,0xbbd42165,0xbc4e89b4,0xbc9d896b,0xbccf2d0b,0xbc96f6c9,0xbccaf0ad,0xbc655481,0x3c31ed9c,0x3c6b39b1,0x3c878ef0,0x3c514e1a,0xbb1d47f8,0xbbeda807,0x3c60de6c,0x3c0b8329,0x3bbdfde5,0xb983ebab,0xbb61fe1e, -0x3c28d1a5,0x3c3c1b15,0x3c381b5a,0x3b2d7a6e,0x3af7a769,0x3a7ae21e,0xb9408994,0xbb0fd267,0xbc02eecb,0xbbcd71e0,0xbb1613ee,0x3b5f179f,0xb78310e2,0x3b9ceb5e,0xbd14d295,0x3ac944c4,0x3b1ee99b,0x3ba0dc33,0xbbc7165e,0xbc1d3806,0xbc518573,0xbc51511e,0xbc7499da,0xbc278a0e,0xbb957742, -0x3bb0a522,0xbb524c5d,0xbba2a8c7,0xbc7f0454,0xbc18dfbe,0xbc27b7a5,0xbc80a0b7,0xbc888670,0xbba00f8a,0xbbcfa8cb,0x3a61eb81,0x3b0228f8,0xbb60d742,0xbb00e58c,0xb9fef1c6,0xb983433b,0xb9cce4e9,0xbad08c82,0xbbd56775,0xbb89c948,0xbb9f2431,0xbc12e27d,0xbc8884b3,0xbc83a08e,0xbc61ef7c, -0xbbb4d8ec,0xbcbc0564,0xbc91e712,0x3bb6c006,0xbb7b8fec,0xbc86007a,0xbcf3626d,0xbd055d20,0xbd1a3e75,0xbc4a2630,0xbb3c345a,0xbc041a62,0xbaa282d6,0xbbc74482,0xbc9bc970,0xbc8e3b9c,0xbc89b449,0xbc85e396,0xbc3eb01a,0xbb518567,0xbb998ec8,0x3b05e0ec,0x3ba38753,0xbc430648,0xbb2935d1, -0x392923c4,0x3a0a7d5d,0xb9d654fd,0x3b38ef98,0xbada8b45,0xba2ea080,0xbbb1c9a5,0xbb6c94fa,0xbc0ac1cb,0xbc53d1c5,0xbcca45c1,0xbc9db521,0xbc29a05c,0xbc6041d9,0xbc46bb4c,0xbccc1a45,0xbd7461f6,0xbd27f826,0xbd2cc288,0xbd29ec5f,0xbcafd00b,0xbc8894c0,0xbcc058d2,0xbc8e2d16,0xbc90d32d, -0xbcc188be,0xbc960eee,0xbc75e928,0xbc2ba90a,0xbc2a673e,0xbac48605,0xbb8b7cd6,0xb98fa3ea,0x3bb4c9ef,0xbc15b5af,0xbbb610d4,0x3a767da0,0xbb5ad088,0x39b4f31a,0xbae96412,0xbb5a8c1d,0x3a62376f,0xbae96556,0xbb84cbb8,0x3908ebd3,0x38c4a683,0xbb794adb,0xbb8d3282,0x3cf5d0d0,0xbb5838f4, -0xbd41dade,0xbd847376,0xbda16bad,0xbd33a00a,0xbd050fcc,0xbccdcf89,0xbcce4455,0xbcb3b6ba,0xbcb9e128,0xbcb22934,0xbcab48fc,0xbcac2c87,0xbc8dc4ec,0xbc88f1aa,0xbc3a0282,0xbc5971b5,0xbbdc81d8,0xbbcbc26b,0x3ba6692c,0x3baf6330,0xbbf60223,0xbb858c6b,0xbb8dc873,0xbba2513b,0xba4b2f22, -0x37a24528,0xbb79c6d0,0xba99f2f6,0x3a426038,0xbab3af7f,0x3af1e67b,0x3b9bfa6b,0x3cb93d30,0x3cdc9aba,0x3c2bd671,0x3ced32a6,0x3cc0f2aa,0x3c886bad,0xba71cd29,0xbcc0328e,0xbd2d7816,0xbd5dc871,0xbd170a61,0xbd08213e,0xbcedbdc1,0xbca5e7d5,0xbc70d6f9,0xbc1f8177,0xbc757e14,0xbc61115b, -0xbc24b595,0xbc52eaac,0xbc0634a4,0xbc149036,0xbc685e8f,0xbc165684,0xbaeb0b4b,0x3aee9928,0x3b85151f,0x3bbd429c,0xb99c6c62,0xba4fa1f4,0xbb08a60e,0x3bab323e,0x3be8c2d0,0x3c3c3c1d,0x3ca4d9ad,0x3cb04002,0x3c88ac36,0x3ceb248d,0x3c471674,0x3abfe589,0x3c1cc647,0x3c6236a1,0x3cbccec3, -0x3d012149,0x3cf8b45b,0x3c8aac79,0x3bb27c0b,0xbbdaa11e,0xbc6c87cd,0xbce593cc,0xbd078be1,0xbcfdf935,0xbcdd3dcb,0xbcbc6c98,0xbc624b68,0xbc2f33c3,0xbbd21b2e,0xbb840fab,0x3b17cdaa,0x3b8d5255,0xbbabbbe0,0xbac4ddab,0xb95340ed,0x3aa01379,0x3c18965b,0x3c24821e,0x3c1b87ef,0x3c21c15b, -0x3c2fbbdf,0x3c33beba,0x3c15a684,0x3c311963,0x3beb0f0e,0x3c158cc4,0x3ae8f8d7,0x3c0c94d6,0x3c913cbc,0x3ca5e6e7,0x3cda2ad5,0x3cc9171f,0x3cccacc6,0x3caf5e0c,0x3c91f106,0x3c48369f,0x3c22c9c6,0x3b3d2966,0x3a577850,0xbb3dd377,0xbb1cd92e,0x3adb320f,0x3b56e785,0x3b9a6c91,0x3ba91314, -0x3baa6685,0x3b46bd6c,0x3ba74497,0x3b9776e0,0x3b70d389,0x3ba907a0,0x3bda559d,0x3bb3cf11,0x3bfdcff7,0x3c16902f,0x3c047696,0x3bf459d5,0x3bc0ce4a,0x3c04ec30,0x3bf83d5c,0x3b949b56,0x3ba5b630,0x3b8b15bb,0x3c19ea8b,0x3c41536b,0x3c09acbe,0x3c020bca,0x3c1ac952,0x3c4fa439,0x3c878d9a, -0x3c8b7fe1,0x3c9a7651,0x3cc187d0,0x3caad872,0x3cb3c433,0x3c9a615b,0x3c973c31,0x3c9132f6,0x3c6bf594,0x3c4cb910,0x3c7d52c7,0x3c1d40e9,0x3bef57ce,0x3c003c28,0x3bd2e155,0x3be5f0f1,0x3bdac9be,0x3b818e42,0x3bd42075,0x3bc338c9,0xba00210d,0x3bbfa81f,0x3afa67c8,0x3b9b5036,0x3ae8c433, -0x3b80630a,0x3b9816ee,0x3c059249,0x3b9059bc,0x3c199680,0x3c12c0d6,0x3c3a0794,0x3c59adba,0x3c583934,0x3c4a7f0e,0x3c35d73f,0x3c3b3214,0x3c37e6fa,0x3c219a3a,0x3c3188c6,0x3c346077,0x3c57a18a,0x3c3085b8,0x3c18f37f,0x3c3531ce,0x3c14396e,0x3bef7bcf,0x3bd9e09d,0x3b5ec1a1,0x3bb22f08, -0x3b795e51,0x3b80050f,0x3b8453f4,0x3b85f1cd,0x3b88a4a1,0x3b316f38,0x3ba0873b,0x3b9cf828,0x3c2e67da,0x3ba36a16,0x3bc58e83,0x3bd91316,0x3ba2535c,0x3b9dc161,0x39b374ea,0x3c1352ea,0x3c0b08b0,0x3c01d6d7,0x3bfae1ea,0x3c01efd2,0x3c10f476,0x3c20f63c,0x3c2d8b6b,0x3c3a938b,0x3c4a87e6, -0x3c54a102,0x3c559b53,0x3c5861b4,0x3c4b1021,0x3c4383f0,0x3c38c222,0x3c2aa081,0x3c255942,0x3c2d2ac9,0x3af2bacd,0xbac23ad5,0x3b712d0e,0x3aa58d31,0xbb051fab,0x3b484d3e,0x3b3d91dd,0x3b409188,0x3b41c847,0x3aa62dba,0x39bd06b5,0x3a9cb615,0xba8ba50a,0x3afc1fd7,0x3b55c598,0xba9debcf, -0x3c437e13,0x3c6396e8,0x3c8c413d,0x3bcf8c92,0x3bfce447,0x3c0adf04,0x3c0f1089,0x3c26516e,0x3c2d9da3,0x3c27e883,0x3c1b3af4,0x3c12ebd2,0x3bfc2f95,0x3c0d5716,0x3c12a73e,0x3c1ed454,0x3c1017f0,0x3c1376a7,0x3c160b4e,0x3c19d634,0x3c12557b,0x3c10f8fd,0x3c7927ac,0x3c3f8580,0xbbe28251, -0x3c84cdfd,0x3c4f00e2,0xbbd4d1ae,0xbbbb33ea,0xbbb84bcb,0xbb871e8b,0xbb4fb28f,0xbb077777,0xb98dad41,0x3c4a64e4,0x3c85d853,0xbb9575bc,0x3c2ff975,0x3ba65c68,0x3c3b0793,0x3c14c0a0,0x3c4116f9,0x3c4fdf36,0x3c931791,0x3c9d90f2,0x3c8b9ab7,0x3c6f2a84,0x3c575766,0x3c224573,0x3c4c3396, -0x3c6bfd72,0x3c8a7a6d,0x3c5c180f,0x3c55edb3,0x3c5142f8,0x3c4daa25,0x3c3bc10e,0x3c301165,0x3c220584,0x3c354bfc,0x3bf39692,0x3c6844b1,0x3c645d13,0x3b59ee7f,0x3c119646,0x3c03fa2e,0x3c1249db,0x3c25f5ce,0x3bff8b06,0x3bc97023,0x3c1986f7,0x3c30dc2b,0x3be1f2be,0x3c011ca4,0x3c8c8a7e, -0x3c0eda31,0x3bbf1143,0x3c3dcd68,0x3c407191,0x3cb67aff,0x3cd4c92e,0x3cb05866,0x3c9398a4,0x3c5fe5ec,0x3c07264d,0x3c576c73,0x3c801237,0x3c9ce237,0x3c7195ab,0x3c68388d,0x3c7b0e0b,0x3c7621d6,0x3c574b5f,0x3c4da030,0x3c634c08,0x3c411784,0x3c9426ac,0x3c59fe6a,0x3bfefcd1,0x3c1c67f9, -0x3b4e8591,0x3c0e0921,0x3c439a43,0x3c062750,0x3c33bb49,0x3be90361,0x3c30d391,0x3c2cc569,0x3c00abe1,0x3c7635cb,0x3c519f17,0x3b958792,0x3bf6cffd,0x3c54233b,0x3c7a7b7e,0x3cf090af,0x3d13916c,0x3cec8c33,0x3cc1a820,0x3c8c5744,0x3be0caf4,0x3c8c7d49,0x3cab706e,0x3cfc9d6d,0x3ca63e37, -0x3c8f420e,0x3c8cfcd4,0x3c81a715,0x3c54a1f9,0x3c386560,0x3c4b2b3e,0x3c3e983a,0x3c6d64c2,0x3c366a9e,0x3c23661e,0x3b4338cf,0x3b706886,0xbaf18087,0x39b03707,0x3b86b302,0x3c027d47,0x3b83856a,0x3c38e40a,0x3c0e14d1,0x3b037724,0x3bea1840,0x3cb4adba,0x3c105c2b,0x3ac575ee,0x3c4f1be1, -0x3bfacd51,0x3d0e18d8,0x3d25133d,0x3d081a59,0x3ce4f6b3,0x3c87cb04,0x3bb49a9d,0x3c5b238c,0x3c9fd3e0,0x3cdd5484,0x3ca20bc0,0x3c92e858,0x3ca48d1f,0x3ca3ba09,0x3c8253ea,0x3c1ef3b1,0x3c5b471f,0x3c27411b,0x3c93a044,0x3c4e1048,0x3c19551c,0x3b0d281c,0xbb132978,0xbb6e368f,0xbb8ac942, -0x3b8c531e,0x3be2bc67,0x3b2fdff7,0x3c217163,0x3bdb9b28,0x3af6c54c,0x3c857ab1,0xbcccf128,0x3c89c98d,0x3c61b135,0x3c9c4b53,0x3c70ea60,0x3c820725,0x3c829837,0x3ca1be9e,0xbc4b914f,0xbc55ff0b,0x3c8ffbc4,0x3c2135ef,0x3bf31388,0x3ad58bf3,0x3b36c288,0x3b319615,0xbaec3aaa,0x3be2157a, -0x3c4eec26,0x3c973f9c,0x3c810819,0x3c2a9e85,0x3ca7e255,0x3c24395f,0x3bfe7101,0x39bcdb0d,0x3b4d7586,0xba10bf1c,0xbb82ac13,0xbb897f57,0xbad942a4,0x3b7060b9,0x3bcc60d4,0x3c4c3573,0x3c8c31d5,0xbc1726f0,0x3cbcfaca,0x3b79125a,0xbc1494cb,0xbad79c2b,0xbc66c177,0x3c5e004b,0x3c53590b, -0xb99df3e4,0x3c2a2098,0x3c3d204e,0x3bbf38aa,0x3bf330e3,0x3c0bd58e,0x3ab688c8,0x3c062ca4,0x3c3cf21a,0x3cbee835,0x3c99037a,0x3c7c41cb,0x3c340891,0x3bebb21a,0x3c247fff,0x3a4766b8,0x3b306470,0x3ad9f10f,0xb96b1a31,0xb80cc0df,0x392dfa1e,0xbb930b53,0xbb2ed8da,0xbbcb0a6c,0xbbe4b2ee, -0xbc31234d,0xbc1683de,0xbb6c5fae,0x3c5a91ac,0xbb53ef9c,0xba9cedad,0x3c74252f,0x3c92deb8,0x3cdd29e6,0x3d1e9bbd,0x3d199ff4,0x3cab0311,0x3b261408,0xbc261fae,0xbc0e8714,0x3bcded7b,0x3c7df57b,0x3c356de4,0x3bfc1210,0x3bd7712f,0x3a500e4f,0x3adab257,0x38d4181d,0x3bc85e8f,0x3c4e67fb, -0x3bf16a1e,0xbb24a096,0x3b1cf1e4,0x3bbe9fdd,0xba8deaeb,0x3b01d3fe,0xbaed852a,0xb9bf8f74,0xb9a4faaf,0xbb693da8,0xbb2aa14a,0xbb98fe83,0xbbf4153c,0xbc53d89c,0xbc1058eb,0xbbcb2791,0xbbd0bf0b,0x3b16823c,0x3c7ab8e1,0x3d1f342d,0x3d2a216f,0x3d209389,0x3c391346,0x3c2213a2,0x3b935712, -0x3c252618,0x3c8e865b,0x3cb7676b,0x3c78933f,0x3c41260e,0x3b88a231,0xbb5b3e59,0xbb2d56a3,0xbb003f29,0x3b2a2f50,0x3c3f741a,0x3bcc22d8,0xbb88e59f,0x3a28a253,0x3b122a6c,0xba97522f,0x39946394,0xba82359b,0x3a8f82f9,0xbaf72f8d,0xbaa8a992,0xbb60a60f,0x3ad34152,0xbb332c8f,0xba0b4121, -0xbbc62a28,0x3c6050d3,0xbb1fa5c8,0xbc456898,0xbb831ea7,0x3c946cad,0x3cfce710,0x3cbb231b,0xbc3b7286,0x3b93aa1c,0x3ba7a7b2,0x3bafff6c,0x3b9739be,0x3b31c873,0xba975bf5,0x3bc52a88,0x3bf6b03b,0x3c0636ee,0x3b74de04,0x3aea1da5,0x3b8ffc14,0x3bb57e60,0x3bb33f53,0xbb28c9c2,0xba48ee2f, -0xbb293b73,0xbb5176fe,0x38e859a0,0x3954fc45,0xbb76cb7c,0xba3e1af8,0x39302f84,0xbb86e65a,0xbaaa7f27,0x3bdee780,0x3c7d7de0,0x3cb78030,0x3d535d86,0x3da1a84c,0x3dbd1e47,0x3dab0c27,0x3d584902,0x3cd3ce46,0x3be3a662,0xbb29223f,0x3bbd5095,0x3c28605c,0x3cc2e310,0x3c7bb869,0x3c701585, -0x3cb8075f,0x3bbdff1d,0xbb08edb0,0xbb9837ea,0xbbab20c3,0xbb61cadd,0xb9d96d68,0x3b343a97,0x3af10635,0xbb8867d1,0x3b0ce841,0x3b4aa733,0x3be2a4ca,0x3b332b0c,0x3a5402d0,0x3b42728d,0x3c117107,0x3c5156b3,0x3cad4915,0x3cf24695,0x3cdaad51,0x3d081831,0x3d171a49,0x3c88361a,0x3d1cc65b, -0x3d2f320b,0x3d375714,0x3d4539e3,0x3d4646f7,0x3d2034af,0x3cdaa55b,0x3b9f00cd,0xbc55ecf7,0xbc9ccae8,0xbcd3ce29,0xbcac63b3,0xbc54a622,0xbc019a93,0xbbc758ff,0xbbd446b4,0xbbdb8ce7,0xbb9b19e9,0xbb7557bc,0x3b25c5bb,0x3ba069f1,0x3bba50f5,0x3a885ba5,0x3ac02f04,0x3b6dd6ca,0x3beabfd8, -0x3c4a4c47,0x3c569e70,0x3c6dbd8c,0x3c7c72dc,0x3c6bddc0,0x3c9263b6,0x3cab2b75,0x3cb6a75c,0x3cfdde98,0x3cb35f20,0x3cd27d8d,0x3d115474,0x3d194a1d,0x3d245e95,0x3d23a48f,0x3d28fbc4,0x3d23be58,0x3ceaabc2,0x3c9e6fed,0x3c798067,0x3c05e611,0x3ba4efd5,0x3acb7d8e,0x3b2841b6,0x3b641dce, -0x39d66e5f,0x3b6cfc15,0x3b681949,0x3be45684,0x3c27f596,0x3bf49176,0x3c07759d,0x3bdbf324,0x3ba66144,0x3bde4466,0x3c112a1e,0x3c0e8900,0x3c0fb56b,0x3c2e80dd,0x3c2b9a7f,0x3c3b1ef4,0x3c68b1da,0x3c77a16e,0x3c84d46c,0x3c8357e1,0x3c888637,0x3cba84bb,0x3caae442,0x3cc77e69,0x3cdc9db4, -0x3cf36ca9,0x3d07918c,0x3d202733,0x3d1f321e,0x3d1ba680,0x3d215bb8,0x3ce7de7b,0x3cbe3dde,0x3c7be9df,0x3c575623,0x3c3d5617,0x3c0e4023,0x3c21937c,0x3c1e4352,0x3c3f080b,0x3c66dcb0,0x3c1bd90b,0x3c395108,0x3c33c768,0x3c4c4b67,0x3c590e94,0x3c0e5b03,0x3c59f4ea,0x3c3d9854,0x3c3325d3, -0x3c22b97f,0x3c1a90c1,0x3c570b7b,0x3c40dff3,0x3c8f5e3b,0x3c9dfac7,0x3bf9f77b,0x3c9c18bd,0x3cb6187f,0x3cbf6e44,0x3cc313db,0x3cd5aa4c,0x3cd57442,0x3cdb00c8,0x3ca7758e,0x3c8a4297,0x3c59423c,0x3c629ad9,0x3c6e709d,0x3c826a37,0x3c74b15d,0x3c586592,0x3c5058f8,0x3c2551d8,0x3bc5aa7b, -0x3bed04b8,0x3c1633ed,0x3c4fab5c,0x3c65411b,0x3c739c50,0x3c652810,0x3c68c05f,0x3c8ce274,0x3c9aca9a,0x3c8275ad,0x3c96b75c,0x3c96abf4,0x3c7b64c5,0x3ca54b72,0x3c71beb0,0x3c100556,0x3cb157af,0x3ca1748e,0x3c8f6d7d,0x3c836ec3,0x3c877ae0,0x3c8ad4dd,0x3c90c8ef,0x3c96fcec,0x3ca8005f, -0x3cac72d6,0x3cb07da6,0x3cae88bf,0x3ca62405,0x3c95dc5c,0x3c88da93,0x3c806d5f,0x3c7bfe94,0x3c7b1de8,0x3c7822ea,0x3c74f8b8,0x3c64eac9,0x3c8f34fe,0x3c72c4c5,0x3b92fa8f,0x3c99a8ce,0x3c84f0b2,0x3b81fd8a,0x3b4abf5e,0x3b59bae6,0x3b83d2a4,0x3b68472e,0x3b890125,0x3bb6b1ba,0x3c7bdfb5, -0x3c955dbf,0x3ba0f9dd,0x3c681c3f,0x3cd43765,0xbc599c10,0xbc78d15c,0xbc56761a,0xbc1be074,0xbc2094bf,0xbc18c75a,0xbc313f61,0xbc39987d,0xbc381e59,0xbc3d0ef6,0xbc404df8,0xbc3dbc00,0xbc2f0324,0xbc281033,0xbc1b865c,0xbc2797a3,0xbc3090b2,0xbc2e3a7c,0xbc2c43e5,0xbc17c33b,0xbc2caa7e, -0xbc073c01,0xba09189b,0x3ca803c0,0xbc3c9dbc,0xbb264521,0x3c955d61,0x3c912377,0x3c8bc140,0x3c6ed7ce,0x3c889ddb,0x3c7f481e,0x3c49b570,0xba89668d,0xbc55054f,0x3c7ab369,0x3adf2870,0x3c4e9295,0xbc64e17a,0xbc39ecd3,0xbc378e55,0xbc147e40,0xbc7881bf,0xbc92f7fa,0xbc947064,0xbc9a68ed, -0xbca3b1a7,0xbc9eda66,0xbc8bf5ec,0xbc7e648c,0xbc691136,0xbc814f91,0xbc859eae,0xbc74110c,0xbc5bb8f7,0xbc3fc01e,0xbc4b332d,0x3b25717d,0xbaa56064,0x3bc0fe8d,0xbb272e85,0xbc209d14,0x3b311ee1,0xbbba1d20,0xbad23b01,0xbb2e29af,0xba8a3427,0xbbefe273,0xb9091baa,0xb98c2177,0xbb1a1604, -0xbaefb9ee,0xbb242640,0xbbdc5995,0xbcac679e,0xbc33c7d6,0xbc4cc757,0xbc03dbad,0xbc967c32,0xbcb09090,0xbcb3e54e,0xbcd0eb85,0xbcd49c06,0xbcd11c62,0xbca919b5,0xbc94592d,0xbc5cc900,0xbc959947,0xbc9ff753,0xbca0833f,0xbc801d57,0xbc6646bb,0xbbff8cd2,0x3b441377,0x3ad43d8b,0xbabb2571, -0x39c36cae,0x3972be19,0xbbca902d,0xbb03b0be,0xbc49a48b,0xbbbfa2cd,0xbb95cbde,0xba995005,0xbb8fd203,0xbb8df041,0xbb860366,0xbabec563,0xbc508213,0xb99f9c1d,0xbc25930d,0xbc6c7139,0xbc0dadd2,0xbb61f281,0xbc9c202a,0xbce584f3,0xbcecb259,0xbd0dc011,0xbd12288e,0xbd126ba9,0xbce78257, -0xbcba21c0,0xbc94c9e7,0xbcd1bc78,0xbccebeef,0xbcb7413a,0xbc91a0d1,0xbc545c85,0xbc0c4b53,0xb9d9ae65,0x39f08c17,0x3c244899,0x3b19afaa,0x3b2be3ba,0xbb1ad96c,0xbb82e795,0xbb08042a,0xb93ecdb2,0x3b174211,0x3b5631bb,0xbb0986eb,0x3b8de88e,0x3b6bd879,0xbbec2c72,0xbb856f22,0xbc3b4f69, -0xbc9dfcd9,0xbc664271,0xbc33da4c,0xbb75949c,0xbcb0dbfc,0xbce9fcfd,0xbd00d8ed,0xbd1b8c07,0xbd2782d6,0xbd1ad513,0xbcf64cf2,0xbcbe4c9b,0xbc686213,0xbcceb154,0xbceac358,0xbce6204f,0xbcb2954b,0xbc72bd83,0xbbe25a62,0x3bfc44a3,0x3b8ff359,0x3c2967fa,0x3bdf71d4,0x3bb9fe77,0x3b14654c, -0xbab4b784,0xbb8d6492,0xbba30b4a,0x3b842c09,0x3bb4adb6,0x3b2a4c45,0x3b92cafa,0xbaa328c0,0xbb661f0c,0xba23cc0a,0xbd09da13,0xbcaa11f6,0xbce372ca,0xbcd50d32,0xbccbabab,0xbcee529d,0xbd1c0335,0xbd210fd2,0xbd48f55b,0xbd111e19,0xbb221a40,0xbbb80827,0xbaa41fbe,0x3ad4f5b9,0xbb53a568, -0xbba7eba6,0xbaeebb67,0xbbb19c2a,0xbc4889ef,0xbc7a8479,0xba119eed,0x3a8fe8cc,0x3c66d7df,0x3b8ced09,0x3b299416,0xbaa327d8,0x3abcbf15,0x3aa5b5f5,0xbb665f7f,0xbbcbb092,0xbb8d4275,0xbb026d81,0x3b22904d,0x3b4b5a5f,0x3c8f5f04,0xbd175151,0x3aa253f5,0xbc50de86,0xbc4010f4,0xbc556296, -0xbcbf1e79,0xbc8ddab3,0xbc5ed5c0,0xbc6b71d0,0xbc6d9732,0xbc81d1b1,0xbc61d9bb,0xbbf522ab,0xbb899aef,0xbbe01ddc,0xbc82c923,0xbccb4e59,0xbd1b9448,0xbcd6562e,0xbc8e9911,0xbb118329,0x3c32d5f5,0x3b254a78,0xbb661e1a,0xbb2439cb,0xba6346ef,0x39f3efed,0xb9d5c37d,0xbb2575d1,0xbba49745, -0xbb83c8e3,0xbbb67e74,0xbbecb876,0xbc2509e8,0xbc664be5,0xbc7c5f9b,0xbaad672a,0xbc03794f,0xbbd2ade1,0x3c0f1823,0xbbd1b36e,0xbceabfb4,0xbd189b68,0xbd36d5bb,0xbd72069d,0xbd27969f,0xbcebb9e8,0xbcbb1923,0xbcb50e69,0xbce84047,0xbd0baab9,0xbd016698,0xbccca9ae,0xbc8a42f0,0xbc6756c0, -0xbc32b8b8,0xbc1924eb,0xba9b1b60,0x3aedac42,0xbbf2ea5a,0xbba10f93,0xba404ff0,0x3aa5651e,0xbac5020b,0x38df3423,0xba1d1263,0xbb0fa40d,0xbbc7050a,0xbba9ba88,0xbc178420,0xbc23a6a3,0xbc782a82,0xbbb19a44,0xbbb66d3d,0xbc492501,0xbcf6a939,0xbd28a46c,0xbd97b5b9,0xbd7c98cf,0xbd811566, -0xbd6299cb,0xbd291e94,0xbd04cd28,0xbcd37092,0xbd038214,0xbd05fad1,0xbd0968a1,0xbcf04ed3,0xbcc027b4,0xbc637ae3,0xbc56a5c4,0xbc3283a0,0xbb6efa49,0xbb3236f3,0x373f3ba9,0xbbd7d4b6,0xbb80bb2f,0xbad1d756,0xbac10676,0xbaa7bd80,0xbb17da15,0xbb16a9cc,0xbb595a13,0xbbb86de2,0xbc204ef0, -0xbb5ddb67,0xbc0b93e1,0xbba46c31,0xbc5e7589,0x3b125bc5,0xbd00c5d4,0xbdb0213a,0xbdc678cc,0xbdd146bb,0xbd9680a3,0xbd573961,0xbcb768b1,0xbcd39a40,0xbc96a5bb,0xbc9f3836,0xbc79a4b6,0xbc771ad8,0xbc0ac2f5,0xbc8a13f2,0xbca78e5a,0xbcb184c2,0xbc99280d,0xbc34c92b,0xb895a8df,0x3865a17b, -0xbb2931b4,0xbbb33fd8,0xbbba35b8,0xbb8a32c2,0xbb974aa0,0xb927a1ed,0xba39a192,0xbbb3da40,0xbb651f4b,0xbb6bc202,0xbc1402a1,0xbbefd790,0xbc0407f8,0x3c15ef2c,0x3bb99e04,0x3d377864,0x3d426732,0xbc07b3d6,0xbc834f55,0xbd17270a,0xbd814efd,0xbd980104,0xbd6cc53d,0xbd2876ca,0xbd1e9ac6, -0xbd2c8205,0xbd15f1e7,0xbcf43493,0xbcb58b07,0xbc1211a5,0xbb522292,0xbb1eecb8,0xbb3d4ade,0xbbd811a4,0xbc294ecf,0xbb94a689,0xbb63ae5e,0xbb9eda40,0x3a476e36,0x3a7d53af,0x3a9bca3f,0xbafa084c,0xba486db5,0x39e77c2a,0x3b96683d,0x3bb3622f,0x3c709bbd,0x3cce44d3,0x3d118738,0x3cef60c3, -0x3d02a605,0x3d0da63f,0x3a29ed8e,0x3a5b175d,0x3b76050d,0x3b243403,0x3b9ffca5,0xbb7a2c1a,0xbcc3fc5f,0xbcc256da,0xbcc58310,0xbcad04b2,0xbd00d17a,0xbd0956dc,0xbcebf19b,0xbcee0f3e,0xbcd9f0b2,0xbcb296ec,0xbc91e67d,0xbc3cd70a,0x381e59a3,0x3b46116d,0xb9b428a6,0xbb9af557,0xbb8b4e7a, -0xbb58c0a4,0x39d5a95a,0x3bb6c031,0x3c1af4f9,0x3c230ee0,0x3c3276c7,0x3c26f42a,0x3c2aafaf,0x3c6ea15a,0x3c60dd4b,0x3c5f0ff0,0x3c584344,0x3c80246d,0x3c89ae7e,0x3c7a4a60,0x3ca10366,0x3cd58ae0,0x3ca5abdc,0x3c83a661,0x3b8cefc0,0x3b6a29dc,0xbaa4b0f4,0xbb1717a5,0xbc011adc,0xbc10df16, -0xbc19405c,0xbc320935,0xbbf80a68,0xbc1fe877,0xbc03560f,0xbbe8fc2f,0xbb99fe3f,0x3a9f4caf,0x3b893d3f,0x3b1896a5,0x3b8c6fcd,0x3ba09572,0x3bf9efbc,0x3bf50edc,0x3c1ba194,0x3c1a0d4f,0x3c0fad6f,0x3c126ba3,0x3c045f95,0x3c31c1c5,0x3c407d55,0x3c5a63ba,0x3c69e170,0x3c712b0e,0x3c2a2a8d, -0x3c5dc1f7,0x3c6bb805,0x3c746ff7,0x3c6e732f,0x3c8a8524,0x3ca9075e,0x3c96d3d9,0x3c771ccd,0x3c7cbd4f,0x3c62fb1d,0x3c73842c,0x3c4d340c,0x3c204b3d,0x3be1ce4d,0x3b4629b1,0x3b2620b8,0xb97fb9aa,0xba3b2459,0x3ab6ca9c,0x3b941b9c,0x3b9c7d29,0x3beb5d2b,0x3c03cc2f,0x3bfc7705,0x3c167629, -0x3b5afcab,0x3bcfa09e,0x3bad7133,0x3bece38c,0x3bf1e50a,0x3ba2e010,0x3c2801eb,0x3bf1e262,0x3c242d94,0x3cafd4b4,0x3c7c3b1e,0x3c673827,0x3c4de399,0x3c372364,0x3c27c9a2,0x3bd8d9e7,0x3b566efa,0x3ba8c316,0x3c0c6487,0x3c2039e9,0x3c3655a1,0x3c46bd51,0x3c76655f,0x3c5ce99a,0x3c4a9cad, -0x3c5868e7,0x3c39fed3,0x3c385c02,0x3c02a0cd,0x3c08eed0,0x3c00f847,0x3bf8f1e7,0x3be1dc97,0x3c03120b,0x3bf2a2c0,0x3c28a1e8,0x3c1a3f81,0x3c68bc62,0x3c5b8851,0x3c5abdfa,0x3c935e36,0x3c76a3a8,0x3c8bbfd4,0x3cadbd3e,0x3c4c4514,0x3bd99020,0x3bf628bf,0x3c0d4f4d,0x3c06a1a2,0x3c045a95, -0x3c0a9111,0x3c1d98b5,0x3c2fae1c,0x3c32f629,0x3c286d05,0x3c276a00,0x3c2d2806,0x3c2ade53,0x3c297348,0x3c172ee9,0x3c0efb21,0x3c04862d,0x3be9e709,0x3bdcf4be,0x3bc8ed70,0x3ba659a3,0x3c1dac1d,0x3c99baa1,0x3bb25626,0x3c22b5a5,0x3ca62de2,0x3caec273,0x3ca05081,0x3c997abf,0x3c9daa97, -0x3c955053,0x3c8b3617,0x3c1b7f36,0x3bbe50b4,0x3c968147,0x3c48ae24,0x3c542ab6,0x3c899ca8,0x3c5a2a3a,0x3c8ed87b,0x3c3fd82a,0x3c3f9c30,0x3c34f6ed,0x3c55d480,0x3c6128b1,0x3c5f23d8,0x3c565832,0x3c54c1a6,0x3c4dfbc4,0x3c4f60df,0x3c532bcb,0x3c62db51,0x3c5b2a67,0x3c62798b,0x3c634349, -0x3c671581,0x3c506f29,0x3c781864,0x3bcafbad,0xbb4a7573,0xbca38710,0x3c2ac650,0xbb082178,0xbca98ae3,0xbca7078e,0xbc9da149,0xbc858539,0xbca39213,0xbc99f92f,0xbc821b6a,0xbb96e718,0x3c3d07a0,0xbc8ac07a,0xbbf41111,0xbca94d6c,0x3c3a1006,0x3c4c167a,0x3c50a360,0x3c37f071,0x3c9e75ff, -0x3cb2c980,0x3cad8dc6,0x3ca1a861,0x3c9abf01,0x3c86e8f5,0x3c8462bc,0x3c9036c9,0x3cac226f,0x3c9b34d2,0x3c9f9ff0,0x3c9d3a95,0x3c9292dd,0x3c905c5a,0x3ca3caf9,0xbaee84c5,0x3bc39806,0x3a26dfc9,0x3b2db4f8,0x3c33a2ed,0xbb30fd81,0x3b798846,0xbb125d37,0x3b65cf63,0x3ab6aa74,0x3c517047, -0xb96c2398,0x3a04d710,0x3b58f439,0xba5c2ba9,0x3af4abf6,0xb9acfdd2,0x3c8e2f05,0x3c180bf5,0x3c241d59,0x3bd56ca5,0x3c9fff58,0x3cc584d6,0x3cb6f3a2,0x3ca98f11,0x3c953fbe,0x3c8a7eee,0x3c81b451,0x3c92841b,0x3cbab6dd,0x3cb3750e,0x3cb4d78d,0x3cc7ae4d,0x3ca856f3,0x3cbf898a,0x3c4ad27b, -0xbb15d01c,0x3bd71b32,0x3c40ff19,0x3b95661e,0x3b5e0a61,0x3b9c11b9,0x3a7538d1,0x3c7fe294,0x3b6032b8,0x3c197e24,0x3b11357b,0x3bc528ea,0x3bd4e748,0x3b9f40f8,0x396fd819,0x3c79670d,0xbc08a8a6,0xbb91903a,0x3c1ad75f,0x3bcbb86c,0x3b8fa29d,0x3cc2e8d2,0x3d0a09e9,0x3cff88c5,0x3cf0d1e8, -0x3ccb557b,0x3c90b6e5,0x3c97d3be,0x3ca816d4,0x3d02a0da,0x3ce2aa34,0x3cdcd42e,0x3cde8ede,0x3cc79b34,0x3cc5a089,0x3c873610,0x3c22a68d,0x3c91c379,0x3c312839,0x3c59c9d8,0x3b9c50ab,0x3bc297e2,0xba717597,0xba62818e,0x3b13950c,0x3bec3065,0x3b855aa8,0x3b89056a,0x3aa4703f,0x3b7c595e, -0x3b81f098,0x3ba7ec57,0x3c561713,0x3b833bf5,0x3bd7e665,0x3b1340a3,0xbb74a1da,0x3caf0cf1,0x3ce76759,0x3ce48a79,0x3cde6709,0x3ca4e8f2,0x3c999e5d,0x3c6c5a07,0x3ca12feb,0x3ce88e9d,0x3ce9a6f3,0x3cf1d2dc,0x3d05c6ad,0x3ce53951,0x3cdafdff,0x3c8472be,0xbbae745f,0x3c42ff54,0x3c64eae5, -0x3c482087,0x3c2850da,0x3ae27f7e,0x3aa25cc1,0xbaf94371,0xb918ca18,0x3b72d17b,0x3bdf68fd,0x3ab76ea6,0x3be51c42,0x3b9626c0,0x3b92e8b1,0x3b30a9b1,0xbd01fbea,0x3c0ee5be,0x3cea6704,0x3cdf5b42,0x3cee5fdf,0x3d1ba357,0x3d28f3ab,0x3d10baf3,0x3c8dcfc2,0x3c801fda,0x3d2cf42c,0x3ce6eaba, -0x3cafd341,0x3c41a15d,0x3c35c46c,0x3c185243,0x3c83270e,0x3ca467f6,0x3cd27747,0x3c9fe2a3,0x3c263fb6,0x3c9381f8,0x3c6b9f68,0x3c38bce0,0x3b48b2f7,0xb860746b,0x3afc641f,0x3afd71b1,0xbb233736,0xba625bfc,0x3a1bf7a0,0x399daa25,0x3c092db5,0x3c07af26,0x3b120fad,0xbc36cd44,0x3c69489d, -0x3c82de56,0x3c31dfa0,0x3af4da83,0xbca866f4,0xbb0c54a5,0xbba78705,0xbbf11ba7,0xbb67b5b1,0xbafe9132,0x3a1b5774,0xbba56e3d,0xbb209bfa,0x3c020564,0x3c3830e3,0x3c8dd7ad,0x3d04cfdf,0x3cb234c3,0x3cc0d6e6,0x3c04db37,0xbb797bf4,0x3bb4d8c1,0x3a96763d,0x3ba5678b,0x3bc002bb,0x3b389e54, -0x3ab79f38,0xb9f5003a,0xbb4510c1,0xbaf8356a,0xbb52e2b6,0xbb21b829,0xbc2e6b03,0xbbc84e88,0xb904d33b,0x3c09149f,0x39fd15b8,0x3c5cb26f,0x3c9f6d28,0x3c8be797,0x3cc4dbae,0x3d04c5f4,0x3d12d728,0x3cd77d85,0x3c6f21c4,0x3be483ad,0x3bf4abbc,0x3c755e2c,0x3c9f67ef,0x3cd5d8f0,0x3ca519bd, -0x3c696224,0x3c20fee8,0x3bc64ef1,0x3c16daa8,0x3c4939ce,0x3bd5ea40,0x3b90ac75,0xbb8f3c7e,0x3b647581,0x3b86a71e,0x3ad85066,0x3a9079b0,0x39e065cf,0x3ae1e64b,0x3986843f,0xbb6a4037,0xbb8a6b6c,0xbb4d431c,0xbbe5db5a,0xbc1d9586,0xbbe774e3,0xbc6b5da2,0xbc4f0db8,0xbc06514e,0x3b863d9d, -0x3d319183,0x3d2c9037,0x3d40e324,0x3d0cce3e,0x3cb53a39,0x3c426b3c,0x3c4cbf23,0x3cb5ec9a,0x3cd43295,0x3cfe339c,0x3cabc966,0x3c547fa2,0x3be5a91f,0x3b28c42d,0x3c021609,0x3bdd7183,0x3b8ef931,0x3b542a75,0x39e16ecc,0xbb097016,0x3b3184c2,0xba1a752e,0x3aead183,0xb880d2de,0xba857626, -0xbab08288,0xbba7c8a8,0xbc0c5bc5,0xbbeb8b1f,0xbc010588,0xbc308e5f,0xbc1abf1a,0xbc8adde2,0xbce459dd,0xbcf902e0,0xbc92e041,0x3d06a771,0x3c9c2783,0x3c39e53f,0x3b3674bb,0xbbb14438,0xbbec2ecf,0x3ab3d5b0,0xbab81f59,0xba1aec66,0xb9fca5ee,0x3b9463de,0x3bfe4614,0x3c551517,0x3c4c810a, -0x3c364199,0x3c30571a,0x3af80442,0x3a468a37,0xbb735aa0,0xb95aeec2,0xba056f03,0xb9152e8a,0x3ab97d82,0x3ad1daee,0xbb41d9e3,0xbb3d3ce3,0xbb96f12c,0xbbe90836,0xbbf23ce9,0xbb65dc99,0xbb9f5ee6,0xbb59e424,0x3d08321d,0x3d4d5a83,0x3d9c3ef0,0x3d619d5b,0x3ce11421,0x3c12ec6e,0x3beb2c8b, -0x3c9a5fa4,0x3c5e0354,0x3c19621c,0x3c248da8,0x3b01424d,0x3b9a8897,0x3b2abe8b,0x3b737a17,0x3b4d8494,0xb97a2db7,0xbb936db9,0xbabdeb60,0x3bc5813b,0x3a494e41,0x3b89a1fe,0xbb184b27,0x39ccbea5,0x3a3d330b,0x3868df63,0xbacb9fae,0x3a99441a,0x3b978c72,0x3bc81c5f,0x3c2cae90,0x3c6db3ad, -0x3d00f1dd,0x3cf3a3a1,0x3d01d2d5,0x3d2d5c89,0x3bef00f8,0x3d04e901,0x3d202c59,0x3d1762bf,0x3d16fe65,0x3d09c06b,0x3cab0552,0x3be31022,0xbc1ea99b,0xbc9352b8,0xbc798828,0xbc6fcbd0,0xbc3cb97d,0xbc0e134b,0xbc2d568b,0xbc0041b1,0xbb9bc4da,0xbb4d0e1d,0xbb1809b1,0xbba6c425,0x3a5d5dc8, -0x3b8ac025,0xba28dde5,0x3b35d586,0x3b32ea2b,0x3b8362b4,0x3c35470d,0x3c42fda1,0x3c7c4bac,0x3c65a574,0x3c80b22d,0x3c7be749,0x3c7a90ff,0x3ca2ecbc,0x3c9d34b6,0x3cd0d090,0x3c9c8afb,0x3cdb2174,0x3d32c351,0x3d2835da,0x3d3a2692,0x3d2908df,0x3d258e62,0x3d11eafa,0x3cb8b51e,0x3c4aecb7, -0x3b9c8cc4,0x3b3e7310,0x3b06acd3,0x3b0559e3,0x39142db2,0xba156f2a,0xbb1815a5,0xba85a9bc,0xb78857d8,0x3aa7e506,0xba0abdee,0x39fd7ef3,0x3bc1201d,0x3b85847d,0x3bf82d76,0x3c21acba,0x3c0224b2,0x3c071de1,0x3c2b3852,0x3c4e728a,0x3c53a150,0x3c3fdbc1,0x3c8cc072,0x3c877239,0x3c5d158f, -0x3c8b0109,0x3c6abb3a,0x3ce374e8,0x3cf18020,0x3d086de5,0x3d230ca1,0x3d23feb2,0x3d2b1b97,0x3d3afb2d,0x3d21fc7c,0x3d04f9d2,0x3cdba309,0x3ca52eff,0x3c8126b0,0x3c1bc58e,0x3c14285c,0x3befd8a4,0x3bc54608,0x3bcb709a,0x3c06635c,0x3bae0892,0x3bedfafe,0x3bf03f76,0x3c3b8bf7,0x3c3a52cd, -0x3c43b8a6,0x3c55b8d0,0x3c2d9c24,0x3c9b5812,0x3bff3e3b,0x3c827b96,0x3c2b266a,0x3c773a22,0x3c830efd,0x3c29b031,0x3c911a32,0x3cb0c8d7,0x3c4d377d,0x3cee8a47,0x3cf158a4,0x3cec94c4,0x3cd7d493,0x3cf1ba1e,0x3ceb69b2,0x3cf8a325,0x3cd96a8a,0x3cd2be2f,0x3cc4d017,0x3cba88af,0x3cb0d281, -0x3ca4d0d8,0x3c9f0ef7,0x3c95dc94,0x3c988381,0x3c8886e1,0x3c6b4b17,0x3c81632f,0x3c2743ce,0x3c5e3806,0x3c49b720,0x3c6b021e,0x3c562c08,0x3c5d1899,0x3c7875d4,0x3c883853,0x3c794701,0x3c980b72,0x3cc2d33f,0x3c6a9af1,0x3cb473b3,0x3ca41f6f,0x3c4ae437,0x3ced6747,0x3c93a333,0x3cbe918d, -0x3cb0670a,0x3cb86b45,0x3cbdcfe4,0x3cc6ebb2,0x3ccb4d73,0x3cd9c5cc,0x3cd27de9,0x3ccb0053,0x3cc15477,0x3cb79fbf,0x3caaebcf,0x3ca022ff,0x3c9cb0a0,0x3c9afa4e,0x3c99cc4f,0x3c984653,0x3c94a5b9,0x3c9c3e4c,0x3c82d539,0x3c1ac371,0x3a82d09e,0x3c9000ae,0x3c2b9149,0xb9863bb8,0xbab46b2e, -0x38c6589f,0x3aa69e82,0xba2f0c27,0x395cb5a1,0x3b5d9975,0x3c497f53,0x3c94fdbb,0x3b3f226a,0x3c156429,0x3d012dd1,0xbc0606ba,0xbb88ed82,0xbc68fbb9,0xbbec878c,0xbbe7b345,0xbbdd0d8b,0xbbf237c0,0xbc01cbd8,0xbc0b0f01,0xbc0c54ab,0xbc0fa0d5,0xbc124086,0xbc0dbcee,0xbc0b90e6,0xbbfe9fb1, -0xbc0863fa,0xbc0c1040,0xbc06df71,0xbc04a9d3,0xbbd9f3cd,0xbc189072,0x3b78e704,0x3c48dbc1,0x3cb3f842,0xba70397b,0x3c324cf7,0x3cb0cae0,0x3cb1deca,0x3ca8f1b8,0x3c979219,0x3cbb090c,0x3cb3d058,0x3c9f81f6,0x3c54a933,0xbb2d066f,0x3c9b69a5,0x3c7f9d46,0x3cd2eaca,0xbc0e81ff,0xbc26b804, -0xbc0f3706,0xbbde06c0,0xbbf8a595,0xbc1ebaa5,0xbc53e9e2,0xbc55e50e,0xbc724bd3,0xbc73badc,0xbc68804d,0xbc51741b,0xbc273343,0xbc418c02,0xbc466a06,0xbc30da89,0xbc12c4bb,0xbc0c1e51,0xbc393059,0x3c5e6a93,0x3bc6d409,0x3c20f587,0x3c0e79db,0xbb0f1a8b,0x3be1a7c5,0x3b086b6e,0x3c0d2c26, -0x3bb83eb9,0x3be6ef30,0xbbfe22b3,0x3bbc2285,0x3bc466d7,0x3b9b57c9,0x3c0e6dd3,0x3ba06daa,0x3c0cea77,0xbc910e7f,0xbc28a1d8,0xbc05945f,0xbbc3f288,0xbbef3512,0xbc102e7f,0xbc731f8d,0xbc7f933a,0xbc91704b,0xbc970709,0xbc935732,0xbc88a654,0xbc2dc4fb,0xbc75e4c9,0xbc6cf056,0xbc6c771d, -0xbc153036,0xbc3c3613,0x387f49ba,0x3c99eb94,0x3c0b96ce,0x3bbc1584,0x3c0c2cee,0x3b959654,0x3a8aaa37,0x3af89fa0,0xbc1e3321,0x3bf65d8f,0xbb1c8c78,0x3bc681f4,0xb9eba884,0xba181676,0x3ac1e7d9,0x3c21cd19,0xbbdbc3a6,0x3c33f22f,0xbbe94082,0xbc872316,0xbc1ce848,0xbbd1b724,0xbb786aa3, -0xbc1ce30c,0xbca170ce,0xbcafdba7,0xbcd00516,0xbce10d22,0xbccd41c3,0xbcad1c02,0xbc372a27,0xbc9d8d63,0xbc96cd47,0xbc7f3304,0xbc33a945,0xbc252e45,0xbb506e21,0x3c0ec102,0x3aca5f5c,0x3c42add0,0x3a5cd71f,0x3bc8934a,0xbb60194e,0x3b216f62,0x392a2da1,0x3b884dbe,0xb854a31a,0x3b54d7c4, -0xba2aa565,0x3bc64971,0x3b5cb45f,0x3b55ddb3,0x3a0d1974,0xbc0b0f8d,0xbc4af94e,0xbc8727c4,0xbbdcb799,0xbbd1a94c,0xbb75f533,0xbbf1f337,0xbc9c76ad,0xbca772ab,0xbcda8687,0xbce6669d,0xbce881a9,0xbccde4ca,0xbc5597c3,0xbcaacf11,0xbcb08125,0xbca7a3b9,0xbc49a621,0xbc234407,0xbaffac9d, -0x3cc6934b,0x3bb92b58,0x3c6a31f9,0x3bd7f353,0x3b31aa70,0x3a9f88b9,0xbb821c5e,0xbb4ab253,0xbb05c5a0,0x3b85a7a6,0x3b233f08,0x3ae340aa,0x3a21b312,0xbb200c23,0x3b143ed8,0x3bc86483,0xbb75323e,0xba909aa2,0xbcf67ccb,0xbc97c8f6,0xbc8ab413,0xbc34897b,0xbc83d53b,0xbccad3b1,0xbd21cf6b, -0xbd0caa80,0xbc460a6b,0xbcb6181a,0xbc88acdd,0xbb6d2071,0xbbfd34f5,0xbbe0a746,0xbc6441e3,0xbc49ab19,0xbc528ec4,0xbbaa7e18,0x3c4cd0ed,0x3b478d87,0x3c65893e,0x3b487669,0x3bbb1ce8,0xbadde31f,0x3b19a9a4,0x3b185409,0xbb2f2916,0xbaf3962b,0x39847373,0x3accaea3,0x3c04d83e,0x3c420f83, -0x3ca66cd0,0xbc7b1693,0x3b05973d,0xbc2b5375,0xbc7798da,0xbc2542de,0xbca20d38,0xbc93a98b,0xbc6a647a,0xbaaf4f89,0xbc13da72,0xbc3c6137,0xbbf05b7a,0xbbf30c6b,0xbbcee7b5,0xbaaa0c59,0xbc212f52,0xbc8232ba,0xbcdbedb3,0xbc3d1080,0xbc372562,0x3bfb3d39,0x3c5246ca,0x3b873c04,0x3ac2d9c0, -0x3a2258e2,0x3a6009aa,0x38f18e83,0xba4b1fc6,0xbafa5d98,0xbb19d70b,0xbb036c85,0xbb9db3d7,0xbb89ca64,0xbbec7b19,0xbc24b218,0xbbfb2244,0x3aa695b6,0x3b246dfc,0x3c042241,0x3bed5306,0xbb34ab1a,0xbc666798,0xbc6f20b9,0xbc8fe66f,0xbcdda984,0xbd096ae5,0xbcfa681e,0xbc9d32b8,0xbcc8f76f, -0xbcbb3c58,0xbcaa4fc7,0xbca990bd,0xbc841ce5,0xbc017b8a,0xbbe557f6,0xbbf6a96e,0x39c79390,0x3b6c458d,0x3b026e75,0x3b09a77f,0xbb03045d,0x3ae39809,0x3adde32b,0x3a50f087,0xbaafcef5,0xb9734880,0xbb037a73,0xbb91b2fc,0xbbc60e9d,0xbbd99ca8,0xbbecad5c,0xbc4b6497,0x3b5c9b88,0xbbb77baa, -0xbc753918,0xbcaeb6d8,0xbcc08319,0xbcfd46e6,0xbce75112,0xbd04f45e,0xbcf7663d,0xbd072a75,0xbce947ad,0xbc65c9f9,0xbcc81aca,0xbcabcdc7,0xbca4a090,0xbc9023ee,0xbc54b9a9,0xbbbc461f,0xbba9e985,0xbc097434,0x3b89a357,0x3b1334b2,0xb9cc9240,0xbb12d63b,0x3a6ec464,0xba855e6a,0x3a3ffbcb, -0xba90b4b2,0xba712811,0xb9b23fd5,0xbba1bc65,0xbbe4968c,0xbc3e65f5,0xbbc2120c,0xbc3f89c5,0xbc549383,0xbc89fe8b,0xbca702e5,0xbd21424f,0xbd5412ad,0xbd4ab7b1,0xbd634185,0xbd38272c,0xbd117aaa,0xbc7cf818,0xbc3914b3,0xbab17f97,0xba2878f8,0x3a691075,0xbbb39ab1,0xbba4054f,0xbc3061b9, -0xbc5ffdee,0xbc9958a8,0xbc42dbfb,0xbc00eb8b,0x3bd72fbb,0xba2ea18c,0xbb9e62c0,0xbb22d020,0xbb0a5034,0xba58307f,0xba9575d5,0x39ae7eaa,0xb9a5479c,0xbb0a0437,0xbb58be87,0xbb993773,0xbc055b0a,0xbc0c4731,0xbc38b48a,0xbbcc0926,0xbc4a0335,0x3d6e7abf,0x3d3ad8c3,0xbc26beed,0xbc81ace2, -0xbd27920c,0xbd374734,0xbd3af153,0xbd014486,0xbcdbff67,0xbcd340a9,0xbcda122a,0xbc8837a4,0xbc92dd31,0xbcaa395c,0xbc253f4b,0xbad5c490,0xba9a8b87,0xb957b41f,0xbad4b52e,0xbb30dd12,0x3bf0c9be,0x3bca1649,0xbb91d243,0x3abe4767,0x399b983c,0xbac504be,0xba88ce63,0xb9921111,0x3b1d0f92, -0x3b787492,0x3b907f1c,0x3c4357c1,0x3cb8852c,0x3d1bfbfc,0x3d179cc3,0x3cf35a48,0x3d2a2992,0x3c843bd2,0x3c4756a4,0x3c17aa1e,0xbb81324f,0xbc52688d,0xbcdd8038,0xbd2a1e7f,0xbcff2571,0xbcc39c85,0xbc8e60d2,0xbc97b3d8,0xbc8e5ccd,0xbc628db1,0xbca21b62,0xbcad23e8,0xbc99c750,0xbc8d9047, -0xbc5f5ef2,0xbafe084f,0xbaeebb99,0xbbaea59f,0x3a01b646,0x3a2123ea,0x3b184a65,0x3bfb8b92,0x3b9cee66,0x3c14323d,0x3c33b6a0,0x3c61eba1,0x3c5f4f44,0x3c84a551,0x3c927895,0x3c6d6c96,0x3ca4164e,0x3cb094a7,0x3cf1ac6f,0x3cd3af77,0x3c95d61d,0x3ca529ad,0x3cc13287,0x3c762f6c,0x3c05946d, -0xbb8a7984,0xbbbdacac,0xbc283853,0xbc644438,0xbc4f859d,0xbc4269a7,0xbc1a4be4,0xbc447931,0xbc2a6f53,0xbc2d3652,0xbc276590,0xbc1e41b5,0xbbe3615d,0x3a9516f6,0x3b8719a0,0x3b293a44,0x3bdc2d49,0x3bdc55e3,0x3c0e7887,0x3c308bd1,0x3c3266aa,0x3c2a8c08,0x3c4b0de6,0x3c66cc3d,0x3c830fdc, -0x3c8b2a8c,0x3c9a1615,0x3cc806bf,0x3cceba95,0x3cce1316,0x3c81242c,0x3c86d743,0x3ca8ef67,0x3cb2232c,0x3caa5100,0x3cadff33,0x3cb6e37e,0x3c832be8,0x3c0666da,0x3b067c17,0x3b040101,0x3b2f6fab,0x3b44e29f,0x3b311319,0x3ac35b4a,0xba8ac191,0x3a1d60b0,0xbb2f10b2,0x3a92b702,0x3b860a72, -0x3bc50563,0x3bd3b9c9,0x3c08fb48,0x3c1da9b1,0x3c2e141e,0x3c3f4ab3,0x3bce803e,0x3c823fd4,0x3c1dd3b6,0x3c78c8bb,0x3c5d1736,0x3c733f33,0x3ca2a4b9,0x3c8e1b4e,0x3c85f032,0x3cfaf95f,0x3c98fc30,0x3c96af73,0x3c6b1c9c,0x3c2db5aa,0x3c1aa00b,0x3ba46812,0x3b32fce3,0x3ba70296,0x3c22abb5, -0x3c52758f,0x3c61137c,0x3c68a82d,0x3c7d1485,0x3c5f12dd,0x3c50c43b,0x3c572f87,0x3c3d8ada,0x3c29c030,0x3c0ad07e,0x3c726779,0x3c5a0028,0x3c75f08b,0x3c6ae5da,0x3c828ccc,0x3c811686,0x3c98d0a0,0x3c991590,0x3caecfff,0x3cad3e21,0x3c867139,0x3ccd7a3a,0x3cb40e03,0x3cb186be,0x3ce9b58e, -0x3ca663cf,0x3c7f732b,0x3c199de2,0x3c35b454,0x3c332a28,0x3c351ecf,0x3c3fa2b1,0x3c4d4cbb,0x3c5625ec,0x3c491d0d,0x3c2d7122,0x3c1b789a,0x3c17676d,0x3c145d4e,0x3c15974e,0x3c0de2b6,0x3c08c092,0x3c005903,0x3bf295a8,0x3bf4bcde,0x3bb99cb2,0x3c41ff82,0x3c9a57cc,0x3cbe6a0c,0x3c531517, -0x3ca04dae,0x3cc893d7,0x3cd4cd73,0x3cc6619d,0x3cc14bc1,0x3cd050ba,0x3ccc7590,0x3cbf16c7,0x3c9c007d,0x3c59b6d9,0x3cc5898a,0x3cb715d1,0x3c914b85,0x3bf0dac4,0x399849a9,0x3c4d1b9a,0x3bcd6617,0x3bbd963d,0x3ba9c91b,0x3bbed15d,0x3bcc8d0b,0x3bd51d39,0x3bce3875,0x3bcdd434,0x3bc47780, -0x3bc6de7d,0x3bcfe042,0x3beb6201,0x3be7f6ab,0x3bf040d7,0x3bee52a6,0x3bf621cd,0x3bd988df,0x3c1504eb,0xbb95bf33,0xbc2ccc99,0xbc3d12cf,0xbab7f36a,0xbc2f7def,0xbc5be657,0xbc5e87fb,0xbc4cc732,0xbc30f2f1,0xbc78b126,0xbc7545a2,0xbc5f111b,0xbc55ce67,0xba0fc2ed,0xbc31040d,0xbc6a07bd, -0xbcb737a8,0x3b1b6116,0x3bd1cb2c,0x3ba4b857,0x3b895d79,0x3be16a3a,0x3bf576cc,0x3c09a6c6,0x3c03d23e,0x3bf2b64a,0x3bb94977,0x3ba47547,0x3bcb72b0,0x3c182319,0x3c132890,0x3c1ff917,0x3c21697d,0x3c14eb45,0x3c259f93,0x3c580d66,0xbbd65e9b,0x3a02f01d,0xbaaba8e5,0xbbc562e3,0x3aab8ceb, -0xbb7d0b02,0xbb1442bd,0xbbeb2a06,0xba903d8a,0xbb9171fc,0x3c0a9586,0xbb41b276,0xbb9d8f59,0xbb395b7a,0xbb6be467,0xbb14d60e,0xbc47d638,0x3c2d664a,0x3bbe5490,0x3b2f828e,0x3880c76c,0x3b617d03,0x3b97989e,0x3bdd5077,0x3bd4c3e0,0x3badf38b,0x3b743b72,0x3b2b84fb,0x3b9026a9,0x3c21d0a5, -0x3c299ea9,0x3c2da628,0x3c45bf13,0x3c1dcb57,0x3c720d4f,0x3b994d0d,0xbc151ed6,0x3af391b2,0x3b17e72e,0xbb1c9bb8,0xb9c75bac,0xbb18a3ef,0xba83d2dc,0x3c187903,0xbb733d81,0x3b9b3ed6,0xbb90e5a3,0x3b1f59e4,0xb89d0f7d,0xbaae145c,0xbaf597c1,0x3bb32a4b,0xbc84b4a9,0xbbb97111,0x3bddcdd0, -0xba8d71e3,0xba4eff07,0x3b623680,0x3bb4b90c,0x3c08d5f5,0x3c15afdb,0x3bcc5c8c,0x3a74f238,0xba0e9f5f,0x3adedd1c,0x3c417325,0x3c3bb759,0x3c4c9542,0x3c5867fc,0x3c544b43,0x3c853a51,0x3c2fe074,0x3bb00d9a,0x3c7d6c93,0x3bedba7b,0x3c252a57,0x3a3d2691,0x3b900ea6,0xbb81be94,0x3a71af0e, -0x3ba9f7fb,0x3bed9dd8,0x3a97cf56,0x3b8ca6be,0xbb8d4302,0x3a22ebad,0x3bea29a8,0x3b4e9d86,0x3afa1de0,0x3ac08073,0x3c2f3064,0xbb476e53,0xbbedf798,0xbb3e79c6,0xbad31ba0,0x3b8edb15,0x3bb50eb9,0x3b438c0e,0x3ad40a65,0xbb3b038c,0x3a9a3fad,0x3c3cafd3,0x3c4a8723,0x3c563cab,0x3c7378ab, -0x3c5371f3,0x3c8c0874,0x3c43273d,0xbc15cef4,0x3c38e00a,0x3c0ec14e,0x3c0cc97c,0x3bff30aa,0x3ab063d2,0x3b2c6fbe,0xb90b0763,0x3b6f3b77,0x3b50e37a,0x3bb2b7ff,0x3b1dd58d,0x3b2c72f4,0x3ad6641c,0x3c2780be,0xbb86965c,0xbcf1ea53,0xbc8d8b74,0x3c33919a,0x3c4711de,0x3c872662,0x3caa6f7d, -0x3ca84407,0x3c857b4b,0x3c1892ea,0x3c0e8e6f,0x3cbe5ad8,0x3c961b2f,0x3c85747f,0x3c873891,0x3c0a9ce4,0x3bb392d5,0x3c970a57,0x3c7f3eaa,0x3c861aca,0x3c0b2ab5,0x3bd36036,0x3c976b74,0x3c0afeff,0x3c23f560,0x3a89d4ed,0x39a21109,0x3b074a58,0x3b5e983d,0xba18723a,0xb987eb9f,0x3a9a50c4, -0x3aa5f0c0,0x3c25e4df,0x3b9f0a34,0xbbaf4f55,0xbc6921ea,0xbb9502f8,0x3cb6f81a,0x3cb41e5d,0xb9e178c6,0xbc92588d,0xbcce6ed1,0xbcd5ffca,0xbbb4e5fe,0xbc01b246,0xbb4805b5,0x39dea583,0xbc1b721e,0xbc29419f,0xbb8ff04e,0x39952158,0x3b985e68,0x3c1ca0c3,0x3bb962f2,0x3c4df9cb,0x3b8bb5b2, -0xbb94f182,0x3aa6e78c,0x3ae4b216,0x3b6bc127,0x3bb30ba2,0x3b184a65,0xb9365af1,0xbb000efc,0xbae461df,0xba8fa0cb,0xbb06cee2,0xbb862156,0xbc24a1c0,0xbbcdb77f,0xbb5ee3c5,0xbbf0dfb4,0x3b455a18,0x3caae2d2,0x3c40cba8,0x3b33d068,0x3774247c,0xbb94de92,0x3af9d027,0x3bc34719,0x3c03a116, -0x3c20093f,0x3bcd6f9e,0x3c18c32f,0x3c07cc16,0x3bd964fb,0x3c380635,0x3bfc1798,0x3bc9747d,0x3b5e2c91,0x3c144694,0x3c3d1909,0x3a92c13e,0x3b1f6f8c,0xbb39ccd2,0x3b3b38f1,0x3b0a1743,0x3b2923e1,0x3a4c457f,0x3ace7d6b,0x3ab1a442,0xba30a8d3,0xbb859b0e,0xbbc268f2,0xbb5a361e,0xbbe0ec10, -0xbc413313,0xbb4bcb48,0xbc658060,0xbc91df10,0xbc58b1d7,0xbc3747ed,0xbb588af4,0x3be40e9b,0x3c5109b9,0x3c174097,0x3c095ae8,0x3b91d2a1,0xb851f632,0x3b8781c4,0x3b837752,0x3b95e0f2,0x3bf4f9d9,0x3c007a51,0x3bb1402e,0x3b7dfb80,0x3c3481da,0x3c276eb2,0xbae77d8c,0x3a987d59,0x3abfc084, -0xbaed89f3,0x3b235a86,0xb9981027,0x3b049fc8,0xb94a1795,0xbb1066b2,0xbaf4ec96,0xbbee4c38,0xbc14becf,0xbc083882,0xbc002a88,0xbcab12aa,0xbc1de001,0xbd034fdf,0xbd16e4d4,0xbcd5ba9b,0xbcb15294,0xbc5fa0cd,0xbc8b7415,0xbc937b9b,0xbbf81729,0xbc7bb7c1,0xbc4db2d5,0xbc0a47e4,0xbc307f78, -0xbc2e13ec,0xbc586cef,0xbc0b9e4d,0xbb67b74b,0x39c4b635,0x3b9c23e1,0x3bdc3ed9,0x3c08c056,0xbaa9ae15,0xbad3a3d7,0xbb78c9a5,0xba1968a5,0x39e91337,0x39fb73ea,0x3aa81130,0x3ab32296,0xba0dabf9,0xbb53ffba,0xbbb210a4,0xbba6fa77,0xbbd2e764,0xbc117aba,0xbc868e14,0xbcaf4cfd,0x3c0e6bea, -0x3b28fc6e,0x3b195307,0xbc7f9e71,0xbcb9acb6,0xbc935db7,0xbbfde88d,0xbb32c965,0xbbc8a79f,0xbc2caab5,0xbc503d98,0xbc232cc8,0xbbbdce6a,0xbc04730d,0xbc1b10cb,0xbbd8d92c,0xba502e96,0xbb8d85b6,0x3ab9f12a,0x3bf0dda4,0xbb8a2120,0xbaa66d60,0x3a9bf879,0x3ab09b4a,0x3a976c7f,0xbb7a1182, -0xbb349b9f,0x3a271eab,0x3a43a24f,0x3a3f32c8,0x3b303562,0x3af780f4,0x3c944991,0x3cc67f0d,0x3cb5bb44,0x3cee388a,0x3c63ca17,0x3ca6be17,0x3cc78ed2,0x3c8bdd21,0x3c2c1705,0xbb20ffb7,0xbc4d536a,0xbc9170c6,0xbc952c2e,0xbc873004,0xbc46a699,0xbc330d21,0xbc458619,0xbc315f76,0xbc5a5849, -0xbc4cf617,0xbbc42ed5,0xbbde241d,0xbbbe1da5,0xbbd18d5e,0xbbafed30,0xbaacb1ac,0xbbce98b5,0x3b2fc17e,0x3bb10c1c,0x3c030089,0x3c4791bf,0x3c2260be,0x3c56a217,0x3c52e943,0x3c7aa7b5,0x3c9f9a0c,0x3c5c4766,0x3c70a6db,0x3c8f5c80,0x3c964582,0x3c8ba8aa,0x3cb8279d,0x3d00b914,0x3cd475b5, -0x3cf48646,0x3c98af2c,0x3c67573f,0x3c157bf2,0x3b08084e,0xbb6ccc28,0xbc3947e5,0xbc039000,0xbbee3aab,0xbbc900b3,0xbbe80aa1,0xbbe371c0,0xbb75ef29,0xbb6ccfd8,0xbabe778a,0xbab83b9c,0xbbab9a97,0xbae57683,0x3aab4f13,0x3b1f552c,0x3be3a482,0x3c15c891,0x3bde58dc,0x3c0b9e37,0x3c43aeac, -0x3c6999b8,0x3c81bc0d,0x3c87bd69,0x3c952eb7,0x3c8ea7cf,0x3c702730,0x3c9cc6e9,0x3c4bbb2a,0x3caa31c5,0x3cbca7f6,0x3cc4272c,0x3cdeaf00,0x3cdba875,0x3cda7bc5,0x3cceff1a,0x3c927468,0x3c23bc0f,0x3ae7e666,0x3b149c93,0x3a947a12,0x39eb4164,0x3b34f35d,0x3b47bdc3,0x3b71329d,0x3b70ab85, -0x3bee1cf6,0x3b5d0e03,0x3b3ecc5e,0x3babcad5,0x3be26f59,0x3bf138f7,0x3bed6106,0x3be66403,0x3c26fa19,0x3c7f1afc,0x3bf27f47,0x3c86a323,0x3c466aea,0x3c915033,0x3c8003e2,0x3c4c5a1f,0x3c68a1fd,0x3c893da1,0x3c90d3cc,0x3cc348e8,0x3cb615b3,0x3ca9696c,0x3c920327,0x3c96e73a,0x3c88dab1, -0x3c99302c,0x3ca1c14b,0x3cb4c377,0x3cc0c519,0x3cb7270f,0x3cab474d,0x3c9a41b5,0x3c87f23d,0x3c759ec8,0x3c745db1,0x3c517a56,0x3c2bf242,0x3c2c48ef,0x3c00d39d,0x3c225b62,0x3c14d2f5,0x3c3259fb,0x3c42e392,0x3c535490,0x3c51591b,0x3c472281,0x3c5db119,0x3c7c0668,0x3cab914b,0x3c6d08ad, -0x3c95eedf,0x3c9acdfa,0x3c8c583a,0x3cbb708f,0x3c34ebfc,0x3c9673ed,0x3c9322bf,0x3c96598f,0x3c9981ab,0x3ca269e3,0x3ca4e686,0x3ca681f0,0x3c9898a3,0x3c8c055e,0x3c814ab1,0x3c7719b2,0x3c71aa4c,0x3c714cc3,0x3c754168,0x3c75fe48,0x3c73aa2d,0x3c747786,0x3c75b584,0x3c8113df,0x3c24fafa, -0x3bbba7cb,0x3bc9111e,0x3c3024cc,0x3bb85f1a,0x3ba2928e,0x3ba1bb55,0x3bc8965c,0x3be1b533,0x3baf07bd,0x3baf6cad,0x3bf5c5d3,0x3c151093,0x3c50e813,0x3c000fbd,0x3bda46cf,0x3cd9272a,0x3bb2e08a,0x3c1a47e9,0xbb366f11,0x3ae950d3,0x3b138341,0x3b093a5e,0x3b47c421,0x3b4c6755,0x3b1ecc9a, -0x3b1b950d,0x3b039a32,0x3a760e5e,0x3a9acfa9,0x3aabe86a,0x3b02be0b,0x3ae9797f,0x3b062708,0x3b13fd60,0x3b217a14,0x3b3c6762,0x3ab6b692,0x3c4b4faa,0x3c6a3036,0x3bd60516,0x3c299ff0,0x3c69cb35,0x3becc6ca,0x3c016b10,0x3bf56105,0x3bfbca50,0x3c24e037,0x3c24b231,0x3c2a20d9,0x3c759a57, -0x3c1f2e04,0x3c01593c,0x3c7bcca2,0x3c8ba875,0x3b872c21,0x3a8afa4b,0x3b59b8d9,0x3b686f74,0x3c0896c7,0x3c0b74d1,0x3b993289,0x3b9e084e,0x3b37a418,0xb909a0f7,0xb9504fca,0x3a8ce1fd,0x3b9291c9,0x3b6649db,0x3b776d77,0x3b7acb0d,0x3b96faf3,0x3b845e47,0x3b17a3d3,0x3c6f14ce,0x3c31af34, -0x3c0f5970,0x3c5d0d88,0x3c040c57,0x3bc566ef,0x3c02e7d2,0x3c395f60,0x3c2e2b02,0x3c27e881,0x3a27b7a7,0x3c04c3a4,0x3c06e424,0x3c15fc8a,0x3c5f5008,0x3c13601e,0x3c82379a,0xbb11d3b2,0xb9125d81,0x3b779055,0x3b1e2117,0x3c28ffb0,0x3c4f7b84,0x3bb7e34b,0x3bdff9a8,0x3b3586a8,0xbb31319f, -0xbb40e3de,0xbadbb1a7,0x3b84ccd1,0x3b2864df,0x3b891868,0x3b92a470,0x3be3cff7,0x3b83d6b8,0x3c2394f6,0x3ca6fdd7,0x3c496429,0x3c4827f9,0x3c458ff1,0x3be260c3,0x3befc364,0x3b8b7565,0x3b05bab7,0x3c7d197f,0x3b7a07af,0x3c194cd3,0x3bbf43ed,0x3ba55531,0x3becab78,0x3c86f9c3,0x3bdfca35, -0x3c829b7f,0x3aebe081,0xbb46e3f1,0x3b858991,0x3b06006f,0x3c8bd108,0x3ca50803,0x3bfe168a,0x3c28ea2a,0x3b52b046,0xbbe144da,0xbbb9e54c,0xbb4ea872,0x3c195218,0x3bab0ffc,0x3bc10503,0x3bc92eb0,0x3bf1517e,0x3bb63184,0x3c14c142,0x3c798f8f,0x3c13c62f,0x3c438ae7,0x3ba543a2,0x3bff77e2, -0x38ab8290,0x3baefe6c,0x3b0cf3fd,0x3c0981d5,0x3ab77948,0x3b874390,0x3b943119,0x3bbec9c2,0x3b8d8fa8,0x3c879069,0x3bf5222e,0x3be5d611,0x3b1d3839,0xbba013d7,0x3b9d87b4,0xbb0f5451,0x3c8ea2e3,0x3ca5f94c,0x3c1e8744,0x3c48d997,0x3b5eab69,0xbc16614a,0xbc21b627,0xbbe81e86,0x3b99f469, -0x3b728286,0x3bb17513,0x3bdfcf18,0x3c2943a8,0x3c0b29e9,0x3c149e1c,0x3cc6d2ac,0x3c28a6df,0x3c795600,0x3c07573e,0x3b6ddc70,0x3ac16dbd,0xbb689c05,0xba1e017d,0x3b6acc1d,0x3b886021,0x3af8b6bf,0x3b3e9cb0,0x3980f1fc,0x3aaf88b5,0x3c6cf106,0x3c47b069,0x3b9eddc4,0x3c0c17e3,0xbbccf1bd, -0x3bd8af0f,0x3c3818b5,0x3c8425b7,0x3c8c9f56,0x3c75d511,0xbbd5c35c,0xbc5ee8d5,0xbbf30f0d,0xbc2933dc,0xbc0bad5f,0xbb996448,0xbb201b54,0xba85a120,0xbc212687,0xbb1b1395,0x3b310a5d,0x3c1a6974,0x3caae7e4,0x3c3d4e93,0x3c55ffb0,0x3bbf5fd2,0x3be5f05f,0x36c69991,0x3b825c17,0x3b1cad74, -0xbb02e9a6,0x3a1d97bf,0x3b7cdb3b,0x3c072a24,0x3c3b6b20,0x3c5b1ae7,0x3c0b7258,0x3b2f40a8,0x3b9bb46f,0x3c756e1c,0xbb8fd9d5,0xbbb96728,0xbc39d2c8,0xbc58a082,0xbc4294b7,0x3c049f61,0x3b6e94ee,0x3b995ac3,0x3a8c508d,0x38b57ae0,0xbafb2ecf,0x3a10fd1e,0xb9eeb147,0x3a8643b0,0x3bf57b63, -0x3c39f8ba,0x3bdc3b7d,0x3c6315a5,0x3c0d58cf,0x3bc46305,0x3bb1c7b9,0x3b870242,0x3b60ebcf,0x39b70617,0xbaa84d6a,0xbaa664d4,0xba0c4fa5,0xba48b9eb,0xbb62fd15,0xbb78702d,0xbb71e00b,0xbb464d80,0x395bc7e5,0x399e6809,0x3c4c3eff,0x3c92b8b7,0x3b33f5fd,0x3b799026,0x3bf391c5,0x3c5bd55d, -0x3c90b590,0x3c894c27,0xbb7ba3a4,0xbc3b17b1,0xbbd45fa1,0xbc00f07d,0xbb285513,0x3a6415f6,0x3b0d96f5,0x3b5e5e16,0x3bc0d3bc,0x3b9c96fe,0x3b2ec7b8,0x3c49d2be,0x3bf6e4ea,0x3b57f5e6,0x3bfc4aaa,0x3b61f191,0x3b957015,0x3a512376,0x3b1f4335,0xbb19ab9f,0x390383d8,0xbab0b379,0xbb349d8d, -0xbba863b4,0xbb55325d,0xbb8e7939,0xbbd44a4f,0x3bc42483,0xbbede737,0xbc736e70,0xbb69911c,0x3bcd6752,0x3c853974,0x3cbf6ddb,0x3cbfff0e,0x3b9d7b51,0x3ac5e961,0xbaf49e2c,0x3b30ac29,0xbb51f625,0x394890be,0x3ae98eff,0x3afda832,0x3b14d573,0x3b2df84c,0x3b84f4f7,0x3b24431a,0x3c601037, -0x3bed4e8f,0x3a9bf351,0x3b2bdacb,0x3b8e6d87,0x3ac010a9,0x3ab0e32a,0x39a38bce,0xb7f0143b,0x3abb28c2,0xbba118c3,0xbbcc56ff,0xbc00f899,0xbb5d22a9,0xbc1d0761,0xbc8f7b51,0xbc5e9b24,0xbcf477c9,0xbcb45aa3,0x3ba27dcd,0x3c815033,0x3a681afa,0x3b33a5c6,0xbb527322,0xbc472ac4,0x3b4c60b5, -0x3c1a49df,0x3c1a0568,0x3bc80463,0x39234469,0xbb57f237,0xbbbb6695,0xbb2c0090,0xbaaccec2,0x3b26c08a,0x3b01cbab,0x3c25bcdc,0xba0d41bc,0xbb076d16,0x3a75c3b6,0x3a4b8df8,0x3aa54372,0x3ac90bc9,0x3a50995d,0x394b6c56,0x3a048a59,0xbae41d19,0xbb63c3d0,0xbb9b5552,0xbb90b1d4,0xbbd0c686, -0xbc7728d7,0xbca85e39,0x3d0dcd28,0x3c88cf3f,0xbc02f794,0xbc270e0e,0xbc52d62e,0x3a0467fe,0x3bd53f0c,0x3abb8bb2,0xba32e64a,0x396946c2,0x3c130611,0x3bb611cf,0x3b1d2fd1,0x3bcfec4f,0xbb2216b9,0xbbae8ae6,0xbbae218f,0xbae8bbf7,0x3a8ed391,0x3ba8c739,0x3c03ad64,0x3b930fe1,0x3a67bb3e, -0x3b4f2d7a,0x3a9d4330,0xbad2169c,0x3ab84ed3,0x3ab5a477,0x3a987633,0x3a6e328f,0x3abf1a24,0x3b73369c,0x3c2ac9af,0x3cb5919e,0x3cdb8f26,0x3c8a857e,0x3d114b5b,0x3d143138,0x3cfc5fa6,0x3cb0990a,0x3ba4260a,0xbc6868fd,0xbccdeab4,0xbcc5b4a1,0xbca3f728,0xbc85eb3a,0xbc504e88,0xbc20cc1d, -0xbbd35737,0xbb82088b,0xbb88428f,0xbbcd94f3,0xbbacde48,0xbc150700,0xbc0c8e44,0xbb53961c,0xbbda4d97,0xbbb8ebed,0x3b10ac4d,0x3b416d1e,0x3bdeeb50,0x3c437a98,0x3bda982e,0x3c1a3841,0x3c361e0d,0x3c7f8da9,0x3c8f32b3,0x3cb435d9,0x3cab45dc,0x3c983913,0x3ceb55ac,0x3cfef2ac,0x3d09edec, -0x3cf6273f,0x3cc3bbb9,0x3ca2e189,0x3c90c747,0x3bf44fb8,0x3a9a2295,0xbb77a2e7,0xbbf863f0,0xbc26e194,0xbc6e42f3,0xbc283df5,0xbc1b6d5e,0xbc0e979a,0xbc00a48b,0xbc0e7a09,0xbbe01bbf,0xbbc8206a,0xbb9c7e62,0xbad41e06,0x3b4c466d,0x3b4a66b2,0x3b177171,0x3bc4ed35,0x3bb20d67,0x3be20599, -0x3c28631b,0x3c31a388,0x3c448331,0x3c838356,0x3c9825ec,0x3cbcb4d5,0x3caddec7,0x3cbfd6c9,0x3ce6530c,0x3cf1a321,0x3cbec987,0x3c9f74a2,0x3c8a5e96,0x3ca7c45a,0x3cadac63,0x3ca43276,0x3c903d78,0x3c613117,0x3c1c46ad,0x3b770d05,0xbb3ee6d1,0xbb941588,0xbbd6a970,0xbbcbbc2e,0xbba84b05, -0xbb872479,0xbb612b94,0xba08380b,0xbaae1b26,0x3b860a2c,0x3be44675,0x3bb23b2f,0x3bd3e351,0x3bded8d0,0x3c09787e,0x3c24fee7,0x3c32d568,0x3c424983,0x3ca2b09d,0x3c76e5a3,0x3c9e6ddf,0x3c964ae1,0x3cadae04,0x3caee138,0x3cabd70e,0x3c9950f9,0x3cc88ce8,0x3c97d325,0x3c9ffc36,0x3c8607be, -0x3c560095,0x3c56190f,0x3c3dae49,0x3c588f2a,0x3c412e8d,0x3c4a0087,0x3c552e08,0x3c4be979,0x3c43cb29,0x3c2dfd3b,0x3c1896fe,0x3c04d66c,0x3bd33d31,0x3b958663,0x3ad4b202,0x3ac806ce,0x3c213566,0x3c333373,0x3c678eb4,0x3c781eb4,0x3c8eae2e,0x3c961a69,0x3ca794a8,0x3caab77b,0x3ca8c918, -0x3cb4f390,0x3c92dd83,0x3cc37572,0x3cbec1c3,0x3ca847b0,0x3cc2eee2,0x3cc174e4,0x3ca59d56,0x3c5f23b2,0x3c6b4b86,0x3c6f11d6,0x3c747716,0x3c7ff366,0x3c7c2c7d,0x3c79d868,0x3c664f35,0x3c5334ca,0x3c3ce7a5,0x3c2bbe36,0x3c1e7add,0x3c176589,0x3c1a6d03,0x3c1cbaf4,0x3c226ab2,0x3c2a9c52, -0x3c329123,0x3c152151,0x3c86eb42,0x3ca0ce92,0x3c887284,0x3c910d01,0x3ca87c52,0x3c8ae1cd,0x3c931bfb,0x3c905544,0x3c92ccf6,0x3c9f3869,0x3ca0afb2,0x3c9e357c,0x3cb04ea9,0x3c99c5c8,0x3c94bc0f,0x3cb30636,0x3cc96bf0,0xbb831833,0xbc18e4ef,0xba504166,0xbb098a75,0xbb2e6dd8,0xbb3c0306, -0xbb61a469,0xbb6a77ce,0xbb6a1aaa,0xbb530c1e,0xbb55c9bb,0xbb704490,0xbb5e7157,0xbb50b8a1,0xbb36dd93,0xbb258da5,0xbb253245,0xbb296867,0xbb1d64ce,0xbb066bc5,0xbac81f59,0xbbf8dc34,0xbbbf363e,0x3beac2cd,0xbc060019,0xbbe95e92,0x3babf755,0x3b9fd8a8,0x3ba7cdf1,0x3b973106,0x3b505a62, -0x3b1a5cd1,0x3ab6cebc,0xbbf6d2dc,0xbc0a869d,0x3bb638d0,0xbbcb918f,0xbb561c3e,0xbbd9e5c1,0xbb3e4b16,0xbb8414d7,0xbb816d4c,0xbbbfa93f,0xbbe9a424,0xbbfce8c9,0xbbcfdbe5,0xbbea6eef,0xbc0d362b,0xbc0fe617,0xbc02be14,0xbbcfc312,0xbba46462,0xbb8d0324,0xbb7d669d,0xbb579ae2,0xbada20a0, -0xb90d7eb0,0xba9ec8a2,0xb9f15b79,0x3b0398f4,0xbbab4bba,0xbbb867fd,0x3920b4b1,0xbb7f1ddd,0xbb67998a,0xba7c0ba1,0xbb451bcb,0xb8dd42c4,0xb9b91eea,0xbb5759ee,0xbb54137d,0x3a65bb07,0xbab50f8e,0xbc2be60a,0xbbb0a1f4,0xbac8a14a,0xbbb23b50,0xbba954e2,0xbc264944,0xbc3f18e0,0xbc424a27, -0xbc1c2e13,0xbc252b0e,0xbc5792c5,0xbc50cf4c,0xbc4055bb,0xbc033938,0xbbd3ead7,0xbbb8de17,0xbbb7a843,0xbb8f282e,0xba647eb2,0xbab2e910,0xbb0d5f36,0x3ae0302f,0xbb1fa894,0xbb0a3650,0xb9ab451b,0xbb9c6f98,0xba35ef97,0xbb01085c,0xbb4c8536,0xba27eccf,0xbb7cab99,0x394e3d8d,0xbb76deb9, -0xbb5263ac,0x3b5e16b2,0xbb98e2cb,0xbc0390bb,0xbbe361f8,0xbb3c9b7b,0xbb9f85c1,0xbb9fa20e,0xbc369012,0xbc7cf374,0xbc914ecd,0xbc59a3c2,0xbc748c9a,0xbca7f3ce,0xbcab873a,0xbc96f565,0xbc5fb7d0,0xbc2a93d8,0xbbfd758a,0xbbd55081,0xbb7ab4d7,0x3a768758,0x3b1e2a09,0x3b880829,0x3c08b746, -0x3bce35d2,0x3b9a25e8,0x3a33adde,0x3a9449ce,0xbb5824f6,0x3b10de9c,0x3bfbcda3,0x3b91c97e,0x3a7741eb,0x3b7f7ee1,0xbb501d8d,0x3a003e9d,0x3c234b1e,0x3ae94959,0xbc023fe3,0xbbf15854,0x3b1212ab,0xbbeabd63,0xbbb67cb7,0xbc939d27,0xbcb11d5d,0xbca725a7,0xbc87ae26,0xbc863479,0xbcb10f6e, -0xbcb5e605,0xbca43ed8,0xbc504fd7,0xbc30eea2,0xbc14c00f,0xbc1280fb,0xbbd08bac,0x39891656,0x3b94d702,0x3b2a173d,0x3c1920b2,0x3bdddc25,0x3bc66344,0x3ba4417a,0x3b21ebaa,0x3a5b2718,0x3a3378a9,0x3bd0ec5d,0x3b64ce4f,0x3b5ec5b1,0x3ba24b47,0xba719765,0xb98d5bd4,0x3c5bad18,0xbb5c700c, -0xbc946790,0xbcc8319b,0xbc174134,0xbbbd0f83,0x3b44edfe,0xbaf1b06e,0xbbce3af9,0xbc04b5f5,0xbc26b2b6,0xbc1544ff,0xbbde44de,0x3b01e3d1,0x3bc79f81,0x3c07f59f,0x3b18122e,0xba0da9fa,0x3bc81759,0x3b3d057c,0x3a98c646,0xbb86d453,0x3bca917b,0x3c55445f,0x3bcdf0c5,0x3bd8f55f,0x3b0d0ebd, -0x3a8dd6b2,0x3b4fef7a,0x3b5b3a35,0xba5b64cd,0xbaa96731,0x3adf0ae4,0x3bb263b3,0x3c1866c2,0x3ae26344,0xbbc3c152,0xbc911e2d,0xbc38c762,0x3cae464e,0x3c102615,0xbc169650,0xbc243caa,0xbd0195fc,0xbcf124f4,0xbb22f817,0xbbede24d,0xbb23e0ff,0xba3d812b,0xbb9c5f32,0xbc057b52,0xbc0d159d, -0xbc402356,0xbc5a0acc,0xbc8a2b8c,0xbc3f9aaa,0xbb8d3a3b,0x3ae433bb,0x3b13bace,0xb8d90ec2,0x3b21ad49,0x3ae82c71,0x3b5b201f,0x3b03f093,0xba94065b,0xbb1ccddf,0xbab82f6f,0xba481453,0xba01126f,0xbb8d1365,0xbb77ec50,0xbb787072,0xbbcc8740,0xbc5ac76a,0x3b101742,0x3c3e3175,0xb9d7967b, -0xbc243d68,0xbcb47b96,0xbd078d7e,0xbceda867,0xbcb02770,0xbc21f266,0xbb2d3284,0xbb978f9a,0xbc122297,0xbc63d97c,0xbc52c95f,0xbc440fb5,0xbc278079,0xbb377699,0xbb0d2efd,0x3b533c60,0x3bbef49a,0xbb013237,0x39ee6012,0x3af21c85,0x3aa4d6c0,0x3a02a7c9,0x3b1985cf,0x392e7700,0x3a251e3f, -0x392e2ab4,0xbad7af74,0xbb716653,0xbba481c6,0xbbc4ea9e,0xbbf875ee,0xbc243d91,0x3938a68f,0xbc4614bc,0xbc84bbdd,0xbc61deeb,0xbca80da7,0xbd41ec0a,0xbced2251,0xbcca8943,0xbcd2cfd9,0xbc42cfda,0xbc1ff50d,0xbc765091,0xbcacaf31,0xbcbdd095,0xbc89d602,0xbc863744,0xbc32abea,0xbaffb4b0, -0xb883c7e5,0x3bb65c3a,0x3c272a82,0xbb1dec68,0xba4df535,0x3b0aeebb,0xb8a2016f,0x3a8efb82,0x39849d43,0x3a509694,0xba4ab868,0xbb01c20d,0xbb59701a,0xbbfab160,0xbbf63254,0xbbe4eb7f,0xbc2da272,0xbcafeb5c,0xbc588955,0xbcebc890,0xbca551f7,0xbccd7ee5,0xbcfbe9a6,0xbd76e4f1,0xbd4a44ab, -0xbd299b17,0xbc94466f,0xbc8f78b9,0xbc4550a7,0xbc465760,0xbc5dba32,0xbc61ec49,0xbc2b1d10,0xbc8ce971,0xbc7b499a,0xbc4c5082,0xbbc6768f,0xba0d91be,0x3b8cd85e,0xbae67230,0xbb33ec13,0xbb0e3759,0xbb0dae55,0x3950f5e9,0x3a958dfd,0x39cc55c3,0x39880cfd,0xb9d8f2ab,0xbb01eedf,0xbb8989f0, -0xbb8a8982,0xbb8f2339,0xbc32d6c8,0xbc8ad831,0xbcd6af26,0xbc19f239,0xbd1a6944,0xbd8de892,0xbd92dfd7,0xbd4976f4,0xbd1772f2,0xbcd8e368,0xbcd09559,0xbcad2a9b,0xbcb6d875,0xbcc8a5ae,0xbccb5900,0xbcae1cee,0xbc80e917,0xbc2452bd,0xbc01a306,0xbba6a182,0xbadb254f,0xb92ddda1,0x39cc84ab, -0xbbcc51f1,0xbbb213da,0x3b9a9190,0x3b0d2861,0x3a234d89,0xbb6f65af,0xba5d1373,0x3ab28bb9,0xbb17f92c,0xbb960397,0xbbb98f0c,0xbbf4bf3b,0xbad11619,0x3c2e695f,0x3bfb9fc0,0x3bad2d4d,0x3cf75196,0x3c3ea707,0x3bd40da4,0xbb67ab74,0xbc924710,0xbcf3946c,0xbd06fc1d,0xbd019bf3,0xbcad0072, -0xbc548910,0xbc2c108b,0xbc220fb6,0xbc4a6f47,0xbc5cd5b1,0xbc5d3818,0xbc5bb52d,0xbc0f2151,0xbc12401f,0xbbcaf2dd,0xba9004c3,0xbbc7a4ce,0xbba115f9,0xbbf3b171,0xba122fa9,0x3b7f4f99,0x3beb8810,0x3c0e9fc4,0x3c01edfe,0x3c0e2297,0x3c526680,0x3c75e444,0x3c9bcfc8,0x3c83858e,0x3c6d336e, -0x3ca8ffec,0x3c84643a,0x3ca2c7b5,0x3c9bc791,0x3c59475b,0x3bf7c844,0x3bacb653,0xbbd1c27b,0xbc642a1a,0xbca95f93,0xbc963f5e,0xbc8f531c,0xbca56978,0xbc806f93,0xbc67eb4b,0xbc52ca16,0xbc4be9a4,0xbc45ba73,0xbc11c4c0,0xbc0d30f1,0xbbcefd9b,0xbba3042a,0xbb8d91d1,0xbabba37a,0xba9ff8cd, -0x3b095a05,0x3b9854c8,0x3bd60f73,0x3be197f1,0x3c29cb84,0x3c55be75,0x3c7a65c8,0x3c8f0c3b,0x3ca07819,0x3c9683fa,0x3ca045ca,0x3ca2f4ea,0x3cbaef44,0x3c4a996b,0x3c3fbf88,0x3c427aa9,0x3c1fa55f,0x3c111def,0x3baa5294,0x3aa60272,0xbbb57d8e,0xbc0edbed,0xbc48a2bd,0xbc88143b,0xbc49516f, -0xbc389c60,0xbc0e347b,0xbbf1ab45,0xbbdf9669,0xbbb35d1f,0xbb97e0cf,0xbb6f3c34,0xbb771996,0xbb1c9407,0x3a89c89a,0x3af77dde,0x3b49e2c1,0x3b67ea69,0x3b8077e1,0x3c14397a,0x3c0dd238,0x3c289716,0x3c559f39,0x3c65eebd,0x3c8b89fb,0x3c65cba4,0x3c6e661e,0x3c3aead6,0x3c385feb,0x3ca5daf1, -0x3c507b87,0x3c362d3b,0x3c15ac17,0x3bdc9c0b,0x3bd271ce,0x3bb2971e,0x3bda53a5,0x3c139e18,0x3c2cbc88,0x3c4321bb,0x3c2d4f09,0x3c16aca8,0x3bedbf60,0x3bc951db,0x3bb7b888,0x3ba1e98a,0x3b796fb3,0x3b7cc918,0x3ae01531,0x3b01780a,0x3b27a3f0,0x3b3f3b34,0x3b8cedd9,0x3be901da,0x3bfcebe3, -0x3c0cb20a,0x3be2d120,0x3c379b98,0x3c3d121b,0x3c5af03c,0x3c831ac4,0x3c5fec77,0x3c81de1b,0x3ca3bef6,0x3c522c18,0x3bc9db13,0x3c08aee2,0x3c1b1227,0x3c15c8c3,0x3c136132,0x3c16fd45,0x3c0e0631,0x3bfbaf16,0x3bd267c7,0x3bb6fc83,0x3ba56243,0x3ba40914,0x3bb2b803,0x3bc23cf5,0x3bcea755, -0x3bd198d7,0x3bd8a259,0x3bdc75bf,0x3be15861,0x3be9ad88,0x3ba35a1f,0x3be452da,0x3c764dad,0x3ba72d13,0x3bd799d7,0x3c812a85,0x3c8b4b51,0x3c893092,0x3c887690,0x3c89f8da,0x3c83a0eb,0x3c830963,0x3c1a0e4a,0x3bebeca7,0x3c84b5fa,0x3c1c7ee4,0x3c77b73c,0x3c79f1d4,0x3c7a70db,0x3c401aa4, -0x3c2052bf,0x3c216660,0x3c18f318,0x3c36cd3a,0x3c3f67f3,0x3c35d8ee,0x3c393407,0x3c355920,0x3c1ede31,0x3c2068f3,0x3c213fe2,0x3c255ad8,0x3c2b5ba0,0x3c35bd0b,0x3c36199b,0x3c39bc75,0x3c2df455,0x3c3d09f5,0x3c3ae254,0x3bc6ccc7,0xbc216372,0x3c55d781,0x3be24c33,0xbc197be5,0xbc0fe725, -0xbc05d2b6,0xbbc2f57f,0xbbf17e03,0xbbdcaaa5,0xbb89353f,0x3bb8cf69,0x3c61768d,0xbbc090a1,0x3b8470d2,0xbb843c6d,0x3c459211,0x3c2ed46b,0x3c3f3109,0x3c2983b1,0x3c90cc8c,0x3ca08fe8,0x3c88e44f,0x3c91b42a,0x3c87e750,0x3c46d653,0x3c389520,0x3c43eef6,0x3c6badea,0x3c77e4cb,0x3c859ca1, -0x3c7f9523,0x3c7761b9,0x3c6e72f8,0x3c7f9565,0x3be7fb11,0x3c21515e,0x3b871b99,0x3c140975,0x3c4673a9,0x3b0ce29c,0x3c045368,0x3bc7d0bf,0x3c13cce7,0x3be26333,0x3c183102,0x3bba7e74,0x3ba152cb,0x3bf91731,0x3c28ee41,0x3bfbf89c,0x3c2bea81,0x3c7dfcea,0x3c143a3e,0x3c2f1233,0x3bfbb299, -0x3c9df85b,0x3cbecc20,0x3c93d868,0x3cb30767,0x3c96c7ef,0x3c39272d,0x3c243372,0x3c291a41,0x3c54021f,0x3c83bd98,0x3c965ed0,0x3c9f30f9,0x3c92e835,0x3c928294,0x3c71cf26,0x3c1ef878,0x3c2c6374,0x3c45df36,0x3c0f3ba9,0x3bc3bb19,0x3c042fc5,0x3b88b3d7,0x3c4abc1e,0x3c5079b7,0x3c0a2dda, -0x3bda0ec9,0x3c13c7d0,0x3bee51fe,0x3c05ec6b,0x3c594f6e,0x3c81a040,0x3b9853dc,0x3b6fedc7,0x3c100b47,0x3c1a2b26,0x3bc1d456,0x3cc6acc2,0x3d03cfad,0x3cb84fde,0x3cf69efb,0x3cc6fa82,0x3c2e2975,0x3c1ac788,0x3c1b865c,0x3c8dd45e,0x3caf09d6,0x3cbdc1f3,0x3cb68a3a,0x3ca98c59,0x3c9f0141, -0x3c8ee3a5,0x3c7aaded,0x3c7e4436,0x3c15eb4e,0x3c1d9c86,0x3bd3df24,0x3b966680,0x3b6fc57f,0x3b4b4dd7,0x3c1aff74,0x3b92f971,0x3b8575c4,0x3c04c897,0x3b081dea,0x3b82c345,0x3ca69fd0,0x3c2c4344,0x3c7b0f25,0x3c4ccb7d,0x3c017f3e,0x3be0370b,0x3a6f320a,0x3cc18ea4,0x3cf60b13,0x3cc55fc2, -0x3cffc446,0x3ccb881e,0x3c1c8cc7,0x3bd00877,0x3bdb1f6d,0x3c44f4c7,0x3ca39448,0x3ccbb7fb,0x3cda625b,0x3cc732f1,0x3cb46463,0x3c8f38bc,0x3c31374f,0x3c5f4dee,0x3c49db88,0x3c215955,0x3be048fb,0x3b36c034,0xba1b4a8f,0x3adfddc0,0x3c0d75c6,0x3b829831,0x3b58582e,0x3bae0330,0x3aca3cc6, -0x3b997f46,0x3c9ed510,0x3c1e2f06,0xbb722dbc,0x3c2fb85e,0x3ca8093b,0x3cdf5d66,0x3d1b09da,0x3d0804c5,0x3d11b789,0x3d12448e,0x3cc573a1,0x3c8218e8,0x3c337aaf,0x3c593fde,0x3c2d550c,0x3b82558c,0x3bc5aac3,0x3bb1210d,0x3b8aa20c,0x3c3a89d8,0x3ca04b2f,0x3cada189,0x3c9a7446,0x3c963cb2, -0x3c26ed1b,0x3c1d1fd8,0x3bd2c690,0x3b11edbb,0x3b9831fe,0x3b217d7e,0xbacff332,0x3aaf8ecf,0x3bb96ef0,0x3c360ed5,0x3c525a1a,0x3c180fff,0xbbe6ec1c,0x3b8d8f57,0x3ba96f00,0x3d118033,0x3b935075,0xbb859c43,0xbbac2155,0xbbea6129,0xbbd0b964,0x3c32c80c,0x3c1fa4e5,0x3c3f5b0e,0x3c11f7b7, -0x3bb3862f,0x3b09c821,0x3b44610e,0x3bce8bd7,0x3c48494d,0x3ccfc5f4,0x3ca51355,0x3c8f3cda,0x3c3ea489,0x3a491722,0x3bb7b07f,0x3bdddfe6,0x3bd8edb9,0x3bbd58e5,0x3b3e0a6f,0xb95950b4,0xb84dcfbc,0x390d46ba,0x3ae662ac,0x3a5a9e88,0xba8f3e00,0x38a6aac5,0x3b1b67f8,0x3b8f1a62,0xbad6ada9, -0x3bff5fa4,0x3c8a5ee7,0x3b53e232,0x3bfd99ee,0x3c91fa7d,0x3ccfc471,0x3d0875d8,0x3d1c707e,0x3cac1db5,0x3c2a7b20,0x3c1544ed,0x3c3375a7,0x3c7572f1,0x3cb5d075,0x3c848ace,0x3c4b3898,0x3c22583b,0x3c23f047,0x3c36107d,0x3c903ba9,0x3be7ea6c,0x3b56bde8,0x3c026738,0x3be1b2b7,0x3ba0b0c8, -0x3a98f584,0x3b33c036,0xba78dc30,0x3a1d64fb,0xb968a2eb,0xba842367,0xbb1db286,0xbb49eb6c,0xbbb5924b,0xbb6ab0b3,0xb9788e6c,0xbc4a3743,0xbc060335,0x3c14c459,0x3ca68104,0x3d2959ea,0x3d3fd4da,0x3d4d7713,0x3ce9525c,0x3cc9ff23,0x3c7d34da,0x3c4f725e,0x3c72aa5b,0x3c8a6c2b,0x3cb759fc, -0x3c7d609e,0x3c2978ad,0x3bc5c7c7,0x3c038397,0x3c2bb6e8,0x3c6adeea,0x3c0434a2,0x3b2452a5,0x3bc2dd8f,0x3b90ae79,0x3b718400,0x3ac3d036,0x3af10d22,0x3a10874a,0x3a66caad,0xbb43ccc3,0xbbaaffbb,0xbb628c61,0xbbcf9c5a,0xbc25301b,0xbc90acfb,0xbc2f8b5d,0xbcce7180,0x3b74d940,0x3cc6ff55, -0x3d06e45c,0x3d0c9729,0x3cb5ca48,0x3c3282d6,0xbb4af26b,0x3b9d0ba6,0x3b83a277,0x3c05e1ee,0x3b206dfe,0x3ab6f796,0x3a6cbe92,0x3ba0dc2e,0x3c13df73,0x3c24ffc4,0x3c4108af,0x3c1b4964,0x3c08a29a,0x3b23fb9c,0x3b214db4,0x3aba66c9,0x3b0b9688,0x3b1ce84c,0x3b84f39e,0x3a158839,0x3a4c9584, -0x3a78f065,0x3a03cf01,0xbb0da5bd,0xbaec37b7,0xbb1354fc,0xbb831851,0xbc8e39c8,0xbcabd70b,0xbc11b4f9,0xbcdb6ed4,0xbc00d627,0xbbf4b237,0x3c75a421,0x3cc5921a,0x3d018939,0x3cbf4940,0x3c95283a,0x3c8aef4a,0x3cb1229c,0x3c2a91de,0x3be8fa74,0x3c1dc7c2,0x3afa767b,0xbb3a97af,0xbb8c24b2, -0x3acbda8f,0x3b9200b4,0x3c0c34b1,0x3b084f2c,0x3aa46b68,0x3bb98ab5,0x3b172dba,0x3a4c1284,0xb9a3f903,0x3b4965ba,0x3b5b6cde,0x39c8ee41,0xbb78dd69,0xbb444aa2,0xbb9f206f,0xbb66ab2c,0xb997193f,0x3bd83655,0x3ab22025,0x3ca26cb7,0x3d187635,0x3cf1b9c6,0x3c8ecf27,0x3b2b3b2b,0xbbe22962, -0xbc1e1034,0xbb60ddaf,0xbbc01cff,0xbbd05ee2,0xbbfd3172,0xba7d7c32,0x3b23edd4,0x3b37028e,0x3b832e0b,0x3b8d60d6,0x3ae6a2ea,0x3a35344a,0xb972ce56,0xbb0396a5,0xbb81be67,0xba8228ae,0x3b028e3b,0x3b5ec379,0x3bd1b4b6,0x3bf95807,0x3bf79a2b,0x3c1678f8,0x3c2e2e4f,0x3c854826,0x3c9af132, -0x3ca95838,0x3ca1a0d3,0x3ca8efc4,0x3ce596bb,0x3cea09ba,0x3ce386ab,0x3cd896df,0x3cc77405,0x3c87aaf6,0x3c0abbba,0x3b20dd5c,0xbb0de3ef,0xbb4dadfb,0xbbe2f05a,0xbc04af39,0xbc44ea59,0xbbfe30c4,0xbbe19b5e,0xbbb23c7b,0xbba3f73d,0xbbefe6df,0xbbe6e8f1,0xbbb521a1,0xbb7dda47,0xbac38050, -0xb9f023b9,0xba4a561e,0x3b437843,0x3b8beded,0x3bb515ab,0x3bddd5a5,0x3c1a5927,0x3c313829,0x3c54adfb,0x3c8c8cdf,0x3c9e347c,0x3cb893d3,0x3cb5eba3,0x3cc6ce76,0x3cd12907,0x3cdd6e4f,0x3c888eb3,0x3cae7a55,0x3c8cdf3c,0x3c8bbdb8,0x3c91133c,0x3c617fa8,0x3c0fc14f,0x3b27696d,0x39eafcef, -0xbb0d3d43,0xbbe703e7,0xbbfb07c0,0xbc31b4fd,0xbc3d1e95,0xbc2d96d6,0xbc24d9b2,0xbc057421,0xbbafa89d,0xbb8c740f,0xba32ffde,0x3b321735,0x3b1e8da4,0x3bbc080f,0x3bbada3b,0x3bee499a,0x3c207950,0x3c1beb91,0x3c7a82b0,0x3c83d36a,0x3c896531,0x3c91376f,0x3c9ec5ba,0x3cb28da7,0x3c9241d7, -0x3caf6284,0x3c9ee76f,0x3c446597,0x3c6774f3,0x3c7d5e15,0x3c6a9a9a,0x3c466ca0,0x3c74b0f3,0x3c87bb83,0x3ca43625,0x3c89adb2,0x3c5f1ad7,0x3c425082,0x3c167f94,0x3bed0f96,0x3b72cc02,0x3b945942,0x3b9f05c3,0x3b79285b,0x3b5b2d02,0x3b1709cd,0x3b52ddff,0x3b794f60,0x3bb14f33,0x3bd259a2, -0x3c07cad7,0x3c11ac97,0x3c16da8b,0x3c3aa211,0x3c4e3f8d,0x3c4458b8,0x3c77ae7a,0x3c78f188,0x3c811fd0,0x3c8fdf8c,0x3c6f51bc,0x3c4a1b5c,0x3c9abba7,0x3c7a096e,0x3c4e1e22,0x3c477ec8,0x3c4d03e5,0x3c4e8205,0x3c4f278c,0x3c39a2a6,0x3c311776,0x3c1e4e7d,0x3c19aaa8,0x3c0c441b,0x3bf96d4a, -0x3be2296a,0x3bc9c654,0x3bdc2665,0x3be2e6bc,0x3bf6c30c,0x3c074974,0x3c0c4ac3,0x3c0f504d,0x3c4b5cf4,0x3c3a11ad,0x3bc6af24,0x3c5fe414,0x3c46899a,0x3bc176b4,0x3bc52e47,0x3be0d2b4,0x3bfe6233,0x3c025327,0x3c0d6d9c,0x3c24ad36,0x3c69d422,0x3c767077,0x3c0b8740,0x3c4c5583,0x3c9e404f, -0xbbe541ed,0xbbe8c9df,0xbc13e181,0xbbb0d0ec,0xbbbd03e9,0xbbb760fe,0xbbd024b3,0xbbdeba98,0xbbeec390,0xbbd9dfa8,0xbbde8766,0xbbf6efb6,0xbbea8153,0xbbe7e669,0xbbeae898,0xbbdbdc34,0xbbdc73a0,0xbbd99519,0xbbd44ff4,0xbbadbc3e,0xbbdaac9b,0xbaa9c004,0x3baf76e1,0x3c9b23e5,0xbba05fe8, -0x3b7d7875,0x3c94eefd,0x3c9394f8,0x3c8eda46,0x3c80a42b,0x3c91cecb,0x3c88b07f,0x3c710dfb,0x3baae4b4,0xbbc44ba6,0x3c8ab644,0x3c0188db,0x3c8eac7f,0xbbec64cf,0xbbdae739,0xbbd90ecb,0xbbc25fee,0xbc08d9d3,0xbc26bc8e,0xbc4ff7cc,0xbc2da27f,0xbc405517,0xbc5c5184,0xbc5a94d1,0xbc55d0be, -0xbc4ea79f,0xbc2df8f5,0xbc2116b9,0xbc156195,0xbbf8821f,0xbbd32704,0xbbe54735,0x3c0b84bf,0x3b5c5adb,0x3bd8d8d9,0x3b36b0f0,0xbb8fb8da,0x3bb1abd8,0x39506484,0x3ba0b8bc,0x3b5868a1,0x3b61a7d3,0xbba21a1e,0x3b9a0cc4,0x3b2a0079,0x3af16fa6,0x3c0d88fa,0x3b8250f5,0x3b507405,0xbc308c31, -0xbbaa4557,0xbbda1acc,0xbba6c73b,0xbc24f6fd,0xbc459c3f,0xbc85af26,0xbc4daddc,0xbc5fcf4d,0xbc94f5be,0xbc8c7bb6,0xbc8ebeda,0xbc81b283,0xbc65a2de,0xbc492895,0xbc4e88b2,0xbc0bd646,0xbc0b338f,0x396de8f2,0x3c350558,0x3bbc2cc5,0x38c952d7,0x3b6c2c46,0x3b3783cf,0xba8e178c,0x3b0603cd, -0xbbe9da3c,0x3b762754,0xbaebb82e,0x3b15abf7,0x3a72f79a,0xbb065676,0x396c5eb0,0x3c34608d,0xbba6fb0d,0x3be5e7da,0xbb13ee20,0xbc06c5d6,0xbb89910b,0xbba41d58,0xbc1d0c24,0xbc80cafb,0xbcbff27b,0xbc92dc1f,0xbca37585,0xbcd3b208,0xbcd5d46e,0xbccc660e,0xbcc3f4ac,0xbc9dbc06,0xbc7f221e, -0xbc634791,0xbc1c72de,0xbbd15e88,0x39ab2e92,0x3bf618a6,0x3b5b0353,0x3bd5f6f8,0x3a968ac1,0x3b743294,0xba8acb01,0x3a76319c,0x3b4ab64a,0x3c06c8b5,0x3ab480aa,0x3b1bcab3,0x3b643edd,0x3ad8855f,0x3b27712b,0x3c58c08b,0x3b957a2c,0xbb9b268e,0xbb87ea84,0xbb9a1543,0xbbb0892a,0xbb4f52dd, -0xbc4b843f,0xbc848c07,0xbcc2717b,0xbc9598fe,0xbc9f5fdd,0xbce6fbde,0xbcdb1d6f,0xbce50a7c,0xbcc5129e,0xbcb03c25,0xbc97c27c,0xbc952d14,0xbc472497,0xbbefd59c,0x3b308f57,0x3c92544e,0x3c0b5380,0x3bf9b1ad,0x3ba8963a,0x3b5ef94e,0x3b5efd4a,0xbaa51bef,0x3a983db1,0x3bf18ce3,0x3b88ab39, -0x3b13bbc8,0x3bd71e1f,0xbae64eab,0xb93cfec9,0x3c757a98,0x3bb9f3e3,0xbb54c327,0xbc50015f,0xbca8b603,0xbc26ffd1,0x3b859971,0xbc2d4a2d,0xbc95e2c0,0xbcbb0c31,0xbc980a8d,0xbc7671f0,0xbcbcf813,0xbc51c1d4,0xbbf13c34,0xbb2adfac,0xbb9ca570,0xbbb41073,0xbc027b27,0xbc0dc624,0xbc116df9, -0xbb08211f,0x3c26a06d,0x3bc8dc8f,0x3bfa0db6,0x3b9f0542,0x3bc51c5a,0x3ad4a3b3,0x3b8a9a1d,0x3b323f7f,0xbb03fd23,0xbab64426,0x3b732285,0x3c1c133e,0x3c28c9c5,0x3b99bbbf,0xba910560,0xbc70e4fd,0xbbd6e9aa,0x3c83e67c,0xbc0e2b62,0xbc655cda,0xbbed4de5,0xbcaf50e2,0xbc7abfc8,0x3bfda18e, -0xbae83494,0xbb577303,0x3ae0ee34,0x3b5e25e1,0x391f3a25,0xbb803ace,0xbc497e9c,0xbc8fcb84,0xbce32095,0xbc79f49a,0xbc45700d,0x3b5c5a29,0x3c1636e9,0x3b288a10,0x3b9081ee,0x3b041efe,0x3ad2c3e9,0x3b1f949b,0xba7973ef,0xbaa5e174,0x39638cfe,0x3b02e571,0x3a9dddc1,0xbb050d9d,0x3a83b17e, -0xbb5babaf,0xbb9a1262,0xbc2bbad8,0x38c047e3,0x3b91bb8a,0xbbb29b34,0xbc4c8f57,0xbcc62678,0xbcf28784,0xbceba209,0xbcb8f0a0,0xbc8dec6b,0xbc3abea0,0xbbdc72e0,0xbc81f259,0xbcac88dc,0xbc9e06a5,0xbc9ba859,0xbc70253c,0xbc0bfdaf,0xbb80bd93,0xbb07a41c,0x3b27d74d,0x39eff5b0,0x3a09e178, -0x3bca83f2,0x3ad042cd,0x3a6f1229,0x3aeaf72b,0x3aa25ddf,0x3997cfdd,0xba49bd79,0xbacf17fc,0xbb12d705,0xbb3db45c,0xbc0a0a49,0xbc0af7dd,0xbbcffe21,0x380166af,0xbbe0fb71,0xbbd2ad49,0xbc0bf463,0xbc8e8efc,0xbd32ff04,0xbd0ab776,0xbd1073c4,0xbd0235c5,0xbcbd0455,0xbc9a8a69,0xbc721b01, -0xbcdd056a,0xbce433ab,0xbcbc796b,0xbc99696e,0xbc4c230f,0xbbbb057b,0xba6d0cee,0xbac31a8a,0x3bbbc11a,0x3ab96ea6,0xb7cb53f5,0x3b1b8c35,0x3b5da4b4,0x3a8dfa11,0x3aa020e3,0x39aff161,0xb9e9ed46,0xba4f6337,0xbb7bfddb,0xbbc7201a,0xbb91a6f6,0xbbeaf738,0xbc4150d4,0xbc7cb92b,0xbc603865, -0xbc71b466,0xbb18f0f8,0xbca37533,0xbcf04847,0xbd759fa6,0xbd4f9be8,0xbd27b840,0xbc88244e,0xbc517054,0xbbf66926,0xbbd43afe,0xbc150343,0xbc2e3c14,0xbb740762,0xbc0f340c,0xbc289783,0xbc76e768,0xbc18e5f9,0xbb9d05fb,0x396fc625,0x3ad9453f,0x3a054ee9,0x3a4667e5,0xb9ea0f17,0x3a8ef3d2, -0x3b1ec52f,0xb9c2366d,0xba199cb6,0x39de1dc6,0x3a1b7feb,0xbafdc954,0xbb134d20,0xbb61f652,0xbc358cfa,0xbc47da8a,0xbcaaf7bb,0xbc771760,0xbd4767a8,0xbda1eef9,0xbd8de855,0xbd2a3d1d,0xbd18c231,0xbd04aeb5,0xbceba205,0xbcb32922,0xbca29bee,0xbccaeda1,0xbc93522b,0xbca49959,0xbc8fe447, -0xbc3ba12a,0xbbe2c4f3,0xbb89b654,0x3b879be3,0x3b3e18f9,0xbaaf9b11,0xba490c57,0xbb179770,0x3b883dfd,0x3ad17d58,0x39c694b8,0xb9db32c7,0x3b1f27ab,0x3b0164e9,0xbb49c7c3,0xbc01b84d,0xbc21d5a5,0xbc148028,0xbc6c6f9e,0xbaf8af08,0xbb01e407,0xbc5410bd,0x3d092a92,0x3b56b7fc,0xbc341b66, -0xbc9e061a,0xbd0cd410,0xbd124323,0xbd0aefa3,0xbd027f70,0xbc936410,0xbc17b0e4,0xbc1d94ef,0xbc027fd2,0xbc105b2f,0xbc0bdccd,0xbc199f2a,0xbc1055ec,0xbc282efb,0xbc03cc1d,0xbbb435e3,0x3ab849cf,0xbafb8714,0xbb6e67d8,0xba5bf68d,0xb814fa0e,0x3b23d99b,0x3b782636,0x3b40f8ef,0x3bcbc91d, -0x3bd1d1dd,0x3c5b75fb,0x3c620fbd,0x3c8126db,0x3c858bbd,0x3c4c1705,0x3c95397c,0x3c461949,0x3cb9646c,0x3c81ea10,0xbad45e70,0xbba30f0e,0xbc49b7b0,0xbc976e9c,0xbcd4e38c,0xbd0825fb,0xbcda91ad,0xbcbf7892,0xbcba2a01,0xbc9fde13,0xbc92ed42,0xbc7886b3,0xbc7f7e86,0xbc73b251,0xbc6dd8d9, -0xbc57f502,0xbc355e50,0xbc14a02a,0xbb7e8391,0xba0bc3fd,0xb94517a5,0x3b88fd57,0x3ba5de13,0x3bd2dd7a,0x3c1c2593,0x3c3fd43a,0x3c45cae1,0x3c66833c,0x3c866af4,0x3c9f8b15,0x3c91bd7f,0x3caa1ac9,0x3cd039cc,0x3cc9a830,0x3c8c2507,0x3c061cb8,0x3bb0dfcb,0x3ae19cf3,0xbb273a31,0xbc0e9f97, -0xbc6e3df7,0xbcb4cca9,0xbcb8abcb,0xbcbd932c,0xbccdbf6a,0xbc9d5d2c,0xbc8d37e1,0xbc5b316c,0xbc58d5a2,0xbc5f9145,0xbc58a541,0xbc334457,0xbc52bdba,0xbc071f91,0xbbaa517d,0xba8d7aec,0xb9ae6b7f,0x3b06d55c,0x3b7b26bd,0x3bb863d8,0x3c0de819,0x3b6f02ab,0x3c56ec13,0x3c119e4d,0x3c7333cb, -0x3c691122,0x3c668e0b,0x3c99af61,0x3c77e724,0x3c39c41e,0x3c88e5ce,0x3aaa259d,0x3a063b11,0xbaf8265d,0xbb79fd96,0xbb7ccb4e,0xbb95f451,0xbbae89f2,0xbb2ddb25,0xbadd57d1,0xb9b08303,0xbac611ae,0xbb1af5f9,0xbb64ac3a,0xbb19848e,0xba45abfb,0xb959f0d0,0x3a26eb9f,0x3b31d0fb,0x39f063e7, -0x3b434cbf,0x39df9011,0x3a78d719,0x397cdb59,0x3ad26ce5,0x3a1c2e3a,0x3b57e31d,0x3b4b5053,0x3bfd9596,0x3bff6b86,0x3b9acc66,0x3c7952f3,0x3c0c831b,0x3c154c01,0x3c8368a9,0x3b3f87e9,0x3b2acd09,0xbaefed32,0xb8ecbe26,0xba80cf69,0xbae87a69,0xbb2bcd89,0xbb79bafa,0xbbae075c,0xbbbfa13d, -0xbbc9f027,0xbbc9dc02,0xbbbbcd07,0xbb9f39ad,0xbb8e591f,0xbb82f4b0,0xbb853abe,0xbb842593,0xbb7c1514,0xbb60c370,0xbb6d876b,0xb5e2c5a8,0x3bdf2021,0x3c8212a7,0x39b85440,0x3be54fa4,0x3c912873,0x3c9f8d9e,0x3c947793,0x3c8ff5c2,0x3c9f4d6f,0x3c9a54f4,0x3c8cb111,0x3c01d917,0x3b00af0e, -0x3c911a15,0x3c31c0c2,0xba7f331e,0x3c6521e4,0x3c1a7035,0x3c8205ab,0x3c281318,0x3c21b6ec,0x3c17bd6c,0x3c2d4ec5,0x3c353ea1,0x3c31c43e,0x3c36afdf,0x3c358d65,0x3c245a52,0x3c2546c4,0x3c2721e1,0x3c277575,0x3c31dc80,0x3c3b56fe,0x3c39751b,0x3c3d8d5a,0x3c2dd6bc,0x3c540d80,0x3b63e273, -0xbb6a245f,0xbc5796ec,0x3bd34fec,0xbb4b76e0,0xbc5fa87e,0xbc5d94aa,0xbc4c7ea6,0xbc2822a6,0xbc63171b,0xbc5a9e76,0xbc3398dd,0xbbaa15cd,0x3bf913bc,0xbc229774,0xbbdd9021,0xbc7caa91,0x3c2d4f92,0x3c491acc,0x3c3b15a4,0x3c1b5c92,0x3c6bdbe0,0x3c8307e4,0x3c7b1277,0x3c855561,0x3c81a5d2, -0x3c4ace13,0x3c373f57,0x3c37f230,0x3c49d9de,0x3c674e83,0x3c81b3e4,0x3c7a3797,0x3c6e6d25,0x3c7477c0,0x3c93a78c,0xba5a4e49,0x3ba3659d,0x396fc929,0x3a15fd07,0x3bfb733e,0xba52374a,0x3b7b04b3,0xba333552,0x3b6d5c92,0x3a9cba00,0x3c388c5a,0x3ad32fcf,0xb8b48f77,0x3b256ae7,0x3b81a746, -0x3b7d8c8c,0x3a1d2240,0x3ca08602,0x3c4002b9,0x3c20799e,0x3bd04326,0x3c609179,0x3c82b93b,0x3c711ce0,0x3c94d28d,0x3c8795ec,0x3c377a6f,0x3c239aee,0x3c20cb08,0x3c2d3063,0x3c7f0e24,0x3c8e2a36,0x3c99328a,0x3c8431a6,0x3c9f2a0f,0x3c48da3f,0xbaccfa98,0x3bbd5f7e,0x3bc88429,0x3b056031, -0x3b39b8f8,0x3b6e155b,0x3b36ce5e,0x3c60c0a4,0x3b7a1b3f,0x3c08e6fb,0x3aae6813,0x3be57f2e,0x3b912ec6,0x3b8ec1bf,0x3bd4abdb,0x3c68c5b9,0xbb8365f6,0x3b8cbe1b,0x3c7017e4,0x3c148ba7,0x3b9de555,0x3c7cd673,0x3ca75030,0x3c984fb0,0x3cc676f9,0x3cae05eb,0x3c49a22d,0x3c0e1f5c,0x3bf2d8d8, -0x3c216f90,0x3c932ca2,0x3cabb346,0x3ca7e1d6,0x3ca02d01,0x3cac9c5b,0x3c90df58,0x3c2d5719,0x3c81a454,0x3ba156d3,0x3c23ba8f,0x3b585e71,0x3bc4b3b4,0x3a21f219,0x3b6ba086,0x3c00d441,0x3bda1fd8,0x3b4ecd3c,0x3c018a2a,0xbae68134,0x3b3daabb,0x3c8c5596,0x3c30a85c,0x3c7e11f0,0x3c74687d, -0x3c88311f,0x3b9f1dee,0x38a54e7b,0x3c4053fe,0x3c8274c4,0x3c843500,0x3cba5e1f,0x3caaaacf,0x3c335b23,0x3bf229b4,0x3bcf6d8a,0x3c0805a1,0x3c94d0c5,0x3cb9ac79,0x3cc71fc7,0x3cad6218,0x3cb9f6a3,0x3c9dc535,0xba3a8d2a,0x3c6066cb,0x3be196fe,0x3c09b61f,0x3c068f42,0x3b615c85,0x3b336406, -0x3b5137f8,0x3c2c7717,0x3b8743af,0x3ba28d4f,0x3bce51b6,0x3af95e09,0x3ba7816c,0x3ca3b4ba,0x3bce5ae1,0xbc8377d9,0xbafe771b,0x3cc0ac00,0x3cf09a4f,0x3d39834e,0x3cfd8e4a,0x3ceb8b85,0x3cce6d03,0x3cffe94d,0x3cddffe6,0x3c55ecc1,0x3cc3f22e,0x3ca81098,0x3c10e1c8,0x3c0d4413,0x3be80976, -0x3c712958,0x3c6b59ee,0x3c98ecb8,0x3ca0e68c,0x3c23ac82,0x3c86b836,0x3bec4ad7,0x3c3801c7,0x3bb4dd45,0x3b551e9c,0x3b8c4149,0x3b2b474b,0xbaf9d701,0x3a8c1c2c,0x3bd846ee,0x3c364e5d,0x3c5940a2,0x3b8d1b84,0xbc8bb79b,0xbbb45f03,0x3b31ba9b,0x3d176a7c,0x3c4b3304,0xbb5661d2,0xbbc44743, -0xbbf60c5f,0xbbc1f163,0x3c13576a,0x3bc92531,0x3bf37cad,0x3c425249,0x3bc1c4ec,0x3b41d0ab,0x3ba4cb78,0x3bf8e12d,0x3c47335e,0x3ca8376f,0x3c6d23c7,0x3c8933c4,0x3bdb3441,0xbaf96677,0x3bab0766,0x3bd07a7e,0x3bd25f68,0x3bb502d7,0x3b91dd58,0x3a41bd85,0x39f6daca,0x3af426ab,0x3b690ebc, -0x3b44bf09,0x39dea080,0xbb091074,0xb989a7ab,0x3b99b23c,0xbba40cd7,0x3ae01df7,0x3c48f904,0x3aa24e68,0x3ad0ad1c,0x3bedd8eb,0x3c3af2b5,0x3c9db709,0x3cf9fb22,0x3cd01e8d,0x3ca805b8,0x3c878414,0x3c835037,0x3c7e2236,0x3ca2116a,0x3c8fc607,0x3c628ddd,0x3c0e854f,0x3c23584b,0x3c521272, -0x3c5c6def,0x3b9721e1,0x3b574a98,0x3b7d86fa,0x3bfa97bd,0x3b6640c2,0x3af65068,0x3b32c8dd,0x3b090ac1,0x3a805b36,0x39f724b6,0xba54a3ae,0xbab44993,0xbbb27d8a,0xbbe94231,0xbb01958e,0xbbbfd519,0xbc2d4259,0xbb375758,0x3bb76ff8,0x3c23691d,0x3cdb62e6,0x3ce93f71,0x3d040432,0x3cd6eaff, -0x3cb5f05e,0x3c724e37,0x3c35c1a4,0x3c4cc2d7,0x3c523655,0x3c9c6e9b,0x3c8b3caa,0x3c651be2,0x3c06caee,0x3c226f3d,0x3c60f4f2,0x3c088168,0x3b92e83b,0x3b7bc252,0x3bc6dc0a,0x3b61c5d2,0x3b9b110e,0x3a6f0e38,0x3b4eaee1,0x3a87d045,0xba2db391,0xba8319a2,0xbb85de67,0xb90c47ef,0xbc078818, -0xbbfb0447,0xbc6828da,0xbbb92eef,0xbc68aef5,0x3b83b944,0x3c3d7988,0x3c5aaf4b,0x3cc1cf34,0x3c2e68ea,0x3b4eea1f,0xba095d15,0xbb64769a,0xbbc701fe,0x3af7a881,0xbb938e9f,0xbb023fe9,0x3a98669f,0x3bedee0e,0x3c2bfcce,0x3c4d0c6d,0x3c540d43,0x3c3f3243,0x3b908a4f,0x3b9d837e,0x3bdb524d, -0x3b1fe5c3,0x3b820cb8,0x3b56c29e,0x3b91e22b,0x3a545dd5,0x3a93c00a,0x3b07607b,0x3b048e88,0xba8b7c14,0x3aab8abb,0xbb125199,0xbbc18846,0xbc64298b,0xbc89c0de,0xbd219ba7,0xbd4eff06,0xbc0f394e,0xbc4318b0,0x3c0b2364,0x3c00c721,0x3c6b3a5e,0x3c70541e,0x3c4da615,0x3c3c97e7,0x3bcec9c5, -0x3be78a47,0x3bb3ee29,0x3b23e16b,0xbabda359,0xbb3dc74d,0xba98ab9a,0x3b095324,0x3bc48e27,0x3c147d3e,0xbb0a342d,0xba944147,0x3bbd78a0,0x3a813f65,0x3ab03536,0x3aa085e0,0x3b41687d,0x3b2efbf9,0xbb163074,0xbc087eea,0xbbf144d2,0xbc23f80a,0xbc5de976,0xbc6cdcaa,0xbc269369,0xbc260f9d, -0x39615c28,0x3c374c23,0x3b805aa0,0xbb4d65f6,0xbbd70c08,0xbb954864,0xba3e6e56,0x3bb07861,0x3a621323,0xbabbb16f,0xbbc19dc3,0xba7c0c17,0x399a3cd1,0x3a20de80,0x3ae688cf,0x3b8e0299,0x3b90d4c0,0x3b9f4d1a,0x3b786645,0xbb1444c0,0xba116669,0x3b66bab2,0x3afab426,0x3b9350a4,0x3ba99364, -0x3b39767b,0x3bd9e941,0x3bef190e,0x3c14027a,0x3c4f13b5,0x3c699c62,0x3c7746e3,0x3c473782,0x3c4f489a,0x3c527941,0x3c3139de,0x3c63db70,0x3c66ef9c,0x3c45c75b,0x3ba18825,0xbb0f0afb,0xbb8c87d6,0xbbdb6f38,0xbbd10cda,0xbc017aeb,0xbc0a2be5,0xbc37c2d2,0xbc130e2c,0xbc0f2225,0xbbfda699, -0xbbf4a5ee,0xbc06b0a6,0xbbebec8b,0xbbb0a2b5,0xbb31e259,0xbb1bdfbd,0xbbbac30f,0xbb5e9d0d,0x3b15bbea,0x3b388f0d,0x3bcf7c9d,0x3bfa9f45,0x3c06f63d,0x3c1c2efb,0x3c3c8941,0x3c630430,0x3c7e1382,0x3c90b53f,0x3c92e2e7,0x3c9b8711,0x3c92365b,0x3c93a60e,0x3c2f59b7,0x3c8848bc,0x3c55ed90, -0x3c0ec012,0x3bd981f1,0x3aefdf32,0xbb5c9c86,0xbc1a7c66,0xbc21cdcc,0xbc1bf303,0xbc3ce0eb,0xbc2883d1,0xbc4535d5,0xbc49455e,0xbc30912a,0xbc2eda70,0xbc101cb3,0xbbe770fe,0xbb90629d,0xbb6deac7,0xbb15d056,0xb8954605,0x3b2c04c1,0x3b708909,0x3baec338,0x3bf21279,0x3bfd64a6,0x3c5a9707, -0x3c0999dd,0x3c676ee0,0x3c4a05e3,0x3c80c987,0x3c866dab,0x3c67b249,0x3c91299b,0x3c81d5cd,0x398377d6,0x3baa8d18,0x3ba94a9f,0x3bab2c77,0x3b951236,0x3bebd734,0x3c13db5f,0x3c36979c,0x3c1e2f5d,0x3bd2375e,0x3b98c2c4,0x3b0c9985,0x399277a7,0xbb4d2b5e,0xba8791e9,0x3a47643b,0x3aceccf1, -0x3b3411dc,0x3b6fc5cb,0x3b9e34f6,0x3a4a061e,0x3a90d2b5,0xb8a9e85c,0x3a245bf0,0xba3ad478,0xbaaa750c,0xb95bb3e0,0x3a809da7,0x3aabaf38,0x3b8401a9,0x3bea69b2,0x3b9be169,0x3bc50a2d,0x3b75ccf5,0x3a0b9191,0x3bd0409a,0x3b5cc9af,0x3bcf48e1,0x3baf9270,0x3ba81a4c,0x3b946f48,0x3b7dfb58, -0x3b18e334,0x3ab15277,0x3a3ba3cd,0x3a837074,0x3a73fbbf,0x3a1abf43,0x3a031c9a,0x390e2785,0x3a5791e7,0x3a6affae,0x3a91c4bd,0x3adadaf5,0x3b032233,0x3b66802a,0x3ad633f9,0xbaf05a76,0xbb8b6ab9,0x3b216ec9,0xbaa2548e,0xbb94ab8e,0xbb9beb8f,0xbb63794e,0xbb24a0b1,0xbb50c3a3,0xbb288c99, -0xba4e129a,0x3ab841a4,0x3b939440,0xba689582,0xb99ec12a,0x3ba18a50,0xb9de4b6f,0x3b273b5b,0xbbe238fe,0xbae7ad88,0xbadea833,0xbacc4167,0xbacf81a2,0xbaf4b732,0xbb275655,0xbb0c4aea,0xbb1bd899,0xbb5a4754,0xbb48256b,0xbb4544ca,0xbb4e454b,0xbb349bcc,0xbb296a60,0xbb1dda7c,0xbb11fc6a, -0xbaa42b47,0xbb40d7a4,0x3bf8ce23,0x3c5036b0,0x3c78e9ee,0x3b8529b3,0x3c432db9,0x3c80b83b,0x3c835f25,0x3c7b4d51,0x3c67b8db,0x3c8df6ba,0x3c895046,0x3c80634e,0x3c5be151,0x3b4ba2eb,0x3c77c293,0x3c7c12a5,0x3cc1d5e9,0x39f2ce55,0xbaf90b59,0xba4917c8,0xb9d899f1,0xb99ab984,0xba94c531, -0xbb85d344,0xbb3bf868,0xbb86ac2a,0xbbc7089a,0xbbca69a1,0xbbc97a94,0xbbb9bc27,0xbb8d14d0,0xbb606791,0xbb470d08,0xbad5109b,0xbabda016,0xbb2e6b34,0x3c638e1f,0x3c0175ce,0x3c09aa36,0x3c24585d,0x3b2aaeaa,0x3bf2b8d7,0x3bc6ae74,0x3c324608,0x3bfed78a,0x3c149c04,0xbb1c85da,0x3c008a6f, -0x3bece4d9,0x3be450d4,0x3c55e25d,0x3c0e7e8c,0x3c793299,0xbbafd04b,0xbabb5548,0x37da589d,0x3a21a109,0x3a73f79e,0x39c39625,0xbbabf2f4,0xbb1d6ba9,0xbb929bcd,0xbc1c258d,0xbc112b76,0xbc194c70,0xbc09fa6f,0xbbdd3d61,0xbb980a00,0xbb96f3ba,0xba4b1b16,0xbb454532,0x3bee13b2,0x3c99aeec, -0x3c1e698a,0x3bd19a35,0x3c0de697,0x3bb8a9f1,0x3b96943d,0x3ba3b84d,0xbb1f5765,0x3c2f445c,0x3afe57e3,0x3c06d2e7,0x3b6f2857,0x3b19616f,0x3ba56cee,0x3c7e3539,0x3b2377dd,0x3c9d8dc3,0x3badf45f,0xbb67aa89,0x3b4b987e,0x3a8a93e7,0x3b6d378f,0x3a8d8d53,0xbbf58835,0xbb7e8813,0xbbf2702a, -0xbc5a1cd0,0xbc623681,0xbc628f94,0xbc4a8b49,0xbc104669,0xbbb7454e,0xbb975407,0xbaba70ad,0xba94a0ef,0x3bd3ef92,0x3c448c27,0x3b797f99,0x3be66e81,0x3ac25526,0x3bcf2bc9,0xba30de3e,0x3bb36c1b,0x3b822b6a,0x3bfc24cf,0x3aaa0da1,0x3b8eafab,0x3b80ac95,0x3ba33eb1,0x3b88f441,0x3c74c11e, -0x3c10cefe,0x3bdf3f91,0x3b7e6f89,0xbb6f1f74,0x3b21aae7,0x3ab208ca,0x3b8fc351,0x3b71ed18,0xbbd676ec,0xbb1a8312,0xbbc5ba91,0xbc8c724a,0xbc7e5721,0xbc8c459e,0xbc67bc8b,0xbc2d6806,0xbbeeb526,0xbbcbdec4,0xba85049d,0x396264c2,0x3c0f750a,0x3ccd2787,0x3c13ced7,0x3c12d9a3,0x3baf2ef1, -0x3b63dfce,0x3b5589f5,0xbacb3b02,0x3b089eed,0x3bf98d29,0x3ba9d5e6,0x3b22251b,0x3bbea57b,0xbaa94332,0x3ab1d1e0,0x3c81200a,0x3c6ce94b,0x3bbcaf3b,0x3b5a9a0a,0xbc36c13c,0x3b716a22,0x3c96bc57,0x3a795118,0xbbd07422,0xbc361632,0xbc0e88fa,0xbc1b605b,0xbcc2cacf,0xbc1038e0,0xbbaecb34, -0xbc148077,0xbbc45a73,0xbb980b51,0xbc2d1a85,0xbc0e4d30,0xbbee27b5,0x3ba45194,0x3c482676,0x3b2f1f61,0x3c18e185,0x3bafc027,0x3c145d8e,0x3b12651e,0x3b968b50,0x3afc42ff,0xbb5e655e,0x3a13069e,0x3bf4f3ca,0x3c5dd667,0x3c42f676,0x3bf40185,0xbb01fde3,0xbbdfa20c,0x3baed544,0x3c216ec5, -0xbc86cbfa,0xbc50dfd4,0xbbf32f4e,0xbbd8590f,0xba95a84e,0x3c2530a3,0x3b87f985,0x3a985913,0x3b186b23,0x3bec09a9,0x3bc4434a,0x3b5f8164,0xbaed710b,0xbbb2a672,0xbc2eff71,0xba6b891c,0xbb5f0b8c,0x3c09841c,0x3c504c6f,0x3bf1f213,0x3be54300,0x3b79e7bf,0x3ac3dd5d,0x3b214726,0x37b95768, -0x3a0ee4ad,0x3b3a7441,0x3b4e849d,0x3a8e0f37,0xb9f863ab,0xba07a056,0xbb4295ff,0x3b06752d,0xb9a25394,0x3b57f1b2,0x3a9ea3d3,0xbc14a2ec,0xbc1d4b63,0xbc476e38,0xbbc6047a,0xbb681931,0x3b48a377,0xbbc5f493,0xbc08a645,0xbb9ff5d4,0xbc32ed65,0xbc3269ee,0xbc0cbce6,0xbc1af86d,0xbbabcd08, -0xbb1aa90f,0x3b2b2368,0x39ab8315,0x3b4de13c,0x3bbbfe6d,0x3b4f1195,0x3c07eaad,0x3b8cbec1,0x3b34098b,0x3aa71686,0x3b41a5cd,0x3a0753cb,0xb77339fc,0xba34ed24,0xba81ce68,0xbacb69ba,0xbc042bd6,0xbbc01c46,0xb9e94edb,0x3a577c19,0xba8477fe,0xbab1d421,0xbb0f123b,0xbb430b96,0xbbe08618, -0xbbd6ead5,0xbc232551,0xbc26d151,0xbc336102,0xbc1fe86f,0xbb3bc5c6,0xbc603ae2,0xbc4a46f9,0xbc0be5df,0xbba36934,0xbaeaef20,0xb70fbae0,0x3ba1c32a,0x3a15d56b,0x3b803794,0x3bcfa6f3,0x3b3a6506,0x3b717a88,0x3bd4888e,0x3b09a754,0x3ae89f8c,0x3a8bd30c,0x3a557826,0x3a52be01,0xbb48711b, -0xbb590454,0x39dd0e36,0xbbaa778a,0xbc11ecff,0xbbfc67fa,0xbc0c5c01,0xbbc1cecc,0xbb4ed337,0xbb6fcc29,0xbb60687f,0xbc9d96fe,0xbc6e3c1a,0xbc6723d7,0xbc5068f0,0xbb64c8a4,0x3a127397,0x3b8f205d,0x3b63ec0c,0x3ad47464,0x3b5359e5,0x3b14271f,0x39f1db61,0xbb6c88f6,0xba1d8f24,0x396534e5, -0x3b16dce6,0x3ba772fa,0x3ba50dea,0x3bb51bcb,0x3b84d353,0x3b5532e5,0x3b62a2dd,0x39bda4aa,0xb8f39c32,0x3b13b113,0x3b232721,0x39a35c67,0x3a99e1c0,0xbb5b4f4f,0xbc14a0db,0xbbeacbb8,0xbc3fa693,0xbc391692,0xbcdb7860,0xbd02f289,0xbcd57268,0xbca3b4a4,0xbc9cceb7,0xbc986bbe,0xbc831e5a, -0xbbffa83f,0xbb56fbd8,0xbc0160bb,0xb91ee87b,0xbba01aeb,0xbbc5cdf0,0xbb74c7c2,0xbad3a4ec,0xba6a30b7,0x3ba978c0,0x3b8ae404,0x3abe08b4,0x3bd7f484,0x3b60d541,0x3b24b5e0,0x3af8fc37,0x3ad58d84,0x3b3f014b,0x3b894405,0x3a6cbf8c,0xbb6566aa,0xbc0cf1cf,0xbc196122,0xbbe988c3,0xbc8d57fe, -0xbc2d8249,0xbbdc1d85,0xbc9ca050,0x3c806808,0xbb75261a,0xbc8bc155,0xbc986b06,0xbcbbe058,0xbca53ac9,0xbc882b72,0xbc427ae3,0xbc092d7e,0xbbc0ab7c,0xbc11d688,0xbbcb06a4,0xbb939df2,0xbb7d167c,0xbb387743,0xbb20e3ec,0xbb0f811a,0xbb1377f1,0xbae3808e,0x3a77fbbc,0x38ec3cc1,0xba73b302, -0x3bdfe577,0x3b5741fc,0x3b7ab11a,0x3b9031ba,0x3a52b84c,0x3ba68c97,0x3b9c044e,0x3c232b52,0x3c1b0193,0x3c2d6a88,0x3c479b6b,0x3bf0d3ec,0x3c07587f,0x3bb3adf0,0x3c8fccc1,0x3c1a5063,0xbc08d858,0xbc201221,0xbc8408af,0xbc8bcad6,0xbca9ad8c,0xbcbe75ea,0xbc9ca2e4,0xbc8abd67,0xbc7e53d3, -0xbc6eef0d,0xbc6c8ecf,0xbc6494e1,0xbc563f39,0xbc460852,0xbc36979d,0xbc150b20,0xbbebc3a5,0xbbb0b578,0xba75c17e,0x3a88c5a1,0x3ae4640b,0x3baaad06,0x3babb3ce,0x3bd0411b,0x3c2a991b,0x3c2f0aeb,0x3c1e9a04,0x3c32af0d,0x3c50c9da,0x3c8ac8cf,0x3c6ea393,0x3c8d39f7,0x3cb3ca43,0x3c98b11f, -0x3c8f27d6,0x3be463ac,0x3adcb374,0xbad0b958,0xbc03f142,0xbc4caf99,0xbc8f2941,0xbcbc2fe8,0xbcaa5657,0xbc980824,0xbc914509,0xbc82ea4e,0xbc7f01c4,0xbc600bb7,0xbc58a606,0xbc560451,0xbc51a377,0xbc220ded,0xbc3baffe,0xbb94c2e3,0xbb0af3e1,0xba0e1dff,0xb99e625e,0x3b057a15,0x3b9a9ee4, -0x3be7ebc6,0x3bf9975d,0x3b830999,0x3c68a77f,0x3c01ada4,0x3c635d08,0x3c342339,0x3c584a21,0x3c991c41,0x3c88b9bf,0x3c380ce0,0x3be6d597,0xbb8bc621,0xbb7b9c00,0xbbb20d4f,0xbbbda81f,0xbbc2e402,0xbbce1cee,0xbbfc8e1b,0xbbf99802,0xbc127706,0xbc15dd09,0xbc1c2869,0xbc1ac434,0xbc22cb09, -0xbc01eb16,0xbbc09a6e,0xbba711aa,0xbb610551,0xbb0b385e,0xbb36587a,0x3b3e47b8,0x3a0028a4,0x3b028063,0x3a20d472,0x3a24ea60,0xb9d1d735,0x3ae7d544,0x3b27256a,0x3b78c3ae,0x3b854878,0xba839af1,0x3c159a3b,0x3b7dcdb0,0x3a90b26c,0x3bccb494,0xbaeb788e,0x3b0c6faf,0xbb952676,0xbb7660f6, -0xbb9dd5bc,0xbbc2035d,0xbbe94c04,0xbc089a0e,0xbc1d2e2e,0xbc17f7ff,0xbc10faca,0xbc0c39e6,0xbc09f8b4,0xbc061823,0xbc05e030,0xbc008c4e,0xbc0167e2,0xbc01a3ca,0xbbf89baa,0xbbe3b0e1,0xbbfdf94a,0xba9e70f4,0x3b90e0fe,0x3bec2242,0xb9e4b777,0x3bb49306,0x3c10093f,0x3c2365fb,0x3c135627, -0x3c109d8e,0x3c32fbd6,0x3c31461c,0x3c160dd5,0x3bad2881,0x3a5fdac7,0x3c1e38c3,0x3c065f74,0xbbfdf54f,0x3b94f64c,0xbabc770d,0x3c0449d5,0x3b894543,0x3b703316,0x3b5c876d,0x3b5a413e,0x3b5e2ef7,0x3b617587,0x3b737340,0x3b746577,0x3b52eb27,0x3b5d6283,0x3b68b8ba,0x3b65b9aa,0x3b8445cd, -0x3b8c19a2,0x3b87df8d,0x3b8f4fdc,0x3b863f80,0x3bbe7f2a,0xbb73fc88,0xbbd2389e,0xbb3583c2,0xbb214004,0xbbe5f906,0xbb845d17,0xbb8a6d99,0xbb6ac409,0xbb4a8042,0xbbb9ffeb,0xbbbf83d7,0xbbb449e6,0xbc07432d,0xbb0217e3,0xbb19876c,0xbc05847f,0xbc1b7005,0x3b1e82be,0x3bc04e96,0x3b8d7d4b, -0x3b53c033,0x3b2d4ac4,0x3b305418,0x3b5bbd39,0x3b80d5a0,0x3b79c2cd,0x3b16e343,0x3ad8ca60,0x3ac77c0e,0x3add0b4d,0x3b6be89a,0x3ba4e408,0x3ba53582,0x3ba6be70,0x3bcf5882,0x3c167227,0xbb2fa919,0x3a3b0b38,0x3959fbc5,0xbb8e7f59,0xb9891950,0xba1187c1,0xb9967baf,0xbb3812f7,0xb9a60f63, -0xbac4184e,0x3bc9db4f,0xb9d19e55,0xbb207d34,0xbac7ceb4,0x399f5225,0x3a3e94e3,0xbbb91508,0x3c06032b,0x3be1f4ce,0x3b5b76f1,0x3b0be93e,0x3993cfcb,0xba23dafe,0x3a5bbc9c,0x3b2afda0,0x3b24a65c,0xb9fb6f84,0xb92ef05d,0xb9bce182,0xb97d7cc3,0x3b710a9c,0x3b99b4e0,0x3bb2310f,0x3ba0c44d, -0x3c11f948,0x3bb38557,0xbb87934b,0x3b0492f5,0x397633c8,0xbb0e93f0,0x39b45c6f,0xbac7c889,0x3aea674d,0x3bdb08bf,0xbb28e4e7,0x3b994668,0xbac5bdad,0x3b1ad0a9,0xb9867d39,0xb9da2144,0x3afa524d,0x3b8d8496,0xbba4c4a4,0x3ae5e2bf,0x3c18e6c7,0x3b96c967,0x3b146cd9,0xbad2d68f,0xbb30115c, -0x3822af93,0x3b10a743,0x3ac03555,0xbb016c92,0xbb8e27cb,0xbba4f16f,0xbbcab76f,0x3aa18db9,0x3b94932c,0x3ba7441e,0x3bda3188,0x3c2bcae7,0x3c32220c,0x3bb2dd13,0x3c23cd55,0x3b4ee7f9,0x3bc4d99b,0x3a5e110c,0x3b64d9fe,0xba1291a4,0x3b869845,0x3bc77e63,0x3be07a13,0x3b316584,0x3b9eb416, -0xbb4fe52f,0x3aadfaaa,0x3c1d8062,0x3bd6d656,0x3bc4d3d9,0x3baa6027,0x3c52fc3f,0x3aa04a2d,0x3aa0f650,0xbbbd80ff,0xbbdcbbff,0xbb612f05,0xb97c098d,0x3a6d499a,0xbb8495a0,0xbb8f40b7,0xbba7be31,0xbb9d09b8,0x3aeadd56,0x3b95225e,0x3bb0f394,0x3bb7c2c5,0x3c317c29,0x3c643b03,0xba233b8d, -0x3c296e03,0x3b724739,0x3bb3b0d8,0x3be0f199,0x3b47a8c8,0x3b7c700a,0x3b764303,0x3c19e6f3,0x3ba54d8d,0x3bb2b65f,0x3bb0dfae,0x39d00bfa,0x3b38e047,0x3c633ee0,0x3b25632c,0xbc8bd2a5,0xbc3f3c30,0x3c47f9ab,0x3c8432cd,0x3cfbd48a,0x3c2d50cf,0x3b64feef,0x3a082d32,0x3c2cb838,0x3c42020f, -0x3a866dae,0x3caa6003,0x3cb0937e,0x3c1fd8aa,0x3bdb7970,0x3b80c520,0x3c61b8f7,0x3c011f15,0x3bc7a495,0x3b9d91e3,0x3a2ab66f,0x3c0afdba,0x3b954e7c,0x3c131a66,0x3ba3a677,0x3b706388,0x3b5f9b55,0x3b1c3fda,0xbb1a75d5,0x3ab15244,0x3bfe1912,0x3c344b9c,0x3c2bb3d0,0xbaa33604,0xbc99b2b8, -0xbc77ddfb,0x3a9c9557,0x3c7b6cc7,0x3b9c4e22,0xbbf6e465,0xbc10ba41,0xbc4143db,0xbc1b2626,0xbb0733ac,0xba6a5ccd,0x3ab8fd9a,0x3ab00d01,0x3b841edc,0x3b648857,0xb95b713d,0x3abc1617,0x3b07bead,0x39ab1fdf,0x3aab9925,0x3bd5181a,0x3b0e1ed0,0x3b1cd790,0x3b9fc2f4,0x3bb9c85d,0x3b934e72, -0x3b7a0ea0,0x3b8ab5f6,0x3aa15e80,0x3a750138,0x3b54fa56,0x3b622c91,0x3b404569,0xba86dbca,0xbb610330,0xba95b7a4,0x3aea17d4,0xbb1bb59f,0xbab46e16,0x3a67a4ca,0xbbbab178,0xbc219eb1,0xbc59ad19,0xbc5f2a7e,0xbbfe3c85,0x3ba8f59a,0x3c4d7afa,0x3c6ed711,0x3bdc6cbc,0x3c0550ec,0x3b87a35b, -0x3b1626c2,0x3b58aaf7,0x3b5522bf,0x3af1c8db,0x3bc07e80,0x3c15bc0e,0x3b6abc71,0x3aa6cb8d,0x3b47777e,0x3abd26a5,0x3bb8e55e,0x3ac7142c,0x3b285dad,0x3b03072f,0x3b625aee,0x3ad3539d,0x397b852e,0xba871e2e,0xbaafb263,0xbbe32015,0xbbb46127,0xba645ffe,0xbba18e32,0xbbb125ea,0xbb462c77, -0xbb511d76,0xbbe248b8,0xbc42e62b,0xbbd79dbb,0xbb76b3b0,0x3a8c33b5,0x3bb93833,0x3b96acc6,0xba82fb6e,0xba3fc082,0xbb3eb613,0xba197c30,0x3b906c46,0x3bd78168,0x3ba945df,0x3c060b85,0x3c36e329,0x3b568c2c,0x3a16eaf1,0x3b62e2a3,0x3b8e4c9e,0x3b426aab,0x3b643942,0x3a5e53de,0x3b331c22, -0x3a9df9db,0xba9877f2,0x37463711,0xbb35effc,0x3b388198,0xbc044131,0xbbcd88fa,0xbc034a24,0xbb2a1d2c,0xbbf6401f,0xbc1fee63,0xbc2e450e,0xbc4a99cb,0xbc719b7b,0xbc5d31f5,0xbc5cceed,0xbc0e7494,0xbc5a6ebb,0xbc633891,0xbc0ce656,0xbbca921c,0xbb16a6ce,0xbb29810c,0x3b09c443,0x3b43c01e, -0x3b7f1a56,0x3bbcd6b1,0x3beeec0d,0x3b10cbd8,0x3bac2530,0x3be70c20,0x3b82d28d,0x3b922995,0x3b6f0153,0x3b756e89,0x3a9c695a,0x3aa13052,0x3b14a9ee,0x3b0fbce2,0xb9152e03,0x3b2f530e,0xbb7004f1,0xbc0f33a6,0xbc12043e,0xbc2f85fc,0xbd20919b,0xbd24e0f2,0xbc97ab3a,0xbcd249f0,0xbca35a3a, -0xbcb73ce9,0xbc91ba49,0xbc56f299,0xbb49dc75,0xbada29ed,0xbc42fa11,0xbbf9cc13,0xbbe35bf3,0xbc045ca4,0xbb92ad11,0xbaf37ab4,0x3b2aa245,0x3b7bc0ba,0x3ba79cb3,0x3b83d993,0xbb245dbd,0xba968531,0x3ba17cfc,0x3ad15b33,0x3b133fd7,0x3af9d669,0x3aa78fc9,0xb986d24c,0xbba16bad,0xbc26243b, -0xbc1e3b41,0xbc3fe83a,0xbc82d492,0xbc8e92bf,0xbc94537d,0xbc892353,0xbc33ec73,0xbc908be4,0xbcb372d5,0xbca81f0a,0xbc5aecfa,0xbbea9ed1,0xba30880e,0x3b8c4247,0xbaf81a32,0xbb748726,0xbbc00a6d,0xbb67442c,0xbb95b3f9,0xbbcd8830,0xbb85eb57,0xbae2a629,0x3b786e51,0x3b8e70d9,0x3b8d6685, -0xba143e50,0x38583e20,0x3b2e476c,0x3a7ef00e,0x3b5e2b30,0x3b733fc6,0x3b490b8b,0x3bc1c922,0x3b9fe656,0x3b7a5bf5,0x3b9bffb3,0x3ba8ca24,0x3bb79ab1,0x3b9262e6,0x3b373ab5,0xbb78d487,0xbbfaa004,0xba57d355,0xbb0378d7,0xbbc9397f,0xbc1897c3,0xbc38f9e2,0xbc42e683,0xbc507b07,0xbc3bd24d, -0xbc340ffb,0xbc28539a,0xbc23d81c,0xbc24c069,0xbc266a35,0xbc33b5d6,0xbc1a5bde,0xbc068a31,0xbbb4bcd4,0xbb73058e,0xba9e89c5,0xbaee8871,0xbbb48640,0xbb2e2720,0x3a8696e4,0x3ac824b7,0x3ba7da61,0x3bd95f46,0x3bdd9261,0x3c04814d,0x3c1422e9,0x3c09f8b8,0x3c159139,0x3c312a9a,0x3c253274, -0x3c23ee28,0x3beccbee,0x3bbe13a6,0x3b927955,0x3b9fde1a,0x3b186c3a,0xbb5f702a,0xbc0d2ad5,0xbc405b78,0xbc792d94,0xbca1936f,0xbc8f19c4,0xbc715316,0xbc5dece4,0xbc3f308e,0xbc3b575d,0xbc355bdb,0xbc1d8841,0xbc155952,0xbbfff630,0xbbe4e96e,0xbb894ab6,0xbb894f98,0xbb8eb65f,0xbac52938, -0xba384922,0x3a86d492,0x3b1972eb,0x3b4a505d,0x3bb49e6a,0x3bf4db33,0x3ba07248,0x3c1a0984,0x3c00178c,0x3c1c6433,0x3bf6d257,0x3c127283,0x3c0f888c,0x3be010d2,0xbb6c9c23,0xbb15faf1,0xbb7206ec,0xbb58b237,0xbb287074,0xbb2b0be6,0xbb166898,0xbb3cad70,0xbb383ed4,0xbb998ae6,0xbbb1bf63, -0xbbd39d33,0xbbeb9f91,0xbc0e249f,0xbbe7a7be,0xbbb49ade,0xbb927cab,0xbb4e56e6,0xbaf3fb4e,0xbb042894,0xbb839b58,0xbb85ebbc,0xbb9f0517,0xbb97a2c0,0xbb9edd3b,0xbba074ec,0xbbabd06d,0xbbb7ec1e,0xbb98bbab,0xbb7ce14a,0xba699010,0xbafac7f7,0xbb187a0f,0xbb587240,0xbb740593,0xbb85bb3c, -0xbbc3e264,0xbabe5529,0xbb0c0d10,0xbb4a50eb,0xbb8864a5,0xbba8205a,0xbbc97564,0xbbed4f10,0xbbe407a8,0xbbd001b6,0xbbc1f70b,0xbbbaf605,0xbbaf8b29,0xbbaccf0c,0xbb9e1487,0xbb9e0864,0xbb9ee997,0xbb95e532,0xbb884921,0xbb441549,0xbbdc89a0,0xbc0b7cd5,0xbbb165f5,0xbbd2f6b3,0xbc058fd4, -0xbba6d144,0xbba4be5b,0xbb8e15ac,0xbb7aa0fe,0xbb8f1d47,0xbb96256c,0xbb83fcda,0xbbc8dc82,0xbb8e179e,0xbb4a568c,0xbbd3f023,0xbbf28392,0x3c12b5c9,0x3c356f45,0x3b47535c,0x3ba611e9,0x3badc6c5,0x3ba6e452,0x3bc2220c,0x3bc4cc1a,0x3bb35539,0x3bb64627,0x3baf931c,0x3b91f8f4,0x3b97d2aa, -0x3b9a43c3,0x3b99a15c,0x3ba0df4e,0x3bac82a7,0x3baf0215,0x3bb5be7b,0x3bb78d55,0x3ba9089a,0x3c3937ca,0x3c301e62,0x3accf44a,0x3c2b785f,0x3c327664,0x3b1b0f78,0x3b455c33,0x3b3fa1b1,0x3b5a2cf9,0x3b9a10a1,0x3ba085b7,0x3bb50f1a,0x3c362785,0x3c2952c4,0x3b67342d,0x3c35c369,0x3c3ab346, -0x3c0f4832,0x3bd356fb,0x3bf837e7,0x3bdd0666,0x3c256695,0x3c325fa8,0x3c0feabe,0x3c11d088,0x3c03a582,0x3bbb1732,0x3bac601f,0x3bafc8c6,0x3bcf70cd,0x3be42108,0x3c018a11,0x3bf6b69d,0x3c032ed5,0x3bf80fc1,0x3bedca81,0x3c3321d0,0x3c1589d6,0x3bcfaf59,0x3c2d16df,0x3c0deae4,0x3ba49660, -0x3c11537a,0x3c25fe9e,0x3c0e2147,0x3c1bcdca,0x3b8caa89,0x3bde1a2e,0x3be76fed,0x3c04fc6e,0x3c351fb2,0x3c0f64f3,0x3c822686,0x3bddd8ef,0x3bc0de90,0x3c093138,0x3bd9b2c4,0x3c4c6636,0x3c6303f0,0x3c1dbbee,0x3c35f841,0x3c1280b2,0x3b9355cd,0x3b999115,0x3b8f9a42,0x3ba21dac,0x3bde51e4, -0x3c0b37ad,0x3c119b74,0x3c265389,0x3c087082,0x3c49e78c,0x3c7749cf,0x3c21c905,0x3c2e6662,0x3c11ab92,0x3bc15844,0x3bf1047b,0x3bc6fefb,0x3be76c99,0x3c45861d,0x3be4be12,0x3c1a3fe1,0x3bbb06a6,0x3bbf00f6,0x3beb5a83,0x3c4b4778,0x3c2d2b11,0x3c7d9eda,0x3c072d23,0x3bc0efc1,0x3c2458f3, -0x3bd0d411,0x3c81f5e6,0x3c9d9137,0x3c534912,0x3c7321ec,0x3c34f4dd,0x3b9d6946,0x3b8230df,0x3b52a1ee,0x3bbbbea3,0x3c11a35a,0x3c31b2bf,0x3c25d808,0x3c362ffe,0x3c1fca9f,0x3c599a10,0x3c576696,0x3bfd4d13,0x3beeefb2,0x3b89ef13,0x3bc921f0,0x3ab29321,0x3be47dc2,0x3b9c8fa0,0x3bdb9355, -0x3b7bd30b,0x3bafbffc,0x3b9352cc,0x3b8f4cc6,0x3b873aff,0x3c640b6f,0x3c1c0717,0x3c780a97,0x3c278213,0x3b7a8c99,0x3c17b15f,0x3b96b84e,0x3c9123e3,0x3ca6227c,0x3c5e28f1,0x3c852142,0x3c47f54e,0x3b008156,0x3b26f8a6,0x3ad8110d,0x3b43c212,0x3c010ea5,0x3c30dd1e,0x3c4461b5,0x3c61f1c8, -0x3c49354b,0x3c70ec1f,0x3c9b7a25,0x3c1ff2f8,0x3c1dd401,0x3bcb5863,0x3ba054ba,0x3b118ab1,0x39a45624,0x3b6bd6e6,0x3bfba803,0x3bcb516a,0x3b8085cd,0x3b7b89b8,0x3a12c236,0x3b59bf38,0x3c522275,0x3c6e4bb9,0x3bc6e02a,0x3c859ce9,0x3c3de3e7,0x3cb04a58,0x3d06d66c,0x3c94032c,0x3c7ffcd0, -0x3c7dde31,0x3c07496d,0x3b665c28,0xbb9adc8a,0x3c188a40,0x3c214c88,0xbb0cbef0,0x3b02855c,0x3b1acfb1,0xbabd69d7,0x3ac813d5,0x3b8c2790,0x3c2bf1eb,0x3c24b3fe,0x3b92c076,0x3c07189f,0x3be3e5dd,0x3c161010,0x3b82f5fd,0x3b828fc8,0x3a9b5c1b,0xbb5fca06,0x3b6ff64a,0x3c352fb7,0x3c6cd886, -0x3c247b61,0x3bb204cb,0xbc023514,0x3a1774bc,0x3c743d79,0x3aeab257,0xbc4fbb37,0xbbec4214,0xbbee90ec,0x3b2cdc42,0x3b614e02,0xba128b57,0x3bcd0c7a,0x3be03a1b,0xba92e396,0x3c1b7c23,0x3c288d37,0x3bc2cff3,0x3bd34437,0x3c009ba4,0x3c4fd3bb,0x3c79b7a1,0x3c3048d5,0x3c1c90af,0x3c184045, -0x3c17a4af,0x3c08a836,0x3bcfd2cd,0x3b70915d,0x3b48367a,0x3aa28b51,0x3b1f085b,0x3ba006b3,0x3b888208,0x3abec72a,0xba8136f9,0x3a23ff61,0x3b29a4fb,0x3b9d38e7,0x3c3b47d1,0x3bb79fb3,0xbb1d028e,0xbbfbbef3,0xbb36dbd2,0x3b82c00d,0x3c806855,0x3caac8cb,0x3cdc2505,0x3c6978e0,0x3bbcafb1, -0x3ab0c0e5,0x3bcd3193,0x3c0920a3,0x3c12b336,0x3bfd60a2,0x3c0b2e5b,0x3ba7ba3a,0x3c21b858,0x3bf570c4,0x3bbd05f7,0x3beefb20,0x3b93e81d,0x3beb671e,0x3bdeaa43,0x3b847881,0x3adaae39,0x3b5fb4ba,0x3a6620e9,0x3adf6874,0x39cf3280,0x39f94dd9,0xba45ba15,0xbba73718,0xbaf32c2f,0x3b87aa2d, -0x3a8e3f60,0xb90d70b3,0xb8576129,0x3bc28e64,0x3c4cbd35,0x3ce45f64,0x3cd4c686,0x3cd23920,0x3c884b31,0x3c4b636c,0x3c06fe98,0x3c002a93,0x3c1fe673,0x3c34349c,0x3c0ce3c0,0x3c4abdd7,0x3c370aa9,0x3bcccad9,0x3c24ff0a,0x3bde777b,0x3ba7b24b,0x3c047294,0x3b8fe07f,0x3b977f36,0x3be6f776, -0x3b4694eb,0x3b181748,0x3ae38857,0x3ae9d366,0x3b03b711,0xba879cd1,0xba3798eb,0x3b8e49ca,0xbba529b0,0xbbb764d0,0xba6f1d57,0xbb301f51,0xbb859c25,0xbb8cb44a,0x3c5ab999,0x3cb5dea2,0x3cc8bfb3,0x3cb8a1ae,0x3c626693,0xbbd874b4,0x3af5c4eb,0x3a9654ae,0x3b88a8e1,0x3c023000,0x3c0a5833, -0x3b8751e9,0x3c25e110,0x3c359ec5,0x3c298e77,0x3c1fa8be,0x3be3b04c,0x3ba93743,0x3bdb06a7,0x3bf67c0e,0x3bf7961a,0x3bda715b,0x3b980aea,0x3b965076,0x3aaabe68,0x3a5d8dd9,0x3b31c702,0x3b3d8bd5,0x3a8c7930,0x3b21a2c7,0xbb3fd4b6,0xbb919d5f,0xbbc40c2a,0xbb6bf741,0xbc05ba38,0xba8f2183, -0x3c73b147,0x3c509467,0x3babc5d9,0x3ba41bc0,0x3b9ff788,0x3b4cec4b,0x3c367f8f,0x3c727bf5,0x3c5d5d0a,0x3c3fd23c,0x3be29100,0x3bf4f81c,0x3b2aaac6,0x3ac399ed,0x3b14fcc7,0x3bcc457f,0x3bc596aa,0x3b93008d,0x3c0fc757,0x3bd7cd17,0x3b5719f4,0x3b42e3a5,0x3b27f958,0x3b8df196,0x3b465d52, -0xba80c32d,0xbb55c035,0xbbecc233,0xbbc969ff,0xbbb9e6d0,0xbc42bc7b,0xbc68c6eb,0xbc35b868,0xbc849e90,0xbc155caf,0xbbb61b87,0xbc29db07,0xbbe23214,0xbad86c83,0x3b1a025e,0x3ba152a6,0x3c1999f6,0xbadfd40d,0xbbc95b35,0xbbb0f48d,0xbb0bbc9d,0x3abd3a4d,0x3b2b9225,0x3b9994b5,0x3bb5fa19, -0x3bc7e12d,0x3bb9af46,0x3b8750ae,0x39b2e24b,0x39fffd27,0x3a99132a,0x3c0504c2,0x3b951705,0x3b9e1bfe,0x3bd296b1,0x3b52da02,0x3b9a3445,0x3afd53b5,0x3b6c7c5f,0x3b5c5578,0x3b2e2e85,0x3bd65db2,0x3b827d4b,0xba65d014,0xbac52edb,0x3b99e406,0xb99d3e3c,0xbbe29ce9,0xbbf40197,0xbc2a12fe, -0xbbf6ccda,0xbbe26da8,0xbb719032,0xbbd7919b,0xbbe22f64,0xbbae420d,0xbbd258d2,0xbbdea3e8,0xbbf0724b,0xbbababa3,0xbb9a4456,0xbb7d614e,0xbacb66a8,0xba0f8d18,0x39ae68da,0x3ae476fe,0x3ab48b52,0x3b59e175,0x3b8497ad,0x3b8d367a,0x3bac7ca7,0x3c112164,0x3c049099,0x3bec43db,0x3be21663, -0x3bef1340,0x3c27f36a,0x3c0e6741,0x3c1de41c,0x3c24aadb,0x3bcc1d3b,0x3c195fbe,0x3b914dac,0xba10ad26,0xbb14067c,0xbbe28d49,0xbc091566,0xbc316b9c,0xbc553c7f,0xbc22340c,0xbbf71cc6,0xbbe37187,0xbc0fb69e,0xbc29e8a1,0xbc3e7417,0xbc327d97,0xbc2414ac,0xbc1434f3,0xbbdbf00b,0xbbcc17b9, -0xba84631d,0x3a74a45f,0x385d55a5,0x3a91980f,0x3b0f2d30,0x3b8c50de,0x3bc484ed,0x3bb001b6,0x3bd7b490,0x3c4f2138,0x3c07d0b3,0x3c2ffade,0x3bf9f0b0,0x3c1bde58,0x3c385aab,0x3c43139b,0x3bff59d2,0xbadb553e,0xbb235890,0xbaf75532,0xbb1598dc,0xbafbe2f3,0xbb14204b,0xbb1304d1,0xbb5cf771, -0xbbd6abe0,0xbc1cb41b,0xbc34faa0,0xbc40e2c3,0xbc438cbc,0xbc4fcbec,0xbc2f12d4,0xbc171f34,0xbc176543,0xbc0406b4,0xbc056ea3,0xbbf1a115,0xbb2d6e8f,0xbb152b72,0xb9a51476,0xb8d79cce,0x3938e635,0x3a3410d6,0x3ac65d16,0x3b1ceee5,0x389d2cb4,0x3ab7be77,0xbab1c1b9,0x3b38ddc7,0x3b20e282, -0xbae90457,0xbaeae10a,0xb9403c8c,0x3aef72b1,0xbb168e50,0xbb41a0a7,0xbb70f5c5,0xbb9289ed,0xbbafa906,0xbbcb562f,0xbbdbf39f,0xbbc3d3bf,0xbbb13bf1,0xbbb0dff4,0xbbba7125,0xbbc78e8d,0xbbdbb03e,0xbbd369c8,0xbbd2afe8,0xbbcafe58,0xbbb7debe,0xbba38082,0xbbb3e5f1,0xba2ae9fc,0x39bcfa0a, -0xbb50b4d6,0x39ba1d52,0x3ad6b01a,0xbb29c63b,0xbb237c44,0xbb14b8cf,0xbad9bacd,0xba37c628,0xb9f888ab,0xba5b7070,0x3ad492f1,0x3aa0fbea,0xba9f4a1c,0x3b0de717,0xbbd63ef1,0xbb7fc177,0xbbe92bea,0xbb449768,0xbb1502d0,0xbb2db65c,0xbb301b45,0xbb6b2421,0xbb813c04,0xbb819fd7,0xbb735196, -0xbb716b43,0xbb73f115,0xbb645a27,0xbb5981a3,0xbb5d467b,0xbb4d7221,0xbb54d9d6,0xbb5bf1dc,0xbb518f29,0xbb29ef22,0xbb3394ef,0xbb8ecfca,0xba92fce5,0x3c30427a,0xbbc20813,0xbb1eed11,0x3c1c4da0,0x3c1a2256,0x3c184210,0x3c02e565,0x3c0958e5,0x3bf878b9,0x3bc0922d,0xbb06cecc,0xbbd5adfd, -0x3c0ec312,0xb9851c8d,0x3bc829c8,0xbb8bb05f,0xbae1996f,0xbb314ae4,0xbb40520f,0xbbd2258a,0xbbfaf208,0xbbf1b1f4,0xbbe2509c,0xbbe735af,0xbbe5a2ac,0xbbeaf794,0xbbee2ca1,0xbbf5fb0c,0xbbc9cd1e,0xbbb1cc6a,0xbba8f07e,0xbb888973,0xbb3ff5b1,0xbb15732f,0x3af72683,0x397ec3d1,0x3b581437, -0xbb158d64,0xbb97021b,0x3b137708,0xba0e9f29,0x3a894988,0xb82202f9,0x3a1ddb3f,0xba683b18,0x3a6ea35c,0xb9da6688,0xba8e93aa,0x3af3539d,0x3a49b59d,0xbb232adf,0xbba4fea3,0x379aafae,0xbb218ce3,0xbb13fd10,0xbc0e709a,0xbc3b7db7,0xbc2fcf9c,0xbc249308,0xbc186d0e,0xbc24791c,0xbc1298a7, -0xbc1521f6,0xbc143572,0xbbf78580,0xbbed2d75,0xbbfee1fe,0xbbaf11f5,0xbb7177e6,0xb91e170f,0x3b105e51,0x3aec3492,0xba8954c4,0xba8376ed,0x39e4527b,0xbb39abc8,0x3b1f57a1,0xbaa0090f,0xbaf730f9,0x3a927ad7,0x396eacf7,0xba932fa1,0xbb1d73f2,0xbafef5e8,0x3b0e8da1,0xbb752e28,0x3aa288d2, -0xb888f13c,0x398de2ec,0x391a8fd3,0xbad9709b,0xbc33cbeb,0xbc82c10c,0xbc6fa575,0xbc6ca817,0xbc6376a6,0xbc57f384,0xbc6df676,0xbc6b2553,0xbc88c32a,0xbc4d8650,0xbc2353a5,0xbc1c0eb7,0xbbba710c,0xbb162613,0x3b10e290,0x3b5a6b9e,0x3b394e18,0x3b86e016,0x3a754089,0x3a50c78d,0xba111ea5, -0x3ac33f82,0x3b9d3c71,0x3b9ffae5,0x3b9ed3f0,0x3b39a794,0x3aaec1ae,0xba56f604,0x3a91b504,0x3b9c6e9c,0x3b19fad3,0xbab36bf1,0xbb504c4f,0x3b548094,0xba5862b9,0xb9046963,0xbc624f09,0xbc98272d,0xbc91648f,0xbc8915de,0xbc66d5e8,0xbc77649c,0xbc5d1d56,0xbc63e4df,0xbc666456,0xbc4aaccf, -0xbc44bb9d,0xbc511fad,0xbc05c490,0xbb3e6272,0x3ba35c75,0x3c041524,0x3bd10f96,0x3b88623a,0x3b4c2f9b,0x3b865e01,0x3ae92d43,0x3b3b5b11,0x3b863a25,0x3be0ad40,0x3bc87bcc,0x3b975086,0x3b5a9ce1,0xba3ea07d,0x38ace912,0x3bdeaa69,0x3b615203,0xbbf6cbd8,0xbc10901f,0xbb756947,0x3a4cc5a0, -0x3c33e1e5,0xbbd07503,0xbc5fbc5a,0xbc7c1698,0xbc6196e0,0xbc292313,0xbc4a494f,0x3bca3282,0x3c3149c6,0x3b656908,0x3b103cfa,0x3a2bc004,0x3b86eb2d,0xbaf4a86a,0xbbe01893,0xbbf692b3,0xbb0874df,0x3a37f0be,0x3b77a7fd,0x3bafda8a,0x3bb6f013,0x3ba0e1f9,0x3b2869d1,0x3ac2a3b4,0xbb255b48, -0x3b4c42a5,0x3c1f5226,0x3c21cb88,0x3bbed6fb,0xbb3dc7d5,0xbc268261,0xbc8b2d85,0x3b9798f7,0xbc4d1e8d,0xbbda4f8c,0xbc13ae12,0xbc1021d9,0xbc5cb8b9,0xbc5d4bf8,0xbc7f7f05,0xbbc2a83f,0xbb1b870e,0xbbee2188,0x3b6f94e3,0x3ba21e64,0x39187a73,0xbba78044,0xbc1bcd44,0xbc90b894,0xbc0598e0, -0xbb77a930,0xb9d8ccf6,0x3bfb853d,0x3b8d322a,0x3ba4675a,0x3b8116bd,0x3b4370ec,0x3b566b07,0x3a90271a,0x3ac003fb,0x3ba2f22e,0x3b6e1a4d,0x3b03bb3b,0xbb39741e,0x3a2ccc58,0x3a1d040e,0xbb921c14,0x3bbda8de,0xbab81ae3,0xbc2d9e55,0xbc2273b0,0xbc7d0fd3,0xbcbde4aa,0xbcdf2000,0xbcd2fda0, -0xbc9722b5,0xbb794c31,0x3b251259,0xbb8c4e25,0xbb2de5ca,0xbc17581f,0xbc560eaf,0xbc26f57e,0xbbd48553,0xbb9931e1,0x3ab75f95,0x3b58208a,0xbb620340,0xba44427a,0x3ad03544,0x3acc2449,0x3b498cab,0x39e136a2,0x3b53c0ab,0x3aaf49f2,0x3b32ab68,0x3b038ead,0xb98b8688,0xba148c7e,0xbae65ade, -0xbbd12144,0xbb0abc08,0x3a788062,0x39a393d8,0xba4b3e16,0xbb1ea9b6,0xbc029271,0xbc81a595,0xbd0b40b8,0xbcee6ba3,0xbce48002,0xbc9e130e,0xbc39a1a4,0xbc02ca75,0xbc45202f,0xbc4f220d,0xbc788a8e,0xbc911d97,0xbc1ad032,0xbb737ae7,0xb84fe4da,0x3b73ed3f,0x3b70338d,0x39ba4f93,0xba089113, -0x3ad663a1,0x3ad43a97,0x3b535a1d,0x3aab5072,0x3ae33f7e,0x3aa3e8e4,0x3a73b628,0xb9712333,0xb8f69499,0xbaabad92,0x3b4c6e94,0xbbc263b2,0xbb8735e6,0xb9e66eb9,0xbb17078b,0xbb0dd3b8,0xbc4eba62,0xbcaa7901,0xbcd2fb5c,0xbd209596,0xbceb57dd,0xbcbb6a2b,0xbc636b01,0xbc7665a3,0xbc637b44, -0xbc6f05b2,0xbbf66ff6,0xbb860dd5,0xbb26a40a,0xbb6e510d,0xbb8d1cc7,0xbb8d59ac,0xbb1a132e,0x39d2f82c,0x399ecd3c,0x3b8a9e57,0x3b97b1b8,0x3b969e52,0x3b800d19,0x3b5c00a1,0x3b3f51c5,0x3a91dd5d,0x39e34229,0x3ac444a8,0x3ab94288,0xb9892716,0x3a362d43,0xbb6849b1,0xbbfb38f4,0xbbaa750e, -0xbb8c6454,0xbc9b7c79,0xbc8b3e67,0xbcfd255b,0xbd0837ff,0xbd0bcb20,0xbd137d7d,0xbd0cc66d,0xbce37d5d,0xbc7e60a5,0xbc589af7,0xbca5a1ec,0xbc61f30f,0xbc580d31,0xbc3a2b5e,0xbba6e0c2,0xba1342a1,0x3b49a43e,0x3bb6a87f,0x3b6b1267,0xbaf6a7f2,0x3a6855d0,0x3a90ccc2,0x3b649bc8,0x3b2471ba, -0x3b10b10f,0x3b3a6997,0xb9bdb1dd,0xbb3a68ac,0xbbb9ebc6,0xbc0e01f8,0xbc104a02,0xbc1f6053,0xbc5a6c1b,0xbc505fc4,0xbc9c5c80,0xbc955497,0xbc383ca1,0xbcf3beba,0xbd0108cb,0xbcd3f652,0xbc995652,0xbc303e69,0xbbdea3f2,0xbc143aae,0xbc27034e,0xbc09da5e,0xbb8e51ea,0xbbbe7f2b,0xbbdb5e8f, -0xbbc78ed5,0xbbbbe941,0xbb6cd365,0xba7a8562,0x3b082d81,0x3b4dbeda,0x3b06d056,0x3a6bfaa4,0x399acfd9,0x362dd164,0x3a8eed15,0x3afc1935,0x3b82e8aa,0x3b7936b9,0x3b2ca8fd,0xbae5b172,0xbaf349a0,0xbb3a7368,0xbb6e199e,0x389bad47,0xbb411016,0xbc335dfc,0xbc8b93c6,0xbc15109f,0xbc49e39d, -0xbc97bf31,0xbc8b55ac,0xbc7eee44,0xbc6a5e4d,0xbc70da5f,0xbc801551,0xbc61b0f6,0xbc4acf7c,0xbc170a04,0xbc34081e,0xbc2ddf21,0xbc252a32,0xbc0e89c5,0xbbc351b7,0xbb8e147d,0xbb3d73e0,0xbaf573cb,0xbb2050be,0xbb10d593,0xb9944147,0x36ef6e0b,0x3ab315a0,0x3b498786,0x3b9152de,0x3bbcde00, -0x3bd0d690,0x3bc060ed,0x3b489bf3,0x3b2da09e,0x3b48e578,0x3b01950f,0x3ae7e8b7,0x3550d5ab,0xbb63f975,0x3a253849,0xbbc89cba,0xbbe5d436,0xbc306f2a,0xbc7eed2d,0xbc8db48e,0xbc98e0ba,0xbca5279e,0xbc937182,0xbc855e3f,0xbc7afd41,0xbc4a68d2,0xbc2da53b,0xbc20a9a6,0xbc1309b1,0xbc0c31b7, -0xbc015a6b,0xbbfb90ea,0xbbe90f14,0xbbc5ee34,0xbbb0d010,0xbb2b4d2a,0xbb332f90,0xba42cdba,0x3987d835,0x3997cd86,0x3b5b594c,0x3a4e566b,0x3bb045c7,0x3b76f5e4,0x3ba426e1,0x3b544c86,0x39b2e6a8,0x3b865dc8,0x3a27f7f4,0xbabc1072,0xb9ecca93,0xbbc7d942,0xbc05548d,0xbc0eeff8,0xbc09f0c5, -0xbc2e1191,0xbc47aac7,0xbc7c1d20,0xbc694b88,0xbc609b0a,0xbc550923,0xbc5bcb4b,0xbc608afd,0xbc603aff,0xbc4bbba1,0xbc331d63,0xbc274372,0xbc1162de,0xbbe51b11,0xbc08ffeb,0xbbf75b94,0xbbfdc56f,0xbbea35ce,0xbbe5e1b6,0xbbb681cb,0xbb9cd7d3,0xbba40366,0xbbc545aa,0xbb9a7697,0xbba38fb2, -0xbb9e0d6a,0xba439203,0xbb6427c6,0xbb5ccf27,0xb9eeca2d,0xbbff8ebe,0xbc13b9ce,0xbc00b78d,0xbbfae76c,0xbc0f9290,0xbc1f291f,0xbc2e353a,0xbc33147d,0xbc3ef6af,0xbc33db75,0xbc320a82,0xbc2cf9d9,0xbc230a82,0xbc176759,0xbc128460,0xbc0fc0c8,0xbc11b4e5,0xbc12a4d8,0xbc10fa44,0xbc0b50aa, -0xbc049619,0xbc1bbe9b,0xbbf51cbf,0xba8df6b4,0xbc1a8ebe,0xbbec3a1f,0x39318d23,0x3a4e5e57,0x39ff5906,0x39fb704e,0x3a763aa1,0x39040d9e,0xba73b12d,0xbbda10fe,0xbc07b19c,0xb9181f46,0xbba9a71c,0xbc7019bd,0x3c5616cf,0x3c3d4ea9,0x3c398afb,0x3c12690a,0x3c131849,0x3c09b1da,0x3c1c669a, -0x3c21f2c4,0x3c2003fe,0x3c1e3cab,0x3c1e1fb9,0x3c180e32,0x3c16a12f,0x3c18547a,0x3c1a369c,0x3c1cae2e,0x3c22829c,0x3c1fe576,0x3c222525,0x3c161c94,0x3c282985,0x3bf62313,0x3b229e9a,0xbc164d99,0x3c1a0381,0x3b47a89e,0xbc149f38,0xbc0b7f54,0xbc017b8f,0xbbd27c51,0xbbfeafab,0xbbee3875, -0xbbbc64be,0x3aee6324,0x3c241e94,0xbbdd59cd,0x39fef06f,0xbbb7e769,0x3c383342,0x3c3a6ee1,0x3c390607,0x3c174703,0x3c5f1139,0x3c7a1147,0x3c779ba2,0x3c6c504a,0x3c6bd3ae,0x3c567687,0x3c45adfe,0x3c457493,0x3c53b686,0x3c579357,0x3c66a50d,0x3c57a92f,0x3c4f256c,0x3c48c5b9,0x3c5b18d8, -0x3b44a15d,0x3bcb3ca6,0x3b1f9772,0x3b9e0136,0x3c122789,0x3a7e36a6,0x3beaed39,0x3b959e58,0x3bb42d32,0x3ba87186,0x3c1389d9,0x3b3a4b10,0x3b4d4471,0x3b9f32b9,0x3b967e34,0x3b9f40f5,0x3bea59fa,0x3c73dbd4,0x3c2bc9b6,0x3c369272,0x3bed9cb6,0x3c6eae07,0x3c864ff6,0x3c82d27f,0x3c8519ff, -0x3c7d8750,0x3c641428,0x3c518768,0x3c52a22b,0x3c54dcb9,0x3c79b678,0x3c81822d,0x3c836c9a,0x3c6c984c,0x3c724135,0x3c333f01,0x3b86f467,0x3bcd38de,0x3c17526d,0x3b923250,0x3b722b9f,0x3bb66a19,0x3babe8bd,0x3c5aace6,0x3be4ef02,0x3c146255,0x3bb45c2f,0x3ba41a8d,0x3bb58394,0x3ba9e810, -0x3ba133f5,0x3c50462f,0x3b59d90d,0x3bdef13f,0x3c5bc9aa,0x3c3936aa,0x3bc1b132,0x3c857341,0x3cb550c4,0x3cb31201,0x3cb34805,0x3ca49132,0x3c913b80,0x3c72007b,0x3c601da1,0x3c7a4e04,0x3c978b40,0x3c9dc254,0x3c8e1541,0x3c87269a,0x3c7ce368,0x3c609030,0x3c1930b4,0x3c2788b7,0x3bc697de, -0x3bcb3b29,0x3b662d52,0x3b422049,0x3bb7bf98,0x3bb6154f,0x3bab83d0,0x3bcfb3e6,0x3b9142aa,0x3b8ad8b4,0x3a90941a,0x3b3138df,0x3c1b9ed2,0x3beb3e96,0x3c8188be,0x3c3fe74c,0x3c3ee87f,0x3c1c2e2a,0x3b0c88ff,0x3c837aa6,0x3c9c61d9,0x3ca4d46b,0x3cb1317d,0x3caa5d15,0x3c89c89c,0x3c6ab372, -0x3c6c80c9,0x3c687223,0x3ca1322e,0x3cabeae6,0x3caa45b9,0x3c9b663f,0x3c8f05f9,0x3c6a2087,0x3bb2bffb,0x3c18bc37,0x3bffbd34,0x3bc3e52a,0x3bc28a5b,0x3a5d74ef,0x3b5db364,0x3badfb7a,0x3bf20b21,0x3bcde271,0x3ba5c61a,0x3ad0efbc,0x3aff06e8,0x3b6ba15a,0x3c11691a,0x3c14f695,0xbb89e0cc, -0x3c683866,0x3cd53caf,0x3cf4d77b,0x3d151181,0x3cd92845,0x3ce138c5,0x3cf0f596,0x3c9587a5,0x3c4320b6,0x3c2d2fc6,0x3cb0cbcd,0x3ca7502b,0x3bc2f563,0x3c1391db,0x3c0e7049,0x3c3a999d,0x3c3fbe32,0x3c54e4eb,0x3c2e46dd,0x3b8cccda,0x3be2a496,0x3bc4285f,0x3c072cd9,0x3bdf5d88,0x3bddc656, -0x3b2f213c,0x3a245f4f,0xbb0f3a0b,0x3bdc127f,0x3c53c449,0x3c364d29,0x3bdd7e1b,0x3a738b83,0xbc4b0539,0xbb02b6c6,0x3c92b98b,0xbba0afb0,0x3a16090a,0xba2c4294,0xbbd58bad,0x3b04075d,0xbb45146e,0xbc602643,0x3b936493,0x3c220437,0xba03f1ce,0x3bcf8b36,0x3c04b703,0x3c206115,0x3c3e1251, -0x3c70320c,0x3cb847b3,0x3c9ec15a,0x3c92f84a,0x3bbcc336,0x3b1ccd8d,0x3bf05d77,0x3be5a064,0x3c0d1da4,0x3bd13310,0x3b7021e0,0x3b04dcd5,0x3b545588,0x3bd7d8e5,0x3b991229,0x3b171d1b,0xbabe3459,0x3b037d56,0x3bb7e2c4,0x3b02bfe7,0x3c902837,0x3b893b7b,0xbbb6286b,0xbb8319aa,0x3aa5c0d7, -0x3c4b58c9,0x3c994cf2,0x3cbff4cf,0x3ce30d36,0x3ccdc9a0,0x3c992061,0x3c0c4d1b,0x3c8c1be2,0x3c92a82d,0x3c96e692,0x3c882530,0x3c75afb3,0x3c10f09b,0x3c45082f,0x3c41ce95,0x3bdb949f,0x3b9b3ab6,0x3b5319b5,0x3b4f774c,0x3bebf341,0x3b6b8dfb,0x3b3f8199,0x3b3f26b3,0x3af48e5d,0x3b5ff34f, -0x3a88b3d4,0x3ab6cb9f,0xb9c1760f,0xba76474e,0x3b0e06c0,0x3ba5c09e,0x3a8a095d,0xbb27b6fc,0x3a71f75e,0x3bf4d60d,0x3c80c739,0x3d1f1c9a,0x3d0a1a4d,0x3d174984,0x3cf4ee78,0x3cbbfc4d,0x3c8340c9,0x3c21ca99,0x3ca1b51e,0x3ca7f2b6,0x3c97ec20,0x3c8ebaa1,0x3c66697f,0x3c068e22,0x3c1d92c3, -0x3c219598,0x3b88ecfd,0x3bab9b0a,0x3b5bd064,0x3b6317cf,0x3b957d66,0x3b444695,0x3b1cbd47,0x3b19e870,0x3af13f0d,0x3ada499c,0x3a4b7f0d,0x3a600a38,0x3ba6cc39,0xbb5212d9,0xb94cd2e4,0x3b1230f2,0x3a9b4834,0xbb357d02,0xba16cd38,0x3c86f605,0x3cc421b4,0x3d2672e0,0x3d0323e5,0x3cb2c07a, -0xb9dc6bd1,0x3aa33eda,0xbb37112c,0xbb1a2291,0x3b1c06e6,0x3bd44079,0x3b9c7841,0x3c26f712,0x3c558495,0x3c87a55a,0x3c644cb4,0x3c2b4f60,0x3ba79f4d,0x3bb36d44,0x3bdb0665,0x3bb822f7,0x3bdf596f,0x3b9a98a3,0x3b8621c3,0x3ada8215,0x3a8701a1,0x3b0c9aa9,0x3ada18af,0xb8905937,0x3a1e615a, -0xbaf92ae1,0xb9db384e,0xbbcea03d,0x3a013e9e,0xbc5bf4c0,0x3aad5aba,0x3ce6c052,0x3cba4475,0x3c8f7410,0x3c703de3,0x3c83920b,0x3c85608f,0x3c73fc72,0x3c691b5f,0x3c764a91,0x3c54e3bd,0x3c47cf4d,0x3c344684,0x3be74de6,0x3ba52032,0x3b96e3e4,0x3b92ca4b,0x3ba34850,0x3bb024c8,0x3ba9f6a3, -0x3bb5e154,0x3b6711b6,0x3b30deb4,0x3b1e6eed,0x3b968812,0x39e3ce1a,0xbb1651bf,0xbb422136,0xbbaf838e,0xbb5ef715,0xbbc1d37c,0xbbf7b624,0xbc755d3f,0xbc8af1a4,0xbc3e708b,0xbcd2a14f,0xbbfddaac,0xbb9a117b,0xba80a4cd,0x3bd618fe,0x3c422df9,0x3c4a3f1d,0x3c25d3c7,0x3a626767,0xbb5bf265, -0xbab7a4b5,0x3a5abc75,0x3b72eb90,0x3bb77c21,0x3bd96d6a,0x3c144195,0x3c0ae4e1,0x3c21dbe2,0x3c03a580,0x39d4b392,0x3b09ab52,0x3b796835,0x3b8194df,0x3b7b40cd,0x3b83ae45,0x3ba8eee9,0x3b93d0ab,0x3b4adfac,0xb9fc5547,0xbb02d65d,0xbb108fc0,0xbb81f0e7,0xb9f5c964,0xb91d3d00,0xbbe1ee3a, -0xbc0b919d,0xbc0d3b3f,0xbc0790ca,0xbb7926b6,0xbb849c68,0xbb64576e,0x3a35801b,0x3b668b00,0x3be0fb0a,0x3b1eaf4f,0x3a16ab1e,0x3a15adec,0xba5ee50d,0xba904384,0xba77e896,0x3a2045ac,0x3ab39c99,0x3aeccaf7,0x3b507756,0x3b4e1f1e,0x3b20faa1,0x3a2cbed6,0xb97b20c4,0x3b1cf135,0x3acd0365, -0x3b3ff60b,0x3b83ea70,0x3bacfb22,0x3b8d477c,0x3b8f3570,0x3b253390,0x3abf201e,0x3aa6ebf1,0x3ac4c01a,0x3a4cb834,0xbb232c5e,0xbbbc4f3c,0xba8b8ded,0x3a05e00b,0xbaa3003d,0xbaed15c8,0xbb24c6e8,0xbb19fb10,0xbb1ab87e,0xba994344,0xba41a517,0xba12538b,0xbab0a8c3,0xbb584d8e,0xbba77d85, -0xbbfc50bb,0xbbd28053,0xbbb5cad4,0xbb8507e2,0xbb7adf05,0xbb136413,0xbada04d9,0xba11dd51,0xba7e2774,0x3a547678,0x3aad4dbb,0x3b278500,0x3b64c4ef,0x3b3c20dd,0x3bf256d7,0x3bdde42f,0x3be10418,0x3ba8ef8d,0x3b7a4045,0x3b777f03,0x3ac92980,0x3b6af123,0x3b1af509,0xbbdb568e,0xb9b30bc6, -0xba293a25,0xb9f5b1eb,0xb9f213f4,0xba268463,0xba3f2a9d,0xbacc9015,0xbb8cdf95,0xbbcf0691,0xbbffa704,0xbc14c2ee,0xbc2311de,0xbc3a204a,0xbc20ab72,0xbc0e268d,0xbc0dbadf,0xbbf4f244,0xbbe6a8f9,0xbbb5ba51,0xbbd4f45a,0xbb90284b,0xbb6b27fb,0xbb11d0bf,0xbb169166,0xba6c7268,0xba956c67, -0xb9c83185,0xbb5b935e,0xba931bcd,0x39186090,0xbac0ad36,0x3aa21590,0xbadfe614,0xbbb681e7,0x3a7b7476,0xbab1cf43,0xb9f73a64,0xbae859d5,0xbafbcf4c,0xbb0e4243,0xbb24f1e7,0xbb3473e4,0xbb2b60ea,0xbb18ac2f,0xbb15fa63,0xbb24c15e,0xbb38fbec,0xbb534b93,0xbb7d2c47,0xbb67e0fb,0xbb6448f7, -0xbb521233,0xbb35f61f,0xbb2b531f,0xbaff66aa,0xbb09b317,0xbbafe8a9,0xbc30e0da,0xbaa3477b,0xbb9114a1,0xbc314add,0xbc3b7f29,0xbc27837d,0xbc168c10,0xbc1dc015,0xbc1887cc,0xbc0930db,0xbb782d5a,0xba5552ef,0xbc17cb34,0xbbad71aa,0xbba39260,0xbb980ada,0xbb837715,0xbc077dd5,0xbb829ade, -0xbb82b1a2,0xbb812961,0xbb982f20,0xbba53b9a,0xbba9affa,0xbba5df60,0xbba55d4b,0xbb9f01c7,0xbb9d493b,0xbb9ac0fc,0xbb9b28f4,0xbb9afd16,0xbba0c6e7,0xbba172eb,0xbba1895a,0xbb84184a,0xbbb7005b,0x3a8f908c,0x3bdd862a,0x3c8177c4,0xbaf97932,0x3bba4201,0x3c7cecc5,0x3c8057a0,0x3c76be6c, -0x3c58d167,0x3c826677,0x3c76af1d,0x3c537d34,0x3be4c91a,0xbb44deac,0x3c5f252f,0x3c156495,0x3c935e8d,0xbb7a7122,0xbb7d8ea2,0xbb7737aa,0xbb7d4012,0xbbd0ea9c,0xbbf6b1a1,0xbc046412,0xbc048eb9,0xbc0643da,0xbbe98a0b,0xbbefcec4,0xbbf3307d,0xbbf76e13,0xbbebda80,0xbbe8b198,0xbbe39a56, -0xbbc27f4e,0xbbb6e387,0xbbe4f184,0x3bfedf37,0x3b4692c1,0x3bce4a9a,0x3b80eb1b,0xbb1a096f,0x3ba361ff,0x3b492ae3,0x3beaa78f,0x3b5e23bd,0x3ba69797,0xbb762801,0x3b7b423b,0x3b76882f,0x3b256d41,0x3bb95227,0x3b584778,0x3bc0df89,0xbc236e73,0xbb5220e7,0xbb4abbd1,0xbb45dd13,0xbbea3c5e, -0xbc166489,0xbc24da10,0xbc262127,0xbc1cf761,0xbc0ea9ee,0xbc0bb880,0xbc0bdc0e,0xbc08a1e9,0xbc0db94a,0xbc0c6a35,0xbc1d66a0,0xbbd99b08,0xbc06b262,0xba274827,0x3c28f665,0x3b8acbd8,0x3b217165,0x3b63501e,0x3b26a9f4,0x39e54de8,0x3b925cb9,0xbb44a5f6,0x3b7be4e8,0x3a1db01e,0x3b91a614, -0xba8db73b,0xba46c24e,0x39afb388,0x3bb51e3f,0xbb8a82fa,0x3c22ce5c,0x3adc7ba7,0xbb84431c,0xb923998c,0xbb3e6e58,0xbc0097c0,0xbc3e5278,0xbc5420bd,0xbc6b718e,0xbc612059,0xbc271207,0xbc412650,0xbc38e283,0xbc4c018f,0xbc4453db,0xbc340c14,0xbc34a18d,0xbc086b8a,0xbbfbaf55,0xbb054337, -0x3b89dd24,0xba4f339a,0x3bc71377,0xbaad229a,0x3b29b044,0xbb2a3c53,0x3bb8ce55,0x3bbd75f4,0x3b9085bb,0x3b2d0c95,0x3b54b91c,0x362a339b,0x3b2fdb66,0x3adc3d47,0x3b4c6dbf,0x3a82b13c,0xbaebe848,0xbb966970,0xbba1a104,0xb96bc329,0xbae83b44,0xbc08d3be,0xbc47de12,0xbc6821ee,0xbc6cfeae, -0xbc503562,0xbc43f2de,0xbc3a54ad,0xbc3b8891,0xbc37f433,0xbc44ec80,0xbc4ed81a,0xbc66128e,0xbc1e29ed,0xbc02b517,0xba353c15,0x3c813f9d,0x3b85c25d,0x3bda7622,0x3b1ee5a7,0x3affb7e3,0x3a00fd28,0x3aeda50e,0x3b9a7be7,0x3b94d091,0x3bcbf14c,0x3b4eea83,0x3a6f0027,0xba7b4a00,0xba7f2aa6, -0x3b38b8bc,0x3bdedc31,0x3aca3e46,0x3af3dbff,0xbc02af8c,0xbad5e884,0x3b111f76,0xbc028dd2,0xbc4b6d3e,0xbc552442,0xbcb2df08,0xbcb331ed,0xbca7bc52,0xbc04572f,0xbac34e6a,0xbb34304d,0xbb08b38d,0xbadb5255,0xbb8ccf2f,0xbbcd7d37,0xbc2390dc,0xbc09f9f6,0x39ce16b3,0xbb638efe,0x3ba63f37, -0x3b419947,0x3bd39886,0x3be095fb,0x3b0495ef,0x39bb02a4,0xbad6c63f,0x3bc91e6b,0x3c3e8f91,0x3c0929ae,0x3b5b6e1d,0xbac74aae,0xbb2131bb,0xbc67df5c,0x3c4290c1,0xbcdea18a,0xbc754f93,0xbc11b4fe,0xbbe3fdf2,0xbc0e386a,0xbc324bab,0xbc8d104a,0xbb58bb8b,0x39edab8e,0xbc0ec437,0x3b43f399, -0x3bb0711f,0x3b95d70b,0xbb0eea1f,0xbbf772bf,0xbc85c029,0xbbbbb3a0,0xbbab240a,0x3ab3c9be,0x3c241b37,0x3b9c63c9,0x3b9771db,0x3bb96d72,0x3b6e62c3,0x3b1c0a8e,0x3ab811c3,0x3b25d038,0x3bd940e4,0x3b8052b4,0x3ab66201,0xbb3f3929,0x3b59a530,0x3b1b1c34,0xbbb86104,0x3c80ac6f,0x39a4925f, -0xbc88b867,0xbc1f6909,0xbc30e9f5,0xbc63c237,0xbc924ade,0xbca0ea5e,0xbc9c4f69,0xbc100b0d,0xbb83f294,0xbc147ddb,0xbbfee443,0xbc3c2b2e,0xbc6920bb,0xbc5da32c,0xbc063bb6,0xbb92f20a,0x3933efbf,0xba729e77,0xbb8e7a85,0x398a8401,0x39c4f055,0x3b2db5e3,0x3b05f419,0x3a7099ae,0x3b57e274, -0x3af06687,0x3ad95da4,0x3b31f3cd,0xb8679f9a,0x3a5c5f52,0xba358320,0xbb004c18,0x3b351f25,0x3af651fd,0x3b99a978,0x3ab177ed,0x39e44415,0xbba9e5fd,0xbc1635a8,0xbca35353,0xbcbc647b,0xbcc7c308,0xbc8b966d,0xbc7a4665,0xbc3dc674,0xbc3f24b6,0xbc531ac7,0xbc5f0e8e,0xbc8179cd,0xbc4a2cd2, -0xbbfd1b7c,0xbb2066bc,0x3961fffc,0xbb3cc222,0xba9c94e0,0x3a3d88c8,0xb95f481c,0xba41b9b6,0x3b618b8a,0xb815a5d7,0x3b21369b,0x3a16a348,0x3a5b95bc,0x3a9feb4e,0xba0d0409,0x39e60943,0x3b203579,0xb990aa9e,0xb9b6a8d8,0x3b6d0cc0,0xbb574068,0x3b173985,0xbb97c968,0xbc57994c,0xbc883af2, -0xbcdfe29f,0xbca079ad,0xbc7abc15,0xbc4f40be,0xbc0fafc9,0xbbdf118c,0xbc4a546e,0xbb50c909,0xba58a996,0x3a5ca54f,0xbb26f07a,0xbb7b6f8b,0xbbb14d99,0xbb8378cc,0xbb1ccf8e,0x39eebc67,0x3b35de0e,0x3afa11fe,0x3b7ed6a1,0x3b7a947b,0x3b53f2d8,0x3afa4bc0,0x3a55296e,0xb9ce6e7d,0x3a8ef4ce, -0x3982341e,0xba64578d,0xbb1c333e,0xbb4060d8,0xbb8d5796,0xbb1218aa,0x3a6e9274,0xba56afab,0xba9e0af2,0xbcca2b4c,0xbca8c2ba,0xbcc24c0b,0xbccdd833,0xbcd1073b,0xbc9e9b74,0xbc8402d9,0xbc779c55,0xbc811ecd,0xbc12da3b,0xbc038f59,0xbbe6b84a,0xb9441b89,0x3b6ddfe9,0x3b9ad0a5,0x3baafa38, -0x3ad78063,0xbb43eb51,0x3bac9d71,0x3b8d02fa,0x3a615958,0x3b26756c,0x3ae7931b,0x3b835331,0xba1f117c,0xbb67e8e7,0xbb84261c,0xbba480cd,0xbbb5e5af,0xbbc7b700,0xbc327aee,0xbc178a11,0xbc8a50c9,0xbc897436,0xbbe984a6,0xbcbf5dcd,0xbcc5b782,0xbca170fe,0xbc929826,0xbc5e1fce,0xbc683cb3, -0xbcab228a,0xbc3f8875,0xbbcd9cea,0xbb5652a1,0xbba1eab7,0xbba32f2c,0xbb496834,0xbb4eff09,0xbb05f321,0xbadaffa2,0x39db479a,0x3ad4f877,0x3b740539,0x3b379c64,0x39096b19,0x3ab67e19,0x39e4fcd2,0x3a86a6bb,0x3b815c83,0xb9827ce9,0xb913504c,0xbb8d1e09,0xbba23135,0xbbdc3d25,0xbbf9d6d4, -0xbb32f9a1,0xbbbdc32b,0xbc13bdd2,0xbc741f57,0xbc167d66,0xbc5e2271,0xbca41442,0xbc855cca,0xbc6c3e77,0xbc4573b3,0xbc4080bd,0xbc66e9a1,0xbc27df01,0xbc111cb4,0xbbd52fed,0xbbfe16b5,0xbbeceb81,0xbbc2a0dd,0xbb9afb97,0xbb120a4b,0xbad40420,0xbac949c1,0xbb173b11,0xbb3986d8,0x3a2367b1, -0x3aa12ce9,0xb9c7538d,0x3ad584a6,0x3ab94d13,0x3b32ad83,0x3b917ec9,0x3b7a19d1,0x3b25eabd,0xba32ba87,0xbae35792,0xbb1026ec,0xbb5b73c2,0xbb5423cc,0xbb22d569,0xbbe877a0,0xba0f5ec6,0xbc2e9365,0xbc317c58,0xbc37cae8,0xbc5f4ca5,0xbc5e75b8,0xbc53fb91,0xbc3a9dc6,0xbc3c9c5e,0xbc3fe240, -0xbc38042b,0xbc14dc6e,0xbbea3abf,0xbbcd4773,0xbbbd96be,0xbba80581,0xbb9affe5,0xbbabdc08,0xbbefd2bb,0xbbbbc9ce,0xbb91d3ba,0xbb2ff6fa,0xbb42f0a4,0xba86b7b1,0x39a05192,0x3a777035,0x3b16b986,0xbaf0acfb,0x3bce012d,0x38d22189,0x3b524772,0xba6355fa,0xbb1e4641,0x3a8d8bd0,0xbb500a4e, -0xbbaf5b50,0x3af5b654,0xbbde8e49,0xbc06782d,0xbc1f4a6f,0xbc29b214,0xbc599dc7,0xbc81a4f6,0xbca03d26,0xbc8fce75,0xbc7a74af,0xbc659abb,0xbc5fe925,0xbc5a00c7,0xbc49a863,0xbc3c9001,0xbc2bda55,0xbc267490,0xbc0e0164,0xbbd4b4c6,0xbbf119b7,0xbb9c23b4,0xbbb26077,0xbb85a053,0xbb8f313d, -0xbb51e55d,0xbb225806,0xbb0a6a88,0xbb288ecd,0xbaf8ba5f,0xbb090e35,0xbba072cd,0x3b2563c2,0xbaa6dbab,0xbaaf5945,0x3b2d40f0,0xbbcfc73e,0xbbd234fb,0xbc1795df,0xbc0c8c79,0xbc17e33d,0xbc1e60de,0xbc25e79f,0xbc2034c8,0xbc246ca0,0xbc1ddd7b,0xbc24ebac,0xbc231799,0xbc1a0582,0xbc111e4f, -0xbc0ce244,0xbc0c50fa,0xbc0cfa78,0xbc0d40c5,0xbc0ee0d8,0xbc0e96e4,0xbc1537da,0xbbe8c1e9,0xbb52baa9,0x3a849a69,0xbbdc0b75,0xbb279b89,0x3b2f92de,0x3b654d74,0x3b34d86f,0x3b2754f0,0x3b78574d,0x3b4aef25,0x3aaea8dd,0xbb675868,0xbbdf316e,0x3aa069cf,0xbabe9f52,0xbc680341,0x3c0efd64, -0x3b879b01,0x3c2e54ae,0x3bda1a80,0x3bd3a9dd,0x3bc07e19,0x3bd2671d,0x3bdc4b46,0x3be6f7c8,0x3be28e96,0x3be6f249,0x3becaaab,0x3be58c66,0x3be9571a,0x3bee7a0a,0x3bf2065f,0x3bf7f029,0x3bf08b8f,0x3bf003fb,0x3bd6e3af,0x3c059134,0x38c1c1e2,0xbb95eeb4,0xbc0b8e2b,0x3b234365,0xbb8e3894, -0xbc18a08f,0xbc14e227,0xbc0892da,0xbbee770e,0xbc207dbd,0xbc1d94c7,0xbc0e80c4,0xbbc24ede,0x3b506bd3,0xbbf9e1a4,0xbbe61402,0xbc4e9df6,0x3bce6c8d,0x3c11eb91,0x3bf9de6c,0x3bb4f5e4,0x3bf1f5e6,0x3c0c568a,0x3c27089a,0x3c1a422d,0x3c24eb08,0x3c278c35,0x3c14c94a,0x3c124822,0x3c18a80e, -0x3c1c2eb6,0x3c26c163,0x3c1b5762,0x3c0b8c83,0x3c0d65dd,0x3c2b146c,0xbb51674f,0x3acf4d85,0xb85295ee,0xbaf54136,0x3b71195d,0xbaa17d0b,0x3b46e83c,0xb9f4ab9b,0x3a90db8e,0x3910da55,0x3c02b6fb,0xba1723d7,0xba6d36b6,0x39443241,0xbaa0e73b,0x396f812f,0xbb6a632f,0x3c370d18,0x3c080472, -0x3bd7b1d0,0x3b457957,0x3bbdd84c,0x3bd561ee,0x3c20d95c,0x3c18c5aa,0x3c24bb04,0x3c37d437,0x3c1c19ec,0x3c20edb3,0x3c206f0e,0x3c3fe516,0x3c3a3db5,0x3c3ccb25,0x3c0f285c,0x3c31b5e5,0x3b90c193,0xbb9d4673,0x3ad58c1d,0x3b7f038e,0xba2d958b,0x3a79cf02,0x3ab6693d,0x3b7435ec,0x3c3ef34f, -0x39151afa,0x3bdd1f9b,0x39e3b336,0x3b110631,0x3b13db67,0x3a8281d4,0xbace15d5,0x3bdb5970,0xbbdae508,0x3b2215ae,0x3c45888a,0x3bce08de,0x3ac893fe,0x3b91ef15,0x3c03c493,0x3c5a0ec4,0x3c46cbba,0x3c54b918,0x3c781e6b,0x3c31f390,0x3c271679,0x3c2463e2,0x3c53cc9e,0x3c562dbe,0x3c40ee49, -0x3c23d849,0x3c2d19ab,0x3bea4bb7,0x3b48f336,0x3c06c7ed,0x3b946a5e,0x3baf3bd6,0x3a2ae424,0x3b400d3b,0x3b701cf7,0x3bcb804a,0x3b80e76c,0x3be30fcc,0x3b32ec91,0x3b49873a,0xbae17c6f,0x3a63a19e,0x3b663f3d,0x3b2bf25a,0x3bda0922,0x3ba2e6b8,0x3c361b7c,0x3b6fe21b,0xbade453c,0x3aafc828, -0x3b30f4ac,0x3c2904e3,0x3c2bfa4e,0x3c53fc76,0x3c7a2253,0x3c38e6ca,0x3c3feea9,0x3c335dc7,0x3c7268a8,0x3c744e3f,0x3c66da93,0x3c2b02e2,0x3c338421,0x3bf72cf0,0xbb95af9c,0x3be1b3f8,0x3bb541b8,0x3b97f733,0x3bae35b4,0x395b0cb0,0x3bbe356e,0x3bd16472,0x3bc45483,0x3bb151e5,0x3ba51849, -0x39669ac6,0x3b043717,0x3b23d029,0x3b903d47,0x3a7f1d8c,0xbc55e20f,0x3b76db70,0x3cc7ed83,0x3cba6012,0x3cce27e6,0x3ca0473c,0x3ca0eec3,0x3ca36243,0x3c4d0a2a,0x3bfe4a84,0x3c0c5d2b,0x3c946878,0x3ca420aa,0x3c55faeb,0x3c2fb983,0x3c0eea18,0x3c852053,0x3c5178a6,0x3c3fbf02,0x3b90d577, -0xbb09307f,0x3bb76280,0x3b600412,0x3be5601f,0x3b7f9d42,0x3c102f26,0x3abdb216,0x39c172bc,0x399379fb,0x3c0cacd3,0x3c4d601e,0x3bc48b13,0x3b7dec6f,0xbb8f1e59,0xbc822d64,0xbc387044,0x3c653aae,0xbc3f6fdb,0x3bc7cb50,0xb85be6cc,0xbba4d1ca,0xbb920d50,0xbc172804,0xbc7a214a,0x3adbc7b9, -0x3c0c3389,0xbaa3b485,0x3b279eea,0x3b8967b1,0x3bf52330,0x3c1bbe94,0x3c42baff,0x3c811fbf,0x3c3b0120,0x3c61c763,0x3ae45fc4,0xba7ffd09,0x3b881a53,0x3b86aa6c,0x3c0f8393,0x3bf1ad6b,0x3b8107ca,0x3b447686,0x3b757cc5,0x3be8e3d3,0x3b8f8d54,0x3b350505,0xbaa1528f,0x3ae0a208,0x3bbdfabf, -0xbab1bff7,0x3c91b5c8,0xbaabfac1,0xbc3d70a5,0xba7be8d5,0x3ac9a2eb,0x3c042f6f,0x3b965401,0x3be60c17,0x3c26a7f6,0x3ca72d80,0x3cadaa3b,0x3c05df64,0x3c8864aa,0x3c6aa4bc,0x3c3c0160,0x3c32c6ab,0x3c1bbc2c,0x3be5b86b,0x3bf7b5fd,0x3c12c28e,0x3b58fcce,0x39ec5029,0x3a4f2268,0xbac1772f, -0x3ba179bf,0x3b02a978,0x3b79897b,0x3b171a7f,0x3b5670d7,0x3b8b8efb,0x3ad3b3ce,0x3b0119f8,0x3a0a67de,0x3b12978a,0x3b8adc61,0x3acc9e33,0xb9e6ae92,0xbb8d9adf,0x3ac43679,0x3b93e045,0x3bf987ed,0x3ca3647f,0x3c617428,0x3c8ac749,0x3c92f10f,0x3c8116c2,0x3c4e6e25,0x3b613c1b,0x3c5de29c, -0x3c45b431,0x3c25cbe1,0x3c111cf6,0x3bf75f83,0x3bc88d76,0x3ba86466,0x3bfacfc2,0x3a86aeb2,0xb9a87b22,0x3a0f9bd8,0x3a0ee4ba,0x3a7cdd60,0x3b041e1d,0x3b016b41,0x3b24fb1d,0x3ac9daa0,0x3a43e77f,0x3af574c6,0x3aafe8ed,0x3b3b8a7a,0xb97ab30d,0x3b3d19a4,0x3a9d1c7d,0x3a57884d,0x3864573e, -0x3b0e4d09,0x3ba7d8be,0x3bcae579,0x3caf321d,0x3c55298b,0x3c003606,0xb9ad0a08,0xbbac6fc8,0xbc16b048,0xbc424fd7,0xbbb37d95,0x3a1cc86f,0x3aa64a05,0x3b9835cd,0x3bf66aef,0x3c374935,0x3c1ab886,0x3c0558bc,0x3b4335bd,0x3b372baf,0x3b72a12a,0x3b004596,0x3ba21501,0x3b7bfbdd,0x3b1e8a54, -0x3abf5799,0x3a5b2a4b,0x3aa9ad8b,0xb9224878,0xbaca3367,0xbb01d5a4,0xbb108a20,0xb9c8c1bf,0xbba3446d,0x3ab989a6,0xbca4b87d,0xbc3c60c0,0x3c3cc3d4,0x3be5b44f,0x3bd4ca66,0x3b676c9f,0x3bd0c57a,0x3c2a68cb,0x3b88c299,0x3a9d24a2,0x3b13a5b2,0x3a544812,0x3b8b78a7,0x3b651a88,0x3b96d8cf, -0x3b9589c6,0x3bd4efbc,0x3affe278,0x3b20b936,0x3b899af7,0x39543389,0x3b0c6331,0x3aee7411,0x3ae47f8f,0x3aec1dd1,0x3b5df377,0xbacc1388,0xbb3049fb,0xbb1bbfb9,0xbb66edc5,0xbb2f7dae,0xbbf1bff1,0xbc0851e9,0xbc7d4ff7,0xbcb30ea1,0xbc2a802a,0xbcd27423,0xbc4dfdc1,0xbbe7b9ca,0xbbb2e0d7, -0x3a1dd339,0x3b017673,0x3aab9ef8,0xbaf201e0,0xba2520db,0xba405024,0xba854870,0x3991c47b,0x3a03de7a,0x3aa02fe0,0x3b4395f0,0x3ba618c1,0x3bfd3a43,0x3bfa8eaf,0x3be2f532,0x3ad23cc3,0x3b5d2e26,0x3ba44e11,0xb9ad7fff,0x3b1afb98,0x3b0cee6a,0x3b2e9827,0x3b1d12fd,0xba034cfb,0xbb29e32c, -0xbbc29544,0xbbcdb6c0,0xbbf59130,0xbbd44ea0,0xbba3856b,0xbc0db185,0xbc51e7d7,0xbc8619f0,0xbc670069,0xbbcb0591,0xbbc8bd3f,0xbb647163,0xba852448,0x3b0b611b,0x3b90c5cb,0x3b5e6dd7,0x3b1bfe33,0x3a7cd922,0x3a1f7f08,0x3a6cdd70,0x3abe6f87,0x3b4a1032,0x3b8143c6,0x3bb16255,0x3b915879, -0x3b77902b,0x3ae7d823,0xbaeab2bd,0xbad2c3aa,0x39def53d,0xb9e730de,0x3aded05e,0x3b55ff42,0x3acde4d8,0x3a5a09cd,0x3acc830b,0xbaa1aa9c,0xbb3b18bc,0xbba359bc,0xbb914ae7,0xbbc8acb4,0xbc27ef0d,0xbc504c4f,0xbc145bc0,0xbbcb3ce4,0xbba1a733,0xbba37cc4,0xbb678597,0xbaf74d81,0xb9003146, -0x3b1bed1b,0x3a2b69cd,0xb9a59ba4,0xba3e4fd0,0xba4b84b5,0xba737b24,0xbb198b85,0xba8ad4ec,0x38334a97,0x3ae2dae6,0xb88c0a83,0x3aa66192,0xbb24a61f,0xbb3f469b,0xbaf12b52,0xba0df516,0x39738bd7,0x3a82821c,0x3ad8881c,0x3ad9b25e,0x3bb1b502,0x39e8b83d,0x3b62b2e4,0xb9625fb4,0x38b0b8cf, -0xbb1bdf90,0xbbb964cf,0xbbb1bbe8,0xbb9a2219,0xbbe5e589,0xba230940,0xbb03d8d0,0xbaf8656b,0xbb180b8f,0xbb629214,0xbb8b6d1f,0xbba35cec,0xbb976f95,0xbb854f4f,0xbb8f3dd6,0xbba2a473,0xbbb3ba0f,0xbbc936c9,0xbbb5b9b2,0xbbabb4f0,0xbba8e47e,0xbb892266,0xbb41a924,0xbad1d678,0xbbb505bb, -0xbb7c4d53,0xbb8f4f36,0xbb4fc999,0xbb6cb6ac,0xbb251879,0xbb6b5371,0xbb705dd9,0xbba44c45,0xbb5c00d0,0xb95c2cab,0xbb771dd8,0xbac5b64c,0xbae6ef84,0xbba90192,0xba846d2a,0xbbaf42e7,0xba3a8f90,0xbae0b7ed,0xbad022a7,0xbab763cf,0xba9d5df6,0xba590f0e,0xba2e40a0,0xba5f75ff,0xba9ec95b, -0xbaa69ce3,0xba9dd18b,0xba9c3df0,0xbaaedbf9,0xba95501e,0xba86c4fd,0xba62e044,0xba5b53f7,0xba967f54,0xb905d8a8,0xbb905b6c,0xbc0e7a89,0xbc37bd85,0xbb778af5,0xbc047e37,0xbc36f376,0xbc401927,0xbc2c3821,0xbc1fb047,0xbc31a605,0xbc318a0f,0xbc20c662,0xbbf4514c,0xbb7aa84d,0xbc2f7632, -0xbc1bae25,0xbb81107c,0x3aaaf7af,0x3b76daef,0xbb8eec1d,0xb9e03d81,0xb92d793c,0xb9abebbd,0xb93e878c,0xb9894c2a,0xb9c045de,0xb9e87d49,0xb9f9e039,0xb9c676c9,0xba1301aa,0xba139f85,0xb9fb2c1b,0xba12cde3,0xba0de7e1,0xb9f5689f,0xba1754e6,0xb916164b,0xbacc9744,0x3bdf7a2f,0x3c21e774, -0x3c150be8,0x3b9eb4b9,0x3c1fa405,0x3c1cde68,0x3c262ee7,0x3c1e5ffe,0x3c0fc4d7,0x3c3908e2,0x3c334bdb,0x3c24f8cb,0x3c2eed23,0x3b88d75b,0x3c0cc43c,0x3c3c4b07,0x3c80d8d1,0x3ae96821,0xb846be1e,0x3a1d927f,0xb903450a,0x3a40cfe4,0x3a524f8e,0x38a62a38,0xb9ca7c22,0xb9db429f,0x39983121, -0xb9c8b9ea,0xb9eea6d9,0x37f03462,0xb98a8a65,0xb99e1ac7,0xb9f5c359,0xb993f581,0xba687dc9,0xbb288ec3,0x3c16efae,0x3bb9cdce,0x3bcce9d0,0x3c04ab8a,0x3b5dc3ea,0x3ba9dab1,0x3be02cc2,0x3c22e027,0x3bcca5d6,0x3bfb7389,0xba62a34f,0x3bada5b8,0x3bc9fcfc,0x3bbb09f1,0x3bf59ae2,0x3baa46f6, -0x3c30693a,0xbb84e7d4,0xba5c0c7e,0x3a902c56,0xba02b7a8,0x3aaf6935,0x3ad6503c,0x3a06b612,0x38568a88,0xb98fcf95,0x3a3a7112,0xba54ea0d,0xba4e21d6,0xb90de06f,0xba375eaf,0xb9b7bf9b,0xba500346,0x3970dfdc,0xbb318281,0x3b3c329e,0x3c4825d1,0x3bc721a7,0x3bd9e043,0x3bdb3160,0x3b8e7551, -0x3ba01b24,0x3bc737b9,0x3afea2ec,0x3c0fc710,0x3b47d035,0x3bef2d25,0x3ad57975,0x3b42c10e,0x3b7bcded,0x3becb463,0x3abaaaff,0x3c41ce05,0x3b8370d5,0xbab5b3ef,0x3b14eef0,0xbaef4f08,0x3b1acca4,0x3b5522aa,0x3a9a9426,0xb958af9a,0xba13e5d8,0x3b16c60e,0xba2ae806,0xba1138b9,0x3a5e0035, -0xb7db3101,0xb91a409b,0xba37b639,0xba91eba4,0xbb4782d6,0x38ab71e7,0x3bb98e64,0x3a114164,0x3be2601d,0x387b311a,0x3b89f71d,0xba8f1270,0x3c0cdca2,0x3bd71763,0x3b8c6dd4,0x3b1a4910,0x3b7a6428,0x3a8ce5db,0x3b9db0b0,0x3b30c3e4,0x3b8e52de,0x3b05ebcb,0x3b317a1a,0xb91d606c,0xbba9cd59, -0x3b1ff77e,0xbb2a6c01,0x3b379be6,0x3b5f9d64,0x3b039a29,0x3aaee82d,0x3a5aa6f9,0x3a9f3102,0xbaa25954,0xbae32723,0xba073f9f,0xba26db1b,0xb9bb7649,0xba765615,0xb96089ab,0xbb1e206e,0xb8fb92be,0x3c6fedc7,0x3b6f7a6a,0x3c122f2b,0x3b64dc5c,0x3adc76b5,0x3960f06a,0x3b15649b,0x3bb817e4, -0x3b54ac01,0x3bb3c95e,0x3b2a16a7,0xb931a383,0x3a159421,0x3a17c3be,0x3b11c003,0x3c046fa2,0x3beebe31,0x3c758687,0x3ab66018,0x3bc6e9a5,0x3beac83d,0x3bcb9f9b,0x3bbe3f18,0x3b8a4e78,0xbc24774d,0xbc82c277,0xbc7dc95d,0xbc24a67a,0xbb5f0fe2,0x3ac0b66c,0x3a536632,0x3a877517,0xbb88fe40, -0xbb12c802,0xbb015864,0x35fa0f6f,0x3b845fa5,0xbb0b234d,0x3bb85abf,0x3b123cf6,0x3bcf4dba,0x3c08d05f,0x3aecfe41,0xb946c8b1,0x3a46c14e,0x3c186189,0x3c50a3fb,0x3bc6612c,0x3b4d2a58,0x3a0f20de,0xbb46ca60,0xbbc62011,0x3c822e01,0xbcd63a54,0xbc59a7fd,0xbb8e3e12,0xbb8dc9d1,0xbafb2d07, -0xbb491dc3,0xbbe86df9,0x3b844b16,0x3bdcb381,0xbb8bb95b,0x3b873cef,0x3bc14673,0x3bf8d747,0x3b96075f,0x3b4005e9,0x3b02b6c6,0x3bbb4779,0x3b0d74ac,0x3bae98cc,0x3c053d78,0x3baf0789,0x3b899c0a,0x3bfdb166,0x3baf8b53,0x3b1c317d,0x3b40ffb6,0x3b8bf77f,0x3bf43720,0x3b750b7d,0x3a8c664b, -0xb9ad8c6c,0x3b96ea9a,0x3ba4f049,0xbb334807,0x3cad8ea6,0x379edf16,0xbc8ca9af,0xbb6920dc,0x3a8e6540,0x3b946de5,0x3b80eed0,0x3b23fee4,0x396430b5,0x3a957411,0x3a4ee538,0xbb96f5e3,0xba817730,0xba9d520c,0xbb61ab87,0xbb81a8f9,0xba94e645,0x3b01a674,0x3b2e0ec7,0xba534c52,0xba2f7ef5, -0x3b250bb2,0x39816c1b,0x3b1c7a8f,0x3b157adf,0x3b1a465c,0x3b4f1c9b,0x3b3ff186,0x3ac82dae,0x3b605ea3,0x3a957a4d,0x3b1d9f42,0x3a38a0b4,0x3b12dbab,0x3bb12ae6,0x3ad44ac3,0x3b89cc9b,0x3abf8b3c,0x3b575230,0x3b843cef,0x3be62db8,0x3c47c3cc,0x3b656d01,0x3a938dfb,0xba4e2de8,0xbb0fae48, -0xba55f803,0xbaef8ec3,0xb8e1f2ed,0xb9855aca,0xbb87691d,0xbb81a527,0xbb1e1200,0x3ac4dd3f,0x3a8b6d77,0xbb3078cd,0xb9c004aa,0x3b18f490,0xba76c215,0xbab145f3,0x3b2903cb,0x38e176e2,0x3b3f4de3,0x3a7cc657,0x3abbfad4,0x3b1ddeba,0x397fc8f2,0x3aed752a,0x3a1db220,0x3b60878f,0x3b037436, -0x3b691a9f,0xbb479611,0x3b90f890,0x3b84de10,0x3b9a30e2,0x3bd8bbf5,0x3bc51865,0x3bba3c71,0x3b53fbfd,0xbbad898c,0x38936367,0x35aa7f83,0xbbac0350,0x3a6fad7e,0x3b299bac,0x3b85e4e7,0x3b1cb3d8,0x3b29b4fc,0x3b255407,0x3adc41da,0x3a2948a6,0x3b28130d,0x3b0127aa,0x3a9bb365,0x3b41558f, -0x3b87c80f,0x3b52f04b,0x3abce278,0x3a7bcdc9,0xb8c6d068,0x3a84c421,0xb9a0b356,0xba85f67c,0xbb5456bc,0xbb2ec505,0xbaa5a733,0xbab8d3a5,0x3b682a95,0x3b971af8,0x3b9fd31f,0xbaeec609,0x3b60463f,0xbad99f33,0xba77520c,0xbb13ca31,0xb973c912,0xbbabee65,0xbba33664,0x3ace6404,0x3a936908, -0x3a86b12d,0x3ad77129,0x3b6b8996,0x3b8b84f7,0x3b8586e5,0x3b0f6c56,0x39a14ced,0x393a4e6e,0x3be35df6,0x3ba87fbb,0xba86957e,0x3b07e62b,0x3aac0c65,0x3b706959,0xb8d6309c,0xbb29636c,0xba9c7a50,0xbac49a0e,0xbb1f3e9d,0xbb87fbf1,0xbc2390d0,0xbc348bea,0xbc7db406,0xbc5b1042,0xbbc80bf0, -0xbc09b9c4,0xbc0c8291,0xbbf2aeda,0xbc0a322d,0xbc424240,0xbc69ef8b,0xbc71d408,0xbbf6865e,0xbb90b3bb,0xbb9596b0,0xbb42e951,0xba63555e,0x3a6e09c9,0x3b2c1f33,0x3b225e11,0x3b5a7c05,0x3ac82faa,0x3ab70fa9,0x3b7d7e52,0x3b675a16,0x3adbb71c,0x3b76f49c,0x3adf91ad,0x3ab0294b,0x3b5fbeaa, -0xbb59dded,0xbb3ded66,0xbb9ccca2,0xbbbf1c66,0xbbebbd48,0xbc02e0fd,0xbb8bb9c7,0xbbadbe13,0xbb4da353,0xbbe5b7ce,0xbbfdb665,0xbc3c0c8f,0xbc649cfb,0xbc378457,0xbc26e9d8,0xbc0392fe,0xbbce50c5,0xbbb30ad8,0xbb644a86,0xbb365037,0xbb205129,0xbafff83b,0xbaa6116e,0xb98f830d,0x3ace7ad4, -0x3b314df8,0x3b6e6f4f,0x3b03efa8,0x3a088ae3,0x3993a3e5,0x3b48f0a2,0x3b1668c2,0x3a23d648,0x3afbf978,0x3a7e1bd3,0x3b0ce4a8,0x3b3bc8ef,0x3a7a5482,0xb9a11d75,0xbb237644,0xbb6e0246,0xbb893ba7,0xbbb28f60,0xbbb4d3d7,0xbb891175,0xbc0964aa,0xbb69c753,0xbc322560,0xbc306c9f,0xbc09b95f, -0xbc02bf68,0xbbbc2ef2,0xbb83000f,0xbacb689f,0xbb15d1bb,0xbb3d8eb3,0xbb1ae2cf,0xbb31c17e,0xbb000a66,0xbae8264e,0xbac61ed2,0xb9d48e87,0x3991e5d0,0xb98f2d35,0xbb10eb44,0xbab518fd,0xba2eceac,0xba741b54,0xba5db0c5,0x39d7d266,0x3b0288db,0x3b6d4998,0x3b1c7dc2,0x39335873,0x3bbb1666, -0xba0fbad3,0x3ae23b09,0xbb0e1e5d,0xbb231f4e,0xbb118ac6,0xbba6a23a,0xbbdf6bd2,0x3a243ffe,0xbb8aa15f,0xbb904951,0xbbb86a55,0xbbd3b82c,0xbc0fad72,0xbc2a0177,0xbc448bb4,0xbc387b1a,0xbc1ee3a0,0xbc15c8bc,0xbc0971c9,0xbbfb2950,0xbbd5fee5,0xbbcdf8cd,0xbbcbe858,0xbbdaab1a,0xbbc47486, -0xbbac87e8,0xbb9a5a74,0xba8eb1bd,0xba977894,0x39d8ce7d,0x39b7c6f9,0x3a374e6a,0x3a9eb2dc,0x3ac0de1c,0x3acc24c2,0x3a1436c9,0x3a69dd44,0xbb2f794c,0x3b2c1796,0x3a2f0110,0xb7948840,0x3b018360,0xbb04e20b,0xba8668e3,0xbba4f37b,0xbb97a3ea,0xbb977edc,0xbb8e564a,0xbb87e78c,0xbb6d2044, -0xbb67fdce,0xbb5f603f,0xbb77a33f,0xbb7a2510,0xbb718bde,0xbb72356b,0xbb743a95,0xbb7a144d,0xbb75c9e9,0xbb6cac79,0xbb6cb600,0xbb754f61,0xbb98e47e,0xbaa2205f,0x3a827b42,0xb91e398b,0xb9d902d0,0x3b08d73a,0x3a8b8fce,0x3ac15290,0x3a87318e,0x3a81bd4b,0x3b00ac60,0x3ae34634,0x3a10c148, -0x399f25a0,0xbad5b345,0xba3b8d22,0x3a809f3d,0xbbb60062,0x3945154d,0xbb8648fd,0x3b349778,0x3a407df8,0x39db02c1,0x38abfcad,0xb9876e87,0xb9702a5c,0x397c5ec3,0x3959445b,0x39c2d313,0x3a67e350,0x3a0a9842,0x3a170d2c,0x3a3501ae,0x3a586e77,0x3a52f593,0x3a36b1df,0x3a1cfc42,0x39f6996c, -0x3a9cebf6,0xbb9a460a,0xbba9440c,0x3a884d99,0xbb856ea8,0xbbb4d873,0xb7b80c4f,0xb88de02c,0x39710d84,0xb8df56bb,0xbabd65c8,0xbaf0a3d6,0xbb1c37fa,0xbbca4d09,0xbb809c27,0xb92f7540,0xbbc42aa9,0xbbc4020d,0xba9e78f4,0x3ade4a72,0x3886b61f,0xba9ecf3d,0xbb3039e6,0xbb334be5,0xba49cb41, -0xba8badd0,0xb99a6eb3,0x3a8db9e4,0xb949f9a6,0xba150605,0xba17945e,0xb87ef1c2,0x39bd39a5,0x39c6f236,0xb8b337cd,0x39ed879a,0x3acfadfe,0xbb5e670e,0xbaaeca19,0x38a022e0,0xbb8d26bf,0xbb1366b7,0xb95dcaf2,0x384f8425,0xba940516,0xba8be34d,0xbac4634d,0x3b2aa72d,0xba997cac,0xbae81521, -0xbb010280,0xbb201e1a,0xbaeb122b,0xbbf4de10,0x3a5a2b9f,0x3afc9c3a,0xba5feb78,0xbb36c0a0,0xbbb9b50c,0xbbd8b2b0,0xbb1685ed,0xbb3c670d,0xbac5fe6e,0x3aa79491,0xba99e418,0xba9ca6d9,0xba568902,0x399d0c4a,0x36de75a1,0x387d05aa,0xba9dbbe3,0x3a4667d4,0xbafd0e58,0xbbb356d7,0xba771042, -0xbaa79346,0xbb292680,0xb98589b5,0xbab5531d,0x3b3f355e,0x3b96b3a9,0xbb40dbc2,0x3b22d040,0xbac6eb65,0xba0d0cdb,0xba574f0b,0xbae62a39,0xbb4a6aab,0xbad52292,0xbbee77e0,0xba60035e,0x3b849212,0xba66c80a,0xbb8dd68a,0xbc133b91,0xbc24e9d2,0xbb6e5220,0xbb9d9e8c,0xbb26494d,0x3b3c3e09, -0xbb2b373c,0xbb4843a6,0xbb89319c,0xbaf38897,0xba984888,0xba6372b9,0xbacc2644,0x39367b3c,0xba6c5e32,0xbaa19a48,0x3b3bbf81,0x3b3f1976,0x3b05f591,0xb979f543,0x3ae1446c,0x3b51aca3,0x3bd719d4,0x3b587e60,0x3bb84e05,0x3aff9ab0,0x3ab965ba,0xba97a5e9,0x3a0f76fa,0xb9a0b8f6,0xba53aa9a, -0xbb5bc2b8,0xbb312f59,0x3b94354f,0xbb1da60d,0xbba3cd9b,0xbc585841,0xbc68ab77,0xbbbcafb3,0xbbd0abae,0xbb340af2,0x3b4bab36,0xbb072665,0xbb33eef3,0xbb1f434a,0xba90f21b,0xba4e4cd7,0xbacd09f8,0xbb4baa68,0xba50fca0,0xb9dc6e46,0xbb9d4f14,0x3b54be03,0x3b7dd095,0x3b4390f4,0x3b618c93, -0x3a43dc1e,0x3bce6929,0x3bd8b487,0x3b83e2f1,0x3b92ef28,0x3b8a2097,0x39c3804f,0x3ac43d40,0x3a623490,0x3a7de195,0xbb3121d1,0xbc15f1f9,0xbb2f12e7,0x3bf11f85,0x3b924f03,0x3beb48ac,0x3bc19e7a,0x3b6ef45b,0xba97b5fa,0xbb55bef8,0xbbb8bab8,0xbb8d9076,0x3b0ffce7,0x3c0de206,0x3c8270e6, -0x3c0d1c22,0x3bbdc581,0x3c397820,0x3bcec064,0x3b5996d7,0xbb24166c,0xbb814930,0x3af0edb8,0x3ac6c5a1,0x3b642fcc,0x3b139e93,0x3c134ed1,0x3a696b4e,0x3a2b52d1,0x3b55accf,0x3c1d6f99,0x3c3443ef,0x3ae31788,0x3b0f9b62,0xbbadd167,0xbc518b79,0xbc65dde8,0x3b9594db,0xbc9b75f6,0x3b9c4434, -0xb9900503,0xbba07246,0xbc29dbbc,0xbc38883b,0xbc2e5a19,0xb9da53a5,0x3b96cffa,0xbb0f3ecf,0x399f7e8e,0x3abe6d28,0x3b815ca7,0x3b5b229a,0x3b30ed2b,0xba25e573,0xba9ac85b,0x3b1f5dad,0xba1d2911,0x3a1f178d,0x3ac85bf8,0x3adf9a3b,0x3be2f800,0x3bd4aac4,0x3b669213,0x3b85de6b,0x3b8bcf0b, -0x3be33b6d,0x3b41467b,0x3b14eada,0x3a7ed8ad,0x3b37cde0,0x3b846c22,0xbb9be149,0x3c4346e1,0xbbdbb401,0xbc8133f0,0x3aa6545d,0x399a718c,0xbb49b6cc,0xbc50c2b3,0xbc64001b,0xbc4c68d5,0x3b9ecc4e,0x3c443268,0x3b3a2b11,0x3bbb26ba,0x3a99fcb5,0xbb1f8f78,0xbaeaa029,0xba8bbf7b,0x3b37dcc2, -0x3a816f9f,0x3ad0d6db,0xbb01a8ce,0xbb291771,0xba88adf9,0xbb5a9eb1,0x3aa5d0d0,0x3a40a5a3,0x3b8bdd64,0x3b030a8d,0x3b80f7ec,0x3b84a716,0x3abfcf21,0x3af20bd6,0x3a11cd83,0x3b318c21,0x3b92d84d,0xba7381f7,0xba4f0a65,0xbaeb50f7,0x3b0772a9,0x3a554d1b,0xbb2554c0,0xbc2bb292,0xbc5c33fb, -0xbc4cd70f,0xbbea2526,0xba4e5178,0x3b0d71c1,0xbb970548,0xba8edf6f,0xbb931a5a,0xbbda285d,0xbbda52a9,0xbb6db425,0x3b5c3fd1,0x3999ad9c,0x3b088425,0xbae2a5d3,0xbb842389,0xbb0018fb,0xbae470e0,0xbada8f9a,0x3a00ed05,0x3b160c19,0x3b04f9ba,0x3ac07749,0x39a5a1c1,0x3b14f23a,0x3ab01b61, -0xba2dca1d,0x3b048d61,0x3b6bcc85,0x38c21352,0xb9a24624,0x3b15a031,0x3a26a23d,0xbc05001b,0xbc5045e6,0xbc55982d,0xbc4c35cd,0xbc1c8b03,0xbb2233c1,0xbc16e0da,0xbc3073ce,0xbc66d564,0xbc244c71,0xbbb4a529,0xbab47df7,0xbb36dbe3,0xbaf81401,0x3a8ce14b,0x3aa356c8,0x3b3eadbe,0x3a972623, -0x3a133504,0x3a2e56d4,0x37bfb893,0x3b1f44fc,0x3b1720a0,0x3a2a5321,0x3aad9cce,0x3a38a722,0x39f8e1d4,0xba6e6421,0xbae04962,0xbb4173ce,0xbb5f0837,0xbb60467c,0xbb72d0c8,0x39404e8a,0xbc9780b5,0xbc8db818,0xbc815de7,0xbc87efec,0xbc4f0150,0xbc617657,0xbc46ef2d,0xbc04266a,0xbc48427a, -0xbc644e27,0xbc3fbe2c,0xbc34d388,0xbbd1d4d5,0xbbd9f1aa,0xb9d7aea7,0x3b0a18c5,0x3b8798bc,0xb9ceccd1,0xba386351,0x39afb4d5,0xbb29284e,0xba9a3e10,0x39ccc1f0,0x3a8df0bd,0x3a6aa59a,0x3a9da61c,0xbb0a984f,0xbb0ef5be,0xbae77a27,0xbb229930,0xbb7e1e72,0xbc103e89,0xbc3a04c1,0xbc74ac72, -0xbcb66edc,0xbc4518db,0xbc62e55d,0xbc877aea,0xbc5ec372,0xbc5c794b,0xbc3bc38b,0xbc60866a,0xbc556589,0xbc3d76b9,0xbbe1bcc0,0xbb86dc37,0xbb676e93,0xbb5302c0,0xbb8069e4,0xbb77e8f4,0xbaf25439,0xba25024c,0x3b66692d,0x3b155c0f,0x3b331bf8,0x3b503f6e,0x3b49c919,0x3b61144a,0xbafa1206, -0x3a889011,0x39d54263,0x39f262d5,0xbade66b7,0xbb93538c,0xbbadeba6,0xbc0353a7,0xbc0e3136,0xbc1889f7,0xbc15e567,0xbc00bca7,0xbbee1314,0xbc567bd4,0xbc8c0906,0xbc861b0b,0xbc4b0e9f,0xbc422a2a,0xbc18a73f,0xbc0f9f88,0xbbdebf93,0xbbaa9a34,0xbb5de1e4,0xbb2404c6,0xbb35b6f3,0xbad04d31, -0xb9f0e84e,0x39a6ad0f,0x3b00b23a,0x3b6dc99e,0x3bbeb3c1,0x3b63da71,0x3b3adb61,0x3accb643,0xba6c8310,0xb96cab25,0xba2346d3,0xba07a4a6,0x3a8ad5de,0x3b171668,0xb9c7fa87,0xbaa96586,0xba8de42a,0xbb746232,0xbba6903b,0xbbf274bf,0xbbfd6131,0xbc18dd95,0xbc450581,0xbc642d66,0xbc4e48f0, -0xbc4fd9b7,0xbc22e243,0xbc228575,0xbc0b534a,0xbbcf6a4b,0xbb8c568a,0xbb20d52f,0xbb5c62d8,0xbb752186,0xbb48b718,0xbab32f3d,0x39ed8908,0x3a99f22f,0x3af588c6,0x3b2de050,0x3b6d2b55,0x3af04e5e,0x3b340bb1,0xbac957b6,0xbb408a9b,0xbab46369,0xbabe852c,0xb9abc95b,0x396aa3d9,0x3a5a5b8b, -0x3abb6ac5,0x3a7edcea,0xbb122cc4,0xba3d484b,0xbb37f7bf,0xbb280165,0xbbd1f1da,0xbc0dabb3,0xbc3b8b9c,0xbc2c75d1,0xbb67014d,0xbb4523ba,0xbb95c36a,0xbb962d2c,0xbb9edf9d,0xbbdb3c4b,0xbbf93b93,0xbc067421,0xbbc6ee7b,0xbb84039c,0xbb4bf7ca,0xbb31aca2,0xbb2cbe34,0xbb0e543b,0xbb292b36, -0xbb390d4c,0xbb393d51,0xbb33e1b1,0xbaf24670,0xbadaf431,0xbb8244f6,0xbb4b6fbd,0xbb67355f,0xbb3d383e,0xbb32c31f,0xbb0ea639,0xbb5dba45,0xbb910b34,0xbb7ada1b,0xbb7a0001,0xbb0778d8,0xbb690da9,0xbb745a67,0xbad8ce85,0xbaf2d98f,0xbb84adb7,0xbbd7fcd5,0xbb31b8b8,0xbb2fdec4,0xbb2885a7, -0xbb13586c,0xbaf41d84,0xbaaa9140,0xbaae7a47,0xbabb640a,0xbae23e70,0xbacf3584,0xba9ba923,0xba4873ce,0xb9c5c44e,0xb9ce5e08,0xb9c14408,0xb9b2dc81,0xb9f17446,0xba45bd8d,0xb9736212,0xbb9448bc,0xbbca0c69,0xbb8153d0,0xbb8f8c00,0xbbc12703,0xbb541058,0xbb53077f,0xbb47b068,0xbb47d3b1, -0xbb771316,0xbb8c71f7,0xbb8b3b28,0xbbc9cc42,0xbba77da1,0xbba506a2,0xbbef1120,0xbb53e0eb,0x3bfbd8bd,0x3c129f2e,0x3b8703d9,0x3b9139c4,0x3b974035,0x3b898df0,0x3ba5a190,0x3bafa109,0x3bb29bc4,0x3bac7dca,0x3bac6df1,0x3bad6287,0x3b9b694b,0x3b98836f,0x3b9c7dc2,0x3b9fdf4d,0x3ba968db, -0x3bacd142,0x3ba9fd6b,0x3b9f5ceb,0x3b9abfde,0x3bfc421d,0x3bc2fb21,0xbb2bf9d3,0x3c042036,0x3bda9fd0,0xbaf2584c,0xbaa695ba,0xba9c629e,0xba3277ca,0xb99a1795,0xb853c9e9,0x3a35b8f9,0x3bd3a17b,0x3c08ea78,0xbaa40e12,0x3bb72508,0x3b3c9a21,0x3bf1b7e1,0x3bb72ee1,0x3bbb6914,0x3b899bee, -0x3bf50435,0x3c0face1,0x3c118b98,0x3c07212b,0x3c09c21f,0x3c0b8ecb,0x3be00414,0x3bd436f2,0x3bee2ccf,0x3beb6be9,0x3bfac438,0x3bf0f5ec,0x3bde5958,0x3bc18f03,0x3bb2295e,0x3ba59008,0x3bb0372e,0x3b400e53,0x3bd8425e,0x3be9c48b,0x3b3e6e8b,0x3bf78803,0x3bf1bb5b,0x3bc4e092,0x3bccf151, -0x3b906634,0x3b7ec53f,0x3ba2bea1,0x3bb85784,0x3baa4c6c,0x3b93f64c,0x3c0a3fa8,0x3bde7164,0x3b86516d,0x3bb32d8e,0x3b127a80,0x3c04ab7c,0x3c27c792,0x3c2fbee3,0x3c2aa4d6,0x3c1d9ae4,0x3c2c066b,0x3bd78250,0x3bcc35f4,0x3be88ad0,0x3c02990f,0x3c11754a,0x3c1cc7e3,0x3c06b472,0x3bd5f746, -0x3bc50fef,0x3bd2e174,0x3ba49595,0x3be67058,0x3bb8340a,0x3b872067,0x3bdeacd0,0x3bc8e0ea,0x3c10fe84,0x3c0e7415,0x3bc1e0fa,0x3bd2e0e0,0x3b8182d5,0x3bb07c9c,0x3bb0118d,0x3ba47cde,0x3bf67318,0x3bd04b86,0x3bc11853,0x3bb31a9a,0x3b9dd225,0x38408337,0x3c14d03d,0x3c6389a2,0x3c6a7ada, -0x3c64eb18,0x3c5403d8,0x3c6da592,0x3c0edbd0,0x3bf2f357,0x3c21f069,0x3c30859d,0x3c3527b1,0x3c2facac,0x3c094fb9,0x3bc110a6,0x3b9b9eec,0x3bb29a69,0x3b81af61,0x3b9a8bf2,0x3b365cf9,0x3b87ac93,0x3b262e08,0x3c0db6c4,0x3be62aab,0x3b8ef2ac,0x3b8607f3,0x3b85b7c1,0x3b3c2da7,0x3b8e165b, -0x3b4d5e8f,0x3ba380a1,0x3b70fb94,0x3bf60158,0x3bcd2c6d,0x3ae9008f,0x3b8ebcce,0xbb400e0c,0x3c10549d,0x3c58d1b0,0x3c7fdd56,0x3c800007,0x3c66db0b,0x3c6af231,0x3bedf327,0x3bbc81ad,0x3bf6c290,0x3c288dda,0x3c4f870b,0x3c5be890,0x3c312e4e,0x3bee9d70,0x3b779c9b,0x3bb51473,0x3b765547, -0x3bf58092,0x3b92c63d,0x3b451f8e,0x3a8f5725,0x3b921521,0x3bdcbe25,0x3b69e318,0x3b96bf20,0x3b594960,0x397eb339,0x3b2a5d3d,0x3b3bcf14,0x3b4bd054,0x3bd0d299,0x3bf74eea,0x3c9cc980,0x3c4da708,0x3c65b814,0x3c84e56d,0x3cb180dc,0x3cc5d548,0x3c9c74d5,0x3c0d95c9,0xba3eb88f,0xbaf21445, -0xbb1d44c7,0x3b0963eb,0x3c317377,0x3bf5da6d,0x3bd8d1fe,0x3b87b1d3,0x3bdd5a6a,0x3c17b7e4,0x3c1823b7,0x3bc607f3,0x3b449d12,0x3b965e94,0x3b3d9e66,0x3b97adb6,0x3c0d6494,0x3ac93952,0x39cf44b6,0x3b8b1c82,0x3c3a5873,0x3c445a9e,0x3b7fb445,0x3b64caac,0x3aa83d2f,0xbbe00061,0x3b396d64, -0x3c192443,0xbc7a0230,0xba82a822,0x3b4d5988,0xbb8acd47,0x3b2545e3,0x3af6c959,0xbaf7cd06,0x3c07e006,0x3c33ce0f,0x3ae05fec,0x3b6197b8,0x3b923102,0x3c1b9c54,0x3c3b9dcd,0x3c6c0f26,0x3c9fe46c,0x3c6e5d60,0x3c296bbb,0x3bd0da2b,0x3b2c0262,0x3b952b02,0x3b6d8ac6,0x3c0acde0,0x3be1acef, -0x3b3bd957,0x3ba08468,0x3bbe8976,0x3bf4704b,0x3b458211,0x3adcc7f2,0x3b67519f,0x3b9c0c61,0x3bbd4507,0x3aeefc6b,0x3c7ae87d,0xbb0af1a3,0xbc33587e,0x3b77cb0e,0x3c349956,0x3c8a0181,0x3c989062,0x3c92563c,0x3c79a967,0x3c4e8645,0x3c1c7ca9,0x3bb3d2aa,0x3c0e444a,0x3c32fbaf,0x3c434286, -0x3c113025,0x3c04b93b,0x3c185a5b,0x3bbf3952,0x3b0912ac,0x3b5b5eaf,0x3b36ab43,0x3a0b52c4,0x3a95f32b,0x3b2fbc47,0x3b5d5a21,0x3b5bf2ec,0x3b6ce35c,0x3b1b1d58,0x3b83965b,0x3aea9987,0x3b3b7c56,0x3ab8674b,0x3ba07e6e,0x3bd3d60b,0x3b46a922,0x3ab6d2ff,0x3aced891,0x3bb6509e,0x3c3ae9a0, -0x3c973784,0x3d0858bd,0x3cc9c8ad,0x3cc1162e,0x3c8057b7,0x3c434e56,0x3c276f2f,0x3c186585,0x3c560d9a,0x3c54f0e5,0x3c2a1f17,0x3bc7c8e2,0x3b841a6c,0x3bd8b515,0x3b4cb394,0x3abcfa73,0x3a87359c,0x3b108332,0xba4203bc,0xb9889851,0x3a19fc57,0x3a6ad28e,0x3b61d3cc,0x3b08360e,0x3b15270f, -0x3b212302,0x3af2c5c1,0x3b2ccbcd,0xb9cbeb23,0x3b90b65c,0x3b8738f4,0x3b0da0ca,0x3a35558d,0x3af830be,0x3bd877b2,0x3c8c9b44,0x3cbc5541,0x3d022d33,0x3cd6ad33,0x3ca50a54,0x3ba167c9,0x3bbcf0b0,0x3b45cbc1,0x3ab7111f,0x3aaf2d3c,0x3b3bde9e,0x3b653358,0x3bc34985,0x3bfe90c6,0x3c28dddf, -0x3c09de39,0x3bc6af8c,0x3b946e31,0x3acd5394,0x3aaa8b4a,0x3b08ec64,0x3b71a379,0x3b2a320a,0x3a99f5f9,0x3adcf6a2,0x3a88b0a1,0x3a778065,0x3919cdc1,0xb9db69e3,0xbb26e8b3,0xbb512e59,0xba69f46b,0xbb739c30,0x3adeec0e,0xbb0e2920,0x3b866457,0x3c876b08,0x3c9555cc,0x3c912cec,0x3c8f5a85, -0x3c80cc80,0x3c4771ec,0x3b894ca1,0x3b74d417,0x3c4fa5e9,0x3c06aaf8,0x3c1742a5,0x3c06de78,0x3bbfe868,0x3b81247f,0x3b16596c,0xb8f78e09,0x393f1dd8,0x3b614a7c,0x3b872717,0x3b55a2ee,0xb9735144,0x3abad75b,0x3a243650,0x3ad5dc6f,0xb7e9f16c,0xba835e35,0x3a03216a,0xb9954300,0xbab07b50, -0xbba5666d,0xbc15228a,0xbc68769f,0xbc69546e,0xbc23454f,0xbc28eac9,0x3ac26faf,0x3b1c1dfa,0x3aac797e,0x38f48255,0xbb80b3d6,0xbb9ce84d,0xb9e1ccb4,0xbb4adb12,0xbb8544c4,0xbb5a90f7,0xba5b9ce3,0x3b0acf4a,0x3b648cf8,0x3bc4ccd7,0x3bd2546b,0x3bcdee08,0x3b70acdb,0x3b1fbb2d,0x3b25d97b, -0x3b398e5c,0x3b4af472,0x3b896de0,0x3b436991,0x3aee3567,0x3ab5a331,0xbb8d0af8,0xbba19b53,0xbba1875a,0xbbcef65c,0xbbde0908,0xbbff9a99,0xbbd8854c,0xbb9cbb90,0xba0c20e0,0xbb0dde6a,0xbc019930,0xbc108182,0xbbbff001,0xbbc4b360,0xbbe0b7c1,0xbb86f8fb,0xbabaf58c,0x3b2d294b,0x3a80f4b2, -0x3a758e05,0x3a410f36,0x3b27bef0,0x3b67e1d1,0x3b7fb2b0,0x3bb5120a,0x3bbe7ec2,0x3bd0264e,0x3ba03c64,0x3b7bad69,0x3b8acd38,0x3b88ca52,0x3b1be5ee,0x3afe5efd,0x3ad5fe24,0x3a978d0e,0x3abc60b6,0x3a4c4035,0xbaecfd9e,0xbb22a127,0xbb5909b0,0xbb89976d,0xbba2e4f2,0xbbbdcd1c,0xbbd07255, -0xbbdd39d2,0xbc1135a2,0xbbfec2e0,0xbbfef70e,0xbbf92fb3,0xbba9746b,0xbb459c9a,0xb9db49b5,0x3abc11b0,0x3b7fba9a,0x3b81d141,0x3b798762,0x3b82bab7,0x3b17fa3c,0x3b09dcbd,0x3aea158d,0x3af03ebe,0x3b235207,0x3b496f9e,0x3b494682,0x3b5e71b5,0x3b404080,0x3b310281,0x3a7cdfa5,0x3ab38ba1, -0x3ac107e1,0x3b28fe03,0x3b8a5fba,0x3aea3f5a,0x3b1867fa,0x3b248988,0xb92b9eeb,0x388358b2,0xbacebabd,0xbad4f356,0xbbb36f50,0xbbbbb3bc,0xbbd1c41d,0xbb5addd3,0xbad64f5c,0xba57d347,0xba3ca857,0xba5d74bc,0xba949eb2,0xba5bb541,0xb9361ce7,0xbab2b326,0xbac300c3,0xbaea7e9b,0xbab82d87, -0xba99286d,0xba70c31f,0xba8a5e31,0xbab51a5b,0xbb068006,0xbb1e725a,0xbb54966c,0xbaf7732f,0xba192690,0x3a516bcd,0x3af274ec,0x3b259cb3,0x3b0d0b77,0x3b278d38,0x3b178510,0x3b309f58,0x3a2c79bb,0x3ab5c1b5,0xb9ec6e49,0xb9e06dc4,0x39f80981,0xb970f01f,0xbae552ae,0x3a813c93,0x3b1144a9, -0x397ae9e3,0x3873ff9b,0x3a175119,0x3a95e6ad,0x3ad0875c,0x3afb9bfe,0x3b19353c,0x3b1f0a16,0x3b1c8bd2,0x3b11ece9,0x3b0285e5,0x3ad9f040,0x3abef9f6,0x3ab7b0f1,0x3abfb72c,0x3adeac12,0x3afb4933,0x3aefe80b,0x3abce251,0x3b4ec9e1,0x3b05b975,0xbb36385a,0x3b742e90,0x3b3cac6d,0xbb181950, -0xbb263135,0xbb1e13a6,0xbb10ba16,0xbb0e5016,0xbb022f02,0xbaf4d71d,0x3acc8c08,0x3b0fe9d5,0xbb781c55,0x3936776a,0x3b396ca8,0xbbb3e2a0,0xbbd97b61,0xbbaef093,0xbb8154b1,0xbb891f90,0xbb8a6ee3,0xbba25f0b,0xbba7ccf1,0xbb9cc750,0xbb9b5d44,0xbb98022d,0xbb871441,0xbb97e63e,0xbb9acdcf, -0xbb9b7029,0xbb941f61,0xbb960cef,0xbb912bfa,0xbb93c9f0,0xbb824077,0xbb997915,0xbb6d219f,0x37e61e27,0x3c24c67a,0xbbac08f0,0xba1bce7d,0x3c1f0637,0x3c1df3c6,0x3c18c6ee,0x3c0119e5,0x3c103473,0x3c048ea0,0x3bd44199,0x38bc4fa2,0xbbb7db54,0x3c0334ef,0x3ab17db2,0x3be90e36,0xbb99d91b, -0xbb86eff2,0xbba9e147,0xbbb0e21c,0xbc09fa7f,0xbc176ce1,0xbc043eee,0xbc034831,0xbbfc88b4,0xbbc48b1f,0xbbf3f279,0xbc0516b2,0xbc0a3153,0xbbf9c21a,0xbbeae6ce,0xbbd1062a,0xbbc2170b,0xbbb1c5aa,0xbbc26245,0x3aa29ad5,0xba751f13,0x3ae47426,0xbabecc10,0xbb88dd1e,0x3b2d8efe,0x39e5f84c, -0x3b210732,0x397fea81,0x3a5d6427,0xbb1f4ec0,0x3a5923b7,0x3a378d76,0xba00397b,0x39f0a2e1,0xb9904822,0xbb28b6c9,0xbbe803ba,0xbb6f70f4,0xbbb7a30b,0xbbbef613,0xbc3416c7,0xbc49eba2,0xbc1d3cff,0xbc220b02,0xbc148df0,0xbbd0650a,0xbc1e09d5,0xbc2a1e87,0xbc206430,0xbc17c1e9,0xbc0da1d3, -0xbc058388,0xbbe50f77,0xbbdfe28c,0xbb824dc1,0x3a68e7db,0xb9cc6b6f,0xbb3c6e8d,0xba3bb8ce,0x3a0afb07,0xb9f95f7f,0x3b65cdba,0xbaa4bb2b,0xb9a40304,0xb95232ba,0x3a260b56,0xbab4912f,0xba993903,0xba887bdf,0x38c2638a,0xbbb86eb4,0x3a8759ad,0x39b4bf39,0xbb68c864,0xbb9dd73a,0xbbd5eb93, -0xbc64cc88,0xbc8dce89,0xbc5a748d,0xbc695c1b,0xbc510a6d,0xbbe5d06b,0xbc5586e2,0xbc64174c,0xbc7ba7bb,0xbc5d0a42,0xbc3eb470,0xbc1c0722,0xbc0a199c,0xbbe88dc9,0xbba75fd9,0xba9d4199,0xbb00e40b,0x3abfd359,0xbaab5f26,0x3a873ce7,0x3a58eaec,0x3ba76837,0x3be2d4b0,0x3b755eea,0x3b6fcc16, -0x3b249fba,0x39e70cbc,0x3b0aaaf5,0x3ac625de,0xba7f2f24,0xba8aafa5,0xbbefc356,0xbbac3f04,0xbb5709f4,0xbba518cf,0xbbc41bd3,0xbc8bd086,0xbc97a211,0xbc614de0,0xbc6c299a,0xbc492931,0xbbeb3d8c,0xbc57bfd5,0xbc7ddf9d,0xbc6676b8,0xbc6992e7,0xbc4b3775,0xbc3f1bf2,0xbc23f2dd,0xbc0294e6, -0xbb9594ae,0x3b264994,0x3998c121,0x3b289419,0x3ad36f09,0x3adec95b,0x3b047e3a,0x3bb94d4c,0x3bdcdb3b,0x3b4c2ece,0x3b8c9f64,0x3b58a313,0x3a965d48,0x3aa12ac5,0x3a2b33a8,0xb9909589,0xba19f437,0x3b847036,0xb999c5d3,0xbc11c735,0xbc18b77c,0xbbd02ebc,0xbb0497e5,0xbbacf277,0xbc7f656b, -0xbc6a19e9,0xbc872497,0xbc8cdbaf,0xbc71517f,0xbbb713b0,0x3c40ce62,0x3b85f289,0x3b0c989d,0x3afeb204,0xbaa1df3c,0xbb8a073a,0xbb9af6f9,0x38220aee,0xba239a90,0x3b0393c5,0x39fa1a7b,0x3b0d1184,0x3bfadbbc,0x3a547472,0x3aacbf5c,0x3bcbff1c,0x3c1e7b9f,0x3c0f8d71,0x3a91eb49,0x3a7cd8f5, -0xbb76c279,0xbbb130b5,0xbbf71caf,0xbbd6dcc9,0xbcb28951,0xbab26be6,0xb9920432,0xbbb94268,0xbc1760f4,0xbbef99c6,0xbbba79c3,0xba522b8a,0x3aa258bf,0xbb09383a,0xba2708d5,0xb8c3981e,0x3b44d5a1,0x38349857,0xbb0f0d9d,0xbc224a3b,0xbbf0a4b2,0xbbc1f982,0xb89aca87,0x3b7d39c4,0x3a3bda08, -0x3a940456,0x3b9c59f2,0x3b9a63fc,0x3b2ae49a,0x3ba96f91,0x3bae68d7,0x3bd7e918,0x3b10f807,0x3b0b59b9,0x3b70abe7,0x3b75e25d,0x3aef93e0,0xbac9e3fb,0x3b164d6b,0xbc02ae78,0xbc61a4dc,0x3b0e18b9,0x3a2bcc91,0xbc0f6a79,0xbc903e10,0xbcb9cdbc,0xbcc836f5,0xbc33669d,0xbb11096c,0xbb000566, -0xbbb22b1c,0xbc0e4f23,0xbc29cd48,0xbc2388e9,0xbbf0ec57,0xba1196dd,0xbb445382,0xbb99d118,0xbb98c648,0xbb493a6a,0xbac527f9,0xbab3b039,0xba9f6fe5,0x3a33ec9a,0x3b83dd18,0x3b19af95,0x3b716e92,0x3b5f5dcc,0x3a89b8fb,0x3accede8,0x3a3c88a0,0x3b2b10ec,0x3b989d95,0x3a7177c1,0x399f736e, -0x3b7c917a,0x3b9b3c31,0x39e80fe1,0xbbbe0312,0xbcbe1b97,0xbcd088ca,0xbce3b508,0xbca71a97,0xbc7d644a,0xbc1a2ea6,0xbbe1714a,0xbc3e0959,0xbc63f351,0xbc82a7a9,0xbc6a4bb9,0xbc239fd8,0xb9ac29a8,0xbb3ba1b9,0xbb6a7454,0xbb2806d7,0xbb7d977e,0xbb3544bf,0xbb06d2fe,0xbb029367,0xba2faa5a, -0x3b50a62c,0x3acded7f,0x3ae4f9c7,0x3a4eb85f,0x3b058f03,0x3ad2e1b2,0xbb1069a3,0x3b5b1862,0x3b5a31bd,0x3a52d69b,0x3a2324b3,0x3a86f268,0xbb07eb80,0xbc4f6198,0xbc8e5460,0xbce8d4b1,0xbca3016d,0xbc484b6a,0xba9a8ac9,0xbbc2fe41,0xbbb1c936,0xbc09513a,0xbc05fd7c,0xbbdaa738,0xbb58b0e8, -0xbbb994ea,0xbbcbcaf6,0xbbb5e13f,0xbb79348c,0xba839aa5,0x3a14ba78,0xb9da1607,0xbac1139e,0x38abd67f,0x39bb102f,0x3a460297,0xb9f3b539,0x3acd4d1c,0x3a83b936,0x391f0e3a,0xb94b165f,0xba30f469,0xbb66e153,0xbb97a811,0xbbc9eff2,0xbb5b6b8f,0xbb2ce227,0xbbfd881b,0xbc2458d3,0xbce6a040, -0xbcccb9b2,0xbc9d9bfd,0xbca67e86,0xbcb7a77b,0xbcaffb7f,0xbcab2f14,0xbca5c54e,0xbc8bd222,0xbc5f50c4,0xbc1c79a9,0xbc0f3d80,0xbb1fc1f2,0x39c8fb7a,0x3a834b9e,0xb97daa23,0xbad8b38a,0xbb15e1e3,0xba9d5616,0xbaae25df,0xb99c25f5,0x3a50741e,0xb7da4468,0xba568d5e,0xbac6f316,0xbabdd378, -0xbabc7c7b,0xbb0f6825,0xbba239c2,0xbc09a864,0xbc454dbc,0xbc4095b7,0xbc7c33a1,0xbc52b947,0xbb0af094,0xbc808eb4,0xbc8706ad,0xbc86f245,0xbc99cb46,0xbc9803b9,0xbc8aff59,0xbc864be9,0xbc2a13a3,0xbbc2211d,0xbb71571d,0xbbade3ea,0xbbc607fc,0xbba8eb9d,0xbb70f1cb,0xbb4a239e,0xbb1743f9, -0xbb1aa26b,0xba7e95ff,0x3b71af6c,0x3b0d56e2,0x3a804053,0xba14f96d,0x39df1b11,0xba025661,0xbac4d82c,0xbbbc6287,0xbbe343ca,0xbbe9a4dd,0xbc07b26c,0xbc19bfa0,0xbc240ddc,0xbc22840e,0xbc1e21f9,0xbbc260e9,0xbc2de3bd,0xbc36385e,0xbc550d1b,0xbc7ec205,0xbc71738c,0xbc735b14,0xbc6294c5, -0xbc5ee3cd,0xbc63d841,0xbc2544b0,0xbbfac040,0xbbb72485,0xbb6b4e7a,0xbaebebc9,0xba196a75,0xb7dd1feb,0x3ac5feed,0x3b062ecd,0x3a6391df,0x3a064280,0x3a56290a,0x3ada1c6c,0x3affbaa2,0x386471eb,0x3a30d8d7,0x3a1ab4aa,0x39e3cc69,0xba9331c3,0xbb2d6fcc,0xbb67db49,0xbba6abc0,0xbbb86e87, -0xbbde58ed,0xbc057c76,0xbc0d7d2a,0xbc0b7852,0xbc1f9b26,0xbc21ee0d,0xbc622e81,0xbc44dbcd,0xbc4581e7,0xbc42a18b,0xbc32060f,0xbc1b1322,0xbc04172a,0xbbf1124b,0xbbdb88cc,0xbbacc42c,0xbb27d11d,0x39b7dfb7,0x3b400ae9,0x3b1aaa15,0x3b142014,0x3b008f73,0x3abbb05c,0x3aa00456,0xb936fe22, -0xba889b98,0xb90ee76d,0xba8d42ca,0xba0432c0,0xb989be09,0x388d1c6a,0x3a019c59,0xbb87d7c7,0xbb1305e5,0xbb906c7c,0xbb32781a,0xbb6a0821,0xbbcb0fe6,0xbbd9b44c,0xbc2de4a6,0xbc37645f,0xb9df7e13,0xbbd6c14a,0xbbe507ab,0xbbe5b4b2,0xbbda96dd,0xbc0069d6,0xbc082746,0xbc172919,0xbbdff7c6, -0xbb956bec,0xbb44647b,0xbb011522,0xbab9e684,0xb914386a,0xba418e49,0xba6a966f,0xba5b0886,0xba96009e,0xba240ae0,0xbac66ca1,0xbac62ac9,0xbae7778e,0xbad88294,0xbae7c0b4,0xbaaeda8f,0xbac3a386,0xbb020a8c,0xbb416fe8,0xbaba546c,0xbb3293ec,0xbb8eded1,0xbaf053d2,0xbb988816,0xbb15d628, -0x3a024ef1,0xbbd742cd,0xbb9bbef1,0xbba6786a,0xbb87269d,0xbb878604,0xbb81efb5,0xbb7d3d57,0xbb5fecb3,0xbb5fa44c,0xbb4ecaa0,0xbb528894,0xbb402b65,0xbb1cc652,0xbae6b631,0xba93c5dd,0xbaaa3d7e,0xbab1bba8,0xbab89220,0xbacd7d46,0xbadd1745,0xbae7b3be,0xbb3276d4,0xba416b32,0x3b74e464, -0xbb4c399b,0xba610a1b,0x3ba0a1e1,0x3bb3171f,0x3b94d860,0x3b805a00,0x3b8b85d7,0x3b6e7fed,0x3b2bcecd,0xbb037a59,0xbb8c0e53,0x3b0295f4,0xbad4a354,0xbb7e0eba,0x3c09a417,0x3be51045,0x3c13177f,0x3bc05511,0x3bbc763b,0x3bab04aa,0x3bc72cd6,0x3bd5f785,0x3be199f9,0x3bdb60f2,0x3bdda7e4, -0x3be0ff1a,0x3bc8c92b,0x3bc47eb1,0x3bc62a57,0x3bd0a557,0x3bddbb8b,0x3be2b1c5,0x3be2b938,0x3bcb1636,0x3bebf877,0x3b4ce3af,0xbaac5407,0xbc1952dd,0x3ba57593,0xb9f22910,0xbc10d6f6,0xbc0c67aa,0xbc03ea49,0xbbe28faf,0xbc0d1080,0xbc066c25,0xbbe2c152,0xbac31b62,0x3bc73d0b,0xbbf748ed, -0xbb4947c8,0xbc10737e,0x3c00af18,0x3bf3e6b6,0x3bd3bcb5,0x3b98d5eb,0x3bf49f30,0x3c138ee2,0x3c2a8e75,0x3c1fe40d,0x3c253eb5,0x3c25a1f3,0x3c00f494,0x3be9cdfe,0x3bf6ea9a,0x3c03ebd7,0x3c159673,0x3c185c5c,0x3c0d3a85,0x3c075727,0x3c1416e9,0xba9e1470,0x3b0acfe2,0xba97b6ba,0x3a676520, -0x3bb7bd8f,0x392ed044,0x3b9a8849,0x3b04fda7,0x3b3c9e48,0x3b079ed2,0x3be3949f,0x3a3dfbf0,0x3aba1851,0x3b223fcc,0x39ff6538,0x3ae3f340,0x3a756c7e,0x3c47ca16,0x3bcf15eb,0x3bb20819,0x3afbfb17,0x3bdd1119,0x3c11f7a5,0x3c4093b4,0x3c3cea52,0x3c362ff6,0x3c47117f,0x3beeb497,0x3bd14704, -0x3bdff3c7,0x3c140453,0x3c2863f3,0x3c4856a0,0x3c21ef60,0x3c2f3108,0x3ba77abb,0xbb07d9fe,0x3ac7360f,0x3b3e170d,0x3a8c8917,0x3af83788,0x3ba3d640,0x3b9a2333,0x3c3b4444,0x3b891734,0x3bd1a566,0x3b345b00,0x3b6b3cce,0x3b99f5a6,0x3b8034c0,0x3a01fd8f,0x3c04b91e,0xbab22cfd,0x3bbe834d, -0x3c17da9b,0x3b813881,0x36c49a7c,0x3bc34f90,0x3c3243d2,0x3c7c0130,0x3c78a7af,0x3c6ec229,0x3c83f080,0x3c0deb18,0x3bcbc224,0x3be59afd,0x3c281625,0x3c42f8ff,0x3c580f1a,0x3c390929,0x3c2ade46,0x3bcb767c,0x3b3ec8b9,0x3bafc00d,0x3a50b8b7,0x3b7662da,0x3b16884d,0x3bb0ab51,0x3bda149e, -0x3bed06d9,0x3b91aa41,0x3bc21a64,0x3b73f149,0x3b655153,0x3b22ea83,0x3b3c8bb6,0x3b6835b7,0x3b82fa31,0x3bd7c636,0x3c0a3a3d,0x3bfb3b7d,0x3b24c54a,0xbb6b5323,0x3b80e332,0x3c0f7efc,0x3c7b9c87,0x3c8122a9,0x3c7afe26,0x3c8938f9,0x3bfa7a71,0x3ba4ad87,0x3bc55454,0x3c27c851,0x3c66bab0, -0x3c8933ad,0x3c598f0d,0x3c3e1c57,0x3bbb08dd,0xbb8722e6,0x3b4c0db8,0x3b3ca25b,0x3b7982fe,0x3b88ee00,0x3b2819ab,0x3bed5aca,0x3c0184d3,0x3ba33940,0x3b8bca94,0x3b8feafa,0x3a8fc5de,0x3b86b00f,0x3ba266ff,0x3b648197,0x3aeb2b2d,0x3baed5d6,0x3c66f6fe,0x3c8c1244,0x3c6d42d1,0x3c8985a0, -0x3cd2ff39,0x3ce30652,0x3c94944d,0x3c8cd603,0x3c096e3f,0x3b89f4be,0x3b2d5115,0x3bcb8424,0x3c88bd14,0x3c436a08,0x3c25a261,0x3c48be23,0x3c482c0b,0x3c636094,0x3c3a7adf,0x3ba71f2b,0x3bf3e5c1,0x3b68c83a,0x3b797168,0x3b082c23,0x3bfb2ff2,0x3a720d29,0x3ad24c16,0x3c02b738,0x3c349fa5, -0x3c14f99d,0x3b2a9c81,0x3b061e72,0xbb07add3,0xbc2b80ee,0x3bd4aa67,0xbbb1dc4f,0xbbbb3e4e,0x3c169c12,0x3bf0da8d,0xbb98fa74,0x3b1b70c3,0x3ae066b9,0xbaad39a0,0x3bc7bb51,0x3c1118a5,0x3bbd1711,0x3ac44d92,0x3a8d9087,0x3befddc6,0x3c483bc9,0x3c8ec511,0x3cbffea3,0x3c629e8d,0x3c46f535, -0x3b88f7da,0xbb0f2bf9,0x3b1f75e5,0x3b28ee3a,0x3be13309,0x3bd7d255,0x3b5263cb,0x3bd4bb63,0x3be3e340,0x3be0905c,0x3b40731a,0x3b441d0d,0x3bc68a4c,0x3b41c037,0x3b9c27d9,0x3c05dfa6,0x3ab3924b,0xbb997316,0xbb6dd30f,0x3c130cf3,0x3c613bfb,0x3c871056,0x3c886c31,0x3c720046,0x3c550a2b, -0x3c519c68,0x3c433194,0x3c3b4d85,0x3c524b52,0x3c76a597,0x3c82f85c,0x3c6ce073,0x3c3da344,0x3c25070c,0x3bb8987f,0x3b67fa15,0x3b909157,0x3a2ea8f9,0x39e839ae,0xb9cfed98,0x3b0e0570,0x3b463b52,0x3b6c3fda,0x3b6daba0,0x3b79ac79,0x3b828fd2,0x3b1c1160,0x3b29c966,0x3ac9584f,0x3bae4f28, -0x3bbf3c72,0x3b9f3347,0xbaed62ff,0x3b542416,0x3bfd0e65,0x3c589670,0x3c8d4b3b,0x3cf42cc3,0x3cbd4ae8,0x3cbde7ec,0x3ca4e3fd,0x3c56e174,0x3c2aac55,0x3c46a835,0x3c6c3dee,0x3c6cef2b,0x3c5262e0,0x3c262a6a,0x3bec8bdc,0x3bea04c1,0x3b53adae,0x3b8e94f1,0x3abd5120,0xb7037e1d,0xb9fcbfcb, -0x3a690d6c,0xbab3f4d0,0x3aa67108,0x3b5fbe5e,0x3b4168d5,0x3b349677,0x3adb00c4,0x3b570170,0x3b2e9ad5,0xba260589,0x3b381de7,0x3b9e5c23,0x3a72be97,0x3bb9a43b,0xbb5f99c1,0x3b4016dd,0x3c5e52af,0x3c9d7435,0x3d047833,0x3cdc2fbd,0x3cb9c5f2,0x3c4ced3b,0x3bc3480c,0x3ac5bff9,0x3b491d89, -0xbaec4161,0x374373a9,0x38b4c4a7,0x3ba91dc0,0x3c014284,0x3c49425a,0x3c2faf13,0x3c11dc56,0x3b93452e,0x3a829efa,0x3a8dffb0,0x3a6b38e9,0x3af94a2b,0x3aa18bba,0x39f702a6,0x3b16b5cf,0x3b18c361,0x3a795382,0x3a76d62b,0x3808c884,0xbb1fce20,0xbb7519a9,0xbb12e636,0xbbc28f6b,0xbb58d1bc, -0xbc34fdb1,0xbb3f0074,0x3c94f4ff,0x3c801170,0x3c9c8072,0x3c85da7d,0x3c66970a,0x3c0df9f7,0x3b8c8777,0x3b6803f7,0x3c1ef6d8,0x3bc2181c,0x3c0b5380,0x3c018674,0x3b93d2a9,0x3b005208,0x3a350bdf,0xbacc2e65,0x39761d6c,0x3b8d796d,0xb9553841,0x39c5fc7c,0x3a34a5dd,0x3a1eac27,0x38cd5245, -0xba869d32,0xba3f2ac0,0xba08ed07,0xb8be30aa,0xbaa99244,0xbb0f5b91,0xbbe256c0,0xbbfffcb8,0xbc68f020,0xbc42294e,0xbbdff3b8,0xbc70b52d,0x3a63b08b,0x3b4f249e,0x3af5eb77,0x3b096210,0x3b2d7bd6,0x3b767ebe,0x3bbbb763,0x3a9bbb57,0xba9ece55,0xbab87949,0xb95b9f18,0x3ac118e9,0x3b4001fb, -0x3babc11f,0x3bc81866,0x3ba3bf2a,0x3b86d707,0x3b54187b,0x3aa36f0a,0x3b0d86f9,0x3b7e8bec,0x3b0b8422,0x3b3d00c0,0x3aa5e7ec,0xbaf1e4f1,0xbb893ec4,0xbbbfe34e,0xbba04120,0xbbe196ab,0xbbe889fc,0xbc0d5ba2,0xbc25d5ea,0xbbe9c65e,0xbb8d3ec2,0xbb85492a,0xbc106f49,0xbbe89aab,0xbaa962b6, -0xbb615411,0xbbac14e5,0xbb221a1a,0xb9eb1579,0x3b410cd1,0x3aa0a1db,0x3a8fff78,0x3a47313b,0x3b524f8e,0x3b9a83cb,0x3bbbe9c0,0x3bbeebd3,0x3ba59907,0x3b902e50,0x3b8d607b,0x3b8a26a6,0x3b93bc5a,0x3b1f1264,0x3aaef55c,0x3b34d060,0x3a45d157,0x3a7cb143,0xb8adb35a,0xbb005110,0xbb8d071d, -0xbb92e2cf,0xbb920812,0xbb9e6e26,0xbbb5b950,0xbbc46b7f,0xbbdd744c,0xbc0d4f7a,0xbc073bf6,0xbc2610e0,0xbbad57d0,0xbb9cacc4,0xbb837185,0xbae8a808,0xb9cb64c7,0x3a831f7e,0x3b423ce3,0x3b5c18de,0x3b8220f0,0x3b912c0f,0x3b7c0b91,0x3b7c23b3,0x3b85a38f,0x3b6e6c90,0x3b6d375e,0x3b7f4f42, -0x3b7dfb75,0x3bb7f2fd,0x3b7ef416,0x3b4fff93,0x3afb4656,0x3b321310,0x3abf1139,0x3aa56e41,0x3ac5b204,0xb9cdbf3f,0x3a969385,0xbb551598,0xbaaa358e,0xbb2281c3,0xbab3bb81,0xbaeae457,0xbbdc9b91,0xbbb3726f,0xbbb950b5,0xbbfa01e3,0xbb20a997,0xbaabed9e,0x3847eac3,0x3a828f6c,0x3b1cba01, -0x3b83e7d7,0x3bb9c8b4,0x3b9ab656,0x3b82984a,0x3b65700f,0x3b68c3b4,0x3b61d09e,0x3b517ac1,0x3b4af195,0x3b36f279,0x3b28a8b2,0x3b09151c,0x3aa4e313,0x3b212109,0xb9a34448,0x3a7478d2,0x39b466f2,0x3a9174a9,0x38d587ba,0x38df497b,0xba250b3c,0xb96a6ddd,0xbaeade2d,0xbab06305,0xba85323b, -0xbb9fbc94,0xbb467e49,0xbb550ff7,0xbbd27d66,0xba9a6d57,0x39fcb2d5,0x3ae80242,0x3aac4a43,0x3afd0995,0x3b1cf9be,0x3b3142b1,0x3b3b68b5,0x3b5c0bb8,0x3b5e8076,0x3b6f55c3,0x3b71c088,0x3b676f11,0x3b5c1d85,0x3b5745f7,0x3b56c0ad,0x3b5be6f5,0x3b671c05,0x3b701c39,0x3b67e94e,0x3b860944, -0x3b294167,0xba25b604,0xbb9d49d1,0x3b25d827,0xba2bd7ae,0xbbaae4b6,0xbbbd7e93,0xbbadbc2b,0xbba4ea03,0xbbbb8694,0xbbae9e05,0xbb8dd1fe,0xba73bd7e,0x3ab7702b,0xbbbc749a,0xbb554424,0x3b89d5b9,0xbb973338,0xbb24306e,0xbbeac63c,0xbb83ecc3,0xbb85a5dc,0xbb84f55c,0xbb91ba37,0xbb964ddc, -0xbb918dfa,0xbb92178b,0xbb9234d7,0xbb89a31d,0xbb9bcd09,0xbba1f088,0xbba6248d,0xbb9e04db,0xbb9b8970,0xbb8eb8d0,0xbb8ee137,0xbb7283e8,0xbba8e1f2,0x3a9e3895,0x3bb19493,0x3c2d3b1b,0xba9d02f9,0x3ba72d06,0x3c39a229,0x3c3b7ff8,0x3c3230e1,0x3c1bd92b,0x3c3fcfd7,0x3c36ded1,0x3c1f1c5d, -0x3bd27eea,0xbac8cb5f,0x3c1b1d1d,0x3bf76a8e,0x3c6941e6,0xbb0f9e9d,0xbb90e6ea,0xbb9b354b,0xbb9bd6c5,0xbbd539fe,0xbbe68372,0xbbdbaeb4,0xbbdf3ac9,0xbbe55072,0xbbc03ad4,0xbbef264b,0xbc051d4a,0xbc0af47e,0xbc001755,0xbbeb31b0,0xbbc12567,0xbba17f5b,0xbb9f4cfd,0xbbd92dee,0x3bb2c916, -0x3aaa6a10,0x3b2b9cef,0x3b49d619,0xbab74c99,0x3b92d935,0x3b466b8e,0x3bcffc0a,0x3b481a43,0x3b8ad351,0xbb5875c6,0x3b426121,0x3b7b64d2,0x3b338817,0x3b842057,0x3b31c7dc,0x3baa8cae,0xbbd0c194,0xbb8f72ae,0xbb998bd8,0xbb9f1cb5,0xbbf1af43,0xbc0033a4,0xbbe6bc99,0xbbf09a44,0xbbf53aff, -0xbbc8a4d3,0xbc1ace0e,0xbc304ff3,0xbc2a87f3,0xbc26bf7b,0xbc0d4918,0xbbe94fbd,0xbb9f0364,0xbbd0f0da,0xbab47830,0x3be8f7d1,0x3ad2fec2,0xba6c57c4,0x3b17cbf1,0x3b029f43,0x3b3dcb9c,0x3b963e2c,0xbad17626,0x3ba13505,0x39b374ba,0x3b8ad895,0xb96fee65,0x3a9bd6be,0x3b0d65f6,0x3b874f12, -0xbb472c70,0x3c21a6ee,0x3b9451eb,0xbba74853,0xbb7fbac5,0xbbb544ea,0xbc10014f,0xbc2fd0c8,0xbc19a1b8,0xbc2bcb77,0xbc2db930,0xbbe494fe,0xbc491dbc,0xbc635749,0xbc75593f,0xbc6326ad,0xbc39292c,0xbc0064a6,0xbbbf4fb6,0xbbc33255,0xbb6ae5cc,0x3abb7581,0xbb5e00c9,0x39afa857,0xbb22fe98, -0x3b38a27b,0x3ab26504,0x3bfc969d,0x3beb72a0,0x3b937c24,0x3b2875b6,0x3b74f675,0x39f38db7,0x3bbc3919,0x3b5d6be1,0x3aa41ff9,0x3adda410,0xbb6414b6,0xba4f9b32,0xbbcc967f,0xbb5ed756,0xbba84b3b,0xbc1bbe0a,0xbc1a104b,0xbc0a5ae8,0xbc15a636,0xbc17bc6d,0xbbf9545a,0xbc5413bc,0xbc862026, -0xbc785ad8,0xbc7ed5eb,0xbc4684ea,0xbc13c5f4,0xbbc3e1a0,0xbbc03837,0xbb569619,0x3c13b42c,0xba343a87,0x3adbf9ae,0x3a819883,0x3a8d493f,0x3b5709a5,0x3bae1843,0x3bf0228f,0x3b731b11,0x3b96dfe3,0x3b3c4b57,0x3abb8cde,0x3b11a168,0x3b2a2a06,0x3a4d4fa8,0x3b7855f8,0x3c93076c,0x3c2801b3, -0xbc32a9ee,0xbc1d715b,0xbc07d12e,0x39b87954,0xbadbac9a,0xbc659526,0xbc504802,0xbc8f3d3e,0xbcb836de,0xbcb8667d,0xbc67e05e,0x3b9b5589,0x3ad8af23,0x3ac4c268,0xbb755043,0xbb659ee8,0xbb973325,0xba529761,0x3bc57f55,0x3984ba5d,0x3b91e8e0,0xb8ef5883,0x3b2ee5b5,0x3bc4c9ea,0x3a4471af, -0x3afda482,0x3c16c832,0x3c169dd6,0x3bdbfda5,0x3b29d995,0xb9dfc3d9,0xbb0b7a0b,0x3a068c98,0x3b9530de,0xbc6ce0d3,0xbc98fcb2,0xbbde5b2b,0x3a5b82a8,0xbba8ce89,0xbafb7866,0xb98f6390,0xbb0c64e5,0xb938efab,0xb7c0d994,0x3a58fc2c,0x3a02a162,0x38203f29,0x3b19e444,0x3aa29ca1,0x39ba8fe2, -0xbba47235,0xbb5f8b97,0xbbb82d81,0x3b2dff42,0x3bb17429,0x3ab94959,0x3ae3ce4f,0x3b558993,0x3b446cfa,0x3aef9dbc,0x3bc62e23,0x3bdb2da0,0x3bce2733,0x3b1f8597,0x3b11b5ab,0x3bb68b26,0x3b7df055,0x3b0955a7,0x3be57a6a,0xbbc54e87,0xbba8b040,0xbbcb5ff6,0x3b9f0b5a,0x3b9feb5f,0xbb1bf057, -0xbbae0c07,0xbc498b91,0xbc8dd9c8,0xbc7dcb8e,0xbc2f87b3,0xbb241024,0xbc0677b7,0xbbf970e2,0xbc023fa3,0xbbed2175,0xbb9bcd8f,0xba1c3f71,0xbb2a57b3,0xbbce4499,0xbb35c897,0xba56ee2b,0xba18b315,0x3ad800c9,0xbabb49bc,0x3acfaedc,0x3b597f05,0x3b538d18,0x3b51cbcd,0x3b2c630d,0x3ad9d9b5, -0x3b061220,0x3a4c9403,0x3b4a1c51,0x3bab39d3,0x3ba8d83f,0x3acb745e,0x3c19a3b8,0x3c0b6d8d,0x3bb4f716,0x3a78a595,0xbc1ddb3e,0xbc5af624,0xbc8d3ba5,0xbc454235,0xbc81542e,0xbc4185de,0xbacc5d76,0xbc26b483,0xbc240837,0xbc40cd13,0xbc1d1061,0xbbe77e3e,0xba6f8e4a,0xbb18ec69,0xbba7977d, -0xba993a79,0xba72227b,0xbafb8fce,0xba581bea,0xba37cfbd,0xba4bc4b0,0x3b6a014e,0x3abe66cf,0x3b12e256,0x3aeb6bfa,0x3b025f11,0x3b0f0312,0xbaf86e3c,0x3b666187,0x3b510b46,0x3b25d196,0x3b8020fc,0xbb29d4d3,0xbb7eaaa1,0xbbcc4849,0xbbb1eaec,0xbc686453,0xbba987a6,0x39aab6ac,0x3b9af855, -0x3b0bd70a,0x3b024006,0x3ae8255f,0xbb2c5b46,0xbb831420,0xbae45270,0xbb1db65b,0xbb4b7d0e,0xbb49a3a3,0xbadbd312,0xb9cfbfec,0x3af3f844,0xb804deb6,0xbac5dc23,0x3a8ac942,0xb9bf8e6f,0xb9409a4b,0xba896b1f,0x3ae5a9bd,0x3ad6ef42,0x3a250d95,0x3a8173ff,0x398b89e7,0xbb6d2683,0xbb8a12b0, -0xbbb0bb00,0xbb5be94d,0xbba7fc0b,0x3b8471ff,0x3a8dc42e,0xbc843b61,0xbc422c0b,0xbc2478f2,0xbc3903af,0xbc862dfd,0xbca3c396,0xbc81e38f,0xbc5be07a,0xbc0d3df0,0xbbb6aaed,0xbb98c212,0xbb4ea283,0xbabfea95,0xb9cce2be,0xbaa61856,0xb9c6dc99,0xbac30983,0xbb0ef505,0x3b09b6d1,0x3a3009ff, -0xba814af5,0x3a317441,0xb9706447,0xbafc7f8a,0xba42362f,0xbac85020,0xbad34844,0xbb0a4301,0xbb8e189b,0xbbc17a5c,0xbc16deac,0xbc01d703,0xbbe0ff84,0xbc23c43e,0x3b053801,0xbc065be9,0xbc2da37c,0xbc269c36,0xbc5c145a,0xbc4f2ac1,0xbc406fa6,0xbc4aef37,0xbbe3a46b,0xbb8327c6,0xbb6a953f, -0xbb93ced3,0xbb74dcd0,0xbae2ba26,0xba67dbf6,0xbad1cb5e,0xbb59ebf3,0xbb452727,0xbaf0e8ac,0x3b4ff56f,0x3aeeef10,0x38d3249d,0x3b136c5b,0x3a126550,0xba54a5d6,0xbb31915f,0xbbf8afd2,0xbbe79ae8,0xbbe36c15,0xbbef4017,0xbc12ab97,0xbc292580,0xbc1e9e99,0xbc26072b,0xbbcc2c00,0xbbdaec2c, -0xbb7b7d0f,0xbbe192f0,0xbc474979,0xbc3a487d,0xbc561ea5,0xbc42ab4e,0xbc4f9b6e,0xbc5f2b15,0xbc23103d,0xbbfe7e12,0xbbbda1bb,0xbb595837,0xbaa8e7e7,0x3a4fdec8,0x38b289ed,0x38657b90,0xbaa55205,0xba72ca0b,0xba80f335,0x391dedb8,0x3b5d45b1,0x3b5d83b1,0x3b03ded1,0x3ae55404,0xb8f39dd6, -0xbaf98f62,0xbafe78ba,0xbb864c5f,0xbbc236f8,0xbbc46032,0xbbbd4a08,0xbbacd9af,0xbbe7bbec,0xbbd0a1c4,0xbb86e284,0xbb9375f1,0xbbadea34,0xbc2c7fcd,0xbc2745b3,0xbc1e217d,0xbc258373,0xbc1e4b35,0xbc114685,0xbc00af2a,0xbbdb51d7,0xbbb4935d,0xbb815063,0xbb0807f0,0x39272393,0x3b456a37, -0x3ae48d62,0x3ab6bfd9,0x3a0cf09a,0x3a915eaa,0xb86ab774,0x3ad016c8,0x3ae8c5c3,0x3acf6724,0x3a856783,0x39470201,0xb986ab48,0xba4f29c2,0xbaba6e6d,0xbbe0af43,0xbb14bc89,0xbbcffab0,0xbb1c6fe4,0xbb807042,0xbb843182,0xbb4e043e,0xbbc129e8,0xbc04b362,0xbab5e4a9,0xbc084483,0xbbefcb42, -0xbbe8786b,0xbbc7d41b,0xbbccb9bf,0xbbc20df8,0xbbcd507f,0xbb9c585e,0xbb63428b,0xbb17273d,0xba939b3b,0xb96dbd17,0x3aa00d84,0x3a7f1c52,0x3a6dcc5a,0x3a818b40,0x3a61bb01,0x3a72438e,0x3961212b,0x3afb3caf,0x39f7a6ec,0x3a17a71a,0xb981cec3,0xb913abab,0xba49705f,0xba2087c3,0xba442153, -0xb8cafff9,0xbae06971,0xbbc05a49,0xbad69d5e,0xbba58b0e,0xbb903e47,0xbaa5582d,0xbbf13fe1,0xbadf3116,0xbbaf0436,0xbb8cd6f8,0xbb8af7f5,0xbb8780bf,0xbb89671c,0xbb7ff95b,0xbb79f1e2,0xbb645c62,0xbb586c53,0xbb44ec1a,0xbb2e4e87,0xbb158fff,0xbaf1e7ed,0xbb04d173,0xbb0494d2,0xbb07ca06, -0xbb0f25ca,0xbb0bc10f,0xbb2f40fc,0xb98011d4,0x3b488f7a,0x3bb5d57c,0xba2d0229,0x3b338731,0x3bc740f3,0x3bd918c3,0x3bb2cdfe,0x3b9ce944,0x3bbf65ca,0x3bb97065,0x3b90c455,0x3a97d73f,0xbb00f732,0x3b7cbf08,0x3b097790,0xbb763cdf,0x3b453144,0x38da1a64,0x3bd1768a,0x3b33c6a2,0x3b1c00e2, -0x3b0440cb,0x3b0f942e,0x3b2194f9,0x3b4522a3,0x3b3a839f,0x3b411d2e,0x3b523c99,0x3b293581,0x3b20808c,0x3b1b1070,0x3b34df51,0x3b479459,0x3b5628c2,0x3b5b7686,0x3b3ca9d0,0x3b81f68c,0xbb36b9c7,0xbbc03e80,0xbbd8ef3e,0xbaa42c69,0xbbb629a6,0xbbd55411,0xbbd8df18,0xbbc8fccf,0xbbb57b4d, -0xbbf88aca,0xbbf64bd8,0xbbe8281c,0xbbd0b763,0xb9783be2,0xbbc23b8a,0xbbefa923,0xbc261c16,0x3b5e59f2,0x3b804704,0x3b0a3e00,0x3a67d3a0,0x3a5df0c3,0x3ad51c8f,0x3b84cc02,0x3b612b4d,0x3b758e33,0x3b881523,0x3b157d8e,0x3aafb205,0x3a6f992f,0x3ae97bbe,0x3b478738,0x3b841dc8,0x3b82f8d7, -0x3b90ed1d,0x3bb00128,0xbb9c755a,0xbae3869e,0xbb535be4,0xbb8ab28f,0x39dade79,0xba6f4f74,0x3a3aa8c7,0xbae2600d,0xba132fc5,0xbab9386d,0x3b9d1ce0,0xbae35031,0xbab245f6,0xba77a500,0xbb3c1c27,0xba649128,0xbba96437,0x3c0bc697,0x3b73df6b,0x3a5fe882,0xbaa07e14,0xbaa95f84,0xba42716e, -0x3b80098a,0x3b4ee601,0x3b6b1d3f,0x3b9d1d3b,0x3a943fb6,0xb913001c,0xb9f31fee,0x3ae076a2,0x3b3ebbe7,0x3bb20a46,0x3b8cb25a,0x3bda1cc4,0x3a787786,0xbbdd8a30,0xbb03ca3d,0xbb25ee80,0xbb52a4b8,0xba184dbd,0x3abcebcc,0x3b3a62f7,0x3bfa7497,0xba280ef4,0x3b84a460,0xba2283c1,0x3a6c3466, -0x3af3a91a,0x3a8bd14c,0xbb37c6dd,0x3b4bff06,0xbb8c54d6,0x3b9ecabf,0x3bd76902,0xb9acbb22,0xbb1b5052,0xbb8ac85a,0xbb2cf877,0x3baa8bb5,0x3b7b7fc5,0x3b8b6695,0x3bd2c4e2,0x39275417,0xbb1d3bed,0xbb9532bb,0xba688d28,0x3af58168,0x3baa981f,0x3bbf842a,0x3bea4f87,0x3b43b247,0xba2f079e, -0x3b2d88c8,0xbb23a211,0x3aefe4b6,0x39358886,0x3bb6f986,0x3b93abb7,0x3be8c18c,0x3b87ebef,0x3bccdaac,0x3b52ed58,0x3b17bb6c,0x3ac93683,0x3b291940,0x3a6ae223,0x3b42e4d6,0x3acbc55e,0x3bc13792,0x3be88f67,0xbaf5a38f,0xbb8f0272,0xbbeefc3b,0xbbad6268,0x3b6972ff,0x3b3dacf0,0x3b8fe1d2, -0x3be70b20,0x3953a171,0xbb3b5c08,0xbb644acf,0xba343927,0x3b509a6f,0x3be45de5,0x3bc49611,0x3bf0e626,0x3b5c405d,0xbbf98948,0x3a96100d,0xbae382f7,0x3ad5e4b0,0x3b7ad766,0x3b76c437,0x3c0f8193,0x3c0d0b11,0x3bc0f967,0x3b8a7517,0x3b99e726,0x3ac67ac7,0x3b90a97e,0x3bae398b,0x3b1dac71, -0xbae9856d,0x3bcd75dc,0x3bc2ef83,0x3c2e3551,0x3bb3922d,0x3bba75cd,0x3c774339,0x3c74ff3c,0x3b38691b,0x3c2aa877,0x3b988fa4,0xbb19dc7f,0xbaac71a7,0x3b2bdbaa,0x3c5f30dd,0x3c2c7f89,0x3c139393,0x3c54b6d3,0x3c27040c,0x3c161a8b,0x3bbe853b,0x3b39e053,0x3bfbbb90,0x3b485e9d,0x3b6878c6, -0x39275dbe,0x3bc6584e,0x38394acb,0x3b27588b,0x3c3cdeaa,0x3c1419a9,0x3bb19332,0x3acc1a47,0xba8f4812,0xbbbe4a9b,0xbc0ce679,0x3bd958cc,0xbca5028d,0xbb889cc7,0x3c180f5d,0x3bc76d50,0xbb789ba9,0xb9328cfd,0xbac4acce,0xbbb9193d,0xbac576fc,0x3ae19912,0x3bc9c73b,0xb9afbbc9,0xbac962ae, -0x3b01d648,0x3be2fd59,0x3c31d7b1,0x3c44d841,0x3b8fc6d3,0x3bbad525,0x3a6a87cd,0xbb3c0909,0x39b3ea6f,0x3aad3c13,0x3b70e4cb,0x3b8e840d,0x3b40f822,0x3be2b22d,0x3beb0b76,0x3bbf5836,0x3b361731,0x3b665bd4,0x3bc397a6,0x3afe9b1d,0x3b7ad84b,0x3c3eff65,0xbc4a90ad,0xbbaf97cc,0x3b16dab7, -0x3c2b36a9,0x3c231cb4,0x3bf3c6b9,0x3b7cce06,0xb9ae4b22,0xbb4d450f,0x3add57b1,0x3bb37944,0x3c24356c,0x3bfccc8d,0x3c071811,0x3c0e6648,0x3c0e34ed,0x3bd4e55d,0x3ba1a8ec,0x3af475f0,0x3ab72a3a,0x3ae9999b,0xbac91a30,0x38a3ada9,0xbab78ba6,0x3a0a8a09,0x3ae5439d,0x3b6e4070,0x3b522b23, -0x3b98cbd4,0x3b4ba513,0x3b37284b,0x3b1ef44e,0x3a786fc0,0x3b997c55,0x3babfd1e,0x3bd10980,0xbb12b214,0x3bd93d1c,0x3c133faf,0x3c20bfe7,0x3be952ed,0x3bdaa05f,0x3ba2084c,0x3bb79a51,0x3c125d50,0x3b5a4eb7,0x3b1a620f,0x3bda5b37,0x3b9f98bf,0x3b8fbf62,0x3b9c1a39,0x3b93788a,0x3b574728, -0x3b762c87,0x3aaef649,0x3b667b5c,0x39d99e3e,0xbb1dc93e,0xba35815f,0x3a50af6b,0xbb16f75e,0x3a64f2e9,0x3b376241,0x3b3685d9,0x3b2a274a,0x3a7849d8,0x3b794e8f,0x3b1f7730,0xb9b27dba,0x3ae481b5,0x3b9fc3a4,0x3a6b3460,0x3c1318cc,0xbbf48e18,0xbb97b64c,0xba205958,0x3b0eccef,0x3c191e0e, -0x3c22100e,0x3c38fcd4,0x3c59f5d8,0x3b069a53,0xbb046d34,0x3acac1eb,0xbbbff8a0,0xbba19390,0xbb3835a5,0x3aa6e7ff,0x3b4bc6e3,0x3bda9aa9,0x3bd4b3c2,0x3bd7a592,0x3b4354c1,0x39dc3ecb,0x39d3cf45,0xb9892484,0xb91605e7,0xb9499ab9,0xba66d6be,0x3b0a28cc,0x3b2dc448,0x3a81ed30,0x3a94bb46, -0xb8c16cda,0xbb229e7a,0xbb57594b,0xbb5357ec,0xbbbbe6ba,0xbbef2c2e,0xbc55c355,0xbc225715,0x3b5a1983,0xba6ddfd0,0x3b59dacf,0x3932708d,0xbb0d1fc7,0xbbda47e3,0xbb817fdb,0xbb7ffdb3,0xbaf5c677,0xbaa270fe,0x3ab27ba3,0x3aa00279,0x397d971f,0xb9a10e2e,0xb9c56eb2,0xbae516f6,0xb869b3fc, -0x3afaae06,0xbb4e5093,0xbaed8cf9,0x3a39477e,0x38dbf9e2,0xb83f013d,0xbb45ce90,0xbb02f03a,0xbadb4c6a,0xbb0fd190,0xbb39a153,0xbb5c2b0a,0xbbe88336,0xbbc807c3,0xbc2da1ec,0xbc24921b,0xbb99a47c,0xbc4b8c31,0xbbb14a64,0xbb439be9,0xbb4552c5,0xba2bd2ef,0x3a120fb3,0x3b26f1f2,0x3b3e0a69, -0x3a6b8df3,0xb974177d,0xba7beca4,0xba7b9617,0xba37e9c6,0x3a0d38b3,0x3a9cb93d,0x3abb829d,0x3ad40a2a,0x3b0cb921,0x3b176583,0x3a86c151,0x3acf5785,0x3b477067,0x38082e4b,0x3a8f56c5,0xba2ffbd3,0xbb8da3b3,0xbb86ea64,0xbbc75a2e,0xbbaedce6,0xbbf8efa5,0xbc0aa78d,0xbc2a95c4,0xbc499b35, -0xbc239d37,0xbc1f3857,0xbc045f0c,0xbc12abde,0xbbda2ded,0xbb11b905,0xbb881da6,0xbb915742,0xbb84c2ed,0xbb741193,0xbb1ba473,0xbb0d74a9,0xbadafa42,0xbaea4f9c,0x3a121ed5,0x3b0f178d,0x3b7f2de2,0x3b40bddf,0x3b044d3d,0x3aaf3a1e,0x3af0874b,0x3b23f0e7,0x3b1dd575,0x395a9c0e,0x3a4515ec, -0x3b2aab6a,0xb97c616b,0xb999a1c0,0xbb21b13f,0xbb96b1ce,0xbbc88e95,0xbbd40d8e,0xbbcd20a1,0xbbcdba01,0xbbdfc5b7,0xbbe45995,0xbbf03187,0xbc1556c6,0xbbec0445,0xbc2a349a,0xbbbb2bf3,0xbb8eebfe,0xbba4d737,0xbb822e29,0xbb5f0fda,0xbb26f0b0,0xbafc6bb1,0xbabad9fd,0xb9e3b6e5,0x39e072a5, -0x3ab67790,0x3b111632,0x3b5d9856,0x3b4cec66,0x3b458d79,0x3b4626db,0x3b39bc7b,0x3b94beb9,0x3b2a4ac8,0x3adc51b1,0x3af0a514,0x3b1cc070,0x39e9e602,0xba8ec872,0xbb3966d0,0xbb50d9ff,0xbb47d082,0xbc033526,0xbb887f12,0xbbaef721,0xbb4fa0a1,0xbb8a894c,0xbbde6511,0xbbc75db0,0xbbcc3487, -0xbc10c906,0xbb93a3dd,0xbb851353,0xbb227666,0xba7be6e2,0x39372b07,0x3ae4318c,0x3b5341a4,0x3b6deb9c,0x3b605e6f,0x3b625958,0x3b6c8c21,0x3b6c453c,0x3b65fdc1,0x3b5b6404,0x3b4ffd35,0x3b65ca68,0x3b5a9e81,0x3b4cd126,0x3b6be57d,0xb8a42529,0xb9797902,0xbaff1793,0xbaf4a037,0xbb27788a, -0xbb362539,0xbb79770c,0xbb7f627b,0xbb8b173b,0xbb9de564,0xbb703e8a,0xbc017b35,0xbbe67020,0xbbd3d506,0xbc0ca6d4,0xbbb66cd2,0xbb5efaf4,0xb940a30d,0xb9e8cf1a,0xb83e944a,0x3930aba3,0x39a983f3,0x39f4f368,0x3a322308,0x3a290a03,0x3a77453a,0x3a978565,0x3aa0b555,0x3ab08d80,0x3ac8d728, -0x3ad3af8c,0x3ae0fb3b,0x3ae2595c,0x3ae2189b,0x3ade004d,0x3b2460e7,0xba53b616,0xbb5f5804,0xbb77c6b6,0xbaab83a7,0xbb884534,0xbb9b816c,0xbbaabe54,0xbba0fd88,0xbb9fc83b,0xbbb8809e,0xbbb133b1,0xbb9659f3,0xbb81accf,0xbafbd125,0xbba4886f,0xbbbc0e48,0x3a13971b,0x3a20be3f,0x3b6b99be, -0xbb1d4b8d,0xba06524f,0xb9ec4dbc,0xba10bb4f,0xb99471cc,0xb93fecf4,0xb82f6d46,0xb96f50b3,0xb99af1e2,0xb99c26c1,0xba472ebf,0xba7f354b,0xba980ea8,0xba737d3e,0xba30e24c,0xb978399d,0xb909f94f,0x38c7a10e,0xba69407b,0x3b9fcecb,0x3bc7e3c0,0x3b3c216e,0x3b6e1f30,0x3bd0ed3d,0x3b8be646, -0x3b948569,0x3b8a6ba8,0x3b80d0fc,0x3bb31326,0x3bb05b6d,0x3ba44afb,0x3bee54e8,0x3b7c16e2,0x3b667ffb,0x3bee1a8c,0x3c25aad0,0x3b5cdea3,0xb9aebc0b,0xb9d40c29,0xba54ce9f,0xb9471b6b,0x39a01fc0,0x3a4e7f96,0x392cfcdc,0xb95b0eba,0xb8f8f156,0xbaac03d4,0xbb08703c,0xbb1ffd6c,0xbb0d279c, -0xbaaf8b44,0xb9151ea9,0x3a480672,0x39ed3660,0xbaa42740,0x3baa07c2,0x3b281db7,0x3ab7ef97,0x3b9da819,0x3b34cbaa,0x3b71a7ee,0x3b9f9a1b,0x3bde5b10,0x3b91edfc,0x3bb02202,0xb80e023b,0x3b4b241d,0x3b9bc17b,0x3b9224c9,0x3b96cdc0,0x3b85d834,0x3c0f5c49,0x3a8712ec,0xba928930,0xba08784c, -0xbad190f4,0x3937b35a,0x3aa35deb,0x3aff551e,0x3a8c65df,0x39bdd9bd,0x3992dc9b,0xbb188694,0xbb7797a0,0xbb86dbd3,0xbb6f9d02,0xbaf145eb,0x39c7a7cf,0x3b0937d5,0x39ee8e09,0x3b326e82,0x3bee574e,0x3b1d7d6f,0x3ae0ddc9,0x3b57f581,0x3b1db760,0x3bb68843,0x3b9bd6ea,0x3b282743,0x3c007614, -0x3b3d519e,0x3bbfa810,0x3abe02be,0x3b7f85b1,0x3b9c7168,0x3ba0be90,0x3b35f1c0,0x3c470821,0x3c098d12,0xba8ef1e1,0xba0c258e,0xbb2283fc,0xb850c2fd,0x3add5e2b,0x3b5cff11,0x3ad96e5a,0x39b2f299,0x3a43f2b2,0xbb3d9e0d,0xbba315b5,0xbbc27c97,0xbbac5bc5,0xbb3bed42,0x3a142b2f,0x3b2939d0, -0x3ab48ebf,0x3a9f8eff,0x3b4f365a,0xbaf024cd,0xba356561,0xbac19c6c,0x3b50eb52,0x3b488572,0x3c0b1df9,0x3be54b9f,0x3b970060,0x3b4d173e,0x3b9947f7,0x3aa9f661,0x3be45472,0x3b8fe820,0x3b4ff749,0x3b914d11,0x3b71c88c,0x3bc2094c,0xbb6b9071,0xb9afbfef,0xbb725ab6,0x3a3314d7,0x3b54ebc3, -0x3b922809,0x3b492e09,0x3ad302c8,0x39d27094,0xbb694af1,0xbbe2a555,0xbbea20b3,0xbbd87d8d,0xbb2bb170,0x3ad933c0,0x3b899508,0x3b27840e,0x3a91d3c8,0x3c0353cb,0xb9e3cc29,0x3a2734b9,0x3a4aebbd,0x3ac65d46,0x3b81ff05,0x3bbfd281,0x3c04bb17,0x3ba060a5,0x3b997a99,0x3b4b3a40,0x3a99456f, -0x3b7c180e,0x3ba31b7e,0x3b081953,0x3bc57e49,0x3cc227fc,0x3c961552,0xba1c365f,0xba1ddbf7,0xbb4b0121,0x3c143c6c,0x3c23c37b,0xbab5b8dc,0x3690048c,0xbbf9fe96,0xbc87a999,0xbc8e050c,0xbc4f0e8d,0xb9a70a9b,0x3b1ff606,0x3b75399d,0xbb10bd69,0x3a7057f4,0x3b081b12,0x3bb9e0be,0x3c196e49, -0x3b66e294,0x3bc06b3d,0x3aaa37f2,0x3b265287,0x3b97b1e9,0x395e4243,0x3b10ced6,0x3c47bd9d,0x3c065af9,0x3b9b2eaa,0x3b6568cc,0xbb1e75e8,0xbaf152d7,0x3b0e1744,0x3c7f4cd9,0xbc927a3d,0xbc2fc725,0xbc00ad97,0x3b018e8a,0xbb1b043d,0x3bc2103b,0x3babba43,0xbb127ce4,0xba2c0b26,0x396639e0, -0x3ba4d92c,0x3afa5053,0x3a4e6f7f,0x3b410620,0x3babf52a,0x3bf5387e,0x3c063479,0x3bac5d5c,0x3a85ad26,0x3b99881e,0x3b73d9e3,0x3b21049e,0x3b23bbbb,0x3b36a0c5,0x3b185a24,0x3ae96c8a,0x3bd3ff5b,0x3bf47c6f,0x3bb80acc,0x3b3c66ae,0x3b18f3d0,0x3bac6345,0x3b863dd9,0x3b8cd6c0,0x3c60301c, -0xbc327b87,0xb80a04da,0x3b653343,0x3bf85d8f,0x3c23015d,0x3c28d681,0x3c588577,0x3bf81ce6,0xba0c4288,0xbc0879e5,0xbc158d56,0x3b1a6500,0xbb225466,0x3ab17993,0x3b8c1b1b,0x3b4694da,0x3b43e70e,0x3ae60124,0x3a1f6772,0xbb5c813b,0x3a64f38d,0x3af7b8b2,0x3a52f531,0x3b47a6be,0xb8010a78, -0x3b2f5316,0x3b2ef6f0,0x3b7e91c7,0x3b38860d,0x3b08a496,0x3b2c9fc7,0x3b46782f,0x3a9b5718,0x3b98876c,0x3bcc47e9,0x3c0e2162,0x3b233cd0,0x3c3d81ea,0x3c304ae5,0x3c33c6a5,0x3c341fd0,0x3c6d2661,0x3c3ccaa8,0x3c1565e0,0x3bae3952,0xbb504a63,0xbb80501c,0x3bc74a53,0x3a23aacb,0x3b28f234, -0x3b2ce33a,0x3b2e0084,0x3a9346d8,0x39bb86bd,0x3969c50d,0xbb200900,0x3a08340e,0x3ae3e7b4,0xb9ef87b1,0x39edbf51,0x39dc3905,0x38eb7000,0x3b50b967,0x3acd0e25,0x3b1f9f09,0x3b2b68f9,0x3b187583,0x3b48f58c,0x39eea8c0,0x3b747476,0x3b7b8607,0x3b80cf1e,0x3bfe97fe,0xbbe2a877,0xbb974a76, -0x3b8db630,0x3c40a24f,0x3c59463c,0x3c8a516b,0x3c8a3d52,0x3c376eda,0x3c1e6322,0x3bff9a22,0x3c1f974b,0x3b274a45,0xb9b08f94,0x399bd22f,0x3b4eaa5d,0x3b78489a,0x3b885701,0x3b67f314,0x3b163216,0x3b55f6d7,0x3a5d673d,0xb920d662,0x3a94de1b,0xb8bb82c6,0xb9d285da,0xba9e5dd0,0x3ac89867, -0x3af1577e,0x3a9c1baf,0x3ab68ec4,0x39e28992,0xbb2a52a9,0xbb2717e5,0xbb02c97e,0xbb41c547,0xbbc7e62b,0x3c0079e6,0x3bfded9c,0x3bc547e7,0x3be93e10,0x3bb7edd2,0x3ba1e10e,0xb93e1d9f,0xbbea5531,0xbb3652b6,0xba033160,0x3b8c6cc3,0x3bb83a2c,0x3b918ea6,0x3ba232a1,0x3aec5bd7,0x3a308cf4, -0xbac073bd,0x39811cfa,0x39c041bd,0x39b0a428,0x3b6f2e3f,0x3b11345a,0xba195d09,0x3a05cac8,0xb99838aa,0xbb13607c,0xba869477,0xbb19e29f,0xbb06fd6d,0xbaf15fb7,0xbb15e2e3,0xbb309357,0xbb903616,0xbbb1f2b9,0xbb53a329,0xbb9f1806,0xba6f55e2,0x3a391954,0xb9852125,0x3a04b88c,0xb9ae4544, -0xbad9dfea,0xbacc1ef4,0xb9f07024,0xbacc3071,0xbaee1be5,0xbaf8ab64,0xbaa423b5,0x3a8d7fe0,0x3b48616d,0x3b307f95,0x3ac59d4f,0xba14d747,0xba042eb0,0xb9dd6f34,0x3adce638,0x3aafc59c,0x3a1df2fe,0x3b8fbf44,0x3a09b6d7,0xbaa0d85a,0xbb58f41f,0xbbdd4850,0xbbc54aca,0xbbc2bb9c,0xbbd5703c, -0xbc05985c,0xbc258d78,0xbc19a208,0xbc14a080,0xbbd7ad05,0xbb2b0ae6,0x383f239b,0xbae2e6c2,0xbb88c798,0xbb8bebba,0xbbb62259,0xbba8ef8d,0xbbbfd04d,0xbbaf6598,0xbb99fa28,0xbb72b5b4,0xbb2050ee,0xba14bd0d,0x3a2b7ad6,0x3b1496d3,0x3abcd73a,0x39d774a5,0xba4bd2d3,0x38757d0b,0x396afd22, -0x3ab29651,0x3b7ad7b5,0x3b5cd523,0x3b5b6768,0x3ab2b62a,0xbabb5d62,0xbb8e5764,0xbb7252fd,0xbbbe865c,0xbbf8d0af,0xbbdb9378,0xbbcf8bec,0xbbb39098,0xbbcda176,0xbba4f20c,0xbb2f1a0d,0xbaef393f,0xbb5bb4c5,0xbba2babf,0xbbb59889,0xbb935fa5,0xbb999930,0xbb877ab5,0xbb77825d,0xbb65457e, -0xbb081ca2,0xba828bf1,0xb8bec874,0xba19e48d,0xb9a7d27e,0x3a55f632,0x39c5080a,0x3a0e7365,0x3908e33f,0x3a9945c6,0x3a0b79ad,0x3b477ac3,0x3b67947e,0x3b156ca0,0x3b1e9d4c,0x39c5d48f,0xba4ffb25,0xbb18a6f6,0xbb72f923,0xbbceff2f,0xbb570ae9,0xbbc9a2d3,0xbb54fd8d,0xbb91ad3d,0xbb288278, -0xbb0c31b2,0xbb020f53,0xbb8bbc17,0xbb8f1a51,0xbbbf209e,0xbb915951,0xbb7e1a28,0xbb30f5d9,0xbb0f711d,0xba990f95,0xb9d32297,0xba8b7849,0xbac936cf,0xbac3561d,0xba58f552,0xb93513bb,0x39e58749,0x39eba502,0x39ce78b0,0x39a9c555,0x39b55622,0xb9779550,0x38f3c1a1,0x3b1c10f2,0x3a8d5174, -0x3a8fd4dd,0x39b2d2e7,0x399d471b,0x366b5aff,0x38e1937c,0x3a1c9d20,0xba037fee,0xbac68b00,0xbba344f2,0xbb58758f,0xbb932cad,0xbbb6b197,0xbba2d4d2,0xbb9fa819,0x3a624445,0xbb2c6443,0xbb17f4d7,0xbb06b474,0xbafa7fed,0xbaf95cc3,0xbaed5a98,0xbad3d9fb,0xbab46ae2,0xba8df547,0xba873375, -0xba96c7e0,0xbaac84b9,0xbab05d25,0xbaabb64f,0xba9c7e29,0xba941306,0xba86c4c3,0xba5a1e99,0xbabc5c17,0x3ae9a477,0x3b5bc7dd,0x3afd3903,0x3ad117f8,0x3b46b3ef,0x3ab04e6e,0x3ab00b00,0x3a53c9c1,0x3a120ed4,0x3aab81d8,0x3ad20523,0x3a94b6ca,0x3af257b8,0x3a1a6b7a,0x3a184bac,0x3afc3b54, -0xbaaa1ce5,0xbb7d5762,0xbbbd5a01,0xba75fb4d,0xbb118791,0xbb29c33a,0xbb2cb652,0xbb4fd2ac,0xbb4fd030,0xbb2c6ae4,0xbb33e366,0xbb2f57c3,0xbb18aafa,0xbb2ebd3b,0xbb37b751,0xbb472fbb,0xbb3398ab,0xbb2fa698,0xbb1f1775,0xbb13f1cf,0xbb092a27,0xbafbc974,0xbbb006c3,0xbb9a3fd7,0x3ad846c2, -0xbbb86324,0xbba5fd8a,0x3adbb3a9,0x3ab4240b,0x3abb94cb,0x3a792b4a,0x39ac227a,0xb89345cb,0xba82b68b,0xbb9f4c6a,0xbba9974b,0x3a500672,0xbb960658,0xbad04063,0xbb03e3e3,0xbb02d2d7,0xbb706c74,0xbb7ecd86,0xbbda27b0,0xbbe20e00,0xbb934c4d,0xbba1d488,0xbb9cc95b,0xbb82d674,0xbba0e21e, -0xbbbd3f49,0xbbe37a74,0xbbcadccf,0xbbacfa8c,0xbb7a9302,0xbb39e845,0xbb01fb26,0xbb03720c,0xbb6bbf22,0xbb69db4d,0xbb242385,0xbba82c3c,0xbb865c53,0x38f5b731,0xbacf4208,0xbace522d,0xbaea85ec,0xbae8a73a,0x3902d455,0xbaf69b4a,0xbabb2dd2,0xbb0c4878,0xbb4134c6,0xbace7eb2,0xbbafeeb1, -0xba109d07,0xbad93935,0xbb99005d,0xbb9adbe1,0xbc1697f4,0xbc25b883,0xbbb72e23,0xbbde465d,0xbbbeaedf,0xbb983ace,0xbbca106f,0xbbf7fa50,0xbc0e3b18,0xbbfc637d,0xbbdf66f7,0xbb9e1082,0xbb5a491f,0xbab29271,0xbb408ca5,0xbb9efba4,0xbb5bfcdf,0xbbb2e7b9,0xbb8f2130,0xbae3ab6e,0xba395dbf, -0x3ad1e311,0x3a5b28e9,0xbb0133b5,0x3a626cba,0xba9af917,0xbaed0c8d,0xba0a600a,0xba4066de,0xbb48846b,0xbb46b498,0xba3f2fac,0x3b656b7e,0xb9cc7e99,0xbb99babe,0xbba18f4c,0xbc546ee9,0xbc74a9b9,0xbbeb7250,0xbc1a6d62,0xbc06f3f2,0xbbbb5eb8,0xbc138368,0xbc31e524,0xbc790732,0xbc573494, -0xbc292a0f,0xbbcb7c12,0xbb2e997e,0xb9a60192,0xbafc0ac8,0xbb3c346a,0xbb1764ad,0xbb6d11a0,0xbae43687,0xba7863f2,0x3b74386c,0x3b68e87a,0x3bd26ddb,0x3b6b017b,0x3ba46d25,0x3b50672c,0x3a11d767,0x3b1e722d,0x3b1adf5c,0xbac58bd7,0x3aa08ace,0xbb78dce5,0x39c1a600,0x39eda010,0xbbb99528, -0xbba3b04a,0xbc7cd8b8,0xbc858bd4,0xbc0fc965,0xbc2f7612,0xbc068c4a,0xbba98b27,0xbc017c41,0xbc338675,0xbc569525,0xbc589dd3,0xbc2d431d,0xbbec9f0d,0xbb7dec7e,0xba526f01,0xba7a7c8e,0xbb7f03bc,0xbabf69a9,0xbb7bc137,0xba7474a3,0x3b01b09f,0x3b8c3ef6,0x3c0608b8,0x3c0a348b,0x3bb8caee, -0x3b8bfb0b,0x3b868d7f,0x3ab64675,0x3b822d77,0x3b932791,0x37fc3272,0xbb14cddd,0x3c3ef7b0,0x3ad65aa6,0xba9eb62b,0xbbdfa1f0,0xbc2a1178,0xba38ace4,0xbb264a80,0xbc737d34,0xbb69f871,0xbbbfb82a,0xbc670d1b,0xbc360045,0xbbd1f930,0x3b899ecc,0x3b9a3032,0x3b9b0f85,0x3bc08b49,0x3b5882ea, -0x3a32ff7a,0xba8cb68c,0x3af76307,0x3b8e798c,0x3b3547fc,0x3b04874c,0xb9ae10a7,0x3b81a12f,0xba526ab4,0x3b3348c4,0x3c61afdd,0x3bceba1e,0x3b082b20,0x3a452f4b,0xbba95cd5,0xbc03afd0,0xbb2be688,0x3be45352,0xbcdba891,0xbc17231c,0xbaca5098,0x39e07ee9,0xba917458,0xbb050946,0xbb468a54, -0xbbebdf86,0xbbfd34d9,0xbba858a9,0x3b961624,0xba68ed57,0xbb14efba,0xbab6a8c0,0x39cf33cc,0x3a81c585,0xbb7a6899,0xbbb46558,0xbb555c07,0xba8571f9,0x39929b7d,0xb92d31d1,0x3a547a90,0x3a804e01,0x3af1c7ba,0x3b28e116,0x3bd56939,0x3bdd4576,0x3b9560b3,0x3b3065d9,0x3b46fa36,0x3b757543, -0x3b3c1b40,0x3b5fb32e,0x3c2b042f,0xbc98ca35,0xbb3019e4,0x3b959cbe,0x3c05bfe2,0x3b875e16,0xbac12722,0xbbcbd8aa,0xbc44a199,0xbc9d8349,0xbc4a3113,0xbbc46342,0x3b5e579a,0xbb073165,0xbb2b61db,0xbad822f1,0xba285669,0xba808745,0xbb0a9a57,0xbb29eac1,0xbb3ab853,0xbb2ac573,0xbb1ea456, -0xb91180ba,0xba3cdef1,0xba7dc618,0x3a7668fc,0x3b563e11,0x3b337d7d,0x3b898d08,0x3b0055cb,0x3b316c4e,0x3b24bd15,0x3aa9c8aa,0x3b8021e9,0x3b9e95d2,0x3bc971a6,0x3a16bbb3,0x3c1f6692,0x3c150b0e,0x3b90bfc1,0xbb3e6dbe,0xbc796faf,0xbc37d4a7,0xbc3b4ade,0xbc1cdbf7,0xbc0ff272,0xbbe57327, -0xbb24121e,0xbbd261fc,0xbbdc792c,0xbbb37acd,0xbb3e8b12,0xbaed48d7,0xbac20013,0xbac5ae63,0xba29035f,0xbac7c7cf,0xbb649de8,0xba9c7cf3,0xb9fb197d,0xbaf60c33,0x39403d19,0x3b0ab5e4,0x3ad432e9,0x3ae8fbd6,0x3a83b1c4,0x3b4c7fd2,0x3b26a700,0x3aaf09b0,0x3af24073,0x3b72851b,0x3b0f3d03, -0x3c171505,0xbc1a7dcd,0xbc21890c,0xbc59e034,0xbc4f0054,0xbc794e5c,0xbc0a7205,0xbb0454ff,0x3c100473,0x3a7a62f1,0xb98fc803,0x398fe8c7,0xbba5ada3,0xbbcb69b9,0xbb88073b,0xbb234d89,0xbafd5b8e,0xba9bb2e8,0xba344ed6,0x3a3e5f88,0x3a3a601a,0xb87c086b,0xba1331da,0xbaae1a02,0xbaebb13e, -0xbaa3f94f,0xbafb1b5e,0x3a9110b5,0x3ad77901,0x3a39bf5a,0x3a0ccf21,0xba12d29e,0xbb182f3e,0xbb1d269f,0xbb5eeb09,0xbb5071de,0xbc11ae9c,0xbbcf9f48,0xbc06c50b,0xbc65afe8,0xbc8ed0a7,0xbc568f3c,0xbc756ab5,0xbc8b1be6,0xbc9bce2a,0xbc4121ce,0xbc34b243,0xbc4eb828,0xbbf5722a,0xbbad531b, -0xbb95abb1,0xbb15ac2e,0xba3f4f2a,0xb943c2c0,0x39c26a12,0x3a08130a,0xba8664ba,0xbb3d488f,0xbb0a9893,0x3a3fe564,0xb9a52a91,0xba47e931,0xbb65417e,0xbb55640f,0xbb563fce,0xbb72509d,0xbb52521f,0xbb643d91,0xbb9eb743,0xbb8a3291,0xbbac925f,0xbbf720d1,0xbb6aa3f9,0xbb9eba93,0xbc298a48, -0xbc13c559,0xbbf7d7c7,0xbbb762d6,0xbbaa775c,0xbb580050,0xbb568b0d,0xbb315a03,0xba9d9289,0xba04a4e6,0xbac93090,0xbb096391,0xbad38ca0,0xbb473d79,0xbb5051f9,0xbb1b185f,0xba78091d,0x39966bc4,0x3ab86fdf,0x3a8d2227,0x3a8f3893,0xba11957d,0xbaad7d13,0xbb3cb9a4,0xbbad2501,0xbb97df89, -0xbbc76d4b,0xbbcefd33,0xbc03695b,0xbc1ba399,0xbc368388,0xbc4b522c,0xbc3fb740,0xbc418e4c,0xbc21aab4,0xbbcb89c7,0xbbb4512d,0xbbad284c,0xbbc0d7fa,0xbba1ed57,0xbbd1b843,0xbbfe22b6,0xbc0d57f1,0xbbdb9a77,0xbba8f424,0xbb6eb2b1,0xbb176991,0xbaa4890b,0x3903c982,0xba6679f2,0xba7d7578, -0xba2e678a,0xb988478d,0x3a09575a,0x3a0b0252,0xb7655b4f,0x3a900898,0x3ac32a97,0xba8632b7,0xbb1aa34f,0xbba80110,0xbbd10792,0xbbe37690,0xbbfcceb8,0xbbfd59b3,0xbbfa599b,0xbc0696cb,0xbc041371,0xbbf8e90f,0xbbee6311,0xbba779b5,0xbbf7af1f,0xbbcbad91,0xbba60955,0xbbcd42e0,0xbbe063cc, -0xbbe2857a,0xbbda35a2,0xbbeefd5c,0xbbc6954e,0xbba52ef1,0xbb845de4,0xbb239663,0xba9fdb2f,0x3950ffbb,0x3a0629f8,0x3a31d210,0x3a2a0b15,0x39fdbc56,0x3a956524,0x39b08716,0xb9d874d1,0x3a09ae9d,0x39c02534,0xbabc6dac,0xbb66d9e8,0xbbcefd36,0xbbae8cc5,0xbbf2bc66,0xbc11a14b,0xbbe1492c, -0xbbdd2460,0xbbb6ded0,0xbbc991d8,0xbbab4c59,0xbbbc7d5a,0xbbcee152,0xbbb4a0cd,0xbbaef24a,0xbbbcee1a,0xbba1cda2,0xbb766004,0xbb8059cb,0xbb5e1daf,0xbb4d0c36,0xbb019868,0xbab6eb7d,0xba2baf7d,0xb94a03bc,0x390151c9,0x39e632eb,0x38a1271f,0xb7905f45,0x39a42832,0x39c193bf,0x3a30e50f, -0x3966e928,0xba8e2917,0xbb173aaa,0xbb6b4954,0xbb84ee41,0xbb6e924d,0xbb6f2477,0xbb9323ea,0xbba57ff3,0xbb8f6402,0xbbbe1bde,0xbbacc6ba,0xbbe54ef2,0xbc0031cb,0xbbe07503,0xbbd4e15c,0xbbf6a7f2,0xbbae5daa,0xbb578234,0xbb4bb0d4,0xbb49e8d7,0xbb4c8af2,0xbb4eb874,0xbb44c69b,0xbb4a3855, -0xbb41ae5b,0xbb35ad0e,0xbb28cce8,0xbb19e19e,0xbb05bda6,0xbada2fcd,0xbac8d44a,0xbabcc5e8,0xbac4d5ac,0xbacf120c,0xbac68506,0xba9d0278,0xbb5e4369,0xbb5a05ee,0xb88fd53e,0xbb86d7c0,0xbb8dd886,0xba624a2e,0xba7a1ccd,0xba9ad0e0,0xbac2747a,0xbae2f5cd,0xbaf4a8e3,0xbaf4c5e5,0xbb88fcea, -0xbb8a6a00,0xbab5b2d1,0xbb933d1d,0xbb868c28,0x3b9aafc6,0x3bc56b2e,0x3b7eaed5,0x3b3b8cee,0x3b3c13ee,0x3b2d0313,0x3b5661d4,0x3b6bd6dd,0x3b800906,0x3b6cfde0,0x3b6a3c23,0x3b65cae6,0x3b514031,0x3b455752,0x3b36d167,0x3b437350,0x3b575d27,0x3b693d02,0x3b77cec0,0x3b640460,0x3b6ee2cc, -0x3b8752f0,0x3ae08e03,0xbbc72194,0x3b9b4628,0x3b19a258,0xbb9e9069,0xbb98965b,0xbb92dcab,0xbb70ca5a,0xbb81f5c8,0xbb714865,0xbb489354,0x3b17a826,0x3bb6a856,0xbb91a926,0x3a97ee8b,0xba6060d4,0x3bd62c29,0x3b73b580,0x3b56a853,0x3b20d08f,0x3b8b48fb,0x3bb3996e,0x3bdeb5d6,0x3bbf7435, -0x3bbb697f,0x3babd2d4,0x3b9094bf,0x3b77c8e4,0x3b537ad3,0x3b5474ad,0x3b84d5eb,0x3b9d95b1,0x3bb1651a,0x3ba94b97,0x3b96c772,0x3a4809bc,0x3ab45331,0xbaab5ffd,0x3b0c60ff,0x3b8bec66,0x3a8ab8f0,0x3b8039e2,0x3b5411ed,0x3b4ddf10,0x3b54c51b,0x3b7eb687,0x3a867cb0,0x3b31497c,0x3b4e2e63, -0x3ac5bb83,0x3b2eacdc,0x3bab15e1,0x3c014d3f,0x3b1f2c16,0x3b24a2c9,0x3a55f5f6,0x3b93493a,0x3bcf73a2,0x3c0bb7c3,0x3bee8297,0x3bdfc0e6,0x3bd0656f,0x3b9c8820,0x3b62693e,0x3b0e530e,0x3b478bd3,0x3b8d1939,0x3bd2d861,0x3be576d5,0x3be341ac,0x3b920b03,0x3acd9a91,0x3a717971,0x3af477f9, -0x3a88727d,0x3a891ec0,0x3bb2d239,0x3b5ddab6,0x3bd68c4f,0x3bcb3d0a,0x3b9d9681,0x3b88d912,0x3affb9e7,0x3b974512,0x3b974354,0x3ac3d105,0x3bca7b72,0x3bd2b8b3,0x3c05ef85,0x3b8270cb,0x3ad3745d,0xb5c435a4,0x3b872716,0x3c057f24,0x3c485413,0x3c28f851,0x3c185f40,0x3c06757e,0x3bc6f953, -0x3b7d4958,0x3b0476f8,0x3b36d0fb,0x3b91045f,0x3be32405,0x3c0e86b4,0x3c01ca92,0x3b9b097a,0x3b11e1a0,0x39bb95a3,0xbaf8ecbf,0xb8183dd8,0x3ac3c808,0x3b9e7d4c,0x3bd40fc8,0x3bc5cf07,0x3b83bc6b,0x3b9904cd,0x3b9c313f,0x3aff2401,0x3bb18e36,0x3b80eded,0x3b2c7a69,0x3ba0fa58,0x3be27583, -0x3c0ca427,0x3aa46fc9,0x3a4a23e3,0xbb2744e9,0x3b96643b,0x3c075c4c,0x3c4ebd87,0x3c33870a,0x3c259e62,0x3c12632e,0x3bd05977,0x3b642191,0x3a825c90,0x3b208bcd,0x3bb6bce0,0x3c17d088,0x3c30dca9,0x3c196b84,0x3b96486e,0x3a38a3a9,0xb85f6a3e,0xba7f7d51,0x3958740c,0x3b044798,0x3b87d871, -0x3be00f70,0x3c0837a4,0x3bc00ac4,0x3b92c91c,0x3b7ac5ef,0x3a412cf5,0x3bae93af,0x3bd3de95,0x3ad7dcba,0x3b76852e,0x3ca6c3a0,0x3c971b31,0x3c35b568,0x3be2ddec,0x3a8c27ac,0x3c68eaee,0x3c8da239,0x3c06d881,0x3c4445ac,0x3b91730c,0xbbb8c078,0xbbda2524,0xbbbf12e9,0xba741558,0x3b9ec4ed, -0x3bdb4c08,0x3b807288,0x3bea1125,0x3c179bb9,0x3c2094c3,0x3c03d02c,0x3bcea600,0x3b99bfd8,0x3b46f547,0x3abad2b4,0x3b5269e2,0xba147ed2,0x3b101dde,0x3c603938,0x3bd55961,0x3b24e5aa,0x3b1e2d5b,0xbbb539b3,0xbb953431,0xb7a8b611,0x3ca018c7,0xbc9b7d32,0xbb9e8c86,0xbbcf84a1,0x3addbab3, -0x3acd7328,0x3c093c55,0x3bbc901b,0xbae8f503,0xbaba3faf,0x39dbc007,0x3c07cde0,0x3b033529,0x3a18cfef,0x3b36b357,0x3c01cb94,0x3c462481,0x3c85484e,0x3c245e72,0x3be55235,0x3b8498a9,0x3a19c74d,0x3b438e15,0x3b367d6f,0x3b2c4b0d,0x3b1f862b,0x3b31151f,0x3bd7c4e0,0x3bf2657d,0x3b942ea2, -0x3b4f7796,0x3b25b99f,0x3b7fe1d7,0x3b916012,0x3bccaa8b,0x3c62ff41,0xbc552dcb,0x3b6d3b24,0x3c1804c2,0x3c1e7983,0x3c46030a,0x3c8d3fac,0x3cc159b2,0x3ca8f630,0x3c12a826,0x3a9ff54e,0xbb188f19,0x3be0c65a,0x3bb753a1,0x3c2995e7,0x3c64006c,0x3c53b231,0x3c26f34a,0x3b7f9ba5,0x3b4971d9, -0x3a3b791b,0x3b324d3e,0x3b0e6242,0x3ad33822,0x3b181c5e,0x3ad4c3ae,0x3b53b134,0x3b1b4774,0x3b79a4f6,0x3b358e62,0x3af5632c,0x3b585da5,0x3b6de52a,0x3b367cdf,0x3bb9d058,0x3bbf8979,0x3c0038a1,0x3b29d939,0x3c286542,0x3c2e912c,0x3c495a65,0x3c743ea0,0x3cd64d6d,0x3ce49ac9,0x3ce5093e, -0x3c6a1f17,0x3c19e31d,0x3bad089c,0x3c0b756b,0x3c2e9344,0x3c57e924,0x3c65c99b,0x3c4f6186,0x3c0fc394,0x3b20869f,0x3b1566f5,0x3abd9aea,0x3a71f16c,0x3ac05685,0x39aa0cc0,0x3a2f039a,0x39e7e281,0x3a98c036,0x3b0fef9c,0x3ac27d88,0x3af74130,0x3b2a8a09,0x3b310cbd,0x3b6f84a8,0x3b73cfae, -0x3b288eff,0x3b5971f1,0x3b7749f9,0x3c24e342,0xbc2e48a5,0xbb8e1383,0x3c08e2c9,0x3c950931,0x3cf357f3,0x3cd78ac7,0x3cba2754,0x3c58fa24,0x3c55ae4a,0x3c2bf170,0x3c32c03e,0x3ba3fffb,0x3b1568d4,0x3a85cc09,0x3bc95a63,0x3c0a0c01,0x3c1ff3e7,0x3bf1229e,0x3b94ec5f,0x3b529909,0x3aa932d3, -0x3a8763e9,0xb8eec091,0xb9acf88d,0xba313396,0xba894462,0x3a3a9345,0x3aa2d601,0x3a894037,0x3a379104,0xb9ae250a,0xbac81ed0,0xba9cedbc,0x39e01bc3,0xbb27cbf7,0xbbe97c45,0x3b801f32,0x3c05ad9b,0x3c9fa4a6,0x3c7dc3f9,0x3c78ec18,0x3c687eb6,0x3c45fdde,0x3bd24f24,0x3bf382d8,0x3bf298e0, -0x3c1a2fac,0x3c1d4958,0x3c1653cc,0x3c104abd,0x3b89bf43,0x3aea47bb,0x38dd5cc1,0x3a9ed10b,0x3b105e64,0x3b36c12e,0x3b028b9c,0x3ad6bf37,0x3a818537,0xb99318fb,0xba8a4d6d,0xbb09f9c7,0xbb15c435,0xbb46c5ff,0xbb08635b,0xbaa49813,0xb96ad63b,0xba24d884,0xb99749d5,0xbb867bea,0xbaef6d5f, -0x3a118c19,0xbbf9bf0c,0x3b8e230d,0x3bc740ec,0x3be4b052,0x3c05426f,0x3bdcff1e,0x3bdc2aa1,0x3c119e29,0x3b3ab04e,0x3a192473,0x3a2be648,0x3b005059,0x3b885934,0x3bab2bea,0x3b80d473,0x3b6f145f,0x3b2e5892,0x3b276b3a,0x3b0352c2,0x39d19084,0x3aba3b85,0x3aed158c,0x3b5daddc,0xb9183913, -0xbaf35415,0xbb7f2b4f,0xbb91733e,0xbb9faea1,0xbba56c92,0xbbcfe85d,0xbbf3ad64,0xbc15f964,0xbc2322a6,0xbc0d0048,0xbbf404d7,0xbb20cead,0xb9dc641f,0x39d6a4dc,0x3b3bb78f,0x3ad7433f,0x3a865bb5,0x3aa997de,0x3a9f2363,0x3b355f95,0x3a23800c,0x39f87428,0x3a88d4b2,0x3b091291,0x3b1cd62a, -0x3b4df2b7,0x3b208ec7,0x3aa8fa2c,0x3a9cad9f,0x3afe48c9,0x3b157455,0x3b3872e4,0x3b32b66f,0x3af9193a,0x3b38aa5d,0xb9ca79b5,0xbb3d2fca,0xbbbf90ba,0xbbbf1a5d,0xbbe8e576,0xbc03568f,0xbbe6da75,0xbbe3fb4a,0xbbe07b0c,0xbbcf752e,0xbbb05222,0xbb815e20,0xbb0b7115,0xbb5d9878,0xb92f2a9c, -0xba87fc35,0xb9b296d5,0x38970f1e,0x3a1cc316,0x3a53003d,0x3a5200cb,0x3b04b0d2,0x3b282497,0x3b266b3e,0x3a36ae8b,0xba03bc98,0xba9de9f6,0xba26c668,0xb8d731a7,0x399a28fe,0x3a6f8218,0x3ac6c1d0,0x3b2afc6f,0x3b29de36,0x3a9d08be,0x3afadfca,0xba08658d,0xbb0ed146,0xbb887b2d,0xbbb16b35, -0xbb8c9f73,0xbbaef809,0xbba00815,0xbb9daed3,0xbb99a78d,0xbb0a6d04,0xbb31c740,0xb96bde82,0xbab3c15a,0xbbcc8b05,0xbb00b2ef,0xba9310f1,0xb9b49cca,0x39e85b62,0x3a9633bf,0x3b135eda,0x3b5d6ada,0x3ad578ba,0x39afaa97,0xb944adb6,0xb8c09c7c,0x392da558,0xb8db1dc5,0xb9365dda,0xb9df41a4, -0xba4dd6bd,0xba6006ce,0xbade2a59,0xba5bb4b3,0xb98eaa90,0xba088ffc,0xba513365,0xba4d32de,0xba42648e,0xb9b668f8,0xba2d44e9,0x3837befc,0xbaf76bf6,0xbafb74fb,0xbb196bf1,0xbb9c0538,0xbb5f71e3,0xbba9541c,0xbbeecea3,0xbae4e67b,0x3a567fa1,0xb62afb8d,0xba026370,0xb91c118e,0x38194537, -0x39016416,0x38dcd942,0x39bacfb8,0x3a034384,0x3a427685,0x3a18a32c,0x395bc6c0,0xb96d8b4d,0xb9fa5891,0xb9996d68,0xb8f7d98e,0x3800f7ad,0x39748aa9,0x39beb330,0x396b2d9f,0x3abf55cb,0x399a1b56,0xbb542099,0x3aac24f9,0xb904e59c,0xbb95d1e9,0xbba8eb31,0xbb9d5040,0xbb95f956,0xbb9ae3fb, -0xbb8a0558,0xbb6aa632,0xb90602b4,0x3a8ded58,0xbb7628c8,0xba9a0e60,0x38b10068,0xbbded55e,0xbbc9a2c2,0xbbd4d5d4,0xbba1fcde,0xbba76979,0xbba168d1,0xbbb8c126,0xbbbdd49b,0xbbb1d6ee,0xbbb4f9ed,0xbbb4b5e4,0xbbab26e8,0xbbadc97b,0xbbb2d694,0xbbbe0f65,0xbbb9df5c,0xbbbc9def,0xbbb476e2, -0xbbad8467,0xbb9906b6,0xbbb3a9aa,0xbb5379b4,0x38ebb72d,0x3bf33c12,0xbba4a393,0xb9f141a4,0x3c00d66d,0x3bf91a5c,0x3bed404a,0x3bcab252,0x3bef79f7,0x3bdcc1b6,0x3ba85492,0x3a2ed9b9,0xbba72407,0x3bc2daec,0x3ad15ec2,0x3c04a5f8,0xbb833f92,0xbbb2cf37,0xbbce329c,0xbbbdffa5,0xbc137cce, -0xbc1e8e77,0xbc064050,0xbc0c5858,0xbc0d38b6,0xbbfe6203,0xbbfe088b,0xbc097844,0xbc21c72b,0xbc1d7443,0xbc17cb6b,0xbc011a76,0xbbcec634,0xbbb808ea,0xbbdc6816,0x39ad9152,0xbb29e282,0xba159725,0xbb0722d8,0xbb9776d3,0x3b006ef9,0xba90c451,0x3aa2546a,0xb9b01336,0x3a150dbc,0xbb48828f, -0xb98bb96a,0x3a2bf2ef,0xba2cf357,0xba10c59d,0xb9223b8d,0xba04d559,0xbbda3c27,0xbbb078c8,0xbbdfd606,0xbbb8d81d,0xbc2e099c,0xbc40dbb8,0xbc14a899,0xbc29b6ae,0xbc1bf524,0xbc0d666a,0xbc0a043d,0xbc203878,0xbc3d294a,0xbc433df6,0xbc39ded9,0xbc26af19,0xbbe10bd4,0xbbd42563,0xbb667330, -0x3a59eb58,0xbb0cdae7,0xbb959929,0xbb1bb8fe,0xbaa15ca4,0x3925ee12,0x3aa96505,0xbb6d4d3f,0x3a45cc96,0xba25110e,0x3a7bdbae,0xbb2644ce,0xba2f2d7d,0xb983bcc3,0xba86d912,0xbbad81d6,0x3bb6e8fd,0x3b4a357b,0xbbbbaa0d,0xbbcac250,0xbbaf9296,0xbc597fa0,0xbc845788,0xbc3bf4f6,0xbc64c662, -0xbc529645,0xbc2f096c,0xbc338593,0xbc46e30e,0xbc8bb095,0xbc8d9f68,0xbc7ced1d,0xbc40eef4,0xbbebb775,0xbbaf9d9b,0xbb89cdd9,0xbb1bdcdf,0xbbb7d332,0xbb42dd38,0xbb8cd1a9,0xba42b51c,0x3b07c5d9,0x3b73853d,0x3ba8e702,0x3b57cb75,0x3b64fcf3,0x3b75c32d,0xba2b1757,0x3b8f74f2,0x3b2692d4, -0xbb106597,0x3a33ac16,0xbba799dd,0xbb27cc1f,0xbbd157f5,0xbbd163da,0xbb901861,0xbc654c47,0xbc8116f7,0xbc4447da,0xbc6bab61,0xbc4bba74,0xbc25cb27,0xbc199f4c,0xbc49f03d,0xbc814b2f,0xbc93ca3f,0xbc8910d4,0xbc6943bd,0xbc08c08f,0xbbbce8d6,0xbb523ff9,0x3b2e5b5e,0xbb3be94a,0xbb559d13, -0xbb23262e,0xb8f5dc9b,0x3b8d479b,0x3bc980c5,0x3bf0f368,0x3ba0a147,0x3b91c783,0x3b603659,0x3a72ed5a,0x3b735a99,0x3b6f7046,0xbb184c68,0xb926689a,0x3c9e3e53,0x3b9691c1,0xbc0f3cdf,0xbc5b7159,0xbca12775,0xbc1e7a3d,0xbc2df616,0xbca7d265,0xbc37ebc1,0xbc4b270a,0xbcab53de,0xbc9ae5c8, -0xbc6e6505,0xbbae9562,0xba824881,0x3a73b5c4,0xbb1feef9,0xbb306653,0xbb970980,0xbb3b44d0,0x3b4e55a7,0x3a340fb8,0x3b25687d,0x3a354f91,0x3a07f18c,0x3af16b2c,0xba86673c,0x3b18befe,0x3c5b7859,0x3b881149,0x37dc41df,0xb80bbaff,0xbc106491,0xbc04b7d9,0x3b8c3e20,0x3c2bf9bb,0xbcd035e7, -0xbc81df3a,0xbc656f64,0xbb8d2399,0x3b43d707,0xba7ca162,0xbb0974e6,0xbb8da48b,0xbc0b7d80,0xbbf318af,0x3b830a6f,0xb9deb2e9,0xbae69793,0xbb0d67bd,0xbb2cf0a7,0xbb8714b0,0xbc3ae7b5,0xbc06d1b7,0xbbf7eefd,0xba237f0e,0x3b876d49,0x3a94cea9,0x3aa9ed4c,0xb977a416,0x3994396e,0x3b2c27b2, -0x3bbdc3f0,0x3bc88c96,0x3b6530fd,0x3b1e79b6,0x3b089951,0x3b22888c,0x3ba9d1a1,0x3b834ae4,0x3bcb0d36,0xbc930977,0x3ac126a0,0x3b9534de,0x3bc09af5,0x3aaf0edf,0xbb912fde,0xbb8d4e02,0xbc1ca95d,0xbcbb0a7f,0xbc9568e7,0xbc602b24,0xbb547a69,0xbc0520ea,0xbbf600d9,0xbbd8a4ed,0xbba0282f, -0xbb7f17b1,0xbba4b518,0xbb88629a,0xbba9becc,0xbb979afd,0xbae6a68a,0x38c31408,0x3a8f4192,0xba81fd89,0x3aacaa9c,0x3b231620,0x3b2bbefa,0x3b3b416a,0x3a87b503,0x3b2758cf,0x3b3c6a53,0x3b500104,0x3b576d75,0x3b756ccc,0x3b7ded1b,0x3b7d6270,0x3c3766b5,0x3c0a612c,0x3aa68844,0xbbb793e0, -0xbca7c8c1,0xbc3f9557,0xbc51a5dc,0xbc9a5468,0xbc525b0f,0xbc2c17be,0xbbf17881,0xbc21fbdd,0xbc122749,0xbc01f450,0xbbb61f0e,0xbb7579e0,0xbb6bedfa,0xbb2b3d5f,0xbb829282,0xbb1ca482,0xbb28ce25,0xbab7dd01,0xbad03ca4,0xb9df35d8,0xb946caf0,0x3ab82d9f,0x396d8379,0x3a447ac9,0x3ac5da3b, -0x3b078427,0x3b3ff4bb,0x3b6a8a7d,0x3ac7d47b,0x3a8dd262,0x3b5093b4,0x3bf80e2e,0xbc1f6e76,0xbc22ee7f,0xbc7cd85d,0xbc6a07fe,0xbca8ea58,0xbc63dd37,0xbbf8375d,0x3b3131ba,0x3b850860,0x3bb8c9fd,0x3b1f989e,0x38b9c141,0xbb543bd7,0xbafb050e,0xbb40ee1a,0xbb493b29,0xbb91402d,0xbb85081e, -0xbb4ad000,0xba1d053d,0xb78d6cd9,0xba8da7f3,0xbad79de5,0xbb327f61,0xbaf93948,0xbb067f89,0xb9b22a3e,0xb825c60c,0x3915086d,0xb9f11e80,0xba9cd110,0xbb13c703,0xbace694a,0xbb32306f,0xba04d330,0xbc0fd333,0x3baf141d,0x3acec776,0xbc8ce0e4,0xbc980212,0xbc84e939,0xbc86bd5d,0xbc8eb887, -0xbc89c3f2,0xbc46a035,0xbc3f040f,0xbc64f054,0xbbf57ca6,0xbbc9186d,0xbbaf25e6,0xbb01e301,0xb8bda47b,0x399b4811,0x3b13047d,0x3a6ba271,0xbb1c9251,0xb9ba238f,0xba4b742c,0x3a4a450a,0xba44acde,0xbae52061,0xbb304679,0xbb682716,0xbb7aef26,0xbb4c7426,0xbaf9ab51,0xbb087036,0xba9df27a, -0xbadd0b0a,0xb8912902,0xbaacd609,0xbaa2892b,0x3a4cb5fd,0xbc17d6da,0xbc1c2554,0xbbf307d9,0xbc0612c7,0xbbff6d62,0xbbe6e286,0xbbef276e,0xbb8edd5f,0xbab7bde1,0xb9038cde,0xbabb3036,0xbaf64646,0xbac0da68,0xbb7276b4,0xbb857ec8,0xbb55b43f,0xbb1678c9,0xba58acb5,0x3afb394a,0x3abd8871, -0xb9a4e4ae,0xb9a82946,0xbb3a6e0f,0xbb805d74,0xbb9b28ea,0xbba6d473,0xbbb66361,0xbbd9551f,0xbbf43cbd,0xbc162b9b,0xbc23093c,0xbc30ceda,0xbc3e738c,0xbc2f2d6a,0xbc178563,0xbb098d49,0xbb433bf0,0xbbcfd3da,0xbbb80ae8,0xbba14c9a,0xbbc6d721,0xbc011a41,0xbc26934b,0xbbfe0840,0xbbc6fb39, -0xbb7b2cd8,0xbb4f8ed8,0xbb2e5bbe,0xbad7f793,0xbb2336e6,0xbb0aa98d,0xbac61d62,0xba9f04a0,0xba3afb89,0xb9b3a1ff,0x3a92b01e,0x3ad76740,0x399340ba,0xbaa984f2,0xbb7e53a1,0xbbd13594,0xbbd725b3,0xbbddb00b,0xbc043bb7,0xbc04900b,0xbc02f76c,0xbc06d7ea,0xbc062db9,0xbbe8053b,0xbb86742c, -0xbb36eebc,0xbb31ffc2,0xbbaf01dc,0xbba7e595,0xbbb8636c,0xbbe06669,0xbbed7b3e,0xbbef846f,0xbc026648,0xbbd9777e,0xbbc563b4,0xbbaf7dd4,0xbb88f898,0xbb490e6d,0xbaf38543,0xbac10779,0xbaa1243e,0xbaac6671,0xbaa2b411,0xbaf4b54e,0xba850d5c,0xbab5c7ba,0xba41e717,0xbaa89805,0xbb2a5a3a, -0xbb90f9fa,0xbbe06b59,0xbbc23e0c,0xbc1542d3,0xbbdd8be9,0xbc003d00,0xbbcace7e,0xbbda5931,0xbbb97563,0xbb174c85,0xbb63b857,0xbb99ba79,0xbaaa32dc,0xbba86aac,0xbbb92052,0xbbbd61d7,0xbbb0f2e0,0xbbd01fcc,0xbbdd281f,0xbbfaf6c1,0xbbd161af,0xbbabca7c,0xbb848707,0xbb538545,0xbb221144, -0xbad5db39,0xbb0b3a84,0xbb16ff02,0xbb19e49a,0xbb160219,0xbafb3188,0xbb423f7a,0xbae5e332,0xbb536457,0xbb652cd6,0xbb85dbf1,0xbb43a11b,0xbb30e6b6,0xbb3dd20b,0xbb50f8da,0xbb19e269,0xbb7313b1,0xbb96e6b8,0xbb4c6065,0xbbae8638,0xbba75c6c,0xbb3ad7da,0xbbd6cb43,0xbb9104f3,0xbbae85fc, -0xbb9d53f2,0xbba2f8f2,0xbba65959,0xbbab8a12,0xbba66db6,0xbbab9b0e,0xbba245a9,0xbba197bd,0xbb9eb371,0xbb9739e4,0xbb8e2e11,0xbb819175,0xbb7fabed,0xbb7b4080,0xbb802849,0xbb833514,0xbb804100,0xbb89c748,0xbb75e828,0xbabb7c9b,0x3b1a7a3d,0xbb8f143c,0xbb12915b,0x3b012ca0,0x3b0e00af, -0x3ad01f7e,0x3a97d18f,0x3acd7517,0x3aaff540,0x3a30cb69,0xbb1a31d7,0xbb8a1690,0x3ad5741d,0xbaae7f78,0xbbe78ebe,0x3b860bdb,0x3b45cceb,0x3bc6e7ed,0x3b4b0e0e,0x3b42d450,0x3b33b9a6,0x3b4f29b4,0x3b6483f4,0x3b816f09,0x3b719c10,0x3b73efcb,0x3b78ce16,0x3b6fd5f4,0x3b6754d8,0x3b5608b3, -0x3b5ef00a,0x3b6b5d3d,0x3b722a59,0x3b80c40a,0x3b631416,0x3b92b4d7,0xb8b276ce,0xbb7470de,0xbc14dba8,0x3abc8661,0xbb54298f,0xbc0a6804,0xbc0c6ccb,0xbc04ff27,0xbbe5ab09,0xbc0e1c85,0xbc098495,0xbbfb950e,0xbb7a148c,0x3b226515,0xbc014d7e,0xbbaae8f5,0xbc0f3152,0x3ba0eb8f,0x3b85390d, -0x3b443ab1,0x3b0cf0b5,0x3b4fd933,0x3b8ce7f7,0x3bd072c5,0x3bb371ad,0x3bbac047,0x3bb12104,0x3ba843ab,0x3b96eb93,0x3b695184,0x3b6407c3,0x3b858476,0x3b978d8e,0x3ba279f0,0x3ba96520,0x3bc062b5,0xbb818430,0xbab169b6,0xbb6a0245,0xbb23dc49,0x3aff0c0c,0xba94fb3f,0x3a440654,0xbab8a306, -0x39bec521,0xb94f2865,0x3ba42149,0xbacdcf74,0xb9f886b0,0x3603b619,0xbb2ae2f2,0xb8dd6d94,0xbaca5979,0x3c0ba11a,0x3b41ae13,0x3ae3be3f,0x39d34c1b,0x3b1be135,0x3b6aae88,0x3beca4ec,0x3bc2976c,0x3bd0ffcd,0x3bd43536,0x3bcaf8b8,0x3ba5c628,0x3b3ccbb7,0x3b769846,0x3b86b36e,0x3bbe9ec7, -0x3bb8cbe9,0x3bf39e2a,0x3b2d6cfb,0xbb9e5294,0xbae14a56,0xba69078a,0xbb29b881,0xba902f7b,0x3b4115e2,0x3a9ce612,0x3bd472d3,0x3af9c716,0x3b9112f9,0x3a65cb45,0x3a647c0b,0x3b3b10c6,0x3b0409fc,0xbb536e76,0x3b966936,0xba5a7b6d,0x3ba54154,0x3bab407e,0x39ca3d73,0xb9adf3bf,0x3a6b1431, -0x3b882380,0x3c2978ec,0x3c0b8dbf,0x3c10dbf2,0x3c07c962,0x3bffc04c,0x3bbf49b9,0x3b07ae39,0x3b392b19,0x3b70488a,0x3bbd1ec6,0x3beecdb3,0x3c058a14,0x3b8e9761,0xba0bf4f8,0x3a5ce8a0,0xbb4dd268,0x3912839c,0xba895483,0x3bb619a7,0x3b3e9f5c,0x3b932bf3,0x3b5cf0fe,0x3bc15009,0x3b8aa537, -0x3ad364e8,0x3b33264c,0x3b211706,0xb9659b6a,0x3b5a6130,0x3b92fb65,0x3bc525cc,0x3b66e994,0xba90e503,0xbb1b1b59,0x3958b006,0x3b1c93a5,0x3c17e05e,0x3bfd168c,0x3c123b9d,0x3c226f3c,0x3c1762d7,0x3bddb962,0x3b0ac445,0x3b5003a0,0x3b99ca36,0x3bf1b993,0x3c07fc16,0x3c120578,0x3b9a45e9, -0xbbcafd0c,0xb9584cac,0xbb3957df,0xba6db285,0x3adc97cc,0x3b89025e,0x3be63d9e,0x3bf2ad45,0x3bc8764c,0x3b8e932e,0x3b979d8f,0x3a2e2765,0x3bbbae00,0x3bc2f7a6,0xba5a07ee,0xba26dabf,0x3c638242,0x3c305d5b,0x3c6064e0,0x3bc27ad7,0xba4b36a8,0x3c230953,0x3c5f9bff,0x3c00a4a6,0x3c6f60bc, -0x3c1cc379,0x3930af7d,0xb97c179d,0xba5f9bd4,0x3900a677,0x3bbc8255,0x3befbcc8,0x3c0c3b7f,0x3c153206,0x3c261417,0x3c0a0aca,0x3b79841f,0x3bcd9758,0x3afea638,0x3b7d3b27,0x398d18ed,0x3ada21e9,0xba6c1fb4,0x3b10a927,0x3c4e71d0,0x3b949a49,0x39b10260,0xba12eb89,0xbc11047b,0xbc01476e, -0xba931acd,0x3c8c5666,0xbca797ea,0xbba491f7,0xbb8f12e6,0x3a1e91a2,0x3bc687ad,0x3bae4f8c,0x3aba61d7,0xbb0891e0,0xbb819e62,0xbaa0a054,0x3c1b9da6,0x3a3258c6,0xba8ade1c,0x3aadf261,0x3bc0c1d6,0x3c1f5d4a,0x3c4ee2a9,0x3be69848,0x3be93717,0x3a9fdda4,0xbabc38f9,0x3b2098ad,0x3b0f668b, -0x3ae4ed80,0x3b11d159,0x3b765620,0x3bc3f09d,0x3bcc90ec,0x3b5650e4,0x3b24bdb4,0x3b1abbc9,0x3b5e1360,0x3bb1d4f3,0x3be0523c,0x3be97e21,0xbc77e862,0x3b7c9ddd,0x3c274df4,0x3c1cc6e2,0x3c0fc860,0x3c4af4d7,0x3c95d50f,0x3c9149ff,0x3bc34ec2,0x3b9ab5d0,0x3b24a7f3,0x3be932a3,0x3c0b9e61, -0x3c4506ed,0x3c6a1955,0x3c66c1c7,0x3c2ab8eb,0x3b5fdca3,0x3b35dfd2,0x3b3c6c4d,0x3b04b1bf,0x396e143c,0x3aaebd39,0x39e728d4,0x3b168597,0x3b41eee8,0x3b0b2c0a,0x3b47ba90,0x3b3479cf,0x3ac24ed2,0x3b5d16fd,0x3b6e6bbd,0x3b9c139f,0x3b9f2014,0x3b552e1e,0x3b69d2e9,0x3af80af1,0x3bf485c6, -0x3c076eee,0x3c0113c2,0x3c120bca,0x3c74da31,0x3cbd240b,0x3cd04851,0x3c2c1df6,0x3c4fa661,0x3c07bcfb,0x3ba17f5b,0x3c3eb13a,0x3c5dc618,0x3c78b2c8,0x3c4e78fe,0x3c150376,0x3b2eccce,0x3b0b1ed4,0x3b56fd0a,0x38ad6666,0xba522d47,0x39099fcf,0x37f56f92,0xb94af959,0x3ac85340,0x3a518de1, -0x3a7c5c93,0x3a65ed7d,0x3acd2062,0x3b4530c5,0x3b6ee737,0x3bb8603c,0x38a76fe9,0x3a7e2f31,0x3b0bef94,0x3c1bf494,0xbc3e1bb1,0xbba99ceb,0x3b31d17a,0x3c1d4ccb,0x3cb81fc8,0x3c82f5fe,0x3c5199e1,0x3c0eba64,0x3c23a7f0,0x3c0bdcbe,0x3bf3886d,0x3b7aa946,0x3af0f436,0x3aa3c60a,0x3b978131, -0x3bead148,0x3c10228a,0x3bd7858e,0x3b8af071,0x3aa91859,0x3a675125,0x3a7f7b51,0xbaee5474,0xbacb8cb5,0xbab79766,0xba71abed,0xba0d25da,0x37bb4bd8,0x39a267f6,0xba253803,0xbabd11d7,0xba9490d7,0xb9b534c3,0x3a733fd6,0xbb016aa9,0xbc03666d,0xbab22cf2,0x3b68a4e1,0x3c8a1608,0x3c284eb7, -0x3c3ac900,0x3c2af0f3,0x3c422e03,0x3c33eea5,0x3bfae5ba,0x3bb25d0e,0x3b830993,0x3b9795fe,0x3bd3c272,0x3bade378,0x3b4f1977,0x3ae02642,0x3ac6dc62,0x3ac25ba7,0x3b22b024,0x3b4395c6,0xba8540fb,0xb974ae48,0x3b00a0c7,0xba822fb9,0xbae73e7e,0xbb0f672e,0xbb619212,0xbb45d894,0xbab26ed7, -0xba33631c,0x3a1a4866,0x3910b526,0x3af288b8,0xbb05954f,0xb982e5f7,0x3b8a2a0e,0xbc41eb01,0x3a84f1ee,0x3b82b6c9,0x3ba327ab,0x3bd881f4,0x3be947f3,0x3bf6d887,0x3c13c0fd,0x3b846eb5,0x3b07c90f,0x3af046a9,0x3b3b382c,0x3b6138a8,0x3b6df773,0x3b1db213,0x3b33d5f2,0x3b81cc4f,0x3b726a79, -0x3b547581,0x390dfd66,0x3af6fb0a,0x3b1aeb70,0xb980820a,0xbac8aff7,0xbb2da71b,0xbb880e98,0xbb19cf1b,0xbb8600b5,0xbb96f855,0xbbd3f299,0xbbe997b7,0xbc015f19,0xbc2cb52e,0xbc151950,0xbc1b88f5,0xbbcb786c,0xbb628fa3,0xb9b9da9e,0x3b92ebae,0x3b448055,0x3b5e038e,0x3b6b55f0,0x3b813e42, -0x3b9de5b2,0x3b2f6c79,0x3b087afd,0x3b01a99d,0x3b2d89dd,0x3b277020,0x3b2c6a16,0x3b12d626,0x3acd209b,0x3b15f4cf,0x3b2a6022,0x3b4dc5f3,0x3b438f80,0x3a3451c0,0x3905c7a6,0x3a6577ba,0xbb0f4278,0xbb7159bf,0xbbbd7db0,0xbbe5f44b,0xbbf1932f,0xbbfb7197,0xbbe930f7,0xbbef42f4,0xbc01c16b, -0xbbe3f00f,0xbbdbe271,0xbbcbcc98,0xbb84b82d,0xbb897af9,0x3a458b3a,0x3a400ebf,0x3a4a9103,0x3ae190df,0x3af40f41,0x3b0417e5,0x3b07b2ac,0x3b29b0de,0x3b3057c8,0x3b1ab3b2,0x3a7e8666,0xb90fe4a4,0xba99a33c,0xb95eb597,0x398b5929,0x3a7b628e,0x3a5e598a,0x3b106bfd,0x3aa56d07,0x39b29d6e, -0xb994b62c,0x39a6815f,0xbad482eb,0xbb604038,0xbbb126a7,0xbbc10efe,0xbb570a10,0xbbf4f2bc,0xbb893451,0xbbcd05f5,0xbb9f33f4,0xbb47358c,0xbb696f45,0xba8c3a7f,0xba800b90,0xbbce6b6c,0xb9f7d66c,0xba02657e,0x39554bb3,0x3a0ab0ce,0x3a948040,0x3aff5672,0x3b35c3aa,0x3ae7e218,0x3a7bda5d, -0x3a282ea9,0x3a1d673a,0x3a2d6c9c,0x3918f2be,0xb8f9d02b,0xb9fb4d13,0xba4a0df6,0xba6dc519,0xbab447e4,0xba4d16c9,0xbb304051,0xbb152642,0xbb495b84,0xbb28f081,0xbb22a1a0,0xbae25b1c,0xbb193aac,0xbae9d639,0xbb46a6e6,0xbb2998a4,0xb9e02d2e,0xbb9ded6f,0xbb44598b,0xbb8f8010,0xbbea1b11, -0xbaa4b034,0xbadc27ac,0x39e9037a,0xb9833404,0x3881b6a0,0x3980816c,0x39b2e7d2,0x39a9ce6b,0x3a069784,0x3a0a8b7b,0x3a25ea5d,0x39fadea4,0x3948635c,0xb8eb7d4b,0xb97d6fe9,0xb82b5de5,0x38e1634b,0x394b5847,0x39a8f208,0x39a80baa,0x3a4bb173,0xba73a878,0xbb6dd34e,0xbbca90c2,0xba9af241, -0xbb89ce1f,0xbbf811af,0xbc07f437,0xbbf6a62a,0xbbea5747,0xbc020773,0xbbf6aad9,0xbbd274fc,0xbb572adc,0xba4d0a47,0xbbc3e471,0xbb97a2dd,0xba6d5472,0xbb8a5223,0xbade450e,0xbbcbe4d4,0xbb71d003,0xbb6c1a49,0xbb606c6b,0xbb73e038,0xbb7ab16d,0xbb701af3,0xbb7828d4,0xbb7a3ebf,0xbb7077de, -0xbb6cbf7f,0xbb77a56e,0xbb883690,0xbb891049,0xbb8b3439,0xbb833a66,0xbb7afd27,0xbb55ba8b,0xbb8bc346,0x3a87a2ed,0x3b7f34fc,0x3bc378a6,0xba57d590,0x3b70c0c1,0x3be53d2b,0x3be12b5d,0x3bd34a28,0x3bbe2435,0x3bf521ad,0x3bea357e,0x3bc5b79d,0x3ba183b0,0xba769636,0x3bab0261,0x3bb2ffa7, -0x3c316e1f,0xbacde437,0xbb8a836a,0xbb8c579e,0xbb7f5288,0xbbab114c,0xbbb25982,0xbb9fed4e,0xbbad22ea,0xbbb16377,0xbba24974,0xbb8fc523,0xbb9daa88,0xbbcc5f55,0xbbd6477d,0xbbd8183b,0xbbb7b3bd,0xbb8db236,0xbb873d40,0xbbb1cd36,0x3b4a3c97,0xb9ba6849,0x39de6e06,0x3ad233dc,0xbac8e896, -0x3b37fa30,0x3a5fcf44,0x3b673709,0x3b08d360,0x3b4c645f,0xbb218c86,0x3aae3f49,0x3b2b9d46,0x3ad27472,0x3ad2bd6c,0x3ae9e30d,0x3b9a4212,0xbbbc090c,0xbb9fa976,0xbb92ecc3,0xbb6c1d9c,0xbbaecf71,0xbbb76be7,0xbb9cb8b7,0xbbbfffc6,0xbbb1ee6f,0xbba6475c,0xbb823fb7,0xbba9ab0c,0xbbf3f0e2, -0xbc0b0e1f,0xbc05b902,0xbbee6a04,0xbb8e11b8,0xbba97f21,0xba57fbe6,0x3b9d8196,0xb902b589,0xbad092eb,0x399dab35,0xb886426c,0x3b33e069,0x3ac07cb0,0xbb3f3989,0x3b998d1a,0x39cd0e43,0x3b678b52,0xba8642c9,0x3a8cf6fb,0x3acdaa53,0x3a54413a,0xbb21d233,0x3c1dd9cd,0x3b6dcd41,0xbbba6ced, -0xbb86b157,0xbb7aa164,0xbbccc63b,0xbbe67e87,0xbbb45903,0xbbf24e6e,0xbbe178e5,0xbbc7785d,0xbb89b55a,0xbbab8604,0xbc1d3a76,0xbc39b2bc,0xbc31704f,0xbc059c8a,0xbba29eb0,0xbb90a6a2,0xbb13e114,0xb9926bb1,0xbbac6674,0xbb04f52e,0xbb8cfb39,0xb8617f83,0x3b096d6e,0x3b800e48,0x3b738442, -0x3b67c745,0x3b49da46,0x3b9405c8,0xb9ed7b23,0x3bb32c20,0x3b25f07c,0xbac4162b,0x3ad25066,0xbad15fe8,0xbabf2c6d,0xbc04fcd9,0xbb78e72d,0xbb3d7edf,0xbba5b046,0xbbbe5feb,0xbba8e47e,0xbbe6a8a3,0xbbcaf6e2,0xbbafea27,0xbb342510,0xbbb30e1f,0xbc24332c,0xbc4e097e,0xbc463579,0xbc21b209, -0xbba0febd,0xbb878e47,0xbacb9be2,0x3bca01f5,0xbb239217,0xbae67d2a,0xbb2a251b,0xba9f668d,0x3b8967b0,0x3b849065,0x3bbfcbdf,0x3b96660d,0x3b9af093,0x3b5d7710,0x3a4f3c36,0x3b830f95,0x3b5c60be,0xbb6fbff8,0x3b206be4,0x3cbec9a5,0x3c27db54,0xbbd89184,0xbc26f8c5,0xbc8befe6,0xbc032e32, -0xbbbdfa5a,0xbc25e7ae,0xbbdccac9,0xbc192846,0xbc8eb810,0xbc9811d9,0xbc836073,0xbc1f23f7,0xbb3d0db3,0x38fc1761,0xbbb2eb40,0xbb697156,0xbb66dba1,0x3a2217a6,0x3ba11cf6,0xba069aa9,0x3b0da0b8,0x3a72811b,0x3aeb0553,0x38c5c3c1,0xb9f75299,0x3b065800,0x3c2d6d15,0x3b4d403a,0xba19491f, -0xbaaac7a0,0xbc2e6582,0xbbceafb3,0x3c096d0f,0x3c8158a9,0xbca33fc9,0xbc8cb2ed,0xbc98e6be,0xbb979a99,0x3c035021,0x3b4aee6c,0x3a6be48a,0xb9c88eb0,0xbbc2aded,0xbbb1e219,0x3bae3465,0x3a77bb9b,0xba047f48,0xb9c95cb0,0xbaeb9293,0xbb312285,0xbbda696a,0xbb48e81e,0xbb954560,0x3aa424a8, -0x3ba6f453,0x3b29ecf4,0x3b029265,0xb814534b,0x38d177e6,0x3b44f9b8,0x3b9e1a05,0x3ba8c8e2,0x3b2b3fbe,0x3acc74a4,0x3a836c9e,0x3b431f78,0x3bff3451,0x3bb557c1,0x3a3b846e,0xbc70422f,0x3b8a7075,0x3bc62cd1,0x3b8ad4cf,0x3aa04a3a,0xb9306441,0x3ba4e752,0x3b2fe2e9,0xbc15dd06,0xbc458931, -0xbc4da536,0xbb8fdc49,0xbbce61ed,0xbb5d497a,0xbae5cdf0,0xba9e2516,0xba8a0d08,0xbb550ba0,0xbb188fd3,0xbb80c7ed,0xbb23f082,0x38c34b42,0x3a28af33,0x3b21459e,0x39fc18e1,0x3b242b42,0x3ac908d5,0x3b2aa8b8,0x3ab28209,0x39c97a8d,0x3b21070b,0x3b596fc0,0x3ba99808,0x3b3297c3,0x3adb29b0, -0x3aacaa12,0x3b9dda3b,0x3c1f3e0b,0x3bee9839,0x3aacbb12,0xbac5c8f8,0xbc1095ec,0x3a31da06,0x3928d593,0xbc2941cc,0xbba192d4,0xbb9f1499,0xbb941e6f,0xbb6d028e,0xbaaa3f2e,0xb9de7409,0xba8469e3,0xba8046ea,0xbb2b0669,0xbaf0f449,0xbb8e995d,0xbaf24a8d,0xb9f2392e,0xba80f044,0xbacd3fb7, -0x3a87ea1d,0x38b9c0c4,0x3a25ed2d,0xba1f4ad5,0x38c07f44,0x3ade1b49,0x3adb8d09,0x3b634009,0x3ba3637d,0x3970dfc3,0xbafa659b,0x3b38b747,0x3bb12d4b,0xbc0a29bc,0xbbf61346,0xbbef0c77,0xbb5b09e3,0xbbbd0c54,0xbb8d8306,0xbb36c137,0xba288236,0x3c077451,0x3c354d52,0x3be5d704,0x3bc713a7, -0x3af4a951,0x3af59ee6,0x38ce789f,0x386f79db,0xbaef06b6,0xbb1822bb,0xbb44f872,0xba8ead81,0xb72aa4fe,0xba8e3d2d,0xbacdecb3,0xbb3c61e7,0xbb111014,0xbab5f762,0xbacbe788,0xbab59e79,0xb96bb3ec,0xba9eb13e,0xbab97574,0xbae33559,0xb91a315f,0xb9a0a349,0x3a0e2c19,0xbbe5929b,0x3c549c7b, -0x3c355c0b,0xbb3cf933,0xbb2bb308,0xbb954c06,0xbb5cc50d,0xbb5f0d32,0xbb031dad,0xbb7440db,0xbb8e4782,0xbbbaaaca,0xbb0ce00b,0xbaaf2615,0xba8bd8d7,0x392e8410,0x3a8ba762,0x3a41263d,0x3b369340,0x3ab48f4d,0xba9f960d,0x3b1fa68a,0x3a9cc25a,0x39d8e08d,0xba3e7529,0xbb094397,0xbb000de1, -0xbb3fdb17,0xbb482efb,0xba6c2b86,0xb897d9ab,0xb88623c9,0x3b088014,0x3a66cb9c,0x3b3d4ef9,0x3b8a4313,0x3af22426,0x3a408eb8,0xbb77f82a,0xbb9ffbd5,0xbb418382,0xbba6930f,0xbb98ef8b,0xbba36f36,0xbb955d9c,0xbb1a8a7a,0xb9e5effb,0x3981e909,0x38fe46dd,0x3981c9a3,0x3a2f1269,0xba437bf7, -0xbab74614,0xba45f580,0xba7fc089,0xb9cf3da5,0x3aeb6703,0x3af4cfbc,0xba12303b,0x381bb731,0xbb536867,0xbb747fd6,0xbb56c573,0xbb95fc8a,0xbb93bcba,0xbbbdcaaf,0xbbcaf5ec,0xbbf8d2f2,0xbbf8ebac,0xbc0b8189,0xbc201fff,0xbc0b122f,0xbbde94ae,0x3a301191,0xb846cdf9,0xbb75a05f,0xbb32d828, -0xbb2d3128,0xbb2a49f2,0xbb62d84f,0xbba8b81d,0xbb7e8367,0xbb456ef7,0xbabed20c,0xba8936f0,0xba86613b,0xba6e130f,0xba89526d,0xba4ffb45,0xb98e6fa0,0xb941e5c6,0xb842b793,0x3a1de5ac,0x3b1911cf,0x3ae12def,0xba01a215,0xbaaedea7,0xbb8b948b,0xbbc27ded,0xbbbb2c4a,0xbbc7ccef,0xbbfaaf0a, -0xbbf0a1e4,0xbbee7f62,0xbbe6f935,0xbbf3a6d3,0xbbd046ec,0xbb260ac7,0xbae07bce,0x39e34e09,0xbb394a57,0xbb5720bb,0xbb2b21c9,0xbb4fe7fb,0xbb60f5c1,0xbb6a67ed,0xbb6ed504,0xbb349a09,0xbb27a049,0xbb160842,0xbb26e627,0xbb14060a,0xbae422c3,0xbab90264,0xba8e8ee4,0xba97f5c7,0xba48f9b3, -0xbae8ac9f,0xb78bc13d,0xb9bb4192,0xba62141d,0xbac96a7b,0xbb216c1a,0xbb713d7b,0xbba8a4a2,0xbbadee3c,0xbbf691b2,0xbb8ab94a,0xbbdc9da1,0xbba00d99,0xbbcb9c5c,0xbb7c3114,0xb9f73d22,0xba9c0a5e,0xbb1da103,0xb902a64a,0xbb708895,0xbb6f60c9,0xbb89c1f6,0xbb8ee032,0xbba3a260,0xbbb035f1, -0xbbcb63c2,0xbbbff583,0xbba9830f,0xbb90823f,0xbb6c4864,0xbb39ad7b,0xbb08e121,0xbb1f7436,0xbb2b9402,0xbb3d9277,0xbb3b3ce8,0xbb38cd2e,0xbb5d4571,0xba9e20e6,0xbb0dde3f,0xbae80428,0xbb140d75,0xbab865b6,0xba8515b7,0xba337eb2,0xb9a7bb80,0xb945d606,0xba543ef8,0xbb245ebc,0x38f7c101, -0xbb037d61,0xbb4c2d93,0xba999192,0xbb6daaad,0xbac94948,0xbb8746a5,0xbb7443f2,0xbb775e1e,0xbb76f6c7,0xbb7efecf,0xbb7a3e76,0xbb7c7bfa,0xbb6be8e7,0xbb6e8fd0,0xbb7298f2,0xbb72843d,0xbb729c56,0xbb69197f,0xbb672cec,0xbb62f2f8,0xbb6460ca,0xbb6489b0,0xbb5e59c4,0xbb8155cd,0xbae6f65b, -0x39f6e7b9,0x3ac2958f,0xbb059994,0x38bac7de,0x3a9f910a,0x3ab4d300,0x3a7254ea,0x3a2c45ab,0x3aad484d,0x3aac365d,0x3a27bba9,0xb982db43,0xbafd0e9d,0x3ab6e122,0x3a7053d3,0xbbb5859b,0xb9c1cf76,0xbb1f0fc2,0x3b308d6d,0x39852225,0x3897c13c,0x37f1fddb,0xb9071585,0xb7f745d6,0x39d4407d, -0x39916716,0x39c3f3b6,0x3a2eb07a,0x3a3407e5,0x3a1a777f,0x398bcdc9,0x399e4744,0x39939cc2,0x39aa415c,0x3a02d8b8,0x39b42167,0x3aa68388,0xbb83daf0,0xbbbe60f1,0xbb9ad50c,0xbb4ddc59,0xbbbd7009,0xbb949b86,0xbba25586,0xbb9776e3,0xbb8607ba,0xbbb90155,0xbbb9d451,0xbbba2531,0xbbc801a9, -0xbb1efe76,0xbb9efdb7,0xbbddf166,0xbbf93610,0x39368eae,0x3a3bf173,0xba20b1fe,0xba824ef5,0xbb00f6de,0xbad680e9,0x39bc8971,0xb87b19a5,0x39dc7a67,0x3a520453,0x3a95432a,0x3a2bf01b,0xba74e4ea,0xba8b1f17,0xba616d0f,0xb95ac958,0x392f0a76,0x3a5b2c6c,0x3afc3cbe,0xbbaf089b,0xbb661806, -0xbb7e7446,0xbbade818,0xbb059e22,0xbab2f93e,0xbb1017e7,0xbb6e7ad6,0xbac59b44,0xbb0be949,0x3b302291,0xbb2b4ffe,0xbb15b4f8,0xbb1e035a,0xbb950d9f,0xbafa4ea3,0xbbbc7ead,0x3b2ba171,0x397ab4a6,0xbae27de6,0xbaef6e90,0xbb66f557,0xbb79e035,0xb9453e7d,0xba92d0fb,0x395bd2c3,0x3a9f8f3f, -0x3b0e588f,0x3a9953a2,0xbad1c274,0xbaba797b,0xbaf0a775,0xba385bc4,0xb9f20303,0x3b024835,0xba719f1a,0xbbe04b4d,0xbb69bcb6,0xbb8b36be,0xbb9cdfd5,0xbb23fa2d,0x3937f3b8,0xb9e6592f,0x3b231202,0xbaa0a4c6,0x3b0e806d,0xbaaae0a2,0xba385170,0x395ee650,0xba5bb83d,0xbbb8e84b,0xb97dd454, -0xbb699d74,0x3a958256,0x3b0525c3,0xbb2c8930,0xbb201b5b,0xbbc92e88,0xbbc0f743,0x380fa81d,0xbaa0048c,0x3a2f2242,0x3ae65675,0x3b3c8f98,0x3abbaeee,0xbb8b100e,0xbb86690b,0xbb7fc474,0xbadeb2b5,0x372afb22,0x3b186bc8,0x3a510433,0xbb431af0,0xba8ac5da,0xbb7f9271,0xbaa8f895,0xbb3436ec, -0x3b9b98db,0x39157d21,0x3b466c81,0x3b5a183c,0x3bc339aa,0x3b722ccb,0x3a47cae8,0x3a82fc6f,0x3a75c4dd,0xbb4a4f12,0x3a95edfc,0xba86d1d6,0xb93b4c7f,0x3accb7b3,0xbb734d54,0xbb13ad42,0xbbecaadd,0xbc039621,0xbae8d07c,0xbb3bedc9,0x39911258,0x3b64d87f,0x3ba6db69,0x3b3dfa79,0xbb4fbfa6, -0xbb804cf0,0xbb857b07,0xbb16e7df,0xba325e67,0x3b078340,0x3aece9ac,0xbbeb0627,0xba977f00,0xbb86de7c,0xbb11f1c0,0x39d03b21,0x3b89a415,0x3bc1f7bc,0x3bbc5f14,0x3bbd91ec,0x3b933087,0x3ba0ebb5,0x3a9ae0f1,0x3ba3756d,0x3b83b00f,0xbb767e5d,0xbb5ed163,0x3c1e72bf,0x3ae35694,0x3bc76ba0, -0xbb0ebf19,0xbc07022d,0xbae0bb7f,0x3aa06eb1,0xb9e89a1d,0x3bd933eb,0x3bab115e,0xbaa492eb,0xbb2904a4,0xbb2bc142,0xb9f8a01c,0x3b619d1f,0x3b9b50fc,0x3bf7608c,0x3ba91198,0x3b859ee9,0x3b1ab99f,0xb9825614,0x3b5812ba,0xb9f55ac2,0x3b61dd30,0xb4b0e542,0xb94a29c2,0xb9f3e826,0x3b263c06, -0x3c17b0dd,0x3b37fce4,0xba9b1081,0xbb771876,0xbc34aed8,0xbc177440,0x3a947883,0x3c4590a4,0xbcaf45a8,0xbc1603be,0xbbaebc96,0xba854426,0x3c2eaf02,0x3a9b78a0,0xbb1b3507,0xbaf1cdbb,0xbbd0ec8b,0xbb7ff510,0x3bf0e6a4,0xb9358c04,0xbaf09252,0xba9e2c58,0x3883abb9,0x3aa40a7e,0x3803cb10, -0xba8759c0,0x3adf4b0f,0xbaa16787,0xba8f6410,0x3a8f5296,0x3a9ade3c,0x39df5bfc,0x3ac849de,0x3b88f5cb,0x3b9c1b41,0x3b8f74a5,0x3aeec340,0x3a78def6,0x3acf88cc,0x3b6ddcbe,0x3beffe25,0x3bcd14b0,0xbb30dfcd,0xbc8ad991,0x3ae6e542,0x3c19b260,0x3bc82fd7,0x3a6612f0,0x3a70972f,0x3ae68edb, -0x3b17c6e0,0xbb14be9f,0x39bf2727,0x3a7c1c0b,0x3b598d77,0x3b936b9b,0x3bb8e13a,0x3bccd6c7,0x3be9786b,0x3b8f47b3,0x394c7a23,0xb935bf46,0x3a9fff03,0xb971a996,0xbadd4fcb,0x3a0963c0,0xba65ac8e,0x3af33e41,0x3b15381e,0x3aed8706,0x3afad9e5,0x3b0d2819,0x3a2ba2c4,0x3b31c6fe,0x3b4d6106, -0x3bba5d45,0x3b2f9038,0xb96e5b5b,0xba9e9caf,0x3a566ba0,0x3b9e5789,0x3bbe9444,0x3a57ab80,0xbb27fd41,0xbc0b980d,0x3b067c87,0x3ba8a300,0x3865e659,0x3bd41330,0x3b9a881f,0xbae7a2bf,0x3b93b079,0x3bb17b06,0x3be00e83,0x3ba360e1,0x3b7b3cd9,0x3a36e94f,0xb98df617,0x3aa9553d,0xbacdd459, -0xbb435b56,0xba32de77,0xba85c548,0xba1fc426,0x3a8b58b9,0xb996890d,0x381963b5,0xb8d2689d,0x39afe67e,0x3b42c11a,0x3b5e2e1b,0x3bb07b09,0xbb15cd8a,0xbb1c1106,0x38c443aa,0x3bcb2812,0xbc17ed05,0xbbfdcf96,0xbbf127c9,0xbbb23714,0x391026c8,0xbb765304,0xbb559981,0x3ae1109e,0x3b8db999, -0x3bb514f8,0x3b3d7c2f,0x3b0f45d5,0x3a6796e5,0x3a5c1522,0x3a0981ba,0x3ad0ee2f,0x3b1951d5,0x3ab3b641,0x3a6dcdc2,0xbad8af58,0xb9fbfc9e,0xba0553b3,0xbb46165f,0xbb4f0f0e,0xbb1e4c8b,0xba81be40,0xbadd0a8b,0xba9ef45c,0xb9d0b927,0xbad89eef,0xbaea89b4,0xba51d2c1,0x3a34a14f,0x3a637e5a, -0xbab092c0,0xbbeb98ba,0xbb194eae,0xb926b6cf,0x3b93c399,0xb88b520a,0x3a3ab619,0x389c0594,0x3b357f97,0x3bcc92ba,0x3ad697a5,0xbac7a891,0xbbc2c9de,0xbb96afb4,0xba95cb8e,0xbac003dc,0x3898d7b4,0x3a5999bd,0x3afa1afb,0x3ad0d2b0,0x3b0069df,0x3a9794d7,0xbb1c4ef8,0xbab69faf,0x3aa97d41, -0xba987c3c,0xbb04ad73,0xbb301b74,0xbb7364b7,0xbb17b6ab,0xb9ab6686,0xb96ec546,0x397c226c,0x39a96522,0x3adbd0fd,0x39c0af7e,0x3a189e9c,0x3b95b162,0xbc2659f8,0xbbc1a9d5,0xbb7fb1f1,0xbb23ffa4,0xba614776,0x3a7a850f,0x3af9b6f5,0x3b2cb4c1,0x3af7faf1,0x3b054fec,0x3b0df9a4,0x3b11edc4, -0x3a5eb70d,0x391153a6,0xba1822fa,0xb86218bc,0x3b208491,0x3b1e0cee,0x3b24a8fe,0x3a3f6157,0x3aec68a6,0x3ab2bbe7,0xbb5ebb33,0xbb53cdf4,0xbb6bee26,0xbb7d263f,0xbad34c13,0xbb760db6,0xbb94d413,0xbbd27bdb,0xbbe4f55a,0xbbdebd3b,0xbc2381f3,0xbc1b025a,0xbc317f35,0xbc231b48,0xbbb658bf, -0xbb0d97e3,0x3a5464d7,0x38fdf404,0x3aa906cb,0x3aa2f04d,0x3ad90470,0x3abdb6f2,0x3a9ddef5,0x3a97d85d,0x3aa7f034,0x3ac4d21e,0x3ab35e32,0x3a73919c,0x3a751420,0x3a96c237,0x3b1dcaeb,0x3b0d5073,0x3b2df2bf,0x3b15ecd2,0xba07bc44,0xba4e316e,0xbabdbf60,0xbb4e0bd1,0xbb80043d,0xbb9c56ef, -0xbbde670d,0xbbd609be,0xbbdf8db1,0xbbe0ad93,0xbbe9fd2b,0xbc034b07,0xbbfc879c,0xbc0295a2,0xbbfd0021,0xbbb7c8e1,0xbb8a6290,0xba7cdb2f,0xb9161697,0xba143387,0x39144589,0xb74bda85,0x38ce05cd,0x391e164a,0x394b5e46,0x39177f14,0x38cc9e62,0x38907757,0x384bce9f,0xb95c7a21,0x3a246d6c, -0x3a764504,0x3ab5b92e,0x3a6b5d41,0x3b075a6c,0x39a66320,0xbaafb12f,0xbaa6ba9f,0xbadad66a,0xbb276b8f,0xbb846fcf,0xbbb9b02e,0xbbae9c23,0xbb84ebb6,0xbc04c43d,0xbb98aafb,0xbbdeedce,0xbbaef7dc,0xbb9a9cf8,0xbb829d24,0xbb5be6e9,0xbb1f2503,0xbb896d94,0xba5a2b62,0xbace8cac,0xbab3e5d0, -0xbabddce2,0xbab931a4,0xbaa5ed50,0xba9e08c0,0xba498067,0xb9e8e840,0xb92559a1,0xb7697f15,0x381d541a,0xb92cc354,0xba0ddddd,0xba49bd88,0xba44f8f9,0xba588171,0xba3b1db8,0xba2bb576,0xbb4e0b3d,0xbb3d1b5f,0xbb793d23,0xbb6b02a8,0xbb60109e,0xbb3bd738,0xbb606bce,0xbb592830,0xbb497ede, -0xbb43cd29,0xb9fb68eb,0xbb64a8ef,0xbb4a0a8a,0xbb5fbb3e,0xbb96bf5a,0xbb1e863d,0xbb6eb968,0xba0dc279,0xba712b5d,0xba4dd260,0xba388e06,0xba2e127c,0xba2808b5,0xba284b6e,0xba304fee,0xba3d0e38,0xba46d0bc,0xba4976aa,0xba3f5b85,0xba1bb219,0xb9eb0848,0xb9c48399,0xb9cbe5c2,0xb9cc4c6e, -0xb9e92c0b,0x3912a5aa,0xbb3ccc46,0xbb9ee56e,0xbb95d1fe,0xbb585d05,0xbbb34c9a,0xbbb10075,0xbbbdef85,0xbbae286b,0xbbaa30bf,0xbbc12c8a,0xbbbea54f,0xbba9ce7f,0xbb94ea3f,0xbb322bfa,0xbb8caee3,0xbba828db,0xbb1b1c9a,0x3a619b15,0x3b512f6c,0xbaa01501,0xb905ef78,0x389a18ba,0x3907e3d4, -0x39c35e2e,0x39e3228a,0x39f81d7f,0x39b7583b,0x39b2510a,0x39d4c0d6,0x39efc5f5,0x399d9403,0xb82900eb,0xb91cfdce,0xb90511ec,0x383c08be,0x393c83cb,0x39a0e1f8,0xb7c9067e,0x3b65150f,0x3b66f018,0xba47fbb4,0x3b40f10f,0x3b7cdfa9,0x3a0b318c,0x3a0185c0,0x39c5ca2f,0x3a3b3dc9,0x3abb2ae2, -0x3ac6195a,0x3ac91cf5,0x3b92174f,0x3b539b53,0xb96433b7,0x3b82f376,0x3ba3ed60,0x3b1e0fea,0xb8bea24f,0x3817fae9,0xb8c47663,0x3a4b178e,0x3aabd24c,0x3ac14738,0x3a99e239,0x3aa6baf9,0x3aa6da87,0x3af659d6,0x3acbad12,0x39aa8398,0xb9aa12bd,0xba051134,0xb89dd123,0x3a001f93,0x39adde6e, -0xb942b928,0x3b164895,0x3a64f435,0xb9d7831d,0x3b294abb,0x3b010ab1,0x3af741d0,0x3b086819,0x3b4b9d57,0x3b58c428,0x3b6c0a0e,0x3a530b64,0x3ac7dfe6,0x3b2d934c,0x3b245a06,0x3ad2347d,0x3b20dd7e,0x3bbb3046,0x3967c36e,0xbaac0a7e,0xb93751c7,0xb96e035e,0x3ad02285,0x3b1980eb,0x3b1962ef, -0x3af1c739,0x3b0b1690,0x3b14525f,0x3b599400,0x3b1956db,0xb9746f3d,0xba954251,0xba95342f,0xb9994da2,0x3a70b90d,0x39549b44,0x3b10c44a,0x3b75d43e,0x3a242859,0x3a07d899,0x3a93793e,0x39eac057,0x3b91c2dd,0x3ab9fa5f,0x3a9f3c14,0x3bd2fc8e,0x3b27f6e4,0x3b89e6d6,0x3aa12bf0,0x3b3bd2fb, -0x3b38e8e3,0x3a38a5d7,0x3b132559,0x3c02062e,0x3b770691,0xba961c3f,0xba2abb5f,0xba8ca9aa,0x3ad74420,0x3b6d7be1,0x3b722e06,0x3b567447,0x3b72ddd3,0x3b569927,0x3bba11a2,0x3b91877d,0x3a22886e,0xba9b4abe,0xbaef46fb,0xb9dfc2e7,0x3a2bda1d,0x39d04f02,0x3abc264a,0x3a89f3eb,0xbb230ee1, -0xbaf9cf4c,0xbb1b3e74,0x374a3116,0x3b625419,0x3b50f08d,0x3b2b0d28,0x3b8ac912,0x3b82eb87,0x3b9fdb43,0x3a5c6139,0x3b984688,0x3b0e66f4,0xb99eaccf,0x3b42f304,0x3b46cd01,0x3ac3dda7,0xbb8c3acd,0xb9d87a3f,0xba3eb175,0x3b7078de,0x3b8e64ee,0x3b8918b2,0x3b72f8d4,0x3b89c99b,0x3b8e91f8, -0x3be2449b,0x3b9a9d80,0xba47f889,0xbb146141,0xbb184fbe,0xb9e8e076,0x3ade878f,0x3a94322e,0x3ae3ccb0,0x3b7ec8c8,0xbaab78f1,0xba9a11b3,0xbaf4e7ca,0xba88a278,0x3b8551e8,0x3b4be7c5,0x3b976526,0x3ba6f427,0x3ba2b537,0x3b81a15c,0x3aa2f372,0x3b9535a6,0x3b6bc8fb,0xbb633f2d,0x3b4f3309, -0x3ca25bf8,0x3c515178,0x3af6d8a1,0xbada5fe7,0xbc02d0bc,0xba45a0de,0x3b913699,0x3bd0946b,0x3b9b66c5,0x3a371d86,0xbba5d187,0xbc312a6b,0xbc384fbc,0xbc0072ee,0xbab67bf2,0x3ac8ec32,0xbb008ffe,0x395d63d3,0x3adca483,0x3b9bedcf,0x3b95d1e6,0x3a2055dd,0x3a97a3f2,0x3b1d4d00,0x3b1f6ad6, -0xbaaa73c8,0x3a1437e7,0x3b1d365d,0x3bd7b9a3,0x3b3c4a54,0xba0013d6,0xbb3c4df7,0xbc2c8e5e,0xbb900952,0x3c05ea3f,0x3c9875df,0xbc6c8a5a,0xbc4576c3,0xbc6d8ca0,0xbae8b68d,0x3c54b7d3,0x3bec2bae,0x3b88ebda,0x3b43aa4d,0xbb0fbf73,0xbaed5551,0x3bc616c0,0x3b076bc8,0x3a5594ed,0x3a18178f, -0x3a62f6f6,0x3af692b9,0x3b613193,0x3b85d384,0x3aff52e5,0x3b30c00c,0x3b29d4a0,0x3b334337,0x3b15b8d5,0x3a7792dc,0x3a96fc04,0x3b687849,0x3b845d13,0x3b81f82d,0x3abcbb88,0x39b74b8b,0x3a1191b3,0x3b9495ad,0x3c1e6321,0x3bdb9c91,0xbb91c2dd,0xbc42aa6a,0x3b9634ac,0x3c251e38,0x3b53d54e, -0x3ab3b9ef,0x3bbe97e9,0x3c381bf6,0x3c4e75bc,0x3c311f70,0x38db3ca2,0xbba0c6ef,0xb9b671f8,0x3a5a5078,0x3b9f14a8,0x3bde9722,0x3bd55d98,0x3b986467,0x3a89a32b,0x3a40bfb1,0xba4a0d16,0x3aa71c09,0x3ad624bb,0x3a9d62d5,0x3b180779,0x3b1ee908,0x3b63cef0,0x3a837653,0x3b14f5a5,0x3989efca, -0xb68272b8,0x3b1a6cdb,0x3b601b43,0x3bc3cdf1,0x3b1c5e80,0xba33cbbc,0xba94a41a,0x3b206896,0x3bb76811,0x3bd78553,0x3b33f28e,0x3b6e2892,0x3bc9d2e3,0x3c4495cf,0x3c5ef5b6,0x3c013235,0x3bfcfdc8,0x3ba1a7fe,0x3ae3ca6c,0x3bde165e,0x3c1bf2c1,0x3c1db238,0x3bd92b4c,0x3b8c630b,0x3a1faa21, -0xb919c312,0xbb00dfce,0xba36426a,0x3a6dea95,0xb999990d,0xba6a7f13,0x3acca66d,0x3a39a6b1,0xb5d4cf52,0xba4f90b7,0xb9649aa4,0x3ab9bc25,0x3b04952f,0x3b7ee88a,0x3ba37093,0xbacee021,0xbb851605,0x3a9641ac,0x3b4d004e,0xbbd2428d,0xbbac38c7,0x3b2b74d0,0x3c0ed104,0x3c6a0a2c,0x3c184c8d, -0x3bcab304,0x3a1b82ca,0x3c29c941,0x3c4f76f0,0x3c20cb4a,0x3c1d79bf,0x3bd66bc2,0x3b97cd73,0x3b73a175,0x3b7d6be4,0x3b599472,0x3ad49008,0xb9f25c3a,0xba8bf028,0xb9f0cf57,0xba8a68ab,0xbad1173b,0xbb2f46c1,0xbb1b4238,0xba315141,0xbb0927cf,0xbaf06318,0xb9a181d4,0xbabaf3b1,0xba85bf80, -0xba1212b4,0x3ad0859c,0x3b312fb9,0xb8f9e0c4,0xbb841fd2,0x3c4577c4,0x3c6c3450,0x3c85261e,0x3c8a293b,0x3c47ee53,0x3c526db0,0x3c590e55,0x3c6919af,0x3c01b11f,0x3bb9a8cd,0x3b8f445f,0x3b4e0e2a,0x3b715ba4,0x3b77e10d,0x3b1f0b96,0x3aec0535,0x3a80831e,0x3b1072a6,0x3b063ee2,0x3aa73cf4, -0x3b570e81,0x3b0db5a7,0xb9828cd7,0xba4631ed,0xbb022e80,0xbaed8f11,0xbb0388b5,0xbabc9dd6,0x3aa2ad0d,0x3aa8e393,0x3abf5de4,0x3b503ffa,0x3b165d55,0x3b23fb7a,0x3bb8b022,0x3b89a4a6,0xbb9327ee,0x3a902a78,0x3a01a4b5,0x3aef2a03,0x3aae1a98,0x3ad04047,0x3a890ac4,0x3b31b4b8,0x3aebf461, -0x3acda7eb,0x3adacb15,0x3b2bd325,0x3b48ee65,0x3b45776e,0x3b321240,0x3b26b55e,0x3b314f55,0x3af82417,0x3aaee116,0x3a9cc0d3,0x3acf04e6,0xb92ef9f4,0xb954aa86,0xbb3d1fe1,0xbb4c51b5,0xbb12672d,0xbb4efb2f,0xbb5a1ef2,0xbb877c61,0xbb9fd8a2,0xbbb81607,0xbbab9399,0xbbd5eb6c,0xbbe7bf3a, -0xbbddbb04,0xbb9b9af6,0x3941aa6c,0x3aa1954b,0x39d980fb,0x3a3bf2a8,0x39bf9916,0x3acc71c9,0x3b1a7659,0x3b3bb97b,0x3b10391e,0x3b036acc,0x3b1d86e3,0x3b1b5d25,0x3b0723f6,0x3ac8267d,0x3ae358b0,0x3ad67015,0x3b07eb40,0x3b05c4fa,0x3afb3b33,0x3b2512c3,0x3b256122,0x3a5b347c,0xba9038c4, -0xbae312e6,0xbb7918ef,0xbb8f553d,0xbb9b1ad8,0xbbaef804,0xbbd69338,0xbbc7a382,0xbbcb784f,0xbbc3d932,0xbbd6499f,0xbbc75b94,0xbb6f5d66,0xbb2e1c39,0x3a22565e,0x38f74e88,0xba1202b7,0x3a505294,0x3ab2b527,0x3acdc31d,0x3aceb6fc,0x3b08a856,0x3b17cd2f,0x3b12e986,0x3b0dec05,0x3a3b5898, -0x37e25455,0xba01ee67,0xb90ad63b,0x39829ee1,0x39c081ff,0x3a571abe,0x3a11e9fc,0x3af32f37,0x3a8f674d,0xba1249d3,0xbaa1f437,0xbaf40f28,0xbb21ae69,0xbb415bba,0xbb89f29e,0xbb872499,0xbb5f3037,0xbb9a9b9a,0xbb8c44dc,0xbbabed46,0xbb271086,0xba86270a,0xb9d2bdf1,0xba2d5490,0xbaa4b39e, -0xba56d0c9,0xb9eba114,0xba733c40,0xbab32ddc,0xbaaccebb,0xbaa8eff8,0xbab0f5c9,0xbb0878d1,0xbb13ee9c,0xbb192432,0xbb015248,0xbace6dbc,0xbab1f1ee,0xbabefd0c,0xbacf2f4c,0xbaf6c588,0xbaf9c33a,0xbb177f10,0xbaf5feda,0xba1dc4ae,0xba1b76de,0xb93585b0,0xb9d01b57,0xb9b1a368,0xb8549623, -0x399f0712,0x3a902109,0x39d9fc41,0x3a1fc924,0xb9a8d2c2,0x3a140a53,0x38a9e779,0xbad9b40e,0xbad7412e,0xb96c1227,0x3aa64683,0xba227d50,0xba42196d,0xba11acd0,0xb9d71f6d,0xb9cd450c,0xb9e69fb3,0xb9b6efe1,0xb9812f2f,0xb991f34b,0xb9df5dd4,0xba2644e1,0xba6c8efa,0xba88fba3,0xba814446, -0xba6f664c,0xba5ae9c9,0xba3c8707,0xba2b38d1,0xba82e2a8,0x3a525786,0x3a86a582,0xbaa61ea5,0x3a45a15e,0x3a7ffa10,0xbadd05f5,0xbaf1eec5,0xbaef8851,0xbaedb729,0xbac79292,0xbaa451bc,0xbab160d8,0x3a3835e3,0x3a47f12a,0xba743b4a,0x3a9200fb,0xba7cce90,0xbb97af4f,0xbbb7ae11,0xbb3a6832, -0xbb447e0c,0xbb4b535c,0xbb3f3c2c,0xbb66d128,0xbb714bb2,0xbb636edc,0xbb609527,0xbb5924f9,0xbb3e76e1,0xbb387e41,0xbb3f0b51,0xbb555738,0xbb5b2b5d,0xbb67ff8b,0xbb64b7c8,0xbb5d3447,0xbb485a13,0xbb403304,0xbb978352,0xbb5e3749,0x3b18c824,0xbba8ee7a,0xbb72e9ed,0x3b275d8e,0x3b081ea0, -0x3b065378,0x3ae77dd7,0x3ac29271,0x3a97ffbc,0x39b92913,0xbb56fde6,0xbba33577,0x3a9f9a94,0xbb42579f,0x3937eb39,0xbb70ff9d,0xbb533a3a,0xbb894d3e,0xbb8214fe,0xbbd1c9de,0xbbe11efb,0xbbbda59b,0xbbb67d41,0xbba5917a,0xbb8818fe,0xbb6018e0,0xbb7c0ddb,0xbbb84f25,0xbbc12347,0xbbc8d8c5, -0xbbb2321e,0xbb9c1924,0xbb830bce,0xbb670d93,0xbb419c73,0xbb6d821e,0xbb1c0dab,0xbb8ed9a8,0xbb8e4b2e,0x38e972b0,0xbb3fba6b,0xbb16ed41,0xba8fa2a2,0xbaaf39b3,0xba6305e8,0xbac7def7,0xbad1c043,0xbb1abcdd,0xbb4ead14,0xbacf0ce5,0xbb914c4e,0xbb8fe9a1,0xbb517021,0xbb98ef34,0xbb672c5a, -0xbbfde630,0xbc15af91,0xbbeb91f3,0xbbf20c39,0xbbbc3a03,0xbb8a3048,0xbb300ae2,0xbb69fb14,0xbbcf24d0,0xbbecf4a7,0xbc02f90f,0xbbf899c5,0xbbca93d2,0xbb991558,0xbb6136d3,0xbb7654cb,0xbb66a76b,0xbbb66dd6,0xbb8627b9,0xbb17199d,0xba567967,0xba41cddd,0xbb0b1218,0xba50c56d,0xb8a021fb, -0xba6bd71d,0xbab307d2,0xba9ab366,0xbaea2a41,0xbb8ae1c9,0xbb85c4f9,0xba1ab01d,0xba680808,0xbb2cfb8f,0xbb9c85b0,0xbb81285f,0xbc2bf00e,0xbc51a421,0xbc1f4346,0xbc20239c,0xbbea0cb6,0xbba36849,0xbb35e7fd,0xbb6e059d,0xbc2040c0,0xbc3192f0,0xbc37f1c1,0xbc180da7,0xbbeaf85b,0xbb99506b, -0xbb45b433,0xbb6f65cb,0xbb7d557f,0xbb7996a7,0xbb4d8c38,0xbb33605f,0x3b4e5460,0xb9fc6813,0x3b08037a,0x3b855728,0x3ba039f6,0x3b68c9f9,0x38dec3ca,0x3aa2055a,0x3a033fc5,0xbb80a769,0x363c34d5,0xbb98c3c6,0xbb9d1f43,0xbb34b9db,0xbb9c2b9b,0xbac9950c,0xbc2f87c7,0xbc610853,0xbc354d3e, -0xbc37772b,0xbbf665a8,0xbb6af97f,0xba0b5060,0xbb1c1625,0xbc0a885f,0xbc39849b,0xbc4f55c3,0xbc418650,0xbc11e3b6,0xbbba5332,0xbb006313,0xbb329aa0,0xbb1df350,0xbb86b66b,0xbb45d2cd,0xba96d2e4,0x3b887fec,0x3b821338,0x3b84addd,0x3bafaf37,0x3b9f33cc,0x3b9487c0,0x3b03223f,0x3b775cd2, -0x3b05b5ab,0xbba83fb1,0xbb2d14e1,0x3c191156,0xbb197d4a,0xbb94ffd8,0xbc2964f3,0xbc7cac48,0xbc4a0d75,0xbc263f4d,0xbbfa9134,0xbb63803e,0xbb256875,0xbbb27b57,0xbc22c4ae,0xbc151258,0xbb6738b3,0xba8ad4e0,0x3a07cea1,0x3af67d30,0xba8d735a,0xbb591267,0xbb620d17,0xbb015b61,0xba39deb4, -0xbacba7d5,0x3b13ef29,0x3a5dc448,0xbafe960b,0x3a47644b,0x3b510336,0x3ba284ae,0x3ae34da8,0xbaef78bf,0xbbb2eddb,0xbc366792,0xbbf1d472,0x3bc376d4,0x3c0f3a9b,0xbc9c02d1,0xbc53223d,0xbc15ffd5,0xbb1ccd93,0x3c6c0356,0x38f4f7a7,0xbb0ad1df,0xb8eefa2d,0xbbdec9bb,0xbbc0bb62,0x3b53c7ae, -0x386e6cbd,0xba8e136d,0xbb5c5129,0xbba2531e,0xbbd35724,0xbc310a90,0xbbedf508,0xbb949044,0xbaf88480,0x3a52f327,0xb8e9cc7c,0x3a2b737f,0xb9d73829,0x3a77e15d,0x3b79d9d3,0x3b654512,0x3b291d5c,0x3989e896,0xba1a7fa1,0x3a7cd6b9,0x3b994a89,0x3c151716,0x3b955e12,0xbc2c413f,0xbc84553f, -0x38d5d136,0x3c178235,0x3ac57d54,0xbbca6d5d,0xbc0efbc5,0xbc4f2b1e,0xbc3e7d15,0xbbb4bf42,0xbbcfbff3,0xbb979a92,0xbad9822b,0xbb150db7,0xbb2af5e5,0xbb487b88,0xbac5694e,0xbb13f597,0xbb218ae5,0xbb40a7dc,0xbb084396,0xbb12dd44,0xbb01b63f,0x382b87b7,0xba155871,0x3a9a3a80,0x3ae798e1, -0x3ac43cc2,0x3a7a3fc7,0x3a5807d8,0xb9b68479,0x3af983ed,0x3b244c65,0x3babf9c2,0x3a51c211,0xbb3ecfa2,0xbb90c066,0xb9fb0eda,0x3b3262f3,0x3b9ba38b,0xbb8d4d95,0xbc307a21,0xbcd285cc,0xbc922ff4,0xbc75d1c8,0xbbb2da39,0xbb140b0a,0xbab099eb,0xbbc0204b,0xbb55295a,0xbb392339,0xbb242b5c, -0xbb461af5,0xbb037d68,0xbaae714a,0xbb2b59a2,0xbb15b2ba,0xbb1d75fb,0xbb50d54f,0xba9faa5e,0xbaec2a7b,0xb9836403,0x3958d842,0xba2e2945,0xba833972,0xba50d3e7,0xb8ce2f70,0x3b204e45,0x3b4b1265,0x3b624ae8,0xbb557c8b,0xbb9edca5,0xba87d106,0x3aa68fb1,0xbba5a1ed,0xbc19ad30,0xbc5bbc54, -0xbc7420bb,0xbc8e310f,0xbc8b371c,0xbc540379,0xbb45b3e7,0x3a744664,0x3b90ee6f,0x3ab892b6,0x3b49f830,0x3ade8540,0x3ac53947,0xbb161a47,0xbb741892,0xbb8e01f7,0xbb88af0d,0xbb50f3ef,0xbb6a6705,0xbaf92ddd,0xbb1ecdf4,0xbb50b30c,0xbb86c42a,0xbb490297,0xbaa5cf9f,0xbb13aac9,0xbaff3aea, -0xba4fdcea,0xbafd5678,0xbaa5d78c,0xb9fc9194,0x3ad424df,0x3a8231d8,0xb9d431b8,0xbb8a904c,0x3b0ecea1,0x3aa598f1,0xbbabf4d0,0xbba10285,0xbbc46600,0xbbd7440f,0xbba5987d,0xb9814372,0xbb3e8418,0xbbb4a290,0xbc366272,0xbc1e90cc,0xbbe6a530,0xbbd4f614,0xbb0e76a4,0x38ddd0f2,0x3abb254b, -0x3add2f5d,0x3a9c76a3,0xba6046a3,0xbaab5ffc,0xba990104,0xb9db541d,0xbaa6c90f,0xbb09354f,0xbb3bbaf2,0xbb312638,0xba834d78,0x3a18fd92,0x39b48750,0xb9ad5a53,0x39c9e844,0x3a0b9dcf,0x3b0ad1ee,0x3b0b30b4,0x3b391e68,0xbba6f157,0xbc2172c2,0xbc251312,0xbc0856e7,0xbbecbad7,0xbbaa4118, -0xbb895297,0xbb85ab53,0xba568cf0,0x3ab8404a,0x3b0e016c,0x3a95b9d4,0xba55c976,0xbaef0f71,0xbb11b5fb,0xbae54064,0x3758d421,0x39ccaf6a,0x3a8018df,0x3ae02429,0x3a8665ca,0xba3f9fca,0xbb8ecd99,0xbb879505,0xbb853290,0xbb592f1d,0xbb0e7c2f,0xbb6817e4,0xbb8c989c,0xbbb81d4d,0xbbcdb5cc, -0xbbb33de5,0xbbf70ec6,0xbc08f9d6,0xbc25fb64,0xbc327141,0xbbadb894,0xbb4b6119,0xbb81e6f9,0xbb64f468,0xbb283579,0xbb1f67f9,0xbb06c693,0xbb3a0059,0xba82dd20,0xb9a87b0c,0x39ddf892,0x384faf54,0x3837ab90,0xb953a9d8,0xb9632e3c,0x3a18a54b,0x3ac5ab33,0x3a92a429,0x3aa6cc50,0x3a9d223c, -0xb99cc4a2,0xba49116f,0xbb437805,0xbb45cf33,0xbb6a8f81,0xbb645bba,0xbbad5482,0xbba59455,0xbbbd60c0,0xbbcd32f8,0xbbd7600f,0xbbed7f79,0xbbfc78b0,0xbc036e12,0xbbed4930,0xbbbe5248,0xbb2a7e79,0xbb480981,0xbb0dc8da,0xbb1bfad7,0xbb120791,0xbb2180f7,0xbb1ff5ea,0xbb1df9f7,0xbb2309d0, -0xbb1bf8da,0xbaf83134,0xba5b8235,0x384c4247,0x3a14165f,0x3a6a32c3,0x3a81cb6f,0x3a8273f9,0x3a19d529,0x3a425f7b,0xb8ea529e,0xbadeb5d1,0xbad51596,0xbb4214ea,0xbb3c48a2,0xbb70b108,0xbb934d89,0xbb853c32,0xbbabdcca,0xbbda76ac,0xbbb52c1b,0xbbcda831,0xbbc38b97,0xbbbe36d9,0xbb67187e, -0xbb95e6c3,0xbb6bbde7,0xba355e91,0xbacac157,0xbb2152b3,0xbb432ee6,0xbb629ae4,0xbb85e262,0xbb972a67,0xbbaea2d1,0xbb808128,0xbb342a25,0xbb05044e,0xbad58703,0xbab2162e,0xba6e637f,0xba9ba7d8,0xba9b0a85,0xba80a4f0,0xba6fa6b3,0xb9d60240,0xba5b8ade,0xbafc7f6e,0xbb0fa2b1,0xbb2e8169, -0xbb448b1c,0xbb38294a,0xbb337519,0xbb3f6b01,0xbb49b089,0xbaebab63,0xbb18d6b6,0xbaad0be2,0xbaa804d7,0xbb26f555,0xbb0bd67b,0xba89b601,0xbb5497d5,0xbb57d67b,0xbaf56f99,0xbae4a5ec,0xbaeaffa3,0xbaecbe0e,0xbaf1cf40,0xbaedf5e5,0xbb03f0a5,0xbb01a270,0xbb09349d,0xbb01de65,0xbae335a9, -0xbabe609c,0xba98c25d,0xba96184b,0xba963122,0xba9e4258,0xbaaaba1b,0xbab03524,0xba90ed98,0xbb3ddff4,0xbb310fcf,0xb97b61a2,0xbb5de617,0xbb4f993e,0xb9a1e98e,0xb98b1929,0xb9e0e463,0xba38b1ab,0xba5fb88e,0xba8a6576,0xbaac5f9d,0xbb459548,0xbb494497,0xb934ad08,0xbb14f7e3,0xbb4a3c42, -0x3b7fe764,0x3b9109e1,0x3b74a96a,0x3b261ca9,0x3b2e46a4,0x3b292c0c,0x3b465f2f,0x3b50d16e,0x3b52e518,0x3b4fcd47,0x3b54740a,0x3b5ac127,0x3b5a2bb2,0x3b525919,0x3b427262,0x3b38e1ba,0x3b3c0ec0,0x3b3ebc42,0x3b45b405,0x3b32a5af,0x3b586d23,0x3b1536bd,0xb986dac4,0xbbdaa193,0x3b536fb8, -0x39cf5893,0xbbb8d0aa,0xbbbb80d3,0xbbb294d3,0xbb8f8d11,0xbbaaa684,0xbb9fcad1,0xbb83dfb6,0x3945029d,0x3b8107e9,0xbbafd64f,0xba79e61f,0xbb749c64,0x3b8a0031,0x3b4ec736,0x3b3b508c,0x3b1099c1,0x3b7a1bf7,0x3b9b8ae0,0x3ba82b87,0x3ba8795c,0x3bb7116f,0x3bb1133f,0x3bbe236b,0x3bb4f155, -0x3b94635a,0x3b780b60,0x3b6c340a,0x3b6bab8f,0x3b68af90,0x3b618f68,0x3b84a973,0xba95bf90,0x38720550,0xbb14243e,0x39b7d24b,0x3b3e3399,0x37793f31,0x3ab09402,0x39b8d274,0x3b20de5a,0x3ae4ccae,0x3b6cb818,0x3998ec87,0x3a59c3ce,0x3ab3b0ec,0xb9daa835,0x3aa72852,0x3b0e3ff0,0x3baf5cbb, -0x3b072302,0x3b249601,0x3addcb61,0x3b927220,0x3bb057d7,0x3bbee653,0x3bc63857,0x3bda3049,0x3be5bcc6,0x3bfb5527,0x3be4c006,0x3b96714d,0x3b82c1be,0x3b669802,0x3b88ff01,0x3b755c47,0x3b88aef2,0x3b32d63f,0xba9c0693,0xba20c595,0xb81ea949,0xb9c90696,0xb8f36418,0x3b72f8b4,0x3a4fdd32, -0x3b954e7a,0x3b9db70a,0x3b7595ec,0x3b252eec,0x3b1c926f,0x3b4bde4e,0x3b1aee6e,0xba9650d7,0x3b9ab049,0x3b0edfde,0x3b35e458,0x3b67769c,0x3aaec54b,0x39df5c81,0x3b836ee2,0x3be699e0,0x3bfe91ff,0x3c11e5a2,0x3c224e4b,0x3c164433,0x3c351178,0x3c203708,0x3bd2563e,0x3ba5d21e,0x3b77a2ab, -0x3b87bba5,0x3b79811a,0x3b7c3f83,0x3b54294d,0x3918acbe,0xb9253ee5,0xbb38201b,0xb9c38b77,0xba4a8023,0x3b997ea8,0x3ac44554,0x3afff385,0x3ba29aad,0x3bab2d1f,0x3b9336b2,0x3b01fc69,0x3b276333,0x3ad49de4,0xb8aa5a57,0x3b52edab,0x3ba57135,0x3b567dc0,0x3ab3a10a,0x3ab156c0,0x3a456d5d, -0x3bb8aadd,0x3bd63e9b,0x3bf7e87d,0x3c0d28e3,0x3c22acaa,0x3c2f8eb5,0x3c49c05a,0x3c33cb5d,0x3bb6ca85,0x3b97fa23,0x3b8055e5,0x3ba46c1d,0x3b9829de,0x3b87e6df,0x3b4bac54,0xbb10b2bb,0xba482001,0xbb07c330,0xbaa464bc,0xb99e69f5,0x3b80f2c8,0x3b532b92,0x3b7714ba,0x3bc3ab8f,0x3ba7d890, -0x3b98dd76,0x3b0a1794,0x3b9c4318,0x3b6b8868,0xbb2a835d,0x3ad64292,0x3c2cdc1a,0x3c0e8906,0x3c081af6,0x3b7fc052,0xba924687,0x3b46d42d,0x3c1744ae,0x3c81f7cd,0x3c5ba9ea,0x3c20f686,0x3be5d0fa,0xbb0be67b,0xbb9ecede,0xbb5d4fe9,0x3a97dccd,0x3b5ab1a3,0x3b869770,0x3b9d2f43,0x3bc6df79, -0x3bbe9819,0x3adda908,0x3b0110ba,0xb9b2aee2,0x3b7022d5,0x3b0c1658,0xbb0d0fc6,0x3af5f411,0x3b5de8fa,0x3b421781,0x3b26a3ef,0xba3f6fa7,0xbb8edf3b,0xbc14f269,0xbb5880da,0x3bb5d6f6,0x3c83d09f,0xbc307db0,0xbba7340a,0xbbcec389,0x3abad9f3,0x3c84c8fb,0x3c108bf1,0x3bb268a0,0x3b6bb9a2, -0xba5f41e4,0xb93a30f3,0x3bb1bb69,0x3b2ba592,0x3ad42f2a,0x37a4ad62,0x3b060227,0x3b8cb489,0x3c156af4,0x3bd88ce8,0x3bb5c7f9,0x3ad8156d,0xbaa571e6,0x3aa93adb,0x3afb5793,0x3acabae2,0x3b19d382,0x3b74d340,0x3b58ee32,0x3b276c29,0xb8b2c3bd,0xba1db9bf,0x3a83a5d5,0x3bca59ac,0x3c182edc, -0x3bba3db4,0xbc051222,0xbc2cbab7,0x3b2e227b,0x3c65dac5,0x3b1c7c5a,0x3846a622,0x3bcde3a6,0x3c067af6,0x3c473354,0x3cbb3bfd,0x3c0f5560,0x3b2dd0c5,0x3b8a7b5f,0x3be77e97,0x3c272830,0x3c3b7dec,0x3c31d255,0x3bfab34a,0x3b8f0b8a,0x3b26a30d,0x3b0b2ec8,0x3b57538b,0x3ad02c27,0x3ab0448d, -0x3a92f931,0x3b61e4a7,0x3b59b167,0x3a81ae7e,0x3abe6009,0xb9a33dd1,0xb9a8b22c,0x3b133183,0x3b41707d,0x3ba93044,0x3b09a233,0xbb2a3a5f,0xbb3f05fe,0xbae5a4c1,0x3a2cee81,0x3bc1ccdd,0x3b2e3876,0x3b85f87d,0x3c167aff,0x3c3cc6e2,0x3c7def08,0x3cb49b5f,0x3c7297d3,0x3c2d427a,0x3bd7430e, -0x3c4d7d9b,0x3c6cec82,0x3c6d4d26,0x3c2cada4,0x3be89927,0x3b4b560f,0x3a6f9ce7,0x3a72dc60,0x39ab6d3c,0x3a398493,0x397c0a29,0xb9917a2b,0x3a8a22d8,0x3a86d57e,0xb9ddb3c2,0xba3b16a5,0xb9f548f8,0x3a5811ed,0x3b1ebeca,0x3b684c22,0x3b51c65a,0xbb3d06e8,0xbb9224ba,0xba4851f0,0x3a3276f8, -0xbb8340e8,0xbb9ddb8b,0x3bb861e4,0x3c3181b1,0x3cb1b8b7,0x3c65772f,0x3c253a4f,0x3b47dc98,0x3c09ff7c,0x3c1e5ee9,0x3c175b80,0x3c1b7a88,0x3c03f8b8,0x3bae2369,0x3ba8d812,0x3b98fafc,0x3bb05b7f,0x3b5fc45d,0x3aa1080a,0xbaa2be93,0xbaadbffc,0xbab7fdb9,0xbb09e360,0xbb24dc1e,0xbb180e59, -0xb9f9a117,0xbafc0d9c,0xbacf7e5b,0xb9e03774,0xbab54786,0xba0db2d8,0x39cd60b5,0x3b253801,0x3b873da4,0xba774d3b,0xba920e99,0x3ba3a77a,0x3c1f8e41,0x3cc9ac02,0x3ccb3c36,0x3ca435e8,0x3c9e7ea4,0x3ca401c6,0x3ca8c1f7,0x3c649d53,0x3c336fce,0x3c102309,0x3b98e7ec,0x3ba64843,0x3b89c2c1, -0x3b2d8156,0x3ae487bb,0x3accc961,0x3aa927c1,0x3b0e9f31,0x3b46c8b9,0x3ad1f65e,0x3aa408e4,0xba4b2aa1,0xbaaa0ce6,0xbafb356a,0xbb06cf95,0xba8b1dcb,0x39c5b28a,0x3b0f0122,0x3ad59a1a,0x3ad822d5,0x3af8e9e9,0x3b24eaed,0x3a513de1,0x3b93bc6c,0x3b9f7d6e,0xbc23fb46,0x3ad56d41,0x3b23b1d2, -0x3b60f691,0x3ba9bf8a,0x3bc3de70,0x3bc0c2d6,0x3bf99a15,0x3b98f575,0x3b4c5560,0x3b43f9fd,0x3b81df81,0x3b8e3995,0x3b7860ab,0x3b8a4001,0x3b98cf3e,0x3b987333,0x3b8437f6,0x3b3d46a2,0x3a3d36a4,0x3a3f2e6c,0xb89299d2,0xbae084cd,0xbb1bb576,0xbb23e712,0xbb118d38,0xbad6b114,0xbb224e8e, -0xbb254a11,0xbb7a98bc,0xbb7b7aba,0xbb568fd5,0xbb9e8514,0xbb95805a,0xbbd15dd5,0xbb9e06ec,0xbb3f6352,0x39b3eadc,0x3b40e69d,0x3b1a00fe,0x3aeb6a8c,0x3b663d96,0x3bb338d5,0x3bfcb84c,0x3bc9df24,0x3bad01d3,0x3b98a498,0x3b8b7f7c,0x3b811860,0x3b5ffa7f,0x3b6d7c29,0x3b5979db,0x3b5fb5b5, -0x3b5c4c39,0x3b4c794c,0x3b53b96c,0x3a9d9fd5,0xba35cd10,0xbae6b342,0xbb1a529b,0xbb3cb4d6,0xbb35231a,0xbb8468be,0xbb9845de,0xbba9d56a,0xbba2b6af,0xbbaf83b9,0xbbb9e53e,0xbbbdb137,0xbbccf02d,0xbbcd2b6b,0xbba0c3a4,0xbaac1db7,0x3aae0e92,0x3a866354,0x3b0e75b1,0x3b6d83ed,0x3b860082, -0x3b8a90ea,0x3b9fd006,0x3b964d1c,0x3b95f1fc,0x3b942921,0x3b4b188e,0x3b0b0872,0x3a8d008c,0x3ab0fb7f,0x3ad03ed3,0x3af47f5d,0x3afa6f2d,0x3b200128,0x3b1cc6bd,0x3aa913d4,0xb9f62547,0xba7ccec9,0xbab63b8e,0xbadd0fbf,0xbad3b478,0xbb4e7448,0xbaaebf9c,0xbb8aa8cc,0xbb4dab1c,0xbb9b290f, -0xbb97e0a7,0xbb3d1095,0xbb4b06ac,0xbabb1789,0xb9c4291b,0xbb2cb265,0x3abf87da,0x3adc01b8,0x3ac38b3c,0x3a78874a,0x3abb95f4,0x3aee15b7,0x3b1d0090,0x3ab9efc9,0x3a45e555,0x3901ea41,0x37bddb8f,0x37a71a02,0xb9400073,0xb82ce031,0xb832e9cc,0xb92104b6,0xb8f557ea,0xba002e11,0x39e83089, -0xb9bab355,0x39a0f2f3,0x39617aa9,0x399fd936,0xb9aa483a,0xb96a647e,0xb97673b3,0x3a0b9ba8,0xb9ab16fb,0x39851788,0x3a8dc079,0xba517ee1,0x39d468a4,0xba68a9d9,0xbb2dbdfa,0x3ab9cb1c,0x3ae60b5d,0x3b03b805,0x3abfea21,0x3ae93178,0x3b030d14,0x3b0b4f13,0x3b022a8d,0x3b07cf02,0x3b05432c, -0x3b0775df,0x3b029f84,0x3aea0544,0x3ac3242a,0x3aa2a4c9,0x3aaa061b,0x3ab13b8e,0x3abf364f,0x3ace7ebd,0x3acbe7fd,0x3ae0c9a3,0x3ad53c87,0xb913845f,0xbb658660,0x3ad0f692,0xb90ee769,0xbb84f061,0xbb9462ff,0xbb86b2af,0xbb8110c8,0xbb8d4fd0,0xbb81b971,0xbb62f449,0xb946e8ee,0x3ac8ec6b, -0xbb485a22,0xba04dcaa,0x3b171267,0xbbaa9406,0xbb890d14,0xbbbc7094,0xbb7f7c77,0xbb7c4202,0xbb6b46b4,0xbb889968,0xbb912b7d,0xbb92abc1,0xbb8d94a3,0xbb8a857b,0xbb7fd683,0xbb793c4f,0xbb802a32,0xbb89409e,0xbb908dfc,0xbb98728a,0xbb960c30,0xbb941cac,0xbb8289ce,0xbb968e96,0xbaf605b6, -0x3a6e793a,0x3bc04d3a,0xbb550d38,0x3a33d3d4,0x3bd4ff67,0x3bcba289,0x3bc220b7,0x3bae8484,0x3bcd360b,0x3bc1782e,0x3ba24290,0x3ad83400,0xbb5f82c2,0x3ba1175b,0x3b1d09ac,0x3bebcae8,0xbb7a085f,0xbb91381c,0xbb9b2112,0xbb8e7f00,0xbbd5daf5,0xbbe9f28c,0xbbe8c5aa,0xbbd35b13,0xbbc6abbd, -0xbbac5d3d,0xbb91a476,0xbb9a971c,0xbbc6cb4c,0xbbdaa30d,0xbbed0523,0xbbdccbc7,0xbbc4a0e1,0xbbb6bc47,0xbbc1fdf4,0x3a288337,0xbafeaff2,0xba1da4fc,0xba6c86cd,0xbb5690a1,0x3adfb7e4,0xbab1789e,0x3a5298ec,0x3a77e70b,0x3a8b9699,0xbb2f7155,0x3a108a82,0x3a1789ed,0xb9904e19,0xb88a5378, -0x39654ff9,0x3a1d17a9,0xbbe3db50,0xbb8d033c,0xbb928d59,0xbb4f5426,0xbbdf8fd9,0xbc064578,0xbc077fc4,0xbbfc90bc,0xbbd234f0,0xbbab77e1,0xbb746b56,0xbb8f9bdc,0xbbd3ddb8,0xbc08d54e,0xbc158c85,0xbc17acd5,0xbbf03444,0xbbf50b6a,0xbb56b307,0x3a7530c9,0xbb0650d3,0xbb8a00bf,0xbab452f8, -0xba5bbc96,0x397cf51f,0x38448a65,0xbb78e410,0x3b139182,0xba36cb87,0x3aa856d0,0xba032e84,0xb9ec6290,0xb9fa8d05,0xba3d3f9b,0xbb7b8fc2,0x3b942d4e,0xb9a5ff70,0xbb9a1db8,0xbb8660e7,0xbb7059d4,0xbc0f4492,0xbc367c3b,0xbc396e09,0xbc24d451,0xbc00b1b0,0xbbcdf48f,0xbb6e8b82,0xbb827aca, -0xbc0860d8,0xbc32f403,0xbc4406ed,0xbc309fa6,0xbc16237a,0xbc0010db,0xbb8c6415,0xbb2b3f3e,0xbbad48ee,0xbb5908e9,0xbb707931,0xbaaa74cb,0x3af703f7,0x3a23f0ec,0x3ade02c8,0x3ba4ccf1,0x3b6ae7b5,0x3b74cfb3,0x39851b8d,0x3b30704d,0x3a94d73a,0xbb24a215,0x39b58f54,0xbb641fb2,0xbb9b0d4e, -0xbbacf1ba,0xbb3fd2e0,0xb97c1d80,0xbbf14746,0xbc2b3010,0xbc3d5901,0xbc2ca905,0xbc00a45c,0xbbaf5fbd,0xbaf75a18,0xbb458b29,0xbbfb04af,0xbc448f05,0xbc62d900,0xbc5fa66a,0xbc2f103b,0xbc13aa44,0xbb82f212,0x3b0d7751,0xbb54e4fb,0xbb560bda,0xbb350f45,0xbaf67991,0x3b8005c0,0x3b0b4649, -0x3b39e3d4,0x3baa817c,0x3bad8152,0x3b839239,0x3b351f6c,0x3b47a6d6,0x3a9c37a0,0xbb8e2070,0x3a491cc4,0x3c204196,0xba5a3980,0xbc257ecd,0xbc4e70fd,0xbc8b224e,0xbc7eea4d,0xbc53232d,0xbbd9c383,0xbbe27034,0xbbc0b777,0xbbcaad96,0xbc700fea,0xbc698f11,0xbbf2134e,0xbb8975b7,0xbaf5716e, -0xbb545f85,0xbb8901a0,0xbbc18120,0xbb917f39,0xba8612bd,0xbb4921b8,0xba884c18,0x3aa716c8,0x3b072a51,0xbb4022ee,0x3b26e20e,0x3b83c192,0x3abbdaf4,0x3a98326a,0xbb056f23,0xbbb38700,0xbc171a5e,0xbb633aea,0x3c220b32,0x3bfd2c1f,0xbc52eb24,0xbc4e9f3d,0xbc42b3ca,0xbb0a59d6,0x3c851b26, -0x3b5c2e04,0x3b04c3de,0x3b0c950f,0xbba1dc14,0xbbb7b0d1,0x399b4ba6,0x3b0f1f83,0x3ad32462,0xbb7244e1,0xbbcb4a03,0xbc0fb3c1,0xbc4ab837,0xbbf47cc6,0xbbe56594,0xbac7d934,0x3af0f797,0xba388554,0x3a59a881,0xb9d06d48,0x3a5ff8df,0x3b4031f9,0x3b1aaedc,0x3aa09063,0xba94b8ef,0xbaa62224, -0x3a54ab51,0x3bbd4a7e,0x3c0f6e89,0x3b1bacbc,0xbc5116b9,0xbc492162,0xb908c3d3,0x3c288d45,0xbb129bfa,0xbc0def27,0xbc3007e8,0xbc748ebc,0xbc5c7dd4,0x3a03d29a,0xbc04ad4a,0xbc072816,0xbb81f639,0xbbac3ebe,0xbbb27900,0xbbcd1bcb,0xbba4b901,0xbb97e066,0xbb137181,0xbb4e8a4b,0xbb640d89, -0xbb171105,0xba3f58fa,0x39044148,0x3a858382,0x3a7f8e5c,0x3ad3750c,0x3a922567,0x39cb8502,0xba4401ef,0xba8c0381,0x3ab07c7b,0x3af928ee,0x3b7650a7,0x3957c1b6,0xbb77762c,0xbb9570fb,0xbaf57d9b,0x3a7b4f1e,0x3b9bf119,0xbbab8ae8,0xbc32a5e7,0xbccfa3a1,0xbcb29f53,0xbca03164,0xba3c7841, -0xbba9b5bf,0xbb74d951,0xbb5df866,0xbba40e9d,0xbb91e5ff,0xbb9184d1,0xbb9d233b,0xbb73339c,0xbaee86b2,0xbb4caeb9,0xbb906692,0xbadd2556,0xbab707c8,0xba855865,0xbae05fb7,0x3a1fd8bb,0xb9cc5003,0xba00e1ad,0xbad42e20,0xba8d0b43,0x39a3e01b,0x3ac5f891,0x3b20b37a,0x3a4f3428,0xbb34aa0a, -0xbbadb3bd,0xba584ca1,0xbb416e0b,0xba9a1ff6,0xbc129401,0xbc347395,0xbc49b334,0xbc8ca3a7,0xbc6a325c,0xbc2183ff,0xbb656617,0x3ab9f669,0x3bb79ac8,0x3b85b5b1,0x3bcd9a7a,0x3b89fe9b,0x3b4c496b,0xbaca3357,0xbb9fa7f3,0xbbe0298b,0xbbce2c2a,0xbbb111ca,0xbb75919d,0xbb34a6df,0xbb6c6cb2, -0xbb2ee882,0xbb7c430f,0xbb3dd264,0xbab2d22c,0xbb055dac,0xbb01d87e,0xba8227a6,0xbade84cd,0xb9fb1be6,0xb89e5e4d,0x3af8521d,0x3aba256f,0x3a3e11fe,0xb9d7b08d,0x3bfab0a7,0x3b9e90bc,0xbb92bc8e,0x394e6039,0xbb66bf0e,0xbb608970,0xbb78708a,0xba154153,0xbae44eaf,0xbb448e4f,0xbbd861ea, -0xbbd96573,0xbbcf94d3,0xbbcc636b,0xbb14e418,0x396cbe28,0x3aa23703,0x3af282ba,0x3a4fccc0,0xba9772da,0x3a85b46e,0xb79401d2,0xbafcb826,0xbad65700,0xbb0d897a,0xbb2343d4,0xba4e4772,0x3a24f6e3,0x3ab2058d,0x3a7f6f24,0xb9c15fbd,0x3a384926,0x39eb63ab,0x3b53fecf,0x3b8970e1,0x3a8969ed, -0xba4f2a64,0xbc080d5b,0xbc173d9b,0xbbef1b31,0xbbed739b,0xbbbf63ed,0xbbb72372,0xbbbfcf60,0xbae75216,0x3a5816ff,0x3af1a44a,0x3a1b1f65,0xb9b70172,0xba752468,0xba820373,0xba8a04d5,0xba706c34,0xb9e9a53c,0xb8fd0a4e,0x3b026c76,0xb78c0573,0xbb2ba096,0xbb65282a,0xbb76351a,0xbb64975a, -0xbb2ef346,0xbb43e2cd,0xbb4de4ff,0xbb5fc964,0xbb80a688,0xbb8f6a13,0xbb5ee934,0xbb7b1ada,0xbbb19dd1,0xbbf01d37,0xbc034c7a,0xbb57bafa,0xbb1c487b,0xbbb669ca,0xbb906f4b,0xbb96c01e,0xbb8000c8,0xbb5f6721,0xbb71aab3,0xbaaecd8f,0xba1169ff,0x39bcd3ee,0xb9893638,0xb9485c5b,0xb91e8fc1, -0xb8a34ae0,0x3a30875b,0x3a2c425c,0x39d08ee8,0x3830cb1b,0x393deccd,0x39f715bf,0xb9df63e7,0xbb51c2e2,0xbb1045a3,0xbb3c4539,0xbb2f625b,0xbb641892,0xbb70515b,0xbb98a855,0xbba8cc2a,0xbbb36b46,0xbbbfc225,0xbbd506b3,0xbbde7a81,0xbbb90caa,0xbba1338b,0xba2064ae,0xbb644ae7,0xbb5552b5, -0xbb36cdc3,0xbb38ff4b,0xbb3eb12b,0xbb43e4fc,0xbb3fb68e,0xbb3951c6,0xbb1e8855,0xbace1cc2,0xba1a9c19,0x39de21ab,0x3a9cecf7,0x3a77939f,0x3a63772d,0x3a07e268,0x39be23e1,0xba2429f7,0x37ad6677,0xba5d5590,0xbaa1b5b3,0xbb30f727,0xbb196c23,0xbb275888,0xbb2a0967,0xbb33d677,0xbbac19a0, -0xbb8235e6,0xbbb5c972,0xbba40c2d,0xbbc51440,0xbbb740ce,0xbb386342,0xbb8a3094,0xbb66803d,0x3ae8e463,0xbad4d03c,0xbb07c49c,0xbb40551c,0xbb6cd1a6,0xbb8fa7f7,0xbba4c418,0xbbc139f6,0xbb9ac27f,0xbb730b00,0xbb4d633e,0xbb2c7b12,0xbb101545,0xbab27a28,0xbaaf33ad,0xba9425c8,0xba6b3235, -0xba24be68,0xb8781ee1,0xba0dc54e,0x394ed35d,0xba06ca39,0xb9d5fc5d,0xba8b1c33,0xba83e073,0xbaaec305,0xba92bc63,0xba9595f1,0x3805aee1,0xba3f242a,0xbac3506c,0x3a473b6d,0xba8e3c3b,0xba2b83fa,0x3abaf0b6,0xbb23c8bd,0xbaa32e5b,0xbb1dd383,0xbb0327e9,0xbb0990c8,0xbb0a2293,0xbb0f2e04, -0xbb10b68b,0xbb20c577,0xbb181eab,0xbb1a57e0,0xbb0e1b59,0xbaf7603f,0xbad624e5,0xbabb379f,0xbac75caf,0xbacd0a36,0xbad602e5,0xbae56ef3,0xbae61806,0xbb00f3be,0xbab0c91e,0x3a046a8f,0x3b3759fc,0xbadf0539,0x399d4d7c,0x3b4e1465,0x3b5ea7c1,0x3b37803c,0x3b17d8e2,0x3b2ef4bf,0x3b1fe8d0, -0x3ad0cf05,0xb9f5e400,0xbafa9061,0x3b2aa338,0x3a929e6d,0xbb336119,0x3b364d1e,0x3acacb51,0x3b97fccc,0x3b18fe5e,0x3b167d1d,0x3b0f6a38,0x3b1a35f9,0x3b20c0c7,0x3b26aba2,0x3b2b725e,0x3b34f916,0x3b41b3b0,0x3b4146a5,0x3b3d0364,0x3b33dc95,0x3b2736c4,0x3b24b5fe,0x3b204fd3,0x3b243c33, -0x3b0cb516,0x3b4c856e,0xba96205d,0xbb801786,0xbbe83e44,0x39afae8f,0xbb5be7a5,0xbbd77a78,0xbbddc7ee,0xbbd02075,0xbbaf54f5,0xbbe45a36,0xbbdc2811,0xbbc18311,0xbb7ed14b,0x3a8e9b9a,0xbbc5f071,0xbb9ec5f5,0xbc02d1eb,0x3b230fc1,0x3b49c3f3,0x3b130fe7,0x3ac18b1f,0x3afc5ace,0x3b2976c7, -0x3b605fd3,0x3b7b0c70,0x3b93f83e,0x3b9362ee,0x3b9cb7af,0x3b96189d,0x3b7a3a0f,0x3b49e844,0x3b399b19,0x3b315a1e,0x3b1e6dd3,0x3b2b58a9,0x3b7e3936,0xbb8675c4,0xbaf1e32e,0xbb636757,0xbb33ae7c,0x3a71bf23,0xbaa8a30d,0xba2286eb,0xbb18932c,0x3a01ec1a,0xba41e253,0x3b6e7062,0xba897160, -0xba9cc6b2,0xba23651f,0xbb211397,0xba110551,0xbb1e78a1,0x3bafa146,0x3b366b6d,0x3b00fbf5,0x3a94165e,0x3ae293d3,0x3aed25ff,0x3b523941,0x3b81bf6d,0x3ba72c1c,0x3bbe1576,0x3bd324a1,0x3bc764e2,0x3b8c4dde,0x3b65bbdf,0x3b267db1,0x3b370e7e,0x3ae6fb41,0x3b50bd76,0x39bec662,0xbbb9e59b, -0xbb2db816,0xbb273857,0xbb24382c,0xba84dd06,0x3a95a5a0,0xb82d87aa,0x3b8b9a03,0x3ab77aac,0x3b3c36e2,0x379af4bd,0x3b01a75f,0x3ae08e04,0x3a29e2dc,0xbb3b99c5,0x3b5b202b,0xbb34ab1f,0x3a6eb840,0x3b9d2546,0x3a63b515,0xb88f20fc,0xb8dbc709,0x3ac93334,0x3b7671ab,0x3bbf394d,0x3bfb94ac, -0x3bf42913,0x3c10d961,0x3c0397cb,0x3baccdae,0x3b76b21e,0x3b1409f8,0x3b146412,0x3ac6653f,0x3b21bde6,0x3acdaed7,0xbb112eab,0xb88afb94,0xbb845bb2,0x39c5cc23,0xbaceb20c,0x3b921af4,0xb92a030e,0x3adc99c9,0x3bab87a5,0x3bb45c2d,0x3b6b3a08,0x3b1c2659,0x3a413e46,0x3a99e77a,0xba3043bb, -0x3b0c4f6e,0x3b59fe31,0x3b0ce61e,0x3b95a15b,0x3a902f39,0x3a9d35fa,0x3a205356,0x39816526,0x3b360c81,0x3b9c03f5,0x3bedccd1,0x3c147ffa,0x3c2b9123,0x3c270571,0x3bbedb6c,0x3b80191f,0x3b17ab7b,0x3b1ce4e7,0x3a9247d5,0x3adbde2d,0x3a97cce6,0xbbea0188,0xbac09beb,0xbb77e464,0xba92b9bc, -0x39855b37,0x3b6d837f,0x3b61bba9,0x3b4db8ce,0x3bd33f21,0x3baa2ff7,0x3ba4d84d,0x3b4ae616,0x3b90e008,0x3b44dd86,0xbae5e8c3,0xb99d0a91,0x3a257cb2,0x391a2a56,0x3bd35d83,0x3ad85dcc,0xbb1ceb79,0xba4b50f2,0x3b8c74fa,0x3c533135,0x3c4cfc7d,0x3c3ae98a,0x3c3fcd27,0x3abe5351,0xbb02c0c6, -0xba6b4fb4,0x3b0f9fcb,0x3b726a41,0x3bf182fa,0x3bce576a,0x3bc40a57,0x3b43a966,0xbad72842,0x3af662e3,0xba976649,0x3b6dcb8d,0x3aaf65b4,0xbb246327,0x3b5884b9,0x3b967668,0x3a280abd,0x3ac8153a,0xbaf20da4,0xbbb7149c,0xbbe9859c,0xbb3365c9,0x3b6cab86,0x3c0b434a,0xbc0ea8b6,0xba9d71b0, -0x395a7e58,0x3b49c3c3,0x3c875e3d,0x3bfa2590,0x3b9e7965,0x3b294421,0xbad2dead,0xba8263c1,0x3b510090,0x3b5c0ec7,0x3b3791fa,0xbb06bd29,0x3945893d,0x3ac4a827,0x3ba961b7,0x3b234830,0x3b585c3b,0xbac48a11,0xbb8152f1,0xba7ff024,0x3a93f0c2,0x3a9b2728,0x3b2f6d4f,0x3b5aa136,0x3b1d6227, -0x3a84a7ed,0xbadb1ef1,0xba7626f3,0x3ae08954,0x3bd3b5f8,0x3bddc636,0x3b33f1f2,0xbc2820a8,0xbc226056,0xb94b564d,0x3c64fc76,0xb9ed9dbb,0xbb6dc7c4,0x39dd28ce,0xbb1f4923,0x3aef97e1,0x3ca089a2,0x3c0f3fd9,0x3baf2265,0x3bb4fcfc,0x3c0301cd,0x3c0ca909,0x3c04daf5,0x3c0b1d77,0x3bb71712, -0x3b90e51e,0x3b013b4f,0x3b3abfab,0x3b199492,0x38e207d2,0x3a4f11cf,0xb82a5b98,0x3b3e1d52,0x3b09a220,0x3a9a9ce4,0x39ad0407,0xba2b95e0,0xba151937,0x3ae4205a,0x3aeead9a,0x3b4791b7,0x3ad2bff6,0xbb63106b,0xbb68fa76,0xbbacc935,0xbb3f80b2,0x3b911f43,0xba58fb15,0xbaba4af9,0xbab29a5a, -0xba4bf734,0x3b88d18a,0x3cb0f6e4,0x3c47f5d7,0x3c1bc7c0,0x3be38ca3,0x3c20c638,0x3c2645d8,0x3c33ccc3,0x3c047fd6,0x3bb71344,0x3b4c58ef,0x3a065f79,0x3aed7b62,0x39d33556,0xba379477,0x38e910f0,0xb980bf4d,0x38a5d59b,0x3a428004,0xba24acdc,0xba314c0f,0xba4327da,0x39889d72,0x3b0786e0, -0x3b0c71ad,0x39b68367,0xbb562477,0xbb7727bd,0xbaba52ce,0xbaffc538,0xbaf43c02,0xbbba5620,0x3a9552da,0x3b39ba9e,0x3c3e0c43,0x3be9b051,0x3bc96d63,0x3b5dec68,0x3b68868d,0x3b9875c6,0x3bd63647,0x3bdf036d,0x3bd42a25,0x3b875103,0x3b5c7f0e,0x3adebd1c,0x3b13fe58,0x3aa0ee22,0x396d0476, -0xbb0794d5,0xbb23019e,0xbb18fd44,0xbb3bf4db,0xbb2a8307,0xbb0bc318,0xba4a6adb,0xbaac9582,0xba8f5e9e,0xba671b6e,0xbab5e76b,0xb994296b,0x3a82efb1,0x3b0e4a41,0x3b592661,0xba0e07b7,0x3a5f0df2,0xbb286975,0x394413bc,0x3c85220b,0x3c8a58c2,0x3c6851ba,0x3c5a2a34,0x3c698c90,0x3c7fad7d, -0x3c3a3bfe,0x3c0f146f,0x3bc8538c,0x3af177d1,0x3b0c3231,0x3a4bd728,0x3a7555c0,0x3aa340b2,0x3b106048,0x3a5b09d0,0x3ae898d4,0x3b4184f4,0xba44aa2e,0xba1615d2,0xbaaf5802,0xbb0d097d,0xbb04cc24,0xbb1be7ec,0xb980a5bc,0x3addb679,0x3b03ae38,0x3aa0782f,0x3a589405,0x37e0e4bb,0x3b17291d, -0x39cf0d52,0x3b09b2a2,0x3b532c97,0xbc2afd45,0xbb1dd5db,0x3a005829,0x3ad57a04,0x3b905971,0x3bb95ef4,0x3bc3fb0a,0x3bd5d3d7,0x3b8cdcd2,0x3b52faa2,0x3b5bc997,0x3b5718c4,0x3b486228,0x3b1d2118,0x3b42bf63,0x3b642fdc,0x3b721961,0x3b7a1c09,0x3b351d36,0x398da8f0,0xb9f8a781,0xba64e7de, -0xbb70dedf,0xbb130922,0xbb0ebabe,0xbb345149,0xba75eb93,0xbb0e9a34,0xbac46aea,0xbb395385,0xbb156c5f,0xbad6fe77,0xbb4fea26,0xbb3089aa,0xbbcb6783,0xbbb1c8c8,0xbbbd0183,0xbaf03389,0x3b0166dd,0x3aa35ddd,0x3a54dd8f,0x3b0cee8e,0x3b864ec0,0x3bd5c968,0x3bba14a2,0x3ba09ce9,0x3b88bc6d, -0x3b6a1260,0x3b5d7bfc,0x3b49323f,0x3b577908,0x3b5421e6,0x3b50ea6b,0x3b4280f7,0x3b2cdfc8,0x3b0526a2,0xba42b389,0xbafe4e05,0xbb1de07d,0xbb36472d,0xbb0d9b07,0xbb06bd12,0xbb72c19e,0xbb80e390,0xbb781496,0xbb82b97d,0xbb95eab8,0xbbb6f89e,0xbbaaf234,0xbbd1e847,0xbc06cfde,0xbbd622fe, -0xbb633e0c,0x39b13419,0x3a1880b4,0x3a7987c3,0x3b1d72dc,0x3b365b5c,0x3b3ed02c,0x3b55630e,0x3b437583,0x3b5bb0e3,0x3b73c94b,0x3b568214,0x3b3db76a,0x3b0db2d4,0x3b14fabc,0x3b163fa4,0x3b23b837,0x3b01f6d8,0x3b2ddb88,0x3abc2e9b,0x39860055,0xba1e93fb,0xba857a5a,0xbab11446,0xbae2bcf9, -0xbae1c299,0xbb252a5d,0xba57c856,0xbbaa41e7,0xbb361cff,0xbbb0e3ae,0xbb94ef30,0xbb907fe9,0xbba801d1,0xbb7837e7,0xbaeb2409,0xbb2987e5,0x3add6e91,0x3ac4dc7b,0x3ad5b82e,0x3aa0e5a7,0x3ad9f471,0x3b0b054e,0x3b351ae4,0x3b1c6a7a,0x3aec777c,0x3a9bf686,0x3a730164,0x3a3a3ec5,0x39f21f63, -0x3a383ce3,0x3a56e1eb,0x3a8782c6,0x3aa00933,0x3aa8617d,0x3b019023,0xb93acf2b,0x399edc82,0xb9b782ed,0xb965a954,0xba807a1a,0xba944c62,0xbac78993,0xba9be7cd,0xbab8af4f,0xba8b0b7a,0x3a773a05,0xbb071be2,0xba0d2f4b,0xb9fda0b9,0xbb1e6f00,0x3a53fb8c,0xb92c53f1,0x3af38a95,0x3aafa7ac, -0x3acdd9a5,0x3ae55c4d,0x3af4689d,0x3ae15d69,0x3adea836,0x3ad658da,0x3ae779c8,0x3af4d66a,0x3af1aae0,0x3ae6072e,0x3ad4e0ca,0x3ad6ed45,0x3ad7f589,0x3adaf1f0,0x3adbbd4e,0x3ad137aa,0x3b09075e,0x398efd10,0xbaf81b95,0xbb67a3eb,0x388f8b46,0xbb094d14,0xbb843d4d,0xbb937afe,0xbb860824, -0xbb83dfb3,0xbb9bff9b,0xbb961cbb,0xbb844f84,0xbb0aae53,0xb8f1c946,0xbb63cd4e,0xbb24684e,0x3af3d9d2,0xbb011488,0x39468f59,0xbb801c19,0xbaf402f9,0xbae06e6b,0xbacfdc32,0xbae8bc38,0xbafe3691,0xbb0a63bc,0xbafed7f3,0xbaf5d0c6,0xbae44bcc,0xbad8d5dd,0xbae4b38a,0xbaf82b84,0xbb1135b7, -0xbb1c3991,0xbb18f8d4,0xbb183137,0xbb01db39,0xbb2de0a7,0x3acf1f6d,0x3b5ddb77,0x3b62f927,0x3a24b67d,0x3b6bda1f,0x3b924682,0x3b91f58f,0x3b899f92,0x3b825e65,0x3ba6b9ba,0x3ba348a1,0x3b990d17,0x3b912445,0x3a09f58c,0x3b6d05bd,0x3b9d848e,0x3bfe0d3a,0xba4014f0,0xbb0b2eed,0xbb00c89a, -0xbb007af0,0xbb2de206,0xbb35af41,0xbb51ac18,0xbb1fdea7,0xbb0c4f82,0xbafbbb8e,0xbaa6bc6e,0xbaae7181,0xbaf84d57,0xbb3cb6ff,0xbb69186e,0xbb64436d,0xbb4bb187,0xbb504a52,0xbb757635,0x3b1be082,0x37f1426b,0x389744e7,0x3b088cff,0xb7d030e9,0x3b03263b,0x3a68dcc9,0x3b3a1f28,0x3b332073, -0x3b36dce6,0xbad33506,0x3b030559,0x3b107800,0x3af813e6,0x3b101057,0x3af8ec48,0x3b9ee76f,0xbb6e569a,0xbb070034,0xbaa1ce80,0xba716d03,0xbaf762e9,0xbb1e4cea,0xbb6202ad,0xbb1e3ecf,0xbadfd098,0xbaae648f,0xb92a8a6e,0xb9ef830d,0xbad65737,0xbb7f92ea,0xbb97cf9e,0xbba420ea,0xbb7ac059, -0xbba41235,0xba979b74,0x3b49dd3f,0xba0a2782,0xbad25492,0x3a933de9,0x3a3d9902,0x3afe6ca4,0x3a8479cc,0xbadff084,0x3b9fdcf0,0x39b44e54,0x3b49dfe8,0x3ab6a06b,0x3ab970ae,0x3ad35804,0x3b097084,0xb8d282b9,0x3be88bca,0x3ab0699c,0xbb204cd5,0xba87fe58,0xbae2001f,0xbb3a09dd,0xbb56f9c0, -0xbba2dfa5,0xbb2df297,0xbab388bb,0xbac2e535,0x3a84b6e8,0x3a7f8a2f,0xb9f1f468,0xbb87b4c1,0xbbbf0d21,0xbbbd0ff4,0xbbb6335c,0xbbbabfc5,0xbb2f349f,0xba8cb590,0xbb88f321,0xbb3b4449,0xbb115d52,0x39b328a0,0x3ad2dd56,0x3aff7e17,0x3adc0df9,0x3bb2c238,0x3b37586a,0x3b77e467,0x3ab84492, -0x3b6f7136,0x3b06695d,0x39268594,0x3aea1062,0x3a9f88bf,0xba6b6685,0xbb5b22d9,0x3a5ed5a7,0x3a9fb946,0xb98e6bba,0xbadff905,0xbb8d2323,0xbb18cc18,0xba927883,0xba52ded5,0x3b1273cd,0x3b0eefd9,0xba1fa13e,0xbba8b61d,0xbbe8974a,0xbbf2f31b,0xbbc6f0d5,0xbbd999a0,0xbb5c99b4,0x3b4c3cd4, -0xbb4f0843,0xbb2399b9,0xbacecc2c,0xbaaad737,0x3b5ca388,0x3aa542c1,0x3b17f7a1,0x3bb125fa,0x3bb3b42c,0x3b7b6347,0x3b62cdb0,0x3b4c93e6,0x3acc367c,0xbafa8eae,0x3b82a831,0x3bf7ff7a,0x3b11ec2b,0xbc02137c,0xbc0ac7bb,0xbc4daaeb,0xbc336eac,0xbbe4f26f,0x3b012e4f,0xbaed6af5,0xbb0cb1b6, -0xba158f74,0xbc435dd6,0xbc6007b7,0xbc14e170,0xbb86c4e9,0xbaa4158c,0xbb7ade44,0xbb0b94d1,0xbb19817f,0xba7383d1,0x3a7ca6f2,0xbb1e5259,0x3a10cfeb,0x3a9d0d49,0x3b300aef,0xbb49d4c3,0x3b8e268d,0x3b9ee2b2,0xba0bc64b,0x3a2711fb,0xbb1e55d5,0xbba12d5e,0xbbcb886b,0x3a07a178,0x3c286948, -0x3bf12de5,0xbbb4d6b7,0xbbf0bf15,0xbc11e3c8,0x3a090830,0x3c7c2b7f,0x3c0ba069,0x3bf129cc,0x3b8591ca,0xbac823af,0xbb419dd2,0xb9b27902,0x3b9a7af0,0x3b9e6f0a,0xbb228b2a,0xbb67c920,0xbbabff6c,0xbba99f51,0xbb20e1c7,0xbb8cc268,0xba83ee68,0x3a1c600d,0xba63cdc6,0x3aa7d14d,0x39a8b9e4, -0x3aacad86,0x3b0dba1e,0x3ac54337,0x3992bd70,0xbb124717,0xba68d2dd,0x3aae3f0d,0x3bbf6859,0x3bd7d584,0x39e8500f,0xbc3b0567,0xbbf1e595,0x3986d93d,0x3c192258,0xbbb29943,0xbbebad12,0xbba7a738,0xbbf3c44a,0xbbad4d66,0x3c31028c,0xbb37975f,0xbbb8da34,0xbaf8a769,0xbb104183,0xbad4bff1, -0xbb1b5af4,0xbac683bb,0xbab462e8,0x3a64ceb5,0xba2ae445,0xbaed3b15,0xb9d93ce5,0x3a637126,0x39e149b7,0x3b156fd0,0x3ab4351b,0x3ad77f42,0x3a53232d,0x38b9c7d6,0xbaf96732,0xba902946,0x3a795cab,0x3aa12b80,0x3ae2ff5e,0x3a52a06f,0xbb4e4e40,0xbb4981db,0xbb5fad73,0xba9c2250,0x3b60dd89, -0xbb8d0b21,0xbbb70467,0xbc1dca34,0xbc3d7125,0xbc19e4f5,0x3c1c6158,0x39805e23,0x3a2bac7e,0x3b5a2116,0x3949d5af,0x3a65ff70,0x3a9c4e79,0x3953d785,0xb99552d7,0xb92ea4d8,0xbabd546b,0xbb61e35a,0xb981259c,0x3a2fba8b,0xb9ef15fd,0xba7d8e2c,0x3a94ad1c,0xb9c8f179,0xb98d9316,0xbac3d462, -0xba78db89,0x3a803a50,0x3a100164,0x3ab17cac,0xbac1eb69,0xbaf03acf,0xbb83a953,0x39b10b56,0xbba2f30b,0x3a52a0cf,0xbbaf837d,0xbabebcc4,0xba043df4,0xbac927b0,0x39ec0f28,0x3af0cbbd,0xba5516fe,0x3b7d0a74,0x3be98171,0x3c0b7eb1,0x3c17d95a,0x3be682d7,0x3b9ce2fa,0x3abadda8,0xbb01a604, -0xbb8b17b7,0xbb89ece0,0xbb960b13,0xbb31d2cc,0xbb44bcd3,0xbb73d7fe,0xbb0e986f,0xbb32a929,0xbb079328,0xba992c65,0xba9f3327,0xbab19b04,0xba9b8371,0xbaa17981,0x393d9a95,0x3a406d77,0x3adae2bf,0x3b0ec0c8,0x3aed8078,0x3b1dbb1f,0x3c04c793,0x3bbbb273,0x3b6207a9,0x3c1c940a,0x3bab411c, -0x3bd2dcbc,0x3bb8b5a2,0x3bdf5497,0x3baadc1f,0x3b98b699,0x3b831f25,0x3ab77417,0xba224192,0xba8a71b9,0xb87c2b38,0x3a9082a3,0x3abeebac,0x3aebe53a,0x3a88ac87,0x39d2c34a,0x3b2e35e1,0x3a6a5a20,0xbb380cb8,0xbb10941b,0xbb0fcfe1,0xbaf51033,0x3a68b6ae,0x3af739ef,0x3b0017b5,0x3acedc88, -0x39e006e4,0x3aa92a1e,0x3adb6ff1,0x3b5bfdd0,0x3b9649da,0x38329e09,0x38f90627,0xbb48bab9,0xbb184b09,0xba1da3d6,0xba35134d,0xba313672,0xbab34ca9,0xbadc927e,0x37bca748,0x3a9973a1,0x3af2e6f7,0x3a9361b8,0x3ac7fcbe,0x3ad2e4f9,0x3aed0fcc,0x3ab0166a,0x38e4053c,0x39b2149e,0xb96a27f2, -0x3a7882f6,0xba9bd838,0xbb5befa0,0xbb023eba,0xbb2cc4dc,0xbb1b0c5b,0xbb0b2de6,0xbb4870ff,0xbb20184b,0xbaf59a4e,0xbae1474e,0xbaceb9f7,0xba4b84af,0xb9bac90c,0xbad36b05,0xbb5b7908,0xbb396835,0xbac04169,0xba9a5b19,0xbb5f0d69,0xbb17c2af,0xbb61a29c,0xbb0f7020,0xbaa81f47,0xb9891f35, -0x3a64c4c4,0x3a86f225,0x3acbe167,0x3a64b462,0x3a4d7c9b,0x3a58cc86,0x3a8b78d9,0x3ab8e204,0x3a72515d,0x3a37cb53,0xb8c17ec3,0xb90d51bb,0x3a5a55a1,0xb9dc44fa,0xbb1e18cf,0xbac945c3,0xbb145a90,0xbb21d8e2,0xbb1a2da9,0xbb366afd,0xbb604207,0xbb6b8091,0xbb821bc5,0xbb8bc7d5,0xbb983407, -0xbba5dd16,0xbb926de0,0xbb7af5b6,0x3834a2ea,0xbb028134,0xbb26b5ff,0xbac49a94,0xbaa5e896,0xba82a2dc,0xba8ef172,0xba6b59c5,0xba07f600,0x394a5c44,0x3a8dea1b,0x3a7f5fe7,0x3aa78f0f,0x3abee410,0x3a888680,0x3a7e88a1,0x3a27255a,0x3a21de33,0xba303703,0x3a30c2ec,0x39faafe8,0xba02a45b, -0xbaba0687,0xbabd6d7a,0xbac190fd,0xba9ba075,0xbb024539,0xbb76a318,0xbaf63b71,0xbb929ea6,0xbb7a2c09,0xbbac746a,0xbb92d77b,0xbb3cefe9,0xbb608667,0xbb324d3d,0x3aebe7d8,0xba49c077,0xba081958,0xba861fbf,0xbac391e1,0xbae7d692,0xbaf6714a,0xbb0d0be5,0xbb0c9ca9,0xbb1087c5,0xbb179d5a, -0xbb040b66,0xbadc874c,0xba891b87,0xba510825,0xba1e9727,0xba016aa9,0xb92e8437,0x386183c0,0x37c6a22f,0x3ad1a5d3,0x3a6b9a4a,0x3aa2cdde,0x3a28804d,0x39ecfe4a,0xb7faa3a1,0x3992df32,0x3a17dd37,0x3a5c1255,0x39d50efe,0xba8003a7,0x3a9b77bc,0x39665fd9,0x39e9dd85,0x3ade9be0,0xb9feda0f, -0x3a3bece5,0xbad2875d,0xbaad317a,0xbaaec41c,0xbaa52c50,0xbaab2e9d,0xbab6d092,0xbac60028,0xbaaff5e6,0xba9c4f98,0xba86469c,0xba728f86,0xba70db6a,0xba7aebff,0xba8c7402,0xba906a3c,0xba94d058,0xba9c6ecf,0xba98d97b,0xbad01221,0x39f1b030,0x3b0b3381,0x3b164bd6,0x39995ea1,0x3b0820b9, -0x3b21492b,0x3b2a3cb7,0x3b08cadf,0x3ade666e,0x3b0a51ac,0x3b08071c,0x3aab087f,0x3a5cae21,0xb9d0acc7,0x3aec9514,0x3b0ec958,0xbab7192b,0xba69d26d,0xbb2015f9,0x3ab7202e,0x33ae6b6c,0xb91865c6,0xb9407940,0xba0949cb,0xba1c4c4c,0xba02dd00,0xb9a2de12,0xb917dd6b,0x38e8e0df,0x393e1a14, -0x3930baf6,0x38fd1370,0xb91c675a,0xb9ae61bf,0xb9ef7351,0xb9e83e14,0xba08bd91,0x38aba4ee,0xbb6dbee0,0xbb8fda3c,0xbb17f539,0xbb3892c6,0xbb8900e5,0xbb0f3b63,0xbb1ed920,0xbb0fda82,0xbafb6ba4,0xbb462ffa,0xbb477365,0xbb3d7de7,0xbb906dd8,0xbb20fed7,0xbb0b4384,0xbb948779,0xbb9fc4e2, -0xba841d20,0x39b17222,0xba1d1d26,0xba8a3032,0xbb2680b9,0xbb28886a,0xbad7dd3d,0xba573db4,0xb8f9d2ac,0x39057a58,0x3a07b165,0x39ee520b,0xb83bd844,0xba554f7d,0xbaa60d0e,0xbab30d16,0xbac0e521,0xba8844d1,0xb7ae64e7,0xbb88f430,0xbb44c1a6,0xbb41c33b,0xbb7c6a1d,0xbaee6009,0xba904e8a, -0xbb0503ec,0xbb35ae20,0xba6319ef,0xbaf4626d,0x3a8b1919,0xba9acab0,0xbaee8a57,0xbae0e78f,0xbb28a5b5,0xbab1d833,0xbb8431ed,0x3a714356,0x3a913587,0xb9d29d60,0xba2fa2b1,0xbb5a29ca,0xbb903e31,0xbb34cf11,0xbadcd591,0xb96dd1d7,0x3a2333ff,0x3ad68104,0x3ad100c5,0x3a285d2a,0xba6086b7, -0xbb0d11d1,0xbb2884b3,0xbb40f586,0xbacede53,0xbb37704f,0xbbc9c08e,0xbb6fd4c4,0xbb962a82,0xbb4e4b8c,0xbaa28c93,0xba999997,0xb9daf1ae,0x3a779822,0xba899824,0x3a292dd9,0xbaadc142,0x3a66e264,0xb8e2ed88,0xba610ac1,0xbb2d4c32,0xb90b9a15,0xbb4d175d,0xba5f83d5,0x3b1bdcdb,0xba5748b2, -0xbabfd7e9,0xbbc9d8c4,0xbbe97d0a,0xbb9721e4,0xbb002005,0x39d367f8,0x3a44619a,0x3b1420ad,0x3b10661a,0x39f0f0ab,0xbb0440cc,0xbb6c07d4,0xbb78e6f9,0xbb83b1cd,0xbb23df05,0xbb0cba70,0xbb836f00,0xbaebd912,0xbb8fbe7d,0xb8cbadb5,0xbac725f2,0x3b3aabaa,0xba33e269,0x3ad6c7b7,0x3b9e4d45, -0x3b8c1e20,0x3b28cefd,0x3b0c5a7c,0x3960f094,0x3a86bb16,0xba8a55ef,0x3a716f4a,0x38a49ae6,0xba1c8163,0x3b820aec,0x399fe0c0,0x3aa57192,0xbbbe5592,0xbc00b4c3,0xbbb6fc6b,0xbb589170,0xb95fd3c2,0x3b0498cd,0x3b87bbbd,0x3b9e0e0b,0x3b12f109,0xbade2146,0xbb8978ba,0xbbaca601,0xbbb982f7, -0xbb8b712f,0xbb2ddf27,0xbbecdd78,0xbb3265e6,0xbb9bc042,0xba9e2236,0x3998612e,0x3b4dc392,0x3b4996ca,0x3b297a44,0x3bc965c0,0x3ba7efe3,0x3b9a2a72,0x3b836aaf,0x3b61e764,0x3aef5d45,0xba93e080,0xba4e90ec,0xbb8d595d,0xbbef8b25,0xbb113944,0xbbc807e8,0xbc176109,0xbc15ec90,0xbbcd0fb6, -0x3b289f41,0x3b87ba9b,0x3bbbac99,0x3c0cda17,0xbaae0f4d,0xbb9296fe,0xbb239ab4,0x39b2be03,0x3aff2fa6,0x3bb5df97,0x3b78619b,0x3b01e762,0xbab5e186,0xbb490089,0x39d3e1aa,0xb9ff776e,0x3b1df006,0x3a5f4efb,0xbb313daf,0x3b983826,0x3bb5e7a7,0xba084866,0xb889a104,0xbb657823,0xbbcdec5b, -0xbba73bc5,0xbaba8a04,0x3b813097,0x3a968cfe,0xbbeaf4e6,0xba5ae902,0x3b3b89ca,0x3b5f3a5f,0x3c65064f,0x3bc2440e,0x3b92eb99,0x3ace1486,0xbb4173f3,0xbb41dde6,0x39a8455f,0x3b7f0488,0x3b88fc17,0xbb580064,0xbb44146c,0xbb84d290,0xbb81d8d7,0xbb83bb8e,0xbb12230c,0xbb8a6693,0xbb7c8a06, -0xbb27c9fa,0x39a0c916,0x398d5848,0x3b05b604,0x3b25b3e1,0x3ab21a13,0xb9d35c25,0xbb3d0e04,0xb9f1b623,0x3b23b49c,0x3bae14ea,0x3b7e8856,0xba8e2d9b,0xbc3f43e6,0xbc1a63a3,0xbb28f18a,0x3c003689,0xbbae4a36,0xbc011a60,0xbbde8928,0xbc5be3cf,0xbc3577d4,0x3bc4b257,0x3b1f3307,0x3b4f8784, -0x3b431727,0x3b8190a7,0x3b075087,0xb8fda8a9,0x3ace22c3,0x3a054497,0x3b15de07,0x393701c2,0x3ab1f21d,0xb9c6f08c,0xbaa6ac50,0xb806f9f0,0xb9bacd4a,0x3ab27103,0x3a1b3e95,0x3aa1394a,0xba29460b,0xba8bb622,0xba28fbb3,0x3a6be5ad,0x3a0625dd,0x3a1eed93,0x3a793bf1,0xbb5d95fa,0xbb81e3ff, -0xbbc9862e,0xbb8c9f7c,0x3a500128,0xbbd46092,0xbc16adda,0xbc6c4dde,0xbc85da84,0xbc4d44db,0x3c12790e,0x3b7e59cf,0x3b9b1eab,0x3b76bbe9,0x3b0fb28c,0x3a8e639c,0x3b143efa,0x3aec8ac6,0x3ace93f5,0x3ab00b3c,0xba025867,0x39e803c1,0xb9e14f66,0xbafbd27c,0xba0e96fd,0xba338d52,0xba219d44, -0x366658b8,0xba3ed187,0xba4d53cb,0xba6f3790,0x38b95b76,0x3a74c823,0x399f7598,0xbb1cb620,0xbb2ef22a,0xbb26a7b5,0xba698baf,0xbb74db4c,0x396e1426,0xbb998c29,0xbb8ce961,0xbbd880dc,0xbba053d2,0xbb7a42c3,0xba938fd5,0x3aa95bde,0xba674d8b,0x3a733ca1,0x3b834f42,0x3b8c60c2,0x3b8780b8, -0x3b3a22cd,0x3901ce5a,0xbb23eba4,0xbb5dfdad,0xbb4c1813,0xbb301246,0xbb4ad243,0xbb5fe81b,0xbb623d4d,0xbb5fe55b,0xbb3120fd,0xbae9a8a9,0xba9a6612,0xba250fce,0xba282e63,0xbabc55ef,0xbaa2807c,0xb83ace81,0x3aa87f81,0x3aaf1f3a,0x3ad90e6f,0x3aabbc0f,0x3ae26fcb,0xbbb9a70e,0xbbee560b, -0xbad6778c,0x3a2b0c0d,0x3a718d14,0x3ac2ed40,0x3b43246d,0x3bc5380f,0x3ba44f1a,0x3b6b43ac,0x3a41309f,0xbac34800,0xbb02e321,0xbb431a6c,0xba35d799,0x3a35bd6f,0x3b105661,0x3a83682a,0x3a96ffd0,0x3aa28a60,0xbaf57cac,0xbb032137,0xbb0e44fc,0xbb3d01b5,0xbb0fe568,0xbb169d54,0x39a1f0fc, -0x3b0a0b71,0x3ab47c08,0x3a7a5154,0x39052fae,0xba450b4e,0x3aedf636,0x3aaf20fc,0x38d50a92,0x398ae030,0xbbb53cc6,0xbbcabb07,0xbb2661be,0xba926349,0x3aae7a9b,0x3b00ef48,0x3b11eb30,0x3aa09ee3,0x3ae268c0,0x3b14807a,0x3b33a848,0x3ac3bca3,0x3a33cbbe,0x3990f745,0x39f49760,0x3a43e426, -0x3a62b9e7,0x3ad5c950,0x3a8ad70e,0xb92bb163,0xbae4b1a4,0xbb1a1dfe,0xbb91e774,0xbb2852b5,0xbb17d8a9,0xbb465bf0,0xba9c3ddb,0xbb05de58,0xba77ff01,0xbac9e929,0xba5011b5,0xb88c0b7c,0xba88de76,0xba87bbcb,0xbb8d0916,0xbb9df35b,0xbbcde0dc,0xbb7856a6,0xbacf6097,0xbabe2ac8,0xbabf103b, -0xba65cf9c,0x396effce,0x3ac97427,0x3b11f6cf,0x3b04e413,0x3aec3845,0x3a94a8b3,0x3a8c378d,0x3a94f5bc,0x3aa7f4c8,0x3ae8cce2,0x3afbe690,0x3ab6fc4c,0x3a652195,0xb92ba9c6,0xbaf99117,0xbb1351d5,0xbb33c7d5,0xbb32a5c2,0xbb0288cd,0xbb0a4e2c,0xbb5b701f,0xbb48c8f6,0xbb2a9836,0xbb4bb34a, -0xbb72e569,0xbba22aea,0xbb96a0c1,0xbbc0d46a,0xbc01adf1,0xbbcfd9a9,0xbb88e73d,0xbafd0d9a,0xbab05a87,0xbacaf6eb,0xba5ee80f,0xba253fc6,0xba0ea13f,0xba09691d,0xb9e5a54f,0x39a19bae,0x3a95c8ad,0x3ae91aba,0x3b11e3fd,0x3b0cf49d,0x3b0a8cc4,0x3b01eafa,0x3b05666d,0x3a978e06,0x3aa11f2a, -0xb9102d7b,0xba84bf18,0xba6ddca8,0xbabeab32,0xbad5ada9,0xbb0dbfd7,0xbb22957f,0xbb177fcf,0xbb157671,0xbba7e691,0xbb66e12f,0xbbb35358,0xbb9d5e62,0xbbbf191a,0xbbc28cd7,0xbbc359d9,0xbb7b7992,0xba769378,0x3973df04,0xb974ff99,0x3821db48,0xb88213b2,0xb830d08c,0x39575231,0x39d6fbc1, -0x3a6d2fc5,0x3a4dca1f,0x3a1c8e86,0x3a01d32f,0x39c9c6d9,0x39f41f3a,0x3a114007,0x3a21dd39,0x3a730a7b,0x3a9afda6,0x3ad4f678,0x3ad5f7f4,0xb904e697,0xb9b5d502,0xba93bd0b,0xbaaac4e8,0xbade7b0e,0xbb06c926,0xbb25f047,0xbb2f181d,0xbb03f050,0xbb135c1e,0xba139c49,0xbb15c454,0xbae62ffa, -0xb9884a30,0xba43db85,0xba756d69,0xbb20d8e5,0xb9d8a993,0xba0278d2,0xb9fabb44,0xb9d5970f,0xb9c8c5dd,0xb9e4def3,0xba11f756,0xba0f534e,0xb9bd5439,0xb8ecedf6,0x38951dab,0x39645ae7,0x3994b3d6,0x397c5a83,0x39695dac,0x391cbb66,0x37f549a4,0xb86d6716,0x39afbe7f,0xbada01be,0xbb26751c, -0xbabf8cbe,0xbb073489,0xbb41be50,0xbae18115,0xbaf93f86,0xbaf48afc,0xbb0861cd,0xbb2c94e7,0xbb327809,0xbb314436,0xbb5933ac,0xbb22d68d,0xbb080422,0xbb4cbb00,0xba8727ae,0x3b0a14a9,0x3b7247cc,0x3a385ccd,0x3aa4c6ee,0x3ab33eb6,0x3aa7168b,0x3abd6955,0x3abf72bc,0x3aaea8b9,0x3abf407e, -0x3ac7b2dd,0x3ac4fc00,0x3acfe594,0x3acb831c,0x3acdaefd,0x3a9dbb6f,0x3a9332f6,0x3a8bb696,0x3a8b6f4e,0x3a825592,0x3a677803,0x3b3e5e39,0x3b195ebe,0xbb066927,0x3b52ee79,0x3b434b34,0xba8ed65b,0xba756c02,0xba73a2c7,0xba0574b4,0xb9876a4d,0xb833177d,0x3a09eb9a,0x3b4da00a,0x3b5e8822, -0xba52aea2,0x3b37f15d,0x3b10a1ae,0x3b28fba0,0x3ac87f51,0x3add4b3b,0x3a971e82,0x3ae43ced,0x3b1084c8,0x3b050e54,0x3b34da56,0x3b4bb0ae,0x3b304746,0x3b4a5c10,0x3b53ed37,0x3b60f12b,0x3b12a1d1,0x3ad31c15,0x3a98cd51,0x3a8882a3,0x3a36ff30,0x3a1d3b73,0x3a954682,0x3a4f63ae,0xba0ff232, -0x3b217b3f,0x3b2ed459,0x3a6499c7,0x3b00c7ec,0x3b17dec8,0x3b342007,0x3b1bc679,0x3a684edf,0x3af50c43,0x3b00cdbd,0x3b1d537c,0x3b0eb3e8,0x3b0e561a,0x3ba66de8,0x3b1370fc,0x3ae2ed4f,0x3b247a2c,0x3ad1061d,0x3b391dce,0x3b4b0979,0x3b256ecd,0x3b7342f7,0x3b8576e4,0x3b792965,0x3b971890, -0x3b9b0fde,0x3b92face,0x3b1df0af,0x3acb72ca,0x3a7b9510,0x3a52e7d2,0xb9273c07,0x3a3bc1c2,0x3a9c0f7d,0xb911a7ca,0x3929b9bf,0x3ae3e57f,0x3ab57276,0x3b28ade5,0x3ab3dfc2,0x3af64267,0x3b98d4a0,0x3add2d1d,0x3b3c9fd5,0x3b3b0cc5,0x3b2b7c84,0x3b2a56cb,0x3b1f9ccb,0x3b763c55,0x3ba6b99a, -0x3b0e955d,0x3b04ee5e,0x3b0d77df,0x3a277643,0x3b1503fb,0x3b76f090,0x3b2fd80e,0x3bbf511d,0x3bd5255b,0x3b9ca5e3,0x3bddc328,0x3be176fb,0x3c037033,0x3b87cc9e,0x3b03a725,0x3a511576,0xb97c04c6,0xba930f9c,0xb97d40c5,0xb9f493e2,0xbacf38c1,0xbb29046c,0x39ae3a9b,0x3a9bdadd,0x3b0ab860, -0x3b160085,0x3ae5c9ad,0x3b9e9675,0x3b259fa7,0x3b4d8d92,0x3b2e3e36,0x3b4243a2,0x3b175f42,0x3b0f65e9,0x3b44f5d3,0x3bb18cce,0x3b5f0dc8,0x3aea6179,0x3b88cd7d,0x3b26cb7d,0x3b9c0141,0x3ba87fff,0x3b7053ea,0x3bc75932,0x3bd5c7ca,0x3bb6024f,0x3bfd4d67,0x3c0fb754,0x3c00cd80,0x3b7ed7c4, -0x3ae97428,0x3a3c667e,0xb691852a,0xbaefd6ca,0xbaccf44c,0xb9b0beab,0xbb1af63c,0xbb147575,0xb906a530,0x3942f766,0x3b35e774,0x3acdb3ee,0x3b15c785,0x3bb709db,0x3baa7cc4,0x3b7db962,0x3b847743,0x3b57b396,0x3b0bd0e1,0x3a1926f3,0x3b9615b4,0x3b20918d,0x3b14ce4e,0xbb031e66,0xbb348207, -0xbbbee2bb,0xbb77188c,0x3a7ec9d0,0x3c362c13,0x3be86905,0x3bb92eec,0x3c04bbca,0xbb88643a,0xbc0c6668,0xbbfaae77,0xbb03f8eb,0x3a84fef3,0x39c04594,0x3b427a23,0x3b7ceac2,0x3b5890dd,0x3b02bc1c,0x3997382d,0x3b0a44b6,0x3aeb5cd4,0x3b190eaf,0xbb377a43,0x3bb60157,0x3bb49845,0xba92fafb, -0xb907df44,0xbb552920,0xbb9ec086,0xbb527928,0x3b3f462c,0x3be2c695,0x3bd3c0fc,0xba5a23ad,0x3a05fba2,0xba240661,0x3b8ebd37,0x3c49cf06,0x3c40af21,0x3c2de96a,0x3ba1565b,0x3a5e2e5b,0xb9ca78c2,0x3a2359bb,0x3bc6532b,0x3be14c3a,0xb96cdb2f,0x38f60807,0xb91ed110,0x3b770624,0x3b403218, -0x3a1968ca,0xba9602c6,0xbaf92a52,0xba6b44ba,0x3a9b5b5f,0x3a815573,0x3af61424,0x3af009de,0x3a670f83,0xb9f72080,0xbb3bf520,0x3992d073,0x3b1f55f0,0x3ba50aa0,0x3b57a94c,0xbade3f8e,0xbc138554,0xbb9e3c0d,0x38a3ff88,0x3babc804,0xbbea9c3a,0xbb8efc74,0x3ac46493,0x3a9f49df,0x3b549393, -0x3c790dd5,0x3bb40686,0x3af6da65,0x3b0b81b3,0x3b8b1bda,0x3ba29466,0x3b7f0c2a,0x3b90183d,0x3b638dd5,0x3b8e971a,0x3b21a1f3,0x3abc70ae,0x3abb60fe,0x3ad0dbe2,0x3a250ea8,0x3b0ed979,0x3ae33f65,0x3aab3c05,0x3a208373,0xb951023c,0xbb0c76e7,0xba1e086b,0x3a41108f,0x3a148913,0xb6b6a29b, -0x3ac8e046,0xbb0d142b,0xbb1f74e2,0xbb88eaae,0xbb4dd352,0xb8d46801,0xbb70287a,0xba6d6f77,0x3be579d6,0x3a538650,0x3b3b8a66,0x3c77bc11,0x3c0b5d32,0x3c0326a4,0x3c1184eb,0x3bee9d35,0x3bf57352,0x3c068b6b,0x3bd7c953,0x3b97e204,0x3b123978,0x3a8b5dbd,0xb9d7a647,0x3a135b97,0x3ab75973, -0xb872513f,0xb8f518ce,0x3a522e9e,0xb8798d75,0xb9be26fd,0xba5e7f25,0xba1aea32,0x3a9e407e,0xb8b72bbd,0x37c8bc71,0xbb3c0dfd,0xba9880c4,0xbae95393,0x3a35d9d1,0xbb7cc40f,0x3ad12879,0x396c3aa6,0x3c044424,0x3c261c1b,0x3c789b0b,0x3c631ff2,0x3c44ae49,0x3b453ff6,0x3b9eed29,0x3bc55886, -0x3c2381ff,0x3c1d3a02,0x3c06cadd,0x3bbaba30,0x3b7f6ece,0x3ae27476,0x38c7a742,0xba1f8be1,0xbb0e5e5a,0xbae04382,0xbb3d9bbb,0xbb4e7063,0xbb1280d7,0xbac644d6,0xba883925,0xba4a954b,0xb9a08421,0xb9f70b78,0xbaa8ef83,0xba2e1a34,0x3a0e258a,0x3ace1860,0x3ab1df15,0x3b397d36,0x3b34d81d, -0x3b6700ae,0x3b376250,0x3af845d7,0x3c169041,0x3c5edca2,0x3c38d550,0x3c6744fa,0x3c700c98,0x3c70bf16,0x3c4abc0d,0x3c463309,0x3c4f7bf1,0x3c0d3b06,0x3bb20ab9,0x3b876124,0x3b315903,0x3afe24a1,0x3ac2ca7f,0x3ab7c084,0x3ab7f172,0x3b03ce06,0x3b03222c,0x39cc7d3e,0xbb40d3de,0xbb38829a, -0xbb0bfebb,0xba97ca75,0x3ace5ae4,0x3b1bad73,0x3b07ed3f,0x3b08128f,0x3ac86469,0x3ac2bc35,0x3b395c31,0x3b0ed625,0x3b34eca6,0xb895a97c,0xbb0115d0,0x3b26f0b8,0x3badb2ab,0x3bcd8cdd,0x3be97dfe,0x3bbf1fab,0x3b987c1c,0x3b8f9999,0x3b32b73f,0x3af50ab5,0x3b01f739,0x3b027028,0x3b4e1af1, -0x3b68e04b,0x3b7eb529,0x3b6abaa7,0x3ae9baf3,0x3aeba0a1,0x39ccf168,0xba3e28e0,0xbb0b23d3,0xbb43b3de,0xba90d1a1,0xbae20024,0xbad1aa90,0xbaf9016c,0xbb0b6c39,0xbabca171,0xb90668d5,0x399ae282,0x3a928261,0x3ade38e4,0x3b08dbcb,0x3afe0cff,0x3a24a275,0x3ab0effc,0xbabd0e46,0xba516d6c, -0x391a3cd6,0x3a492627,0xb9323653,0x3a99242c,0x3b1aab34,0x3b8e95ec,0x3b6e647e,0x3b40c0a5,0x3b258ef2,0x3b023214,0x3ae78fa7,0x3af2f747,0x3b0e1dd1,0x3b0d47a9,0x3ae43da0,0x3ab4df67,0x39cdbd09,0xb9142d5c,0x39207c37,0xba8cdeb7,0xbad4d714,0xbac9078e,0xbafd8529,0xbb18593f,0xbb07ac51, -0xbb1c34fd,0xbb18423e,0xbb0ecfcb,0xbb2ad407,0xbb46d8fd,0xbb404c2a,0xbb6a4246,0xbb888d6d,0xbb5ea16f,0xba9c8328,0xb9de877a,0xba85147f,0x390ebf4d,0x3a710d88,0x3ac26c6a,0x3acc08a4,0x3afeff14,0x3b19218c,0x3b45e7a9,0x3b69472b,0x3b29fe1d,0x3b072abf,0x3abbb979,0x3a9c699f,0x3a9bc6ee, -0x3aa2d689,0x3a7fa9b6,0x394c935f,0x3a6b2f20,0x3a763a9b,0xb96d9c12,0xb9e95d69,0xba5caf76,0xba7c2431,0xba478f88,0xbaf5deff,0xbaee959b,0xbae1b613,0xbb4dae6a,0xbb66215b,0xbb8d67b8,0xbb6cf3c6,0xbb83a26c,0xbb58ba35,0xbb0e43f1,0xb8807753,0x39b4ff7e,0x3a6f41be,0x3a914bb5,0x3a8cb78c, -0x3abe7804,0x3b042103,0x3b267c02,0x3ad08cb0,0x3a1d8338,0xb8a6bba2,0xb9137ef0,0xb849a251,0x38cb0061,0x39a12efe,0x3981a727,0x38e0d2dc,0x39a50043,0x39024d6b,0x3a14ee27,0x3ab65c6f,0x3a91e8c6,0x3a9fd7d4,0x3a67dc17,0x39e25e9b,0x38877b12,0x390dd62f,0x3a2c18aa,0x385b3aaa,0x390970c8, -0xb9d5967a,0xb996a6e4,0x39a61d60,0x3a29d2b1,0x392c6b37,0x3a8f904d,0x3a9409ab,0xb9785d5e,0xb9909230,0xb912006e,0x37df9663,0x3887653c,0xb7a98af5,0x38727484,0x39225412,0x39d76cb9,0x3a048211,0x39d53efb,0x393f11c1,0xb8609f4f,0xb902b202,0xb8c98af6,0xb89814d4,0xb891718c,0xb895f30b, -0xb9ac26ea,0x3a9aeaa3,0x3aa01a43,0xba36a6cf,0x3a92e78f,0x3a9cee32,0xba807e3b,0xba98c315,0xbaa2a90b,0xbab5b859,0xbab2a05c,0xba994d71,0xbab63305,0x38a354d8,0x395639a8,0xbab44390,0x39f70d3d,0x378282ee,0xbb6fa043,0xbb83ea88,0xbb30b4ac,0xbb0c464c,0xbb14dcf9,0xbb12037c,0xbb3bf58a, -0xbb493f67,0xbb47ad75,0xbb385003,0xbb309a8c,0xbb23bad0,0xbb18b31b,0xbb16df72,0xbb13ce6f,0xbb2b2399,0xbb3da5d8,0xbb46f098,0xbb47e289,0xbb36edff,0xbb413577,0xbb52998a,0xbad676af,0x3b515fd2,0xbb63f3c5,0xbad8c0da,0x3b58689f,0x3b4e93cd,0x3b479c3f,0x3b289703,0x3b329886,0x3b246843, -0x3b06ba37,0xbab0b6b5,0xbb6f5a25,0x3b34caaa,0xba356e04,0x3b08c72b,0xbb528306,0xbb1931b4,0xbb395da0,0xbb3a02f9,0xbbb0d68b,0xbbc3e56f,0xbbb3e85c,0xbb90a365,0xbb804b43,0xbb6f88ab,0xbb4ac7ff,0xbb41917c,0xbb457d7e,0xbb7f9a4e,0xbb968795,0xbb9c2992,0xbb9570d7,0xbb89eb64,0xbb843ebd, -0xbad5ca51,0xbb1fc515,0xba947e99,0xbb082310,0xbb36c1d5,0x39366903,0xbadeb02b,0xba604606,0xba48d06b,0xba8bc269,0xbaf939f7,0xb880e54d,0xba466774,0xba8c0311,0xba247413,0xba194611,0xbad42c39,0xbb6b1b30,0xba6db3ea,0xbb044616,0xbade89f7,0xbbc4abe4,0xbbf820c0,0xbbdbec8c,0xbbb5e890, -0xbb8e240f,0xbb7904d2,0xbb1eb5a2,0xbb0e509b,0xbb09d221,0xbb911961,0xbbbd0106,0xbbe22535,0xbbcbae80,0xbbc2c80d,0xbb8d528f,0xbb3b8a20,0xbb3e6652,0xbb8d2e7a,0xbad0a069,0xb9bf0c60,0xbad51c53,0xb7bf5f0c,0xbb1c65cd,0xba90b24e,0xbaa876d3,0xba5126a6,0x394fd65a,0xba77d0dc,0xba87b5cd, -0xb9f832ef,0xbb221e1c,0x39fa0fd3,0xbaa7cc2c,0xba81db3c,0xbad75659,0xbaf9fca9,0xbc0b820b,0xbc36d746,0xbc25ee11,0xbbe8a077,0xbba6daa6,0xbba20048,0xbb433407,0xbb17e6b2,0xbb123987,0xbbc373b1,0xbbfb8fc1,0xbc094e4f,0xbc033712,0xbbe277cc,0xbba245e1,0xbb830bfa,0xbb67ebf0,0xbb607a3c, -0xba2761fe,0xb98bb442,0x3a82b2a0,0x39822321,0x3ad8c135,0x3b744ca4,0x3b07a710,0x3adb3735,0x3ad2c69b,0x3a65b055,0x3a9cac46,0xb9ab9e7f,0x39f79bfe,0xbace088e,0xbb04f042,0x3aaf78cf,0x3a03730a,0x3ad926aa,0xbbfef0c5,0xbc298f3c,0xbc25251b,0xbc041c71,0xbbb8bca0,0xbb8a9d51,0xbaa5a95b, -0x39021a7b,0xb912adfb,0xbbbcd823,0xbc10ab13,0xbc32cca1,0xbc240413,0xbc12764d,0xbbb83852,0xbb5ae9f2,0xbb6586f5,0xbb8685e1,0xba63539b,0x3981f703,0x3b2d4712,0x3b131e57,0x3b0a1034,0x3ba4f35f,0x3b9c56c6,0x3b7582ab,0x3b92c0da,0x3b0f995f,0x3a236b56,0xb9be912c,0x3a181cec,0xbb6c8155, -0xbc1c7b3d,0xbc335d69,0xbc533ec2,0xbc7101c8,0xbc745007,0xbc5d66fb,0xbba59437,0xbb64e381,0xba4480c2,0x3b471ce6,0xbbd2b780,0xbc17a517,0xbbd05cac,0xbb4d9a35,0xba27fa00,0x3a9e1023,0x39f56407,0xbac9d5d4,0xbb6b4bf8,0xbad3eb84,0xba671995,0x3ab3c905,0x3a5b7fb7,0x3a79f1a1,0xbb36acbf, -0x3bb4c9bb,0x3bc1ddab,0xba69af06,0xbaba6014,0xbb9c4c57,0xbbd040d8,0xbb42cc7e,0x3a7488c9,0x3bb26629,0xbafb8fcd,0xbb9dfa67,0xba9c37ca,0x3b21e702,0x3b509857,0x3c20a224,0x3bb127a3,0x3bb63fdc,0x3b2544f0,0xbb572e6c,0xbb91279a,0xbacb157b,0x3b95abb0,0x3bbcd8c0,0xbb16f083,0xbb9e532d, -0xbc0363eb,0xbc2d09f2,0xbbf94298,0xbbd04c05,0xbb9bd877,0xbae090d9,0xbb2be4d7,0xb9a4deed,0xba0d1ff4,0x3a818639,0x3adc355b,0x39a6a2be,0xbabc21dc,0xbb5a031b,0x3a0a4877,0x3b401a5f,0x3b74c07e,0x3a8809bf,0xbb99ab09,0xbc3b6a4d,0xbc083749,0xbb3c4107,0xba58b376,0xbc19e4f8,0xbc1e25d2, -0xbc2deea6,0xbc815b24,0xbc83d52c,0xbbf232de,0xbb4c1901,0x38ca0434,0xbaa365fa,0xba432ee9,0xbb64cb8e,0xbbd738be,0xbb90c39b,0xbb6ca3b0,0x35889174,0xba8b3a61,0xba2cf194,0xbb35b4ae,0xbaba8313,0xb9f91bb6,0x39b43e98,0xb918ea18,0xba05e3a7,0x3a5eb2fd,0xba9043a0,0xbabd3ee6,0xba221901, -0x397a3f40,0xb9b58359,0xba92a7b2,0x39c23165,0xbb27b726,0xbb8e29b9,0xbb88d4d7,0xbb5b1b31,0xbb5cbc69,0xbc253d4c,0xbc540884,0xbc9ad6b6,0xbcb937d5,0xbcaf7898,0xbbbea5fc,0xbb44e621,0x3a5b4486,0x3a097b7e,0xbb745511,0xbbb0e478,0xbb8b143b,0xbb4eff64,0xbad9db1e,0xb9f064f9,0xba88c2de, -0xbae1b7bf,0xbacd8a90,0xbb035bae,0xba9a6052,0xba831321,0xba2fb479,0xba3bae14,0xba4da70e,0xba60f201,0xba49afbc,0x3985406f,0xb9c7e74a,0xba9f0331,0xbb83ed4c,0xbabdc245,0xba92e767,0xb888f822,0xbb66ec17,0x3b1fe297,0xba4cfc1f,0xbb9a132a,0xbc17a001,0xbc60142b,0xbc1872b9,0xbba1c80d, -0xba078aa1,0xbb3b8708,0xba50cb8e,0x3b340f05,0x3b7ab7e0,0x3b5be1c3,0x3b3e42ac,0xbad593fc,0xbb97d856,0xbbf00f91,0xbbcb52ad,0xbbab236f,0xbb7130c8,0xbb74e1d7,0xbb86b77e,0xbb5ddfab,0xbb1d9aba,0xbaa0e281,0xbaa051c1,0xb94eebb1,0xb9d35266,0xbad6b7ba,0xba4eeb9b,0x398f1347,0x3abd9c06, -0x3a24ca03,0x39e6df9f,0x3b746f3d,0x3b1d7632,0xbb654f1d,0xbc14dc06,0xbc7baec4,0xbc377563,0xbc1b0535,0xbbb89c0c,0xbb7d399a,0xba89c091,0x3a40430c,0x3a98e3c7,0xba8a01ae,0xbaa3b6a4,0xbb49bb04,0xbb7284a8,0xba3d4d7a,0x3a3d65e1,0x3ac4ecbf,0x3ab404a5,0x39e5a1e5,0xba696e21,0xbac63798, -0xbb21d624,0xbb42eca0,0xbb55241a,0xbb11492f,0xbabf2a23,0x3a513829,0x3af8f199,0x3a6b8282,0x3aaa2b10,0x394dc213,0xb96f4d0b,0x3aa825de,0x3b1e45f8,0xb9beec38,0xbb085194,0x3a9e20fe,0xbba98d0a,0xbb2f7e85,0xbac617c2,0xba0d80ff,0xba93e80e,0xbab3d98f,0xbb50d57b,0xba56db04,0x3a32b303, -0x3ab37720,0xb9014e88,0xba4579fd,0xba4d0f3d,0xba619037,0xba809cd8,0xbad27d4f,0xba33468d,0xba76b1c5,0xba1d8a42,0xbb26ab2a,0xbb6d19cd,0xbb67cf3d,0xbb3aa854,0xbb292b4a,0xbb3443b9,0xbaf45c5e,0xbad01e61,0xb9ca5c27,0x38f8f93f,0x3a5d687a,0x3ad6f9e8,0x3ae83f00,0x3a9d90f6,0xb9e0f2fd, -0xbb0e0151,0xbb8b811b,0xbb848090,0xbb90cb23,0xbb491b47,0xbb228704,0xbb268353,0xbb27b3cf,0xbb337c4b,0xba9f83a9,0xba7222ce,0xba48c817,0xbaa776db,0xba9a43f9,0xba42673a,0xba1305e5,0x39842b19,0x39b72cbe,0xb9c3a45b,0xba973942,0xbb0da137,0xbb01496b,0xbaf885bb,0xbb365775,0xbb16032b, -0xbb0b1343,0xbb1a01ca,0xbb2cece5,0xbb0dbcc3,0xbaf50715,0xbb163880,0xbb31105c,0xbb6c6ab0,0xbb6405b3,0xbb8c9dcf,0xbbaa7ad9,0xbb92133e,0xbb5955b3,0xbb7c741e,0xbb4d7ae8,0xbb5174c1,0xbb4e119f,0xbb4b1670,0xbb46faf1,0xbb4cfc96,0xbb30de20,0xbb0006e2,0xba898cee,0x38937902,0x3a73b4a8, -0x3ab85dce,0x3a94a38a,0x3a73df22,0x3a67a870,0xb781e875,0xba6da7af,0xbabd83c9,0xbae71091,0xbaab5903,0xbb040713,0xbaf8428f,0xbb172b40,0xbb32c7fe,0xbb13c84c,0xbb83d650,0xbb80faf9,0xbb91e462,0xbb9ebe5c,0xbba3f253,0xbbc81296,0xbbb06ed6,0xbbd4ec30,0xbba26294,0x3a6061f8,0xbacad4f2, -0xbafeceed,0xbae46e55,0xbacda325,0xbaf3aa2e,0xbaeac1c4,0xbb034eaf,0xba93add0,0xba5cde8b,0xba20588c,0xb9f8da54,0xb9ab4de8,0x39202463,0x3849395e,0xb88283ab,0x378f1244,0x3971d5ce,0x3a41ea37,0x393a2096,0x3837b601,0xba559017,0xbaa07a81,0xbaeef864,0xbaef1e9a,0xbb1297f9,0xbb235f97, -0xbb345a18,0xbae398de,0xbb214b34,0xbb10044a,0xbad7a53e,0xbb19da3c,0xb94aa4fb,0x3a7ad06f,0xbb183b5f,0xbb51da98,0xbb35a432,0xbb1af6e2,0xbb21bcc5,0xbb215fef,0xbb24fbe5,0xbb212b07,0xbb284cf0,0xbb221f85,0xbb175a67,0xbb061e4d,0xbae9b273,0xbacb76dd,0xbab655c7,0xbac4e308,0xbac6f87d, -0xbad4d0a5,0xbaec9706,0xbaf51d17,0xbaf9345a,0xbb232e11,0xbad0d2fe,0x3a700094,0xbb3ebc56,0xbb02207d,0x3a7a0acf,0x3a8a8e1a,0x3a2c40ee,0x395042de,0x391b3d7b,0xb899650b,0xba3440d4,0xbb3e9c7d,0xbb6e6465,0xb9410782,0xbb02b00c,0xbb6ea40e,0x3b729ba8,0x3b71d714,0x3b84f9df,0x3b3edf1a, -0x3b3cd958,0x3b2d1349,0x3b3b03e6,0x3b42bc04,0x3b426746,0x3b499a28,0x3b4e7093,0x3b494fb5,0x3b50c48f,0x3b53e9f4,0x3b5ed8f2,0x3b47719f,0x3b432bd8,0x3b3695e5,0x3b361d68,0x3b1ee2a2,0x3b402c2b,0x3aae7074,0xba5e8f53,0xbbb9ae34,0x3b3116c2,0xb8ca750e,0xbba8d8bc,0xbba4a42d,0xbb9cf61b, -0xbb85b2fa,0xbb9eb055,0xbb935129,0xbb65cc9f,0xba1fc718,0x3b46f067,0xbb893b59,0xbaaa61b4,0xbb882e2f,0x3b5d1d8b,0x3b67b830,0x3b5d7487,0x3b281c42,0x3b5202b1,0x3b797c4a,0x3b8878a1,0x3ba17ce3,0x3bafcee1,0x3b97a9bf,0x3b9f5600,0x3ba8db71,0x3bbf5192,0x3b9a3079,0x3b8906a9,0x3b5e1033, -0x3b401d5a,0x3b2e1e0f,0x3b53be3d,0xbad850e3,0xb73d96ad,0xbacbe497,0x3a058ec2,0x3b3b6b49,0xba2950d6,0x3aa54bff,0x3831638c,0x3a7c617d,0x396350a4,0x3b1a5de9,0x3a0d8d69,0x398795eb,0x3a929d17,0x3a01fa3d,0x3a84a48a,0x3ae4f7bd,0x3bbb2dd7,0x3b897318,0x3b855b08,0x3b29158b,0x3b787b2d, -0x3b88367e,0x3b987d2e,0x3bbfd4b0,0x3bcbe44a,0x3bbaa2dc,0x3bd17891,0x3be17b09,0x3bf4bf82,0x3bbdab8c,0x3b995afd,0x3b76fcb7,0x3b2cf299,0x3b2bc1c2,0x3a1e3465,0xbb36dc7d,0xba84400f,0x38042cc8,0x3a1ac607,0x3a8997fc,0x3ac53cd3,0x3a81179c,0x3b740c38,0x3ad28d59,0x3aec8405,0x3a5b9264, -0x3b399295,0x3b095656,0x3ae1dbde,0x3a5f36fd,0x3b9a0553,0x39f9ab94,0x3abe26cf,0x3ba84c9f,0x3b649e86,0x3af8709b,0x3b43b96f,0x3b99f853,0x3ba6e031,0x3c0fb759,0x3c193a0a,0x3be4a98d,0x3c0a28d8,0x3c0efdf5,0x3c39daf1,0x3c01e2a1,0x3bbc152c,0x3b6ffe62,0x3b0bd470,0x3ac6acd1,0x3a17f519, -0xbaaee456,0x39b90372,0xbb1b1453,0x3b1bc423,0x3a9c76eb,0x3b236770,0x3ad5f7a6,0x3adf54ff,0x3b4ecf5d,0x3b0d97a1,0x3ae5e7e7,0x3b46e83a,0x3a905406,0x3aece9ea,0x3b367a82,0x3b41e946,0x3bc7bf09,0x3ba557ca,0x3bd0c2a9,0x3bab9736,0x3b4d0565,0x3b911f5d,0x3baf8fd9,0x3bbf7196,0x3c07d145, -0x3c11882e,0x3c00a70c,0x3c1a8e8d,0x3c399906,0x3c46ac33,0x3c0e041a,0x3bcbf1fb,0x3b89edde,0x3b10ceb9,0x3a29d102,0xba5ceb6e,0xbbab0a26,0xbadd4708,0xbb222a15,0x3a7db15a,0x3ae2f5ff,0x3b177acf,0x3b233663,0x3b1a2612,0x3ba287fe,0x3b902b08,0x3b733208,0x3b8b7d3b,0x3b3eb6c0,0x3b00c239, -0x3b0c19e9,0x3b2d521f,0xbb82ac10,0xbb09a5bc,0x3aa916bf,0xba28f2a4,0xbafd7d77,0xba0f7b83,0x3b70a667,0x3c612e80,0x3c455b86,0x3c374082,0x3c65e399,0x3b441ba3,0xbb45ee2c,0xbba0e6fc,0xb9db0c8f,0x3b224f1d,0x3bb4fe1c,0x3bf06aa1,0x3c074a7a,0x3ba887aa,0x3ae3faef,0x3b44fd76,0x3b42a9da, -0x3b082c7d,0x3a9d9630,0xbb13bc90,0x3bbc4253,0x3bbbc75f,0xba4db1a3,0xba7528c1,0xbb88ae26,0xbbb2d9a8,0xba732430,0x3b5977dc,0x3b2a847b,0x3b5d4df6,0x3a357fb8,0x3be29c3e,0x3c00c6eb,0x3bd6b3ee,0x3c0019aa,0x3c34a135,0x3c28dbdf,0x3b9e9748,0x3a7c8edf,0x38ad68fb,0x3ab1b0d4,0x3bbd39d2, -0x3bed77da,0x3ad9a464,0x3af63066,0x3b03e5d3,0x3bd7d7f4,0x3b8036c3,0x3b4de7fd,0xbb0798d7,0xbb7371fe,0xba8c4f54,0x399bc1b2,0x3a652fb2,0x3af6b0eb,0x3ae49be5,0x395d5cde,0xbaaafc60,0xbb47356d,0x3aab26a1,0x3b4fa728,0x3b6bc62e,0xba1091a3,0xbb8d3f6b,0xbbf9bc9f,0xbb998d31,0xba186668, -0xbabebb58,0xbc05972f,0xbb464520,0x3b26a57c,0x3b8448d9,0x3bacc59a,0x3c1ddff3,0x3c310028,0x3c13e4b2,0x3b83f540,0x3c08588d,0x3c06f4b5,0x3bd8dd7b,0x3be63d9f,0x3bb59253,0x3badd08f,0x3b748662,0x3b6a7695,0x3ab77d59,0x3a66d861,0x3a038db6,0x3a88be70,0x3ab61411,0x39ca0787,0x39c32ece, -0xba163ad6,0xbacbbfcc,0xb92c831c,0x3a169ea3,0xb803d38b,0xbaa56eca,0x3add79a5,0xbaa32941,0xbb5536eb,0xbb71f3e9,0xbb847e08,0xbb938654,0xbb940624,0xb9fee1c0,0x3c382825,0x3b9d9412,0x3bd23c2e,0x3c331e0b,0x3c4ac8e8,0x3c488bc7,0x3c1590ef,0x3c203b58,0x3c154afd,0x3c299bc0,0x3c0e8896, -0x3bd8b841,0x3b573338,0x3b1a4ada,0x3b009acc,0xb84c6609,0x39421973,0xb97e3a4d,0x39afdda0,0xb9281834,0x390d0493,0xba4c960c,0xb8ff7503,0xb9279536,0x3a414cb3,0xb9c32f53,0xbaa0eb01,0xbb645815,0xba55d039,0x39fe48c8,0x38e92762,0xba9ae0a2,0x3b1e0ea4,0x3bb66a7b,0x3c404881,0x3c43b075, -0x3c9a00ae,0x3c7dd265,0x3c531806,0x3b9b9621,0x3b080811,0x3abf3070,0x3bec849d,0x3be61624,0x3be9b303,0x3baeeb68,0x3b8a6b0b,0x3b5023aa,0x3af38ccb,0x3a898192,0xba1e9a33,0xbae1c7f5,0xbb3d33b0,0xbb3205e7,0xbb3404a0,0xba6eb491,0xb9b87e9b,0xb9c6782c,0x39267032,0x389cc99d,0xbaa52914, -0xb9239ae4,0x3a2977b0,0x3b10999b,0x3a6aedeb,0x3b1ba31a,0x3b67b45e,0x3b63e2bc,0xbb9c20c1,0xbbb6850d,0x3bc354b8,0x3c01b2b4,0x3c10c580,0x3c5f4aca,0x3c8272ac,0x3c7a254f,0x3c645668,0x3c652bb0,0x3c679849,0x3c28ccfa,0x3bf3b95f,0x3bc74357,0x3b72b5b7,0x3b09503d,0x3ac7a41a,0x3a64a95e, -0x3a92698a,0x3af8389f,0xba2f24bf,0xbac3544f,0xbb302e6e,0xbb571ef1,0xbb024df9,0xb9fa07ea,0x3ab03bdd,0x3b093774,0x3ad37677,0x3b0e42d8,0x3b02a55b,0x3a7f8b28,0x3b3b30ea,0x3a3e7538,0x38c71660,0xb8b9c641,0xbb552b58,0x3ba8dbbd,0x3c107e61,0x3c10dc21,0x3c2b2a27,0x3c0ea9f8,0x3c0013fb, -0x3bf2ff22,0x3b81dbce,0x3afd7526,0x3ae8fb33,0x3b0c98bc,0x3b45e14a,0x3b547aea,0x3b74e66c,0x3b77ba28,0x3b1a6f29,0x3b190ff9,0x3a3f0470,0xbb04d7c8,0xbb252b86,0xbb143500,0xbabbc9f3,0xbac4dafa,0xbacbea78,0xbb0993e1,0xba76d6e8,0xb9fc8de0,0x3a9c2100,0x3adb11e0,0x3b41300c,0x3b6154af, -0x3b616b5a,0x3b8afd9d,0x3b49e6c9,0x3b49dbf4,0xbb2d8196,0xbabd6d3e,0x3b0ce905,0x3b25b40b,0x3b36df6e,0x3b64a61c,0x3b8e1948,0x3bc5cb6d,0x3b8c4cb5,0x3b53f7c5,0x3b08c4b8,0x3aeb7489,0x3adbbddc,0x3aeb27eb,0x3b0e6523,0x3b080176,0x3afb13cc,0x3ab0c3eb,0x39e2aabf,0xba1f19ff,0xbabea4c4, -0xbb0dac71,0xbadb6e4e,0xbb0d2b9e,0xbafdde08,0xbb14896d,0xbb15c557,0xbb0f9785,0xbac7f4d1,0xbaa2908f,0xbad3f794,0xbb15d3e9,0xbadf1c80,0xbb26a34a,0xbb8a329b,0xbb5f9ee6,0xbb5de6c4,0xb99d20ac,0xb8b0ff55,0x3a2c22f4,0x3af22354,0x3b19f342,0x3b29e6ed,0x3b438cb3,0x3b500dbe,0x3b699f14, -0x3b72cb60,0x3b3bd548,0x3b0ad849,0x3aa56791,0x3a96d5c4,0x3a925da6,0x3abfdedc,0x3a4b3812,0x3a260dd5,0x3884085e,0xb8a6fe8b,0xba4f14c6,0xba30dd3b,0xba8a86e8,0xbaaaf883,0xbabb3bc5,0xbb110408,0xba804fa3,0xbb494218,0xbb223a83,0xbb83b375,0xbb722a3b,0xbb718f2b,0xbbb1f862,0xbb886f2f, -0xbb26a010,0xbb084ed4,0x3a0b0683,0x3a6b2444,0x3adb4ce6,0x3b0863b7,0x3b3a3f6d,0x3b7a57e4,0x3b9dcfe1,0x3b787e62,0x3b2bf0ba,0x3af19814,0x3ac22226,0x3aa9bc82,0x3a84b0fd,0x3a894b07,0x3a46139b,0x39f385c4,0x3a04c748,0x395f1d79,0x3a38d9f2,0x39128ca4,0x394ace6d,0xb90d37fe,0xb99285bc, -0xba5a331b,0xba800285,0xbaac80e0,0xba6692ac,0xbad6e6ad,0xbab841cc,0xba18d9cd,0xbb2a6408,0xba856bec,0xb8b39dbd,0xbade704b,0x3a5ca3a4,0xb99a1671,0x39a1baea,0x38c37df4,0x39a72bee,0x3a06e781,0x3a208270,0x3a1bfeeb,0x3a4f1f00,0x3a48c922,0x3a83a29e,0x3a8a5727,0x3a706063,0x3a340742, -0x39ebff0a,0x39d73efb,0x39f0254a,0x39fef6e0,0x39fbff6f,0x39d77965,0x39f5f5c7,0x398d8429,0xba981237,0xbb5b06e4,0x393727d6,0xbaa7d917,0xbb803ce9,0xbb8ddbe0,0xbb84e4b9,0xbb84eb99,0xbb931bdb,0xbb8a7d99,0xbb81f591,0xbb020173,0xba310073,0xbb86e2b1,0xbb1bfc6e,0x391f257c,0xbb559b7d, -0xbb0c70c9,0xbb8689b6,0xbb118996,0xbb139780,0xbb10e1a8,0xbb331746,0xbb40133e,0xbb46a0c9,0xbb37d353,0xbb35258e,0xbb346e0a,0xbb24fbb5,0xbb20a51d,0xbb168397,0xbb312294,0xbb42e2c6,0xbb4c91be,0xbb4ef879,0xbb385844,0xbb63c927,0xba166f5d,0x3ae67c8a,0x3ba26db7,0xbaabfa49,0x3aef6751, -0x3bace33c,0x3badc1b4,0x3ba360bf,0x3b8c55fd,0x3bafe348,0x3baa3643,0x3b9afaf8,0x3b1a0c1f,0xbaeb9b58,0x3b98620a,0x3b5046ec,0x3bdc0f0f,0xbb24f757,0xbb2b4702,0xbb20bbb1,0xbb17909f,0xbb8e1448,0xbba1d015,0xbba7aa11,0xbb815606,0xbb73b8d7,0xbb7c66d1,0xbb536a8b,0xbb3d725c,0xbb1bb06c, -0xbb5dfcc6,0xbb895254,0xbb976d61,0xbb8f0a57,0xbb8f9258,0xbba17a6b,0x3a96da1f,0xba3c8b88,0x3a211e27,0x3a8290fc,0xbaa521e8,0x3aa7a933,0xb75f5c7d,0x3acfb151,0x396e9dec,0x3a01523e,0xbb472238,0x3aab8bd2,0x3a5f40f7,0x3a1cd8fe,0x3af0e11e,0x3a778a2d,0x3b2071b7,0xbb90123d,0xba9642a4, -0xbaa019d2,0xba743824,0xbb869562,0xbbac3554,0xbbbacaae,0xbb90d1f2,0xbb7d3f1f,0xbb8631c7,0xbb2e0734,0xbb0bef8f,0xba9246c1,0xbb771ae7,0xbba1a2b2,0xbbd5276f,0xbbb3c6e9,0xbbd4f37d,0xbb5d7a18,0x3a752ce4,0xba966d0c,0xbaf6d051,0x3a79fcb6,0x3a88ed18,0xb9b33267,0x3a4bab0a,0xbb4ec95d, -0x39ae1b29,0xbaef4918,0x3a1fafab,0x3a03a23b,0xb9f911ef,0xb8267874,0x3b0f0965,0xbaef6441,0x3b911bfe,0xb9e8bba5,0xbb0a72e4,0xb9e2f18b,0xba51156e,0xbbad66f2,0xbbf891d8,0xbc109582,0xbbac22c4,0xbb8c580b,0xbbae8247,0xbb47fcb3,0xbb07413e,0x39853f6e,0xbb877203,0xbbc4c928,0xbbf80959, -0xbbf1cb07,0xbbf4bc25,0xbba523eb,0xbb27aa21,0xbb709b4c,0xbad865c1,0xb95499c1,0x3ac7a71c,0x37d3337a,0x3af25726,0x3acc7f19,0x3b06770e,0xb876f836,0x3a670bb2,0x3aada80a,0x3adddc1c,0x3ac156df,0x3ac873a1,0x3a84ac81,0xb94e404e,0xba5ed5b4,0xb8f64338,0x3b113082,0x3b1f4b8c,0xbb726097, -0xbbafdf3f,0xbbf77031,0xbbb65c76,0xbb990a5b,0xbba87324,0xbb001cc5,0xb820087c,0x3af8e469,0xbb803a72,0xbbe59897,0xbc1edb07,0xbc0dcef4,0xbc149d84,0xbbc605a7,0x39e02463,0xbb546a80,0xbb11c844,0x391385a8,0x3a2711df,0x3b0fb7da,0x3ad2224c,0x3aedd4e8,0x3b578674,0x3b82b669,0x3b28d463, -0x3b8b6404,0x3a98c95d,0xb905676b,0x3a7f7866,0x3b2e3cf6,0xbaab7c51,0xbbe4f24d,0xbc5eb732,0xbc5def96,0xbc660cc5,0xbc62c4df,0xbc4b2390,0xbb824722,0xbb9271bb,0xbb1706e5,0x3ab30ff6,0xbc00eaeb,0xbc3b7cb0,0xbc1e92b0,0xbbbf7a99,0xbb166d77,0xbaf185bb,0xb94b1d60,0xba3344f3,0xba918f8e, -0x3af4fbf7,0xb9cd941b,0x3b61f59f,0xb95a8ecb,0x3a97ff39,0xbb1b304c,0x3bb4457c,0x3bb57135,0xba3986df,0xbaf73c87,0xbba1e734,0xbbbdfc2c,0xba65c28a,0x3b60ef95,0x3bce11dc,0xbaa82c44,0xba2f697f,0x3a1880de,0x3afac263,0x3b42dcb0,0x3bab7f64,0x3be2a844,0x3c04403f,0x3b928f70,0xbaf2481d, -0xbb866e82,0xbb0b9c44,0x3b9e625d,0x3be46b64,0x3a76b210,0xbb68f5ed,0xbbee87e0,0xbc1a75a1,0xbbc0871e,0xbbc40f61,0xbb4cc837,0x39b9c445,0xbaba7e82,0xba1cde1b,0xba4f1684,0x3936a9a6,0x3a8d618b,0xba17e5d6,0xbb0721cc,0xbb4946d9,0x3aa642ff,0x3b2f5d17,0x3b0f7553,0xbac5b82b,0xbbe451ab, -0xbc204633,0xbbba4a7b,0xbace4e8d,0xbc10fe88,0xbc3d56ce,0xbc0423e5,0xbc11ad2a,0xbc1167ad,0xbc2903db,0xbc30c75e,0xbb206b13,0x3890c129,0xbb812385,0xbb197667,0xbb85403d,0xbbd2cdbd,0xbbac26b5,0xbb71e8cd,0xb9d9345e,0xba1b3034,0xbaa1bfb1,0xbb4c00df,0xb9ec5af7,0xb991c8d5,0x3ab81ea7, -0xba470f6b,0xba5a6968,0x39048676,0xba82ae62,0xbace2720,0xba0db5d9,0xb8dc915e,0xba217a46,0xbb043f79,0x39c2495c,0xba96ec53,0xbb9c4372,0xba9d13fb,0xbb015929,0xbbe2e36b,0xbc20d8b0,0xbc25048e,0xbc3b4193,0xbc833852,0xbc8aa64c,0xbc39b337,0xbb3aa499,0x3abf73d7,0xb8ec479e,0xbb7a8797, -0xbba390c5,0xbb866181,0xbb43f093,0xbad4dc44,0xba6e50f7,0xba21c6fe,0xbb335549,0xbb0e6dd7,0xbaa13b55,0xbab713c0,0xba3e8d96,0xb983d558,0xba720954,0xba68545f,0xba25815c,0xb98e88a9,0x3a02672d,0xbaa124a8,0xbb012325,0xbb8e7f7b,0x37b55792,0x3a138ce1,0x3934788c,0xbafd3502,0x3b9a752a, -0x3bbb1c7f,0x3afc1224,0xbb255f0a,0xbc0faf54,0xbba17bdd,0xbb127567,0xba73b854,0xbb20961f,0xba85841f,0x3b589d12,0x3b9e6be8,0x3b8d0668,0x3b869b5e,0xb9ce318d,0xbb3eab30,0xbbdae984,0xbbbf3aeb,0xbbb49802,0xbb639ca6,0xbb6594a7,0xbb83c66a,0xbb3bc762,0xbae27a06,0xba28625d,0xba403ca1, -0xb8ee0d3a,0xb9c40866,0xbabc0d0c,0xb8aac4bd,0x3a42b77b,0x3ae85d1a,0x398b2797,0x3897d8da,0x3baae19d,0x3b5b5e99,0xb9dae7ea,0xbbe2f104,0xbc8abf4c,0xbc41146c,0xbc1f604d,0xbb5bc2dd,0xbadbe736,0xba6e55c3,0x3b004dc7,0x3b70da14,0x3b3f7d3e,0x3b404a25,0xb85816ce,0x3909e9be,0x3a5bc491, -0x3a93e08c,0x3a6480d5,0x3ab7a7f6,0xb94983f1,0xbb0b5e38,0xba39f763,0xbb13711e,0xbb6378eb,0xbb572871,0xbb077789,0xb9818309,0x3a9118d6,0x3ab619c0,0x3a50f5e3,0x3af4bffd,0x3a5e8bb7,0x3a7bfb87,0x3a88b70b,0x3b322a74,0x39e20e90,0xbb3a5da9,0x3bc2f482,0x39713407,0x3aaeda89,0x3ad7b105, -0x3a86e485,0xba3afa97,0xbac0bde7,0xbb46ac1b,0xba96a7eb,0xb94ea0a6,0x39c8d943,0xb9f61307,0xba04c523,0xb9971026,0xb97c8618,0xba2cb4a6,0xbb03a09f,0xbacf0bcd,0xbb0193b9,0xba9c6c02,0xbb2dbfbd,0xbb7bef43,0xbaeaaeba,0xbb2d6f75,0xbb26acd5,0xbb0f46fc,0xbb0d107a,0xba40ef94,0x3a058188, -0x3af7f886,0x3b2b5a23,0x3b5d6acd,0x3b8d8526,0x3b6d1c3b,0x3b68ce88,0x3b09ab32,0xba94902c,0xbb2b41e2,0xbb89d83f,0xbb0b6e55,0xba9dd252,0xbac3a55b,0xbb12184d,0xbb4eee7a,0xbb0e3502,0xbaf68c7c,0xbaeacfb6,0xbb07b83b,0xbaf5a943,0xbab64ab0,0xba91e73d,0xb9f7b6d9,0xba1867ee,0xbaa95c9c, -0xbb12f939,0xbb4294c3,0xbac9dc91,0xbace9694,0xbb2a8ff5,0xbb00f769,0xbb1d9614,0xbb31816d,0xbafb6e69,0xbac0f4a9,0xbab33cee,0xbab04ad1,0xbac28ca2,0xbaed363e,0xbaf3235e,0xbb0c64ea,0xbb04d677,0xbb02a700,0xbb090b05,0xbb8163a1,0xbb5c69a5,0xbb3e0a81,0xbb408dde,0xbb4024d1,0xbb39228e, -0xbb36f117,0xbb198f2d,0xbafd1a70,0xbab7ee6f,0xba210f22,0x36539ae0,0x3a16e9f2,0x387f01e4,0xb9347246,0xb9b02422,0xba76f86e,0xbb1b9d25,0xbaf8a986,0xbaea07c4,0xbadaefc6,0xbb19f110,0xbb09db4a,0xbb132c56,0xbb25d022,0xbb1b1ddd,0xbb962e7e,0xbb21b099,0xbb9568df,0xbb7a4d7b,0xbb964a4c, -0xbba52c04,0xbb8c642a,0xbbb25d20,0xbb97f39a,0x3a949a70,0xbb286524,0xbb268a43,0xbb18561e,0xbafa1713,0xbb0953c6,0xbafb9b21,0xbb08f7e6,0xbad0db97,0xbab54ee2,0xba946088,0xba8016e7,0xba496e59,0xb9836f86,0xb9e5b8d8,0xba31afb0,0xba6dc0ea,0xba55630f,0xba1aee97,0xbaa253df,0x38f7707d, -0xba68a968,0xba4d0b87,0xbacc6ed9,0xbabb004c,0xbae2511f,0xbae90a65,0xbaef54de,0xbaa41744,0xbb0881e4,0xbb4a35a8,0xbaaf1f2c,0xbb1b4e2f,0xb9fc4e5f,0x3a956a0f,0xbb23cef3,0xbb130bd5,0xbb66d87f,0xbb407b30,0xbb454168,0xbb4408f0,0xbb483cb4,0xbb40398e,0xbb3f65fe,0xbb390b1b,0xbb31db11, -0xbb276d7f,0xbb1bd5aa,0xbb124878,0xbb0b971b,0xbb1529f8,0xbb1689c8,0xbb1c66dc,0xbb267af0,0xbb28bf62,0xbb442e11,0xbaf529f8,0xb93569c9,0x3acc3aea,0xbb0d3e5b,0xb9c84510,0x3adc884b,0x3af24bf0,0x3aabac25,0x3a57975f,0x3a9705a4,0x3a86acdf,0x39452a64,0xbad59c82,0xbb47ee70,0x39c8cad5, -0xba09e117,0xbb8a353c,0x3b041d0d,0x3a41006c,0x3b74c387,0x3b0b6e62,0x3b016122,0x3ae74908,0x3add436e,0x3ae599e6,0x3aec5613,0x3b00d62c,0x3b05e228,0x3b010107,0x3b0d4a74,0x3b157649,0x3b26865d,0x3b10db99,0x3b0812ba,0x3aebd89e,0x3ae84c21,0x3abdbf3e,0x3b09786f,0xbab7b2e5,0xbb5226b3, -0xbb96359c,0x386a52f6,0xbb310052,0xbb971f84,0xbb973138,0xbb8fd09e,0xbb82fcdc,0xbba51176,0xbb9da3e2,0xbb85e34b,0xbb6018ac,0x396b8d48,0xbb76f8e9,0xbb7989b7,0xbbc732ce,0x3ab11d99,0x3b2ea2c3,0x3b14fb85,0x3adaf055,0x3a99974a,0x3ab33267,0x3b00b7b3,0x3b420b67,0x3b603a89,0x3b31ff71, -0x3b44e4dc,0x3b5c6163,0x3b88fd17,0x3b571ce5,0x3b37cbf1,0x3afe5cd2,0x3ac0ae7a,0x3abb44f0,0x3b12c31b,0xbb6253c6,0xbab0f657,0xbae36337,0xbad5325a,0x3a6ed05d,0xbaadfc1e,0xb995ef3f,0xbaf4e891,0xbaa2d506,0xbb013e6c,0x3ac35f2f,0xba2ee169,0xbab88895,0xba2fb597,0xba7ac8bb,0xb9db4777, -0xbafb3ab7,0x3b9033d0,0x3b7f9d6d,0x3b3da8c2,0x3af6629f,0x3a8fad25,0x3a52fe8d,0x3aeda2f5,0x3b4d9d8f,0x3b7237fc,0x3b4ed2fb,0x3b8632a3,0x3b9e1b20,0x3bc520f9,0x3b950b34,0x3b531d9b,0x3afaf3e5,0x3a435604,0x3ab584d3,0xbaa98c7b,0xbbb01b77,0xbb091a9b,0xba949452,0xba54982e,0x39cb8a55, -0xb9c783b4,0x39a28b35,0x3b1f62f6,0xbb089b0a,0x39a3d565,0xbac5306b,0x3acbe8e3,0x39759e2e,0xb94f5bdd,0xba165278,0x3b1c42a7,0xbb3cf3d4,0xb99f97e0,0x3b9d8c46,0x3b2dc6c8,0x3ae9c70c,0xb947fa78,0xb8d1a4a6,0x3a7a1000,0x3ba4add6,0x3bc12272,0x3b729ca8,0x3ba64d4e,0x3bb82102,0x3c0b9aa4, -0x3bbadd53,0x3b78069b,0x3ab72ef4,0x3951575c,0x39911e9c,0xba830633,0xbb38b28e,0x39e30646,0xbae1a772,0x3b3ecab3,0x3a7b5b28,0x3b050016,0x3a55e2da,0x3abbe098,0x3a6d2d51,0x3a89d873,0x38693109,0x3b1b17c4,0xba39b072,0x3a6a889a,0x3b17bf13,0x3aeab590,0x3b560139,0x3b59ff6f,0x3bf2bc8b, -0x3b88aa6f,0x3b561a0d,0x39b25548,0x399e4f28,0x3ab8292a,0x3b7c141c,0x3ba27504,0x3b910916,0x3bc83217,0x3c0aff57,0x3c2df6b1,0x3beaab07,0x3b8c2060,0x3ab7b92b,0xb9fa6ff2,0xba859f00,0xbb0dfd7f,0xbbfb82ef,0xbac60acd,0xbb16bc8d,0x3abaa9e4,0x3b248d30,0x3b01f0bd,0x3b4e1211,0x3b1229c1, -0x3b517629,0x3b506680,0x3b3eb54b,0x3b80defe,0x3adfab5f,0x3a45ea47,0x3b2db8cc,0x39154911,0xbc0ba48d,0xbc028251,0xba9ff0aa,0xbb6db161,0xbb57180d,0xbb4a743d,0xba0ee523,0x3c0654f2,0x3c19961e,0x3c2dd0ab,0x3c63ad5b,0x3babc1de,0xba834e95,0xbb80744f,0xbaad75e5,0x3acc9c81,0x3beff027, -0x3c03b226,0x3c0b971e,0x3b9c2841,0x3ac92222,0x3b86423e,0x3b51925a,0x3abb1044,0xb82c84fe,0xbabf61e2,0x3ba0ae7a,0x3babc96f,0xb9569c00,0xbac2a382,0xbb958c1c,0xbbc109f9,0x399850a4,0x3b283f73,0x3970a70d,0xbaa56117,0x3a4b3218,0x3c14a430,0x3c3c6b03,0x3bbce699,0x3b5eb928,0x3c022187, -0x3c07f60f,0x3b8b4ea1,0xb9a54623,0xbac46ca9,0x38974a55,0x3b83f3a8,0x3bd0390c,0x3b5a2a2f,0x3a91bf76,0x36bbe766,0x3b10dd92,0x39b05895,0x3ae06616,0xbb403f49,0xbb5a1203,0xba9214df,0xba672baf,0xb80ec2f9,0x3a8c3259,0x3ad23854,0xba0cb8e9,0xbb091396,0xbb35bfaa,0x3acd1030,0x3b438b9f, -0x3ae9c1d1,0xbb629ebd,0xbbdbafe9,0xbbf845ac,0xbba4dfac,0xbaebd048,0xbc1b77c2,0xbc156d2e,0xbb81dbe5,0xbb0bc318,0xba0eb986,0xb987b181,0xbb1502ff,0x3c205ccc,0x3c36487d,0x3b10da7b,0x3be5333c,0x3bba0025,0x3b824305,0x3b8830dd,0x3b5731d3,0x3b5f3eb9,0x3b284f55,0x3b597508,0xb965b659, -0xb9dec987,0x39616882,0xb89e21c2,0x39baeb21,0xba4257f7,0x38020f8a,0xba7211ee,0xba3d6dcb,0xb8192908,0x393dc960,0xba13305b,0xbb03d7e4,0x3aa2302f,0xba19aea8,0xbbaabe29,0xbb1135f1,0xbb83969d,0xbc0e2f95,0xbbdb0af7,0xbb873e86,0x3b242be8,0xbb062ab8,0xba98c7e1,0xb9eb4053,0x3c18c351, -0x3c3368b7,0x3b8dd87e,0x3bbf22ac,0x3b92ee61,0x3bbd6a4b,0x3baf592f,0x3b949610,0x3b16d511,0x3adff6b1,0x3b017ad5,0xbaba89df,0xbaebb8ea,0xba57fc97,0x39a0d543,0xba826bab,0xb75f39b9,0xbaa34229,0x39959d0a,0x392dd0ee,0xb7f2bc4f,0xba109ae1,0xbb0657d4,0xbb6e99b8,0xb92a2815,0x3b100a1b, -0xbaa3ef28,0x3a4e8cd1,0x3b945c35,0x3c2347da,0x3c1c0ecc,0x3bbe8ebc,0x3c071aad,0x3bc7ab0c,0x3baf88c5,0x3b64c361,0xbb1bea43,0xbb67430d,0x3b185465,0x3b503443,0x3b944260,0x3b8c85ec,0x3b23b5f2,0x3ae58111,0x3927a14c,0xb98c296b,0xba897460,0xbb292ee8,0xbb49da77,0xbb362bc8,0xbb4e0c8e, -0xba82a7a4,0xb940560b,0xb8364da0,0x38b85678,0x388bb6c7,0xba966e6e,0x399ca083,0x3a4d49ab,0x3b1d4a1f,0x39e33074,0x3a75d0e1,0x3b800c5a,0x3b5e7485,0xbc22ef4d,0xbc4422f5,0xbba90737,0xbb898b75,0x384884c3,0x3bae0546,0x3c0a723e,0x3c0b14e5,0x3c1d2a77,0x3c267b2f,0x3c0f64a9,0x3be3bf7d, -0x3ba3011f,0x3b973f66,0x3b43485e,0x3ad56f60,0x3ab082e8,0x39a9d9ce,0x3871e6bc,0xb8e89caf,0xbb606e20,0xbb66b2f4,0xbb3175e9,0xbb62d128,0xbaf5fc4b,0xb85f9ea8,0x3a1aadaf,0x3aa6929d,0x3a595555,0x3ae949a5,0x3acb2ca0,0x39b994e8,0x3adee15b,0x38d9608f,0xbae17101,0xba5d8eee,0xba886b1a, -0x3b89806e,0x3bf03d3a,0x3bd8eb8b,0x3c033a15,0x3bd778fa,0x3bd1f2b4,0x3bb7f8b8,0x3b50e66c,0x3ac7d15c,0x3ab52217,0x3ab47a30,0x3aa08d2e,0x3a8ce69f,0x3ac32b4f,0x3ae5023c,0x3a98ca04,0x3aa59fdb,0x394726c9,0xbb2036cb,0xbb1e1d15,0xbaf29019,0xbb1b6a1e,0xbaf6dd07,0xbb03effe,0xbb1d0f02, -0xb94cd044,0x3951082e,0x3af3b1f6,0x3b21e14c,0x3b72ec43,0x3b8a5fc5,0x3b7cb8a1,0x3b9c98d8,0x3b77195e,0x3b508bb2,0xbb5d9077,0xbb22b124,0x3aa566b5,0x3b03573c,0x3b64651e,0x3b5473a6,0x3b52270f,0x3b684ed8,0x3b15bacb,0x3acd3140,0x39cb3c3f,0x3969dff5,0x3997a4ec,0x39fbcc51,0x3a4a16c6, -0x3a6d207e,0x3a8a1d59,0x39bbe9f2,0xb9a751f2,0xbac9433c,0xbb3e487c,0xbb4043ce,0xbb1936e0,0xbb3c672a,0xbb1621f9,0xbb22e6af,0xbb273430,0xbaf37616,0xba67017b,0xba28d631,0xba62ea13,0xbad04791,0xba848b2d,0xbaf3e440,0xbb7ee703,0xbb4a6d18,0xbb9d8d82,0xbac66d6c,0xb9eae2c4,0xb9c2dd46, -0x3a2f6771,0x3a6602f9,0x3aa21953,0x3ac301c8,0x3ab2bff9,0x3ab90731,0x3aad0bce,0x3ac26653,0x3aa2a252,0x3a673e3c,0x3a3b0566,0x3a09ba33,0x3a49262a,0xb9170b09,0xb7cd2e76,0xbab37cf9,0xbaee2467,0xbaebbb10,0xbaeff01c,0xbb00d4c0,0xbb18361b,0xbb3697b1,0xbb342c3d,0xbae6517a,0xbb8f6d79, -0xbb2efa97,0xbb918efc,0xbb5cdffd,0xbb8ab249,0xbbc46641,0xbbaea01e,0xbb6c2e68,0xbb3e9e9d,0xba4495b8,0xba46c3a6,0x396b6421,0x3a755727,0x3acad3cd,0x3b1f3bc2,0x3b567cc7,0x3b475e21,0x3b22cbb2,0x3b0a6d37,0x3adbb122,0x3aafc731,0x3a819854,0x3a51cc29,0x39e8b12b,0x393cd431,0x38dbfd98, -0xb761fcfa,0x3821bbf1,0xbaa5064b,0xbaa6af3d,0xbaf2e436,0xbb0343cc,0xbb1a868d,0xbb1a27ca,0xbb443e28,0xbb3ebe08,0xbb4f06f5,0xbb56ada1,0xbae97d63,0xbb8f5560,0xbb45f588,0xbaaba04d,0xbb2a0627,0xba8edce6,0xbb1e75e6,0xba11960d,0xba2c21e4,0xba024797,0xb9bfc5d4,0xb9925234,0xb93f84c4, -0xb6a9eb1a,0xb901e249,0xb7112507,0x385dad71,0x3859549b,0x3815fd70,0xb7a6a90f,0xb8883cad,0xb876cc13,0xb8c9a672,0xb9352e38,0xb99452e6,0xb87021ec,0xbacb491e,0xbb4b0f28,0xbb72ba79,0xbae9ddd1,0xbb5cfc56,0xbb8a495c,0xbb96d75c,0xbb8d9cb4,0xbb8f852e,0xbba21079,0xbb9d34bd,0xbb93753e, -0xbb72987f,0xbb1c367f,0xbb943c60,0xbb89cd52,0xbaacaf42,0xb95f7aea,0x3ab2063a,0xbaf3b9fc,0xb984e964,0xb9531ebd,0xb96a8a6d,0xb9c6aa9f,0xb9ee7145,0xba28a1e3,0xb9e7a461,0xb9ee6180,0xba2e1180,0xb9d222f5,0xb99a962f,0xb8556b28,0xb9e49192,0xba1f9e5a,0xba4c4f40,0xba5b2f95,0xba3c59e4, -0xbaa80d81,0x3b022ee2,0x3b4b1b57,0x3b0f2147,0x3ae395b4,0x3b61e58a,0x3b2c4d09,0x3b378bb8,0x3b25bcda,0x3b0e3bd6,0x3b510bba,0x3b54bce1,0x3b5b1845,0x3b6f6c26,0x3aaa9e42,0x3b28d135,0x3b846f6d,0x3bb54679,0x39588d35,0xb9c77f54,0x39449fbe,0x3946e105,0xb9dfd2a6,0xba21466c,0xba9db4fe, -0xb7ba8129,0x3895cc46,0xba339c3f,0xb8cfa628,0x39b88863,0x3aab5085,0x399ff710,0xb9d6181d,0xba9ca3e6,0xbaa1f382,0xbad7d802,0xbb171f7d,0x3b03434d,0x3a5ea31a,0x3aa9db74,0x3b4493b0,0x3ab90060,0x3aabfc22,0x3ad5fec2,0x3b2792d9,0x3a6d5ba2,0x3a9cdcf6,0xbaf86a65,0x3af2e6d9,0x3accd57c, -0x3aed103c,0x3b49556e,0x3afc2d2a,0x3b99165c,0xba908ac2,0x3a33c238,0x3ab95c7d,0x3aa7fbcc,0x3a26cd54,0x39c1f0ef,0xba777c52,0x3a1586e0,0x3a05c238,0xba1e3ebf,0x3a3122f4,0x3ab8be47,0x3b420093,0x3a43dd4d,0xb95f11b9,0xbaf1faf1,0xbaca84bf,0xbb4b37a4,0xba92e868,0x3b0dd5b9,0x39ac7acf, -0x3a8a9507,0x3b2f28c7,0x3b059917,0x3aa437c3,0x3aac42f7,0xba9f126c,0x3aa7b78e,0xba9a1aed,0x3aa32938,0x3ab0f701,0x39fd1568,0x3a8842f2,0x3b6d0c82,0x3a68839c,0x3ba860cc,0x3a2cb7c9,0xb91ffa42,0x3b0795a5,0x3acdae41,0x3a4964e1,0x3935b165,0xbb23e6ed,0x3ae85b32,0x3aecb4d7,0xba6e3e70, -0x3abb57a3,0x3b170605,0x3bc9951f,0x3b1658e1,0x39b4e6b6,0xbb0de04c,0xbb3abfd6,0xbb84c88b,0xbb3f1814,0xba7f735e,0xbaf833e2,0x39699f17,0x3aad01e1,0x3b382f7e,0x39482367,0x3b3c7b4f,0x3aa596d3,0x39108a49,0xbab9f9c5,0xb885a820,0x3ab6030e,0x3abf6fc4,0x3ab3c092,0x3b664ac7,0x3af10328, -0x3b2c5b71,0x3b054b8f,0x3a94df4a,0x3b9139ab,0x3b6f624d,0x3b446c06,0x3b3dff3b,0xba0467a0,0x3af6ee4a,0x3ab8d7b0,0xba753899,0x3aea2bf8,0x3b849c9f,0x3bedcfa8,0x3b401445,0x39259acb,0xbb342603,0xbb419ef3,0xbba1c935,0xbb8b1add,0x3a6ba2cb,0xbb0115e7,0x37eee2be,0x3ac4c89b,0x3ac77bac, -0x3aee96bc,0x3ad19760,0x3adfe2a2,0x3ab588d9,0x3b2fa088,0x3ab7df6f,0x3b612c8e,0x39deb62d,0xb9ce0451,0x3b35df28,0x3b68138f,0xba935ed8,0xbb579de2,0xbc1bdd4d,0xbc0c8c2e,0xbc027caf,0xbbebb8a8,0xbba32a9d,0x3b5071ca,0x3a9211b8,0x3b0f5c50,0x3bacaeaa,0xbb6e32c9,0xbc1268b6,0xbc2653d8, -0xbbd3c5e4,0xbb183542,0xba8b4d62,0x3b2407a9,0x3b88d9c4,0x3b9c9e5d,0x3bb0a5c0,0x3aebc0ca,0x3b9603c5,0xb9d21100,0x3a74478e,0xbaa4ead0,0x3b944a60,0x3b92427c,0xb9ba3e1f,0xbac453fa,0xbb83f8cc,0xbb974ba0,0x3a438231,0x3b9899bb,0x3b9c7e1c,0x39abab2f,0x3b8034c0,0x3ba213a3,0x3b4802b9, -0x3b396270,0x3ac60ee0,0x3c155182,0x3c3033f4,0x3bccfaa4,0x3a2c1f24,0xbb1a6bf1,0xbb0f2b79,0x3b85a43b,0x3be696ae,0x3ba88536,0x375f58c1,0xbb36eb37,0xbb0721b2,0xba44e145,0xbae6ab43,0xba45b784,0x3a83d794,0x3946a893,0xba393a4d,0xba13f3d5,0xb92dd0db,0x3a6e5b5c,0xba8ffdf0,0xbb11b78b, -0xbb1b08d3,0x3abeb1d8,0x3b0680b7,0x3a70adcf,0xbb5a93c5,0xbbf5c79f,0xbbeaae3a,0xbb0b3673,0xba3075cb,0xbc660a5e,0xbc2fc5ab,0xbb8984f8,0xbb69d146,0x3a9072c8,0x39991800,0xbbc208ef,0x3b59424d,0x3b6bc5f8,0xbb6810c3,0xb8ba1e34,0xb95351cd,0xba57ce1f,0xbab3857e,0xb9c955f6,0x3a8c655f, -0x3a91ef84,0x390d76b0,0xbaa04536,0x3a71eba4,0x39d52c8f,0x3af4bf46,0xba002c78,0xba338e65,0xba15ccec,0xba28b4e5,0xba9ecbc9,0xb9742de8,0xb984ae35,0xba1542dc,0xbb02c902,0x3a450b98,0x37a25801,0xbbaee53b,0x3a122e8f,0xbb026b87,0xbc1d0730,0xbbd858a7,0xbb67eb82,0x3af99a4c,0xbb63341b, -0xbb9e4fd5,0xbbf9b7af,0x3b41ef04,0x3bc0373c,0x3abffedd,0x3a5fecec,0x39fd8083,0x3a831ed8,0x3aacaf4d,0x3aa8c5d9,0x399c7ff8,0x3a0b504e,0xbae7942d,0xbaedb931,0xb99bd73b,0xba898ef8,0x38935f70,0x38d45e7e,0xba1d86b5,0xba8abbca,0xb8f91e88,0x399f0ee4,0x3a0b8b4a,0xbaaf6efd,0xbb05d753, -0xbb6c9c5c,0x3aafb9d6,0x3b0e4aea,0xba403d2d,0xb944ce55,0x3bec2ef7,0x3c51480d,0x3c3366ae,0x3bf806c5,0x3b89cf6a,0x3b968b6a,0x3b871279,0x3a77c375,0xba17dcab,0xba4212dc,0x3b66c506,0x3bb36cbf,0x3bb88dec,0x3bb3944f,0x3b1ffce2,0x3a705aed,0xbb112bdd,0xbb285905,0xbb6512e2,0xbb2e1254, -0xbb412520,0xbb51d999,0xbb0c5eee,0xba60e694,0xb90c1bd0,0x3912fa9b,0xb95b547c,0xb9c7a713,0xba75ddfa,0x3a2cd470,0x3a9eedd2,0x3b059e22,0x39bff09d,0x39f22531,0x3ba0251e,0x3b9b27b5,0xba26b9c0,0xbb945f2c,0xbc15c41f,0xbb9c4bd9,0xbb1bf172,0x3b7483c2,0x3bab6f93,0x3b9196d3,0x3bdf13ed, -0x3c124f1a,0x3c14b064,0x3c07c683,0x3b9da4bb,0x3bae466a,0x3b542d58,0x3aec0bbc,0x39f570c4,0x3a3b536f,0xba4d2ba5,0xbb0f0bd1,0xba32d96f,0xbb077615,0xbb710a3a,0xbb4ca765,0xbaf3f9dd,0x3a141cc3,0x3a7d7ad7,0x3a56ff51,0x3a605afa,0x3b08c1be,0x3ac68848,0x3af4e5a3,0x3a7c516f,0x3aecd89e, -0x3a8628c0,0xbb1a0243,0x3bd82deb,0x3bd3d641,0x3be11bfc,0x3bc70ed4,0x3ba32c7e,0x3b39252b,0x3b07939a,0x3abc94c9,0x3a7f082b,0x3960f8d9,0x3979261a,0x399ed7a5,0x3a529c1c,0x3a908a6c,0x3aab4146,0x3a6a22ea,0xba3f3fba,0xba77e466,0xbada90fe,0xbaee0514,0xbb145a48,0xbb3e6946,0xba03946e, -0xbb063361,0xbb0c9984,0xbad59e76,0xbabfcdd3,0x39ca5360,0x3ae13f15,0x3b58b7be,0x3b82e8fa,0x3b94b117,0x3bb2619f,0x3baa9298,0x3bc30ae7,0x3bc166e9,0x3a5cb199,0xba6d021d,0xbabe0a5d,0x3a0fa68a,0x3ace9df7,0x3ab0cf17,0x3a10b148,0xb8e3d250,0xb9f63c1f,0xba21919c,0xba82d16f,0xba9b3a54, -0xba90476a,0xba54296d,0xba052ef6,0xb9a07f40,0xba1a0581,0xba91255d,0xbb00da05,0xbb1e3ed8,0xbaa12d1c,0xbad543dd,0xbb136cd6,0xbb03cbab,0xbb2b517b,0xbb3cdad8,0xbacb2b4a,0xba8ac5bd,0xba4ef497,0xb9a09295,0xb9829d73,0xb90c4e0d,0xb9994685,0xb9bebad7,0xb974e597,0xb9b5d1d2,0xbad3c61d, -0xbb228303,0xbb0c0ba5,0xbab101ab,0xba86ee16,0xba5f4cc2,0xba1637a7,0xb992faf1,0xb94494b9,0xb96b6107,0xb993e462,0xb949209b,0xb964b647,0xb8242c10,0xba1f725d,0xba5caf00,0xba8519ff,0xbaa950a2,0xbb1fe810,0xbad466c6,0xbab9f8d0,0xbaf84024,0xbb155069,0xbb0f8aea,0xbb0fbb2b,0xbb16e93b, -0xbb2b07b9,0xbb6d1f51,0xbae4996e,0xbb6bad06,0xbb3c6924,0xbb61ae91,0xbb577509,0xbb67c20d,0xbb7de6de,0xbb5f010e,0xba13a51c,0xbb2f427f,0xbb0e4cc2,0xbae1172b,0xba8e18aa,0xba7481fc,0xb9f17269,0xb94c65c8,0xb9cb2054,0xba140b65,0xba1f455d,0xba301c0d,0xba248521,0xb9dcb765,0xba1c5bbb, -0xba69752d,0xbaaf00c5,0xbab71333,0xbad1c4ea,0xbafa7fb9,0xb9a6d8dc,0xba788b63,0xba2355d7,0xba9dccf8,0xba9a78fc,0xbaa5c76b,0xbaaef9ce,0xba919641,0xbab6b137,0xbb0126e7,0xbb4de80b,0xbb0dc456,0xbb1f7153,0xba9e9306,0xba003ac1,0xbafa8cb2,0xba5bf9e0,0xbb259d87,0xbb0df76a,0xbb0b2254, -0xbb05d2b6,0xbb059b87,0xbaf81939,0xbae39611,0xbae2c626,0xbadc84fa,0xbad9c579,0xbad7a298,0xbad9a065,0xbadf1ed5,0xbaf020ce,0xbaf3af5d,0xbaf9f3c3,0xbb01a9dc,0xbb033ca1,0xbb234e6c,0xba466976,0x39864078,0xb84e4c3e,0xba5f6da1,0x396c35b0,0xb8eac837,0xb912670d,0xb9dc0695,0xba39970b, -0xb9cd4cc6,0xb9924b35,0xba4e8339,0xba560055,0xbad963a1,0xba766a01,0xb9774fd2,0xbb3faf9c,0xba79e4bb,0xbb143c78,0x3a1d346d,0x36ea56a5,0xb9255b3a,0xb9448237,0xba22fdbe,0xba362d20,0xba370efa,0xb9ede996,0xb9d25bc6,0xba01be5b,0xb96afe72,0xb8796390,0x395de711,0xb89c2a29,0xb995a6be, -0xba12cfc3,0xba23d1c3,0xba35625d,0xb9f17f2f,0xbb35a75e,0xbb34320d,0xb88c9bcf,0xbb0ac491,0xbb2b9546,0xb9d91c2b,0xba04c029,0xba06978d,0xba4a3167,0xba9b41c6,0xba9cc105,0xba8d7aea,0xbb47eb3d,0xbb19a4db,0xb93b96af,0xbb346492,0xbb280c48,0xbab9defd,0x392dc094,0xb8a92e50,0xb8ef4bc9, -0xbaff5ffb,0xbb19f39b,0xbb04ad89,0xba413911,0xb9bdb727,0xba7067be,0xb9d49bfc,0xb82510b9,0x3a2cb817,0x385faea5,0xb9e7ed16,0xba9cd111,0xbac0463d,0xbab6f088,0xba84b827,0xbb352232,0xbaeba1fd,0xba1cc5db,0xbaf67d64,0xba93564f,0xba3d5ba8,0xba998e9d,0xbaf31083,0xbb165987,0xbb2da6a6, -0xba72ba28,0xba445220,0xbae29368,0xbabbb1aa,0xba3a2152,0xba6fde06,0xbb3d24da,0x3924b3a6,0x3adc9d5f,0x3a20c9ca,0x3a46d9df,0xbb106054,0xbb5452c1,0xbb32e094,0xba9bbb68,0xba1acf08,0xbaa17b8e,0x38c9c415,0x3a6f59cd,0x3b1a1049,0x3a7b1ad4,0xb9b7bea1,0xbb00ea88,0xbb226425,0xbb09ada5, -0xbb4e810c,0xbb926b05,0xbb0cfea1,0xbad2aea6,0xba6b3923,0x39741be7,0xbacc4977,0xb89af6d4,0xba424505,0xbb7f41c5,0xbaf13187,0xbb2aec90,0x38eadbae,0xbacaa105,0xbad1cad8,0xb97c692c,0xba7a5e61,0xbb37921c,0xbad3a5a2,0x3afbfd8f,0x3a963d5f,0x3ab6d077,0xbb6748c9,0xbbb3bd3c,0xbbabfd7f, -0xba796b77,0x39032623,0xbae51d38,0x37f62421,0x3a4fc29e,0x3b598524,0x3a8835f1,0xba017dc5,0xbb396afa,0xbb5fd90d,0xbb4838b6,0xbb63e5db,0xbb64fa79,0xba42772a,0xb9a2e42d,0x3b12449a,0x3a97827d,0x3a5cdbf3,0x3a21c547,0x3a781d53,0xba9839dd,0xba63b5de,0xbac1b4c1,0x3a97ce52,0xbac5fadb, -0x38bf5b5a,0x3b00783c,0x39bae0ea,0xb9f96d4a,0x39e8f54f,0x3b9f3ca9,0x3b29cbb9,0x3b6a6361,0xbb48b8f3,0xbb8f6d79,0xbb95faae,0xbb0a616e,0xba78d292,0xbac0d8df,0x3a4c58e6,0x3b51e7e1,0x3bc82f8b,0x3b2f0ccc,0xb9d2a2c3,0xbb736fc1,0xbb9845cc,0xbb95a20a,0xbb8d4334,0xbbc2db38,0xbac67784, -0xba7cfc28,0x3acdcd08,0x3b1eaa13,0x3ae4e77f,0x3b4156c5,0x3aea139f,0x3a49cca1,0x3ad5f41e,0x3aad3793,0x3b4d801d,0xb802d782,0xba6967d2,0x3b3b00d1,0xba8aca08,0xbc14e24e,0xbc36945f,0xbbeed247,0xbc0f5399,0xbbea7b60,0xbc0447be,0xbbf4e7c5,0xba4143c5,0x3b14a373,0x3bbf0762,0x3c18d6f8, -0x3b3cbdec,0xbb2c1f56,0xbbab7617,0xbb8db560,0xba9fd233,0x3ba22f6a,0x3bb294a9,0x3bbb0323,0x3b77b704,0x3b2dfc16,0x3b622e82,0x3b471fa1,0xb84376e2,0xba442812,0xb9d790c6,0x3b619a5e,0x3b82924d,0x38ff660e,0xbacd57c9,0xbb840e7e,0xbba6c0e1,0x3a5ceaf1,0x3afccfaa,0x39928caa,0xbba2bdca, -0x3ae399ce,0x3c01288c,0x3c1039d6,0x3b257529,0xb979b77f,0x3baad133,0x3beb483d,0x3b8a4237,0xba95bbe1,0xbb68d015,0xbb369843,0x3aeaa0ea,0x3ba1b802,0x3ba067f9,0xb9f03c1f,0xbb668a1c,0xbb95503b,0xbb88ca1a,0xbae7040e,0xbb285f64,0xba66bb95,0xba2164eb,0xbadc614a,0xba892f02,0xb95e5210, -0x3aa38416,0xba9a1ef9,0xbb22e43a,0xbb122050,0x3a9ffaa3,0x3b0b5976,0x389c3a1f,0xbba142e3,0xbc04b707,0xbbfa3b5e,0xbb6ac85e,0xbb66c73a,0xbc8200b9,0xbc10b2a0,0xbb9f4f1c,0xbbfea9c0,0xbbd743db,0xbbedb5cd,0xbc567ff2,0x3b868674,0x3bfec09e,0xbaf4f27e,0x3add381f,0xb99b3f6f,0xbaa8956e, -0xbacf33b3,0xba860217,0x39c2ae89,0x39ace2f7,0x3aad7741,0xbadac72c,0xba6d3ffc,0x39247733,0xb9bbae10,0xba58146c,0xbaccac16,0xb9d8d944,0xba897a9f,0xb90b24da,0xb7c36165,0xb9ba4abd,0xba6b3f39,0xbaf0e289,0x39b67fc0,0xb9f7dc33,0xbbddff8d,0xba89a419,0xbb80f606,0xbc38899c,0xbbf9afd5, -0xbbf43977,0xbc10ba2c,0xbc448f19,0xbc4aef73,0xbc4ab8a9,0x3b02ef2a,0x3bbeb55d,0xbad75f00,0xba5826cc,0xbb1b7835,0xbac97288,0xb9c111fb,0x3a009b85,0x39f686ba,0x394642d3,0x39027276,0xbb1b0076,0xbb34959b,0xbaa02456,0x38c577f0,0xba9def0d,0xb9de04f5,0xbac0afef,0x399d93da,0x39a52625, -0xb9ce803f,0xba5d0585,0xbb189ad5,0xbb4f73a7,0x3a685614,0x3b39823f,0xbb216dbb,0x3a13e701,0x3c02ea86,0x3c5c009e,0x3baa8a4f,0xbb0336c8,0xbbcf706e,0xbbb8934c,0xbb69c450,0x3a90a0fb,0xbba629ba,0xbbc33f46,0xbb1eec42,0x39f0080f,0x3b1f286a,0x3b679588,0x3a0cce1a,0xba46e6f7,0xbb342d37, -0xbb3a5d3c,0xbb2edd1f,0xbb59a6f5,0xbb4be35b,0xbb3f3ee5,0xbb37fd7f,0xba94cc80,0xb971e6c6,0x39918dcc,0xb980df68,0xb99c14ed,0xba64c7c7,0x3a2ef879,0x3a8102e9,0x3b045108,0x39b90838,0xb9b561fd,0x3b71d583,0x3b8f273d,0xbc27e1c3,0xbc5b6c6b,0xbc8361c2,0xbc6cb442,0xbc10caa4,0xbb93dd92, -0xbaf62f05,0xba14a677,0x3b4126b9,0x3b96f4d5,0x3b1d2c9a,0x3b3e5ed7,0x3aaad733,0x3afbd5c7,0x3ae1b063,0x3a920ab5,0x3a56711e,0xb91c25c7,0xbab55037,0xbb39ff2a,0xbb966962,0xbb93121c,0xbb54187b,0xbb55f063,0xbaea5c5a,0x3872ca5d,0xb8cc393c,0x39bb8374,0x38c94177,0x3a9669db,0x3a39d378, -0x398c2a99,0x38c71722,0x3994c5e1,0xbafe182b,0xbb131a89,0x3b6dfef2,0x3b1fe707,0x3b6ca38b,0x3b24b409,0x3b3b13a5,0x3b0a994e,0x3b2ddfed,0x3adb73f2,0x3ac55c29,0x3a5a7526,0x3a4c7662,0x398239a2,0xba29662a,0xba803c36,0xba6f2041,0xba4f5a88,0xba812b5c,0xba459e94,0xba7ac720,0xbb00e701, -0xbb046d01,0xbaf7058a,0xbb34eef8,0xbb18cc41,0xbb1de0c8,0xbb14056c,0x381dfb86,0x3a45ee22,0x3b07ffbe,0x3b41349b,0x3b6dba72,0x3b8536dc,0x3b7a38a5,0x3b886aa3,0x3b78b6fe,0x3b468dc6,0xbb3423a5,0xbb40d56d,0xbaa47350,0x395f8121,0x3b138fcb,0x3aa62555,0x39b4ffcb,0xba34b336,0xba2d06c4, -0xba287fe1,0xba98f681,0xbabcd5f9,0xbaae6473,0xba96fbe0,0xba83d8ee,0xba184691,0xb9f2d025,0xba8aeb8d,0xbac22923,0xbb1ae9fe,0xbb50a738,0xbb3a9e5d,0xbb3e6297,0xbb48e802,0xbb2bbe6a,0xbb2a7d8a,0xbb19e889,0xba9d782b,0xb9a92cce,0xb927aa8d,0xb9257dfa,0xba1b3702,0xba092b53,0xba904c0a, -0xbb2537f9,0xbb08f4f1,0xbb90a75c,0xbb4a9f81,0xbae8b32a,0xbb0cb1eb,0xbae158fd,0xbaddd141,0xbaa50ac8,0xba98e04d,0xbabfad5b,0xbad4e7c0,0xbae0673b,0xba1ac659,0xb91390ed,0x3973142b,0xb918a76f,0xba01ddab,0xba15eb50,0xbab03818,0xbac61a97,0xbb2b2128,0xbb4af8a3,0xbb2ae5bd,0xbb438915, -0xbb372762,0xbb4d2a80,0xbb70d34b,0xbb46db28,0xbb52a23f,0xbb90977e,0xbb4ed42c,0xbb83d8cd,0xbb4402dd,0xbb8b2c8b,0xbba88f8a,0xbbb78839,0xbb8d133f,0xbb2a4dd7,0xbb3a5a94,0xbb45a3f9,0xbb106883,0xbab61ee3,0xbab160b3,0xba7237f4,0xba266da7,0x385b9882,0x39b9ebaa,0x3a11a10d,0x39a1792d, -0x38934eac,0x375ffc97,0xb9946d96,0xba1084b3,0xba437883,0xba60da99,0xba3e712a,0xbaa1b916,0xbb067418,0xbb1e1517,0xbb3ba63f,0xbb4fc154,0xbb4f001d,0xbb4b6993,0xbb752324,0xbb831c7c,0xbb7075b9,0xbb8efb30,0xbb60639a,0xbb9fb8c4,0xbb96a992,0xbb21d78c,0xbb1fa9de,0xbb645c75,0xbb6dfa35, -0xbb0e7290,0xbb0357f6,0xbb0374dc,0xbb0133e6,0xbafdb16e,0xbae2ec89,0xbad92d66,0xbae8a01f,0xbaeb73d2,0xbadf6586,0xbac88a21,0xbaac1c89,0xba99afb6,0xbaa61786,0xbaadfe48,0xbabc4e8e,0xbaced584,0xbadcddf1,0xbacf8a78,0xbb407cb1,0xbb5a6071,0xbb057df4,0xbb5333dc,0xbb6da925,0xbb11628c, -0xbb1c8c31,0xbb1b9f99,0xbb29d2b3,0xbb3ca6b7,0xbb3d0e25,0xbb3fe3a0,0xbb7bae62,0xbb6a740c,0xbb375e7c,0xbb7d7223,0xbb57d2e2,0x3b36696e,0x3b643f2c,0x3aebd1fe,0x3b01c509,0x3b05337e,0x3b003a92,0x3b0881a7,0x3b0c4ff7,0x3b00aa2c,0x3b0cc859,0x3b0b4970,0x3aea5519,0x3b05594a,0x3b0e9986, -0x3b210dda,0x3b0eccce,0x3b0a9d7d,0x3afaa71a,0x3aef83be,0x3ad2fdb2,0x3accf5c5,0x3b244bab,0x3adf6c90,0xbb0598c3,0x3b50f12e,0x3b137f93,0xbae9844f,0xbad180a2,0xbad9f6de,0xbac61934,0xbaaf80f0,0xba8d61c0,0xb9b759d4,0x3af437fc,0x3b44582c,0xba8dbded,0x3adce8da,0x3975428b,0x3b22d9b0, -0x3b19d18f,0x3b3d6092,0x3b2f6c2a,0x3b46f09e,0x3b55826d,0x3b350a6e,0x3b7ed1c0,0x3b8427dd,0x3b3c527c,0x3b5a9937,0x3b771ed6,0x3b9e23b3,0x3b85cfd0,0x3b6cb090,0x3b2a3367,0x3b0aa850,0x3ac94b1e,0x3aaac9e2,0x3a2281c7,0x3aa0f774,0x3a6bea65,0x3b2ff6ed,0x3b469154,0x39cc99fe,0x3b014c42, -0x3abef490,0x39eff0f8,0x39a77a0a,0x3869f3da,0x3aa21ead,0x3a5f2640,0x3ad34aeb,0x3b225b7c,0x3acf09b6,0x3b60b215,0x3b4d0142,0x3b4401a8,0x3b758831,0x3b57e502,0x3b8d83f7,0x3b986049,0x3b6312ac,0x3ba819c7,0x3b9eaa52,0x3b565a41,0x3b8af6d3,0x3ba6bc3c,0x3bdad1fa,0x3bb40f0c,0x3b9937b7, -0x3b5651c2,0x3b19f233,0x3a9d7f7a,0x3a10792e,0x39b191b0,0x3a2d1faa,0x3b2d338e,0x3b2b0a8f,0x3b06b9c0,0x3ae178bc,0x3a9252e2,0x3aa02676,0x39f8aa54,0xba0663cc,0x3994ed08,0x3aeec31b,0x3a4ee575,0x3a9437e9,0x3b5037e4,0x3b481440,0x3b05dbd5,0x3a819041,0x3b4917a4,0x3b89b2f8,0x3b771919, -0x3ba303cd,0x3bbc007a,0x3b5c1ae3,0x3c01d92a,0x3bfbee85,0x3b865966,0x3bc5f3e4,0x3bd73748,0x3c2d3a7f,0x3c0801d9,0x3bd69562,0x3b68dc1d,0x3af89644,0x39adbf62,0xba1ae946,0xb9df3ce5,0x39e0cf17,0x3ac99bf7,0x3b426d1e,0x3b43ede4,0x3a692ccb,0x3b281380,0x3a328f3b,0xbad47823,0xbb0900cb, -0xbaac9a74,0x3ac2954d,0x379455a2,0x3a3f60af,0x3b949db7,0x3afd625c,0x3b8a8eca,0x3b8bbcc3,0x3b8138c0,0x3bb80853,0x3b9aa2d5,0x3be716c5,0x3c039998,0x3baccd5d,0x3c0347b0,0x3be857ff,0x3b846d73,0x3bbe0434,0x3c058cb4,0x3c3dfb31,0x3c1deb1f,0x3bf07554,0x3b94e397,0x3b254f6a,0xb7fb718c, -0xbafb94e4,0xbaddc6e4,0xb9f64009,0x3ae49113,0x3b2cedd1,0x3b236e2a,0x3acd73cf,0x3b030483,0x3ac8019d,0xb9adf452,0x3a6e21e6,0x397fd8ad,0x3b1cab14,0xb999690c,0xba1c5a89,0x3b8ec64c,0x3b19032f,0xbb894a4c,0xbb0e3b43,0xbb511047,0xbb2b705d,0xba839773,0xba1deaa6,0x3ae904ae,0x3c13a32c, -0x3c01756a,0x3c128d23,0x3c3be8de,0x3b8432a6,0xbb3086f6,0xbbf54773,0xbbad1c94,0xbacb1b02,0x3b167000,0x3bcb3b7d,0x3c15e366,0x3c1b8d04,0x3be75e28,0x3b8afd1e,0x3b855138,0xb9b7e2b3,0x3880c9f6,0x3979adfd,0x3b3f88a9,0x3b40c26f,0xb7608369,0xba4f705a,0xbb2aa748,0xbb45e987,0x3af8df82, -0x3b8bbb8b,0x3abce3e5,0x391219a9,0x3bedabc6,0x3c2050b4,0x3ba764f8,0x3b099ad9,0xbad3833f,0x3c1e98ff,0x3c3fe1f4,0x3bd88d58,0x3b24a525,0xba631adf,0xbb2f6737,0x3b097606,0x3bb64a76,0x3c03c777,0x3b6773c5,0x3afcb266,0x3ba64004,0x3b54dcfb,0x3b2b0d8e,0x3a883aa9,0x39f2600d,0x3aa8cd0e, -0xba54b724,0xb954b734,0xb98cd6d2,0x3a6a3223,0xbaa96e06,0xbb06b27a,0xbadba05a,0x3a9bfea9,0x3ab82451,0xb964d988,0xbb9f136f,0xbbe967f3,0xbb9eb7f7,0x3aa8916f,0xbb0e51de,0xbc8067c9,0xbbe99d71,0xb7bbd816,0x3a01c257,0x3be675e3,0x3bef856e,0x391ec869,0x3c0d6409,0x3bf89e5c,0xba9b60b8, -0x3b5149a2,0x3b81a4db,0x3ba55626,0x3b451618,0x3b441502,0x3b2d0bd0,0x3b263062,0x3b0f7a62,0x3aab2473,0x3aefa564,0x3a9427e7,0x3aabb58a,0xb7d0e7e8,0xba1fb72f,0xba8412fb,0xb9d5c32e,0xb9dac185,0x39025928,0xb98f3054,0xb9fbf7a9,0xba8d2910,0x3a325a9d,0xb6d9f6fc,0xbbb2e8b1,0xba37b309, -0xbb83e3de,0xbc2fca1a,0xbb215a94,0x3b10dde2,0x3c303f29,0x3bae5f50,0x3b8b86d6,0xbad9d29a,0x3c01b3b4,0x3c19ce57,0x3b4e19e5,0x3bb42429,0x3bb0d795,0x3bb903f1,0x3bae393a,0x3b848248,0x3af527b7,0x3ad22387,0x39b88297,0xba7bfe5f,0x38bd0eb6,0xb9deef73,0x3a573bce,0xb85d8fd4,0xb9214f0c, -0xbaa11290,0x39eb6340,0x3a261efe,0x398f5a83,0xba86d0f0,0xbaf2f387,0xbb098404,0x3b002d8a,0x3b417b34,0xbaf4b2f6,0xb8849b8b,0x3c1f9ece,0x3c8ee477,0x3c7e05e6,0x3c4c78f3,0x3c54db32,0x3c27eebb,0x3c01cc23,0x3b415c91,0x39a815d5,0xbac5c745,0x3ac04569,0x3b889090,0x3bbb7815,0x3bba94e2, -0x3b9612ec,0x3b7e83ca,0x3b1f2c04,0x3a60cfee,0xba64e3aa,0xbaed84a7,0xbb16443e,0xbb060c19,0xbabee559,0xb8ae3922,0x395234bb,0x3a688bc8,0xb9aa8eaa,0xb9b77cb2,0xb9ef9126,0x3a8ac0f2,0x3ab49ab2,0x3b03e5a4,0x3a74448b,0x3a9459d8,0x3b58d377,0x3bd0d747,0xbb9b8f8f,0xbb96a050,0xba51e524, -0x3ab7a37e,0x3b862529,0x3c06d9d3,0x3c1e70b2,0x3c0c7433,0x3c24b695,0x3c477162,0x3c4f1799,0x3c335603,0x3c00f24c,0x3c082293,0x3b920ea1,0x3b02a4e0,0x398cc917,0xb9d75d95,0xbabab71b,0xbafa25ca,0xbb010954,0xbb2551db,0xbb6fb990,0xbb3a732b,0xbad2cb0c,0x3a23efe2,0x39d469ca,0x39910dc7, -0x3a20e051,0x3ace7186,0x3ad2343a,0x3afd362b,0x3a256791,0x38f5b0f8,0x39d9f721,0xbadf6084,0x3b89fe9e,0x3c1ee12d,0x3c2111f5,0x3c0734b6,0x3bfe5072,0x3bd3f930,0x3bd0f28d,0x3bd8d7f1,0x3b758d6c,0x3aaac1f8,0x3a42f69f,0x3abed5c1,0x3b02e9fd,0x3b03ea21,0x3b15c0e2,0x3b076811,0x3a2e7834, -0x392f5ff8,0xba2fbe0e,0xbb070060,0xbadedea8,0xbac9ae2a,0xb9c04973,0xbabf141a,0xbad69e8e,0xba9eb7ef,0xb70ff525,0x3ac2c4c1,0x3b31153d,0x3b7e21bc,0x3b8f718c,0x3b941303,0x3ba0fc06,0x3bb0f0a2,0x3bc80a8c,0x3beb1f90,0x3a2cdab7,0xb881c600,0x3ad31ae9,0x3b3f4c8d,0x3b82100f,0x3b75e0a7, -0x3b599e34,0x3b6162ec,0x3b00f4c8,0x3ac3bf36,0x3a5764cf,0x3a029789,0x39af4ccd,0x393803e9,0x39cb8f25,0x39373eb0,0xb99bcf15,0xba08cc02,0xba8bfcbb,0xbab24299,0xbabac77c,0xbb0413d0,0xbb053b47,0xbb18a71d,0xbb259b44,0xbb2643f2,0xbabbccc8,0xba446e7e,0xb912f94b,0x3a1528e6,0x3a3dba18, -0x3a78999f,0x3a4daece,0x3a235324,0x37a840f3,0xb857b4b5,0xbb0990f2,0xba8007c9,0xba3ae2ed,0xb92883f7,0x3a0ce2ac,0x3a7884d7,0x3aba7eb6,0x3af27112,0x3ace26f8,0x3aa5e2a9,0x3a5b1a97,0x39f5b414,0xb826d7ea,0xb99500ce,0xba4e1e8c,0xba887ff2,0xba96a5a2,0xbaa9d60f,0xbadb703f,0xbab5f0ff, -0xbab61ea7,0xbb086586,0xbb0b32e7,0xbb0e2558,0xbb0eb7d3,0xbb10128a,0xbb3243d2,0xbb03bd77,0xbb05db7a,0xbb0c4de6,0xbb1532a0,0xbaffb216,0xbae0b7ae,0xbb558de9,0xbb2beb5e,0xbb0732c4,0xbb55aaae,0xbb223022,0xbaead6c0,0xba862ea0,0xb981279f,0x38d7f8bd,0x3a534728,0x3ac37422,0x3a688576, -0x39dc013b,0x38c6e05e,0xb95490b7,0xb9ce14cf,0xba16be85,0xba29ea47,0xba6541d5,0xbaac8573,0xbabf77c8,0xbaf37563,0xbae9f34c,0xba9edd5f,0xbaa8f37d,0xba94f68b,0xbab078c1,0xbac6827f,0xbab43faa,0xbadc2f7b,0xbab62bca,0xbb166864,0xbb2aaac9,0xbb3f9d46,0xbb81af89,0xbb4ca0dd,0xbb1b6100, -0xbb482854,0xbaeba003,0xb9af3280,0xba84a39c,0xba8b0931,0xba72ffe8,0xba50605d,0xba39a238,0xba146593,0xb9b8c0db,0xb9e694eb,0xb9e27dc5,0xb9ff9a98,0xba15cc2a,0xba2fc611,0xba51f061,0xba6b1ccd,0xba7783e0,0xba7db0e5,0xba800bc5,0xba8684f0,0xbaa659a1,0xb9be459e,0xba48a463,0xbb2655f8, -0xb99f4ba0,0xba341378,0xbb37df0a,0xbb4bbfaa,0xbb431cf9,0xbb44c5ae,0xbb4513f1,0xbb316be2,0xbb2b8a7a,0xba900cde,0xba48e099,0xbb41988d,0xbaae387d,0xbaace993,0xbb254154,0xbb38a5db,0xbb1b4afc,0xbac20dbe,0xbacaf1a1,0xbab8b790,0xbb00820c,0xbb0b5a00,0xbb1336a9,0xbb009396,0xbb002229, -0xbb0ac975,0xbaee50ff,0xbad8cb5c,0xbab9c33a,0xbad6f23b,0xbaf31389,0xbb068fdc,0xbb0e3881,0xbb03cc99,0xbb1ae62b,0xbae6e434,0xb8fefad5,0x3b80e3b0,0xbb0518db,0xb9535168,0x3b6bb332,0x3b66c744,0x3b55722f,0x3b26fd6e,0x3b480309,0x3b3df06a,0x3b2c7ab6,0xb96362ab,0xbb2a8686,0x3b5bfda3, -0x3a1904ad,0x3b32c870,0xbb2928e1,0xbacfe441,0xbab54d62,0xba7d31e9,0xbb514915,0xbb8022a4,0xbb889916,0xbb379942,0xbb29b01f,0xbb48678f,0xbb1da4c8,0xbb079844,0xbac3555a,0xbaf33b72,0xbb197663,0xbb4109ec,0xbb4a3ebf,0xbb4f79d0,0xbb659d85,0xb9c5177b,0xba78eb64,0x3a8f2f25,0xb8f94fd5, -0xbac32fd1,0x3a028423,0xba4563bf,0xb988968b,0xbaea4664,0xbae2d197,0xbb3fed05,0x39380855,0xba3bfb14,0xba4545a0,0x3a7c6fde,0xb993701c,0xba57c465,0xbb4eee18,0xb9910397,0xba15dafd,0x39e605de,0xbb44ca0f,0xbb8a3562,0xbb9e9f74,0xbb516475,0xbb3b62da,0xbb74487b,0xbb185cee,0xbac8e07d, -0xb8a5b1f0,0xbaa97a25,0xbb161b56,0xbb7ede59,0xbb7d7a80,0xbb921968,0xbb5a7202,0xba916bef,0xba855440,0xba15a5db,0x39f9e6f2,0x3a4a079a,0xbaa44edd,0xb76e375b,0xbb544676,0xbb4f5256,0xbb56f01d,0xbb0d77ca,0xba033cbd,0xbb0ac138,0xbad4e82a,0x3acf96fa,0xbb2b7014,0xb966db35,0xbad0c80c, -0xba2b0dab,0x3a48814c,0x3ad36d90,0xbb6cbb0a,0xbbd1c6ae,0xbc00c792,0xbb78c077,0xbb404bec,0xbb97e088,0xbb2c8ec4,0xbaefc2ce,0x39e859fb,0xbaaa6ba2,0xbb21baef,0xbb959b4a,0xbba4bf1a,0xbba9db0d,0xbb97e00d,0xbb36431b,0xbaea1b5e,0x3ab978d8,0x3ab3d19f,0x3af3f22a,0xb98b856d,0x3a845e39, -0x39774795,0xbb280100,0xbb4074ee,0xbb246735,0x39527773,0xbaaa8ac9,0xb99f5190,0x3b18cad8,0xb9fcebda,0xbb0d7617,0xba87491d,0x3ab48cc7,0x3b06a554,0x3b842ec8,0xbb249077,0xbb89a131,0xbbd87cf4,0xbb8b0d17,0xbb76d564,0xbba2307b,0xbb285e40,0xb9d47586,0x3b3c622f,0x39172dde,0xbb27f0ce, -0xbbb72c61,0xbbc5ee8d,0xbbd1da3c,0xbbac0719,0xbae82f1b,0xbaaa4efe,0x3a9c34f2,0x3aefb8d5,0x3b011634,0x3acfde2e,0x3b02a6a8,0x3a897dd3,0xbac94f53,0xb8822a1f,0xba1aad75,0x3b06c471,0xbad65f41,0xbb0dc8b0,0x3b52eca0,0xba0bc51f,0xbbdf1471,0xbc1e6e0b,0xbc3c1480,0xbc361d45,0xbc13ac70, -0xbc2d8f5e,0xbc36d143,0xbbcb34c2,0xbb4b8831,0x3ae041a2,0x3ba3609b,0x3a56ec82,0xbb7b7a68,0xbbe4d428,0xbbe6b2dc,0xbb84cfd3,0x39b01b14,0x3b050936,0x3b3d7108,0x3b6c5dc1,0x3b9cbafb,0x3b15a18c,0x3b261172,0xbae88284,0xba7b387e,0x3a2daa2a,0x3afa542d,0x3b112268,0x38af126f,0xba9bc8f8, -0xbb2dffde,0xbb403296,0x3aca083c,0x3b13de13,0x3ac5264b,0xbbc4e5a9,0x3b99c712,0x3bc3665a,0x3b32eda0,0xba96032c,0xbb5180f2,0x3b8c0498,0x3bf7e29f,0x3b983812,0xb9e70540,0xbb8d38d1,0xbbbd6161,0xb9224bce,0x3b68ba37,0x3bcd46c8,0xba15c3ce,0xbb9db0cb,0xbbf21ec2,0xbbb9848d,0xbb8169b0, -0xba27ee12,0x3b020f91,0x39daba2b,0xbad6c24b,0xbab4eb20,0xbaa69e57,0x3a2011ba,0xbace3385,0xbb165d99,0xbad6eb33,0x3a2ac869,0x3a73b59d,0xbab1319a,0xbbb529fc,0xbc075134,0xbbdcacc4,0x392389de,0xbbb4bc81,0xbc96f751,0xbbde63a3,0xbb6cc9ee,0xbc235bdd,0xbbff1a42,0xbc11c530,0xbc791c48, -0xbab80ec5,0x3b11f50e,0xbb9d204a,0xbb59a1fe,0xbb9ee09b,0xbb915ed8,0xbbb6a518,0xbb7bbf10,0xbad6babc,0xba8c2316,0xb9e8f96b,0xbacb5489,0x37c1f68b,0x3a0ee06d,0x39254193,0xbabe9dee,0xbadee2f3,0xba7ef0dd,0xba61ae87,0x38af4d5e,0xb8480f85,0xba2c716a,0xba698543,0xba5d8103,0xba66de42, -0xba9ed5f6,0xbbcfe7c0,0xbb02ea63,0xbb9bec35,0xbc40419b,0xbbc0ad9f,0xbbced1e0,0xbc4afe69,0xbc769777,0xbc8a7613,0xbc89dee8,0xbb8b2c31,0x3a202bba,0xbb856514,0xbba2122b,0xbbc850c4,0xbbc42a11,0xbb8071eb,0xbb165895,0xba5df34b,0xba455524,0xbad57728,0xbb0d747e,0xbb01c625,0xba8aa78b, -0x36a648a8,0xba5afad8,0xba460036,0xbab497e2,0x393dcbff,0x39bc3898,0xb96ead0f,0xba9b90cd,0xbb0b929f,0xbafdd236,0x3aeb8265,0x3b1ac028,0xbb1625ff,0xbafa24f6,0x3c3d9cbf,0x3c78fb05,0x3b44e80e,0xbb9bede5,0xbc587279,0xbc2a9152,0xbbee5315,0xba88f7ff,0xbb9c53fd,0xbbabe040,0xbb8e393e, -0xb92b2394,0x3af22c88,0x3b5b47b9,0x38c314ae,0xbae43fcb,0xbb746886,0xbb860cb1,0xbb748f17,0xbb520b8b,0xbb2f0bb2,0xbb29c12f,0xbade0b98,0xba56d413,0xb94840c5,0x3a0d1cf4,0xba0f595c,0xba2b77a3,0xba08cc0d,0x3a4f2093,0x3a926afe,0x3ac30133,0x3a78297b,0xb9da84c1,0x3b502a89,0x3bd2e879, -0xbbe830de,0xbc1d50d5,0xbc96de1e,0xbc811f5f,0xbc3d3f0a,0xbc07cca1,0xbbe3a1e3,0xbbb2568a,0xba70236d,0x3af52d65,0x39d2621e,0x3af9dc15,0xb84cf031,0x3a991027,0x3a8dbaaf,0x3a48eeea,0x38a57557,0xba2dc3b0,0xbb2abc73,0xbb991c04,0xbb84a657,0xbb89b8e2,0xbb80781b,0xbb340d85,0xbacfe916, -0xb6d5febc,0xb9c6a906,0xb9b11d1e,0xb9e25331,0x39fea757,0x38f102fa,0x3a570cb7,0xba8e5e93,0x3a0f1b91,0xba80a9d9,0xbb692895,0x3bf764a7,0x3b1acc6f,0x3a9edd07,0x39257147,0xba1b26e8,0xba0d0cb1,0x39b3d568,0xb9b937a3,0x3a54ba4e,0x3a2d5047,0x3a106e3a,0xb80fb7ba,0xba74cf4b,0xbab93212, -0xbad10337,0xbaf633da,0xbb201bca,0xbb10cda0,0xbaf49978,0xba976cdc,0xbacc43fb,0xbb07867f,0xbb0f9e0c,0xbb1a4013,0xbb16abcd,0xbac56ca6,0x38f0ddb4,0x3aaf2098,0x3b06e21f,0x3b4c06d7,0x3b4a2dbb,0x3b57cb3c,0x3b6edd92,0x3b5d52da,0x3b775320,0x3b65cadb,0xba5e0994,0xbb0620e1,0xbb2db821, -0xba4abeae,0x3a69005c,0xb98f07e3,0xbac5c962,0xbb426f33,0xbb088727,0xbac18a8a,0xba983e3a,0xbadd0a7b,0xbae24a25,0xbaefc7fa,0xbaf388ce,0xbac1cf61,0xbaec2bd8,0xbb07652e,0xbb192057,0xbb2b50d6,0xbb1c409a,0xbb0e67c5,0xbb430e38,0xbb2ff642,0xbb2b78b1,0xbb1b742c,0xbacc4751,0xb9b02c0a, -0x392c3708,0x39d69319,0x3a2a540f,0x3a3725bc,0x3975e3b9,0x3895e657,0xb96684a5,0xba0e25da,0xbb25c3d8,0xbb6cbdff,0xbb337f9c,0xbb4ef2db,0xbb5a93f7,0xbb588d50,0xbb3ecfcf,0xbb406b4e,0xbb4d1b98,0xbb56380b,0xbb53565a,0xbafe437d,0xba9dedf2,0xb9cbc384,0xba872e3a,0xbac21c21,0xbaf8823e, -0xbb138f55,0xbb3e899d,0xbb46cf25,0xbb568efa,0xbb39b906,0xbb5f9aa5,0xbb4369e4,0xbb4d17bc,0xbb636101,0xbb3889a6,0xbb80f585,0xbb471d23,0xbb475b27,0xbb2bd54c,0xbb090c25,0xbb424a05,0xbb47d9bc,0xbb85d478,0xbb6a647c,0xbb1405c2,0xbb919fe6,0xbb9163d6,0xbb817bff,0xbb525187,0xbb725e47, -0xbb6f445a,0xbb7b13af,0xbb3b02fa,0xbb0aa0a8,0xbad393a6,0xbacf9026,0xbad22d18,0xbaae07ed,0xbac833ad,0xbad24604,0xbae59a2d,0xbaee20ee,0xbacf1568,0xbb19d9dd,0xbb036fc5,0xbb2d5450,0xbb310646,0xbb4ee2c5,0xbb3e094f,0xbb39a642,0xbb54d650,0xbb6cc86f,0xbb51291a,0xbb8c20a5,0xbb941d06, -0xbb9231f4,0xbba7225b,0xbb59fa7b,0xbb147be2,0xbba24f29,0xbb4d4c11,0xbb5286de,0xbb3dd156,0xbb458731,0xbb472016,0xbb481e46,0xbb3985f8,0xbb3b3564,0xbb3d1028,0xbb422eff,0xbb3ba547,0xbb2bf0c6,0xbb184a09,0xbb0a2bcb,0xbb13dcfb,0xbb1b9828,0xbb24d1e7,0xbb2eb7ab,0xbb3350ee,0xbb3f3405, -0xbb456817,0xbb0a0371,0xb938934a,0xbb5045d4,0xbb122cdb,0x362c9926,0x37e3c708,0xb9696653,0xba09918c,0xb9c8061f,0xb9e5733f,0xba505c8c,0xbb1f9e53,0xbb592612,0xba2f821a,0xbb018b26,0xbb8be0e5,0x3b60c2f1,0x3b34a731,0x3b78c3d6,0x3b318f06,0x3b30bbde,0x3b2cb309,0x3b340c74,0x3b3a4ef0, -0x3b33cb9d,0x3b3fc37e,0x3b3f961b,0x3b2ab1da,0x3b38a4f6,0x3b43865d,0x3b557adc,0x3b4bc510,0x3b4ac921,0x3b3cfcac,0x3b347eb2,0x3b1a911f,0x3b34aa2a,0x3a74f005,0xba589f7c,0xbb81a395,0x3b0e017a,0xb9b8f146,0xbb86a09c,0xbb849830,0xbb81724f,0xbb6b2cf8,0xbb8af581,0xbb81bfb7,0xbb46841a, -0xba964618,0x3b0bc11d,0xbb48ad3c,0xbac577f2,0xbb90fd75,0x3b2836e1,0x3b5fd668,0x3b6f92e7,0x3b5f6b83,0x3b6df02d,0x3b7eda41,0x3b75a576,0x3b9b5d2b,0x3ba40241,0x3b80fd3f,0x3b8ba265,0x3b96dca7,0x3bb3b98a,0x3ba8227f,0x3ba0ec11,0x3b81f023,0x3b4feedb,0x3b306730,0x3b410e42,0xbabfecae, -0x39e32db2,0x394d9fc0,0x3a4aa659,0x3b24481c,0xba20b7f5,0x3a6cc9c3,0xba264da7,0xba5dde18,0xbabcadb7,0x3a7b2ced,0x388a0377,0xba2049e2,0x39948504,0x3a67adcf,0x3999dc4f,0x38ee1789,0x3b9cfba2,0x3b7fdba0,0x3b85ed53,0x3b780202,0x3b92f7ca,0x3b9a491e,0x3b8a81b0,0x3bbe109b,0x3bba00e2, -0x3b8c5e5f,0x3ba35e97,0x3bbf9749,0x3becf071,0x3be6b936,0x3bce57a3,0x3bab80a5,0x3b60ad3d,0x3b496ab3,0x3a052a06,0xbb209bf0,0x36b8132d,0x3b14584f,0x3aa51657,0x3aaad97c,0x3a48daba,0x39a1ecaa,0x3af67546,0xbad9c02a,0xba49a52d,0xbad8d614,0x3ab2f9b3,0x363de100,0x38d19277,0x3ad55690, -0x3b3cd130,0xbb1313c9,0x3996ed67,0x3b9fb095,0x3b97498f,0x3b967c5d,0x3ba14877,0x3bb6dcf7,0x3b928042,0x3c0ad027,0x3c0d00bc,0x3bb6beb8,0x3bdf6843,0x3be9005b,0x3c279ba4,0x3c1e672e,0x3c099c45,0x3bbae2a9,0x3b66f510,0x3b19612b,0x39180c42,0xba83e694,0x3ad6d81e,0x3b062aab,0x3b6db223, -0x3b162065,0x3aa370b5,0x3a9ca5ec,0xb916f6ec,0xbb3d9205,0xbb2747fe,0xbb2c851d,0x3a9f7115,0xbaeea265,0xb97e27ae,0x3b85c53c,0x3a80a497,0x3b56fa7f,0x3b867537,0x3bbd0f4e,0x3ba4bc25,0x3ba52bc8,0x3bcbb3a3,0x3be57cea,0x3bba6abf,0x3c07e017,0x3bff9ff8,0x3bb2d013,0x3bce3e9e,0x3c0ba660, -0x3c3ea397,0x3c3e8b3f,0x3c1fca7d,0x3bf0afd5,0x3b857b86,0x3b071185,0xba52f031,0xbb94ff3d,0x39ed64c5,0x3b20e3c4,0x3b49b6ab,0x3b43fa1d,0x3ac0b995,0x3b11133c,0x3a85594a,0xbae574ac,0xba7972c8,0xba6d7ed9,0x3ab3062a,0xba9a8f47,0xba939f73,0x3b9f41e5,0xb836f50b,0xbc08a5f4,0xbb872ba2, -0x3993689d,0x3849f881,0x3afe5da7,0x3a99be8d,0x3b285315,0x3c01c7a8,0x3c1fb3fa,0x3c4afa84,0x3c71b36f,0x3c32dbf9,0x3b877513,0xbb7acc90,0xbb73a131,0xbab30736,0x3b90c444,0x3bf2a5ab,0x3c291b42,0x3c230a37,0x3bce0c07,0x3ba88ee4,0x3b0f3e78,0xba6b6600,0xbaa1a5b4,0x3ac233c4,0x3aa2e9f6, -0x3aa516ea,0x384bbb7d,0xb9ce6950,0xbaaa815b,0xbaa355c1,0x3b2f2ee5,0x3b3ef462,0xbad43294,0xbb202b7e,0x3c0f5af3,0x3c403780,0x3bbeeb99,0x39c0144a,0xbb88c867,0x3bf30acd,0x3c201477,0x3bb13948,0x3b38244f,0xba381337,0xbb8e5cdf,0xb9f42e95,0x3b524e19,0x3c088934,0x3ba4672e,0x3b76feeb, -0x3be098de,0x3b57a893,0x3b7b1739,0x3adaa7d8,0xb82661ce,0x3acc14b4,0xba695246,0xb7f1a133,0xb9de9c01,0x3a343d41,0xbaaf0ea8,0xbae12d93,0xbaa2b76e,0x3a20ccb7,0x3a2114a3,0xbac4e7b2,0xbbc64150,0xbbd98fdf,0xbb6da606,0x3b7be517,0xbbb7fd53,0xbc7eae84,0xbb4d81b0,0x3b1000b0,0xb95cab85, -0x3bbbde4f,0x3bdca086,0x3abd3ba0,0x3c0ed0b6,0x3c08bfda,0x3a67ca17,0x3b87138e,0x3b919193,0x3bcf7b8f,0x3b7e9828,0x3b64a340,0x3b2591a4,0x3b1ecf24,0x3b5489bd,0x3b2c7383,0x3af640b7,0x3ac6bf35,0x39158b99,0x38063e78,0xba57bdcc,0xbaa6c13d,0xb9e672eb,0x39ae7644,0x396fdeeb,0xb9877bb7, -0xb9ee57cf,0xb753c9d6,0xba1f9949,0xbac5c5eb,0xbb94e8e3,0xbb8f6a2d,0xbbe81a4f,0xbc383bdb,0xb98914e8,0x3b8097fa,0x3c13252f,0x3bb0d98d,0x3b9a41aa,0x37590653,0x3be76b3c,0x3c094790,0x3b5bcfd8,0x3bbec5ac,0x3bae9710,0x3bb02b38,0x3bae80ad,0x3b85800d,0x3b1649a2,0x3ae426a0,0x3afd4b5a, -0xb96ee808,0xb9587412,0x38428831,0x3a85f341,0xba1d4109,0x3725ece6,0xbaaf3e29,0x3a3be31d,0x3a12d523,0xb91c042e,0xba49202e,0xbad413b9,0xba0df0a0,0x3ae3957d,0x3b269805,0xbaf9f77b,0xbb00aba5,0x3c42a055,0x3c8de0d3,0x3c4cc356,0x3c1399d9,0x3c2f5a63,0x3bf0f31e,0x3bb0726d,0x3b4ac683, -0xba30b0e9,0xbb4e4816,0xbad78654,0x3aaefc45,0x3b85688a,0x3b90e54b,0x3b905904,0x3b840982,0x3b89fc7b,0x3b0462c2,0x39eda8d7,0xbabcf88f,0xbae57338,0xba8abc31,0xba5f8004,0x39ac61e8,0x399a0b21,0x3a8ebb1d,0xb9ca9a94,0xb9c37245,0xb985933d,0x3a64a6d8,0x3a955828,0x3af05c7f,0x3aed930b, -0x3ad8cb71,0x3af70e09,0x3c01bba6,0xbc1e7db3,0xbbd64575,0x3ab1045e,0x3ac04844,0x3b8a56d7,0x3bcd1af5,0x3bfb84cf,0x3bee8c80,0x3c0e133e,0x3c2f5872,0x3c2edf85,0x3c17d962,0x3be7c43c,0x3bf0af6b,0x3b7b9917,0x3ac56103,0x38e7bace,0xbad0699f,0xbb15069f,0xbb0f1c4e,0xbb802fb8,0xbb697685, -0xbb6c3881,0xbb226556,0xbaab4070,0x3896b767,0xb9b6be53,0xb98e148a,0xb92e315e,0x39df50d8,0x3a80e30d,0x3aa97f56,0xb8ef685c,0xbaa4c892,0xba7d1873,0xbaf71b20,0x3aef1648,0x3c05561e,0x3c031f23,0x3bd6369b,0x3bea1bcd,0x3bee3b7e,0x3c0514e0,0x3c101e97,0x3bb12a6f,0x3b263378,0x3acea9b4, -0x3b1771f7,0x3b18c882,0x3ae5651f,0x3af758b1,0x3ae86482,0x3a66d653,0x3a0f3bac,0xb822ad02,0xbaeed993,0xbaa58445,0xba33c952,0xbaa6c7a8,0xbaa21473,0xbaa94adf,0xba65393c,0x3ab47d3f,0x3b0cddd6,0x3b3f6cd1,0x3b5e28f3,0x3b693a83,0x3b5fc993,0x3b59e697,0x3b896fe0,0x3b8bf2a6,0x3bba96cb, -0xba180991,0xb8c86a46,0x3b42277c,0x3b67ecd4,0x3b950839,0x3b8734c6,0x3b84f81d,0x3b9891b3,0x3b50090f,0x3b35e1a4,0x3b11dfd7,0x3ad8e4ee,0x3aa5e117,0x3a35049d,0x3a283681,0x3959019e,0xb9c678a8,0xb9b99417,0xba0ea81f,0xba565f61,0xbb040b61,0xbb1fe2ef,0xbb0c2111,0xbb2e98d6,0xbb11fee0, -0xbafbf672,0xbaabe486,0xb9a93a45,0x3a0b8c8b,0x3a9af4ba,0x3ab9c9b8,0x3ac947e4,0x3ab44843,0x3a85c8b6,0xb95100e4,0xb9c9f881,0xbb28bcb9,0xb9b224d9,0x37466528,0xb8f5f1e9,0x3a0e9449,0x3a7f7933,0x3abe5753,0x3ae0ec4d,0x3aac4407,0x3a8c30de,0x3a3549c9,0x39f29220,0xb7d1cd2b,0xb9a279bb, -0xba43d504,0xba8c6f7e,0xba9df0fc,0xbab666c9,0xba936a35,0xbad41cbb,0xbafac575,0xbb159de5,0xbb0f8b38,0xbb0f1e3c,0xbb15c5e4,0xbb1d6d2c,0xbb28a4f2,0xba74e269,0xbb288c69,0xba5d9719,0xbae107d6,0xb9df5ed5,0xba16ade6,0xbb2e70c4,0xbadf2aba,0xba833b90,0xbbabcf07,0xbb2685b9,0xbb075ce5, -0xba9aa242,0xb9cdb5a1,0xb936802a,0x3a04fc13,0x3aa0ee56,0x3a59b884,0x39ed3041,0x39092db8,0xb9523c06,0xb9fe9e2d,0xba581d77,0xba572cb7,0xba6def70,0xba99ac59,0xbaac23b8,0xbad18cce,0xbac1608c,0xbb0ac2c0,0xbaf9edfb,0xbb090280,0xbb06d5c6,0xbb159bbe,0xbb03eb23,0xbb29a84f,0xbb25363f, -0xbb5edabc,0xbb720c54,0xbb41ae2e,0xbbb739d1,0xbb8ab2ac,0xbb6b9679,0xbba4ded0,0xbb2e0700,0xba8133f0,0xb98cafc4,0xba1fc8f3,0xba00bc8d,0xb9c82dbd,0xb99249f2,0xb93363e9,0xb837c6fb,0xb918bd71,0xb912c143,0xb92a01e5,0xb95c7071,0xb97d967d,0xb9a4e441,0xb9cbbd0f,0xb9f6540a,0xba06fde8, -0xba0a24b0,0xba1e58fd,0xba0d6157,0xba8662d8,0xbb193896,0xbb7fe07f,0xba7699aa,0xbb1557dd,0xbb8a1ecd,0xbb979fa1,0xbb8af9f2,0xbb86ecb4,0xbb90d269,0xbb86ddf7,0xbb6b4d3f,0xbafcb5a0,0xba68bcff,0xbb7dc64e,0xbb2f7931,0xba5d18b9,0xbabe9390,0xba3e35bf,0xbb311d7e,0xba94a54c,0xba8d0e95, -0xba675713,0xbaa34ab5,0xbab648f6,0xbad15336,0xbab11952,0xbab59900,0xbad54019,0xbab350ae,0xbaa04569,0xba85aaf2,0xba98a4f6,0xbaa98ea5,0xbab866cf,0xbacee8d0,0xbabaef4c,0xbb064f23,0x3a209b01,0x3b1bfe2e,0x3b8f872a,0x382f96be,0x3b1a1345,0x3b8b04aa,0x3b8b7f5c,0x3b7fe297,0x3b55c3cc, -0x3b89bef1,0x3b86805b,0x3b820e2e,0x3b22b235,0xba1bed6b,0x3b851477,0x3b554d93,0x3bab4410,0xbab10cea,0xba9794b2,0xba095da8,0x35d12b91,0xbabbcff7,0xbb037aa8,0xbb33b776,0xbad6cd8f,0xbacc5372,0xbb0648b9,0xbac25848,0xba9a2f99,0xba185ff7,0xba4f45ba,0xba998fde,0xbae00a80,0xbb028d4d, -0xbb1cc67d,0xbb50b948,0x3ae0023b,0x3a0e3592,0x3b0f95ae,0x3b0a6a94,0xb824e698,0x3aa60117,0x39eaeef7,0x3aafa0ab,0xba048c2f,0xb9b8c36c,0xbb4ad91a,0x3a999404,0x3a102cc1,0x3a153a2d,0x3b2acd0e,0x3a4b0f1a,0x3b0cfbac,0xbb413a34,0xb9d942a1,0x399d22a8,0x3aba9f5d,0xba106a8e,0xbaa9ee88, -0xbb3bf08c,0xbab4f5ef,0xbabfd682,0xbb24edc7,0xbabd40b7,0xba3522b8,0x3a27580a,0xb8be3c4d,0xba2cd7ca,0xbafb3d88,0xbb0b536e,0xbb6cd6bb,0xbae4cc92,0x3afbf499,0x3a11f0f8,0x3ab8521c,0x3b0eda60,0x3ac80107,0x3785a965,0x39753588,0xbb5b3721,0xba9a84cf,0xbb571e3f,0xba8d0c26,0xb911f3ad, -0xbabc6eb3,0xba2009ea,0x3b5a4cee,0xbacc51cc,0x3b08d1ee,0xba0711d7,0xba5b664b,0x3afefe75,0x3b38d000,0x3789e6d3,0xbaff53d6,0xbb9b21e5,0xbac656fb,0xba957021,0xbb366498,0xba91b9d0,0xb9e210bd,0x3afdad06,0x3a6d9784,0x36e487d6,0xbaf725ad,0xbb452f4f,0xbb87c797,0xbb692fbb,0xba951a98, -0xbac221f3,0x3b32d494,0x3a9f31d0,0x3b2871ea,0xba306336,0x3ab5785b,0xba181a84,0xbb4f6a50,0xbb8e60fb,0xbb486cc6,0xb900da6d,0xba6c140b,0xb9e0a51e,0x3b4ec615,0xb9e548bd,0xba6c243d,0xb9516065,0xb9855554,0x3b3e985c,0x3b96c856,0x3ae87887,0x3a45cf88,0xbb4bc672,0xba8b3c83,0xbad33934, -0xbb688222,0xbae695cc,0x3912db5e,0x3b5b83d6,0x3b124f5f,0x39a60bc2,0xbb00e032,0xbb4ca7e9,0xbb99b25a,0xbb871a67,0x3aca133a,0xba05486d,0x3b4f45db,0x3b18241b,0x3ae06c1e,0x3ac0a0cb,0x3a6eeb4d,0x3952b71d,0xbb4601f8,0xbad91199,0xbb1204b8,0x3a76530b,0xbb28e838,0xbb297ae3,0x3b7286c5, -0x3a49cf86,0xbb8cd1ee,0xbba28ad2,0xbc247352,0xbc082b71,0xbbdf4984,0xbc06ccb1,0xbc0f94ec,0xbbb03222,0xbb505d21,0x3ad50d10,0x3b8dfe10,0x3b3473d1,0xbadaf95f,0xbbf7431e,0xbbf852cd,0xbbacaf92,0xbb574426,0x38de997b,0x3b0ef6f0,0x3b9cabe9,0x3bce2921,0x3ac225dd,0x3acc0c07,0xbb49ed21, -0xba91f337,0x3acb7ad5,0x3a2c0152,0x39bc4539,0xb9998088,0xba46f365,0xba7bdba6,0xb7873b8b,0x3b2781b7,0x3b4939ed,0x3b043efd,0xbb98ae2d,0x3c0ec64e,0x3ba76d0d,0xbb06e359,0xbb5b0c7a,0xbbaeef47,0x3b91e174,0x3c02e004,0x3ba7a858,0x3acea22e,0xbb54c67c,0xbbfca7e4,0xbac677a0,0x3b1d0170, -0x3be13da7,0x3acd65a3,0xbb121a0b,0xbb7b3cc5,0xbb437771,0xbb405e49,0x3af5adae,0x3b64fbbe,0x3ad0e6a7,0xba6c0690,0xba5547b1,0xbacaad2c,0xb7e01ee5,0xbada2d86,0xbadcaaf8,0xba93ccc7,0x391c6ab2,0xb9992638,0xbb25a210,0xbbbcc42b,0xbbef6a81,0xbb9a0a07,0x3ba07f39,0xbbf1a506,0xbc90387c, -0xbb7add11,0xba2a862d,0xbbfbc944,0xbb334a73,0xbb525e42,0xbc13cc1f,0xbb435538,0xba9fb869,0xbb8c81bd,0xbb9648d5,0xbba6d249,0xbb5b0f95,0xbba8b2ae,0xbb547a47,0xbad86cef,0xba577d23,0xba18003d,0x3962b890,0x3adc4429,0x3a9cec09,0x3a40f967,0xbaa55b75,0xbaa28227,0xbacaab6b,0xba06d57c, -0x38d81f78,0xb7c2530c,0xba0e2a9e,0xba1b9b1f,0x3932f06d,0xbb1e86b6,0xbb2bbd4e,0xbb7ab864,0xbb992f3d,0xbbd85865,0xbc3b64e5,0xbb2ee090,0xbaa26ea2,0xbbc07445,0xbc025fbd,0xbc2b9a37,0xbc4df822,0xbbb38881,0xbaa354bd,0xbad922a1,0xbb7c325c,0xbb94b57b,0xbba45932,0xbb54d7cb,0xbb0f8605, -0xba513a73,0xb9fbcd16,0xbae230d9,0xba615d58,0xb91d4e0c,0xb9ceea6c,0x393fd7d4,0xb9ad8788,0xba4c99d3,0xba9d5cf3,0x391fd6bf,0x39a34bc6,0x386b9031,0xbaa518ec,0xbacd97b9,0xb9c28dbd,0x3b03c3b8,0x3aab0965,0xba11c479,0xbb9ab942,0x3c613e7b,0x3c6b6b15,0x3b7ef06b,0xba956fd6,0xbbfc7fac, -0xbbc7cd10,0xbb96ebde,0xba8b1b80,0xbaf9b665,0xbb24948b,0xbb562cde,0x3a347c30,0x3b253e01,0x3b656695,0x3ab3f3f7,0xb992ebab,0xbabbb297,0xbb33fbc7,0xbb49fd17,0xbb0ee885,0xbaec9ba7,0xbad2735a,0xb96f7665,0xb830286e,0x37f5622b,0x3a2e71b0,0xba1f8fa8,0xba43c5cf,0xb995b8c5,0x3a1dc9e1, -0x3a89ccca,0x3ab0bb8a,0x3b04e1e7,0x3a5ae5f9,0x3b32b022,0x3c111a25,0xbb835e51,0xbb719b8f,0xbc307ca0,0xbc042e71,0xbbd8164e,0xbb8fc22a,0xbb89a7b0,0xbb6d519a,0xb81c0540,0x3b55c7f8,0x3b605402,0x3b8e6f15,0x3ae08984,0x3b2df155,0x3ad756b0,0x3a49a4dc,0xba1cc9bb,0xbab33da9,0xbb570652, -0xbb9c7e8e,0xbb405d0e,0xbb5d1f27,0xbb8d2565,0xbb0ada71,0xbaa2de24,0xb93a7941,0xb9d62f72,0xba39ffed,0xba406505,0xb8e894d2,0x386d4898,0x3aca1d4f,0xbaaee6c2,0x39b7c5d2,0x370e0e5a,0xbb867ce5,0x3c030d9a,0x3b7661d8,0x3ab013c3,0x3a4303e1,0xb796b79f,0x39bfe0fc,0x3aa54e95,0x3ac865a7, -0x3b0e28f2,0x3acf2544,0x3a8408d9,0x3a7d08b7,0x3a2eb6e4,0x387a9cb0,0xb996e637,0xba829e5f,0xbb10bef2,0xbb11d37b,0xbb002027,0xba4144a1,0xbaa5bf6e,0xbb03933d,0xbaa464f0,0xbaf3c70e,0xbad88548,0xb9ed43ea,0x39e772fd,0x3af0c650,0x3affc96b,0x3b3a9a07,0x3b1b84be,0x3b193f7f,0x3b4f2a1b, -0x3b31e6a2,0x3b65749b,0x3b8dd84b,0x3a9e2b51,0xb927a90c,0xbac0d90c,0x38b6242a,0x3a6590d4,0x38ba52b8,0xba33cd19,0xbabb2f82,0xba499cd1,0xb9126750,0x39f817bc,0xb98cc190,0xba256662,0xba8fc4ed,0xbaadaa89,0xbab79c87,0xbb100c0a,0xbb09ce09,0xbb18003d,0xbb0cfbc3,0xbab0a4a0,0xbacb50e0, -0xbb27cf20,0xbb0a14fe,0xbb14c3f1,0xbaf81081,0xba1dd456,0x39f8aa35,0x3a417ca1,0x3a9bfe47,0x3ad2a101,0x3b0b1aa6,0x3aabc016,0x3abade10,0x3afe9f81,0x3a73cebc,0xb998456e,0xbb18275d,0xbb110c4f,0xbb1f79a4,0xbb3bef50,0xbb3388ac,0xbb24bd65,0xbb2898c3,0xbb29e149,0xbb2a2b42,0xbb22d2b1, -0xbaf76e3a,0xbac4c9f7,0xba5dc75e,0xbad01a0d,0xbb041dd1,0xbb2873f9,0xbb23b0ee,0xbb5956d3,0xbb285dd6,0xbb250353,0xbb257e0b,0xbb43c9df,0xbb27203f,0xbb245e8f,0xbb292087,0xbb13190e,0xbb4c8f0b,0xba8c6076,0xbaee63c0,0xba284d4c,0xb9e8701f,0xba081e76,0xba03226a,0xbaa3a8b9,0xbab8a42c, -0xbb2a85d2,0xbb95dab3,0xbb8acc7a,0xbb82d5b2,0xbb5f83d8,0xbb834c1c,0xbb83a910,0xbb8c14d3,0xbb74d7ed,0xbb525590,0xbb3a3fd2,0xbb2d29c8,0xbb2270ba,0xbb096ad6,0xbb0bde7a,0xbb08e512,0xbb1509d4,0xbb17ce3a,0xbb136c01,0xbb3c2170,0xbadb0a1b,0xbb13d22e,0xbb01684f,0xbb1e10d9,0xbb0c5576, -0xbb064479,0xbb1338d8,0xbb21fb0f,0xbb228b56,0xbb640dd2,0xbb92a564,0xbb7ddf25,0xbb94b8e3,0xbb74090b,0xbb323fbd,0xbb9b52fc,0xbac3b7cf,0xbb3c781c,0xbb305b3d,0xbb381ce4,0xbb3a3100,0xbb3cf0e6,0xbb343181,0xbb38befb,0xbb340016,0xbb3663f9,0xbb317bca,0xbb276b09,0xbb1b2787,0xbb11f4d3, -0xbb1c3ea8,0xbb24aa10,0xbb2c28cc,0xbb32379f,0xbb339767,0xbb4c490c,0xbb0224ff,0xba36e9f8,0x398d81d5,0xbb013ffa,0xba24501c,0x3a0b237f,0x3a1cc96e,0x39b95de7,0x391b9089,0x3a0d7813,0x3a181d70,0x399080ab,0xba23064a,0xbaf0b960,0x3967b38c,0xb92ef162,0xbb72d7ef,0x3ada0ea3,0x396cd319, -0x3b37aab2,0x3ad2c833,0x3aca83b3,0x3ad09d5c,0x3abd38a5,0x3abf4e35,0x3ab9dc71,0x3ad23e18,0x3ad483d7,0x3abafa4c,0x3ad1d5f1,0x3ae7ed56,0x3b0298dd,0x3b00a651,0x3afd6f20,0x3ae5696e,0x3acd6f4c,0x3aa46ec1,0x3ad8d83e,0xba88d564,0xbb0d0c0f,0xbb0d99a8,0xb89a39e6,0xbb02031e,0xbb2f4acd, -0xbb348731,0xbb2f9d33,0xbb26c68d,0xbb5a4bf4,0xbb528913,0xbb2b7045,0xbb32bf14,0xb9474dc8,0xbaf7b6ab,0xbb34cba1,0xbb9bfa82,0x3a3eff34,0x3b159cd1,0x3b17b583,0x3b1be17a,0x3ad78c9e,0x3ac9683e,0x3acfa80c,0x3b1bf24c,0x3b31801d,0x3b0d69f1,0x3b1c5469,0x3b2b3040,0x3b4f92a5,0x3b524c14, -0x3b4de973,0x3b225a97,0x3ad79997,0x3ab2213b,0x3addad8d,0xbb14c68b,0xba024cc7,0x389bf5f1,0xba5b55e1,0x3a1ded08,0xba64300d,0xba0e6358,0xbaff84af,0xbafd4f7f,0xbb2fce8e,0x38ac4def,0xba36673f,0xbad118da,0xba824d17,0xb95c72a9,0xba4f5e25,0xbb1aef2d,0x3b3cd4ae,0x3b3ac2ab,0x3b2821a4, -0x3b4203cf,0x3afd3df6,0x3ac6ef2a,0x3ac00b99,0x3b32d7a7,0x3b3db7b1,0x3b0c6984,0x3b30baaa,0x3b65198e,0x3b94da7c,0x3ba30aff,0x3b8dfca4,0x3b656111,0x3ad3bc9e,0x3ad91566,0xba4ea30e,0xbb64adf2,0xba21bf99,0x3a6ff25a,0x383b3b8b,0x3a0576d1,0xba416c31,0xba0feb7f,0x397f5413,0xbb60c36a, -0xbafcdfb5,0xbb511ceb,0x3962c384,0xbaae05c5,0xbaa0f405,0x39e08d66,0x3a3ca114,0xbb904299,0xba540d79,0x3b8412bd,0x3b66522c,0x3b8ca4f3,0x3b08bda7,0x3ab11d3b,0x3a8fba36,0x3b77e193,0x3b943bae,0x3b4f9128,0x3b74b2af,0x3b845d24,0x3bbde2cc,0x3bd3385d,0x3bbcf989,0x3b7c607b,0x3ae2e1b9, -0x3a90e4a3,0xba6c4cfa,0xbae3c157,0x3aae2b82,0x3b08dc25,0x3b42964e,0x3abcbf1e,0x3a3f01ec,0xb98a2342,0xba874271,0xbb60eb5c,0xbb59bfdd,0xbb73cca6,0x39f12f39,0xbb442c72,0xba8fdb3e,0x3b352d29,0xb9cc905b,0x3a282b88,0x3af3234d,0x3ba67e5d,0x3b611828,0x3ba09db5,0x3b2b82f0,0x3b0e4d27, -0x3acacda1,0x3b66cfbe,0x3b71aec0,0x3b371566,0x3b526dfd,0x3baa7099,0x3bfa6cfc,0x3c0e4fc4,0x3beaa10a,0x3ba86cbf,0x3ae69378,0x3a3303a4,0xbaab32fa,0xbb9c9ead,0x3a44215b,0x3b27fd7c,0x3b399cc4,0x3b31a70b,0x3ab4c463,0x3ae690d2,0x38e91744,0xbb3429c9,0xbb288efa,0xbb0e7ea8,0x3a03f94f, -0xbb129ed5,0xbb0160d0,0x3b88c3aa,0xbaeea0ba,0xbc2511e2,0xbbd554aa,0xba2d5f3e,0xbaa44616,0xb9259362,0xbaeff13f,0xbb04e9fb,0x3a208642,0x3baf75be,0x3c272a9b,0x3c4e3941,0x3c553fb6,0x3bf42305,0xbb10e539,0xbb609289,0xbb22dcbd,0x3b3d53be,0x3b9b22b5,0x3bdad89a,0x3bd1a85c,0x3b7ffddc, -0x3b6480e9,0xb91db565,0xbb153ab9,0xbb18dbc7,0x3b124990,0xb8928d41,0xb992f1a1,0xb99d3b5b,0xba186ec9,0xb9a9b6c8,0x3a4ae7ef,0x3b4fde8c,0x3ae3697c,0xbb223ab0,0xbbb28d71,0x3c0ff80d,0x3c1ad1d3,0x3b811d6f,0xbb0067e3,0xbbc7fa91,0x3b51b61f,0x3bc11761,0x3b727e9d,0x3b0c2739,0xbaddcb6b, -0xbbe0490b,0xbb3df55a,0x3a4c0b79,0x3bd16561,0x3b938687,0x3b314a68,0x3b525010,0x398258a8,0x3adcb292,0x3ad3fdfa,0x39fad124,0x3ab7d8b3,0xba530a34,0xb820f9a4,0xba36b5b0,0x393c15bb,0xbab71d0b,0xbab3d5c2,0xba878fb0,0x37f258ce,0xb999a841,0xbb413d6e,0xbbdaab95,0xbbd0fa39,0xbb5b8a03, -0x3bb2128d,0xbc183a18,0xbc75785e,0xba83d7c5,0x3acb4e6c,0xbb8d735d,0x38ae8b8e,0x3a803991,0xbb3e7794,0x3b54a28a,0x3ba2e2a1,0x3ab0c67e,0x3ad973cc,0x3a402757,0x3b264412,0x3a448319,0x3a7e23d4,0x39f7dc2e,0x3a59d306,0x3b24b40d,0x3b172c7f,0x3ab66114,0x3abd465c,0xba5d50aa,0xb9eae3d6, -0xba9ad73f,0xbabf6bc7,0xba1f5762,0x3a24c425,0x391b0702,0xb9831638,0xba078a34,0x39f52bcb,0xbb3e236d,0xbb6bcc38,0xbb234ede,0xbc01b5c5,0xbc18d4cd,0xbc3fc48e,0xba75068e,0x3ad30624,0x39b2f0ad,0xba5320b5,0xbaed7b5c,0xbb8e7fec,0x3a306489,0x3b5a9235,0x3b0788eb,0x3b05f9d9,0x3a33068c, -0x3a085d74,0x3aad9ec5,0x3a98e080,0x3a9693d5,0x3a62b5ff,0x3af4a85b,0x38db562c,0xba193037,0x393978cc,0x3a28c84d,0xba8e8324,0xb9891a77,0xbab0e991,0x3a060b2d,0x39693c17,0xb9d33722,0xba36046c,0xbab0dfaf,0x3a1671bc,0x3a859742,0x3aa53021,0xb95b6dab,0xbb934b55,0x3c54c22a,0x3c50348a, -0x3b90d77b,0x39de591d,0x3a7cb101,0xbacae7da,0xbad64efb,0x3af08f04,0xbb00c849,0xbb833f67,0xbb943365,0xbab1e5ac,0x3aed4747,0x3b2b1928,0x3b242b68,0x3b03594a,0x3b3c97bf,0x3a44847a,0xb703dfcb,0xbabe14d6,0xbaab1a2b,0xb9ebba60,0xb9509233,0x39e406bd,0x39662cda,0x3a346dca,0xb9cdbbd8, -0xb9f33b75,0xb984a806,0x39cb5dd8,0x3a3cb662,0x3ae80db6,0x3b2764f5,0x3aecab0f,0x3ae0b52e,0x3c163d7b,0xbc3c0b61,0xbbf1d4a3,0xbb1d7c48,0xbb4fb2b9,0xba83f743,0xb9c04d21,0x3a4c7f6e,0x3ac90b94,0x3b60864c,0x3bb9e0b7,0x3bb0293a,0x3ba5d7cd,0x3b65f9cf,0x3b6bd94c,0x3b0e4e8a,0x3a3c6e15, -0xb9bd5df6,0xbb1c0fb6,0xbb4c9173,0xbb4c997e,0xbbaa73ca,0xbb9224da,0xbb6c9287,0xbb05a7e1,0xba831b64,0xba1effeb,0xba7ab005,0xba4fb88e,0xba9287dc,0xba520160,0x38a14877,0x3a24b4d3,0xba6c50d2,0xbac6ada6,0xbb0ca8cd,0xbb3f5368,0x3aaffae7,0x3b58cb91,0x3b2aa6b4,0x3b0527c2,0x3b659653, -0x3b9bb331,0x3bcf9ee7,0x3bec1cb9,0x3bb06fe2,0x3b5f4926,0x3b17fd3e,0x3b2f5006,0x3b087c4f,0x3a823824,0x3a2fe23d,0x39c1012a,0xb8fa18aa,0xb91de99c,0xb997acf7,0xbab0316b,0xba99cfb7,0xba45f968,0xbb1906ce,0xbaaf416e,0xba9293e2,0xba020cca,0x3b025c9a,0x3b0ff104,0x3b166dac,0x3b1418ee, -0x3b05efe2,0x3aeb16d1,0x3ad5160c,0x3b10be54,0x3aebd373,0x3b3feb66,0xba9f220b,0xb996cd41,0x3b10160f,0x3b1f32ab,0x3b5cba83,0x3b33be4e,0x3b3a915d,0x3b58ef93,0x3b343cbf,0x3b3662e5,0x3b2e56e6,0x3af227d8,0x3aa39fb4,0x39f6a449,0x390023ed,0xb9b09cd3,0xba7801f7,0xba547c46,0xba4bdc4a, -0xba8ad313,0xbb207b72,0xbb257e6e,0xbb1da5e6,0xbb2dcfc7,0xbaf0c171,0xbaa8a4d1,0xba72a491,0x39b328ff,0x3aa07779,0x3ad5109d,0x3afcec91,0x3b060535,0x3ad6310f,0x3aa43b03,0x39079123,0xb9c5e365,0xbb009613,0xb9c51377,0x38517a60,0xba3c6e44,0xba14a3b7,0xb9d30de7,0xb9324af9,0xb978a89b, -0xba059364,0xba0d9e2e,0xba210a20,0xb9c99778,0xba03499f,0xba03388d,0xba6bb7b8,0xbaa63be7,0xbac3299f,0xbae3d94e,0xbaafb69c,0xbb0e4579,0xbb29f24e,0xbb1f9559,0xbb21ac4f,0xbb129e17,0xbb1d62e7,0xbb2da334,0xbb0b9725,0xba43133d,0xbb179672,0xb727f813,0xba448079,0x3a66cd03,0x39a91a3e, -0xba9afebd,0xba4e8231,0xb9432a69,0xbbadce92,0xbb4279c3,0xbb3d8f0c,0xbb136fe9,0xbad55e11,0xbae6efb7,0xbab4f124,0xba8d358c,0xba626d81,0xba52bbc9,0xba568318,0xba71b06d,0xba892ba6,0xba9c2590,0xba9d5d94,0xba9cf898,0xbaaa7671,0xbab841e3,0xbabd3eff,0xbad64ba3,0xbb30d95f,0xbb2a084f, -0xbb41c34a,0xbb40b041,0xbb457825,0xbb359d64,0xbb5ed859,0xbb6f2397,0xbb819cfd,0xbb908074,0xbb5657de,0xbbbeedce,0xbb9fe9a4,0xbb8a2104,0xbbab4fbe,0xbb7be603,0xbb054674,0xba431135,0xba8de4d6,0xba8cd92a,0xba8ba5b0,0xba881960,0xba81c234,0xba879737,0xba8ae735,0xba8956c1,0xba81448f, -0xba719afa,0xba56356f,0xba4359f7,0xba568cf5,0xba702d4e,0xba82e018,0xba894b15,0xba92bc56,0xba72e707,0xbb0db78b,0xbb5269e5,0xbb57692e,0xbb0e6965,0xbb55610d,0xbb6243ae,0xbb73afec,0xbb5cc2eb,0xbb55c612,0xbb69d360,0xbb5f4645,0xbb3b9108,0xbb1b0dcb,0xbad55500,0xbb416876,0xbb46f60d, -0xbaf436f8,0x3a944c50,0x3b04122a,0xb9e544a4,0x3a0f8fbb,0x3a2f7a0c,0x3a57c2e9,0x3a47cdc4,0x3a3bc5ed,0x3a04849a,0x3a2e82bb,0x3a232d74,0x39bf092c,0x3a08c0bc,0x3a28eb1d,0x3a553d68,0x3a4d8924,0x3a4d312a,0x3a3a4894,0x3a028c1a,0x39e23801,0x3736e5e6,0x3b1a5ba7,0x3b3ba32e,0x3acbed5d, -0x3b112b41,0x3b4583f0,0x3ac85570,0x3ad43868,0x3ab6e0d8,0x3a9fabc4,0x3aedf929,0x3af6b862,0x3b10c0c4,0x3b3f2c9c,0x3ae94e99,0x3aefc8b4,0x3b54c31b,0x3b561c2f,0x3a81a58d,0x3a6543a2,0x3ad7a37d,0x3b06bb38,0x3aef8255,0x3ad69a3d,0x3a53c97e,0x3abcfc29,0x3ac63ddd,0x3a896b94,0x3aae8adb, -0x3acdbe78,0x3b0d774c,0x3b0cfd8d,0x3b01c5a5,0x3ab9e835,0x3a4fe89b,0x3914fb7c,0xba135141,0x3b04f55c,0x3ad0aeee,0x3b09984e,0x3b469ea7,0x3aed7299,0x3a839e58,0x3aa8901a,0x3acd020f,0x39af631e,0x3938dc68,0xbadbb8fd,0x3aae9936,0x3a7bd042,0x3aad92c6,0x3b3e2f03,0x3aaaac2b,0x3b606fd3, -0x392d56c5,0x3a8b9ceb,0x3b178b93,0x3b49ea66,0x3b4c2237,0x3b468a49,0x3aa423c1,0x3b1c28a1,0x3b0503f5,0x3a917004,0x3acdc2a9,0x3b15598f,0x3b55af15,0x3b5fc481,0x3b5250ed,0x3b1edb26,0x3aacd1c5,0xb9b39bd4,0x39a55611,0x3b260553,0x3acc989d,0x3b3e8d78,0x3b3d98d8,0x3aef108a,0x3a7cdedb, -0x39721364,0xbac9f878,0x39233421,0xbb190160,0xba23dba9,0x39f4966e,0xb9e5138a,0x39ae77bd,0x3b68c81c,0x3a628372,0x3b02bac7,0x3a1d850d,0x3a9da483,0x3b752405,0x3b967548,0x3b98915c,0x3b89e01f,0x3aac98e6,0x3b59ef38,0x3b5ca2a8,0x3b0ab493,0x3b3f4faf,0x3b5a7ce0,0x3bb38f01,0x3bb8aad8, -0x3ba36add,0x3b54820a,0x3a908633,0xba4356ae,0xba98eb18,0x39ad1059,0x38e44a1d,0x3b4b957a,0x3ae6689d,0x3b2e9400,0xb9f4920e,0x3a8a9353,0xbab8c87f,0xbb4fccbc,0xbb9f2de8,0xbb65cf08,0xb8cf5779,0xba8f52c4,0xba141531,0x3b6a1021,0x3890277a,0x3ad8c3e9,0x3af62db3,0x3a50984f,0x3b8a2460, -0x3baa1ccc,0x3bd4cdc8,0x3bd2e5e1,0x3b313211,0x3b8cdf38,0x3b4f02b8,0x3a9f1294,0x3af739e3,0x3b6ac6da,0x3bc62e73,0x3bea69a8,0x3bca482f,0x3b98455e,0x3b0096e3,0xba115996,0xbada70f1,0x3b04b31f,0x3a3a7d68,0x3b8658ed,0x3b37d138,0x3ae835b1,0x3aa266f2,0x3925d2b5,0xba26cabc,0xbb5d0374, -0xbb4980a1,0xbb5afd89,0xb82b95a0,0xbb3e1984,0xbb19ea9b,0x3b7cc252,0x3aafd737,0xbb5a7954,0xba03f2f6,0xbb756f35,0xbb08785b,0xbb059b52,0xbb355536,0xbb301ac8,0xba4e87e3,0x3a7e8e02,0x3ba12aac,0x3bdf4f51,0x3bf8daac,0x3b3d5bc5,0xbbd20114,0xbbc96310,0xbb9e9c87,0xbb879ba0,0x38ac7024, -0x3b4015df,0x3bb5b917,0x3bb4eaf3,0x3a666096,0xb80b1731,0xbb73ca98,0xbacae5ce,0x3b159f84,0xb973cb11,0xba871d2f,0xba4bc215,0xba16b3e4,0x3a0d4cf8,0x3b377fb9,0x3b745de6,0x3b6ea486,0x3a95b60c,0xbb1fcd49,0x3c3bb452,0x3bb70b3e,0xbb3b137d,0xbb6d1e39,0xbbdb6379,0x3b83afe0,0x3be7c917, -0x3b9bfdcb,0x3b6db426,0xbaa4f130,0xbc060942,0xbb3686bb,0x3a75095c,0x3bcd652b,0x3b9ea984,0x3b37a8b3,0x3b4a9b38,0x3ad044b2,0x39df633d,0x3b7426b8,0x3b4d031d,0x3b1c8ca5,0xb6503be6,0x39888910,0xba8a4e01,0xba0a1528,0xbac8ac9c,0xba859a8e,0xba534e04,0xb7b455ac,0xba85855f,0xbb643510, -0xbbc8726d,0xbbc52f08,0xbb185dc5,0x3c07f03e,0xbc118d37,0xbc7121be,0xbae554cd,0x3ae7c195,0xbb315c1e,0x3b83c600,0x3b916f4f,0xb953c5a0,0xba94b289,0xba990c3e,0xba377535,0xbb12791f,0xbb040208,0x39e2b302,0xbac1fb3b,0xb996fe40,0xba0921cd,0x39ccf5b5,0x3a2a4a64,0x3b1fe813,0x3b39db01, -0x3ad58601,0x3a28bd5f,0xba261723,0xba37c78c,0xbaf2b824,0xb98f5b9b,0x391d40cd,0x38856255,0xb9420034,0xb99b3381,0x3a0d9c42,0xbb803426,0xbb83af44,0xb9e65aa7,0xbbf9e467,0xbc0d962f,0xbc3811b9,0xb98d830f,0x3b7e87b0,0x3bb30188,0x3b4eabcd,0x3a11b89e,0xbb8e095a,0xbb3dc77d,0xb7d32a18, -0x3b54229d,0x3a5642f0,0x389356d6,0xba388241,0xb7bef561,0xb984797d,0x385e9f0e,0x39f4a92a,0xb99aea35,0x3a123953,0x3aba0f6a,0x39b5b9c5,0x39f25d32,0xb92be2bd,0xba1e7f19,0xba8be37c,0x3943206c,0x3934e028,0x390347da,0xba74260b,0xba7f54f6,0x3a848bb2,0x3ab03a0f,0x399ec1d4,0x3b030db2, -0xbbcac45e,0x3c5d7b6e,0x3c2f7cde,0x3bb4b1c7,0x3b8ad91a,0x3b8b5ddf,0x3afba5b5,0x3a4a2c1c,0x3a46dfdc,0x3aaf0a38,0x38a5f0fd,0xbad9736a,0x3ab198e7,0x3b577059,0x3b5e24cf,0x3b530cec,0x3b2409ae,0x3b2a1850,0x397969aa,0xba8715c9,0xba5e2e0a,0xba5098f2,0xb984fa4b,0x3a7ba5f6,0x3a5b63a1, -0x39a64198,0x3a02167d,0xb9e8fd1b,0xba15e3f8,0xb92d3608,0x39a754c2,0x3a68d10b,0x3aea698b,0x3b3b2de8,0x3b16c3bf,0x3b37d47e,0x3c2ad7fb,0xbb5bc959,0x3a3a4803,0x3a5800f0,0x3b10901f,0x3aa6d0a6,0x3b1fb185,0x3b10dae8,0x3aed79a2,0x3b52f339,0x3bcdb55e,0x3c0588a1,0x3bf52f14,0x3b98217d, -0x3b9de171,0x3b2dec27,0x3a655fc8,0xba99f833,0xbb0e377a,0xbb5bc25b,0xbb6aace3,0xbb20b656,0xbb39b8be,0xbb852d1a,0xbacdf779,0xba5a23e4,0xb9bf3d59,0xb9fe7ea6,0xba5f3f1d,0xba7439b6,0xba1c2e9e,0x398d4ef2,0x3ae8a0cc,0xba51a1e0,0xb9a69b43,0xb89b6e71,0xbb74d74d,0x3b99a7b5,0x3b97e277, -0x3b1d3f9e,0x3b19e063,0x3b2c4eef,0x3b63c6e6,0x3b91cf2e,0x3bbcdbfe,0x3b9c8b25,0x3b557e53,0x3b111397,0x3b3de359,0x3b4efcc3,0x3b1b6c62,0x3af27982,0x3a6d69b8,0xba2ae19e,0xba84216a,0xbaa50549,0xba783ddc,0xbaa76454,0xbad3252d,0xba422197,0xba9053f4,0xba4942dc,0x39cd2c95,0x3a8e130e, -0x3b07fddb,0x3ae0ae28,0x3b0f2515,0x3adad02e,0x3ab6cec0,0x3b12736b,0x3b079610,0x3b30d775,0x3b8f6cce,0x3b0f47eb,0x3ada5e5d,0x3ab7d93b,0x3b08635a,0x3b117908,0x3b0a6459,0x3b129ee1,0x3b2f4778,0x3b1a6f22,0x3b29d13d,0x3b409102,0x3b04a79b,0x3aa308f6,0x39d32112,0x382a38b5,0xba26114a, -0xbad86ba0,0xbab158d2,0xbac9539c,0xbaaaf47b,0xba62feec,0xbab8f9db,0xbb024e94,0xbad8d6c5,0xbad5bca8,0xba95b841,0x392ae0e8,0x3a8cbb2b,0x3abc0ac9,0x3b01b0bc,0x3b1d30e9,0x3b4c064e,0x3b13cc23,0x3b1e9122,0x3b3f5543,0x3adc0f49,0x3aa1c2c3,0x39247c5a,0xb96bcc6c,0xb996dc7a,0xba158216, -0xba00baab,0xba082290,0xba1536d3,0xba0552d5,0xb9edb1fa,0xb9e752c0,0xba5a4c20,0xba97261a,0xba91d8ee,0xbaddfcce,0xbb02cc48,0xbb1b9b63,0xbb0bf283,0xbb294c95,0xbae57f68,0xbad0efe5,0xbb0528b3,0xbb0e73d0,0xbaf3dd55,0xbae16679,0xbacfd63e,0xbac61e78,0xba9278a9,0x39e5cd69,0x38c12b28, -0x3a8ef0cd,0x3ab6c30c,0x3afa555e,0x3abaa91c,0x3ac25bda,0x3a983c9f,0xbb6465bb,0xbb614b13,0xbb40e116,0xbb38236e,0xbb1f2d33,0xbb2efa8d,0xbb223d02,0xbb232317,0xbb2ef9ff,0xbb2f562a,0xbb2e6cc1,0xbb218566,0xbb12a5df,0xbb040588,0xbafcbfba,0xbaf8ab97,0xbb0dd10a,0xbb11d504,0xbb1eec91, -0xbb2f1e8d,0xbadb456b,0xbaf66c4b,0xbacecc2b,0xbaef6bdc,0xbae643ab,0xbad90aeb,0xbae53182,0xbae2ee17,0xbb123700,0xbb316167,0xbb610387,0xbb62d7e0,0xbb5e8356,0xbb6a4ce9,0xbb687e8b,0xbb5b63a7,0xb8c0b4f9,0xbac732bb,0xbad669a4,0xbad94f86,0xbadbb877,0xbae28d4b,0xbae53e5e,0xbaeccdd1, -0xbade8b72,0xbadb0122,0xbad90ae1,0xbadae683,0xbadd5c61,0xbade4c87,0xbaec5742,0xbaf6d8a5,0xbafce51a,0xbafd05fb,0xbafbc593,0xbb1191dc,0xba71f8cd,0xb9c3934a,0xba80e2bc,0xba51069e,0xb95977cf,0xba6acf20,0xba715bb1,0xba697709,0xba640031,0xba12d904,0xb9c22298,0xb995b8e9,0x39823c30, -0xb9b113a4,0xba0ceb8d,0x397c0351,0xbb1993fb,0xba3489ef,0xbae8ddab,0x388f9b79,0xb933a81a,0xb965ac9f,0xb8117d56,0xb9e3301c,0xba0c8183,0xba1bb00f,0xb9db5005,0xb9d162ad,0xb9f27e12,0xb9b2b077,0xb9525d5d,0xb87e3793,0x36d1a579,0xb83edbd4,0xb9300d38,0xb9cc7c65,0xb9f7e021,0xb9f33a49, -0xbadc97ec,0xbaa7a5a9,0x3ac632bc,0xbac7279b,0xbaba7ad8,0x3a698404,0x3a46ed53,0x3a329fcf,0x39d90f9c,0x39304cb2,0x38a6d0e4,0x390f41ac,0xbae87b48,0xbaf5057a,0x3a90888e,0xbaa87c4d,0xba92d5a5,0xbaa12e1b,0x395b2ae3,0x39ab1aa4,0x3a6362a1,0xba357443,0xbaa39fad,0xbab6f5b2,0xba5fb48b, -0xba14223c,0xb9fe27f7,0xb9a1f382,0xb94a822b,0x3775f9f2,0x39befe08,0x39b5d6f5,0xb76294fd,0xba31e1f5,0xba649278,0xba6f324f,0xba97f5b9,0xba2579f1,0x3a31b49b,0xba5e1a07,0xba803dd3,0xb9a8034f,0xbaa2a758,0xbad7f08f,0xbb04ccd4,0xbb291fd4,0xbadf738a,0xba237760,0xbab87c36,0xbaa2dcf7, -0xb85e9882,0xba67c203,0xbb0ee80b,0xba059672,0x3a609b7c,0x3a33d504,0x3af78a54,0xba19d445,0xbacbe8dc,0xbafc49ae,0xba89a82d,0xba4705ff,0xba52de39,0xb9cdf35d,0x398fb964,0x3a688f0d,0x3ad3256d,0x3a9d19cf,0x3a032e96,0xba61c50a,0xba9200b1,0xbaf29734,0xbaf6131e,0xb9e76af4,0x36c3ae4a, -0xb7bf395d,0x3985a6a1,0xbad926c1,0xba81e8ba,0xbb142791,0xbb676a08,0xbb4ea7b9,0xbb5e816b,0xba7631e3,0xbb105074,0xbaf15d47,0x39bac446,0xbac74bfb,0xbb52fa19,0xbaa47a13,0x3acbcbff,0x3b0a19e9,0x3b756498,0xb9802b67,0xbb1d19a0,0xbb435989,0xbaf07fca,0xba4751cb,0xb97508d0,0xb8dec46b, -0x399cb85b,0x3a44d3d7,0x3b05f4d3,0x3af31ab3,0x3a42e978,0xba868b04,0xbac19319,0xbb17adea,0xbada8a83,0x397ca125,0x3b016b34,0x3ad0d26a,0x3a89077b,0xb9f2150a,0xba88ccfe,0xbaf3bf4d,0xbb5dd954,0xbb915942,0xbb8f24da,0xba247610,0xbb4406f1,0xbabccc5f,0x3abf6d22,0xbaa80486,0xbac10024, -0xb9cf94ef,0x3b22325c,0x3b0af1d0,0x3b993a17,0x38b0e584,0xbac6e880,0xbb3b6a38,0xbadf7c72,0xbaa6416f,0xba74947b,0xba1af8bb,0x3a84e01b,0x3b2851b0,0x3b866426,0x3b477649,0x3abf6792,0xbaa59117,0xbaed84ed,0xbb11c9b9,0xbafda242,0x3a402c06,0x3b290ce4,0x3b16ab96,0x3af71142,0x3a8c9d97, -0x3a10d27a,0xba845219,0xbb4f5cc7,0xbb7a789a,0xbb63e2a4,0xb9a9c2c7,0xbb52903b,0xbb30e4ae,0x3b35bf30,0xbafdf868,0xbbfda2d5,0xbbd380d2,0xbb54e03b,0xbb689bde,0xbb84745e,0xbbbe9b1f,0xbbf0c39b,0xbbece7db,0xbabfb2d4,0x3b939654,0x3bdcd5ab,0x3c26b668,0x3bd0efc2,0xbb4fe689,0xbb97fa5f, -0xbb94e5d8,0xbaed659c,0xb9b6df5c,0x3a10f8d7,0x3a879441,0x3a9a07fa,0x38857d0b,0xbb0aeabb,0xbb81956b,0xbb36245f,0x3b29b106,0xba525c93,0xbaad2fab,0xba640f38,0xba805ba9,0x3a064450,0x3b47a228,0x3b7807df,0x3ae2b82d,0xba8bb580,0xbbc94ee8,0x3c0a698f,0x3b9f7336,0x3990e8b4,0xbb805276, -0xbbeb4faa,0xba3f0da8,0x3b1e7dc5,0x3b1cb73a,0x3ae203f9,0xbb20c164,0xbc10e8e6,0xbb96408d,0xba987be0,0x3b6db01d,0x3b5fdc18,0x3a958b26,0xbab16003,0xbb1fd11b,0xba9bfdf6,0x3af69a86,0x3af6f66d,0x3ab01756,0xb9ceafc2,0x385be117,0xba6c5baf,0xba1e2b10,0xbac35353,0xba829c42,0xba614e25, -0xb926a51c,0xba820490,0xbb879407,0xbbe42eb9,0xbbcdcab9,0xbb4103b7,0x3bd309ee,0xbc3ac871,0xbc64bdc2,0xbad4a90e,0xba64096a,0xbbe4175b,0xbb9a5fb0,0xbb9e4a46,0xbbf88367,0xbb8476c8,0xba30cadd,0x3a2e1fbc,0xbb1961f2,0xbb876dd7,0xbb3a1fc7,0xbb65b80a,0xbb10b47a,0xbb097d5d,0xba7fe58d, -0x3a21c742,0x3a9a21ec,0x3a80421f,0x3a87d88d,0xba9350a0,0xba8db038,0xbab67070,0xbad21376,0xba29de5b,0x3a02f06b,0x37cc236d,0xb925baa6,0xba11ec4d,0x391c2b3e,0xbba7e0ee,0xbba6f44d,0xb95b45c6,0xbc1b288d,0xbc22afec,0xbc41c73e,0xbb3cefc6,0xbac5ae72,0xbbb99d41,0xbbd32965,0xbc0efd17, -0xbc2151f1,0xbbe72b11,0xbb37ba21,0x3a91f9cc,0xbb17f05a,0xbb905473,0xbba3ab57,0xbb608add,0xbb1fb5c1,0xba3e17bf,0xb9af9e4b,0x39de07c9,0xb805f962,0xb9e44b5c,0x38c0b5c2,0x383f84b6,0xba9984f9,0xba4d3a1d,0xba9b74c3,0x385de408,0xb8a88415,0xb99e62bc,0xba2d1ff8,0xba894d12,0x3a8e19ba, -0x39835993,0xb8e5a04d,0x3b165464,0xbbce4da4,0x3c4aca76,0x3bc5a450,0xbb2c36db,0xbbc8cee0,0xbbed9b0d,0xbc0b3176,0xbbe26ddb,0x364ebfd9,0xbb06f85d,0xbb46ed52,0xbbb066c6,0xbb1a6d47,0x39c1172b,0x3a9b2eea,0x3a375fab,0x38dce5b6,0x3a28b9ee,0xba8e26ed,0xba926cdb,0xbab3b081,0xba5489ee, -0xb82ce9a5,0x3a163f80,0x3a07f3b4,0x3917c765,0xb804f765,0xb9c34973,0xba01d19a,0xb9498936,0x389f8e3c,0x3a14bfe6,0x3b019220,0x3b32fe30,0x3acfb549,0x3b42a286,0x3c1ef76c,0xbc0f2049,0xbba49400,0xbbd50111,0xbbdf110d,0xbbcd4109,0xbbc8e01e,0xbbb7ccfc,0xbb875b8b,0xbaf5ac6a,0x3a3c8e4f, -0x3a898ad0,0x3ad9d095,0x39b8b453,0x39e96a49,0x3a31daef,0x37ee7712,0xba90c9db,0xbb2cb643,0xbb6e019c,0xbb853560,0xbba38ccd,0xbb93b96d,0xbb63ec4b,0xbac7bba6,0xba35d45c,0xba6e4deb,0xba957fb7,0xba93ff21,0xbad2f602,0xbab564a7,0xba0fb701,0x39aa32bf,0xba9fb666,0xba54acec,0xbb2086ea, -0xbb824620,0x3b10becc,0xbab08996,0xbb378fc3,0xbb19c15f,0xba5076ae,0x3aaafe3b,0x3b4f6225,0x3b817647,0x3b920b5d,0x3b8138ab,0x3b4d538c,0x3b49411b,0x3b0dba0f,0x3a5a9a63,0x387a3ea2,0xba2fe0cf,0xbaa36a3b,0xba968a46,0xba89a20a,0xba7f846f,0xbab70bec,0xbab9c9f3,0xbb2c6a3c,0xbab2e501, -0xba67550e,0x370d077e,0x3ae1ca81,0x3ae8c55f,0x3a97aa29,0x3a90d3aa,0x3a2b5ba9,0x39cb57ed,0x3a176262,0x39fa1083,0x38ea20f7,0x3a290283,0xb9cb2a0f,0x391be18c,0x3a208727,0x3a6ce92a,0x3ade7eaf,0x3a9df0d7,0x3aacc05d,0x3aa900bf,0x3aebc70d,0x3b182642,0x3b333317,0x3adecc55,0x3a6a7066, -0x3787d894,0xba00dd53,0xba7adc86,0xbad35d9b,0xbac18251,0xbabc6584,0xbad6cdf0,0xbb15465b,0xbb0c6e67,0xbb21b0b1,0xbb096ce9,0xbaa965db,0xba1a6ee8,0xb8e4d5db,0x3a98b815,0x3af002b0,0x3aff2f0f,0x3b13425b,0x3b234751,0x3aed7a33,0x3ada6fc4,0x3aa91e22,0x39c9a14b,0xb842ccac,0xb983b1e7, -0x38fe5fd9,0xba505f1e,0xba9f6d81,0xbac8b68f,0xbadcd511,0xbb047fce,0xbb06a985,0xbaff001c,0xbae83aff,0xbaaa5f28,0xba9672ff,0xba690592,0xbaa78e4a,0xbad49669,0xbaf692ae,0xbb090562,0xbb037bbf,0xbb23f9ec,0xbb3667f3,0xbb1a3cea,0xbb2a9ca8,0xbb0a0fc2,0xbb0e908d,0xbb1b86d3,0xbab50aaf, -0xba71b009,0xba757c6b,0x39e68360,0x3a19f652,0x3ae33cdf,0x3a9a1bf3,0x3a647877,0x39f8e5b4,0x3a3d3a24,0xbb78fd18,0xbb5a99e1,0xbb67310f,0xbb5e422e,0xbb489900,0xbb5daf24,0xbb5b1db9,0xbb697638,0xbb3f3b54,0xbb206ced,0xbb0bcab9,0xbafe1bcd,0xbae9349b,0xbad124ee,0xbad39a47,0xbad074c7, -0xbad8f77f,0xbadedf09,0xbacb3e26,0xbb090d05,0xbb307c75,0xbb3cfa6c,0xbb4f6f5d,0xbb5c0c5d,0xbb562f45,0xbb52266e,0xbb6961c9,0xbb8098e7,0xbb6b1d01,0xbb8636d7,0xbb5e6ac7,0xbb8e821b,0xbb8de64a,0xbb7c3f02,0xbb7aebf9,0xbb8e6b4b,0xbb1bf4c8,0xbada5536,0xbae9bed8,0xbaf54546,0xbb0168bc, -0xbb07719b,0xbb09c6de,0xbb151e39,0xbb10ff0e,0xbb118395,0xbb0b596f,0xbb02dd98,0xbaef4f47,0xbada403c,0xbae3f20f,0xbaede150,0xbaf95e72,0xbb010e05,0xbb033e30,0xbaf86d7a,0xbb368191,0xbb386665,0xbacb044c,0xbb3cac18,0xbb3e33e9,0xbabf4573,0xbabc7a82,0xbaabd368,0xbaaaea14,0xbaae9e49, -0xbaae3509,0xba8de469,0xbaf86e10,0xbb06714b,0xba85b40e,0xbb066ad5,0xbb5495c0,0x3b42d870,0x3b4c90e9,0x3b138735,0x3b03eacc,0x3b09fddc,0x3b0fa6ed,0x3b17365a,0x3b19c762,0x3b101794,0x3b15a1ea,0x3b148b2d,0x3b08eedd,0x3b0b9282,0x3b124b13,0x3b1a9f13,0x3b20fea7,0x3b270c06,0x3b222a4b, -0x3b139ae9,0x3b001337,0x3b017b4b,0x3b111735,0x3aa6f118,0xbae264dd,0x3b32e1ad,0x3ac75cfd,0xbaf4e32d,0xbae8cfb5,0xbae889e3,0xbac46395,0xbada3a76,0xbac38274,0xba57c1a4,0x3a8b49bd,0x3b283907,0xba92b590,0x3a7a7f3b,0xba7d5d3c,0x3b20a944,0x3b2e2083,0x3b535d68,0x3b65f37a,0x3b825843, -0x3b844d12,0x3b6068bf,0x3b6cdbb5,0x3b789d6b,0x3b6a305b,0x3b6948c6,0x3b71fa3f,0x3b8724bc,0x3b8f8ec3,0x3b913a35,0x3b7d8704,0x3b4247b7,0x3b173ea6,0x3b0760db,0x3a3941b7,0x3ac84a3a,0x3a8fceb5,0x3b078c9d,0x3b211931,0xb7017034,0x3a84c81e,0x39962143,0x38054b3b,0xba0ae0a6,0xb8b9535e, -0x39fabd03,0x3996a412,0x3a7800ce,0x3adaa27b,0x3a64a0db,0x3b0d8217,0x3b572b60,0x3b2abf3a,0x3b6ec10e,0x3b852bb0,0x3ba73d5e,0x3baef909,0x3b835fa8,0x3b9b5282,0x3b9183a9,0x3b854883,0x3b8142f4,0x3b9643cb,0x3ba61975,0x3bc963ee,0x3bc8f760,0x3bbc62c2,0x3b783442,0x3b31d940,0x3ab7d9e9, -0x3a5d9c44,0x3ac19c36,0x3b3aa98d,0x3b0e861b,0x3ab6f7bc,0x3a31913d,0xb95dbe62,0x39955e2c,0xb94ee8d7,0xbabf866b,0xbaa534c3,0x39e0a297,0xb84e5ef4,0x39d08440,0x3b05bc4e,0x3b1ee351,0xb985b5ae,0x3a8152f8,0x3b5ed9e9,0x3b9764ed,0x3bb9fac7,0x3be390fd,0x3bf10d3b,0x3baee4cc,0x3bc7e8a1, -0x3bcd6c55,0x3bc70243,0x3bc14881,0x3bc64cdd,0x3bf07b1b,0x3c1050e0,0x3c0a73b4,0x3be40d42,0x3b89c669,0x3b1cbf4b,0x3a50154a,0x3a4f791f,0x3ae2d023,0x3b20f3da,0x3b158247,0x3b0388ea,0xb9938e58,0xb892f3e2,0xbb111d4f,0xbb49f225,0xbb9cf48c,0xbb82c9d8,0xb9bbe88e,0xbaf3bc03,0xba4f78a9, -0x3b3a8da1,0x399b1575,0x3b4d00ce,0x3b54a18d,0x3b3d3f18,0x3b97527e,0x3bad3878,0x3c059e64,0x3c0b5f41,0x3bc55f48,0x3be905d1,0x3bcbe8b6,0x3bae8ec3,0x3ba08b0a,0x3bd078cb,0x3bfaf141,0x3c2e4200,0x3c2a7775,0x3c1a89c7,0x3bb554a9,0x3b4ab0fa,0x3a1659b9,0x399b2720,0x3ade0a88,0x3b6facb5, -0x3b3ed1fb,0x3afaa1f4,0x3a416c44,0xb99878de,0xbaae18e5,0xbb3e5db3,0xbb88e150,0xbb82a36b,0xba75d632,0xbb3f66aa,0xbaf772c8,0x3b4f2804,0x3a1e8a0d,0xbb6cfefe,0x3a9b9af7,0x3b54b95d,0x3b681705,0x3af038fe,0x3ae7b8e8,0x3b0410a1,0x3b16094d,0x3b9a3998,0x3c012dc6,0x3c1726f7,0x3c43c81f, -0x3bf0e7b8,0xbb84987a,0xbb8719f4,0xbb8211a7,0xbb5e2fe7,0x39937db1,0x3b3babc5,0x3b77e3f1,0x3b12701e,0xb7eb941e,0xbb081012,0xbb7db9a1,0xbb123d5b,0x3b37afee,0xba5565cf,0xbadad83f,0xba8f5f5a,0xba197d3c,0x3ad11088,0x3ba02611,0x3b9f00d3,0x3b70e32d,0xb9f7feb6,0xba44f773,0x3c3b803a, -0x3bc50d9c,0xba34df66,0xbb3de3e9,0xbbecf3c4,0x3af0db3b,0x3b90fb00,0x3b6aeba6,0x3b97b69c,0x39f6c31c,0xbbf920ef,0xbb8820d9,0xba85dea8,0x3b894072,0x3be1f73b,0x3be0f6f4,0x3c05c68b,0x3b9ac56e,0x3b688668,0x3b8c46f4,0x3ae56f38,0x3b1e6f56,0x3a220f87,0x3a9a9d3d,0xb9a0a9bd,0xba711c52, -0xbaaedb84,0xba0b57e9,0xba1741ed,0x3895e0c5,0xba9ef062,0xbb878fed,0xbbe37820,0xbba93652,0xb992765c,0x3c1533e5,0xbc21c7fa,0xbc3627f7,0xbac61eb7,0x3aef55a1,0x3adebb3a,0x3bdf5a14,0x3bf2c9f5,0x3b969ee6,0x3a3b3568,0x39c624c9,0x3b55510b,0x3a5bca4a,0x3a7d0ea6,0x3b45c0f7,0x3af04f23, -0x3b1197d1,0x39730690,0x3aa3e66e,0x3aedd0d3,0x3b637616,0x3b2eea07,0x3abdfca6,0xb93cd340,0xb95ecac6,0xba0ff347,0xbae8e702,0xb984aa34,0x39971c24,0x38b9b25a,0x3927b796,0xb969665b,0x380ce9b0,0xbba6ccf3,0xbb9eedc4,0x3ad430c8,0xbc189c94,0xbc20cf9a,0xbc2f17c2,0x398fc462,0x3bbab87a, -0x3c571e95,0x3c245776,0x3bf5a28c,0x3aa3a238,0xba5594c7,0x3a8a38cd,0x3be3bab4,0x3b997fcc,0x3b5f1144,0x3b1bce72,0x3b16a303,0x3aa286ec,0x3a2f55f0,0x3a8fe11f,0x3aaa907d,0x3a8a3175,0x3ae30913,0x3a3d0a8c,0x3a09faaa,0xb9fcc1f5,0xba0c7774,0xba798282,0x3902a0a4,0x3718527a,0xb78beca4, -0xb9e67907,0xba22558c,0x3ac8eab0,0x3966d294,0xb99604be,0x3b69cf19,0xbbc55cad,0x3c34afa7,0x3ba868c8,0x3bacf073,0x3bd543b8,0x3c479212,0x3be88be6,0x3b9249b6,0x3b0ee660,0x3b2f108b,0x3a7ae7b4,0xba7650e6,0x3a40b203,0x3b3ecbd0,0x3b1b938f,0x3b83c11f,0x3b92fbf6,0x3bb4c4b6,0x3b33cd64, -0x3a972215,0x392f3705,0x3785798a,0x3a704959,0x3acbb530,0x3ab69fae,0x3a02f02b,0x37c18d78,0xb985e2c2,0xb99a18fd,0xb8071724,0x3938afad,0x3a4cead8,0x3b1d1b8c,0x3b39e654,0x3b35e5a1,0x3b64cc1e,0x3c292f49,0xbb99264a,0x3af62db1,0x3c089db3,0x3c00498f,0x3bb9068e,0x3bbe3082,0x3bbc5828, -0x3ba8d9c7,0x3ba20b0f,0x3bed3cdd,0x3c20cd79,0x3c05e207,0x3bc70c2b,0x3bb699a4,0x3b3ea497,0x3a29f968,0xbac65d4e,0xbb363f0f,0xbb4d9721,0xbb1ad3b2,0xbb3ff00a,0xbb3da0e6,0xbb500077,0xba95b315,0xb9e34a4c,0xb9fe910d,0xba35eff7,0xba70f68a,0xba8b4087,0xba75db9b,0x3984008b,0x3a9562d3, -0xb8c519bc,0xba772a82,0xba9ad08b,0xbb3fae6f,0xb88f2b2f,0x3b4d94a3,0x3b02722d,0x3b1f79d9,0x3b8577b2,0x3bbc0fb9,0x3be45881,0x3c0dec40,0x3bdde58a,0x3ba1f950,0x3b7c9000,0x3b9d5f75,0x3ba4aa88,0x3b809267,0x3b5db604,0x3b1f657d,0x3a7520ee,0x39c7ce75,0xb9d67a54,0xbac221f6,0xbac45283, -0xba979ae2,0xba76393d,0xb9e65734,0xb7bf1da7,0x3a4ad95d,0x3ada0086,0x3af68135,0x3a9a5d56,0x3aa331e8,0x3a8315cb,0x3a13f341,0x3a815d75,0x3a9c011c,0x3aa7ceaa,0x3b3e45cf,0x3af1d356,0x3b2467b5,0x3b7376b3,0x3b668327,0x3b6ab0ef,0x3b837b09,0x3b9e91ad,0x3bc4eee6,0x3ba406f5,0x3ba04cab, -0x3b9f00a9,0x3b7a442c,0x3b33b936,0x3ad39d90,0x3a9e39c2,0x38f4025c,0xba5a2daf,0xba106332,0xba3706a9,0xba3d38f9,0xba946c64,0xbad9f700,0xbacebeef,0xbab23e1d,0xba52ef6e,0xb9296489,0x3a2f88c7,0x3abe3cfd,0x3b0538c4,0x3b1f6aee,0x3b31027c,0x3b54d5bf,0x3b3109cd,0x3b35256f,0x3b2e102a, -0x3ad4871b,0x3ae9f656,0x3b1ad858,0x3b064744,0x3afd91af,0x3b002063,0x3ae5fec3,0x3ac397aa,0x3abaf691,0x3ab65fbd,0x3ab3c408,0x3a9e14ea,0x398b6a88,0xba1a4d57,0xba928661,0xbabbcc6e,0xbad37b45,0xbadc44c8,0xbacc6bb0,0xbab603a2,0xba98e982,0xba93d6eb,0xbad6e8ae,0xbac6c132,0xbaa5ee06, -0xba8f0fc7,0xba66615d,0xba490445,0x3a5c9e34,0x3a7dfb66,0x3adf1f35,0x3b00d454,0x3b2d1c71,0x3b517aa9,0x3b12ea63,0x3b44f9ec,0x3b417203,0xbb86e30e,0xbb01835d,0xbad296f4,0xbac77893,0xbaaccf8c,0xba85e443,0xba205982,0xb9af9986,0xba73c9ba,0xbaaba505,0xbacda308,0xbac61ae6,0xbab28fb4, -0xbaba5e7b,0xbaa77123,0xbaac5ade,0xbad2f86e,0xbadd2b64,0xbb0474d1,0xbb014140,0xbb028d37,0xbaedfdde,0xbaecc687,0xbaf63785,0xbb090095,0xbb068a7f,0xbb0b75d4,0xbaff056c,0xbb249282,0xbb1bb15b,0xbb0c3d48,0xbb4c2d5e,0xbb17d5f9,0xbb45af4c,0xbb836375,0xbb004616,0x398c53cc,0xb8b392bd, -0xb9e42e66,0xb9b8357e,0xb9c4e3bf,0xb9e39bc2,0xba196946,0xba20d660,0xba149b8e,0xba0ba4fc,0xba1820e1,0xba3bfa49,0xba64d707,0xba813a13,0xba8550df,0xba874559,0xba855daa,0xba7a8d31,0xba76f4b9,0xba7d5daa,0xba1626da,0xba97a8a0,0xbb2db9ce,0xb9ea3c53,0xba84e3c9,0xbb35909a,0xbb3cc80c, -0xbb25f136,0xbb17a19b,0xbb14dbcf,0xbb03f999,0xbac71d86,0xb8b4f2db,0x399e65a4,0xbaeea5ed,0xba15d690,0xba972077,0xbad4a677,0xbade323f,0xbb002a26,0xba92a017,0xba8f58cb,0xba5ad24e,0xbaa492d4,0xbab9e1f5,0xbacb58f7,0xbab8bcbe,0xbab79388,0xbab520b5,0xbaaf4a64,0xbaa34a5b,0xba9ad2b5, -0xba89f386,0xba8e5813,0xba95d41a,0xbab331f1,0xbaa7f1aa,0xbadd2e07,0xba1baac7,0x3a58d0a8,0x3b7de88b,0xba9214f3,0x3a1518a8,0x3b5f702a,0x3b5b9d59,0x3b4e7e09,0x3b2f2aff,0x3b4ade64,0x3b3e92b5,0x3b2cb388,0x3a1e99c6,0xbad55263,0x3b534001,0x3ab1b648,0x3b44fe2c,0xbadad788,0xba85b0d7, -0xba212fbd,0x39894393,0xba9fc9e3,0xbb00f995,0xbb29c14c,0xbb1887b9,0xbb0b4eb2,0xbad02016,0xbac24f4b,0xbabcb220,0xbabb4221,0xba79aecc,0xba7eaa08,0xba99895f,0xbad820e0,0xbafbd180,0xbb1f6d38,0x3a5af918,0x38f4d6eb,0x3ab76fee,0x39ffcd77,0xba8d42e8,0x39c92403,0xba6034fc,0xb9b0fe9a, -0xbaa6284c,0xbabd6ef1,0xbb3a416a,0xb892d5a7,0xb9b8fa0c,0xb9dc44ac,0x3a664a8b,0xb8e5c4c1,0x38e5da72,0xbb21b050,0xba05de3f,0xb87605a5,0x3ac6fcd4,0xba5c1491,0xbaee9563,0xbb485104,0xbb232caf,0xbb181522,0xbaf0e7be,0xbae04823,0xba9b81f6,0xba77988b,0xb900674b,0xb963f906,0xba5125ce, -0xbad1e554,0xbb23342d,0xbacd1158,0x3a81794d,0x39eed579,0x393d1e72,0x3a6c58ac,0x3a11463c,0xbacaafa3,0xba73d178,0xbb6adbf2,0xbb0c78cb,0xbb63844f,0xbb1d657f,0xbaca48e4,0xbb03e3a8,0xbab35701,0x3a826ae6,0xbb088e14,0xb96fab97,0xba36a685,0xba012b24,0x3ac4ee47,0x3b6d7345,0x3981e18b, -0xbb11c476,0xbb85ba78,0xbb878f93,0xbb4ee38c,0xbaa93e63,0xbabee59f,0xba8641e6,0xba9d17a5,0x396176cd,0x398845b4,0xb9d23a76,0xbafb925b,0xbb30f72a,0xbb23c5b7,0xba260da8,0xb9f3d7f5,0x3ae4575e,0x39f6b242,0x3a9863ed,0xbadac1bc,0xba8e69da,0xbb2837b1,0xbb5334b8,0xbbb1b8a9,0xbb9260fb, -0xbadcbdb5,0xbb0884d6,0xba9b0410,0x3a30108f,0xbaa5fc9e,0xbad0cb38,0xba89a57e,0xb90f5090,0x3aef7b2c,0x3b9148cf,0x3a57b5f6,0xba85e2ab,0xbb7b4c50,0xbb584b50,0xbb4c0d6a,0xbb0f13f3,0xbb057435,0xba632377,0xb855cd4b,0x3aefc669,0x3ab2a404,0x398692ed,0xbae92e7d,0xbb24fab7,0xbb0b1149, -0x3af3585c,0x3a50fc9e,0x3b279dbe,0x3af8b282,0x3a8f9e68,0x39d79300,0xba68a1a1,0xbaf71ef6,0xbb45cea2,0xbb94729e,0xbb94bd4b,0xbaa6b25a,0xbb7077c4,0xbb35e963,0x3aa8168f,0xba383973,0xbb3029b5,0xbb45db5e,0xbb60b9db,0xbb593cc5,0xbbbbd8ce,0xbbd4a5a6,0xbc08fcf8,0xbc2506b6,0xbbb6cbdd, -0xb9bae3b8,0x3ac838fa,0x3bca8330,0x3b7de618,0xbb9eacf0,0xbbc34afd,0xbbcd1218,0xbbe7b2de,0xbba34ec0,0xbb901855,0xbb5436f8,0xba8808bf,0xbb4fcc0e,0xbb5fd38d,0xbba4348f,0xbb28fa74,0x3b307843,0xba875818,0xbadc1d75,0xba95f786,0xba80535e,0x3ac72452,0x3baaf355,0x3b9c451c,0x3b402423, -0x3a8d8cf0,0xbb6977b4,0x3c050ae9,0x3a7122b2,0xbb45ba47,0xbb99d8b9,0xbbf1f1c0,0xbb411465,0x39f2e994,0x3b0d741c,0x3b21da6b,0xbae70841,0xbc1538b6,0xbbb0791b,0xbb26b549,0x3a9c5379,0x3b43decf,0x3aa9f632,0xbb158ba3,0xbb024165,0xbafac7b2,0x3b3b0fb0,0x3b4b5bf3,0x3ac5480d,0x39992ad0, -0x39e9cde5,0xba576577,0xbaad92bc,0xbac20523,0xba180896,0xba0e4589,0xb867b5e4,0xbabf16b6,0xbb9a3727,0xbbedc340,0xbbc4b95e,0xbab91440,0x3be59f81,0xbc355fe8,0xbc3ee6b2,0xbb688c70,0xbb3959cc,0xbbaa1fc8,0xbb96fd62,0xbbbbe9aa,0xbc04f769,0xbc089b58,0xbba501c2,0x39239d55,0xbb9bc00f, -0xbbd12bea,0xbbbb75e9,0xbbb1af4e,0xbb604c43,0xbb60ed5e,0xbadd4973,0xba834008,0x39bc60f9,0x3a6db357,0x3a09c60f,0xba4f442f,0xbab7e1fe,0xbaa7c1ca,0xbad2f3ba,0xb9f5de98,0x399276d5,0xb81626eb,0x382bc805,0xba04e8d6,0xba344ca4,0xbbcc43c5,0xbbad9a31,0x3a80a9fa,0xbc0fd4ec,0xbc107016, -0xbc2a1f41,0xbb6d2b42,0xbb082578,0xbb645b42,0xbbafa56a,0xbc124b07,0xbc399253,0xbc37024a,0xbbd8c5d9,0x3ae58ad9,0xbb6e9f7f,0xbbbce629,0xbbe90031,0xbbb1efc7,0xbb883f02,0xbafd62f7,0xba79a423,0xba84668d,0xb9a6e15b,0x397dca7b,0x378f9d43,0xb9bc2be9,0xba734767,0xba9d9c6c,0xba653a92, -0xb996448d,0xb914884b,0xb80fb38f,0xba0164fc,0xba3cd692,0x3a634e9c,0xb960df73,0xba68a893,0x3b6d76c2,0xbbd64332,0x3c2268e8,0x39b34ca5,0xbb8fb335,0xbbc04697,0xbbed65e7,0xbbf3d74f,0xbbc47ecb,0xbaa1d3ed,0xba0db9ac,0xba3930cc,0xbb6f44f4,0xbadc3cb4,0x3915c734,0x3a021837,0x39c77920, -0x38f82d2b,0xb82826eb,0xbab82d70,0xbaa6c67f,0xba3a3e2e,0xb93b0bbe,0x39ded851,0x3ab6b339,0x3a4e7ecf,0x39379896,0xba1f4bdf,0xb9bf5577,0xb9cad3cd,0xb4df93b0,0x386ad677,0x3a400ca2,0x3b0e637a,0x3b0b68d9,0x3a914639,0x3b960e6d,0x3c16d0b0,0xbb5f11c3,0xb93f2d45,0xbbb88fe7,0xbba9ffc6, -0xbbe1b820,0xbbe1bb91,0xbbe9aef8,0xbbc2523b,0xbb7f4a20,0xbaa5e08e,0x399db67f,0x3a9112d3,0xb90659b4,0xb90c17ed,0x3986d96b,0xb9a162c8,0xbaeb07d7,0xbb23bec5,0xbb6c4ffc,0xbb8b662b,0xbb6c2b6b,0xbb6d4c99,0xbb403127,0xba76f16a,0xb9ba4621,0xba38ccdd,0xba6914ec,0xba91f1f9,0xbaacfb99, -0xba9b4608,0xba21a310,0x3986d1d6,0xba5b2723,0x39242786,0xbaf1b375,0xbb86726f,0x3b221f65,0xbb658954,0xbbad7b3c,0xbb882be8,0xbb3eb268,0xba1be09f,0x3a806817,0x3ae0707a,0x3b75d8a6,0x3b8ec83a,0x3b824493,0x3b79cd2e,0x3b482fc2,0x3ae44d8f,0x3a6cfd62,0xb9779730,0xbab266b0,0xbac6bc6a, -0xbad45479,0xba8336f0,0xbae1a8ee,0xbb037c2b,0xbb008b63,0xba847b80,0xb9d29a29,0x3a1f4097,0x3a83dd39,0x3a949976,0x38a54a08,0x39aa7429,0xb8b966c3,0xb9ba59bb,0x3945ee94,0xb9f88926,0xb9e163c8,0xb99fb640,0x3ab1f685,0x3a9d27cf,0xb9518e06,0x3971ca4a,0x3a52ea0f,0x3a42d86c,0x3a68e64f, -0x3a1ddab0,0x3acf16a9,0x3b171013,0x3b439b57,0x3af7728e,0x3a76e329,0xb7930343,0xba03c24b,0xba92f78e,0xbaf4ef4a,0xbaea1ecc,0xbaf8f794,0xbb020575,0xbad602d8,0xbac86e55,0xbb0a4e1a,0xba9a7d05,0xba1a27af,0x395860fc,0x3a714009,0x3af52205,0x3b0fc511,0x3b0d5c24,0x3b1cbe42,0x3b379b0d, -0x3b0a9074,0x3b16b737,0x3b3155d2,0x3aca5d95,0x3b146b6f,0x3a240d82,0x3a4f2893,0x39768175,0xb9e382c9,0xba92ffe2,0xbacebe89,0xbb017ab3,0xbafbcbb1,0xbaf72b82,0xbae3d476,0xbac5705e,0xbac052c3,0xbaa16bbf,0xbad446ff,0xbaf6d62a,0xbb0a448e,0xbb0c4bb1,0xbb1da990,0xbb10abc3,0xbb10c090, -0xbb002bf7,0xbb16bee2,0xbad7ef42,0xbac0143f,0xbab802d9,0xb9f949dd,0xba31a47a,0x3a6bd7d2,0x3a5acbd3,0x3af37dd4,0x3b0df87d,0x3b06293a,0x3b303c5e,0x3b03f631,0x3af36ad2,0xbb039675,0xbb46f747,0xbb50d47f,0xbb66841e,0xbb635da6,0xbb6ea383,0xbb779533,0xbb8a290b,0xbb70dc6a,0xbb4eae1d, -0xbb35eb01,0xbb20fab5,0xbb0b76da,0xbaeaf782,0xbae7e752,0xbae775ed,0xbafb0cee,0xbafd7692,0xbaf05988,0xbb20df46,0xbb0f9f51,0xbb28990a,0xbb2ba248,0xbb45573a,0xbb3f645c,0xbb48f959,0xbb4599c9,0xbb52f0b7,0xbb2b1355,0xbb3f3edc,0xbb44666a,0xbb0cd4ad,0xbb37484b,0xbb36ade6,0xbb06e4f8, -0xbb6d05ca,0xbac891b9,0xbafc7b1a,0xbaf1cf6c,0xbafe9ba3,0xbb09fbbc,0xbb14ccda,0xbb1c3a10,0xbb285832,0xbb238aa9,0xbb271b43,0xbb24b2e7,0xbb1f759c,0xbb188be7,0xbb10ddf7,0xbb14d0eb,0xbb17158c,0xbb1a6a6b,0xbb1c71d1,0xbb1ad54b,0xbb202da2,0xbb16dcf0,0xbac1865d,0xb8c19674,0xbb1c0ca9, -0xbac37b34,0x39291be6,0x39d49d31,0x39bdcb6a,0x39a5cf05,0x3a205281,0x3a13f9f4,0x3a0682c9,0xba3361ee,0xbac87e3f,0x3a1912f8,0xb9b630e2,0xbb6beeea,0x3b3053c3,0x3afd36ea,0x3b4d1d31,0x3b082fe5,0x3b095224,0x3b0dec1a,0x3b11a13b,0x3b1410bf,0x3b0e5046,0x3b12291d,0x3b143236,0x3b1370e6, -0x3b0f6ec7,0x3b14a867,0x3b19f131,0x3b26772a,0x3b2d8c15,0x3b277fc3,0x3b1a80a3,0x3b0365c9,0x3b17ecd4,0x3a202e88,0xba4d60b7,0xbb330c52,0x3ab57bdd,0xba26c1b7,0xbb4c56a5,0xbb499928,0xbb3fd762,0xbb27cd3b,0xbb541990,0xbb4c1ce2,0xbb270fa9,0xbaa45918,0x3ab1abcf,0xbb1978a7,0xbabdb387, -0xbb751775,0x3b02e0ee,0x3b33ba8d,0x3b43d4ce,0x3b5ab1d2,0x3b6df5d6,0x3b6b37ad,0x3b5117dc,0x3b4d0b55,0x3b617e62,0x3b7409af,0x3b66567d,0x3b6797d7,0x3b725c0b,0x3b8924e0,0x3b8ef52d,0x3b7f2bea,0x3b43be15,0x3b269bd1,0x3b31cbc5,0xba5b0a7c,0x3a24c9e8,0x386b7c58,0x394f72bd,0x3abe3867, -0xba7a9fd2,0xb8fe4a0b,0xbab40b86,0xba8c255a,0xbae446dd,0x39b9f422,0xba436921,0xba4565fd,0xb8eb0245,0xb8c359bf,0xb8aad910,0xb9a4c737,0x3b7dea21,0x3b363fa9,0x3b52cc9e,0x3b715de0,0x3b89bdcb,0x3b8a27b8,0x3b5d9ac4,0x3b7aa9fb,0x3b7b9cdf,0x3b8e0ed6,0x3b79b5da,0x3b8e6d79,0x3b9055e6, -0x3bc44361,0x3bc547fa,0x3bbe072c,0x3b7191f6,0x3b5f876b,0x3a8ade38,0xba9cfee4,0x3a307876,0x3ab7525f,0x3a3bf6a3,0x3a0f8f2c,0xba2d73af,0xba60ec16,0x3a1c49ec,0xbadf7389,0xbaaa7473,0xbb196de4,0xba07bd9b,0xba055999,0xb9b78059,0xb8cede3f,0x3afc30b5,0xbb2ca2c9,0x3a044b63,0x3b78c41e, -0x3b7d1bbe,0x3bb1bcb6,0x3bbe2ffc,0x3bbdced0,0x3b983f49,0x3b9080f7,0x3ba5e055,0x3bd5e398,0x3bb71c24,0x3bb82b31,0x3bbdcc23,0x3c037f5c,0x3c02abd5,0x3be1682a,0x3b8e2cd2,0x3b4fdae8,0x3aa0408c,0x39b6350a,0x3b11bd79,0x3aa2ae31,0x3b078b7f,0x3a81cc26,0xba32791e,0xbabd9c7b,0xbb3e74be, -0xbb536628,0xbb994e53,0xbb8fcf2a,0xba9f0dfc,0xbb255164,0xba806f83,0x3a919f8e,0xb890b597,0x3b181fd1,0x3b3103c6,0x3b7954a7,0x3b6d89e0,0x3b991e56,0x3bc7a8d1,0x3bc110f7,0x3b93de68,0x3ba9414c,0x3ba8bf71,0x3bc6189c,0x3b9facca,0x3bc52220,0x3bcfbc51,0x3c23eb94,0x3c262834,0x3c19e83f, -0x3bb4afd5,0x3b854df1,0x3ac037e9,0xbab17602,0x3b026847,0x3b14c9b4,0x3b228be7,0x3aebebbf,0xb8647f49,0xba2e186e,0xbae91efa,0xbb15cfbc,0xbb9a60fd,0xbb8d59c3,0xbaf537d7,0xbb3c7efe,0xbad09e67,0x3ad1a5a7,0xba53eaa6,0xbb622668,0x3a1cddca,0x3be1c484,0x3bb76a66,0x3b1a5daa,0x3b2e4b41, -0x3b1d84c2,0x3a8897c8,0x3b908f97,0x3bedb7d4,0x3c0add04,0x3c512de2,0x3c17378c,0xbaf61a2e,0xbb436711,0xbb7b1b2b,0xbb622846,0xba93fdb8,0x39c3c5f2,0xba05fc9a,0xbb0cc172,0xbad7f896,0xbb857f53,0xbb7bd1e3,0xbb33bfd4,0x3b42af72,0xba8e0345,0xbacea9ea,0xba808793,0xb9f8ba9d,0x3b1873a3, -0x3bc70528,0x3bbc36bf,0x3b638a25,0xbaa8ca67,0xb76054c9,0x3c0f593a,0x3b9db5c1,0x3ac089de,0xbb1d3073,0xbbeacc09,0xbaed1839,0x3a1e2a85,0x3b087b22,0x3b905221,0x3aa57fb1,0xbbd8beb5,0xbbb54312,0xbb540ea7,0x3a9f65d4,0x3bd29359,0x3bfb03dd,0x3c061da6,0x3b9bfd6f,0x3b8ffb67,0x3b77a4fd, -0x3a3a8028,0x3ae7e0fe,0x3a542008,0x3ac49eb2,0x3930a51c,0xba9c5c89,0xba9f1934,0xb98e1fda,0xb9b0c3a3,0x38b13d78,0xbab17208,0xbb92b9bb,0xbbfffbe4,0xbba0c36a,0x3a974b2c,0x3bf5de50,0xbc213af1,0xbc02c1c1,0xbb3a7a9e,0xb9af4e89,0x3b483e73,0x3b8b9c1a,0x3b8fb18f,0x3b51acda,0xb619251c, -0x3a552483,0x3ba10059,0x3af6970c,0x3aaab7e8,0x3b04063b,0x3b0860a5,0x3b183cc8,0xb9a2cd96,0x3a7d0aef,0x3ae34685,0x3b2d1445,0x3ab087cf,0x3a32c58c,0xba9a639e,0xb9cc3951,0xba58bb98,0xbabc2531,0xb9a503e5,0x39d2a5ec,0x37d4d5e7,0x399b3bf3,0xb9c09cde,0xba89a9eb,0xbbb37e96,0xbb9bbdc7, -0x3aafeca9,0xbc13f484,0xbc165c47,0xbc10d808,0xba33d526,0x3b778cc8,0x3c4bbe6e,0x3c1a0164,0x3be4a7e9,0x3a98556d,0xbb008cc1,0xb9beeee0,0x3be6ee19,0x3b9fe17a,0x3b48c8cd,0x3acb2b89,0x3ad08884,0x3a3d7210,0x399a0c89,0x3a567018,0x3ae5fa5b,0x3a0197fe,0x3a67118c,0x3a174227,0x39716ac2, -0xba875c4d,0xba408cdd,0xba4c6035,0xb847f9ba,0xb867c3cb,0xb91f1bcb,0xb8d91e6d,0xba039473,0x3a620c4e,0xba31b645,0xb9ee28a2,0x3b47a0db,0xbba357e9,0x3beb1902,0xb89c02a9,0x3b2aa13b,0x3b8a4c7e,0x3c2ded01,0x3bd39ee7,0x3b8a47da,0x3af69ab0,0x3af52389,0x39856343,0xbaafe4b3,0xba825ca3, -0x3aa853ad,0x3a51dd35,0x3b53a69f,0x3b8f86ec,0x3bb41e39,0x3b57c12a,0x3b150b09,0x3a2e4f4f,0x3a032b13,0x3ac629fd,0x3ada6ee2,0x3abf14d8,0x39f2a317,0xba0b3473,0xb952d802,0xb8b89a77,0x390bc688,0x3925004b,0x3a3f1c09,0x3b21a2b3,0x3ae75e2a,0x3ae88af7,0x3b88cc6e,0x3c08cdfa,0xbbb48e39, -0x3a5ee544,0x3c034456,0x3bcc4566,0x3b814bad,0x3b4d0a5d,0x3b5ab9b2,0x3b5bb33e,0x3b41393a,0x3b915166,0x3be07f69,0x3bb39317,0x3b9b075d,0x3b809e7a,0x3b06c608,0x38fe6525,0xbada866e,0xbb3d8781,0xbb3c47f5,0xbb027bd9,0xbb706687,0xbb4f0e2f,0xbb011e09,0xba407de2,0xb8c76b36,0xba0984f0, -0xba6589c9,0xba6d8394,0xba7a19fa,0xba874181,0xb8e20354,0xb8d7719b,0x39aee18a,0xba6f07a3,0xbb132a34,0xbb09c936,0xbb5e7cb3,0xba28ca92,0xba39385d,0x38e65ef0,0x3b29be43,0x3b9d2deb,0x3bcc35a3,0x3bfb64e3,0x3bdaa2bd,0x3bba3b06,0x3ba513e7,0x3bba7077,0x3bb132ef,0x3b8537e7,0x3b6a157a, -0x3b2fc434,0x3ac868b9,0x3a59a65e,0xb9246814,0xbafa48c2,0xbae9edde,0xba83661d,0xbac57b79,0xb8e55411,0x39c066f6,0x3a568535,0x3ad935c6,0x3a99b9fd,0x39b4b08c,0x3957b2ca,0x39983805,0xb90d1afc,0xb98ba042,0xb801b30f,0xb9db3449,0x399f5b85,0x3a6302eb,0x3b09afc3,0x3b739891,0x3b4f73b3, -0x3b6cce20,0x3b8824ea,0x3ba84f57,0x3bcca722,0x3bb2688f,0x3baeaf65,0x3ba7fea6,0x3b878bba,0x3b45c461,0x3aecee71,0x3abb16da,0x398df506,0xb9de40c1,0xb9b23d4d,0xb9ee096f,0xba4d57ca,0xbae48a1f,0xbaf9ca4f,0xbabb8b6c,0xba8d14bd,0xb7ef9b94,0x3a5515ce,0x3a89524e,0x3ae1bca5,0x3b1ae1aa, -0x3b20d252,0x3b253599,0x3b343a65,0x3b2a93b8,0x3b2888ad,0x3af4e3a8,0x3a9af33b,0x3aed8256,0x3b571cf2,0x3b5cfd56,0x3b48233f,0x3b50a605,0x3b2f3a21,0x3b152be7,0x3b0aba8c,0x3af1dd05,0x3ad5d327,0x3aab7db8,0x3a072324,0xb9c59ebe,0xba89449e,0xba97132d,0xbaa638e8,0xba942791,0xba9d495c, -0xba1b39e3,0xba8b9d29,0xba9f5a2d,0xbabdc0f0,0xbaaa4048,0xba76b7d5,0xba3997c8,0xb9fbc3c4,0xb8afe4da,0x3aebb463,0x3a688358,0x3b1a3cbc,0x3b04c8af,0x3b3d07a4,0x3b47d5f9,0x3b13c38f,0x3b4a9840,0x3b5e6d14,0xbb707b82,0xba6a9a41,0xba6234f7,0xba6a3d47,0xba61c67a,0xb9986e4f,0x3882a4f1, -0x39cf96ab,0xb85c92d3,0xb9c67219,0xba275667,0xba3cea68,0xba393ef5,0xba7d9623,0xba5ed11a,0xba755492,0xba9c3a58,0xbaa9ea0e,0xbad06b44,0xbac850e4,0xbb1b95b9,0xbb0788b6,0xbb1a23f5,0xbb1b6896,0xbb3269ee,0xbb36a5e6,0xbb3c48c4,0xbb333b99,0xbb3d2a31,0xbb1f5c3f,0xbab52b4e,0xbb2bf331, -0xbadbd6c6,0xbb159880,0xbb653e61,0xbaa53d96,0xb99fccce,0x3a07d514,0x391dab0d,0x39842a4b,0x393f0b18,0x38f3c947,0xb8a65070,0xb8f5200b,0xb9438ba2,0xb967eafa,0xb9a1e4cc,0xb9ef7ef7,0xba1df22d,0xba3ac5dc,0xba33ccc2,0xba2e2f3e,0xba24d683,0xba0fd3c2,0xba0b61e1,0xb9abd1c7,0xba81bc63, -0xbb09c642,0xbb4e3aa2,0xba796706,0xbb05eceb,0xbb598b7b,0xbb5ee4dc,0xbb3ff41f,0xbb2e94ad,0xbb38a1d6,0xbb2cbed2,0xbb0539b7,0xba714989,0xb87d3a62,0xbb0f4705,0xbac19fc7,0xba80b823,0xba1cbcf5,0x38df4dcb,0xbae3b3fe,0xba222ef6,0xba0986cb,0xb999aacc,0xba0434d4,0xba269d6c,0xba5e3818, -0xba441619,0xba40ee77,0xba319cbe,0xba409ace,0xba35cd1e,0xba30cdcc,0xba03b6c6,0xb9f6fa09,0xba0154d4,0xba32e15e,0xba20c728,0xba9262f8,0x3a943bfb,0x3b171d67,0x3b51e5cd,0x3a0885e8,0x3b0cebe4,0x3b4322fb,0x3b4895da,0x3b3cdb4a,0x3b2624a9,0x3b51c28d,0x3b493d7e,0x3b3a132d,0x3b15f112, -0x3888419e,0x3b393f47,0x3b3b3bb9,0x3b8a326d,0xb9decfd0,0xba1958c2,0x384e9e70,0x3a79169e,0x39cdac84,0xb9543f1a,0xbaa284d3,0xba9fb91e,0xba8c3bdf,0xb9b1f782,0xb9ca3c74,0xb9cd2886,0xb9d73e53,0x3899a05e,0x38a146e4,0xb921f6d7,0xba14a768,0xba822f77,0xbada5cfd,0x3b090d34,0x3a8c1da2, -0x3ac96ab2,0x3aec794c,0x387a4426,0x3a0a0d70,0x376ab360,0x3a2c83a1,0xb9e03ef3,0xb9a99aa8,0xbb23e39e,0x397f9046,0x3a224fed,0x3a2a29ba,0x3ac382b0,0x3a4316e5,0x3b17ef3d,0xbaceefdf,0xb9c9754b,0x3a2fc3ef,0x3b03c649,0x3a9a470f,0x3a2e6515,0xbab27900,0xba73fe8c,0xba79f858,0xb9025e4c, -0xba0239ad,0xb8c72815,0xb8d06b71,0x3a65fcc6,0x3a8d5c2c,0x3a2612e3,0xb7c5bad4,0xbaa93d13,0xb88f06ae,0x3b3af3b7,0x3ab19023,0x3a80fbfa,0x3aeb7434,0x3a6fe054,0xba654a93,0xba286802,0xbb3a10db,0xba2224ee,0xbb2d725e,0xba95f32a,0xbace9b4d,0xba88fb8c,0xb9af90f7,0x3aae8ae0,0xba531a87, -0x3af5cc91,0x39d8bc77,0xba336f91,0x3af925c6,0x3b8395a9,0x3b4c8487,0x3ac8f243,0xbac39809,0xbb0bdc8d,0xbac46d52,0x3a82a6f5,0x39e13ab7,0x3a38a8bc,0x3a0f73c8,0x3b01a662,0x3b0706c0,0x3ab62dda,0xb90ee95a,0xbab88b00,0xba89e369,0x3a3c205c,0xb91b3d5c,0x3aa76420,0x3900e9e5,0x3aad5cd2, -0xbb196cad,0xba7de158,0xbb4c3d16,0xbb54d991,0xbbbd8676,0xbb8aa803,0xbb207ae7,0xba91a7e0,0xba27bcd7,0x39939858,0xba1f017a,0xb7641711,0x38fa6339,0xba7a5968,0x3b1a8272,0x3b8621f2,0x3b81cc86,0x3b30235b,0xba986542,0xba5288ec,0xba7af906,0x395a79cf,0xb9b18214,0x39da23a5,0x3a4a1d0a, -0x3b52c9ae,0x3b5d41a8,0x3b2e022b,0x3a55da83,0xb9f4b968,0xba1624e8,0x3b8210fa,0x3a95b10b,0x3b12c3ef,0x3ae31c8c,0x3a3f4070,0xba035ec3,0xbaee29c9,0xbb0fc5ff,0xbb241e16,0xbb96949e,0xbb9fd3cb,0xbb1b9ac4,0xbb5fc917,0xbb0cb0b1,0x3902663d,0x3a16cbbf,0x3b05535c,0x3affdc8c,0x398cfc04, -0x39b5a156,0xbb6ae34e,0xbb4bbfd2,0xbb8b0208,0xbbd58848,0xbb9735b5,0xbad4b420,0xb99286b6,0x3b8b3bb5,0x3b324822,0xbbab0ca0,0xbbc7989e,0xbbd9a64b,0xbc246b62,0xbbe9cbd8,0xbbca0ec8,0xbba30d88,0xbb34b8fa,0xbba07bfd,0xbb8aeebb,0xbba06af2,0xbb059649,0x3b2c691c,0xba622670,0xbab1f4b7, -0xba651e01,0xb9c5eaaa,0x3b304b41,0x3bdc2699,0x3bc23f12,0x3b91cbbb,0x3b1c874b,0x3a3f057e,0x3bf41314,0xba123c4c,0xbb7af2b3,0xbb868e39,0xbbe4cc1a,0xbb6624c0,0xb9e6f6c0,0x3b0c8f00,0x3b79e224,0x3978c6d1,0xbbf4b4df,0xbbb7d423,0xbb6b19bf,0xb9940add,0x3b656343,0x3b6727f9,0x3aabaa5e, -0x3ac73085,0x39944eb9,0x3b82a415,0x3b514491,0x3ad887a1,0x3a73253b,0x3a88f2cd,0xb9c05d7d,0xbad78063,0xbab2be2a,0xb96c5977,0xb946bbc0,0x3727da7f,0xbae5b455,0xbb969f32,0xbbf32e01,0xbbae59df,0x3a9801e0,0x3bdf586c,0xbc1165f3,0xbc087b10,0xbbb18261,0xbb5761c8,0x39043689,0xb994e278, -0xbac1fa3b,0xbb40680c,0xbbf23d96,0xbbbefb55,0x3a393052,0xbb811ea8,0xbb96db66,0xbb9853ed,0xbb7ca905,0xbb025bb1,0xbb420b4e,0xba82a756,0xbaac9654,0x39b94357,0x3a78b092,0x3887ec6a,0xb9d6560c,0xbaa6001e,0xba723b81,0xbab669a6,0xb925f237,0x39537a8c,0xb88791e6,0x39702814,0xb9cd8946, -0xbad51459,0xbbb58e67,0xbb8b5c37,0x3a195032,0xbbe18175,0xbbe13c60,0xbbecbffd,0xbb1f2a15,0x39acd853,0x3ba7b80e,0x3b062ec4,0xbada6a0d,0xbbd0286e,0xbc1d0deb,0xbbdaa725,0x3b6815f1,0xba8d8703,0xbb2e2660,0xbba1c336,0xbb759964,0xbb553609,0xbb01a714,0xba440df6,0xbaaf3487,0xb9de108c, -0x3a794cd3,0x38ae457e,0xb9cf4c39,0xba2e5a14,0xbaa1a021,0xba08a9d3,0xb9a1b38a,0x36c988e6,0x37821311,0xb9662ddc,0xb9e9998f,0x38a31f32,0xb9ae0c44,0xba5b50be,0x3b32711b,0xbbb43510,0x3bbfdd23,0xbafffbb8,0xba1807b1,0x39bb2ab5,0x398036ce,0x39fe853d,0x392b0ba8,0xba87ee07,0x3ad82fa3, -0x3abb52cf,0xba6e51c4,0xba059cb0,0x3a320d61,0x39fae37b,0x3ac573ed,0x3af574e6,0x3ab82600,0x397b6607,0x3852287c,0x39e73770,0x3a0c1d11,0x3a889a17,0x3b0441b2,0x3a9ae259,0x399a67e0,0xba50c519,0xb9b6f475,0xb9203815,0x3920ae4f,0x390f66f1,0x3a613885,0x3b038e28,0x3a7883e1,0x3a055fe8, -0x3ba57e4f,0x3be5d5a1,0x3a8ceede,0x3b881f7e,0x394dda9f,0x3a48976b,0xbb2775b5,0xbb44319c,0xbb76e872,0xbb60a70e,0xbb21f320,0xb9caac37,0x3b2a4fe3,0x3b2890ad,0x3ad911b0,0x3abb1c59,0x3a4e1a2d,0xb984d416,0xbb095680,0xbb0ecad8,0xbb473dfb,0xbb61df2e,0xbb055d77,0xbb16c168,0xbafc4086, -0xb9c8469e,0xb73e9903,0xb9952510,0xba0a7ae5,0xba512ced,0xba0d90df,0xba27fad4,0xb99de467,0x38cfc2c9,0x37c30129,0x3a3b83f5,0xba5157cd,0xbb3ae802,0x3a4dd372,0xbb4d0955,0xbb8f0228,0xbb50e831,0xbb119e62,0xb9da31d5,0x3a1dcf92,0x3acd3b1c,0x3b6fbfec,0x3b95e7a6,0x3b95d726,0x3b9b0ba7, -0x3b91258e,0x3b5aba4e,0x3b2dd265,0x3aac8804,0xb9844ef9,0xba88ae72,0xbad76a09,0xbaba14c9,0xbb021491,0xbb05fb1c,0xba6e8a7c,0xb9ae80f8,0x3977d126,0x3a8f5ef2,0x39c7703d,0x3a012ea0,0xba0d3435,0xb89ec317,0xb95b51e6,0xba00b028,0xb7ad6ca5,0xba4daa19,0xb9def502,0xb9d905ec,0x3b27bca4, -0x3b043cbd,0x3931fee9,0x3a11ccbb,0x3a74bc47,0x3ab5a825,0x3ae56e17,0x3aedfafe,0x3b1f6079,0x3b42be10,0x3b639beb,0x3b25e177,0x3ac935e2,0x3a047b52,0x3923c6c1,0xba40565f,0xbac588d9,0xbac62db3,0xbae85a98,0xbae90a71,0xba854f25,0xba8ca09f,0xbac08e84,0xb9ae99f8,0x390c74de,0x3a825c89, -0x3ae55392,0x3b10de36,0x3b178b2a,0x3b11bac3,0x3b17542f,0x3b356813,0x3b1c0fe0,0x3b339843,0x3b5a3346,0x3b11c6c4,0x3b741b03,0x3b0c0ff3,0x3b05b75a,0x3b036bfa,0x3ac67bcc,0x3a560ddb,0x399863a1,0x37939d25,0xb900ffcb,0xb9c54c0b,0xba0f6fce,0xba71de85,0xbaae8ce6,0xbabcf940,0xbae31239, -0xbaf41390,0xbafff1e7,0xbae9795e,0xbb04f0c3,0xbaba04dc,0xba9f22d4,0xbab6b71b,0xbad5f66c,0xba805998,0xba02cf56,0xb8975414,0x39cf11b9,0x39bf93ae,0x3b1792e8,0x3ab88944,0x3b288832,0x3b1151b8,0x3b2a5feb,0x3b623427,0x3b503d73,0x3b3da92e,0xba5c38a4,0xbadf6576,0xbaddfdba,0xbb1352a3, -0xbb20252c,0xbb16997c,0xbb2168bd,0xbb3387cd,0xbb32488a,0xbb24b0ea,0xbb1b77b4,0xbb0f1652,0xbafd1a35,0xbae91039,0xbadd769f,0xbae25a14,0xbb03621c,0xbb07609a,0xbb10b145,0xbb28f85f,0xbae78a4a,0xbb02ff6c,0xbaedc192,0xbb0efaf6,0xbb12b6e8,0xbb225caa,0xbb0de044,0xbb09e34c,0xbae0376f, -0xbad2102d,0xbb05256f,0xba0683b4,0xba7f6bba,0xbac448aa,0xba6d0ed5,0xbae5936f,0xb92852e3,0xba9a3768,0xba904e88,0xba959daa,0xbaa9bf9d,0xbabce58b,0xbad19d2d,0xbae0ad41,0xbae311d0,0xbaf21b04,0xbafd4892,0xbb029311,0xbb05b3d6,0xbb070fae,0xbb081e77,0xbb07a2fe,0xbb06a611,0xbb0309c1, -0xbafc6e98,0xbb0aab33,0xba9b3418,0xb9a8534a,0x386c5f8d,0xba993103,0xb949ec04,0x399e6f4d,0x3a141dea,0x3a0eebdf,0x3a11eaf1,0x3a767a25,0x3a75f56f,0x3a59ceb3,0x39b2118b,0xb9ec71e5,0x3a5a3c03,0x3a4f9c48,0xbb36b48c,0x3a4e647e,0xb9925643,0x3ae4a857,0x3a617afd,0x3a5844ea,0x3a762fdb, -0x3a51c8a0,0x3a4645f5,0x3a2e7c84,0x3a43d448,0x3a56b6f8,0x3a7f2bf5,0x3a5da9ae,0x3a6aab25,0x3a71c065,0x3a984067,0x3aa1311d,0x3a94f04e,0x3a808ab6,0x3a4b65dd,0x3a85c892,0xba74f723,0xbacf31c4,0xba81d6fc,0xba065596,0xbad9fcb4,0xbacab9e0,0xbac9dd2a,0xbab8bcaf,0xbaae2e06,0xbaf69a30, -0xbafb2112,0xbaef85e9,0xbb097190,0xba1ca6c0,0xba98e7c0,0xbb04dbd3,0xbb454e93,0x39a06f8b,0x3aa36f36,0x3aace3c7,0x3af9c57c,0x3ac9dfdc,0x3a96aa94,0x3a3b0cab,0x3a247389,0x3a81d773,0x3aeeb791,0x3acca75f,0x3ac276aa,0x3ab304df,0x3b03b170,0x3b0f5d31,0x3af4b5f8,0x3aa100f9,0x3a8693ec, -0x3aa3f897,0xbaa0cea4,0xb9745374,0xb9a27343,0xba8af388,0xb995ef9f,0xba9f74bf,0xba9cc86d,0xbb0b1bba,0xbb036f2c,0xbb19ebd1,0xba037849,0xbac77c45,0xbaa1846b,0xba6a3045,0xba93992d,0xba444f9f,0xbaf37fda,0x3af763a8,0x3ac8b596,0x3ac8f9f5,0x3b1b2aac,0x3ad5564f,0x3a94d79d,0x39a1448c, -0x3a2dae48,0x3a838d2d,0x3b16ff1b,0x3accedbe,0x3afff202,0x3ae4a751,0x3b5c0930,0x3b6046b2,0x3b4d3bd1,0x3ad7c7c1,0x3ae61770,0x37ea8dcf,0xbadd81bc,0xb81acbc3,0xb98e909e,0xb9c0f371,0xb9309ba5,0xbb06600e,0xbaa8248c,0xba2151fb,0xbb43ccbb,0xbae41c63,0xbb39fdc3,0xbaf20947,0xbaa55df8, -0xba96fc44,0xbabfe061,0x37739c33,0xbb4e9fa7,0xb904c5d9,0x3b0d566a,0x3b0b73e0,0x3b8a2e5e,0x3b3e8911,0x3ae02376,0x3a214452,0xb9108d9c,0x3a7963d6,0x3b832f5e,0x3b3081f6,0x3b312819,0x3aff7011,0x3b8d9af5,0x3b9492f8,0x3b791ae2,0x3b0a3a61,0x3ad3c0b9,0x39cd7ff1,0xb96a8fd4,0x3abbb463, -0x3903ce4b,0x3a846e89,0x3926ba2c,0xbadbebb2,0xbb1c7a68,0xbb5b9f1e,0xbb6d0d66,0xbb9b13b5,0xbb92e7ed,0xbb2478ab,0xbb21407b,0xba76a693,0xba4e7060,0xba3fae53,0x39123616,0x3a7e46c0,0x3b326587,0x3b01bcf3,0x3b6ef513,0x3b2a9240,0x3aaf34d4,0xb81ff1d4,0x39c989b8,0x3aa27ed8,0x3b73c400, -0x3b0ff3c1,0x3b3c9219,0x3b303d69,0x3bc695ae,0x3bcfaf83,0x3bb6a4ee,0x3b3d17fd,0x3b273550,0x3a904926,0xba8db900,0x3ad7b91b,0x3a4eeba2,0x3ad8777c,0x3aa4b582,0xba804875,0xba8f3870,0xbafd37a9,0xbaf70bfa,0xbb955dcf,0xbb8b9bb4,0xbb3ad295,0xbb38034e,0xbac5edce,0xb99ecf6e,0xbae4ede9, -0xbac80661,0xb922f553,0x3bd03165,0x3b8d671e,0x3981bebb,0x39d649de,0xba1e29e4,0xbb402e54,0x39d20254,0x3b40b2f6,0x3b89d213,0x3c18336c,0x3bf7602e,0xba753d09,0xbb53f57c,0xbb99161e,0xbbb2a00f,0xbb8f9a3a,0xbb8337cf,0xbbb128c7,0xbbbc4068,0xbb7bf077,0xbbb267f0,0xbb73ae20,0xbb2888f1, -0x3b312d2a,0xba7175b0,0xba81e05c,0xba0447f4,0xb87e11a2,0x3b3d847f,0x3bd11ff7,0x3bcc51e4,0x3b691f29,0xb9d6924f,0x39ea7251,0x3ba4f40f,0x3b027ff9,0x3ae045ec,0xbb259020,0xbbdd3584,0xbbaaac72,0xbb36294b,0x3a4277e6,0x3b6120d4,0x3aa2d663,0xbbb8fedd,0xbbd13254,0xbba2a06a,0xbab6a263, -0x3b80c435,0x3bb3337e,0x3b91c125,0x3b3ae726,0x3b4d44ca,0x3b411855,0x3a478700,0x3a774580,0x3a3b3e73,0x3aa8847f,0x395276f9,0xbab77466,0xba9caf57,0xb90c4cb6,0xb92b0305,0xb89a5a3b,0xbad21538,0xbb8f1997,0xbc0287d7,0xbba06b85,0x3b0fd9bc,0x3b9e97d7,0xbc0ecad3,0xbbc3e7d5,0xbba9fead, -0xbb5c5ddf,0x3b0caee4,0xba5ed026,0xbab49b5c,0xba64ad91,0xbb4436d2,0xba845d07,0x3b711bbb,0x39c94b8a,0xba4c7ca1,0xbaeb1cc9,0xba126861,0x397b7830,0xbaea2320,0xb913e8bb,0x39dde482,0x3a269200,0xb9608264,0xb991fdac,0xbadfea26,0xba7f09dc,0xba994f4e,0xba8373f2,0xb96beea4,0x39c78f3d, -0xb7f2eedf,0x398db97d,0xb9e7864c,0xbb0786d4,0xbb98a47e,0xbb751ef9,0xba333d19,0xbbe705df,0xbbe85e19,0xbbb95e3a,0xbb030e5d,0x39933f6b,0x3bd1d745,0x3b82837e,0x3ae70bcd,0xbaf7addd,0xbbb3dc90,0xbb80e2de,0x3b8ab264,0x3b08be98,0x3916adfd,0xbb12365e,0xbaaeeafd,0xbab4bf4d,0xba81adc8, -0xb956e24c,0x3a490359,0xba05ce09,0xb959bdb0,0x3920b737,0xb98669a8,0xbab18a23,0xba81e389,0xb9fed88d,0xb92d4055,0x3764a4e7,0xb9533f89,0xb6ea2a07,0xb9eb2def,0xb9dde871,0xba5944df,0xb9942ef0,0x3a496406,0xbb85a62a,0x3b434986,0xbb12b004,0x3933096d,0x3a013e42,0x3b273968,0x3b0cd88b, -0x3ad4da96,0x3a187358,0x39bab440,0xba47b2b8,0xbb0c38f9,0xbb2a5943,0xba07dbeb,0xb9e36775,0x3ace88d1,0x3b2b1096,0x3b4d7761,0x3b08b3f8,0x3b08fa9e,0x3a5788f5,0x3a46bb78,0x3acd78e0,0x3ad68201,0x3a9acd65,0x398f4cb5,0xba5f0085,0xb985aca0,0x38374c42,0x3915e4cd,0x3905fd3d,0x3a227269, -0x3af4e196,0x3988e6a6,0x37fb886e,0x3b8348c8,0x3b96c776,0xbb806cd8,0xb9563eff,0x3b1840a4,0x3a37463f,0xba975a63,0xbb33848c,0xbb320b49,0xbaf260fe,0xbac7b137,0xba11579d,0x3acc473e,0x3a97e5fb,0x3ade76f7,0x3a900294,0x3a19ca36,0xb9e2be0b,0xbad99c7b,0xbb1e2ad9,0xbb277a80,0xbb1a71d3, -0xbb6f9c23,0xbb41e654,0xba60ed46,0xb9a0bb8d,0x38f2421f,0xb9dc6e39,0xba54140b,0xba3a5aa2,0xb9fc8bfa,0xba4a1857,0xb9dfbc1e,0xba8b37e1,0x399f7415,0xb931685a,0xbb0b4695,0xbaa6c557,0xbb824a16,0xbb92bbba,0xbb80b9ee,0xbb496936,0xba83eff1,0x3a8e297c,0x3b20eb14,0x3b5e523f,0x3b95d147, -0x3ba89b56,0x3bab3cc1,0x3bb0f552,0x3b97ae78,0x3b598b38,0x3b33da39,0x3aeebf30,0x3a85b702,0x390cfae1,0xba3342b0,0xbb01f3f8,0xbb0347f9,0xba9c7c30,0xbae9ea24,0xb8145059,0x39f41d6b,0x3a39de62,0x3a731075,0x397bf1cc,0xba092196,0xba15fc2d,0xb9b8c49f,0xba2bf5f1,0xba8e5920,0xbaa61107, -0xbae85c84,0xbb0f031d,0x389e509b,0x3a64658c,0x3ac17af4,0x3a9ef9a1,0x3b03b5e4,0x3b1fdf59,0x3b4dec4c,0x3b72876a,0x3b79ddca,0x3b84c07e,0x3b844d25,0x3b529a74,0x3b133cd1,0x3a95e669,0x3a519b2e,0xb92afe55,0xba20f645,0xba46e1f2,0xba6370a1,0xbaa6d8bd,0xbb06fa3e,0xbaec0909,0xbab4a3bf, -0xba2ed094,0x3a0744e3,0x3ac7e171,0x3abb590b,0x3af793b6,0x3b19eafd,0x3b07b05a,0x3b0155f5,0x3afea9fe,0x3b06a246,0x3b061cc1,0x3a9f9a3b,0x3a447c04,0x3afdda32,0x3b4059dc,0x3b5969c6,0x3b3ce35c,0x3b3bf24f,0x3b13b6f7,0x3af60e95,0x3ad7d0e5,0x3a93cfad,0x3a304f47,0x398ecc78,0xb847e951, -0xba24ac93,0xba8dae70,0xba8f2e30,0xba9a641f,0xba84d023,0xba981a3e,0xba089af1,0xbaa50841,0xbabdfe34,0xbaaf8f6d,0xbab28f3b,0xba4df2f4,0xb9cd8e01,0xb8acbc4f,0x3a1162bd,0x3ae2cb3a,0x3a83e0b9,0x3b0af2fb,0x3ae44e20,0x3b11dd4c,0x3b0258d4,0x3b022672,0x3b191069,0x3b36c5a4,0xbaf4e7c1, -0xb96118b1,0xba0cc254,0xba5180da,0xba837180,0xba1b60dc,0xba251fdc,0xba1004e5,0xba0c5935,0xba03e571,0xba134c3c,0xba3563db,0xba4a859f,0xba8d143e,0xba851246,0xba8f366f,0xbaa80327,0xbab75e55,0xbac9d03d,0xbadab1f3,0xbb272445,0xbb17bb68,0xbb2a8d32,0xbb2d993b,0xbb404280,0xbb496e19, -0xbb49ce4e,0xbb4aebc6,0xbb31d0ad,0xbb12579c,0xba84e11d,0xbaccb685,0xba80bf65,0xbaa26d76,0xbaef38c1,0xba5e4d13,0xba8a4b4f,0x3922d16f,0xb8200ed8,0xb7aeb8b0,0xb91addc8,0xb9636c20,0xb9c184c2,0xb9ed2868,0xba2457fc,0xba4b5dd8,0xba695869,0xba806d78,0xba86ee3f,0xba8c1943,0xba8507d5, -0xba81c6c9,0xba7be06c,0xba68b19d,0xba60c8c7,0xba221d69,0xbad7c8ba,0xbb1a8b04,0xbb1015a4,0xbadcc95a,0xbb1852e7,0xbb0f1a2a,0xbb0c1e8b,0xbaec976b,0xbad61db3,0xbaeb3841,0xbaec080d,0xbabcf4d2,0xbab8d7a1,0xba5e3daf,0xbaaf1cb4,0xbad019d8,0xbae94742,0x3aa124f8,0x3af8f138,0x39562547, -0x3a314792,0x3a4be010,0x3a6e6218,0x3a7c4e3f,0x3a6fe3c3,0x3a321a1e,0x3a43141e,0x3a4c8160,0x3a65173d,0x3a3af8b8,0x3a3c5428,0x3a3c1c0d,0x3a73d0a3,0x3a879db9,0x3a843d72,0x3a654a49,0x3a4f2842,0x3a0e499a,0x3b03c27d,0x3b05c40a,0x39e80d21,0x3af05499,0x3b06a323,0x39b06b4a,0x3a098e5c, -0x3a0189c3,0x39f31773,0x3a5616ee,0x3a57f012,0x3a5d8ebe,0x3b04567c,0x3ad48f2f,0x3a07671a,0x3b0c832a,0x3b02303e,0x3aa98578,0x3a5a34fd,0x3abd6a48,0x3b0b02ac,0x3b2a6b73,0x3b179b7c,0x3a9a76ad,0x3a89b713,0x3aa1ccde,0x3b038130,0x3ae760ad,0x3adfbf74,0x3adf1b9a,0x3b10299b,0x3b14ecff, -0x3afb4798,0x3abf9bdd,0x3a7c3f16,0x3a0cadec,0x3ae86717,0x3abb743f,0x3a6effda,0x3af9eac1,0x3a9cf2a8,0xb8927199,0x3a01c952,0x3a0370d7,0xb97af227,0xb782a79a,0xba8e6988,0xb906eb98,0x3a4b1065,0x3a8dc2c0,0x3a8f677e,0x3a76398e,0x3b2df0bf,0x3a8bd426,0x3a4d6c04,0x3afd6c48,0x3b2ff12b, -0x3b667fc5,0x3b685590,0x3ab05aef,0x3ae4b678,0x3ada3a59,0x3b36176f,0x3aef63fe,0x3b0b19b4,0x3b009aff,0x3b53fb68,0x3b6ce762,0x3b58fd52,0x3b1ee4b8,0x3ab2ed3a,0x3ac3fe28,0x3b24cb72,0x3acacefd,0x3abe222b,0x3ae397ad,0x3a57785d,0xb9fc79a3,0xba00bf50,0xba65fffd,0xb97ac6a4,0xbab36dd9, -0xba17b109,0xbabcfc99,0xb8d7652e,0x39d216a5,0x3a3e0724,0x3a7d45df,0x3ad5913a,0x3aa981e6,0x3a21f906,0x3b28fe58,0x3b8f91b8,0x3bc01102,0x3bb42159,0x3b12656b,0x3ac69f77,0x3afc83aa,0x3b991d49,0x3b68b68c,0x3b66acca,0x3b64981b,0x3baa6059,0x3bacd7a2,0x3b8f043e,0x3b356310,0x3aaab2fe, -0x3a840e5e,0x3ac33069,0x3a52e920,0x3a0ea549,0x399aa93d,0x3a8708a9,0xbb20f9c8,0xbaa11d7c,0xbb5ec6d0,0xbb6d4697,0xbbac64cc,0xbb7ca5c7,0xbb4506f8,0xba3ae5a6,0xb9551f15,0xb91dd4d6,0x36ecfec0,0x3ada5b36,0x3af9b1ef,0x390bc019,0x3b3b950a,0x3b67163d,0x3bd805b0,0x3bc7a22c,0x3b1e2cea, -0x3b3a412c,0x3b31fd79,0x3b8adbb4,0x3b2aefbc,0x3b412422,0x3b45ba46,0x3bcbcfe0,0x3be1cab8,0x3bd1973c,0x3b900aee,0x3b3adb72,0x3acaf577,0x3b5bd0c6,0x3ac9fbf0,0x3ab9001b,0x3aca0bb7,0x3a2f34df,0xbab44ac2,0xbaf196af,0xbaf5d42e,0xbaf130e9,0xbb85a66b,0xbb8cd916,0xbb5e164d,0xbb2f067e, -0xba9dacf7,0xba347e1e,0x3a4ecb3c,0x3b89d1c7,0x3bb35599,0x3bbf4bbf,0x3baba3e7,0x3a5d9ddd,0x3ae789ad,0x3ace4a75,0xb979bb93,0xba16857e,0x37318300,0x3a5e0278,0x3b9c4695,0x3b6d76c4,0xbb53a976,0xbb9b248e,0xbbbbd5bc,0xbc1fbc3b,0xbbe24d58,0xbbb3dd34,0xbba284aa,0xbb919557,0xbba833d4, -0xbb9fea0a,0xbb73467a,0xbab79050,0x3b1a7def,0xba03769e,0xba3345ca,0xb9750538,0x39dde3a4,0x3b6827b9,0x3be1885b,0x3bda9325,0x3bafeca0,0x3b166e4f,0x3b8ac421,0x3bc1c7c2,0x3947849f,0xbaf265ea,0xbb31cf61,0xbbd1c851,0xbb690216,0xba99473b,0x3af7de1e,0x3b9c2760,0x3b1e7628,0xbb9edadc, -0xbbb85558,0xbb959910,0xba8d5c33,0x3b7dfaca,0x3bc17954,0x3bce9fac,0x3bb4a66d,0x3b751c0c,0x3b8f3e48,0x3b0b5a24,0x3ac34748,0x3a9c162b,0x3ac6f5f9,0x395d4d16,0xbad2aed6,0xba91cc2a,0x387393ad,0xb881d600,0xb8807f65,0xbaee8790,0xbb831297,0xbbeb034b,0xbb8e3013,0x3b736ef0,0x3bb64c8a, -0xbbd2723a,0xbba27d67,0xbbd53977,0xbb39c160,0x3bbcd0da,0x3b87cbda,0x3b6d9a75,0x3b74072c,0xbb59de96,0xbb742101,0x3b04e19e,0xba629e3c,0xba143b06,0xbac83497,0xba1f138d,0x3a063549,0xbac56d2a,0x3988c5f1,0xba07d316,0x3a393de8,0x3a2f4251,0xb9a7d183,0xb9ffb9bc,0xba67ce5c,0xba26dd62, -0xba797608,0x39044fa1,0x392c173d,0xb8c70af7,0x39abc14e,0xb91988ce,0xbb0d5bab,0xbb6aeb14,0xbb28a5a6,0xba9bd588,0xbba29989,0xbbab0906,0xbb4d0355,0xba0569b0,0x3b4cdcac,0x3c5b78d5,0x3c2180ff,0x3bed665c,0x3ac68314,0xbba062aa,0xbb934afd,0x3ba3c09c,0x3b4d2251,0x3b117a4b,0xba763035, -0xb9d5ce0e,0xba88edb6,0xbaa5ca38,0xb94a04de,0xba171745,0xb9aff220,0x3a958ce6,0x397aa5f7,0xb96501ca,0xba1c53d4,0xba70adaa,0xb9575605,0xb8bcc09a,0x3835f6bc,0x37627b7d,0xb8b45001,0xb961bd84,0xba593f5e,0xb90e7be7,0xb93b72ae,0xb8c8d4bc,0xbb886be6,0x3aadc4c8,0xba053169,0x3ba80866, -0x3bea58af,0x3c05a01b,0x3c0ef7bc,0x3bdf8d42,0x3a368744,0x3b48935d,0x3b0680af,0x3a61573b,0xb967c4ca,0x3a72a032,0x3a2123fa,0x3b33bb6c,0x3b6ef423,0x3b696eaf,0x3b28d506,0x3b08427c,0x3acfbe32,0x3a991f52,0x3adaceec,0x3b153a0f,0x3abacb2f,0x39c4665f,0xba340713,0xb980295b,0x38a02f38, -0x377bcbb1,0x38e0e8bd,0x3a37b202,0x3ac1dcd4,0xb932536f,0xb90396a8,0x3b726825,0x3b475f6d,0x3b2c04d4,0x3bb14027,0x3bd395db,0x3bd4efb6,0x3b3d75d8,0x3ad79551,0x3a1ef2ae,0x394987c5,0xb8a17539,0x3a8ab31c,0x3b9a94a1,0x3b73fb1d,0x3b6d3461,0x3b4d6103,0x3ab1e928,0xb8a24bb1,0xbaf3e7f9, -0xbaee6fbb,0xbb0ebb20,0xbb0762e7,0xba918cfb,0xba9a0f0d,0xba2dba65,0x38808e37,0x398746a9,0x37261a09,0xb9a01302,0xb9bc340f,0x392766fa,0xb93fe5f9,0x34789d01,0xb9ae0ed5,0x3a2da91e,0x3a2f03f1,0x394c8149,0xba1efd9e,0xbb10ba55,0xbaee426d,0xbae4f78f,0xba948fb5,0xb9f4fbc6,0x3a2494b2, -0x3a9f971f,0x3b212ada,0x3b7441bf,0x3b90fef0,0x3b99db2b,0x3badb8f9,0x3baf97ec,0x3b949938,0x3b83a31b,0x3b353ede,0x3a9ac928,0xb9401c66,0xba9eb502,0xbafa89f6,0xbb06d810,0xbac77e32,0xb955aabd,0x39bb5912,0x3a4dac69,0x3a94df4d,0x38c84c96,0xb68d6e09,0xba324695,0xb99a0b37,0xb8b9dc1f, -0xb9c6d6a4,0xb9d6b3b7,0xba710f2a,0xba2915b8,0xba234991,0x3b0dbd9e,0x3ae791e4,0x3a6b839d,0x3a8af478,0x3aa77aac,0x3b0b8237,0x3b37a3c9,0x3b67223a,0x3b6721b6,0x3b78309d,0x3b812dd1,0x3b54762b,0x3b161af7,0x3aa15c32,0x3a7fb09f,0xb9124f60,0xba59ed65,0xba70cf0a,0xba9fb2eb,0xbaa215aa, -0xba591a2b,0xba7bcea7,0xba5284e7,0x390fca61,0x3a3d2294,0x3ad4c077,0x3b07757d,0x3b07be24,0x3b0e207d,0x3b0233c6,0x3af42bb7,0x3b090807,0x3b10c54c,0x3b242c15,0x3b29c2d4,0x3af0325b,0x3b726a49,0x3b5c1fc5,0x3b4c3f68,0x3b5dd43b,0x3b59cf4d,0x3b4136d3,0x3b2b3679,0x3b285f1e,0x3b0952dd, -0x3ac6f2d4,0x3a83d788,0x38846539,0xba55b93e,0xbab5a2c0,0xbac42537,0xbac5a59a,0xbab927a5,0xba9ab560,0xba888f52,0xba291e60,0xb9c754f5,0xba62e10f,0xba61d2d4,0xb9a3dd82,0x39c50b1d,0x3a8ed2e6,0x3a8cea8b,0x3ae68c2c,0x3b3430d7,0x3b02df56,0x3b23b6de,0x3afdd1d1,0x3b232e7b,0x3b402310, -0x3b5cc907,0x3b576092,0xb975fdf9,0x395a6642,0x3993b97b,0xb9612279,0xba1c6776,0xb96a4b6b,0xb9cd4180,0xb9b9c1e9,0xba5d92f5,0xba8815a2,0xbaa2c174,0xbaad5a49,0xbaabc737,0xbaca3418,0xbab79931,0xbac06d08,0xbaec62d3,0xbafbb712,0xbb14cbfe,0xbb14577a,0xbadb8662,0xbac2ed4c,0xbaa086e6, -0xbaaeb67b,0xbacf2b01,0xbae82fe4,0xbab79928,0xba93a8d9,0xba90cf29,0xba065f2c,0xba0e91f8,0x39c33aab,0x3a37e2e5,0xb906eb6c,0xb9942edf,0x3a04725b,0x3a3c0083,0x38812546,0xb7ad9cd0,0xb670f884,0xb8d06e04,0xb92343a8,0xb99d36e3,0xb9aa3f88,0xb9ff6e75,0xba2ca73c,0xba61041a,0xba8a7087, -0xbaa30fa2,0xbab79bfe,0xbab1cb54,0xbaacfd4c,0xbaa3a94b,0xba925790,0xba87796a,0xba965691,0xb99e3b43,0xb91e2e4e,0xba7e7e64,0xb934dead,0x38f3123f,0xba515c41,0xba312752,0xba0bfe71,0xb9d2cfc7,0xb96a22a9,0xb937ecc2,0xb8e050b1,0x39fae3c7,0x39c729c6,0xb9195c70,0x3a33e2f9,0xbac271a7, -0xba86fdf7,0xbad49e1f,0xba0041f6,0xba08f57e,0xba111de7,0xb9cd71f9,0xba2bbe99,0xba4c82bf,0xba7380ae,0xba575438,0xba408d93,0xb9fbb99f,0xba2d5452,0xba2aa8cf,0xba2efdfb,0xb9de70c9,0xb9cf2eb9,0xb9ef848d,0xba14af2a,0xba128b47,0xba2519bb,0xba9d5d45,0xba3405e6,0x3ad83158,0xbaba410c, -0xba7af7c3,0x3a93b6ed,0x3a97c407,0x3a98afaa,0x3a6281ff,0x3a66e9b2,0x3a3c5c74,0x39aab30b,0xba83df68,0xbad5466a,0x3a869335,0xba226cab,0x3914a4a6,0xba8cd3fb,0xba04cdd7,0xb9bd061c,0x39e497db,0xb9a9404b,0xba841065,0xbae3cbe0,0xbae6a5c1,0xbabbdb28,0xb96a0837,0xb9fa5730,0xba22944d, -0xba6c0669,0xb96b0bb7,0xb8f7faa6,0xb99f714c,0xba1cb238,0xba36de2b,0xba43dfb0,0xb98ed178,0xb9cfab2d,0x381624e7,0xba74ef6e,0xbab735b4,0xba5795a7,0xbabb7237,0xbacb8bfd,0xbb09cb68,0xbaf070a0,0xbad84f73,0xbac67cd0,0xba53d2cd,0xba509bdc,0xba795003,0xba30d4f5,0xbab72d59,0xba35d279, -0xb8a62ef0,0xb8164978,0x3a8fabba,0xb9af2a6f,0xba916fce,0xbb1f2468,0xbb08213e,0xbad4c451,0x393298e6,0xba4d9de6,0xba14afa8,0xba5bca6e,0x39fe1c5c,0x3a2e5b35,0x399044a0,0xb99b350f,0xb9cb68b1,0xba0cdc20,0xb9b87590,0xb9013db4,0xba855424,0xba028466,0xb9d82791,0xbb274222,0xbaa35f7e, -0xbb0659ee,0xbb49b4e7,0xbb0c7cde,0xbb183b20,0xbb340f14,0xbac93095,0xbaa6f6cb,0xbac07b1c,0xbad384d9,0xbacf38ba,0xb9881871,0xb93334f2,0x3a2bfcd3,0x3b3e672d,0x3a72a244,0xba934559,0xbb46a6bf,0xbb8050a9,0xbb32703e,0x3aab58d0,0xb90b66a2,0xb9222c1f,0xbaa29fa8,0x3a521a42,0x3a97a209, -0x3a2c99d2,0xb90d759b,0xb9d8f6d6,0xb9f2e5ff,0xb986b8f0,0x390a56de,0xb9f1b8be,0xb9b53eb3,0xb96d8acf,0xbb36c915,0xbb24f4aa,0xbb5ff12f,0xbb8602bd,0xbb9a295a,0xbb8560c6,0xbb7654f7,0xbad62ff3,0xba23990b,0xbb012021,0xba97fd9c,0xbacda1f2,0xb9dccfbb,0x3a09b033,0x3a484a35,0x3b298787, -0x3a1f9616,0xbaa6b728,0xbb69c1eb,0xbb5a0f01,0xbb0bc493,0x3a93dc07,0xba36645c,0xba1cefc4,0xba4cb034,0x3afc74f4,0x3b1906e4,0x3ad50f27,0x39f2e8dc,0x3a22e8d1,0x3a06a9c9,0x3a6ed978,0x3a85dc46,0xb919a693,0x3a3d91ee,0x39e0ed2b,0xbae146fd,0xbab24f4b,0xbadb1ff6,0xbacdb448,0xbb77b4e2, -0xbb75c463,0xbb6eb4b2,0xbb29ab60,0xbab487f9,0xbaecc7a2,0xbacf6e9b,0x3af49643,0x3a4668c6,0x3b87391c,0x3b1c9da7,0xbace00ec,0xbb03b76c,0xbb675b91,0xbbbe8cff,0xbb83da94,0xbb13c9b4,0xba8ac722,0x3b811e28,0x3b864a39,0xba15a0c8,0xbb82a7ad,0xbbbaf154,0xbc093a28,0xbc018671,0xbc0391c9, -0xbc0ba5df,0xbbf1b427,0xbbbd44ab,0xbbc06c2e,0xbb5381d5,0xbacef2d7,0x3b079893,0xb9edcc3d,0xb99e8831,0x38affe2a,0x39febc9a,0x3b554fa6,0x3bc173ef,0x3bcb3ca6,0x3b892c31,0x3ad4050a,0x3ace96dd,0x3b0dd68c,0xba59a59f,0x3967a6b4,0xbb3e9293,0xbbcc6b56,0xbbe098df,0xbb8d31e1,0x39f28138, -0x3b3a4d11,0x3aa7f915,0xbb9243fc,0xbbd4ce20,0xbbc3aaf7,0xbb3dc602,0x3a86c7c5,0x3b218974,0x3a405ae2,0x3ab90221,0x3ace1d8b,0x3b1ff95e,0x3ac539a7,0x39cef7f4,0x3a1aa13d,0x3a6abfe1,0x379fc023,0xbac3b2c5,0xba85ed2c,0x380a052e,0xb92c386a,0xb9621e93,0xbae5fdb7,0xbb7a8b5c,0xbbe5d54c, -0xbb9275f3,0x3b4b1e8d,0x3b2ce799,0xbbe4a8fc,0xbb9bb6ff,0xbbe923f5,0xbbac051d,0x3add5009,0xbb820aa2,0xbba278a7,0xbb74d5de,0xbbc423e7,0xbb7d47cd,0x3a92ec13,0xbaf36920,0xbb3d0ff7,0xbbaa8cc2,0xbb6486c0,0xbb04f2c2,0xbb401efb,0xba94bf93,0xba990719,0xba94aa4e,0xba95b7c3,0xba806c34, -0xbad1348a,0xbab9b50d,0xba9a33c3,0xba196e36,0x38165635,0x396f058d,0xb8abbe1d,0x39944654,0xb8fc8b14,0xbb181c01,0xbb481fe9,0xbb10aa4d,0xbb4a123a,0xbb9695a3,0xbb9c6294,0xbacec7ad,0xbb23742c,0xbb0819ae,0x3ab8df32,0xb9ba7a0b,0xbb13df55,0xbb8206a8,0xbc0bf73f,0xbbefa007,0x3a890f80, -0xba26fce6,0xbb0705b0,0xbbb0764e,0xbb7d895b,0xbb5820e4,0xbb0ffd41,0xbaa08072,0xba5137f0,0xba96e19b,0xba240afc,0xb9198c06,0xba274eae,0xba99058f,0xba83e24b,0xb8f686f4,0xb8f06e59,0xb7d23b91,0xb88b6966,0xb8ae0099,0xb9706725,0xbab921ee,0xb98043d4,0x37046f15,0xbb120ea3,0xbb82375b, -0xba1d2417,0xb9e57c3b,0xb8a2daf9,0xbab6001c,0xbba77deb,0xba8b2505,0x3954affc,0x3910b078,0xb8d67523,0xba65bb86,0xbb07a991,0xbb4d9ed2,0xbacee7df,0xba4a627c,0x397f0c79,0x3a337017,0x3a1630ef,0x3a255ee4,0x3abbbbc1,0x3a8baddc,0x3a8648c5,0x3abe9cab,0x3ae5f54d,0x3a5eef4f,0x39110920, -0xba582a09,0xb9572cba,0x385c3a35,0xb852fe2a,0xb7880223,0x39e4accb,0x3a800410,0xba43f558,0xbab9c909,0x3b2020e8,0x37f2fb9c,0xb76a299a,0x39848167,0xbb2c0635,0xbb4172e3,0xbb9841f5,0xbbd9970b,0xbbf4a33e,0xbbd27e85,0xbbae6602,0xbb9534df,0xbb21b5c4,0xbaf536ce,0xba1fec1a,0xba680f9c, -0xba00eecb,0xba2667b4,0xbab82bc8,0xbace4f34,0xbb09c5d8,0xbb2aa540,0xbb21580f,0xbafe9fd8,0x37001191,0x392c815a,0x3982f528,0xb923e7bf,0xb9f145a4,0xb98fd50c,0x38e67403,0xb981c8db,0xb9d03bb4,0xba9f31dd,0x37f0d378,0x3a4a1181,0xba097890,0xb89a5ba2,0xbb282df2,0xbbc1b7f8,0xbbad5715, -0xbb9ddd14,0xbb88b4f0,0xbb369052,0xbae68a10,0xba98e66f,0x3af7dd40,0x3b76b692,0x3b9183cf,0x3b8e30f6,0x3b67fc13,0x3b2b9119,0x3aff5611,0x3a6a2ab9,0x38d9fc83,0xba756023,0xbabda8fe,0xbae4c978,0xbb0492e1,0xbabbc9c3,0xbab58fb0,0x380fc644,0x39ffda70,0x3a0d32c9,0xb8b671b8,0xb9f57a26, -0xba8351bf,0xba532c05,0xba2bad8c,0xba6873eb,0xbaac1b1e,0xbb052277,0xbb162e81,0xbb5b46be,0xb927830c,0xb9c5d5c4,0xbaa899a4,0xba7dc613,0xb9855795,0x38c900a1,0x39dc8111,0x39fd80c0,0x3accd782,0x3b146441,0x3b2e375b,0x3b060f85,0x3aa9f3bf,0x39d602ad,0x389062bc,0xba32d61d,0xba8c610e, -0xbaaf46bf,0xbac3607d,0xbae3571e,0xbae8c861,0xbaaa6d35,0xba8e234f,0xb8d8bd8e,0x3a5e6e6a,0x3af42f72,0x3ae45608,0x3af38080,0x3b010652,0x3abeba03,0x3aa2294d,0x3a88c1b7,0x3aac2471,0x3abbb289,0x3a7a2961,0x3a04860e,0x3b1603e7,0x3b029943,0x3b16bcc3,0x3b010ba9,0x3ae3ed15,0x3ab22c09, -0x3a987834,0x3a80f704,0x39c89d40,0xb961006a,0xba11f6cd,0xba220909,0xba6f6bbc,0xba930634,0xba9746c5,0xbaa0d856,0xba961449,0xba9fae1a,0xba68201b,0xbab1bc62,0xbaacaf82,0xba8c92dd,0xba9f439b,0xba02d556,0x38c505f3,0x3a1aa40a,0x3a974d7d,0x3aaa8b43,0x3ad1a6ba,0x3acba858,0x3aca2edf, -0x3aab0fb7,0x3a7be893,0x3ae7ace1,0x3acf02c2,0x3af4c5f8,0x3a0c30ef,0x399108ea,0xb929cb16,0xba223639,0xba87ff8d,0xba866dcf,0xbac7519f,0xbae6fda6,0xbabccdcc,0xba929bb3,0xba853c7c,0xba911665,0xba9bb116,0xbab99843,0xbab4e011,0xbaba8187,0xbacee798,0xbadc8273,0xbade43d9,0xbb02b373, -0xbb12c4a1,0xbb0aaffb,0xbb0bd70a,0xbb0f7d4f,0xbb16e34c,0xbb2147a1,0xbb13d14b,0xbb189d86,0xbad7468e,0xba9f2222,0xb9f7ea63,0x3948762f,0x39678515,0x392e9948,0x39eaefbf,0xb91318b0,0xba98fc4e,0xba04bab2,0xb9f7ca7b,0xba15f05b,0xba3b755d,0xba47d75f,0xba57026d,0xba733b37,0xba96f534, -0xbab5946d,0xbac75e54,0xbacd9282,0xbacc8793,0xbacc2b5f,0xbac57857,0xbac38373,0xbac0e429,0xbab8c728,0xbab2eb06,0xbaa638f5,0xbaeb84c1,0xbad895c1,0xba2a5bf2,0xbaec5942,0xbac7e9c3,0xb9b06508,0xb91f06ef,0xb8ab21ba,0xb826b15f,0xb864ae59,0xb966e095,0xb97afe99,0xba8ed485,0xba9de80d, -0x37b98c23,0xba45ee21,0xbb23d07d,0x3b0f4eb6,0x3b0fba0a,0x3b03c071,0x3aca8e9c,0x3ad04885,0x3ad47b1e,0x3aec8d0d,0x3aeea032,0x3ad4b3ce,0x3adaf886,0x3ae47e26,0x3af9fe6c,0x3ad8c920,0x3ad683b1,0x3ad665bb,0x3af5e38c,0x3b04100c,0x3b018a66,0x3af7d941,0x3adb2c7c,0x3ae9d76d,0x3abb9eb6, -0x39f1bbb0,0xbafd5884,0x3ae35d2b,0x3a0be654,0xbb0a32b5,0xbafa085e,0xbae9e172,0xbad2b8b0,0xbae78e51,0xbadb5ffb,0xbac4d3ad,0x399a1531,0x3aea6f0b,0xbad8f0af,0x3893b744,0xbab5ed50,0x3b03f5a4,0x3aef1a9d,0x3b0fa5f7,0x3b2a26c7,0x3b67a237,0x3b6098de,0x3b222bd6,0x3b166b4a,0x3b28cd04, -0x3b61942d,0x3b457864,0x3b3d73d5,0x3b3bbb8b,0x3b5f2ee2,0x3b6948cf,0x3b4f92dd,0x3b2f3cda,0x3b142583,0x3b14693d,0x39cbf40f,0x3a76f600,0xb7ab6b31,0x3a3f1985,0x3aa58a61,0xba767a2e,0x3948bc13,0xba104070,0xba522a0b,0xba0ad9dc,0x39696445,0xba80e298,0x3919d257,0x3a2598f0,0xb8b2918c, -0x39c2e189,0x3a8d1776,0x3b4a02b1,0x3ae51747,0x3b206f9e,0x3b301cf6,0x3b88ab9f,0x3b90be2c,0x3b2d0734,0x3b43e26f,0x3b482227,0x3b95330e,0x3b4965d8,0x3b5563d6,0x3b48e1bf,0x3b956ff7,0x3ba34c13,0x3b9e61c6,0x3b7347bf,0x3b568f53,0x3b07031a,0x3a264c6f,0x3a6ff709,0x3a86cdd1,0x3a2af6ec, -0x39461348,0xba55bba9,0xba2373a5,0x3a26a15d,0xba9ca3d3,0xba040a5c,0xba6acb4b,0xbacfcf65,0x3951fc2e,0x39ca73aa,0xba146d81,0x3adbb7ba,0xb9baafe5,0x3ab20caf,0x3af8d7eb,0x3b2c385f,0x3b846006,0x3bce2129,0x3bd49c18,0x3b7bd2b4,0x3b510569,0x3b71adcd,0x3bdfa733,0x3ba6544a,0x3b9c25be, -0x3b98a71b,0x3bdbf452,0x3be1070b,0x3bc1ae70,0x3b91afa0,0x3b55d016,0x3b16f1dd,0x3aa8a44e,0x3abb84bc,0xb987f136,0x39ac5cd2,0x3942a05b,0xbb1ae9fb,0xbaf2cf45,0xbb5aa686,0xbb881838,0xbb885ce7,0xbb61da8a,0xbb6476d0,0xba6e325e,0xb8953ab3,0xba6da1f8,0x3882af20,0x3b0102c7,0x3b3472a1, -0x3ae1fd70,0x3b283486,0x3b2a87f0,0x3bd4b089,0x3bcff6f7,0x3b760327,0x3b871a48,0x3b932c46,0x3be00fc1,0x3b855be3,0x3b81acad,0x3b8274c7,0x3bf80f8f,0x3c0b6788,0x3c0676dc,0x3bca3408,0x3ba39da8,0x3b42af0e,0x3a91314b,0x3ace531d,0x3969be17,0x3a83394d,0x3a092aff,0xbafa16f3,0xba9b6875, -0xba9b5c00,0xba8ee67b,0xbb508594,0xbb4d0cbc,0xbb821ea6,0xbaf0ca78,0xb9db5666,0xbaaf0ca2,0xb91b84f9,0x3b7f9679,0x3bc5eaa8,0x3c213935,0x3c095ba1,0x3b978ecd,0x3b9864ed,0x3b9a4706,0x3b764dd5,0x3b269383,0x3ae0e272,0x3b106515,0x3bc09e2f,0x3bb178e2,0x3a1051b5,0xbb2c8cad,0xbb8fdb42, -0xbbf77883,0xbbc289be,0xbb97778b,0xbba07280,0xbbc7fbb4,0xbb999321,0xbbaf940c,0xbb00a664,0xba452b51,0x3af12ab6,0xb93082f3,0xb852d0be,0x399ac295,0x3a6f6f87,0x3b6b9e4d,0x3bbcb0d7,0x3bd28ea9,0x3bafea17,0x3ad1486f,0x3bb50174,0x3b65a95d,0x3ac90c38,0x3a87cb2d,0xbacb02ac,0xbbc0a74b, -0xbb8993a8,0xbb19b203,0x3ac60562,0x3b9ad32c,0x3b72327a,0xbb132b47,0xbbbc9f82,0xbbbc8a55,0xbaf3ed0b,0x3b46f063,0x3bcefa34,0x3c0db9ee,0x3bebda65,0x3bc0ff3a,0x3b7043dc,0x3a30d091,0x3a6a66e6,0x3a83ea72,0x3ac5bcb8,0x39f4f40f,0xbaae4d1c,0xba394dd2,0x3924e152,0xb94ccc5a,0xb9238dd4, -0xbad2f64e,0xbb54e193,0xbbce919f,0xbb5579e9,0x3ba6f8f1,0x3b60201e,0xbba32911,0xbb255ce2,0xbbd24dae,0xbb1863d5,0x3c0e15a5,0x3ba9b98d,0x3bad4458,0x3bd894ff,0xb81b6ff1,0xba9c10f6,0x3b3bfbbb,0x3afdc17d,0x3b2caebb,0x3a357260,0x3acc4479,0x3afa221e,0xb9bc9248,0x3a713010,0x399e7743, -0x3a38fcce,0xb89c77af,0xba314ad3,0xba85e502,0xba232fd7,0xba192497,0xb9d9b1fd,0x39857243,0x38904267,0xb693ff65,0x39975de9,0x39b1aa69,0xbb009826,0xbadac8fd,0xba950218,0xbb5435f2,0xbb7aab01,0xbb8d1e5e,0x3a8cb798,0x3a380684,0x3b707260,0x3c76660f,0x3c49e8c5,0x3c39e4bf,0x3bdbf7a6, -0xbaac9776,0xbb35ccb3,0x3b9247cd,0x3bba27e7,0x3bae4a65,0x3ad4917b,0x3adb3b01,0x39ca2613,0xba27343f,0x37a790de,0x39b4076d,0xb95dc639,0x3a3e4607,0x39c07653,0xb8d8e8e1,0xba3a164d,0xba0e8008,0x38abdae4,0xb73dc1f1,0x359a5d63,0x386a88d2,0xb8e10d02,0x36eadc44,0xbaae6baa,0x38eb8ef5, -0x39f04ecf,0xbb67ec05,0xbb66dae5,0xbb1e0784,0x3b584456,0x3bfd642a,0x3c0e4f5a,0x3c138f11,0x3c34e83e,0x3c1c4f5c,0x3b4def1d,0x3b4d2341,0x3a9b82b3,0x3a6eb094,0xba9e39b1,0x392bb1de,0x39d56ad9,0x3b342a85,0x3b76b33f,0x3b9063f6,0x3b7adf34,0x3b65f064,0x3b15e702,0x3ad22b9f,0x3b07bfe6, -0x3b0f652d,0x3aa51b38,0x39ad0434,0xba0612a1,0xb755bfba,0x382c403f,0xb85bb55f,0xb7a97240,0x39ad0360,0x3a4e5937,0xba36170e,0xba43c4a4,0x3a22b1a3,0xbaebf469,0x3b0788fb,0x3b6ab38e,0x3c0ceadf,0x3c0448b0,0x3bb09df2,0x3b569824,0x3afe821e,0x3a992ea3,0x39e9230d,0x3a385cf6,0x3b82aba1, -0x3b3cec96,0x3b7c5efc,0x3b4ece74,0x3aaaa97f,0x388615ac,0xba94c949,0xbab213d5,0xbaae91c2,0xba52f911,0xba5f4858,0xb9f3dee0,0x3a149212,0x39e2969e,0x39d45563,0x38d8491a,0xb94ffd24,0x37bf911a,0x39bc0210,0x3709f329,0x38fb743c,0xba586da4,0x3a260fd3,0x39c6f9e0,0x3a87c08f,0x3b007b1a, -0xbb945503,0xba91eec2,0x38fb9042,0xb8a56b62,0x398634d1,0x3a4b0533,0x3aa5a7a1,0x3b28a7df,0x3b529126,0x3b746b1a,0x3b8663a1,0x3b9fbdea,0x3ba43fda,0x3b9340cc,0x3b860463,0x3b486848,0x3aecaa18,0x3996ef77,0xba481552,0xbb08e5af,0xbaf86837,0xba5a6b59,0xb9173f09,0x3a3e4a96,0x3a7eff19, -0x3a31c479,0xb836dd12,0xb9aee5af,0xba11b3e5,0xb9e63a45,0xb8f3c59f,0xb9eaecc3,0xba8261da,0xbaa121d2,0xbaaded7f,0xbab9d269,0x39dab05c,0x39d8a757,0x3a646dc0,0x3a5fd5a0,0x3a7ff877,0x3af3bb9d,0x3b3016be,0x3b7b8581,0x3b6fb543,0x3b7c6094,0x3b7a2ea0,0x3b5e7192,0x3b2b0367,0x3ad9a73f, -0x3ab7b180,0x3985592c,0xb9a04cc0,0xb9fcadc8,0xba3f3d61,0xba615ed7,0xba8a1569,0xba848f02,0xb9887117,0x39968ea7,0x3a9225b9,0x3b009dc7,0x3af3b165,0x3ace20c9,0x3adecf6c,0x3ab822b7,0x3a91cf5f,0x3a714e94,0x3ac2b630,0x3ad24179,0x3a81150d,0x3a277bac,0x3b237dd1,0x3b5d4f74,0x3b4fe932, -0x3b5c538a,0x3b6d0c73,0x3b751071,0x3b75c697,0x3b8010e5,0x3b538e78,0x3b24fde9,0x3afd7b57,0x3a596ddc,0xb94b86ab,0xba864c9c,0xba80f9aa,0xba7790ef,0xba3cdbe4,0xba203b13,0xb8a2f95b,0xb9a8cd34,0xb860e6f0,0xb9ed571e,0xb94ae24b,0x3979bf94,0x3a785701,0x3ae5c5bb,0x3ac807b4,0x3b32be5a, -0x3b195483,0x3b15026d,0x3af4cf8a,0x3ac27951,0x3ae5f223,0x3ad9eca9,0x3b22dc25,0x3b31abce,0x39733980,0x3ae04d10,0x3adf76ab,0x3abea2c1,0x3a85a25e,0x3aaea47a,0x3a90084e,0x3aaf0d2c,0x3a38d7ea,0x39a44a49,0xb8db9fca,0xb9cdb0cb,0xba1dbadd,0xba94cfb6,0xba81f493,0xba8ca7a0,0xbab2c466, -0xbac5c1d9,0xbaf4842f,0xbad5d742,0xbae3387d,0xba98f1ab,0xba818f21,0xba4adc2c,0xba8e049c,0xba97265e,0xba63e4a5,0xba15b36a,0xba3578e9,0x3950b16d,0x3a604a03,0x3a5aefa2,0x3ae5e8ee,0x3a897f3f,0x3995c061,0x3b062abc,0x3a2b4243,0x3a76279d,0x3a3e3baa,0x3a419403,0x3a38e1bd,0x3a45e2c9, -0x3a34e9c7,0x3a3d1844,0x39ec79a5,0x3985e6a4,0x37a3bb8d,0xb96c87be,0xb9ef0382,0xba2d5d33,0xba176645,0xba0bc008,0xb9e8ea16,0xb99a9d35,0xb9801d9b,0xb93ee5eb,0xb8d515ca,0xba3e823c,0xbb00b4c2,0x38de56cf,0xb9d02138,0xbaee6a22,0xbaf01ec1,0xbacbe5b3,0xbaaffe7c,0xbabf5fcb,0xbabb42b8, -0xba9abd4a,0xb8fd38d3,0x39fc9ea4,0xba9edf49,0xb9630f4b,0xb9fe57d2,0xbaba18b1,0xba9f054c,0xbae040f5,0xba848bc4,0xba82e4eb,0xba5cabc1,0xba887542,0xba9b0408,0xbab737b7,0xbaa9a525,0xba9ee247,0xba7457d7,0xba9a430b,0xba9e5a84,0xbaa20f46,0xba856867,0xba812573,0xba81c214,0xba8c303c, -0xba793f4a,0xbaa8680f,0xb95ee1d2,0x3a64a95f,0x3b3bee0a,0xba5f0606,0x3a15fe5c,0x3b25fddf,0x3b2cd91f,0x3b26f8c3,0x3b083ba8,0x3b2af283,0x3b1fefd7,0x3af5140f,0x3a5988ce,0xba8d5593,0x3b122ff2,0x3aa93916,0x3b383b23,0xba920db7,0xba9e4180,0xba635359,0xb89f14cd,0xba0cf8ff,0xbaa2eee7, -0xbb17c67f,0xbb183756,0xbb080bae,0xba45f86c,0xba8c63b8,0xbaa24cc6,0xbac1c71b,0xba67d67b,0xba5addcd,0xba75bffa,0xba883c5e,0xba9e3c3b,0xbacb762c,0x3a8a3c84,0x38b3dfc4,0x3a1161eb,0x38b24292,0xbaa3e99d,0xb998fd37,0xba55b879,0xb9bdb399,0xbabd9fb2,0xba2caf74,0xbb021bbe,0xba85a008, -0x38ae72f1,0xb7fe6084,0xb8f421c1,0xb8aa1d97,0x39b045f4,0xbae263a4,0xba62d7bb,0xb9ee6d80,0x3a17607a,0xb9a5a46a,0xba70d171,0xbb399bc3,0xbb24b4ac,0xbb0eacc8,0xb95aa579,0xbac98c05,0xbac1d2d1,0xbad3ec48,0xba22a783,0xb980cb1c,0xba127edb,0xba1777a7,0xba94a73d,0xb8b6ab9a,0x3ac418b3, -0x3995b253,0xba18ffee,0x378320ac,0xb995868b,0xbb05a753,0xba6ccabe,0xbb1e00a8,0xbb0e4254,0xbafe94a9,0xba9b7fe8,0xbb3a28df,0xba88973a,0xba231659,0xba2a8c19,0xbae658f3,0x3a17f0bb,0x39773659,0xbac020fb,0x39816085,0x3b0ab20d,0x3aa497a0,0xba26faf9,0xbb6a191b,0xbb909035,0xbb649174, -0x3a4afb84,0xba649876,0xba8141eb,0xbae14411,0xb90925e4,0x3987c3d2,0xb8f0cd43,0xba0178a7,0xba8b0db0,0xb9ab0ecd,0x3998404a,0xba362bb1,0xba04ff8b,0xbaabe8ba,0xb9c0f1a2,0xbb5aa4ea,0xbb02b619,0xbb4b51da,0xbb8da641,0xbb8ba8bd,0xbb554c65,0xbb8f99a1,0xba18e54d,0xb933cbcd,0xbb0dc79f, -0xba8c6811,0xbad31d42,0xb9e16b3e,0xba91e8ea,0x3a005372,0x3adf318d,0x3aa40d0a,0xb9be4b7d,0xbb6ce8f8,0xbb6bb36a,0xbb2b64bf,0x3a3ac4e4,0xbae0d55e,0xbb106415,0xbb030357,0x3989aa0e,0x3a77ecff,0x3a1928e9,0x39a2f088,0x394b6fb5,0x3a2a95e7,0x3b3d5bc5,0x3a05575e,0xb9e3136a,0xb7e3d982, -0xb99a72d4,0xbb012187,0xbaa43555,0xba8968c9,0xba7ff903,0xbb2aa77e,0xbb38a726,0xbb80fd4f,0xbb06207f,0xba785395,0xbb22de30,0xba32ae86,0x3ba4fe15,0x3b5cda27,0x3b5f2e7b,0x3b260168,0xba1ccb5a,0xbb06f385,0xbb684965,0xbb9ec4bc,0xbbb2b932,0xbba4c52a,0xbb8b370b,0x393bd67d,0x3ae35ba1, -0x39ed587b,0xbb7eef47,0xbbc13ac2,0xbc26624a,0xbc1fc2c4,0xbc1e22ab,0xbc0fcdd9,0xbbe8b417,0xbbd3382e,0xbbb32b5a,0xbb03f857,0xb94ade28,0x3aaac494,0x383c6fee,0x393b9dec,0x39bda5b8,0x3a4e17d2,0x3b4f2356,0x3b9dc346,0x3bb916fe,0x3ba460ff,0x3b6abe4a,0x3b654e6b,0x3a78878b,0xbb026819, -0xbabb61f0,0xbb43bcab,0xbbb9d48e,0xbbd839be,0xbb896786,0x3a904c0a,0x3b3fcd8b,0x3af98557,0xbb301039,0xbbc36054,0xbbd0d973,0xbb57e853,0xba4d3be5,0x3a587d14,0x391578fd,0x3afac8c7,0x3aab552b,0x3b1c8ad9,0x3afb6750,0x3930e829,0x3a1554c7,0x3a32c20c,0xb8e6e0d2,0xbab045be,0xba1d5cbd, -0x37116eca,0xb9832437,0xb94e69ee,0xbac6407a,0xbb477802,0xbbadb2c1,0xbb6177db,0x3b81f36d,0x3abfa9e5,0xbba7a832,0xbb5b8fe4,0xbbebd193,0xbb9e72b1,0x3b5664e7,0xbb37c0f4,0xbb749f64,0xbb2318f3,0xbbd3d511,0xbbb5a80f,0xba46aac2,0xbb29fc86,0xbb33122a,0xbbb7368c,0xbb8ac991,0xbb30d25a, -0xbb36fb3e,0xbaa8b4ba,0xbb006733,0xbad6da87,0xba963250,0xba9f383e,0xba8d56ea,0xbaac0c25,0xba4f165f,0xb95df72c,0x397de1a8,0x37dca0b4,0x37d42977,0x38e8f08a,0x3a1c2208,0xbad96a96,0xbabfe703,0xba4e0e95,0xbb8f5bc8,0xbb3608aa,0xbb47bafd,0x3b3c0246,0xbac60f11,0xbaf36d8b,0x3aa7592a, -0x387e8b09,0xba9529ae,0xbb003635,0xbc093233,0xbc06417c,0xba3b7595,0xba581072,0xbaa02db4,0xbba9135f,0xbb81dfd0,0xbb6bdd40,0xbb24f80e,0xbad283b2,0xbae23d29,0xba820755,0xb90beb47,0xb876d909,0xba3299a1,0xba22f5b2,0xba3beea4,0x395ea30c,0xb9103a89,0xb7228a96,0x38c628d4,0xb968c2fb, -0x38911cf1,0xbac69ef3,0x39dcd161,0x399fdcef,0xbb9c5025,0xbb8e6a1a,0xbb4a9bc4,0x3b8888b5,0x3ad0bda7,0xba2859c4,0xbbf56aad,0xba61815b,0x3abe6f1f,0x3adbaeac,0x3a924526,0x38e017ae,0xba81f523,0xbb28dd0e,0xbada050b,0xb9e2ed66,0xb900924e,0xb913833b,0xb9ba89bd,0x398fd626,0x3aa56e9e, -0x3ad507a3,0x3aba1e0c,0x3ac49ff8,0x3b023c94,0x3a243533,0x38c5e5c8,0xba111f47,0xb7428fda,0xb90126ce,0xb90354dd,0xb9088f85,0x39805294,0x39816b17,0xba5ada03,0xbaf2b381,0xba3dba49,0xbb8b8722,0x3b90e072,0x3b0bb4c1,0xbb289198,0xbad76304,0xbb661dc2,0xbbb57d31,0xbbf59897,0xbbf20ae5, -0xbbcac68c,0xbbb56bee,0xbb4b3853,0xbb11c9ce,0xba593922,0xba780114,0xba07893d,0xb9a57d08,0xba6909d6,0xba2e0831,0xbab51445,0xbb03123a,0xba0d07a4,0xb9adc8bd,0x3a419374,0x3a29c9cb,0x39d15af0,0x38f44c97,0xb7ca2fa6,0x392fcbef,0x39d28e9e,0x3916d91c,0xb8bea1fd,0xba45d6a7,0xb915d41a, -0x3aae1a82,0x3af800f9,0x3b007ce7,0xba880600,0xbb8ae162,0xbb7b8be8,0xbb843876,0xbb9dec3c,0xbb919928,0xbb7ef07b,0xbb5650c5,0x39205700,0x3b166165,0x3b472c07,0x3b4a4d1b,0x3b34f97d,0x3b1d64d4,0x3aea9318,0x3a229214,0xb9d37024,0xbaca636c,0xbaf192f3,0xbaba5e45,0xbaec1b25,0xbab51aa6, -0xba0547a9,0x39705c49,0x3a05e38a,0x39bc0e8e,0xba4fd9c5,0xba379a2a,0xba77f612,0xba18a239,0xba15d397,0xba5da8fc,0xba9572bd,0xbb0b2d8f,0xbb07a39f,0xbb4625f0,0xb8dd8e5e,0xba90ca50,0xbb361484,0xbb071d5a,0xbaee8876,0xbabb1bc2,0xbaa3814c,0xba9de205,0x39708b17,0x3a98a537,0x3aed684e, -0x3ac4ab01,0x3a7e7560,0x39a14754,0xb7eda7b7,0xba3ece64,0xbaa04427,0xbac6fa93,0xbae62dcb,0xbaeabeba,0xba91809f,0xba27b044,0xb9ed0cbc,0x39fa969a,0x3a8c95e1,0x3af2bc69,0x3aee5e22,0x3acbcc0f,0x3ab63251,0x3a5ea67d,0x3a13ad22,0x3990680d,0x3a275624,0x3a69929c,0x3a6407e6,0x39b69467, -0x3b1f74ef,0x3a9a231c,0x3a92cd9a,0x3a88981c,0x3a3c2431,0x3a658649,0x3a8070b2,0x3a86759f,0x3a081832,0xb8744ef8,0xb98ac020,0xba05b46b,0xba4721d4,0xba713234,0xba865a48,0xba8c979a,0xba8d02e5,0xba8680d4,0xba88a5ac,0xba90d706,0xba3544ca,0xba0f9f62,0xba1aea6b,0x38a3aeca,0x3a502ca3, -0x3ac740f8,0x3add61e2,0x3aa43af9,0x3b18e61b,0x3aa06281,0x3ac85228,0x3a359f3a,0x3a0a763f,0x3ac8f2c6,0x3a97c6b3,0x3a97cbc1,0x3b1472a4,0x3a5e5f89,0x3a184f44,0x3916b274,0xb9b1432a,0xba2e80a6,0xbab7702a,0xbae7f3e7,0xbacc4700,0xbaa776a5,0xbaa0f867,0xbaa6cc9e,0xbaae4961,0xbac567f0, -0xbabe82dd,0xbac19938,0xbad7be0e,0xbae3791f,0xbae368f9,0xbb02fe5e,0xbac9aed0,0xbab6a5ce,0xba8d9340,0xba888ff0,0xba84c1e7,0xba93cb03,0xba41598c,0xba4200b4,0xb91fb2b1,0x398ffc91,0x39a6789d,0x3aefe330,0x3acba102,0x3ac16f91,0x3b0fa867,0x3a78f79c,0xb9fbd06c,0xba31a096,0xba0cb7d0, -0xba38ba2b,0xba52848c,0xba4ffcd7,0xba4487ac,0xba56297b,0xba8710f7,0xbaa62e8c,0xbab9eacd,0xbac2d7f3,0xbac65138,0xbac9af33,0xbac4d671,0xbac3b0df,0xbabfe9c3,0xbab7a6a8,0xbab1dde1,0xbabc4c64,0xba957abc,0xb9e5bf3a,0x39d62845,0xba8517b7,0xb924056e,0x3a715d79,0x3a9796ff,0x3a881603, -0x3a84bf1b,0x3a95ae3e,0x3a76489b,0x3a30ae4f,0xb96b4b96,0xba4b082f,0x3a62e589,0x39bb5fd2,0xbb10c31f,0x3ac600b3,0x3a6b221e,0x3b0f15a2,0x3aa6523b,0x3aa2706e,0x3aa1848b,0x3ab1a15c,0x3ab2e940,0x3a9f7dbe,0x3aa640fe,0x3ab3e893,0x3ad65b15,0x3aac96b8,0x3aa826a0,0x3aa94970,0x3ac8593c, -0x3ad82051,0x3ad4d15d,0x3acc91a1,0x3ab049d7,0x3ad4dba2,0x37332067,0xba88628e,0xbb0c984d,0x39d6d0d3,0xba8cac30,0xbb22bcc1,0xbb19ca26,0xbb0e44fd,0xbb066d95,0xbb208fb8,0xbb1cf0df,0xbb1aa450,0xbaad4adf,0x3a1b404c,0xbb072b12,0xbacd082d,0xbb483ff6,0x3aa6715c,0x3ac6611a,0x3ad2ee2d, -0x3af79185,0x3b27e8e0,0x3b1ba30d,0x3ad65a89,0x3ac2430a,0x3aefbe1b,0x3b3e1ace,0x3b193838,0x3b0dcece,0x3b096859,0x3b2ebeb8,0x3b3b38e1,0x3b2a8e0a,0x3b0dc431,0x3afd8bc4,0x3b10ba56,0xba59ba92,0x37a88d11,0xba20d6d4,0xba4cfae7,0x394d9fb0,0xbaba2cb4,0xba1a5bc8,0xbacb6f96,0xbad484b7, -0xbaa1037e,0x3a044214,0xbadeb0f1,0xba1d8422,0xb95f32e4,0xba9c5690,0xb9ede1fe,0xba77af6c,0x3b3f5e72,0x3ad1f506,0x3addb9c4,0x3aebcdac,0x3b3225f8,0x3b35a2ca,0x3ac5dde8,0x3ae61a08,0x3b0713f1,0x3b8358a9,0x3b0e3866,0x3b11b7a2,0x3b0bf702,0x3b6a01ef,0x3b82457e,0x3b829d3c,0x3b40f563, -0x3b479fda,0x3abad7ad,0xba8b895f,0xb8492a78,0x3724f78b,0xba3ae40c,0xba24fc84,0xbad085b9,0xba7429f1,0x3a26ac44,0xbb27dc67,0xb9d792e5,0xbac3c399,0xbb0874c1,0xb9249b3c,0xb931230c,0xbadd700c,0x3a5cf4e8,0xbb0d460d,0x3a4d252d,0x3af57982,0x3ae5a950,0x3b3f750b,0x3b8cd546,0x3b861ca3, -0x3b0dc8be,0x3ac2386a,0x3b126ae3,0x3bc4aa24,0x3b72eb23,0x3b57e7f0,0x3b43db82,0x3ba7a4d0,0x3bb29d30,0x3b9e56f3,0x3b76f883,0x3b4b44b6,0x3b0ce826,0x39ec0cac,0x3a8e794d,0xba5088a6,0xb97e2df8,0xba6a5ec2,0xbb1710b2,0xbb1abb1a,0xbb43fa50,0xbb925341,0xbb4bbe13,0xbb435a19,0xbb7a98ce, -0xba987463,0xb907c988,0xbaef613e,0xb9e5ce3e,0x3a421902,0x3b08ece5,0x3b111087,0x3ab85e67,0x3ac219c8,0x3b7e65ae,0x3b61f435,0x3af2995b,0x3afb939d,0x3b416d19,0x3bcff233,0x3b35d5c8,0x3b0edd84,0x3b1b3f3c,0x3bb9b1a0,0x3bdafa6c,0x3bda1f91,0x3ba4da98,0x3b96b067,0x3b421ff4,0xba32c926, -0x3a896c26,0xba5a1944,0x389864ae,0x38a85d58,0xbafe2ac7,0xb9e7c35d,0xb9d464b1,0xb985cad5,0xbb080178,0xbaf5778e,0xbb7e2a79,0xba9ec7c5,0xb8b19e49,0xbb00101e,0xbab3682d,0x3b34c74a,0x3b94a04f,0x3c27749a,0x3c0abd82,0x3bc502df,0x3b81ed12,0x3b5f9ff7,0x3b578fd1,0x3b10f69b,0x3a9cbb85, -0x3abdc624,0x3bb76037,0x3bd345be,0x3b8f5cf5,0xba4832b5,0xbb61c084,0xbbb844fd,0xbbbec7a3,0xbba8f837,0xbbb9752c,0xbbebc123,0xbb8dad2f,0xbbb10b24,0xb999b31d,0xb8b92a3c,0x3a944f50,0x38b9ae8e,0x390b74f5,0x39951846,0x3a597657,0x3b396575,0x3b7ec400,0x3bacc64b,0x3b9b88e4,0x3ad16e68, -0x3b9c5fd4,0x3a74a758,0x3aeede4a,0x3b24eb2e,0xbaadf728,0xbbb0cef1,0xbbb5fa42,0xbb84540b,0x3a88fb22,0x3b690137,0x3b6c28a2,0xb9b20279,0xbbbc78ac,0xbbdddd07,0xbb422bcc,0x3a58c1d6,0x3b88822d,0x3bdf9c28,0x3bbe4b1c,0x3bafb5f3,0x3b12cd27,0xb9967814,0x3807d2e9,0x3a17198b,0x3a81d059, -0x3981423d,0xba7b6b8a,0xb9932edb,0x374486f7,0xb93e04b2,0xb966eb17,0xba8a3c29,0xbb244007,0xbb9d002a,0xbb202025,0x3ba27029,0x3a8fea04,0xbb8c7910,0xba6ec678,0xbbabfc21,0xbb108e5b,0x3c013d35,0x3b2a7b6b,0x3b3f033b,0x3ba1cae2,0x3986cb85,0xba08d32b,0x3b14efa7,0x3b292c16,0x3b4ea932, -0x39e6b2a7,0x3a9345d5,0x3a949e80,0xb9956fb3,0x3a03b557,0x399f1b5c,0x388dd6c3,0xba6d4a66,0xba7aa0cc,0xbac4fe0c,0xba16a4c4,0xba1b829b,0x3781a8eb,0x3942de0d,0x37188899,0x391924bd,0x37deb21a,0x3a4e631a,0xba86b8be,0xba2591b7,0xb9b17ea2,0xbb8f5580,0xbb4f71ad,0xbb5fb661,0x3b9fab1f, -0x3a31d926,0x3acaeff7,0x3c18afdd,0x3c099c67,0x3c110ed3,0x3bee565b,0xba6cb04a,0xbb4294c8,0x3adc1ae8,0x3ba4891e,0x3ba63ef1,0x3ab4d94d,0x3a93636c,0xb822bffd,0xba38d11d,0xb9cc4d9d,0x3a16c3e5,0xb8f58ecc,0x39244565,0x39ed7981,0xb94d4ed4,0xba42af1e,0xb98db49a,0x395b03f7,0xb87309f5, -0x381ed269,0x3831470c,0xb914bb82,0x3901b1a9,0xba977044,0x397dd578,0x3a3f7708,0xbbc2f7fb,0xbb6ef376,0xbb937496,0x3be5c9eb,0x3bb1daec,0x3b81805d,0x3b012b56,0x3bc0a9c1,0x3bdca729,0x3bac45dc,0x3b1a43d0,0xb7d93cda,0xb9c2a117,0xbb2f5c3a,0xbaaa3ac6,0xb997f04b,0x3aa72513,0x3b0264dc, -0x3b4c9d42,0x3b53774a,0x3b69231d,0x3b1ec856,0x3aebec5e,0x3b0a75e9,0x3af13b96,0x3a385cdc,0x39087f82,0xb9ad4bfb,0x38437882,0xb8a14b54,0xb8276671,0xb892ea74,0x38e5fd56,0x393833a3,0xba298fcb,0xbaadfcb7,0xbb56ea7f,0xbbca1ef1,0x3afc9108,0x3a9db990,0x3bbc3ad2,0x3ba484fe,0x3b743305, -0x3aa11aa5,0xb9fb3a18,0xbab5b76e,0xbad93a9b,0xbaf42a99,0x3a0e392f,0x38f9a64f,0x3b030798,0x3abe92ff,0x3a2f6414,0x393d9c90,0xb99b3819,0xba38c21c,0xba1bf086,0xb84a893f,0xba221985,0x38d4757f,0x3ac1da3a,0x3a4485e8,0x39ee0892,0x38ccd01e,0xb8135198,0x39477b40,0x3990fb38,0x386b9a95, -0x389c5987,0xba6f4109,0x3905bfc0,0x39d35b5d,0x3b0373e4,0x3b8f1ce8,0xbb97d844,0xbab64b1b,0x39345a3f,0xba2903f9,0xba466537,0xba2b04f5,0xb8bc228b,0x3a82c709,0x3af66fd5,0x3b278cd5,0x3b3a325c,0x3b61576d,0x3b5f3675,0x3b4d8332,0x3b3748ed,0x3b014bb6,0x3a9deed1,0xb834663e,0xba379d05, -0xbaedc4ff,0xbacc9c71,0xb9d3a134,0xb9dfb5bc,0x3a2ad0d2,0x3a3aab54,0x384b320f,0xb994353a,0xb9fd6a54,0xb9f92315,0xba05554a,0xb99eaaf6,0xba3a8681,0xbac24c1f,0xbae7b2d9,0xbb0de27a,0xbb23f8e0,0xbac19ef5,0xbaa9a3d4,0xb998e2d2,0xb98d55b1,0xb95d96ad,0x39d4ef46,0x3a94f4ac,0x3b0edad0, -0x3b1f353e,0x3b3a5dfd,0x3b3f29a6,0x3b37ae43,0x3b1666e2,0x3acf88c1,0x3aa547cf,0x3999917f,0xb91d3775,0xb9e54a23,0xba24452a,0xba64afd2,0xbaaeb7aa,0xba75e851,0x38a9565a,0x39b05661,0x3aa5e7f0,0x3af5cfd5,0x3ab55115,0x3a7dbbbf,0x3a8e4a2d,0x3a2e4cc3,0x39a30093,0xb980d5ae,0x39ed410a, -0x3a015941,0xb9f0750b,0xba1bb742,0x3a8394d5,0x3b097649,0x3b03e206,0x3afa7065,0x3b0bb46a,0x3b335097,0x3b4b7ca0,0x3b60343a,0x3b3759f1,0x3b100c17,0x3af1471e,0x3a86c0c7,0x399b29bf,0xb9d6c1d7,0xb9b6d75b,0xb9adaef2,0xb90ecf60,0xb96d74fa,0x39cd4f59,0xb9e57743,0xb9126d29,0xb9170b6b, -0x396d51ae,0x3a1f7291,0x3aa12ecd,0x3aff94d7,0x3aec562a,0x3b3554dc,0x3adecb54,0x3b04e6b6,0x3a9762d7,0x3a774215,0x3a44d18f,0x39e00ebf,0x3a859bfe,0x3ab8d6f7,0x3a72c945,0x3b16d9f1,0x3b0d0564,0x3b0db278,0x3aedcc71,0x3aeb0ed7,0x3ab81d29,0x3acc7fe8,0x3a9a9702,0x3a670ed1,0x39feb1e5, -0x3932a0b7,0xb9107771,0xba3e4ed4,0xba25ddb4,0xba383d08,0xba64c89f,0xba83ee94,0xba9b0644,0xba7f852c,0xbad14984,0xba6e5ff4,0xba56fcd4,0xb9d7660f,0xba2214f0,0xba183cac,0xb9e0d441,0xb998537d,0xb98bdbb5,0x3a111441,0x3ac746f7,0x3a930831,0x3b02719a,0x3ae79b72,0x3a8b650e,0x3b1e32c0, -0x35220ad3,0x3a830d28,0x3a50cdb5,0x3a410a30,0x3a40d94c,0x3a5ef4ac,0x3a6d5d68,0x3a79ad51,0x3a30c18d,0x3a01a6cd,0x39a14c41,0x38fe324f,0xb81ff0be,0xb942b529,0xb8d4306b,0xb893e1bb,0xb5bdd839,0x38d81ce3,0x38dc41cd,0x399643d5,0xb9bf276f,0xba9c9822,0xbaf54d38,0xb91cd1fc,0xba678c0c, -0xbad754fc,0xbadc92e1,0xbabdd64c,0xbaa695d8,0xbaca3a8a,0xbad1ee0d,0xbab4260d,0xba45b2ac,0x3756d6db,0xbab39451,0xba7580e4,0xb91f78bd,0xb9d450b3,0x398ccd87,0xba97052f,0xb9dfe3fa,0xb9c795c4,0xb99af871,0xb997ea27,0xb9c6005c,0xba229fcb,0xba108f21,0xb9f96fd6,0xb9574113,0xba084f2d, -0xba193b47,0xba1bbbe0,0xb9d87b61,0xb9b183b2,0xb9950b5c,0xb9b80977,0xb995fc66,0xba2292f4,0x3a7d5ef2,0x3ad93ccf,0x3aedf861,0x39d46bd2,0x3abfaec2,0x3adb35f6,0x3af15523,0x3ae7ba39,0x3abbc771,0x3b05cf17,0x3b014059,0x3acbe8f6,0x3ae7dcda,0x39a5319e,0x3ac80906,0x3b03cc85,0x3b3c733d, -0xb785cc7b,0xba1819bf,0xb90bdb2b,0x39da612a,0x3a422ccd,0x398c89c3,0xba7b3660,0xba87d14f,0xba5f5d0c,0x39c02adc,0xb8dfc4ba,0xb98bb796,0xb9a8f2ed,0x39042917,0x393961c5,0x3903be8a,0xb72bd760,0xb99f3bf3,0xba39390e,0x3accb2b4,0x3a1ef991,0x3a2e1472,0x3a5d4445,0xb9a239d3,0xb916c57a, -0xb837a767,0x39abce0f,0xba3f9882,0x39667f60,0xbaa2db73,0xba22aba8,0x3a33b790,0x3a2f016a,0x39da789c,0x39d20c4a,0x3ad96236,0xba293925,0xb9f1c028,0x3972c903,0x3a4c9944,0x3a9f7a92,0x3a8ec6b7,0xba8d1f83,0xba618a4c,0xba3ac892,0x3aa37dc0,0xba0d7707,0xba1e38cd,0xba0c7a33,0x398bc482, -0x3a577064,0x3a534026,0x3a3cb207,0xb8b6e78d,0x3a6de58a,0x3b11829c,0x3a216001,0x39b54d30,0x39c0c7fb,0xb96a3cda,0xba907613,0xba2025f9,0xbabc1a34,0xbaa633a5,0xba915c09,0xb97b6fc7,0xbb18ef9c,0xb94bdb86,0x396ff436,0xb7de0636,0xba1e6d1d,0x3acc4769,0x3a7946ed,0xba8c96e1,0x3a488ff9, -0x3afd5dc9,0x3b4e6846,0x3b11ff88,0xba9c3d48,0xbb015a12,0xbac08da9,0x3b238d22,0x39f1a006,0x3962c0f5,0x392e3d83,0x3abaddbf,0x3aeb7550,0x3acad15d,0x3a89b2c5,0x3855057d,0x3a3947d9,0x3a6183fd,0xba30a0ff,0xb9a7516c,0xbad6fd6c,0xba1f321c,0xbb420c0e,0xbabea94d,0xbb2b6f5b,0xbb873af7, -0xbb59dc5a,0xbb1aa91b,0xbb879047,0x389ffa12,0x393cd03c,0xbae9877b,0xba2e4fc0,0xb9b38a4e,0x3a350b98,0xba9982db,0x3a5d1d64,0x3a87d7f2,0x3b5ac808,0x3b285da4,0xba601a4f,0xba8e1b87,0xb9fb50b7,0x3b2bf9c8,0xba212497,0xbace12ae,0xba82ee3f,0x3a9fc432,0x3b14cae3,0x3b2514d3,0x3b1015b6, -0x3ac29919,0x3abfc47c,0x3b500f55,0x397b0242,0xb9e373c5,0xb9fc359d,0xba283bea,0xbadf3549,0xba444861,0xb94e7059,0xb8df7a27,0xbab4561d,0xbad6374b,0xbb69e778,0xbaa93b5f,0xb995a4a9,0xbb1eea40,0x385a1e98,0x3bcd394d,0x3bc5d8d9,0x3bab3432,0x3ba77349,0x3b525c9b,0x39a7efbc,0xba4b75f2, -0xba33fcec,0xbb59888a,0xbb8e4081,0xbb898adb,0xb862ed58,0x3b12960d,0x3b3b0ff3,0xbb10ebf2,0xbb9d03bf,0xbc1935c7,0xbc1576da,0xbc0ad5bc,0xbbdf203c,0xbbc1ec59,0xbbb8395a,0xbb9472fc,0xb9876f80,0x3a57e462,0x3a23c8c8,0x39b24483,0x38ab5831,0x3953189f,0x3a1c3ee0,0x3b218605,0x3b53abab, -0x3b98e187,0x3bad3afc,0x3b9174a3,0x3ba9d095,0x3a58c859,0xba956785,0xbae47aa6,0xbb28a5c7,0xbba4d61f,0xbbb4b64f,0xbb760f95,0x3ae11593,0x3b4ab40c,0x3b3a327c,0xb9badb3e,0xbba68750,0xbbd3377b,0xbb596739,0xbaa7ae14,0x3a7c93bd,0x3b2572a5,0x3b76980b,0x3b1c4666,0x3b137533,0x3aaec951, -0x36266264,0x3a2388ca,0x3a2062bf,0xb90d3d62,0xba734bad,0xb919d911,0xb89a09f9,0xb8b9b931,0xb987867c,0xba45ce82,0xbb0aedbd,0xbb648c36,0xbb0eb7f4,0x3b92b155,0x3a7cb415,0xbb5671b4,0xba925a3e,0xbbad4921,0xbb2df4df,0x3bc21770,0x3a9b9352,0x3a6f0af2,0x3b07cb31,0xbb81ebcc,0xbba2a165, -0xba7af5e1,0xba9ea9c2,0xb970436c,0xbb387f41,0xbb1ebd62,0xbace3dcd,0xbac84cca,0xba2894c1,0xbacad597,0xba7d4fbd,0xba177ae9,0xba875317,0xba138a6c,0xba49cdbb,0xb993ff7d,0x38782e70,0x39400d5d,0xb8ba7c2d,0x38f04b32,0xb88f7c52,0x3a3c7277,0xb9afe764,0xb9f7961e,0x3827107a,0xbb87f4a4, -0xbafa2157,0xbae76ba0,0x3bd575c5,0x38f1e1ad,0xb857f7fb,0x3b949115,0x3b875368,0x3b864de6,0x3b6e33cf,0xbb99521a,0xbbc7a127,0xba7c6a82,0x3ac26f2d,0x3b0c9c98,0xbad13ecb,0xbae6aec9,0xbb16d154,0xbaf9860c,0xbaa7bd69,0xbab74da3,0xb9236c3c,0x3a4dcbc5,0x39c99795,0xb9d1bfcf,0xb91f324b, -0xb988333d,0x398062df,0xb90276e1,0x3893f163,0x38d3ac78,0xb938cb0d,0x38aed74e,0xba6981da,0x3a1db6fb,0x39f0c74b,0xbbc258b2,0xbb940d38,0xbb8f7cb3,0x3c03aad2,0x3b5210ba,0x3a8d2173,0xbb9bf281,0x3a9e0ebf,0x3b6fde46,0x3b99afd3,0x3b4ae689,0x3abee421,0x38f6e820,0xbae11c54,0xbaabe806, -0xb95617bb,0x38fffa16,0x391f831a,0x39eebd16,0x3a933f88,0x3aee5539,0x3b168cbb,0x3aef952e,0x3ae3304d,0x3b019c8e,0x39e5ee7d,0x3810ccff,0xb94be95c,0xb8301b28,0xb94bbe5d,0xb88029b8,0xb90f7c16,0x395407d5,0xb8935937,0xb9f1a523,0xbad254a2,0xbb967c53,0xbbf2ee35,0x3bf41811,0x3b924327, -0x3ae71f10,0x3b34f453,0x3a69a9a9,0xba69449e,0xbb671bf4,0xbba311d2,0xbb8ff361,0xbb83de36,0xba9bb5ec,0xba6aba78,0x3a004483,0x3a086f0c,0x39a22051,0x39b2304b,0xb97dd45f,0x389aa266,0xb9ceee7a,0xba05cfed,0x3aa29975,0x3aa79b67,0x3ab48231,0x3a801429,0x3a02a040,0x39743d12,0x398e5126, -0x398e6b32,0x39abc532,0x394348dd,0x3905a5f3,0xb967a230,0xb8f329f8,0x3aac7643,0x3b83fcbf,0x3b9bb25c,0xba2954f6,0xba86e907,0xba3e5ac6,0xbacabdea,0xbb4495e4,0xbb65ffab,0xbb5a537b,0xbb1f2384,0xb902226f,0x3aa868bd,0x3ad3b3f1,0x3b03f1e7,0x3b1242c9,0x3b17bf06,0x3afd82ff,0x3a6342f6, -0xb98b5c83,0xbab38f90,0xbad4c727,0xba9e1945,0xbaba5e2c,0xba76a070,0x39a1ce5b,0x39fff019,0x39febcbb,0x390c4950,0xba6a0221,0xba077565,0xba1872d5,0xb9843c5f,0xb98c8aa9,0xba2ca04f,0xba78f4e4,0xbaeb0bc7,0xbadce610,0xbb00bddd,0xb990a948,0xbaae2b59,0xbb22ba03,0xbaeee404,0xbb090b03, -0xbacff924,0xbaa6758c,0xba5f66e4,0x396d3207,0x3a8ea3cd,0x3ae135da,0x3ae2755d,0x3ab6c1b2,0x3a6ee1bc,0x3a16d821,0xb954ef39,0xba5428ef,0xba900c48,0xbab87291,0xbab24033,0xba08e408,0xb9290f30,0x398da56c,0x3a583725,0x3a998967,0x3ac52695,0x3ac517c7,0x3a7e9df5,0x3a4d22ea,0x39cbb7c3, -0x38c1dd30,0xb9a058ea,0x3917739d,0x39d25a32,0x3a1a6556,0x384a1303,0x3afabc48,0x3a3d5279,0x39a66f55,0x39f46315,0x39681463,0x3a7f32de,0x3ab6d11e,0x3ae62991,0x3ac01a2a,0x3a88edef,0x3a7f9b0a,0x39aed51c,0xb8252722,0xb9b130c6,0xba01bec2,0xba0642ea,0xba124acc,0xb9f4cc13,0xba19681f, -0xba0efb6e,0x38feaf61,0x38b2686c,0x39988bff,0x3a43a77b,0x3abf65b9,0x3b15c028,0x3b040761,0x3add097f,0x3b2c1678,0x3aa37edf,0x3ac0e483,0x39fdad9e,0x3a0faac1,0x3a8b6ab6,0x3a6ec8ed,0x3a41750a,0x3b32db73,0x3ad36cf2,0x3ad42baa,0x3abc9373,0x3a8e04f6,0x3a2beac4,0xb6ba0c95,0xb986d14b, -0xb9f051e5,0xba050226,0xba349a04,0xba46a4c0,0xba60beca,0xba8f4417,0xba84953a,0xba8813f8,0xba9e84fe,0xbaa9e130,0xbab3d11f,0xbab7baef,0xba42b2ce,0xb9d254e5,0x38bb2f18,0x39a544e3,0x39bc66dd,0x39b66c18,0x3a412db4,0x3a590353,0x3a860404,0x3ac20055,0x3a95391a,0x3b246ec1,0x3b1df493, -0x3b12347f,0x3b332d31,0x3b096bf0,0x39f48bab,0xb907e6c4,0xb8560c45,0xb95c4604,0xb970f6fb,0xb91e8f57,0xb8082c66,0xb65f5ca0,0xb92ff408,0xb9ae30f4,0xb9fc20d6,0xba1eea49,0xba3b3546,0xba53cf36,0xba4b8b75,0xba48a42b,0xba3b57e7,0xba2934d7,0xba23b68d,0xba489a34,0xb85a6077,0x3a0591d0, -0x39f4b52e,0x394dcd98,0x3a6a760c,0x3a7e4206,0x3a9381dc,0x3a81c852,0x3a80986b,0x3a9168b1,0x3a800511,0x3a3dad27,0x3a06fcce,0x38ce1c43,0x3a3b5879,0x3a73f805,0xba6330e9,0xb705b844,0xba3e2c62,0x3a67bfe1,0x39867296,0x3948b92f,0x39524c53,0x393f0893,0x3910d5e7,0x3722b231,0x388c1d8a, -0x393d90fd,0x3a092f3c,0x393642c2,0x38f852d9,0x3909c317,0x39a9b20e,0x39d0db65,0x39de2db1,0x39bdc937,0x398d3cc7,0x39e37648,0xba873f73,0xbab03faa,0xb9f3a282,0xba794a7e,0xbacc17c8,0xba68b191,0xba5b44fe,0xba431c0c,0xba61aed2,0xba8a1434,0xba8fc730,0xbab3d30b,0xbad1432f,0xba501843, -0xba4679c5,0xbad19b2b,0xbb05849b,0xb890e81e,0x39bb18f5,0x39b2bfaf,0x3a291159,0x3a4e85ec,0x39c9ee50,0xb99d5ccd,0xb9deab57,0xb8d6dfb1,0x3a97d260,0x3a0d0e16,0x39b437fd,0x3984b514,0x3a44e7e9,0x3a6f83ba,0x3a7172c1,0x3a230967,0x3a0edd21,0x3a46d201,0xba82aabf,0xba21000b,0xba0ede88, -0xbac80088,0xba8bda68,0xba9d68d6,0xba9838b8,0xbadd86cb,0xbafe05c6,0xbab50c27,0xb8f775bc,0xbae87144,0xba50cfde,0xba3846fe,0xbac2b37f,0xba62f6a6,0xbaeb9a1f,0x3a9434fc,0x3a2a5574,0x39db9789,0x3a322fc6,0x3a2933cd,0x39c11d1b,0xba36cfd7,0xba201897,0xb931777e,0x3b0778b0,0x38e4b925, -0x36d796f4,0x386991a0,0x3a8f7a80,0x3ac384dc,0x3addb5bc,0x3a88a247,0x3aa4d11a,0x39af2966,0xbaafcdd9,0xba2e8d41,0xba49e914,0xbac2e0ed,0xba9bdc9a,0xbb06dfd6,0xba96a100,0xba111dca,0xbb56b0ea,0xba4a2531,0xbad4210f,0xbb249cb7,0xba261627,0xba24058d,0xbafb463e,0xba20be23,0xbb185fc1, -0x396bc05c,0x3a46a60b,0x3a3566bf,0x3ae1f277,0x3af42c3d,0x3a65057d,0xba5dfef1,0xbae0b2dc,0xba5ff217,0x3b5cead9,0x3a5a25ca,0x39fd123d,0x384f46ef,0x3ae43d33,0x3b13179e,0x3b133986,0x3adc849f,0x3ab45b3a,0x3a878cf1,0xb998ad36,0x3794b040,0xba61f02b,0xbaa9b00f,0xbadae731,0xbb0fdc3c, -0xbb19abfc,0xbb1b4bd3,0xbb81d5ba,0xbb1a3a56,0xbb1930ec,0xbb765807,0xba84fc7e,0xb92ade63,0xbb1f9a2c,0xba8406de,0xba60eccd,0x3a35d5a6,0x3ab93a1c,0x398cf406,0x3a2c732c,0x3a96889c,0x3959cc85,0xba93ea9f,0xbac94638,0xb930c92e,0x3b7cc7c1,0x38a6f097,0xba8109c4,0xba2691b9,0x3ae7963a, -0x3b35b64c,0x3b50d694,0x3b17a812,0x3b205d67,0x3af13cc5,0xba5b2c83,0x3940e8a3,0xbaaf4e08,0xba640c54,0xb9f2ce3b,0xbac8ad5e,0x387a64ac,0x391eeccf,0x39a449da,0xba77cbb9,0xba686c84,0xbb4af314,0xba5a5fc3,0xb89e1747,0xbb1afa97,0xbaf6c233,0x3b20199e,0x3b49cece,0x3c01b1b5,0x3bdd557e, -0x3bba002b,0x3ab60dee,0xb8d313ad,0x39964bf4,0xba1c5cc4,0xbaa14116,0xbaa1b489,0x3b77d9e5,0x3bccd9a1,0x3be5d8bf,0x3a1fb71a,0xbb3c4d74,0xbb9e838e,0xbbd73c06,0xbbd91ce1,0xbbd57136,0xbbe8dd2a,0xbb8a81b8,0xbb986a7a,0x3a63479e,0x3a03835c,0x39f8f0fb,0x3919ce32,0xb8595178,0x38996dee, -0x3992c049,0x3ae22ec3,0x3b0341dc,0x3b75ad86,0x3b8294b4,0x3b273052,0x3b6456af,0xba595ceb,0x3a752f3f,0x3b000512,0xbae1002a,0xbb95a9b5,0xbbd8e5c3,0xbbb04cac,0x3a6ae4f1,0x3b0d62b4,0x3b3e19b4,0x3a9bf6c0,0xbba75137,0xbbe6b79c,0xbb82cc96,0xbad3beb2,0x3a805684,0x3b38d893,0x3b4450f9, -0x3b44bd3a,0x3a4adc77,0xb9f630e6,0xba3d75a4,0x39890222,0x399c2b09,0xb94b5a61,0xba0c4e2f,0xb7fe5f19,0xb8184c7a,0x373be2bf,0xb966d8cf,0xb9eb6f36,0xbac73fb3,0xbb46677f,0xbae4b9bb,0x3b793178,0xba099a8c,0xbb6152c6,0x39bead22,0xbb525427,0xbafc0257,0x3babb56a,0xba129b6e,0xb9c48343, -0x3acd6124,0xbaba268c,0xbad703fe,0x3a3f898d,0x3ab05edd,0x3ae90e65,0xba7ff16c,0xba4bcbbb,0xba456cd6,0xba52e90b,0xb9d85d1b,0xb9b18e5b,0xba467935,0xbaa76338,0xba8372e0,0xbaba1fcb,0xba13229d,0xb9e41c7a,0x394a555d,0x37a156b6,0x368d918c,0x380b9496,0x37a1fc60,0x39c46672,0x38b70968, -0xb9a2a7c7,0xb91178d3,0xbb86a5e7,0xbb2246fc,0xbaf32d1c,0x3beda21a,0xb7367996,0xbaaec63d,0x3a860858,0x3b0df712,0x3b60e788,0x3ba8155f,0xbb0b845e,0xbb8099aa,0xbadfd2ef,0x3b272fb9,0x3b43f7eb,0xb87eecc0,0xba593b77,0xbac75c5c,0xba9ae386,0xba84c7b2,0x392cae07,0x3922fb91,0x37a3fbf4, -0x3a167c80,0xb9bef41e,0xba0022e8,0xb8e7a1b9,0x38f307f0,0xb85ddd21,0x3898e6dc,0x37a990a1,0xb8565549,0xb6486cdc,0xba196bf3,0x394fabfa,0x3a04d89d,0xbbd27384,0xbb8132ec,0xbba0da74,0x3c043358,0x39fc7591,0xbb3d6fcc,0xbbf29c6b,0xbb1cfc5e,0x3a9ec0a3,0x3bd4a96b,0x3b088f5a,0xb7a06ddd, -0xbacc8c8e,0xbb5831b4,0xbb1ebe38,0xba8edf07,0xba2950b1,0xb9b7f1df,0x3a49cb84,0x3acc6ff6,0x3b293538,0x3b1329c6,0x3af22658,0x3af8bc0b,0x3aaebf2a,0x38a6f112,0xb88b99c4,0xb93b75ee,0xb7d49a84,0xb9038425,0xb82c3f7b,0xb8f315f5,0x38e7cdde,0xb84f52e5,0xb9e4bd46,0xbade2602,0xbbd94479, -0xbc105e15,0x3b82bacc,0x3aa71fe2,0x3aa1c548,0x3a05fbb8,0x39a730f6,0xbaf93092,0xbb80d7b7,0xbba6fb13,0xbb93db65,0xbb9aff23,0xbb433084,0xbb28ac6c,0xb995c9d9,0xb980d35f,0x392dd6bc,0x39f35f36,0x39e7a252,0x3949cf70,0x39405af4,0x39e9b8b1,0x394d9f0e,0x3a69fd38,0x3af82315,0x3a7d22b9, -0x39da7a11,0x38d68d09,0x38ebcdc5,0x3945c4b9,0x3947ddd3,0x386c3900,0x37fe58fd,0xba0f46b4,0xb993e1ff,0x3a67236b,0x3b5871cb,0x3bd4cf6a,0xbb2adb09,0xbadd11fa,0xba28ab0e,0xbadd7989,0xbb195eaf,0xbb298732,0xbb04c6cb,0xbaa67544,0x39c7ecfb,0x3ab4fd56,0x3abfa010,0x3ad5db68,0x3ab4d432, -0x3aacb7c6,0x3a888ba7,0x39ccfdb6,0xb78c8ca3,0xba4ea856,0xba682609,0xba9ef916,0xba99508a,0xb979f812,0xba04ecbb,0x39c7ea70,0x39a0e888,0xb9b65bf0,0xba014a81,0xb9ec1dd9,0xb9dbc7cb,0xb9d529fb,0xb9c56161,0xba563fd1,0xbac4bc9b,0xbb09513b,0xbb2a6e74,0xbb414c26,0xbb19f881,0xbb18fae3, -0xbae1c051,0xbac7e974,0xbac4ebbc,0xbaa616ce,0xba5b541c,0xb9ac8eef,0x3a206760,0x3ab5f096,0x3aefac24,0x3aff80d9,0x3ae4d600,0x3aafe152,0x3a75034b,0x3976c067,0xb926948f,0xba0d8014,0xba38f586,0xba808249,0xbaa436b9,0xba1abfbd,0x39b42649,0x39e7c89c,0x3a9595df,0x3ab321ec,0x3a5e43f0, -0x39f483c5,0x3a0730ee,0x3896aa95,0xb97b8f81,0xba6ff43b,0xb9d71ea3,0xb9b32b83,0xba85529e,0xba987ba1,0xb6a3c07d,0x39afdb50,0x39b1c3fd,0x382b34fa,0xb7de5323,0x3a621a75,0x3abf30f0,0x3af36923,0x3acf35dd,0x3aa7c4c2,0x3aac37c6,0x3a7ec92e,0x3a44e026,0x39daee77,0x39c00042,0x39a449d2, -0x39acd5d4,0x38cfdd52,0x39fe243d,0xba110aa6,0xb9451099,0x3943ab8d,0x3a0409f9,0x3a603a7e,0x3ab3015d,0x3af57e3d,0x3af9cb4a,0x3b093abb,0x3ab01524,0x3abbb814,0x3a36aa37,0x39e4797e,0xb83d7557,0xb955d889,0xb95db644,0x389b4cbe,0x3af3219c,0x3b10ddd3,0x3b011b7c,0x3b0b8543,0x3aff0808, -0x3acb6ece,0x3a85c775,0x3a7048ec,0x3a68d813,0x3a56ff06,0x3a1d3c67,0x39d881ac,0x3918dc2a,0xb9896659,0xb97bf671,0xb993b8ee,0xb9a152d6,0xb9d82686,0xb9c158c6,0xb9b0a431,0xba85d562,0xb9db1386,0xb9a34713,0x3907e926,0x38caf11e,0x396d6638,0x3994308a,0x39414b1b,0x39d12f64,0x3a674f6c, -0x3ad10509,0x3abe5613,0x3af03ea2,0x3b075b7e,0x3b001afa,0x3b095c56,0xb9f1a138,0x3a1605e8,0x3a032488,0x39bb4c7b,0x39bbcd05,0x39fbc949,0x3a275a92,0x3a33fd23,0x3a03d391,0x39c6ab75,0x399537d5,0x39598ecc,0x392cd224,0x38ff3e20,0x3934d9a6,0x393ba25f,0x395de950,0x397e4814,0x3955b953, -0x39ca3d2d,0xb9f92d5c,0xba6ddd70,0xba376bb6,0xb9a0db9f,0xba2c472d,0xb9b5fa06,0xb9ae6bf0,0xb992219b,0xb962b41d,0xb9ec4f08,0xba22a195,0xba1a1be8,0xba4931c2,0xb9c374a6,0xba0efae0,0xba570c7d,0xb7fa9bbb,0x3a941e8c,0x3acfde8e,0x3a1b51d3,0x3a37ba87,0x3a41e899,0x3a3ec851,0x3a730c3a, -0x3a70d6b2,0x3a39fa0d,0x3a3f4694,0x3a53dd10,0x3a8c36d9,0x3a385499,0x3a2186d8,0x3a24a5a4,0x3a491204,0x3a67f0f8,0x3a802999,0x3a6f5dbc,0x3a59f8af,0x3a3ff41c,0x3abb84f9,0x3a9c790e,0xb9c1fde3,0x3aa903b8,0x3a924dff,0xb9df8271,0xb9922eaa,0xb9965ef8,0xb9afbc53,0xb85313a9,0x37d5487b, -0xb8ac66ae,0x3aa626d7,0x3abb6af1,0xb98a2ad1,0x3a9a69fa,0x3a38522d,0x3aaea13e,0x3a52de41,0x3a98f342,0x3ab54ed3,0x3b1de78f,0x3b12b438,0x3a978803,0x3a76727d,0x3a91fbea,0x3b0c0aed,0x3ac2d269,0x3aaf2942,0x3abc0a81,0x3ae0d8ee,0x3aef35f9,0x3af1a53c,0x3acabca2,0x3a9ddf5c,0x3a83b827, -0x3a83fc92,0x3a489101,0x39baa382,0x3a41a9f3,0x3a140953,0xb9bccea2,0x39acfdca,0x395b1f56,0xb986f475,0x39dbf68e,0x38d950e8,0xba13788a,0x3a350098,0x3a64ac2f,0x39957e56,0x39ff5fd5,0x3ad9ee7d,0x3ace9322,0x3a4b25f1,0x3ab92e7a,0x3ab61a67,0x3b422b3a,0x3b54d337,0x3ab64cf1,0x3ab9f491, -0x3abf195d,0x3b5a6928,0x3aa32213,0x3a8aa8f5,0x3a9e5672,0x3afbb8ca,0x3b25a1e8,0x3b3f6d10,0x3b1bae8f,0x3ae63f10,0x3adb16db,0x3ab8131c,0x3a0fa115,0x3a82df5b,0x38a90eae,0xb9e8aaf5,0xb9c103d1,0xba0ff444,0xb8473033,0xba991cd6,0xb9062301,0x38561ea3,0xbacd12b9,0x3a062b4b,0x3a4532ea, -0xb889bf9f,0x3a64d234,0x3a6e9266,0x3ac28b49,0x3a1d9686,0x3ae21d12,0x3b12505c,0x3ba40bd1,0x3ba7ee6d,0x3b0b6e42,0x3aa6a339,0x3abe91e0,0x3ba0962d,0x3b235824,0x3b0a6802,0x3b21721b,0x3b65e04c,0x3b7d3127,0x3b7ec8cd,0x3b4857c4,0x3af855a8,0x3aee7b55,0x3a835654,0xb886d975,0xb9231012, -0xbac29c5b,0xba8a110a,0xbafec8e9,0xbab2a7a0,0xbafbdac2,0xbb503c32,0xbb0cc004,0xbad5985f,0xbb5207e1,0x38d08990,0x39bf1ec8,0xbaacee30,0xb95a6658,0x3a947dda,0x3b067e57,0x39b41dc2,0x3ac04e5e,0x3a5e9510,0x3ba6b1cc,0x3ba7b7d7,0x3b267b25,0x3b035fcc,0x3b1d1867,0x3bae786e,0x3ac739e0, -0x39655e8c,0x3a452b9b,0x3b422dcd,0x3b8c1edb,0x3baa2131,0x3b8cde2a,0x3b555fed,0x3b14224e,0x3ad28aaf,0x3903cbfd,0xb9fb2207,0xba498fa7,0xba203a0e,0xba99582c,0x384aec03,0x39580f85,0x398a67c8,0xb99df912,0xba1cb03a,0xbb293509,0xba11ac84,0x39bac0dc,0xbaf7ba2f,0x38ecbc3d,0x3bb14406, -0x3bebdd7c,0x3c0a348c,0x3c0e8060,0x3c02b341,0x3b70d847,0x3b3d1072,0x3b832042,0x3a3db0c6,0xbaa1235c,0xbae941e3,0x3b222e5a,0x3ba713ce,0x3bd569eb,0x3a73ba6d,0xbb1f7f09,0xbbc342d6,0xbbd600bb,0xbbba33b3,0xbb8931bf,0xbb9d204d,0xbb7dce16,0xbb562517,0x3ab0b1c5,0x3a8fa9c3,0x39781400, -0x394de9fb,0xb91fc178,0x384d07d2,0x38216f9a,0x3aba40ff,0x3ad462f9,0x3b591e5b,0x3b9697b3,0x3b7edeb3,0x3bc177ed,0x3a807040,0x3a8756a0,0xb938b82c,0xbac14244,0xbb79bb11,0xbb8ec2df,0xbb65de19,0x3b0a8f52,0x3b553bd6,0x3b828a49,0x3b279c99,0xbb6efdef,0xbbc34b66,0xbb4fafa3,0xba55a633, -0x3b09c195,0x3bb52217,0x3bafadfc,0x3b75875b,0x3ad4b509,0x379dadcb,0xb98252e8,0x3a33116f,0x39e13998,0xb914d0e0,0xb9c4ea35,0xb5a302b9,0x37850e13,0x38534f9a,0xb8c56692,0xb9bf9d2a,0xba6a3a2d,0xbb07db9e,0xba81d544,0x3b89b516,0x3a2bd3c0,0xbac2843c,0x3adf7f64,0xbae75e32,0x399771d1, -0x3c02d886,0x3ba5bd24,0x3bb873be,0x3bdeebb5,0x3979abb0,0xbb0c69d4,0x39fd0ce4,0x3ad3bc4a,0x3b58fbf0,0x3ac372c3,0x3a3ff214,0x39f4a1a0,0x39956152,0x39c8c6ff,0xb9847824,0x39598471,0x3815e055,0xba132eec,0xb9a92913,0xb92b91ef,0x38835cd0,0x38c78ceb,0x387fdb17,0xb883314c,0xb7a565f2, -0x3838fd7c,0x394e2301,0x39f7620d,0x385cb7cc,0x38f9ccf2,0xbb3b3ff3,0xbac578d5,0xb9d2d911,0x3c06825b,0x3ac48938,0x3ad56b17,0x3be99608,0x3c030011,0x3c1810aa,0x3c1a9cc7,0x3a54a5da,0xbafded71,0xb9cf7cad,0x3b96fc37,0x3bc17ab9,0x3b5180da,0x3aa00c11,0xb9a9e95b,0xba296361,0xb9f9cb0d, -0xb7796757,0x3a865fe7,0x3acdc4e7,0x3a81b986,0x369f077a,0x385e3693,0x3866c4f6,0x3883fb7a,0xb7a3fde1,0x387f8c0c,0x3892e950,0xb86377c7,0x37943911,0xb9bcb0df,0x39bb3c9c,0x39b61d74,0xbbb5749a,0xbb760292,0xbb918614,0x3c09efcb,0x3b3bd886,0x3ac22653,0xba947167,0x3b122639,0x3b9698d7, -0x3bfa1108,0x3ba683d4,0x3b4313e4,0x3a501785,0xba6eb5fc,0xba64d246,0xb99ebd3b,0x3a01214b,0x3a739045,0x3afd103f,0x3b1e1197,0x3b34044b,0x3b3ae3c7,0x3b0f1108,0x3b079a4a,0x3ac7ebdd,0x396293ad,0x37112063,0xb83d1919,0xb8530169,0xb8d0103b,0xb7cc7d3a,0xb8673c02,0x38d97306,0x37972244, -0xb9327fcb,0xba92b361,0xbbf67c04,0xbc0d4fc1,0x3c10336e,0x3bdb2cf1,0x3bdaac97,0x3bd342c1,0x3ba9aaba,0x3b712481,0x3a9b5d91,0xbabc9cd4,0xbad6d32e,0xbae0560b,0x3a91dd39,0x3a2bb168,0x3b0e034d,0x3b1bca77,0x3ac535f4,0x3a9bf43c,0x3a224a0a,0x3a5824ee,0x3a681039,0x3ac0ded6,0x3b19ffc1, -0x3b1f7d35,0x3af8e7eb,0x3a903417,0x39f0ff0d,0x3954e4f6,0x3951ea8c,0x39308a82,0x393c6a0f,0x38b3f2dd,0x3913bf59,0x3789c71f,0x38af8e3c,0x3a927511,0x3ba6fc4b,0x3bffcc19,0xba81113c,0x3af0d96f,0x3b13657a,0x3a920d99,0xb918eb6b,0xba867ab6,0xba833abe,0x38a0a2e7,0x3a5353b2,0x3a9675a9, -0x3a6e11ef,0x3ab7cbbe,0x3aebd4ab,0x3b05013e,0x3aff251b,0x3aa2f7de,0x39b056be,0xba082231,0xba44c5bc,0xba7208df,0xba664d40,0xb8896df7,0x3a4921ee,0x3a392f52,0x39ee0b03,0xb8b56ffa,0xb9f5b987,0xb967c837,0xb953b0d0,0xb89e87d3,0x37e19a74,0xb9cd4f83,0xba50c941,0xbaa348dc,0xbaa933d7, -0xba4cf5ce,0xba276260,0xba8c1b5f,0xba5dc0b0,0xba1a693a,0xba85b98e,0xba108a8c,0xb84d8a4a,0x3a32614d,0x3a95b00b,0x3ae7f7e4,0x3b13c9bf,0x3b223033,0x3b17a83a,0x3b018a9d,0x3ad23516,0x3a47a92c,0x391841cb,0xb9102ea5,0xb9e27eac,0xb9f6be5a,0xb90caf80,0x38e30683,0x3a802f1b,0x3a72530f, -0x3a9459d1,0x3a8498b8,0x3a630077,0x39b32c46,0x39aab812,0x3906006c,0xb910499e,0xba23d3d0,0xb91bd050,0x3775586a,0x387b13dd,0xb99d012b,0x3a5a0761,0x3a21ee15,0x3921979c,0x39c5fa6a,0x39abbce4,0x3ab9af11,0x3b066bd0,0x3b2c6a06,0x3b2c8172,0x3b217668,0x3b2633d7,0x3adc3c93,0x3aa28033, -0x3a52b262,0x3a25f066,0x3a1e68a5,0x3a07e601,0x3a06a43e,0x3a14938f,0x39814eba,0x3a6d5629,0x3a4c6c7b,0x3aa0c1d0,0x3ab62809,0x3afc6cfb,0x3b2a6d2b,0x3b093d9f,0x3b18a7fc,0x3b136f1d,0x3ac6d738,0x3aa4002b,0x3a1c1398,0x3a3a36bf,0x39df2660,0x3a26b9e1,0x3a0936fa,0x3b17d4d4,0x3b2248ed, -0x3b2d1978,0x3b3767ff,0x3b2f28fa,0x3b1b9023,0x3b01dab8,0x3b00bc7a,0x3ab92d87,0x3a87cd0b,0x3a2a1582,0x3a0a7bdf,0x39b6d46b,0x37f2bae7,0x38cc6c39,0x3863812a,0xb81d3614,0xb9149adf,0xb997d1a7,0xb863c67b,0x38747f46,0x3a3583c2,0x3a90dd4d,0x3acb7548,0x3ac75a7b,0x3ad7dff0,0x3af41846, -0x3b0034ea,0x3ae1f037,0x3b107602,0x3b0456c4,0x3b18fb26,0x3b341da3,0x3b24f6ee,0x3b1db4fb,0x3b46dfc8,0x3a9e279e,0x3a7acad9,0x3a688763,0x3a502032,0x3a5c84fe,0x3a7ede6e,0x3a9367e2,0x3aa46efb,0x3a97c345,0x3a903dce,0x3a81314a,0x3a5a177e,0x3a31f1a2,0x3a0fc153,0x3a173a29,0x3a1a6e12, -0x3a29d3e6,0x3a386646,0x3a31b577,0x3a2b1fc8,0x3a8861f2,0x3a70144c,0xb841b4c0,0x3aaceaa5,0x3aa738db,0x39951754,0x3990b67e,0x3987a340,0x39a889c9,0x398f437c,0x39736034,0x3957ab5a,0x3a64e147,0x3a8429bc,0x375e1fee,0x3a59d188,0x3a9a0b34,0xba9eadff,0xbab59b72,0xba643041,0xba3fc835, -0xba4bfed9,0xba43f77f,0xba5bf3f1,0xba747880,0xba8d7d0d,0xba865a44,0xba718c95,0xba108d71,0xba6aac11,0xba805b19,0xba807b91,0xba60561e,0xba55a931,0xba3b6f79,0xba4db5b5,0xba3f5090,0xba60c097,0xba6d10af,0xb9994ed0,0x3ad9fef8,0xbaaad6ba,0xba2266eb,0x3aaf080a,0x3aab950e,0x3aa1f3b0, -0x3a6de067,0x3a9cf5a3,0x3a91880f,0x3a1fdf30,0xb9b6c4e0,0xbaa38c2c,0x3a940d28,0xb8c705a5,0x3a46db37,0xba743c0a,0xba505a36,0xba3df099,0xb9cb72c6,0xba0083c4,0xba870bab,0xbaee8f38,0xbafdb042,0xbae1a5cc,0xb9e2fe35,0xba8630da,0xba9df6f6,0xbaa9d79a,0xba7deb56,0xba6659e1,0xba1f0249, -0xba45fe1e,0xba516029,0xba7040b3,0xb86bb981,0xba09a281,0x388d804f,0xba8a87ed,0xbad2918a,0xb9fec794,0xba8bea58,0xba5c966b,0xbab511fc,0xba37840b,0xba7dfdcc,0xba9b58b9,0xb98cbea9,0xb9e91aad,0xba536cc5,0xba1bc7ed,0xba5c48cf,0xba597e39,0xb9efaeec,0xba11f787,0xb946e988,0xba264e73, -0xba8944b4,0xbb151790,0xbb191670,0xbafc766b,0x39a11068,0xbac97ad0,0xbaec057e,0xbae0ea89,0xbaa13a06,0xba4dd51b,0xb9bbb52c,0xba0e513b,0xba2b9240,0xb9bf8588,0xb8df0ee8,0xba14c569,0xba327122,0xbaab88c5,0xbaa50d1b,0xbad302f1,0xba938fb6,0xbaf3a9b3,0xbb3160d3,0xba8aca35,0xba7931c4, -0xbb195b92,0xba34eb3a,0xba06c5e5,0xba921301,0xbac4c3c6,0xba324362,0x39608d4c,0xba2e6656,0x37d35620,0x3a495520,0x3a1a9e95,0xba4b475e,0xbb36f151,0xbb7c44ca,0xbb4e590b,0x3a7d3741,0xbab677a3,0xbad60df0,0xbb05f61c,0xba9698d2,0xba1b3a68,0x38805b9b,0xb929d65b,0xb9f7258a,0xb8c55240, -0xb9ceb785,0xba85599b,0xb9fa0846,0xbb13d56d,0xbae725a7,0xbaf85bf7,0xbae16940,0xbabfa359,0xbb26be1d,0xbaecf94d,0xbac59edf,0xbb4cb4bd,0xb9a4efb9,0x3740ac05,0xbb1a1d82,0xba9bf8ac,0xbac80168,0xb99130c2,0xb9435dc2,0xb9bd240f,0xb641cfda,0xb881691a,0xba9e804c,0xbb3d3b14,0xbb719b68, -0xbb215d99,0x3ac1db66,0xbafa64f5,0xbb5bfadd,0xbb4b8186,0xbaea453d,0xba411f63,0x398a2d33,0x38b0e215,0x3985a057,0x3a04d0e7,0x39f5fb85,0xba0ca2d0,0xba8ae041,0xbab25a44,0xba4cf459,0xba6071b7,0x399953fd,0x37d54db7,0x39816453,0x37be5681,0xb9b0261d,0xbafa6e26,0xba19f428,0xb8608a11, -0xbb15c141,0xbaa724aa,0x3b63075c,0x3b4149e5,0x3ba5fa32,0x3baa6bc7,0x3ba536c4,0xba38b830,0xbb35eb88,0xbb0c1e29,0xbb6117d0,0xbb7f2166,0xbb86b4e8,0x3a8a409e,0x3b9e0d8f,0x3c02171f,0x3acc2a98,0xbb16d9a4,0xbb9fb2ad,0xbbeb5c0e,0xbbf96306,0xbbd2c2bc,0xbbbcf279,0xbb8454e7,0xbb43b3a7, -0x3ab5b59d,0x3a6c268a,0x37bb0739,0x38d1949d,0xb8bfbb40,0x389b1b20,0xb97b2ba3,0x3a3c165d,0x3a4c0003,0x3b11789b,0x3b57ea5f,0x3b765c39,0x3b3f0d1d,0xba88e349,0xb94e9f67,0xb8fe729a,0xbb1d8745,0xbb79d0f0,0xbbe4943c,0xbbc98751,0x3a22f28f,0x3a707a53,0x3b0be82a,0x3b203b4a,0xbb7eda0d, -0xbbd7eb79,0xbb9f459c,0xbb5b6cd5,0xbaba54a6,0xb9b7183d,0x3a62f806,0x3a1035db,0xb94ef531,0xb8caff68,0xba8052c7,0x399384e4,0xb966f44a,0xb9d759b7,0xb95c0de7,0xb7875d3c,0xb7b7cb66,0x372db97d,0xb7068e92,0xb95caf9b,0xba0e2b4e,0xbab27674,0xba860414,0x3b23f21b,0xba5fafe2,0xbad8e1c0, -0x3ad4c195,0xbaa88369,0xbabfce07,0x3b1f2613,0xbafa8749,0xbae615ff,0xb9b55ed2,0xbb4150dd,0xbb54b3d7,0xba8e8e26,0xba16cce5,0x37ff9e31,0xbafe3d37,0xbb22536e,0xbb1c2716,0xbaa99550,0xba98aee1,0xba946335,0xba936e33,0xba6867ef,0xba34c10a,0xba28c393,0xb9df1dcb,0xb8e04950,0x38ef05b4, -0xb82221cb,0x379b5a84,0xb81c35b2,0x3767b5de,0x36a370d8,0x39ec4797,0xb8d1ffc2,0xb956202d,0xbb35f52e,0xbaa21382,0x3a037e42,0x3bf1c92e,0xbaa68431,0xbb6895a4,0xbb9ef4fa,0xbb082bad,0xba097868,0x3b41ac96,0xbb31f7f3,0xbb8a3e9f,0xbb901cfa,0x37881928,0x3a713229,0xba6ccc86,0xbb268f9c, -0xbb3f386d,0xbae3fe75,0xbac3d48e,0xba152668,0x3a34c456,0x3a230ed3,0x3a587397,0xb9c15e28,0x3485b051,0xb8b8f9db,0x3803df30,0xb7872071,0x3823ebc6,0x37573b0a,0xb68b7c63,0xb737c9e4,0xb9b38f0c,0x39680cdf,0x36cf750d,0xbba62c03,0xbb6df5e8,0xbb8417f7,0x3ba1f530,0xbb99d1bf,0xbc022c56, -0xbc5746ec,0xbc0d74a0,0xbb6f5d1a,0x3bc7338e,0x3b2fe225,0x3aac0b3d,0xbb05a3b7,0xbb454455,0xbb4b4d35,0xbb08a56c,0xbb120a8b,0xbb0657bb,0xba9fea2e,0x36eaa3c4,0x3aa9f513,0x3b05a925,0x3afb9660,0x3ad09929,0x3a6dd0a1,0xb982880f,0xb90213a8,0xb8bc1f7b,0xb8a2dd4d,0xb8c0478e,0xb8324c81, -0xb89846c3,0x37ad8715,0xb69a9c64,0xb94eb5c1,0xbae10273,0xbc015ff9,0xbc126423,0x3c02939e,0x3b936846,0xbae3d79e,0xbb19ac8a,0xbb0b1825,0xbb633d8f,0xbbb36a87,0xbbe8ca3d,0xbbc846b6,0xbbcc9e7d,0xbb9b8747,0xbb7d5164,0xbadcd41c,0xba812e43,0x3802a6fa,0x3a41501f,0x3a532be0,0x3a8950fe, -0x3a76dc25,0x3a82abe1,0x3ae874cb,0x3b0aa746,0x3afa55e1,0x3a8d5905,0x39b037dd,0x38ccccf2,0x3911e3f9,0x39010958,0x38c84fcd,0x37f8b37b,0xb7c92c8d,0xb766c306,0xb9b2f390,0x3ad3d4c3,0x3b9595c8,0x3c040ee0,0x3a05efdd,0xbab3d4b2,0xba9cb17d,0xbb054326,0xbb4e7828,0xbb6d19de,0xbb576236, -0xbb3c036d,0xba467a7c,0x39bd1c34,0x393753ba,0xb8c94cde,0xb9e80323,0xb9cb9915,0xb9f5f66c,0xba699b0a,0xba930c43,0xbab7880f,0xba95dbe0,0xba02bc80,0xba0c98de,0xb94ef68b,0x3881d033,0x3985ee09,0x38bf1a36,0xb99610ff,0xba08ec01,0xb9818d3a,0xb9a0d1eb,0xb91cbe61,0xb949bad2,0xba1490e4, -0xba70bd77,0xbadd1f22,0xbb0405c3,0xbb106eb3,0xbae510cc,0xbb0d23fa,0xbb27730c,0xbb0a52b5,0xbb09ac34,0xbb0f7387,0xbb0a7dc1,0xbb12a80e,0xba6d2e7b,0x38a73bc8,0x3a657361,0x3a985f21,0x3aa0bba9,0x3a90f878,0x3a2e4fd7,0x396ded5c,0xb93c1bce,0xba093dd1,0xba43666f,0xba707fb8,0xb9ff4a4c, -0x3917286a,0x3a3e48be,0x3a48bae2,0x3a72de2f,0x3a406672,0x3a0fd9e1,0x3965f24d,0x394885ec,0xb924e527,0xb9c516f0,0xba6de3db,0xba3eaf66,0xba1f45a5,0xba24d3fa,0xba65e28e,0xb902d341,0xba8fde12,0xba956418,0xbaab25ba,0xbadbe2d4,0xba4a1c65,0xb9201929,0x3988fd80,0x39ee72d1,0x3a02613a, -0x3a627a75,0x3a69f58a,0x3a94c254,0x3aa24ebd,0x3a873c27,0x3a748c70,0x3a373d70,0x3a00fa99,0x39dae7da,0xb95cae8d,0x39877411,0x3a394f7e,0x3a72cab3,0x3a9fa9dd,0x3acfca11,0x3af7b980,0x3af90d1b,0x3aa31ed0,0x3ac89528,0x3a52ebba,0x3a3a9a7c,0x391db5f8,0xb997ab45,0xb90dc28f,0xba41542f, -0xba53b7ff,0x3b3bae9a,0x3adb81f8,0x3acbb50c,0x3ae0be4f,0x3ae03623,0x3a9502b8,0x3a1e397e,0x398aea82,0x39e4cb54,0x3a123b03,0x3a0e5f7f,0x3a12c1cf,0x39e0fa5c,0x39acba92,0x39900f7e,0x39871ad9,0x39b12905,0x399255ca,0x39cd1ac1,0x39aa8836,0x39860797,0x3a14888b,0x3a53fd7f,0x3a903425, -0x3aa40a25,0x3ab71268,0x3ac2b629,0x3aa85821,0x3ac5c873,0x3ad64c99,0x3ac4130b,0x3b0c25ae,0x3afa9194,0x3b14f6d0,0x3b3fd5c1,0x3ae706f8,0xb8cea5ff,0x38c064d7,0x39678a9d,0x383031d6,0x381fb994,0x3902a7fb,0x39aba73c,0x39cb3f64,0x39b9caa5,0x39a2816f,0x399e35a8,0x39a6e82c,0x39c013a0, -0x39d77fac,0x39d8e9da,0x39d1eb93,0x39d0c2af,0x39bf631a,0x39a65ff4,0x39adc94a,0x38c378a4,0x39c63cee,0x3a8defe7,0x3967050e,0x3a13aeb4,0x3ac35023,0x3acf7626,0x3ab8a0a0,0x3ab10d2f,0x3aae0b7e,0x3a9490ee,0x3a6d60a1,0x391e651e,0xb8f0b885,0x3a6bc86c,0x39b01958,0x39bc95d5,0x3a9c196e, -0x3a9eb7cc,0x3ab8b471,0x3a6cbd1f,0x3a69cb21,0x3a520b6e,0x3a893c1a,0x3a8c797e,0x3a71e485,0x3a72a4e2,0x3a85247f,0x3aab4dd9,0x3a77d22f,0x3a5e0584,0x3a60a0ac,0x3a7c010b,0x3a8df01a,0x3a9ec5b6,0x3a965218,0x3a814fd8,0x3a912c2f,0x3a0d5dc7,0xb963623c,0xbadeae9f,0x3a385af6,0xb995a821, -0xbaed0186,0xbae9b2cc,0xbae54060,0xbad5115a,0xbae003e9,0xbacdfd43,0xbac9e8bd,0xb989b2f9,0x3a80f53f,0xbacaf9dc,0xba05fb8f,0xbadb8598,0x3aa9dc17,0x3a929aa9,0x3aa38c78,0x3a9bb196,0x3b18e23a,0x3b150420,0x3ac4dc3d,0x3aa47ade,0x3ab9ee46,0x3b18dd75,0x3ad92467,0x3ac63eea,0x3ad321e9, -0x3aea39f0,0x3afa6285,0x3b0a0248,0x3ae27e1d,0x3ac3fb8b,0x3ac782e0,0xb992fafd,0x39095f7d,0xb991c6cc,0xb9cc42f4,0x3955e153,0xba565a7a,0xb97b220a,0xba326864,0xba115edd,0xb96334aa,0x3a25864d,0xba8178e7,0xb8385325,0x39347680,0xba1d54d5,0xb93ec223,0x3937646c,0x3b16e6e5,0x3a8e5636, -0x3aa7573c,0x3a61f7ef,0x3b245542,0x3b3ba942,0x3ad4c570,0x3ac4bc41,0x3ad89fb8,0x3b66215f,0x3ac64f9b,0x3aa2115b,0x3aaad164,0x3af49dc1,0x3b1f949a,0x3b51ede2,0x3b1b93a1,0x3b11b51f,0x3a9951a7,0xb9a9346c,0xb901f006,0x3a280a19,0xba74746e,0xba8f5146,0xb9e462f6,0xba805641,0x38c073dd, -0xbaf242d6,0xb78bc0f0,0xb9f3307b,0xbaa8bdad,0x39a9e189,0x39b8c523,0xba618194,0x3a78b1d6,0xba399057,0x3a93e400,0x3ab01e38,0x3ac5166b,0x3abeef81,0x3b89f658,0x3b98557a,0x3b2dc668,0x3ade8fe5,0x3af77caa,0x3ba1fc4c,0x3b299dd4,0x3b0f3465,0x3b1e5d42,0x3b5131f6,0x3b6a4016,0x3b87b35a, -0x3b548865,0x3b1d5b25,0x3adee5e8,0x39c4f350,0x3921bd96,0xb972f772,0xbac7b67e,0xbad39c10,0xba8d2af7,0xbac1ab49,0xbaa1ce36,0xbafea2bf,0xba95cc23,0xba9b850e,0xbb13bd6e,0xb9aaebc3,0x391182f1,0xbabbb21c,0xb9d0b102,0x3a93b508,0x3afd94ab,0x3aa3bebf,0x3a51f572,0xb94b7a1f,0x3b72c148, -0x3b7e0854,0x3b2afe19,0x3af6ff23,0x3b249402,0x3bb733d6,0x3b00aa98,0x3a0156b8,0x3a1208d6,0x3b1b0b28,0x3b779f2d,0x3bae6bc8,0x3b87e707,0x3b5f6690,0x3aff02e2,0xba05781d,0xb900dcfe,0xba28820a,0xba864699,0xb9f5f476,0xba005dfb,0x3a02f69e,0x39297ed1,0x39d5bc56,0x38f981ee,0x38d24ddc, -0xbabca43b,0xb917e80a,0x39e0f2e0,0xbac8a7d8,0xba2f37f5,0x3b52a091,0x3bb31d45,0x3c1aae4b,0x3c1ef08a,0x3c1f8570,0x3b8b7d8f,0x3b58beb2,0x3b99469d,0x3afcd75f,0xb794fd12,0xba232a2c,0x3b6a8023,0x3bd8921a,0x3c10bafe,0x3b58c08b,0xba233167,0xbb3765e7,0xbb9160f2,0xbb8027ae,0xbb420f0e, -0xbb8f633f,0xbb19b886,0xbb039fb8,0x3b043ab0,0x3a4c10f6,0x36a58b9e,0xb6e9a13a,0xb91b62d4,0xb8586328,0xb90ee693,0x39b3cc98,0x39fd4223,0x3ad63757,0x3b4396cd,0x3b2035a9,0x3b94cbc1,0x398f216a,0x3b08a296,0x3a602ac8,0xbad7baff,0xbb7554ce,0xbbafe25f,0xbbb2fdf3,0x39bb2219,0x3aa442cf, -0x3b46cfea,0x3b746042,0xbb5bf9fe,0xbbd10d54,0xbb99910f,0xbae23db5,0x3ad253e7,0x3bb3a04a,0x3b93c2c2,0x3b5b524a,0x38f69961,0xbaa98616,0xba3f4c6d,0x39f89b36,0xb746ff27,0xb938d209,0xb7ff11a3,0x3841af1d,0x388a287d,0x385dc0cc,0x386d93b9,0xb8d5ad59,0xb93c25e9,0xba706d2f,0xb9b31617, -0x3b35021d,0xb8b60e24,0xb9b88229,0x3b5dcf39,0x39b09210,0x3a7724a7,0x3bc6799e,0x3b979a15,0x3bbd3c84,0x3be3f33c,0x3af509fc,0xba49035d,0x398f6785,0x3b09fc29,0x3b7e7619,0x3b4d52b7,0x3ae0df0f,0x3a33e02e,0x3a21275a,0x3996a50b,0x39adc25d,0x3a0f107f,0x381d598c,0xb986f8fa,0xb9c6fe23, -0x38bd3365,0x38b7c6ab,0x382ae10b,0xb74873df,0xb7e4d277,0xb827b7e2,0x37e72b9c,0x35805641,0x3999ab3a,0x397d0265,0xb9711a3c,0xbb00b19a,0xba9c1013,0x3a1d684c,0x3bd7dc9f,0x39a9d9aa,0x3975a9a3,0x3b902a28,0x3be07cf7,0x3c140e31,0x3c22dc66,0x3b63a15d,0x391ab7b0,0xbb0bc824,0x3b8bd214, -0x3bbf3daa,0x3ba21cff,0x3ad8835b,0xb90c8cc1,0xba05ec86,0xb9fae610,0x3a3f0fb7,0x3ace6020,0x3acb63a7,0x3a9de8fd,0xb79f81a4,0x38ab099e,0x37a804f6,0x37c32db0,0x37f91fa6,0x3802a4f3,0x380ed758,0x3703e483,0x38004856,0xb9007cdd,0x38040021,0x36a26e67,0xbb93a756,0xbb2fd4a9,0xbb90c074, -0x3b5869aa,0xbab775c1,0xbb0073da,0xbada0f0b,0xba9909eb,0x3a912159,0x3be3a0f8,0x3b97f787,0x3b36c127,0xba355622,0xbafd4101,0xbb17a6bf,0xbb105968,0xba6a2de7,0x38f40718,0x3adca393,0x3b11b7f0,0x3b296d87,0x3b204935,0x3b05d811,0x3ae2340a,0x3a2fcd04,0xb8dd462f,0xb83b5ea4,0x36aaaf27, -0xb7fe25d0,0xb72bb488,0xb783dcc6,0x3745116f,0xb77f31c7,0x38d5f414,0xb8cb47de,0xba91e86a,0xbc07f782,0xbc0580d8,0x3c0695ee,0x3bef7a87,0x3bddaed7,0x3b9de236,0x3b9b8116,0x3b6b2628,0x3afff3f2,0xba71c873,0xbac98afa,0xbb0bb625,0x3845234a,0xb9fb7ed0,0x3abd2630,0x3b03acd8,0x3ab40d58, -0x3a924993,0x3a5d3133,0x3a787eac,0x3ac53cb8,0x3b208a25,0x3b25848c,0x3b39a87d,0x3af8236c,0x3a757ab7,0x396cc1b2,0x3891853d,0x38ca9f7e,0x38409ae1,0x3880775a,0x37b36313,0x389bd8df,0x3863b5b6,0x35bf4b86,0x3a9c077f,0x3b91b22d,0x3c19c8e4,0xbaadc0f8,0x3af5eb2d,0x3b1b09e4,0x3ab1d1eb, -0x3a29a739,0xb924ab12,0xb93d98b3,0x3a2388dc,0x39de85c2,0x393bd672,0xb9dbcd3c,0xb9381138,0x37a39304,0x39128472,0x39f92468,0x39b9b33c,0x388288d5,0xb9c32806,0xba100d68,0xba60da6a,0xb9e1c9a8,0x398d5bdc,0x3a102327,0x3a01c32c,0x397beb2f,0xb9480404,0xb911c324,0x374c974a,0xb69498fc, -0x376bb4a0,0x38a3b1bf,0xb983959c,0xba3e82e9,0xba7f8fad,0xbaaa04a6,0xba2430c8,0xbac74a65,0xbab1c7fd,0xb997f022,0xb9c3a873,0xba155cb8,0xb9dfaeaf,0xb6eacfcf,0x3a0936e2,0x3a28024f,0x3a8e999e,0x3ac38c2e,0x3afed70e,0x3b0592da,0x3afb17a9,0x3acd76f4,0x3a6b3a1d,0x39e8087d,0x3950e4f9, -0xb8329ff9,0xb97ce8d4,0xb928933a,0x392d4333,0x3a896c76,0x3a32caa6,0x3a51891a,0x39e78db8,0x39915ef5,0xb8f628a3,0xb6731a07,0xb9226751,0xb9bbfa4a,0xba58ab99,0xba272bb7,0xba18521d,0xba5e4d0d,0xba773e11,0xba2a03ee,0xb9f7733c,0xba370593,0xba0a3377,0xba030932,0x3a09cd0a,0x3a98b970, -0x3ae5a2a4,0x3b06ac24,0x3b0dd1d5,0x3b1dc37f,0x3aec3e63,0x3ad50cb2,0x3ab4b7be,0x3aa17041,0x3a9f802b,0x3a8d0e07,0x3a78e7ed,0x3a92d7c3,0x3a107301,0x3a7e16d8,0x3a865ae9,0x3ac0f7b2,0x3ac6cd2c,0x3ae7b25c,0x3b047425,0x3ada4fb3,0x3af36626,0x3aac3049,0x3a8f84b2,0x3a26b3d0,0x3995b567, -0x3941230b,0xba07fdfd,0xb9dad859,0xb9f7decf,0x3add36cc,0x3b08630a,0x3b148a6c,0x3b2ce3b7,0x3b3583e3,0x3b28453a,0x3b2050c2,0x3b245aa2,0x3b03baf9,0x3ad41c01,0x3aa81a4b,0x3a9dfe4a,0x3a84e30f,0x3a459567,0x3a461ed7,0x3a39992d,0x3a40a759,0x3a2c41fd,0x3a07ab32,0x3a5a4c2d,0x3a36ed24, -0x3aa3b453,0x3ac1735b,0x3af58869,0x3af8efe3,0x3b0a0674,0x3b0995b2,0x3b0ac4ee,0x3ae2b9fb,0x3b078b26,0x3b031eaf,0x3ae64632,0x3b0de16c,0x3b0d2ce4,0x3afd232e,0x3b2613a1,0x3a6cb49a,0x3a8e8d3d,0x3a860ff4,0x3a7fd4bd,0x3a8a14c0,0x3a9a48a5,0x3aafad1d,0x3ac5ae04,0x3ac566c5,0x3aca0a55, -0x3ac45316,0x3ab74034,0x3aaabaef,0x3aa0d9fb,0x3aa38d9a,0x3aa49c79,0x3aa97b6d,0x3aab5fdb,0x3aa5db03,0x3aaa88c0,0x3a9c4d01,0x3a3b3998,0xb8bab617,0x3ab620b3,0x3a714424,0x3806572e,0xb8520c92,0xb795886b,0x3887bd18,0xb8a12f44,0xb8c7139d,0xb8306c3c,0x3a10b81e,0x3a774782,0xb99b8f75, -0x398cdf56,0x3afb807d,0xbaad890f,0xba63b3f9,0xbac012d2,0xba75097e,0xba759f87,0xba744a8f,0xba779d1d,0xba8789e8,0xba9d1b37,0xba9a3d2c,0xba90cc2e,0xba4d903b,0xba8f0933,0xba9d8106,0xbaa0819b,0xba99665d,0xba93d3f6,0xba79ec5d,0xba85f72e,0xba726ac7,0xba9d2e7e,0xb960f46f,0x3a1e9ebb, -0x3af6ab3a,0xba4a2486,0x399fc4e7,0x3ae2c040,0x3ad87f9d,0x3ac35f73,0x3a9c75f6,0x3add2bfa,0x3adbc280,0x3aa5a83b,0x3a3a1fca,0xba408c99,0x3abac6b6,0x3a7d4ba5,0x3b02c2bf,0xba4f091b,0xba859163,0xba5869f0,0xba210198,0xb9c95e13,0xba5a7438,0xbae0c848,0xbafa9127,0xbaf2d958,0xba4c2119, -0xbaa6e2ba,0xbaba4dc9,0xbac27a05,0xbab7798b,0xbab4f2ed,0xba6c1562,0xba823bc4,0xba8f0d74,0xbabe3713,0x3a151be0,0xb98634cf,0x39a6350e,0xb9cc2d3b,0xbaade486,0xb9073a6c,0xba457774,0xb9740c1f,0xba1d08e3,0xb7c467e2,0xba8cb2cd,0xba33fa7b,0x39108045,0xb894f267,0xb96b9043,0xb982f1ce, -0x39c8a9d4,0xbaa25250,0xba46a3be,0xba12f989,0xb9d7fc3c,0xb994e2f1,0xb9fedd2a,0xbaf7fafd,0xbb0d070f,0xbb009583,0xb8e2e21c,0xbad9fa11,0xbb063383,0xbb067dac,0xbb06f370,0xbacad86c,0xba4e515e,0xba528e48,0xba9defc4,0xb9dfa426,0x3a629c2c,0xb9a5377a,0xb8de263e,0xba7b60a1,0xba9a2205, -0xba3c2efe,0xba96a97d,0xbb0b6296,0xbae7a943,0xba88a0b8,0xb9a79fc6,0xbad78f2e,0xb9d9b2ce,0xb9412daa,0xb9e9ca64,0xbaa28c4b,0x3a35765b,0x3a00da07,0xba837ea0,0x390c9ad5,0x39b14a19,0x3a9e35bb,0x39a61779,0xbb021f95,0xbb5696a5,0xbb46d35f,0x3982e5db,0xbacd2dfe,0xbae7b331,0xbb026ef5, -0xbb038389,0xbac90f60,0xb99bace2,0xba05a306,0xba863d56,0xba0957d7,0xb9547a15,0xbabd5220,0xb9089189,0xbb27a726,0xbacd4b00,0xbaaf5449,0xba87dcc4,0xba48fe60,0xba8a5d97,0xba8dd414,0xba58e871,0xbb0ba732,0x38fdcb7d,0x388f358a,0xbaebbad9,0xba8a0122,0xba7b6901,0xb9788fe8,0xba68bf8c, -0xb953ea77,0xb9dd7095,0x3a553f05,0x3866477e,0xbaf107ce,0xbb435033,0xbb1a4cff,0x3a3e5bf4,0xbafb694c,0xbb693848,0xbb72aaf5,0xbb555ecb,0xbb0804fa,0xb9b69f72,0xb99b4898,0xb9fb49b3,0xb97a6b71,0x3aac71c5,0xba6a97cf,0xba05b96c,0xbab1785a,0xba33c307,0xb9216131,0x3960add1,0xb62cb93a, -0x398c2950,0x38defc23,0x3926e50a,0xba65809a,0xb9c92be6,0x3829b5ed,0xbaf01551,0xb9d8fb20,0x3b8b372d,0x3b802158,0x3b91a067,0x3bb5c750,0x3bc07de1,0xb926fcfe,0xbb0be98a,0xbab71d13,0xbb7662f4,0xbb9a467d,0xbba8a203,0xba44b673,0x3b6825b7,0x3c00b460,0x3b333314,0xba91840f,0xbb93f081, -0xbbdb2446,0xbbe63a45,0xbba61949,0xbb87eead,0xbb527f79,0xba9bdcd0,0x3aba63c8,0x3a5005d9,0xb918f5ce,0x381a6f94,0xb88cceda,0xb891332f,0xb9146044,0x38c63baf,0x39368e04,0x3a894b10,0x3b1cdfbd,0x3b6cb7c8,0x3b4d9dfe,0xba1353eb,0xb9c8b47b,0xba94d353,0xbb11eebd,0xbb3b2f35,0xbbc946c6, -0xbbc75373,0x39852ef5,0x38eaede4,0x3addf494,0x3b5e121a,0xbb32aab2,0xbbc17bee,0xbbb454fb,0xbb7ac53f,0xbaf2fac3,0xba1b839d,0x3a1c2043,0xb9d77650,0xba4289f5,0xb98a4bbc,0xba7802e4,0x39b388a5,0xb9db0648,0xb9a58a6c,0xb87c3983,0x371902db,0x361f6947,0x383f0dbb,0x377de8d6,0xb8234acd, -0xb917dcfd,0xb9b515ad,0xb9b5b8c4,0x3acc69ad,0xba1d4dbf,0xb856ae92,0x3b53d130,0x3a9c1e66,0x389e446d,0x3aec30d7,0x385f54be,0x39d8db2f,0x3a6d48f4,0xbb28150a,0xbb823d73,0xbb14efd2,0xbac905e0,0xb915abbc,0xba12a7d3,0xbafa9edc,0xbb0e145d,0xba59a72f,0xba86ceda,0xba8f0ad1,0xba53c693, -0xb9863617,0xb9be7475,0x374840bf,0xb942c1bf,0x390733e1,0xb7861dbc,0xb70037b8,0xb7dab790,0xb8259faa,0xb760273f,0xb7cc5559,0x3906034a,0x38a3e8fa,0xb943aa1a,0xbae7f1de,0xb998eb1b,0x3afba9e0,0x3bb4526a,0xba7e5426,0xbb3c6ad6,0xbb9c79b5,0xbaa4f0e1,0x397f01f7,0x3b36fa33,0xba79d417, -0xbb3554db,0xbba72039,0xb9e13b30,0x3a919449,0x3a8341ce,0xbafb4b28,0xbb2b467a,0xbaca0ce6,0xbaa610b8,0xba1f0c63,0x3aa11061,0x3aa7bfbf,0x3a670452,0xb9a26acc,0x39856c28,0xb8e49d20,0x37d3b4de,0xb726a60c,0x373e84ed,0x37df51f0,0xb7a64152,0x3689c940,0xb8f97e06,0x38e08cd7,0xb9528e8d, -0xbb732ac7,0xbb1cf56a,0xbb727210,0xb98d1734,0xbbd29737,0xbbff03a1,0xbc3ccabf,0xbc1bfedd,0xbbb49a49,0x3b8da0a0,0x3b81018c,0x3b67b937,0xbaad0016,0xbae1a6b9,0xbb3c46f0,0xbb32314c,0xbb2895c7,0xbb0d08e6,0xbac83d0f,0xb9c2ceea,0x3a2b1253,0x3ade509a,0x3add1414,0x3a898276,0x39a28cf5, -0xb99f3e8a,0xb8615109,0xb7e81999,0xb87d79d3,0xb80e6d1f,0xb80e88be,0xb49b5985,0xb70feb9d,0xb59412d6,0xb7e1bb5f,0xbab62c6a,0xbbf3f13a,0xbbe5edd5,0x3c3437b1,0x3c0d0bd0,0xba1e17c9,0xbb0c2e29,0xbae920f1,0xbb24c524,0xbb848c88,0xbbc64b87,0xbbb53721,0xbbb8fd8a,0xbb74e8a0,0xbb45eecc, -0xba976240,0x3684fa67,0x3a2b1c81,0x3a93afb7,0x3a8d75ec,0x3ad828f4,0x3adbce32,0x3adff6d3,0x3b3dc538,0x3b38fc5f,0x3abfbc2c,0x3a4d6d96,0x38f09561,0x387e0156,0x38bc5cd8,0x380c4659,0x37abc45a,0x36c32ec2,0xb8a32075,0x393b0c9d,0xb929eef7,0x3aebe858,0x3b9bfb0d,0x3c0e30fc,0x3ae95823, -0x38b94a4d,0xb9df537d,0xba8d70dd,0xbb228025,0xbb533341,0xbb5bd3be,0xbb4c8b74,0xbab89df9,0xba215632,0xba7d86a5,0xbaa9b8e6,0xbab90ae5,0xbab7375f,0xba8dd71e,0xba9f85e6,0xbab3f2dc,0xbac7a98b,0xba9ae4fe,0xb9b7c367,0xb9d9c34d,0xb902fc0a,0x39f6cc03,0x393d4d23,0xb794b7de,0xb8de9df4, -0xb99be914,0xb81de904,0xb90939ca,0x385b0fcd,0x38503048,0xb91e8ead,0xb9c8ac14,0xba79d4ad,0xba8eb547,0xba530343,0xba93f38d,0xbad697b4,0xbb13b868,0xbb000176,0xbaffc894,0xbb0ed3bc,0xbb165b1c,0xbb356c6f,0xbad9fd7f,0xba520c11,0x38f74d05,0x3a260bc5,0x3a72c310,0x3a853ae0,0x3a2b6501, -0x39a1746d,0xb901381c,0xb9d8a21c,0xba23211a,0xba3a18d5,0xb80a51f3,0x39e61c4f,0x3a47fa9b,0x3a2d2eee,0x39fe2aa1,0x38e68e68,0x3948f074,0xb764e30e,0xb7cd9987,0xb98b8c34,0xb9f141f8,0xba5afdc7,0xba716ac2,0xba623c3f,0xba0656e6,0xba544f48,0xba3fa557,0xbb0be4ed,0xbb0fdcc8,0xbb07cc96, -0xbb20529c,0xbad9ee40,0xba8fc33b,0xba28a5b8,0xb8686af2,0x39848f71,0x3a5018e2,0x3a5038de,0x3a9eba23,0x3ac8d4fd,0x3aa0e14d,0x3a945bff,0x3a4a1c20,0x3a30553a,0x39d0de66,0x391acf54,0x3a1659e7,0x3a685049,0x3a86d82f,0x3a9b012d,0x3aaf44e6,0x3ac29973,0x3aaf7b10,0x3a003da4,0x3a999a24, -0x391c93e8,0x39c90adc,0xb98d5fc1,0xba0dfaa5,0xb9f2a9ca,0xbaa0a2ec,0xbac815f2,0x3b21e88b,0x3a6babb4,0x3a752036,0x3a8f7dc6,0x3aa3a3f9,0x3a3d81a6,0x39c5e98b,0xb68c29a9,0x388609ca,0x3940381e,0x39844551,0x39e937e8,0x39ec9700,0x3a121db4,0x3a04cba8,0x3a08f20f,0x3a2ac7a0,0x3a2183ef, -0x3a37994b,0x3a2c74e5,0x3a839a4e,0x3a9c861e,0x3ac67593,0x3adfe3e5,0x3b004c0b,0x3b0809b0,0x3b0c4ed3,0x3b005273,0x3b0264a9,0x3af87321,0x3a9c888d,0x3b07a008,0x3acfe91a,0x3af41863,0x3b2cce72,0x3aa1e58c,0x399408f0,0xb915d323,0x384af471,0xb88a0872,0xb81d30f9,0x37b5b9bc,0x396ba6bb, -0x39ae0d21,0x39e3745c,0x39f459d9,0x3a01a948,0x3a0a8037,0x3a18f31d,0x3a2a62a3,0x3a22fe6d,0x3a1d2d07,0x3a1ab657,0x3a0e72ea,0x3a048219,0x39dbef35,0x3a2e8c8d,0x3a9c816f,0x3adc0482,0x3a42cd5f,0x3aab17a9,0x3b01eb77,0x3b07e32f,0x3aeea098,0x3ae257f7,0x3aef7d66,0x3ade0563,0x3ab6a5ca, -0x3a44ef1d,0x3980ea5d,0x3aa10af9,0x3a6ac95c,0x3a54f34f,0x39dc7b5f,0x38f3072a,0x3a9c4f5f,0x3a08544e,0x39f7f2df,0x39bd2d35,0x3a08476a,0x3a0a8b73,0x39ea857d,0x39df581f,0x3a04f9b3,0x3a5116c8,0x3a0366f4,0x39cf9399,0x39c5af9c,0x39deedd8,0x3a06225d,0x3a300358,0x3a1fce19,0x39fb3607, -0x3a2cf706,0xba0e7be3,0xba9965ae,0xbac42c19,0xb9ba8305,0xbaac7e94,0xbadc0779,0xbaebda11,0xbae99cca,0xbad907b0,0xbaf5aaf6,0xbae69da7,0xbae6f3e7,0xbaa886fa,0xb86ca8cd,0xbac9faa7,0xbac04493,0xbb1cabdd,0x3a195032,0x3a4a0f8f,0x3a3b0221,0x3a120ae8,0x3ab41584,0x3aa62828,0x3a508399, -0x39f1264a,0x3a148d00,0x3ab36722,0x3a5ca465,0x3a399777,0x3a2f1ad2,0x3a3113a2,0x3a4bdd76,0x3aa07965,0x3a6b5d69,0x3a56dfe0,0x3a700eff,0xba9322fd,0xba13882f,0xba20c836,0xbab54d2e,0xba2ee45e,0xba73f1ef,0xba80508c,0xbab39159,0xba6b9da9,0xba4878a4,0x39f786ca,0xba9a95ff,0xba26920e, -0xba077c59,0xba9eb273,0xba3b607d,0xba892911,0x3aeb1a77,0x3a785330,0x3a490af4,0x399c67fa,0x3aac2121,0x3abdaa72,0x3a5a49a6,0x39da8830,0x3a2062a7,0x3b131410,0x3a4c952f,0x39ce744d,0x396c3070,0x39d9edff,0x3a5cdc2d,0x3af80114,0x3a947ca3,0x3ab1c064,0x38d6548e,0xbabfadf7,0xba4c5961, -0xb81297e7,0xbae9908e,0xbacd1a0c,0xba36c7d8,0xbab61fa1,0xba29fbbc,0xbb149e13,0xb9c2c3ed,0xba67a43c,0xba8f1bf1,0xb91cbffc,0xb98994bf,0xbab5da80,0x398a1d0c,0xbacdb4c0,0x3a35f33a,0x3ab55a26,0x3a895f49,0x3a4de7a4,0x3b2bb9c1,0x3b354712,0x3ae19032,0x39b7629d,0x39f772f2,0x3b46ec55, -0x3aaa4311,0x3a7e9bc3,0x3a372178,0x3a56d6ac,0x3a9ead29,0x3b256dc3,0x3af13450,0x3ac1c2bc,0x3a21d2d8,0xb9f59a99,0xb97d3247,0xb9c8c623,0xbae37ed0,0xbaf4a514,0xba0413a3,0xbaac3a52,0xba1a2d2a,0xba33ecd6,0xb9c8b933,0xba434ee2,0xbab1b365,0xba11334b,0xb8e89a46,0xbacbeeb7,0xba38e2ef, -0x39d0eae6,0x3a99d450,0x3ad6d71c,0x39a5a1bf,0xba015c2b,0x3ae99638,0x3adae40b,0x3ac43249,0x398b16ed,0x3a6ce78b,0x3b76ce15,0x3a9adc89,0xb9c29fc7,0xba877a50,0xb98551f3,0x3a8455a9,0x3b48ecaa,0x3b0b8fdd,0x3b00f0cb,0x3a44b7ec,0xbae5a597,0xba1172b0,0xba41cd30,0xba9b0066,0xb94f4240, -0xb8b554cb,0x39f0cc49,0x392e7739,0x39f223e5,0x37bc8c6f,0x39cde2fa,0xb9f05232,0xb7e8f918,0x397c28eb,0xba9a1ff5,0xba9ddfb0,0x3affc8a8,0x3b67a666,0x3c0d7c33,0x3c156555,0x3c1f9fe4,0x3b72dd72,0x3b16b81f,0x3b5be571,0x3ac9d461,0x38ec54c7,0xba162929,0x3b61a2af,0x3be8dd8d,0x3c2a62a4, -0x3bb70801,0x3ab4a790,0xb998eda8,0xbb4bf400,0xbb616249,0xbb3fa05c,0xbb893e90,0xbab93456,0xba5d9537,0x3ae524d1,0x39824d1f,0xb80eb7db,0xb8bddd18,0xb9037d94,0xb918dc01,0xb8caf67a,0xb7975a63,0xb862e9d6,0x3a01f19a,0x3ac3239c,0x3abf6ba0,0x3b359c84,0xb980cb53,0x3b1f3b69,0x3b0c6635, -0xba4c6e33,0xbb1d76a2,0xbbba1789,0xbbd1498d,0xb9dda5ac,0x394aca04,0x3b2aa474,0x3ba2018d,0xbb062864,0xbbb54f2e,0xbbb14553,0xbb237f12,0x3a0c0e3e,0x3b57a166,0x3b1fbf0a,0x3aeedb19,0xba9aa732,0xbaed9058,0xba7636d0,0x395641ed,0xb9b5ab19,0xb948473d,0x38859ef6,0x388adf03,0x3887d689, -0x38afcc6a,0x380b79cc,0x380da73a,0xb5bc8660,0xb9b7ce67,0x389b272f,0x3ab362f7,0xba0d3ad6,0x3a6b4590,0x3ba941c6,0x3b35fad8,0x3abeca83,0x3b3430ab,0x3b1d8b03,0x3b74b199,0x3b9a722a,0x3b11b674,0x39617f14,0x390fcda2,0x3af0fa99,0x3b5c2b1f,0x3b6bc39c,0x3af3b6bd,0x3a057546,0x3a4d6d57, -0x39305aa4,0x3a220788,0x39d5d1e9,0xb8aeced0,0xb8773afb,0xb9c0d0bc,0x38d916d5,0x38801e36,0x370f72a0,0xb80e617b,0xb7b481ff,0xb82b6f15,0x37042887,0xb779d1cb,0x3828f6d5,0x39223611,0xb9758aee,0xbab875f8,0xb9fdf81b,0x3b0a172e,0x3b8502c9,0xba3d5cef,0xbad9c84f,0xbadc5c27,0x3b322b67, -0x3ba97407,0x3be16f11,0x3b8a7d7c,0x3ab3e7c9,0xbb61881b,0x3b2ff597,0x3b8a0fbd,0x3ba929a3,0x3aaa052e,0xb97fce4c,0xb99baa36,0xb9b55d83,0x3a8eabee,0x3ae40b6d,0x3aa426c8,0x3a814c82,0xb90114f8,0x37efcb99,0xb83462b9,0x378d4f85,0x37ff387d,0x373e35ce,0x3746e7de,0x372e598d,0x379e0d02, -0xb840ed0c,0xb71a3d76,0x37e6ead1,0xbb52ff69,0xba95890a,0xbb71ab57,0xbb83f2dd,0xbbc536b7,0xbbbe4e73,0xbbbbf1b3,0xbbd2cf10,0xbb8457bc,0x3b90c4c8,0x3b863570,0x3b6512a9,0xbaa77a3d,0xbaf95333,0xbb3c8952,0xbb525e4d,0xbaf95ee2,0xba4ee0a2,0x3a1195a7,0x3aa62a80,0x3aec2620,0x3ae48401, -0x3ad7a3ac,0x3a8bf536,0xb908a410,0xb96fce67,0x37af7a9e,0xb694538d,0xb74e5d8a,0x37db1511,0xb6c8c886,0x3808780c,0xb7b84b79,0x38a2a168,0xb78fb49f,0xba7e408d,0xbbdff22d,0xbbbbf6b4,0x3c0617b5,0x3c04fb5b,0x3b4e0114,0xb7ffe545,0x3a880ea1,0x39afbfb5,0xb8977e2b,0xbaf4327d,0xbb21c6d2, -0xbb562845,0xbaedba8b,0xbaf780da,0x39bec79b,0x3aaf6260,0x3aa68eba,0x3aa85e93,0x3abb0b6d,0x3ad4cae9,0x3b145964,0x3b40e71f,0x3b1e86de,0x3b249e98,0x3ac42555,0x3a10b43d,0xb8763270,0x384b7844,0xb7105f04,0xb7455fd7,0xb81b75b3,0xb79ecbe3,0xb86896b7,0xb6afd0e3,0xb91efb71,0x3ab7daca, -0x3b66b755,0x3c12c5d7,0xb9e03e8e,0x3a66df01,0x3aac3375,0x3a3c11d4,0x38fe6a3d,0xb9af337e,0xb9d1ff89,0xb83c8654,0x37f6f803,0xb8bbaae5,0xba313313,0xba6332ec,0xba9443f5,0xbab7b58f,0xba64c05d,0xba183ee4,0xb99667ea,0xb9ab5450,0xb961b7be,0xba06d200,0xb90a3e84,0x3a1c70f8,0x39699d94, -0x398550e2,0x38289458,0xb947ae08,0x38841ffa,0x38918b5b,0x38b9928a,0x3843502e,0x3911a8c7,0xb804d6eb,0xb9dcc448,0xba0d7e94,0xba856f9b,0xb9bb51be,0xbaf7273d,0xbaac9336,0xb932d37b,0xb9fadafd,0xb998b8f3,0xb9f382ab,0xb99444fd,0xb9a1fb40,0xb8e83bc5,0x398ffa08,0x3a3cd53f,0x3aaa408d, -0x3ad1811c,0x3ad604b5,0x3aabb899,0x3a6834ad,0x3a2277ba,0x39d82a0a,0x39a987b6,0x38b0d559,0xb958c3fa,0x3924f686,0x3a5ef5c7,0x399e8d53,0x39b61e0d,0x38238fcb,0xb918af4d,0xb994cb71,0xb8bbfe29,0xb99b2d0b,0xba063198,0xba6b5949,0xba833f80,0xba8dfc5d,0xbac41d3d,0xbab6f5b1,0xbb034efa, -0xbad55a27,0xbac0b538,0xbab4a6f6,0xbab278ab,0xba19dbff,0x3784ea0b,0x3a11aeab,0x3a899b6f,0x3ab1854d,0x3ae122c1,0x3ad1c1e9,0x3aed66ed,0x3afc49a3,0x3ae62b80,0x3adcd17d,0x3abc19e1,0x3aa18c5a,0x3abd622f,0x3a3141fa,0x3a514a3f,0x3a86bedb,0x3aaa5c26,0x3a9f89cd,0x3a9a8939,0x3a912e49, -0x3a77853a,0x3a72e349,0x3984c0b1,0x39b7fc44,0xb901cd91,0xb98f60e2,0xba20f084,0xbab2cebe,0xbacc973b,0xbac3bb2c,0x3a797df7,0x3ab701eb,0x3abb9331,0x3af098fe,0x3b0bbc94,0x3b002691,0x3affbcb7,0x3afcf32f,0x3ae6ac57,0x3ad58d13,0x3ac93476,0x3ace92fa,0x3abcbdb9,0x3aae33b6,0x3aa5d932, -0x3aa4c8a4,0x3abb28f4,0x3ab39a8d,0x3aafcb6a,0x3accd56d,0x3a811ad4,0x3abcfe8a,0x3ac2ccf8,0x3aef8fc2,0x3af26087,0x3b0231b0,0x3af3a67f,0x3ae20063,0x3abc6dad,0x3aca91af,0x3ad26da3,0x3a908d59,0x3aae9003,0x3ac8ab06,0x3aabdc0c,0x3ad19663,0x39bac76e,0x3a7524de,0x3a6e5408,0x3a6f983b, -0x3a81e538,0x3a8e84b5,0x3aa57e47,0x3abb8707,0x3ac53a58,0x3ace18ff,0x3ad08e86,0x3acf68c0,0x3ad1b130,0x3ad5e28d,0x3ad65747,0x3ad4efc7,0x3ad4e225,0x3ad05b88,0x3ac853b2,0x3ada304b,0x3a888be6,0x39f31d53,0x38d57e5f,0x3a8e3847,0x3a03b0c8,0x39344a1e,0x38c6333b,0x38cca0c4,0x3916bf9d, -0xb806b0eb,0xb8c79792,0xb8276631,0x3956d292,0x3a23ca29,0xb9af75ff,0xb9679a25,0x3b0fb288,0xba02a261,0x39522df6,0xba667040,0xb9da81bc,0xb9cbc78f,0xb9ed2dcf,0xb9a62f20,0xb9b9b677,0xba0185e7,0xba0687b7,0xb9f44157,0xb971f3bd,0xb9f29387,0xba1a7167,0xba294459,0xba2d4564,0xba1dbe07, -0xb9c9abcd,0xb9e85983,0xb9d31c2b,0xba277c1a,0x3a04db70,0x3a7102f9,0x3a4d9701,0x38ea9e35,0x3a3a6800,0x3a468b02,0x3a21dc6d,0x3a02aee0,0x39e96f38,0x3a521085,0x3a69a0d3,0x3a47094c,0x3a8cca2f,0x395893e4,0x3a21a2e1,0x3a9a46a6,0x3ad9e4c3,0x38cb80ea,0xb9c477c9,0xb91ae1a2,0xb93aaf12, -0x3a20e2d0,0x39dd080d,0xb9b43e98,0xba2c5648,0xba3ac4e2,0xb7e11cdc,0xb9af286a,0xb9e145c9,0xba07da5b,0xba3af754,0xba425cdd,0xb91dee70,0xb99167a8,0xb9e4597a,0xba5f9664,0x3a293215,0x382df906,0x39976f47,0x3843e17a,0xba121cb9,0x3611f942,0xb9b14c9a,0xb7fa5e9e,0x36f9cc9c,0x39de9681, -0xb9b2ca83,0xb981b4c1,0x39c0927d,0x39891e34,0x38e765c7,0x3849d1b3,0x3a9dce0d,0xb9aa7ac7,0xb9915996,0x38dcaf82,0xb9400be8,0x3a684d80,0x3a8a97d1,0xb90b6201,0xba17d61d,0xba1a243a,0x3a322504,0xb9af1db9,0xba5216ce,0xba8de61b,0xbabf61f6,0xba815aa6,0x38d156ba,0xb8489311,0xba00137a, -0xb8bdaef7,0x3a830319,0xb8e52596,0x3a0ee21d,0xba3a6889,0xba878812,0x3872c0a9,0xba9ae396,0xbac51f18,0xba593f0f,0xba2dd789,0x3502921c,0xba34e661,0x38106701,0x393faa28,0xb7d294e5,0xb987c945,0x3aaddae2,0x3a862866,0xb9c38ced,0x3a37ae4a,0x398dbdd0,0x3b27e5ed,0x3b2c3a37,0x3a31566b, -0xba4ad7cb,0xba829835,0x3a7d620d,0x3889f95e,0xb912144c,0xb9b4f233,0xba9e3d31,0xba786499,0x3a36418c,0x399a5ab4,0xb9c182a0,0xb9b78cd5,0xb7f9c61c,0xba9af7d2,0x38a42afe,0xbb101344,0xbaa6bc00,0xba1e0e2b,0xb9f71733,0xb91fc687,0xb9aa0c5f,0xb98a2d3f,0xb9802064,0xba893b9a,0x397b614d, -0x38be4edf,0xba85fc6d,0xba2bf961,0x39268bf7,0x39f5e19b,0xba2dd9f5,0x3980bc19,0xba42ee2d,0x3b11be39,0x3b0eaa16,0x3a6888c7,0xb9e84543,0xb9d8fa83,0x3aca27b8,0xb638eaa8,0xbad99683,0xbb279406,0xbb3840ec,0xbad2b245,0x3a41b9d1,0x3a1f2af9,0x38a5d30b,0xb9b6bdcf,0x3a7f1146,0xba5b48f4, -0xb907d6a7,0xba84cf5d,0xb91df0a2,0x38a95c9d,0x39000c62,0x3925b69f,0x391137b4,0x38b20dc1,0x3924b8e0,0xb8b55400,0xb9435b13,0x3935f439,0xba93bee1,0x397f080b,0x3b9233b2,0x3b9a6dc6,0x3baaf57d,0x3be31289,0x3bfa637c,0x3b023b84,0x3a23c5d4,0x3ac3b149,0xbab242c5,0xbb30f522,0xbb4e397e, -0x38b3e214,0x3b8d5c8c,0x3c0dc557,0x3ba9e2bc,0x3aa83ef3,0xbb224f9b,0xbb9648f4,0xbb9e99d5,0xbb3fe797,0xbb300607,0xbae52d2b,0x395ad3e1,0x3a949c30,0x39ab9a8a,0xb8d83e26,0xb7e57734,0xb90148ed,0xb87a12ce,0xb8b98df4,0x36b495f7,0x3851cd9f,0x398dae36,0x3ab6a518,0x3b1e9004,0x3b477182, -0x3a101dde,0x3993e97a,0xba9881cd,0xbae222a4,0xbb154199,0xbba98d2a,0xbbc0b7b7,0xb9fc9202,0x37443f02,0x3b121f63,0x3ba0cc3e,0xba743ff8,0xbb933264,0xbbb28dbd,0xbb58988d,0xba52dfc9,0x3aa638c5,0x3ad3b9e4,0x392caacb,0xba648f3c,0xba140895,0xba068f75,0x39a351ce,0xb99362f2,0xb92dcfee, -0xb6ace7d9,0x385a7a64,0x38398778,0x3827536e,0x37cf1be9,0xb70bd6ee,0xb70129db,0xb8e36f07,0x393a70ba,0x3a97b0db,0x3984ebc5,0x3b0887ab,0x3b9f9fb7,0x3b12f8b6,0x3a6dee7f,0x3a87f9f9,0x3b269ae4,0x3b70225c,0x3b6ef2d4,0x38286eb7,0xbb1fe21a,0xbb006849,0xba68ef52,0x3a8ff642,0x3b0c0a79, -0x3983968f,0xba2b09af,0x392235d0,0xb991f628,0xb9bfa42b,0x38142063,0x3a0c12e9,0x383aa173,0x39cb3ba0,0xb745e9e2,0x39380b5a,0xb86b309d,0x368a4ca1,0xb855026d,0xb7cfaa10,0xb723ced3,0xb6fbf116,0x3867772b,0x380a8311,0xb7dd59fb,0xba824af3,0x39b94070,0x3b407752,0x3b1201c0,0xbaa6e94c, -0xbae8eafc,0xbb2ca3f8,0x3ae8780f,0x3b63b22a,0x3b82ab97,0x3b2510a4,0x379dec2f,0xbb8f0e89,0x39821c80,0x3b0ecbee,0x3b79a080,0x35bbb020,0xbaa5ed0e,0xba8b30f3,0xba4774d3,0xb98354ca,0x3acfd2f1,0x3ae2e0a6,0x3a45858a,0xb85d7cb9,0x394d225c,0xb8c14460,0x37d67599,0xb64a619d,0x361401ae, -0x37fa5a64,0xb7fe19db,0x379e532e,0xb8b58091,0x38eff6c8,0x3932efef,0xbb1f7a3a,0xba86aed7,0xbb74ab22,0xbc002ad1,0xbbd30ec7,0xbba0e210,0xbbc98ef7,0xbbdfb84c,0xbbaa22a3,0x3ad80995,0x3b99c696,0x3ba9a60c,0xb98f2132,0xba436e72,0xbb3278fa,0xbb5fdc1f,0xbb1fbe80,0xbac910ae,0xba6a65d2, -0xb8526a82,0x39dc8694,0x3aa98056,0x3aaf81fe,0x3a15bab7,0xb8b66091,0xb8a50480,0x37b0a609,0x377bd1aa,0xb7a82ad9,0x354fc07c,0xb66c5344,0x378129b8,0x381a598b,0x3764dc79,0x38d5bfbb,0xba219655,0xbbb1d0ac,0xbb87e092,0x3c362764,0x3c33f882,0x3adafc01,0xba483ea0,0xb994ac4e,0xb99d1406, -0xba2cd04c,0xbb1e35e3,0xbb480fdd,0xbb6c4861,0xbaf224ee,0xbae0dca3,0xb8b2ad54,0x3aa354ea,0x3a8b8102,0x3a949d0a,0x3a95ba73,0x3b023fc5,0x3b1af8b8,0x3b2be9fe,0x3b6e6721,0x3b44cd96,0x3a8837fa,0x39cb4eec,0xb82afdf7,0x37b59dac,0x37e0e158,0xb73cbbab,0xb7c9278d,0x3735bd11,0xb8c875bd, -0x38da54d3,0xb9662b3f,0x3ac0f207,0x3b80a29f,0x3bf814a7,0x3afaeba4,0x3ab5f1af,0x3a912b94,0x3a618b62,0xb9d83597,0xba9df251,0xbae54c69,0xbad819f2,0xba898eb8,0xba62182a,0xbaac5e70,0xbad85675,0xbae09851,0xbafc1bba,0xbaaf4a5b,0xba90459c,0xba898c5d,0xba7d366d,0xba37155e,0xb8f36683, -0x38116bb3,0x39a397cc,0x3a65f8ce,0x398aafb1,0x3730f9ec,0x38ab74f0,0xb8983ef7,0x3880dd93,0x37806535,0x38fb6feb,0x390f74bd,0x39411654,0x390572ee,0xb79dceb8,0xb8d040de,0x3a28638d,0xb9d466f1,0xba135aeb,0xba4ad031,0xba53dc80,0xba389e34,0xba799148,0xba8e5016,0xbad03bda,0xbaa6d0f1, -0xba6525d0,0xb97e57a5,0x39c31a9c,0x3a41898a,0x3a69a1b6,0x3a2e0d98,0x39c7afa9,0x38a84e78,0x370892f3,0xb8a2a873,0xb7c15a83,0x3a0bb71c,0x3a3046f2,0x3a515376,0x3a02f2e4,0x3949c308,0xb924367e,0x371f389c,0xb8ba18c4,0xb8b10761,0xb904ad80,0xb99faa42,0xba1cf6e9,0xba54c893,0xba67de86, -0xba0b24b7,0xba284591,0xbaa360d3,0xbb0e49e2,0xbb0ec09a,0xbae45f59,0xbaf7553d,0xbaaaaba2,0xba5ae64a,0xb9aee25c,0x39a4cab0,0x3a2d9d49,0x3a861de3,0x3a7a7110,0x3aa953ba,0x3ad9d1bf,0x3ab72822,0x3aae6f9e,0x3a7eed8a,0x3a82e2ad,0x3a40ae0e,0x3a57fb41,0x3a8e186c,0x3a913f12,0x3a9af2d1, -0x3a8ed007,0x3a8835f3,0x3a8874cd,0x3a33f875,0x393261f3,0x3a1c63f1,0xb95b42e9,0xb7c7b5ed,0xb9fff07d,0xba0b6a24,0xba595da0,0xbaab4369,0xbad7d042,0x3ad0ebbc,0x3a2b9817,0x3a6278f0,0x3a8b0c5b,0x3ab0a1ab,0x3a938b0f,0x3a8f8ba4,0x3a6c6832,0x3a4979d3,0x3a4e9745,0x3a651e5b,0x3a8f88d4, -0x3a96307d,0x3aa908c6,0x3a9ec0be,0x3a9ea5c2,0x3aaf7d4c,0x3aaa3856,0x3aa321bf,0x3aacad6c,0x3add0b7f,0x3af1ee81,0x3b0b2612,0x3b1313f9,0x3b1b4b79,0x3b1ab744,0x3b20924b,0x3b175d9b,0x3b0a62b0,0x3b03691e,0x3a9edf4a,0x3ae1ed17,0x3ab6626a,0x3ac0fb0f,0x3af3fc38,0x3a9a5446,0x3a7a69ee, -0x39a778b0,0x39f39554,0x39f6b55a,0x3a0d88b9,0x3a1afbaa,0x3a4684fc,0x3a71cd7a,0x3a8ce3c4,0x3a9653cb,0x3a98e07b,0x3a99c57e,0x3a9d3f81,0x3aa4568d,0x3aa0572b,0x3a9e530e,0x3a9d13c9,0x3a973100,0x3a93b102,0x3a866b6e,0x3ac1bdbb,0x3ae96deb,0x3acebae6,0x3ac77db4,0x3af180ca,0x3ae27cfa, -0x3ae70182,0x3accf7ae,0x3ac5c91b,0x3ad130b4,0x3aca8052,0x3ab30b80,0x3aabc352,0x3a7cdbd9,0x3a8615bf,0x3a9ebd13,0x3aff3167,0xba66863c,0xba8dcf62,0xb8c3b3aa,0xb9cc7bb3,0xb9e5d797,0xba0d415b,0xb9fbeabe,0xba043b3d,0xba0db544,0xba151cc5,0xba05dec7,0xb988f951,0xb9e7d681,0xba11ce02, -0xba24f079,0xba2b74c9,0xba237313,0xb9e34721,0xb9fa2b52,0xba000350,0xb9e95c2b,0xba9cd992,0xba9a11d5,0xb8ba7d88,0xbaa819aa,0xbabd5f7b,0xb9a636f8,0xba117127,0xba14f0b2,0xba0c1344,0xba20122b,0xba1cd5a3,0xba427806,0xbaa48a60,0xba8f4ade,0xb9deb202,0xba9fc704,0xba9c0f05,0xba0344ff, -0xb979dcc7,0xb9b8d0fd,0xba08e886,0xb8caf435,0xb996d633,0xba15ace5,0xba6fa3e7,0xba702199,0xb99aabc0,0xba01f562,0xba1f6d8d,0xba636e79,0xba8dfaf9,0xba8e332e,0xb9d58b32,0xba0f9261,0xba02672b,0xba14c9dc,0xba96884e,0xba832693,0xba15f7a6,0xbae1b79f,0xbac81260,0xba230f9f,0xbabac825, -0xbac64579,0xba9718aa,0xba6c7b98,0xb9727a20,0xba7abefc,0xba52cdd0,0xba6f931b,0xbaa7757b,0xba803293,0xbab8917c,0x3873c5f1,0x3840c662,0xb985ba9d,0xba29d567,0xb99966cc,0xb9b6187a,0xba17b775,0xba99f6fe,0xba807dd1,0x395cc4a4,0xb9d75bae,0xba6d2c06,0xbabb7f3c,0xbaee2fb9,0xbacc9418, -0xb9cc31c5,0xba3668d8,0xb9c9d564,0xba8636b7,0xbabbc58d,0xba8be42e,0xba0f0095,0xbafbd8ef,0xbad3cd6c,0xba4e4a0f,0xbacadf94,0xbaca94c3,0xbae40252,0xba42cff7,0xba6e0e07,0xba642398,0xba1c013e,0xba42408e,0xbaaef8d9,0xba66af1c,0xbaa92541,0x398cf276,0x39ccadcc,0x39750dca,0xb994813c, -0x3a3a2dac,0x3a034426,0x3863d8df,0xbacc3ae4,0xbac8e2fd,0x3961faf7,0xb9a9679b,0xba0ffe1c,0xbabc3fae,0xbb191b6f,0xbb07a8e8,0xb8fbc673,0xb9b2f69c,0xb9a24563,0xba642b3f,0xba923a2f,0xba878611,0xb9da84af,0xbb014bb7,0xbad08b40,0xb9647e0e,0xba2fcf4f,0xb7dfffa8,0xb928e444,0x37ec2cd5, -0xb96e2822,0xba2cdae6,0xb9d7d55d,0xb98876b8,0xbace8ff4,0xba916de7,0xba5ed760,0xb944d830,0x3a38b8c9,0xb9efe24b,0xba93315f,0xb980965b,0xba1c443b,0xb9529ea6,0xbadd4060,0xba9ef4fb,0x3a7e38a7,0x3794f4d1,0xbacca800,0xbb4b690d,0xbb75bcef,0xbb38bb98,0xb9e09329,0xba1d8c9f,0xb982bde4, -0xba4ec434,0xbac896ec,0xba692e46,0xba1ef5b5,0xba82d5e7,0x3911761d,0x3887f259,0x398a1eff,0x38d88502,0x388d68dc,0xb63cb054,0x3935e724,0x38a25531,0xb87eecde,0xb888d33a,0xba83cce5,0xba94628e,0x3acd2899,0x3acf9e15,0x3bb4716f,0x3bd3c335,0x3bf8ae0c,0x3aff80cf,0x39ae84e3,0x3a610d5f, -0xb9d48558,0xba89484d,0xba9d121b,0x3b0b61b7,0x3bcf9c8d,0x3c2af0ba,0x3be6ce79,0x3b39c9f0,0x39ee1f7e,0xbb41df15,0xbb83c956,0xbb5c8f69,0xbb674cee,0xba852ac9,0x39386efa,0x3a631eff,0xb841d41f,0xb86d53d6,0xb8bc244a,0xb8815a38,0xb6f88a67,0xb80fb7ba,0xb8d1ff01,0xb89adc9d,0xb86d3fe6, -0x39d4635b,0x3a777cb9,0x3a768e46,0xba4ec0ad,0x3a7065a9,0x3aa8d504,0xba784e03,0xbacdb19c,0xbbbe183b,0xbbe31fe0,0xbad5658f,0xba809d7a,0x3ae8ab98,0x3bace672,0xba3ca552,0xbb906091,0xbbc6ef49,0xbb7e24ca,0xbab8620c,0xb87c7bac,0x3882fde1,0xb93abf95,0xbaf6cb73,0xbaa5c421,0xba394590, -0xb84666f5,0xb9bb065a,0xb8bb8ec2,0x38802dd6,0x387867a0,0x37c66cf9,0x36848945,0x3735127d,0x37e8f3d4,0x37f2b7dc,0xb8fd76d3,0x38d00da7,0x39ed2e0a,0xba03b4e3,0x3ad4b4e2,0x3bb63666,0x3b6c590f,0x3a85d253,0xba216192,0x38e6e20a,0x3aa8fc73,0x3abf6a4e,0x3a5937b4,0xba2ad09c,0xbac04374, -0xb9c00e43,0x3a85a46c,0x3b10b388,0x3a304ac6,0xba0d45e8,0x396a0ab4,0xb99b7908,0x3998e186,0xb90b6a5a,0xb9329020,0x3818cc42,0xb91c79df,0x35c5f4e8,0x37eb40d4,0xb7a08397,0xb816300f,0x369acf11,0xb729ed38,0x372c5e9f,0xb8252eef,0x38585342,0xb907d5a2,0x3869fecb,0xbaa6a9e1,0x39352223, -0x3b2cf7a1,0x3a19ab36,0xba96fe7c,0xbb28562d,0xbbd1eedf,0xba7e0a2e,0x3a8afcf7,0x3b0be324,0x3b4bdc58,0x3a5d1194,0xbba13a95,0xba166983,0x3a7a4699,0x3b674328,0xb8cda4c9,0xba8e15d0,0xba5de2f2,0xba3180a8,0x39ed484a,0x3aab7121,0x3a31d5c8,0x39f55545,0xb94cd72c,0x37c2bd6a,0xb8b348d5, -0x37d028da,0x3689c93d,0x36a28d18,0xb79c915c,0x37801876,0xb7f10603,0x377eeb1f,0xb92221e6,0x3a00df59,0xbb15eefb,0xb96c81fd,0xbb8627d6,0xbc31e2c8,0xbc04e3e4,0xbbe16ef3,0xbc0aab90,0xbc19fbce,0xbbfdb72b,0x394819ed,0x3b5588cb,0x3b8d7036,0xba85ed61,0xbacbc55d,0xbb65ca51,0xbb86e41f, -0xbb56c795,0xbb189e1d,0xbabb4036,0xba0a5b0b,0x3950cfe4,0x3a27e2c6,0x3a679143,0x39626b98,0xb9f48e1b,0xb8bd2ccf,0x3756f926,0xb71ec6c1,0xb4fa5dcb,0x37974224,0xb6facc6a,0x37c810d2,0xb6e6df1e,0x38596475,0x36a7a7a9,0xb9b9bb42,0xbb8ead43,0xbb44fc62,0x3c00164e,0x3c06a55e,0xba61c100, -0xbb9164a9,0xbb392cbd,0xbb4e835f,0xbb2b3c79,0xbb4dd2d8,0xbb7c09bb,0xbb9d44d9,0xbb821f1f,0xbb57476c,0xba93af3c,0x391e00e7,0x3a2c8abc,0x3a81de11,0x3ac175a3,0x3b024a66,0x3b25949b,0x3b327315,0x3b1f4a6a,0x3b0752d7,0x3a693b90,0x391ec82f,0xb8892507,0xb719bc6d,0xb84b2f87,0xb73eccd4, -0xb8404a01,0xb6fc507f,0xb91215a2,0x35bbfce3,0xb9c7ac51,0x3a99a95c,0x3b30beec,0x3bd9850a,0x3a7f4a67,0x391b40e6,0x39b57157,0x399b436c,0xb9e2d5ca,0xba718839,0xbab20437,0xbadc7006,0xba902e48,0xba5e4e15,0xba96ccd8,0xbaecf0fc,0xbb17cf98,0xbb3c2f4f,0xbb130d95,0xbadffa37,0xba8d732f, -0xba41e4bf,0xb9a92683,0xb89c4b4c,0x398c5476,0x3a182873,0x395f8928,0x38bd4f84,0xb8b51667,0xb741395d,0x388753e3,0x381b447c,0x36248a01,0x38362270,0x383f9272,0x38e4fb5d,0xb7c3ce9c,0xb76a3bac,0xb9df817c,0xb77b96d4,0xbab3c463,0xba5dc653,0xb995b73c,0xba2550b4,0xb93e8763,0xba366301, -0xba6e20c5,0xbad6c5a6,0xbab19074,0xba9136a2,0xba23aa29,0x37ccb00d,0x39f499bb,0x3a2c9ee8,0x39eecbda,0x39b1991e,0x398f0c98,0x39518244,0x3998bf68,0x3939d69d,0x371a33fb,0x39a9d492,0x3a009040,0x390863b4,0x38174ea1,0xb901c0e0,0xb9324b39,0xb90c5c60,0xb7b1d8de,0xb92e933d,0xb990a51f, -0xba21884b,0xba7178e0,0xba91503e,0xbab0b095,0xba94cc8a,0xbb1ba2a1,0xbb1f7aed,0xbb0624d2,0xbaf9e51c,0xbafe2213,0xbac7d7eb,0xba8a93a8,0xba2264a7,0xb85cd1e8,0x39a3c0ee,0x3a3126be,0x3a702bcf,0x3ab950c9,0x3af1837b,0x3adce6f8,0x3ad22ff7,0x3aac23ed,0x3a99239b,0x3a9f8db7,0x3a3e3300, -0x3a1d04a5,0x3a6edf6b,0x3a56c352,0x3a3bcc45,0x3a0c0942,0x39a4b86b,0x3993045e,0xb92032f7,0xb99ea1b2,0xb9de432a,0xba1f91d7,0xba3a2826,0xba8e097b,0xbac7278e,0xbb03da9f,0xbb095dd1,0x3a52738c,0x3a01b2e8,0x3a03a539,0x3a53ab5d,0x3a9ac7fa,0x3a868baf,0x3a8c6771,0x3a71d0f4,0x3a8ee117, -0x3aa713b1,0x3ac1f636,0x3adf0a05,0x3ae1a0d4,0x3af0abb1,0x3addee16,0x3adb1b24,0x3af7ed49,0x3af03345,0x3af4c748,0x3af6b4cf,0x3abdec9c,0x3ad358b3,0x3acfb027,0x3adc3cd1,0x3add6214,0x3ad9919c,0x3accf9ca,0x3aa65fb4,0x3aa01e15,0x3a8ca428,0x3a74c7d7,0x3a57b859,0x3a14d9ca,0x3a6e03a9, -0x3a8bc7ba,0x3a095ff1,0x38f44967,0x39fa0b30,0x3a1835f5,0x3a2034e5,0x3a317df7,0x3a4089d0,0x3a6ea4a5,0x3a8b84e8,0x3a9d6ecd,0x3aa6f96b,0x3aadfc42,0x3ab5b00d,0x3ac26424,0x3ad292fa,0x3acefa0d,0x3acc4b1f,0x3ac7c496,0x3abdc32d,0x3ab6e42e,0x3ac2ebd0,0x3a7253dd,0x3a42f47f,0x3a8afc90, -0x3a616fe0,0x3a349a4b,0x3a976ab5,0x3a98e7c6,0x3a8ab6ef,0x3a8615ed,0x3a795661,0x3a59266b,0x3a43cf0d,0x39c3f34e,0x39de8247,0x3a062d50,0x38cf685d,0x3b065c85,0x3957a10d,0x3a4377f8,0x393506fd,0x392c7123,0x394647d9,0x384f2be3,0x399f4665,0x39aaa3b0,0x398612ed,0x393e337b,0x394ef33f, -0x39aef771,0x395dd377,0x38bbdc43,0xb65e3798,0xb88a878c,0xb615400d,0x39623c2f,0x394747f5,0x39191abe,0x38bfe026,0x39f3c558,0x3972f40c,0xba6177c5,0x39ce36a5,0x38a6c1e4,0xba65911c,0xba8737a2,0xba862a9f,0xba57a580,0xba51025f,0xba30d141,0xba16a458,0x39976fa9,0x3a194f04,0xba558017, -0x394b3cb3,0xb9765196,0x3a37e322,0x39bf7b00,0x39f70dec,0x39140b9f,0x3aafb41a,0x3aba69ea,0x3a8271f9,0x3a0ce4f4,0x39cf8ea7,0x3a2ed9d9,0x3a23fdce,0x3a160719,0x39c157b3,0xb7acf2db,0xb8a63e23,0x3a110503,0x39db98fd,0x3997beed,0xb66db335,0xb90a1a8d,0xb9185056,0xb958bfb5,0xb9aa929a, -0xb920ff6d,0xb993c866,0xba051534,0xba2e01b1,0xb9040b19,0x3842399b,0x39a0dc43,0xb9632daa,0xb4edf32a,0x37557458,0xb98bcd8b,0xb91c2fc9,0x3a3d4606,0x3a70e1b6,0x39d601fc,0x3a3386ea,0xb89ac65a,0x3ad844d2,0x3b084cfd,0x3ac7c98d,0x3a4ff056,0x3a28f509,0x3aa4f94a,0x3a7fb99c,0x3a018afb, -0xb9210a11,0xba4228c7,0xb9d5576e,0x3a611ad4,0x3a172de3,0x39eec578,0xb80cf8ee,0x35e3934a,0xb9b26a3a,0x3a1df501,0xba8156e1,0xba956980,0x39020dd1,0xba9a7f43,0xba19f840,0xba04a4ee,0xb914f09f,0xb8b53994,0xb8cb6afa,0x38ec2962,0x38204455,0xb9bab40d,0x39e4abcc,0x3a04afcb,0x3a90f0fa, -0x3a3b2cb5,0x3a8c4fa8,0x371b7c58,0x3b4d5bba,0x3b8446b8,0x3b4bfe74,0x3ab8dc45,0x3a5f5452,0x3abed903,0x3ad9c7b3,0x3abd8304,0x3a707472,0xba009f1a,0xb9ec8012,0x3ab80e9f,0x3a834a2f,0x3a02c061,0xb958faab,0xb9a061ee,0xba41de73,0xb9020d5a,0xbacef8b6,0xba830ba0,0x386b5fd1,0xb970e5d4, -0x3895b867,0xb7b699eb,0x38aa7a6f,0xb8da3932,0xb925354f,0xb8758d14,0xb8e4c45a,0xba2dc6b8,0xb9df6c29,0x3a603938,0x3a85f4a0,0x39ce22a2,0x3a124eaf,0xba86b7d4,0x3b32dff0,0x3b5324b1,0x3b51b492,0x3ad09a1a,0x3a9b30e3,0x3b08e53b,0x3af5e5a4,0x39d81d04,0xbab63718,0xbb0f7a99,0xba99213b, -0x3abfccc1,0x3aa3dfab,0x3a51a7eb,0xb9ac4a42,0xb9e4454b,0xba29f6d2,0xb908e6c4,0xba049ce4,0x3999aa56,0x386b9ff0,0x38d41d0f,0x380f908a,0x380e84b0,0xb79fdd7e,0x38c5b032,0x37e6bae5,0x387b4e6e,0x38d25e5a,0xba12e1c1,0xb7683ea6,0x3b47fa65,0x3b925290,0x3bd89a2e,0x3c05fe2c,0x3c1b7b25, -0x3b9d4832,0x3b82fa98,0x3b96c5bd,0x3ad9992b,0xb885eddb,0xb9f24175,0x3ad6cfdb,0x3bafa990,0x3c13d4db,0x3bef4da0,0x3b6c0085,0x38e79b8b,0xbb0d1860,0xbb2683b9,0xbab70dce,0xbafe7645,0xb9e34e08,0x3a5617ad,0x3a0a4460,0xb7a16b4f,0xb869d0e9,0xb80eab16,0xb811c309,0xb7a20cfb,0x37c71071, -0xb7c94a3c,0x3882b23b,0xb8426000,0x3a01f114,0x3a387b0a,0x3b128461,0x3a70128c,0x3ab50f29,0x3a762260,0x3931fcab,0xba2b011d,0xbb72791f,0xbbafe3c1,0xbab98b9f,0xb99ca775,0x3b1b4b61,0x3bb1fe53,0x39553f84,0xbb5e4a77,0xbbb2d4d3,0xbb49ed8d,0xb8e04457,0x3b2d0ee4,0x3b128730,0x3a894d96, -0xba812eb2,0xba719000,0xb9431c91,0x38e17ec6,0xb9019b2b,0x3805ed21,0x38159e8e,0x38191c25,0x37b53c63,0x37030b0d,0x374ce4f7,0xb72a1b77,0x3863b7ea,0xb85e0689,0x38c837b9,0x3a668df7,0x3a1ac014,0x3b52335c,0x3bdd0e00,0x3b8df6fc,0x3b1bfc72,0x3a9aca31,0x3b91f1c2,0x3bcc8980,0x3bc70ca3, -0x3b49e48b,0xb8a44dcb,0xbabeefb5,0xb7256b7e,0x3b0f1351,0x3b89c70a,0x3b24bc96,0x3a85a1a9,0x3a9cc2ea,0x3a16a2f7,0x3a318f1f,0x3a3f7279,0x3a40265b,0x3956170d,0x39677b6e,0x38ac5e28,0x38ad4d5a,0xb836b80c,0x36cf2dab,0xb78bc604,0xb6f7665f,0x37442280,0xb7194bef,0x386d8eef,0xb82d7129, -0x392989cb,0xba3455ce,0x39f6774f,0x3b5544ec,0xb9608c4f,0xb89f4e1d,0x38ad96f7,0xba5ea72e,0x3b96c2f0,0x3bda01be,0x3bac9cc9,0x3bc6d757,0x3b42e92e,0xbb3c0f23,0x3a979488,0x3b47b8ed,0x3bc788d0,0x3b0af21d,0x3a022eb3,0xb9a52e3f,0xb8c834be,0x39d5f68e,0x3ac10077,0x3aaf1217,0x39c06045, -0x3897d93e,0x380f13bb,0xb7612a9d,0x379f408d,0xb60d0aa9,0x36a3f777,0x35b7d6b1,0x37691a3f,0xb823c731,0x38d34ddc,0xb97945af,0x3a17e090,0xbac5d94e,0x39416be2,0xbb7ed362,0xbc5562de,0xbba455dd,0xbaaee60e,0xbaa29d6e,0xbb58f5eb,0xbb836dfc,0xba8d93e0,0x3b973092,0x3bc734e9,0x3ab3cf6b, -0x39922bdb,0xbb1665f7,0xbb668ce8,0xbb0feee5,0xba8b9caf,0xb94f6d54,0x39841866,0x3986b3dd,0x3a20dd96,0x3a33427e,0x389cc06a,0xb990b488,0x38e7784a,0x37d5248d,0x37e85942,0x36f29eb5,0x37a26e86,0xb6b96ade,0x38024a85,0xb63bb135,0x38a575dd,0x37b5349d,0x38b385d9,0xbb41d8f2,0xbad1b230, -0x3c0caed8,0x3c2c7fff,0x3b48b906,0xb873f5c9,0x39f7857f,0x3a54dc5b,0x3ad66493,0x3a60e750,0xba69c1be,0xbaffe076,0xba0f7d9c,0xba110778,0x3a854d23,0x3b0f62b5,0x3acc8f76,0x3aa9f337,0x3ac31c90,0x3b0c59f8,0x3b31f016,0x3b4e140e,0x3b53b8a1,0x3b172d15,0x3a1bccb4,0x341e9da8,0xb85eec75, -0x36cf4b13,0xb7a9e9d9,0xb6ceb7fc,0xb7a7a6b1,0x38250c19,0xb8870de0,0x38cc775e,0xb98542ba,0x3a3040ae,0x3b350579,0x3bafe094,0x3ab1dd20,0x3b151e56,0x3b20e95a,0x3b2a32f4,0x3acee6a9,0x3a4f1093,0xb913792f,0xb9806733,0xba2bc088,0xba6baac7,0xba9d08a8,0xbac657cb,0xbaca37b6,0xbb078b24, -0xbaa65e0e,0xba3f2fc6,0xb9d9085a,0xb9880cf2,0xb8d3b89c,0xb7d7d67b,0x39dd807b,0x3a3dbc00,0x3a451d3c,0x397cfb6a,0x381723f9,0x38d4ce85,0x38a65d52,0x385cb6e5,0x385bed72,0x386e40ad,0x38bedddc,0x3944d1af,0x39267d15,0x3a0b7c2c,0x3a0a98ba,0x3abc8067,0x388f35c2,0x39e0de4c,0x3a592b11, -0x39c1012a,0x3a05357d,0x39947808,0x396c16fa,0xb935785b,0xba0da409,0xba263208,0xb9b63e23,0x39afddb9,0x3a41e360,0x3a6b0167,0x3a59587b,0x3a217585,0x39fbdb5e,0x3a0e8af1,0x3a205894,0x3a3182a5,0x3a3a8f8c,0x3a1c1207,0x3a27d116,0x39684c48,0x358ea432,0xb9181066,0xb8a6d319,0xb8d01965, -0xb73bd0e4,0xb76b67e3,0xb83b228d,0xb98fd1e7,0xb9ec65eb,0xba37dbd5,0xba2ac2ed,0xb9ee0fd6,0xbae67bdb,0xbaf0fe66,0xbae492b8,0xba9f2160,0xba936898,0xba3185ef,0xb98005c2,0x39a751ff,0x3a6a36d3,0x3aa1b643,0x3abfdf03,0x3aa1c31f,0x3abc0503,0x3adedffc,0x3ac96830,0x3ac66b1d,0x3aa59721, -0x3aad6ca1,0x3aa70fac,0x3aafd2a3,0x3aa63b7f,0x3a8c25ab,0x3a86e626,0x3a40a13e,0x3a0c89ae,0x39d9190c,0x388b08b3,0x3797069b,0xb8ebef07,0xb9b1b97e,0xb9ee4652,0xba1c4d54,0xba1d75c5,0xba9870d8,0xbaa193c5,0xbac5b2b4,0x39f65793,0x39d35074,0x3a39ae9b,0x3a8168e3,0x3ab52825,0x3aba4950, -0x3ad5ebc7,0x3ad75e2a,0x3ab7b13e,0x3ab0ca02,0x3abad5c1,0x3adba9c1,0x3ae7bc89,0x3af9c07e,0x3aed8b26,0x3ae84705,0x3af8f454,0x3aeffa21,0x3adac9b8,0x3af373dd,0x3b00324c,0x3b088b2f,0x3b0cec2b,0x3b0f07b0,0x3b093e55,0x3b0044bc,0x3aff586a,0x3aea2a48,0x3abf4af6,0x3ab5d30b,0x3a76de26, -0x3a5f3abe,0x3a513861,0x3a4d1db2,0x3a333112,0x3a56a8b5,0x3a99517a,0x3a4287a4,0x3a54d3dd,0x3a70066b,0x3a859346,0x3a8defc4,0x3aa10292,0x3abc591b,0x3ad1b204,0x3ade6418,0x3adfefbc,0x3adccd7e,0x3adb973e,0x3ae101ab,0x3adc8d3e,0x3adba3af,0x3ada8dba,0x3ad5ca15,0x3ad287e5,0x3acd998b, -0x3aee4a93,0x3adf6b8f,0x3a8febe1,0x3aec7efb,0x3addd4db,0x3a8cac9f,0x3a892910,0x3a80abd5,0x3a815800,0x3a7df7de,0x3a786b07,0x3a6fdc9c,0x3aa7f43c,0x3aa8824a,0x3a15dab8,0x3a8086ff,0x3b2e848a,0xbadca339,0xbaba6336,0xbaa4ff89,0xba868c56,0xba8833c8,0xba94089b,0xba9283d2,0xba999b32, -0xba9cb6f3,0xbaa4c89a,0xbaa384f2,0xba8fbf8b,0xba93c988,0xbaa1d44d,0xbab1c952,0xbabcdb83,0xbabe33bb,0xbaa3dd7e,0xbaa4c941,0xba97e19d,0xbaaa9067,0xba8a761d,0xb9fa9e0c,0x3a83cd6a,0xbab83d31,0xba50b1c4,0x3a56181e,0x3a14f284,0x3a09c589,0x3a0194ed,0x3a29934b,0x3a24d873,0x39e44213, -0xb9ed3b0d,0xbaaebd2b,0x3a12aa7e,0xb98b7915,0x3a04a3e7,0xba86b5e0,0xba744208,0xba807a06,0xba9b5a99,0xba6faf5b,0xba93c5f9,0xbab043a7,0xbae82964,0xbafe9f71,0xbad2df57,0xbab6eeb4,0xbabc48e3,0xbaf3d035,0xbb13b6c3,0xbb1b8a8b,0xbad24704,0xbac84e30,0xbabcdc76,0xbae84989,0xba290f65, -0xba83f6e6,0xb9b5f891,0xbaa884fb,0xbad4d4e8,0xb9669b9e,0xbab338b5,0xba9c699e,0xba69d283,0xba193a23,0xba4b6734,0xb9e9348b,0xba0836b2,0xba54359e,0xba574e39,0xba5255de,0xba3756c5,0xba9ec2ba,0xba1159d3,0xba350a98,0xba8f41b4,0xba7c10ac,0xba909be8,0xba9fa0ca,0xbb09294e,0xbb087bea, -0xbacbe5dc,0xba9dbdcf,0xbadc399d,0xbb245fd5,0xbb5bfed9,0xbb531837,0xbb09d472,0xbaf4c5f9,0xbadde512,0xbacf473d,0xba1e2ac0,0xba72b153,0xba07f726,0xbabf9a0c,0xbab379d9,0xba10f771,0xbaa81b85,0xbad2e205,0xba548316,0xba2c8e1d,0xb9d6f54f,0xb9e05d18,0xba28290f,0xba448d18,0xba49a9f6, -0xbaad0339,0xb8a38348,0x398a84c8,0xb99977e0,0xb7832b1c,0xba673641,0xb8607a7f,0xb9b0d189,0xba1557c1,0xbb278a60,0xbb3cf394,0xbb14d997,0xbaad4031,0xbaafa158,0xbb29d43b,0xbb8d5fc0,0xbb8b5059,0xbb07f0a5,0xbaefbfd6,0xbadaefb1,0xbafa9dc6,0xbaa747c1,0xbad025f2,0xb9cf720b,0xbaf3f0a9, -0xba5adc64,0xb63d733f,0xb6189ec9,0x39bed2ab,0x38d466b9,0x38d47667,0xb7e31ac4,0xb90b42d7,0xb88d573d,0xb98ee520,0xba988b5a,0xba887e6e,0xba9b1fd7,0xba50bf26,0xb90dd95c,0xb9d65d6f,0xbaa1fec6,0xba4abcf4,0xba9d1f1c,0xba3b9ed5,0xbb2aea51,0xbb3303dd,0xbae044cc,0xba534eb5,0xbb0b4aad, -0xbb8df896,0xbbc5cd48,0xbbb247d2,0xbb47071e,0xbb187ea5,0xbaf01215,0xbaf576d1,0xba04bdb8,0xba7d3b34,0xb9adea1c,0xb9d53bfa,0x398f0bde,0x37666977,0xb8305e2f,0xb904d0a6,0xb8a9040b,0xb80e8347,0xb7d15784,0x386cfda2,0xb86103e5,0xb8ff2eda,0xba4b2334,0xb9c8a81d,0x3b21723d,0x3af62534, -0x3b55a6ab,0x3b9c1812,0x3bd2e9f9,0x3aca0378,0xb894cfae,0xb9825039,0xbae59738,0xbb13432e,0xbb16c958,0xb90fa0db,0x3b860ecf,0x3c0cc51a,0x3bf42b83,0x3b802d3b,0x399e07bb,0xbb3b59a4,0xbb8c1973,0xbb5c364c,0xbb1f11dd,0xba5625a1,0x3a4d066f,0xb82485cf,0xb892bac5,0xb8851016,0x38169e46, -0x384405f5,0x383b0e24,0xb6150f0f,0xb7b63763,0xb82c694b,0xb8545641,0x37f3575b,0x3a6d37ca,0x39d9c54c,0xb94583ca,0xb94125fe,0x3a2cdd1e,0xb92eaea7,0xb9a97ce6,0xbb9ce1bc,0xbbcc50ac,0xbb0cc564,0xbab2c254,0x3a9edc91,0x3b9a25a8,0x39c6d139,0xbb4c13b9,0xbbc9b563,0xbba2de07,0xbb450785, -0xbb19e028,0xbaa033c1,0xbab5b04c,0xbae50a96,0xb99a4356,0xb9a0c3ac,0xb8dbaca7,0xb9212ec6,0x37da4589,0x36da6ef4,0xb7bc0f62,0xb7f9088a,0xb7d377b2,0xb6e7db7f,0xb69823be,0xb73d6dfa,0x379e0a96,0xb8e71735,0x39483b1e,0x39969595,0x3b4f2b7d,0x3bca64ba,0x3b69aa41,0x39dd14b1,0xbb4d288c, -0xba312032,0x3a4d2d95,0x3a24446e,0x3a01517f,0xba8b5d34,0xbb36bfa2,0xbb0b81eb,0xba4c9437,0x3a8cffea,0x3927225b,0xba624019,0x3896f512,0xb9ceaa72,0xb8509265,0xb9e31bbe,0x3739dd58,0x37b329d1,0x38e4a5ff,0xb8c27193,0xb7c5bad6,0xb74b87ba,0xb4204513,0x37b64210,0x35683e54,0x36bee167, -0xb8088753,0x3874274d,0xb93b0726,0x3958ae0e,0xba39fb4e,0x3a3383fa,0x3b53f25b,0xbaf66829,0xbaf29860,0xbb440ae4,0xbc0db7b5,0xbb1abdbb,0xba16a911,0xba458f9a,0x3b317a2d,0x3a619d52,0xbb99c658,0xbb2a93e8,0xba97ee4a,0x3b1fcebf,0xb9dfaa6c,0xba81a8e4,0xba84ff75,0xba3622d6,0xb9a7cedc, -0x3a2b0544,0x396e7d74,0xb898e0ca,0xb8ad19f7,0x376f1212,0xb854719a,0x3770acbf,0xb7aedd15,0x36a9347f,0xb7a4de1c,0x37c457c3,0xb85e0943,0x389bce32,0xb9893365,0x39ed7647,0xba7a2a57,0xb8688609,0xbb8a67a0,0xbc83a697,0xbc09f5bc,0xbbbb8397,0xbc0a3580,0xbc14508a,0xbc1078bc,0xbb82af61, -0x3b1f5a17,0x3ba513e1,0x3a4373ad,0xba039ea8,0xbb5b6e3c,0xbb854ad7,0xbb78e783,0xbb4d1de5,0xbb2f9bd7,0xbae86a23,0xba93d1c5,0xb9c1b40b,0x38a4b4a1,0xb9dbeef3,0xb9a538c4,0x3883f0fc,0xb82fb0c6,0x37069892,0xb713f2a0,0xb6d7d8e0,0xb7759bfe,0xb6ecde24,0xb6f7ff72,0x36400a4d,0x38b3510e, -0xb93ac126,0xbad60505,0xba8c7f6b,0x3bd094ee,0x3be8caee,0xbb70919d,0xbbd37772,0xbbb206f1,0xbba3555c,0xbb706b14,0xbb4691af,0xbb826636,0xbba53f1d,0xbb99240a,0xbb6694d1,0xbadf7b11,0xb9b7e482,0x39d96244,0x3a6eb19a,0x3ad877ee,0x3b1a202d,0x3b28b7cf,0x3b1712ae,0x3b1a3466,0x3acf8b02, -0x39931a88,0xb8900cd4,0xb428d2c1,0xb833229c,0xb72cd8d6,0x37818299,0x35e6230e,0x37faa1e7,0xb89a2aee,0x3787f594,0xb9a531c3,0x39d5067f,0x3b0f7ea4,0x3b563e85,0x3b1c9334,0xb938c457,0xb8bd87ca,0x39c5b3b7,0xba484173,0xbaa8d806,0xbb0c57d3,0xbb36a534,0xbb040a7f,0xbabf32f6,0xbab80e5e, -0xbb12bc1d,0xbb2e8dc3,0xbb587a8d,0xbb264fcc,0xbafd29ed,0xbaabf7f2,0xba62618a,0xb9a8a8a9,0x39c774f6,0x3a126441,0x3a0217a0,0x39bb6e24,0x37c43e75,0xb88186b5,0x385949c6,0xb81343dc,0xb858ac87,0xb8a97595,0xb8688a19,0xb8b348fe,0x38ddcba7,0x38a48f14,0x39a57b8a,0x39c5700d,0x39f748a8, -0xb9802d58,0xb880fc77,0xb9e03545,0xba460260,0xb9ccec59,0xba6d0b83,0xbaa903f2,0xbb18108f,0xbb08a795,0xbb0537da,0xbad2f538,0xba76fd9c,0xb9edc155,0xb93b47e8,0xb92f2fbb,0xb87c5aee,0xb7a4ec51,0x3846a936,0x3983601d,0x39b5f1b6,0x39f94a24,0x3a0b49ad,0x3965bee1,0x38eb4ff2,0xb8ca0b52, -0xb8bb4028,0x36bc7dd7,0x390ec84c,0x389dd34d,0x38eccd06,0x388e8940,0xb94f8683,0xb9caaa13,0xba3e65de,0xba3db234,0xb9fe6457,0xbb077e40,0xbb364c92,0xbb1e25aa,0xbb0bc468,0xbb13522f,0xbb069edf,0xbae0e4bf,0xbaad3fc8,0xba43d80f,0xb9bc7105,0xb801fa01,0x398e788b,0x3a5b6b80,0x3abbf683, -0x3aa50032,0x3a9c2aed,0x3a72f9df,0x3a78d8d4,0x3a3fe370,0x3a5bde4e,0x3a216659,0x3a4145af,0x39dbf41d,0x39901f72,0x38358216,0xb9164e5f,0xb943abb2,0xba3e4815,0xb9c624b9,0xba4f92de,0xba39dbb6,0xba5bcacc,0xba9dfef5,0xbaa635d6,0xbaf171ea,0xbb0d0569,0x3a1c80ca,0xb9d89ec7,0xb9b2b939, -0xb93b7dfc,0x39516a1d,0x384322ad,0x38db8a4e,0xb9163588,0x391cea15,0x3a024bce,0x3a65f1da,0x3aa4d694,0x3abf13dc,0x3ae86437,0x3ad7b1aa,0x3ad5b549,0x3aed7045,0x3ae8e611,0x3aef2d4b,0x3adf8d8e,0x3ae83a05,0x3ad034e4,0x3acb0034,0x3ab737f7,0x3ab9fc17,0x3aa026e8,0x3a9afed4,0x3a53c464, -0x3a66195e,0x3a154a7f,0x391ddc38,0x3a0038cf,0xb8313960,0x398f1930,0x3a34fef1,0xb9e83922,0x38f1e6b9,0xb8e9dace,0x38becccb,0x3913f76b,0x39523f76,0x3967d7de,0x39c6f9ad,0x3a067d38,0x3a368ccd,0x3a496958,0x3a590ed1,0x3a6c7420,0x3a84300c,0x3a97676a,0x3a902e36,0x3a8d8c56,0x3a87ef1b, -0x3a7af316,0x3a75bf32,0x3a6d318c,0x3a618798,0x3a9d1d95,0x3af46a91,0x3a3f86b1,0x3a8d03d5,0x3af8c114,0x3b0139da,0x3aea101f,0x3add9b03,0x3ae3203a,0x3ad19ed3,0x3ab5c0e8,0x3a2fa1df,0x39989152,0x3aa3cf35,0x3a2a0bdf,0x3ac6d0c6,0x394c1b2c,0x39b54d43,0x3a397e38,0x39a6542a,0x39a769f4, -0x390f9f36,0x39c4ee61,0x39de926c,0x39ecf8d4,0x39b1d0bd,0x39acc2ab,0x39c4e9c2,0x39c985bb,0x3995a24d,0x3928d3f9,0x389024de,0x38d71a3c,0x39900984,0x3998a1ab,0x3964e2fd,0x39addfb7,0xb979186a,0xba51e038,0xbade6544,0xb8e6bafa,0xba7cac68,0xbae40eeb,0xbaf8058e,0xbaeb575e,0xbac483c7, -0xbae079c2,0xbad5c7d7,0xbabfb7da,0xba5fe776,0x390fbed7,0xbad5edea,0xba864002,0xbaeb8a19,0x3a2e4340,0x3a2b4104,0x3a184109,0x388a086a,0x3a935ecf,0x3aac0d69,0x3aae5221,0x3a4885e0,0x3a13e5b8,0x3a03df4b,0x3a4c1478,0x3a4c3723,0x39da2e1a,0xb862fb40,0xb91e61d9,0x39eb2c1f,0x39caf776, -0x39c412b1,0x3982a455,0xba93777d,0xba2f79a5,0xba4a2f28,0xba8ab648,0xb9bf3927,0xba283462,0xba84acf8,0xbab8efa4,0xba3067e7,0xba1c5c63,0x39ba4211,0xb9c15aee,0xba1ab35f,0xba0d4edd,0xba65c1a5,0xba1f86fc,0xb9dcce13,0x3aaa7e5e,0x3a4b7e38,0x3a426f1f,0xb97345a7,0x3aa4c893,0x3ad84d93, -0x3afff49f,0x3a7b23ed,0x3a4a45b2,0x3a48a8ce,0x3aab64ea,0x3a689204,0xb885e845,0xba486350,0xba2ebb62,0x39fc9635,0x3994305b,0x3a1e5384,0xba0247d0,0xbaa5af1a,0xba4676ee,0x38ef14de,0xbab75f1e,0xbaacf19e,0xb92f9bad,0xba84b5f5,0xb8acb481,0xb9e9b20c,0x38c4145d,0xb99aeab2,0x38f910da, -0xb8d01212,0xb9cb3cb4,0xba56618c,0x39ccf8c2,0xba093092,0x3a73b776,0x3ab88433,0x3a8cbab0,0xb9af13f0,0x3b13ad14,0x3b583009,0x3b74fd7f,0x3ae69c27,0x3a89ae0d,0x3a0b3100,0x3af4c8eb,0x3ae6f559,0x3a417e8b,0xba6ddd38,0xba8a9bfa,0x3a4649c4,0x3a25aa25,0x3a16e7e0,0xba1b1d82,0xba6f9014, -0xba1a61af,0xba08c7d3,0xba8310b3,0xba01200b,0x39a1a464,0xb6f3c7b7,0x390cab61,0x37372789,0x38beb5a7,0xb89ae5fc,0x38faa4ee,0xb98bf750,0xb989694a,0xba270ba8,0xb9f19a31,0x3a04209e,0x3a5b1413,0x3a9f52af,0x39f59d59,0xba9d4836,0x3ad0eb6d,0x3b0fe1fc,0x3b6de4bf,0x3ae4b577,0x3a943807, -0x3a98d5d1,0x3b18d516,0x3aa43775,0xbaa17cb6,0xbb24bfb2,0xbafcbe25,0x39d9abb8,0x3a06cb01,0x3a14b327,0xba3ab3eb,0xbae84bd7,0xba0c1b98,0xb98ab182,0xb8908947,0x39c142fe,0xb8d6e5a6,0x38440953,0xb82d69d6,0x3801a8e0,0xb7a6f64f,0x388b17dd,0xb7fd538c,0x39265a79,0x382c068f,0xb989ab33, -0xb9d02941,0x3ade0e1a,0x3b52abba,0x3bc651d8,0x3beff487,0x3c18342c,0x3bb337a9,0x3ba08a8c,0x3ba7a1bb,0x3b5138dd,0x3af31505,0x3ac9aed7,0x3b2e5e2b,0x3bbcc36f,0x3c0fdf06,0x3c109d3c,0x3bb78809,0x3b25169e,0xb94445a4,0xba98b272,0xba87f2ca,0xbaec287c,0x39a97865,0x3a27f88d,0x38546089, -0xb90e5835,0x37dd4ce3,0x3677945b,0x3713f83e,0xb6176f32,0x37824da8,0xb5c1db20,0x37887a8b,0xb8223cf6,0x3766124e,0xb96ba6c9,0x3a71003a,0x3a1da3d2,0x3abd7672,0x3b074e84,0x3a8ba9e0,0x3971fff3,0xbb3e5799,0xbb9eb7e0,0xbb068173,0xb9dc044a,0x3b1c6aeb,0x3bb5f917,0x3aa86c88,0xbb076bc0, -0xbba56821,0xbb5c4c9a,0xba3137b3,0x3ae39db1,0x3ab1b599,0x3a871bc7,0xba8ff74e,0xba712633,0xb82855b0,0xb90173c2,0x37fe8e63,0x38d03981,0x3790e115,0xb6b8b418,0x36bd555f,0x35e49015,0x370acf4a,0x36dbd106,0x37a11116,0x37690cf1,0x3688727b,0x39a4759e,0x3a4f6adf,0x3b667b24,0x3be65c40, -0x3b8e03d1,0x3b06f625,0x37ff8a34,0x3b6f424e,0x3bbbacbb,0x3bb58bbf,0x3b964f21,0x3af8b84d,0xba6366a6,0x3a1872ea,0x3b1f0290,0x3b9b0f7c,0x3b7df21d,0x3b07d857,0x3af3f3b0,0x3a8e374b,0x3abae211,0x3a613aae,0x39bd0208,0x393c22e4,0xb8af94f9,0x38f075e6,0xb7b628d5,0x36a6ab8c,0x36a18eee, -0x36dd214f,0xb6ab4c86,0x37530b50,0xb76546fa,0x384fd988,0xb89e19ed,0x39619750,0xb9ffb6d7,0x39dfa5ad,0x3b1ce730,0xbb224a26,0x393fad63,0x3a140db1,0xba94ff10,0x3b8cc9d3,0x3bd06d13,0x3b7bb53d,0x3be1ce73,0x3b855a45,0xbae442f0,0x3a53a9b6,0x3b1b2a79,0x3bce78e8,0x3b528cb3,0x3af2f4fd, -0x39d1fd9c,0x39eb3aec,0x3a6aff50,0x3a693bea,0x39a2c98f,0xb8842fa5,0x38b5c9de,0xb7ff293a,0x37bf2317,0x36f6b5c1,0xb5999c20,0x3722468c,0xb6e33634,0x3803acda,0xb81f3d25,0x38ff4605,0xb98217a9,0x39c986e3,0xba1fb736,0x39a5604a,0xbb9f03f7,0xbc7ffaed,0xbb8397c5,0x39a47f62,0x3a643563, -0xbae9b510,0xbb82cfaf,0xbb813dcd,0x3b38e2cc,0x3babd8a1,0x3b234867,0x39d54f03,0xbb1ba53d,0xbb606f4b,0xbb2085e1,0xbab58e14,0xb9cbff2e,0xb89b9d0d,0xb8ffa57e,0xb95077e4,0x36f4619b,0xb99c126b,0xb943d835,0x38f87243,0x36967a26,0x37a02650,0x370c6a10,0x36f29a90,0xb71c4066,0x3688b181, -0xb70bed39,0x37d32882,0x383f4f45,0x390913a2,0xba81ee83,0xb9e873d7,0x3b6c0daf,0x3bc48b23,0x3b000751,0xba96f597,0xba359248,0xb9874b02,0x3ab49307,0x3ae7a34b,0xb9e254bc,0xbb0051d6,0xbabd3fb6,0xba9413de,0x3a122a1b,0x3ac1ac46,0x3aa36c29,0x3a94fc3c,0x3aedf8c1,0x3b151592,0x3b3b534f, -0x3b4ef0eb,0x3b09e593,0x3ab00a49,0x393afa50,0xb8dc183f,0xb6b4a51f,0xb6c1bb33,0xb6f8eb7a,0x3705edf7,0x37c513d7,0x37d7410a,0x378e0b6b,0x37390e27,0xb800e992,0xb9618c96,0x3ab04b29,0x3b24b209,0x3a0417eb,0x3b057153,0x3b299f7d,0x3b438300,0x3b0e93b6,0x3ac3e65a,0x39e9c35d,0x38da6d97, -0xba5666df,0xba9814bb,0xba9f9487,0xbad756a2,0xbae208b8,0xbb1d3096,0xbabf0ab0,0xba3c638d,0xb9470486,0x39514077,0x39e9a164,0x39a39f0d,0x3a534a29,0x3a74048d,0x39cd505e,0x38c86b3c,0x38881f1c,0x372d6eb0,0x38855443,0xb4c8cb9a,0xb6ba1fe0,0xb7c8649f,0x35d2d16e,0x38a47c6a,0xb72f7fa1, -0x39c47bbf,0x3a26c096,0x3a97f861,0xb5a217b1,0x3a3d581c,0x3aca7768,0x3a49d5bc,0x3a6d2715,0x3a30023b,0x3a20e31d,0x395f3f2d,0xb9fde0ae,0xba795a34,0xba82899c,0xb9b3d8bf,0x380c7d90,0x39445385,0x39b6f500,0x399f8d1f,0x39c28574,0x3a10fde9,0x3a546121,0x3a71884e,0x3a04d863,0x399c7f77, -0x3987f3d8,0xb821dc6a,0xb8d72eb6,0x3746847d,0xb7c60bf3,0x382bd38f,0x38be59e5,0x39009d5e,0x38a4e11b,0xb7ea4759,0xb92ea81e,0xb9dc2f57,0xba67ddbe,0xb9da514c,0xbb130c9c,0xbadb434f,0xbabc3ac6,0xba8608c6,0xba504b74,0xba10b2c1,0xb97151a5,0x397b77ee,0x3a33d16b,0x3a84ac28,0x3a9683c2, -0x3a685c4e,0x3a7d2abc,0x3a9438bf,0x3a8c0e90,0x3a8afcca,0x3a822c19,0x3a8b814f,0x3a8ecfe3,0x3a9ae3a7,0x3a5f1dd6,0x3a30ae2b,0x3a0109ae,0x394a23d2,0xb824fa59,0xb9432c59,0xb9acdc4d,0xb90d617b,0xba031404,0xb9c35dc4,0xba2fbd09,0xba253fd0,0xba5b183c,0xbabfee7f,0xbaae6600,0xbac137f5, -0xba0e84ed,0x389505e8,0x3991d7d8,0x3a145bca,0x3a79a09a,0x3a8f6604,0x3ab878b3,0x3ac45f48,0x3aaddc87,0x3aa7c0ea,0x3ab5eb6b,0x3ad932a5,0x3aedc33c,0x3afda568,0x3af8d7bd,0x3af409d2,0x3b010252,0x3afdda36,0x3af285ef,0x3b021452,0x3adf9702,0x3aded591,0x3acb9428,0x3ac200af,0x3aa754c6, -0x3a8c4f1e,0x3a72303e,0x3a2fedcb,0x39c3100a,0x39a81bcc,0x39a2c5a4,0xb92d2489,0xb813a706,0x37cc477e,0xb9da2bad,0x38dbeb0c,0x3a2aa1f2,0x3a39884a,0x3a38ec7d,0x3a5f34b2,0x3a7bb4c1,0x3a84fcb6,0x3a9363c1,0x3aab70a3,0x3abeff14,0x3acc417f,0x3ace170d,0x3ac973b6,0x3ac6006f,0x3aca928d, -0x3ac67f17,0x3ac6f963,0x3ac5e76e,0x3ac1838d,0x3abf330c,0x3ac6019a,0x3ab07174,0x3a7da277,0x3a09eee0,0x3aa50ad2,0x3a63bebd,0x39cdb3b4,0x39b81a5f,0x39c84b56,0x39d89d68,0x399c4fdf,0x397bc7ee,0x398f7889,0x3a1952b6,0x3a60ae4d,0x38181d13,0x397c234a,0x3b1accda,0xbaba23c5,0xba5240d1, -0xbac1852f,0xba7e3a4e,0xba7634b4,0xba88a028,0xba7b1f16,0xba804671,0xba7b2bf6,0xba8b585c,0xba9034b3,0xba8e6eae,0xba823ece,0xba8e2d84,0xbaa1b8db,0xbab17b76,0xbab5134a,0xba9f3a6d,0xba9b334d,0xba8ba590,0xbaa7365c,0xb9bad28a,0x398351bf,0x3a6a3aaa,0xba41d4ad,0xb7b42af1,0x3a57e173, -0x3a284620,0x3a23812a,0x3a283f46,0x3a596ae2,0x3a5eb3fc,0x3a4e7569,0x39afc10c,0xba3b99e0,0x3a2669c7,0x3a05ccdf,0x3ab04744,0xba394010,0xba712ead,0xba677733,0xba9b9ab5,0xba32a4bd,0xba354ad9,0xba3ed980,0xbaa3f440,0xbacc3818,0xbad5b24f,0xba9276e0,0xba8e339b,0xbacc6fc4,0xbb06d817, -0xbb13f32e,0xbad2cb45,0xbaba49d5,0xbab3e304,0xbaeecfa8,0xb90a3b32,0xba30b3fd,0xb93f3648,0xba0b2047,0xba813248,0xb8e2ec5b,0xba7f452a,0xba59a324,0xb9dfac51,0xb917430c,0xba22b889,0x37e00362,0xb912b6e6,0xb9db6f7d,0xb9855f58,0xb9da5536,0x3999932f,0xbab810c2,0xba3a89a3,0xba19e841, -0xba953e5b,0xba04d49e,0xb9cb7e78,0xb9557dd2,0xbaa7378a,0xbac5fd4c,0xbae7fb8b,0xba39b36d,0xba9123e0,0xbb0a10bf,0xbb4df8df,0xbb4d38e8,0xbb1392cc,0xbae538e6,0xbae195f2,0xbab08a72,0x3906f354,0xba13f458,0xb8dbe29a,0xba741aaf,0xba82ec5a,0xb8850387,0xba3d7be3,0xba3bb727,0xb66f8879, -0xb972a8c4,0x38193dfb,0x38dca19a,0xb9b3235f,0xb9fab2c1,0xb9391601,0xba712f72,0x3a7bdb08,0x39e35536,0xba217a57,0xb83356e5,0xbaa7f074,0x399ff962,0x3a29b42b,0x3a7128d0,0xba9fd2c8,0xbb028142,0xbb33bd6e,0xba32c32e,0xba15bac0,0xbaf16e9b,0xbb805dc5,0xbb86f8bb,0xbb155afe,0xbaf0a689, -0xbae4c3bc,0xbaffbd06,0xba84ecdf,0xbac2f23c,0xb9d25809,0xba956509,0x363fb36b,0x38818cbc,0x394298d6,0x39895a1b,0x39078adb,0x36de113d,0x382c4275,0xb8000a46,0x39472359,0xb93445ee,0xba1ec32c,0xba3bec81,0xba460048,0xba49d023,0xba65f95a,0xb99b8fc1,0xbac17263,0xb8c23698,0x38e1e009, -0x3a84f920,0xba88cb21,0xbaf767d9,0xbb185acc,0xb914fbf4,0xba8b7924,0xbb694483,0xbbb8db03,0xbbb13785,0xbb60a361,0xbb155315,0xbaff3c78,0xbb026102,0x38a3cbf1,0xba49b25d,0x35e6f7ff,0x381244cc,0x3915737f,0xb8eafd8b,0xb8a890ca,0xb91786b4,0xb8a8acab,0xb7cd309a,0xb830b96c,0xb66199a1, -0xb8a64e22,0x388d79fa,0xba03dfd1,0x395e950e,0x3b3a7b14,0x3b283b62,0x3af00840,0x3b67e450,0x3bbf333b,0x3b1fa723,0x3ab8b645,0x3a7fd4c5,0xba1f415e,0xba99cf85,0xbaa726ae,0xba0d2f65,0x3b3a5673,0x3bd813fb,0x3bf9536c,0x3ba39b7b,0x3a3f2963,0xbae6a32c,0xbb4fc20d,0xbb17cf8e,0xba9e72b3, -0xb98fc60f,0x3a36afcc,0xb9958bac,0x3742deb2,0xb69f49e3,0x38598b19,0x385b1ae7,0x381e1798,0x36447cb6,0x36ec1dc7,0x372749e6,0x370222ac,0x37fcaee8,0x3a1e3dc2,0x39f4abf8,0x39fad7b9,0xba6937b7,0x398dbeb8,0x3a70cbf6,0x3a892225,0xbb32466a,0xbb90e599,0xbb0de515,0xba7413fc,0x3ab9a3ea, -0x3b931ebf,0x3af7ec5d,0xba8a1fac,0xbb98cb89,0xbb93112a,0xbb45f77e,0xbb15ab11,0xba701227,0xba9607e2,0xba715d67,0x39a9cd40,0x3808985b,0xb888eba8,0xb7f83ddb,0x38228e54,0xb838ed03,0xb800e338,0xb7f4048f,0xb79a3cc8,0xb704bc24,0xb6bf1a28,0xb805d537,0x388f9ea1,0xb9097ad4,0x38ae1656, -0x3a5967d1,0x3b6daa6a,0x3bcd273a,0x3b7b0484,0x3a76ca15,0xbb2224b2,0x3a2c1db3,0x3b0c0d5b,0x3accd621,0x3aa67a3f,0xba0a1d76,0xbb37ea30,0xbb1270b6,0xba4a653b,0x3ab7c5a5,0x3aa20419,0x397b21f6,0x3a660780,0x39ade2dd,0x39cc6cb9,0x370c854d,0x39c4dc3b,0x37c82c61,0x3949c940,0xb8b3fb8f, -0xb6d20e38,0xb69f7747,0x3789146c,0x36b00eae,0x365ed0fa,0xb661cc56,0xb7511cc0,0x37d73d1b,0xb8bc447e,0x3920dc46,0xb997e56d,0x3a40c4e8,0x3b2ce9fc,0xbb2fb02c,0xba3bac08,0xba9f53e4,0xbbc20943,0xb9f009cc,0x3a78289e,0xba8732be,0x3b3fad4f,0x3aa44010,0xbb482409,0xbb330e80,0xbab4994f, -0x3b1f6968,0x3a2c2933,0x399ea7d2,0xb9cc8dc1,0xb8d900f4,0xb9cfa236,0x39731d3a,0x38abb4c6,0xb987d32b,0x38b228e9,0xb825c283,0x378543ef,0xb73b5ccd,0xb71038a5,0x368559c3,0x367491ca,0x371e6ebb,0xb7a2c56c,0x381db844,0xb8c05e0c,0x38d74c84,0xb91ec184,0xb7fd9d88,0xbb90039e,0xbc82f553, -0xbbb6d1ef,0xbaecca42,0xbb88596f,0xbb9ff28e,0xbbd3787f,0xbbcbb04a,0x3ab37182,0x3b98d877,0x3b2df243,0x3a049242,0xbb2f88fd,0xbb651a73,0xbb696fcf,0xbb467152,0xbb316774,0xbb03762d,0xbaddfef0,0xba5c950d,0xb9acf855,0xba10372d,0x3826d03d,0x37d6583b,0xb79e985b,0xb6e735ad,0xb73d85e5, -0xb7e24479,0xb7573348,0xb7f05415,0x36e03bb3,0xb8424a84,0x38855874,0xb7c5791b,0xb905e1b1,0xb90af06a,0x3b79e3af,0x3b8d734b,0xbb3c0591,0xbb935161,0xbb973b1c,0xbb6d1efe,0xbb0dc450,0xbaa0af98,0xbb2ca120,0xbb78c602,0xbb6bc1a1,0xbb28800c,0xbaa4a98a,0xb92446f3,0x39d3a6e4,0x3a4bb5c4, -0x3acfd975,0x3b1bc211,0x3b21be69,0x3b0e8f76,0x3b12f184,0x3a9fe654,0xb8d47c2f,0xb88d55da,0x3722ca53,0xb606fa73,0x380742cf,0x37f9e7f1,0x387c3702,0x377912be,0x3839fcdd,0xb83801ee,0x38d58d27,0xb9ea3eee,0x3ab7b9e1,0x3a2e57e7,0x3b2b8369,0x3a5e191b,0x3a5bbccf,0x3ac69bcb,0x392c752d, -0xba12a931,0xbae29b2d,0xbb1875ea,0xbb06649b,0xbada3cd0,0xbac06b6e,0xbb0ccf0c,0xbb158e96,0xbb3e3a19,0xbb0811b3,0xbac4949f,0xba96fca4,0xba15b941,0xb86551f7,0x3a491eab,0x3a6c5f1f,0x3a0972ce,0x39eeb066,0x3809c526,0x356ee21c,0x365cecd9,0xb8d7ca4e,0xb8b6b991,0xb8f4900a,0xb8b8d7b6, -0xb86c5ac8,0xb82db4af,0x38aca58a,0x394195b2,0x3a72eb2b,0x3a8066e7,0x3a5da91f,0x3a56b294,0x39226db4,0xb9781a52,0xb93f23d0,0xba0824e2,0xba626295,0xbae0f587,0xbaebb631,0xbb063f9a,0xbaf5dc6f,0xbaad4192,0xba7b06e8,0xba4509cc,0xba049085,0xb9afc7f7,0xb98bc77c,0xb88b4c09,0x394c47c8, -0x39ecc0ba,0x3a30a83c,0x39f11caf,0x3842f72f,0x3857077f,0xb8a2745b,0x385a1f9e,0x3903e3cd,0x396acdff,0x3933ad5f,0x393c1acc,0x390e5272,0x38f51dd1,0xb7443f1a,0xb9557181,0xb93d9d07,0x38737c30,0xbac9b5b8,0xbb126cb7,0xbb05a6b1,0xbad59def,0xbade25c4,0xbad2a580,0xbab7d4a7,0xba8c9674, -0xba1aa996,0xb975a592,0x3781ae84,0xb7b02284,0x3989e234,0x3a29a449,0x3a07dd87,0x3a001ec4,0x39c7ec72,0x3a0c2ff9,0x3933e630,0x3a3eaad3,0x3a068524,0x39d5d0dc,0x38e73965,0xb8a2fb14,0xb9840feb,0xb980af10,0xb9af395b,0xba05094e,0xb9355ae5,0xba0fbd44,0xb9f93ef3,0xba243468,0xba5f4513, -0xba7e4b64,0xba9d54c5,0xbacf158d,0x39289bb2,0xba2fb3e4,0xba0b176f,0xb9ee6183,0xb91e12bd,0xb973868d,0xb8f97440,0xb99e09b2,0xb93885bd,0x382a8f7a,0x39b5aaaa,0x3a475a3b,0x3a8c7455,0x3ab8d246,0x3ab7f987,0x3ab89f34,0x3ac64d41,0x3aca4e09,0x3ad23d14,0x3ac4730a,0x3aebe1f1,0x3abf0c7e, -0x3ab87005,0x3a9a82cf,0x3a92b04c,0x3a510259,0x3a464503,0x39ccc493,0x39d129e3,0x390d31da,0xb99b8c02,0x3802d41f,0xb9a88a32,0xb8f9436f,0x38c531f4,0xba2fec02,0x39b2d282,0xb99106eb,0xb8de59d3,0xb7c6f7dc,0x3833040c,0x38510820,0x39290a9c,0x3990f9de,0x39f03005,0x3a0d5bad,0x3a17ed06, -0x3a1d4ae0,0x3a2454c4,0x3a39e1a0,0x3a2a84b3,0x3a29690a,0x3a227c87,0x3a145526,0x3a150033,0x39fadef8,0x3a64c4d1,0x3ab09750,0x3adf3288,0x3a4841c6,0x3aa226ee,0x3adbc643,0x3ae5a259,0x3ad21855,0x3ac7a04e,0x3acdfbb6,0x3ac00043,0x3aa79794,0x3a5a9aea,0x39c1915b,0x3a98708c,0x3a678af9, -0x3a956cd9,0xba13da9d,0xba25ff65,0x395e9995,0xb91afdf2,0xb927c350,0xb9a6a4c7,0xb9408fe1,0xb91b900f,0xb8488f8d,0xb93e380e,0xb9648026,0xb97bfb55,0xb8e37d92,0xb934dee9,0xb9a28a6b,0xb9d8b696,0xb9e2f90a,0xb9ad05ac,0xb9911965,0xb998a9de,0xb92a3994,0xba802051,0xbaa81de3,0xba9595e0, -0xba6d23fb,0xbabe240a,0xba9ad6f0,0xbaaff72a,0xbaa7f9e1,0xba8e60b1,0xbaa74a2d,0xbaa3eff1,0xba989a7d,0xbab2a4a9,0xba3f0e4e,0xbaa1e40a,0xbabff249,0xbaf5841b,0xb93c22b2,0x38cba004,0xb8af146e,0xba178525,0x37e6c92e,0x39490390,0x3a0e31dd,0xb854af33,0xb9a01862,0xba12b6e9,0xb6f2fde7, -0x3864ae65,0xb9dd8065,0xba6184b8,0xba84d4c5,0xba090526,0xb9e27bb6,0xb9a30863,0xb9c151e9,0xbac682bf,0xba8ebc5b,0xba7884f4,0xbabca7a4,0xba7746f9,0xba4cae87,0xbab529f1,0xbad29d75,0xba7bc97d,0xba6a647d,0xb8c389d7,0xb9c82486,0xba68110c,0xba7c66b3,0xba9c1c12,0xba7e1f4c,0xbaadb08b, -0x39996d9f,0x39ab6b6e,0x386e279f,0xba468977,0x3723bb92,0x3955f884,0x3a912938,0xb8846107,0xb980cebf,0xba3ac1a0,0x3a0ba393,0x397b2220,0xba562de9,0xbaceb3ad,0xbae0827c,0xba7b22c4,0xba5454d4,0xb97a944d,0xba98476b,0xbae043d7,0xba7355f0,0xb9ed03a0,0xbabf64e5,0xba930120,0xb993d65a, -0xba0e75e0,0xb8193021,0xb9bb49ff,0x383f93b1,0xb9a96419,0x38bc55a3,0xb9bf7932,0xba4b0037,0xba82f228,0xb9bef75d,0xba96723e,0x391d7180,0x3a6f98b8,0x39aa68c1,0xba867744,0x39db817f,0x3a935d72,0x3b276ff7,0x39d74467,0xb99c5faa,0xbac5dc85,0x3a35da06,0x3a5653a1,0xba15eabf,0xbb1103ed, -0xbb23c366,0xba86c110,0xba3520fd,0xb9916b52,0xbaa90f1c,0xbaaf994b,0xba4ad669,0xba3e13c2,0xb9fa2b57,0x37e69872,0x3976693f,0xb7017a17,0x3908df9b,0x3826f068,0x38bd6bbc,0xb7fdf2e8,0x38203c3a,0xb92d5a87,0xb97c3e97,0xba551265,0xba321211,0xba143d23,0xb9af0889,0x3a7f5734,0xb9088c31, -0xbaaf5698,0xb994efa8,0x3928b8f5,0x3b1a0e17,0x39965f92,0xb9de1cf3,0xba83050a,0x3aae7417,0x3a40be68,0xbafa7590,0xbb6a15be,0xbb682fe2,0xbb00ee27,0xbaa1192c,0xba1719ab,0xbaac2dee,0xbb01f9ab,0xb9f08c05,0xb943110f,0x389ab88c,0x38deddfa,0xb90da681,0x381aa76d,0xb88878c0,0x36ac2fda, -0xb805a62c,0x380d11c8,0xb694ce58,0x38726ace,0x38fdfca6,0xb9666625,0xba1e5b0a,0x3a571070,0x3ae0d540,0x3b7c0eec,0x3b9b0ba8,0x3beffa3b,0x3b8c66c7,0x3b63d16b,0x3b3c328d,0x3b264683,0x3b0a68d7,0x3af65568,0x3b1db24e,0x3ba2c61a,0x3bf64233,0x3c111f60,0x3bd06b97,0x3b6b2ff3,0x3a32e367, -0xba6e8b71,0xbab48e9e,0xbac8f2d1,0x39fe760a,0x3913cc2c,0xb8380513,0xb84e98ed,0x38646b5c,0x3680d475,0x37f088fc,0x3718ba2a,0x37931224,0xb767d251,0xb743ba41,0xb82dc5ae,0xb8c63f99,0xb99e2f56,0xb9010e1d,0xb8681bfd,0x3a15ecdb,0x3b2b09d6,0x3afdda2d,0x3abd4bd9,0xbb10f5f6,0xbb850ab6, -0xbb20aa8a,0xba6e6ffc,0x3ac492a0,0x3b8c49ed,0x3aef30ff,0xba5b2790,0xbb8a5d72,0xbb80654d,0xbb12fda8,0xba7a8aed,0xb9f81219,0x38aadd5f,0xba7a6b72,0xb9c22d19,0xb69d19d2,0xb945a890,0x388ed92b,0x372a72b2,0x36b10c28,0xb7897eda,0xb6909656,0xb70c19d9,0x36654627,0x367262ea,0x37bde9bf, -0xb818e1cb,0x388e8848,0xb9003b07,0x3a14bfd6,0x3b5961ad,0x3bd82134,0x3b7965b4,0x3a8d5799,0xbb03308f,0x3a693ddb,0x3b2feebe,0x3b2db57d,0x3b64fa3e,0x3af50b4c,0xbac85123,0xba08df1a,0x3a224dc3,0x3b2c5b17,0x3b402361,0x3aca1311,0x3ad53f89,0x3a758575,0x3ab6b140,0x3a098fd3,0x38075e59, -0x38879b58,0xb8dfc3a0,0x3854ed69,0xb7fc6dbe,0x37b01c8c,0xb6a99949,0x3764f8e7,0xb61a51de,0x36e889b7,0xb78953f4,0x37ccf07b,0xb8887444,0x390ddf88,0xb99ce7fe,0x39c225d3,0x3adb2dcf,0xbb4353e2,0xba14f0d6,0xba23f0ff,0xbb868249,0x3a8659f2,0x3b3918cc,0x3a415472,0x3b98f7f6,0x3b35a705, -0xbad5985f,0xbaa7cfab,0xb99731af,0x3b64cc56,0x3b0c18b7,0x3add18db,0x39b6ccc4,0x39d1cd2a,0x3a13cd23,0x38825a1c,0xba0d35ea,0xb95d5714,0x386e7434,0xb890c400,0x37fb720e,0xb6df5308,0x3724e5ed,0x36ba007a,0xb697aad6,0x37a29791,0xb6c99d0a,0x383eb464,0xb8a7e63c,0x389dbdea,0xb92df107, -0x3943c11e,0xbb9b9c79,0xbc7827b2,0xbb8ab173,0xba0bd9a7,0xba49269b,0xbb1b5d8d,0xbb968581,0xbbbabbaf,0x39be2bfb,0x3b5f061d,0x3b4a4681,0x39980805,0xbb25fe2d,0xbb5b6e27,0xbb52bf46,0xbb254803,0xbae9383b,0xbaab92ef,0xba923b7e,0xba8c1455,0xba0e352b,0xb9e2cf14,0x37628c6e,0x372274f4, -0x36f27d31,0xb76344d0,0xb6e94cd5,0xb7315ff3,0xb7223c57,0xb7a12f27,0xb747f44a,0xb7927b94,0x37864890,0x382ede2d,0xb8679dd4,0xb89bac82,0xba035ef9,0x396998a4,0xba7f98b3,0xbb3ee0a8,0xbb468235,0xbb14f9ca,0xba073913,0x3a2617ca,0xba86df46,0xbb24fa1b,0xbb420234,0xbb0c9d7f,0xba40abf5, -0xb5422944,0x3a043274,0x3a3a8a4d,0x3adedc2d,0x3b04b218,0x3b1b8226,0x3b1b0967,0x3a9a251c,0x3a19d76c,0xb8c93e68,0xb78be422,0xb7a1b2a4,0x3804075a,0x37a6bf93,0x37ab4986,0x38404494,0x3684d1a3,0x38919d9c,0xb888a5c3,0x3912b6af,0xb9e4ef34,0x39a5267f,0x396dbf88,0x3a3691a9,0x3a5de687, -0x3ac92aa7,0x3b0968be,0x3ab2cf45,0x3a60cfd4,0xb90e30bb,0xba2be8f7,0xbaa7f1d5,0xbaac5761,0xba90a4c6,0xbae235ab,0xbaf5f0ea,0xbb24dc9a,0xbad78e65,0xba73d773,0xb9e213ae,0x3933d8f4,0x3a168c64,0x3a369d6b,0x3a7ab053,0x3a444ddd,0x3813b368,0x37c615b1,0x37fa5a43,0xb8b05368,0xb82d50e1, -0xb82fad93,0xb86ae50d,0xb8b51f17,0xb8205c34,0xb89af95c,0xb84f3f7a,0x387b742f,0x3a025469,0x3a213676,0x38a05c7e,0x3a39a561,0x3a9e7c84,0x39ff1b0b,0x3a14070b,0x3994437c,0x391e3e44,0xb9aab8d1,0xba5b7e50,0xbab3ae15,0xbaca91a7,0xba88d54d,0xba4527bc,0xba1a2539,0xb98f5e86,0xb91252b5, -0x37f9a76a,0x3972f1bb,0x3a1c30d7,0x3a39c06b,0x39610a36,0x38900c32,0xb82ce23a,0xb9154fcb,0xb78ab549,0x39153d61,0x38d1ce6d,0x38fb6c80,0x391ed560,0x391c73f2,0x38fab770,0x38e25df3,0xb6c75bf1,0xb9312b61,0xba31bacf,0xb9829894,0xbb09a632,0xbad4689a,0xbaa913a5,0xba89c1c0,0xba642d66, -0xba545e65,0xba24c349,0xb9b2a96d,0xb7e9cc45,0x398dcbf0,0x39d845e2,0x39813702,0x39a44d8b,0x39e04aeb,0x39dbd2ee,0x39d556c3,0x39fc92ea,0x3a0e9eb9,0x3a051bd5,0x3a280dfd,0x395e2f30,0x395cefb1,0xb801e8fc,0xb969707f,0xb9c79284,0xb9b6cc42,0xb996aa40,0xb952d4ad,0xb9d32ba1,0xb988e446, -0xb9f0063e,0xb9f42dcd,0xba548ce6,0xbaa83605,0xbaa696b2,0xbab1ee25,0xba46ed92,0xb992d5e7,0xb981594f,0xb85b13fa,0x3977b4fd,0x39a270f3,0x3a110a05,0x3a178f9f,0x3a1f81df,0x3a2cade4,0x3a585e6f,0x3a91d78a,0x3aaf4606,0x3ac3f285,0x3acac2ef,0x3acae8b1,0x3ad879e1,0x3add49b2,0x3ae71364, -0x3ae77fc9,0x3ab173c5,0x3a957b5b,0x3a641af2,0x3a3a2879,0x3a00ee7d,0x393dc7c3,0x32ea06e2,0xb98e53d5,0xb9b52e0f,0xba015b4b,0xb9c851e2,0xba3a368a,0xba2e2d04,0xb9e6febe,0xba464680,0xba175563,0xb88b57b3,0x395a1c84,0x3968bb78,0x39b51856,0x39e1005e,0x39f03353,0x3a0cf354,0x3a2a7e86, -0x3a4c0b14,0x3a635388,0x3a6bd917,0x3a687ec0,0x3a65582e,0x3a6ff0f8,0x3a668822,0x3a6873be,0x3a649616,0x3a5b32fb,0x3a58e839,0x3a6f92e0,0x3a117b14,0x39a7419c,0x39dcacca,0x39e4673c,0x39478646,0x39ad9444,0x39b2889a,0x39a794ee,0x399e6fa7,0x395f74e2,0x38fc766c,0x38d60eea,0xb7970b6c, -0x39227871,0xb7cb11a9,0xb97f6676,0x3aac97d9,0xba07bb95,0x38b3bff2,0xba26d407,0xb9b73ee6,0xb99de535,0xb9dd4f37,0xb98857c2,0xb9720957,0xb92ad433,0xb9a487c9,0xb9c9ea2b,0xb9fd54fc,0xb9a265d2,0xb9c1bfb0,0xba0653ad,0xba24eeef,0xba2b5fff,0xba12a7e9,0xba011bb4,0xb9e30563,0xba0acf3d, -0x3921652e,0x398fa065,0xb988e036,0xb7e9a05a,0x38fad358,0xb94edd5c,0xb9a84ec2,0xb9a62cf8,0xb92f6625,0xb8e4f739,0xb80f76ed,0x38b3b5f7,0x39a0a815,0x37f1bd6b,0xb9851fd4,0x39ae5f52,0x39ec1406,0x378746c2,0xb94e1653,0xb9174461,0xba10eb5b,0x392e6944,0x39be3626,0x3a10f42a,0xb873b818, -0xb9d93e7f,0xba571edd,0xb9332239,0xb88993ba,0xb9fcbb6c,0xba76d92f,0xba988db8,0xba4d156e,0xba19a8e0,0xba142b90,0xba67d824,0xb929186c,0xb9d577d3,0xb9961617,0xb96237ae,0xb9beb922,0xb9a09eb3,0xba23a638,0xba19c86b,0xb8a6c674,0x378d50be,0xb884a641,0x39872776,0xb8bf0f88,0xb95733d8, -0xb90fa761,0xb96dc2f9,0x3a05d910,0xb9c93301,0xb8dcda74,0x39056f56,0xba17aa72,0x3a02a889,0x3a58183f,0x3ab2aa8a,0x392e1e2d,0xb975feea,0xba8b0cd8,0x39b9f0d7,0x38f6b52f,0xba65ccb4,0xbae63c7c,0xbaf2cb03,0xbaaf7bd4,0xba5e7965,0xba488765,0xba3f6a08,0x38a71d1c,0xb99c4f7d,0x3903b237, -0xba2a630a,0xba00cafc,0x394b828a,0xb925c8ef,0x38b5432b,0x397890a3,0x389d6252,0x392145d5,0x39933350,0x365c0dcf,0xb991b717,0xb8aea322,0xb8fb50cf,0x3a54cbc6,0x3a07b004,0x3949ad9f,0x3a00c248,0xba6116fc,0x3a980229,0x3b068b0d,0x3b401c44,0x3a545ef1,0xb951ca56,0xbafda95c,0x3a1e7dd4, -0x3a598cd3,0xb977b3ae,0xbb057390,0xbb20940f,0xbab12165,0xba68dadd,0xba5458ee,0xbaa43087,0xba2a9fad,0xba7342de,0xb9c1ecf6,0xb98462d2,0x39857229,0x384742d1,0x38d88465,0x35b1f0d3,0xb7bc863c,0xb836f825,0x35ce03b5,0xb8441aa8,0x39188887,0xb806c628,0xb97fbc0b,0xb9b7a2c0,0xb80056b3, -0xb93ce549,0xb97c514f,0x39a620a3,0xba864c11,0x3a80ca5a,0x3adeed06,0x3b4b1f3e,0x3a8579ac,0xb97883a3,0xbad8eaff,0x3a88f548,0x3a2208de,0xbaed96d7,0xbb68836e,0xbb6d544d,0xbb1e15e8,0xbaa3567d,0xba89c8f4,0xbab12b66,0xb95531b4,0xb9cc249a,0x395f110f,0x37d79ef1,0xb810c01b,0xb89b5b5f, -0xb7fec031,0xb7909069,0x36d54172,0x372c6646,0xb6a8391f,0x3765ec81,0xb82916b5,0x38f106e3,0xb8d8dacb,0x3967df3b,0x3b1ef41b,0x3b60086d,0x3b0e23e2,0x3b6ecb05,0x3bcc57a9,0x3b83c3c1,0x3b660426,0x3b34bcfb,0x3af019b0,0x3a995af5,0x3a2d1839,0x3a12b9d0,0x3b3402cb,0x3baa5e6e,0x3bf79378, -0x3bbe2019,0x3b0c8dbe,0x39955cc7,0xba82bf2d,0xba4306d3,0xb9b0eb70,0x398ebb85,0x393e7ab4,0xb8c9f287,0x38a9ce45,0x37451a4c,0x378dd315,0x340999e5,0xb706a451,0xb59d3d73,0x33cf9a3e,0x37e1c0ad,0x36ab3424,0x389a0832,0x392a6504,0x3a1309a1,0x3a5a647b,0xb9f69604,0x3a225bb1,0x3ae4aed5, -0x3ae54a53,0xba65ede5,0xbb24e3db,0xbae93feb,0xb9d15ca8,0x3ab7a1e0,0x3b636edf,0x3b0df965,0xb89fd777,0xbb606440,0xbb7dd25a,0xbb3146f4,0xbab9cf8f,0xb9bb4bab,0xb9b9e618,0xb939d8f0,0x39cafdd8,0x39178824,0xb87b52bb,0x384e940a,0xb802c992,0xb7ab9d91,0xb71e0a9f,0x36327861,0x3659f9d8, -0x36a94a7d,0xb70a374b,0x37549515,0xb4f5e192,0x388d5296,0xb90906f2,0x3a5aeaaf,0x3b6d7768,0x3bbdabb7,0x3b51cbac,0x3a9ab318,0xba9fc8f8,0x3b0b081f,0x3b6ee02c,0x3b58c92a,0x3b363d44,0x3a4a3925,0xbb04bbc4,0xbab5aacc,0xb7e64ecf,0x3b03bd04,0x3b260c59,0x3ac06a9f,0x3ade2fed,0x3a8457ac, -0x3a7f230e,0x3a1333a5,0x39fffa60,0x37b1f660,0x3906ce21,0xb7448ebd,0x37d58b0e,0xb6950dc2,0x37210dc1,0xb7174974,0xb67af4c5,0xb3f39b1b,0xb6d4efc0,0x377e5e36,0xb81fccbd,0x38bb35dc,0xb8728192,0x39b1c6c4,0x3ab5fe41,0xbb320739,0xb7dbea53,0x3a03a847,0xbacf737f,0x3b17020c,0x3b68a845, -0x3a45206d,0x3b7ae7f3,0x3b14aeb7,0xb9fecf5b,0xba9b2ba1,0xb92d022b,0x3b4acfb9,0x3b16a057,0x3b028a6d,0x3a099798,0x3a1c57b0,0x37f0ec7a,0xb8f8cd77,0xb910f8f4,0xb93ee1c6,0x38e580c1,0xb814bd80,0x38035f86,0xb753d1f7,0x36f5188b,0x35362490,0x37410e84,0x3548427c,0x366d9ffa,0x378bd10e, -0x368ce47a,0x36d8de81,0xb7bfb633,0x380cdc22,0xbb8ff0f4,0xbc549a4d,0xbb1ad6b8,0x3ad53837,0x3ac5734c,0x3932e41f,0xbb26342b,0xbbbef87e,0x3a1df273,0x3b79d43e,0x3b98bb71,0x3ade42de,0xbaad2815,0xbb1d22bf,0xbb2641d0,0xbb0ae230,0xbaf23a34,0xbabd2f37,0xbac1f041,0xba8c6bea,0xba180c15, -0xb9a6ab10,0x39261b9f,0xb7a4095c,0x37654915,0xb78189a7,0xb704a9c7,0xb7422226,0xb5a72e4e,0xb744e2be,0x35cfc479,0xb7fd9aca,0x371e9927,0x37f942e0,0x3888534e,0x3958aeef,0x39a0c48e,0x39142d65,0x39a21aef,0xb987deb2,0xbaccc052,0xba1852d8,0x3a12df09,0x3a9b36b6,0xb9cb5b87,0xbad20041, -0xbad9ed8b,0xba7754d0,0xb8de235f,0x3a0f55e8,0x3a53f579,0x3a63e13a,0x3acfb7da,0x3b0928c9,0x3b0ec1b5,0x3b093dd8,0x3ad7c388,0x3a30eae7,0xb9469ba2,0x37b5788a,0xb716556e,0x382541de,0x38061083,0x3731ebda,0x37f27a77,0x36817097,0x386b64ec,0x37107bc0,0x390402ee,0xb9641faa,0x39ccfb27, -0xba12a626,0x3ad1c8cf,0x3af4e62f,0x3b0269d7,0x3b288b7e,0x3ac0236a,0x3a40c1ac,0xb9e78d01,0xba513ed3,0xbab8c010,0xbaba5c78,0xba947247,0xbad2d273,0xbab94db9,0xbaf26142,0xba85a7b6,0xba011dec,0xb9d577cd,0x391b13ce,0x3a078bf4,0x3a7928d1,0x3a85c719,0x3a2662b7,0x3993f7df,0x37c43801, -0x3788d823,0xb7da5b74,0xb8abc350,0xb7a24f87,0xb7e8cfbe,0xb7f93977,0xb703e2ce,0xb8b55f74,0x389a85fa,0xb81f24e1,0x3a30bdea,0x3a9af6a3,0x3a9d240a,0x3aa8b532,0x3a89041a,0x3a0cf214,0x399f2b01,0x394c5b1f,0x385563cf,0xb9b49f41,0xba62f211,0xbaba8311,0xbace62bc,0xba972b06,0xba744752, -0xba48f55d,0xb9c6f9d4,0xb985555f,0xb9506d57,0x38826c7b,0x39bd6322,0x3a2b687f,0x3a1ba248,0x3979c2c3,0x383cf441,0x3707c347,0x37cd7bb0,0x38ba57c1,0x390194d1,0x388ea5ea,0x384ce682,0x389919b7,0x38ec58db,0x392ae0a1,0x38f2eca3,0x380da962,0x38e9835d,0x398a4375,0xba976850,0xbaa6c577, -0xba9e690f,0xba4e6130,0xba35080f,0xba275b38,0xba0ea22b,0xb9988429,0x383ae725,0x39aedeb6,0x39f56a90,0x3864c4e0,0xb7fbfcfb,0xb66ddcf8,0xb87bcb21,0xb885b53f,0x37ae56be,0x3978b584,0xb89e281d,0x3a185e53,0x39cee657,0x391e5427,0xb70191b4,0xb968ece8,0xb955aecc,0xb8de4e7d,0xb947c302, -0xb8b9d847,0x357823cc,0xb8fbfd7f,0xb929c6d0,0xb954693d,0xb9b0e754,0xba36b739,0xba2627df,0xba63cd24,0xb9bf98a1,0xb9dba6a8,0xb9922cf8,0xb95f6dc8,0xb7a43249,0x37b73d23,0x3962d326,0x395030fc,0x388e4036,0x380fe869,0x391da3bf,0x39fbc7f9,0x3a50c51a,0x3a861240,0x3a97c3a2,0x3a9baeec, -0x3aa03b6f,0x3aa9e800,0x3ab1964b,0x3ab0f509,0x3ac5ecdb,0x3a99746f,0x3a88d0f2,0x3a59277a,0x3a1bcc3e,0x398b9065,0x3980f317,0x3848aca4,0xb8407161,0xb95d14ae,0xb9dd8ecb,0xb9f64710,0xb9f9b8da,0xb9bbcd15,0xb9fd4e40,0xb9ea9cd9,0x39ddc731,0xb8bc4f5e,0xb7f37f98,0x38af9429,0x39295c74, -0x39356653,0x396bd03d,0x39a932cd,0x39f58e67,0x3a12fcec,0x3a172466,0x3a0aac76,0x39f11144,0x39ebb98c,0x39d2ff2e,0x39d8d079,0x39d801bb,0x39d11e41,0x39d8f3c3,0x39bd3b85,0x3a4ec7f6,0x3a827956,0x3a5d4cfe,0x3a3f72fc,0x3a741d13,0x3a4638af,0x3a487949,0x3a355298,0x3a2a4be2,0x3a2aaa0c, -0x3a213fa4,0x3a1440db,0x3a22370d,0x39d95816,0x39dd61c2,0x3a1003e9,0x3a7568ef,0xbaa174df,0xba98f3d2,0xba3c7498,0xba35a22e,0xba3500c9,0xba4dd46d,0xba47c839,0xba46577d,0xba268e98,0xba4b8df7,0xba5c106a,0xba7056d8,0xba3b1eaa,0xba43ead8,0xba66ebb6,0xba800d32,0xba88029e,0xba82f0ad, -0xba71d20e,0xba5d6718,0xba594f63,0xba896ef5,0xba5e2eb9,0xb5ab8a02,0xba968ab8,0xba8173df,0xb83380ea,0xb9683fbf,0xb9602aab,0xb91406d5,0xb93792b6,0xb9247682,0xb90cd25e,0xba627944,0xba909e54,0xb9524323,0xba5afb0c,0xba0dda4c,0xba5a4122,0xba158473,0xba37f9c9,0xba8790da,0xba6ac568, -0xba57f037,0xb9c3519c,0xba785b02,0xbaa4dc9e,0xbad207e6,0xba73191f,0xba55e24c,0xbaa7f0d2,0xbad26a5f,0xbaedc49e,0xbac464ef,0xbaa54569,0xba8d57ee,0xba9b6714,0xba8701d3,0xba853f30,0xba25f440,0xba95a739,0xba9d0231,0xba0b931c,0xba929df2,0xba8fad0d,0xba30f7f5,0xba19e7bf,0xb9d028a1, -0xb904d422,0xba2c485e,0xba6441e2,0xba5ccfbf,0xba5cafea,0xba8a9adc,0xba7e2160,0xb9a23c60,0xba07a56c,0xba808a51,0xba6d39ef,0xba6dc43f,0x38f5591f,0xba900715,0xbaae5cf6,0xbb09a700,0xba0f3fd0,0xba372fb6,0xbad7c73c,0xbb1ba5fb,0xbb2b7985,0xbb1a9cc8,0xbaec024e,0xbaac1865,0xbac0ed6a, -0xba87b840,0xba321cf0,0xba2dd7fe,0xba8007fa,0xb9d16ad1,0xb91714b9,0xb8570064,0xb812f151,0xb8c28e44,0xb840e9a6,0xb927042e,0x37fdc3dd,0xb99b4ac9,0xba33d7c0,0xba2b4462,0xba5e2505,0xba062042,0xb98cb774,0x387ed8c9,0xb93c8a31,0xba9aebc4,0xba51ebd8,0xba134a75,0x3a92966b,0xba871f54, -0xbae74d31,0xbb578ab8,0xba51acde,0xb9ef42e9,0xbaeb8d1e,0xbb50be45,0xbb688a83,0xbb2e2a09,0xbaff9d4d,0xbab00e1a,0xbae5be8a,0xba9d9c09,0xba7b3980,0xba01de73,0xb5329dde,0x389f5da1,0x380d1116,0xb850756c,0x37e11d09,0xb793142a,0x37de1a50,0xb69e4c86,0xb8666cff,0x3682a2a3,0xb7986bbf, -0xba130450,0xba329af7,0xba8d09be,0xba9a4132,0x388d5025,0xb9c73adf,0xba851bc6,0xbaa82a65,0xba8c8c7f,0x3a7f7922,0xba918b59,0xbb0114d9,0xbb475f9a,0xb95aebef,0xb9c60406,0xbb30e042,0xbb8f8855,0xbb9bc84f,0xbb86673a,0xbb34ee5e,0xbaf3675d,0xbae5841a,0xba88fac1,0xb9ad6f15,0x38c1821c, -0xb7fc007c,0xb86baf28,0xb7dec644,0x37a4ee0c,0xb783aae3,0x36a68b2b,0xb6f34bee,0xb6a81d3a,0x3820ad5d,0xb89d1f0a,0x386cdaf4,0xb8a163b3,0xb9849b01,0x3a885c5b,0x3a879807,0x3a5bf305,0x3ad59692,0x3b8cef97,0x3b0eddaa,0x3aa70653,0x38706af3,0x3a575f7c,0x3a868431,0x39fb98c8,0x3a0dcecf, -0x3b1f3815,0x3b9b127c,0x3be4286c,0x3bb57be2,0x3b496104,0x3a3384db,0xba8e1137,0xbacc747d,0xba4aea25,0x392bf816,0xb8c58c16,0xb7d6b334,0x3797fd4d,0x372cdcff,0xb67156fb,0x37166bda,0x35c29299,0xb5a43636,0xb72a4931,0xb81e8328,0x374c7c89,0xb90e5962,0x387d812e,0xb9de4b4f,0xb96d97b4, -0xba6c5846,0x3ab08854,0x3ae89dd5,0x3b0313ba,0xbab8ca3e,0xbb3cb109,0xbb1561e5,0xba89a58d,0x3a293ab0,0x3b328bbc,0x3afbe99a,0x383660d0,0xbb563ed2,0xbb8f8794,0xbb809822,0xbb732465,0xbb1375f8,0xbaab10d8,0xba397995,0x397df0ec,0xb83fa844,0xb8c8c601,0x37621e2c,0xb8271c9d,0x36dce97c, -0xb6b96c42,0xb6716061,0xb67d1c98,0xb58a270c,0x3507a62b,0x37379980,0xb82e0e89,0x38515a4e,0xb985f895,0x3983024b,0x3b2d2648,0x3ba33495,0x3b3e0d53,0x39aacd7a,0xbb3c5b40,0xba8e0d8e,0x38ee3af3,0x3984449a,0x3af1fae6,0x3aa12173,0xbae2c502,0xbabd1a5e,0xba76ab1e,0x3a0b0a60,0x3ad64f9d, -0x3a4c7fa1,0x3ab1f309,0x3a1d55b4,0x3a6977d2,0x38375d58,0xb905ee5f,0xb7a279e3,0xb8188a55,0xb7c91691,0xb716c5d6,0x36e38930,0xb6e8beb8,0x36d961f4,0xb643fe27,0x3637c69b,0xb769a486,0x373d1b8e,0xb85394ac,0x384b3f46,0xb9089333,0x38a56b5d,0x3a570615,0xbb29ca5b,0xba78e0a9,0xbab26a53, -0xbbaf3ec4,0xbad0c819,0xb9ad1b2c,0xbac5edd2,0x3b025db3,0x3aa34bc8,0xba8adbb3,0xbb1b485c,0xbaf868c8,0x3a813e2f,0x3a97abdb,0x3aca9a8b,0x3a167a96,0x3a01914a,0x391d4c0b,0xba082d2d,0xba52db58,0xb8f17b03,0x376b96bc,0xb86ca766,0x37972d10,0xb731bceb,0x36d1a1c2,0xb65ad89f,0xb6bdf96e, -0x3623c086,0xb5b59a20,0x368f1227,0xb77e3268,0x366e59f3,0xb83a9319,0xb84aadb4,0xbb7be163,0xbc3e1544,0xbb8c7e1b,0xbae80d5f,0xbb0b08bb,0xbb3392d3,0xbb901f26,0xbbbf814b,0xbab9c945,0x3ade3d34,0x3b69afab,0x3a4dd5a9,0xbae28731,0xbb28a782,0xbb4d735c,0xbb400efb,0xbb34d344,0xbb08e2e2, -0xbae490c0,0xbab92afc,0xba3dd7c3,0xb97a30bc,0x389f4259,0xb87743e9,0x361ae66a,0xb7a5e961,0xb612bc1a,0xb6b8f4f0,0x36118151,0xb70e422c,0xb62c237e,0xb7d2e4a5,0x371383cd,0xb89b7322,0x3847ea7d,0x392be162,0xbafd9a43,0xbb7cc784,0xbb190bbf,0xbb2a2b12,0xbb698977,0xbb3b0098,0xbae86c29, -0xba5c5f8c,0xbae558fc,0xbb42d60b,0xbb760ef9,0xbb319de2,0xbad90834,0xba8912d1,0x387fe257,0x3a0647f1,0x3ac7f894,0x3aebe778,0x3af15e92,0x3ad29682,0x3a4744f4,0x393d4486,0xb8fe920b,0x37ef9771,0xb6040b60,0x3793e748,0x358f74ed,0x36200b51,0x33938ea3,0xb7868406,0x37bf8f95,0xb8362da2, -0x388d9a78,0xb9172fde,0x392a4c5e,0xba6d36c3,0x3ab94418,0x39051e52,0x39ceba3f,0x3a76dfef,0x3999e7d6,0xb90e3faa,0xba82cd8b,0xbac59d87,0xbad83646,0xbab48174,0xba82176b,0xbadcdb04,0xbaed63c8,0xbb13d97f,0xbaca2487,0xba7c9211,0xba2804ba,0x38f22c58,0x3a2120ac,0x3a8d0a54,0x3a8cd24b, -0x39fb2072,0xb8c16d0b,0x365a917c,0xb86fd65b,0xb8401a32,0xb7c288bf,0xb796c794,0xb547ea95,0xb80d5152,0xb77f1f35,0xb8baf879,0xb801e31c,0xb92336b1,0x392cb17b,0x39c47086,0x3a0591ae,0x3a42c7ec,0x3a08612a,0x38451298,0xb87593f5,0xb9a42820,0xba039b18,0xba828cbf,0xba9d1845,0xbad8641c, -0xbaf12eaa,0xbac7e59d,0xbaadb3e8,0xba95a0cc,0xba46e689,0xb9fc71c0,0xb9a18d6b,0xb8d7acd7,0x397adf9e,0x39d167bb,0x3921da63,0x3845d2de,0xb8eb35fd,0xb80085dd,0x38818568,0x389a4e5f,0x378d5001,0x38151a1f,0xb7757693,0x3755836e,0x37d671fd,0x38280c0d,0x38ab66a9,0xb8049093,0xb8bd6ca1, -0x38ea0c87,0xbab6be6e,0xbab4d8e8,0xba91d3d1,0xba859de3,0xba84bda4,0xba8a076d,0xba84f4d6,0xba6e3acd,0xba307c75,0xb9d17c60,0xb96908f4,0xb9a5e527,0xb9861a14,0xb93a3c52,0xb9488373,0xb96bf97c,0xb8db701b,0xb786aa49,0xb9875bd2,0x38b6f832,0xb9450892,0xb8d22289,0xb996ea20,0xb9b6825f, -0xb9692c6b,0xb93c020d,0xb898331c,0xb86c6459,0x3764f5c6,0xb758a42d,0xb9102fc8,0xb8c88fd4,0xb9d8a015,0xba34ab05,0xba65ebee,0xba849e85,0xb9ea6b89,0xba0e9130,0xba25512a,0xba143cae,0xb9d3240c,0xb9ec75bf,0xb9b1c87b,0xb9dda77b,0xb990748f,0xb933db7f,0x3708ab8b,0x3997907d,0x3a133cd2, -0x3a493ffd,0x3a6d7251,0x3a7c747f,0x3a8950db,0x3a97b977,0x3ab288a0,0x3aa31f57,0x3a8a1231,0x3a2b63c6,0x39d521e5,0x3936d9e9,0xb8453c9b,0xb982bfe8,0xb9a4142e,0xba1b438d,0xb9ff1033,0xba3a5d5b,0xba249677,0xba471e38,0xba6cf6b7,0xba1b84b5,0xba1a28c9,0xba6a0f90,0xb9e9b816,0xb9c32e28, -0xb99dff6d,0xb9721517,0xb944690f,0xb9472fe3,0xb917fa51,0xb8e31f87,0x36a2bfb5,0x38a7cbc5,0x39054bac,0x390ca6b6,0x3905bdbc,0x3924c2c8,0x38f204ed,0x38fa8b7f,0x38d05aa6,0x388ab374,0x389721fb,0x38e23c4c,0xb7b4b3d3,0x38fe7aab,0x3a21b0d2,0xb8c04f24,0x3847f707,0x3a103771,0x3a125e39, -0x39fff54c,0x39d94fe7,0x39c7f25f,0x399cccb6,0x397f9386,0xb9263dcd,0xb99ca2c9,0x396f3522,0xb96f4c40,0x395ec68b,0xb85749e4,0x3986d6fc,0x38e3b491,0x38412c78,0x38aa3f76,0xb80fc478,0x3901efb0,0x393a1f00,0x399591ea,0x39045184,0x38572765,0xb8b13ed7,0x38f0cd36,0x38bd31e1,0xb7d163ef, -0xb8e6e5b8,0xb90fde22,0xb9010ff2,0xb82fdd25,0xb82b3db7,0x37edb821,0x36b1045c,0xb9a1e551,0xba9a17b9,0x384c516d,0xb9bacaf5,0xba8b5416,0xba95a339,0xba900dac,0xba6814e1,0xba7a1579,0xba66fea2,0xba339761,0xb9a68323,0x390ffaec,0xba8847bc,0xb9e28c57,0xba61368a,0x39845414,0x396f313e, -0x395c942b,0xb951bd21,0x39da0d66,0x3a358b76,0x3a8f914e,0x3a018fa3,0x3936aa4f,0xb9b0b5a1,0x3993c93f,0x39e26763,0x38fd6be0,0xb93628a8,0xb9c29421,0xb9834f82,0xb8cafdcc,0xb82880b4,0xb8c9f15c,0xba1f8618,0xb9d8caea,0xba0dde9b,0xb9fa2784,0xb95e3c8b,0xba042e1a,0xba065167,0xba1225af, -0xb911d3f7,0xb9432726,0x39336544,0x39213f99,0xb9ab7005,0xb9bc6013,0xb9d3458e,0xb9c23dc9,0xb8a7ee5e,0x39883fc1,0x398c08d0,0x39bd4891,0xb998770f,0x3a308820,0x3a83e9be,0x3af52679,0x3a3c0f8c,0x39ae0557,0xba2b1f63,0x3a4ace76,0x3a39dff9,0xb8dff059,0xba2b3061,0xba5b9e28,0xba3aca0d, -0xb9bc767b,0xb892bb78,0xb9ea9ef5,0xba0adaaa,0xb98828ec,0xb8d8be30,0xb9e61072,0xb8baef12,0x3965c85e,0x39438095,0x39b991c0,0x3944efb7,0x39446743,0x388db555,0x38fdac1d,0x3912ef51,0xb9537d28,0xb9aeaa79,0x396b6915,0xb6ff1a7d,0x393fa0ea,0x3a2c09d3,0x3a00fc67,0xba21a773,0x3a7b2678, -0x3afc656d,0x3b5dda11,0x3abda6e4,0x3a02bde5,0xbabc7412,0x3a70eba1,0x3aa616ac,0x39ec24f3,0xba2ba414,0xba931baa,0xba46044b,0xb9b80574,0xb8d587e1,0xba2f3f1b,0xba07f6c9,0xb9c516f8,0xb964659e,0x398f99ec,0x38e4f8b5,0xb78659f9,0xb7637048,0xb8b407e4,0xb868104f,0xb8126403,0xb7478760, -0x37a210f7,0x36c66df7,0x3888b1ac,0xb8b72567,0xb98654d6,0x38ea5424,0xb90fae3b,0x399bdb63,0x39a04765,0xba3b5d8e,0x3a567c84,0x3ad6f870,0x3b607d33,0x3ac925ba,0x39b23a10,0xbaa56e10,0x3aaf661a,0x3ab45521,0xba217619,0xbae28c05,0xbb059cec,0xbadd3de6,0xba44278e,0xb9dbbd0e,0xba4e150e, -0xba62eef2,0xb842f05e,0x393a0408,0xb7775cc7,0xb84118c6,0x37bc0224,0x37709f29,0x38349c6d,0x3805e1fc,0x379ed8ce,0x377878e5,0xb630e073,0x37e09573,0x37f8490d,0x392e9461,0xb809c330,0x3a9ad85a,0x3b2ae66e,0x3b079ab1,0x3b3b8029,0x3baf83a9,0x3b862743,0x3b7bfc84,0x3b37c6c8,0x3b507393, -0x3b365720,0x3aee6c07,0x3a9d5e14,0x3b1053f5,0x3b6d58a2,0x3bcfbc42,0x3bb2c60e,0x3b565ada,0x3aeedb6e,0x3a344cb0,0x39390b0c,0xb7897b16,0x39c4387e,0xb8d063cb,0x38997b99,0x381536b1,0xb5f2049a,0xb73bf3eb,0xb79bc916,0xb79359ae,0xb5bae9f4,0x35ea3818,0x37c3cc14,0x355594d9,0x3897124d, -0xb914622e,0x39538a2b,0x39e3e381,0xb90f19b8,0x3ab0fd78,0x3b14d95a,0x3b1656b4,0x398488e4,0xba9e2fab,0xbad1786c,0xb92358ad,0x3aa1c079,0x3b2d340a,0x3b164cd2,0x3a4ea19b,0xbb03c4eb,0xbb4270ab,0xbb1a9d54,0xba90c45b,0xb9f263e1,0xb8031980,0xb80c88b8,0xb6fbf731,0x3801dcca,0xb60e3ab4, -0x384cf134,0xb7d8a282,0x374e7d78,0x3713da3b,0x374fcc11,0x3717b370,0x36e85ab8,0xb640135f,0x378e38f8,0xb7905b03,0x38a018e8,0x379bf759,0x3985b0d4,0x3b29994c,0x3b9d22ca,0x3b34c358,0x3aa39d82,0xb9ffd022,0x3b065309,0x3b5d7bce,0x3b69e37a,0x3b67bf18,0x3b08d2bb,0xba490a7b,0xb9242939, -0x3a33fe55,0x3b125e3c,0x3b53df16,0x3b10764b,0x3b16eae0,0x3ab3d4e9,0x3ab7d073,0x3a50b872,0x3963a247,0x3845e27c,0x37bef36c,0x38152e08,0x37bd1d2c,0xb6a1d17e,0x34c71b75,0xb6c924e8,0xb622296d,0x36091b25,0x3689b3af,0x362112a0,0x37a0a32e,0xb681385b,0x3899527d,0xb97a881c,0x39bde2d2, -0xbb04f48b,0x37d54444,0x3a5a4989,0x39f435c0,0x3b3a966a,0x3b836e45,0x3afe3035,0x3b726e33,0x3b232b9b,0x3a685a34,0xb8c76c66,0x39f84469,0x3b3971df,0x3b42ff13,0x3b4132b5,0x3ab23c89,0x3a94022c,0x3a25af18,0xb989c5e8,0xb9a3d122,0x36b9fc87,0x38374f7a,0x3538fffb,0x378021e6,0xb64adf1e, -0x36f2530f,0x331469e5,0x368c2740,0x35caa803,0xb511e691,0x374f1ed4,0xb51e77bd,0x37eb066b,0xb71dc5a9,0x376ef855,0xbb613393,0xbc1038cc,0xba9cd7a8,0x3af80d56,0x3b8be061,0x3b1c83ae,0xb9a52bbc,0xbb8f89c3,0xba396f47,0x3aeabb07,0x3b99e0ed,0x3af2ffee,0xb9e5fbf8,0xbae01242,0xbaecd2f3, -0xbac26abe,0xbaa81e59,0xba731cb4,0xba879286,0xba86d56d,0xb9fdd7d8,0xb8119696,0x38a96856,0xb70fcd37,0x3774e012,0x3586700a,0x366e64e0,0x36a50f39,0x36710498,0x36ad89de,0x36c123b9,0x36bcc0d5,0xb705e66e,0x385d8dc3,0xb8aa6bce,0x39f08eec,0xbb14375c,0xbb6f2f1f,0x3b231c52,0x3b2e4211, -0x3a6c9789,0x3acc2e8f,0x3b1094b3,0x3b10796e,0x3a4bd3b9,0xb9e1c621,0xba4606ee,0xba15ffdc,0x378df302,0x39c31652,0x3a2d0c77,0x3a2406e7,0x3aafb52e,0x3aca4c27,0x3ae5d8d0,0x3afa865d,0x3a711ef9,0x39472f04,0xb89efbff,0x38337da9,0xb7067728,0x37842780,0xb5eb67d2,0xb6485b31,0xb6a5b1c1, -0xb571970f,0x36a6024f,0x3728ff15,0x38729f09,0xb83d088a,0x38fde007,0xba11f06a,0x3a1f3bd6,0x3ae09d80,0x3afc5260,0x3b13b6bc,0x3af33419,0x3aa87bb6,0x39c08a83,0x3958116d,0xba53c069,0xba8b0c0c,0xba4f77e5,0xba95e5a7,0xba6cd8f1,0xba9743c1,0xb9d4a34c,0x38e7020b,0x39083291,0x3a39999e, -0x3a75b257,0x3a816205,0x3a8b289b,0x3a051564,0xb7cd0ae4,0x3850bc3d,0xb75130b2,0x37aa3bac,0x3757bbf1,0x37b91ef5,0x37fb9400,0x37d64d47,0x3827a158,0x3766bf4d,0xb726d6e0,0x37feef52,0x3804d49c,0x3a4ed83d,0x3a6e8d3d,0x3aa6030f,0x3abad71e,0x3a61c2db,0x3a063e39,0x3a01551d,0x3a0a73d3, -0x3a06989c,0xb932ebda,0xba574373,0xbaa0f6f1,0xba7b7e9d,0xba5e6fca,0xba384ad2,0xb9936945,0xb91c4dad,0xb8817863,0x3928035e,0x39e0c7db,0x3a1dacba,0x398a17e2,0x37d67acb,0x378e6db0,0x3834b515,0x385c89a2,0xb5e52e9a,0xb751ed39,0xb81c5bea,0xb8269956,0xb7ad132f,0xb802c1de,0x370d3a5c, -0x38e92b0a,0x3848cff3,0x37a19506,0x39be2898,0xba70b5ef,0xb9e5d3b4,0xb9d60fb1,0xb9334123,0xb809ae69,0xb6b1638f,0xb7414fcd,0x38eeed7e,0x398af5b5,0x39f17e0f,0x3a0509d0,0x3846872b,0xb94fb4f2,0xb9ca0d7b,0xb9cafce9,0xb9ceca17,0xb9572eea,0xb845a7e0,0xb982e528,0x39729bc4,0x385e0046, -0xb8c59f1d,0xb9059aa4,0xb9425412,0xb81f4447,0x387cddb1,0x38600112,0x391d45f2,0x38eb0cce,0x391904e7,0x3912d549,0x38a56457,0x3739f7ce,0xb9d1e08f,0xb98d80e7,0xb9d30ebe,0xba3e0363,0xb9286470,0xb8f516c6,0xb814c19b,0x389e2dae,0x393cab3f,0x39d02f3b,0x3a036b28,0x39966186,0x38e5957d, -0x389d87a8,0x3981bcbf,0x39f36db2,0x3a0f8da6,0x3a465cbe,0x3a557380,0x3a576b3c,0x3a73b81f,0x3a85d668,0x3a8bb041,0x3a7b463e,0x3a31948b,0x39f6dd10,0x398b7b2c,0xb4b33822,0xb90a0c01,0xb93e3719,0xb976db7f,0xb9bef0f9,0xb9e3145f,0xb9bd2b39,0xba2f3ef9,0xba103ad7,0xba0acb4a,0xba5cdc29, -0xb98be449,0x3906dfcf,0x3870c515,0x37ed6cf5,0x390dd3c8,0x3950541c,0x395ce504,0x395ff7dd,0x398d93ae,0x39ba284e,0x39e631c0,0x39eb98ba,0x39c95966,0x3995c801,0x396bbdcb,0x394bba74,0x395904c6,0x395f5fa7,0x3965d752,0x397639e5,0x39841a9d,0x39c935ed,0x398eeacb,0xb7fa5979,0x39cfbe81, -0x39869957,0xb933bcaf,0xb966ea00,0xb9571906,0xb96a9b40,0xb9917cd1,0xb998d7d8,0xb986eaca,0x388122dc,0x394ecd6b,0xb9aa383c,0xb8edecf2,0x3a175f97,0xbaa0c854,0xba6efc7c,0xba93b4f0,0xba558739,0xba4ed132,0xba5a2bc4,0xba5b0ce1,0xba5bedb9,0xba40c77c,0xba635f22,0xba76895a,0xba8938e6, -0xba5c127d,0xba5f73e0,0xba7c32a3,0xba878b7c,0xba9044b2,0xba9144fd,0xba87626d,0xba718394,0xba8123de,0xba16cb44,0xb93b0e39,0x39eb823b,0xba42f1fa,0xb99f31e5,0x39c764ac,0x39713c81,0x395e9b96,0x39938bc4,0x39b9863c,0x39d28c4c,0x39eb48e1,0xb90fe673,0xba4c8da7,0x39a0eba1,0xb872f81e, -0x39f88e14,0xba6da1fd,0xba57ceb8,0xba5c5b0d,0xba870907,0xba86b080,0xba7e4ccf,0xba17f0c1,0xba8cbeff,0xbab55590,0xbae5284f,0xba944c54,0xba81c001,0xbaad91e2,0xbac61617,0xbae314b8,0xbad4479b,0xbab23403,0xba9e50c4,0xbaae1ef7,0xb9acbf4e,0xba163a71,0xb9a21e24,0xba1be082,0xba410739, -0xb91f0207,0xb9e5d7f2,0xb9908ade,0xb8d5f585,0xb8e899bc,0xb98f247f,0x38f8a36f,0xb9836ad6,0xba1151c9,0xb9aa5e65,0xb9f63d2a,0xb99a738c,0xbabf218b,0xba2f2815,0xba2dd086,0xba64d4a6,0xba6e65b7,0xba713779,0xb8dd33e6,0xba99656a,0xbabdb583,0xbb16b27f,0xba629efd,0xba6a8447,0xbad0b146, -0xbb0c9f1a,0xbb1bc007,0xbb23bf6b,0xbaef38b6,0xbace4a80,0xba96f93f,0xb8df5a2f,0xb9ac71b5,0xb9fdceb2,0xb936ca5b,0x38f4611d,0x37ab5476,0x389c900a,0xb927075f,0xb6c808f7,0xb8bf71eb,0xb73f109e,0xb822d2a7,0xb815606a,0xb9772f26,0xb9853f7b,0xba46b083,0x39427715,0xba00e982,0xba1676e0, -0xb9d9f968,0xba8bef51,0xba6f0f6d,0xba4defe6,0x3a2162e2,0xba9e096f,0xbafc7ee3,0xbb61ecca,0xbaa36085,0xba4ea447,0xbadf9098,0xbb2dbfe9,0xbb474d9a,0xbb362f37,0xbb086204,0xbad0fc74,0xbabeaf9e,0xba2f0a54,0xba3be4cf,0x386f967d,0x380e05f9,0xb8102ee2,0xb8ccb873,0xb72a4614,0x36c95e84, -0xb5aa45c1,0xb76dda9e,0x37378fea,0xb881759e,0x3803fce1,0x38b35af7,0xb8841981,0xb9f7fde7,0xba621996,0xbab29d84,0xba445315,0xb9d882c7,0xba39a6ba,0xba870a89,0xba509260,0x3a249c77,0xba99aec1,0xbb09c159,0xbb5fc6f1,0xba50b791,0xba300401,0xbb1a281d,0xbb6c93fe,0xbb86add1,0xbb89a987, -0xbb386662,0xbb0aa795,0xbac47e4b,0xb86fb666,0xb915600a,0x38b27fa6,0xb8f3fda5,0xb49df3c8,0x37c28020,0xb6a8f904,0xb70bc3cd,0xb72cd26a,0x35cc6fc2,0xb79541cb,0x37c0d813,0xb8447cde,0xb8870f44,0xb8686aa7,0x39297ec8,0x3aa295ef,0x3a9e53d4,0xba1d4721,0x392d9fb2,0x3b1ea6dc,0x3aa7ef7f, -0x3a0efe5c,0xba7a01ce,0x39c4e394,0x3a3aad5a,0xb983661e,0xba2c88e9,0x39ea7c14,0x3b1920b7,0x3b9d02aa,0x3b8d54fe,0x3b1c2373,0x3a6d8cf1,0xba16959d,0xba6ac0ae,0x37e6eedc,0xb8c058a7,0xb76c3a86,0xb7c5a59b,0x36a77257,0xb7bae227,0x3662fd01,0x35ac68f5,0x3682d31d,0xb6fc132c,0xb5ef90b5, -0xb7c22cbc,0x3720a724,0xb80b71af,0x3928b2b3,0xb978e845,0xb7b8f76a,0xbaaebc9f,0x39c1b9ce,0x3ad6cc20,0x3b177b77,0xb9432ca2,0xba9c96d5,0xbac95505,0xba3364c8,0x399aa71b,0x3ad7e4cf,0x3b0a3596,0x3a807a8c,0xbaeb3ce1,0xbb689831,0xbb806bd7,0xbb89fbc7,0xbb272661,0xbaebf37e,0xb9bae077, -0x39dee810,0xb8dc1620,0x377ff64e,0xb84172b3,0xb6f16606,0xb55e3369,0xb4af7620,0xb6ac276e,0xb5827f04,0xb69ee7f5,0x360f17df,0xb748bce3,0x373e4997,0xb854d6a6,0xb861ec59,0xb8930e2d,0x3afbed01,0x3b63006e,0x3b019b2d,0x392e770b,0xbb1e92e2,0xba9b580e,0xba0b9dc3,0xb96f33cc,0x3a552e89, -0x3a0b871d,0xbacd25f3,0xbae15ed2,0xbac11c4f,0xb9c32e61,0x3a710628,0x3a090f5d,0x3ab051df,0x3a1510cc,0x3a183ed7,0xb80ac29b,0x36f7cdab,0xb82bd1f3,0x37abfb17,0xb83b9e75,0xb680e832,0xb6ac83a2,0xb5621515,0xb60b02d7,0x34a9584c,0xb6a33170,0x364cc127,0xb79e6312,0x37b6ed5c,0xb8b55982, -0x39065a02,0xb99e66fd,0x39b1c7bb,0xbae875c4,0xba6e3f66,0xba8af99c,0xbb6d2b37,0xbaeba2ba,0xba9158d0,0xbac5df13,0x39e43e96,0x39958a0f,0xb9909e28,0xbb111782,0xbb032b45,0xb94c1807,0x3a413029,0x3ac4129c,0x3a61bc35,0x3a3326ca,0x37f84a7b,0xba222caa,0xb9d84c05,0xb65f7c08,0xb7dc41eb, -0xb6a9999e,0xb6c599e8,0xb54d1051,0xb6578ffb,0xb5d52d60,0x33dde6ea,0xb6a92d46,0xb5aa640a,0xb73807c1,0x366ac141,0xb67a597d,0x373ce66c,0xb92abf70,0xbb2186bf,0xbbe92849,0xbb4b0781,0xbac56aaa,0xba20a2dd,0xbab43175,0xbb2ecd6b,0xbb8fa4cb,0xbaf5a57c,0x3a2b2ceb,0x3b734ef2,0x3acb64d4, -0xb9f6072e,0xbad2a3cb,0xbb186611,0xbb1f5687,0xbb343447,0xbb05a4b8,0xbae2a18a,0xbaa21293,0xb9dce75a,0xb8072635,0x36537466,0xb7f1be85,0xb717d769,0xb66c20d6,0xb62a016b,0xb68702aa,0x3481874b,0xb4af2a9b,0x35ae9971,0xb620cb64,0xb6af5651,0xb818b31a,0xb8ca0d5f,0x3a101702,0xbad63c1c, -0xbb9e7abb,0xba54f267,0x38f277d7,0xbac99e56,0xba84248b,0xba4aea66,0xba293dcb,0xbaa64135,0xbb0eecab,0xbb370326,0xbb0a954f,0xbacfc7b4,0xba94a3c9,0xb86cc114,0x39b33d00,0x3a93df02,0x3ab92df8,0x3aaeb460,0x3a960f07,0x3a2b7c52,0x37d40412,0xb86351e5,0x381524ed,0xb674392a,0xb6c20826, -0xb5b5f22d,0x357f15dd,0xb668ca6a,0xb703fc6f,0xb707b5d4,0xb7f32e87,0x369f5ab3,0xb7b0826f,0x394ef029,0xba0cb51b,0x3ad95d6c,0x39795eb5,0xb760cb7d,0x39987d1d,0xb8fc12b8,0xba0eff67,0xbaa15eee,0xbac5a836,0xbac01226,0xba96d1b6,0xba460394,0xbaabf04d,0xbaa733e5,0xbabffc56,0xba6af06a, -0xba038e82,0xb9faf89d,0x394bb30a,0x3a1b3686,0x3a9606d6,0x3a83f3e5,0x391e04d9,0xb8bd4a2e,0xb80bd495,0xb81c50b3,0x37169f27,0xb7880728,0xb75eca0b,0xb70b23d6,0xb6896cb2,0xb63b14c5,0xb721d9ca,0x37968854,0xb8cb009f,0xb80acd15,0x3910e6a6,0x3a77c2b2,0x3a6833de,0x396b7ad5,0xb8518d3b, -0xb9b611e8,0xba018ae0,0xba267b29,0xba7986d8,0xba8b06c1,0xbabc7930,0xbad98f8a,0xbac057ea,0xbaaf7b8a,0xba92c823,0xba4478b9,0xb9f9739e,0xb9c7a68b,0xb96e9457,0x359cd55a,0x3924a5d7,0x391262b3,0x38873e98,0xb7ff225c,0x38e50e40,0xb782e059,0xb75189dc,0xb72131f0,0x37b2fba3,0xb7840dcf, -0xb7b2cb21,0xb803d20e,0xb849c427,0xb74eeba3,0x37923709,0x391b4b11,0x39de01b4,0xba12fc4e,0xba4cc504,0xba3489c9,0xba20d3a1,0xba3812b9,0xba498197,0xba5e5764,0xba6308b3,0xba40e7c7,0xba1064a7,0xb9dd235c,0xba0dc5d4,0xba0ee1fc,0xba0c84d0,0xba1ad218,0xba281238,0xba09d78e,0xb9d4a7e6, -0xba4a4de8,0xb98fc4cd,0xb9a1d8b7,0xb984212a,0xb9965a03,0xb91e413f,0xb7445e1b,0x3708ad0e,0x3807d776,0xb8aedd0e,0x38764d95,0xb5d11129,0x388c5478,0x38c80d9d,0xb726b3a8,0xb8b54fda,0xb989a874,0xba0199d9,0xb9260338,0xba10f8c9,0xba298fbd,0xba33b4d8,0xba2824cf,0xba3ac5c1,0xba2f25f7, -0xba447563,0xba2cebd3,0xba1efead,0xba0373df,0xb99c0bfc,0xb880dfd3,0x38f1c388,0x399fc6ae,0x39cde4d4,0x39ded91b,0x3a1165b0,0x3a49ad6b,0x3a252b8a,0x3a3733c0,0x399aac37,0x39060eb3,0xb8f6e5ae,0xb927ae6f,0xb9478ad3,0xb936a8a6,0xb97c9a79,0xb95e483b,0xb9b6ce99,0xb9c6ced0,0xb9e17f76, -0xba237b13,0xba065ae7,0xb9ccd4d1,0xba3d912d,0xb9bd9c3c,0xba146069,0xb9fa2be3,0xb9e42aa7,0xb9d9a064,0xb9e20f17,0xb9df763e,0xb9e3fc96,0xb9b9a29f,0xb99c48ba,0xb9887caf,0xb9885ee4,0xb99521e6,0xb998a6c1,0xb9af5582,0xb9b0f77d,0xb9b8ec37,0xb9c143af,0xb9b8bc1a,0xb9c5c18a,0xb937fde5, -0x3929e2c6,0x3a17ddfe,0xb920d76e,0x3901e4f2,0x39ef8df1,0x39df4780,0x39b8b1f3,0x3996efff,0x398bf692,0x39815c43,0x394ff9c8,0xb896eb65,0xb9a36e98,0x399ae31d,0xb7708911,0xb9ae5462,0xb9401ce2,0xb921cc77,0x396b2e04,0x362f9acf,0x378c41aa,0xb86921ae,0x37cc1b60,0x388b271d,0x393e41ec, -0x383c71f9,0xb796741b,0xb9082375,0x383ba278,0x3834d302,0xb82648c2,0xb8ae93f5,0xb8f6e64c,0xb923868a,0xb8b1ecf7,0xb8bdfa6a,0x386cf63e,0xb9da8f63,0xba475461,0xba93bb67,0xb99c23da,0xba4e3660,0xba8e933c,0xba97f991,0xba92ba10,0xba73d8c7,0xba849ecc,0xba787710,0xba4f8904,0xba47a0ad, -0xb956db9b,0xba897ca6,0xba728247,0xbab9962a,0xb8c9e745,0x38eb3f42,0x383106cc,0xb96a8744,0x384fc7d1,0x39858518,0x3a3fb458,0x397e9fc8,0xb6b3f2b9,0xb9dfb3a4,0x383fac68,0x39447827,0xb7ee8384,0xb90a26fd,0xb99897dc,0xb9ac0590,0xb95e2a3f,0xb8c23cbe,0x38127fbf,0xba5f0f0c,0xb9f03921, -0xba397c6c,0xba38748f,0xb961f865,0xb9bacf8d,0xb9a5ab2a,0xb9cd3769,0xb946e41f,0xb99943db,0x3870e3fb,0xb8528229,0xb9f2fcfb,0xba188400,0xba2c4332,0xba0d31a6,0xba39d438,0x38c46150,0x3942771f,0x38eaa74b,0xb982bfc7,0x392e7c4e,0x39adcddf,0x3aa5b901,0x399d8f8f,0x380c3c7a,0xba4c766b, -0x39c1942f,0x39d3d4a2,0xb92bfd24,0xb9d5892f,0xba236cbb,0xba4f6512,0xba09532b,0xb8ebadc8,0xba0295d7,0xba58d0db,0xb9a7767e,0xb98e5373,0xb8d9afdd,0x38359c2c,0x388dd30f,0x38df6ee3,0x3996435a,0x381ed555,0x3916f46a,0xb4c6e88a,0x38231792,0x390a4ea7,0xb81a365f,0xb9f14fd9,0x37d48cf3, -0xba464de5,0xb9d23cb1,0x3a05b6f9,0x38fdf2e8,0xb9f0d3bb,0x390b1a97,0x3a39c32a,0x3b189fd4,0x3a4708f9,0x3894d2a4,0xbac05501,0x39874f30,0x3a288c10,0x38029a12,0xb9d77408,0xba53dd13,0xba6f896b,0xba11e053,0xb9013440,0xb9eeab5e,0xb9fa8439,0xb75fa611,0x370eb123,0x3922266f,0xb8391505, -0x37acb188,0xb8591d8f,0xb88ccab9,0xb82f89ec,0xb6a614e6,0xb7c51895,0x37ef8193,0xb8bcb2c9,0x3884e510,0xb7be02e9,0xb977b103,0xb938ee42,0xba1308cf,0x39dca1aa,0x37749499,0xb9c07f0f,0xb724b2bf,0x3a08fb11,0x3b11a648,0x3a3353c2,0xb92ae3e9,0xbab58ee5,0x3a27528f,0x3a6a4440,0xba036760, -0xba8ddee3,0xbac577fb,0xbaed8853,0xba8e0003,0xba105f84,0xba155c62,0xba802f2b,0x38ed4956,0xb824356e,0xb683c313,0x38107537,0x371618cd,0x38136011,0x381c5bfa,0x37fddff4,0x3715fcf2,0x37c79c34,0xb6f4d27e,0x387d5b6c,0xb7dc7c9c,0x38eb64eb,0xb85067f4,0x391eb2e5,0x3aac2a0a,0x3aa68e4b, -0x3ac77b0b,0x3b5e53d0,0x3b2f6017,0x3b1bffe7,0x3a8e8391,0x3b350e4d,0x3b3c1657,0x3adee8a4,0x3a94431b,0x3ac2731c,0x3b1eaa00,0x3b975d50,0x3b8e0151,0x3b6f0e9a,0x3b1e8fb0,0x3aab180d,0x39cc5f32,0xb7803c84,0x3965a25e,0xb8988a98,0x38b0d9bf,0xb8014c4c,0x36e91312,0xb785b989,0xb779bbd1, -0xb73aba94,0xb66ab2b0,0x352f477a,0xb53caca6,0xb4b4781c,0x3725f175,0xb91a5424,0xb8deee19,0xb9189a2d,0x384e6702,0x3ab8ea84,0x3b014e3f,0x3b0ba2cc,0x39e228ac,0xba25cfca,0xbabe32f9,0xb9c6f29b,0x3a18033b,0x3ad314b7,0x3afcf285,0x3a8aba23,0xba939a1b,0xbb17adf4,0xbb1a93de,0xbafa2538, -0xbaaaa4bc,0xba08d758,0xb997372c,0xb973bdeb,0xb6a0b09b,0xb6d15eba,0x37cf5681,0x37087022,0x37722558,0x37187e19,0x370a1739,0x36e3fb56,0x36070141,0x36da99a0,0x36706fad,0x350375b6,0x36a32532,0x38bbc114,0xb694a94f,0x3a9b24ef,0x3b58b745,0x3af2302d,0x3a44ae47,0xba646d4c,0x39b869ea, -0x3a98b84b,0x3aefeefa,0x3b29b385,0x3b08544a,0xb92d6be4,0x35ae4608,0x395da684,0x3a9a81ea,0x3b16a00e,0x3ad4a025,0x3aff84ca,0x3a8bd832,0x3a9e5970,0x3a0653a7,0xb86d72e0,0x386689b0,0xb83f6dd0,0x3832f473,0xb62cf596,0x35fbb316,0xb699691f,0xb4701d5a,0x3430e886,0xb5957036,0x371103ca, -0xb7a5bf2a,0x38710378,0xb8b6354c,0x39349a25,0xb9dab990,0xb89d114c,0xbabd5e2a,0xb9e7cc97,0x3817a7b2,0xb807bacc,0x3a6a5c93,0x3ae76439,0x3aa65f19,0x3b0f82c8,0x3ad6be60,0x3a7677ca,0xb9060413,0xb7d45348,0x3ab00a37,0x3b081eef,0x3b21a714,0x3ac294f6,0x3a922594,0x3a5047bf,0xb9b2dd28, -0xb9a465d6,0x38d85995,0xb796954e,0x37824d83,0xb65201c0,0x36a4e852,0x361e0777,0x356613b3,0xb676c0b4,0x366bb184,0xb61cd162,0x371a39cd,0xb7457f58,0x37f50012,0xb7b99f5e,0xb6d12263,0xbae86196,0xbba7f5c3,0xbabd4152,0x39091d35,0x3b67354c,0x3ac48d74,0xb996ceae,0xbb3847c0,0xbaeb2293, -0xb8d47503,0x3b5dfe3d,0x3acb245f,0x39109b37,0xba9f824b,0xbab4a9e8,0xbaa80b0e,0xbaac1a13,0xba636583,0xba5556fc,0xba6df119,0xb95d1829,0x38d0a93e,0xb7fedae8,0x37b01a86,0x366144e8,0x36d2ad2c,0x363398dc,0x371b3894,0xb5171852,0x373b5b1b,0xb71054ee,0x38021f65,0xb8366194,0x38ea7790, -0xb9826993,0x3a177a7a,0xbb28edf7,0xbba6c690,0x3b281d35,0x3b4f5717,0x3ad427a4,0x3aef33fb,0x3b01712c,0x3acdb159,0x3a0cfc99,0xba05a5a0,0xba8e275b,0xba8e3f03,0xba1e45f4,0xb9c008db,0x394bca88,0x3991a9cf,0x3a751367,0x3a7af77d,0x3a997d66,0x3ab5272f,0x39845af3,0xb9057af8,0x3845d069, -0x364fd1f4,0xb69ec8cb,0xb42f3e2f,0xb7316afd,0xb6df2e9f,0xb77100e6,0xb642c013,0xb7473a96,0x36acd07b,0xb726b946,0x380641a6,0xb92231e8,0x39d770b4,0x39ae91b6,0x3a404f35,0x3a5073ad,0x3a5c0518,0x3a7edd12,0x3a1fa01f,0x38d50703,0x38bb983b,0xba19093e,0xba3c0852,0xb9f31d29,0xba480953, -0xba2f3f58,0xba50d7a0,0xb98ce654,0x3928a61e,0x3954d887,0x3a46ff7a,0x3a72bc65,0x3a677b30,0x3a68385d,0x3911f9b9,0xb8c0794c,0x37ccc572,0x371fc19c,0x36d0faf4,0x3813cdfd,0x37ce88ee,0x38008679,0x37d9c2b6,0x37b24175,0x380d7825,0xb7a61671,0x38067a05,0xb8629aa7,0xb8848c33,0x3a11ca32, -0x3a6bcde4,0x3a8c4a20,0x3a189cc0,0x3984db32,0x3961c46b,0x399d913a,0x39cd24ec,0xb8a7b2e2,0xba18dc21,0xba860e75,0xba666eb2,0xba55423b,0xba284861,0xb9a0d314,0xb91ae79a,0xb844d921,0x38b1b2b2,0x3999b8f8,0x39aa1618,0xb83ecc6d,0xb8b9ca30,0x3886839c,0x372822e7,0xb6407b01,0xb6508291, -0xb825ba80,0xb8585b31,0xb821782e,0xb80d2f59,0xb8237998,0xb7c48bd0,0xb7dd2da9,0x388db92a,0xb9362b47,0x39794a0a,0xba311192,0xb87f3384,0x3557731f,0x380a2220,0x38f3ea41,0x38bc864e,0xb6de6ee3,0xb818fe7c,0xb818eb42,0x388467c0,0x38a09e87,0xb9342602,0xb9b93719,0xba0dfa92,0xba0c6cc5, -0xba143045,0xb9cb2368,0xb9a8bb9b,0xb9e88202,0xb95dc8bc,0xb9a0a597,0xb97f4946,0xb91ac60a,0xb797e5f3,0x37faacbb,0x381ece69,0x3856e8c2,0x391d1e43,0x380454ae,0x391bf9dc,0x3861fbbf,0x38ccd381,0x38c7046f,0xb906971a,0xb8cdcfc9,0xb924ea6c,0xba2f7f2d,0xb92bbe93,0xb97c3af3,0xb95137d1, -0xb935dd25,0xb8c57792,0x3883e6ca,0x394042d2,0x38ae4dc9,0xb8585365,0xb8ec5692,0xb8757972,0x3860436f,0x38885517,0x398af1b2,0x39b2fa79,0x39b90d95,0x39f3c6ac,0x3a1e6d7c,0x3a1f8a8a,0x39bd6cc0,0x39187136,0xb8a239e3,0xb955d25a,0xb97dc954,0xb92696df,0xb9771d36,0xb929832e,0xb9a181e6, -0xb9980a15,0xb8e27f1b,0xb9e934bd,0xb9e20669,0xba025cbe,0xba4a9698,0xb9abf8cf,0xb9937525,0xb86e3661,0xb8b31916,0xb742a71f,0x37cb4a0c,0x37fa1ac4,0x364fd9c8,0x363f58b1,0x380a3097,0x38b77b2f,0x38dd45af,0x3893eba3,0x36f43b6e,0xb845512e,0xb88ef9e1,0xb88aa6b3,0xb88d66dc,0xb8810af0, -0xb859baba,0x36cde0e3,0xb8e32b00,0xb98ed1ac,0xb9b2edf6,0xb885d030,0xb9a2b447,0xba05b28d,0xba19e6e8,0xba134564,0xba13e918,0xba2a1f82,0xba261daa,0xba1a7fcb,0xb9d344fe,0xb927da7a,0xba09f5d2,0xba06ef34,0x380bc773,0xba21fcb6,0xb96c8d84,0xba3a60c7,0xb9e64d7d,0xb9d317c2,0xb9dbe1ed, -0xb9d1c7fa,0xb9cec45c,0xb9aa2f0b,0xb9e4f315,0xba03101c,0xba1d50f9,0xb9e9ee0e,0xb9eb6e6e,0xba08ca78,0xba136187,0xba1ea66a,0xba26ba18,0xba173be2,0xba03c843,0xba0f55c7,0xb810d204,0x393ba0e4,0x38b933da,0xb922e9b7,0x38cefbbf,0x38b9afcd,0x384353c4,0x3865a361,0x390422d8,0x394d5ed1, -0x397bc330,0x39a58866,0x393e7f5d,0xb94505f4,0x38d5280e,0x3977d858,0x39e46903,0xb9e69ccb,0xb9ee9a78,0xb9ce1f1f,0xba00e99a,0xb9df8d27,0xb9b39cdd,0xb890e41d,0xb9f32823,0xba3ae2e8,0xba872650,0xba20d495,0xb9fb88b3,0xba27d6e5,0xba3a6636,0xba684b10,0xba745886,0xba45dfc4,0xba2f1cf7, -0xba3dc9df,0x38a96948,0xb91c941d,0xb9775c63,0xb854f3ab,0xb8e4459d,0x385b0a31,0xb76bab37,0x38cb9b9a,0x38fecb8c,0x38f132ab,0xb8a17bcf,0x392d4f71,0x38aada10,0xb92dab7f,0xb8cdc056,0xb916d5c6,0x395d710a,0xba61ce0b,0xb9d28240,0xb97533b8,0xb9ac63db,0xb94c26d1,0xb90fcfb8,0x39c697b4, -0xb9e0bed2,0xba38d960,0xbab88ede,0xb9dbefdf,0xb9c81cf2,0xba503759,0xba8e8463,0xbaa30d27,0xbac73423,0xba8708cb,0xba789c70,0xb9ff3b20,0x39a789da,0xb8a8550b,0x37c6d559,0x39514308,0x386f5615,0x389ad9fe,0x3862228e,0xb89c919b,0x3891a9e1,0xb8286433,0x389321a7,0xb8194026,0x38639f12, -0x38dbac3d,0x38d60170,0xb98d1c03,0x39ba876d,0xb9d03d62,0xb9b84c9f,0xb8e81ada,0xb9dd4990,0xb9190d38,0x389a7b7b,0x3a872ccc,0xb9a28bd4,0xba76c4a6,0xbb0dd42e,0xba3236c0,0xb98db3ba,0xba2ee026,0xba925513,0xbac00a21,0xbad98157,0xba9f280d,0xba79e607,0xba2b2caa,0xb90c10db,0xb938335d, -0x38f796c7,0xb903f9ee,0x37e90fc9,0xb896e890,0x37968875,0xb74913a1,0xb5e843b0,0xb7fff886,0x370bf2b7,0xb7b75ed6,0x384a59e8,0xb7c550ec,0x39148f86,0xb8ede272,0xb9235101,0xba5634f8,0xba1ca572,0x360379f9,0xb90ac627,0xb629f152,0x39a32609,0x3a92dc1e,0xb95f4a83,0xba8af4f7,0xbb106350, -0xb9d06466,0xb9315741,0xba980991,0xbaea70a9,0xbb0ff6ce,0xbb2dd0e6,0xbadd7d4d,0xbab2ea13,0xba489e48,0x399eb5d2,0xb7de41f0,0x37f65cf2,0xb71b9179,0xb71170ad,0x374458b4,0xb7376e37,0x34d3d4d6,0xb6e704df,0x36e7813b,0xb73169de,0xb6393aee,0xb72c2c7c,0xb79a5b88,0xb885c5b5,0x3948dbbf, -0x3a6acb51,0x3ac2d035,0xba10340f,0x37e68b92,0x3ac766a5,0x3a95321c,0x3a52ea9c,0xba028970,0x3a786392,0x3a9d74f1,0x38573b41,0xba158338,0xb94e9d85,0x3a7d1748,0x3b441a0e,0x3b48ba6f,0x3b0803b5,0x3ab85037,0x39e913a8,0x3980df8d,0x39c07b6a,0xb9341fab,0x38963bfc,0xb86a63d3,0x379b5fe0, -0xb77fbc55,0x3694b9d6,0xb688b2ec,0x35a29515,0xb6cab24b,0x365d00b3,0x3621756d,0x36c47baa,0x36caf09e,0x394dabe8,0xb8ca66c6,0x38fa3f88,0xba4cc937,0xb7e2f536,0x3ab6c916,0x3b030727,0x3a4d316b,0x38c439ac,0xba694d33,0xb96ce95d,0x3985add9,0x3a78369f,0x3aef3b34,0x3aa1caaa,0xba3fdc7d, -0xbb11cb1b,0xbb344209,0xbb420e77,0xbaed61ae,0xbab5efbf,0xb92b93fe,0x3968c9d3,0xb7f0146c,0x38100d63,0xb7e3af30,0x36b3ed70,0xb72f75c0,0x365ef099,0xb5ade6d7,0x361e8a66,0xb630c7c0,0x364d43a6,0xb7882e84,0x3806bd57,0xb85203fc,0x37a1cffd,0x371e5011,0x3a5702f4,0x3b12c088,0x3a96b488, -0x39c8769f,0xba93fe6c,0xb90f834a,0x396a7e75,0x3a268df1,0x3a664981,0x3a145321,0xba48c459,0xba8b5e23,0xba70fa4d,0xb913f316,0x3a5fda9f,0x3a28b9a5,0x3ab00ef8,0x3a26bbba,0x3a0939a3,0x39141b8f,0x3901123f,0xb82446e0,0x3868174e,0xb80d6a59,0x36ea751e,0xb6dcd6d8,0x36995c68,0xb6e5f2b8, -0x3625872b,0xb6b8c443,0x37307ef7,0xb7c920d0,0x384b4835,0xb8ea275f,0x396778d7,0xb9b8977f,0x39059295,0xba9373fa,0xba16c606,0xb968ddcc,0xb9ffc6fa,0xb9af1104,0x363c3b57,0xb895f345,0x39cd486f,0x39a55bfa,0x3a09fdd4,0xba77a908,0xba5c970d,0x379b29f1,0x3a715119,0x3aca5abf,0x3a923b9d, -0x3a5c9be6,0x397622e3,0xb9c71bae,0x382d9213,0xb7611a46,0xb6f0a909,0x373ae769,0xb6ba6c92,0x35885937,0xb645a9fb,0x3410b7a2,0x369a014f,0xb6aca5fb,0x3608e6e6,0xb7111996,0x378011ee,0xb705d956,0x378a5034,0xb8c87ec6,0xba55d35a,0xbb6b83d9,0xbab178bf,0xb9a75d55,0x3b1098ac,0x3a420901, -0xb9fb1979,0xbb1fe208,0xbac8cef5,0xb6a64b8d,0x3b494d12,0x3afc2d12,0x3a2a3a72,0xba32f685,0xba94dc3c,0xbaacee98,0xbae4efac,0xbaa02a67,0xba90806c,0xba4c0f4f,0xb80c3eef,0x37a8673c,0xb4c09ab5,0xb621bec4,0xb67fa066,0x35fee1c1,0xb582b1b2,0x33b2e2e8,0xb536ad3f,0x36ec6609,0xb68ec900, -0x37888ba5,0xb80eafb9,0x385cde90,0xb90faedc,0x39e2582d,0xba1fc8ff,0xbb683266,0x3af3f295,0x3b43fca4,0x3ab6ba14,0x3ace4a8f,0x3aaaf9a6,0x3a2fd824,0xb7de4a82,0xba3db6d0,0xba8b0ed6,0xba8591e1,0xba6710e3,0xba153cca,0x37ae340c,0x3941ac5c,0x3a29eb62,0x3a622401,0x3a6060be,0x3a72026d, -0x39ddc9e4,0xb8bb3576,0x37b93790,0xb7539dbf,0x36ce1670,0xb6d86dc1,0x364e8fba,0xb470e010,0xb636e2c9,0x3670f763,0xb75a036c,0x37900539,0xb821585d,0x38afdd59,0xb824363d,0x39847f9c,0x3a8c4e17,0x3a2323e2,0x38fbc238,0x3921179d,0x389acb2a,0xb9accb60,0xba5397e6,0xba56cc40,0xba67a88e, -0xba409a42,0xb9e43c1b,0xba3bc373,0xba156e35,0xba16e17e,0xb9456d56,0x38990f3d,0xb893facc,0x39da83d8,0x3a1a38be,0x3a704540,0x3a34da32,0xb8589e95,0x37d6bf94,0xb6d6f2e2,0xb6260ca7,0x3769b20b,0xb72c3538,0xb3341c67,0xb63c267c,0x3756beb2,0x34bf941c,0x3727d1d4,0x381348e1,0xb7a5e694, -0x38be9c2d,0xb9261374,0x3a8374d1,0x3a74978b,0x39cb369e,0x392b7b0c,0xb96d47af,0xb9889fe1,0xb997e6f1,0xb9b83d8b,0xba08b0b4,0xba593665,0xba8efb41,0xba826a82,0xba73aa3e,0xba3e1827,0xb9e6e130,0xb9875ab6,0xb96e9f0c,0xb8fb5cea,0x36a869a8,0x38d4c556,0x38e7393d,0x385449bb,0x387bce21, -0xb4ec8a91,0xb6ef0cb1,0xb7c65e6d,0x3596094f,0xb69c7749,0xb7556899,0xb7d56918,0xb76fdbac,0xb7a7a9da,0xb79ee7c9,0x3617d9dc,0x3894e7c9,0x39896daf,0xb88d0ba6,0xb8b4ef34,0xb90aa16f,0xb8469f00,0xb8bfc8eb,0xb92f70e7,0xb9a974ea,0xb9dcc15b,0xb9d47440,0xb9af617a,0xb99e1b9c,0xb9eb77be, -0xba0c5806,0xba20f6b1,0xba2f818c,0xba3a7c0d,0xba207f5e,0xba032db4,0xba4cfef2,0xb9b70717,0xb97dc392,0xb95544b2,0xb822e64c,0x38075c7d,0x37c1061a,0x3821c029,0x37ec3646,0xb7ce1890,0x3890ee8d,0x376b83c9,0x388b932d,0x3827feb2,0x38a8c4fe,0x38ee9728,0x38e6dc90,0x358120c5,0xb937e943, -0xb9bca9c2,0xb9dca198,0xba032047,0xba0ed374,0xba0fa381,0xba0103d5,0xb9f9f27c,0xba06afb8,0xba1293dd,0xba14a6a5,0xba015e7d,0xb9bf6b03,0xb99608bd,0xb8d4d0a1,0xb75216ad,0xb7b0f92a,0x38b93ad9,0x397291f2,0x392918c2,0x399c3468,0x37c2b2f6,0xb89076b9,0xb8dfdb8a,0xb78acbde,0x379201fd, -0xb7bc4ccb,0x3822be7d,0xb7efca5a,0xb83a3e68,0xb8e25a1a,0xb8280892,0xb928d68a,0xb972cf80,0xb9a468f4,0xb9c2ec24,0xb90ea660,0xb9c784d1,0xb9af0eeb,0xb999105e,0xb990e82f,0xb9977c3e,0xb9a90ca1,0xb9b72697,0xb9a5b777,0xb9940c2b,0xb98b3a28,0xb99314ee,0xb9a8e657,0xb9bea106,0xb9ce91ec, -0xb9d21e3b,0xb9d4a5e2,0xb9d221dc,0xb9c8e99c,0xb9db119b,0xb8ebe5f7,0x3907893b,0x394c8f27,0xb8aa7804,0x3882ba32,0x385ca8c6,0x37cca727,0xb62cfc84,0xb7ec054b,0xb8237729,0xb80fe2a6,0xb8b6308f,0xb8a39e3d,0xb9337080,0x3789d526,0x37be1425,0xb9c2bf58,0xba0aea2d,0xba0cc86c,0xb92f446b, -0xb98a113e,0xb9887ad5,0xb991ce36,0xb997e43a,0xb992c0fb,0xb94e7500,0xb99687ff,0xb9ac96c6,0xb9cc932c,0xb98e6de6,0xb98b4cb2,0xb9a6587f,0xb9af0a64,0xb9c2d5d4,0xb9db8e70,0xb9c29303,0xb9b46867,0xb9853eb5,0xba169d0c,0xba213841,0xb9e130a1,0xba07f572,0xba22202c,0xb9cacd02,0xb9e055c9, -0xb9d600e1,0xb9b6fdbc,0xb9d0c4a2,0xb9c49a68,0xb9a06e66,0xba257a60,0xba08e17a,0xb9df710d,0xba352ad2,0xba57c9e1,0xba04baa9,0xb985377a,0xb9a26169,0xb9cdf284,0xb9f8bb4e,0xb9d95e4f,0xb862453b,0xb9bfd476,0xba0a95c8,0xba45db66,0xb9f2b8d0,0xb9bd3305,0xba004d6a,0xb9f9769d,0xba1bdf6c, -0xba2f8b21,0xba13c68f,0xb9de5123,0xb99e9d12,0xba1535bb,0xb9de749d,0xb9f9877d,0xb9eefb9e,0xb96159fc,0xb898c8f8,0xb9173e92,0xb93e5057,0xb911569e,0xb920a281,0xb5784626,0xb891f541,0xb94d3bd0,0xb9bbd343,0xba0f6eb5,0xb9fcce10,0xba3378ca,0xb9ec2b46,0xb91f6f38,0xb987bc53,0xb99e737b, -0xb9eae952,0xb9fb7e08,0x394ab9ab,0xb9f2c835,0xba1cd11c,0xba8d0c05,0xb9af16fc,0xb9913f20,0xba194d34,0xba330af4,0xba607dc9,0xba946b21,0xba624cd7,0xba0f0443,0xba15cd1e,0xba0b2574,0xb95ed9f9,0xb8a58171,0xb8364ad0,0xb7cb11f2,0xb842f727,0xb798469a,0x388a7829,0xb8a40d9a,0x37ccdf10, -0xb88d55bc,0xb79703b9,0xb737344c,0xb721e914,0xb90450f8,0xb96be437,0xba27f03f,0xba311fc7,0xb705edde,0xb980ebf3,0xb9b80d14,0xba24ead3,0xba17277c,0x3a2458ff,0xb9e46e18,0xba562f38,0xbad99dd5,0xba2c4748,0xb9a8cc68,0xba3a0d6d,0xba50aed7,0xba8a3c69,0xbaab7ae3,0xba7de8f2,0xba098c60, -0xb9f8b6ea,0xb9a7ca95,0x38a320f7,0xb820525e,0x37197fee,0xb832116e,0x37d8d17d,0xb80bd245,0xb6d10bdd,0xb6c9e29b,0x379cfee0,0xb7276387,0x373b245a,0xb87abdcd,0xb86203d7,0xb7cb6288,0xb88bbe96,0xb9745845,0xba65d495,0x38092c3f,0xb98490bf,0xb8e28126,0xba3a5a32,0xba178983,0x3a03c29b, -0xba117782,0xba843b21,0xbad905cb,0xb9bbf477,0xb8e50926,0xba64089f,0xba9b6962,0xbace77d6,0xbb0a7787,0xbac51d75,0xba7da20f,0xba10aa48,0xb9e172de,0x3840c742,0xb88c8367,0x37ab307f,0x379e4ff6,0xb60004d8,0x37981542,0x36b92cf4,0x3702bd7e,0xb6773033,0x370ef731,0x36402665,0x37493e48, -0x38175e3b,0xb83b518e,0xb6d220cd,0xb8fcf2d8,0x3920dfec,0xb8a8543b,0xb7714697,0x3a9a0f76,0x3a61931f,0x3a095e30,0xba306eb6,0x3aaa8f73,0x3ae1e057,0x3a32095b,0x39a0f0ff,0x39e022ee,0x3a9952c6,0x3b235f4b,0x3b286cb3,0x3b3304d0,0x3af3d9b8,0x3a715759,0x397280f9,0xb8b8b591,0x38446828, -0xb7efd354,0x37abe96a,0xb7cff104,0x36d41752,0xb6ec8125,0xb4f31f59,0xb5f304be,0x3513a041,0xb6a445d7,0xb7135198,0xb6da16bd,0xb844bad5,0xb893f4d0,0xb94c29e1,0xb9b3f1f6,0xb9370629,0x3a5c2023,0x3aa80436,0x3adbdf8f,0x39e80962,0xb904c858,0xba8602e8,0xb9f16878,0x37d317ae,0x3a36a549, -0x3aadfc45,0x3a6ee943,0xba227d8c,0xbae66bb3,0xbb139250,0xbb2c465f,0xbafca46c,0xba9ae0e2,0xba0e12e1,0xb8a2b3b5,0xb80e5be0,0xb75382c0,0x36b42d41,0x36db4a96,0x36c8bb4b,0x359edc87,0xb466a73b,0xb4cd0869,0xb59e7d23,0x362c437a,0x3623d119,0xb750ce3a,0x379c59d9,0xb824f19f,0x38068c12, -0x38c72baa,0x3adf320f,0x3a71c3d8,0x3921e3c6,0xbaa61d6f,0xba8906c0,0xba4eccfb,0xb8c49a93,0x3a7ec31c,0x3a96e8d6,0xb8e6797d,0xb9ceacb1,0xba196182,0xb8fd0ce5,0x3a49818f,0x3a0e9d73,0x3a93895d,0x3a003e15,0x3a2914d0,0x38211b8c,0xb8e6bb24,0x37dcbfc4,0xb8690cd1,0x37978fa5,0xb74d6d3c, -0x36abe90a,0xb6b1054e,0x36781568,0xb4dd90e4,0xb58b99a7,0x34d1a9b6,0xb716eabe,0x379ae173,0xb82f219a,0x3882e0e7,0xb9410de6,0x380c85f6,0xba8536c9,0xba3fcde0,0xba373d47,0xba95ae53,0xba99fe43,0xba476497,0xb8cf53ad,0x39aecc8c,0x39c2a6d4,0x39b89ff2,0xba254d35,0xba40e768,0xb90284de, -0x3a35dcd0,0x3aab3dcc,0x3a90c139,0x3a4dd5e6,0x3a13fc8d,0xb999aa7c,0xb90e5499,0x37df3957,0xb776ca1f,0xb6805f93,0xb685b02d,0x35c9e5e3,0xb510f584,0xb56f18ae,0xb6b09fa8,0x359955af,0xb5d8f8f8,0xb40eabd0,0xb6e436aa,0x36a4ee38,0xb788d1ab,0xb78551a3,0xb8ff6bad,0xbb2c2e66,0xbaddc538, -0xbab2dd7b,0x3aafd848,0xb8848e61,0xba47e3fc,0xbad0af65,0xbaf9e05a,0xba6d5b18,0x3af0f091,0x3aa0b48d,0x3a09d261,0xba1dc2f8,0xba7d91a0,0xba9415af,0xbab3b3df,0xba6de173,0xba3c06a9,0xba26842c,0xb7834718,0x381da60a,0xb805f21f,0x370e870a,0xb4475a6a,0xb4a9c22b,0x3516cb6d,0x363cfd5a, -0xb616b0cf,0x36707f98,0xb70a517e,0x37787f29,0xb7c99424,0x3838c590,0xb8ca39c9,0x39101653,0xba780e4a,0xbb743cc4,0x3ac39ae4,0x3b0d00b3,0x3aa8e017,0x3a97b0cb,0x3a823207,0x3a0c3be6,0xb8b862c3,0xba54cd7a,0xbaba8db6,0xbab99be4,0xba939065,0xba71678d,0xb971d8f6,0xb636d2d5,0x3a053462, -0x3a0c810b,0x3a229c25,0x3a44a86e,0xb8f17439,0xb905f917,0x383fa3f5,0xb7ace418,0xb31583f5,0xb6957eac,0xb6e61ef8,0xb68308b0,0xb70ab5c4,0xb679dcf2,0xb718b872,0xb694289f,0xb7bdec0a,0x37bd77f9,0xb92c7608,0x3992b8d6,0x39b8506b,0xb8bfa878,0xb9c59a79,0xb9e8474a,0xb934423f,0xb9baec5d, -0xba13f1b9,0xba141d05,0xba226e36,0xba011d88,0xb9757e74,0xb9ffb756,0xba093d28,0xba162feb,0xb99827a6,0xb61d6c4b,0x382c04b4,0x3a057600,0x3a20410b,0x3a4479a2,0x39dda831,0xb898dfa0,0xb7ac9474,0xb503b67f,0x3754e7cb,0xb7626a92,0x379f9780,0x367f50c6,0x37261808,0xb5d862c7,0x36861d76, -0xb664796a,0xb596c743,0xb7fcaa4f,0x38094f83,0xb9988097,0x39a61df7,0x3a144a78,0x39c1e1fb,0x38ef915b,0xb91c1c7b,0xb967e6b7,0xb95bf967,0xb95e2e09,0xb9b1102e,0xba19be30,0xba63684a,0xba5477ef,0xba4523bc,0xba1620f6,0xb9bc6735,0xb938a993,0xb8bacf38,0xb7d76ec7,0x38c2fb6b,0x3879f48a, -0xb8c83288,0xb5d38a89,0xb6a49a5b,0xb86a72d6,0xb70d44dd,0x36a043ae,0xb794598a,0xb7902a9b,0xb6eff1fd,0xb741e691,0xb7008608,0xb7d44634,0xb7b46fd0,0xb844002f,0xb8c78da7,0xb8afb89b,0xb9901447,0x36c69552,0x38c3bc25,0x37b39e7e,0x37c47ec4,0xb89342a7,0xb9674bc4,0xb9bdd384,0xb9ddac02, -0xb9d02553,0xb9cce2c3,0xb9ccf62e,0xb9de47a7,0xba022553,0xba05a709,0xba114e0d,0xb9ec75b4,0xb9e821d8,0xba0bbd22,0xb9e6475d,0xb9d32561,0xb93121b8,0x37953994,0x3821f9a3,0x3776c4d6,0xb7b074fd,0x36d752aa,0x38327b67,0xb809ebef,0x382fe30c,0xb7c2f72c,0x37d90ff8,0xb6d7ae7b,0xb65f2f1a, -0xb84e3a95,0xb695add6,0xb9c737cc,0xb97e9f9a,0xb9c97597,0xb9ddba6b,0xb9f59d95,0xb9ec34e8,0xb9cce874,0xb9ae9ec5,0xb9985e0d,0xb9a2675a,0xb9aa5c9d,0xb9ab291b,0xb99588b3,0xb9930432,0xb913505c,0xb886e296,0xb8500645,0x382832fd,0x3942e7d9,0x3900519c,0xb83c0728,0xb9561812,0xb9980579, -0xb95f0ddf,0xb8ecbb1e,0xb895cddf,0xb900b19b,0xb8f4ff83,0xb90cb7cb,0xb9017823,0xb856c9f5,0xb8e99dfd,0xb916f2cb,0xb92b96a2,0xb9c7968c,0xb9c3b09b,0xb9e720ea,0xb97d0d9e,0xb9734104,0xb94d104d,0xb9446feb,0xb94a923a,0xb9713349,0xb98da89c,0xb98dfab7,0xb983b61a,0xb97160f3,0xb96d95b7, -0xb97a3b81,0xb9895da6,0xb99271aa,0xb9976e6c,0xb99cdc42,0xb99d659b,0xb99aa1e7,0xb9834c6c,0xb9c330cd,0xb9c80ac3,0xb97b7de8,0xb9bd4207,0xb9e32f24,0xb99a6c50,0xb9a6bdfd,0xb9a58a9e,0xb9a6e435,0xb9b88a83,0xb9bcf856,0xb9bc39d6,0xb9f28447,0xb9c4ff8e,0xb9ad261f,0xb9f43154,0xb9d6cb45, -0xb8bfb7ed,0x3927960f,0xb8d3b908,0xb8406d73,0xb7af1ac1,0xb8009a0e,0x36fa78fd,0x37c1cf70,0x3883888a,0xb73274d7,0xb84dd07a,0xb8eb074c,0xb8018dbc,0xb7f4c77c,0xb8864d1c,0xb8a2d1ea,0xb8c440fa,0xb9029703,0xb8bcf287,0xb89debf0,0xb8586f85,0x390313e7,0x38114f71,0xb9faacd0,0x38e8295f, -0x383af36e,0xb998c977,0xb98d7acf,0xb986f18a,0xb966edb8,0xb943997e,0xb931e5d4,0xb8e1ad12,0x387b2073,0x38dea9a9,0xb9c35d29,0x35714588,0xb94060c9,0xb82fc1f0,0xb8668b5b,0x369fa66d,0xb84d4ad5,0x38a081d5,0x39336db6,0x39b4d5fb,0x38d6e6d1,0xb8334d67,0xb9841c1e,0xb880f5d2,0x37d0c606, -0xb72809f8,0xb714104b,0xb8dd5a7e,0xb9573aee,0xb90e6db9,0xb8cf043b,0xb86a27f5,0xb60e895c,0xb7b47612,0xb9040029,0x390fb10f,0x393fb0fa,0x38307cf8,0x38f9acf9,0x390c7d27,0x38ebadc6,0x3904b5ab,0x37998bd7,0x38e38a47,0x38326936,0x38bb04a5,0xb827dc14,0xb8c725b5,0x390382e5,0xb907d61c, -0xb87d184c,0x38a4ec1c,0x37c5dab9,0x398bc408,0x39bf6a89,0x3a2c5f5b,0x39451d06,0x3592ccf0,0xb9d814ce,0x388a0c1b,0x38f696e6,0xb86c95de,0xb9059aab,0xb959d0ca,0xb9e3768c,0xb97b0c12,0xb947334f,0xb80d5e89,0x38eb66e0,0x389bc131,0x3944c120,0x38cc8d51,0x37e25d1d,0x38970cc9,0x37fb6f70, -0x379e145a,0x38b9f14b,0x37a5e012,0x389ceb8b,0x37d3f7dc,0x3896d938,0x38d710c2,0x390f4fec,0x393eb342,0x38f2f577,0xb9a7c0cf,0xb719f2ec,0x387ccb61,0xb788960c,0x39a34b12,0x3a19fa14,0x3a99dea9,0x39e2b118,0x37a4623a,0xba3bd218,0xb80779ca,0x39617721,0x392a5ea7,0x38be7a7b,0xb911b672, -0xb9f09b86,0xb9999351,0xb92c8239,0xb835cd41,0x38de7930,0x386299d7,0x36555584,0xb730511a,0x3818cc40,0xb794a3d3,0x37c891e5,0xb73ff2cb,0xb68e54f1,0xb7ac5d01,0x36393433,0xb51cc664,0x38063b5b,0x36d141b5,0x3816be77,0x389f90f5,0x39845bda,0xb9a2b0e8,0xb93b9a5a,0x3906ca55,0x38bb91fe, -0x39f4f9f7,0x3a498b69,0x3a9f33fc,0x39f7602d,0xb8903396,0xba45b7ba,0x38ec0c8c,0x39a171c3,0xb8f4e752,0xb98048e8,0xb9f80621,0xba6d92b9,0xba05c630,0xb9e18a67,0xb9071994,0x38a3f405,0x37fab956,0x38116d78,0x379ae029,0xb77a43df,0x36ef5373,0xb72eb775,0x36aff08a,0x3556bc06,0x36f74878, -0xb5b4b6ed,0xb67411ed,0x3681f9c1,0x3681407e,0x380df5fb,0x38928f10,0x394ed8d9,0x3a87ffb7,0x392be2ff,0x39c7ec28,0x3a8facf5,0x3a93e30d,0x3a8f7a3d,0x39801663,0x3ab3696b,0x3abd06e8,0x3a0a3ca5,0x37843e30,0xb884f969,0x39c70456,0x3ac7b62f,0x3ae6aeca,0x3ae5624f,0x3ac6ff27,0x3a8c2815, -0x3a5a63f8,0x38d31d21,0x346f3ff3,0x37a5f94e,0xb726d1f8,0x3789c723,0xb66dc51d,0x364eca6c,0xb63aa10f,0xb5a54ab0,0xb502b4b6,0x36708bc2,0x373f2cf5,0x3662c89b,0x3817e409,0x3850f923,0x38ff75da,0x3790f26b,0x382ae3eb,0x397c4174,0x3a8676e2,0x3aacd857,0x3a7bb09f,0x3a0a6f1c,0xba09163b, -0xb80e1bfb,0x396b0001,0x3a12990b,0x3a9ea080,0x3a7e565a,0xb8bc64e3,0xba68a6e0,0xba9e9742,0xba9c6e8c,0xba5b1454,0xba271610,0xb93755cd,0x378b91e1,0x38277111,0x374358ac,0x36f14bf7,0xb5d2683a,0xb620332b,0x35cab095,0x362d74ba,0x360afd54,0x362767f7,0xb562a6eb,0x35d43518,0x36896974, -0x374f3ec8,0x361f9044,0x39001fdf,0x38b8af78,0x3a9dd011,0x3a247233,0x39e4157e,0xb90595d1,0x39f20c58,0x3a2f0def,0x3a94f715,0x3a86750b,0x3a45664b,0x38487000,0xb9284438,0xb8bacc3f,0x39c17ef9,0x3a69eb7b,0x3a3e37bc,0x3a8bc592,0x3a163491,0x3a0771c7,0x3983c60b,0x38a47a32,0x36cd3cf4, -0x3819c626,0xb61e4913,0x3736fabb,0xb670e177,0x368eaadf,0xb651ff31,0x35c2c9c0,0x34fd3c56,0x367c91fc,0xb4f567f8,0x37251563,0xb6f2d88c,0x383d89d3,0xb7d49e31,0x38a1f1eb,0xba2bb333,0xb951bea2,0x39939bb1,0x3aa05f4d,0x3a378e7c,0x3a6c6aec,0x3a84b140,0x3a3ad7dd,0x3a10ddf8,0x3a4c1fd8, -0x391f5364,0x39506df6,0x3a050f75,0x3a802da1,0x3aa69fbf,0x3a83d7c3,0x3a4a5bdc,0x39e5e298,0xb814f027,0x38ebb5a7,0xb643d326,0x373aeb8b,0x370e93f4,0x3606360c,0x343dcec6,0x35c07fde,0x35b8bd18,0x36933e72,0xb4c73ddd,0x3671cb04,0xb5f4d217,0x37657ab4,0xb73f2f40,0x37e6ba1d,0xb7fd4747, -0x398884af,0xbab29a62,0xb97eb85c,0x39d6b636,0x3b4d97b2,0x3ae1d656,0x3a4e0595,0xba5fe654,0xba7172c6,0xb9b67425,0x3ae7b37f,0x3ac4b4f8,0x3a810ae4,0xb8a06705,0xb9811be6,0xb9c3644c,0xba1c9ae6,0xb9b7a967,0xb9cdc657,0xb9892666,0x380ec603,0x3737b5ae,0x375a9217,0x37156b8b,0x3583146b, -0x367cbe20,0x34e0cbaf,0x35991c5e,0x357f0ed8,0x35fe8408,0x35e4e227,0x3602ce1e,0xb61587a8,0x378f54d2,0x374f7c04,0xb6911a8b,0xb8b90632,0xbab7678d,0x3b3854e3,0x3b66cf00,0x3b2c9375,0x3b279a51,0x3b13e14e,0x3acb7e36,0x3a5007bd,0x3989a392,0x38091796,0xb992ae1b,0xb994d19f,0xb91a4fa6, -0x379d80f8,0x37dcd951,0x398cb3f4,0x39c061f6,0x39eb2bd1,0x3a2d55b2,0x3863e6e5,0x38495660,0xb6def1df,0xb6e88c01,0x36adfe62,0xb4cdc4dd,0x369a9c15,0x35dbb081,0x3675ea42,0x36c456f0,0x355de619,0x37a71411,0xb701fad1,0x381d1f22,0xb7a841a6,0x3917d211,0x391e5c5a,0x3a23a7e0,0x393e179e, -0x38c1e58c,0x397fc52c,0xb713efa8,0xb97740f5,0xb8c81ece,0xb9a902d5,0xb9b58206,0xb93b9c09,0xb96534a5,0xb8babbfb,0xb851a8ca,0x392a4e2c,0x39b0973d,0x3969704e,0x3a061ae6,0x39f5a3fc,0x3a1cac39,0x392c4156,0xb8bd6651,0x38d7fa7b,0xb6677978,0x374515f7,0x3711b7f8,0xb65da4f7,0x3649b9b2, -0x3592e1bd,0x36e3f43b,0x36e02ca1,0x366dc1aa,0x37a4b9c2,0x379949dd,0x38a122e4,0x3884bf5c,0x39dd3fea,0x3a43af75,0x39f64b6b,0x399d70c4,0xb7e02eee,0x36c99968,0x3870d54e,0x393825eb,0xb8233a04,0xb9852d37,0xb9fe30c1,0xb9ee218f,0xb9e1f05b,0xb99ca05c,0xb90813e2,0xb81e0e95,0xb795a649, -0x384c38f4,0x38d0d1ae,0x38d4021f,0x38c55792,0x3840f3f1,0xb58b0781,0x347eaf23,0x3671be39,0xb728a485,0x37221e27,0xb6534ac7,0xb29d124d,0x3513fb90,0x368e65db,0x375a7af1,0x37cc3dc6,0xb74817bf,0x38b8e90b,0xb8ba12a9,0x38db8673,0x3991e2f0,0x396e92b6,0x3993865f,0x39a31c8c,0x3984eba8, -0x38e28932,0xb620001c,0xb85ec550,0xb87c1b96,0xb8c00268,0xb962ee41,0xb9aa8ea5,0xb9e5acea,0xb9f15961,0xb9fd24e0,0xb9d44a5b,0xb9b8df3a,0xb9e89ef8,0xb980f82b,0xb90a4b4c,0x368b3c30,0x38adc55b,0x380aa033,0x37964c59,0x380a358f,0x369513ef,0x3708dfff,0x381a8d44,0xb6896ee3,0x3816ecac, -0xb7090ae5,0x38355534,0x389b5dd7,0x38c6f353,0x3918d16a,0xb993f209,0xb907477f,0xb92568cd,0xb962dfe8,0xb992eb40,0xb968edd7,0xb91c1bee,0xb86aa68a,0xb91fb6da,0xb981853d,0xb9a63f8d,0xb9b14484,0xb9a3757f,0xb9a8ecc5,0xb9530a65,0xb918c1a7,0xb9303019,0xb8da8e8a,0xb85ab84a,0xb847d164, -0xb8180fee,0xb8edb41d,0xb7b394e1,0x38263a6f,0x3875c49d,0x38761b0e,0x38b65976,0x38c84c04,0x38a50f3a,0x38d54e64,0x380d3995,0x38b74957,0x38a2d4eb,0xb7dfabdc,0xb94a9c55,0xb8545bcb,0xb7c50026,0xb8cddfec,0xb8de98fd,0xb8881e72,0xb8536b6c,0xb85d0d24,0xb8ca48ba,0xb8fd4db5,0xb902a869, -0xb8e3a4c3,0xb8e0819e,0xb905a6eb,0xb92ecd26,0xb95f5b70,0xb96d6785,0xb97396f9,0xb9738537,0xb96647f6,0xb95be602,0xb960f8f2,0xb84fb0b2,0xb8460ad5,0xb987a83c,0xb7d194f6,0xb81c42ee,0xb9704cc8,0xb96d9e67,0xb971b742,0xb96ec2e2,0xb9621436,0xb9663555,0xb95b837b,0xb89cd3b2,0xb82ab963, -0xb9980eb7,0xb8efe2b5,0xb96af9c0,0xba0d0c0b,0xb9f0b883,0xb9d32bd3,0xb9b403b3,0xb9b1dfa6,0xb9aa6b1f,0xb9c0e70c,0xb9c6aa1f,0xb9b58271,0xb9ca9a44,0xb9d59b06,0xb9e07025,0xb9c3ad1e,0xb9c1774f,0xb9cd6bbf,0xb9d0573b,0xb9de0019,0xb9eb950c,0xb9e08852,0xb9cb74e7,0xb9c86e3a,0xb9b608b6, -0xb9640470,0x38a41ba2,0xb99b657e,0xb90b6ae4,0x394a6671,0x3930b5ca,0x39313a60,0x3925f744,0x39239ebc,0x3921f549,0x391d0ee6,0xb8fdbb53,0xb9a4da69,0x3806a078,0xb9625ee2,0xb8c04c38,0xba09b91e,0xb9cd7655,0xb9cc1009,0xb9bea70a,0xba0e3538,0xba158f34,0xb9dd1867,0xba11ee46,0xba282815, -0xba398ca8,0xba18f72c,0xba0ba8c5,0xba184fe7,0xba0f0f9a,0xba20b816,0xba2c023c,0xba17a6b8,0xba01dc48,0xb9ec7aea,0xb9262acd,0xb90c2c88,0xb753801e,0xb85463a6,0xb91223f0,0x37b5bdb4,0xb85e356d,0xb8445e7e,0xb8881cdd,0xb842d268,0xb86b3622,0xb82398c9,0xb7e3449d,0xb7b20598,0xb85521ca, -0xb914c88f,0xb9768251,0xba22df9d,0xb9a0f015,0xb9b120a5,0xb96d53e3,0xba07b03e,0xba202893,0xb9b8b492,0xba2cdf17,0xba3bcff7,0xba6bf3a0,0xba15ed81,0xba0cf031,0xba2602b4,0xba346d25,0xba4a9499,0xba7d73df,0xba46e8d9,0xba280981,0xb9d78a1b,0xb82302a2,0xb7a98f90,0xb8d3ac6d,0xb887946a, -0xb7dc8b77,0xb899544b,0xb8240259,0xb8993c96,0xb8a86b6a,0xb83c211b,0xb87f6353,0xb81a1a40,0xb89bcfaf,0xb8aae75a,0xb84c60f2,0xb9033822,0x35e91cf3,0xba230fe5,0xb98fa01b,0xb9a324ad,0xb93ecc0b,0xba27e22c,0xba554747,0xb9a4e44f,0xba57553e,0xba8123b9,0xbaa550fe,0xba6310c0,0xba2f164b, -0xba541c1d,0xba54c858,0xba724e5a,0xba8fdd3f,0xba639ded,0xba21dd4a,0xb9cca4dc,0xb83ad628,0xb8cf5742,0xb782eef6,0xb7c1f3ab,0xb7ce0467,0x36b4bc01,0xb7451207,0x37a2a279,0x372d0a8f,0x376756dd,0x36172616,0xb6f28ce2,0xb78143dc,0xb6e8501d,0xb880528e,0xb88cf291,0xb89cd09f,0xba3096b0, -0xb9915c29,0xb9596d1d,0x3844d993,0xba1e9b74,0xba32a109,0xb9b933c4,0xba620dff,0xba8b4044,0xbaa9bea1,0xba396aba,0xba16e0c7,0xba54733c,0xba82b0d1,0xba9fa1d0,0xbad10e39,0xba9c81f7,0xba6fc218,0xb9cac01b,0x38a98f67,0xb8437487,0xb72d420e,0xb79e785b,0x36c37ea9,0xb6e275cf,0x3608012e, -0xb7358b0d,0xb6cf3cb5,0xb70153bf,0xb61d2a3b,0x346d079c,0xb66c76c2,0xb7c75d58,0xb547a645,0xb8e7e83d,0x375aab9a,0xb8c3e7b2,0xba2e57df,0xba1b8b8f,0xb933b905,0xb969ab38,0xb9f8befe,0xba9f616f,0x3771fc0c,0x39d30e51,0xb9319e17,0xb9b4d2cf,0xb98a472c,0x398580f7,0x3a503e53,0x3a7e142b, -0x3aa2b5ce,0x3a58dd3a,0x39a3c764,0x383e7332,0xb9001ba6,0xb83723e4,0xb7093b56,0xb729bad5,0xb6f66175,0x349c0b13,0x34351ea7,0x36776fca,0x363885c4,0xb55268b4,0xb5931ba4,0xb7526713,0x36885412,0xb83905da,0x378a79cc,0xb9340246,0xb936019a,0xb990f792,0x39346342,0x3a0d4629,0x3a6df0f0, -0x39b4cd4d,0x3931e77f,0xb9f6fc5d,0xb99780be,0xb920f6a1,0x3949397c,0x3a45adda,0x3a24bad5,0xb93be561,0xba72d2e9,0xbabb1369,0xbb04e059,0xbac09cd9,0xba91af31,0xb9d590b9,0x390c5abb,0xb888f163,0x36d61a56,0xb79c0a96,0x362f5791,0xb647af0f,0xb6060707,0xb6750343,0xb6294b0d,0xb62bb47d, -0xb5a630b9,0xb5c24f99,0xb6d7c404,0xb686fbbf,0xb8408323,0xb8070377,0xb8917762,0x39e5b367,0x399d5db8,0xb910c9b2,0xba770539,0xba8ddc98,0xba9566c8,0xba413c91,0xb916a8b7,0x392073d4,0xb9475144,0xba19c226,0xba518ad6,0xba276726,0xb941f61d,0xb8ffa02a,0x39be564f,0x38ba0e0a,0x39051e97, -0xb9205695,0xb82cd476,0xb810a764,0xb75924dd,0xb755569c,0xb6d995b2,0x3551e736,0xb5e88873,0x352174e6,0xb598f72c,0xb5e14df7,0xb62d99f8,0xb60f39f9,0xb69ed1be,0xb6f45c7b,0xb7537e0c,0xb7d505c2,0x38be6d6e,0xba021eb7,0xba10c9c2,0xba2ac066,0xba9b05d2,0xbac192f2,0xbaba6cfb,0xba296d93, -0xba0da710,0xb9a9bf34,0xb8b435d9,0xba44247c,0xba5b109e,0xba2f13e9,0xb92e72a8,0x399e4639,0x3a041fa6,0x39bb7260,0x393b88ac,0xb900842c,0xb865be54,0xb7b359ea,0xb6a5c366,0xb728c712,0xb58944f9,0xb581db18,0xb6156ba9,0xb5f370be,0xb5ac07f3,0xb654fecf,0x351a8ba8,0xb6f416c9,0x36a71610, -0xb77c99cc,0x37710f41,0xb841a7bc,0x39b29d84,0xba554e68,0xbaa1f71f,0xbaa0c6c3,0xb90385bb,0xba1581f1,0xba2c0aa6,0xba3c543f,0xba8e34b8,0xba293494,0x3a2e6333,0x3a50e9ca,0x3a0fc0cf,0xb8995f7d,0xb9f96ca7,0xba3abe9e,0xba7a4fc0,0xba2dd938,0xba06dc0b,0xb987862d,0x37c09ce8,0xb7db7667, -0xb72aa79e,0xb71913dd,0xb671f9f8,0xb67656b0,0xb5aff74e,0xb64e760e,0xb53efba8,0xb66018e5,0x35211532,0xb6ff9ef4,0x37107227,0xb81f2ba1,0x385054d8,0xb90cac49,0x388fb8f4,0xba8aa9b4,0x39d2c2b3,0x3a7b411e,0x3a294538,0x3a05abba,0x3999a096,0x383d371f,0xb98e1024,0xba218142,0xba86448e, -0xba82ab79,0xba73c93d,0xba4c5259,0xb9a74c0d,0xb8ea0dec,0x39263dff,0x39692215,0x39673ce4,0x394d07da,0xb926d4f6,0x35bb25a1,0xb73e8e0f,0x36c61f3c,0xb5d2a62f,0xb5120ade,0xb57c1d0f,0xb5248576,0xb515a254,0xb67bbcfc,0xb450184b,0xb75fb359,0x35cd1856,0xb7ab157d,0x36f0065e,0xb8e4083d, -0x398609eb,0xb9849878,0xba33e627,0xba4129ba,0xba229b4c,0xba3879ff,0xba48172e,0xba4606d9,0xba062ff5,0xb99b65ee,0xb8f777db,0xb97e8e1f,0xb9945f46,0xb9910def,0xb945adef,0xb89f49a1,0xb89a8ec1,0x393de977,0x3968cf5e,0x39f3be4d,0x3808c497,0xb855cc2b,0xb78852df,0xb7b6e357,0xb6c81f8f, -0xb7317af9,0xb684d370,0xb7094f17,0xb6ccc8ca,0xb73a9134,0xb6cdcbc5,0xb782bf63,0xb5873d3b,0xb832406e,0x35659d68,0xb9139840,0x377fb482,0x39b894e3,0xb8cb4822,0xb90be022,0xb9a42603,0xb9bf8344,0xb9d67581,0xb9f6a683,0xb9d029cc,0xb9e8316a,0xba09ea3c,0xba083671,0xb9fbccde,0xb9bd50a8, -0xb98afe7d,0xb90d65eb,0xb8bf9a7f,0xb88d5ca3,0xb8102ba0,0xb841d8a8,0xb7cb6824,0xb74147f6,0xb813b1eb,0x356e55d5,0xb60f1bb4,0x36e200e6,0x34cb62ba,0x373e3927,0x36e2e0b7,0x3654ccf3,0x3654932c,0xb73769ba,0xb6e62b3e,0xb80e7ed3,0xb6e83f1b,0xb8dc0964,0x3828988d,0x3731b423,0x38005e56, -0xb6ea85db,0xb855d03c,0xb9114736,0xb98a1106,0xb9d20365,0xb9e6dc5d,0xb9e8758e,0xb9e102c2,0xb9b710f7,0xb9a17dd6,0xb99cc0f2,0xb9a8dbc7,0xb9ba62b1,0xb9a92184,0xb9adb512,0xb9ca6512,0xb9c43dbc,0xb9086224,0x386052e6,0xb819bb5c,0xb7c7cf0f,0xb7c92691,0xb8046307,0xb7820cb9,0xb81c6e64, -0xb80e2f8e,0xb7ed9026,0xb80cbeb9,0xb781ce7f,0xb856fe27,0xb7aa2ad9,0xb847bb39,0xb7c07801,0xb8ab03c7,0xb96d21fd,0xb9a5fad1,0xb9cc56bb,0xb9ed0efe,0xb9f5dd3a,0xb9f80471,0xb9f6a564,0xb9cdec75,0xb9b9e4b5,0xb9b1201c,0xb9b39725,0xb9ab643f,0xb9a0a0b8,0xb9800d5b,0xb9533c49,0xb94d75d0, -0xb9217a47,0xb8870f4b,0xb912db30,0xb9559997,0xb921ac46,0xb882ed21,0xb71eec4c,0xb7d4402f,0xb7ebc2b5,0xb75cf0e1,0xb85d32c6,0xb6819e87,0xb7aafa9d,0xb792aaa5,0x37514c32,0xb7f08f39,0xb4b4126e,0x378aceb8,0xb92d30bc,0xb99cb55c,0xb988a0ce,0xb9757893,0xb96bc406,0xb96f6280,0xb9799016, -0xb98b0538,0xb9a02558,0xb9a36fb6,0xb9a331f3,0xb99bd2d5,0xb99344ba,0xb98e0b86,0xb98f49d7,0xb9965097,0xb99c01b0,0xb9a1b35a,0xb9a33c41,0xb9a38fa6,0xb99a6881,0xb99994cf,0xb9681d38,0xb889616f,0xb94b35f3,0xb8fcf8be,0x38682d44,0x38827008,0x3841a7cf,0x381fb7a3,0x381f86e6,0x37c0ea16, -0x3751b1ec,0xb8f2a3c5,0xb94512a4,0xb89a2997,0xb95217da,0xb9e81155,0x38fed920,0x390b4e5a,0x395b0c58,0x38dcd211,0x38e9e50d,0x38d84242,0x3905836d,0x39126381,0x3922a23d,0x39092173,0x38fe11d9,0x38d8f468,0x39001b3e,0x39023a86,0x38f68642,0x38f77952,0x38f882fd,0x38dc1c55,0x38f0309a, -0x38caf198,0x39205498,0x37394393,0xb939ba48,0xb9f89451,0x3904a089,0xb83ac26e,0xb98de1f7,0xb986d127,0xb9847d9f,0xb96f50e1,0xb97fe651,0xb977c05b,0xb95bc31c,0xb886b0d9,0x391fc172,0xb9da0830,0xb97eadf5,0xba051a3b,0x38b05d4e,0x39048721,0x3904a964,0x38cd1afc,0x3934b59a,0x396c45f9, -0x399e951c,0x396da8c4,0x394820e2,0x38fdb2cd,0x391ef276,0x393a9fd3,0x3945526f,0x39570184,0x3941e534,0x390c9154,0x390790b3,0x39142633,0x39578d56,0xb93694ef,0x3820d15b,0xb84eb6b2,0x382d8560,0x38fb1712,0xb806961c,0x381c57a1,0x372e394f,0x3805c0f4,0x378cf3c3,0x3891e3e6,0x37a6ec11, -0xb72b34b0,0x38419bcc,0xb58c0f54,0xb61ae174,0xb72a855a,0x394acdd1,0x390663b8,0x3903c5b9,0x38c15714,0x3968c1df,0x39926a5f,0x39d41cfb,0x398dc645,0x3964e97f,0x38e174dc,0x39543fc6,0x396ddb93,0x394e4985,0x396d1fcb,0x3954ee13,0x390f0214,0x38f2dfdf,0x393ea049,0x38818364,0xb8f46d7f, -0x386e4a00,0x388939b5,0x37f8d485,0x371ea8be,0x385dca7c,0x37d6ed7e,0x38c15a26,0x3856145c,0x385936c0,0x3812b1ff,0x3816ce92,0x387382c3,0x385e0e98,0xb7472db0,0x3963834b,0xb88f8b41,0xb926a41c,0x3945489c,0x38a2a8f3,0x38a93e2e,0x39623b18,0x39c27d39,0x3a22954e,0x39df6744,0x399e939e, -0x38b43e4e,0x3955a018,0x398c9222,0x39a07878,0x39c3629e,0x399e38f5,0x391f1592,0x391a6178,0x394edc5a,0x39061bb5,0x38613a8a,0x38c2ab68,0xb622c2ed,0x3832c8d6,0x37595522,0x371c5430,0x35fda684,0xb79c5fc6,0xb7314517,0xb6b1175d,0xb6a96448,0x375ee03d,0xb685ebf4,0x37865986,0x37e75765, -0x3848ebed,0x395d2d41,0x3770d201,0x3926e6b1,0x38a83f75,0x3888eac8,0x39828127,0x39c97a01,0x3a1ccfc0,0x39d4e78c,0x398995c0,0x38bc647c,0x39830901,0x39aad191,0x39803319,0x39a37b49,0x3985aec9,0x38d597a0,0x38c35567,0x38ebe6af,0x38ec7f6c,0xb917e18b,0x386dbf0f,0xb5cd00f7,0x37ad4fe0, -0xb5a11cba,0x369b9f7d,0x3660a65a,0x3740c5c4,0x370f84fe,0x369bc682,0x36eb0514,0xb6950e94,0x37832919,0x36e1772b,0x382f9904,0x373f0036,0xb892f9d9,0x398849c2,0x39d83c19,0x39c788e4,0x3a0cb562,0x3a256479,0x3a35e52e,0x39e3c9eb,0x3a694349,0x3a674daf,0x3a11de23,0x39c2ddaa,0x39752865, -0x3971ac40,0x3a023376,0x3a1b039d,0x3a740a79,0x3a56c30f,0x3a481fa7,0x39dd1d5f,0xb8812676,0x38e9b305,0xb7caf517,0x37ee0d70,0xb65aee06,0x3684a629,0xb629d4b9,0xb64070d1,0xb628d556,0x354178c3,0x34f56cb7,0x3705f165,0xb5def949,0x37f6d364,0xb83b928b,0x38f4adab,0xb6a219f3,0x399942dd, -0x39c0d0bf,0x39d8973e,0x39e067a3,0x39e4abf6,0x39912b53,0xb956004c,0x377932a9,0x3900186a,0x39681fbd,0x39cf1a6c,0x39b580f3,0x388ca9c6,0xb89dd6ad,0xb901d8fd,0xb7da245c,0xb8f417a2,0xb83d607d,0xb8ca317d,0xb833812c,0x37b0fe70,0x365c444c,0x377b9754,0x35a57736,0x36836d5b,0x361954d3, -0x3660392d,0x35d581af,0x3642e0ee,0x34c1eb10,0x36bf7448,0xb701c9ab,0x37c7b5a2,0x37182a47,0x38bc3218,0xb8180e74,0x399ebf0b,0x397d1495,0x395eaefe,0x3949ef15,0x39b6bf0b,0x39ea588d,0x3a35826a,0x3a2c1683,0x3a0c9cbe,0x3991f663,0x397c8ac5,0x397e835f,0x39c4f3ab,0x3a0494bd,0x39d3d2fe, -0x39e56545,0x3989fae7,0x399b5613,0x39179ba3,0x37aa8df0,0x37e9b88f,0x361fec81,0x3779f787,0x369dfd8f,0x341841a8,0x34f50676,0x35ad1684,0x3588d126,0x36149edc,0x3530133a,0x3697ede7,0x3519355f,0x378d44be,0xb71c2c4b,0x3807ced5,0x3715305d,0xb9435fe9,0xb77d88c4,0x397ea865,0x3a66b302, -0x3a1e25dd,0x3a3c6d5c,0x3a53a1f5,0x3a140323,0x39df800f,0x39d7d9b7,0x39c7260e,0x39c9107d,0x39ede61c,0x3a09b80a,0x3a10d3e6,0x39ea0590,0x39b1419a,0x39a18821,0x3893e4d2,0x379bfe8a,0x37f3fda2,0x369b5f86,0x36c6281a,0x36052556,0x3411107a,0x36492bab,0x358da72a,0xb501a5ac,0x365791a8, -0x3546a6da,0x361ee5b2,0x35d89c8b,0xb596f1c0,0x37409c5c,0x36c52613,0x38acb0cf,0xb90be21a,0x38603230,0x39bc12bb,0x3ad02950,0x3a839d6d,0x3a2483af,0xb80ceb13,0xb998bb60,0xb9865d7d,0x39e70b5b,0x3a06dfdc,0x39f89982,0x38cc4f68,0x38abb5b2,0x38635b26,0x38800715,0x38ada636,0x37c024ff, -0xb63ebf93,0x380caf00,0x3757df45,0x36d5e202,0x3715baab,0x364cd2b0,0x36515204,0x35c0fd96,0x365537f9,0x358170cd,0x3593bb41,0x35502d5a,0x36420d70,0x358e5627,0x378f34c9,0x35d0325f,0xb7ba90fa,0xb9177623,0xb8cf0fa3,0x3abbdadf,0x3ad13e33,0x3ab9f4b6,0x3aaf25a8,0x3aa50cb8,0x3a83a7d8, -0x3a1ecc4e,0x39be6a29,0x39626253,0x3705dc6f,0x3745e372,0x37d13272,0x36673eae,0xb7f2f237,0x38855aa4,0x3804b0b2,0x3916f424,0x395a920c,0xb8497907,0x38534dfd,0xb68ff6f6,0x3640d4a9,0xb6264681,0x35ab89af,0xb5f36bb6,0xb35db2af,0xb557391f,0x35a20015,0x34fe6225,0x36bdc01a,0x3680846a, -0x366cb1d1,0xb7ac4b05,0x38c33da8,0xb9591f34,0x396d91b4,0x3914296a,0x384ab2b7,0x394e50e7,0x390f43af,0x38dc789f,0x394ea359,0x3713f9d7,0xb87eafa8,0xb7a2ae8c,0x37be5bdf,0x388770a0,0x389d0fa8,0x39103d0e,0x395994a0,0x394e1103,0x398e8b92,0x3965fb3a,0x3920da35,0xb7da5672,0x3837ca0c, -0x37184f28,0x378ba5ff,0x36e25a8b,0x36c82133,0x370f1129,0x37098991,0x36fc6285,0x36ff6251,0x36de2b38,0x374242c7,0xb681789c,0x380ec5ab,0x3661b3c9,0x38ca6431,0xb8d3430b,0x3984b44b,0x399c0f64,0x3946dd1c,0x389a32af,0x38ce71f9,0x391e50fc,0x39862aa5,0x390644fa,0x382622c9,0xb88b75eb, -0xb880c5e0,0xb86dfe56,0xb79eb037,0x38089aa5,0x38594980,0x388bc788,0x38ba8c1c,0x38c75aed,0x38b4ae04,0xb7977dfb,0xb74bfb85,0x37c3cc7d,0x35d4f069,0x361707a5,0xb6264ab3,0xb6705d4c,0xb75b8c48,0xb6b8478e,0xb5e233d7,0xb624f122,0x36febbc3,0x3714aab6,0x37b93a46,0xb77b6ce9,0x37fd5407, -0xb7fdb99b,0x397d1e2a,0x3942cf9e,0x395dc7fd,0x39834323,0x3974a64d,0x3936b495,0x3902f11c,0x38b295f3,0x388bc37b,0x3817aeef,0xb771a5da,0xb893e73f,0xb90d43b2,0xb908bf7e,0xb90edc88,0xb8cd9c37,0xb8d8a11e,0xb8826a55,0xb8d6db40,0x387e4072,0x37ff87d1,0x37769533,0x3782c1fa,0x3785c0d7, -0x37c62e64,0x37163348,0x38409028,0x377cfae3,0x38007eda,0x37a38984,0x37598384,0x381767a1,0xb62c2557,0x38058a8d,0x386f0621,0xb94661bf,0x37438b08,0x3728cc11,0x356add33,0xb7f98534,0x37a77421,0x38884599,0x390dcde9,0x38a382fa,0x37a4d220,0xb7f294a5,0xb8860901,0xb8aa973d,0xb8f1b505, -0xb8a65590,0xb88b8007,0xb89eb91b,0xb88978af,0xb864b8e3,0xb8684851,0xb8f2a76b,0x3815323c,0x38284c89,0x383a71e3,0x372ce677,0x3795bf8e,0x37029ea2,0x3809216a,0xb6c4b2d3,0x37788590,0x37eaa8de,0xb79ef194,0x37ff5bce,0x36967c12,0xb87fe43f,0x38c83669,0xb7e24df8,0x386af245,0x37fe0c7b, -0x384ecbe4,0x38746eb6,0x388112eb,0x3827de8f,0x380479e2,0x37a7ac96,0x37cbbe41,0x37b58318,0x37344c86,0xb6c6cdd6,0xb7e14460,0xb7ebaf27,0xb7fe5a3b,0xb7f48d3b,0xb7b8d17a,0xb7c6acd8,0x36e8cd04,0xb83d4b7d,0xb922f4f7,0xb99505f0,0x38a6f27e,0xb779eb17,0xb912c20e,0xb91a09ae,0xb90af8b4, -0xb900bfdb,0xb907585c,0xb8f934a1,0xb8d94d1e,0xb6abf61d,0x38a4b41b,0xb98a74bb,0xb92859ae,0xb6d9e0d1, +const uint32_t defaultHRIR_rom_AlphaL48[470 * 128] = { +0x3e0946b9,0x3cda8822,0x3e23be7e,0x3e005914,0x3e095697,0x3e097781,0x3e102edf,0x3e12d807,0x3e1514fc,0x3e103703,0x3e0d2242,0x3e09c889,0x3e06fde7,0x3e04b4aa,0x3e035ecf,0x3e0249b7,0x3e0116dd,0x3e008502,0x3dfcee82,0x3dee77e2,0x3e15b7f1,0x3cac1e96,0xbc8dd29b,0xbd855185,0x3d35c945, +0xbc7e4c57,0xbd71b7fd,0xbd7da762,0xbd708def,0xbd3a07f7,0xbd7775d0,0xbd84cf24,0xbd7d084a,0xbc7d5814,0x3d78b324,0xbd72376a,0xbcb689c0,0xbcfdaebc,0x3e0e19d2,0x3e20943f,0x3e1fe583,0x3e2947bb,0x3e3c07e7,0x3e44e230,0x3e463c59,0x3e3a7208,0x3e2f6146,0x3e2475af,0x3e1bd4da,0x3e1633a9, +0x3e133ee1,0x3e106f87,0x3e0c1905,0x3e0b9f00,0x3e012569,0x3e050f51,0x3dde26d5,0xbc98ab09,0x3d834bef,0x3d4939f5,0x3d482c36,0x3d024bd4,0x3d6a83d8,0x3d821e8e,0x3d5ffe00,0x3cfc008e,0x3d77236f,0x3db4ee33,0x3d725256,0x3d886c90,0x3d26351e,0x3d0dfd26,0x3dd12939,0x3d10ba99,0x3dfb2a54, +0x3e3c0ce1,0x3e2f51ad,0x3e44fe4f,0x3e69011e,0x3e79b6ef,0x3e7ead61,0x3e681c55,0x3e528b5b,0x3e40f8f0,0x3e30412a,0x3e249720,0x3e1dcd44,0x3e17ea8e,0x3e0fd84f,0x3e0f109b,0x3df28777,0x3e02c0b4,0x3d941cab,0x3c9744a7,0x3cca5b4f,0x3ce22b66,0x3cf48be2,0x3b4d71a5,0x3cf9cc26,0x3b0c5102, +0x3d4eaa69,0xbc0403b5,0x3d311412,0x3ac23951,0x3cb3c0cc,0x3ccb38e0,0x3cfb92af,0x3c93d8f7,0x3d7f8f7c,0x3c72d39b,0x3ded5248,0x3e4463f2,0x3e3ff357,0x3e62d998,0x3e8f6193,0x3e9d806c,0x3e9f53b2,0x3e8adbed,0x3e70a50a,0x3e519182,0x3e377037,0x3e2667dd,0x3e1fa360,0x3e16cc8d,0x3e0c2d51, +0x3e0a2b6d,0x3de66f30,0x3dde58c8,0x3d70162c,0xbb07b324,0x3d1414b5,0xbba99d41,0x3c4ee703,0x3c407aaa,0x3c276d4d,0x3b13ec74,0x3aa9efd9,0x3c842da9,0x3b67fb36,0x3c8e01d4,0x3caf384b,0x3cc65f88,0x3c80d055,0x3cd1b0dd,0x3d6e3909,0x3d1e88d8,0x3e3b7e9f,0x3e859bf1,0x3e845e0e,0x3e9054ff, +0x3e9c071e,0x3ea54fc5,0x3eab806d,0x3eafd995,0x3ea9a776,0x3e9043f5,0x3e8f8083,0x3e859164,0x3e6c06bd,0x3e61a722,0x3e4d2911,0x3e3d71ed,0x3e100329,0x3e0a0aa7,0x3d939c7c,0xbb3f7ec8,0x3d14f8f2,0x3c1803e4,0x3c2be363,0xba8c87fd,0x3b88daa6,0x3b896a84,0x3c2877b4,0x3c7eb38d,0x3c0cda38, +0x3c88cfe7,0x3c1ed653,0x3d0b27a0,0x3c77d604,0x3d22e336,0x3d232893,0x3c2f1521,0x3e05fe24,0x3e98e515,0x3e929a97,0x3ea92656,0x3eaf7533,0x3eb3d49c,0x3eaf7201,0x3eaa72cd,0x3e9fac44,0x3e8e29cb,0x3e8a9344,0x3e88ace1,0x3e8a023b,0x3e7fab71,0x3e66d64d,0x3e59166d,0x3e2346f1,0x3e1e064b, +0x3d9a28eb,0x3c578178,0x3cc91f53,0x3c6e1a29,0x3cff0a29,0x3cbb1fa3,0x3c0059e0,0x3c35024a,0x3beaa7aa,0x3badfe87,0x3be6234e,0x3be6fc25,0x3cd825e5,0x3c8d5d85,0x3d6ff9c1,0x3d299c60,0x3da384de,0x3c7211c4,0x3e377094,0x3ec6b742,0x3ec8168a,0x3ee46daa,0x3ecbb4e6,0x3ebf9ea3,0x3eb34e6f, +0x3ea103a7,0x3e9ef1f0,0x3eb12067,0x3ebd1031,0x3ebd5740,0x3eb33e38,0x3e9b32aa,0x3e810713,0x3e578f26,0x3e21b090,0x3e24cd99,0x3d915eb8,0x3d0d722b,0x3d3dbb02,0x3c3ba57d,0x3c981e6e,0x3c8fb4f6,0x3c12a8a4,0x3bf64dec,0x3c35e6bf,0x3c8b9e2d,0x3c71f25d,0x3c1d3070,0x3c1fb5cb,0xbc903225, +0x3d5ee57e,0xbc44f25b,0x3dac1d85,0x3cf5cfab,0x3e7331a2,0x3ed4fc1e,0x3ec4c1bf,0x3ec12eff,0x3eb23512,0x3eaf525b,0x3eacf6c1,0x3eaeb471,0x3eae336e,0x3ea7d160,0x3ea5c4bd,0x3e9e2c2b,0x3e8f8dbc,0x3e830124,0x3e626837,0x3e3f0491,0x3e16eae3,0x3e1833c8,0x3da9f3fa,0xbbaf6ed6,0x3d0b8932, +0x3ce328a5,0x3cbc8919,0x3c9dbba2,0x3c0d359a,0x3caac95e,0x3b54748e,0x3cf3671d,0x3c9e8b9c,0x3c2bcfc6,0x3d206de6,0x3c7aa108,0x3d8697a0,0x3c8ae026,0x3db121b4,0x3d69d389,0x3e83f418,0x3ebf156e,0x3eafe411,0x3eaea3a5,0x3e9bed38,0x3e9677de,0x3e9cef80,0x3e94c65e,0x3e9adc5d,0x3ea7fae1, +0x3e9beef9,0x3e8e7730,0x3e7fe772,0x3e4fa9ec,0x3e28b022,0x3e14d67c,0x3e069843,0x3e185a4a,0x3dd19059,0x3c2d00b2,0x3d7166d5,0x3c936306,0x3c8e2bd8,0x3cdb518e,0x3cb890e0,0x3c57b628,0x3cbec185,0xbb87e856,0x3c98c8dc,0x3ca1029b,0x3d01b554,0x3d0ac25d,0x3cec6ffe,0x3cee9662,0x3de0714b, +0xbce98d9b,0x3e386ba2,0x3e89976b,0x3e673a6c,0x3e6f214f,0x3e71a15a,0x3e787d1b,0x3e7d13bb,0x3e6d1806,0x3e5a3fe7,0x3e5034f0,0x3e51f7f9,0x3e52b48e,0x3e4b57cf,0x3e42203e,0x3e2fae72,0x3e1f084e,0x3e10a292,0x3e2546dc,0x3da7575c,0x3c294def,0x3d86f19a,0x3c782adc,0x3d01d717,0x3cf1d649, +0x3c938bb4,0x3c6bc881,0x3bcba418,0x3d52a9be,0x3cc05127,0x3cbcb7e2,0x3d1a8f39,0x3ce37cc0,0x3d3dbb68,0x3d3e6c4b,0x3db6f271,0x3d80d214,0x3e09ba98,0x3e4a6f1a,0x3e389dec,0x3e54bc22,0x3e580e4c,0x3e62ae15,0x3e69a887,0x3e64ca0d,0x3e61bb61,0x3e5bf1bb,0x3e478711,0x3e32c224,0x3e193fcc, +0x3e126f66,0x3e057835,0x3dff5c28,0x3de59ac4,0x3e1034bf,0x3dc5c23e,0x3ccb6aa7,0x3d095181,0x3d079c70,0x3d1797d8,0x3a05956d,0x3d0f6e2c,0xbb1d316c,0x3d8153be,0xbc996fc2,0x3d3c1a97,0xba7e8773,0x3cb1ff74,0x3cfafdaf,0x3cfd697b,0x3ca010df,0x3d9b0baf,0xbd4d18e7,0x3e0e0b77,0x3e21fbb1, +0x3e1d45cc,0x3e28e3d0,0x3e2c5a0d,0x3e344370,0x3e3c4bf2,0x3e328761,0x3e297970,0x3e21ab52,0x3e1728aa,0x3e0dcd07,0x3dfca553,0x3dfef351,0x3dfb69b7,0x3e000221,0x3df51e38,0x3e02457b,0x3de47ba7,0xbcc4c2d0,0x3d99f609,0x3d7b4357,0x3d7f3fa8,0x3d2d2500,0x3d9b73dc,0x3dae8405,0x3d902663, +0x3d283bdc,0x3da0f5b6,0x3ddbc642,0x3d8c91db,0x3da0113c,0x3d4b4723,0x3d33a63e,0x3de03105,0x3d07f470,0x3e411460,0x3e16fda3,0x3e20795b,0x3e222024,0x3e245bb9,0x3e263cc7,0x3e2a360f,0x3e248a4c,0x3e20f733,0x3e1cb846,0x3e19d303,0x3e1725c6,0x3e134281,0x3e150f22,0x3e14bc55,0x3e14f691, +0x3e148298,0x3e0edaa3,0x3e35c588,0x3cc6cd9e,0xbcbdbd12,0xbda839e2,0x3d5e05e9,0xbcac9200,0xbd9d2375,0xbda5f23d,0xbd9b9263,0xbd7150bf,0xbd9f86ce,0xbda60e9c,0xbd9ad7cb,0xbcae7828,0x3d905fb4,0xbd98cb6a,0xbcdf624f,0x3e2ff1bf,0x3ebd3ed6,0x3e85ff25,0x3ec77f67,0x3eb116d3,0x3ebbf09e, +0x3ebd2dd6,0x3ec53e20,0x3ec8461f,0x3ecb1ef5,0x3ec4b1aa,0x3ec0b91a,0x3ebc8f5b,0x3eb92678,0x3eb61bb0,0x3eb3c259,0x3eb1e212,0x3eb01796,0x3eae97cc,0x3eacab4e,0x3ea41213,0x3eb82be2,0x3e75924e,0x3e1b28ef,0xbcb0d470,0x3e8b9981,0x3e214663,0xbbdb5345,0xbbbfa6ca,0xbb03b651,0x3ca1cc97, +0x3bbdcea6,0x3ba9e7dd,0x3c4f1d3d,0x3e2847f3,0x3e9affa0,0x3aa701c8,0x3e20848a,0x3e06be5f,0x3ed2e518,0x3ed43395,0x3ee08ee1,0x3eeb0099,0x3f019a6e,0x3f066d86,0x3f073414,0x3efda472,0x3eef8f7d,0x3ee2b842,0x3ed82a6d,0x3ecfe965,0x3eca23ce,0x3ec4a6ef,0x3ebf161d,0x3ebbc1c0,0x3eb29787, +0x3eacbe4d,0x3ea68ea7,0x3de0cd86,0x3e73cb53,0x3e6ddf35,0x3e514c0d,0x3e3695e7,0x3e6d060c,0x3e740a6f,0x3e7967b6,0x3e4e9798,0x3e807dc3,0x3e8c1631,0x3e6c4d12,0x3e82eae6,0x3e59504e,0x3e619e63,0x3ea7a468,0x3e82344c,0x3ec3f0e7,0x3eec9c65,0x3ef8d4cc,0x3f091366,0x3f212e06,0x3f2a2b2c, +0x3f2d2dee,0x3f1dd82a,0x3f100df5,0x3f051872,0x3ef5d0ca,0x3ee63cc4,0x3eda3959,0x3ecf7ecb,0x3ec467c8,0x3ebe3603,0x3ea87efd,0x3ea332a5,0x3e732299,0x3e25710c,0x3e114bd5,0x3e197a72,0x3e140d1e,0x3db69c28,0x3e0fb222,0x3d9d2578,0x3e2d57c3,0x3da77e1d,0x3e1bd1f7,0x3dc8d666,0x3e10db41, +0x3e19f396,0x3e2e0a33,0x3e2e3926,0x3e864044,0x3e4da63d,0x3ec714be,0x3ef7e330,0x3f089ee4,0x3f1f46de,0x3f471ab4,0x3f56c34b,0x3f578e4d,0x3f3af3bf,0x3f22fdd2,0x3f10483a,0x3f010999,0x3ee975b3,0x3edadbae,0x3ecb824e,0x3ebc325b,0x3eb379c9,0x3e99b089,0x3e87696c,0x3e402558,0x3d8b8d93, +0x3ddfb8fa,0x3cf6f68f,0x3d6036d4,0x3d343a6c,0x3d121ae5,0x3ccc41aa,0x3c4c10e4,0x3d5921a9,0x3cfd1556,0x3d85245f,0x3da8136f,0x3dd8213c,0x3df2a1af,0x3e056df6,0x3e69127d,0x3ea19025,0x3f041af2,0x3f23f057,0x3f361f70,0x3f49ae8c,0x3f589a80,0x3f65d06d,0x3f723b41,0x3f780f45,0x3f6e7756, +0x3f494461,0x3f4670f9,0x3f3a9079,0x3f2b57ce,0x3f2002e2,0x3f122da7,0x3f058830,0x3ed90001,0x3ebb6a45,0x3e7fff7b,0x3dc6a0c3,0x3e02122b,0x3dac5c32,0x3d76a820,0x3d050cee,0x3ce809e8,0x3cf40558,0x3d243edb,0x3d7b1be9,0x3d5a323d,0x3da3941d,0x3daabcbd,0x3e0f0828,0x3e0f4162,0x3e44b507, +0x3e8375c3,0x3e83310d,0x3efb4175,0x3f45f009,0x3f54e6a7,0x3f6de6a0,0x3f7a2d01,0x3f812032,0x3f80d156,0x3f80564a,0x3f73dfd4,0x3f5bb2ca,0x3f567cc9,0x3f4e7093,0x3f475c4c,0x3f33bfa5,0x3f1fd5d0,0x3f113008,0x3ee9d4fb,0x3ed2f1e6,0x3e8c5947,0x3e1ffbad,0x3e0ee18c,0x3ddf89c7,0x3de1bd54, +0x3db01182,0x3d518021,0x3d4e849f,0x3d38b970,0x3d241008,0x3d69fea8,0x3d65c388,0x3deba8b1,0x3dea4a6f,0x3e652c85,0x3e61e9fc,0x3ea84c23,0x3e9851fa,0x3f249648,0x3f74e05c,0x3f8107f3,0x3f877478,0x3f7fcce3,0x3f75ad5b,0x3f72c2b1,0x3f68c6c1,0x3f6c4bda,0x3f7be416,0x3f7b3f6e,0x3f701124, +0x3f5d1af4,0x3f4033cb,0x3f24cb44,0x3f0fd824,0x3ee41a64,0x3ecf0590,0x3e855b03,0x3e4cb6a1,0x3e36976c,0x3dfe98b4,0x3de31de7,0x3dbb5649,0x3d8b2ee5,0x3d57647e,0x3d80b827,0x3dbbc9a3,0x3d880978,0x3d8af7ca,0x3da3de6a,0x3d83c6ce,0x3e619ee3,0x3e29208f,0x3eab2137,0x3ebef261,0x3f3dd1b8, +0x3f6d5cd4,0x3f6e4061,0x3f5952dc,0x3f614892,0x3f6d3ed1,0x3f7b0388,0x3f7b6940,0x3f77f19f,0x3f69843d,0x3f64c634,0x3f589ea0,0x3f43d957,0x3f3243ce,0x3f1abac3,0x3efdfee9,0x3ed123ea,0x3ebf2f36,0x3e9652b6,0x3e025b1f,0x3e3c35e0,0x3e268af5,0x3dfe9a9d,0x3ddde630,0x3d959faf,0x3da8f647, +0x3d7035fc,0x3e23c541,0x3dcd9e4b,0x3d9f6ee9,0x3e14d760,0x3dcfd283,0x3e75c01b,0x3e323130,0x3ea45b82,0x3ed36dd3,0x3f3a6d59,0x3f624d75,0x3f669800,0x3f616e88,0x3f5bd732,0x3f59fa97,0x3f6636f9,0x3f5add3a,0x3f5de807,0x3f64ff72,0x3f552c8d,0x3f4279f5,0x3f2f2b12,0x3f10c7f3,0x3ef4066c, +0x3ed588be,0x3ed3c7b0,0x3ed9699e,0x3ebc3f51,0x3e2a05bd,0x3e777ba3,0x3e0aaaab,0x3dface53,0x3e146853,0x3de73663,0x3da32009,0x3dde083d,0x3d6d9bec,0x3de8f612,0x3e016a33,0x3e308a43,0x3e403346,0x3e3efba1,0x3e534426,0x3ee76b83,0x3e7ea3e4,0x3f194052,0x3f385744,0x3f306a9b,0x3f3166b5, +0x3f3aae95,0x3f3f7c01,0x3f424a08,0x3f3d02c9,0x3f33b5d5,0x3f2bd395,0x3f25268d,0x3f1d894c,0x3f12cc9a,0x3f07d581,0x3ef6930f,0x3ee1319c,0x3edf2b38,0x3eefc916,0x3ea4eff3,0x3e46bad4,0x3e8dc1f7,0x3e3b8a50,0x3e420b02,0x3e176987,0x3dd7db6c,0x3dcf8fbd,0x3d9e2e37,0x3e455924,0x3e051fd3, +0x3e0b86bf,0x3e3895ab,0x3e2f689a,0x3e76d331,0x3e80591a,0x3ec77077,0x3eaf91fe,0x3ef883cd,0x3f15d7f1,0x3f15ac61,0x3f236cbe,0x3f28634d,0x3f2e4887,0x3f336da8,0x3f2e624f,0x3f2a414e,0x3f2507c4,0x3f187cc1,0x3f0be05c,0x3ef88e81,0x3eeee0f1,0x3edf8bf3,0x3ed2c33f,0x3ec5cb11,0x3ed8e7f3, +0x3eb58baa,0x3e652aa1,0x3e56d3e2,0x3e4b4280,0x3e48898c,0x3dd4562d,0x3e406268,0x3daa265d,0x3e789e3e,0x3da838d2,0x3e44e16f,0x3dd6644c,0x3e17fde1,0x3e414260,0x3e57ee3a,0x3e5bdffb,0x3eacf368,0x3dc2c6c6,0x3ef9c8bb,0x3efcc186,0x3f004aee,0x3f054759,0x3f0861fc,0x3f0cc7c1,0x3f126786, +0x3f0c8cf1,0x3f07cede,0x3f036331,0x3efaca81,0x3eefd44d,0x3edefc6b,0x3edcad26,0x3ed828cf,0x3ed6a31d,0x3ed1dee1,0x3ed1444a,0x3eccc8f3,0x3ddbbc41,0x3ea21b50,0x3ea2040d,0x3e955b03,0x3e82bb9d,0x3eaba057,0x3eb40899,0x3eb2861b,0x3e8de245,0x3eb6f61d,0x3ec37471,0x3e9b3dc2,0x3eabcdb3, +0x3e8c3964,0x3e915348,0x3ed34173,0x3eaaaef8,0x3f093a59,0x3eed411b,0x3ef98507,0x3efa4410,0x3efda0a1,0x3effc06c,0x3f022ae8,0x3efdbdb2,0x3ef98a14,0x3ef49ce0,0x3ef14891,0x3eee21ae,0x3eea0656,0x3eeb400a,0x3eeacebb,0x3eea1206,0x3ee9d7fc,0x3ee123a1,0x3f01cddb,0x3e9e31a3,0x3e3d0aa3, +0xbd68f5cd,0x3ebb6283,0x3e481509,0xbd0bcc24,0xbd1b115c,0xbd035494,0x3b53bb83,0xbcc99b99,0xbcbd8c33,0xbc2c35b3,0x3e4a99e7,0x3ecd598d,0xbcefc292,0x3e3aadf3,0x3f082c89,0x3e55be8d,0x3eae2fb6,0x3e13efa3,0x3e4bd768,0x3e49c352,0x3e53db90,0x3e532908,0x3e536bdb,0x3e536011,0x3e51f137, +0x3e5108c0,0x3e50ce85,0x3e4f11a3,0x3e4c6782,0x3e474ee5,0x3e4381d8,0x3e404ac5,0x3e3d15a6,0x3e3b8f90,0x3e3ec61e,0x3e13435a,0x3ea79e5d,0x3ec02edb,0x3ec21f59,0x3e93dfc3,0x3ebc7bf8,0x3ebdba2b,0x3ec1eb9b,0x3ec0202d,0x3eb8623e,0x3ec58aee,0x3eca56d0,0x3ec97303,0x3ebffffb,0x3e8cf710, +0x3ec87e6f,0x3ecd7a72,0x3edebed0,0x3e716207,0x3e5b3b5c,0x3e796a4e,0x3e836eb2,0x3e85572c,0x3e85a47b,0x3e844e92,0x3e812c88,0x3e7fc3b8,0x3e80883d,0x3e7d369a,0x3e732ca3,0x3e635f14,0x3e563887,0x3e4e0258,0x3e446ddf,0x3e459a03,0x3e30e64c,0x3e4db36e,0x3eaf94a0,0x3e69e24b,0x3e7ed26b, +0x3e6dbf3c,0x3e79b5e0,0x3e5c7e2d,0x3e4fd785,0x3e64f15a,0x3e839a34,0x3e5c946a,0x3e36ed83,0x3e6987fa,0x3e6f4cd2,0x3e8f4a9b,0x3e997888,0x3e6ab2ec,0x3ead1e1a,0x3e875fbc,0x3e4b6b86,0x3e8da3eb,0x3e9c0548,0x3ea11091,0x3ea05a1d,0x3e9e2f27,0x3e9be936,0x3e9a683d,0x3e98bc1b,0x3e945927, +0x3e8ccc59,0x3e7cc492,0x3e655715,0x3e532393,0x3e3f9c1e,0x3e3e9d75,0x3e15e2f2,0x3e4946e5,0x3e79a868,0x3e5077a1,0x3e49b60e,0x3e30ea83,0x3e3c972b,0x3e1c8e32,0x3e329cfe,0x3e010499,0x3e4d5b5e,0x3e09974c,0x3e4a3abf,0x3e43a9a5,0x3e593b03,0x3e67cd83,0x3e89afde,0x3e83b20a,0x3eaff798, +0x3e980c08,0x3e62e4df,0x3e9c385e,0x3eb4bde8,0x3ebe6053,0x3ebe0a77,0x3eb5b170,0x3ead837e,0x3ea96692,0x3ea9cecc,0x3ea52136,0x3e962f2b,0x3e7c54f6,0x3e58e900,0x3e3e8a96,0x3e23826f,0x3e18331b,0x3df33888,0x3e181f3d,0x3e2c8091,0x3dd26139,0x3dddfe92,0x3d95840d,0x3d595bc0,0x3d26bf1c, +0x3d3459a1,0x3d24e120,0x3d25b6f1,0x3d6849e6,0x3d801c35,0x3dbb6793,0x3e0401be,0x3e3935ab,0x3e3c23b2,0x3e57a5b4,0x3ed16a2f,0x3e5c721e,0x3e51f9ce,0x3eac6b89,0x3ed3937d,0x3ed16423,0x3edd7cb8,0x3eeddbca,0x3f00f7fd,0x3f0277d9,0x3efc087e,0x3ee88f78,0x3edf692c,0x3ee5b015,0x3ec3c666, +0x3eb0c575,0x3ea13417,0x3e9a1242,0x3e68e85b,0x3e640d17,0x3e6dcf1a,0x3e12cc97,0x3e084db3,0x3dc31f94,0x3da856a8,0x3d654c1f,0x3d645321,0x3d60ad33,0x3d90661b,0x3d957bd2,0x3db59ecd,0x3e029ab1,0x3e05e38f,0x3e508cbf,0x3e5de8a5,0x3ea3073e,0x3f075805,0x3edf8cf8,0x3e8519be,0x3ecae8ce, +0x3ee20cb7,0x3efa3fe1,0x3f087625,0x3f0fe399,0x3f21692a,0x3f2316dc,0x3f1d5177,0x3f156e3f,0x3f032d99,0x3ed2c568,0x3eaeb4b4,0x3e950643,0x3e7a9b9e,0x3e88e70c,0x3e6a84d3,0x3e88e167,0x3e94ce39,0x3e584edd,0x3e33547c,0x3dd014d1,0x3d9c68dd,0x3d94095c,0x3d7510c7,0x3d8dd7c5,0x3da5d09c, +0x3dbc698a,0x3de157ca,0x3e16793a,0x3e49c2a0,0x3e5fa00b,0x3e9fe52b,0x3eb3717c,0x3f1409f1,0x3ef799b4,0x3e476ed5,0x3e84f22a,0x3e3cdd8c,0x3ea673a0,0x3ec7cdea,0x3eebbd2e,0x3f127624,0x3f19eb1e,0x3f0140ee,0x3eb07b43,0x3e68e60c,0x3e23d266,0x3e1e5f39,0x3e324300,0x3e553817,0x3e5c9fcf, +0x3e1f8a64,0x3e7987d2,0x3e87203c,0x3e531542,0x3e721d19,0x3e291f8e,0x3e0c7351,0x3e06c74c,0x3de7e9dd,0x3de9ae6f,0x3e24d1d9,0x3ddb2473,0x3e00b7bc,0x3e20ee88,0x3e8369c7,0x3e82f7b2,0x3edca560,0x3eb1fa46,0x3f192623,0x3eb87f45,0x3d9007e5,0x3e62b967,0x3e7d428a,0x3ec52732,0x3ef71141, +0x3f17c5e5,0x3f0e23ce,0x3efc0f6c,0x3ecf60d1,0x3eb64728,0x3ea02631,0x3e8e45ad,0x3e85e81f,0x3e7824a2,0x3e470f2c,0x3e47e88e,0x3e1f1bd0,0x3e803303,0x3ea64085,0x3e84d8e7,0x3e787a16,0x3e454a59,0x3e27e3f3,0x3e0b6aff,0x3dc70a83,0x3e046723,0x3e862f15,0x3e1b28ea,0x3e08d693,0x3e0d66fe, +0x3e475638,0x3e5c5430,0x3ea923ea,0x3eb30c44,0x3f0a005b,0x3e99edd6,0x3e5e85f6,0x3ec4c0c5,0x3ed18569,0x3f0bac7b,0x3f18641d,0x3f1966a4,0x3f0f6954,0x3ef8a9d8,0x3ec1e3c8,0x3eab5e60,0x3e98ac77,0x3e8dc005,0x3e85115e,0x3e851de0,0x3e75e2f7,0x3e9706f2,0x3e8c1466,0x3eab5b4f,0x3eba5f6a, +0x3e951475,0x3e85f70d,0x3e711032,0x3e5e0540,0x3e336125,0x3e13323a,0x3e205bc6,0x3e4cd5c7,0x3e410249,0x3e524d4b,0x3e6a03ad,0x3e7e2ef6,0x3e8cdc25,0x3eaefe8f,0x3eaf6ff6,0x3f2c93a4,0x3eded8e6,0x3ec107e2,0x3f01eef4,0x3f083e04,0x3f18d992,0x3f1ba624,0x3f161cca,0x3f17d5c4,0x3f16b584, +0x3f0ec35d,0x3ef01b73,0x3ec666f5,0x3ea84b1f,0x3e8fbe9b,0x3e88b632,0x3e8a6029,0x3eaca6b4,0x3ea705a5,0x3ec10a2f,0x3ed39aec,0x3ea7ceaf,0x3eb0c8d1,0x3e8c7dca,0x3e5f5e0b,0x3e3f3ac7,0x3e3dc32d,0x3e404610,0x3e5d4c4d,0x3e608dc7,0x3e67eb53,0x3e6be66d,0x3e8e6f2d,0x3ea3428e,0x3eb8a5b3, +0x3ed3fdcd,0x3ef6f2d6,0x3ef9a3d6,0x3ee95a78,0x3f052e94,0x3f086451,0x3f07cd7f,0x3f052c2f,0x3f054454,0x3efab8b9,0x3eea2cd3,0x3edbe110,0x3ed99509,0x3ed73824,0x3ed2db1e,0x3ed135fa,0x3ed1224c,0x3ec855a3,0x3ec3a1b4,0x3eab9cb8,0x3ebb4a32,0x3ece96ef,0x3eb733ca,0x3ea9b41a,0x3e9cbe46, +0x3e957881,0x3e909a19,0x3e8aaf0a,0x3e85f9b9,0x3e99e1a9,0x3e80933f,0x3e92721a,0x3e87c778,0x3ea22da3,0x3eb6c48b,0x3ed59bcb,0x3edbc045,0x3f0df794,0x3eed564f,0x3edb988b,0x3ee69c23,0x3ee5fe78,0x3eeba8d9,0x3eef58b5,0x3ef562fc,0x3ef54470,0x3ef8433e,0x3ef900c9,0x3efa3a34,0x3efa7a1b, +0x3efdd6bc,0x3ef37e13,0x3eea2766,0x3ee08506,0x3edcaa78,0x3ecf2e81,0x3ed4cf85,0x3ee66b9a,0x3ec995c3,0x3ed63097,0x3ecb8902,0x3eca9bda,0x3ebf90be,0x3ebbac48,0x3ece8c1f,0x3ed6c98a,0x3ecb5caf,0x3eb7d719,0x3ec52a16,0x3ece17b3,0x3edf40f6,0x3eec25fd,0x3edebdb5,0x3f074ac6,0x3eb6fde1, +0x3ec9108c,0x3ec97bb1,0x3ec8e6cf,0x3ecad631,0x3ecb9155,0x3eccaa62,0x3ecce45b,0x3ecd37b5,0x3ecdc832,0x3ecdc40c,0x3ecda29d,0x3eceef90,0x3ecb6191,0x3ec9f087,0x3ec72064,0x3ec548a0,0x3ec22b59,0x3eb244cf,0x3f0484b9,0x3f0b5159,0x3ef1a06d,0x3ef7e839,0x3f09d38f,0x3ef5d334,0x3efa881d, +0x3ef62840,0x3ef0c3e0,0x3efb6fb0,0x3eff8d0f,0x3efd3791,0x3f0b8c5d,0x3ef87a0d,0x3efa945e,0x3f0fbd4b,0x3ed73653,0xbdb201ad,0xbc6b6a38,0xbe0655e8,0xbda28409,0xbdce0857,0xbdc6a3c8,0xbde15728,0xbdeb1b8a,0xbdfe149c,0xbdde943f,0xbdce1386,0xbdbc3f97,0xbdb4cf37,0xbdaf51be,0xbdaeca35, +0xbdb13388,0xbdb0e4fd,0xbdaf2df0,0xbda96bc5,0xbd83d454,0xbddcd621,0x3b7f1057,0x3de339bf,0x3eb366a2,0xbd322b83,0x3dc11e80,0x3ea4f518,0x3ea2ebe5,0x3e9ffd45,0x3e95506d,0x3e99b85f,0x3e9a738c,0x3e96e79d,0x3db7530f,0xbd994030,0x3ea8cc5a,0x3de20d2b,0x3e3f00d2,0xbdff1145,0xbde46434, +0xbe07e255,0xbe107136,0xbe39f159,0xbe498ea7,0xbe564dae,0xbe292c7b,0xbe0a08a5,0xbddd3cfb,0xbdc07159,0xbdb369dd,0xbdb92f00,0xbdc3b270,0xbdc35420,0xbdbf82d3,0xbda2bdbb,0xbd86287b,0xbd882e4a,0x3e2f7883,0x3c8ced72,0x3b105ac0,0x3d19ab5c,0x3d70afd7,0xbc7dac7b,0xbc9ec368,0xbd043276, +0x3c7e0a99,0xbd2709d1,0xbd675af0,0x3b9aeca6,0xbc6a4a42,0x3d467fdf,0x3d21742a,0xbd84b009,0x3c84ebab,0xbd8783d4,0xbe080f0a,0xbe0e5024,0xbe2a4aff,0xbe83fa5a,0xbe934c21,0xbea47363,0xbe6e7f60,0xbe2b5cbd,0xbdfbcd3f,0xbdc899a3,0xbdb76cba,0xbdc0ee14,0xbdd4f7e4,0xbdd617b9,0xbdd01359, +0xbd873041,0xbd6246a0,0x3c4be932,0x3d870cd6,0x3da505ca,0x3d61adef,0x3d37300c,0x3db5279b,0x3cd9b207,0x3dc3c691,0x3ac12c61,0x3daee4af,0x3c5ecd69,0x3d88f95e,0x3d147db7,0x3d591e3e,0x3d550a4e,0x3d65cf85,0xbc939b06,0x3dabb828,0xbd24ad70,0xbde49be4,0xbe19dedb,0xbe5d38a8,0xbebf45a4, +0xbedce835,0xbeed5324,0xbe991e0a,0xbe38c3a2,0xbdcdf056,0xbd83e457,0xbd406b4f,0xbd8a2cd9,0xbdb660e4,0xbdbd4f75,0xbdba260e,0xbd518c88,0xbc6877d7,0x3d17b64d,0x3de4f26f,0x3d816e99,0x3dcd4b48,0x3d68f7ea,0x3d3d5289,0x3d2a2745,0x3d29683c,0x3d567c00,0x3cdbb79e,0x3d1d6e0b,0x3cb9efe9, +0x3d0cfeb5,0x3d4b8cb7,0x3d6abc43,0x3d868a93,0x3b64a2bb,0xbd3b8a74,0xbe6e5786,0xbe884715,0xbe97c166,0xbea703f1,0xbebad87f,0xbecc42e9,0xbeeb20d7,0xbeeea2dc,0xbed3c55b,0xbe4124b7,0xbe800afd,0xbe8028b7,0xbe62fda8,0xbe713635,0xbe621bfe,0xbe448939,0xbdd31e79,0xbd7e716b,0x3ca0816b, +0x3e11f253,0x3daada6e,0x3d90c930,0x3d8478fc,0x3d859044,0x3d57bf58,0x3d615c18,0x3d39cde7,0x3cfda942,0x3ca86fd5,0x3c1a55f4,0x3cf4bbee,0x3a3f7f74,0x3ce315cf,0x3c430b1f,0xbb9f16fb,0x3e37ddb6,0xbdd6067d,0xbef3232c,0xbefe6b69,0xbef270e0,0xbeeae5fb,0xbeeddeae,0xbf0010ea,0xbef5845f, +0xbee15a59,0xbeb18983,0xbeca77ba,0xbedbfdde,0xbef09b88,0xbed2a260,0xbeabddb2,0xbe8bfd3f,0xbe042d5c,0xbda45369,0x3cfc5823,0x3df7ab2e,0x3db357ed,0x3d8185e9,0x3cb0d6de,0x3c29a5fd,0x3cc83eab,0x3cac1c4b,0x3d2623dc,0x3dac8db7,0x3d82bdba,0x3dbaae33,0x3db3aa09,0x3de559fc,0x3d11ded3, +0x3dde58a1,0x3cf34f2d,0x3dfdf6f2,0xbe93c025,0xbf179aaf,0xbf0cf00d,0xbee52f69,0xbea15972,0xbe74a4cf,0xbe9edda2,0xbe8ca11b,0xbebcae65,0xbf12e72d,0xbf2c4a1f,0xbf3083b1,0xbf232a57,0xbf072a87,0xbed83771,0xbeadaf70,0xbe4797a5,0xbe05130d,0x3cb602be,0x3d74e24f,0x3d9e7e2f,0x3df2c710, +0x3d932755,0x3d9846d7,0x3dd51195,0x3df4d22c,0x3de327ec,0x3e12b33a,0x3db12a3a,0x3db64562,0x3dd5a504,0x3e3315fa,0x3d2cdc04,0x3e1db7f5,0x3c882437,0x3ccb8aeb,0xbeb56cd5,0xbece1438,0xbe8eb240,0x3dc6cabc,0xbd5c5510,0xbe394a1d,0xbea6b271,0xbec22683,0xbeeb3386,0xbefa2111,0xbf0e1324, +0xbf10df60,0xbf02d044,0xbee76535,0xbeb5adaf,0xbe72cccb,0xbe10f70d,0xbdc4bc27,0xbc50222c,0x3e3560f2,0x3dd9e231,0x3ddd657a,0x3ddcbcad,0x3db0b3e2,0x3dc75ff9,0x3d3c6de7,0x3dcef1e5,0x3e463d69,0x3dcb5133,0x3db87489,0x3d61fd2b,0x3e0769c7,0x3cf4b1db,0x3e1c4d21,0x3d93a3da,0xbd15fb1b, +0xbeafe957,0xbea50a97,0xbe857b4a,0xbe1bedde,0xbdd2516e,0xbdc8d978,0xbe7cbfc0,0xbe8cb2a3,0xbec474b6,0xbef85efb,0xbef6863a,0xbee15511,0xbec38b28,0xbe87ac64,0xbe34d49c,0xbdfd8caf,0xbde774ff,0xbde0e4c5,0xbcb22ef9,0x3e58b32e,0x3dbd259b,0x3e2c7c24,0x3e23d9e2,0x3dd2bf9b,0x3decd779, +0x3df0a228,0x3ddcffe1,0x3e59d2dc,0x3df38f69,0x3dd4b6c5,0x3d5f7b06,0x3d8308c2,0x3dc541a0,0x3e001930,0xbe0fa4a8,0x3e660ff6,0xbe1c4805,0xbe5fb183,0xbde2e96b,0xbd0ad986,0xbd5232c1,0xbda51642,0xbe1b36db,0xbe409539,0xbe482cf3,0xbe4dcb70,0xbe6eeff9,0xbe71bec8,0xbe53663c,0xbe319b90, +0xbdfeaf54,0xbdac2981,0xbd56ee39,0xbdd1ee17,0x3d7ac9ad,0x3e5cfc82,0x3d89935b,0x3e198077,0x3dccce98,0x3df7d0d4,0x3e14cc89,0x3e157d80,0x3e381f29,0x3d9765ba,0x3e1d43f0,0x3e10b583,0x3d97c802,0x3dfca1d2,0x3d97e39a,0x3de71724,0xbbfc6c3e,0x3e2ca47e,0x3c929c7c,0xbd85b6fc,0xbc49955e, +0xbcccd0d2,0xbda5c928,0xbe00cea0,0xbe1f6c55,0xbe25465d,0xbe2daa91,0xbe3132fd,0xbe018e98,0xbdad3791,0xbd04cdd8,0xbc78e0a9,0x3c8d1086,0x3d278598,0x3d377daf,0xbcf23e84,0x3d09bf01,0x3e34b4ba,0x3e307cc7,0x3e279d3e,0x3e18a291,0x3e79aa4f,0x3e024dc4,0x3e7f648f,0x3d676922,0x3e73878e, +0x3dec695c,0x3e6dc126,0x3e38582d,0x3e3b35ab,0x3e40b359,0x3e6c72d1,0x3e00675b,0x3ef7cec3,0xbce27399,0xbcb34ad7,0xbca22ce8,0xbceb2081,0xbcccd3f6,0xbcd685a7,0xbd0e542e,0xbc491455,0x3c0b9cab,0x3ccd5d41,0x3d5296d5,0x3d99e200,0x3dec134a,0x3dd00941,0x3dbbafc0,0x3d9e49fb,0x3d8d67fb, +0x3d555f19,0x3d352321,0x3ed2c893,0x3dea5de7,0x3dc596d4,0x3df5b274,0x3e156d30,0x3c88f8d7,0x3bca204e,0x3c6b92e2,0x3de4eb45,0x3c829ce3,0xbc7c902c,0x3db81761,0x3d95cbc6,0x3e3877d2,0x3e3a8456,0x3ceaa69b,0x3e029994,0xbe187fcb,0xbd3806a0,0xbd93150e,0xbd90344d,0xbd92e86f,0xbd92fde9, +0xbd97ecdb,0xbd76a8cb,0xbd4a10bf,0xbd1648d7,0xbcf1a826,0xbcbcbf98,0xbc3c9939,0xbcce0896,0xbd00982c,0xbd1b21ce,0xbd3311f3,0xbcea752f,0xbe00cbca,0x3e0fac00,0x3e9d8a3b,0x3f235652,0x3d2b01a1,0x3e8cff24,0x3f170dec,0x3f18db13,0x3f169afc,0x3f0bc843,0x3f14871d,0x3f15187e,0x3f1082ee, +0x3e90a105,0x3bc6fd74,0x3f1ef3c7,0x3ea91212,0xbdc27cf0,0x3d898d54,0xbd24f180,0x3de8cfcc,0x3d7ff2d6,0x3d8aaa46,0x3d62b19d,0x3d838e2d,0x3d857bce,0x3d778215,0x3d72d977,0x3d694cc6,0x3d60b372,0x3d5c03b6,0x3d5dbc90,0x3d702527,0x3d70cfb0,0x3d7a36a1,0x3d831374,0x3d8bbc26,0x3d82f1cb, +0x3dcc68ff,0xbd14b0e2,0xbdcb4514,0xbe0d6d0d,0xbc0b2b9b,0xbdc46bef,0xbe0994a5,0xbe0ee024,0xbe0d93b3,0xbdfb770b,0xbe1735ff,0xbe1db7e5,0xbe199807,0xbdcbe99b,0x3c02a60d,0xbe19564f,0xbdf7a34f,0xbe0fbcd6,0x3da60fd6,0x3db0f135,0x3d8da830,0x3d51b373,0x3d853211,0x3d80accf,0x3d5395f9, +0x3d6c3782,0x3d651ff1,0x3d513d2b,0x3d3fd30d,0x3d5006df,0x3d8384ab,0x3d85a35d,0x3d8fa594,0x3da0f717,0x3dabdc43,0x3dc61a20,0x3d9e5313,0xbd8b41c9,0x3cfa3586,0x3c23a8a7,0x3c338a62,0xbace12dd,0x3cb1e71c,0x3d150a7a,0x3cd851af,0xbbac1dcc,0x3cf0a693,0x3d5bcb6a,0x3c6cdf88,0x3c94bc59, +0xbcb90f23,0xbcfb150c,0x3d5abbeb,0xbc74ca0f,0x3dbbf53f,0x3e1cc0cb,0x3db35eb7,0x3d31e90c,0x3d7a3900,0x3d82fcc9,0x3d147bee,0x3d26b04c,0x3d06e06d,0x3cfb55df,0x3cc1f295,0x3cb8f1b6,0x3d352948,0x3d319d91,0x3d63aa13,0x3d975443,0x3daff8b0,0x3df14128,0x3d910fa1,0x3c85dc0a,0x3d0ada37, +0x3ca7c9bf,0x3d10d3f3,0x3c496a1c,0x3d02c98a,0x3c429f99,0x3d88d81b,0x39b383f0,0x3d30f83d,0xbc83d5ef,0x3bbf325f,0x391bb097,0x3c0afecd,0xbcb987e4,0x3ce00b8b,0xbc3787d6,0x3dd8039d,0x3e3535dd,0x3de19f01,0x3d0bd09d,0x3d1098eb,0x3ccef337,0x3ac637c1,0x3d2bdb38,0x3d73f364,0x3d682faf, +0x3d402003,0x3d67ce6c,0x3db8a455,0x3dac8237,0x3dbf6655,0x3ded0390,0x3e09acb8,0x3e1a215e,0x3de954d3,0x3d524bf0,0x3d9b3d97,0x3d3e7c2c,0x3d7431b7,0x3d75b2d2,0x3d55595a,0x3d440033,0x3d2b0405,0x3d83b564,0x3d0e1dc2,0x3d37483b,0x3d27b67b,0x3d0a29b5,0x3c3078f9,0x3cc5c33c,0x3daba852, +0xbc83ae93,0x3e94b1e9,0x3ea8f31a,0x3e4a14aa,0x3e02faa6,0x3e4187bb,0x3e269c51,0x3db8d312,0xbdb7c00c,0xbe4438aa,0xbe4bb9eb,0xbe559184,0xbe652283,0xbe88088a,0xbe534419,0xbe1d9869,0xbdd8dd76,0xbd4e6944,0x3ccdd94d,0x3d229c65,0x3ccfa127,0x3d85e8c4,0x3d61f3d8,0x3d365546,0x3d004fa1, +0x3d19f267,0x3d440873,0x3d483da4,0x3d130991,0x3cb95359,0x3cfc14a3,0x3cd599bc,0x3db3092f,0x3d48e40e,0x3d9a482e,0x3d18b2ca,0xbe28d948,0x3cbcd5d1,0x3ea43e6d,0x3e5a3110,0x3e731bef,0x3e2ddd2d,0x3d86e905,0xbcd3a035,0xbe6db6f9,0xbea08203,0xbea87a9d,0xbeafae0d,0xbe905829,0xbe2239b3, +0xbd7756cd,0x3c58ad49,0x3d8c5fe9,0x3d92537e,0x3dcb2f9f,0x3d4c6f3b,0xbcd53e40,0x3b894976,0x3b1d602e,0x3d3a7af6,0x3d3323ea,0x3c62d560,0x3ce713a6,0x3d180090,0x3da2b191,0x3d87a989,0x3d889674,0x3da4a62d,0x3d16c9e4,0x3d99e7c1,0x3c53218c,0x3d04f87f,0xbe3d96af,0x3d6ef36b,0x3f1143a6, +0x3f0ab8e1,0x3f24578e,0x3ef6af48,0x3ecabb83,0x3e64822a,0xbc9363ba,0xbe2e2a48,0xbe245957,0xbabc3c04,0x3def877f,0x3e4487c4,0x3e47e34c,0x3e36f439,0x3e0ced89,0x3e218b1c,0x3e62f521,0x3dd0b1cf,0x3d2bf277,0x3d8d5c08,0x3ad11348,0x3d08ae0e,0x3d0fa5f2,0x3d29be4b,0x3d9b4952,0x3dad7247, +0x3dea04b4,0x3d8bcb0b,0x3d40df7c,0x3d32c99d,0xbd27d860,0x3c68f164,0xbe21cd52,0x3d3cd773,0xbdd40430,0x3eaad2bb,0x3f27a8db,0x3f09770b,0x3f198e7e,0x3ecc9f6d,0x3e61ef75,0xbca0fbe7,0x3b6572e8,0x3d13e603,0x3dc528dd,0x3de657c0,0x3df39b94,0x3e004e44,0x3dcc56b1,0x3de0f356,0x3e3d98b3, +0x3e3c8768,0x3e5ebe92,0x3dc66262,0xbc174864,0x3d5c4a9b,0x3d26fd41,0x3d59127f,0x3d4a349e,0x3d7e86a8,0x3d3fbc24,0x3d775441,0x3e00c4c3,0x3da41d0f,0x3d93e2e5,0x3de63ae9,0x3d624058,0x3dd9e9dc,0x3c0e8865,0x3d93c604,0xbd26e2f9,0x3e628927,0x3ea050b5,0x3e3417cf,0x3e40cfbf,0x3c7fc1b9, +0xbdb15749,0xbe31b28f,0xbe31b481,0xbdde3b3d,0x3d45e33f,0x3dd7a6e2,0x3e170585,0x3e1ea9fb,0x3e3a6af5,0x3e303301,0x3e33bdf6,0x3d7c729a,0x3d3fa80e,0xbc335105,0xbd154d3e,0x3b0d2abf,0x3c8e5195,0x3ca845b8,0x3c4850d4,0x3d4729b0,0x3da636d9,0x3da658c6,0x3dbb9526,0x3d543ddc,0x3d117990, +0x3c4921b8,0x3d54aa8c,0x3d8c511a,0x3cef6f1f,0x3e0c86ab,0xbe81fb04,0xbc5516f9,0xbb29d9ea,0xbdb332a1,0xbdb00e1e,0xbe1d0047,0xbe3edde4,0xbe4d04c3,0xbe551b55,0xbe5c2bab,0xbe3b9744,0xbdaca03b,0x3cba755e,0x3dcefca6,0x3e2a1379,0x3e32051f,0x3e0cbf19,0x3c8d606d,0xbcd58208,0xbda36947, +0xbd8c1526,0xbcf2ee57,0xbd43f366,0x3bbe6157,0x3d3f6ec1,0x3d93425b,0x3d9ef51d,0x3da0568f,0x3c0133ed,0x3d33c5fd,0x3d21199b,0x3d0ca816,0xbc4c932e,0xbd0cd84d,0xbd04c3eb,0xbd701f97,0xbd40ecd0,0xbe05acd8,0xbe034764,0xbe130775,0xbe1aaa52,0xbe102d57,0xbdf50c65,0xbdd4f4ea,0xbd54192e, +0x3b0a072c,0x3d5b4cd9,0x3d67cb20,0x3d6ba301,0x3d8a9a7b,0x3d3be8d2,0x3cef9600,0x3d05803a,0x3c8800de,0x3c4fc6a9,0xbd055c0b,0xbd65ffd2,0xbcf8f148,0xbcb15f4d,0xbc0e22f9,0x3caea5eb,0xbb8a8dfd,0x3d079ffb,0xbad1f1bd,0x3c6eb628,0x3cf783c9,0x3d210ce6,0x3d5a6df7,0x3d0fb4ba,0x3cd1fb66, +0x3bd1b534,0xbd1b5569,0xbdadc636,0xbe2b1c80,0xbe07605c,0xbe0f972e,0xbe0c436b,0xbe0ee10c,0xbe12f9db,0xbe1ac96e,0xbe1a3d9c,0xbe208fd2,0xbe216d57,0xbe1f6757,0xbe197808,0xbe161a5e,0xbe0a1d8b,0xbdf96e2b,0xbde73c2b,0xbde8af57,0xbdd7dabb,0xbde0bd99,0xbc2a2b90,0xbd726b8f,0xbdabeff7, +0xbd983394,0xbd82c3cc,0xbdb35c7c,0xbda4c8b8,0xbdd7a153,0xbdcc71a1,0xbdd621e2,0xbdc2c397,0xbdbb2a4d,0xbdd1a326,0xbdcee7ad,0xbdd70653,0xbe08cfda,0xbe24aeb6,0xbe11aa6c,0xbe095900,0xbe0ef7f6,0xbe0af575,0xbe0b83c3,0xbe09ac6a,0xbe07fc35,0xbe05a2b1,0xbe029c75,0xbe007f3b,0xbdf98a56, +0xbdf3c0f0,0xbdeea7f7,0xbdf27a3f,0xbdf9ee06,0xbdfc0a59,0xbdfa6733,0xbdeb08cb,0xbe008dac,0xbe19ea06,0xbe13cb55,0xbbce767b,0xbe21b502,0xbe1b3bbf,0xbd397218,0xbd4b0887,0xbd379567,0xbd367b2b,0xbd4e2cd8,0xbd541bd7,0xbd528379,0xbe1ea89b,0xbe30f7b3,0xbcad06ec,0xbe18a0e8,0xbe1c81eb, +0x3dce80b5,0x3e1947d6,0x3dcc4500,0x3dd56ac6,0x3ddb3241,0x3dd68873,0x3dd2beb0,0x3dcd521a,0x3dcecb35,0x3db5700b,0x3da83b9c,0x3d9f952a,0x3da27c10,0x3da6ba9e,0x3daeb70e,0x3db4d1ff,0x3dba3b9a,0x3dbdde16,0x3dbe4704,0x3db813a2,0x3da82d0c,0x3e053006,0x3df6841a,0x3d0458ae,0x3e04e5b2, +0x3dfe5d99,0x3d22603a,0x3d4664ea,0x3d4e5378,0x3d486b09,0x3d6c0186,0x3d725e4b,0x3d7740e3,0x3e01ac80,0x3e0c4a38,0x3d29b007,0x3e0be67f,0x3e03961c,0x3e170966,0x3e077256,0x3e155aa6,0x3e0ed805,0x3e09fba0,0x3df9dee7,0x3df7784c,0x3db1f331,0x3d94b7b5,0x3d8b05c0,0x3d91480d,0x3d9ca77d, +0x3db478d8,0x3dc5c232,0x3dd31669,0x3dd44859,0x3dd8b79f,0x3dbc68ce,0x3dd5aed1,0x3dcb0628,0x3db64484,0x3ddda171,0x3db77402,0x3db716c5,0x3dca28cc,0x3dc7e6da,0x3de75481,0x3df2ddde,0x3ddef1d9,0x3dc46195,0x3dc7f9c8,0x3dcd7e83,0x3dd20cb5,0x3df6d1fe,0x3e0490a4,0x3e4f3a02,0x3e336fcb, +0x3e22ac46,0x3e305717,0x3e2480b0,0x3e2b5f73,0x3e16083b,0x3e19a032,0x3d93d509,0x3cc3e924,0x3c101a2f,0x3c58ebe4,0x3d02b46b,0x3d691d73,0x3da0b920,0x3dc7a4da,0x3dd05ebc,0x3dd9ef51,0x3da9b5b1,0x3dbd1ab2,0x3dd58141,0x3d948861,0x3d9f24c1,0x3d9cc6c0,0x3d9a4d1d,0x3d8731fb,0x3d953f53, +0x3d9bd3f3,0x3dc2c756,0x3d93e195,0x3dabffa9,0x3dbf2f1a,0x3db4a75d,0x3dcd1cb9,0x3e0b1b34,0x3e2cceba,0x3e4bc3c5,0x3e392f74,0x3e1fdfcf,0x3e44040c,0x3e3f55f3,0x3e462b66,0x3e28089a,0x3e27522f,0x3d4225c8,0xbc26ac15,0xbc97c280,0x3b2572e8,0x3c9b52ad,0x3d7a1685,0x3dbfca79,0x3de5c7ff, +0x3de4d671,0x3de0433c,0x3da69c13,0x3db04dcf,0x3dc74556,0x3d599183,0x3d688907,0x3d5425db,0x3d58968e,0x3d16efbd,0x3d496a02,0x3d40f729,0x3d6fbb3c,0x3d5528ec,0x3d513a09,0x3d8801a7,0x3d6e3be6,0x3db426ab,0x3ddf6c13,0x3e2edbdf,0x3edd8852,0x3efe3ecc,0x3ed70505,0x3ed745ff,0x3ecc8b1a, +0x3ea94fe2,0x3e865f41,0x3e76b756,0x3de88740,0xbc410249,0xbe878389,0xbe454563,0xbe11b4e2,0xbda9faaa,0xbcde623d,0x3d265e24,0x3dccb032,0x3ddd8fb3,0x3db52724,0x3d8cfc8f,0x3d61750a,0x3d2684d8,0x3d8e9e3f,0x3d419172,0x3d254378,0x3cf9f872,0x3d2aa932,0x3d560024,0x3d84fd4b,0x3d93bad1, +0x3dd29387,0x3e0fc18d,0x3e468b91,0x3e78ec76,0x3e88d3f8,0x3ea70858,0x3e644829,0x3ed1ccb7,0x3f1e6ddd,0x3f25f77a,0x3ee23620,0x3e9923f7,0x3e75eb7d,0x3eaf599e,0x3e75a93b,0x3e46e880,0x3df09bc0,0x3e487537,0x3e827308,0x3ea32d95,0x3ea12ecc,0x3e8eaebe,0x3e6a1a79,0x3e29c057,0x3e049620, +0x3e05ae01,0x3dadb73a,0x3d7731ca,0x3d950f1b,0x3d8dd7fd,0x3d8e073e,0x3d4136f8,0x3d8282d8,0x3d83973f,0x3d9c425c,0x3d9f3ab2,0x3d998276,0x3d86e73d,0x3da44745,0x3dff7d6f,0x3e065ed2,0x3e62e881,0x3eb37367,0x3f0d2335,0x3ea5ecbc,0x3e1505bc,0xbe8830d5,0xbe21007a,0xbdb4579a,0x3df99b46, +0x3e1a29da,0x3e675c70,0x3ea33f31,0x3eb402c1,0x3eb2a46e,0x3ea9fe5e,0x3eaf335c,0x3eb7de4a,0x3ebf9254,0x3ea567e4,0x3e79fd12,0x3e4e2e83,0x3e403d99,0x3e0269d9,0x3d9e70a3,0x3da9c2d8,0x3d6c754c,0x3c9e120e,0x3cf6958c,0x3d56e538,0x3de9596b,0x3da3990e,0x3d9fd141,0x3dac8c64,0x3dcdabb9, +0x3e1edfb5,0x3e5d7a8c,0x3e4f6f18,0x3ec5d3d8,0x3e54435a,0xbea4ce1e,0xbeccacb3,0xbf480e9b,0xbee33ef2,0xbe807e4d,0xbd18bb57,0x3ba69a55,0x3dc8b30b,0x3e2d7094,0x3e8cc2e7,0x3eacd9c3,0x3eb482b6,0x3eb3b09b,0x3ea7841b,0x3e962351,0x3e907e84,0x3e7d7d1c,0x3e5f926f,0x3e0d44f8,0x3dd45101, +0x3db4962e,0x3da0d0a3,0x3da6a9fe,0x3d93e531,0x3da3cec3,0x3da974cd,0x3dabb5c9,0x3da8fdb1,0x3dc696d3,0x3da930d2,0x3dd72b7f,0x3dc611e9,0x3e15e72e,0x3e186725,0x3e775499,0xbb10fe8b,0xbebc8f7b,0xbeb29bd0,0xbedacd0e,0xbeaa9b25,0xbe8c6271,0xbdec1b97,0xbcf7d062,0x3d9bbac5,0x3e0ef99d, +0x3e5ae2af,0x3e844b4b,0x3e936622,0x3e96c7e1,0x3e9acf8d,0x3ea29ddb,0x3e89fa0e,0x3e44c1db,0x3ddad091,0x3cd9846b,0x3d235b10,0x3d2e0b04,0x3ca8bc07,0x3d072146,0x3cdd0a37,0x3d965c1e,0x3d882fb7,0x3d1f081f,0x3d4d253d,0x3d8101af,0x3d82c623,0x3dd60a4c,0x3dffba59,0x3e09dbbb,0x3e0ad167, +0x3e21e3f1,0xbd5cdf08,0xbe3e8ad5,0xbe3c7ad1,0xbe83005b,0xbe3fed4d,0xbe0ca48f,0xbd45c491,0x3db6e5a1,0x3e3a3c2b,0x3e74ea1c,0x3e89d920,0x3e8a7a53,0x3e8470ee,0x3e7f8ac5,0x3e69b650,0x3e552323,0x3e0850ee,0x3ddbbe3b,0x3d4145d1,0x3b803216,0x3d099e5d,0x3c316614,0x3d05d0f5,0x3d038f6d, +0x3d1055cd,0x3d2a068d,0x3cdb28a0,0xba884bf6,0xbb85b9f9,0x3c972581,0x3d935a53,0x3d0e27a4,0x3ce4beec,0x3cf87c24,0x3d2759d0,0xbdc8541b,0xbdc33a4e,0xbe098403,0xbe22e3b4,0xbe57c27e,0xbe01563b,0xbd85d7c1,0xbc78290d,0x3d0d768f,0x3da36909,0x3e05eb17,0x3e0e78a4,0x3e21615f,0x3e396b47, +0x3e15305f,0x3de4b374,0x3da2e21e,0x3d86fe1c,0x3d5c70ae,0x3d26af4b,0x3cf2a8e0,0x3c9ab9ca,0x3c80cda3,0x3c74d904,0x3adcb346,0x3c7ee226,0x3a0e4cd9,0x3c6857a6,0x3c918a87,0x3c51067e,0x3beab35f,0x3bed39e7,0xbba331a4,0xbb2c81ed,0xbc9d3002,0xbd7db921,0xbddf64b7,0xbdba5728,0xbddff2ca, +0xbde16803,0xbdf79cc3,0xbe0a02af,0xbe1e6d4f,0xbe2b81a6,0xbe2772f4,0xbe228d63,0xbe1ab5a3,0xbe15d7a4,0xbe111f44,0xbe0a117a,0xbe0429e5,0xbdefa58f,0xbddf2c60,0xbdc5af56,0xbdb82b51,0xbd9a92f8,0xbdc624e5,0xbd770d79,0xbd24d53f,0xbd366550,0xbd08bd33,0xbc276754,0xbc946ec8,0xbc4d0b94, +0xbcd4df9d,0xbcdf24dc,0xbcfe377f,0xbd3abbcd,0xbd610caf,0xbda78d85,0xbda22d81,0xbd9478c4,0xbdb1f371,0xbda2e47d,0xbdafb84c,0xbdb040f5,0xbdb29db6,0xbdbde513,0xbdc4ee27,0xbdd40bf6,0xbdd166d3,0xbdd4fb22,0xbdda1920,0xbdd701a3,0xbdd4c6b6,0xbdd52f8d,0xbdc58e0f,0xbdb9fb03,0xbdaed700, +0xbda60d00,0xbda1aca3,0xbd8c15b2,0xbd84c518,0xbdab0bb2,0xbe1c33cf,0xbd41a2ab,0xbd91c6d3,0xbe0c47c8,0xbe0cbabf,0xbe0eb541,0xbe0ec616,0xbe0dc284,0xbe10e612,0xbe0f3a6b,0xbda3555d,0xbd52a0cd,0xbe2897f1,0xbdd5664b,0xbda068cd,0x3d11bcaf,0x3cb8c170,0x3c94666d,0x3d0f926a,0x3ce4a653, +0x3d089cac,0x3c8d3b48,0x3c504aa2,0x3c65aa34,0x3cb9842d,0x3ce7a368,0x3d05c5d3,0x3d154f89,0x3d20abec,0x3d2230c4,0x3d257d7b,0x3d214b31,0x3d1b009d,0x3d08266d,0x3d0f892f,0x3ce08828,0x3ca8acdf,0x3d4cee07,0x3e032f67,0x3c5f7d0c,0x3d386ad6,0x3df561bf,0x3df39b0c,0x3df457c9,0x3df27a83, +0x3ded403a,0x3dee3a89,0x3deca528,0x3d3a491e,0x3bec771b,0x3e0cddf9,0x3d7f6184,0x3df12c0c,0x3c257fb1,0x3ce56c8b,0x3c819e81,0x3c969b24,0xbc9de683,0xbcc674fd,0xbc3b6033,0x3bc7982d,0x3cb1f1bd,0x3d06886d,0x3d3ba66e,0x3d544915,0x3d50f307,0x3d619df8,0x3d537848,0x3d3b46b9,0x3d0db844, +0x3d12883b,0x3cb94132,0x3d985f8e,0x3d45d887,0x3d16920f,0x3d52b346,0x3d56cc72,0x3d03c8ef,0x3d1a1e15,0x3ce8fc23,0x3d1e0362,0x3cca8800,0x3cc8bec7,0x3d2158dc,0x3d1ad10f,0x3d7903c7,0x3d863211,0x3d06a373,0x3d812188,0x3c7042bf,0xbc3678f3,0xbbad3dc7,0x3c0f3324,0xbd80cd7a,0xbdaaffad, +0xbd5b187b,0xbc9ef9cb,0x3c1c1a97,0x3c9d5ef8,0x3d29b63e,0x3d7a5571,0x3d894326,0x3da2b4d2,0x3d99b7b5,0x3d84b98b,0x3d4032d7,0x3d20e9f0,0x3d0c8da3,0x3d3c576c,0x3d4b8019,0x3d5ecb35,0x3d444e62,0x3d50668c,0x3d171813,0x3d6be307,0x3d417c4f,0x3d674f66,0x3d27775f,0x3d3dba07,0x3d3af21e, +0x3d6016a3,0x3d6d4a02,0x3dabe412,0x3d567cd2,0x3d9c84bc,0xbc0c8f31,0xbd4ae3fe,0xbd5eddd6,0xbcfad78d,0xbdde9fc5,0xbdf169f1,0xbd965822,0xbd29edad,0xbca4886a,0xbaeba4c0,0x3cd27238,0x3d435752,0x3d5b4554,0x3d9a2127,0x3d96dbad,0x3d6a09da,0x3d143afb,0x3d0f3b10,0x3cd3e6d8,0x3d734c1b, +0x3d8e6e9f,0x3d55bff3,0x3d6382ea,0x3d55b6bc,0x3d2f29fc,0x3d48d10e,0x3d571fc5,0x3d65c1a8,0x3d02ad1e,0x3cb03ca7,0x3cff85e4,0x3d3cbfc4,0x3d8ebbd4,0x3dbaae2b,0x3c8e592d,0x3e358ac8,0xbda119ec,0xbe2b7561,0xbe11f2f6,0xbe5d7709,0xbec1009b,0xbed636c5,0xbeba11b4,0xbe168d50,0x3c96e06c, +0x3db6689e,0x3dea9785,0x3e1f44cb,0x3e5ddb7e,0x3e66678c,0x3e56f730,0x3e46c49b,0x3e06fb76,0x3dd694f4,0x3d9bf51b,0x3d5bb5b3,0x3d8f9e30,0x3d50e80d,0x3d66acba,0x3d4adde8,0x3cf24a6d,0x3d435442,0x3d60b3a9,0x3d871aba,0x3d7d8c85,0x3d910e68,0x3dd1097a,0x3d65cd9c,0x3dc61c02,0x3dcaa673, +0x3e04df2b,0x3e947143,0xbcbf4be3,0xbf0a1629,0xbf0d7ca3,0xbf34a5bd,0xbf12823c,0xbedc22de,0xbe944580,0xbd8e86e5,0x3d70409b,0x3e16b15b,0x3e3930df,0x3e349075,0x3e081096,0x3dd9d9a1,0x3dae0d33,0x3d9ae333,0x3d5c9527,0x3d4e8630,0x3d90ef28,0x3dd11010,0x3daca24f,0x3d95bab5,0x3d5dfee6, +0x3d3d3815,0x3d446b74,0x3d854d0e,0x3d848fee,0x3d89fe65,0x3d5e053d,0x3d7b18fa,0x3cf1ad26,0x3da11838,0x3ca024b6,0x3dc254bc,0x3d2503f1,0x3df60715,0xbec4703d,0xbf88b681,0xbf82caea,0xbf7c346b,0xbf48954c,0xbf2e5647,0xbf10f039,0xbeaa9d8e,0xbe462d46,0xbe16391e,0xbe3387ba,0xbe244055, +0xbdf1c8eb,0xbd9280af,0xbd20436e,0xbc849ca7,0x3b15d1e4,0xb99e72be,0x3d9a2271,0x3de3ab51,0x3dcb744c,0x3dc07680,0x3d952aef,0x3d7859ad,0x3cd7e265,0x3c9166a0,0x3d197695,0x3dd3eada,0x3d92234c,0x3d925507,0x3d83dbe2,0x3e1e94a7,0x3c7cf4fa,0x3e3c3919,0xbdc4e671,0xbe6e335f,0xbf5c301a, +0xbf6cc8eb,0xbf51b909,0xbf28891f,0xbf2ad16c,0xbf2266cb,0xbf07fd37,0xbf040973,0xbf024c27,0xbef52c97,0xbeec08aa,0xbec54b0d,0xbe8c4266,0xbe0e63d5,0xbd58c1fa,0xbd39779a,0x3c655b7c,0x3cc377c7,0x3d7aa466,0x3dddb4e2,0x3d1b6fe5,0x3d47d556,0x3d667f46,0x3d7395ca,0x3d3a3ad5,0x3db36eb6, +0x3d91e92e,0xbc9c1219,0x3ce88c1b,0x3d3309d4,0xbd0e1b96,0x3d5052c7,0xbdab4dc3,0x3c17cb1f,0xbe1e267e,0xbec38fca,0xbf1784a0,0xbf116a8c,0xbf0c627c,0xbf02a07a,0xbebe5cce,0xbe761fbe,0xbe26373f,0xbdf30981,0xbe317375,0xbe9e8a94,0xbeaf4889,0xbea7e2bd,0xbe82e027,0xbe618209,0xbe14ce64, +0xbd82e046,0x3ceb3a22,0x3d52bec7,0x3d2b2e3b,0x3da3f77b,0x3d6c3012,0x3d8ef9c2,0x3d55e91e,0x3d334eee,0x3cfc4711,0x3d34cc65,0x3d091753,0x3c186328,0x3cb175dc,0x3bc9f89d,0xbd00f398,0xbdba2294,0xbde27fb4,0xbe0298b1,0xbed3f0aa,0xbddcaaf2,0xbea94536,0xbe9e1d58,0xbe981750,0xbe896e09, +0xbe48baed,0xbdffa9cf,0xbd909ae4,0xbd9c555b,0xbd3bdb10,0xbced154c,0xbd91187d,0xbdde186c,0xbdd8db82,0xbe02c179,0xbde54671,0xbd9542fb,0xbbc1982f,0x3c0b2f5c,0x3d49a872,0x3d1595fa,0xbacb1973,0x3c54d5c2,0xbc3e052c,0xbaf15991,0x3c4a2872,0x3c18bf9f,0x3c375be5,0x3c0ca086,0x3bc7c8b1, +0x3c0e8554,0xbc2ce854,0x3ae1bd93,0xbd323e33,0xbd8dd15c,0xbe13a4ed,0xbe2f4d2c,0xbe11bece,0xbe098a2b,0xbe1df4b4,0xbe23955b,0xbe327da8,0xbe47cd98,0xbe58bcfe,0xbe7041f1,0xbe85a842,0xbe945c41,0xbe8a7e86,0xbe7f192d,0xbe69e605,0xbe51122c,0xbe36cb1a,0xbe2afd00,0xbe16092a,0xbe1409d7, +0xbdac4301,0xbc2f7393,0xbcc019c1,0xbc8826a5,0xbc18c738,0x3c2cff40,0xbc0d36fe,0x3bc012bc,0xbcb063b7,0xbc590c3c,0xbccf1895,0xbcde4d03,0xbd0cdc45,0xbd96df8d,0xbdd016f7,0xbe0b587f,0xbe11833a,0xbd9d34d3,0xbd808dbc,0xbd858b2f,0xbd9b26f2,0xbda53e17,0xbdaf9a6f,0xbdb317d0,0xbdbdc58d, +0xbdb31eb3,0xbda355ac,0xbd990a39,0xbd908ca1,0xbd8f31bf,0xbd810b14,0xbd8989fa,0xbd96423d,0xbd9b84f7,0xbd9012be,0xbd85e9c3,0xbd9c3e4c,0xbd87f5bf,0xbd8a1c01,0xbd8ee2c7,0xbd81e2bb,0xbd6a7c6a,0xbd59d5fc,0xbd48d35f,0xbd637161,0xbd4097bf,0xbd348fc0,0xbcd5e552,0xbcce1177,0xbd069f21, +0xbd27f31b,0xbd642e67,0xbd3b5a72,0xbdd9e51f,0xbd152414,0xbd40ce22,0xbd4f5608,0xbd593bd8,0xbd6af667,0xbd7b4a72,0xbd86f484,0xbd8a20b7,0xbd908cf3,0xbd94c366,0xbd9dadda,0xbda584d6,0xbdafa408,0xbda3debe,0xbd95870d,0xbd89d22f,0xbd890d7d,0xbd7decd0,0xbd6a8ebe,0xbdd3e152,0xbdc22d0c, +0xbd831b12,0xbdb2b960,0xbdb70aea,0xbd5efa0d,0xbd6936f3,0xbd62524e,0xbd6ca3dd,0xbd7cd8f9,0xbd89ec1b,0xbd88d0bb,0xbdb0f66d,0xbda0fe18,0xbd9fd2a7,0xbdccb066,0xbd47c48d,0x3df7503a,0x3db60bbc,0x3dd39e49,0x3db8de32,0x3dc137d0,0x3dba9b82,0x3dd8c7c7,0x3deea8e1,0x3e043b75,0x3e0f3661, +0x3e14b6c6,0x3e14471f,0x3e0e2a68,0x3e0908bc,0x3e04ff88,0x3dff390f,0x3df60e27,0x3dee78ef,0x3de71ce7,0x3dd89034,0x3df20228,0x3dc90023,0x3d6852dc,0xbc703fe2,0x3ddfb65d,0x3d714241,0xbc355e76,0xbc16545d,0xbc09e82e,0xba97538d,0xbc125ca1,0xbc1603f9,0xbbe1aa18,0x3d78bb2d,0x3de1d5f9, +0xbbdda8fc,0x3d45d441,0x3d01172f,0x3dad234d,0x3d82a5e0,0x3d8c53e6,0x3d8f3925,0x3de23dd1,0x3e17c6b7,0x3e397b56,0x3e593af6,0x3e5ed358,0x3e4e4dde,0x3e39e56b,0x3e2b2da5,0x3e22ac8c,0x3e1684f2,0x3e0dade9,0x3e08209b,0x3df82201,0x3de6dea4,0x3dee7f2f,0x3d3c4578,0x3dc496ca,0x3dc81f4e, +0x3da4660d,0x3d9974b8,0x3dbfd4ae,0x3dcc9b24,0x3dd96052,0x3db82603,0x3dcd4f3c,0x3dc5fdc6,0x3d9c4b49,0x3dac9dad,0x3d891723,0x3d9e19f9,0x3db1f590,0x3cc8ad97,0x3cc9628f,0x3b6d6815,0x3c2fec0a,0x3c5d4d60,0x3daaf147,0x3e1de588,0x3e5dd003,0x3e94da15,0x3ea51178,0x3e9dc734,0x3e8ec8ea, +0x3e7a60a4,0x3e66bc75,0x3e454c27,0x3e2b9ba1,0x3e1acc1f,0x3df8626d,0x3dead9bb,0x3dc0e348,0x3dad0cf4,0x3db335ca,0x3da98d73,0x3da0a000,0x3d7c4903,0x3d96ccf5,0x3d7a54bc,0x3db85442,0x3d8d06f4,0x3d844a5e,0x3d2c4953,0x3d3f0f6d,0x3d58dba5,0x3d5e06af,0x3d480c38,0x3d1ad574,0xbc0c113c, +0xbb6d7fda,0xbd0e78a7,0xbcda9539,0xbc373894,0x3de38f66,0x3e63e3d2,0x3ea2a803,0x3ed1dcdf,0x3ed855db,0x3eb7a675,0x3e9482d0,0x3e801cc7,0x3e68cb14,0x3e43d7ba,0x3e29bab6,0x3e1f9b14,0x3dfcb4a1,0x3dd78615,0x3db4fffd,0x3d7fb55d,0x3da45868,0x3d872593,0x3d8a0cec,0x3d6d40eb,0x3d4a0432, +0x3d6bfb6f,0x3d4c1e89,0x3d7ec5cd,0x3cf5fc3a,0x3cd24a78,0x3c8e8354,0x3d0afd88,0x3d3a1117,0x3d1b9f3c,0x3a8fa5fa,0xbe085dcc,0xbe918602,0xbea88b81,0xbeac6986,0xbebb6e72,0xbe5ed13d,0xbd92cfc8,0x3da049a9,0x3e7ed19e,0x3ed1a45a,0x3f1d9db9,0x3f15b28c,0x3f09ec4b,0x3ee4b765,0x3ec7c8a1, +0x3e9c441e,0x3e5c7f96,0x3e162a5c,0x3dfa6cce,0x3e0f9492,0x3df61d39,0x3de77e79,0x3db87371,0x3d9edfa6,0x3d85603e,0x3d2e559b,0x3d8147be,0x3d838810,0x3d742a4e,0x3d4c203b,0x3d11d71a,0x3cf567a5,0xbc3d097d,0xbd1d9373,0xbd479950,0xbd519cc6,0xbe556920,0xbec8a3bb,0xbefd1453,0xbeff141b, +0xbe8faf91,0xbdcd0e53,0xbd4d9b3d,0xbe403e0e,0xbd7100e5,0x3d082594,0x3e2fce33,0x3e14670a,0x3e276b0e,0x3e47c6af,0x3e46477a,0x3e4bfeff,0x3e4ad255,0x3e2b714f,0x3e13a3d7,0x3ddac50a,0x3dbbf863,0x3dc88370,0x3d97bb26,0x3d90d070,0x3d783126,0x3d38ae4e,0x3d6ebd7d,0x3d7f344e,0x3d9a1877, +0x3d7784d3,0x3d5cd217,0x3d400d13,0x3d261539,0x39ea85af,0xbd2bbf0b,0xbe2ac5ef,0xbefee69a,0xbf00d151,0x3e09a5e9,0x3eadd6a6,0x3f394be8,0x3e9a5cd2,0x3cab6db5,0xbe957f5d,0xbeb22233,0xbea0dab9,0xbe1d0c7f,0xbc99c443,0x3dd3c621,0x3e3ba102,0x3e0cfee3,0x3ddbca7a,0x3dbd5f8d,0x3dda1894, +0x3e117e6c,0x3dca4a9b,0x3d9b248b,0x3daa1b78,0x3da6c548,0x3d9e23de,0x3d8f8ef5,0x3d65de6a,0x3d3d7ba2,0x3d64082c,0x3db31839,0x3d1d0079,0x3c6e9613,0x3c23c51e,0xbd7f0065,0xbdef7e07,0xbe864200,0xbe3269dc,0xbede1c69,0x3e28392b,0x3f4c6563,0x3f2e6c6c,0x3f3a4c5b,0x3ed7368c,0x3e8aec20, +0x3d8c975c,0x3db880a7,0x3da7c388,0x3d828a90,0x3d7743b2,0x3d81036b,0x3d8d489c,0x3d9f0f17,0x3db548ce,0x3dc2db8b,0x3d8c2fe4,0x3d836522,0x3d89e4bc,0x3d185c74,0x3d6b12f2,0x3d5a401f,0x3d4f524b,0x3d3f149d,0x3d1cc8fb,0x3da125d5,0x3d848c00,0xbbe24a1c,0x3d28c1c0,0x3ca49036,0x3c673808, +0xbd38c3bc,0x3c7a50d1,0xbe119f08,0xbe1efb41,0xbe143aea,0x3ea3f889,0x3f130fcf,0x3ee648d8,0x3eecb2e1,0x3e971c02,0x3e5ef7e7,0x3e2857d3,0x3deb9951,0x3dfc2139,0x3e515781,0x3e40b7a7,0x3e1ad02c,0x3dcf3358,0x3d30c108,0xbb84a4e3,0xbd441cba,0x3c7ee6ba,0x3d8c4310,0x3dcfbbe2,0x3d9baeaa, +0x3d999fce,0x3d286f4e,0x3d636d5e,0x3d7d934f,0x3d5dd1b7,0x3d2d0295,0x3d2f6fdf,0x3b98de65,0x3c738d38,0x3a8f2ae0,0x3cf29db3,0xbce85e41,0xbd8d6170,0xbdfa0893,0x3de6a632,0xbe99f210,0x3e4aa876,0x3e91aa80,0x3e389894,0x3e44509f,0x3ddd2268,0x3da636c9,0x3d733ffe,0xbc960b30,0xbd9e1752, +0xbdb9b7d3,0xbd7bf2e4,0xbc96086f,0x3c12f42b,0xbc117a02,0xbccf13bb,0xbd55718d,0xbb1aa634,0x3cf11058,0x3cbff514,0x3cb7c335,0x3d4630e5,0x3d642632,0x3d09c05e,0x3cb9c7cc,0x3d0668d8,0x3c8035c8,0x3bf5d08f,0x3d3d12cc,0x3d1cc57c,0x3cea5dba,0x3bda9102,0xbc20bc40,0x3c102cad,0xbd126fe1, +0x3c2a2e2e,0x3d35b5be,0x3d693f26,0x3dfc351c,0x3df95fb7,0x3e281a00,0x3dfba52f,0x3db5759c,0x3d4afd2e,0x3ce2f716,0x3c1cd737,0xbc69eb7e,0xbd66f778,0xbdd77a19,0xbe23f34d,0xbe09265b,0xbdeb66b5,0xbdc5a55f,0xbdaaedde,0xbd2f3651,0xbd5cf1f2,0xbda77032,0xbd90c7b9,0xbd6acc9e,0xbd009a3d, +0xbd22a87a,0x3aa23644,0xbcfcaa6b,0x3d22bb9f,0xbcdda238,0x3c8a3a1d,0xbce8824f,0xbb5b8219,0xbb82cb3b,0xbc028c89,0xbca3d915,0x3d30de4c,0xbddc9d82,0x3e0680d5,0x3e0ef2cf,0x3e0d098a,0x3e15c72a,0x3e1b5042,0x3e2a0abc,0x3e3740e3,0x3e250077,0x3e0edf25,0x3df4d07f,0x3dc67a48,0x3da0f14e, +0x3d36f881,0x3d55947a,0x3d4e4987,0x3d60382e,0x3d5ec68d,0x3d7cd7ed,0x3d777d4b,0xbda061b5,0x3d310b1e,0x3d4e8478,0x3d2318b2,0x3d03c1fd,0x3db87acc,0x3dc858cf,0x3dbcc23e,0x3d6e8bf1,0x3dcaaa54,0x3ddb773d,0x3d92990d,0x3da1f08f,0x3d28b211,0x3d209174,0x3dbe01b9,0x3da356cf,0x3e31e829, +0x3e01941f,0x3e0f7339,0x3e0ee329,0x3e1402d2,0x3e16141e,0x3e1cacf6,0x3e12349b,0x3e0d217d,0x3e079303,0x3e02ad51,0x3dfc70aa,0x3def1b26,0x3df4cd74,0x3df3adcd,0x3df336d9,0x3df3b467,0x3de3bf50,0x3e15351c,0x3d1e2af3,0xbd05e327,0xbe23f880,0x3db21c3f,0xbc4902d5,0xbe11a9cc,0xbe1321e2, +0xbe0a7788,0xbdef904d,0xbe022bc0,0xbdfc9848,0xbde90519,0xbbf70358,0x3ddf88cc,0xbe0d555f,0xbc7c7aeb,0x3e1e39a1,0xbd64e16a,0x3cfa3b57,0xbdd67ea2,0xbd8b76f4,0xbd9e5873,0xbd9505a3,0xbd859de7,0xbd73087b,0xbd5c1036,0xbd6050e4,0xbd5aaccb,0xbd500f74,0xbd57fe02,0xbd5d0a09,0xbd64cfd1, +0xbd6149bf,0xbd60a00a,0xbd5fa369,0xbd60ce68,0xbd396b16,0xbda77a24,0x3d3de42b,0x3ded8724,0x3e4c7afb,0x3c52e033,0x3dde76bc,0x3e4068b1,0x3e4589aa,0x3e436df9,0x3e314cb8,0x3e3fd80e,0x3e400659,0x3e39e57c,0x3dd7f503,0xbc1ba971,0x3e3bfd2b,0x3de67180,0x3dd2ac9a,0xbdcf3547,0xbddb2122, +0xbdcba97b,0xbdb91804,0xbd988a0e,0xbd8553e9,0xbd694c09,0xbd7323f8,0xbd6ad5c2,0xbd51f6a0,0xbd62c944,0xbd6e13ac,0xbd7d8bf2,0xbd7b601f,0xbd72378b,0xbd715da5,0xbd5c941f,0xbd6c7574,0xbd255c95,0x3dfc0b15,0x3c194afd,0x3cc2410f,0x3ce2d818,0x3d3855cb,0x3c12a72f,0x3b48d532,0x3c201bfd, +0x3d3c273c,0x3b5774c7,0xbc8bf1b2,0x3c89b6f7,0xbbf2687c,0x3cca23a2,0x3cdd73de,0xbd3b2452,0xbc8255f3,0xbdea6ffe,0xbe26fc9f,0xbe186e6e,0xbe139b4d,0xbdd4265d,0xbd9bbb76,0xbd71ccbc,0xbd7f196d,0xbd480bc0,0xbcd6b5ad,0xbd0168bc,0xbd27cd8c,0xbd65dab6,0xbd72d05f,0xbd75b8fe,0xbd8130d5, +0xbd4b7e8b,0xbd81a01e,0x3af9d002,0x3d526b93,0x3d3ac78c,0x3d138a89,0x3cbbbb56,0x3d6e9f63,0x3c8e312e,0x3d921c90,0x3bd10b93,0x3da8f734,0x3cc2f67d,0x3d892e2c,0x3d24ca18,0x3cb22c2e,0x3c378e3d,0x3c871fda,0xbcf7798c,0xbc86e014,0xbe0582a8,0xbe21b6e0,0xbe123afb,0xbe12f0ee,0xbddba3c4, +0xbda3cef9,0xbd763904,0xbd763bdd,0xbd19b38c,0xbc1f1f7d,0xbc331933,0xbcce3921,0xbd380c92,0xbd51de7a,0xbd55600a,0xbd611d8e,0xbd52133f,0xbd40cb10,0x3c3cf998,0x3d91eb55,0x3c9540b8,0x3d99c858,0x3d02fee5,0x3cf1bfd6,0x3cdf222e,0x3d3526e4,0x3d6e2d6a,0x3d20c641,0x3d43a364,0x3d033ce6, +0x3d08df11,0xbc5f7a6d,0xbcb780ab,0xbc7b89b0,0xbc9a451c,0xbe3621cb,0xbe31bfa7,0xbe283a9c,0xbe49141d,0xbdd0d211,0xbc8abf16,0x3c60f0f4,0xbc375b52,0xbda75ce0,0xbe0722cb,0xbdd07e6f,0xbd88b448,0xbd69e1f5,0xbd579b9f,0xbde9d202,0xbdf28b80,0xbdbcebc2,0xbd3d2f82,0xbd53d391,0xbbb5b8c0, +0x3dbcd203,0x3d005c26,0x3d5c4159,0x3d402d94,0x3d61497e,0x3d2c712f,0x3d5ab845,0x3d4e340e,0x3d2a6773,0x3d0b9643,0x3c9e59bc,0x3c40c1fa,0x3caa4057,0x3c0a2668,0xbd118ae6,0xbddf6583,0xbe900c94,0xbdc4192f,0x3eb18582,0x3ec81fbb,0x3ec56371,0x3db27296,0xbdcceff1,0xbe577b5a,0xbe8b174e, +0xbe8ec382,0xbe91d9c4,0xbe41efdd,0xbe01f8d7,0xbdbb8342,0xbd5eead6,0xbd0b505a,0xbd34259d,0xbadb209f,0xbc77ac73,0x3d07b85a,0x3dabed47,0x3d7d5cb1,0x3d7187a6,0x3d22638a,0x3d25fed6,0x3d0f636f,0x3d3a8cf0,0x3d5f1529,0x3d8c17b1,0x3d31d5a8,0x3ce4caf0,0x3be5d49f,0xbce54619,0xbd62abe6, +0xbde4fba9,0xbde6a729,0x39b44257,0x3eba5eed,0x3f056b75,0x3e883488,0xbe0f84e8,0xbe325511,0xbe2b7d7a,0xbd61953f,0xbda94a46,0xbd66213a,0xbdc284df,0xbe1d5fdd,0xbe68d45d,0xbe948ffd,0xbe7d1d66,0xbe25d11d,0xbd13d6b9,0xbc5d1350,0xbd4f5920,0x3cd9697a,0x3d3a74f1,0x3ca3a396,0x3d909501, +0x3d6595a9,0x3d7ae0ac,0x3d5acd2e,0x3d8c8493,0x3d781848,0x3d3b44b4,0x3c970854,0x3bcacce4,0x3c0e5652,0xbd31a0c9,0x3c6be1c2,0xbd538091,0x3d241738,0x3ebb8504,0x3ef0690b,0xbdc067ca,0xbe59cee5,0xbf196cd7,0xbe690d9e,0xbc22ad17,0x3e55fd71,0x3e245c9a,0x3e2f2403,0x3e1aae7f,0x3e5bb3ff, +0x3e428b05,0x3dc10d0e,0x3d096b2b,0xbc8a3826,0xbd05b37a,0xbd589b1e,0xbdb836b2,0xbcc1d07d,0x3db8c38d,0x3cf19944,0x3cad3107,0x3c3c40c6,0x3bf3d80d,0x3c38f5fa,0x3d2eac4e,0x3d928158,0x3d54d10f,0x3d976188,0x3d723544,0x3cda41c1,0x3c711382,0x3d0f9c99,0x3d0a1c32,0x3de292b3,0x3ec141e4, +0x3e29414c,0xbe1ee957,0xbdfc3680,0xbe5a2bf0,0xbe021f64,0xbde6578c,0xbcd1c8ff,0x3cb034f9,0x3dee4d1b,0x3e47b99b,0x3e7d42e7,0x3e811463,0x3e54fa0f,0x3e36df7b,0x3ded097c,0x3cb437df,0xbcd99035,0xbdb0fab0,0xbd3b2d93,0x3d465c1b,0xbcdcf10a,0x3c223987,0x3d014ae0,0x3d01af6f,0x3d02d91d, +0x3d393d0d,0x3d35071e,0x3d4c22b8,0x3ce10d3c,0x3d30a613,0x3da2212d,0x3ddabf09,0x3df08e3e,0x3e28d619,0x3e78f27c,0x3e988f47,0x3de701e9,0x3b2d9ad8,0x3d4ac5af,0x3c392c76,0xbc811c0a,0xbd4a29a0,0xbd4a077a,0x3d8b8132,0x3e00fc32,0x3e14c3f2,0x3e117d20,0x3de17908,0x3d65bbab,0x3c98ba1d, +0x3a6f0529,0xb8d5718a,0xbc243fbd,0xbc7b0251,0x3bda3dd3,0x3d4a6de9,0x3d143e32,0x3d3b85e6,0x3d2b4b98,0x3d364ef9,0x3d34ddd0,0x3cd88fd3,0x3ca49f10,0x3cc01255,0x3c903147,0x3ca020a5,0x3d1972d6,0x3d631a41,0x3d996a68,0x3daa4bd0,0x3ddb3d67,0x3db893c7,0x3daa8bca,0x3d2f3afa,0x3d54ec3f, +0x3cdf7552,0x3d4a5544,0x3d92a59d,0x3db0bc93,0x3dd11e09,0x3df52d3b,0x3e1ade2a,0x3e20bb9f,0x3e2b6cf2,0x3e36f645,0x3e2ca27d,0x3e1d8e7d,0x3e1367f6,0x3e052ecd,0x3e07f2d6,0x3dad88af,0x3d0bfda3,0x3d8de077,0x3d90aa69,0x3d74d71e,0x3d287504,0x3d804da1,0x3d571383,0x3d49bd9a,0x3d8eda5d, +0x3d2681ba,0x3d6a03c8,0x3d0fad4e,0x3d829237,0x3dadaaec,0x3df98c8b,0x3dba9ba8,0x3e2e371e,0x3d8509eb,0x3d3aaa81,0x3d594545,0x3d43b7eb,0x3d383729,0x3d114373,0x3d00156e,0x3d24456b,0x3d43696c,0x3d5f9eb2,0x3d7f59ea,0x3d8d5e3e,0x3d94e4c9,0x3da140a7,0x3db67bb4,0x3dc81556,0x3dcbecb8, +0x3dd6a778,0x3df6b304,0x3db61cff,0x3daa34ac,0x3dbb5d68,0x3dd366fb,0x3dc39999,0x3dabfccd,0x3d876395,0x3da8474d,0x3dc2aec5,0x3d8d0407,0x3d405589,0x3d8d86b7,0x3d84d4b1,0x3db7afcb,0x3dc49e97,0x3d861f5a,0x3e0273fb,0x3ca17fa9,0x3d3f7f33,0x3d33339f,0x3d31c3f6,0x3d31b449,0x3d35177a, +0x3d2b91fc,0x3d50d564,0x3d6bb267,0x3d823560,0x3d90e636,0x3da01030,0x3db33d8a,0x3dac15ed,0x3da4639e,0x3d9defba,0x3da03852,0x3d95d73e,0x3d8f9117,0x3e11285a,0x3e301764,0x3e1c860c,0x3de94de5,0x3e2a1c6b,0x3e33df5a,0x3e38aaa8,0x3e31e714,0x3e283aab,0x3e349942,0x3e373b00,0x3e30e372, +0x3e2787e0,0x3dc7832e,0x3e2f018a,0x3e310b86,0x3d5401c6,0xbce4abdf,0xbdc15ca0,0x3c24f90d,0xbc402bec,0xbbf295aa,0xbbe8d834,0xbcd0abd1,0xbd1fe5b8,0xbd6c347e,0xbd6ecdb2,0xbd6cbc81,0xbd56b5a1,0xbd358f7a,0xbd1bd59e,0xbd09c96b,0xbcf2ad62,0xbcdd4c3c,0xbcd441ea,0xbcbed83f,0xbcb427e5, +0xbbe759d0,0xbdba08f9,0xbdd4aded,0xbd44753a,0xbda5d4c5,0xbdd4fa2b,0xbd53ba5f,0xbd691e82,0xbd664918,0xbd4b51be,0xbd807a00,0xbd88e35f,0xbd868fad,0xbdde07f6,0xbd916413,0xbd88208c,0xbdf1ec4a,0xbe05c395,0xbc108356,0x3d0aa6ec,0x3c8e83be,0x3c837c25,0xbd068c81,0xbd95cb76,0xbdf45e57, +0xbe0564c3,0xbdff2a2c,0xbdc92686,0xbd90467d,0xbd5278ba,0xbd34cd00,0xbd0aa88c,0xbcf47af1,0xbce7e8cf,0xbcc73af7,0xbc28119b,0xbce78880,0xbd87577f,0xbd06283e,0xbd531c1b,0xbd16a045,0xbd1fc6bc,0xbd1d10df,0xbcd15776,0xbd19b7d1,0xbd49b288,0xbcf82ec7,0xbc6843f3,0xbce6c915,0xbd15f5b0, +0xbd619779,0xbd9558b2,0xbccb89c6,0xbd99c9a5,0x3a2689c7,0x3dfd5a73,0x3d9b70e0,0x3d9a7a65,0xbcde2e2c,0xbde2cabe,0xbe4dd645,0xbe63c08c,0xbe569d64,0xbe2e40cb,0xbe015c3c,0xbdb4d6d5,0xbd97b32a,0xbd49147b,0xbd21d48a,0xbd07083d,0xbca37c31,0x3b221544,0xbc99b229,0xbd26c077,0xbcb993f3, +0xbcea5551,0xbca099c0,0xbca9390b,0xbc4a64a3,0xbba2a677,0x3c92b967,0xbc3dcd37,0x3ca750cd,0xbbb0bf28,0x3b40eb7c,0xbccf6b7b,0xbcfb7d34,0xbd5bfc25,0xbc9c3bbc,0xbd7c531b,0x3d1722fe,0x3e4810dd,0x3e0a9dc7,0x3dee50b1,0xbd317ca7,0xbe2c7441,0xbe9c2507,0xbeac6ba0,0xbe988542,0xbe4a12a8, +0xbdeef363,0xbd862bef,0xbd647269,0xbd19a17f,0xbcd474a3,0xbccb27a2,0xbbd608dc,0x3c4c20c0,0x3c205ddb,0x3c0b6cd6,0x3cf265c6,0x3cc5a510,0x3cd3ab07,0x3cee79f6,0x3cf318a7,0x3d24588b,0x3d4cce5b,0x3d73459b,0x3d2752da,0x3d3305e8,0x3d2dd15e,0x3b8cb749,0xbd04e57c,0xbbd22245,0x3cd5d1df, +0xbd6ee57d,0x3e393da2,0x3e924d41,0x3e80e025,0x3e65b5f3,0x3d384f95,0xbdcb9c52,0xbe806ae5,0xbe928112,0xbeaf258b,0xbec65883,0xbeb04990,0xbe985b6e,0xbe5c750b,0xbe22131b,0xbdf49576,0xbdcae4ff,0xbd47aaba,0xbc0f0c31,0xbca7fe39,0xbd07407c,0xbc009088,0xbb0ea75e,0x3c7bc3d0,0x3cdf5449, +0x3cfbdc61,0x3d325e62,0x3d287080,0x3d102fae,0x3d0857af,0x3d1e4d52,0x3ceb2d09,0x3d6bd441,0x3d08b151,0x3c95d4be,0xbd751a65,0x3d19c9b6,0x3e068d98,0x3cee5774,0xbd4a41b8,0xbe6b9e94,0xbe7d47f6,0xbe4c0809,0xbd71972f,0xbe17ec8a,0xbe7e2e78,0xbed31f4a,0xbebe1927,0xbebf12fa,0xbec32c7e, +0xbe9b51ca,0xbe60f1b8,0xbe041dd0,0xbdb5a2d2,0xbd82f33c,0xbd6116a5,0xbc55339a,0x3b71d5d4,0x3c88a8a6,0x3cdd61d1,0x3d09f677,0x3d1056e5,0x3d4560bb,0x3d51ee2a,0x3d4b89f2,0x3c747a3e,0xbc0c8eff,0xbcf40a30,0xbd6267c9,0xbd2ea434,0xbd0ae98e,0x3ced0949,0x3e5baf1f,0xbc7fc473,0xbf2a6ec8, +0xbf322352,0xbf308a22,0xbe48cb97,0x3dd979c9,0x3eb3a347,0x3eae8fa9,0x3e8150a4,0x3dc1254f,0x3d56af55,0xbb81c293,0xbd74468f,0xbd2df0dc,0xbd9095bb,0xbe0088e4,0xbe205209,0xbe22f25c,0xbdeddd4b,0xbdb8a9e4,0xbd84f05e,0xbd093eaa,0xbc0a76b7,0x3cac1eb2,0x3c67767d,0x3d896321,0x3d843ed8, +0x3c2a0f14,0x3d311c33,0x3d46a5e4,0x3c26d5bf,0x3d84fc89,0x3d52142a,0x3e046534,0xbbe65b6d,0xbd5baaab,0xbf1a4a38,0xbf1ae31e,0xbeb689c9,0xbd995b15,0xbd618c10,0xbd2bb0a2,0x3d76455f,0x3df00d16,0x3e26b037,0x3e652b3c,0x3e0c494b,0x3da8bac3,0x3d68a123,0x3d3b7128,0x3c9820c6,0xbc79ff1c, +0xbc3e32c9,0xbce04cdc,0xbded54c7,0xbdaa5b3c,0xbd99f4c8,0xbd95dbc8,0xbd42ceed,0xbd082e0b,0xbcf8ed13,0x3d08ebd2,0x3d4513c4,0x3c2f47f1,0x3d2c8d23,0x3d2f8518,0xbca4db0e,0x3cc8756b,0xbd64d59a,0x3c1520eb,0xbd38d7a8,0xbe590aa0,0xbe94eede,0xbdfe9a70,0xbde20b79,0xbe1300d2,0xbd7ea54e, +0x3cc8fc23,0x3d928cf1,0x3e1dc42c,0x3e210602,0x3dd15056,0x3d8f8003,0x3d96a407,0x3db464f2,0x3da67adf,0x3d849cec,0x3d6d7077,0xbd56bc43,0xbdaeef7a,0xbe024c3d,0xbdc3497c,0xbd79d05a,0xbcf1b4ae,0xbca96777,0xbc1e0222,0x3cdfcf7b,0x3d10ca47,0x3d2efaab,0x3d5c4c9f,0x3d53d7f5,0x3d246e2b, +0xbba963ba,0xbc9d2f79,0xbcf7f044,0xbd1b7d6a,0xbe8a0ecc,0xbbde5d98,0xbe3a72b5,0xbddd80fb,0xbdb256e5,0xbda451fc,0xbcedcc20,0xbc2d9b6d,0xbb81ce0a,0xbd1cc2ca,0xbcc6d607,0xbbd86a07,0xbbf6c092,0xba7d2a26,0x3cf972ba,0x3d7ad6f0,0x3da56c02,0x3dca8efe,0x3d402e95,0x3cddb935,0x3aca74f7, +0xbcbf326d,0xbb36b484,0xbcb5eebf,0x3cf98710,0x3d5c9a17,0x3d26ec40,0x3d4769ae,0x3d40d0d5,0x3d214044,0x3c9b6894,0x3bf871fb,0xbb3a8806,0x3cbef3cf,0x3c15b3cf,0x3c9a5be4,0xbd059902,0xbd2e4358,0xbd04b2f7,0xbd0371b0,0xbd01a50d,0xbcba2b9d,0xbcf992f9,0xbcda7ff7,0xbc346907,0xbc673130, +0xbc88e1fe,0xbcb9a6cb,0x3c49a137,0x3d3cb399,0x3da5e957,0x3da22f2e,0x3da9cd0c,0x3dbed5c3,0x3dddc9d7,0x3df3abba,0x3e0637f1,0x3df25429,0x3df95a67,0x3df68bb2,0x3dc56303,0x3dab19f5,0x3d5e6083,0x3d74d994,0x3caa7f43,0x3cb6a3ea,0x3c992ed5,0x3cecaef0,0x3ca5d66c,0x39ea4e99,0xbc9b2c8e, +0xbd13eba7,0xbd40e794,0x3d44c309,0xbd1eda07,0xbcdefb52,0xbce814ee,0xbcd05dd6,0xbcab7230,0xbc9c3dfe,0xbcbc3b52,0xbc6357e6,0xbb27c6ad,0x3bd8bab9,0x3c9c451d,0x3ce7c604,0x3d454b7d,0x3d5083f6,0x3d63d6b0,0x3d62361c,0x3d54ce62,0x3d3e2545,0x3d455cf5,0x3dc86cd4,0x3d270340,0x3c839265, +0x3c70637f,0x3c102ca0,0xbcd13c80,0xbca9a440,0xbcf5937a,0xbcabd5ab,0xbcca2197,0xbc9a42d0,0xbc029424,0xbc13d6f2,0x3bac5960,0x3b7751c4,0xbc2b05bb,0xbd286d19,0xbcbf570c,0xbc09128b,0xbc5d130b,0xbc42ca76,0xbc4ef347,0xbc4068d3,0xbc30cb77,0xbbbb4e79,0xbb1bb6bd,0x3ae6575c,0x3b3c5123, +0x3b8517f0,0x3ba9e025,0x3b129a12,0x3ab64376,0x3af6e7f3,0x3b60eb13,0x3c09f855,0x39af55fd,0x39c43d18,0x3c6055b3,0x3dce58a8,0xbce07b51,0xbc25fb20,0x3d947076,0x3d92997d,0x3d90c657,0x3d8b5aa2,0x3d82649c,0x3d79bb7d,0x3d6ad298,0xbc873c1b,0xbd3e4d3e,0x3d9fdc7e,0xbc5f77fc,0xbc4e2673, +0x3d183e66,0x3da8baf3,0x3d63086f,0x3d63a056,0x3d76583d,0x3d5f1ca2,0x3d259c6a,0x3d04ab49,0x3ce1c868,0x3cd77a26,0x3cc85e34,0x3cba34fe,0x3ccc0eb4,0x3cd91c65,0x3ceb2743,0x3cdda005,0x3cdd46f4,0x3cd9ecc3,0x3ce9af78,0x3cd310d0,0x3ccfee8e,0x3d69f5b9,0x3cf2e7ed,0xbd88ed4a,0x3d850315, +0x3d18ca34,0xbd64cc21,0xbd47d1a2,0xbd3e62a6,0xbd3a9082,0xbd1bf356,0xbd13f18f,0xbd0fd127,0x3d2e4852,0x3da5b24a,0xbd7052a0,0x3d36973c,0x3d410677,0x3de9895a,0x3dc63221,0x3dd99a00,0x3db9b16a,0x3d61d60c,0x3d021c8a,0x3cb57a8a,0x3c479d1a,0x3c192ec0,0x3c06290f,0x3c4161e1,0x3c63c845, +0x3c95e484,0x3c788429,0x3c81748f,0x3c731bf4,0x3caebbc4,0x3c442f73,0x3cec5f5b,0x3bbfdce4,0x3c992f1d,0x3d1da207,0x3ca786a3,0x3cb7807c,0x3d2bf869,0x3d33a448,0x3d73287f,0x3d5dfcce,0x3d6b5b7c,0x3d3edc89,0x3d1b4f1f,0x3d5896e8,0x3d48ffbc,0x3d784454,0x3d9ea3e0,0x3e0c67ad,0x3e115564, +0x3e1a8f4b,0x3e2ac79a,0x3e149fa3,0x3d8ac860,0x3cc9d876,0x3b0bb82e,0xbc596aac,0xbcedc158,0xbd223ba1,0xbd0473bc,0xbcb57df9,0xbbf2b509,0xbc2cb4ae,0xbbd12223,0xbbd6a568,0x3a19c5b0,0xbc3b86d6,0x3b23be42,0x3cbf30e6,0x3be2d66a,0x3bb8d948,0x3c85bb53,0x3cb08884,0x3cca1ddb,0x3cdd9b66, +0x3d17c9b8,0x3d3707e3,0x3d0f590e,0x3d31b469,0x3d33b9bc,0x3d526ef7,0x3d6b1a5d,0x3dab85d1,0x3de864fb,0x3e3cb963,0x3e5689b2,0x3e4435e4,0x3e6f44ce,0x3e5dfd41,0x3dcf442f,0x3c7d6f75,0xbca3b1e5,0xbd6000c4,0xbd7ddc0e,0xbd804a53,0xbd61e133,0xbd40b3c7,0xbcea5029,0xbd07843a,0xbcedd3be, +0xbcd95083,0xbc7527b0,0xbd1d1216,0xbca5b40a,0x3cb452fb,0xbc6dbdbe,0x3c53cda1,0x3c493318,0x3c953916,0x3bf6233e,0x3d0a4539,0x3d27ec4e,0x3d2cec7b,0x3d1a882e,0x3d119e3e,0x3d2331c2,0x3d88088d,0x3dd71da9,0x3ddf8ebd,0x3e0a30a6,0x3e18532e,0xbacbd22e,0xbda5d9c6,0xbc2b202e,0xbd7fb968, +0xbbf28e58,0x3d74d5b5,0x3e1b1a8c,0x3d78a1b4,0xbc9cffec,0xbe1a7b26,0xbe2b550f,0xbe23fe5b,0xbe18a655,0xbda20f2a,0xbd4cd9ce,0xbd98e802,0xbd37279d,0xbd6af3fa,0xbce34d2b,0x3ba04889,0xbcf0f7a9,0x3c55975d,0x3bd42035,0x3ccb3324,0x3d02997f,0x3d1ef2ad,0x3d29c53a,0x3d2512e9,0x3d663831, +0x3d82b440,0x3d8c18af,0x3d132c3a,0x3d399feb,0x3d16b256,0x3dc46462,0x3d916da5,0xbdf378a5,0xbee2b533,0xbecea6a5,0xbe5c356b,0x3d83ddbd,0x3e6bdd2e,0x3eb77bc1,0x3eb0d0d1,0x3e9fe41f,0x3e978e9c,0x3e267583,0x3db56839,0x3d823509,0x3cc9cb98,0xbc0f04c6,0xbd233088,0xbd8bf916,0xbdac3bb8, +0xbd56bf52,0xbd2b58fd,0xbc5f9df3,0x3c1ae868,0x3c2ce122,0x3ce68407,0x3d225061,0x3d688307,0x3d6d31df,0x3d1835f4,0x3cc3357c,0x3be15796,0xbc248162,0x3ccecd28,0x3ca8f9f5,0x3cf930a5,0xbcfbcfc0,0xbe848e4f,0xbedce6e1,0xbc3ce913,0x3e9d612f,0x3f3273e5,0x3efe0c55,0x3ec2862a,0x3e876fb9, +0x3e9d67e7,0x3ea905fb,0x3eed02d5,0x3f0b167c,0x3f1b8eee,0x3f214c19,0x3f0ef9fd,0x3ee325bb,0x3e8d9a8b,0x3e269095,0x3dd1d1d2,0xbced7ae9,0xbd97a212,0xbd980a73,0xbdae3c8b,0xbd2f37df,0xbce2d601,0xbca2c57f,0x3d2e9b31,0x3d6acfc9,0x3b064e17,0x3d654bb7,0x3d4d8819,0x3adf6b20,0x3c2d6336, +0xbd43af27,0xbd936ccb,0xbdc395a0,0xbe9ed894,0x3d881c1f,0x3f26991f,0x3f1e31d6,0x3f38f9db,0x3ed322ab,0x3e971c27,0x3e2a0923,0x3e9aecb5,0x3ec5d2c9,0x3edd4f47,0x3ece0a51,0x3ecc9ce5,0x3ed90331,0x3eaed568,0x3e8f0269,0x3e77076b,0x3e32bd8e,0x3e16058e,0x3d71f3f7,0xbd92104f,0xbbed2c4c, +0xbc8a9c00,0xbae00058,0x3c81a3ee,0x3c3c390c,0x3d3d5b49,0x3d37c1d6,0xbc8671a1,0x3cd048ad,0x3c605c52,0xbbbb8d39,0xbcc097e7,0x3bc0b16b,0xbd730348,0xbdeef433,0xbc0a4b56,0x3e82a49e,0x3ecfc721,0x3ec2f5bc,0x3eca1dc0,0x3e37e74a,0x3da675e1,0x3cbedc3d,0xbb0232b2,0xbbffcb86,0x3ce7b07e, +0x3dc0f9b3,0x3df0fb2e,0x3deac0d1,0x3e161eb6,0x3e257771,0x3e31d000,0x3e12baf6,0x3e0a6fdf,0x3db9fe85,0xbcecf5d5,0x3d1c4cd0,0x3cb847ea,0x3ba17416,0x3cc22cdc,0x3cfb703c,0x3d18dbc7,0x3d144f42,0x3d40ce8b,0x3d6ea4fe,0x3d44adb3,0x3cfdde48,0x3c8128ad,0xbc0353dc,0xbd6c2b43,0x3db2062f, +0xbdd7b1f1,0x3e28440d,0x3e33312b,0x3df04dc7,0x3d904ce2,0x3d5e5f63,0x3d57cb5c,0x3d0edcff,0xbd1e534c,0xbdad5d38,0xbdb66b6d,0xbd82f086,0xbc8adeb7,0x3cc2d01e,0x3d7ab45f,0x3d865b26,0x3d658c4b,0x3d68256f,0x3d7b41ae,0x3d716816,0x3d4a9980,0x3d87cd8c,0x3d9b6ff4,0x3d95b26e,0x3d4041ef, +0x3d1e0055,0x3d67d0be,0x3d6ca70c,0x3d1b1667,0x3d1c7ab3,0x3cfb11ed,0x3c9e1813,0xbb60f829,0x3c2e09f5,0x3c91d199,0x3d35c83c,0x3d240bb9,0x3b93304c,0x3c3eca95,0x3ca00fed,0x3d0064ec,0x3d0b08e4,0x3cab8e68,0x3c01fd31,0x3c897b6e,0x3ca6dfec,0x3c8b7624,0x3b568daa,0xbc602264,0xbd0540f2, +0xbcd668bb,0xbc7494e7,0xbc305a1c,0x3bba1053,0xbc19e644,0x3d1c4cdc,0x3db35c46,0x3d2eee95,0x3d06a9a9,0x3cf1c1b5,0x3d262c0e,0x3c805915,0x3c9e32d6,0x3c966033,0x3c98736f,0x3c94f820,0x3c298c2e,0x3c7e2c80,0x3c8ee158,0x3cacd932,0x3c9d054d,0x3cfcce2c,0xbd333b4f,0x3cdac7e8,0x3ce63f25, +0x3ce20520,0x3cd435f0,0x3cc7316f,0x3cf70544,0x3d10702e,0x3cfb896f,0x3cca1926,0x3c9e12d1,0x3c4f2489,0x3c1f2040,0x3bdb60f6,0x3bb7d943,0x3af8881b,0xbb175221,0x3a6cd8d7,0xbbafc1a0,0xbb794df3,0x3d144e11,0x3cdd0992,0x3d26fedb,0x3cae6259,0x3d069eec,0x3d364b03,0x3d389353,0x3d381456, +0x3d0c9d19,0x3d0e2a87,0x3cccd534,0x3c566cb6,0x3c6e6e4e,0x3afb15af,0x3b946b7e,0x3c13a155,0x3d4317b2,0x3d0b1b40,0x3cb1d5f7,0x3cd363bd,0x3cd131a3,0x3cdb5c22,0x3cd0bc95,0x3ccf207c,0x3c994d7d,0x3c70683d,0x3c3d9855,0x3c1e3ee7,0x3be46e0f,0x3b506e04,0x3bc33fec,0x3c0d9d33,0x3c2f1b70, +0x3c31e137,0x3c705de9,0x3bde9f9a,0x3d0cb343,0x3caa961c,0xbcaf97cd,0x3d446390,0x3cf53bf6,0xbd111dad,0xbd12fa8e,0xbd0bd1b8,0xbd05200f,0xbcfb59af,0xbceaec8e,0xbcd981ee,0x3c9d056a,0x3d445e68,0xbd1edea8,0x3c92f998,0x3d03e117,0xbdc3ad75,0xbd6c3eff,0xbe03f679,0xbdc8e13d,0xbdeb3cea, +0xbde6d9c2,0xbde34b46,0xbdd6ab22,0xbdbeffd7,0xbdbb95eb,0xbdb74dff,0xbdb4fbb2,0xbdb831b5,0xbdba5df1,0xbdbb5171,0xbdbc7dcf,0xbdbc145f,0xbdb9365c,0xbdbf7c0d,0xbdb08393,0xbdd51697,0xbd76883b,0xba205f5e,0x3dd58f46,0xbd9bacaf,0xbb61faa6,0x3dc9709b,0x3dcaba4a,0x3dc95df4,0x3db43923, +0x3dc15ec3,0x3dc3ef9c,0x3db989b4,0x3a878478,0xbdb6b494,0x3df05dea,0x3c9ab4d1,0x3dbdd742,0xbe16101f,0xbe1a692e,0xbe24acdb,0xbe2751b2,0xbe26d489,0xbe1880de,0xbdea5b9e,0xbdd8d399,0xbdc7adf1,0xbdc449e3,0xbdc7eea1,0xbdc57012,0xbdbe815a,0xbdbf4793,0xbdc3e277,0xbdc51ee6,0xbdd3389f, +0xbdcb24ee,0xbdd02c0a,0x3bfe7afc,0xbd680ca3,0xbd711a22,0xbd13c336,0xbcc565c2,0xbd5088a4,0xbd5366e7,0xbd6747de,0xbd0ff116,0xbd6545b8,0xbd7ba70d,0xbd1be438,0xbd3e4497,0xbc47d2b4,0xbb8d28f2,0xbd95761a,0xbc3a53bf,0xbe09b24d,0xbe80f0c2,0xbe746389,0xbe796122,0xbe66db41,0xbe3bd3d4, +0xbde4832e,0xbde9e490,0xbdf0ae61,0xbdf4164d,0xbdfc52f9,0xbdfeac00,0xbdef014f,0xbdeade36,0xbde21c5d,0xbdd5a08b,0xbde31e25,0xbde23e30,0xbda6ce7d,0xbd6f0753,0xbd28f5e5,0xbd1703ef,0xbd11c510,0xbc0f45f6,0xbcb13ce3,0x3c4d8ac9,0xbcdadd52,0x3c05c7c4,0xbc1b6815,0x3c81088d,0xbc228e01, +0xba1df90d,0xbb3fa306,0x3ca732ab,0xbd51f986,0x3d2aef3b,0xbe376fee,0xbea35cac,0xbe9b6733,0xbea1487a,0xbe9b5673,0xbe838044,0xbe0e9ee5,0xbe0746eb,0xbe0d24f5,0xbe17d37a,0xbe1367d9,0xbe0461e6,0xbdcfe348,0xbdb6d44f,0xbdbab13f,0xbdbbcfad,0xbde0e150,0xbdc3b30f,0xbdb06679,0xbd405fc9, +0xbd268eea,0xbcb7b9c9,0xbc56d566,0xba074f0f,0x3b60b85b,0x3cae0a20,0x3d305712,0x3cde6eb0,0x3d0d66e0,0x3cd5219e,0x3cac11a6,0x3cc05210,0x3d2d0914,0x3d2fe838,0xbcc78359,0xbe463a90,0xbecff36a,0xbee27def,0xbeea89a7,0xbebf0a8b,0xbe6ad1d1,0xbe07e416,0xbd70078c,0xbdd0ebc8,0xbddb9b5f, +0xbddbe805,0xbe2ab399,0xbe49c2f9,0xbe66601d,0xbe7068d4,0xbe57a1f7,0xbe1fb2b9,0xbe18a6da,0xbe06dc6b,0xbe05e564,0xbd836e35,0xbd089575,0xbcaac122,0xbbc381ed,0x3c20cfc5,0x3cea9a6f,0x3d12470d,0x3d1726aa,0x3cfe3c00,0x3cbcf933,0xbb3b5fff,0xbce50986,0xbdaf631a,0xbdc1f57f,0xbe081ca6, +0xbe1365ff,0xbe49b0c1,0xbe5f7d8f,0x3d848a2c,0x3e17369d,0x3e7ae358,0x3cd8ca68,0xbdb61c63,0xbe119628,0x3d0e8d49,0x3e68f81f,0x3ee1b380,0x3eea045b,0x3eebf0af,0x3ed51e14,0x3e9d37be,0x3e3442d5,0x3d385e6e,0xbc7277a3,0xbcdf365a,0xbd34c34c,0xbda3f66a,0xbd73b9b2,0xbd3b031e,0xbc8c5812, +0x3bc7ab06,0x3c4ec50d,0x3d2e9562,0x3d3d6387,0x3cc07243,0x3ca064ef,0x3c5296d1,0xb9a29f09,0x3c05cf87,0xbd1687e1,0xbd887763,0xbded94a5,0xbe02ea62,0x3e1141f7,0x3ed07a97,0x3e55ff48,0xbd189bcb,0xbe64ca74,0xbe757abe,0xbe456ed3,0xbd81e944,0x3d73e93b,0x3da83b9f,0x3cb16d4d,0xbbb4fda3, +0x3bbf03d1,0x3d74846a,0x3dce14f9,0x3e060b8d,0x3db51d63,0x3d59f238,0x3d233060,0x3ae5e889,0xbca85fea,0xbd627842,0xbd52d4bd,0xbd3ec64e,0xbd28492f,0x3c7fca3c,0x3d06a72f,0xbc71195f,0x3d0a9ae4,0x3c7eb3c2,0xbcd045fa,0xbd70e795,0xbd1c1b58,0xbdc26ef0,0xbd241e11,0x3e6da696,0x3e8fcf97, +0xbe5461d3,0xbecab5da,0xbf23023d,0xbeed82d0,0xbec0688c,0xbe8bda7f,0xbec4fa9b,0xbee0e1f0,0xbf01113a,0xbeb34432,0xbe85c61a,0xbe658760,0xbe445776,0xbe127ced,0xbda0bd5b,0xbd8564b3,0xbd4e9ada,0x3d1bbab0,0x3d6174f9,0x3c581af3,0x3d11c475,0x3cdae855,0x3d119611,0x3d0a1b21,0x3d24f31d, +0x3d133dc1,0xbca98346,0x3cc875fe,0x3cdbdb08,0x3ca25611,0x3c6c8e32,0x3b9cf193,0x3cc10c85,0x3db49a84,0x3e13af83,0xbe1698dc,0xbedc28e4,0xbeb75497,0xbe9e72c7,0xbe8a303e,0xbe97fd5a,0xbeaa07dc,0xbebeda94,0xbec68671,0xbed37094,0xbecb86db,0xbebd3daa,0xbe9e2436,0xbe779d40,0xbe3143ed, +0xbdff3d5a,0xbd466daa,0xbd044dfc,0x3cebd045,0x3dace614,0x3d15a911,0x3d4c7ea8,0x3d09a88d,0x3c2c6960,0xbc56f278,0x3bd2ae91,0x3be7e608,0x3cb05bd9,0x3c53fc4d,0x3aed5b0a,0xbc6d6d23,0x3cab0196,0x3d264449,0x3d928b70,0x3d1146e2,0x3e237c25,0xbd919643,0xbe26409f,0xbdeb6c88,0xbdcd340c, +0xbdf9227e,0xbe02153c,0xbdf738e9,0xbd0c369e,0xbc40afc5,0xbd12a600,0xbd964ee0,0xbe082a42,0xbe4b031a,0xbe5a3050,0xbe497d15,0xbe1fdbc1,0xbdc15d14,0xbdb5c2b4,0xbcca0411,0x3d2ad216,0xbd025949,0xbc75a1de,0xbd1890aa,0xbca79d5b,0x3b2c4e5a,0x3bf804bf,0x3c82b945,0xbc13df17,0x3c675f31, +0x3c8df082,0x3c1cdf39,0x399bfef5,0xbca48b70,0xbc1b03ec,0xbcc2d578,0xbcf6eee2,0xbcb8c911,0xbd815c19,0xbdbea250,0xbe0ebb29,0xbe02b28d,0xbdfa0fb8,0xbdff8059,0xbdeac02d,0xbdd2b68a,0xbdaa5378,0xbd991469,0xbd7ad44b,0xbd3c35e8,0xbd1cec56,0xbd0a876b,0xbd107cc0,0xbd7a38d3,0xbdc85142, +0xbdd3f54d,0xbd5f3a36,0xbd2eb597,0xbd27fb60,0xbd0aeb5c,0xbb1e80f9,0xbcaabd04,0x3c59f9a3,0xbc76cab2,0x3cebe656,0x3af6db53,0x3c5f3e95,0xbb28e7e6,0x3c022257,0x3c7b1165,0x3d07d0d6,0xbb61f2c6,0x3d2ff3d6,0xbd7d6cfa,0xbd89eea0,0xbd8ae851,0xbd948084,0xbd9ef80a,0xbdb03ba4,0xbdbaedc2, +0xbdaaac70,0xbd9d3ba5,0xbd8d5537,0xbd7b4ed4,0xbd5eeeff,0xbd42d3c3,0xbd5c010e,0xbd6a22df,0xbd67df27,0xbd500c61,0xbd288e28,0xbd386c28,0x3c86af77,0xbd1509ee,0xbd176e71,0xbc952a0e,0xbc34301a,0xbd0accc3,0xbd31e74a,0xbd34bfd6,0xbcbdb937,0xbd4f2016,0xbd52b26c,0xbd10fc74,0xbd29c732, +0xbcb33a8d,0xbd01188b,0xbd5b269a,0xbd27c31d,0xbdbbfce0,0xbd931b54,0xbda02d3a,0xbda09792,0xbda80506,0xbdaca848,0xbdb6e87d,0xbdadf9ee,0xbda9b8c3,0xbda6f0e0,0xbda26f8d,0xbd9e0e4f,0xbd95676f,0xbd930031,0xbd8f3949,0xbd8f392a,0xbd932d35,0xbd8f7c04,0xbdb0e060,0xbd2cde29,0x3c03856f, +0x3db7312d,0xbd67f1ff,0x3c050cfb,0x3dcb44a1,0x3dc50123,0x3db7fc79,0x3d9cc65c,0x3da5b596,0x3d9e2923,0x3d90a415,0x3bce3654,0xbd7c2a5a,0x3daa61db,0x3c648ea8,0xbdb718e3,0x3d61514d,0xbd3f50ec,0x3d944d3f,0x3d108a98,0x3d328907,0x3d136c53,0x3d58d0ff,0x3d6f22ea,0x3d763361,0x3d7ca346, +0x3d82ad45,0x3d84283f,0x3d890984,0x3d8a39cb,0x3d8e3244,0x3d894db4,0x3d859fd3,0x3d8106ef,0x3d78284e,0x3d4d364e,0x3daf8c73,0xbd035c1b,0xbdc33f9f,0xbe2326c5,0xbbb6f122,0xbdb69c35,0xbe16ab0d,0xbe1a78a2,0xbe184178,0xbe0ab0aa,0xbe18ba49,0xbe1b3f97,0xbe18997c,0xbdb6a263,0x3b81bb01, +0xbe19a402,0xbde37fec,0xbe1bf0f8,0x3c2fc61c,0x3ca0ef45,0x3bf11310,0xba2b9cf0,0x3d42a885,0x3d8ed7c9,0x3d96f213,0x3da34e70,0x3da3feda,0x3da1342d,0x3db3f5f4,0x3dc45c24,0x3dd2b81f,0x3dcd3373,0x3dc1ed00,0x3db97ff1,0x3d9e78d1,0x3da0b54c,0x3d806e43,0xbdccb0f6,0x3c153eec,0xbbcddbb1, +0xbc480dcf,0xbcc05d68,0x3c76aed5,0x3cb2dc0d,0x3c981f85,0xbc672974,0x3cd67ce9,0x3d24fb09,0xbb240be8,0x399d0e73,0xbd2e2b8f,0xbd3f3c08,0x3c2d50f9,0xbde781f7,0xbd4fcfcb,0x3c6dd085,0xbca97c1d,0xbd14912f,0x3d7f54b4,0x3dc75eae,0x3ddd2f9f,0x3de766c6,0x3df913ce,0x3dfc90d1,0x3e0fdd26, +0x3e157f17,0x3e1f7a4b,0x3e14332a,0x3e05f72c,0x3df7d938,0x3dbabddf,0x3dd185d6,0x3d1d3dbc,0xbcd731fa,0xbc21e0cc,0xbba542b0,0xbb04636a,0xbcdfdd0a,0x3cbf3a6b,0xbc82caf3,0x3d1a57d8,0xbcc13d89,0x3cd31f0e,0xbca2437e,0xbc96f35a,0xbce681d6,0xbcdfa8ff,0xbd863fdd,0xbd5f7fa0,0xbe3dd3fe, +0xbdf672b9,0xbd1e55bb,0xbdecfd13,0xbe19e549,0x3c643d9b,0x3dd15e6e,0x3df93da7,0x3e03f9e4,0x3de3feb5,0x3dc3e2e3,0x3e03db6c,0x3e283af5,0x3e445383,0x3e3b9cac,0x3e2c7936,0x3e21a6e7,0x3e040cda,0x3dfc82bb,0x3d8756f0,0xbd2e4d5d,0x3cd285cd,0xbce57257,0x3be33401,0x3c413e13,0x3cdbcb5a, +0x3cee0bd2,0x3cfe5f1e,0x3d2d9a06,0x3d0dcb43,0x3d237471,0x3b87fbd1,0xbc4af5a4,0xbd5cb568,0xbd86dbed,0xbd8aa1a2,0xbe1d2a6c,0x3e0b77ad,0x3e8a9aa0,0x3e81712a,0x3e9fbe64,0x3e945b38,0x3e71d591,0x3e1eafe7,0x3e883862,0x3eb6927c,0x3eee992b,0x3ee3c8dd,0x3ecf947d,0x3eb609a8,0x3e9fea48, +0x3e7f1f05,0x3e3b8f77,0x3ddba97b,0x3de48d1d,0x3d7b978e,0xbd503dc8,0x3cf22ec8,0x3b356c43,0x3c98f148,0x3c9accb7,0x3d022d28,0x3d3c354f,0x3d2bd571,0x3cbe2c9e,0x3c7862b8,0xbc2c581a,0xbd586f03,0xbc8848c3,0xbd67f327,0xbd51570a,0xbdcbe10f,0xbd98f95e,0x3e13228c,0x3eb75fc0,0x3e8fce13, +0x3e1d80f9,0x3e0023d9,0x3dee3a92,0x3d3049a0,0x3d474342,0x3d94762d,0x3d9ba27d,0x3e4f4960,0x3e86e011,0x3e94cb37,0x3e8878d1,0x3e7f47b2,0x3e6c56ab,0x3e45f656,0x3e32aee4,0x3db67b5d,0x3c2d07b5,0xb9d48285,0x3ac8065d,0x3cdd883a,0x3d108377,0x3ca10e68,0x3d226e0a,0x3d2f60b0,0x3cec5317, +0x3c9ad083,0x3bfc21ed,0x3c99891e,0xbcc9e84e,0x3c499239,0xbc8430ed,0x3d44d603,0x3e510026,0x3e72dc1e,0xbe203756,0xbe775db9,0xbe530c01,0xbce1e6de,0x3d85daed,0x3dae6142,0xbdd95da4,0xbe6858f3,0xbeaa2ca0,0xbe9588c1,0xbe7f1b3c,0xbe372662,0xbe34249e,0xbe24f5b2,0xbe10615c,0xbda6fb8e, +0xbd085af3,0x3cfa312b,0x3d34b721,0x3d2f92c5,0x3cdad36f,0x3c871818,0x3c46da9d,0xbc24d462,0x3cc128a6,0x3d149571,0xbc59991f,0x3d2d08ce,0x3d12e2a7,0xbb8f3c19,0xbb5ea7b1,0x3d465786,0x3d32df2c,0x3da915bd,0x3b90a269,0xbe733e43,0xbe0d4d20,0x3d15c57d,0x3e3e6866,0x3e01419e,0x3caba03d, +0xbda51963,0xbdf73801,0xbe33a1c3,0xbe4ee8e2,0xbe8e8edc,0xbea33aef,0xbea29c6e,0xbe84bb21,0xbe4ebe23,0xbe311673,0xbe05aaff,0xbdd1ed64,0xbd6c071a,0xbc152485,0xbc5b07a3,0x3c5005dd,0x3be22435,0x3c39095a,0x3ca1314f,0x3ce0bf40,0x3cd5d952,0xbc51f9bb,0x3ceebaea,0x3d0fc68d,0x3d0afd8b, +0x3ce9e8cb,0x3c808c01,0x3b2945f0,0x3ce9d4c8,0xbe64b5c7,0xbdb5ff3e,0x3e0a804c,0x3dc064d9,0x3db964f9,0x3e1eb3ba,0x3e3af5f1,0x3e1da99f,0x3e25bdd9,0x3e1436b7,0x3e027dd6,0xbc6c37bc,0xbdafe283,0xbdd547ba,0xbe2f3674,0xbe426381,0xbe399aaa,0xbe127818,0xbdbb0e1c,0xbd7544ed,0x3ac954da, +0xbc1ea889,0xbcd5b34a,0xbc3de287,0xbc8716a3,0xbb055ad6,0xbbcd98fe,0x3c14a1f4,0x3b8e8d0b,0x3ca3e4c6,0x3c2eb965,0xbb7d59a5,0xbcd8d591,0xbd21b4c8,0xbd5baddf,0xbe0d02f8,0xbe138792,0xbd88f18f,0x3ce8c6a9,0x3bfdb372,0x3d420df5,0x3d169536,0x3cacb265,0x3c970cf8,0xbc6227e9,0xbcd8e77c, +0xbd0955d4,0xbcd85271,0xbbc3570f,0x3cd98d59,0x3d080144,0x3cccab47,0xbc80ec34,0xbd49f0a3,0xbd79604d,0xbdad06ec,0xbdcf0f44,0xbd9cd4ca,0xbd94179e,0xbd4641b5,0xbcae4269,0xbbdaa905,0xbb6f7fd9,0xbb6338ef,0x3c47ca4a,0x3c833344,0x3c8034a2,0x3bca2dfe,0xbb989c0b,0xbc82de87,0xbd126309, +0xbd166620,0xbc3ff7f3,0x3c800a1b,0x3d152f49,0x3cdc67a4,0x3d242cb4,0x3caf0450,0x3cb39f14,0x3ce59f43,0x3bea8fc6,0xbbd17e6c,0xbcc8ad1d,0xbcdd54bf,0xbd0a5bad,0xbd1b6068,0xbd33cdb7,0xbd43fbb1,0xbd2747fb,0xbd26852a,0xbcbabd47,0xbd36063d,0xbd97012e,0xbd6fc859,0xbd50d6b5,0xbd168e3a, +0xbd231f70,0xbcbf480c,0xbcc24f52,0x3bd77fbe,0xbbf8a93b,0x3c3b02e0,0xbb7217cf,0x3c3781b1,0xbbab0dc7,0xbca47648,0xbd42468b,0xbca787a9,0xbdac2ea2,0xbb85aac6,0x3bcbe69d,0x3c303f4b,0x3ca6bcd3,0x3cefc256,0x3d0c0028,0x3d1b1d8b,0x3cca0392,0x3c5f2d72,0x3b565005,0xbbadbb4d,0xbc65db5d, +0xbcc2da03,0xbcb830f2,0xbcc4a607,0xbce269df,0xbd0756d7,0xbd132338,0xbd11a4af,0xbd7c9e3c,0xbcd74429,0xbd09bfc4,0xbd24c287,0xbd23626a,0xbcc6a4d9,0xbc6abd78,0xbcbbd0b7,0xbd12c326,0xbc3a50b8,0x3b9aab12,0xbc4c7bab,0xbbd7db0f,0xbcdd467f,0xbcc91af0,0x3b267939,0xbd5236f3,0x3cdea596, +0x3c35fa8a,0x3c81fa19,0x3c8d0fa5,0x3c9fe35e,0x3cbb4079,0x3cf3584e,0x3cce2f71,0x3cba5056,0x3c9e0f53,0x3c6642d9,0x3c14a79e,0x3b298f92,0x3ad40c58,0xb9282261,0xba6101ce,0xba886619,0xbb7e5a8a,0x3bc288af,0xbd660f9c,0xbdc29b55,0xbde9a87f,0xbd19c094,0xbdbee2e4,0xbdf41b48,0xbdf752c5, +0xbdeef404,0xbdde43d1,0xbdefb393,0xbdf32e5e,0xbde97e64,0xbdaeb285,0xbcc5a4a7,0xbdeec78b,0xbdc4a152,0x3c4663da,0x3d4c4573,0x3db27150,0x3d1ea3cd,0x3d46f079,0x3d5e5720,0x3d5a14b6,0x3d6b9026,0x3d75cf84,0x3d8aaea2,0x3d76c320,0x3d6a6407,0x3d5cb63c,0x3d5963af,0x3d556534,0x3d4d17d4, +0x3d49415f,0x3d40d4fc,0x3d337cf8,0x3d357101,0x3d331fd7,0x3cf978b0,0x3db2ae6d,0x3dc08c0f,0x3d326751,0x3da07e1a,0x3dbf777a,0x3d4cccb4,0x3d5c9345,0x3d60f8bd,0x3d498db4,0x3d7a2a3f,0x3d79a09f,0x3d67b77c,0x3dbb5e90,0x3d9eedc6,0x3d208dac,0x3dbc2c04,0x3d490d2b,0x3d8a768f,0x3d6a5e60, +0x3d908d2c,0x3d8f28cf,0x3da42c1a,0x3db24f85,0x3dd102b9,0x3db28f1c,0x3d9fffed,0x3d852ce4,0x3d68eef7,0x3d3f2973,0x3d1f1c6e,0x3d1602b6,0x3d170dee,0x3d066b54,0x3d22f45a,0x3cfa33ec,0x3d3f2615,0x3d9fc012,0x3d37b460,0x3d80b78f,0x3d38500e,0x3d4668ae,0x3d752ede,0x3d4decb1,0x3d772ce6, +0x3d885957,0x3d7497eb,0x3d4cc97e,0x3d3d9d23,0x3d403335,0x3d4d5065,0x3d53a5cb,0x3d2663d0,0x3d4cc4a6,0x3d7c18a5,0x3dc15d50,0x3dee464b,0x3de4ad78,0x3e041a95,0x3e07dc07,0x3e25fa5b,0x3e122d6d,0x3e0be97a,0x3df3f423,0x3ddd23be,0x3dc746dd,0x3da3905f,0x3d8ad57e,0x3d6917d1,0x3d137058, +0x3d31fecc,0x3c9887e6,0x3d361e9d,0x3d886ed4,0x3d0b1adf,0x3d1801a1,0x3cbbc593,0x3d05cda1,0x3d201734,0x3d17baa6,0x3caa53d3,0x3d2a3a7c,0x3d029413,0x3d3ff715,0x3ccaecca,0x3cf0957d,0x3cd4b290,0x3d07c9cb,0x3d34f09a,0x3cbd33b4,0x3dad2311,0x3de65408,0x3dfef31a,0x3df6bd34,0x3e0fb627, +0x3e24670d,0x3e47af4e,0x3e2ea80e,0x3e259e1c,0x3e010f40,0x3db6cf89,0x3d41b316,0x3c86ecf2,0x3be8d48e,0x3b47edd2,0xbc4cc320,0x3a2d9c00,0xbc62367e,0x3cab57bf,0x3d517ba5,0xb878a2ea,0x3cb425d1,0xbbb87524,0xba417e36,0x3c6bfc2b,0x3c9d2657,0x3cd92c79,0x3c3df5e8,0x3d154ff4,0x3cd68a0e, +0x3bbb1eb1,0xba1fb212,0xb97a2e0e,0xb8a04508,0x3c8d1f72,0x3e41b018,0x3e70fef6,0x3e637279,0x3ea3f610,0x3ead9458,0x3e9c9449,0x3e957a7d,0x3e91c5f3,0x3e955750,0x3e90b8dc,0x3e8278c2,0x3eb39b05,0x3ec2936e,0x3ec118b4,0x3e94680c,0x3e6dcb96,0x3e3e2244,0x3e155c0c,0x3d8e085a,0x3d82c390, +0x3d8a422f,0x3bef23c0,0x3cd15ba9,0x3c7c5fd0,0x3cdbe300,0x3d02a85b,0x3d10f684,0x3d01fef9,0x3c6a229f,0x3cab364b,0x3cdf5047,0x3d24aa96,0x3d912d78,0x3dc1e98e,0x3deb7878,0x3e070831,0x3e36b3ac,0x3dfe234d,0xbe2715b2,0xbe4f3fbb,0xbe4dc8c0,0xbcc3bc7d,0x3db1b792,0x3e27926e,0x3cbc612d, +0xbde024ff,0xbe553bcc,0xbe833b8d,0xbe8ccba1,0xbe710ed4,0xbe5c35b3,0xbe403bdf,0xbe4a9aba,0xbdf2666c,0xbdc040ca,0x3c9f6554,0x3dd3eea1,0x3d803fc1,0x3d77b8b5,0x3ca60fbf,0x3caa2419,0x3d060363,0x3d0998df,0x3d2022e2,0x3cca4db3,0x3cb0d23f,0x3c9af542,0x3c04e734,0x3cc7ca75,0x3d0e207e, +0x3d869f65,0x3d8c1171,0x3d71d0f8,0xbe1911ce,0xbdf80a69,0x3d1bf5b5,0x3e008c4a,0xbd49d42c,0xbe4d61fb,0xbe8110cd,0xbe6b673b,0xbe68ea6f,0xbe20301e,0xbe2a6b25,0xbe299db3,0xbe20f920,0xbe5c0730,0xbe4d3af8,0xbe1fbca7,0xbdb9fc4c,0xbdc26d8c,0xbd5d8d3e,0xbbbeac7c,0x3b57f618,0x3d51cefb, +0x3d088012,0x3d03fb2b,0x3cece752,0x3d1474db,0x3d244c22,0xbbf6589c,0x3d529eed,0x3d608c13,0x3cc8a43d,0x3d8dfc1c,0x3d3398e9,0x3dbdc749,0x3d6eb8b3,0xbdcbe3d0,0x3d7344f4,0x3e6e8b08,0x3e4dfe9a,0x3e151e32,0x3d8ca3a7,0x3dc2377f,0x3daf33bb,0x3e3155fe,0x3e6f5957,0x3e8cefeb,0x3e42fb51, +0x3e021e35,0x3dac25c9,0x3d02ef1d,0xbc9737d4,0xbd85270e,0xbda41f30,0xbda8c39b,0xbd65ccdf,0xbc98620d,0xbc847fd1,0xbcf097fa,0xbcd599ff,0xbc8abf1a,0x3c1ca3a1,0x3b3e6d01,0x3c95b5f5,0xbb1485fb,0x3cdd9c24,0x3cc0b948,0x3b77f232,0x3c12d04d,0x3c573c38,0x3c0b1696,0xbd7333b3,0x3dd26388, +0x3e1095f4,0x3de9dc22,0x3dd818f0,0x3d605028,0xbcd7a380,0xbd51fcb2,0xbb417dcf,0x3c164191,0x3cf89869,0x3d4c6f67,0x3e100f11,0x3e1dd990,0x3dadf63a,0x3dad84b5,0x3d8563b7,0x3d00dbd0,0x3b9f8d4f,0xbca1821a,0xbd40508f,0xbd77676a,0xbd814518,0xbd2534ad,0xbcb7ba48,0xbaf82dd0,0x3c1ebbda, +0xb9ef374f,0xbbacb176,0x3c1042b1,0x3cb55cf9,0x3d32cf50,0x3d8df8d8,0x3d282fda,0x3cac5183,0x3c891dae,0x3dbf5996,0x3ca79aa6,0x3dd6c92a,0x3d9908e8,0x3d798216,0xbc02ca6d,0xbc4419f4,0xbc91f114,0xbcc4db1a,0xbd014d40,0xbca3ec14,0x3c7e0c14,0x3cf2bf5c,0x3d4bd4e3,0x3d802420,0x3d294e69, +0x3c461ae6,0xbcb912fd,0xbd227715,0xbcd1d191,0xbc840c70,0xbd19d0d3,0x3aad989a,0x3cea4521,0x3bfee085,0xbbf982bb,0xbb62142d,0x3aef11de,0x3bdb4b75,0x3ab4c635,0x3b632b4b,0x3ba8f4bf,0x3c4080e3,0xba88af5d,0x3b4496a8,0x3be19f76,0x3c651462,0x3d1fa14e,0x39eac664,0xbc09e139,0x3c8328d7, +0x3cc56918,0x3cfd0b91,0x3cc7c6a9,0x3c8211bd,0x3c57170c,0x3b9521e2,0x3a19929c,0xbbd59b88,0xbc33d774,0xbc3f8c9b,0xbcbfc0ee,0xbd07a286,0xbd40f22b,0xbd018748,0xbccd8b52,0xbc45a3fe,0xbc09ed37,0xbc80dff5,0xbc5f5b53,0xbc2d2937,0xbc4807ba,0x3b66498a,0xbb3a8ac3,0x3ab64bd2,0x3c8e901f, +0x3b677183,0x3c7a7837,0x3c34d81f,0x3c8ec6eb,0x3cccd7ce,0x3d0bb599,0x3ce63645,0x3ca7a301,0x3b194fe2,0xbbe291dd,0xbbf052d0,0xbc515de7,0xbc94ade1,0xbca160c8,0xbc9e5172,0xbc8abfe7,0xbc6b3c62,0xbc811a22,0xbc94d75f,0xbcb3e2af,0xbcd420b4,0xbcd08078,0xbcbbebbe,0xbcb65870,0xbcc195ad, +0xbcdcff53,0xbce9f953,0xbd083f66,0xbcb50613,0xbb9e08df,0xbae89dca,0x3b37a094,0x3c63f68f,0x3c1459e2,0x3c969876,0x3cadcf79,0x3c50df81,0x3ab2d4ec,0x3c39eb03,0x3bbf685a,0x3c33a30b,0x3c7d87f6,0xbb2df28a,0x3d345cf6,0xbc515c27,0xbbf128a6,0xbc02ee14,0xbc1ccf69,0xbc0eb5f9,0xbc1b977b, +0xbc3d6450,0xbc3f5007,0xbc40e35d,0xbc264fe0,0xbbf9cff8,0xbb983dfc,0xbb0430a6,0xbb135a2e,0xbb4fc526,0xbb604219,0xbb6b1166,0xbb6cf66d,0xbbb73118,0x3cfe29c1,0x3d242280,0xb9605a3e,0x3d060668,0x3d480ff0,0x3c3753f3,0x3c7f657d,0x3c88ea89,0x3c825126,0x3ccf489c,0x3ceb7f85,0x3cf549f6, +0x3d5a06e5,0x3d0de3c6,0x3c806f9f,0x3d5d2b28,0xbb6f25a8,0x3ccbc48f,0xbb0eaf04,0x3cf015b3,0x3cdcf5a7,0x3ce57f23,0x3d1f5ccd,0x3d03d724,0x3d0069ce,0x3d0a221b,0x3ccdff4f,0x3ca791e4,0x3c90bc06,0x3c5e3b2e,0x3c419324,0x3c22f823,0x3c5234cd,0x3c65ed6d,0x3c6d9119,0x3c861b11,0x3c9d6259, +0x3c9ab0e4,0xbb92d5b2,0x3bc694d3,0x3d73ca04,0xbb9d5c31,0x3b661b49,0x3d6603b8,0x3d4df42d,0x3d483592,0x3d4bf31c,0x3d3fb109,0x3d3ca4f2,0x3d2f3cb5,0x3ae36449,0xbb906adc,0x3d5dce2d,0x3b90f30f,0x3cb80553,0x3ce9d35a,0x3d4e5755,0x3d605f8f,0x3d9d8316,0x3d5e252d,0x3d4dafa2,0x3d6a96fb, +0x3d28ecd6,0x3cfeb0ad,0x3cc167c9,0x3c175188,0x3a96e6a8,0xbb97030d,0x38722242,0x3a27bdbf,0xba6d0d52,0x3b049e03,0x3c2d32fd,0xbaaf87e1,0x3ca74f36,0x3c7e595b,0x3bb0d39d,0x3c836114,0x3c8bde03,0x3c7f6422,0x3c893243,0x3c0c4544,0x3b7db54d,0x3c6fe419,0x3caa56b5,0x3c843684,0x3ca6799f, +0x3cbd57a6,0x3c6d3f82,0x3c99f702,0x3cafc9b1,0x3d40a269,0x3d882862,0x3d90f636,0x3df50c37,0x3d9b4b7c,0x3d91e790,0x3db27b4a,0x3d4ce3ae,0x3cdc9323,0x3c3739a7,0xbc9bb790,0xbd027744,0xbd2eb8a2,0xbd0153e7,0xbcda3f22,0xbcd10572,0xbc46d50e,0xb9f62f27,0xbc1bee4d,0xb9e282be,0x3bfd6bf0, +0x3bbf78de,0x3b7ee927,0x3bbaf6e5,0x3cb6ee48,0x3c7af9bb,0x3cb2d084,0x3b324a4d,0x3cf8c72b,0x3cae4e54,0x3c0a7141,0x3c44e759,0x3c0becbe,0x3c4dd1cf,0x3cb301e7,0x3d36351b,0x3d91f19e,0x3de974a6,0x3e146b23,0x3e570eb9,0x3e052919,0x3df08af5,0x3e1752c4,0x3dd99e9b,0x3da27851,0x3d81d1b4, +0x3c0d57df,0xbcc1dd0e,0xbd420c53,0xbd23c968,0xbd2d1b1a,0xbd54929a,0xbd1c588e,0xbca0bdd4,0xbcd6da3d,0x3a8471ef,0x3c4538ff,0x3ba34c64,0xbad81a6c,0x3b95a666,0x3cd7c86d,0x3c9d6a7e,0x3cc8ffad,0x3ca8c419,0x3cffd1aa,0x3cf224ad,0x3c49e794,0x3cd3743d,0x3ce18dbd,0x3d2381bd,0x3d0f286b, +0x3d936503,0xbbb09a70,0xbd1dfd8f,0xbda54a28,0xbdcc5f6d,0xbdff7a1b,0xbe076056,0xbe2352c7,0xbe2504cd,0xbe2a48e8,0xbe30a12b,0xbe2da99f,0xbe34c2c2,0xbe3fc459,0xbe2ecb08,0xbe0e234c,0xbdadd28d,0xbd701c18,0xbd02e9c4,0xbc5ee4ab,0x3c65755a,0x3c82e8a2,0x3bbd057a,0x3bfdde7e,0x3c53fcec, +0x3cc70bd0,0x3cd2ef3f,0x3cc40c94,0x3c7c240d,0x3c4973c6,0x3cb00f3d,0x3d01b801,0x3bf17770,0x3c3ef736,0x3cdefa7d,0x3d4e13d1,0xbb23393b,0xbe0531f4,0xbe4f26df,0xbe2d3724,0xbe11fc17,0xbe4e98a9,0xbe747023,0xbe786d3d,0xbe1d11ba,0xbe0d2127,0xbe0a2eb2,0xbe609a87,0xbe889c4e,0xbe9e2ac6, +0xbe99a64a,0xbe8caa0d,0xbe5c302b,0xbe31c6c4,0xbde82bc6,0xbd9fd68a,0xbccbc159,0x3c183820,0xb98523f9,0x3b82842d,0x3be50d36,0x3cad14dd,0x3cd679be,0x3d0e8039,0x3cb2017b,0x3d0e8007,0x3d0d91a9,0x3cfea274,0x3d03d4a3,0x3c41a7ad,0x3c7f0ebd,0xbc87da07,0xbdfa52bc,0xbd866b6f,0x3c84f95c, +0xbd36b8e1,0xbda3572c,0xbdd1a57b,0xbd9bbcf7,0xbda8cb1b,0x3da8814f,0x3e2e3853,0x3e31c507,0x3df4eb37,0x3d6391bd,0xbd1749f8,0xbd211f5c,0xbd7351e0,0xbd891301,0xbdc9666a,0xbda7adf9,0xbd93a632,0xbd7259ef,0xbcca8fb4,0xbc2da451,0xbb67e738,0x3c587006,0x3d18e9b5,0x3d2e603e,0x3d2f4c02, +0xbb8ffe7b,0x3d2b8bf8,0x3d03ab5d,0xbac55189,0x3c206710,0xbc4aa320,0xbcde6adf,0xbd72be3c,0x3d6d9a3e,0xbc86fff3,0xbea131fe,0xbebbaaa6,0xbe80a238,0xbe670ae3,0xbe4c42c2,0xbe2c79be,0xbe58fc12,0xbe6e72de,0xbe6a4ba4,0xbdffef42,0xbd98bcaa,0xbdbffe72,0xbd385bcc,0xbccc6c49,0xbbea94b9, +0xbb9055f9,0xbc0eb004,0xbd3e3c23,0xbd7dec6b,0xbd523fed,0xbd69216a,0xbd1a5084,0xbc87a8af,0xbb0288b3,0x3c0b2b2c,0x3b5a1561,0xbc4f1a45,0x3c83b371,0x3cd2a7e1,0x3cdc5a2d,0x3c97a9e0,0xbbd643d3,0x3c67f561,0x3cf786dc,0xbc07418e,0xbe3a6ad9,0xbe74f9d8,0xbe3c8306,0xbe0501c8,0xbe08dcee, +0xbe08a273,0xbe243eb7,0xbe2cc40f,0xbe3a5783,0xbe511abb,0xbe388deb,0xbe0efb6d,0xbdb32374,0xbd7d3664,0xbd470acf,0xbd0a8d7d,0xbd4dc9dd,0xbd320087,0xbd185b9a,0xbd476ec2,0xbcb1d9e7,0xbc6ddf7a,0xbabb71c6,0x3bbc6fdd,0x3beb44b5,0xbbce1f20,0xbc215d0b,0xbc6b8e14,0x3b247485,0x3ae2655e, +0xbbd37c5a,0xbb032e79,0x3bc71501,0x3c88f13e,0xbd1789a4,0x3cdc360b,0xbdc7c4ef,0xbd9dc918,0xbd48d32d,0xbd164774,0xbd2cbe0a,0xbce33a01,0xbc48ca45,0xbc3f6cf2,0xbc59f1ce,0xbcaf99d8,0xbd062dd5,0xbd998250,0xbdf9257a,0xbe19ce16,0xbe043762,0xbd7f90f1,0xbc4489b4,0x3c1f6d53,0xbb5ad772, +0x3af32ee9,0xbae402cd,0xbcd6b9fe,0xbc84d6c8,0xbbef1339,0xba99939f,0x3baf889e,0x3c14f1d2,0x3bb19526,0x3ad94b77,0x3abac8f1,0x3b490e86,0xb9de5482,0xbc806ad1,0xbc9761bd,0xbd2b9c47,0xbd107ca0,0xb9679899,0xbb02500b,0xbceee1b8,0xbd3141f6,0xbd4ca7a8,0xbd6f4c2a,0xbd8e2c09,0xbd822c12, +0xbd6c05b0,0xbd616c8b,0xbd47c743,0xbd1c7eb1,0xbcf5c788,0xbc7ba1ac,0xbc3c7609,0xbc70f94f,0xbc835ab9,0x3b16f888,0xb9581bf8,0xbc8e1e5f,0x3bc7d907,0x3c887d3d,0x3c8a76d2,0x3c66f3c2,0x3cbd4ea8,0x3c31a9a1,0x3b8f03e4,0xbc83a339,0x3a6099a3,0xbb54b6ce,0x3adcbd93,0xbae6d1ff,0xbbf1a49b, +0xbc07c48b,0xbc4f3dd8,0xbc90dd2b,0xbd45b094,0xbd37c56a,0xbd542de4,0xbd59f257,0xbd6a90d7,0xbd7485b5,0xbd85f0c4,0xbd6d41e8,0xbd583883,0xbd37d8f7,0xbd1f2982,0xbd0f9221,0xbd05d178,0xbce88c9f,0xbcb0a6ce,0xbc1f44fa,0xbb64056a,0x3bc44098,0x3bc565af,0xbc851d63,0xbc7aefdf,0xbcf55776, +0xbc80658b,0xbcd4f433,0xbd1b2091,0xbd132a0c,0xbd22aeca,0xbd20b332,0xbd1652f7,0xbce65d08,0xbce7a461,0xbcfd5a9d,0xbce3a700,0xbd237b40,0xbd1a2646,0xbd7e2a0d,0xbd1e4c1b,0xbd17d867,0xbd272139,0xbd2b59d0,0xbd385e30,0xbd41b0ae,0xbd4ffb48,0xbd40c5ef,0xbd395003,0xbd343858,0xbd2e3988, +0xbd248f67,0xbd196f29,0xbd0c6c04,0xbd042e61,0xbcfcbe0a,0xbcec2cbf,0xbcdc40f9,0xbc8a1a89,0xbd342dc6,0xbd0d7480,0x3c7e7a55,0xbd660a4c,0xbd354c1a,0x3c833ccb,0x3c594125,0x3c3fdb6b,0x3c57f17d,0x3be8f999,0x3bb10f95,0x3b962645,0xbd35aba1,0xbd7e2cc5,0x3ca4d315,0xbd30512f,0xbd37e265, +0x3ce67419,0x3d971dbe,0x3d0f637c,0x3d24b3f1,0x3d2e47c8,0x3d2d5598,0x3cec6c57,0x3caeabfe,0x3c6c139b,0x3c75e01c,0x3c7ad390,0x3c8a7b42,0x3c91028d,0x3c9679fe,0x3ca7b0cd,0x3c984f8c,0x3c9a979d,0x3c9e48a2,0x3cb456de,0x3cb12700,0x3c8140a7,0x3d7956bd,0x3d5547f3,0x3c3cc3e4,0x3d72aad2, +0x3d64335c,0x3c9472e7,0x3ca3a3b4,0x3c9cbd86,0x3c80d7ee,0x3ccbd430,0x3cdb6398,0x3cc5ef11,0x3d69dda0,0x3d83263e,0x3c601178,0x3d7222fd,0x3d5d6d61,0x3d930039,0x3d857967,0x3d949b1d,0x3d92447e,0x3d3ccc36,0x3cf8f707,0x3c61bbfc,0x3be8aae3,0x3babe81c,0x3c55b4a0,0x3c91fe7a,0x3cb81359, +0x3cd6b06e,0x3ca074b0,0x3ca01149,0x3ca88008,0x3ce35315,0x3ca9bd34,0x3ce0651e,0x3cfe46a4,0x3cddf91a,0x3d1c2765,0x3ceacdb0,0x3d090ff1,0x3d2f4f4c,0x3d1aeecb,0x3d445826,0x3d4603a8,0x3d38dc00,0x3d031159,0x3cf07ff6,0x3d2830fe,0x3d32c7e5,0x3d3ff123,0x3d557ede,0x3db718ca,0x3dc16102, +0x3dc1dba3,0x3dd14cf1,0x3dd9304b,0x3d4a16c6,0x3c7ea198,0xbcd5a790,0xbd18cc39,0xbd24d195,0xbcf0ca27,0xbca8f7ab,0xbc86e283,0xbb6934f8,0xbc31e084,0xbc03fe8e,0xbb32bc4b,0x3c0f7315,0x3c093ef2,0x3c0f7e5c,0x3cd8314d,0x3ccf223e,0x3c8c0380,0x3cb9a7ae,0x3cfcb579,0x3d1671b7,0x3d0a44fb, +0x3cd2a719,0x3d18ce9e,0x3cce33cc,0x3d18d8e6,0x3ca9bbb8,0x3d1bdf0d,0x3d457f2f,0x3d5ec313,0x3d981641,0x3daa9bce,0x3ddf820e,0x3ddeacf7,0x3e080cee,0x3e1899cb,0x3db8f477,0x3d25280d,0xbcc87c47,0xbd52045b,0xbd876e14,0xbd22f4f0,0xbc1b26e3,0x3c66b07f,0x3cce3fcb,0x3bb71f99,0x3bd22851, +0x3c7da276,0x3d094a3b,0x3c8b2792,0x3b8efa73,0x3c3507bd,0xbbf1b03a,0x3bfb0c13,0xbb50f12f,0x3942521b,0x3c61d8ee,0x3c9e1251,0x3ca80623,0x3bf8bf85,0x3cdbe4d4,0x3ca467af,0xbbb0b386,0x3d07c9a1,0x3d6354e4,0x3d262cec,0x3d758a1d,0x3dc65de8,0x3b2df04d,0xbd28a085,0xbd388c2f,0xbc222862, +0x3bbddc8d,0x3c2c62c9,0xbb8f08d5,0xbca6f91e,0xbd03319e,0xbd4652ae,0xbe217e3a,0xbe4e74f6,0xbe5187ca,0xbe0f684a,0xbe01c13d,0xbe2b40c1,0xbdf933c8,0xbdac1989,0xbc79d2da,0x3c832781,0xbbe12cd5,0x3c0e4f56,0x3b971fa8,0x3c80ad2a,0x3cfb2e59,0x3ca5626b,0x3cb7dcc6,0x3cbb4ca1,0x3d1ca454, +0x3d019ddc,0x3c921b47,0x3c41b06f,0x3cb078e7,0x3d020bc7,0x3dd83f9a,0xbdc1a550,0xbd530751,0x3da745ed,0x3e0aaf0f,0x3e4cd1d7,0x3e89474d,0x3e9067c2,0x3e3e5eca,0x3e575a82,0x3e3fe527,0x3dda498e,0x3ddfe1be,0x3d9967fc,0x3b740f5b,0xbd08f65f,0xbcd08eba,0x3d2f622a,0x3c4dd569,0xbc38b9ee, +0xbcc8c545,0xbd402968,0xbcb89735,0xbc38345a,0xbbf2e26f,0x3b73e17d,0x3cb02041,0x3cd72c6e,0x3d15a391,0x3ceaabc4,0x3d45e81f,0x3d50a5a2,0x3d629d54,0x3d0668c2,0x3c8dd466,0xbc51482f,0xbd0312f8,0xbb454841,0x3d8e3c43,0x3d4cf182,0x3daca746,0x3e3deb36,0x3ea742c1,0x3eac480d,0x3e3fa065, +0x3dbc79fb,0x3d35c6c6,0x3d0baf35,0x3e04ddf9,0x3e35284d,0x3e3bec2b,0x3e3c74bd,0x3e16c2e4,0x3dc352ac,0x3d5ac881,0x3d3e126b,0x3c340440,0xbac7f888,0xbc0244d8,0xbc12d102,0x3b99bacd,0x3c670dd3,0x3d31d102,0x3d10cc47,0x3d02b6da,0x3b5d44aa,0x3cfe3635,0x3c9b4739,0x3c0b5509,0xbc34a3f8, +0xbc3c9546,0xbceb2117,0x3a5828f1,0xbcf677c8,0xbba5b9c6,0x3e342b50,0x3e8dd1e6,0x3ec0343f,0x3eab204f,0x3e73d1fa,0x3d94baa6,0x3dbff79b,0x3d98908c,0x3da9de1a,0x3d3e065a,0x3d370b91,0x3d985e81,0x3d7622c6,0x3d7411c1,0x3d7ff65e,0x3d48112a,0x3d2844b9,0x3c5554b7,0xbcfdcede,0x3b92a8ef, +0x3c479bfc,0x3c7596d7,0x3cb62eb2,0x3cda117a,0x3c93e57a,0x3c3761ff,0xbc0375bc,0x3c6f8a4b,0x3cabb7f8,0x3d2d883d,0x3c7e441e,0x3cb1e63d,0xbc1673b3,0x3c37cc0c,0xbd5954e8,0x3e09f015,0x3e7a4a41,0x3e696035,0x3e94cb33,0x3e8c24c6,0x3e798402,0x3e2496fa,0x3e25d78d,0x3e2afa0d,0x3e5dbfec, +0x3dddcad8,0x3d620783,0x3d78d567,0x3c8ab03c,0xbb6228dc,0x3b501e9c,0x3cd641e4,0x3d5a4a28,0x3d747883,0x3ca3b19a,0x3d2def69,0xba1f7179,0x3bba5be2,0x3c8a31e6,0x3cf42798,0x3c9a27d0,0x3c8c7299,0xbba5c0e6,0x3c75939d,0x3c853752,0x3c8f0fa0,0x3c20d0e3,0x3bb08858,0xbc88c8a1,0x3cfc02df, +0xbd933bbb,0x3d5679b9,0x3dca1382,0x3dc4ea85,0x3e03f2af,0x3dd8d660,0x3d8d8033,0x3cb52cbd,0xbc9bccd5,0xbd575d83,0xbd8a23b7,0xbd5d3fc4,0xbcba38f2,0x3bd151f2,0x3d2dd831,0x3d7912bc,0x3d852977,0x3d796a1a,0x3d67e84a,0x3ccb46df,0x3c30e7b6,0x3d028b1c,0x3cc4757a,0x3d0d99b1,0x3caf78aa, +0x3c713aa5,0x3c3eca96,0x3c1d7a60,0x3cafe971,0x3ca20918,0x3cbc0e75,0x3cab2975,0x3c9c87be,0x3ce40e6c,0x3c189bb0,0x3cf3593a,0x3d77d7be,0x3d732a09,0x3d7be84b,0x3d868bd0,0x3d9ba158,0x3d621602,0x3d35589c,0x3d1395bf,0x3d1d164f,0x3d1d0a48,0x3ceb9669,0x3cc07461,0x3c300cc8,0xbc153f42, +0x3aa1dfa3,0x3c386ebf,0x3ccd62c5,0x3d0a0f60,0x3d4065b7,0x3d67ea31,0x3d1e1cc9,0x3cba7848,0x3c626aba,0x3ca0c7b9,0x3c920caf,0x3cb1a567,0x3c623745,0x3d08eeaa,0x3c7ad36f,0x3cde862e,0x3c6923b8,0x3cdf3306,0x3cac1089,0x3caf0987,0x3c1e6978,0x3d170827,0xbd361ee8,0x3d7a940d,0x3d64d1fe, +0x3d5ba804,0x3d52dafd,0x3d4f9e29,0x3d4bcd60,0x3d3e9c69,0x3d124942,0x3ccdba82,0x3c942a5b,0x3c39b83c,0x3c077d3f,0x3b50f88e,0x3c14fc47,0x3c2af78a,0x3c326270,0x3c655bf0,0x3c3dfd92,0x3cb42033,0xba2ef452,0x3cfcc440,0x3d14ec6b,0x3c89b0b2,0x3c90a84c,0x3d0dbd77,0x3d268726,0x3d36d388, +0x3d075011,0x3d4da04c,0x3d569da6,0x3d10614a,0x3d2b26f9,0x3ca1ebbe,0x3cc7608f,0x3d47aeec,0x3d01265c,0x3d93f66d,0x3d4fb068,0x3d60e56b,0x3d592a39,0x3d5ade7e,0x3d5a4361,0x3d613cfc,0x3d503d88,0x3d44345b,0x3d346649,0x3d20b62c,0x3d0aa438,0x3cdc2950,0x3ceccc5a,0x3cf9049e,0x3d031062, +0x3d0ba9ae,0x3d0a4e93,0x3d2911e6,0x3cb8d74b,0xbc54997a,0xbda31e04,0x3d2649db,0xbbd98df9,0xbdabe709,0xbda9a5cb,0xbda4af6b,0xbd991d3a,0xbd9dffc9,0xbd9c245f,0xbd91f512,0xbb9ba982,0x3d5f9e85,0xbdb34599,0xbc782f08,0x3d74353a,0xbdc9ee38,0xbd68a4a4,0xbdf21b92,0xbdb944e1,0xbdd5a643, +0xbdd81a70,0xbde297eb,0xbde12f40,0xbdd9787f,0xbdcb8e2c,0xbdc405a3,0xbdbf1f66,0xbdbe025c,0xbdbe12b4,0xbdc205bd,0xbdc13331,0xbdc07dd7,0xbdbb947c,0xbdbed71b,0xbdaea259,0xbdd581e0,0xbd76ab0a,0xbbc6f176,0x3dc455f5,0xbd9b9782,0xbc0f2c12,0x3db801c4,0x3db467e3,0x3db04982,0x3d9b1f73, +0x3da4fa69,0x3da3e69c,0x3d98012d,0xbbf778e6,0xbdb48d5f,0x3dc62699,0x3bf94bfd,0x3d80a31e,0xbe05b584,0xbe110c5b,0xbe1e5462,0xbe234d5a,0xbe2d39d6,0xbe2c2dd1,0xbe205c5d,0xbe0b70e4,0xbdf7e642,0xbde9a76e,0xbddda8dc,0xbdde3637,0xbde66e78,0xbde1cbf2,0xbddb2a8d,0xbdcdf747,0xbdce470a, +0xbdc3de5c,0xbdc59ee4,0x3c374891,0xbd6885eb,0xbd6c9b13,0xbd15f03e,0xbcced51d,0xbd52003b,0xbd61f09d,0xbd7e3974,0xbd2dfa05,0xbd82f2f1,0xbd89c52f,0xbd441c52,0xbd6c94dc,0xbcf562d7,0xbce64c9f,0xbda15321,0xbc3803c4,0xbdc08582,0xbe383c57,0xbe33056c,0xbe488bfd,0xbe5e6205,0xbe5e2e0d, +0xbe4dde90,0xbe253c2d,0xbe0e4033,0xbe03cfd2,0xbdf67e44,0xbdf435e0,0xbe01c9cc,0xbdf828fc,0xbdec8a1a,0xbdd232f8,0xbdcba3fa,0xbdcc16dc,0xbd88e247,0xbd3df1e9,0xbd1c8450,0xbd08624f,0xbcf411da,0xbb5ac3d5,0xbc94b502,0x3bf667b9,0xbd05f547,0xbb87b834,0xbc98e315,0xb82b35d7,0xbcbdcb06, +0xbc2dacb5,0xbc3f0f40,0xbb436c23,0xbd43b4ff,0x3c65eba4,0xbe173ea8,0xbe90fd40,0xbe95eac4,0xbea0ebbc,0xbeaead78,0xbeb14a89,0xbea2e98b,0xbe775a3c,0xbe3dbb46,0xbe294f30,0xbe15b5ee,0xbe19d4fe,0xbe216282,0xbe0ec0ea,0xbdf9e373,0xbdd4096d,0xbdd8b5ee,0xbdbde503,0xbd8e9188,0xbcc3dd2d, +0xbd28aba4,0xbc685f96,0xbca491d1,0xbbf250a9,0x3bc40b59,0x3c253e16,0x3caf8f01,0xba9c6239,0x3c933f35,0x3b9c1e5b,0xbc5dcad8,0xbc994b23,0xbc476c1b,0xbca413d1,0xbd32c768,0xbd908753,0xbda699b2,0xbced689f,0xbb4b0dd3,0x3d01d6af,0x3d5469c5,0x3d3657e7,0x3ce6df7d,0xbd8b3896,0xbe0c9e1c, +0xbe40c43f,0xbe3982e8,0xbe291c8a,0xbe1a5caf,0xbe389c03,0xbe311254,0xbe004910,0xbdc5cb94,0xbdbe24f0,0xbdef0507,0xbd69eb35,0xbd52b340,0xbcfa29aa,0xbca291c3,0xbb4ce9c3,0x3cd35f2a,0x3bec3424,0x3c39f008,0x3cb1dbf4,0x3c88f38f,0x3bc3a87e,0x3aeac75c,0x3c277265,0x3c80acde,0xb9d53a2c, +0xbd1ba0b0,0xbba6daed,0x3d80b649,0x3d7aa025,0x3d0ebaa5,0x3da31df5,0x3c86a5d8,0x3b914611,0x3d10cecd,0xbd064cd4,0xbd16d7e6,0x3c142090,0x3bb01bdb,0xbb617d31,0xbc1b838d,0xbc611c68,0xbcfc182d,0xbd7826d4,0xbdb6e626,0xbdd44a68,0xbda0d5a3,0xbd835c3e,0xbd82790b,0xbd2a44a3,0xbce3af3d, +0xbc1ee0a2,0x3cc43117,0x3c8bebbc,0x3ca048b6,0x3c6c771a,0x3d16ae91,0x3d2654a8,0x3c6f9289,0x3b8a1c58,0xbca0deb6,0xbcc5ea53,0xbc2b50e6,0x3d43c6f3,0xbb01a694,0x3c4a3566,0xbd051a7b,0xbe56e662,0xbe748fa2,0xbe8d7c24,0xbe7b2c86,0xbe36984f,0xbe112598,0xbdbab7d7,0xbdf8fe41,0xbdffd4d2, +0xbdbbdbb1,0xbda5f5b6,0xbd41133b,0xbc15a698,0x3cf7dbb1,0x3cd85da0,0x3bd93959,0x3c003361,0xbafe846f,0xbc04fc1d,0xbc5ad8b5,0xbb0115a1,0x3d1c65bc,0x3c395de6,0x3bb5e1e8,0xbb243eb6,0x3c9d7d74,0x3c7a50d2,0x3cb029f5,0x3beb6cc2,0x3c4f1d76,0x3ce4626e,0x3cf461b0,0x3ce1b4d2,0x3db6fa19, +0xbc412c8e,0xbe097e09,0xbead76b0,0xbe2f298b,0xbd6ba2fd,0x3d3dcf7b,0xbc2f1cbc,0xbca7bfdd,0xbbc970a2,0xbd2f4d1d,0xbd27c27b,0x3b5d9d72,0xbd01d32e,0xbd41c212,0xbd5182fe,0xbd579fba,0xbcfc22f7,0x3c3c5dd8,0x3cf81349,0x3cd3588d,0x3d390004,0x3cb576bc,0x3ca0e7bd,0x3d406cbe,0x3bb8aad6, +0xba9db5b4,0xbc2327a4,0x3b2d8e80,0x3c181011,0x3caaebb0,0x3bf6f806,0xbbe6638c,0x3c8fdfdf,0xbb5e75d8,0x3dd900d7,0xbc506ae8,0xbe6c558d,0xbe6c220a,0xbe59977d,0xbe1ee6f6,0xbe0e7009,0xbdd2d6a6,0xbe12f71e,0xbe1f2f93,0xbe2db1fe,0xbdca4192,0xbd986f1a,0xbdd1dcf8,0xbd1bc939,0x3a945987, +0x3cf53dcc,0x3d3ca335,0x3ccde16d,0x3cb5119f,0x3cdd7499,0x39a43b70,0x3cac5a18,0x3c63cd17,0x3c8843f3,0x3ca5d486,0x3ce6c235,0x3cc06770,0x3ba9a4b1,0x3b770248,0x3c058c81,0x3c94a6b1,0x3cdfde14,0x3ce1aa8a,0x3d1e2f65,0x3cbb3075,0x3d86a1b1,0xbd4ce3cd,0xbddc98be,0xbd85b3c4,0xbd69d2b6, +0xbd2945b5,0xbd2dc17d,0xbd6e358f,0xbd207cce,0xbd0874dd,0xbd168a70,0xbd4c6fbc,0xbd5f12e9,0xbd809a19,0xbd0132a7,0xbcb995d8,0xbc2a0fb5,0xbc3314b1,0xbc3f67a0,0x3cc09a01,0x3d2b1dd9,0x3cacba95,0x3d094370,0x3c6c7f80,0x3c1a24e2,0x3bb20b90,0xbb5f4d54,0xba7fe906,0x3bcffda0,0x3bf83304, +0x3be1c1f2,0x3a60eaaa,0x3c8cc3f0,0x3bff9acf,0x3bb85f07,0xbcc0ff4e,0xbbe5a4bd,0xbd23f4ed,0xbd60fcdc,0xbd2449fd,0xbd3fab70,0xbd279ff4,0xbd202499,0xbd169d96,0xbd179d8c,0xbd243d3a,0xbd0e3bf4,0xbcbea463,0xbc32f67d,0x3ade0351,0x3b99a534,0x3c477a98,0x3cb7d933,0x3c7806cc,0xbb93fffc, +0xbb74d8e4,0x3c982992,0x3c0f5726,0x3800732b,0x3a7bac06,0x3c4874c5,0x3bcbeeed,0x3cbd9b49,0x3c157cca,0x3d146408,0x3c048cdb,0x3c8c8430,0xbb84ba4e,0xbb70062d,0xbafd6342,0x3c171922,0xbc4f8ab6,0x3db555bf,0x3bfdc447,0x39f1d0b9,0xbb0f1967,0xbc0af3da,0xbc544cd1,0xbc923488,0xbcaf8d62, +0xbc3f5cb4,0xbacff2b4,0x3b694689,0x3c12b966,0x3c5cf55d,0x3caa0468,0x3c8aad0c,0x3c5d4127,0x3c1d1f26,0x3c13088a,0x3c424869,0x3bcde982,0x3ccf5f68,0x3b5b73d3,0x3bf6e716,0x3c915629,0x3c947a95,0x3c38af49,0x3bd40645,0x3bf9ac31,0x3cb0e440,0x3bdf10e9,0x3a187719,0x3cab713a,0x3c78230e, +0x3d109d2c,0x3d146fab,0x3c2bfb93,0x3cd40921,0xbcbdd6ca,0xbc073780,0xbc575957,0xbc62c29f,0xbc781ab2,0xbc868846,0xbca57561,0xbc7ee3d0,0xbc536bb5,0xbc0c0d10,0xbb8b754a,0xb9d7f5d1,0x3b8db813,0x3b116b49,0x3ae54385,0x3a6478a4,0xba779b7e,0xba9060e5,0xbc261967,0x3c9e1558,0x3d4ee22b, +0x3d9ec676,0x3c5a526d,0x3d5e5538,0x3dafc18c,0x3db31490,0x3db2e3c2,0x3da7d0b2,0x3db70e4f,0x3dba84c8,0x3db5b09d,0x3d6ac411,0x3c0d32de,0x3db76601,0x3d840c40,0xbc60e5ea,0x3cc3fc61,0xbd62345a,0x3d1def08,0x3bf8697f,0x3c6a8e75,0x3c78bd88,0x3cf9a3e1,0x3d0f6d85,0x3cfbf4ff,0x3d078cd1, +0x3d029a8b,0x3ce886d6,0x3ce04407,0x3cd71f2a,0x3cd24e95,0x3cdfaa2d,0x3ce7a5bf,0x3cf71b6e,0x3ce39b5d,0x3ca80d93,0x3d4ce35f,0xbd331624,0xbdc411d1,0xbe16042b,0xbc93570c,0xbdb27477,0xbe0bcf6d,0xbe0fa321,0xbe0ee485,0xbe036a4f,0xbe0fe86c,0xbe1149fd,0xbe0da750,0xbdb83345,0xbc6c507f, +0xbe11ac2c,0xbddd9cfb,0xbe0ecd89,0xbc8a5d61,0xbc05d0eb,0xbbb1acde,0x3bce3125,0x3d425560,0x3d775b4a,0x3d3e178f,0x3d6adaab,0x3d4de2e9,0x3d12f54d,0x3cf0f7a7,0x3ce96a6f,0x3d010cc4,0x3d1eecf8,0x3d249801,0x3d31acaf,0x3cfff133,0x3d0c5734,0x3cde89cc,0xbdc9ad6f,0xbc2d79ae,0xbca7eecf, +0xbca407ee,0xbce41173,0x3a17cf09,0x3ba11a4e,0x3ac60c62,0xbcbff6f3,0x3be2d33f,0x3c8653e6,0xbc80e1c2,0xbc84b48b,0xbd593341,0xbd71df80,0xbc64fb08,0xbdc91a29,0xbd54a835,0xbc68b838,0xbd03898f,0xbc862be6,0x3d76b098,0x3db1cf32,0x3d833a39,0x3db3f01f,0x3d9d1e02,0x3d673ea2,0x3d378a92, +0x3d21a2c5,0x3d26b959,0x3d49738b,0x3d578d74,0x3d7e624c,0x3d1700b5,0x3d47de1e,0x3c131696,0xbd1d46b6,0xbcc3850c,0xbc6fe77e,0x3a08fa14,0xbc966e10,0x3c9dab12,0xbca16aad,0x3cd42639,0xbcc5da65,0x3c6e23ba,0xbcd070b5,0xbc8fe705,0xbd0b9084,0xbd32a766,0xbd9be385,0xbd7654b7,0xbe273f30, +0xbdfa8f3c,0xbd3f6ed7,0xbd74c810,0xbd078bdb,0x3db7aea2,0x3e0bf25a,0x3de3c1fe,0x3e167e68,0x3df7d2eb,0x3d8c1321,0x3d1a2a62,0x3d0eeaa1,0x3d4b0a45,0x3d8e3b26,0x3d9760fc,0x3da41a51,0x3d4415ef,0x3d3f510c,0x3c80fd25,0xbd53a3a8,0x3ad3c9f0,0xbd050c18,0x3bb14b1e,0x3c59c319,0x3ce521a8, +0x3ca3a65d,0x3c5b5bc1,0x3ce19c48,0x3cb6cecb,0x3c9bcdd4,0xbc281d60,0xbd041277,0xbd905e0c,0xbdae76ab,0xbd9f4997,0x3cb32797,0x3e7c7c31,0x3ea4c191,0x3e65ecd9,0x3d04d0f1,0xbbbdbdfc,0xbd902689,0xbe11d383,0xbdb37010,0xbd58caa7,0x3b92b09a,0x3d428f91,0x3d70c069,0x3d038ba7,0x3d6ef337, +0x3d803668,0x3d941a05,0x3d370948,0x3d7e16a9,0x3c94ea22,0xbd679d22,0x3c0afafa,0xbbc753d9,0x3bd30c3b,0x3b82c537,0x3ca6e07c,0x3c3a7846,0x3c4cbbb7,0x3caa56af,0x3abc86dc,0x3c09bd48,0x3ce5369f,0x3d1f53b4,0x3c485d71,0x3d03e33b,0x3b2c314c,0x3d813bfc,0x3dc7f3aa,0x3d59965e,0x3c9314ea, +0xbd440ee9,0xbd7e7f17,0xbdbf3b6d,0xbdbaf1a7,0xbdd62180,0xbda0fcf2,0x3cebd91b,0x3cd0da28,0x3d58d0c5,0x3db2e096,0x3deffef1,0x3dfccf20,0x3df31b8f,0x3dc6b975,0x3dc81d6b,0x3c46cf16,0xbd16c78c,0xbcc1f530,0xbc9ed80b,0x3c5f0556,0x3cb0597b,0x3d131537,0x3ca4b6be,0x3c87ab91,0x3c7412bf, +0x3d210e25,0x3d0c34d3,0x3cc15b54,0x3c178f01,0x3d58b868,0x3d799083,0x3db4c0dc,0x3cb4b9eb,0x3d8b0f85,0x3beae11d,0xbceb9954,0x3ca74590,0x3d951ee0,0x3e1acfa2,0x3e61a42c,0x3e07fb3d,0x3dbbf4eb,0x3dadae69,0x3d654145,0x3d535e96,0x3d31ee6f,0x3cf0627f,0x38aeab21,0xbd0c52d6,0xbc555734, +0x3c9df6c3,0x3cd801e2,0x3ceb4d6d,0x3d0cb43e,0x3c83b843,0x3c36f92b,0x3c8aa8df,0x3d5c74c9,0x3b6baada,0xbb08fc08,0x3b9605c7,0x3cd3139a,0x3cff0a16,0x3d377119,0x3c74505f,0x3cea5bb7,0x3cbcac06,0x3d08f9b7,0x3cf1237e,0xbd2a8e9b,0xbd466bac,0xbc29201b,0x3dd3ac6c,0x3d851ada,0x3cb2599a, +0x3c885246,0xbd395c33,0xbdc10bd4,0xbe06d5a4,0xbdd77555,0xbdad0b70,0xbdb4a828,0xbcaded1f,0x3c7f87f9,0x3cd1c4c4,0x3d0b3b07,0x3d0780a5,0x3c966a1a,0x3bb9b870,0x3c4edace,0x3ca88d09,0x3c87357b,0x3ccc5e7c,0x3d53b45a,0x3c69eea4,0xba0fe549,0x3b7ae84b,0x3afd0589,0x3c811848,0x3d5ac1e1, +0x3c9d4c72,0x3cb4353f,0x3c62991e,0x3d2a60a4,0xbdad6254,0xbd1dc3a7,0x3d91da9e,0x3d2719fe,0x3c7c8d46,0x3d85f43b,0x3da9195e,0x3d595c0a,0x3bd61654,0xbd06c9ad,0xbd711b15,0xbd8d6779,0xbd5a8fcf,0xbccc8a04,0xbd00d9fb,0xbd06b25c,0xbcd9b33a,0xbce50409,0xbbe8cc0f,0x3ba74e09,0x3c49c8be, +0x3ccc85dd,0x3c935edb,0x3c997376,0x3c76318e,0x3ca0fb43,0x3cabda75,0x3cd669d7,0x3c81b4bf,0x3c8c280f,0x3b997cae,0xbabf6600,0xbaffb2f1,0xba67456e,0xbc6e0630,0xbcfe5f76,0xbdabd3e4,0xbd5940ed,0xbc012a42,0xbced5e4f,0x3b81af45,0x3b2278a0,0x3d0954b0,0x3dae0a0c,0x3d4e4c17,0x3cb5b681, +0xbc2e8876,0x3b294db3,0x3c1841e2,0x3cc25f5a,0x3cdbd8ea,0x3cd92fdc,0x3cac1e4a,0x3c31fafe,0x3b8c969a,0xbc14d370,0xb6c39caa,0x3b21b088,0xbc215539,0x3bfc10a0,0x3c87e05c,0x3c457607,0x3c867085,0x3c750090,0x3cbfcf04,0x3cbc8fde,0x3ca8dcac,0x3c9c4f7e,0x3c932b90,0x3c8ba50d,0x3b1fa2ba, +0x3b5fddc5,0xbd071ccd,0xbbbe5399,0x3ccea70a,0x3c714936,0x3cc5de7c,0x3cd65bb5,0x3d07d205,0x3d275b4c,0x3d1e42ad,0x3d3e60ae,0x3d49a963,0x3d0d21da,0x3c9ca6bf,0x3bc25654,0x3c22bec4,0x3c53f749,0x3ca88de8,0x3c954ad6,0x3cd1972f,0x3c558d55,0xbada0e29,0x3bcb290b,0x3c3c9bad,0x3c50f42b, +0x3ba70ef1,0x3c9e2ff9,0x3bd95c04,0x3cafdf6e,0x3b070281,0x3c3c851d,0xbbad8e25,0xbb6f39d0,0xbc306d69,0xbcb8ee88,0xbd12ef5f,0xbcbbf373,0xbcadb383,0x3b945647,0x3c6307ed,0x3c972f62,0x3cdd3711,0x3d0de680,0x3d273313,0x3d3b6147,0x3d29ce49,0x3d0e6cbf,0x3d049476,0x3cf85b62,0x3cf8f0e7, +0x3ce19067,0x3cedd847,0x3ce8e781,0x3ce82ecf,0x3cd6ef94,0x3ccef405,0x3ce1b036,0x3c2a02e2,0x3ccfb46f,0x3cac2d5b,0x3cb33d19,0x3c972ef6,0x3cbf49be,0x3cc9f9fc,0x3c8f8b4e,0x3b849ebb,0x3c7d1c88,0x3cb7e97a,0x3c1c098e,0x3c51e7c8,0x3b47ec45,0x3aa31960,0x3c589448,0xbc686bee,0x3cab189f, +0x3c896916,0x3ca016ba,0x3caea749,0x3cb66e11,0x3cc590f3,0x3ce54a22,0x3cdd3033,0x3ce233bd,0x3cda8aba,0x3cd7f07d,0x3cd2f0b0,0x3ccedd0a,0x3cc4fd29,0x3cbb129d,0x3cb3000a,0x3cb563c5,0x3ca7f53a,0x3cd886ed,0xbb19a81d,0xbca21068,0xbca73996,0x3905e7ef,0xbcc49da0,0xbcd34725,0xbcebc093, +0xbce55e66,0xbcbbad78,0xbcf43632,0xbcfeb1a5,0xbcf6def4,0xbcf92809,0xbbd802fa,0xbcb05bc4,0xbd05b92d,0x3c86f4f1,0xbc018aa5,0x3d388a8b,0xbc51f39b,0xbb851ee9,0xbb567227,0xbbab8a5f,0xbc3f656b,0xbc783bdc,0xbc9183f2,0xbc89ac7c,0xbc7e6f55,0xbc4961c8,0xbc3ba4e4,0xbc26619e,0xbc1b7800, +0xbc0554da,0xbbf66f69,0xbbe50f98,0xbc01350f,0xbbdfd457,0xbca19805,0x3d350594,0x3d771fe3,0x3d039383,0x3d11fb63,0x3d7ffaac,0x3d1db228,0x3d2a70f5,0x3d2bbcd7,0x3d130665,0x3d4168d0,0x3d4126c9,0x3d326816,0x3d676b41,0x3d03cc5e,0x3cbebecd,0x3d6fab5f,0x3c8be972,0x3ccbc5d0,0x3ca1d5ac, +0x3ceb8b19,0x3cb75092,0x3b341781,0xbc349dab,0xbcb08311,0xbcd7bacc,0xbcd80ac1,0xbc9de5a7,0xbcadc2f6,0xbcabf019,0xbca8e8ef,0xbc9a9e69,0xbc702cf6,0xbc2c391a,0xbbf7003c,0xbc72e21e,0x3b169aaf,0x3d2fb0fb,0x3bde8608,0x3cbddfda,0x3c8646ef,0x3cb888c2,0x3cc1dc5b,0x3c49ebb5,0x3ca51658, +0x3d113b2a,0x3c7bcd0d,0x3b4b912e,0x3c2d3dd5,0x3c2b5fe0,0x3caf48b4,0x3c8daacc,0xbaa02468,0x3caa9d18,0x3cd8001b,0x3d2d6f06,0x3d2f7ce7,0x3cf8edba,0xbc85fa89,0xbd21db6f,0xbd665d76,0xbd61fa94,0xbd3b751a,0xbcc867e2,0xbc8efd04,0xbc3c673c,0xbc2d66f0,0xbbd88d94,0xbb714e76,0xbb85bd49, +0xbb98f02c,0xbcaa14c7,0x3c1fffba,0x3ce553a0,0x3c287618,0x3c7d349d,0x3c6e934f,0x3cef98f7,0x3ccacf69,0x3cc91b5f,0xbacdd7da,0x3d0c350b,0x3bababea,0x3cd6e7ae,0x3c188445,0x3c3f8e9b,0x3b9e79bd,0x3c63ded2,0x3cbf92da,0xbb284242,0x3dad0b3d,0x3dfda721,0x3e09e523,0x3dee01a1,0x3d28407d, +0xbbd879d5,0xbd500f05,0xbd8cf3a5,0xbd92c087,0xbd3f17fd,0xbd342320,0xbd2cf374,0xbd362426,0xbd2c64b2,0xbd0187ab,0xbc92b30d,0xbc8be4f6,0xbcd8b42f,0xba653ef8,0x3c11f3d7,0xbca106b8,0x3bada722,0xbb508e03,0x3b1f5b64,0x3c923eab,0x3c4b77f2,0x3c545560,0x3ba14067,0x3c9f1896,0x3af9871e, +0xbc41485a,0xbb9d9d0c,0xbb04e87b,0xbbbb49d9,0xbc09eda9,0x3e7966d9,0x3db33ea5,0xbd60ad75,0xbd3cdc8a,0xbdf39cb0,0xbe0e2146,0xbe023497,0xbd9ea340,0xbb4fb583,0x3d8336c2,0x3df1bbbe,0x3e065e58,0x3e1791f8,0x3e2f9a80,0x3e1545e9,0x3ded0685,0x3d96737c,0x3d268eac,0xbb0ed175,0x3ca08fdd, +0x3d08db13,0xbb91203d,0x3b90046c,0x3c0ac37c,0x3c768f11,0x3cb98ce4,0x3bba760e,0x3c0821c8,0x3c9e74f2,0x3cd9b16d,0x3d33db31,0x3d82941d,0x3d397d4a,0x3d9095ff,0x3dc29b8c,0x3e3ba276,0x3d8cab6d,0x3c0b27c5,0xbcd2dfac,0x3ca05771,0xbab9f679,0x3e3781fc,0x3e6d32ee,0x3e573dbd,0x3e11caf4, +0x3d895878,0xbcdab340,0xbd12d51e,0xbd417a81,0xbd91bb9b,0xbd877556,0xbd9f20f2,0xbdde8e54,0xbd2332c5,0xbcb11a5d,0x3ce93a8d,0x3d814ef3,0x3d20efde,0x3d091190,0x3c4d9ac2,0x3c315fac,0x3d10680c,0x3cbf2c11,0x3cb178cb,0x3c2bd4b5,0x3d0186c2,0x3d0a8785,0x3ce7fd40,0x3d650bc6,0x3d5d2a65, +0x3d82aa76,0x3c95faec,0x3d7326bf,0x3ad2981a,0xbcbf4ae5,0x3d5657b7,0x3da62401,0x3daad79d,0x3d58460c,0x3d1dbe83,0xbd1a5f0e,0xbd8fbf20,0xbdb3dc5b,0xbdb5de59,0xbdc41684,0xbde2de9d,0xbdb838be,0xbd5fd605,0xbc39a839,0xbb13b189,0xbcb328eb,0xbb688dc3,0x3bd37b3e,0x3ac2cb32,0x3cd899c4, +0x3c6bd97e,0x3cb9e20d,0x3d949c93,0xba867418,0xbc77f119,0x3be0d031,0x3c9263ef,0x3d073315,0x3d96053f,0x3d39e353,0x3c22a558,0x3d807d32,0x3d332dbe,0x3be7565e,0x3d204d1e,0x3e08b8ab,0x3e212fb5,0x3d16397e,0x3d5220f0,0x3d346d1a,0x3adf3fb3,0x3d8516a9,0x3da6afe1,0x3d74145e,0x3d883481, +0x3d9050cf,0x3d972742,0x3d454141,0x3cb8621a,0xba8df03c,0xbc6ae0ca,0xbcad0e9d,0x3c07e5c7,0x3d15392c,0x3cacc968,0x3bc3c962,0x3c8ee3b8,0x3cb8687b,0x3d4ea161,0x3c816dff,0x3c6ef3c5,0x3cbc3681,0x3b1700d4,0x3bd25198,0x3cd8b64e,0x3ca3c102,0x3c845f1a,0x3c53a72e,0xbbfe9517,0x3d8b43cd, +0x3dd0ab9d,0x3dd187c9,0x3dbb3989,0x3cb88908,0x3cc9543c,0x3c00b77c,0xbbf6a269,0x3cb98738,0x3d1fb1ec,0x3d68d0ab,0x3d7356cd,0x3d6e711f,0x3d9a7220,0x3d6b5746,0x3d3350a7,0x3c35a5fd,0x3c6e86b4,0x3c5b4016,0x3c318d31,0x3ca089c9,0x3c0d2005,0x3c133a3c,0x3c442669,0x3c148eaf,0x3c2c7ad4, +0x3c48615c,0x3bd67e13,0x3cb9a159,0x3c81bc75,0x3cd03a6f,0x3d1f3f72,0x3cd559e7,0x3cca5f55,0x3cbf4edc,0x3d81aac7,0x3d525e51,0x3db2ddb4,0x3cd53952,0x3b2d3497,0xbc9a8aeb,0xbc90f2e0,0xbd0680c9,0xbd7ae10f,0xbca3551a,0x3ba153c5,0x3cea2b17,0x3cae9f16,0x3d0ee8a9,0x3d79ef28,0x3d7c1635, +0x3d45da71,0x3b9f18e5,0xbc4660ea,0xbc595fc0,0x3c215a72,0x3bf04a40,0x3c7d088c,0x3cffe621,0x3cacd0ad,0x3c67951f,0x3c8ff7b8,0x3c9ce4cf,0x3cb4d9d4,0x3bc92cd8,0x3ca7b355,0x3cd2fae4,0x3ceda175,0x3cba235a,0x3cefc82e,0x3d133cc9,0x3d563205,0x3cdfd0c5,0x3b63fd1b,0xbae8e61e,0x3c95aa97, +0x3cc38f1d,0x3c8ad5c7,0x3c25357f,0xbb2fe3cb,0x3c006cf0,0x3c3eceab,0x3ca02ab3,0x3cb2217c,0x3cbbdcd9,0x3cb5d6e1,0x3c2bd0da,0x3b7d92b4,0xbb606ea0,0x3b825a07,0xbbe29861,0x3b5444f1,0x3ccc5349,0x3c92ae2b,0x3ca01886,0x3c920f96,0x3cc2e6d0,0x3c91e490,0x3cb4eec4,0x3bf681c1,0x3cd1c514, +0x3c03cd69,0x3c84008f,0x3c27622c,0x3c85152b,0x3cc370ca,0x3cf0f565,0x3cbc2692,0x3cd07f12,0x3cb7b619,0x3c3f4726,0x3bb0e377,0xbb09df5b,0xbc0f5b94,0xbc6aa993,0xbc9dd602,0xbc9427e7,0xbc8b1611,0xbc8142b0,0xbc681694,0xbc46b5f5,0xbc08d4af,0xbc0ce955,0xbc060bef,0xbc2f0f24,0xbc418439, +0xbc7f4d0c,0xbc6de233,0x3cdd54d0,0x3c23b72b,0x3cbb6254,0x3ca06f4f,0x3cfb354f,0x3cef4622,0x3cd4fc83,0x3d0a5f4b,0x3d2cf40b,0x3d055cd3,0x3ceb8c0b,0x3d05118f,0x3cfdf301,0x3ce99189,0x3ceddee3,0x3caa59ec,0x3d1089b1,0x3bf8a898,0x3bf59b43,0x3bd0d45a,0x3b814568,0x3b5674d1,0x3af64f1f, +0xba7248d5,0xba0e4488,0xba68e957,0xba891118,0xba7afc50,0xba50f8bd,0xb90b4be6,0xba56549f,0xba86885b,0xba41bd10,0xba4aa7f6,0x3a91df6e,0xbc10536c,0x3ce2c824,0x3d19643c,0x3cdb3678,0x3ce07359,0x3d2c3ec6,0x3cf4a2a9,0x3d001c2a,0x3cea02c5,0x3cb81957,0x3cdfac91,0x3cd31558,0x3cc943b0, +0x3d2991b1,0x3d0871c7,0x3c6abb5e,0x3d21b4de,0x3c2859fe,0xbc8f7d7a,0xbd56e6ba,0xbc8a6ca8,0xbcb4c86e,0xbcd5e0dc,0xbcd7a555,0xbcc9e5a5,0xbcb6c583,0xbca2ead3,0xbc8ac6a4,0xbc813f1c,0xbc6a9590,0xbc87019b,0xbc8cde1e,0xbca28564,0xbc82e92a,0xbc72510f,0xbc55f362,0xbc63c807,0xbc53716a, +0xbbe4870d,0xbd501e25,0xbd3cd688,0x3ba6e352,0xbd41d06c,0xbd4080b5,0x3b6420e5,0xbb565d0a,0xbb89cfdf,0xb9af10b7,0xbc0f9990,0xbc380b7d,0xbc4377a2,0xbd42a5c9,0xbd42fae8,0x3b9abaad,0xbd3d1601,0xbc0cde94,0xbd0c306c,0xbd27af65,0xbd68c2ad,0xbd795d7c,0xbd8239de,0xbd691d0b,0xbd3a1d7d, +0xbcfdf09e,0xbca7733f,0xbc6f5b32,0xbc934244,0xbcb529dd,0xbcf209dd,0xbcaa3b07,0xbc8d089c,0xbc47d83c,0xbc858fa3,0xbc00739c,0xbca8590a,0xbcd05837,0xbc70ce67,0xbcf0d44b,0xbc680643,0xbc794a46,0xbc8f6032,0xbc8b5646,0xbced8115,0xbd0959b5,0xbcdf9840,0xbc7878f9,0xbc8d7143,0xbc801afd, +0xbc72e4ef,0xbc80753c,0xbc8633bc,0xbc464969,0xbce3670b,0xbd8f6776,0xbd9de122,0xbdae6534,0xbdb301a4,0xbd967878,0xbd5db65f,0xbcf3b9f8,0xbc860f78,0xbc363311,0xbc9854cb,0xbccefed0,0xbd28d860,0xbcacc817,0xbc70a112,0xbb994a9c,0xbbdb33ea,0x3b784a61,0xbc30973c,0xbcbbaf6b,0xbc3b76cb, +0xbc17caed,0xbba37427,0xbbde4b41,0x3bed6e54,0xbbac7bd4,0x3b0b8a9f,0xbc8ab99b,0x3ace9862,0xbc376496,0xbbed8ff6,0xbbbf8304,0xbbfe7932,0x39999406,0xbc59dd14,0x3d3885a9,0xbcc6e6ab,0xbdfc0eb4,0xbe14c340,0xbe2b63b5,0xbe3b6cce,0xbe27462a,0xbe0251e7,0xbd8e141a,0xbcaded8d,0x3a0a559b, +0xbc1ee2dc,0xbce95d1f,0xbd64fde9,0xbcd8cfcc,0xbc62a1e4,0xbacb6a1e,0xbc1c5f60,0x3bde8aa0,0xba832718,0xbc5ae2f4,0x3c91d151,0xba9ef33f,0x3c43c0c1,0x3c88c6e1,0x3d150b38,0x3c8731f8,0x3c3a8fc0,0x3c552e16,0x3c0918a1,0x3c084231,0x3c39b66e,0x3c958ea8,0x3ce9ce53,0x3d2d42bb,0x3cd9919f, +0xbd9401dc,0xbe062a16,0xbe063698,0xbdddf774,0x3c921fa8,0x3c70a2cd,0x3d350884,0x3dcd40aa,0x3d23edeb,0x3cad722d,0x3c9c37de,0x3bfc16e1,0xbbfa0484,0xbcefb638,0xbd865bcd,0xbd664686,0x3c3bf5db,0x3c538016,0x3d075cfe,0x3ba1a1a3,0xbc41b036,0x3c9bb0a4,0xbc3607cb,0x3bf1057a,0x3bec9ec5, +0x3c9f8b6c,0x3bc7d1b8,0x3c28c8ff,0x3ce6359f,0x3d03da68,0x3cf32110,0x3baf6c6d,0xbc952144,0xbc943f38,0xbcc2f688,0xbd0a39d0,0xbb841782,0xbc883293,0x3d020944,0x3ce6b0f5,0x3ce20bf4,0x3ba43ec1,0xbc8f3a7a,0xbcd5371f,0xbd4098f1,0xbd99d8ce,0xbe155f5f,0xbe28c249,0xbe2ad9b8,0xbe1f72ab, +0xbdec4f67,0xbdbcd922,0xbd8fefff,0xbd825b66,0xbcf23677,0xbcb181e2,0xba857608,0x3c6d010b,0x3b89f3a1,0x3c88bfae,0x3c7e8cd3,0x3d08214a,0x3ca5fd80,0x3c817ed5,0x3b3d3141,0x3cf21ef1,0x3cf8269b,0x3ccad736,0x3d1d3835,0x3c9f9f19,0xbab3beca,0x3b9d1a39,0xbd235f62,0xbd592b65,0xbcb5e15d, +0xbdbb22b0,0xbe6664e4,0xbe62f533,0xbe399a40,0xbdc2fa20,0x3c1818dd,0x3d41492f,0x3ce2fc98,0x3bf54363,0xbce620b2,0xbd823f5b,0xbd9d6e73,0xbda44205,0xbd870bdf,0xbd5adc4b,0xbcdfb359,0xbcc414be,0xbcd3b60c,0xbc2ab46e,0xbc5028a4,0xbb7fe29d,0x3c670950,0x3d84a02c,0x3bd585f4,0xbc1edcf1, +0x3a598fcc,0x3b9cf890,0x3c86a0df,0x3d576d45,0x3ae2a8d9,0xbca6c61a,0xbc91fade,0xbd114a8f,0xba816f66,0xbcde9c3e,0xbe1bccdb,0xbe6a7f32,0xbe996620,0xbe68e347,0xbe399b11,0xbdec5e34,0xbe2fc6a7,0xbe265e18,0xbdf4ab46,0xbd6cac06,0xbc919403,0x3bb17d59,0x3c50b45e,0x3bff0bb4,0xbbc009aa, +0x3c3a03df,0x3cad9286,0xba8df909,0xbbbe1c7d,0xbbdaa1bf,0xbbf09f04,0xbba7a5a1,0x3b1b4e24,0x3d1a73e5,0x3c6a8e02,0x3b5d6eb7,0x3caaff41,0x3b09eab7,0x3b8fa06f,0x3cac1e32,0x3c191aff,0xbc054f3d,0x3b5b2d43,0xbc134125,0xbbdacf0e,0xbdf931b8,0xbe44ce2f,0xbe3deb93,0xbe5a43ab,0xbe308201, +0xbe0efc94,0xbdb4dda2,0xbdbb38fe,0xbdcf08c5,0xbe0c05a1,0xbdd4311a,0xbd9b8fee,0xbd7d9388,0xbcd2e6eb,0x367b8f96,0x3c843fab,0xbad279a3,0xbc589194,0xbc7d6cf5,0xbc91ace5,0xbc20bb62,0x3c3238d7,0x3c0e72cc,0x3be52524,0x3bbcfb19,0x3b9d232c,0x3b95b1a1,0xbb2ef643,0xba7a7cda,0xbad75db5, +0xbaecbffc,0xbb9d7fb1,0xbb6f6b62,0x3c0d5bf2,0xbd221c36,0x3cc4650a,0xbd5e35b8,0xbd9b4f41,0xbd8ae5ca,0xbd84749e,0xbc90dd50,0xbbea2bf1,0xbcca2694,0xbc80a61e,0x3b188a8a,0x3cc5c3be,0x3be9f3bf,0xbcb1fe7d,0xbd68d890,0xbd5bf687,0xbd27355a,0xbcc48afe,0xbbcb10ee,0x3b3b7be0,0x3bd8fe48, +0x3aeec06a,0xbbc3d84e,0xbc62ed10,0xbc152682,0x3b718abc,0x3c1bab23,0x3bf771f8,0x3c0585d1,0x3c18dfdc,0x3c6b9afd,0x3c4bce1c,0x3b2ea41b,0x3bbbf7fb,0xbbd7147e,0x3a181300,0xbcf8ce11,0xbd25ce39,0xbd1aa1f0,0xbd02c490,0xbd048fc6,0xbd08a0b9,0xbd0ec0ee,0xbd0e5d14,0xbd046e48,0xbd2a9014, +0xbd64bad4,0xbd88c57e,0xbd3329dd,0xbc812bb3,0x3c39366f,0x3bfd0b9b,0x3a51d58a,0xbc0f5a7e,0xbc852911,0xbc8ecc95,0xbccf6324,0xbc99240d,0xbb0a8cd4,0x3c128dae,0x3c2b7075,0x3c39a998,0x3c0be389,0x3c0e647f,0x3aeb5b90,0xbbd66a24,0xbb02149b,0xbb460a1c,0xbb82aa62,0xbbf2e2ca,0xbc57c0e8, +0xbc4f9bb1,0xbcc5d8bb,0x3c9f36f8,0xbbda3355,0xbbbc28e9,0xbc5a6d59,0xbc84c318,0xbc9ca38e,0xbcae7b6d,0xbcc02131,0xbc93c451,0xbc13624e,0xbbabf6d8,0xbb72b3db,0xbc09beaf,0xbc138ff0,0xbc467cc5,0xbc2e63a8,0xbbe5c3df,0xbba5c9e8,0x3ac954ff,0xbb875d22,0xbc6f5e28,0xbc3255a4,0xbc9cb02b, +0xbc298374,0xbc42d70e,0xbc553bd6,0xbc20a7ca,0xbc6c93bb,0xbc29360e,0xbbedc510,0xbb56fb3c,0x3bb2a9b9,0xb99afd2f,0x3bc909e9,0x3aedf58c,0xba2b36ed,0xbcc24667,0xbb92d229,0xbb7fa3de,0xbbcb77b3,0xbbd21db8,0xbc01cc1c,0xbc179dd3,0xbc40e5d9,0xbc2ed2ba,0xbc3c0500,0xbc2f035d,0xbc2af6b6, +0xbc0f6d88,0xbbfdd216,0xbb9d3bc9,0xbb51daf4,0xbb183304,0xbb185a80,0xbadeef97,0x3b6fe540,0xbcc04644,0xbca589bd,0x3c4408d1,0xbcb72d66,0xbca76677,0x3c827788,0x3c7d8962,0x3c8caf49,0x3c987e2a,0x3c8875d4,0x3c8d333d,0x3c884040,0xbc81ac81,0xbcc24b1d,0x3cb012ad,0xbc6190d5,0xbad5b7bf, +0x3d2364cd,0x3d292da9,0x3d0b46b1,0x3d0673b0,0x3d23abc2,0x3d2f41ef,0x3d51596f,0x3d535b43,0x3d3cb0e2,0x3d39a685,0x3d2f4b85,0x3d1bb350,0x3d1a3c12,0x3d158004,0x3d17070b,0x3d137753,0x3d137916,0x3d10e776,0x3d19149f,0x3d0be29e,0x3d1a82dc,0x3d4214e9,0x3cac133d,0xbd4a8718,0x3d5cf2c8, +0x3cd3c205,0xbd264c55,0xbd2164d7,0xbd20bdcf,0xbd1a9c9f,0xbd10045d,0xbd0916ae,0xbcf7008a,0x3cd7ad34,0x3d5f497f,0xbd2f563b,0x3c8da59c,0xbbd6fd83,0x3cb3586b,0x3cac022c,0x3d11a666,0x3d3bd2c1,0x3da26cf9,0x3db6d098,0x3d99f97a,0x3d92bb19,0x3d76cf7b,0x3d441e05,0x3d44b009,0x3d4585df, +0x3d4915c7,0x3d3e6be2,0x3d392d24,0x3d2bfa95,0x3d3cf70b,0x3d1d3df8,0x3d3727fd,0x3bc7cc2c,0x3ce78ce5,0x3d10efa3,0x3ccbaa20,0x3cc84e82,0x3d274152,0x3d1519a2,0x3d31ec25,0x3d149e26,0x3d2723cd,0x3d103933,0x3cefee17,0x3cfd9693,0x3c8b7264,0x3cbe0504,0x3d0374d3,0x3a7f4764,0xbc2a122c, +0x3b6ebd75,0x3cdeb275,0x3d3c989c,0x3df2a271,0x3e05faa1,0x3dc88541,0x3dc4d2b0,0x3d94932b,0x3d37e43d,0x3d1ee621,0x3d06cd82,0x3d1b5494,0x3d0da49f,0x3d12412c,0x3d087285,0x3d226b20,0x3d171904,0x3cf877c1,0x3d0f5e81,0x3cdb10ab,0x3c8a41d2,0x3ceec63f,0x3ce4ef14,0x3d0d7b27,0x3ca0d491, +0x3cd39500,0x3cb1eaca,0x3c8d3169,0x3c875588,0x3cc3212e,0x3c9d705b,0x3c9cc8f0,0x3c205606,0x3bfe0933,0xbd1ae044,0xbdb32743,0xbd835f21,0xbcefdff9,0x3c8e3a5d,0x3e280d1d,0x3e518b35,0x3e2529e2,0x3e1937bb,0x3de0b397,0x3d7ba65e,0x3d787d61,0x3d8394cb,0x3d89fe71,0x3d732633,0x3d60e257, +0x3d472759,0x3d7c1100,0x3d1b4806,0x3d030176,0x3ccd0873,0x3c3bd535,0x3c31418b,0x3c830f60,0x3c9e465b,0x3ce571bd,0x3c990de6,0x3bf0e000,0x3bd9e2a8,0x3c57e136,0x3c57a6f7,0x3c327416,0x3c426917,0x3c35ca71,0xbc03695c,0xbc002ed7,0xbccddcca,0x3da7cd61,0x3e023c98,0x3dd98a3b,0x3db451e9, +0x3d30879b,0x3c9cf6c9,0x3d05fed8,0xbb3f6492,0xbd02038d,0xbd5ffde8,0xbd9c6bb3,0xbdb0ffd2,0xbdc97ffe,0xbcb41402,0xbc239b77,0xbd7ca8c6,0xbcdad296,0x3b283410,0x3d88088d,0x3d371c0b,0x3cace90b,0x3cbd6016,0x3cabc47e,0x3ca66f47,0x3ccb9f83,0x3c631600,0x3c827e56,0x3cdebb6f,0x3ceb3c3b, +0x3c8e2195,0x38f95c2b,0xba20ac6c,0xbc44c003,0xbc23ad44,0xbce62a4b,0x3d063243,0x3d676cd2,0x3dfa4b03,0x3dfd8a1f,0x3da3cba4,0x3d6af147,0x3d464d6d,0x3d0d2c90,0x3c8b5266,0x3ccbd95c,0x3d61d8dc,0x3d7b6901,0x3d8caa54,0x3dac1c2e,0x3d8952a1,0x3daec296,0x3e05e5bc,0x3dc7eeff,0x3d862140, +0x3d32e97f,0x3c7def07,0x3c9ee9d2,0x3c7bb65c,0x3c9966ac,0x3cb4b60a,0x3d195836,0x3c713caa,0x3c4341cd,0x3c746665,0x3d07a668,0x3d042822,0x3d0cd42e,0x3d134718,0x3d57f0ad,0x3d32b259,0x3d83d203,0xbbe9c7a4,0x3d8428a2,0x3dca2695,0x3d878fd4,0x3dd2261b,0x3e066527,0x3e1b031d,0x3e2333e5, +0x3da55cfa,0x3d89ba17,0x3da6de3f,0x3e03a5c2,0x3e22f4eb,0x3e2613fd,0x3e02ef22,0x3d93764f,0xbb7e9856,0x3b89ec47,0x3c4cc5d5,0x3b8d7b33,0x3c51aaf3,0x3bff5118,0x3caba1d0,0x3caeb543,0x3cbd4d7e,0x3d72470e,0x3c862865,0xb91dd403,0x3b585df2,0x3ba84770,0x3c833ff0,0x3d5149e5,0xbba26c83, +0xbb027909,0xbcfc51a9,0x39caec3a,0xbb083b72,0x3c472113,0x3de3f204,0x3e392b65,0x3e9de70a,0x3e273a9b,0x3d98a361,0x3cb6225b,0x3d001dfe,0x3d336c68,0x3d8c8a16,0x3d9325d1,0x3d9a22d5,0x3d88d093,0x3da697f5,0x3db2e4de,0x3d9a6c13,0x3dbda4c2,0x3d9b2b1b,0x3d0d336a,0x3bec7d33,0x3c57d780, +0x3c4c5762,0x3c8dc9ca,0x3cbe6961,0x3d1f0ffe,0x3c1aff7c,0x3b320293,0x3cbf132a,0x3c2ce9be,0x3c44b87e,0x3d10c028,0x3c20e77f,0x3ce2f4b5,0xb94df927,0x3cc70847,0xbd0d96d4,0x3db48e95,0x3e4627de,0x3e2db16f,0x3e23dc07,0x3dfda794,0x3dfc1481,0x3e0402f4,0x3e0409af,0x3dfec8fa,0x3e0ad162, +0x3da38ee9,0x3d5808cf,0x3d45d1a7,0x3ce87392,0x3c70db0e,0x3c1db0a8,0x3ca2c2df,0x3cc3624e,0x3cd2d433,0x3c597d4e,0x3ccc597b,0x3bee43dc,0x3c4e3086,0x3c8d4b87,0x3ca4246e,0x3ca031b7,0x3c882d03,0x3c0293a2,0x3c51350e,0x3c802cdd,0x3cb36ee8,0x3c533d99,0x3bf2d41e,0xbbb927ad,0x3ceaef48, +0xbd271228,0x3d542c13,0x3db4813f,0x3d715bdc,0x3d22e872,0x3d217ffb,0x3d3273b4,0x3d87df81,0x3c4e9d43,0xbc5ee626,0xbca02c7a,0x3c6fb0be,0x3d08cd72,0x3d14fd23,0x3ce26002,0x3cd7f0cc,0x3cec6ac6,0x3cf38199,0x3d037de8,0x3c7c9db6,0x3b841576,0x3c66d45f,0x3c8cafbc,0x3ce2db27,0x3ca22806, +0x3c14c70c,0x3c37aefc,0x3c3843f2,0x3c52508d,0x3c685e35,0x3c60f562,0x3c8ef78b,0x3c22b8a5,0x3caecafc,0x3cae4677,0x3d2000d0,0x3cadb959,0x3cabc7f0,0x3ccf5c5d,0x3caa4633,0x3cc5660f,0x3d15d504,0x3d4502e1,0x3d87f744,0x3d78fb25,0x3d70835a,0x3d389045,0x3cdeee6e,0x3c0f9d1a,0xbbb727e5, +0xbb64af8b,0xbb9831da,0xbc039e90,0xbb6d2aa0,0x3bc55bea,0x3c5615e6,0x3ba2df79,0x3b5d7443,0x3b3dd7ec,0x3bf14235,0x3bf0c3c7,0x3c89de5a,0x3c0c2222,0x3c8cc364,0x3c1969ba,0x3c8a5423,0x3c6e4929,0x3cc2a6c8,0x3cc6337d,0x3cb10331,0x3c89dc77,0x3cb3a0c2,0xbc7cf28c,0x3cec8f63,0x3cfffaa0, +0x3d22c321,0x3d3444d2,0x3d484607,0x3d5648ad,0x3d680665,0x3d350a1e,0x3d0af7c7,0x3ce345bc,0x3cbb5313,0x3ca1110e,0x3c5a4f88,0x3c7dcb0a,0x3c85ea25,0x3c8ecb06,0x3ca217cf,0x3c886829,0x3cb8b784,0x3b4b4427,0x3cc547b1,0x3cf2d234,0x3caa3cdc,0x3cb8f9a9,0x3d08d32e,0x3cf8cfa5,0x3d08237a, +0x3cc2f226,0x3cdc2b82,0x3caeda6e,0x3c5645cf,0x3c69061e,0x3be7af45,0x3c571031,0x3cb4ff1d,0x3d1c727e,0x3d26b6e5,0x3d12aebc,0x3d23cdac,0x3d2ac727,0x3d33b6c1,0x3d3b5058,0x3d4d572e,0x3d3bac78,0x3d32056a,0x3d21ff18,0x3d109694,0x3cfc9150,0x3cd1082f,0x3ce04185,0x3ce6ecb8,0x3cebeb22, +0x3cf35209,0x3cec8d92,0x3d087604,0x3d11e4b3,0x3c8c7167,0xbce9696f,0x3d33da64,0x3cab3c9f,0xbcd94e82,0xbcd25e00,0xbcccfea4,0xbcbaca82,0xbcb9377e,0xbcb03438,0xbcadc2d1,0x3c7a5869,0x3d2c5a0e,0xbce48e6a,0x3c5caac8,0x3d3ba765,0xbd5ad131,0xbcd8d1d5,0xbd8065ca,0xbd3dd23c,0xbd5bb311, +0xbd603149,0xbd846483,0xbd87850d,0xbd7b564e,0xbd7b7e4d,0xbd742a60,0xbd690fa2,0xbd625751,0xbd5d1182,0xbd5919de,0xbd58809c,0xbd57635d,0xbd57eb09,0xbd55d360,0xbd3c9152,0xbd8019bc,0xbcca3c34,0x3c918c2a,0x3db01566,0xbd163466,0x3c7838f8,0x3da878c5,0x3da60063,0x3da2b093,0x3d938c50, +0x3d9b7a20,0x3d9b72f4,0x3d96b4ce,0x3c4bdbac,0xbd3627f4,0x3da0249a,0x3c905ed3,0x3c9c1cc0,0xbd753cfd,0xbd4328d8,0xbd4f657a,0xbd5c4c70,0xbda684d8,0xbdbfd13f,0xbdac14d6,0xbdb530db,0xbda7dd5d,0xbd969c4c,0xbd886c73,0xbd80614a,0xbd7cf969,0xbd80719f,0xbd7f35e1,0xbd80e907,0xbd6ad190, +0xbd5d9480,0xbd67cbaf,0x3cf27deb,0xbcd5328b,0xbcd6aa1b,0xbc17f386,0xbabdc1f7,0xbcbfe433,0xbcda08d7,0xbd02f376,0xbc86da4b,0xbd0c3a37,0xbd13cc51,0xbc8754e7,0xbcd3f357,0xbbe907c0,0xbc802815,0xbd4e0292,0xbd344672,0xbd68dbfa,0xbd612cf6,0xbd880bbc,0xbd9da653,0xbe01012a,0xbe135d0e, +0xbdf63a25,0xbe04c351,0xbdf4ccc3,0xbdcff96f,0xbdb7c5b2,0xbda2234f,0xbd99b2d7,0xbd96091b,0xbd923eaa,0xbd92f557,0xbd73fa35,0xbd765e49,0xbd167ef9,0xbc7990cf,0xbc5caa90,0xbc707495,0xbbd70cd1,0x3c401bc9,0xbc05b789,0x3c63975f,0xbc83b0d3,0x3bb75419,0xbbfe1c82,0x3c03dd61,0xba690cf1, +0x38b106f6,0xbc140758,0xbc453cca,0xbd28103b,0xbd93bf3d,0xbd879ce6,0xbd2a9249,0xbd368156,0xbd3c0dde,0xbdfc0fb6,0xbe305cff,0xbe1d7f68,0xbe337cd5,0xbe20c141,0xbe029e9c,0xbdd5397f,0xbdc13b2e,0xbdbc6001,0xbdc03637,0xbdb435c5,0xbdaed9b1,0xbd8aae3f,0xbd6787a1,0xbd339034,0x3aba039d, +0xbc9a7e66,0xbb0be4a9,0x3a6f0532,0x3c52029d,0x3c8a78e3,0x3c42c319,0x3c50ccae,0x3b6b79c5,0x3c3dcc3c,0x3b88a2d4,0x3b192fb4,0xbb9d25be,0xbca2b385,0xbcdf7b0d,0xbd8f8763,0xbbd29886,0xbd50a3c3,0xbd74c031,0xbda36e63,0xbe1b9d78,0xbe4297e9,0xbe425bb5,0xbdf967f6,0xbe088548,0xbe133f90, +0xbe288ff2,0xbe095123,0xbdc10e16,0xbd3468d5,0xbd4acaec,0xbd6a34e7,0xbd995203,0xbd573ffb,0xbd822325,0xbd604d29,0xbb368a0c,0xbcc249dd,0xbb794814,0xbac38845,0x3bc10a69,0x3cb65f3d,0x3c476360,0x3c3813a6,0x3c69c193,0x3c1779c7,0x3c080798,0x3c06fb12,0xbb8fd0c7,0xbc25302b,0xbc7adee3, +0xbcec5b2f,0x3d841718,0x3d9a05e4,0x3dadad9c,0x3d5ee834,0x3c8d33e3,0xbd6edcdb,0xbd86539e,0x3c54c3ec,0xbc39a570,0x3bcd1f2a,0x3cce17a0,0x3c97c8aa,0xbaf8d8ed,0xbcd4861b,0xbd16d79d,0xbd63a9d4,0xbdc506a1,0xbdb1618d,0xbdbd671b,0xbd0d872a,0x3aac09c6,0xbc382883,0xbbfbd9af,0xbbbd85fa, +0x3a35fbb5,0x3cc670c9,0x3c0f3c03,0x3bb7d9f3,0x3c13a0b9,0x3c7d63eb,0x3c8ee852,0x3cbd7020,0x3ccdd38c,0x3c9fe227,0x3d2ab206,0x3d13c6c5,0x3d690d5f,0xbb12fb74,0xbc0f961a,0xb9ec1a30,0xbda9da33,0xbe019404,0xbe356a7c,0xbe113c8b,0xbdd7d2f0,0xbdb8db19,0xbdfd3060,0xbe1e463a,0xbe2a4719, +0xbe1d987c,0xbdd653ec,0xbd778ee6,0xbcf4ec56,0xbc3a5cb4,0xbc84f25b,0xbcb1f2c8,0xbc2ea79b,0xbb9594da,0x3c1f43a6,0xbacbf2ce,0x3bfb41ea,0x3d365d4d,0x3c6087d3,0xbae94c6e,0x3bb860dd,0x39244b29,0x3c53cfa2,0x3d48345c,0x3cef427e,0x3cc22fc1,0x3cc923ed,0x3cafd9f2,0x3cdb7779,0x3cbbdf1c, +0xbcbf73de,0xbd82e721,0xbe37556b,0xbe149e3b,0xbdb84389,0xbbb319a1,0x3c39d495,0x3cf1af1b,0x3c9faf87,0x3be4363d,0xbbc99deb,0xbc1e6c16,0xbd215b06,0xbd4c8d89,0xbd32f0db,0xbd300983,0xbd01c6d0,0x3b283653,0x3d07b732,0x3c92868d,0x3cbc3476,0x3ce3b03d,0x3caf5b72,0x3cda317a,0x3ae4c7ca, +0xbb6a5d0e,0x3c4d47b4,0x3b2937cb,0x3bd9e026,0x3c1c07bc,0x3c68c6f4,0x3be0b3bb,0x3c883def,0x3b3d94f7,0x3d7e64a4,0xbcad103b,0xbe0f05b2,0xbe039e6e,0xbdcff6c3,0xbdfa1195,0xbdfec9cf,0xbdbc11b6,0xbda99926,0xbd87f163,0xbd7a51a7,0xbd062dd3,0xbd04564c,0xbd382f33,0xbc5c6d7c,0xbb44ec2a, +0xbc73af77,0x3c863163,0x3b872f31,0xbc1b2891,0x3c078f6c,0xbc551045,0x39193fe1,0x3bdb11eb,0x3c080ea8,0x3c0a7f84,0x3c74ba97,0x3be06bed,0x3b90ad3c,0x3b4a78b3,0x3c58ac06,0x3cc26623,0x3ca75794,0x3c8e8eaa,0x3cca8849,0x3add1bb2,0x3da13451,0xbb279617,0xbd1128fb,0xbcd13fc5,0xbd78bc5e, +0xbd8b29c6,0xbd91ee4d,0xbd8425bd,0xbd04a5ca,0xbc23f0c7,0x3b0bec73,0xbba41210,0xbc18e14e,0xbc48f951,0xbd03a535,0xbd217deb,0xbce97927,0xbcacd6e4,0xbc8b568c,0x3c276568,0x3c909b21,0x3b3d143b,0x3c4e3603,0x3b8cf96a,0x3b9b99ff,0x3b267647,0xba28b6b4,0x3b5b4ace,0xbac2193b,0xbba626cb, +0xbb998a93,0x3bffbc09,0x3b9e0723,0x3aba104f,0x3c3ada9a,0x3bc4d068,0x3b434e2d,0xbbbce871,0xbce6c128,0xbd16cdda,0xbd5b784c,0xbd3695f7,0xbd2b0455,0xbd214d71,0xbd11a170,0xbd01d2db,0xbcba2798,0xbca384d1,0xbc905110,0xbc55e510,0xbc60d3df,0xbc3c2fc7,0xbc154405,0xbc1a52bc,0xbc84d874, +0xbc6f9f30,0xbb58151c,0x3a1140d5,0xba9a257e,0xbb121bcd,0x3c202d55,0x3b346895,0x3c85ae48,0xbbc69d73,0x3c769206,0x3be87df3,0x3cc86d46,0x3c9dfc4f,0x3caff8db,0x3cc7a9b2,0x3d01181f,0x3c301709,0x3d0b7d45,0xbcd22a67,0xbccc74cc,0xbcc07da7,0xbcc6d823,0xbcddd80f,0xbcf5a7ac,0xbd03e62d, +0xbce7456b,0xbccbb972,0xbcb9b629,0xbc953653,0xbc587146,0xbc0970b1,0xbbf3c25f,0xbbe6ae4e,0xbc00216e,0xbc09ee08,0xbbee37c8,0xbc2eba97,0x3cabf7a7,0xbc332794,0xbc5c0307,0xbbb0d636,0xbbacbf4f,0xbcab2cc6,0xbcc8561c,0xbcc01f16,0xbc2641d3,0xbcd22325,0xbcef84d7,0xbc924a38,0xbca5c516, +0xbbc76b9d,0xbc03618f,0xbcbe8538,0xb82d254c,0xbd05cfa7,0xbca44519,0xbcbe2ea3,0xbcbb7fac,0xbcbe69f2,0xbcbf3fda,0xbcca7a3e,0xbcb3f530,0xbca371b3,0xbc9105ed,0xbc832189,0xbc702373,0xbc490ee6,0xbc6ff366,0xbc820f6a,0xbc86a45d,0xbc8f6aa0,0xbc84edb0,0xbcd0ad6c,0xba3f25d0,0x3ce00023, +0x3d9068ad,0xbc4858d3,0x3ccdfb31,0x3d96679d,0x3d954088,0x3d8e8b60,0x3d7f8349,0x3d859567,0x3d82805b,0x3d756ad7,0x3ccecfa3,0xbc77aa48,0x3d87fab1,0x3d00624a,0xbcbb7d50,0x3ceb2565,0xbc939488,0x3d35a398,0x3ca5c333,0x3cc08430,0x3ca32ac2,0x3cd7cf1a,0x3ce9af79,0x3cdc5e78,0x3cf90422, +0x3cf7f220,0x3ce0705e,0x3ceb903a,0x3cee04ae,0x3cf35c8f,0x3cf36c5a,0x3cf7e4c1,0x3d0113ca,0x3cff282d,0x3cd4e31b,0x3d3962b1,0xbc850143,0xbd5b9cc8,0xbdb60ab5,0x3ab53f23,0xbd45f576,0xbdaa24ee,0xbdadd591,0xbdad3cae,0xbd9d19f5,0xbdae4704,0xbdaff245,0xbda8ab2d,0xbd4649f5,0x3bfb48c7, +0xbdb0d19f,0xbd76cc76,0xbd90d894,0x3cfc3da1,0x3ccd6ff1,0x3c98a4c2,0x3c2ef15a,0x3c8e662d,0x3c9f1625,0x3c914ab9,0x3d0c2f74,0x3d1b4795,0x3cf0229c,0x3cf7ac5f,0x3cff5479,0x3d140633,0x3d1ec7f4,0x3d23790e,0x3d2dd323,0x3d1812bb,0x3d20e8f7,0x3d01c1c8,0xbd654bdb,0x3bb925e0,0xbab27ec0, +0xb8ced234,0xbbc6b018,0x3c0f8684,0x3c670d4c,0x3c44ce35,0xbbbb402b,0x3c5bfd99,0x3cb059e8,0x3bb17be4,0x3c3addad,0xbc334130,0xbc607a78,0x3c8c3092,0xbcd37b7a,0x3c928623,0x3cee3fea,0x3c06b8fd,0xb9f1c618,0x3c41bebb,0x3cae9f68,0x3c69b0c9,0x3d2beb9f,0x3d40bdb4,0x3d05e009,0x3d210dab, +0x3d20897c,0x3d363058,0x3d327c6e,0x3d399c32,0x3d61be62,0x3d2eaebc,0x3d582c26,0x3c98ef37,0xbc5f09e3,0xba90e783,0x3b1a1494,0x3c7e4f58,0xba1c5074,0x3c7bc8d3,0xbb8831ac,0x3cdbe9be,0xbbdd242a,0x3c63fbd4,0xbc140792,0x3bd4c297,0xba2a9385,0xbb9fc29d,0xbc93bb0e,0xbbbc73e3,0xbd0eecde, +0x3cf931b7,0x3d3c6a39,0x3caea91f,0xbc3f39dc,0xbc7cd436,0xbc84bd93,0xbc845e6b,0x3d2cb8f2,0x3d81eaa7,0x3d249393,0x3d26a66a,0x3d32659f,0x3d766ec1,0x3d81c33d,0x3d867ac5,0x3d978a3e,0x3d681549,0x3d6b2795,0x3cea8a28,0xbc9d8dcd,0x3c9cfd64,0xbc168de9,0x3cdaac1b,0x3cf08d1e,0x3cea29e3, +0x3cab45d0,0x3c2c757c,0x3cc969a9,0x3c3d285d,0x3c7a0bf3,0x3c8e80fa,0x3c9cbddc,0x3b8d22ba,0x3baf765c,0x3bf90a8c,0xbcb87629,0x3d45c32d,0x3d9c2a18,0x3ce2bd03,0xbbeca2fa,0x3beef218,0x3cdf08c7,0x3d1a2b8f,0x3c1460bb,0xbae77c69,0xbc024303,0x3aa0a823,0xbba02ef8,0xbc9b1fa3,0xbc34003a, +0x3bdcc935,0x3d036d2b,0x3d2135da,0x3d7373f1,0x3c90ca5c,0xbcec08e9,0x3c804c21,0x3bbfd3e1,0x3c6c8330,0x3c3b70f5,0x3c900277,0x3cabf93b,0x3c98329f,0x3c5135a0,0x3c92ada6,0x3c9d90b8,0x3be06c41,0xbac2ca5f,0xbca2d702,0xbc9948be,0xbca34ade,0x3dafe22d,0x3da9b1cd,0x3d59e04e,0x3d5f6a05, +0x3dd09b52,0xbcd09129,0xbdcf8259,0xbda95d6a,0xbd844685,0xbd5bf84f,0xbda632ad,0xbd7d5337,0xbcf77a3a,0x3bfd2dc0,0x3d57a3bc,0x3d8fd2f1,0x3d8f01e2,0x3d451df5,0x3d252a0b,0xbc8e348f,0xbd28f6cd,0xbcaf9b36,0xbc803060,0x3c545f10,0x3c8e69e4,0x3cadeefd,0x3c637192,0x3be74a3f,0x3ba9fe13, +0x3c7b15ba,0x3c8b254d,0x3d2ce5d7,0x3c7ac10d,0x3d18c17a,0x3d7f7e7a,0x3db3c82a,0xbd21180f,0xbcf8677a,0xbc7192dd,0x3c2d856c,0x3d9507b1,0x3dc254b3,0x3e229680,0x3e3e57a5,0x3e2ace71,0x3dddc99a,0x3d3aa965,0x3ce0034c,0x3c32b53b,0x3bc32530,0xbc525b46,0xbcffe494,0xbd1db2c9,0xbd2d85a4, +0xbc42e02d,0x3c48bed4,0x3c5df874,0x3caaa592,0xbbab932a,0x3c9b8c26,0x3cccde4d,0x3cea1056,0x3c89ba3d,0x3bd5a6df,0x3c655344,0x3afa3951,0x3c68dead,0x3d3b54ea,0x3d1218a4,0x3cdadc88,0xbc25cedb,0xbce65269,0xbc857748,0xbd0f8fb3,0xbc306435,0x3b71214f,0x3d920097,0x3d649885,0x3d20e430, +0x3d0c5961,0x3cbfa823,0x3cf6adb9,0x3d30f63b,0x3d177b7d,0x3c955e17,0xbb0faae6,0x3c83e4f7,0x3ce6a699,0x3ce1701a,0x3cb543bd,0x3c884979,0x3add2dce,0xbc317456,0x3b7997e4,0x3c52ea02,0x3cad3208,0x3c94b2c2,0x3c86fe66,0x3c468a0f,0x3b806483,0x3c701f42,0x3c00ccca,0x3c49eac5,0x3ca33b3a, +0x3c6a0e21,0x3cb0b581,0x3c19da25,0x3c0256e8,0xbd667af3,0xbca72930,0x3d34301d,0x3d08fc86,0x3d39619f,0x3d3af84e,0x3d5583dd,0x3d69be8a,0x3ce61502,0x3cba6c6d,0x3d08b942,0x3cf52ed0,0x3d0dd0b4,0x3ce3e3c2,0x3c0c535e,0xbb47ce68,0xbbe78d6c,0xbc332f66,0xbb81f9c2,0xbc3fbc53,0xbc49ad06, +0xbb11fc86,0xbb80683e,0x3a21edab,0x3bc0dee1,0x3c831284,0x3c2a71c4,0x3c453b6b,0x3b3828a4,0x3c1dbb1b,0x3c0b6a67,0x3c26ab98,0x3accc51c,0xbb9a9716,0xbc82f93e,0xbca56f37,0xbd4aa44b,0xbccdef57,0x3c2d880f,0x3c0eaece,0x3ce947bb,0x3cff2479,0x3d42a9e6,0x3da48b22,0x3d767284,0x3d3b9efc, +0x3cb1e232,0x3cbe1996,0x3cba1e65,0x3cdd0134,0x3d041596,0x3d05cc0b,0x3d015027,0x3ced9388,0x3c94c6ce,0xbc2c5fbf,0xbbcfe79c,0x3a156e7b,0xbc1cc8c4,0x3b0b4637,0x3c49bf72,0x3c9262c9,0x3c4aa4c1,0x3bffc0f1,0x3c8ff68a,0x3c1857ce,0x3bedaf8d,0x3bf6c627,0x3b7fa6ee,0x3b2d7fac,0xbbf67a06, +0xbbdaf6c6,0x3bf1709e,0x3ce37bfb,0x3d1ae95e,0x3cd22081,0x3cc4254e,0x3cee41af,0x3d088514,0x3d1cae40,0x3cc256cd,0x3c8fdb5b,0x3c29ab48,0x3c34c0ba,0x3c1f9333,0x3bf2cfab,0x3bed1e82,0x3bd016b5,0x3c1edd9b,0x3c531cf8,0x3ceb86f7,0x3cafeaaf,0x3a91fee8,0x3bde5211,0x3c2675dd,0x3c090210, +0xbb60f84a,0x392df002,0xbbf8bcee,0x3c61e55a,0xbbf4d820,0x3c61045d,0x3b948baf,0x3c873fef,0x3c07ee33,0x3b5d5bce,0xbbe9db18,0x3be713dc,0xbd327a72,0x3b9d8e03,0x3c773493,0x3cb11218,0x3cfe78ad,0x3d21055d,0x3d3e9c21,0x3d639513,0x3d48c940,0x3d2c1e80,0x3d08348a,0x3cb42d5c,0x3c32ee13, +0xba0ef39f,0x3b52244c,0x3bb71fd6,0x3bf5988e,0x3be2624c,0x3bfa6756,0x3c30f3fa,0xbca913e8,0x3b8dd05f,0xb9c138f5,0xbb7a8180,0xbbf70026,0x3b74de32,0x3bf950d1,0x3887340f,0xbc6866f0,0xba9c77df,0x39da4950,0xbc3f35d5,0xbc030394,0xbc89afa6,0xbc7ae5bc,0x3b008d89,0xbc322f50,0x3cf8aa1f, +0x3cb8694e,0x3cd87b5a,0x3cea0d05,0x3cf5a35f,0x3d0282b1,0x3d12e651,0x3d00ec21,0x3cf232d3,0x3ce5ac93,0x3cdd4ef8,0x3cd6a37c,0x3cbd44c1,0x3cc67d0a,0x3cc27355,0x3cc48824,0x3ccc2087,0x3cc0b53d,0x3d061bbd,0xbba7c6f9,0xbcef56df,0xbd3e8364,0x3b44360b,0xbcf7d36b,0xbd553a82,0xbd5cae0e, +0xbd5075b4,0xbd3395ff,0xbd49f9fd,0xbd45dd31,0xbd3c7b20,0xbd04d89c,0x3a766249,0xbd37343a,0xbd134e5f,0x3ce947b2,0xbcb39f7d,0x3cff1b60,0xbd050546,0xbc736632,0xbc7f9cfb,0xbc7d0e0b,0xbca59cbe,0xbcc6a117,0xbcfb59f7,0xbccf1ade,0xbcc9c1b8,0xbce52d54,0xbcc9f877,0xbcc1b404,0xbcb41f91, +0xbcc1ecd3,0xbcc21590,0xbcc08a22,0xbcbd4953,0xbca33e5e,0xbd0f6a81,0x3cf34862,0x3d57a17c,0x3d4b3d3b,0x3c9c9f17,0x3d572685,0x3d4a3440,0x3d5a815b,0x3d5abebf,0x3d3d9843,0x3d63b45d,0x3d685b12,0x3d64c6fd,0x3d52999e,0x3c672f7f,0x3d41747e,0x3d672b95,0x3d4b453d,0xbbad0bc8,0xbbfa5ee7, +0xbb3b2977,0xbc22ece1,0xbca69204,0xbcd48b0d,0xbd2697a5,0xbcfc5937,0xbd06bdcc,0xbd2f1992,0xbd1286c7,0xbd093338,0xbced6a22,0xbd0bc290,0xbd09a29e,0xbd03777a,0xbcd6576d,0xbcf92865,0xbc6d3a13,0x3d35adf2,0xbaa0d1cd,0x3c5f0384,0x3c2c9fb7,0x3c912d43,0x3be81c2c,0x3aed8197,0x3be834b3, +0x3cb64e44,0x3a8ab087,0xbc0bb5d5,0x3c20a3b2,0x3bfdba12,0x3cc0566f,0x3cd3e856,0xbb510de6,0x3d07c6b1,0x3bef6b22,0x3c1c522d,0x3ccec3d5,0x3c86f9f2,0xbc847881,0xbd042b97,0xbd885194,0xbd183bfa,0xbd0e24a8,0xbd5f90de,0xbd1fa5cc,0xbd0dbd0d,0xbccdc41c,0xbd0eb34d,0xbd0acc65,0xbd0da06f, +0xbce54b24,0xbd211a7f,0xbb113da1,0x3cb1882d,0x3c12fac5,0x3c3e2fd1,0x3c37f7eb,0x3cd96ac6,0x3ba93345,0x3cc0d80a,0xbbc02d0f,0x3cee7670,0xbb6c29e7,0x3ca8b215,0x3c8ea3a2,0x3ca242d2,0x3ca4e4fa,0x3d008f5b,0x3ca5080b,0x3d54107d,0x3d242581,0x3d5fc6cb,0x3d8af95c,0x3d0fced9,0xbbc18d82, +0xbcc46f56,0xbd922b4f,0xbd1e87d1,0xbd3b18cd,0xbda02a0c,0xbd6b5143,0xbd43e619,0xbd0c44cd,0xbd581af9,0xbd5b4da0,0xbd402993,0xbd15f350,0xbd29f0f8,0xbbbc4375,0x3c9caba1,0xbc7fdd3c,0x3c7cc598,0x3bf65486,0x3c386657,0x3c24a8ab,0x3c480a49,0x3c3d14a6,0x3b855ab7,0x3bf5e8b7,0x3b2b15a0, +0x3c92135e,0x3cca6934,0x3d110d30,0x3d1a8f45,0x3d00618d,0x3d691f2d,0xbc979e95,0xbdc4c006,0xbd953b50,0xbd513421,0xbd86aeef,0xbd74d16d,0xbd9e9c91,0xbd4b1f55,0xbcfe6ebc,0xbd1af573,0xbccce173,0xbc64bc8e,0x3c8ab838,0x3cfe11ef,0x3cfc4c79,0xbb5b7ad4,0xbbab916d,0xbce19c8f,0x3b3bcffb, +0x3cc6c6bc,0xbc351bfd,0x3c4ee549,0x3c776a1d,0x3c9a930e,0x3c6ed605,0x3c99506d,0x3c98ce97,0x3c3cb787,0x3cef89f9,0x3cd42099,0x3bcbecff,0x3bf4c706,0x3cbc6318,0x3c9a712e,0x3d190ff5,0x3d514ed4,0x3c362144,0xba0853bc,0x3d045668,0x3d7b2dfe,0x3c66ed17,0xbbd52247,0xbd11097c,0xbc351d20, +0xbc882cbe,0xbd15ca6e,0xbc83be96,0xbbe4df18,0xbb868859,0xbd144f35,0xbd54353d,0xbd80e153,0xbc9f2508,0xbcaf19bb,0xbbc985c0,0x3c1c7950,0x3a925dc9,0x3b84f8ee,0x3b7458d6,0x3c0225cf,0x3c8101b8,0x3c3cd7c3,0x3bbbf2d3,0x3b626835,0x3c0a00e3,0x3c9f71d0,0x3d29f47e,0x3cea8f60,0x3c9e3a9a, +0x3d302572,0x3cc81a42,0xbc8f3a1d,0x3b8ff1c3,0x3c4515db,0x3cd5f6af,0x3d8e60a0,0x3d3d77b3,0x3d5abdfb,0x3cbcb3fd,0xbbe24d53,0xbc79a10c,0xbc275e11,0xbcc1fdb0,0xbd30c586,0xbd77b5ab,0xbd9625ba,0xbd6e4d3a,0xbcfc843f,0xbd0016f9,0xbd41ea9a,0xbca0beb0,0xbbabc8f5,0xbc198545,0x3b20cc60, +0x3ce8493e,0x3cda94e4,0x3c0aa973,0x3bc9ad2e,0xbb764d50,0x3be214c1,0xbbcb8ccf,0x3bf6f189,0x3d2c57a5,0x3d28bf3c,0x3cc5376b,0xba799e49,0xbc059528,0x3c78a62c,0x3d294f39,0x3d5a1280,0x3d802d0a,0x3d5c33c9,0x3ce055ba,0x3d0a1d0c,0x3d371533,0x3dfb149a,0x3e227a49,0x3e19e0cf,0x3df50e04, +0x3dc38760,0x3dab9704,0x3d3066a4,0x3c93a07d,0xb9dfc6d0,0xbc20515d,0xbcab944d,0xbc29377d,0x3b98065d,0xbb0d3c96,0xbbf96cea,0x3ca6f63e,0x3ca698e1,0x3bd23f3a,0x3c4f7c48,0x3c82936f,0x3ca6cc65,0x3c924de7,0x3c77076c,0x3ad2427b,0x3bc4af0d,0x3c43a236,0x3c588c81,0x3c456ecb,0x3d407e97, +0x3d8c08df,0x3d8065bc,0x3d7644fb,0x3cc72e53,0xbbda1be4,0xbbe098fc,0x3cb6add4,0x3d2f8bcd,0x3d745156,0x3d9a0c47,0x3da51426,0x3d9f84dc,0x3da0965d,0x3d4435c8,0x3d09bed9,0x3c9e8c55,0x3bea9a51,0xba427d8a,0xbbb4fb4d,0x3b35a8d8,0xbb89bb49,0xbb2893ce,0xbaa95e3f,0x3b0ada33,0x3c1eeff2, +0x3c01df55,0x3b2b7849,0x3c61af46,0x3bbb80a6,0x3c91ba7d,0x3d056ce4,0x3cfa7aca,0x3cd1abbd,0x3c9904c5,0x3d1f8343,0x3cf505c3,0x3d2a6c7f,0x3c2888af,0x3baecf1a,0xbb08144b,0xbc90f271,0xbcbaa32b,0xbc7d1e23,0x3c4fc0a5,0x3ca1442c,0x3be27b33,0x3c0726d0,0x3c7a5240,0x3ce231ac,0x3d2445d0, +0x3d08beef,0x3c2951c7,0xba0bdf0c,0xbb5e289b,0x3bb3b8ee,0x3c0380ac,0x3c62d252,0x3cc5243e,0x3c654210,0x3c166471,0x3c9ee6c0,0x3c54595a,0x3c255969,0xbb63c7cd,0x3b199d20,0x3b8f89af,0x3b685fe3,0x3b53e3da,0x3c012675,0x3c12428d,0x3cb9a84d,0x3cf25112,0x3bdf5690,0xbbe00791,0x3b6e18ee, +0x3aefee13,0x3c2939a1,0x3c790027,0x3c802433,0x3c9bb276,0x3cad4da1,0x3cca0e98,0x3c8fddbf,0x3c249e3e,0x3aeee041,0xbb020140,0xbb52cda2,0xbbb23852,0x3bb68d48,0x3bbddebb,0x3caf8b45,0x3ce81f6b,0x3c8f1549,0x3c2ffd1b,0x3bffc05e,0x3bf82aee,0x3b1cc5ba,0x3c274df3,0x3c2d57e8,0x3cdd8cf9, +0x3c5baf02,0x3c90f9f4,0x3c3e17b0,0x3c795ad1,0x3cb0a85a,0x3ce0bceb,0x3ca5c9b4,0x3cc6b343,0x3c327946,0x3bf62a62,0x3c37630a,0x3c0fc57b,0x3c111a8a,0x3c009245,0x3c1e70bf,0x3c40ccf5,0x3c603463,0x3c84e523,0x3c9030b8,0x3ca6b1d2,0x3cb8fd4c,0x3cb01e77,0x3ca5ff20,0x3c8cbf5a,0x3c817184, +0x3c4be6f2,0x3c3950fc,0x3c8e7f71,0x3c47ff40,0x3caa5cb7,0x3ca7e05b,0x3cc436c7,0x3cbc8eaf,0x3c7a1d2c,0x3c92feb5,0x3ca3b337,0x3c0ac874,0x3abd7a94,0x3af08833,0x3b659900,0x3bf2207c,0x3c37cfc1,0x3b5eef2f,0x3d109a5f,0xba61e811,0x3b8cb509,0x3b7b239e,0x3b877a15,0x3b935039,0x3b95ee0c, +0x3b7d716d,0x3b925d33,0x3b9f4cd0,0x3ba59694,0x3bce5dcc,0x3be80aca,0x3c0739c7,0x3bfa49e4,0x3bfd2df7,0x3c02f68a,0x3bf95d39,0x3bf77056,0x3b23e547,0x3d127946,0x3d3eff65,0x3d030894,0x3cfd3863,0x3d44bebf,0x3d1546de,0x3d1658ee,0x3d0cd5b0,0x3cf3db34,0x3d0aba1f,0x3d083eb2,0x3d00e722, +0x3d33ddff,0x3cea5126,0x3ce2219b,0x3d3a05d3,0x3b88865a,0xbcb9756a,0xbd6a4d97,0xbc8d900b,0xbcc30a0f,0xbce91414,0xbd06af4a,0xbd02caea,0xbcf5f067,0xbce89475,0xbcbef86a,0xbcaf7d00,0xbcaada5b,0xbcb08a6d,0xbcacad78,0xbca410e2,0xbc9acb02,0xbc97a7bc,0xbc963991,0xbc99f21e,0xbc975595, +0xbc3635d3,0xbd65282c,0xbd61a848,0xbc45b345,0xbd4d85d0,0xbd617f16,0xbc8075a9,0xbc9f4d9f,0xbca25f83,0xbc85336f,0xbccb1622,0xbcd48b16,0xbcc5947d,0xbd5e4780,0xbd4a7528,0xbc3c0df5,0xbd651fee,0xbcf29ad4,0xbd113c24,0xbd08f1b0,0xbd425ca5,0xbd65223d,0xbd6c04b1,0xbd647e26,0xbd545daf, +0xbd1f037e,0xbcf3edb8,0xbcd696fc,0xbcce41ae,0xbcc52500,0xbcb94085,0xbca521c5,0xbca43faa,0xbc9f8b51,0xbcbb9715,0xbc6cc472,0xbccf12a8,0xbd1e72d4,0xbcb58e85,0xbd095bd4,0xbca864aa,0xbcb2069b,0xbcd94711,0xbca89c21,0xbcfa3945,0xbd1c689c,0xbcf49d24,0xbca0c59a,0xbca0e9fe,0xbcaca3cf, +0xbcc1de43,0xbcd29089,0xbcc3fcfb,0xbd046e4f,0xbcf440e3,0xbd381604,0xbd85180a,0xbdbb9fe1,0xbdb7bf7a,0xbda336f6,0xbd85a9b9,0xbd396c8b,0xbd06a216,0xbce5bac4,0xbcf4ae45,0xbcd6a3d1,0xbcbf168e,0xbc6e7867,0xbc49a994,0xbc394425,0xbc52e657,0xbb3dafe3,0xbc932f09,0xbd1234a5,0xbcac8245, +0xbc715f11,0xbc20efbc,0xbc73a464,0xbc10d7bd,0xbc177b5a,0x3b0123f3,0xbca67ef1,0xbb864468,0xbc8caef8,0xbbf0daab,0xbc265247,0xbc25d7ca,0xbc32684e,0xbce4acaa,0x3bf3b601,0xbcd923a9,0xbd8c0585,0xbdce0ffe,0xbe06e5b4,0xbe0c16c8,0xbe01393e,0xbde1c740,0xbda55290,0xbd4eb36e,0xbd070069, +0xbd0525d8,0xbcf54463,0xbcee2a2b,0xbc82811f,0xbc5ec26f,0xbc6b6865,0xbc937cd3,0x3b205404,0xbb967186,0xbca994f6,0x3c47ecec,0xbb2c8cfd,0x3c787af4,0x3cac2537,0x3cc7daaa,0x3c96af62,0x3c51b201,0x3c7560fd,0x3b43d8f3,0x3c0601a7,0x3c902862,0x3ca5e519,0x3c9fe87f,0x3ce2dc89,0x3bd441e3, +0xbe06b4e6,0xbddccf44,0xbdc296ff,0xbd96b330,0xbcca374e,0xbd50786d,0xbd58ffee,0xbd2e1fea,0xbc4de84b,0xbb2ff69d,0x3be5f7ce,0x3c97400c,0x3cb36f18,0x3c9a4478,0xbc67a668,0xbbedfdbd,0x3d350507,0x3cc589bb,0x3cd02d7b,0xbc442a78,0xbce7ee6a,0x3bb13b37,0xbba4f978,0x3c3b94ed,0x3beb6108, +0x3b34ec28,0x3c932a09,0x3ca1b293,0x3c4d03cc,0x3ca36b00,0x3c03f578,0xbcbb07a3,0xbc81abe5,0xbcd382f2,0xbd3cf8d0,0xbdce1f90,0x3c1906e0,0x3d55a0e9,0x3d76a43b,0xbca6428a,0xbdb26e1e,0xbdf8498c,0xbdf41660,0xbe0be3c4,0xbd758ec9,0xbc76d550,0x3ac1ef51,0xbd00fbf6,0xbd72a750,0xbd83bc3a, +0xbd9143ff,0xbd96f040,0xbd9b5e2b,0xbd77e6d6,0xbcec4dc6,0xbd031515,0xbcbbf0e8,0xbc035eb3,0xbbd1a8dc,0x3ca1990f,0x3cb5fdbf,0x3c8a8e36,0x3c0762fb,0xba0e4535,0x3ab42e72,0x3b9e9135,0x3c4b80cf,0x3cfd945c,0x3c1a4f11,0x3a14a544,0x3aaf70ea,0x3ca2ab69,0xbc01b369,0xbc236943,0xbcce3e4c, +0xbc2d7924,0x3cfada6b,0xbc3e2c6c,0xbd072417,0xbcec2207,0x3cd0e312,0x3d24aeed,0x3c84d7f8,0xbb25355a,0xbccadd2d,0xbd2fade4,0xbd0ef429,0xbcd6780b,0xbc9b8e95,0xbce8d753,0xbcb1c671,0xbcea06dc,0xbd0db2c7,0xbc866e9b,0xbccf6855,0x3c2d4036,0x3c5e2512,0xbc7337db,0x3b313e0e,0xbb10032c, +0xba6575ef,0xbc23cdba,0x3b06435e,0x3cad266a,0x3ccf41eb,0x3d0bd542,0xbbbf0691,0xbbe01491,0x3c6026ba,0xbc822510,0xbda82d11,0xbdf58312,0xbdfa511c,0xbddcd635,0xbd82d50a,0x3c573727,0xbab01a90,0xbc3ad8cb,0xbd3e80ce,0xbcdcaf11,0xbca9211d,0xbc9eef6d,0xbd1d53b3,0xbd2976d3,0xbccdd63d, +0xbcb17efc,0xbc254823,0xbc8029c5,0xbcc2c5d9,0xbc68f92a,0xbc4ade23,0x3c6b008a,0x3c78a725,0xbb52dd79,0x3c675c51,0x3c17104a,0x3c6293b2,0x3ca50bd7,0x3cb03ce3,0x3ba5d510,0x3b85652a,0xbb445f63,0x3b5298aa,0x3c1ef78f,0xbc7fe95c,0xbd955f6e,0xbdba6201,0xbda8ef54,0xbd9a2bab,0xbd9fbb1b, +0xbd80c553,0xbd104c8c,0xbd172d73,0xbd32f075,0xbda42c10,0xbd4fb210,0xbd1ab761,0xbc91cf22,0xbc1b1166,0x3a102175,0x3bf225be,0xbc83a80b,0xbca0ba44,0xbc3d1986,0xbc5f2f21,0xbb1e9f43,0x3b98c4cd,0x3ad7cda9,0x3a7506ee,0x3af9cb21,0xbb0c0581,0xba2409a7,0x3a3c3422,0xb91b7bf3,0xb8ee7784, +0xb97831ea,0x3c489b88,0x3c4e3177,0x3bc6ef4c,0xbcfff253,0x3c0152b0,0xbce17b29,0xbcab2a02,0xbcb04eaa,0xbcad116c,0xbcf38a68,0xbcdfe51b,0xbcb6c661,0xbbb0b0c2,0x3b588822,0xb9c494b4,0xbc4dc547,0xbcd54350,0xbd1a3638,0xbd142abb,0xbd000e9e,0xbcc2c18f,0xbbeefd08,0xbacec59f,0xba720cd0, +0x3ab9a7c1,0xbbede5fc,0xbc77874c,0xbc2b627a,0xba81bf41,0x3c05386d,0x3bf8de78,0x3b83e57a,0xbabc6a53,0x3a031db9,0xb9d56390,0xbab94589,0xbb0e0fe8,0xbc1e7aff,0xbc307056,0xbc833b97,0xbcd9d41a,0xbc65051a,0xbc51b8db,0xbcc2695e,0xbccfa6fd,0xbcfb4417,0xbd0c3f04,0xbd22d3d7,0xbd0940e0, +0xbce49bd6,0xbc92da8e,0xbc8ff087,0xbc832cb3,0xbc8cceca,0xbbe02de2,0x3b261046,0x3c2a09cd,0x3bb9c905,0x3b64d185,0xba167e92,0xbb114f01,0x3b5f1352,0x3b965e30,0x3b651b9b,0x3b7d20bb,0x3a504e8a,0x3bdc77f5,0x3bb9ca97,0x3bda9c24,0x3bc3fac9,0x3a71542e,0xbb61037d,0xbb9e4ad3,0xbc0864ad, +0xbc15a08b,0xbc5ddb66,0x3ae893fd,0xbca7d27d,0xbc838af3,0xbc9a07f5,0xbc9dcab9,0xbca56f09,0xbca32f80,0xbcb3cb43,0xbc4ee9ba,0xbba5e6ae,0x3b367134,0x3c337055,0x3c9e5113,0x3cdf4663,0x3cbd8bcf,0x3c99f7a5,0x3c907036,0x3c829d93,0x3c913ebd,0x3c588fa5,0x3c66edc8,0x3aff9bc5,0xbc066031, +0xbb557f23,0xbc135401,0xbca410d8,0xbc8fc625,0xbcb773bc,0xbca0de1e,0xbc936d3b,0xbc2c9426,0xbc2de1be,0xbc109b84,0xbbee61a1,0xbc5acf2e,0xbc60974a,0xbcf70167,0xbcba3402,0xbca7c2a1,0xbcb64326,0xbcb455c9,0xbcbb7d7a,0xbcc038a1,0xbccd9566,0xbcb295af,0xbca36fc7,0xbc945bb2,0xbc83231b, +0xbc67dbb3,0xbc2a2103,0xbc3e4ec6,0xbc3a5162,0xbc467293,0xbc5230fc,0xbc575885,0xbc5a96f8,0xbcbcad62,0xbc813e6c,0x3cb4b5a4,0xbd00ee08,0xbcb6e30a,0x3c956a34,0x3c863b52,0x3c7f3fdc,0x3c7821c2,0x3c4494b2,0x3c2c7f3c,0x3c303130,0xbc9b2776,0xbd03335b,0x3ca98633,0xbc94fb8a,0xbce6d672, +0x3ce77788,0x3cf55ee3,0x3cce927e,0x3cac3f38,0x3cd02686,0x3ccd509f,0x3d06bf31,0x3d0bb911,0x3cf76142,0x3cfe0d7f,0x3cf8650d,0x3cf16b5e,0x3ce54e85,0x3ce38b27,0x3cf717f2,0x3ce6215f,0x3ce22c91,0x3cd8a438,0x3ce9e619,0x3ccf0d04,0x3cea4a7e,0x3d0dda71,0x3c4785b3,0xbd4c9528,0x3d258826, +0x3c8487b3,0xbd32e27a,0xbd24bae7,0xbd20ef31,0xbd1f6d2d,0xbd1411cf,0xbd0f6423,0xbd042bf3,0x3c878405,0x3d2952cc,0xbd3623f7,0x3c1a29fe,0xbc571b0f,0x3cbfaaa0,0x3c97c758,0x3ce83d4c,0x3cf83701,0x3d56a9b9,0x3d6647b2,0x3d3f0e8f,0x3d48caa1,0x3d39f1dd,0x3d2aba11,0x3d0e03b9,0x3d0c2160, +0x3d273bcc,0x3d182d5c,0x3d15d0e5,0x3d0799a6,0x3d19b7c5,0x3cfd0e1c,0x3d140be5,0xbb1c7e2a,0x3c97b3da,0x3ce34d45,0x3c89b435,0x3c7ac45b,0x3cdba78b,0x3cd653f2,0x3d05c1c9,0x3cd08c06,0x3ced25a2,0x3cc94201,0x3ca12fc0,0x3caf0821,0x3c283013,0x3c80f267,0x3ca0b4b5,0xbb0777d1,0xbbb519db, +0xbbecf6fd,0x3be16d54,0x3c4fd97a,0x3d91c1f1,0x3d9d497a,0x3d5bd55a,0x3d5d3396,0x3d4703a8,0x3d3db5d6,0x3d15a28e,0x3d075437,0x3d3e9034,0x3d158e05,0x3d1481fc,0x3cf5402c,0x3d1d63aa,0x3d0b5877,0x3cd39279,0x3cc2aef6,0x3c8722ba,0x3c707bf3,0x3ca7b8b3,0x3c8bfcc4,0x3c88b312,0x3c56b637, +0x3c9144c7,0x3c651af5,0x3beb36ab,0x3bf311c6,0x3c6c6dad,0x3c373429,0x3c2cb9a7,0x3bdba24a,0x3a806d07,0xbcfed98a,0xbd195476,0xbcf52506,0xbc236c11,0x3c46b6d8,0x3dd5ae17,0x3df63614,0x3db68c73,0x3db35aa0,0x3d98c1f5,0x3d7d4637,0x3d309966,0x3d3bef0d,0x3d83bb33,0x3d66a33b,0x3d4f966d, +0x3d21a436,0x3d5e8dba,0x3d1dea21,0x3d047964,0x3c9da553,0x3c19eace,0x3c63f3c2,0x3c967bb2,0x3c9f5aac,0x3c7ab1f3,0x3ca2b3ad,0x3c3f28f8,0x3c00c388,0x3c024bf9,0x3be0dc94,0x3c272674,0x3c33fe70,0x3c0b62a6,0xbb66eeb2,0xbc534c4c,0xbd02a210,0x3d298c87,0x3d3ba85f,0x3d1ef806,0x3d2fdfa9, +0x3d12f480,0x3cfc7cc8,0x3c8e4fe2,0x3cb7ccd4,0x3ca5c621,0x3d0ebfe3,0x3b7cb0cf,0xbc971394,0xbd2fb454,0xbc4814c0,0x3b9029e9,0xbbfdcbd9,0xbb12a0f3,0x3a9c542b,0x3d1924a7,0x3cde2cba,0x3c107e8c,0x3c296992,0x3c96e2c1,0x3c8e4d67,0x3a10ff00,0x3c935957,0x3ca933e2,0x3be595d9,0x3c9ffbd8, +0x3bea34f1,0xbbf50d86,0x3b226875,0xbbb90031,0xbc855b43,0xbd0c2036,0x3d8dba7f,0x3d5e2223,0x3bb57493,0xbaf3fc13,0xbc46b613,0x3cd28056,0x3cba3231,0xbcf174d3,0x3ca2de38,0x3d064f22,0x3c7ba3c1,0x3cddb551,0x3d188677,0x3d5d3963,0x3d488471,0x3d6b790b,0x3d8b11b3,0x3d5e7dfe,0x3d346fdc, +0x3cecf8c3,0x3bd27f32,0x3c840d6b,0x3ca14e2c,0x3cc62a2b,0x3cd522b2,0x3cc188ba,0x3bf1173c,0xbb22f242,0x3bdd22ca,0x3b71a58a,0x3c401c81,0x3ce2dca4,0x3c4bffe7,0x3c976872,0x3cc7bed9,0x3d59bc54,0xbc99e8d1,0x3c8d7273,0x3d838d31,0x3e02b2de,0x3e734b62,0x3e6c8c6a,0x3e4b7075,0x3e06eb91, +0x3d827952,0x3cbcad3f,0x3ca84b5a,0x3cf103d8,0x3d551248,0x3dae4e13,0x3d86db49,0x3d3c9ba1,0x3c98495d,0x3be02ffb,0xbb5a464c,0x3a09f6a4,0x3b4d21bd,0xba3ad020,0xbbcdc562,0x3d0af2c8,0x3cd09fbc,0xbca59b98,0x3b7656bc,0x3a0f105f,0x390f7748,0xbba5b0a6,0x3bbdff0d,0x3c8f57ef,0x3d204070, +0x3d3a95ae,0x3ca26f2b,0xbb014285,0xbbfe40f0,0x3c7652c2,0x3dc00a6e,0x3e01147b,0x3e2f89ae,0x3df37364,0x3db83007,0x3d50a3bf,0x3da75fcb,0x3d9847f9,0x3d5bb778,0x3d3205e8,0x3ca629b8,0xbbe92bbd,0xbc099c97,0xbb81b515,0x3bbbf463,0x3c1ba510,0x3ba34abc,0x3b9cba5f,0xbb8e90ac,0x3b8d4b52, +0x3b3f5e26,0x3cc052ea,0x3cd1599e,0x3b9cf7e7,0x3c5e4a36,0x3c558ffc,0x3c6de9b3,0x3cbb5e18,0x3ccc37de,0x3c539f0a,0x3c54d93b,0x3c9bc1e9,0xbb803f00,0x3b8d92f7,0x393768bb,0x3d921fef,0x3e0c0f1d,0x3e08925a,0x3e127145,0x3e02b3b1,0x3dd8ba98,0x3d74b0af,0x3d9bc3d1,0x3d9d34de,0x3d95bcc9, +0x3d66bdb3,0x3d47467f,0x3d5c8777,0x3d10ced8,0x3cb28d5b,0x3c4bad76,0x3b5ce7c2,0x3b949359,0x3c5eaf70,0x3c5f6b34,0x3cae4ddd,0x3be86d37,0x3c0ce1bc,0x3c29eae8,0x3c37ed5c,0x3b246136,0x3a919563,0x3bddd51d,0x3c06f76f,0x3c2e03bc,0x3c3578ca,0x3c8fed3d,0x3c98f5e8,0x3b4d8f84,0x3d1bce33, +0xbc8b80bb,0x3d493f8f,0x3d8f0b86,0x3d64ea93,0x3d3b4313,0x3cda0208,0x3c987823,0x3c813563,0x3a12dc6f,0xbc25a9d5,0xbc6d6fac,0xbb0b885d,0x3c5008a4,0x3ce9b8aa,0x3cb38e26,0x3c8d59f6,0x3bb5f07e,0x3c4ea220,0x3c669783,0x392cd3d0,0xbb65dcf4,0x3b307da0,0x3c1b73e1,0x3c62290b,0x3c1195de, +0x3bb45df9,0x3c17c366,0x3c0482e8,0x3bec94c3,0x3c3cda02,0x3c63a2d7,0x3c6b3b78,0x3c381a04,0x3c830f79,0x3c229caf,0x3cb79f9e,0x3cfb9a8d,0x3d05df5d,0x3d0669fa,0x3d05bd76,0x3d11e25b,0x3ce80d78,0x3ca34967,0x3c2642b1,0x3c7699ee,0x3ca75dbd,0x3cc106a3,0x3c565b4a,0x3a6f79dc,0xbc38c182, +0xbb7c2d84,0x3b59eab3,0x3c032637,0x3bbfc497,0x3a5d7b05,0x3bb5e0cc,0x3c545547,0x3bc0788c,0x3bec6e40,0x3bc6d9ee,0x3b7a2340,0x3ba0c47b,0x3b56fa98,0x3c33aef0,0x3c45d7c2,0x3c35c002,0x3c05ac17,0x3c361de7,0x3c5bb769,0x3c89f005,0x3c86634e,0x3cd4982a,0xbca2816c,0x3ca126be,0x3c88456a, +0x3c856e6b,0x3c80b39e,0x3c752251,0x3c7fd79b,0x3c77480f,0x3c437ab8,0x3bd736d7,0x3b7d1ba8,0x3adaf3b5,0x3b259527,0x3af15673,0x3b38d0a6,0x3adc8b20,0x3b1a84ec,0x3b80aa81,0x3b2e5ef5,0x3be7f029,0x3c0a21d6,0x3c4b39e9,0x3c82e15c,0x3bd18c9e,0x3c16de93,0x3c64822a,0x3c816096,0x3c9d09c0, +0x3c81a6ec,0x3ca714b4,0x3ca8a175,0x3c8976d1,0x3c900f4a,0x3c0cb6cc,0x3c1a4bf5,0x3c857e19,0x3c265602,0x3c870aef,0x3c1c3c07,0x3c3f86e9,0x3c3301ca,0x3c394f66,0x3c37d470,0x3c415e7f,0x3c1cd936,0x3c0bfc21,0x3be769da,0x3bc3e28c,0x3b8f6b23,0x3b385416,0x3b5f1bdb,0x3b82cc46,0x3b816bdf, +0x3b99bd21,0x3ba6dfe6,0x3bb3e7e2,0x3be0e3f3,0xbbab49b4,0xbd0c6e32,0x3c52d2dd,0xbb6d1ea9,0xbd1fc51b,0xbd17b809,0xbd1217d5,0xbd0a01e5,0xbd03fca6,0xbd0030e6,0xbced22c0,0xbb4a870e,0x3c8e25b8,0xbd1d79c0,0xbc0120b3,0x3c0cbfbf,0xbd0ca621,0xbcb95387,0xbd253421,0xbce9e2d5,0xbcfec4a3, +0xbcf3cc73,0xbd1d3253,0xbd29567a,0xbd1d4ca3,0xbd245527,0xbd1da627,0xbd0be85d,0xbd104b35,0xbd0e6586,0xbd0c249f,0xbd0d57f7,0xbd0ea74e,0xbd1430e5,0xbd0e860d,0xbcf70942,0xbd2b26ee,0xbcaa8036,0x3c176503,0x3d78c5b9,0xbce8fa29,0x3bd04cc9,0x3d637e71,0x3d620352,0x3d5e63de,0x3d49fc08, +0x3d4ff205,0x3d4e32a7,0x3d48f9f0,0x3b9645a8,0xbd0b6c2e,0x3d60eee5,0x3c022322,0x3c253634,0xbd0a6635,0xbca9a7e9,0xbccd7cd7,0xbcee2e5e,0xbd541747,0xbd6b9b92,0xbd4188fd,0xbd62e813,0xbd59516d,0xbd2dbfb2,0xbd349911,0xbd32315c,0xbd2f2abd,0xbd35e063,0xbd361fea,0xbd3fcdac,0xbd22341f, +0xbd14c6cb,0xbd278d59,0x3cab53b6,0xbc915310,0xbc865a42,0xbbc65b39,0xbb096336,0xbca16103,0xbc98f64a,0xbcc1879c,0xbc7cdbba,0xbcd2a373,0xbcc9813f,0xbc3a03ce,0xbc94bd4d,0xbba31b25,0xbc1e71d2,0xbd1021f7,0xbd15f0d8,0xbd1b057a,0xbca42db2,0xbca5a17f,0xbc961c69,0xbd83a7b2,0xbdac31da, +0xbd8205ec,0xbda396a4,0xbd90f1f8,0xbd4d8bed,0xbd616d9a,0xbd53b968,0xbd4aa052,0xbd513373,0xbd547db7,0xbd74a683,0xbd32c0a9,0xbd35b93f,0xbcf5f08f,0xbc3d73f8,0xbc4197ac,0xbbcb198b,0xbbd0d020,0x3b7f14ce,0xbc6a8313,0x3bdaf317,0xbc46bd48,0xbb026947,0xbc1088db,0x398fcb92,0xba95a19f, +0xbb846c3f,0xbc237220,0xbc07e0cd,0xbd00dc18,0xbd3fef1e,0xbc7fd7d3,0x3ca10505,0x3c09ea34,0xbbc97797,0xbda1e203,0xbdca47b5,0xbd870a98,0xbdc5ea86,0xbdc12994,0xbd7da296,0xbd8daa15,0xbd8e7044,0xbd89af4e,0xbd94439b,0xbd8f05a8,0xbd9af9ee,0xbd4e3997,0xbd233ccf,0xbd0d309b,0x3b6e450d, +0xbc33b551,0x3be053b8,0x3b91a9be,0x3c305654,0x3b814045,0x3c5c65c6,0x3c736701,0x3b5c348d,0x3b8eb433,0x3aa4ff06,0x3c248b82,0xba424aa1,0xbc526fc8,0xbc0211d8,0xbd3ee301,0xbcb9cb48,0xbd869beb,0xbddacff1,0xbdc094f1,0xbd64a9a3,0xbd842c22,0xbdacbfce,0xbdf59a41,0xbdb4f74a,0xbd8b8c93, +0xbd5e27b1,0xbd55bb6c,0xbd2fd5fb,0xbc31bedf,0xbce21040,0xbd290dd2,0xbd52cb5b,0xbd4cae96,0xbd80c818,0xbd6e49a4,0xbc57b738,0xbcc901cc,0xbc5b9e84,0xba58c88a,0x3bb547bd,0x3a49dcaa,0x3c330781,0x3c583316,0x3b10b04d,0x3c1836ca,0x3b8da852,0xbbc54e94,0xbb9b9a7a,0xbb98e582,0xbca1fd2c, +0xbcfd8d53,0x3c18a8e6,0xbc7cc309,0xbcba7c1b,0xbce214f0,0xbd5b83cd,0xbd79e43d,0xbd6cbd68,0xbd784bdf,0xbd3286a1,0xbd4f2fa2,0xbd43fe58,0xbcf78d8c,0xbce64846,0xbd2f85d0,0xbd78697e,0xbd84a05a,0xbd8189e8,0xbd7c3536,0xbd626bb1,0xbc4fcf51,0x3bdc940a,0x3b6caa72,0x3b398455,0x3b9a951a, +0x3c0a7fed,0x3c6b111c,0x3bd4924c,0xbb4eb972,0x3afac25f,0xbbe61111,0x3b96f7ce,0x3ca55f1a,0x3c43d01d,0xbc2e769a,0xbc988f34,0xbc6f975a,0x3c06a14e,0x3cc2da2d,0x3d1e8728,0x3cb41085,0xbd6ba0aa,0xbd9d9d42,0xbdf950b9,0xbe2e9323,0xbdee85b6,0xbdaf88e1,0xbda81dfe,0xbddb849d,0xbdee62e3, +0xbdcf59c5,0xbda251ab,0xbd4749c1,0xbc81eef6,0xbc236f1b,0xbc9b349b,0xbce1a029,0xbcb75a2b,0xbc4ce821,0xbbf42bd7,0x3c9c3174,0x3c82e62a,0xbca25c13,0x3a03ccfd,0xbb1a2be0,0x38dfa175,0xbbbb7541,0xba11e11c,0xbb43c24d,0x3d0fb3d3,0x3d3d0081,0x3d105431,0x3c4a9a81,0x3c861379,0x3c871ad5, +0xbd3a7666,0xbdbffed1,0xbe37b1be,0xbdfa89d3,0xbd8e5ed7,0xbcebb063,0x3b981786,0x3b862420,0xbcc9526f,0xbd41332a,0xbd898371,0xbd8e1247,0xbda4823b,0xbda676f8,0xbd8e9fea,0xbd8b2cf8,0xbd570c27,0xbcb119ba,0x3b8ee495,0x3b0bccc8,0x3a8c13ca,0x3ca4282a,0x3c9a9999,0xba56c66f,0x3c35e986, +0x3c07c56b,0x3b57a3fc,0x3c713ffb,0x3ca1c9a0,0x3b9f70ae,0x3c84a785,0x3b853921,0x3b952416,0x3b16a084,0x3d2d403b,0xbcea2262,0xbdde1907,0xbdbfbbdf,0xbda826a0,0xbdabfcbb,0xbdc53212,0xbdea3ed1,0xbd8d63f0,0xbd3c0bfe,0xbd3787c7,0xbc9e92e8,0xbc2a5e53,0xbc852d37,0xbaf04730,0x3b1beaee, +0x3befd532,0x3c344552,0x3ba2c187,0xbb1b201b,0x3b92c2ce,0xb99aafd9,0x3ba828ba,0x3c2a2913,0x3c28dfc9,0x3b8fd2da,0xb9e7f6a7,0xbba6e070,0xbb4a957c,0xbb980ca7,0xb6f57367,0x3a67f85b,0x3c541f51,0x3c8b2d23,0x3ca3a289,0x3b1ed2b8,0x3d314bc4,0xbc3d1949,0xbcfaf5b4,0xbc8b1008,0xbd03ab84, +0xbd036448,0xbd2a728f,0xbd9194c9,0xbcf15e05,0xbc1a7e1c,0x3bce054d,0xbc3a0dea,0xbcce8dd4,0xbd035aa7,0xbd17a630,0xbd0ff513,0xbcef9dfc,0xbce56143,0xbcab9b91,0x3a161b39,0x3ae4bb94,0xbba0f1fd,0x3a429081,0xbaa35316,0x39a29da8,0xbae8cdef,0xb9ee0549,0x3b11d40b,0x3b8c76ee,0x3b6f1ec4, +0x3ba94179,0x3c001b3a,0x3c2612e5,0x3b2ee44b,0x3b87d2c4,0xbc1683c1,0x3a9b23e3,0xbbcd29cc,0xbc86e6ab,0xbc7ad59e,0xbcb6fbeb,0xbcdeca05,0xbd053f77,0xbd234c48,0xbcfdc75a,0xbcdd9dbe,0xbc91ece4,0xbc2bf8dd,0xba2cc85e,0x3c1e8166,0x3acad92d,0xbbb27a80,0xbc468baa,0xbc62a346,0xbc9fd967, +0xbcbfccca,0xbc378669,0xbb3b4bf1,0x3b2152ca,0x3aed0c55,0x3bca6fed,0x3b8dd07e,0x3c102dbc,0xbae49c6e,0x3bd031d8,0xb9c03715,0x3bb3e894,0xba78bf41,0x3af0aae1,0x3b9ad289,0x3c30a708,0x3a02e768,0x3ced2c1b,0xbc288bc1,0xbc84ee7c,0xbcb336c1,0xbcdde9ff,0xbd074e46,0xbd1bad2c,0xbd341bbd, +0xbd145a02,0xbced71c5,0xbcbb466b,0xbc870a4d,0xbc446343,0xbbe03755,0xbbc72f86,0xbb541d1a,0xbac84d3e,0xbad9edae,0x3a713ce5,0xbb3d8ff9,0x3ba3c90c,0xbc0dae84,0xbc4b9185,0xbbec06a3,0xbc0c72fb,0xbc83c5df,0xbc84968a,0xbc770a43,0xbbc84264,0xbc34db3b,0xbc1e1684,0x3a972f9c,0xbb5244d7, +0x3ba9dcf2,0x3b833cd0,0xbbd647a7,0xbc348e84,0xbcc25ed4,0xbc959560,0xbcb01191,0xbcbc0627,0xbcc7e210,0xbcd3cba5,0xbcf103fb,0xbcce5e99,0xbcbcd03c,0xbca816ca,0xbc9399bc,0xbc795091,0xbc3ddbe7,0xbc512ca2,0xbc5ea254,0xbc646b46,0xbc6da2a2,0xbc61d5e5,0xbc827c5b,0xbc4194d5,0x3b255fc7, +0x3cd154f0,0xbc8d659c,0x3a3e48a7,0x3ce32c1a,0x3cecf7b2,0x3ce8dc0d,0x3cd4b7ea,0x3ce48029,0x3ce30e38,0x3cd9417a,0x3b9e8b27,0xbc87fcb5,0x3ce7e71c,0x3bfe7494,0xbcba278c,0x3cfa26cf,0xba37faf2,0x3d25fae1,0x3cd4dd20,0x3cf37006,0x3cd78085,0x3d039645,0x3d0b2e40,0x3d0d1a4e,0x3d064e6f, +0x3d03ce07,0x3d092d8d,0x3d02718f,0x3d01120d,0x3cf74b8a,0x3cff0ac3,0x3cfede40,0x3cfd784f,0x3cfdcdae,0x3cd8da6b,0x3d214c62,0xb9d4406b,0xbcf5522c,0xbd83483c,0x3c54dbef,0xbcd588b8,0xbd7baa64,0xbd7ac9ec,0xbd7923db,0xbd644170,0xbd77e774,0xbd782cd2,0xbd6a1e24,0xbcd3debb,0x3c865b9f, +0xbd7c15cf,0xbd0df95d,0xbd2466ba,0x3d0de325,0x3ce69dff,0x3ccfbfa0,0x3c9b96b9,0x3d036495,0x3d14fdde,0x3d197012,0x3d11f1ff,0x3d1a7b22,0x3d36a26b,0x3d297374,0x3d216b49,0x3d120cfd,0x3d1f651d,0x3d1fff38,0x3d1dfd94,0x3d121a8e,0x3d11639e,0x3ce98230,0xbd1170fb,0x3c481439,0x3c2500a2, +0x3bdd35c0,0x3a91f863,0x3c3fb60a,0x3c8b76d5,0x3c8eeb60,0x3b1964c9,0x3c9035bd,0x3cb5a91d,0x3c326e58,0x3c5ccd59,0xbb801cb3,0xbb0e1a2f,0x3cae963b,0xbbb4bbfa,0x3ce98143,0x3d2381e6,0x3cef9363,0x3c8367c1,0x3d3eebbc,0x3d6d9928,0x3d80339d,0x3d537810,0x3d4983ab,0x3d71e489,0x3d507331, +0x3d4d8bd0,0x3d31322c,0x3d3de27e,0x3d36f319,0x3d3a6abe,0x3d1a65d0,0x3d2d4f2f,0x3c339622,0xbbc8a426,0x3b5ed71b,0x3c1ec173,0x3c71d960,0x3a3d93a3,0x3c14faff,0xbaf019f9,0x3ca7d0bb,0xbbb1d314,0x3c24260c,0xbb9fdce8,0x3c267ac5,0xbaa371d6,0xbb30d1b6,0xbc0236d5,0x3b198708,0x3b6eb593, +0x3d3eefc5,0x3d1aec80,0x3c9b3493,0xbba38a9a,0x3cf0c5fb,0x3d5067c6,0x3d7b8a37,0x3d516a23,0x3d68a680,0x3da8d12d,0x3d8f1069,0x3d83e941,0x3d62e921,0x3d7e4943,0x3d7fc859,0x3d709310,0x3d4a3816,0x3d365e81,0x3c6d5fc8,0xbc3a4c27,0x3c973252,0x3b414418,0x3cc583bd,0x3ca75d73,0x3c10f926, +0x3c9504ca,0x3c4afe69,0x3c533ed3,0x3ba3cb02,0x3c212c3b,0x3c958bf0,0x3c37f77e,0x3ba63093,0x3c3dc052,0x3c9234a0,0xbd16959f,0x3bb2632c,0x3c9b9682,0x3cde3e72,0x3d3cb8ab,0x3da922f0,0x3d95802f,0x3d11f8ae,0x3d051412,0x3cbf4b81,0x3cf08a13,0x3cfd5503,0x3cf38132,0x3c70fa2e,0x3bb5eabb, +0x3b9ad8a4,0x3c93b974,0x3cbb577a,0x3d26e0ee,0x3c070862,0xbce4c7a4,0x3bbbc5cd,0xbb16d620,0x3beca121,0x3c11af82,0x3bd8ff36,0x3c6becd1,0x3c72a7d6,0x3beb1c6f,0x3c801f51,0x3c18813a,0xbb987fcd,0xbb8ad48f,0xbc3d395d,0xbc9cb347,0xbcb81d90,0x38b51e4b,0x3cc52ff8,0xb9a01efa,0xbd055932, +0xbd916862,0xbd604f43,0xbd50118c,0xbd8299a4,0xbd9068bf,0xbd810cb1,0xbc70bf8a,0xbceecfb3,0xbce3b1fe,0xbc5ce9c3,0x38d6d063,0x3cdf3c35,0x3d9be3fe,0x3d3b6cd7,0x3d20ded8,0x3beb538c,0xbc8a35af,0xbb7a0be8,0x3a8ea786,0x3ca6fbb1,0x3cae6c2d,0x3c1954ad,0x3c132fd8,0x3afb037f,0x3b5199f6, +0x39bba3b6,0x3c177c74,0x3cda500d,0x3c269bd0,0x3c276f44,0xbc36bba5,0x3c5e0eaa,0x3cadc638,0x3d5c5349,0x3d6858e2,0x3d99d2b2,0x3df1a99a,0x3e11a210,0x3e051116,0x3d845a92,0x3d89ffec,0x3d3c088b,0x3d0ddb43,0x3d6b56af,0x3d8cba49,0x3d8d0605,0x3d5e90e7,0x3ce5dc7c,0x3b45de5d,0xbc24f5b7, +0x3b7b3627,0x3bfcda4b,0x3a5abc07,0x3c26c6d6,0x3ac44481,0x3ce8afd1,0x3cc3291b,0xbc28d35a,0x3c0bc7ae,0x3bd94b9d,0x3beab834,0x3b527fce,0x3bc814bd,0xbc0c4308,0x3cdf4bb6,0x3d4ab60b,0x3d025dee,0x3cf86237,0xbb0f1987,0xbc7f0cb3,0x3ca29465,0x3d4fe445,0x3e01795b,0x3df23ec4,0x3db6d073, +0x3ceed6d4,0x3c8a9a6d,0xbba61f8f,0xbca8cd1e,0xbd37121c,0xbd6a2c64,0xbd7157e4,0xbce89ec5,0xbbe00131,0x3ba617df,0x3c0512bb,0x3c025936,0xbb813798,0xbc81a346,0x3bb7694d,0x3bea49e1,0x3c8d00fb,0x3c741387,0xbba7261b,0x3c591398,0x3c248c05,0xb932a3eb,0x3c42accd,0x3ca89b2b,0x3cc78b46, +0x3ca12b26,0x3c9b9cca,0x3aaffc0c,0x3c24537c,0xbd143d3e,0x3c7033ed,0x3d9f789b,0x3d961077,0x3da2a5b1,0x3da3f0fa,0x3d91103e,0x3d1ecbff,0x3d1619f7,0x3d334246,0x3d9bc9bf,0x3d75c048,0x3d5549af,0x3d14e955,0x3c7110a8,0x39314288,0x3c140449,0x3bcd6240,0x3c8c9022,0x3cab73f3,0x3bea0916, +0x3c915372,0x3c0240f6,0x3c827e96,0x3c93b975,0x3c6e6998,0x3bbb9c58,0x3bd34f09,0xba561496,0x3c08e9fb,0x3b85c79d,0xba7c596e,0x3bdbecac,0x3c1a8da4,0xba3a4ba5,0x39dbbff0,0xbd0ba07c,0x3b002d3c,0x3d174fe3,0x3d1912ca,0x3d509b94,0x3d574079,0x3d5cf704,0x3d598f23,0x3d01604b,0x3c8d67a1, +0x3c777fcf,0x3c2268ff,0x3b06508a,0xbc36f738,0xbb5b4b07,0x3c014bdf,0x3cad4bf5,0x3c6fff81,0x3c095ca0,0xbc1cd400,0xbc29e7b7,0xbb121386,0xbbf38b2e,0x3bec5949,0x3c439602,0x3c27abf4,0x3c37cc0e,0x3c1ce07d,0x3c9b5678,0x3c844056,0x3c8f2c2d,0x3c9dab96,0x3c7dbce4,0x3c6b7074,0x3b9ed05b, +0x3c31126a,0x3bdd0a6d,0x3cc65a5d,0x3d0a00ad,0x3cd03fb5,0x3ce3213d,0x3cd83562,0x3ce8766f,0x3d089ec9,0x3cfb2d3f,0x3d0359d2,0x3d041354,0x3cfd935e,0x3cf52ca4,0x3ce03175,0x3cc3cd82,0x3c8bbaf1,0x3c53b574,0x3c761912,0x3ceef51a,0x3cb556d3,0x3aefffbe,0x3c135ac6,0x3c3ddaf5,0x3c4984bc, +0x3ba06707,0x3c3e17d8,0x3aac373c,0x3c82eed7,0xbb3ad5d8,0x3c18abd1,0xbaedd2d0,0x3ba90e3b,0x3b0f405b,0xba8c5798,0xbc0c0ec7,0x3b930db5,0xbccc0aea,0x3bd0f933,0x3c1fd97c,0x3c53b60a,0x3c8d2d3a,0x3cada225,0x3ccb34fb,0x3ce38d35,0x3cbfab71,0x3c99db44,0x3c6ebf4d,0x3c349bfc,0x3c02414e, +0x3bc3e845,0x3bf1eb0b,0x3c1cf4eb,0x3c3507cf,0x3c30add3,0x3c0fbad6,0x3c57a8b4,0xbbe16f0a,0x3c348417,0x3c196811,0x3b96f309,0x3addc6a9,0x3c2ba193,0x3c68d507,0x3c3fc0e4,0x3adfcd29,0x3c60eb0a,0x3c8749fb,0x3bf9e9b9,0x3c0b22e9,0xba86a0d2,0x3866bbe2,0x3c24b104,0xbb3b4963,0x3caffae4, +0x3c80e430,0x3c93d552,0x3c991c6a,0x3c9ebc52,0x3ca46ab6,0x3cb532d8,0x3ca6a879,0x3ca22246,0x3c9bad7f,0x3c941fd4,0x3c8aebad,0x3c748c09,0x3c7bfec1,0x3c7862e2,0x3c792290,0x3c82efd7,0x3c746e43,0x3cac2732,0x3a9582e7,0xbc93c429,0xbd228a45,0x3be5308a,0xbc95e258,0xbd369eb7,0xbd36a2bb, +0xbd2bf99b,0xbd140c2f,0xbd21e518,0xbd1cbe24,0xbd119fc7,0xbc971da1,0x3be5644d,0xbd1230f7,0xbcb710b7,0x3ca84581,0xbc9fbd3f,0x3c9f50b3,0xbcef254f,0xbc6135a2,0xbc805790,0xbc5da838,0xbc8f2408,0xbca51879,0xbcc49c0a,0xbcc44e4b,0xbcc01213,0xbcb0d950,0xbca5aca1,0xbca485e1,0xbcb037f0, +0xbcb26287,0xbcb1ace9,0xbcabc91d,0xbcab7ba3,0xbc920290,0xbcfc8c49,0x3c9f3568,0x3d2e2402,0x3d57adf9,0x3c1cb4da,0x3d281321,0x3d4b9760,0x3d5896f9,0x3d57797b,0x3d3b7801,0x3d5a5e95,0x3d5e5805,0x3d5b8490,0x3d211803,0x3b4a334f,0x3d481f6f,0x3d37fcd0,0x3d2f46a3,0xbc85b3d1,0xbc6fa6c0, +0xbbcd6908,0xbae4c7cd,0xbc103e8b,0xbc89a55b,0xbcdfea92,0xbcf88d6b,0xbcf74354,0xbcce18d9,0xbcb12270,0xbcb2a04d,0xbcdedc6e,0xbcf2af6e,0xbcf69629,0xbcea8537,0xbcd0dbf8,0xbce4461a,0xbc91eaa1,0x3d1bd2e2,0xba35c8a7,0x3c225da9,0x3c048ec8,0x3c4c556f,0x3a1db8ef,0xbb4662c0,0x38d9eaa6, +0x3c49f021,0xbb783472,0xbc26353f,0x3bb45c8d,0xba3a897a,0x3c3ee6b0,0x3c46751e,0xbc3ecece,0x3ca68a04,0xbb89554f,0xbc64a3a7,0x3b5203c1,0x3c4f24b8,0xbb91f97e,0xbcafd457,0xbd39073b,0xbd4be410,0xbd3eae21,0xbd098244,0xbccd07d1,0xbcc5e326,0xbd056973,0xbd13fe50,0xbd14ffc3,0xbd0b25f4, +0xbcf82e49,0xbd196343,0xbc2742ba,0x3c5c0c2f,0x3bf5c3a7,0x3c362f48,0x3bc609b3,0x3c92123e,0xbabfdb7d,0x3c7e814a,0xbc297411,0x3c8011de,0xbbc37b2b,0x3c5676df,0x3c46db5c,0x3c069e29,0x3bc11a0c,0x3c62e250,0x3b9427c5,0x3cd2781a,0xbbb6c0c6,0xbbcdb604,0x3ceb8dd4,0x3d5100a8,0x3cd78910, +0xbb897a87,0xbd2ea506,0xbd5a9f52,0xbd56181d,0xbd0b0ba3,0xbca34bf9,0xbcaa7b68,0xbd19e983,0xbd4320ac,0xbd510725,0xbd40525e,0xbd312bd2,0xbd3b0058,0xbcaef128,0x3c2b4c62,0xbc5356bb,0x3c8d4b07,0x3ba9d94f,0x3b051796,0xbbec173c,0x3bdbb484,0x3c471e19,0xbb1afc17,0x3b5cefbd,0xba061284, +0x3c64cda0,0x3b8e64fb,0x3c01c8ce,0x3bc28ce9,0xba81a04c,0x3ca356d2,0xbd227bd6,0xbd940b98,0xbd8ab664,0xbdb13188,0xbd54b60c,0xbd202a4d,0xbd55a004,0xbd7a5e8e,0xbd827a3b,0xbd5c02ff,0xbd4e45ad,0xbd00bf65,0xbc8ae393,0xbc105e8d,0xbc261b80,0xbce43e1d,0xbcc71fd5,0xbd26aef7,0xbc7e59d4, +0x3c4627ce,0xbc7cf0e0,0x3b5db954,0x3adb47e6,0x3c3e0656,0x3c80b000,0x3c37d027,0x3c22b541,0x3bcb5644,0x3c631e80,0x3b9609eb,0x396d0f4c,0xbbbe0095,0x3b834636,0x3b721281,0x3c820410,0x3b3e55e1,0xbcedd029,0xbda46e59,0xbd710397,0xbce2636c,0x3b847615,0x3c57804f,0x3b4d1357,0xbcf7e434, +0xbcf4b368,0x3bfc17f8,0x39c79b2e,0xbb8791c7,0xbc2cbb5f,0xbceb9e43,0xbd22b919,0xbd4f0b3d,0xbcd2ef0b,0xbcd80a94,0x3a3f4279,0x3c40baf4,0x3b343769,0x3c1a875b,0x3be5a46f,0x3bc26fa7,0xbacc35b0,0x3b2de4de,0x3ac3ee44,0x3b379c8a,0xbb02df9c,0x3c0377b2,0x3bd30385,0x3c92b8eb,0x3b32f546, +0xbc2cd802,0xbcb0261c,0x3d51ce33,0x3d475da2,0x3d964144,0x3d9f0f89,0x3cf62680,0x3cf4773e,0xbc72258c,0xbdaa0afc,0xbdb68661,0xbdae6e10,0xbd4767a6,0xbd85d71b,0xbd855949,0xbd67453a,0xbd66daad,0xbd14e460,0xbc0951b5,0xbc2657de,0xbcd64406,0xbc61cfbf,0xbc0d28e7,0xbbfd8de4,0x3c42adc7, +0x3cc8dde3,0x3cab450a,0xbb0e51ee,0x3bb7e9b3,0x39d2b7e5,0x3b480483,0x3b74da14,0x3c0fbc44,0xbae0540f,0x3d09a480,0x3d26a301,0x3d777ec5,0x3d4ae5f7,0x3ba317e7,0x3c826439,0x3c9831d1,0x3ceed912,0x3b225651,0x3d1b39dc,0x3d3481de,0x3c40c989,0x3d35f4b3,0x3d334878,0x3d3ddf2d,0x3aa50abf, +0xbca02f93,0xbcbda47f,0xbd2b2eb7,0xbd4f5cdf,0xbd44d570,0xbd234664,0xbd0d8d00,0xbc52b237,0x3c27c24a,0x3b8683fc,0x3b01d85e,0x3c1a2c57,0x3bd82f84,0xbc0afb4b,0x3b863a8c,0x3c21416d,0x3aa51e06,0x3bfce891,0x3c5696df,0x3c6fb6d6,0x3ca843ab,0x3c463ce8,0x3bc5f389,0xbb1b6ead,0x3d472b60, +0x3d258cd3,0x3b88edb7,0x3c09c4cd,0x3c0037c4,0xbbf0f86f,0xbc98359b,0xbcb711ab,0x3b631e9f,0x3cc6ba53,0x3d6a1832,0x3d3a32a9,0x3d143b71,0x3cb73c59,0x3cbc54d0,0x3ca3359a,0x3c341100,0x3c88c5bc,0x3c2eb6ee,0x3c02a522,0x3c7ece95,0x3af893c1,0x3c000111,0x3c924f08,0x3c99ca05,0x3c299d87, +0x3c2c28c9,0x3bad8075,0x3c1143f1,0x3c078987,0x3c406f7b,0x3c80fdaa,0x3ca916dc,0x3cc843d0,0x3cd98eb9,0x3d0028ab,0x3d16c1c3,0x3cc9629b,0xbb20f4d8,0x3b8e5aee,0x3c17df18,0xbbd43624,0xbc9f5a2b,0xbcf83082,0xbce37464,0xbca02de2,0xbaaa7462,0xbb49d02b,0xbac3a05c,0xbb9f136b,0xbc39c0f0, +0xbc4a3a70,0x3aaa717f,0xbb4156c7,0xba9320cc,0x3bd7b4ca,0x3b620915,0x3c173f30,0x3c97b389,0x3c2e117e,0x3be47f18,0x3c33febb,0x3c2c04d0,0x3c4581fe,0x3b8cf95f,0x3c503dc1,0x3c8ac592,0x3c53595f,0x3c701d31,0x3c51872a,0x3c4c620e,0x3c6afa78,0x3cc1d832,0x3c28288f,0xba943fb9,0x3baaf943, +0x3b024c1a,0x3a5a87b5,0xbaf1d07f,0xbbeda68e,0xbb2c2369,0xba4e8e2e,0x3a9ab9b3,0x3bae532a,0x3c109b1a,0x3c408c4e,0x3c5d0b65,0x3c6eb9ec,0x3c5a5fa3,0x3c59390c,0x3c01bac8,0x3c8e02e7,0x3cd43f51,0x3c87ec21,0x3c3e8100,0x3c31135d,0x3c65c55a,0x3c1a0627,0x3c6c927e,0x3c029ea2,0x3ca58c50, +0x3c09cd5f,0x3c54e9fd,0x3c09e52a,0x3c2e4453,0x3c790a45,0x3ca2edb1,0x3c8845c8,0x3ca1b2f6,0x3b5782f7,0xbae07bf7,0xbb639464,0xbbfc4a61,0xbc2f7ece,0xbc66c568,0xbc8b746f,0xbc863bcc,0xbc854c75,0xbc85535f,0xbc7c8438,0xbc6278cb,0xbc2f5b0c,0xbc39029f,0xbc3b26d9,0xbc48b485,0xbc1f4a80, +0xbc274dbe,0xbc1c8ed0,0x3c531e0e,0x3b25598b,0x3c20f467,0x3c3f5d69,0x3c8e14c0,0x3c83199d,0x3c4f92cc,0x3c82a5d8,0x3cae8fb8,0x3c5ba979,0x3c307356,0x3c66e6f6,0x3c44dc0f,0x3c5e3369,0x3c49ecde,0x3b6c9218,0x3c999bf7,0xbb801fe3,0xba2c2b7c,0xbb0f3fbe,0xbb4a86e4,0xbb80374d,0xbb9cdfb7, +0xbbce0e0e,0xbbc8a27b,0xbbc3ee5c,0xbbb40bc6,0xbbb18068,0xbbb95255,0xbbbed166,0xbbb0653d,0xbb92bced,0xbb6e2cd4,0xbb78e654,0xbb1bc430,0xbc00e7e0,0x3c828257,0x3ce61664,0x3cea957c,0x3c715b5d,0x3d018c63,0x3d036a25,0x3d04e52b,0x3cfccdc8,0x3cdd1a9a,0x3cf6d060,0x3cf0580d,0x3ce71a50, +0x3cf3be1f,0x3c7976ab,0x3ccae34f,0x3cf48cfa,0xb940fb9b,0xbb45cf67,0xbd0ff83e,0x3b9953a6,0xbbb08666,0xbbce8a7f,0xbbce941f,0xbbec796a,0xbbdb9949,0xbba4567b,0xbb9e33bf,0xbb6bd72e,0xbaccf539,0xbac8ad98,0xbae9401d,0xbb5421e6,0xbb06093c,0xbad570fc,0xb9adb789,0xbad28f75,0xbb1b050c, +0x3befe561,0xbd0cc93a,0xbd2a286c,0xbca91c46,0xbce3628c,0xbd2a4798,0xbcc114e9,0xbcda17b1,0xbcdd33f5,0xbcbcad65,0xbcf67984,0xbcfbace6,0xbce7f24f,0xbd2a3c40,0xbcd92c53,0xbcba3c9e,0xbd36c0a0,0xbd10c09d,0xbc30ff57,0xbbf8da6f,0xbc6a3b34,0xbc5c338e,0xbc8e425f,0xbc85b758,0xbc4eff78, +0xbc67ff7a,0xbc3cc21d,0xbbd47181,0xbb4633d4,0xbada6021,0xbb921bc9,0xbabef100,0xbaa5761f,0x3b199722,0xbb94c03e,0x3adddd3e,0xbbc3e71a,0xbd033bd9,0xbbe5b438,0xbc850133,0xbc284f7c,0xbc640beb,0xbc5620de,0xbc16fd46,0xbc7e52eb,0xbcc34fcb,0xbc5901c0,0xbba262ea,0xbc0df145,0xbc31ee71, +0xbc9be117,0xbcc3ffbb,0xbc4d9a4b,0xbcda58b4,0xbc32e18d,0xbc2ec1d7,0xbcb79063,0xbcabb984,0xbd10e73b,0xbcfd302e,0xbc8f3278,0xbc9a39d6,0xbc4117dd,0xbb7e8077,0xba638914,0xba35c2da,0xbc1c9780,0xba83265f,0x390f2a31,0x3c0add48,0xba8c4bd1,0x3c139da7,0xbbd777e8,0xbcb70e6c,0xbbfddcfb, +0xbae7f59b,0xbb1af56b,0xbc3e9110,0xba77ff27,0xbc22812c,0x3b892260,0xbc8bf840,0x381ffb43,0xbc4d7066,0xb947d37c,0xbc1c1c11,0xbc557aba,0xbca567ea,0xbc9c19fc,0xbce7bd4b,0xbc779a24,0xbc5ca2f7,0xbcdc2fa7,0xbce8d8e2,0xbd5926b2,0xbd4d1c72,0xbd018559,0xbd19f0de,0xbce12124,0xbc5f97c9, +0xbb6217fc,0xbb58ebbc,0xbc488f50,0xb9955c37,0x3b5c7ee6,0x3c5d3f73,0xbb9f0065,0x3c2f61b2,0xba4ea16b,0xbcb405a8,0x3c6a4101,0x3aab1d2d,0x3c582098,0x3c30458f,0x3c0c8d47,0x3c292d42,0x3c29169b,0x3c1627e3,0x3af40df7,0x3bce5794,0x3c76c49b,0x3b8de89e,0xbbe12aa8,0xbc1ed2e4,0xbca889ec, +0xbd83071d,0xbd53646e,0xbd17faa5,0xbd3566d1,0xbd44ae2f,0xbcef4bec,0xbca0e6f7,0xbc80f6a0,0xbc1bf177,0xbb515b6a,0x3b90888b,0x3c823e28,0x3ca404d1,0x3c80b49f,0xbc441475,0xbc61d1fe,0x3d086297,0x3c9bfc29,0x3cc3c5a9,0xbc829e02,0xbcdd4afb,0x3c346055,0x3b96b021,0x3b9eb098,0x3b9d47ed, +0x3c81c9cc,0x3c46a335,0x3c0f7577,0x3be98825,0x3b9a54a9,0xbb828443,0xbbf7326e,0xbc8a82f4,0xbce7bc62,0xbce9cb83,0xbd3850c9,0xbd1ce585,0xbc970d7e,0xbc8e4613,0xbd106ee9,0xbcea6546,0xbd0ac114,0xbd12e49b,0xbce7843c,0xbd212cf9,0xbd22e1ac,0xbc994f31,0xbd0df9f8,0xbd245bf3,0xbd38d072, +0xbcab6be6,0xbc80a4ab,0xbcb6ddee,0xbcdc4667,0xbc40605e,0xbc975791,0xbc8d9388,0xbbfd8023,0xba83a1b9,0x3c9d8c68,0x3c842dee,0xbba3f8ad,0xb9d39f9d,0xbacb39b6,0x3ae15d26,0xbb448e28,0xb915a15c,0xbb52f113,0x3c17e66b,0x3bddf1d0,0xbcaf6072,0xbc93842a,0x3d1ccc4b,0x3d68cf67,0x3d4bb67a, +0x3c9a32c8,0xbcf054d3,0xbd2ea140,0xbd44e44f,0xbd2e36c0,0xbc8eaaab,0xba3bf100,0x3cbd6d26,0x3bdff9b1,0xbbd383ff,0xbcf2cb9d,0xbd0e845e,0xbd112e21,0xbcab4259,0xbc451dc8,0x3b47aa56,0xbc18686a,0xbc884432,0xba893891,0x3a447c62,0x3c1f4725,0x3c36bf7a,0xbac63c65,0x3bccddfc,0x3b6224c7, +0x3a6e5c88,0x3b8c7f9b,0x3bfaf281,0xbbcdc9b2,0x3c68c578,0x3d02e4cc,0x3d17d6c6,0x3d2949f6,0xbb783d9f,0xbcb6ce8d,0xbd66aa81,0xbd770262,0xbd323d23,0x3bc99495,0x3c977bf0,0x3c673b13,0xbd00ff18,0xbd6f57bd,0xbd601189,0xbd6f447c,0xbd53eeec,0xbd40c627,0xbd356592,0xbd2830c2,0xbcffc3db, +0xbcd27991,0xbc465df4,0xbc7c0ace,0xbc8d43b4,0xbba4e472,0x3b906c89,0x3b0c8dfd,0x3abfc58c,0xbbae8ea6,0x3b2817a9,0x3b06507c,0x3b1db282,0x3b85d91e,0x3c36e445,0x3cbce847,0x3caf71ee,0x3c7fd27d,0x3c00479d,0x3bb2f698,0xbc626e6a,0xbd321316,0xbd483448,0xbd5218cf,0xbd27201f,0xbd086439, +0xbccc5e38,0xbc17e45a,0xbc75cadb,0xbc44cda1,0xbbe37bf1,0xbc5a69ec,0xbc67eee8,0xbc8b1062,0xbb9b2ad1,0x3b8650cc,0x3c170c63,0x3aea34eb,0x3b2464aa,0x3b0b58b0,0xbc072efb,0x3abcd14a,0x3c2754e3,0x3c9222f1,0x3c95003f,0x3bd245e6,0x3c054bda,0x3c376005,0x3c0829a4,0x3bf85b27,0x3a14a61f, +0xbb0153a4,0x3b9b1a00,0x3bf4410b,0x3bf27811,0xbc3ac1cf,0xbc308eca,0xbcda93cc,0xbc8b49c3,0xbc4c099e,0x3b93e68b,0x3b938366,0x3ba43ec6,0x3be63c27,0xbc78c31b,0xbc722f0b,0x3b91669b,0x3bb62c0c,0x3b4e7d9c,0xbba62886,0xbc43f1bb,0xbc42574b,0x3b809da0,0x3c2e8989,0x3c49fcd4,0x3bf764a0, +0x3bdfa622,0x3bbf7757,0xbae15830,0xbb5f225e,0x3a1cf9e8,0x3bbafebc,0x3c266724,0x3c287ecc,0x3c4c2d0b,0x3c80bdd9,0x3c7be85f,0x3c080e42,0x3c42084c,0x3bb08dbc,0xb9b3af7c,0xbc48ed1d,0xbc52ecc5,0xbbaa21d6,0x3b539be9,0x3a8d064b,0x3b45961f,0xbb47cac6,0xbbde685d,0xbc12e97d,0xbc298c97, +0xbc67a865,0xbcabe29e,0xbc33bf50,0xb8c6367f,0x3c2e67ca,0x3c69a450,0x3c8a4dc5,0x3ca2919e,0x3c7bfab6,0x3c8b2c19,0x3c168170,0x3ac5f105,0x3b97b487,0x3bb9b6b0,0x3c193853,0x3c17e7e3,0x3c4ca44a,0x3bf85046,0x3c0c700d,0xb9a729c5,0x3b835b49,0xb9f95133,0x399a7800,0xbb6a04f1,0xbc11d409, +0xbc55efb4,0xbc1734c7,0xbabbf0d0,0x3a5cdbbf,0x3b136f8b,0xbae2036f,0xbb04d6ab,0xbb1fb810,0xbb2f317a,0xbba678cc,0xbb91202b,0xbb46b9d7,0xbb2815d6,0xbb483008,0xbbd4a2d5,0xbc261fb4,0xbc2294dd,0xbc16bb90,0xbbf8a18d,0xbbc3f644,0xbb14931d,0xbb175a0a,0xbc010a7a,0xba49dadd,0xbb9e9415, +0xb9c3109a,0xbad62a04,0x39c584aa,0x3b6926ee,0x3a2c35f2,0xb9d40212,0x3bb54094,0x3c30a1f1,0x3c273f84,0x3c136005,0x3bd90fb6,0x3b342ef3,0x3bb6fd96,0xbc543e94,0x3bd1a586,0x3b733c45,0x3b56d65d,0x3b432a98,0x3b08988c,0x3ad8f4e5,0x3ad17489,0x3b05b5cc,0x3af40ec4,0x3b061522,0x3ac6a3b4, +0x3af616db,0x3af49447,0x3b391f27,0x3b4d34bd,0x3b5b771b,0x3b57ef64,0x3b3d6c31,0x3bc77060,0xbc47bfb9,0xbc806635,0xbac05b30,0xbc1fb6ec,0xbc7f5d51,0xba3b2f87,0xbb026ff6,0xbab1b229,0x3a0411de,0xbb21f3bf,0xbb46e2b8,0xbb137113,0xbc58ca8b,0xbc0b9f67,0x3a5aa2dd,0xbc6c428a,0x3b8e6e0d, +0x3c843449,0x3cfd4238,0x3c269387,0x3c4c0b8d,0x3c7e7258,0x3c91fe9c,0x3cb1961a,0x3cb69354,0x3ca50ab0,0x3c91f60b,0x3c856394,0x3c81e66d,0x3c8123cc,0x3c81ac41,0x3c859d07,0x3c7538d3,0x3c73910f,0x3c805e68,0x3c810bad,0x3c6b9c0f,0x3c6caf75,0x3d0b5f35,0x3cce42b5,0xbc749193,0x3d0a9926, +0x3cda8c8b,0xbc425674,0xbc1aa167,0xbc137484,0xbc2a3dc0,0xbbbe2a68,0xbb949108,0xbb4026bd,0x3cd460fe,0x3d047431,0xbc6f5dc9,0x3cc1b76c,0x3be95729,0x3c504ac6,0x3bf385bb,0x3c88736b,0x3cb00e76,0x3d09dac5,0x3d107a48,0x3ce3979c,0x3cb14eff,0x3c941f81,0x3c99438a,0x3c91b085,0x3c93174f, +0x3ca5a3a7,0x3c956883,0x3c9cf918,0x3cb25983,0x3cb33de8,0x3c8bf39f,0x3cd8a884,0x3c657b46,0x3c93af10,0x3cd4b25d,0x3c81b178,0x3c7899db,0x3cb453fa,0x3c8af707,0x3cb966a0,0x3cbc8460,0x3ca85ec8,0x3c7e66ee,0x3c89427e,0x3c85c1ae,0x3c4190e4,0x3c506976,0x3c3fa8d6,0x3c469920,0x3ac3a414, +0xbba3a496,0x3c11158d,0x3cac893f,0x3d62f2b5,0x3d7f9db9,0x3d3ebeb7,0x3d06e07a,0x3cb0a122,0x3ca3fc8e,0x3c9afeda,0x3ca080cc,0x3cbfee75,0x3c894708,0x3c8f2347,0x3cb5e55b,0x3cada8cf,0x3c8eb872,0x3cc172f9,0x3ce160a0,0x3cb46990,0x3ca3761d,0x3c9312b7,0x3c8dfb6d,0x3c961a76,0x3c38d78b, +0x3bbf4111,0x3c63b378,0x3b5e27cf,0x3c37601d,0x3c7d8c9d,0x3c30dbe7,0x3c009018,0x3b841971,0x3bebb0c0,0xbc4116a4,0xbc722976,0xbc99b4c6,0xbb078b24,0x3c89e397,0x3d95f136,0x3dad7b3b,0x3d718999,0x3d14552c,0x3cb30c4f,0x3ca42a2a,0x3c9f5e78,0x3cb3f3ef,0x3cff62be,0x3cd7bc72,0x3cdcc163, +0x3d0ba75a,0x3d069ac9,0x3cb7e20c,0x3cf7bc81,0x3cb249e4,0x3c3c01ad,0x3ca258ea,0x3c4a8687,0x3be56103,0x3bd97e10,0x3c080a6f,0x3c01b6dd,0x3948d18f,0x3b8f70cc,0x3b3b7b64,0x3c292b0a,0x3b7fe092,0x3a55fa3d,0xbc82b07c,0xbc69443c,0x3ce8b87f,0x3cce9082,0x3c1b2f1f,0x3c658c48,0x3c3b1f73, +0x3cbd81c8,0x3cef2862,0x3d0ac554,0x3cc12fe4,0x3bf4cbbd,0xbc8e2795,0xbc3a48bb,0xbca33660,0xbd0f48a2,0xbc8c637f,0xbbacfae6,0xbbe67762,0xbaac4a32,0x3abab4bf,0x3cc080e9,0x3cc3b54d,0x3c55e291,0x3cac778b,0x3c4ef13b,0x3c64b374,0x3c917b0b,0x3c4313f4,0x3bfe77fc,0x3b8df37a,0x3beacdcb, +0x3b282f46,0x3c0dada2,0xbb43b349,0xbb4fa178,0x3ba8f855,0x3cbe6752,0xbc45cc56,0xbcad475e,0xbd2adf9c,0xbcb7b04f,0x394afdb0,0x3d4bb1cc,0x3d5887f2,0x3d1b7fd4,0xbc2c8ef7,0xbcdbaf4b,0xbc72b0be,0x3c040a94,0x3cd27dcd,0x3ccd5a85,0x3d06c0fa,0x3d0bf78e,0x3d255970,0x3d12fad8,0x3ccb5f0f, +0x3c843727,0x3c006dbe,0x3c24b9e7,0x3c8d476e,0x3ca25dee,0x3c8a1f2b,0xbb0860c0,0xbadddca2,0xbafeefaa,0x3b80dc3f,0xbb731908,0xba869ce7,0xbba8fe77,0x3c7587cf,0x3c9a8688,0x3bc25547,0xbc1b8deb,0x3d6bf8c6,0x3dadc4cd,0x3d8e9f51,0x3d971653,0x3dce386f,0x3d7b70ba,0x3d504c5f,0x3d7dad9c, +0xbc4a4589,0xbcdc2af8,0x3bec0228,0x3cd33f06,0x3d1d1587,0x3cd9d604,0x3c6a5213,0x3a29b955,0xbbac22d6,0x3b492d44,0xb8643965,0x3b660e96,0x3c040038,0x3bb18b14,0x3cb6259e,0x3c822bcd,0x3c1b4189,0xbab16572,0x3b43789b,0x3adc853d,0x39b6b457,0x3b640858,0x3bf7dfb2,0x3a9ea5fb,0x3c9d4f9c, +0x3cef48fc,0x3d52daa8,0x3d55f9d4,0xbb4dbbca,0x3c1b0e6c,0x3d4db2c6,0x3dc8795d,0x3e206500,0x3e120465,0x3ddc9321,0x3d493055,0x3c321c6a,0xbbf6a9ed,0x3c1246e1,0x3b8d2ce0,0x3c2aee4d,0x3868912b,0x3c4fe9dd,0x3c382e81,0x3ac0c9a1,0x3a8c5b32,0xba704e8e,0x3b0dd1b9,0x392a1a12,0x3c010b4b, +0x3c9dbfa4,0x3c2093bb,0x3c1a4fc4,0x3befc24d,0x3a8b821f,0x3b99381a,0x3be50ca6,0x3b184b95,0x3bd75832,0x3caa6d1d,0x3cc239e1,0x3ce24a8d,0x3c661626,0x3c204499,0x3c8e1704,0x3d8478fe,0x3dc24fd2,0x3da6ed0b,0x3d80bbc7,0x3d949c96,0x3d8fbbf8,0x3d916bec,0x3d5da9fb,0x3d64fd33,0x3dac6432, +0x3d7877dd,0x3d38e24d,0x3d019c64,0x3c3b678e,0x3b6caf06,0x3b93a50c,0x3be3e4ed,0x3c093c43,0x3c72a92d,0x3c71a595,0x3c74200a,0x3c370a9a,0x3c895fa1,0x3c8c26c2,0x3c328a46,0x3c502e57,0x3c61df65,0x3cc88908,0x3c84a389,0x3c6cbab8,0x3c6e5d8b,0x3c6eac91,0x3c8bc8e8,0x3c77cdc4,0x3d1b6ac3, +0xbb7ab9ce,0x3cc54878,0x3ceb5dc6,0x3cd47355,0x3cb68cd0,0x3cde98f3,0x3cd65888,0x3cd28302,0x3adb6650,0xbc062ba0,0xbbf6b643,0x3c63d973,0x3d0eca09,0x3d4484e1,0x3d57df62,0x3d360729,0x3cb2c696,0x3c95d1a1,0x3c749b1f,0x3c19f09e,0x3c4183b0,0x3c8d0cb1,0x3cbc5b5d,0x3c852b9b,0x3c053f10, +0x3bbef612,0x3c29e880,0x3c4ca34d,0x3c564630,0x3c83d9ed,0x3c8f9fa8,0x3c871c19,0x3c980080,0x3cbb000a,0x3c9e2273,0x3cb98b89,0x3ca3c877,0x3c5a1e90,0x3c8e9678,0x3cccf73b,0x3d003655,0x3cf2301a,0x3ce8946d,0x3cf51ad8,0x3cd94312,0x3cc0de75,0x3c86fc8c,0x3c59aacd,0x3c123c74,0x3bf51bfd, +0x3be8faa8,0x3c0f78f1,0x3c27411a,0x3c7090ce,0x3c731fb2,0x3cad032d,0x3ca0f590,0x3c2309a7,0x3b87b736,0x3c18c513,0x3c58947b,0x3c948a98,0x3c499da1,0x3c35be4e,0x3c234aaa,0x3c0cf621,0x3c1fef66,0x3c42dd68,0x3c4d5c9a,0x3c5c0c0a,0x3c5e33c3,0x3c8562ac,0x3bccfca0,0x3cd116e0,0x3cb95802, +0x3cbc7641,0x3cb9590c,0x3cb8f53d,0x3cb831b1,0x3cb76473,0x3c85f465,0x3c35cd45,0x3bdf29e5,0x3b69d99e,0x3a6c4409,0xbafaada3,0xba9709f2,0xba833f71,0xbaa27897,0xba9abb53,0xbb4364ba,0xb938c5e7,0x3adea76f,0x3c1fd951,0x3c8a5d26,0x3c67e461,0x3c939e60,0x3cc7dc21,0x3cc1549a,0x3ce58929, +0x3cdbaa59,0x3cdb0d5e,0x3cc2ebe7,0x3cbb60f7,0x3cb5cdc9,0x3c9aa209,0x3ca4a35c,0x3cb1fbd5,0x3cdcafb5,0x3cb40ac3,0x3c9ca4c5,0x3ca4ad08,0x3c9e7cc3,0x3ca1840a,0x3ca1bcb8,0x3ca88670,0x3c9a4fd8,0x3c92b06f,0x3c885e13,0x3c7301b7,0x3c538190,0x3c292643,0x3c3537ad,0x3c378eca,0x3c38270e, +0x3c3fbb8b,0x3c400ac3,0x3c2ec36c,0x3caa7bb9,0x3c8a8c6f,0xbb9a7522,0x3cd6f976,0x3cb14e99,0xbb1b2ff2,0xbaafa41c,0xba8e6841,0xba6d0061,0x3a82d297,0x3add47cd,0x3b143118,0x3ca89c3d,0x3cebad49,0xbb9619c4,0x3c9ae239,0x3ca8bd96,0xbcc99437,0xbccf61c3,0xbcde4ab2,0xbcb78ffa,0xbcce5666, +0xbcc34840,0xbce9cfbd,0xbcf2d86d,0xbcde2846,0xbcf4b924,0xbcef8761,0xbcd1ca14,0xbcd6e8da,0xbcd2784c,0xbcd001a8,0xbccb5839,0xbcc7f90d,0xbcc3d3f8,0xbcc6eb4a,0xbcabc7d0,0xbcce7ced,0xbcb8ef8e,0xbb562180,0x3d24ccbd,0xbce296eb,0xbbcea716,0x3d12ee83,0x3d06ecac,0x3d02a8ea,0x3cf58772, +0x3cee6715,0x3ceaf935,0x3ce72d62,0xbbf84658,0xbcfd23ec,0x3d093c80,0xbbb7a634,0xbaaa1b3d,0xbd0473f0,0xbcc7004c,0xbce3f3a9,0xbccf09bf,0xbd1b190e,0xbd2a3e24,0xbd0e2ba3,0xbd2d4e41,0xbd257de3,0xbd00ab28,0xbd0611c5,0xbd034c53,0xbd053811,0xbd04919a,0xbd0294c0,0xbcf5ad30,0xbceb2b9d, +0xbcc0a5cf,0xbcccbe10,0x3c397c8a,0xbc27cde9,0xbc678971,0xbbdb788b,0xbbae001b,0xbc6fccea,0xbc8d2eee,0xbcbdd837,0xbc938cbd,0xbcb5a67e,0xbc950fda,0xbc259641,0xbc69fd2a,0xbc01b634,0xbc87b812,0xbcdd526e,0xbce5baa2,0xbcf9be3e,0xbcebc843,0xbd05b0cf,0xbccd59e5,0xbd5dffea,0xbd835583, +0xbd46be72,0xbd84fdbe,0xbd78e72c,0xbd276008,0xbd3aca9d,0xbd291e7d,0xbd23757c,0xbd1873d3,0xbd10a64e,0xbd0b20c8,0xbcf6c7e5,0xbcd8ea4e,0xbc595299,0xbbab57d2,0xbb24419a,0xba3b16a3,0xbb89e3b9,0x38544c3b,0xbb15f2ee,0xba3f4e68,0xbc3b3251,0xbbf6447c,0xbbd57000,0xbafc6315,0xba03ac1f, +0xbb29494a,0xbc042865,0xbc779053,0xbcbd19b5,0xbd050a23,0xbceca22d,0xbca71844,0xbccb4045,0xbc7717ab,0xbd7c1e1e,0xbda0dc84,0xbd6f59e7,0xbdaa9cf0,0xbd9cbaba,0xbd36e345,0xbd540c90,0xbd556204,0xbd52187c,0xbd5993f2,0xbd4fa908,0xbd39dfd4,0xbd183c66,0xbcc34a1d,0xbc3696d5,0x3c28ff2c, +0x3bc8f7ac,0x3c410b87,0x3b8e9bcf,0x3bba165a,0x3c2cbe5c,0x3bbb062d,0x3bfa798b,0x39d49b02,0x3a5bacdf,0x3ae7e92f,0x3c4510db,0x3b20da7b,0xbc162f82,0xbc95623e,0xbd07993b,0xbc144711,0xbd52ff51,0xbd8dbf90,0xbd99da45,0xbd87925b,0xbd8011ef,0xbd6a4410,0xbd493f71,0xbd1566bf,0xbd1cb653, +0xbd84c2bd,0xbd3ebdd1,0xbd18947a,0xbcbc1676,0xbc795b29,0xbc9179e3,0xbca7c4ff,0xbce186a1,0xbd11e742,0xbd0f53a7,0xbc0f496f,0xbb83a1d3,0x3b97b580,0x3adf3b7d,0x3b81feef,0x3c7ef376,0x3be96162,0x3b21608a,0x3b0ecd3e,0x3a369988,0x38e81561,0x3a4e38c4,0xbc15b703,0xbc299420,0xbc30f68a, +0xbbde2894,0xbd42cb27,0xbd48903f,0xbd1d742a,0xbd073f7e,0xbcdfe72a,0xbcdcd291,0xbcd8cbed,0xbc74b643,0xbd41887a,0xbd3a34d8,0xbd34dd5d,0xbc1dc0a2,0xbb1ef1bf,0xbca3f7e5,0xbcf7087c,0xbd41e5d1,0xbd6d1b29,0xbd3dfc58,0xbd0f9443,0xbc6161b9,0x3bb23a28,0x3b7a94ce,0x3b81763f,0x3c2acf2e, +0x3c2c2722,0xbae23299,0xbb016f67,0xba998b3d,0x3a6b49f8,0xbbafe75e,0xbb584603,0xbc26fd47,0x3c2aff0c,0x3aa448e4,0xbc37c6ff,0xbd25a5a4,0x3d875452,0x3d5d6bca,0x3d008d1e,0xbc44b218,0xbdd066cd,0xbe1ce8db,0xbe2a1b7a,0xbdd6ce3d,0xbddf7adb,0xbdb2385f,0xbd9c8b6b,0xbd9700f5,0xbda0a682, +0xbdc11bdd,0xbd84f550,0xbd28f876,0xbca44052,0xbc1e9e9b,0xbbec9939,0xbca8c4bf,0xbc84d644,0xbb4ccb67,0x3c998695,0xbbc793bc,0xbc0ce0b7,0xbb68426f,0xbb83d0e1,0xbaebfda4,0xbb1cfc55,0xbb291ea7,0xb9ea3f49,0xbb915c22,0x3c0f6c0f,0x3cac53ae,0x3d6017b4,0x3d5657fa,0x3c18acd2,0x3bfda10c, +0xbd28bcd8,0xbd7e8f63,0xbdaf05d2,0xbd67903a,0xbd147ea1,0x3a95f64f,0xbd773d80,0xbd8e3b57,0xbd5d3a76,0xbd25d989,0xbcdbdc25,0xbce15d3d,0xbd161be9,0xbd3d60da,0xbd2f796c,0xbd33feef,0xbd003f8c,0xbc480a7c,0x3a0a4b66,0x3a53a38c,0x3c9b66d0,0x3bbfda60,0x3b5f8d46,0x3be4326f,0x3a5a5508, +0xb98cac8b,0x3adc4541,0xbb56dd91,0x39d38dc4,0x3c431f96,0x3cb11b53,0x3c86e941,0x3ca7f6ae,0x3c1aa998,0x3cd44c8c,0xbccf5054,0xbda90dc4,0xbda8ff88,0xbdb0f480,0xbd9f61ed,0xbd7af4ce,0xbcc972aa,0xbcf0634e,0xbcea9094,0xbd2d69c8,0xbcf55caa,0xbcfea9df,0xbd324b67,0xbd092f40,0xbccb438c, +0xbc53b6d3,0xbbe7a606,0xbc14d680,0xbc19b333,0xba003bba,0xbb4acc1c,0x3c1a5554,0x3c295f32,0x3c1e1071,0x3b887d61,0x3bf0cb4b,0x3c10f1bf,0x3c901c6a,0x3c22758f,0x3c0d6152,0x3ba0396d,0x3bf6e51f,0x3c2e5085,0x3ca10646,0xbab62a5d,0x3c974485,0xbccef102,0xbd2a70fa,0xbd0bee5a,0xbd12bde7, +0xbca5fb87,0xbc96cfad,0xbd0e623b,0xbc526c75,0xbac8030e,0xbb12b05a,0x3bbbb533,0x3c338257,0x3c7d04d3,0x3c71d526,0x3c1accc5,0xb9af6d16,0xbb7eca8a,0xbaabc025,0x3c445af7,0x3c6c14f6,0x3c22d3c5,0x3c16f5c9,0x3ba83baa,0x3b902d57,0x3acc7f4e,0x3b18968f,0x3bb3a95e,0x3c1dfca5,0x3ba7fbfc, +0x3bb4d940,0x3c089082,0x3c3d19d4,0x3bbbd2ae,0x3bd82b4e,0xbc20c8cb,0xbbf5c3b9,0xbc2bf9f1,0xbc2e478c,0xbc16563d,0xbc2959ad,0xbc4d5063,0xbc4784ed,0xbc45ccc2,0xbc4d149d,0xbc760755,0xbc75d62a,0xbc3c979c,0xbc071623,0xbb2d1cc7,0xbb7939e3,0xbb186242,0xba35e2e9,0xbb0f1520,0xbc0b5e22, +0xbc16882a,0xbad25586,0xbb316bd6,0xbb9cbdad,0x3a612db5,0x3c281a73,0x3c5b0bd6,0x3c686af6,0x3b3cd145,0x3b90d23a,0x3b4f355c,0x3c01ec26,0x3bbbcb84,0x3b877ebf,0x3b4ce8dc,0x3bb283cc,0xbb102303,0x3ce20099,0x39f3f9af,0xbaca842e,0xbbb53dbd,0xbc022312,0xbc36c885,0xbc6f1de6,0xbc927af8, +0xbc64652d,0xbc15e491,0xbbaaead5,0xba944096,0x3b11936e,0x3bad402d,0x3b8cb2d1,0x3b647d66,0x3b3b7952,0x3ad5d6fc,0x3b59e820,0xba8a3784,0x3b89034a,0xbb23e25b,0xbb8ee6b8,0x3af22a0d,0x38c3c018,0xbb9e07fd,0xbb99ec00,0xbb8cc74a,0x3ac87eb8,0xbad4d989,0xba2159e1,0x3bb8eced,0x3b881686, +0x3c2f9c33,0x3c0a2005,0x3b2670b5,0xbaf7845a,0xbbea617a,0xbb75c902,0xbbc6b06f,0xbbe7598f,0xbc037b13,0xbc0fc7b3,0xbc32d625,0xbc03abce,0xbbdd92f8,0xbbb17dec,0xbb8d1fd4,0xbb51e518,0xbabe20f3,0xbb148933,0xbb2996b0,0xbb3ee0e9,0xbb60337c,0xbb46a496,0xbb93ba63,0xbba3173d,0x3bc2393a, +0x3cf64448,0xbc06a385,0x3bb7b058,0x3d0af01f,0x3d08fcef,0x3d057545,0x3cfc0545,0x3cfc112b,0x3cf75726,0x3cec357d,0x3c00fdc3,0xbc02e647,0x3d09bf23,0x3c3df76a,0xbbf4929e,0x3cd879fe,0x3c1daf8e,0x3d02d934,0x3c9b3043,0x3cb04017,0x3ca19513,0x3cd8a483,0x3cee0b4e,0x3cf8ab62,0x3ce97902, +0x3ce4b141,0x3ce85d8c,0x3cdb02fd,0x3cd86516,0x3cd859e4,0x3ce098b3,0x3ce2e425,0x3ce40da2,0x3cdff449,0x3cc34c39,0x3d08e20e,0x3c3b7656,0xbc491d15,0xbd47051d,0x3ca04be3,0xbc214c52,0xbd37c36e,0xbd3badc3,0xbd3af17c,0xbd2c24ff,0xbd331901,0xbd30b4c6,0xbd2552c9,0xbc1872f9,0x3cb5d857, +0xbd442880,0xbc843c4c,0xbcd83322,0x3ce33a02,0x3c6bb16a,0x3c6fcf32,0x3c8341e3,0x3d0ee007,0x3d2d9afa,0x3d30bf55,0x3d1c890b,0x3d0ed7b0,0x3d136705,0x3d024993,0x3cfe8f11,0x3cffacca,0x3d0d8592,0x3d120d51,0x3d1318ff,0x3d07475d,0x3d015c1a,0x3d024a15,0xbc84ec7f,0x3c8c10f1,0x3c8139ac, +0x3c218ef5,0x3bba19f9,0x3c91eaff,0x3c82a1a6,0x3c8cfaaf,0x3bffea6c,0x3c97b14e,0x3ca8c56d,0x3c5001c4,0x3c80b36b,0x3b06ea4a,0xba031904,0x3c9d9064,0x3b174298,0x3ca93858,0x3c3eb6b8,0x3b7df579,0xbb16bbbb,0x3d075de0,0x3d4fccda,0x3d6eed92,0x3d5572c1,0x3d3e7455,0x3d462355,0x3d1b6aed, +0x3d15c1f2,0x3d1f8fc8,0x3d315c17,0x3d344d71,0x3d385a18,0x3d162745,0x3d1f9736,0x3cbbbfd8,0x3c458966,0x3c7add1c,0x3c63ffda,0x3c88281b,0x3bd34a42,0x3c941150,0xba21ae85,0x3c458656,0xbae0f312,0x3bf9adc7,0x3ae2f197,0x3c3bc2b2,0x3bcac675,0x3b90f323,0xbbfc3693,0x3c12de60,0xbb0da2b0, +0x3cb6a18b,0xbaa52b4d,0xbc3ee38f,0xbc31a762,0x3d2d6f24,0x3d9409d7,0x3da6d090,0x3d8a0a68,0x3d6764b5,0x3d784a8b,0x3d3f8251,0x3d386d2d,0x3d498d8b,0x3d681693,0x3d7218e0,0x3d6f7562,0x3d4a79b2,0x3d30e279,0x3cf4dfa8,0x3c2b675b,0x3cd7c99c,0x3c4254cb,0x3ca1c3df,0x3c8066ef,0x3c9649a2, +0x3c282592,0x3b87078f,0x3b76693a,0x3b180c1e,0x3bfa4039,0x3c6345d8,0x3c44ba54,0x3be7b3e1,0xbbf46549,0x3c2580e3,0x3ba90b25,0x3c5e0042,0x3cb3903c,0x3c64ac70,0x3bdda99b,0x3cf5213c,0x3d1ebc54,0x3d3204e4,0x3d71240e,0x3d59a4cc,0x3cca4f85,0x3c82b1d6,0x3c380255,0x3b99119c,0x3c9cf7d3, +0x3c9ecd7a,0x3c38bccb,0x3c794957,0x3cfa9a11,0x3cb80fb8,0xbb5078af,0x3c8a40d3,0x3c664100,0x3c23a912,0x3c074ace,0x3c6951df,0x3bfe2e08,0x3b5f8bf3,0x3b8cde2a,0x3bb666f6,0x3b1dd71c,0x3b2c6d69,0xbac59938,0xbbe87262,0xbc18d8a8,0x3c37c811,0xbcc2b702,0xbc4fab91,0xbb473509,0x3c15d62b, +0x3b633eb0,0x3c272ec3,0x3c75d7b8,0x3c9f0b53,0xbb31cdbf,0xbc8bbba0,0xbd1e149c,0xbc98bd02,0xbc0ef0b1,0x3c03acbf,0x3caeca5e,0x3d1be915,0x3d85e7e8,0x3d3da4c5,0x3d167301,0x3c2afd7d,0xba88db91,0x3be0434e,0x3c591a4f,0x3c9f35bb,0x3c9d6d28,0x3b9567bf,0x3a5559c4,0x3b066e3a,0x3b4e5d57, +0x3b32459a,0x3b2ea19e,0xbb432dfa,0x3c0b007b,0x3c850c54,0x3c0f982d,0xbb42537d,0x3d4495bc,0x3d3cd220,0x3cf08434,0x3c389b87,0x3ce33da4,0x3d00e646,0x3d41c352,0x3dadef24,0x3d0841d1,0x3c5f55fc,0x3b6d2cc7,0x3d37b4a5,0x3d783b0c,0x3d4dd004,0x3d4d0678,0x3cdeafcd,0xbb0be21b,0xbb9abd79, +0x3bfd680a,0x3c27fa42,0x3c2d07d8,0x3c9174d1,0x3cf3a72e,0x3b1e2116,0xbba8677b,0x3a97fbf6,0xbabe9788,0x3b853350,0x3b178dde,0x3a1815c2,0x3ade3e2d,0xbac596d5,0x3b28056c,0x3c717657,0x3d31bdb8,0x3d37fde6,0x3c1ad9d5,0x3c602e1d,0x3d7e92af,0x3dcb6878,0x3e28abf4,0x3df9e267,0x3d9c8821, +0x3d1dbfbf,0xbcc692cd,0xbd1547e3,0xbccfd5d3,0x3c113df3,0x3c8d63e5,0x39eb0dc8,0x3c388d76,0x3c89e7b8,0x3cbf0c2d,0x3c9324da,0x3c2516ae,0xb82b371b,0xbc4d6fcb,0x3ade3777,0x3cc7b7e9,0x3bbaa8d2,0x3b79b367,0x3c0acc99,0x3b49e898,0x3b0280b6,0x3af878a1,0xbae538e8,0x3b0a1e16,0x3c9d39a3, +0x3cb60f91,0x3cff0494,0x3cc7f70f,0x3ca7fba8,0xbc56de57,0x3d060b59,0x3dac971a,0x3d99a263,0x3d8a8145,0x3da55e85,0x3dc7e54b,0x3dda7f18,0x3d9e7cc0,0x3d6bbf05,0x3d181664,0x3cb5f238,0x3c5f7ad0,0x3be855f7,0xbc172957,0xbc9e5259,0xbc7b6d06,0xbc824eac,0xbbb31576,0x3b8bf1a8,0x3aedecc8, +0x3c4bb13c,0x3c50023e,0x3c1f104d,0x3c240c5c,0x3c1979c4,0x3c211b3d,0x3c6bbf7d,0x3c98059b,0x3ca2d650,0x3c82cc6e,0x3c2e7863,0x3c0e0899,0x3c168add,0x3be277d1,0x3c8f68f5,0xbcdd48d8,0x3c23d246,0x3cd99770,0x3cad6c02,0x3d048786,0x3d167c69,0x3d22b9db,0x3d54c502,0x3d0b4c03,0x3cb07b95, +0x3c2a6a86,0x3ce0c07f,0x3d1afc98,0x3d3fc403,0x3d3faffc,0x3d3c90a3,0x3d1a3143,0x3cf000d6,0x3ca2313e,0x3bd3f352,0x3bf3ffe8,0x3c29db9d,0x3bdddced,0x3c80482b,0x3c7754d0,0x3c1517e5,0x3c096e86,0x3c0c6b74,0x3c8168d6,0x3c2c976b,0x3c36f78d,0x3c7fa694,0x3c7e5bb8,0x3c961471,0x3c57fe39, +0x3c6447b1,0x3c2742b4,0x3c8ab7ae,0x3cc2e9eb,0x3cab51ac,0x3cbe3bbb,0x3cd23ffb,0x3cf802d5,0x3d12e3ef,0x3d00a1d0,0x3ced52b6,0x3cba0cea,0x3c7197bc,0x3bbf619f,0xbb099730,0xbaa0aa8d,0xb98cf9d2,0x3aeeb0fa,0x3b06f3d8,0x3bb76075,0x3b3bba14,0xba8dbd52,0xba79fb7e,0x3a4678f9,0x3b90a245, +0x3ba14c62,0x3c511d52,0x3bd6870d,0x3c50c462,0x3b30b35e,0x3c28b1e2,0x3bc7ee82,0x3c3f5587,0x3c06d5e2,0x3bb2f3e2,0x39e38715,0x3c10ad35,0xbbfb877e,0x3c8d2303,0x3c9a32a4,0x3cad66a8,0x3cc11411,0x3cd6670a,0x3ce2b516,0x3cf34811,0x3cce3999,0x3cb13ec5,0x3ca021e4,0x3c8305e8,0x3c5d29ec, +0x3c229489,0x3c30e585,0x3c2734ad,0x3c22cb85,0x3c1a82db,0x3c0535a5,0x3c31bfcc,0x3a87a844,0x3c58d82e,0x3c7d9787,0x3c39fb40,0x3c3179e9,0x3c901006,0x3c981d8d,0x3c961be2,0x3c415da1,0x3c91db38,0x3c8b3516,0x3c43a908,0x3c59cf41,0x3c06e917,0x3c2a4a24,0x3c8947cd,0x3c33f206,0x3cc3a658, +0x3c9f4db7,0x3cad61db,0x3cb101c1,0x3cb4f39d,0x3cba8143,0x3cc8f705,0x3cba6f47,0x3cb042a4,0x3ca24b12,0x3c9a166a,0x3c919c61,0x3c84dd2f,0x3c871b6d,0x3c8762e4,0x3c87942a,0x3c8c5316,0x3c8723c8,0x3c9f9315,0x3c2a616b,0xbb1bc5f0,0xbcaf0b14,0x3c7f711b,0xbaa42236,0xbcbcbf01,0xbcbbc848, +0xbcafa27d,0xbc95b3f5,0xbca084cd,0xbc98277e,0xbc8e1db7,0xbb1ac4df,0x3c7f63f7,0xbc99c60a,0xbb83d5b7,0x3cbebc97,0xbca3e002,0x3bac3b57,0xbce22e1a,0xbc8d61dc,0xbc9f653c,0xbc807527,0xbca1afbf,0xbcaaac85,0xbca7879f,0xbcb3308c,0xbcb55154,0xbcb0b669,0xbcb33d81,0xbcb34d68,0xbcb31888, +0xbcaff626,0xbcada750,0xbcad8795,0xbcaae0e6,0xbc8ebfbc,0xbce03e1b,0x3bf6f4e4,0x3ceed7bb,0x3d477ee9,0xbac321fa,0x3cda5d61,0x3d3e6a7d,0x3d3dbd46,0x3d3aa0fa,0x3d25e769,0x3d3bb0ef,0x3d3ef211,0x3d3a7222,0x3cce093f,0xbbdc9e8a,0x3d3284e7,0x3cf28bbd,0x3cee2c35,0xbcac6ffd,0xbcb28077, +0xbc977667,0xbc26d6c5,0xbc9dadd8,0xbcbe8b10,0xbcc17628,0xbce466da,0xbcee2a20,0xbcdd7722,0xbcdb3076,0xbcdc6b79,0xbce49aea,0xbce73c60,0xbce47dad,0xbce6f843,0xbcc71c15,0xbcc558e4,0xbc897966,0x3d084ffa,0xba9553bb,0x3b480b8f,0x3b9416a5,0x3bfed9ce,0xbb078fa7,0xbc01c7e8,0xbc0987a5, +0x3afe4819,0xbc1375c0,0xbc3ee1d4,0x39cd0661,0xbb63e564,0x3be1ad72,0x3a92793d,0xbc85f3a0,0x3b98dc42,0xbc54c1d0,0xbcfde1be,0xbcbb05dc,0xbb66294e,0xbc99949c,0xbcdf3e14,0xbce50e0e,0xbd138c56,0xbd1e138a,0xbd0d952a,0xbd12e2c8,0xbd1275db,0xbd109f41,0xbd0c39f9,0xbd06719f,0xbd097ecd, +0xbce05b96,0xbcf516a4,0xbb8f2b0c,0x3c71a7c1,0x3c196ed9,0x3bee84f1,0x3b88bc86,0x3c64a1d4,0x3aa0bad3,0x3c02616e,0xbc5ded8c,0x3bb93ee9,0xbbbdb39a,0x3c1d00a0,0x3bbe24a3,0x3be80519,0x3b633945,0x3aed2a61,0xbb1e217d,0x3b89dbe9,0xbc81c015,0xbd0d0898,0xbc8dd91f,0x3c8b65dc,0xbbc38601, +0xbcb28a90,0xbcebb515,0xbd306904,0xbd4fa1d2,0xbd2a39a6,0xbd1ac40b,0xbd2107e9,0xbd2e986c,0xbd3b519d,0xbd391c66,0xbd35f847,0xbd0bf131,0xbcfb9d76,0xbbc9bb85,0x3cbd23a1,0x3b3f6b96,0x3c9cdb89,0x3ba75a5d,0x3b7e9a15,0x3c024c6c,0x3b22de50,0x3b79aa60,0xbbb1419d,0x3a71de59,0x3ab0b829, +0x3c1737bf,0x3bc8345b,0x3bc178e2,0xbc28d63d,0xbc5be1d9,0x3ce2a5c9,0xbd4de30f,0xbd785bc0,0xbd82a421,0xbd9bb626,0xbd8aab31,0xbd687c3e,0xbd5ffc80,0xbcc97746,0xbca5fd44,0xbd43ffcb,0xbd6889fb,0xbd499ad1,0xbcb4ff7f,0xbbd9b720,0xbbd61b25,0xbd0d16e5,0xbce89db1,0xbd17c190,0xbc4102f1, +0x3c5d7126,0xbc0af460,0x3baef858,0x3b39de2a,0x3c09726d,0x3c6800f8,0x3b269d63,0xba67587e,0x3b5a7b78,0x38854a85,0xbb7f8c29,0x3b7a82e9,0xbb62bcce,0x3abad48e,0xba5a7441,0x3ccf0308,0xbcd6818b,0xbd4893ff,0xbd0919a6,0xba284141,0x3cdd8086,0x3c7f7dce,0x3c6b30d9,0x3cebe4cc,0xbabf61d4, +0xbcb5a1ed,0xbd0176a4,0xbc96c62b,0xbc4ad932,0xbc0df0ad,0xbce6332e,0xbd184a63,0xbd33e6e3,0xbcd3d7d5,0xbcd19d27,0xbb54cb23,0x3c8376a7,0x3c35caa0,0x3c923b0c,0x3b09e11e,0x3a797c4b,0x3b284642,0xba56e3cc,0x3a666b4d,0x3a9898be,0xbae9a788,0x3a3ebaf4,0xbbf5ee1b,0x3be2b9e4,0xbaf10fab, +0x3b1636c6,0xbd05bf9e,0x3d53a24d,0x3c4f004f,0xbc37f658,0xbd46c942,0xbdf06ffe,0xbde9b6ac,0xbde88da7,0xbdc57e99,0xbdb186ba,0xbd8fe6aa,0xbd8bd1af,0xbd93d9e3,0xbd8f4ea5,0xbd5d9289,0xbd1fa994,0xbcba43f2,0xbc046331,0xbc072fcb,0xbc975c51,0xbc38255c,0xbb400529,0x3b069b91,0x3cf40760, +0xba923794,0xbbecd7d7,0x3b81eda0,0xbba13e74,0x392c49aa,0x3a6b6416,0xbaa6585c,0xba5c0b7f,0xb9daf6e0,0x3b1ce04c,0x3ba8b97c,0x3d31abf3,0x3d2dce57,0x3cd1eaaa,0x3d21d29f,0x3d379a40,0x3d254d35,0xbbc2f11f,0xbc356c10,0xbc9b720c,0xbcb0135b,0xbcb7ce0a,0xbc606de4,0xbc22cf8e,0x3c255a6e, +0x3c219518,0xba132d94,0xbc98b5e6,0xbced9248,0xbcff3cfb,0xbcf9c27d,0xbcec6367,0xbc4a337e,0x3a67efc9,0xbb463c6e,0x3c7ffb5d,0x3aecfd41,0x3a2c5f6a,0x3bb5a05e,0xba9f4874,0x3a87e477,0xb76e655c,0xbab368bd,0x3a044c3f,0x3c00578d,0x3c99b675,0x3ca23c35,0x3d00a2b4,0x3c91859e,0x3d22141f, +0x3c45aea8,0xbcfae7a0,0xbce313b8,0xbd0aa53a,0xbc8e6af7,0xbafd2de0,0x3c7f8bb8,0x3c682ae9,0xb89f443e,0xbcee9147,0xbcceae00,0xbcc05662,0xbc7fcbba,0xbc42e9f0,0xbc49589f,0xbcb34e52,0xbc440128,0xbc460a3b,0xbc2bad6d,0x3b8c6540,0x3988f10f,0x3c3c52f0,0x3beb3225,0x3b915ea5,0x3b493a29, +0x3c399a23,0x3c38644b,0x3c81ac14,0x3c61dd00,0x3c90c48c,0x3cab46aa,0x3c87c696,0x3c8525b3,0x3cc74dc7,0x3c8ba401,0x3d0fabca,0x3c21405c,0xbc29564f,0xbbd5be2a,0xbc23c584,0xbc7d8157,0xbca58b90,0xbc88927d,0x3b3fac43,0x3c7c89eb,0x3cb609b9,0x3c85f4cb,0x3c6c9063,0x3cb5384f,0x3c909e42, +0x3c81c6cd,0x3c509320,0x3be34e0f,0x3baf94ab,0x3c4c46e3,0x3c2f1776,0x3c13acc2,0x3c4e361d,0x3c3fd9f7,0x3c3a6d6a,0x3c20f912,0x3ba2d32b,0x3bb70f5b,0x3a5a0329,0x3ac7039b,0x3b572c80,0x3bc8b168,0x3c339a5d,0x3c47573d,0x3c8f3c80,0x3c4d6121,0x3c0c8053,0xbb95a799,0xbc5e4a82,0xbc296e91, +0xbc51a332,0xbc24283a,0xbc132cab,0xbc393661,0xbc0ffb83,0xbc158782,0xbc01c284,0xbc1260e1,0xbc13d7a4,0xbc198eac,0xbc36e07e,0xbc465618,0xbc626658,0xbc4ee741,0xbc7f054d,0xbc34e8dc,0x39c0579f,0x3afc0c3e,0x3b903562,0x3b56a7b1,0x3bf62e6d,0x3ba487b5,0x3c414364,0x3b8770d3,0x3c7b4d05, +0x3c086d31,0x3c63763e,0x3c235c7a,0x3c2a4218,0x3c432e2c,0x3c829753,0x3c006358,0x3cd2546c,0x3bbb3647,0x3b33a5b1,0x3aa72b0c,0xbb3a6474,0xbbcf7fd7,0xbc25efd7,0xbc57bdad,0xbc2779e5,0xbbe62000,0xbb7efd54,0xba699c5b,0x3afeaf3b,0x3ba4c25f,0x3b95010b,0x3b85a658,0x3b423618,0x3b2a5792, +0x3b039878,0xba74854d,0x3c4be4ee,0x3b226f14,0x3bab7223,0x3c06ec40,0x3c3977ac,0x3bf1b6fb,0x3b8baf4e,0x3bbefafc,0x3c36d747,0x3b5e5e4e,0x3a758def,0x3bb1b52e,0x3b97bb8c,0x3c273107,0x3c2caad7,0x3b7841fa,0x3c551de3,0xbb10915a,0x3a6dba29,0xba9b44cd,0xbae57862,0xbb24c479,0xbb5100ee, +0xbb9fda4a,0xbb7a4b52,0xbb6e3ce6,0xbb5658dd,0xbb2ed781,0xbb021017,0xba330926,0xba9d7f53,0xba8f3806,0xba56daca,0xba95174a,0xb9643775,0xbb77e3f6,0x3c25bbcf,0x3cb0558c,0x3cfabcaf,0x3bf8b4dc,0x3cbc938f,0x3d0ee9f6,0x3d0ec223,0x3d082c23,0x3cf2d9a7,0x3d0201d1,0x3cfedd33,0x3cefb199, +0x3cb73919,0x3bfcb871,0x3cee85d4,0x3cc99fbf,0x3a91f346,0x3c0e40fb,0xbc97d76e,0x3c91ecc9,0x3bacdf28,0x3bb77ea3,0x3bab418f,0x3ba1a6c7,0x3bc8afcb,0x3c212b27,0x3c125ff6,0x3c15951c,0x3c1c0cc6,0x3c090174,0x3c033f65,0x3bfbc920,0x3c171686,0x3c1de039,0x3c1d07c3,0x3c19d613,0x3c02dcb6, +0x3c8ff2d0,0xbc91540f,0xbcfc1e07,0xbcf26100,0xbc2d3410,0xbcf7d631,0xbcf39c82,0xbd06a377,0xbd08203b,0xbceeaafa,0xbd0b6998,0xbd0c6464,0xbd050b5d,0xbcf30f22,0xbbfba6ee,0xbcff8d34,0xbd0d9231,0xbd06d6c8,0x3bfba8cb,0x3ba07da3,0xbaad8867,0xbab82070,0xbba3879a,0xbac0d035,0x3c0aa268, +0x3c10e716,0x3c28f07a,0x3c28f646,0x3c111c3f,0x3c0c9cfb,0x3c05b653,0x3c49c9fd,0x3c500f76,0x3c4a581d,0x3c1419d7,0x3c57a056,0x3c07c55c,0xbcc59ee3,0x3b4647ff,0xbb950b21,0xbb0fbc7a,0xbbcddfd4,0xbaf3b68c,0xb9d20283,0xbb920d3a,0xbc52a1a6,0xba95eb34,0x3bb61ddb,0xba945e07,0x3a885a25, +0xbc165730,0xbc8350b5,0x3a6426aa,0xbc913816,0x3ba141a5,0x3b85bec6,0xbbf86313,0xbb672ba8,0xbc970dd0,0xbc42955f,0x3c460464,0x3c25e205,0x3c5ae71a,0x3c630d13,0x3c0185e6,0x3bca6dc6,0x3b573414,0x3c5c52e6,0x3c764008,0x3c870dad,0x3c3affc6,0x3ca24240,0x3bd55da7,0xbbe1d74c,0x3b08d2bb, +0x3b5e1279,0x3ba6159b,0xbb903281,0x3b9dd6f9,0xbc13e13c,0x3bad41a2,0xbc58d43c,0x3b5e95ae,0xbbc7b07d,0x3af2ae96,0xba42e244,0xbb5719fe,0xbc820604,0xbbf4ef3f,0xbcc51aa0,0x3a8a3520,0xb9f8afab,0xbc75e9c8,0xbc717947,0xbd272e63,0xbd0345d1,0x3b792793,0x3bb628a2,0x3c4888c5,0x3c72d2b9, +0x3c2ebf4d,0x3bdf0ce8,0x3b4d359f,0x3c8e1fb4,0x3ca913ba,0x3caa6427,0x3c3c5da1,0x3cac18c0,0x3c66785a,0xbac22392,0x3ccff34f,0x3c03286b,0x3c7ef21a,0x3c579f9a,0x3c8cc903,0x3bf2204d,0x3af2397c,0x3b8ff410,0x3a818b83,0x3c0bc7b9,0x3c3bba83,0x3c27b4c9,0x3a9ab9b7,0xbc754086,0xbc56e314, +0xbcbcb74f,0xbd05e6b0,0x3af422f5,0xbc338fb3,0xbc9f485e,0xbaed5a1e,0x3c1862f2,0x3c1d0f95,0x3d241d11,0x3d2f1908,0x3ca9b976,0x3c609887,0x3b8f2da2,0x3ba3f7f6,0x3b3aa7d6,0x3bb0d6b8,0x3cd794f3,0x3cc3bd42,0x3d0a9d66,0x3bcc501c,0xbc73073e,0x3c45f4b2,0x3b936665,0x3c080c7f,0x3bde9e0a, +0x3c2b08e4,0x3b429c26,0xb95a7987,0x3bb0c98c,0xbbb4fb61,0xbbde835c,0x3b127a48,0xbb804b96,0xbc4d7b12,0xbc888b11,0xbbadf4a3,0xbd161f83,0xbc5ef1aa,0x3c9bf149,0x3c5898a6,0x3c142b67,0xbcb76847,0xbd1adfdb,0xbd034ed4,0xbc7f4c08,0xbc1f392a,0xbc8047a0,0xbcf6c389,0xbd000f30,0xbc8140e3, +0xbb5f115b,0x3bbccb18,0x3c4c86f7,0xb9e85c7f,0x3b913a7a,0xbc16486e,0xbbe76125,0x3b91443f,0x3c5ae1a8,0x3c1cf707,0x3bc7283d,0x3b3c1de1,0x395f3478,0x38f2800c,0xba207b26,0xbb051912,0xbb5645e3,0xbb5beaab,0xbba4f871,0x3a62881c,0x3add45ee,0xbc3c40dc,0x3cbaec31,0xbc1c11d6,0xbd3450e2, +0xbd8fd10b,0xbdc15b9a,0xbd719336,0xbcc3cc03,0xbbc83b35,0x3cfb4d3b,0x3cf9519e,0xbae5f6bf,0x3bb4e049,0x3c4b27b5,0x3cec49ed,0x3cc2aa58,0x3c615315,0x3a873e01,0x3a6361a5,0x3c5cb7c1,0x3b95f222,0x3a855715,0x3c466bd7,0x3c8ef985,0xbb3ce83f,0xbbe4b40f,0x3b82afe8,0xbab2f63f,0x3bac2b8b, +0x3b07896b,0x3a6fc978,0x38c3f1f3,0xbabe13b7,0xbbef49aa,0x38842fe0,0x3c4f153b,0x3cc888b6,0x3cd32a3c,0x3cf43678,0x3d627fbc,0x3d5fb53a,0x3d4d656c,0x3cefa2a4,0x3b09d9b9,0xbca97467,0xbd06829b,0xbd160aa5,0xbd35278a,0xbcdfea76,0xbc99991e,0xbb9cbd3c,0xbbf8f71f,0xbb5f0ec3,0xbaa30752, +0xbb1674e3,0xba802963,0xbc0f3ade,0xbc907358,0xbb8ed3f5,0x3c5d1946,0x3ac7e86f,0x3aba6ad1,0x3bc9db5e,0xb7f4c100,0xbaef1b45,0xba338f3a,0x3af64753,0x3bb6742e,0x3c7d348f,0x3c88989a,0x3cc9583e,0x3d009755,0x3cde7fda,0xbc9aed1c,0xbcb56aa5,0xbbe3cfd5,0xbb90a9f1,0x3c5cb9b8,0x3cfaead6, +0x3d3da82d,0x3d513e76,0x3d01428c,0x3ba557f2,0xbcfc453e,0xbd1962a5,0xbd19138e,0xbcc0f6ca,0xbc927574,0xbc4a10a8,0xbc74cb37,0xbc44b1d8,0xbb951b25,0xbb6744b4,0xbbec8aa9,0x3bde1217,0x3c542023,0x3bcef76f,0x3b8456cf,0x3b1f9d2b,0x3c3655cc,0x3c87dbc5,0x3c1181c6,0x3c662cef,0x3c4c08aa, +0x3c6b9857,0x3c183255,0x3bc47200,0x3bd0213f,0xbbc47a6d,0xbbd5c864,0x398a0c4a,0x3c89a3d9,0x3c3da297,0x3c50c87e,0x3c5b573b,0x3cbacf5b,0x3d20767e,0x3d05442a,0x3d0d3c09,0x3d1b5fb3,0x3cda5d0b,0x3c89727c,0x3c4cb760,0x3c3354e0,0x3c5c7cbe,0x3ca5d1be,0x3ca73a3c,0x3c90e003,0x3c14f713, +0x3be092e5,0x3ba07085,0xbae46a66,0x3bb8931f,0x3c41aba0,0x3c4e187b,0x3c20b530,0x3baceafb,0x3b887792,0x3b5193f2,0x3b594c33,0x3bdfa6ca,0x3c05e4a4,0x3c260f7c,0x3c3147d3,0x3c1972f2,0xbbf3a0aa,0xbab883f6,0x3b83e378,0xbad814fc,0x39355298,0x3b38b469,0x3baa3301,0x3c041ff0,0x3bb6f458, +0x3b564111,0x3a546682,0x3a8b3001,0x3b2a8413,0x3b131484,0x3b48c9b2,0x3b025cee,0x3b1890d3,0x3b0cc5b4,0x3c1afe34,0x3b50e5a1,0xbbb46405,0x3b8a5086,0x3c1af609,0x3bfc6fab,0x3b3ec445,0x3b699077,0x3b18c106,0x3c14b43d,0x3b61dbe6,0x3c258b7e,0x3bc6f390,0x3c0f6f61,0x3bb3118a,0x3a6197a0, +0xbb710dc6,0xbaea8d2a,0xbb4ad9e6,0x3bfc3698,0x3c31a779,0x3c3e93b5,0x3c569ddf,0x3c66c2fd,0x3c78b849,0x3c839c6d,0x3c80991e,0x3c82415c,0x3c80311f,0x3c7578c0,0x3c538cd2,0x3c29253e,0x3c26f2e0,0x3c286fbe,0x3c2df51c,0x3c21b0ee,0x3c236733,0x3c1f36f0,0xbb0e85f6,0x3bb9976f,0x3b0de0cf, +0x3b256e42,0x3a80d41a,0x3b7ccaab,0x3bc4e782,0x3b33129b,0xba885936,0x3b85b9e7,0x3be0deeb,0x3b5daba8,0x3ba29406,0x3b30dc15,0x3b46896b,0x3c082d48,0xba21c70c,0x3c785bef,0x3c4b628d,0x3c55616b,0x3c5eb6f5,0x3c625038,0x3c693758,0x3c774b2b,0x3c6cde58,0x3c630304,0x3c59661e,0x3c4f198e, +0x3c4db6e7,0x3c4c4574,0x3c4eca86,0x3c4b3a31,0x3c49563a,0x3c4a45bb,0x3c3d4185,0x3c7a25e1,0xb8e121cd,0xbc064337,0xbbfefee2,0x3b0fd07d,0xbc10c60b,0xbc02b007,0xbc102fb7,0xbc0043b2,0xbbb65760,0xbc027f22,0xbc027d2d,0xbbef40c8,0xbbf392d4,0x3b2897cd,0xbb9b41ea,0xbc021fd7,0x3c820329, +0x3b4898be,0x3cc9d203,0xbb3bd58b,0x3adde770,0x3b09f2ce,0x3b790720,0x3b8d2460,0x3b974354,0x3b872192,0x3b885485,0x3b712d7a,0x3b288eb1,0x3b365b90,0x3b29a0b6,0x3b1ecbb2,0x3afa6555,0x3ae602cb,0x3ad72653,0x3b17cda8,0x3b3654ed,0xbac18b9c,0x3cd30aa1,0x3ce7dfd4,0x3c167f6b,0x3cb7ac31, +0x3ce8de81,0x3c24439f,0x3c410fad,0x3c42c47b,0x3c142d97,0x3c6ed9d6,0x3c814265,0x3c81114a,0x3ce6b927,0x3ca79dec,0x3c045be7,0x3cebc088,0x3caa6d4c,0x3b9d79c0,0xbb0b90d3,0x3b777137,0x3bee646a,0x3c3ceeba,0x3c5000a5,0x3c1622bd,0x3c0cc35a,0x3bbdf6cb,0x3b097ae6,0x3aed901c,0x3a984665, +0x3ad00545,0x3ace0c07,0x3b1895dc,0x3afc2d8c,0x3b907e01,0x3a926985,0x3c28287c,0x3cb662dd,0x3c367a47,0x3c960255,0x3c4d34cd,0x3c56eee5,0x3c4a80fc,0x3bf98237,0x3c399cd8,0x3c822dab,0x3c2d0924,0x3bcf358e,0x3c336ac7,0x3c3db9e2,0x3c5b9ff6,0x3c379cb9,0x3bbf3a54,0x3c832c26,0x3b99d60c, +0xbc16c784,0xbabc554c,0x3a3cc3e7,0x3c54178b,0x3c96b90b,0x3c35285f,0x3c6504c5,0x3c1d064a,0x3acb760e,0x3b68e2de,0x3ab33064,0x3abc294b,0xbab61c3d,0xba91d6cf,0xba9629f9,0x3b19b900,0xbab7a1cd,0x3c60e0bb,0x3cc321e9,0x3c90f043,0x3c7b775f,0x3c65e2b8,0x3c8d25af,0x3c130ba3,0x3c032c5f, +0xbb68025b,0x3c2020c6,0x392c585a,0x3c4d4aab,0x3c2e98fb,0x3c5cb10f,0x3c43ae3c,0x3bf13de5,0x3c179f63,0x3b99ab9d,0x3aa54fed,0xbc269427,0xbafed51f,0x3b837115,0x3cf82133,0x3d1adac3,0x3cba24ee,0x3cb85d59,0x3c3d0790,0xbb8e1307,0xba326827,0xba80cce4,0xba2641f2,0x3a3fe348,0x3a8d2957, +0x3a098c1d,0x3b941d49,0xbb02c153,0x3c8451ce,0x3cd0a22b,0x3c36d201,0x3cb03d29,0x3c27af84,0x3bd08e11,0x3c0850c3,0x3b629fe1,0x3a637036,0xbb928f3c,0x3b0695a6,0x3b758bcc,0x3bfc986f,0x3c07ab57,0x3c05b888,0xbc508e61,0xbbb87b7e,0x3d21f0cb,0xbc388feb,0xbcabfd96,0xbc89f267,0xbcec8dad, +0xbcb004b1,0xbc44934e,0xbbb0c0e8,0x3c281933,0x3c26899e,0xbbc9a286,0xbc7c6b25,0xbcca08c7,0xbd0b15b2,0xbca11695,0xbc281f29,0xbc991b6e,0xbc0718ab,0xbbbbccd7,0x3cad4e65,0x3cda732e,0x3bc5cb4b,0x3c46ef93,0x3c56ec98,0x3c76fd01,0x3c20bb9e,0x3b05edeb,0xba46e594,0x3b23b58c,0xbb85b51d, +0xbb153def,0x3c6107a9,0x3bd0a3ff,0x3c2131f1,0x3c171576,0x3d29e45b,0xbba01326,0xbcc79e0a,0xbc86ec16,0x3c0409c8,0x3c7d7e01,0x3cbc5bdc,0x3c9e7c26,0x3bc5f954,0x3c60c018,0x3c064ded,0xbc71141a,0xbc58330a,0xbc006c36,0x3be9a79c,0x3c9040aa,0x3cb8524b,0x3c9d0cd9,0x3c9a150d,0x3c0c76b8, +0x3c07eb3a,0x3c145298,0x3c42b60e,0x3cc36e58,0x3b09bf64,0xbb137cbe,0x3a05b992,0xba860b74,0xb9b20a21,0xbb06a309,0xbb985481,0xbba2f6aa,0xbc16ec7a,0xbc01ba59,0xbab56cac,0x3c9c77b5,0xbc04c146,0x3c2cca70,0xbcd901e2,0xbd57c83c,0xbd46eef1,0xbcd7adbc,0x3b1f33f2,0x3cb15467,0x3c0f5e56, +0xbaf30de4,0xbc7fd34f,0xbce4c262,0xbc6c897f,0xb961f61c,0x3cba06d0,0x3c3926b3,0x3c0ad028,0x3b7b971b,0x3bffdb8a,0x3a3292e6,0x3c073a7c,0x3c8d3012,0x3c3eb2d8,0x3cc0cd72,0x3bbc8fa1,0xbaf5806c,0x3b42fc2d,0xbb3323b2,0x3ab9477f,0xba06f9c9,0x3ab38961,0x3b34a327,0x3bc7cc5b,0x3ad2aacc, +0xbbb2480d,0x3c2fb41e,0x3c2d56f5,0x3d261612,0x3d7ceb28,0x3dd96536,0x3df4e91b,0x3dc331a0,0x3d5b383a,0x3c96c751,0xbcba6243,0x3c750550,0x3c8f4142,0x39ccd721,0xbbdfce62,0xbba90f6c,0x3c6521d1,0x3c88015e,0x3c8800e2,0x398349ee,0x39032b37,0xbbc8f50a,0xbb4fb9c8,0x3b7fc07d,0x3bcd74b4, +0x3c5a9df3,0x3bb51d88,0x3bb234d8,0x3c0597ce,0xbae0af18,0x3a83ad5d,0x3a905a04,0x3b85e095,0x3bbf7ee7,0x3bfede69,0x3c8b66b3,0x3ce2532e,0x3d0ed1e3,0x3d057a97,0x3caf303e,0x3d1ded96,0x3d2b39e5,0x3d449914,0x3d6ec690,0x3d96e68c,0x3d98fee1,0x3d69539f,0x3d35f11b,0x3cd43a6d,0x3c93a372, +0xbc1bb9e1,0xbca7b5d9,0xbc1a5a33,0xbc59f337,0xbc093cce,0xbc215202,0x3a13b847,0x3b25bbb7,0x3b5f3b1f,0x3c2433eb,0x3c189f92,0x3c5ac42b,0x3bc21b42,0x3b520e95,0x3b5ccc32,0x3c58a7a9,0x3c7037bd,0x3c63dd17,0x3c7826db,0x3ca203e7,0x3cd26dae,0x3c9cee8a,0x3c8d339d,0x3ca2c89e,0x3ce36459, +0x3cdc6bbf,0x3d11c3dc,0x3cf636c9,0x3cd77fae,0x3c503b13,0x3bdc6a45,0x3c16a1de,0x3cb8b2ef,0x3cd41d67,0x3ce5de5c,0x3ce470af,0x3cd504c4,0x3cc6f54b,0x3c96682e,0x3cafc9ef,0x3c8a82a3,0x3bf66a32,0x3bf48882,0x3bde7fb8,0x3c02ffc8,0x3c0d8f45,0x3c0c2e35,0x3c82b8ef,0x3c64f6b1,0x3c567fe3, +0x3c502669,0x3c25aaf7,0x3bcd5909,0xbadc057d,0x3b0f83db,0x3b9b154a,0x3c2560f5,0x3c2cde12,0x3c8b7350,0x3cb904f7,0x3cf4c30f,0x3c894100,0x3c01df86,0x3b2f2346,0x3b9158b2,0x3b814804,0x3c0a3040,0x3c202b22,0x3c27489d,0x3c38b7ac,0x3c566177,0x3c726761,0x3c2bc90e,0x3bea9ac0,0x3b7ef58a, +0x3bc35f8a,0x3bf841f8,0x3c13f36a,0x3c3249d4,0x3c1af652,0x3c69216b,0x3c8f4e9d,0x3c78b22c,0x3c65255d,0x3c2453ed,0x3bf40343,0x3b829aaf,0x3be6513a,0x3c025150,0x3c777910,0x3c4bfa3c,0x3c80d2cb,0x3c7ee156,0x3c8a9a88,0x3c9b7981,0x3cab483e,0x3c8913c6,0x3c45b08a,0x3c5d9ead,0x3c4d0ecb, +0x3c6ad5cf,0x3c62eeaf,0x3c5cb835,0x3c5a252c,0x3c68fa85,0x3c3f8f78,0x3c0fd833,0x3bd7ae70,0x3b9ecc42,0x3b84cef8,0x3b62f554,0x3b507929,0x3b39deb6,0x3b1f3bb1,0x3b3a469d,0x3b16293e,0x3b7f3d2a,0x3c15e771,0x3bdb24cd,0x3c363c86,0x3c2a1604,0x3c641a2f,0x3c730416,0x3c4d6cd1,0x3c6d142a, +0x3c782da6,0x3c38cbe3,0x3c0bba73,0x3c1a6bc0,0x3c1ffbf7,0x3c29e2b8,0x3c4324c9,0x3c2341ee,0x3cb6075b,0x3c0a30ea,0x3c1db5d7,0x3c237acc,0x3c26715a,0x3c2f21e3,0x3c3372c7,0x3c3b82ca,0x3c2390d0,0x3c184818,0x3c0a455d,0x3c0054d3,0x3be5c4b7,0x3bc50e4c,0x3bd7a751,0x3be4623b,0x3bed96b1, +0x3bf94244,0x3c02ddde,0x3bc28338,0x3ca27c38,0x3cbcc289,0x3c5f55df,0x3ca2fae5,0x3cca6f44,0x3c750aa1,0x3c7f78cc,0x3c78f309,0x3c63bee5,0x3c82c497,0x3c835833,0x3c7e6b53,0x3cbf54b5,0x3ca329ee,0x3c480f3e,0x3cbea5e3,0x3c3c7944,0xbc653f6d,0xbcc7fc37,0xbc4420b9,0xbc581ef2,0xbc771aba, +0xbc62c452,0xbc8ebe93,0xbc92fa72,0xbc865824,0xbc841565,0xbc7c4e5b,0xbc6e45b3,0xbc69c90a,0xbc6b6334,0xbc78ef79,0xbc6a63d9,0xbc67f21e,0xbc6af46f,0xbc692253,0xbc4a4415,0xbc4384ff,0xbcc09039,0xbc751ed2,0x3c8388c7,0xbcc1271e,0xbc8738e7,0x3c463f5d,0x3c18f083,0x3c0caab3,0x3c113817, +0x3bd951ee,0x3bd0dbab,0x3bc9374c,0xbc87d98f,0xbcc47dba,0x3c3c46bf,0xbc8819c1,0xbc1743d3,0xbc912518,0xbc57bdcf,0xbc951707,0xbc815beb,0xbcde8b53,0xbcf75b04,0xbcd1c434,0xbcca2dc9,0xbcb674f2,0xbca58996,0xbc938774,0xbc8fd9e7,0xbca42098,0xbc98e15d,0xbc9bdbab,0xbc9ca43f,0xbc99d7d6, +0xbc6093ca,0xbc88a703,0xbb527cd0,0xbc03a461,0xbc506345,0xbbc6ebff,0xbbde916b,0xbc5d4daf,0xbc58802c,0xbc987aea,0xbc94a2b8,0xbc7f7470,0xbc2763eb,0xbc0a6e84,0xbc079244,0xbbe48661,0xbc7c0b01,0xbc6d8829,0xbc9a887f,0xbc650b03,0xbc82bc25,0xbcc1200d,0xbc7e09ce,0xbd191576,0xbd350097, +0xbd1415d6,0xbd0d9630,0xbcf436e3,0xbcd1cc1b,0xbcb7a1fd,0xbcba52b3,0xbce330c0,0xbcbda64f,0xbcb8ece2,0xbcbec547,0xbca6ee88,0xbc71d30f,0xbc209b82,0xbc18b5e8,0xbb718e0e,0xba75a2a9,0xba8217d9,0xbaf01350,0xbb99b685,0xbbe09b9c,0xbbfed88e,0xbc419b46,0xbb1a7c39,0xbb28faea,0xbb022a0d, +0x3a0696b3,0xbb12c62a,0xbc496f0d,0xbc5159f2,0xbc43199f,0xbba644f3,0xbc07e9f0,0xbc97542e,0xbc169945,0xbd400807,0xbd8240e5,0xbd5909ad,0xbd4ec30f,0xbd305127,0xbd115486,0xbcea133e,0xbce92aa1,0xbd132757,0xbd043012,0xbd04ccfb,0xbd01ad96,0xbce0cfb9,0xbc615f11,0xbbc27f8e,0x3b5eaafb, +0x3c35862c,0x3c1a897f,0x3bfe8a5a,0x3c0cafb2,0x3c32c325,0x3b3a89d3,0xb78d398f,0xb5173d0e,0x39362075,0x3bd3a9de,0x3c27f779,0x3c1bdd32,0x3b1d3be0,0xbc17856c,0xbc1be4c9,0xbcc6daeb,0xbd5d7f57,0xbd45d183,0xbd64c8f3,0xbd59fc63,0xbd6b2529,0xbd4a1871,0xbd079949,0xbc942605,0xbbcef5cd, +0xbbb3c153,0xbbb012d8,0xbbcb4ff3,0xbc5a0290,0xbc5947c9,0xbc420f6f,0x3812b87b,0xbc1bd715,0xbc557123,0xbc93fb8d,0xbba39263,0x3b5cc977,0x3ad653ee,0x3c2230c0,0x3c1ad347,0x3be36e7d,0x3a30c658,0xbb30749d,0x3926d7bb,0xbc0016a4,0xbba12790,0x3b829d09,0x3b09a91b,0xbace7321,0xbc05cc22, +0xbc0e6df8,0xbd085c16,0xbcf99c82,0x3be7ee93,0x3b074dba,0xb8d39d12,0xbcabfc2f,0xbcddbe64,0xbcd03ec2,0xbc13f2c3,0xbbd6ff2b,0xbc99da03,0xbca63d43,0xbcc5bca9,0xbd00b35a,0xbc913577,0xbc98f8c3,0xbd06a5d1,0xbcdaf013,0xbc7b510f,0xbc076fd0,0x3a6ef45d,0x3b9b252f,0x3c2ec3a0,0xba5fb38e, +0xbb9911ec,0xbab793f8,0xba551878,0xb908842d,0xbbadc755,0xbbc390ff,0xbc041e59,0xbc615677,0xbc68152a,0xbc17b887,0x3b199ce6,0xbc9f69a5,0xbc46fe29,0xbd52efa1,0xbd9f8558,0xbdc3c416,0xbde60a23,0xbdd8077d,0xbdb7a606,0xbd9d54cc,0xbd0233fb,0xbca0190b,0xbcfef6c1,0xbd1f9225,0xbd386121, +0xbd278fa8,0xbcde7cfa,0xbc4d4af9,0xbb4755fe,0x3a4fc1c5,0x3b449237,0xbbd81f4d,0xbabd5ed2,0x3bb68085,0x3c05496c,0xbb9a972b,0xbbd14de4,0xba26367a,0xbba335c1,0xbac4ab53,0xbb6eeeb0,0xba338151,0xba0b288b,0x3a05efc2,0xbbf8f0a7,0xbc2ca199,0xbc2802e3,0xbbab105b,0x3d4c413a,0x3d701cb8, +0x3d005648,0xbc0fa16a,0xbd7f5d17,0xbda5c102,0xbd99f950,0xbd24c439,0xbcce2649,0xbcdb3a15,0xbd436e07,0xbd6b035b,0xbd5114fa,0xbcc160c4,0xbc86d20a,0xbc4cbf00,0xbc9dcdef,0xbc734a7e,0xbc0408f4,0xbbffd99a,0x3acebdc9,0x3b9e42b0,0x3be987ae,0x3b31c20d,0x3ac5127e,0x3b378ddd,0xb714d885, +0xbaacf2c4,0xbaa42caf,0x3b43a3c2,0x3bb94e2a,0x3b9e2f23,0x3c844816,0x3cc34107,0x3d153654,0x3d27211c,0x3bcb2645,0xbcf990cb,0xbd71a2a6,0xbd3c1fa1,0xbc9ff721,0xbc66919c,0xbc2820f7,0xbc33bd78,0xbcc387e0,0xbd1f72b8,0xbd67ad00,0xbd85d67a,0xbd860247,0xbd5cdf22,0xbd252a7b,0xbcd1498c, +0xbc58c78f,0xbc0c630d,0xbc008f68,0xbc0e7b58,0xbb8c2279,0xba85a4c9,0x3c2c62cd,0x3b17c6b0,0x39b8c963,0x3a8ed642,0x3bfe7c9b,0x3c292c8b,0x3bad5d7f,0x3c08e5db,0x3c22f1ce,0x3c3e35e8,0x3c2f4cd0,0x3c27b8ee,0x3c855ffa,0xbb7361a6,0x3ca6269a,0xbbcdb7a3,0xbc22aa9b,0xbc20b5d7,0xbc59a81e, +0xbc0e2bda,0xbb5f91b3,0xba11726f,0x3ca7b7c9,0x3cf4a384,0x3cfa5f10,0x3caab9f6,0x3bf25246,0xbc28a4ad,0xbc1f1c39,0xbc5316be,0xbc74ce35,0xbc1ad86e,0xbb70fcaf,0x3b8ef1b3,0x3bc3a4ad,0x3b213550,0x3b6c95f9,0x3b719746,0x3bf807ed,0x3bea5d70,0x3b9f1987,0x3aecbc3f,0x3ac72a79,0x3a2955fa, +0x3ab02898,0x3ba3945f,0x3bb0f2f6,0x3b7d02a6,0x3c0a0e13,0x3b4f7dbb,0xbba596e3,0xbb4d6abe,0xbb7a719d,0xbc01143b,0xbc2f3466,0xbc3f6826,0xbc5964c6,0xbc87b322,0xbc55fe51,0xbc1c89c1,0xbb554b0d,0xba346474,0x3b798224,0x3bf4f260,0x3c25778d,0x3c47750c,0x3c74e691,0x3c3f5a93,0x3c05d4b5, +0x3b260aa9,0x3b877594,0x3c0fbaab,0x3c2f24a6,0x3c0a3ac9,0x3bd4a27e,0x3ba3be3e,0x3be9d9d8,0x3bf21974,0x3bdde27a,0x3c1dc17f,0x3c254516,0x3c1ec68d,0x3c08035e,0x3be02f44,0x3be3c3a1,0x3ab40c0a,0x3c33d127,0xbac3651a,0xb9db5782,0xbb0963a9,0xbb28895a,0xbb747512,0xbb8620c4,0xbb9db4ad, +0xbadb94c3,0x39b5a99b,0x3af33f85,0x3b427abf,0x3b616bf5,0x3b5c863c,0x3b69785e,0x3b861f27,0x3bb2949c,0x3bbd1fb9,0x3c1c629d,0x3c0bb1bc,0x3b7f4e0e,0x3a85a2af,0xbb7834af,0x391d625b,0xbb111cb0,0xbbc5dcfb,0xbba96968,0xbbeaeb10,0xbbb69190,0xbba32147,0xbb33d88b,0xb94e209e,0xb95319d8, +0x3b2ae9c9,0x3a66ec2f,0xb82d8688,0xbbd6c4a9,0xbb71d40e,0xbb111908,0xbb48181f,0xbb405cb5,0xbb540282,0xbb65a1db,0xbb8d9b17,0xbb6134fd,0xbb436c17,0xbb1ded57,0xbad45309,0xba4e98fd,0x38683e2b,0x3a2c9a9b,0x3a869791,0x3aaffca1,0x3aec1b2d,0x3b0a282b,0x3b8087e3,0xbb910203,0xba2ecc45, +0x3c85e7c4,0xbbfe1a1b,0xbb64abe4,0x3c868959,0x3c81cd7b,0x3c7fb1a9,0x3c8028b1,0x3c6c2fd7,0x3c65b939,0x3c602648,0xbaa4d13a,0xbc06c9fe,0x3c8ee797,0xb9144ee3,0xbb53bfc0,0x3c9bfc16,0x3c86214d,0x3caced77,0x3c713489,0x3c8a37ad,0x3c8207b7,0x3ca3dafa,0x3cae9849,0x3cac56be,0x3cac686f, +0x3caa1ca8,0x3ca467f6,0x3ca585da,0x3ca33b1e,0x3c9cb0a9,0x3c9f33fc,0x3c9dd872,0x3c9a62c5,0x3c9bfc6a,0x3c88e0d0,0x3cacf530,0x3c86ae54,0x3aae4a58,0xbcf9fbcd,0x3cb1410f,0x3b6f7132,0xbce85494,0xbce30aaf,0xbcdfa3c0,0xbcd2f42c,0xbcc8c76a,0xbcc1eade,0xbcb85210,0x3b936e79,0x3cbedeb0, +0xbcf3fbc3,0x3923b0dc,0xbbd8f519,0x3cc3137f,0x3c600f46,0x3c709dc8,0x3c6650e2,0x3cc6c841,0x3ce7443c,0x3cdfe640,0x3ce19d71,0x3cd8fcb0,0x3ccc2c8d,0x3ccd7008,0x3cc93ffa,0x3cb9f21d,0x3cc61a49,0x3cc729ef,0x3cc1a3ad,0x3cbdd006,0x3ca84dae,0x3cba1471,0xbbb7edc9,0x3c5c341a,0x3c86d40a, +0x3c35e449,0x3c08f192,0x3c69f79f,0x3c5144e9,0x3c7c4dcd,0x3c31535c,0x3c8c3200,0x3c8a63c7,0x3c3dc6db,0x3c82aa08,0x3c08e719,0x3bd55af8,0x3c99033c,0x3c528552,0x3c976f90,0x3c4e3141,0x3c539af5,0x3c201b26,0x3ce86a03,0x3d1abdd7,0x3d16dbb9,0x3d1dd629,0x3d178965,0x3d09d3a8,0x3d0b8708, +0x3d0420d5,0x3ce99724,0x3cf46067,0x3cef4237,0x3ce1288c,0x3ccc4ad5,0x3cc401bc,0x3c86e4c6,0x3c4934dc,0x3c509776,0x3c576f9a,0x3c87c9a2,0x3c2c5207,0x3c2b1ac5,0x37a6a93e,0x3ba8ba6e,0x3a9f54f3,0x3bcdc3c9,0x3be7c7a1,0x3c16960e,0x3c3b8eda,0x3c37023d,0x399a2979,0x3c652a03,0x3c850089, +0x3cc86a9c,0x3c28fba0,0x3bfd3cb0,0x3b7e023f,0x3cf81ba4,0x3d3a259d,0x3d3a3a59,0x3d3fa30d,0x3d362ab7,0x3d1cf6a3,0x3d220d24,0x3d2367ba,0x3d115d07,0x3d226921,0x3d207f61,0x3d14d978,0x3d090890,0x3cd97f34,0x3cb0b2ff,0x3c371512,0x3c8cf99f,0x3c53d242,0x3c921fd3,0x3c6c0939,0x3c2fd444, +0x3b8774d9,0xbb2afb66,0xbadd75e1,0x3b2bd1a3,0x3c17fd29,0x3c22e80e,0x3c6ef202,0x3c6d0524,0xbad3f70d,0x3c9a78c4,0xbad2782e,0x3bb5c621,0x3c51c315,0x3c486373,0x3c8df07f,0x3cd72bdd,0x3d05347f,0x3d2f5324,0x3d1485bf,0x3d117218,0x3d1f8cdd,0x3ce11942,0x3c8ba6f8,0xbab9868c,0x3c095784, +0x3c43fefc,0x3c41c854,0x3c68d754,0x3cb9edfd,0x3cbf5966,0x3c38043a,0x3c815c93,0x3c27c3d7,0x3c8c243f,0x3c77b085,0x3bcb001e,0x3b045b77,0xbac91ad6,0xba4c0159,0xbb74905e,0xbb0cf830,0x3bb3d37a,0x3c27b8a0,0x3c1a2f4e,0x3b410574,0x3c0396a1,0xbb18d6cc,0x3b0eb2a0,0x3c2bb2e6,0x3c48b1f1, +0x3bc80399,0x3c7184d8,0x3c7837ba,0x3b1b3eed,0x3c7275f9,0x3c4ec3d6,0x3beb1782,0xbbed0aea,0xbc2422f6,0xbbd244f2,0x3c41a91f,0x3cecd965,0x3d335978,0x3d0fdcde,0x3ce346a4,0x3c630712,0x3bbcef54,0x3c2b9661,0x3c93787e,0x3bad2b27,0x3a9ffbce,0x3ab2cefe,0x3a74362d,0x3ab67205,0xbb8b56ad, +0xbb3bc9c1,0xbba336b4,0xbc0c618b,0xbc0814b1,0x3b389950,0x3c36433c,0x3c06ace0,0xbce0c373,0xbd2aa6b1,0xbd6e4fee,0xbd2bfa38,0x3d176033,0x3d4f1b0b,0x3d867dfd,0x3d82a0a2,0x3d3d3074,0x3ce7a09c,0x3cbb9746,0x3cf8fdb0,0x3d1b3975,0x3d24146f,0x3d20b2ff,0x3ce15b93,0x3bc5bbf3,0x3b6fbb75, +0x3bcb2e6a,0x3c540d4f,0x3c9496d6,0x3c6649b0,0x3c155ed4,0x3b553fa5,0x3927e461,0xba532131,0xbb28794a,0x382afa51,0xbad4e40e,0x3af1967f,0x3aa44fa3,0x3afd6ccf,0xbba354f1,0xbc1ba403,0xbc5daa60,0xbc6774fa,0x3d66989c,0x3d86f83f,0x3db2c14a,0x3dbc2278,0x3de65028,0x3d3c5328,0x3c4fd588, +0x3ab78d3a,0x3ba5b98f,0x3b79a5d1,0xba171788,0xbc3695ce,0xbc5110fc,0xbbcdb0e2,0x3c3b2f7f,0x3cc32f28,0x3cc6a42e,0x3cdb88da,0x3c9dfc93,0x3b9a9459,0x3bb7696d,0x3c4635d7,0x3c1b12c0,0x3ba9e911,0x3b44632a,0x3b0cfe5f,0x3aba3914,0x3b1c579d,0x39af17c3,0x3b5b4e08,0x3bca50b6,0x3bdd2f0a, +0x3c8f66aa,0x3d071b25,0x3d1e620f,0x3d481ccd,0x3b279178,0x3d260241,0x3db0ab3c,0x3dbe78c2,0x3dd90864,0x3dccf09d,0x3db1587b,0x3d75032d,0x3cf53c10,0x3c440365,0x3c2cd514,0xba78a320,0xbb9904c9,0xbbd16f93,0xbc431b81,0xbc79484c,0xbc249b14,0xbc5df568,0xbc1651ca,0x3a8b629e,0x3bbe8794, +0x3c23318a,0x3c008e02,0x3adf56ff,0x3b1c98f3,0x3c098c94,0x3bffada7,0x3c200556,0x3c1d87e4,0x3c6823d5,0x3c7d28f7,0x3c8568be,0x3c77abeb,0x3c7c5b30,0x3c607ffc,0x3cdc618a,0xb961470f,0x3cdb8b86,0x3d0b507c,0x3cd8d5c9,0x3cdc71ff,0x3cf0263a,0x3d15ee74,0x3d521cfc,0x3d2df564,0x3d0a06e1, +0x3cc38581,0x3cd07eb1,0x3cbb2456,0x3c668506,0x3c5db5c3,0x3c257365,0x3a317fb4,0x3b35dd38,0x3b054785,0xbae6797a,0x3b0629c6,0x3be36d04,0x3c714a26,0x3c7ceb75,0x3c4f9147,0x3c026690,0x3bdf3580,0x3bb4c44b,0x3c099e0e,0x3c0af4dd,0x3c192f80,0x3c398f6b,0x3c25129e,0x3c74a682,0x3c6cace2, +0x3cc25969,0x3c95da22,0x3cab286d,0x3cb08b1b,0x3c9eb8d4,0x3c9a402a,0x3cade576,0x3cafab62,0x3cb2a942,0x3cbc0074,0x3cdb7a8b,0x3cf2a3a6,0x3ccfb3f0,0x3cace62c,0x3c878602,0x3c8ea66a,0x3c927900,0x3c96edfc,0x3c9c28ca,0x3ca0f9e2,0x3c920567,0x3c6f1fd6,0x3c58e36a,0x3c4fe77c,0x3c42a13c, +0x3c0db9a4,0x3c2c37b4,0x3c063120,0x3c781114,0x3c3abcbf,0x3c69b81a,0x3c464a9f,0x3c7555f3,0x3c780177,0x3c7ffa67,0x3c67be49,0x3c8da76e,0xbba139f8,0x3c3c0699,0x3c50b1d8,0x3c820b77,0x3c9509d4,0x3ca9528d,0x3cc0da7d,0x3cdb7cdb,0x3cc09a84,0x3c9daab9,0x3c823a7c,0x3c45ee13,0x3c1d66e5, +0x3bdae7db,0x3c0be7cc,0x3c1fa2f0,0x3c3b9e4f,0x3c4bf255,0x3c58643b,0x3c8feef3,0x3c074f21,0x3c767ccc,0x3c852209,0x3c416353,0x3c32e9e9,0x3c6a6bc1,0x3c67953b,0x3c6b5a80,0x3c2624a1,0x3c521667,0x3c33871c,0x3c030ca5,0x3c0c55c6,0x3ba8c77b,0x3be81cee,0x3c29ec0f,0x3c4b9563,0x3c679f54, +0x3c4b9247,0x3c6720f4,0x3c72751a,0x3c7f0ec8,0x3c837f58,0x3c8ebe1f,0x3c7c3b63,0x3c6eb45c,0x3c5d1947,0x3c5432fb,0x3c463bf7,0x3c2ab724,0x3c3fcc4a,0x3c4a1be7,0x3c52866c,0x3c6668b3,0x3c673a58,0x3c880a78,0x3c77eae3,0x3be980f8,0xbc343154,0x3c88971c,0x3bd70f55,0xbc63e661,0xbc5585ba, +0xbc43a9d2,0xbc244e73,0xbc2060fc,0xbc0fb507,0xbbfeaa26,0x3baa34ad,0x3c78766b,0xbc36e436,0x3b536fac,0x3c72a51d,0xbc8f7721,0xbbaaceec,0xbcb4e755,0xbc69ddf2,0xbc86f045,0xbc726d08,0xbc9cb2ee,0xbca674e0,0xbca39a04,0xbca6c268,0xbca22d63,0xbc97fa59,0xbc8fafa8,0xbc8f67ee,0xbc99a454, +0xbc999c99,0xbc9a6370,0xbc9bf968,0xbc96d9f6,0xbc7f245c,0xbcb91495,0xbb97c82f,0x3c55aacf,0x3d1c2702,0xbc1fd54c,0x3c391ff9,0x3d0d3604,0x3d0ad84b,0x3d085e6b,0x3cf771fa,0x3d075581,0x3d08e3ac,0x3d0259cf,0x3c2e3265,0xbc56bccd,0x3d0a5c74,0x3c62527b,0x3ca35e3b,0xbc98ca88,0xbc757460, +0xbc75e2e9,0xbc372fef,0xbcab424f,0xbccd8561,0xbcccccc4,0xbce3cf2e,0xbcdaf5a9,0xbcc28491,0xbca8c5e2,0xbca6591e,0xbcc580aa,0xbcca733e,0xbcd0f80b,0xbcd75551,0xbcbc48e5,0xbcaeb59d,0xbca08c55,0x3c96401d,0xbbb68b81,0xbb50f57c,0x3a9ba1aa,0x3b3b7367,0xbc081824,0xbc2bfdfb,0xbc4f4956, +0xbbc65a76,0xbc2f938e,0xbc28d172,0xbb7604c3,0xbb97fe0f,0x3b5ce38c,0xbb284647,0xbc53857d,0xba2873d6,0xbc5515f2,0xbc8c5c6a,0xbc651560,0xbc105a4d,0xbce5c6bb,0xbd137554,0xbd130849,0xbd267157,0xbd1834a7,0xbcfa0bd5,0xbcbe9671,0xbcb97073,0xbcfe76f5,0xbcfe9b66,0xbd01c4ff,0xbd09a399, +0xbcd5bc77,0xbcd960dd,0xbc378ff9,0x3af241b3,0x3a4d10d2,0x3b5c239c,0x3b381b20,0x3c0c8c94,0xbbb94366,0x3a7fd829,0xbc4b1373,0xbb257b1a,0xbb3bfe2c,0x3bd43d05,0x39b323a4,0x3bc82900,0x3b81e269,0xbb1e664c,0xbb972499,0x3c18a6b8,0xbc0b29b0,0xbc49623c,0xbbcc171f,0x3bc77110,0xbca2fb7f, +0xbd0c0b69,0xbd225152,0xbd4a24db,0xbd44bf17,0xbd214a54,0xbce0985a,0xbcd42837,0xbd241bb3,0xbd2c0046,0xbd34a954,0xbd3f5611,0xbd10f514,0xbcf3694a,0xbc72acec,0x3c2252a6,0xb9cb0427,0x3c52b5f8,0x3c09a350,0x3c06b45d,0x3b581b65,0xbaa7a475,0xbb217d19,0xbbc55db4,0x3b080ed7,0x3be02c0c, +0x3bf263c7,0x3c20740b,0x3bde7474,0xbbc7b30d,0xbb8980f2,0xbc8826b6,0xbd46015a,0xbd47b508,0xbd3a1bfd,0xbd3cc321,0xbd78507e,0xbd80823e,0xbd5d28eb,0xbd3f14b9,0xbd022a16,0xbc5d68e2,0xbc8cd9f7,0xbc89bc5f,0xbc38c066,0xbc31b8c7,0xbc395a0f,0xbcac35b4,0xbcb76f07,0xbce7b5a5,0xbc413e34, +0x3c190dff,0xbb2b9c8d,0x3ab8183d,0x3c1eca05,0x3c404265,0x3bc1c7ed,0xba09b403,0xbb89752c,0xbb384180,0xbc034883,0xbbc4ebd8,0x38ce307f,0x3b93359d,0x3c0eb3b2,0x3b65eed8,0xbc006642,0xbbb19d12,0xbc995da6,0xbc898571,0xbc6a0357,0x39a5d883,0x3a79e1af,0x3b5cb52b,0x3b2356fc,0x3ae22e35, +0xbadff461,0x392cdb9e,0xbc399b51,0xbc68a2f3,0xbc9fc7b8,0xbd0059c7,0xbd23cc55,0xbd4c52de,0xbd059b4f,0xbccca06d,0xbb778d25,0x3c4a7c09,0x3c193379,0x3c15e745,0xbba65eca,0xbbf0a9bf,0xba8358fc,0x3a689379,0x3a79b183,0xbbc6e451,0xbbd54955,0xbbd30940,0xbc0da2a8,0xbbce89fb,0xbc54aa74, +0xbbecc4fa,0xbc5577e2,0xbce9f337,0xbd621dc4,0xbd725589,0xbd6d11f2,0xbd811536,0xbda0b5c6,0xbdbbd137,0xbdb3c104,0xbd8620ca,0xbd341c29,0xbcf12eef,0xbd71a8d6,0xbd933359,0xbd8ca9a0,0xbd53149b,0xbce59f3d,0xbc01030c,0xbbf20faf,0xbc4d6586,0xbc16c58d,0x3900442f,0xba9f71aa,0xbae6c5ba, +0xbb9b7aa1,0xbb28a221,0xbaef5036,0xbb87b57f,0xbb43e83c,0xbb42a258,0x3900d559,0xbb017f16,0xbb3a0013,0xbb91a110,0xbc1da0a3,0xbc11a14e,0xbca5f926,0x3d714a14,0x3d5bbdeb,0x3c3ec36c,0xbceebc51,0xbda61122,0xbdc657f8,0xbda2879f,0xbcfa0988,0xbcd93f63,0xbcb65d1f,0xbc8996cd,0xbcaec0bc, +0xbcbce491,0xbcc51694,0xbcde2372,0xbcec23ea,0xbcc542e0,0xbc969989,0xbc458510,0xbbe58ea3,0x3c6dffcd,0x3c04e88c,0xb864cc36,0x39f01352,0xbaa41f38,0xbb16b9d2,0xb9a70944,0x3a6c29f1,0xbae67a89,0x3a1643e3,0x3b3c14f9,0xbad05591,0x3c64b599,0x3ca214ad,0x3d1e4167,0x3d32e235,0x3d156d9e, +0x3c2c223f,0xbc800f3f,0xbbc51566,0x3a8f32b8,0xbc235026,0xbcde650d,0xbd34fda0,0xbd48b808,0xbd5796ee,0xbd7993ff,0xbd20bb8b,0xbd044d2a,0xbd21c812,0xbcb5b79d,0xbc9285ad,0xbc9900e6,0xbc9225d9,0xbca686df,0xbc8a879e,0xb8a378fe,0xbb7053e7,0x3b155e16,0xb997f86a,0x3a009f04,0x3bd00aa9, +0x3b90813d,0x3b3083e7,0x3bacc673,0x3bf428db,0x3c499002,0x3c6cd5c6,0x3c807440,0x3c9012b5,0x3cc01a34,0x3c82bba5,0x3cff99ff,0x3b29d630,0xbc692464,0xbc2304ee,0xbc4222ad,0xbc05276d,0xbb7c010e,0xbb9e1986,0x3c60a98c,0x3ca340bb,0x3c810742,0x3bc6c919,0xbb8493e4,0xbc60653a,0xbcaa8875, +0xbcba6df5,0xbca9caa8,0xbc8dfcc0,0xbc36349e,0x3a068fc7,0x3b7fab38,0x3bcef25d,0x3c5e2f5a,0x3c1aa402,0x3bf4ddc7,0x3b9ab540,0x3b2e2fd7,0x3b922163,0x3ba5067c,0x3bcdddd9,0x3bc9a157,0x3b84a08d,0x3bd56de2,0x3ba5ce54,0x3c029e2f,0x3bbe3ecd,0x3c1e0969,0x3b9b7fdb,0xbb02d436,0xbb11d40e, +0xbbe2b180,0xbbe2a4f0,0xbc0e22ff,0xbc42f67c,0xbbe9cdce,0xbb2eed07,0x3ba5d965,0x3c099288,0x3c48d8bb,0x3c8412d9,0x3c682bab,0x3c521868,0x3c289577,0x3c0986e0,0x3b6fbe60,0x3b8272cc,0x3c1b37d0,0x3c16a492,0x3c0d9052,0x3c07bc68,0x3c3882b8,0x3c18bda1,0x3c66bca4,0x3c16970d,0x3c7b3910, +0x3c255e6b,0x3c57817c,0x3c189c85,0x3c3709e4,0x3c61684e,0x3c956671,0x3c383860,0x3c7fd200,0xbb2f69be,0xbb6ee00f,0xbbaa7c68,0xbbe34057,0xbc0ca52c,0xbc1f8cd7,0xbc338863,0xbbcd5b18,0xbb4099d3,0xb9737267,0x3b23f987,0x3bae4a28,0x3c0a64c9,0x3c140412,0x3c251c1d,0x3c36dc43,0x3c4efff8, +0x3c74a238,0x3c64b32b,0x3c917e2d,0x3c124ec1,0x3bddbd6d,0x3c0e8a99,0x3bde184c,0x3a1a397d,0xbabe90ef,0xbaeb82e1,0x3b028dcf,0xbb34f29d,0xbb5943b9,0x3800e63e,0xba26ec33,0x3b61ed52,0x3b0855e9,0xbb29b1c3,0x39973328,0xbc0e34a4,0xbbb2255a,0xbbdc6111,0xbbe21f19,0xbbf61306,0xbc057167, +0xbc20a653,0xbc0772a6,0xbbedb354,0xbbc298e5,0xbb90edec,0xbb4b2a63,0xbac65ca2,0xbabb532f,0xba8390a0,0xba1d3c16,0xba2b8e68,0x37bdbc90,0xba86e458,0x3b867e12,0x3c55f14d,0x3cd4ccf4,0xba8e240c,0x3c34dacb,0x3cd820ca,0x3cd6f103,0x3ccd897c,0x3cba7289,0x3cc01ae6,0x3cba33ff,0x3cafce63, +0x3c1dfe3b,0xbb72331c,0x3cbbe8e4,0x3c382172,0xbc03f4b7,0x3c811316,0xbb58587a,0x3cb576f2,0x3c520a4b,0x3c66915a,0x3c4b5bfb,0x3c64df91,0x3c735cff,0x3c86c23a,0x3c7d2b01,0x3c8040fd,0x3c8448f1,0x3c899194,0x3c88d7d8,0x3c7e804c,0x3c849139,0x3c836cd5,0x3c7f98c4,0x3c818038,0x3c60e88a, +0x3cada4a1,0xbb81a163,0xbc9b195e,0xbd00cb0d,0x3b696364,0xbc8e1800,0xbd0094d7,0xbd0529cd,0xbd04e7da,0xbcee637a,0xbd00eab7,0xbd00681b,0xbcf9720b,0xbc85319b,0x3bd3121e,0xbd029956,0xbcac9ee7,0xbca8151f,0x3c8f616f,0x3c70b5dd,0x3c442fa5,0x3c29f6e4,0x3c617015,0x3c85e484,0x3ca822ad, +0x3c95afa3,0x3c997c75,0x3c9f8c86,0x3caf124d,0x3cb18ba7,0x3c97c1e0,0x3ca8b7c9,0x3ca38e03,0x3c9b36f6,0x3c8ae5c6,0x3c9236b1,0x3c5b0c18,0xbca266c6,0x3bddc99b,0x3b95ac5c,0x3b8421b9,0x399e1a1d,0x3b897592,0x3bc5161e,0x3ba30566,0xbb38c0fd,0x3c0ef8a5,0x3c4f75e7,0x3b87455c,0x3c097ada, +0xbaa180de,0xbba95487,0x3c4a3194,0xbb1568b9,0x3c34baef,0x3c87421b,0x3c29e40b,0x3bd955cd,0x3c1efbf7,0x3c6df1db,0x3cc31d8a,0x3c9348ff,0x3ca6d576,0x3cb9d811,0x3cddfa75,0x3cdbc560,0x3c992977,0x3cc1fc27,0x3cb88770,0x3cadfbb2,0x3c95dc65,0x3cb7a1ee,0x3bc79201,0xbb5cb4f8,0x3b67753b, +0x3bfa49ca,0x3c2a311f,0x3a94cb38,0x3b6389ba,0xbbcd4806,0x3bd37775,0xbc0d254a,0x3bee6d9b,0x3a1da749,0x3b355ef9,0x3ba409f4,0x3b9d3ed0,0xbc1863d4,0x3b73ae82,0x3ab326e1,0x3c48caad,0x3c4dbf76,0x3bb63b64,0x3b4670e1,0x3c06d104,0x3c83ec78,0x3cf5d4a1,0x3cb641bd,0x3cc455b1,0x3cd1d552, +0x3d0614ba,0x3d0c0795,0x3cb4777c,0x3cfb4ab3,0x3cf66261,0x3cd7c008,0x3ca8907a,0x3cafc249,0x3be77184,0xbbc3ff6f,0x3c81c387,0x3bd0fc36,0x3c9a3855,0x3c85afba,0x3c067780,0x3b38974a,0xbb801d4e,0xba4c944c,0x3b78cd80,0x3c4e5efe,0x3c036796,0x3c672ec7,0x3beb3820,0xbbea991d,0x3c1271a5, +0xbd297f53,0xbbcd0587,0x3cd7e025,0x3cb5e46c,0x3c2c10b9,0x3bfac136,0x3bfb38c8,0x3c8c2a5b,0x3c6c32a0,0x3cd0a05e,0x3d403048,0x3d170243,0x3cdbf790,0x3c4f8da3,0x3bb084d5,0x3ba0e4bc,0x3cad1c58,0x3ca7181b,0x3cfe52c0,0x3c89fe38,0xbb882236,0x3c82dee7,0x3c0dee34,0x3c661534,0x3c2364b4, +0x3b851dc9,0x3ab94c27,0xbb0a3c3f,0xbb02f1d5,0xbbe76369,0xbba5d112,0xba8ee250,0x3ba2968d,0x3b1b16fe,0x3a5c1a9e,0xbcbe2148,0x3b182f2a,0x3c6c0848,0x3c033b15,0xbba62ce4,0xb9797946,0x3bb242e3,0x3bb823fa,0x388dcedc,0x3bcc1ae5,0x3bb9e92d,0x3be8f319,0xbc20160f,0xbc5685f4,0xbbcfb342, +0x3af82b5b,0x3c2b3a7e,0x3c9bdf15,0x3c16fd27,0x3c4d5e79,0x3b100d6b,0x39c1bd19,0x3bc7cbfe,0x3b36c266,0x3b7d9ff9,0x3b24df26,0x39e878c6,0x3b1cd768,0x3ab9365b,0xbbaa46c2,0xbb63373d,0xbba384f7,0xbaf2db18,0xbc26ee25,0xbbfce761,0xbc0449ca,0x3c38c0fb,0xbd2e92db,0xbd3d60c8,0xbcdb822a, +0xbc0ab1fc,0x3cacf577,0x3cac8b3d,0x3ca8832c,0x3cb0703d,0x3ce48e3e,0x3cecef03,0x3cf88aa9,0x3ce7e592,0x3cca7e11,0x3c91a7eb,0x3c5f903c,0x3ba1d48b,0xbb82867f,0xbb991d71,0x3bf0e669,0x3be06586,0x3c230e9f,0x3c20d6b2,0xbbfe1a14,0xbb1ac36a,0x3a5cb4ba,0xba6c01e1,0x3a6b78b9,0x3b18e634, +0xb9cad684,0x3b30ed7b,0xba03cfe4,0xbb8b5f58,0xbba97b34,0xbbc6030f,0xbca0dc64,0xbcd9a8af,0x3d3ed3aa,0x3cef4d87,0x3cca90da,0x3c1be4c3,0x3c83e78e,0xb85224a9,0xbb92133d,0xb9e5b9ec,0xbc9e46a3,0xbcda95e3,0xbcbfc0bc,0xbc68ac2b,0xbc36f9c1,0xbc8c4d7f,0xbb93e9ec,0x3b7a9dad,0x3c5bbd06, +0x3c4d0bfb,0x3c45eb7e,0xba96c1d7,0x3b18da6f,0x3c0bb4ef,0xbb130bbc,0xb89fc94a,0xba308b74,0xbb1a1224,0x3a424cf0,0x3a1a1621,0xbaab037e,0x3a6ce42c,0x3b8adf4e,0x3b99285e,0x3c2e97f2,0x3cb8305a,0x3d0b333b,0x3d3491f7,0x3bb9a2d3,0x3cf6408f,0x3d9236ad,0x3d9299dc,0x3d9645cf,0x3d60e690, +0x3d043bcf,0x3b404ed8,0xbc23eeab,0xbc5b2c16,0xbc780264,0xbb01a367,0xbb025f68,0xbc80d33f,0xbc54e523,0xbc8c0c77,0xbca39734,0xbcb151d5,0xbc5f76ca,0xbc0433a5,0xbbc6d125,0x3b824925,0x3ac807d9,0x3aef6752,0x3b895de3,0x3c23042a,0x3b571b12,0x3b694a33,0x3b10fba4,0x3c2417e3,0x3c3b676a, +0x3c47929f,0x3c5f73e3,0x3c7055e2,0x3c3f6b03,0x3ca18055,0xbc2aaeed,0x3c0dfbb8,0x3cbbbd3c,0x3ca9243b,0x3ce9e74c,0x3d1de335,0x3d433c84,0x3d56575c,0x3d1506c9,0x3cb7f354,0x3c144d18,0x3b9c0407,0xba8f8340,0xbbfdeb99,0xbc4d7a66,0xbc12c81e,0x3b02d9dc,0x3b3f95d5,0x3b03f9c4,0xbb4d9c5b, +0x3b173ee4,0x3be2bda5,0x3bb42604,0x3c13c2a2,0x3c116201,0x3beed281,0x3c09daf0,0x3c12d3ec,0x3c562f20,0x3c5d6507,0x3c48d7b4,0x3c2579b1,0x3c145d3f,0x3c1e4a39,0x3bbe847c,0x3c22b417,0x3c22790c,0x3c8acf07,0x3cb1792d,0x3c970e4c,0x3c95cd37,0x3c9bd941,0x3ca5eb24,0x3cc5c4b1,0x3cc54ed2, +0x3cdbd8c4,0x3ceef8f2,0x3ce5ea3d,0x3cda4efe,0x3cce3435,0x3cc48372,0x3cafbf9e,0x3ca0eede,0x3c92ffc7,0x3cb37440,0x3c8d0e50,0x3bfb5442,0x3c188cf1,0x3c203d7d,0x3c2a41f5,0x3c0e9e4a,0x3c2a66da,0x3c077c93,0x3c58ddb9,0x3bf78f2e,0x3c27c6cb,0x3bc79c40,0x3bf463c0,0x3c04432e,0x3c035a3d, +0x3bd618a9,0x3c30b3ae,0xbc073bd1,0x3c0a9dd5,0x3c27356e,0x3c34fd2b,0x3c5868b4,0x3c7c946c,0x3c904705,0x3c9c7d2f,0x3c995ca3,0x3c909b54,0x3c89e75b,0x3c814a4a,0x3c74f8f3,0x3c5e2bb4,0x3c73ea82,0x3c8425c1,0x3c8c7281,0x3c9579ab,0x3c95c843,0x3cab6dc9,0x3c46b02f,0x3c921f49,0x3c73ef4d, +0x3c33d7da,0x3c012c1c,0x3c1c2a23,0x3c2cb81d,0x3c09c312,0x3b87894e,0x3c0f5061,0x3c24f4ca,0x3bb6b870,0x3bdfef18,0x3b241719,0x3b4e61d7,0x3c0f5011,0x38c4f42e,0x3c60c691,0x3c2e4f85,0x3c456980,0x3c4d2e69,0x3c4fd5c7,0x3c5367d0,0x3c5f0efa,0x3c58f3eb,0x3c5947cb,0x3c5805b9,0x3c5a7ef6, +0x3c5d2ae2,0x3c5c7fc2,0x3c5bc7b9,0x3c5857a0,0x3c56c9f9,0x3c568288,0x3c497970,0x3c74362c,0x3b931b0d,0xbba4648f,0xbc511b14,0x3bbe8b92,0xbbdb8335,0xbc871573,0xbc886194,0xbc80d69f,0xbc619cec,0xbc7c67cb,0xbc7ab7ab,0xbc6a299e,0xbbfd9e84,0x3b9afe34,0xbc6ff360,0xbc1c7a01,0x3c4706f4, +0xbb88c893,0x3c7f19d9,0xbc37dc25,0xbb513f5c,0xbb67fa1f,0xbb04071f,0xbb4e1fb6,0xbb7c875b,0xbb92ee1d,0xbbb01204,0xbbb6a93e,0xbbc2bdf4,0xbb826023,0xbb6aa7c4,0xbb86ef54,0xbba3c038,0xbbb1852a,0xbbba63ad,0xbba61787,0xbb7a3575,0xbc277f5a,0x3c820c91,0x3cd038b8,0x3cc54ab7,0x3c3c5e1e, +0x3cca44a6,0x3cb72224,0x3cc4d0c5,0x3cc4aa6d,0x3ca9d086,0x3cd39d46,0x3cda72a9,0x3ccebefd,0x3cc86524,0x3c0f3306,0x3cb0b272,0x3cdba0f9,0x3cdb7d6f,0xbb7438b3,0xbb8caf77,0xb78d7cc9,0x3b11f482,0x3b00e633,0x3a24531d,0xbad98b0f,0xbbbf09ec,0xbbf54ace,0xbc0657c7,0xbb88015d,0xbb681a5a, +0xbbb080e0,0xbbf989ec,0xbc05b79f,0xbc0ae68c,0xbbb5ce01,0xbbf9ca5f,0xbb321969,0x3cafa08c,0x3b9177fa,0x3c3afd69,0x3c13635f,0x3c2812c0,0x3b8776f2,0x3a9c6d24,0x3b541935,0x3c13cf13,0x3b80f301,0x3a41860d,0x3bae992a,0x3bb145fc,0x3c2f8a90,0x3c0a0f65,0x3a8a228d,0x3c5d416d,0xbb9093ee, +0xbc0c59f9,0x386cdd1f,0x3b153b24,0x3b97e170,0x3b048e71,0xbb87de7c,0xbc28b042,0xbc407c65,0xbc633a8c,0xbb5612c0,0xbaba7155,0xbb963072,0xbc20dafd,0xbc40e930,0xbc5492cf,0xbc008651,0xbc3dce81,0x399a2970,0x3c56bdd7,0x3c20e83b,0x3c433522,0x3c1abe9b,0x3c5b2075,0x38a50cce,0x3bbb0ae7, +0xbbd63e6d,0x3bb111cf,0x3a54e0b6,0x3c3c9b39,0x3b8f1fd2,0x3c2e7a2c,0x3c2627a8,0x3b813559,0x3bd9ea36,0x3c92c678,0xbb2d953b,0xbbb28932,0x3b9bd20a,0x3c1e26de,0x3ca513b3,0x3c92d0ce,0x3beb5336,0xbbbdced4,0xbc6168c7,0xbc9e2cf3,0xbbac188a,0xbab55d95,0xbbf91f54,0xbc5dc327,0xbc848547, +0xbc8f87f4,0xbc293699,0xbc6ccf08,0xbb7e8048,0x3c47be96,0x3a631b60,0x3c860e8b,0x3c2afe0c,0x3c02de6d,0xb9912015,0xbade7eaf,0xbb5cf71b,0xbc03c7ff,0x3b926903,0x3bf5d326,0x3b9205ed,0x3c18e64b,0x3bebf892,0xbc015c29,0x3ba07958,0xbb85d217,0xbc71570e,0xbc9ae44f,0xbc26e3c7,0xbc943283, +0xbce10826,0xbd00a753,0xbce82abd,0xbd171ce4,0xbce7662f,0xbc0a7861,0xbc698711,0xbc50bc4d,0xbc3bbdc1,0xbc818de1,0xbc7fd9bd,0xbcb6abbe,0xbc685435,0xbc64c952,0x3c3646ce,0x3cac387f,0x3b7aca8a,0x3c5686b6,0x3c3537f5,0x3c2fbd39,0x3b73f88c,0x3a428057,0xbb117df2,0xbb83d4d4,0xbbd1e70f, +0xbb8a62d7,0x3b53c586,0x3bc07d53,0x3c64f037,0x3c98199c,0x3a47ee57,0x3c91a6b0,0xbc194a23,0xbceaef2b,0xbc646706,0x3baab5d5,0x3ca014b0,0x3cc1774a,0x3c82b4ea,0x3c0ac1e0,0x3b609d66,0x3bed5856,0x3b2309b8,0xba0c940a,0xbb929259,0xbc038253,0xbc29ef03,0xbc8bfdde,0xbbfe27b0,0xbc14d2dd, +0x3b813e35,0x3c59be6b,0x3c0fa2d4,0x3b4ffd08,0xbb8de36d,0xbb8dfa62,0xbaf7681c,0x39d8fb57,0x39b82397,0xbba8d4fb,0xbb9c8a97,0xbba9d550,0xbbf8dca0,0xbc4a466f,0xbc965542,0xbc153a1a,0x39ce928e,0xbd018ea7,0xbd0aa537,0xbb195b0d,0x3c0e4c49,0x388cd1e3,0xbc012507,0xbcc87c88,0xbd199066, +0xbd303da8,0xbd1dff2f,0xbcdf0aaf,0xbce705f1,0xbcd8989e,0xbce1f1b4,0xbce12fab,0xbcb4f3b2,0xbc5b5137,0xbc158079,0xbc52ede9,0xbb1e76a5,0x3c3d7f18,0x3b8956be,0xbb9fda34,0x3a03960b,0x3b6f72af,0xb96332a2,0x39744b3e,0xb9cbad40,0xbab4150e,0x3ae81f5d,0xba178ae4,0xba335b03,0x3b6e497e, +0xbbc47b2f,0xbc345c9a,0xbccdef49,0x3d29fb3b,0x3cafbe5e,0x3aec9975,0xbc3f936a,0xbd2ebb45,0xbcc0db5c,0xbc7a86b2,0xbcc976d8,0xbb3bb830,0x3a9bba4b,0x3a03e6df,0x3813f8ef,0xbb846dd6,0xbc5fe6c6,0xbc1e2330,0xbc263044,0xbc266bd8,0xbc449a45,0xbc38f64f,0xbb98fc9d,0x3c775acb,0x3c1d2038, +0xbbbe3222,0xbab0ba41,0xbb041f7c,0xbb75073e,0xbb1142af,0x3a26d83b,0xbaf0ae23,0xba03bcdb,0x3a68d31d,0xbb78dee5,0x3bbd2256,0x3c4ba5df,0x3cf5ca10,0x3d0c6d95,0x3d4cda0a,0x3d6f3841,0x3d5d2768,0x3d57989f,0x3d0bca75,0x3c965b6a,0xbc096363,0xbd199bc7,0xbce31a2e,0xbc99f8c4,0xbbab2179, +0x3b717bdc,0x3b5264b5,0xbbae9cc1,0xbc280bba,0xbc7110a7,0xbca26323,0xbc6b82a4,0xbc3e6216,0xbc267310,0x3ae7e071,0xbac75e7e,0xbabf0a8b,0x3b27c7c5,0x3b806443,0x3c07846c,0x3b64db81,0xba302814,0x3b6063f2,0x3bf38ca7,0x3c662ad2,0x3c9c77f1,0x3caf1f34,0x3cc36c4f,0x3cd4ab91,0x3d16dd4f, +0x3cd72431,0x3cad411e,0x3c688912,0x3ca94ada,0x3cb23782,0x3cd96be9,0x3cce2dad,0x3c8e4b60,0x3c54725c,0x3b26d857,0xbc0e0148,0xbc8afc4b,0xbc9eef76,0xbc94a695,0xbc91e4d0,0xbc7dae07,0xbc1bdc63,0xbc24e16f,0xbc065fbb,0xbafbd57e,0x3b8110ec,0x3be70814,0x3c3f8727,0x3bf330bd,0x3b9d08ac, +0x3bbb02cd,0x3c034d05,0x3c35567f,0x3c090c15,0x3c432484,0x3c4c524b,0x3c39a09e,0x3c3a8294,0x3c49de56,0x3c606c94,0x3c8cd81e,0x3c9cd6c6,0x3c4f6977,0x3c08d0ce,0x3c3919c8,0x3c170728,0x3c3c1204,0x3c4e2838,0x3c6ab72f,0x3c8ac3ee,0x3ca975a3,0x3cd15c9a,0x3cc2a789,0x3cb0855a,0x3ca46c43, +0x3c903b34,0x3c79fa12,0x3c4dfe4f,0x3c57c86a,0x3c30de6b,0x3c7c3292,0x3c965fa9,0x3c530c93,0x3c1cd540,0x3c0cb035,0x3c30ad56,0x3be437d7,0x3c33cc81,0x3bc8d9fb,0x3c561630,0x3be253e3,0x3c21d24a,0x3be23d61,0x3c372bde,0x3c81e750,0x3cabd07f,0x3c8ab47e,0x3c682652,0x3c0606b1,0x3bcfcba7, +0x3bd325f0,0x3bb5cf44,0x3b9df4dc,0x3b81120a,0x3b56301f,0x3b629437,0x3b4b6eea,0x3b51dc09,0x3b892905,0x3bcfc1fb,0x3c162ff6,0x3c13aeec,0x3c15fb55,0x3c07825a,0x3c0ca570,0x3be56369,0x3be08f23,0x3c962403,0x3c38c027,0x3c5c34e6,0x3c4a4c82,0x3c68e3fe,0x3c458737,0x3c205ced,0x3c34708c, +0x3c5f2463,0x3c1088f7,0x3be927ec,0x3c0734a1,0x3bf9ed2f,0x3c11ddbd,0x3c1d7687,0x3bd6f2bb,0x3c57568b,0x3b600290,0x3ba82e3a,0x3b9ccf85,0x3b955235,0x3b8f93b5,0x3b86580d,0x3b62fa12,0x3b834504,0x3b96ea1e,0x3ba8752f,0x3bbe8a54,0x3bc7e5f8,0x3bdb6244,0x3bbe37c0,0x3bb169e7,0x3ba9f308, +0x3b95046e,0x3b9e2745,0x3aa0b154,0x3c4dc2d5,0x3c92bfb5,0x3c8b92d2,0x3c3f4ccf,0x3c9ab06f,0x3c8d3c03,0x3c90ede5,0x3c8ac2c1,0x3c7212e5,0x3c86d006,0x3c839679,0x3c7ab787,0x3c8c907d,0x3c3923b5,0x3c576668,0x3c8ed66e,0x3babc376,0xba1a3272,0xbc87a392,0x3b210f14,0xba70b8c1,0xba908682, +0xba3f7b96,0xbb2626a0,0xbb3bfef1,0xbac5a084,0xbb258fd6,0xbb1eed58,0xbb24a133,0xba598c3f,0xb9dadfd3,0xba0cdf0b,0xba36519e,0xba41f3ec,0xba4b9cdd,0xba3a3770,0xba16d8f1,0x3b3fe398,0xbc83508a,0xbc8c9772,0xbb0b389f,0xbc56694c,0xbc929342,0xbbac7b56,0xbbe75775,0xbbf2a2b2,0xbbb7c975, +0xbc08b0b1,0xbc0df2cd,0xbc1233c9,0xbc8e96a3,0xbc44312d,0xbbb50968,0xbc9d9db3,0xbc52a8c6,0xbb71cf8a,0x3a739505,0xbb287ae6,0xbadcb876,0xbbe45a37,0xbc05355f,0xbb823586,0xbbdf34f2,0xbbd0604d,0xbbc7ce9b,0xbac40cd6,0x3a112ec7,0x393d83c1,0xba98fb0e,0xbb25fe21,0xbb1a2663,0xbb5b2611, +0x39b932be,0xbb907b96,0xbc34e102,0xbad99fa0,0xbba5d019,0xbb1ae4a5,0xbb933a80,0xbbde4b3c,0xbba54a08,0xbc0a6a83,0xbc39c7f5,0xbb9a9889,0xb94addf5,0xbb80e180,0xbb190bff,0xbbae6197,0xbc2b2ded,0xbb094d3a,0xbc54665c,0xbbc56c53,0x3aec4c4f,0xbb8baa0a,0x39994668,0xbc3ed016,0xbc7d4cc2, +0xbbf3ccd2,0xbc690cea,0xbc544ffe,0xbc4d1009,0xbb6aa878,0xb9ef054e,0xbb01460b,0xbb2f1781,0xbb84eec8,0xbb772bef,0xbb7054b9,0x3aeba9f1,0xbba947cb,0xbc131028,0xbaa447cc,0x3b81d241,0x3b1218a2,0xbb5ce22d,0xbb555192,0xbbe22341,0x379048aa,0xbc1dc195,0x3b6a9d61,0xbaf4d6ff,0xbb23f2d0, +0x3a18b003,0xb953aa5a,0xbc4263ec,0xbbcc0a6e,0xba54089a,0x3953f0a1,0x3bb9b18f,0xbb1925b8,0x3a97e98c,0xbc83bf56,0xbcc1b431,0xbc2c4b39,0xbca5ba7b,0xbca32267,0xbc97e700,0xbbd5fc2d,0x39106dca,0xb988b28b,0xbba729ed,0xbc0c16b9,0xbc0c3a47,0xbc0d5d4b,0x39be3568,0xbba73145,0xbbbdf52d, +0x3c25d9f4,0x3bf63589,0x3c3c9c30,0x3c31af49,0x3b96bfdc,0xb76b2fb0,0xbb784ec0,0xbab18bed,0x3b8ad9d2,0x3c304d81,0x3bcdabc5,0x3c2801fc,0x3abbf5f8,0xbbd89379,0x3b83a9b7,0xbd569419,0xbcc53817,0xbbab69bd,0xbbb504b2,0xbc422a7c,0xbc9f5c6a,0xbcbd7e03,0xbc93f2d2,0xbcc375e3,0xbc5f7380, +0x3c4b491e,0x3c6637f0,0x3c71373d,0x3c48a4a7,0xbada6271,0xbb8c866e,0x3c455121,0x3bcc5401,0x3bf7f2f5,0xbb63815c,0xbbe4042d,0x3c16b368,0x3c3e12df,0x3c12d6f4,0x3b8a5926,0x3aa73f7a,0x3ad776e0,0xbaa3c25b,0xbb76245b,0xbbfe0b6b,0xbbb57a44,0xbb0dd2bd,0x3ac3a311,0x3abcb656,0x3bd2bca8, +0xbd12203c,0xbb3fd23d,0xbb688f98,0x3ba58965,0xbbe0f579,0xbc132232,0xbc5678ca,0xbc71982a,0xbc8fa9c0,0xbbf40a1e,0xb734211a,0x3b76fead,0xbae9fbc7,0xbbbd922e,0xbc8fe414,0xbc45cde9,0xbc5902fc,0xbc9a115b,0xbc9306f7,0xbbe0cd45,0xbbb37eec,0x3b20e146,0x3b49e401,0xbc019e06,0xbacbe867, +0xba019bb4,0xbaf0dc20,0x39b98fe5,0xb98ea098,0xbbaaf361,0xbb6745f5,0xbbde6910,0xbc0e312f,0xbc92a11f,0xbc9f8391,0xbca8b77d,0x3ab6dfaf,0xbce6f017,0xbca4e855,0x3b964bb3,0x3a9bf4fc,0xbcf079f0,0xbd15503d,0xbd2f0973,0xbd396646,0xbc93ee7c,0xbc21b8ae,0xbc860ca4,0xbc154bb5,0xbc29b34a, +0xbcb2779d,0xbc95c002,0xbc87a767,0xbc4658ca,0xbc1858cd,0x3931245a,0xbbcadaf4,0x3a09f304,0x3ba63882,0xbc4b41d2,0xbb763bdd,0x3b15b7f8,0xb995f6f6,0x3a4a9822,0x3a35ae26,0xba2791ec,0x3a28fb21,0xbb3465e0,0xbb4f1225,0xbb217575,0xbbb792c3,0xbca90b24,0xbcb87a8e,0x3cb85f38,0xbbdea844, +0xbd4426d7,0xbd974332,0xbdb6d3c4,0xbd4f2e9c,0xbd029efd,0xbce297fe,0xbcbabbf5,0xbcb3d614,0xbcc4510a,0xbcb6d6e4,0xbcb34342,0xbcb7408a,0xbc8eb11f,0xbc798603,0xbc277832,0xbc533d65,0xbbab372c,0xbb80ef4d,0x3b2d8b2a,0x3bac169d,0xbbe1c927,0xbb8e0428,0xbb9e0407,0xbbc6e752,0xba918755, +0xbb13f2a6,0xbb820dc5,0xbae4caa8,0xb95bffde,0xbb5883b1,0x37bdc762,0x3bc3568f,0x3caacafb,0x3cdbc3d0,0x3cd920f1,0x3cca9577,0x3ca18304,0x3c37ffa5,0xba6d3ffe,0xbcbcdf0b,0xbd25d7d0,0xbd4e03d6,0xbd1e7769,0xbcfee11c,0xbcea1569,0xbcb05764,0xbc744e8b,0xbc2ee5e3,0xbc6d42ae,0xbc7fa293, +0xbc3d5f30,0xbc500174,0xbc14e7dc,0xbc2d6c48,0xbc3b3e58,0xbbbbb79d,0xbb47d147,0x3abfffc4,0x3b69b657,0x3bb0d990,0x3aa08fc3,0xb888a68c,0xbb156af9,0x3b96e169,0x3bfe7cb8,0x3c3cc6e1,0x3c9159e4,0x3ca1e3b4,0x3c9f3788,0x3c9a4d3a,0x3bab239e,0x3a4a3de0,0x3c4b0b6b,0x3c9b77a2,0x3cfbafa7, +0x3d1fd4bf,0x3d20571e,0x3cd910dd,0x3c57382b,0xba4f8aea,0xbc35ef5f,0xbccd5a14,0xbd03e9e4,0xbd01a2c0,0xbcdb0c70,0xbcaf520c,0xbc4a9062,0xbc11a1e9,0xbb8c703f,0xbb022636,0x3b22b851,0x3b6257bd,0xbb2eba08,0xbb0cab7f,0x393aeeca,0x3b4513d8,0x3c063b73,0x3c306882,0x3c57bdc3,0x3c4ce68f, +0x3c4554ca,0x3c345cf3,0x3c37433d,0x3c193ead,0x3bf4ab93,0x3bc756ec,0x3b8852b4,0x3c3536f4,0x3c84ba63,0x3c600fc7,0x3c620dff,0x3c59c4fc,0x3c711451,0x3c95cb74,0x3c9792b1,0x3ca25720,0x3cb3d4be,0x3caec734,0x3ca7a6b5,0x3c95cd9e,0x3c885c71,0x3c6e5af4,0x3c583635,0x3c4528ce,0x3c5178fd, +0x3c1fcd34,0x3bd89f9d,0x3be67dbf,0x3bee3b0c,0x3bf9aea6,0x3be245fd,0x3bd6ffab,0x3bb72590,0x3bd41d22,0x3b17ca41,0x3ba6d33a,0x3b2ac5e8,0x3b4ad2c3,0x3b7a6d60,0x3b8451d8,0x3b8c50d3,0x3bbcde7c,0x3b6e06e9,0x3bd78539,0x3c08da2f,0x3c074fd1,0x3c23b8f2,0x3c3869fe,0x3c489a7b,0x3c4c68d3, +0x3c51a1ce,0x3c57728c,0x3c5aca28,0x3c609ea7,0x3c65e122,0x3c6bb5ca,0x3c5c8c0a,0x3c500c08,0x3c40516a,0x3c2c000c,0x3c21c325,0x3c03d6d3,0x3baad5b9,0x3bf432a6,0x3b979198,0x3bae42c8,0x3b7b1122,0x3b84ef5b,0x3bb5dd0f,0x3b738556,0x3b36d7e8,0x3bbbe645,0x3c0d3414,0x3be15e42,0x3bf2c19f, +0x3bc297ae,0x3ba7dc0d,0x3c0393d0,0xb9f88b7f,0x3c30b254,0x3c20a05b,0x3c25e6c8,0x3c28aed6,0x3c273aea,0x3c28f165,0x3c2cc315,0x3c387395,0x3c41397d,0x3c48d72c,0x3c511cbc,0x3c586daf,0x3c637a5c,0x3c539742,0x3c47eaef,0x3c3e808a,0x3c322407,0x3c2671c4,0x3c32a39b,0x38929ce5,0xbb3751cf, +0x3b46c9cd,0x3a762cc3,0xbb6da1ed,0x3b2ac1f7,0x3afe60bc,0x3b0a5570,0x3b431ea0,0x3a9a990f,0x3a4487bd,0x3a8cca89,0xbb248beb,0x3ad40e7f,0x3b5ccfec,0xbb2df870,0x3c3445b2,0x3c335a32,0x3c97af94,0x3c0130e0,0x3c128495,0x3c2b908f,0x3c2e7e83,0x3c505b0e,0x3c5529a0,0x3c479714,0x3c3bbad2, +0x3c30dc9c,0x3c16bea4,0x3c32490d,0x3c3aaacf,0x3c49dcce,0x3c33a34e,0x3c2e83ed,0x3c2e5154,0x3c3246e2,0x3c21ca75,0x3c20448a,0x3c9e1ca0,0x3c637589,0xbbec109a,0x3ca176cc,0x3c6b54fe,0xbbe72c11,0xbbb2ecc3,0xbba37c73,0xbbaa58c3,0xbb21cd7b,0xbaf2ff3c,0xbb085e92,0x3c737b38,0x3ca10033, +0xbc01a3ac,0x3c5c063a,0x3c1594f1,0x3c432957,0x3bf32e02,0x3c3a2d42,0x3c45ef5d,0x3c9bbe74,0x3cabcc45,0x3c980b4b,0x3c821d4d,0x3c51a016,0x3c15d95f,0x3c42fdcd,0x3c5f6784,0x3c86cec0,0x3c5d5c6d,0x3c574aa8,0x3c5ebf26,0x3c6867aa,0x3c3bf6b1,0x3c731ebb,0x3be9fa6b,0x3c3e6823,0x3c8a4490, +0x3c2ba085,0x3c19a9e1,0x3c3b7288,0x3c1a3c31,0x3c502ed9,0x3c5b5970,0x3c5f8045,0x3c33c9a4,0x3c191d4f,0x3c390a4e,0x3c1d320b,0x3c2a48a0,0x3c5754bc,0x3c5f6a9c,0x3be2f4c4,0x3bc936cc,0x3c521b23,0x3c5640af,0x3cd0278a,0x3cf4fa9c,0x3cc10025,0x3ca3b03a,0x3c7a7eef,0x3c03f3ba,0x3c82b35a, +0x3c982aa0,0x3cc6545b,0x3c8aa7fd,0x3c7adb19,0x3c7fa01a,0x3c77870f,0x3c5350b8,0x3c3f3f9b,0x3c6b9d02,0x3c60a389,0x3c78349c,0x3c4ff75a,0x3c1df76f,0x3bc41cfa,0x3b533df0,0x3b1cfaf5,0x3bdd3b6f,0x3ba78971,0x3c0dc807,0x3bb8a00f,0x3c1c4596,0x3c2a596a,0x3b8cdfb0,0x3c317e6d,0x3c9e0651, +0x3bdeaecc,0x3b579bcb,0x3c44dd71,0x3c4eb64f,0x3d10fc91,0x3d33f265,0x3d18ac03,0x3cf62434,0x3c993cdf,0x3ba1f74e,0x3c60a936,0x3cb8cd6a,0x3d0609a9,0x3cbff166,0x3ca955f0,0x3cabb119,0x3ca7c46f,0x3c634394,0x3c4474e6,0x3c272e23,0x3c1a4136,0x3c7fcb1b,0x3c56d306,0x3c1a5030,0x3b0f3a8e, +0xba567059,0xbb8ee671,0xbb9668eb,0x3bba2201,0x3c0672a0,0x3b5aaeec,0x3c176810,0x3c0970a4,0xbad29c8b,0x3c7fa741,0xbc458cc3,0x3c4093a2,0x3c56794e,0x3c96f806,0x3c3427e4,0x3c8b4270,0x3c85da08,0x3c85ea99,0xbbf0501f,0xbc00d478,0x3c8c6391,0x3c39a8b6,0x3beb9e23,0x3aae39cd,0x3b0ded17, +0x3b4cfc74,0x3a5da08b,0x3c17a20a,0x3c5368c4,0x3c9bc2d2,0x3c72f290,0x3c42c1b3,0x3ca2a447,0x3c387383,0x3be3dcfb,0x3a408cc2,0x3b1d36b6,0x398aa8d7,0xbb8b8838,0xbb829ad7,0xbb12b136,0x3b560639,0x3bd10f73,0x3c45bfa7,0x3ca0101f,0xbbf5c673,0x3cac5b3f,0x3b9772e3,0xbbeb350e,0xbb8050e3, +0xbc521548,0x3c3df980,0x3c871676,0x3abeba38,0x3bf6689f,0x3bc330df,0xb9c713b0,0x3b837ccb,0x3bd961ea,0x3af5efdb,0x3bf16a0f,0x3c57e11a,0x3cacc885,0x3c90bb7a,0x3c5528fc,0x3c22da4a,0x3c1f7e64,0x3bf11156,0xba2ebbad,0xb8c9d544,0x3ab0104e,0xb914dea1,0x398031eb,0xba5e3625,0xbb70a2ce, +0xbb289ad2,0xbbb550b7,0xbc03da17,0xbc53e839,0xbc46b249,0xbc0a7312,0x3c5a7a90,0xbc808230,0x387d7672,0x3c91d719,0x3d035dba,0x3d4cc90e,0x3d55059d,0x3d3dbfd7,0x3cc96228,0x3bccb8dd,0xbbc17ebd,0xbb8e7b30,0x3c7fedaa,0x3cc3c30a,0x3c919f4b,0x3c334f13,0x3aa09928,0xbbe30b84,0xbbc832c9, +0xbb98fc23,0x3b802b02,0x3c51d13a,0x3c0334c8,0xbb5f3e13,0x3b31eec4,0x3bb52249,0x3a0ba6aa,0x3a3fc42e,0x39e20a80,0x3a80e8fc,0x3a5be60b,0xbafe7fc4,0x37cf222f,0x3b33d5cf,0xbb97bbf2,0xbc25daa1,0xbc7fe68c,0x3c219b6b,0xbc3fdef9,0xbcd1d924,0xbc4c5490,0x3c7ff314,0x3cf536f9,0x3cd0c6b1, +0xbc0d615c,0x3bc43725,0x3c1d22b0,0x3c2ddc1d,0x3c15cdac,0x3be3868d,0x3b032867,0x3bf4e148,0x3c173e04,0x3bf1568b,0x3b9c52ff,0x3b171bbc,0x3b98831d,0x3be112a3,0x3bd8b0d4,0xbb4f3977,0xbb1c26dd,0xbb2d888b,0xbb81cf19,0xba7695a8,0xb9973193,0xbb832ccc,0xbb379b01,0xbb43e1ff,0xbc06347a, +0xbb8ab008,0x3b1cb59b,0x3c55c986,0x3c70d8fc,0x3d3bc485,0x3da15b25,0x3dbbb523,0x3d9ebfb2,0x3d5f7668,0x3cdbe76d,0x3bf18da3,0xbb668dbc,0x3b4356aa,0x3c01fbde,0x3c9b9938,0x3c39e1c6,0x3c4e8dae,0x3c9979bb,0x3bb61a5e,0xbb279d72,0xbb6e9be6,0xbb9effaf,0xbb717e83,0xba84ec28,0x3a6bdba1, +0x3a71b342,0xbb478358,0x3ac56a5f,0x3b56f1dc,0x3ba013d3,0x3b15fdb3,0x3a4c5604,0x3b7991a7,0x3c028165,0x3c5cf488,0x3ca31c4d,0x3ce0aa75,0x3cfa2dbe,0x3cde0921,0x3d45668f,0x3c6d7da4,0x3d02a04e,0x3d1eae12,0x3d2c1584,0x3d431290,0x3d49b659,0x3d3351b6,0x3d0897e2,0x3bf07016,0xbc3d0f69, +0xbcafde9e,0xbcd4519f,0xbcbc3a75,0xbc75eb35,0xbc10ce3c,0xbbbca390,0xbbfcc829,0xbbc015b9,0xbb84814c,0xbb1a8805,0x3b59610f,0x3bbf827b,0x3bbdcb53,0x3b3d7b9a,0x3a866e13,0x3b6201ce,0x3c1ed5da,0x3c5ba3e5,0x3c5b720b,0x3c6e8ef3,0x3c77f5e4,0x3c6f79b8,0x3c84f69f,0x3ca4c823,0x3c9880e3, +0x3cd7509b,0x3cc0d53d,0x3cc8572a,0x3cdb3d64,0x3cf49fd6,0x3d017813,0x3d0aa334,0x3d165ac6,0x3d2e2d05,0x3d261448,0x3d225724,0x3d19095c,0x3cf88aac,0x3cb66f7e,0x3c5d1414,0x3c368de8,0x3c13d7a5,0x3bd19743,0x3c126a9e,0x3c0f7930,0x3c4dc29b,0x3c6e167d,0x3c2240af,0x3c12c8c8,0x3c181adc, +0x3c136bcd,0x3c121938,0x3be6e2ae,0x3c02e66a,0x3c04bb72,0x3bf2a730,0x3bed88eb,0x3c0383f5,0x3c2f2392,0x3c5cb80d,0x3c76af3c,0x3c9a1f52,0x3c052402,0x3c9ed047,0x3c9fe8ef,0x3cb2b416,0x3cc334c6,0x3cd58838,0x3ce29c9c,0x3cf244ac,0x3ccea39f,0x3cb1f291,0x3c9b9691,0x3c899a52,0x3c8247d6, +0x3c7b04cf,0x3c67b0a7,0x3c4da6ea,0x3c2ea902,0x3c15e915,0x3bc925de,0x3bc2818f,0x3c0e256f,0x3c3794d6,0x3c77401a,0x3c503249,0x3c73c9d6,0x3c93cad4,0x3c925f5f,0x3ca2094d,0x3c9a52b0,0x3c9b7c56,0x3c939da9,0x3c87e433,0x3c8a3cf6,0x3c705cba,0x3c8213a0,0x3c8f8167,0x3cb24191,0x3ca239c3, +0x3c9c2f15,0x3ca5d459,0x3ca7920f,0x3cac08c8,0x3cafbc5e,0x3cba20ea,0x3cb0690b,0x3cacabf7,0x3ca67a5c,0x3ca18ccb,0x3c9a3714,0x3c92d73c,0x3c8d9b3d,0x3c89aa4b,0x3c859dd6,0x3c813b1b,0x3c7a4dfe,0x3c5de90e,0x3c9b99f3,0x3c8812e5,0x3b80891d,0x3caf65f8,0x3c96b457,0x3b816651,0x3b936ff7, +0x3b9980dd,0x3ba05d28,0x3bbeb831,0x3bca2f15,0x3bd9c3d0,0x3c9385ed,0x3cbd5174,0x3b664187,0x3c8b147d,0x3cae9a37,0xbc41ff6d,0xbc4283d9,0xbc6dc7d4,0xbc24909d,0xbc39ad29,0xbc24d128,0xbc528624,0xbc603153,0xbc5db0cb,0xbc662dd8,0xbc659985,0xbc6640e3,0xbc5369eb,0xbc4a9e7b,0xbc3b1484, +0xbc4d36dc,0xbc4e3757,0xbc48c4eb,0xbc44e47a,0xbc25177d,0xbc51a4c6,0xbc26ce2e,0x3a54ff4c,0x3ccb1011,0xbc599618,0xbabe1151,0x3ca9443d,0x3ca0be45,0x3c9d7aa0,0x3c980d60,0x3c95245d,0x3c92f9ab,0x3c88e4da,0xbaf207b4,0xbc7463f3,0x3caa95f9,0xb90978d7,0x3bbf2208,0xbc8e8bbb,0xbc35b160, +0xbc44bba9,0xbc1b6d9e,0xbc84bbac,0xbc9aec0b,0xbc99ac4f,0xbcacf0e8,0xbcb0513d,0xbcad30b3,0xbc964161,0xbc84e5ea,0xbc5f46d1,0xbc885a42,0xbc8e118f,0xbc874d90,0xbc77fd08,0xbc45973d,0xbc56e5cd,0x3c03fc16,0xbb7a4208,0xbb96bf3c,0xbaef3cc7,0xbad58648,0xbc0e2cf3,0xbc144dd5,0xbc3e0b91, +0xbbfab75b,0xbc1c1d5f,0xbc036b7f,0xbbb018e3,0xbbdad43d,0xbb09bd63,0xbb9fef75,0xbc2897c5,0xbc1a1c70,0xbc88098c,0xbc4cee43,0xbc3bdfac,0xbbcf218a,0xbca00f8e,0xbccce6ae,0xbcd3da64,0xbcf4672d,0xbcf51a5a,0xbcf3cb8e,0xbcbe9ccf,0xbca39614,0xbc7cc3ab,0xbcac9163,0xbcb253bb,0xbca5ccf1, +0xbc85b962,0xbc5f005d,0xbbebeec8,0xbaa5ed68,0x3aae06ce,0x3b8ad98a,0xb8f40a62,0x39eb6b12,0xbba8d393,0xbb0215b8,0xbbb9ce2e,0xbb1ca3e1,0xb95b2350,0x3a5b76e6,0xbb4b32d4,0x38edcffd,0xb9c11d69,0xbb788d3c,0xbc05a3e8,0xba5b72ff,0xbc8d5966,0xbc44a169,0xbc0a01e9,0xba87ef91,0xbca4a78c, +0xbcf61a83,0xbd037a07,0xbd1e8064,0xbd2ec1f1,0xbd2f0428,0xbd0e4fae,0xbcda8dd5,0xbc9f654e,0xbceeb8eb,0xbd01968d,0xbceea428,0xbcba13f5,0xbc659783,0xbc05cb2f,0x3b94a0d6,0x3b83883b,0x3c48fe4d,0x3bdc430a,0x3bbc3c69,0x3ab14ded,0xbb3beb46,0xbb5fa5a2,0xbb130e30,0x3b8d04c1,0x3bcf2cd3, +0x3b285964,0x3b9bd59a,0xb8fdf4f2,0xbb34785a,0xbb4f9179,0xbd0d3f37,0xbcd2e8d8,0xbcd8c5bd,0xbcd66c79,0xbcc770d0,0xbcf3e169,0xbd100ec5,0xbd1dfb3e,0xbd397806,0xbd0b9cd2,0xbb4dd0a8,0xbb89c39f,0xbb116f2f,0x3b6730ea,0xbb5356e9,0xbba0c4f5,0xbbaeafa5,0xbc01f97d,0xbc5a8a47,0xbc556718, +0x3ae511a1,0x3b35bf5b,0x3c36e9d4,0x3bae430a,0x3b198e6d,0xb902324e,0x3a8e95b1,0xb9f35670,0xbb95f4bd,0xbbbc54be,0xbb6b7a15,0xbacfb7c8,0x3acb4605,0x3b9389be,0x3c1b500d,0xbce57699,0x3b4ad5b5,0xbc32bb48,0xbbaf7a1e,0xbc4edd29,0xbcb3104e,0xbc88c32b,0xbc70fadd,0xbc986ca7,0xbc6b71c9, +0xbc6876e9,0xbc66e9d2,0xbbff70cc,0xbbc37507,0xbc3be1c0,0xbc9b581a,0xbce8fa1f,0xbd1659e7,0xbcd9dbcd,0xbc8392c3,0xbb70c4c8,0x3bd0ef0e,0x3b3ba1e1,0xbbe11b6f,0xbb72ba59,0xbaa8d42e,0xb9220352,0x39c1016a,0xbaae259e,0xbb808bde,0xbb87fcfc,0xbbdd6120,0xbc036f20,0xbc4d4fc1,0xbc94d1ba, +0xbc83ffdc,0xbb18b1af,0xbc12a134,0xbb0921de,0x3bbb4cb1,0xbb462caa,0xbd2af173,0xbd5673fb,0xbd81f7de,0xbd932c0c,0xbd52f0b2,0xbd17417c,0xbceae435,0xbd0e6224,0xbd2b18f1,0xbd320fdd,0xbd14e437,0xbcc5eaaf,0xbc135001,0xbc1d1f63,0xbc12f3e1,0xbc278da3,0xbb9d8535,0xbad49d7a,0xbbfd74fa, +0xbb947d3f,0x3a571e27,0xb89116a8,0xbad0f3d3,0xbac2cbf1,0x39728612,0xbaa31824,0xbba27c2f,0xbbb0dc77,0xbb0f4f9c,0xbbd44556,0xbc1b24d3,0xbc57acf2,0xbbe8a4eb,0xbd047ccd,0xbdb8116d,0xbddc8450,0xbde0c938,0xbda21450,0xbd513175,0xbcc9cf0d,0xbcb35cb7,0xbc9ec6a7,0xbc919ab9,0xbc8d13af, +0xbc6dfd82,0xbc332aa2,0xbc936845,0xbcbd1c0e,0xbcb7a950,0xbca74055,0xbc365909,0x395d3252,0x3b521755,0xba948092,0xbbc1d993,0xbb991ed1,0xbb8c93b8,0xbb8b0db1,0xb9255b67,0xbb0051bd,0xbbbe8a31,0xbbab28d4,0xbbd1e225,0xbc6371e8,0xbc296dbe,0xbc3cd397,0x3b0d0358,0xba0f3f4e,0x3d4eac3b, +0x3cf5cbb9,0xbbfe0bf4,0xbcba164c,0xbd243d82,0xbd8741ec,0xbd94b273,0xbd6711dc,0xbd31c7b7,0xbd18a076,0xbd25e2ec,0xbd1401d4,0xbcf1aa6d,0xbca5956e,0xbc1bfc08,0xbb948833,0xbb5ddb13,0xbb8bbd1e,0xbbefc002,0xbc132cbd,0xbb8c5352,0xbba1d10e,0xbb9c8b3b,0xba0452d4,0x38077850,0xba90c9f5, +0xba5fddce,0xba6ea238,0x3a8c1a19,0x3b3c949e,0x3c061b82,0x3c62f7a9,0x3cd809a0,0x3cfc806c,0x3cff4ec0,0x3cecc6ad,0x3ce23e18,0x3beeb7f0,0x3ba93dd1,0x3c4a03a3,0x3c80e3b1,0x3c8b7b05,0x3be1b93d,0xbc8fe79c,0xbc9b36e3,0xbca6e665,0xbc9f5edc,0xbcef89db,0xbd065d8f,0xbcf8d237,0xbcf719b2, +0xbcdce625,0xbcba96f2,0xbc937834,0xbc31b1ac,0xba470d8f,0x3b31263b,0x3ab55f9f,0xbb090ba5,0xbb916a2a,0xbb14a795,0x3b0eb82a,0x3bdefd6c,0x3c2f5719,0x3c4d1475,0x3c427245,0x3c3d596f,0x3c1e49f1,0x3c5da5d5,0x3c4c06bb,0x3c5a03f3,0x3c31e708,0x3c288bdf,0x3c534da5,0x3c81bea7,0x3c95cc87, +0x3ca4ac48,0x3c92eaa4,0x3c96e244,0x3ca1bb72,0x3c8b588e,0x3c4b2774,0x3c1ee212,0x3c1576c2,0x3c0c8146,0x3bf23778,0x3b938c8f,0x3afd9ad9,0xbad6e311,0xbb14b35c,0xbb9fb741,0xbb97a72e,0x3ad266d0,0x3b4d5252,0x3bc125f2,0x3bea5e83,0x3c157758,0x3c152565,0x3c11f1c2,0x3bbd1754,0x3bbf65e6, +0x3bc27323,0x3bdb3205,0x3bb669ac,0x3be7af7d,0x3c02f9bc,0x3c2be362,0x3c25fa9e,0x3cab06cd,0x3c5f7535,0x3c5ad6b8,0x3c3e096a,0x3c37538e,0x3c28b99d,0x3c146347,0x3bfdb50a,0x3c0f419d,0x3c32ab09,0x3c4622bd,0x3c622902,0x3c71c503,0x3c813b93,0x3c645e05,0x3c4d35fd,0x3c38ffe4,0x3c23b0ff, +0x3c1e8f1b,0x3bbb7f5e,0x3c016582,0x3ba49c16,0x3b710740,0x3bda2715,0x3bce9507,0x3b8c1556,0x3bb259cb,0x3bbfa698,0x3c0c99be,0x3c0659a6,0x3c27a353,0x3c4a2867,0x3c4c232a,0x3c736a12,0x3c5aa4f2,0x3c55d0e6,0x3c124c2c,0x3c276114,0x3c33c8b7,0x3c271310,0x3c1fedc1,0x3c1b6e2a,0x3c18d333, +0x3c0ef6bf,0x3c1fc890,0x3c2588e7,0x3c2dad5f,0x3c30d864,0x3c36888e,0x3c458057,0x3c38a204,0x3c30feec,0x3c28efc2,0x3c1879b1,0x3c13c98e,0x3c038a42,0x3bc218b8,0x3c2f7884,0x3cb71162,0x3b9b0c49,0x3c2e0912,0x3cc61f47,0x3cc2b186,0x3cbe2e80,0x3cb9722e,0x3cb6e223,0x3cb3eda3,0x3cb1cfdb, +0x3c546e1d,0x3bed70cc,0x3cc5c9ca,0x3c6c5899,0x3c20106a,0x3c7ed772,0x3bd3b0be,0x3c926b55,0x3c47d8be,0x3c64097f,0x3c4e689f,0x3c846d26,0x3c8c7fd0,0x3c89f725,0x3c852ed0,0x3c808907,0x3c742772,0x3c76d082,0x3c7c648a,0x3c88ba36,0x3c831605,0x3c82a12a,0x3c83c446,0x3c83f9b5,0x3c69479c, +0x3c9df373,0x3bf132cc,0xbbb26b8b,0xbcc6a56d,0x3c3b690c,0xbb9beb36,0xbcc396c8,0xbcc27229,0xbcbf1cb6,0xbca957f2,0xbcb3bf0f,0xbcb3b399,0xbcadf066,0xbb894776,0x3c5b769b,0xbcc4435f,0xbbf4c501,0xbc3e828d,0x3c801452,0x3c3ee2b7,0x3c4020a9,0x3c22015c,0x3c97a4ea,0x3cafafd4,0x3ca7abe1, +0x3ca0f359,0x3c933eed,0x3c8760d8,0x3c824b9e,0x3c8cb425,0x3cac3fda,0x3ca54a88,0x3ca7330f,0x3cabf347,0x3ca14514,0x3c9caa12,0x3c93e530,0xbc0336e7,0x3c3038c9,0x3c2d21dd,0x3bcd23e4,0x3b62a025,0x3c0bbc4a,0x3c12dd1b,0x3c2b4533,0x3bdf4e1e,0x3c44c09d,0x3c495275,0x3bd526d4,0x3c0b1386, +0x3b0ab5f6,0x3b787e7a,0x3c5dcf91,0x3b1c9dda,0x3bd5a98e,0x3c27437a,0x3c1afdf0,0x3bca6d3a,0x3cbd089f,0x3cf34e79,0x3ce06d0a,0x3ccfd538,0x3cb245cb,0x3c94343a,0x3c93e704,0x3ca204df,0x3cdcc613,0x3cc6fbdd,0x3cc5664e,0x3cd002c9,0x3cb74e81,0x3cc4dab3,0x3c53fca9,0x3bf305e3,0x3c29cae7, +0x3c3914af,0x3c231205,0x3b25337c,0x3bc06fb2,0xbab82e85,0x3c03304c,0x3b25f195,0x3bdf5bab,0x3af4d1a8,0x3b6ae370,0x3b58283c,0x3b9f47d5,0x3a8b3224,0x3be6f0f7,0x3ad01753,0x3b4b35f5,0x3b2c8804,0x3adfa21c,0xbb2915ce,0x3cad7007,0x3d02aa83,0x3cfe2f69,0x3cf4ac59,0x3cc1ad31,0x3c8caa6a, +0x3c76e6b1,0x3cb079d6,0x3d08c5f4,0x3d039411,0x3d03cf6e,0x3d08875a,0x3cea02cd,0x3cda72c3,0x3c829eb8,0x3b816388,0x3c790438,0x3c3a1a78,0x3c62f873,0x3c21ee68,0x3b8932d4,0x3999539f,0xbb6bc1bb,0x3a86a38a,0x3ba7234f,0x3bf51524,0x3b229a48,0x3bc20ff5,0x3b6aac09,0x3ab2d406,0x3c353b63, +0xbcb78c94,0x3c855bc2,0x3ccf2f3c,0x3cd438b1,0x3cc77c8b,0x3d186592,0x3d1c0a02,0x3d0a8065,0x3c8e7876,0x3c8bcf8e,0x3d23dddb,0x3ce1b8bd,0x3ca16f66,0x3c4cad3b,0x3c25bc65,0x3c3542f9,0x3c984568,0x3cad80eb,0x3ce24ed8,0x3c86b6cc,0x3b8e8f0f,0x3c8b6312,0x3c852738,0x3c234148,0x3b8762e3, +0xba34f201,0x3b17ac21,0x3ae1b006,0xbb3f7db0,0xbaaf3e4a,0x38e948ce,0x3a8af33d,0x3be9bf50,0x3bee96c1,0x3c2a3ad5,0xbc8987ec,0x3c3db18b,0x3c74529d,0x3c41da52,0x3aaeadd1,0xbca311ad,0xbbd24238,0xbb7772bd,0xbc2714c9,0xbbbd7ebd,0xbbbae7f1,0xbb87325d,0xbbf6051b,0xbb82be3d,0x3bf72bc3, +0x3c3f12f6,0x3c930754,0x3ceec765,0x3ca9b431,0x3ca675db,0x3c2450f4,0x3ad76d46,0x3b44d862,0xbabedce5,0x3b8e27aa,0x3bd087a6,0x3b292150,0x3aafeb45,0xba3f4e1c,0xbaf1a4b4,0xba9a1b99,0xbb8308dd,0xbb3695e1,0xbc29561a,0xbbe75e76,0xbba5d0e4,0x3c73e5b3,0xbc09bc9d,0x3c1e712f,0x3c765842, +0x3cc040f8,0x3d487839,0x3d61bf5a,0x3d6904c9,0x3d351692,0x3ce4db18,0x3c87ff13,0x3c833b86,0x3cf01063,0x3d1137ad,0x3d18f599,0x3cd57f53,0x3c5a2817,0x3b5b3911,0xbaadda2f,0x3baeec02,0x3c17d2a0,0x3c00d0ed,0x3bf9c4bb,0xbaf69018,0x3a82a50e,0x3b374883,0x3aa46fdb,0x3a8afd08,0x3ac9971f, +0x3af30540,0x393fa0dc,0xbb75e29c,0xbbc99e9f,0xbb5d3654,0xbbc30440,0xbc500495,0xbc2940cb,0xbcb3641a,0xbd21efbe,0xbd2eacd0,0xbcc20d2a,0x3d0848b3,0x3cc1899a,0x3c8e25d4,0x3c28477a,0xbb1c5035,0xbb69a401,0x3b3720e7,0x3b4d4285,0x3ba29348,0x3bdac6e4,0x3c0b2524,0x3c3288db,0x3c63e9b1, +0x3c5e0c84,0x3c4caa23,0x3c325591,0xbb3f6ab6,0xba0e8080,0xbadd87c9,0xbabbbbfe,0xba10a2a6,0xba2c9827,0x3aa76e7f,0xb7466afb,0xbb698da0,0xbb97a11a,0xbbcd3147,0xbc261e47,0xbc47a3fd,0xbc1d5dc5,0xbc03e0fe,0xbc1b3f67,0x3d038c5c,0x3d5fb187,0x3d92b75d,0x3d531e83,0x3cef3744,0x3c0b9b33, +0x3b9f2d65,0x3c6fefda,0x3c1448e4,0x3beff98b,0x3c067df1,0x3af35f6d,0xb9b0c453,0xb90bc1d3,0x3ab9f279,0x3aeed43d,0x3a11e95d,0xbb6b4ad6,0xba0820a0,0x3b9328c0,0x3b0e041e,0x3be4a6aa,0xbb3a3a8c,0x3a203d26,0x3aaf3f44,0xb7a3502f,0xba0f0ecc,0x3aeb34dc,0x3b8ddd71,0x3bd58d3f,0x3c1efc68, +0x3c67fbd2,0x3ce2c914,0x3d06d697,0x3cde0a76,0x3d2c4916,0x3beae8fb,0x3ce6bc82,0x3d274d5c,0x3d1b629b,0x3d2281ca,0x3d18bacf,0x3cdb1b4e,0x3c41f522,0xbc01422e,0xbc874d07,0xbc911eae,0xbc6f579f,0xbc30e5f7,0xbbe808b3,0xbc1be3fe,0xbbfbd6bf,0xbbca6233,0xbb5d27d0,0xbb43a0d1,0xbb925e20, +0xb9ff7522,0x3a94a21f,0xb98f69cf,0x3b1c099f,0x3b6e6af9,0x3be1faab,0x3c2c20f4,0x3c4e6d5b,0x3c8701de,0x3c871468,0x3c8a0125,0x3c8726ca,0x3c887eb1,0x3c9f29d2,0x3c8ec305,0x3ccb260e,0x3cb3b685,0x3ce9b5e3,0x3d141fb4,0x3d1f1394,0x3d37d658,0x3d326f08,0x3d385f18,0x3d4651d7,0x3d21d6d8, +0x3cfa73ed,0x3ca75bf0,0x3c847c5f,0x3c378cf2,0x3bd637d8,0x3bb399bd,0x3b7571c0,0x3ab4d1ad,0x3afc8edf,0x3b8a3457,0x3b4ebfb3,0x3b0f6878,0x3b90a418,0x3bfbb3bf,0x3c19467f,0x3c0de567,0x3c3e207c,0x3bf1940c,0x3c3bdf8b,0x3bd097d0,0x3c2ad182,0x3c061b2b,0x3c3bc29c,0x3c53a53c,0x3c5788d9, +0x3c47662c,0x3c9d537d,0x3c2d9793,0x3cde6f14,0x3ce11c7b,0x3ce9839c,0x3cf5fcc8,0x3d0120f6,0x3d04d5b8,0x3d0a8ccf,0x3cf5625c,0x3ce496c6,0x3ccf90c0,0x3cbc265a,0x3ca4e230,0x3c88c7c7,0x3c83a5a1,0x3c78e661,0x3c6f3e89,0x3c63d01b,0x3c4a8ad7,0x3c525900,0x3bf0ba1b,0x3c6932d3,0x3c7c6943, +0x3c55f8bd,0x3c599695,0x3c90616e,0x3ca147b9,0x3ca9a0a9,0x3c943cbb,0x3cb5d2d4,0x3cbc2f69,0x3ca66740,0x3cb1587c,0x3c9a65e4,0x3ca5f105,0x3cceb371,0x3cabe981,0x3ce557f7,0x3ccec294,0x3cd84d19,0x3cd83cab,0x3cdd3778,0x3ce19247,0x3ceb9794,0x3ce1851f,0x3cda2ceb,0x3cd24e21,0x3cc78f93, +0x3cbf1a1b,0x3cb59be3,0x3cb4fe6c,0x3cb1b67d,0x3cadcd49,0x3caa9b0a,0x3ca2ce25,0x3caacee4,0x3c8bffea,0x3c24040f,0xbae4a049,0x3ca6af92,0x3c354fae,0xbb27d6ce,0xbb0f93af,0xba9c63bb,0x3a54c295,0x3a0b6635,0x3aae4019,0x3b28c1af,0x3c51a7f8,0x3cbfa25c,0x3af3713f,0x3c482262,0x3cdd6518, +0xbc136ef6,0x3b73af7b,0xbc7529ea,0xbc01f42d,0xbc108f2e,0xbbf5acc0,0xbc0b8ce6,0xbc176f5f,0xbc29e293,0xbc2c3e28,0xbc306943,0xbc349689,0xbc2c3eb5,0xbc234c7a,0xbc0d564c,0xbc1ec7ff,0xbc1f45ad,0xbc1a3ddf,0xbc149b8d,0xbbeeb8d8,0xbc50fe58,0x3bb3a80c,0x3c8b5776,0x3ce2a03b,0x3902bdf2, +0x3c75855a,0x3ccd9f82,0x3cd31e97,0x3cd2a303,0x3cc3379e,0x3cd38604,0x3cd3cfa7,0x3cca55d0,0x3c67a86b,0xbb220dd6,0x3cd2930c,0x3c8e2677,0x3c96c180,0xbc4016a8,0xbc1ef725,0xbc00033e,0xbbd1bae3,0xbbfdbf72,0xbc1d699e,0xbc538107,0xbc650934,0xbc7ac780,0xbc803826,0xbc7ec2df,0xbc6e4c86, +0xbc34a139,0xbc5efe0a,0xbc584f5c,0xbc48fddf,0xbc1f2da5,0xbc1b0940,0xbbdab61f,0x3c9fd8bb,0x3aade00e,0x3b759182,0x3b6803b8,0x3b97e027,0xbae4b506,0xbb5fc3dc,0xbb3fc0ea,0x3b801ca0,0xbb467e78,0xbba85449,0x39491754,0xbb1a9223,0x3b9257e2,0x3bbf68be,0xbbb21235,0x3ae0938b,0xbc502f61, +0xbc71d080,0xbc20c81f,0xbbe4f170,0xbbd918dd,0xbc29da86,0xbc95d89f,0xbc9e41d7,0xbcb07454,0xbcbc6bd8,0xbcaae7c7,0xbc95ce45,0xbc2a170c,0xbc867dfd,0xbc856fd3,0xbc74fd24,0xbc26bde3,0xbc3a699c,0xb8af6a3c,0x3c2f2d3c,0x3c03a839,0x3bf762b7,0x3b562278,0x3bdb70a9,0xbb03f046,0x3b809c6a, +0xbb974f2d,0x3becbccf,0xb9d7ca99,0x3ba05659,0x3a8d8bc7,0x3b1ac011,0x3b42e095,0x3bf30fbf,0x394886c4,0x3b4c478a,0xbc585496,0xbc559042,0xbbf57880,0xbba144dd,0xbb1733a9,0xbbf5cb04,0xbca303ee,0xbcad5220,0xbce46404,0xbd00d9b7,0xbcfd0801,0xbcd637cc,0xbc7e400c,0xbcbe7bc1,0xbcbdeb45, +0xbca61588,0xbc4ccd08,0xbc2dc581,0xba7a8629,0x3c674271,0x3b66c076,0x3c771e87,0x3bb50f6a,0x3b3d640f,0xba9c0e94,0xbb37fb20,0xbacce5b5,0xba89515c,0x3b84cdca,0x3b2c9d1c,0x3a8681a1,0x38892127,0x38726f61,0x3b44c2ed,0xba998a60,0xbb9eaff0,0xbc81ec4e,0xbce2fcde,0xbc9e3e22,0xbc86c591, +0xbc5a0ed4,0xbc867e3d,0xbccdec3c,0xbd14abd4,0xbd07529d,0xbc469fe8,0xbca6a5aa,0xbc8d5b90,0xbb5b2627,0xbbe82e3a,0xbc0011f1,0xbc82a7f6,0xbc46a02c,0xbc78535b,0xba870524,0x3c86e56b,0x3ba77e91,0x3c373875,0x3bbcfbe9,0x3b85ab72,0xb90e4694,0x3a82a928,0x3a830c3c,0xbb40de6f,0xbabe33fa, +0x38842a90,0x3b053812,0x3be72dd6,0x3c3eb5e3,0x3c50d445,0xbbba2391,0x3be541da,0xbb1aea41,0xbbfe6d69,0xbc192aff,0xbc9f52ad,0xbc8e87f9,0xbc433046,0xbb1476c2,0xbc1301fa,0xbc2b611d,0xbbdb4a36,0xbbfd4255,0xbbcb92f5,0xbb7b4539,0xbc43f8db,0xbc94bbed,0xbcc8227c,0xbc4fa010,0xbc1517ca, +0x3ba91187,0x3bfc1564,0x3b3e1b14,0x39c9e2a6,0xbaf2cfdf,0x398fee5c,0x3a71d5cb,0xb8fe6bb0,0xbac73605,0xbae829f6,0xbb2e03bf,0xbb889e35,0xbbd35247,0xbc0f3838,0xbc65c70e,0xbbfdea2e,0xbbaa4072,0x3b4c9c11,0x3be382dc,0x3b93a84c,0xbb0bb8c8,0xbc70f436,0xbc92a97a,0xbce16ba0,0xbd191774, +0xbd3429ce,0xbd1e2f2e,0xbce48e98,0xbd073546,0xbd05f115,0xbce0b4b4,0xbcc207fd,0xbc6797c4,0xbad1e73d,0xbb56bbf0,0xbc02212b,0x3a542bc9,0x3aac2a80,0xba2c2cd9,0x3a51d0e3,0xb9a15e22,0x3a92465a,0x3ab40f60,0xb9879cf2,0xba95043d,0xb6bbbf6e,0xbaf0c0ef,0xbbada599,0xbbe93cf8,0xbb0ef08f, +0xbbea476e,0xbc0f8963,0xbbb0ea5d,0xbce8b705,0xbd2c4b66,0xbd6eabab,0xbd67739e,0xbd61277e,0xbd40eee0,0xbd0e79a0,0xbc8332e4,0xbc212874,0xbb4f194e,0x3b075c7c,0xbb15a55a,0xbb92498f,0xbbc2fd09,0xbc2baae8,0xbc724bcd,0xbc8e849a,0xbc4fcded,0xbbffa3c4,0x3baef758,0x3b9a1270,0xbb4cfd43, +0xbb81997d,0xbad22abb,0xba1fc7b6,0xba6174bc,0xb801c2b5,0xb8f52ef8,0xbb3bf6b9,0xbbb3d591,0xbc05b190,0xbc67ac09,0xbc4eb59f,0xbc93e58e,0xbc7d820b,0xbcb4dafe,0x3d554aeb,0x3cf1a7f6,0xbbbc803a,0xbca30654,0xbd37d109,0xbd48f309,0xbd3b15fd,0xbd078852,0xbcdfb9a9,0xbcc84eb7,0xbcc6aa02, +0xbc8f3051,0xbc83da90,0xbc9e7aad,0xbc2c2be2,0xbb4c2df1,0xbb3417e1,0xbae6f49f,0xbb2ba90e,0xb9ea1157,0x3bab6930,0x3a26f919,0xbb4804f9,0x39f7c615,0xb99ade2f,0xbb59fbfe,0xba9ac0d8,0xba84d30a,0x3b821230,0x3b0072b3,0x3be249e8,0x3c3c5dc8,0x3cd4dc9a,0x3d08e51e,0x3d1189c9,0x3d0f636e, +0x3d2112b9,0x3cc407ab,0x3c6abdde,0x3c778d08,0x3be5af4b,0xbb8c18ee,0xbcacd55c,0xbd23b124,0xbcfe84f2,0xbcc67479,0xbca04abc,0xbc9a8c40,0xbc91e0d7,0xbc6f2870,0xbca72551,0xbcb3c028,0xbc9f9ad8,0xbc937dac,0xbc689c1e,0xbb98761f,0xbb2872a1,0xbb12f217,0x3ad15dbd,0x3ac6ffbc,0x3b79a7aa, +0x3c06e0c3,0x3c0a65ca,0x3c304805,0x3c3acc6e,0x3c5f0466,0x3c7b97ad,0x3c85c2d5,0x3c7c815a,0x3c70d6d4,0x3c9de1b0,0x3cae1356,0x3caf405f,0x3c950b78,0x3c8cc48d,0x3cb4e779,0x3ccf1439,0x3cbc7ead,0x3cb606a4,0x3ca3313b,0x3c41d207,0x3afccbd2,0xbbda48d0,0xbbbdea68,0xbbb161bf,0xbb82f184, +0xbb8c23f6,0xbb897ce0,0xbbbb4dca,0xbba8d962,0xbbec289b,0xbb93e24a,0x3b2e01b7,0x3b85c35c,0x3bba1e47,0x3bcf2edb,0x3c19b89e,0x3c094b47,0x3c34be74,0x3bee433a,0x3c42ff4e,0x3c298294,0x3c612cbb,0x3c5b8a9a,0x3c850018,0x3c981d96,0x3cb3abb8,0x3ca26f53,0x3cfe8fc1,0x3ca10c25,0x3c8f3ec4, +0x3c810fb5,0x3c5ac0b8,0x3c37a7b8,0x3c10286f,0x3bf62be0,0x3c08f302,0x3c2ee5d3,0x3c3cbdcf,0x3c505711,0x3c5751f3,0x3c6197de,0x3c4a4dad,0x3c3727c7,0x3c246044,0x3c18db70,0x3c0ba83e,0x3bc799d3,0x3c658091,0x3c08879f,0x3c1e744f,0x3c44a718,0x3c62ef72,0x3c43c8ce,0x3c43c5d7,0x3c6280da, +0x3c905066,0x3c710b50,0x3c718342,0x3c90d087,0x3c8fd617,0x3cab3c49,0x3cac1189,0x3c949e94,0x3ca3e773,0x3c41211c,0x3c5e71e7,0x3c4c024f,0x3c42931e,0x3c3fae91,0x3c3ae732,0x3c2ad2e8,0x3c346a0a,0x3c3450d6,0x3c3a5a34,0x3c379dc3,0x3c380fa2,0x3c3f13a9,0x3c350a26,0x3c2fa477,0x3c29dea0, +0x3c1d9d77,0x3c1e0106,0x3be44718,0x3c74d878,0x3cb3e2dd,0x3cea8cae,0x3c61e145,0x3cbd286c,0x3cfb02b7,0x3cfc329b,0x3cf748c9,0x3cebcfb0,0x3cf5a146,0x3cf575cc,0x3cf16b85,0x3ccc6844,0x3c868d1f,0x3cfcd6d7,0x3cdc59eb,0x3c519c0a,0x3c048aef,0xbbf70182,0x3c3e4e05,0x3bc22063,0x3bdc3670, +0x3bc29aaa,0x3beda531,0x3bfac52c,0x3c02f4b1,0x3bfbc2c4,0x3bf0f637,0x3bde0a55,0x3bda1f88,0x3be36d2b,0x3c05f27d,0x3c058ed4,0x3c09599f,0x3c0c3c28,0x3c0c938d,0x3bfd1a62,0x3c5143dc,0xbbd06676,0xbc683675,0xbc746750,0xbb3cf2ea,0xbc6d67b7,0xbc82dc91,0xbc8aebe1,0xbc8a0fbe,0xbc610356, +0xbc8e794a,0xbc92cf9f,0xbc8c457e,0xbc6aaa0d,0xba86144f,0xbc722b77,0xbc879f5f,0xbc851642,0x3bd2b33e,0x3be94ba9,0x3b90bfa4,0x3b328cae,0x3baa32a3,0x3bcfdf46,0x3bf17239,0x3bf5ef17,0x3bdddfba,0x3bb30eb5,0x3ba02e0f,0x3bc9af93,0x3c229ced,0x3c245655,0x3c2863e6,0x3c2f609c,0x3c1bbdaa, +0x3c3f16ae,0x3c038485,0xbc25c668,0x3ba16675,0x3a359743,0x3a3f1478,0xbafc772c,0x39153a19,0x3b0f32b6,0x3a97feaa,0xbae538ce,0x3b3bf727,0x3bb0b9c0,0x3a844593,0x3a992b33,0xbb546678,0xbaa4937f,0x3bb4b63b,0xbc042ef8,0x3aaa2625,0x3bd843c6,0x3aa62637,0x3a478573,0x3b9a4750,0x3bc9c336, +0x3c10a728,0x3c0890ba,0x3bcd0689,0x3b445fe2,0x3adbf07e,0x3b64f8fc,0x3c2d5112,0x3c333bf3,0x3c3fafff,0x3c541b36,0x3c3cf771,0x3c830b5b,0x3bd199af,0x3a0db95a,0x3ba97148,0x3bb6273d,0x3b8f05a0,0xbb199186,0x3ad8f38e,0xbb75b0ae,0x3be3fac8,0x3929551a,0x3bad5854,0xbb2b99a5,0x3acb2584, +0xbad1b175,0xb9ce0544,0x3ac24510,0x39c2af8e,0xbbb36681,0x3b8cebd4,0x3bd70547,0xbb24c3ec,0xbbef53b7,0xbb1b4f2a,0xb9a1f4e6,0x3b9f9283,0x3be7e77d,0x3b8d0363,0xba09e65a,0xbb6b7a56,0x3a5276aa,0x3c53e946,0x3c5b2884,0x3c667243,0x3c7a3fb0,0x3c59301e,0x3c97f459,0x3c204bcf,0x3b1634a5, +0x3c7f095a,0x3c002154,0x3c284929,0x3bf20ed3,0x3b74e252,0x39ea7167,0xba845aa9,0x3bcfe27d,0x3b89286d,0x3bb7f50b,0x3b7377e2,0x3af4456d,0xb936a666,0x3c18dceb,0x3bd2cf7a,0xbcedec40,0xbbb44d1d,0x3c0c9297,0x3c407271,0x3c65a827,0x3c9cf5e2,0x3c91711a,0x3c8b1d5c,0x3c02b919,0x3c10411f, +0x3cb9344a,0x3c8a6d9c,0x3c68fc64,0x3c80a1e1,0x3c05bdbf,0x3be590fd,0x3c967646,0x3c74250f,0x3c9944dd,0x3bb0af8a,0x3a8cc7aa,0x3c85c6a0,0x3c29fdc3,0x3bf92832,0x3b2ca93d,0xb9ca2251,0x3b1905a6,0x3b1256d1,0xbaab3d5c,0xba2f0e34,0x3a9ba903,0x3af5f4cb,0x3c02970d,0x3b82eab7,0x3a8b02bb, +0xbcaa0ef8,0xbb82e1eb,0x3cbdaf22,0x3cbfce7a,0x3a26d02a,0xbc99f9f8,0xbcf1607b,0xbcdc883b,0xbc154cb0,0xbbe6ba39,0xbb343d5a,0xba6d61fe,0xbc0e801a,0xbc1ccbde,0xbbb2859d,0x3a5018da,0x3b8d6714,0x3c05815c,0x3b997387,0x3c2a9635,0x3bcca477,0xbac5f564,0x39bddee7,0xba8339e0,0x3b94c5e7, +0x3bc31566,0x3ae8ac90,0x38ff6b6d,0xbabedf04,0xba56b88b,0xb9f46878,0xbb729946,0xbb8af1cb,0xbc1d3854,0xbbdafe5a,0xbbf6911f,0x3aa043ab,0x3b0f943d,0x3c0caec6,0x3aebc03e,0x39c8c8c4,0x3be641b4,0x3c77c3ea,0x3c99b6a2,0x3c77b29d,0x3c7aa3ae,0x3c5a78a7,0x3c1bbb6b,0x3c6a52e0,0x3c818ce8, +0x3c4463fc,0x3c7ce4a0,0x3c40c9f5,0x3bc65be4,0x3b4f2219,0x3c2d4900,0x3c3d1de2,0x3abf9bd3,0x3b938187,0xb9ff98e4,0x3a0b2d94,0x3abb41a2,0x3ad44f31,0x3afb682b,0x3aadb617,0x3a59af23,0xbade9526,0xbbaec934,0xbc0720b4,0xbbbdfc9e,0xbbb9c56d,0xbc8e76cd,0xbaf597e2,0xbd1ab4a1,0xbd38e501, +0xbcef0815,0xbcc749cd,0xbc3a9ec2,0xbc52e55b,0xbc452fa4,0xbb3fe626,0xbc3ef70f,0xbc2cffb5,0xbc0e5e65,0xbc1b745c,0xbc1faa30,0xbc30b233,0xbbb4d61c,0xba50ed19,0x3b214a86,0x3bb9d68c,0x3c178908,0x3c195617,0xbbaf1d6d,0xbb5e5853,0xbacdb8eb,0xba3b6f0b,0x39ed599c,0xb8720e6a,0x3ab93891, +0xba01c68a,0xba98be18,0xbb8c26db,0xbbc2b420,0xbbe82fbb,0xbc2463d1,0xbc5d4cd4,0xbcb2c682,0xbccca5f8,0x3c5475be,0x3b9b5a2a,0x390d2c1c,0xbc59bff7,0xbcc99b4d,0xbca2ce43,0xbc35f6c6,0xbba93a5a,0xbc13f66e,0xbc296899,0xbc4426b7,0xbc17da79,0xbbf5cc36,0xbc17c5a3,0xbc2d1625,0xbbf62f49, +0xbabb6dd0,0xbb813a20,0x3a94291b,0x3bbc05f5,0xbb16648a,0x3b19454b,0xb9c18302,0x3acdb04f,0x3abce0e8,0xbb1fe7f9,0xba94a3a2,0x3aaa48b6,0x3a030560,0x3ab94a2e,0x3ae21c99,0x3b365d3b,0x3c84837b,0x3cbc1347,0x3cb7531d,0x3c9f68a6,0x3c784376,0x3cbe9fc1,0x3cfce9ca,0x3cbd9020,0x3c98cdb6, +0x3b63e357,0xbc03016e,0xbc73e4f1,0xbc878cf4,0xbc7a1120,0xbc57d6ef,0xbc2c815c,0xbc2f03a8,0xbc172133,0xbc48a3bb,0xbc488964,0xbbd49c66,0xbbe660a0,0xbbcfb7cf,0xbbe07255,0xbbd0c758,0xbb8c3ee9,0xbbb97c82,0x3ac436a0,0x3bde39d2,0x3c346f1a,0x3c2f7519,0x3c2e43d2,0x3c7a676e,0x3c863f1e, +0x3c973ee2,0x3cb24d00,0x3c89c860,0x3c8263c0,0x3c98d2a2,0x3cb67878,0x3c7d1fbe,0x3cb137f3,0x3cdb568b,0x3cd6f3b6,0x3cfda77c,0x3cdfc95b,0x3cd4825c,0x3cc3edcf,0x3c6409f7,0x3b800f03,0xbbe319fe,0xbbbd6b54,0xbbb17709,0xbbb0dc56,0xbb63ba78,0xbb0f8551,0xba6e47f4,0xb927e9dc,0x3b75d4b7, +0x3abb5045,0xbafd8f38,0x3b10a192,0x3b90fb27,0x3bbd0a28,0x3badfec3,0x3bed2606,0x3bd9ab52,0x3c393ac3,0x3bfd5d14,0x3c5ae420,0x3c40b33f,0x3c7f6ca0,0x3c7c45a5,0x3c681f5f,0x3c408af8,0x3c81e356,0x3c765b3c,0x3cae54d4,0x3caff284,0x3ca9e5d6,0x3ca6b67e,0x3ca6295f,0x3ca4973e,0x3ca71082, +0x3ca2d47a,0x3ca80458,0x3ca36c35,0x3c99dce1,0x3c8840b8,0x3c6b7457,0x3c5f67c8,0x3c4fa474,0x3c42431f,0x3c2d2b9c,0x3c182acc,0x3c0f470a,0x3bc9e43c,0x3c2aa55c,0x3c200fc0,0x3c25a4d0,0x3c2a7861,0x3c52cbbe,0x3c7c5142,0x3c76849d,0x3c602d36,0x3c923851,0x3ca42bf5,0x3c990d7c,0x3ca08c4b, +0x3c941852,0x3c990f6a,0x3cb375a5,0x3c5ea49d,0x3cb7d9bc,0x3ca81657,0x3ca9f1fd,0x3ca9cef2,0x3cab11b4,0x3cac1d47,0x3cae1f16,0x3ca9f897,0x3ca4c1c5,0x3ca1e570,0x3c9ba363,0x3c9823cf,0x3c93975d,0x3c908b9a,0x3c8cb401,0x3c898313,0x3c877f6d,0x3c82aadb,0x3c8a27c4,0x3c2494f8,0x3bad1f66, +0x3ba0f1e9,0x3c49148e,0x3bbada90,0x3b96436f,0x3b91c817,0x3bab95ea,0x3be53e37,0x3bc404bb,0x3bd3c07f,0x3bf38135,0x3c120023,0x3c7f38d7,0x3c170575,0x3c0f6939,0x3cbbad44,0x3b3dc683,0x3c725054,0xbb020444,0x3b08773d,0x3b2670b1,0x3b371e9c,0x3b902faf,0x3b90df57,0x3b4160f9,0x3b45cb48, +0x3b19e364,0x3a7a3581,0x3aae90f4,0x3ae608f6,0x3b4b3feb,0x3b27e4e4,0x3b2adff7,0x3b2da158,0x3b412943,0x3b542f16,0x39aa3d70,0x3c848b63,0x3c96ecd7,0x3c17e4c1,0x3c583e05,0x3c90d31e,0x3c11c310,0x3c2c688e,0x3c339d57,0x3c276e9e,0x3c46cea6,0x3c4a3b1d,0x3c491baa,0x3c8d42b1,0x3c425106, +0x3c28a98c,0x3c9973bf,0x3c7cf197,0x3b2c47c5,0x3a20b7af,0x3b6c2f0b,0x3b43229e,0x3c0515cb,0x3c1140f6,0x3b9d77cf,0x3ba242ed,0x3b226f21,0xba7e49cc,0xbab26d30,0xba2817ba,0x3b518890,0x3b250cda,0x3b65e807,0x3b78b155,0x3bb5d740,0x3b6ed398,0x3bf028ab,0x3c834c85,0x3c0bea2c,0x3c3def35, +0x3c04a8c5,0x3c07aab2,0x3be25d2e,0x3baedc5f,0x3c057f56,0x3c561ec0,0x3beef6bc,0x3b7ed7b0,0x3be6a4a5,0x3ba5b7bb,0x3c0a9417,0x3c67a643,0x3bc9bf17,0x3c3a8779,0xb8b790fe,0xbb3d5526,0x3b7b5110,0x3b099c53,0x3c5d1b5f,0x3c7ef2d9,0x3bc56a9e,0x3bfe3766,0x3b30362e,0xbba2abac,0xbb80ad4c, +0xbafa6d5d,0x3bd75cc4,0x3b680965,0x3b8f1419,0x3b956f8f,0x3bd50618,0x3b86556c,0x3c250dab,0x3c8abad0,0x3c598a38,0x3c2e475c,0x3c06479d,0x3c147621,0x3b61289b,0x3bbcb9bf,0x3aaa1e69,0x3c5408cd,0x3b1fdc50,0x3bdeed49,0x3bd9924f,0x3b9f34ad,0x3bd20cc2,0x3c84d179,0x3c150708,0x3c46e0c7, +0x391b4b8a,0xbb10d07e,0x3b730565,0xba20a4f5,0x3c95bfba,0x3cb9b324,0x3c20ea00,0x3c4facac,0x3b81e0e5,0xbc1d1ced,0xbc258172,0xbbc00e4b,0x3be5c3fe,0x3bab312a,0x3be32afc,0x3c002d34,0x3c31f9eb,0x3be4ae98,0x3c370f04,0x3c8e1f07,0x3c0faed8,0x3c6a035b,0x3bfaaa59,0x3b739495,0xb94516fd, +0xbabc2a1d,0x39800a6f,0x3b7142b2,0x3b97d0d5,0x3af81657,0x3b2cbabb,0xba93bba2,0x3b8cab7d,0x3c75963f,0x3c1e86b4,0x3bd03f5d,0xba74b8cf,0xbbbf4b4d,0x3ba97c62,0x3c176682,0x3c6f1734,0x3c6ea18d,0x3c5aac06,0xbb9c52c0,0xbc3a8bb6,0xbbf8cf33,0xbc20007e,0xbc160343,0xbba9e434,0xbb391cb2, +0xbb11844f,0xbc1157f0,0xb9f6bea1,0x3ab75dd5,0x3c4a85d7,0x3cb814ca,0x3c4c5904,0x3c4736dd,0x3bfa3ce2,0x3bbd8d55,0x3a74e814,0x3b1b2ef8,0x3b107664,0xbae08fda,0x3a3bcb05,0x3b4e50b8,0x3c02abe2,0x3c345a91,0x3c432a5d,0x3bec2c39,0x3b931b4f,0x3c36c5f9,0x3cb71208,0xba207aab,0xbbb6b01f, +0xbc522a1f,0xbc810c27,0xbc1bcf2b,0x3c0dc966,0x3b1ce351,0x3ae65392,0x3a964292,0xba39e9a2,0xbab52cc9,0x3a182a02,0xba12c105,0x3b0a5aee,0x3c0846c6,0x3c2d080a,0x3bd987a9,0x3c4675a4,0x3bd20e38,0x3b5faed6,0x3bbd7af2,0x3b025d22,0x3b384053,0x3aa1e1e2,0xba6102d4,0xbb028228,0xba0dd524, +0xba8086c8,0xbb32b399,0xbbc0a001,0xbbb0f011,0xbba607af,0x36c43a7d,0xbb24cd7b,0x3c05ec6d,0x3bafa846,0xba2d36d3,0x3bb24d49,0x3c9ca12f,0x3cfad622,0x3cf487e0,0x3c7fe5c6,0xbb75eb3e,0xbc3b4710,0xbc1d3378,0xbc0a41fe,0xbb503477,0x3b13cb49,0x3b5f4885,0x3b7b2450,0x3b70d695,0x3b50835f, +0x3a777375,0x3c750433,0x3c03d9fb,0x3b39a72a,0x3bdfb43b,0x3b9949cf,0x3b442584,0x3ad8f7bd,0x3ab986cd,0xb9829140,0x39b47244,0xbb18ded8,0xbb98308e,0xbba73a05,0xba1d4d65,0xbbd59af6,0xbc15be09,0x3a8fa859,0xbd089944,0xbce408a7,0x397ea798,0x3c65ce7e,0x3bcfb7f8,0x3ba10d7b,0x39067f55, +0xbc2c70f0,0x3b8d5336,0x3c325029,0x3c3eac12,0x3ba8d744,0x3a12f481,0xbb3da68f,0xbb952f5a,0xbacfbc6c,0xb94d4bc5,0x3b68af76,0x3b49764f,0x3c238ea0,0x3b6f3b85,0xba9b58e6,0xb94cd96d,0x39eade2e,0x3ad2f81d,0x3a8bce83,0x391f87b1,0x3a3913cf,0xb781490c,0xbb7515c8,0xbbc75ca7,0xbc13a7a6, +0xbbdefef6,0xbc57903f,0xbcba9f4c,0xbcf1f777,0x3cc41cea,0x3c5b6e20,0xbb5158e7,0xbbf87e1c,0xbc87302c,0xbb09b80f,0x3b5722d9,0xba98d83f,0xbab35535,0xb92beb5e,0x3c079a8a,0x3b8acf30,0x3b68e754,0x3b9acca4,0xbb45c245,0xbbb8ef97,0xbbaaf66e,0xbb02453a,0x396bb29d,0x3bc7d64e,0x3b9f4c5a, +0x3aa220b0,0x3aee6432,0x3b1e150b,0x3aa0718e,0xbaf5e5d7,0x3a41c315,0x3a35b414,0x3b27b3e6,0x398f9791,0x3b11c482,0x3b7d2d74,0x3c584a09,0x3ca6f4c2,0x3cc51886,0x3ccc22db,0x3d228c9b,0x3d29c6f0,0x3d04e2fe,0x3cc16097,0x3c1405a4,0xbc544a12,0xbcce66bf,0xbccfd125,0xbcb616c9,0xbc9c32bf, +0xbc8be691,0xbc3b0a17,0xbbfcb4bd,0xbb98be6a,0xbb9db091,0xbbd24801,0xbbd61494,0xbc1bc769,0xbc18ad0e,0xbbab1946,0xbbc9949c,0xbb7b9f82,0x3ab3fbce,0x3b95de06,0x3beef9ba,0x3c362406,0x3c2632fe,0x3c3262bf,0x3c346140,0x3c833bfc,0x3ca3accb,0x3cc5e2be,0x3ca4d710,0x3cb0a27f,0x3ce85358, +0x3d0d0110,0x3ccc53a6,0x3cae16c9,0x3c8fbd23,0x3ca20b25,0x3caf7d50,0x3c9b33f7,0x3c7ce0b9,0x3c2350bf,0x3b7ca0bb,0xbb1f44f0,0xbc21e56d,0xbc244e8e,0xbc35f0f6,0xbc463b45,0xbc274121,0xbc0609d7,0xbbd5f784,0xbb4f0cc0,0xbb1306a4,0x3b45be58,0x3be4fbc7,0x3bb0ed70,0x3b910fc5,0x3b988899, +0x3bc69fe0,0x3ba8b85b,0x3c1450ca,0x3c2101e8,0x3c80d041,0x3c7577f7,0x3c94d0dd,0x3ca0fb50,0x3caca382,0x3cb9fd09,0x3cc111c8,0x3cbbf51a,0x3cc7c29d,0x3ca3f7f1,0x3c93a8f9,0x3c917788,0x3c80ba63,0x3c6b1f3c,0x3c599ee9,0x3c57705e,0x3c3fe193,0x3c2ea97f,0x3c1a02e9,0x3c021dc2,0x3bdf669e, +0x3bd38f79,0x3bbabc81,0x3b997a6c,0x3b552c7e,0x3b11815c,0x3840122b,0xba311da3,0x3c130a66,0x3bd1e74b,0x3c2fa644,0x3c3eabaa,0x3c809f51,0x3c895e4b,0x3c87cd9f,0x3c9993d1,0x3cab9e41,0x3c9be7fb,0x3c953f97,0x3ca64d4e,0x3ca20216,0x3caae326,0x3cb34d38,0x3c9e9823,0x3cc859f3,0x3c7ed278, +0x3c87b011,0x3c84224b,0x3c827622,0x3c83b146,0x3c82be40,0x3c81c17c,0x3c742f14,0x3c69578a,0x3c616a99,0x3c560cd5,0x3c49be3f,0x3c3a55c3,0x3c35a235,0x3c3254d8,0x3c303d42,0x3c2dbf71,0x3c337fb3,0x3c05ace3,0x3c98b76b,0x3cb4b00c,0x3ca05f1b,0x3ca19e6b,0x3cc7e618,0x3cadefba,0x3cb38324, +0x3cb37541,0x3cadc8c3,0x3cbbc666,0x3cbf89e6,0x3cbfde7a,0x3cd7ece9,0x3cbb9373,0x3cb446b3,0x3cd9d8b6,0x3c9b0c61,0xbb36069a,0xbc39e956,0xbb07d519,0xbb2e2ebd,0xbb4fc169,0xbb470d3a,0xbb7b7570,0xbb87bdd0,0xbb8ea077,0xbb83180e,0xbb87779f,0xbb9d920f,0xbb9aa461,0xbb92a7f0,0xbb75c148, +0xbb5aa9a9,0xbb4523d9,0xbb3c399f,0xbb32d142,0xbaf6f7de,0xba57ed16,0xbc212b3f,0xbbe43783,0x3c0198f0,0xbc273ecc,0xbc0b2412,0x3bb37261,0x3b90ba23,0x3b8dbdd1,0x3bbf096c,0x3b3c0777,0x3b165ba9,0x3b296e76,0xbc11857f,0xbc26e919,0x3c0026e3,0xbc08b1b9,0xbb9915fa,0xbbcd8b45,0xbaedfe61, +0xbb95cdf0,0xbb9da5c6,0xbbfdcb0d,0xbc0f58fb,0xbc10c42d,0xbbf3d3d5,0xbbfa90f9,0xbc1be950,0xbc196bba,0xbc0b795d,0xbbcc7f98,0xbba7ae53,0xbb947c66,0xbb8f6aa7,0xbb8730bf,0xba8b3043,0xbb656a55,0x39efa9d8,0x38a2e760,0xbb87f9ad,0xbaa852db,0xbb11a040,0xbbabaa12,0xbb78d7ff,0xbbbf5505, +0xbb8efb09,0xbb994df2,0xbb284e63,0xbafa7338,0xbb8abe99,0xbb3dd978,0xb8fa39ba,0xbb41b4fb,0xbc192915,0xbbf0453c,0xbb065592,0xbbb1a53e,0xbb8d13a9,0xbc23c17d,0xbc515f0a,0xbc619b51,0xbc34bf00,0xbc4396ab,0xbc85c083,0xbc84330d,0xbc6c90e0,0xbc2a1fd8,0xbc01b21a,0xbbcfc0fb,0xbbb5bda6, +0xbb7e4648,0x393c7d97,0x39f1ec8b,0x39caaae6,0x3b464706,0x3b16d672,0x3a2e18bc,0xbac1fc01,0xbaf02ac3,0xbafd7aee,0x3aee08e7,0x3b02e592,0x3b13428a,0xbadeae96,0x3ac01424,0xbb1ecc17,0xbae7d7b8,0x3bc8b027,0xbb5ba24b,0xbba6531d,0xbba5d1ac,0x3a4d783d,0xbbb75825,0xbbe44ebd,0xbc8c761c, +0xbcb61182,0xbcba179d,0xbc8bf775,0xbc905c10,0xbcc6f3cf,0xbccece48,0xbcbb51e4,0xbc8209f6,0xbc4f4a15,0xbc280956,0xbc137371,0xbbd31e9d,0x3ae9bd27,0x3b20c9aa,0x3bd96da8,0x3c37d9f4,0x3c00555d,0x3bd63cf9,0x3b9c8a33,0x3b33a1ae,0xba5c0d33,0x3aa70ff9,0x3c185f21,0x3b80e9e1,0x3b5c9a74, +0x3babab43,0xbabd1384,0xba066922,0x3c829bbd,0x3b016356,0xbcc16db1,0xbc970d96,0xbc1e95eb,0xbbc3d7a8,0x3b5cc683,0xbb47411b,0xbbe88a73,0xbbcfcd32,0xbc288fd1,0xbc155bc7,0xbbb2687e,0x3abca1e2,0x3b900d03,0x3c01250d,0x3b0837fa,0xb86a56ae,0x3b896539,0x3a8ebdf1,0x3ac7c191,0xbb851952, +0x3babe420,0x3c422d27,0x3bce8b31,0x3bb21d22,0x3b4ad38e,0x3aa76190,0x3b2f50b8,0x3af7e40b,0xbab3ea0d,0xbaa234be,0x3b0be210,0x3bb39c21,0x3c0086ee,0x3ae67bb5,0xbbe2c9c9,0xbc993675,0xbbc76bb4,0x3cb77ec4,0x3c3ee600,0xbc0bd5d5,0xbc53b5c7,0xbd0f4cc9,0xbd04dd99,0xbbc67268,0xbbbfbbb3, +0xba3d4da9,0x3a919a24,0xbb60c81a,0xbbf15d13,0xbc22c207,0xbc4ccded,0xbc77bbd0,0xbc83505a,0xbc44c9da,0xbb85aa1d,0x3adb097e,0xb9ae6c24,0xb96ac384,0x3a321d40,0x3b2371b1,0x3b49a65e,0x3ab6a599,0xb9fd5f58,0xbae49efc,0xba805006,0xb9a7ce2f,0xbb1e2bea,0xbb993bad,0xbbac8563,0xbba5ea24, +0xbbcd3486,0xbc1a9881,0x3b1aecb0,0xbb62d1d9,0xbbfab9f1,0xbc52ec3e,0xbd044cae,0xbcd2bbe8,0xbcc7b6b5,0xbcdc3049,0xbc453b2a,0xbbd5df68,0xbc23f722,0xbc97ee3c,0xbcadbc5d,0xbc8490b6,0xbc5ba783,0xbbe5aff2,0x3b08cf98,0x3b2c8448,0x3beda870,0x3c166d3a,0xbb15dfdc,0xb924a150,0x3b30fb4e, +0x3a42c96d,0x3a29b149,0x3a9207a0,0x3a8c18d7,0xb989fc82,0xb8a21a87,0xbb6252aa,0xbbbc3e07,0xbbe2f03f,0xbbe057bc,0xbc0fa8a7,0xbc74ca05,0xba205a20,0xbd083693,0xbcb5fd2d,0xbc94dbfc,0xbcfc7669,0xbd714d74,0xbd46058b,0xbd170ca0,0xbc9b3cec,0xbc6a8a0a,0xbc4419b7,0xbc565f0b,0xbc8052e1, +0xbc8274fb,0xbc47d5c6,0xbc910e19,0xbc83d651,0xbc36ca52,0xbbc36560,0x3a89dcae,0x3bc45770,0xbaa1957e,0xbb63416f,0xbab8a368,0xba9460f6,0x39e67e3d,0x3a3fbc99,0x3a27fd99,0xba85c8fd,0xba0e2cb8,0xbb3e1083,0xbb969f75,0xbbb9aa25,0xbbb4e9e1,0xbc640732,0xbcc2adad,0xbcef0eb1,0xbb8df846, +0xbd23de9e,0xbd8c22a8,0xbd884b11,0xbd60e8e8,0xbd229f7f,0xbcf2cec3,0xbcce24de,0xbcb4ba51,0xbcabf6d0,0xbcba88e6,0xbcbab004,0xbca7557e,0xbc713318,0xbc2d91be,0xbc04d669,0xbbbc840c,0xbb17b522,0xba3a5753,0x39a5f75c,0xbbb91e4d,0xbb6792ae,0x3b4e4410,0x3ad4710d,0x39af66ed,0xbb26add6, +0x3962388f,0x3ab66549,0xbb1b2630,0xbb865b74,0xbbb1ec96,0xbbd3511a,0x398ca61e,0x3bc0f92e,0x3c454601,0xbb844a0e,0x3d0705e1,0x3cb19522,0x3c83103c,0x3bb5ccf5,0xbc01e3c6,0xbcc1e7f0,0xbcf5c202,0xbd018031,0xbca454c1,0xbc52d2a2,0xbc2a8a22,0xbc150c98,0xbc3175a3,0xbc521411,0xbc5ebc6b, +0xbc5a4b0f,0xbc127a33,0xbc18cc89,0xbbd5a121,0xbb2333db,0xbbbd7075,0xbbc1acab,0xbbe2983b,0xba96c7b6,0x3b9a4029,0x3c099c16,0x3c0a6be6,0x3c11e7fa,0x3c3cf261,0x3c81b803,0x3c9cb43b,0x3cb23611,0x3c9e5ea3,0x3c9339d6,0x3cc41525,0x3cba604a,0x3c32730a,0x3c5b7afe,0x3c3feb73,0x3c111997, +0x3c0be5cb,0x3b1f2859,0xbb80dbe2,0xbc49c6da,0xbc811713,0xbca1b557,0xbcc18483,0xbca330cc,0xbc87fc29,0xbc64fd3c,0xbc46ccb3,0xbc2cca4e,0xbc0d8433,0xbbf487a1,0xbbbdba2b,0xbba77047,0xbb31d8da,0x3a087e2c,0x3b20b178,0x3b647f00,0x3b85c390,0x3ba22433,0x3c008090,0x3c2c01aa,0x3c4027c6, +0x3c708bf8,0x3c7e8f84,0x3c9033df,0x3c880f84,0x3c7dd520,0x3c6e6374,0x3c639fc4,0x3c9657fc,0x3c408a1c,0x3c3c03f3,0x3c1b6824,0x3c016791,0x3bcc3440,0x3bb16906,0x3b8f6f38,0x3bafc351,0x3bc69e72,0x3bc8d374,0x3bb8696a,0x3b91805c,0x3b5e9e3f,0x3b3d16f8,0x3b2001ea,0x3b008f6c,0x3aae288d, +0x3ac7ba95,0xba124388,0x3a3d6887,0x39f85626,0xb889ba92,0x3b63ac72,0x3b93cc10,0x3b8d6bcf,0x3bca78ce,0x3bc8a32d,0x3c02cae5,0x3c1fd876,0x3c4b0a2c,0x3c6cf7a3,0x3c6a1065,0x3c796314,0x3c654b94,0x3c5b6a63,0x3c096dd5,0x3c2a3ab4,0x3c2f4685,0x3c23229f,0x3c1fceb1,0x3c1cb23d,0x3c17f9e1, +0x3c0fa105,0x3c0f1258,0x3c0b32fd,0x3c0b4159,0x3c0734ff,0x3c063444,0x3c031419,0x3c028e88,0x3c0082aa,0x3c001de4,0x3bf92b0a,0x3bfbf7d2,0x3bfe9cef,0x3b953e5f,0x3bd5fdb7,0x3c87b780,0x3b9890d5,0x3be02a02,0x3c9602cc,0x3c9490ff,0x3c959de0,0x3c98d19d,0x3c94ec50,0x3c95859c,0x3c9886c9, +0x3c31c8fc,0x3c0228b3,0x3caaa435,0x3c38eb5d,0x3c44b3a9,0x3c52479d,0x3c5e6b5c,0x3c4e2c53,0x3c2a23f3,0x3c3fe1c9,0x3c310173,0x3c649008,0x3c6eaad5,0x3c5a0835,0x3c6306a3,0x3c581a86,0x3c3a0f4f,0x3c3b8261,0x3c3dcd67,0x3c483d63,0x3c507a2f,0x3c542b69,0x3c533640,0x3c55a5aa,0x3c43d39a, +0x3c636763,0x3c6acc4c,0x3bde4665,0xbc3aeb5c,0x3c7bc174,0x3be8ebc4,0xbc2b984d,0xbc19b48c,0xbc0fc7d0,0xbbf1b4bf,0xbbf71f93,0xbbf40929,0xbbd38733,0x3becea2d,0x3c844435,0xbc0d5889,0x3bcacdbe,0x3af3651d,0x3c763b7a,0x3c26dff5,0x3c36c905,0x3c19400f,0x3c8db6bc,0x3ca27fbd,0x3c88881e, +0x3c994809,0x3c87ffab,0x3c41df90,0x3c32e6cb,0x3c3415a3,0x3c58bbeb,0x3c7c09b0,0x3c89f8a7,0x3c8a0349,0x3c894a8c,0x3c7861d1,0x3c8acd7e,0x3b744491,0x3c405a08,0x3c4902b1,0x3c086265,0x3be6314e,0x3c286fa7,0x3c250504,0x3c504a3c,0x3c5559c3,0x3c4bda0d,0x3c2db131,0x3c1b4446,0x3c0fcca1, +0x3be21a66,0x3c5ea9f8,0x3c662531,0x3c26e96b,0x3c1f2e8b,0x3c0cdb51,0x3c35352a,0x3bf799fd,0x3cbaf47d,0x3ce4479f,0x3ca92ad0,0x3cd235b6,0x3cadd5fd,0x3c3711dd,0x3c26f124,0x3c2dd887,0x3c775697,0x3c947630,0x3ca42b7d,0x3ca43e25,0x3c9a4b5b,0x3c972675,0x3c7cf41a,0x3c69dd58,0x3c556100, +0x3c21c841,0x3c1fb9bf,0x3bd31f74,0x3bda2cd1,0x3b6cd06e,0x3beb7667,0x3c34c4ee,0x3bb329b0,0x3ba3180c,0x3c0c529e,0x3b939246,0x3bd59ece,0x3c7f565f,0x3c4270b2,0x3c1e922a,0x3c27c523,0x3bcde469,0x3bbd0e4c,0x39301054,0x3cbddb43,0x3d06a556,0x3cc900ea,0x3d044d80,0x3cd83faa,0x3c1f0cd5, +0x3bd65d6c,0x3c009a13,0x3c8133a8,0x3cbf3995,0x3ce3b70b,0x3ce5b2fb,0x3ccfd449,0x3caf52f7,0x3c958517,0x3c58a078,0x3c6b3949,0x3c2a7a7a,0x3c274e78,0x3bd5a95c,0x3b4689aa,0x399f7c42,0x3ab79b63,0x3c10f733,0x3b9faf90,0x3b586749,0x3bad215d,0xb88fffbf,0x3bb9d0b6,0x3ca1cb22,0x3c7a16de, +0x3963eb8f,0x3c638884,0x3c957b1a,0x3cd4d4fd,0x3d0ceecb,0x3d0a14d9,0x3d05a68e,0x3d0e5b68,0x3cc422e5,0x3c88d578,0x3c382bfc,0x3c4d4245,0x3c1839e0,0x3b35b20d,0x3ba28939,0x3bb4fe2e,0x3bd33ce1,0x3c52a227,0x3ca2cd7f,0x3ca8152c,0x3c8810d5,0x3c8f6a80,0x3c3cd6cf,0x3c168840,0x3bdce9b3, +0x3b12b52b,0x3b7364c0,0x3b3722bb,0xba935068,0x3aacc528,0x3ba3da00,0x3c2ff537,0x3c4e4532,0x3bffa507,0xbaddabe6,0xba4d7b0d,0x3c11c43c,0x3d11b41d,0x3ba5160e,0xbbb8f8e5,0xbc160289,0xbc4dbb05,0xbbc189eb,0x3c37ce2a,0x3c05dca1,0x3c021510,0x3bfb1ea0,0x3b896c11,0x3b218c50,0x3ba5c6dc, +0x3bf2a226,0x3c643b2f,0x3cc421c9,0x3ca1286a,0x3c7fc71a,0x3c41599f,0x3b1191ec,0x3b41df3c,0x3be78194,0x3bbd2213,0x3bafcfb7,0x3b42374b,0xb8689dd8,0xba94e063,0x39465c4c,0x3b0cc8f9,0x3a0c8255,0xbafe5080,0xbabbc0d5,0x3afc8a9e,0x3b564733,0x3a97d29b,0xba28af73,0x39dec7f9,0x3ab9aa0a, +0x3c5c0262,0x3d17d362,0x3d58e5e6,0x3d69de5e,0x3d3c05d0,0x3cef0a04,0x3c83274d,0x3c3fe6b1,0x3c8aabf0,0x3cbe9020,0x3cf15c66,0x3ca51e2b,0x3c36ccde,0x3b825809,0x3bc01335,0x3c183734,0x3ca21fe2,0x3c20d3a2,0x3ba6af1a,0x3c0ae211,0x3bd67404,0x3b6338ac,0x3acfbf0c,0x3b225f3c,0x3a82aca3, +0x3a14f86e,0xbb2fa05d,0xbb786fce,0xbb55fb02,0xbbb37385,0xbc19d7f9,0xbc353e60,0xbab1adb7,0xbcc7f650,0xbb03bea2,0x3ccf6253,0x3d14ded9,0x3d26d15c,0x3ce27ba8,0x3c859097,0x392a1483,0x3bb599e7,0x3be1be11,0x3c0f39a2,0x3b9e62ef,0x3b43419b,0x3b8a4ae5,0x3bd7b5ee,0x3c2f189c,0x3c30854f, +0x3c56737e,0x3c26c403,0x3c1675e2,0x3b005778,0x3ac90b54,0x3b04d21e,0x3ac85ca7,0x3b3ea28a,0x3b539481,0x3995df9e,0x39c9ceda,0x3a86d567,0xba55a313,0xbb3e171f,0xbb3094a9,0xbb61d3f8,0xbc0a2604,0xbcabb62f,0xbcd23fe5,0xbc6e9b17,0xbc8722ad,0xbc05ffee,0xbb04006c,0x3c462a7e,0x3cc10dc6, +0x3cdf35c4,0x3cabebe2,0x3c8bb07a,0x3c799bb0,0x3ca25cf1,0x3c27e4ec,0x3bb8fd38,0x3bf3edf9,0x3ab1a9dc,0xbb064389,0xbb43a20d,0x3af8361b,0x3b9fa4c1,0x3bfc7181,0x3ab510d9,0x3b36e55b,0x3ba7ccf7,0x3b14ab1d,0x3aa5c308,0x3a1ab12c,0x3b2a10a7,0x3b4c9191,0x39f3557d,0xbb200243,0xbb8063de, +0xbb8c488c,0xbb3d2f09,0x3a9e2589,0x3ba867d3,0x3b98e738,0x3ce4a438,0x3d22323a,0x3d0a36f2,0x3c9592ab,0x3ae19431,0xbc1fc026,0xbc4488ac,0xbbb66f71,0xbc04ed86,0xbc15f06e,0xbc343e3b,0xbb2bc4c5,0x3b13df6a,0x3b73968a,0x3b8686f7,0x3b7f667b,0x3a32e5a5,0xb93ce614,0xbae41bbf,0xbb311873, +0xbb7a8fbc,0xbb23893c,0x39e518a5,0x3b8fe906,0x3bce7259,0x3bf337dd,0x3c1383dc,0x3c26bd0e,0x3c3b6f08,0x3c9408a8,0x3cb35718,0x3cc63c90,0x3cb61528,0x3cce5091,0x3cf0face,0x3d0d50bc,0x3cbb4fbc,0x3cb8d042,0x3c97e816,0x3c8a1ef3,0x3c7b311e,0x3c2f9b7e,0x3b8c3811,0xbb1f11b6,0xbba9ecaa, +0xbbf16ac8,0xbc3bd0c3,0xbc44fb69,0xbc59d23b,0xbc6c4605,0xbc5716cf,0xbc459e94,0xbc32367c,0xbbf60142,0xbb9ee2f1,0xba91aeee,0x3ac4d57d,0x3b23386a,0x3b881d6d,0x3baff8bc,0x3bba90c6,0x3bfa4790,0x3c144da4,0x3c54b9f7,0x3c7a7ef6,0x3c85e513,0x3c918255,0x3ca94f14,0x3cae080f,0x3cb51ab0, +0x3cb34f81,0x3cbc8ecb,0x3c441cfe,0x3c851221,0x3c7ba1ff,0x3c7eae2a,0x3c784601,0x3c76fee1,0x3c817b5e,0x3c86d24f,0x3c5d510a,0x3c275cc4,0x3bf34b81,0x3b8ef2d0,0x3ad3a532,0xba8f4328,0xb9f56ca3,0xb95e4b7b,0xb95efabb,0xb6f754cb,0xba2ae631,0x39e62781,0x3acabd8e,0x3b6bc571,0x3bd60383, +0x3bcbf66c,0x3c0cbec5,0x3c362cf2,0x3c488e81,0x3c6bb0d9,0x3c748ed2,0x3c878093,0x3c8948ed,0x3c91d626,0x3c8f09f1,0x3c83932e,0x3c86be08,0x3c852f34,0x3c91e633,0x3c639eef,0x3c5e1d39,0x3c648c3d,0x3c640a86,0x3c685d03,0x3c67941d,0x3c706202,0x3c563b7f,0x3c4778b6,0x3c3760be,0x3c25e9fd, +0x3c154589,0x3bf7015c,0x3c05971a,0x3c08a65a,0x3c0ce2d2,0x3c1213c2,0x3c14a6b1,0x3c10172d,0x3c6009b4,0x3c48d4e8,0x3bb60a89,0x3c7b63ad,0x3c60695b,0x3bc1d234,0x3be08b5c,0x3bf76bbe,0x3c07d31c,0x3c1a1089,0x3c27cf67,0x3c38af5a,0x3c857fb9,0x3c963f59,0x3c1397ad,0x3c79ec9b,0x3c7c198e, +0xbbe7b9f9,0xbb36ad2f,0xbc22b44c,0xbbbf8895,0xbbe0f8fb,0xbbc8026d,0xbbf2bb35,0xbc0429bf,0xbc144b31,0xbc079486,0xbc0a2578,0xbc1a0874,0xbc145d23,0xbc11ba01,0xbc0f0c00,0xbc04a912,0xbbfdcc86,0xbbf8df96,0xbbef644e,0xbbb7d2e8,0xbc0c1700,0xbac805d8,0x3bff5ef1,0x3cbcab33,0xbbb0ca15, +0x3bc0f840,0x3caa68c6,0x3ca92d85,0x3ca89b5c,0x3ca378e0,0x3ca0cd17,0x3c9f08cf,0x3c9cc38b,0x3baaa506,0xbbe50cb6,0x3cbdf640,0x3c03058c,0x3c45f457,0xbc0f19a8,0xbbc2460b,0xbbde88a4,0xbbc8ee45,0xbc18f77c,0xbc33ec34,0xbc5b24b4,0xbc3a5dfa,0xbc43462b,0xbc70fee1,0xbc69a6bc,0xbc68e7a8, +0xbc5e3a60,0xbc43d28d,0xbc30ef4b,0xbc2aeaa0,0xbc0e4c2f,0xbbe2dab5,0xbbbbe742,0x3c5b9fea,0x39c868da,0xba839703,0x3a9e7080,0x3b01e994,0xbb5dcab2,0xbb62690c,0xbb8ec73b,0x39f7dfd1,0xbb8dd47d,0xbb975668,0xb91bdf09,0xbb66c2a5,0x3b12a990,0x3bc3bf76,0xbb718df8,0xba09c351,0xbbf2e461, +0xbbf44cfb,0xbbc39e9e,0xbb9fceea,0xbc243908,0xbc6a1838,0xbca283ad,0xbc802653,0xbc88ec8c,0xbcb3dc2d,0xbcad5943,0xbca7ef80,0xbc9bcecc,0xbc8387ed,0xbc618ab9,0xbc57355f,0xbc16ba7f,0xbc004083,0x3a92dc04,0x3bd7be74,0x3bacef1a,0x3b30c7c6,0x3a887442,0x3b5ff668,0xbadd8ae3,0x3b342b8f, +0xbacf5126,0x3bc994eb,0x3a1488c2,0x3b2d9a2e,0x3b49a2af,0x39dd1940,0x3a95ccec,0x3c42fbf9,0x39b12f6e,0x3b8f8c23,0xbb86f555,0xbb4245cd,0xbb9a0551,0xbb9d3662,0xbc48367e,0xbc8eddf9,0xbcd7a7d2,0xbca2495a,0xbcb1d2d5,0xbcf7f53a,0xbcf84125,0xbcff7e2b,0xbcec82e8,0xbcc5e617,0xbca44b30, +0xbc931baf,0xbc44bfeb,0xbbdbf27f,0x3b0b1b80,0x3c577c5a,0x3bead258,0x3c13cac8,0x3b8b1810,0x3b54d837,0x3ac1bd43,0xbaa1a81d,0x3b33f37b,0x3c115bbd,0x3b83547c,0x3b038854,0x3bb270d9,0xbb22e726,0x3ad87158,0x3c99c182,0x3b97748b,0xbc085cd6,0xbc86395d,0xbca1aa13,0xbc2d911f,0x3b93e2bb, +0xbc2d6037,0xbc942315,0xbcae79d9,0xbc9053ab,0xbc84d6e2,0xbcad29af,0xbc46ec47,0xbbf88925,0xbb300cb2,0xbb9b5c92,0xbbcf2c34,0xbc273f35,0xbc21e59e,0xbc2856e6,0x36b4bb65,0x3c5528db,0x3bdd6247,0x3bc29dcc,0x3bb845bf,0x3bb8ca1d,0x3b3a4bc0,0x3b40d623,0x3ad12bba,0xbae9b8e6,0xba42d12b, +0x3b816490,0x3c180607,0x3c210104,0x3b99a036,0xbbd927ab,0xbc2732ae,0xba0d19a1,0x3c9106d7,0xbb8f1525,0xbc75cf92,0xbc3dfd94,0xbcc0d368,0xbc8a3f0f,0x3bdfa655,0xba291282,0xba480e66,0x3ba7e1b9,0x3b903c6c,0x3a28dca0,0xbba38d46,0xbc57048b,0xbc9edc40,0xbcd337a7,0xbc7e91de,0xbc2a03ef, +0x3abd2844,0x3b7b6cc7,0x3b17b397,0x3b84496f,0x3ab2f943,0x3a395e5b,0x3b08f879,0xb9497437,0xba72b9eb,0x39549ccb,0x3ae8eccd,0x39cf2216,0xbb57b4e6,0xbb092f17,0xbbbe0d12,0xbb2cdbdc,0xbc4ef1ad,0xba48d5b2,0xbbd3469d,0xbbebef56,0xbc405bce,0xbd06b759,0xbcfac7ef,0xbd105679,0xbd133853, +0xbcdc5252,0xbca1fafd,0xbc85df24,0xbcfb308c,0xbd0d6e40,0xbce4ab7f,0xbcb9e921,0xbc4e5165,0xbaf8dae4,0x3b07fad6,0x3a4d80c6,0x3bb0850c,0xba04bcc1,0xbb07b8ae,0x3ba05789,0x3b36c67b,0x3abf6138,0x3a4c2cbd,0x3aaf711d,0xb9d955f2,0xba846a2a,0xbb882ce6,0xbb9eaa69,0xbb82195f,0xbc08d608, +0xbc30ebf0,0xbc122943,0xbb46201e,0xbc87901b,0x3b153872,0xbc32cd13,0xbce4cb3a,0xbd6ee27c,0xbd5456e4,0xbd2141b0,0xbca047be,0xbc4b5290,0xbc1ca3a6,0xbbe6da76,0xbc4aa741,0xbc53ff06,0xbbe013d0,0xbc2428e1,0xbc4769c5,0xbc6e26f9,0xbc223c56,0xbbadc8f3,0x3a33840c,0x3ba8bc24,0x3a750726, +0x3953027a,0x3a5260a5,0x3ad77d68,0x3b18c89a,0xb98484f2,0xba70e782,0x3a30cba3,0xb9933267,0xbb2fe64d,0xbb605efc,0xbb61c02d,0xbc4ce4e6,0xbc933364,0xbcbf8c30,0xbc654df9,0xbd5abbbb,0xbd9f0c77,0xbd87e6f8,0xbd460904,0xbd244bd5,0xbd0b2830,0xbce3570b,0xbcaa322e,0xbc99a734,0xbcb5f926, +0xbc91a503,0xbc8cc246,0xbc7dad38,0xbc2dcec2,0xbbce85cf,0xbb95efc4,0x3b2f0ae8,0x3b1d7724,0xb90f0dd3,0xbaa59ac4,0xbb5cc3ee,0x3b74effa,0x3a840530,0xb9614c5a,0xba2f5885,0x3b0c2653,0x3aa4ce1f,0xbb2840d9,0xbbf647f3,0xbc0d32f5,0xbc0baa33,0xbc2404a5,0xbbe1fd8c,0x3b14fc8d,0xbc7600c7, +0x3d18f617,0x3c6fefcd,0xbb7bd3dd,0xbc4e1e83,0xbce1ab17,0xbd03357e,0xbd06c949,0xbd0be9f9,0xbc992137,0xbc318952,0xbc1d1ebc,0xbc0ba697,0xbc133a43,0xbc1bb587,0xbc2affa5,0xbc25458c,0xbc2df0d2,0xbc187943,0xbbd8ddd1,0xba45e044,0xbb0d1268,0xbb2e82dd,0xba25d049,0x39de29d5,0x3b469ea7, +0x3b6fce10,0x3ba6d342,0x3bf89e18,0x3c0a0470,0x3c6b4be2,0x3c8e3938,0x3c94de45,0x3c93d6ae,0x3c891908,0x3cb432f3,0x3c92a30b,0x3c646eac,0x3c3286b5,0x3b481764,0x390220d3,0xbbb35e88,0xbc4922dd,0xbca85f49,0xbcf86521,0xbcf1de72,0xbcf56ae0,0xbcf1bef0,0xbcd3d4a6,0xbcb52909,0xbc943b53, +0xbc914123,0xbc8c29fa,0xbc88db68,0xbc7542fd,0xbc74bdcf,0xbc45cfb2,0xbba991a5,0xbab57ed6,0x3ae5e70d,0x3b67b224,0x3bdb051b,0x3bfe445e,0x3c3c1b75,0x3c1d76a4,0x3c67425f,0x3c5aced4,0x3c8a5c69,0x3c8c9cde,0x3c95604a,0x3ca2cf67,0x3cbb95a7,0x3c8faaec,0x3c979f90,0x3b8fc231,0x3b310f09, +0x3745f4a4,0xbb13afda,0xbb9931d9,0xbbc80bdb,0xbc0507c5,0xbbd8b0f3,0xbbc0538a,0xbbb1132a,0xbba27b29,0xbba2c1fa,0xbba0efc8,0xbb8a06cc,0xbb58d60f,0xbb295545,0xbaf2481f,0xb9b812ad,0xbacc42c1,0x3b151cba,0xbb368c78,0xbb62f6ba,0xb907cd94,0x39bddffb,0xbb22d337,0xbabb20df,0x3931535d, +0x3b982fb2,0x3b7a5601,0x3bae6b6b,0x3c2230cb,0x3c0cc77f,0x3c35101c,0x3c161cfe,0x3bb16f34,0x3b802618,0xbb1d2fb0,0xba002238,0xbaebef96,0xbb1cb3f2,0xbb474ac6,0xbb7a8952,0xbba671d9,0xbb9800a3,0xbb9452af,0xbb8b07ca,0xbb88fdb5,0xbb830011,0xbb80546c,0xbb603968,0xbb48e4c6,0xbb29dfca, +0xbb20ab6b,0xbae46ed1,0xbb1abbf7,0x3a9ab77e,0x3bfe5d99,0x3ca17c12,0xba745f9f,0x3bfd0598,0x3cae3303,0x3cb19339,0x3cafcded,0x3ca94b5a,0x3caff4e9,0x3cb116bd,0x3cb1f9ec,0x3c334fdb,0x3aa8e288,0x3cb9e89e,0x3c411f3c,0xbb2481a1,0x3c564f91,0x3b63de69,0x3c84b8fb,0x3c322f42,0x3c44600e, +0x3c2fda90,0x3c567188,0x3c5fb768,0x3c584c8d,0x3c5fe804,0x3c58b021,0x3c4264c1,0x3c3fc2d6,0x3c3e5c9a,0x3c3f8554,0x3c513700,0x3c57de21,0x3c584209,0x3c59d3ed,0x3c4699e0,0x3c896330,0x3b7911c7,0xbbbda911,0xbc8830ba,0x3bdda89e,0xbbb42186,0xbc82ec00,0xbc83ef25,0xbc8133f9,0xbc5a510b, +0xbc7ec90c,0xbc80a7e1,0xbc6de448,0xbba837e5,0x3c0c4626,0xbc672b72,0xbbe66cdd,0xbbfe6e44,0x3c79913b,0x3c488e2b,0x3c2aaffe,0x3c061ada,0x3c5b9f7a,0x3c7d682e,0x3c6d8673,0x3c89d536,0x3c81a3af,0x3c43d01c,0x3c37ecb7,0x3c368b38,0x3c44ee9a,0x3c7ac615,0x3c87bbc1,0x3c886e86,0x3c80faea, +0x3c857a47,0x3c7f6d27,0xbba5306e,0x3c144630,0x3bcb9d9b,0x3b946e07,0x3b2aa6dd,0x3bd5c121,0x3c0404cc,0x3c0f0655,0x3bba6adc,0x3c19ea8e,0x3c23e030,0x3bcc08c5,0x3bca9c8b,0x3b147cc2,0x3befe648,0x3c5480bf,0x3b819b05,0x3c39d750,0x3c5e9e52,0x3c2f9f24,0x3be7cc24,0x3c860095,0x3c9d5591, +0x3c934431,0x3cb0ff0c,0x3c9c9924,0x3c4b6afa,0x3c222fa8,0x3c193778,0x3c2bb1b2,0x3c86e670,0x3c9b8b18,0x3c9eaf2a,0x3c916e05,0x3ca7b36b,0x3c5e9131,0x3be08d38,0x3c0a7feb,0x3bbda978,0x3bdc26b1,0x3ad4a013,0x3bb00c9c,0x3a46056a,0x3c14c927,0x3b9f7331,0x3bd54b39,0x3adaaaed,0x3bd00681, +0x3aee9920,0x3b618798,0x3c259e40,0x3c0d4552,0x3be76c32,0x3c7aaa06,0x3c57f5b0,0x3b992a50,0xbb08f360,0x3c322f3b,0x3c931ede,0x3c8b6567,0x3cc470db,0x3cb5cbd1,0x3c38bb01,0x3be9292a,0x3bbe09d5,0x3c1eef70,0x3ca5ebf6,0x3ccaf3ac,0x3ccf62c3,0x3cb779be,0x3cc1a2ac,0x3c96ddd6,0x3c047cc4, +0x3c830b27,0x3bb10f3c,0x3c18fbd8,0x3bf8925d,0x3b9faf6f,0x3af6da28,0x3b2808fc,0x3c3c3455,0x3ba119c3,0x3b9db021,0x3bca5a70,0x3a07c4c7,0x3b9d85c0,0x3caa6328,0x3c8a7ed8,0xbc59fcbe,0x3c1f0731,0x3caad212,0x3cecbd66,0x3d2accb6,0x3d040d17,0x3cd803b9,0x3cd46e1a,0x3cef0fb5,0x3cd1be3d, +0x3c6622ef,0x3cb51983,0x3c9e1e6b,0x3c0e205b,0x3c025e4c,0x3c0563be,0x3c82b61f,0x3c6e5601,0x3ca9faad,0x3c875692,0x3bc65234,0x3c7423a7,0x3c16f9b9,0x3c166494,0x3bde8ff6,0x3b3ca75f,0x3b855ae9,0x3b231765,0xbab1542c,0x3a87a995,0x3bce8dcc,0x3c369c63,0x3c4ca024,0x3b4a6e3c,0xbc20098b, +0xbc54419c,0x3b4f5598,0x3d073339,0x3c31504f,0xbbc44976,0xbc3a6a0a,0xbc5860fe,0xbbe03131,0x3c10cab3,0x3bcd8e85,0x3be03b41,0x3c3b674f,0x3bbd4b93,0x3b4990b1,0x3bc68e21,0x3c14f79b,0x3c5791e5,0x3c9a4900,0x3c6cab54,0x3c716d0d,0x3c033d4c,0x3a9c3f0c,0x3b830c2e,0x3bb9ab70,0x3be81ef0, +0x3bb198dd,0x3b6bc93d,0x3a7610b0,0x396bbf91,0x3b085f66,0x3b8a96ae,0x3ad824f5,0xb9019051,0xbb6f488d,0x37572fc9,0x3b530ee3,0x3b16c48a,0xbba0a426,0xba606bd3,0xbac5d3ff,0x3bc8a278,0x3cb7cd09,0x3d044fc5,0x3d18e658,0x3d20346d,0x3d084257,0x3ccc7b33,0x3ca275c3,0x3ca4a076,0x3cbb4762, +0x3cd232fb,0x3cb22e4c,0x3c71b7c0,0x3bbbc785,0x3c046a64,0x3c56bebc,0x3c5985fa,0x3bc8ed1a,0x3ba33049,0x3ba2adfd,0x3bc10f07,0x3b5aac79,0x3a91633c,0x3b69aa15,0x3b192c98,0x38124791,0xbb38e7a3,0xbb5a4374,0xbb1ce4a8,0xbc1c6cfa,0xbc0f3fc7,0xbc2e7287,0xbb5f2cd2,0xbc44c3c7,0x3b7111f2, +0x3c83aaf1,0x3c947250,0x3cec95f8,0x3c8628c8,0x3c0559cd,0x3b54a120,0xbb4d45a2,0xbb87213b,0x3a718d6a,0xbb16475d,0xbad1cc32,0x3b8cb8c1,0x3c1bb4f1,0x3c53d46a,0x3c5ab0ac,0x3c6c3c0d,0x3c4ce40b,0x3bafe4b7,0x3a51a6a8,0x3ba0d57a,0x3b914905,0x3b6d5a0d,0x3b6cc010,0x3b6fed6b,0x3a739b1d, +0xb81205ca,0x3b1a5b5a,0x3ae43808,0xb8921b65,0x3b47bb36,0xbb164b6c,0xbbc09c48,0xbc6b6c7b,0xbc7d674f,0xbd172867,0xbd1cc834,0xbc60f8fe,0xbbf37140,0x3bd9faa5,0x3c0c823a,0x3c420046,0x3c607b16,0x3c41c671,0x3c27f549,0x3bd8e5fd,0x3be485c4,0x3b9faeff,0x3ae66c43,0xbab5017d,0xbb006177, +0x390c09ff,0x3b2913cb,0x3bda985c,0x3bf1562c,0xb9727126,0x3b5b8f52,0x3b926ea7,0x3add78df,0x3af41d32,0x3b2281d1,0x3b48f72f,0x3b3c86e6,0xbb3949be,0xbbbf131c,0xbc11b0e9,0xbc150e4c,0xbc6ab4b3,0xbc57ff27,0xbc14f79a,0xbc6f7ecf,0x3bea1693,0x3c540af7,0x3c13c73e,0xbb000df9,0xbbf715f8, +0xbbc729f2,0xbace8025,0x3b955d5f,0x39c76eb8,0xbb380004,0xbbe47ef1,0xbb1d76e1,0xb91da11c,0x3a5a1546,0x3adbd51a,0x3b59b9b5,0x3b68f178,0x3b816c44,0x3b151f17,0xbb065eb2,0xbae061d2,0x397163d1,0x3a8eef91,0x3b8be601,0x3baf1f1e,0x3b87663b,0x3bcc884e,0x3c035636,0x3c3085c8,0x3c742645, +0x3c8d6f46,0x3c988a12,0x3c89f743,0x3c8ab7ef,0x3c85ae5b,0x3c895793,0x3c8749b4,0x3c958ae5,0x3c6e0231,0x3c14d903,0x3b83af0c,0xbac52232,0xbbfddf1c,0xbc5cdcac,0xbc5a1c5c,0xbc520826,0xbc5e8229,0xbc5e838b,0xbc648f5e,0xbc6bde9e,0xbc5ae143,0xbc52192b,0xbc413cf3,0xbc1c879c,0xbba6b2cf, +0xbb9d2ec5,0xbbc2db55,0xbacea92a,0x3af6d7c6,0x3b989a82,0x3bc05ab7,0x3c2209a9,0x3c17ef01,0x3c53da70,0x3c349a46,0x3c6842e3,0x3c65df83,0x3c8d6c7d,0x3c91a3df,0x3c9949a1,0x3c9a4bd4,0x3c9a8a9b,0x3ae65e2a,0x3bf82bdb,0x3bea5403,0x3bdaf264,0x3bdf48c8,0x3be2e8c8,0x3bf5ca01,0x3bedc125, +0x3bb4e31b,0x3b4cad36,0x3a9e02b0,0xba7ec72e,0xbb481de8,0xbbb99614,0xbb73ba47,0xbb0fcc5b,0xba47a3ad,0x39b62ae5,0x3a945605,0x3b5e657e,0xba4c1375,0x3b2e4023,0x3b12e0f8,0x3a9a8a9f,0x3a0fe3fb,0x3b12884f,0x3b8f511e,0x3bb2bd48,0x3ba42c66,0x3c10192e,0x3c23b5e6,0x3c27a2f1,0x3c1eabcb, +0x3beff101,0x3be9508a,0x3c0a1f35,0x3b4d4374,0x3bd66834,0x3ba91ec0,0x3bb15a36,0x3baa309c,0x3ba1c978,0x3b97b694,0x3b9cf39d,0x3b80916d,0x3b5e3159,0x3b33780c,0x3b05b600,0x3abb1e33,0x39758c3f,0x3a99a916,0x3ace8b46,0x3b09c326,0x3b360cbc,0x3b403168,0x3b9995c1,0x3afa8a64,0xbb188796, +0xbbd03358,0x3b4a76be,0xbb154d79,0xbbf75b82,0xbbdf5011,0xbbbdb497,0xbb89babd,0xbb893c22,0xbb5a8841,0xbb02dfa8,0x3862d0c8,0x3ba1128a,0xbb43cf18,0xba824df1,0x3b98c5f2,0xbb14149b,0x3c14ccfb,0xbbd41cc5,0xbabf9726,0xbb0063f7,0xbabbd455,0xbadb6dc5,0xbb0c0af0,0xbb5c5090,0xbb363cea, +0xbb4a55ac,0xbb87d6b0,0xbb7b6b1e,0xbb761287,0xbb71935f,0xbb51f7ac,0xbb3fc224,0xbb38e162,0xbb2386d2,0xbaaefea9,0xbba2ae3e,0x3c202148,0x3c88bb7d,0x3c9dd30e,0x3bb705af,0x3c7c5754,0x3c978c34,0x3c9fbcff,0x3ca0d8ef,0x3c940d1d,0x3ca29793,0x3ca4259e,0x3ca0b73d,0x3c7486cb,0x3b76d18d, +0x3ca5bc06,0x3c9120c8,0x3c9f3f6f,0xbaece7ca,0xbb0d04cb,0xba73251b,0xba2b5eb0,0xb9e43898,0xba8aad87,0xbb8d18f0,0xbb44383b,0xbb8b31c0,0xbbf4a627,0xbbf01927,0xbbf89f88,0xbbeb18a6,0xbbb8fc5e,0xbb8c4be3,0xbb7ba6c4,0xbae24507,0xbb075ffa,0x3aea03b4,0x3c9231d7,0x3b966073,0x3bc76923, +0x3ba9742b,0x3bcf1562,0x3b42dd28,0x3b0fbcc6,0x3b62b82f,0x3c0152a1,0x3b2e5495,0x38ad482c,0x3b85317d,0x3ac6f501,0x3be74eee,0x3c4150e5,0x3b256e62,0x3c303ce3,0xb99c4f2b,0xbb6211dc,0x3abf2f6c,0x3a69cb1e,0x3afa6492,0xb9ada6ec,0xbbea940e,0xbb846e63,0xbbd05696,0xbc3e68b2,0xbc359625, +0xbc3541f6,0xbc20e16a,0xbbff7de3,0xbbb291de,0xbba94de6,0xbae21b3e,0xbb3ec483,0x3bf36a7a,0x3c53d4bb,0x3c12f5bc,0x3bb6f060,0x3b84fda1,0x3bee951d,0x3aa98b93,0x3bd9be06,0xb75bbf87,0x3c1af8ae,0x3b008183,0x3bde2ce9,0x3baf0ebb,0x3b6dc3d0,0x3b93b282,0x3c73d655,0x3be6c67c,0x3c7b26cc, +0x3b103492,0xba3fa2a7,0x3acef017,0x39db8a56,0x3b7441cd,0x3b6d8404,0xbbece0aa,0xbb59f0f5,0xbbef46d1,0xbc8d16bb,0xbc8f4519,0xbc9b5292,0xbc88704c,0xbc4049ef,0xbbfab266,0xbbbf53eb,0xba1c09bf,0xb9c572cb,0x3c2596ad,0x3c8e5c1f,0x3bcfc418,0x3c1792a5,0x3b841696,0x3b52c6b5,0x3a51023c, +0xb80617f7,0x3b6eae09,0x3bf71ee0,0x3ba30e81,0x3b053d7e,0x3b827cfe,0xbb1e2ccc,0x3b959bfd,0x3c98f727,0x3c3a7c0c,0x3ba37faa,0xbb9e3ccb,0xbc258d19,0x3b473400,0x3c8cb397,0x3ad29f0f,0xbbe572b7,0xbc3fd253,0xbc0435a3,0xbc2a8b15,0xbcb78278,0xbc12369a,0xbbb395f0,0xbc07f7f3,0xbbbdde15, +0xbbb441b8,0xbc38b5e9,0xbc053a5f,0xbc0f198c,0x3bf9bd12,0x3c8251ab,0x3b8ab437,0x3bf89ed5,0x3be3dc00,0x3c021db6,0x3b6cc2f7,0x3b4a686b,0x3ac1115e,0xbb1b2e97,0x3a95ff08,0x3bea59f3,0x3c585087,0x3c4133f9,0x3bda70a4,0xbbcdcf6a,0xbb0de217,0x3c1a68c8,0x3c415cfa,0xbc737a6d,0xbc85d7b2, +0xbc523344,0xbc1064e3,0xb9793c78,0x3c536dc8,0x3b93f9f7,0x3adddbd9,0x3b94e6c6,0x3bee7be2,0x3bc3987e,0x3b4c08cd,0xbb389f9b,0xbbcd3c4f,0xbc1ca423,0xbaa6837a,0xbb0fb817,0x3bc3c85b,0x3c11f6d3,0x3bd722db,0x3bfbad96,0x3b1db394,0x39e05974,0x3b23127d,0x3a22f437,0x3a09c905,0x3b2b7093, +0x3b37aa6b,0x3a8646e8,0xbb43287d,0xbb7c04d7,0xbb9e4255,0x3b95958f,0xbb80a48b,0xb8fc8eb2,0xbb6545e4,0xbbc93d84,0xbb9c49c9,0xbc03d188,0xbba872cc,0xbc002586,0xbbc64989,0xbc4f47df,0xbc5c2ba6,0xbc2b744b,0xbca8c1f5,0xbca960bd,0xbc6628e8,0xbc378053,0xbb993923,0x3a362b1d,0x3bb4cbde, +0x3a2e3859,0x3b81385b,0x3b8cb29d,0x39c335db,0x3bc58eca,0x3bba0e40,0x3b420f89,0x3a6a6535,0x3b1dfbcc,0x3a2c6535,0xba5b89eb,0xbb56b28c,0xbb4a934b,0xb99763a5,0xbbcb239b,0xbc062284,0xbb331584,0xbb41b98a,0xbb963f04,0x3b544f46,0xb51328ad,0xbae5fbbd,0xbc7c0e5f,0xbc6be83e,0xbc6364d7, +0xbc6598a3,0xbba3720b,0xb9bedb87,0x3ba6fe15,0x3aa565f7,0xb64f1d6a,0x3b0bfea8,0x3b05258f,0x380ed78e,0xbb6279ab,0xb99716be,0xb9b5093f,0x3ae952a5,0x3c1282e4,0x3bc4b778,0x3b8e121c,0x3b8fe61b,0x3b68ceae,0x3b4fb6f0,0x3916b4f2,0x3a082b57,0x3b2483a3,0x3af664db,0xb99e6d07,0x3a67f126, +0xbb2be584,0xbc131435,0xbc22cc13,0xbc510c5e,0xbc7f7325,0xbcf9648c,0xbd02b389,0xbcd268a4,0xbcc5cbd9,0xbca8c644,0xbc9aaba1,0xbc7f8208,0xbbdf9733,0xbb752adf,0xbbd76e77,0xbab44e6b,0xbad01ccb,0xbb9ddb32,0xbb3d7a10,0xba8b721a,0xba0d2ba4,0x3b88b86c,0x3b7bb07d,0x3b31647b,0x3ba7afb3, +0x3a661f9b,0x3b65740e,0x3adef103,0x3ab52c08,0x3b0a262d,0x3b4445cd,0x386f6249,0xbb2b45e3,0xbc011de6,0xbc099215,0xbbe3d29f,0xbc600cb6,0xbc5329c9,0xbbbc42d6,0xbc6bd57d,0x3ca2f9ad,0x3b23f194,0xbc831b3c,0xbc91df4c,0xbcb0e682,0xbca231e8,0xbc8d5e35,0xbc646236,0xbc1ed67e,0xbc093db5, +0xbc25c861,0xbc0705f0,0xbbdf8960,0xbbcadcc0,0xbba0c4c9,0xbb8e6370,0xbb5c9503,0xbb5c7236,0xbb435410,0xba1d9330,0xba26680a,0x3a3e9fa3,0x3bce6d1d,0x3b8f6da3,0x3b82fb93,0x3b6512c4,0x3b876dc7,0x3bd6457d,0x3bad2487,0x3c161a70,0x3c3c3bc1,0x3c4eebf9,0x3c520a27,0x3c364c15,0x3c3756d9, +0x3c0f1526,0x3c854bce,0x3c19fcfe,0xba1ee1ea,0xbb766b7a,0xbc40a7a2,0xbc82bac4,0xbcb1a6a3,0xbce54f56,0xbcc6d7f1,0xbcafaeb5,0xbc98ac96,0xbc9550d6,0xbc9143f8,0xbc8b09c6,0xbc855c64,0xbc7d125b,0xbc7373cd,0xbc489113,0xbc3905aa,0xbbe1a0bc,0xbb08555d,0xba1d6646,0x3a5828c1,0x3b3b44d6, +0x3be4cb3c,0x3c04aa0e,0x3c3d331e,0x3c1290b3,0x3c6a16e0,0x3c43efb7,0x3c7f8139,0x3c7a7a09,0x3c8c2d14,0x3ca6eb06,0x3cc6a747,0x3c916ec3,0x3c3ae352,0x3a2cbda5,0xbada8d2f,0xbb5153e9,0xbba98928,0xbbe528bb,0xbc0c93d8,0xbc302702,0xbc2cd8b0,0xbc38ac0b,0xbc3a6773,0xbc37575e,0xbc2c052a, +0xbc1fd95f,0xbc0848d9,0xbbe447ad,0xbbc3297e,0xbb9a25a6,0xbb7bc69a,0xbb517a18,0x3b622792,0xbae06dbd,0xba379603,0x39fc285d,0x3ab51ca2,0xba44cc04,0xba691b58,0x3a87acc7,0x3b956503,0x3b1db928,0x3b025f2f,0x3bb5a7a7,0x3b7e96e3,0x3bb1eaed,0x3b9cbbea,0x3a3aef2e,0x3b147ae3,0xbbd55924, +0xbb9ff743,0xbbc607fa,0xbbdb6371,0xbbf68a47,0xbc08822b,0xbc19d78e,0xbc162e55,0xbc143ca3,0xbc131b1a,0xbc124838,0xbc13c8c2,0xbc182a56,0xbc0eb400,0xbc06c27a,0xbbfa0b31,0xbbecef79,0xbbd00432,0xbbfc63ab,0x39d874a8,0x3bc3914b,0x3c2ba52a,0xba797b08,0x3bdd285d,0x3c389004,0x3c4361af, +0x3c407435,0x3c2e9c49,0x3c463a9c,0x3c4a5198,0x3c496e28,0x3bfcfdbf,0x37379127,0x3c3c148e,0x3c0730fa,0xbc00cb68,0x3ba55701,0xbbbca01f,0x3c01a19d,0x3b968f71,0x3b998cb0,0x3b84b741,0x3b85fb2f,0x3b85a443,0x3b88ff66,0x3b919f30,0x3b8dcd86,0x3b739db3,0x3b6f053e,0x3b699335,0x3b6237d8, +0x3b919141,0x3b9f492e,0x3ba295c6,0x3ba68307,0x3ba2baf1,0x3c07d07c,0xbbb0accc,0xbc106c20,0xbb955a10,0xbb78e031,0xbc1a6418,0xbbad9f37,0xbbc6eb74,0xbbc807b2,0xbb92249b,0xbbe47c41,0xbbef8efd,0xbbe19061,0xbc1803a3,0xbb360bbe,0xbb6ddca8,0xbc22d834,0xbbda7c7b,0x3b99aa5f,0x3bcf8317, +0x3b662e74,0x3b23130a,0x3ad80e95,0x3ae9f34b,0x3b2523e2,0x3b7b2756,0x3b757e05,0x3ad534e0,0x3ad78194,0x3ae4362c,0x3af992e9,0x3b926b8d,0x3bab6c33,0x3bb2885e,0x3ba83f74,0x3bf65e0c,0x3bc06471,0xbb75a0cd,0x3b5eda0c,0xb9f538a4,0x39cbe5dc,0xba687f78,0xb8e2fbb9,0x3b131b00,0x3a9506c1, +0xbac6a6aa,0x3b0d1925,0x3b7d51cb,0x3a742de5,0x39fc71db,0xbaa34ee6,0x3aa1ef0f,0x3b9d1485,0xbb118f1f,0x3b89c7de,0x3c121841,0x3b9a2150,0x3b5c063a,0x3a1f03b9,0xba39c101,0x3abe0169,0x3b402e99,0x3b1db3e0,0xba07f651,0xbac76d63,0xbb010e90,0xbb299ea2,0x3b387a66,0x3ba7af08,0x3bbb9258, +0x3bc5a67c,0x3c2340bf,0x3be93e60,0x3aa5113e,0x3b5ee61c,0x3b1b57f6,0x3afd6d16,0xbab0c3f8,0x3aa4ab8f,0x38df8172,0x3bd5d10f,0x3a2a6eaf,0x3bb488fd,0x39b45ac1,0x3b2a5d9d,0xba5380e5,0xb9719e54,0x3b958d52,0x3b0132ce,0x3b305fbe,0x3bf08ac0,0x3c2647d4,0x3adfd862,0xba9dc476,0xbbd8615b, +0xbbd6de41,0xbb410723,0x394e077e,0x3a5fd49c,0xbb8e0096,0xbbd03b0b,0xbc027d2e,0xbbe49ea0,0x3a857427,0x3b8d0884,0x3bb43c71,0x3bc99194,0x3c4f36c2,0x3c4dd74b,0x3bd7ab41,0x3c4aff3d,0x3b6e227d,0x3bc73683,0x3bc6d328,0x3b813b99,0x3b179f2a,0x3b7ae0c1,0x3c356d2e,0x3baf3a2a,0x3ba4dc27, +0x3b9d9694,0xb9a748bd,0x3b15c5a3,0x3c837131,0x3c2d62bc,0xbc916aa2,0xbad563d4,0x3c3800f0,0x3c88aeaf,0x3cec9b65,0x3c4539e5,0x3b3f167f,0x3aa94622,0x3c148d22,0x3c2a4f13,0x3b15ee0e,0x3c9b8af3,0x3ca50e35,0x3c25343e,0x3bd9b8ee,0x3bb25bcc,0x3c57eda3,0x3be792aa,0x3c01b5db,0x3b475d9d, +0xbaa1bcb3,0x3bf67cab,0x3bb81c01,0x3be871c2,0x3bcdacec,0x3b6599d2,0x3b60a5a2,0x3ad0b926,0xbaf686e6,0x3abc3821,0x3c015767,0x3c332441,0x3c1b0274,0xbac9adb1,0xbc7f21e5,0xbc98c902,0x39c2f544,0x3c3924a0,0x3aed5063,0xbc37ff42,0xbc680801,0xbc83307c,0xbc3b2223,0xbaca3b74,0x3a882a21, +0x3b47467c,0x3b104838,0x3b9f6317,0x3b614f74,0xb992eec8,0x3aa24fe9,0x3a8415ac,0xb9defde7,0x3abdb884,0x3bc64f25,0x3b3260aa,0x3b55b0cd,0x3bac41fd,0x3b8ec22a,0x3bbe4ea3,0x3b6a03c5,0x3b4dfcee,0x3ad11a2e,0x3acedf08,0x3b6c7d80,0x3b7f5a62,0x3a36ae62,0xbafd770d,0xbba7f82e,0xba2d36fd, +0x3b0aeccc,0x3b7a21c8,0xbb808f59,0xbb42ba38,0xbbb833b1,0xbbd3ddba,0xbc33cbc2,0xbbe9584b,0xbb22d8dd,0x3bed3887,0x3c7efa2e,0x3c7e2ab5,0x3c183d46,0x3b9e863e,0x3b25ad9f,0x3b0914e1,0x3bb217ba,0x3bd53ec1,0x3b929fbf,0x3c0ad58e,0x3c409c69,0x3b518715,0x39046547,0x3b1fd7ff,0x3ae19f2d, +0x3b845d31,0x3b10183d,0x3a86cf8a,0x3b465ba7,0x3b0d5f4d,0x36f47941,0xbb25bbc0,0xbb279838,0xb9f869c2,0xbc1cb1f2,0xbbd8efc4,0xbbe1b902,0xbb5ebe90,0xbbbd7a2c,0xbbc35386,0xbb946b08,0xbc16c962,0xbc44e905,0xbc22779a,0xbc248ff9,0xbbf1a290,0xbc4e6a34,0xbc54c713,0xbc1d68d4,0xbbbb89f1, +0xbb6b02c7,0xbb05b4f6,0x3b57e315,0x3b958363,0x3b99f54f,0x3bd9fffd,0x3c092ee7,0x3b5521e8,0x3b28dd00,0x3bbc49d9,0x3bb0aa76,0x3b9ad5a1,0x3b67fa8f,0x3b4a5ed9,0x3ac7d54f,0x39b06c16,0x3b344a65,0x3b339bb9,0x3ac3a41b,0x3bb2ed94,0xbb46d46d,0xbbcd9a28,0xbc00377a,0xbbcc85ee,0xbd06d440, +0xbd14eb7c,0xbcc14752,0xbcc0ab4d,0xbcaf22aa,0xbcb24e50,0xbc947c7e,0xbc3ebcfa,0xbb859dd4,0xbb0ee4e0,0xbc2f5f20,0xbbd8a73a,0xbbbf0228,0xbbe5d06b,0xbb856396,0xbac56831,0x3b42d1f5,0x3b782243,0x3bae89d4,0x3b427776,0xb9e91277,0x3b2156b7,0x3b81f13b,0x3b0be3ae,0x3b218a96,0x3b4139d5, +0x3ae559b5,0x38d8b749,0xbbb8680b,0xbc0177dc,0xbc2e9859,0xbc3320ce,0xbc88ac70,0xbc91548f,0xbc7c4d13,0xbccb455d,0xbc090237,0xbc7b7214,0xbc937e31,0xbc952600,0xbc37d266,0xbba3bd3b,0x3a8cb689,0x3bb1fb43,0xb9c0e639,0xbb6ac4c4,0xbb9df6ce,0xbb85e327,0xbba48196,0xbbdec3ea,0xbb9fa485, +0xbb2e7da1,0x3b4a85ef,0x3b6f82ae,0x3b617ff7,0xb9a5bf2a,0xbaa44d4c,0x38f5d6ea,0x3a7d4902,0x3b1f6ae8,0x3b85e038,0x3b918543,0x3bac8c6e,0x3bb9705d,0x3bc39c81,0x3bd02157,0x3bf069cd,0x3c059017,0x3c0e3039,0x3bb5b909,0x3a028ca7,0xbb74d228,0x3bb01509,0x3bb373ef,0x3b025155,0xbb91bdab, +0xbc30abc6,0xbc745a34,0xbc996964,0xbcb29dec,0xbc985838,0xbc801416,0xbc5c677e,0xbc57c6d1,0xbc4c5d79,0xbc4cf228,0xbc345b78,0xbc27d072,0xbc129fc3,0xbbf77c88,0xbb692751,0xbb8237f1,0xbbc78fea,0xbb12af41,0x3992dd18,0x3b29bb95,0x3b8e31f7,0x3bee37fd,0x3bff4aa3,0x3c25951d,0x3c110778, +0x3c35ef00,0x3c28ac87,0x3c3f6432,0x3c3233e9,0x3c3679f2,0x3c357d20,0x3c0c75bf,0xbac8987a,0xba4703ce,0xbaaab426,0xbb2bf861,0xbb4b7599,0xbb721662,0xbb8fdd1b,0xbbcff768,0xbbccb3bd,0xbbe51f3b,0xbbeba0cb,0xbbf5c286,0xbc01b938,0xbc10fb1d,0xbbf10706,0xbbc4a003,0xbb984302,0xbb7340d5, +0xbb2c90af,0xbac25ceb,0xbb66e6ee,0xbad98d5d,0xbb4dc501,0xbb242f66,0xbb659dcd,0xbb4d8221,0xbaca4d92,0xbb01841c,0xbb0e0b68,0x3a107047,0x3b0fe489,0x3b1646f2,0x3aed68e4,0x39be6e40,0xb9aa6c8c,0x39e4b123,0xbbf85a66,0xbafb9bf4,0xbb49de82,0xbb682092,0xbb82738f,0xbb9d47ca,0xbbaf645a, +0xbbbdee67,0xbbb9b01c,0xbbba7969,0xbbbe5f53,0xbbc22ef5,0xbbc42d31,0xbbceee8d,0xbbbac60d,0xbbb0b506,0xbba303e2,0xbb93e96f,0xbb8b5825,0xbb33ce80,0xbc01b6ab,0xbc246061,0xbbe0ecb5,0xbbece71e,0xbc24b687,0xbbea7061,0xbbec5406,0xbbdba8a0,0xbbbd4d4d,0xbbd40349,0xbbcc764a,0xbbb4bebc, +0xbc0953f8,0xbbc74dff,0xbb9cbd93,0xbc10ac12,0xbbad09b5,0x3bd2e321,0x3c66c12f,0x3b8a9ab9,0x3bc24521,0x3bd0c222,0x3bc451f7,0x3bf0ad0e,0x3bf2ecd0,0x3bd2cd91,0x3bdaa26e,0x3bcd2da6,0x3baaca3d,0x3bb1cbf7,0x3bb351a9,0x3bb8462f,0x3bc43d78,0x3bca2858,0x3bc8c836,0x3bd0a0ab,0x3bcc51df, +0x3baa3d30,0x3c698b10,0x3c597111,0x3b33a721,0x3c510b0d,0x3c553df6,0x3b557963,0x3b9a707e,0x3ba61f72,0x3b8d6562,0x3bc76f0c,0x3bd03335,0x3bcad7dc,0x3c557d42,0x3c484d00,0x3b8aaaf0,0x3c624109,0x3c4b7d79,0x3c0aa507,0x3bb98361,0x3bf179a6,0x3bd11f8b,0x3c27e9f0,0x3c3786ca,0x3c0ff969, +0x3c198836,0x3c01ef44,0x3ba1ce74,0x3b99d9bb,0x3b943b10,0x3ba904e1,0x3bd6ef3c,0x3bfa356b,0x3bfe1883,0x3c1272ef,0x3bf45a05,0x3c322b44,0x3c377f56,0x3c0a59ac,0x3c2faac5,0x3be7ca1b,0x3becc87c,0x3c033ec5,0x3c02f141,0x3c2c151b,0x3c3b8c29,0x3c1e01d2,0x3bdda720,0x3be2b7b8,0x3bd09f96, +0x3bfc5eaa,0x3c45e97b,0x3c18dbc3,0x3c62ea05,0x3bfee520,0x3bb20659,0x3c207ea3,0x3bdc526b,0x3c6ca9d4,0x3c82ae21,0x3c2c0792,0x3c48b923,0x3c1a6d1e,0x3b91ef23,0x3b960335,0x3b8a39cd,0x3bb46259,0x3bf203b0,0x3c1689d3,0x3c105755,0x3c248bc3,0x3c0901ca,0x3c4c8aeb,0x3c60446c,0x3c27ba8f, +0x3c042557,0x3bd2a6ce,0x3be56503,0x3b8a4567,0x3be98a67,0x3b9f1290,0x3c195622,0x3ba3ac3e,0x3bf9dc0b,0x3bc5c3f7,0x3b9c9456,0x3bbccb66,0x3c4bdba2,0x3c293982,0x3c7eb585,0x3c05fd36,0x3b970639,0x3bf519eb,0x3b7fdb41,0x3c86e6a8,0x3cb2f258,0x3c749fdb,0x3c883a9c,0x3c51f98e,0x3b4858cb, +0x3adfd971,0x3a685289,0x3b7388d6,0x3c12d4e4,0x3c4566bc,0x3c4b77ca,0x3c6a560f,0x3c3d1de1,0x3c8869d7,0x3c7eea37,0x3c093de7,0x3c0ce6e2,0x3bb26173,0x3b88d7bb,0x3a5d4202,0x3afe8fe5,0x3b8bb7eb,0x3be56d3a,0x3bca73a6,0x3b5a3d75,0x3b1ee68e,0xba45b28b,0x3bb80d53,0x3c6d7778,0x3c66649b, +0x3c246df7,0x3c3eb298,0x3c40c3b4,0x3cab89d3,0x3cf4c965,0x3c9ecd60,0x3c65b531,0x3c512598,0x3c04b003,0x3b6a77e6,0xbb9e9dcc,0x3c0b419d,0x3c144d46,0xbb03d43c,0x3abc3ffe,0x3b0b5dcd,0xb9f1f256,0x3b4db2f7,0x3b766ef1,0x3c425ec3,0x3c3e5511,0x3bb21d8d,0x3c052221,0x3bffed0e,0x3c0f3c83, +0x3b92a67d,0x3b49103d,0x3abb57a0,0xbb0b81bb,0x3b816f17,0x3c299086,0x3c61ec15,0x3c2a4843,0x3b94c3cd,0xbbf2a35b,0x3ade2d3b,0x3c780584,0x3ae22480,0xbc81c0f3,0xbc4453f7,0xbc4440f3,0xba7201e0,0x3b94885b,0x3b494cc0,0x3bcf8c0d,0x3ba1540e,0xba9aef31,0x3c06d024,0x3c1e6e66,0x3be2af3c, +0x3bcf3736,0x3c0aecef,0x3c41de31,0x3c74e499,0x3c2d3f2c,0x3c0853a2,0x3c105d46,0x3c034174,0x3c13ed80,0x3baddc62,0x3b34fcd0,0x3b525e37,0x3ab4cd5f,0x3b00b507,0x3b9aff45,0x3b790190,0x3a89ffd8,0xbb519194,0xbae6f031,0x3b194eb4,0x3bdaa296,0x3c287058,0xba4e5920,0xba4f28a6,0xbae0607c, +0x3b97854e,0x3c98df71,0x3cd070c0,0x3cee33b6,0x3cf85265,0x3c8d6753,0x3c078bdb,0x3b9e9ac5,0x3bea737b,0x3c11af9d,0x3c1a70c7,0x3c270fcf,0x3c0c556c,0x3b5a2d36,0x3c09d888,0x3bbcf115,0x3bbe8bc9,0x3bdacf10,0x3b49f9e1,0x3bb15779,0x3be1f1dc,0x3b60de49,0x3ad6b55f,0x3b31c77f,0x3ad6f2f2, +0x39d7cc41,0xbadc3aef,0xba549706,0x3b255b5d,0xbbae8f66,0xbba20e3e,0x3ab2bf0d,0xbb0d865d,0xba134d07,0xbae2ee23,0x3c4eb43b,0x3cc88bff,0x3ceeaf7a,0x3cd2111b,0x3c7a30f8,0xbba6c4b9,0x3a113b3b,0x3b2b92d6,0x3ba7d083,0x3c14c787,0x3c1520a5,0x3ba3f05c,0x3c3758ce,0x3c4e0828,0x3c28556c, +0x3c30522e,0x3be27ed4,0x3ba2c916,0x3c09db11,0x3c009165,0x3bdbe9db,0x3bca9ac7,0x3b965f42,0x3b809398,0x3a7b6b8a,0x3ae5f3a5,0x3b57b2ec,0x3b3c7d63,0x3a97b4a6,0x3b6e6248,0xbb224379,0xbb8fc7a6,0xbb91396b,0xbb50cb88,0xbc652a80,0xb76df92d,0x3c5e3a2b,0x3c4d460d,0x3b98d990,0x3bb4a2db, +0x3b94812d,0x3b39665a,0x3c2842a9,0x3c500400,0x3c4a8f22,0x3c28c8e9,0x3c06b67c,0x3be514e4,0x3b4d4715,0x3afe7f34,0x3b54d2fa,0x3bca9033,0x3bc5f395,0x3b97a086,0x3bf6556e,0x3bae3d55,0x3b918a2c,0x3b472697,0x3b3c62ea,0x3b86be74,0x3b01dab1,0xbaaee3d9,0xbb47830b,0xbbc3f7c2,0xbbd2f018, +0xbbbeddd8,0xbc339102,0xbc4d8ab5,0xbc54bc7b,0xbc24d9c5,0xbbbe4c28,0xbbdc347f,0xbc5700eb,0xbc283f7a,0xbb9b87bd,0xb6a881a8,0x3b67d80a,0x3c11b01a,0xbb453636,0xbc07679f,0xbbecb6b2,0xbb8cc812,0xba8a0321,0x3a682b21,0x3b5a41b8,0x3b8f6426,0x3b9e1914,0x3b9b7728,0x3b45353d,0x37e55cd3, +0xb95a0dff,0x3ab4778f,0x3be31a3b,0x3bb063d4,0x3b96aa71,0x3baf2932,0x3bc3741f,0x3bc29c32,0x3aed3149,0x3b3321e5,0x3b7a40d2,0x3b91d074,0x3be36840,0x3bccb628,0x3a6815e7,0xba046ee3,0x3c2bd73a,0x3b85e75b,0xbb08afed,0xbb935993,0xbc2686d8,0xbc314342,0xbc4a6720,0xbc529db1,0xbc1cda6b, +0xbbd64d3f,0xbba3a01c,0xbbf1c798,0xbc19b49b,0xbc3cfb8a,0xbc278467,0xbc16702a,0xbc064b4b,0xbbb1775c,0xbb656b91,0x3a0fd032,0x3b0ab182,0x3ac24b8d,0x3ad45bbf,0x3b2eae0f,0x3ba14ad6,0x3bbabe6e,0x3c037016,0x3c05bd06,0x3c4ed4ab,0x3c240e8f,0x3c389058,0x3c2ed0ce,0x3c329c5b,0x3c52208c, +0x3c6a4553,0x3c2b6dfc,0x3b02200a,0x3a94ccc1,0xba616b0f,0xba97b881,0xbb11bbfc,0xbb482146,0xbb8c1300,0xbbc6ae03,0xbbfe54b9,0xbc233da7,0xbc36d1fc,0xbc443c6f,0xbc482a48,0xbc4d3ed6,0xbc3774bf,0xbc26c55c,0xbc196437,0xbc09c70d,0xbc0aa4a9,0xbbdee82f,0xbacead84,0xbb1803a6,0x39cd2494, +0x3988f915,0x3b0d1203,0x3b4704ae,0x3b2aa024,0x3b7d08a4,0x3b9d49fc,0x3b70317c,0x3b3512ce,0x3b753aac,0x3b3a47b2,0x3b11d5c1,0x3b2fd4d2,0x3a497dbd,0x3ad2c1ea,0xbb6c2374,0xbb6a9418,0xbb851312,0xbb961d7b,0xbbab2927,0xbbbb719a,0xbbc4f3db,0xbbd35e7f,0xbbdbe121,0xbbea002d,0xbbf695d7, +0xbc031b70,0xbc0f3241,0xbc058ea5,0xbbfe6d9b,0xbbf01f0c,0xbbdfdb76,0xbbca93f7,0xbbe82dce,0xb9dd100a,0x3a4d74ca,0xbb44b5ca,0x3a13e3f8,0x3b216532,0xbb1a44e6,0xbaf2b4c4,0xbadee3f7,0xbb0da0f7,0xba75b3be,0xba230ec9,0xb9bcfcd1,0x3b2d8bb9,0x3ac6f5eb,0xbb25ee63,0x3b09fcce,0xbbbe038b, +0xbb598b6c,0xbbd3933f,0xbb5f8c3a,0xbb0ce64a,0xbb4112cd,0xbb3aba1c,0xbb8cb540,0xbb9d4faf,0xbb9cf5cc,0xbb97e0b0,0xbb95aeb7,0xbb9708e5,0xbb94030f,0xbb9343ce,0xbb95b8dc,0xbb84d794,0xbb788133,0xbb75556c,0xbb691067,0xbb27634f,0xbb44acc8,0xbbc20a6f,0xbaa57967,0x3c49d05c,0xbbefb341, +0xbb2ce513,0x3c2b593c,0x3c253939,0x3c2225c3,0x3c1efe97,0x3c0f8db4,0x3c0a7a3d,0x3c00c5e3,0xbb3abd13,0xbc002eba,0x3c3f90ed,0xbad1840f,0x3b54b91e,0xbba71876,0xba9a17e0,0xbb43865b,0xbb4b2b26,0xbbee4617,0xbc0e8f82,0xbc0501b3,0xbbfbd12c,0xbbedbacc,0xbbfd7d48,0xbbf1d47a,0xbbec47c0, +0xbbf14f12,0xbbcbf45e,0xbbc305e0,0xbbc3c821,0xbba5df99,0xbb35b8cd,0xbb5e457f,0x3b9a3f61,0xb9c631a9,0xbb1856f8,0xba4dcc09,0xba3fbe46,0xbb6ac241,0xbad4edeb,0xbb3ff605,0xbb3b1d5e,0xbb2d28dc,0xbafa5cb1,0xbb004747,0xbb4681fa,0xba5675af,0xb88347b0,0xbb1dbb27,0xbb31f833,0xbb551827, +0x3a081e50,0xba9c5775,0xbac46936,0xbc1b7394,0xbc5bfc0d,0xbc4e6814,0xbc47ad50,0xbc3d886b,0xbc3be796,0xbc384455,0xbc38d2db,0xbc471bd9,0xbc1bc5e0,0xbc03d57a,0xbc043486,0xbbae2a22,0xbb47b451,0x3a72319a,0x3a89e2e4,0x3abd0ec6,0x3ae04202,0xba5b5481,0xb9b36017,0xbaf13d18,0x3b21e504, +0x3b2ee090,0x3a78454c,0x3b63b44b,0x3ae57a96,0x3902b6f6,0xba613a38,0xba8250a5,0x3b4694ec,0xbadce9e4,0x3b14e47c,0xbab9d60b,0x3b466c55,0xba293b35,0xbaf4789b,0xbc6dbc98,0xbca06e26,0xbc926e80,0xbc8aefd4,0xbc73288d,0xbc7f67b3,0xbc871dcf,0xbc914887,0xbc98181c,0xbc75db82,0xbc600cff, +0xbc585c3e,0xbc0844ae,0xbac3846a,0x3b922704,0x3c061fcd,0x3bd71a36,0x3bac2c88,0x3b2d58a0,0x3b4eb472,0x3a6db9f8,0x3b0cd8b7,0x3ba92621,0x3c073412,0x3bb9359d,0x3b7c0235,0x3b17ad4f,0xba95e428,0x3a1c88bc,0x3c27442b,0x3b853b7d,0xbc20c551,0xbc0a09a5,0xbb1210f6,0x3ac87c41,0x3c2ffe7e, +0xbbb3aa33,0xbc58dec9,0xbc80eb3a,0xbc6459fa,0xbc352331,0xbc3eeed0,0x3bbc569e,0x3c26a8eb,0x3b964749,0x3b0e9f25,0x3a78f601,0x3b0ca2bd,0xbb44e51c,0xbbdc849b,0xbbda2e80,0xba05ed96,0x3a86e527,0x3b54e112,0x3ba52bb6,0x3bcf4bb2,0x3ba3485f,0x3b1d62e3,0x3a0a19b4,0xbaf69f8f,0x3b638a1e, +0x3c218c1a,0x3c1af9a3,0x3bb5c6e4,0xbb17f0ba,0xbc5a554c,0xbc5f0fab,0x3b7c7432,0xbc5eded9,0xbc1c8613,0xbc4e551a,0xbc4f831d,0xbc821e5f,0xbc81a35b,0xbc810352,0xbb4f4d68,0x3a350f07,0xbba19879,0x3b8c9858,0x3b91bb89,0xbaa08403,0xbbc0bc8f,0xbc382210,0xbc8a59f3,0xbc014c29,0xbb1b198e, +0xba8e2169,0x3ba40197,0x3ba94397,0x3b833411,0x3b942ef0,0x3b11b002,0x3b35ee38,0x3abacffc,0x3b16c317,0x3ba72631,0x3b52021c,0xb93b8fad,0xbb856b42,0xbac08238,0x39ac4c9b,0xbae22b8d,0x3bddd714,0xbb1a2910,0xbbabffc4,0xbbe81471,0xbc5b0e43,0xbcf3c37c,0xbd036505,0xbcf40cf7,0xbca8da4e, +0xbbe4b952,0xbacf0c79,0xbba66af5,0xbc3b7f4a,0xbc9334a7,0xbca5b337,0xbc428e83,0xbb6f84cc,0x3aa5b6eb,0x3bc300e3,0x3bb8e4c2,0xbb3bf248,0xbb549828,0xbaa77599,0x38a54559,0x3b0e6805,0x3a766d2b,0x3ada26a4,0x3aed73a9,0x3a84bf9c,0x39672c76,0xbafe3184,0xba900636,0x3a64a038,0xbbfd9927, +0xbb55b344,0x39c14df3,0xbb1e549c,0xbab3b7b4,0xbbec9788,0xbc79e66f,0xbcc8a32b,0xbd1de1a5,0xbce91f42,0xbcb382e8,0xbc6f4da3,0xbc719776,0xbc71aab0,0xbc7e8cd9,0xbc11c532,0xbbb82b3b,0xbbaf1103,0xbb8e41fc,0xbba26e86,0xbb8b4713,0xbb2520e3,0x3a1215df,0x3a784096,0x3baecd09,0x3b96e7e4, +0x3b8c3830,0x3b98bef7,0x3b49a051,0x3b2b03f2,0x3aac4f74,0x39fe02ca,0x3b144c5d,0x3b118ad6,0x3a6095a3,0x3b3d44da,0xbb296448,0xbbb21fe1,0xbb6d7522,0xba3b889a,0xbc71dc6c,0xbcb83dca,0xbd044bc7,0xbd09c0e8,0xbd145820,0xbd14e510,0xbd095ba2,0xbcd67502,0xbc82df17,0xbc53a58b,0xbc9969ee, +0xbc5cc2f0,0xbc2fd22d,0xbc164b6b,0xbb8f2ad3,0xb9de1c7e,0x3b353a8d,0x3ba19502,0x3b614bbd,0xbacfe4de,0x3ab8e3ad,0x3ab29261,0x3b5fe906,0x3b1f079e,0x3b089870,0x3b3ee9de,0xb787d249,0xbb371dce,0xbbc96c20,0xbbfbb806,0xbc0f5df3,0xbc1fb60d,0xbc48a53d,0xbc721d5b,0xbc842264,0xbcc0089f, +0xbc4b4d4b,0xbcdcfe1c,0xbcf59733,0xbcbf8728,0xbc731e04,0xbbea492b,0xbb8ec7f5,0xbbfa132a,0xbc120f7b,0xbbff3b3b,0xbb304d30,0xbbc1cd26,0xbbf59a4d,0xbbfa3d56,0xbbdb4597,0xbb93ca18,0xba801f46,0x3ab5e777,0x3b393db9,0x3ae58bb6,0x3984fa45,0xb91b64c9,0x39b913c8,0x39ad39c4,0x3b1099e4, +0x3b87fd35,0x3b981827,0x3b6f71b6,0xb849ac79,0xbacc8837,0xbafc6411,0xbb282740,0x3ac906cb,0xbaf94144,0xbbf31d33,0xbc81e63f,0xbb87e208,0xbbeae488,0xbc21830e,0xbc566a61,0xbc8d0c2c,0xbc9aa887,0xbca27475,0xbca6f1c8,0xbc8f1e5b,0xbc81d0b8,0xbc627026,0xbc5098cf,0xbc30c6ce,0xbc1b07d4, +0xbc07a203,0xbbf0ebcf,0xbbcfe18e,0xbbc7d3bd,0xbbad39fc,0xbb9d2724,0xbb5ed8b8,0xbaad0c9d,0x38a87015,0x3a957100,0x3b47d6d8,0x3b72a1df,0x3bc3fad2,0x3bb8317e,0x3c045dd4,0x3bdd2704,0x3bd306fd,0x3b9aecd8,0x3b50cc26,0x3b3d4357,0x3b5d8f3a,0xba989557,0x3ace8e53,0xbba2e164,0xbbca9ef4, +0xbc080eb9,0xbc21689d,0xbc3efaa4,0xbc6163f9,0xbc88714c,0xbc7e74ef,0xbc702abe,0xbc63005e,0xbc5293eb,0xbc4b9349,0xbc4acbdf,0xbc3bc09a,0xbc2d0f4d,0xbc1b8833,0xbc0e2c4a,0xbbec79bd,0xbbf73f36,0xbbcd0ff7,0xbbde554c,0xbbf4ee5c,0xbb9f5cad,0xbb9ad0fa,0xbbb20596,0xbb9f2e26,0xbbb0042c, +0xbb81b214,0xbb7b0de5,0xbb187ac7,0xba72afd3,0xbac7226e,0xba90097e,0xbb15c149,0xbb70e6b6,0xbc260bcc,0xbc0ddb85,0xbc0e1301,0xbc20119d,0xbc2aa343,0xbc39efff,0xbc448a4c,0xbc550b97,0xbc48bc4f,0xbc456c9a,0xbc410822,0xbc3e9c53,0xbc397987,0xbc33f7e7,0xbc2d4ece,0xbc2857b4,0xbc22ab00, +0xbc1eb8a9,0xbc169d08,0xbc0dcdd0,0xbc361751,0xbc117f06,0xba49d527,0xbc37efad,0xbc0b6f35,0x3a3bcde9,0x39c24ead,0x39929095,0xb7b2afb4,0xb988b4d2,0xb9fea9f6,0xb9da402b,0xbbe59b7f,0xbc27c5f0,0x3a2a1b89,0xbbe052db,0xbc44e0eb,0x3c3a2c97,0x3c175382,0x3c4b069c,0x3c23b6ce,0x3c327565, +0x3c1e150d,0x3c3fc9ea,0x3c475977,0x3c42f38a,0x3c40feae,0x3c3c337d,0x3c356595,0x3c328620,0x3c320a47,0x3c342882,0x3c39ec62,0x3c3b79dd,0x3c38f883,0x3c39e718,0x3c28bbff,0x3c4c6f8f,0x3c159e40,0x3b09fdd7,0xbc35808a,0x3c3099d0,0x3b251e4c,0xbc291d8a,0xbc18da03,0xbc1317d9,0xbc087637, +0xbc06b585,0xbc0657f9,0xbc0421b9,0x3b3ead0a,0x3c400ced,0xbc21e293,0x3ad01d92,0xb9821c66,0x3c5bc19c,0x3c2cf798,0x3c3019f1,0x3c0b28fb,0x3c5b62bc,0x3c773fdf,0x3c72ef15,0x3c763f39,0x3c6cedc7,0x3c5828ff,0x3c48b5e0,0x3c48091a,0x3c50cef1,0x3c68302d,0x3c6f93aa,0x3c68baa4,0x3c62af56, +0x3c527a97,0x3c5ddc26,0x397831df,0x3c0b57f8,0x3c1704a8,0x3bb2b36e,0x3b90827b,0x3c01de1d,0x3c1cc84c,0x3c3c2d12,0x3c0b3aa6,0x3c32f0b2,0x3c1dd8d4,0x3bc22733,0x3be77226,0x3b8c6b34,0x3be64377,0x3c396d6a,0x3c0970e3,0x3c33e4b6,0x3c4b02d6,0x3c4aa48f,0x3bf091e4,0x3c87b4ab,0x3ca1fa39, +0x3c9b7184,0x3c9bf30a,0x3c8dbf24,0x3c80d72e,0x3c64f40b,0x3c5dcb5b,0x3c67f3f3,0x3c86073e,0x3c8d4b10,0x3c860e46,0x3c7af32d,0x3c759b4d,0x3c393c47,0x3c04d27e,0x3bfa83ce,0x3bf530af,0x3bc26222,0x3b5ca0fd,0x3b9da5c4,0x3ba758f3,0x3c14edc0,0x3bb89b3c,0x3be183d2,0x3b9fe6f3,0x3b90f6f6, +0x3b582bd7,0x3b8309b4,0x3bc9833a,0x3c06fcff,0x3c19cefb,0x3c399474,0x3c1fb8c5,0x3c02a169,0x3aa859eb,0x3c71acf1,0x3caf518d,0x3cb82378,0x3cbdbfc1,0x3cbc19b7,0x3c99c0f1,0x3c721b1f,0x3c6a0059,0x3c83e560,0x3cb0224c,0x3cb9af48,0x3cad30c3,0x3c9fb08e,0x3c8eafe1,0x3c7ad8f2,0x3c102cf0, +0x3c259928,0x3bd2c706,0x3bc5ed72,0x3b9a5bb4,0x3a815dce,0x3b813237,0x3ba93c24,0x3be8fb07,0x3bcdcbd9,0x3b8b15f0,0x3a9e6cc9,0x3a430914,0x3b885bb4,0x3c1eb772,0x3c50a417,0x3ac2ccad,0x3c87685e,0x3cd27f63,0x3cf25cb9,0x3d0692c5,0x3ce2d8c0,0x3cd05300,0x3cdcd364,0x3c8ca09c,0x3c494342, +0x3c1ca87b,0x3ca4e963,0x3c9f5cb4,0x3bd5f507,0x3c077c8a,0x3c181be7,0x3c4d69cd,0x3c4fa263,0x3c631e94,0x3c1fa120,0x3b422f57,0x3bddc839,0x3bee37cd,0x3bfa7f34,0x3c01525c,0x3bbe4862,0x3b35a716,0x3a8199a3,0xba8b8e1b,0x3bdafc38,0x3c482d26,0x3c2caff6,0x3be71245,0x39f3599b,0xbc0ce0e4, +0xbb7b3c25,0x3c74b4f7,0xbbe1b52a,0xbbc0577d,0xbba23620,0xbc1cd924,0xbb07af83,0xbb4e0a3e,0xbc5751f2,0x3baeb271,0x3c114029,0xbab73fff,0x3ba65e23,0x3bee201e,0x3c274709,0x3c4a79b0,0x3c81c415,0x3cab9253,0x3ca1d0a2,0x3c8ae7d3,0x3bd885d5,0x3b98b2f2,0x3bcd6781,0x3be65567,0x3c0b755c, +0x3bbe2854,0x3b74cdd7,0x3ae9e1a9,0x3b3f46b0,0x3bd7f5f9,0x3b8d3285,0x3a4de0c9,0xbb2419a5,0x3a8ad7ad,0x3bdc6bee,0x3b4ce675,0x3ca95aac,0xbb67d264,0xba098abe,0x3867e5af,0x3c01b0a3,0x3cef4ed8,0x3d065cd7,0x3d23fbbf,0x3d2f16cc,0x3d08877b,0x3cbd7fb2,0x3c830694,0x3cc87023,0x3cd21541, +0x3cba504d,0x3ca11d83,0x3c63baa5,0x3b99f261,0x3c0176bf,0x3c170c66,0x3bc02a96,0x3ba0a0b7,0x3b4f283b,0x3b110aee,0x3ba290cf,0x3b1c1d97,0x3b23830e,0x3b3e112e,0x3b0b551f,0x3abfe6e4,0xb9ef1f3c,0x3a8554e5,0x3b4ba347,0xbb770fb3,0x39a1bd16,0x3b24d3a7,0xbaf4ff70,0x3a781236,0xba8eb5c0, +0x3c7c1a21,0x3cde3b38,0x3d382b2d,0x3d16290d,0x3cc69304,0x3b87eecc,0x3a3afdb3,0xba56b2d7,0xbb0b5fe2,0x3ba6d238,0x3c054d75,0x3be5b681,0x3c3d54c5,0x3c6ee955,0x3c832cc9,0x3c71dbba,0x3c2d9573,0x3baec321,0x3b84359f,0x3bc5ebe9,0x3bbcda30,0x3bc5e136,0x3b90327d,0x3b616863,0x3ac23a50, +0x3abfb108,0x3b3b8f0e,0x3b17c5ef,0x3a8a6c3b,0x3b503887,0xba9b16b6,0x39a7dd61,0xbaef089d,0x3b343c09,0xbc7ecbf0,0x3be2ca11,0x3cd34c68,0x3cbd9de0,0x3c99a741,0x3c8620a7,0x3c7fd8f5,0x3c6c3450,0x3c5fb1ee,0x3c5222a7,0x3c5c1a9e,0x3c4909a0,0x3c3e34aa,0x3c262e3e,0x3be30bca,0x3bb476ad, +0x3bbd9ada,0x3bad3c2c,0x3bbad694,0x3b925d17,0x3bb1d7ff,0x3bdd58f8,0x3b7712d3,0x3b4b4cdb,0x3b4d62e3,0x3b9fee5c,0x39af5689,0xbb074ee0,0xbb6d7bd6,0xbb7ce37b,0xbb9ea259,0xbbce3322,0xbc101267,0xbc450186,0xbc9848e8,0xbc2558b3,0xbcc39c0c,0xbc4dbda5,0xbbe98bb6,0xbb94bcb5,0x3b2fc7f3, +0x3c15fd9d,0x3c385879,0x3c35f4f7,0x396ceb27,0xbb7e7121,0xbb0d4694,0xba0d5a92,0x3b13b2f6,0x3ba12814,0x3bd2b723,0x3c08265f,0x3bfecee3,0x3c180b05,0x3bee3efc,0x3a99fac5,0x3ac162f0,0x3b09c0e4,0x3b4558c3,0x3b73e35b,0x3b6f3728,0x3b9da02d,0x3bb378d8,0x3b79bb91,0xb99724ac,0xbaf5ca68, +0xbb20510f,0xbb2b136f,0x3a270140,0x3a54dff2,0xbbb4b936,0xbc0824a5,0x39e2ec3c,0xbaf1ea0c,0xbaff61f8,0xbb3d2c44,0xbb775b15,0xbb2c5975,0xba78309d,0x3b057da2,0x3b111119,0x3b100c18,0x3aa36d19,0xba51362b,0xbb31b7f3,0xbba1fcb7,0xbb675316,0xbb255a32,0xbac30b3f,0xba4d4877,0x3a3d6220, +0x3aaf1eba,0x39dd0138,0x39effcfa,0x3a8714b9,0x3b02ee5a,0x3b1ecf00,0x3b7b9603,0x3b81f389,0x3bcff11f,0x3bfbd883,0x3bcb6cdf,0x3b941773,0x3b6e7166,0x3b1a9bba,0x3b022fd0,0x3a74cbde,0x39f15a70,0xbba5866b,0x3a60c1e5,0xb8c6747a,0xb913ad70,0xb9e1c58d,0xba21cf43,0xbaaed058,0xbb0b123a, +0xbb87ee03,0xbbbf330e,0xbbed6a2e,0xbc0c6e22,0xbc20e234,0xbc3d2763,0xbc2894d7,0xbc1c0892,0xbc0ba74a,0xbbfa831d,0xbbee195c,0xbbadcbe5,0xbbd483e0,0xbb1c7f76,0xb9e7bced,0xba988a67,0x372fa665,0x3b3f1ff0,0x3b543807,0x3b6d4bd7,0x3b2462f8,0x3b77efc1,0x3b7b5a7d,0x3b4f96e2,0x3b3c6e2c, +0x3a26b46a,0x3a91aec7,0x3acbc756,0xbaef4ab6,0xba296b28,0xbb042575,0xbaf49121,0xbb0c0f13,0xbb1c5e47,0xbb255479,0xbb1c5062,0xbb422d4b,0xbb61860d,0xbb83b6e6,0xbb969498,0xbba668a1,0xbbbfe778,0xbbab44a4,0xbba0e83e,0xbb9768f0,0xbb864fb0,0xbb808bc8,0xbb4a31ae,0xbb45549a,0xbbcb6b07, +0xbc5a44c2,0xba517b5f,0xbba23a5b,0xbc55da8b,0xbc5089b3,0xbc466515,0xbc3c06de,0xbc34e32d,0xbc2ea583,0xbc22cfa0,0xbb90caf2,0x3853b21d,0xbc447fb4,0xbbba42e6,0xbb5b7145,0xbbaa6654,0x3a565656,0xbc0587c6,0xbb70f362,0xbb9769ba,0xbb8df033,0xbbb6b60d,0xbbc7cf5f,0xbbd09a99,0xbbd08a75, +0xbbcdb523,0xbbc1c803,0xbbc0ea8e,0xbbbde848,0xbbbc3818,0xbbbbe366,0xbbbb0a97,0xbbbbe1d9,0xbbb8aed3,0xbb90ef09,0xbbfb63c6,0x3aa78692,0x3c14b8d8,0x3c9f1397,0xbafe8c88,0x3bff90c1,0x3c919ce4,0x3c9750e3,0x3c96a578,0x3c88cadd,0x3c91bc54,0x3c90ca3a,0x3c87ed28,0x3bf24dd5,0xbb64cac6, +0x3c962c75,0x3c1cd33b,0x3c4fd9af,0xbbe2b17e,0xbb8aacd6,0xbb81edeb,0xbb8122d0,0xbbe014d0,0xbc06dd4f,0xbc0b5ac6,0xbc0f4f49,0xbc089c06,0xbbfa6ce7,0xbc009097,0xbc00e0a9,0xbc02f6de,0xbc02c204,0xbc00ec4d,0xbc03728a,0xbbde7ed0,0xbbcee9dc,0xbba3aef5,0x3c447309,0x392ccc82,0x3aabec85, +0x3aacd941,0x3b1856bb,0xbab88903,0xb9bdcfde,0xb9b82e62,0x3ad79e04,0xbabb289d,0xbb3032e1,0xba31a5bb,0xbaea8b6b,0x3b28649d,0x3b4ec980,0xbb524fa6,0x3b234306,0xbb8e4558,0xbb6f439f,0xbaf59aad,0xbb4718f0,0xbc01c796,0xbc32e22e,0xbc4a8f3b,0xbc5265d0,0xbc4a64f5,0xbc25e6e0,0xbc27c4a1, +0xbc21bbb7,0xbc2354d3,0xbc25b5df,0xbc1f757a,0xbc28bd77,0xbbf9429c,0xbc09d120,0xba466f9e,0x3b972d2c,0x3b3e12ac,0x3b6d0de7,0x383bb0ec,0x3b4d8fc0,0xbab180dd,0x3bcdfd7b,0x3ab24f9a,0x3b8b9053,0x3b16044f,0x3b907866,0x3a09db66,0x3a9a81cd,0x3a3ce464,0x3b8cd814,0xb9b6fc40,0x3bb64c10, +0xbb93ee38,0xbb3a8698,0xba69ff8a,0xbb16b1d3,0xbc14e752,0xbc559b98,0xbc6e40a0,0xbc7772a7,0xbc580e58,0xbc37b3ee,0xbc53c446,0xbc61f7eb,0xbc724c43,0xbc6ce0d3,0xbc6ac169,0xbc6f8fab,0xbc27d0ff,0xbc05b5a8,0x38328cf5,0x3c209b71,0x3b1ca395,0x3bffce5a,0x3a964ba8,0x3a758586,0xbae34923, +0x3b2d093b,0x3bce96dd,0x3b9f96a6,0x3bacca7c,0x3b08a8c5,0xb843e065,0xbab7bd0c,0x3a5d8815,0x3bc36555,0x3aefdde5,0x3a2f25bd,0xbbc9e42f,0xbbb88172,0xbb023186,0x3b041eef,0xbc066e5d,0xbc4d527c,0xbc6cbe99,0xbcacaff0,0xbcb14190,0xbca9b121,0xbc00b5cf,0xbab1545c,0xbabac987,0xbae217aa, +0xbb09ecbc,0xbbc731c3,0xbbdb2efe,0xbc3a2252,0xbbc2e1da,0x3b7f93c5,0xbafff375,0x3b617027,0x3b89f65f,0x3bd94fe0,0x3bdc7ef7,0x3adb53d7,0xb951b5fd,0xba510be2,0x3bd68747,0x3c3a26c4,0x3bfd1a2b,0x3b65f9b2,0xba562d69,0xbc11f1f7,0xbbd2db8a,0x3c406385,0xbcd3cf67,0xbc8f48b9,0xbc3dfcf1, +0xbc10d2d1,0xbc17bbff,0xbc3f50f5,0xbc92815e,0xba892204,0x3b4bd4b2,0xbbcbfffb,0x3b586041,0x3ba35af9,0x3b2db28c,0xbb6814b1,0xbc1367af,0xbc75bdeb,0xbbb583aa,0xbb5dad64,0x37de86ec,0x3bccdb0a,0x3ba139f8,0x3b96e339,0x3b9f92f8,0x3b2556df,0x3b3016d2,0x3ad01684,0x3b4a55dc,0x3bd3da5a, +0x3b37aec7,0xb7a14908,0xbb8c0720,0x3adabcb4,0x3ae400cd,0xbac975cd,0x3c475f80,0xbb276f7c,0xbbd24c7e,0xbb9a061c,0xbbfd6e08,0xbc92e33a,0xbccf8505,0xbcd4023c,0xbca90636,0xbc76d5dd,0xbc2e2425,0xbc39d3ac,0xbc80ebbc,0xbcabf537,0xbcb3c24e,0xbc91582b,0xbc10f1fe,0xba27b6f0,0x3b1dd3c5, +0xbab7fc48,0xbb8b76f4,0xbb1af8a8,0xbb5b42b4,0xb9e4d213,0x3a9b8e02,0x39c51137,0x3b12e1b5,0x3aca6b2e,0x39c336ec,0x3a54125f,0xba5cbdea,0x3a6cc0bd,0x3b3261d5,0xba65c231,0x3ad294d6,0x3b951f75,0xbb43fb9c,0x3b5a8ec2,0x3a095668,0xbc296d22,0xbc87328e,0xbcdab675,0xbcad7e0a,0xbc89a670, +0xbc526d8b,0xbc1bec4f,0xbc09d267,0xbc41ca10,0xbba5647c,0xbaeee3e3,0xbad4e23c,0xbb858e19,0xbbc3b5a6,0xbbd0d99e,0xbba2dadd,0xbb59f5e6,0xb8153888,0x3bc7c215,0x3b3c510d,0x3b1549d6,0x3b8d1f74,0x3b40c7db,0x3b006dc4,0x3a539c6f,0x3a1773e5,0x3ae13e8f,0x3a6d60bf,0xba0a69f9,0xbabf046d, +0xbab25053,0xbb38d3a8,0xba2ad76a,0x3b0a6a53,0xbaef837f,0xbc1634d8,0xbcc003cb,0xbcb8718b,0xbcd379ae,0xbcd640ad,0xbcca5bb9,0xbca4cfa3,0xbc809f3d,0xbc69754a,0xbc7e1e1b,0xbc1876c3,0xbbc5de60,0xbbb15863,0x391bb4c6,0x3b74a8e4,0x3b9135b9,0x3b96486b,0x3ac9eedc,0xbaded10d,0x3b8e0e73, +0x3acd9e1d,0x3adcb493,0x3b0ea7c5,0x3ad809e9,0x3b4006f5,0xba471714,0xbb8057a7,0xbb848963,0xbbab00d3,0xbba52ec6,0xbbde63af,0xbc0d27d8,0xbc40904b,0xbc76d910,0xbc81a29e,0xbc11820e,0xbcaec090,0xbcd01a9b,0xbc9d3e99,0xbc8200f5,0xbc4177af,0xbc5c3d54,0xbca7a700,0xbc410e0f,0xbbc3c8d9, +0xbb02bd9e,0xbbac7017,0xbbc7e6f9,0xbb9c8135,0xbb8aa743,0xbb4929a7,0xbb017341,0xb9510835,0x3abbbedf,0x3b3cab17,0x3b298643,0x3ac53839,0x3ad7fd6c,0x39bcc0d6,0x3a8069a2,0x3b410f66,0x3b023b68,0x3a52497b,0xbb7c54fd,0xbbc0f309,0xbbe23f50,0xbbfa4a45,0xbb6ce491,0xbbab95ae,0xbbecad16, +0xbc7c8fbc,0xbbe96652,0xbc4d4b43,0xbc710dd8,0xbc5fdced,0xbc6e3ba0,0xbc5ac694,0xbc3c2a13,0xbc27c9e1,0xbc1e11dc,0xbc2aee91,0xbc1ee654,0xbc07de33,0xbbd66ae2,0xbba313b5,0xbb83aac1,0xbb3ea241,0xbb116ee2,0xbb5aff9a,0xbbba74ff,0xbbb1294d,0xbadd09e3,0xbaa9dd15,0xba3af24c,0x38f8d21f, +0x3b159cc7,0x3b0dd86a,0x3b953bef,0x3b0f5190,0x3bdb0791,0x3b2b8629,0x3b3eb630,0xba3182f2,0xbae3be61,0xbb06430b,0xba986b65,0xbbc38120,0x3b78e8e2,0xbbb95886,0xbbef4258,0xbc182b5a,0xbc3b07f6,0xbc5eb290,0xbc841a48,0xbc9604ef,0xbc8a679d,0xbc775d72,0xbc639db5,0xbc4d2b35,0xbc3ca597, +0xbc2e547a,0xbc267b6d,0xbc1e6d86,0xbc1116f0,0xbc04011e,0xbbd7eef5,0xbbe56c9c,0xbb834def,0xbbc6a706,0xbbb6f5c6,0xbb5a0ebd,0xbb1e05d6,0xbb5948c0,0xbb780777,0xbb6ba3b7,0xbac032d0,0xbb582f07,0xbb3ba45b,0xba017f42,0xbacd5700,0xb968db0b,0xba9c7472,0xbb8c1009,0xbbdc61b7,0xbc2918ba, +0xbc1ab75f,0xbc2c9160,0xbc352db3,0xbc3f6098,0xbc47804f,0xbc5aa355,0xbc4c2dee,0xbc4848ba,0xbc41c889,0xbc3ccdec,0xbc3657a0,0xbc2d5cf0,0xbc29d22f,0xbc257bba,0xbc220cb5,0xbc1fb000,0xbc17b757,0xbc1db921,0xbbf83598,0xbb591f58,0x3b2e7d96,0xbc03cf60,0xbb2b8b2f,0x3b94d3ec,0x3b93c12b, +0x3b8b1496,0x3b56a6b3,0x3b7fd9c0,0x3b6fb66b,0x3b5bd94e,0xbb02865d,0xbbff62f4,0x3b55c4d9,0xbae413e8,0xbc482940,0x3c0c1692,0xb9b472de,0x3c37825f,0x3bf746e5,0x3c03b7c2,0x3bdd704c,0x3c0104eb,0x3c07aa7b,0x3c0fba9f,0x3c0b2a63,0x3c0aa47e,0x3c0ed580,0x3c08042f,0x3c0726d7,0x3c0861b4, +0x3c0dbc6b,0x3c0ea08e,0x3c0d053c,0x3c0a3512,0x3bf6ef10,0x3c306055,0xb9dd9a33,0xbbde6d5e,0xbc36db09,0x3b10adde,0xbbd3e964,0xbc3704e4,0xbc33cee5,0xbc31c905,0xbc1ec240,0xbc36fe03,0xbc3beb24,0xbc398234,0xbbc8bd0b,0x3b69d3dd,0xbc345734,0xbc01ad01,0xbc061638,0x3c09b96c,0x3c08f4a3, +0x3be1ab13,0x3b9a1ce8,0x3bdb1c53,0x3c004ade,0x3c1f1e37,0x3c1f51ab,0x3c272856,0x3c2fbcd9,0x3c1d4a57,0x3c1df178,0x3c22157b,0x3c33660e,0x3c325eb9,0x3c2ba363,0x3c147f78,0x3c1baa34,0x3bff03a8,0xbbc204d4,0x3b989010,0x3b5dbd17,0x3ae9d9d3,0x39f11437,0x3b5d479c,0x3bca8ba5,0x3bd09492, +0x3afe0e62,0x3bc49d41,0x3bda8689,0x3b0cf8a1,0x3b68ef2c,0xb82f4112,0x3a046b08,0x3bd4ed6f,0xb9d65390,0x3be1a09b,0x3c3aaa3a,0x3bf5e8b9,0x3b57af23,0x3bd4e90f,0x3c0b3839,0x3c4a1a65,0x3c38b422,0x3c3a3708,0x3c581187,0x3c29d660,0x3c28438e,0x3c260f54,0x3c4aa411,0x3c4cc2c7,0x3c43ec60, +0x3c20859d,0x3c36c77f,0x3ba08bb8,0x3a21478f,0x3b4005da,0x3b949977,0x3b3d1008,0xb9c5738f,0x3b4574ef,0x3b4bd4a2,0x3c1cc32f,0x3ab9547c,0x3bd0b3ed,0x3abbff79,0x3aee0aa0,0x3a42a028,0x3a300b24,0xb7fb0085,0x3b0f799f,0xb95e61d8,0x3bd053eb,0x3c0850e3,0x3b4f7554,0xbb3d531f,0x3a0cb6ff, +0x3b851eab,0x3c431352,0x3c453303,0x3c77f76d,0x3c8df8b3,0x3c46e2c7,0x3c392774,0x3c3d4c10,0x3c7cbfe0,0x3c7d2b8c,0x3c6560fb,0x3c2cadb1,0x3c3c422d,0x3be5a536,0x3af296fb,0x3c12053c,0x3ba2e37b,0x3ba70ca8,0x3b816d6a,0x3a87b393,0x3bab6c29,0x3bcb7710,0x3bd83bbc,0x3ba9df3d,0x3b85feea, +0x3a387a6c,0x3abb8922,0x3adedeb0,0x3bb0af85,0x3bcf7e08,0xbc1b13cf,0x3c2e39e5,0x3cc3c3ce,0x3cb84091,0x3cbb650a,0x3ca193de,0x3c9426f1,0x3c9f3f0a,0x3c39dfba,0x3c06092b,0x3c008021,0x3c893ec5,0x3c9d2390,0x3c5a73f9,0x3c2d9ee1,0x3c257b71,0x3c882a3b,0x3c5144b8,0x3c598730,0x3b2f8f86, +0xbb92af15,0x3ba38605,0x3b9ced06,0x3bbbb646,0x3bc0411b,0x3be52f97,0x3b15ef5a,0x39c02c35,0x3a56efce,0x3c09500c,0x3c446e0e,0x3bba4c9b,0x3b672198,0xbb83a5d1,0xbc4bb876,0xbc5132a4,0x3c21551e,0xbc7d241e,0xb9108281,0xbb0c81e5,0xbbcf0651,0xbbe31382,0xbc28fe47,0xbc8cdb0e,0x3b70f583, +0x3c1eb2b2,0xbab9303f,0x3b3666ec,0x3b885106,0x3be1b0b9,0x3c21db2e,0x3c45d1e2,0x3c71338f,0x3c440177,0x3c52e78d,0x3b59496a,0x3acf46f5,0x3b7c220c,0x3b5bd38c,0x3c18888f,0x3be6fc7a,0x3b756706,0x3b337e0f,0x3b8626ab,0x3bec7800,0x3b81fe80,0x3a3803cb,0xba92b023,0x3b054e18,0x3bef2349, +0xb94f289d,0x3cb54c7a,0xbbebb01e,0xbb837459,0x3ac6495a,0x3bbef489,0x3c8928ef,0x3c5d6234,0x3c9aba2e,0x3cc1eb45,0x3cda3b5c,0x3cc17bf1,0x3c74f19e,0x3cb48151,0x3ca316d9,0x3c64c0c4,0x3c40324d,0x3c07a2c6,0x3b8e4f46,0x3b950a8d,0x3bf46c0b,0x3ad0d6c2,0xb97bb481,0x39f7fed6,0xbb124b4a, +0x3a965bd3,0x3a3a5463,0x3b2ad136,0x3b366675,0x3b0a98ea,0x3b02ff09,0x3a3d685a,0x3b09ccb5,0x3b1e48a3,0xb9a0a2d9,0x3b67db46,0xb9ed229f,0xbb8ca32c,0x3b3cb88e,0x3b1f5ac7,0x3be247af,0x3c152708,0x3cc5891f,0x3c887142,0x3c20e06b,0x3b7a1f28,0xbb954083,0xbbf954ed,0xbc40c681,0xbb4df44b, +0x3ad1b9f8,0x3b34c99c,0x3bb1cd2d,0x3c074532,0x3c3143bb,0x3c1f7f1a,0x3c0baba5,0x3b562df3,0xb9aa0868,0x3b299403,0x3b361978,0x3b926d41,0x3b6133c0,0x3b0f7042,0x3add1ca5,0x3a4c06bd,0x3af56bd1,0x3a7cd8a4,0x39238ef5,0x3a0f915d,0xba3bd707,0x3aead7c8,0xb98c693e,0x3ba508d9,0xbc8e9ea1, +0xbbc24392,0x3c0f0f43,0x3c0001dc,0x3c032a87,0x3ba0a1d2,0x3bc89cf3,0x3c0ced6d,0x3b580dd8,0x3aaaed10,0x3a5d1a11,0x3adcf845,0x3b361b37,0x3b5c7460,0x3b8b8584,0x3b9e8694,0x3be495cd,0x3b39804e,0x3b51c2f2,0x3b536827,0x3ae588a7,0x3b954e8f,0x3aaf3f48,0x3b1208f5,0x3b2209e7,0x3b6dcfe4, +0xba65989c,0xbb12921a,0xbb61b6f9,0xbb21de7f,0xbb8d53ce,0xbbf63580,0xbc254b9c,0xbc676874,0xbcab91a2,0xbc6d59e6,0xbcd1cb8e,0xbc838163,0xbbe97c31,0xbbd666f2,0xba965b7f,0x3aa3247b,0x3ab31b8e,0xb9815f5d,0xb84a9e1b,0x39f87a1b,0x391eee0e,0x39a7edaf,0x3a3bd08d,0x3ade94e4,0x3b615b2d, +0x3ba7e573,0x3bf4ef3a,0x3bf7cefb,0x3bdb4d4f,0x3b1bfc82,0x3b39d2c9,0x3b3960e4,0xb9c8a610,0x3ab7da19,0x3afd1870,0x3b52fa78,0x3ae92056,0xb9c360b9,0xbafcbd57,0xbba5cd1c,0xbbd45836,0xbbdbb1b0,0xbb966baf,0xbb8cb4b9,0xbbe92e90,0xbc47f82c,0xbc205b9e,0xbc198126,0xbbc05f2b,0xbbb841ba, +0xbb588828,0xba99a919,0x3b1a3721,0x3bc53692,0x3b87ea19,0x3b1d6036,0x3a68904f,0x3a895073,0x3a8a3622,0x3a190d8a,0x3b0324d7,0x3b42038d,0x3b8d213d,0x3b23ba48,0x3b3a6874,0xba2f427f,0xbb5ecd9b,0xbaf060f7,0xba235ece,0x3a6da88b,0x3a5a9d52,0x3b50d913,0x3ade0bde,0x3b83ccab,0x3b17bdf2, +0x3b08d385,0xba805c15,0xbb0819fa,0xbb91b192,0xbbe24d0b,0xbc1db68d,0xbc147e87,0xbbf1b62c,0xbb00e09f,0xbb041652,0xbb253b7a,0xbb3558c8,0xbb438e12,0xbb70da2e,0xbb8144ea,0xbb878dae,0xbb789180,0xbb7eed35,0xbb8c9b92,0xbba43ae4,0xbbcc6f80,0xbbb601f3,0xbba6f85c,0xbb89b78c,0xbb6f0f37, +0xbb35e30d,0xbab5df45,0xbbc6562d,0xba8a302e,0xba953a9b,0xbad7d286,0xbaec3f80,0x3a636d85,0x3ac27eef,0x3a43e3ec,0xba951a3f,0x3aa3b5f1,0x3b0a24f3,0x3a8f1e48,0x3a56cf38,0xbaa8df53,0xbaa803ad,0x3617dce8,0xbbc9982f,0xb95c3abd,0xbaf2972d,0xbad30556,0xbad7c620,0xbae10159,0xbadb01d4, +0xbadd794e,0xbadedd22,0xbafbeba0,0xbb0a1087,0xbb15f794,0xbb17efe4,0xbb215f5b,0xbb0d99cb,0xbb0861a7,0xbb07b62c,0xbae5ab46,0xbb0108e4,0xb980fa58,0xbbbb8876,0xbc25cacc,0xbc690ee8,0xbb6f07d2,0xbc1eafce,0xbc688633,0xbc682853,0xbc5cd287,0xbc4adf6c,0xbc524992,0xbc4f6634,0xbc459116, +0xbc178434,0xbb6cb6c8,0xbc537b99,0xbc2aee39,0xbaef1dff,0xb9cd984d,0x3c0be48d,0xbb6bd79a,0x3905d046,0xb97403ac,0xb9cdc5ac,0xb949a84f,0xb997d84b,0xba1f860a,0xba42daae,0xba4eb575,0xba05eeac,0xba340dbe,0xba197821,0xb9b777da,0xba0be633,0xba221c36,0xba2edf56,0xba441c19,0xb9a2662c, +0xbb53d704,0x3c0e38ba,0x3c510b54,0x3c432bfa,0x3bcb11cc,0x3c4ac706,0x3c3ca6ef,0x3c54dd3e,0x3c57604d,0x3c3a14d1,0x3c59ef08,0x3c5ae3f9,0x3c4dfc66,0x3c470ae6,0x3ba5d86f,0x3c3bd5ea,0x3c5cc9e3,0x3c503b90,0xba6d015e,0xba96fdaf,0x39e2699c,0xb9d3f274,0x3a0963ca,0x3a0a5baa,0x339c28ca, +0xb9f06ff2,0xba0e577e,0x390d6826,0xba819c3a,0xbaa52a03,0xba687022,0xba94bab6,0xba640819,0xba784fec,0xb9d06edc,0xbae2c2a7,0x3a1c2bf3,0x3c3b7f96,0x3b572a01,0x3bca7907,0x3b859073,0x3ba4936f,0x3b6ec37f,0x3b878813,0x3bb7fae1,0x3be56344,0x3b735276,0x3aaa9fa9,0x3b377ed7,0x3b21cd1e, +0x3bb1146e,0x3bd4d9da,0x3aa452e9,0x3bf8f7c1,0x39e346ca,0xbaab1baf,0x3addacd9,0xbaaa7321,0x3ac6e6a1,0x3aed9177,0xb937dd2c,0xba6d0cee,0xbabc0f5b,0x39f61e40,0xba97253b,0xba3f14a9,0x39efa8d6,0xba070090,0xba226265,0xba9e1a48,0xba3fcb7e,0xbb5e1932,0x3b067f2a,0x3bf3900a,0x3ba8b91f, +0x3bb7429b,0x3b362dac,0x3bb8d77b,0x3af75e08,0x3c0a07c9,0x3b664a21,0x3be7759c,0x3b43d07d,0x3bc759a3,0x3b2ae914,0x3b6f81e8,0x3b5bcd8b,0x3bbab5c1,0x3b67cd7f,0x3bd99949,0xbae31bf3,0xbb514480,0x3a792909,0xbb317167,0x3afcd2a2,0x3b5de2aa,0x3af2bf6b,0x3a89b6d0,0x3ab513a8,0x3b4e53ba, +0xba567d06,0xbb00a491,0xbaada368,0xbab2a123,0xba6696c4,0xbabd5e1a,0xba636481,0xbb82ba91,0x3a934ecf,0x3c09b9e2,0x3aec857d,0x3c14d823,0x3b134464,0x3a431306,0xbaee1bbb,0x3b833fdd,0x3be04736,0x3b29af0e,0x3b96c643,0x3acbf610,0xba279e0d,0xb7ad4384,0x3b29686c,0x3b86bda2,0x3b452726, +0x3c1ee111,0x3bcabd2d,0x3b3342d4,0x3b9c14ea,0x3bc07bc4,0x3ba22de8,0x3b8b8665,0x3b1ce074,0xbc1d038a,0xbc75345b,0xbc8646d7,0xbc217ccc,0xbb56c056,0x3aac3cd5,0x3a78126b,0x39fe62d6,0xbb8dad49,0xbac1d722,0xbb5f81c2,0x3b0b7980,0x3bd92846,0xba14669a,0x3b904e82,0x3b83cb47,0x3bcfa66f, +0x3bfb6e82,0x3ad83cf0,0xb84c63e9,0x3ac7a5d8,0x3c1a6676,0x3c4175ca,0x3bb79300,0x3b61d0fc,0x3a601d28,0xbbdf012c,0x3a061bb9,0x3c70b177,0xbcd336de,0xbc82adbc,0xbbb8711e,0xbb9a8e88,0xbaf6fb39,0xbb167837,0xbbe66dfb,0x3ba934b8,0x3bf1dba6,0xbb450dd6,0x3b86a805,0x3bc4fe73,0x3bd67d8c, +0x3b7404de,0x3b21c80f,0x3b184f86,0x3bb0ab1b,0x3b2c62b6,0x3b85f594,0x3bce776c,0x3b94731f,0x3b9e9c14,0x3bc88c85,0x3b8ec5ae,0x3b4bbc10,0x3b395347,0x3b909dca,0x3be68450,0x3b226d5a,0x3a43f42b,0xbab3d405,0x3b7e3317,0x3b976d31,0x3a441484,0x3c83b68d,0xbb89e620,0xbbbdb5e8,0x3b148b4c, +0x3bb0a842,0x3c1b0664,0x3b542ad7,0x3adca286,0x3a3e3817,0xbb0dc00e,0xbb1148a2,0xbb911826,0xbb2cbf4f,0xbba77e6a,0xbc024965,0xbc00aef5,0xbb8e3247,0x3a9247e8,0x3a810453,0xbb63cc0b,0xbae35147,0x3a0f6f9c,0xbb2b16bf,0xba49122b,0x3a289fc8,0x3a2319df,0x3b332fda,0x3b004846,0x3a60ecd5, +0x3ad54cd0,0x3a914fbc,0x3b2409af,0x3b2e4d34,0x3b807c9e,0x3b80725d,0x3b780b1c,0xbb8f5f31,0x3be16987,0x3bfb2991,0x3b949396,0x3be7f1fb,0x3bfe9788,0x3ba64f28,0x3ad4fec9,0xbba016a5,0xba11d5b4,0x3981aaf9,0xbb74c9cb,0x3a58f357,0x3b48abc9,0x3b3e9932,0x3aa0934e,0x3aaa9fce,0x3ae1aeaf, +0x3aa5d432,0xb93ef191,0x3ac75c17,0x3b958587,0x3b03bb7d,0x3abbaa8b,0x3b791ed2,0x3b4372a7,0x3ae7bafe,0x3a68ff36,0x3aa471e0,0x3abdfe16,0x396506ea,0xba7d3a83,0xbb59e1d4,0xba199480,0xb90bcea2,0x3a20cfad,0x3b659935,0xb990f976,0x3aa6114c,0xba1473a7,0x3ad3b651,0xbb1886f3,0xbaf22ea9, +0xbb15ddf0,0xbb099ec1,0xbba5b316,0xbb9f9f52,0xb9a8bc28,0x39e2cd17,0x3a83e3e3,0x3b02eb2e,0x3b73f626,0x3b8dba90,0x3b832210,0x3b12a45e,0x39a188f1,0x3ab28c66,0x3bb472cd,0x3b0e1382,0x3975bd73,0x3af3ded7,0x3ac1549a,0x3b126517,0xba288a73,0xbb4b97ce,0xba8f4f05,0xbb0a3678,0xbb18def0, +0xbb9afc5a,0xbc098cd9,0xbc427a3a,0xbc7a38c3,0xbc05880c,0xbbd0709f,0xbc109b39,0xbc3ea82b,0xbc1e5614,0xbc29a403,0xbc5a20c3,0xbc80c8d6,0xbc800199,0xbc0d2341,0xbb9c2881,0xbb987c97,0xbb67ed5a,0xbae737d4,0xb7dccd92,0x3afeab52,0x3b12f5c6,0x3b41638e,0x3ab6b78b,0x3aac2546,0x3b4e49b6, +0x3b740fd8,0x3b5b252c,0x3b69d143,0x3b09cc7d,0x3a82752d,0x3b0b123d,0xba83a313,0xbb205435,0xbbb7d1e1,0xbbeba7c5,0xbc039979,0xbc06dccb,0xbbb83903,0xbb8e7bbc,0xbb41db70,0xbbfe7aff,0xbc0384f0,0xbc5d03be,0xbc67a157,0xbc309594,0xbc130a00,0xbbb135ee,0xbb05977c,0x399aa092,0xb9dbe19a, +0xbaa32a8d,0xbab82ce4,0xba630577,0xba1ccb00,0xb8712923,0x3a728e61,0x3b069f0f,0x3b4e5a2e,0x3aeb32bb,0xba289523,0xba4b5fc6,0x3a8cd2b6,0x3861acb0,0xba03a02d,0x39cb3a7b,0x3b0a3978,0x3b259c59,0x3b61efc1,0x3a8c0947,0x3b921f19,0x391f4b87,0x39af837f,0xbb36a8b9,0xbb843aba,0xbba778f2, +0xbbb27b96,0xbc0c266a,0x3aab2773,0xbb87c4a5,0xbbad4c44,0xbbc235c2,0xbbf1aa1f,0xbc0cc04c,0xbc24ebde,0xbc2db0c7,0xbc2349f2,0xbc138fab,0xbc0839ff,0xbbf8b2ba,0xbbdb3a63,0xbbbad6e2,0xbbbaac03,0xbbb9b20c,0xbbb3ddac,0xbba70bed,0xbb9a1f30,0xbb91283b,0xba5db3fe,0xbb098492,0xb9aaa5b6, +0x398ac8e7,0x3ae43640,0x3b082dea,0x3a3f8e11,0x3a934307,0x3b0486ef,0xb92f5db9,0xba8adb5f,0x39c08cdc,0xba473112,0xb795f5cf,0xb8f3839e,0xbb3aa999,0xba3fa0c1,0xbbbdf63f,0xbba2aecb,0xbbb09ade,0xbbb46f72,0xbbb7b0ce,0xbbbb425f,0xbbcd52f5,0xbbc2260f,0xbbbec8d8,0xbbb8ede1,0xbbb27be8, +0xbbad8a77,0xbba3fea7,0xbba4aac3,0xbba254a3,0xbba31549,0xbba0a493,0xbb9920c1,0xbbb7ea74,0xba727b7d,0x3ade203f,0x3a8060e1,0xba0bad7b,0x3b3c97b8,0x3b191324,0x3b26c829,0x3b1e44f4,0x3acd0768,0x3b229db9,0x3b193052,0x3afb43ca,0x3b02d23e,0xbaab6129,0x39d36015,0x3ae54b84,0xbba42bbc, +0x3a817055,0xbbd44b64,0x3b33c2c0,0x3a91cbfa,0x3a44b5d6,0x38da88ed,0xb99b1dac,0xb99240fb,0x39e81828,0x39825f5d,0x39e96054,0x3a9942d6,0x3a0ea852,0x39ff6c18,0x3a0ed02d,0x3a5ce174,0x3a763f45,0x3a82ddf7,0x3a4c2a6a,0x3a5106ab,0x3b165ccb,0xbbd0dc95,0xbbe1b584,0x394883ce,0xbbb0c48a, +0xbbe82ce4,0xba3174d8,0xba71c1cb,0xba87b8b6,0xba1e6233,0xbb10a5d1,0xbb2c0e4a,0xbb394dc2,0xbbe5fd07,0xbb9a2197,0xba152237,0xbbfb2105,0xbbc634ec,0xba67e9cd,0x3ad95c54,0xb9b94c4f,0xbad6ebd7,0xbb68c1d8,0xbb716704,0xba97d1be,0xba9adb70,0xb952c86a,0x3ac355dd,0xb841f999,0xb975dec5, +0xb88f2283,0x3a10d131,0x3a0bde09,0x3a047601,0xba00c3cd,0x3a7a7404,0xba9657b5,0xbb6d1c08,0xb8f7d780,0xbb074e6a,0xba8e2464,0xbac75a36,0xbabac713,0x3a9b7975,0x37bd2c76,0xbb3306b4,0xb9f04c4c,0x3a6994e8,0xbab01aec,0xba547020,0xbaf6887d,0xbb3d747b,0xba452bab,0xbbaa780c,0xb867fa50, +0x3b8558b0,0xba0c76a2,0xbb3afaa7,0xbbd36412,0xbbeec134,0xbb12df3f,0xbb5ca650,0xbb029189,0x3b01a6b5,0xbae01f02,0xbadfb775,0xbaf79e6b,0xb876e9ef,0x38dda706,0x39a92cb2,0xba3eefcc,0x3a877574,0xbac62b23,0xbb549a2f,0xba385d0d,0x3a7ca9fa,0xb9e97a72,0xbaacf00b,0x3a47695f,0x3b428504, +0x3bdb1036,0xb8c541b0,0x3b8ed5bb,0x3992e9ee,0xb8574205,0xb98c7d46,0xba80735c,0xbb0e3ecc,0xbb2938d1,0xbbb104ad,0xba5ed535,0x3b47c752,0xbb0b35d0,0xbbcf3260,0xbc610434,0xbc750890,0xbbc0362a,0xbbbe9041,0xbaedaafb,0x3b93fb7d,0xbaf0293a,0xbb84c664,0xbb97ddd0,0xbb2d5dcb,0xbb043524, +0xbb0bd22c,0xbb6a4e20,0xb98b2f5d,0xbae5a3db,0xba8f0321,0x3b9b8add,0x3b8e9f30,0x3b4856d7,0x3b1e05a7,0x3a8d6437,0x3bb3c4cc,0x3be5e740,0x3ba55d4c,0x3b800a80,0x3b5a0618,0x3a5cd442,0x3abf9c89,0x3909a867,0x3b314f97,0xb982e535,0xbc176a94,0x3aefa4e8,0x3c014633,0x3b9035b4,0x3bd63cba, +0x3ba362c9,0x3b44777b,0xb8a6d459,0xbb76d5f5,0xbba8f3ce,0xbb8e0b07,0x3b0101ad,0x3c0b338d,0x3c7ab850,0x3c12c7a8,0x3bddab9a,0x3c2d6605,0x3bb45d2f,0x3b8db35d,0xbb59449f,0xbba4e8d0,0x3acdd8ab,0x3af64830,0x3b41248c,0x3b7dfce8,0x3bf0df75,0x3af3c5c6,0x397f8e20,0x3b55c5fe,0x3c198ded, +0x3c2d32ca,0x3afdbf47,0x3ad6e815,0xbb941ced,0xbc4ef099,0xbc4b8c6e,0x3a47711e,0xbcb98f5b,0x3aae005d,0xb857425b,0xbb95e958,0xbc3148ab,0xbc54d424,0xbc551990,0x3b07af42,0x3bf535d4,0xba3a4d14,0x3ace5276,0x3b0635e4,0x3b312f03,0x3b4fbd9b,0x3acf902b,0xb9818da7,0xba825739,0x3b168ad7, +0xb602b3c8,0x3a7874fc,0x3af9e98b,0x3a42daff,0x3bee7313,0x3bcb0ce8,0x3b5c0cd9,0x3b7e415b,0x3baa8ec0,0x3bdfbad7,0x3b11513a,0x3a0b3897,0x3aa56e91,0x3b47f5ce,0x3b9cb625,0xbb3c41d7,0x3c5287ac,0xbbd77159,0xbbca13c0,0x3b35c82b,0x3aae91ee,0xbbbc95f4,0xbc5c505c,0xbc5cc26d,0xbc1fb8a4, +0x3b9155ce,0x3c27e34d,0x3ba5a447,0x3b9b0c45,0xba1d28d2,0xbbbdf772,0xbbb1f4a7,0xbb1a5a04,0x3b86ff29,0x3a999e2d,0x3b023640,0xbb71a55d,0xbb99f4c2,0xbb2f6940,0xbb935739,0xbb1c1bd9,0xb9d3d10b,0x3b3eda50,0x3b135f29,0x3ad94830,0x3af90506,0x3ad2dfa0,0x3b0af74d,0x3940a39a,0x3ae098a5, +0x3b9c79db,0xba9e3f48,0xbb89b587,0x3b878584,0x3b7ffb13,0xbb72513b,0xbc327d87,0xbc4eb889,0xbc3ed660,0xbc124314,0xbaf0cfd7,0xbbf678e8,0xbc22c39c,0xbc65b0aa,0xbc178b01,0xbbb8196c,0xbb222336,0xbb7b08b2,0xbb2d84fc,0x3ababee9,0x3a937f61,0x3b572db0,0x3aab8178,0xba92d714,0xb8e9fa1b, +0x3a04a83a,0x3b1a73ae,0x3b0139f2,0x3a997c08,0x3af2d326,0x3a412d37,0x3a79719b,0x39c278bd,0xb8d303f9,0xbac13807,0xba75df20,0xb85db589,0xba49f474,0x3b8268cf,0xbc68e617,0xbc8baf82,0xbc8d2651,0xbc83588e,0xbc4a3509,0xbc5ea9ab,0xbc41eee2,0xbbfe8f63,0xbc4c8740,0xbc50e9ba,0xbc473454, +0xbc20bd30,0xbbf185cb,0xbbb11572,0xb98e63d2,0x3b08570c,0x3b6af1cf,0xb8139a46,0xb9bda680,0x3982fd22,0xbaa96f15,0x39d8225e,0xb85f404c,0x3aad3d2b,0x3a964075,0x3a62c6ef,0xbab439ea,0xbb039e26,0xbb2ea612,0xbb18b4ea,0xbb9c5992,0xbc0cd3bb,0xbc48244b,0xbc83d142,0xbc9cdcce,0xbc933534, +0xbc78bb7c,0xbc86fc45,0xbc45c6bb,0xbc48594b,0xbc2dccda,0xbc4c2651,0xbc46ecd7,0xbc30b77a,0xbbb6b4fe,0xbb1f557a,0xbae8e324,0xbb0e503c,0xbb3a9db9,0xbb598038,0xbac9d1cb,0xb7845f3a,0x3b86de76,0x3b2fc140,0x3b4d3e4e,0x3b5dc8db,0x3b4d71d5,0x3b25173d,0xbaad542f,0xb7b86934,0x39ee603d, +0x3a9a3ade,0xbb21abc6,0xbb9a3224,0xbb9964fa,0xbbf19d4d,0xbc0ec225,0xbc16d0fd,0xbbf5287a,0xbbe5cb58,0xbbbc981c,0xbc45ccec,0xbc868a4a,0xbc7fab9f,0xbc45389b,0xbc3b0f7c,0xbc0e9d35,0xbbd12717,0xbb615018,0xba92d270,0xbb0a0e72,0xbb3b61a9,0xbb4d1315,0xba6cf36d,0x3a8fb745,0x3b366295, +0x3b812a17,0x3b9ce3d0,0x3bca413e,0x3b79c7c2,0x3b60915e,0xb943db25,0xbb33856f,0xbab0f800,0xba76adf3,0x39aec885,0x3a4201ed,0x3b2af682,0x3ab9174d,0x3aaac97b,0xba28bbf0,0xba86fcb9,0xbb5198c0,0xbb97bcd7,0xbbfbf27b,0xbc383a45,0xbc687687,0xbc71e787,0xbbb02ec1,0xbbbc50a1,0xbbac005e, +0xbbc39f90,0xbbcdb5cd,0xbbdb27bf,0xbbeacad0,0xbbee33b8,0xbbbdf42d,0xbb87a78f,0xbb45ad91,0xbb119c98,0xbaf57646,0xbae5d317,0xbb01218e,0xbb064f34,0xbaecfccf,0xbae4fb81,0xba82fe62,0xba93616d,0xbb8657b1,0xbac68bd8,0xbb23fabb,0xbad4ef28,0xbb097bcf,0xba950912,0xba99c660,0xbb23200d, +0xbb6704a2,0xbb1c915b,0xbac364dc,0xbaf5f7aa,0xbb1521f7,0xbb3bf8dd,0xbb6d232a,0xbb544df6,0xbbee0ae7,0xbb1665a9,0xbb3b5387,0xbb3cd1cd,0xbb356ddf,0xbb3696f9,0xbb326a32,0xbb429a86,0xbb209214,0xbb1474ae,0xbb0127fa,0xbae049c3,0xbaaff1d1,0xba5c15ca,0xba703eea,0xba80f7fe,0xba93b695, +0xba965fb8,0xbab561c9,0xb98f3e19,0xbbc07c0a,0xbbf4b6ea,0xbbacdcdb,0xbba25a13,0xbbf21f65,0xbb93f87c,0xbba1700f,0xbb9bdc7f,0xbb8eee16,0xbbaa3025,0xbbb464fc,0xbbb6a430,0xbbfa5559,0xbbc00b30,0xbba91dad,0xbc066a4b,0xbade05f9,0x3bc1d5cf,0x3c242fae,0x3ba94bfa,0x3ba8d742,0x3bb2dd98, +0x3b983d90,0x3bc88dfb,0x3bd4e911,0x3bd40fed,0x3bcdb94a,0x3bc9841b,0x3bcfdde9,0x3bb9a059,0x3bb7fd77,0x3bbf61a8,0x3bc2b9bc,0x3bc3557b,0x3bc412d5,0x3bbeed91,0x3bac8375,0x3ba40667,0x3c201895,0x3becc799,0xbb271231,0x3c1eb4d5,0x3c0029dc,0xbacff889,0xb97e15c2,0x383f8fe1,0xba18f23f, +0x3a0eea2c,0x3a1f94e0,0x39e896dc,0x3c032e8a,0x3c233117,0xbb032711,0x3bf6bfd8,0x3b91004a,0x3bea316c,0x3b8e86eb,0x3bb0b7c4,0x3b6c9352,0x3bedfc4c,0x3c0ecc4e,0x3c13327a,0x3c105825,0x3c09e098,0x3c10e6ae,0x3bd0b502,0x3bbb3ef3,0x3bd2d504,0x3be480a3,0x3bfb1546,0x3c00ba49,0x3bf5e0f3, +0x3bbc81b7,0x3be8f288,0x3b814d9d,0x3bb062a6,0x3bf18f2d,0x3b98a0b9,0x3ba0a1b7,0x3be45f83,0x3bfbda78,0x3c1c10c3,0x3c09dd00,0x3bfeba1d,0x3bc0aa11,0x3ba014b5,0x3bbc052b,0x3bab48f0,0x3bcf04c4,0x3bcd65d1,0x3c080088,0x3be625cb,0x3b9ed62b,0x3bb682f1,0x3aaf43c5,0x3c13c404,0x3c464d89, +0x3c469d4d,0x3c3f5827,0x3c2c97dc,0x3c40381e,0x3bf16ed4,0x3be64ffd,0x3c0ca7e5,0x3c176908,0x3c1dffe3,0x3c1e60df,0x3c05085d,0x3bc4f8d0,0x3bb19b41,0x3bd5c1d3,0x3badcd2d,0x3ba2285b,0x3b8c3858,0x3ba51782,0x3ba6a61a,0x3bfc83cf,0x3bef467b,0x3be4bd78,0x3b9da76e,0x3bb460d9,0x3b82f20d, +0x3b978598,0x3b9306c4,0x3b98c333,0x3bc9673c,0x3ba566d6,0x3b9e9acb,0x3af1ef2f,0x3b462a09,0xbb427f9e,0x3bfa8b70,0x3c60b5c4,0x3c83dc8d,0x3c846f89,0x3c7ea72e,0x3c88ecaf,0x3c1401a9,0x3bd88b48,0x3c0aa6e1,0x3c312bba,0x3c54cbc3,0x3c561d91,0x3c2b30f7,0x3bb8cfcf,0x3b941d01,0x3b89a512, +0x3b57afc5,0x3bd582ac,0x3b808a40,0x3b119a3b,0x3a1952ea,0x3bbea17f,0x3be77157,0x3b2ffe46,0x3b86804b,0x3b240947,0x39974566,0x3b045493,0x3b805e2b,0x3b620571,0x3badf20b,0x3c3f01a1,0x3c8544d8,0x3c4f6939,0x3c4ed828,0x3c5da908,0x3ca6b02c,0x3cb2e6e0,0x3c933e92,0x3c03ed5b,0x39be995b, +0xbb4791d9,0xbb2df506,0x3b013c38,0x3c17bb62,0x3bf0b68c,0x3bd99a26,0x3bab66af,0x3c008704,0x3c1317f8,0x3c1b7be0,0x3bbfe9ca,0x3b65d31c,0x3b9c0010,0x3b7fd5e9,0x3ba6d040,0x3bef7e21,0x3b014ffe,0x3a7ef480,0x3b97df46,0x3c364556,0x3c33092e,0x3b831f39,0x3b7726a5,0x3a8ab0c9,0xbbb499e5, +0x3b92804d,0x3bca49ce,0xbc8eabf3,0xbb8a33a7,0x3b4ac22a,0xbb5a819e,0x3af3e57b,0x3b2918a0,0xbaf93de0,0x3c0a62ea,0x3c2886c2,0x3ae93024,0x3b4de7b6,0x3ba3d2e3,0x3c1e1774,0x3c3e7d9b,0x3c72b929,0x3c9a9e4f,0x3c6799bf,0x3c15e981,0x3bc7f6d9,0x3b6d0973,0x3b559286,0x3b8a6093,0x3be86d2a, +0x3bd09d0c,0x3b65f065,0x3b913dd7,0x3bbd14f8,0x3be2526c,0x3afb0016,0x3abfc366,0x3b4133d5,0x3b9aa4ae,0x3bcf5cd6,0x3b6535f5,0x3c45fe72,0xbb45ed60,0xbaaae105,0x3c004835,0x3c6fe1e6,0x3ce6f2be,0x3cd0ae68,0x3cc87644,0x3ca8f1c0,0x3c67a7f5,0x3c2e2e85,0x3c1769f1,0x3c69780d,0x3c753d28, +0x3c4c9f3e,0x3bd55e8e,0x3b5672d2,0x3b9a240d,0x3aaaf615,0xba8591c5,0x3aae24b3,0x3b031ab4,0xb9e20622,0xba1e906c,0xb77f523f,0x3a8f080b,0x3b65eea8,0x3b283719,0x3aed3ad2,0x3b11c22f,0x3b1a336b,0x3b3ca7d6,0x3aacd5b8,0x3bb1987e,0x3bb9f9c2,0x3b39d878,0xbaf9dfb7,0x3bbd7952,0x3c07fd74, +0x3c8351d6,0x3cca782d,0x3d0b285f,0x3ce1d65e,0x3ca2c93e,0x3bd60376,0x3bc433f4,0x3ba21dce,0x3b3f59e8,0x3b6ecf40,0x3b8ec4e8,0x3b921b36,0x3bb2f3a9,0x3bfc3137,0x3c26c00c,0x3c0f8459,0x3bbcd527,0x3b7948f8,0x3ad71216,0x3a9e1d4c,0x3acf70ff,0x3b2e5af0,0x3b1ee2ed,0x3af32d93,0x3aef6370, +0x3b0bf89d,0x3ab10bff,0x3a6df99d,0x3982755c,0xbb112af4,0xba522857,0x3a4fc1d4,0xba82933b,0x3b36dd15,0xbbe795ce,0x3bd1baf9,0x3c856f96,0x3c947b01,0x3c9964a6,0x3c93e491,0x3c7dd3ca,0x3c35dd62,0x3b79a6f1,0x3b5ad050,0x3c2853e1,0x3bf6e52c,0x3bf1ba6f,0x3bf0f833,0x3bc0057c,0x3b876242, +0x3b27bc11,0x3a0df59f,0x3a15c2ae,0x3b6bcead,0x3b628798,0x3b25ad68,0x3a0c1e61,0x3acf7b29,0x3a8b4419,0x3a21d89c,0xba054503,0xbaaf1657,0x3961ea59,0xba019500,0xbb114708,0xbba866cb,0xbc1f5f88,0xbc52e1de,0xbc775552,0xbbbba76d,0xbc10c44f,0xbaace636,0xb9a29993,0xbb1d5a9b,0xbb984cd9, +0xbbfdf5d9,0xbbf27ca0,0xbae92823,0xbb88caa7,0xbb9837cb,0xbb919a8d,0xba9aadd4,0x3af33c47,0x3b668cdf,0x3bc34893,0x3bdcc906,0x3bcb9da2,0x3b7ebd27,0x3b1d6b78,0x3b2a8539,0x3b54dfc1,0x3b66934f,0x3b72fd62,0x3b5b8d55,0x3abc63ef,0x3a4686dc,0xbb50801b,0xbba6a8a6,0xbbc96785,0xbbe7666f, +0xbbfaca6f,0xbbfe5a8b,0xbbdc7989,0xbb69eec3,0xba8d84f3,0xbb060956,0xbc069e91,0xbc29230a,0xbc16e00e,0xbbe44be1,0xbb9e520d,0xba8c1194,0x3affb98f,0x3ba3dc72,0x3b930407,0x3b97edea,0x3b84e422,0x3b89c5dd,0x3b799a5d,0x3b65c37f,0x3b872814,0x3b9b911a,0x3bb6fe98,0x3bac400e,0x3b9d2d68, +0x3ba0fa4c,0x3b750c2c,0x3afe7edb,0x3a242dbe,0x3a8d3291,0x3ad3bc66,0x3b251678,0x3ae778ee,0x3a0d8c3f,0x3a95993f,0xba9e92f5,0xbac34a07,0xbb312093,0xbb9596a0,0xbbdb5626,0xbc0fc9bc,0xbc13e559,0xbb919aa2,0xbb36f717,0xbb371251,0xbaf53032,0xbad68e34,0xbaa25084,0xba696566,0x38fe3446, +0xb9e701ff,0xba4f64d7,0xba857734,0xbaadbbf3,0xbaa988ea,0xba85b9e5,0xbaa8fb16,0xbacfdff7,0xbaf593b7,0xbaf68d68,0xbb1ac07e,0xbad5fcc1,0xba5656eb,0x3a3ff34f,0x3b3176e7,0x3b02a5b8,0x3b4ee8af,0x3b9d8e77,0x3b649c73,0x3b6e3414,0x3b385c79,0x3af6b326,0x3a289cc7,0x39ad62c5,0xb9afcf3e, +0xba8557f6,0xba3682ee,0xbac4b91f,0x3b2807ce,0x375a648a,0x392503b0,0x3a14de2f,0x3a57d9ba,0x3a98badb,0x3aba5ddb,0x3ae5223c,0x3abf93a9,0x3ab5ab09,0x3aa7fb13,0x3aa0dba8,0x3a8edeb1,0x3a76ba2a,0x3a6c25cf,0x3a6e69af,0x3a58af9f,0x3a64c19e,0x3a4c78c8,0x39bd92da,0x3b574143,0x3b208806, +0xbb59635a,0x3b93643a,0x3b65f0e3,0xbb2cdcd3,0xbb21f346,0xbb1b146d,0xbb2a4e8b,0xbb0b1afe,0xbb109909,0xbb1f4903,0x3af7b82e,0x3b4fba4c,0xbb93366f,0x3a841e0f,0x3b217207,0xbba19ef5,0xbb9d5a51,0xbbaf9317,0xbb7e41fd,0xbb9f9c03,0xbb9cc3b8,0xbbc51617,0xbbce1c16,0xbbbe3ddf,0xbbc19422, +0xbbbade37,0xbba0f665,0xbbba4aea,0xbbbd8aca,0xbbbe1495,0xbbb3c3b8,0xbbada040,0xbba53f39,0xbba81103,0xbb8c90b0,0xbbb9a914,0xbb99c893,0x39c41220,0x3c3ff555,0xbbcd1a96,0xb9531aeb,0x3c3239a4,0x3c32013e,0x3c2f1b91,0x3c2134b8,0x3c1bd224,0x3c174d74,0x3c0cc242,0xb9bd3180,0xbbd844c5, +0x3c30f658,0x3a1b22d3,0x3b3afaac,0xbbd9df56,0xbb8a17fe,0xbbb05a7d,0xbbb7b08d,0xbc16abdc,0xbc24760f,0xbc084519,0xbc090595,0xbbfb3c68,0xbbc05302,0xbc0268fc,0xbc0dbd41,0xbc0dc1f5,0xbc0745cf,0xbbfc6155,0xbbe60994,0xbbdc3537,0xbbb6a1d0,0xbbcffbc4,0x3b6892aa,0xbb200935,0xbb5faaac, +0xbabaec64,0xba048f51,0xbb27bb36,0xba9ef6c1,0xbb16352f,0xbb0cc783,0xbb5659fa,0xbb3fd0fb,0xbb09ec6b,0xbb1c0c2f,0xb918af86,0xbacb1ac5,0xbb98b747,0xbb2bc7b2,0xbb566d29,0xbb4e5078,0xbbb639ed,0xbbc57e2f,0xbc4adb38,0xbc6de12a,0xbc3ac7ab,0xbc47b243,0xbc359905,0xbbea7641,0xbc39e430, +0xbc406b4b,0xbc4180bd,0xbc2ad4ef,0xbc1c3461,0xbc08a7c5,0xbbf23121,0xbbdecabc,0xbb801818,0xbac7c663,0xba9ed2f5,0xba8c3fbc,0xbaf554a3,0x3a300758,0x397c600b,0x3ba1cd86,0x3b671811,0x3b00ff62,0x3b282ad2,0x3aff6f29,0xb89343b6,0x3a6e4588,0xb918b61d,0xb9b75ecd,0xbb33640b,0xbb5bd31f, +0xbb8dea43,0xbb2411ff,0xbb978806,0xbbd411ea,0xbc919266,0xbcaa61d6,0xbc765e0e,0xbc74f0a0,0xbc50c1fa,0xbbcfcd69,0xbc5b72a3,0xbc8d0d35,0xbc9581ab,0xbc8e5ca9,0xbc747d42,0xbc4fb0db,0xbc31ab0b,0xbc04e5b3,0xbbb3a7bb,0x3a2263b8,0x37674a83,0x3b5cbdfb,0x3a6d0539,0x3a958726,0x3ab6d53b, +0x3bb95011,0x3bfde5a8,0x3b7241b3,0x3b60c973,0x3b28f32d,0x3a85a5f2,0x3ad598bd,0x3a82849a,0x3ad314ed,0xbb3a7c94,0x3a9d7c85,0xbb0f4b46,0xbbf077c2,0xbc1ff564,0xbbcd2c97,0xbb7b525b,0xbbb497ad,0xbc68af0b,0xbc68de98,0xbc832d32,0xbc8b0d8f,0xbc658e16,0xbba89293,0x3c2f549d,0x3b9bf715, +0x3b186fae,0x3a49a50c,0xbb0566bf,0xbb9400a4,0xbb7f8641,0x3a8a02fe,0xb91c3714,0x3a938e5f,0x3aa4c910,0x3b35bd26,0x3bdbde0a,0x3ac13dc4,0x3a72bb84,0x3bc31f3a,0x3c1e1393,0x3c0c3bf3,0x3ac5aaf7,0x3a37982b,0xbb48d655,0xbc0c0c57,0xbb55eb70,0xbc13c364,0xbcc520a9,0xbaece651,0x3a99834e, +0xbb867890,0xbc070a82,0xbc10ccdb,0xbbfa335e,0x3a4e8889,0x3b8e14a9,0x3a240e5a,0x3a726938,0x3a90ae77,0x3ad5ea19,0xba253001,0xbb8127e8,0xbc0daa79,0xbbf60472,0xbbb16075,0xba7d077e,0x3acf8fc3,0x3a804a3d,0x3a35e0d9,0x3b898494,0x3b8c9a10,0x3b35f867,0x3ba4b431,0x3bce0cd7,0x3bc76916, +0x3a881cef,0x3a8a7ec0,0x3b5b3cfe,0x3b5f38c1,0x3b0267b0,0x3a3f072c,0xbadacd12,0xb9db1b95,0xbb25e4e5,0x3b93000d,0xb97835d6,0xbc862c54,0xbcd6c3e6,0xbd021aef,0xbcf37824,0xbc932680,0xbc072af4,0xbb8efd50,0xbc346add,0xbc80afe6,0xbc90c78c,0xbc835b0c,0xbc1da605,0x3afcc140,0xbacd7f9c, +0xbb816aa6,0xbbc24839,0xbbb68ef3,0xbb8408ab,0xbb482446,0xbb5fed08,0xb9c90e04,0x3b5de03d,0x3ae7d868,0x3a91c736,0x3ad15ce2,0x3aeb9bab,0x3adfd83f,0xba2299c4,0x3b7a55d2,0x3bac22c7,0x3b01db61,0xb8c43d0f,0x3b3e936d,0x3b64b7a0,0xbc053f7a,0xbc8b3d2c,0xbcf1c2d3,0xbcb49e9b,0xbc618407, +0xbb271872,0xbba0a8f5,0xbbcba326,0xbc01446c,0xbc111940,0xbbfdb0a3,0xbbbe4d5a,0xbbfc3421,0xbc03f408,0xbbadead6,0xbb8ef2d5,0xbaaa303f,0x39a8524c,0x3a20a45d,0xbab41c67,0xb9d82f98,0x3a0204e1,0x3a1905fe,0x3a4c4e95,0x3b10de13,0x3adb3673,0x3a28b13b,0x3a815f38,0x39de6bc2,0xbb45f6df, +0xbafd370e,0xbb39f383,0xbb20e836,0x39f126a2,0xbbe24c9f,0xbc7c2038,0xbce5096b,0xbcceab5c,0xbca64516,0xbca93ec4,0xbcac9f70,0xbca21f9b,0xbca612e8,0xbc9799e8,0xbc887ddb,0xbc57a083,0xbc1bde51,0xbbf2803c,0xbb04f0cf,0x39bc228e,0x394da60d,0xb9fdcea1,0xbad83662,0xbabd12e8,0xba9950b6, +0xbafeede6,0xb947a522,0x3a31e46d,0xb95e78b8,0xbaf2da68,0xbab8991a,0xbae63c6e,0xbaf0d382,0xbb374f1a,0xbba4a37e,0xbc06af17,0xbc404a40,0xbc68fd69,0xbc4f419d,0xbc82b13c,0xbb5bbfc5,0xbc5886a4,0xbc7cede5,0xbc792055,0xbc8ee2ec,0xbc8f5823,0xbc89803e,0xbc8bbdac,0xbc1edc37,0xbbaa7513, +0xbb2a08ed,0xbb88e544,0xbbaab761,0xbbad2347,0xbb7f14fc,0xbb37c4af,0xbad9a943,0xbb0915f9,0xba028939,0x3b50a8df,0x3b2e2bde,0x3aeeae0f,0x3933caed,0x38557b3c,0xb9ae9398,0xbaafb5f0,0xbbb4bb84,0xbbeb0e84,0xbbe8a825,0xbc0b8f02,0xbc1bbad8,0xbc2af7ee,0xbc1b3e44,0xbc11584e,0xbba6cfbd, +0xbc1efdcf,0xbc6dc15f,0xbc77d29b,0xbc6c6ed6,0xbc665c5f,0xbc5da6a6,0xbc457235,0xbc2ff5a9,0xbc22c626,0xbc11d795,0xbc04bb56,0xbbd658c2,0xbb4b69b8,0x39360b0e,0x3b506cf4,0x3b3e43d9,0x3b43a246,0x3b54e728,0x3b121389,0x3a8f265d,0x398d8580,0x3a011fff,0x3a13b7dd,0x3956cabc,0x3940e702, +0x3a800fb0,0x3a93b826,0x3a990f59,0xbb036bb6,0xbb065ea1,0xbb57d424,0xbb3c0575,0xbb8a27ab,0xbbd53a65,0xbc15b599,0xbc2dcdbf,0xbc51d124,0xbb132f48,0xbc0ba440,0xbc035b7b,0xbc08b99d,0xbc0974e2,0xbc0ec2b8,0xbc109dba,0xbc0f9ded,0xbbdcb216,0xbb9aaf5a,0xbb4efa52,0xbadf6cb3,0xba17679a, +0x3a6f6ce4,0x39a1539b,0x38165dea,0xb963f6fb,0xb9bbffe9,0x395899a9,0xba784f47,0xba9bfd54,0xbb09eb3c,0xbb40f362,0xbab01bca,0xbae1885e,0xbb38e2ee,0xbb705937,0xbb929bf9,0xbb7dcda7,0xbba23443,0xbb9d322c,0xbb836a45,0xbb9af076,0xbb7695ef,0xbba21ad7,0xbbd2472c,0xbba807f8,0xbbb61ff1, +0xbb95504b,0xbb9ece75,0xbb9b0eca,0xbb9a1067,0xbb98f594,0xbba4dc23,0xbb8ad107,0xbb75b10c,0xbb4ced02,0xbb279469,0xbb020075,0xba9cc344,0xbabc639b,0xbabe5c4f,0xbac57db7,0xbae065fd,0xbae5d749,0xbae39d13,0xbb57ad30,0xba93cfad,0x3b995709,0xbb850acc,0xbaaf9f46,0x3bc45abd,0x3bb5deda, +0x3ba9be7d,0x3b9493a3,0x3b8713bd,0x3b683fb7,0x3b3eb155,0xbb1322a2,0xbbb9589a,0x3b68cf7b,0xbb0d0e89,0xbb5855f5,0x3bfce0e0,0x3b90b9d7,0x3c219a1d,0x3bd6784a,0x3be46b8e,0x3bbf5843,0x3bf15b1f,0x3c01be99,0x3c099db5,0x3c052f48,0x3c033f71,0x3c074fd8,0x3becc588,0x3be56b11,0x3be6447d, +0x3bf717ac,0x3bfed208,0x3c035e67,0x3c017b87,0x3be3fc0b,0x3c14c9d0,0x3b7f0eb9,0xbb1462ae,0xbc3d59eb,0x3bbb1c09,0xbab170cf,0xbc247f7b,0xbc1c3d47,0xbc18b9f9,0xbc0f0779,0xbc16c73a,0xbc184564,0xbc14ed1f,0xba616264,0x3bebe9a6,0xbc2d6acb,0xbb221538,0xbba39f88,0x3c1bfc0a,0x3bd9f25d, +0x3bc3eabd,0x3b804d3c,0x3be7dad9,0x3c10c465,0x3c2a5f74,0x3c2c6213,0x3c297f1d,0x3c310718,0x3c001b15,0x3be1d36c,0x3bef361d,0x3c0c32ba,0x3c1c51f1,0x3c29462e,0x3c1c8296,0x3c120a34,0x3c04cbb8,0xbb873ee9,0x3b871ff2,0x3b6bc5ec,0x3b144364,0x3b016eda,0x3bc08fd6,0x3beaf811,0x3c043667, +0x3ba01be1,0x3be8169d,0x3bdd4877,0x3b6d2d14,0x3baf2e2b,0x3b1feac6,0x3b233fc9,0x3be0e5fe,0x3b8c751c,0x3c1d5bc3,0x3c0a1da2,0x3bafc999,0x3acd605f,0x3bf4c024,0x3c317c7d,0x3c67b9bf,0x3c5d1395,0x3c4f6840,0x3c630702,0x3c020538,0x3bdc48d2,0x3bee5078,0x3c237fac,0x3c3989de,0x3c5098a5, +0x3c3056a6,0x3c319596,0x3babb5e4,0x3b111ca1,0x3b30a476,0x3ae1a85a,0x3b3a2205,0x3af5889f,0x3bbf528d,0x3baba23b,0x3c198b61,0x3b8f5f56,0x3bbf0684,0x3b53f5bb,0x3b557e14,0x3b6b504f,0x3b5c5e50,0x3ac78a76,0x3ba602c8,0x3a1b9426,0x3c0a0e93,0x3bbe1bb5,0x3b0a4d74,0xbb79fbfb,0x3b36669e, +0x3c12c994,0x3c84115d,0x3c89803d,0x3c8a7352,0x3c9abd92,0x3c1e0f27,0x3bb8f524,0x3bd42cbc,0x3c2b750f,0x3c6714e6,0x3c8589bf,0x3c597813,0x3c3546fa,0x3bae3d65,0xb98ef047,0x3b860b8e,0x3ac75724,0x3b80809b,0x3b68344f,0x3b6dd2b6,0x3bf70d1d,0x3bf8ba3f,0x3b95ee0b,0x3b850fa9,0x3b7f0c96, +0x3abeb6c2,0x3b87d822,0x3b99c57c,0x3b460843,0x3ba82bd2,0x3bfb7d2f,0x3c967bda,0x3c86aa06,0x3c5e348b,0x3c67c186,0x3cc8f695,0x3cd34c94,0x3c9a2d4c,0x3c82c625,0x3c14baa2,0x3b6e5cfc,0x3b0817d5,0x3bc17f70,0x3c71bbbd,0x3c40afb5,0x3c31c13f,0x3c5e56df,0x3c50a3f9,0x3c740285,0x3c2312e1, +0x3b301bf9,0x3be00c8b,0x3b98aaa6,0x3b67b6c3,0x3b508797,0x3bc545ed,0x3b014f21,0x3b10b830,0x3bff1722,0x3c2f3ede,0x3c0befec,0x3b46a012,0x3b05204e,0xbb134507,0xbbbaf548,0x3b6973bc,0xbc22a6c9,0xbc2a6bda,0x3bcb4c94,0x3c06110f,0xbb3e26cb,0x3aced447,0x3aba4342,0xbb2bb4ab,0x3bbe9cff, +0x3c0dd3f6,0x3bbcb38f,0x3b02dfdd,0x3b1b4ae6,0x3c00c912,0x3c575572,0x3c929a31,0x3cb68774,0x3c61c75c,0x3c289778,0x3b9fc3d3,0x39154012,0x3abb42fe,0x3b26db7d,0x3bcec90b,0x3bd7d7b0,0x3b5f9d8a,0x3bc3537c,0x3be7ffc4,0x3bcc8373,0x3b0f1618,0x3b15853d,0x3bc075d4,0x3b6c411c,0x3bd6b551, +0x3c000c28,0x3a97235c,0x3ae57dd2,0x3ba7d54f,0x3c3bedd9,0x3c80dc54,0x3cd9a0db,0x3cc48a6d,0x3cb95ef9,0x3cb04470,0x3c842b85,0x3c602c45,0x3c80db05,0x3ca24df9,0x3cb3f341,0x3c99f775,0x3c630e1a,0x3bfeab8d,0x3ba0ab4b,0x3a58549e,0x3adc5791,0x3b0bb6db,0x3a2b9a08,0x3a612f5c,0xba03d629, +0xba4fee6e,0x3a9b4ee3,0x3b7d246b,0x3b39724f,0x3b1e55bc,0x3b14331e,0x3b396f49,0x3b212ad3,0x3601f178,0x3b8d275d,0x3bbfa03a,0x3b0e8480,0x3b43b12a,0x3a89d3fe,0x3b8432ba,0x3c6741f4,0x3cb0be47,0x3d0b743c,0x3cedabcd,0x3cbfe246,0x3c7f05d0,0x3bde167d,0x3b4cd72a,0x3b8242af,0x3a8819c8, +0x3a9703ac,0x3add11e3,0x3bb30d8b,0x3c11996c,0x3c4cbf67,0x3c3a9514,0x3c142e0c,0x3b91a8cd,0xbaa7bd69,0x3941ead3,0x3ac68c2a,0x3a7eb775,0x3a8fa118,0x3abfb8c8,0x3b39017e,0x3b40f617,0x3ac0c242,0x3b07b607,0x3ac7fa87,0xba866de6,0xbae33112,0x39589c6c,0xbb413d3b,0x397ecc76,0xbc5c4673, +0x3b11e78d,0x3c83830f,0x3c8bb2cd,0x3cac32cf,0x3c96ab6b,0x3c72d5db,0x3c14fdef,0x3b853df2,0x3b7b26fa,0x3c0b41f1,0x3bc4f225,0x3bccdc8e,0x3bdebd08,0x3b8f938a,0x3b117845,0x3aa10c61,0xba09c691,0x3a75137e,0x3b73cd33,0x39f076cd,0x3b069d7f,0x3a1d2aa1,0x3a827d11,0x3a023bc6,0xbaaa7e30, +0xba61e8b7,0xb9f64880,0xba487b25,0xba6ad77a,0xbb72752d,0xbbd92c2d,0xbc268e38,0xbc4940f6,0xbc4f88f3,0xbbf7b2b5,0xbc4e4505,0xbb0c22e6,0x3b286bee,0xba646357,0xbb10d1ce,0xba5409d4,0x3ad0bf5d,0x3ba2f4ad,0x3a600bd7,0xbacc1bc4,0xbb1ed187,0xb74d32c5,0x3b0889a6,0x3b7f521b,0x3bbdbf81, +0x3bd82aa8,0x3ba05946,0x3b8d5226,0x3b4e9b61,0x3ae6b432,0x3b1a1337,0x3b3989e2,0x3b023b10,0x3b39f685,0x3a8d8511,0xbabec06c,0xbb997ecd,0xbbd2e922,0xbbb934ba,0xbbdbd5db,0xbbf9e538,0xbc07d600,0xbc10ed1f,0xbbcd9c21,0xbb92f82f,0xbb3c568d,0xbbfc6445,0xbbd202f8,0xbb8e094a,0xbb942238, +0xbb6718fa,0xbad89389,0xb8b8efa9,0x3b142436,0x3b1af4dd,0x3b586f30,0x3b62453e,0x3b940f29,0x3ba68895,0x3bb4549c,0x3b9cd1de,0x3b8e39fb,0x3b8b25dc,0x3b98147a,0x3bbac169,0x3bac8379,0x3b3bed96,0x3b19e5dd,0x3b094e3f,0x3abff49f,0x3a05ff92,0x3a8f0d13,0xba5c0d38,0xbaa5858d,0xbb6c4248, +0xbb4536e3,0xbb54eeb0,0xbb13871b,0xbb86a950,0xbbce5043,0xbc116738,0xbbf7b65c,0xbc1e293f,0xbb8c37dc,0xbb463b85,0xbab1a990,0x39af06c4,0x3afc0c21,0x3b6aea0c,0x3bb12286,0x3b9def79,0x3b8df369,0x3b80ec5e,0x3b5c6baf,0x3b3dd01b,0x3b347654,0x3b3013e9,0x3b2d381a,0x3b2103c3,0x3b19164c, +0x3affb2d1,0x3b356262,0xba2ceb93,0x3b13981e,0x3b294bf4,0x3a980f5f,0x3a609fee,0x3b169952,0x3ae69026,0x3ab77b29,0xb9c44895,0x39a6fc29,0xb9faa6c5,0xbaf88030,0xbb126dcc,0xbb7c6410,0xbb74d0c9,0xbb3eefb8,0x38cef84a,0x3adb3b7d,0x3aab9190,0x3b0b7e10,0x3b284319,0x3b4a1bda,0x3b66f454, +0x3b8c4054,0x3b8171b4,0x3b8118bc,0x3b7e00fe,0x3b7ce0b6,0x3b797fca,0x3b6db301,0x3b6cae3a,0x3b6aecd2,0x3b6865c1,0x3b6c3e04,0x3b571725,0x3b81e681,0x3b1d9818,0xba732172,0xbbda5f7c,0x3b5608a6,0xba80a5fc,0xbbe53199,0xbbe48f38,0xbbdb421d,0xbbcd0f20,0xbbd617b6,0xbbd763f4,0xbbd553e1, +0xbb22058b,0x3ace9d49,0xbc0172c8,0xbb694ee2,0x3b88ead3,0xbba52e8f,0x3af2798d,0xbbde4c82,0xbb82687c,0xbba1849c,0xbb9a3d91,0xbbb453f8,0xbbbb70e1,0xbbb55f76,0xbbba1e7c,0xbbb8ea51,0xbba88bae,0xbbc0efda,0xbbc5c1fe,0xbbc883b7,0xbbbf3fde,0xbbb6b3d3,0xbba816e1,0xbba5639f,0xbb88b51f, +0xbbe79122,0x3ad9c2bb,0x3bf36694,0x3c58867c,0xba89666e,0x3be5ef1f,0x3c5b2ce0,0x3c642517,0x3c6395f7,0x3c4a05fb,0x3c5bdacb,0x3c5b52d6,0x3c4de677,0x3be3c0d8,0xbae0f265,0x3c5569cb,0x3c0b81e1,0x3c1a6009,0xbba1ea2a,0xbba18592,0xbb9e263b,0xbba075b1,0xbbe1ca32,0xbbf359c3,0xbbdfda57, +0xbbe74c66,0xbbe5ad71,0xbbc3f095,0xbc059a1f,0xbc17153d,0xbc1a48db,0xbc1640b0,0xbc041b37,0xbbdaeace,0xbbb170be,0xbbb2bc75,0xbb993f6c,0x3c05fa90,0xbabc99f2,0xba58bdb6,0x3932bd56,0x3af0f9db,0x398ba260,0x398e3063,0x39cabd95,0x3b0ce50f,0xba84b0f0,0xbb1294d4,0xb980c356,0xb9b55e0d, +0x3b49758f,0x3b10c1da,0xbb45fa0f,0x3b84f6b9,0xba19ea4e,0xbba0f8f1,0xbb9e3853,0xbbb3391e,0xbc0b9325,0xbc1eb4ba,0xbc1038f8,0xbc1d627d,0xbc1d8d20,0xbbf21034,0xbc3820b4,0xbc47d265,0xbc47d398,0xbc3aab15,0xbc1fbe00,0xbbf6a472,0xbbb533c0,0xbbd46077,0xbade0a97,0x3b2bfeb2,0x3a0a3534, +0xba84bec1,0xba87183a,0x3b545178,0x3aede895,0x3be43189,0x3b26d4b3,0x3baca766,0x3b0f936a,0x3b92c8c8,0x3a930529,0x3b560543,0x3b25b234,0x3b46688e,0x3a9c0b19,0x3b18e813,0xbab9f106,0xbb8c0ed0,0xbb6999e7,0xbb9f6981,0xbc2e05ab,0xbc3ffe76,0xbc1f48d5,0xbc259ef8,0xbc265490,0xbbda2991, +0xbc522129,0xbc8ee1b1,0xbc99a23f,0xbc97a242,0xbc6faf17,0xbc277611,0xbbdc4900,0xbbdcdff1,0xbb53cedd,0x3b653fa8,0xbb275492,0x3af07674,0xb9716924,0x3a592f6f,0x3b137676,0x3bd2a20b,0x3c09cadd,0x3b55070d,0x3b78f197,0x3b1e1509,0x3a6e3f32,0x3b3aa006,0x3b83a605,0x3afdc85b,0xba4882c5, +0x3c740a62,0x3b71ed19,0xbc1c6272,0xbc2edbcb,0xbc0db3b7,0xbae73a4c,0xbb177a52,0xbc5abb17,0xbc4c3674,0xbc8b3b06,0xbcb66ae5,0xbcb0e656,0xbc5b2ee1,0x3b635d68,0x3b065918,0x3a77ae2b,0xbb8a3b8a,0xbb7092b6,0xbbbec0cb,0x3a66ecf7,0x3c018786,0x3a9af5de,0x3b4528c9,0x3aba3a4c,0x3b20e0df, +0x3bb68966,0x3a90f9f9,0x3b09dae0,0x3c10d5d7,0x3c1967de,0x3bd7111e,0x3b3792f5,0xb953edd4,0xbaea3135,0xbb2cd6c0,0x3c084831,0xbc8432ce,0xbca35a32,0xbbb9bba4,0x3b113cfe,0xbb365836,0xb9c47fe6,0xba2575aa,0xbb565820,0xb9f8a10b,0x3ac56e54,0x3b5bd655,0x3aefeabe,0x3abf6d0b,0x3aec2bd1, +0x3a3c18c4,0xba664b31,0xbb8f3f13,0xbb8142fd,0xbbaf2a45,0x3a8913c2,0x3b291103,0x3a88bd7b,0x3b01d3d6,0x3ae85d25,0x3b2845ef,0x3b16d10a,0x3bc210b2,0x3bea707a,0x3badf71a,0x3a9ba77f,0x3b09e493,0x3b937248,0x3b667c4f,0x3b2591b6,0x3c0a400b,0xbc4c64b9,0x3bff9c15,0x3bc0d88a,0x3c18bf05, +0x3b9fdf8f,0xbbcb89c4,0xbc67a905,0xbcb3803e,0xbcb63b80,0xbcbc53a9,0xbc88fa06,0xbbd66301,0xbc5768e1,0xbc64f61f,0xbc65cee7,0xbc4cdf56,0xbc037f0b,0x38c4f3ed,0xbb25af51,0xbbd62f74,0xbb7bf8b8,0xbb2a87ef,0xbb3cad72,0xb85b9ba1,0xbb0667f0,0x3a0870e8,0x3b6ccb20,0x3ae89fe3,0x3a8a90af, +0x3aadff1b,0x3b1bba25,0x3afb974a,0xb9ba9c2d,0x3ba08e65,0x3ba6ccb4,0x3bbe5b92,0x3bbd9ca7,0x3962f18c,0x3acff3e6,0xbb83ab92,0xbbc6a3b9,0xbc7b6d77,0xbc04a7b7,0xbb039c33,0x3b89f928,0x3b0b531d,0x3a33ba3b,0x3b3cbbf3,0xbb6bc70e,0xbba08ef8,0xbb798258,0xbb86a26c,0xbb9495d4,0xbb5634d9, +0xbb0bea15,0xba9a0c2c,0x3a9d33d2,0x3b193e02,0xba66d826,0xb70654f7,0xb9b3b6a4,0xb964d8e9,0x39d72c4c,0x3b15d751,0x3b450c10,0x3a9a8c9f,0x3af5e149,0x3a5e6665,0xbb6090c7,0xbb0c7c33,0xbb4d4760,0xbb521498,0xbb3a94b5,0xba0524f4,0xbba75fca,0xbc8074ce,0xbc4fc8b6,0xbc36f3ba,0xbc3cd40c, +0xbc7130ec,0xbc96759f,0xbc758932,0xbc47233e,0xbc09dbbd,0xbbcb98ea,0xbb9071fe,0xbb361617,0xba86c6f1,0xb9b6d802,0xbac4e3ff,0xba01ccec,0xbac612ff,0xba65772c,0x3a90fac5,0xbabf8fa7,0xb984312c,0x39c22c8b,0xba20eea0,0xbb4e764e,0xbab528aa,0xbb0556b9,0xbac0ae7f,0xbb3b3e89,0xbb886e60, +0xbbc62d74,0xbc0caa42,0xbc1e3691,0xbbd3e3b2,0xbc0f1e99,0x3b14d8b3,0xbbc562ac,0xbc38cda0,0xbc2ff535,0xbc62f907,0xbc5a921d,0xbc559ae8,0xbc669c47,0xbbf1f1df,0xbb99b6e2,0xbb861163,0xbb888841,0xbb6c85ed,0xbb057142,0xbab49645,0xbae09d41,0xbb64f710,0xbb4bba1d,0xbae40f75,0x3b13914a, +0x3b12edf7,0x3aee4ded,0x3b304d5c,0x3a810099,0xba50d7b2,0xbb56d1de,0xbbd35287,0xbbedca4a,0xbc007baf,0xbc09fdaf,0xbc1b3c41,0xbc31e661,0xbc2c7c4e,0xbc1ed386,0xbbcc0ead,0xbbccf4e2,0xbbfb1252,0xbc2641bf,0xbc401fc0,0xbc36b6ec,0xbc45065f,0xbc37ea72,0xbc356ef5,0xbc37d468,0xbc1bf678, +0xbc017b05,0xbbbc398c,0xbb3fe614,0xb9773b64,0x3b37d1d2,0x3ab07182,0x3a3da0c5,0xb8dea924,0x39ada837,0xba67e653,0x3a1e84f0,0x3b4560c3,0x3b219fd0,0x3b163f46,0x3a0c9127,0x3a3ddaa8,0xba95b3ed,0xba0b4ff4,0xbba4c189,0xbb75f2ba,0xbba8d364,0xbb27e305,0xbb42b9b8,0xbb741eb9,0xbb8c1c42, +0xbb842cc7,0xbbdf695d,0xbb10b42f,0xbc12a4fb,0xbc09a985,0xbc01227a,0xbbf454ce,0xbbeaef3f,0xbbda8f9b,0xbbc5877a,0xbb977c78,0xbb5a74f1,0xbb0f78e2,0xba729e2d,0x39a1f3ad,0x3b1112f6,0x3aee3eda,0x3aeed8b0,0x3acc2823,0x3ac383b2,0x3ad5c781,0x3a562e4e,0x3b30167c,0xba38d3e8,0xba80cbe1, +0xb9da8651,0xba1097e8,0xbb292557,0xbb7e5600,0xbb7ff5dd,0xbb30ab72,0xbbaa67bb,0xbbcec754,0xbbac939a,0xbbccabf2,0xbba1f2a8,0xbbbbb491,0xbc043169,0xbb084d73,0xbbda1711,0xbba33a64,0xbba95548,0xbba3a64b,0xbb9ec6ef,0xbb9bf97f,0xbba0d8c6,0xbb8dec49,0xbb7ae35b,0xbb558241,0xbb3169d6, +0xbb126635,0xbad2b3ff,0xbaefd912,0xbaeea887,0xbaeb5456,0xbaff65ea,0xbaec0253,0xbb2a90b7,0x3987a7f3,0x3b6ee7b0,0x3bf17cba,0xbab27c8b,0x3b53d4f3,0x3c03ac9a,0x3c016d95,0x3bf1abfe,0x3bcd3de3,0x3bd557db,0x3bc6e9d8,0x3bae464b,0x3ad4f625,0xbb5d6b75,0x3ba52dac,0x3aeb8557,0xbb7a8fb1, +0x3b6f6296,0xbb4a2931,0x3be1df5f,0x3b4e3fc1,0x3b496f8f,0x3b1503b1,0x3b2d8e9a,0x3b441776,0x3b8097c0,0x3b693249,0x3b67c047,0x3b801ff3,0x3b4063b9,0x3b2c8033,0x3b1cf15b,0x3b489096,0x3b6231d2,0x3b810e8b,0x3b81ee53,0x3b64c599,0x3bbdcc21,0xbb70a29b,0xbc0103cb,0xbc12bf14,0xbaf863f0, +0xbbf16c99,0xbc0070b6,0xbc06048a,0xbc059a21,0xbbee76de,0xbc0ea9f3,0xbc12f052,0xbc12b67b,0xbbdf24f4,0xb982339e,0xbc074bdf,0xbc050e36,0xbc037504,0x3ba1acf1,0x3b77ca6f,0x3ae064f7,0x39c19d29,0x39b91d7a,0x3a9d15cf,0x3b7bf97e,0x3b77c784,0x3b856098,0x3b9c6e51,0x3b23bc4a,0x3ac9e5cd, +0x3a9f2219,0x3b1ede66,0x3b5e1498,0x3b9b7b26,0x3b90d611,0x3bae0e20,0x3b454fc1,0xbbde3987,0x398c5c56,0xbb074aa7,0xba9f69ba,0xbab02750,0x3adc39db,0x3b4f2bb9,0x3b30abe7,0xb9ca97b3,0x3b204b0e,0x3b5e6fae,0x391cc738,0x3affa337,0xba0db10b,0xbaf6bb41,0x3b31e16d,0xba0f1cc8,0x3be45288, +0x3bc71c92,0x3a370d81,0xba94fe63,0xbad71a76,0xb9d3a3cc,0x3bb7416f,0x3b85b0c1,0x3b892f73,0x3bbb1ed7,0x3a4367cb,0xba5d142b,0xbaf932d0,0x3aa5251f,0x3b52f97f,0x3bc2cf31,0x3bb5c1ea,0x3bf4b018,0x3ad5d44a,0xbb1e72a1,0xba90878b,0xbb04605e,0xba02396f,0xba9bfd31,0x3b8101c0,0x3b42d2d2, +0x3c023952,0x3ac9f731,0x3ba91c0f,0x3aa33e00,0x3a79ff45,0x3af6cf80,0x3abf72c5,0xbaa40fb5,0x3ad8dbf3,0xbb1d3c3f,0x3bf08c51,0x3ba8ddbd,0xbab06616,0xbb9add09,0xbc06807b,0xbbc5784c,0x3b889909,0x3b7a6b4c,0x3bad5e82,0x3c0bcd3b,0x3abf6f1b,0xbb523786,0xbb9f96a2,0xbaf834c6,0x3afdbdfa, +0x3bcd2e8c,0x3bc8684c,0x3c0384aa,0x3b0d5318,0xbb38f3b0,0x3b113eef,0xbb29c664,0x3aef6be2,0x3b5be904,0x3bae41f6,0x3c08332f,0x3c089c0f,0x3bc2f8b3,0x3b865a4a,0x3b943f55,0x3b01e5bc,0x3baa0f39,0x3b9577af,0x3b0efe5a,0x3b214e91,0x3b94a52c,0x3c48227a,0x3c253f1f,0x3ba8b31f,0x3b94a716, +0x3c668766,0x3c68e07d,0x3b9f7f16,0x3c18ffec,0x3ba22561,0xbaed2937,0xbac7ef55,0x3b3950ef,0x3c48928c,0x3c2cb98c,0x3c22df8d,0x3c5ea682,0x3c205257,0x3c2cf432,0x3b8d40bc,0x3990a3cc,0x3bdf8c58,0x3b7d7867,0x3b2f1993,0x3ab7c8ba,0x3b979c63,0x3aadb2ff,0x3b45e001,0x3c2fed0d,0x3c1224c9, +0x3bb34c7a,0x3af8a0e1,0xba99ea51,0xbbb66ab5,0xbb957796,0x3b212f23,0xbcc6d10e,0xbc127842,0x3c045245,0x3bf4044b,0xbaa086df,0xb95f4844,0xbb30c943,0xbc023d5e,0xbaf7315e,0x3b32a741,0x3bedf632,0x3a9b4aaf,0xb8bbb2ec,0x3b2c127e,0x3c000940,0x3c2f0a2d,0x3c38c6e7,0x3b94cbd9,0x3b910e75, +0x3ad7fb9c,0xbab71021,0x391d35a3,0x3a2a808c,0x3b748298,0x3b9878c7,0x3b344972,0x3bd9304f,0x3bf7373a,0x3ba46464,0x3b149dbc,0x3b29431d,0x3bc11fd8,0x3b3b3041,0x3bcb76b1,0x3c2c4812,0xbc382c7f,0x3c0d7c79,0x3c3bd141,0x3c5090e3,0x3c2ed8db,0x3c17ad26,0x3bb48626,0x3b372af9,0x3b70b330, +0x3b813950,0x3bbe2751,0x3c3bb658,0x3c2ef322,0x3c448ca9,0x3c2798a9,0x3c03f3e2,0x3b8cbb31,0x3b30b6ed,0xb94d352a,0x3aea8634,0xb8295d8c,0xbaf77e5c,0x39a970c4,0xba6177f1,0xbad3a72c,0x3a727020,0x3b6f7f84,0x3b282d9d,0x3b171752,0x3ae6e354,0x3b4b2442,0x3b1a311a,0xba209e5e,0x3b483edc, +0x3bb470f1,0x3b45cb18,0x3c07de33,0xbb7ccb17,0xbb28d26b,0x3b16c8ce,0x3b779dc6,0x3c1cc151,0x3c3b05fe,0x3c4fa866,0x3c833034,0x3b62dc2d,0xbac3d852,0x3ae153df,0xbb8d15ab,0xbb9eeffd,0xbb0b3e70,0x3ac8394b,0x3b81036b,0x3be66470,0x3be520d2,0x3be4559b,0x3b576aa4,0xbb08cbe2,0xba22fbbf, +0x3a38d96f,0xb9e70e67,0xb9927d53,0x3984ffb5,0x3b3c1029,0x3b4b8299,0x3ad7c0dd,0x3b1fce61,0x3ae4fe28,0xb9a5f353,0xbae55623,0xb9b89261,0xbb65e579,0xbb172340,0xbc55381f,0xbbe14bf2,0x3a2ccf54,0x3a8cb1a9,0x3b9fccf5,0x3b0bce58,0xba252310,0xbb93ffb1,0xbb805181,0xbb35f889,0xbaad1144, +0xba436b30,0x38c57010,0x3a6da82f,0x39a61693,0xb91c645a,0x3812b09f,0xba7ab8d6,0x3a085dca,0x3abfac4d,0xbaef11eb,0x3a0a9ad1,0x393487e3,0x39bff7ee,0xb7178878,0xbb388945,0xbaee9d7e,0xbab2c3d3,0xbb396175,0xbb14f25e,0xbb99e547,0xbbe1bcfc,0xbc0c371e,0xbc21fe42,0xbc1fced2,0xbc1f8d14, +0xbc37b9c0,0xbbcb7e60,0xbac2cb2a,0xbb563c79,0xbafbdebd,0xb99d8d6e,0x3b016ce2,0x3b3b3bd2,0x3ad51086,0xb84fdf3a,0xbaa64ce6,0xb9891418,0x39ca665c,0x3ae0e9c8,0x3af23238,0x3af2d7be,0x3ac8b730,0x3b138f2e,0x3b17fa23,0x3ab23a64,0x3ac4f790,0x3ae46218,0x39e91dd6,0x3a3245b6,0xba2c0e9a, +0xbb68226a,0xbbb35113,0xbbdd15ac,0xbbb6e5ab,0xbbe9253e,0xbc0eeea7,0xbc277736,0xbc307334,0xbc20c47d,0xbc1599f6,0xbbd36d94,0xbc04dbe3,0xbbb1fd98,0xbb52eb65,0xbb9b4112,0xbb934a13,0xbb98977e,0xbb95262c,0xbb7bd464,0xbb5127a9,0xbafa7d85,0xba82391d,0x3a5307f2,0x3b1f39e6,0x3b885468, +0x3b54186c,0x3b2823b3,0x3b053134,0x3b167fc7,0x3b7259b7,0x3b2d7d56,0x3a28acf0,0x3af545ea,0x3b3da938,0x3a7af712,0xba82a077,0xbb02d93d,0xbb75e1a8,0xbb8e1dfc,0xbbfcce91,0xbbb10262,0xbbab71de,0xbb5e045a,0xbb983598,0xbbc3610d,0xbbfa848f,0xbbddb880,0xbc3280a3,0xbbd7f687,0xbb9e549a, +0xbb6c344f,0xbaf019eb,0xb93c117c,0x3acceacb,0x3b46b5d9,0x3b568e78,0x3b5fe80d,0x3b685858,0x3b67effe,0x3b5af6a9,0x3b59e666,0x3b5ed02d,0x3b6fb0dc,0x3b79cd48,0x3b77ebf2,0x3b79c30a,0x3b8b4cbd,0x394cec61,0x3ad4d0a3,0x3909390a,0xba857155,0xbb174a00,0xbb11f430,0xbb0d7757,0xbb4a0752, +0xbb97b9a4,0xbb6bb212,0xbb7d1ca4,0xbbb1b4ad,0xbbb63aba,0xbbe046a1,0xbbea1fee,0xbbbbba75,0xbb940082,0xb9b842ee,0xba51e524,0xb927f98a,0x3980e972,0x3a1a79d0,0x3a74fb60,0x3acaca30,0x3ac81ea3,0x3adc3001,0x3aed06d5,0x3afe0c9c,0x3b09c5a9,0x3b0fa787,0x3b0fd474,0x3b0d45a1,0x3b0d2103, +0x3b10247f,0x3b00bed2,0x3b4844c6,0xbaa885cd,0xbb8c11d5,0xbbb7cb29,0xbab6413b,0xbbacf533,0xbbd63514,0xbbde680b,0xbbd9ca43,0xbbc9698b,0xbbe4201f,0xbbe89cb8,0xbbe713d2,0xbbd2d55b,0xbb48c67c,0xbbec708c,0xbbeb15cd,0x3aafad5f,0xba044c73,0x3be412eb,0xbacb6df9,0xb98e34ea,0xba318f02, +0xba5100e0,0xba06fcc6,0xb9cf4a92,0xb931097f,0xb9fcbd95,0xba25d3e1,0xba0ff6b2,0xba93a4ab,0xbaabf77e,0xbac4cfb2,0xbaa29499,0xba7cc38b,0xb9fa1ab7,0xb987772d,0xb827d1ff,0xbb03f7e4,0x3bd0c37b,0x3c02e1ec,0x3b8c4a4d,0x3b99b649,0x3c05c880,0x3bb880af,0x3bd3f8bc,0x3bd9b368,0x3bb39021, +0x3be45860,0x3be7a06f,0x3bd205ff,0x3c0ac60c,0x3b982093,0x3ba4c089,0x3c170bbe,0x3c083a0d,0x3ad56e4a,0xbaa47174,0xba2046d0,0xba9884ff,0xb99c9b93,0x39840fad,0x3a3e77e6,0x39411ae2,0xb987e7cd,0xb93c4377,0xbafaf497,0xbb47b6e3,0xbb658510,0xbb51d80c,0xbb0141ac,0xb9d995d0,0x3a82090c, +0x35ef932c,0x3a9678c2,0x3bc7ea0f,0x3a6d4dc2,0x3b18d339,0x3ad1db82,0x3b4474e6,0x3b83a4f2,0x3b60ffaf,0x3b98c193,0x3bbcebda,0x3b5df4f6,0x3ac4421f,0x3b063fe2,0x3b445a41,0x3b99c61c,0x3b8e4508,0x3adc1274,0x3c0e286d,0x3bab078a,0xbabc73b5,0xba4cb7ee,0xbb14e2d6,0xb96ad9a9,0x3a8588c8, +0x3affb25e,0x3a1f4a60,0xb9bf2ffb,0xb9b70183,0xbb53850f,0xbb94a185,0xbba1ed70,0xbb8dd298,0xbb20217b,0x38abb4b8,0x3afa4d59,0x39f071cb,0x3b1ad0ea,0x3b99bdd8,0x3af6a760,0xb8aeb25f,0x39fb9d43,0x3b7906d1,0x3b824976,0x3be27b56,0x3b7a1e61,0x3bdbf3c0,0x3b54659e,0x3bb7d3e3,0x3b0db978, +0x3b9ca6d5,0x3b92efe4,0x3b8bbabf,0x3ba88dc5,0x3bd865a8,0x3b977721,0xbb0a5a06,0xba75f078,0xbb41928c,0xba343aa5,0x3b0a872f,0x3b8dd928,0x3b355312,0x3ab84eb5,0x3ade1491,0xbb2b65fb,0xbbdf51ed,0xbc0a3d34,0xbc049b3e,0xbb89b005,0x3a148225,0x3b794ac4,0x3abddfa6,0x3add45a5,0x3b6977a7, +0xbb296ec6,0xb95d9f3e,0xb9a3444d,0x3aa68d60,0x3b6647f4,0x3bf2bd6a,0x3c0d45eb,0x3b68392d,0x3b8c945b,0x3b4495b4,0x3a811ab8,0x3b92a9bf,0x3bd5f234,0x3b04fdab,0x3b42c96c,0x3cb41337,0x3c4ce2e7,0xba267ce9,0xbb0cd8df,0xbb87ee13,0x3bef26f3,0x3c0e18fa,0xbad1c0a4,0xb9f157ff,0xbbed234d, +0xbc8723d4,0xbc8a8d4f,0xbc42d7d1,0xbabb93bb,0x3b167d51,0x3b4fb1ad,0xbac46541,0x3ab336e5,0x3a8d2832,0x3bdf259b,0x3c26e79e,0x3b89e7af,0x3ba25692,0x3b22fddb,0x3b11b99c,0x3b89d96f,0x3a24149d,0x3b4f9326,0x3c3eb14c,0x3c0ada20,0x3b94ef50,0x3b56e353,0xbad4ce52,0xbaf50194,0x3af1ac52, +0x3c805650,0xbc9e6b1d,0xbc41ce73,0xbbdf23b9,0x3b3e3c9f,0x39d75b8e,0x3be31a57,0x3bc24c83,0xbb1cc542,0xbb21caab,0xb9fb4150,0x3bd82800,0x3b2c8580,0x3af25bd8,0x3b7d34fc,0x3baeed26,0x3beef74c,0x3bf2f94a,0x3b96f8fc,0x398b624c,0x3b61c330,0x3b2ec059,0x3acddcfc,0x3b497e3e,0x3a9a2fca, +0x3b0d6384,0x3b146b10,0x3bd08a94,0x3bec9a5f,0x3b8ce8cf,0x3af2ff5f,0x3b35f23e,0x3b8a07f9,0x3b8905df,0x3bb94b38,0x3c60c431,0xbc8017fd,0x3c6910ec,0x3c6ca64c,0x3c5a3058,0x3c493245,0x3c5ff4b1,0x3c3f1e6d,0x3bc02cde,0x398b0d99,0xbc2774f4,0xbc306042,0xba1188cb,0xbb1e5162,0x3a8c4ba9, +0x3b594420,0x3aa0be1a,0xba24aabc,0xba80d191,0xbaddbfe5,0xbb96d981,0xb9af1a69,0x3a996b65,0xb9aeb3a2,0x3af7c644,0xb8528059,0x3ad33bdd,0x3b63bfd6,0x3b02dcad,0x3abc53f5,0x3ab49640,0x3b501207,0x3b44f48e,0x3aa07a12,0x3bba68dd,0x3ba6d987,0x3c0121d3,0x3c3189f2,0xbb5dad12,0xbad51195, +0x3b791e03,0x3c34c83c,0x3c54a117,0x3c83cd37,0x3c844328,0x3c44f6b8,0x3c1bd83c,0x3bf4928b,0x3c309020,0x3b2fffd7,0xb95c8803,0x398fcfd9,0x3b39ded4,0x3b70f474,0x3b668faf,0x3b670c2d,0x3ad2adcc,0x3b24252a,0x3b1f33f3,0x394df209,0x399a3dba,0xb9dbb989,0xb9a295d2,0xb65aeed0,0x3af8ce20, +0x3b63d365,0x3aee5ffb,0x3b09ccf2,0x3a7d09a8,0xbaf21704,0xbaa48d49,0xba50d0b1,0xbb17252b,0xbb899df2,0x3a35a32d,0x3bb19791,0x3bb7f10c,0x3be520a9,0x3bb492f8,0x3ba81b70,0x3a599b43,0xbbc33173,0xbb224c4f,0xb9698eca,0x3b863434,0x3b8c577f,0x3b891b55,0x3b852c7a,0x3af4933e,0x3a36d8cc, +0xba6d8935,0x39ebf69b,0x39cb078f,0x3a937a7b,0x3b284c38,0x3a0224dc,0x3984494e,0x397f212c,0xba11740c,0xbb44ffcc,0xbaf40530,0xbb2df186,0xbae5b74c,0xbb0fdf11,0xbb278f96,0xbb5098cc,0xbb960fce,0xbbae9f9b,0xbb99399a,0xbad2f561,0x3a64e3a4,0x3a5694a7,0xbb05ef4c,0xbaf11742,0xbb3c66e0, +0xbb82db3d,0xbb76caca,0xbb1ce416,0xbb2e4977,0xbb59a97d,0xbb6beb60,0xbad4c583,0x3a299939,0x3b4158bd,0x3b1d26fa,0x3a9e1740,0xbaa43f95,0xba50e60f,0xba21fa37,0x3a93f053,0x3ad04b51,0x3af8744b,0x3b8c4a70,0x3aabb33b,0xbac184a0,0xbb8ae6ad,0xbbbd88ed,0xbbce077f,0xbbf478bf,0xbc006a8c, +0xbc14d072,0xbc2d50db,0xbc2dd50e,0xbc143bab,0xbbeb751e,0xbb185475,0xbb087372,0xbb84c45c,0xbbb655e1,0xbba6189e,0xbbbd50db,0xbbb05ecc,0xbbbbf08b,0xbbc25d51,0xbb8ef581,0xbb25af25,0xba85284c,0xb9fe712d,0xb7b042fc,0x3a94160f,0x39d79c3d,0x39577fce,0xb9c88439,0x3a3de82e,0x39d4b95c, +0x3b2a0743,0x3b8c352e,0x3b5c081c,0x3b5761cc,0x39bc7bbd,0xba588915,0xbb849953,0xbb7267b1,0xbbdc83be,0xbbb9b4ad,0xbbcf9ea3,0xbb7c9ffa,0xbb5cb127,0xbb3408ab,0xbae1874a,0xba48ea74,0xbb143470,0xbb9a8d92,0xbbc2884f,0xbbb24a25,0xbb8c92df,0xbb68561d,0xbb2cae9e,0xbad52632,0xba2914c6, +0xba442636,0xba8a9f8a,0xba8beb11,0xba5c2158,0xb9a45d8e,0x3a2465f2,0x3a21ad8d,0x3a45ea77,0x3a2c75f6,0x3a4ac05c,0x39dd9ef2,0x3a2ed0a6,0x3b5349f5,0x39ac8392,0x3a53c570,0xb8c96473,0x397be77e,0xba6665c4,0xbb029da9,0xbae3749f,0xbab20b09,0xbb685609,0xbbab505e,0xbbac4782,0xbbbeab80, +0xbbb2ae7c,0xbbb0e553,0xbbd582c4,0x3a0b0010,0xbb79a513,0xbb3b7d53,0xbb2e117c,0xbb1ee8de,0xbb0fa453,0xbb052fd9,0xbae15310,0xbaec9033,0xbad58473,0xbac466d0,0xbab110b0,0xbaab557d,0xbaa47507,0xbaa7d075,0xbaa006f3,0xba964de6,0xba93a378,0xba708f53,0xbaef07bd,0x3b2473f7,0x3b85a649, +0x3b36702d,0x3ac2c9a1,0x3b7ba7c3,0x3b214527,0x3b2520f0,0x3b0f4786,0x3ab6f83a,0x3af4bacb,0x3adf3e88,0x3aa3696d,0x3b048b99,0xb8f9aada,0x38899a57,0x3af3513c,0xbad41311,0xbb2ed138,0xbbd37b07,0xba3a0b35,0xbb0b6c4d,0xbb3aeb5a,0xbb411c2b,0xbb7ea5c1,0xbb802162,0xbb3e81cc,0xbb565b5d, +0xbb51416f,0xbb364e00,0xbb5c3e61,0xbb6c9f52,0xbb845749,0xbb686f51,0xbb501b38,0xbb2d289c,0xbb1cd427,0xbb042c22,0xbad0f176,0xbbe2f046,0xbbc429d0,0x3a8cfb91,0xbbe15863,0xbbc908a8,0x3abf5d13,0x3a5cb234,0x3a40043b,0x3a6d72a9,0xb8f0877f,0xb9d0a41c,0xba73a273,0xbbbb6e39,0xbbc677a3, +0x3a90228b,0xbbbbfacb,0xbb5bebdf,0xbb1d2c0d,0xbaf375d3,0xbb8070aa,0xbb86d533,0xbbe8cd77,0xbbf225b5,0xbb9a050b,0xbba76026,0xbb9469d4,0xbb6f405d,0xbb9868ae,0xbbb539cc,0xbbd968f6,0xbbc876b4,0xbbb1b6ec,0xbb82bff1,0xbb4cf876,0xbac6dcd3,0xbb6c0367,0xbb4e2ab7,0xbb5a8fd6,0xbbb2b26a, +0xbb5c7bb4,0xbb33abb2,0xbafd7033,0xba939bc8,0xbb12ef2f,0xbb504efd,0xbb0f5a2e,0xba9c3847,0xbb2e5158,0xbab6d1d8,0xbabe5013,0xbb79f590,0xbb2a4537,0xbb17ea04,0x3acd32ed,0xb9a6aacb,0xbb9dade1,0xbb927a01,0xbc2e7296,0xbc40911f,0xbbbcc4fd,0xbbfcc11e,0xbbde2700,0xbba9e328,0xbbfb502c, +0xbc142771,0xbc3969dd,0xbc1a53e5,0xbbf8df75,0xbb9a15b8,0xbb26f109,0xb9d0566f,0xbb13fa50,0xbb849f2a,0xbb686cea,0xbb83b37d,0xbb5ea49d,0xbb0df766,0x3ab943dd,0x3b0c39f8,0x3b8594cb,0x3a270345,0x3b62af7a,0x3a8e548d,0xba839569,0x3a819abf,0x396b9c6a,0xbb10ce84,0xbaab2ba4,0xbb1e3a85, +0x3b0453f2,0x398c830a,0xbb97a551,0xbba4cd2a,0xbc83f7d0,0xbc937d8c,0xbc1000c2,0xbc2a54f5,0xbc090811,0xbb931696,0xbbfa3a22,0xbc44aa83,0xbc83e8bc,0xbc817119,0xbc553bdb,0xbc0639fe,0xbb849323,0x391431d5,0xbb0fc832,0xbb30803f,0xbada0ca8,0xbb806603,0xbaa363f4,0x3ad4c50d,0x3ba8bfc9, +0x3c00216c,0x3c0d6bb6,0x3bb92c0f,0x3b8580f4,0x3b8aae7f,0x3af80563,0x3babc92b,0x3b8af69f,0x3a0c41c9,0xba8ad9fe,0x3bd08723,0x3b8275df,0xbabfd3fa,0xbbea923f,0xbc1ca4c7,0xbaea8b47,0xbb161ec8,0xbc4f6c76,0xbb853db5,0xbbbd467e,0xbc51238c,0xbc2d2c61,0xbbb3a407,0x3b78fb37,0x3ba29731, +0x3ba8b771,0x3bb829e8,0x3b1c8545,0x3aaf18b5,0xbaa854f5,0x3a8a59b0,0x3b85dc28,0x3b23a97b,0x3acf8374,0x39cc1985,0x3b537143,0x398affb6,0x3b53d5c4,0x3c4e8a58,0x3bd87d4e,0x3b246683,0x3a1687c2,0xbb9d5951,0xbbef47a2,0xbb12db8d,0x3b9be275,0xbcec1008,0xbc42eb6a,0xb8b6cec1,0x3b0ed1c1, +0x3ae18d61,0xba51e2fa,0xbb84d665,0xbc14b0d0,0xbc04f6ec,0xbb672768,0x3be5cdb3,0x3a8cc145,0xba8d42a8,0xba6a6d42,0x3a4dcc5c,0x390aaee7,0xbb7aaf63,0xbbb3b8af,0xbb68f9c3,0xbaa7d27c,0xb9c7cd27,0x398d6edd,0x392345c4,0x3a858b12,0x3b0f56b0,0x3b184e23,0x3bd9299e,0x3be7cd7d,0x3b6463ea, +0x3b087d7f,0x3b18c579,0x3b7a3aba,0x3b665c4e,0x3bb3467c,0x3c1fad32,0xbc9acc18,0x3c6f5ba0,0x3c730920,0x3c3ee3e2,0x3b9c9924,0xbc00c55e,0xbc2d039a,0xbc7f8312,0xbc9e0c04,0xbc5cd86c,0xbc01250e,0xba05eef4,0xbb9a49ef,0xbb8df4ba,0xbb571989,0xbaf2bc1d,0xbab31524,0xba897c9a,0xbad6e903, +0xba8b6e59,0xbb7013f1,0xbb7cfe6e,0xba9a67d2,0xba72038e,0xbae122f9,0x3a5ddeb6,0x3b462256,0x3ae0961c,0x3ac6b865,0x3aa8241d,0x3b48866b,0x3b3e8187,0x3a89ef22,0x3b50c7f9,0x3b8fe860,0x3b9a779b,0x3c435e22,0xbbeff749,0xbbe09e85,0xbc1ec62f,0xbc53ae54,0xbc8763e3,0xbc0889ee,0xba526808, +0x3c0ff7ee,0x3b1fb461,0xba8e1c3b,0xb8170943,0xbbb241f2,0xbbe398de,0xbb9f16ec,0xbb285ee1,0xbafa9db6,0xbaa040e6,0xba4f1e1a,0x3a5f2ce4,0x3a5cf97e,0xba497c24,0xba906762,0xba881697,0xbac2e1cc,0xba990a60,0xba4e7c8f,0x3af1c6d2,0x3b1a3c29,0x3abb1ea7,0x3adfe047,0x3a7a1bb8,0xb960055e, +0xbaaa3771,0xba74e8e7,0xbb13b1ea,0xbb93c7fa,0xbbc908f1,0xbc268484,0xbc7ec33b,0xbc8174bc,0xbc54f8c3,0xbc6cf0e6,0xbc7c21a1,0xbc836283,0xbc388257,0xbc1a43a3,0xbc30c57c,0xbbe92095,0xbba55260,0xbb871ad4,0xbb13a623,0xba5c92f9,0xb8c3fcf2,0x39bafce9,0x3a0e0e45,0xba5c5068,0xbb0ac90a, +0xba8df41e,0x39a60957,0xb9d63bc9,0xba900380,0xbb5e39cd,0xbb443fd9,0xbb4542f8,0xbb82b1d6,0xbb497a30,0xbb86174b,0xbba6096f,0xbbaf72d4,0xbbd091cb,0xbbce71a1,0xbc14b769,0xbba23364,0xbc0ca2e1,0xbbe246bb,0xbbc496f2,0xbb822b24,0xbb71252e,0xbb2d027f,0xbb633ea3,0xbafa8dd5,0xba8c2e18, +0xb91263d9,0xba3042fb,0xbaa2fc76,0xba8379f9,0xbb327bf8,0xbb4c4681,0xbb17dcc2,0xba7b433d,0x3a015892,0x3ab045cb,0x3a94b5b1,0x3a68d77f,0x38a221ad,0xbada57ba,0xbb36f510,0xbba24f06,0xbbbe61a0,0xbbd881c4,0xbbd311eb,0xbc033880,0xbc2033a1,0xbc3d7f47,0xbc43ba15,0xbc474d86,0xbc360c8e, +0xbc0c497b,0xbbec9629,0xbbaccc1c,0xbb91f6ac,0xbbc51663,0xbbd41100,0xbbfaa4b5,0xbc0d0bff,0xbc1b5437,0xbc033872,0xbbd6590d,0xbb9f0635,0xbb572dca,0xbac6ae00,0x39e7bcd7,0x39bf2112,0x39da7795,0x39d63129,0x39b3f5c5,0x3a601e54,0x39a8b9ef,0xb92e6781,0x3a903fc8,0x3b0e522d,0xba1f4dbf, +0xbb355c82,0xbbb61ec1,0xbbc4415c,0xbbeb4415,0xbc13e0d6,0xbbec9b0b,0xbbd7bc6b,0xbbb726f2,0xbbb2e365,0xbbacf937,0xbba4ede3,0xbbb82aee,0xbbe41979,0xbbde92bb,0xbbbcb856,0xbbb77919,0xbba05544,0xbb8b96e2,0xbb63094e,0xbb4fbce7,0xbb0b7f94,0xbab9dffc,0xba4e366e,0xb9075a69,0x398824c1, +0x3a1cebef,0x3a167220,0x3a38c777,0x3a5fbb94,0x3a6a0c52,0x3aa3954a,0x3a7552d1,0xb9c31e62,0xbabc9293,0xbb55018f,0xbb51a315,0xbb896d5f,0xbbafe0a6,0xbbaaacd6,0xbbca91b4,0xbbd677fe,0xbbd38840,0xbbceeca2,0xbbe9a701,0xbbe68abc,0xbbe9c6e4,0xbbfe0f92,0xbbe27bb5,0xbbcf74dc,0xbb6a4816, +0xbb6c169a,0xbb65ecd2,0xbb5b707c,0xbb5a8d42,0xbb5695b8,0xbb503ae3,0xbb3b5cf0,0xbb28b464,0xbb13ca58,0xbb01b751,0xbad9ca33,0xbaa69ccc,0xbaab1a4e,0xbaaa9421,0xbaa6e2f2,0xbaabccbd,0xbaac552d,0xba572f37,0xbb82beb3,0xbb89efd4,0xba1af52b,0xbba48a98,0xbbadff22,0xba97405d,0xbad26f0a, +0xbaed7330,0xbaeebd1d,0xbb2926d9,0xbb3cc5b2,0xbb47f58d,0xbbc2362b,0xbbc53959,0xbb0fae92,0xbbc26e9b,0xbb4743a0,0x3b7ed0fa,0x3bc98fab,0x3b9d9c69,0x3b55aa2b,0x3b5e7bb2,0x3b3c1027,0x3b7a36f7,0x3b8a969f,0x3b9c2f29,0x3b8dede5,0x3b8784af,0x3b83dc29,0x3b6de3fc,0x3b6084c8,0x3b4b3f09, +0x3b5d3482,0x3b6c495d,0x3b820912,0x3b8c5b00,0x3b79a7cc,0x3b87c17c,0x3baf405a,0x3b00f1f3,0xbbe343e0,0x3bbb2150,0x3b2c7e04,0xbba451d4,0xbb9412a6,0xbb8b5786,0xbb8c726b,0xbb6cb157,0xbb692c63,0xbb8047bc,0x3b580d33,0x3bdb1b90,0xbbbe91f0,0x3b2fcbd5,0x3a74d2f2,0x3bdaad00,0x3b37b6f5, +0x3b3ca76c,0x3af7970b,0x3b8a72c5,0x3bb6ce42,0x3bdef90e,0x3bcb1476,0x3bbed4eb,0x3bb6410d,0x3b952652,0x3b6a9db1,0x3b31100a,0x3b4c36ba,0x3b824715,0x3ba88986,0x3bc86c9f,0x3bad3701,0x3bb247a3,0xba1eb2d6,0x3afdb400,0x3b2e4999,0x3a97572e,0x3adff114,0x3baf36a3,0x3ba04600,0x3bcc0aaf, +0x3bb5e733,0x3bbb0f1b,0x3b940a91,0x3b27ceaa,0x3b95e980,0x3b5c4cb5,0x3b2debbb,0x3b9b5f62,0x3bf4a1d1,0x3c0c1c8d,0x3b51dbe7,0x3b125761,0x3a0d9ee1,0x3b958f8e,0x3bf0e62b,0x3c277e7c,0x3c0b89d4,0x3bf96457,0x3bdd48a5,0x3b9d5006,0x3b5e353f,0x3b03ebb0,0x3b3d4c89,0x3b8fca9f,0x3bd427dc, +0x3bfaab2a,0x3beeac19,0x3b92679b,0x3b3c75f3,0x3a9efbce,0xb87e8f1d,0x3a3b7db8,0x3ad480f9,0x3ba58251,0x3b8f9d42,0x3bad8efa,0x3babfdfb,0x3b94532e,0x3b94b522,0x3afdac6b,0x3b8c5950,0x3b87f220,0x3b05bfcd,0x3bbdc0f2,0x3ba8c25c,0x3c01cf10,0x3aa86415,0x3a09c8e5,0xbaef401b,0x3b67029d, +0x3c093a62,0x3c5d11d5,0x3c3e13e4,0x3c311984,0x3c298a05,0x3c0251a9,0x3b9176f9,0x3ada262e,0x3b18e413,0x3ba2f7d0,0x3c0c0ff1,0x3c2ffd63,0x3c0f7d1c,0x3b9c4537,0x39ee0474,0xbaa2ac1c,0xbb1bd09e,0xb99a6d61,0x3ad31e1c,0x3b9d32d0,0x3c000683,0x3c043a08,0x3b8fe12f,0x3b96c042,0x3b859604, +0x3aadcadc,0x3bc60838,0x3beb0a30,0x3a58c612,0x3b8c8d70,0x3c9f6ce7,0x3c8f8f0e,0x3c18ce29,0x3bafa6ec,0x393e0bd8,0x3c566031,0x3c814397,0x3c08224b,0x3c314c98,0x3b96d440,0xbbb210e7,0xbbdf870a,0xbbac51f9,0xbadf2ad2,0x3b8e4862,0x3bd42534,0x3ba9a93d,0x3bfa8c15,0x3c1859ff,0x3c1ce61e, +0x3be845e5,0x3bce471a,0x3b9f54d0,0x3b4b1432,0x3ad19407,0x3b2b522e,0x393e9cc6,0x3b6f4ea6,0x3c52fc22,0x3bde4f5a,0x3b1fbb93,0x3aefbf18,0xbb8e9d4a,0xbb9118b5,0x3b3cf51d,0x3c806ef4,0xbca7cd31,0xbbd8e9ed,0xbbb9cac8,0x3b32f0bc,0x3b825139,0x3c12da21,0x3be60d1b,0xbb003f0c,0xbb625770, +0xba9f617a,0x3c0fb692,0x3b28df5f,0x3ab2a723,0x3b94845d,0x3c11ec91,0x3c52d081,0x3c7103e0,0x3c1d55ab,0x3bb09b8c,0x3b7329ce,0x3add8fb1,0x3b0f3106,0x3b547073,0x3ae99940,0x3b33c1d8,0x3b3d2afb,0x3bd7b0cc,0x3bdcafdd,0x3b52cebb,0x3b24e736,0x3b38a049,0x3b7b4259,0x3bac1ff8,0x3c0a47ef, +0x3c4b3483,0xbc674c68,0x3c89acc2,0x3c990bf3,0x3c76d315,0x3c8291c6,0x3cc47734,0x3cf65f57,0x3cdf8219,0x3c69eda2,0x3ba3ec03,0x39955aca,0x3ba6051f,0x3c290500,0x3c843cb5,0x3c92e37e,0x3c6dbf02,0x3c02480d,0xb9a07548,0xb9aabfda,0xba176584,0x3ab0a1f3,0x3afcaedf,0x3ab8088a,0x3ae900c1, +0x3aabaca8,0x3b17fb22,0x3b3cb457,0x3afa1d16,0x3adfdbdb,0x3ad69733,0x3b6fc310,0x3b87acc3,0x3b765c0a,0x3ba135f1,0x3b78737b,0x3bd0e07f,0x3c59f239,0xbbec7194,0xbb910e02,0x3bd80a0c,0x3c925692,0x3cf5e5f5,0x3ce81d70,0x3cc86655,0x3c6c02a1,0x3c5d5711,0x3c374eb0,0x3c396305,0x3bd23db6, +0x3b65f0d9,0x3b3e1707,0x3bedb201,0x3c1ce63f,0x3c154143,0x3bfbe599,0x3b8d375b,0x3b37c02b,0x3a3f871c,0x3a23a670,0xb98f20e5,0xba545447,0xb9f08d7d,0xb98bf0a1,0x3a863f5f,0x3b22d079,0x3adcc56e,0x3ab83128,0x3a16e901,0x397a3922,0xba401405,0x3a8900c6,0xba85e43a,0xbba0a84e,0xbae62ffc, +0x3c2be504,0x3c9428cb,0x3c8a460c,0x3c8580e9,0x3c73a8c5,0x3c498287,0x3be9111c,0x3bf51264,0x3bf1af87,0x3c1a81da,0x3c0f84bc,0x3c053693,0x3bef3783,0x3b741769,0x3aebe38d,0x3a8c0816,0x3ad5758b,0x3b1851fc,0x3b2d1518,0x3aeca2a9,0x3aea4911,0x3a9c7657,0xb994061f,0xba88730d,0xbb0ce6cd, +0xbb2dc53c,0xbb3ee3be,0xbb078bc3,0xba8fa985,0xba9b06fc,0xbaa205a4,0xbadfb1b1,0xbb20bdfa,0xbb7cdd8c,0x3b061835,0xbbb33232,0x3b23e814,0x3b9ed298,0x3b91853d,0x3ba531f3,0x3b8cdb50,0x3ba09e83,0x3bf5fd6d,0x3ad8f18f,0xba635729,0xba86c0f3,0x3acd45e1,0x3b8219fc,0x3bbcd7bb,0x3b8a0dc2, +0x3b636eae,0x3b018bde,0x3b1a0619,0x3ae63921,0x3a290d39,0x3ac6e3e4,0x3af5d294,0x3b46ac17,0x39b59c07,0xbb1075e4,0xbb924c79,0xbb9a671a,0xbbaf72df,0xbbd229a3,0xbbe9a111,0xbc09ba67,0xbc1bf525,0xbc2e66de,0xbc14fd1a,0xbc081a3d,0xbb04dd49,0x399f38c8,0x3a0c6c67,0x39bf3281,0x395298f2, +0x38d71416,0x399db0ad,0x3603e57b,0x398b5c6d,0x3a87b915,0x3b11a5f8,0x3b2f8c14,0x3ad69d02,0x3a05e27b,0xb93f90cb,0x38f6a3d6,0x3a012bfe,0x3a3a5f04,0x3adf2e80,0x3b20c091,0x3b74a83a,0x3b50df48,0x3b1d0ae3,0x3b20dc72,0xba0aff32,0xbb49dfef,0xbbc76fbf,0xbbda3dda,0xbbe2aec8,0xbbf252ef, +0xbbddf127,0xbbc2e1ee,0xbba06a3f,0xbb5eaa42,0xbae9ddce,0xba6417b8,0xb9c55875,0xbbda6092,0xbb0bccd4,0xbaeaab6d,0xba33ac72,0x38e7dbbd,0x3a944708,0x3b0fd72f,0x3b496ebc,0x3b0e538a,0x3a8b3206,0x39a6296e,0xb992a106,0xba0e7416,0xba5b2f93,0xba34007e,0xba36b9c2,0xba4b667d,0xba408686, +0xbaa81da9,0xb9fac676,0x3849ba79,0xb934db7a,0x39ea5b5a,0xba83b036,0xba16c91f,0xb90da2a9,0xb9e3ac79,0xb9aaf2b3,0xba9773a1,0xbacf2169,0xbb2cdf19,0xbb7e732b,0xbb744d40,0xbb9873e0,0xbb87cbec,0xbb5abfe4,0x3a1cc0d7,0xb9d065f9,0xba277d8b,0xb913dcc4,0x386d10b9,0x39903f69,0x39e73456, +0x3a7c2cca,0x3a0380aa,0x39d729e8,0x3981f33a,0x38f1cffe,0xb8a55cb5,0xb9b351a0,0xb999648b,0xb988dfdb,0xb97312db,0xb90beee6,0xb8f4cc4d,0xb9cd8bdd,0x3ad721fb,0x39d1712f,0xbb85ea89,0x3ad4adf2,0x39778184,0xbba56458,0xbba2ba84,0xbba1a615,0xbba07e0e,0xbb9a91d9,0xbb97f31f,0xbb954c8b, +0xba4a4690,0x3a896353,0xbbb9d812,0xbaa174e7,0x38ff95a7,0xbbc81f3f,0xbb754029,0xbbcf4922,0xbba580ee,0xbbc4e124,0xbbb6e261,0xbbe36385,0xbbeaa2a3,0xbbd3777c,0xbbddff91,0xbbdb490d,0xbbd0e84e,0xbbd553e3,0xbbda07a5,0xbbea49ee,0xbbe4e0b7,0xbbddda20,0xbbd065cf,0xbbc362ef,0xbba69dbc, +0xbbdc553f,0xbb86e419,0x39f03ed8,0x3c0f8c57,0xbbbf8f8d,0xb7666737,0x3c1282f5,0x3c0cafe7,0x3c0b4c43,0x3c003aa6,0x3c03b395,0x3c013e68,0x3be2be23,0x397f4eaf,0xbbc2c991,0x3c09d0ca,0x3ab1d84d,0x3b79d585,0xbbc9c664,0xbbb5acea,0xbbd3041e,0xbbc0236a,0xbc183b66,0xbc24be32,0xbc09298d, +0xbc140d8e,0xbc0bdc5b,0xbbfcf9f8,0xbbfa2b9d,0xbc0a3758,0xbc24dd52,0xbc293a93,0xbc22ab22,0xbc0f8360,0xbbe47ff6,0xbbbf4ae8,0xbbceb254,0x3b26bc99,0xbb89abd9,0xbb9ac2b3,0xbb474251,0xbae0bdbe,0xbb0f3636,0xbb2ee699,0xbb581cf4,0xbae0944a,0xbb554edf,0xbb571c92,0xbb39b8a6,0xbb0b1293, +0xb8927a18,0xbb28b9f8,0xbb9e8fb1,0x38310948,0xbae30687,0xbbb31dff,0xbbe7d675,0xbbb6e4a1,0xbc4a85ff,0xbc673a64,0xbc2adf87,0xbc49d56f,0xbc39f2c8,0xbc24e44b,0xbc277372,0xbc37df1f,0xbc64c58d,0xbc646fe5,0xbc51c6a6,0xbc2c7c6c,0xbbe2b96a,0xbbc135f5,0xbb57299c,0xbb05c1eb,0xbb56591a, +0xbb71f4eb,0xbb841474,0xba820432,0x3a19b821,0x3b20127e,0x3a0367d3,0x3b0950a7,0x3b0af6e7,0x3b279af3,0xbabd5ce1,0x3abd5000,0x3a21b61a,0xba9dc60a,0xbaa21ac4,0x38e72783,0xbaf07e9e,0xbb9606b4,0xbbb5aadb,0xbb828764,0xbc6dda55,0xbc8fe6bf,0xbc4f6ceb,0xbc72f813,0xbc5a74dd,0xbc229f36, +0xbc1b06a7,0xbc56d551,0xbc99bf1e,0xbcaa947b,0xbc9ef4e6,0xbc7ac7b7,0xbc1223f2,0xbbb4e3d8,0xbb7b5321,0xba394186,0xbb98520a,0xbb45de7c,0xbb606ad7,0xb9cea684,0x3b888279,0x3bd3a0ad,0x3c018177,0x3b903ff2,0x3b8c9d55,0x3b7564a6,0x3ab72cf8,0x3ba516ac,0x3b8dc7ac,0xbac0f1f5,0xbb3ac240, +0x3c567d0b,0x3a53aaf2,0xbc16bb02,0xbc6a1772,0xbc90dbc0,0xbc348952,0xbc2bbe38,0xbc9c78f7,0xbc39bfc5,0xbc4ce088,0xbc9f3874,0xbc92f305,0xbc58d7b4,0xbba7a171,0xba545199,0x39e29870,0xbb4c576a,0xbb5fffaf,0xbba76de3,0xbaed7564,0x3b8cf97c,0x3aa535af,0x3aba0eed,0x3a8b0070,0x39da230a, +0x3afb2dd7,0xb9e814e3,0x3b48c41e,0x3c49c55a,0x3b98ded7,0x39fee693,0xba34d2ac,0xbbfb76b4,0xbbe6af3f,0x3ad93a1b,0x3c2ec17c,0xbccf2625,0xbc818f36,0xbc2b1479,0xbb14bd00,0x3ba90107,0x3ab0765c,0xbaea3f85,0xbbb63fcb,0xbc164084,0xbbcb0c5c,0x3bd3e18a,0x3ab053de,0xba5d0010,0xbae7229c, +0xbb219b71,0xbba03999,0xbc335c51,0xbc0be18e,0xbbedd020,0xbb0099ee,0x3aea9231,0x3acdcf77,0x3a9e7ce9,0xba238f4d,0x3a1ad3a1,0x3b28ba0b,0x3bcb4417,0x3bc78f02,0x3b133d84,0x3ad93921,0x3b03fb36,0x3b36052d,0x3bb66c0d,0x3baa201b,0x3bc13dc5,0xbcaad853,0x3c91d8fb,0x3c7d5f2b,0x3c2deeb9, +0x3b1d5d7a,0xbc615331,0xbc25831e,0xbc7f7b2e,0xbce5cab8,0xbcb18a4b,0xbc889317,0xbc3666d8,0xbc555d8d,0xbc417e3e,0xbc1a64e1,0xbbdbb653,0xbb7d4e2f,0xbb2da38c,0xbb0f0ad0,0xbb782dcf,0xbba43100,0xbb7d3fac,0xbb0fc332,0xb98da92a,0xb9f9a2d1,0x3aac8856,0x3b073418,0x3a5de373,0x3a2fb68e, +0x3a827f51,0x3b4e2e76,0x3b7bc83f,0x3b853520,0x3b56ade2,0x3af1bfab,0x3bada663,0x3c58b977,0xbc0f85a7,0xbbf2f1c6,0xbc63a0c2,0xbc865220,0xbcbc28e9,0xbc749433,0xbbe57aa8,0x39eb861a,0x3ba0dd59,0x3b8b8329,0x3b0f7566,0xbab0086d,0xbb7290d1,0xbb45dee1,0xbb595ed5,0xbb7dbc79,0xbba21ee2, +0xbb986d05,0xbb64d50a,0xba679e51,0x3aa1e745,0xba75c3dd,0xbb197d14,0xbb0fff3b,0xbad638e0,0xba965e66,0x3921d8b7,0x3a7d1518,0x3a3da9ce,0x39ba3082,0xb9c71955,0xba3b29c1,0xba98fc60,0xbad35c41,0xba4e177d,0xbbd36aa0,0x3b53c957,0xbb733e62,0xbc8c6d06,0xbc935afa,0xbc8d179c,0xbc8f3743, +0xbc88fd88,0xbc76264a,0xbc360286,0xbc27eecd,0xbc466489,0xbbf91194,0xbbb4622c,0xbb9f8447,0xbb0b2f45,0xb98a70d6,0x399e6500,0x3adde6bc,0x3a12e7ca,0xbad79870,0xba1b8703,0xbad62fa8,0x3a38aa4b,0xba8c056b,0xbb107104,0xbb455034,0xbb651b89,0xbb795321,0xbb4648c3,0xbb1df59b,0xbb0829c6, +0xbafba7d6,0xbabce75e,0xbae350e3,0xba33aeef,0xbb652e4c,0xb6194a06,0xbbe0ee74,0xbc0dbb68,0xbbca9d42,0xbbc6944e,0xbbc3d222,0xbbd07a5b,0xbc062303,0xbb94fb8c,0xbaf28332,0x388bc8dc,0xba650830,0xbac7749c,0xbabea79b,0xbb78df60,0xbb8eb0e6,0xbb5cb338,0xbb1e41ce,0xba25143d,0x3ace36e2, +0x3ad9a541,0x3a465cf9,0x3912c7f7,0xbb38bfa3,0xbb7ff40d,0xbba882bc,0xbbb36628,0xbbc1f07c,0xbbea00a1,0xbc077f3b,0xbc1e3767,0xbc32b3a1,0xbc42edd0,0xbc4fb30e,0xbc30c1eb,0xbc13964f,0xbb7f48ee,0xbb85adaf,0xbba5cfe8,0xbbb24ae7,0xbbc9b0ff,0xbbe7e400,0xbc050615,0xbc1c5c03,0xbc051021, +0xbbeb9d2c,0xbbb6d98e,0xbb965236,0xbb5d9ce6,0xbafd4ceb,0xbad25efb,0xba9005fd,0xba62e915,0xba659329,0xbab493f1,0xba504671,0x397d93cf,0x39f2175e,0x3a5e8990,0xbafb3229,0xbb771b3e,0xbbeb8bf5,0xbbda7a05,0xbc0aa60d,0xbc05ef2f,0xbc019ae9,0xbbdeb8c6,0xbbe384a3,0xbbac0b9c,0xbb65f896, +0xbab7df6d,0xbb4e6a48,0xbad1a500,0xbbb12612,0xbbb1fd7c,0xbbc26224,0xbbcd7dc1,0xbbd8eb53,0xbbde0b36,0xbbed080e,0xbbc16ca9,0xbb9fe816,0xbb83a71b,0xbb44da10,0xbb09d4b2,0xbaa4d10a,0xbac468ae,0xbad6ef81,0xbae344df,0xbaeb212f,0xbac9420b,0xbb19f88a,0xba88ac1b,0xbb705d80,0xbb971c4b, +0xbb7578e5,0xbb7b0025,0xbbb06195,0xbbb26b2d,0xbbbd0c0b,0xbba1b4c6,0xbbc4c53d,0xbbc24234,0xbbba771c,0xbbbb3abd,0xbba23c6d,0xbbb5fcdc,0xbbc578ba,0xbb9fc961,0xbbbfcbde,0xbbac07c8,0xbbb6fa63,0xbbb93e42,0xbbbec63c,0xbbc3dee4,0xbbcf999d,0xbbbf73e3,0xbbb495d0,0xbba6b113,0xbb9a7677, +0xbb8e728d,0xbb77d5ac,0xbb8124a8,0xbb812b1d,0xbb81193a,0xbb851d1c,0xbb809ceb,0xbb8cae90,0xbb85c567,0xbae906dd,0x3b4f116d,0xbbb357be,0xbb209bfc,0x3b4eddd7,0x3b3b8ecc,0x3b2282f1,0x3b01db30,0x3aeeaf5e,0x3acba8bb,0x3aa79cf4,0xbb25c5bb,0xbbbbb0af,0x3b0f63d3,0xbb058bba,0xbbca9db4, +0x3b8ba4b3,0x3a2a477b,0x3bdb6c5e,0x3b6280ce,0x3b719ebc,0x3b4988ff,0x3b77ceab,0x3b8a5d57,0x3ba62205,0x3b978b63,0x3b94428b,0x3b933f62,0x3b8cddb8,0x3b86491f,0x3b6cdf80,0x3b7dd310,0x3b8428e8,0x3b8cd79d,0x3b963b5f,0x3b823150,0x3bc469c1,0xb8e2a31b,0xbba89c5c,0xbc3a3770,0x3ac63ff6, +0xbb9293dc,0xbc1ee131,0xbc23b98c,0xbc20c542,0xbc111d5c,0xbc1a3dbf,0xbc1c2367,0xbc1fa491,0xbb739457,0x3b4856af,0xbc2d545d,0xbba41d41,0xbbc0e577,0x3bc96faf,0x3b6ccff5,0x3b29e751,0x3adad22c,0x3b4a7d1f,0x3b8becc0,0x3bcdcaf2,0x3bbdeab9,0x3bc375c8,0x3bc56be3,0x3bc26b23,0x3baaa75b, +0x3b767560,0x3b85c201,0x3b8f316d,0x3ba988b2,0x3bb5802c,0x3bbd6ce2,0x3b9bb9ec,0xbbc97b9a,0x3a1c45a1,0xb98b26f8,0xba70ef48,0xba7f3d04,0x3b5b9a73,0x3b4fbbd1,0x3b6edf0c,0x3b0632a6,0x3b87885b,0x3b8d2667,0x3a74b031,0x3b4ebbbb,0x3999cb45,0xbab8577a,0x3b73141c,0x3b1d7b4a,0x3be80362, +0x3b946a19,0x3abbabf9,0x3a050c92,0x3b17a1eb,0x3b97a369,0x3c1a82a9,0x3bfb1091,0x3bfb0458,0x3bf103ba,0x3bd6d8fc,0x3bab5a9f,0x3b2771d9,0x3b67fb89,0x3b8e652d,0x3bc89a97,0x3bdc8c12,0x3c04d45e,0x3b4d7205,0xba93af5d,0xba8d193a,0xbac6c094,0xba454de9,0xbacbcffc,0x3b8f27b1,0x3a831afa, +0x3ba4f549,0x3b1fe4be,0x3b9f5835,0x3b1aa662,0x39fabec6,0x3b153770,0x3b0385ad,0xbaebd913,0x3b5272ff,0x3a3a8b4a,0x3be022ff,0x3b2d71f0,0xba2b3090,0xbb11b468,0xb97f079f,0x3b46977f,0x3c28d0dc,0x3c10b360,0x3c234ca3,0x3c341d39,0x3c3292b0,0x3c00bd36,0x3b48ec54,0x3b5bc796,0x3b8dbfb0, +0x3be48179,0x3c097715,0x3c166d93,0x3b85de59,0xbb458c9e,0xb99211e9,0xbb82a0b1,0xba744920,0x3a9af469,0x3bb78b00,0x3be46389,0x3bdd877b,0x3bad6c52,0x3b9fe1a5,0x3ba7e2d0,0x3af1bf82,0x3bd93f26,0x3bb5aa1b,0xbacea99d,0x3b16c8dd,0x3c458d74,0x3c6570a8,0x3c37728b,0x3ba2f6ea,0xb9d4c196, +0x3c1b3f5e,0x3c4f2255,0x3c126b93,0x3c5978bb,0x3c1ae77f,0x3a847716,0xba1269b8,0xb9e65b80,0xb9363e52,0x3ba9f024,0x3bf53334,0x3c19869c,0x3c158b03,0x3c3620d0,0x3bebb387,0x3afc90f8,0x3bbd8ef0,0x3b395b89,0x3b3daaeb,0x3a639eb5,0x3a93cfec,0x383e8404,0x3b666b4f,0x3c3fee95,0x3b9847ae, +0x3a0573c3,0xba986744,0xbbf40b16,0xbbea6864,0x3b2836a7,0x3c3dc019,0xbcb313bf,0xbbdc15f5,0xbb63a7e3,0x3b0ea7a3,0x3bf7a15c,0x3bc72adf,0x3b22a75a,0xbb4e5df1,0xbbaab61e,0xbb08cdbe,0x3c1ad46c,0x3ade85d8,0xb95a6850,0x3b448429,0x3bf4a40a,0x3c2fd64b,0x3c3cd797,0x3be93947,0x3bbba6f0, +0x3ad9c30f,0x3991510c,0x3b11adde,0x3b0cdbca,0x3afefb36,0x3b4481a8,0x3b679382,0x3bc95bb0,0x3bb9014a,0x3b0d3348,0x3b11d626,0x3b17ac99,0x3b914cd8,0x3bdd5f9e,0x3c124e6c,0x3ba36f3a,0xbc5e76cf,0x3c826078,0x3c93957f,0x3c57f662,0x3c3d38df,0x3c719890,0x3cd884a5,0x3cde37b3,0x3c47ae74, +0x3c355c0b,0x3bd687f8,0x3ba6b48d,0x3c6254ba,0x3c9dc530,0x3ca29a9d,0x3c88a6c7,0x3c238222,0x3a11c2ad,0x39d8612e,0x3b1f09c9,0x3a691124,0xb8d5509f,0x3aa4e8db,0x39d07b87,0x3adce9f1,0x3b1e1eb4,0x3ae3b793,0x3abb35ca,0x3acd9275,0x3ac18550,0x3b7f97aa,0x3b9d15f9,0x3bb51b3b,0x3b0aa8eb, +0x3a2d1980,0x3b3b71c7,0x3c541bb1,0xbc1cb637,0xbbe44d39,0x3ab7f18a,0x3c1a58f8,0x3cb6df35,0x3c9d23b3,0x3c8266ee,0x3c1b7f6b,0x3c3770d0,0x3c1eb1a6,0x3bebec3f,0x3bb40238,0x3b5fcd6e,0x3b6a7f85,0x3bc74efc,0x3c09e6a2,0x3c09e2ad,0x3be17c2a,0x3b8e815d,0x3ab1860f,0xba9c8909,0x38e66b8a, +0xbaafbff2,0xbae925d1,0xba92a0bc,0xba0c7f38,0xb92d7b89,0x3a0aadf8,0x3a492123,0x3960fe70,0xb9278454,0x3aa6624d,0xba2900d4,0x3a9c8dcb,0xb9ef59d4,0xbbb472b4,0xbb515bd2,0x3bf74c25,0x3c790254,0x3c4c71cb,0x3c56f5de,0x3c37511d,0x3c3d5670,0x3c372888,0x3c01babf,0x3bbecd13,0x3b9bc688, +0x3ba26254,0x3ba3974d,0x3b8df006,0x3b2b2d9d,0x3ae8dd93,0x3b1b60c7,0x3af8e923,0x3b324120,0x3b152f5a,0xb9287e0c,0x3ac26e98,0x3ab07e1e,0xba56ea3a,0xbad6ff37,0xbae2b217,0xbb507fbe,0xbb28faf6,0xbae2b57e,0xb9c1938f,0xba25479f,0xb9e380fa,0xb804c455,0xb995b427,0xbac9c7c6,0x3b07b183, +0xbc31405a,0xba8717d2,0x3b89d0ab,0x3b753b7a,0x3ba4f53d,0x3bca3157,0x3beaaf65,0x3c0dd211,0x3b62c699,0x3ac0656a,0x3a8e508e,0x3b42d40a,0x3b836460,0x3b96fe99,0x3b497be8,0x3b39de93,0x3b6b97a0,0x3b71c243,0x3b4c8785,0x3a6c4f87,0x3aec0e9a,0x3ac02eaf,0xb9bc9f96,0xbad5a3f1,0xbb3b997b, +0xbb850818,0xbb7a0f25,0xbb9b991b,0xbbaf69d1,0xbbd7a424,0xbbfe0169,0xbc0720a2,0xbc2d9aaa,0xbc281bf4,0xbc272cd6,0xbbbe0623,0xba35bd27,0x3ad1389e,0x3b3dd2e4,0x3b149fa3,0x3b3db07a,0x3b2b724a,0x3b2000fe,0x3b33ca9a,0x3b34a3b3,0x3b46fbe6,0x3b3be83c,0x3afa9b83,0x3a5f2a09,0xb9234532, +0x3a23628b,0x3a977295,0x3ad983bf,0x3b02855d,0x3b5a5170,0x3b434249,0x3a164bcd,0x3a0d9ec1,0x3a47f962,0xbaba0464,0xbb91522e,0xbbd1c743,0xbc00bef8,0xbbd49939,0xbc0e1f7b,0xbbe1c764,0xbbf8b431,0xbbd203d9,0xbb9ba61d,0xbb58caa8,0xbb310da8,0xba916899,0xbbe44dd9,0xba997e07,0xba3b9d76, +0xb8d734ea,0x3a1f55cb,0x3abaf27f,0x3b15fa1f,0x3b3f7e29,0x3b199941,0x3ada3163,0x3a92162f,0x3a0a14e1,0x38bbf661,0xba220eb2,0xba0cbcec,0xba2a67d8,0xba2c7be7,0xba407abb,0xba8d6e94,0xb9c80081,0xbb346555,0xba6cb8a4,0xba9231c6,0xbb1277c9,0xbb145155,0xba93def3,0xba197542,0xba4e6084, +0xbb0a1891,0xba75a590,0xba7583a3,0xbb23a2e0,0xbb0dbcf4,0xbb75b4a5,0xbb60725f,0xbade0e4a,0xbb04e783,0x3a3381ed,0xb955e64a,0x39929d9a,0x39d79ebc,0x3a128559,0x3a33cac9,0x3a8fad78,0x3a462c49,0x3a25c19b,0x39fa9f59,0x39b7b11b,0x395e8049,0x37f4ff19,0x3844de39,0x37aa817e,0xb78219e6, +0x387f1eb5,0xb9019743,0x39f1e396,0xbabd609a,0xbb8c9940,0xbc04acde,0xba795bdb,0xbb997848,0xbc163db8,0xbc15f5f2,0xbc1156a0,0xbc063663,0xbc0ac13b,0xbc07b82c,0xbc00a3da,0xbb9757bb,0xba55c7d7,0xbc0650c8,0xbba7d915,0xb8dcf7de,0xbb930ac4,0x3aec0d2b,0xbbc160fb,0xbb77f79c,0xbb90e0c1, +0xbb841875,0xbb9a772f,0xbb9de374,0xbb928c25,0xbb9b4646,0xbb9b0ea6,0xbb9759a1,0xbb91efe9,0xbb947503,0xbba4dc05,0xbba7fb5b,0xbba693e6,0xbb9d9a73,0xbb92062d,0xbb77adb3,0xbbc15a05,0x3ab3d3b1,0x3bad3cf2,0x3bfe6b1f,0xba36a82b,0x3ba57420,0x3c0b0002,0x3c0b3e32,0x3c0c41e2,0x3bfdde67, +0x3c115e99,0x3c116fed,0x3c019461,0x3bad2d98,0xba892f2f,0x3bf9ebc4,0x3bd511f7,0x3beebff7,0xbb85325f,0xbb9c2c6a,0xbb90895f,0xbb813ac3,0xbbaccfbb,0xbbb87a09,0xbba671dd,0xbbbcf8d1,0xbbb50778,0xbba52a8f,0xbb8e6cb3,0xbba68ad3,0xbbe28bd1,0xbbf99f32,0xbbf3b159,0xbbd5b8bf,0xbb9d61d7, +0xbb9b020f,0xbb684ec3,0x3ba61845,0xbb19d318,0xbabded8a,0xba9a26fd,0x398842b1,0x3a02132b,0xba893b12,0xba1bbbe6,0x3b0ac588,0xba0e7da4,0xbad6452d,0xba338539,0xb92fe806,0x3af7f177,0xb70aa2ec,0xbb328011,0x3b86d44c,0xba7475f2,0xbbbafbf6,0xbb9fcd80,0xbb840d41,0xbbd74d2c,0xbbe6425b, +0xbbbdd18d,0xbbea8998,0xbbdc3e12,0xbbce7f1c,0xbba4420b,0xbbbfbca8,0xbc0d0c2b,0xbc210188,0xbc1b27b4,0xbc004147,0xbba06f11,0xbba937a0,0xba893069,0x3a92a239,0xbaaba5d7,0xbb0c1030,0xbb27699b,0x3a2c160d,0x3aecf91e,0x3b3341fc,0xba121b8a,0x3b8f0951,0x3b0879d2,0x3b87bdb8,0xb9cb82cc, +0x3b1ee3ce,0x3aed163a,0x390f2b8b,0x3aae686e,0x3b5ec62a,0xbae93f54,0xbbb8e618,0xbb6fb6cd,0xbb22eee3,0xbbb9a111,0xbbdfdc9a,0xbbc3994b,0xbbfdcc15,0xbbe5d98e,0xbbaa1d6d,0xbb1abfca,0xbbaa6ec2,0xbc39cf08,0xbc6906a2,0xbc63e6db,0xbc316323,0xbbb95329,0xbb9ce667,0xbabd1600,0x3a966a33, +0xbba1ddf7,0xbaf59667,0xbb7730f9,0xbac1fd33,0x3b701b55,0x3ba076b6,0x3bcd8874,0x3b6ecc0b,0x3ba0b053,0x3b7cdc59,0x3aae4d12,0x3ba401a4,0x3b8f35d3,0xbb4e1823,0xbae69af6,0x3c9a25d9,0x3b50d65a,0xbbfbfc9b,0xbc3c884b,0xbc784fae,0xbc165b6c,0xbbd10d57,0xbc26852e,0xbbe64086,0xbc1bfe3a, +0xbc87334f,0xbc918d70,0xbc74a782,0xbc1c1063,0xbb4fd986,0xba75c4b0,0xbbc13980,0xbb7190b1,0xbb97b0e8,0x3af3636a,0x3bda596d,0x39cfef2b,0x3a95271a,0x3ad3726d,0x3a94f1a7,0x3a2cf7f9,0xb9a40b56,0x3b439eac,0x3c238f8e,0x3b60e974,0xb9c1c5b7,0xbb077791,0xbc0ff9b0,0xbbaad75c,0x3bb45310, +0x3c848ced,0xbc9b2c67,0xbc78ec9e,0xbc76ba42,0xbb40b468,0x3c162765,0x3bb00864,0x3b11fc3b,0xba11de1e,0xbbea099c,0xbbb7e34c,0x3bd83d40,0x3b0a8455,0x39927d9e,0x39d42cf2,0xbaaed337,0xbb3742c6,0xbbd5b61b,0xbb688da1,0xbb8f9577,0xb9248e48,0x3b404077,0x3b281ed3,0x3b1ee34a,0xba3ed009, +0x39f953dc,0x3b4dc2bc,0x3bacc07f,0x3b984ff3,0x3aacfad4,0x3a5c1d60,0x3ad96df2,0x3b67d0f4,0x3c065906,0x3bbf2e20,0x39de474f,0xbc993e94,0x3c898497,0x3c7ce58f,0x3c16c680,0x3b137e91,0xbbe900c8,0x3b096b4e,0x3933b5b0,0xbc5e02cb,0xbc5a45d9,0xbc5f2973,0xbc46dd84,0xbc1490cc,0xbbb844e2, +0xbb3568f0,0xbb1188d7,0xbab06ffb,0xbb1df712,0xbaf1b00a,0xbb8ae951,0xbb398a66,0xbac61665,0xbad3b1a7,0x3a4dce48,0x3ac8b9f4,0x3b0cafe5,0x3a85ecfd,0x39bd011a,0x39957444,0x3a39388c,0x3b670e08,0x3b9b5164,0x3bca26de,0x3af42cd8,0xbad9817e,0x3b8d7076,0x3c430dae,0xbc04b620,0xbbdfa46b, +0xbc14cc1c,0xbbca09ef,0xbc07e699,0xbbaf6b92,0xbb3b0701,0xbb3ac5ac,0x3c0a912c,0x3c2c669c,0x3be96b34,0x3ba9cf80,0x3b1e41c2,0x3ae125fb,0xb929de71,0xba54207f,0xbb33276c,0xbb458a30,0xbb7ebdf8,0xbae392e2,0x3ae85ace,0xba1e97c6,0xbb2d1ab0,0xbb2734fb,0xbaef5d03,0xba68aa97,0xbaad1c7a, +0xb9bd9f1c,0x38334b86,0xba2cf7a6,0xba9139e4,0xba4aae2d,0xba0abf39,0xba849b3d,0xb96cb208,0xbbdf141e,0x3c0e763d,0x3bd8d269,0xbb157f4c,0xbb4d0c36,0xbbaccca4,0xbba15dce,0xbb81b024,0xbb1be744,0xbb3f2557,0xbb7cee50,0xbb9e8ea7,0xbb27c793,0xbab9af82,0xbaa1bfba,0xb7c4681c,0x3a7f1fad, +0x3a7beb25,0x3b1847ac,0x3a8955f5,0xba07637f,0x3ace6411,0xba226480,0x3a243540,0xba93341b,0xbb20f27d,0xbb1fe0ba,0xbb500637,0xbb510677,0xba2c0f87,0xba6a3d9c,0x389fdbaa,0x3a90a13e,0x3ae29231,0x3b12884f,0x3b64a6b9,0x3b5c030f,0x396c7add,0xbb39d902,0xbbc4f741,0xbb75cfbc,0xbba1d6ca, +0xbb96292e,0xbbad417f,0xbbc41dac,0xbb67cd66,0xbab8214d,0xb9575138,0x3915163c,0x395fddfb,0x39bcb4d7,0xba8bcf3f,0xbaeaf16e,0xba8f94cc,0xba99004f,0xb9c5bd2b,0x3acc8a46,0x3b07baab,0x3a6b0475,0x387bcfe2,0xbb38e243,0xbb7da778,0xbb87dd1e,0xbb8e9308,0xbb9e124b,0xbbe075ce,0xbbf603e8, +0xbc0808ef,0xbc0e3b29,0xbc2e7dc4,0xbc391303,0xbc1da2e0,0xbbf8cc61,0xb91f8978,0xbab211e1,0xbb455576,0xbb0eddcc,0xbb226066,0xbb2deead,0xbb4ecbad,0xbb85843b,0xbb541a70,0xbb3a6455,0xbb01f203,0xbb0758a4,0xbb0643a4,0xbaeaa5f9,0xba9f24f1,0xba16cdc7,0xb9a1b692,0xb8ba8fc4,0xba51245b, +0x3a0a707b,0x3abcf92c,0x39c1dfc0,0xb98fd584,0xbb17b9a3,0xbb785d73,0xbbdb5959,0xbbce0559,0xbc01a478,0xbbdc3d94,0xbbf3236c,0xbbced71e,0xbbe1fab9,0xbb946028,0xbb0acfe7,0x39c06dbc,0xba6392d5,0x3994429b,0xbb5af350,0xbb79090d,0xbb8599be,0xbb96bcc6,0xbba4c0b1,0xbbaf0934,0xbbb914b9, +0xbba3f0a9,0xbb9355c5,0xbb838c94,0xbb5cae27,0xbb25fb85,0xbada3ac3,0xbafcb47e,0xbb0d610a,0xbb1a750d,0xbb1c1c81,0xbb20bd9a,0xbb3bd20b,0xba3b8952,0xbb4b07c5,0xbb42dab8,0xbb2735c1,0xbafd81ab,0xbb3bba37,0xbb4c5782,0xbb32e699,0xbada5974,0xbb4e50f9,0xbb672199,0xbb3b4e31,0xbb5243a5, +0xbb276a98,0xbb359364,0xbb804d25,0xbacc1822,0xbb9b4ece,0xbb843e48,0xbb8e8762,0xbb926f3e,0xbb9632ff,0xbb9b2cbc,0xbba5d666,0xbb9d7bb8,0xbb97715a,0xbb8fa027,0xbb87f771,0xbb82f6a5,0xbb7157ac,0xbb7a2f34,0xbb78b1cf,0xbb78856f,0xbb7dee75,0xbb73244f,0xbb927373,0xbae1d181,0x3a390fbb, +0x3b266a7f,0xbb2cd9b7,0x3a0eff42,0x3b2b509d,0x3b2ef1c0,0x3b1cccc7,0x3af0fd41,0x3b14bef4,0x3b114f92,0x3b04bcda,0x3a136faa,0xbb27ae23,0x3b045c29,0x3a7d9082,0xbba8b4a9,0x3a2e1bf9,0xbb98185d,0x3b3fa635,0x39dc3c91,0x39a23c7f,0x382bcf86,0xb92cc46f,0x37cb7266,0x3a6502c3,0x3a1983c4, +0x3a2de3fb,0x3a62f769,0x3a6405a2,0x3a364313,0x38b182ab,0x396f9127,0x39a22bfc,0x3a0dd0c8,0x3a462f4e,0x3a202bee,0x3b1f6069,0xbbaa187c,0xbbfaa344,0xbbd828f6,0xbb82482e,0xbbf2026d,0xbbb8b4b4,0xbbd74f9c,0xbbd6c423,0xbbb1214e,0xbbd7b3ac,0xbbdfe306,0xbbe9f64c,0xbbe02675,0xbb330abd, +0xbbd4e9df,0xbbf9e719,0xbbde1b1f,0x3a646ec9,0x3a47c8a5,0xba567b82,0xba8ecb0d,0xbb05a753,0xbaf15a0e,0x3954c1e9,0xb8abdc6c,0x3a35afbf,0x3aba2144,0x3b0bf9d4,0x3ad2a6f9,0xb9b51690,0xb9f8d130,0xba338ef4,0xb81f4db3,0x3923693a,0x3abd928f,0x390bdc35,0xbbd24958,0xbb03ac89,0xbb80f9dd, +0xbb43ce72,0xbb41a21d,0xb8e7b1f3,0xb9a741ae,0xba5631ff,0xbac9b9be,0x399ff0e5,0x3aaf2190,0xbaa56e65,0x3903f40a,0xbb04e72e,0xbb94dc43,0xb93e6309,0xbb0abd0f,0x3afd37a1,0x3ae2b08d,0xbb03204f,0xbada1b5f,0xbb8c2ed9,0xbb81bcaa,0x3a699583,0xb9c0ef8d,0x3a5d1f41,0x3ae35d7b,0x3b123c40, +0x3a91b37f,0xbb2d020e,0xbb0e479c,0xbb0770ee,0xb9e910ac,0x39b94f20,0x3b3056db,0xb98c5c09,0xbb86e727,0xbb5b3b12,0xbb6055a6,0xbb37d292,0xbb60fb4e,0x3b256856,0xba8cae0b,0x3b3bd4c6,0x3a424b4d,0x3b82efd1,0x3a69b526,0xba6eefbe,0x399c05ca,0xb98abc76,0xbb8dd0bd,0xb978b610,0xbb31a445, +0x3ae52300,0x3a91b688,0xbb364d9d,0xbb381f36,0xbbed7d72,0xbc025d35,0xbac406cf,0xbb0e1f5e,0x3a560ed8,0x3b835094,0x3bcba1a4,0x3b67de93,0xbb565bf6,0xbb8f93a7,0xbb9f7730,0xbb2bb832,0xba42c332,0x3b3e88c7,0x3a472590,0xbb865223,0xba779881,0xbb944f6f,0xbb1511ad,0xb84ab9d8,0x3bb52eca, +0x3ba980de,0x3bac5a8a,0x3bbfeec2,0x3bab4034,0x3bb61949,0x3b20da72,0x3bc66160,0x3b45569d,0xbb73ecaf,0xba883b99,0x3bc1e430,0x3b9ebf4c,0x3b8a7adc,0xbb19021c,0xbbc81384,0xbadcd64f,0x3aaec913,0x3a8d92ab,0x3bc06abb,0x3ba7fe12,0xb8b1889e,0xbb188f89,0xbafb6032,0xb9e56dfc,0x3b486fe1, +0x3ba0c75f,0x3bf03089,0x3b989f89,0x3ba86880,0x3aafe35b,0xbaca0ac6,0x3b3cf223,0x39796947,0x3b13e52c,0x3a0676b7,0xb98194d1,0x39a40def,0x3b53a3f9,0x3c0cc6d8,0x3b2f2974,0xba4e6716,0xbb87dc5c,0xbc1b3b52,0xbc019861,0x3b2a189c,0x3bfd8ac1,0xbcb5372d,0xbc17e931,0xbb74491c,0x3a362e6a, +0x3c394c79,0x3b22ef7d,0xbb1b29b8,0xbb3e1ba7,0xbbdf9f9d,0xbb6e0d56,0x3bfcca58,0x3aaf865a,0xba7d0ff3,0xb6309968,0x3accb1c0,0x3ae9902d,0x38ae02b7,0xba2a53f6,0x3aac4501,0xba2e3304,0xb9f2e156,0x3aca339b,0x3a3d0e80,0x3a9ff864,0x3b212583,0x3b75f042,0x3ba68e07,0x3b847a20,0x3a677b06, +0x3a561a63,0x3ab75051,0x3babfdd3,0x3c0d0243,0x3bf08268,0xbb8d81fd,0xbc7a8047,0x3c525295,0x3c820199,0x3c097762,0x3a6d79ea,0xbbbf11a4,0x3b6f4b97,0x3be445e5,0x39d81216,0x3bb2c7a8,0x3b7a0fde,0xb943c5d5,0x3bc99b9a,0x3c16ff37,0x3c1b2a8a,0x3c10d2c3,0x3bc09bb4,0x3a0b58a2,0xb97be28e, +0x3ae925e4,0xba8bc4d7,0xbb1fcfa2,0xb8c2f654,0xba67cb6e,0x3abbf1e1,0x3b09a083,0x3a1f1776,0x3a0f219c,0x3a66eb46,0x3a5b26db,0x3b7988e7,0x3b9d30d9,0x3bb547f5,0xbac0deed,0xbb51658d,0xb9380c4c,0x3c2339fa,0xbc18e102,0xbc16cd83,0xbbf88d0c,0xbbc7f107,0xbac003a8,0xbaf8b7b4,0xba91b39d, +0x3ad2248d,0x3bc02db7,0x3bd0d1fd,0x3b15819f,0x3b492d77,0x3b05eb23,0x3b09657f,0x3aa8c6e2,0x3b07f8d7,0x3b12442f,0x3aa81f5b,0x3a6ddfca,0xbabfab7c,0xbb1eeb5f,0xba9b1345,0xbb23bfef,0xbb3c592a,0xbb07dfe2,0xba4fd9b4,0xbaa1da0f,0xbaa03a24,0xb96c8285,0xba37bd48,0xb9fe921a,0x3aaf429a, +0xb80495a8,0x3a174ea0,0xba5594bf,0xbbac2795,0xba88c5f3,0x3ac03d1b,0x3b5ef67b,0x3ab426c4,0x3b145e56,0x39cd0cdd,0x3b2151f5,0x3bcd2177,0x3b07e027,0xba320586,0xbb939b88,0xbb5976e5,0xbb0c3ced,0xbab9271f,0xb90d06c2,0x3a5d4cd4,0x3b0eeb36,0x3ae229d1,0x3b07fd81,0x3a243138,0xbaa75565, +0x39625f74,0x39e2c1f0,0xba988a1c,0xbb097c8a,0xbb0d10bd,0xbb4f0911,0xbaf66db1,0xba54a96e,0xb9718401,0xba11d034,0xb948f439,0x3a2f886c,0x3a84f7e3,0x3a416be0,0x399a930c,0xbc33ac76,0xbbd6a85c,0xbb379acc,0xbb14d64b,0xba0be497,0x3ad67602,0x3b33da2f,0x3b3cc43c,0x3b05097c,0x3b169687, +0x3b2d1d8b,0x3b3e766c,0x3b007e45,0x3a80063c,0x35b60ce2,0x3946f42e,0x3b2b889a,0x3b273249,0x3b2d2984,0x3abc83ef,0x3adb90ea,0x3a0bb871,0xbb4fd895,0xbb705fc2,0xbb6b3cb7,0xbb60752e,0xbb5c02e6,0xbb9136ef,0xbb9b5284,0xbbce0079,0xbbed6375,0xbbf0365d,0xbc25d867,0xbc376170,0xbc3a0c5d, +0xbc2350d4,0xbb3a1ccb,0x39127ac8,0x3ad656a6,0x3a81139c,0x3add0ae3,0x3a8f6a62,0x3a89c572,0x3a919fef,0x3a7c662b,0x3a4eebe5,0x3a4412c6,0x3a25bef2,0x3a240c88,0x39d65787,0x3aa2c264,0x3ae001c8,0x3b153dd4,0x3afb570b,0x3b3dcc72,0x3ae58996,0xba914e4d,0xba799d36,0xba94541c,0xbb109075, +0xbb939cf1,0xbbb6573d,0xbbea5865,0xbbc5a1d4,0xbc0d3f91,0xbbdd7190,0xbc010e9a,0xbbede722,0xbbc517e1,0xbba6c9a2,0xbb9975a8,0xbb48c837,0xbba53b34,0xbb01d897,0xbacced07,0xbad72199,0xbaadcdbe,0xba8912a0,0xba455054,0xba2d6214,0xb9b1f00a,0xb8840a3d,0x38c16f0a,0x39107f02,0x3890502c, +0xb9963e35,0xb9b00017,0xb9e325a6,0xb9c547f5,0xb9d9eb59,0xb9b1cebe,0xb905a227,0xbb516ff7,0xbacd5057,0xbb31a10b,0xbb46624f,0xbb691087,0xbb450ff8,0xbb0ed986,0xbb2af411,0xbb612eac,0xbb06b986,0xbab8b2ae,0xbb1515b1,0xbb0aafe8,0xbb4bb806,0xbb54853c,0xbaf4f294,0xbb86c90e,0xb8a5820e, +0xba692e79,0xba43ae4a,0xba450e0f,0xba4cb8e6,0xba4bb52c,0xba40e9e2,0xba30d834,0xba2d4cdf,0xba244379,0xba1b2355,0xba0b07ef,0xb9e45899,0xb9ed5b15,0xb9fb0854,0xba06d02b,0xba0421c9,0xba343153,0x393a8e03,0xbb748084,0xbbbe8564,0xbbc82e55,0xbb665036,0xbbd33af9,0xbbdfdfbc,0xbbe2d815, +0xbbdbd978,0xbbc5ceaa,0xbbd6937f,0xbbd34610,0xbbc80d32,0xbbbf80ab,0xbb511d5d,0xbbb75052,0xbbc30c4d,0xba9f7f10,0x3895955e,0x3ba744f7,0xba4aa31a,0xb8818163,0xb8e6d940,0xb8d5edf2,0x3954e471,0x39ba6519,0x39fd2f2a,0x39b0ede3,0x399e2e5e,0x398fb220,0x39fe0027,0x39cf2a78,0xb8cf03ce, +0xb990251c,0xb9b0bf25,0xb94d3eff,0x38424e66,0x38ba4794,0xba40e465,0x3b943afa,0x3b9648e0,0xb9313ab8,0x3b723bb9,0x3ba031a0,0x3aaa0715,0x3ab84fd0,0x3ad37145,0x3ac6102a,0x3b23683c,0x3b271937,0x3b03245f,0x3babb051,0x3b7df2af,0x39804459,0x3bb779b3,0x3b949064,0x3a9c85b8,0xba6abef9, +0xb91ed706,0xb94e4aff,0x3a705178,0x3aaa6ad3,0x3aa7c8e4,0x3a752f19,0x3a8e74fe,0x3ab0b4e7,0x3b089e76,0x3abd9c7d,0xb9a4967d,0xba873acb,0xba8d6154,0xb9fb8f68,0x39f2c7b8,0xb909b9fb,0x3ac051ca,0x3b266687,0x38e8e01a,0x3a9714d9,0x39a3ac09,0x3aa12eab,0x3b59a62b,0x3ad53a48,0x3b3940b7, +0x3b9e86af,0x3b49fe5d,0x3ae8f37b,0x3ae1c178,0x3b1b3cd3,0x3b262590,0x3ab7d13d,0x3aa846f1,0x3bc345b8,0x3b0eeaaa,0xbae0a970,0xba21aefd,0xba5f99bf,0x3a95510d,0x3b222ae0,0x3b27b85a,0x3b0eb7aa,0x3b19de33,0x3b0a0801,0x3b6736ec,0x3b2c58b6,0xb9525010,0xbac17933,0xbae3230a,0xba3bb682, +0x3a05b647,0xb8afd0c1,0x3af7f0bb,0x3b17f5f6,0x38e89eb1,0xba84e206,0xba2f5aca,0x3a839ba3,0x3b6b2f70,0x3b09995e,0x3a51392c,0x3bb5863f,0x3b47e231,0x3b90d737,0x3a8ff4aa,0x3b37848d,0x3b26398f,0x39f6758b,0x3b7ad950,0x3b9287ea,0x3a86cb6e,0xbb35403e,0xba44b0b9,0xba4ac03e,0x3b48791f, +0x3b8dc140,0x3b71284f,0x3b5910bd,0x3b85c049,0x3b9d5970,0x3c0447fe,0x3bc5486f,0x3865ac92,0xbb14f378,0xbb387488,0xba91b101,0x3a8fe8f6,0x3946bde2,0x3b0c3322,0x3a8d8f60,0xbb4a66f0,0xbaf60289,0xbb357e65,0xbab2c2ca,0x3b83c774,0x3b7b86c4,0x3b94e0a7,0x3b8c31a7,0x3bb998e6,0x3b95f3c8, +0x3b007680,0x3ba98cec,0x3b867403,0xbb6a186e,0x3a535b48,0x3c93885a,0x3bf1836f,0x3922cd1a,0xbb3c3941,0xbbd56b69,0xbaac0928,0x3b68b0bf,0x3bafdbf4,0x3b84db24,0x3a209e85,0xbba8abb5,0xbc2ac2bd,0xbc2b7a71,0xbc05e47f,0xbb0a456e,0x3a16cf56,0xbafddc95,0x3a192ec4,0x3a729490,0x3bab7858, +0x3baf0842,0x3a91dea7,0x3a82bc4f,0x3b2d7939,0x3aef39ee,0xba2a8801,0x3a1d5d9c,0x3b57285b,0x3bd59c88,0x3b2f6127,0xb9fa8fd2,0xbb5ad37b,0xbc096ac8,0xbb64e566,0x3bf532b3,0x3c8aff4d,0xbc60dc8b,0xbc1b767b,0xbc4d24e7,0xba60ed93,0x3c577686,0x3c0e4618,0x3baab50a,0x3b81b4b1,0xbb7b085b, +0xbb5f5661,0x3bc354c2,0x3b2a47b4,0x3ab1584b,0x3b0742bc,0x3af4a324,0x3b2db5b9,0x3b4496fb,0x3b719ed7,0x3ac15180,0x3b0ddf8b,0x3b0f81e3,0x3b1d25dc,0x3b392e4b,0x39f5dd5b,0x3ad95271,0x3b73e46c,0x3b8cca69,0x3b4aebbc,0x399c085b,0xb8979114,0x3ab959c5,0x3bb1e737,0x3c2a6b77,0x3bd8dfee, +0xbbacbe06,0xbc6bd4b3,0x3c4ae568,0x3c862b50,0x3bf40eac,0x3aea3f95,0x3b214a6c,0x3c3d159d,0x3c7ec929,0x3c39bc7a,0x3b66af58,0xbb21279e,0xbb97266c,0x3b2071b4,0x3beeb25c,0x3c153953,0x3bf30e0f,0x3b92e346,0xb9943249,0xba653699,0xbb1a3fb0,0x3a167e56,0x3aa1a258,0x39107355,0x3aa66d1d, +0x3b489b8a,0x3b30e407,0x39c53545,0x389fa90f,0x3968842e,0x3a14c503,0x3b7d11e7,0x3ba4daee,0x3bc612ba,0xba5622b4,0xbb988e64,0x3adb7192,0x3c02ab5d,0xbbd6df20,0xbbdd0782,0xbab3ef47,0x3bdb8750,0x3c46637e,0x3c14ebd8,0x3bbbab66,0x39b5f690,0x3c29f401,0x3c5cae07,0x3c237718,0x3c284b71, +0x3c072080,0x3bc04eb2,0x3b81b9cb,0x3b7878a6,0x3b25e8ea,0x3aa0591b,0xbab1c00c,0xbae17738,0x38825536,0xba4610ac,0xbb1599b5,0xbb2c33d2,0xbafd2a1c,0xba0d7843,0xbb0303d5,0xba9af5b9,0xb9a5e23a,0xba7421e7,0xba382216,0x392c682a,0x3a37568f,0x3a3a0e15,0xb9ed9d26,0xbba5c355,0x3c02dc89, +0x3c61df16,0x3c851596,0x3c821f60,0x3c555db1,0x3c46f430,0x3c453b77,0x3c4a9be3,0x3c02622e,0x3bab6a14,0x3b8cc54a,0x3b469060,0x3b2ac472,0x3b439445,0x3b111802,0x3aeb3986,0x3ab13c11,0x3b11c3cb,0x3af962cd,0x3ab93ac8,0x3b2bb5c1,0x3a6431e8,0xb718b19b,0xba8c351e,0xbb0d75fb,0xbb03c258, +0xbb172237,0xbac890f3,0x3ab14943,0x3a22846c,0x3aaa0b3f,0x3b199df4,0x3b366203,0x3b6e75a1,0x3b83d933,0x3bedb1d4,0xbb935e0e,0xb9828e6e,0xbae695c7,0xba5971f3,0xbaa2e757,0xb9f53757,0xb982d153,0x3ab569d9,0x39c01fdb,0x3a149825,0x3a613ae8,0x3b19339d,0x3b46e704,0x3b4534de,0x3b2aa719, +0x3b1922a7,0x3b1d651d,0x3ae5f154,0x3aa1843b,0x3ab58f2d,0x3adb7ab9,0x3a20872e,0xba0f8956,0xbb1ef738,0xbb5a8669,0xbb3fd889,0xbb4b29bf,0xbb774cd9,0xbbb0c0eb,0xbbc40db3,0xbbd189c2,0xbbc69bb5,0xbc0c3aaa,0xbc107f58,0xbc0b6b0f,0xbbc942b3,0x3ad95393,0x3aa0ff02,0x39abc0a1,0x3ac6b706, +0x3aeae304,0x3b1bec04,0x3b33a204,0x3b4a1da5,0x3b4e2182,0x3b4fc413,0x3b4deccd,0x3b046aff,0x3a803694,0x38e21923,0x3a2a4b9d,0x3a90f64a,0x3abe65c3,0x3af37400,0x3adde0b8,0x3b4401ba,0x3b11fe33,0x395d5a5d,0xbaab7b81,0xbb110658,0xbb5c8d31,0xbb9c71b4,0xbbb20b72,0xbbc57ca2,0xbbbd45d0, +0xbbcfd2a9,0xbbc4a395,0xbbd0b539,0xbb8fb8b0,0xbb1d69fd,0xba618b1f,0xb940aa03,0xba7af6ad,0xba44bff3,0xba985810,0xba70c91d,0xba8b6c80,0xba8c2744,0xba941ffb,0xba8696a7,0xbab1bc54,0xbad95d19,0xbaec94f2,0xbaef5ecb,0xbacd908c,0xbaab15af,0xbab22976,0xbac2dbe6,0xbad74355,0xbacfbbba, +0xbafc19d6,0xbacb3113,0xba0647c2,0xba95d539,0xb9fd023f,0xba8b73f8,0xb9eb02ff,0xb990eee0,0xb9f31998,0x390d87af,0x39c2c7bb,0xb9d53641,0xba895888,0xba63b0ed,0xba92546e,0xba98d063,0xba5ad370,0xbab148fb,0x3abf4b0d,0xba629f28,0xba437928,0xba4aca87,0xba61565b,0xba63a841,0xba6fc166, +0xba7929f5,0xba8af064,0xba8ef011,0xba96fd8c,0xba9ad468,0xbaa8b4ba,0xbab1c11c,0xbab45a0b,0xbaaf225e,0xbaacb00a,0xbaa8b54c,0xba9ea420,0xbadeceaa,0x3a79e941,0x3abbab6f,0xba85425f,0x3a6c3430,0x3ac99432,0xbaaf5284,0xba8c7e5e,0xba8e3377,0xbaa07ecd,0xba372853,0xba0e709b,0xba0b7bbe, +0x3ab73ae1,0x3a876b2e,0xba9df37e,0x3acb4664,0xba8afb09,0xbb68879d,0xbbb7bb5c,0xbb3d18a7,0xbb48b00f,0xbb6977f7,0xbb5b11ff,0xbb8e10d2,0xbb921630,0xbb81bffa,0xbb825818,0xbb77093b,0xbb5f9617,0xbb563a5c,0xbb5ed85a,0xbb836f7f,0xbb854d8f,0xbb859b9b,0xbb7fee3b,0xbb72ec55,0xbb53f395, +0xbb484116,0xbbc3c5da,0xbb8c0792,0x3b0b1513,0xbbcba7e8,0xbb90ccac,0x3b25b293,0x3acb16f5,0x3ac22e71,0x3b095b83,0x3aa7a227,0x3a880b7f,0x3a126776,0xbb8900f9,0xbbbdb120,0x3aec865c,0xbb7c9de1,0xbafb9925,0xbb900ccc,0xbb4447d3,0xbb887065,0xbb71dac7,0xbbd171f2,0xbbeaa863,0xbbc48137, +0xbbc45468,0xbba20186,0xbb770ad3,0xbb320e29,0xbb4dbb7a,0xbba9b5fc,0xbbc2446d,0xbbd24c58,0xbbc2686c,0xbbb08c9f,0xbb804c93,0xbb904d2c,0xbb0e530c,0xbb79ad07,0xbbb1d189,0xbb649088,0xbb3c4593,0xbb134869,0xbb3b0301,0xbb6cf170,0xbb1842af,0xbb25de7d,0xbae4f4e5,0xbb0d7932,0xbb01747b, +0xbb040464,0xbb92628e,0xbb67391b,0xbb3cb81c,0xbb35f506,0xbb2cd7af,0xbba1704e,0xbb6a9083,0xbc15d1a9,0xbc2d2775,0xbc0098bf,0xbc033df1,0xbbc8616d,0xbb93e6a4,0xbb4a08a8,0xbb80a715,0xbc0092b5,0xbc0a619e,0xbc11d5e0,0xbbfcd05a,0xbbc9d7cd,0xbb8c9996,0xbb478d60,0xbb8a5ab7,0xbb874ac1, +0xbb8eaceb,0xbb7adcd7,0xbb40e297,0x3a797fa4,0xba8289eb,0x39316f89,0x3abd8073,0x3b285cb1,0x3a89b589,0xba96fd75,0xb98ed209,0xba71f81e,0xbb7bdfc2,0xbaee961f,0xbb222991,0xbb3d78db,0xbaf37df9,0xbb80e8f7,0xbb20c48b,0xbc2f91d2,0xbc700173,0xbc4306c0,0xbc3b55bf,0xbc00b459,0xbb6d21e8, +0xb8980172,0xbb0dbf9c,0xbc1d0c03,0xbc4cd65f,0xbc64bb19,0xbc49d602,0xbc198235,0xbba4cd49,0xbb346a70,0xbb348d01,0xbb396c73,0xbb7f4f7e,0xbb66546f,0xbabe5276,0x3b9a78bc,0x3b56e1b7,0x3b8472d0,0x3bc51b55,0x3bb88f79,0x3bab6a8d,0x3b3bdc65,0x3b9de727,0x3ab258f3,0xbb8fc55d,0xbb487e7d, +0x3b96b663,0xbb58f617,0xbbad2061,0xbc25c9ec,0xbc458b84,0xbc47a71f,0xbc1621a2,0xbbde9e28,0xbb6695fb,0xbb24c48d,0xbb969570,0xbc1110a5,0xbc017543,0xbb60db04,0xba9aff66,0x3993f1b8,0x3a6564a8,0xbae1c5b0,0xbb48bf14,0xbb5d4776,0xbae1689c,0xba2f8bae,0xbacf6d11,0x3adc0832,0x3a5427da, +0xbaab3e31,0x3a8a1c7f,0x3b54bd4f,0x3b9b6e85,0x3ab411bd,0xbab1d0d5,0xbbb479d8,0xbc1ba82a,0xbbc3b019,0x3b8a53ea,0x3bea0532,0xbc9883fc,0xbc2b929a,0xbbdf9336,0xba868eed,0x3c6b1676,0x3b03c36b,0xbb4e13f7,0xb801e1fd,0xbbe76a76,0xbba89d61,0x3b89013a,0x3acbde48,0xb9c4180b,0xbb26772b, +0xbb8493ee,0xbbd40783,0xbc20e1f0,0xbbe5e406,0xbb82c564,0xbafad812,0xb9781870,0x3a31343a,0x397f99c0,0x3981ae4b,0x3ad62ee9,0x3b6a0b38,0x3b7a1587,0x3b1758f5,0xba1a03e0,0xba3c9f6f,0x3a8033e4,0x3bc7936d,0x3c23756d,0x3b8dba13,0xbc375362,0xbc867875,0x3c10e9d2,0x3c6d2e74,0x3b72b590, +0xbc0c39c9,0xbcba9a70,0xbca33312,0xbc6e6cb9,0xbbe996b3,0xbb9240f0,0xbb850393,0xbbcd6557,0xbb9e46b4,0xbb86d758,0xbb5db359,0xbac041e1,0x3845cdf6,0x39b627b0,0xba9a9ea0,0xba8ccb6f,0xbb21d7a6,0xbb3b9fd6,0xba90c46b,0xba86921c,0x3aa94ff8,0x3ad77e7a,0x37cc6814,0xb9f2e52c,0xb8f7e727, +0x39813331,0x3b65a23c,0x3b88b741,0x3b82703e,0xbb7434b5,0xbbbc1ac8,0xbacca6fd,0x3ba41cef,0xbbe3f2d1,0xbc1e5fa6,0xbc5d61b8,0xbc855f8a,0xbca89010,0xbc927fb3,0xbc5c5abf,0xbb5ca839,0x3af4980a,0x3b8fa1aa,0x3a6213fd,0x3b375b2f,0x3b18dd81,0x3aaacd4b,0xbb2717ea,0xbb8a0b09,0xbb8e54a2, +0xbb9b1155,0xbb675342,0xbb6b1afe,0xbb1d0e79,0xbb1e8902,0xbb51f937,0xbb5ed6f1,0xbb2f48b9,0xba8c85b9,0xbaf85bce,0xbb072a68,0xba5bd795,0xba90898d,0xb9bf6954,0x3a1cd7e9,0x3a61a8ba,0xb708361f,0xba884b10,0xbb825e1b,0x3b817acb,0xba851495,0xbbb18e9a,0xbbb0ebf8,0xbba41867,0xbbdea0df, +0xbbab287d,0xba0e5d58,0xbb284d96,0xbb99d4c6,0xbc1dddbf,0xbc08700d,0xbbedb9a1,0xbbba2940,0xbb068ef5,0x37e4413d,0x3a8f0d7f,0x3abef041,0x3a862b5b,0xba4b7b7a,0xba64fa83,0xba8f852c,0xba658e72,0xbacd5a38,0xbb1fa5b2,0xbb2dfab7,0xbb180c76,0xba61fb17,0x39b139dc,0xb9650185,0xb9bf3296, +0xb83776d0,0x3a747ebd,0x3ae92ebe,0x3b41f93a,0xb8ad193a,0xbbedbfc9,0xbc149a17,0xbc198a70,0xbbfd0ed7,0xbbd024ae,0xbb8983ba,0xbb54bfd1,0xbb806e3f,0xb9fbf081,0x3af4accb,0x3b4c6b2d,0x3af6a327,0x390a5c0b,0xbabbf642,0xbb03b816,0xbacd70d0,0x39fdc4b1,0x3a0d209e,0x3aa99fac,0x3afc8d6d, +0x3a88fed3,0xba2b4407,0xbb83479b,0xbb929cf1,0xbb7fd1bd,0xbb46e632,0xbb57ff5f,0xbb86bc0c,0xbb90a835,0xbbbda7e8,0xbbd31cb4,0xbbccae75,0xbc0999a4,0xbc29ad3c,0xbc3131e6,0xbc429209,0xbb7922c9,0xbb00e89d,0xbac18c08,0xbac97a4b,0xbaa92d0f,0xbadb3ca7,0xbacab1fe,0xbad849f9,0xbabb8c9c, +0xbacc3915,0xba8ed7fc,0xba1921f9,0x397a312b,0x3a7008ae,0x3aa8aa18,0x3ac4e7af,0x3aef62ef,0x3aa5a9b0,0x3a992bb8,0x3a1e65d9,0xba868925,0xbacafaef,0xbb20d1a3,0xbb2de01c,0xbb67d220,0xbb830584,0xbba78ab2,0xbbb477c1,0xbbeacb35,0xbbd4064d,0xbbe98f28,0xbbf6a7c8,0xbbd74af9,0xbbbd1c4b, +0xbba34cd3,0xbb86b09b,0xbab0d596,0xbb2bfa15,0xbb2affb9,0xbb524560,0xbb61eeae,0xbb7a5e31,0xbb8a38fd,0xbb9ada6a,0xbb75796d,0xbb350a82,0xbb01d825,0xba9f3bfd,0xba3d16dd,0xb9cfde13,0xba0351d8,0xba070d5f,0xb9ea7699,0xb9d694cb,0xb8314b4b,0xb9c3348e,0xbaf27c38,0xbb01edd0,0xbb549e52, +0xbb36ed07,0xbb6163e4,0xbb81ee10,0xbb65db9e,0xbb7a8890,0xbb72120e,0xbb591094,0xbb329e7b,0xbb2a2f49,0xbb28a86b,0xbb19f8ff,0xbb331c75,0xbb26af2e,0xbb6bdc51,0xbacb852c,0xbae3fbed,0xbb04f629,0xbb104201,0xbb1ddd10,0xbb2725d7,0xbb3e1a97,0xbb211cc0,0xbb152395,0xbb06a641,0xbaf3d12d, +0xbad40838,0xbaa3bc79,0xbaab33bd,0xbaaac8e6,0xbaaac631,0xbab0b3f6,0xbab35b49,0xba74beb1,0xbb65ddc6,0xbb57da60,0xb9c710fa,0xbb81ad1b,0xbb7f08c8,0xba136496,0xba3ce8e4,0xba4df47a,0xba25d420,0xba82e8a0,0xba8b11d1,0xba8c81d5,0xbb6106a7,0xbb7a7fb8,0xb62bf2bf,0xbb3fd4ed,0xbb163d22, +0x3b6170df,0x3b6f188c,0x3b86abb3,0x3b324282,0x3b487724,0x3b2f5938,0x3b626dd1,0x3b76f29a,0x3b7fdbc3,0x3b80ab31,0x3b80fba8,0x3b802241,0x3b835bb4,0x3b7dfba1,0x3b615628,0x3b579c52,0x3b517bf2,0x3b53a9b0,0x3b5cdf49,0x3b3eb6db,0x3b80cfe8,0x3b427fac,0xb9f75fa9,0xbbff9db3,0x3b7a5ac5, +0x397e4410,0xbbc60fbe,0xbbcba720,0xbbc3b5b4,0xbba68e96,0xbba79c58,0xbba8815d,0xbba9fef2,0x3a3ae9a3,0x3b9bad12,0xbbe4c660,0x3851f6be,0xbabd201a,0x3b9c5a0c,0x3b2b3937,0x3b324df3,0x3b0db08d,0x3b85cd63,0x3b9da2a1,0x3ba304b9,0x3ba97c73,0x3bb545be,0x3bbe9eaf,0x3bd05a86,0x3bc1e6a3, +0x3b92974d,0x3b7c4663,0x3b65ee7e,0x3b752c60,0x3b78899d,0x3b5ea069,0x3b878e3e,0xbb2a84f5,0x3a72eb1f,0x3a70b1ae,0x3976bf3a,0x39f3b4ef,0x3b76bc61,0x3b33f679,0x3b78c818,0x3b8dfc3b,0x3b90e108,0x3b7d4c62,0x3b209060,0x3b54fc5f,0x3ab1570c,0x3a1517d3,0x3b6e44d3,0x3b83376c,0x3b87f339, +0x3b2ab96f,0x3b0a5de5,0x3a977c26,0x3b8f9636,0x3bd226b8,0x3be64893,0x3bfaab95,0x3c05523a,0x3c008c0a,0x3c0eb9a5,0x3bfee652,0x3ba6fc22,0x3b8b9dcd,0x3b6c0cea,0x3b860037,0x3b7c8842,0x3b83b86c,0x3b326450,0x39eb0454,0xb9cf35e5,0xbab5bb03,0x382b38b6,0xb95c3000,0x3b88aa3e,0x3a1a7118, +0x3b2a4a5e,0x3b9ec162,0x3b7c6649,0x3b4c2e71,0x3ae23429,0x3b0c7df8,0x3b0bc485,0xba1b7fcb,0x3b8322a0,0x3b3de92f,0x3b743523,0x3abd17bb,0x3a8e25e4,0x370bdbf6,0x3baaf582,0x3be80cfe,0x3bf5e2d7,0x3c1040f6,0x3c2bbc50,0x3c38a656,0x3c63590a,0x3c500cff,0x3bf8a296,0x3bba18de,0x3b8cbfad, +0x3b98d7b5,0x3b8d3cca,0x3b728587,0x3b5301d2,0xba9e9490,0xba9b5a0a,0xbb47a92d,0xbad626e0,0xba2dc79a,0x3b9a578d,0x3b53a284,0x3b54e48a,0x3bc14b37,0x3bcc519f,0x3bb087c9,0x3b4078ad,0x3bab9d5f,0x3b55b400,0xbb4c5171,0x3b1e1e01,0x3c2bd9b6,0x3bf8d9ab,0x3bd49b77,0x3b61a44f,0x39a7343c, +0x3b5d2f99,0x3c122cb7,0x3c73d427,0x3c4c588d,0x3c20a6dd,0x3bd2081e,0xbaf83f9b,0xbb8be4c8,0xbb838a5d,0x39c01ff9,0x3b3f9578,0x3b8da8c7,0x3ba7a6f0,0x3bc8e8f2,0x3bac23e6,0x3a87b86f,0x3ae491db,0x39d3a3f2,0x3b4d714a,0x3b01cdca,0xbad69c78,0x3b013caf,0x3b7e8d7f,0x3b52a841,0x3afba6ad, +0xba3692ba,0xbb8c66a2,0xbbed3fb7,0xbb2e2ef3,0x3be9d9f8,0x3c4a715a,0xbc306fa0,0xbb2b8b5b,0xbbc70cb6,0x3ae71411,0x3c8092c9,0x3c1d827e,0x3bac5f03,0x3bac0925,0xbb180b4c,0xbb061464,0x3b92c7db,0x3b40c24c,0x3b077e97,0x3af47fcc,0x3b5b2c4d,0x3bb305c4,0x3c0c8f11,0x3bd7ecbe,0x3b9b4934, +0x3b0c93bd,0xb846881e,0x3a8fe648,0x3b0fbf0a,0x3adda187,0x3b3eb7f0,0x3b7a0f8b,0x3b5787e7,0x3ace3b61,0xba789f04,0xba1e2e8f,0x3ad45bd8,0x3bed4fdc,0x3c2b2fa0,0x3bb6d5e5,0xbc1b40a2,0xbc27b955,0x3bd2b526,0x3c8b05b2,0x3bacba4b,0xba556c3c,0x3b53e23e,0x3c0b6760,0x3c925fa2,0x3ce9bb2a, +0x3c80bef3,0x3befcdcc,0x3b893cc9,0x3c37e1c4,0x3c7dcdb5,0x3c83cc78,0x3c5ac89c,0x3c0861e7,0x3b14feb7,0x39b5e2f0,0x3a37dd60,0x3b3ac02c,0x3b1ec454,0x3ae8c92a,0x3a871265,0x3b57b696,0x3b1d9e5e,0x39366d38,0xb97fbaa3,0x390aef5e,0x3a146b89,0x3b7997c6,0x3b8aa3a3,0x3b6fd9d9,0xbb4d0cd1, +0xbbb8ff83,0xbaaa8f34,0x3b2d7b5e,0xbb9f0a7c,0xbbf19f12,0x3aee6b1f,0x3c2a6d49,0x3ca2cb8c,0x3c70553f,0x3c1b15b0,0x3bb01b53,0x3c0b9260,0x3c3594fb,0x3c1a3f8d,0x3c36392c,0x3c263ff7,0x3bf25fd7,0x3bc06e1d,0x3bb0692b,0x3ba6e85c,0x3b583ce0,0x3a463801,0xbac5c33e,0xbb25f0a0,0xbac43e75, +0xbb046e27,0xbb23d9ee,0xbafa8273,0xba072263,0xbaf780d4,0xbacc5987,0xba0dc1c2,0xba61573b,0x38b05dc6,0x3a875757,0x3ac8aaf3,0x3b01f540,0xba312770,0xbb15f28b,0x3b6910a4,0x3c4cedbc,0x3cc22b8d,0x3cc4d752,0x3cb82f28,0x3ca4a927,0x3c9c3b0c,0x3c97d287,0x3c5baba1,0x3c28980e,0x3c0b308c, +0x3bacabc5,0x3b6ba84c,0x3b63ccc3,0x3b23d82b,0x3aeb6465,0x3af0d623,0x3adc4456,0x3b133550,0x3b26e4ae,0x3addc874,0x3aad07a7,0xba5be771,0xbab7f30e,0xbafbf68d,0xbae85d7c,0xba940ebd,0x39e9b0a6,0x3b057412,0x3aae8fe0,0x3a9ad5a4,0x3acde318,0x3b0e6451,0x3b4debcb,0x3b4297cd,0x3bdb21a6, +0xbc254308,0xba58f35d,0x3a5ab80c,0x3a1c3b5f,0x3ac50593,0x3b4c2e55,0x3b93657b,0x3bea108a,0x3b7ec5a0,0x3b293b3d,0x3b15d540,0x3b71814e,0x3b94c489,0x3b8ea9f8,0x3b95b3e8,0x3b9e192f,0x3b969934,0x3b83e5a7,0x3b37d3aa,0x3aa31580,0x3a3992b7,0xb9b29c33,0xbb089cd8,0xbb101d3d,0xbb2ba9b3, +0xbb16c10f,0xbb1a6faf,0xbb4b6442,0xbb64029f,0xbb89fe83,0xbb916598,0xbb74ad05,0xbbc0b34a,0xbbd04f43,0xbc043292,0xbbd08b89,0x3a0c6bf8,0x3af555b7,0x3b1c28c6,0x3b49117a,0x3b7547a7,0x3b950431,0x3bb32765,0x3bdf2c03,0x3bd48414,0x3bd08791,0x3bbe7600,0x3b948bc2,0x3b58e2e8,0x3b0dbf22, +0x3b1e8710,0x3b23a15c,0x3b2e5113,0x3b3beb46,0x3b543805,0x3b6c8707,0x3ab7dc67,0xb9d6f876,0xbb01645c,0xbaffcd77,0xbb3a05ae,0xbb315237,0xbb9126ea,0xbb831651,0xbbb609f0,0xbbb0bc4b,0xbbccc746,0xbbce2742,0xbba9a762,0xbb878f8c,0xbb7ab11a,0xbab01a4d,0xbb411a8a,0x3a513499,0x3a3b68c7, +0x3a9e5661,0x3ac9cdbc,0x3afb38a1,0x3b0abe81,0x3b1d7809,0x3ad2136c,0x3a7fc612,0x3a172c8b,0x3957de21,0xb7e81c90,0xb9bb08a1,0xb94bd3e2,0xb90f020a,0xb8ae3d37,0x37b4ea96,0xb986b863,0x3a0fc617,0xba2ef32b,0x3a104898,0x3a7057fb,0xb96d861d,0xb97523c6,0x3a2e08dd,0x3a45df68,0x3a8a35bb, +0x3993d18e,0x3a3ba102,0x39a0d957,0xb9afabb8,0xb93fcdbd,0xba6b04f9,0xb9adc097,0x3990eca8,0x3afe52f5,0x3b1a44e9,0x3ae87247,0x3b01b0fb,0x3afc13b2,0x3b00ac0b,0x3b040185,0x3b1177b3,0x3b017ecf,0x3af062ca,0x3ad1ccb0,0x3ab896d0,0x3a9e4069,0x3a7aade6,0x3a8842c2,0x3a8cae18,0x3a8ef011, +0x3a9e6754,0x3a974996,0x3ab1de36,0x3adac7d4,0x37bebaf3,0xbb8babab,0x3b0fe888,0x37d2070f,0xbba31df8,0xbb9c7a8c,0xbb962d02,0xbb8a11f4,0xbb859c49,0xbb7cb931,0xbb6ffd39,0xb95763cb,0x3b1034bc,0xbb87a2c4,0xb95d2647,0x3b0c6284,0xbb9ee79f,0xbb0991e1,0xbbbf983a,0xbb8655ac,0xbb9956c8, +0xbb8b8612,0xbbacc1f8,0xbbb48157,0xbbb291fd,0xbbab7277,0xbba43baa,0xbb9ac9e1,0xbb93e01c,0xbb9675ef,0xbba49ba4,0xbbae1aac,0xbbb17ff6,0xbbaeea9c,0xbba948b3,0xbb925802,0xbbbd8fe7,0xbb1fadf7,0x3ab88a37,0x3be82612,0xbb777307,0x3aa1edea,0x3bf5b1be,0x3be56018,0x3be5153e,0x3be437d9, +0x3be5b7b8,0x3be1a385,0x3bd0ffaf,0x3aa827d3,0xbb833cba,0x3be345df,0x3b18dd7d,0x3b82e136,0xbbb42e3d,0xbb8ee46d,0xbb951d3d,0xbb7fbe45,0xbbd0fa54,0xbbf23d97,0xbbf0a7fc,0xbbe6f367,0xbbca96d3,0xbba98f0a,0xbb891388,0xbb93657a,0xbbc71adc,0xbbf19a37,0xbc02333f,0xbbfb8b19,0xbbe0a97d, +0xbbc983e6,0xbbaf67f9,0x3b194383,0xbb67eb35,0xbb808063,0xbb0c79e9,0xba881c6d,0xbadf0546,0xbb31ecbb,0xbb3f8d00,0xb8dd28cd,0xbb1785b4,0xbb217281,0xba8babc0,0xbad5b6df,0xb8c32547,0xbada5dff,0xbb6cd9c0,0xb8acf8ce,0xbb7f8011,0xbb9dac79,0xbb9d3811,0xbb7017ec,0xbc09822d,0xbc234e15, +0xbc21f3b6,0xbc11e722,0xbbebcca5,0xbbc663e1,0xbb8b18c6,0xbb9c85d6,0xbbf84e8a,0xbc1afa58,0xbc28f41a,0xbc1fb2d2,0xbc042b28,0xbbf99acb,0xbb5ae5ee,0xbb056127,0xbb4f6c43,0xbb7f62f5,0xbb41bd07,0xba4e4691,0x3a1c81ef,0x39e79135,0xbaa0ee12,0x3b6cff97,0x3ac7ed12,0x3b135831,0xb9025723, +0x3a243471,0x394a42ac,0xbaab3571,0xba361e89,0x3a7bab69,0xbb7231aa,0xbb55758d,0xbb2f2251,0xba95f9f4,0xbbfb4565,0xbc42790c,0xbc55aa9a,0xbc3c7753,0xbc0ffce4,0xbbba9579,0xbaef12cc,0xbb355f16,0xbc0d2397,0xbc56f324,0xbc786252,0xbc6b83a7,0xbc3d3706,0xbc156f5f,0xbb8749dd,0xba721906, +0xbb92d7c6,0xbb469953,0xbb703c8e,0xbb04bbdc,0x3b7077f4,0x3b01603e,0x3b4fa313,0x3bc226b6,0x3bc6c665,0x3b9a5db3,0x3b4e75ed,0x3b7f3b4b,0x3aab963e,0xbb65d9ce,0xbb0e6b9d,0x3bcaec59,0xbbccb018,0xbc24d528,0xbc4bc7be,0xbc5ec13f,0xbc7c8052,0xbc40bf32,0xbbec4dd4,0xbbdc899d,0xbbbf58c5, +0xbbc9bfe7,0xbc56b26d,0xbc51973d,0xbbf016ab,0xbb8c958f,0xbb2b497f,0xbb8e9988,0xbb98e275,0xbbdcc31d,0xbb6a125a,0x39c5f1b9,0xbb2ca450,0xbadb8714,0x3ac2c663,0x3abf0da2,0xbaec3d23,0x3b15198b,0x3b76e48d,0x3ad9b66d,0x3a3a332c,0xbada8043,0xbbab9481,0xbbfd19be,0xbb262466,0x3bd21d34, +0x3c082495,0xbc3e694f,0xbc04dd32,0xbc1ed26f,0xbabd243f,0x3c810a76,0x3bb00d07,0x3a3709c1,0x3b736cd7,0xbbb668d0,0xbbb3fee6,0x3a903832,0x3b520518,0x3b07e436,0xbb417441,0xbbc488e3,0xbc138528,0xbc39666b,0xbbf75782,0xbbc9f870,0xbb0c3cb5,0xb89a6f12,0xb903ce96,0x3a644726,0xb99ba064, +0x3a9076ef,0x3b480b45,0x3b224576,0x3a2d656f,0xbafc8213,0xbabd57ea,0x3ab12b9b,0x3bd3bd03,0x3c196dc7,0x3aa78190,0xbc4feccc,0xbc6dd3b4,0x3b9e54ca,0x3c6427c6,0x3a1371f9,0xbc469593,0xbcd310a3,0xbce00cda,0xbca7b3d8,0xbb20e608,0xbc05c926,0xbc0ed83a,0xbbf737c8,0xbc1ece18,0xbc1f558e, +0xbc01a328,0xbbb79648,0xbb264b7b,0x3a28023f,0xba99f7da,0xbb428430,0xbad15378,0xba7bc2f4,0xba559942,0x38e8c79d,0x3ace095e,0x3aa1d517,0xb81518b0,0xba981673,0xba67df73,0x38c146cb,0x3b42fa9e,0x3b3d709b,0x3ad3ac18,0xbb6f3737,0xbbbf3c1a,0xba91216a,0xb89e157f,0xbb77f175,0xbc09c026, +0xbc47c36d,0xbc64b062,0xbcac6fb2,0xbc8b9b29,0xbc505745,0xbb4a8a1a,0x3aa5239f,0x3ba3f63c,0x3b88be27,0x3bae58dd,0x3b96057f,0x3b24ed11,0xbb140e59,0xbbbeb76a,0xbbe595e6,0xbbec0da4,0xbbc8bfaa,0xbb8670f6,0xbaec2769,0xbb4324bd,0xbb54872c,0xbb496490,0xbb230a03,0xba95cb3b,0xbaff4b86, +0xbb0193bd,0xba90879f,0xbaa471f3,0xb942e368,0xb99d8698,0x3a9cfa78,0xb9825ad5,0xba1b6c2d,0xbb05d1c1,0x3bfd0cf3,0x3a15de9a,0xbb879464,0xbb03b180,0xbb40a08d,0xbb7fdea2,0xbb826f5f,0xbad4ec9a,0xbae440ad,0xbb371ecd,0xbbc34ba1,0xbbc41e3c,0xbbc71f83,0xbbb3aaae,0xbb03de83,0x38c8afd5, +0x3a2b9677,0x3abd343d,0x39f6676e,0xba2fb3aa,0x3a08e3c7,0xbaca4973,0xbaed96f7,0xbb0682ae,0xbb299f48,0xbb2cb866,0xba5dcedc,0x39df1e8f,0x3abc460c,0x387a14dc,0x393b56d5,0x39fa85ef,0x3addc6bc,0x3b3e760d,0x3b9504e9,0x3adf1cd3,0xbb4230f1,0xbbe7fb87,0xbc2037d4,0xbbf9e573,0xbbf57bd5, +0xbbc72d65,0xbbb966e0,0xbbca81c3,0xbae9c63f,0x3a56a402,0x3b1105df,0x3a4d22fb,0xb939c7eb,0xba8ecda3,0xba962c2d,0xba893faa,0xba0a2167,0xb9ede4f4,0x38fb5166,0x3adebf49,0x39199909,0xbad92d9e,0xbb5aed91,0xbb71ad79,0xbb59d2f7,0xbb3bd99e,0xbb54facc,0xbb6adf8c,0xbb7dc4ff,0xbb940402, +0xbb999caf,0xbb8db853,0xbbb0af13,0xbbf1d0c8,0xbc0aecb2,0xbc22156b,0xbb44ddc3,0xbb342c2e,0xbb64ef18,0xbb39c08c,0xbb446d36,0xbb397677,0xbb21131d,0xbb1a63d1,0xbadebd97,0xbac7dc03,0xba529310,0xb9a55c7d,0x39e78539,0x3aa92cd6,0x3a9af137,0x3a96cd92,0x3a84903e,0x3a1304b6,0xba06b13a, +0xb924c31f,0xb8845fbc,0xbaa7c883,0xbb2cf859,0xbb2830d0,0xbb1a544d,0xbb30d2da,0xbb4ba89d,0xbb9c515d,0xbba3719e,0xbbbedc2c,0xbbc1e6ec,0xbbe9e7a4,0xbbcdd399,0xbbb040f6,0xbb8b0e69,0xbb7d6540,0x3acb3c98,0xbb0cee35,0xbb25e94c,0xbb49e36d,0xbb6a0f5c,0xbb89af8a,0xbba1073f,0xbbb8687d, +0xbb9cc402,0xbb7cca79,0xbb44ab8d,0xbb05d071,0xbaa1a33c,0xb9d16c14,0xb9fcc43c,0xb9d7ede0,0xb9a92b85,0xb9559461,0x3928fde2,0xb994366f,0x39a9b021,0xbab81e77,0xbb02ddba,0xbaba2d85,0xbaeab509,0xbb40e49a,0xbb4b851e,0xbb47a966,0xbb13911e,0xbb489caa,0xbb4757cd,0xbb188dfd,0xbb1a03e7, +0xbaaa77ec,0xbacd9204,0xbb1feeb4,0xba9ad1da,0xbb1c9c86,0xbb00e3ae,0xbb1fc5ef,0xbb2fbeb0,0xbb3f07d8,0xbb4a2f21,0xbb6682d0,0xbb460c65,0xbb37c673,0xbb28b699,0xbb1af74e,0xbb0c3fb7,0xbae81992,0xbaeda96a,0xbae78b32,0xbae2e64b,0xbae7493f,0xbad43167,0xbaef55a3,0xbaabedb4,0x3a2f9634, +0x3b801ffc,0xbb0e9ac5,0x39b02e43,0x3b84c2d9,0x3b8152f3,0x3b6faf4b,0x3b55f2a9,0x3b5773b2,0x3b4eb23a,0x3b3b1529,0x3977661e,0xbb1ce333,0x3b7707ba,0x3a8b89a5,0xbb2b5cdc,0x3b4c71d7,0xba49990e,0x3b9cbd4d,0x3b23a7d3,0x3b357edb,0x3b173513,0x3b31e408,0x3b423981,0x3b545f6b,0x3b5fd728, +0x3b67d734,0x3b6cca4e,0x3b6db785,0x3b645d59,0x3b4f736b,0x3b45441a,0x3b3ef56b,0x3b3deeb2,0x3b415027,0x3b23024f,0x3b8fb61f,0xbab857ff,0xbbaa33db,0xbc13e44d,0x397c3f55,0xbb9293e1,0xbbfaa056,0xbc061ae5,0xbc039f71,0xbbda6aff,0xbbfbd983,0xbc00980d,0xbbf9cda3,0xbb8493fc,0x3abc1edf, +0xbc069e94,0xbba4f515,0xbbaf03b8,0x3b80f2da,0x3b4ef5b4,0x3b1838b0,0x3ad904a8,0x3b12a119,0x3b2a5abf,0x3b59f403,0x3b812378,0x3b983366,0x3ba7e1bb,0x3bb8ee1a,0x3bb3879a,0x3b91747b,0x3b718974,0x3b46e0c6,0x3b43f7dc,0x3b242ccd,0x3b3ab05c,0x3b22600b,0xbbc2f0f8,0xb9b148b7,0xbad4cadb, +0xba7fdbbb,0xba8cc18a,0x3ad0b490,0x3ac1bade,0x3adef6e5,0x3ab301de,0x3b2926f9,0x3b49cdb1,0x3ab226e4,0x3afd21fa,0xba09815c,0xbab62cf9,0x3b359e3d,0x38a4367f,0x3b43be4c,0x3b802103,0x3adaaff6,0x3a528bc0,0x3aadb5c3,0x3b22cc7d,0x3b8e2ccb,0x3bb73016,0x3bde128e,0x3be09d49,0x3bf3c061, +0x3bdbfdb3,0x3b954a32,0x3b744780,0x3b36f52b,0x3b43e74f,0x3b0e478b,0x3b59134b,0x3a3da818,0xbb35cb30,0xbb106e34,0xbb3bbe59,0xba0ee4ae,0xbadbc958,0x3b3fb2dc,0xba46fbc2,0x3b446c9b,0x3b438761,0x3b662c01,0x3aa085cd,0x3ab27fce,0x3a6b09cb,0x3a780ff4,0xbaf9b9da,0x3afcb232,0x3a00e477, +0x3b7a2133,0x3b8331e0,0x3aaca6be,0x36a7a151,0x3a03e4a3,0x3a088b06,0x3b382f67,0x3babacfe,0x3c016f95,0x3c1a317f,0x3c3ed678,0x3c3c9ec9,0x3bf976ec,0x3ba1a54a,0x3b308602,0x3b15af69,0x3a6c9014,0x3b015bec,0x3a47a99d,0xbb806ba4,0xba68b8ac,0xbb94c135,0xba919948,0xb7d10e4e,0x3b9d29a1, +0x3b309e54,0x3b282b7a,0x3beef42a,0x3bd1cc2b,0x3bbdbf40,0x3b8226a2,0x3ba38daf,0x3b0ed8eb,0xbb078149,0x3b125e55,0x3a12952e,0x3b0cd5e4,0x3bb426bc,0x3b130293,0xb9a9ce26,0x39925a85,0x3ba8f2cc,0x3c4f3786,0x3c42bfbe,0x3c3cabad,0x3c36c6f1,0x3b07bf37,0xba99e6aa,0xbaa8dffe,0x3adbebe8, +0x3b758a63,0x3bee1816,0x3bc6d914,0x3bd69815,0x3af96a34,0xbb45d308,0x3aa2efd6,0xb97137bb,0x3b2d3768,0x3acc8935,0xbb05ca7b,0x3b5dd1ca,0x3b94cc40,0x3a72f86b,0x3a5ac201,0xbacdc8fa,0xbba5beb0,0xbbc3a828,0xbb1562cd,0x3bb14a02,0x3b9be650,0xbc12f2e0,0x3aa255db,0xb9fa56a1,0x3b53ea74, +0x3c8225ed,0x3c079f8a,0x3b5d486e,0x3b873548,0xbb215900,0xbb0654dc,0x3b185715,0x3b803a86,0x3b4cb325,0xba00814b,0x3a9f87cc,0x3b1ebcf5,0x3bab38c1,0x3b40517f,0x3b3db356,0xba032a7e,0xbb254e3a,0xba3ffe9c,0x3a8483d7,0x3af8b3b0,0x3b4d8597,0x3b576011,0x3b0d4fc4,0x38d094a0,0xbb10d4ec, +0xba3a1d09,0x3b025c5c,0x3bf330d5,0x3c05dd95,0x3b2ddd69,0xbc3bf3f8,0xbc01b1fb,0x3a96da6e,0x3c6be14b,0x3a30f6e4,0xbbd403f0,0xbbc318ac,0xbbc36bfe,0x3ba7ef28,0x3cd64358,0x3c80e032,0x3c218c92,0x3c015ae2,0x3c2d2c08,0x3c4ab5d5,0x3c4fe189,0x3c3b91d7,0x3bfe4b24,0x3b7698d9,0x3aa0cb01, +0x3b2e025e,0x3b392e1e,0x3acdabe4,0x3b05925e,0x39c9cdcf,0x3b149b02,0x3ab96852,0x3932789d,0xba33ba1f,0xb93420d5,0x3a3546bf,0x3b417d70,0x3b15f3fa,0x398c8195,0xbb82763d,0xbb9c31f1,0xbb2e22ef,0xbb1222b8,0xbb61c3da,0xbbf74e60,0xba2b2f8b,0x3b71609f,0x3c243d50,0x3c007f46,0x3baeb019, +0x3bdd3115,0x3b7e8da5,0x3bbeca71,0x3bd9fd99,0x3c056713,0x3c01c054,0x3bc32de0,0x3b881cd5,0x3b2722ba,0x3b23a80b,0x3a8de142,0x3915f447,0xbb023842,0xbb92120f,0xbb2b6c08,0xbb133aa4,0xbb187f4e,0xbae9637b,0xba4d84bf,0xbaa84033,0xbad1d999,0xba72de3d,0xba78e57b,0x3a034712,0x3aa81c7b, +0x3aa6189a,0x3ae46cd6,0xb93bb4f2,0x37604f65,0xba71c43d,0x3b613040,0x3c78a0b0,0x3c87ac67,0x3c8c08d6,0x3c7548de,0x3c682e57,0x3c69b5a8,0x3c3048cb,0x3c0a1f2a,0x3bccec4a,0x3b44992c,0x3aab5285,0x3a3dcee2,0x3a7a6e0d,0x3aa51b65,0x3b098335,0x3a9b50f8,0x3afc846b,0x3b13f0ea,0xb889e9ad, +0x39c88531,0xbae32e7e,0xbb097626,0xbb0372ba,0xbaea3bbe,0xb8574751,0x3af34c8a,0x3ad9b382,0x3a99b9ae,0x39ebbae5,0x3998c184,0x3ad154a1,0x3b22171d,0x3ad654c1,0x3b2e06ee,0xbc368287,0xbb80a044,0x39b1a865,0x3982833c,0x3af1a48c,0x3b722973,0x3bacd78c,0x3be4cda6,0x3b93e194,0x3b5747ea, +0x3b49cc02,0x3b520c76,0x3b5f10c1,0x3b499f38,0x3b67d86f,0x3b7dc44d,0x3b84b9ab,0x3b7fef16,0x3b364c16,0x3a3dcff7,0xba13cc18,0xbaddefe7,0xbb7763d7,0xbb1c621f,0xbb0a1d1f,0xbb193e04,0xbb185787,0xbb3bcbbf,0xbaf3426d,0xbb246ec2,0xbb285272,0xbb02cde8,0xbb58659a,0xbb90d83e,0xbbf0aec2, +0xbbda56c7,0xbb20ac7b,0x39af3cfe,0x3adba901,0x3ac673cb,0x3b0fb435,0x3b30abce,0x3b707e35,0x3ba852df,0x3ba56abc,0x3ba6a749,0x3b9c7f03,0x3b891f14,0x3b6dd0b3,0x3b459cbd,0x3b4769fb,0x3b3d2027,0x3b3c016f,0x3b22ea75,0x3b3b5eb7,0x3b032ee9,0xb9e2b0e8,0xba994629,0xbb0ce830,0xbaf342ce, +0xbb25a49a,0xbaebafdf,0xbb6b970a,0xbb397ff4,0xbbaedcb6,0xbb9b743f,0xbbd0e389,0xbbd36fbe,0xbbccfb9d,0xbbcc2a29,0xbbdf0f8e,0xbb761a94,0xbb617e53,0x3a275c27,0x3a6a070e,0x3aa69ebc,0x3aeba625,0x3b109c40,0x3b1e9914,0x3b278dd0,0x3b063bba,0x3ae37adc,0x3acc8150,0x3aadbc33,0x3a886da4, +0x3a1d5a85,0x3a585422,0x3a828825,0x3aa1b668,0x3ab0e9c2,0x3ab66b49,0x3b061c92,0xba0e0a4e,0x3a909bc8,0x3a2b0a1d,0xb990038e,0xba806026,0xb9b320f3,0xb7c27d2b,0xb95c9ece,0xbaa5ab66,0xb9120fbe,0xb8665721,0xba7ecdf9,0xba04db67,0xba9b94d6,0xba5576e3,0x39c704c2,0xb8db0cad,0x3b2550e5, +0x3ae33cd7,0x3afe077b,0x3af97254,0x3afdd1f4,0x3b0577df,0x3b158ece,0x3b0e7a02,0x3b07b23d,0x3af725af,0x3ae2e0c0,0x3ad3f4f9,0x3abdd24e,0x3acc69aa,0x3acf6b7e,0x3ad10310,0x3ae19eb9,0x3ad29252,0x3b181aae,0x39329393,0xbb089f0f,0xbb97b158,0x3a14881f,0xbb202abd,0xbbb1a39d,0xbbb209ff, +0xbbac1ab3,0xbb9aa4d9,0xbba59337,0xbba18e32,0xbb9b8001,0xbb2db968,0x39b533b9,0xbb91d953,0xbb280c91,0x3b079c15,0xbb20e73d,0x3b23bc90,0xbb80d2f1,0xbb06dde8,0xbb19faf3,0xbb0cc747,0xbb252b39,0xbb2c1d38,0xbb3774f6,0xbb21c51f,0xbb18043d,0xbb13c2a9,0xbb061065,0xbb087978,0xbb13acb1, +0xbb310cd4,0xbb3cb6be,0xbb3ed442,0xbb381be8,0xbb1ef573,0xbb7dca3d,0x3b05c893,0x3b956a35,0x3b9cd355,0x3a6b6a3c,0x3b9b5e3c,0x3bb831a3,0x3bbaec2b,0x3bbedc9e,0x3bb785b9,0x3bcb6e08,0x3bcba192,0x3bc3b3c7,0x3b9c9b8f,0x3a1e0ca4,0x3bac05fd,0x3bb975da,0x3bc7d7e3,0xbb07c539,0xbb132776, +0xbadecbd1,0xbacde780,0xbb1b22dc,0xbb3dfaad,0xbb60ddd1,0xbb3ef2cb,0xbb1eee9a,0xbb017e0c,0xba9fb693,0xbab32919,0xbb0f7818,0xbb732fb3,0xbb8d07cf,0xbb8da5fe,0xbb74ce83,0xbb84e403,0xbb24461b,0x3b5df3a4,0xbad24653,0xba7ed81a,0xb8a54bfe,0x3a817011,0x3a15510f,0xb9dd88be,0x3925aec9, +0x3b3a9d95,0x398ecf9d,0xba1d3a28,0x3a97a947,0x3a03d3ee,0x3af688f3,0x3ac6b45a,0xba29d214,0x3b6070b8,0xbabe7e0a,0xbb44e096,0xbaddcac4,0xbaeac847,0xbb4d506c,0xbb62638a,0xbb9a32ac,0xbb420a2e,0xbaf9cb4f,0xbaff6b7c,0xb98f4671,0xba0e26a6,0xbadb8971,0xbb8f2f2b,0xbbb3eba8,0xbbb7332f, +0xbb9d3692,0xbbb6464b,0xbacb6138,0x397fcbc5,0xbab76846,0xbb27b876,0xba4d20a9,0x3aa1f4f4,0x3aa95fba,0x3adfdb4a,0xba222aab,0x3ba82417,0x3aa237a4,0x3b48bb3e,0x3acb6c3e,0x3af07853,0x3af40d60,0x3aa9cbf4,0x3af9f013,0x3b97e49a,0xba4ca86f,0xbab5c8cf,0x3a0f2d9f,0x3a156fa1,0xba5d9872, +0xbb3eb004,0xbbba0204,0xbb5c951f,0xbb00dfcc,0xba9519a1,0x3b18771c,0x3b3963f4,0xb967f994,0xbbaff8eb,0xbbffc862,0xbc053f77,0xbbe805ca,0xbbf50169,0xbb455ed3,0xb9ad9b84,0xbb958c60,0xbb35216d,0xbb20affb,0xbab02195,0x3b3f961c,0x3ac84af8,0x3b299e2d,0x3bc202fc,0x3bcda691,0x3b93d59b, +0x3b73ea23,0x3b6ee416,0x3b13c935,0xbac6879b,0x3a80c7e2,0x3bd638cc,0xbb82b5d1,0xbbfcbb66,0xbc090862,0xbc26d4ba,0xbc2e97db,0xbbc97448,0x39aa9e71,0xbaf09603,0xbb0b5726,0xbac1891a,0xbc2d0936,0xbc496915,0xbc14e747,0xbb902098,0xbb100030,0xbb940853,0xbb1aa927,0xbb718937,0xb954eb98, +0x3b0d4038,0xbb024256,0xb90b1360,0x3ae01d8d,0x3afb0832,0xbaf6ac42,0x3b7391a5,0x3b973cf4,0xb888ee01,0x39894642,0xbb0c62a8,0xbb93045d,0xbba5c37d,0x3a38b0c7,0x3bf89efe,0x3c06acd6,0xbb874741,0xbb340210,0xbc05b0a7,0x3a087144,0x3c7566e0,0x3c22d7e8,0x3bcc7d10,0x3bd181c6,0xbb33776e, +0xbb83c66c,0xb9b54ace,0x3ba64fed,0x3ba1d112,0xbacb7a99,0xbb712d1c,0xbba93947,0xbb9a1401,0xbb318011,0xbb7f23af,0xbad22a07,0xba291335,0xba503297,0x3adf746e,0x3745f07c,0x3aa1be12,0x3b26d9cf,0x3aa87ee3,0xba48cd04,0xbb3acd12,0xba8c571f,0x3b109768,0x3bc337a5,0x3bed3bd7,0xba40b1ef, +0xbc383851,0xbc24a9aa,0x3a554fc1,0x3c2662e7,0xbb6b6746,0xbc3848be,0xbc74eb92,0xbc9abc76,0xbc373875,0x3c219096,0xbaecf0cc,0xbb9a233d,0xbb281edd,0xbba9b8fb,0xbb9cad4a,0xbb20d87f,0xba913608,0x39868bdb,0x3af952fe,0x3938589e,0xbb10148f,0x3a6b010d,0x3ae0a40f,0x39d7ad4c,0x3ab57e50, +0x3afc549e,0x3a75cfa1,0x38fcc864,0xbab06484,0xba8a968c,0x3a07ebb7,0x3b06ff27,0x3a94a0d6,0xba5483fe,0xbb18e05d,0xbb86e738,0x384d1847,0xbb7262e0,0xbaa40ffc,0xbba8368f,0xbb830947,0xbac32404,0xbb9129a1,0xbb120af0,0xbae91664,0x3a220df9,0x3b47590a,0x3be54466,0x3c137498,0x3c0df8fa, +0x3bf6740a,0x3ba04daf,0x3a8e78d9,0xbb28b45a,0xbb952db2,0xbba652a3,0xbbb0e92d,0xbb5934ac,0xbaee7ab1,0xbb41c9c1,0xbb3754c0,0xbb112a59,0xbadcf506,0xba849302,0xbab406c6,0xbaaaadd0,0xba9f3458,0xbaa2cf3e,0x37ff3996,0xb9f2b183,0x3a6f8794,0x392035a4,0x3a4347ef,0xb97c6146,0x3bd6d03f, +0x3b4d3a46,0x3b80e7b9,0x3be9254a,0x3bc26b49,0x3bd00e9b,0x3bb022d5,0x3ba19159,0x3b9b12cc,0x3b80b0bd,0x3b713d2d,0x3aa2d3fd,0xb9a842dd,0xba7bdabe,0x386c9da2,0x3a805829,0x3a7efaf0,0x3ac73401,0x3a45e2e5,0x3a48bc62,0x3ae1efd7,0xba8d6376,0xbb1b9e31,0xbb239e0c,0xbb21ee02,0xbb063fa4, +0x3a02e754,0x3acb069e,0x3b0bf867,0x3a4d2bb5,0x3a8cd7af,0x3ab8e7b5,0x3b38ec01,0x3b7ed30a,0x3b872406,0x3b678904,0xba70822a,0xbb30a33b,0xbb83dd75,0xbb0f4d84,0xbb35b619,0xbb2c95a3,0xbb35f33a,0xbb1da10f,0xba07742b,0x3a067788,0x3a9699a3,0x3a12d5fc,0x3a69defd,0x3a905842,0x3ac32323, +0x3a9b4430,0x399cf50b,0x3934a7b6,0xb96d1a5c,0x3a01ea4c,0xba83c836,0xbb1538de,0xbb0c6862,0xbb107180,0xbb1919e5,0xbb2f0e7a,0xbb409fda,0xbb38caea,0xbb2c6e81,0xbb1cf02f,0xbb088052,0xbadbadd5,0xbb0609ac,0xbb552f35,0xbb9ff742,0xbb9e0301,0xbad9160b,0xbb05ed69,0xbb53bbc8,0xbb16412f, +0xbb207e5d,0xbad36e8c,0xba669384,0xb98558eb,0x3a117271,0x3a88f3dd,0x3adaf5de,0x3ac0695f,0x3ab147c0,0x3abf89d5,0x3a9ea285,0x3a973bae,0x3a789a18,0x3a2c0cab,0xba26b56f,0x38e3c0df,0x3a63f064,0xba25e5dd,0xbb031942,0xbb0b8624,0xbae34056,0xbb0d3b71,0xbb0c9a70,0xbb74a2ae,0xbb4e7086, +0xbb9d7ee7,0xbb9d5a52,0xbbca1f8e,0xbbb5f360,0xbb9f72f3,0xbb86c114,0xbb5a2685,0x3af72753,0xba2883b2,0xba89e6df,0xba845b11,0xbaa5b6e6,0xbad36621,0xbb08dba1,0xbb203a8e,0xbb1ba068,0xbb0e75d1,0xbaf0ae94,0xbab39d6e,0xba50b677,0xb8f5e2c2,0xb8e8170a,0xb871c407,0xb7dfab27,0x38cc6092, +0x394c7891,0x38ec0951,0x3ae282f2,0xb948d002,0x37909420,0xb5c162b8,0xb793d272,0xba7fffba,0xbac58f7b,0xba9a8dc9,0xb9fc2016,0xbadb83a3,0xbb1043f3,0xbad0a682,0xbac5875d,0xb9ee09cd,0xb9953380,0xbaa89dfb,0x3a8cec9d,0xbaec2f86,0xbaa3d69d,0xbac8c49f,0xbadb34cd,0xbae34d00,0xbae708c1, +0xbaf93034,0xbae1f82b,0xbad7ae88,0xbad25d99,0xbac99a98,0xbac5640f,0xbab7a93b,0xbab797f1,0xbaaf3c33,0xbaa91f8d,0xbaa52634,0xba8d6036,0xbad47398,0x3a80d99c,0x3b371202,0x3b690826,0x397d020e,0x3b2fd62c,0x3b677926,0x3b69c0b2,0x3b571142,0x3b3403ef,0x3b48d4ce,0x3b441ec1,0x3b2d6766, +0x3b061871,0xb986e237,0x3b4005b7,0x3b3471cb,0xbae1677c,0xb78ba087,0xbb86cf25,0x3aa76f7a,0xb7a69040,0xb8fcb193,0xb9ad6948,0xba4595d6,0xba41ec67,0xb9d9fc92,0xb8d17528,0x3909e272,0x3995edab,0x39adcefe,0x397b3e5c,0x38c34f82,0xb9304d0a,0xb9958835,0xb9b4e741,0xb9a96aba,0xb9c0b687, +0x3a6113ed,0xbb96f2a1,0xbbba834e,0xbb6bccd5,0xbb647ffb,0xbbad8bc2,0xbb42b0c1,0xbb6c4154,0xbb6b8296,0xbb2a2960,0xbb7a0302,0xbb83c86e,0xbb782b14,0xbba75377,0xbb34eecc,0xbb4977bc,0xbbb46769,0xbb8844a2,0x3714ef41,0x3a892501,0xb9383db2,0xba12cbef,0xbb10ee27,0xbb2d2257,0xbadd1ed9, +0xba65d176,0x384cba7f,0x3a2f8661,0x3ab4e4c8,0x3ac2515b,0x3a67f281,0xb982e1f6,0xba948ce8,0xbab94f00,0xbaeee74c,0xba73d9d1,0xbadbf34c,0xbba46579,0xbb14e2a8,0xbb8221cf,0xbaff31c8,0xbaf21f26,0xbaa14981,0xba59c9ed,0xbab63205,0xbabd0a14,0xba28e879,0x39b6a01e,0xb935f35c,0xb99d9d2c, +0xbac6666a,0xbb1d98c5,0xb8053567,0xbb213e54,0xb9ad1a13,0x3af30568,0xba37644c,0xba7a0e11,0xbb90f241,0xbba1fd92,0xbb34ad6c,0xba8b4d99,0x3a3b87d0,0x3a8ea6fd,0x3b01e1c7,0x3ad99633,0x39e70a6f,0xba8f3e0c,0xbb139346,0xbb1e6c8e,0xbb342dc8,0xbab1d048,0xbb1dba0a,0xbb97fd74,0xbb69e072, +0xbb813906,0xbab2fba2,0xbaffc4dc,0x3a5c1a80,0xba78848b,0x3adc7959,0x3ab1cf6f,0x3b019c32,0xb7a83763,0x3a45dcda,0xb8dfd069,0xb83ad9f4,0xbb014b02,0xb9c1687b,0xb9f22b1a,0x3abb0743,0x3b800d90,0x3a73cd77,0x39014429,0xbbbb11a1,0xbc0bdaf6,0xbbc50f2e,0xbb4a7a70,0xb888f478,0x3afae3ae, +0x3b9371eb,0x3bb1233f,0x3b41d191,0xbab5a479,0xbb908b4e,0xbbb08d1c,0xbbc6240f,0xbb6fb27d,0xbb59e925,0xbba0bcaf,0xbb0ba1c9,0xbba4900e,0xba98d06e,0x395a5e67,0x3b82505a,0x3b087aa8,0x3b1a9867,0x3bf614bf,0x3bc6daae,0x3bb26ef5,0x3b9b14b8,0x3b878285,0x3aa4c909,0xba5c62fc,0x3a8cb6b6, +0xbbb34c36,0xbbab88ec,0xbaf35bd9,0xbb992bc5,0xbbd720d8,0xbc007dbd,0xbb8ba23c,0x3b41c145,0x3b886876,0x3bc1d46c,0x3c090dd4,0xb8d8bfd1,0xbb4f0998,0xbb1224d9,0x3997a67f,0x3b069f75,0x3ba069e4,0x3b4894bd,0x3b1967d2,0xbb0b3451,0xbb84a4b3,0xb84b4241,0xb9712c3d,0x3ad7bad6,0x3a886528, +0xbb05ceb2,0x3b92e432,0x3ba58996,0xb9a74573,0xb9ef6c22,0xbb3ebd65,0xbbb51aca,0xbb96f577,0xbaa2bfc7,0x3b81f177,0xba3a60c8,0xbbe4bc04,0x3abd7db6,0x3b138987,0x3b72bb86,0x3c62178d,0x3bdf3d72,0x3b18d881,0x3b227fd5,0xbb550d37,0xbb4255c0,0x38b4f44d,0x3b9bd4d6,0x3b905e98,0xbb1f6797, +0xbb2cdce0,0xbb75f12f,0xbb48d5ff,0xbb5ef77e,0xbaf72082,0xbb67dfac,0xbb64f51b,0xbb02ca81,0xb822e490,0x3a89ac36,0x3b123e1f,0x3b22f6e4,0x3a811aa6,0xbaa37734,0xbb4ca9fa,0xb996fbfb,0x3b2851b7,0x3bc4121b,0x3ba64af1,0xbab66d13,0xbc4a1158,0xbc012692,0xbb20bde6,0x3bc5e855,0xbbd8b1f4, +0xbc59d5ec,0xbc8a4d93,0xbcbaa476,0xbc69c77c,0x3c0f5dae,0x3bd7893d,0x3bc70c29,0x3bacbea5,0x3b29505c,0x3ab41f0d,0x3af74cd9,0x3b71fb6c,0x3b7e9254,0x3b7db30f,0x3ae16c5d,0x3b1e727a,0x3a819946,0xb822994e,0x3a84663e,0xb87141bc,0x3a57a28b,0x397f5788,0x38bf2b6e,0xba9762d6,0xba187e71, +0x3a6e8cb0,0x3abd75e8,0xb8710877,0xbb30bd88,0xbb598f83,0xbb423a8e,0xbb1a2a40,0xbb984a6f,0xbae8c176,0xbba817a1,0xbb8850d2,0xbbb379b0,0xbbcb7070,0xbb884d90,0xbb30ed04,0x3b64d3d1,0xb9fef4cf,0x3abc80b8,0x3b803b4e,0x3b8f4a64,0x3b910a6b,0x3b5fc7ca,0x3a195af3,0xbb0dc278,0xbb3ce27b, +0xbb63ba68,0xbb2bca18,0xbb43fc57,0xbb9912f1,0xbb67e333,0xbb37afdc,0xbb09c136,0xbac23cd6,0xba9225d9,0xba1a8d59,0xbaabe0a2,0xbab245eb,0xba8e56e4,0x39f60abd,0x3a4f4fc8,0x3a17793a,0x3a46bbf7,0x3a94f72f,0x3a8b8bcb,0xbb291b6e,0xbbc7102a,0xbad61b1c,0x3a143026,0x3b4573a6,0x3b43d109, +0x3b75b0f8,0x3bb41ad4,0x3b99e885,0x3b66a465,0x3ac325f8,0xb9e982cf,0xbad0c549,0xbb149684,0xba1ed2fe,0x3a230359,0x3ad6a94b,0x3a804e0f,0x3a952668,0x3a672924,0xbaa8e57a,0xbab19d1c,0xbb29e1e9,0xbb3931ba,0xbb154794,0xbae3409a,0x3a163ba9,0x3b111d88,0x3a8928bd,0x3a5eea63,0x397c2ea7, +0xb8d3447c,0x3ad295bc,0x3b0a1581,0x3a7b41f7,0xbac3da09,0xbbe1eed9,0xbbc36c30,0xbae095a8,0xba32ac2f,0x3a561e13,0x3ad4fafa,0x3b0eaabd,0x3b0062e3,0x3b1f9c55,0x3b27d0d1,0x3b32cc6c,0x3abbc164,0x3a4fb585,0x3a01d34c,0x3a54b443,0x3a89de6d,0x3aca345c,0x3ae219f4,0x3a9ba69f,0xb9079c64, +0xbae8623a,0xbb39a410,0xbb8b3e77,0xbb375229,0xbb0c52e7,0xbb2abedb,0xbb29c36a,0xbb2b8ed2,0xba585075,0xba88b957,0xba677205,0xba1f1f5f,0xba8438d7,0xbb23f4b6,0xbba300e2,0xbbb97cc8,0xbba6c5aa,0xbb2277b4,0xbab4ec8d,0xbaf358c7,0xbab8ab5f,0xba937f99,0xb9a71bec,0x3a1b7dbf,0x3a8259bd, +0x3aa2a584,0x3ac93024,0x3ae9c0f6,0x3b08ace5,0x3b14ff9c,0x3b0f5a85,0x3b09dda0,0x3b0f7162,0x3aa23a36,0x3a7d22ac,0xb9d1b31c,0xbade3912,0xbad4ec5b,0xbb05246e,0xbaff832b,0xbb1804ff,0xbafb551f,0xbb3d43b4,0xbb2dc651,0xbb96deef,0xbb8f6387,0xbbbfaf49,0xbbd05321,0xbbdd720e,0xbbf23dbc, +0xbc05b0ba,0xbbbfd915,0xbaf29295,0xba0ad128,0xb92dd7af,0xb8b249c5,0x39795370,0x39abdf33,0x399910ec,0x39295579,0x39bee037,0x3a36d659,0x3a83e8d2,0x3a9ed59c,0x3aa2c71b,0x3a92adc2,0x3a9cb207,0x3aa41cf8,0x3ab96a3e,0x3abcfdff,0x3ae436f4,0x3ae9c4c5,0xb95db590,0x399a877c,0xba44254e, +0xba7f0710,0xbafe1276,0xbb12d074,0xbb011eb1,0xbb207cc9,0xbb4133bd,0xbb0bc7fc,0xbae370ec,0xbb0fa09a,0xbad5fe04,0xbac8576d,0xbac06ed1,0xba2b68c8,0xbb2387c5,0x38ba5ee0,0xb9977ac0,0xb991807e,0xb9948814,0xb988d2b7,0xb91ff477,0xb843aaba,0x38b3a8cc,0x38c9c892,0x38ad62c8,0x38bf63bf, +0x3923ab4e,0x397aac0e,0x398cf46b,0x3990fc21,0x39910dd2,0x39ae6b76,0x398b4e39,0x3a6b576b,0xbaf02930,0xbb3e134b,0xbb04b8c9,0xbb09060b,0xbb68eb0a,0xbb28aead,0xbb351a27,0xbb3625a8,0xbb25b369,0xbb46e68a,0xbb4abd61,0xbb4cd012,0xbb769a85,0xbb26301a,0xbb09f698,0xbb5c1b56,0xb9e88a8a, +0x3aafd155,0x3b8fcf77,0x3a3dab3f,0x3a95665f,0x3aa466b4,0x3a8996a9,0x3ab1b8f9,0x3abfafa3,0x3ab0359d,0x3ade35c1,0x3ae9029f,0x3ad56ed6,0x3ae9d4a8,0x3ae863a7,0x3af2c025,0x3ab39b62,0x3a97dc47,0x3a82cd6f,0x3a8829e9,0x3a648015,0x3a15b1f7,0x3b79192b,0x3b4a0132,0xbaeea5f4,0x3b8049f6, +0x3b7275fd,0xba2cfc03,0xb9a574e5,0xb9059c35,0xb871baed,0x39c5e56c,0x39e7a33b,0x3a2929d4,0x3b786112,0x3b83983c,0xba527ec4,0x3b7f58fc,0x3b599009,0x3b2e5719,0x3ac7f181,0x3b05b8c9,0x3abca75e,0x3b0a78b1,0x3b125ae3,0x3af8651e,0x3b29a86f,0x3b391a59,0x3b32f82c,0x3b57bbd6,0x3b5de8e2, +0x3b5baa13,0x3afbd00f,0x3aa2ebfd,0x3a56f157,0x3a5a20d2,0x37955575,0x3aa2c5ab,0x3a1965b3,0x39a7343f,0x3a86c4d0,0x3aa0b5e1,0x3ae8ceef,0x3b1c14bd,0x3afdcf59,0x3b38a9d7,0x3b7f6895,0x3b301023,0x3af7ef42,0x3b3361fe,0x3b1d36ae,0x3b16f859,0x3b3705e5,0x3b32d08a,0x3b957b71,0x3afb06dd, +0x3a8cd4d1,0x3affa5fe,0x3a364565,0x3b0af016,0x3b4df690,0x3b18a572,0x3b917f54,0x3ba3da81,0x3b7f1dbd,0x3ba7278d,0x3ba4d37f,0x3bb1cf9c,0x3b2f1b1e,0x3ab5dca2,0x3a1abcdc,0x3968cdb8,0xba43b89a,0x39af1a3b,0x3a31b1ba,0xb982ca3f,0xbaad3052,0x3aa321ef,0x3aeef99c,0x3b084081,0x3af03856, +0x3a922b2f,0x3b92ce0a,0x3aaa347b,0x3b1fcfab,0x3b2b39b7,0x3b08f93e,0x3b2832df,0x3b132a25,0x3b6fca85,0x3bbb77a6,0x3b516b22,0x3b2c5ef1,0x3b788303,0x3b0aaf35,0x3b8d2ab8,0x3b940176,0x3b395112,0x3bb9190d,0x3bcf48c1,0x3baf21b9,0x3c05116d,0x3c21c11c,0x3c1f09fb,0x3b9db861,0x3afacebf, +0x395b2915,0xba6113f7,0xbb388e37,0xbaa391e5,0xbabf8138,0xbb4d7346,0xbb47e941,0xba08cfe7,0x395ffa80,0x3b34ae01,0x3ae7a896,0x3b117bbf,0x3bc32613,0x3bc34c65,0x3b947fe9,0x3b90209c,0x3b69ecb3,0x3b389c8e,0x39e40324,0x3b800d56,0x3b6e3d1e,0xb9d440fb,0xbb008eb8,0xbb17f209,0xbb986f12, +0xbb4e35bd,0x3adce0e2,0x3c1dbec9,0x3bd812c1,0x3bb4c6b0,0x3bdee1d5,0xbb5b4775,0xbbf5ad93,0xbbf7d4b7,0xbb1ec049,0x39bbe9c0,0x39224138,0x3b3bd7b5,0x3b3c6bf2,0x3b52838f,0x3afb8d82,0x39bb377b,0x3aed63a4,0x3b033352,0x3af2a65c,0xbaf1c045,0x3ba05b34,0x3bb034f7,0xba2aff80,0xb9a551b7, +0xbb41373a,0xbb895292,0xbb2a329a,0x3b1c79d8,0x3bdb85f2,0x3bbbd2b3,0x383c30e0,0x3b4e674c,0xbad1ec22,0x3b874b7c,0x3c48781e,0x3c4adfe9,0x3c205780,0x3bd53781,0xb9cf5986,0xbb08c009,0xb9d85ec7,0x3bc7898f,0x3be1ffd7,0x3a51cbae,0x387a391a,0x39c5697d,0x3b6c48db,0x3b37c31a,0x39a20e56, +0xba9cbae8,0xbad0eb6b,0xba9e425e,0x3ad4eff6,0x3a328dc2,0x3adc3584,0x3b114486,0x39b2fc40,0xbaf16f39,0xbb4f0df1,0x39567428,0x3b54d0c8,0x3ba54f64,0x3b884c89,0xbb17c8bd,0xbc1c1b53,0xbbbcbe3d,0xbb1f2906,0x3b1a4d98,0xbc067a44,0xbc18d4d7,0xbadb901d,0xbbc064b8,0x3a34bc52,0x3c8bde64, +0x3c14e769,0x3bb36a90,0x3b9e11ea,0x3b88fccf,0x3b9da2da,0x3bcc3de0,0x3bd293b8,0x3ba7d3ab,0x3b621acb,0x3b0d1b34,0x3a1fff0a,0x3b337285,0x3b4f7533,0x3ad426c5,0x3af79e83,0x3ae9a66b,0x39f6b808,0x38e25d93,0xba9387f4,0xba2a49cc,0x3a93bcef,0x3a725c9a,0xba22e460,0xbb35178f,0xba8da54c, +0xbaee4995,0xb9188677,0xbb8d95f4,0x3a1e47de,0xba3cef13,0x3ba9dbf4,0x3c2cc5cc,0x3c6a3e18,0x3c517e72,0x3c16cc3d,0x3b94676a,0x3b887e65,0x3be09993,0x3c2a6249,0x3c1ff77c,0x3c1129dd,0x3bdc5988,0x3b8f880a,0x3aff8bbc,0xb8520745,0xba8b4179,0xbb2efc1a,0xbb13de55,0xbb2be90c,0xbb34590f, +0xbb1835a9,0xbaae5aa6,0xba3d05d0,0xba4f3b0e,0xba0d96c8,0xba197406,0xbaa05c44,0xba84babb,0x398390e7,0x38809fce,0x3a091817,0x3a9284d2,0x3b195067,0x3aadc31a,0x3ab5947e,0x3b51fa37,0x3c20afea,0x3c4b617c,0x3c4dd1ed,0x3c71d736,0x3c6f4f3b,0x3c5255d9,0x3c3e97d4,0x3c2df3e9,0x3c43e7ff, +0x3c057192,0x3bb73c2a,0x3b74a8dc,0x3b245fcc,0x3af418ff,0x3aa0b5b7,0x3ab897d7,0x3aa61591,0x3afc03f6,0x3ab520e6,0xba327891,0xbb2c3fa3,0xbb38c354,0xbb0d3a2d,0xba87365a,0x3a9d7085,0x3b0e509c,0x3b0d7276,0x3ae2fcf2,0x3afae1e3,0x3b03f023,0x3b547fa8,0x3b6f4f8f,0x3b0ace17,0x3b697e00, +0xbae8080b,0x3ac9da62,0x3b670f2a,0x3b90670c,0x3b898f1b,0x3b5256c4,0x3b2b35ba,0x3b6e7d48,0x3afd9bf2,0x3a75eeac,0x3a02e5bd,0x3a6292df,0x3b0869c5,0x3b49d0c0,0x3b730201,0x3b60f9b1,0x3af679e1,0x3ace6687,0x3940b9f9,0xba7eee73,0xbb041dfb,0xbb25080a,0xbaba6b9a,0xbaa61e50,0xbae0204b, +0xbb1cfbae,0xbb16f75c,0xbaef47c5,0xba5b3351,0xb86d7465,0x3a13e957,0x3a84b7ac,0x3a831c41,0x3a553c47,0xba69350c,0xb6bcd9dc,0xbab8aab7,0xbab0f655,0xbae15472,0xba641fc3,0xb9ddb10a,0x3a495c60,0x3aec1fc3,0x3b3eb117,0x3b5a007d,0x3b73c4df,0x3b76714f,0x3b43bcfc,0x3b09e8f8,0x3ab9b5ed, +0x3aa6d79a,0x3ab13bc5,0x3abb8e7e,0x3a8d61e1,0x394f7d3b,0x3a001a80,0x3a419c37,0xba01a7ed,0xbabeb42f,0xbadc81ba,0xbadb4ed7,0xbafa229d,0xbb0be895,0xbb2f5340,0xbb26fd09,0xbb7f6e58,0xbb8d8ffc,0xbbaa43f5,0xbba567e3,0xbba2d9e6,0xbba60b04,0xbb5b94e1,0xb7f542d0,0x3a348ef2,0x3a26d79a, +0x3aa3f0f5,0x3abe7bea,0x3ad46e02,0x3adab760,0x3afa90ec,0x3aacbb87,0x3a66288e,0x3a2f3994,0x39ff59d7,0x3a0a348d,0x3a212137,0x3a2836f3,0x3a0e0669,0x39eb3460,0x39e94998,0x39729088,0x3a0a8f93,0x3ab7df96,0x3a3502e5,0x3a9c056a,0x39e3d8e8,0x39f81257,0x3982b42f,0xb95284bf,0x389f5725, +0x387ab82e,0xba0995bc,0xba9a7dfd,0xba9e9388,0xba615e7d,0xb9d2cc04,0x3930ab77,0xb897fab3,0x3ac693d4,0xb9cc0264,0xb94d46f2,0xb8ce9506,0xb811dc77,0x391829e1,0x39a9a3b9,0x3a1ae6d5,0x39c72ee1,0x398d8170,0x38ca0a8b,0xb771d501,0xb928b2c6,0xb9a70924,0xb99fc815,0xb98dafe8,0xb9893f88, +0xb93c1fc4,0xb8e1ead3,0xb9ef44a8,0x3ae0ef19,0x3aef8a12,0xb9a2fa06,0x3abe2318,0x3ae42788,0xba4bab09,0xba2dad73,0xba48b90f,0xba8351ea,0xba3f4e94,0xba363e41,0xba67d4dd,0x3a66ac34,0x3a566cef,0xba8901a2,0x3aa2f772,0xb98bd49f,0xbb41c0a5,0xbb76d6c6,0xbb430ad6,0xbb1be0a6,0xbb36dd64, +0xbb2e93d6,0xbb6f8769,0xbb7c861f,0xbb6ff760,0xbb55b651,0xbb450b58,0xbb3e15a1,0xbb340957,0xbb340e3c,0xbb2ec8ca,0xbb4acc61,0xbb559607,0xbb5e9028,0xbb5bbe47,0xbb42dca6,0xbb54ce2a,0xbb86e089,0xbb030a7e,0x3b5d9254,0xbb87ff2e,0xbafa62cf,0x3b5fee09,0x3b496928,0x3b441596,0x3b4a837d, +0x3b25309f,0x3b1d1ef9,0x3b255d8e,0xbb05d248,0xbb8b5def,0x3b6e9afb,0xbac63547,0x3a22df0e,0xbb569362,0xbab5d6f1,0xbb0e027a,0xbb0ef025,0xbba6f0f8,0xbbc74b2a,0xbbb42559,0xbb9a6711,0xbb802d80,0xbb6235f2,0xbb271a8c,0xbb1285a3,0xbb15455c,0xbb79eb7d,0xbb9c6210,0xbbae184b,0xbbad8340, +0xbb953b46,0xbb9c0659,0xba94ecd5,0xbb4d94e5,0xbb84d0d7,0xbad40591,0xba8c0648,0xbb213adf,0xbb0a2768,0xbb3ae544,0xbb07d037,0xbb2d0116,0xbb02756e,0xba42dd13,0xbacf9f70,0xba6fd105,0xbabbdf86,0xbb09566a,0xbafc24c1,0xbb3e45ed,0xba9e8e51,0xbb1c7fa0,0xbb07de74,0xbbf667cc,0xbc156b93, +0xbc02b818,0xbbc552c1,0xbb8ceae1,0xbb887361,0xbb341b5f,0xbb2ab9bd,0xbb1f1696,0xbba3e6f3,0xbbcf0d2f,0xbbe6c374,0xbbd6a5ce,0xbbc22cf3,0xbb8a57d7,0xbb8032bc,0xbb5a7603,0xbb68f469,0xba9ef72c,0xba174a2c,0xba175f9c,0x3905acf9,0xb92c98d3,0x3a40a2bd,0x38577883,0xb94dca1a,0x3a03b865, +0xb99feb04,0xb909e6fa,0xb9e66f0c,0xba8ecb98,0x3a5dceed,0xba528847,0x3b17743f,0x3a986670,0x3a86dfcd,0xbbfa0500,0xbc436960,0xbc38d1d9,0xbc09bddd,0xbbc90749,0xbb9f42b5,0xbad824b6,0x394c226a,0xb984ee98,0xbbc5aa4d,0xbc1c92c9,0xbc388c03,0xbc30de3d,0xbc0fcd30,0xbbca0d56,0xbb7e23f4, +0xbb717339,0xbb842b8d,0xba8514a0,0x39d816d7,0x3b32cf9e,0x3ad766aa,0x3b184531,0x3bcbd01f,0x3bac4012,0x3b905fb4,0x3b9e13e1,0x3b3cd789,0x3a63985b,0x39cbadb0,0x39cc3365,0xbbb16ee7,0xbc1e7d3a,0xbc1e3a9f,0xbc389cc7,0xbc46965f,0xbc643051,0xbc38a99c,0xbb9627f6,0xbb522f70,0xba498eb6, +0x3b4476a5,0xbb9ed9f7,0xbbf982e9,0xbbb34398,0xbb3ad6a5,0xba53e7a2,0x393e0da6,0xb9ce4cbd,0xbaffc29c,0xbb67b4ef,0xbad94372,0xba55bcc6,0x3a2bd15f,0x3a4ce302,0x3a456e53,0xbaeaa603,0x3ba3218d,0x3bac6187,0xba3d160c,0xbab713ca,0xbb8538ac,0xbbb3c304,0xbb445b4f,0x3a220fe1,0x3b676c08, +0xbadf54ba,0xbb7bb650,0x3a2248db,0x3b1dec0c,0x3b6ffcd3,0x3c23f277,0x3bda28f5,0x3b7bea71,0x3b1fa792,0xbb50844b,0xbb7e4c76,0xbac94fec,0x3bb37143,0x3bc48dd3,0xbb0d0c61,0xbba80bc5,0xbc07320d,0xbc19c48d,0xbbeeced5,0xbbb6e726,0xbba073b3,0xbb2b0242,0xbb0d2f66,0xba0fc97c,0xb98285ee, +0x3a591b5c,0x3ae5151f,0xb91a76e6,0xbb1781f1,0xbb5ce440,0x3a04211b,0x3b5173e4,0x3b819751,0x3aef497e,0xbbab34aa,0xbc40a9d8,0xbc0749b9,0xbb6a26d7,0xbb9221e5,0xbc5150a8,0xbc8938d5,0xbcad8345,0xbce96344,0xbcce677b,0xbc26de79,0xbb253f1f,0x3ac96506,0xb88a7277,0xbbb1e9ed,0xbc0921f8, +0xbbf4960a,0xbb6fea85,0xb90fe1d5,0x3b4191d5,0x3af8d224,0x3a3bebb4,0xba96ceed,0xba6ea70c,0xb9471362,0x3973a357,0xb92be5b6,0xba3431fc,0xb96693fc,0xbaae5bc2,0xba390cc3,0x3a81df13,0x37860bae,0xbaf333ad,0xbb8b39bf,0xbad6593a,0xba79b4a3,0xbabef65f,0xbb7f9bf6,0x3a321f45,0xb99b9079, +0xbb82b3ee,0xbc0b6fe8,0xbc707992,0xbc331505,0xbbf160a8,0xba743d8c,0xbb32edda,0xba66c8d4,0x3b267ce4,0x3b2cf2d9,0x3b2fe054,0x3b16548e,0xbad8d7e6,0xbba4e6a4,0xbbe16b4d,0xbbde263c,0xbbadb184,0xbb7c5842,0xbb62d95a,0xbb79d984,0xbb4fae55,0xbadf5f20,0xba7ae17e,0xba98e01f,0xb94b8add, +0xba6128fe,0xbacb700f,0xba8b8007,0x39244fad,0x38811750,0xb79cb508,0xb7c5aee3,0x3b343603,0x3ad1a180,0xbaace3da,0xbc2625ab,0xbc63b805,0xbc3cf19f,0xbc104096,0xbba9fa76,0xbb3ad4f1,0xba7e6f9f,0x3a2ce3f2,0x3a3e83f3,0xb9941ec2,0xba792933,0xbadf59da,0xbb346b7f,0xba337f79,0x3a1a833b, +0x3a3b334b,0x3a7f2356,0x396072eb,0xba37a5b8,0xbace1447,0xbb3f01c2,0xbb4b5b14,0xbb5569fe,0xbb1dc003,0xba9bf78d,0x3a602d2a,0x3aef4449,0x3a5cea7a,0x3a79d9cb,0x3a61b06c,0x3a0f017b,0x3b013732,0x3b045573,0x3a97320a,0xbb3b828b,0xb9417e72,0xbb7fe9f0,0xbb054412,0xb9230123,0x39d55a83, +0xb9e09a6c,0xbab6f8cf,0xbb47d88a,0xb9ed6d5f,0x3a3d9d80,0x3a922d6f,0xba17c93d,0xbaab0768,0xbaa9dbe8,0xba827d9d,0xba80335c,0xba78cd18,0xba3c8405,0xba58ae02,0xba84724e,0xbb1fbe1e,0xbb53ea13,0xbb5682a1,0xbb3eb687,0xbb206f41,0xbb368eb3,0xbb2b2443,0xbafd8027,0xb9661758,0x3986bebc, +0x3a4323c6,0x3a62fb4c,0x3ab19fea,0x3938a5a7,0xba80e398,0xbb399189,0xbbbc8da7,0xbb9c4f07,0xbb909a0d,0xbb8b6cbb,0xbb743ee9,0xbb649943,0xbb45415f,0xbb3dfd08,0xbb158f3a,0xbb025e14,0xbab8c7c9,0xba36e63d,0x386d820b,0x3a4c0e2d,0x3a242bc7,0x3a3dd61d,0x3a6e9e21,0xb9840b6b,0xbab47cf7, +0xbb1a39ad,0xbb008778,0xbaf373bf,0xbb074928,0xbb0d0452,0xbb035f5a,0xbb12da3c,0xbb113985,0xbb44d04a,0xbb678125,0xbb8897f0,0xbb9e5bb9,0xbbbdda54,0xbbccdbd8,0xbbe2a9b6,0xbbeb65ff,0xbbccc0f1,0x39b92e2e,0xbad7bd90,0xbab4884a,0xbac69185,0xbacd7d44,0xbaec20ec,0xbb03d9fd,0xbb0fc94e, +0xbac30264,0xba451f44,0xb9086806,0x39dbc3cf,0x3a523273,0x3a96521b,0x3a7be3aa,0x3a4c7ab9,0x3a395c92,0x3a1bb5ef,0x3a643ba7,0x39ae58c9,0x39626313,0xba6b9c38,0xbaf141b5,0xbac6ab62,0xbb117b07,0xbb5a6999,0xbb5ebfa4,0xbb773395,0xbb624c1a,0xbb6dad10,0xbb5e44f9,0xbb4e99a3,0xbb30bdf7, +0xbadf75cc,0xbaece404,0xbaf9eee3,0xbb54f7e6,0xbb34580b,0xbb213dbc,0xbb2b4a36,0xbb27b82a,0xbb232949,0xbb1c315f,0xbb1e390c,0xbb0e71e9,0xbb082b21,0xbaff776b,0xbaed3e41,0xbad62e21,0xbab242ed,0xbabd981b,0xbabf0d30,0xbac31ff2,0xbac7986a,0xbac3819d,0xbab91bbf,0xbb256c7e,0xbae6dd4f, +0x3aaa1719,0xbb5e505a,0xbb1d4ece,0x3a902d1a,0x3a6615d6,0x3a25e209,0x39cf458c,0x38c1b134,0xb8c248fe,0xb9cf4bf5,0xbb37706c,0xbb849e8a,0x3a4f84f6,0xbb09d766,0xbb46b1cc,0x3b5cfdcc,0x3b1fbec0,0x3b84004c,0x3b3c0b4a,0x3b50a7f6,0x3b3200a8,0x3b50e778,0x3b5e37cf,0x3b63848c,0x3b7a1a19, +0x3b7ec343,0x3b6eac46,0x3b759be1,0x3b76174a,0x3b83a649,0x3b6b7461,0x3b5e356c,0x3b4d7a8d,0x3b4d428d,0x3b2c9103,0x3b6e52b5,0x3af1161a,0xba934f44,0xbbdacd45,0x3b524a34,0xb9a4d6c6,0xbbb9c4f9,0xbbb3215e,0xbbaf353d,0xbba133ca,0xbba8075c,0xbba741f3,0xbb952b5c,0xb98709d9,0x3b71b815, +0xbbb68c78,0xba5384e4,0xbaaf5e24,0x3b9da9bf,0x3b81d602,0x3b7c1580,0x3b39e7da,0x3b6bfb05,0x3b81a94d,0x3b894508,0x3ba4e530,0x3bac0543,0x3b9f19fb,0x3bb05800,0x3bbcb241,0x3bd0007b,0x3ba8efce,0x3b8e47c8,0x3b672995,0x3b42d617,0x3b1e4a25,0x3b2a4e78,0xbb5b01b6,0x3a447a96,0x3a51f1cf, +0x3a91ab1f,0x3a9069b3,0x3b0fd3c0,0x3b24a9db,0x3b40ac86,0x3b0c11c6,0x3b35fe8d,0x3b34ba61,0x3b2776db,0x3b21c271,0x3a87e713,0x3ae56d75,0x3b7de6d7,0x3b286b3f,0x3b58cd00,0x3b880ea9,0x3b6b0dda,0x3b041319,0x3b62d672,0x3b9beff4,0x3bab56eb,0x3bf3906e,0x3c0198c0,0x3bd1ba0d,0x3bebd21d, +0x3bef0411,0x3c0edc64,0x3bd19623,0x3ba63c5a,0x3b7685b1,0x3b2fb2e3,0x3b1a7960,0x3a1065bb,0xba76e430,0xb9ea89d9,0xba62d5db,0x3b033ac2,0x3a8ef9ae,0x3b022a32,0x3a832804,0x3b16b338,0x3aed40ed,0x3a7b6b51,0x3a0e72bd,0x3b19ac49,0x3a9016c0,0x3aef9333,0x3accfa3b,0x3b4fc005,0x3b81ec2d, +0x3ba9c706,0x3bc5f28c,0x3bae05d6,0x3b3ab358,0x3b9201ca,0x3ba8abec,0x3bb22eb6,0x3c0cfb30,0x3c18e089,0x3bfa1fef,0x3c22954c,0x3c4c6c5f,0x3c6d7758,0x3c27b0c3,0x3be23a0c,0x3b83df01,0x3ad267ab,0x385f1cd7,0xba883711,0xbb698298,0xbacd8ec6,0xbb5c2aaf,0x3a9d7ff3,0x3af3b730,0x3b3b86cc, +0x3b1594d5,0x3b044a3c,0x3bb0301a,0x3ba2fa2c,0x3b8d94a0,0x3b9a5102,0x3b4fea26,0x3b19be67,0x3aef11bc,0x3b9af01c,0xbb0cef7e,0x397caf8f,0x3ab736bd,0x39eef2a6,0xbab24e14,0x39ff1c89,0x3b995d02,0x3c5c6ef1,0x3c390034,0x3c318b36,0x3c5681e4,0x3b61f19d,0xbb0e3c05,0xbb9298a4,0xba345e5c, +0x3b1b9195,0x3bb1e7e2,0x3be7e3b0,0x3c038ee4,0x3b8ca4c8,0x39c94a06,0x3b2f8ec9,0x3b45c518,0x3ae9ed4f,0x3a97fb0b,0xbad0f215,0x3bac62e4,0x3bb6ba09,0xb9ff9dd5,0xba702b6d,0xbb77358b,0xbb94714b,0xba891a62,0x3b197289,0x3b8f70fa,0x3a7fca4f,0x3a8cfafa,0x3be177ef,0x3bbf638c,0x3bd53ed0, +0x3c02026b,0x3c380532,0x3c1fb6f9,0x3b9b2f20,0x39f71161,0xba8fd9b4,0xb9c92412,0x3bc01928,0x3bf1f0b5,0x3b219e04,0x3b09a258,0x3b35eacd,0x3bce49a4,0x3b858bfb,0x3b265324,0xbad611cb,0xbb17a5d6,0xbab8f4fa,0x39e0f2ba,0x3a65109a,0x3ae20eda,0x3af50ad2,0xba06b177,0xbb2c2289,0xbb455a8b, +0x3ab55df9,0x3b750ec2,0x3b73e90c,0x3a1783c0,0xbb8984b2,0xbc136ae6,0xbb479a56,0xbb8e61d2,0xbbf62185,0xbc4be957,0xbc0ebe27,0x3b3d9410,0x3a1985d7,0x3b955735,0x3c4c89dc,0x3c82f2a5,0x3c6b691c,0x3c0e1a0b,0x3c1eebbc,0x3c1ff1de,0x3c23a651,0x3c21de95,0x3bf7bcfa,0x3b87e666,0x3b5f9191, +0x3b4cb44f,0x3b1492a8,0x3b14f228,0x3af4fa30,0x3acbcb00,0x3a82d596,0xb9836e83,0xb98ed82f,0xba30fb57,0x38c80d79,0x3ab0dd16,0xb8a1efa1,0xbafea1f8,0xbb8386d2,0xb9981c89,0x39ee976b,0xbac3a1c2,0xbb34c74c,0x3b13fa66,0x3b77d83f,0x3c2668a4,0x3c615e84,0x3ca1465d,0x3c83ab6d,0x3c3e2a89, +0x3bac793e,0x3b07c09e,0x3b3f477b,0x3beafa47,0x3bf92c5d,0x3bf72e87,0x3bdacf74,0x3baaaad0,0x3b7eee66,0x3b0941e0,0x3a833623,0xba2455dd,0xbb017e87,0xbb739b9d,0xbb3853ee,0xbb0d0779,0xba605bd8,0xb8bdd421,0xba1845c7,0x3814b165,0xb99170a2,0xba9be95b,0xba2d67c6,0x39cdac85,0x3a60fb92, +0x38932cf5,0x3ad327d0,0x3b669a43,0x3b2ac187,0xbb8e6a43,0xba9935cb,0x3be25946,0x3c09ce1e,0x3c2bd787,0x3c71d2d1,0x3c8598b8,0x3c6e0192,0x3c58f29e,0x3c4a9939,0x3c616e16,0x3c2535e0,0x3bfd71ab,0x3bba23be,0x3b607e37,0x3b0a44c7,0x3ab468aa,0x3a87b16d,0x3a9834ff,0x3abf0445,0xba1249cd, +0xba9a72a6,0xbb342d56,0xbb45fbff,0xbaf1114f,0xb720de14,0x3a9f9f7c,0x3b0a7a17,0x3ace8063,0x3b149fff,0x3b0b7b61,0x3af38bc2,0x3b2aed49,0x3b1a62f4,0x38c47646,0x3ab4468c,0xbb278fc5,0x3b6a9d52,0x3c04bbd7,0x3c046ea9,0x3c0c0c9a,0x3be6e36a,0x3bcd523f,0x3be6619a,0x3b5fc369,0x3aa9e4d3, +0x3984164a,0x3a6e97f4,0x3b027253,0x3b3fcd5e,0x3b76c6d2,0x3b756e9f,0x3b25ca6d,0x3b0e6ca4,0x39fd4b06,0xbb01044a,0xbb24d56b,0xbb24fa18,0xbad989b0,0xbaae5299,0xbade51d3,0xbb176716,0xbada1fb8,0xba5f4b05,0x3a66040d,0x3aee4c0c,0x3b2905e2,0x3b4472ad,0x3b57497b,0x3b6de3ee,0x3b075214, +0x3b2d5ea8,0xbb325d90,0xbadb7f96,0xba27a2eb,0xb7d60609,0x3aaa12a0,0x3b0fa72a,0x3b4721e6,0x3b82f5b7,0x3b7b03e5,0x3b80aaf0,0x3b629ce3,0x3b37b7de,0x3b01748d,0x3a9aa181,0x3a95a714,0x3aa3daba,0x3ac98071,0x3a6be5b3,0x3a0f58e4,0xb9150bdd,0xba533816,0xbaac2f56,0xbade8e79,0xbae48d4e, +0xbb04dbeb,0xbb0174d3,0xbb266983,0xbb0913e6,0xbb42aba6,0xbb5b3c4f,0xbb8c76b9,0xbb93423e,0xbb9f32a1,0xbbb38597,0xbbcebef3,0xbb864903,0xbb1c8941,0x3a2e2fdc,0x3a94027f,0x3af8bd34,0x3b1f2d3f,0x3b4345f2,0x3b67d899,0x3b8bbedd,0x3b6b8ec3,0x3b45337f,0x3b290f69,0x3b064a8b,0x3ad6c36f, +0x3a9dbd98,0x3a959c41,0x3a6c8595,0x3a3e790e,0x3a147509,0x3982cb24,0x3a212d8c,0x354c5b08,0x3a238252,0x3a4575ed,0xb99017b0,0xba05256b,0xb94b0045,0xb9acd3b9,0xb9c69610,0xba8a74bd,0xba4460c8,0xba93100e,0xbae6d35e,0xba9b448d,0xbaa7550a,0xba2893cc,0x38680b84,0xb9144227,0x39a734e4, +0x38c5d002,0x39fb7fb4,0x3a3fff89,0x3a8dddff,0x3ab657f6,0x3af877b2,0x3ac3fc69,0x3aaa84d0,0x3a8b04cb,0x3a665bf7,0x3a371580,0x39f1f166,0x39ee196f,0x39dfe9bc,0x39c2136f,0x39e653d1,0x39b94551,0x39ed8e55,0x39f821ba,0xba8525e3,0xbb81aea7,0x3a13dd94,0xbaa757e8,0xbb9b120c,0xbb998c87, +0xbb97cf94,0xbb933396,0xbb94c81c,0xbb927394,0xbb9394d3,0xbb0693d6,0xb8dc3502,0xbb94cacc,0xbafdf3f9,0x39a4ab4a,0xbb552bdf,0xb9ef37ef,0xbb9017ad,0xbb285cbc,0xbb42984c,0xbb32b3ea,0xbb6bc14f,0xbb7b1c66,0xbb7e9b61,0xbb60e646,0xbb55011f,0xbb5b1af7,0xbb4a69c6,0xbb45172f,0xbb30e32c, +0xbb54d9ae,0xbb62cc3f,0xbb71ddad,0xbb6e9b0d,0xbb51a9d7,0xbb937721,0xba44d505,0x3b1fdd46,0x3bcaf148,0xbabffb7e,0x3b2445a9,0x3bc85538,0x3bccd184,0x3bc9dd6d,0x3bb3af2d,0x3bbe999d,0x3bbf6dea,0x3bc3538e,0x3b0ce41a,0xbb0cb10d,0x3bd3def5,0x3b5056f0,0x3b9ba327,0xbb55c87e,0xbaf27414, +0xbae715e0,0xbae10f77,0xbb84f005,0xbba3b1c1,0xbba88f0f,0xbb8f35e6,0xbb820700,0xbb8447d4,0xbb4b5713,0xbb2c9357,0xbb0638e5,0xbb72ac18,0xbb96475b,0xbbb07b3a,0xbba85e60,0xbba91039,0xbb94e12b,0x3b0a68b1,0xbb15601d,0xbaefe9e9,0xb915ca6b,0x3a2a0f7f,0xbabc2a33,0xbab61668,0xbae4f21e, +0xba2cf72d,0xbb10f549,0xbb15ff05,0x384840ab,0xba94cdbd,0x3a0e4e20,0x3a61cb8f,0xbae2b7d8,0x3a44fbe6,0xbb3ae17c,0xbb1937bc,0xbad9dfdc,0xbac27337,0xbbb2c729,0xbbdfb7d9,0xbbf3dcaf,0xbba85300,0xbb86699d,0xbb9e7d5e,0xbb4d0a0d,0xbb2fec5f,0xba87bd30,0xbb8b4dc2,0xbbb7aff0,0xbbe3c0e4, +0xbbcc8304,0xbbdfafcd,0xbb6f1d89,0xbaceac45,0xbae3da72,0xbae9459a,0x39076a1c,0x3ac23709,0xba1cd3e4,0x3acb3607,0xba93d8b9,0x3a334e17,0xbab3b73c,0x3906dfb2,0x3a5cc489,0x38cbb2bb,0x3a13cc88,0x3af14159,0x3885de9b,0x3b57a012,0xba828320,0x3ab9dc22,0x3b2ae024,0x3b1fd0e9,0xbb710cbe, +0xbbeb6d1f,0xbc172898,0xbbce3259,0xbbb22cf5,0xbbc785b3,0xbb2bfe71,0xb652da08,0x3af7505f,0xbb84c6b2,0xbbfaa9b3,0xbc282f1b,0xbc208ef8,0xbc2062d9,0xbbcfe88f,0xbb1a5ded,0xbb8a6a32,0xbb1060a8,0xb8b16888,0x3a82d374,0x3ae0c47d,0x3adaa95c,0x3b111ab6,0x3b7959e6,0x3b84784a,0x3b4a8eca, +0x3b8bda61,0x3adb45ad,0x3a8036cb,0x3adf455e,0x3a916e65,0xbb19531d,0xbc10d5d1,0xbc475114,0xbc49864f,0xbc4b2c43,0xbc5976d8,0xbc2ff469,0xbb83d471,0xbb90ba66,0xbb32a40b,0x3a903d12,0xbbd5d053,0xbc22dcde,0xbc0a452e,0xbbb4508b,0xbb34e9a6,0xbb36eb78,0xba641160,0xbaf122f2,0xba25a12f, +0x3b19d56d,0x38311802,0x3b0edc55,0x39b87260,0x3a1a597e,0xbaa1a183,0x3b9b1046,0x3ba57098,0xba063a73,0xbacdd615,0xbb902eaa,0xbba0563f,0xbaa7fcb1,0x3b26f416,0x3b811dd6,0xb96d4609,0x3a62acb9,0x3aa2608a,0x3af88bf0,0x3b5db6fc,0x3bb5c942,0x3c042e54,0x3bf292ae,0x3b748e91,0xbadd2c42, +0xbb7aad8e,0xbb2be143,0x3bae845a,0x3bebe2eb,0x3a508af1,0xbb869007,0xbbf7a121,0xbc0edaf1,0xbbc56528,0xbbb30813,0xbb821a77,0xba6ddeab,0xbab998ad,0xba0d2b7d,0xba94ef34,0xb9744698,0x3aa06a1f,0xba9522ba,0xbb478d37,0xbb48b4fd,0x3a8db59b,0x3b5b1084,0x3b022165,0xba7f3495,0xbbf56c49, +0xbc285c95,0xbbd6743a,0xbb804b2d,0xbc6b8661,0xbc84d9ad,0xbc7619b3,0xbc80993a,0xbca6e7c1,0xbcab21fa,0xbc85b8d2,0xbb55ce25,0x3acbda37,0xbb4b7aa1,0xbbf04c39,0xbc226e1d,0xbc0eb580,0xbbacdc43,0xbaaacbb6,0x3afc8e0d,0x3afdef13,0xba2041ff,0xbb01846b,0xba18a266,0xba156123,0x3a95cb4b, +0xb9842029,0xba898e2c,0xba34bc9a,0xba83c300,0xb98f4476,0x3a687b75,0xba62dd8b,0xbb2e7b39,0xbb92a845,0x39f85187,0x3a9287c8,0xba8d52ef,0xbaf2744b,0x3b7afb6b,0x3bc40f52,0x3b015f64,0xbb126bf8,0xbc189558,0xbbe90090,0xbba439c5,0xbb54df9f,0xbb2f82d4,0xba8a0909,0x3b400d20,0x3b580005, +0x3b5bd992,0x3b4fa894,0xba2271e2,0xbb70f37d,0xbbd757c8,0xbbd3d001,0xbbbf5119,0xbb80e654,0xbb11802f,0xbb6508ca,0xbb42f7bb,0xba9dd3e6,0xb9be16df,0xba568842,0xb91e5fb6,0xb9f69172,0xbabb424e,0xba407c57,0x364ba0fb,0xb9457d38,0xb99cc1ef,0xb9205904,0x3b790374,0x3b132658,0xb85acf4c, +0xbc05df35,0xbc6efa3a,0xbc4a654b,0xbc268553,0xbb7dd89a,0xba8d27fb,0xba502a31,0x3ae4aaeb,0x3b2033b9,0x3b4d8435,0x3b18b96d,0x3ac90daa,0x3a1391b0,0x3a5468f9,0x3a88d6f6,0x397c78b6,0x3a6de0d0,0xb9f6b40c,0xbad88baa,0xbaaef481,0xbb66f361,0xbb54eef0,0xbb583de4,0xbb1376b4,0xb98f1d01, +0x3a631809,0x3a963d8d,0x3a88f822,0x3ab7f954,0x3ae901cb,0x3ae05f4e,0x3b13f39e,0x3b068236,0x3ad601c6,0xbac3bb55,0x3baf0275,0x3a94f5d7,0x3a783b36,0x3b2cad50,0x3b00c1ad,0xb9452c50,0xbb097395,0xbb78835f,0xbace7737,0xba29606f,0xba007b18,0xbac469e5,0xbae4b081,0xbab8b365,0xba5ab62e, +0xba8352bc,0xbadb3610,0xbae7fb42,0xbb032e35,0xbae23397,0xbb2157f0,0xbb3a79ea,0xbae09eb5,0xbb20fa22,0xbb28a649,0xbb361bc5,0xbb0ce9b5,0xba5ccd2c,0x39e2b847,0x3acecdb0,0x3b1cb2b9,0x3b25ee70,0x3b6251d5,0x3b49c1ba,0x3b3bdef6,0x3ac2d3e6,0xbb917ed0,0xbba449ef,0xbbaa33c2,0xbb86d59a, +0xbb530af8,0xbb3b2bec,0xbb314db5,0xbb4c3b58,0xbb349ef0,0xbb28b2ec,0xbb0eb4b6,0xbad0d074,0xba819843,0xb9a10931,0xba100e3b,0xb9e824a9,0xb999da3f,0xbaa18ba8,0xbb31b83a,0xbb41d7b5,0xbad9a23b,0xbb0492b4,0xbb1a9bc7,0xbb2383ae,0xbb019423,0xbb2f7ef0,0xbaff2779,0xbb531e71,0xbb222101, +0xbb724910,0xbb6a2025,0xbb952c52,0xbb9e292f,0xbbaba405,0xbba69215,0xbba5a37f,0x3a94e961,0xbb03e659,0xbaf0e076,0xbaf40fb8,0xbb081de8,0xbb1729d5,0xbb1a567f,0xbb115b41,0xbad50598,0xba8df63c,0xba24c483,0xb9490648,0x394a9669,0x3a37cd5f,0x39ab922b,0xb7b19452,0xb9ae07c4,0xba0d6868, +0xba09194d,0xba98bc08,0x39b46057,0xbacfd926,0xbaf8cb60,0xbad0e5ac,0xbae9bb9a,0xbb4505a3,0xbb625205,0xbb670736,0xbb387fec,0xbb7b0554,0xbb853daf,0xbb65fafe,0xbb5242d0,0xbaf6fc23,0xbaf2f185,0xbb278f1d,0xbb140e48,0xbb838e50,0xbb586acf,0xbb5fdd25,0xbb561825,0xbb4a3079,0xbb4207f6, +0xbb429cd6,0xbb3bc7eb,0xbb369291,0xbb2e2431,0xbb252ac4,0xbb1c3a26,0xbb0c99de,0xbb1644e2,0xbb186659,0xbb1c476a,0xbb2206b8,0xbb1d3e55,0xbb3d22b7,0xbadf79c1,0x325d04ae,0x3b244271,0xbb2ffe98,0xb9c68a81,0x3b225647,0x3b19e9e2,0x3b03803c,0x3abdb630,0x3ac39e34,0x3aab4fcb,0x3a61e94f, +0xba8ce44e,0xbb6245f8,0x3ad6bfa6,0xb9b3e492,0xbb7e80a5,0x3b1bb679,0xba9f0271,0x3b6bb499,0x3b08b73d,0x3b159f6f,0x3af93ed2,0x3afd8b1b,0x3b058c06,0x3b122dcd,0x3b2c3df0,0x3b33b70b,0x3b2374bb,0x3b2bcd85,0x3b2e1e95,0x3b456fd1,0x3b2dac38,0x3b22283a,0x3b0f1192,0x3b0d071c,0x3ae59fdf, +0x3b4c8166,0xbad9c07c,0xbb88ee64,0xbbc2f128,0x37d797e4,0xbb68404a,0xbbb5b60f,0xbbb8c41d,0xbbba5fdc,0xbbad33d5,0xbbc3efcd,0xbbc51c56,0xbbaf78d4,0xbb703297,0x39e90172,0xbbaa8daf,0xbb89c32f,0xbb7a0abc,0x3b4c5a0a,0x3b6a103a,0x3b3d507b,0x3b08fb81,0x3acfb242,0x3ace7c8a,0x3b0b4291, +0x3b4cf50b,0x3b63f0e1,0x3b452481,0x3b72a006,0x3b8d389d,0x3bab7c82,0x3b8a2275,0x3b579a1c,0x3b12898d,0x3abe2ca3,0x3ac17486,0x3a414bc9,0xbba69f12,0xb99a7de1,0xba525386,0x392772c5,0xb8acb469,0x39b5a278,0x3a98f666,0x3a46a229,0xba814afa,0x3a0a6ac2,0x3aab703a,0x3a885b58,0x3a45d9fe, +0xba3b7096,0xb8a7af65,0x3b145367,0xba2b7133,0x3aec1ad8,0x3b88d9da,0x3b2913ef,0x3adfac65,0x3a436c6b,0x3a8c4d50,0x3b121435,0x3b96730d,0x3bae91cf,0x3b8054cc,0x3b9bac66,0x3ba420eb,0x3be14a49,0x3ba31c51,0x3b731513,0x3b0aeda0,0x3a92ed86,0x3ac55a7d,0xba87ba4d,0xbb445170,0xbab763dc, +0xba6474c1,0x3ac6938a,0x39169620,0x3a6b8442,0x38ee6424,0x3af87c01,0xbaae3416,0xb94f5875,0xbac8e08c,0x3a9b4736,0xba002e18,0x3996d19a,0x3a161104,0x3a87e25a,0x3a99f738,0x3b7f366b,0x3bdd85cf,0x3ba082cc,0x3b4d171f,0x3a548a4e,0xb89afe56,0x3a8441b8,0x3b93419c,0x3bb7af5f,0x3b840a91, +0x3bd09799,0x3c17b893,0x3c4a315e,0x3c0cac8b,0x3ba370dc,0x3abd04d4,0xba7d2f36,0xba99fa3e,0xbb449ab7,0xbba8eaae,0xba7ef427,0xbb38de74,0x3b0802de,0x3b370dc4,0x3b312cda,0x3b2c6b75,0x3afacdbd,0x3b7313a8,0x3b5d006d,0x3b5ec89c,0x3b8da467,0x3b072d84,0x3a82914b,0x3b2b6abf,0x3b5c09bf, +0xbbf6f33a,0xbb2e5ad2,0xba28eda8,0xbb01e056,0xbb26c4c6,0xbae9de76,0x3a8ec086,0x3c165c4b,0x3c1195c4,0x3c26075d,0x3c5efd1f,0x3bbaf788,0xb915ef21,0xbb3b6620,0xba99db0a,0x3af73c86,0x3be5e065,0x3bf518db,0x3c0f9ed2,0x3b7205a9,0xb95d5785,0x3b726ae9,0x3b50fe31,0x3a70d83e,0x3926805a, +0xba805a7d,0x3b97ba59,0x3ba32569,0xb8fc7a0c,0xbaa743a8,0xbb86243b,0xbb9e1265,0xb9e30097,0x3ac4abf3,0x3b095a52,0xbb7d2fb6,0x3a93f870,0x3be64af5,0x3c1ee582,0x3bc80d13,0x3b6c747f,0x3c057af9,0x3bfdf45f,0x3b3191a4,0x38eb4482,0xbace9b6b,0xbad29ffb,0x3b8d2c9e,0x3bdaba83,0x3b6f3da9, +0x3abeb00b,0x3a1e21fc,0x3b1947d8,0x3a3f5640,0x3aadf94a,0xbb269f25,0xbb0a1936,0xbaa3f144,0xba93ba36,0x3974510e,0x3a7edb6f,0x3aba05c8,0xbaa4ef1b,0xbb48abf1,0xbb2828f8,0x3add6837,0x3b57b56b,0x3b04b3c2,0xbb1b3175,0xbbcc139b,0xbc196f0d,0xbaf4c01f,0xbbbf10fb,0xbc8f83b8,0xbc7fc43e, +0xbc216adb,0xbb2f2959,0xbb87076e,0xbb3a5a2c,0xbab1663a,0x3c683f2a,0x3c858a26,0x3bdb3c6b,0x3bf0ecfb,0x3bc7344f,0x3bb8b013,0x3bd40b30,0x3bbaa53e,0x3b667aa3,0x3b543e8a,0x3b6e3091,0x39335eec,0x381bec43,0x3a920bb8,0x3a726624,0xb70d6cc6,0xba7b95e6,0xba657754,0xb9939eb3,0x3a3efabe, +0x3a8c8638,0xba6211b7,0xbb2d47ee,0xbb92c09b,0x39ea306f,0x3b1183d4,0xbb5d2112,0xba921dd0,0x3b95e64f,0x3c0624dc,0x3c23d8c9,0x3c02f2ad,0x3c1f9a4e,0x3be6941f,0x3ba4647c,0x3b20c655,0xbae737be,0xbb0d8cb8,0x3ad3afce,0x3b5d16a2,0x3b8e521a,0x3ba09af5,0x3b5f392d,0x3b1a6ae2,0x3a3239c8, +0xb9370657,0xba4b7152,0xbb262ed5,0xbb8bd81c,0xbb4a155c,0xbb0f6575,0xba4fa292,0x3897dd9b,0xb9bda29b,0x392ce509,0xb9ce2236,0xba94e73c,0xb96d61dc,0x3a039e7f,0x3aa67fe7,0xb924f020,0x3aae0188,0x3b740f48,0x3b6d8742,0xbbef9450,0xbbedfa46,0xbb67cc6b,0xbb2a08c5,0x3ab46795,0x3bd17916, +0x3c18d3b5,0x3c15cb61,0x3c16d983,0x3c119363,0x3c15c8b1,0x3be7ce1e,0x3bbdf535,0x3b9949e3,0x3b38d6cd,0x3add0ae4,0x3a95039b,0x39d3198d,0x39437746,0xba07334b,0xbb37f394,0xbb2161ff,0xbb46aa75,0xbb4cb4b5,0xbae2ec21,0x3a05bbd6,0x3a3c9593,0x3ab86e2f,0x3a4a8018,0x3b065043,0x3ae34325, +0x3ab3ca4a,0x3ab6ecf6,0x3a5ea3c0,0xba450dab,0xbae6657b,0xba41f150,0x3b4d9d18,0x3bfffe00,0x3bf77d99,0x3c06b352,0x3bdda5fb,0x3bc2ab5d,0x3bb65c18,0x3b48a5ca,0x3ab793bf,0x39d4fb32,0x39ce7d7f,0x39de288b,0x3a36c99e,0x3ac438fe,0x3ae5c4a6,0x3ac59c41,0x3aa25257,0x38b4cbb4,0xbb121bbb, +0xbb1f860b,0xbb19ec54,0xbb18820a,0xbb056454,0xbb098ccb,0xbb1c8ff4,0xba9d1a19,0xb839f9aa,0x3b06dd1c,0x3b3f0662,0x3b6dee60,0x3b7e4ace,0x3b8d3ab3,0x3b950053,0x3b604a79,0x3b5e0623,0xbb91a206,0xbb389afc,0xba8284f7,0xba1373d2,0x3a9cdaca,0x3ac01c56,0x3ae84d89,0x3b06471e,0x3ac70526, +0x3aad24c9,0x3a526387,0x3a5d5ab0,0x3a5086d1,0x3a25e337,0x3a11697e,0x3a0fa219,0x3a5b60ee,0xb877e176,0xb93555c6,0xbacabf74,0xbb2e8ea8,0xbb22e2e5,0xbb2038f9,0xbb18973c,0xbb2cd587,0xbb24cac4,0xbb3fbd22,0xbb099b05,0xbb5e2159,0xbb40a61f,0xbb814f8a,0xbb74f378,0xbb9401d8,0xbbb89361, +0xbbde95aa,0xbba220a7,0xbb62eb08,0xba48abe2,0x36d8a30a,0x3a05126f,0x3a88038f,0x3ad2730d,0x3b19eefa,0x3b508711,0x3b44b3a8,0x3b3862f8,0x3b296910,0x3b0f98ce,0x3adff475,0x3a9bef75,0x3a7bae76,0x3a2845d8,0x39d0880a,0x39178a4d,0xb85817e7,0x37ce5139,0xbab94d27,0xb9f4d4a8,0xba7e90eb, +0xbad65bfe,0xbb0e8900,0xbb006818,0xbaf42a00,0xbb14b89b,0xbb474a32,0xbb199e45,0xbb181170,0xbb48d143,0xbb1fcc43,0xbb2740ee,0xbb0e03ac,0xba919f6a,0xbb2bb3e2,0xba135f79,0xba60da11,0xb9ed9ff7,0xb909b24b,0x397139bf,0x3a07f2f1,0x3a7a0e97,0x3a2ea83a,0x3a0dc79f,0x39dbbf34,0x39a772b5, +0x39883384,0x392e0e10,0x38d8d61e,0x37e36391,0xb8943234,0xb8ae801a,0xb98ae474,0x38c1a6e1,0xbae54808,0xbb623a25,0xbb998e9a,0xbae01b4f,0xbb8058e6,0xbbb0d0c3,0xbbb488a1,0xbbb30b45,0xbbaaad00,0xbbb680a9,0xbbb68f4c,0xbbb7a100,0xbb925f3c,0xbb19bf67,0xbba71b77,0xbb8dd231,0xba298184, +0xba5b0507,0x3b3afb35,0xbb07bcca,0xba0fddc9,0xba27d9a8,0xba0bc2ad,0xba55c505,0xba70f30f,0xba9739d3,0xba2c69d1,0xba17e720,0xba74a6dd,0xba22fb6f,0xba03b40a,0xb889f99d,0xba1d70a4,0xba59bea4,0xba94dd68,0xba9380c0,0xba852e6b,0xbb0c28a7,0x3b27745a,0x3b872704,0x3b5a7e08,0x3b0ee675, +0x3b90bb77,0x3b62a146,0x3b80cbbb,0x3b7dd9ff,0x3b44df01,0x3b77b242,0x3b808c21,0x3b8ad898,0x3b82f5e8,0x3ac1dc58,0x3b7b7c96,0x3b9cd856,0x3ba4b2f5,0xb96068e2,0x3855a202,0x3a44a17a,0x3a1fca53,0xb8eac28b,0xba0be841,0xbaa18bcf,0xb9adf7bf,0xb9a80636,0xba8a8c9f,0xb948774d,0x39c46050, +0x3ab9e457,0x3874309b,0xba361224,0xbadf6aac,0xbadd9d35,0xbb23da49,0xbad0b72a,0x3b14ae1f,0xb9c3bd0f,0x3a8b4cb7,0x3ac0e1de,0x3b04f617,0x3a3462d9,0x3a195408,0x3a3931f6,0x3a8d2b59,0xb98e05ca,0xba4e8aaf,0x3ab6cbf7,0x39aab219,0x3acb6b2f,0x3b39cfff,0x3a0a76f5,0x3b424a2d,0xba0941e8, +0xba2b0b75,0x3a7b0347,0x3a35955e,0xb8e2befd,0xb9bc6d49,0xbb0d9f3c,0x3a15e3ab,0x3a5d87e3,0xba892327,0x3a2aa697,0x3a986a59,0x3b7182f3,0x3a42d39a,0xba09d513,0xbb1a7abf,0xbb143a83,0xbb6d19d0,0xbacc13ff,0x39d4e404,0x38e30b8b,0x39f3c30e,0x3af87f73,0x3b37da61,0x39aa4ae0,0x3b103532, +0xba42e4cb,0x3990abcd,0xbb0110e8,0xb797462e,0x3ab25276,0x39b9a99f,0x3a9a984f,0x3b62e9e8,0x3ae92844,0x3b95922c,0x3a6ca6b3,0x3b182e76,0x3b98331e,0x3b86b677,0x3b3f81ac,0x3aca3efd,0xbb04c539,0x3aa7843b,0x3a7c7236,0xbaf37d0d,0x3ab57545,0x3b921e94,0x3c04bea0,0x3b6a2ac4,0x396065b3, +0xbb5a0168,0xbb87e70c,0xbbcf8bc1,0xbb944f9b,0xbaeea810,0xbb4bb97e,0xb9832e2c,0x3ac8a0ec,0x3b013fa2,0x3aacff54,0x3b094ae0,0x3afd127e,0x3a9fbc01,0x3b1f9893,0x3ae14be5,0x3b58d419,0x3a24e90d,0x3a887d3f,0x3b47e4c6,0x3b280985,0xb9e447c5,0xbb8ef559,0xbc0e8584,0xbc014fc3,0xbbf78bf9, +0xbbdeafa3,0xbb84f220,0x3b30ed5e,0x3a3baa3f,0x3ab7232c,0x3b94969e,0xbb456c9c,0xbc02976a,0xbc110292,0xbbcbc3d1,0xbb365050,0xbacfb87f,0x3b0b5ba5,0x3b3cebec,0x3ba056cd,0x3bb3d154,0x3b113633,0x3b6541ad,0x397f75f2,0x39b2894a,0xb9bef9d2,0x3b7d2ce1,0x3b8d0a09,0xb92d46c2,0xba8ef53c, +0xbb764004,0xbb776469,0x3914012a,0x3b5f6a75,0x3b7cc3ae,0x3a222f64,0x3bb06dc2,0x3b7b9cdd,0x3b2dadf2,0x3b48e617,0x3ae0c51c,0x3c1ee4f7,0x3c334e67,0x3bac83e8,0x3a2c8da3,0xbb3ba4a3,0xbb684bfa,0x3b804ad9,0x3bee3639,0x3ba69f7b,0xb9a644a2,0xbb323d57,0xbb10b42c,0xba9c048f,0xbb006c15, +0xbadd6a0e,0x39f7ba27,0xb9a2c8c6,0xb9f1541f,0xba9f7907,0xba1b5dbc,0x3a804880,0xbae45e34,0xbb52d1fe,0xbb174423,0x3aa25589,0x3b3c6f94,0x3a22f7ee,0xbb3c4bde,0xbbfe4534,0xbc06fc38,0xbb1b6b95,0xbbb4df78,0xbcb15ec0,0xbc83491f,0xbc1a2972,0xbb9584e3,0xbbc6a6dd,0xbbfa8b72,0xbc2d0146, +0x3b64bcf5,0x3bd5c50d,0xbad1ee89,0xbb2120b2,0xbb729a1e,0xbb3463ea,0xba9df6b2,0x3a36e767,0x3aca6151,0x3b005130,0xb9b6c5b3,0xba73e228,0x3a17b3b5,0x38e937d5,0x3b0045bc,0x392704ff,0xba8199cd,0xba98ae8f,0xb9c33f49,0x3a0901cf,0x3a4911bd,0xbaa02304,0xbb2caa36,0xbb74e51d,0x3b0bcb44, +0x3b2b1fe3,0xbb09aee8,0xba4e3bea,0x3bedc22a,0x3c40832d,0x3c261493,0x3bfcdb5a,0x3b8ee9de,0x3b422470,0x3af0d67f,0xbaf8502c,0xba7361d5,0xb9597114,0x3b430911,0x3b936d8f,0x3ba4a301,0x3ba33898,0x3b224163,0x39f78f6d,0xbb1abafd,0xbb423c93,0xbb7f96f4,0xbb4de4cd,0xbaf5bdfe,0xbb35677e, +0xbb0cb3f2,0xba256ec5,0x3933797f,0xb923374f,0xb974e8f3,0xb99b6192,0xba87357d,0xb90ccba1,0x393b2132,0x390b53b5,0xb8285c4f,0x3a0b0de5,0x3b752d8e,0x3b6ae880,0xba725822,0xbb689716,0xbbddd7ca,0xbba40904,0xbb43ea8c,0x3b49c3ca,0x3bb18ecc,0x3b91f131,0x3bd031e7,0x3be64004,0x3c0dd3f7, +0x3beac638,0x3bc3ace1,0x3ba6ae57,0x3b4972ed,0x3ae78838,0x395e924b,0x39e967ad,0xba6e95bb,0xbaf5146f,0xbaaf12c9,0xbb51ea86,0xbb587f56,0xbb483743,0xbaf90b51,0x3a004d3c,0x3a234dbd,0x3a157d6a,0x3aa2b7f4,0x3aec18cd,0x3b179e38,0x3b26d73d,0x3b0082d9,0x3ad8ce8a,0x3abcc61b,0x39dd546e, +0x3be45a07,0x3bc1bb3c,0x3bb6bf22,0x3bca4056,0x3ba3a1f8,0x3b28389f,0x3a521e81,0x38c15e36,0xb8df23c5,0xba108a48,0xba8e3764,0xba8f49a6,0xba45508b,0xb941c377,0x3a13902e,0x39d47a20,0xba45193d,0xba99fe13,0xbaed5ad2,0xbb0695f2,0xbb06bc09,0xbb03c495,0xba2555a6,0xbae60d00,0xbb1974ab, +0xbb1e7d26,0xba9c7de7,0x39e12b10,0x3ac0150e,0x3b3a7902,0x3b72d9eb,0x3b7e2b0a,0x3b97ae08,0x3ba74fc6,0x3baa933e,0x3bb00bc9,0xbb254e85,0xbb681b4d,0xbb6bc005,0xbb05148f,0xba457192,0xb97bf76b,0xb97f98d1,0xba201e11,0xba4ea644,0xba55733c,0xba6a608e,0xba5834a9,0xba53020b,0xba2ac98a, +0xba71cff1,0xba701074,0xba603d25,0xbab14055,0xbb20177d,0xbb12e1e0,0xbaaf0773,0xbb0aa7e5,0xbb2a2a71,0xbb3151a3,0xbb174d3e,0xbb42fd70,0xbb0fb162,0xbb3cb9e4,0xbaec60a5,0xbb370f4a,0xbb1bb636,0xbb389442,0xbb494f45,0xbb61209f,0xbb647a2f,0xbb5d2330,0xb9663a75,0xbaeac50d,0xbacf5905, +0xbaa67f7d,0xbaab7ff1,0xba9c3c0a,0xba5790ae,0xb9577688,0xb92d3a3f,0xb93f17a4,0xb955ae16,0xb95930f0,0xb90a9613,0x39088439,0xb98fb532,0xba31182c,0xba90da9e,0xbab00e78,0xbad6fd11,0xbafeed09,0xb9658633,0xbad4be19,0xbaaea78f,0xbac545e8,0xbaae1c5f,0xbaff6a3d,0xbb24d1ec,0xbb1da713, +0xbb04829d,0xbb4a92d5,0xbb735fc6,0xbb60ab43,0xbb5137be,0xbb13cee4,0xbafbf328,0xbb224f3b,0xba7683ab,0xbb597483,0xbb2fbe8a,0xbb2887bc,0xbb18c1b5,0xbb05e44d,0xbaf70b0c,0xbae2415d,0xbaf52ade,0xbaf5c08c,0xbaf3589a,0xbaefdc44,0xbaf04d41,0xbaead7c0,0xbafd4074,0xbb01f98a,0xbb0723c5, +0xbb0d08b4,0xbb0c0952,0xbb370493,0xba11aade,0x3a14002d,0x3a20b960,0xba912767,0x39fb473a,0x39fa776b,0x39f361fe,0x39610087,0xb98bc17a,0xb80a3147,0xb8f5ab4f,0xba012719,0xb9d2466b,0xbaf1daef,0xb9a4cbe0,0x389328d8,0xbb39b686,0xb9963a27,0xbb5787a9,0x39c675fc,0xb8c63ab7,0xb9310d60, +0xb944e559,0xba51d25f,0xba6ca5ac,0xba4e380c,0xb9988aac,0xb9068435,0xb9c18f79,0xb9155e31,0xb893e17c,0x399397a6,0xb81e1feb,0xb9493876,0xb9f78d7a,0xba090ac7,0xba11d545,0x37c6b89b,0xbb654258,0xbb6929cd,0xba2f5247,0xbb25e94f,0xbb5888a2,0xba80ab44,0xba9d47d5,0xbab8711b,0xbac2b66f, +0xbb091c59,0xbb0b968b,0xbacdc02f,0xbb7135a5,0xbb2c12fd,0xb9e196d0,0xbb6c885e,0xbb1b058f,0xb9daeeed,0x3aa3f40c,0x3a1e53cd,0x39fd56ab,0xbac79042,0xbb0b28d1,0xbaeaabc8,0xba340c50,0xb99238b6,0xba529c16,0x3909c6fe,0x3a5ab495,0x3aeb34ac,0x3a6e8438,0x371ccb23,0xba8ef260,0xbae2af52, +0xbab913f0,0xbb186238,0xbb5c9e7c,0xbac5d740,0xbaeead99,0xb9dbd32b,0xba081539,0xbabf923f,0xba33f264,0xbadc3faa,0xbb48ae72,0xbb10050d,0xba9dfce4,0xb9e4dd31,0xbaa3cdfd,0xbac3d930,0xba4ba6c5,0xb9df2ba1,0xbb25aead,0xba7c3a22,0x3adea08e,0x39f6b273,0x3a563dce,0xbb38f992,0xbb7bbeb1, +0xbb53291f,0xba1f0bcd,0x39c484bb,0xba6e65d8,0x39c53c16,0x3a49f3a6,0x3b2b8ff7,0x3a80d401,0xb9212d19,0xbaf06077,0xbb13a64b,0xbaf06f4b,0xbb3e2835,0xbb6b21d0,0xbaf11031,0xba0e5dd6,0x3a4abfe6,0x38a84bb2,0xb9dd00fb,0xb8b5d3eb,0x39373595,0xbb527f96,0xbaf7b53e,0xbb338319,0x3885a581, +0xbad6ec67,0xba708ae2,0x3a22ad0b,0xba81b731,0xba16ae48,0x3a77ee33,0x3ba0f097,0x3b775849,0x3b73408b,0xbb213ade,0xbbaed6cf,0xbbaeb006,0xbae39050,0xba2727a1,0xbb0bed79,0x3a211d85,0x3b64ac1d,0x3bdae7d3,0x3b64bdc5,0x378e6826,0xbb719082,0xbbab2670,0xbb99d5cf,0xbbb34064,0xbba55d0a, +0xbaa8674a,0xba7aff4b,0x3b15731e,0x3b3c078d,0x3b08a75c,0x3b26c3d9,0x3ae3cdcf,0x3a9a85b0,0x3aaf78d6,0x3ad0015c,0x3b55757b,0x39b7aeee,0xb9dea5c2,0x3b55653f,0x3a8f75ad,0xbc17b799,0xbbd34167,0xbbcd9cee,0xbbe9cb07,0xbbc6b9fe,0xbbe0ed80,0xbbb166ba,0x3a38c04c,0x3b16ab8b,0x3bad0312, +0x3c1ac72e,0x3b6816f5,0xbadded53,0xbb6c89a5,0xbb722018,0xba55255b,0x3b8f6dff,0x3b9b0141,0x3bbdf155,0x3b4958cc,0x3ac251d9,0x3b5c8fab,0x3b2b432d,0xb990c5f6,0xba2e58c9,0x37cc36de,0x3b579e37,0x3b7043a3,0x385270f3,0xba9e7c7b,0xbb6b7f18,0xbb8879c2,0xb9250d36,0x3a7f769b,0x3a380f0a, +0xbbc98574,0x3b1f277f,0x3ba6e144,0x3c09664d,0x3b50fd41,0xb880a024,0x3bb9cbed,0x3bda0304,0x3b1510f0,0xb987e0b3,0xbb3d7d4c,0xbb822e02,0x3b0156af,0x3baee3f8,0x3b994f04,0xb9926b71,0xbb5ab1e2,0xbb835eda,0xbb7efaf3,0xbade420c,0xbb327605,0xba4a4147,0xba1da6d9,0xbb0806ab,0xba56ed55, +0xb9a2590b,0x3a676ef4,0xbaeaa2d0,0xbb46e1e2,0xbb002ef5,0x3aa37a5c,0x3b15f088,0x39ac652b,0xbb8a44ee,0xbc00e005,0xbc159bd4,0xba7a3fb6,0xbc064220,0xbcc8fcb2,0xbc7cc284,0xbc1dd44f,0xbc2db13f,0xbc52dd91,0xbc691dd3,0xbc84fb05,0x3bb51f06,0x3c385951,0x3aa09abb,0xb6db4301,0xbb2ea8dd, +0xbb41c2b6,0xba63ed84,0x3a9b8db9,0x3b08f5a4,0x3b0a1c3f,0x3b0cbdd4,0xbad759f9,0xbac60487,0x38f4ca42,0x3a14e0b6,0xba4d5079,0xbabb5559,0xbabbd860,0xb871abd2,0x3a8604f5,0x3a326071,0xbab74927,0xbb332852,0xbb744d96,0x3aa2dab1,0x3b3b1b8d,0xbb98bb18,0xbaca0e5b,0x3bfdb393,0x3c46aabe, +0x3be9840e,0xba317eb8,0xbbac21a6,0xbbba9bca,0xbb869b7f,0xbaca9e42,0xbb909f1b,0xbbaefba7,0xbb608c40,0xb9790d6d,0x3ad1f2c8,0x3b3f4545,0x3a6bb2c8,0xba2ff7fc,0xbb10a0e7,0xbb39185d,0xbb1dc733,0xbb4f37ba,0xbb6fef04,0xbb4525a1,0xbb01b28d,0xba3e1ecb,0x3820a110,0xb8778c9d,0xb81d4ee0, +0xba2c2664,0xba7411b6,0x391816a3,0x39f86815,0x3a83e416,0x38e6e97d,0x3a50f701,0x3b492964,0x3b9bacb4,0xbbd28ac1,0xbc2ea05b,0xbc62e8ce,0xbc53603d,0xbc0ba9ca,0xbb84c258,0xba325075,0x3a863321,0x3b444c50,0x3b7370e3,0x3b49d334,0x3b42035e,0x3b30ba1a,0x3b22ffce,0x3ae382fa,0x3a91422a, +0x39fcaf35,0xb9a111e0,0xbaa94f5a,0xbb3caae5,0xbb856a78,0xbb7747c6,0xbb63435c,0xbb46726f,0xbae59d22,0x39df9c96,0x38e20d57,0x39e778f7,0x393ce12c,0x3aaa01f1,0x3a9a83a3,0x3a90896d,0x39a61f05,0xb9569989,0xb9e3f423,0xbb78f5bc,0x3b4e1044,0x3b11b2db,0x3b95017d,0x3b96532d,0x3b9fe30a, +0x3b771441,0x3b434f4c,0x3ace6db9,0x3aca7c53,0x3a8a62e8,0x3a0f34d9,0xb9d5f749,0xbaaf1268,0xbadc5bfc,0xba980b64,0xba60c901,0xba1ca709,0xba30bb50,0xba5db17a,0xbaea8737,0xbafb2c9c,0xbb0291b4,0xbb23add9,0xbb2ba85c,0xbb1fc211,0xbb144031,0xba3bf084,0x3a3db7e6,0x3b2829cc,0x3b569c20, +0x3b7621fc,0x3b72b6c9,0x3b8a2d8e,0x3b88bcaa,0x3b7fded0,0x3b53869f,0xbba71511,0xbb823ad7,0xbb2012bf,0xbafcbed3,0xb9d05a6e,0xba1c9ae6,0xba5401d0,0xbaa0996b,0xbadc79a0,0xbaf9806c,0xbb048b45,0xbab2954f,0xba34e65a,0xb91ff621,0xb9c18fbe,0xba071c2f,0xb9e4a3d4,0xbaabba39,0xbad36ea1, +0xbb3ae635,0xbb6775d0,0xbb4fc9b1,0xbb4793d7,0xbb3c4a6c,0xbb40da0e,0xbb418059,0xbb3ba8d6,0xbb193c35,0xbb48c4d6,0xbb1d99d2,0xbb3a7465,0xbb27a96a,0xbb64c86b,0xbb9a68b4,0xbbba99f0,0xbba0b4e8,0xbb4132a9,0xbb31bfb9,0xbb048317,0xbafec8eb,0xbade0f1d,0xbab4de30,0xba518b21,0xb95db2c1, +0x39546bd8,0x3a0b05ec,0x3a30d41a,0x3a3d09ae,0x3a157ee2,0x39e4ebbc,0x388ada3a,0xb9878ae4,0xba0acc5a,0xba5021f0,0xba56c3c0,0xba990e9a,0xbb0a57d6,0xbafcab40,0xbb33be54,0xbb341d2d,0xbb5a03a5,0xbb6cbb7c,0xbb6902f3,0xbb86420f,0xbb921311,0xbb880517,0xbb8336ad,0xbb8f1e55,0xbb7fc46c, +0xbb695995,0xbb653990,0xbb3bd9e7,0xbb88f267,0xbb22f4b1,0xbb212e5b,0xbb13783c,0xbb021d3c,0xbae53aa6,0xbad0ec48,0xbaba639c,0xbabaf949,0xbab5a5f1,0xbaaabd7f,0xbaa2fbe7,0xba9657e2,0xba853116,0xba963a11,0xbaa283a3,0xbab0d64a,0xbabf08f6,0xbad3e594,0xbab83215,0xbb5b1f9a,0xbb7ed343, +0xbb2bd516,0xbb6c72bd,0xbb8eac8e,0xbb40d7bf,0xbb5081e5,0xbb56db69,0xbb530a42,0xbb6e8080,0xbb75e706,0xbb80ac39,0xbb9c376a,0xbb89dd44,0xbb45317e,0xbb924054,0xbb1dafbe,0x3b083506,0x3b68b336,0x3adc2ccb,0x3af4346f,0x3b0a7ab7,0x3b031a02,0x3b115354,0x3b14b0b2,0x3b0556ec,0x3b26aa46, +0x3b284b2f,0x3b079c6e,0x3b1ab6bc,0x3b218518,0x3b3cf2bb,0x3b24adf7,0x3b17d4b4,0x3b02d198,0x3afc0536,0x3ad24eef,0x3ac7221c,0x3b562e15,0x3b124c50,0xbaf0d4de,0x3b7c95bc,0x3b34368a,0xbad1b73d,0xba965f17,0xba9ceb29,0xbae1ce21,0xbaa074be,0xba8b1fa5,0xb9ee8013,0x3b1bf441,0x3b676b92, +0xba996260,0x3b241657,0x3ae0c300,0x3b47499a,0x3b2a384a,0x3b56dcc2,0x3b41a033,0x3b607612,0x3b669b5f,0x3b39322f,0x3b7de0b5,0x3b735bed,0x3b27ac89,0x3b5724af,0x3b7f2271,0x3ba68e78,0x3b8e9241,0x3b74f6b2,0x3b2d85d9,0x3b09c545,0x3a85641d,0x3abc2732,0xb966c330,0x3a9359cb,0x3b2c9192, +0x3b0e6ba8,0x3b0f5174,0x3b053399,0x3b073732,0x3b1444ba,0x3ab55dbf,0x3a92facb,0x3a54443b,0x3b0710f2,0x3aacdbd3,0x3aa8b157,0x3b50599b,0x3b269561,0x3b36d86c,0x3af83d71,0x3b155dd3,0x3b63b5dc,0x3b40f863,0x3b8a1102,0x3b9fbbed,0x3b527f1c,0x3bc89e9d,0x3bc6dba5,0x3b6b92c6,0x3ba135d0, +0x3bae0c29,0x3c0000ef,0x3bc4d640,0x3ba25c41,0x3b44a0cc,0x3b096048,0x3a557170,0x39792fe4,0x3a271698,0x3a860e63,0x3b01aa67,0x3b401633,0x3b2e48da,0x3a904f16,0x3ad07c58,0x391929b8,0xba7dd550,0xbb0b0d6d,0xba8f1279,0x3ac0022c,0xb8386ab7,0x3a82d2f6,0x3b6d77c1,0x3b1b2cd4,0x3b5fd1c1, +0x3b4abdb8,0x3b8c943e,0x3bc636ee,0x3baf4241,0x3be8ce68,0x3bf41a00,0x3b91afa1,0x3c01fa94,0x3bed7c3a,0x3b5d790b,0x3bbf9d68,0x3c11fbe9,0x3c58891d,0x3c35aad7,0x3c071247,0x3b8b0960,0x3adaac08,0xbabc2b6e,0xbb20ef32,0xbb254cdd,0xba8da9bc,0x3aa66de6,0x3b4e972b,0x3b41f11e,0x3ac0ff6b, +0x3b20b77e,0x3ab7ce14,0xba58143d,0x39fb9c44,0x39ac121c,0x3b16457a,0xb9af83ee,0x3a12713e,0x3b88a7ba,0x3b5469b5,0xbafd67d8,0xb9c51813,0xbb4eee33,0xbb135ff3,0xbab91389,0x36c276ba,0x3b200327,0x3c0dac8c,0x3bedb487,0x3c030528,0x3c2b3eb7,0x3b7ee162,0xbb1e4a97,0xbbcd785e,0xbba5932d, +0xbad5dd40,0x3b12cde8,0x3bc4edcb,0x3c08e530,0x3c11cf79,0x3bcc726e,0x3b8e53a1,0x3b6fd73d,0xb87ab370,0xb974dcfb,0x3a284e3c,0x3b2d0f12,0x3b47e736,0x38864698,0xb9e0f729,0xbb2685c4,0xbb1a8b93,0x3a952e8b,0x3b439d05,0x3b289927,0xba5d1b11,0x3c0348e8,0x3be428c5,0x3b93ba13,0x3b1250da, +0xbadaf14d,0x3c1d7f9f,0x3c478e66,0x3bbdb691,0x3b1dbb4a,0xbaff4732,0xbb997b75,0x3aabdcd2,0x3bbc7d31,0x3c05b31b,0x3b6cc8c3,0x3b1de803,0x3b8e8baf,0x3b3bbede,0x3af24491,0x3a1016ca,0x3a8b2133,0x3a1cd687,0xba23091b,0xba2ea28d,0xb9ff88ad,0x3a3db5ac,0xbb01798a,0xbb396f40,0xbac51113, +0x3a8f5a5c,0x3b04a0ce,0xb982687f,0xbb8f34c3,0xbbea4ac6,0xbbcee357,0x3b1ca8f7,0xbc1ccf04,0xbcca3f87,0xbc481744,0xbb1d800b,0x3b8be7c3,0x3b923eec,0x3b4f8772,0xbb010063,0x3c2a5684,0x3c42237c,0x3b32ee3e,0x3b8ccf0f,0x3b7bdda7,0x3b869f7a,0x3b722ad4,0x3b4faad9,0x3ad2746d,0x3b02af25, +0x3a9ea740,0x3a565a56,0x3ac9a7b8,0x3a991a03,0x3b0087b4,0x399d1403,0xba667fad,0xbac3ea59,0x398fe561,0x3aa06948,0x3a2b5d56,0xbaa7b057,0xbb0fad69,0xbb0fa470,0x3b2689e9,0x3b39dd7e,0xbb6ee9cf,0xbb3522ca,0x3c27089d,0x3c78719c,0x3c7225ed,0x3c53ef77,0x3c65c1b4,0x3c21da95,0x3bdae1d3, +0x3a19b3d0,0x384c1af0,0xba12cf76,0x3a6e853e,0x3b84fe6a,0x3bb4abf3,0x3bbddb2b,0x3ba4a4ec,0x3b874d77,0x3b188ca4,0x3a6af687,0xba887667,0xbb03ac79,0xbb133d36,0xbaf79627,0xba859661,0xb8b8e15c,0x3a014772,0x39ef0368,0xb98e81fd,0xb9bb736a,0xba19e263,0x39bd52db,0x39dd7838,0x3a49c779, +0x3a367914,0x3ad2cfc9,0x3b437e35,0x3bb5cbbc,0xbb735ac9,0xba5bbb7e,0x3a696ed0,0x3aff0c6b,0x3b80bc1b,0x3c05ca1f,0x3c226f6b,0x3c105d15,0x3c1dd526,0x3c27c070,0x3c41e6b7,0x3c22b0f0,0x3c0b9bf4,0x3bfe7fbd,0x3b8c6188,0x3b0225d3,0x39b2ae71,0xb9bc9948,0xbaacd4c0,0xbb0119e6,0xbb0b96a0, +0xbb324799,0xbb5d39cf,0xbb2c9fe4,0xbac08e07,0x3a4004d5,0x396bad6e,0x394c9cc8,0x3a79cc51,0x3adb1d12,0x3b06c0f9,0x3b246244,0x3a827de1,0x3a1f0c81,0x39a597f1,0x3a3ebde0,0x3ba444e8,0x3c007e98,0x3c0de451,0x3c037b84,0x3bef60d7,0x3bbf4077,0x3ba5f7be,0x3bb29901,0x3b2d3119,0x3a3b6a8f, +0xb9a962c9,0x39563521,0x3a33a4bd,0x3a83a536,0x3ae4c056,0x3ae09f45,0x39f7e77e,0x38322a5b,0xba4fc89d,0xbaee7c2f,0xbac3c3ec,0xbaa35248,0xba0e19f0,0xbaad8cba,0xbaf792d7,0xbae27cda,0x36bccc0f,0x3acef66c,0x3b279683,0x3b6e7e80,0x3b89050f,0x3b8a3996,0x3b97c8c2,0x3bb75083,0x3bb83e50, +0x3bde5a67,0xbab70f8f,0xbae940f2,0xba948f86,0x392fb908,0x3ac914c0,0x3b013483,0x3b00a399,0x3b02b781,0x3abe6c68,0x3ab43e3b,0x3a846042,0x3a1f2a40,0x38f6a85f,0xb999a2fa,0xba1ed486,0xba5563ea,0xba730e6c,0xba8d3fd5,0xbab8f305,0xbab0e348,0xbacb3e7f,0xbb1628b3,0xbb32a3fd,0xbb2dd0b5, +0xbb2aaac8,0xbb36433e,0xbb243b63,0xbb0699ff,0xbad3b760,0xbad4100f,0xbab355bf,0xba8024fc,0xbabdc163,0xbb078a69,0xbb3147d2,0xbb0556a3,0xbb394de5,0xbae61a9c,0xbab70d00,0xba5cd02f,0xba0bdcb4,0x36f5f350,0x3a437e44,0x3ad4cdf6,0x3a9a2c6d,0x3a32ee1c,0x39887aaa,0xb8fcf3bd,0xb9c24533, +0xb9f71973,0xba44acbb,0xba8935e2,0xbab62d29,0xbad14431,0xbb0415b8,0xbaf9c78e,0xbaaee226,0xbab61096,0xba7c7c34,0xbace7223,0xbab91451,0xbaa04f58,0xbad3afd4,0xbad230d9,0xbb009513,0xbb1e0e3d,0xbb4a2791,0xbb607acf,0xbb4ea3be,0xbb41c3ae,0xbb209637,0xbb1679fb,0xba3ba542,0xbaeb8c55, +0xbad0006f,0xbaa3661a,0xba7fb087,0xba314c3d,0xba0478e9,0xb93e51ae,0xb9f6f7e3,0xba0acc97,0xba1f7876,0xba339856,0xba5242e6,0xba7769ce,0xba883475,0xba9149b1,0xba9d37d1,0xbaa5605e,0xbab1cbec,0xbae0a0b8,0xb9b2586d,0xba29c9d6,0xbb327a88,0xb98c9c9e,0xba1692c3,0xbb46ba22,0xbb46286b, +0xbb4abdb1,0xbb52910a,0xbb4a4de6,0xbb4943bd,0xbb5570be,0xbab840e0,0xba67252a,0xbb601c6e,0xbaadd315,0xba9be864,0xbb0df8c2,0xbb16e6b3,0xbb2a7bbb,0xbad5a7f5,0xbaf49923,0xbacce730,0xbb225b68,0xbb3295cb,0xbb38c9f3,0xbb149871,0xbb09c945,0xbb1a94f8,0xbb061ca1,0xbafeede8,0xbad69077, +0xbafc21a8,0xbb074721,0xbb16ac3d,0xbb1c9351,0xbb0c40ad,0xbb33792a,0xbb1875a7,0xb91a9ecb,0x3b93d2ec,0xbb1cd584,0xb93ad64c,0x3b783a4f,0x3b72ea4b,0x3b61b183,0x3b367777,0x3b3204d3,0x3b348067,0x3b50be1e,0xba40b62b,0xbb48ade6,0x3b91e74b,0xb7495d38,0x3aa1b66f,0xbb302a19,0xba4973c0, +0xba54911f,0xb9ba4cce,0xbb37e476,0xbb72d6aa,0xbb81dd04,0xbb3efa29,0xbb2df5d9,0xbb57e4f1,0xbb185ac5,0xbada29e1,0xba48d082,0xbabde6a8,0xbb0c2d8f,0xbb4b3e50,0xbb65a13e,0xbb63d215,0xbb7cb733,0x38ba13a9,0xbadf7ce6,0xba94fcc3,0x36179f7a,0x3933e367,0xbaead6ed,0xbac62234,0xbb236cee, +0xbb3c679a,0xbb5fff66,0xbb3b180e,0xba51e833,0xbb083645,0xba7009e5,0x3965b5ca,0xbb00ad6a,0xbafc82dc,0xbb2a5ad4,0xba4a23c4,0xba10a371,0x3a061531,0xbb75d4a2,0xbbb154e7,0xbbca6d90,0xbb63f2fe,0xbb29d179,0xbb7bf422,0xbb143f8d,0xbaed17ad,0xb8b55e5d,0xbac687f7,0xbb200397,0xbb8390ca, +0xbb85cd1d,0xbb8f7f3d,0xbb5db650,0xbb15df75,0xba9e7bae,0x39d5e96e,0x3a275393,0x3a81e35e,0xba8bb91e,0x39a8f4e5,0xbadb0596,0xbb5980d9,0xbb5c902b,0xbb38d5f0,0xb99dbbe9,0xbaed5344,0xba933c99,0x3aed2814,0xbac909d8,0xb9e00267,0xba980d12,0x3b20b146,0x3b575448,0x3b95601a,0xbb0a01b5, +0xbbb629a1,0xbbfa9dda,0xbb925544,0xbb83bc25,0xbbbe63f8,0xbb4d0959,0xba03bcbd,0x3b2cfaaf,0x39e37657,0xbb1b5e46,0xbbbb48d9,0xbbdd3274,0xbbe3a51b,0xbbcde8d1,0xbb62175f,0xbae8e986,0x3ac74e46,0x3b1b650e,0x3b26b1b7,0x3aae6909,0x3b04d19a,0x3aa308de,0xbac47722,0xba472ee8,0xba1d6efa, +0x3af38868,0xbab9cf35,0xbaa7d9ee,0x3b7a5548,0xb9e25a41,0xbbe73dd4,0xbc001702,0xbc2bee4f,0xbc2673a8,0xbc0352bb,0xbc1f936e,0xbc181a6c,0xbbb0d51f,0xbb341fe8,0x3a8e257b,0x3ba1a837,0x3ab4675f,0xbb4e2880,0xbba936b4,0xbbc9a575,0xbb7b0b0a,0xb94b85f2,0x3abacf5e,0x3b1b9e79,0x3b655e10, +0x3b941f99,0x3b294ea2,0x3ae56e79,0xbabd3a78,0xba9f6ee2,0x3a8f14ac,0x3ae897ee,0x3b04a24f,0xb843307c,0xba4cc6bd,0xbb1e78d3,0xbb1dc308,0x3a0f481d,0x3aba065a,0x39e0d0fc,0xbbadb130,0x3bb4a134,0x3b5f82cc,0x3b7a5f00,0xb9fda1f2,0xbb55a831,0x3b9c3771,0x3bedbfc1,0x3b669783,0x393e4a33, +0xbb7da00c,0xbbd6e6f0,0xba0be3ce,0x3b76fd7a,0x3bbbbb9f,0xba42cd66,0xbba2e93f,0xbbe25df3,0xbbbc8c79,0xbb6d87a7,0xbabb2a12,0x3a920e3a,0x39ccbcd5,0xbaf59b45,0xbabbd4ba,0xbab69b69,0x3959eb0d,0xbb0766dc,0xbb28037f,0xbab4460c,0x3a11b50a,0x3a9866dc,0xba9b3427,0xbbb1171f,0xbc0e48f9, +0xbbf501a7,0x3a4bd4d4,0xbc43f384,0xbcda47b9,0xbc3f31f1,0xbbbe33a0,0xbc52a960,0xbc803610,0xbc9972ca,0xbcb05326,0xbb4ceba0,0x3b762506,0xbb297d67,0xbbc240d8,0xbc155671,0xbc1007e9,0xbbd5138b,0xbb31eacd,0x3a00571c,0x3a74de93,0x397c70aa,0xbaebc351,0xba9f9bd9,0xb9946b80,0x3a1b6207, +0xba88c80c,0xbac2cd9a,0xbae4c3a0,0x38d3fe9c,0x3a87e3e4,0x39c8b982,0xbacc2e6b,0xbb150e98,0xbaf1c099,0x3ad4ffb8,0x3b0b354e,0xbb8c61a3,0xbba413b0,0x3c32c108,0x3c6b4d68,0x3ba0938f,0xbb9b4104,0xbc527e1c,0xbc40a8b8,0xbc0cfe99,0xbb918a13,0xbb9db445,0xbbb5278f,0xbba8a6a8,0xbac82417, +0x3a2740a4,0x3af5853a,0xb90791b8,0xbb09e4ea,0xbb638288,0xbb888aa5,0xbb6ed6e7,0xbb4b6a06,0xbb0ffcd7,0xbb149978,0xbaa7a2eb,0xb9cbe87a,0x388b3b7d,0x3983e2f0,0xb9afb037,0xba4aabc6,0xba1fd751,0x3983e588,0x398ca999,0x3a0f1b71,0x3a7b4f2a,0x3a4e8070,0x3b228cf3,0x3bc81f12,0xbb65d953, +0xbc15ed85,0xbc85bcde,0xbc78aab7,0xbc4b57a9,0xbc0dbaa5,0xbbc2586a,0xbb7fd36a,0xba1c1bf1,0x3a8b33c7,0x3a1d5879,0x3abea143,0x3acaf08b,0x3ae6d7df,0x3aa0d20f,0x3a315647,0xb983a9a7,0xba8048ad,0xbb2a8a04,0xbb8e0eee,0xbb844908,0xbb908d38,0xbb7804dc,0xbb2ddb62,0xbad71bcd,0x382f1097, +0xb9a09f31,0xb9cface0,0xb91df6a7,0x39ddcce9,0x3a542109,0x3aa86223,0xb97540d7,0xba199b6d,0x3953e1e2,0xbb7480be,0x3bd974e2,0x3b268065,0x3ae22a4c,0x3b0dad7c,0x3af70093,0x3aa8008d,0x3a36ca59,0xba450200,0x3a2d9117,0x3a6749bb,0x3a56a349,0xba03d293,0xbaddcb97,0xbb211d70,0xbb0d36ff, +0xbb09d050,0xbb11c576,0xbb0ad6e0,0xbad464d8,0xba8e9f81,0xbaa68b12,0xbac9c4b6,0xbafd0473,0xbb28bb8d,0xbb191a2a,0xbae17f21,0xb79a7161,0x3ac7cf44,0x3b23ab5c,0x3b48b0fb,0x3b53e86b,0x3b3f8f24,0x3b682809,0x3b64ea65,0x3b837f73,0x3b500f15,0xbb785691,0xbb7d7274,0xbb5447f8,0xbb2752b8, +0xbae3afd1,0xbb081e3f,0xbb264b9a,0xbb5418cd,0xbb58943d,0xbb54a5fc,0xbb396bf1,0xbb0cedc1,0xbab37b0c,0xba248967,0xba8f7626,0xbabd3297,0xbae159a0,0xbb13bfa6,0xbb3c3c35,0xbb5ae392,0xbb4edfea,0xbb4c4569,0xbb51fb0c,0xbb455ea9,0xbb31ba7d,0xbb3eb47b,0xbb169c5c,0xbb157526,0xbaf9f482, +0xbabe7346,0xba88e44f,0xba4cabcd,0xbac848cf,0xbb1fd444,0xbb3e4142,0xbb54878a,0xbb03ccba,0xbb834a0d,0xbb703bbe,0xbb7b004d,0xbb7c4d40,0xbb776893,0xbb646216,0xbb54fb51,0xbb2b5d1e,0xbb0a8afe,0xbae81797,0xbab455b8,0xba92936b,0xba433cf4,0xba91af9e,0xbaaf42da,0xbaced48e,0xbae7f0cb, +0xbae21b2b,0xbb154a15,0xbb01f62a,0xbb37aecc,0xbb5cfa49,0xbb420795,0xbb569e89,0xbb815fb8,0xbb87ede2,0xbb94ded8,0xbb911387,0xbba0aa2a,0xbba341d2,0xbba0e769,0xbb99f5c7,0xbb81438c,0xbb84f51d,0xbb876cb9,0xbb808fb0,0xbb814012,0xbb6712bf,0xbb66f7de,0xbb5deacc,0xbb58ef1b,0xbb57f6ee, +0xbb5b9d72,0xbb4dfaf4,0xbb425db6,0xbb342565,0xbb28d309,0xbb1dd7f4,0xbb0da830,0xbb1859d1,0xbb1dc5bf,0xbb23c157,0xbb2e1b0b,0xbb32e00c,0xbb3e7aa9,0xbb5c02a9,0xbb23cb79,0xb89289a3,0xbb7b090e,0xbb331ced,0x38413998,0xb951bc57,0xb9e728b3,0xba33eb2e,0xba6ca8c6,0xba8d049e,0xbab72451, +0xbb4edc1a,0xbb8efcb0,0xba197f95,0xbb3708a3,0xbb69c0b5,0x3b502981,0x3ac0eeb6,0x3b74ae03,0x3b362182,0x3b4e4e2d,0x3b412801,0x3b510a7f,0x3b56ef08,0x3b4fb4ab,0x3b6e5437,0x3b710269,0x3b53e376,0x3b6297c3,0x3b674d28,0x3b7c7d4a,0x3b7145da,0x3b68b7a0,0x3b57cec6,0x3b4c3cdd,0x3b2b197d, +0x3b621515,0x3aa64ba8,0xba937ffe,0xbb996dab,0x3b28aaf1,0xba1e2e98,0xbb981f45,0xbb938db2,0xbb96e179,0xbb98f7b7,0xbb9decec,0xbb9a6de5,0xbb8045e2,0xba7065cd,0x3b2a4eca,0xbb86da0c,0xbaa7ee4d,0xbb0aa053,0x3b7f0814,0x3b7497f2,0x3b814a4c,0x3b7077ec,0x3b854aa8,0x3b8be147,0x3b819fd9, +0x3ba3e4a4,0x3ba10027,0x3b78eb9c,0x3b8f51bb,0x3ba3b16f,0x3bc7bb76,0x3bc3eedc,0x3bb3e37c,0x3b93bb70,0x3b61c167,0x3b2e1125,0x3b119ce0,0xbb3ae204,0x3aa75a27,0x3b0d80fe,0x3ae02b63,0x3aa5bda5,0x3ad5e5e9,0x3af8fb83,0x3addb9db,0xb840fbcb,0x3a357767,0x3a82ce61,0x3ac21b7e,0x3a75db50, +0x37f27507,0x3aff0599,0x3b2ee8ad,0x3a097172,0x3b21f77c,0x3b84b0e8,0x3b87789a,0x3b7c55f2,0x3b9b1232,0x3baeb13c,0x3b96ee17,0x3bec39c1,0x3bf06f93,0x3bac22a1,0x3bc7ab1a,0x3bd07367,0x3c07cbc1,0x3bfde5e0,0x3be49d07,0x3baead57,0x3b7117c7,0x3b45e665,0x39f77f66,0xba226664,0x3a31574e, +0x3b0fcaf4,0x3b2ee7b5,0x3ac0973f,0x3a7a91dd,0x3950babb,0x39d2215f,0xbb2dc1de,0xbb1afb15,0xbb2c630a,0x3a70b4c1,0xba828a67,0x36b1357c,0x3b27b398,0x3aa9e8f3,0x3a2ea7cd,0x3b6d2f7f,0x3bb579de,0x3bc32d36,0x3bb9e2d5,0x3bd82d8c,0x3be6fffb,0x3bb9a72c,0x3c0ecaf2,0x3c093608,0x3ba64b29, +0x3bd4b17c,0x3c1671d6,0x3c593c04,0x3c5a049c,0x3c3675f5,0x3bf55f4e,0x3b76d63b,0x3aa24960,0xbadbe3c9,0xbb66909f,0x3a0dee5c,0x3b0b2c24,0x3b83743b,0x3b63dbb4,0x3ae97df1,0x3b17511d,0x3a2a49f0,0xbb0d0e7b,0xbac5c97c,0xba8626e0,0x3aaf2bc7,0xbab0f745,0xba0faed1,0x3b956fdd,0x3b1be0fc, +0xbbb500aa,0x39ac21bb,0xb81da15a,0x39e003f2,0x3acb9420,0x3b0ece36,0x3b67430f,0x3c0575a3,0x3c198469,0x3c3da8fd,0x3c62f774,0x3c28ccaf,0x3b7d0b5b,0xbb2b2ddc,0xbb5920cf,0xba798249,0x3b99c1c2,0x3bed5951,0x3c27922b,0x3c12b21d,0x3b9eec25,0x3ba20403,0x3b1d01d6,0xba8080bf,0xba9cc5b6, +0x3ac106fc,0x3ab1c987,0x3ac19540,0xb82e72a2,0xb8ea2c66,0xbaaf7807,0xba680b11,0x3aecbba6,0x3afcadcf,0x3a036715,0xbb7cf9cf,0x3c0c76f0,0x3c03ff0a,0x3bb6efe8,0x3a128a31,0xbb964502,0x3be36092,0x3c249407,0x3ba2c55e,0x3b36d517,0xbae9038c,0xbbcc57b6,0xbad428cd,0x3b516887,0x3c09ca13, +0x3bae4e30,0x3b90305d,0x3bcaca33,0x3b53208d,0x3b4c7f99,0x3ad93dfb,0x3a953f43,0x3a918949,0xba722303,0x3702d26d,0xb9ba4b4f,0x395ce3c2,0xbafd91c6,0xbb0a08eb,0xba7625ca,0x3a35b88a,0x3a676bd5,0xba98f7f5,0xbbbd5f5b,0xbbde672c,0xbb9eafcb,0x3bbbdc45,0xbc73a3de,0xbcca75f5,0xbbf31fe2, +0x3b24c718,0x3ba0bb6b,0x3bbeae61,0x3ba42bff,0x3a6e2110,0x3c2f2321,0x3c4ce38e,0x3bcf373f,0x3be6d4dd,0x3bc6178e,0x3bb98745,0x3b960482,0x3b59a4e6,0x3aae38d5,0x3ae19483,0x3b2f9a2f,0x3af08318,0x3acdfd95,0x3adee51f,0x3a8c953f,0xb922f4f8,0xba726caf,0xbadf2838,0x3a1be9e8,0x3ab6ca18, +0x39e1eac4,0xba9acc33,0xbad00317,0xba0dbcfb,0x3ab772b1,0x3ad3b720,0xbb88e381,0xbbef1162,0x3c4387a0,0x3c7176ba,0x3c51106d,0x3c210610,0x3c492259,0x3c041eb0,0x3badb56f,0x3ab7b410,0xba6c1fc1,0xbb1e28f9,0xbb0bb176,0x3ad35a15,0x3b7c4701,0x3b96eb9e,0x3ba3fee7,0x3b9c4fbc,0x3b8eddd8, +0x3b21b504,0x3a3daef3,0xba9bc278,0xbb28cc30,0xba8fcf8c,0xb7216f47,0x3996fb1b,0x3a080670,0x3a34be38,0xb97a86e5,0xba12a640,0xb9adee49,0x39ceb4f2,0x39f368a1,0x3ab86c00,0x3ae6bdc6,0x3b268ced,0x3b22c599,0x3bf6f948,0xbbcda328,0xbae5a1de,0x3b14e4c3,0x3b2f7eb9,0x3b9462e0,0x3bdf97a3, +0x3c06f8be,0x3c0427f6,0x3c0dabeb,0x3c1a1767,0x3c2495a3,0x3c0f95c6,0x3bf9b619,0x3be712b1,0x3b787cb2,0x3ac487a8,0x39990f16,0xbab3c9b5,0xbb047c87,0xbb2322ec,0xbb6441a4,0xbb36ac94,0xbb6578cb,0xbb0e9ad8,0xba8db0a7,0x39ca2c65,0xb97917e0,0xb92345cb,0x385cfb8d,0x3a5d21a1,0x3a9394d2, +0x3ae54d48,0xb96b6586,0xba276663,0xba8a261c,0xba833ee4,0x3b11f22f,0x3bca45e7,0x3c0111e8,0x3be15d07,0x3bed1df6,0x3bea7216,0x3bf77c24,0x3c0a22cd,0x3ba0706b,0x3b236241,0x3ab0678d,0x3ad3a00d,0x3ad2dbac,0x3a9d53f4,0x3adb4eed,0x3adb6ebc,0x3a49725f,0x3a253ae8,0x37aa3f7a,0xbaa5490f, +0xba8b5962,0xba7860a9,0xbaaaf2bf,0xbaba3334,0xbac11390,0xba769391,0x3a840d32,0x3b1530de,0x3b4c7a55,0x3b688739,0x3b6b2f2f,0x3b61d23a,0x3b6de036,0x3b923f3f,0x3b8ea4bf,0x3bb0cf88,0xba912b98,0xba124417,0x3a43853b,0x3a9f5f9c,0x3b0def50,0x3b115fe8,0x3b0e4379,0x3b2152d6,0x3b01367d, +0x3b04e826,0x3aecb09e,0x3aaa4e30,0x3a471f5d,0x39662bdf,0xb95ee390,0xba317e44,0xba833b09,0xba8923d5,0xba4dd035,0xba9c7a02,0xbb1597a8,0xbb27bdc3,0xbb356398,0xbb22027d,0xbb2e6083,0xbb1b897a,0xbb229c54,0xba90a718,0xbab977fa,0xb9911a37,0xb98563a8,0x3a54879f,0x38a9a7f5,0xba5c05d1, +0xbaf9ab9c,0xba86413c,0xbb9e9189,0xbb12100d,0xbae97313,0xbaa9338a,0xba44da72,0xb8253812,0x3a4209d5,0x3abe33bb,0x3a80c4be,0x39efa525,0x37996dda,0xb9c26497,0xba34d17b,0xba780e5b,0xba8cf021,0xba9d8798,0xbab4877d,0xbac86f79,0xbaf07ab6,0xbacf1170,0xbb1ac8f2,0xbab70b2f,0xbaacff88, +0xbb004d20,0xbb07c491,0xbac54403,0xbad06ef8,0xbaf1a6ec,0xbb3253ac,0xbb21f4c0,0xbb3a8274,0xbb6e615d,0xbb59336e,0xbb6fe287,0xbb570895,0xbb20967d,0xbae377c4,0xba619861,0xba8b8d7d,0xba30d7d1,0xb9f87620,0xb9961b0a,0xb9232911,0x3938ebec,0xb7e5cf31,0xb84c4923,0xb8f2c100,0xb9460174, +0xb998b18d,0xb9e784af,0xba05965f,0xba1b9ca3,0xba334810,0xba41725f,0xba71be08,0xba5f40c6,0xbaa819dd,0xbb2a3194,0xbb9da265,0xba646d0e,0xbb289656,0xbba9637b,0xbbab7d03,0xbba9d07d,0xbba2d564,0xbba78198,0xbba62638,0xbba6c848,0xbb4a1c1f,0xbaa48483,0xbba9f3bd,0xbb57a281,0xb9e31166, +0xbae3d6c7,0x3a1f80a0,0xbb3c93d6,0xbaa55603,0xbab88a02,0xba8667a9,0xbadf3a53,0xbafe2714,0xbb11c107,0xbae1f3e3,0xbad376c3,0xbaf7f08b,0xbacecf84,0xbac016f2,0xba9c5de7,0xbabae6a0,0xbacb81cf,0xbae340dd,0xbaf8ed1d,0xbadd7e6d,0xbb3cbf18,0x3a264e84,0x3b48a298,0x3bb78e81,0x389312fe, +0x3b44a8cc,0x3ba1c45c,0x3ba73e10,0x3ba06cda,0x3b82c103,0x3b915ca2,0x3b95ece2,0x3ba35ca9,0x3b1f98b7,0xba57d622,0x3bb7365d,0x3b5af299,0x3b75882f,0xbb0397cd,0xba60cac9,0xb946a2cf,0x39e339d3,0xba9441a9,0xbaf0962d,0xbb2d45ff,0xbaecf5fc,0xbaeec7ec,0xbb28f44f,0xbaf02841,0xbaa636e5, +0xb9d3a9bb,0xba424b9c,0xba94f3a5,0xbaf8c061,0xbb17049c,0xbb3fdc1f,0xbb2f21d2,0x3b2173ad,0xba1da5f2,0x3a5a2493,0x3a93b995,0x3ab2c3d5,0xba130800,0xba546387,0xbaae7585,0xba8a7dae,0xbb270523,0xbb2bb8c9,0xb82eb9e2,0xbab4a312,0x39940810,0x3b00a248,0xbaab5c0c,0x39642a14,0xbafaf39a, +0xba9b8bc2,0x39da3d5e,0x3abc50ca,0xba887b62,0xbb161863,0xbb8bdccc,0xbaf9556c,0xbabaab31,0xbb2e35e6,0xbaa462e3,0xba539ee1,0x3a5a52a7,0xb95c8b5d,0xba68b0b6,0xbb13509e,0xbb2f5a01,0xbb7dd4d8,0xbb0bd5ea,0xb8f10f74,0x3932054d,0x3ad7a17c,0x3aa3e1cc,0x3b074a2d,0xba51d2fb,0x3a39861a, +0xbb232d79,0xbb1ba1c3,0xbb834038,0xbb1a0974,0x382e066c,0xbaa8bd9f,0xba13a094,0x3b4d9957,0xba0ae6c1,0x3a4ee054,0xba8cd582,0x3aa4398a,0x3b7ccfdc,0x3bb4530a,0x3afe76f4,0xb9a933d9,0xbb82b101,0xbae019b9,0xbb0df368,0xbb8eee32,0xbb21a611,0xb8b8a2ae,0x3b4fab84,0x3b22af58,0x3a2766f6, +0xbb0d58c6,0xbb77fb3a,0xbbbb6bf1,0xbb9cd4c2,0xbac31363,0xbabc67e6,0x3b643713,0x3b3343a4,0x3b1860b9,0x3a5fed06,0x3ab0c85f,0x39d28f74,0xbb6088d8,0xbb262784,0xbb2246f5,0x3a0b434c,0xbb30d0f9,0xbac4f67a,0x3b8707cf,0xb9e28ddd,0xbb55120b,0xbbb26bd1,0xbc1d5735,0xbc06f02c,0xbbd218eb, +0xbbfe1c6f,0xbbfb816b,0xbbb84ee8,0xbb3a9656,0x3a6c2b6c,0x3b6ff62f,0x3b31e3e7,0xbad064c4,0xbbc198b5,0xbbdd6f65,0xbbac30e0,0xbb5d1d3d,0xb925a3bf,0x3a9ca4cc,0x3ba2edee,0x3bd73cb0,0x3afde7bb,0x3a5e66bd,0xbb197152,0xbad367be,0x3af9d65c,0x3a0b7fb0,0x39e5f785,0xb9dad971,0xb9ce5b0c, +0xba85c6bc,0x37cee0fa,0x3ae7b394,0x3b197df9,0x3a29df07,0xbb3d7f49,0x3c1439af,0x3b4329e8,0xb9c9a89d,0xbb449dbd,0xbbbeeefa,0x3b95ff2b,0x3c0655c0,0x3ba94fbd,0x3acbf1c7,0xbb778f66,0xbc097f0a,0xbb2f0bb9,0x3b0f5327,0x3bcfe709,0x3a95b39a,0xbb1ce6dd,0xbb80fca3,0xbb611ac3,0xbb33bc25, +0x3a5dfcab,0x3b27c4c6,0x3ab950b9,0xba59f24a,0xba8eb8de,0xbad76e3b,0xb9e4fe6e,0xbb06f156,0xbaf0a511,0xba65a4bc,0x3808023c,0x38a55553,0xbb21c387,0xbbccf1c3,0xbc098dc9,0xbb98f7a3,0x3b6dafb5,0xbc84a6d7,0xbccd7eb6,0xbbd97143,0x37f058ba,0xbbf6fd19,0xbc086062,0xbc3dc4b4,0xbc804cb6, +0xbbcc1f13,0xba1cf4b1,0xbac1a6f3,0xbbc0c8b8,0xbc0f91cb,0xbc04632f,0xbbe3a0b7,0xbb78234b,0xba2db00e,0x3982de23,0xba0dcf50,0xb95e36d9,0x3a0115a0,0x39170d22,0x3a3240f3,0xba68e2ee,0xba9f6c48,0xbaf454a3,0x39765698,0x3a6a8222,0x395ff945,0xbaa70c17,0xbab9697f,0x3927c2be,0x3a7c99bf, +0x39e385e0,0xbb1d14c0,0xbc1e20f6,0x3c52bc1d,0x3c5c9876,0x3b93c839,0xbb01ac94,0xbbfecb79,0xbc005ede,0xbbcacecb,0xbb8968ac,0xbb399741,0xbb5752ad,0xbb6d7f5e,0xba23e72a,0x3ab4e686,0x3b062960,0x3a6e4447,0xba32d9fe,0xbaca0d0e,0xbb336983,0xbb49e522,0xbb0a2c3a,0xba461bf3,0xba841e11, +0xb8f927a0,0x394b790e,0x396b8a50,0x39e117d2,0xb9fca370,0xba367ed3,0xb9b80674,0x38e02c97,0x381c0514,0x3a191e23,0x3b0ec184,0x3ad71645,0x3b2d5847,0x3bfd55c0,0xbaaede4a,0xbb842886,0xbc1b1962,0xbc0b03ac,0xbc023692,0xbbaca8b0,0xbb7c495b,0xbb36d625,0x39aa9a5a,0x3b17b4c7,0x3b34e294, +0x3b5ba1d0,0x3b44edd7,0x3b3ba020,0x3ae6fa07,0x3a2a8344,0xba3dc101,0xbad527b8,0xbb5952c6,0xbb8f4fd2,0xbb5b3119,0xbb887be5,0xbb7a61fd,0xbb08bc86,0xbaa793d0,0xb9a7f4f9,0xba010414,0xba60a50a,0xb9cd47c9,0xb97d88d3,0x3a2ab7d8,0x3adbb125,0xb99c72f5,0xba0169a4,0x39875e83,0xbb13ca72, +0x3bef6c38,0x3b6c0e0f,0x3a8bf690,0x3ae145b1,0x3abd20c2,0x3aa53d6b,0x3a9bb818,0x3a6cfb11,0x3ae13d6d,0x3ad1b556,0x3ab5ae28,0x3a0a652d,0xb9373872,0xba855cc5,0xba7cac69,0xbaaeefde,0xbb154e7e,0xbb0cf8fe,0xbade5472,0xba2fe5e8,0xba66310f,0xba9bcf88,0xba98c763,0xbb001fd1,0xbae68dd0, +0xba5fee42,0x3a57aad4,0x3b0e1c82,0x3b0f24bf,0x3b2761c5,0x3b1fe436,0x3b0994de,0x3b2c56f7,0x3b3aa4aa,0x3b7245c0,0x3b613b70,0xba807437,0xbb00e352,0xbb068f1a,0xbab99306,0xbab5cce6,0xbad22222,0xbb026320,0xbb207d4e,0xbb124f36,0xbaf5fda3,0xbaa3ddf8,0xba9a48e6,0xba82fdcd,0xba350668, +0xbaae094a,0xbaef0b64,0xbb1b4633,0xbb1f2202,0xbb49ee8b,0xbb35521f,0xbb0ad845,0xbb267d6d,0xbb3d661c,0xbb2ff0c4,0xbb11ba60,0xbb23a392,0xbacefcc5,0xbacaf005,0xb992fac2,0x385b9c8d,0x3a8da6a4,0x3ac64cbd,0x3a86b479,0x3a0de339,0x39e229da,0xb9eec471,0xbadecf2d,0xbb7e41f0,0xbb8043a9, +0xbb835c3c,0xbb858938,0xbb8479e9,0xbb817d7f,0xbb81326c,0xbb6a8894,0xbb5b6784,0xbb4be814,0xbb311443,0xbb1417fe,0xbad980c9,0xbafb39ec,0xbb0558f3,0xbb12f39f,0xbb1aed38,0xbb1f19f3,0xbb3a9f18,0xbad48862,0xbb37946f,0xbb386b80,0xbb22d477,0xbb1f33c2,0xbb47694d,0xbb6067cf,0xbb67b287, +0xbb562e39,0xbb89973a,0xbb960d21,0xbb8ef0db,0xbb8d5a26,0xbb6ba531,0xbb7004e1,0xbb85a6a1,0xbb1ad832,0xbb7cbf92,0xbb5a6f95,0xbb5ecf69,0xbb5daecf,0xbb5f942a,0xbb62d1c0,0xbb69a5c9,0xbb5b0631,0xbb4dd488,0xbb40c116,0xbb35b151,0xbb2e2fd4,0xbb218e3a,0xbb2bad82,0xbb2ff058,0xbb344b32, +0xbb3ddd5c,0xbb3ed061,0xbb5f115d,0xbb0e27dc,0xba532ed8,0x3a3c9f1c,0xbb2820e3,0xba47d5b8,0x3a804c32,0x3a5e3672,0x3a1cce79,0x39772f5d,0x399e500d,0x393ba02c,0xb9074852,0xba9695c9,0xbb3d0bd1,0x3909b8e6,0xba79d049,0xbb5d33d4,0x3afe0010,0xbaa3c227,0x3b34e31a,0x3ae815e4,0x3b032dc2, +0x3b00d003,0x3aeac1bd,0x3ae873d0,0x3ae617bc,0x3b0c4d4a,0x3b127995,0x3b02ec4b,0x3b0c9c3a,0x3b0fd388,0x3b1d492c,0x3b1c6fe6,0x3b18321b,0x3b0d9d7c,0x3af926c4,0x3aca9dd4,0x3b1fbd32,0xbaad5169,0xbb3df098,0xbb47747c,0xb9077d3f,0xbb2cbd20,0xbb614856,0xbb6d14f6,0xbb78b0b4,0xbb7171be, +0xbb8c6ea5,0xbb8aff38,0xbb63c7e5,0xbb41bcbd,0xb8e049f6,0xbb37a0d8,0xbb548557,0xbb5c228f,0x3b025431,0x3b34547f,0x3b2a1a4c,0x3b3235a3,0x3b0738b2,0x3afba404,0x3af61831,0x3b327965,0x3b385da2,0x3b0b4a4b,0x3b291c45,0x3b4fe983,0x3b835fa0,0x3b8d6393,0x3b8154b3,0x3b4fec9b,0x3afcf80b, +0x3ad3a138,0x3a241910,0xbb5419fa,0x39e11637,0x3a283013,0x3a49cbbd,0x395b6493,0x38589929,0x39d349a3,0xb9b0ed56,0xbafbb472,0xba94ee0e,0xb9c0850f,0x39156c7f,0xb9f2a459,0xba9784a2,0x39cb4afc,0x3a841ff6,0xbaeee3a1,0x3a84f5c1,0x3b628b28,0x3b3f2044,0x3b607fdb,0x3b0f8403,0x3af10590, +0x3ae89646,0x3b70af70,0x3b8a1b38,0x3b55b46a,0x3b74bc2e,0x3b8232c8,0x3ba7961f,0x3bb34394,0x3ba35123,0x3b79d4b8,0x3b04872a,0x3af39714,0xba30bbe8,0xbaf20c6b,0xb9051d90,0x3acb8666,0x3acb4c92,0x39ae5a3c,0xb8b33d57,0xba850893,0xb9f23b86,0xbb763dfd,0xbb4383d8,0xbb7835ad,0xb711f651, +0xbafb0f73,0xba945d57,0x3ab0a4df,0xba0245f9,0xbae44265,0x3b05fd71,0x3ba1930c,0x3b9bbb77,0x3bb78e84,0x3b5b3569,0x3b1fe540,0x3b025c9d,0x3b83bd16,0x3b8a7d82,0x3b2c01ae,0x3b525e19,0x3bb10add,0x3c0c1f3a,0x3c22a8eb,0x3c0a8e28,0x3bb936bf,0x3afae650,0x3a0ad8e8,0xbb15acc9,0xbb629df8, +0x3a9c05ef,0x3b2e2433,0x3b7d5d0d,0x3b540480,0x3ae03734,0x3aca4ba2,0xb9688dd4,0xbb3d7327,0xbb55c9f4,0xbb20e9cd,0x39cb6ad0,0xbb2192c8,0xbaf0ef65,0x3b87d5eb,0x39f6dc77,0xbbfdfe7e,0xbaddfe02,0xba448b99,0xba4178a4,0x384b7e87,0xba2ec0e0,0xba3be03c,0x3ab6f8a6,0x3bb80734,0x3c1eb83f, +0x3c4480ed,0x3c4a479d,0x3be55fad,0xba5fdf38,0xbb30a4df,0xbaebf600,0x3b594852,0x3b9605f4,0x3be503f2,0x3bb7ce71,0x3b315df5,0x3b57ca86,0x397dfb1b,0xbb1bb0f8,0xbb0ee23f,0x3b07b34f,0x398125a5,0xb8da6e6d,0xba080a23,0xb9b09814,0xb9cd630c,0x3a473f30,0x3b1828de,0x3a9910e7,0xba8efa98, +0xbbc2b600,0x3c004c1c,0x3bc75501,0x3b903f7e,0xbae2b17e,0xbbdf96d5,0x3b30fdd2,0x3bc3c4f2,0x3b6d464e,0x3b14e6d2,0xbb1a39bd,0xbc017511,0xbb883e52,0x39eefbac,0x3bcbdac8,0x3b9a0a94,0x3b50a0c0,0x3b465ecb,0x39e9fa1c,0x3acc7484,0x3ae4f684,0x3aa9ad16,0x3ab8f329,0xba83bc6f,0x39d276dd, +0xb9e8d4bf,0xba048aa0,0xbae980fe,0xbab3b6d2,0xba22aa8b,0x3974014b,0xb9ac55c1,0xbb22281f,0xbbe4df00,0xbbe621f7,0xbb70821b,0x3bd9a0c3,0xbc9b93f2,0xbcbd1dc8,0xbb8a7ab8,0x3b6277a3,0xba31b325,0x39ec9659,0xba69d58f,0xbb8ff6d8,0x3b574438,0x3bf69c12,0x3be8fb3c,0x3b8c9142,0x3ad4840c, +0x3a84b52f,0x39f78c86,0x39d7a040,0x395ee51b,0x3a6f9131,0x3b346bdf,0x3ad57f87,0x3a644365,0x3aabcee7,0xb942c904,0xba83b715,0xba9478b3,0xbaeb6c99,0x39f835bd,0x3a88617d,0x3949f90c,0xba7e955d,0xba859bef,0x3a1b03ed,0xba295c2f,0xb9ab21dd,0xbb32b90c,0xbc3fd119,0x3c486038,0x3c30dfda, +0x3bb87916,0x3aa4156e,0x3b1f3b88,0xba28fdab,0xba94f2bc,0x395989fa,0xbb1993a8,0xbb86a0fe,0xbb9e0515,0xbab68189,0x3a996556,0x3b13eaa5,0x3b3827b4,0x3b2e63a2,0x3b534e06,0x3ab600ac,0x3a1ffa5b,0xba5e476f,0xbb096905,0xb9dca7fc,0x3a3a04f3,0x3a0771b7,0x39ad0d39,0x39ed3de3,0xb96af35c, +0xba38d5cc,0xb966cd78,0x39056d57,0x399e64ab,0x3af71fc6,0x3b31c54b,0x3b3f2ed1,0x3b3de943,0x3c14d34f,0xbbd4cc7d,0xbb876f24,0xbaf9abc3,0xbb05c4cc,0xba2f0fc1,0x39676c13,0x3acb71a9,0x3b3d35bc,0x3b82948f,0x3bacf114,0x3ba5c3e6,0x3ba38418,0x3b8e7616,0x3b7e65a0,0x3b15bf22,0x3a381c19, +0xb974368e,0xbb129ec9,0xbb3d37f2,0xbb5d81e2,0xbb95d423,0xbb5da0c2,0xbb6ad28e,0xbae81a68,0xba54d869,0xb98d0d54,0xba269e6c,0xba1b8e2b,0xba82e508,0xb9a6ec76,0x38cc29c4,0x3a6c8f41,0xba8537ec,0xbab88387,0xbafb8281,0xbb5ce5c4,0x3a67d2f0,0x3b19b578,0x3b67eb4b,0x3b56b14f,0x3b98d2ed, +0x3bba16a4,0x3be0982e,0x3bfa8c12,0x3bb74921,0x3b807bd9,0x3b4851da,0x3b2b26aa,0x3af9f483,0x3a47d1c3,0x3a2a847d,0x39ea2871,0xb858c7b7,0x390c6df3,0x36f6ae7f,0xba4aab82,0xba7aea00,0xba94c676,0xbb0e2041,0xbae83eaa,0xba9ac7b0,0xb9886568,0x3ac6f646,0x3b1cf6e2,0x3b3b1881,0x3b2fe60b, +0x3b15f71e,0x3b02f0d5,0x3b0addbc,0x3b1df36f,0x3b1e9f84,0x3b296005,0xba5a388f,0x392737e4,0x3ac82e1d,0x3a9a7ec1,0x3ab3017f,0x3a793b1c,0x3a5112f2,0x3a8452f2,0x3a5b0d88,0x3a8a5160,0x3a9e0daf,0x3a5d5d3c,0x3a0b0324,0x396273ef,0xb99407fe,0xba6087b4,0xbaad95f9,0xbaba0f4b,0xba899d26, +0xbae4526a,0xbb3ce808,0xbb304950,0xbb305334,0xbb12666c,0xbb1bffb0,0xbafc28e9,0xbaf8ef8b,0xb97eb392,0xba21f838,0x3a8dfaa7,0x3a99fc19,0x3b20665f,0x3acd363a,0x3a18cf25,0xb9f400a0,0xb7f199c9,0xbb9df097,0xbb3b7a9f,0xbb274bb7,0xbb1cfb85,0xbafd9a24,0xbabd45a2,0xba85029d,0xba55782c, +0xba657d8b,0xba86797c,0xba92af94,0xba96cb1d,0xba9d0e43,0xbaa6a5bd,0xbab0baf5,0xbab41ca9,0xbabbeaa6,0xbaccc90e,0xbad9f840,0xbad4d5e2,0xbb3bfd19,0xbaf9e4fd,0xbb16111f,0xbb25adc8,0xbb3d2ce6,0xbb28977b,0xbb1d5c69,0xbb383b18,0xbb6b15ab,0xbb4855bc,0xbb452b6d,0xbb722c1c,0xbb5dff87, +0xbb75cba1,0xbb726e5a,0xbb347111,0xbb468d38,0xba9a9b54,0xbac352c9,0xbaa728f6,0xbaa050ba,0xba9f31bc,0xba99c056,0xba85bb2b,0xba7e9200,0xba68d959,0xba5df191,0xba56731a,0xba539437,0xba50f4b2,0xba66a12b,0xba7d6bf8,0xba894eb7,0xba932c29,0xbaab7498,0xba886fa2,0xbb2d1a2d,0xbb77af82, +0xbb8cebd1,0xbb1b41cf,0xbb800977,0xbb94d7e8,0xbb9947f2,0xbb9786e2,0xbb8d9ec6,0xbb97b214,0xbb976c6a,0xbb959b10,0xbb807773,0xbb1e4478,0xbb8fc1c2,0xbb88ff22,0xba973e35,0x39d8d96c,0x3b3e6f2d,0xba0b1e02,0x3a08fd41,0x3a271379,0x3a69f003,0x3a3b0e2d,0x3a1deae1,0x3988f7ca,0x3a239708, +0x3a2f33c2,0x39df17af,0x3a2590bd,0x3a3c9c28,0x3a7396a5,0x3a5ab6a3,0x3a4266c6,0x3a1dfaf3,0x39b6424e,0x3986170d,0xba1680b1,0x3b3c79a2,0x3b6f0d37,0x3b21fe34,0x3b2b8aaf,0x3b749a8a,0x3b09de90,0x3b1dbecc,0x3b16aa0c,0x3ad7c91e,0x3b0cdbfc,0x3b192fb8,0x3b3a33ab,0x3b588d91,0x3b0044c1, +0x3b2fdddb,0x3b7c9206,0x3b545ae5,0x3a2fa63c,0x3a459cb3,0x3ae469a4,0x3b135227,0x3b07061f,0x3aede39d,0x3a574569,0x3ab6a6f8,0x3a9b5f9a,0x39ff4189,0x3a5cb66f,0x3aaa5efd,0x3b0723b3,0x3b1448a5,0x3b0be82e,0x3ac89ea4,0x3a56cf41,0xb99e9bdd,0x38d7047c,0x3b14675b,0x3a81c9f5,0x3b29c01e, +0x3b071d7f,0x3b065b23,0x3a82c39d,0x3a113ee3,0x3a01ba97,0x3a29df25,0xba42b1e6,0xba950f3a,0x3a68ef0b,0xb86e5e2e,0x3a7e57f6,0x3b3f4209,0x3a23d058,0x3af61381,0x399600e3,0x3a0d2b2c,0x3b253b55,0x3b50f15b,0x3b500df1,0x3b3a9519,0x3a1a6a09,0x3b1568c5,0x3b1a9761,0x3abbde61,0x3b0de990, +0x3b24b9b9,0x3b7982f7,0x3b6d926f,0x3b53d5a8,0x3b0a48ac,0x3a51ba15,0xba569000,0xb9640218,0x3aaec642,0x3ab60ad3,0x3b1f5e93,0x3b027381,0x3b1a8ef2,0xb95a626b,0x39ed0d63,0xbb0d5e7c,0xbacd0207,0xbb7c4219,0xbb0fe016,0x39d7dc7a,0xba505784,0xb6bb48bd,0x3b62d9da,0x3a613adb,0x3ac333ee, +0x3a342ea0,0x3ae8eb83,0x3b9ea16f,0x3bd0295a,0x3bdafa3d,0x3bcbe4f4,0x3b222dbd,0x3b72d6d8,0x3b363fac,0x3a4e539b,0x3abd3883,0x3b66725f,0x3bd6a780,0x3bffb60c,0x3be37628,0x3b9816a1,0x3ad93485,0xbadbc754,0xbb008044,0xb94652a9,0xb5a2b3ca,0x3b8b1c72,0x3b564d5e,0x3b18a49a,0x3a35208b, +0x3a27740b,0xba2e87ac,0xbb84f40e,0xbb8148b2,0xbb783871,0xba11d42c,0xbb5c2462,0xbac66fb7,0x3b7e09d2,0x39dbcd55,0xba1dfc08,0xba854961,0xbb8249a9,0xbb25b049,0xbb1a5e1b,0xbb23460e,0xbb1f4276,0xbada0c8c,0x3a8e1838,0x3b896d16,0x3bb507f8,0x3bdd98bb,0x3b17f1a1,0xbba9efeb,0xbbb452c1, +0xbb9e44c6,0xbb6d446f,0x396016e5,0x3b066c0c,0x3bb805f0,0x3bbb8fce,0x3a9ea68a,0xb9670049,0xbb41c0b8,0xbb01378b,0x3b1dc7be,0xb9802c88,0xba43af56,0xba642694,0xb9950d30,0x398bf8e4,0x3b21e3e9,0x3b4dd9f9,0x3b45c2ba,0x3a4648a4,0xba71e25c,0x3c303031,0x3b68462c,0xbaf69a8f,0xbb7abc2e, +0xbbf61371,0x3b69e6b4,0x3bfdd9a4,0x3bb9fcc5,0x3b484988,0xbb32d2f6,0xbc123762,0xbb939c21,0x39ae4fc9,0x3bc50c06,0x3b926292,0x3b421329,0x3b1a2ab3,0x3a8dc1a2,0x39a44831,0x3b49e5aa,0x3b456e92,0x3b0be8be,0x399b305c,0x38082de5,0xba89a653,0xba80f68e,0xbaf006a9,0xba8f0a92,0xba0a712f, +0xb82f0344,0xba3d2028,0xbb64b0a1,0xbbe7157f,0xbbf2d949,0xbaefc57a,0x3bd158bb,0xbc9d1eb7,0xbcb0f84f,0xbb542627,0x3b915205,0x3b011570,0x3b60062b,0x3a22c4ac,0xbb99abff,0xbb8598fc,0xb9c672d1,0x3b7fbc24,0xba0b9a26,0xbb43cd64,0xbb2b4ece,0xbb5a635f,0xbb25ac76,0xbab467f8,0xb804b717, +0xb60235f0,0x3ae4f9d0,0x3b0c534c,0x3a60c8c9,0x39c54340,0xba45edd7,0xba76c558,0xbae64e8b,0x399a3f04,0x3a2ec4e5,0x3912e764,0xba4f72ef,0xba27c5f7,0x3ab2550a,0xba1ac50c,0xbaa3b574,0x38dcaeb2,0xbc55eece,0x3c4f7321,0x3c18d9d8,0x3b9bb502,0x3b6af5e8,0x3b93ef72,0x3a8a3138,0xb9a273c1, +0xbac0bbff,0xb9176d00,0xba4016a2,0xbac7020d,0x3a417afe,0x3b22cd35,0x3b2a54a3,0x3b3cf142,0x3b1f4602,0x3b1585e6,0x3a0957f6,0xba712cdf,0xba2e9b8b,0x389ea2d5,0x39a757e8,0x3a92160e,0x3a558f2b,0x39ce828f,0x39a397d6,0xb9e116f1,0xba0c3b85,0xb9321fa2,0xb7b8c1d2,0x3817cc59,0x3ab8bcea, +0x3b487075,0x3b33e8b2,0x3b7404f3,0x3c162742,0xbaa32dd7,0x3a9861d4,0x3a96b461,0x3ab23358,0x39905f88,0x3ad386a3,0x3b0386a6,0x3b03aabc,0x3b6a7ac3,0x3baf6da1,0x3bddb608,0x3bd11980,0x3bb01d1c,0x3b971a03,0x3b3060ac,0x3a56f942,0xba7d8e77,0xbb0f3f68,0xbb59a96a,0xbb6285a8,0xbb3c0d14, +0xbb5d0c96,0xbb65b33d,0xbac361a1,0xba4430e3,0xb9faeacd,0xba11f547,0xba7a4b52,0xba3d49dc,0xba17ac5d,0x3a05b7fb,0x3ae7027d,0xb9273491,0xb9c5dafc,0xba25c506,0xba790c1c,0x3b953496,0x3b7b046f,0x3add7c4e,0x3b14de9c,0x3b310593,0x3b5b11b8,0x3b864b34,0x3badb177,0x3b8b43c3,0x3b51ca75, +0x3b2b2146,0x3b252cca,0x3b1fe0e5,0x3ad72296,0x3ab1c9a3,0x3a2110e5,0xba7746f7,0xba710998,0xba8aa122,0xba3ba3cc,0xba6ff78f,0xba8e861c,0xba56f42c,0xba98427d,0xba73a509,0x388f3927,0x3acaf32c,0x3b1f9909,0x3af53604,0x3b02c54e,0x3adbc762,0x3ab9f368,0x3ae2047c,0x3b1234ed,0x3b3cf33d, +0x3b59cc94,0x3af87099,0x3a841251,0x3a68c060,0x3a9b4f60,0x3a444714,0x3a23b71f,0x39edca95,0x3a03d9a2,0x3a3522f9,0x3a920168,0x3ac54cd2,0x3a3bb159,0xb7b8e6a0,0xba0b0b48,0xba90a285,0xbad21ce6,0xbb102502,0xbafb880b,0xbb110ab9,0xbad5a3e1,0xbaa68fb4,0xbaf96e3b,0xbb1a93f7,0xbb04e08e, +0xbadae863,0xbade3a46,0xba64acb3,0xb9462b49,0x3a9f9d95,0x3adfe823,0x3b34cf0a,0x3b659e66,0x3b4e72ef,0x3b405ca7,0x3b36e0f6,0x3b0eab46,0xbb101c3d,0xbb2ef26a,0xbb3df488,0xbb35d05f,0xbb2f6756,0xbb251dfc,0xbb21c1be,0xbb24d6fc,0xbb2d339c,0xbb3b7ed8,0xbb3dae13,0xbb336800,0xbb1cd023, +0xbaffbc09,0xbb071f39,0xbb0a92e0,0xbb146af5,0xbb1a99b7,0xbb29afd4,0xbb305797,0xbad8f47f,0xbb12f2c7,0xbaf41e39,0xbaff24b4,0xbae1c42e,0xbaf9427a,0xbb0da947,0xbb053474,0xbb019e92,0xbb2c0bb2,0xbb476952,0xbb434917,0xbb411f24,0xbb31fa6f,0xbb2c6ebe,0xbb38b68e,0xba712132,0xbb201413, +0xbb0f395f,0xbb0ec878,0xbb12434f,0xbb15a8e0,0xbb17a26c,0xbb178fe0,0xbb126321,0xbb0af02a,0xbb06d1c6,0xbb025cce,0xbb02f9fb,0xbb00d36a,0xbb07c364,0xbb0afaee,0xbb0e35b0,0xbb13c31a,0xbb14f701,0xbb32bc20,0xba89b4d6,0xb9bfc801,0xba57b505,0xba9503f9,0xb946d9e9,0xba44682f,0xba3b94d3, +0xba55e76a,0xba81ed26,0xba48d57a,0xba45f32c,0xba5fd449,0xb9a2f040,0xba8ce78c,0xba9c85d5,0xb9e57e89,0xbb118427,0xb98ccf86,0xbb1666ca,0x37dbc092,0xb81008e9,0xb80e2af9,0x396c73a6,0xb9d61ed6,0xba190a4c,0xba293e3a,0xb9bbd137,0xb96d86ca,0xb970649d,0xb913e52d,0xb8d34f88,0xb755c9ac, +0x3899ff63,0x385c7aba,0xb7e52105,0xb9a9f097,0xb9c10abd,0xb9758291,0xbb140f9d,0xbaeb7434,0x3aa6723d,0xbaf4966c,0xbaf5760e,0x3a011c06,0x397046b0,0x376112a2,0xb872ba38,0xba1ed229,0xba17088d,0xb7d4bc86,0xbb12d0c4,0xbb0caacc,0x3a99ae37,0xbb049ddb,0xbabdc3e4,0xba45236e,0x3a311e74, +0x3a1c8095,0x3aa5bb6a,0xb9bbe778,0xba7a8d70,0xba94568c,0xba205d41,0xb9dcb0ce,0xba14b574,0xb9826975,0x397c16fd,0x3a3ccaf3,0x3aa546ac,0x3a8adb05,0x3a07a04d,0xba0c2d20,0xba269dd2,0xbac7435c,0xba93c2be,0xb9cbe90b,0xb9cb9f30,0x3971aed1,0xb9088450,0xbaaf3812,0xba97ae6c,0xbb0a17af, +0xbb321afd,0xbb396e0a,0xbb0b6b98,0xba82f8bd,0xbae1de43,0xbab70e4a,0xb9a2f0cc,0xba7ab842,0xbb1e574f,0xba68df87,0x3aae131c,0x3a9cc679,0x3b2739d2,0xba0150a7,0xbaf1422e,0xbb0f9e8f,0xba8f7f29,0xb99f6830,0xb64d36b4,0x398d8794,0x3a0af5ac,0x3a6bf264,0x3ae00638,0x3ac19459,0x3a3bc8da, +0xba427ebb,0xba7cf6f8,0xbaf5e8ea,0xbaef3d4d,0xb9ee28cb,0x3a59e403,0x3a0415e4,0x386ec2d2,0xbaaddbe0,0xbabb406e,0xbb015db8,0xbb72bb0e,0xbb77825d,0xbb835dc4,0xba651492,0xbb1028c2,0xbad6bf62,0x3a539c27,0xbad1d9fb,0xbb1806e5,0xb91d74e1,0x3b38050b,0x3b5c9599,0x3bb76221,0x3a767c4d, +0xbab70d49,0xbb1dc2c5,0xbad39b4a,0xba9aa065,0xba7be367,0xba640c9a,0x3a496815,0x3b2bc895,0x3b97a7f9,0x3b7ff5df,0x3b082fbe,0xba6d1471,0xbad9d563,0xbb3de7c8,0xbaf5e288,0x3a891e83,0x3b4a5312,0x3b4a6718,0x3b1f0108,0x3a85e26b,0x39a2f7e4,0xba95e6c0,0xbb546335,0xbb98868d,0xbb80f004, +0xba446ac1,0xbb6538d2,0xbb30200d,0x3b4832ca,0xbaa780f9,0xbbcb9622,0xbb6f4f09,0xbb3d24b7,0xbb46a64a,0xbb5f23f0,0xbba16cbf,0xbbc6042d,0xbbd490a7,0xba2af8b8,0x3b8ccaa9,0x3bce4e04,0x3c1e0e2c,0x3bc4f91a,0xbae69411,0xbb6c5b68,0xbb811e5a,0xbaa7a47b,0xb9ba192d,0x3a4bba61,0x3a75acb4, +0x3a6b4da0,0x392ae5ab,0xbafc3f4c,0xbb71c701,0xbb34e39d,0x3b21fbdb,0xba090171,0xbaa2801c,0xba8aaae5,0xba44072d,0x39db3fc2,0x3b2f2889,0x3b45ab32,0x3abc8305,0xbaa80807,0xbba6a9db,0x3be50536,0x3b275589,0x3a8d9e05,0xbb8246a3,0xbc01b2fb,0xba8e256f,0x3b1db629,0x3b35f3bc,0x3aef5abd, +0xbb36d2e6,0xbc11ef0d,0xbbbf456b,0xbae622cd,0x3b531efb,0x3b59388e,0x3ab1f1c9,0xba96a781,0xbb119e19,0xba2c93f9,0x3af3ec91,0x3af5d43c,0x3adcf013,0xba098ba0,0x3a0bd277,0xba2c572e,0xbaaae5a3,0xbad1cb50,0xba462e09,0xb9df62d9,0x388a8b5f,0xba951b7b,0xbb802377,0xbc0280f4,0xbbf76a36, +0xbb183ee8,0x3bc055cf,0xbca64bd0,0xbca6d972,0xbb6bca92,0x3ac71401,0xbba21f3a,0xbbac235b,0xbc084d67,0xbc3cc388,0xbbe66040,0xb9f31617,0x3bbd6eea,0xba5fae8d,0xbba5b54c,0xbbb77d86,0xbbada658,0xbb6ffec9,0xbaca5d90,0xb990c888,0x3a9da800,0x3a07a86f,0x3910ead0,0x39a3f046,0xba98fdd6, +0xbae7a67b,0xbab2d259,0xbadd7ecf,0x392ae886,0x3a071882,0x38570e23,0xba36666c,0xba28ff79,0x3a741fc5,0xbb1c8fbb,0xbb01099f,0xb916d63d,0xbc660e50,0x3c3381c7,0x3ba9681b,0xbaaef631,0xbbb92616,0xbbcb07e1,0xbc0583bd,0xbbdd063e,0xbafbaf9b,0xbb409bd9,0xbb89363e,0xbbaf7a9a,0xbb44b8ae, +0xba4d17eb,0x38c6f1bd,0x39dc1dd7,0x396b6943,0x3a71077a,0xba04a889,0xb9f3225e,0xba3d6dbe,0xba3d0a61,0x398b95dd,0x3a9c2b0d,0x3a3abf33,0x38f1015e,0xb892cbf5,0xb9919ce7,0xba22cfe3,0xb8608ab3,0xb7d5af89,0x3966eb0d,0x3b0fa03a,0x3b477feb,0x3b2dcd5b,0x3b8a04a4,0x3c1d747a,0xbb853709, +0xbb9b7b84,0xbbc7d2fe,0xbbd88011,0xbbd4adbf,0xbbc9fe85,0xbba0e632,0xbb3204d2,0xba67ee18,0x3a803786,0x3a41cdfa,0x3ad75d20,0x3ac2fab5,0x3a8f5a8e,0x3a748586,0x3826ed56,0xba858fb5,0xbb2e4b7b,0xbb65e614,0xbb855ff2,0xbb9989b2,0xbb7f0520,0xbb5cb55d,0xbab4e7a5,0xba1e0332,0xba4d1f8f, +0xba59ca25,0xba838ed5,0xbacc4ab9,0xba91ce2b,0xba0075cf,0x39ceb3de,0xba846681,0xbab764fb,0xbb0372d4,0xbb943bd5,0x3a92d8da,0xba8df70a,0xbad74034,0xba3fe35e,0x3a8afe53,0x3b3f8429,0x3b8e93ee,0x3b9b2cc0,0x3ba481af,0x3b99f754,0x3b92d92c,0x3b5e036b,0x3b10490f,0x3a28c82c,0xb68fb6e5, +0xba1da864,0xba920012,0xba528740,0xba23e12e,0xba239a93,0xba94816e,0xbac4380f,0xbb1c8ada,0xbaefa6e7,0xba62391b,0x398ff5ba,0x3aceab90,0x3b0822fd,0x3af5d38f,0x3ac31dd8,0x3a7c7fe7,0x3a193f1a,0x3a5581d2,0x3a21722f,0x3a72637b,0x38fec2bf,0x39a15647,0x3a7daef3,0x3ae62e14,0x3a924862, +0x3a1ae460,0xb92e31bf,0xb9fac997,0xba134318,0xb9ca7fff,0xb8ce9a29,0x39bec424,0x383342f3,0xb9175d5e,0xb99e2681,0xba4aa943,0xbaa7e697,0xbaea393a,0xbafae2b0,0xbaf0c41b,0xbb17f384,0xbb33ccf9,0xbb206166,0xbb1f4485,0xbaf2042c,0xbad9cbcf,0xbaa353cd,0xba46d614,0x3a06a5fb,0x3a590e35, +0x3b0f4bef,0x3b2956b1,0x3b679302,0x3b3854ac,0x3b0d7790,0x3ad26d5e,0x3aaa1bfc,0xbb462b34,0xbb48865d,0xbb480e52,0xbb540ae4,0xbb480822,0xbb426d05,0xbb4548d5,0xbb591b7a,0xbb4291fb,0xbb329f11,0xbb20002d,0xbb08780c,0xbae6dcff,0xbac40312,0xbacf42ed,0xbad04825,0xbad2d45b,0xbae192ed, +0xbadb80b6,0xbb00cc55,0xbb2fd351,0xbb238f6b,0xbb48cba3,0xbb3bb757,0xbb561182,0xbb66ed5f,0xbb54f7d3,0xbb66a173,0xbb718b29,0xbb5c1f3d,0xbb45247f,0xbb4b97cf,0xbb40cb84,0xbb4235d1,0xbb515eae,0xbb334511,0xbb5f1c6b,0xbb0a791b,0xbb11daa5,0xbb14cd40,0xbb1aff24,0xbb235bf4,0xbb264f57, +0xbb2af9bc,0xbb1aa672,0xbb10b79c,0xbb0856d4,0xbb00242f,0xbaf2496e,0xbadc35f8,0xbae91b6d,0xbaf1820e,0xbaf8f564,0xbb028b12,0xbb0902aa,0xbafcd4e7,0xbb58f4d6,0xbb612f12,0xbb0b5f61,0xbb6099e8,0xbb6f5db3,0xbb0d7b22,0xbb13cd64,0xbb14297f,0xbb09ab52,0xbb178578,0xbb18ec65,0xbb150ac6, +0xbb50dc2a,0xbb4adb6c,0xbb024647,0xbb5b77ea,0xbb213add,0x3b1a0e67,0x3b3c0689,0x3b1301f5,0x3b0b57c4,0x3b208949,0x3b25c5ea,0x3b30d678,0x3b310af1,0x3b1f0cc6,0x3b2c99b7,0x3b2dd076,0x3b26d123,0x3b2a1ef8,0x3b2ce34c,0x3b33ec1d,0x3b39ce72,0x3b371311,0x3b302f14,0x3b1b915e,0x3b027b28, +0x3b05c8b8,0x3b35153d,0x3accc8eb,0xbadff67b,0x3b511fe9,0x3ae85253,0xbaf608ed,0xbad9266b,0xbadfc164,0xbaf1e9be,0xbae3d69a,0xbacf29e3,0xba838af3,0x3ac85443,0x3b441755,0xbab3e102,0x3ac8ca0b,0x39fdeaa3,0x3b3e44f1,0x3b1f9fcc,0x3b521d2d,0x3b691c83,0x3b8957c7,0x3b8be6d2,0x3b62e0da, +0x3b79dbad,0x3b6d5f4d,0x3b5502ea,0x3b547265,0x3b6c7fbf,0x3b87e9d8,0x3ba02db7,0x3ba1683d,0x3b914c12,0x3b5cce66,0x3b146875,0x3b134c06,0x397f9578,0x3af896d9,0x3b3a01f3,0x3b097fe4,0x3adf90dd,0x3ac450aa,0x3aa6541d,0x3aadfa4b,0x3a61105b,0x39b6fef9,0x38ffbfa7,0x3a7e768f,0x3a303245, +0x3a224ce6,0x3b13731d,0x3b03be36,0x3ae94c89,0x3b0e59b8,0x3b30af1e,0x3b8261bf,0x3b9175a1,0x3bba9222,0x3bc32ced,0x3b8b5c01,0x3ba8df33,0x3ba8debd,0x3ba3f4ff,0x3ba1f54c,0x3ba8e3f4,0x3bbd05c4,0x3bd9df01,0x3bd57b02,0x3bb950ed,0x3b6b7006,0x3b154142,0x3a7f63ce,0x3a9fc012,0x3ad874d1, +0x3b1048f1,0x3b09eafb,0x3ad46ebc,0xb8df0657,0xb9f77b22,0xbabf46f1,0xbae0ac35,0xbb5de409,0xbb2cbd80,0x3902d2be,0xba473daf,0x379c4e80,0x3b1c3025,0x3ab2ab87,0x3a5a6610,0x3b181f4f,0x3b391f2e,0x3ba59aec,0x3bd56f8c,0x3c0dd3ca,0x3c1672bb,0x3bd6f8fe,0x3be2ba15,0x3bcd79ea,0x3bb2878d, +0x3ba1768a,0x3bd68be0,0x3c1020c4,0x3c401529,0x3c3ec387,0x3c211b8f,0x3bbe047b,0x3b1fdbab,0x3a06dc75,0x3943b9db,0x3adf3cd4,0x3b7329e8,0x3b67a04d,0x3b1b36a0,0x3a07ba1b,0xb90e5759,0xbadf3c91,0xbb6e023b,0xbba3cc9c,0xbb960637,0xbac9cf61,0xbb676c80,0xbad9c7ac,0x3b39363f,0x3a613bcd, +0xb7a337e4,0x3b248c04,0x3b321780,0x3b51cf23,0x3a961de6,0x3b07d56a,0x3b018982,0x3ad784ee,0x3b9bf44a,0x3bf24e02,0x3bfec5b0,0x3c2db8a4,0x3bd17f4e,0xbb54c838,0xbb68d413,0xbb75e04a,0xbb1af7d2,0x3a41a819,0x3b2bf36c,0x3b6ec6f4,0x3b07ab32,0x385f522f,0xbad4141a,0xbb5dd008,0xbb1803cb, +0x3b2ae9ee,0xba2752b0,0xbab37fd5,0xba915d4f,0xb9c4ad9c,0x3aa66854,0x3b8f8400,0x3b8c79bf,0x3b4fee04,0x3a004cea,0xb93b3fde,0x3c1d1fa0,0x3b79ac45,0xba9580c0,0xbb7216fd,0xbc02ebb7,0x3a74457d,0x3ba66b77,0x3b99ee63,0x3b812243,0xbaa10598,0xbc07986f,0xbbc34597,0xbaefc199,0x3b892f54, +0x3bdea6a4,0x3bf3ba38,0x3bed75eb,0x3b945118,0x3b5a8f86,0x3b8fa9d6,0x3b2bcba5,0x3b16a65f,0x3a7dd6c6,0x3aa4702d,0xb92fac21,0xbabd5ae8,0xbac3648c,0xb9f916d8,0xb99acf51,0x3951fed6,0xba986b57,0xbb8a98ec,0xbc0419c4,0xbbd4c408,0x39590eda,0x3bfda0e0,0xbca0cd57,0xbc8c7bbc,0xbb1e206d, +0x3ba9de2e,0x3c1a9a66,0x3c3182df,0x3c050a86,0x3b356681,0xbab3e24b,0x3aaa5f8f,0x3c1a7c66,0x3bac5fa7,0x3b3b454b,0x3b1114da,0x39aa09df,0xba878218,0xbaf6a67b,0xb99c22e0,0x3a5e7839,0x3b17381f,0x3b1b9ade,0x3a8cfe87,0xb9ee98a7,0xba849983,0xba76c81a,0xbabebdc2,0x39706353,0x39d16759, +0x383dfe94,0xb9c35715,0xb99ef0c2,0x3aa7bd60,0xbb13a6db,0xbb152b34,0x3ab59805,0xbc664ef0,0x3c2861f7,0x3b67aad9,0x3b87b888,0x3bdf6c1c,0x3c5b9e85,0x3bff7c7c,0x3b8fa910,0x3a8372f9,0x3a90e080,0x395b934a,0xba008320,0x3a6cf248,0x3b1bd8d8,0x3b1190c0,0x3b7ffbe3,0x3b9d1dd7,0x3bad46be, +0x3b5c2325,0x3ac6644e,0x3a10e449,0x399b9ff4,0x3aa6a7dd,0x3b01a882,0x3a9fef9f,0x39dbb82a,0xb88edff6,0xb9aa3c0e,0xb9bc098e,0x37fefa6d,0x37c93007,0x399861f6,0x3b1f5147,0x3b4a10e8,0x3b53e97c,0x3ba6d889,0x3c1e5a56,0xbb20ae08,0x3b5c6d3c,0x3c038b20,0x3bece551,0x3bb02f38,0x3bb40dad, +0x3bb5aa9e,0x3bab3e9b,0x3bb21dc8,0x3bdd95c5,0x3c0974cb,0x3bf64a80,0x3bd07ebc,0x3bac6fca,0x3b42c126,0x3a4412e3,0xba8982b6,0xbb265ecf,0xbb42aad2,0xbb28c7b8,0xbb44cdac,0xbb2b4a0b,0xbb39a434,0xba7c579b,0xb96f6888,0xb9eb1069,0xba1cc080,0xba69ff36,0xba8afa6a,0xba335556,0x392de64c, +0x3a9b40be,0xb8dd5de2,0xb9ff0506,0xbaf5b9ae,0xba6dd7e6,0x3917bcb7,0x3b097819,0x3ac7ec38,0x3b046899,0x3b6839d3,0x3bae83a8,0x3be07ea2,0x3c0ffd34,0x3bd6cd92,0x3ba655a7,0x3b9110d2,0x3b9865fb,0x3b990ce3,0x3b749b48,0x3b53e8d2,0x3b17e1a2,0x3a235ce6,0x3a0a9683,0xb988c556,0xba8b908e, +0xbaa4005f,0xbaa268d3,0xba8af4d9,0xba1befa6,0xb922e7bd,0x3a4ec488,0x3af746b9,0x3b100f4c,0x3ac21bf3,0x3ab85061,0x3a8911ac,0x3a5cf959,0x3a739b5d,0x3abd0013,0x3ad02bc3,0x3b0bcc79,0x3b6d79eb,0x3b6b3b3b,0x3b80a9cc,0x3b742fb7,0x3b50e452,0x3b3f1783,0x3b3c5215,0x3b5710c4,0x3b54fe5f, +0x3b646b07,0x3b643b7d,0x3b0c8f5c,0x3a5d7a6d,0xb9a1dbd6,0xba38a2b7,0xba945f71,0xbad32bb9,0xbaa74bcd,0xba8c6932,0xba4bcdb3,0xba8e3429,0xbac6f4b1,0xbaf3439d,0xbaa50c80,0xba88f142,0xba187f20,0xb912329b,0x3aa738bc,0x3b0b2ad7,0x3b3ed103,0x3b63b885,0x3b90f04c,0x3b871d65,0x3b82cd0e, +0x3b6f1ba1,0x3b720de6,0xbb3b156a,0xbaafcf99,0xbac62170,0xbaa1836f,0xba6d195a,0xba1dfe43,0xba01da14,0xba0402af,0xba7f9ea5,0xbac085b1,0xbadfea6b,0xbaf12f0f,0xbae62dc6,0xbadbf793,0xbad9873b,0xbadbf2b1,0xbae5241c,0xbaf0f48e,0xbb0bb6ae,0xbb020b18,0xbb04764d,0xbad5fcb2,0xbaac5240, +0xbaeac140,0xbae32051,0xbac4a6b7,0xbab5b141,0xba99c845,0xbab85c7f,0xbaa5c6fa,0xbab26bed,0xbac27428,0xbab9f6db,0xbae660d2,0xbad0755c,0xbaa77327,0xb9fb1534,0xba39d3be,0xba627a9b,0xba4677ce,0xba594b74,0xba5fcb7c,0xba5976de,0xba36b58f,0xba4d4c20,0xba50ff56,0xba68737a,0xba74da70, +0xba889365,0xba97749c,0xba9cb413,0xbaa15cc4,0xbaa62159,0xbaa89766,0xbab0d161,0xbabf8287,0xba50c3de,0xbaa91bb7,0xbb4de5fe,0xba1a126a,0xba9c2dfc,0xbb5d4023,0xbb522f12,0xbb4ab83d,0xbb3f73b4,0xbb32dadb,0xbb299373,0xbb1e03d0,0xba5ddfb6,0xb8d05822,0xbb468540,0xbaa2162b,0xba7a38bd, +0xbac787c2,0xba878698,0xbb02715a,0xba8b281c,0xba9a9936,0xba3b230d,0xbabe362f,0xbadfe457,0xbafdbfc0,0xbae464cb,0xbad403fd,0xbabdc7d3,0xbab96115,0xbab439c6,0xbab2dc82,0xbaa2c1be,0xbaa3bae9,0xbaa97da9,0xbacecd27,0xbabacc80,0xbb0c52eb,0xba7fce7e,0x3a730e3d,0x3b91bb8a,0xbab7baac, +0x3a2de1b7,0x3b6ba532,0x3b661996,0x3b59941f,0x3b40c733,0x3b3a054b,0x3b3f0e78,0x3b51996f,0x399cd253,0xbb0091d6,0x3b89fa44,0x3a7cf7dd,0x3ad0a521,0xbb0763b6,0xba557a58,0xb9e5875c,0x3a183b8e,0xba86fa27,0xbaedf44c,0xbb21e429,0xbb136a9b,0xbb0979a9,0xbaedb838,0xbadfb105,0xbab2eab0, +0xba9813fb,0xba075b07,0xba09a6b4,0xba6915bd,0xbad09694,0xbaf56d4a,0xbb0fb29c,0x3ad8fcbb,0xb9c813eb,0xb925066e,0x39ea3ea6,0x39b5cf27,0xbacca08e,0xbad6ce5f,0xbb175a08,0xbb00ada5,0xbb48d5a7,0xbb3ce31f,0xbaacea2d,0xbaf80da2,0xba2e82e3,0x385a5b24,0xbade1459,0xba84f44e,0xbacad7cd, +0xb9fc3afb,0x39e20a1e,0x3b0cbf9a,0xba4da6f7,0xbb1d6959,0xbb7a8854,0xbb5b9b2f,0xbb2df7da,0xbabc88f0,0xbab13f6d,0xba8c72da,0xba96ec13,0xb9911240,0xb9af7c3c,0xba675a77,0xbb00623a,0xbb2f46b5,0xbafa6ca8,0xba0bb800,0x364b6d15,0x3a065539,0x39303c75,0x3a18636a,0xbb06bbb6,0xba952b02, +0xbb4dfdaa,0xbb3b4fbc,0xbb8aecce,0xbb5b625a,0xbab5f41c,0xbadc4654,0xbaa0afce,0x3a70109c,0xbaaa21fe,0xba9fab66,0xbab780fa,0x39f8fd8a,0x3b25eafd,0x3bb88725,0x3acd4649,0xba8c2f6d,0xbb6f88ad,0xbb7913d9,0xbb67650a,0xbb0a14dd,0xbb1e3100,0xbaa5982d,0xb9b50331,0x3af80d44,0x3af5df90, +0x3a4ceb83,0xbab94e94,0xbb2360e5,0xbb118701,0x39eab183,0x3a4970ba,0x3b52554e,0x3b16ac75,0x3acf2780,0xb8f4dcb0,0xba77b5d4,0xbb0063f0,0xbb5eaea7,0xbbb53806,0xbba937d8,0xbb08b7f6,0xbb84a390,0xbb31d8db,0x3acb9be2,0xbafc6ab4,0xbabf33d3,0xbb3dd671,0xbb3cb2ce,0xbb490bcf,0xbbad2203, +0xbbcbcae9,0xbbf96a0c,0xbc2245e1,0xbb9888e7,0xb9cd60e5,0x3a7344a7,0x3bb8820b,0x3b6699cd,0xbb6f7a23,0xbb9f996f,0xbbc42461,0xbbcf67a2,0xbb989bc7,0xbb93c02d,0xbb2d956b,0xb9be3c82,0xbb35bed1,0xbb60fa6e,0xbb8d8d22,0xbb33f1b1,0x3b2c0103,0xba69930e,0xbad61319,0xba956a68,0xba47829c, +0x3aab5a76,0x3b969207,0x3b848a8a,0x3b2f069c,0xb8fb6394,0xbac37e17,0x3bcf8c35,0xb9d7f3dc,0xbb322b52,0xbbaf45fb,0xbc007d3b,0xbb5621eb,0x3a0aacae,0x3b3dacd0,0x3b1821e5,0xbb0c083b,0xbc0d3620,0xbbd986e6,0xbb596fee,0x3a37d88b,0x3b2d1522,0x3ab89b43,0xbb0b4aa0,0xbb0075d8,0xba91d0e1, +0x3b2f7019,0x3b2ab3de,0x3af8d523,0x39e886d9,0x3a2ef4b8,0xba3edbc5,0xbaf4772c,0xbab61ea7,0xb998865c,0xb9778e88,0x38c58f5e,0xbac8613e,0xbba2d37b,0xbc0ecc33,0xbbfaaa44,0xb9fa79f1,0x3b9af067,0xbc95ac5f,0xbc82d4d1,0xbb867512,0xb9d861ff,0xbb4617d7,0xbba1fa31,0xbc1eba1a,0xbc61211c, +0xbc5ff660,0xbbdf0621,0x3b8d3b93,0xbb6b9358,0xbc03de03,0xbc109208,0xbc084241,0xbbc8f805,0xbb4aec81,0xbab2d496,0xba67cf08,0xba34989b,0xb91608ec,0xba226ba9,0xbacc8eda,0xbb0ae857,0xbac00588,0xbab2bca8,0xb7cca35e,0x39483cc1,0x3768c00e,0xb9b9c833,0xb9e0af97,0x3a04433c,0xbb445ff5, +0xbb2df566,0x3abc2d29,0xbc606202,0x3c0abfbf,0x3997f27e,0xbb7e7672,0xbbbeb77f,0xbbd57cfa,0xbbfa2e06,0xbbd1c3da,0xbb50e458,0xbb06a72b,0xbb26b855,0xbb5b4f0c,0xbb2a20b0,0xba9b7d33,0xba739230,0xb9d537fc,0xb9a47d58,0xb839a1d9,0xba816760,0xba5acb93,0xb988855d,0x3a6a2f2d,0x3a81e8c0, +0x3ad02848,0x3a739960,0x375feb11,0xba0cd6de,0xb9c1e362,0xb9b9bd84,0x3930661b,0x3819357a,0x39a5e508,0x3b0b2b04,0x3b24c6e6,0x3aff439f,0x3bb2b2d1,0x3c122c37,0xba2bfcb8,0xbb13d181,0xbbafc9a0,0xbbc90d35,0xbc005784,0xbbfb1460,0xbbdfd324,0xbba6721d,0xbb3b8ec7,0xba578c30,0xb9a2cd06, +0x3a59d93a,0x3a64c856,0x39d6f9eb,0x3a184cc3,0xb94a0d63,0xbad68885,0xbb2a1d3c,0xbb6969be,0xbb845bb8,0xbb7adc42,0xbb729154,0xbb2f35b1,0xba6d136d,0xb9af8c1d,0xba6016bb,0xba4b57bf,0xba953912,0xbab28bb3,0xba9b72f0,0xba03cea5,0x39544338,0xb9d5a51f,0xba4bf20e,0xbac718ac,0xbb702d51, +0x3abf3691,0xbb2f6e08,0xbb9e9db9,0xbb4b22af,0xbab1d341,0x3a51680a,0x3b0786bb,0x3b1987d8,0x3b893145,0x3ba28cf7,0x3bae8ad7,0x3b884be8,0x3b453931,0x3abf208d,0x3a2bcdc2,0xb9aa1212,0xbab1c082,0xbaa5c92a,0xbaa69657,0xba6cef48,0xbabe20aa,0xbae3768b,0xbaf0bb4f,0xbaac78d3,0xb9c73c60, +0x3a3d9a6f,0x3ab3faac,0x3ac67896,0x3a32f0c7,0x39f4fe2e,0x38f59708,0xb9755ce1,0x3890269b,0xb9951c00,0x3944a4a2,0xba8345f8,0x3b1694fe,0x3b0fb78a,0x3b0ebaff,0x3ae413f1,0x3a61e5f6,0x38848087,0xb9a6eba7,0xba211014,0xb9aef8d0,0xb922e181,0x39a0794c,0xb965014d,0xba142e61,0xba635ceb, +0xbaa6660f,0xbad7af96,0xbb0a0812,0xbb0ad64d,0xbb19e7bb,0xbb15a1e1,0xbaf5dba3,0xbaefc1cf,0xbb006296,0xbaa46c23,0xba2c200f,0xb98d8902,0x3a1957d5,0x3aa5c456,0x3b1af856,0x3b3e1b95,0x3b697833,0x3b82f441,0x3b727ab8,0x3b6c55e7,0x3b71a969,0x3b3cc3ea,0xba6cdc0d,0xbb1dcff1,0xbb2dd3f7, +0xbb403c76,0xbb435709,0xbb509314,0xbb66f1a7,0xbb83e0b2,0xbb6f78a2,0xbb5b0d8c,0xbb429805,0xbb24e805,0xbb05a745,0xbacf19ee,0xbadae3b3,0xbadf6eee,0xbae5f488,0xbaf3489a,0xbaf01653,0xbb14fbdb,0xbb0496bb,0xbb2e1102,0xbb455e24,0xbb3054e7,0xbb409906,0xbb6aa13f,0xbb5b9132,0xbb570f67, +0xbb39c87d,0xbb3c50ff,0xbb234f18,0xbb00ff3a,0xbb0314fe,0xbade0e22,0xbb018dd5,0xbb0bf72c,0xbb1b3732,0xbb21def3,0xbb1903b8,0xbb26d1fe,0xbb31f3b4,0xbb3c3897,0xbb4171bb,0xbb4d28a4,0xbb3d46f6,0xbb358ce8,0xbb2ec392,0xbb268eb8,0xbb20459e,0xbb14af72,0xbb1a61c2,0xbb1c5217,0xbb1e0368, +0xbb2369a6,0xbb231453,0xbb2a668b,0xbb318e63,0xbaf995e8,0xb9020fc8,0xbb4b0695,0xbb072e48,0xb84bff75,0x36f70fca,0xb7928843,0xb820372d,0x37ed016b,0x38247456,0x38cf7e12,0xbaae5c62,0xbb218c74,0x393f4140,0xbab45779,0xbb47c0e7,0x3b276334,0x3a66c7c4,0x3b512a09,0x3b16008c,0x3b2b57fe, +0x3b2dddd6,0x3b3699bc,0x3b375a07,0x3b2acae2,0x3b311758,0x3b342dee,0x3b3c47cd,0x3b3600c5,0x3b361396,0x3b362a73,0x3b454944,0x3b45ab4a,0x3b4090c3,0x3b2c1823,0x3b0fd20a,0x3b3bec95,0x3a4699cf,0xba9340bd,0xbb61d178,0x3ace77c3,0xba7ad325,0xbb716038,0xbb706dc8,0xbb74f9b9,0xbb667829, +0xbb7d9243,0xbb77b9ef,0xbb576cdf,0xba8c10d5,0x3ae077e0,0xbb534904,0xbab192ef,0xbb0676f6,0x3b3f33c7,0x3b3019e8,0x3b4428f1,0x3b5e5b47,0x3b7be628,0x3b7cde42,0x3b589b38,0x3b6680de,0x3b67f977,0x3b751eda,0x3b63ff4f,0x3b76cba4,0x3b8424de,0x3ba661d5,0x3ba982a0,0x3b9c0d0f,0x3b6c0686, +0x3b41b75e,0x3b1a7935,0xbac60396,0x3ad358f7,0x3acc933d,0x3aa7825b,0x3a2c189a,0x3a137c47,0x3a43cb65,0x3a1a4356,0xb9c54cd8,0xb701437d,0x3925ccd3,0xb70c88e1,0x39953daf,0xb9bfded9,0x39ed98ff,0x3ae34724,0x398eb09e,0x3b1bebc9,0x3b60b52a,0x3b713d45,0x3b8f0eef,0x3ba5764e,0x3ba774f1, +0x3b859ef7,0x3b8dba9a,0x3b95e6d5,0x3bb7dd66,0x3ba18a3e,0x3ba55e52,0x3ba249ce,0x3bd5f313,0x3bd75185,0x3bc2d4f3,0x3b78fc10,0x3b50945a,0x3a5d7f15,0x38808359,0x3a7dca2e,0x3a8f5ee5,0x3ab25ccd,0x39d011ef,0xba560a78,0xbac7e1eb,0xbaa69bcd,0xbb2ea6e9,0xbb4c4a02,0xbb55f75d,0xba6ad379, +0xba8da10c,0xb9e3b9be,0x3a12fb85,0x3a2e459f,0xba4ee24e,0x3b1687c8,0x3b3f4f6a,0x3b82eacb,0x3bbf760b,0x3be53f39,0x3be5d93a,0x3bb39b4c,0x3bae80c4,0x3bb48651,0x3bd902f1,0x3bad04ce,0x3bcf848b,0x3bf83c3c,0x3c373020,0x3c3d79a7,0x3c27c1e8,0x3bcec780,0x3b88bb68,0x3aca1ea0,0x394943f4, +0x3b302a5f,0x3b1fdc3e,0x3b4f2f66,0x3b0d0a87,0xb839b456,0xba77d6b6,0xbb1fa4d9,0xbb40f0b2,0xbbb7c435,0xbba44b74,0xbb2940e0,0xbb61462a,0xbb013164,0x3a922af2,0x394798d4,0xb9bd0788,0x3b6e31b2,0x3bd9b0ef,0x3bbc3d3c,0x3aec9e1b,0x3b46b9cb,0x3b2717d2,0x3a97a274,0x3b9ab3e9,0x3beb3789, +0x3bf30c18,0x3c3ac085,0x3c07524e,0xbaae4bf4,0xbb16db32,0xbb5f0559,0xbb0eb413,0xb9efc64e,0x3a65d38f,0xba20f6ae,0xbb1fa2d9,0xbae0459a,0xbb54483d,0xbb6e17b0,0xbb22d5bd,0x3b263831,0xba473ad9,0xbab7331e,0xba677569,0xb99d2d80,0x3b050124,0x3bb4ce1f,0x3ba4463c,0x3b4a16d1,0x399bfe5f, +0xb8b96e67,0x3bca025f,0x3b27d330,0xb974ec3a,0xbb6abf39,0xbbf70dc4,0xbb36277a,0x3a6e8383,0x3b3ccfd7,0x3b8324a5,0x39359ef0,0xbbe31a3d,0xbbe413f6,0xbb8416b9,0x3aa01cd5,0x3bd7c661,0x3c0acf19,0x3bfbd940,0x3ba49b38,0x3b923962,0x3b92e669,0x3b011375,0x3afff763,0x3a8dcf51,0x3af8484d, +0x39c9997a,0xbae41604,0xba9af799,0xb8b5ee96,0xb907b15b,0x39960051,0xbac72f84,0xbb9ae14a,0xbc11d618,0xbbc420e1,0x3aa66862,0x3be1dc61,0xbc8b17d1,0xbc497bea,0xbb5a2cf2,0x3b31313e,0x3c2eac57,0x3c28ecbb,0x3bef3777,0x3b30ea65,0xbb03a68a,0x3a70b083,0x3c35814b,0x3beda3b4,0x3b9459ff, +0x3b23820c,0x3a439574,0xba93906f,0xbb1fc618,0xba5c73a5,0x3a6a783d,0x3a7e92da,0x3a87cd9e,0x39e9ca93,0xbac4308a,0xbad8c57e,0xba9eae67,0xba8a7369,0x3908d533,0x3949dfb6,0xb8a51570,0xb8d6221f,0xb9a316a3,0x392fc90c,0xbb46c457,0xbb1bfeb3,0x3a243254,0xbc503479,0x3bd72b6d,0xba9f2003, +0x3b137ee0,0x3bb2de40,0x3c4ff967,0x3c0927ed,0x3ba7633f,0x3ac6f84b,0x3a07b3a5,0xba25deed,0xba6ff16e,0xb9f29848,0x3a4d4249,0x3a43f71c,0x3b4d7c10,0x3b9c414a,0x3bb4b464,0x3b860b42,0x3b3b2656,0x3aa02ea1,0x39d359c3,0x3adaf023,0x3b149e10,0x3aa98da3,0x39836658,0xb9fffd36,0xb99b2883, +0xb9372d47,0x39731df5,0x390925a3,0x3a0f479e,0x3b2dfdde,0x3b083140,0x3b25cdd6,0x3bb8739f,0x3c0b79bf,0xbb49388c,0x3b141bbb,0x3bf9e2cc,0x3bc8f1b0,0x3b87e851,0x3b5aa726,0x3b662e30,0x3b7531ff,0x3b71a954,0x3b9ba62e,0x3bc490df,0x3bb4e055,0x3b9f33c3,0x3b80c7bf,0x3b1529cb,0x39cb4c1f, +0xba93ee6b,0xbb2790f0,0xbb2ac120,0xbb17ff66,0xbb5e8895,0xbb0f4e42,0xbafc738e,0xba04f168,0x3912e568,0xb9d254ea,0xba2699a2,0xba51a023,0xba8f61d9,0xba2dd628,0xb996b303,0x38e049a7,0xb922faa0,0xba278d8a,0xbb218353,0xbaea72df,0xbb580379,0xbaa3e8d0,0xba193d07,0x38a73d37,0x3b230aec, +0x3ba16825,0x3bdd4fe0,0x3c0b1726,0x3be4acb3,0x3bc95ac4,0x3bc1c30a,0x3bc0e76b,0x3bb446e5,0x3b8c3f41,0x3b708bb2,0x3b3348e9,0x3ab010de,0x3a889060,0xb8022d2a,0xbac1784a,0xbadc576f,0xbacab9f9,0xbaccaa00,0xb9d2f426,0x39ae51b2,0x3a9b5816,0x3adcd74c,0x3abe4b1b,0x3a62e98d,0x3a31eed7, +0x39e8fbf9,0x398c1100,0x39531df0,0x39b81a2e,0x38745a1c,0xb759af11,0x3b7c7b52,0x3b9738ee,0x3bae04c1,0x3b9ab6de,0x3b8c7f46,0x3b77392a,0x3b741206,0x3b86fde7,0x3b7b8766,0x3b74b33f,0x3b6187ce,0x3b0cbee0,0x3a728ed5,0xb9a6a2cc,0xba0afe64,0xba61bebb,0xba9941b7,0xba7e0498,0xb9ed3d6a, +0xba24e73d,0xbab41cd4,0xbab4413b,0xbac3cd1e,0xba21a1ad,0xb9c257dc,0x3a11e2c9,0x3a35dc0f,0x3b1bf34f,0x3b25be19,0x3b61f21d,0x3b5fef01,0x3b8b534b,0x3b830948,0x3b7e14c8,0x3b61de51,0x3b7ea108,0xbb31158a,0xb9d98a5b,0xb9e19f9e,0xb971eb2e,0x39150365,0x39d111bf,0x39f59ae8,0x39e06832, +0xb8171a5a,0xb9f1355f,0xba37d673,0xba780460,0xba8bd7a9,0xbaa68fef,0xba9e315c,0xba9ffdd6,0xbaa1f00a,0xbab056e9,0xbace6806,0xbabbe568,0xbb1b08ed,0xbabf300a,0xbac57f00,0xbb03680d,0xbb1353a9,0xbafe02c4,0xbac3ae50,0xbab2d566,0xbadb791b,0xba643817,0xba079014,0xba26cffc,0xba0aa12a, +0xba8b9847,0xba790b34,0xb98bd2fb,0xba744a79,0x3987f6f6,0xb9390139,0xb8979cd0,0xb91d8439,0xb92ed729,0xb9032fd7,0x37b921a2,0xb8fc4d9a,0xb964ccdc,0xb9c5e85d,0xb9fb04fa,0xba1dc9cb,0xba45a80f,0xba44eb36,0xba4c78c8,0xba5345e8,0xba504770,0xba677188,0xba2f3abf,0xbab4d964,0xbb23b652, +0xbb85bbeb,0xba90b199,0xbb2827ff,0xbb933935,0xbb8c75cc,0xbb8442f3,0xbb6d6be5,0xbb6a2086,0xbb5db7e8,0xbb4773cc,0xbaea91dc,0xb99df8e2,0xbb63d963,0xbb0f384c,0xba0f472c,0xba7dc354,0x3a9e2381,0xbae5bfdb,0xba20b234,0xba2bb772,0xb951180e,0xba2395f3,0xba5b2b95,0xbaa22443,0xba922077, +0xba871df6,0xba49d22d,0xba55d93b,0xba4da174,0xba550139,0xba2ea2bc,0xba30f65d,0xba3f5204,0xba7fb149,0xba66381b,0xbaf0fc27,0x3a9deb43,0x3b3bd20c,0x3b85b8b5,0x3a092dbc,0x3b2d4840,0x3b632e65,0x3b6ea52b,0x3b6690e6,0x3b44fc0a,0x3b5acd45,0x3b63faa1,0x3b69fa86,0x3b1c3698,0xb7828b9c, +0x3b810879,0x3b49a7c0,0x3b4c0fc3,0xba94b34d,0xba4388f1,0x388cd0f7,0x3a8d2acb,0x39e68644,0xb92ed59a,0xbaabb6ae,0xbaa24fd7,0xba9a5c42,0xba2550a1,0xba5a53d8,0xba296f57,0xba162f1a,0x39380cdb,0x39b1bc07,0x3856ec26,0xb9d6c398,0xba88adc8,0xba5e7baa,0x3b43895c,0x39dcb575,0x3a6a2925, +0x3a88e1c4,0x3a8568bc,0xba436aef,0xba6d1be5,0xba879d94,0xb9f4708d,0xbae9a29c,0xbb0cfaf9,0xba78439f,0xba82cfa4,0x399b752d,0x3a419d22,0xba646aa4,0x3a85749e,0xb9f4374a,0xba25212f,0x3a890506,0x3b24b772,0x3abe9360,0x39ca20a1,0xbb07797d,0xbafab015,0xbaca3b13,0x3924e82f,0xb9159b21, +0x38c18122,0xb8f554fe,0x3a4d2229,0x3a5becd1,0x39988225,0xba322611,0xbaf14e72,0xba2e8e4b,0x3a8365ac,0x3a558e0e,0x3a0ba3eb,0x39e8b31a,0x3a96c785,0xbb08532e,0xba4809a4,0xbb5962b4,0xbb0a30fa,0xbb857135,0xbb206172,0xbad39c63,0xba52433c,0xb9aeec57,0x3a89ac24,0xb85440b7,0x395ac6e6, +0xba7b57ad,0xba33f992,0x3b1b982e,0x3bb35657,0x3b9455b3,0x3b371e3a,0xba954b90,0xbad4fc2f,0xbaca74af,0x39eb7024,0xb9f88398,0x397c67b6,0x3a572547,0x3b5a8555,0x3b7fc7d1,0x3b4b16bc,0x3a9ca1b1,0xba340545,0xb906ab16,0x3b15330e,0x3a7f743b,0x3b3482ea,0x3af0d1e4,0x3a8b2378,0xbaa6f147, +0xbaea8bd9,0xbb248bd0,0xbb5da8dd,0xbbbd35da,0xbbbaf52e,0xbb61bf02,0xbb800345,0xbb0a35c6,0xb78abaf8,0xbac11ad7,0x3b6c1235,0x3a427e4b,0x3a27535d,0x3977395a,0xbb7d8dca,0xbb5ef57e,0xbb8dcc4f,0xbbe7f343,0xbb837b30,0xbad3e5a3,0xba9a76fb,0x3b5e5ff1,0x3b0d7739,0xbb93fd2c,0xbbaa24b0, +0xbbdb1401,0xbc136323,0xbbd1fbc8,0xbbd2d53f,0xbb876196,0xbad83623,0xbb918941,0xbb8910e8,0xbb84d064,0xbb1161ba,0x3b23aacd,0xba533751,0xbaa738ca,0xba251c9b,0xb92d6e74,0x3b18f43d,0x3bc50a1f,0x3ba8079f,0x3b855336,0x3ad16d29,0x3b2c58eb,0x3bb0abb9,0xbacfd4ae,0xbb9fb3a0,0xbbb13fcb, +0xbbe61e65,0xbb838af0,0xb94cfdb8,0x3b4e8c8b,0x3b5cfeaa,0xb9d99bf4,0xbbe6d328,0xbbdf9913,0xbb8f0786,0xba329ee8,0x3b4e09b1,0x3b783d4b,0x3a900d0b,0x3ab843cb,0x3a6aba78,0x3b806df5,0x3b40b890,0x3afa947b,0x3ab5596e,0x3a7f85df,0xb9e75f8f,0xbb01feff,0xba9ce09a,0xb7935102,0xb8d9c6b9, +0x37e97606,0xbae93301,0xbbacc6d1,0xbc102937,0xbbe08644,0x3acd50b4,0x3b819beb,0xbc64c638,0xbc2ede1d,0xbb9caf9d,0xba74d9ea,0x3b8b30dc,0x3acdbfc3,0xbb54907a,0xbbfc15fa,0xbc543409,0xbc0a2f33,0x3b87c02f,0xbad49ac8,0xbba3fe0f,0xbbdca5b8,0xbbdefc9d,0xbbbd0153,0xbb7e9aa7,0xbb02f2fe, +0xbb0ee9c8,0xbaae94cb,0xb8477b27,0xba86ee3b,0xbac82385,0xbb0703de,0xbab22a6d,0xba6a8656,0x38828378,0x3913fd6a,0xb888be9d,0xb69cd01c,0xb98e1896,0xb9e2914b,0xbb183ebf,0xbb139dc3,0x3a599fc3,0xbc39e448,0x3ba59feb,0xbaec58db,0xba841763,0x39ad520e,0x3a8b7818,0x39ec9bed,0xb9a84971, +0xbb102529,0xb96d6fbb,0xb9d936e0,0xba020e64,0xba879e06,0xb9b862cd,0xba331ed0,0x3a1e3d48,0x3aa64315,0x3a8dc043,0x3a1327f7,0x39776c9c,0x3a309952,0x3b021bbf,0x3ad6cf6b,0x3aff94e9,0x3a93d568,0x38757c80,0xba3fcdf1,0xb9d57aae,0xb8870176,0x3977141a,0x38e68dac,0x39da3d7d,0x3ad9251e, +0x3aa7d7c8,0x3a8d417c,0x3bb1b901,0x3bd8e818,0x3ad455c4,0x3ae92627,0x3950df85,0xba3fc3fa,0xbb7ac500,0xbb84722a,0xbb81afa7,0xbb5f411a,0xbae328eb,0xb7134f5f,0x3ad22017,0x3b0b0663,0x3b075e14,0x3ad0da65,0x3a90a604,0xb77e79fa,0xbae27c83,0xbb0f1760,0xbb436422,0xbb53b1c0,0xbb282ec2, +0xbb2fc9d0,0xbad27bf7,0xb9be1b05,0x366cd491,0xba10adb8,0xba20c4e0,0xba70dd34,0xba37b155,0xba421fc6,0xb97b7f64,0x3892f9ef,0x3994c5bc,0xb7050854,0xba5af026,0xbabfbabb,0x39e29db7,0xbb316eb4,0xbba36819,0xbb5567a8,0xbae8320d,0x385a96b0,0x3a8eb306,0x3af67691,0x3b7601f6,0x3b9f5421, +0x3bb496c7,0x3ba14aad,0x3b8ba531,0x3b468981,0x3b15c8ad,0x3a8ddf68,0xba070a89,0xba7c1860,0xbac6c753,0xbabceb31,0xbaeab28d,0xbae62848,0xba834028,0xb9e99c4e,0x395a3f7a,0x3a8d94b7,0x3a8be4f3,0x3a60af1a,0xb947a6a2,0xb8e708a5,0xb935e133,0xb9d0c1a3,0xb9616587,0xb9ecf9e3,0xb93394ce, +0xba8f195d,0x3b8592bd,0x3b60a7ff,0x3b3d851d,0x3b397134,0x3b08e261,0x3ad1b38c,0x3ab2993d,0x3a990998,0x3a9c2cb8,0x3a8e2539,0x3a98acbe,0x398c89f0,0xb9f896c2,0xba99c6c8,0xbabacc46,0xbad99423,0xbb031c35,0xbaea1706,0xbb03e1ea,0xbac4457c,0xba5438c5,0xba8f378d,0xbab770bc,0xba1724fd, +0x398e1871,0x3a5a6651,0x3add8b4d,0x3b087649,0x3b60de97,0x3b53bd18,0x3b78bc0e,0x3b7aaff9,0x3b811c53,0x3b8d5dfd,0x3b9ad4f0,0x3b830cab,0x39e2b5a8,0xba48391c,0xba917bf9,0xbaa8d50b,0xbabd9f37,0xbae2c874,0xbb0b99d4,0xbb2606c7,0xbb26721a,0xbb25229c,0xbb1cff1c,0xbb11865a,0xbafce5d6, +0xbad4b3b8,0xbadbd9e7,0xbae3a120,0xbaef3244,0xbafccf7f,0xbb0687e9,0xbb1b8527,0xbac68e62,0xbb16848c,0xbb117564,0xbb08b35b,0xbb0a03de,0xbb2c2e4c,0xbb235d59,0xbb0c82e1,0xbac6b0fe,0xbadc4c96,0xbab9b1be,0xba3bdccd,0xba4f7de2,0xb9ecc45c,0xba0aa4c2,0xba61cbe3,0xba2de748,0xbadf8c93, +0xbacceac9,0xbae84dbe,0xbafdf8fd,0xbb06101a,0xbb0a9f30,0xbb13f6f2,0xbb10a39f,0xbb1141d5,0xbb13350a,0xbb11ed05,0xbb130278,0xbb1156f8,0xbb13ed2b,0xbb142e0b,0xbb143de8,0xbb16bf59,0xbb1288a0,0xbb25bc0b,0xbabf6ee1,0xba050dda,0x3981749f,0xbae68de8,0xb9fc874b,0x3990fbd9,0x39fd41f1, +0x3a06dd68,0x39e97b85,0x3a4235d0,0x3a58132a,0x3a750db1,0x39970404,0xba7247e7,0x3a3d5daf,0x3998d70f,0xbb2779b7,0x3a8ef84e,0xba9ab719,0x3af1fcc4,0x3a8cbe67,0x3aa02d82,0x3ab50183,0x3a9e51ad,0x3a939db9,0x3a7454fd,0x3a827733,0x3a8f5d75,0x3abd2c4a,0x3aa5a6d2,0x3aa36a36,0x3a984339, +0x3abe6797,0x3ac2a19a,0x3aba41e4,0x3a98c8a0,0x3a75b0eb,0x3ac731a6,0xbaa47366,0xbb0f1365,0xbae56384,0xba337328,0xbb1139c5,0xbb125d13,0xbb1afad7,0xbb2384fa,0xbb17133f,0xbb3647c4,0xbb339548,0xbb241a40,0xbb156ae1,0xba07dd74,0xbaebe194,0xbb1ecf29,0xbb1e27f0,0x3a8507d5,0x3ab71847, +0x3ab84ea4,0x3b062302,0x3ae1aebc,0x3ab508a7,0x3a5ffb1e,0x3a849761,0x3aa7d0e9,0x3b069f27,0x3ad926eb,0x3af1c3a9,0x3af305cd,0x3b40f787,0x3b48bca7,0x3b31fd3e,0x3aedf8cb,0x3adb53f9,0x3a5a91c8,0xbabf9162,0x3a1d20f0,0xb8e58424,0x39860687,0xb99ef028,0xba8265c8,0xb9ffd1ff,0xba6c17d8, +0xbaefa689,0xba9c8718,0xba55359b,0xbab3289e,0xba3e3bc4,0xba90f9ae,0xba9aa2c4,0x393dd6b9,0xba98cd54,0x3a9a7702,0x3b175ab6,0x3b0768a8,0x3b52b4de,0x3b1d516d,0x3ae2557f,0x3a4e3534,0x3a3efab5,0x3aaa5144,0x3b61d002,0x3b220975,0x3b2717de,0x3afed71d,0x3b7278df,0x3b7b9c25,0x3b5a6d23, +0x3ae9636c,0x3adb9ad1,0xb8ad3b13,0xba6d02c8,0x37ef3475,0xb93e9d2e,0x394579af,0xba041dec,0xbb00849e,0xbb09e718,0xbaf261b3,0xbb7041a7,0xbb5141f9,0xbb64b44a,0xbb0e6225,0xbaad6fe4,0xba630494,0xba6b48e7,0xba043dff,0xbb08d795,0x3a5b6ac4,0x3ad94254,0x3b135cab,0x3b9bcf13,0x3b721b8a, +0x3b17f41c,0x3a5b9861,0x3a0ff102,0x3acc57ba,0x3b937c03,0x3b340490,0x3b4e72df,0x3b62e98f,0x3be262f3,0x3bf82f71,0x3bd9d5b1,0x3b80d838,0x3b534175,0x3aadf931,0x3a1394ca,0x3b285a67,0x3a9d23ff,0x3b0c2c09,0x3ac56260,0xba8b25d9,0xbad97fdf,0xbb313a45,0xbb288e7c,0xbbb84d7f,0xbba71b94, +0xbb72fc4a,0xbb53498f,0xbb0f5811,0xba4e4c98,0xba9e3d44,0x3926977b,0x3b3f8fb1,0x3bdc6915,0x3ba0161d,0xb6cd3759,0x3a3c0b0a,0xb94ef289,0xbb17c2d7,0x3a8d3259,0x3b57439d,0x3b75ba3b,0x3c07a05a,0x3be08a47,0xba00873d,0xbb1ac9e6,0xbb8a68a3,0xbb88d595,0xbb69713b,0xbb4c0dcf,0xbba95688, +0xbbb90516,0xbb7b91d8,0xbb98d180,0xbb68f07d,0xbb0f5326,0x3b122a89,0xba199c1f,0xba71398e,0xb9911e33,0x390f3ebf,0x3b2ccb0c,0x3bbf2808,0x3baccb8f,0x3b5281d6,0x3a489981,0x39ff33ce,0x3b19a6d4,0x37406852,0xba2981ca,0xbb7e1c31,0xbbd72a0f,0xbbc31822,0xbb3bdc14,0x3aa4478b,0x3b5f3b28, +0x3a891cfe,0xbbb2f39d,0xbbedea44,0xbbb6d0eb,0xbad64dbf,0x3b87411d,0x3bcbd435,0x3b9651ff,0x3b61010c,0x3b71a4e8,0x3b786573,0x3ad3d5be,0x3ab9cdd9,0x3a71adce,0x3ae4ee91,0x39be4b78,0xbaf211d4,0xba80ca13,0x389b4c7f,0xb8b7302a,0x388360c9,0xbaee7777,0xbb9e0f96,0xbc10aee1,0xbbbc12f0, +0x3ae5ea1c,0x3b8e8511,0xbc4a4013,0xbc03eca0,0xbba868df,0xba9dc110,0x3bef318b,0x3b8fff88,0x3a93a38b,0xbad8437c,0xbbc06375,0xbb253f2c,0x3c0654ec,0x3ba1b8c7,0x3af923f4,0xbac2fdda,0xbb0575e7,0xbb3b07ad,0xbb4f15c7,0xbad88325,0xb9629ddb,0xbaaf3b8c,0xba664095,0xba395040,0xbb12a5bd, +0xbb148a0b,0xbab984d0,0xba1f9bf2,0x392bb23b,0x38ec486b,0xb904bc81,0x38c3b899,0xb996d6e4,0xba969656,0xbb1c2a16,0xbade0b96,0xbac6b2e9,0xbc227f2a,0x3b25ab3c,0xbb1ffcb2,0x3a79e999,0x3b01da8f,0x3b9e9186,0x3b8af4ad,0x3b3d8ac8,0x3a401a46,0xba45b3fd,0xbb02f7c9,0xbaf6bf14,0xbb0eb97b, +0xba94bdf8,0xba73bb74,0x3aa62d89,0x3b32daeb,0x3b56537c,0x3b37f4d9,0x3b302249,0x3ab7eb98,0x3a5eb863,0x3ade0782,0x3b0b6894,0x3a9266b6,0x37bdc607,0xba363edd,0xb9a27ee7,0x37a77bf7,0x3977d8ec,0x38cf9f9c,0x3a117c4d,0x3af85f0f,0x3a20a451,0x3a81dc4a,0x3b968a22,0x3baaaa87,0xbaf8a54f, +0xb825ed72,0x3b171414,0x3a5d5ac9,0xba9226bb,0xbb201b8c,0xbb113793,0xba97ffc9,0xba20f783,0x39fd7795,0x3aac1b8f,0x3add2b62,0x3af0309a,0x3acc0f15,0x3a81d41f,0xb8bd93ba,0xba998fd0,0xbb0ed3de,0xbb1665b4,0xbb25bc83,0xbb5ba6d4,0xbafd6a9d,0xba7fdcdb,0xb90e38c4,0x398fe984,0xb9c6522b, +0xba1b6fb6,0xba22ee71,0xba2c3465,0xb9f7ad64,0xba01d822,0xba4add3f,0xb9638111,0xba144737,0xbaea6b7a,0xbb16b2e8,0xbb8c3681,0xbb90fe0d,0xbb69fa4e,0xbb2d4e0f,0xb9a8266a,0x3afdd950,0x3b658d53,0x3b94c27e,0x3babea83,0x3bbf5453,0x3bd0b220,0x3bc1595b,0x3ba4b921,0x3b6c40bb,0x3b3b3243, +0x3afb6897,0x3a7123db,0x39b0dea8,0xba15cd13,0xbae38d08,0xbb0314cc,0xbaebaa9f,0xbae81862,0xb9c6cb48,0x3a08cb4c,0x3a9e5588,0x3a87a42d,0x39fa7c29,0x38873f71,0xb8d61ccf,0xb90c8687,0xb9a88832,0xb9d5f999,0xba504b22,0xbaa645b3,0xbb105d04,0x3b46cd50,0x3b7d48eb,0x3b8fe08e,0x3b794e88, +0x3b686fd6,0x3b451bf1,0x3b417f9c,0x3b4c7208,0x3b31a4fd,0x3b172156,0x3affa4d5,0x3a89a2d3,0x3996ce50,0xba206811,0xba364085,0xba729ed5,0xba90b4de,0xba884f97,0xba161ff9,0xba7a843a,0xbacafa49,0xbaa4bd2b,0xbaa2f129,0xb95e8ba1,0x3996e55d,0x3ac083ce,0x3acf5400,0x3b3b4363,0x3b34e523, +0x3b5899b7,0x3b3dd70f,0x3b534db0,0x3b4a7f6e,0x3b49245e,0x3b38b751,0x3b4b88cf,0xba974895,0x39a9d696,0x39ad1bba,0x3971e456,0x39b2bbfb,0x399d1bc4,0x39196450,0xb87f2104,0xb997343e,0xb9e3b256,0xba0b194c,0xba38945b,0xba6548fa,0xba97900e,0xba922759,0xba9472a3,0xba937b4b,0xbaa3c7ec, +0xbaafc5f7,0xbab98bf0,0xbb1e00ac,0xbadc822a,0xbb0395c1,0xbb0c5880,0xbb266b65,0xbb20bcba,0xbafc3137,0xbaf69136,0xbaff73e1,0xba853963,0xb9a9a92b,0xb9830d7f,0xb8aa17e3,0xb9c9dd8e,0xb9c0f92c,0x39a1db6b,0xbac19876,0x391dc0df,0xb99afa5c,0xb9a6c69a,0xb9daa572,0xb9f7dbb3,0xb9fcdbf5, +0xb9f61cb5,0xba11314c,0xba2fc862,0xba556803,0xba6c81e4,0xba803a06,0xba8d2a35,0xba8a8df3,0xba8d4881,0xba8e9d94,0xba8d7110,0xba94960e,0xba58e7bc,0xbb0d76b5,0xbb3fcf97,0xbb47cf89,0xbb03170d,0xbb478448,0xbb59dcab,0xbb4f8d01,0xbb401f50,0xbb26be8c,0xbb2a0163,0xbb211a90,0xbb0b4c75, +0xbb050369,0xba852c53,0xbb0a94a4,0xbb106323,0xba97b658,0x3a2a6916,0x3b234a8f,0x396fcc08,0x3a384b13,0x3a5aa321,0x3a90cec2,0x3a9533a1,0x3a88cc02,0x3a16c642,0x3a2afd2c,0x3a3789fc,0x3a84b59b,0x3a633c7d,0x3a662c43,0x3a57246d,0x3a85447a,0x3a848e9d,0x3a72aa07,0x3a3dab36,0x3a1d98b5, +0x38ee014a,0x3b1d81d1,0x3b280806,0x3a71248b,0x3b0884ee,0x3b2415d7,0x3a230077,0x3a72b2a1,0x3a62282a,0x39ff13d8,0x3a75d323,0x3a9021fa,0x3a9061c7,0x3b1ea498,0x3af66ddd,0x3a7aab35,0x3b3380ae,0x3b09311d,0x3a798200,0x39f11717,0x3aaf4c7b,0x3b0744a9,0x3b29125b,0x3b187b18,0x3a855c07, +0x3a8df0e3,0x3a92d895,0x3af071a2,0x3aaaaabe,0x3ab1c5f5,0x3ab57caa,0x3b168ee1,0x3b287d6b,0x3b15d79a,0x3af44c39,0x3a8a4018,0x3aac8d98,0x3b0c8d38,0x3aa8959c,0x3adac127,0x3aae8377,0x3a96e221,0x39313708,0x396fae81,0x3a051d65,0x3a02ab3c,0xb8a38de5,0xba25cd29,0xba066546,0x3909b9e9, +0x3a368f8f,0x3a5d9228,0x3a0f43cf,0x3b0673ab,0x3ab90d3f,0x3a2b5850,0x3b11e2dd,0x3b4d0e38,0x3b884350,0x3b806690,0x3a9b42eb,0x3aa3194c,0x3ab0e9b4,0x3b584f07,0x3b2046ff,0x3b2809b6,0x3b16cba2,0x3b622cf6,0x3b6b1f70,0x3b4140a1,0x3af27a40,0x3a328d51,0x3a69589c,0x3ad66d52,0x3aa2f7a2, +0x3a04754d,0x3a3b09d1,0x3a897b4b,0xbaeabfeb,0xba5acb16,0xbb2c3477,0xbb10ae5c,0xbb5f9802,0xbb00effc,0xbaf6c669,0xb92b952e,0x39bb3b05,0x3a28f7ee,0x3a848814,0x3a2df4ad,0x3a02bac9,0xb9de26b6,0x3b1e35d0,0x3ba01843,0x3be8f06a,0x3bd9471d,0x3b26f453,0x3b0e271a,0x3b1c8d95,0x3b9b5ecb, +0x3b42f09c,0x3b50e43e,0x3b73c45d,0x3bdd84a5,0x3bfe5ff1,0x3be35586,0x3ba23644,0x3b2d2894,0x3b153c61,0x3b37de31,0x3ad45599,0x3adf1ad2,0x3ac87cb5,0x3a4e3c8f,0xbb0784c6,0xbb052874,0xbb2cfdd1,0xbb4d5ba8,0xbbae94e8,0xbbadf89b,0xbb934458,0xbb52eaf9,0xbab77526,0xbab73afe,0xba3cd763, +0x3bcc983f,0x3ba4b469,0x3bc16893,0x3ba39444,0xb980af00,0x3aa8523c,0x3a73cb29,0xba8d1ef6,0xb9c671a7,0x38aacbe2,0xb93f22c5,0x3b688c1d,0x3b368ec1,0xbb4c49db,0xbb86d11a,0xbbc08d8d,0xbc0abc57,0xbbc0143a,0xbbb3cc8c,0xbb8d7980,0xbb64aa9b,0xbb9f730f,0xbb928623,0xbb4a296f,0xbab19550, +0x3b07b595,0xb9d5bf76,0xba0525f7,0x393ba8ca,0x3a29a031,0x3b4c5482,0x3bcd8db2,0x3bbc583b,0x3b9f7b5b,0x3b3eac52,0x3ba59752,0x3b6c39fc,0xba9f2f2c,0xbb91b2c2,0xbb910aab,0xbbc41fe6,0xbb8df798,0xba5c5bc6,0x3b3dae19,0x3b8a5c76,0x3ad21ef5,0xbb9dda82,0xbbdaac79,0xbba9b6f6,0xbab2b0a0, +0x3b744549,0x3bd3667d,0x3bbe69dc,0x3bb46446,0x3b830b92,0x3b9a423d,0x3b294b8d,0x3ad80e05,0x3ae98b0a,0x3ab0f07b,0x374b8937,0xbaec52fe,0xba75cd13,0x38dc90c2,0xb94de05b,0xb93370bf,0xbaf6e4de,0xbb9caeba,0xbc03ee3e,0xbbaea9aa,0x3b4769f2,0x3b61b0fa,0xbc19af7f,0xbbbd41ca,0xbbb03211, +0xba3a0661,0x3c44b83b,0x3c142380,0x3bb4f468,0x3af53355,0xbbf1e487,0xbbca2695,0x3ba733f1,0x3b603580,0x3acfd834,0xbae64b87,0xbb2a61c3,0xbb6393a6,0xbb79bed4,0xbb0ebe0d,0xbb1201c6,0xbac00a6d,0xb86b5b44,0xba802f26,0xbac1e9e2,0xbaebd1cb,0xba92b4cb,0xb9c463ef,0x39925325,0x38b2115e, +0xb823a047,0x397069dc,0xb77e0ea0,0xbaaac6be,0xba77c41c,0xba963f57,0xbadf85a0,0xbc08a227,0x3aaca248,0xba0cde8f,0x3b90058e,0x3bf49a73,0x3c1b716e,0x3c1bd413,0x3be4b102,0x3a5f636a,0x3ab30f8c,0x3a3832a5,0x3aa310d0,0x38f5d9db,0x3a026638,0x386be548,0x3b0abbe7,0x3b587085,0x3b4af085, +0x3b3fe12f,0x3b0d7b05,0x3ae63ba9,0x3b12baa4,0x3b072eee,0x3b11ca3f,0x3a9d0cba,0x390dd991,0xba2b908b,0xb99ebf43,0x38a1a827,0x38672891,0xb8095e85,0x39bf0cae,0x3a82722f,0x3890b9c9,0x3990cb9f,0x3b6e4b77,0x3b3518b6,0x3b0043ba,0x3b94a52f,0x3bcd249a,0x3bb0ff32,0x3af5774e,0x3a7eb34a, +0x3973a420,0xb9878d43,0x39ac24b5,0x3abcfcb4,0x3b6dd947,0x3b60e4f5,0x3b57f1c0,0x3b45df62,0x3ad7c050,0x397a17a3,0xbaa6c267,0xbad73c76,0xbb050946,0xbb05de17,0xbac8fa3f,0xbaa4714f,0xb9f0d886,0x390d9257,0x39a2d6cc,0xb94863c9,0xb9e58c06,0xb9f37e69,0xb8d8ae48,0xb94d91b3,0xb825e254, +0xb952ff51,0x3a00431e,0x39e19a8d,0xb91e3df6,0x3a40186b,0xbaf96ab1,0xbb17140a,0xbb496e0f,0xbb0bd191,0xba8e7546,0x394f8e58,0x3a95bbb5,0x3b2abfa3,0x3b6d8f7b,0x3b949b01,0x3bac3d2c,0x3bb15b23,0x3bacb1c4,0x3b8fb437,0x3b74535b,0x3b255123,0x3a3513db,0xb97da3d0,0xbaab515e,0xbaf97f44, +0xbb040951,0xbad26536,0xb9e633f1,0x39b0cbd4,0x3a3d3e0a,0x3a9c24de,0x3a3a9674,0x396c98a8,0xba08b13c,0xb99f868e,0xb9261bc3,0xb98be33a,0xb9a3af3d,0xb9e83ee3,0xba2d30ff,0xba895bbd,0x3b910f90,0x3b7905db,0x3b5615f3,0x3b623045,0x3b50002b,0x3b507c00,0x3b55d73e,0x3b60defc,0x3b4a85b6, +0x3b31fa26,0x3b1a2c13,0x3a953b83,0x38299f49,0xba8a59a6,0xba977b55,0xbaaae0f2,0xbac5315c,0xba93416f,0xba8b8758,0xba06a965,0xb918bfb1,0xba0d082d,0xba63c75c,0x37f15b81,0x3a663513,0x3aecb1a7,0x3b1517b0,0x3b323970,0x3b6ccaab,0x3b490804,0x3b4c9a0e,0x3b3ebd44,0x3b548c61,0x3b78299b, +0x3b870ed5,0x3b7fe20b,0x3a744ee7,0x3aa50184,0x3a7b3d45,0x3a6fbe87,0x3a4387d3,0x3a091e41,0x3969a14f,0x38237f68,0xb9ee2ead,0xba5b6cdd,0xba8e9cfb,0xbaafd639,0xbabc5589,0xbac9e4e3,0xbac6a585,0xbacd228e,0xbad7abd7,0xbae57354,0xbb02a506,0xbb06ac7e,0xbababff3,0xbacde413,0xba992fb3, +0xbaaa7149,0xba9cd1e3,0xbaa01222,0xba8e5034,0xba26cd3f,0xb975b758,0xb8f7aae5,0x39020846,0x3a13b9fc,0x3a1c917e,0x3a28c395,0x3a5d5d6a,0x3a579357,0x3a199373,0xb9849600,0xb9b3b4b1,0xb9e44d02,0xba0f1511,0xba1a1b97,0xba2588c9,0xba2ee5bc,0xba5d725a,0xba82ca60,0xba9ba947,0xbaab93a9, +0xbabefd81,0xbad5c4d9,0xbad28df0,0xbad1df5b,0xbad027e1,0xbacdbc35,0xbac6712c,0xbae25ba4,0xba0e013e,0xb9765d6f,0xba83559d,0xb9eb1dd5,0xb6a81ce9,0xba884cf2,0xba48aa03,0xba24ed29,0xba181bcf,0xb9831708,0xb8d82abb,0x38e402b4,0x3a442515,0x3a095668,0xb9843831,0x3a384250,0xbab7dc19, +0xba30f936,0xbadb87d6,0xb9cbd08d,0xb9cebe64,0xb9e9915c,0xb909567d,0xba101986,0xba408e10,0xba86d0fa,0xba79bc6e,0xba5779df,0xb9a9b1ef,0xba0d03bc,0xba10d038,0xba31e69e,0xb9d60e78,0xb9c45707,0xb9e2ab1d,0xba2029bb,0xba166ff9,0xba1f6567,0xbadd552d,0xba894109,0x3abe0dfa,0xbae8b028, +0xbaa97643,0x3a494bd7,0x3a2fa068,0x3a03a328,0x39baec81,0x3946d8a8,0x3975e1ea,0x391d08ea,0xbab081ea,0xbaea598c,0x3a99ed74,0xba91fa20,0xba2fd014,0xba892aaa,0xb9ada0b6,0xb9842290,0x3a1f0e9b,0xb971b686,0xba671afd,0xbad8eeaa,0xbac9b935,0xba96a920,0x3721f397,0xba08d0a9,0xb9f58b59, +0xba1d450b,0x39b977fe,0x3a09d673,0x398a32d8,0xb93eca24,0xb908e6b2,0xba3ab452,0x39419d9f,0xb97ac223,0xba74ae21,0xb9a1e996,0xba1d2894,0xbb007019,0xbab367fe,0xbaeaaf09,0xbb15b65f,0xbb00a5af,0xbae3ad08,0xbb0e370c,0xbab78496,0xba86c25c,0xbadafcf9,0xbaaad8c3,0xbaae8480,0xb9146650, +0x39c650c5,0x39f0f514,0x3af54344,0x3953d873,0xba888764,0xbb27bbd8,0xbb2ec012,0xbb010d0e,0x3a638b83,0xb962bcbb,0xb91f1c34,0xba6e2e09,0x3a1b8c7d,0x3a4a3fc2,0x39a16a33,0xb9df52c5,0xba0a2c7d,0xba40de72,0xba6007e9,0xb9f10bf6,0xba6a2dd8,0xba3f288a,0xba31a578,0xbb3b324f,0xbb03763b, +0xbb301e6b,0xbb865997,0xbb5beb33,0xbb483ea5,0xbb4c5e34,0xba945f80,0xba558a79,0xbaae0eb7,0xba94ab84,0xbb10bac9,0xba57a396,0xb980f7ab,0x3a49eeab,0x3b70a098,0x3acbd182,0xba4c2b44,0xbb531393,0xbb6751dc,0xbb0cb7d6,0x3af3922f,0xb93a52b2,0xb9e6e742,0xba2129be,0x3b15610c,0x3b51b1f3, +0x3b2b998a,0x3abbc959,0x3ab4cd3d,0x3a7cd2d1,0x3ab973d6,0x3adb8f66,0x39e0e828,0x3a54545a,0x3a09fb00,0xbb0c9bb1,0xbb01be10,0xbb2003a7,0xbb2376c7,0xbba282b6,0xbb9a63a1,0xbb978fc5,0xbb3ead89,0xbb0580ca,0xbb1796c7,0xbb1ae8f2,0x3b17b918,0x3b181dc3,0x3ba1a54f,0x3b43424a,0xbaf369e9, +0xbb01e1ab,0xbb5018ab,0xbbad6a0a,0xbb4fc421,0xbadc7eee,0xba920e73,0x3b56cc20,0x3b6eed2f,0xb9a27bcd,0xbb48406a,0xbbb354df,0xbbed3e9a,0xbbe41095,0xbbed11e8,0xbc011667,0xbbd8ab5e,0xbbb71235,0xbbb11b02,0xbb3fdca7,0xbaa8421e,0x3ae2bb96,0xb95122cf,0xb959fdd2,0x39eb9ce2,0x3a42892c, +0x3b439fd2,0x3bb05a88,0x3ba85beb,0x3b78a008,0x3b0137dd,0x3b0e2c65,0xb96bcc69,0xbb1f0e34,0xbb140ba0,0xbb8cdc32,0xbbb496fb,0xbbf01237,0xbb951755,0x3a4e787a,0x3b42062a,0x3ad9acb4,0xbb815de8,0xbbe38348,0xbbd09d0c,0xbb62fe50,0x3a8ae344,0x3b422c7c,0x3aa30bab,0x3b01f20c,0x3b1fd159, +0x3b47ab56,0x3ad564f9,0x3a8022b5,0x3a568ab0,0x3a926146,0xb70ef176,0xbae2fa73,0xba3c0f46,0x38f95dd1,0xb982ede2,0xb9701098,0xbaf181b5,0xbb8f9000,0xbbfa8c1b,0xbba99f11,0x3b07f963,0x3acb176c,0xbbfdeb0e,0xbb96f2d1,0xbbd3b0bf,0xbb7f998e,0x3b8f6b98,0xba18e0a8,0xbb859ba4,0xbbb4e396, +0xbc25d8c6,0xbbe6a1a3,0x3b554ea3,0x3ab6b1d8,0xbaa92cf6,0xbbb94be3,0xbba84693,0xbb979154,0xbb6ff076,0xbb1f251d,0xbaf86891,0xbb4d1754,0xbb0af61b,0xbadcc730,0xbb1da343,0xbb1c33cf,0xbaa50e40,0xb92272f9,0x3999c496,0x38096b7e,0xb6bd94d4,0x39922a10,0x38fe7748,0xbaea7789,0xba4f6b20, +0xba34ab8d,0xbb7f07cd,0xbbe97c82,0xba650062,0x39518732,0x3aa430c9,0xba0a0589,0xbb5bc756,0x394db209,0x3aa0c458,0x3a0cd773,0xba8cdc13,0xbb1e4747,0xbb020c4e,0xbb4155f2,0xbb0fdb4c,0xbae82201,0xb9bb0e96,0x39c884e0,0x3a16060a,0x3a8c3b92,0x3aedc77d,0x3ac4a2bd,0x3ada96c8,0x3adce46d, +0x3af7cf76,0x3a62160c,0xb8a625eb,0xba25c57f,0xb95e418f,0x38a870eb,0x380c43b0,0xb8fa9b14,0x39a42970,0x3a380584,0xb9dbf794,0xba237fc2,0x3b00d5d5,0x39ceb402,0x3a536ba2,0xba77a959,0xbb16ba84,0xbb469256,0xbbac6702,0xbbdb52c8,0xbbe451fc,0xbbbcc69a,0xbb92b040,0xbb552324,0xbb224ed9, +0xbab15a71,0xba1a4711,0xb9608ab0,0xb7805047,0xb9a804c6,0xba832765,0xbac6445c,0xbafbcb0b,0xbb252bce,0xbb205f36,0xbabd3665,0xb8af37fa,0x39590bb7,0x39986dc9,0xb9979cf5,0xb9cefa1e,0xb98f9b89,0xb82678c1,0xb8ecba5e,0xb99f1583,0xba826752,0xb95dae55,0xb93b57c6,0xb89b908d,0xbaa6703f, +0xbb50e419,0xbbb7f67a,0xbbafb3b6,0xbb91857e,0xbb507de5,0xbae8f110,0xba4ad01d,0xb99c8190,0x3b261c78,0x3b90cec9,0x3bb7798f,0x3ba22ac6,0x3b829fbf,0x3b31d152,0x3af749b7,0x3a67a68e,0xb890b420,0xba5ee75f,0xbab77bc6,0xbae9f852,0xbb08465e,0xbaebb449,0xbab5b0bf,0xb96c1a47,0x3a1149d2, +0x3a712e75,0x398bd3bc,0xb99bf04f,0xba1978c9,0xba24aacc,0xba0b329e,0xba4ee2b7,0xba576e3b,0xbaccc6da,0xbb021601,0xbb5d0f38,0x3aff4d1d,0x3b09e2a0,0x3b05191e,0x3aedfd1d,0x3ade6c6e,0x3ac2e142,0x3ac75d6c,0x3ac4c712,0x3a9d4a75,0x3a44cfb4,0x3a16ecdf,0x36f78f59,0xb9c6b532,0xba6f8eae, +0xba80d3f7,0xba94ef48,0xbaa62e30,0xbaa152fe,0xba8e379c,0xbaa8c7b2,0xba9f988a,0xba70f880,0xba6435b7,0x38bd457d,0x3a6c504b,0x3b0791b0,0x3b162674,0x3b311546,0x3b388f03,0x3b2bcec7,0x3b0d6b44,0x3aee820a,0x3afbbfb0,0x3b0a4970,0x3b11bf8c,0x3b0426f1,0x3a9a528e,0x3a897f2f,0x3a71b6b1, +0x3a0dc406,0x398ddfb9,0xb8dff32d,0xba059fa3,0xba64dfd1,0xba70bdaa,0xba647f55,0xba60bd73,0xba705350,0xba85e662,0xbaa00943,0xba9f50a5,0xbaa2d033,0xbaa3cb8d,0xbab3765c,0xbab1d40b,0xbad8a68d,0xbb004011,0xbaec2245,0xbb06e74d,0xbae6b096,0xbb06157e,0xbb10c6d4,0xbaee01e1,0xbade9c65, +0xbab0b5b2,0xba47505b,0xb79dbd8f,0x39b987dc,0x39fefa3f,0x3a13ea27,0x3a0a5d11,0x3a55bd10,0xbaabffe4,0xb9eb729e,0xba2fc2aa,0xba5b6d1b,0xba791f56,0xba8a54ef,0xba95822a,0xbaa919a3,0xbaaaa3f7,0xbab7854d,0xbac4dea9,0xbacc159c,0xbad0a2e5,0xbad5d054,0xbad37d75,0xbad4d85c,0xbad3e710, +0xbad4a784,0xbad2c097,0xbabf4845,0xbb163981,0xbb0e27b3,0xba85f38c,0xbb137465,0xbb0c0c96,0xba75840d,0xba59202c,0xba37679e,0xba0b75df,0xba0cd020,0xb9f92020,0xb984ac47,0xba93352e,0xbaa119a7,0x385359a0,0xba89f6fe,0xbafc04e5,0x3aee4336,0x3afa666a,0x3b08ef86,0x3ad7a744,0x3af6b737, +0x3aff68f0,0x3b139429,0x3b133194,0x3aef9491,0x3af62d04,0x3afc36f7,0x3b179a3d,0x3b06bdd3,0x3b05c943,0x3b009947,0x3b10fdd8,0x3b11cd1c,0x3b0bca65,0x3b00980f,0x3ada78e9,0x3af8ff74,0x3ae89c02,0x3a0ece73,0xbb0e98fe,0x3b02b47e,0x3a192380,0xbb18e6c3,0xbb095ccd,0xbb0c86d3,0xbb14df26, +0xbb03b3db,0xbaf6f699,0xbafe3e8f,0x3a3023b4,0x3b10740c,0xbb077daf,0x3a10047b,0xb9acf3d4,0x3b16d062,0x3ac63604,0x3b072d8f,0x3b21da60,0x3b67428d,0x3b65efea,0x3b1c447e,0x3b22e940,0x3b2bb81b,0x3b68647c,0x3b320374,0x3b2edff3,0x3b3100b0,0x3b745162,0x3b846799,0x3b785248,0x3b583a38, +0x3b2e7bf2,0x3b295572,0x394606a7,0x3ac05cb6,0x3abbce74,0x3a703798,0x3a0b2f62,0x39ab34dd,0x3a492bfb,0x3a900b14,0x3987b308,0x3a54efc6,0x3a00066b,0xba112552,0x3a2630ea,0x39aa40ad,0x38bc713c,0x3aa4a5b1,0x3abf45ee,0x3b28a762,0x3b03b8df,0x3b358290,0x3b50aafb,0x3ba6ef41,0x3bad7811, +0x3b476932,0x3b4708ec,0x3b4d1c3b,0x3bb1d9eb,0x3b822c30,0x3b81ef95,0x3b6df8bb,0x3ba70744,0x3bad9a2f,0x3b99bf3f,0x3b64d607,0x3b34b7ef,0x3adc69cd,0x3a893234,0x3a696d0c,0x393d35ce,0x39e9f6f3,0x393dca4f,0xbadfeb27,0xbab11004,0xbae7af10,0xbb4da085,0xbb2dbfb9,0xbb05914b,0xbb1ed258, +0xb875030f,0x39efe485,0xb9a3d971,0x3a8dc84a,0xb94db762,0x3ac8ed00,0x39cf721d,0x3b046c33,0x3b74bb15,0x3be9ce03,0x3beef81e,0x3b862dd0,0x3b7d7b55,0x3b96f9ca,0x3bf8ea58,0x3ba16a33,0x3b94af39,0x3ba6537e,0x3c0af5ea,0x3c1fe23a,0x3c139c87,0x3be652fd,0x3ba8f984,0x3b736aa2,0x3b0dc3ac, +0x3b0996a7,0x39d0b3f9,0x3a8013cd,0x39e50c20,0xbb1b54a5,0xbae831aa,0xbb164a2d,0xbb26a6c0,0xbb8dc03d,0xbb898266,0xbba117c5,0xbb19e823,0xba81973a,0xbb1fde43,0xba0da9b7,0x3bc33079,0x3bf5b5c9,0x3c20632b,0x3c08583d,0x3b4ce1dd,0x3b8e94fe,0x3b85acc7,0x3b5ac67e,0x3b2b1b52,0x3b00686a, +0x3ac07137,0x3b93ee1a,0x3b904ade,0x39225533,0xbb10f37b,0xbb90b222,0xbbcbf7a6,0xbb9bdc29,0xbb850365,0xbb96969b,0xbbb5e6f1,0xbb9951c5,0xbb95e42a,0xbae67551,0xb9cac85a,0x3abbadb1,0x386bf038,0x3967c319,0x3a4a1fd4,0x3a96dfa1,0x3b52ed4d,0x3badf03e,0x3bb40967,0x3b9f66f8,0x3b62a2ad, +0x3bab0385,0x3a8547f2,0xba08a4d5,0xbb221df9,0xbb58284b,0xbba6cf89,0xbba6a853,0xbb08fadb,0x3b0af867,0x3b8ec6bb,0x3b4e25d4,0xbb242dae,0xbbd36aae,0xbbc818c2,0xbb0d9098,0x3b4e6827,0x3be7b3ae,0x3c07b7a0,0x3bf5fb3b,0x3bc43bd9,0x3b91f17f,0x3adbdef1,0x3a9011fb,0x3ac5a1e8,0x3aba9863, +0x397824d5,0xbac058df,0xba08d6a5,0x370f262f,0xb9d7ad10,0xb9b40ccf,0xbada897e,0xbb790be5,0xbbdab2ed,0xbb6f7bca,0x3b61bad1,0x3b27ef6f,0xbbc5ea81,0xbb04b34d,0xbbaff4db,0xb9f8a1d2,0x3c7cad29,0x3c4669d6,0x3c224c75,0x3bf987da,0xbb1cddb7,0xbb5943a5,0x3bae0516,0x3bf8e66e,0x3be72a10, +0x3b0bceda,0x3a628a77,0xbaaa07d5,0xbb50586f,0xbb0e2f41,0xbad3d072,0xbac6f081,0xb9f8f0bf,0xba59465d,0xbad598c4,0xbacaea53,0xba5c588c,0x38bfe56c,0x399b70a4,0x381b440f,0x390d45bd,0x399c3d2a,0x39ea0676,0xbac8b84c,0x395f61d8,0xb8c2c34b,0xbb987365,0xbbc1b8ba,0xbb007fca,0x3b4d8cdb, +0x3bf9cc76,0x3c190c34,0x3c312d5f,0x3c4e1595,0x3c2edb2a,0x3b9165a4,0x3b07dcf9,0x39c528a8,0x3a913785,0xb8e70706,0x399e40ec,0x39ade7de,0x3b246a5a,0x3b7915d4,0x3b843fec,0x3b8b5e1e,0x3b6ef27e,0x3b269f20,0x3b00b5b6,0x3b0fe875,0x3b156d57,0x3a85e344,0x38f46dd2,0xb9ddf07e,0xb90a3cdb, +0xb608bce9,0xb898940a,0xb9838597,0x39081097,0x39b7c6a0,0xba063ae4,0xb9e92d81,0x3979380b,0xbafcb0fc,0x3abbe257,0x3b950979,0x3c095271,0x3c01626f,0x3ba0e26e,0x3b58a59d,0x3af121cc,0x3a767466,0x3a40990f,0x3ab17615,0x3b57d082,0x3b4502ac,0x3b46d20e,0x3b4ad89e,0x3acd5e34,0x39c665e8, +0xb9f6c355,0xba8c7cac,0xba8f581d,0xba7e7110,0xba6f49f3,0x37f713c1,0x3a1067b3,0x3a0c6dd9,0x3a0178a6,0xb71c9053,0xb9633c2c,0xb80272d5,0x391bdbe9,0x3902fc3a,0x383a75ec,0xba084fdc,0x3912250d,0x39ed563f,0x3a1c00db,0x3b11eb96,0xbb86e399,0xbb17598b,0xba974713,0xbaa23e64,0xba2e56a0, +0x388ecc2b,0x3a885633,0x3b362d0d,0x3b52f380,0x3b7f3c19,0x3b94f65d,0x3ba785e4,0x3bab3cbc,0x3b975f1b,0x3b83db2b,0x3b40df4c,0x3aa44ccb,0x3936212b,0xba807d0a,0xbb0610ee,0xbb05272d,0xbab7b2bd,0xb9c19f75,0x3a317453,0x3a778fb7,0x3a7a1f06,0x3989113f,0xb99f280e,0xba050a81,0xb9b9b08c, +0xb9436758,0xb9ac0cc7,0xba06b5b5,0xba373c11,0xbab5dcba,0xbac5e8d7,0x3b493433,0x3b39b4b0,0x3b2ccbde,0x3b3928a7,0x3b43bc8c,0x3b60a087,0x3b7ae7fe,0x3b8e8da8,0x3b7d17ed,0x3b61aab3,0x3b40a2cc,0x3ae39221,0x3a1f18a4,0xba193d80,0xba23c0dd,0xba44a97e,0xba5f40a0,0xba063d09,0xb946cade, +0xb7fa353e,0xb8c1ae56,0xb965e3b8,0xb9a8a150,0x3a095903,0x3a9e36ee,0x3b205f2e,0x3b1b3384,0x3b3debec,0x3b414201,0x3b21bc12,0x3afb082e,0x3ad07f66,0x3af9d4ba,0x3b166f1f,0x3b19175d,0x3b295c76,0x3a8814da,0x3b2ba9f5,0x3b21700d,0x3b209e7a,0x3b178a31,0x3b0f9dd0,0x3b04d51c,0x3b03cac8, +0x3aa663ed,0x3a2f4d35,0x393fd2d1,0xb9b8adce,0xba479805,0xbaa304b2,0xba96a70a,0xba99b722,0xba9e5a20,0xbaac177e,0xbac9e60d,0xbabbf256,0xbac76e73,0xba5b21ae,0xb9d30fd2,0xba1fb582,0xba0ac1f2,0xb8902de9,0x39300ab1,0x3a0da4b2,0x3a20c51d,0x3a97f205,0x3ac3cee4,0x3ad08ea3,0x3adfb830, +0x3aba2c8a,0x3ae47d05,0x3b0b7d9e,0x3a50f09e,0x3a7815bb,0x3a20f7a7,0x3a27d178,0x3a1d3433,0x3a1a4926,0x3a130e38,0x3a1f51ab,0x39a5e4b6,0x38c1420a,0xb93c8af5,0xb9c8a19e,0xba1b3450,0xba6558bb,0xba543924,0xba54d30c,0xba516940,0xba43ede8,0xba4271b6,0xba38d695,0xb9ccac95,0xba67538a, +0xbb1d525b,0x38db41c3,0xba0b5ddb,0xbb1dc228,0xbb0e62fa,0xbb005dba,0xbae43f7d,0xbaca9490,0xbab43d6e,0xba8eb7fd,0x39500655,0x3a8ca7ab,0xbab28989,0x38b044d8,0xb9b07aa3,0xbab4a0f6,0xba013a0b,0xbad80893,0xba81beeb,0xba91ce9c,0xba457276,0xba932b35,0xbaaf1d75,0xbae6a923,0xbadb5775, +0xbacb726a,0xba836a4d,0xbaa41aba,0xbaa493f3,0xbab24b55,0xba97365d,0xba942a76,0xba9a0b93,0xbaaaefe0,0xba966145,0xbae3ef78,0xba009c62,0x3a814075,0x3b587138,0xba924ac5,0x3a29b61a,0x3b2c7317,0x3b31af69,0x3b27f152,0x3b081102,0x3b1d9627,0x3b22fa9b,0x3b0d237e,0x3a2713d7,0xbaa5baff, +0x3b4384fa,0x3a939aa4,0x3ab95984,0xbadbb736,0xbaa0cfe8,0xba5f4e75,0xb6101ca0,0xba18156f,0xbaa32ff8,0xbb1a80c7,0xbb16f8a2,0xbb002a0e,0xba2a3e69,0xbab8caf2,0xbac4fc38,0xbad0d470,0xba5768b7,0xba102c45,0xba321d10,0xba4a80ac,0xba689fd2,0xba7b2885,0x3af95537,0xb9b4871c,0xba0e7010, +0xb9878d0b,0xb9948d30,0xbae47872,0xbaa8e61c,0xbabaab00,0xbac7cdd9,0xbad085d9,0xbae45e58,0xbb03ddae,0xba997e61,0xb99b1ae5,0xba8b78be,0xbad6a5f0,0xb985f31b,0xb9df6f0a,0xba5d7a03,0xb883c9fd,0x3a931349,0x38aa1d99,0xba923e3f,0xbb604e14,0xbb653e71,0xbb423d60,0x38ac1e58,0xba9e6d67, +0xba9734fa,0xbadca0ff,0xba16ed61,0xb9c29ace,0xba47c90a,0xba857593,0xbac38a9d,0xb9ecb0b5,0x3829a9a6,0xb9a5b605,0xba4f611b,0xba86ae5f,0xb9d4da6f,0xbb45bb3c,0xbac4abd4,0xbb488e98,0xbb7ff465,0xbb51e6c9,0xbb0e914d,0xbb61de89,0xba1246e4,0xb9866ebc,0xba70b8f4,0xba52a8a1,0xbaaca180, +0xbabcc03d,0xbad2817e,0x38dc2b4d,0x3b32b204,0x3af3a930,0xb96e16c2,0xbb7bf6b0,0xbb8afd7e,0xbb42af3d,0x3aa3bdef,0xbaa5177f,0xbb09b25a,0xbb0c788e,0x3995e3bf,0x3ac8852b,0x3aab641b,0x3a890827,0x3a2c2d81,0x3aafd0e2,0x3b13d029,0x3a3f4a9c,0x38cc0f8d,0xb9bce48d,0xb9e0fcf4,0xbb32171c, +0xbae8e670,0xbae8a582,0xbb121914,0xbb757554,0xbb7965aa,0xbba0c8ac,0xbb1c9db8,0xbac1e073,0xbb4ed26c,0xbb2a09de,0x3ba9ee5c,0x3b53a3a7,0x3b872141,0x3b34100f,0xbab4e7f1,0xbb1d1677,0xbb6ee0ca,0xbba0331a,0xbb9d24d0,0xbb93931b,0xbb8b10e9,0xb9effd0f,0x3aa15fa8,0x39a1b7dc,0xbb4f1376, +0xbbc3543a,0xbc1658f2,0xbc0ed1c5,0xbc16cbb6,0xbc026123,0xbbc0708c,0xbbca3fbe,0xbbab6543,0xbad8e513,0xb7eaacc7,0x3a939c3f,0x397cec0f,0x39c5f6c1,0x3a642eaf,0x3a907dd4,0x3b3a65f0,0x3b8dcca8,0x3b9999c4,0x3b959e77,0x3b676677,0x3b90c73c,0xba957b6d,0xbb6034ee,0xbb7a6409,0xbb90423f, +0xbb98e3a2,0xbbe3f4bb,0xbb8b7436,0x3ab6a66d,0x3b402d56,0x3b16e891,0xbb1152e7,0xbbcafb12,0xbbd7cc1e,0xbb8545a6,0xba7db00f,0x3a8d1f7e,0x3a0eaa6e,0x3b13306b,0x3b095017,0x3b31bca3,0x3ad4f017,0x3a2a75da,0x3a61438b,0x3a0ebc96,0xb9b798ba,0xbab41062,0xb9b38d18,0xb8ac0486,0xb9e91511, +0xb9cb5c60,0xbab6be62,0xbb62ceb9,0xbbbdf9bc,0xbb848536,0x3b2028b4,0xb99773d7,0xbb8f3434,0xbab137f4,0xbbc34aab,0xbb70b813,0x3bab5f78,0xb93cff1e,0xbb6759cd,0xbb949ba1,0xbc360818,0xbc1c645a,0xba433b95,0x38c51093,0xbaaae49e,0xbbca3ab2,0xbbb9c05e,0xbba0f76e,0xbb6d4c9a,0xbb39acf7, +0xbb49ea82,0xbb60cc96,0xbb0650b6,0xbafaa795,0xbb0399a6,0xbaf3dcc6,0xba4b5071,0x397210b2,0x39861958,0x3825b705,0x3973a27c,0x39591f43,0x3a422226,0xbabb2142,0x3a1d1f51,0x3928ca4c,0xbbae466f,0xbba32696,0xbb4cef4e,0x3ba79ce8,0x3b2f9433,0xba546743,0xbbd98627,0xba4599ff,0x3b066e34, +0x3b17ccbe,0x39889487,0xbab770b9,0xba86e7dc,0xbb1c1e8c,0xbb022acb,0xbac3b6f1,0xba5daa43,0xba3aab7e,0xba2e52af,0x39d153b6,0x3aaeda5a,0x3af00cf3,0x3b21b7d2,0x3aee6544,0x3ae4e90d,0x3a20accb,0xb8a56365,0xb9cf948b,0xb8ac12c2,0xb890c6f5,0xb9091899,0xb9971f7a,0x38033b08,0xb95ca20b, +0xba21df05,0xbacd712b,0xbaf1a643,0xbb97504a,0x3b796536,0x3a1da0c1,0xbb1818ab,0xbb0fe123,0xbb9b2cbb,0xbbc655dd,0xbbf0f271,0xbbe70ad3,0xbbb930bf,0xbb915035,0xbb577f99,0xbb078c6c,0xba9aff12,0xb9f25dff,0xb9226d8a,0xb8d337a9,0xba0725f1,0xba39f58e,0xbaa864e8,0xbae89b8e,0xba61f63e, +0xb9e89109,0x3a45b069,0x3a162b51,0x39b1dc37,0xb8ea662e,0xb8ab50e5,0x38d141a8,0x39a0ab7e,0x3948b75e,0x3892390f,0xba30302e,0xb9057714,0x39d3bd75,0x3af34c5a,0x3ac4eafb,0xbadb585f,0xbb9034fe,0xbb99d90a,0xbb8abca1,0xbb8d538d,0xbb83a63e,0xbb6631c9,0xbb48b648,0x39ea1902,0x3b2ee222, +0x3b7f9fff,0x3b6cfc41,0x3b4b532c,0x3b170fae,0x3acc5f5d,0x39f4b444,0xba4e4b84,0xbad75d8b,0xbafdd90b,0xbadeed2c,0xbafc9de6,0xbac86db5,0xba202208,0x39016488,0x3a0a0049,0x3a010499,0xb9a2b08f,0xba2cb8a8,0xba5c4485,0xba41ebfd,0xba2fda43,0xba83287f,0xba85322f,0xbae5d7e9,0xbb06cbfd, +0xbb54d59a,0x3a908c8c,0x39cab739,0xb98fc6e3,0xb7d99678,0xb8732c66,0x39a47a06,0x3a1a5101,0x3a2bff01,0x3a1529ed,0x39a9b47d,0x39ca13bb,0xb89e72e7,0xb9cd5c4d,0xba4cb2a2,0xba723a66,0xba89a7fe,0xba9d78fb,0xba9332df,0xbaad0f56,0xbaa1d7d0,0xb9fa776a,0xb9a5e970,0xb98353f5,0x39f3068d, +0x3aba46f1,0x3b1c64f8,0x3b2afc21,0x3b12a5b8,0x3b2cd755,0x3ae9a5fe,0x3abe2e4b,0x3a292fe8,0x3a7ceea0,0x3aaeb638,0x3adfc82c,0x3a917da1,0x3b3eff68,0x3ae82c83,0x3ac65517,0x3a8c07d8,0x3a1478e1,0x3887b81e,0xb9df1e15,0xba4d3fa2,0xba66f2d7,0xba6c52b6,0xba77bc9c,0xba84d1ee,0xba8d4f34, +0xba9d83c2,0xba9e5a1a,0xbaa2c679,0xbaa7aaec,0xbab4c37d,0xbab1b4b3,0xbadf6033,0xba9cefa8,0xbabc90ea,0xbaae1889,0xba5887fb,0xba551ab7,0xba7ca202,0xba531836,0xba09e736,0x3894fb74,0x393a7274,0x3a2bd789,0x3a9ddf2a,0x3a9e500c,0x3ac53be4,0x3ac5c313,0x3ab33d50,0xb9b89a46,0xba2e1c86, +0xba28425e,0xba5e3764,0xba756d3a,0xba8a77f7,0xba9aa4b6,0xbab5a678,0xbab795c5,0xbac2b19e,0xbace7255,0xbad4ceff,0xbadaa6aa,0xbae0c9be,0xbadeb347,0xbadf039e,0xbadcc88a,0xbade1bd3,0xbad57d36,0xbae05611,0xbac3ea9e,0xba3cb9dd,0x3a077d53,0xbab877f2,0xb9df1018,0x3a757001,0x3a85df17, +0x3a897dbb,0x3a827622,0x3a933b9d,0x3a97510b,0x3aa43e37,0x39a80f5b,0xba107484,0x3ac6e6c7,0x3a0510f0,0xbafa2f4a,0x3ace965c,0x3912146a,0x3b1786a7,0x3abb3891,0x3ad417a5,0x3ad27034,0x3af27ef9,0x3af0f8da,0x3ac542f7,0x3aca5bca,0x3ad432ce,0x3b0ac3f2,0x3ae764e6,0x3ae39ab3,0x3ad9cd86, +0x3afc03c9,0x3b004da8,0x3af9b895,0x3ae5184e,0x3ac08e4e,0x3b07e390,0x37a4f88f,0xbab8cabf,0xbb3a1781,0x39ec9725,0xbabc063c,0xbb4ad25f,0xbb470050,0xbb4c50c9,0xbb4bdca0,0xbb4a2de2,0xbb45faa7,0xbb4fca26,0xbaa2ffe2,0x3a692729,0xbb3a618f,0xbac9b0dd,0xbb0920b3,0x3af6fb58,0x3abba400, +0x3ac9f90b,0x3aeccf51,0x3b29afe3,0x3b25c8a9,0x3add4a1f,0x3ae9e493,0x3b080d13,0x3b565d78,0x3b11cbcb,0x3b097bd4,0x3b0df628,0x3b4e25ab,0x3b62b079,0x3b5ab4e1,0x3b39cd14,0x3b29523d,0x3b0ad669,0xba9aa404,0x3a54190e,0x39c19311,0xb667191c,0xb9e3c84e,0xb9bdab61,0x39ae605c,0x39ef00c2, +0xba56b963,0x39fdf353,0x3a0ac8d9,0xba8f62c1,0x39912af7,0xb9cf58b7,0xba8730ed,0x3a39936b,0xb836ef0b,0x3b15857a,0x3b0fea2e,0x3b0b0851,0x3b1d5699,0x3b71fb0f,0x3b70a309,0x3b07a891,0x3b004a19,0x3b126114,0x3ba4a1e4,0x3b4b3bd4,0x3b471d02,0x3b2f75e2,0x3b8ae476,0x3b933b4e,0x3b872d9e, +0x3b481ca1,0x3b39deed,0x3aade6b9,0xb909f683,0xb77d927e,0xb9a90857,0xb9d20806,0xba7cfcc1,0xbb0004e7,0xbaf8b9f6,0xbabc7285,0xbb895af3,0xbb0d8440,0xbb147bec,0xbb4a150a,0xb9aa9894,0x38ee98a5,0xbaab093f,0x3976f599,0xbaca409a,0x3aab8bd2,0x3a2910f6,0x3a811da1,0x3b15ce97,0x3b996ebd, +0x3b94401c,0x3b148464,0x3b023bc7,0x3b5ae2ad,0x3bebe576,0x3b798c09,0x3b372527,0x3b574dac,0x3bd71541,0x3c036641,0x3bfbf8eb,0x3bc900df,0x3bac3f3b,0x3b6be3b3,0x3a98ba99,0x3af4b4bf,0xba22ff4f,0xb6892355,0xb931e827,0xbb131f82,0xbaa8a8c1,0xbac8cfff,0xbad7ba18,0xbb4515fb,0xbb392033, +0xbb964ffa,0xbad247fc,0xba7125dc,0xbb4c0725,0xba9721b9,0x3b8936fe,0x3bed7869,0x3c2936bf,0x3c0e99ab,0x3b96e8b7,0x3b824d21,0x3b4e93de,0x3b679bf5,0x3b21d69d,0x3adc2867,0x3ab08954,0x3b90e9f1,0x3bb32644,0x3b70d33b,0xb9dd8206,0xbb574c4e,0xbb925131,0xbb9973d4,0xbb877c08,0xbbb4be1c, +0xbbe15c31,0xbb9248d5,0xbb935ce9,0xb9de3148,0x39e7c587,0x3a46e5c1,0x39dbf819,0x39f7ca30,0x3a53a5ab,0x3a8f7d37,0x3b2928a5,0x3b6a0010,0x3b9384c8,0x3b8ee1da,0x3b6bf57f,0x3b854bbe,0xbac723d2,0xba0690ed,0xba5a18e7,0xbb3847d5,0xbb92be63,0xbbce3473,0xbb7ea815,0x3a9bd775,0x3b677a6c, +0x3b6d2294,0xba11164a,0xbbc49294,0xbbe2b833,0xbb61b8ed,0x3a86a21a,0x3b9fa28a,0x3be2dcf2,0x3bd286f5,0x3bb839d0,0x3b52e021,0x3a30ac10,0x39c83335,0x3a64bc2e,0x3a846be6,0x38750a1a,0xba875dec,0xb946f416,0xb965d385,0xb9d27a5a,0xb9e7091e,0xba84e9b4,0xbb2bbf30,0xbba29193,0xbb231410, +0x3b3b9997,0x3a888ca9,0xbb705a0f,0x3a84928a,0xbb900c39,0xba1462d2,0x3c560ad1,0x3c1c0656,0x3c031e83,0x3bec1f9b,0xbaa6ae63,0xbb2fac16,0x3b59754c,0x3c043833,0x3c081075,0x3b2ea9f1,0x3ab5a222,0xba4a2dbe,0xbb265c43,0xbb100531,0xba9a2171,0xbadfbf6b,0xba89fd72,0xba4dbbf1,0xbaea2498, +0xbaa5764b,0xba001398,0x39aad673,0x39355cac,0x38c58dcb,0x39858a6b,0x3916a785,0x3a496b1c,0xba738fed,0x3a3bbccb,0x3a0b5bef,0xbbcb550e,0xbb8815b9,0xbb861799,0x3be9c3b5,0x3bcfefe4,0x3b94e41a,0x3b71223e,0x3bf2f99a,0x3c0c1ee7,0x3be699b9,0x3b07a8ec,0xba1ac8f6,0xb9db43bb,0xbab209da, +0xba612113,0xb9733dd6,0x3aa1fae0,0x3b0ed728,0x3b410004,0x3b6e05ea,0x3b789825,0x3b356c06,0x3adeda2e,0x3b087695,0x3b00fd71,0x3a1cf1d5,0xb7c44eb1,0xb947955e,0xb8cedc87,0xb900aa61,0xb8f72d17,0xb98ae9be,0xb8641571,0xb8f810e0,0xba0004d1,0xba8e9c94,0xbb7d41e2,0xbbd06457,0x3af147e5, +0x3b39bc3f,0x3bb96e54,0x3bb51ffd,0x3b6e35c5,0x3addfdbc,0xb959eea8,0xba7bb94d,0xbaa9918d,0xba50fbbf,0x39e491c4,0x3a24c4ba,0x3a8b92eb,0x3ad7040a,0x3a696778,0x39d3e1ac,0x398a0a8e,0xb9f9ae88,0xb9b90164,0xb97c6646,0xb9d20a35,0x3a6bafcd,0x3aaa2b2a,0x3a507256,0x3a091a47,0x37ae7b6e, +0x383b96c6,0x3958dbb8,0x394ee942,0x396cd0a7,0x38f3df8e,0xba167702,0xb9a2bd9a,0x39b71530,0x3acd3cdd,0x3b5b1b6b,0xbb9be8ae,0xbb3096fd,0xba0c55d2,0xbaa5988a,0xba9ad6e6,0xba7aace8,0xb8126571,0x3ab01369,0x3b0e25cb,0x3b3da406,0x3b5f8103,0x3b813f8c,0x3b82753a,0x3b64b8f8,0x3b40262a, +0x3b0430b6,0x3a43f2e0,0xb91e16e1,0xba728d7b,0xbaf2beb7,0xbaf2b1fa,0xbaa0cd31,0xba10ddb3,0x3a0ea9d5,0x3a47d7bd,0x39e3b221,0xb972522c,0xba2885eb,0xb9f4451a,0xb9e55921,0xb9bd784a,0xba2fc4e8,0xba67ce4d,0xbaa8f0cb,0xbb0a7053,0xbb1e3c98,0x3a51df2a,0x3a5ceb9f,0x3a6d120a,0x3a7cd1ef, +0x3aa91a7f,0x3b041a35,0x3b2ce535,0x3b5a5db1,0x3b445f0a,0x3b36002a,0x3b24c308,0x3ae12ea6,0x3a7c4f5c,0x38cf2d58,0xb527700c,0xb93023d6,0xb9897a2b,0xb9277eb9,0x391e9c4a,0xb9565bc3,0xb9c0eb79,0xb836a244,0x393d7925,0x3a5f0466,0x3ab63a50,0x3b2a8b82,0x3b0ee77f,0x3b24f2de,0x3b02814c, +0x3ada3101,0x3a4b34fd,0x39b5cdb3,0x3a09709d,0x3a25dce2,0x39e76137,0x3a407fad,0x3aa6b4e0,0x3b3de59c,0x3b3cdbc6,0x3b360aba,0x3b2c5725,0x3b270887,0x3b1fc211,0x3b2091fa,0x3aef0530,0x3aaa79fb,0x3a59453e,0x39999b1e,0xb94c27ba,0xba52820a,0xba378596,0xba3750de,0xba3456a1,0xba4cdba7, +0xba644d7d,0xba526f44,0xbabab1bb,0xb9b17e94,0xb8af051e,0xb8b7e62b,0xb8b22fbd,0x3a13da3b,0x3a60319c,0x3a87ed31,0x3a73bc63,0x3ad7430b,0x3b070947,0x3b02633b,0x3b091ac9,0x3ae1b12f,0x3b01023c,0x3b2564ed,0x3994764a,0x3aa96dfb,0x3a6c9f28,0x3a7d0ee7,0x3a800abe,0x3a784f9d,0x3a6f5e07, +0x3a7ae7a6,0x3a3b22b3,0x3a08a7a8,0x3996e869,0x38dd5bd2,0xb88ce64f,0xb9a6cdbe,0xb981c515,0xb988e1b9,0xb9859df5,0xb95c17bb,0xb97ffdcc,0xb61de7a9,0xba36bb64,0xbac0e889,0xbb239b59,0xb858bed1,0xba919a8c,0xbb197c80,0xbb12f2e0,0xbb0629be,0xbae9403e,0xbae76ecd,0xbad79c48,0xbab715c2, +0xba051e76,0x3a38ec02,0xbab5dd71,0xba1b37f4,0x39098e4d,0xba3b3356,0x3a8ee6f4,0xba94558c,0xb9f1193f,0xba031595,0xb9863c2d,0xb9a41d52,0xb9f42560,0xba7bf1ec,0xba69c348,0xba53d98b,0xb98ec5ed,0xba18809b,0xba17e9f1,0xba224020,0xb9fb10dc,0xb9f35cd5,0xb9fae5ea,0xba1d9d35,0xba0b71ea, +0xba9a174c,0x3a89d422,0x3b0774dd,0x3b20084a,0x39c18eba,0x3ae9e55a,0x3b020f09,0x3b10c098,0x3b0a98fe,0x3acb078c,0x3b0fac85,0x3b172ab5,0x3af84561,0x3af681b2,0x39a09c9a,0x3b129929,0x3b16199e,0x3b063206,0xba2a16df,0xba5dbf1f,0xb98c80b6,0x39a4277c,0x3a187b39,0x394c9866,0xba9080b6, +0xba930dd2,0xba6a723a,0x39cb8fcd,0xba2bf4d7,0xba644335,0xba5110b3,0xb9307690,0x3956e28b,0x398362f3,0x3975118c,0xb931407f,0x38c071a4,0x3b13663b,0x38fa2b05,0x39dd8fa8,0x3827ea12,0x38c77a9a,0xba453038,0xba004c84,0xb98358a7,0xb9bd2f4f,0xb9c89dd8,0xba54adf7,0xbaa4f589,0xb99a6111, +0x39d9d7d2,0xb951f568,0xba56ea59,0x3a829973,0x39e946fb,0xba2829ae,0x3a0fa1e3,0x3a94dd2b,0x3ae0b62c,0x3a8f2456,0xbad50a24,0xbae084bd,0xbac3ec51,0x3abc1756,0xb96cfeda,0xb9486a8c,0xb9aa7fe3,0x3a002e12,0x3a3e548b,0x3a0723fd,0x39535af6,0xba21756d,0x39fd670d,0x3a685eef,0x388123e9, +0xb96279e7,0xba702931,0xb99ebc4d,0xbb1e00b3,0xba92eeb4,0xbb307038,0xbb63f644,0xbb2a90a0,0xbab2e091,0xbb524741,0x37c0a3fa,0x39cee10a,0xb9d12f61,0x382166eb,0xb9a6d6c6,0xba46abf8,0xbae2fd1d,0x3914dc8f,0x3af90bcc,0x3b7186de,0x3b385aa6,0xbaab51c4,0xbaf5b9f3,0xba6a8826,0x3b4434d3, +0xb92e3566,0xbabd3af9,0xba83f6dc,0x3aa2ff97,0x3b38cd47,0x3b45cd95,0x3b3641f3,0x3ad611a3,0x3b15d165,0x3b1dc568,0x3971efa2,0xb8dd64f3,0xba9049c4,0xba849243,0xbb24cc6c,0xba9dddc7,0xba75ec99,0xbac6c7fd,0xbb1994f3,0xbb27b99c,0xbb8e350b,0xbadafe63,0xba4a65d3,0xbb5b8f54,0xbb028222, +0x3be2ee15,0x3bad295e,0x3bb220fb,0x3b9ec811,0x3ae577c1,0xb96590f1,0xbabf567c,0xbaa82569,0xbb4a3a5d,0xbb833cea,0xbb8c55cb,0xba7bdae2,0x3aba71c3,0x3b0c3b83,0xbaf975a5,0xbba45a76,0xbc0b752f,0xbc045ca6,0xbc075ead,0xbbca3145,0xbb9ac10d,0xbbb34349,0xbb8b5aca,0xb8875a4c,0x3a7e498d, +0x3a1369c0,0x3a086fde,0x39deaa9a,0x3a541969,0x3a728b67,0x3b117386,0x3b38b4a9,0x3b8082d9,0x3b9fbf68,0x3b9aa4da,0x3bc0b1e0,0xba90bbda,0xbb2c0a21,0xbb8446cc,0xbb8148d5,0xbb86fa8c,0xbbc273f3,0xbb5fc707,0x3b05ccda,0x3b3f9ef8,0x3b3d1cac,0xb9785c43,0xbbac7fc3,0xbbd8ba52,0xbb859f47, +0xbace8cbb,0x3a9275fa,0x3b26d381,0x3b7eb6b1,0x3b3851ec,0x3b249797,0x3a9df94b,0x39a07d88,0x3a733173,0x397ad9ea,0xba01dff8,0xba58b538,0xb90f13cf,0xb991f860,0xb9bbb91a,0xba03f88d,0xba348686,0xbb0b810c,0xbb7faadf,0xbb2dac55,0x3b2b33ae,0xba60c359,0xbb0064c0,0x3b06c974,0xbb7889b3, +0xbaa181c0,0x3c0f370e,0x3ba06ed2,0x3b1c3c63,0x3aaf82d0,0xbbfadb52,0xbc0b9d46,0xbb1373a9,0x3aff6f4a,0x3b1e3b5b,0xbb16b229,0xbb488e14,0xbb61c54f,0xbb468dc9,0xbb31e989,0xbb4643d1,0xbb175f50,0xba7d82be,0xbaa94127,0xbaabf4ff,0xba866ffe,0xb9555f18,0x39b536e1,0x39098d67,0x38fdddf5, +0x3998ffd2,0x38d4798f,0x3a481af6,0xb9e580f5,0x3a8ddc6e,0x3a1a3e5f,0xbbad233a,0xbb5cc4d7,0xbb8a2bc6,0x3c11314b,0x3b6a2c08,0x39109a3f,0xbb999f1b,0x3a276091,0x3b8957e7,0x3bbb0bac,0x3b2961b4,0x39d8b6fb,0x3809323e,0xba97ea5a,0xba8fed95,0xba3f2d3e,0xb9ed5708,0xb9c59545,0xb8d914a7, +0x3a8b4c4a,0x3adcdf82,0x3b199129,0x3b35f482,0x3b02afc7,0x3acdd82c,0x39ad9414,0xb8aefaeb,0xb93ee761,0xb8c1c9e9,0xb92b5bbf,0xb926b0c9,0xb9916249,0xb8abfe09,0xb9f8b364,0xb9d3bdb1,0xbaeacb35,0xbbb99701,0xbc0a97ae,0x3bc348c7,0x3b729f36,0x3ad9e65f,0x3b02b6e9,0xb9c89bd8,0xbad1576b, +0xbb7cb269,0xbba23a31,0xbb8b8ed7,0xbb569463,0xbadd6e07,0xba89b634,0xb9caf7aa,0x3a0bc6fa,0x39e1fe74,0x39e50b34,0x3920f971,0x381ecf60,0xb9b688ac,0xb9be0a10,0x3a54bf56,0x3a732c8a,0x3abc8608,0x3a609614,0x39cd613e,0x3899a787,0x3917b5db,0x397f26a8,0x39a5e0c0,0x397b18ec,0x3993bba5, +0xb96e35e5,0xb8b3a756,0x3a6c0f7a,0x3b52b479,0x3ba3f7c0,0xba91a67a,0xbb02c807,0xbb0b0020,0xbb1c162c,0xbb5b7a1c,0xbb7fb234,0xbb6c4138,0xbb36b7ae,0xb9449d6b,0x3ab1d676,0x3b08c369,0x3b1edfd7,0x3b255d35,0x3b135761,0x3adf7d56,0x3a2d590b,0xba5b9560,0xbad4a991,0xbaf599b8,0xbace7118, +0xbad8c28b,0xba933226,0x38edade2,0x3a034b6b,0x39ef37ef,0x388e4ba5,0xba0e8a7a,0xba2f8309,0xba4680df,0xba0fdbf4,0xba17924f,0xba754a36,0xba8868b0,0xbac9ddfc,0xbaf1f9a7,0xbb1994eb,0x39f29b68,0xba3b2b93,0xbac966ef,0xba889272,0xba8397b6,0xb8933aff,0x3a03ac07,0x3a696a42,0x3a81c89a, +0x3a8cf473,0x3aab4627,0x3a58f17b,0x39d1b30f,0xb7faf5dd,0xb990e103,0xb9ea430f,0xba2a67f8,0xba1367fc,0xba6a9887,0xba3ebf43,0x3979e693,0x399fe48c,0x39d7a4ac,0x3a5af798,0x3adb9439,0x3b18f0b5,0x3b1b7e71,0x3ae07f1b,0x3b0c2f5e,0x3a8d2953,0x3a5b5e5b,0xb87f4dd3,0x39aa1381,0x3a3a3111, +0x3a8c84ad,0x39e7c566,0x3b55cdb0,0x3b1c46a9,0x3b0b32d9,0x3af25418,0x3ab5fdb4,0x3a8819cf,0x3a33e90b,0x3a073932,0x394556eb,0xb8d1f7c9,0xb9b8c01b,0xba184638,0xba3dce3a,0xba6bc915,0xba67cc84,0xba6e283f,0xba7abcef,0xba862cb6,0xba897eaf,0xbaa51e10,0xb9f6fb57,0xba16c115,0xb89f7d75, +0x39adaab3,0x3a224e5a,0x3a50534b,0x3a47e22c,0x3a901fb3,0x3acd4f1f,0x3ab4cd37,0x3ac25e9c,0x3af8fc4b,0x3aee097c,0x3b056f30,0x3b0d777b,0x3af8d022,0x3a552342,0xb8cd7484,0x36ac2c2c,0xb8dfa907,0xb9086b04,0xb964b6ed,0xb9a74ab3,0xb9e8fe1a,0xba0e344b,0xba25f6ce,0xba43793f,0xba5774d6, +0xba70506c,0xba87e88f,0xba840a16,0xba83f2b7,0xba81b87c,0xba818de6,0xba727a56,0xba90fbaf,0xb9685983,0x3a01ae5e,0x3a45a501,0x38850c61,0x3a812de6,0x3aa8ae4f,0x3aafb194,0x3aae90fd,0x3a9cd894,0x3ab8aff7,0x3abdadb7,0x3ac09006,0x3aaba035,0x3a1be021,0x3ac7cef5,0x3ac10ca1,0xba6b377b, +0x39b3acd3,0xbaa7cf3e,0x3a873406,0x39d96bbd,0x39f1a76e,0x3a035840,0x3a0571f3,0x39dd6020,0x3907afcb,0x39271799,0x3989744c,0x3a5ec311,0x39eb1aa0,0x39dc098f,0x39c3c6de,0x3a16de79,0x3a231776,0x3a284c76,0x3a007933,0x39c803ef,0x3a509fcf,0xbab13fe8,0xbaf2ba08,0xba89cbc5,0xba9b4887, +0xbb068a8d,0xbac1f7ee,0xbacde6f5,0xbadc81b6,0xbae384de,0xbae79dee,0xbae56e6e,0xbb04ab8c,0xbaf02ff1,0xba4ae819,0xbaa4d8cb,0xbb0147ba,0xbb029680,0x39b786e6,0x39f1fd04,0x39aed705,0x3a2507db,0x3a50e5a6,0x3a0d6365,0xb92d734f,0xb9245c29,0x396ea251,0x3ad4e559,0x39f91ce7,0x398d20a0, +0x39be8439,0x3a8f7b43,0x3ab7ca44,0x3ac56c20,0x3a93b5f8,0x3a9bd4df,0x3a1d13c9,0xba8aa920,0xb907d8cf,0xba24a474,0xba512b94,0xba8fb269,0xba9d783e,0xba1a409d,0xba380d02,0xbaeb0f9c,0xb9e73ac2,0xb93a8568,0xbad7742e,0xb9d51a30,0xba4f7c06,0xbadc4e02,0xb9f6057f,0xba93098f,0x3a900722, +0x3aa73317,0x3a77f5fe,0x3aafa64c,0x3abff7d4,0x3a6adade,0xb9de0c36,0xba3602fd,0xb98f847a,0x3b3cbfa4,0x3a4cc9c1,0x3a3f07be,0x39dac1c3,0x3ad9dc45,0x3afe5fbf,0x3b008cc6,0x3aa10b9f,0x3aa3dd3b,0x39c208e4,0xba70f903,0xba587775,0xba27c169,0xbab77d2e,0xbae5b526,0xbb0e3719,0xbb062761, +0xbad7401f,0xbb91e58e,0xbaf86535,0xbb0ca91a,0xbb5ddcc3,0xba128a74,0xb9707988,0xbae430db,0xba3a1db3,0xbb13b029,0x395d655b,0x393839f7,0xb820f67e,0x3a99c4ef,0x3afe8fe9,0x3a8f8d68,0xba6b90c2,0xbac361ef,0x390ce2c6,0x3b951d85,0x3a6792e0,0xba2a69c1,0xb9a47a65,0x3b12588c,0x3b7843f9, +0x3b897d69,0x3b5f7fcc,0x3b5bf58f,0x3b1c93ad,0x3a0edc0e,0x3a74951b,0xba88e0ef,0xba955d6a,0xba5809f0,0xbaee3af8,0xba45e1aa,0xba2ae838,0xba307516,0xbadbf1ba,0xbad37a8a,0xbb6c781d,0xba8b52f5,0xba73ceda,0xbb5aead7,0xbb0358ca,0x3b426fa1,0x3bb1964e,0x3c06a66f,0x3be770a3,0x3b957ae4, +0x3ac661f4,0xb9085ac8,0x3a6267d2,0xb8bcc8c4,0xba19dfb5,0xba359e88,0x3b42cc44,0x3bb1ee57,0x3bc9955d,0x3a64dbb3,0xbb2c527b,0xbb830c03,0xbbb737d0,0xbbb60b27,0xbbcef9d7,0xbbdc2fd0,0xbb8edd2d,0xbb81667c,0x3a2b147b,0x3a7e8563,0x3990479e,0x3a05a7f4,0x3999a2b6,0x3a127390,0x3a1a1b37, +0x3ad97c2e,0x3aecef7e,0x3b5229a6,0x3b75a9c5,0x3b719fc0,0x3b4d4e5e,0xbb448583,0xba8bc7bc,0xb9c4d0b6,0xbb366021,0xbb788b19,0xbbe67ff3,0xbba9d155,0x3a4255c4,0x3b1ccbb1,0x3b5e42e2,0x3aa0b9b6,0xbba43e0c,0xbbea08c4,0xbb98f839,0xbacc8a48,0x3ab6f458,0x3b5b3ee6,0x3b7127a5,0x3b67d2af, +0x3ace7361,0xb83d8968,0xb9870011,0x39c0822e,0x39a3c23d,0xb9a1247c,0xba0df2ca,0xb8c6cc35,0xb9845df2,0xb96be5ae,0xb9cf0e30,0xb9e992aa,0xbaa46439,0xbb533fdf,0xbaea87d5,0x3af16655,0xba36de83,0xbabe398d,0x3b67b13e,0xbb1f743d,0xba00fe67,0x3bfebd07,0x3b9c1aaa,0x3b586618,0x3b5ead7e, +0xbb43fa2f,0xbb8476b6,0xb96c2e1c,0x3bb10f1e,0x3bcb6562,0x3aa09d4e,0xb92fe7e0,0xbaca2768,0xbb03a5f4,0xbb0d9665,0xba93bb70,0xbadf55be,0xbaa128f3,0xba3e432e,0xbad2412d,0xba538234,0xb8b47da9,0x39927e54,0x38b7fe93,0x3907fe4d,0x394b5756,0x38e00e30,0x39f0053a,0xb874c0c1,0x3a3392b7, +0x3a1ec504,0xbbb97a42,0xbb311de5,0xbb9fd0de,0x3c0eafe2,0x3af630d6,0xbb42dca4,0xbbd6d944,0xbae8aac2,0x3b45c703,0x3c04ab75,0x3b203b8e,0xba15c42f,0xbaea4edc,0xbb151a40,0xbafe4ee9,0xba92a879,0xba49d225,0xb9b8d387,0x3a3267c8,0x3ae915ab,0x3b38af26,0x3b2980c8,0x3ae5ab7a,0x3af25919, +0x3aac7fe1,0x38fb8398,0xb928a101,0xb8b6e9a8,0xb9038369,0xb919ee93,0xb8f925f5,0xb9547890,0xb8852d55,0xb9803988,0xb9a10aa9,0xbad2b10b,0xbbedcc5c,0xbc193b0f,0x3b8623b7,0x3b048473,0x3aaa74ad,0x3a8a74fb,0x3945f557,0xbacfedd0,0xbb6bc54e,0xbb888462,0xbb86ffc4,0xbb6055e2,0xbb348a7d, +0xbb030b82,0xba947ded,0x37e1191a,0x39968123,0x3a105ddc,0x3a5113b8,0x39764b49,0x39a92515,0x39b756d2,0x39d05403,0x3ac38386,0x3adddca2,0x3a6b837c,0x39e80dc5,0x383e5272,0x395b5d8b,0x39821158,0x39605391,0x39442302,0x3971bbcb,0xb9a41328,0xb9df9ed0,0x3a0bb880,0x3b316b9a,0x3b9e5592, +0xbb65db45,0xbb2e9c6f,0xba60e7e1,0xbadaffd1,0xbb060f72,0xbb16c939,0xbad46f0c,0xba77d3fd,0x3a5dd438,0x3aebc8f1,0x3b0edb82,0x3b19c941,0x3b0ca33e,0x3ae2ef03,0x3aa03505,0x3a00ee4b,0xb9b26342,0xba6a28df,0xba8c5887,0xbaba7aa0,0xbac869a6,0xba82425f,0xba0eaba4,0x398a67a9,0x39ca5f57, +0xb8ab0bb0,0xba0d25fb,0xba3763fb,0xb9e53398,0xb9e77a8d,0xb9f1c7de,0xba6e1696,0xba948f7d,0xbaeab8b3,0xbb20376e,0xbb414f68,0xba944f3e,0xba9a1434,0xba8ec2b8,0xba915728,0xba6486e9,0xb839c820,0x3a214de7,0x3a9ee1d6,0x3aa719c2,0x3abc5dde,0x3adbc843,0x3abef9bd,0x3aa5039d,0x3a76ed39, +0x3a34ade6,0x39e18464,0x39820c02,0x389499e7,0x38f0c09b,0xba0ebe75,0xb9ef8dc1,0x3928c9fa,0x3a1ba082,0x3a81eb78,0x3ab9deb0,0x3b104c3d,0x3ae98671,0x3ae2923f,0x3a9b8d25,0x3a6792a6,0x386f0918,0xb9fea515,0xb9e3b520,0xba01df97,0xba314a28,0xba419c36,0x3aea72a3,0x3b1f3225,0x3b219888, +0x3b1311af,0x3b062c9a,0x3afe3a40,0x3aee0370,0x3ae86b37,0x3ac2eaf3,0x3a9ea4da,0x3a708cd2,0x3a1a0042,0x397d8544,0xb9644d8f,0xb92949bf,0xb91ad1f6,0xb8f4e98c,0xb941fd46,0xb8e8d18f,0xb96e0a77,0xba69eae4,0x38414925,0x390d6157,0x39f02c19,0x39eee170,0x3a8579cd,0x3a9faa2a,0x3a9c6717, +0x3a8f9d60,0x3acdde30,0x3aff9d1d,0x3af5f38f,0x3afb8368,0x3ae096b6,0x3aeae641,0x3b0fe420,0xb9030bdd,0x3a854f0a,0x3a4b9223,0x3a519b1b,0x3a5a98e9,0x3a492e21,0x3a3af9e4,0x3a350536,0x3a198ea0,0x3a014b27,0x39c70203,0x3998e527,0x395f8f9e,0x38b17b3c,0x390a6efa,0x38ed533c,0x38ee2b3f, +0x39016ec4,0x38ae82eb,0x39bef1ca,0xba4a277e,0xba9da7f0,0xba9476ab,0xb97d508c,0xba6ad30d,0xba49410d,0xba58fbb0,0xba4129fd,0xba1861fe,0xba330ae7,0xba2df0c3,0xba11ec1f,0xba113b0e,0x392a3373,0xb98572f8,0xba062a88,0x39799521,0x3a38346f,0x3af4d202,0x3a2512fb,0x3a3cc643,0x3a591b03, +0x3a64c457,0x3a980b2b,0x3a90e53d,0x3a2a7a1d,0x3a304fd6,0x3a3bbe4a,0x3a9edbb4,0x3a5ac8ed,0x3a584b39,0x3a5b93aa,0x3a751948,0x3a79569f,0x3a813aae,0x3a5c42cc,0x3a3bfb63,0x3a063aea,0x3ae5c8be,0x3ac7739b,0xb8c6877c,0x3abd249c,0x3ab1a9ae,0xb99a4191,0xb8ba5371,0xb8dd2116,0xb9eb3de2, +0x38ef8f63,0x3966057f,0xb8e8a136,0x3ad0b4a1,0x3ad9430a,0xb91f4b6e,0x3adadcd3,0x3a82782a,0x3a967045,0x39eaf3ad,0x3a79a14c,0x3a976645,0x3b12afa2,0x3b10eff8,0x3a86e721,0x3a739475,0x3a8afd0c,0x3b12f73b,0x3a82a149,0x3a35c615,0x3a664cdb,0x3ab68c09,0x3aec9bbe,0x3b05f677,0x3af52541, +0x3ab014ac,0x3ac8a305,0x3a97180e,0x3a384131,0x3a98e848,0x396326dd,0x3917005a,0x3998212a,0x39d03aab,0x3a4a6820,0x39a14363,0x3a6696fd,0x3a006f4c,0xb9f0e106,0x3a2ace2e,0x3a357f63,0x39833f70,0x39f243d1,0x3acb7551,0x3aef0289,0x3a4b1264,0x3ae6e8cc,0x3ae3ce35,0x3b74c5a2,0x3b766fa0, +0x3ab10885,0x3a923df0,0x3a8b4201,0x3b740707,0x3adf4a9c,0x3adb445f,0x3ae6d78b,0x3b1f8387,0x3b307c86,0x3b36eb7f,0x3b0915f2,0x3aa66dda,0x3ab247fa,0x3a8afcbe,0x398e39f7,0x39bd3a54,0xba4c577c,0xba2a3c4b,0xbabeaf38,0xba99457a,0xbae2787c,0xbb420227,0xbae3b65a,0xba7c3a06,0xbb285bf7, +0x39b83bfa,0x3a4f204f,0xb9811230,0x3a4a6f72,0x39023b20,0x3a2edf70,0xba1385cb,0x3a318e8d,0x3abb2e13,0x3bb0dc52,0x3bbf0347,0x3b15dc74,0x3abf5df1,0x3b1234bb,0x3bb89432,0x3b03b33c,0x39d4d45d,0x3a8da567,0x3b4fe456,0x3ba19cbf,0x3bb8e3bf,0x3ba0e474,0x3b5bfb32,0x3b4711ab,0x3ae1aa4e, +0x39799125,0xb9c2d727,0xbab9c998,0xba95ca0e,0xbae68083,0xba064024,0xb9eac82a,0xba41b732,0xba8adac4,0xbaae7f09,0xbb4ca674,0xba683df8,0xb9482c45,0xbb445785,0xba8be272,0x3bdc8f2e,0x3beb1a87,0x3c04e928,0x3c05cec7,0x3bc8f093,0x3b523aaf,0x3af5b957,0x3b5aebaf,0x3a22b893,0xba864c9a, +0xbaeb8f18,0x3aae1489,0x3b825688,0x3bac4616,0x3a4eb54f,0xbb294423,0xbbace9f1,0xbbb72a6f,0xbbb0d72b,0xbb81ac40,0xbb84de2c,0xbb823cb4,0xbb35fec2,0x3a9ec4b0,0x3ab16f1f,0x39452ca0,0x39f3e2ed,0x39549560,0x3a10f186,0x39b22fc4,0x3aac3a78,0x3abb4937,0x3b393167,0x3b8de42c,0x3ba14580, +0x3bc28341,0xba6f9024,0xba107a6e,0xbb12b871,0xbb2d1b92,0xbb55ab99,0xbb9e1924,0xbb362d72,0x3b1bf7bc,0x3b4784b1,0x3b7601f6,0x3b16dad7,0xbb77e7a1,0xbbc952fd,0xbb741f11,0xba898dc5,0x3b16de19,0x3bae40ce,0x3bb411bb,0x3b7b5812,0x3b076c15,0x39cfceef,0xb8314d17,0x3a6a1e5c,0x3860e400, +0xb9ef7c97,0xb9ae2890,0xb8e659c0,0xb95906aa,0xb95c09c8,0xb9990b19,0xb9d4eb18,0xba3f47ba,0xbb16f041,0xbaaedf44,0x3b163638,0xb9fedc6b,0x39207e41,0x3bab396c,0xba060a13,0x3b01e4ba,0x3c411034,0x3c2d883f,0x3c189f03,0x3c07cb29,0xbabb260f,0xbb904c8d,0xbaba0142,0x3bb52448,0x3bfc5b7f, +0x3b79f022,0x3a9ba003,0xba760aa9,0xbaeafacf,0xbb0162ea,0xbadc55ff,0xb9eb7d39,0x39c77ca2,0xb91817bd,0xba2bc967,0xb982dfe3,0x391f13c5,0x3957c43b,0x389c0380,0x3903c885,0x392142ce,0x38fbf637,0x399d77cd,0x3921d5fe,0x3a5e3560,0x3a086c5c,0xbb854aba,0xbae5cfe9,0xbb8c101a,0x3c121fb0, +0x3b298780,0x39a44932,0xbab8e4e4,0x3ada883e,0x3bb3b02e,0x3c145f0e,0x3baae31f,0x3b2d235c,0x3a362bb0,0x38e8ec24,0xb9176e7d,0xb673ec45,0x39749250,0x3a2ef928,0x3ab2ceef,0x3b186250,0x3b2aa58b,0x3b3d6796,0x3b273758,0x3b0a17c5,0x3aa07e91,0x38862152,0xb8fc5878,0xb8f51606,0xb8ccadc6, +0xb90fcf9f,0xb8f8b145,0xb923f9a8,0xb89faa29,0xb9998500,0xb9540e4c,0xbacbfedf,0xbc03ef97,0xbc22bf70,0x3befb5ca,0x3be3d91b,0x3bcf9b99,0x3bc43470,0x3b917046,0x3b52ffea,0x3a25cb34,0xbabbd13f,0xbae6daee,0xba92989c,0x3a09e3e3,0x3a0329f1,0x3a6e3250,0x3afe453a,0x3ab68551,0x3a9dd92b, +0x3a85b8de,0x3a5f088e,0x3a71192e,0x3ab5526c,0x3b099fa7,0x3b19ff91,0x3af7300a,0x3a80b935,0x39d90f1b,0x3905d671,0x392dad83,0x396f5868,0x3963845c,0x3914450b,0x394de6c7,0x3875a6d5,0xb8360ab8,0x3aa7d5a6,0x3b746ec3,0x3c04b40f,0xbab760ec,0x39a82cf3,0x3a7c7233,0x38cc4c56,0xba80e9b4, +0xbaeffe64,0xbac4aa15,0xb9db4934,0x3a20956c,0x3a8b93e5,0x3a91cf0d,0x3ae7e661,0x3b0e8628,0x3b110ef7,0x3af83e19,0x3a9132b4,0xb987883f,0xba56b330,0xba9001cd,0xbaa13f53,0xba9d829d,0xba0f13cb,0x3a1a2a1b,0x3a47bb1f,0x39d1fea3,0xb924a753,0xb9f3e16a,0xba0ec366,0xb9ff91d8,0xb99c648a, +0xb9a0667e,0xba24caea,0xba5fe41a,0xba8a815b,0xbabd6be5,0xba9781b2,0xb84aba98,0xba7e7e23,0xbab77996,0xba7cd990,0xba568e4a,0x39afa0d9,0x3a8b550d,0x3ae1ab28,0x3b010570,0x3b1b93de,0x3b328b66,0x3b16b472,0x3af0a247,0x3ab42c24,0x3a85a8ea,0x3a3fc2dc,0x39eb3a22,0x39e9b9b8,0x39690772, +0x3916f114,0x3a42bb1b,0x3a5dfebe,0x3a89159d,0x3a9f749f,0x3ad352e0,0x3b00b735,0x3addf7f0,0x3aae3e2f,0x3ab68d9d,0x3a2d4026,0x39a58df4,0xb9a8d4cc,0xb87a05eb,0x392575bb,0x3986bf93,0xb812b68e,0x3b224a47,0x3b3566a0,0x3b2ccc2b,0x3b2b9044,0x3b1db577,0x3b1ac888,0x3b165278,0x3b1be741, +0x3af7a881,0x3ab5226e,0x3a79aacc,0x3a12886a,0x39981aa7,0xb644b677,0x382db72a,0x38341140,0x3779dce1,0xb7bef678,0xb8b88e70,0xb8d75610,0x39188e18,0x3a30f63c,0x3aacc417,0x3ac20080,0x3af527ee,0x3b248da1,0x3b1daed4,0x3b2a5724,0x3b2c3634,0x3b230faa,0x3b1a8ac3,0x3b1a9c6c,0x3b163513, +0x3b0fd235,0x3b1e6980,0x3b1c0e51,0x3adf4131,0x3a98c467,0x3a9863bd,0x3a9f036d,0x3aa58879,0x3aa1b95d,0x3a9c5f8c,0x3a9ea8e3,0x3a871710,0x3a75f333,0x3a549c0a,0x3a3b5fcd,0x3a1a2d4f,0x39d551d4,0x39eba353,0x39e8d550,0x39ec0f4f,0x39f3adea,0x39f5eec3,0x39daa379,0x3a878da2,0x3a8c4d64, +0x3896172d,0x3acb217f,0x3ace7cf2,0x3a05cb7d,0x3a0523ad,0x3a0aff80,0x39fb5b2d,0x3a25afee,0x3a30d956,0x3a33d389,0x3ac98a86,0x3ae2603d,0x3a16c2c5,0x3ace91dc,0x3a6794f5,0xba761eff,0xbaa05913,0xba438b20,0xba274b43,0xba3ed67e,0xba1d43c1,0xba4696c6,0xba6ff0d0,0xbaa17b55,0xba9e996c, +0xba90af2d,0xba0356d6,0xba69af69,0xba6ece35,0xba72f2ea,0xba588f9c,0xba4d8e59,0xba346e4f,0xba5a30f2,0xba451f31,0xba70f066,0xbaa51cc8,0xba07c149,0x3ad891cb,0xbad6c63e,0xba66102e,0x3a9663ef,0x3a87e20b,0x3a79c011,0x3a3c7089,0x3a5f0c47,0x3a618588,0x3a00df09,0xba2c3027,0xbabc3c3c, +0x3aaaa569,0xba011abc,0xb930bde6,0xba8c5386,0xba3a87c3,0xba46d808,0xb9e07b31,0xba1b6341,0xba816d8b,0xbae5e2cb,0xbaf42760,0xbac4af81,0xb8990c07,0xba9c3811,0xbac2178a,0xbaba1c9f,0xba88e312,0xba3e781d,0xb9bfa47a,0xba0a559f,0xb9e03692,0xba496d1f,0x39b1f96c,0xba31d60d,0xba4e31b4, +0xba863497,0xba9084aa,0xbabb3de1,0xbaa6e84d,0xbac3d257,0xbafae778,0xba89cec9,0xba6a37c3,0xbade7f6a,0xba49822a,0xba0441ab,0xbab27c35,0xbaae13e3,0xba6bd73a,0x37cb3dbc,0xb8f54dd2,0xb71a4e1e,0x39d41937,0xb81a030f,0xba7b20f6,0xbb209601,0xbb3a64c5,0xbb204de7,0x3a3373da,0xbaa4914a, +0xbaa82bff,0xbac6a323,0xba63a301,0xba1c4276,0xb9299235,0xba0bc5d5,0xba315e64,0xb9d2d2e9,0xba3fc682,0xba81685f,0xb9ff2236,0xbb03162f,0xbaea3a93,0xbafce60b,0xbadbdc4a,0xbaee3c7b,0xbb5b2b76,0xbad775ce,0xbabf7b56,0xbb3fd7f4,0xb9d52def,0xb94890c7,0xbab33208,0xba82e357,0xbadb0d2b, +0xba5322b9,0xba4e5577,0xba3d9152,0x39abae62,0x3a06a738,0xba1f8383,0xbb43a867,0xbb807aed,0xbb226888,0x3aefb692,0xbaca2963,0xbb5dbb3f,0xbb5c7bfb,0xbaf95c63,0xb99b0cb8,0x3a771deb,0x3a6abebc,0x3a81c2f2,0x3a8a5061,0x3a1d31d4,0xb93f39f8,0xba53d487,0xbaf8fd97,0xba9c0ea0,0xba9eefed, +0xb9915cb0,0xb949bc25,0xb97cc123,0xba146eb4,0xba50b7a3,0xbb195ca0,0xba2c09ef,0xba2a7306,0xbb464471,0xbb1aeb6d,0x3b5b02ee,0x3b680787,0x3baf18b4,0x3baabdc6,0x3b85d369,0xba49de3c,0xbb46440c,0xbaf14001,0xbb4019da,0xbb58f576,0xbb562024,0x3a169775,0x3b8806f4,0x3be28307,0x3ad61dd9, +0xbb0c27d9,0xbb8f77a6,0xbbd2523c,0xbbe2e0b0,0xbbc81b1d,0xbba80720,0xbb852afd,0xbb2f1f87,0x3aa876c2,0x3a992b44,0x382fd825,0x39cc994d,0x386a7bb4,0x39aa29ba,0x391eb0a1,0x3a44dc9d,0x3a45c761,0x3af76839,0x3b4fb57e,0x3b73c844,0x3b557d35,0xbb2f8c48,0xbab28a23,0xbaa312a0,0xbb4ca65e, +0xbb61e8fc,0xbbe8cef5,0xbbbaf024,0x39f19c3d,0x3a9e0328,0x3b33f17a,0x3b2e68f6,0xbb6fe7e3,0xbbddf5aa,0xbbb73974,0xbb6b723c,0xbab9b753,0x396158c5,0x3aacbcb4,0x3a9a5110,0x3970ed5c,0xb99afccc,0xba0deb98,0x398c070b,0xb99c58a5,0xb9fe2d0f,0xb936e65d,0xb8e71359,0xb8f16fe0,0xb9018aaf, +0xb92466ac,0xb9913c5b,0xb99d3d39,0xbacdc5bb,0xbaa79695,0x3a892661,0xbaeacc2e,0x3a963f22,0x3bafc06f,0xba0b57ea,0xb9bb49dc,0x3b3b395c,0x3acb2a3b,0x3927c245,0x39b13340,0xbb9a0e57,0xbbbc461c,0xbb852785,0x3acf9ab2,0x3b4d99e6,0xb769cf6c,0xbb00f4be,0xbb309218,0xbaeb0c31,0xbb0ae477, +0xbac07733,0xba95bbd0,0xba23e4a7,0xb9d67959,0xba6f1bf8,0xb9647bb9,0x39425a4e,0x390dfc4f,0x388d721a,0x38c2dc8b,0x38b34743,0x38caa464,0x3925f715,0x390b3350,0x3a190101,0x39a3bd37,0xbb68ce28,0xba919b4d,0xbb9237a5,0x3bca9dc7,0xbb808624,0xbc142cf9,0xbc5e749f,0xbc19500e,0xbb23bfef, +0x3beb066c,0x3b5e595c,0x3a4b541c,0xbb1a12b8,0xbb245c85,0xbb302821,0xbb0b866f,0xbb2a0dfe,0xbb1fb9db,0xbabb44e3,0xb88c3507,0x3ab3b4c7,0x3b1209ed,0x3b104b5b,0x3ad6534e,0x3a25632a,0xb93e6663,0xb95230f9,0xb8a025b2,0xb8d8bbbb,0xb8e9367e,0xb8b2cbff,0xb8f1b70f,0xb897f305,0xb9334921, +0xb90f2df9,0xbaf3f132,0xbc0b927b,0xbc22bbcd,0x3bf96f71,0x3b56e1b0,0xbac93c4f,0xbb1a8cfe,0xbb291384,0xbb7445e7,0xbbb49946,0xbbcc2fc1,0xbbc07024,0xbba551b2,0xbb96a34b,0xbb69ee19,0xbb23319f,0xba7df57f,0xb76b08cb,0x3a38b48e,0x3a80d414,0x3a6cdc82,0x3a6f07f8,0x3a8a08fa,0x3ae005d0, +0x3b064105,0x3af15158,0x3a705076,0x39a8c72f,0x38bd5f11,0x39561a8e,0x39485ebd,0x39319fbe,0x38f7ef4d,0x39540cf7,0x385e91c4,0xb930ff7d,0x3a8fceee,0x3b726c37,0x3bde7c87,0xba729cdd,0xbae92a38,0xbaac5883,0xbae232c1,0xbb20c191,0xbb47ebb1,0xbb35adb7,0xbb36344d,0xb9c5893f,0x3a2efae6, +0x3a663fd5,0x3a2cc41e,0x3998db03,0xb7fd0e7a,0xb9c73aae,0xba626974,0xbab50f40,0xbacadaa9,0xbaab6c69,0xba7010b3,0xba71cb97,0xba156cfa,0x37620254,0x395be9b1,0x3908ddca,0xb9a131ff,0xba0634e1,0xb9f190b6,0xb9b3a1a2,0xb991e227,0xb9a9938f,0xba49aa42,0xba7e6d74,0xbad35150,0xbaff425c, +0xbb20652a,0xbaf3811d,0xbb1b789d,0xbb269b1e,0xbb1e58f3,0xbb1b2119,0xbad40139,0xba9231a9,0xba4f1eb1,0xb9a3f8d9,0x395efec8,0x3a6f2cc7,0x3a9c5c44,0x3ac1c675,0x3add4c35,0x3aa7f4e5,0x3a779104,0x3a248e62,0x39a64a23,0xb808d65e,0xba106dff,0x388f0393,0x3a20c9dd,0x3a89080b,0x3a915bda, +0x3abb7d84,0x3acbe916,0x3ab6669e,0x3a5fe9af,0x3a557485,0x3997faf2,0xb8bdc736,0xba420dd7,0xba44bb6f,0xba5f7d31,0xba5be5b9,0xbab4c48a,0x3b280917,0x3ad37552,0x3acf8993,0x3ab1d50f,0x3a92aa40,0x3a828747,0x3a63f14c,0x3a4ef4d9,0x3a5ea432,0x3a57d236,0x3a4392ac,0x3a32b81b,0x3a1ae99f, +0x39f5ed85,0x39ed7f6d,0x39f7f435,0x39fe4d4a,0x39ef1001,0x3a195682,0x39b57d7a,0x39a9dcc0,0x3a1cbb1c,0x3a3b2132,0x3aa376a9,0x3ab6e31a,0x3adc2bae,0x3ad8432f,0x3acba622,0x3ad588ab,0x3ac9ad60,0x3ad693ad,0x3ae00d8b,0x3ad79e33,0x3ae4db5a,0x3adfab7e,0x3ad07220,0x39a4bf60,0x39fd78d7, +0x3a19346d,0x3a0d242c,0x3a1673e8,0x3a01723b,0x39e09696,0x39b28f29,0x39c2c04d,0x39cce465,0x39d7af78,0x39e496c8,0x39ed8baa,0x39efded0,0x39f2e8d6,0x39e92abc,0x39e5eaff,0x39d81ca0,0x39d28708,0x39f9e99c,0x38272e17,0x39a0c7f5,0x3a9c15bb,0x3987c7ef,0x3a0e64fa,0x3adcf281,0x3aca4946, +0x3ac48594,0x3abb247a,0x3ab44d24,0x3aad0634,0x3aa5074d,0x3a153702,0x3986f9c2,0x3ad3f46f,0x3a3c879a,0x39b6f41f,0x3a8bae88,0x3a6cb257,0x3ac16d31,0x3a81ea03,0x3a95de71,0x3a86fc48,0x3abc6a40,0x3abc0ce3,0x3a8ec374,0x3a8cde5a,0x3a91cc4d,0x3ad00933,0x3a9c128e,0x3a992a99,0x3a9c8f8a, +0x3aa5f737,0x3aa9ce43,0x3ab76963,0x3aa25e61,0x3a863abb,0x3aa643a2,0x3a4a79ed,0xb9746980,0xbaff5a21,0x3a5900c1,0xb9bb71de,0xbb05b7ab,0xbb04143a,0xbb0173b4,0xbb0471f7,0xbaea2a65,0xbae5f649,0xbb00da1d,0xb7eae59f,0x3aa42cbf,0xbb03c176,0xb97f4bd1,0xba5ad111,0x3ace8d2e,0x3a67bc0e, +0x3a873109,0x3a7002c9,0x3b0e48ed,0x3b17d4a8,0x3ac0262e,0x3aaedd6d,0x3ac37a03,0x3b2bea50,0x3ab9a315,0x3a8e437e,0x3aa21e0a,0x3ad1ee75,0x3b0256d9,0x3b1fe0c3,0x3b0aa6fd,0x3ae8be6a,0x3ad2b425,0xba062996,0x3a0191e6,0x3a4e333e,0xb99e0fbf,0xba08f089,0x39a796a7,0x39574cec,0x39ca9e4b, +0xb9943a57,0x3a5c3f83,0x3a51e072,0xb9f3b06b,0x3a226731,0x3908dfd3,0xb9a077d3,0x3a2c446a,0x3a382f9f,0x3b04eae1,0x3abc3046,0x3ae61ce5,0x3aad103b,0x3b63ec92,0x3b735460,0x3b07ed39,0x3add71b8,0x3ad7ab72,0x3b86bf74,0x3b088918,0x3b034cf1,0x3b05662f,0x3b2a0e97,0x3b3c386d,0x3b5f4177, +0x3b223a50,0x3b047602,0x3a90513d,0x397b1f31,0xb9007525,0x39b73a98,0xba9aa01f,0xbab953ae,0xba6f5519,0xbac58bbe,0xba8ea579,0xbb20f5cb,0xba924a08,0xba88e95a,0xbb06fd1b,0x38bb4e1a,0x39f0060f,0xba50bc9c,0x39e601e2,0xb9e0a90b,0x3a93337c,0x3927e9da,0x395cf381,0x38c40188,0x3b89827f, +0x3ba7d3e5,0x3b38598f,0x3af72a41,0x3b35c068,0x3bc2f579,0x3b25bad8,0x3a4a77d0,0x3a945b3b,0x3b338ca4,0x3b93a2b4,0x3bc100f1,0x3ba13687,0x3b76ee63,0x3b288557,0x3a0b64eb,0x397192aa,0xba27ebd0,0xbaca5b6c,0xba86967d,0xba539ca1,0xb90103cd,0xb94c16f1,0xb9029965,0xb9a1a4c9,0xb9d9e6ec, +0xbae9ff37,0xb9c4e4d0,0xb8b6cae1,0xbb26dcad,0xba5ea1fa,0x3b928eb3,0x3bd749db,0x3c121bdf,0x3c175397,0x3c041b92,0x3b856d35,0x3b1b4b2f,0x3b90aaf5,0x3aed2ad0,0x39837444,0xb99816af,0x3b29483c,0x3bb3d5f3,0x3bee81e6,0x3b3cbab7,0xba13bacc,0xbb1527df,0xbb70f9ff,0xbb5b8516,0xbb47a1e0, +0xbb860a14,0xbb29fd22,0xbabc9b23,0x3adcd548,0x3a92d78b,0xb75841e7,0x3992a37d,0x38667386,0x395bedeb,0x38c3a156,0x39d93bdb,0x3a03e463,0x3abfa189,0x3b3f9c5c,0x3b768942,0x3b8a9cc3,0xbaac7403,0x3a40dc30,0xba49b6c9,0xbb22c529,0xbb736ea2,0xbbbd9c0d,0xbb9409b4,0x39e8a48a,0x3aa1d076, +0x3b3a9aea,0x3b57d269,0xbb5ecb3c,0xbbdb0e00,0xbba4c879,0xbaf5d0a6,0x3aed92e5,0x3bb07307,0x3b9e6916,0x3b5c868e,0x3a4a5d1c,0xba3117bc,0xba0695fc,0x3a0daa45,0xb97535db,0xb9c5043a,0xb8ce4bc7,0xb8b945a8,0xb8a98556,0xb8c00598,0xb89fd166,0xb9563408,0xb8fbc8f2,0xba824087,0xba18830f, +0x3a9e9f69,0xb9fb2d91,0x3ae8541b,0x3bd19b9b,0x3a8cfb17,0x3b217c14,0x3c1ec06d,0x3c36f4a6,0x3c352c5d,0x3c2537e6,0x3b14e2aa,0xbae2be3a,0xbb0e640b,0x3bc0f95e,0x3c170c5b,0x3be5b619,0x3b4c1a72,0xb4d94794,0xbab1af05,0xbadf2afd,0xba16ab8d,0x3a3b5cf5,0x3a78c418,0x3a1d08e5,0xb9c233c9, +0x393b19e9,0x392250e4,0x38b854f0,0x3847c505,0x38959558,0x386722e5,0x387960fa,0x38c61be7,0x38a860d7,0x39e21365,0x391d881d,0xbb397b0c,0xba01a834,0xbb947ed8,0x3b6ff835,0xbafaf199,0xbb3e9caa,0xbafce7d6,0xbaaef9b1,0x3b233e27,0x3c0b1caf,0x3bb42357,0x3b463deb,0xba5ac90e,0xba533c64, +0xbab18747,0xbaa56a33,0xba6c3f72,0x389ed7f1,0x3aaad3dc,0x3b1110e3,0x3b284bac,0x3b29009d,0x3af72ab0,0x3adab3cf,0x39f87768,0xb93ea3c7,0xb937050f,0xb8422edc,0xb896ab04,0xb8aace58,0xb8845662,0xb8670826,0xb878d361,0xb8afc86a,0xb90a5efc,0xbabedaae,0xbc09fb17,0xbc17430a,0x3bf779b0, +0x3bfa7b43,0x3bd8c375,0x3ba2e99a,0x3b9bff72,0x3b699232,0x3ac33567,0xba25120c,0xbad8dfef,0xbab45460,0xb966050a,0xb9badc5a,0x390dc832,0x3ab2f0d4,0x3a92ab3b,0x3a8eb0a5,0x3a9a39fe,0x3a825aba,0x3ac3bfc2,0x3b12616e,0x3b2a51c1,0x3b3f793c,0x3aee1277,0x3a5a1111,0x396b5a49,0x3876df4a, +0x390b5733,0x3917d638,0x38e7ec28,0x388d794d,0x38a933b4,0x38fb9ff6,0xb89b154d,0x3ab5a452,0x3b55c1ef,0x3c11386c,0xbb054d60,0x3a25eace,0x3aed64b8,0x3a5b655e,0x391c5b44,0xba1fb56f,0xb99c14aa,0x39ed53a6,0x39de3d08,0x39230c8a,0xb96b92c1,0x39adf9e9,0x3a275e49,0x3a35f4a4,0x3a30d2c3, +0x39c5a812,0xb9c62abf,0xba20e7a8,0xba6167bd,0xba979fad,0xba649306,0xb99e6a50,0x3a009a92,0x3a0c277a,0x395cc7a1,0xb975ddd4,0xb9a20e58,0xb9a5be6a,0xb9742c16,0xb8fb04d9,0xb900acd6,0xb9d34609,0xba39bed1,0xba5daeb2,0xbaa8a4cc,0xba557204,0xba96ae79,0xbad97355,0xbad1ac27,0xbab2f65a, +0xba96934e,0xb980e1af,0x39b97e75,0x3a80411f,0x3ab0e361,0x3affabfd,0x3b1e9eb1,0x3b1a835e,0x3b110e0a,0x3b065f78,0x3ad9aa38,0x3aaab6db,0x3a81a365,0x3a60662f,0x3a42de3c,0x39c558a7,0x3a239f8f,0x3a6b0f74,0x3a9fda01,0x3a988e2e,0x3a9e357d,0x3a9ad7b8,0x3a67d45f,0x3a29da7f,0x3a0c228e, +0x3900efa8,0xb97037b5,0xba256515,0xba2fec9c,0xba4c7258,0xba8359d7,0xba8df550,0x3aabc993,0x3aeb05d1,0x3af46765,0x3b02e75f,0x3b04e4ff,0x3b11864c,0x3b1c7d02,0x3b2b3881,0x3b141397,0x3aef855d,0x3abe2459,0x3a8fe93e,0x3a59dcb1,0x3a161468,0x3a229e4b,0x3a2ed704,0x3a32e8da,0x3a30c826, +0x3a25643b,0x3a3cda37,0x3a3146b2,0x3ab472cc,0x3aefcc3b,0x3af91b1f,0x3b1370b9,0x3b3f7346,0x3b37e4ed,0x3b33b31e,0x3b23f4f5,0x3b1eab05,0x3b11efc9,0x3b02bf56,0x3afcc4ab,0x3adb1ab2,0x3af129d5,0x3af0d68c,0x3abc5f29,0x3abbe118,0x3abb0d2f,0x3acb1ed9,0x3ad7be17,0x3ad97043,0x3adad1ad, +0x3ae80d64,0x3ad49832,0x3acedb82,0x3ac5c2d8,0x3abeb475,0x3ab3fc9f,0x3aa16daf,0x3aa57548,0x3aa314f9,0x3aa1bf83,0x3aa35404,0x3a9f0355,0x3aa55070,0x3aad9986,0x3a708cf7,0xb8d4f4b4,0x3ae97ff5,0x3aa036fb,0x390b0ed0,0x389033e0,0x38f124f6,0x39017ef9,0x392d4de2,0x393d2318,0x3937938d, +0x3a81e5aa,0x3ad29c98,0x38b31be4,0x3a756440,0x3ad84333,0xbaac19b9,0xb9bc9329,0xbabd406f,0xba780347,0xba88bdbd,0xba73d7ee,0xba8317f4,0xba975c1b,0xbac52914,0xbac7432b,0xbabe6729,0xba7665a5,0xbaa62f59,0xbaa7cd18,0xbaa717d0,0xbaa80b5a,0xbaa45fef,0xba8ec524,0xbaa03952,0xba8fd860, +0xbad28a95,0xb9d54c33,0x3a3559be,0x3b16c6fb,0xba8a0569,0x39a188ef,0x3afc2557,0x3af27428,0x3aeef150,0x3acca8c9,0x3af26106,0x3af452c2,0x3ac3d6be,0x3a0e8e12,0xba7ca37b,0x3afe73a1,0x3a5896c2,0x3a862712,0xbaa7fc88,0xba914b00,0xba7c3316,0xba4799fd,0xba23dd73,0xba72dd7d,0xbaeabf85, +0xbb061490,0xbaf179f3,0xba25e7b3,0xbad27006,0xbb008479,0xbb0148a1,0xbafed9fe,0xbad30be4,0xba81c806,0xba828017,0xba88bd1e,0xba8d9b4b,0x3a924ac3,0xba410ede,0xb9b5b914,0xba7e81f5,0xba6f9d51,0xba803863,0xbaba0f14,0xbac81953,0xbab7f7a8,0xba80e92f,0xba7f9906,0xbaa6664e,0xba3115d1, +0xb912d4ef,0xba475556,0xbaab43b1,0xb8b42b3d,0xb92aa398,0xba331c1f,0xb8a5ce6d,0x37ccc6bf,0x396597e5,0xba0611f3,0xbb13f277,0xbb397360,0xbb31717f,0xb8fe1f5e,0xbad893e9,0xbadd45d0,0xbaf0c91e,0xbaf1f1a0,0xbad26ed8,0xba440ae1,0xba845ade,0xbab82a45,0xba22dc24,0xb9643410,0xba53ae56, +0xb92a0679,0xbb0a1ee6,0xbacef87b,0xbaaea459,0xbaabe6e2,0xbae1b72c,0xbb02dd81,0xba9fb836,0xba5b1bd4,0xbb07f71c,0xb94e6800,0xb87ab1ea,0xba676ce2,0xba3f0def,0xba392634,0xba7f1823,0xba9b08b3,0xba42eea6,0xb9824626,0x3a8c1543,0x3a0b9eca,0xbb0ea047,0xbb640e63,0xbb2ebd20,0x3a3d2d0c, +0xbafa34e2,0xbb79093d,0xbb875906,0xbb7735c3,0xbb0e2201,0xb8ee0a5d,0x3921ac59,0xb91c4fcb,0x39a535df,0x3a29835f,0xba756adc,0xb9e26703,0xbb064268,0xba92a5ca,0xba056b64,0xb8a9e079,0x391902a6,0x392b0467,0xb8c42297,0xb9633abd,0xba999164,0xb9d3c5f8,0xb9b3a634,0xbb20b898,0xbb02f296, +0x3b893c2d,0x3b4c20cb,0x3b8dbf2a,0x3ba617d9,0x3b9c22c6,0xba14ce4c,0xbb422269,0xbae2adc7,0xbb6a8cbe,0xbb8e2770,0xbb908e39,0xba92ff86,0x3b3c8a58,0x3bd72a79,0x3b20eaa0,0xba96065b,0xbb8c57c4,0xbbc9dfb8,0xbbdf4583,0xbb9ddec3,0xbb5fb740,0xbb54e585,0xba944edf,0x3ab4476f,0x3a7556f5, +0xb69fdf74,0x3957645d,0xb89fa51d,0x37e06a77,0x380d4f91,0x397a76d7,0x395f7474,0x3a62bc62,0x3b164449,0x3b57994b,0x3b6d10be,0xbaf14dc8,0xba5fa515,0xbac252bc,0xbb32268a,0xbb3f07cc,0xbbc9d563,0xbbacef48,0x398394c5,0x39784ed7,0x3b009f07,0x3b635438,0xbb29503d,0xbbcc61ab,0xbbc51a3f, +0xbb8c43bc,0xbb0ae5d9,0xb9b74218,0x3a41f7a3,0x38388450,0xba17dbab,0xba2373dc,0xba2cb090,0x3975f611,0xba11a88d,0xb9b8d33e,0xb89eb8c8,0xb889ed00,0xb6ef37fb,0xb6da6270,0xb82ba108,0xb8eebbdc,0xb8ab697f,0xb9eda83b,0xba3a1af6,0x39ea8bab,0xbafce684,0x3b419ea0,0x3bd5dc14,0x3b033f98, +0x3a856d3d,0x3ae4ac15,0x3b3e469e,0x3afa39d0,0x3a8499a3,0xbb795da7,0xbbc29d90,0xbbd16a5f,0xb9c2c95b,0x3b235a17,0x3aeeb2aa,0xbaa28b1d,0xbb1a302d,0xbaac4110,0xbadb17c6,0xbaaa455e,0xb8f722e8,0x39a2910a,0x379d94e8,0xb997d29c,0x392bbbae,0x3950a5b0,0x3869d717,0x383dde5a,0x37b4efed, +0x3784cc15,0x37d244d4,0x38ab6a35,0x375c9a39,0x39af3d62,0x38bc17d2,0xbb0882ee,0x39534f83,0xbb8d4c9f,0x3a350155,0xbbdd6058,0xbc1c1527,0xbc532c3f,0xbc352a87,0xbba311b1,0x3ba3aaf0,0x3b9e2445,0x3b5638b0,0xbacb38df,0xbac8b8f4,0xbb1d358e,0xbb1ca716,0xbb46fd1d,0xbb35e7a5,0xbaff63fb, +0xba3296b3,0x3a0cd561,0x3ae4658e,0x3b0a40c7,0x3a9247ab,0xb88da92f,0xb9997da2,0xb908a25e,0xb865c19f,0xb8800409,0xb82d6662,0xb7e767ca,0xb818102c,0xb85b7957,0xb8a840d2,0xb815abd1,0xbada7757,0xbc00f8d2,0xbc078481,0x3c235613,0x3bcf3583,0xba11cef0,0xbb2c5eaa,0xbb276b32,0xbb58846c, +0xbb9a02e1,0xbbbb9db5,0xbbb702ca,0xbb9c94d4,0xbb810042,0xbb4b1e0f,0xbb094d2f,0xba0e242e,0x39ca06b7,0x3a869d47,0x3a99d2cd,0x3aba7ea5,0x3ac61057,0x3ae2f69b,0x3b2ba72c,0x3b15c0cf,0x3ac0cbf2,0x3a2734ba,0x38d389ba,0x38d6372c,0x38f27060,0x38a2cd52,0x38877eb3,0x383b196c,0x38b29379, +0x39088bb3,0x3812065e,0x3ac1b332,0x3b6f5abb,0x3c078ceb,0x39c688f5,0xb9856180,0xba45342f,0xba830636,0xbb00a48f,0xbb3aa0cc,0xbb4564b6,0xbb5b9771,0xbab158a1,0xba2385dc,0xba1f0deb,0xba3dd50a,0xba6e2a81,0xba8ebdce,0xba91b84a,0xbaaceda8,0xbadecae3,0xbae7023b,0xbab7b86f,0xba58861c, +0xba44d63e,0xb991cd84,0x39ccbeff,0x391c68ed,0xb8283a3e,0xb99d0a51,0xb989a5ad,0xb918cafb,0xb919bff3,0xb8776869,0xb8f196e8,0xb9c45a64,0xba32ccc4,0xba8d57d4,0xba9f5f71,0xbaae49d6,0xbb0ab0e5,0xbb41e2a6,0xbb50e0d3,0xbb3f0551,0xbb3dfc4c,0xbb1480e7,0xbafb286b,0xbaea3cb6,0xba8cf045, +0xb9ad6ad6,0x3a140570,0x3a8ae966,0x3ac99e0f,0x3b03b87a,0x3ac7fe2a,0x3a937082,0x3a3d26aa,0x39e6ca91,0xb80e2403,0xb9a7a42f,0x39daf00e,0x3a3b39d3,0x3a8367f5,0x3a521d54,0x3a76df86,0x3a2a7aca,0x3a29f693,0x37665082,0x39959deb,0xb999bcd8,0xb9c85fd4,0xba823211,0xba8e1a7b,0xbaa05a09, +0xba9942c8,0xbaf1a1d8,0x3afe0121,0x39ea7eca,0x39e7ed5c,0x39b0023e,0x39363268,0x38f1424b,0x38a5b138,0x38969a3d,0x398fe765,0x39b1904a,0x39c0d4ce,0x39e50861,0x3a0793e4,0x3a2baaee,0x3a214569,0x3a2f8741,0x3a335508,0x3a36bc78,0x3a53edbc,0x3a193480,0x3a858450,0x3a7457eb,0x3a97c074, +0x3ad8ff32,0x3afead74,0x3b053eb8,0x3aebd644,0x3adaf089,0x3ae6745c,0x3aa9fc54,0x3a91fbea,0x3aa1919f,0x3a8a1c83,0x3aa1b6f7,0x3a94c1ea,0x3a2dc907,0x3a30fe19,0x38dbe9b5,0x39c7cc82,0x39af8a30,0x39c862f1,0x39b191c8,0x399b9fd9,0x396470c6,0x39996429,0x39c2ff49,0x39f2a684,0x3a113d1d, +0x3a21c503,0x3a32a5b5,0x3a2f5482,0x3a2bf413,0x3a2a5998,0x3a20eae5,0x3a254fb0,0x3a106358,0x3a4945cb,0x3aaf476f,0x3b0c3b46,0x3a532965,0x3ac80334,0x3b2b1bc0,0x3b218bb2,0x3b1a6239,0x3b0da358,0x3b0e2da7,0x3b0887b7,0x3afbb468,0x3aa34c46,0x39ff0358,0x3b071d5f,0x3ab08739,0x3a1032fb, +0x3a2a72fd,0xb9e1dd6f,0x3aaefc1f,0x3a30b875,0x3a4cdd3f,0x3a23ec37,0x3a7448d0,0x3a710e34,0x3a387bb7,0x3a24ca9f,0x3a2d07e9,0x3a8df3b8,0x3a44c0d1,0x3a3bfd39,0x3a3a8a9e,0x3a3f8258,0x3a48b02c,0x3a781a52,0x3a4ecd2d,0x3a21457d,0x3a84f81a,0xba185f42,0xbac72b7e,0xbb0826e7,0xb9d1ccf0, +0xbadc79a5,0xbb0ea7d0,0xbb1b464b,0xbb1835b5,0xbb0e7450,0xbb10c58c,0xbb13a60b,0xbb1c1382,0xbaace116,0x38c71e90,0xbb11f4f7,0xbad19479,0xbaeaeacd,0x3a8be70b,0x3a4dc441,0x3a244fa0,0x39cb9dff,0x3aa92baf,0x3ab721ec,0x3a702630,0x3a295eb9,0x3a522a02,0x3aec77ea,0x3a688bcd,0x3a0ebafa, +0x3a04130b,0x3a1a927a,0x3a69747e,0x3accace4,0x3aa0a778,0x3a9caed4,0x3a3e0092,0xbabc2a69,0xb8b72609,0x379f4a6d,0xba796848,0xbaa14d2f,0xb914fe5d,0xba19929b,0xba2c796d,0xba955a89,0x38c76bd1,0x39e91aa2,0xba386b5c,0x38f07fbf,0xba01053d,0xba7c10b9,0x3961a6ed,0xb99694a4,0x3ace4e83, +0x3acb4936,0x3ab26e81,0x3a648e6e,0x3b1827de,0x3b19d987,0x3ac771ed,0x3a4bfc5e,0x3a4008f8,0x3b39fab9,0x3aa8e888,0x3a99830f,0x3a727885,0x3a926b76,0x3ab0a847,0x3b1b3165,0x3ac31361,0x3abc0163,0x3931c2d8,0xba40b698,0xba453ee6,0x38159151,0xbae1ec0f,0xbafe7b0a,0xba23fe37,0xbad19418, +0xba54add3,0xbaea2cf3,0xba23c052,0xba836d7f,0xbabf74ad,0xb96b6448,0xb8541b2c,0xbaa3a155,0xb950e017,0xba805f5c,0x3a79e033,0x3a2c8f07,0xb8f3e25c,0xba13c601,0x3b19db52,0x3b46de8a,0x3afc4837,0x3a122eff,0x3aa99f38,0x3b84fa01,0x3ad1b5fa,0xb95024b8,0xba2409a6,0xb8b852dc,0x3abf080e, +0x3b6eb5b0,0x3b41358f,0x3b29c36b,0x3a9c77f4,0xba0a668c,0xb8c2ea7f,0xba4e9543,0xbac83544,0xba395f7c,0xb8d487a1,0x378cfd32,0x39037e1c,0x39dbe25c,0xb75fad3d,0x38c94209,0xba29f11d,0xb8d2d773,0xb91b6b42,0xbafc5036,0xba7d18b4,0x3b2b6700,0x3ba2082d,0x3c07c32a,0x3c11a01c,0x3c0d62ef, +0x3b76c1cc,0x3ad7a24f,0x3b6d15bf,0x3ad5bfb0,0x3a1220aa,0x3971e4ef,0x3b40671e,0x3bccf296,0x3c108bfa,0x3ba45aa2,0x3ad05249,0x38048945,0xbb292ab9,0xbb2fc76b,0xbb4bb530,0xbb879558,0xbad5444f,0xb9dad343,0x3abfd631,0x3a161f1b,0xb870ff72,0x38d69de5,0xb8a49d89,0xb8c85503,0xb83fa15d, +0x38e1d1f1,0x3879d572,0x3a01eab4,0x3ad1517c,0x3b1f0880,0x3b21dedc,0xbac597c2,0x3aea2d64,0x3aaf5272,0xba9d4679,0xbb3916c7,0xbbc12703,0xbbb3859b,0xba14a4ed,0x39df21e6,0x3b334db2,0x3b980c68,0xbafd0555,0xbbc0c53c,0xbbb64563,0xbb29116c,0x3a2f0308,0x3b69966c,0x3b41e23b,0x3b070449, +0xba00b54c,0xbaa5da36,0xba346ca4,0x39427447,0xb9d54f53,0xb980cc24,0xb792ae52,0xb807ecf7,0x3790b5e8,0x3835a621,0x379c164b,0xb87ac40e,0x359fa449,0xb9ad1505,0xb89563f3,0x39adba3e,0xb9d63975,0x3b71f600,0x3bf49b15,0x3b3d10f3,0x3b1290b7,0x3b8f4c6d,0x3c03ac71,0x3c0ee6fd,0x3c0063d1, +0x3b6cee2f,0xb8e6c51e,0xbb430b1b,0x3b9203ac,0x3c0665b5,0x3c041e98,0x3b770453,0x3a2964c8,0xb9d3ae42,0xba6bb657,0x39ea1f5f,0x3aa70068,0x3a86992d,0x3a56d036,0xb94dfd27,0x399b3fe7,0x38be2c4b,0x3811d511,0x3782c154,0x368df55f,0xb7b513ed,0xb711ed2a,0x37d999dd,0x3605cd93,0x39371ce0, +0x3919c259,0xbaf7b42d,0x3a353d76,0xbb8a2e08,0xbb5f2c60,0xbbd55f19,0xbbd681fb,0xbbc5780f,0xbbd3045e,0xbb2120be,0x3bb97c13,0x3bb349c0,0x3b81d8fc,0xbabbc4b8,0xba8f87b9,0xbb050af0,0xbb05aa2e,0xbaef628d,0xba4e1ebe,0x39dc3a09,0x3aa66b0a,0x3af74dcb,0x3afdaaca,0x3a9f80fc,0x3a76b16f, +0xb957a13a,0xb96a566f,0xb8baa20f,0xb70ddd1a,0xb82995f1,0xb7399a77,0x36f43401,0x374fc3fd,0xb735f5d8,0xb7af7bb2,0xb6c242ac,0xba8f67f0,0xbbe0967a,0xbbd3f04e,0x3c0356b0,0x3bec63b9,0x3b64d273,0x3a2723b3,0x3abca4af,0x3a106424,0xb9ba01dc,0xbaaedddc,0xbb1e16ce,0xbb120ba3,0xbada735a, +0xbabd62d5,0xba376157,0x3a330e41,0x3a7daaaf,0x3aa1d891,0x3ad27684,0x3acd6ded,0x3b0f6b98,0x3b301b1a,0x3b2aadbf,0x3b335ff1,0x3ab5044a,0x3a001984,0x3735fa11,0x38443e02,0x38847f74,0x38210ae6,0xb746714d,0xb76155a2,0xb7bb02a4,0x389baf3c,0xb8a27b2a,0x3ab7da35,0x3b317439,0x3c03a70b, +0xbacb6b56,0x3a03cd5e,0x3ad0c55f,0x3a76095c,0x3a093ff0,0x37838b82,0x39128a66,0x395b1c63,0x396f3da9,0xb85ac0e6,0xb9ee0d98,0xb99a25e0,0xb9df6c86,0xba33ec51,0xba16b6ba,0xb9fd6e19,0xba096b0c,0xb9fe4dc4,0xb9ec4bdd,0xba486e26,0xba09985d,0x38219b39,0x39955306,0x398a5c9c,0x382b5ee7, +0xb92ae3c9,0xb8e500c2,0xb8c16b65,0x3835b5de,0x3835391c,0x38bbdc03,0xb88894bf,0xb9c1cd95,0xba027a68,0xba7319cd,0xba02a0e2,0xbb12a285,0xbb0df3e6,0xbadda381,0xbadd0426,0xbabae37c,0xba5f9265,0xb9e593f4,0xb7ffeb25,0x39d79327,0x3a862ec4,0x3ace832e,0x3aff2cc6,0x3b147241,0x3b25d2c3, +0x3b0c010e,0x3ae0b234,0x3ab166b6,0x3a9087a6,0x3a8f9aea,0x3a06ef3d,0x39bf154f,0x3a3dd44a,0x3a84f5a1,0x3a4ea639,0x3a1459b2,0x39d2a6d8,0x39021005,0x38574ccd,0xb935d3fe,0xb9b39bda,0xba449b7f,0xba8490e1,0xbaaa795f,0xbadbf51c,0xbb0b699c,0xbb078e94,0x388f6623,0x3a0f1f0e,0x3a47e624, +0x3a74f023,0x3a916e2d,0x3ab3f442,0x3ad757b5,0x3af94473,0x3af5ba82,0x3ae4a002,0x3ad1ee38,0x3abcce78,0x3aa7f518,0x3a98224f,0x3a99596f,0x3aa3e127,0x3aaae4ac,0x3aad5119,0x3ab12d3e,0x3ab9a903,0x3a5ce664,0x3ad9c58b,0x3aeeb12c,0x3af7b893,0x3b044d30,0x3b22f0b4,0x3b1a27d9,0x3b0832e3, +0x3aded233,0x3adea062,0x3ad228f6,0x3aa5b9bf,0x3a9d20f5,0x3a65111c,0x3a6ae82b,0x3a7bc3ab,0x3a4e9b8c,0x3ab7d1e1,0x3ab351fb,0x3ac4fac6,0x3ad2bb30,0x3ad7a89e,0x3adc8229,0x3ae90af9,0x3ae32d96,0x3ae5ea2a,0x3ae8557b,0x3aebc62b,0x3aed1a42,0x3ae8ff5a,0x3aeb2ea5,0x3ae89c31,0x3ae67462, +0x3ae60911,0x3adda110,0x3af73453,0x3a9c8305,0x3a193dc9,0xb844c2cb,0x3ac3dab0,0x3a32cd7b,0x391b686e,0x38292032,0x3896cc0a,0x38de62ae,0x37817e4a,0xb821055b,0xb89d2c42,0x39bf71f2,0x3a919483,0xb919f517,0x395bf95a,0x3b034348,0xba404b0b,0x3a36b6bf,0xba6fb178,0xb9f29de4,0xb9fdb1e2, +0xb9fca11e,0xb9a396aa,0xb9cf66e7,0xba3ab6bd,0xba4b9200,0xba46c3fa,0xb9d4434d,0xba21d854,0xba250a94,0xba28825d,0xba4248c7,0xba40ee23,0xba09d9da,0xba2a2c9c,0xba1faaa9,0xba9072e9,0x3a1a515e,0x3a9dbd18,0x3aaa0669,0x371b6ff6,0x3a6b66b9,0x3a981a9c,0x3a8e4185,0x3a92fdc2,0x3a826fec, +0x3aae09ea,0x3ab2b977,0x3a8f2be1,0x3a9b726d,0x3903c188,0x3a8bc97d,0x3ab66f96,0x3aad47e4,0xb9d76a14,0xba2719d9,0xb9c8cb40,0xb9f04f2a,0x3992fecf,0x39842234,0xba0775f8,0xba662866,0xba5e0d2a,0xb782d1d0,0xba3135b8,0xba8b3c8e,0xbaa24dd4,0xbac55117,0xba9e2780,0xb9d0b401,0xb9c20928, +0xba180cee,0xb9f98989,0x3a867ab5,0xb9bc2abc,0x39baea5c,0xba33c4cd,0xba2357a0,0xb918560d,0xba89631f,0xba8349fc,0xba17cb38,0xb9aa4404,0xb9d63612,0xb9f5da24,0xb91daeec,0x395abc59,0xb8c24b64,0xba1309c7,0x3a56c701,0x39f4dd6d,0xb9a8f1a1,0x3a0ab7c9,0x390c0ee5,0x3ac27540,0x3aab7cb5, +0xb981a406,0xba806b4b,0xba986c4c,0x3a0b7025,0xb9acb68a,0xb9d38461,0xba2990f9,0xbaa0c018,0xba8f2252,0x38c84cf5,0xb998ac56,0xba5674cc,0xb9c82ccc,0x394ee199,0xb9f7927f,0x3972a1e3,0xbaeb1459,0xbaafa1a1,0xba1d32fe,0xba89d0ff,0xbaa16076,0xba74b911,0xba34ebf5,0xb9b8e233,0xba8c954e, +0x37c876ec,0x39072df3,0xb9c716b5,0xb8ddb71e,0x3984a17e,0xb992aa1e,0xba7090c7,0xb9e0ddc3,0xba3d96c5,0x3b172e83,0x3b3beb41,0x3a2289a6,0xba72eeb7,0xba547fbf,0x3a9f019f,0xb9820cb3,0xbb015de8,0xbb39ae2f,0xbb639a60,0xbb06868b,0x3a1e4b74,0x3a4efc87,0x385ea401,0x3906fdd2,0x39bcf56c, +0xba8ee315,0xb96536da,0xbadcb8b8,0xba204c46,0xb88873a3,0x38d0f894,0x39d7401e,0x39674a3d,0x39372bf8,0x3678ea64,0xb98ec630,0xb96329bb,0xb8496e86,0xbada35f6,0xba972104,0x3b9984bb,0x3b58985f,0x3b99432b,0x3bc88f87,0x3bd0715b,0x3ab9967d,0xba37df48,0x3a3e096f,0xbad2be5e,0xbb2b2f91, +0xbb2d39ab,0xb999412f,0x3b64dc8c,0x3be8081e,0x3b90e31d,0x3a94291e,0xbb205c3c,0xbb8c7f44,0xbba0309c,0xbb3e4ae9,0xbb097510,0xbaf5b60e,0x393c1a07,0x3a8b9cb6,0x39f31a1d,0xb7970e3f,0x36ac258d,0xb92f55a9,0xb8afc755,0xb8a13f89,0x3853f390,0x389a96cb,0x3947d128,0x3aaf8b7f,0x3b19e29f, +0x3b62cedb,0xb9467cd0,0x3a0d58d0,0xbab5db3f,0xbb0df94a,0xbb3def00,0xbbad060e,0xbb9e28ce,0xb9cc95fe,0x366cf8fa,0x3b0b414e,0x3b9875f3,0xba809879,0xbba33f03,0xbbba427b,0xbb7a4c82,0xba9de887,0x3a8ef9a7,0x3ad0ce0c,0x39a36ca5,0xba3b3609,0xba1f60b4,0xb9d24e0f,0x394f2961,0xb9ed67d7, +0xb9409ed4,0xb80e7680,0x3798f38a,0x387a0362,0x3857bf16,0x37fe005a,0xb7be0e1d,0xb7bd21d9,0xb928e4dc,0xb964ba45,0x39c8e562,0xba847181,0x3b995e93,0x3be2fae8,0x3b38e0eb,0x3ab605fc,0x3abd4832,0x3bc0a2df,0x3bcb47b8,0x3b8e0904,0x379ad245,0xbb6e1a9c,0xbbd4c797,0xb9aa10ef,0x3b720b78, +0x3bacb650,0x3aadb01a,0xba57b01d,0xba52167b,0xba8aeebd,0xba4359dd,0x3a8aeb8c,0x3aa7e74f,0x39fbb94b,0x39496272,0x395611f9,0x38d30145,0x37a477c3,0xb6cb2565,0xb8062fd9,0xb7e061b8,0xb7eb677b,0x37b220f6,0xb7baba47,0x39181663,0x39734651,0xba9dcc8d,0x3a786bf3,0xbb8e5b29,0xbbe9f499, +0xbc021757,0xbbdb102d,0xbbfeef32,0xbc08701f,0xbba070c4,0x3b0bb782,0x3bb92f95,0x3baf705b,0xb9cd99d3,0xba24dbbb,0xbb0e6e9f,0xbb2806f1,0xbb358b75,0xbb099c4d,0xbabfdbde,0xb9f1145a,0x3906f7c6,0x3a9cc301,0x3ada456a,0x3a096845,0xb9c7e304,0xb935c0b3,0xb8440d25,0xb7af5d96,0xb499ff12, +0x37c214ec,0x37d6a605,0x37bc55da,0x37af715a,0xb82be658,0x38804b91,0xba67c1e0,0xbbba6ce9,0xbbaaf86a,0x3c225d8f,0x3c06f3af,0x3ae4ee7b,0xbaa10f2f,0xba6f8b6b,0xba943b9a,0xbae1e1b5,0xbb34659a,0xbb59d5e4,0xbb492bac,0xbb106567,0xbaf8b315,0xba96d5a2,0x3974cb3e,0x3a27f4c7,0x3a86ce0d, +0x3aa155a4,0x3aea2c7e,0x3b0bd4ea,0x3b268ade,0x3b5984cc,0x3b1d1a3c,0x3a8aeff2,0x39a44cad,0xb820bf0f,0x38895094,0xb6cfe3fd,0xb7f74764,0xb80742c5,0xb85232cf,0xb83a46ed,0x38337ca2,0xb8bf2c9b,0x3ab6c737,0x3b3fcf77,0x3bfcd14a,0x3a864275,0x3aae9f22,0x3a45c081,0x3a309489,0xb95438e5, +0xba943a98,0xbad11221,0xbb0139db,0xbaa82e1e,0xba963471,0xbab0231e,0xbaab7136,0xbab5f1f4,0xbacd54fa,0xbab375a1,0xbaa641e0,0xbab98709,0xbaa53fee,0xba7d22c5,0xba073416,0xb98400e7,0x39768dd4,0x3a4f9731,0x397f1033,0xb8028356,0xb8ceeb4d,0xb7467522,0x38c5cfd6,0x382faf3c,0x3922edf3, +0x38bfc47d,0x38861f27,0xb9361a95,0xb95f18be,0xb9a6878c,0x393046ec,0xbaea24d6,0xbb207801,0xbb258c8c,0xbb103cd0,0xbb07ebbe,0xbad0a312,0xbab4654b,0xbaacc22e,0xba468f10,0xb92445db,0x39fe3673,0x3a7e1597,0x3aba75c2,0x3af9fd36,0x3ac7f629,0x3a9a9256,0x3a52af71,0x3a36c9b5,0x39c09bb6, +0x39d09d7a,0x3a6c3701,0x3a604c57,0x3a66da36,0x3a0a469e,0x39f12355,0x3822c577,0x383923b8,0xb9d00154,0xb90632fb,0xba111987,0xba0f76dc,0xba826b53,0xba992cfd,0xbab35c63,0xbab5b05c,0xbaeba24c,0x3a67c351,0xb91fc9bc,0xb896de32,0x38a448fe,0x38f49447,0x39709627,0x39cb026e,0x3a175b34, +0x3a419609,0x3a4f0440,0x3a587ffb,0x3a689c06,0x3a812ccd,0x3a9e936b,0x3a95b6ee,0x3a9bdd51,0x3a9a97fa,0x3a9ddc8d,0x3a9ddbc6,0x3a929c67,0x3ad0e127,0x3ac28b14,0x3aeaf32c,0x3b0165a5,0x3b12424f,0x3b118b1e,0x3af7fd97,0x3ae6b86a,0x3ae337f5,0x3a9da29b,0x3a5e4670,0x3a6e303d,0x3a3ad33a, +0x3a55867e,0x3a408768,0x395c2257,0x3ab0bbf9,0x3a00f428,0x3a4e4a8a,0x3a54184c,0x3a670e2a,0x3a7035b9,0x3a73d7f8,0x3a7519cc,0x3a7eac87,0x3a89b07a,0x3a95bb1d,0x3aa212a0,0x3aa9d308,0x3ab12ded,0x3aaea7cb,0x3aad7a3c,0x3aac02f8,0x3aa7d3a4,0x3aa8fb7e,0x3a95ab04,0x3ae63a6d,0x3b0c3f48, +0x3b0c57ad,0x3ae58f57,0x3b16632b,0x3b23a873,0x3b1dfc6c,0x3b17a844,0x3b0b02fc,0x3b0de41f,0x3b08cd16,0x3af9050a,0x3aebc38a,0x3aa2136b,0x3adebbde,0x3ae636e7,0x3ab9ac89,0xb9f39b0b,0xbab59085,0x389c3a26,0xb97f6db6,0xb98448cd,0xb9c214fe,0xb979f9ae,0xb994ab78,0xb9d4029a,0xba064518, +0xb9fcd170,0xb924af01,0xb9b066fb,0xb9c329b1,0xb9e77ac3,0xba06f56a,0xba01f093,0xb989215a,0xb9c7164f,0xb9d3cb23,0xb9873037,0xbac4c62e,0xbad48dcf,0xba1165ae,0xbacbfe26,0xbaf8df59,0xba4002f6,0xba8cd645,0xba8c9cc4,0xba6db347,0xba840ab5,0xba8ab7e3,0xba98d161,0xbaccf680,0xba9ba1fc, +0xba59ea0f,0xbadafbf7,0xbab88926,0xb99b53f6,0xb8dc2faa,0xb9c7782d,0xba253140,0xb9531ced,0xb94dc07f,0xb9d483fb,0xba4b55e7,0xba2a9d54,0x38d80edc,0xb9abd07b,0xba30a0da,0xba84cf8b,0xbaabe1ef,0xba93f072,0xb996b028,0xb9de969b,0xb955cbba,0xba3eca19,0xba9dd42e,0xba5515d9,0xba3a4b33, +0xbabc27ae,0xbad0bdd7,0xba44e4c1,0xbacb558d,0xbae86c84,0xbade2984,0xba5b47af,0xb9cbc2ad,0xba725762,0xba1ab6d9,0xba69d7a3,0xbab14ea8,0xba425c11,0xba83b564,0x39e0f20c,0x3a26bb43,0x39c2a842,0xb8d259fb,0x3a096df2,0x39918ff3,0xb7a46a4a,0xba7c2acc,0xba7f0f45,0x3a0e5a9a,0xb8857e9b, +0xb96604c7,0xba62325b,0xbaaeb59c,0xbaa369a0,0x3908df63,0xb9bf99ac,0xb948c38b,0xba817a8f,0xbaaeb514,0xba9f599d,0xb9979b04,0xbb06ffd6,0xbaf987f7,0xb9df4d44,0xbaa08f0e,0xba1fa005,0xba661291,0xb998b984,0xba24f9b4,0xba584388,0xb9d0d895,0xb9f76f33,0xbab088b1,0xba790e4e,0xbaa6d165, +0x366665f0,0x396d44e7,0xba449be4,0xbab45ed4,0x393ab45e,0x3a024fec,0x392f622f,0xbabaf947,0xba85b865,0x3a76e512,0x3824baae,0xbad7922d,0xbb4cd526,0xbb854184,0xbb406ba1,0xb8a7cfc2,0x3808f88f,0x39ce103a,0xba0025c9,0xba88dbfe,0xba2bdeb9,0xba2d39b9,0xbaa925e6,0xb96ab9aa,0x3931504b, +0x394d7d0c,0x39937c65,0x398dc6fc,0x38dc2d37,0x3940bcb1,0xb7d0afc4,0x35a6298d,0xb97ba5ce,0xbab52675,0xbaa94e65,0x3aa848e6,0x3b0c1367,0x3bb0b566,0x3bcf1bf2,0x3be4b0c5,0x3b02cebb,0xb96268c5,0x3a9fdcc3,0xb91e5c7f,0xba06dc1e,0xb84032ae,0x3b12d40d,0x3bbe4694,0x3c14135d,0x3bcfbaa4, +0x3b474369,0x3a14b0c2,0xbb2ecec0,0xbb5c31d0,0xbb62e929,0xbb5fe508,0xba87b3c9,0x399842d9,0x3a5b8c97,0x3926d4e0,0xb88ab81b,0xb8875120,0xb9039d4f,0xb8e971bc,0xb87ea553,0xb8626d39,0x370a0411,0x36a9bfc4,0x3a1457cf,0x3a94997d,0x3a901e85,0xbac2800c,0x3aa521ea,0x3aaf8f67,0xba8854ab, +0xbb127618,0xbbbe3d8f,0xbbc8ab4b,0xbafc0d96,0xba306183,0x3b08b070,0x3ba438fb,0xba377264,0xbba23317,0xbbcc4c78,0xbb861026,0xbacd2841,0x39de1d4a,0x3a18cae9,0x399e48b8,0xbab6424c,0xba939151,0xba009440,0xb8a55943,0xb9b467b1,0xb8cbdc15,0x37ef5c51,0x380284ec,0x388201cf,0x3855e920, +0x384d43d6,0xb588887f,0x388bdc5c,0xb925b7f3,0x3842f0fa,0xb7303352,0xba12eedf,0x3b99649a,0x3be3ba5a,0x3b79a6cb,0x3ab4cf2d,0xba86465b,0x3b7f7f1f,0x3ba2349d,0x3b674b03,0x3b17ae59,0xba832b3a,0xbbb21be1,0x39956733,0x3b8818cd,0x3bce1afd,0x3b2e25fa,0x39aa056f,0xb8ef9346,0xb9f36e79, +0x3a133606,0x3a8d1417,0x3a214a4a,0x3a07db40,0xb7c3a9c9,0x3963bbc1,0x37ed417f,0xb63bc7aa,0xb7cab3c8,0xb80459b8,0xb8276153,0xb7e1653a,0xb805ff2e,0x362775b1,0xb82e106f,0x3a000cd5,0xbac907c4,0x3a8c0d5b,0xbb9c8d3a,0xbc2acf27,0xbc0c7d8e,0xbbf8861d,0xbc136b57,0xbc1db4ae,0xbbd4db20, +0x3a753f99,0x3b99dcab,0x3b9a7909,0xba9a7555,0xbabaaf8f,0xbb44a689,0xbb4aef8f,0xbb56f25a,0xbb22d85c,0xbac70679,0xba27c559,0x3973aacb,0x3a4241d0,0x3a175105,0x3901b56a,0xba088706,0xb88ddbe6,0xb80970d6,0x3762623c,0x3742e699,0x38131dad,0x3815726c,0x3846199d,0x3808c03c,0x3815b548, +0x367d7c3e,0xb9a3d4dc,0xbb92a8b0,0xbb6611ff,0x3bf779c5,0x3bc473f2,0xb986fc31,0xbb7399f4,0xbb2484b3,0xbb48823f,0xbb3e6464,0xbb37bdf2,0xbb71326b,0xbb71295a,0xbb67e5f9,0xbb38ebfc,0xbaf11b84,0xba03a9a7,0x399bbf31,0x3a6b8102,0x3ac3a9a7,0x3aea3698,0x3b1952c5,0x3b28adcd,0x3b244cad, +0x3b05997b,0x3a599616,0x39226ed3,0xb835f099,0x378cabdc,0xb80b1585,0xb830d15c,0xb897d00e,0xb8877783,0xb8f0676f,0x37473975,0xb95c0e93,0x3a857567,0x3b110955,0x3bbe1cc9,0xb98378d7,0x3a1b4477,0x3a8ab622,0x3a777bad,0x3a25770d,0x36ec9178,0xb9da76a1,0xba9fd58e,0xba65add7,0xba65cd78, +0xba8ae2ec,0xbaa8973a,0xbae35a7a,0xbb10f128,0xbb025b4e,0xbad535a7,0xba97fc54,0xba5c435f,0xb9ebf92d,0xb9b083f2,0xb83421b8,0x39b6681a,0x39a29e5a,0x38d80714,0xb7a97a04,0x374a789e,0x38669c68,0x38da40c4,0x391430b6,0x393138d8,0x3967f474,0x393c225b,0x37ea548d,0xb890645b,0xb9bd6d58, +0xb915a483,0xbb275eb2,0xbb18a6a7,0xbaec73fa,0xbaf7c1f0,0xbad7074d,0xbabce373,0xbaa8e0e9,0xbaa39175,0xba5a2b00,0xb9ce638c,0x38e9784d,0x3a4cdb4a,0x3abd3bf7,0x3b068344,0x3ae6f341,0x3aba9a87,0x3a9397fb,0x3a6c8154,0x3a6a54b9,0x39e9f647,0x39723bbf,0x39f95af7,0x3a1854fe,0x39a06b47, +0x38d2c033,0xb906c693,0xb9644756,0xb9a94dc4,0xb9c858e4,0xba025472,0xba492427,0xba849f50,0xbab7b266,0xbaf5c663,0xbb14fc4b,0xbb17d9ed,0xb9c7d36d,0xba250260,0xb9a99a8d,0xb914c68c,0x38ad150d,0x399fa6e7,0x3a17eb4e,0x3a57a330,0x3a936bfe,0x3aaf0d4d,0x3ac05083,0x3acbfe99,0x3acf2451, +0x3adbc74c,0x3ad3881b,0x3adbc77c,0x3ae07575,0x3ae14d9b,0x3ae981ab,0x3ae1e6ac,0x3aa26d50,0x3ad5e29c,0x3ac4ff7a,0x3ad14a77,0x3ac78419,0x3aca4d50,0x3ab12c99,0x3a838e65,0x3a3e0b6e,0x3a212168,0x3a10ef33,0x39ca5840,0x399caa53,0x3930d379,0x37fccc44,0xb8ac7336,0x39e2d1c2,0x3a6ffbff, +0x3a8377d0,0x3a8d2cee,0x3a992b1e,0x3aa0f4ca,0x3aa771a5,0x3aad9051,0x3ab79d58,0x3ac34f75,0x3ad1fa23,0x3ae08f8e,0x3aee5986,0x3afbb41a,0x3af87cfc,0x3af4d8f9,0x3af138d3,0x3aecc487,0x3ae55ad8,0x3af80a7d,0x3a93c178,0x3a5ef493,0x3a90cc91,0x3a96b8fa,0x3a5103c7,0x3aa7e60d,0x3a98c662, +0x3a947602,0x3a905f27,0x3a7d61b1,0x3a617574,0x3a42cb4b,0x39db0feb,0x3a20d06b,0x3a401da3,0x399ffe74,0x3af03852,0x379eff94,0x3a5e4193,0x39088299,0x3920f6e6,0x396b0be2,0x38798248,0x39f4816b,0x39fbde7a,0x3995c931,0x3914fe1d,0x38e30f52,0x39909426,0x395d9dc5,0x394a8448,0x39041492, +0xb79d8faa,0xb7f12886,0x394ea7c6,0x38e4abf2,0x37e98bb7,0xb910ef64,0x3a325a27,0x39da4149,0xba36fd55,0x39e2d737,0x39709ce1,0xba1b86b2,0xba461a31,0xba2e67e2,0xba12c6cc,0xb9c60de3,0xb9b56126,0xb9e5c5b8,0x3a145752,0x3a341301,0xba5671f9,0x3a0cc632,0x396c9a59,0x3a12c38d,0x38c91dd8, +0x3982bb24,0xb91f2545,0x3a8c2b51,0x3aacb53d,0x3a679ea4,0x39d1fb46,0x39964129,0x3a32f03e,0x39f15d51,0x38d7b5a5,0xb998f23e,0xba43d2ff,0xba0cfbae,0x39b3fedb,0x39c3ac7f,0x393e25e1,0x392311ea,0xb8b0e99b,0xb9128723,0x3a136234,0xba3084e6,0xba41911e,0x39842918,0xba52ff86,0xba4097bd, +0xb995d1ea,0x3919353e,0x3920e976,0x37cf892e,0x38f6ab47,0x36bef71e,0xb85e7348,0x38cbf3e8,0x3a663d3d,0x3a92b0c6,0x3a119432,0x3a91cbb3,0x394127fa,0x3b1f283c,0x3b3790bc,0x3b014b32,0x3a777975,0x3a04ed3f,0x3aa059c2,0x3a9b0b31,0x3a8aa037,0x3a07d082,0xb9c92a9f,0xb9c28b63,0x3a826d6e, +0x3a0c7271,0x394f683a,0xb98e5145,0xb849c3e4,0xb9e84874,0x3967545c,0xbac61514,0xbaa42553,0xb90c2885,0xba607a59,0xba0828fc,0xb9a8d75d,0xb9914f54,0xb94aa283,0xb9a1c677,0xb822aa7d,0xb7d5154a,0xb9de5583,0x391edd17,0x39ba3d55,0x3a13dcfb,0xb8b54a2f,0xb904a362,0xbaac63ef,0x3b3368e8, +0x3b8a37dd,0x3b5573ae,0x3abeae80,0x3a845f92,0x3adbcfb9,0x3ad5dd5a,0x39733d8d,0xbaabfc47,0xbb31514d,0xbad863c3,0x3aa5b107,0x3ab9b291,0x3a41d12d,0x36a5cc2a,0xb9c395e7,0xba678229,0xb9984c6c,0xba883534,0xb8842a99,0x38fb85eb,0x39496280,0x398358a5,0x391d76de,0x38c7595b,0x385afe54, +0x37e7feb8,0xb87737fa,0xb6c1823e,0xba8bdf6e,0xba018d9d,0x3b6b7922,0x3b70e5cc,0x3bbf95b0,0x3bf28e3e,0x3c07abb0,0x3b8d9df4,0x3b28bc8a,0x3b7fcff5,0x3a9a9180,0xb8afd94b,0xb84cd288,0x3ab1fcac,0x3b933bb7,0x3bf13b2a,0x3bcaa88b,0x3b602928,0xb5a268f6,0xbb057689,0xbb24a63e,0xbace64b1, +0xbad7870b,0xba1fad4d,0x3a501164,0x3a006cca,0x38eaae7e,0xb88d963c,0xb895a075,0xb8f09a3f,0xb8a44ed9,0xb8229966,0xb80931d7,0x37a805c3,0xb856707c,0x39e59ff5,0x3a9ea3d0,0x3b14f8c3,0x39ef6596,0x3b07d01c,0x3a4aaa33,0xb8a16d1e,0xbac4de49,0xbb7ba0d3,0xbb8bca20,0xbaad65e5,0xb998bafd, +0x3b0904e8,0x3b9e2767,0xb802a154,0xbb82eb57,0xbbb27b2c,0xbb621dcf,0xb9e17505,0x3b1ce9d2,0x3b18f844,0x3a895453,0xba235d9d,0xba101188,0xb9246097,0x37963007,0xb9955cd8,0xb81dbf65,0x37abe0ca,0x3834c047,0x386c5f1a,0x382b1471,0x3812576c,0xb626ef6e,0x383f8746,0xb88cf0ad,0xb8f0164b, +0x399b9b7e,0x38c2bc58,0x3bb67e08,0x3bfac57d,0x3b9408d7,0x3b1ca3f3,0x3ad67ec9,0x3c0b2eea,0x3c2a89bb,0x3c0516a4,0x3b9d52fc,0xb934f88a,0xbbaf14c0,0x3a089e56,0x3ba838bc,0x3c07fec8,0x3b9165cf,0x3ac071d5,0x386e8987,0xb9274a85,0x3982f838,0x3ae981c8,0x3abf0b31,0x3a176941,0x3961689d, +0x38acf0d7,0x38043372,0xb7a57098,0xb7e7775c,0xb81610bb,0xb817c29c,0xb7a637e1,0xb80d1f6d,0x37667d82,0xb8cb403f,0x39ea2e2f,0xba805130,0x3a9b11fe,0xbb8d1aa3,0xbc502c22,0xbbdd63cb,0xbb213849,0xbb1b8462,0xbb82692d,0xbb5e869b,0xb9e3b9b5,0x3bbc7838,0x3bdf20bb,0x3ab62c7e,0x39f8c48a, +0xbadc0b53,0xbb12adf8,0xbb1092fc,0xbaacefc6,0xba3833ae,0xb885e503,0xb8138ea8,0x39f9fceb,0x3a2269f9,0xb89a4019,0xb9d21295,0xb607d270,0xb707553f,0x37a8e6c5,0x37f3d121,0x3836ec57,0x38120ed9,0x38599ec3,0x3785c303,0x38992f87,0xb813435c,0x37deda7e,0xbb49b04f,0xbb11a119,0x3bf8095b, +0x3c05a88f,0x3b5b123e,0x38a6535a,0x39d2e902,0x39f35e9b,0x3a2d5a2a,0x3920024e,0xba9a9db5,0xbac0682a,0xba282cb1,0xba106f00,0x3842c07b,0x3a89a574,0x3a881e8e,0x3a9b2d06,0x3acb4008,0x3b01e41a,0x3b223d97,0x3b4068e0,0x3b4b913c,0x3b0244e3,0x3a11fe03,0x36870898,0xb85e3dbf,0xb726529b, +0xb8875ec8,0xb87f47e7,0xb8a8e080,0xb88097c7,0xb8f7e508,0x37abd17c,0xb9a13fe3,0x3a458327,0x3b08e9e9,0x3bba7c6d,0x3a8de56e,0x3b29b223,0x3b1eea18,0x3b1c3396,0x3ade7b26,0x3a4f36d1,0x3867c4dd,0xb9a8fc73,0xba790bf7,0xbaac0ad1,0xbad2a89e,0xbab077d9,0xbaaea030,0xbad046d1,0xba998dde, +0xba5735dc,0xba3cf18c,0xba053d27,0xb9b202ec,0xb97d3c63,0x39582247,0x3a224d44,0x3a486c9c,0x397a45e1,0x378a2b3e,0x389e315b,0x38f2e254,0x391f2169,0x39128d66,0x3940e57c,0x39313ec8,0x3961e666,0x38f3487b,0x39e171ef,0x39b32a51,0x3aa2dd1a,0xbaaf5382,0xbacbed79,0xbab6dab8,0xbaa24f63, +0xba884cab,0xba294147,0xb9e03499,0xb9999d3c,0x383b9c38,0x39db404a,0x3a412df6,0x3a905df5,0x3abcf534,0x3aee80f5,0x3acea5d3,0x3aab0f01,0x3a87e178,0x3a8b1b1b,0x3a8647b0,0x3a8fa6ee,0x3a809d83,0x3a403605,0x3a14a235,0x39672264,0x35e3386e,0xb99197e1,0xb9a72fcb,0xb9e32031,0xb9a26fb6, +0xb9ff5f0d,0xba0b311f,0xba3b974e,0xba7bfc8c,0xbaa35351,0xbabaa750,0xbabd4741,0xb9d8ae47,0xba24a26b,0xb9cf227c,0xb678e06d,0x39899f19,0x3a0d1925,0x3a612c05,0x3aa01ca8,0x3aaba2ef,0x3ab0c528,0x3ab59a83,0x3ab86659,0x3abf5859,0x3ad80142,0x3acfcacb,0x3ad60532,0x3ad470c7,0x3ad5d594, +0x3aca85ea,0x3ad50924,0x3ae7eedd,0x3aee0595,0x3b01c53e,0x3aebb270,0x3af2d3a4,0x3ae98bb8,0x3ac17027,0x3aa86e27,0x3a8c64d1,0x3a4078b7,0x39d0b274,0x39a3ece1,0x3936d7ca,0x39186999,0x38ff4ce3,0xb9716f2d,0x3ac8e0f5,0x3a6db0d2,0x3a92bf37,0x3a9fa8a5,0x3aacb936,0x3abadce0,0x3ac4cc1b, +0x3ad19956,0x3ad17a33,0x3ad9bbb5,0x3ae30f1c,0x3aedfe83,0x3af5669d,0x3afb9387,0x3af81938,0x3af5b479,0x3af2ab92,0x3af044b9,0x3aed5067,0x3ae07fb0,0x3b10d4bb,0x3b0d3f9e,0x3ac73155,0x3b108bf8,0x3b1105c3,0x3ad7fba0,0x3ad3673d,0x3ace1cee,0x3ac06071,0x3ac064f9,0x3ab73dd4,0x3aa32f90, +0x3ad3aed6,0x3acc66cd,0x3a69001e,0x3abfecf9,0x3b08420e,0xbab47712,0xbaaf38ce,0xba987273,0xba7d86e7,0xba8a2ad6,0xba944f92,0xba913f7b,0xba9b1b5f,0xbaa598b7,0xbabb11da,0xbabb9712,0xbaa61c4a,0xbaa17242,0xbaa3758e,0xbab3c2c7,0xbac81cb2,0xbac8a9d2,0xbaa93229,0xbaaf8cc2,0xbaa1ea0b, +0xbac27a77,0xbabe65f6,0xba4d83df,0x3a778e3e,0xbaec2102,0xba8cc42a,0x3a49410e,0x39d218af,0x39b3926a,0x39f419dd,0x39ed41be,0x39f41ad3,0x39cce58a,0xba568adf,0xbad4743a,0x3a257e61,0xba3c145b,0xb991bfdd,0xbaa51e51,0xba5d9015,0xba85f07f,0xbaa8df3d,0xba929e51,0xba9ccff2,0xbaa9f37a, +0xbaf1e906,0xbaf37012,0xbac0c7ab,0xbaacb44f,0xbad2e331,0xbb107307,0xbb37d15f,0xbb328ba5,0xbaf1dbad,0xbadbda0d,0xbab6e9cc,0xbae364ed,0xb9c9bc99,0xba9c4db5,0xba6672d5,0xbabfe8e6,0xbac5c9d0,0xba859fce,0xbb040364,0xbb0b6b0e,0xbac44904,0xba989a60,0xba6a81cb,0xba4aad46,0xba70627c, +0xba5ae3ab,0xba96c09b,0xbaab456e,0xba5152dc,0xb9af75c1,0xb919f6b2,0xb900ebbd,0xba35e08e,0xb9da2cb2,0xba576326,0xba786607,0xbb0fed96,0xbb1bc996,0xbae16577,0xba95ff24,0xbaa051b2,0xbb0c6ce3,0xbb50de71,0xbb54d7ef,0xbae99af4,0xbae98003,0xbad43064,0xbae2bb41,0xbaa86a58,0xbaa7c297, +0xb9d83ee5,0xbafea837,0xbab23470,0xb92bceeb,0xba04ecf2,0xb9692dc7,0xb93af7e3,0xb6e20bb6,0xb919193d,0xb9469c64,0xb9a5eb02,0xba19fa94,0xba7f3a32,0xba8980ef,0xba59a1df,0xba24226f,0xb93a0fc3,0xba56ea3c,0xbade4eb2,0xba4be71e,0xba1fc14b,0xba2e05bb,0xbb2f1aae,0xbb41780e,0xbb0cc7fa, +0xba9c539b,0xbb204d4d,0xbb9b344d,0xbbe07be0,0xbbca9934,0xbb4cb70b,0xbb09d778,0xbac22fb2,0xbadcdc19,0xba83e21d,0xba90e063,0xb9deb53f,0xba4d1e4a,0x394063e1,0x3912b29c,0x392c16fe,0x3951fae8,0x38b0a030,0x38678597,0x3855a71f,0x3858bf52,0x38886c72,0xb93764df,0xba6b1d06,0xba979b15, +0x3ad07fd4,0x3a6f6802,0x3b518057,0x3b93eee7,0x3bc58891,0x3ab0c887,0xba68c93a,0xb99def5c,0xbadba714,0xbaf8197b,0xbaa14835,0x39b4f46e,0x3b78a45a,0x3bf32b8f,0x3bd74237,0x3b7e780b,0x393bbc74,0xbb38c684,0xbb8287e2,0xbb5c4761,0xbb0dcb30,0xba3136cc,0x3a252103,0x39844b29,0x382a24d2, +0xb8d52dc8,0xb8879592,0xb8dc1470,0xb8434560,0xb80cfdcb,0xb7cb841c,0xb7e59201,0xb79e9af7,0x38f0ec3d,0x3a0db7d9,0x3a5e9a65,0xb9968484,0x3a986395,0x3a9727e8,0xb9664c69,0xbaa839c0,0xbb9c4701,0xbbb59312,0xbb17c887,0xba8795b7,0x3acf9acc,0x3b92e713,0x39a4eaed,0xbb73c3bb,0xbbcecc5c, +0xbbae419c,0xbb63a48d,0xbb019fab,0xba76fb88,0xba69fb93,0xbac6920b,0xb9fd2e06,0xb9517d02,0xb91d376c,0xb930b04b,0xb69a6fb8,0x381ff7f0,0x3836a9db,0x3855d4f3,0x37f6911e,0x37e1625e,0x36fe52e9,0x382455f1,0xb74db6a3,0xb8a9de26,0x38d700da,0xb93ef9c0,0x3bbc4dcb,0x3bdc1421,0x3b656284, +0xb938b773,0xbbaef8d1,0x3a8c4b7f,0x3b4306b3,0x3ab2afe4,0x3ae51c37,0xbac5258c,0xbbe2e77d,0xbb4de8e5,0x3a191533,0x3b903983,0x3b0bb8b3,0x3a303b67,0x39a67e12,0x3814b83d,0x39870b4a,0x3a2f6b7d,0x39890a99,0x38b05a63,0x39030bd2,0x389ecde7,0xb62d6470,0xb7adc3c9,0xb80e1a2f,0xb8017f0c, +0xb809350c,0xb746e46d,0xb8431838,0x380a6077,0xb92bb421,0x39e92c9a,0xba5334ba,0x3a816051,0xbba003e0,0xbc7d47c2,0xbc192b69,0xbbda85c3,0xbc1c2076,0xbc200c75,0xbc06ea49,0xbb70709c,0x3b6ca06c,0x3bb2076e,0x3a1da93e,0xba6b17db,0xbb4f19f7,0xbb581829,0xbb7f4884,0xbb64c7ad,0xbb401b87, +0xbb08188d,0xbaa9a277,0xb9efb4ef,0x369e3f8a,0xba014d38,0xb9bfd3fa,0x38479e4a,0xb79cd300,0x38129929,0x37f6c9ca,0x38387702,0x37ff00f1,0x384a4943,0x379738fc,0x38a71e64,0xb7f43f3d,0x390ee0c2,0xbaf93862,0xbab622ec,0x3bb9839c,0x3b729a66,0xbb4c1de0,0xbbc91e12,0xbbb3dc13,0xbbad4f46, +0xbb8c1943,0xbb5b9977,0xbb829382,0xbb8a6efe,0xbb8ab314,0xbb57efcf,0xbb11aa20,0xba8b51d2,0xb834f0b3,0x3a4b145c,0x3aca87ec,0x3b04e841,0x3b16ec39,0x3b13d55d,0x3b115786,0x3aa5c829,0x39a3f41d,0xb7cbc977,0xb7be6b98,0xb81f54a5,0xb8798df3,0xb88bfdfd,0xb8907d5c,0xb884901a,0xb8d0bf69, +0xb810f41f,0xb954d8f5,0x396f66d3,0x3af2b413,0x3b3f423d,0x3acd42c5,0x3a893f9e,0x3a1e06e7,0x3a7db341,0x39dae104,0xb9a0b21b,0xba9fbd58,0xbb1cda1d,0xbafdbdca,0xbad76845,0xbad24510,0xbafa262e,0xbb1bc9c0,0xbb3cc4b1,0xbb20184a,0xbb00804c,0xbab47820,0xba80bf70,0xb9d30e9c,0x390f9eb0, +0x39d1b3e5,0x3a16198c,0x39c90e66,0x38610363,0x38089920,0x38df3323,0x38d892c1,0x391d4f4a,0x38fdd0e5,0x39212f9b,0x392c4f36,0x39570ec5,0x39627ef5,0x398b34a8,0x39a20409,0x39c89481,0xbb0e9000,0xbb0f2595,0xbb00706a,0xbb056681,0xbafb63e1,0xbaf04439,0xbaeaa923,0xbaff7374,0xbace4430, +0xbaacd443,0xba734e12,0xb967dc21,0x3a093823,0x3aa477d0,0x3a8d4f3e,0x3a671065,0x3a34dfc2,0x3a216fcb,0x3a0a101d,0x39fed768,0x39d6a579,0x39b3a1e9,0x3980e8ed,0xb839be5e,0xb926499f,0xb9a5049e,0xb96aa6a0,0xb9ab2322,0xb9802ab0,0xb99ba115,0xb9d38229,0xba25fabe,0xba849aa1,0xbac02287, +0xbae35d73,0xbafd8efa,0xba0874ef,0xbac9c37c,0xbaa25e2c,0xba888d74,0xba5da01c,0xba3d5a9f,0xba09b46e,0xb9adffbc,0x3911180c,0x3a128a37,0x3a68b46a,0x3a99a8ac,0x3ab5275a,0x3ae056e3,0x3ad2969c,0x3ad7c6c2,0x3ad7c7d3,0x3ad83053,0x3ade25d4,0x3ace9d36,0x3ad29319,0x3aaa8c92,0x3a8a3b91, +0x3a9417b0,0x3a7f7083,0x3a18d642,0x39aceaf3,0x383f336b,0xb8a593b7,0xb9bfdbe0,0xba02ea1c,0xb9f79234,0xba18678e,0xb9f68e43,0xba318728,0xba88ffa0,0x3992e6d9,0x390cf51c,0x39c8180b,0x39c69a2d,0x39e9e010,0x3a069cc7,0x3a135124,0x3a1120a0,0x3a386166,0x3a591171,0x3a814d8e,0x3a9629ef, +0x3aaa3e14,0x3ac1e50a,0x3abb63fa,0x3ab90080,0x3ab63c5c,0x3ab08237,0x3aaf19c8,0x3aaad633,0x3a922081,0x3ab251cd,0x3b122639,0x3a5d5f88,0x3a9f0da3,0x3b15cf71,0x3b0f0855,0x3b076bb6,0x3aff8892,0x3af10920,0x3ae180e9,0x3ac983a7,0x3a430515,0x395d9a84,0x3acd7279,0x3a3771b7,0x3a9ec040, +0x39a0eb89,0x38c63a50,0x3a49ab2f,0x39d98f60,0x3a064935,0x3978782b,0x3a2f8d30,0x3a409749,0x3a3bec78,0x3a03a779,0x39e54201,0x39e538ed,0x3a0d13ca,0x3a086eb4,0x39cc2a74,0x3974dc15,0x395e99d5,0x39d78423,0x39c5c247,0x39802a57,0x39dae6e1,0xb8f7ce3f,0xba70416f,0xbb067805,0xb80198be, +0xba823992,0xbaeb86f4,0xbb083da7,0xbb03cf24,0xbae5eb39,0xbae2bbd0,0xbae0ee7b,0xbad72ff6,0xba30073c,0x39a8bbf4,0xbb0a18d5,0xba6361dd,0xba8dec5f,0x3a64f533,0x3a10ed62,0x39f6e0a0,0xb90f392b,0x3a832fb5,0x3ab195dc,0x3ab8db72,0x3a5799bb,0x3a2660ec,0x3a26432d,0x3a6fc774,0x3a2a26f5, +0x3844f996,0xba04e945,0xb9e9fd4e,0x39b47c3f,0x39d878c0,0x39e1493e,0x3924346b,0xbaab9d2d,0xb989774c,0x392fc121,0xba6d364a,0xba902b87,0x389e406d,0xba602f6b,0xba49923c,0xb9b09a12,0x39155f35,0x39ab2fa8,0x392aea12,0xb63c7f23,0xb9f81908,0xb9df44d1,0x395cfb04,0x398fe993,0x3aa4602c, +0x3aa27a3e,0x3aa6109a,0x38aef73b,0x3b0c32a3,0x3b2e92cb,0x3b3d99e1,0x3accdaa4,0x3a873179,0x3a6272e0,0x3ade5122,0x3ad03542,0x3a39c764,0xb99a785f,0xb9dd58bb,0x3a653119,0x3a0ddfc2,0x3a1bf1b0,0xba1d1b53,0xba488c9f,0xba35bb0c,0xb90b7291,0xbaa9c97b,0xba85b397,0x386efc7c,0xb9f8020c, +0xb7ae1f31,0xb8f9f28e,0xb880529d,0xb93dd8de,0x3802a5ab,0xb922a14e,0xb99618dc,0xba2bb37e,0xb74a2b65,0xb8718887,0x3a786c60,0x3a401b7c,0x364f8665,0xbadd25ee,0x3adee348,0x3b5e11fe,0x3b85fa49,0x3b063629,0x3a9ee9f7,0x3a4ad238,0x3b0d62ba,0x3aa21758,0xba74bc98,0xbb39e8fe,0xbb18995c, +0x39c7e04a,0x3a540a93,0x3a430701,0xba0c8877,0xba9a63e3,0xba297296,0xb9e26446,0xb9bf826d,0x39853f9e,0x389709fb,0x392256be,0x388eb5e4,0x380cef6e,0x3835172e,0x383e4843,0x36e9beda,0x381a4145,0xb42f1a6a,0xba1ba8df,0xb98ea71f,0x3b0056ac,0x3b468de4,0x3bb685e8,0x3be382f7,0x3c0b6a0d, +0x3baef974,0x3b7ef2d0,0x3ba2cad3,0x3b39ce35,0x3afbe049,0x3b0aecec,0x3b30c1e0,0x3ba66f70,0x3beff5b4,0x3bf793dc,0x3bb2302a,0x3b13d4b6,0xb97ee4fa,0xba679c1b,0xbaa4ebbc,0xbae0f7d8,0x39586fdf,0x3a2bf3f2,0x38a4ef55,0xb7cab153,0xb8a58fc9,0xb85dea71,0xb8427e1c,0xb7743ca6,0xb7d04f31, +0xb78edec6,0xb7531a63,0xb77fef5e,0x37a9d996,0x39b11fa7,0x3a8845a5,0x3a33f1ba,0x3b291efc,0x3afa248a,0x3a66cf0a,0xba3ea26c,0xbb474633,0xbb810946,0xbb08a152,0xb9702d59,0x3b183a37,0x3b9f5035,0x3a8a74b3,0xbb2be538,0xbb9fcd4d,0xbb622660,0xba5b6c39,0x3af2c89e,0x3ae5cc68,0x3a99f86b, +0xba0cb4f1,0xb9d13fa0,0x37570785,0xb93e272d,0xb8b16f55,0x37e9bb94,0x3813374c,0x380d099a,0x37d374a4,0x374507b1,0x379de8c3,0x370c813a,0x37a2c5b0,0x37884b11,0xb8847436,0x38a4cd15,0x3a458de8,0x3bad3590,0x3bde5319,0x3b8e69f3,0x3af22c83,0x398f2e3d,0x3bfaf024,0x3c2cdbcd,0x3c07fbdc, +0x3bed4b18,0x3b18e604,0xbb813648,0x3a3929f9,0x3ba78c63,0x3c15b769,0x3bd81d56,0x3b73db51,0x3aa4d752,0x3a6e6c0e,0x3aa5c158,0x3ae145cb,0x3a549ba7,0x39bb3ba0,0x389227a0,0x3841e9c4,0xb7f0a4ee,0xb7b35141,0xb7fbada5,0xb792a3e3,0xb7abce97,0xb6f6ddac,0xb82e542e,0x38137fe6,0xb9244dbc, +0x39adcc75,0xba26e8fa,0x3a58c045,0xbba469e8,0xbc812cf9,0xbba9dce0,0x393148cf,0x3a3376c4,0xbab5c1c0,0xbb3e69b6,0xbb541ae6,0x3b83d8aa,0x3bce042a,0x3b2acd90,0x3a28d6e3,0xbaeb9613,0xbb06a4ac,0xbb08c9c1,0xbaa581b8,0xba202421,0xb967f7ed,0xb9a6c40a,0xb9aed797,0xba0a06c8,0xb9ea9b7d, +0xb95e423d,0x38857d9e,0x36b02bbc,0x382b5b17,0x380319b6,0x38053317,0x37afce93,0x381e4c56,0x379fb33c,0x38889aa5,0xb7511089,0x39382dd5,0xba7faea2,0xba284484,0x3b4b1a33,0x3b968e89,0x3b1f93c8,0xb9907fa1,0xb8df322d,0x3821b97b,0x3a673c9c,0x3a976b11,0xba07b242,0xbaab6de7,0xba766c41, +0xba43d79d,0xb8dd3f17,0x3a252061,0x3a3d612d,0x3a8667a6,0x3aea2953,0x3b0a101d,0x3b2e8e3b,0x3b3f4311,0x3b1639ad,0x3ab1ce40,0x3917828e,0xb8c2228d,0xb8132c94,0xb8815624,0xb888c0a0,0xb85279a5,0xb8616f61,0xb84e94de,0xb8b8ed6a,0xb82854c4,0xb918311b,0xb8a35144,0x3a93e87b,0x3b25ea64, +0x3a35ceb2,0x3b38cea3,0x3b502dce,0x3b481041,0x3b258697,0x3ae7e3a5,0x3a73c408,0x39f82a16,0xba72e82f,0xbac83ce0,0xbaf18959,0xbac96c1d,0xbac85b1f,0xbaf0bb6d,0xba9d62a3,0xba314589,0xb9aed30c,0x3811d268,0x398588a8,0x3973481a,0x3a215fee,0x3a54b6ad,0x39fff961,0x391b8e26,0x38a3ac97, +0x391406a1,0x390b982a,0x38e588fa,0x38d6ab82,0x38fc524e,0x39196e7a,0x393e76e2,0x39170f19,0x39fa5297,0x3a18844b,0x3ab47e8c,0xbaa48d79,0xba881f88,0xba29a400,0xba426bf4,0xba05139c,0xb992bd83,0xb8fa98a8,0xb7434ee3,0x39016e0d,0x397f27ba,0x398f0c95,0x3a02bbc5,0x3a3e24f7,0x3a7a104f, +0x3a6d53a6,0x3a4fc9df,0x3a38b692,0x3a53a526,0x3a80968b,0x3a8b2ef2,0x3a117755,0x3990fdb5,0x38d2384a,0xb8f10a44,0xb9a66871,0xb9affe91,0xb9b2314c,0xb97e0735,0xb970cdd0,0xb980cc41,0xb9b30028,0xb9ceffd8,0xba39ad5a,0xba8901ef,0xbac36777,0xbaa475c2,0xbaca71f1,0xba8706d2,0xba2fa9b7, +0xb976e8ff,0x390f9e07,0x39e90a4f,0x3a53baf4,0x3a9d4d95,0x3aa91a48,0x3ab4f449,0x3abfec5d,0x3ac2ee89,0x3ac610dd,0x3ad63083,0x3ad1a377,0x3ad75604,0x3ad886ec,0x3ada8481,0x3ad12053,0x3ae55627,0x3ac20de8,0x3ad30273,0x3ac59c04,0x3a970a13,0x3a84d84c,0x3a69aff9,0x3a2dadb5,0x39e0913a, +0x391d8528,0x37ccdb2b,0xb93346bc,0xb9bf21d0,0xb9eaadef,0xba217a6f,0xba235ec9,0xba347263,0x3a6f6081,0x3a74c90b,0x3a813640,0x3a919c5e,0x3a9e82e5,0x3aafa538,0x3abca202,0x3acd2d83,0x3acc0af4,0x3ad1a600,0x3ad84110,0x3ae181ec,0x3ae96b57,0x3aefde8f,0x3aee0141,0x3aecb005,0x3aea7e69, +0x3aea1d01,0x3ae589d3,0x3ae83a03,0x3ae24e72,0x3aae1ffe,0x3a33f58c,0x3add9ef3,0x3aa263ea,0x3a1d7aa8,0x3a16345f,0x3a119faf,0x3a0623c0,0x39ea37aa,0x39c4b88a,0x39914c3b,0x3a327b1b,0x3a8bd1cb,0xb762532c,0x3a033e28,0x3b026539,0xbab8cddd,0xba012fe0,0xbac4bcbb,0xba85e8c6,0xba9149cd, +0xba9dc624,0xba9006ea,0xba936591,0xba936366,0xbaafd56e,0xbab6c1c9,0xbabb47c4,0xba9ef14d,0xba9ed939,0xbab39055,0xbacdbf0f,0xbad22f60,0xbaba1740,0xbab7f525,0xbaa86045,0xbae25e65,0xba2223c0,0x393df4e4,0x3a9dfc33,0xba8a45c6,0xb78ae283,0x3a92ce8c,0x3a4f9bfd,0x3a4090a0,0x3a6abc7e, +0x3a7b1f66,0x3a87e9e5,0x3a884edb,0x391f3f3b,0xba86179f,0x3a855300,0x39b64813,0x3a29c9af,0xbaa796c3,0xba87c565,0xba870b8d,0xbab3b3cb,0xba827978,0xba71b98a,0xba5b7833,0xbac5033e,0xbaded052,0xbaea65c9,0xba9ccf4c,0xbab96bd3,0xbb0bfcf2,0xbb3bc48c,0xbb3cff37,0xbb0d0ffe,0xbae94d64, +0xbad1c6f7,0xbadb3157,0x39607996,0xba8327b6,0xba00ec9d,0xba964d06,0xba9ba32a,0xba4ffda9,0xbad2b077,0xbaca3448,0xba570b11,0xba442278,0xba3a259a,0xb98aa4ac,0xba4185ea,0xba09da29,0xba1168f9,0xba93db3f,0xb89a7419,0xba03d6bd,0xba21744a,0xb978264f,0xba85977e,0xb96f1cae,0xb9921568, +0xb8709ec5,0xbac302c7,0xbafd1202,0xbb1666e9,0xba59a17f,0xba5e64c7,0xbaf3ca2a,0xbb516818,0xbb5f84b9,0xbb10ae56,0xbafb4756,0xbaf643e3,0xbadb86fe,0xba51ea82,0xba8149f0,0xb9b789d9,0xbab204e5,0xba22a893,0x38eb37bc,0xb82fb16f,0x39136abd,0x390fce41,0x38c4dc07,0x38899305,0x39037211, +0xb8e2d5c7,0xb9f657bd,0xb9ff9527,0xba33f78c,0xb92aba44,0xba56b08c,0xba3561b1,0xba5d771b,0xbb05bd3b,0xba088db7,0x398e285f,0x3a4ef133,0xbabc8bc8,0xbb24f48c,0xbb518d11,0xba6a5f57,0xbacf6e29,0xbb87cd8a,0xbbdd247c,0xbbd78029,0xbb82042e,0xbb23c3f2,0xbb044920,0xbafc7e79,0xba571a60, +0xba973c08,0xb94fccac,0xb96f221b,0x39a56d95,0xb79d241a,0x3830bbf2,0x35a2199b,0xb82fe3c1,0xb78eeb9d,0xb7a76d30,0xb825f4f5,0x386f1b63,0x374d551e,0xba0a712c,0xba47dc5a,0x3b01e38f,0x3a1913f0,0x3ac7465b,0x3b471d9e,0x3bad89b8,0x3afc4fb1,0x397e266d,0x39c65875,0xba7ca8d3,0xba9cda10, +0xba2084a0,0xb85459aa,0x3b28251d,0x3bb8aff7,0x3bd62525,0x3b996c96,0x39b8bfb3,0xbb02a786,0xbb58fe01,0xbb1bbbe1,0xba70ab3e,0xb94c0406,0x3a161523,0xb8495fea,0xb8068b54,0xb8661299,0x3566635f,0xb7a0b3df,0x379d4785,0x35f46f90,0x37480e97,0x36a1bec4,0xb7a74e5c,0x3799a099,0x39448bae, +0x3a51ca66,0x3a3138f5,0x3a7015d8,0x3a7904b8,0x3a70915a,0x394cbb35,0xbb34a2e9,0xbb7e99ae,0xbb14d56a,0xba4c94e7,0x3acd4c7c,0x3b865391,0x3ad9f287,0xbad65a19,0xbb9c3967,0xbb9fd659,0xbb6fbd97,0xbb139d46,0xba716d2a,0xba5b2971,0xba5698ea,0x39279585,0x360c5a28,0xb9134936,0xb85a272a, +0x3855da6f,0x37629f5d,0x376555e3,0x36cf006c,0xb636fe60,0xb554ad40,0xb5bb1226,0xb6072c3e,0x381bdf2c,0xb8ad1762,0x38c4aeeb,0x392b71da,0x3baecb13,0x3bcd2fc7,0x3b77dc00,0xb81b2f73,0xbba6a89a,0x3a9e691a,0x3b68454c,0x3ad74b6e,0x3b10712c,0xba91077b,0xbbd75a30,0xbb8b7441,0xba4dfe2c, +0x3b75b4c9,0x3b465413,0x3b0c1abc,0x3a9f5ae8,0x3a7511db,0x39e30565,0x3a35d47b,0x3983cf43,0xb8c978ac,0x39409fcf,0xb81e8726,0xb6bd28ec,0xb7d97c82,0xb71ed6fe,0xb716440e,0xb68749d7,0x35ec3bd2,0xb790b64a,0x37ad6096,0xb8d1bcf1,0x394205f0,0xb9aa2268,0x3a2b0d8a,0xbb9b7b90,0xbc7f9a47, +0xbbdfe4fd,0xbb3cb453,0xbbb806e7,0xbbc0fbb7,0xbbd423b6,0xbbc9af40,0x3b08797e,0x3ba741ef,0x3b277b64,0xb8330df8,0xbb2dceb3,0xbb3e14f3,0xbb6ca525,0xbb5f4f09,0xbb4b97df,0xbb201bf4,0xbb06ba68,0xba974f71,0xb9cae162,0xba24a97c,0xb7c20247,0x37b773eb,0x37cf7894,0x37d7701f,0x37b3783a, +0x376c9828,0x3712f84e,0x3707ceec,0x3783d697,0x37ac5c22,0x38329c2c,0x385aad30,0xb9aee3c5,0xb9b847e1,0x3b2dc2be,0x3ab1214a,0xbb39cc81,0xbb97e8b4,0xbba3b2a6,0xbb8b3d66,0xbb4c512f,0xbb12b1ad,0xbb40ad67,0xbb6388d6,0xbb5b659d,0xbb2cd180,0xbae45ac5,0xba7994be,0xb9377f41,0x3a1b1014, +0x3ab60fa4,0x3b057f65,0x3b0eb32b,0x3b0e4fae,0x3b059d8a,0x3a4df4b5,0xb6809ece,0xb89ba5d5,0xb7fa6980,0xb86f1052,0xb8134cab,0xb80917dd,0xb75971a0,0xb7d2c655,0xb7912a2d,0xb8ac5354,0x371f4b54,0xb9bd4df4,0x3a932f1f,0x3a5d5f38,0x3b2a1c66,0x3b0fd5f6,0x3aa151f3,0x3ad71af9,0x3a56d77a, +0xb870f95e,0xbaa0348a,0xbb0ed3ff,0xbb0e2b88,0xbb02bfa5,0xbb02d907,0xbb07fb38,0xbb174f8a,0xbb30f976,0xbb0880fc,0xbad42fe3,0xbaa337fb,0xba467903,0xb933e4ce,0x3a11d360,0x3a51dea3,0x3a3b0128,0x39d5e7c1,0x3897cf8e,0x38d73546,0x38df06dd,0x3898a358,0x38820b93,0x37cc20d5,0x380bd293, +0x38867f4c,0x38c5cfe5,0x393bf397,0x3978b3f2,0x3a372580,0x3a77ac26,0xbaa90c2c,0xbac57b3d,0xbacc40aa,0xbacd8f12,0xbacb30e4,0xbabdf55f,0xbabb5e12,0xbad587e4,0xbab28049,0xbaa4e145,0xba8b023b,0xba32db78,0xb981cfec,0x395261e8,0x393a349a,0x391a8add,0x38ca5a82,0x39304d93,0x3866a7be, +0x39b1283b,0x39b1af38,0x385e4500,0xb8bccfdc,0xb99c1d78,0xb9993d6e,0xb96cabdc,0xb907971d,0xb8c9a5c9,0x36db07e9,0xb7bc3913,0xb8b6d8e7,0xb936571b,0xba02a4c2,0xba50b6d7,0xba80e36b,0xba9873f5,0xba301b70,0xbad22f03,0xbab36663,0xba95b2eb,0xba805c56,0xba6ff15e,0xba4c63c7,0xba1e30f2, +0xb972db43,0x39068226,0x39e973d8,0x3a3d91ba,0x3a7f0a25,0x3aae9e90,0x3aa5e69d,0x3aaa7725,0x3aab07d6,0x3aaf2b19,0x3ab32d55,0x3aad689f,0x3ad4c5e2,0x3a815e96,0x3a4dea5f,0x3a3f6b1d,0x3a0d9bdf,0x38672a2b,0xb933c7ef,0xb9acf131,0xb9d8009a,0xba33066c,0xba681ef1,0xba6024cc,0xba79ebd2, +0xba4dd4d6,0xba739545,0xbaad48d0,0x39d6b49e,0xb96cb120,0x3816fd5b,0x3791cbb1,0x38876c3d,0x39130ce9,0x39466120,0x393944b2,0x399bc4b1,0x39d12bf3,0x3a098da1,0x3a2e200d,0x3a5044ea,0x3a7a3c86,0x3a714fa8,0x3a720191,0x3a70c167,0x3a6a609d,0x3a700dc5,0x3a4ca253,0x3a98dea7,0x3ad38121, +0x3b13a4fb,0x3a58b108,0x3ac1bd12,0x3b0fe879,0x3b0a334c,0x3b007db1,0x3aef1476,0x3ae3aac5,0x3ad7aaa8,0x3ac166f7,0x3a760add,0x39615ae6,0x3ac05229,0x3a73ce58,0x3a44a666,0xb917dd57,0xba7203d6,0x39c20df4,0x37835582,0x387d53d2,0xb953f44b,0x38b7cef7,0x39216e78,0x39978f24,0x37f86d3c, +0xb83af178,0xb929a32c,0x38ae935c,0x38a5bd47,0xb8ba21ec,0xb9764672,0xb98b8fe9,0xb90bb82c,0xb8dc6e16,0xb937eb24,0x388eca68,0xba8cd931,0xbad81d03,0xbae6fa3d,0xba64cd1c,0xbad7fefe,0xbace06a9,0xbafe3890,0xbafbc4f4,0xbad6dd3a,0xbadcb691,0xbadbc53f,0xbac57a01,0xbabb78ea,0xba1f1be3, +0xbaf16a12,0xbad8fdc4,0xbad4147a,0x390273c7,0x39607780,0xb823e05b,0xba20f904,0x38955648,0x39c481af,0x3a56a43c,0x3924246e,0xb881586e,0xb9b42d2f,0x39bffad8,0x39733017,0xb9f922b4,0xba896f2b,0xba95299f,0xba168354,0xb9cc7a8d,0xb901487b,0xba069abd,0xbadb68fb,0xba198097,0xb9ec8d34, +0xba979c9d,0xbaadd46c,0xb9b68038,0xba7b67cc,0xba69fcb2,0xba0278c6,0xb9440963,0x38a47130,0x38843ea9,0xb9b9368c,0xba640339,0xba5deb73,0xb998cebf,0xba223140,0x39d68cc9,0x3a744afe,0x3a1b6582,0xb9ee0435,0x3a4ba5b0,0x3a9421f9,0x3b0f739e,0x3a2cd222,0x393c8af5,0xba186824,0x3a7d5180, +0x3a7bad1c,0xb8eae790,0xba8e30a0,0xbab008dd,0xb9c5eddc,0xb9bec437,0x37c3aa36,0xba954253,0xbaa9cc05,0xba6b3e36,0xb9fa6443,0xba748a9f,0xb9f5d289,0x39197c55,0x376b57df,0x39655dce,0x387bda37,0x38a4b343,0xb8bd34b3,0x38c5eef1,0xb923543d,0xb9ef6fe8,0xba5e1408,0xba0197d6,0xba451934, +0x39450134,0x3a3371de,0xb9dc21e8,0xbb062a74,0xb9448ec2,0x3a9b9dde,0x3b46eee7,0x3a5e0075,0xb973454b,0xbab3828b,0x3a95197f,0x3a49debc,0xbade98b3,0xbb7ae158,0xbb7f3bca,0xbaf07a60,0xba64b065,0xb92b815f,0xbaa43b7a,0xbac61109,0xba08e977,0xb9b62c72,0x38afbf50,0x397d15e8,0xb7c9bd1e, +0xb6811f9e,0xb86fc074,0xb811fc6e,0xb7717107,0x374ba199,0xb7a64af7,0x388f5127,0x38ccb8a0,0xb9b1b9f2,0xb9db4824,0x3a0cb75d,0x3adb45ca,0x3b7add4d,0x3b9e497f,0x3beb3e1d,0x3b932d1d,0x3b497c71,0x3b5964d4,0x3b240984,0x3b18ccfe,0x3b348d44,0x3b401b59,0x3b98db97,0x3bd71fe5,0x3bfd46cd, +0x3bccd7f7,0x3b53f0fa,0x3a0997a0,0xb9ec9e02,0xbabf7f72,0xbac298bf,0x3a061012,0x396f0f5a,0xb7eaa51b,0xb8c8303d,0xb72f3611,0x3700e382,0x37962a65,0x37939327,0x3694d5ed,0xb654de3f,0x37062f79,0xb84f44c2,0x37b3e8d4,0xb7eab177,0x396e68c4,0x39d5b478,0x3b0da332,0x3b36d731,0x3afc2ac7, +0x3a017fda,0xbb14ba2a,0xbb69872b,0xbb2cecb0,0xba1a2785,0x3ae06aed,0x3b700b28,0x3ac974cb,0xbab6faa6,0xbb893055,0xbb8013a1,0xbb1c61eb,0xb9c838ed,0x38ea40b8,0x3a037c4a,0xb9d49d1b,0xb8457ddf,0x38982889,0xb95760c2,0x38504492,0x37f9d1f6,0x379f8e77,0xb6d112bc,0xb698d1de,0xb72a14ed, +0x36374b29,0xb6dd0edd,0x378a4947,0x340941b7,0x383a1c02,0xb8e26361,0x3a3b77a4,0x3b99477f,0x3bc2d0d1,0x3b5995d9,0x3947f806,0xbb4c80ec,0x3b5be57f,0x3bd5bc49,0x3ba7b31d,0x3bc5d7d9,0x3b1564da,0xbb7a771f,0xbaad18d7,0x3b047f1b,0x3bc816e1,0x3bbbd117,0x3b8884f3,0x3af6c6fa,0x3ac5977c, +0x3ac88f98,0x3a8e39dc,0x38923d49,0x38e879d4,0x384d7c39,0xb7350894,0xb805178c,0xb73949d4,0xb6732fdc,0x3654a134,0xb4aa482e,0x36ae0006,0xb772b28c,0x37a5dd04,0xb8b750f6,0x39092a1b,0xb9a5508b,0x3a023b46,0xbb9f5584,0xbc77d70b,0xbb9c523f,0xb934407d,0xb9dfe966,0xbac33f35,0xbb612e8e, +0xbba7afdb,0x3aaf740f,0x3b8c9550,0x3b4e68fd,0x3990d3f8,0xbb1341d1,0xbb1f06c9,0xbb32fe0d,0xbb13526e,0xbae0102d,0xbaae6dfe,0xba9efc94,0xbaa23095,0xba928f5b,0xb9f63652,0x37affc7d,0x37e8eb14,0x37ede750,0x37b34c91,0x36f293c5,0x364187eb,0x35b69adc,0x35c8bd92,0x36cf5eab,0x378153b3, +0x381231a8,0x386a8253,0xb8808081,0x38137a7f,0xba387611,0xba29fecf,0xb9c0bfb0,0xbadef6ad,0xbb06a576,0xbad145b6,0xb9fe1a6c,0x39b3ca42,0xba675267,0xbae921ff,0xbafbfb6b,0xbace268d,0xba63c202,0xb9c7917b,0x3846ce99,0x3a1c3a5a,0x3ac8431e,0x3aeba5bf,0x3b114b08,0x3b146f2a,0x3abe9a92, +0x3a2cb15f,0xb8c7ce19,0xb84f5d46,0xb8564128,0xb824827f,0xb7839435,0xb7201c4b,0xb6281ac5,0xb718069b,0x35ddb0c7,0xb8836760,0x36e4ac6a,0xb998bb53,0x39e75647,0x37de30cb,0x3a8226cd,0x3b134104,0x3b2a4354,0x3b24cfbd,0x3b0783da,0x3ac30405,0x3a23408f,0x3866fb2b,0xba93e79c,0xbac972dc, +0xbae4d694,0xbad32799,0xbadfd98a,0xbb030f13,0xbaa9a0f6,0xba45ab64,0xb9aa86b1,0x3911be20,0x3a04a9bf,0x3a29c802,0x3a58928b,0x3a43d288,0x394b55b7,0x38db408d,0x38f41ec5,0x389b57b4,0x3809cd77,0x3774d69c,0x3720ac23,0xb5df484f,0x37c72fd9,0x385a4060,0x39248b17,0x39518d83,0x3a1467df, +0x3a8cdb88,0xba9f509f,0xba5a6ebf,0xb9e36951,0xba2b233b,0xb9fed435,0xb9e4bf11,0xb9b7d6c9,0xb9b0e55b,0xb99bb6b9,0xb9afa023,0xb9d82bfe,0xb98d6f7a,0xb8c00083,0x383e9bf6,0x38ff0d5d,0x391029a6,0x394b39c2,0x39949923,0x3a023500,0x3a062309,0xb881311d,0xb928a756,0xb96d33d5,0xb99e7f81, +0xb9a735c9,0xb8f3f777,0xb8868a83,0x3648a0b0,0x369feb03,0x3870048e,0xb7a96527,0xb85b2c12,0xb9bb4608,0xba2ef208,0xba981dae,0xba8813eb,0xbadd151c,0xba9f120f,0xba6170d5,0xba1173b2,0xb979ee17,0xb7e4aff6,0x39735d0c,0x3a03ffeb,0x3a2f835e,0x3a5fea3c,0x3a855be8,0x3a915c51,0x3a98d6cd, +0x3aa6d2ac,0x3aa893fb,0x3ab0320c,0x3ab6e02b,0x3abb3d6f,0x3abd62ee,0x3acf3db6,0x3a9358bf,0x3a91ee0a,0x3a4e4186,0x3a008d87,0x396e42b7,0x380c596b,0xb8d7c688,0xb98cd5b1,0xb9ee4fb6,0xba06b31e,0xba17f65c,0xba486c38,0xba58b0a7,0xba832a90,0xba898529,0xba7a63f1,0x38a2ab77,0x39f71717, +0x39f14fa6,0x3a0e835d,0x3a20dd84,0x3a3bcadb,0x3a51c025,0x3a683799,0x3a702ced,0x3a7b8949,0x3a84c301,0x3a8e3976,0x3a9857d5,0x3aa231fd,0x3aa1caac,0x3aa1f324,0x3aa171b8,0x3aa2873d,0x3a9f56b8,0x3aabb725,0x3a6801b5,0x3a0b4eed,0x39e16264,0x3a4617d3,0x39b52e21,0x39824a5b,0x3945a767, +0x39099ea8,0x38b4ca48,0xb6dc7af5,0xb8ab5a23,0xb910f816,0xb8d66f54,0x39748dc3,0xb9649ee6,0xb9742907,0x3aa05f96,0xba3ad079,0x39651aa4,0xba4fdd88,0xb9f1316a,0xb9f49e64,0xba2294c7,0xb9cfe13f,0xb9bc77b9,0xb98f4687,0xba0c8b8c,0xba261d0f,0xba585236,0xba047494,0xb9ff810c,0xba2817f4, +0xba574468,0xba64caae,0xba4dd234,0xba3bffe5,0xba318ee2,0xba7c8c41,0x38bb680d,0x39b01e88,0x38fe9277,0xb92ff86b,0x397a0388,0x3943662a,0xb88acc68,0xb87bda04,0x39370d57,0x39835d5a,0x39b23a5c,0x39e66a44,0x39c3694f,0xb91fadc9,0x3889c176,0x39fe693d,0x39e8d63e,0xb9f1c3fc,0xb9f17f1c, +0xb9c0eab4,0xba4f5d27,0xb9298cd2,0x38abe953,0x39b690bf,0xb9c584c1,0xba3af86a,0xba998704,0xb9b1f7f8,0xb9ec3d02,0xba95d425,0xbae98ab2,0xbaf69041,0xbabc5a29,0xba8526b7,0xba7390dc,0xba606678,0x383cc2c6,0xba0750b7,0xb8ac3888,0xba5c9362,0xba632612,0xb9a7eb3b,0xba509ee2,0xba255cdb, +0xb9405909,0xb91e55d4,0xb9403a5a,0x3967ccb4,0xb9bcc4a0,0xb9bd0c66,0xb91ca900,0xba01d156,0x39cafc27,0xb881b88f,0xb8a0aba9,0x39ad9bec,0xba196645,0x3a312da4,0x3a80754c,0x3ad1bd6b,0x38a9bafb,0xba0ec3c5,0xbadaf05d,0x394fd0d8,0x399256ad,0xba29c2af,0xbaf01f1a,0xbb0c98e8,0xbabe00de, +0xba8d4779,0xba8aadef,0xba8d0400,0xb9cb0c45,0xba239ac3,0xb99b5e8c,0xba20fea7,0xb8b5b1fb,0x3905a5cf,0x38ba64c5,0x390cce34,0x384b07ce,0x38196efa,0x3711101d,0x387c90c6,0x37417bcd,0xb98f5bc5,0xb99e8e51,0xb96e892b,0x39051b3e,0xb9a98e87,0xb97190b1,0xb980c270,0xbad5b953,0x39c91b2c, +0x3ae35807,0x3b3a81e1,0x3a143363,0xba7f7fa8,0xbb313283,0x39545702,0x38a73e0a,0xbb1483ca,0xbb95f983,0xbb9daa2f,0xbb4f01de,0xbae0c22c,0xbab54f2f,0xbabb9a12,0xba3c5720,0xba4cd77f,0xb84f4c79,0x38ab23d0,0x3907e10a,0xb88b5ea8,0xb7809dee,0xb8359461,0xb7c0e530,0xb720d47a,0xb6366a87, +0xb80b0084,0x3712e94a,0x38d69126,0xb961d8df,0xb9bfbf8e,0x3afc8356,0x3ac1611a,0x3ad557d5,0x3b47094c,0x3bb6434c,0x3b5f3b31,0x3b10d130,0x3afcb98a,0x3a8905bb,0x3a43de7c,0x3a604b52,0x3a4ac378,0x3b186a41,0x3b8ee0a0,0x3bcfc9fd,0x3baf0513,0x3ac461cd,0xb95a1f5b,0xbab5b082,0xba75d408, +0xb9310f51,0x39596b37,0x39544539,0xb8cbad48,0xb7f85ca7,0x36dbfbac,0x3786131d,0x374ca320,0x375fd196,0x36556a9b,0x360316c1,0x37980e95,0xb79bfd97,0xb72d0d5d,0x37d731ff,0x3a21544f,0x3aaaf5ea,0x3a9e583e,0x3a734800,0x3accddd1,0x3a6b2b4a,0xba8ca683,0xbb0d719f,0xbaebcc99,0xb9c480a8, +0x3aa98157,0x3b3b0939,0x3ae80f63,0xba2722b3,0xbb670ea7,0xbb8b449e,0xbb5e997c,0xbaded392,0xba0ee3e9,0xb9b4fe69,0xb8820801,0x39ef143d,0x37d45d16,0xb8e04dbb,0x38229ec8,0x37c8ce25,0xb66e63aa,0xb6a29b82,0xb6ccdc2f,0xb6da836a,0xb5850d1b,0xb6a2df03,0xb664bbd3,0x36b3beeb,0x377cc260, +0xb848425d,0x394c1058,0x3b897f19,0x3ba91250,0x3b4700b4,0x394c0e11,0xbb4053fb,0x3b25f624,0x3ba882e2,0x3b6f64ab,0x3b76aea3,0x39f5e3a3,0xbb92e7ee,0xbb4d15bd,0xb9545684,0x3b816f23,0x3b9238e4,0x3b78b6c8,0x3b056de1,0x3ad859ff,0x3a5a3962,0x3a47f258,0x3958ab36,0xb8bb0c7c,0x38e59e86, +0xb8827d5e,0x34eb078a,0xb739eab9,0x368def5a,0x359c6cd8,0x3650d68a,0x369297f1,0xb6218217,0x378c4be0,0xb82dffcc,0x38823f5f,0xb93227b9,0x399c24ed,0xbb8ff0c2,0xbc5671ae,0xbb769b95,0x3a462289,0x39028b1c,0xba2148db,0xbb373aae,0xbbbc3ca9,0x3a7bb178,0x3b90723b,0x3b97f605,0x3ab57338, +0xbaa656d9,0xbaf23a56,0xbb1f07ea,0xbb19b9fd,0xbb15521e,0xbaf867de,0xbafc3cc4,0xbac3856d,0xba54d134,0xb9d8c232,0x38f855d8,0xb6bfbe7c,0x380cc13d,0x3689c08f,0x36c6bc0e,0xb5d3c10b,0xb5e12d99,0xb6b97b12,0xb6003461,0xb705dabc,0x37b3643b,0x379c4e27,0x38012869,0x38a28cf1,0xba3c964f, +0xba91b6cf,0xb98a5772,0xba211c7c,0xbaf38de9,0xba99615f,0xb9eedf3e,0xb8e96f92,0xba702758,0xbadb2249,0xbabd63ac,0xba962831,0xba09ed5a,0xb954cd08,0x3942ae6d,0x3a34e52f,0x3ab1c364,0x3aefc21f,0x3b004541,0x3b04961e,0x3acc6f27,0x39d594e9,0xb928ddaa,0xb805ff8b,0xb820d237,0xb7b41f34, +0xb6efc3e4,0xb68d620e,0x371085b9,0x3505a287,0x37d3c7bc,0xb7eb0cac,0x385d7542,0xb972cb1f,0x3988117f,0xb9a46841,0x3b1aa71d,0x3b3f4e5a,0x3b0c857e,0x3b114461,0x3ab4d335,0x3a222516,0xb9d67eb8,0xba628895,0xbad8f1bb,0xbaf25c61,0xbb013d5c,0xbae7400d,0xbada1e4d,0xbae6ddde,0xba876027, +0xba2500c5,0xba060411,0xb8889522,0x39ba7fea,0x3a64864c,0x3a7d7f32,0x3a436630,0x3983b651,0x38991d98,0x38b9718f,0x380f3e5f,0x37953d77,0x36068e1b,0xb743d09f,0xb7cdb0a3,0xb77b7e58,0xb83b254f,0x38c33d56,0x37dc9be7,0x3a0b4e48,0x3aa0acb0,0xba04ce18,0xba2abffa,0xba407457,0xba381eeb, +0xba36518b,0xba16d8a3,0xba0be1b6,0xba24f66b,0xba0aa96a,0xba107654,0xba19a896,0xba1a0d34,0xba0f3ea7,0xba035b27,0xb9da7c74,0xb9b121fb,0xb991853d,0xb8c3cf83,0xb8d8b49a,0x39969cdb,0x3933227e,0xb913cce9,0xb94ef183,0xb99b274d,0xb93dc321,0xb84807d3,0xb744087a,0x3794d354,0x385c431c, +0x38af15da,0x38b380af,0x390e458d,0xb8e8243e,0xb98f4640,0xb9ca2e61,0xb9ff016f,0xba660858,0xba93d3cf,0xba794cea,0xba3b6f67,0xba11ae62,0xb9f9c68d,0xb9b8095c,0xb93368d7,0xb782c485,0x3921789a,0x39ad8dc9,0x39f998a9,0x3a26fcaf,0x3a63655b,0x3a67b0f9,0x3a74d4c5,0x3a7da281,0x3a85ff93, +0x3a868f5e,0x3a92cb28,0x3ab04636,0x3a4877c5,0x3a1ea894,0x39bc3104,0x392a0191,0xb908b2d3,0xb98289d6,0xb997fb21,0xb9c3d913,0xba091442,0xba3c3470,0xba489be3,0xba6496fe,0xba54ece1,0xba66627a,0xba8b31e3,0x39f0e8b4,0xb90bb786,0x37770f1c,0x380846be,0x389600e2,0x391b8359,0x3951efac, +0x396c6cfb,0x398a13c6,0x39a319a7,0x39c122a8,0x39ea4d6c,0x3a07aac1,0x3a1cffd3,0x3a1c6bf3,0x3a211587,0x3a23cba2,0x3a262203,0x3a2e5822,0x3a106222,0x3a8d24bf,0x3aac9f6f,0x3aaf5392,0x3a570bba,0x3a9acec9,0x3a96b923,0x3a8e1d50,0x3a7d8e48,0x3a6393bc,0x3a5377cf,0x3a45b9b1,0x3a293b39, +0x3a2ab2f6,0x399b66d2,0x3a201ff5,0x3a2ef53a,0x3a1446da,0xba495a60,0xba9e2bb7,0xba017b13,0xba0933ef,0xba0fded7,0xba3a1b8b,0xba227b16,0xba1a10d1,0xb9ca293b,0xba2c80d9,0xba41c1f8,0xba72bfb1,0xba1f060f,0xba1adebe,0xba44b4b6,0xba64a5c7,0xba6eafe8,0xba61a37a,0xba4c4671,0xba421570, +0xba337110,0xbaa963cc,0xbaa4167c,0xb9fe6718,0xba9d4bcc,0xbaa67d69,0xba0e4fac,0xba67af14,0xba6f8bfd,0xba2d74cd,0xba31f835,0xba24a8e2,0xb9e09153,0xba946196,0xba901eed,0xba18c913,0xbaa28fb3,0xba7f4387,0xba418be9,0xb9b9712f,0xba1551db,0xba7a9300,0xba4cffd6,0xba21f80a,0xb8384a8e, +0xba41e83a,0xba8198f3,0xbabbb08f,0xba0a037c,0xba10a6b3,0xbaa04457,0xbae2cfd9,0xbafa4aab,0xbad6080a,0xbaab1957,0xba745cd0,0xba9a85fe,0xba8731f6,0xba4094a8,0xba4a0853,0xba949db7,0xba8b98ab,0xb9f2a0ec,0xba3cb082,0xba29e47f,0xb9c5d52e,0xb9a0eda2,0xb931f3af,0xb5fe6339,0xb9ff7c4d, +0xba5fc20c,0xba599f98,0xba3b6543,0xba4ab1a9,0xb9eb4280,0x39581ef9,0xb86551c3,0xba3f81a3,0xb9dbe487,0xb9ba318a,0x3a7e81a6,0xba1d142b,0xba890dd0,0xbb0bb738,0xb99abd1b,0xb9323928,0xba98540f,0xbb023a03,0xbb16e429,0xbaedd05f,0xbab93c4e,0xba7929de,0xbabc5c5a,0xba984f52,0xba58f5e2, +0xb9ffe0f3,0xb9aa413d,0x388838eb,0x39338214,0x391af974,0x39852694,0x390756e5,0x38f6826f,0x37be3c8a,0x38a78589,0x37bdc811,0xb977b22c,0xba22b37c,0xba267ec9,0xba3b6cf0,0xba1aced7,0x397606ff,0xba0a14a3,0xbadb3ef3,0xbaab58cf,0xb9ff223d,0x3acfeacc,0xba25ef5b,0xbaf6857b,0xbb5cf260, +0xb9e4d54e,0xb9b9b554,0xbb2dbd9b,0xbb973c95,0xbba69217,0xbb80f671,0xbb25604f,0xbab9fc00,0xbae48eee,0xba9bcfbe,0xb9dbd689,0xb8a34a7a,0x393a28df,0x370c4bb7,0xb88a3dd1,0xb885a520,0xb8cfa12f,0xb88a6654,0xb83543ba,0xb7921d15,0xb8150d1c,0x36918313,0x390a5cda,0xb7f359e3,0xb9cd04c0, +0x3998432a,0x39b15a1d,0x3a992a42,0x3afeb445,0x3b9660a1,0x3b22942d,0x3aa261e1,0x3a2f5f8b,0x3a8425fa,0x3aa96998,0x3abc4212,0x3ab3f933,0x3b2780b4,0x3b8cacfa,0x3bc7f9aa,0x3bb087e0,0x3b2e8107,0x39ef91cd,0xba3f9fa4,0xbabfcc83,0xba371b2e,0x39be6ced,0x376b2c4c,0xb8663b55,0xb7d14c06, +0x380ec8f7,0x37f5b32b,0x383c82ea,0x380add5a,0x37af0173,0x371833c0,0x37b2e2b2,0xb7966376,0xb81a237e,0x361af938,0x38a3a4d9,0x39c067dd,0x3a730aa0,0x3b02bda8,0x3af8ff90,0x3aa17867,0xbab72f99,0xbb32a38c,0xbb22438b,0xba34565a,0x3a8cd650,0x3b1f3b00,0x3ae28e3e,0xb9cb2b84,0xbb57ff03, +0xbb8d6104,0xbb85798d,0xbb3c8520,0xbae68a35,0xba3ecab4,0xb9d9e877,0x39480a42,0x365aa7f4,0xb8b9065f,0x387ef030,0x3251b8d8,0xb709cd7d,0xb7a15b23,0xb7ab9cd9,0xb7ac80ae,0xb719a6d1,0xb7527ec2,0xb50cefd4,0xb713e469,0x3865087d,0xb894e1eb,0x39581990,0x3b588547,0x3b915972,0x3b206d0e, +0xba2840b1,0xbb9e5a4a,0xb9f93dcd,0x3b0ef5dc,0x3ae6116a,0x3b6cb114,0x3abdfc33,0xbb5690a7,0xbb3a1b80,0xba4c4f0b,0x3b334567,0x3b891ff1,0x3b860c87,0x3b259b79,0x3aff1bbc,0x3ab3e797,0x39cb40df,0xb9b7bcbb,0x380334d5,0x38068579,0xb81412f6,0xb6370c07,0x364f72d6,0x374233ba,0x37701624, +0x3764b16b,0x3753a279,0x363c9423,0x37aa30df,0xb81a7480,0x38640e15,0xb9282583,0x38b651be,0xbb80d414,0xbc3d135a,0xbb92ed59,0xbac6476a,0xbaf90905,0xbb0a0f8e,0xbb6e8bfe,0xbbb2c69b,0xba576329,0x3b1620b8,0x3b69805e,0x3a1c6575,0xbada628a,0xbb0cf16f,0xbb315837,0xbb302157,0xbb22de19, +0xbb094bc0,0xbaeadefc,0xbad9dcc9,0xba95a963,0xb94c15a1,0x38ac9193,0x33272e6e,0x37a43a25,0xb6caca7b,0xb70b3846,0xb7893b71,0xb79171ef,0xb789bf20,0xb723607f,0xb78b69fe,0x37a008c1,0xb57cc2ed,0x388cad41,0x39899cbb,0xbb1c9c88,0xbb8dbb1e,0xbb04d250,0xbae99913,0xbb2ffcf4,0xbb16cdc7, +0xbad0b757,0xba791131,0xbad18068,0xbb1b3c08,0xbb2de278,0xbb11a78e,0xbac1fc02,0xba92fa47,0xb9ad9bfd,0x39c88a9c,0x3a9f0bd4,0x3ac721fb,0x3ae0f320,0x3ad9eda0,0x3a747b26,0x3940c937,0xb90b364a,0xb72404af,0xb7fca2b4,0x36e65d65,0x375350a9,0x37d8b16b,0x381158a8,0x37c66e16,0x38103f5c, +0xb6115a6d,0x383c60bf,0xb92f622f,0x394936de,0xba697b82,0x3ad72546,0x3adce54f,0x3abb4c01,0x3ab5760e,0x3a7bff62,0x3a0a3ef0,0xb97b82ac,0xba49ce31,0xbab06040,0xbac04c78,0xbace156b,0xbad3a235,0xbae69ae2,0xbafebd66,0xbaa6ec87,0xba508fab,0xb9c733f4,0x391c7c78,0x3a20df6c,0x3a83393d, +0x3a811a80,0x3a2025d7,0x388e3ed3,0x38ce24b4,0x37f806ce,0xb6e330c8,0xb7e30638,0xb86b6b74,0xb889633b,0xb88e0d5b,0xb820336c,0xb89c2ec6,0x38471519,0x37f30809,0x39a8ec69,0x3a479951,0xba649ad7,0xba1e0de5,0xb9e4c809,0xba29b351,0xba2e2a97,0xba3b744c,0xba3a5a3a,0xba55609d,0xba4e8bac, +0xba65eb00,0xba790336,0xba63307b,0xba3fdd20,0xba2d0e5b,0xba0aab60,0xb9e1b59b,0xb9a72370,0xb98716d7,0xb92f5f18,0xb8d31395,0xb9c63b3a,0xb9b32025,0xb98fa499,0xb967fa81,0xb83b46ad,0x38478c30,0x388cf1a9,0x3915ab4d,0x391fcc52,0x393432ae,0x38e09d16,0x3942695e,0x37a7c219,0xb9680b18, +0xb9f84782,0xba17e21d,0xba972358,0xba96e73f,0xba720550,0xba516ba3,0xba26b17c,0xba13a693,0xb9f29f7f,0xb9b9fdf1,0xb908e9e9,0x38d9d955,0x39a34c79,0x39f3bf95,0x3a16ee4b,0x3a38f4a6,0x3a444bad,0x3a5517dd,0x3a692f78,0x3a787222,0x3a8779e1,0x3a9152af,0x3a63fd03,0x3a0cce6b,0x393b6e70, +0x371d3122,0xb94b5c3f,0xb9afb590,0xb9be9ff6,0xb9ddebbb,0xba01bf9e,0xba0efad6,0xba1af5c8,0xba3fc360,0xba592f93,0xba76ae7e,0xba8c961c,0xba84e1dd,0xb9cf7079,0xb9255c08,0xb911c2d9,0xb8fe3824,0xb8ba7e9b,0xb82df42d,0x35216e54,0x37714a42,0x38a0a624,0x38fd3856,0x393b03a7,0x3982d379, +0x39ad8c26,0x39dd24b9,0x39e1d0c2,0x39ea9846,0x39f0ab7d,0x39f7db7a,0x39fcf5ae,0x3a0d912f,0x397d88b6,0x39613877,0x3a2700b3,0x3819b972,0x3654ae1f,0x39b88444,0x3982a7f5,0x3913683b,0x38a128b5,0xb6fce560,0xb8734930,0xb8be7d1b,0xb9bd0329,0xb9c75d90,0x389d07d5,0xb9bdb04a,0x398f550e, +0xb937d712,0x39259a4c,0xb8c85f1a,0xb85dea83,0xb6e07dde,0xb9418c13,0x3862dc44,0x39036916,0x3997535b,0x37bfb486,0xb8b0a87a,0xb9adc6c8,0xb6c15b46,0x37bbe547,0xb8d2d869,0xb9618872,0xb98b01ac,0xb98c32e8,0xb93a1d62,0xb956a7c9,0xb95149ff,0x387c8dbf,0xb96f5e5c,0xba7ed37d,0x380e5c25, +0xb991d5f5,0xba5508d3,0xba7ef53f,0xba683110,0xba2b155f,0xba211532,0xba0ece2c,0xb9c4ba08,0xb8f85eb5,0x38d1ce10,0xba782a25,0xb92601e7,0xb9a3ab1a,0x3851cc11,0xb7281e00,0x379f7539,0xb9ce6eb3,0x395e75d3,0x3a085ed7,0x3a78e830,0x398f9835,0xb89b1d07,0xba2ac90f,0x39580959,0x395bd9b8, +0xb9b3516a,0xba47ec18,0xba709974,0xba4d0362,0xb9ea0353,0xb9b294e1,0xb98dd243,0xba0a5657,0xb959565e,0xb8eff31c,0xba29f65c,0xba19b2af,0x370b19f4,0xb9533cd8,0xb9130cca,0x38535c8b,0x38be0ec7,0x38b61a3a,0x399f253e,0xb91d49a9,0xb9d06ef1,0xb92d1f74,0xb8d6d443,0x396b8ba7,0x38ca69e4, +0x39acfd0d,0x39fe1e6b,0xb9a024e0,0x3a5bf217,0x3aa614b8,0x3b1536cb,0x3a59ea5e,0x3967c0f2,0xba950d01,0x3a2679fe,0x3a556bd0,0x38c4b346,0xba281762,0xba7c9401,0xba4a71de,0xb9ec748d,0xb9979842,0xba22edbf,0xb9b720b5,0xb9d31838,0xb98ae123,0xb8841f3b,0x38bf3de7,0x388bc2da,0x388ab259, +0x3896ee7f,0xb6223ed0,0xb6b79a92,0xb83627ab,0xb856202c,0x380df8f0,0xb8a0a9c3,0xb994905d,0xb8d67083,0xb8212a06,0xb9167df6,0x38d08c44,0xb8a73e25,0xbaaa87a0,0x39c33962,0x3aeae010,0x3b5f8851,0x3aabef4b,0xb965dc58,0xbb0de895,0x3a2c6355,0x3a813bb9,0xba56e914,0xbb1c85a3,0xbb3ca42a, +0xbb144d13,0xba960df9,0xba3a0666,0xba794095,0xba3b3e0a,0xb9a02c73,0x381e0177,0x388e69db,0xb7d375c9,0xb81748f7,0xb803de9f,0xb7fdae8a,0xb6c7e925,0x35ebb86e,0x378b743f,0x37866bca,0xb7879116,0x389137fe,0x3796efa2,0xb9327112,0x3a88d45a,0x3ac5e1da,0x3ac507f8,0x3b1eb591,0x3b9f58bf, +0x3b7156be,0x3b3d6fe2,0x3b13f319,0x3b192b5d,0x3b0f5dde,0x3aeaa882,0x3aa006bc,0x3aeb74f2,0x3b40ef2e,0x3bab605b,0x3ba338e3,0x3b2055e7,0x3a9c442f,0x39a96341,0xb8483de0,0x36dbb70f,0x398781e3,0xb800670c,0xb7c9ff84,0x35b4597e,0x37b0287f,0x376f6c4f,0x3773b7c3,0x36907f8e,0x34fdb24a, +0xb709bf67,0xb525b4e1,0xb68e0bc6,0xb74a3b14,0xb851a36a,0x394a598b,0x3a708fcf,0x3a98a48d,0x3aba3dba,0x3b0c40c3,0x3ace90fe,0x38a87022,0xba84b8d8,0xbacaa5c8,0xb8b35ba8,0x3a9b5998,0x3b09c71b,0x3b0449e5,0x39e8dd3b,0xbb01d202,0xbb4c6c87,0xbb392b61,0xbaa3f4e5,0xba104a19,0xb8eeafab, +0x3937bdc1,0x396908ec,0xb8592587,0xb7e9c7cf,0x380b3a5c,0xb6f97ff2,0xb6da106c,0xb7213a05,0xb6e093a6,0xb6934014,0xb544791e,0x34a6cb3a,0x34c95438,0xb55170ed,0x36f58be4,0x380f86e2,0xb902fcd4,0x3b2d9a99,0x3b8310db,0x3b17d5dc,0x39935aeb,0xbac5c4de,0x3b237b98,0x3ba6fd8f,0x3b96ec87, +0x3b972dc4,0x3b00dfd9,0xbb0b0e4d,0xbad09506,0x39fa97c3,0x3b714f2b,0x3ba75793,0x3b9cf353,0x3b387749,0x3b102475,0x3ab3f9f1,0x3a53a2f7,0x388a1371,0x3775cb13,0x3725e790,0xb7c554c7,0x36793366,0x3637ed84,0x36e2829c,0x36ab89eb,0x36992a47,0x368df5f6,0x361bbe3d,0x3702898a,0xb70474d7, +0x378ff368,0xb851a5d4,0xb91240ee,0xbb54d4fc,0xbc16632d,0xbb16840f,0x3ac6beaa,0x3b5a7eca,0x3b0f5f6e,0xb9d7a7c0,0xbb880ed1,0xba0050c3,0x3b222a43,0x3b9a40c7,0x3af5b488,0xb99b6842,0xba9ebdbd,0xbac551d8,0xbabd26c7,0xbabfc10c,0xbaa33fa1,0xbab4e99c,0xbab9b2a7,0xba6cbaa4,0xb8995559, +0x388a1673,0xb58917e4,0x37202837,0xb6c8a8ee,0xb6bc05bc,0xb6ee1a21,0xb6ff1a39,0xb711915b,0xb72300ad,0xb74772fb,0x33258129,0xb6a1751f,0x375fd783,0x39c895fc,0xbb318a4d,0xbb52b375,0x3adc841c,0x3b2059cd,0x3a8d3634,0x3ab37d2d,0x3ac52cea,0x3a9c869d,0x3992dfd6,0xba1498c9,0xb9c3253c, +0xba175709,0xb95d11d5,0xb8d1822c,0x39175ac7,0x3a004cac,0x3a894ccc,0x3ab5a617,0x3ad55cc5,0x3aecaacc,0x3a8d2f62,0x38c0dc12,0xb90df0b2,0x373e6732,0xb7cb7151,0x37591275,0x36f0a3f6,0x375e8ed8,0x37814390,0x378d4e6f,0x37d25ef5,0x3797dd16,0x37a65237,0xb7dd5c2e,0x37d5a499,0xb9f62bcd, +0x3ad4124f,0x3b2575ca,0x3b0acc89,0x3aee55cb,0x3ab097c1,0x3a636581,0x39517aa4,0x39317da1,0xba78ee7c,0xbab49d8e,0xbad522e2,0xbab12eb8,0xba949671,0xba87c7d6,0xb9a3f11e,0x38a11cff,0x391f36cd,0x3a0eb03f,0x3a497179,0x3a81a405,0x3a7cf852,0x3a139135,0x3816f08b,0x3897bee4,0x37162e57, +0xb7391430,0xb7aaa52d,0xb7d246d4,0xb80ac01a,0xb81fc9b9,0xb849c520,0xb8652dc8,0xb7a07e65,0xb4da9604,0x37ff310f,0x3a7c5f34,0xb8c00618,0x38b0b748,0x38a29bbd,0x37dd8290,0xb7891ebc,0x37ff5169,0x389458f7,0x388b8fde,0xb5cae417,0xb8eee466,0xb9a3b92e,0xb9fa72a2,0xba24f51a,0xba547b09, +0xba30f7f3,0xba11a862,0xb9e35933,0xb9904e71,0xb94f9845,0x3863b45b,0xb9342ecc,0xb9916d66,0xb95e408f,0xb905b832,0xb73b7fef,0x38061aee,0x3838495d,0x387790c5,0x38a4810a,0x38b471a0,0x38ed26f5,0x3902370b,0x38caf899,0xb78fc68a,0xb8528648,0xb7e7043d,0xba830622,0xba29c920,0xba08f2b8, +0xb9b1c140,0xb94d35c8,0xb8b57c0f,0x37c6c5fc,0x3934d5c8,0x3939d5e3,0x3953f3af,0x3983e9e5,0x398e88f3,0x39a52e6b,0x39c90698,0x39eec3ad,0x3a069f4e,0x3a168a20,0x3a278e7e,0x3a29eb5d,0x3a5887e2,0x3a580361,0x39f7a7c8,0x39a09b82,0x35d81917,0xb8d5c197,0xb8c1172b,0xb908a4ad,0xb9377b09, +0xb9694bab,0xb98850bf,0xb992e74d,0xb9d488e6,0xba10b8fc,0xba2b3692,0xba3a85be,0xba356740,0x3936f6f1,0x378ff7dc,0x37d260bc,0x389e5c7e,0x38e51db6,0x392b4079,0x3959333c,0x3987679f,0x39755431,0x3975c653,0x39773860,0x39852986,0x398e5bda,0x39936c5d,0x39a0a488,0x39ad6ff0,0x39b6e1ed, +0x39c74352,0x39d37d1b,0x39c5d659,0x3a23ab20,0x3a136c97,0x3985bfe0,0x3a01cb19,0x39d2e7d8,0xb7a9bba1,0xb872e149,0xb8cf0484,0xb921cd66,0xb95549cf,0xb98cca40,0xb99b3ca3,0xb61d38dc,0x38ee4b5f,0xb99fab62,0x382b1ce0,0x39c2bfdf,0xba7df13d,0xba59a3a4,0xba7e80f2,0xba411f47,0xba4d1094, +0xba60311d,0xba60a08f,0xba5cef85,0xba29d694,0xba691a19,0xba7dbb6b,0xba997043,0xba6210b1,0xba59f2d9,0xba788e94,0xba875e4c,0xba8cc2b1,0xba8fd762,0xba831e7c,0xba6f1ece,0xba84dab5,0xba5e0def,0xb9f3f956,0x398b0125,0xba75ee66,0xba1899e7,0x387016c9,0xb9146cce,0xb9117ff0,0x3845ece2, +0x382327fd,0x38e684f5,0x399d1b36,0xb9f78ea4,0xba74f047,0x39641b25,0xb9ea9b1e,0xb94f7ffd,0xba8c247d,0xba359a72,0xba49c5b4,0xba800dae,0xba81b63d,0xba69fb0b,0xb9cf4375,0xba85b4f9,0xbaa76d74,0xbae5a137,0xba6cc3b6,0xba611301,0xbab3d306,0xbae2e854,0xbafbf745,0xbaf8455a,0xbac938bd, +0xbaa10428,0xba9fa811,0xb98949d6,0xba1e9edf,0xba3efa6b,0xba3c9583,0xb9fe8841,0xb9852c68,0xb9a8e37f,0xb99f6c42,0xb93796c1,0xb9485f9d,0xb931420e,0xb7d61827,0xb9a44a12,0xba13063f,0xba1c31e6,0xba414fe1,0xb9fd9104,0xba6c2b4c,0xb9d3ca9c,0xb9d3dc7a,0xba488ff0,0xba4b1fb8,0xba5462a9, +0x39b47fa1,0xba848237,0xbab91ca2,0xbb263474,0xba632273,0xba295c13,0xbab0f6c2,0xbafbd01f,0xbb12155a,0xbb0f7592,0xbada55f2,0xbaae7ad2,0xba9abdbb,0xba1e7082,0xba102d14,0xb9145d64,0x38cc3c83,0x391ed2ac,0x38e59aaa,0x38dfb211,0x38e69489,0x3888e94d,0x3890cdd7,0x38390bd1,0x380bd627, +0x38d8a6d7,0x3817fefb,0xb959042b,0xba0758b1,0xb9e27b40,0xba8d9d66,0xb9cd8661,0xba213b28,0xbaa91a22,0xbab455b2,0xba5605b4,0x3a60ba27,0xba8f29c4,0xbb191f2f,0xbb7c4294,0xba9a312c,0xba5237db,0xbb249b85,0xbb80f46f,0xbb94d729,0xbb8b5b35,0xbb3dc832,0xbafb62dc,0xbacb43e8,0xba1c044f, +0xb959d16f,0x38c2c9de,0xb7877136,0xb88365a1,0xb854cfa9,0xb8424a39,0xb8427b42,0xb802e80b,0xb7f52733,0xb7901f9a,0xb7b76c63,0xb820c005,0xb4e4adc5,0x38e63087,0xb92ddb35,0x39e24035,0xb7f69f7a,0xb9a4e0bc,0x39bd91fd,0x3b3472ad,0x3ab7d38d,0x39f35835,0xba2b405c,0x39e1c52f,0x3a581d81, +0x39fb1f23,0x3930d94f,0x3a51ba85,0x3b134ff7,0x3b89e941,0x3b86e9ec,0x3b01331d,0x3a1e896d,0xba0a04af,0xba569bd6,0x38533440,0x38fc94d5,0xb7b8df99,0xb70b9a14,0x3808d155,0x37c2d3b7,0x37c2ae45,0x37b119f0,0x378cb68b,0x3759cb9e,0x3733ea7c,0x372052ad,0x37bba84b,0xb7486aff,0xb80db0e6, +0x388e95a4,0x39d1494b,0x39ab0870,0x3a9870ba,0x3ae6f4fd,0x3ada9e66,0xb9787094,0xbaaf4b51,0xbadb8e40,0xba045be9,0x3a20b34c,0x3ac60d03,0x3afaf574,0x3a268c3c,0xbaf6bd95,0xbb6aaec3,0xbb88ad2c,0xbb6c8dab,0xbb1d4ac4,0xbab3362c,0xb9b661c4,0x3954a4bc,0xb8cabaca,0x37a949f0,0x360c1690, +0xb7656bf1,0xb76694ee,0xb7456679,0xb7476c39,0xb7191578,0xb71ab1a4,0xb68e2148,0xb76d8660,0x36843e27,0xb7fbfe43,0x38c37aa4,0xb943fdaa,0x3b01560a,0x3b442037,0x3acf1463,0xba4d06ca,0xbb8f8cad,0xbb03f535,0xb8bb9979,0x398fb188,0x3ad9ce02,0x3a08ae50,0xbb2a4060,0xbb5de959,0xbb1452bb, +0x3a0937f6,0x3b327ff5,0x3b6836da,0x3b34bc36,0x3b0a318f,0x3a984f08,0x390fa615,0xb94b5c68,0x38492aae,0xb764271e,0xb691c329,0x37198863,0x370e9ee0,0x3714aad0,0x3709b2be,0x370c55f8,0x36edf1db,0x3708b084,0x3707f176,0x3722806b,0xb69a85b8,0x37f14dc6,0xb99c4777,0xbb208dad,0xbbed1e93, +0xbb671745,0xbadd484c,0xba8603b6,0xbab64117,0xbb2ce5d4,0xbb895e98,0xbae37661,0x3a70a07d,0x3b6d7a96,0x3aa6272e,0xba0d8d28,0xbac76152,0xbb0845e7,0xbb19b330,0xbb23424f,0xbb0be5fc,0xbaecc586,0xbacb1331,0xba36f776,0x384b8d00,0x37c65664,0xb3fb4ba1,0xb6c7e18f,0xb72c05cb,0xb720f961, +0xb72e2ad2,0xb73483e4,0xb744f6f7,0xb73dea63,0xb78a588a,0xb72faef4,0x360ef9ba,0xb878870c,0x3a015f47,0xbb1ab9fa,0xbba2657a,0xba90e9e5,0x388c9f1d,0xba8b495d,0xba77f80d,0xba668aba,0xba6b57f8,0xbaaf908a,0xbb0146b5,0xbb09889c,0xbafeb1ae,0xbab6f0b2,0xba9d9aab,0xb9d48989,0x39624d9b, +0x3a480fa1,0x3a96f252,0x3aa129ba,0x3aa563df,0x3a34c99d,0xb893ecd5,0xb8839cef,0x373c827a,0x364dc750,0x37a93bf0,0x3775f830,0x379a6d5c,0x37ada74b,0x37a535e0,0x37e7d198,0x37ae2ac2,0x38365719,0xb82358dd,0x38ff0dd5,0xb9ddc85a,0x3aee359d,0x3ab266df,0x3a04bd3a,0x39be19e6,0x36ae0137, +0xb9a07bb9,0xba5eb826,0xba911027,0xbaa344ba,0xba9f47e2,0xbaa8d830,0xbab0c7f5,0xbab6101e,0xbab336f4,0xba4b93f8,0xb9dbf84b,0xb9463779,0x396c52a2,0x3a1bbcf5,0x3a88fb96,0x3a6f442b,0x39b35178,0x370c6dbe,0x3806d351,0xb80c90bf,0xb7f76072,0xb81080af,0xb81958da,0xb82faac2,0xb8404013, +0xb842febe,0xb88f1237,0xb82b3cf5,0xb830396a,0x375f8190,0x39b92c77,0xb988823a,0xb9224240,0xb96eae5b,0xb9aaebbe,0xb9faf275,0xba1563e6,0xba23b609,0xba4c06ba,0xba5749d9,0xba784de6,0xba88efd7,0xba8529df,0xba79f466,0xba76d450,0xba599bd1,0xba3caf34,0xba20981b,0xba14bd2f,0xba1c4f8a, +0xb9f97ec3,0xb9e8051e,0xb9ae610e,0xb90dfa58,0xb62479fd,0x38802478,0x38a7fa75,0x389e66cc,0x38b6c920,0x38caccc4,0x38d753cb,0x38e92f56,0x39100011,0x39160840,0x388182d7,0x380beb91,0xb8168ff7,0xba174ea5,0xba5c7590,0xba496027,0xba461c95,0xba3d9dde,0xba3dae83,0xba3e94a7,0xba3b545c, +0xba0c2c1e,0xb9b9de23,0xb9509cd5,0xb8949e17,0x3800a87e,0x3916dd5a,0x394a2199,0x39810304,0x39a48319,0x39c4986d,0x39f36018,0x3a054068,0x3a138a2d,0x3894186f,0xb92d6a2b,0xb94e1c42,0xb9573e9c,0xb980eb8b,0xb972b373,0xb989d2b1,0xb98dca9c,0xb99d63aa,0xb9973ab6,0xb9c66271,0xb9eda5e1, +0xba179250,0xba3f898c,0xba536c64,0xb9ca1bc3,0xb9f73e2f,0xb9db6c10,0xb9e2cfe2,0xb9de88ca,0xb9db0e1e,0xb9d5fb7b,0xb9e22859,0xb9c9e073,0xb9bc1a0f,0xb9a6c5d9,0xb98e2a14,0xb9628874,0xb91f487a,0xb90d63b4,0xb8e995c4,0xb8c264c8,0xb89ff23c,0xb837d08d,0xb8703ab3,0xb7c24b78,0x393c3c98, +0x3a260304,0xb9657fe7,0xb79ff5a8,0x3998acb2,0x395de560,0x3910c7b3,0x38b6d2ae,0x37c3bcc0,0xb7f6dfd1,0xb85110d8,0xb9997550,0xba04f42e,0x394b4491,0xb936b1ae,0xb9929569,0xb8a422ee,0xb99e0c39,0x38bad09f,0xb7a9cc6e,0x37ff97ab,0xb8cf3fab,0x384a684c,0x38ead653,0x399f1c4d,0x389cc4ab, +0xb768e1fd,0xb96e01f1,0x37faa750,0x38744fab,0xb7dd37f3,0xb89460d8,0xb8e22415,0xb92bbfb4,0xb8a88ea0,0xb8e9ca2f,0x3877d43a,0xb9a78757,0xba37297b,0xba9f913a,0xb98369b6,0xba4484ce,0xba84578b,0xba90d11f,0xba87e32f,0xba649005,0xba607e0a,0xba52e3a3,0xba292d61,0xba1c0015,0xb9226b71, +0xba9a50a8,0xba3ecb8a,0xba5614d5,0xb77b02e0,0x3857531b,0x35d82280,0xb98be866,0x3890a6a3,0x39a16795,0x3a4bd0a2,0x396ddb32,0xb84e4891,0xba0ea959,0x391c79de,0x396048c9,0xb92cd42f,0xb9beeb96,0xba0af514,0xba1f5fe7,0xb9ccb254,0xb96185e5,0xb93588ff,0xba4c8c7a,0xb9180e7e,0xb9a9a88f, +0xb9ba4938,0xb95f6fc7,0x3915d233,0x38a2144c,0x38cce936,0x39040764,0x39076119,0x38d8ad80,0x39613b27,0xb82a41c8,0xb9bc1256,0xb9b84e86,0xb8b6f1c9,0xb9774206,0xb93153fb,0x39aba859,0x3981ad68,0xb937f892,0x39d4db90,0x3a3629ed,0x3aeee37b,0x3a2365ef,0x39340997,0xba7e927e,0x39b9f67c, +0x3a150e89,0x3894c7ba,0xb9607323,0xb9fe0160,0xba26a01a,0xb9c67ce7,0xb8c41905,0xb9de34ec,0xb9c9e0c4,0xb96096c0,0xb89f03c2,0x3906c8a6,0x38769580,0xb6704ae2,0xb6999777,0xb57fb5a1,0xb7e10645,0xb7aded8b,0xb7eb298f,0xb87022e9,0x3802118d,0x38bf7009,0xb91cc466,0xb9379618,0xb9a91301, +0xb9c7f9b4,0x39325d58,0xb90c281e,0xba5ec3e7,0xb8e022dc,0x3a6a3645,0x3b284dd6,0x3a60c597,0xb9b4284f,0xbaf870bc,0x398e0ac1,0x3a418bb5,0xb9f86386,0xbaa9b60c,0xbaf357b0,0xbb020fbc,0xba9f9167,0xba1ccaa7,0xba35ee0e,0xba0f02b9,0x37c74d65,0x378d730f,0xb7d5bcc8,0xb81a80ba,0xb4496dac, +0xb6a5ed44,0xb618cd9d,0x36e19f3e,0x36d29779,0x3732dddf,0x37b5bde3,0xb7b56790,0xb787807c,0x38871ec8,0xb7bc6295,0x397e6240,0x3a852cab,0x3a874fbb,0x3abe814e,0x3b5b6629,0x3b2f5f50,0x3b09deaf,0x3a99b900,0x3b1524b1,0x3b1ff310,0x3ae84f75,0x3a9e4935,0x3aa79808,0x3b00ba7e,0x3b7ac7e6, +0x3b83bfa4,0x3b3951d9,0x3af15ddc,0x3a9584e8,0x399b589a,0xb6413f5a,0x39076bba,0xb881934a,0x38024a8f,0x36f963eb,0x36d8bdab,0x35648773,0x36269348,0xb61908a5,0xb622a3bb,0xb69b890d,0xb70a3fc7,0x37358cf2,0x36bc61bb,0xb813d864,0x37f83e4e,0x397ac33c,0x3a81754c,0x3ab99c59,0x3afd9018, +0x3acb288e,0x39bd9340,0xba20cbfa,0xbaba4a9b,0xb97a7bc4,0x3a2ebf65,0x3aa8fac8,0x3ae6b135,0x3a5c1016,0xba8aaac0,0xbb16cc23,0xbb28d3eb,0xbad98174,0xba9955c3,0xb9fabd30,0xb8841bbc,0xb8334fa4,0xb7904f4a,0x361f41dc,0x3600f618,0xb74ab885,0x333c5aae,0xb6351959,0xb57813bf,0x351cc536, +0xb5512974,0x36ae31d0,0xb6bd2be9,0x373a1723,0xb82412d0,0x38b94632,0xb91c2a7b,0x3a9ac258,0x3b246524,0x3ab06d98,0xb8597ab6,0xbabeb608,0x3a25c323,0x3b2f2d3f,0x3b53c5bb,0x3b6f2b9d,0x3b0cf10b,0xba37b26b,0xba8e59f0,0xb7fc948d,0x3b0c06e9,0x3b7f1e46,0x3b87423d,0x3b393997,0x3b0deee0, +0x3ac28fce,0x3a1edab7,0xb82ee259,0x388a145e,0xb82bee86,0x378f3bc1,0xb60127c6,0x36ad6d44,0x3461e418,0x360e3a20,0x355893e0,0x3551973e,0x358af785,0xb5222b99,0x373b16ce,0xb7869862,0x388e4547,0xb99c4c9a,0xbad305eb,0xbbb43919,0xbb011774,0x39b19d82,0x3b598bf6,0x3afab390,0xb8b26d21, +0xbb25c6d4,0xbacbc2d5,0x3a0a2480,0x3b648e60,0x3ae91fd3,0x39af3387,0xba6177bb,0xba834eaa,0xba88726a,0xba940c3b,0xba7efda1,0xba7b65fc,0xba98b585,0xba1d3018,0x390e342b,0xb7ac8287,0x372274e6,0xb71f613d,0xb500014b,0xb6806504,0xb5dd1b67,0xb6852c67,0xb51bbd73,0xb7037b56,0x36cacce1, +0xb80b49e3,0x3865f1f8,0xb933db56,0x3a103291,0xbb2386fe,0xbb7fcaa8,0x3b09295f,0x3b568cd8,0x3b18171a,0x3b0b44e1,0x3af18863,0x3a9f7ac2,0x39adcbd8,0xb9ec49e5,0xb9e72336,0xba4b4dec,0xba044dfc,0xb9e45040,0xb8c67548,0x3954f522,0x3a1f0fed,0x3a61285c,0x3a9322b8,0x3aaebabf,0x3a109794, +0xb90a7c2e,0xb784d793,0x370d3f7c,0x36456bae,0x36f83d49,0x365acdcc,0x36d72ca0,0x368dfe3a,0x371b8397,0x35aeef42,0x37bd2410,0xb716a289,0x388a80de,0xb8c4e911,0x3974bd28,0x3a80d588,0x3ac03c8a,0x3a954f14,0x3a2a653b,0x3a035555,0x399a7379,0x3803d1ad,0x396e1ca3,0xba06b55c,0xba5897ad, +0xba895c79,0xba69a64f,0xba467dca,0xba1f037e,0xb886199c,0x398dfad0,0x39d0fbec,0x3a3a5e9d,0x3a5764f9,0x3a6b3fb9,0x3a47ff12,0x3963fc4c,0xb70204f7,0x370a05eb,0xb7ae222c,0xb6d2f127,0xb730ca77,0xb714b985,0xb75f9d3e,0xb724d521,0xb7aa8ca7,0xb726f151,0xb86bcf82,0x37104abe,0xb8f5b37a, +0x398d8f7d,0x389e2f3c,0x39e14d06,0x3a00706a,0x39c28762,0x3990b9c4,0x395ceb36,0x394a7398,0x3930cdf7,0xb6ae2a44,0xb93223d2,0xb9d5468c,0xba0a70f3,0xba29e975,0xba55efcd,0xba363577,0xba1ce101,0xb9ff6a0a,0xb9da3167,0xb9a5455a,0xb98c0914,0xb9e00f67,0xb98c5188,0xb88e1e48,0x3816de4e, +0x37f453a5,0x3788ab62,0x375526b8,0x3783759f,0x37ad27fc,0x379e595f,0x37e95b74,0x38177d3e,0x38ab8d19,0x38d1d5d4,0x37e5bce6,0x392b6a41,0xba5fe54a,0xb9e1b80b,0xb9bf60cc,0xb9974479,0xb951be52,0xb8e55292,0xb8370eb0,0x381cabbc,0x37e3310f,0x37e06c2b,0x3806d9bd,0x37228e1a,0xb7672c1f, +0xb826d609,0x3818f006,0x38bf0636,0x392aac2e,0x39658f9b,0x3985e341,0x39d7b67c,0x398b5e67,0x38e12471,0xb8311edc,0xb91658e6,0xb8cba36e,0x36de7cc7,0x37a44f8a,0x37067e82,0x36f2de9e,0xb5b80f76,0x375a6a87,0xb8968bcf,0xb9435bfb,0xb9ca0a5e,0xb9f5847f,0xb9dcdde3,0xb94f745d,0xb828ecd3, +0xb8c28b98,0xb845a90d,0xb7dc7243,0xb6f03ac5,0x3785afd0,0x385d4fab,0x379c56f3,0x355aa055,0xb77097ed,0xb7b88366,0xb7b56a2d,0xb80ec1e5,0xb4c2fb64,0x37b0411a,0x381edfc4,0x38953ed1,0x38b0d33f,0x39039a1e,0x38a5e9b4,0xb8a1a981,0xb9959020,0x3690b147,0xb981fe3c,0xba043479,0xba0c07d4, +0xba109cbf,0xba180218,0xba1e01db,0xba2647ac,0xba251225,0xb9ef9fc4,0xb95878ca,0xba25db05,0xb9d957f7,0x38378315,0xba27241f,0xb98bd780,0xba41645a,0xba018ab0,0xba04e223,0xba0b5954,0xba0ce722,0xba0a03d7,0xb9c83709,0xba1545be,0xba273de1,0xba52f9bb,0xba184b2e,0xba0fe337,0xba20614f, +0xba2b3283,0xba34182a,0xba443475,0xba2ea7d6,0xba1d9cde,0xba3867ee,0xb97c4dd0,0x3816e46c,0x38fff6ef,0xb9dc1e85,0xb8d193cf,0x38870803,0xb623c8a2,0x37c13f25,0x390debce,0x390a34e0,0x39404c8f,0x39a774cc,0xb81c8af5,0xb9e3592f,0x392656a1,0x37e6162f,0x38b80258,0xba35e72a,0xb9ffe59e, +0xb9e9d84e,0xba0c3513,0xba0bbebe,0xb9ef61bf,0xb9057515,0xba213e47,0xba5dfb20,0xbaa178fa,0xba266615,0xba1540cf,0xba656a09,0xba8ad4e6,0xba9e4f92,0xbaad3a9c,0xba896cc1,0xba659335,0xba377602,0x38bdb515,0xb9b73c23,0xb9be37ec,0xb94400d9,0xb8c3e829,0xb85d7897,0xb89926f3,0xb893ad51, +0xb859cf94,0xb88149a0,0xb8864038,0xb8355c2f,0xb89ff9ea,0xb9398a17,0xb993c431,0xb9eb2d1e,0xb916fce1,0xba38bad1,0xb9beef63,0xb95aaac2,0xb9b21501,0xb9ae1726,0xb9b29e2a,0x39eee50b,0xba126f8c,0xba6bff17,0xbaeb0ea7,0xba296648,0xb9dc7c07,0xba4e48a2,0xba8b8190,0xbaaab238,0xbac85e06, +0xba922c7f,0xba76e531,0xba195608,0xb8eb98dc,0xb9297026,0x38e5285d,0x38922447,0x3838f4be,0x37d057be,0x38057cbd,0x3800b305,0x37a6230d,0x37bca8b5,0x37b78021,0x3700c106,0x38307970,0x386f9be4,0x38957d41,0xb944930f,0xb8e85a66,0xba5d6d91,0xb9bddfda,0xb96a8ed3,0xba093e6c,0xba102bfc, +0xb8e57065,0x3a7e183d,0xba0d81bf,0xbacfff97,0xbb364c00,0xba70b5de,0xb9fd3edd,0xbabf5bd8,0xbb11358a,0xbb347324,0xbb45c876,0xbb093f11,0xbac3a8fe,0xba6a0ca6,0xb90e12bd,0xb80641e9,0x3794bad2,0xb86b89e9,0xb72cb265,0xb790f172,0xb752a8ca,0xb78072b9,0xb70ffa9f,0xb73b94db,0xb6e5fe2a, +0xb7084563,0xb7305de8,0xb8419306,0x37cfd654,0x35b19fa7,0x39d6eaa3,0x397d455b,0xba1aa520,0xb89ea24a,0x3acebed2,0x3a7ecbec,0x39e63920,0xba3dc042,0x3a28940d,0x3a810901,0x39ac35cc,0xb8dedc3b,0x38371998,0x3a7c9df2,0x3b28877e,0x3b3b551a,0x3ad7dfb7,0x3a83e6ba,0x394522db,0x38e698f5, +0x399e4d29,0xb8859471,0x37e8c49b,0x36ca1228,0x3787a869,0x365a2975,0x37169c88,0x36c0eeb7,0x36c7db7d,0x3674e7a4,0x36d947da,0xb5b79f09,0x378be40f,0x358c2f79,0x37e6ab35,0xb8cd1458,0x39584c62,0x398ee4d1,0x3a0fb927,0x3abc7b47,0x3ac9c64c,0x3a220f24,0xb92663b5,0xba73aeb5,0xb97c976a, +0x39b22ed3,0x3a5dc06a,0x3ad5c67a,0x3a7f55ff,0xba5a0052,0xbb1c7349,0xbb4e399f,0xbb3e06f7,0xbb05c1c0,0xbaad1365,0xb9a02a24,0x3885b54a,0xb8934eb0,0x380e52e5,0xb7c8a419,0x353d6990,0xb6d8191b,0xb62f1825,0xb69ef5b2,0xb60145f1,0xb6ac739e,0x3600ae5f,0xb74c10b0,0x3787dfd0,0xb861f428, +0x38c09010,0xb9257af9,0x3a36f1d7,0x3addbdab,0x3a620af9,0xb9effee6,0xbb207519,0xbac1dc6f,0xb93e767b,0x3a1565be,0x3a927aa6,0x39f4b872,0xbab221b7,0xbb20b6e1,0xbafc047e,0xb8498bc9,0x3af3b1aa,0x3b3670ef,0x3b21f1e8,0x3af5e2f4,0x3a8286f2,0x39532a8c,0x385d8e92,0xb5e1ef42,0xb6a0727f, +0x36fc27ef,0x3674c2cc,0x36365eb9,0x36545858,0x3637db12,0x36535a77,0x3606852b,0x36930ee8,0xb5cd1ee6,0x377fdcdc,0xb7c033fe,0x38b81b87,0xb985c833,0xba48a767,0xbb8042d7,0xbb112e42,0xba6bf1de,0x3a9323c1,0x390776c9,0xba8c48c8,0xbb1d0140,0xbae16e3f,0x388f678d,0x3b3f445b,0x3ae0f0d8, +0x3a15889b,0xba3773a1,0xba8ce80d,0xbab541d8,0xbad869cd,0xbabbb39e,0xbaa28d2f,0xba8c9386,0xb96f0c25,0x3895cadb,0xb760193d,0xb64d93fb,0xb6ac7c0a,0xb6584bee,0xb6829d32,0xb66badd9,0xb69e0f98,0xb6255cb3,0xb7063bf3,0x369703c6,0xb7e934d4,0x38415efd,0xb91d20f3,0x39bfc6e8,0xbaa1ea9e, +0xbb5e51ac,0x3a82ed04,0x3b10c0d2,0x3ab8cf7f,0x3a98c9ed,0x3a47389d,0x3900c4ef,0xb9d03413,0xba7c58bd,0xba7793ac,0xba97051b,0xba682b7f,0xba4d1ce8,0xb99203fc,0x38ab0b42,0x39af48d5,0x3a39e1b8,0x3a4e224b,0x3a7df455,0x39ca36ba,0xb91a1675,0x38134194,0x331e8ab8,0x372ee7c3,0x36a13167, +0x36e6f07d,0x36eb6bd2,0x36ddc95e,0x3721a19b,0x3687e555,0x378e98f2,0xb6c900d1,0x384d0a26,0xb8567b5b,0x395cd149,0x3aa00936,0x3a880334,0x386e7c3e,0xb972d243,0xb9ef4aee,0xba2ecadd,0xba727f61,0xba631a31,0xba605f97,0xba530a54,0xba61e4a1,0xba609998,0xba4ff2cd,0xba259da5,0xb95ae598, +0x3830dcd5,0x3901d53f,0x39ccaab9,0x3a10e8b8,0x3a5f8e7f,0x3a21de54,0x3859f112,0xb6ebb744,0xb7ce7c9a,0xb727afd8,0xb76ba8ab,0xb74a4fce,0xb76d0d9e,0xb77a28b0,0xb781dd2d,0xb790aa00,0xb783b12a,0xb7d364c6,0xb7daab41,0xb829adeb,0xb90439ac,0x398263ca,0x39b19fd7,0x3943c009,0x3932dd65, +0xb6fc4275,0xb8fca4a8,0xb96488d0,0xb9c55501,0xba01a901,0xba275822,0xba4c141e,0xba505245,0xba525fb3,0xba5d3114,0xba482da5,0xba326a85,0xba1e8649,0xba1309dc,0xba1b2c54,0xb9fd5c45,0xb9b08f03,0xb92ae47c,0x387f173b,0x382302e7,0x37e798af,0x37db6708,0x37de1f7f,0x37f2b54f,0x37ffa822, +0x38081bf4,0x380eb515,0x380d32d2,0x384257ca,0x388f8ceb,0x38c22603,0x393e229c,0xb9af45fa,0xb9fa585b,0xba028c80,0xba0a0eb2,0xba0f8a7b,0xba12133c,0xba19c0f9,0xba1cb0c1,0xba08890e,0xb9eaaed2,0xb9cb3c64,0xb9b1c015,0xb99d301c,0xb984dbc8,0xb95932d9,0xb92e720f,0xb8ed0d4a,0xb883ec56, +0xb69b4082,0x38491479,0x3954c801,0xb937a844,0xb94f7732,0xb8ebd947,0xb86eb1de,0xb87659e0,0xb86f2df7,0xb87d2747,0xb881b5c6,0xb883b486,0xb88ce15b,0xb87b27ea,0xb8ada132,0xb9534f2c,0xb99e17f2,0xb9db44d9,0xb96c09ad,0xb9d5b520,0xb9c693d1,0xb9cb3800,0xb9cccea9,0xb9d22775,0xb9d49c3f, +0xb9dfcead,0xb9dd50e3,0xb9ddf737,0xb9d952e0,0xb9d43034,0xb9cbb9c8,0xb9c2e149,0xb9b6b160,0xb9ab574a,0xb9a2005b,0xb997ce05,0xb986ed92,0xb9999001,0xb8bcf03a,0x38c352e4,0x3976dc70,0xb974eef4,0xb8404bb5,0x37b6a599,0xb7421263,0xb82add31,0xb889d2aa,0xb8c09db4,0xb8f64c45,0xb9106f6f, +0xb9507008,0xb9bc810f,0xb828ef06,0xb8e9df58,0xb9cc8e53,0xb9803a75,0xba0514e0,0xb90f57d0,0xb9417f88,0xb92b6404,0xb95e36e3,0xb948ccc7,0xb92ccc65,0xb77d275c,0xb933702b,0xb96c8e2a,0xb9ba3139,0xb94f585a,0xb937e1ce,0xb966bcbf,0xb96c82e8,0xb981b7cb,0xb9a332a8,0xb981fa32,0xb97d9ec7, +0xb8f5055b,0xb9f58947,0xba1fe53f,0xba40326d,0xb9d86ec4,0xba18997a,0xb9f957d8,0xba089105,0xba02cc0f,0xb9e2aa05,0xb9e517f8,0xb9d72b60,0xb9a2df58,0xba0740ce,0xb9c4cb0a,0xba351dd7,0xba2d7838,0xba240c6e,0xb9978cef,0xb9078ea2,0xb944c853,0xb994d071,0xb989116b,0xb9291d64,0x3946887c, +0xb94175aa,0xb9b81571,0xba2978f6,0xb957bbce,0xb90d10ad,0xb9b4e217,0xb9d91d31,0xba0e7ad3,0xba34bd78,0xba10961f,0xb9c1047b,0xb9a3934d,0xba058c97,0xb92a8ed1,0xb9688e9d,0xb3b0c953,0x38a5d6fa,0x38f61cd1,0x38b29208,0x38c98eb7,0x38c61b81,0x38c6ca38,0x38a21982,0x38eb52d6,0x38aa004c, +0xb84ede93,0xb97f3d3f,0xb94d94ba,0xb9c3455c,0xb9e86270,0x38202aa0,0xb892ec74,0xb916d96f,0xb9231f95,0xb8dd74d5,0x3a43ec40,0xb888a255,0xb9a4e17b,0xba82fa95,0xb962eb04,0xb80bab87,0xb99df407,0xb9b39f3a,0xba090f48,0xba4d231a,0xba106b77,0xb9962a63,0xb9ba5bf7,0xb98a0730,0x37ff4bab, +0x383111da,0x382cb0e5,0xb7c31d6d,0xb7f0acc5,0xb7c4b43b,0xb7bc5d05,0xb7ec8d10,0xb7cd19f8,0xb7c00e6e,0xb8186fd6,0xb78e5a20,0x382c2f3a,0x387bcb1c,0xb81b916a,0xb9398d8b,0xba1ad94a,0xb78e6c27,0xb963193e,0xb9dc5141,0xba0f3399,0xb912a855,0x3a89204a,0xb8f79494,0xba606304,0xbae1cfe0, +0xb9cdb840,0xb6e6983a,0xba2ecea9,0xba844339,0xbac0d175,0xbaf6a7d4,0xbab1f9da,0xba475f9f,0xba0dc1f1,0xb95c32a9,0x38a8120a,0xb84cbf5b,0xb6d12df5,0xb2b53277,0x37738423,0x36f95937,0x371b0496,0x37322160,0x37276792,0x37139215,0x378d052c,0x354b92b8,0xb757ecce,0xb81e41a2,0x38ab1820, +0x35f54550,0x394bbeb0,0x38f8c9a2,0x3993b9e1,0x3acc89af,0x3a9f9fe9,0x3a631272,0xb8aea220,0x3aaf1126,0x3ad897f1,0x3a80e5a5,0x3a1ae7c2,0x3a040737,0x3a80c465,0x3b0a2f45,0x3b212a81,0x3b0e393c,0x3ac7a5b0,0x3a80f21a,0x39a3c192,0x37c836b3,0x3775e8c8,0xb6ceae8e,0x378b7bc8,0xb6b5d065, +0xb6731c6f,0xb6a3ea64,0xb668ebb1,0xb6b30bc2,0xb67db020,0xb6c40e54,0xb68cb6ab,0xb6eae47f,0x37bc8c60,0xb7917685,0x37c8d289,0xb903a9f9,0x3a0cb251,0x3a81fa21,0x3ab0e2ca,0x3aa894c2,0x3a042612,0xb9516e3a,0xba82f848,0xb99397a6,0x3983bdac,0x3a2b54bb,0x3aa57ebc,0x3a4febe5,0xba0e98e4, +0xbad58347,0xbb11220b,0xbb03689d,0xbad3b36a,0xba73e207,0xb9d278ec,0xb8603d9c,0x37a683f0,0xb7210724,0xb5d72f20,0xb5a806f0,0x36783338,0x35caa5f8,0x3619569e,0x361da026,0x3605b9fa,0x364cfae0,0x35f793ab,0x3646f04a,0xb71ee149,0xb5cf2633,0x37dc658d,0x3958554c,0x3a96b4cf,0x3a151d5a, +0xb9ba3e34,0xbad5ab9b,0xba8faabd,0x38cfbad8,0x3a937484,0x3ae7b8b8,0x3aa8d372,0xb97f674a,0xba9466f6,0xba5a316f,0x39f1c63f,0x3aff9227,0x3b280d71,0x3b0f7aa4,0x3adb3294,0x3a98e872,0x39a94df4,0xb7fe1327,0x37d743f0,0xb79639ab,0x3768864e,0xb6b608b7,0x356aacf3,0xb6236c7d,0xb530ae08, +0xb5dd7413,0xb59d847b,0xb5a8f195,0xb64b772a,0x369db811,0xb7393290,0x38487fcd,0xb8fa8995,0xb8cebb15,0xbb3b57f4,0xbae40220,0xba4c9b61,0x3ae73d16,0x3a2d6d00,0xb9d391a5,0xbab21a35,0xbae00aa6,0xba08b08b,0x3b01aa79,0x3aba983d,0x3a3861bd,0xb9dd8661,0xba24d1e5,0xba54f0a1,0xba73d7bd, +0xba563f12,0xba2ed4ed,0xba467f41,0xb92c5556,0x38ba270d,0xb808de77,0x36fd64b4,0xb689311c,0x365f76b4,0x3493326a,0x35ea2af3,0x34a4f379,0x36378276,0xb6195bb2,0x371e36a1,0xb797a1ea,0x38139efe,0xb8c32ea6,0x392e8312,0xba436e6c,0xbb35e0a0,0x3ad1cf73,0x3b2478bd,0x3b11a1f0,0x3ae7f3ed, +0x3ab2dad3,0x3a471a2e,0x3890392f,0xba0b4a8b,0xba2dc617,0xba73acb0,0xba44bd0e,0xba32fccc,0xb99781cb,0xb7c87afd,0x396a019c,0x39ee291d,0x3a225634,0x3a52702c,0x38ef7c67,0xb8c3e3f5,0x3813f28e,0xb69d9947,0x36521205,0xb67d8b72,0xb5b1bfc2,0xb5be0737,0xb62b70d8,0x34def071,0xb6c8a00f, +0x36e665a0,0xb7a6d0ac,0x3862fe87,0xb8c94a1c,0x398fba3d,0x39f369a9,0x3a0429fe,0x37f6b86c,0xb9c24c91,0xb9c3d791,0xb9e1e741,0xb9f4e04f,0xb997da47,0xb9e1c165,0xb9f58ecf,0xba0d0d50,0xba0a25f2,0xba039c73,0xb9c7e360,0xb87568fd,0x394640cd,0x39b44e9d,0x3a1434f3,0x3a1e688e,0x3a38a64f, +0x39cb210d,0xb7877adf,0xb528b3c1,0xb797f676,0x36d05509,0x3659e301,0x369373ff,0x3658d08a,0x366da25e,0x3688566c,0x35f7e375,0x370a8dd1,0xb696581b,0xb74fe1b3,0xb781c320,0xb8d3d625,0x392ca1a0,0x3a022644,0x3a02022a,0x39d53682,0x39932a48,0x3916d4ee,0x3862725d,0xb8413fa0,0xb965b678, +0xb9c7b45f,0xba135895,0xba160e23,0xba1883ed,0xba2658d1,0xba1187e0,0xba017a8a,0xb9dce341,0xb9d80cb3,0xb9b77d7c,0xb9cf2f13,0xb9bf1394,0xb8277e05,0x384d2bb5,0x3766139e,0xb6fc00a6,0xb781fb3f,0xb726cdb7,0xb73f4c53,0xb73953b2,0xb73e1ec8,0xb721e123,0xb788440f,0xb6c119a1,0x3813cd29, +0x3849d8bf,0x38aa3b09,0xb9fcf067,0xb9a99b80,0xb9a14b5d,0xb9acc463,0xb9a3a6e9,0xb9931802,0xb98efe68,0xb98a4d5b,0xb97969c8,0xb95d97bc,0xb95311e7,0xb95d5656,0xb97e3118,0xb993eaf0,0xb9766b28,0xb9503de9,0xb9164acf,0xb8dfd3bb,0xb864b9e2,0x37aba9db,0xb8d4d088,0xb9104461,0xb8e85e21, +0xb74b2f58,0x38681e29,0x38817c33,0x385a8677,0x386f0a43,0x38679559,0x387445fd,0x385ffb56,0x388b999d,0x387400ce,0xb8687f89,0xb942cc99,0xb92fc33d,0xb9bd6db2,0xb92a0dab,0xb95dbfe0,0xb94d29fd,0xb94a2c02,0xb952b192,0xb951a98f,0xb94e2499,0xb95fb617,0xb9710a1e,0xb97af71b,0xb98305b4, +0xb982a0a7,0xb986401e,0xb970fce2,0xb961934e,0xb9550f34,0xb93e8c1c,0xb936cf00,0xb9059a9f,0xb97e306d,0xb9a8a6e0,0xb9b99b13,0xb9928832,0xb9c50e32,0xb9ba98b0,0xb9c22934,0xb9c50fbe,0xb9c95633,0xb9cc31ad,0xb9d11ffe,0xb9d03785,0xb9de130b,0xb9ad99dd,0xb9febbec,0xb9f80dca,0xb97b4a97, +0xb986a321,0xb84bd3a0,0xb9a17f63,0xb9564ebb,0xb944ced5,0xb94cbb86,0xb94261f6,0xb935b64d,0xb8b70d67,0xb951f4ba,0xb9804840,0xb9b41261,0xb970626a,0xb95afd0e,0xb971a73d,0xb97aae7d,0xb9877567,0xb9a4c5b3,0xb98a3630,0xb97eed99,0xb986c64d,0xb712c4ce,0xb6d7c598,0xb98d1d24,0xb8a66fd5, +0xb79d252f,0xb8b4f18d,0xb8bd2803,0xb89d04b8,0xb82a5c62,0xb825cd1a,0xb7bf2b49,0x37c3c70c,0x337a04a3,0xb8d191ac,0xb95deb47,0xb7faecbb,0xb8934ef4,0xb98e5b76,0xb95fa36e,0xb92545ed,0xb93e1272,0xb913b446,0xb8a211aa,0x38d4fd4d,0xb941ca31,0xb9af9673,0xba12ba12,0xb9870da7,0xb9574516, +0xb9adda99,0xb9c9bdc0,0xb9f73260,0xba1d8cad,0xb9f48ed4,0xb9cbfc73,0xb966c22b,0xb7442711,0xb8d75e9c,0xb7d7454c,0x36749ed1,0xb5ecca15,0x381a5141,0x380f78a9,0x37f48038,0x379bc807,0x378a6c17,0x36d055e1,0x359e9554,0xb7088563,0x35e64e9b,0xb80037ec,0xb91c989d,0xb7cd00b1,0xb9d49878, +0xb92f16f8,0xb85add60,0xb850fbea,0x3745124e,0x383d7f2d,0x3a0309fb,0xb8ab0eb6,0xb99f51e3,0xba56cc9c,0xb98d85df,0xb8f911fc,0xb976eb9f,0xb998f527,0xb9df3844,0xba31874a,0xb9f17003,0xb9c2f521,0xb928db81,0x38387c54,0x352c9d06,0x37fc901a,0x3537d405,0xb41b549b,0xb7422901,0xb758697d, +0xb725d6a5,0xb6fb5c18,0xb6bba39c,0xb610b84b,0xb5e6c238,0x36a07942,0xb58d3c8e,0x381118a9,0x3714a50f,0x383ac58e,0xba07be0b,0xb97c8799,0xb8a042fe,0xb90bf0a0,0xb87adbb0,0x39839117,0x3a5e2b6f,0xb80c54c5,0xba3116e7,0xbab21c5a,0xb9df1f26,0xb8ed8e7e,0xb9fd6c09,0xba3c56ad,0xba8b951a, +0xbabfebdd,0xba88a0d8,0xba470101,0xb9a1d17f,0xb5529ad9,0xb6bdd4b3,0xb710ece2,0xb6b08f7b,0x362ac392,0x3679b04c,0x36d0bd02,0x368aa494,0x36772162,0x360de849,0x35ebd0bc,0xb51364da,0x35647349,0xb6c6a0be,0xb706bfd5,0xb7527370,0x3829b71f,0x39b25bed,0xb94b9830,0x384d66ab,0x3a646c44, +0x3a47d4c0,0x3a0fd984,0xb9a108a9,0x3a4e33e2,0x3a806606,0x39c1d319,0x375bcf19,0xb8b1f209,0x39a51b1a,0x3a9fe388,0x3ad011da,0x3aadc0f5,0x3a8db117,0x3a2ff33e,0x3a0ac333,0x3814d6c2,0xb7d48334,0x378a8f43,0xb62c4d44,0x359c28b0,0xb6491ed6,0xb61f13c4,0xb6253847,0xb5d5a9a5,0xb5c28d76, +0xb4fafd96,0xb56ac4dd,0x35d7452f,0xb5e72cc6,0x37893af2,0xb7d963bd,0xb88b8ef0,0x39bf6ad3,0x39cfc02e,0x3a7eb7ea,0x3a8aa25d,0x3a4443ea,0x39916ce0,0xba07d712,0xb916293c,0x391a5218,0x39f4f7ff,0x3a8fda2b,0x3a5c8710,0xb91eb17d,0xba8fabb8,0xbad69493,0xbace669a,0xbaa2f23c,0xba6648a5, +0xb99b14b9,0x34c15a90,0xb5b64559,0x35907d98,0xb68a3987,0x360f7b10,0x34e985d6,0x3604bfe3,0x3598b7d9,0x35b30951,0x351ef77a,0x35aa9d6d,0xb535a251,0x3600582e,0xb66f2563,0xb65de701,0x37649b74,0x37704665,0x3a3416f0,0x39cc5173,0xb93573bf,0xba61b98c,0xba368a4b,0x388efffa,0x3a69e882, +0x3a7811f6,0x3a1a700c,0xb995d615,0xba927e57,0xba7479d7,0x388d2522,0x3a99ffe2,0x3ae67697,0x3ada5ff4,0x3aa9ced7,0x3a4c73f3,0x39971185,0x380828bb,0xb7a7887f,0x37089582,0xb527db6b,0xb41e79f2,0xb5a4c70d,0xb5a7003b,0xb5b13c13,0xb589ee8b,0xb5ac725b,0xb4e9d4a6,0xb6159bcc,0x36601ef7, +0xb70ea4cc,0x37d662ff,0xb83b2a7a,0x394ea892,0xbae07b76,0xba94966a,0xb98249bf,0x3af2cec9,0x3a6f292a,0x3746a0df,0xba6c4951,0xba9ae667,0xb9ab02ed,0x3ad60f45,0x3abbf3ef,0x3a793524,0xb898cad9,0xb99bd377,0xba062a82,0xba32968d,0xba1eac26,0xba118871,0xb9f37185,0xb785b2f0,0x37b783ff, +0xb7292e9c,0x3525d156,0x35532df7,0x35bd57b0,0x3604758c,0x35ed397a,0x35ea3fa3,0x360799c6,0x35a9b6fc,0x3650d0f7,0xb6235223,0x36bfe4d4,0xb76f6690,0xb6f34e7d,0xb946b7a6,0xba9da7f0,0x3aeed8f6,0x3b2730ab,0x3b1a2cf9,0x3b018cbd,0x3ac93761,0x3a63b9d2,0x399adb49,0xb945fa40,0xb95c52a4, +0xba085dda,0xb9f0e67c,0xb9dcf7ad,0xb94d2890,0xb8320dc6,0x388b5f1e,0x39aaadbf,0x39d47641,0x3a224333,0x3779ee9d,0xb83525ca,0x37e993fd,0xb70ea607,0x362c6f8c,0xb6a3c084,0xb62d878d,0xb67c4b71,0xb66373b2,0xb6666ae6,0xb68d6104,0xb61d7f55,0xb6b264ed,0x3749cc1a,0xb7cd7930,0x38c36444, +0x3990404b,0x3a0de7ff,0xb9328a81,0xb9e8d591,0xba0b09cf,0xba2447e6,0xba2b36bf,0xb9e4e8fa,0xb9e86e4e,0xb9d8e210,0xb9e3abf3,0xb9c8e5e5,0xb99dd28c,0xb91e519d,0x38ab5fb2,0x397f23c4,0x3995fd08,0x39dfb0e1,0x39d8ee4b,0x3a13ae72,0x3945199d,0xb8774d99,0x3722312e,0xb73b1a3f,0x3701e5fe, +0x36936c79,0x370726f1,0x36da0d8b,0x37027f68,0x36e57c10,0x3718ded3,0x36affde8,0x3731818f,0xb7ad8917,0x3815e0d0,0xb913c5db,0x39867d4d,0x3a0e442c,0x39cd7ae3,0x39d59890,0x398ea432,0x393a31d8,0x38a76ae0,0xb80c2c09,0xb92be34d,0xb9951d67,0xb9dbbaf9,0xb9ea7e5a,0xb9faae13,0xba09faa3, +0xb9f7ea16,0xb9ddeaef,0xb9c43531,0xb9b4c6d7,0xb9ae8407,0xb99d65c7,0xb9167628,0x3823c680,0x37b719dd,0xb3e2a501,0xb6cdc69c,0xb7862259,0xb780628b,0xb7881ab4,0xb7897257,0xb7916df1,0xb78d6c01,0xb7ad1eb0,0xb6bbb5cf,0xb5c6c428,0x380f1d9d,0x3620b1be,0xb935acb2,0xb95b8c24,0xb976194a, +0xb98781e3,0xb990cd06,0xb98ea787,0xb99638e7,0xb998733a,0xb996b82d,0xb995fb16,0xb9981613,0xb99cc5c5,0xb9a3ac52,0xb9aa75d7,0xb99b16d4,0xb9902481,0xb97fc014,0xb965d7fd,0xb9484443,0xb91a775a,0xb8b5c6c5,0xb91595e9,0xb7525bc3,0x360011d2,0x37bdcf3f,0x38384aea,0x38339f22,0x383d2e5a, +0x383fb47b,0x384adc4f,0x384634d5,0x386b3abe,0x37d73759,0x36a97924,0xb82f004b,0xb88d397e,0xb9203674,0xb954cfd0,0xb95a49e1,0xb95a3062,0xb95d8a77,0xb9687d1b,0xb96e01ac,0xb974179f,0xb9840c41,0xb98c2d81,0xb991d871,0xb9985f64,0xb99c11a0,0xb9a201ee,0xb99867f5,0xb99217a1,0xb98cfe50, +0xb9851274,0xb97ca172,0xb9832de5,0xb8fc7d2f,0xb8c5448a,0xb9340cf1,0xb9085f26,0xb88baffd,0xb8dfe053,0xb8e8c97d,0xb8eca754,0xb8f6ddf2,0xb8fbff9e,0xb904dc0f,0xb905ff90,0xb8d1cb9f,0xb9162bbf,0xb97e6846,0xb92a7342,0xb99315a4,0xb9853fbf,0xb9abaac5,0xb96c4369,0xb95e744e,0xb954fa5a, +0xb953da93,0xb9733254,0xb97239c4,0xb9293ed0,0xb9755353,0xb986d207,0xb9a19233,0xb97fc930,0xb972fd93,0xb97fe29c,0xb97bc3ee,0xb9829fe5,0xb996a748,0xb98549dc,0xb9784d68,0xb94f3933,0xb99693d7,0xb993ff6a,0xb975fc06,0xb8cf1b7e,0xb8ed6dc5,0xb81ddc1c,0xb8613da2,0xb852a1c7,0xb81d5960, +0xb8293936,0xb80fdb20,0xb6a7ebec,0xb8eaebd5,0xb8e02cb5,0xb966cdc6,0xb9aa75a1,0xb99714da,0xb9a01a7f,0xb93e5ca8,0xb953adf4,0xb948fec2,0xb9909a41,0xb98ad605,0xb8ee5125,0xb999a67a,0xb9c12016,0xb9fd14ab,0xb99cd727,0xb986ce53,0xb9ac37c5,0xb9b47215,0xb9d5d215,0xba043d33,0xb9e5a2b3, +0xb9ad9c85,0xb98ce009,0xb92d6c02,0x37cf29e3,0x370304ec,0x38951844,0x37f03ef9,0x37d76292,0x3794ef4e,0x37b35284,0x37845647,0x37960ff7,0x371f2a83,0x37821948,0x37ecb261,0x388e6718,0x37b6919b,0xb6b42bfe,0xb86d23ec,0xb9ec7ba0,0xb8d65a51,0xb9262ce6,0xb89b87ff,0xb987f351,0xb9a335d2, +0x388ea1ab,0xb9a1c9b3,0xb9d72b2a,0xba311326,0xb9c1e61e,0xb98ca9b4,0xb9b34738,0xb9a8f830,0xb9d384bf,0xba17fb21,0xb9e5455e,0xb99dd415,0xb96fd570,0xb6bd28dd,0x3805eb6e,0xb7416f84,0xb7956477,0xb77309fb,0xb7000378,0xb7005a22,0xb6e0f212,0xb6e2819b,0xb6b81c4a,0xb69840b7,0xb69f48df, +0xb7696274,0xb783d48e,0xb7b92f69,0x388d78e9,0x38b3e24b,0xb9f4feac,0xb8f89ec6,0xb90977f0,0xb8aacf4a,0xb9ce07d9,0xb9b3361a,0x391cfa0e,0xb9d67d8d,0xba4495f5,0xba8c08c0,0xba098a73,0xb9a9a3d5,0xba0c1e9c,0xba2659d6,0xba667263,0xba9b61c7,0xba715f47,0xba1dcdab,0xb994ade2,0x37bb5aca, +0xb709ea24,0xb57aa081,0x3722e58e,0x36bcc271,0x368503e8,0x3656524c,0x364ee4b0,0x364869f6,0x362694b5,0x36034055,0x363115d6,0x36bb58a9,0x370afcbd,0x36a9ec1b,0xb80161af,0x382e7d0c,0xb85215b3,0xb970da1a,0xb92d99f8,0x39ae9340,0x397cde67,0x38b592af,0xba0e51a6,0x39d6ff89,0x3a2a533a, +0x398aa565,0x38a59762,0x376d4af5,0x399e0147,0x3a43f0f1,0x3a84d5e6,0x3a8f2575,0x3a532bbb,0x3a0522be,0x396bd1c7,0xb72e527d,0xb610be98,0x367d405a,0xb6bf9deb,0xb61a90af,0xb614e4b1,0xb5c4f0ab,0xb5d4d4a7,0xb5c37144,0xb5a95730,0xb581a995,0xb5dafe1b,0xb5fbda0d,0xb6e73fd8,0x3701306e, +0xb76d526c,0xb8bd5361,0x394ea55d,0x39e67fab,0x3a26be5a,0x3a3deede,0x39e40204,0x38c23ea2,0xb9ea739a,0xb93a3064,0x383c1f1b,0x3997e85e,0x3a3d9837,0x3a13a812,0xb9057cf0,0xba4869ea,0xbaa16fbe,0xbab37780,0xba959044,0xba4e6018,0xb9ba0f6b,0x386e15c4,0xb7724084,0x369cbb95,0xb49f1d5d, +0x3643ca7f,0x350da307,0x35a26eb5,0x355364bd,0x35752b31,0x355c7498,0x34fda867,0x35cb6127,0xb4998692,0x36f91d1c,0xb7751278,0x3813437b,0xb6f9a639,0x3986fd5c,0x391867f6,0xb993fd00,0xba85ba76,0xba981841,0xba39bc7b,0x38921037,0x39d78f4a,0x39c5be8d,0xb9155565,0xba659083,0xba6bc632, +0xb99c1ff0,0x3a025395,0x3a84773b,0x3a9345e9,0x3a67e33e,0x3a1b7587,0x39125131,0xb2f84156,0xb706ce83,0x36a52a3f,0xb666eb0b,0xb51de302,0xb5a3d590,0xb52ff655,0xb5704e5c,0xb533c205,0xb57ad7e6,0xb4af532d,0xb5d8842f,0x34f3b484,0xb6afe1d7,0x370395dd,0xb7390363,0x396dd3b3,0xba70ee0d, +0xba89b8ca,0xba355b42,0x3a0e4199,0x38a2e01d,0xb9a2ef0b,0xba0c2c18,0xba80e6c8,0xba0855f7,0x3a492442,0x3a600877,0x3a29bf46,0xb7fd36b7,0xb987c482,0xb9eaf452,0xba08821c,0xb9fa1d2b,0xb9c149f6,0xb99138f7,0x37cef6ab,0x3642d205,0xb684a1f9,0x36707320,0x35950903,0x35b73c42,0x35971cd1, +0x358a71f7,0x35b795eb,0x3528af18,0x3614239b,0xb59b708e,0x36e5df73,0xb7279a51,0x37ece6fb,0xb89cd111,0x38d1de7c,0xba3ca396,0x3a5f6f97,0x3aaf59f4,0x3ab7f64a,0x3a8d8da5,0x3a523a61,0x39edb736,0x383d4c80,0xb9a2147e,0xb9f1943c,0xba1e88e2,0xba0d7296,0xba01041f,0xb984cdc4,0xb8d7ef3e, +0x369a225b,0x392a3ffe,0x396f3ccf,0x39a2c493,0xb86ead92,0x3733cf84,0x34e73ccc,0xb697aad2,0xb624b365,0xb61f15b3,0xb60478c6,0xb6154928,0xb5ffc6ac,0xb63109dd,0xb59d19bc,0xb6916d39,0x35ab7a70,0xb73db2eb,0x376c6404,0xb7dbe1f6,0x38885131,0x3890b642,0xb9ca8903,0xba16a5c0,0xba1a53a8, +0xba1ecf2e,0xba162580,0xb9eecb3b,0xb9acb40b,0xb976209b,0xb95761d5,0xb96acc67,0xb96a66d1,0xb91efd5b,0xb7bee07f,0x38c75656,0x39449350,0x3993cc32,0x39975bd6,0x39c70cd7,0x3810adb6,0xb7e740f3,0x36dccdf8,0x36de93ba,0x36c81ea0,0x3693b3af,0x3692e3c2,0x368cf65b,0x369e464b,0x36861e5b, +0x36b86708,0x363e8348,0x3720c091,0xb5ad006a,0x37b1325d,0xb84b9419,0x384a9f9c,0x39c8848a,0x39969603,0x398dedb8,0x3932686f,0x389287ac,0xb7ad63dc,0xb9021963,0xb96405b4,0xb9a1ff6c,0xb9cdc9c6,0xb9c11990,0xb9b3525c,0xb9afd1de,0xb99ce645,0xb98db9be,0xb975f5b6,0xb97cbbf2,0xb96487b1, +0xb98d96af,0xb865d03b,0x3865c645,0xb79d2540,0xb76d25d1,0xb765bbe0,0xb7214b6b,0xb7257971,0xb721b2ea,0xb72ae512,0xb72a76a7,0xb725de8d,0xb74638b5,0xb723e7c1,0xb7b8df1c,0x3664ec0f,0xb6e4a63c,0xb8e1bb79,0xb93682d6,0xb94a2cf9,0xb96decad,0xb980cd71,0xb9839ab7,0xb98cd8b0,0xb996a6af, +0xb987b6af,0xb974e842,0xb969ae58,0xb965ceec,0xb9738008,0xb9834633,0xb9779d33,0xb96bab82,0xb9542867,0xb94aa17d,0xb922ffd6,0xb9294b5a,0xb937c72f,0xb6ad3cf2,0x37c06f9b,0x386cd329,0x37f2e614,0x38011e1c,0x37ceeba5,0x37ed5391,0x37e51687,0x37f29fe3,0x37e11069,0x3808d6df,0x37ef5dbf, +0x38627238,0x3794c90f,0x37b53a54,0xb98707e1,0xb92c3e39,0xb93a8d3e,0xb9417b37,0xb946be4c,0xb9540d69,0xb95b3283,0xb9666c9b,0xb96a8b0a,0xb973a028,0xb9771f38,0xb97ded36,0xb97d6e75,0xb97e333d,0xb9735504,0xb96d8eb4,0xb9689a09,0xb960b8f4,0xb95fc281,0xb941c445,0xb98305bd,0xb98a928a, +0xb958ed7d,0xb8aad938,0xb8d63ad7,0xb87f2f2d,0xb88d4ebf,0xb88ef885,0xb891801e,0xb89373d0,0xb8965530,0xb8902d33,0xb8d02fa3,0xb897bdc6,0xb9590c47,0xb984db70,0xb9871e9c,0xb87b2876,0xb889ff0d,0xb8520ef8,0xb863767f,0xb82be93b,0xb82ed0a4,0xb8276530,0xb814d819,0xb6fa0877,0xb82ee2d4, +0xb8670634,0xb8ab96f4,0xb866b969,0xb84d45f0,0xb8543742,0xb848485a,0xb85b9b3d,0xb898157b,0xb871f8b9,0xb87429e1,0xb80dc51e,0xb8169869,0xb8a4bcfa,0xb94022c7,0x3823bcfa,0x378f14bd,0x378bb028,0x37919b48,0x37907276,0x37905367,0x37906b35,0x3791aed3,0x378b701a,0x3790e73d,0x381bc44a, +0xb931cac8,0xb8ca1ef2,0xb8db6038,0xb89fc182,0xb8332083,0xb82105c3,0xb8103367,0xb7f9a916,0xb71fd5b4,0x38438795,0xb8184082,0xb8a947ee,0xb9138a8d,0xb88ffacd,0xb84dcfd6,0xb8910f84,0xb891940c,0xb8c64741,0xb918a176,0xb8fa2ada,0xb8c1809a,0xb818d0aa,0xb89892ed,0x3821fd9a,0x3850671e, +0x36894897,0xb75ca7b2,0xb6811606,0xb6e86a96,0xb6c7f31f,0xb6d52ef6,0xb6c93ff9,0xb6e4a202,0xb68b6d4b,0xb74e9de3,0x361aecf7,0x384ef7e9,0x382fe8a0,0x385318f9,0xb91d84ff,0xb7dcd040,0xb7726802,0x3785b734,0x37586dd9,0x37c74430,0x39342f4e,0x36a7d6fb,0xb87d593f,0xb94e9556,0xb8a5253b, +0xb801160f,0xb8178c24,0xb7945267,0xb85d05a0,0xb91edb96,0xb8cd8875,0xb88a475c,0xb7a6bab8,0x378ad294,0xb6a2b7d0,0xb792672d,0xb64ffce9,0x368b69e8,0x360bdadf,0x3603a8ff,0x361ce0a1,0x360b99eb,0x3616b406,0x36126f14,0x35e16ae0,0x369f248d,0xb679dfa5,0xb783a6f6,0xb7200257,0x3823c053, +0xb91f15f4,0xb888f467,0xb783795e,0xb62398da,0xb7a671ff,0x3885e513,0x39873e4b,0x36c9b934,0xb93b82ba,0xb9b9eff8,0xb90ff7b0,0xb8101389,0xb8a7fb62,0xb8bd821d,0xb9539703,0xb9c37f94,0xb99aedb6,0xb9530903,0xb848c4aa,0xb6de130d,0x36ec710c,0x36479115,0x3686ddd9,0xb632afc2,0xb525d252, +0xb58a98fb,0xb57de272,0xb57c3323,0xb5908ebf,0xb535b2e5,0xb5c52406,0xb52538a0,0xb57cf399,0x376c95f7,0xb794a717,0xb7d3aa07,0x38d04830,0x369254bd,0x37fc7ee7,0x39714f3c,0x398d9c9e,0x397a6731,0xb8a02047,0x39bb2463,0x39e2d613,0x395da19a,0x38ad23af,0x36ce3097,0x38c42a2c,0x39a3356c, +0x39f9d8b2,0x3a1b7efa,0x3a03349c,0x39db7830,0x396ada34,0xb875384b,0x379a2f97,0xb72641ab,0x35f0c7ed,0xb51afa81,0x359f937e,0x340afca0,0x352e2b5a,0x34c77147,0x3527f703,0x3451decf,0x358a0436,0xb46fb641,0x358a5151,0xb7005d76,0x373748a8,0xb887c1dd,0x3912e0a7,0x39621dab,0x39abdac6, +0x39c4958b,0x39b0ecb7,0x393c68ef,0xb93cdc67,0xb871add9,0x37fd085d,0x3919b7d1,0x39c7ee53,0x39af1e09,0x380a1ab0,0xb981d390,0xb9e9a716,0xb9fb94f4,0xb9e44995,0xb9ae707a,0xb91279e8,0x37b12dd6,0xb53e82d4,0x33cba1bf,0x35d66821,0xb56b3765,0xb3f1dd5d,0xb4d83ad8,0xb4553a6e,0xb4dc0d9b, +0xb3cc9658,0xb53b2ef4,0x35269c74,0xb631ce8f,0x36c50e74,0xb734131a,0x37e9ae8c,0xb6c61b75,0x38a41ae3,0x389a0153,0xb8504749,0xb93f451f,0xb9846938,0xb73f4918,0x39c9914f,0x39c5d877,0x3993eeb1,0x3865fd16,0xb9927f8e,0xb990db2b,0x370603d8,0x39adfeb9,0x3a0a5536,0x3a113741,0x39e92adc, +0x39a5627d,0x38fb4c2a,0xb7a31d56,0x36070fda,0xb585288d,0xb50df2b1,0x349e53ae,0x34c8d31f,0x346b7c1b,0x349d6a37,0x348ec67c,0x34927d6a,0x3491480b,0x348e8d56,0x3508f8db,0xb58139d4,0x348e4399,0xb5ddc5c6,0x38ad8029,0xb9a23415,0xb9ca33bf,0xb88162de,0x3a40f981,0x39e191aa,0x390c60b7, +0xb9179838,0xb9da3723,0xb96cf313,0x39d3440b,0x3a0dbb7a,0x39f98ef5,0x38ebc082,0x35057bd3,0xb8ba52ea,0xb8fad28e,0xb905bfd2,0xb8f5a94d,0xb8a00728,0x369e8fb7,0x367773be,0xb5b30c0b,0x3602177e,0xb5a1b7fe,0xb41069c0,0xb50e065f,0xb4bee2c8,0xb4cfda5e,0xb50dbcd0,0xb38736b5,0xb5a4cd19, +0x35afcbe1,0xb6808f20,0x37435d1e,0xb7e3253a,0xb76f12bc,0x37e15819,0x3a550a2f,0x3a85f4b0,0x3a8f4938,0x3a72441a,0x3a47a445,0x3a09525d,0x3983dba8,0x3813475a,0xb817c411,0xb92aaba8,0xb92f8397,0xb922d9f7,0xb8cbfaf5,0xb8727a20,0xb75a1d20,0x386cb2e1,0x38ea69f4,0x39173474,0xb82d1a2b, +0x3780fb77,0xb71d7942,0x3614bf76,0xb490186f,0x35c12f61,0x34ebe1be,0x35755361,0x353c1430,0x355cfd03,0x35347fdb,0x357ac4fc,0x355016e6,0x331ffc13,0xb68d1eb4,0x369e0ab6,0xb836a837,0x389388fa,0xb90d6189,0xb98bc5d5,0xb99169b2,0xb99a12af,0xb98722e7,0xb919564e,0xb91356c1,0xb8f398f1, +0xb8de014a,0xb8a27d63,0xb843fc43,0x368fc6ff,0x38903475,0x39009eef,0x391d8911,0x393bec9d,0x392e3dbd,0x393281a6,0xb825a35b,0x373aa97a,0x3631de52,0x36371361,0xb65772e0,0xb5a24b2b,0xb5e83fab,0xb5cc8e70,0xb5e2f53b,0xb5c695c1,0xb5f9b319,0xb56c761e,0xb6869974,0x369f8208,0xb659399d, +0x37b01ec3,0xb7f7b496,0x398bccf2,0x3958ce60,0x39584b5b,0x3926ff8c,0x38f48dea,0x3894f85e,0x37cf7823,0xb800ec1c,0xb8a62bd3,0xb90c017c,0xb9119e42,0xb9186b00,0xb9252ded,0xb911148d,0xb902127c,0xb8ddf89c,0xb8d1648b,0xb8ae6747,0xb8c39c4b,0x37f9fdc0,0xb6c0fbf1,0xb7966533,0x3515fe5b, +0x36a43b27,0x367cfb39,0x36631590,0x3682028b,0x3669a084,0x3682ec56,0x365e4a53,0x368411a4,0x36979852,0x35a23abb,0xb7935650,0x364d3806,0xb8357e94,0xb7f87295,0xb890e5ef,0xb88cb862,0xb8a177e6,0xb899efc4,0xb8a2e12e,0xb8a79468,0xb8b4c501,0xb8c264d6,0xb8d5e512,0xb8ee2e41,0xb9073ed7, +0xb9192944,0xb9125f49,0xb90f01fd,0xb9064cf8,0xb9053583,0xb8eb5f25,0xb90417ee,0xb8a5d0c3,0x38574454,0x382d8330,0xb61764ee,0xb789c808,0xb70ce73c,0xb73a8602,0xb72bae08,0xb7323579,0xb72be6c5,0xb739b320,0xb70f9fdc,0xb785fcd6,0xb64526b6,0x3822e929,0x3822490f,0xb8add3e9,0xb86ee7d0, +0xb87a13c8,0xb87bff27,0xb8835a0d,0xb88bcc5e,0xb8910bb6,0xb891cf15,0xb8a7fe16,0xb8ba40c0,0xb8c99143,0xb8db780b,0xb8e782ec,0xb8f810f7,0xb8ebd74c,0xb8e70998,0xb8e26f2a,0xb8da7c78,0xb8d9ecc7,0xb8bb0c89,0xb8f58fd7,0xb8e3b27e,0xb91a32be,0x384aca54,0x37f2b6e4,0x37ef5aef,0x37f4dd47, +0x37f3b6bd,0x37f3aa22,0x37f3b2e3,0x37f4d916,0x37ef85b1,0x37f3031c,0x38458b01,0xb90eed11,0xb8bfe5eb,0xb8d3ec31, }; -const uint32_t orange53_rom_AlphaR48[578 * 128] = { -0x3e19a898,0x3de6627f,0x3e157d8b,0x3d58b459,0xbc6642fb,0xbd08b0ec,0x3d726c14,0x3b5cf6af,0xbd5b6ab2,0xbd64857f,0xbd489dd2,0xbd0fcff7,0xbd1c7e93,0xbd5d1646,0xbd22b20b,0xbb2f6614,0x3d296fcf,0xbd2a6fdf,0xbc0f342e,0x3d12fd31,0x3e04120f,0x3ddb8e50,0x3de27e65,0x3de2befa,0x3deae52c, -0x3decb987,0x3de8f62d,0x3de9d263,0x3ded8c1e,0x3ded9100,0x3dfc4d51,0x3df81d6f,0x3e034c99,0x3dfec26b,0x3dfd29a9,0x3df4ed96,0x3deff75b,0x3e1b94e4,0x3e096b2a,0xbd324d90,0x3da2b26f,0x3bbfd3d9,0x3d674b5d,0x3d298a8f,0x3d2103ef,0x3d9d84bd,0x3cd24051,0x3ce76c1d,0x3c99af42,0x3d4b90bc, -0x3d03e7f5,0xbcaaf3ec,0x3d6e3bd9,0x3ca0e4cc,0x3d42543e,0x38c216d4,0x3de1792e,0x3e036313,0x3e00ca6d,0x3e089782,0x3e03df55,0x3e034a3d,0x3e11cd58,0x3e16966d,0x3e1ca540,0x3e1bb2db,0x3e2cac10,0x3e2414e7,0x3e382987,0x3e3549c0,0x3e326cf3,0x3e246350,0x3e14065d,0x3e38bb8a,0x3e04d687, -0x3c8352b0,0x3dc2d9bd,0x3cc4f7f0,0x3d2f7ebb,0x3a2a83c6,0x3d6fc498,0x3b9c0034,0x3d8bba11,0xbc8752d8,0x3d9fce1f,0x3cbad190,0x3ced6d33,0x3cb1d1ff,0x3d2c6425,0x3d2c2d5f,0x3cd3793f,0x3cd69bec,0x3daee1d8,0x3e0d536b,0x3df8ff3f,0x3e13b427,0x3e101c21,0x3e180e73,0x3e1cac4f,0x3e1dca42, -0x3e2906ec,0x3e367a27,0x3e47bb4c,0x3e5bad9b,0x3e6dfc26,0x3e67a32c,0x3e59682c,0x3e3ce816,0x3e301042,0x3e4260d4,0x3de97a03,0xbc0bff40,0x3d247094,0x3c6d2ecf,0x3ca66a70,0x3c912622,0x3c91d849,0x3ccfa4ac,0x3c9ad2be,0x3c22d7c8,0x3cc87c79,0xbbe67a64,0x3d06b251,0xbb2b63c9,0x3cb61939, -0x3cd477ea,0x3c844f47,0x3c7c7789,0x3d3cf60e,0x3e007261,0x3ddaeb2f,0x3e0d763e,0x3e0c4204,0x3e17e95b,0x3e1d68b1,0x3e27acc4,0x3e31f561,0x3e4930b7,0x3e5d24e6,0x3e762fa5,0x3e8b5aa5,0x3e891046,0x3e7c591a,0x3e52f38b,0x3e2b510e,0x3e4e3030,0x3e124dfa,0x3be54067,0x3d6fff0d,0x3d086530, -0x3cf6fd95,0x3c4ded1b,0x3c280405,0x3bb791d8,0x3a8f2fc6,0x3c96fe47,0x3c340b83,0x3bb0fad9,0xb994a1c1,0x3c177b75,0x3c68886b,0x3aa1304b,0x3d5dc3e5,0xbcca1b8c,0x3d8a3a43,0x3deceb96,0x3df3b440,0x3e153eb2,0x3e1681ef,0x3e23b65a,0x3e2bf80b,0x3e3386a1,0x3e4941d0,0x3e5c74a9,0x3e83e048, -0x3e946363,0x3ea61243,0x3ea48319,0x3e95fda9,0x3e6ca283,0x3e4f48ba,0x3e713af7,0x3e81e5cf,0x3d4738b9,0x3d0ee3ee,0x3d3fe311,0x3c1c625a,0x3d5a40a9,0x3c7592eb,0x3cc759e8,0x3c6b9383,0x3c55e9c2,0xbb1d703c,0x3bf8919d,0x3c0ad6e6,0x3bd83f75,0x3c8e7d4c,0xbc0ca87b,0x3d1dc51a,0x3ca8cd08, -0x3db4d5c5,0x3e072b85,0x3e1470c1,0x3e405a19,0x3e4d2c5b,0x3e69d01b,0x3e6fd7a9,0x3e8b40a1,0x3e90cd02,0x3e9253f1,0x3ea8c4ad,0x3eaea1ae,0x3ead03b7,0x3ea26b5d,0x3e9ea1f1,0x3e9235af,0x3e8c2c95,0x3e9eadec,0x3dcfb210,0xbd9de642,0x3df0398d,0xbb6f5358,0x3d4330f5,0x3ccd6f30,0xbc2de694, -0x3cb61d2a,0x3b19db13,0x3bb0988d,0x3c42e448,0x3c3bfc69,0x3c13221e,0x3bd77d4e,0x3d0ecf57,0x3c82a19d,0x3d2aa449,0xbbe75f30,0x3d554642,0x3e21ca2e,0x3e1e2b47,0x3e54600e,0x3e617157,0x3e772539,0x3e816e83,0x3e8213d5,0x3e8ace7c,0x3e9002fe,0x3ea3c438,0x3eae3bb8,0x3eb130d5,0x3eb52eb3, -0x3ea9899f,0x3ea2ebe7,0x3e8e4729,0x3eb5ab67,0x3e148a27,0x3ddb96f9,0x3d877c48,0x3d1d886e,0x3d44e8da,0x3cce4fac,0x3c645da4,0x3bf7756e,0x3c02ecac,0x3c82c8a9,0x3c08c10b,0x3bde1c7d,0x3ca5cb0e,0x3bf2b8ac,0x3c9e824b,0x3c9e61e9,0x3cc8dbc1,0x3d054530,0x3dd6e9fb,0x3e2089bd,0x3e26c6ec, -0x3e5ce24a,0x3e7e3ad9,0x3e92a08c,0x3ea99795,0x3ead9db4,0x3ea7bcc3,0x3ea271ea,0x3ea0d936,0x3ea5e3ff,0x3eafd9ad,0x3ebd45ad,0x3ec2b985,0x3ed7183f,0x3eaec3e6,0x3ecdff10,0x3e6d0ee4,0xbce8c624,0x3e1007de,0x3c68b6d4,0x3cb91f31,0x3c1f976a,0x3cd063e0,0x3c67689f,0x3cfb28e8,0x3c908080, -0x3c4b1187,0x3b745552,0x3c803a22,0x3cfb5d9b,0x3c7bb19e,0x3ce19e1a,0x3d48bf3d,0x3c8b2d0d,0x3ce22831,0x3e25d1b2,0x3e1955c4,0x3e4e2fd1,0x3e7b069f,0x3e9681f0,0x3ea7be06,0x3eb7edbd,0x3eba74b8,0x3eb53b16,0x3ea895ff,0x3ea7a29f,0x3eb414c8,0x3ebd242e,0x3ec89e92,0x3ede6fd2,0x3ed1260d, -0x3ed61e50,0x3e56f7f0,0x3da49d1e,0x3dbd7b39,0x3c04b91d,0x3dae3666,0x3cb71869,0xbc1b52d2,0x3c69394b,0x3c89ae5a,0x3ca7604c,0x3c9adf7d,0x3c14c580,0x3ccc62e3,0x3c81adb9,0x3c596c54,0x3cb55a07,0x3d4e36af,0x3ca4f9ca,0x3e0de2b7,0x3e11f8f4,0x3e1b7e89,0x3e3c55ac,0x3e557d47,0x3e789ade, -0x3e8d0f2b,0x3e982874,0x3ea20282,0x3ea4347d,0x3eaba09f,0x3eb0205b,0x3ea7d0f8,0x3eaf5953,0x3ea5c9e7,0x3ebc64cc,0x3ebc2bc2,0x3ed0fa84,0x3e663b9c,0xbcbca97d,0x3de8bed4,0x3d55c23d,0x3cfb1ab4,0x3d03c199,0x3d9be8df,0x3c2b2fb5,0x3cdf8118,0x3b4fb032,0x3c9f1ffa,0x3c69c811,0x3d049ea5, -0x3c4164ed,0x3cae7e57,0x3d0fe1a7,0x3c926423,0x3d0b7f9e,0x3cdc4f14,0x3e22a366,0x3e0188f9,0x3e0ed4d3,0x3e2cc6cb,0x3e4f87df,0x3e80dc3c,0x3e917e41,0x3e9d5d10,0x3eacbb4d,0x3e99e7d6,0x3e929b0e,0x3e9f447a,0x3e98c748,0x3e9e4293,0x3eb5a234,0x3eaa439c,0x3e8c3c1d,0x3e6f46cb,0x3d57b7c2, -0x3d86ca11,0x3d0deb82,0x3c323be8,0x3d105840,0x3bfc424a,0x3d20d22c,0xbce3f707,0x3d82c18f,0xbad31b99,0x3cda720e,0x3c8b94c4,0x3ca63fa4,0x3cccecc3,0x3d636458,0x3da0c9d7,0xbc916cc6,0x3e0df565,0x3e296b24,0x3e0b37b5,0x3e28e118,0x3e303f44,0x3e4a1af6,0x3e56e87f,0x3e5eaae4,0x3e656511, -0x3e66fcee,0x3e6ae3c8,0x3e80f96e,0x3e843df7,0x3e838b78,0x3e7e1180,0x3e80be72,0x3e8526c5,0x3e88ee55,0x3d212638,0x3dbe0e39,0x3d862ef7,0x3d216dfe,0x3dd50604,0x3cbcc64a,0x3d188caf,0x3c2c9663,0x3d5832c5,0x3c0c39d6,0x3d51da27,0xbb835869,0x3d2b1ee4,0x3cbb881d,0x3d0eced8,0x3b2f260f, -0x3cd594af,0x3d84460f,0x3cbc488f,0x3e29d0e0,0x3deaadb7,0x3e0fa109,0x3e150a90,0x3e28af5d,0x3e2f0282,0x3e3f6892,0x3e48e1fd,0x3e513b9c,0x3e5c1218,0x3e658846,0x3e707187,0x3e6d9c4e,0x3e5e5566,0x3e66068c,0x3e319a1a,0x3e34110c,0x3e2fd9f7,0xbbd40aec,0x3db5d6e2,0x3ca4f028,0xbc14c6fc, -0x3c7818ba,0x3d4bd16c,0x3ce47f09,0x3d5b584e,0xbcb5c2f6,0x3daf08a1,0x3cf85cdb,0x3d694934,0xbb3fdfdc,0x3d3bf926,0x3d5fd09b,0x3d73a3b7,0xbc0d8831,0x3dc10377,0x3e14f7e2,0x3ddd714b,0x3e0221d0,0x3df3aa84,0x3e04fad3,0x3e0c0607,0x3e282eff,0x3e3b08d8,0x3e52a075,0x3e5245c3,0x3e584c65, -0x3e5b41dc,0x3e52040f,0x3e47e61b,0x3e4b0896,0x3e2c920f,0x3e153168,0x3e2bdf73,0xbd17612f,0x3ddf9437,0x3d9dee91,0x3d9860a6,0x3dda064f,0x3d0c8fd2,0x3ddb9f31,0x3d008393,0x3d1e75e1,0x3c77f49c,0x3d6e91d2,0x3d35f2cf,0x3d553d8d,0x3d38edc5,0xbc0f72e4,0x3d90eff6,0xbd271cac,0x3e0a82df, -0x3e02e956,0x3e072172,0x3e09076c,0x3e0b4578,0x3e0991b8,0x3e006ddc,0x3e107e35,0x3e0d1b1e,0x3e148d91,0x3e244d0f,0x3e25d41a,0x3e37e898,0x3e3697fe,0x3e1dcd65,0x3e207d5e,0x3e294def,0x3e0cf366,0x3e22d05e,0x3d401b10,0xbcfe7598,0xbd62c79f,0x3d6f66db,0xbbf497b9,0xbd92dc25,0xbdafc397, -0xbd777b99,0xbd356ab5,0xbd4fc530,0xbd89ba8a,0xbd8c3996,0x3ae85a1a,0x3d8f06c8,0xbd24332f,0xbbb82b9b,0x3d70d9a0,0x3e22c3e1,0x3e04c9b1,0x3e07f275,0x3e077954,0x3e0776ca,0x3e0716f2,0x3e05d3d9,0x3e0c3c7d,0x3e0e7515,0x3e13c399,0x3e16d692,0x3e14a308,0x3e1991b9,0x3e16ec4a,0x3e125dbc, -0x3e13eada,0x3e10d023,0x3e42b404,0x3ee13301,0x3e9cc958,0x3eb11fae,0x3e8cb17f,0x3e142e06,0x3d195e3f,0x3e867d75,0x3e288a8f,0x3caecbef,0x3bca5a92,0x3b8815e8,0x3cbad244,0x3c828394,0xbc89fc31,0x3c8ff989,0x3e1b891d,0x3e74003f,0x3bc20da9,0x3e0a03ad,0x3e6794a8,0x3e9fd86c,0x3e930189, -0x3e986d81,0x3e97b881,0x3e9d8be9,0x3e9f50c9,0x3e9d5049,0x3e9e46e6,0x3ea11b14,0x3ea0ce31,0x3eaa9643,0x3ea718b3,0x3eb12c9f,0x3eabbefc,0x3eab93f9,0x3ea69658,0x3ea2d5a2,0x3ecc5612,0x3ece5647,0x3dec0ecf,0x3e8bc1ab,0x3e20a62c,0x3e77a0e5,0x3e70c72e,0x3e42e16c,0x3e7a2e14,0x3e4c7b32, -0x3e3b91ab,0x3e3b96c2,0x3e69b65d,0x3e3f83b0,0x3d9da3fb,0x3e7c84bf,0x3e32f369,0x3e5fd7d8,0x3e27ed1c,0x3eac7d9c,0x3ead16a2,0x3eb334da,0x3eb87ec3,0x3eb4c993,0x3eb30eca,0x3ec77558,0x3ed02399,0x3ed7fd91,0x3ed4830d,0x3eebdfbb,0x3ede31d5,0x3efa9116,0x3ef6f591,0x3ef502af,0x3ee1d700, -0x3ed05b70,0x3ee8cb3e,0x3eccff18,0x3e6be456,0x3ea2c393,0x3e43fd4f,0x3e588864,0x3e086329,0x3e5b945b,0x3dea826a,0x3e5d4293,0x3dc6f987,0x3e7ee084,0x3dedc996,0x3e2b3da7,0x3e0ce96a,0x3e35de71,0x3e471e20,0x3e18fb3d,0x3e4399c4,0x3e85258a,0x3eaf9cbd,0x3eadd73f,0x3ec3286e,0x3ec52ffa, -0x3ecf060e,0x3ed88859,0x3edb9665,0x3eec2d41,0x3efd03bf,0x3f08ce47,0x3f157b4e,0x3f22756b,0x3f1df479,0x3f16ca55,0x3f042597,0x3ef8f4c0,0x3eeec815,0x3ec26ac7,0x3e2b32b3,0x3e504eb7,0x3e1ade15,0x3e01aeb9,0x3dd443fa,0x3e06b7a7,0x3ddefe94,0x3db6d063,0x3d91d08a,0x3dc04f23,0x3d5cbb4c, -0x3de60ec7,0x3d695552,0x3dd0591c,0x3e01c054,0x3dd63cbf,0x3e082873,0x3e3d7e44,0x3e9eedc9,0x3e98282f,0x3eb9facc,0x3ebeb961,0x3ecd5dab,0x3ed803ea,0x3ee9ceb0,0x3ef71c3a,0x3f09295c,0x3f16516b,0x3f25f64e,0x3f3c50e0,0x3f39cb22,0x3f2ea2e2,0x3f10303f,0x3ef838e4,0x3f0405d3,0x3ed634d1, -0x3e4f5342,0x3e6a7adf,0x3e280d61,0x3e0bf654,0x3dbee43a,0x3d86e01b,0x3d209f8e,0x3d038b9a,0x3d6e915d,0x3cf7269e,0x3cb63006,0x3c5f8a99,0x3d225b0d,0x3d4da893,0x3d554641,0x3e08121a,0x3d2a585e,0x3e51e59f,0x3e8f9c8b,0x3ea5b51d,0x3ec37f33,0x3ecbf9c1,0x3ee08c09,0x3eef1c52,0x3efd4d5c, -0x3f0df115,0x3f1989ce,0x3f33931c,0x3f495d28,0x3f631993,0x3f60dbcf,0x3f51992a,0x3f282df9,0x3f12e2d5,0x3f1a08e5,0x3f216e54,0x3eb59200,0x3e6bcd7d,0x3e531e2c,0x3df39639,0x3e349a62,0x3db7aa71,0x3dcaf573,0x3d7f53b0,0x3d7964a1,0x3c740e56,0x3d26e3d4,0x3d1f9b0b,0x3d3b5c56,0x3da4a169, -0x3d315b85,0x3e018cef,0x3e1c9924,0x3e871a55,0x3ebe37b5,0x3edc9664,0x3f07eacd,0x3f12a93c,0x3f228f7a,0x3f2df363,0x3f4033ef,0x3f47bfec,0x3f4b5ab6,0x3f6e1d7b,0x3f763e24,0x3f73a110,0x3f6123d3,0x3f59d5e4,0x3f4aee3b,0x3f3b9ec1,0x3f48b70e,0x3ed7a379,0x3dc7bfd1,0x3ebcd67d,0x3e126140, -0x3e5bb16b,0x3dfac314,0x3d2b1e05,0x3db2917c,0x3d231652,0x3d26bfce,0x3d5a8045,0x3d305c12,0x3d4d24b1,0x3d62d9db,0x3de52886,0x3decdaf5,0x3e2920c8,0x3dd4f11d,0x3e6b4fe6,0x3ed4ecfa,0x3ee47baa,0x3f0de711,0x3f1e3ae2,0x3f2ec8cc,0x3f3ef334,0x3f44875c,0x3f54d72f,0x3f5a85f1,0x3f7616b8, -0x3f819c43,0x3f820996,0x3f81eac4,0x3f7453e8,0x3f6844f6,0x3f4e6c0c,0x3f6910f9,0x3f0d39b8,0x3eeea977,0x3ea027ef,0x3e83d927,0x3e57b641,0x3e0c6b4c,0x3dc9beb2,0x3d6fc754,0x3d7d918b,0x3d96c46a,0x3d6d8e8b,0x3d5a2b6e,0x3d9a1e5f,0x3d9989b5,0x3dcc60d7,0x3df9e609,0x3e1a5503,0x3e49cd2e, -0x3ea2dff9,0x3ed12eea,0x3eedbbdc,0x3f131932,0x3f26f67e,0x3f3bdc0a,0x3f5cf57d,0x3f684779,0x3f6b4c62,0x3f71118a,0x3f730bd5,0x3f74f14c,0x3f75f49c,0x3f7c63bb,0x3f7f7720,0x3f85b468,0x3f6e7e30,0x3f74ebe3,0x3f3a0292,0x3e5c7177,0x3ee2c25a,0x3e494b19,0x3e294b0e,0x3deeb90b,0x3de680bc, -0x3dac9217,0x3ddbff5b,0x3dfdd104,0x3d883f95,0x3d3a227b,0x3daf149d,0x3df595f2,0x3deeaf4e,0x3e301bd5,0x3e307833,0x3e191a8d,0x3e5f7667,0x3eca92f5,0x3ed6b86d,0x3f0abf08,0x3f222628,0x3f3ec6b4,0x3f52e2db,0x3f6cd344,0x3f784886,0x3f7b8d1e,0x3f749f96,0x3f6f4259,0x3f780c6c,0x3f73d331, -0x3f792341,0x3f81556a,0x3f80c21f,0x3f6ecf4e,0x3f332e33,0x3ef4284d,0x3ea085cf,0x3e595acf,0x3e7c08f9,0x3e139963,0x3d1032ee,0x3dd26762,0x3db4367f,0x3e0ac3a8,0x3dd490d0,0x3d611ffc,0x3df27ae2,0x3dd6ed1f,0x3dd7334d,0x3e079d3a,0x3e6728a8,0x3e424792,0x3eba1d4b,0x3ec29918,0x3ed7f8c7, -0x3efa4ca1,0x3f149d50,0x3f2cb91a,0x3f428f07,0x3f52e193,0x3f6216d7,0x3f65ba4b,0x3f762612,0x3f7ebbfc,0x3f77239f,0x3f703cab,0x3f589cba,0x3f557311,0x3f6a0637,0x3f6d2864,0x3f2dac95,0x3e9f72ca,0x3ed1c621,0x3e812098,0x3e343487,0x3e56390d,0x3e7fd958,0x3de5e38a,0x3e0838d6,0x3da1f2c3, -0x3dcd13cb,0x3dad0304,0x3e0313c1,0x3de3ab5e,0x3e064024,0x3e43def5,0x3e1897ad,0x3e668532,0x3e697e53,0x3ee62511,0x3ecf54f8,0x3ecfd485,0x3ef9d51e,0x3f0fb8f0,0x3f2f2c54,0x3f4516de,0x3f564673,0x3f68e56a,0x3f5cc825,0x3f57498f,0x3f681e5c,0x3f5bbf5b,0x3f5eb215,0x3f6922e0,0x3f63c01b, -0x3f3d1f67,0x3f2c2e8d,0x3ec3086d,0x3ea6f3d7,0x3e7ad602,0x3e2dc3a3,0x3e3a7806,0x3debfa9c,0x3e2aaeea,0x3c9943aa,0x3e5ee436,0x3d809ea6,0x3df9ea5a,0x3de030d0,0x3e00e2e9,0x3e33c385,0x3e76a4e4,0x3e9abfec,0x3dfd076c,0x3ed926f4,0x3ef2bad4,0x3eda1987,0x3ee83863,0x3ef8182b,0x3f0d0f4d, -0x3f1a5159,0x3f23f421,0x3f305f18,0x3f38ab29,0x3f3ce8b7,0x3f49d250,0x3f49f69b,0x3f485128,0x3f408a83,0x3f39cb55,0x3f3fa852,0x3f357133,0x3eb334a9,0x3edfdf9a,0x3ea966d0,0x3e84ff4f,0x3eabd260,0x3e3d3484,0x3e30dbc7,0x3e095ea7,0x3e4a451e,0x3ded67cd,0x3e3ae94f,0x3d959114,0x3e3a9f56, -0x3e176dbc,0x3e2a3422,0x3e126d23,0x3e534b58,0x3e9e71ef,0x3e614d47,0x3ef2cc2d,0x3ec3fe8d,0x3edf838e,0x3ee789a4,0x3efde8d9,0x3f05b9a3,0x3f12100f,0x3f1aed6e,0x3f23a080,0x3f2cbd77,0x3f3226f1,0x3f38bfa3,0x3f3719a3,0x3f2eef42,0x3f2d0eab,0x3f15ed3e,0x3f0ac683,0x3f08fdd4,0x3e52e65c, -0x3eb8d001,0x3e65056c,0x3e116d16,0x3e2d69e5,0x3e67a0ad,0x3e36f473,0x3e6e48ed,0x3dd25aa2,0x3eb094d2,0x3e27d43c,0x3e8ab961,0x3ddc2f4e,0x3e78d0b3,0x3e7b18c0,0x3e896201,0x3dfeb30a,0x3ec0cb6b,0x3eda918a,0x3ec6f14b,0x3ed4910a,0x3ed4a838,0x3ee40993,0x3eef7226,0x3f075e53,0x3f126407, -0x3f1f36c5,0x3f203f14,0x3f257062,0x3f296988,0x3f210fc4,0x3f1cba46,0x3f1c41aa,0x3f0c2989,0x3ef2a2b0,0x3f07f6da,0x3e174d6c,0x3ed01f09,0x3ebcad4a,0x3eb7fc4f,0x3ede9563,0x3e64fece,0x3ec987a3,0x3e82bc51,0x3e8336fd,0x3e574a05,0x3e9dd127,0x3e86a656,0x3e9f3cd5,0x3e9c08d5,0x3e23603d, -0x3eba9ebf,0x3dbc34e4,0x3ee2c98d,0x3ed3a2a3,0x3ee23ecd,0x3ee2d5ab,0x3ee895a5,0x3ee4aa10,0x3ed95323,0x3ef1a40a,0x3eeb8750,0x3ef64d8e,0x3f0552ad,0x3f034109,0x3f0eb6bb,0x3f0ee06d,0x3ef97bb9,0x3efee60a,0x3f06415b,0x3ed5bdc0,0x3eebea0d,0x3ea405fb,0x3e093b7d,0xbbe9861a,0x3ea9d171, -0x3e439923,0xbc8b2809,0xbd6339d3,0xbc52c213,0x3c89029b,0x3ab1829f,0xbd18ed1b,0xbd1c9cb8,0x3e5838c9,0x3eb6771c,0x3c0f07a1,0x3e3f19e0,0x3eafbb3d,0x3ee33fe9,0x3ecc17a9,0x3ed11d8d,0x3ed09584,0x3ed2101f,0x3ed242e0,0x3ed01a2c,0x3ed895be,0x3ed93240,0x3edfb27e,0x3ee38ae4,0x3ee0dd7c, -0x3ee7bc01,0x3ee4c426,0x3edddd51,0x3ee0f02d,0x3ede6b61,0x3f1f42a9,0x3e9377de,0x3e2dc93e,0x3de89c81,0x3e8757e8,0x3eaf2ba7,0x3ea4d47e,0x3e69c35f,0x3e9c2029,0x3eb2a4f7,0x3eaec044,0x3ea933dc,0x3e9c8e6f,0x3e9d0d03,0x3ea5e2fd,0x3e9fbf44,0x3e9bc97a,0x3e80be48,0x3e9e3d62,0x3ea31035, -0x3e862260,0x3df95ce5,0x3e1efc78,0x3e1ffccc,0x3e1d93ed,0x3e24ad12,0x3e28b451,0x3e28d9f9,0x3e2b5ce6,0x3e2f4233,0x3e2d3acf,0x3e33ca5e,0x3e2be026,0x3e33d09f,0x3e2f95b9,0x3e32d32a,0x3e32f25d,0x3e2ab7ab,0x3e52f5e7,0x3e67ae9d,0x3eeb3431,0x3e7d1fb9,0x3eab3279,0x3e85dfc8,0x3e95ee81, -0x3e8abd9e,0x3e478f26,0x3e94beb5,0x3e8cb036,0x3e8fd564,0x3e7a9fd2,0x3e8c1357,0x3e9ff2cf,0x3e84c1f4,0x3e95d595,0x3e8609e7,0x3ea9a753,0x3e55f9ed,0x3e37be58,0x3e4b18d1,0x3e447436,0x3e47df15,0x3e44d6c4,0x3e5e2456,0x3e7259b8,0x3e78b4ee,0x3e6a86a3,0x3e800762,0x3e656b89,0x3e7aaddb, -0x3e7ae9d7,0x3e805ba6,0x3e7c4413,0x3e6c6df5,0x3e4fba81,0x3e8876c1,0x3ec30c5c,0x3e6f9170,0x3e94bc79,0x3e80e89c,0x3e8c50de,0x3e38c51a,0x3e6e3cac,0x3e12c3b3,0x3e8192bd,0x3e117f46,0x3e3c6e41,0x3e488b83,0x3e5064b4,0x3e409798,0x3e5d0201,0x3e6c8f39,0x3e8a0f41,0x3e4e9602,0x3e1727c9, -0x3e49b11d,0x3e4021c4,0x3e562be6,0x3e62e4d0,0x3e7a5ad2,0x3e83fdda,0x3e8e4a8a,0x3e93949f,0x3e91a198,0x3e94ada1,0x3e985f3d,0x3e9733be,0x3e987b44,0x3e964214,0x3e8abc1d,0x3e4132c9,0x3e8de42c,0x3ec3ef70,0x3e82e85f,0x3e79e1aa,0x3e4bd48b,0x3e32ffea,0x3e25543f,0x3def3d7d,0x3de388aa, -0x3dfdf033,0x3dd06a25,0x3e0f014a,0x3dca4df1,0x3e11ce58,0x3e08dc62,0x3e24ac4a,0x3e292060,0x3e577e7c,0x3e466b68,0x3e0d8760,0x3e2c258e,0x3e350834,0x3e4baff1,0x3e5cc030,0x3e77d66a,0x3e90b7a8,0x3e972e32,0x3e993b77,0x3ea1259f,0x3e9fa0b1,0x3ea5594a,0x3ea9678d,0x3eabc274,0x3e9e46e3, -0x3e95e1f0,0x3e7030de,0x3e8d4fea,0x3ec068d8,0x3e6bc718,0x3e43560c,0x3e29f3a2,0x3e18598b,0x3dd2624e,0x3d9d05c9,0x3d74203c,0x3d123818,0x3d01cfed,0x3cf4d811,0x3d3165ec,0x3d4cbed6,0x3d8344b8,0x3de2d0aa,0x3db917bc,0x3e4d5ed5,0x3e204a1b,0x3e01be52,0x3e31bf3c,0x3e36f3c6,0x3e532b52, -0x3e7e52fe,0x3e8eacb2,0x3ea489f9,0x3eb4f263,0x3ebdf2cc,0x3eb98824,0x3ebe638c,0x3ec4fff4,0x3ec8fc0a,0x3ec9bee1,0x3ec3cc22,0x3ea28291,0x3e77092b,0x3dea79ea,0x3ed0f84d,0x3ea14605,0x3e5cba8e,0x3e57f2b2,0x3dea47be,0x3e074f59,0x3da34828,0x3d8f8ef8,0x3da79fa1,0x3d762b2d,0x3d8a7797, -0x3d714b95,0x3da9ddc1,0x3dd7c753,0x3e10ea2a,0x3e0f65a1,0x3e6b0073,0x3e4e84ff,0x3e79accc,0x3e989743,0x3ea62c15,0x3eb65f9d,0x3eb68a9c,0x3eeaed0a,0x3ede339d,0x3ee981c7,0x3efce595,0x3f0484cf,0x3f01970f,0x3eedfbd8,0x3ed973b4,0x3ecc81b7,0x3ecb3e5a,0x3ea1b512,0x3e6a6f53,0x3ee83d3c, -0x3f220d21,0x3e8f0ec8,0x3eb69450,0x3e614b13,0x3e3e55f6,0x3e214661,0x3dd57269,0x3db54a87,0x3d9d8fb9,0x3d8469ad,0x3d443e30,0x3d809b5f,0x3dae3253,0x3db53f3b,0x3e2e4995,0x3e43255d,0x3e94b098,0x3e919e34,0x3e60f6d0,0x3e8d32d7,0x3e7a512f,0x3ea1e092,0x3eb14040,0x3edf9d19,0x3efc0b86, -0x3f14206a,0x3f180a48,0x3f1debef,0x3f1cb6e5,0x3f102c5e,0x3f0813b8,0x3eff46e2,0x3ef16ba9,0x3ece0b51,0x3e8142e7,0x3ef96dfb,0x3ee8e62b,0x3ec1d9f6,0x3ebea24f,0x3e82a268,0x3e5d83d2,0x3e271488,0x3df52942,0x3dd3dcd3,0x3dfea1b3,0x3dce44d2,0x3dd12f98,0x3dd07557,0x3dfe861c,0x3e15ac03, -0x3e4b5e3f,0x3e6fd2c2,0x3e8a7df1,0x3e65c9cf,0x3e499100,0x3e79a05c,0x3e65d322,0x3e64ed95,0x3e5c609f,0x3e8a56d8,0x3eb02c1a,0x3ee31717,0x3f15e3c8,0x3f237f01,0x3f1dc35b,0x3efd03d8,0x3ee2a7cb,0x3ec2a01b,0x3e806249,0x3eaa45bb,0x3e13f546,0x3ec77c78,0x3f278dd9,0x3e94d684,0x3ec1208a, -0x3e8f37b9,0x3e68ea89,0x3e1c96d7,0x3e065696,0x3e012b49,0x3e65e70f,0x3def9304,0x3de08f01,0x3e0aab90,0x3e181352,0x3e3f1826,0x3e8267c1,0x3e4def18,0x3e90803e,0x3e9c27db,0x3e122d10,0x3e4881f2,0x3e5ba90b,0x3e3c2e70,0x3e3acc5b,0x3e341425,0x3e77ce83,0x3ea8456c,0x3ee2f79c,0x3f0d4684, -0x3f0df080,0x3f00d83b,0x3ed60c9b,0x3ead5394,0x3e56d236,0x3e5ecff0,0x3dafcab9,0x3ed6bce3,0x3f0a0193,0x3ea40f83,0x3ec83591,0x3e35882c,0x3e6194f2,0x3e2234f5,0x3e22e054,0x3e15087b,0x3e86477d,0x3e12c8b8,0x3dcb32e9,0x3e17df1e,0x3e31696c,0x3e502d54,0x3e713e87,0x3e8a86a0,0x3ea6cd91, -0x3e47f965,0x3e42d602,0x3e59bbac,0x3e4790c6,0x3e83ec6a,0x3e916c22,0x3e97bcfe,0x3ea7c55a,0x3ec01124,0x3ed4cada,0x3f01105c,0x3f130d04,0x3f1c0123,0x3f02f86f,0x3edb9b2d,0x3e88d07a,0x3e8a9baa,0x3e15c11c,0x3eb9b614,0x3f311144,0x3ea2c23e,0x3ea63e93,0x3e855abd,0x3e89a0d6,0x3e476fc7, -0x3e5c451f,0x3e453cd3,0x3e53273b,0x3e22c608,0x3e1f5d5f,0x3e296285,0x3e66693e,0x3e6f8091,0x3e8d49c2,0x3e9c50a9,0x3eb964f0,0x3ecb9120,0x3e898c89,0x3e9b26b4,0x3e77e4ba,0x3e88785c,0x3e8085ad,0x3e89f03b,0x3e959f33,0x3ea9f2f4,0x3eb9dcae,0x3efbc8a6,0x3f0dc9c5,0x3f188728,0x3f17e210, -0x3f0c303b,0x3ed14128,0x3ed1bcc1,0x3ec1c4ac,0x3eb69b01,0x3f0d8883,0x3edee38e,0x3ec24626,0x3eb4620c,0x3e86efb5,0x3e78315a,0x3e5e903c,0x3e5a7066,0x3e5fc97b,0x3e36963c,0x3e2ffddc,0x3e4712ef,0x3e5c3df2,0x3e8f3cce,0x3e9782c4,0x3ea4fc77,0x3ed70a2d,0x3ea675f7,0x3ea483b0,0x3eabdcb9, -0x3e7ff231,0x3e885243,0x3e90776d,0x3ea8fc29,0x3ebf6eda,0x3eec486c,0x3f0cc659,0x3f14e0b3,0x3f19c188,0x3f191d03,0x3f1e5649,0x3f184a84,0x3f046194,0x3ef4a997,0x3ec46c05,0x3f1cec9a,0x3f0074a6,0x3ee2673e,0x3ec373a4,0x3e8b05cb,0x3ea2e0aa,0x3e777003,0x3e8e10db,0x3e729605,0x3e83b641, -0x3e6939e4,0x3e7821aa,0x3e7820d1,0x3e863776,0x3e884778,0x3eb36f93,0x3eba9266,0x3ec9aebd,0x3edd274a,0x3ea32070,0x3eb5c681,0x3eb70dbc,0x3eb3edaf,0x3eb361e0,0x3ebfc9c4,0x3eceb9b1,0x3edec067,0x3ef5aee4,0x3f04a9c8,0x3f073c57,0x3f0d367d,0x3f1076c7,0x3f11d521,0x3f0a51c5,0x3f0c1f9a, -0x3eeaf5d4,0x3edde77b,0x3f0b77a8,0x3eddfbcb,0x3eea7e6e,0x3ed6b6d6,0x3eba8ef0,0x3e99de2d,0x3e9cf86b,0x3e956459,0x3eb34c2a,0x3ea40bfc,0x3e941caa,0x3ea63ece,0x3eabbf75,0x3eb4669d,0x3eae3152,0x3ebc7827,0x3ecd6fde,0x3ecc91d8,0x3eb2b177,0x3ed332bc,0x3ecff3bb,0x3ede6769,0x3ee6d3a5, -0x3eeca7d6,0x3ee7ef11,0x3ee8c603,0x3ee08861,0x3eeae64e,0x3ef6e724,0x3f020bdf,0x3ef8808c,0x3f0114c3,0x3f019be5,0x3efcb5a3,0x3edd76b4,0x3eda5801,0x3f13dc3c,0x3edb68b9,0x3ee34482,0x3ef0e8a3,0x3edf99a3,0x3edce4db,0x3ecf825a,0x3eeb1d3f,0x3ee3c1de,0x3ee757f7,0x3ed96a47,0x3ed7105e, -0x3ee1727c,0x3eec8378,0x3ef3e4b2,0x3eee6cca,0x3ef88937,0x3ed56ed7,0x3ed0c3ab,0x3ee2fe11,0x3ee3d6fb,0x3eed3c9a,0x3eeac96f,0x3ee7c993,0x3efaea1a,0x3ef3989f,0x3ef96ce3,0x3f00651b,0x3eed1795,0x3ef3212c,0x3ef62c40,0x3ed9333b,0x3edd5b54,0x3ee55c99,0x3ea8e26f,0x3ea1732d,0x3ee7d388, -0x3ef9f8f4,0x3ed3f745,0x3ed716d8,0x3eecc86e,0x3edfb70e,0x3ede9a8e,0x3ed3faa9,0x3ecd550b,0x3ecfc399,0x3ed4cb85,0x3ed651e3,0x3eea0090,0x3ecf21a0,0x3ec65a89,0x3eec950b,0x3edbc08d,0x3e94ef96,0x3ea22f4a,0x3ea6d17b,0x3ea7c6d6,0x3eabe108,0x3ead832a,0x3eab6a7c,0x3eaeeb98,0x3ea84611, -0x3ea9e76b,0x3eaa319a,0x3ea973c3,0x3ead054b,0x3ead2f90,0x3ea8f85a,0x3eadcf60,0x3eaf4213,0x3f0ceb61,0xbda6adf6,0xbd9f98e8,0xbdfb1cb7,0xbd84ff30,0x3db04a26,0x3e79ca0e,0xbd8129af,0x3d625a0d,0x3e79e394,0x3e84dec4,0x3e8985cc,0x3e7bf716,0x3e80a86e,0x3e960b98,0x3e82057c,0x3d79c1f2, -0xbd1c65ad,0x3e8c32d6,0x3dc61500,0xbc74c1c8,0xbdbb40a0,0xbd850ca4,0xbd9cbea5,0xbda09f1d,0xbda6edff,0xbda6eec9,0xbda10fc5,0xbda1ff04,0xbda5bcdd,0xbda8e4f5,0xbdc13561,0xbdc7a186,0xbde35c01,0xbdd20108,0xbdcdead8,0xbdc0a26d,0xbdbfe4c7,0xbdc47d44,0xbe077bd2,0x3e54624c,0x3a7692ad, -0x3e02d1ad,0x3c5d39c8,0x3cac9d0c,0x3da1aa1a,0xbc3680c5,0x3d3fa529,0x3d92cef1,0x3d4d59ce,0x3c750aa8,0x3d96dc4f,0x3e3f0e83,0x3c48f9c4,0x3db49156,0x3d436e75,0x3dd576c8,0xbda7e75b,0xbd86a235,0xbd9f94bb,0xbdb812c5,0xbdafac78,0xbdab9e52,0xbdb79a6d,0xbdb34483,0xbdbff718,0xbdcf7eea, -0xbdfbb67b,0xbe0613f5,0xbe34ff2a,0xbe284403,0xbe1e3253,0xbdf52acd,0xbddb556e,0xbe0d6e4a,0xbdb1c878,0x3d7e6dcd,0xbd820a5c,0x3d5a5fa0,0x3cf555d6,0x3db4210d,0xbc600533,0x3da3f70e,0xbcf5e57e,0x3da5ddbd,0xbd871c6d,0x3da8cda8,0x3c1487fd,0x3d849f43,0x3ccd771b,0x3cb29741,0x3dbad4e5, -0x3d5a8e34,0x3bea5da4,0xbd9f301f,0xbd89f0a1,0xbddbe1a1,0xbdd1c0e9,0xbdd798f3,0xbdc569f1,0xbdb7a5ca,0xbdd10a00,0xbdefd4fe,0xbe2ae633,0xbe5f5d28,0xbe94a81c,0xbe84b97a,0xbe73de46,0xbe2ec9ec,0xbe200d5e,0xbded5cd4,0xbd80263d,0x3dd015d6,0x3d199f25,0x3d5cb87f,0x3d9660c1,0x3daeed3f, -0x38f7b833,0x3cacc51a,0x3d0a4e2c,0x3d968073,0x3d3735ba,0x3d99aaf0,0x3cea7d40,0x3db11a19,0x3d8320ec,0x3d645e2d,0x3dbbfe51,0x3d9babbd,0x3d2c46b4,0xbd36b8e0,0xbd4cf720,0xbdc2248a,0xbdc408d8,0xbdc5706a,0xbda2dc9a,0xbd94b04c,0xbd9ab555,0xbdf5b058,0xbe22d8e3,0xbe7a1eef,0xbebc7427, -0xbea958bf,0xbe963e5b,0xbe2dac76,0xbdf0424b,0xbe11ea4e,0xbd4beaa3,0x3dc4e482,0x3c91049b,0x3cf34d2e,0x3d44b6fb,0x3d809c6a,0x3d51dd4a,0x3d5733c2,0x3d002cc5,0x3c61bc99,0x3d04de50,0x3d0ef138,0x3d53184e,0x3d2f4a70,0x3d62789c,0x3d9eaf9f,0x3d50ba5e,0x3e0fb3dc,0x3d192aea,0xbcb9da4a, -0xbd71466b,0xbddf1029,0xbded14a8,0xbdd9308e,0xbdc23e9e,0xbd9093c4,0xbdc2e71a,0xbdd579ee,0xbe6ab343,0xbeabc0c9,0xbefe4584,0xbee4b6e4,0xbecdab8c,0xbe755b3b,0xbe3d72f6,0xbe61b54f,0xbec2730b,0xbde2652b,0x3ce7dc49,0xbab61cfa,0x3d613fbb,0xbd1749b0,0x3d0a136c,0xbc7b2195,0x3c9d87e1, -0x3d14456c,0x3d8b4b6e,0x3d7db137,0x3d467185,0x3d8355f5,0x3d642ebb,0x3de1c5d6,0x3daf1aa2,0x3dbde228,0x3be00d5c,0xbd799eed,0xbde2d926,0xbe4946b8,0xbe59ef4d,0xbe87e93a,0xbe636d0d,0xbe88450e,0xbe8383ac,0xbe4634bb,0xbed4085a,0xbee6fad7,0xbee6489b,0xbec076cb,0xbeb792d3,0xbead28ba, -0xbe9f3cd5,0xbef5c2d3,0xbc68435f,0x3eb920f1,0xbc8c6eb4,0x3e3610cd,0x3cbf289c,0x3dd1a877,0x3e072adc,0x3d795e87,0x3d90003d,0x3d9aabcc,0x3cf2e089,0x3c87eea9,0x3ca59b34,0x3d0c08ec,0x3c45d803,0x3d56719c,0x3d75cdde,0x3e31ae38,0x3d9ea520,0xbdb7bd79,0xbde986ac,0xbe8368db,0xbe9b5207, -0xbec4ebd3,0xbed13583,0xbec8f70f,0xbeb973f6,0xbea5f076,0xbee474c1,0xbefee488,0xbf052cd7,0xbef72b55,0xbee5fa13,0xbee073aa,0xbee706b5,0xbf16d9dd,0xbe29830e,0xbdbaf1c4,0x3d21d2fa,0x3d5838a8,0x3d5073b5,0x3dd03ea9,0x3dbebe92,0x3dc94afb,0x3d955faf,0x3deda585,0x3da8e49f,0x3db22deb, -0x3d870053,0x3d66ea34,0x3d895f6d,0x3dbae93b,0x3dc26223,0x3d86a851,0xbca91cf8,0xbdd884e9,0xbe34dae2,0xbea84103,0xbecd36ff,0xbef9c1de,0xbf194919,0xbf1add74,0xbf101d8a,0xbef2746f,0xbecd07ab,0xbeb1ceb4,0xbebedf21,0xbea4cfbc,0xbebef937,0xbf0673f4,0xbf07cf27,0xbf043a59,0xbec71b89, -0x3e7ab07b,0xbde38d14,0x3de42109,0x3de3132e,0x3de3670b,0x3da6ed71,0x3da1c83a,0x3d98a510,0x3e3317b4,0x3ddb3aa2,0x3de035e2,0x3dbf0d21,0x3d8f7780,0x3da56142,0x3dbd9e7e,0x3dcab239,0x3e105a52,0x3d45d1f0,0xbdf4d27a,0xbe352f8d,0xbe9a5df3,0xbecfedbc,0xbf04c30d,0xbf1880cb,0xbf2b8e8b, -0xbf28cf03,0xbf148ae5,0xbed90a31,0xbe9869a9,0xbea3e9a7,0xbe44e727,0xbe5a3a68,0xbe809690,0xbee82145,0xbec483b4,0xbe96df71,0xbdc51806,0x3daf5031,0x3dd7d4c4,0x3cefa208,0x3dc81276,0x3e23ee04,0x3da81399,0x3ddf973c,0x3e5fab19,0x3d872ac3,0x3d93fd72,0x3d8a668b,0x3dc404d7,0x3e0b5b0f, -0x3e188b08,0x3d91b312,0x3df50179,0xbd7d5083,0xbdc5282b,0xbe0a557a,0xbe6292b1,0xbea38bf3,0xbed3cbfa,0xbefb54b2,0xbf085aba,0xbf0862aa,0xbee819c0,0xbee8d76d,0xbec1fdd7,0xbea36507,0xbe35faa8,0xbd153ca0,0x3dee3214,0xbe87e57f,0xbec388fe,0xbe905d63,0x3d76ef92,0xbd8bde4a,0x3d9d2a1d, -0x3de5e8e6,0x3d155139,0xbcad5394,0x3df5414c,0x3dd3cd7b,0x3e48c6e0,0x3df6d82a,0x3e072bab,0x3dbbbbb2,0x3e164fcb,0x3e19fb82,0x3dd98566,0x3e50a86e,0x3e0b52b5,0x3e152b4e,0xbe0e896f,0xbdd26103,0xbdeeceaa,0xbe39064c,0xbe86163a,0xbec44da9,0xbee216be,0xbef7ec19,0xbf0133fe,0xbebf0a2f, -0xbe85d430,0xbe7f9f82,0xbdcafd04,0xbde493d7,0xbe36c1d2,0xbe7c22e4,0xbe6565b3,0xbe6ea09e,0x3d920220,0x3d9ddbaa,0x3ddb819f,0x3e205dee,0x3dd18be5,0x3e0f6744,0x3dd383e9,0x3e80cd27,0x3d645ccc,0x3e30b962,0x3de231ca,0x3e13be87,0x3e0dd0ac,0x3def80d8,0x3d9b6c15,0x3d111605,0x3e9e25a0, -0xbd8da800,0xbde1551a,0xbd3e65db,0xbde8f042,0xbe0ae042,0xbe4d8255,0xbe7b5dc6,0xbe917d0d,0xbe924766,0xbe81b9bf,0xbe7149c3,0xbe6618fb,0xbe2d4d58,0xbdb23053,0xbd2de4cb,0xbd309995,0xbe1a1b0d,0xbe52d45f,0x3e377cee,0x3c8ce8d0,0x3ddd6f8e,0x3e1015ac,0x3b93f20f,0x3e1d0eab,0x3e03419a, -0x3e3ce2b6,0x3dd03837,0x3e3b467e,0x3decc6e2,0x3e7288b1,0x3dd7ea14,0x3e263bfd,0x3e2356f6,0x3e5fb7b0,0x3e245267,0x3d9a64d2,0x3e518b18,0xbdd388a0,0x3c943300,0xbc594546,0xbd144db3,0xbda55644,0xbdc97ad3,0xbe0596f6,0xbe211914,0xbe267ce5,0xbe287bf8,0xbe284a76,0xbe14929d,0xbde3297a, -0xbd8ea068,0xbd25d367,0xbb81605f,0xbd14bde2,0xbd4c2d49,0x3eb23350,0x3dd19cb9,0x3e80cf40,0x3e99745c,0x3e76cdb6,0x3df2e654,0x3e2719e0,0x3dc6a143,0x3e74fcba,0xbd2f098b,0x3e36b409,0x3d307750,0x3e8fb333,0x3dfbde8c,0x3e09d63c,0x3e0575ca,0x3ea6db0c,0x3cd26976,0xbb327592,0x3d8463f3, -0x3d6e8c26,0x3d808594,0x3d3d53b4,0x3cfdbcbc,0xbd1f7142,0xbd8e510d,0xbe090273,0xbdf92761,0xbdf8546b,0xbdfb239a,0xbdcbfa29,0xbd6dd6a9,0xbd08cc52,0xbbad6f35,0xbc2a291a,0xbde1043f,0x3edc8d1d,0x3d1c38b2,0x3d3cb419,0x3dce11dc,0xbd2ff9ae,0x3e788dd1,0x3cada4f9,0x3e4a06cb,0x3e46a9b7, -0x3e7720f4,0x3ddfd826,0x3e288110,0x3dca64de,0x3debc256,0x3eb11f45,0x3d9988cf,0x3ee06507,0x3c37f92c,0x3d1f369b,0x3d3e35d7,0x3d524786,0x3d886bb3,0x3d981d15,0x3dae24e9,0x3da52ecc,0x3d863acc,0x3d5916d6,0x3d125b10,0x3b85f63f,0xbca8d4ae,0xbcb51195,0xbcc74679,0xbd0835f0,0xbd37f1ec, -0xbd7ea862,0xbdf897cb,0x3d9704e2,0x3ea3f831,0x3f0180de,0x3cde442f,0x3e5ad09d,0x3f00ca52,0x3f0c0c10,0x3efb5de4,0x3ee846eb,0x3ef2c077,0x3f068433,0x3f072b06,0x3e3a5a9b,0xbc6dbcff,0x3ef60395,0x3e69bc68,0x3c3a2224,0xbdf1c3f7,0xbd6ae4a3,0xbd6d9748,0xbd613b8e,0xbd4ce163,0xbd41bb8d, -0xbd3bdfc0,0xbd53c2a3,0xbd88a00b,0xbd9451ac,0xbda68e2e,0xbdaabb2a,0xbdb9629b,0xbdb0ad81,0xbda5fac8,0xbd9ca352,0xbd9472fe,0xbd61a96c,0x3d804570,0x3d5725cd,0x3dd6dcab,0xba4182dd,0xbdc82892,0xbdddac59,0x3c5c7cad,0xbd89bf9d,0xbe064074,0xbe076b4a,0xbe016ab2,0xbdd2bca8,0xbdda9974, -0xbdff7de2,0xbdd87b93,0xbd92142b,0xbbe62332,0xbdd48052,0xbda842d7,0xbc7993d5,0x3db1289e,0x3d781e9e,0x3d7ba8ce,0x3d6f4956,0x3d6c4057,0x3d612a01,0x3d5804ed,0x3d4b579b,0x3d448260,0x3d456c2d,0x3d535d95,0x3d57dc12,0x3d5ec2d9,0x3d6cb2a2,0x3d6c6481,0x3d5366f0,0x3d6782e1,0x3dbfa60c, -0x3dadcfe4,0xbe235b37,0x3cc38422,0xbd8fc28f,0xbb050f8a,0xbca8600f,0xbcb79c3f,0x3d066b20,0xbcd8e56b,0xbc9dde5a,0xbcb9d15b,0x3c6af501,0xbc996780,0xbd9af6e4,0x3c2b3e21,0xbcea093f,0x3bb9b39f,0xbd35bcf3,0x3d940f66,0x3db5f12d,0x3da1443d,0x3d96ec4d,0x3d843b14,0x3d803152,0x3d8a305e, -0x3d606beb,0x3d65dccc,0x3d72ffe8,0x3d7be58a,0x3d7592d8,0x3d71a1e3,0x3d87fdca,0x3d8a8ee3,0x3d6abcb5,0x3d933a20,0x3df1ab9a,0x3d9dd70d,0xbd6d654f,0x3d63e89a,0xbce6d110,0x3b995de2,0xbd2f1772,0x3d2b6bc1,0xbcf03550,0x3d78b5c1,0xbcf58656,0x3d9ffc36,0x3c4a7d5d,0x3c6633ab,0x3c65280a, -0x3d05ffb0,0x3ca8e909,0x3c42bbcc,0x399777e1,0x3d8fae6f,0x3df27004,0x3da812f3,0x3da55988,0x3d7af32b,0x3d4a0b3c,0x3d458915,0x3d043171,0x3cc83223,0x3cfe8182,0x3d1c3d7e,0x3d36b5e0,0x3d1b1800,0x3d77e4b8,0x3d7a4f6f,0x3d2c8a80,0x3d9b0074,0x3e40d5a9,0x3dd9a903,0xbd9a5b3e,0x3cc8367d, -0xbc88ca1d,0x3b9067ee,0x3c203b77,0x3c1fa575,0x3d032853,0x3cf2b4f0,0x3d18429a,0x3d5d857d,0x3cb70fe4,0x3d584ac6,0x3cc4ada5,0x3d3c4b45,0x3d12cc3c,0x3d56eeb0,0x3d19146d,0x3d8c399f,0x3e0946f2,0x3dd00372,0x3db348a9,0x3d8750ae,0x3d83e631,0x3d86a9bb,0x3d1a0f84,0x3d2ce1b9,0x3d572965, -0x3d2d35ee,0x3d4203db,0x3cf1e39c,0x3d6645ba,0x3d55c415,0x3d538867,0x3dc3ae67,0x3e3cc917,0x3e09eb61,0xbce30acc,0x3d824cea,0x3d531d28,0x3d307ac9,0x3cb3c4ef,0x3d199134,0x3cca2ac3,0x3d03a747,0x3d878dea,0x3d3ed4c9,0x3d467be7,0x3d2c2d34,0x3d69c337,0x3d7ce02c,0x3d414ec2,0x3da90200, -0x3d01f6b2,0x3de61821,0x3e0d7bd7,0x3ddea69f,0x3dccfa65,0x3d863572,0x3d20f0da,0x3d29fa44,0x3c7d5a1b,0x3c08001e,0x3c2585f1,0x3cfe64b7,0x3cb0cd27,0xbc084720,0x3d1a7423,0x3d3d46f2,0x3cd4ce31,0x3dfa6574,0x3e916c4e,0x3ee34881,0xbbf15eb5,0x3d146040,0x3d9cb979,0x3ccba91a,0x3dfa22dd, -0x3c629af3,0x3d589327,0x3d01b527,0x3ce5ccdb,0x3d3de359,0x3d56dcb2,0x3d1f111c,0x3d27c005,0x3d1b2e8c,0x3d5364a8,0x3d8ac3a5,0x3d170f63,0x3d59c63f,0x3c558c66,0xbd2c05f6,0xbdf947f1,0xbe317d91,0xbe2e8688,0xbe8fd8ea,0xbe5eeca6,0xbe614a49,0xbe4c3565,0xbe564ed6,0xbdb7fc6a,0x3dec1f38, -0x3e389cec,0x3e61fcf3,0x3e1e3b2a,0x3e75339c,0x3eb66b2c,0xbbd590cb,0xbea95f6b,0x3dfb3aff,0xbd676289,0x3da2b463,0x3d315670,0x3d4daf6a,0x3d9014fb,0x3d4532a6,0x3da1b89f,0x3d17c3f5,0x3cc715a8,0x3cc334d6,0x3ce709aa,0x3d5a2d18,0x3c126a31,0x3ccea70a,0xbd089097,0x3cf4cff6,0x3dc59042, -0x3d57e2c5,0x3d6dbb40,0xbc8aae0a,0xbda5dede,0xbe442c03,0xbe86e226,0xbea4a1ee,0xbe977f23,0xbe8f5657,0xbe5e79fb,0xbd410b75,0x3d463eb2,0x3dfbf1c7,0x3e2b1f27,0x3e3c84da,0x3edf8937,0x3c223af3,0xbbfd4b50,0x3c422dbe,0xbd7770db,0x3c9db85d,0x3ca07403,0x3d4c18ff,0x3d6d5bc2,0x3d8cec26, -0x3dc9f4e8,0x3d873c04,0x3d70b5cf,0x3ceb3d0b,0x3d0f9298,0x3d05d9fa,0x3c6abdcd,0x3c8f0fa7,0x3cd80695,0x3ded37f5,0x3e2625d2,0x3dfba359,0x3dcda769,0x3ddd4928,0x3dd712cd,0x3d18d4ce,0xbd4ef44e,0xbe275906,0xbe8d03e2,0xbe860364,0xbdf47662,0x3e281baf,0x3e941d4c,0x3ed2e3d0,0x3f0ab039, -0x3ed0039a,0x3f20af85,0x3e7b97e8,0xbe8a0ccd,0x3e1b37af,0xbd8f165f,0x3b82e29f,0x3c12ad92,0x3d765b51,0x3d78b513,0x3d91fb62,0x3df9d95f,0x3da834f7,0x3d87865d,0x3d562dbd,0x3d2801f0,0x3d06e51d,0x3c3ae9a0,0x3db8db46,0x3cd43fa4,0x3d459237,0x3e7476ba,0x3e392f1f,0x3e1c3e21,0x3e3aaf95, -0x3e3df050,0x3e52626a,0x3e1ca2f6,0x3d976c0a,0xbc9f3764,0xbd967e1c,0x3ce12110,0x3e0ee3fa,0x3eb0dedb,0x3ef19411,0x3f1d8be1,0x3f189ee5,0x3f1b6a3d,0x3e72d400,0x3b7e09ee,0x3dd74e38,0xbca5d437,0x3e08aa79,0x3d7f6c34,0x3da2c6cc,0x3d8cb2dd,0x3da291ed,0x3e031cb7,0x3d4ed689,0x3d4db7b5, -0x3d80411f,0x3d4a220c,0x3d46bc2a,0x3d410fb9,0x3d2d598c,0xbb7ceb0f,0x3e17c451,0x3e2f040f,0x3e32d8da,0x3e45db73,0x3dc323bc,0x3dae52bd,0x3dee8a2b,0x3dcef8b9,0x3db90f19,0x3db52604,0x36f80b32,0xbce60e3b,0xbd8fa8a1,0x3e3eb55e,0x3e9d010a,0x3f12ce91,0x3ee3f5b6,0x3ec54dbb,0x3e20a8d5, -0xbe560181,0x3dff1c0d,0x3d52a5ec,0x3da8de13,0x3d3b8611,0x3d0ff17e,0x3d067e7d,0x3d3c9c5d,0x3da63841,0x3db4c416,0x3da8f473,0x3d37a130,0x3c6a735f,0x3cafc18d,0xb9bbf389,0x3bba0a35,0xbd2b17f4,0xbd72dfef,0x3d740881,0x3d53bd02,0x3e2f5b52,0x3e357991,0x3e48b34a,0x3e23a53c,0x3e2e76fd, -0x3ddc030b,0x3d9a995b,0xbdfbd0cd,0xbe254d7c,0xbe2916be,0xbdb0b220,0x3c84016b,0x3e396337,0x3e2136e7,0x3ce909a0,0x3d9c94ce,0xbdd743d7,0xbd8d1d52,0xbd1015e9,0xbd68f8b2,0x3b4f52dc,0x3ccd48ba,0x3d20d303,0x3d9f8736,0x3c384f86,0x3daaa46c,0x3d9bfbe5,0x3d853ffc,0x3d57b973,0x3b4cafe0, -0xbcb5c37c,0xbce56f34,0xbd635c7a,0xbd2696fc,0xbca2cb24,0x3ce265f2,0x3e2368eb,0x3e2ea59b,0x3e2b8612,0x3dc6f260,0x3cb50476,0xbd89bb02,0xbe29ddfb,0xbe5433df,0xbe4dfa8e,0xbe50e684,0xbe2c385a,0xbde8ff6f,0xbce96c10,0xbccec526,0xbd70401d,0xbe3a7f63,0xbdc00e69,0xbd5cecb0,0x3cbb7f04, -0x3d1a60a7,0x3c493471,0x3d694305,0x3d012b76,0x3cd0b36f,0x3ca7f647,0x3ce901aa,0x3d6f3e7d,0x3cac4a6d,0x3cd4639e,0x3cc6adec,0xbd0ada61,0xbd190fb5,0xbd89f951,0xbdac08f1,0x3bd0bf14,0x3cbc9c0b,0x3d8968da,0x3dc30043,0x3de5ebaf,0x3dcc9464,0x3d8e8bdc,0x3c8c3555,0xbd11117f,0xbdb87cde, -0xbde51b4d,0xbe16f360,0xbe233fd6,0xbe2f3916,0xbe1413d8,0xbe1ddd14,0xbe102a98,0xbde0b551,0xbdb4b8f2,0xbd96859b,0xbd406fbb,0xbc92e7b1,0x3b9cf674,0xbb20ae36,0x3ac8054d,0xb9cae897,0xbc7218e0,0xbd683c82,0x3b3b24e7,0xbd5203be,0x3a29f431,0xbd3b9d81,0xbcc756a1,0xbd3ead61,0xbbefc9c0, -0xbd7b6fb5,0xbc846130,0xbd1df722,0xbc69f8c4,0xbd0cda93,0xbcf2f069,0xbca247bc,0xbcc65c38,0xbc30ae59,0x3bdb0304,0xbd210b8b,0xbd909159,0xbded61cb,0xbddf4a1f,0xbe02c7bf,0xbe10dd50,0xbe0b3e1d,0xbe0c6b02,0xbe35b3b3,0xbdcb7d6c,0xbdfba029,0xbe1233d6,0xbe0e43b9,0xbe2672e3,0xbda78e27, -0xbdf36267,0xbddcacb9,0xbdd017ba,0xbdb83834,0xbdba355d,0xbda0500a,0xbdcf9745,0xbdf8dfe7,0xbd6f00ec,0xbdf3eb9f,0xbd1688d9,0xbe016298,0xbe0647f7,0xbe05f714,0xbe0c57a2,0xbe0a8048,0xbe0f398d,0xbe20161a,0xbe26405f,0xbe3f6f5c,0xbe46f084,0xbe414c69,0xbe2efa1a,0xbe27736f,0xbe26c53d, -0xbe15485e,0xbe118500,0xbe168934,0xbdeb5d18,0xbdf96290,0xbe176c1d,0xbdf9d0b4,0xbcb08932,0xbe0feb2c,0xbe07d202,0xbd329f46,0xbd0c5289,0xbd14ddfd,0xbd158008,0xbd220a7a,0xbd26a3da,0xbd2d53cc,0xbe102723,0xbe0e201b,0xbc199f43,0xbe063b03,0xbe1bb0f2,0xbdca95aa,0xbdc1e587,0xbdcb3e12, -0xbdcd9d40,0xbdd06da3,0xbdce6092,0xbdc4a337,0xbdbc68fb,0xbdb594cd,0xbdb01236,0xbdb736ec,0xbdcf6ead,0xbdda624c,0xbde2a041,0xbde59550,0xbdf074c4,0xbdfac0a2,0xbe436f96,0x3e039bf0,0x3dbea970,0x3da747b6,0x3e04fb56,0x3deb9ad4,0x3d2c4543,0x3de3db7b,0x3ddb394b,0x3d742104,0x3d5062d2, -0x3d36da86,0x3d29ff12,0x3d251ade,0x3d0de731,0x3d1e5a38,0x3ddbac58,0x3de72f2b,0x3cec50e7,0x3dcd327d,0x3ddb4c06,0x3d8aebb5,0x3d9e5828,0x3da508cc,0x3da387b8,0x3da62f12,0x3da36f75,0x3d9cac95,0x3d982cc3,0x3d95804d,0x3d906bf7,0x3d9d588c,0x3d9e518a,0x3db2bb09,0x3daf3b2b,0x3dbd7aff, -0x3dc916c9,0x3dc6feaf,0x3df03619,0x3e15d782,0x3e0ae754,0x3de5ef6d,0x3dc8e613,0x3dd675bb,0x3de75119,0x3db38074,0x3da71991,0x3de1305d,0x3dc73936,0x3ddd7a14,0x3dc3cdcb,0x3db79669,0x3d9b9956,0x3dd3e6bd,0x3dbfe8d7,0x3db64ab2,0x3de39509,0x3de82ff1,0x3dbeb96d,0x3dd821be,0x3dcd93d3, -0x3dc275cc,0x3db14a15,0x3db22051,0x3d9f2149,0x3d9550ad,0x3d8a56ce,0x3d9c120e,0x3d9e0494,0x3def397f,0x3debc051,0x3df9b870,0x3def22b7,0x3df6ba86,0x3e1f79b3,0x3e2aa802,0x3e2e3556,0x3e1ab76d,0x3e08bf35,0x3ddc1158,0x3dc40da8,0x3dbe7c7a,0x3db96fd1,0x3da434db,0x3decd80d,0x3dc20129, -0x3d98078c,0x3db95fa0,0x3daaf29c,0x3dac2dae,0x3dbf6b10,0x3da07047,0x3ddb4e0c,0x3db2527f,0x3db48fa1,0x3ddaf22e,0x3dda5046,0x3dd64d5e,0x3db80691,0x3d9ceb8d,0x3d5d68c2,0x3d395e18,0x3d14df28,0x3d5c6519,0x3dad865a,0x3e11d84b,0x3e0dbd9a,0x3e285284,0x3e334551,0x3e391ffb,0x3e1072a1, -0x3e3eb04d,0x3e61f866,0x3e2c94b2,0x3e076b9c,0x3db2fb8f,0x3d817ff8,0x3dd2b83c,0x3d86b1c1,0x3d8a2e05,0x3d8c67b1,0x3d7e907e,0x3d90c04a,0x3d3dff56,0x3d897b74,0x3d7e1d2e,0x3d8c6207,0x3d81dec2,0x3dd630f0,0x3dd0a1fe,0x3da6488c,0x3de28c10,0x3dcca2de,0x3dca0411,0x3da37a8b,0x3d49e6b5, -0x3c92acf2,0xbbd71990,0xbb6b1cce,0xbb4aeb27,0x3d5ee784,0x3e1fc9d9,0x3e176449,0x3e305d9b,0x3e09ad12,0x3e24db5d,0x3e5ba4dc,0x3e48ad98,0x3e62268f,0x3e364f66,0x3e1400bb,0x3dcb1f8f,0x3d9c1e5d,0x3d9dcdf0,0x3d5081bb,0x3d67b327,0x3d7f2a47,0x3d48d775,0x3d3aa8d8,0x3d258d0a,0x3d56ed77, -0x3d554283,0x3d752d25,0x3d2b3ee2,0x3dcc175b,0x3da850de,0x3da0aa55,0x3ddd9bed,0x3df47751,0x3deb8dbc,0x3da2632f,0x3d66a189,0x3bbf21b5,0xbc2c8e34,0xbd52e128,0xbb0c3e37,0x3d6faa9c,0x3e40a549,0x3e35f7e2,0x3e6aa33e,0x3e7b1741,0x3e7bc97d,0x3ecc8075,0x3f08a202,0x3ef0a385,0x3ea24aad, -0x3e8d6d1f,0x3e6c954f,0x3e53fad1,0x3e02d677,0x3df2f323,0x3d90c40b,0x3d8e532a,0x3d445648,0x3d345523,0x3ce6f116,0x3d273851,0x3d4375ee,0x3d93c835,0x3d3c4c43,0x3d79878d,0x3d8a39fa,0x3db4c08b,0x3df1c54f,0x3dc55623,0x3cae6012,0x3ba6429d,0xbdc39deb,0xbe1767c7,0xbe471dc2,0xbe86d0c6, -0xbbb14d81,0x3ddb4dfd,0x3e754268,0x3e8437ed,0x3ea6597a,0x3ec0b3cf,0x3ed493cd,0x3f1ac997,0x3ebe3a0b,0x3e44c444,0x3e5c3b64,0x3e0592a8,0x3e1ce1a7,0x3daf8755,0x3da6e9e6,0x3d990469,0x3d8e4bb0,0x3d95bbd4,0x3d884a3e,0x3d73f3ff,0x3d4d0658,0x3d810015,0x3d8859ff,0x3d8ced7f,0x3d7319a1, -0x3d75f76a,0x3df5a534,0x3df9fb40,0x3e1ee7e4,0x3e541453,0x3e77bc57,0x3e8abc09,0x3e846b5e,0x3e53f438,0x3e0d5a3f,0x3d4afd30,0x3e362f95,0x3e65070b,0x3eacd6a5,0x3e7ff6ba,0x3ea58fb9,0x3eea5d9d,0x3f1d3587,0x3f057756,0x3efa96a1,0x3eb2447d,0x3e7ad9a2,0x3e5cc4bf,0x3e16b0dd,0x3dca8c3f, -0x3da323fe,0x3d9fd668,0x3db1ea75,0x3dcf4054,0x3d5f2d21,0x3d3460f1,0x3ca3ba11,0x3d923108,0x3d9c3e70,0x3da7a472,0x3dd974a9,0x3e2641f9,0x3e2c9b40,0x3e4c421d,0x3e85bef3,0x3ea554dc,0x3ea87c14,0x3eab9e65,0x3eac40ca,0x3ea6b330,0x3e958d3e,0x3e83fd3f,0x3e55fc81,0x3e3e1676,0x3e807c7d, -0x3d01e5aa,0x3d49af4f,0x3d2156e4,0x3ecc12ab,0x3d173ffb,0x3ee94f1a,0x3eb1dff1,0x3e3fc077,0x3e5e91ef,0x3e07e94d,0x3df2dff8,0x3da9fa57,0x3db20df4,0x3d98509d,0x3de5e13f,0x3d8071f1,0x3d46746e,0x3d18d65b,0x3d7e72d1,0x3db2c9ba,0x3dae120d,0x3de8e65e,0x3e20a347,0x3e73a0c0,0x3e805398, -0x3ea685da,0x3eb8600d,0x3eb71383,0x3eb748e7,0x3ea8f032,0x3eb7521c,0x3ea3c3d8,0x3e946f20,0x3e44ceb6,0x3dbd4377,0x3d4f8317,0xbe4a2435,0xbe9803bb,0xbf09e4ca,0xbdee48c0,0xbebc89fd,0x3e465edf,0x3eabd567,0x3dc8af59,0x3e471809,0x3d6640b7,0x3dfc2906,0x3dbaf0fc,0x3dca6935,0x3d9e91c6, -0x3d9cc4de,0x3da68680,0x3dae4571,0x3d923c9e,0x3daabd1e,0x3d8fac93,0x3d92b746,0x3ddbe6d5,0x3e063248,0x3e3c6ea5,0x3e78a100,0x3e8d2627,0x3e91bb94,0x3ea23a33,0x3eaeea83,0x3eb77269,0x3ea7e5e1,0x3e8cff2b,0x3e0e297c,0x3dc33249,0xbc9716c9,0xbd18c567,0xbe839495,0xbed1542e,0xbf40069d, -0xbebeefd3,0xbec9a245,0x3d49d330,0x3ec855b5,0x3dc5bdfb,0x3df5f35f,0x3dd96f76,0x3df249fa,0x3d203f2f,0x3d8c0298,0x3d4d600f,0x3d04c3a9,0x3d8b4822,0x3d7a5380,0x3ce5b5e4,0x3cbbb23d,0x3c92f811,0x3d838913,0x3c29e06c,0x3d505b30,0x3d9e94ef,0x3e511b63,0x3e89b432,0x3ea56271,0x3e9d6361, -0x3e926c81,0x3e9195e5,0x3e800050,0x3e5a6377,0x3e13fd2c,0x3d9e3424,0xbc78998f,0xbdec44c8,0xbe8e45aa,0xbea86b34,0xbee6c8b8,0xbea4bd4d,0xbe4f778c,0xbdba91be,0x3db1b56f,0x3d79c74c,0x3d886fdd,0x3d83237f,0x3d2049ab,0x3da6327f,0x3cc4f94f,0x3c560b05,0x3b193dee,0x3d386733,0x3d4e379b, -0x3d0834f0,0x3d0e3fa6,0x3d0cc5b8,0x3c7d6228,0x3d404865,0xbc898498,0x3da3da8f,0x3df93b7e,0x3e196e80,0x3e72fa5c,0x3e765c5f,0x3e8ce1e4,0x3e8e1765,0x3e8da6b3,0x3e8f08c6,0x3e6bf1f2,0x3e314140,0x3d92e103,0xbd742fe9,0xbe265507,0xbe64863f,0xbe9176f6,0xbe64a1a8,0xbe36d389,0xbc4645eb, -0xbc5064cf,0xbc52be88,0xbc119f97,0xbca753d1,0x3cbf8b4d,0x3cfd7ed9,0x3bfac2b8,0x3b8777d7,0x3c0de697,0x3b9d88cb,0x3c467b55,0x3cce2298,0x3c9d8201,0x3c5ea804,0x3c0daedf,0x3d03d5ce,0x3d2229a9,0x3c8c5b06,0x3db393d1,0x3dc310c0,0x3e069aa4,0x3e28a2a2,0x3e3dd26c,0x3e57ddd4,0x3e4f5065, -0x3e43c4d0,0x3e369298,0x3dfe36ac,0x3d809688,0xbcc82d0e,0xbdb75538,0xbe0f3433,0xbe6f9cd5,0xbe1dcf86,0xbdf048af,0xbdfdcc2a,0xbdc4a365,0xbd8cb1c4,0xbd20a6ab,0xbc701540,0xbce103b0,0xbc73283b,0x3b26a5a5,0x3acd4a7c,0x3c5a0e32,0x3c99822a,0xbc253e5a,0x3c7d7087,0xbcaa70b2,0x3a44b649, -0xbb75f18c,0xbc386eca,0xbc9149ae,0x3c752ea9,0xbae9fd02,0x3c042b92,0x3c186e15,0x3ce13687,0x3d61ec34,0x3dafc545,0x3d831fad,0x3d3315d5,0x3d29d912,0xbb3c5990,0xbd0af12b,0xbd7cd6e5,0xbdb71b8f,0xbe019b5c,0xbe39948d,0xbe114685,0xbdd32d7f,0xbd97d26c,0xbdef3cd2,0xbdb7fba1,0xbdaa4089, -0xbdc39770,0xbd50ca13,0xbda45a8b,0xbd7f4366,0xbd906c5b,0xbd8e108c,0xbd791938,0xbd3da347,0xbd47e438,0xbd1706d2,0xbd38c771,0xbdb328c1,0xbd739979,0xbde96f24,0xbdc284d9,0xbdd25aa4,0xbde7a509,0xbe0012d4,0xbe0fcc66,0xbe236f7d,0xbe309683,0xbe397cc7,0xbe38b1c8,0xbe34cb94,0xbe3ea780, -0xbe30ac79,0xbe3a421d,0xbe2782cd,0xbe00427b,0xbdd55509,0xbddd27c6,0xbd936db7,0xbd8e4028,0xbd92148c,0xbdb8c25c,0xbe04f22c,0xbd2193a8,0xbd7f783b,0xbdf9cedc,0xbdfd709f,0xbdf028f9,0xbdee6c6a,0xbdf3c729,0xbdfdb3d3,0xbdfc4fb9,0xbd6cbaa5,0xbd210f7d,0xbe01709b,0xbd8ad77a,0xbd22ec64, -0xbd54fd48,0xbd6523e5,0xbd735733,0xbd76000b,0xbd793822,0xbd705ca3,0xbd6b153a,0xbd7821ef,0xbd73a9b5,0xbd87036b,0xbd86d07a,0xbd862b2a,0xbd8cb4ef,0xbd8b760a,0xbd910422,0xbd9a03ca,0xbd963c49,0xbdd52ad5,0x3d463d97,0x3d00945d,0x3c74b2e4,0x3b1d09d8,0x3d481b00,0x3dd70d7f,0x3bfe7c5c, -0x3d1149e4,0x3dc2a85b,0x3dce4d64,0x3dda3598,0x3dd0a023,0x3dcffd3a,0x3de24993,0x3dcb4de8,0x3d0f5ae1,0x3c47ffad,0x3dd8be21,0x3d4243f7,0x3c95699a,0x3cd37684,0x3ceccb06,0x3ce1ac36,0x3cf687e1,0x3d094beb,0x3d0f93f1,0x3d0a1356,0x3d084a0e,0x3d063a9d,0x3cecfa08,0x3cc393b5,0x3c8d9bdb, -0x3c27c782,0x3c02478d,0x3c1eb1d1,0x3cabc10b,0x3cb4e2b9,0x3cda937b,0x3b3896ab,0x3e014a53,0x3d630dda,0x3dc21522,0x3d552980,0x3d347d79,0x3d892b25,0x3d183c50,0x3d3fa9be,0x3d78db82,0x3d3348ea,0x3d36bc29,0x3d6be80c,0x3da66d82,0x3d3c76e8,0x3d6d28a6,0x3d5492aa,0x3d59d1a9,0x3c96f4a6, -0x3d16d4ed,0x3d1285ab,0x3d3a2664,0x3d3aa920,0x3d36d8d7,0x3d400f93,0x3d4727be,0x3d257814,0x3cdf597f,0x3cdd0a7e,0x3c85ae98,0x3b5394b2,0xbb9177e9,0x3ba9f09b,0x3d14c917,0x3ccad9af,0x3c524651,0x3caf14f8,0x3d94b4a5,0x3d05aed3,0x3d92fff3,0x3d4a568a,0x3d710e82,0x3cfadee9,0x3d600684, -0x3d0ab5f5,0x3d3f387e,0x3cff51c1,0x3d7f96af,0x3ced1d10,0x3d4d54da,0x3d32120f,0x3d3a34cc,0x3d6bbb7a,0x3d460a8f,0x3d1825e1,0x3d0af394,0x3d2ce795,0x3d626973,0x3d86f05c,0x3d93ec22,0x3d83ae4f,0x3d6f5e3f,0x3d4c93f5,0x3d03b218,0x3c3a6b95,0xbc5b16fe,0xbd3ca9f6,0xbd86731b,0xbd7d33c8, -0x393679c7,0xbb1547d8,0xbd1da0ca,0xbc7a7795,0x3dea4eb5,0x3d6c03ab,0x3dcd8641,0x3d9d43c7,0x3d7fce77,0x3d00fada,0x3cb127a8,0x3d26c4f0,0x3d85490a,0x3d5f2696,0x3d45ae52,0x3d25eb57,0x3d566b14,0x3d650cd7,0x3d67c0e9,0x3d558f01,0x3d48cdec,0x3d07b55f,0x3d1eb8b4,0x3d314c23,0x3d885855, -0x3d9bf656,0x3d9b5491,0x3d75a792,0x3d5c0557,0x3ce25518,0xbb7d4f72,0x3ba1b10d,0xbccd3cca,0xbd659caf,0xbdb05065,0xbd8467fa,0x3c2147ec,0xbc861918,0xbd5c6e45,0x3c2002ce,0x3dde69e3,0x3d67b998,0x3d56d8a7,0x3d68114c,0x3d817293,0x3d3530f6,0x3d3e4253,0x3cf0b0d9,0x3d52d3eb,0x3d543101, -0x3d541588,0x3d241bf9,0x3d56fa09,0x3d579e24,0x3d50f3e9,0x3d9a7a8f,0x3d697d7b,0x3d0e6577,0x3d29b879,0x3d46005b,0x3d8e5dd7,0x3db1e30a,0x3dce20f2,0x3d96fc4c,0x3d850f8d,0x3d22e7a1,0x3cbec87b,0xbccb76ac,0xbd6c0bc8,0xbde46dd8,0xbe25f506,0xbe2d5a5d,0xbd448456,0xbd9ff72e,0xbe112df3, -0xbe96a050,0x3e24267b,0x3e085ab9,0x3de26fb4,0x3dff94de,0x3c956eb5,0x3deb19fa,0x3d639e02,0x3d809403,0x3d9b83ef,0x3d5043a3,0x3d4d249c,0x3cee3e64,0x3d499d8c,0x3d8766bb,0x3d426f18,0x3da3a0ea,0x3d5bef6c,0x3da03f90,0x3de96d92,0x3e02c5d3,0x3e531ea7,0x3e67387e,0x3e505ce1,0x3e6b6765, -0x3e1ce51c,0x3dfaa7d1,0x3dac0bed,0x3cd16c50,0xbe18ef57,0xbec85494,0xbedc272d,0xbecef0fd,0xbe844282,0xbe3ae5d1,0xbf00b4f2,0x3da82607,0x3f076ccb,0xbcb60ea1,0x3e34b606,0x3ca3ad31,0x3db7679f,0x3d848a8b,0x3d47e580,0x3d818f01,0x3d574aa9,0x3d902a22,0x3d89d579,0x3d3218bf,0x3d50167a, -0x3d467803,0x3d84f394,0x3d97556c,0x3dcf898a,0x3da7ce25,0x3d4e1943,0x3d86d304,0x3dae57ec,0x3dd25308,0x3df0d137,0x3e16a447,0x3e27c0a2,0x3e280c98,0x3e0a1b0a,0x3d42a14f,0xbd8d1385,0xbe86adfd,0xbecf0cb6,0xbefa82fa,0xbf14479a,0xbee21f57,0xbf620d3f,0xbe1a5c39,0xbd8ec8b6,0xbc43a62e, -0x3dba46a4,0x3d16c973,0x3da6d87a,0x3d567a21,0x3d9a084c,0x3d7f50fd,0x3dd93cd1,0x3d264e85,0x3d05a356,0x3d1d2d80,0x3d4db980,0x3d90298c,0x3dc05381,0x3ddf3672,0x3dde0596,0x3d69e4b7,0x3cf67a96,0x3cb9d888,0x3cc7cbcc,0x3cc9cce2,0x3b8bb8e1,0x3bea6e21,0xbc28845d,0x3be6f429,0x3c3de727, -0xbd9180ac,0xbe639fc5,0xbef9849c,0xbf1b9a79,0xbf432e91,0xbf790ddf,0xbf5bc3c4,0xbf85a533,0xbf393a05,0x3e28da2a,0xbe9aec46,0x3d881831,0x3d2f09d9,0x3d9b71fd,0x3d2ff0c5,0x3d50edb7,0x3d47bd9b,0x3d4f1631,0x3d54461b,0x3d30ce96,0x3cf48c68,0x3d87603a,0x3d85778a,0x3d948682,0x3d9287dc, -0x3e059492,0x3dacbde1,0x3a14d76c,0xb8002f28,0xbcff5a11,0xbd84f444,0xbdffa228,0xbe547621,0xbe8fedf2,0xbea4bb8d,0xbea8e1b1,0xbead525d,0xbedea57c,0xbf123583,0xbf2700c3,0xbf3f2769,0xbf56ef58,0xbf7eac17,0xbf5a8335,0xbf3d5d00,0xbec64f66,0xbe2eaf21,0xbd50fa70,0xbdb7c340,0xbb167a3c, -0x3cee4cdf,0x3caf2a4b,0x3d214c70,0xbcd863b9,0x3d7c1718,0x3dc19b1c,0x3d1687a9,0x3d6b8dec,0x3d6ceac5,0x3d67f57f,0x3d1e74f5,0x3da246c6,0x3d24250b,0x3d2fcf73,0x3c9b9bd5,0xbd5dcd08,0xbd3620c6,0xbe11407a,0xbe888893,0xbebbace5,0xbede3698,0xbee9cb2e,0xbeeba9f8,0xbef6336d,0xbeec3166, -0xbf1ddead,0xbf18623f,0xbf251f3e,0xbf422890,0xbf1e590e,0xbf0f56a2,0xbe964955,0xbe9d942a,0xbe2c76ac,0xbdd3cf14,0xbdf0a116,0xbd5708fa,0x3bfe0144,0x3ca716a2,0x3c516f15,0x3cfc2b9a,0x3d086690,0x3cfc9cd4,0x3d3ed766,0x3d3fda41,0x3d88d5b7,0x3d88eaeb,0x3d900db4,0x3d99c49d,0x3cffa0f8, -0x3cef71c9,0xbd7a8526,0xbe239b18,0xbe758ec1,0xbe82659c,0xbeb379af,0xbeacd408,0xbeaf0982,0xbe155aad,0xbdfb000e,0xbe2baacb,0xbe6ac9f0,0xbebfe89e,0xbf0312e3,0xbf0adca9,0xbeb54b8c,0xbec49e16,0xbe62094e,0xbdfad0d7,0xbda34719,0xbbc4fe6b,0xbc68e57c,0x3c8ba9b4,0x3b59b037,0x3c8fd888, -0xbb4e15a4,0x3cb6b013,0x3c6575e5,0x3ca48001,0x3b27b157,0x3b014135,0x3c876fd8,0x3b7f6339,0x3d6eda2b,0x3ce12bb4,0x3d0a722e,0x3bd4c1dc,0xbd8f7e7f,0xbdd22cc0,0xbe040720,0xbde1dd83,0xbdfc4a7c,0xbdde0078,0xbd891109,0xbd85a257,0xbddd031e,0xbdac8da0,0xbe267697,0xbe728ff1,0xbea632f4, -0xbeb41d83,0xbe5b1d68,0xbe28ae7e,0xbe576195,0xbe0db490,0xbe27c0cf,0xbde0942a,0xbd69ef76,0xbce3037f,0xbcd3aaa6,0xbc3ede28,0x3b8643d6,0xbbdea5ae,0x3bc6e5ba,0xbba0d5f1,0x3b63b09d,0xbb3e7ba3,0x3bd1c1f0,0xbc1d7143,0xbc7d54b6,0x3c907339,0xbde48fa3,0xbdc3b82e,0xbe0fcd9a,0xbe1ebfee, -0xbe484771,0xbe4bd368,0xbe5c6d88,0xbe4e1cab,0xbe3559e4,0xbe26eda3,0xbe29bbaa,0xbe108f69,0xbe1c18d3,0xbe27935a,0xbe4527d7,0xbe42badf,0xbdd2085d,0xbdf98c0e,0xbdcfb5ed,0xbdd16ba7,0xbdbc281b,0xbd84b0b4,0xbd7a5eb7,0xbced2cc9,0xbcba8a53,0xbd0236bd,0xbcda16d5,0xbd397ff1,0xbb631eaf, -0xbd0df011,0xbbcb7391,0xbcd5cf59,0xbd1c194f,0xbd2ac35b,0xbcbd8289,0xbdc9438f,0xbe00eed7,0xbde9271c,0xbe126b59,0xbe136755,0xbe24ff06,0xbe2f56c6,0xbe404914,0xbe6154b5,0xbe82628b,0xbe5fd5b6,0xbe56a328,0xbe42a14f,0xbe39424e,0xbe2005cb,0xbe0dd43f,0xbdfd3af5,0xbd7397bf,0xbd362e2c, -0xbddf4292,0xbd67324b,0xbd84ff0d,0xbd7bdede,0xbd2a9245,0xbd0bb87c,0xbd198c97,0xbd4dc11d,0xbd4b5439,0xbd51fdfa,0xbd84248d,0xbd60463d,0xbda0b0e0,0xbdae334b,0xbd854f1b,0xbdb99fb1,0xbd910de2,0xbd8a7749,0xbd30f028,0xbd9032cc,0xbd77b4e5,0xbd8aa05a,0xbd730480,0xbd0e1fd9,0xbd73b47f, -0xbcba1cdf,0xbcbf342b,0xbd2f5ee5,0xbd2f99e1,0xbd73092f,0xbd79f50c,0xbd5890f0,0xbd803dd5,0xbd8ad8a0,0xbd26bf0a,0xbd0d1a36,0xbda55c20,0xbda740a2,0xbd7f96bd,0xbd851887,0xbd99e82f,0xbd7f3299,0xbd73a92f,0xbd571cce,0xbd4c3a83,0xbd401543,0xbd2d8758,0xbd3043b3,0xbd96d41b,0xbd91491d, -0xbd5612a8,0xbda12db8,0xbdafb028,0xbd4ea007,0xbd6f799f,0xbd7be9b9,0xbd81003e,0xbd8cdefa,0xbd93c633,0xbd98d8f2,0xbdac4631,0xbda62bd9,0xbdb3d1ed,0xbdae9a3b,0xbd90e4a3,0xbd935804,0xbd83f983,0xbd5f2b23,0xbd4af141,0xbd355450,0xbd87d6a5,0x3e14a920,0x3d9e7ff9,0x3db72df8,0x3db51f4d, -0x3d3a5670,0x3b42d820,0x3dbec1b1,0x3d6a7a3e,0xbae36862,0xbbe8feeb,0xbc295d38,0xb9a46c4b,0xbb89db6a,0xbc88ccf9,0xbb20dc2a,0x3d64ab1d,0x3dc1c6a6,0xbbce715d,0x3d402cc2,0x3db4e9ff,0x3dcee966,0x3dc0a884,0x3dca8f37,0x3dcbcd1a,0x3dd7c2fb,0x3ddd71bf,0x3ddccc5e,0x3de041a5,0x3de846a9, -0x3ded7697,0x3df6c2af,0x3dea2de3,0x3de54384,0x3dcd907c,0x3db5215a,0x3d95a049,0x3d9c6622,0x3da730ed,0x3dd3b64c,0x3d0d0726,0x3d948d4b,0x3d7bfdab,0x3da4bfff,0x3dab780f,0x3d6b3078,0x3da4d5f2,0x3d9d720a,0x3d959987,0x3da7cb93,0x3dc15d6c,0x3d929f94,0x3cfc297c,0x3dc0f8cf,0x3d970e3e, -0x3db4780a,0x3d900fdd,0x3df7f3b2,0x3de7bdec,0x3df6fedb,0x3e05b9d1,0x3e060e97,0x3e0aeab7,0x3e243991,0x3e2e3b01,0x3e3cc6dc,0x3e423429,0x3e57c398,0x3e436dd3,0x3e2aab42,0x3e0f2559,0x3df9fd9a,0x3dcc4c8e,0x3dbfcd4e,0x3c9a0711,0x3d26e811,0x3d0f60ee,0x3d86ceaa,0x3d579372,0x3d851bee, -0x3d46d330,0x3d97c072,0x3d4222ea,0x3db40f9d,0x3d8e35c5,0x3de9402a,0x3d8040fe,0x3da91812,0x3d929326,0x3dab29af,0x3dbd4029,0x3d9d7e66,0x3dade02a,0x3dc5fa8f,0x3df0e46a,0x3dfb1e9a,0x3e151b2b,0x3e1ef553,0x3e2fbd71,0x3e45f2a6,0x3e51aa35,0x3e6b5004,0x3e85b19c,0x3e8bacfc,0x3e843430, -0x3e543795,0x3e1da66c,0x3daef791,0x3c264e9a,0x3ca59abd,0xb94e11a5,0x3ccd7aeb,0xbb3b2e64,0x3c0c76d9,0x3d685531,0x3d416dd1,0x3d441ef8,0x3d018264,0x3d29a958,0x3d33e351,0x3d88590e,0x3d8d1d09,0x3d878838,0x3d881f1b,0x3d6daf5a,0x3d8f6888,0x3da798cf,0x3daf6f06,0x3da19112,0x3da8bd81, -0x3df3e6ee,0x3de8a2aa,0x3e22b9e8,0x3e2d58ee,0x3e4d94fd,0x3e74d64b,0x3e86bccc,0x3e9ad944,0x3eaba4d4,0x3ec09e6f,0x3eafcb91,0x3e81af7d,0x3e3c8208,0x3dcdc832,0x3d3fd282,0x3c88d4ea,0xbdbcd791,0xbd3e61c6,0xbcd8ecbd,0xbb34e21f,0x3c9db0d3,0x3d054e21,0x3d01c0c4,0x3c628183,0x3ccf7e24, -0x3d00bd41,0x3d80fee6,0x3d5b8b4e,0x3d688218,0x3d34f685,0x3d722e33,0x3d8912ba,0x3d95c066,0x3dab4906,0x3d8de541,0x3dbc9ea3,0x3ddeb828,0x3e032739,0x3e2a702c,0x3e363a33,0x3e644215,0x3e7c2924,0x3e8f228b,0x3ea55a10,0x3ec8906c,0x3edd0ad5,0x3ece6141,0x3e94bdca,0x3e4db581,0x3d684595, -0xbdcaff76,0xbdc8b7c1,0xbe970c0b,0xbe9b4090,0xbe0f9511,0xbd4c1e61,0xbd604a91,0xbd0b81d0,0xbc8d3d41,0x3d169050,0x3d071a5a,0x3d58577b,0x3d7c19b9,0x3d83f687,0x3d83e858,0x3d3be8eb,0x3d8f7e2c,0x3d9b37f3,0x3dacd1bc,0x3de1466b,0x3e0bcd31,0x3e0eb085,0x3e080eab,0x3e16d36c,0x3e63e64b, -0x3ea21f8c,0x3ebe5cf7,0x3ee9ac9c,0x3f0db8ed,0x3f14ab33,0x3f1ba1ce,0x3ec55714,0x3e7030cc,0x3d8a85c7,0xbdb8c198,0xbe5f5207,0xbe9998af,0xbea784f3,0xbef5a924,0xbeaec7ed,0xbe3f4b2b,0xbe0a90dc,0xbc8cf4e2,0xbc037d2e,0x3d1a8632,0x3d431f13,0x3d597e3c,0x3d73dd16,0x3d8c44f4,0x3d856431, -0x3d77b3b3,0x3d26b6b3,0x3d6dd107,0x3d96dff9,0x3d9f1692,0x3dd4d2fb,0x3db3c38b,0x3dcd1e5b,0x3e0d0411,0x3e230fa9,0x3e4c7c3f,0x3e5f5664,0x3e6caeea,0x3e675b4c,0x3e65d96e,0x3e5e83a6,0x3e93da0c,0x3dc53286,0x3cbf7b67,0xbdef37e3,0xbcd7350f,0xbe01e08a,0xbebab68b,0xbef721bb,0xbe56d5fa, -0xbef91030,0xbeaaaa69,0xbe614069,0xbe3f91c9,0xbd99d711,0xbcbad996,0x3c9eabec,0x3cf8523f,0x3d2079ef,0x3dc574e6,0x3d637213,0x3d554cac,0x3d6293c5,0x3d88e642,0x3d94523b,0x3daa9efe,0x3db6369f,0x3db3fb2e,0x3deec1e6,0x3e1e547b,0x3e132a64,0x3e0c6c9f,0x3e1b594e,0x3e16deef,0x3e4d0c54, -0x3dd0567e,0x3d03631f,0xbdb076e8,0xbe3a82d1,0xbe8653c1,0xbeace80a,0xbc1b35f3,0x3dcf01f8,0x3ebfd612,0xbd4b5931,0x3ef3f9b7,0xbe74c875,0xbf152b2a,0xbd88ff0d,0xbe756dec,0xbdc0fbeb,0xbd72ac2a,0x3c32a786,0x3c9261d6,0x3d22441e,0x3d34f0dd,0x3d7b28d5,0x3d65985a,0x3d532862,0x3d8729c1, -0x3d88dba6,0x3d9d730d,0x3d914c7b,0x3d73d9aa,0x3d8ed31b,0x3ddff118,0x3d9cf582,0x3dae58d8,0x3dc6e54c,0x3de75a73,0x3e1eb386,0x3db8d5d5,0x3d52593a,0xbdc625c9,0xbe2fee19,0xbe58f48d,0xbe1f722f,0x3e18b951,0x3ebcd6f4,0x3f59f023,0x3f0e3171,0x3f4a9b8e,0x3e01d459,0xbe85315c,0xbd9db345, -0xbe2987c4,0x3d786712,0xbd4deb5d,0xbcad36e6,0x3c99efb5,0x3d375bbe,0xbc9445d8,0x3d969107,0x3d9c1d8e,0x3d20765a,0x3d3ec607,0x3d49b008,0x3d421bd9,0x3d76c8fd,0x3d4c9a7a,0x3db52b96,0x3d858aac,0x3d87a184,0x3dae5a0b,0x3d9c3338,0x3d88988d,0x3d72772e,0x3d7a54f4,0x3d69eca2,0x3dc876ea, -0x3ddb4f7c,0x3e10a7e9,0x3dc4eed7,0x3e8d7edd,0x3ebb5d9b,0x3f24ec70,0x3f19f12b,0x3f2961ea,0x3e4ed395,0xbecfa3ea,0x3d9a1c5f,0xbda6f7fe,0xbd6061a2,0xbcbb924a,0x3da88d51,0xbc582d7a,0x3c831393,0x3c75d43b,0x3d16b657,0x3d0bdbf7,0x3d77994e,0x3d766dec,0x3d6b25ac,0x3d119a7c,0x3d98ec35, -0x3dacdcbe,0x3d8f591f,0x3d8ccebc,0x3c4f3376,0xbd6450a9,0xbb58633f,0x3d51e9e3,0x3dc5f9f7,0x3e2f106f,0x3e42d555,0x3e5908e5,0x3dd264d6,0x3d9176a9,0x3e211639,0x3e5fd633,0x3e985608,0x3f04446d,0x3ed61523,0x3ea0aba8,0x3e9a5b84,0xbdbf43d2,0xbd8ba6c6,0xbd5316ed,0xbda3510d,0x3bdc137e, -0xbcfd0cbc,0x3d2bc87a,0x3c8b1aba,0x3d4e8f9e,0x3c8f4158,0x3d037b28,0x3d12f089,0x3cc340a5,0x3d1aff8c,0x3d9bb9c4,0x3d688360,0x3cc7860f,0x3d6f3f97,0x3d37eddf,0x3b8945aa,0xbd53ee91,0xbc8daa43,0xbc475379,0x3cb8ee65,0x3c2444b5,0xbd0f907a,0xbd39003b,0xbd20d1b2,0x3ce80cf0,0x3dadff4c, -0x3de05f59,0x3e0d5328,0x3e697585,0x3e7ee4ad,0x3e81d012,0xbddb6554,0x3d233f32,0x3b6f638f,0x3cb5b8ba,0x3dc20006,0xbc26b724,0x3c078e59,0xb96b69c3,0x3cdc3865,0xbae7e4d0,0x3c6ecd9b,0xbcc50713,0x3cb3333c,0xbbef29f8,0xbc0fc169,0xbd0c9210,0xbd21b0b1,0xbc6d21e9,0xbd67752f,0xbc68e182, -0xbd821a3c,0xbd98cec0,0xbda22f78,0xbd97e40e,0xbdac1b16,0xbd9d1255,0xbd7f1503,0xbd82c75b,0xbd3c8405,0xbc1be16a,0x3d0d9d61,0x3d9e5719,0x3dce6dbc,0x3e372896,0x3dbb8101,0x3dec2213,0x3e121581,0xbd843bc2,0x3d536e3d,0xbcc89c81,0xbd7a1041,0xbc4be0ad,0x3d09ba16,0x3befe085,0x3d1f659f, -0xbc6bdcc2,0x3dbb6f52,0x3c116543,0x3d3c22bc,0xbd3763af,0xbc198d2a,0xbcf2296b,0xbce0d217,0xbdfa11cb,0xbcf7aef3,0xbbfd2830,0xbd30dcbd,0xbd62ad38,0xbda974f1,0xbde1b555,0xbe094f2b,0xbd6b10a8,0xbc4251d7,0x3d387fac,0x3d8b6b6e,0x3db4c76e,0x3dcb262a,0x3df8280a,0x3e0bf316,0x3e2e5650, -0x3e040cd9,0x3e07d927,0x3e20bf74,0xbd533ab2,0x3de2bf9c,0x3ddccb5a,0x3dc7961f,0x3e0679c8,0x3caa01b4,0x3dd36f59,0x3d13ea8a,0x3cecf3ca,0x3c182907,0x3d801bec,0x3d2e3650,0x3d82545b,0x3d599ddd,0xbcd50d1b,0x3d965706,0xbd6f8398,0x3dd50373,0x3dbe5f6f,0x3db99ecc,0x3dcd869e,0x3dd9e05e, -0x3df8cea3,0x3e02f508,0x3e031e97,0x3e064c76,0x3e02cd75,0x3e184ac7,0x3e242857,0x3e41039d,0x3e340439,0x3e1121f7,0x3e09bffe,0x3e1a037c,0x3df11e12,0x3e15b190,0x3d9cae18,0xbd1a25d8,0xbdf09d45,0x3d9bb92e,0x3aab0b4e,0xbdd7af67,0xbe003bcd,0xbddca1bb,0xbdbf6ebe,0xbdd4f389,0xbe053fe1, -0xbe09830f,0x3c21f5c5,0x3dbf602c,0xbded9171,0xbca2e107,0x3d87cb91,0x3df904c4,0x3dcbac82,0x3dd1c480,0x3dc9c513,0x3dbe1e0f,0x3db21d07,0x3dad2148,0x3dbd1ad1,0x3dd7930b,0x3df0702b,0x3dfda8fe,0x3dfb447a,0x3e0435f2,0x3e02b6d0,0x3e0275af,0x3e04c44c,0x3e009fa9,0x3e2b80c3,0xbd46e28e, -0xbd732f6c,0xbdc9b9b4,0xbbd5dafc,0x3db9ba5f,0x3e0bbf9b,0xbc536bcd,0x3d95ce35,0x3e1f1c3a,0x3e237a6b,0x3e2522e7,0x3e14807d,0x3e18eeea,0x3e31e38d,0x3e1890f2,0x3da5502e,0x3c43c1f5,0x3e1d141b,0x3dc60327,0x3cb91a0f,0xbd93c7b7,0xbd3a869e,0xbd4d31ae,0xbd4be5e8,0xbd54a60e,0xbd55c72b, -0xbd535f65,0xbd531474,0xbd598bd7,0xbd536ac3,0xbd5c594e,0xbd4f7f27,0xbd4a37ca,0xbd4dc2a6,0xbd4fcebc,0xbd5db040,0xbd7496f3,0xbdcd748a,0xbdbcc0d3,0x3e055dbb,0xbbfc28d3,0x3d9a4454,0x3c0749df,0x3d019d6f,0x3d5b272a,0x3bb1d75b,0x3d73f598,0x3d7e164d,0x3d7e079b,0x3ca65a03,0x3d688962, -0x3e00a583,0x3c8cab58,0x3d8f41cb,0x3d04026c,0x3db58de9,0xbd2fece9,0xbd6589d2,0xbd5cb071,0xbd724b03,0xbd6289fb,0xbd632bde,0xbd7bde2b,0xbd660de2,0xbd4bd9c8,0xbd25991d,0xbd59479d,0xbd56afbc,0xbd6e6e7e,0xbd8e4779,0xbdb2ed41,0xbdd9c39a,0xbdd686e6,0xbe12d384,0xbdea82b2,0x3c7bd935, -0xbd5dbd49,0x3cd34ccb,0x3bd4c270,0x3d4f42b7,0x3bc47fac,0x3d8ff4cb,0xbbf0458b,0x3dc77912,0xbce840a2,0x3d796048,0x3cd36be6,0x3d415325,0x3c8b9b09,0x3ccd56a5,0x3d668c28,0x3d3b1cc0,0xbba669cb,0xbd94f0e9,0xbd3d93ca,0xbd8491a5,0xbd6dfe2e,0xbd7bd0e3,0xbd74cc89,0xbd4e163f,0xbd53879d, -0xbd482ed0,0xbd7ae259,0xbd868a14,0xbd656ae8,0xbd8c3c7b,0xbd990eb8,0xbdcfc5af,0xbdf0f1c8,0xbe2cedc7,0xbdda6df6,0x3cd267ce,0x3ba46ae1,0xbb08bef8,0x3bc4b19c,0x3ce9d348,0x3ce4f952,0x3d3ac6ba,0x3d27f476,0x3d74f37e,0x3d17b873,0x3d8442c0,0x3c0d7e7c,0x3d6303cc,0x3ce80352,0x3d0a41eb, -0x3d452548,0x3d5e0225,0x3cdf27df,0xbd8280cf,0xbd3d2d6e,0xbd839603,0xbd6e4b5b,0xbd72440d,0xbd587498,0xbd04a1b0,0xbc244fc2,0x3add1869,0xbd133e25,0xbd5fe210,0xbd77d40e,0xbdb431bd,0xbdff904e,0xbe3bb957,0xbe2777a6,0xbe26997a,0xbe32f9c5,0xbd3aea4c,0xbd374515,0xbc863781,0xbceae9f9, -0xbc363753,0x3d0aa3bb,0x3d16c484,0x3d406103,0x3d192d70,0x3d477e37,0x3d2f2da5,0x3d29d818,0x3d04683a,0x3d1d1f21,0x3d78bfc6,0x3b18b043,0x3dccbb13,0x3beb855b,0xbd3f8e69,0xbd414d7e,0xbd6ee556,0xbd5bc901,0xbd4e2346,0xbd2fca80,0xbccfc3b9,0xbcd2871c,0xbd2c59f7,0xbd727960,0xbd948d52, -0xbd666125,0xbd906f50,0xbd992b50,0xbdf1f916,0xbe0974cd,0xbe1b94cd,0xbd4981c2,0xbe51f8f6,0xbd94cf2b,0xbd5e1705,0x3caec882,0x3cd2e773,0x3b2e243c,0x3c7e3ca1,0x3cf0292b,0x3d2e3f00,0x3d8240d8,0x3d55a19e,0x3d1bd509,0x3d5cc496,0x3cf89c5f,0x3db6e75a,0x3ce59386,0x3d5b46f0,0xbc89b6b4, -0xbd6c5392,0xbd4e65b2,0xbdc929a8,0xbe074726,0xbe0c48fc,0xbd832ec5,0xbd950f90,0xbd917c65,0xbdbe3933,0xbe01ad2a,0xbd96a273,0xbbfd7c18,0x3c9bc7ea,0xbcacf48c,0xbdbf5538,0xbe466d03,0x3e80897c,0xbe3a1849,0xbec147d8,0xbdc9d0ee,0xbdf018ac,0xbd529de4,0xbd29b5d6,0x3d1e546d,0x3cc4d7c3, -0x3d462aff,0x3d8bed0a,0x3d447a32,0x3d48c269,0x3ce9eb11,0x3d500488,0x3d132029,0x3d4750b3,0x3d35529e,0x3de4ec6c,0x3d711349,0xbcb6334b,0x3b6a6581,0xbd508cef,0xbc865f8b,0xbd06a16d,0xbd50a6bc,0xbdbbeb2f,0xbe1d7d14,0xbe889027,0xbe8a6069,0xbe845603,0xbe413f35,0xbdb0ae1b,0x3d8f1e36, -0x3ea47df9,0x3e89404b,0x3f0a8f2c,0x3de7966f,0xbca42603,0xbc77cee8,0xbd840f79,0xbc6c6e15,0xbcf98c57,0x3b6c6fcf,0x3beab4fb,0x3cb7fd63,0x3d68ad2e,0x3d637219,0x3d807b74,0x3d2f2492,0x3d8ee28d,0x3d675b66,0x3d876a00,0x3d47b6b9,0x3d5a56ef,0xbc36e503,0xbd0fc9dd,0xbc8f955b,0xbd32a677, -0xbe1052cd,0xbe563d56,0xbe7c4bfa,0xbe63701e,0xbe590fe3,0xbe45a675,0xbe1b03bd,0xbe28bc98,0xbe070bde,0xbe1c03e1,0xbd6d9144,0x3def3e2f,0x3ec26bb6,0x3e83c98d,0x3f0d2008,0x3db357f4,0x3e20f834,0x3ce7c8e4,0x3baa71bb,0x3ad4290c,0x3b7cf483,0x3ce308f0,0x3d027f45,0x3d55c6df,0x3d6e9c16, -0x3d902669,0x3d03d64c,0x3cf06cfd,0x3d2166f2,0x3d36bf5d,0x3c7c6761,0x3d91567e,0x3d88c6bb,0xbd8685cb,0xbcd8ced7,0xbc85347e,0xbde62856,0xbe0e0548,0xbe1e33e1,0xbd862a0c,0x3adb05cb,0x3cbad44d,0x3d249f19,0x3c3c9653,0x3d8f04aa,0xbe1d7d5d,0xbe67627c,0xbecc9848,0x3d561124,0xbe21d605, -0x3ecfbe3a,0x3ebc811e,0x3db1afe0,0x3dcc63e1,0x3c8155fe,0x3d449052,0x3d096f32,0x3d90bbe7,0x3d9197b5,0x3d642201,0x3d8a9393,0x3d493aa6,0xbc6a781d,0x3c7fe830,0x3cc2e756,0x3cc9d679,0x3c2f8bc1,0x3d52bd33,0xbdbdb593,0xbdb67324,0xbd77f9c5,0xbd0f4416,0x3af06191,0x3d9de59b,0x3e002f65, -0x3e59371e,0x3e6895df,0x3e24e69f,0x3e3420cc,0x3e23b48b,0x3e3c9ec5,0xbb16e21e,0xbe449b96,0xbf102813,0xbe2df977,0xbe293a09,0x3e6aec17,0x3f030884,0x3e35f2e2,0x3e28ec80,0x3dcd9ca5,0x3df67370,0x3d6e35b9,0x3d26cf2e,0x3caf44fb,0x3d54a910,0x3d29ce9f,0x3d45fade,0x3d1334f8,0x3d453a5b, -0x3d00ce72,0xbc155d68,0x3c837620,0x3ce5bede,0x3d3cfe5c,0xbdb7bcf4,0xbc32e638,0x3cf0370a,0x3e02d909,0x3e431d8f,0x3e3bbdde,0x3e8801b5,0x3e73447d,0x3e5455b6,0x3dd52487,0x3c8ecc28,0xbcefb4ea,0xbe0528df,0xbe034f20,0xbe6a6f79,0xbddbd0ca,0xbc0dc12c,0x3d7996b0,0x3e612481,0x3e0a50f1, -0x3dd443da,0x3dc4cc8e,0x3d80874b,0x3d36d1b0,0x3ccb7050,0x3cc4446c,0x3d0350e4,0x3c99b71b,0x3cf7aca9,0x3d08a83b,0x3d39280b,0x3d28612d,0x3c7b70c6,0x3cb387b1,0x3d6fe9f8,0xbd0ffc08,0xbd3f706a,0xbc88f6c0,0xbc8871f7,0x3b3c56ed,0x3cc316b2,0x3d8e3720,0x3df5563e,0x3e218a36,0x3e15b0d4, -0x3dfed1fd,0x3d933347,0xbd3f7d56,0xbd4e4763,0xbd212110,0xbc9ef648,0x3b9bd19f,0xbba561e2,0x3e4f0062,0x3e1a4a97,0x3de68fcc,0x3de6d3c5,0x3d21f0a5,0x3d909af8,0x3ceedc55,0x3d3e0cff,0x3ce5bbf4,0x3d332205,0x3d2fb6ac,0x3d2858ae,0x3d81144d,0x3d200d3b,0x3d40aaaa,0x3d888d0e,0x3d5e12d4, -0x3d4ba634,0x3d48cc63,0x3dc55c09,0x3d9bf14a,0x3dd6f7ba,0x3dc25198,0x3dfd0f99,0x3e16950f,0x3e2227f5,0x3e27d616,0x3e20c1bd,0x3e02f206,0x3db586f7,0x3cc9e7be,0x3c6a5328,0x3cd9fb80,0x3cb4b486,0x3da11da4,0x3d53a2d2,0x3d141eac,0x3df23b6a,0x3da8471e,0x3df0a08f,0x3ddf7d79,0x3da08668, -0x3d1c4bc2,0x3d5b31c3,0x3d4be45f,0x3db04f3f,0x3d67bcbf,0x3d47d0b0,0x3d9dc685,0x3d8606b3,0x3d8ffc80,0x3d8e234a,0x3da7669b,0x3d09ec49,0x3dcd4262,0x3e01de7b,0x3dec579d,0x3e0662fa,0x3e0ea9d2,0x3e18fb5f,0x3e118e92,0x3e006190,0x3df220cb,0x3de7947d,0x3db2927b,0x3dadf610,0x3da859d2, -0x3d9d797b,0x3d6ca444,0x3d01a6ec,0x3d40062e,0x3d58fb7f,0x3d5758c0,0x3e3ec5e8,0x3d896f1a,0x3da7e10a,0x3dc1a602,0x3d8a0162,0x3dd6b94f,0x3d87dc3d,0x3de33e7f,0x3de463c5,0x3df639a4,0x3dcdf7bc,0x3dd56d2d,0x3de5eecd,0x3e0aed1d,0x3de546d9,0x3df35157,0x3dd8faa2,0x3df0d5cc,0x3db65480, -0x3dd11418,0x3db588aa,0x3daabe7d,0x3d8dedca,0x3d509ce1,0x3d9b67ff,0x3d608ee9,0x3d5cbb4d,0x3d540023,0x3cfdcd0c,0x3c846394,0x3cccaf60,0x3d0216c1,0x3d547e0c,0x3d59d1fb,0x3d0db97b,0x3c8949c3,0x3dc5f375,0x3e1ca890,0x3e115d99,0x3dae6824,0x3e08d272,0x3e1d8b78,0x3e25a434,0x3e16f627, -0x3e0c7604,0x3e117db2,0x3e1cda18,0x3e1f133a,0x3e07043e,0x3dab9a46,0x3df628a6,0x3e1229c6,0x3deae2ac,0x3d4f2716,0x3d6cc791,0x3d809739,0x3d83a778,0x3d90ee98,0x3d95df80,0x3d9070d5,0x3d8dc3bf,0x3d6a7699,0x3d5f9857,0x3d4f9686,0x3d3c78db,0x3d403da8,0x3d3eb915,0x3d1d16a2,0x3d0e0e1b, -0x3d103701,0x3da42db9,0xbd373802,0xbc2c787b,0x3ca916a5,0xbd782966,0xbdcc4fd9,0xbd5a8ec8,0xbd615439,0xbdaea20c,0xbd85e526,0xbd742088,0xbd51e539,0xbd2a6eeb,0xbd2e013c,0xbd389e25,0xbd328fb4,0xbdaf7721,0xbd8e432d,0xbd151f8d,0xbdad245d,0xbd8d4d8e,0xbb602648,0xbc89c6e7,0xbc9e9d47, -0xbca94c9d,0xbcb59799,0xbcc89600,0xbcdb228f,0xbcf964ee,0xbd1554fc,0xbd2b2185,0xbd42c696,0xbd3889bd,0xbd3ce1d8,0xbd01f6fe,0xbcab0afc,0xbbb85bec,0xbbdc0c93,0x3cbd6262,0xbcf03aad,0xbe1d776e,0xbcd8817e,0xbd9c2a4c,0xbd403010,0xbd7f1c78,0xbcf5e287,0xbc53163c,0xbd4b7dbb,0xbd2ee99a, -0xbd609bd4,0xbd0fe5a7,0xbd3fb1b3,0xbd6a5b2e,0xbd48409e,0xbd654192,0xbd31ebbe,0xbd9177ea,0xbd14cc79,0xbc5fcb4d,0xbcd30d29,0xbcdfaf7b,0xbceba5aa,0xbcf416bd,0xbd29f477,0xbd47a5ba,0xbd7ef259,0xbd9dd13f,0xbdd4874f,0xbdd59fb6,0xbdc9d5c1,0xbd789cea,0xbcfe4e32,0x3ba2c51f,0x3b9a9b75, -0x3dba95a7,0x3bc3bd8b,0xbdb1fa0d,0xbc6d6924,0xbd83271a,0xbd2aa356,0xbd6d3692,0xbb65f5be,0xbcd71ef2,0x3c274e21,0xbd302e64,0x3b4091ef,0xbc0c4c4e,0xbd0a79d3,0xbcd33001,0xbccf1868,0xbd194e2f,0xbcfdeb00,0xbd4c2820,0xbc8db6e9,0xb935b401,0xbcc16c41,0xbcffdb15,0xbd1b348c,0xbd398dc3, -0xbd8399af,0xbd9664ea,0xbde24405,0xbe1947aa,0xbe3cdc1b,0xbe419f2a,0xbe348f3c,0xbdc7fc01,0xbd09731d,0x3d6f854c,0x3d5e3b14,0x3e287ad8,0xbc24eea2,0xbe06660b,0xbc0dcc17,0xbd3ca083,0xbccb289b,0xbc9108c4,0x3cd08a94,0x3ccb4591,0x3d02fbb3,0x3cd2923a,0x3d05462c,0x3ba8e694,0x3c257a05, -0xbbcffc2c,0x39eb51ce,0xbc2b9523,0xbb020153,0xbcc97759,0xbc90a071,0x3bd74067,0xbc7aa0c2,0xbcec8d7a,0xbd09a29b,0xbd28b299,0xbd868218,0xbda16df8,0xbdeeb969,0xbe2be8b9,0xbe74c07b,0xbe85fb78,0xbe757794,0xbe03d7be,0xbcefee6e,0x3daee545,0x3db29b89,0x3e5c7869,0x3dc89e78,0xbd8063b3, -0x3c768e52,0xbba84f6f,0xbc5c3825,0xbc303a89,0x3d292e2c,0x3d05744a,0x3d182967,0x3d6f79e1,0x3d4f3a33,0x3d4001ca,0x3ce4cafe,0x3d0e5477,0x3ce75938,0x3caf3130,0x3d06d769,0x3ba72c04,0x3c42214e,0x3c49b1e3,0xbc27ae0a,0xbd0d2ed4,0xbd32828c,0xbd731b34,0xbdb60474,0xbdcce56b,0xbe23ef3a, -0xbe789103,0xbea817f3,0xbeb448ab,0xbea0570c,0xbe326743,0xbd26d78a,0x3e19e8f1,0x3e2f85e9,0x3e66898b,0x3e4d3222,0xbd29a4c5,0xbda6ed1d,0x3d260d9a,0x3cd78f7e,0x3d9d1fbc,0x3cacc315,0x3d5e7ca1,0x3d1684fe,0x3d00b141,0x3d2a690d,0x3d2a7770,0x3cfd8920,0x3ccb7b08,0x3c241160,0xba642498, -0xbc23bd78,0xbd470867,0xbc975e66,0xbc84d904,0xbd64378e,0xbdd5be6f,0xbde71eb0,0xbe227249,0xbe4f7dd6,0xbe967aca,0xbea8612c,0xbebaefdd,0xbea1f684,0xbe85eaad,0xbe727768,0xbd9dac20,0x3d565194,0x3e1d4c45,0x3e79da02,0x3dd7d88d,0x3df204ba,0xb98eb6f4,0x3d2054a3,0xbda253c8,0xbce7334d, -0xbd309301,0xbd0bc6e0,0xbb19b332,0x3c525ccf,0x3d5446da,0x3d44ceb4,0x3d46cdeb,0x3d0e449b,0x3d165ef2,0x3cdb5092,0x3c968c5c,0x3b1cb99d,0x3bc90c91,0xbd25fab5,0xbd381ef5,0xbd9432e2,0xbdf37175,0xbe5c7de6,0xbe96c5e7,0xbebfe737,0xbec6e3cf,0xbec530ff,0xbeeee45b,0xbe92c89f,0xbe5ad7b6, -0xbe05b576,0xbe651af0,0xbe5ac328,0xbda254db,0x3cf784f3,0xbec1908c,0x3dd63346,0x3dcdfcb9,0x3cfbc09d,0x3da153a1,0x3c92b841,0x3c9d5302,0x3a592ed6,0x3cd7baf5,0x3d157abd,0x3cdf5b5f,0x3d72a14f,0x3d7c494a,0x3cbbe776,0x3cf72c09,0x3c093515,0xbc6db116,0xbd199302,0xbd915e31,0xbdc8119c, -0xbe0cf9d8,0xbe14a6f8,0xbe0bf380,0xbe0a8263,0xbe0f9092,0xbe4fc3d1,0xbe0ab3b2,0xbde4cf1d,0xbdb5825f,0x3d7ca9f6,0x3e2d1118,0x3e7aa81b,0xba941b4a,0xbe4850e2,0xbf1e394e,0xbeee3075,0xbf383073,0xbeab6741,0x3e5ecf2f,0xbe11a4d9,0x3da4e4fd,0x3ce6efe8,0x3d40bc25,0x3b8cfe33,0x3d47db9d, -0x3d39dcc0,0x3b81783f,0x3d75664a,0x3d6fc403,0xbbf58386,0xbb86ac1e,0xbcd49841,0xbd732158,0xbd8ab7d7,0xbd8e2708,0xbe096fd8,0xbdd3a842,0xbdc3b7ec,0xbdbfd038,0xbcbf0a23,0x3bc9ad89,0x3b30c155,0x3d3d1e90,0x3da3f08a,0x3e3e663c,0x3e6e778c,0x3e9b49ce,0x3e85402e,0x3d6fb979,0xbe0041fb, -0xbf02104e,0xbf1c8127,0xbeffa44e,0xbf030061,0xbe296355,0xbdadb0b4,0xbc89f08c,0xbd765fdd,0x3be025c0,0xb6356327,0x3d05d697,0x3d435d48,0x3c917298,0x3d28b689,0x3cf45c25,0xbcd35395,0xbcff05ae,0xbd4c4537,0xbd755cd1,0xbd9e0930,0xbdc94ee3,0xbdc8d67c,0xbd250f5e,0xbbbfc779,0x3be206e0, -0x3ccc88c4,0x3d4cbf59,0x3d869229,0x3da3efea,0x3e0265cc,0x3e61b44c,0x3e0790f8,0x3dc78ef2,0x3cc04f06,0xbd1ac08d,0xbd53b7ee,0xbc81fb46,0xbe91838d,0xbe36ffc5,0xbe8225b9,0xbe1babe7,0xbe2b4e70,0xbd891603,0xbce4ea72,0xbd1af44e,0xbc07b304,0x3d2a9216,0x3d4965c6,0x3d7607c4,0x3d2a788e, -0x3d31705a,0x3d051ae6,0xbc1029a5,0xbc6f603c,0xbcc8a530,0xbd86b355,0xbdcde5e9,0xbdf8b5a5,0xbdaf417f,0xbd81ab52,0x3d5e9a67,0x3d69475f,0x3da360e3,0x3da122d8,0x3d9f8b23,0x3d90d7f3,0x3dc3ac38,0x3e3b7994,0x3e373954,0x3db1d8ad,0x3cf3f82e,0xbd83c159,0xbe32edc9,0xbdf6f178,0xbde9d76f, -0xbe57942a,0xbda9ecb3,0xbca418c6,0x3aecbf67,0x3d31465b,0x3c23bba7,0x3c64cd29,0x3c00b4d6,0x3c814983,0x3d17390d,0x3d2402b5,0x3d36157a,0x3d18273e,0x3d2dee83,0x3c42343b,0xbc42d20f,0xbc8516db,0xbd2ba726,0xbc8d47ae,0x3b82ed03,0x3d144ee4,0x3ddae247,0x3dad9140,0x3d984e5f,0x3d32a802, -0x3b5eeac3,0x3a958fdb,0x3ba97284,0xbc4fbdda,0xbd134b40,0xbb9f0ce6,0xbc6ea1e3,0xbcf07dda,0xbdb6b569,0xbdc47cb6,0xbd91f45e,0xbd22ee16,0xbdb9cd20,0xbd142740,0xbd40f5d2,0xbd0dc400,0x3a0f550b,0x3c2f6e7d,0x3c7b73d4,0x3cc80556,0x3d1b6c87,0x3d41d18d,0x3d826aba,0x3d46d103,0x3d9ac215, -0x3d9d4afb,0x3d94aa7d,0x3d9330ed,0x3d8017cc,0x3d9636b4,0x3dba5cf2,0x3dad4b56,0x3da84f3b,0x3d968f82,0x3d7fd098,0x3d583692,0x3d055fac,0x3bf57b58,0xbbb53640,0xbb8d6432,0xbc29737e,0x3c0a376f,0xbc625764,0xbce2b4bd,0xbd283954,0xbd1e088a,0xbd0a88d3,0xbd184e1d,0x3caf7c9c,0xbce4042d, -0xbc2c08fa,0x3c2f4206,0x3bf8fc6f,0x3c576c9e,0x3c7212ff,0x3bde95ea,0xba97ac20,0xbc899dea,0x3d13fe0b,0x3c6fa58c,0x3d8c9480,0x3d94471f,0x3dd2205b,0x3dd22d2c,0x3e166b6b,0x3deef032,0x3dd2e691,0x3dc2de18,0x3dc2b72c,0x3db6368d,0x3db3498d,0x3db2ed8d,0x3d219e49,0x3c3a99de,0xbcfaddaa, -0xbccc712a,0xbcdb0478,0xbce9c122,0xbd066b95,0xbcf15584,0xbce5b354,0xbd04b11e,0xbc916092,0xbd30c12d,0x3c2bdd46,0xbc691f2d,0xbcdbf3c6,0xbca4ad60,0xbd157fa0,0x3c35d694,0xbc79db6f,0xba1a2364,0x3be1b774,0x3bf48476,0xbc30507a,0xbb91da73,0xbc91681a,0xbc8b0add,0x3d0710f3,0xbb2b1d7e, -0x3d70fc6e,0x3ca1d16e,0x3c9499ca,0x3cf971b3,0x3cd49b2b,0x3ce023fb,0x3cafc8c3,0x3c82d9df,0x3cb6bc19,0x3cb39a59,0x3ccb4ebd,0x3c626fe5,0x394cb259,0xbc1b2bb6,0xbc2e4b57,0xbc5e5bbd,0xbc98215e,0xbcb49879,0xbc234487,0xbc84dc8a,0xbcf60318,0x3ac795e4,0x3d88ff15,0xbd01987e,0xbc82c21f, -0x3d563077,0x3d759f44,0x3d689588,0x3d630551,0x3d71465f,0x3d8c6e21,0x3d8f2da8,0xbc3bbf8c,0xbcb1ae3a,0x3db9914f,0x3c88533e,0xbbfbc194,0x3c04660a,0x3c232715,0x3bcc05b5,0x3baf476d,0x3bccc012,0x3be354da,0x3bc402a6,0x3b37730b,0xbbbcfca6,0xbc2cfe32,0xbc57c03a,0xbc4bfecc,0xbc7a7a61, -0xbc71d465,0xbc5c4719,0xbc4a7b5a,0xbc58df06,0xbc3f8008,0x3d397a40,0x3d251538,0x3d2c4acc,0x3da42d1c,0x3d22c475,0xbd2a670f,0x3d80e33c,0x3d16e284,0xbccae298,0xbd028f95,0xbd20b0d9,0xbd201b9b,0xbd286443,0xbd52f43f,0xbd2d51ce,0x3d11bedf,0x3d69ce65,0xbd587605,0x3cb0e5da,0x3d3e954a, -0x3c99dd30,0x3cb562f1,0x3cc7d7c0,0x3cbafde1,0x3cbbc7e2,0x3cb85907,0x3cbf19c7,0x3cc2265e,0x3ccbfd01,0x3cc776c9,0x3ce19afb,0x3cdda921,0x3cf01bf5,0x3cf2558a,0x3cfc93fe,0x3d0eb2f0,0x3d22611e,0x3dbd6327,0x3deca176,0x3d0ccbc9,0x3d3df09d,0x3cdaee06,0x3d52b076,0x3d4e6317,0x3c97923e, -0x3cdfac75,0x3d2abf70,0x3cc9701b,0x3d2deeb4,0x3d114b6e,0x3c8cbc3c,0xbc109058,0x3cf62537,0x3c6a28aa,0x3c7ec904,0x3cdea85a,0x3d29ef87,0x3c9bb8a6,0x3ce317b0,0x3cb2f3cf,0x3cbc5111,0x3cc79251,0x3ce3ef7f,0x3ca421d6,0x3c6f630f,0x3bc258ec,0x3c1914a7,0x3baa5553,0x3c8f13eb,0x3cec7a4b, -0x3d7508fd,0x3dcad023,0x3deb8f7c,0x3deca53f,0x3e0365eb,0x3de7d115,0x3dd8def1,0x3d923053,0x3d7f03ad,0x3d5077ec,0x3d288f8b,0x3d1dbc02,0x3d2798cf,0x3d658dae,0x3d62e90c,0x3ca549ac,0x3d315efe,0x3cd18c0c,0x3cc6d1e6,0x3cc6f6d7,0x3bca9b4d,0x3cc1c1c4,0xb7497990,0xbb184734,0x3ba0ab96, -0xb98b4735,0xba53b8bd,0xbbeae68f,0xbb150c81,0xbc114ae8,0xbc1f48b7,0xbc5699fe,0xbb003ae6,0x3bd18fac,0x3c9c969d,0x3d07c64d,0x3d61335f,0x3dcfd738,0x3dfd5273,0x3e388292,0x3e3ebc52,0x3e134ff4,0x3dd358d4,0x3de6ea81,0x3d84de5e,0x3d1bd73e,0x3d8bcb86,0x3d1ad774,0x3d272492,0x3d024fbe, -0x3cfc9eb2,0x3d20c172,0x3c177011,0x3c99a274,0x3bd959bf,0xba99d791,0x3b4766d4,0x3cafab8d,0x3be59b26,0xbcaef567,0x3b5ab7fb,0xbc421b91,0xbc23798b,0xbbf17a4f,0xbbf2058b,0xbce95ae4,0xbd4cdfe9,0xbd749e25,0xbd6da4d4,0xbd2b5e7c,0xbca3dd31,0x3c80e74e,0x3db7c3ed,0x3e5a7721,0x3e6a95b6, -0x3e1b9083,0x3e337831,0x3e3e4a82,0x3e081558,0x3dcdd22e,0x3db7030b,0x3d8da3e1,0x3d27edea,0x3d0d5b35,0x3d2746c5,0x3d3fda6e,0x3d33806c,0x3d0a757a,0x3c8f61c5,0x3cc859c3,0x3c959af9,0x3c8d55b9,0xbce7f844,0x3d1ef67e,0xbd063ef8,0xbd497c1d,0xbd03e05f,0xbd0bc0b8,0xbd2d2815,0xbd7fa563, -0xbd63b72f,0xbd957db1,0xbd8011bb,0xbd8459a0,0xbd33d058,0xbd047035,0x3c969334,0x3cbab064,0x3d9aece9,0x3e15d4e4,0x3e3990e7,0xbd40c17b,0xbde3f833,0x3e3e1eff,0x3d7c3a55,0x3d41bb92,0x3d21870c,0x3cda5469,0x3d92ec3d,0x3d8ec698,0x3d6319ef,0x3d1ef74a,0x3d34b4a7,0x3d176055,0x3cecfefb, -0x3c87d37b,0xbbb7f19b,0x3c83b915,0xbd2097e0,0xbb878a44,0xbd0e9caf,0xbd4d62a4,0xbceb7537,0xbd940c70,0xbd1f5606,0xbcc28d20,0xbe0a6a6e,0xbe0dffe2,0xbe2d7d15,0xbe17f210,0xbc94d44c,0x3d5195ff,0x3e21f4b7,0x3d5ef162,0x3c20d646,0xbc7e5f38,0xbc6d5f68,0xbec39736,0xbcbdc917,0x3e230e30, -0xbd300e6e,0x3d91581f,0x3cfb99ab,0x3d08888a,0xba418e76,0x3bcd281a,0x3cd4267d,0x3d2b10f8,0x3d5c5aea,0x3d57f752,0x3d2cfab1,0x3d2e4d74,0x3c449ecb,0x3cbf85e9,0xbc5496da,0xbcdd4f9a,0xbd5d7e3a,0xbdb95260,0xbda8c425,0xbd7047fb,0xbd8d2d84,0xbcde75f0,0xbccd0107,0x3d086c6e,0x3db69963, -0x3e748835,0x3e8a9248,0x3e9fbdd8,0x3ea769e1,0x3e4c8af4,0x3c8faf4f,0xbe837a7a,0xbea8e1be,0xbe992c4d,0xbea0417b,0xbe107918,0xbdbd5782,0xbd0fca40,0xbc9748fa,0x3be9a89b,0xbaae30ed,0x3d26ea4f,0x3d42e11b,0x3c84f954,0x3d768939,0x3d59a3fb,0xbc07ed79,0xbbd3882a,0xbc8acd3a,0xbd8ae82f, -0xbd653ad8,0xbd8dfa74,0xbcc1ef19,0x3cbc6cab,0x3da6dd60,0x3e28871a,0x3e951d3a,0x3eca54b2,0x3edbf586,0x3ee01b2e,0x3ed1f562,0x3ecc1aa7,0x3ea340a9,0x3ea65982,0x3ea21773,0x3eb10c70,0x3eb4ab5e,0x3ebdb25a,0xbd01037c,0x3eafbed3,0xbe9b2bba,0xbeaf6d03,0xbda00998,0xbdd92bbd,0xbceceef3, -0xbc23ba59,0xbbbd0811,0x3d289fff,0x3d423f53,0xbc76ec97,0x3d66069b,0x3d2ad25c,0xbc6a9803,0xbc868c78,0xbcc50b3c,0xbd8640f4,0xbd3352fc,0xbdb90bbe,0xbc926e61,0x3e01d5dc,0x3e41e2a3,0x3e83571a,0x3ed5fee0,0x3f03540f,0x3f164d6d,0x3f0ef577,0x3f009804,0x3ef792c1,0x3ebb3ff3,0x3ea43e91, -0x3e534caf,0x3ebcfc16,0x3efc4dab,0x3f50f48d,0x3f01a9ed,0x3f244775,0x3da43ce6,0xbe2fc42d,0xbd43cf58,0xbd770fa2,0x3cff3fbe,0xbceb5e6b,0x3a1f6bb6,0x3c2f6806,0x3cd4c420,0xbb53d92d,0x3d221003,0x3d4061c4,0x3d13f2eb,0x3ca59ded,0xbbf9ef8f,0xbc2a63ff,0x3bbc1328,0xbccdf938,0x3dcf580e, -0x3e0b4e03,0x3e2fb9bb,0x3e780d79,0x3e6d9484,0x3e8e05f1,0x3ec05308,0x3eae2539,0x3eb4daae,0x3ebd1acf,0x3ea87095,0x3e86edc9,0x3e16edbf,0x3e8efe78,0x3eac2093,0x3f2935da,0x3f0643ed,0x3edc9b2e,0x3e3c1333,0xbe2ea93d,0x3d13409e,0xbd1f7d7f,0xba1f1ed6,0x3ced84bc,0x3d09548d,0x3d5bac4b, -0x3d7d0917,0x3d2dac40,0x3d190893,0x3cf703a8,0x3ccf986b,0x3c5c3d19,0x3b037ded,0x3d2ecb64,0x3a5aae13,0xba405e9a,0x3bae07d6,0x3e1b69a6,0x3e0715f7,0x3e2d5bfd,0x3e2d6afe,0x3e1be4fb,0x3e03ac1d,0x3de775af,0x3dc40a2b,0x3cf39a8d,0xbcde6387,0x3a035f06,0x3c8bb211,0x3da9fa28,0x3e3fc02b, -0x3ed8e512,0x3ec31414,0x3e5e84d5,0x3e6477b6,0x3c6e939c,0x3b0f85be,0x3c90ccba,0xbcea2ba8,0x3b374044,0x3c18dd43,0x3d07668b,0x3d51451c,0x3d0de8ca,0x3d8b5828,0x3d5c9595,0x3d2a9243,0x3d3da810,0x3d8c7051,0x3d85e8aa,0x3d8ea0a7,0x3cc43f63,0x3db65577,0x3da805f9,0x3d8d1ab3,0x3db19102, -0x3dacd3b7,0x3dae2b8c,0x3d3f4bfc,0x3c9eda10,0xbcecc809,0xbd2ac7fa,0xbd691068,0xbc3a5539,0x3d3c31ef,0x3d85321f,0x3da07c63,0x3df1ee9c,0x3e34ada3,0x3dc4df46,0xbd150c81,0x3d402836,0x3ce1d340,0x3d44e434,0x3d3faa92,0x3c4c08e6,0x3caddb6b,0x3ca8cad4,0x3cb50a9b,0x3cd7b072,0x3c87c2a5, -0x3d12f6d3,0x3c802d76,0x3d43181e,0x3d2894c3,0x3d51bd39,0x3d898320,0x3d85b3e7,0x3d68198b,0x3b813839,0x3cd6b1e1,0x3bda7114,0x3c49d116,0x3a8907b8,0xbcc72f76,0xbd03c599,0xbd3c2dfb,0xbd82c862,0xbd639a57,0xbcbeb946,0x3a930183,0x3cf7c0ca,0x3d0ecb2e,0x3d21c48f,0x3cbcdb1f,0x3c1db4b3, -0x3d10adbd,0xbca3f251,0x3c4c68e2,0x3902dffc,0xbbe58631,0x3c3a36b4,0x3c4d9abc,0x3c631e70,0x3caa0ab5,0x3ccb61a3,0x3d1b54b2,0x3cca3c40,0x3cdb1ca8,0x3cf18f3d,0x3d07414e,0x3d0c9a95,0x3cd109f0,0x3dad50f1,0x3d10a978,0xbc53cf7d,0x3c1df796,0xbc2890f7,0xbc51147f,0xbcbcf0f1,0xbc7c2210, -0x3c32b453,0x3d02e59d,0x3d779fe9,0x3d673e35,0x3d3a77dd,0x3cda64a1,0x3cd25cac,0x3cebc8e8,0x3d197311,0x3cccfd07,0x3ce6d39f,0x3cfbd85b,0xbc00f13b,0x3cd5a220,0x3d08306a,0x3cbc8a3c,0x3d01414c,0xba120af6,0x3caab543,0x3c8a2280,0x3c80b229,0x3ca0f8a3,0x3d069abd,0x3d07a4eb,0x3d2ceb28, -0x3cd3c8a8,0x3d06dd28,0x3ce9a89d,0x3d05a0df,0xbc63e849,0x3a79cbf2,0xba82f629,0x3b245610,0x3bd6e36c,0x3c3b7d1b,0x3c52f239,0xbb946262,0xbc480888,0xbc91ec40,0xbc1a3772,0x3bf380c8,0x3cea31af,0x3cf6e32f,0x3cc40b01,0x3ca0fae7,0x3ce8f0ac,0x3ca220d1,0x3ce5787d,0x3d15fc3c,0x3b58ccea, -0xbd0e50d7,0x3d12fa76,0x3ca54593,0xbcba7767,0xbce48d26,0xbcdf37c1,0xbcda10f6,0xbcf242db,0xbd18c46e,0xbd1b2e60,0x3ce94542,0x3d365602,0xbc9ba23f,0x3c96add1,0x3cfb2258,0x3c59c1a6,0x3c86bf63,0x3c57f7d4,0x3c3cde8e,0x3bf5e977,0x3baf90e7,0x3be91bba,0x3c5ccb1a,0x3cc2c951,0x3cf81673, -0x3d06db44,0x3ce0de08,0x3cd1044b,0x3cbc3b42,0x3cc7b99d,0x3cd1eb31,0x3cbedd68,0x3d1a1548,0xbddc953b,0xbdae75f5,0xbdff62c4,0xbdbef0fa,0x3bfec60f,0x3da10236,0xbd9de2c3,0xbc37ab99,0x3d95a451,0x3da6a8bf,0x3daedfbd,0x3d971789,0x3d9e8eb4,0x3dc37982,0x3d985974,0xbc38b46d,0xbd85a243, -0x3da1f2a1,0x3aa32cad,0xbd6e0709,0xbdb36df6,0xbd9e183c,0xbda65074,0xbd9ef3f1,0xbda3b096,0xbda1faba,0xbd9b5489,0xbd98f1f2,0xbd959bcb,0xbd922899,0xbd9b869f,0xbd9fc61e,0xbdabd514,0xbdb8878e,0xbdbf163f,0xbdc0f34d,0xbdc12a4a,0xbe0f0359,0xbe03b7c8,0x3df4111d,0xbd273f2b,0x3d1325c4, -0xbd10c17a,0xbd01eb05,0xbc0139e6,0xbd28ed9b,0xbcad322a,0xbc4a5700,0xbcbe73c9,0xbd2cd1c6,0xbc822388,0x3d17fe43,0xbd57dcdd,0xbcb3f5ce,0xbd2f5a6b,0xbcc07a13,0xbddce321,0xbdcabd43,0xbdd4f0e1,0xbdcbd703,0xbdc6f56f,0xbdc55836,0xbdd72a46,0xbddd1e99,0xbde4cc0e,0xbddb5a6e,0xbddf4864, -0xbdcd22c2,0xbddd3dd0,0xbe0b5221,0xbe1f7055,0xbe2138d0,0xbe19edd5,0xbe56dbd3,0xbe1df4d4,0xbbc7394e,0xbda73771,0x3c3bc2e8,0xbca4b323,0x3c787391,0xbd2c6e44,0x3c543cb3,0xbd1f6803,0x3b1ae3db,0xbd80dc35,0x3bbbdcb1,0xbd0b412e,0xbc979a98,0xbd2ce2c4,0xbd4b6662,0xbcec4aee,0xbd663fea, -0xbd9d9c26,0xbde4e197,0xbdd6adeb,0xbdcd42f8,0xbdca5c7d,0xbdc7139a,0xbdc4b065,0xbdd153ad,0xbdc49026,0xbdc347f9,0xbdc6edc8,0xbde1cfee,0xbdef1cf5,0xbe30f096,0xbe46d935,0xbe544a0a,0xbe541436,0xbe945803,0xbe05e12e,0x3de941d7,0xbb7d989c,0x3d0928b6,0x3ce12700,0x3d0bc66f,0xbc8b7790, -0x3c32e040,0x3c5054c9,0x3c9502ea,0x3bf46e7e,0x3c341a11,0xbc7a9979,0xbb889267,0xbcc0cc8c,0xbd21e7df,0xbd2377a7,0xbd632a52,0xbd9ce1c6,0xbde8d289,0xbde09f5c,0xbdde8230,0xbde479f9,0xbdf8ada4,0xbe0485b2,0xbe178a7b,0xbe1ffa52,0xbe20771c,0xbe0ebe4b,0xbe053ee4,0xbdedad20,0xbe5ce9b8, -0xbe87fd28,0xbe92e41a,0xbe873b41,0xbeb217f5,0xbe816404,0x3c70c2cc,0xbd110a7a,0x3ba49783,0x3c5cbc3f,0x3cee809a,0x3ca773f4,0x3d2e90fa,0x3cfb0b96,0x3ce31eb7,0x3d28a72b,0x3cda60f5,0x3c47a16d,0x3b285207,0xbbbc052e,0xbce0b7d5,0xbd17f0ab,0xbd6ef31d,0xbdb91f4a,0xbdbea25e,0xbdea3397, -0xbdc71082,0xbdb7c452,0xbdd6907d,0xbdb53530,0xbdf452fe,0xbdfd4717,0xbded8d9e,0xbdfde717,0xbdfcde0a,0xbe066c00,0xbe80b014,0xbe95a4fa,0xbea3e64a,0xbeaa85b6,0xbec7845c,0xbec41657,0xbe845e2c,0xbdbddf6d,0xbe2c6e0b,0xbd87e774,0xbdf6da12,0xbc86b97a,0xbce5a25e,0x3cbe86b4,0x3cf0c6d7, -0x3d1ed3ed,0x3d13a111,0x3cb94d2b,0x3c10fe46,0xbc4b0ced,0xbc81e852,0xbcead50c,0xbd8fdb54,0xbdfa908c,0xbe13ea62,0xbe11007b,0xbe23edab,0xbe6eefc2,0xbe4ccf6f,0xbe8128e4,0xbe58f55f,0xbe3eeea8,0xbdec5733,0xbde225d1,0xbde3032d,0xbd7656af,0xbe0a86bb,0xbe70ac47,0xbeac4303,0xbee9724b, -0xbd7b50ff,0xbe81e7b9,0xbe2b8ecc,0xbe05cec3,0xbcf1c32f,0xbd56462c,0x3b68309a,0x3c9e7d64,0x3bfd6bb0,0x3cfc995c,0x3cc4d4a7,0x3d3a7a76,0x3d34c647,0x3cad6116,0x3c372972,0xbc254b4d,0xbd2d5fac,0xbd643201,0xbd9fd1ab,0xbd6c5a0d,0xbd367122,0xbd196daf,0x3c29f8a9,0x3e01c6cd,0x3e5e28aa, -0x3eaf13df,0x3ec25ec5,0x3ebed678,0x3ec173f8,0x3e402940,0x3cd25e16,0xbe08b0a6,0xbda64076,0xbb9ad2ec,0x3df14818,0x3c87353a,0x3eac41dc,0xbd88d857,0xbe3264fd,0xbd982e06,0xbdf23539,0xbd3ca0ee,0xbd2e2918,0xbcdccb59,0x3c821299,0x3cc4895f,0x3ac376dc,0x3d1506ff,0x3ccc8b24,0xbcc4bb50, -0xbd250c55,0xbd1b9d32,0xbd6c7c49,0xbd37b4ad,0xbd1bb7e8,0x3b6f1c72,0x3cbc528b,0x3d589982,0x3ddcb1ea,0x3e13963d,0x3e4529bc,0x3e424f57,0x3e58e040,0x3e5c0b68,0x3e963959,0x3e0171cb,0xbc17fbb9,0xbe3409b7,0xbe482c24,0xbdec40a7,0x3e22721f,0x3e881b16,0x3e2dc4b6,0x3eaf6cac,0x3c4b7c3d, -0x3d8a7cc5,0xbc8038f4,0xbca140a3,0xbcb30ca8,0xbc875e12,0x3c9b9c4f,0x3d08853d,0xbcc6b41d,0x3d0e9e7b,0x3cdd24ea,0xbc93f2bf,0xbc342a61,0xbcefc2ba,0xbcc34254,0x3afba1da,0x3cb50b1d,0x3d92742a,0x3c3e32b9,0x3d2f79d5,0x3d86a60a,0xbacaa7ef,0xbd594dc2,0xbe0283e1,0xbe0809ab,0xbe307df5, -0xbe31500c,0xbe0c6b4f,0xbe487031,0xbe502664,0xbe9d3efd,0xbea93a2f,0xbea9b1ca,0xbd3a732f,0xbe9b2d47,0x3e3f232f,0x3e42e6c2,0x3d959b0d,0x3d172628,0xbc4a9d7b,0x3ccc9b47,0x3ce79477,0x3cd4b181,0x3ca6814d,0xbc2a64c0,0x3cc2dd3f,0x3d397199,0x3ce041b0,0x3d1c06ec,0x3d1c2774,0x3d479a9d, -0x3c3bfd79,0x3d4ff0ee,0xbaa32d9e,0xbd4826e1,0xbda8c231,0xbde28c5b,0xbe24dd7e,0xbe56c48f,0xbe6f3c27,0xbe88a6e0,0xbead1fe5,0xbf099d0f,0xbedc5000,0xbed98c6f,0xbe8f0665,0xbeca9ebd,0xbedadafe,0xbf1c54b1,0xbec77ca7,0xbed8cd1f,0xbda4cd12,0x3e8c7df6,0x38861325,0x3d90e0d7,0x3d0da715, -0x3cacb23a,0xbd2fa7a4,0x3bed37de,0x3c27f8da,0x3c9c783f,0x3be94b1a,0x3ac3a274,0xbcd0cf6d,0x3c9a4ad9,0x3ccbebc0,0x3cd52740,0x3d8b488b,0x3d815f3a,0x3daf3786,0xbd232fc0,0xbceef22d,0xbdeb6a63,0xbe24842d,0xbe7750a1,0xbe91ff2a,0xbecb6d8f,0xbecae668,0xbed07b71,0xbec43e0b,0xbeb0801a, -0xbea9f8e2,0xbe93b2b4,0xbe887528,0xbea52d93,0xbeab15cf,0xbe507561,0xbe08a8c9,0x3d78b81e,0x3ce54fe1,0xbafae8ae,0x3c2b8b1f,0xba9188fa,0x3cc1f34e,0x3c36145a,0x3cfce803,0xbc49e11b,0x3c951d86,0x3bb2b79d,0x3b25f08e,0xbbee5e72,0xbc7eb4be,0xbd249a16,0xbcf12ee7,0x3da9fe27,0xbd6129a0, -0xbda71094,0xbdb8416c,0xbe328406,0xbe52024c,0xbe673742,0xbe661bfc,0xbe2767ea,0xbdea5ed4,0xbdd6091c,0xbd8a732a,0xbdca3d8d,0xbe1d88b2,0xbe24cc9b,0xbe2260a8,0xbe04f1d9,0xbe312001,0xbe08487c,0x3d8e2fc1,0xba9d1c22,0x3b410046,0x3b08810e,0xbd073f81,0x3bbd32d4,0xbaaddd4d,0x3c46b80f, -0x3b69c70d,0x3c81f8cc,0xbaefb5bc,0x3c4830ca,0xbc9f9ff3,0xbcc2150d,0xbccf1546,0xbc4a8bd7,0xbcf60ee4,0xbd5b2e90,0xbcbb936a,0xbde69700,0xbd8c81be,0xbd962026,0xbdc66d96,0xbde468ea,0xbde345b1,0xbdc4f9d1,0xbd97dd14,0xbd519dfc,0xbd621272,0xbd9af3d7,0xbdf3ede0,0xbdf6db18,0xbde1257c, -0xbe012b64,0xbd910a6c,0xbd5a8354,0xbd8ef2b5,0x3b43f056,0xbc8135ae,0x3c9f49ad,0x3cfdf5ed,0x3c0e3bf9,0xbcaef569,0xbb995dd6,0xbc8472db,0x3cc3ae1f,0xbd33ad3d,0x399a199e,0xbd107efa,0x3c806e2b,0xbd15eed0,0xbd424d7b,0xbd4adb46,0xbcd93f77,0xbdc4b583,0xbda00cbc,0xbd67b3fa,0xbd31103b, -0xbcdca5ae,0xbc9be1fa,0xbcc3d734,0xbd399d24,0xbd85731b,0xbdb256b0,0xbdd457d8,0xbde98a22,0xbde5df52,0xbde4a8dc,0xbdf0d0b3,0xbe0566df,0xbdb1c836,0xbd9121a4,0xbd915e25,0x3d010d09,0xbd6a6545,0xbd6e4bbd,0xbd44cd06,0xbd8c646c,0xbb5e1115,0xbd37c2f0,0xbc4a533d,0xbc0d24e2,0x3b8e6a4c, -0xbcc05c53,0xbb12ad35,0xbcdd8130,0xbc9cc304,0x3cc11d7c,0xbd1f20b2,0x3d05c98e,0xbd397a9c,0xbd1e7159,0xbd6584e2,0xbd821515,0xbd95a3ba,0xbd9f8814,0xbd9b48e1,0xbd981f15,0xbd8d16f8,0xbd88f2e9,0xbd92c201,0xbd949bea,0xbdbc587e,0xbdb2f026,0xbd7f6b22,0xbd6a74a5,0xbd945564,0xbd86efb9, -0xbda84557,0xbd3da221,0x3cab95a5,0x3d8c38f6,0xbd3cc894,0xba2a107c,0x3d7e241c,0x3d96eba9,0x3d8a18f9,0x3d7e9c0f,0x3d8fdd33,0x3db12004,0x3db73c42,0xbc11de6a,0xbd846a82,0x3d643253,0xbbd3865b,0xbd7d5ca2,0xbda9c5ce,0xbd9349ce,0xbd8d33e6,0xbd8298e7,0xbd74a014,0xbd6c3567,0xbd6ea64c, -0xbd829dc3,0xbd8f41db,0xbd9d6b1b,0xbda7a192,0xbda2b0bb,0xbda60397,0xbda08470,0xbd9ee553,0xbda2b3f7,0xbd969b13,0xbdc5456a,0x3d4a8db9,0x3d1b6e20,0x3d9aec51,0xbc1ea42a,0xbdb8f2b3,0xbde4898e,0x3c08986c,0xbd800ee6,0xbe03e8f7,0xbe04a326,0xbe03e67b,0xbde6aa5a,0xbdedeec3,0xbe0be86f, -0xbded816b,0xbd85b603,0xbbaa78a8,0xbdfa079a,0xbda347a8,0xbc419711,0x3d9c2ae0,0x3d5349de,0x3d6ae642,0x3d6f43b4,0x3d80c3cb,0x3d848fd1,0x3d830b1c,0x3d7977e5,0x3d756d7b,0x3d6a8584,0x3d6f35c1,0x3d5e11a6,0x3d5a95f9,0x3d552b04,0x3d4e63f9,0x3d2d8286,0x3d3714f2,0x3cd1c60a,0x3c6e0965, -0xbe250198,0xbbfc075b,0xbd9be58d,0xbcacd2f1,0xbcd8945f,0xbd0e88b7,0x3c8bc3ab,0xbcdc852f,0xbd0b8a73,0xbcf7d6c1,0x3b5dac5f,0xbcee9004,0xbdc45ba8,0xbba87140,0xbd39fa3a,0xbc4b8a30,0xbd8dd00f,0x3d692955,0x3d891612,0x3d8686bc,0x3d9fee9a,0x3d9b85c2,0x3d9cc867,0x3db621e9,0x3db3af5e, -0x3daacad4,0x3d92f493,0x3d9f50f8,0x3d921e3b,0x3d95a258,0x3d8c1693,0x3d436801,0x3b80c4eb,0x3bd63c40,0x3cce2e0f,0xbcc2e633,0xbdf5951d,0xbc8b7379,0xbd77ca70,0xbce88122,0xbd6de91c,0x3c340441,0xbcea1936,0x3d369fa9,0xbd294bbe,0x3d75f166,0xbc73f8a8,0x3c32b52a,0xbc9cdc47,0x3aa3806d, -0xbae470ef,0xbcd11583,0xbcc81f86,0x3d39ffa5,0x3dddf651,0x3db8e8e5,0x3df320fb,0x3dfaefd3,0x3e0cc4a8,0x3e12ca8a,0x3e032c9a,0x3dfa00d6,0x3ddf0c88,0x3ddb6352,0x3dd09f04,0x3dbcfa35,0x3dad00a9,0x3d763cbb,0xbc35a14f,0x3afa3557,0xbb6f7440,0xbdc49db2,0xbe3fc548,0xbd8fb728,0xbda37652, -0xbd182a5b,0xbcaf8599,0xbc2a64a1,0x3c8410ab,0x3cc0e8d8,0x3b9f9027,0x3ccdbd3c,0x3a0376c6,0x3d11ed2b,0xbca71cdf,0xbb265305,0x3b89d28b,0xbbd7b165,0xbcd28a55,0x3c71c14b,0x3ded0993,0x3dad15a7,0x3e073da2,0x3e0d24a7,0x3e17ee3f,0x3e265e9d,0x3e18a52f,0x3e0bd132,0x3ddbb0ad,0x3df8e958, -0x3dec9ed8,0x3dfc41c9,0x3dcbc002,0x3d2bc988,0xbdcc6037,0xbda9fffa,0x3be59dae,0xbd970d30,0xbe49e6fb,0xbdafcb4a,0xbd2b27bf,0xbd10baad,0xbcf0f5b2,0xbadd69e8,0x3cd87d10,0x3d078ae7,0x3d3b4631,0x3d21934f,0x3d1634e7,0x3c9144ad,0x3c7c2e14,0x3baaf5e1,0xbc71fe90,0x3d2b0aae,0xbd8d8aef, -0x3d9839be,0x3e0c181e,0x3e140926,0x3e2fd9fa,0x3e44c247,0x3e64ae6e,0x3e6bbdb2,0x3e557506,0x3e303d7a,0x3e1ccabe,0x3e19459c,0x3e1bd8c6,0x3df81c3c,0x3dfb8355,0x3d7dd8fc,0xbd9c64c4,0xbd52cf5e,0x3e44b48d,0x3e8f27f2,0xbe14355f,0xbdd22e2f,0xbd5e678e,0xbda736dd,0x3c2a653b,0xbd7bdd74, -0xbab9fe25,0x3c98a0a5,0x3c86af54,0x3d252849,0x3d2fa98c,0x3d14666a,0x3cce9770,0x3cc53714,0xbcbc6b80,0x3d0fbf30,0xbc0a9f0a,0x3d90b3e2,0x3ddca5c7,0x3dc390a5,0x3e37d8d3,0x3e740e6a,0x3e8fa3b6,0x3eae0e08,0x3ecb601f,0x3ee4c951,0x3ee60116,0x3eac2c41,0x3e87fd28,0x3e22818d,0x3e74a5ed, -0x3e92ca2c,0x3e874dc8,0x3e8857cb,0x3ec5ae46,0x3d324682,0xbe68b603,0x3da6a7ac,0xbdb9d905,0x3c917242,0xbcd33f55,0xbc4964da,0x3c8256b7,0x3c48b26c,0x3d12398c,0x3d2f1414,0x3d311d0d,0x3cd5a3e8,0x3c9591c2,0x3d16cdd1,0x3b18f63e,0x3c8056c3,0xbd0312b8,0x3d819743,0x3e3a01ea,0x3e43bf60, -0x3e768aa2,0x3e93c72c,0x3e96f54e,0x3eae19ad,0x3e931fc9,0x3e869cb9,0x3e1a970b,0x3e07ac87,0x3dc5d34b,0x3d43f6b0,0x3e0f9fa8,0x3e2eb529,0x3e6d2f9a,0x3e9427d8,0x3dc989fd,0x3e7292dd,0x3e3d4a15,0x3d95c250,0x3d510e42,0x3ca7461e,0x3bbfaecd,0x3b8f9c34,0x3caea175,0x3d1ae5da,0xb9be1f56, -0x3d29a67e,0x3cf19a1d,0x3b74c82e,0x3ca117d4,0x3c1d390d,0x3ceedce6,0x3cd25046,0x3d2e5773,0x3d919ac3,0x3d681532,0x3d0af10c,0xba828f6d,0x3b88d20c,0xbcc108d0,0x3c2e05ae,0xbd91f6dd,0xbdb78312,0xbe4457c2,0xbde06d8d,0xbd7d3efc,0x3dae262b,0x3d9d75d6,0x3b3ead07,0xbdfb87ba,0xbd82b58d, -0xbe6bcfe5,0x3ce2727e,0x3e19c1a3,0x3d363e12,0x3d5ee60d,0x3cbbf0c4,0x3ce17b01,0x3c6ac6c9,0x3d2e4735,0x3d434458,0xbc8e0ac4,0x3d0fecf2,0x3ccecdab,0x3ae74171,0x3c9215c2,0x3c20f211,0x3d011272,0x3c4ef9ce,0x3cd45032,0xbc581921,0xbd945102,0xbe034c31,0xbe2b7ebd,0xbe517045,0xbe75b520, -0xbe7cbc2e,0xbe9b11f6,0xbe9374f7,0xbeab70b1,0xbe63ede6,0xbdf646f1,0x3d08a9fb,0x3d7e1fce,0x3d0b95a5,0xbda479d9,0xbe2cf9b5,0xbd6824ae,0xbe61efa9,0xbd671baf,0xbca02798,0xbcbede10,0x3c0d75c3,0x3cca9ed0,0x3b112402,0x3cef9b61,0x3cc729bd,0xbc6a6e8f,0x3cc6b233,0x3cb8476a,0x3c952dab, -0x3bf19c79,0x3bd40462,0x3b7fc088,0xbc27e841,0xbcb4bd47,0xbd6ab3c1,0xbdc7d005,0xbe004f54,0xbe320623,0xbe36e633,0xbe725bc3,0xbe9a91cc,0xbe90faf8,0xbe802a86,0xbe032b69,0xbe0b2b47,0xbda17aab,0xbd99892b,0x3cf4b1f5,0x3e092931,0x3e508507,0x3dac4083,0x3e0ab531,0xbdd5d00a,0xbe808ec1, -0xbd996ebf,0xbd46cef1,0xbd094863,0xbd11246f,0x3cf8a574,0x3bd639a4,0x3cab72dd,0x3c4dc3b2,0x3bf208bb,0xbbf0b949,0xb97de218,0xbc9f1dee,0xbb9676cf,0xbd23f0cc,0x3b4cfedf,0xbbc4ee1e,0xbd343b39,0xbdc37dee,0xbe124668,0xbe3f78c0,0xbe503c4e,0xbe37eafe,0xbdcad7f8,0xbd9d81ea,0xbc2f019e, -0x3dfff406,0x3e2644c7,0x3e1c3ddc,0x3e3379ca,0x3e46d171,0x3e1ba05b,0x3db65cae,0x3d7ad773,0x3d0c86c1,0xbd4349c0,0xbdf8750a,0xbd7842f6,0xbd4efb49,0xbcc6ce94,0xbc1e4b3c,0xbb47236f,0x3c8749c9,0x3bcbef8b,0x3c0a0961,0xba281417,0x3aad2f0b,0xbb8d4100,0xbcaad00e,0xbd54ff8b,0xbd1e5b3b, -0xbd93e6ae,0xbdb53563,0xbd9ee7b2,0xbd9270af,0xbd7be1b3,0xbd1a641d,0x3aa37048,0x3bf7a5f9,0x3b83e24b,0xbcff7056,0xbd1d5bb3,0xbd0922b8,0xbc8b0850,0xbba58741,0x3cb6daa9,0x3d0eedb3,0x3d74a88c,0x3d71b714,0x3d02f2f1,0x3d71c13b,0xbd8e746b,0xbd59ad9e,0xbd1ccea2,0xbd36f521,0x3bfdc107, -0xbbc62be5,0x3c455f82,0x3bdafbd0,0x3c92d90c,0x3bb3fbef,0x3ae65460,0xbca88445,0xbc779aaa,0xbcf63218,0xbd190c49,0xbd92c8ba,0xbda23664,0xbd9cdf31,0xbdacdfca,0xbcd9d83b,0xbd2e0f75,0xbd046b80,0xbc7e6662,0xbc349803,0xbbeda61b,0xbc245357,0xbc4e39e0,0xbbc04e8c,0x3b9fa37e,0x3c25d82a, -0x3d244231,0x3cd27249,0x3c9abe10,0x3d3833dc,0x3c05bb74,0x3c8f024d,0x3d0c9a97,0xbcde024e,0xbbcd9b0d,0xbd1c5686,0xbd17f78b,0xbca4da6e,0x3c59213c,0xbaac20a2,0x3b00af52,0xbcb6ba6a,0x3bb4bc41,0xbc8bda3d,0xbca8f875,0xbd47b2fb,0xbd1ff7e1,0xbd20f6e1,0xbd240cfc,0xbd8de6b8,0xbd2dcda2, -0xbccb4caf,0xbd2f768f,0xbd15d8c3,0xbd3eda8c,0xbd365d28,0xbd300129,0xbd24313b,0xbd0f21ce,0xbd164939,0xbc8a6439,0x3a0de182,0x3c9d2f25,0x3cb3e958,0x3cd5a9d1,0x3d08e806,0x3cb1118d,0x3b9c1b68,0x3a165463,0xbdd239ee,0xbc522d5f,0xbca4ded9,0xbce52b60,0xbb2863e1,0xbd4979ab,0xbc45eeb1, -0xbd4b8d3c,0xbd608fb9,0xbd7fb710,0xbd259abe,0xbd4bf0b1,0xbd313183,0xbd4bec60,0xbd89fe7d,0xbd2089c1,0xbd8f1098,0xbcce767a,0xbd02349f,0xbcc68278,0xbca49f98,0xbc5ffa51,0xbc1d8ae3,0xbc02643b,0x3b66a35f,0x3c920788,0x3cec5ed3,0x3d17c6cc,0x3d24dd0f,0x3d4ccb15,0x3d1efc7b,0x3cd7e998, -0x3c8fe1a4,0x3c73bfa6,0x3c67633f,0x3ce7b3c8,0xbce4b8ab,0xbda76902,0xbdbceb06,0xbca87d5b,0xbd861b2a,0xbdcb1627,0xbddc0d9f,0xbdc41a2b,0xbdb19fa0,0xbdbb1523,0xbdcff6a7,0xbdd45e6f,0xbd8e8dd3,0xbcbb866f,0xbdae8a23,0xbd995535,0xbd119808,0x3c219650,0x3b96d9f4,0x3b8dd1df,0x3b62e076, -0x3b1c68f2,0x3b2d9094,0x3b69d931,0x3ba555aa,0x3bcc7d85,0x3bfe2a14,0x3c27fc9f,0x3c6b7056,0x3c9bd30f,0x3c8ecb81,0x3c8e3985,0x3c8dc448,0x3c7a537d,0xba354837,0x3d8a8136,0x3d23bd41,0x3d0fd899,0x3da92af6,0x3da516be,0x3d16f93d,0x3d8144ae,0x3d9be7ba,0x3d60a629,0x3d57af4b,0x3d4e4a32, -0x3d2f589b,0x3d33caa7,0x3d38016e,0x3d35988a,0x3da21d6b,0x3d8d16e5,0x3d10e714,0x3da139e7,0x3d8cf0c7,0x3cbba9ed,0x3d0cc7cf,0x3d0ec714,0x3d08469b,0x3d126851,0x3d15d802,0x3d11f12a,0x3d1712f9,0x3d1b0462,0x3d1e609b,0x3d32ce27,0x3d3d5b41,0x3d5fc838,0x3d45bbf0,0x3d3b9860,0x3d2b924f, -0x3d2b8aac,0x3d642b68,0x3d718582,0x3d44b597,0x3d1a74a2,0x3d420517,0x3d4d93e7,0x3d7c5bab,0x3d43d76a,0x3d37d677,0x3d8fe6ae,0x3d66c1b4,0x3d886737,0x3d4f32ad,0x3d7c6f65,0x3d6883ad,0x3d5f4423,0x3d7e97dc,0x3d4c2f28,0x3da14d16,0x3d67fe1c,0x3d1d21e0,0x3d471ffc,0x3d32c7d2,0x3d417ee1, -0x3d45617c,0x3d624047,0x3d7c1f38,0x3d8dab8a,0x3d938f0f,0x3da7e38d,0x3da5b526,0x3dbf21ca,0x3da21f0b,0x3da20ac7,0x3d9042bb,0x3d944715,0x3d957c0e,0x3d9be042,0x3d862c8b,0x3d384a1d,0x3d345001,0x3d24f93c,0x3d3ef72a,0x3ce5b8c9,0x3d6a3415,0x3d0a0ffd,0x3d863713,0x3d08f897,0x3d299eec, -0x3d69cb9d,0x3d238436,0x3d03c04b,0x3d442d47,0x3d32ac10,0x3d9158a2,0x3d176575,0x3c90f999,0x3d15d250,0x3cd8a79e,0x3d2487bd,0x3d31091e,0x3d4b4fd5,0x3d8073e4,0x3d95f962,0x3dae1e87,0x3dd4b20e,0x3dedb0cd,0x3e0fc95e,0x3dea5d90,0x3dd6dba0,0x3db81b93,0x3dbed74c,0x3dd1f1be,0x3d71c78c, -0x3c368dbc,0x3cd8e1d6,0x3ca68c4e,0x3bf72733,0x3bf638c0,0x3cbfe0b3,0x3d0ca094,0x3d1608c8,0x3ca05cbd,0x3c8e4900,0x3d07d070,0x3cb8c332,0x3ca60161,0x3bfdb650,0x3ce555b0,0x3ca63edd,0x3d678445,0x3d5d2feb,0x3c077692,0x3d25b6ab,0x3cea44f5,0x3d495f31,0x3d75a958,0x3d9ac766,0x3dd22f18, -0x3df94465,0x3e100ba5,0x3e2211dd,0x3e264554,0x3e337635,0x3e135e8c,0x3e12f65d,0x3dfc5ff4,0x3e065db3,0x3e0dc596,0x3df5d24f,0x3d4020fd,0x3ce6b360,0x3cbc4f6f,0x3c0822f9,0x3c09f7be,0x3c16407f,0x3cceee6f,0x3d1669a9,0x3c57dcbd,0x3ce8e33e,0x3caa034f,0x3cad1ebf,0x3b58c878,0xbb8e3880, -0x3cb00b59,0xbc29fb5a,0x3d9ac5fc,0x3ca95d23,0xbc9a7899,0x3bc892da,0xba9f21ba,0x3c6acc82,0x3d2c8f3c,0x3d159fc8,0x3d8df72f,0x3dd4fefb,0x3e0325ad,0x3e34069f,0x3e3ae325,0x3e5ed666,0x3e3925d1,0x3e1eff83,0x3e0fb16f,0x3e136f30,0x3e59d962,0x3e271e5d,0x3e70147f,0x3ddd99eb,0x3e08d6fa, -0x3dafb367,0x3da7807e,0x3d0ab434,0x3d12a7e0,0x3c84ceed,0x3c4c7efc,0x3d22163f,0x3d028f73,0x3d0655b2,0x3cca2d4e,0x3c548cb7,0x3d1a3dbb,0x3b9c8c89,0x3d558c99,0x3d3fd7fb,0x3db7062e,0x3e11c646,0x3e4d6028,0x3e80e6bd,0x3e789c98,0x3ecc1431,0x3ec7d626,0x3eba7f3b,0x3e789d38,0x3e8a574d, -0x3e967e13,0x3e895283,0x3e95af99,0x3e9f10fa,0x3ea63f81,0x3ea4abe8,0xbdb26cb4,0x3e3f6ee0,0x3e511a35,0x3d4b79f9,0x3d992547,0x3d215d0f,0x3cc7eae7,0x3c2e86c4,0x3c6e6291,0x3c9c48ff,0x3d008673,0x3d02873e,0x3d14c091,0x3cd6177a,0x3cda5892,0x3c40ab89,0x3d4f238c,0x3d326aab,0x3de5c757, -0x3d42ed59,0xbdb198b2,0xbda8fe50,0xbe1c9f1a,0xbdfe31c2,0xbde86009,0xbe1489f9,0xbe38124d,0xbe226a97,0xbdff81f0,0xbd3e20d7,0x3d94657b,0x3e635e05,0x3e003a39,0x3d072955,0xbe065950,0xbddabe50,0xbe4e5ef0,0xbcd28b72,0x3ddb1148,0x3d848fe3,0x3dcc8a75,0x3d59e8ee,0x3d59c737,0x3caebb83, -0x3d3b50bc,0x3d38b75a,0xba2beeca,0x3d351afe,0x3d1ce883,0x3cf5fb86,0x3d2be8f2,0x3d11b0cd,0x3d738ae0,0x3d38a1da,0x3d2a0085,0xbd316cc8,0xbdb3db6c,0xbdd3869b,0xbe33b2fb,0xbe6067f6,0xbe84a551,0xbe5a8ac7,0xbe80ec6d,0xbe6d5719,0xbe7e1b29,0xbe40c632,0xbe255487,0xbdd8337e,0xbdc68d13, -0xbd8f4a33,0xbc4672a4,0xbdd8da6e,0x3d8f83c9,0xbe205368,0xbd0d503d,0xbb86d87b,0x3cf4b76f,0x3d0efff7,0x3d23a8ac,0x3c4dab63,0x3d3ebb6a,0x3d384730,0xbbed4297,0x3d045557,0x3cd61753,0x3ca66028,0x3bb99157,0x3c302153,0x3c6fa168,0xbc9c2cc8,0xbc8e7290,0xbd4ed3f8,0xbdbbdc22,0xbdba1560, -0xbdf1e0ed,0xbe0562a5,0xbded9906,0xbd2b7119,0xbd3e46df,0x3c0af59f,0x3cac51c7,0xbd66e8f3,0xbdc459d0,0xbe36065d,0xbddee5ea,0xbcfdfd1a,0x3e588a90,0x3e0604ff,0x3e693586,0x3ddcde6a,0xbcec5716,0xbccbc4c0,0x3cd70855,0x3c9553f3,0x3be59c04,0x3cccb1f0,0x3ca73067,0x3ca5fc6a,0x3b9c816c, -0x3bfdd90d,0x3bb99a41,0x3b579813,0xbc87ba86,0xbcbcc96f,0xbd0796a1,0xbcadcd78,0xbcdc803a,0xbd66b9e5,0xbd985634,0xbd8e958c,0xbd4aac8f,0x3a84d5da,0x3d5ac9c3,0x3dae7ca6,0x3e08275c,0x3e355630,0x3e8cfd44,0x3e6757de,0x3e48912f,0x3dee37bf,0x3de22790,0x3d848d22,0x3dbcabb4,0x3e299620, -0x3dca8db6,0x3de315aa,0x3d8520ed,0x3d32572a,0x3ccabc11,0x3c9dcb12,0x3d561720,0x3d74440b,0x3d46f152,0x3cd3aea1,0x3aff1ca4,0xbba76f32,0xbb5b408a,0x3c72291b,0xba92861b,0xbcc6df22,0xbd03efcd,0xbd8bf9bf,0xbd66da18,0xbd4cd826,0xbc94ec66,0x3bb23157,0x3d1dc719,0x3d846dac,0x3db43635, -0x3d8d238c,0x3e2a9d9d,0x3e09b95d,0x3d15214c,0x3b75dace,0xbcbd346d,0xbcda9232,0xbd9c8d83,0xbcfc8f68,0x3d9bcf48,0x3deed5c6,0x3dc6762e,0x3df01d15,0x3d5e7923,0x3ba8dd90,0x3ca008ea,0xbb9e84c4,0x3bc67411,0x3c8198d2,0x3bf75f90,0x3c982d64,0xba872a90,0x3c41ce1a,0x3aa122a9,0xbb89675c, -0xbc04f1c0,0x3b3313e1,0x3c8e9128,0xbb9374c0,0xbd5d669b,0xbc897917,0xbcf379bb,0xbd293795,0xbc916067,0x3c64854e,0x3d279684,0x3d8bcb9e,0x3d8be04b,0x3d4c896c,0x3d588a4d,0x3b9e6448,0x3bde727f,0xbbdb7b58,0xbbcec5b5,0xbc1ae65d,0xbc06991b,0x3d8cbca9,0x3c83c4bb,0x3d01e911,0x3d43a142, -0x3cc41623,0x3d0ec929,0x3c1effb2,0x3c811e3f,0x3c41f72b,0x3c531ccb,0xbaa07e01,0x3c1e0812,0xbb0ce196,0xbb305c57,0x3b522a1e,0xbc0dac07,0xbc107c1c,0xba192732,0xbbc5d9ef,0xbc160b27,0xbc86f27c,0xbc8bdb5f,0xbcf39046,0xbd072c1e,0xbbd59675,0x3c4ecc9f,0x3ce08c3c,0x3c5c83d6,0x39a34cef, -0xbcaba7ba,0xbd0a182e,0xbcc31ce6,0xbca979a7,0xbb9b76d4,0x3c012c51,0x3c34a856,0x3ce8cef9,0xbbf0818c,0xbb8d25d9,0x3cd1f3a1,0x3c5c3b71,0x3cddb365,0x3cbe89de,0x3ca362b4,0x3b6e6a43,0x3c2544cf,0x3c002a3c,0x3cbb36dc,0x3c34bafa,0xbb82cc95,0x3c6194fe,0xbc35fb4c,0xbbefd80a,0xbc846139, -0xbca13cd0,0xbcb14e43,0xbc9c48c5,0xbd0988ea,0xbd08bcd4,0xbd425143,0xbd387064,0xbd379d8e,0xbd11bb08,0xbcba349c,0xbbf52235,0x3c756390,0x3ca3c9ec,0x3cc2a96e,0x3c9bae18,0x3cbf5c90,0x3cbfd009,0x3caff9a0,0x3c047c99,0xbba3d443,0xbb87fb7e,0x3d1d8d14,0x3aa7fe9a,0x3c898563,0x3c9c60ba, -0x3c46ee49,0x3c959776,0x3b1b26ad,0x3c9f7d37,0x3c79b75a,0x3c98e1dc,0x3c758fec,0x3c31c545,0x3c945ce2,0x3c949db5,0xbb8bfbc1,0xb9a6b941,0xbca5f497,0xbcb572f0,0xbc853462,0xbc642ff3,0xbbdb17f2,0xbb8bb212,0xbb3b861a,0xbb5f611f,0xbc4ab95e,0xbcbc5bff,0xbd07ec15,0xbd1ba4a5,0xbd233c79, -0xbd14ea7b,0xbd03fdcf,0xbd03aff6,0xbcc9a956,0xbc5dbf85,0xbbf698ce,0xbc2f1edb,0x3d03a51c,0x3d337f72,0x3c45a33c,0x3cea1b2f,0x3d3664ad,0x3ce1f060,0x3ce3b8d2,0x3ca23d6f,0x3c5bc144,0x3c443723,0x3c259492,0x3c18a1c7,0x3d284da8,0x3cd1e444,0xbb04f4b0,0x3d10a228,0x3cf76f1b,0xbbb9d008, -0xbb9e5bf0,0xbbc402af,0xbc0ed593,0xbc2d50b0,0xbc2cce54,0xbc123e60,0xbbeac981,0xbb4051c5,0x3aa1c5f4,0x3b8c000a,0x3addd1df,0x3a9d13d1,0x3a35b8e0,0xba2b3806,0xbadd60dc,0xbb8b1733,0xb8d98333,0x3d00b43e,0x3cb95cd5,0x3cd9e59a,0xbb2a284b,0x3b71d41b,0x3d35eff4,0x3ac508e8,0x3ba4ca7e, -0x3d0d1597,0x3d20c523,0x3d325af0,0x3d306e78,0x3d349a66,0x3d430a37,0x3d3e4a53,0x3b24d812,0xbb5f7b84,0x3d4e9f75,0x3c08906a,0xba86be71,0x3c99f4cb,0x3c7c09d6,0x3c4e0eb6,0x3c3bd636,0x3c3d8d26,0x3c2e919d,0x3c1372bf,0x3c338b3f,0x3c45e9e9,0x3c6628ca,0x3c73d684,0x3c9031b1,0x3cb5aa63, -0x3ca94695,0x3caba332,0x3cd3e6f9,0x3cb14d74,0x3d38c91f,0x3cb50a3a,0x3c9f84b2,0x3cd6d612,0x3cc6b8cb,0x3c8cc88e,0x3c3ffc0c,0x3ccd6956,0x3ce97b5d,0x3c9976e4,0x3ca7e2a1,0x3c256144,0x3cad20e2,0x3cd94281,0x3cd0d6d1,0x3c65f625,0x3c8be8e6,0x3c9e428d,0x3c3850d5,0xba53aa0f,0x3c918489, -0x3c410eda,0x3c0c2b99,0x3c0ff361,0x3c033784,0x3b6531dc,0x3bc512ea,0x3c547aa1,0x3cdcd23a,0x3d0a9303,0x3d3eb2a4,0x3d7bc03b,0x3d6248cd,0x3d740ad3,0x3d9e02ef,0x3d4c6451,0x3d7c16be,0x3d230ed7,0x3c9e33ba,0x3cb5743a,0x3c49d3f4,0x3c8df3ad,0x3c60a848,0x3c6ed6d7,0x3ca4a527,0x3cead280, -0xbba1cf10,0x3c93f4fe,0x3cb2733e,0x3c454e5f,0x3c33f57d,0x3bdcdf6c,0x3b9f8a7e,0x3c40332d,0x3b6a8971,0xbb08ada0,0xb9c9da70,0xbc489f9f,0xbca43c5f,0xbca68da7,0xbcbe1813,0xbd01f01c,0xbca16dbb,0xbc3ce092,0x3c46834e,0x3c9b5b2d,0x3d1ba2db,0x3d80f887,0x3d5af96e,0x3d585abd,0x3dbbced3, -0x3d796f33,0x3db9523c,0x3d574cad,0x3cd6e572,0x3cc4bc1f,0x3cb4e495,0x3c4b7961,0x3c38fb42,0x3ad5118a,0x3cd82241,0x3cf14139,0x3c72820d,0x3ccb4486,0x3c2a4d91,0x3cf66b7b,0x3a851397,0x3bb365ad,0x3ba93498,0x3c13f699,0xbb688546,0xbc785ddc,0xbbc4c89f,0xbc4e1edd,0xbcefcc3b,0xbce2dbbb, -0xbce5a00a,0xbd24a960,0xbccea232,0xbb66cfe9,0x3d1feaa7,0x3d6e0575,0x3db2d6e6,0x3e01dbc9,0x3de7e9bb,0x3de9dbbc,0x3e374f1e,0x3dd87640,0x3dab557c,0x3da4c196,0x3d65e696,0x3d441aa7,0x3cda4003,0x3cf94eb1,0x3cf31fa4,0x3c8b71e6,0x3cf22f47,0x3cee8e03,0x3ca3a7dc,0x3cd811a3,0x3cb7e183, -0x3cb1a771,0x3bc8c06f,0xbb388d8d,0x3b7dfa19,0x3c9f3315,0xbafcf105,0xbcbfeb71,0xbcd9ed19,0xbd523315,0xbd85385c,0xbd8a8e3f,0xbd8a43a0,0xbda24a91,0xbd5a3426,0xbcbf5cb2,0x3caed8eb,0x3d0af4fe,0x3d8378c0,0x3db778d1,0x3da6f7da,0x3d8ec400,0x3e24cd77,0x3dd39966,0xbbe69797,0xbd688a62, -0x3d4983b1,0x3d4e5070,0x3d002dee,0x3cc57a72,0xbbaf7d23,0x3d218edd,0x3c9c2528,0x3c94af78,0x3c1f398f,0x3cc78d40,0x3cd550d6,0x3cd7ffb1,0x3c7402f7,0x3c24f812,0x3bdfb9d2,0x3c539186,0x3b901572,0xbc15fb37,0xbd056ba0,0xbd7393ac,0xbda2506d,0xbdfcfddb,0xbe294cfc,0xbe2e3825,0xbe268328, -0xbe225610,0xbe19fdb9,0xbe12bdb0,0xbe155666,0xbe20918d,0xbdeac101,0xbdee14f5,0xbdaaea42,0xbd7dc49d,0xbe61baf7,0xbd99e9e5,0x3da9c313,0xbc12790b,0x3d0b3428,0x38d3d4c6,0x3d22a1dd,0x3cb78c6b,0x3d01f15e,0x3ce994d8,0x3cbf6f17,0x3d01e0a8,0x3cc7f2e4,0x3c97071e,0x3bd96043,0x3b192feb, -0xb96b259a,0x3c3456eb,0xbb65f232,0xbd88819d,0xbdc93bf5,0xbe1fa957,0xbe4c9b11,0xbe8c1d5b,0xbe9bf2ef,0xbea30733,0xbe8f449d,0xbe73de9c,0xbe359787,0xbe2ba33d,0xbe3ceb7e,0xbe751bc7,0xbe77837c,0xbe550a6a,0xbe26586c,0xbe455f52,0xbd58ace9,0xbde56d92,0xbe199bbc,0xbd3bbd7d,0xbd0257c1, -0x3aa8621f,0x3c900ee1,0x3be7166c,0x3d2733a7,0x3d327732,0x3b7346eb,0x3d395e13,0x3d19b36e,0x3d1e0a6a,0x3c2390f8,0x3a474611,0xbb400923,0xbc92becd,0xbd529a19,0xbd90adae,0xbdde19e1,0xbe112725,0xbe02d989,0xbe174496,0xbdf4d838,0xbe10ebd0,0xbd129d47,0xbbd5e97c,0x3dd8c5d2,0x3d7fec7d, -0x3d09fd59,0xbe1c088d,0xbdfc400f,0xbdec148e,0xbd93b9a3,0xbcf69fe2,0xbde39140,0x3c50fc19,0xbcff105b,0xbd03bccf,0xbc46b42b,0xbbb9b46f,0x3b1caeaa,0x3bd2c489,0x3ccc52e1,0x3d104d89,0xbc57266c,0x3d039bea,0x3cd87c93,0x3cddc0b3,0x3b9c5aea,0xbca71e8d,0xbcef6170,0xbce487b0,0xbd5f383e, -0xbd9f2bcf,0xbd3e23f4,0xbd455dd7,0xbd1f893b,0xbd100824,0xbce2c290,0xbd6975ab,0x3cbe22fc,0x3c6e72dd,0x3d4b1989,0x3cc6029c,0xbcd9badf,0xbde104a4,0xbe00903b,0xbe16796e,0xbe3585b8,0xbe42b073,0xbeac104c,0xbd4ce739,0x3ccdff16,0x3ce38cfa,0x3bef3549,0xbc00b4bd,0x3c9d99b5,0x3d016608, -0x3cac11d6,0x3c57fcaa,0xbc3d587a,0xbb482e84,0x3a360bd5,0x3a347cf4,0xbc9c6304,0xbd218d05,0xbd5e9537,0xbd4d84bf,0xbd669298,0xbd035c0e,0xbc6c3534,0xbc183a1a,0xbc1a2daa,0xbd0f8cee,0xbd639d6f,0xbdc4c1e7,0xbdb8dc8e,0xbe0a865c,0xbe8a3cb7,0xbe7774de,0xbe6dc0e1,0xbe238a45,0xbe4bf657, -0xbe521bf8,0xbe5fa217,0xbeae5e24,0xbe6bfcf1,0xbe1ad7a2,0x3d387cfe,0xbcb5e205,0x3bff5e3a,0x3b87d07a,0xbc04c068,0xbc94dfc3,0x3b68a388,0x3b2c1680,0xbc61d9b7,0xbc3b47d0,0x3a68ea13,0x3c2a198c,0x3bad5f27,0xb96e9a6e,0xbb8f4084,0xbd067371,0xbd43a6cb,0xbd459a8f,0xbd39001e,0xbd613fe2, -0xbd093f76,0xbd35c6f1,0xbd68f5d6,0xbd9f9a21,0xbe15d0fb,0xbe305c76,0xbe449d05,0xbe2a0f6f,0xbe151b9c,0xbe2deef8,0xbe045b08,0xbe0a318a,0xbe15ed46,0xbe33092d,0xbde829f3,0xbe03f2d8,0xbca0d67d,0xbc95f4c9,0xbcab8990,0xbb7c57c8,0xba259255,0x3c11d659,0x3b5bd70e,0xbbe6e50d,0x3bb00993, -0x3b030768,0x3b9275ad,0xba27ac22,0xbc1c8b5f,0xbc83575d,0xbcd1ca65,0xbb85b1a1,0xbc0e2868,0xbb3cec9e,0x3c117f10,0xbc66ffb6,0xbd6969f5,0xbdfef1f3,0xbe1710e0,0xbdff0686,0xbdacae86,0xbd5e6b6d,0xbd81571f,0xbd3dcce2,0xbd573430,0xbcf07eb0,0xbd466bc2,0xbd8096f9,0xbd481129,0xbda86fb8, -0xbd0a45a7,0x3b83b0ee,0xbd0b13b4,0xbc9e2909,0xbccee681,0xbc13c972,0xbbe2bc8b,0x3b0611f7,0xbb826b30,0x3bad71eb,0xbba2a201,0x3c7c41ea,0x3c20fbbe,0x3c9000d9,0x3b9830bd,0x3bf0002e,0x3b8662ed,0xb8e866d5,0x3a8d73d1,0xbc4a2373,0x3b31da6c,0xbcaed50b,0xbd1169ce,0xbd7a6f4e,0xbd8cceb5, -0xbd86d7ae,0xbd614745,0xbd24433d,0xbce698da,0xbcc48334,0xbd02386e,0xbd1cf092,0xbd1f66c5,0xbd0d8d5d,0xbd10f0a4,0xbc8095a0,0xbc67bded,0xbcb8ec9c,0xbcce0a6a,0xbc78d049,0xbc7f1663,0xbc1d3691,0xbc2c148e,0xbb9dbc03,0xbc3b9cf5,0xbc31efa9,0xbcfc6860,0xbc87d9a7,0xbaaf343f,0xb9c434ba, -0x3bf90b19,0x3bfe71cc,0x3b47fffc,0x3b4e032a,0xbccdf1a6,0xbac35f3e,0x3c2f1f48,0xbc08da5b,0xbb8d5e15,0xbb3bfb1a,0xbbadd634,0xbcbde0c7,0xbd03f1e3,0xbd43622e,0xbd80280b,0xbd8b978b,0xbd97c1ca,0xbd9c3024,0xbd880e42,0xbd75d4ae,0xbd62158a,0xbd2fff59,0xbd4d01ca,0xbd424ebb,0xbd0d46f1, -0xbd2a2f76,0xbd58a36a,0xbd355bfc,0xbd4834a0,0xbca6286e,0xbcceafa7,0xbce995f4,0xbcb6a39a,0xbce33ee4,0xbd0a26a0,0xbd05e850,0xbd3866df,0xbd1aa512,0xbce37d73,0xbcdce5cb,0xbcc5bc08,0x3b56f68a,0xbb94b0e5,0xbc4ac064,0xbcb2c6aa,0xbd0e6695,0xbd29065d,0xbd2b70dd,0xbd23d0f3,0xbd14b9c5, -0xbd0f2c1d,0xbd2de0f8,0xbd30161d,0xbd685f02,0xbd629e57,0xbd3ba2ad,0xbd3679b9,0xbd49b1a1,0xbcf3e634,0xbd08f2b7,0xbd586147,0xbcf59814,0x3c8da5db,0xbd49ebc1,0xbd2246a9,0x3b2b43e2,0x3b8b01c0,0x3bd04b02,0x3c0b6f6c,0x3c2a6826,0x3c82b9ff,0x3c9333b8,0xbd1cce56,0xbd3ee376,0x3c6b5f96, -0xbd00038f,0xbd25883c,0xbc991425,0xbcd47541,0xbcdae7b9,0xbcd496e9,0xbcc9b9a1,0xbcd47f38,0xbcf6457e,0xbd0c69a3,0xbd1d6a83,0xbd322217,0xbd3dc265,0xbd3723fc,0xbd419f89,0xbd317c7f,0xbd23449d,0xbd219f5c,0xbd139520,0xbd57b2fb,0x3d1ce99a,0x3ced70d8,0x3cc1a19e,0x3d809944,0x3d4fe30a, -0x3c592b46,0x3d4e2ef7,0x3d3fa77c,0x3cd49aa1,0x3cc6214c,0x3c9aa175,0x3c628929,0x3c5cd723,0x3c45f980,0x3c85e1d1,0x3d42f85c,0x3d5264be,0x3c132971,0x3d27954d,0x3d426df4,0x3c44190f,0x3c9883da,0x3ca4ac58,0x3c94e695,0x3c919bbc,0x3c93a965,0x3ca432cb,0x3ca0db2f,0x3ca7c8a9,0x3ca66a82, -0x3cb253b3,0x3ca049d0,0x3ca4de66,0x3cb89a2d,0x3cd6efa2,0x3d034fbe,0x3cfd8a5d,0x3d814fa9,0x3d9dc3aa,0x3d652243,0x3d2caec2,0x3d23b5d6,0x3d369c51,0x3d43ba43,0x3cd039a4,0x3cbafdd9,0x3d3f349b,0x3d0cb0b5,0x3d45c43b,0x3d252b63,0x3d1d018d,0x3cea9ca8,0x3d151256,0x3d1032ea,0x3d061046, -0x3d3692e2,0x3d0484ba,0x3ca797f6,0x3cd0dd55,0x3c902982,0x3c9346d1,0x3c8da2ff,0x3caaf809,0x3c875a5e,0x3c3f7d1b,0x3b05cecd,0xba48e773,0xbc0be3c9,0x3b50cbc1,0x3c9c1e53,0x3d1da9ee,0x3d8a0ca9,0x3d925d04,0x3d98bd62,0x3d9fa600,0x3d9e9a87,0x3d891929,0x3d49ace0,0x3d4c3613,0x3d44b286, -0x3cb74224,0x3d2eea78,0x3ceb7919,0x3d581063,0x3d109a96,0x3cdf8a28,0x3d44a657,0x3d02b9a7,0x3cdfc024,0x3cd9c0e5,0x3cbf899f,0x3cde327a,0x3c5391ef,0x3c5baa96,0x3ca3d00c,0x3c159757,0x3bd651bf,0x3b5fe4d8,0x3c64e2ce,0x3bc60e0f,0x3b89479c,0x394b689e,0xbbc352b7,0xbb40b807,0x3b2f0292, -0x3d02362e,0x3d5c5351,0x3db5a92d,0x3daff054,0x3de14fbf,0x3dfae66e,0x3db367d9,0x3d882311,0x3d6d8b40,0x3d377244,0x3cdf8fd0,0x3c934860,0x3caf6f29,0x3cdebb04,0x3c7ef99a,0x3cabb43b,0x3d17a77f,0x3cc8dc63,0x3cb047f7,0x3c243313,0x3c0b090b,0x3caa0fa1,0x3cbc07ab,0x3c0e68d4,0x3c399fb0, -0x3c64e5cf,0xbaade6c1,0xbbbb4148,0xbbd63635,0x3a5355da,0xbc8d0823,0xbcf46dee,0xbd525903,0xbd8ddbfb,0xbd89d576,0xbd2cb7b4,0x3c119d0e,0x3d652ca1,0x3e07a407,0x3dfdf6f8,0x3da9118e,0x3d8d46a1,0x3d9e4ffe,0x3d6cc51d,0x3d35eef7,0x3d596678,0x3d0b46da,0x3b226303,0x3cc62046,0x3d07e729, -0x3c2d1b4c,0x3ca1eb7d,0x3c86d240,0x3c920ad3,0x38bb7835,0xbb23af07,0x3bcd5cea,0xbc9af0d6,0x3cab216b,0xbbc61fe9,0x3bacbd9b,0x3c86e735,0xba873805,0xbc390bbc,0xbcaea999,0x3b2ed5c4,0xbbd96303,0xbca8394e,0xbce85982,0xbd547573,0xbd0f178f,0xbbd3b5fc,0x3d303c45,0x3dbe578e,0x3dfea0a1, -0x3de22e08,0xbd2480c2,0x3d300ca2,0x3dd23aee,0x3dce9e74,0x3cd32046,0x3c00a647,0x3c55a564,0x3c58b78c,0x3d02eec5,0x3d24fb39,0x3c970fd4,0x3cef3f40,0x3c8f2b20,0x3d0cef70,0x3c7928a3,0xbb6a0ac2,0x3c8e4f39,0xbc57e30e,0x3c5196e6,0xbc77b55f,0xbdb584e9,0xbde8b394,0xbe35c866,0xbdf98273, -0xbde4b4d5,0xbe54136a,0xbe4d86be,0xbe1cfa75,0xbd3147b7,0xbcd7fe48,0xbcea3d7c,0x3b953837,0x3b8eb0a8,0x3c0eec8d,0x3a9c05ff,0xbd43ebcd,0x3d906a02,0xbda1b7b3,0xbdc2fbad,0xbc091a10,0x39c5f13b,0x3cf86ed7,0x3cfaf231,0x3d6cead5,0x3d4399b7,0x3d2eeb25,0x3d05a66f,0x3cfea9cf,0x3cc065b6, -0x3c9b56ed,0x3c00e15f,0xbb9ee3e3,0xbbcc0482,0xbc95309c,0xbd277a80,0xbcfec0c2,0xbcaed2e9,0xbc68fcea,0x3c496675,0xbd84c27b,0xbd9ff040,0xbd1bb538,0x3caa4396,0x3d4b2493,0x3d84c03b,0x3e197ac8,0x3e35b3bb,0x3e10385b,0x3e723728,0x3e5c3000,0x3e38e8ae,0x3de91232,0x3d934682,0x3ce75d91, -0xbc0f5af0,0xbc8e7b6a,0xbcd8221a,0xbc0d63b5,0x3b7cd342,0x3cb2415e,0x3d02b55b,0x3d36f006,0x3c21a516,0x3d24e1b1,0x3d0f3357,0x3d0d5e97,0x3c5b1dc6,0xba030f2e,0xbc9784ca,0xbcab14f5,0xbc9e6f20,0x3b341be1,0x3cd23706,0x3d3db653,0x3daf431d,0x3dd061fd,0x3df9dca0,0x3e058984,0x3e1e960a, -0x3e285ff7,0x3db4c3a2,0x3e0263e4,0x3e232111,0x3e50c3b4,0x3eb2aa63,0x3ea531ed,0x3e372de7,0x3dba6813,0x3d99e5ed,0x3d407e00,0xbc85c862,0x3cf3f95e,0xbbf1ac13,0xbb8b9a2e,0x3b911a90,0x3cb77d1e,0x3c8235da,0x3cb36759,0xbbaa4532,0x3ccf164d,0x3cde9a89,0x3d24e0f2,0x3c8881cc,0x3c73e581, -0x3bd5299f,0x3b856396,0xbc775689,0x3be5d842,0x3d351b37,0x3d49dd97,0x3d9162b7,0x3df443e2,0x3e153902,0x3e19d9cb,0x3df9bf1a,0x3db6c3f2,0x3c3ef6f7,0x3cf5274c,0x3d807526,0x3e04e14d,0x3e984a28,0x3eab0705,0x3e7c2408,0x3e2707b1,0x3e5a20a1,0xbc00b9c2,0xbce1069e,0xb9e1d84f,0xbc8083c1, -0x3cd850cd,0x3c6a7713,0x3d12eba3,0x3cac6b50,0x3c789b37,0xbba939c1,0x3c318448,0x3c68a08d,0x3d107998,0x3cb55322,0x3bc8ee39,0x3b93b271,0x3c019b00,0xbc4f3e50,0x3ce4ed64,0x3d33e27d,0x3d4f0735,0x3d85d1a1,0x3d3fd396,0x3d3205b9,0x3d874d89,0x3d2cd110,0x3d639c8d,0x3e04bd20,0x3dcaf36b, -0x3e01091e,0x3dab7ef6,0x3e7ef395,0x3ea578aa,0x3ec81b74,0x3e8ef88a,0x3e832aab,0x3de2cc18,0xbddf1d2d,0x3d3de407,0xbc4cad9d,0x3c278623,0x3c47819f,0x3cfa5dcf,0x3c5ff304,0x3c8b12dc,0xbbdffa3f,0x3cabef95,0x3cbdd670,0x3cf80a73,0x3c2e64d3,0x3c4120de,0x3bc5e686,0x3d06b2a8,0x3d1e9c87, -0x3cb49e8f,0x3d791ec8,0x3c9c627a,0xbc4997b6,0xbc0b74a3,0x3c812e63,0x3d822751,0x3d6d4a43,0x3dd762b3,0x3e5ca452,0x3e250fc6,0x3e168979,0x3e2788f6,0x3e7dbeed,0x3e8851cf,0x3e94de00,0x3e508d9d,0x3df5e64a,0x3da23006,0xbcbd1da6,0xb800a794,0x3bdc0569,0x3c16dce8,0x3ca47b74,0x3c4224e3, -0x3ccc76fd,0x3c7dffdc,0x3ca7eeef,0x3c30c8cb,0x3c40eaac,0x3c98698f,0x3c9f8327,0x3ce85c4f,0x3d0791c3,0x3d141f99,0xba80c9fa,0x3d42d203,0x3d6d95a2,0x3d71d93d,0x3d934ea5,0x3d795880,0x3d4622dd,0x3c8a0511,0xbc52f2a6,0xbd15b187,0xbd143621,0xbcd5bdcd,0x3bc85c0a,0x3d220ee9,0x3dbf5f05, -0x3e10b0b1,0x3e2659ea,0x3e085b05,0x3dbf6f3c,0x3b8c388c,0x3d2849f8,0x3ccd90e8,0x3cc9caa8,0x3d2a3466,0x3ccd9a3a,0x3cce1bc5,0x3ca56a08,0x3ccdd755,0x3c7df3e8,0x3c81b261,0x3c4afee8,0x3c8f533f,0x3cc7f987,0x3c9ee6dd,0x3c1024d7,0x3cd958a6,0x3d183397,0x3cceb121,0x3d5d750e,0x3d23607d, -0x3d05a9db,0x3cbfd0a4,0x3c357331,0xbc332fc0,0xbb448dbc,0xbb94fb08,0xbbba83cc,0x3bf716e5,0x3c94cf05,0x3d070bcd,0x3d69bffb,0x3d899602,0x3dbb4af3,0x3d6fd7f4,0x3d5b9aed,0x3d9e3ebb,0x3cb76107,0x3d2555ff,0x3c213d79,0x3bad0927,0x3c7cf218,0x3d147f49,0x3ce6c191,0x3d03429a,0x3cb81325, -0x3d594b2d,0x3cb391bc,0x3d00f4de,0x3bca5cb9,0x3cd44d91,0x3cbdd91b,0x3ce0c37b,0x3cbf8381,0x3d6bb9d6,0x3d11fd1f,0x3d00f2aa,0x3ccf4d6a,0x3c70a84c,0x3bc1a88a,0xba9936d8,0x3c66b4a1,0x3ca0b4a9,0x3cd868a1,0x3d027a94,0x3d159b63,0x3d102402,0x3d2253ab,0x3d4b5341,0x3d8d7fa2,0x3d813f43, -0x3d623cb0,0x3d882e96,0xbd1ac49e,0x3d2592f5,0x3d3a6ade,0x3d0dde04,0x3d804630,0xba67276a,0x3d1fdd78,0x3c39cedb,0x3bb3c93a,0xba0ec05d,0x3c8c29a6,0x3bfb4f9b,0x3cd48ec7,0x3ca337e0,0xba9a38bf,0x3d028f58,0xbbf6589c,0x3c7bdead,0x3c0fbb2e,0x3c4a414a,0x3c063da0,0x3c0fef27,0x3c204be3, -0x3c0c6069,0x3c30e7e5,0x3c8af6bf,0x3ccca6a7,0x3d08c15a,0x3d2bff9d,0x3d675d79,0x3d71f60c,0x3d5a13b2,0x3d4a0f98,0x3d653c73,0x3d3e7146,0x3d82a996,0x3d1b669d,0xbc9ea1f4,0xbd8ea3a7,0x3d2f85d2,0x3b37f201,0xbd7d0854,0xbd9304d5,0xbd8363a8,0xbd72283b,0xbd80c535,0xbd956028,0xbd9a1963, -0x3ba12b8c,0x3d321a0a,0xbd718411,0xbba3417e,0x3d0b8f3a,0x3d30dcc5,0x3d23d774,0x3d1d915a,0x3d19cd46,0x3d118a48,0x3d084a8b,0x3d03c07b,0x3d11d2fd,0x3d22d6df,0x3d2c2391,0x3d368dbf,0x3d389d87,0x3d3df414,0x3d39660b,0x3d3eb03c,0x3d497c28,0x3d4ba3ae,0x3d7f07af,0xbde58c37,0xbda8189f, -0xbde720d2,0xbdab0c9f,0xb9f3b4b6,0x3d8099ea,0xbd9f2c7e,0xbc9665c7,0x3d720939,0x3d8aebed,0x3d956d4e,0x3d806985,0x3d88eb5c,0x3dae7eaf,0x3d881926,0xbc879ac9,0xbd87b698,0x3d923331,0xbb892cc9,0xbd741025,0xbdb7c718,0xbd9fa9e0,0xbda8fc06,0xbda44f88,0xbdad6562,0xbdaf54f1,0xbdab83d8, -0xbda7c66e,0xbda87ac1,0xbda753a6,0xbdafddd5,0xbdad6cdb,0xbdb83335,0xbdb9c832,0xbdba5040,0xbdb61f73,0xbdb7572a,0xbe00c05c,0xbdf3bd5b,0x3da384c9,0xbd493882,0x3c35f1a6,0xbd33b9a7,0xbd2b04c2,0xbca7857b,0xbd41e248,0xbd016716,0xbca190bf,0xbcf18b6e,0xbd3e3cf1,0xbc8f5a1a,0x3d05e075, -0xbd56dbb7,0xbcb85495,0xbd363c9e,0xbc9a1ed4,0xbdcd7183,0xbdc0027b,0xbdcb630b,0xbdcc43d8,0xbdcc597e,0xbdc9a658,0xbde070d2,0xbddc3e27,0xbddd5801,0xbdd997a1,0xbdf2a550,0xbdfa50ec,0xbe1784bb,0xbe222109,0xbe271a67,0xbe1c7e67,0xbe0d5ad6,0xbe2d9fa5,0xbdf0310a,0xbbc3c0f7,0xbda23053, -0xbc5175fc,0xbd0c0de6,0xbb2c6079,0xbd4b4f37,0xba93e564,0xbd3cf781,0xbc19bd51,0xbd8c178e,0x3a1a6ce3,0xbd071880,0xbc8e4424,0xbd1f5f54,0xbd457999,0xbcdbecd0,0xbd4bdc80,0xbd8f98f8,0xbdd968c2,0xbdccf342,0xbdd56343,0xbde5bb4b,0xbdf3d97c,0xbdfb98e2,0xbde9c12c,0xbdea66da,0xbe00bd05, -0xbe0610d5,0xbe1c489f,0xbe3725c1,0xbe44df57,0xbe3f9d77,0xbe3438eb,0xbe2fc9e6,0xbe644828,0xbdce89db,0x3d8e6378,0xbc61d418,0xbbd3d839,0x3b752101,0x3c3ef357,0xbd1c7890,0xbb9d03f7,0xbb195441,0x3ae263ed,0xbb48a92e,0x3b599456,0xbc12be1f,0xba326d34,0xbca2b183,0xbd0bbd29,0xbd10b427, -0xbd1f7601,0xbd59029a,0xbdd1c3b8,0xbdc02556,0xbddbbc03,0xbdf4fd1d,0xbe03651c,0xbe0f0b38,0xbe085052,0xbe08c89c,0xbe107982,0xbe24d8e3,0xbe476f8f,0xbe8344a1,0xbe91e146,0xbe8f6035,0xbe850605,0xbe5c0a6f,0xbe810556,0xbe2c3b15,0x3b3907c4,0xbd481470,0xbcde322f,0xbcc0fa42,0xbbe344e0, -0xbc3f082f,0x3caddaca,0x3c997c03,0xbb005f10,0x3c9541ba,0x3c3f1729,0x3c32d4a5,0xbc13682b,0xbc8d812d,0xbcc647b2,0xbd404d2a,0xbce433a1,0xbd9df264,0xbdc4d9ab,0xbde35806,0xbdd5b6b5,0xbdfa09cf,0xbe1a5fa6,0xbe1dfa59,0xbe1ac00f,0xbe1521de,0xbe2d1107,0xbe35c668,0xbe65f314,0xbe85c121, -0xbe9ccc85,0xbe908d2c,0xbe846478,0xbe8607d1,0xbcef1940,0xbda1fed3,0xbdb862cc,0x3b49cd52,0xbc73f60c,0x3cfc8ac3,0x3b027b5e,0x3b2ca3a2,0xbbefff06,0x3c378581,0x3cc9b4fc,0x3c5c7da0,0x3bc9f013,0x3cd325f5,0xbb5d2884,0xbcae51e7,0xbca5ae55,0xbd2f3415,0xbd9571aa,0xbdea8079,0xbdc6811b, -0xbdb41e9b,0xbe0a7697,0xbe41b614,0xbe25af79,0xbe27a665,0xbe31db9f,0xbe48a202,0xbe46353b,0xbe15a7b8,0xbd90c2a4,0x3c3f8660,0x3d18a29e,0x3d53bfe3,0x3bc4db73,0xbb7f8471,0x3d6e257f,0x3d5dbafe,0xbcfcd327,0xbcd361bf,0xbc73695b,0xbcaedac5,0x3a2802a8,0x3ce533d8,0x3d1b84d4,0x3d2586e9, -0x3c7793ed,0x3c920dd3,0x3c8ecf4f,0x3cc305e4,0xbbd4de76,0xbcef5473,0xbd37c7d1,0xbd92a675,0xbd6f3121,0xbd9bf476,0xbde66fc8,0xbdc0d925,0xbd85f2d6,0xbd54c41e,0xbcc4fa77,0xbcb25443,0xbb3424ed,0xbc5f1953,0x3babe2b2,0xbd3a9a53,0xbcdfd269,0x3d83ca92,0x3cd9dd5d,0x3d2929cb,0x3dc2ba3d, -0x3d1a9ca1,0x3c8cec12,0x3c007ea3,0x3d1fb7cb,0x3c9fab86,0x3bbedc08,0x3af03f35,0x3b84764e,0x3c8f79db,0x3cabd13c,0x3cdfed7e,0x3b0ecf90,0x3c45451d,0x3c3b81f3,0x3d1159a1,0xbc515ed2,0xbc83d5bc,0xbcb609de,0xbce5cc6a,0xbc9569c0,0xbd1ab745,0xbcb002c5,0xbc9ed430,0xbcea4c4b,0xbd4a6ca2, -0xbd7784c2,0xbd8e02db,0xbdaf1a03,0xbd9e7e78,0xbd99b3a7,0xbdd5b433,0xbe147a3f,0xbe1e0120,0xbe46b5e0,0xbe2e64cd,0xbdc32e39,0xbca8273c,0x3cdc8a9e,0x3ce59865,0x3d309469,0x3c59392b,0x3cf2bb38,0x3b67881b,0x3c30aaed,0x3cb3b4a6,0x3c2dc921,0x3c36af28,0xbc08f6a2,0x3b1d337e,0x3c239bc9, -0x3d388e5a,0x3c0bccbd,0xbb37c77b,0x3c12ec36,0x3c7c39b6,0x3ca80501,0x3cb5bf3b,0x3c456e7b,0x3c1450f7,0xbc6f7949,0xbd3b5356,0xbd84f54e,0xbd69c6dd,0xbdd7cc12,0xbdd8c9a3,0xbd640799,0xbdd08120,0xbdf3ff1e,0xbe16ffc5,0xbe4ef2d7,0xbe6d8309,0xbe8b3b4e,0xbd6778fc,0xbd816e62,0x3dba5a18, -0x3cee300a,0x3bd14d7d,0x3cbb7a1d,0xbbab0206,0x3bcfe69c,0x3cff994b,0x3c062a10,0x3b207618,0xbbaedb99,0xbb46e2aa,0x3c2c349e,0x3d2a8624,0x3c9a64e0,0x3cd70c61,0x3d4a7055,0x3cb061e6,0x3cbf2a0d,0x3ad27271,0xbce69379,0xbd635b7a,0xbd517205,0xbd3954e0,0xbcefb75d,0xbb647f8d,0xbd1267ce, -0xbd16e0ad,0xbcba82bc,0xbcc66540,0xbcc3f6af,0x3d5401f9,0xbd8d95f9,0xbe175103,0xbeb012a7,0xbe25f440,0xbe7a1284,0x3c2b6069,0x3e1e4915,0xba2fd908,0x3d1a9e2f,0x3cb95e79,0x3cdee307,0x3b4f4b5d,0x3c1b8b98,0x3bb9f3c8,0x3b3dfde0,0x3ce66f33,0x3ce032ee,0x3c9334aa,0x3ca92a3f,0x3c08c078, -0x3c848e39,0x3bef805d,0x3ca10044,0x3d3d43c8,0x3cc9f55a,0x3d7cdd02,0x3d2c8636,0x3bf36a9f,0xbd11154b,0xbdd60a2d,0xbda4a2e1,0xbdd7e7a3,0xbe380758,0xbe310c25,0xbe19ffec,0xbdebff54,0xbe1adaa9,0xbe220fef,0xbe58ca4c,0xbe54e56e,0xbdf087e8,0xbd8d0ff1,0x3cd8c4f5,0x3bf365bb,0x3c3e4993, -0x3cd06847,0x3ca9f9b4,0x3c1eb3a4,0x3bce135e,0x3c30ac41,0x3b8bc100,0xbb500cec,0xbb07938e,0x3c0139c8,0x3c40e5c6,0x3ca62cd2,0x3c9e1d7f,0x3c9de1b0,0x3d536503,0x3bfd5385,0xbc5e8e5a,0xbc5c2a5c,0xbc8f79d7,0xbce2e696,0xbd133ea5,0xbd95262c,0xbd64b0ad,0xbd5f6a79,0xbd1cf06b,0xbd217e32, -0xbd19db12,0xbd6b6110,0xbd3aabae,0xbd61d623,0xbdb0da39,0xbdcd946d,0xbdd4c4bf,0x3c92ff8c,0xbc412d69,0xbc259574,0xbb003dcd,0xbcd61da1,0x3b0bf5af,0xbb308ca7,0x3c263823,0x3be68c09,0x3cd84285,0x3c31c591,0x3c70ddce,0x3b7fe14a,0x3bf53a14,0x3c278444,0x3c8c6ade,0x3c8bc29c,0x3c5e1304, -0x3d01aa4c,0xbbe1af8d,0x3c6b3c8a,0x3c939e46,0x3b8f4264,0xbc03458a,0xbcb4c7a4,0xbcea5c6a,0xbd1c3050,0xbd4b6b72,0xbd5e727c,0xbd4d2f43,0xbd70c24d,0xbd564eb2,0xbd295d8f,0xbd51f2a3,0xbd14c0d2,0xbcd04b2a,0xbd372c81,0x3d138291,0xbb950924,0x3cb32d06,0x3ce02239,0x3c6dfb32,0xbbb7cad5, -0x3c24652f,0x3c2b22a0,0x3d0ef429,0xbae4a98f,0x3c93ac25,0x3b74aebf,0x3ca5584f,0x3a4e1336,0x38d3120e,0x3b619936,0x3cdb1e00,0xbbd57dc1,0xbb6d8a22,0x3c1a0bc4,0x3c3b52d2,0x3c2658a4,0x3c1f81a3,0x3c4b847e,0xbaa27174,0xbbc24496,0xbc3d488a,0xbc63ca20,0xbc8d9a5b,0xbca53db3,0xbcb90454, -0xbce8e2dc,0xbd10bff8,0xbcc6eb1e,0x3b3a093c,0x3a9245e4,0x3daec75d,0x3c691a10,0x3cae7919,0x3d004b32,0x3c042a44,0x3d51ffe3,0x3c3d9314,0x3d12c8ff,0x3d0bd916,0x3d1f7eeb,0x3cc11dac,0x3d043080,0x3cb3a6ce,0x3cc454e2,0x3d162564,0x3c08d021,0x3cf679a0,0x3bcfe677,0x3c84f70a,0x3c32e142, -0x3c5b2538,0x3c80c6e8,0x3c832bb4,0x3c7de585,0x3c482bc3,0x3b8eb3b2,0xbbac962b,0xbc43a576,0xbcb333fa,0xbcfd9184,0xbcc13a6c,0xbc553f30,0xbbad3df7,0xbbcf2ae7,0xbc47d2b4,0xbcbc817a,0x3c5285e0,0x3d6905d9,0x3d8e928e,0x3bc1dc4e,0x3d23321f,0x3d989ee7,0x3da8b9ca,0x3d974517,0x3d89e4d2, -0x3d8f5420,0x3d9956fd,0x3d97d9a1,0x3d195b60,0x3b839efb,0x3d6c17c6,0x3d20e543,0x3c0e9f67,0xbc4213ce,0xbc0bfa7f,0xbbd6f30c,0xbbb50644,0xbb9655a9,0xbb5232c1,0xbad83dd8,0xbb7b300f,0xbbd88d15,0xbbdf5449,0xbc0a697b,0xbc2c8216,0xbc4f3afa,0xbc4d78e1,0xbc6cb55d,0xbc7a3b71,0xbc5c7f50, -0xbbeaa737,0x3c6fd89d,0x3c6eebcc,0x3d32f46a,0xbcce9a1a,0xbdb6d457,0xbddae07e,0xbbe31466,0xbd85ed05,0xbdf4e897,0xbdf8b3e4,0xbdfa9ef0,0xbdddd9ca,0xbde31700,0xbe02986d,0xbde0cea2,0xbd880487,0xbc8908dd,0xbde9c1ce,0xbda5c29d,0xbcd14a21,0x3d341da5,0x3cbdf3fa,0x3cdbf51e,0x3ce8c1e7, -0x3cea718a,0x3ce05fbc,0x3cc78fac,0x3cc3556c,0x3cbfc142,0x3cbcc9f7,0x3ccbb745,0x3cd57cd1,0x3cca9d93,0x3cee49bf,0x3ce1a4c1,0x3ca5bc03,0x3ca20e3c,0xbbe93a06,0xbc51e5ac,0xbe138066,0xbcdafc8a,0xbdaf0b8c,0xbd1de387,0xbd206be4,0xbd387e2c,0xbb1262b8,0xbd1d3a67,0xbd26c95b,0xbd1dab2b, -0xbc260ad0,0xbd189442,0xbdb5ffab,0xbc80afdc,0xbd59354a,0xbce3b8fe,0xbd945ea4,0x3cd0675f,0x3cf20217,0x3cde7fbf,0x3d1dbd31,0x3d02cc75,0x3cfa4b8a,0x3cff1f57,0x3cf5da73,0x3d08841e,0x3d27d824,0x3d56c236,0x3d7116c7,0x3d46094d,0x3d6f3bb2,0x3d3081e6,0x3bae5ebd,0xbc393927,0xba88f548, -0xbd12e6cb,0xbddf0972,0xbd110e08,0xbd8c2b59,0xbd24bea1,0xbd79963c,0x3b82092c,0xbd1a2407,0x3ce28fbf,0xbd2e17ba,0x3d2496e5,0xbcb70517,0x3b646781,0xbc92d40d,0xbae4ad8e,0xbc6721a3,0xbd17a516,0xbd21e5be,0x3c3cafa4,0x3d59d3a0,0x3d0c53ce,0x3d758ae3,0x3d4ad92e,0x3d48013b,0x3d1658a6, -0x3d0b1d33,0x3d0e5a0c,0x3d2ac1d1,0x3d6a3685,0x3d8ae177,0x3d512f33,0x3d9099a4,0x3d605427,0xba9d9293,0xbc3ae8ea,0xbcf8fd1d,0xbdc91d46,0xbe1d9c9b,0xbd93fb48,0xbdbf86c6,0xbd6614d6,0xbd08d03b,0xbc591dbe,0x3ba012cc,0x3c34935b,0x38c47f52,0x3c800c89,0xbb9c068b,0x3d0b966f,0xbc2f5190, -0x3ad95603,0xbbfddf5a,0xbca6fc84,0xbd1684b4,0xbc11b61e,0x3d5753fb,0x3cfd905f,0x3d8e71c2,0x3d65bae4,0x3d61018c,0x3d376117,0x3d2605b4,0x3d426df5,0x3d930385,0x3dd5258c,0x3dffba74,0x3db6ca7d,0x3df573e3,0x3d948a55,0xbcfb1e9e,0xbd7e04f6,0x3a6f85e1,0xbd4381ca,0xbe16c538,0xbd9f64c5, -0xbd68da08,0xbd425b59,0xbd0a29fb,0xbc2a0694,0x3c259331,0x3cc25816,0x3cedfc12,0x3c9e7640,0x3cb36926,0x3c959587,0x3c4fc631,0x3b1506b2,0xbcb7e9ce,0x3c4b4a44,0xbd9803f3,0x3c99d76c,0x3d6b0532,0x3d5deb76,0x3db1e1a9,0x3da343f6,0x3d95ddb3,0x3d4ddbea,0x3d1cdd99,0x3d2b3533,0x3d56e165, -0x3dcb6029,0x3df67af9,0x3d8c5162,0x3df1ebac,0x3da86bfe,0xbc9a59c9,0xbcb2cb23,0x3e968a87,0x3e8a5000,0x3d2568dd,0xbae6c05c,0x3d26d536,0x3b1eb610,0x3d666353,0x3cef4c19,0x3c8f3069,0x39dac9a7,0x3ca1c305,0x3bcd78e6,0x3c236238,0x3ccec84c,0x3bda8eee,0x3c6ad727,0xbce7db25,0x3c757c00, -0xbcb16511,0x3ce46d5a,0x3d6e0e7a,0x3d22bc7c,0x3d876842,0x3d55be68,0x3d7ee29d,0x3cd0f8d7,0x3d6d7274,0x3cf8f2c8,0x3b84f24d,0xbd756e79,0xbdc21c65,0xbe15ba73,0xbd9a1046,0xbc030c98,0x3c8714bf,0x3e827998,0x3da8a6f5,0x3dc754e9,0x3c7824c7,0x3dc71d37,0x3c4a6442,0x3d42fe45,0x3c75d20a, -0xbc0b19e5,0x3d270e9d,0x3cef1f9f,0x3c9bc7c4,0x3caa01bb,0x3c9442ca,0x3d1b7e05,0x3c229f0a,0x3cabef1a,0xbc90551d,0xbc0e8abf,0xbd8c23fa,0xbc200a61,0x3dd9e9b8,0x3dc35090,0x3e04e673,0x3e008688,0x3deca290,0x3d9df78b,0x3d84e4bd,0x3d45fe05,0x3d4d2e93,0xbd683ecb,0xbdb71bdc,0xbdcb96e3, -0xbdac5f58,0xbd459173,0xbd2a74dc,0x3cb173c7,0x3d4fe997,0x3db4d540,0x3d882a5c,0x3d71100b,0x3d864b6a,0x3d1b3d30,0x3cf900cd,0x3d4030ac,0x3cf97b81,0x3d16f6e7,0x3b71da44,0x3bd803b2,0x3be42ce5,0x3d53d104,0x3c3a3d51,0x3b5dff86,0x3c0780d5,0x3c18ed72,0x3c41ffed,0x3d1a9ae4,0x3d463b5a, -0x3cd23cdc,0x3c5dabc8,0x3d422ea4,0x3d8ad0a0,0x3d79f31c,0x3d542f78,0x3c058e86,0x3d4fd320,0xbc783a9b,0x3c9578f8,0x3db17984,0x3d0fedc7,0x3c98dc4a,0xbbff7b0a,0x3c4c3149,0xbd2c2a87,0x3d00afda,0x3c238b30,0x3d084d79,0x3c8da2b9,0x3c3fe91d,0x3c8269dc,0x3d5f1f0f,0x3cdc7022,0x3ca76e04, -0x3b8ea995,0x3a832a30,0x3b73695f,0x3d7d557c,0x3cdd8542,0x3c73f1cc,0x3cdcee2a,0x3cb7678a,0x3ca43076,0x3c397bb6,0x3cb0bfc1,0x3a9c5468,0xbc70fbe5,0x3ad16ac2,0x3b5a2cf1,0xbbf4231a,0x3cb54d2f,0x3be80f4b,0x3d4cc480,0x3d8f98d5,0x3df5a786,0x3e4a4434,0x3e1725e2,0x3dd2f2f3,0x3d2cfdbb, -0xbd2d9375,0xbcb1e4c9,0xbd4c30be,0x3cc42227,0x3d01c72d,0x3c16a401,0x3cd32585,0x3ce3bc38,0x3caa3cab,0x3c840f62,0x3a9ed730,0x3a4529b2,0x3c0d3d9b,0x3c4ca50d,0x3d4ed3e8,0x3c9dfcf7,0x3c6afb30,0x3c58ad63,0x3cabe71c,0x3c21a851,0x3ccdfc65,0x3ce9885c,0x3cfbe91d,0x3cbcf4af,0x3c6ba3d3, -0xbccb8ffe,0xbdb32841,0xbdc4b147,0xbdf54e36,0xbe31119d,0xbe0403a9,0xbdb01a53,0xbcc13abe,0xbba4ce36,0x3d4730e7,0x3de0db91,0x3c3ceb82,0x3da9156c,0xbd4b2a9f,0xbde7e176,0xbc08eab7,0xbc804b2d,0xbb808dfe,0xbbe004c4,0x3c8442a0,0x3b689edf,0x3c8faa0f,0x3cc3b55f,0x3ccc4e8d,0x3c914c99, -0x3cb6b282,0x3c5f8297,0x3cb87371,0x3cad7694,0x3c95d0ef,0x3c5af545,0xb93a449a,0xbbbaba14,0xbd01b8f1,0xbcda55e3,0xbd0fd4c1,0xbd0d051c,0xbc3f5629,0xbd41caf4,0xbd4fd7f5,0xbcff92e2,0x39eb1fab,0x3d18c44d,0x3d9ba5d9,0x3dd6fd3b,0x3d9f8d02,0x3c08282d,0x3cf54800,0xbc278e09,0xbd02fb8a, -0xbd5b85ce,0xbc40eaa4,0xbae4723b,0x3c1abae4,0x3c97670a,0x3c34d1d8,0x3cb17367,0x3c1d2622,0x3cbc9ae2,0x3c8129f9,0x3cb38231,0x3c6922d0,0x3c74b60e,0x3bbccbc0,0x3b3ca4ab,0x3b9f4ed3,0xba50bf27,0xbba3d920,0x3b443856,0x3c034640,0x3c4b5dad,0x3ca9009b,0x3c986e6d,0x3c39c097,0xbc2b7477, -0xbc91dfa8,0xbd3dc4bb,0xbb58bc89,0x3cb687a3,0x3d920987,0x3cec9fdd,0x3bb7c991,0x3c28ed03,0xbc898d27,0x3d0b5341,0xbd91b400,0xbd1c5c0c,0xbc99c5ea,0xbcadfc1b,0x3c894de1,0xbb87215e,0x3bcf74dd,0x3c054c06,0x3ca3bd42,0x3c603430,0x3c9dcf9d,0x3bfcdfcf,0x3c948f9c,0x3c47d08a,0x3c31ba0c, -0xb9985767,0x39ff29a6,0x3c10c840,0xbbb9399d,0x3ca60256,0x3c642c92,0x3cb66dc9,0x3c9ee29a,0x3ca34d1f,0x3c93402f,0x3cc6f513,0x3d0103fd,0x3d3c6828,0x3d5f751f,0x3d6131ac,0x3d911647,0x3d1d9b4c,0x3c781c13,0x3c9fc86a,0xbc0f8ca0,0x3c8a2123,0x3c947512,0xbd1106a1,0xbc36f4e1,0xbce2d921, -0xbd01992b,0xbc7ff3c4,0x3bd594d2,0xb9f8ba0c,0x3c2bbb5f,0xbba1ae5f,0x3cdbb145,0x3c556f00,0x3cd37f42,0x3b9d37a8,0x3c7ba60b,0x3c804ce6,0x3c683886,0xbba4fc98,0x3c8b1f1c,0x3cdceca8,0x3c95237f,0x3cbac682,0x3c7a96b6,0x3c4e4c2f,0x3bd30b99,0x3c93c0d7,0x3cef31c7,0x3d1ad452,0x3d033fdb, -0x3cfecbea,0x3d075788,0x3d07fe92,0x3d048a19,0x3ccc6662,0x3c868efb,0x3c477608,0x3be0969e,0xbcbe29c3,0x3c94895a,0x3c316b52,0x3c36ddfb,0x3c9b4930,0xb9d7c1c9,0x3cc09cef,0x3af89828,0x3b0f0546,0xba393af6,0x3c745714,0x3c320e1d,0x3c752100,0x3c58afbf,0x3b9759d4,0x3cc514af,0x3bc04164, -0x3d040026,0x3cc10743,0x3cf1de92,0x3cf16b45,0x3d06632a,0x3d0c8b85,0x3d07289f,0x3d13bbe5,0x3d035e7e,0x3d0b7e7f,0x3d2ebbc5,0x3d4046fd,0x3d5265ee,0x3d2b0333,0x3cf15918,0x3cd82183,0x3cc1f551,0x3c86e6b0,0x3c9f6427,0xbc14ed98,0xbd0105ae,0xbcabccaa,0xbc2e0455,0xbce255fd,0xbcf928f4, -0xbd0c35f8,0xbcd6f0d4,0xbc9eff7f,0xbcb3690e,0xbcd86eb7,0xbcd13949,0xbc952884,0x3b2f277d,0xbc72a0ce,0xbc9285e1,0xba04694b,0x3ca35671,0x3c90155c,0x3c9380bf,0x3c8f059b,0x3c8fae48,0x3c8cf739,0x3c8ced17,0x3ca0b751,0x3ca520c7,0x3cadd24b,0x3ca0d1a9,0x3c8f143d,0x3c9712ff,0x3c98ea24, -0x3c9685fa,0x3c9236d9,0x3c84edb4,0x3c7d8f3d,0xbb5c632d,0xbb6fe74c,0xbc1f39c8,0x3d2ac9a3,0x3d4f18b4,0x3ca7fcc5,0x3cc871b0,0x3d35127b,0x3d2922dd,0x3d2474f7,0x3d1dce24,0x3cf9013a,0x3cfd954c,0x3d10080e,0x3cfc4aca,0x3d4b62ef,0x3cf8eae5,0x3cbd1eda,0x3d485280,0x3cfa3236,0xbc9e8c8c, -0xbc0ad790,0xbc104df9,0xbc113549,0xbc20cea3,0xbc20d1de,0xbc23b110,0xbc26fc81,0xbc1bc83c,0xbc062632,0xbc019d29,0xbc1507af,0xbc12e40d,0xbbfb4bdc,0xbba2e3b8,0xbb030c25,0xbb1fb172,0x3bfde85c,0x3c51f441,0x3c78489d,0xba48e7b6,0x3c762893,0x3c771b4a,0x3cb5ea63,0x3c88d748,0x3b3b3808, -0x3d018565,0x3cd38f83,0x3d0656ae,0x3c632e87,0x3cf39e18,0x3d2abd95,0x3c9b084b,0x3ce71935,0x3c541663,0x3d1f6758,0x3bbbe9ef,0xbc549d31,0xbbafe915,0xbbd3a1e8,0xbc0edba2,0xbc5262a4,0xbc881443,0xbc8b4d44,0xbca455db,0xbcd0e5ad,0xbd05347d,0xbd1d1bde,0xbd04c883,0xbcc4a384,0xbc52c4c0, -0x3bab6b5d,0x3c8905ce,0x3d0710cd,0x3d0e6530,0x3d05e9c5,0x3c7f63ce,0x3c9dcc91,0x3c86bfad,0x3cdd5c65,0x3995959f,0x3cf9f27a,0xbb15c334,0x3d54d74a,0xbb0fa180,0x3cad91b7,0x3d05bc6f,0x3cc8295d,0x3c69c96a,0x3c8eb72d,0x3c875569,0x3cf77b05,0x3b7d9c54,0xbcb3a7b1,0xbbe82899,0xbc449695, -0xbc45c3b3,0xbc719caa,0xbc86fac2,0xbc9664ed,0xbc921870,0xbc7e3e4a,0xbccd7863,0xbcfa48f9,0xbced5df1,0xbc88f159,0x3bad5ffa,0x3d12394f,0x3d25ca69,0x3d886bdc,0x3d35772c,0xbc6cbfb4,0x3a7bd730,0x3c11b574,0xbc14b5aa,0xbbfb9fcf,0x3c170fa3,0x3c2c10fd,0x3c76e922,0x3c528ef4,0x3b25464e, -0x3cbb650d,0x3c903bb9,0x3cc1f41f,0x3bc2fd88,0x3c17d88d,0xbae6b4d0,0x3c9b1013,0x3c8c1724,0xbcc82f7f,0xbb65c645,0xbb3b4cc4,0xbc0d177a,0xbc91b7e3,0xbcb5538b,0xbca1a2f1,0xbcf38d90,0xbd36f0bb,0xbd938eb8,0xbda9b32f,0xbd979c97,0xbd4cc0e5,0xbc6fce03,0x3d5504cd,0x3d9e615f,0x3dea7ddc, -0x3dbe00da,0x3cd4e0ea,0x3cb4f8f6,0x3b1d0546,0x3c2955f4,0x3aeeba3c,0xbb0bb6ef,0x3bbf68df,0x3ccc10a5,0x3bdefc6e,0x3c571c7f,0x3c30bb18,0x3cb2b2a9,0x3b25af41,0xbad55957,0x3b6727f2,0xbcc7aebc,0x3cc64933,0xbb0f2360,0xbcee5513,0xbc845334,0xbc870ce0,0xbcbcfeab,0xbc828fd2,0xbcaf24a5, -0xbcb0d2f5,0xbcd29bce,0xbc67d29a,0xbd32b10f,0xbd45b65c,0xbcf6f09b,0xbc50e4bc,0x3d350064,0x3db922dc,0x3df608c2,0xbd2f02de,0x3ccb160b,0x3e8ebcde,0x3e21ad37,0x3deb27a6,0x3d8701b1,0x3d3788f6,0x3d853bd8,0x3d47dee1,0x3cd0762b,0x3c914600,0x3c1a94c9,0x3b164b86,0x3cd34bbf,0x3c377f1f, -0x3bba6d78,0x3c5236ea,0xbbfd63d5,0x3ccff807,0x3c284ed4,0x3c22b315,0x3d2af391,0x3db711e0,0x3e07933c,0x3de93300,0x3e3b1aee,0x3e156b95,0x3e11ec6f,0x3dd7d5c9,0x3d72ab8a,0xbcb4e6f5,0xbdab5ff5,0xbe1a7837,0xbe1df4f5,0xbdce0850,0xbd850f35,0xbd011cac,0x3d0a46fc,0x3e0caf34,0x3c161841, -0x3db4ba99,0x3d563e50,0x3d6a5ce9,0x3d0165f6,0x3cebe2a6,0x3cfb9885,0x3c5f4cb6,0x3cb89b3a,0x3cc603dc,0x3cd9c824,0x3c9a8e2c,0x3c26dafb,0x3cec0783,0x3ce987f9,0x3d82f0be,0x3d1a5b4a,0xbd0a4735,0xbd16ddac,0xbdd55971,0xbd4b8f4e,0xbceccce5,0xbcd6edb6,0xbcd63a6b,0xbbd6df35,0xbc84f8b6, -0x3da71a9a,0x3e0dda2c,0x3e32c7cc,0x3e4609ee,0x3e14cc83,0xbd1df56f,0x3ca12518,0xbce3b815,0x3cb22c63,0x3d148b25,0x3d2e9e73,0x3d81044a,0x3d17695c,0x3d2caf93,0x3d825114,0x3d1695a5,0x3cd83749,0x3b9e27c3,0xbac3942a,0x3ba993b0,0x3d81fe5f,0x3c942445,0x3c8f3c27,0x3cbdc3b4,0x3ce2372a, -0x3cdd2e78,0xbb5330e9,0xbc00c465,0xbbb7b393,0xbd1d5c1d,0xbd8e837d,0xbdce640a,0xbddb1505,0xbdc711bb,0xbd8fbd95,0xbd891657,0xbca94e93,0x3c827494,0x3e05b5d1,0x3e024562,0x3e083180,0x3d6147f1,0x3d11094d,0x3d052434,0xbc732185,0x3d2f4852,0x3c824d1b,0x3ccbe839,0x3c9dbb2f,0x3cb220a9, -0x3d8134dd,0x3c917d58,0x3bdfbe88,0x3c642a39,0xbbd69b6d,0x3bbf2be4,0x3d89d4ae,0x3c9d5f28,0x3ca1615b,0x3c8968b8,0x3b0859bc,0x3c525d69,0x3c4cb65a,0xbd022f1d,0xbc8f04d9,0xbc106ccb,0xbcf5c5cb,0xbd1043c9,0xbd281f9f,0xbd06f378,0xbc80d18f,0xbd4f66b2,0xbcaf78a5,0xbc0cd859,0x3b413370, -0x3d0a0af3,0x3d45f857,0x3d99165e,0x3db5c2d1,0x3e16f4f6,0x3d861c80,0x3c7ebf1c,0xba7c27db,0x3ce7f7cb,0x3c93d5f9,0x3caea6fd,0x3d1e4672,0x3c139879,0x3b6acc9a,0x3ce7cd8e,0x3c68c92f,0x3cab37ca,0x3d1331d3,0x3cb4709a,0x3c9b6702,0x3bd14ce5,0x3c900946,0x3d022b37,0x3a69a136,0xbc47aaf4, -0xbb4c98a1,0x3b8ff7c6,0x3d074e18,0x3d730828,0x3da71d43,0x3d918e31,0x3d84df86,0x3d9e171a,0x3db244f8,0x3d97f032,0x3a9dce62,0x3d552003,0x3d5aa7cc,0x3c980304,0x3e23f079,0x3da5d9f1,0x3db8e764,0x3d835e24,0x3d3e2433,0x3c91898d,0x3cb686a9,0x3ce9fde3,0x3cff11df,0x3ce12cb1,0x3c81a57b, -0x3c81237e,0x3bd920f1,0x3c0b439f,0x3c533abd,0x3c4c4a3b,0x3c469d7b,0x3ba10e92,0x3c9c258e,0x3c8dc94c,0x3c955580,0x3c3c20f1,0x3c2dd005,0x3bbb61ff,0x3d238bad,0x3d5bfa10,0x3d860c58,0x3d781c28,0x3d640ab9,0x3d51ef03,0x3cf26aee,0x3c64e819,0xbbb8d991,0x3a94f067,0x3cb14526,0x3cd40614, -0x3db20533,0x3d4628af,0x3dc1a95a,0x3d67534c,0x3d3a1b19,0x3d3bd165,0x3d007f2a,0x3cc2977e,0x3d0edb1e,0x3cba0f7a,0x3d0eec1d,0x3bac2996,0x3cda5b59,0x3c804669,0x3c7e4714,0x3c7f41c9,0x3cb14c91,0x3ca30808,0x3c54077e,0x3c15d211,0x3bbcae08,0xbc41756a,0xbbcfe14b,0x3bf0ec04,0x3d5a3887, -0x3d868264,0x3d8d18d9,0x3d2379d6,0x3cddecc8,0x3d252a36,0x3c479d9a,0xbc03435e,0xbd6be80b,0xbcd3c2f0,0xbc2da112,0xbc78e7f2,0x3cac716b,0x3b2bb3a7,0x3cf73e67,0x3d355ada,0x3d16cd07,0x3d12865c,0x3c1ae519,0x3cb979b4,0x3c73321c,0x3ca0a6e6,0x3c040a92,0x3c7a2f90,0x3be829b2,0x3cb1a4da, -0x3c7e2314,0x3c8c5931,0x3c842dd0,0x3cddf91c,0x3cc27d67,0x3c42b504,0x3c8f6a02,0xbc3e72af,0xb998776d,0xbae9daca,0x3c9ad8d3,0x3cf8e8c0,0x3d132609,0x3ce1221c,0x3ca7830b,0x3ca0cfc0,0x3bb7f885,0xbba91660,0xbcf1d06a,0xbbed09f5,0xba3eb903,0x3b83d79f,0x3b6311db,0x3b9d04d3,0x3b9ec7db, -0x3cc8f46d,0x3c8c3628,0x3cf4735c,0x3cfee06b,0x3cce5dc6,0x3c53cf08,0x3cb40a5b,0x3c687494,0x3d23b766,0x3c676526,0x3cb98e34,0x3caa01d7,0x3cfc05e9,0x3ca5ce98,0x3ca01e28,0x3c21f12b,0x3cf8d644,0xbaf255a2,0xbc508aee,0xba81067c,0xbbd85822,0xbaefa26c,0xb944ebf1,0x3c2ecb9c,0x3c460e42, -0x3c40a511,0x3c1dc351,0x3b833020,0x3b32aeb5,0xbb5f42bc,0x3b994a40,0x3c5e9e23,0x3cc76453,0x3c994405,0x3c4f22de,0x3ca6f238,0x3d0e078a,0x3cbab98c,0x3d03eb05,0x3cfcee40,0x3d11ab35,0x3d091009,0x3ce2bcbd,0x3d175913,0x3d0a5dbd,0x3d23250a,0x3ce90548,0x3d016572,0x3cfdfbd3,0x3ce749c8, -0x3d0f1888,0x3c6b2a8b,0x3d138209,0xbc72146b,0xbc4d43da,0xbc30f5a2,0xbc1bae99,0xbbe47a2f,0xbbdc62e9,0xbc14edce,0xbc799a65,0xbc9e5661,0xbc8e5ca4,0xbca2a7f0,0xbca99eb2,0xbcb40af0,0xbc759b0f,0xbc76ec7e,0xbc347d1f,0xba22457e,0x3baed18c,0x3ba4fad5,0x3cdbafa6,0x3cf89dc5,0x3c30f06a, -0x3cda9c2a,0x3d08b493,0x3ca55ede,0x3cb303b4,0x3ca818b9,0x3c958143,0x3caa49b6,0x3cd1651c,0x3cdbc236,0x3d064828,0x3c98e972,0x3c978961,0x3cf4a10a,0x3c8e8717,0xbbb95a56,0x3b108260,0x3ac2c057,0x3a87966d,0x39774c0d,0x3a0163c4,0x3b0ed99d,0x3b75725d,0x3b9043d3,0x3b6653ba,0x3b8a1668, -0x3b92d46f,0x3b908bd4,0x3bc37162,0x3be628a2,0x3c176c53,0x3c11268c,0x3c6d0a9a,0xbcc7701e,0xbc8fda17,0xbc69099c,0xbd470fd4,0xbd1ec6ca,0x3a8775bc,0xbd188c4c,0xbd1c0f97,0xbc6c4c5b,0xbc2ba3a9,0xbb999948,0xb9aae057,0xba27afaf,0x3a65f888,0x3a30f974,0xbd25f62e,0xbd2971c4,0x3b9e2ec8, -0xbd142f1f,0xbd1e6946,0xbb6b0cb1,0xbc345dba,0xbc4e4ca0,0xbc402392,0xbc57eb43,0xbc6e0c26,0xbc88fd72,0xbc736c49,0xbc6d9613,0xbc56e8ac,0xbc805349,0xbc844119,0xbc9cbae5,0xbca59e7e,0xbcb144e5,0xbcb62235,0xbcaf3c9a,0xbd108a87,0xbd04de72,0xbc645aae,0xbc84ccc4,0xbc336d04,0xbc91bd78, -0xbce3fb48,0xbc776c75,0xbc0ef3d8,0xbcf53501,0xbca6aa91,0xbd03f439,0xbc900216,0xbc6115f8,0xbc686491,0xbcae838c,0xbcc69bed,0xbc968477,0xbd11c548,0xbcd49971,0xbc041c93,0xbc6f3665,0xbc30c0af,0xbc6e6067,0xbc86e757,0xbccf92f2,0xbca492e4,0xbc85fa05,0xbc3b821e,0xbc86d615,0xbc964612, -0xbd04412a,0xbd290e87,0xbd47aea4,0xbd47c0a7,0xbd3d9f56,0xbd5f129d,0xbd07c68f,0xbc905380,0xbc4142cb,0xbc180602,0xbc52b674,0xbc803195,0xbbe3e539,0xbc8b21f7,0xbb8cb048,0xbd09ca40,0xbc07b7ba,0xbb839562,0xbc52c1b4,0xbc2cdd1c,0xbc23672c,0xbc97173a,0xbc50559f,0xbcb737e6,0xbc2299e7, -0xba4fa32b,0xbc5ea5ff,0xbc0561a8,0xbc9665eb,0xbcbd7106,0xbd1e875a,0xbccdf054,0xbcaeaf8e,0xbc7b9934,0xbcbdbc86,0xbd186bf3,0xbd6c01a4,0xbd9354b8,0xbda7cfac,0xbd9f2011,0xbd9441ca,0xbdc2096f,0xbcc519d3,0x3cd93050,0xbbf37cdd,0x3cc34398,0x3c053be1,0x3bb6af58,0xbc079dbd,0x3a82234a, -0x3b02439c,0x3b4c5dff,0x3c06b709,0xbb7ed01a,0x3ce2559f,0x39facfa2,0x3bad1a87,0xba8e6220,0xbbb6cf9e,0xbcac6f18,0xbc57c0f5,0x3bdf7bb9,0xbb929040,0xb9631b76,0xbc522a19,0xbc9ccbee,0xbd3a8b59,0xbcb4c7c3,0xbc1be819,0xbaa3b77f,0xbc375103,0xbd09f1b0,0xbd92947f,0xbdce9975,0xbdf4c3c8, -0xbdef91ef,0xbdcd79e8,0xbe01e65c,0xbd29079d,0x3d21819f,0x3d0f1bd2,0x3cbc3023,0x3ca52a7e,0x3ca350a2,0x3c0a8810,0x3c569e78,0x3c3eeac3,0x3c5e7691,0x3c5e64c3,0x3c9b6b4e,0x3ce3733f,0x3c794dc6,0x3c1481fb,0x38aac91c,0x3cfcd8af,0xbcd0ffec,0x3bc870c0,0x3c2b3a2a,0xbc191d14,0xba4e0313, -0xbca2b623,0xbcfeb65d,0xbd6dbff3,0xbd0021cd,0xbc88be7f,0xbbb1f1a1,0xbcc58e97,0xbd89a8c6,0xbdee959f,0xbe168513,0xbe2b97a6,0xbe12e9ba,0xbe1411e3,0xbe062876,0xbe04a20c,0xbddae923,0xbca10343,0xbce0cae6,0xbbad0d3c,0xbd01597a,0x3c681ce5,0x3cc3cc70,0x3d1155ce,0x3cdf84c4,0x3b77aca7, -0x3bd45cbf,0x3cbbe932,0x3c266348,0x3c823af5,0xbcaefcae,0x3ca4925c,0xbbe5eb9a,0x3c3854cd,0x3cff5ad5,0x3bff8450,0x3c52b54f,0xbd7dfa61,0xbd9353e7,0xbcdeba79,0x3aaf5141,0x3ca2282b,0x3d084abc,0x3cdd01df,0x3d77dc96,0x3df29d90,0x3d629705,0x3c740982,0x3c555f5f,0xbde625b9,0x3c45bc7d, -0xbca205e5,0x3b67860f,0x3c05a5e2,0x3a5c1c7f,0x3c1f0c16,0x3d265cc1,0x3c9e2576,0x3d01bafb,0x3d02181e,0x3b508542,0x3cab94c1,0x3ca1f9d9,0x3ce99703,0x3c171988,0x3c7391e7,0x3b7a99cd,0x3c875876,0x3ad95474,0xbcad029a,0xbc605f3a,0xbd3b0cc9,0xbd58520c,0xbd9929a8,0xbdc4faa5,0xbe0d86ef, -0xbe1ede44,0xbe20681f,0xbe194e81,0xbda34e87,0xbd82bae5,0xbcd2d260,0xbc82e959,0x3c9a0f5f,0x3d11521e,0x3c4d4c67,0xbb818ee3,0xbd4db789,0xbd4b969c,0xbca43fbb,0xbcd53b6c,0xbb2cefac,0x3c1b80d8,0x3d37a826,0x3cb1f78d,0x3c6ebd18,0x3ab3cff7,0xba06beaf,0x3c013db3,0x3d82c3ce,0x3c362e26, -0x3b607feb,0x39e3d88e,0xbba78cd4,0xbc89ae43,0xbc7c3026,0xbd2452a9,0xbd928cbe,0xbd9d8342,0xbdd95a6b,0xbdddd83d,0xbde5208a,0xbd9d1b60,0xbd472152,0xbcc966db,0x3cc7dac4,0x3c9402c0,0xbd1be0bd,0xbde57686,0xbe0863f6,0xbe043ad8,0xbd074313,0xbd86f80b,0xbcdff117,0xbc1fa546,0xbd27d848, -0xbc2c275a,0xbc781369,0xbb802331,0x3d4b8903,0x3bfb5803,0x3b214f1d,0x3bfbdf9e,0xbbbcc3a7,0x3be92ad6,0x3d6ed9ed,0x3c1d3a67,0xbc399bfc,0xbc8530fc,0xbc07d848,0xbc96b979,0xbce7f661,0xbadbaa4c,0xbca12767,0xbd1361ad,0xbd08978b,0xbce27d93,0xbcd0ef0e,0xbc95585c,0xbcb406b7,0xbc66c372, -0xbd3980b3,0xbd98d035,0xbdfbaef5,0xbe55ceb9,0xbe7be82d,0xbe8dd05e,0xbe184c72,0xbe368872,0xbd17ac15,0xbc7613a2,0xbb5a2ef4,0xbb6af7d2,0xbba1a1ac,0x3bf69102,0x3c7ca4fd,0x3b8d37c7,0x3b500c98,0x3ca7456f,0x3ba5f90e,0x3c4b9e56,0x3d00acde,0x3b3be490,0xbb15ac54,0x3a548995,0xbb97e699, -0xbb8960e1,0x3c1cb386,0x3c791c3f,0x3c1d2249,0xbbd8791d,0x3ade0486,0x3b3ae03c,0xbbec6028,0xbcd66fe0,0xbd7cf0ae,0xbe0a2702,0xbe1c2751,0xbe292136,0xbdbe5936,0xbe2a5350,0xbe4b4743,0xbe945000,0xbe66ea11,0xbe43e3d4,0xbdd494f5,0x3cbdd25f,0xbcefbc6e,0x3b3482b9,0xbb954e22,0xbc39bfd2, -0xbb4a4326,0xbb34a2e7,0xbac3a476,0xbb7ce4b5,0x3b714318,0x3c05f22b,0x3bf30ae5,0x3bd446a4,0x3bd0bd5e,0x3c20887d,0xbc70f3d2,0xbcd66b49,0xbc854055,0xbc8fb6c8,0xbb246ca4,0x3cbcd3f6,0x3b9e9f3e,0xbc9e4103,0xbd6af06e,0xbda5e814,0xbdd55d72,0xbe10f67e,0xbdd03d87,0xbdb661d6,0xbdc4d187, -0xbe1a1f6e,0xbe36efef,0xbe5fefe8,0xbe31e16a,0xbdc555f1,0xbd8f57dc,0xbc130b14,0xbbf8112f,0xbb40f4de,0x3b29b12f,0x3bcaf509,0x3bd88604,0x3c389b41,0x3c29faf9,0x3c1b2533,0x3b8cb30b,0x3be3e910,0x3c19c173,0x3b292017,0xbbd31256,0xbc0ce187,0xbb9a1e1f,0x3bac7bed,0x3c04bc1c,0x3bb65acf, -0xbb643b94,0xbcb26764,0xbd1f62ee,0xbd5fad49,0xbd7d3bfc,0xbcbe3e8e,0xbaec48b3,0x3c483ebd,0xbc027878,0xbcd89825,0xbd069004,0xbca70861,0xbd1ccf76,0xbdbc9841,0xbdbc3c66,0xbd732961,0xbc7a872b,0xbd1d836a,0xbcca225f,0xbc9bc191,0xbc720889,0xbc11608a,0xba3ec6e6,0x3a8a277a,0x3bb35888, -0x3b0b04f4,0x3c2dd5cc,0x3c1b4d8d,0x3c2cb2ff,0x3bfca0a7,0x3bfe4ec4,0x3b0c6c79,0xbc096547,0xbc69c759,0xbc82d596,0xbc60c4ff,0xbc6d3909,0xbc60d091,0xbc790daa,0xbc84f489,0xbc8614c3,0xbccc970c,0xbd0023c9,0xbd215b6d,0xbd1c8606,0xbd0259f0,0xbce62d9b,0xbcbc3f73,0xbcbb77d6,0xbd285936, -0xbd16b0be,0xbc80b30d,0xbd15baaa,0xbc60f6ab,0xbc5a3560,0xbbc7f058,0xbac4b115,0xbb0671a3,0xba9c6df5,0xbbb65b40,0xbb13ec49,0xbc59e6b0,0xbc20ecf2,0x3b9ec1ac,0xbb6db865,0x3bd84614,0x3b38c0c1,0x3b4a9e7d,0xbac58210,0xbc67c59d,0xbcbdc103,0xbbd22061,0xbc47e6df,0xbbcdfd76,0xba6da7ca, -0x3be88ff7,0x3c7d38f9,0xbbf527c7,0xbcd31fdc,0xbd429971,0xbd14ec87,0xbd0ec863,0xbcec38b0,0xbd06d56b,0xbd084118,0xbce90401,0xbcc7e3d2,0xbbe372df,0x39aa0100,0x3c03d860,0xbad60b30,0xbc181c65,0xbb3fac6a,0xbc4b72a7,0x3c698148,0x38a972af,0x3ac6636f,0x3ad7f1bc,0xbb5233da,0xbbf69c06, -0xbbc6c4c7,0xbca7901f,0xbcc09a98,0xbc8c5bf5,0xbcb7942f,0xbca772dd,0x3a59fc07,0x3ad091b2,0xbba2e8b2,0xbbefb0b0,0xbc477794,0xbc8dca73,0xbca92625,0xbc5c91a8,0xbb87cfc8,0xb9db533c,0xbc0258d6,0xbc5dc3bf,0xbca9313b,0xbc86e58e,0xbc32678d,0xbc36d284,0xbc4f0be8,0xbb1b855d,0xbbcd82d9, -0xbcade200,0xbc0d83df,0x3c8d1ddc,0xbc9c799d,0xbc7d3d02,0x3c4f67aa,0x3c7e4acf,0x3c673059,0x3c6c85f9,0x3c768f1e,0x3c83d3dc,0x3c7ba836,0xbc8798ac,0xbc7dd2a4,0x3c75bfed,0xbc6cc501,0xbc92366d,0x3b803f11,0xbaec7448,0xba9efb12,0xba12252d,0xb8ce1f1b,0x3a12981e,0xba096cbe,0xbb739b6a, -0xbc076727,0xbc363a54,0xbc35440f,0xbc05a16d,0xbc104059,0xbc01b3b5,0xbbe257ff,0xbbb3ddfc,0xbb6d65c9,0xbb209d40,0x3d3fa756,0x3cfa6d9d,0x3cf1ce55,0x3d2c1674,0x3c8a9aef,0xbcecd196,0x3d347b24,0x3cc355a3,0xbcaf6483,0xbce15987,0xbd09509c,0xbd01b64c,0xbd07460d,0xbd267513,0xbcf9db22, -0x3cce04e2,0x3d3df45d,0xbd1dd840,0x3c759512,0x3d253f76,0x3cfafcdf,0x3cffdb31,0x3d0c35d2,0x3d059cc3,0x3d0ad4eb,0x3d0c43fe,0x3d0c0557,0x3d0ad3a0,0x3d0ab2e6,0x3d04e5b1,0x3d10e31f,0x3d152c8f,0x3d1d4c9d,0x3d286642,0x3d244c77,0x3d12d9b9,0x3d104dcb,0x3cb19932,0x3d01c626,0xb8980447, -0x3c99defe,0x3bd4bf87,0x3cc2d295,0x3d07aa38,0x3c532fb4,0x3ca4d0a6,0x3cd94f59,0x3c88e6ed,0x3cf65271,0x3cfcb99d,0x3cb16b3f,0xbb41316b,0x3d07bfa5,0x3c9005af,0x3cc7448c,0x3cc7b153,0x3d47d762,0x3d1320cd,0x3d278ee1,0x3d158480,0x3d1aeaac,0x3d18e596,0x3d2ed32e,0x3d2e424f,0x3d35a53d, -0x3d3bc7cb,0x3d76c290,0x3d85ca13,0x3d8ae003,0x3da7c282,0x3d9e3a62,0x3d481a49,0x3d0cc587,0x3c7aa1fa,0x3a89c0fd,0xba6f735b,0x3ca5f120,0x3c843058,0x3cb3d2ae,0x3c94eb05,0x3cfe7d88,0x3c953fb7,0x3cde9b3a,0x3cf7369a,0x3d2825dc,0x3c77eb4b,0x3d2ff7a2,0x3ce46551,0x3d0062c3,0x3cd8f598, -0x3ca30abf,0x3d01ba01,0x3cf3f384,0x3d2862ea,0x3d4011b7,0x3d29288a,0x3d354ce6,0x3d34374e,0x3d404f52,0x3d31dbc3,0x3d38e39a,0x3d39f667,0x3d8135ac,0x3da9532d,0x3db623bb,0x3de0f94e,0x3dc44790,0x3d3895af,0x3d0f5112,0xbcdc79a0,0xbd27f86b,0xbc018653,0x3ad9613c,0x3a5bdbbe,0x3c5eb22e, -0x3c69de55,0x3cda6849,0x3c61a813,0x3c693b5d,0x3c225c3c,0x3c69a299,0x3cd6e8ae,0x3cfaa72d,0x3cd86e20,0x3caca5ce,0x3c5d60ba,0x3ccb53e1,0x3d0b36fe,0x3ceaca0b,0x3d1a5862,0x3d1b85b0,0x3d02fac8,0x3d1afc26,0x3d1cead4,0x3d33c63a,0x3d1739ae,0x3d3240af,0x3d59fc0a,0x3dbd068b,0x3e0027ae, -0x3dfb50c7,0x3e2e4fe0,0x3e15725c,0x3d188c41,0xb90d09b4,0xbd2bf433,0xbd9e2469,0xbd1f1081,0xbc9625ec,0x3bf6c15f,0x3bed549e,0x3c534413,0x3c02ad60,0x3c5f14e3,0x3c996bf5,0x3c1cea6e,0x3c177bf9,0x3c7977aa,0x3cef724d,0x3c92977b,0x3c80c035,0x3c4ab773,0x3b856e8c,0x3d17f86f,0x3d0272a8, -0x3d182b74,0x3d80cb6c,0x3d341972,0x3d572b30,0x3d4965ea,0x3d5ae4e1,0x3d4bacea,0x3d3fbac9,0x3d2df57a,0x3db3a84d,0x3e05e2fa,0x3e0a5c47,0x3e4174b9,0x3e19c2d0,0x3ccb49dd,0xbc4322a3,0x3df5a7a9,0x3df0544c,0xbca1c848,0xbcd4ba0e,0xbca466e1,0xbcafe4d8,0x3b1ac0d9,0xb94bb846,0x3c9586e4, -0x3cc75c7a,0x3cece389,0x3c81d91a,0x3c6b375e,0x3cdc6a8a,0x3cac9997,0x3c95fa32,0x3cdf7cb3,0x3c8c4e44,0x3d3f0b7e,0x3d848b82,0xbb98f9dc,0xbd0127ca,0xbd9d13e8,0xbc691157,0xbc08f6ae,0xbdd30d67,0xbdafdc74,0xbd9f0eda,0xbd4d1970,0xbcc6e6b7,0xb6c91fd0,0x3d42a178,0x3c9e7add,0x3d270291, -0x3da6c46c,0x3de30cc2,0x3df26e2f,0x3cf75e72,0xbbac31a5,0x3d6f5eb6,0x3cf6d991,0x3d5dba87,0x3d064f6a,0x3cb99e53,0x3d0fc29e,0x3d08304e,0x3c9cae86,0x3c654454,0x3c479177,0x3d06fddd,0x3ca399c5,0x3c9690ca,0x3c371614,0x3cc5074e,0x3c6b1f59,0x3d32967e,0x3d8cdfda,0x3db46541,0x3df6f275, -0x3d90ba77,0x3d2e37fd,0x3d4fdd42,0x3d359c8c,0x3d059367,0x3d27582d,0x3ba780c6,0x3b89c04a,0x3c8e6d8e,0x3d1c6917,0x3d5616bd,0x3dcab607,0x3df1d062,0x3e022e15,0x3d8d06fb,0x3d41108d,0x3cde0604,0x3bcf2d56,0x3c6cde48,0x3c6833ee,0x3d47e57e,0x3c941c92,0x3c8accec,0x3b8950e1,0x3bb2d0c7, -0x3c8b6499,0x3d58c04d,0x3d037c74,0x3cb75740,0x3cb6dc69,0x3c4e63ac,0x3c5a0d0b,0x3c9d1b1e,0x3cd59128,0x3d072e60,0x3d15cad3,0x3db024eb,0x3de0b163,0x3e174545,0x3e07e21f,0x3de39e92,0x3d997f50,0x3d729a69,0x3d942525,0x3df5d7ad,0x3dfb9942,0x3dd58569,0x3d8294df,0x3db22506,0x3db26792, -0x3d3829eb,0xbd0a61e9,0x3cf0ee3a,0xbc7ffb4a,0x3ab3994c,0x3b138b34,0x3d52666c,0x3c8615d2,0x3b896f43,0x3c5e2692,0xb92b017c,0x3c4a278e,0x3d59588d,0x3c7ea1c7,0x3ca96938,0x3c9ee33d,0x3baaceb1,0x3be5b780,0x3c78e599,0x3d1ea373,0x3d1cbe45,0x3c9d2fe7,0x3da39833,0x3de33372,0x3e0302e9, -0x3e06721e,0x3de3dd34,0x3d9611b3,0x3d81fa10,0x3d55227d,0x3de818ed,0x3df22b7e,0x3e20ba2b,0x3e46772f,0x3dd27044,0x3e0d01a7,0x3bdad198,0x3c9ce073,0x3ca6eb10,0x3b6be353,0x3ce781aa,0x3c82e7fd,0x3c8ea120,0x3c6568f9,0x3c2da3f9,0x3cc10e59,0x3bbdd784,0x3c3e4fcd,0x3d1533b1,0x3ce03bb9, -0x3c7d79b2,0x3c0bf4fa,0x3c9c85b0,0x3c832616,0x3d0e47bf,0x3d94ec2a,0x3db21cf7,0x3d9e9b3b,0x3da0b259,0x3d95b4f3,0x3d6c358c,0x3d8b5df9,0x3d86a61d,0x3da3720a,0x3d3b444b,0x3d480c7e,0x3cdbac7f,0x3daeb2cf,0x3e1283b6,0x3e9bcf71,0x3e3d9eb9,0x3e514943,0x3d8c6b32,0xbda85518,0x3cfa183a, -0xbb452bd1,0x3c117610,0x3c812bd3,0x3d1508a7,0x3c7cb905,0x3c5416b9,0x3bbe4d49,0x3c924418,0x3ca1ada0,0x3cabbf6a,0x3c4d5394,0x3c60ed5b,0x3c2db1a5,0x3c97e30f,0x3cb66350,0x3be37d72,0x3ccf2280,0x3c501dfd,0x3a9c4bd0,0x3c3acca5,0x3cdb5f1c,0x3d498514,0x3d585901,0x3da736d1,0x3e0fecef, -0x3e099a7f,0x3dff3c9d,0x3e09b786,0x3e027b57,0x3e002f94,0x3e24f868,0x3e1c0198,0x3dd2dc78,0x3d919c62,0x3b26f65d,0x3c45f3e3,0x3cadfe05,0x3bd7f49e,0x3c2e4f5c,0x3c28b2b2,0x3c52ae25,0x3c877343,0x3c60f144,0x3c69112b,0x3c45c468,0x3c258abb,0x3cabe872,0x3cc65dee,0x3ca6a9de,0x3c8d246d, -0xb9219f94,0x3cd62d90,0x3d1c142e,0x3d110738,0x3d0dcf88,0x3d07a13e,0x3d06536a,0x3d34f51f,0x3d243f32,0x3cce9b3f,0xbc134c44,0xbb0a9db9,0x3cab575e,0x3d93a6b6,0x3d486dda,0x3d59789b,0x3d7fac6f,0x3db11b18,0x3d876ba0,0xbc603a14,0x3cd1ba00,0x3cbb71b0,0x3cfb4bc0,0x3d19350f,0x3cb71580, -0x3cac162f,0x3ca42911,0x3c664a20,0x3c0dfb08,0x3c096c41,0x3c1a488c,0x3c581cca,0x3c7b8807,0x3c35e847,0x3ba809ef,0x3be5f9ff,0x3c2b3f3a,0x3b5b3c6a,0x3c618118,0x39ecf625,0x3a698f78,0x3987135d,0x3b6dce5e,0x3b9c70a5,0x3c5bc028,0x3caf2b67,0x3cca773a,0x3d1b9bc8,0x3d430bae,0x3d944ebe, -0x3d523630,0x3d0dce5c,0x3cd75b34,0x3c9ef591,0x3c9ef08d,0x3d134e75,0xbaa527c5,0x3ca1c106,0x3c3d6d83,0x3b9c1edb,0x3c7de946,0x3cc9da61,0x3c8576ee,0x3c947a61,0x3c77c723,0x3d0284b2,0x3c4c71b7,0x3ceb8d94,0x3b8b5646,0x3c5e29dc,0x3c027199,0x3c3ed7ab,0xbb372d90,0x3cb25879,0x3c1d0b16, -0x3c167b7d,0x3b33b078,0x3b9d0ef9,0x3b7d58a5,0x3ac60ead,0x3c73b04f,0x3cd2060f,0x3d2551bd,0x3d3fc744,0x3d56ea7c,0x3d6ce0e5,0x3d38d056,0x3d20bff9,0x3d03a52c,0x3cdd2d53,0x3d1499d0,0x3d04dc7e,0xb9f81cdf,0x3ccb2ba1,0x3ccc273a,0x3ca119fb,0x3cca3acb,0xbb503791,0x3c86de8b,0x3c50123b, -0x3c412cf0,0x3c53d727,0x3cbae77d,0x3c9c4fc8,0x3d09238e,0x3d07df44,0x3c62cdcf,0x3d1103fe,0x3bedd850,0x3cc62474,0x3c9bd38b,0x3cae6e5f,0x3ca3e705,0x3c998931,0x3c93d088,0x3c92700c,0x3cb1f892,0x3ccc5be5,0x3cee4c93,0x3d1e3d1b,0x3d3d9a19,0x3d7ae630,0x3d6ab2ae,0x3d4a0126,0x3d39201e, -0x3d3abd6b,0x3cfe7e2a,0x3d1578d6,0x3d12bd0d,0x3c089f3b,0xbca810f1,0x3d126171,0x3ca0649a,0xbc624e50,0xbc93d130,0xbc8ee410,0xbc86977e,0xbc98af35,0xbcbfb143,0xbcc63e49,0x3cb8ea4a,0x3d225c51,0xbcb58d79,0x3c8d12a8,0x3d1baccd,0x3cf150c0,0x3cec4cf2,0x3cebe89c,0x3ce7ae1f,0x3ce3d9b7, -0x3cdd1057,0x3cd3e0f8,0x3cef9bdc,0x3d07af2f,0x3d15fa05,0x3d1f1fea,0x3d1d3c9a,0x3d257b10,0x3d19a4e6,0x3d13b975,0x3d11f0ff,0x3d08b70a,0x3d559d6b,0xbd6f3d84,0xbd23b694,0xbd5c2986,0xbd0c0840,0x3c583a60,0x3d656e9b,0xbd1c4f83,0x3b644110,0x3d72a630,0x3d822c97,0x3d89c2fa,0x3d744d54, -0x3d808e92,0x3d9d27d1,0x3d80ea89,0x3bc602fd,0xbd0301a6,0x3d867de4,0x3c83c98b,0xbcdb1b36,0xbd5887fe,0xbd2fa673,0xbd3f167c,0xbd3e05c2,0xbd426a9a,0xbd4032b5,0xbd38ee72,0xbd3aafb5,0xbd3e609c,0xbd400533,0xbd4bb735,0xbd4a3326,0xbd4d91e9,0xbd56b86b,0xbd4b4a91,0xbd2aa194,0xbd2d509c, -0xbd50545f,0xbd8b7f0c,0x3cadd923,0xbcfa5137,0x3c0e6ba8,0xbc911c28,0xbc7c1c20,0x3bc60b48,0xbc99d8e9,0xbbdf4c18,0x3aedcb01,0xbbceca80,0xbca05ef6,0x3b5753aa,0x3d301be7,0xbc9ee902,0xb8878540,0xbc825d2c,0x3ba4167e,0xbd71d24c,0xbd53d4f2,0xbd619c70,0xbd73c5df,0xbd6a4f09,0xbd6ccd66, -0xbd82594f,0xbd8475c0,0xbd8d898f,0xbd93a3a1,0xbda8e749,0xbdab8fbf,0xbdab10f6,0xbdbe76bc,0xbdb4df75,0xbd8c6979,0xbd750443,0xbd4bfd69,0xbd52ee67,0xbc94ecef,0xbd46ead4,0xbc22976a,0xbc688da2,0x3bd9b257,0xbc9e42aa,0x3bc2c7d0,0xbcd70629,0x3b627694,0xbd250297,0x3c3a27c4,0xbc721e05, -0x3b116771,0xbc5a0b77,0xbcb8c868,0xbb904258,0xbc8023bf,0xbd19906d,0xbd83d94e,0xbd6f5c68,0xbd934d7b,0xbd89e8d4,0xbd8a3b6f,0xbd881b58,0xbd8e19a9,0xbd9a6b23,0xbdb1e036,0xbdc8c498,0xbdddf9b5,0xbdcc7563,0xbdeef821,0xbdc3cc8d,0xbd5b515a,0xbd54e8eb,0xbd6280cc,0xbd8c1bf5,0xbd57165a, -0xbd34ff04,0xbcb68770,0xbc0ba3f4,0x3bde5867,0xbbf78932,0x3b971af0,0x3b42bd52,0x3c0003eb,0x3b418247,0x3c065998,0xb79a1211,0x3c7a7383,0x3b084d98,0xbc84de02,0xbc577d0e,0xbc5b0d08,0xbce576bf,0xbd7d94f9,0xbd63e9b3,0xbd9c6cfb,0xbd9ce48f,0xbdad64b9,0xbdb03fae,0xbdb8aaf4,0xbdd1f7c6, -0xbdf24207,0xbe11db79,0xbe212617,0xbe1280ae,0xbe2f8fa7,0xbe109dbb,0xbdb676ae,0xbd8f2415,0xbd04b4fc,0xbd70fd59,0xbd833966,0xbd6fca2a,0xbd04d8e0,0xbcb4d1b4,0xbb719fd7,0x3b2613b5,0x3c1e5014,0x3c3942b9,0x3b2916f6,0x3c2f8eb7,0x3c493269,0x3ca5c96e,0x3c4327b8,0x3b24e0e0,0xbc25fb47, -0xbca40224,0x3bed28aa,0xbd331d28,0xbd82bf3c,0xbd90669d,0xbdb95cc5,0xbdb16a54,0xbdb7db58,0xbdab9362,0xbdbc91b7,0xbdd8be59,0xbdfe6a4f,0xbe1ef4d5,0xbe2f26a5,0xbe06c9c9,0xbe36d43c,0xbdf8434c,0xbd271f9c,0xbd1e6974,0xbd5b1435,0xbdab3462,0x3b886649,0xbcd75d0b,0xbc5c60ef,0x3a849db8, -0xbc14e689,0x3c398fb1,0x3b8d7748,0x3bdb69e7,0x3c82ab62,0x3c2f3370,0x3c6bfdcd,0x3cac30f9,0x3b963ae7,0xbb76d0b9,0x3c2bca85,0xbcb9427a,0xbce099b3,0xbd6bf1a7,0xbd736c6c,0xbd3ee389,0xbd8fa9b8,0xbd3d82f1,0xbd61866c,0xbd180372,0xbdcd5748,0xbe03c0ee,0xbe322a64,0xbe08af82,0xbe0edc0e, -0xbe0aa528,0xbe4f8ac4,0xbe483311,0xbe1c580e,0xbdc9da98,0x3d952a5d,0x3d90a193,0x3d82cd97,0x3c8ce100,0x3d366dee,0x3bc44a42,0x3ca7ec01,0x3cb85795,0x3c853fa0,0x3ca21887,0x3c1717ae,0x3c013517,0x3c02e005,0x3cb42d71,0x3bc6a324,0xbc0f0446,0xbc324f84,0xbcabbc06,0x3ca01dfa,0xbca31a9c, -0xbdd4cc1b,0xbdb4e413,0xbdd72f0c,0xbd850c4f,0xbd402be2,0xbcda2d65,0xbc7ae62b,0xbb8f03c6,0xbb176d75,0xbcab5810,0xbcd9da4e,0x3c84123a,0xbd9a42e8,0xbd96feef,0xbbcc12fd,0x3d37866a,0x3ce512c5,0x3cf62951,0x3d40cb6e,0x3d0bcbe3,0x3ce2c5db,0x3cd6ee3e,0x3cd88ae5,0x3d2df65b,0x3c53f442, -0x3b761f3f,0x3bde557d,0xb95b0c29,0x3c2d918f,0x3d2a9e0a,0x39700b49,0x3ae3cc6b,0xba500576,0xbbd79a1e,0xbc6da672,0xbd2a6e91,0xbd20fb68,0xbd107e86,0xbd435471,0xbd4106be,0xbd8e200f,0xbdbf4107,0xbdc4cfe5,0xbd99d2a5,0xbd5451be,0xbd292d10,0xbd944484,0xbdbc02f1,0xbe156c8b,0xbdca97a0, -0xbd0a68ab,0x3c9d3118,0xbc44b86e,0xbc32c7ec,0x3d689bcd,0xb91a010a,0x3c943ba8,0x3cbedb77,0x3cb387a6,0x3d1d908f,0x3c1aa535,0xbad1c443,0x3c22cf30,0xbb85fc46,0x3c1ba9c1,0x3d1fd2f8,0x3c42b1e2,0x3c08549e,0x3c40f5ec,0x3c341b0c,0x3c3391fa,0x39658456,0xbca9144d,0xbcc75d8c,0xbd0aa8a4, -0xbd9477e1,0xbdcbc9d2,0xbe011628,0xbe0ba051,0xbdefb848,0xbdd9508c,0xbd8e4b3a,0xbd9721b5,0xbdc26bc6,0xbe1eaf44,0xbe15c616,0xbe038eab,0xbcc02879,0xbd305b5d,0x3d1961e7,0x3c67a793,0x3b51cfa8,0x3cc6145e,0xb9dbdd8b,0x3c529aa1,0x3c90293c,0x3bc14c4a,0x3b7f178e,0x3c54a3bd,0xbb91e3c0, -0x3bc8d8d5,0x3c6d3c25,0x3cbab4c0,0x3cf8aaf3,0x3cc3b001,0x3c1888b0,0x3ca95ff8,0xbc041214,0xbce1e2ff,0xbd1f3769,0xbd1bd74c,0xbd0b7a31,0xbc703c8c,0x3c123a67,0x3c85cd05,0x3cdc62c4,0x3d2f300b,0x3d3550ec,0x3c33f814,0xbbdfaf0d,0xbdbbb699,0xbe0cb413,0xbe36448a,0xbd99f78c,0xbe1f9d91, -0xbbc72116,0x3dd23136,0xbc160ab1,0x3cac9b53,0x3c857ac7,0x3ca9ac56,0x3c75e6c2,0x3c7d49bb,0x3b7d7b8b,0x3a29a7f4,0x3c017bba,0x3c792b50,0x3c1adf4d,0x3c369c96,0x3b0db739,0xbbb05115,0xba4baddc,0x36d8c971,0x3c524c7b,0xb9c8245c,0x3cc328c4,0xbc986262,0xbbc38ad0,0xbca47619,0xbd7e6629, -0xbd3759c5,0xbd419c42,0xbda37568,0xbdaebd35,0xbdb1ffde,0xbdc72852,0xbe046d61,0xbdfc9ced,0xbdccd93f,0xbdf277cc,0xbd2d8f3a,0xbcb4e02c,0x3d28f28a,0x3cbf6570,0x3c672530,0x3c807b25,0x3b4af630,0x3c78818c,0xbba35228,0xba996ffa,0xba24dd67,0x3a9b879a,0xbb20fd49,0x3b3fb7e6,0x3c012c05, -0x3c1ac03e,0x3aa2fdc4,0xba8f107a,0x3ccb094a,0xbb46503b,0xbc8b855b,0xbc8e04f7,0xbcee078a,0xbd01d26b,0xbcde6d49,0xbc1237b4,0xbbd78c6f,0xbb7ca898,0x3bb3681d,0xbc2b3b64,0xbd0b6307,0xbd87b70b,0xbd9e5f27,0xbd9d39c4,0xbd917697,0xbd382524,0xbd419647,0x3d2278b5,0x3c48d4dc,0x3c864695, -0x3c8304f2,0xbb9c8115,0x3c8a4044,0x3c720610,0x3c3bd5b9,0x3b187f38,0x3c130415,0x3b7638f6,0x3c6343f3,0x3af7b58a,0x3b17e83d,0x3b989cca,0x3c04e1ac,0x3b89296c,0xbb77e449,0x3c316f86,0xbc93ed98,0xbc4b0222,0xbc7d7ee2,0xbcdf060a,0xbcd2752b,0xbc64fe77,0xbc85404e,0xbc5b0fb4,0xbc810282, -0xbcd3c0ae,0xbd174902,0xbd59a295,0xbd6f0262,0xbd568c57,0xbd71a755,0xbcba9344,0xbcc5e1af,0xbcd88ed6,0x3c81d6ce,0x39cc920c,0x3cc42722,0x3cfd2f94,0x3ca27c10,0x3af21bfa,0x3c1c9bba,0xbaf07b39,0x3c366e87,0xbcd207e3,0x3b7c3b24,0xbc5d6d74,0x3c69554e,0xbc00e0e7,0xbbabf9f6,0xbbcb97c1, -0x3bfd7acc,0xbc9de6ed,0xbc66e3a1,0xbc1296d7,0xbc0d6cf1,0xbb756941,0xbba1e8d6,0xbc414764,0xbc92ff12,0xbcb8e264,0xbcd59695,0xbcf8df88,0xbd02b679,0xbd06747c,0xbd02671e,0xbd131ccc,0xbd334af4,0xbd098ddc,0xbcb5bc78,0xbcf806cd,0x3d08a6b8,0xbcb24e99,0xbcc6a813,0xbca05ef0,0xbd117d3b, -0x3b287461,0xbccf7ed2,0xba312f64,0x3b92240c,0x3c2edcf0,0xbc02f801,0x3aef08c7,0xbc245a04,0xbb8a0333,0x3c965b29,0xbc57fe41,0x3ce834cd,0xbc2865f8,0xbbddbb70,0xbc258024,0xbc22bb3a,0xbc4f3c43,0xbc4d1c31,0xbc204886,0xbc316a3c,0xbc67f3ca,0xbc93031c,0xbcb6fe24,0xbcde28f7,0xbd0c901c, -0xbd046b58,0xbcd5036d,0xbcac7e07,0xbcc02429,0xbc9f6b1e,0xbce72b1e,0xbbb052c1,0x3d07b3cb,0x3d6ac0ec,0xbbbf62dd,0x3caf0a24,0x3d6773f8,0x3d8245c1,0x3d6acfd7,0x3d55aeb3,0x3d67eb9f,0x3d87bdd1,0x3d8aed2e,0x3c6e2386,0xbc899126,0x3d5b9477,0x3c9fa128,0xbc47f398,0xbcc53558,0xbc9737d5, -0xbc91753d,0xbc86188a,0xbc6b0e07,0xbc5d4b15,0xbc617be6,0xbc80c162,0xbc8f505c,0xbc9852ad,0xbc9f96b0,0xbc9f8ef0,0xbca2f265,0xbc9ea657,0xbca85fcb,0xbcb448f0,0xbcb2cdb7,0xbca67dfa,0x3cd3d862,0x3cae6b3c,0x3d3822aa,0x3b781d60,0xbd3d4aa7,0xbd7e2992,0x3c27d1ed,0xbd05e093,0xbd905a8d, -0xbd95e385,0xbd98010f,0xbd844861,0xbd888336,0xbd9fd385,0xbd869196,0xbd1168dd,0x39903b1d,0xbd8c076a,0xbd3a19f7,0xbbc49bc2,0x3d2106b1,0x3cd28c01,0x3ce7f9f3,0x3ce876b7,0x3ceb2fde,0x3ce34282,0x3cd395d0,0x3cca15bc,0x3cc2f1be,0x3cbb05bb,0x3ccc0cf5,0x3cc96d90,0x3cb020d7,0x3cb8499e, -0x3cb2ebc3,0x3ca0f9eb,0x3cba4d06,0x3cbe4050,0x3ce2a605,0xbdace50b,0xbb1a2e43,0xbd1fb45e,0xbb92ed9d,0xbc0590ec,0xbc81ab52,0x3c0cc1f0,0xbc7ba552,0xbc888829,0xbc69b157,0x3bafc963,0xbc840620,0xbd48d104,0x3b766073,0xbcc02391,0xbba44f4f,0xbd150b0e,0x3cf97c3a,0x3d1137e5,0x3d0bd42e, -0x3d2041bf,0x3d0baac8,0x3d0a4223,0x3d19071b,0x3d0c1ea5,0x3d0f39fc,0x3d0b7c8d,0x3d2607cb,0x3d20175b,0x3ce4a8b4,0x3cf45998,0x3cd1ce44,0x3c7a3f97,0x3c88ba0d,0x3cfcbd5f,0x3cd6292a,0xbcf96c9c,0x3c80d934,0xbc7731fa,0x3aa6e6d1,0xbc8d8bf0,0x3ca8f5f3,0xbc85f17a,0x3cc62be2,0xbc9df866, -0x3d183169,0xbbe037b0,0x3c069bfc,0xb9200727,0x3c52eb38,0x3b588b11,0xbc5809a5,0xbc61b3a4,0x3ca47ddb,0x3d5ca1cc,0x3d22c5c2,0x3d585ca9,0x3d35c01a,0x3d2e2492,0x3d1ee183,0x3d07de1a,0x3cfaf494,0x3cd5bb8a,0x3d1e5846,0x3d0ae86c,0x3bebb7d0,0x3c590f3f,0x3c07f182,0x3b2f8cf8,0x3c809101, -0x3d0fc45f,0x3c61949b,0xbd897711,0xbcbeefce,0xbc5e9993,0xbc1c6909,0xb9e6c5c2,0x3c80385c,0x3c06e90e,0x3c1b854c,0x3c020422,0x3c94d2a1,0x3be5ce51,0x3cd3aa6c,0x3c0f36a1,0x3c9cab81,0x3c00f9c2,0x3b87351d,0xbc3e3c07,0x3c005847,0x3d724116,0x3d2afac2,0x3d834290,0x3d49fb69,0x3d53bb35, -0x3d5c968b,0x3d3988b2,0x3d3fa556,0x3d337f26,0x3d6f4afb,0x3d4ec01e,0x3c6df6f3,0x3cb1cc91,0x3c0c427b,0xbb665b13,0x3ba4bd2d,0x3d509e71,0x3d5d7ecc,0xbcebe70f,0x3c192bb6,0x3c75e19c,0x3c445f0b,0x3c32048b,0x3c6b2209,0x3bfef60f,0x3c6801bf,0x3cd15025,0x3c4f7ce2,0x3cb3b5f3,0x3cbd4425, -0x3cea4c35,0x3cb85acd,0xbae9f83c,0x3cd2acd4,0xbd0c4d30,0x3ced3c7c,0x3d7c6e9b,0x3d6b72b4,0x3d987348,0x3d80c885,0x3d6b45fb,0x3d4a051b,0x3d170cd7,0x3d131f44,0x3cafc075,0x3d6676ad,0x3d10a78d,0xbcf17b70,0xbc8c0edf,0xbcc5d4db,0xbc1674f9,0x3ce93884,0x3d701cee,0x3d65ebb9,0xbcb9dc00, -0xbd1c5f05,0xbc7caf39,0xbcde62b9,0x3bfb2977,0x3bfd262b,0x3cdf119b,0x3cac3d5f,0x3c262c44,0x3c846675,0x3cb79afe,0x3c917a46,0x3c5abb7d,0x3c9fe589,0xbc24f084,0x3c8f4d4c,0xbbe08ff9,0x3cbe7945,0x3d6c9aea,0x3d10a06f,0x3cdd7d43,0xbb6c18d1,0xbbf82272,0xbcdad91f,0xbc17cf00,0xbc300e2e, -0xb9e9b9ab,0xbbb5795a,0x3c6807df,0x3d5452cf,0x3d2670e6,0x3c474262,0xbbda2dea,0x3cfaab1b,0x3d8d1458,0x3da51032,0x3d894211,0x3dc3050e,0x3d13debc,0x3cf566e8,0x3c630dd0,0x3ca61eca,0x3c9ede36,0x3c4ddad9,0x3be025c0,0x3c3bacb4,0x3c37eadd,0x3cd799c7,0x3c1e8256,0x3c93b393,0xbbc3ab81, -0xbc3aa6a9,0xbd575522,0xbce793e1,0x3d566679,0x3d577be1,0x3d9ba783,0x3d8eb6e9,0x3d6c4050,0x3bb23d87,0xbbe48b74,0xbd2553f7,0xbd858fa9,0xbd2e5c35,0xbd7cf5a6,0xbdae60c8,0xbdc90e4a,0xbceb9fee,0x3db0f372,0x3d47ce88,0x3ba6e628,0x3c764f87,0x3c159da8,0x3c4b3487,0x3cca557c,0x3cf0df69, -0x3d0d9d79,0x3d596fa6,0x3c7e2132,0x3c0f3d3f,0x3c1b1ec8,0x3bf42258,0x3c7683c2,0x3cd2240e,0x3ca668d1,0x3c070e78,0xbc3efa2d,0xb94f29c4,0xbb9a1f9a,0x3c5717e6,0x3b95dfd4,0xbc48c4b4,0xbb5df537,0x3b82e09f,0x3bd9fdf6,0xbb0de3b3,0xbc95e96d,0xbd00a63e,0xbcd85efa,0x3d02b210,0x3da05e01, -0x3da61781,0x3d626e01,0x3d67b675,0x3db2474a,0x3cfec617,0xbc7ccb29,0xbd0df4dc,0xbd26d233,0xbcb600ef,0xbc12da43,0x3cbc130d,0x3ce35e94,0x3d1e5e64,0x3c605ae8,0x3b70d4df,0x3c887f11,0x3bb3acdf,0x3c6f51d5,0x3ccf5988,0x3ce4b763,0x3cca5c40,0x3bf3b1f0,0x3c8c566a,0x3bd661b9,0x3aa9873e, -0xbb3066ef,0xbcb6ed55,0xbc91bd09,0xbc5b16f2,0xbbd6ee97,0x3c328d11,0x3ce1fd70,0x3d31fd86,0x3da3a465,0x3dd0cd0a,0x3e15dd6f,0x3e205b61,0x3e111a02,0x3dd5c033,0x3d6e0f5e,0x3c0af316,0xbb6341e8,0xbd190337,0xbbde07b2,0x3bfabc72,0x3bac90c8,0x3ca38bfc,0x3c65ff9f,0x3b8ab5ea,0x3c662bbb, -0x3c15ae35,0x3c211610,0x3c26df4d,0x3c1823b8,0x3c83725d,0x3c5b4da7,0x3c82b63a,0x3bdb6c50,0x3b6e4316,0xbc466341,0x3bcb6f80,0x3c6545e6,0x3cceb14a,0x3ce70815,0x3d033ec3,0x3c94dc3f,0xbaac0c69,0x3c74bbf7,0x3cebb73a,0x3cb73e45,0x3c0aca93,0xba2b72e5,0x3c501184,0x3cb9577e,0x3d17e7da, -0x3da71a4d,0x3bb5ca3d,0x3d6c7aa2,0xbcf1bf48,0xbdab41f8,0xbbe4b2c1,0xbc7c2af1,0xbb17bab1,0x3ab66c39,0x3cbc7b4b,0x3bd47b13,0x3c20f6c5,0x3bdce80f,0x3c27d382,0x3c2648a7,0x3c9ce791,0x3ba03c55,0x3b86f1ae,0xba30fdfd,0xbc03ffdf,0xbc20698b,0xbc8d629f,0xbb5ff3ca,0xbc76aeea,0xbc0d33b4, -0xbbe7bd00,0x3bb32084,0x3d010233,0x3d22a3aa,0x3d0f2ef3,0x3d3a86b0,0x3cffcb71,0x3d31a4dd,0x3d8e1bf7,0x3d84e2c3,0x3d5bce77,0x3d29c3aa,0x3cf706ef,0x3b9dc514,0xbc5d0cc7,0xbcf6f09e,0xbc4b2a14,0xbc515bb2,0xbba962eb,0x3b40b757,0x3ad6ee60,0x3c20dfb4,0xb9cafabd,0x3c976aaa,0x3c084016, -0x3c7b931a,0x3ca328ff,0x3c15cd62,0xbaa5f8bf,0x3acf5780,0x39cdbbcf,0xbc3d1857,0xbbc5b146,0x3c760ce9,0x3ccce3ad,0x3cdc5f87,0x3cfad110,0x3cfd0b0d,0x3cc8e2b3,0x3ca178a0,0x3cb31534,0x3c9adffd,0x3d30b6ad,0x3d5364f8,0x3d96242d,0x3d309d9c,0x3cf63d57,0x3d0d367d,0x3c5fed70,0x3d1f1761, -0xbc88e1cc,0xbbd8634b,0xbb65e71d,0xbbabc4f7,0x3cb109c3,0x3bef8280,0x3c866959,0x3bf3084c,0x3c80861e,0x3b5c8ce4,0x3c2ff2d2,0xba96324e,0x3c12d74d,0x3bf00d4a,0x3bbaa4a3,0xbaf24d58,0xb8a49530,0x3bf31f2b,0xbbc2b1db,0x3cf58f07,0x3c9a49e9,0x3ca6072a,0x3c95c7b0,0x3c964687,0x3ca73abd, -0x3c9f4a7c,0x3c992c41,0x3c620c90,0x3cde2381,0x3d1a93ee,0x3d762488,0x3d2bea68,0x3cefa945,0x3cd2ff6d,0x3c87ae0e,0x3ced44a2,0x3d07d796,0xbc27a50a,0x3c00e7f8,0xbc3900bc,0xbc5a76d4,0xbbb7aedb,0x3c46835d,0x3ab94ede,0x3c190c23,0xbc87f77b,0x3c913fa1,0xbb54c916,0x3b63a649,0xbc5ccb1b, -0x3bcec12b,0x3c19af61,0x3c246e47,0xbc09d216,0x3ca16adb,0x3cb74a42,0x3bdfd135,0x3bd09cfe,0x3aae0b85,0x3af362c3,0xbae80858,0x3b8f4fb1,0x3c2f31cc,0x3c96a278,0x3cda11f1,0x3cfe9280,0x3d223c24,0x3d0eadae,0x3d08a159,0x3cd2fe88,0x3cc6a60b,0x3c39bbed,0x3c15296d,0xbd3beed3,0xbaf32281, -0xbc1ecf9d,0xbc6943cb,0xbb80fd33,0xbcdf255b,0xbb995660,0xbcaaea9c,0xbc9b98f6,0xbcc339bf,0xbb744e32,0xbc09b2fe,0xbba90d29,0xbc3238f6,0xbcd756aa,0x39a06c94,0xbceebdb5,0x3c5fc7a1,0x3c07145c,0x3c5efc90,0x3c61986b,0x3c5654d6,0x3c377565,0x3c0426bb,0x3cabefae,0x3ce2c301,0x3d0d132f, -0x3d2d0a9a,0x3d470f6b,0x3d6e7761,0x3d45bd3c,0x3d16a875,0x3d01da7a,0x3ccf6518,0x3cc6ad5d,0x3cf45b83,0xba3f7e51,0xbcef1acc,0xbd04e760,0x3b5c0c86,0xbcab1139,0xbd1897fa,0xbd2cd3a2,0xbd1b8e7b,0xbd0a5992,0xbd1a8587,0xbd3e7884,0xbd435420,0xbc95fbd5,0x3c3bdf0d,0xbcefef87,0xbc9be64f, -0x3bd77520,0x3d016a01,0x3cc98dfa,0x3cc06c72,0x3cb569cc,0x3cb579c1,0x3cb5afc6,0x3cab971f,0x3cb505b4,0x3cb6cee3,0x3cc3e10e,0x3ccc3e7d,0x3ccc44c8,0x3cdd3a49,0x3cd411ea,0x3ccedb97,0x3ccc642a,0x3cc79bab,0x3ce51f74,0xbc9d649a,0xbc8ba358,0xbd045aa1,0x3c8ee4bd,0x3d3ec13f,0x3d12914d, -0x3c0df9c2,0x3d18f0d8,0x3d4d4dab,0x3d46d9b0,0x3d3e8554,0x3d1d0bd9,0x3d228794,0x3d3fb4c1,0x3d1ec6dd,0x3d24929d,0x3c852570,0x3d1434e3,0x3d2d3f18,0x3c8ab1de,0xbd045236,0xbca2a936,0xbcae3503,0xbcb27a74,0xbcbcb027,0xbcb96fd3,0xbca8f6b6,0xbcb1449a,0xbcb8711a,0xbcc5c5fc,0xbcb9f417, -0xbcb0a946,0xbccb27f8,0xbcab56a9,0xbca736c7,0xbca17275,0xbc99629c,0xbc125e6a,0xbbde5215,0x3d5eca13,0x3a4431a3,0x3cfa667d,0x3c527671,0x3ca61c00,0x3c94bd7f,0xbbbe07ea,0x3cadc98a,0x3ca2ed58,0x3ccb0ea6,0x3b9f7ba0,0x3c9cf616,0x3d33ddf2,0x3c150799,0x3ccad9e0,0x3bde5f06,0x3d134bcf, -0xbc3d89d7,0xbce6e4a5,0xbcc7ee4e,0xbced1e49,0xbce3754d,0xbce615b3,0xbce1a00a,0xbcfc3efa,0xbd09c13e,0xbd1be4d9,0xbd01a2ed,0xbcf98fa4,0xbd2c9edd,0xbce48e06,0xbc97f1d7,0xbbbd4481,0x3b1b2f11,0xbb882881,0x3b2b304b,0x3d2052f0,0x3bf5188b,0x3d07a407,0x3cafff8b,0x3d124aa1,0x3b510366, -0x3cd37290,0xbc53b634,0x3d28b924,0xbc5f7a18,0x3c9c57af,0x3c61f337,0x3caa28de,0x3c0cef6f,0x3c2c0e9a,0x3c71152b,0x3c9b2c04,0xbc030f9c,0xbd251a7d,0xbcd8304e,0xbd1902f8,0xbd0f143d,0xbd130f86,0xbce0bcdc,0xbd10c23e,0xbd1a192b,0xbd517d26,0xbd0a5c98,0xbd0899d0,0xbd580a77,0xbce530aa, -0xbcaac839,0xbb439ade,0x3bacafbe,0x3ceba88b,0x3cce8611,0x3d4a3bf4,0x3cdd2d89,0x3d0a3852,0x3cb6512a,0x3c940d7f,0x3ca2058a,0x3b94be25,0x3baa5905,0x3c546f5a,0x3b2387d9,0x3cb24df0,0xba5119a7,0x3cd0d7cf,0x3c1682e0,0x3bd54be3,0x3b6db13d,0x3ca76e46,0x3c2b2976,0xbd3333e2,0xbce24705, -0xbd1f92c1,0xbd2008ab,0xbd30e9a0,0xbce9c4a4,0xbd27e3e7,0xbd3fad58,0xbd83ed11,0xbd26247e,0xbd2b11a6,0xbd9dc909,0xbd031891,0xbc3b1106,0x3d17ea73,0x3d61f3ff,0x3d1d7a76,0x3cc13f40,0x3d6963d3,0x3d1a5376,0x3d1cc6a0,0x3d05c5ff,0x3ce10aba,0x3cb019bc,0x3c148950,0x3c3736fe,0x3bafc801, -0x3c2123d8,0x3c3971ab,0x3c9983d5,0x3c3c7d27,0x3c38940c,0x3c2b51fc,0xbcd37160,0x3d0643e0,0xbc1c6b5c,0xbd2ddcf9,0xbd09dcd3,0xbd385692,0xbd366432,0xbd2ab524,0xbccf09d9,0xbd29b100,0xbd539293,0xbd9b90d8,0xbd286355,0xbd0cf8c1,0xbd90d740,0xbcd494dc,0xbc4d223d,0x3c827757,0x3d4e62f3, -0xbda9dfd6,0xbd3ac0a4,0x3d68b6b0,0x3cee80da,0x3c6e3961,0x3ca96aed,0x3b93fc80,0x3b637423,0x3ccf5021,0x3ce4be78,0x3c2c402c,0x3cb6ba1a,0x3c9c3f52,0x3c22e60d,0x3c8cc7cf,0x3c1bbdb7,0x3cc58444,0xbc2e299d,0x3c3296e9,0xbb44acaa,0xbcd212d0,0xbba9ad66,0xbac9a9d9,0x3cffcef9,0x3cae285f, -0x3c537473,0xbcc54114,0xbcf22ffc,0xbd27ddf3,0xbd129015,0xbd771936,0xbd9e1266,0xbd7ab9dc,0xbd9443be,0xbd2f3a16,0xbdb2b700,0xbc6d9f35,0x3c93e6fa,0x3dbf4c08,0x3c2f1e3b,0x3d8ce3da,0x3c99c7fe,0x3cc5be79,0x3d3a9c78,0x3c7e0cb5,0x3c65b9af,0x3b9d746e,0x3bff8996,0x3c556bc3,0x3c8de9ff, -0x3c53dc04,0x3b3095c5,0x3b6e8496,0xbbd34ea4,0x3c8ae341,0x3b7a03a7,0xbce73863,0xbc89d5c4,0xbd769114,0xbd168454,0xbc827c02,0x3c30914d,0x3c01b3b7,0xbc029c2c,0xbcf1ef1f,0xbbe50b2a,0xb9940d65,0xbd492bd3,0xbc651c42,0x3ac60c66,0x3d5fd576,0x3d013559,0x3ad451c3,0x3c2bf10b,0xbc650097, -0x3ba28cd4,0x3ba6f578,0x3cc01ff5,0x3d00099c,0x3d36ba72,0x3c4dad9d,0xbb628f1e,0x3bab5f0f,0xbb13a28d,0x3be0756f,0x3bfb5132,0x3cba288f,0x3cb6c31f,0xbacfde04,0x3b2a2e48,0xbb03408c,0xbce7123a,0xbcf25d39,0xbcd5beec,0xbd2ac85a,0xbd8760dc,0xbd9c7551,0xbd50f4c2,0xbd4edb8f,0xbd1921d8, -0xbd2b007e,0xbd178ffd,0xbceb5ea5,0xbb2594ff,0x3d0774cf,0x3d0b4a90,0x3d567c87,0x3c8d9582,0x3cf66be6,0x3c8a729e,0xbbde3024,0x3c40cc18,0xbac9c899,0x3ce6ef36,0x3cda4da2,0x3ccd00db,0x3c026645,0xbb3ceffc,0x3c70401c,0x398a0991,0x3c5dcec2,0x3b2225dc,0x3cb2f1d4,0x3d00ed99,0xbb857da7, -0xbc218361,0xb98597af,0xbb873ad4,0xbd327319,0xbce17cff,0xbc924c73,0xbcf06ebb,0xbcdcd0b4,0xbbb99def,0x3c821714,0x3d3d5911,0x3d7e1ff6,0x3d878207,0x3d620448,0x3d09c78b,0x3d46553e,0x3d4461f5,0x3dad13a5,0x3d3bde59,0x3d71c28a,0x3d317d1e,0x3cbf5006,0x3c5d26d6,0x3ca776ed,0x3c1b66d2, -0x3b4e9c44,0x3c746ee0,0x3c8f1e3d,0x3ca1e5ba,0x3cb2f899,0x3c704f20,0x3c829aa6,0x3a52bb18,0x3c9bb443,0x3c8f31aa,0xbbca4f42,0xbb8cb763,0xba4ee324,0xbc9c0f30,0xbc6b428d,0xbb395eeb,0x3b0d4e1d,0x3cce45f4,0x3d543462,0x3db83c7a,0x3dbec7b5,0x3de2deb4,0x3e152184,0x3e10fd2b,0x3defdc1c, -0x3d0f27cd,0x3cf32d39,0x3bdbf611,0x3d1a9b8f,0x3d6a6d07,0x3d5e1171,0x3d8b6195,0x3d41d570,0x3cc5d97c,0x3c97e0fb,0x3cdb3731,0x3d12c778,0x3ce0b3fe,0x3c89cba7,0x3b852d10,0x3c19bffa,0x3b184616,0x3b989e23,0x3c2c6350,0x3b8f582f,0xba8c74ea,0xbb6a560c,0x3ad008d7,0x3b87f1a9,0x3aeb02ff, -0xbb0de491,0x3b8425f8,0x3cad9648,0x3cfed3c0,0x3d32d2a8,0x3d8cabda,0x3da4ac47,0x3da0c674,0x3d9a7432,0x3d734e3b,0x3d1c4e2f,0x3cd95b6b,0xbbb6b635,0x3902f474,0x3ceb1170,0x3d7ffecd,0x3cc85c31,0x3d2cd720,0x3d01ab3f,0x3caad3cd,0x3c6cdb0e,0x3c23db78,0x3b9e044b,0x3c08328b,0x3b97bd89, -0x3c701ca4,0xbb3aafb3,0x3c564bd4,0x3c40459d,0x3c91503b,0x3c2c1691,0x3c5f053a,0x3c4bfd14,0x3c280021,0x3bc8b403,0xbb4aca7d,0xbb42ece8,0x3a09a92b,0x3c400816,0x3d1169f6,0x3d3cd9ef,0x3d25df36,0x3ce4209d,0x3cabffe2,0x3cacbdc6,0x3ce85dd1,0x3caa328e,0xbc4263ae,0xbcc6c51e,0xbcb90af4, -0x3ae4581c,0x3c4d8daf,0xbbdf00b1,0x3cd2e576,0x3cf1b5de,0x3cbaf3b5,0x3cc43743,0x3bb6d8d6,0x3c7b1939,0x3c03fed3,0x3c3ff9e3,0x3bac3e80,0x3c46a322,0x3bcdc7f0,0x3c33f5ac,0x3be3dfd4,0x3bddc0d5,0x3be53cfd,0x3c9ecb9f,0x3cac5cac,0x3c8c9e48,0x3cc61632,0x39e91059,0x3b88771f,0xb977f01b, -0x3c38a7a3,0x3c523f14,0x3be673c6,0x3c1072e5,0x3c110d39,0x3c40a36f,0x3c85df56,0x3c6a92fe,0x3a572ff3,0x3b3c8630,0x3adf10c7,0xbaf25709,0x3a88d7c5,0xba8bc689,0x3b65013d,0x3cf973a9,0x3c41187b,0x3cc164f3,0x3cb331e6,0x3c7f84c2,0x3b874036,0x3c678f73,0x3c51cc33,0x3d07aff3,0x3c54de9b, -0x3c22ef18,0x3c2ce609,0x3c790c76,0x3c553dc2,0x3c2e8903,0x3c5d5d86,0x3cdefcce,0x3ca658c7,0x3bbd781d,0x3c2294ae,0xb944aa00,0x3aaf5c78,0x3aafcf7a,0x3c1c5942,0x3c814683,0x3cb25bf0,0x3ce97d0f,0x3cb1f879,0x3c9b0e6e,0x3c8e3f33,0x3c5b72bb,0x3c39468c,0x3ba9364f,0x3c1dd730,0x3c1ce76b, -0x3bbb57ce,0x3cffbb58,0x3bcb2fc5,0x3c539841,0x3c336322,0x3c11577d,0x3c104da2,0x3b5d0753,0x3c74282f,0x3c80a058,0x3cc6d860,0x3cb50ad1,0x3ce543dd,0x3cf57857,0x3d019125,0x3cf7aa80,0x3cb5d939,0x3cae6c58,0x3be862a8,0x3c5de3f8,0x3c840d0b,0x3ca8d32e,0x3cc247fe,0x3cc458f0,0x3cb768bd, -0x3c8b8f61,0x3c3e4b0a,0x3bf569c2,0x3c0a343e,0x3be7a2e7,0x3ba95cd3,0x3bcb1536,0x3bd14597,0x3bed3590,0x3bef3b9b,0x3ac7bc79,0xb9c6209d,0x3ce3e6f7,0x3d1def34,0x3cc29643,0x3cd33dff,0x3d19852c,0x3cf1136e,0x3d015457,0x3cf147eb,0x3cdaa694,0x3ce3a6d8,0x3cf421f0,0x3cfb77dd,0x3d190846, -0x3cb37e0a,0x3cb446ae,0x3d1d0f97,0x3cec91d5,0x3adb7e97,0x3b81f482,0x3b6cf560,0x3b1d60a2,0x3ab78fe5,0x3b014279,0x3b6c82f3,0x3b8c93c0,0x3bae5542,0x3bbbf624,0x3ba29155,0x3b7d1b5e,0x3b7710c2,0x3b72b135,0x3b3ceb2e,0x3b43dc4d,0x3b3dee5a,0x3c288598,0xbd0151c9,0xbca2638b,0xbc671329, -0xbd4f30ba,0xbd425d38,0xbc494a7e,0xbd212f78,0xbd33f30d,0xbccabc0f,0xbcb8cbc3,0xbc9c9e41,0xbc68d85d,0xbc695b83,0xbc672455,0xbc6a8213,0xbd3cfd95,0xbd31ef56,0xbc13db82,0xbd33ff77,0xbd2e3081,0xbbf118c8,0xbc804a9f,0xbc8b4e4e,0xbc855eed,0xbc8715ab,0xbc88d841,0xbc8a2aef,0xbc8c1b8e, -0xbc8d6685,0xbc8ac720,0xbc9dc2c2,0xbca82adb,0xbcce7b1f,0xbccac87f,0xbcca8c3a,0xbcc854a4,0xbcb7588f,0xbced42d9,0xbd0be8ae,0xbd087923,0xbcb7ae09,0xbcb2cf87,0xbcc2c42a,0xbd06c37a,0xbca470fd,0xbc821f71,0xbd11c956,0xbcdf3348,0xbd122c2b,0xbcb8e712,0xbcda39c3,0xbcd3c122,0xbce27e21, -0xbd01d850,0xbcd98c30,0xbd39c71a,0xbcf83630,0xbc6944e6,0xbca71946,0xbc8a757a,0xbc908ed3,0xbc9004cc,0xbcb0d1da,0xbcc8ba7b,0xbcd51d30,0xbcc87efa,0xbcdd0e29,0xbcdf3f86,0xbd269041,0xbd3d02af,0xbd55b777,0xbd59f447,0xbd30624f,0xbd1f917f,0xbd0e1471,0xbd1a5262,0xbcc81afd,0xbca119f1, -0xbca0f18c,0xbcae8224,0xbbf2c4a1,0xbcbffe46,0xbc09f252,0xbd1d20de,0xbc09b08f,0xbc214b5c,0xbcc2fadd,0xbc874f00,0xbc71d998,0xbcb8db6b,0xbcb67427,0xbd0e5479,0xbc884710,0xbbfa1c02,0xbcaac1cc,0xbc82609c,0xbc98da4f,0xbc97e4ec,0xbcc04731,0xbccc87e6,0xbcdabc78,0xbcda6d1b,0xbd09bde4, -0xbd428ceb,0xbd87abc4,0xbd9267aa,0xbd9aec4f,0xbd9669fc,0xbd6fec63,0xbd5dcba9,0xbcde7293,0xbbfe9e9c,0xbc983435,0x3bcb79a6,0x3bfff86b,0x3bc27b2f,0xbba51c49,0xbb912eb9,0xbb132993,0x3aa797d0,0x3c191ac4,0xbb6e8baf,0x3c0d7049,0xbb985128,0x3b2af54a,0xbbc41022,0xbc544fc7,0xbd00f70c, -0xbca19092,0x3ab24621,0xbc256b4c,0xbbfef178,0xbc14fb64,0xbc3d15a1,0xbcc57361,0xbcd6f619,0xbcfc1498,0xbd0456ea,0xbd11e769,0xbd58bca2,0xbd964da0,0xbdc66c6f,0xbddd1821,0xbdeab5bf,0xbda2987f,0xbd8dac50,0xbd240d2a,0xbb8243f5,0x3b56f291,0x3c63eefe,0x3c37030b,0x3c939235,0x3c7dde7f, -0x3c25929a,0x3b5377b7,0x3c780ec6,0x3c679bf5,0x3caccb15,0x3ca54f4a,0x3cb60819,0x3c6c5cda,0xba2f2b0c,0x3cbcb499,0xbd0b6cae,0x3a56ab21,0x3b9f6664,0xbc918e85,0xbc3b457f,0xbc8b142e,0xbc8b01d1,0xbcdd74e5,0xbcde61a6,0xbcfb0cc0,0xbcc1d5b3,0xbd4a676b,0xbd9ebd1a,0xbde75444,0xbdf858b4, -0xbe099064,0xbdf71c0f,0xbdc7af09,0xbdd3a4f8,0xbdc006f9,0xbe1b20f6,0xbdbebffc,0xbd58f7af,0xbc8104ab,0xbca68b8f,0xbcb29ce8,0x3b867ed2,0x3cbb4103,0x3c301991,0x3c8c24f5,0x3ca5ae04,0xbb01f247,0x3c19e65d,0x3c871c71,0xbc5c677a,0x3bfdcc62,0xbcb216b0,0xbbdcac86,0x3cda2183,0x3cb5a93b, -0x3d55678f,0xbb538fc7,0xbc8ecc02,0x3cd1494f,0x3d02920f,0x3cf2bc65,0x3bb95824,0x3af6a672,0xbbcf7cc4,0xbd18ba03,0xbd42dffd,0xbd2fbc12,0xbc49fc26,0xbda0d8c7,0x3d515ffd,0x3d10339e,0xbc9623b1,0x3cb32466,0xbbbc3a99,0xbbc3bbe6,0x3b8d4153,0x3cd858d9,0x3c654dff,0x3c1281e8,0x3adfa2a2, -0x3baf170a,0x3c1836c2,0x3cb8745b,0x3c7799a4,0x3ca1db8a,0xbb25d558,0xbbb3bf06,0xbcbe405d,0xbd0d58bd,0xbc95b5c0,0xbd43cbdb,0xbd7ffc66,0xbd857341,0xbd88aef0,0xbd6e04f2,0xbd8882cb,0xbd0d6c8c,0xbbca1776,0xbc8e8a58,0xbd69683d,0xbe083930,0xbde88a36,0xbe06ba59,0xbdcc3337,0xbcb59f40, -0x3b47d74e,0x3bb8bb2b,0xbbc78f9f,0xbb3c43b9,0xbc1e8943,0x3c9e5ce0,0x3cb4c70b,0x3ccf07e6,0x3b742eaf,0xbc0a3201,0x3ab265b7,0xbb990f91,0x3b42c521,0xbb1bf9d4,0x3c488e18,0x3c562e16,0xbc739564,0xbc79be80,0xbd011f5e,0xbca1e7ee,0xbd00571b,0xbd37883d,0xbd2eafcd,0xbd42ab56,0xbd37bf84, -0xbd41b36d,0xbcbd5d3a,0xbb8ce0a7,0x3ced4a4a,0x3c916c74,0xbb0abc59,0xbda106ea,0xbd80db6d,0xbd0b4edf,0x3c102ded,0xbc83d84c,0xbd35a994,0xbbab3f5e,0x3c51b854,0xbb849d29,0x3bce0ee9,0x3cb006fb,0x3cc1ab87,0x3c6e2c9c,0x3c1bce29,0x3a8168c0,0x3bd7027e,0x3ac34062,0x3c0b67d6,0xbc700597, -0x3c8e680d,0x3c25c768,0xbccdbf7c,0xbc662770,0xbd081275,0xbd0d129b,0xbc66b321,0xbc9c10ce,0xbc89f854,0xbcddf906,0xbd0e4bca,0xbd2c4ada,0xbcf129cc,0xbcbc3e1a,0xbbf5b459,0x3c42d2c9,0x3cc1b127,0x3b83a382,0xbd35264e,0xbd31b903,0xbc865d79,0xbd3ff47e,0xbdba4cca,0xbcaef000,0xbb988a0c, -0x3b2f59e1,0xbbb67562,0xbbb15e85,0x39772efb,0x398b0569,0x3ca6dccf,0x3cb01302,0x3c1b6bc0,0x3c2fab18,0x3c2ebabf,0x3a387e25,0x3c5b76dd,0x3c6136c4,0xbbf5a909,0xbc10c2dc,0xbc87f26b,0xbba1566d,0xbc646717,0xbcb6d5b7,0xbccea2fd,0xbd233286,0xbd1081d2,0xbc36c7cf,0xbc8bc560,0xbcc0a864, -0xbd59d96b,0xbc1a1c70,0xbc085b0a,0xbaca6524,0xbd84e72e,0xbdde8338,0xbe02c264,0xbe0138e7,0xbdb78174,0xbd819f49,0x3b4eb43f,0xbca32e9d,0x3c075026,0x3c655a6b,0x3c4dac59,0x3a0e9339,0xbb182ef1,0xbb1838fe,0x3b885666,0xbb2818d5,0xbaf2e12d,0x3acf917d,0xbb0b45e3,0xb9d20cc2,0x3baa671e, -0xbc087291,0xbc922397,0xbc69a1ab,0xbcac4e77,0xbc8a54a3,0x3c5f3d88,0x3b58b92a,0xbc08de69,0xbcb20abb,0xbd32307d,0xbd5942e3,0xbdaae328,0xbd3eeee4,0xbcfd2fbd,0xbd07edd2,0xbd7d2c67,0xbd985266,0xbd8ea800,0xbd92adc4,0xbd077952,0xbd13769b,0xbc13354c,0xbbdbeed7,0xbc7c5e36,0xbb90e7d2, -0xbaeb806a,0xba9f4357,0x3b2090b2,0xbbc0a540,0xb9cdb250,0x3a4f6db2,0x3c01503a,0x3c12bfa8,0xb8fabc8b,0xbbceff6e,0xbc195bb7,0xbbb958df,0x3b0f00ec,0xba59672b,0xba942cfa,0xbbf71349,0xbcbc09ad,0xbcfb0ac3,0xbd0fc36f,0xbd095527,0xbcb818e2,0xbc797a0f,0xbbe94f02,0xba7f1b9d,0xbc3c8ec6, -0xbcc7bd8f,0xbd0499a9,0xbd2af565,0xbd0bd752,0xbd185a07,0xbc8c9bad,0xbc0a0c8a,0xbcba951b,0xbc5a9f64,0xbc7562f0,0xbb861113,0xbbd257ec,0xba8094c4,0xbaae4096,0x3bc037d7,0x3bb79c7e,0x3c25bb63,0x3be4f1fa,0x3b600bbc,0xba72502d,0xba6de575,0xbb7c2f0a,0xbb845c3c,0xbb005c6c,0xbb231020, -0xbb5ff3a4,0xbaa66398,0xbb635cfd,0xbc312e12,0xbc928723,0xbcf036ae,0xbcc4c7b0,0xbca4f168,0xbc515e3b,0xbc874712,0xbcac0794,0xbd011755,0xbcfe6a4d,0xbcc72dcb,0xbc8c3910,0xbc7d92c9,0xbc580679,0xbc93441a,0xbc88a242,0xbc408b38,0xbc17d026,0xbc07f28b,0xbbeddb5d,0xbbbddd85,0xbb2cdb80, -0xba6cbc81,0xbadcba04,0xbc14e232,0x3addd0f3,0xbc1d3fad,0x3bc1d640,0x3adb0f09,0x3ba4e7c0,0x3baba9e0,0x3bb42a77,0x3b8d845d,0x3c6aab2b,0x3c390262,0x3c8e82fe,0x3c34a1de,0x3b9bd0ad,0x3a737b0d,0xb9e844f5,0xbb91920d,0xbc302e6c,0xbcabab29,0xbcf213c7,0xbd129104,0xbcf49f18,0xbcfc38c9, -0xbcedf778,0xbcc7fea5,0xbc9724e6,0xbca7a42a,0xbbc78635,0xbc50936c,0xbc92f0fb,0xbc5f0c71,0xbc7d73c7,0xbb316f0b,0xbbefe0f4,0xbc522976,0xbc4bdede,0xbc4dc7dc,0xbc6f0474,0xbc4d9068,0xbca8815a,0xbc8f65b6,0xbb14fd2c,0xbc111493,0x3be1baa4,0x3bfe3e98,0x3c0c3ecb,0x3c099f4e,0x3c1140cf, -0x3c4d6b77,0x3c931611,0x3cba6f24,0x3c4c933e,0x3be7f4c3,0xba60ebeb,0xbb9cb71c,0xbc14f636,0xbc9f8e6f,0xbca00900,0xbc76598a,0xbc71d3ad,0xbc91a26e,0xbc98f5bd,0xbcaed0b3,0xbce72419,0xbc65a8d3,0x3c75b6a6,0xbce2bd71,0xbca498a6,0x3bcb2d45,0x3bf82da1,0x3c2b4df9,0x3c4d0290,0x3c5a30f8, -0x3c81aefa,0x3c89a207,0xbcadba84,0xbcdf9225,0x3c8f7f2a,0xbc823147,0xbccdd57b,0xbc657b31,0xbc6e3e95,0xbc63eae3,0xbc5c2682,0xbc6a0892,0xbc800ab2,0xbc7ba940,0xbc8bf971,0xbc91d3e7,0xbc9d2368,0xbcb2f02f,0xbcba2fa5,0xbcc902f3,0xbcbc988c,0xbcb680d0,0xbcba310f,0xbcb12d15,0xbd01f433, -0x3d04000b,0x3cbafec7,0x3cc2a1f0,0x3d038f06,0x3c17a44a,0xbcfff4b6,0x3d07b383,0x3c7dfaa6,0xbcc1b75f,0xbcea3a0d,0xbd096286,0xbd057728,0xbd085899,0xbd23b887,0xbd06b007,0x3c8a3ca3,0x3d0ec811,0xbd204b48,0x3c01c4f0,0x3cf093c7,0x3cb8ae91,0x3cb93ae1,0x3cce49b4,0x3cc210ee,0x3ccde26b, -0x3cd0c908,0x3cd41868,0x3cc9e6ce,0x3ccfb8af,0x3cd77431,0x3ce97ba1,0x3ce00136,0x3cd97af7,0x3ce459cb,0x3cdf2365,0x3cc63f06,0x3cd196d5,0x3c4790dd,0x3ccaf503,0xbc0fdb7c,0x3c15e927,0xb9b155be,0x3c7be3ad,0x3cb12334,0x3ba65d5e,0x3c298a93,0x3c83cf0b,0x3c05ab02,0x3caba270,0x3ca14f8b, -0x3c15e158,0xbc1a8fee,0x3cb895b5,0x3c2909d9,0x3c675ab5,0x3c5cc5fe,0x3d21c5c5,0x3cec16e3,0x3d0b5940,0x3cf1f90a,0x3cfe873e,0x3d00aad3,0x3d1c92f9,0x3d024ea5,0x3d039aeb,0x3d0c017b,0x3d1f15a4,0x3d1cd465,0x3d27f192,0x3d5216cd,0x3d47b4ea,0x3cd94549,0x3ca58f50,0x3c3f79e2,0x3c23da5f, -0xbb94288f,0x3c20ecb1,0x3c3a8f82,0x3c5b1f1f,0x3c3a2f74,0x3ca78a35,0x3c33c2e1,0x3c844fdc,0x3caa33ff,0x3cf4fea2,0x3c15f109,0x3cde72bb,0x3c97a169,0x3cb96ac6,0x3cb910f9,0x3c2d70f6,0x3cb2aab2,0x3cbe7d17,0x3d1155db,0x3d209346,0x3d08f98d,0x3d1cc67d,0x3d1b2a10,0x3d36dfd3,0x3d0e35f0, -0x3d1a0d1c,0x3d44f3d7,0x3d54fb96,0x3d6557c4,0x3d52784e,0x3d882299,0x3d7633f2,0x3cc5703e,0x3cc49327,0xbce7b319,0xbcd4b881,0xbc420b09,0xbbc31852,0x3abc2410,0x3bed5997,0x3c09e8d9,0x3c93e052,0x3b8bc54c,0x3bcddc41,0x3bcd9781,0x3c37db85,0x3cb24c4e,0x3c363cae,0x3c949920,0x3c7b930e, -0x3c6013a9,0x3c7ec682,0x3cc5f131,0x3cdc6247,0x3d14e9d7,0x3d26e813,0x3cfaa289,0x3d232ec2,0x3d2aede7,0x3d5bd746,0x3d0b8916,0x3d1409ca,0x3d40bc35,0x3d57d895,0x3d7be827,0x3d8b9697,0x3dc6ffc7,0x3dbae83a,0x3bdf2f5a,0xbc218c2a,0xbc6cefdd,0xbcdb597a,0xbcf0b7dd,0xbcb20f9c,0x3be8a632, -0x3bca59e4,0x3c3ed7fa,0x3c0aebd5,0x3beb7d75,0x3c3893f3,0x3c250de4,0x3c44f2e8,0x3c94de47,0x3c9f07db,0x3ca88ae4,0x3c9c12d8,0x3c841e50,0x3b42bbc0,0x3ce1113d,0x3cf525d8,0x3d10fb12,0x3d53cd80,0x3d1172e2,0x3d407fe0,0x3d46c230,0x3d5e6c8f,0x3d285865,0x3d2c3aa3,0x3d81644b,0x3d96731c, -0x3dad0b21,0x3d93f6c7,0x3de5597a,0x3dbd0aa7,0x3c1c8f88,0xb9931cb5,0x3d2d4be7,0x3d462b69,0xbcea8307,0xbd2d8986,0xbca8ecd7,0xbc4b1836,0x3bf893bc,0xbc38344a,0x3c1061fd,0x3c93b1e2,0x3baced57,0x3ccc04f2,0x3c939f88,0xbb9ee7d8,0x3c8873d7,0x3c80272d,0x3c34250c,0x3b8e72ad,0x3d03adfb, -0x3d036e10,0xbb03ee26,0xbba8b763,0xbc0fc5dd,0x3ac4b32e,0xbbc1ae3f,0xbd532baf,0xbcb7f400,0xbb83adff,0x3d006c54,0x3c86412f,0x3cb0427c,0x3ce992d0,0x3d199073,0x3d2f1cb3,0x3d8350f2,0x3d123c4f,0x3bf0265b,0x3d4188f1,0x3d6ca6f6,0x3d37458d,0x3c967a40,0x3ca5f25a,0x3b982d90,0x3cc95611, -0x3c372c0a,0x3bd70f57,0x3c1ee607,0x38f72910,0x3be5f0b8,0x3cddb4f6,0x3cc32282,0x3cbef7f9,0x3caa154b,0x3c997285,0x3b278a5a,0x3ce3c318,0x3d418478,0x3d418ed4,0x3d70154b,0x3d49bb05,0x3d1d8ff2,0x3d3a13de,0x3d1b108f,0x3d0d1c0c,0x3cc42e85,0x3d03e54c,0x3c937a19,0xbd32d72a,0x3c2e2ad9, -0x399c4e7e,0xbcfead3a,0xbacd2226,0x3d2d4df1,0x3d1aa024,0x3cb87fd9,0x3c7a914b,0x3cd58ca3,0x3d0c309e,0x3d098d52,0x3cb6b0e3,0x3bd4c87d,0xbb96b2bf,0x3b0dfa9b,0xbb4f215b,0x3bff5d4b,0xbc27f20a,0x3d09962a,0x3cfc051d,0x3a9e22f3,0x3bf7d52c,0x3b970d2a,0x3c39f186,0x3c2a383f,0x3cdc89aa, -0x3d1afd55,0x3d707d33,0x3d711e38,0x3d90ea12,0x3d05da2f,0x3c9faad0,0x3b8ebb08,0x3cdb64a2,0x3d5f5f29,0x3d94917f,0x3e1a80bc,0x3e354b0b,0x3e236003,0x3da6931f,0x3d9fff6b,0x3c1cbcf4,0xbd01b36c,0x3bf7ce59,0x3c3c12e8,0x3d0f65f2,0x3d0710f3,0x3c400b45,0x3c7a3ab1,0x3b54185e,0x3c03a698, -0x3b9e7b6e,0x3c14cc72,0xbc93926e,0x3cc5ec9e,0x3d0c527f,0xbb9bbb66,0xbb0a6d5c,0xbbabb467,0x3bcc4acb,0xbacdf23f,0x3baac5b5,0x3bfbc6bc,0x3cdaa5f5,0x3d247578,0x3d852bdf,0x3d4fdefd,0x3d535a2f,0x3d25c4a5,0x3d37be44,0x3d8be827,0x3dda7cab,0x3e2393d1,0x3e4aa0fc,0x3e6d6e8b,0x3e026a65, -0x3dd729a0,0x3c846a7b,0x3c684f3a,0x3b9da49e,0xbb26cb4c,0x3c969b97,0x3c412b04,0x3c41123d,0x3cc6fa2b,0x3cbdd141,0x3c5bfdf0,0x3c57b379,0x3c548ad2,0x3c4db896,0x3cc5fdd6,0x3cb12add,0x3b635561,0x3c1e89ce,0x3b1b5252,0x3b1c20c0,0x3bdae531,0x3c203d4b,0x3c12692e,0xbb4ba01f,0xbc269e4f, -0xbc755c4a,0x3c5622fd,0x3d08c3d3,0x3d4db448,0x3d933ce6,0x3db82549,0x3d2e3c2c,0x3dbf1dc6,0x3dd40619,0x3e271bb2,0x3dfbc3e2,0x3e15404e,0x3d6934d3,0xbd00b3a5,0x3d14facf,0x3bde3203,0x3ca584d0,0x3cb4a40a,0x3c5a845e,0x3c2edc75,0x3bdad9ff,0x3bc4fc8d,0x3a997cf8,0xb97b1ef1,0x3c19ed0c, -0x3be99a6d,0x3c1efca2,0x3be0b18f,0x3c8ef97c,0x3c9c0445,0x3b9fc637,0x3bd8c873,0xba1b848e,0x3c3a62d8,0x3cb2ac19,0x3d1f0c71,0x3d6efa7d,0x3d68c21c,0x3d744499,0x3da5ab4a,0x3d9a6064,0x3d91c540,0x3d776b2d,0x3de0dc2e,0x3e067fee,0x3e187993,0x3e016b9e,0x3da06a64,0x3d7683e0,0x3c213753, -0x3c03447e,0x3c27a0fe,0x3c04a720,0x3c442daa,0x3c2face8,0x3c62c227,0x3c705af3,0x3bcdf69b,0x3c2edf90,0x3c1a68ee,0x3be1b9ba,0x3c26fbdf,0x3c4db9fd,0x3c4d2689,0x3bcea625,0xbb89e9c7,0x3bb07ac7,0x3c75d1bc,0x3c529378,0x3c056f74,0x3c87dc8f,0x3cacd426,0x3d00d724,0x3c7c2d5a,0x3b87fc58, -0xbbb62bb8,0x3b12614d,0x3c79014b,0x3cbf5a04,0x3ce5e7ba,0x3d1a1502,0x3d76318b,0x3d8f6e4e,0x3d6973f1,0x3c617759,0x3cf5951b,0x3cabc3fa,0x3cc0f5db,0x3cc7ea66,0x3c841746,0x3c402b95,0x3c505f8a,0x3c1b16e5,0x3c182024,0x3b8dff7d,0x3b8ae4da,0x3b751128,0x3bf6d794,0x3b96fd53,0x3bc44dae, -0x3b959ec2,0x3bb51f07,0x3a5fe2f7,0x3b82cffe,0x3be556f9,0x3bbd9f44,0x3c3012e7,0x3c189020,0x3b840595,0x3bc70584,0x3bd59167,0x3be77384,0x3ba5c548,0x3bc09502,0x3c2253a7,0x3cad361b,0x3ce20c28,0x3d258b27,0x3d16d0d2,0x3cb7c293,0x3d10b613,0x3c13e361,0x3cb5e7a8,0x3c418e01,0x3beaa2dc, -0x3c24692b,0x3c706cac,0x3c525221,0x3c4f5e45,0x3c86240c,0x3ca34e94,0x3bd44a66,0x3c4497e2,0x3ac091ac,0x3c11e3c6,0x3c294db1,0x3c0879e4,0x3c69f8ad,0x3c41aea3,0x3a4c958a,0x3be78fea,0x3bef7a0f,0x38dc8734,0xbbedb2da,0xbc475848,0x3a9b986a,0x3c2c519c,0x3cb6dadc,0x3c98d60b,0x3c9044b1, -0x3c2c3445,0x3c8857ff,0x3cb3368a,0x3cea4373,0x3cc52b36,0x3c7e617a,0x3c94f67c,0xbc7c0579,0x3c3cbc18,0x3c806f6c,0x3c6195a3,0x3cc6923b,0x3b06c446,0x3c616d1d,0x3bb4067d,0x3a69c779,0x3a13a73c,0x3bc5a7cb,0x3a25d55b,0x3c4404ae,0x3c19c4d5,0x3b1263d0,0x3c4dfcf5,0x3bb222d5,0x3b56f523, -0x3b192602,0x3b228632,0x3a430a4c,0x3b75e4a3,0x3bf81382,0x3c19ccd1,0x3b2b7bd1,0xba46871f,0xbb076527,0x3b15a990,0x3c01e99d,0x3c845a5e,0x3c86766e,0x3c5c7ca9,0x3c54deca,0x3c8b462b,0x3c03f414,0x3c6cc310,0x3c36266f,0xbc24fb6a,0xbd01a634,0x3c3f77f5,0xbac983de,0xbcd43b2c,0xbcf3219b, -0xbce650d9,0xbce0411c,0xbcf244da,0xbd0adb90,0xbd10146d,0xba30e0a5,0x3c43eb0b,0xbce5ee5c,0xbb7bbdf5,0x3c07a88b,0x3bbbd2c5,0x3bcc66a5,0x3bba8e6a,0x3baca7f2,0x3b5f272b,0x3aba8d5c,0x3ab58bc7,0x3b8495bb,0x3c01ed58,0x3c264f6c,0x3c3662e9,0x3c1d4d85,0x3c194738,0x3c0fd269,0x3c1b869e, -0x3c2052cc,0x3c15e1f2,0x3bdc1a0e,0xbd18fe2e,0xbcce8815,0xbd049df1,0xbccc8ec7,0x3bbe51cd,0x3d21101b,0xbce552bd,0x38a4df12,0x3d202fab,0x3d2cb00e,0x3d3a78f7,0x3d27e330,0x3d31d674,0x3d5899ec,0x3d2f275a,0x3a9e4775,0xbcc6d31b,0x3d3f0afa,0x3c17a4b1,0xbcaad240,0xbd0e23d2,0xbce418a8, -0xbcfb19a3,0xbcff1f11,0xbd00dd20,0xbcfe2dcb,0xbcf252fe,0xbcf3e1f1,0xbcf76bf0,0xbcf122e8,0xbd05d7aa,0xbd03ff4e,0xbd00c11e,0xbd0975ca,0xbd07b953,0xbce7e98a,0xbce5453c,0xbcc87101,0xbd36dbd8,0x3c01cb22,0xbcac2b43,0x3be5d98b,0xbc5b3d2f,0xbc53168c,0x3b770143,0xbc4b4a9a,0xbbff96e0, -0xba7d5ed2,0xbbe964d0,0xbc7167cb,0xba81fee7,0x3ce2c620,0xbc626739,0x3a5def76,0xbc3df70b,0x3b120e36,0xbd2c548f,0xbd0c4b5c,0xbd1a364e,0xbd333914,0xbd21006d,0xbd1dfe80,0xbd2b02e7,0xbd2ef300,0xbd32adfe,0xbd232eec,0xbd52fa5e,0xbd57008d,0xbd461c65,0xbd65d2fe,0xbd451e29,0xbce533be, -0xbccb292a,0xbca31d39,0xbce35deb,0xbc712933,0xbd0dac55,0xbbdf92c1,0xbc340df9,0x3ac40135,0xbc4b9375,0x3a2227ff,0xbca05407,0xbb8c0c40,0xbce4974a,0x3be8a892,0xbc8c452a,0xba0edf3e,0xbc22f8b9,0xbc42f29c,0xbb7e6d02,0xbc322854,0xbcf16040,0xbd3814ae,0xbd2ac18f,0xbd655595,0xbd48f220, -0xbd46ca18,0xbd3b72c2,0xbd407c20,0xbd49ccac,0xbd40019b,0xbd802cf0,0xbd889677,0xbd5a63af,0xbd8d776b,0xbd75a619,0xbcd7bc8d,0xbcc427c2,0xbbacfadb,0xbd25c48e,0xbd3eaa98,0xbd08c431,0xbc363e30,0xbc0a345d,0x3ade0ce0,0xbb85b665,0xba6ae99f,0xbb253962,0x3b35bb90,0x3b3128c0,0x3b8e29dd, -0xbc21cdec,0x3bf6129b,0x3a9723b1,0xbbbb5294,0xbc3e5bc4,0xbc1a0720,0xbcba8ba6,0xbd3eaca4,0xbd25591b,0xbd8addf7,0xbd67179e,0xbd764956,0xbd6a9eb2,0xbd78d695,0xbd7ecfe8,0xbd5c6cda,0xbda5b820,0xbdbb1cca,0xbd90e2be,0xbdc6aa5d,0xbd8da537,0xbbe59f34,0xbbf0b838,0x3c1574ee,0xbc4c06d8, -0xbd1d0ad7,0xbd19e4a1,0xbc8677de,0xbc5c7ac5,0x3a3d4c3d,0x3c1f11f2,0x3ba2d27b,0x3b838f64,0x3b43a4dd,0x3c5f9944,0x3c816b3b,0x3be2c742,0x3c4112a8,0x3bc2f795,0x3a419d19,0xbc36f191,0x3bcb1029,0xbd0d4ce3,0xbd3d8b46,0xbd570f7c,0xbd9d2305,0xbd88255f,0xbd8be32a,0xbd70f992,0xbd828f9e, -0xbd8a6384,0xbd7915ce,0xbdc1cb1d,0xbdc8ff1f,0xbd72389c,0xbdd062e4,0xbda80fe3,0xbc86faf1,0xbb47f353,0xbdc48513,0xbdae2853,0xbcd545b0,0xbd0bb14c,0xbc81336a,0x3b7d0685,0xbbf7b5d4,0xbbeb22d0,0x3acc7a0a,0x3c2ad7f9,0x39eaf11d,0x3c6bfdf8,0x3c315b06,0xbb787b2b,0x3b8b7936,0xba9ac90e, -0xbbd3054c,0xbcd0c417,0xbd035f8c,0xbd776555,0xbd8005a3,0xbd38cc4c,0xbd494714,0xbd1d427c,0xbd01628b,0xbc2d63f3,0xbd499e65,0xbd5022cd,0xbd4fc5ae,0xbd81bd92,0xbdaf6771,0xbe0870d1,0xbda6b7fd,0xbd798ca6,0xbd4d6bd9,0xbdd10fd9,0xbd1c0685,0xbc499c85,0x3cde6f04,0xbc980d01,0xbc4d4d6a, -0xbc99b301,0x3bd7cc5b,0x3cc34bdd,0x3b6dde64,0xbb277475,0x3a843fa2,0xb8ff9f4e,0x3bf7bb09,0x3c8cb4e3,0x3c271acd,0x3a22e8ee,0x3ae60086,0xbb37e434,0x3c97e8d1,0xbba4a0bc,0xbd8523eb,0xbd8597ed,0xbd89450d,0xbd7e41e5,0xbd672f7d,0xbd0030dd,0xbcccb994,0xbd088ff2,0xbd6a4980,0xbd7a3b1c, -0xbd4d4e8d,0xbd6c6425,0xbd7db764,0xbd86fdc5,0xbd69eb43,0xbd0da86a,0x3c5bc819,0x3beb3ade,0xbc43f428,0xba1e8d37,0x3c0c8ad8,0x3cee5199,0x3cea431e,0xb9223aba,0x3b23162a,0xbc2eb261,0x3b86e7ae,0xbbc46d0e,0x3b1a0035,0xbc00bea3,0x3c2e0376,0x3c8a287c,0xbbcd46e4,0xbc090b76,0xbc8f42e8, -0xbcffa7a5,0xbce22040,0xbcc78245,0xbcebc34d,0xbd641bf1,0xbd92f6a9,0xbdad9d97,0xbdac52be,0xbd962215,0xbd70a9b1,0xbd7df85f,0xbdb60d31,0xbe07bbaa,0xbdbe2cba,0xbd912381,0xbd35331b,0x3c11f8bb,0x3c855b82,0x3cec86a5,0x3cd8d504,0x3c25a6bc,0x3cd782ef,0x3d0563ec,0x3ce7880d,0xbb8b0544, -0x3bcf2c23,0x3a7508d2,0x3a60d419,0x3a90d1de,0x3bc2a60c,0xbc90dcbc,0x3c9df21d,0x3ca3fca9,0xbbcc5a95,0xbb0afb6f,0xbc01cc00,0xbcaec818,0xbd032170,0xbd05834f,0xbd09cc3b,0xbd7ad21c,0xbda3f3ef,0xbdb87979,0xbddab336,0xbdc4c0cb,0xbda0affa,0xbd8ae7e5,0xbdaba0ea,0xbe085870,0xbddd36b6, -0xbdcc53e9,0xbdcc0838,0xbc9675ed,0xbd86a020,0x3c2bf3c0,0x3b929ae2,0x3b17abca,0x3b41622c,0x3b1b283f,0x3c35b24d,0x3c80be6b,0x3c86c9e6,0x3c85bff6,0x3b12edbe,0x3bd3059d,0x3c317718,0xb967bcf5,0x3c8bc753,0x3ca8c8f4,0x3b8b4d40,0xba3b567b,0xba5d0ad6,0xbcab8545,0xbd3d0d80,0xbd7f8ddb, -0xbd84320b,0xbd959224,0xbd8eb28a,0xbd7e2e4e,0xbd5ce6f9,0xbcff8371,0xbc353df5,0x3c8f4112,0x3c1bf61e,0xbcb0a9dc,0xbd8f8169,0xbdeabbb1,0xbe37ed5a,0xbdce5036,0xbde0539a,0xbc528f5b,0x3d9a239d,0xbaad9a9a,0x3cac0a4e,0x3c86f7d2,0x3c401d76,0xbc001a7d,0xba2b814a,0xbbcdbb1a,0xbb977e45, -0xbbab201d,0xbaaf84df,0x3b61e72a,0x3c42d0ca,0x3c0e784f,0x3b306fde,0x3bb29929,0x3a29a3b9,0x3bb3ee6d,0x3b70ffe2,0x3c88bee6,0x3c414313,0x3bbd0edd,0x3b33ba6d,0xbc996226,0xbc187c0f,0xbcd17fe8,0xbd64f65d,0xbd66534c,0xbd9a77e4,0xbdfff2bd,0xbdcc73dc,0xbda9a81c,0xbd9e040d,0xbda97930, -0xbd23684f,0xbcd79085,0x3c84700f,0x3bb7082e,0x3b6972f2,0x3c4c095b,0x3c2e3cd6,0x3c48a7b8,0x3bbb3836,0x3b9bdfcb,0x3b4f6e97,0xba35681f,0xba769da1,0xba517c3c,0x3aef3a48,0x3b0c2e1b,0xbb9ac7df,0xbbbb6fbb,0x3bda8a4b,0xbb50bc44,0xbcac802e,0xbce776b7,0xbcd8c420,0xbd178564,0xbd1cdd8b, -0xbd0c60dc,0xbcd71e82,0xbc3fbca6,0x3bd0f198,0xbc353212,0xbced03d2,0xbd94bbf1,0xbd3e5bde,0xbd2e1860,0xbd38ecb0,0xbd1041b4,0xbd018bfe,0x3cc6db72,0x39b478c2,0x3b082f63,0x3b7d4d83,0xbc035c42,0x3b647a4a,0x3b028ef2,0x3b094c29,0x39fe9ea5,0x3be36030,0x3ba111ab,0x3bd624aa,0x3aef0b31, -0x3ade4d0d,0x3b84e9cd,0x3bc655fe,0xbb3c6f77,0xbc3b29d7,0xbbdb5ab2,0xbc9b5960,0xbc7f6e76,0xbc931c2f,0xbc558fe7,0xbc2c3f2d,0xbb2d634e,0xbbfec9c8,0xbc1be719,0xbc0d6a2f,0xbca94f28,0xbd03d81e,0xbd6a021d,0xbd1ce0a0,0xbcc58020,0xbcc094d8,0xbb7993b6,0xbc6b9ab2,0xbc8be2b7,0x3c85d295, -0xba5ae480,0x3c27d87d,0x3c652c76,0x3bd66ed0,0xbb8aba01,0x3ab83b58,0xbae9a26a,0x3b2829ec,0xbc65355c,0x3b000042,0xbbbe199e,0x3bcb6054,0xbb6be41f,0xbb250001,0xbbbdbf38,0xbb478d6e,0xbcb8c7bd,0xbc62a3c8,0xbc32041f,0xbc11e0f4,0xbba6e068,0x39d6ec48,0x3baef48c,0xbbabd90c,0xbc5505b9, -0xbcb8b2e2,0xbcebe7cb,0xbd0194ad,0xbd13dc14,0xbcff4ff7,0xbcfad7e3,0xbccd4fb9,0xbca563fe,0xbc792146,0xbc73a14b,0x3ca88f8c,0xbc14d129,0xbc092494,0xbb3a46ae,0xbc53dbf9,0x3c52cb6e,0xbc0a868c,0x3a92d655,0x3acfbd44,0x3adcad00,0xbc25c1c6,0xbbf7a70b,0xbc60a363,0xbc2966e3,0x3a389b54, -0xbc48ce62,0x3bd1e207,0xba111892,0x3b499928,0xbb1af3fd,0xbaf430ed,0xbb8e758a,0xbc0a4a85,0xbc3b41ba,0xbc597b34,0xbc8809ab,0xbca5e15a,0xbce0cbe2,0xbd106ac2,0xbd3efa65,0xbd2124ce,0xbcf5375a,0xbcd0aeab,0xbcbb3b02,0xbc8e45ef,0xbcacf916,0xbc48d296,0x3c15ae34,0x3cb4500f,0xbc5b13fd, -0x3a130636,0x3cb1a44b,0x3cd6d6f7,0x3cbce3f8,0x3ca59cb0,0x3cb56424,0x3cdb8981,0x3cdaa278,0xbb342058,0xbc8fe12d,0x3c9af1b7,0xb921c47a,0xbc8170f8,0xbc8d27af,0xbc8b08b6,0xbc84ad64,0xbc7f75a9,0xbc6bfe5c,0xbc4c4081,0xbc38ae52,0xbc5f279d,0xbc893509,0xbc9d283e,0xbca8b31e,0xbca451bd, -0xbcaee532,0xbca58313,0xbca4a7e7,0xbca4890e,0xbc9cb479,0xbcca6899,0x3cfe7983,0x3cb11a6d,0x3d190d79,0x3c599f25,0xbccf3f43,0xbd344119,0x3c80806d,0xbc821884,0xbd43e098,0xbd508b39,0xbd5847ea,0xbd3d832b,0xbd4354ab,0xbd693836,0xbd425c89,0xbc8f2a5a,0x3c2f10e5,0xbd477859,0xbcd00364, -0x3bb095b4,0x3d0c45b3,0x3ccfca11,0x3ce4a1b5,0x3ce0a2ee,0x3ce69115,0x3ce03a07,0x3ccf8b79,0x3cd5f212,0x3cd95d73,0x3cdc2e3a,0x3cd04653,0x3cc767f8,0x3ccd3132,0x3cce405c,0x3cc59c99,0x3caa838a,0x3cbe80da,0x3d066d35,0x3d15d92d,0xbd4d4f62,0x3ba70867,0xbca1bdb6,0x3b3a1695,0x3aac7a40, -0xbbbd8bec,0x3c2fa9c7,0xbb811f5d,0xbbfeba67,0xbb31a2a6,0x3c31e7af,0xbc008107,0xbd06a8aa,0x3c33670e,0xbc083365,0x3b836695,0xbc9e2bea,0x3ce84e06,0x3d05001a,0x3d06ed26,0x3d135c32,0x3d0fcc19,0x3d13eb35,0x3d1b117d,0x3d25ba3c,0x3d2e2ca6,0x3d37bc2a,0x3d2ef0f6,0x3d31d7a3,0x3d3d5af0, -0x3d3512a2,0x3d25b718,0x3ce7c27a,0x3d01ec87,0x3cf4e979,0x3ced11c7,0xbc213d4a,0x3c9d0a9a,0xbbf90c59,0x3b13fefa,0xbc29da25,0x3cab935f,0xbbf50971,0x3ca63294,0xbc2b3e05,0x3d034bc8,0xbb6017e4,0x3c0ce4ed,0x3b59c046,0x3c72d3bd,0x3c4896e3,0xbb8b8835,0xbb6bba1f,0x3c6e1654,0x3d37e804, -0x3d16e696,0x3d38f632,0x3d2a95f8,0x3d26e5e4,0x3d147d71,0x3d304ba5,0x3d2dbf9d,0x3d4d9ed4,0x3d122841,0x3d132289,0x3d292c99,0x3d26c952,0x3cfa7b7d,0x3c2433bc,0x3cb863ad,0x3d4697ed,0x3d1a4d45,0xbce7b923,0xbc0b6033,0x39226dcb,0xbb840fe5,0xbb1dfc1d,0x3c91c6b4,0x3b7b6a62,0x3bb6adea, -0x3acd0f46,0x3c5e21b5,0x3c0910f6,0x3c312cd1,0x3bd36f19,0x3c83e6e6,0x3c65c5da,0x3bd3c6fe,0xbbcf3d47,0x3a2143d2,0x3d3bb5f4,0x3d12692d,0x3d4de07a,0x3d4d6b0c,0x3d6cbc9e,0x3d59213e,0x3d7d9ba7,0x3d839573,0x3d974ae7,0x3d80d201,0x3d888a03,0x3d9d79b4,0x3d9232cd,0x3d5e2630,0x3c9a8408, -0x3d01682e,0x3cd3bb5c,0x3d396090,0x3b012a7c,0x3c636732,0x3c7e889e,0x3bc6c89c,0x3bd9f147,0x3c897a5d,0x3bba9ae0,0x3be3af88,0x3c70bb8c,0x3c65edfd,0x3ca1d7b1,0x3bc1789e,0x3caf62e7,0x3ca5dcd7,0x3befad52,0x3cadab9e,0xbca30fe2,0x3c66ec52,0x3d444ed2,0x3d4da6c9,0x3d76f270,0x3d6443eb, -0x3d55e248,0x3d2e7625,0x3d5e0554,0x3d742edd,0x3d916626,0x3d297c55,0x3d1d3446,0x3d264221,0x3d49f4ed,0x3c9c949d,0xbc1f8b1e,0x3c737ffb,0x3c445408,0x3d031e15,0xbd228f59,0xbd0533db,0xbc90ddf5,0xbc7e33f2,0x3b1603ed,0xbc0c9970,0x3c4ddca7,0x3c98e689,0x3b92842e,0x3c71c643,0x3c4eba33, -0x3be59389,0x3c05f71c,0x3c3b2bea,0xbc6155fd,0x3b976d47,0xbc494efc,0x3c3db3df,0x3d1c4063,0x3c991dc1,0x3beedcfd,0x39734674,0x3c618ae8,0x3c984d49,0x3d25b029,0x3d0b9172,0x3d166e4f,0x3cd76c1d,0x3d3c9d9b,0x3d237dbd,0x3db3750c,0x3dc5dd08,0x3d4b0b25,0x3d25b40b,0x3b4a9c83,0x3c486368, -0xbcdc399a,0x3ce1a0c7,0xbd02716c,0x3c20136a,0x3b473663,0x3cbc9a6b,0x3c2c47d9,0xba303839,0x3b826166,0x3ba635cc,0x3c0fd107,0x3c6bb6fd,0x3c7efaa0,0x3cab24d7,0x3b9fd196,0x3b49fbfa,0xbcdb866c,0xbb959db4,0x3d455786,0x3d441a62,0x3dade075,0x3cce26b1,0xbb17cd6b,0xbcba2531,0xbce8ff21, -0xbd0ff1e0,0xbc3b4893,0xbd81b65c,0xbd8eb2ea,0xbd584348,0xbd3d56d3,0xbd5ec5d4,0xbd8bf1c7,0xbd040b75,0x3d044387,0x3d26ebbc,0x3d008b40,0x3c763727,0x3ccf5bc8,0x3d0bc053,0x3cf3c684,0x39ca029e,0x3bfe5eed,0x3b27c40c,0x3bd81903,0x3b8b8375,0x3c104506,0xbbc86a06,0x3cc90f4a,0x3caa44dd, -0x3ab8d927,0x3a480d20,0xbb91b383,0x3ca394d0,0x3c3e94f5,0x3bc2ad1d,0x3c9ce628,0x3cce0a39,0x3d27d3ef,0x3d32f101,0x3d3e24ad,0x3d06c9a4,0x3cc94672,0x3bb4b9f9,0x3cb217bf,0x3aaa9c85,0x3d86e5b7,0x3d956966,0x3d5a2d0e,0x3d0e1d57,0x3d4af631,0x3d0a4420,0x3c27de49,0x3cf2fc91,0x3cd853f0, -0x3d00e8ce,0x3ceca73c,0x3ac23503,0x3c5c50ea,0x3bf1f3b4,0x3b9e8e35,0x3c11757b,0x3c2ee7ac,0xbc13c87a,0x3cbda05c,0x3cdc98c6,0x3c0a789a,0x3c10f404,0xbc01b58b,0xbbaf1cb4,0x3bc3ad13,0x3a36750c,0x3babe0e9,0x3cbd0601,0x3cca7e0d,0x3cc1d8dd,0x3ca20dc5,0x3c321bdf,0x3c32adb1,0x3cfc4ead, -0x3d751f2b,0x3d818b60,0x3e078ccb,0x3e1cb94c,0x3e062dc3,0x3d98704b,0x3cb27005,0xbcc03199,0xbb3e4e3e,0x3b9c7366,0xbbb227bb,0x3ca55ad4,0x3c99605a,0x3c651303,0x3c9cfc22,0x3c5888ca,0xbb73282f,0x3c4cb760,0x3c32f325,0xba89c808,0x3c603198,0x3c830477,0x3b158f31,0x3c0ed4ba,0xbc00c466, -0x3bb63a1c,0x3be62fc8,0x3bc6ef0b,0x3b21d7e8,0xbc5277a6,0xbd064ca1,0xbd545c53,0xbd3cb547,0xbcf60e64,0xbc10f526,0xbb8281a8,0x3c450a6c,0x3cb1981f,0x3da4681d,0x3dd2573e,0x3dfcfd68,0x3d33e86d,0x3dc330fb,0x3c004ccf,0xbd5fb028,0x3c27efbd,0x3bb527c6,0x3c2f7646,0x3bee8007,0x3bc9b84b, -0x3b089005,0x3c0035eb,0x3b4e1620,0x3bb57391,0x3bb44ada,0x3c81527b,0x3c864adb,0x3c933ab0,0x3c44fff9,0x3c54d4da,0x3c4f905e,0x3c104586,0x3caaf918,0x3bcb662a,0x3c4c2d32,0x3b5dba7a,0x3c97be16,0x3d2b71fe,0x3d6a789f,0x3d7a6baa,0x3da448af,0x3d3cd282,0x3d2d5e20,0x3d28422b,0x3d9c87eb, -0x3daa8051,0x3da38f52,0x3d94977c,0x3d0cc260,0x3c2d6a2e,0xbc6e8c6f,0xbac160a3,0x3a0a7145,0x3bcfa7e6,0x3c7ae2f0,0x3c5ac74e,0x3c9bd307,0x3bf98945,0x3c9408ea,0x3c146171,0x3c5ae620,0x3c4e498a,0x3c2dee95,0x3bb9d34f,0x3af2d27b,0xba50fa99,0xbc6aacbb,0x3a01005f,0x3bf1cdde,0x3c3d6f43, -0x3ca295b9,0x3b16391b,0xbbb114d1,0xbc528932,0x39ef9004,0x3c375b63,0x3c80137e,0x3c921880,0x3cef13e6,0x3d4e5589,0x3d64ebb9,0x3d6a49df,0x3d6af1ad,0x3d2ff550,0x3d4608c9,0xbc0ac991,0x3b8b94d3,0x3b89495f,0x3b3eec60,0x3caf3400,0x3bf91866,0x3c409333,0x3be72c83,0x3c69288e,0x3bd9de73, -0x3c43869c,0x3b669298,0x3c3e04d6,0x3c39b7e3,0x3c14e380,0x3a16b049,0x3b3a6a8e,0x3befeb46,0xbb9645d4,0x3cdc37ac,0x3c64d223,0x3c8b6616,0x3c880ea3,0x3c8bdbe8,0x3c9556b8,0x3cd2a580,0x3cf03653,0x3d03cf27,0x3cf75d47,0x3d0557b2,0x3d3444ce,0x3d234d3e,0x3d150067,0x3d1eb7e5,0x3ce744b2, -0x3cad48ff,0x3ce844ed,0xbc06fbd9,0x3bc0b295,0xbc2ecbf6,0xbc558ff3,0xbba3b8c7,0x3c1a4112,0x3b1abf27,0x3c1e4df0,0xbbe09a9e,0x3cb90b6f,0x3bad7c42,0x3c804e1d,0xbb4e3742,0x3c46cfc2,0x3c3f268c,0x3c494c93,0xbbdbf69f,0x3cb2a73d,0x3cbba968,0x3c4a86fe,0x3c4186f2,0x3c4ff9bf,0x3c90a733, -0x3c9a9a86,0x3c9a9459,0x3ca35105,0x3cb8d4ed,0x3ccebb8d,0x3cdd25f8,0x3ceaf6f0,0x3cc743ce,0x3cae2d82,0x3caf5df4,0x3c9514b5,0x3c11b535,0x3c0ca7f1,0xbcc9573e,0x3c16ae3c,0x3c00db9b,0x3bcebc05,0x3c7f487a,0xbbafc810,0x3c556cdb,0xbb5890c9,0xbb9b52dd,0xbc28d944,0x3b2e52c9,0xbb80d2cc, -0x3b5fa486,0x3a49bc83,0xbc45b251,0x3c2ef068,0xbc2b4693,0x3c61e651,0x3bdef2d4,0x3c4f4496,0x3c4c3de9,0x3c3b06a0,0x3c097650,0x3bd27f33,0x3c403612,0x3c693bf0,0x3c8d2107,0x3ca61609,0x3cbb0f8c,0x3ceb3d92,0x3cd3f6d1,0x3cb69b7e,0x3c99fcbe,0x3c890a83,0x3c85ca7a,0x3caa26e3,0x3b11f4b2, -0xbcab1220,0xbcf160d4,0x3b6a6a17,0xbc65591a,0xbd02e817,0xbd1703dc,0xbd069d0e,0xbcf05524,0xbd04ca2a,0xbd1fb10b,0xbd245435,0xbc237aff,0x3c3bad99,0xbce3f9f0,0xbc51a584,0x3be65a76,0x3c9b58f2,0x3c853315,0x3c7a8207,0x3c6a537a,0x3c717787,0x3c7a6d1d,0x3c724f19,0x3c8067af,0x3c811691, -0x3c88af63,0x3c9054bb,0x3c909df9,0x3c96d76c,0x3c8af813,0x3c87191e,0x3c84ec81,0x3c835550,0x3ca3555a,0xbc8c5abc,0xbc794cd3,0xbcfbd643,0x3b887388,0x3d0e3791,0x3d102a34,0xb974d4cf,0x3ce180a9,0x3d3dad5e,0x3d3cd1ee,0x3d3a13d6,0x3d1be6b5,0x3d23a62f,0x3d412846,0x3d1f6150,0x3cfb402a, -0x3c07ef71,0x3d20dc82,0x3d0e1895,0x3c24da8c,0xbce14c8a,0xbc900bdf,0xbc9c6552,0xbc9cdc69,0xbca6dc07,0xbca42248,0xbc99c639,0xbc9209a7,0xbc8fac44,0xbc8faf5b,0xbc956808,0xbc9561cc,0xbc96e172,0xbc85a9c7,0xbc812e9d,0xbc74a865,0xbc844243,0xbc54b15e,0xbc425625,0x3d5bdbc6,0xb99cc894, -0x3cc86f84,0x3bb8404c,0x3c4191ff,0x3c84430c,0xbba12ba2,0x3c6f9434,0x3c6f480c,0x3c8a6532,0x3a9b75e1,0x3c6a6eb3,0x3d1d40ca,0x3bb55fb0,0x3cb07e4c,0x3bc8a78d,0x3ce70c73,0xbc80d4c9,0xbccedb60,0xbcbbee0b,0xbcd3d02d,0xbccf6521,0xbcd05a75,0xbce0c866,0xbcb6d6b3,0xbcbe3d8c,0xbce29953, -0xbd07711a,0xbd0deb63,0xbd022dc2,0xbcb11d70,0xbc55ad21,0xbb7d28d4,0xbb947920,0xbc9b347c,0xbc55c990,0x3ca8260b,0xbc21a8b7,0x3c5bfc9e,0x3ba2dcdf,0x3ca670c3,0xba1edfcd,0x3c945655,0xbc5c6060,0x3ccf0111,0xbc91533a,0x3c54a0dd,0x3b90c5b1,0x3c5d2258,0x3b95ea17,0x3c180111,0x3c59591f, -0x3c5190b0,0xbc491a2a,0xbd1927e7,0xbce3a07b,0xbd0d6417,0xbd0ac433,0xbd08442f,0xbcf29a1e,0xbcb78426,0xbcb53501,0xbcdaab01,0xbd0c4e13,0xbd13a33b,0xbd047a15,0xbc824df4,0xbba33d57,0x3b8ea2c9,0xbb9e55c7,0xbc045c39,0x3b9b9de0,0x3d39c702,0x3c7a7952,0x3c4ec096,0x3c081e92,0x3c05fe0a, -0x3c4f6c60,0x3a18d296,0x3a1a5331,0x3b9fa89a,0xba1905d2,0x3c597bb1,0xbc0fc3db,0x3c7f701a,0x3bafadeb,0x3bf5fb8a,0x3b315082,0x3c36a4b4,0xbb80c074,0xbd31b549,0xbd0137b2,0xbd1d8ec9,0xbd281e77,0xbd2c7717,0xbd15b50e,0xbcc7fe1c,0xbcd55031,0xbd20a03a,0xbd672b77,0xbd75f74c,0xbd5bfaf2, -0xbcaec343,0x3bb04d32,0x3d02eda7,0x3cb23fb3,0xbca6bb99,0xbcb77b79,0x3cbae70f,0xbb41f6db,0x3b050084,0x3b38fc16,0x3bd8e274,0x3c7423c1,0x3bacfffc,0x3b9789e5,0xbac0015e,0x3c314331,0x3bf02b76,0xba51abcc,0x3b4b149e,0x3c038412,0x3c3e070f,0xbcad75e2,0x3caddefe,0xbcc49129,0xbd3de7ef, -0xbd303637,0xbd414719,0xbd41984d,0xbd31c5b2,0xbd07a12d,0xbca7d516,0xbca7a921,0xbce21518,0xbd4eb0e0,0xbd4d3440,0xbd0f85c5,0xbbb80650,0x3ca93896,0x3cf6b40f,0x3c3b6469,0xbd45a344,0xbd61e206,0x3caa3f44,0x3cb911df,0x3abedd26,0x3bbaab2e,0xbc0e8d90,0xbb36adbc,0x3a2a08c3,0x3c52ac3c, -0x3bbdd271,0x3c595074,0x3c1662db,0x3c856741,0x3c077dd1,0xbaf4de03,0x3c4d3c3a,0xbc7dd1ed,0xb9be9385,0xbcb1a72f,0xbd24ea05,0xbcb81cb5,0xbcdea419,0xbbf3c4ca,0xbc250dda,0xbc8acb45,0xbd0d6a5f,0xbd5a5b49,0xbd816aea,0xbd8667d2,0xbd8810f2,0xbd7377a2,0xbd2938fb,0xbd585c71,0xbda2d14c, -0xbd8bafb5,0xbdc691bd,0xbcbf41f9,0x3cc1b0f8,0xbd0c9a82,0x3b3f7558,0x3b31ab03,0x3c235c24,0x3ca1be8d,0x3b9238d2,0x3b0fed2b,0x3b73921a,0x3b0a023b,0x3bb3854b,0xba3a448b,0x3c356974,0x3b68c032,0x3bc03537,0xbb5f1f4e,0x3c949400,0x3c1d1de5,0xbd0653a3,0xbccedab9,0xbd56f606,0xbd20bcc0, -0xbcdba5fa,0xbc1232f7,0xbb80169b,0xbb7cb26d,0x3c3f1d1b,0xbd01bc8c,0xbd017cfe,0x3bc92f78,0x3bad042a,0xbbd9e36f,0xbd1b456f,0xbd83d3d3,0x3c68ad92,0x3cacf1a6,0x3cc8011a,0x3cc140d8,0x3cfaf45d,0x3cefecc7,0x3cd9c2d2,0xbb837aa1,0x3c137da9,0xba22da02,0x3b5a8805,0xbab22813,0x3b912c8e, -0xbb95d4b6,0x3c9537ec,0x3cb7557c,0x3c06f556,0x3a9a720d,0xbb931804,0xbca7c6f3,0xbcbd6b58,0xbc769542,0xbca70e75,0xbd134ec6,0xbd387b63,0xbd10043c,0xbd37bb1c,0xbd24f62b,0xbd1fe5c1,0xbd8ccc6f,0xbd9675e7,0xbd6fab94,0x3ad1da5c,0x3ca01875,0x3c2eeb3e,0x3cedaf05,0x3d8a3f60,0x3d13d9cf, -0x3d255a43,0x3cfe09b6,0x3d1faa34,0x3d074add,0x3ce34d0f,0x3acef9a9,0x3c3305be,0x3b846386,0x3b25e326,0x3b6ea2d1,0x3bf1d840,0xbbad7196,0x3c62fd63,0x3cae0daf,0x3bcecbda,0xbb91d8de,0xb8815923,0xbae801f2,0xbcf795c7,0xbcb78ff7,0xbca09f39,0xbd3f896e,0xbd6b233f,0xbd4dbe65,0xbd690485, -0xbd16e1d3,0xbc952fbe,0xbd09fc68,0xbd2f8f99,0xbd7a1de8,0x3b7549cc,0x3d04d3c9,0x3cca774f,0x3d8e8f46,0x3bc10520,0x3c8ddef4,0x3b99d426,0x3af0e6a1,0x3c02c350,0x3c4b67d2,0x3c8e57d7,0x3cdb2e9e,0x3c3f643b,0x3c0b3ad4,0x3b5e403f,0x3bec2ebe,0x3bfd98b5,0xbc36b043,0x3bf890cc,0x3c3aa150, -0x3b9d2b2c,0x3adc5818,0x3bab9c77,0xbcadf5e8,0xbcdd24c7,0xbd10b368,0xbd3b8523,0xbd220a99,0xbcdee0bc,0xbc451594,0xbbd76201,0x3bfef2a5,0x3d6966b2,0x3d2fd78e,0x3d4f669d,0x3c9d88c6,0x3d333531,0x3d09db61,0xba6af6b2,0x3c953533,0x3bcd418a,0x3d3efa72,0x3d7b8a53,0x3ca04545,0x3ce95c63, -0x3cc26c1d,0x3caf9648,0x3bec496d,0x3c4a8850,0x3c0fc533,0x3bdbe880,0x3bc35ed7,0x3c182d29,0x3c294db7,0x3cbd558f,0x3c8ea5b7,0x3baa4801,0x3c1beb14,0x3c7c97f1,0x3cad972f,0x3c25d1b9,0x3cabf6bf,0x3c72d3ca,0x3cb5aa80,0x3cb791a8,0x3c768693,0x3d1c5e3a,0x3d2cfe5c,0x3d6ac281,0x3ca10370, -0xbb8a06cf,0xbcf512d4,0xbcbd6b1e,0xbc02393a,0x3be0b7fa,0x3c7a6f18,0x3a5e175f,0x3c8ff973,0x3cdbdd2b,0x3c9c395d,0x3c81ec0b,0x3c9608c4,0x3c81467e,0x3c93c0e5,0x3c803b9d,0x3c9b19e1,0x3b58238a,0x3c4bf5be,0x3c1c6355,0x3c12f011,0x3c15c3c6,0x3c3fd716,0x3c38d060,0x3bd6225b,0x3b7ace90, -0xbadb6b04,0xbb443162,0xbb9a2322,0xba17d1eb,0xbc62ea7b,0xbc0c18ad,0x3756e5f0,0x3b2010c2,0x3b0f1c43,0x3c0d6bfb,0xbc434d3c,0xbc87d51a,0xbcc8aa24,0xbc89e5ef,0xbbc10aff,0x3c31510b,0x3a5dedda,0xbbe47617,0x3d06b226,0x3ccb1b92,0x3c9fbd8e,0x3c94cdfd,0x3b05f661,0x3c65eb53,0x3c090d77, -0x3c562cdf,0x3c0bc279,0x3c4f7531,0x3c0cbe74,0x3c5b2a42,0x3c1d15c3,0x3c25f4b3,0x3c334280,0x3c8cfb6b,0x3c95c26f,0x3c6aa9da,0x3cc5f3a2,0x3bd4ad77,0x3c33f031,0x3c51ec76,0x3c017334,0x3ba069e8,0x3bb3b4b5,0x3bc9daeb,0x3b825dff,0xba9756fe,0xbc35ec20,0xbc8dc9b2,0xbcb5dc75,0xbc2dad9a, -0xbb05de3d,0x3b6b5a19,0x3c0f1842,0xba46149a,0x3a16d2ec,0x3cc789f8,0x3c272166,0x3c92fbf9,0x3ca6b108,0x3c739aa4,0x3bf52eda,0x3c588c4d,0x3c1a0762,0x3cd0c28b,0x3c0286d8,0x3c591dfc,0x3c2a7885,0x3c944054,0x3c2b7a58,0x3c1af696,0x3c14bd1e,0x3cd0a333,0x3bfab909,0xbac00f80,0x3ba0c82e, -0x3a89ff54,0x3bc92a13,0x3be755de,0x3bb70472,0x3a90b62b,0xbb2b7cd0,0xbb826b38,0xbb419da5,0xbab40adc,0xbbbf3799,0xbb4ea631,0xbae578d5,0xbad53c9d,0x3b1d5464,0x3933ea3f,0x3a7ce9f7,0x3cb8ab48,0x3b9ea21c,0x3c3c4faa,0x3c5dd3b2,0x3c52462e,0x3ca0302d,0x3c4ae35e,0x3ca8ccfb,0x3ca324d5, -0x3cc63d17,0x3c90c3b1,0x3cb05bd8,0x3c993a44,0x3c8f2a1a,0x3cb19847,0x3bab4816,0x3c841e8f,0xbc3917f0,0xbc0b1c77,0xbc1bdbf4,0xbc2bcf21,0xbc4fcd9e,0xbc64c09e,0xbc534b0d,0xbc6a2de3,0xbc7821e4,0xbc7fd103,0xbc9ca568,0xbcab5ba1,0xbca407ba,0xbc804e87,0xbc3bb7de,0xbbed9199,0xbbaab1c2, -0xbacf88dd,0xbb5e6bbd,0x3c6548a2,0x3cd1222b,0x3ca2dd35,0x3c53e842,0x3cbf4d63,0x3cc48cef,0x3cd2c981,0x3cc59be7,0x3cb52547,0x3cc25d3e,0x3cda2639,0x3ce106eb,0x3cc01ca9,0x3c101103,0x3ca569e4,0x3cba8e14,0x3c2c22aa,0xbbad7b31,0xbb00e6ed,0xbb2bc307,0xbb215e99,0xbb0c153b,0xbb1697f0, -0xbb46de06,0xbb4de0c1,0xbb436943,0xbb4017e4,0xbad72ff3,0xba9f9710,0xbace64ab,0xbad537d5,0xbafcdb07,0xbb0108bd,0xbab36394,0x3b5a41d3,0xbc0174a5,0xbb8c6b18,0x3ba42036,0xbce3a6d2,0xbd1ba7b2,0xbc9ab092,0xbca52cbc,0xbd034edb,0xbcdebe8f,0xbcd93c34,0xbcc8584c,0xbc9dc5c2,0xbca1aa6b, -0xbcb66f65,0xbc9f86ab,0xbd09f1c0,0xbcc63f89,0xbc77f13e,0xbd07bd86,0xbcc4fd05,0x3c01cb16,0xba8ccf34,0xbaad9f62,0xb916a4fa,0xba2e360c,0xba874000,0xbae17e0a,0xbab5e284,0xbb0a3775,0xbb24e73e,0xbb88631c,0xbb84cef5,0xbb68f718,0xbb767b56,0xbb876057,0xbb91662f,0xbba2a857,0xbb97dd20, -0xbc0e6fd9,0xbd1743de,0xbc2e0dd2,0xbcbac8dc,0xbc7d3c55,0xbca93bbc,0xbc3ecd6e,0xbb81ee2a,0xbcb8d4db,0xbc973520,0xbcc3cc8e,0xbc2b3b27,0xbc8da0b9,0xbcc948c5,0xbc560436,0xbc9f27dd,0xbc44f7b8,0xbd041bb5,0xbc1babaa,0x3aac650f,0xbb4fbcea,0x3b0e031e,0xbab68f23,0xbaf02d6c,0xbb9ada70, -0xba82bd2c,0xb9c90525,0xba7fe3cd,0xbbd0331e,0xbc0c197e,0xbc22dd8c,0xbc76fc06,0xbc849873,0xbc310677,0xbc3aa0ee,0xbc212b8f,0xbc633f8f,0xbd07d22e,0xbc83f049,0xbccc0cc5,0xbc85d236,0xbca917ee,0x3adf401a,0xbc968ebd,0x3a89b4c7,0xbcf1db25,0x3af17006,0xbc24ded8,0xbc5098c7,0xbc3c2a37, -0xbba966ef,0xbbeb9f69,0xbc393a0f,0xbca60237,0xbb7f90a5,0x3bf16c9c,0xbba95bd4,0x3bd7cb11,0xbab2fa57,0xba3ae68d,0xbbe240ae,0xbadd6dc1,0xbb9985b0,0xbc13546a,0xbc829cb6,0xbc9d5824,0xbc82de6d,0xbcba86f5,0xbccfb465,0xbc9ee424,0xbca95c9c,0xbbfaa537,0xbc29c6bd,0xbcebcf2c,0xbc9f20b6, -0xbc72f110,0xbbf3cccb,0xbb217302,0x3b9e245a,0xba0c23e2,0xba657975,0xbaa91e20,0x3bdde0d6,0xbb9208d6,0x3c12c321,0xbbbef437,0x3ba4441c,0x3ba171e3,0xbb4b1827,0xbcb7eabb,0xbc59e79d,0x3c480e47,0xbaadf1af,0x3c56c9f2,0x3aa24f34,0x393e5545,0xbc3d837c,0x3a8bbc20,0x3b07f300,0xba9a827a, -0xbc579053,0xbcb79807,0xbcbc0857,0xbd2aed70,0xbd409f4d,0xbcab9c68,0xbcc5a50c,0xbcaebcf9,0xbca5cadf,0xbd0b2e59,0xbcc6e9fb,0xbc8bd1da,0xbc0c36c7,0x3981033f,0x3c3a8e0c,0x3b646a6d,0x3a87da44,0x3c13e136,0x3c4633e5,0x3c5310b5,0x3b3dbd9e,0x3c48aebf,0x3c3d43f0,0x3b9e4314,0x3cc3f397, -0xbd124135,0x3b437a8c,0x3c52d167,0xbbcc2e38,0x3c70e642,0xb9b71caa,0xba2a3b01,0xbc3e5ca0,0xbb4c87f8,0xbb90bcd4,0xbc86bf33,0xbce4b4f7,0xbd1ac725,0xbcd687e6,0xbd3e4309,0xbd48a58a,0xbd06cded,0xbd02f043,0xbd0c8f55,0xbcf9fbee,0xbd8fd56a,0xbd25de0f,0xbcd1747b,0xbccbb3dc,0xbc8e994b, -0xbbe98dc9,0xbb922c1c,0x3bfcf523,0x3bb9e0d8,0x3bdbfaf0,0x3c412fae,0x3c9c02b7,0x3b9b2852,0x3c1ca523,0xbbb89088,0x3c4842e5,0xbc883fe9,0xbc564a80,0x3cd2544a,0x3c9f096b,0x3d1f96c5,0xbc43449e,0xbc768baf,0x3cb4239e,0x3cc91c5b,0x3c976880,0x3bc56d88,0xbb6cce0b,0xbc15fc95,0xbca9f8b9, -0xbcc235dc,0xbcf1d6fd,0xbd3cd24c,0xbd1ebe7e,0xbcce046d,0xbce93199,0xbd7ea672,0xbc06080b,0xbd1d0ace,0x3b2395e3,0x3ba7be6d,0xbb736017,0x3a3f97a1,0xbb64223d,0x3b48a810,0x3a8ac4b0,0x3aab7e92,0xba64a6e5,0x3c42526f,0x3c9dad4f,0x3b7bc5d0,0xbb3c8e5b,0xbca3f67f,0xbcbca5a4,0xbbd0bde1, -0xbcb3148c,0xbc9a1d90,0xbc80c8d0,0xbcae705a,0xbd3546cd,0xbd2744bf,0xbcf18f20,0xbc8d274d,0xbcfc0a81,0xbd0b4203,0xbc9e901b,0xbcdad6da,0xbcf75f78,0xbd0c30d2,0xbd2d1a45,0x3cd5fb62,0x3cb91dca,0x3c8573ac,0x3c3beda3,0x3c96c94f,0x3cb7de1a,0x3c8865a9,0xbc1f09ec,0x3bacc38a,0x3a467717, -0x3abc7993,0x38c0d37d,0x3b6e1a9b,0xbb48cdcd,0x3c264c45,0x3c3cdd65,0x3941124d,0xbbeab311,0xbc979810,0xbb698e8a,0xbba2abd5,0xbc8efd88,0xbc86d9c3,0xbcd1240f,0xbcbc7358,0xbcfc8c2a,0xbc0d264b,0xbc4941b5,0x3c37bcf2,0xbccc278a,0xbcfce002,0xbd322c39,0xbd5b6321,0xbd39c26b,0xbca8f944, -0x3b3d609c,0x3c814371,0x3d2cfc8d,0x3d09c747,0x3ceaa976,0x3d01b507,0x3cac4220,0x3c9e4413,0x3ba5a3ba,0x3c29cc11,0x3bcef61d,0x3abab7b2,0x3b9ab3f4,0x3b666830,0xb865decb,0x3c205026,0x3bc72cf9,0x3bbbfb2c,0xbab58a12,0xbc7da91b,0xbcaee9d7,0x3769b576,0xbc9902b6,0xbcd62243,0xbd34ad53, -0xbd37eb2e,0xbd2f298a,0xbcc13672,0xbca83109,0x3bcb54a9,0xbc95f9bb,0xbc772ce0,0xbc905f51,0xbc806bda,0xbcbcd489,0xbd2c67d5,0xbb91970e,0xbd8c8ae0,0xbd12a5b0,0xbc904c06,0x3b45eacf,0xb91de7fb,0x3c89b796,0x3ca019b9,0x3c8fca14,0x3c1ce566,0x3ba5938f,0x3a6f58ec,0x3b978617,0x3a89db0f, -0xbaca73b8,0x3aa6762b,0x3ac59a30,0x3b8d832f,0xbb282cf4,0xbc565754,0xbbb50f77,0xbc40bab7,0xbcb89d32,0xbcd4424e,0xbd0082b9,0xbd0f8e3d,0xbd20e51a,0xbd3f92f2,0xbd63209e,0xbd717e16,0xbd74c435,0xbd124fe3,0x3c4f92c8,0x3c3f0f91,0x3c143949,0xbd25ac5e,0xbd85e73e,0xbd142773,0xbd12e3c1, -0xbb3525dc,0xbb35718b,0x3c2e7f59,0x3be86d4a,0x3ab408e6,0x3a000355,0xbacb1f99,0x3bf59ec1,0x3c53d47c,0x3c277520,0x3c1c28c7,0x3bbf2841,0x3c9f70de,0x3ca0211d,0x3c4cf9de,0xbb66e5cc,0xbc1a23a0,0xba95a855,0x3b3798a2,0x3b3bd7d6,0x3c4372b5,0x3ba45080,0xbbab0cb7,0xbc9b2f19,0xbc583797, -0xbc323a3c,0xbb12c883,0xbbc1c742,0xbc2a39a6,0xbc32fcd9,0xbcd4c885,0xbd140c0b,0xbd310975,0xbd3cefbb,0xbce43b74,0xbcfb7ff7,0xbc8b4318,0xbbe967f7,0xbb80c544,0x3bcaf85c,0x3c66f56e,0x3bd93c9b,0x3c8d1891,0x3c0367f4,0x3c582a36,0x3bfe0d2f,0x3c3dd52f,0x3bab73db,0x3a63e56e,0xbb2abf76, -0x3b9297a0,0x3bc8774d,0x3b89431c,0x3c1815d0,0x3c1c011f,0x3bdb2041,0x3b025481,0xbc6de1c7,0xbc56c74d,0xbbfcefa5,0xba11dea9,0x3a91209d,0x38ce9e23,0xbc96a863,0xbc9e9be8,0x3bccd7fe,0x3b954ccc,0x3b4a810c,0xbabb15f1,0xbcb6fc38,0xbab84a57,0xbc2f6b41,0xbc6cec6c,0xbc2d1aa9,0xbc27186f, -0x3b42d6f5,0xbae7d482,0x3b7ac202,0x3b8d141e,0x3c2fd119,0x3bc2ebbe,0x3c4eca26,0x3c0602dd,0x3c3f804c,0x3bd41a58,0x3bed32c8,0x3ae2da4a,0x3b2bfe63,0x3be7ccec,0x3ba04563,0x3c92cc06,0x3c83d1ef,0x3c8b1856,0x3c1b84bc,0x3bb88a06,0x3bdbc04b,0x3b06c1f7,0xbb3b8560,0xbc19d943,0xbc3a2404, -0xbc218a05,0xbad9f06c,0xbbc243a6,0xbb2c67b1,0x3bb54a64,0x39edee9d,0x3b397adc,0xbb3ac75e,0xbc0c2185,0xbb653917,0xbc162357,0xbbf706f7,0xbb0b2f67,0x3bb62414,0x3b0033c8,0x3b8fe088,0xbb775397,0x3ba44831,0x3bf3b07a,0x3bf8b9d2,0x3bc5bf48,0x3bc566b6,0x3b782e15,0x3b8e644e,0xbb141d58, -0x3b4e1665,0x3c4275be,0x3bb886f9,0x3c1e2538,0x3bf790bd,0x3bfd9df5,0x3b8718cd,0xbb58758d,0xbc2e1f72,0xbc9ca9e3,0xbc490bc6,0xbc26c60f,0xbc1c41b0,0xbb4ff8b9,0xba82390c,0x39892a9a,0xbab3dc35,0x3ae05ae9,0x3ba8bf06,0xbbcd2792,0x3bc6edfa,0x3b71ba08,0x3bc8fbac,0x3beeb560,0x3c15c140, -0x3c3d87b6,0x3b7114de,0x3b376da3,0xb9b632d3,0x3ac614a7,0xb9a0e2c2,0xbbdf8071,0xbc0f6f18,0xbbf7da7d,0xbbe1b80b,0xbc461464,0xba5d617c,0xbb7bc0ba,0xbba0f5ff,0xbbeed6ce,0xbc190217,0xbc2be44f,0xbc333b70,0xbb8b22c2,0x3a81cddd,0x3b81a863,0x3aa23c8b,0xb9fd5030,0xbb05a790,0xbb3fa51d, -0xbb5f92e2,0xba1a5d67,0x3a10887a,0x3b7da4d6,0x3b91a4a3,0xbc26d76b,0xbc4aa592,0xba2d2e1b,0xbc12cbbb,0xbc521103,0xbb8f0ee5,0xbba34ffc,0xbb1c1f73,0x38f81060,0xb99e98c6,0xba6153bc,0xb9a97325,0xbc3c3aff,0xbbb78ff6,0x3af48b37,0xbc3eb351,0xbc021b68,0x3be147a8,0x3b915968,0x3b98d583, -0x3ba7ca10,0x3bb8f139,0x3bb2718a,0x3b8b2f6d,0x3b301301,0x3a3a1912,0xb9204b5a,0x39a8ecfe,0x3abfa218,0x3adae0e1,0x3b426018,0x3b58a01f,0x3b527c17,0x3b57eae6,0x3b80d747,0x3ca86a53,0x3c3846d5,0x3bea0f8e,0x3cda7aed,0x3ca16a9a,0xbc1c6357,0x3ccf278d,0x3cadb02e,0xb836cb08,0xbb69bdc3, -0xbbe830cb,0xbc0e4e68,0xbc134abc,0xbc3fbe10,0xbc0b846f,0x3cbdfa39,0x3cec5324,0xbc4b1258,0x3c9aac1d,0x3cda792e,0x3c2e2035,0x3c4fb925,0x3c67338c,0x3c612b61,0x3c5a112e,0x3c5702a5,0x3c5add59,0x3c5370b5,0x3c537f51,0x3c50baf2,0x3c5599bc,0x3c55b80b,0x3c6b39a9,0x3c805310,0x3c7f8c98, -0x3c65d6ab,0x3c5c469f,0x3bf758dd,0x3c963f3c,0x3c59e02c,0x3c0a1f5b,0x3bc5dcdc,0x3c5b75d5,0x3ca766a2,0x3c36dcf7,0x3c0c8e69,0x3c94717e,0x3c3f8675,0x3ca611ed,0x3c7eb38e,0x3c6b4b69,0x3bd4764b,0x3ca25e04,0x3c920143,0x3c8af286,0x3cb43750,0x3ce6ecc3,0x3c77026c,0x3c9b5fa0,0x3c96d73b, -0x3c874c2f,0x3c843ea2,0x3ca183c1,0x3c983418,0x3c96f10b,0x3c9783f5,0x3ca1e24e,0x3cb99b87,0x3cf19c94,0x3d132971,0x3d0bf03e,0x3cb8ea72,0x3c81dbd9,0x39345986,0x3b7c0f55,0x3c1b048c,0x3be6cedf,0x3c053efe,0x3c3ef684,0x3c73da35,0x3c6f90cb,0x3c5fbb2f,0x3bf5f874,0x3cba045d,0x3c5b7234, -0x3bfda63d,0x3cca24e8,0x3c8ac483,0x3c99c708,0x3cbea66e,0x3c90bfd3,0x3cd0a952,0x3caa9a54,0x3c99ce75,0x3cbf3cd6,0x3cbffce6,0x3ca01623,0x3c920d40,0x3caff6d0,0x3c95060b,0x3c8d6ab7,0x3c9b5aa9,0x3c907d7c,0x3ccb6aee,0x3d0d7729,0x3d3ceb5d,0x3d2a7946,0x3ca3b96a,0x3c5b549d,0xbc4e5a46, -0xba4ae734,0x3c054123,0x3acc5992,0xbb66ab1d,0x3adf9df7,0x3ba15872,0x3ca1b479,0x3bb59244,0x3b8edbdd,0x3b69f33a,0x3b5a28ea,0x3c7d0539,0x3c3e3e7b,0x3c6f0934,0x3c519448,0x3c9bf25d,0x3ca80dac,0x3cdb87cb,0x3cda18a5,0x3c9d5503,0x3cb17b59,0x3ccd1a0d,0x3c9b1f2d,0x3c9a5335,0x3cdb33e0, -0x3ca853b2,0x3ca1dc30,0x3cae4321,0x3cc2f3bf,0x3d21fc6c,0x3d671456,0x3da30e1f,0x3d8c0f60,0x3cb38dc7,0x3b86614f,0xbc9a57fe,0xbc95533e,0xbc240a78,0xbc8f83e6,0xbc010836,0x3a89d8ed,0x3b80aeaa,0x3c1bd6e1,0x3b04e915,0x3bbdcb57,0x3ace4a9d,0x3c04f6d5,0x3be76593,0x3c18fd03,0x3c079506, -0x3c5b9fd7,0x3ca75d7a,0x3bb0f2e8,0x3ce5f15b,0x3cdabe26,0x3cadd6bd,0x3d03c12d,0x3cfa98fd,0x3cc7d02b,0x3cba099e,0x3cc78ea7,0x3c90b607,0x3c828866,0x3c70c184,0x3c8c21c0,0x3d073c40,0x3d46e32c,0x3da54d84,0x3d89dba0,0x3c2f0f0f,0xbab0dad6,0x3c83f106,0x3d198c0a,0x3d061679,0x3ca5d060, -0x3b914370,0xbc2034c3,0xbabfa043,0x3bd9345e,0x3b9005b9,0x3bcc3c4f,0x3b61ec4c,0x3c318fa2,0x3c2b6020,0x3ca05868,0x3c34ad33,0x3c13be62,0x3cc8f786,0x3c22c69e,0x3cd8ec49,0x3c97699f,0x3a8796a8,0xbb7e1756,0xbbe3f7a3,0xbc01113d,0xbc8a119c,0xbd2408e3,0xbcc74f49,0xbc6adae5,0xbca61e9d, -0x3bb9432e,0x3cb4392f,0x3d135621,0x3cd5530a,0x3c96c532,0x3c97c2b0,0x3c881cde,0xbd409160,0xbce76635,0xbc428b15,0xbc1acabe,0x3b6ba7ce,0x3caf0449,0x3c2d0dd4,0x3991829b,0xbb4510bd,0xbb4b0c58,0x3be1db08,0xbb01e03f,0x39fd9615,0xb89aed5a,0x3ca21dad,0x3ca2a0ab,0x3c8bcc11,0x3c534c35, -0x3bcca33d,0x3c835ef9,0x3ccec3fd,0x3cf889b5,0x3d090308,0x3d067f55,0x3ce91f99,0x3cbcbecf,0x3cdd9b64,0x3c16fa85,0xbc245901,0xbc9bcd0b,0xbb1307d1,0x3d228199,0x3d6ae875,0x3d58a9e5,0xbbf2c769,0xbcb8c83d,0x3d082672,0x3d53e4cb,0x3d2b9081,0x3cbe2b18,0x3d2496f2,0x3cc9b78a,0x3c97993e, -0xbba7bf7f,0x3bccea0e,0x3a189336,0x391e16d5,0xba890ab8,0x3b4064d6,0xbbebe23e,0x3c8ff3fe,0x3c9ad469,0x3c866240,0x3c13fbe5,0x3bed9f40,0x3bf02459,0x3c17eae5,0x3c932480,0x3c649bdf,0x3c69460a,0x3c88e767,0x3ca60f0c,0x3cbb48bf,0x3c24547d,0xbc00c6a5,0xbd0d1057,0xbc9f10d2,0x3d4263b1, -0x3d21dd92,0x3d40aff6,0x3d82ab61,0x3d18a1cd,0x3d868147,0x3d654eed,0x3d046063,0x3d39f36c,0x3d1e34ef,0x3cdfe476,0x3ca6c221,0x3c0c643b,0x3c00ccf2,0x3aca0be4,0x3b69c875,0x3b73d3ab,0x3b3e47a1,0x3b17b854,0x3bb8a8d9,0x3c7dd939,0x3ccf81b2,0x3b5b37f8,0x3b7baae3,0x3bcf220a,0xbad5fa12, -0xbb34cc72,0xbbe65379,0x3aff7198,0x3c7a3cdc,0x3cc5fe94,0x3d2813d0,0x3d03d870,0x3c61033f,0xbc2f1352,0xba31b931,0x3d8621f1,0x3da0a2a3,0x3dbc66b7,0x3e057cf6,0x3dae37ef,0x3d66c653,0x3be53215,0x3b157680,0x3c27c75a,0x3c624aaf,0x3ce66357,0x3cbbdf10,0x3cc840b2,0x3be9f097,0x3b8b4aae, -0x3c2c9066,0x3b98322e,0x3b74ec16,0x3c10aa37,0x3c3b7e57,0x3c1fad60,0x3c8737a9,0x3c073653,0x3b3d516c,0xb90e1ca4,0x3b24c7ff,0x3b47e23a,0x3baaf887,0x3c551dc5,0x3c46ed91,0xbb87bfd5,0x3b9c4bec,0xbb398baf,0x3c68806c,0xbc104262,0x3c82da5e,0x3d37e4fb,0x3dd4dae3,0x3e0c6315,0x3e14fabc, -0x3dc25efd,0x3dcf25b4,0x3d760e84,0x3bc63662,0x3d0a0007,0x3c8af4c6,0x3c8a7cc4,0x3c77be9f,0x3c5c9f2c,0x3c6db710,0x3c85651d,0x3cc255ce,0x3c7b927b,0x3c2eaed3,0x3c1ff339,0x3c94997a,0x3c9c15ba,0x3c317d66,0x3c8518ba,0x3c95a88c,0x3c505476,0x3c1e3eef,0x3ba602ec,0x3b477761,0x3a2c46d8, -0x3c289738,0x3d068d0f,0x3d592e2d,0x3d883f62,0x3dbd215a,0x3d73d950,0x3d54e247,0x3d99ccaf,0x3d8cfa18,0x3d8e57fb,0x3d76b927,0x3d9ea8b1,0x3d17286f,0x3cf19cbb,0x3c1a35fa,0x3c6739c2,0x3cb4ad78,0x3c9e5018,0x3ca36894,0x3c85dd62,0x3c88811f,0x3cacfd3d,0x3c5e34a6,0x3c7678f4,0x3c2c905c, -0x3bb25534,0x3c1898d3,0x3c6cfe0b,0x3cb22113,0x3c8ab19e,0x3c279425,0x3c199fae,0x3c5b11fe,0x3c8dddd9,0x3ca918c8,0x3d29fa62,0x3d4ccbfe,0x3d40b014,0x3d0b0c15,0x3c83d874,0xbb48b9ce,0xbb1edd64,0x3c058a67,0x3cf83f4c,0x3d0ccd69,0x3d1fc41c,0x3d011238,0x3d15276c,0x3cdd5216,0x3bdb010e, -0x3cb813e6,0x3c8cc791,0x3cafb5a6,0x3c8b6cd1,0x3c84c6e2,0x3c44e996,0x3c65cf82,0x3c21ea5b,0x3c201fad,0x3bf4259b,0x3c32cdad,0x3c52b419,0x3c4b3497,0x3c2d1c04,0x3c2e610e,0x3c72fb73,0x3c8c07fb,0x3c913525,0x3c85bfc4,0x3c8c2474,0x3c64fea9,0x3cc31995,0x3cce0d1d,0x3cbce58c,0x3ca672b7, -0x3c857400,0x3c3356fb,0x3c4d6f1b,0x3c8a9278,0x3ce52f6c,0x3cd07d0f,0x3cb504c7,0x3ccb2518,0x3ca83282,0x3c87bbfb,0x3c93569f,0x3c42c6db,0x3c854694,0x3c5e7087,0x3c426aa5,0x3c6aed9a,0x3c859e24,0x3c6c1e7d,0x3c512015,0x3c877bba,0x3ca85461,0x3c74df22,0x3cbeb71d,0x3c43a8d4,0x3c43af52, -0x3bad8bff,0x3c10f9c3,0x3c5c9425,0x3c8e0b44,0x3be4964f,0x3c17a58e,0x3bc9206f,0x3b0da763,0x39239e86,0x3b0c2b7c,0x3b8049eb,0x3becba53,0x3c48d2b1,0x3c9d2ec6,0x3cc88f06,0x3ce0900a,0x3ce0e41c,0x3cfe1ae7,0x3d05f40e,0x3cc7baae,0x3cca6e77,0x3ce0f7fa,0x3c5b6c55,0x3cb8fd28,0x3cd938ce, -0x3cce123b,0x3ce70544,0x3c881d4e,0x3cb589b2,0x3cb78784,0x3ca6f615,0x3ca6bfbd,0x3ca54821,0x3c92cd55,0x3cbcc0a1,0x3caf5363,0x3c694240,0x3c7c9528,0x3b4575c5,0xbafa4323,0xbadc75bf,0x395c150d,0x393dd81c,0x3b256961,0x3b4f08be,0x3aec4ecf,0x3b9253b5,0x3be39d9d,0x3c17b965,0x3c430c9a, -0x3c6d0ae7,0x3cb002ff,0x3cb0fc1f,0x3c87c2c5,0x3c90d0e0,0x3cbe113a,0x3c76ef94,0x3c915144,0x3cbae47d,0x3c54935c,0xbb8e6342,0x3cb500b2,0x3c92c0e7,0x3b00d5e9,0x38a1ceec,0xba180960,0xba8a7bca,0xbac695fe,0xbb27cd89,0xbb2db810,0x3c9f6f3c,0x3cb4035a,0xbb980853,0x3c7cff0f,0x3caee062, -0x3c49b48f,0x3c59edc9,0x3c53a5e8,0x3c498ccb,0x3c384b99,0x3c30e77a,0x3c338fe8,0x3c48fa8a,0x3c611ebf,0x3c7d02d7,0x3c8d01a5,0x3c8e5b0e,0x3c960128,0x3c947782,0x3c94d84b,0x3c99474a,0x3c8ec09b,0x3cc8d7b2,0xbce45f52,0xbca43a74,0xbcbf2634,0xbcddb897,0xbbce9d15,0x3cbc8335,0xbcce0302, -0xbc080316,0x3caccb2c,0x3cc0f30a,0x3cda8bc6,0x3ccc646e,0x3cd70e05,0x3d04b6ea,0x3cdd9a14,0xbc01e2fc,0xbcc1a8a2,0x3cfec3d4,0xba9802c2,0xbca43a05,0xbca83b39,0xbc9b490e,0xbcae8b90,0xbcab175e,0xbcb31567,0xbcb32df2,0xbcad242a,0xbcac37c2,0xbcae4df0,0xbca97a27,0xbcba0aa3,0xbcb77c74, -0xbcacc999,0xbcb97a03,0xbcb70af9,0xbca5690e,0xbcb002d5,0xbcbb9dea,0xbd0aa580,0x3a053652,0xbc7384d4,0xbb19cdfd,0xbc473d85,0xbc58b144,0x39b8a707,0xbc094c94,0xbc39b2fc,0xbbc014a0,0xbc5645dc,0xbc5f3911,0xbb127e25,0x3c5f1f68,0xbc523375,0xbb1c38d3,0xbc017c58,0xbb3d9b3a,0xbce38fcc, -0xbcb90882,0xbcdbf480,0xbce1badb,0xbce2f81d,0xbce919cd,0xbd0421cd,0xbd05150c,0xbd0a3c8b,0xbd0149d2,0xbd2afebf,0xbd3048a2,0xbd14e7c6,0xbd2d0763,0xbd201c47,0xbcdb8e3b,0xbcdb9583,0xbcdff348,0xbcffe1b0,0xbca6ac8f,0xbcdfef88,0xbc84ea95,0xbc306e28,0xbb2afafe,0xbc06136a,0xbb8a6f6a, -0xbc65bbb4,0xbc43005c,0xbcb79b65,0xb8968c99,0xbc2c9336,0xbb4fdabb,0xbbfa1391,0xbbefe885,0x3a58926a,0xbbc84bb4,0xbc59cb81,0xbce0e1ca,0xbcf3de7b,0xbd0923c4,0xbd0d2793,0xbd0d0b34,0xbd0f98c1,0xbd10674c,0xbd18b0e2,0xbd0f9b86,0xbd429c02,0xbd4e6947,0xbd1cd8f7,0xbd4ce43d,0xbd2ec2c5, -0xbcc5e9cf,0xbd008384,0xbcc16ce6,0xbcf49cda,0xbcda7083,0xbcaf7ba7,0xbc87bfc7,0xbbb3eed0,0x3b1885eb,0x387e88ef,0x3a3d1956,0xbb4010e0,0xba55584b,0xbabfe378,0xbb1bc7e3,0x3ba9ac21,0x3ad614bf,0x3b153761,0x3b191f89,0x39f8e52d,0xbad27626,0xbc04d5dc,0xbce0f5cc,0xbcebf122,0xbd1b70e1, -0xbd213543,0xbd36bde9,0xbd418338,0xbd488266,0xbd5775fa,0xbd35ac79,0xbd94d4e1,0xbda2faf2,0xbd6e3e8b,0xbda1bb8d,0xbd82c9fd,0xbcb8ba11,0xbcefe9c9,0xbceffa9e,0xbcfca1c2,0xbd05672c,0xbce273e4,0xbcd68308,0xbc16db8c,0x3ad071c8,0x3c33da46,0x3b18d220,0xb8da9c12,0xb9e5703c,0x3c02408a, -0x3bfae708,0x3c1892cf,0x3bdfdb35,0x3bb6eeef,0x3c099f7a,0x3c042556,0x3c033855,0xbc34c8e1,0xbcdc2060,0xbd1d18c2,0xbd37a835,0xbd3e4e07,0xbd451405,0xbd2c89b1,0xbd3b8fb8,0xbd488b49,0xbd2a1903,0xbd9299fe,0xbd9dee39,0xbd393730,0xbd9c702f,0xbd60a31e,0xbc96dfdb,0xbd053f94,0xbd6e8873, -0xbd57e827,0xbc0650c8,0xb9c570c5,0xbc01bc81,0xbba356fd,0xbc5dcb5f,0x3b023521,0xbaf1522b,0x3ae54725,0x3ab660b7,0x3aac4f79,0x3bd1c4d7,0x3c8b731a,0x3b002322,0x3ab027f4,0x3c103ef0,0xbb7f38e7,0xbc9a5e41,0xbd0c89aa,0xbd0f9dd8,0xbcc8803f,0xbc9757aa,0xbc95e6c1,0xbc978254,0xbcf68664, -0xbd383944,0xbd3ec555,0xbd8ea792,0xbd091e80,0xbd145173,0xbd6c2dfd,0xbd80f904,0xbd8ca1a8,0xbd8ebdb4,0xbd98a84a,0xbd581b6e,0xbd56198e,0xbd47525f,0xbd23119c,0xbc42cbbd,0xbb59da55,0x3c28bb0c,0xbbc7e29b,0xbb465f1d,0xbb7f4510,0x3a6fe54c,0x39ef799a,0x3a94b032,0x38a11f19,0x3c5eebb5, -0x3c2a1bcc,0x3aab5ff6,0x3b541ca1,0x3c432892,0xbc186482,0xbd27879f,0xbd3e96d3,0xbd61dc45,0xbd2565a4,0xbcc26d66,0xbbc3c754,0xba16a56d,0xbc4e9d48,0xbd41ecc3,0xbd47261d,0xbd44a00b,0xbc205abe,0xbca8e1f0,0xbc7d3f9c,0xbcfcdc7d,0xbd2ed79d,0x3c2db9a0,0x3c8332f8,0x3cc20309,0x3c76c215, -0x3cee82aa,0x3c67d927,0x3c063abe,0xbc41b16e,0x3955b64d,0xbbb18d5c,0xb92e7ecf,0xbb6a45fe,0xbb9663f1,0xbb1875f6,0xbbd1d03f,0x3b113fc4,0x3c6200c9,0xbb4d4c55,0xbc3e7a3a,0xbcb0d6d9,0xbc6c5bdc,0xbca7fab6,0xbd06d371,0xbd478125,0xbd6714c6,0xbd9fa6eb,0xbd64c48c,0xbd43b588,0xbd793845, -0xbd7cff32,0xbdb0627e,0xbd88b633,0xbe00a9c5,0xbdf555b9,0xbd8f15ed,0xbc56e52e,0x3c10df49,0x3d2362d1,0x3d6ed6de,0x3d064675,0x3d38b7c4,0x3ca09dee,0x3c4a972a,0x3b657c51,0xbaa25f28,0xbb2da07e,0xbab968bc,0xba071e2d,0xbafa0588,0x3ac10cb7,0xbb881248,0xbb9a3954,0x3ca83217,0x3a86d82b, -0xbbd2baf3,0xbc90ae65,0xbc890a10,0xbcc2078e,0xbccd3d47,0xbd2aeeef,0xbd4c7ea8,0xbd8de986,0xbd6d2f81,0xbd85cee8,0xbd9c4f3e,0xbdbe8ce1,0xbdd5297c,0xbd8fcaff,0xbe018d07,0xbe05b8c5,0xbdd6b098,0xbd01de31,0xbd61cccd,0x3b9c6b05,0xbbab4e5f,0x3c33dc5a,0x3c739b69,0x3c837e04,0x3c9b0beb, -0x3c88a5cc,0x399c6719,0xba1a6499,0x3b8807db,0xba491339,0x3b1712a0,0x3ba77cde,0x3bb0aa83,0x3c02eef6,0x3ca0534b,0xbacabf5d,0xbb33151e,0xbc32fe9d,0xbce6426e,0xbd29a589,0xbd2b8fc3,0xbd382c81,0xbd124e9b,0xbce39ac6,0xbccf5318,0xbd12e8a6,0xbd34c0d5,0xbd5b97bd,0xbd469541,0x3c111996, -0xbd0435a3,0xbd2bf990,0xbdaada4e,0xbd82c392,0xbdaa6f5c,0xbc623b48,0x3d5029e2,0xbb015b0f,0x3ca67c05,0x3c1f4bb6,0x3b87d559,0x3a31cbb0,0x3c097619,0x3c2e2ae9,0x3c8db5ec,0x3c25fab0,0x3bd0aac2,0x3b8e29d7,0x3c340c13,0x3c112958,0x3c021389,0x393dda6c,0xbb992b91,0xbafd5e57,0xbc376ee7, -0xbb598dad,0xbc3d4633,0xbcc99085,0xbd02d6ca,0xbd3aac20,0xbcff2e7d,0xbcf70e4b,0xbd442274,0xbd0246e3,0xbd0e6ca9,0xbce2cd2f,0xbd8cad0c,0xbdaa7c2f,0xbdb7beb0,0xbd9b9b02,0xbd462085,0xbd06abc0,0xba52aa1d,0x3b440e94,0x3bd687ac,0x3c58e5d7,0x3c4bd007,0x3c41b470,0x3bc9a64a,0x3ba572f7, -0x3c2b7a0d,0x3b7e5717,0x3b13f685,0x3a7a4dcd,0x3ba37de2,0x3bfbe47c,0x3be53c85,0x3c0c6cef,0x3c87ba7e,0x3bc18f91,0xbb8394b8,0xbbdf4820,0xbb2133ae,0x3b8c271d,0x3c030636,0x3c1783f2,0x3bca3d46,0x3a621211,0xbbd9b663,0xbb94adcb,0xbc59fd0e,0xbd0869c4,0xbc9bd160,0xbcc32607,0xbd3652f3, -0xbd359da3,0xbce6a620,0x3b96f8c0,0xbc091de3,0xbabc145c,0x394ca614,0xbb53eecc,0x3b7d59f0,0x3bd551d2,0x3ba1d2d2,0x3b9a2fb0,0x3c037572,0x3bf93c36,0x3c30139b,0x3c1d96ba,0x3bc78266,0x3bc11e18,0x3acd9b41,0x3b29626f,0x3ab5bc1b,0x3bd5c34e,0xbbab593e,0x38632b8e,0xba5e69ae,0x3b80c605, -0x3b784f3f,0x3b9ae6f1,0xba3fd55e,0xbb7ee8f0,0xbc074753,0xbc098f34,0xbc424269,0xbcb9f146,0xbc9229f6,0xbc8ec2c2,0xbca8a938,0xbc571d8f,0xbba02700,0xbc5d50c0,0x3bd4af35,0xb82dafc9,0x3c03c274,0x3c3f21bf,0x3c111565,0x3b8a2e81,0x3bb8b3f4,0x3b14f991,0x3acbfdfc,0xbba4cc6d,0x3c1d306e, -0x3b7a2487,0x3c2e11a0,0xbab6d207,0xbb9b8e91,0xbb86e685,0x3aa0b6bf,0xbc32a72f,0xbbb78e46,0xbb025f7d,0x3a36f572,0xbade36ca,0xbb2c53d7,0xba8050a5,0xbbd3afb3,0xbc26d415,0xbc6e9dec,0xbc775643,0xbc6364d1,0xbc2f6f24,0xbc22f58b,0xbc11e8bc,0xbbe09500,0xbbf1b3aa,0xba8773b6,0x3a0b203e, -0x3cc64968,0x3b76aa5f,0x3aba52f8,0x3ba6e1ce,0xbb62f24b,0x3c729d16,0x3b0eb261,0x3c19b4e0,0x3c37f60e,0x3c23a003,0x3a5281f9,0x3b80bf87,0xbb693237,0xba8e22ff,0x3c0b11fc,0xbb808161,0x3ba9befa,0x3ac276ef,0x3bab506d,0x3ac6cd83,0x3b1081c1,0x3b7e1ac7,0x3ba3c518,0x3bb0febf,0x3b75c780, -0x3b02a6ca,0xbacf9370,0xbbb83521,0xbc40ca51,0xbca342f7,0xbc805b28,0xbc51b879,0xbc186c1e,0xbbcc7ba9,0xbb9ac166,0xbc059b7e,0xbb9b1242,0x3c371f40,0x3cd84497,0xbbc7a963,0x3b8f478f,0x3cc7f9dd,0x3ce0c5a6,0x3cd046e2,0x3cc56405,0x3cd70346,0x3cfb22a5,0x3cfecab8,0x3b0fff5e,0xbc13221c, -0x3cbc686c,0x3b61e207,0xbbf2910a,0xbbaffb9f,0xbbb5a814,0xbb943f20,0xbb823126,0xbb8ae777,0xbb87dae7,0xbb72566e,0xbba95d3b,0xbbd0b669,0xbbea0e4b,0xbbfea418,0xbbe6222e,0xbbe90808,0xbbc0a406,0xbbc336ca,0xbbb21545,0xbba8ffeb,0xbbcca75e,0x3ce44b26,0x3c8d40b6,0x3ce90114,0x3c8dac47, -0xbc3fc405,0xbd0c4b11,0x3c9aaafd,0xbb8bbbe4,0xbd06fa03,0xbd141175,0xbd1e59a7,0xbd0e35bd,0xbd13b901,0xbd3085e4,0xbd0cc994,0xbba21555,0x3c85d42c,0xbd178aa3,0xbc37880a,0x3c51c62c,0x3ce5bffa,0x3cb42ec3,0x3cc487a3,0x3cc3920d,0x3cc8c31b,0x3cc2cf8d,0x3cb3dc0d,0x3cb52fd1,0x3cb599e5, -0x3cb8a17a,0x3cbda111,0x3cbf9a5b,0x3cd3d678,0x3cd1742a,0x3ccb0db3,0x3ca61fde,0x3ca0c607,0x3c8de06c,0x3cff143c,0xbcf3e45f,0x3c053666,0xbc581e65,0x3bfd2b54,0x3c0eb0b0,0xb9e8ee17,0x3c2ee22a,0x3b3d97da,0xbb2d944a,0x3b32b3a3,0x3c3ad67c,0x3ac08948,0xbcaa8bf8,0x3c636418,0x39bf8fb1, -0x3c2a58c3,0xbb5cdc7e,0x3d01c8f1,0x3ceea2b4,0x3cfac54c,0x3d0aa45d,0x3d0284f6,0x3d017237,0x3d06c6bd,0x3d010e51,0x3d08fafb,0x3d16d3dd,0x3d152f6e,0x3d127f9a,0x3d236e0b,0x3d188066,0x3cf39ca0,0x3c6f8de4,0x3c79685c,0x3c389f47,0x3ca89249,0xbb9a999d,0x3c8bcf16,0xbbe5a54c,0x3bede441, -0x38c455cb,0x3c974b05,0xb9115389,0x3c837024,0xbaf13185,0x3cbed947,0xbb02fa3c,0x3c93f97d,0x3c03f905,0x3c89c8f8,0x3c86b6e6,0x3bf13578,0x3c383195,0x3cba45ea,0x3d203ea1,0x3d0ebb97,0x3d2da25c,0x3d223a09,0x3d1900bf,0x3d058c1b,0x3d063672,0x3d031d60,0x3d21871d,0x3d1a2da3,0x3d354beb, -0x3d56195d,0x3d435e1d,0x3d1a2544,0x3c110a2e,0x3c15ab58,0x3c1bc531,0x3ccc4d4e,0xbc5708fd,0x3ae9bfb0,0xbbcb207c,0x3b0e1224,0x3b78b676,0x3c93b398,0x3bbd9195,0x3b830202,0xba895c83,0x3b9f5e50,0x3bd4af52,0x3ca3ab8f,0x3c097951,0x3c801b5f,0x3c8e1da3,0x3c9d94df,0x3c56238c,0x3c985e00, -0x3d302bda,0x3d17506a,0x3d4f978a,0x3d47c296,0x3d56d7f1,0x3d3e0fb7,0x3d2d77c4,0x3d37e679,0x3d75c95e,0x3d5eace6,0x3d7dade4,0x3d8ad178,0x3d6c1c95,0x3d018a69,0xbc4fd661,0xbb807cae,0xbbd8dfe8,0x3caf5fc2,0xbbb443a8,0x3bd53401,0xbb78b9cc,0x3c09635e,0x3c1389ea,0x3c4cf3a6,0x3b813418, -0x3b730781,0x3ba4141c,0x3bbbee68,0x3c26421f,0x3c8270ab,0x3c85a1f4,0x3c8f15c4,0x3c751f53,0x3cd62f0b,0x3bb421aa,0x3ce389db,0x3d34b997,0x3d421c73,0x3d6fbf5d,0x3d5ce16e,0x3d4e336c,0x3d228281,0x3d1cb57a,0x3d23d3a6,0x3d480e55,0x3d566075,0x3d82aed4,0x3d9a93cb,0x3d902609,0x3d41e159, -0xbbb9bc88,0xbc1d1a51,0x3cb40ce8,0x3d048f61,0x3c3a8c44,0x3bd449c7,0xbbe75464,0xbc4ccc83,0x397e1c1f,0x3abd0c2c,0x3b857c31,0x3bccf055,0x3b5316db,0x3b50f930,0x3bc7634a,0x3c87b28f,0x3bd0646f,0x3c2eec46,0x3c1d71aa,0x3c831a1f,0x3c0dd71b,0x3cc9162c,0x3ce52170,0x3c4aa39f,0x3ad27ef4, -0x3c7feaf1,0x3cb8a6ee,0x3b841d3b,0x3c72b1ed,0x3c7f31b9,0x3cf05730,0x3d5e66c1,0x3d7b1aa3,0x3d3af2cb,0x3d151580,0x3cdacb31,0x3b4cab9c,0x3c9e92f4,0xbbca8d24,0xbcb1e4b4,0xbd30ad96,0x3b8f3427,0xbbd01599,0x3c92ead8,0x3c08212d,0xbb872a0c,0x3b872497,0x3a9d58e6,0x3b944153,0x3b39cdf4, -0x3b0d2259,0x3bc7e9f1,0x3c96de0b,0x3cb42c60,0x3c41aba6,0x3c410115,0xbc13f009,0x3b47643d,0x3d2df1c1,0x3d415fa8,0x3d91a7a4,0x3d167f87,0x3cbd4c51,0x3b95a140,0xbbea3686,0xbc839d2a,0xbd053a0b,0xbc16dcab,0x3b097aa1,0x3c93732b,0x3c98f535,0x3c87ae19,0x3bc9097c,0x3b94b35e,0x3cc6aa99, -0x3cca8c7d,0x3d2589eb,0x3cb13f8f,0x3d1ec567,0x3c5b0dce,0x3ba0d5a3,0xbb885674,0x3b064f43,0x3b07c69e,0x3b045459,0x3b5478c8,0xb9c93634,0x3a8fe090,0x3bb43950,0x3bc5d588,0x3cd7cf6a,0x3c51e7c2,0x3c1e68ea,0x3c923f18,0x3c80ac91,0x3c259a0c,0x3c749c63,0x3ce84361,0x3d1e04f2,0x3d058daf, -0x3d12346e,0x3cabe750,0xbc873465,0x3b553440,0x3caa7096,0x3d84c2de,0x3cef2055,0x3c89930a,0x3bfc8a26,0x3c2b2922,0x3d1b1f81,0x3d060d61,0x3cf0a689,0x3d20c001,0x3d193a34,0x3c8e378c,0x3c2d03f5,0x3c0f6951,0x3b2059c3,0x39f4d388,0x3b39233c,0x3b86c107,0xb8fa30bc,0x3b985763,0xbb4c87dc, -0x3b2118e3,0x3d02f025,0x3c112cbf,0xba8fa8ec,0x3aec6440,0x3bfc49f0,0x3b9bde03,0x3bd01218,0x3ce9ead1,0x3d26d941,0x3d0f7dce,0x3d4a6975,0x3d0383e1,0xbb1c8f74,0xba5198d7,0x3c35406a,0x3d9769a8,0x3d708f1b,0x3d871e23,0x3d9dec45,0x3d23be0d,0x3d9008c2,0x3c4f5804,0x3c361e95,0x3c9665b3, -0x3cad32c7,0x3d00bb0a,0x3cc43e05,0x3c47e5d0,0x3b8cc178,0x3914ed6d,0x3b5821b5,0x3b79f351,0x3b80d884,0x3c265f2e,0x3bce99bf,0x3bd87b89,0x3ca5c430,0x3b8ba76b,0xbbe199a9,0x3b2a2eb8,0x3c0ff9bf,0x3c5dee14,0x3ca20547,0x3c0c2d98,0x3a991f8a,0xbb139490,0x3c64d2d0,0x3c139dc7,0xbcbc0cba, -0xbd022852,0xbc7fed5e,0x3d2a6b5e,0x3da62598,0x3df540fa,0x3e26e393,0x3dd32c08,0x3db2faf7,0x3cb9a51f,0xbcf8d223,0x3caf5a3b,0x3c12e175,0x3c12e7ab,0x3c055522,0x3c85e19f,0x3c7bf036,0x3cb0b73d,0x3c9fd901,0x3c81daa9,0x3c101b27,0x3c189b33,0x3c0c3789,0x3c22ea3d,0x3c7adeb9,0x3c07caed, -0x3b8b97a0,0xbb4d0de5,0xbb7c6278,0xbc8af13c,0xbc91ea97,0xbca3bc54,0xbc045c65,0x3c2b9d7d,0x3c58034e,0x3cc3eb93,0x3d1fe17f,0x3d875157,0x3d9b87fd,0x3de2f924,0x3dc6f26a,0x3d9c3f0f,0x3d7d56c3,0x3d87409d,0x3d04e3db,0x3cac9acb,0xbbf14c1d,0x3b43c60a,0x3c5f9399,0x3c423f0a,0x3c8a467c, -0x3c4653d2,0x3c46cc30,0x3c0fa45b,0x3c851666,0x3c217b9b,0x3c1849ec,0x3c23de6a,0x3c6610fc,0x3c6c1c1d,0x3c3b43cf,0x3c3fcf42,0x3b9da6b3,0x3c198916,0x3c860d07,0x3cbd433a,0x3d0b67d3,0x3d1f2486,0x3d20094b,0x3d2aab1b,0x3d0d28b9,0x3cdc1c05,0x3c170269,0x3cb89ae9,0x3d10fd98,0x3d68b5fd, -0x3d4526a0,0x3d478bfc,0x3d30fd8d,0x3d1008cc,0x3d035cc2,0xbc0b2111,0x3c0b18cc,0x3c09422a,0x3c1a2c2a,0x3ca31105,0x3c307832,0x3c620fad,0x3c208dda,0x3c38e13a,0x3c0ae116,0x3c07a479,0x3bd78c75,0x3c3b1d43,0x3c36643f,0x3bed579f,0xb9b52cee,0x3b002a05,0x3be21d6e,0xb9bba9a3,0x3c678c93, -0x3c4cc914,0x3c70398c,0x3ca4959a,0x3c9ea9a8,0x3c9d2f99,0x3c9e3da6,0x3ca38046,0x3ca1e280,0x3cef61c0,0x3d12cd81,0x3d3b6ba6,0x3d09aa5f,0x3cc2cae2,0x3cbe5caa,0x3c471489,0x3cab79f1,0x3ccca7b7,0xb9082414,0x3c2e56bf,0x3a54f2dd,0xba8250e7,0x3bac798e,0x3c652392,0x3c111a10,0x3c405d82, -0x3b123672,0x3ca83a65,0x3c2129c1,0x3c8f3a52,0x3ab71754,0x3beb0c12,0x3ba0ac92,0x3b895f74,0xbbcad10e,0x3bca7072,0x3b6b8c56,0x3b4afdbe,0x3b2cb902,0xbb0dd8c4,0xbb919f14,0xbba76a6b,0x3baa169b,0x3c522a2e,0x3cb69ab3,0x3cc6cffe,0x3cd2cb6e,0x3cf4c522,0x3ce44bf8,0x3ce4102f,0x3cceaacd, -0x3cbc5320,0x3c8caeb3,0x3c9675dd,0xbb8d0d9c,0x3c8a7411,0x3c83354d,0x3c605872,0x3c933337,0x3b19fd53,0x3c65e1a8,0x3beb242e,0x3bddc681,0x3b7c1ef7,0x3c36ff85,0x3c02d117,0x3c70065c,0x3c536dbe,0x3b603cd7,0x3c8b997e,0x3b38d1a6,0x3c7139f3,0x3c463424,0x3c5caaea,0x3c66d453,0x3c873391, -0x3c982584,0x3ca156a7,0x3c985604,0x3c992a41,0x3c9b2a48,0x3cbd41b4,0x3cde45d7,0x3d021371,0x3ce7c081,0x3cb929b8,0x3caf1fbb,0x3cafa036,0x3c97b80e,0x3cb04c9f,0x3c3fd5af,0xbbb67954,0xbc7b8584,0x3c3ea028,0xb9252e7c,0xbc6f2505,0xbc8fd26c,0xbc8523a3,0xbc71d754,0xbc86c079,0xbca678ed, -0xbcae70cc,0x3ae65341,0x3c7d53dd,0xbc80743b,0xbab75cc6,0x3c42f39c,0x3c848006,0x3c77ef63,0x3c7751d9,0x3c6b8f56,0x3c596102,0x3c4bb6b4,0x3c49eee4,0x3c621266,0x3c85870c,0x3c933dd9,0x3c994b82,0x3c969f26,0x3c9f42c6,0x3c9ffc43,0x3c9f2f05,0x3ca253d3,0x3c9ec122,0x3cce449c,0xbc9c76a7, -0xbc8072f7,0xbcdd5a62,0xbbbe4838,0x3cb2b9ed,0x3cfd90ad,0xbbea6089,0x3c89ee97,0x3d1c84f0,0x3d20104e,0x3d218df1,0x3d091361,0x3d1049d2,0x3d2dd3ad,0x3d1308c9,0x3c9b9086,0xba9050cb,0x3d15b4b9,0x3cc5843d,0x3ac415ff,0xbcc58fb2,0xbc898b88,0xbc9937ea,0xbc9a95bc,0xbc9f2a75,0xbc9d7d07, -0xbc97bce6,0xbc960b09,0xbc966cc3,0xbc93ae39,0xbc984499,0xbc92b971,0xbc8ffd9c,0xbc9241d8,0xbc8c2f34,0xbc6ac797,0xbc865b34,0xbcaf6b28,0xbc9f0a7f,0x3d1b1f17,0xbb730aff,0x3c6d981b,0x3aa8166c,0x3ba6931e,0x3c350ac4,0xbb9b20df,0x3be36328,0x3c0081a5,0x3bd638c6,0xbb87a6bd,0x3c364af8, -0x3d003637,0x3a480dcc,0x3c6ffca2,0x3b829024,0x3cb2e6cc,0xbc8329dc,0xbcb45763,0xbcb70dd4,0xbccf7bc5,0xbcc5ced4,0xbccb742a,0xbce34880,0xbcdf7688,0xbce11b16,0xbcd7fdd9,0xbcf04f23,0xbce1ed82,0xbcc4d629,0xbcbecd48,0xbca9f365,0xbc5d06c4,0xbca114d2,0xbcde51c6,0xbc92dee5,0x3bd6dc3a, -0xbc7eec8e,0x3aeadbd0,0x3af4ae6f,0x3c78b87e,0xbb894c92,0x3c407c66,0xbc543630,0x3c382d54,0xbcad97d6,0x3bfdb25e,0x3b18748a,0x3c1d2ed4,0x3b080155,0x3b8931f3,0x3c5768f3,0x3c3e8541,0xbbf9a62a,0xbcfea969,0xbccf70fa,0xbd097312,0xbcfa1aac,0xbcfea291,0xbcfd3b6a,0xbcf83f53,0xbcf5c25d, -0xbcf7f152,0xbd049ad5,0xbcf8cfcf,0xbcc7a102,0xbcc9c3e4,0xbc8fabad,0xbb866b5d,0xbca1a1b9,0xbd09f4cd,0xbc1ddeba,0x3cc52f0c,0x3bd85a24,0xbb19180a,0x3bc5f3bc,0x3c0e81de,0x3ba4fa1c,0x3b2d75df,0xba8d045d,0x39ad9733,0xbbaa0bb0,0x3b90a196,0x3abeedeb,0x3c4deb28,0x3bbf46dc,0x3bdee1c1, -0x3c230cc3,0x3c8b5790,0x3ba0e0d5,0xbd051749,0xbcd857d6,0xbd1830a9,0xbd14ca15,0xbd240f88,0xbd23ef1d,0xbd243d07,0xbd20f765,0xbd1d44dd,0xbd39f5cb,0xbd2bb33e,0xbd00889c,0xbcdb4c65,0xbc8187bc,0x3a0b74a7,0xbcb0eef8,0xbd2320f9,0xbcd313c8,0x3ad04eb1,0xbc4b10b0,0xbc706d30,0x3b8db69c, -0x3c04f5ae,0x3c16d43a,0x3b992bb2,0x3a15584f,0xbbae14a5,0x3b409c65,0x3b2eee18,0x3c3d48f9,0x3b8183af,0x3be3b589,0x3c5aa9cc,0xbb514b0a,0x3cee17c5,0xbc0cbe87,0xbd06cea5,0xbd0d657a,0xbd3a34fb,0xbd2838ae,0xbd291d5f,0xbd1ab1d8,0xbd1b23f0,0xbd2138ab,0xbd230e86,0xbd452bfc,0xbd223453, -0xbcc95fa6,0xbcd4d7cc,0xbc0f4d4e,0x3c6d9041,0xbcbc25e3,0xbd391d19,0xbd82c2e1,0x3d021c76,0x3d0d3920,0xbb38b82c,0x3b614eac,0xbc108dfa,0x3b91f512,0xbc033404,0xbae04759,0x3b8c294d,0x37e8cce1,0x3abf1ca4,0x3c71b827,0x3bca8cec,0x390019cf,0x3c78ce59,0xbbf6ed58,0x3a700df8,0xbc698bb9, -0xbd1a43a0,0xbcd30927,0xbd0949a9,0xbb3c6339,0xbc0fd10d,0xbca8880a,0xbd59e23c,0xbd5c6efd,0xbd4c2a0f,0xbc81b5c0,0xbccae357,0xbd82f5cb,0xbd70b5d9,0xbd9c41e9,0xbdac5862,0xbd918a98,0xbd3b9373,0xbd44c2bf,0xbc205cc3,0xbd2af5ab,0x3c5ed54f,0xbb3094bc,0x3bfb3784,0xb9f4138a,0xb9180726, -0x3a623213,0x3aa180c2,0x3973a858,0x3ac73cce,0x3a89b6cb,0x3be0ef5a,0x3a0fd674,0x3c2f254c,0x3ba985f8,0x3cb59bd7,0x3b9e3283,0xbcfac487,0xbcdc4c68,0xbd412654,0xbd12b91e,0xbcdc5659,0xbc0267c9,0xbc8323d8,0xbcc4099b,0xbd169162,0xbcd467c9,0xbb05d460,0x3d007967,0x3c331633,0x3cadcaab, -0x3d054fd4,0xbba25724,0xbc868b01,0xbbe465cd,0x3c893d86,0x3c86bb1e,0x3cb6bbc8,0x3b501dc5,0xbae4a490,0xbbb65378,0xba6b17f4,0xbb6f3684,0x3acb5ae9,0xba03acf9,0xbb6bfeac,0x3b9b5437,0xbb67dc89,0x3b8451dd,0x3cdf2130,0x3c1ac2dd,0x3b6be974,0xbc954eff,0xbc94f1a6,0xbc55f8b7,0xbc8e4b53, -0xbcdae2e1,0xbd0dbd72,0xbd081c4d,0xbd485ba4,0xbd3b1b02,0xbd582a28,0xbd362c8e,0xbd6dc8d3,0xbd4a5bd0,0xbd92c6d3,0xbda3b565,0xbda62619,0xbd0b7fd1,0x3c087166,0x3c8a45c7,0x3d4b1aa4,0x3cf90cde,0x3d196c36,0x3c79b912,0x3bbfdc53,0x3b81398c,0xba9a6f42,0xba98eef3,0x39ec0707,0x38f59f4b, -0xbb507357,0x3b779eac,0xbbf086a8,0xbb0ba344,0x3cb73428,0xb9f860c3,0x39a6e5dd,0xbb98192a,0xbcbe53ba,0xbc95d84c,0xbc8285ca,0xbce28cc1,0xbd09a321,0xbd278202,0xbd4f38cc,0xbd361ad3,0xbd7ab3fd,0xbd578b28,0xbd9352dc,0xbda16dd5,0xbdaeed2f,0xbdafae09,0xbda9ebd5,0xbc88b2a2,0x3d25cdda, -0x3d397093,0x3ca25a0a,0x3ca27fb9,0x3d019284,0x3c945c8a,0x3c9b5e39,0x3c81cf24,0x3b01aaaf,0xb85c4ebe,0x3b5dea68,0x391e5010,0x3b2c39f0,0x3b6e14c8,0x3b62f4df,0x3b9ca790,0x3c943503,0xbba3663d,0xbb510c7e,0xbc96f5f8,0xbcc98c29,0xbcef6417,0xbcfebbfa,0xbcc8324b,0xbc58aea0,0x3b91db08, -0x3c86bcd1,0x3c70f281,0x39d8f0c2,0xbba5f29f,0xbc30e2be,0xbbb5c2e1,0xbc2b24d1,0xbab9f78d,0xbb460a5f,0x3d27c3eb,0xbd33834b,0x3c7e9812,0x3d5f4859,0x3c21032b,0x3cb65cec,0x3c795d62,0x3c76917d,0x3c853a14,0x3c9582d7,0x3c84ca84,0x3c4dbfdc,0x3c61a1a5,0x3c294021,0x3adea7da,0x3bc9cbb8, -0x3ba84a66,0x3c15a15c,0x3bbbf8ec,0x3b0c9233,0xbab86b06,0xbc641db6,0xbc15d3e8,0xbcc51d5d,0xbc5ca901,0xbc6cae5f,0xbca443b0,0xbcfb73a7,0xbcfcd3f1,0xbd200de3,0xba5b47af,0x3be00289,0x3c4c8b3a,0xbbc19f1e,0xbcaac53d,0xbd221b12,0xbce7d778,0xbbac6cb8,0x3bbe416a,0x3cc0b998,0x3c98fecb, -0x3cb19f38,0x3c977c60,0x3c467304,0x3c3fd8b5,0x3b3cd394,0x3c058f8a,0x3a686694,0x3bc320df,0x3b7e040e,0x3c113b4a,0x3c454bb7,0x3c5238b3,0x3bedb406,0x3bf92518,0x3c46184c,0x3ba33cbe,0x3b1ae5c1,0x3b3000b0,0x3c345474,0x3c4f8791,0x3c784707,0x3cae00b4,0x3c76a840,0x3c8368a4,0x3cba2604, -0x3c804086,0x3bf71196,0xbc250744,0xbc84a92b,0xbc4bc1fa,0xbc14387c,0xbbba278d,0xbcad695a,0x3c7c1d1c,0x3c40f69d,0x3c507496,0x3c5bdb80,0x3a312f66,0x3c31fa83,0x3bff2aef,0x3c14701d,0x3b95382c,0x3c22a703,0x3bba3242,0x3c31cc81,0x3bdc4c10,0x3bf5d670,0x3bf6f192,0x3c24432b,0x3bcb2a85, -0x3acf265c,0x3bdb79e0,0xbbda2b7f,0xbb6628d9,0xbb9a84a3,0x3a30ce74,0xb90c663f,0x3abd3a93,0xbb2d9e52,0xbb554fb3,0x3a6fa178,0xba63ffd3,0xbbae0e0b,0xbc7e5faa,0xbc7883d8,0xbc7165bc,0xbc83693c,0xbc4085a0,0xbbabeb7d,0xbbe25f8d,0x3c897cca,0x3bae1baf,0x3c845df9,0x3c938743,0x3c5d2578, -0x3bc421eb,0x3c32b1ab,0x3beb74a5,0x3c8abc23,0x3985d21a,0x3c129306,0x3b394f7f,0x3c403150,0x3b25401e,0x3b6614d5,0x399220e1,0x3b661556,0xbc3a80bc,0xbc56dc78,0xbbf0dd5b,0xbc2aa2c9,0xbc1b55b3,0xbc1c13e9,0xbbd63131,0xbb96e37d,0xbb9ec866,0xbbd0da8d,0xbc05c435,0xbc156721,0xbc26be92, -0xbbf02d31,0xbbb835b5,0xbbea260b,0xbb1bad2a,0x3b7cb74e,0x3b8c34c5,0x3cd4d494,0x3baedb81,0x3bc51d73,0x3beed269,0x3ab91681,0x3c541f25,0x3b2942e8,0x3c50a42d,0x3c69f4cd,0x3c939120,0x3c32b290,0x3c82aafc,0x3c459df3,0x3c4f6739,0x3c90d53d,0x3ba475d6,0x3c9a353d,0x3b292a2a,0x3be3af8a, -0x3b7b1ab2,0x3bcfedda,0x3bdf827e,0x3bf439f0,0x3c0e5202,0x3ac0c90b,0xba70213e,0xbb5bc9ae,0xbbd1bf12,0xbc0ff9b1,0xbc52fa7d,0xbc25cb53,0xbbed1cb9,0xbb5ce50c,0xbacd475a,0xb990208f,0xbb2af486,0x3c11d36e,0x3cb3552a,0x3cc5344d,0x3c06a75a,0x3c96603c,0x3cd7c56b,0x3cf007d0,0x3cdc3017, -0x3cc917b0,0x3cd7fbbd,0x3cf600d7,0x3cf9c42a,0x3c823a61,0x3b3e7d44,0x3cb87739,0x3c857d29,0x3b84dec2,0xbbaa6d2a,0xbb5053de,0xbb48715a,0xbb5d7fa7,0xbb7b2bbf,0xbb6bfa90,0xbb32022d,0xbb3bb123,0xbb0f85e1,0xbb3aa04c,0xbb41325e,0xbb1d930a,0xbb2d07fc,0xbaa556db,0xba94e638,0xba45846f, -0xb99074fe,0x3b9ab7f2,0x3bc8a265,0x3bb72599,0x3c8aa6b6,0xbc2318dc,0xbce7ef49,0xbcc07549,0xbba26f69,0xbcb01030,0xbceb3a30,0xbcedb28d,0xbce99ab9,0xbcc4852a,0xbccae32e,0xbcea515a,0xbcc056ee,0xbcbf67af,0xbc1be4ae,0xbcb27905,0xbccb8ba0,0xbc2fe629,0x3c802ad7,0x3c02ee33,0x3c08f1e3, -0x3c0c1c6f,0x3c158202,0x3c0fa525,0x3bf45cd2,0x3bf76ec7,0x3bf50aff,0x3c008548,0x3c006b7e,0x3bfaa342,0x3c057f9b,0x3bc47bd3,0x3bb0e129,0x3bb1b166,0x3bb5f11d,0x3bc15495,0x3c04174f,0xbd156737,0xbb27244d,0xbca33b0a,0xbba1624d,0xbc0d933d,0xbc02fbbd,0x3b2f2a5a,0xbc4fee15,0xbc501563, -0xbc749fe7,0xbb47d63b,0xbc21a01a,0xbcb4dd4b,0xbb2a9532,0xbc435b1f,0xbb384ea6,0xbca1bbef,0x3bcd5598,0x3c469eae,0x3c10eb40,0x3c414b76,0x3c3032f4,0x3c261cac,0x3c047f00,0x3c082194,0x3c1a2372,0x3c3c4a38,0x3c3326b9,0x3c22136b,0x3c2e5672,0x3a4e0f22,0xbb1752af,0x3ab6de46,0xba08f0ee, -0x3bac298c,0x3b92f707,0xbcb7f06a,0xbad14322,0xbc97dc01,0xbb958cf7,0xbc2cbccf,0x3be9900d,0xbc2ed74b,0x3be9ae77,0xbcaa47a4,0x3c08039a,0xbc03647a,0xbb21c2c8,0xbb86fe22,0x3b591313,0x3a87a5fc,0xbb392817,0xbbf3b94f,0x3be55316,0x3c999a37,0x3c120e97,0x3c7ea935,0x3c5859ce,0x3c512573, -0x3bb282a5,0x3be0a79b,0x3bf42f51,0x3c2a56a9,0x3c2e7087,0x3c0ed0eb,0x3c07cf2e,0xbbf4c58c,0xbc4677c0,0xbb89aed8,0xbb8d21b6,0x3b86a962,0x3b5df557,0xbced7d5d,0xbc52b10f,0xbc6ec8d4,0xba953215,0x3b2be62a,0x3bc5699f,0x3b751d9e,0x3a5531b5,0xbb59e4ee,0x3b3d6853,0xbb8d4d0f,0x3c65d4bc, -0x39f05f74,0x3c212d3c,0x3c1d2d5f,0x3c0c1ebb,0xbb84d790,0x3b33c9ca,0x3cb9f2fa,0x3c2903c8,0x3c9d8823,0x3c8ae525,0x3c86489c,0x3b219e03,0x3bf0f727,0x3c1eb4cc,0x3c8a0ca2,0x3c7205ee,0x3c19b4e6,0x3c4f6297,0xbca4b105,0xbcf27df0,0xbbceb72a,0xbc6d44fd,0xbafb19f3,0x3a0795fc,0xbce44e2f, -0xbc6f4966,0xbc855ffc,0x3b0e5f76,0x3be5c606,0x3c1374f5,0x3b961daa,0xb87ca133,0x3b929b80,0x3b5c34ba,0x3c0b324e,0x3c4b598b,0x3c5a5cdb,0x3c50d768,0x3c366806,0x3cfc367d,0xbc450b40,0x3c7de91e,0x3cb6a97e,0x3c39d232,0x3cb228e1,0x3c8a74f6,0x3c65fcd9,0x3a4a020e,0x3b9bff46,0x3c0cc28c, -0x3c4edcb6,0x3c621aac,0x3bd1f615,0x3b65780b,0xbcf8d3b8,0xbd1f154b,0xbc2865a0,0xbc647ee3,0xbbde5370,0xbc8f1e4e,0xbca185d5,0xbb379b27,0xbc82db88,0xbc4f508c,0xbb53fb29,0x3b4bf7e7,0xbbce519a,0xbbad7e7f,0x3bc1f09b,0xbb318c10,0x3b3420f3,0x3c456530,0x3bedee63,0x3c52701e,0xbb908695, -0x3c51cbeb,0xbbbdf287,0x3c2d6b08,0x3d12a63e,0x3cc7abc6,0x3ce1b5bf,0x3c0573b5,0x3ba7dc7c,0x3c28ac2d,0x3be64b9d,0x3c8d32fa,0x3cb294d6,0x3d3c6dd3,0x3d3dfeb7,0x3bff5f05,0x3c55f07a,0xbb0ca64f,0xbd014467,0xbc1c202b,0x3ccd2000,0xbcbf5873,0xbd784aaa,0xbb8a26b9,0xbc2e6e43,0x38ac849d, -0xbb89bc3f,0xbbbbd563,0xbad13203,0xbb3d6d6d,0xb90f2fc6,0x3a55d104,0x399fd0d1,0x3b8fb3da,0x3b8fadf2,0x3c2eb152,0x3c6daf38,0x3c03e483,0xbc30ead8,0xbc6f158a,0x3c0cc3f8,0x39d0c45b,0x3c6e5c22,0x39f4ed85,0xbc0b07d9,0xbcbfb8b8,0xbd03903a,0xbce4ced6,0xbc6dc5ec,0xbc038e40,0xbc6f149d, -0xbce197dd,0xbd07a9aa,0xbc4e8cea,0x3ca4b88c,0x3c40ab72,0xbcc14006,0xbc5b9242,0x3c6f34e6,0x3c261ba9,0x3c21560f,0xbabb70a0,0xbbd2543b,0xbadc1431,0xbb3abc2d,0xb9e89ab7,0x3a502002,0x3b7f0367,0xba50f2be,0x3bae95a0,0xbb89d295,0xba2f9632,0x3c9a1a84,0x3bc28e68,0xba089b45,0x3c0b761f, -0x3c17ccf3,0x3b075b0c,0x3bcc007d,0x3c889a03,0x3cb68479,0x3c97a9e9,0x3b268743,0xbb9c049e,0xbb039e05,0x3ca51347,0x3c98124c,0xbc5fbf8b,0xbd113256,0xbd5d121c,0xbd91e183,0xbd3a5c24,0xbc59bce1,0x3ba11e32,0x3cb48e97,0x3cb1b279,0x3cb2e5ec,0x3bf304a5,0x3b3a33b3,0x3bd2e166,0x3b34e41c, -0x3b795438,0x3ab34787,0x3b5b6501,0xbb314d71,0x3bc08689,0xbb695c39,0xbb375b05,0x3c939c2e,0x3bf12885,0xbbd0683b,0xbc149d49,0x3c0310b3,0xbacb2844,0xbb53995a,0x3b850b46,0x3bd42b37,0x3c5f45fe,0xbb1db669,0xbc497072,0xbc9dc7bc,0x3ad8bf44,0x3be8b186,0xbc2f4a40,0xbc155c2d,0xbcd51dfd, -0xbd5e1f89,0xbccd0fda,0x3d64740d,0x3ce84433,0x3cb64bf8,0x3ccf44a5,0x3cdc7069,0x3cc01013,0x3c9d8bf3,0x3c11113a,0x3bee762d,0x3b1bd15f,0xbab6e86f,0x3ad4fcf5,0x3999294e,0x3c157f3e,0x3b2b6f54,0x3abed686,0x3c406f2b,0xbb10c0aa,0xbc5290f9,0xbaa66831,0xbb1311d7,0xbb2e339b,0xba39cd91, -0xbb1b85fe,0xbc135342,0xbb9ae0c8,0xbc9c44a6,0xbccba716,0xbd30b67f,0xbcfbe800,0xbce58ed6,0xbc50c8dd,0x3bc07dfa,0x3d07083f,0x3d7149dd,0x3d69d94d,0xbc4858e7,0xbce63c42,0xbccd4ef8,0xba4802ed,0x3bd8875b,0x3bc5b1c7,0x3bee5925,0x3ca5690d,0x3c305662,0x3c834c08,0x3c359f04,0x3c8f17c7, -0x3c395ca3,0x3a9b18df,0x3b1a7fc2,0x3bd168eb,0x3c8279ac,0x3aff7319,0xbbcdf0f5,0xbc3eec77,0xbb854a74,0xbc5248bf,0xbc95d6e6,0xbc61d3d0,0xbcab4e12,0xbca5baa3,0xbd2f23ea,0xbd1bf376,0xbd126615,0x3c0d9020,0x3d04d67c,0x3d57ed98,0x3d41abf1,0x3ce42bf1,0x3c0a5d52,0xbc46ab64,0x3c73a5c6, -0x3baabd73,0xb8a7f81e,0x3bf02ca6,0x3c20db9e,0x3bffeebf,0x3c1b5855,0x3bad0b7c,0x3bb8f64e,0xbab759b5,0x3ba62d82,0x3b9f1884,0x3c33b469,0x3c54b5f7,0x3c293449,0x3bb0c9d1,0x3b83ec6d,0x3bc7a1b2,0x3b79fdc2,0x3c594718,0x3c7cdc76,0x3c864a6a,0x3c997dcb,0x3c2acef6,0x3c03c90c,0x3be813f1, -0x3c369500,0x3caa0fc6,0x3d00924a,0x3cf72942,0x3cec8de5,0x3d23f71e,0x3cd2d884,0x3c996797,0x3c8688d5,0x3c894ef5,0x3c37872e,0xbc572c97,0xbb8d1bc0,0x3a5e893b,0x3a36e6f3,0x3c4fccbb,0x3b9ff317,0x3c160001,0x3bbdd672,0x3c164561,0x3ba92318,0x3c1307be,0x3badff1d,0x3c0708fa,0x3bfbfe5c, -0x3beb7d6d,0x3b5728bc,0x3affa364,0x3b83123d,0xbb2b6c4f,0x3c658e51,0x3bfdf3e0,0x3bfda6dd,0x3be86559,0x3bd5d537,0x3bdd1faa,0x3beac229,0x3c0924c5,0x3c7216b6,0x3c8c5f36,0x3c97ca63,0x3cbfa351,0x3c40af05,0x3b7f9c09,0x3b342c5d,0xbb5cf297,0x3bc22a0c,0x3bcbe116,0xbc05b984,0x3ab6c0b3, -0xbb10154e,0xbb5e0991,0x3b04ee99,0x3c14e100,0x3bc0b893,0x3c086337,0x37e3e432,0x3c040126,0x3b579ad3,0x3b47b03e,0x38da2069,0x3bc94558,0x3c11f5bb,0x3bdac0f1,0xbc0b3eff,0x3ba06b2a,0x3c368af4,0x3b93c5b1,0x3baf9d01,0x3b4d5425,0x3b67abeb,0x3b663e4b,0x3bcc5c55,0x3bce03a3,0x3b4e8594, -0x3b9f3aec,0x3b93fa7d,0x3bd3b16a,0x3bd97799,0x3be5789a,0x3b9ba4ad,0x3b8cea19,0x3c2c5133,0x3c309c88,0xbb4e6fef,0x3c1b34a8,0x3b9bbbd5,0x3b870600,0x3bb4bfdd,0xb9de131c,0x3bc17377,0xba915c54,0xba84f4ad,0xbb18796a,0x3b781357,0x3b15b95d,0x3a042b0a,0xbac0e6a5,0xbbc915e9,0x3b607648, -0xbb45bbc5,0x3c490438,0x3c1785c1,0x3c34a249,0x3c46943f,0x3c4deb53,0x3c546e40,0x3c5680c1,0x3c60f4ef,0x3c802bc8,0x3c95fefc,0x3ca0b4b7,0x3ca6e30d,0x3ca8f415,0x3c91bf7f,0x3c6dcbca,0x3c67ab32,0x3c5c2034,0x3c3f3300,0x3c54e436,0x3a6c9e6d,0xbbe641f0,0xbb54ac0a,0x3b175284,0xbb9e5c09, -0xbbbd207d,0xbbe74e84,0xbba20545,0xbb4a7e54,0xbb923bba,0xbbe6e964,0xbbf1590d,0xbba54d80,0x3ba8df7d,0xbb06511d,0xbba22040,0x3b287bf2,0x3c59eef7,0x3c39a825,0x3c389cb1,0x3c2f6c2a,0x3c2de14b,0x3c2ccfb3,0x3c2cae27,0x3c31929b,0x3c2f8c28,0x3c27554f,0x3c22b7dc,0x3c28d010,0x3c2fda6f, -0x3c3b1093,0x3c3df72c,0x3c3f4fcc,0x3c3be2a0,0x3c8ddeaf,0x3bd03fb9,0x3ace90e1,0xbb90be09,0x3c96c826,0x3cc241d0,0x3bd66063,0x3c7900d3,0x3cb01f78,0x3c761894,0x3c59159e,0x3c33e0b7,0x3bf2354e,0x3c00ef7e,0x3c10cfe5,0x3c03dd2d,0x3cbb7fb3,0x3c9ca5be,0x3bc54c15,0x3cb40fcc,0x3c96041b, -0xbb33044a,0x3af57018,0x3b07f470,0x3ac4c167,0x3abc1e5c,0x3aadaac9,0x3aa6ea34,0x3aab3d8d,0x3acccbd5,0x3ae33981,0x3b350b88,0x3b480c46,0x3b58ee40,0x3b77d653,0x3b8b334f,0x3b89a154,0x3b3195a9,0xbb15bcc4,0x3bfaec48,0x3cca496c,0x3bb27e48,0x3c336563,0x3c433ec9,0x3c8d0522,0x3c34314f, -0x3b90a4bf,0x3c7ae078,0x3c2c2ad5,0x3c7fc16c,0x3c013969,0x3c54a0d8,0x3c89646b,0x3c61f2ed,0x3c8ee3d9,0x3c4e97d1,0x3cc02f86,0x3c485ccb,0x3a9234af,0x3b657d26,0x3a9df36b,0x3aeda9cf,0x3af2fd52,0x3b3e2e4f,0x3b34ed20,0x3b52bb5f,0x3b25464c,0x3bb176ea,0x3bdc9e94,0x3bec1ee8,0x3c1c72e8, -0x3bf56e1b,0x3b766e00,0x3ac7dcc1,0xbbcf7677,0x3b604888,0x3c9130f2,0x3bcbf696,0x3c1db1b0,0x3c53d14a,0x3c9c392b,0x3bed6a24,0x3c6f7f66,0x36adfe96,0x3c99d331,0xba40fc18,0x3be15a55,0x3c6cf4f3,0x3c6fd9c5,0x3c5dedda,0x3c88181e,0x3c861534,0x3ca6fc4d,0x3c2562dd,0xba86fd5b,0x3b9ea85b, -0x391b4155,0x3abb6f89,0xb923a83a,0x398e7aa9,0x39a0b828,0x3aea5d8c,0x3ad44459,0x3c0a01dd,0x3c43e952,0x3c37f427,0x3c865aa1,0x3c760c49,0x3be7c2b6,0x3b500000,0xbc4e9d56,0x3bed40a6,0x3c8c34f7,0x3bc8d593,0x39945229,0x3c0c4311,0x3c2dff4d,0x3c41005e,0x3bda4ecf,0x3b1b106e,0x38013bb9, -0xbb51e271,0x3c08b90d,0x3bbef82c,0x3c80a2db,0x3c3b8ecf,0x3c6d1258,0x3c965aee,0x3cd17119,0x3ca1a907,0xbb08e78f,0x3afe31bc,0xbabfd700,0xbaa01446,0xbaa95947,0x3b12675d,0x3acbe889,0x3b62553a,0xb9a2b47f,0x3c20f729,0x3c8a6327,0x3c6fcd68,0x3ccbd890,0x3c832dac,0xbb84af65,0xbb7a79c1, -0xbc2a79ef,0xbb90c62f,0x3bc260a2,0xbb682f88,0xbc0706e4,0x3c0c93e9,0x3c0b5f2b,0x3c0d5454,0x3b7cde91,0x3ade61ab,0xbb5e0ab7,0x399be3c1,0x3b26440c,0x3c3fb20c,0x3bcb2ff2,0x3c3879b8,0x3ca4727b,0x3b867682,0x3d044473,0x3c55de7e,0xbb4aa4d3,0x3ba77444,0xbb08b74a,0x39667373,0xbacc1663, -0xbbbf5866,0xbb94cd9a,0xbb1eb000,0xbbbe683b,0x3c5b0702,0x3cbad171,0x3c9ac891,0x3d0cb270,0x3cf99404,0x3b8697c5,0xba653314,0xbcaa2630,0xbc8c10c3,0x3d309900,0x3d2ac4c7,0x3bcc4f12,0x3be26885,0x3be174f6,0x3c4fef6c,0xbb176dfd,0xbbd72413,0x3b63c90f,0x3a555e68,0x3a989b03,0x3c18a71e, -0x3c6179f7,0x3c393bac,0x3c807022,0x3bad6cc0,0x3cc5c20d,0x3c98ad26,0xbb923caf,0xbc1064a3,0xbc8e43ff,0xbc14f686,0xbc990695,0xbd09b5ed,0xbcd9691e,0xbc8e5aa8,0xbc0158a0,0x3c01d607,0x3bf66928,0xbb827c78,0xbc769cf4,0xbce86bdc,0xbcf838ee,0xbcbfe150,0xbc68ff16,0xbcb8ee54,0x3c1b08a9, -0xbc70fc52,0x3ce61f8b,0x3a9f78ed,0xbc01d969,0xbaec4540,0xbbd89ddd,0xbb3fd1b2,0xba3754e6,0xbab6b05e,0xb8e41bb7,0x3a3970ae,0x3b4c004e,0x3b11af66,0x3cb080b9,0x3c2fa866,0x3c26738b,0x3c22f8df,0x3bd2d8fb,0x3c62c991,0x3c3ae787,0x3c8978f9,0x3c3d09be,0x3a1850aa,0xbb7a9c40,0xbc09f7cf, -0xbc0d8ed3,0x3c661a40,0x3c93fbf1,0x3b0a3dc5,0x3c8b2f79,0x3cc21deb,0x3c920d99,0x3c319890,0xbd2f12f3,0xbcbe7d0c,0x3af3674e,0x3bc9ed16,0x3c2efea2,0xbb82d644,0xbbc2b721,0x3aaf3463,0xba90cef6,0xbacfd8e0,0xbb284509,0x3a538c25,0xbaa9ac3b,0x389d06f2,0x3a7c8582,0x3bb28c12,0x3cba5d54, -0x3c63d94c,0x3c7e5f95,0x3bc3eb3a,0x3bbe1169,0x3c6fdb28,0x3c56234c,0x3c97e604,0x3c713ecd,0x3c8eb385,0xbc286f96,0xbc969d37,0xbd08cc98,0xbc380492,0xb98bea9b,0x3c22d85c,0x3c997f27,0x3bc1eb75,0xbcde7387,0xbd140a03,0x3a4e998e,0xba81a005,0x3c88f649,0x3c972388,0x3c880c27,0x3c267bcb, -0x3bb12268,0x3bde8391,0x3b84490c,0x3b274c95,0x3a1db3af,0x3a989eca,0xbb004375,0x3b8847c5,0xbae140e5,0x3be1079a,0x3c9f7472,0x3c16a727,0x3c3c1a04,0x3c05b508,0xbb676cf2,0x3b174fc4,0xbab58559,0x3be7dbc7,0x3c2a9c2c,0x3cc41a9a,0x3ae6b4c2,0xbb365cd0,0xbc7b5678,0x3b52bc5e,0x3bb0f238, -0xbbbe2560,0x3cba4109,0x3ca85d08,0x3c917e55,0x3c3490b6,0x3de94789,0x3d8c2397,0x3d41b168,0x3d08dc92,0x3d20154b,0x3cd37da1,0x3c9cb987,0x3c6ed5bf,0x3bfadb5e,0x3b8a23a5,0x3b7c148d,0x3aa83473,0x3b137963,0x3bf1a13a,0x3be66f88,0x3bca5778,0x3c534279,0x3ba54944,0x3b65d98d,0xbbe0494b, -0xbb749b29,0x3a8ba7b0,0x3aa7b8b0,0x3c90c5eb,0x3c6a765a,0x3c04b94c,0xbc322f6b,0xbc30609b,0xb97022bc,0x3c85734d,0x3cae79d9,0xbc68a02f,0x3cd42297,0x3d61cc4c,0x3dc6ecdb,0x3dfdae77,0x3cd8b508,0x3cfde181,0x3c3f4d94,0x3ca3ae5c,0x3c87efb4,0x3c88d026,0x3ca1122c,0x3cbda9f2,0x3ca6e6aa, -0x3c8da072,0x3c40168f,0x3c8b331f,0x3c34a171,0x3b038fd3,0x3b640a42,0x3bbeca6a,0x3c523141,0x3c47df9d,0x3c3ce311,0x3b95223f,0x3b562323,0x397910c2,0xbc4a1304,0xbc37e955,0xbc8ca34c,0xbba9b97e,0xbcae015c,0xbc00b908,0x3ca13aa7,0x3ce5a0e3,0x3d256e7a,0x3d750e12,0x3d9c911c,0x3d95acef, -0x3d66b867,0x3d1c50b4,0x3d253bb5,0x3d225517,0x3d07199f,0x3cdf0cf1,0x3ce2db09,0x3c8e1995,0x3c3de7be,0x3c54327f,0x3b9c3fd6,0x3bf6f75e,0xbac135ef,0x3c0b40d9,0x3c26cf66,0x3c423841,0x3c5b577c,0x3c557897,0x3c52478c,0x3c07aeb1,0x3c0b66c2,0x3bc16c22,0x3bb5e415,0x3becba86,0x3bb29653, -0x3c83e71f,0x3ca93511,0x3c745fea,0x3c979eaf,0x3cb5685e,0x3cce350a,0x3ced3c9f,0x3ced6c3d,0x3cd981a8,0x3c791f00,0x3c8a27e4,0x3cbb1e36,0x3d203239,0x3c1561dd,0x3c69a826,0x3cba3117,0x3caab014,0x3cb6a62c,0x3c5fc6dc,0x3c86fad2,0x3c4cb578,0x3c4cfe2d,0x3bf979d4,0x3c042413,0x3bb21dbd, -0x3c04d906,0x3bdd2f51,0x3c1e1376,0x3c2411cf,0x3c833917,0x3c6aa686,0x3c47ed4a,0x3c689a9a,0x3c0a5505,0x3c249943,0x3c0ab3e3,0x3c2a651f,0x3c2e1318,0x3c0327ac,0x3c5db894,0x3c84f88f,0x3caa7e89,0x3c9d10b2,0x3c88ad90,0x3c89e309,0x3c42a88c,0x3bc9ee0d,0x3b2fccce,0x3b9205de,0x3be2858b, -0x3c227fb1,0x3c636c55,0x3c5fff81,0x3c9a7d80,0x3c90f7d6,0x3c84f80b,0x3c56d4bd,0x3c6a25c0,0x3c3f520d,0x3c949bb3,0x3c2ca0b3,0x3bf9de98,0x3c04a65f,0x3c1a3116,0x3c2bdde4,0x3c4862e0,0x3c467333,0x3c8abbd4,0x3c54b024,0x3bd44260,0x3c0dc1bf,0x3be1c1d9,0x3bcc42ad,0x3bb02100,0x3ba4cfbf, -0x3bd4d4b7,0x3c0c1211,0x3c3e16d8,0x3c32ed98,0x3c2a2efb,0x3c1716d0,0x3c06bb99,0x3c2d68e5,0x3c1a8325,0x3c2e4399,0x3c5052ab,0x3c3f1409,0x3c8c910b,0x3c300728,0x3c4d343c,0x3c408d07,0x3c3d2434,0x3c194806,0x3c0896da,0x3c541365,0x3c517a19,0x3c80a0aa,0x3c74dde1,0x3c84c702,0x3c9084dc, -0x3c85256e,0x3c57fcbd,0x3c20e82a,0x3c244166,0x3b018ecd,0x3b1cbe61,0x3b53f0eb,0x3b2dc327,0x3b4e9f76,0x3b4bd35f,0x3b18b666,0x3b7d0b16,0x3b8d5be0,0x3bd7a3f2,0x3c157024,0x3c4e82e5,0x3c8af9b9,0x3c83340b,0x3c594fea,0x3c4c9d1a,0x3c53819c,0x3bff5cb3,0x3bf7de89,0x3c94c86e,0x3c9e91ef, -0x3c341524,0x3c91e804,0x3caac93c,0x3c758c0a,0x3c772a3e,0x3c60b04d,0x3c48fcc8,0x3c48b57e,0x3c490037,0x3c49a4f6,0x3ca4e5bf,0x3c82966f,0x3c335ed4,0x3ca8ba68,0x3c913574,0x3bdf53a7,0x3c0351a3,0x3bfd717b,0x3bf37fba,0x3be96a8b,0x3bde7f0f,0x3bd5bea0,0x3bf0123a,0x3bfdda2f,0x3c02a25a, -0x3c061bbc,0x3bff6563,0x3bfec8f3,0x3c0019b3,0x3c07627f,0x3c0fca01,0x3c0d864d,0x3c814501,0xbc8df36c,0xbc339da1,0xbc1b8acf,0xbcb5ef9c,0xbc6aea76,0x3bf2f3cd,0xbc9bbcc3,0xbc638a52,0x3b456211,0x3b9e76ae,0x3be66f4a,0x3bf601d9,0x3c073b8d,0x3c332878,0x3c0cf571,0xbc753dcf,0xbca69a7e, -0x3c5151c7,0xbc3491db,0xbc9a8463,0xbc17dc0e,0xbc306fb1,0xbc48d8a1,0xbc4566cb,0xbc4840ae,0xbc47f56d,0xbc4728dd,0xbc3f6279,0xbc42546f,0xbc439b4e,0xbc504641,0xbc4f9b9b,0xbc5c1f0a,0xbc6d5a9d,0xbc68f9e1,0xbc3c9514,0xbc448acc,0xbc5cd341,0xbca296f8,0xbc2c9046,0xbc1b3221,0xbc04721d, -0xbc0e7401,0xbc3df9bc,0xbb829c37,0xbb8cf340,0xbc4c0798,0xbc1c6400,0xbc80e9ce,0xbc43a1e4,0xbbedbc03,0x3a62d674,0xbc288522,0xbbe5e4b2,0xbc052ca6,0xbc31c91c,0xbc9a3b94,0xbc548deb,0xbc8dcae8,0xbc90fdbf,0xbc8abf7a,0xbc8aa60a,0xbca40ef9,0xbc920cad,0xbc92991e,0xbc97cd7f,0xbcb17c6e, -0xbcb7ec31,0xbcc02177,0xbcdba820,0xbccd1ca1,0xbc856c45,0xbc9bfbda,0xbc5480cd,0xbc7f2243,0xbc842cd1,0xbc55f8c9,0xbc6ad0ce,0xbbb90fa2,0xbb7338e6,0xbb93148a,0xbbdc3a69,0xbbdb0756,0xbc8da855,0xbc5eb282,0xbb9d884d,0xbc4c75b1,0xbb9bcdbe,0xbb92e8b9,0xbbcd56cc,0xbb3d587e,0xbc2b09a2, -0xbc1b191f,0xbc7b4fd8,0xbca645b5,0xbcb2301a,0xbcae9498,0xbca633ee,0xbcbf1674,0xbc9fc903,0xbca2823b,0xbcbfdb56,0xbcd0799b,0xbcef849c,0xbd00a41f,0xbd1abcc5,0xbd0576d2,0xbc747d35,0xbca4e362,0xbc6b64d9,0xbc42b561,0xbc8d341e,0xbc3ee805,0xbc35e1e7,0x3ad0f910,0x3bd38054,0xba48f460, -0x3b8b12e0,0xba599355,0xbb7578ed,0xbb56c69c,0xbbf1fffe,0x3b91932b,0x3b0f67fd,0x3bb39595,0x3b3e3ff2,0x3a9f5706,0xbba6dea6,0xbbfb8897,0xbc7943d1,0xbcaafdf9,0xbcda992d,0xbcd1cb62,0xbce60775,0xbd065a0d,0xbcd7aee0,0xbcd14d9d,0xbcf07b3f,0xbd14aa3a,0xbd2f8944,0xbd32e273,0xbd58b733, -0xbd2ea9d2,0xbc6c63f5,0xbcce85ee,0xbc26300e,0xbbcfdcf7,0xbc75e7f5,0xbbb165c7,0xbc6d656b,0x3b679030,0x3bdf4402,0x3c1da0d9,0x3b96d646,0xbb149b4f,0xba403d19,0x39e2103a,0x3b9d0300,0x3c093de6,0x3c0b2755,0x3bfcccb4,0x3c0c44c9,0x3c6ab787,0xbac1d7a5,0xbb908d89,0xbc6cc3f6,0xbcdca2e3, -0xbcf9e5ea,0xbceec158,0xbcf29722,0xbcff57ca,0xbccaeff3,0xbcd2ffb4,0xbd03769a,0xbd1b5ba2,0xbd3cf248,0xbd413f9f,0xbd8210bc,0xbd433cf9,0xbc15c379,0xbcaa9022,0xbd621ab9,0xbd676d4e,0xbcda2f91,0xbb6efc5b,0xbc12a57a,0x3b1f7f6b,0x3a6aa59d,0x3bb0c2ea,0xbbc6aafc,0xbbf8391c,0x3a4ce2f8, -0xbba5597b,0x39d9b91f,0x3be02524,0x3c246474,0x3c50acc9,0xba6aec67,0x3ba3f443,0xbbf4c71c,0xbc81fe6e,0xbc49917b,0xbbfd534a,0x3b9c772f,0xbc55c962,0xbc5fab56,0xbc7c0de8,0xbbdd3324,0xbb9e0182,0xbb90cc4f,0xbbac333e,0xbc9b336f,0xbd1612c0,0xbd5338fc,0xbd7d50e7,0xbd72fe2b,0xbd7c1a4e, -0x3c31bf7e,0xbcf69363,0xbd0dab2d,0xbc985644,0x3b9dd52e,0xbc3abbfe,0xbc22f251,0xbc553354,0xbbd0e50a,0xbba9ccb0,0xbbb5c1e3,0x3a6c21ff,0x39c0a8af,0x39e31c1f,0xbb1b7860,0x3902dfd0,0x3c2f66c7,0x3b9e82be,0x3b397e6c,0xbc0437e0,0xbc9388bc,0xbcdf013a,0xbd09a3f5,0xbc88912e,0xbc79a656, -0xbcdea89f,0xbcbbef6d,0xbc9091d6,0xbcade13d,0xbbc68fb3,0xbc04bcc3,0xbcafa31b,0xbccd336f,0xbc75e8c4,0x3afbbed0,0x3ad67bbb,0xbd5af5af,0xbd499104,0xbccbc2a4,0xbc13d155,0xbc452044,0xbc261a93,0xbc488c63,0xbb90bbf6,0xbb993a90,0xbb7ea96e,0xbb8f24d1,0xbaba6e66,0xbb9c7ff2,0x39d6247d, -0xbc30e7d2,0xbb820c27,0x3c343140,0x3b28f215,0xba4832c3,0xbbbdb27b,0xbb3ac219,0xbbe42cfa,0xbc2afef4,0xbc888e04,0xbcc74a1e,0xbd24edd6,0xbd0eac51,0xbcf1ef36,0xbcad4c0d,0xbc524cae,0xbccc5c24,0xbd6dad50,0xbd914c96,0xbda4cc23,0xbd9d7920,0xbd879a66,0xbd2af70d,0xbbfb90d9,0x3c6fe9bb, -0x3bf68367,0x3c1f09d6,0x3b285c96,0x3a812ed9,0x3b54f717,0x3af82dfc,0x3b33948f,0xbb38bf4e,0xba9ec23c,0xbb617f17,0x3abd5458,0xbaaeb436,0xbb2e645e,0x3bd8bc45,0x3c0c416e,0x3aa071fb,0xbc2f3b76,0xba9c5394,0xbba90660,0xbc21eed6,0xbc438a95,0xbcaf1175,0xbd0d91f8,0xbd49d1e7,0xbd550edf, -0xbd2c337f,0xbce0e327,0xbcf9698e,0xbd877636,0xbdaaba6e,0xbdccd07e,0xbdd41800,0xbd853893,0x3ce27cac,0x3d6f09c5,0x3d32096b,0x3d20598d,0x3d0db153,0x3cb5184c,0x3c8edfa2,0x3bc441e7,0x3bc81f1b,0x3b495f0f,0xbaa5c636,0x39b6a22b,0x3a7a9a56,0x3b0a7e19,0x3ab676a1,0x3b25af9a,0x3c0bbf36, -0x3b5bf921,0x3a638e1f,0xbb962b8c,0xbc153ecf,0xbc6059fc,0xbc9dea8a,0xbc699ab8,0xbcaa07a8,0xbcd671a5,0xbd53ecbe,0xbd58449c,0xbd460244,0xbcaa6f17,0xbcc4e20e,0xbd057c22,0xbd8da200,0xbd8fdd3e,0xbd554e81,0xbb96c2e9,0xbd9378b4,0xbcf3f44b,0x3c43a44b,0xbb49d6cc,0x3c5c81db,0x3c1ce67b, -0x3c08e496,0x3c386d15,0x3c1ce2ba,0x3c23cd8f,0x3bd3944a,0x3c320166,0x3be6e6db,0x3ac4c626,0x39586c71,0x3ae6e002,0x3c2cc11e,0xba9b2a31,0xbbd4eb62,0xbbe17329,0xbc0952ba,0xbbfd01cb,0xbc57f1d3,0xbcd39173,0xbd264f86,0xbd4e8fc6,0xbd8d4a0b,0xbd866ae7,0xbd770456,0xbd27366b,0xbccc9154, -0xbc332f6c,0xbc11a55a,0xbc651773,0xbc9948b5,0xbd44cb14,0xbc4e6fc1,0xbbd670d5,0x3c596e4a,0x3c4fb3f2,0x3c1fee96,0x3c06f921,0x3bd32728,0x3bd91e46,0x3b42cad0,0xbb3f5965,0x3ad99524,0x3a2655cd,0x3bc20efc,0x3bcb7043,0x3be5a667,0x3b7d8c2b,0x3b95d452,0x3b01343a,0x3bc56a2e,0x3b2bdb8d, -0xbbb11365,0xbc192e0f,0xbc8aae3b,0xbc656ffc,0xbc50541b,0xbc8dba2c,0xbb29e74c,0x3c25b6eb,0x3ca2a06e,0x3cbd6d4a,0x3c736c3f,0xbaea58a0,0xbbc7d18e,0xbc2f7d2f,0xbc836c42,0xbc32216f,0xbc5256bb,0x3b034cef,0xbba0b78d,0x3aeed796,0x3ab939dc,0x3b8ec07f,0x3bac62d1,0x3c0ca2aa,0x3bc4ce50, -0x3c044aee,0x3bda8528,0x3c0e4236,0x3bcfa56c,0x3bda581e,0x3bc5563b,0x3c09e607,0x3c17b76d,0x3bab02ec,0x3b85f696,0x3b705afe,0x3b4f02ce,0x3b7fda33,0x3b692af2,0x395f0e97,0x39fbb025,0xb9334630,0x3ba785d0,0x3c0dd8c4,0x3c3edbd3,0x3be5dc9f,0x393206fc,0xbc134a91,0xbc021661,0xbc072307, -0xbc46f1d2,0xbc1b846d,0x3a8e8ff8,0xbb34616a,0x3b405a09,0x3b3bde86,0x3bfb20e4,0x3c0b8dc6,0x3bf8426d,0x3bd72fe1,0x3bc8ccac,0x3bbd30b9,0x3aad5024,0xb9503225,0x3b8d8789,0xba280d84,0x3bc862a6,0x3ba12e2a,0x3bea4336,0x3bed4739,0x3bd30dcd,0x3b242f4d,0x3c366eb6,0x3c1bf314,0x3c776c03, -0x3c603539,0x3c57c2f2,0x3c277e87,0x3b90c5ac,0xba318193,0xbb9ca276,0xbc0d1c61,0xbc432d64,0xbc68eb32,0xbc479dc1,0xbc2ac991,0xbc00e1bb,0xbb7c1fe0,0xbb56ed82,0xbb561c2c,0x3bd8d2a6,0xba9d3c90,0xbba5649d,0xbb2b559e,0xbbc5de6b,0x3b7d99b5,0xbae13e4a,0xba3c375d,0x39dd4cd4,0xba386a15, -0xbb21fd53,0xbaa1a537,0xbbd1c8f7,0xbbad5f16,0xb98e6f59,0xbb63351e,0x39060fc7,0x3c101e16,0x3be0fb6e,0x3b833f1b,0x3a3024d3,0xba424295,0xbaeeb0b5,0xbb54bcad,0x3afd12ec,0x3b5b9175,0x3b809acd,0x3b33de86,0x3af996b1,0xbb000fb6,0xbacdd8b4,0xba92c0f4,0xbaf1eb4a,0xbb600b4b,0xba93ecdd, -0xbb4656c1,0xbbbf20ab,0x3b088f8a,0x3c7899a8,0xbba925d8,0xba9815a1,0x3c481311,0x3c5c554c,0x3c5931bc,0x3c5a7671,0x3c645347,0x3c7b1616,0x3c7e57cd,0xbb4e4887,0xbbc28923,0x3c74094e,0x39066a56,0xbb84ad4c,0x3b328586,0x3a5799ec,0x3ae014ae,0x3b225127,0x3b36bd4b,0x3b1eda42,0x3aa89f96, -0xb9b7198b,0xbb2ec3c0,0xbb85323c,0xbba648ac,0xbb9f5f43,0xbbb187ef,0xbb93b92c,0xbb79b620,0xbb4a76f3,0xbb0b677b,0xbb34d6a0,0x3cad8d47,0x3c5e03ec,0x3c9909df,0x3c9ebeb6,0x3abdc966,0xbca90e35,0x3c9b5500,0x3baab652,0xbc8f71ed,0xbca371ce,0xbcb8b9f2,0xbcaebcbf,0xbcb4ceac,0xbcdb1016, -0xbcb1a72a,0x3b9b9777,0x3c93f094,0xbcc15982,0xb93675ec,0x3c716579,0x3c8cff7f,0x3c788b07,0x3c891c2a,0x3c855e08,0x3c8a136f,0x3c878e96,0x3c7e743f,0x3c835d17,0x3c85272f,0x3c8350b3,0x3c8a3ca9,0x3c88518e,0x3c8c42b7,0x3c8daca6,0x3c88b054,0x3c67c11b,0x3c70751d,0x3c5cc28b,0x3ccb9447, -0xbc114548,0x3c15b74b,0xbb82494b,0x3c32e0a7,0x3c56cb64,0x3b2df67e,0x3c1995a5,0x3c06b873,0x3ad710f1,0x3be1b8db,0x3c1c5144,0x3b7b1b22,0xbc051afb,0x3c6ba33b,0x3bb95e0b,0x3c1f26e1,0x3b872e47,0x3cc3c560,0x3c9cafe7,0x3caebae4,0x3cb3faef,0x3cb44cca,0x3cb899e8,0x3cc4905c,0x3cce9f29, -0x3cd72c2c,0x3ccded08,0x3ce06dec,0x3cdb8bcf,0x3cde29c2,0x3ce1f218,0x3cc600d9,0x3c7cfe1c,0x3c771093,0x3c5b2685,0x3ca50d27,0x3c064226,0x3c98f4b2,0x3b2bdd89,0x3c50f17a,0x3c138901,0x3c55e6a1,0x3bc84755,0x3c3a23d9,0x3b9ee573,0x3c6e7a2b,0xb9c3aede,0x3c5c6f1f,0x3c23d86b,0x3c84b27f, -0x3c806581,0x3bffc1b4,0x3c33a357,0x3c7a839d,0x3cc879c5,0x3cc72ddf,0x3cdb2fd8,0x3cd8693e,0x3cd0616f,0x3cc0cb02,0x3cdf1c7f,0x3ce14da5,0x3ce505e5,0x3cf4fd4f,0x3d01c840,0x3cfeca21,0x3d01fe5d,0x3cd0c305,0x3c336620,0x3c6364c9,0x3c255059,0x3cae2e7b,0x3be712dd,0x3c2cd799,0xba2a7f47, -0x3c1c6a1a,0x3c244d34,0x3c5f1c28,0x3c0fac57,0x3ba41d5e,0xbb27be21,0xba9c2687,0x3b74764b,0x3c2769a7,0x3c513ed5,0x3c7c23bf,0x3c6cad9a,0x3c72d144,0x3c5a47e0,0x3c7d48a8,0x3cd5a8bd,0x3cccf28c,0x3cf8bee2,0x3d05ad2e,0x3d15d5ae,0x3d0b6823,0x3d1c288c,0x3d219035,0x3d1f27ba,0x3d2de598, -0x3d387742,0x3d2e6a17,0x3d33a0d9,0x3cf6cf84,0x3bf83ad1,0x3c234a8a,0x3c3e870b,0x3cbcff3f,0x3c5880e1,0x3c814d18,0x3b8b5605,0x3c7eea9f,0x3c576a1a,0x3c1911ee,0x3bcfe4d0,0x3b03baf7,0xba570dec,0xbaf3b6a2,0x3b838745,0x3c2c2163,0x3c69f916,0x3c89e2cb,0x3c75d21c,0x3c7d251c,0x3c3f8bb6, -0x3ca2c42a,0x3ce0b67c,0x3d06fb3a,0x3d14a571,0x3d1030de,0x3d0b3add,0x3cde141a,0x3d0d28c9,0x3d16be29,0x3d0a4f38,0x3d2e24d6,0x3d36179e,0x3d212b1e,0x3d34fe37,0x3ce9af59,0x3bae4edc,0x3c1e2d54,0x3b427824,0x3c1c55ec,0x3a079616,0x3b6e9310,0x3aa106d2,0x3ba57519,0x3c46de6f,0x3b9f3379, -0xba9b9c33,0xbba26322,0xb8051c89,0xbaf5c0ac,0x3a7db856,0x3bc6f1bf,0x3c6e600f,0x3c933211,0x3bd88a2e,0x3c7bdf15,0x3c94aa8a,0x3cbcb220,0x3cb371dd,0x3c3fffac,0x3c027c51,0x3c22de98,0x3c43b93a,0xba5b53e8,0x3ca2afb9,0x3cce6da7,0x3d2c084a,0x3d091b92,0x3d1327cd,0x3d455279,0x3d07b0e7, -0x3cdbe091,0x3c7ba247,0x3c202d07,0x3cac48b6,0x3b3156a5,0xbbdbe57d,0x3c0a2336,0x3c2b8109,0x3bd6d404,0xbbac9d90,0xbc104e6c,0xbb740098,0xbb362969,0xbb615a98,0x3ac1b5dc,0x3ac42383,0x3b3e2b84,0x3b65b98e,0x3beda973,0x3c9eb64b,0x3c43fea6,0x3a8ab590,0x3c1f9e3b,0x3cfede44,0x3d0f7fcf, -0x3d3856d4,0x3cd0eb2d,0x3c4d8cbf,0xbc2d9306,0xbbb6efe8,0xbafb7f92,0x3c486211,0x3c8b76f6,0x3c94d333,0x3a8405fb,0x3c6bf27e,0x3c6640ec,0x3c1c0089,0x3c99f882,0xbd1fe53d,0xbcf57f00,0xbc7cb315,0xbb907475,0xbbbd8ecf,0xbbb55ef8,0xbc0776f2,0xba18a8d9,0xbb376a59,0x39a6de58,0xbb86ce92, -0x3a764206,0xbabd59bf,0xbb061221,0x3ad2fbdb,0x3b108aa2,0x3c433479,0x3c5c2d8c,0x3c8544c3,0x3c885b7c,0x3c4e13e8,0x3c539010,0x3c86bc3e,0x3ce3f038,0x3cee0f6a,0x3cba1c56,0x3c9fa5ec,0x3c5d8ba0,0x3c76a45f,0x3c9e1391,0x3d109fe2,0x3d256fd7,0x3d497c28,0x3d1dd7f2,0x3c74a885,0xbd087f56, -0xbc144346,0xba9a9a0e,0xbbb7df70,0x3c2c2111,0x3c0a4191,0x3b93ebb8,0x3b65c5eb,0x3b8bc1cb,0x3b8b62d6,0x3b60c249,0x38b5b174,0x3a5daf54,0xba03c29a,0x39601bab,0x3ab2c411,0x3bac5ea0,0x3c1240ff,0x3c3ea13f,0x3c2b3145,0x3c1b6465,0x3c276755,0x3c658e54,0x3c2a8aea,0x3cf35bb1,0x3cfea7db, -0x3cd72a22,0x3cc2aa82,0x3c84ce87,0x3c901fe8,0x3cbff199,0x3d0a314c,0x3d3b5adc,0x3d42deef,0x3d52a066,0x3d924083,0x3bb7e938,0x3dcc7776,0x3d8c59c8,0x3d84be04,0x3d3a0503,0x3d24bafa,0x3d02a713,0x3caaff86,0x3bc08117,0x3c01476f,0x3b553ab8,0x3a888552,0x3b77d9ea,0x3b38588b,0x3b36a8d9, -0x3b5e0e11,0x3b9538cc,0x3c0e0cd4,0x3c474d54,0x3c0b0c7e,0x3b299e72,0x3c82b77f,0x3cbb55e4,0x3cb1d69b,0x3c889af4,0x3b484d07,0xbc1e9f01,0xbc888803,0xbc476217,0xbb92b889,0x3aa9b5d6,0x3b9ead2d,0x3b26e5f7,0x3c9df0b4,0x3d3b70e6,0x3de80780,0x3dcb62de,0x3d9f8bd7,0x3ce9333a,0xbca2a89b, -0x3cd67904,0x3c36e746,0x3c78165c,0x3c7cd1db,0x3c9c2967,0x3c7cac3f,0x3c80b5ee,0x3c29f0e3,0x3c290bc5,0x3bd131a1,0x3c18e3e6,0x3aba1986,0x3b1db91e,0x3c027af6,0x3c126937,0x3c004be0,0xbaed11b4,0xbbf7445d,0xbc85c64c,0xbc40a9fe,0xbc829d50,0xbc3e1d58,0xbaeac52f,0xbb84ba01,0x3ad8c2a3, -0x3c4c6a34,0x3c610b56,0x3cf0db9c,0x3d8169be,0x3db8063a,0x3dce8480,0x3ddfe8ed,0x3daaf55a,0x3d332988,0x3d1b66e3,0x3c9563e4,0x3c8e0580,0x3c94d872,0x3c3a33f4,0x3c37b26c,0x3c19fe6e,0x3c21ae20,0x3bef8873,0x3bfad271,0x3be1259a,0x3bf8b201,0x3c01a125,0x3c3da687,0x3c506a56,0x3c80108a, -0x3bde604d,0x39518d22,0xba332130,0x39911fa8,0x3b4f40b8,0xbaa2b251,0x3c164863,0x3c2ff616,0x3c22da6e,0x3c85d485,0x3ca711ab,0x3c991cea,0x3d012b73,0x3d236312,0x3d5550c8,0x3d237e74,0x3d1a8a75,0x3d1d02d1,0x3d2e4fab,0x3ce287ad,0x3bbd1453,0x3c8a2beb,0x3c840480,0x3c822c52,0x3ca250ad, -0x3c7085ef,0x3c666e11,0x3c557c37,0x3c53474a,0x3c305519,0x3c16c897,0x3bde7022,0x3c1268c7,0x3c3ef027,0x3c3b8a36,0x3c4c6fbc,0x3c31a0b6,0x3c43c86e,0x3bde2520,0x3c4f7899,0x3c2f94a8,0x3c2c7345,0x3c4467c9,0x3c710c7c,0x3c826fd8,0x3cbe78b7,0x3ce22414,0x3cf07c81,0x3cf5a77b,0x3cfa1c76, -0x3d11807e,0x3cfb9014,0x3ccc5d7f,0x3ca6e44a,0x3c6ee45e,0x3c9d4644,0x3cc71ffd,0x3c17616c,0x3c7ef929,0x3c4576ea,0x3c116093,0x3c31b35d,0x3c613b2a,0x3c36fa16,0x3c568482,0x3c2b2e9d,0x3c9eea73,0x3c1f49d6,0x3c76e384,0x3bca77c3,0x3c5c6ea1,0x3c51b12c,0x3c71aef6,0x3c42c333,0x3caab67f, -0x3c9d68c2,0x3c93d26d,0x3ca1a07e,0x3c9581ef,0x3c8c0c4a,0x3c6bdfb7,0x3c8d736d,0x3ca299dd,0x3cd34630,0x3cc46118,0x3cb3477e,0x3ca4110c,0x3c90c221,0x3c990638,0x3c9a1f14,0x3ca3e7fe,0x3c211457,0x3c0f2705,0xbb2e3ba8,0x3c03ae26,0x3c06826d,0x3bfb78bd,0x3c3a781b,0x3ac01b6b,0x3c0b9edb, -0x3bb708c5,0x3b953bcc,0x3b6ed709,0x3c12faf4,0x3bd8de82,0x3c5ddd08,0x3c5a1715,0x3bedd296,0x3c8d4ee5,0x3bcbccc5,0x3c82874e,0x3c2d9943,0x3c3cdace,0x3bfb7439,0x3be4dbdd,0x3bc40420,0x3b8f0ba5,0x3c195f84,0x3c324c72,0x3c595aa8,0x3c8f54e0,0x3cba6e71,0x3ceb9c39,0x3cd4070e,0x3cac7083, -0x3c8c2efe,0x3c73036e,0x3c4e04ea,0x3c6a223d,0x3c53b0f9,0x3b1f1311,0xbbf9c572,0x3c566dea,0x3bd203fb,0xbbba93ce,0xbc026b20,0xbbfeba0f,0xbbf1c621,0xbc0eded0,0xbc41412e,0xbc4fbda7,0x3bfae9d0,0x3c7fd4b6,0xbc039e54,0x3bdf34c2,0x3c7eb6ce,0x3c713ea9,0x3c61f06e,0x3c64e9cf,0x3c64ef71, -0x3c5eb73f,0x3c4ead3e,0x3c380ce6,0x3c42d520,0x3c48776b,0x3c53d647,0x3c56bb37,0x3c47acb2,0x3c4731cd,0x3c3d63cf,0x3c444ec2,0x3c5026c1,0x3c553bea,0x3c87ec9e,0xbc93362f,0xbc532391,0xbca5040e,0xbc34ba54,0x3c25c339,0x3cc64b74,0xbc38cc56,0x3bcaa6ec,0x3cd41ca7,0x3ce2848d,0x3cec0297, -0x3ccc5de5,0x3cd8961d,0x3d02f6eb,0x3cd7974a,0x3be228a3,0xbc05757c,0x3ceced66,0x3c3c17c4,0xbbd52005,0xbc9db538,0xbc6f86de,0xbc858bfa,0xbc870b17,0xbc89bff2,0xbc8657d8,0xbc7fe187,0xbc76db8f,0xbc7758f9,0xbc784206,0xbc832072,0xbc82a9ee,0xbc83718e,0xbc844835,0xbc79acc6,0xbc500e55, -0xbc65bdf0,0xbc7a4715,0xbca3d878,0x3cbdf7ce,0xbb96158a,0x3bf69751,0xbaa6cf94,0xb978587c,0x3ba95287,0xbb5667d1,0x3a58ee4e,0x3ad3c437,0xbafa0c77,0xbbf56ed8,0x3b532fd2,0x3cae6b3b,0xbb39f6fe,0x3bd8612f,0xbaf43d1b,0x3c0c2b37,0xbc9c08da,0xbc9caefa,0xbca8da31,0xbcc1e263,0xbcb44366, -0xbcb313cd,0xbcc587be,0xbca362f3,0xbca7d8bf,0xbcbf329b,0xbcde471f,0xbce0c5dd,0xbcd1883a,0xbcd1a5c1,0xbcbc3e64,0xbc6ad265,0xbc7c2abe,0xbc8080f6,0xbc6c3de2,0x3b691a57,0xbc38e180,0xbaa59e6c,0x3a914864,0x3c1d374b,0xbbd155ba,0x3bc23350,0xbc1bba64,0xba2b9caf,0xbc9bbde2,0x3b1f86da, -0xbbdd089b,0x3b926457,0x3808e68b,0xb92c287e,0x3b98f112,0x395de661,0xbc4ced4b,0xbcdd668d,0xbcc9de04,0xbd02c05b,0xbceb36a1,0xbcde70d9,0xbcda6b6a,0xbcab5e55,0xbcaef98d,0xbcd5625a,0xbcf4918b,0xbd055c2c,0xbceb5edf,0xbced8c13,0xbcb32b15,0xbbefff67,0xbc6c0dd2,0xbc89ebfe,0xbc3d8a5f, -0x3c624542,0x3b1a2eea,0xbba663e9,0x3bf64417,0x3c2a8da8,0xb9a33903,0x3bd0ab81,0x3a817e23,0xbb4b5bf8,0xbbdc7cd7,0xbb3c61a2,0xbb4a7b22,0x3c2eab96,0x3be59798,0x3b69b294,0x3ab55fa7,0x3b89237a,0xbbb1dac8,0xbcf182c8,0xbcd3c080,0xbd1ce728,0xbd103c70,0xbd179da2,0xbd15212c,0xbcc7670d, -0xbccf1054,0xbd125e80,0xbd356602,0xbd44739f,0xbd26e36d,0xbd217322,0xbcecaf4c,0xbbd7ed24,0xbc285b7d,0xbc65cdcc,0xbc5a2417,0x3be0bffb,0xbb2f7f2c,0xbc1ee45d,0x3bc903ab,0x3c2c3edb,0x3be62d7f,0x3bf3cd8a,0xb98a76ad,0xbbdb653d,0xbb400b5d,0xb9559c2d,0x3ba69778,0x3c016f7f,0x3c25750c, -0x3c16eecf,0xbb0d1e8b,0x3c6366d0,0xbc73f028,0xbcff0ebf,0xbd0efcd7,0xbd3ffb14,0xbd250962,0xbd19b2bc,0xbd0d005a,0xbcbddaf4,0xbccf6778,0xbd08fa7f,0xbd34fa9d,0xbd415923,0xbd0f5753,0xbd165438,0xbca0850e,0x3b884f2a,0xbc210706,0xbd3d678d,0xbd822bd8,0xbca0fcf3,0xbb03b9b8,0x3b0f4d72, -0x3c4790e5,0x3ab71e9d,0x3a8d3edf,0xbc0cf8e8,0xbc155c1f,0xbaafa0ba,0xbbab2883,0xba493193,0x3bac9dea,0x3c3a8ff0,0x3c17beab,0x3bb065d2,0xbaa14101,0xba1f428d,0xbc42b511,0xbce6e396,0xbca81d7c,0xbc8fd593,0xbc0231fe,0xbc5ce46d,0xbc2e2a49,0xbc9f630e,0xbc8848f5,0xbc69eccd,0xbcfec71a, -0xbd473dce,0xbd6ec643,0xbd880647,0xbd849922,0xbd458d95,0xbd58f0fe,0xbc83a581,0xbc439a35,0x3c10dbdc,0xbcad0bdd,0x3b9d01d5,0xbc573581,0xbb4c1317,0xbbc2581e,0xbbc0d0d3,0xbb92a214,0xbbe08bdb,0x3a5baf07,0x3b114e2f,0xba8bdcdd,0xbb263673,0xbba7c310,0x3c055994,0x3ba9ed65,0x3c913232, -0x3ae6cb76,0xbce97107,0xbd03b209,0xbd514cd9,0xbd1b9443,0xbcf78c12,0xbc7b42e4,0xbc4c553d,0xbc3959c1,0xbaeea487,0xbbd4476a,0xbb150fce,0x3b23dd7b,0xbae8fded,0xba5229c4,0x3a5748ba,0xbc227847,0xbd4ef256,0xbd3b8896,0xbd124f02,0xbc49ad68,0xbc9524c8,0xbc1c33fb,0xbc1190cc,0xbbb75fac, -0xbba0c904,0xbb6fe304,0xbb8ad058,0xbae52b63,0xbb5a717d,0xb9ea91cb,0xbbd5b91f,0xbb2d139d,0x3af41c75,0x3b899f9c,0x3b82dd28,0xbc5b4a88,0xbc7efa39,0xbc829eb0,0xbca62381,0xbd001747,0xbd2bd4f3,0xbd487530,0xbd4bdea9,0xbd1ecc79,0xbc85aa5b,0xbcc1b639,0xbd232d56,0xbd5d51bd,0xbd55fb90, -0xbd4e8a77,0xbd2bec73,0xbd491ac1,0xbd01a085,0xbc5fab16,0x3c0b1665,0xbae003bb,0x3c5279f2,0x3b3af624,0x3a9ee6cd,0xbb266faf,0xb8820b98,0x3aaae7a3,0xbb200579,0xbb0a68c2,0xbb07f789,0xbb299ed2,0xbaa61986,0xbb80837e,0xbba5d36d,0x3b554fcf,0x3be215e8,0xbb99075e,0xbc451625,0xbc37b9c7, -0xbc43017b,0xbcfc5bab,0xbd3c41ca,0xbd6dfc6b,0xbd76ad0e,0xbd483e21,0xbcf6cbde,0xbd245199,0xbd6f92a6,0xbd985159,0xbdc523d7,0xbdbe6831,0xbd8a86e6,0xbd392af3,0x3c38f4cd,0x3d7295e7,0x3d6b531d,0x3d2e80b4,0x3d1c53e4,0x3c984d1e,0x3c7a5be1,0x3ba7a57a,0x3b686eb4,0x3a407f8f,0xba1bd770, -0x3a06a82b,0x3ab68549,0xbb4d0367,0xba79d5d9,0x3af5a5c1,0x3b81e94d,0x3baf55ba,0x3c2b3624,0xbc449b1e,0xbc50a645,0xbc989ae9,0xbccdcc3d,0xbcd2a095,0xbcb04825,0xbca6530b,0xbc907afd,0xbc93efd9,0xbc965ebe,0xbc9f464c,0xbcc9d31f,0xbca9957d,0xbd8e94bb,0xbda87a03,0xbd98fda3,0xbcc8bbcb, -0xbcd7eb1e,0x3c644cfe,0x3d2d2374,0x3c58fcc7,0x3c9f5bcd,0x3c8be181,0x3c624679,0x3c3c03ad,0x3c4e0299,0x3c168ec4,0x3b8ee3a6,0x3b546eee,0x3b70b70e,0x3bf4477c,0x3ab28710,0xbaf289ca,0xba4152f3,0x3907122d,0xbb448d17,0xbc0bfb66,0xbcaf41d4,0xbc8809cf,0xbc96794a,0xbc91bf09,0xbcbb9043, -0xbd2a3997,0xbd11d314,0xbd258dba,0xbd84eb75,0xbd650714,0xbd569792,0xbd495604,0xbce933c5,0xbc13e4bb,0x3be8b899,0xbb28a04d,0xbc2ef38b,0x3b1428b6,0x3cc3a36a,0x3c86de96,0x3c416da1,0x3c3fdbb9,0x3bf7ce92,0x3bf4097b,0x3bc74ff9,0x3be1e955,0x3b5eace3,0x3b516768,0x3aead485,0x3b86048c, -0x3be9a051,0x3c1bc669,0x3c1a80b9,0x3b8d9355,0x3ba47ba9,0xbbbda3d1,0xbc5be577,0xbc907e9b,0xbcba80fd,0xbcb8109b,0xbcb08b5e,0xbc876ef5,0xbbf550f6,0x3a5289e8,0x3c02b351,0x3c58d734,0x3c117101,0xbbd34f4a,0xbbf1ae9d,0xbc3f1437,0xbc6880c9,0xbc2e375c,0xbc6e4a3e,0x3c8e169f,0x3bd5a516, -0x3c1dfffb,0x3c1564eb,0x3b324b43,0x3c17f210,0x3bf254ce,0x3c25de14,0x3c199b76,0x3c52759e,0x3c242f9c,0x3c347765,0x3bf0bb1d,0x3c0a97f6,0x3c255d12,0x3c4ade39,0x3c0ee541,0x3b9db793,0x3bf191a3,0xbb5279b6,0xbad2b2a6,0xba9d4a35,0xbb37e3f4,0xba8d66fb,0x3b7ecc98,0x3bbedc4a,0x3c000f47, -0x3c1cdb3f,0x3bab9275,0xba868843,0xbc2a279c,0xbba5c071,0xbb2791a8,0xbbeee9b3,0xbafaf254,0x3a465372,0xba617c95,0x3c869a5d,0x3c0bc394,0x3c8ac5ce,0x3c88f69a,0x3c3bfc73,0x3b95a8e5,0x3c01d8ca,0x3bcb9da0,0x3c45cfab,0x3ac926a7,0x3c1e5093,0x3b96c84d,0x3c5616ec,0x3bf4980a,0x3c008994, -0x3c100879,0x3c75381e,0x3bcb14eb,0x3c15a317,0x3c3957f7,0x3c53cbb5,0x3c88f94c,0x3c98caab,0x3c92f2a8,0x3c46047a,0x3c011cbf,0x3b6b0a98,0xbb00afb2,0xbbbcdc03,0xbc29aaa3,0xbc27daa9,0xbc20787a,0xbc068eff,0xbb12ef72,0xbbafbdf0,0xbbd491aa,0x3c3f464c,0xbba0a428,0xbbbe5267,0xbb18d501, -0xbbc7336c,0x3bd883b5,0xbad4a931,0x3b9cbe2c,0x3bc2edb2,0x3c015f05,0x3b378b65,0x3bd4263f,0x3b890ee8,0x3be8d3d3,0x3c7c595b,0x3bf2b5ef,0x3c8901b3,0x3c4ab0e6,0x3c47b697,0x3c1c3347,0x3be35d44,0x3b91e69a,0x3ae920fa,0x39c04fe4,0x3a9ae9f3,0xba7df39a,0xbb1f7a8c,0xbb9cde7b,0xbbf22765, -0xbc3c3490,0xbc0e93f8,0xbbba767b,0xbbb5fa9e,0xbbe4af54,0xbb99138d,0xbbe3c79d,0xb95ad721,0x3c4b86e3,0x3ca433fe,0xba323ada,0x3bf9de03,0x3c9af1f8,0x3cacebed,0x3ca285c4,0x3c9967fe,0x3ca6129b,0x3cbe9a32,0x3cc1bd2e,0x3bdf4736,0xbb5395a7,0x3c9b3b02,0x3c140334,0xb967c0fc,0xbb3e28ce, -0xbb324d7e,0xbb050d4f,0xbaa24242,0xba0b0445,0xb9ab5c83,0xba81c8ca,0xbb09e885,0xbb83f5c1,0xbbadb168,0xbbd3443f,0xbbe186f7,0xbc04600d,0xbbfd58a0,0xbbf3a4ce,0xbbe03ce0,0xbbb7fe55,0xbbe58b3d,0x3c7a266d,0x3c43cae4,0x3cabc8db,0x3b84e3db,0xbc837ae5,0xbcb9c1d1,0x3bc535fb,0xbc31bef3, -0xbcd1a8e9,0xbcd7aebf,0xbcddbfc1,0xbcc3088e,0xbcc98cce,0xbcefaa07,0xbcc5804d,0xbc4acac5,0x3b257e5e,0xbcbf3499,0xbc802b2d,0xb8540706,0x3c9625d5,0x3c51da2f,0x3c63d106,0x3c613167,0x3c6df98f,0x3c6d3bef,0x3c5e7cfa,0x3c65bcd5,0x3c6570e7,0x3c600ba5,0x3c6578ec,0x3c5daa22,0x3c6cebe0, -0x3c5938ad,0x3c50fa7a,0x3c3ef506,0x3c4a973e,0x3c6a89fb,0x3c86e97b,0xbcd29772,0x3b8eccf8,0xbc5621a4,0x3b4ac5ad,0x3a9d43f7,0xbb8541d3,0x3bf33182,0xbb3992ac,0xbbd584ec,0xbbbbc578,0x3b46ff4d,0xbbaf9dcd,0xbc8b3b51,0x3bb260fe,0xbb9879a9,0x3afc8323,0xbc47089e,0x3c5603d4,0x3c8a83a1, -0x3c8471e3,0x3c905b59,0x3c90125f,0x3c92db1e,0x3c93f3d6,0x3cae1754,0x3cb1968a,0x3c99303c,0x3c956a83,0x3c84d17b,0x3c9df988,0x3c7cbd43,0x3c5dab68,0x3c3892dc,0x3c450f12,0x3c872775,0x3c68d9cf,0xbbb49214,0x3c37b38d,0xbc0e79d0,0x3b6a0fa1,0xbb233378,0x3c1011a2,0xbb344223,0x3c3ffe14, -0xbc3b71d6,0x3c52dc58,0xbbae9095,0x3ad94839,0x3acf3d9d,0x3c14e8d0,0x3bf328a6,0xba68e0cc,0xbb44c025,0x3bed3778,0x3cb6e798,0x3c8848de,0x3cae4b1c,0x3ca9d067,0x3cb2560f,0x3c94817f,0x3cc0aa65,0x3cb9cad0,0x3ca72ec6,0x3c9d665b,0x3c95ce99,0x3cb5d2ad,0x3c78e890,0x3c3ee54d,0x3bfb32ce, -0x3c33dccc,0x3c79755c,0x3c0fe4fa,0xbc5147ee,0xba87c290,0xbc0df6b2,0x3bc209ad,0x3bebbe37,0x3bd03dbe,0x3c0b7b9b,0x3ba996ab,0xbba04df8,0x3a2053fe,0xbb3f1e9f,0x3bea2bb4,0x3bcd00b0,0x3c599ae7,0x3c35899c,0x3bcc0c09,0xbb58bd7d,0x39ed9589,0x3cc51d5b,0x3c8b6ddb,0x3cbc1d1d,0x3cca3365, -0x3ce188e9,0x3ca1abf2,0x3d018485,0x3d008ecd,0x3ccd30d4,0x3cb0c6de,0x3c97ab03,0x3cd9b019,0x3c698305,0x3bfe79db,0x3bb5c72d,0x3bedb23f,0x3c6979e7,0x3c726b07,0xbb0d46c5,0x3bb08294,0xbb9f7e6b,0x3bf4d37d,0x3c38a026,0x3bd5afd6,0x3c0a1c30,0x3b0f2138,0xba5c1d4d,0xbb33d022,0x3b626561, -0x3bb2c5ee,0x3c850cdc,0x3c8a6558,0x3c1b1a6b,0x3ca30fb6,0xbc373c44,0x3c0bab8d,0x3cb9ed09,0x3ca61833,0x3cdb9b3e,0x3cd56bea,0x3cdd30ef,0x3c983309,0x3d000d81,0x3cfff5fd,0x3cc982c6,0x3cc6a1c8,0x3ca4e069,0x3ce3949e,0x3c68de52,0x3bfd05d5,0x3b6bef6a,0x3bf47bbc,0x3c885804,0xb71b31f4, -0xbd2c50fd,0xbcdd835f,0x3b4840a1,0x3a3d25d6,0x3bf94940,0xbada30ab,0xbb7a2510,0xbbe13831,0xba98f206,0xbb8227ee,0x3ac53917,0x3b9aed1a,0x3c2d6c5e,0x3c86e9eb,0x3acc8d5f,0x3c82e95c,0x3b8c7b7c,0x3ca4dfdc,0x3d02b022,0x3c9cf3b4,0x3ca2ca7b,0x3b886d5b,0x3bd8c748,0x3c5fec9e,0x3cf6e66a, -0x3d1a3569,0x3d5206d6,0x3ccd69a4,0x3c799c99,0x3c972a20,0x3be4de10,0x3c143dba,0x3c110017,0x3cc83d7e,0x3c9f3034,0x3c63f440,0xbc4cc62d,0x3c6fac46,0xbc62dbfb,0xbba8f33e,0xbc1b5a5e,0xbb822d6d,0xbb760d80,0xbb92c117,0xbbb3c0bf,0x3ac50aa7,0x3aeb61d7,0x3ac1f427,0x3ab5696a,0x3bd35907, -0x3bdbeb08,0x3c19d20a,0xbb8cdc23,0xbb3a2d3c,0x3c88e48e,0x3c2aa897,0x3cb9d266,0x3c164817,0x3a9bcf86,0xbc081301,0xbc34e7b2,0xbbec09d0,0x3bfe1377,0x3bb658a8,0x3b67db9b,0xba411f77,0x3b78feea,0x3b557294,0xb9d4ecdc,0xba6457b7,0xbcb11c6d,0xbcf6b2cc,0xbcc067ef,0xbc3169da,0xbc911aea, -0xbbe9b0d0,0xbbd58c3f,0xbb161d51,0xbb6f531f,0x3ad4cd5e,0xbb4c864d,0x3b5a16ea,0x3abff743,0x3939f391,0x3a41c485,0xbb2d94f9,0xbb5a2e5e,0x3bcfe7b9,0x3c0b9528,0x3c433494,0x3bfdf073,0xb90f205b,0x3abb052e,0x3bf84328,0x3c3d884d,0x3c21d861,0x3c689a01,0x3c85a1ba,0x3cdab372,0x3cbe2edb, -0x3cce0bae,0x3c768891,0x3c95ae98,0x3c87602e,0x3c77c874,0xbc4ada2d,0xbbc8140f,0xbc71e1a7,0xbc7d90c1,0xbafb0a9b,0x3bc6beb8,0x3ad38932,0x3b3209a4,0xbace2939,0x3b234e0b,0x3b58a8df,0xb920f68b,0x3ac75f70,0x376ef7ed,0xbac26148,0x3ae34fd1,0xbaeb4199,0xbbbf401b,0x3c1305d6,0x3b9f5da9, -0xbad5c886,0x3c13774b,0x3ad112c7,0x3ad87c31,0x3b9c86c7,0x3bafa683,0x3b98e736,0x3c36b02f,0x3c0b2cc4,0x3c3f379b,0x3bb99a4b,0x3c0093a3,0x3c57e1eb,0x3c0fb77e,0x3c6285fb,0x3c984573,0x3a05ba99,0x3cfdea6f,0x3d03036c,0x3d5ac57d,0x3d262d32,0x3d01aff7,0x3cbaf8e9,0x3c60ad09,0x3ac2053c, -0x3bc144a4,0x3a89dd2c,0xbb033f6b,0x3b11705b,0x3a553adb,0x39af61d7,0xb9f9760e,0xb823a6ce,0xbb286ca7,0x3c1c7563,0x3bb5de15,0x3a76048b,0x3c02fd78,0x3c1a22eb,0x3c2f5c5b,0x388c7d59,0xbbfff8fb,0xbc963231,0xbc386335,0xbc57e6d7,0xbcdc7de8,0xbcd261d8,0xbcaa9ad1,0x3aa9c441,0xb966701e, -0x3ba69ec7,0x3cba9a03,0x3c7c2a5a,0x3d9556b7,0x3cc0262f,0xbc47fa82,0x3ccd73e8,0x3c278736,0x3c757645,0x3c572374,0x3c8b5155,0x3c288db2,0x3c366a60,0x3b84a1a9,0x3b3c8ee4,0x3b560fa3,0x3c336ac3,0x3b4d843d,0x3ae90423,0x3b37a5bb,0xb7d32f4c,0xbbbade3f,0xbc5fbf58,0xbc4a99ed,0xbcc0e278, -0xbcb6878b,0xbc85b925,0xbc465ec8,0xbc469f15,0xbb00f6f6,0xb929529f,0xbc62aea3,0xbc508351,0xbc0cec0d,0x3a6284f7,0x3d049a7c,0x3d5d0ea6,0x3da04c41,0x3d8c90db,0x3cd78192,0x3c9d2eea,0x3bbe45ce,0x3bffd2d4,0x3be1d068,0x3bdde1e7,0x3c292c06,0x3be9f7f7,0x3c58c46e,0x3c11609f,0x3c389a28, -0x3c017bed,0x3c059711,0x3bffe606,0x3bf2123f,0x3bfbc283,0x3bfe0705,0x3be52519,0xb8d69b6b,0xba7823d0,0xb85b8e1d,0x3a32ea69,0xbab77b87,0xbc2d919d,0xbc73d816,0xbc4b1f4c,0xbb9a7e72,0x3b0141bd,0x3b198a40,0x3c879061,0x3cea2f29,0x3d3ed08c,0x3d3a33f4,0x3d22c228,0x3d02fd0d,0x3ce33a34, -0x3cd86819,0xba41a1e3,0x3ba7c1a8,0x3bddb596,0x3bd687d1,0x3c87a8fe,0x3c08487d,0x3c1f9a0d,0x3c23b27d,0x3c55e223,0x3c37d56a,0x3c3f6bc8,0x3c0e6882,0x3c179a84,0x3c26d387,0x3c1add30,0x3bccdb07,0x3be0ad16,0x3c0a86bf,0x3b0fe42c,0x3c699a67,0x3c20cb14,0x3c57db10,0x3bfa9550,0x3c2070ac, -0x3c6b6ae8,0x3c928913,0x3ca83350,0x3cc244bd,0x3cdad28a,0x3cf2d861,0x3d19d7ae,0x3d062e50,0x3ceb9228,0x3cca3dcb,0x3c97483a,0x3c88fa47,0x3ca56754,0x3b78a6b6,0x3c3c8eb0,0x3bbd7eda,0x3ad08ec3,0x3b8597b3,0x3c00f9bd,0x3bc46af4,0x3c116749,0x3b93ec2a,0x3c63dfd8,0x3c0e2251,0x3c3d9bfd, -0x3bc1acfb,0x3c4127a0,0x3c475a32,0x3c5fd86e,0x3c0723e7,0x3caefd95,0x3cc47192,0x3c9db320,0x3ca98541,0x3cbfc291,0x3cd1deab,0x3cbb729e,0x3cc2b032,0x3ccf6487,0x3cd49ac1,0x3cbe48ec,0x3cac1719,0x3c9e6c0a,0x3c80adf9,0x3c60e96e,0x3c60b3c1,0x3c6809bb,0x3c0782d0,0x3c025d8f,0xbc22c371, -0x3bb6870a,0x3b53ba6e,0x3b785bca,0x3c0bf800,0xb9744502,0x3c0755f2,0x3a96ba57,0x398ecaec,0xba3f216a,0x3baa1585,0x3b504cad,0x3beabeda,0x3bef8af8,0x3bac5c2b,0x3c80790c,0x3c050eec,0x3c974220,0x3c5b1fb7,0x3c87bdbf,0x3c6c6943,0x3c4faff3,0x3c2c1717,0x3c14aa76,0x3c567fab,0x3c4258df, -0x3c5d7db6,0x3c83e152,0x3c8f4d92,0x3ca26394,0x3c9afcb1,0x3c8cd55a,0x3c713eec,0x3c51fbd1,0x3c2d8435,0x3c558d3c,0x3b470722,0xbc002eda,0xbc2d284c,0x3b7ffb33,0xbbaeceed,0xbc4f3848,0xbc7036c4,0xbc4bd2fa,0xbc2c8bad,0xbc412251,0xbc6c83d5,0xbc739690,0xbb6bb5ab,0x3be06aef,0xbc10018b, -0xbb86fb74,0x3baddecf,0x3c534127,0x3c4484b7,0x3c459cd8,0x3c4b28a2,0x3c5c3eda,0x3c5f6459,0x3c5233cd,0x3c5b1853,0x3c4ec86b,0x3c4ff425,0x3c455ccb,0x3c3332a6,0x3c2cbdc6,0x3c20ca4c,0x3c1f330e,0x3c22aeb5,0x3c27f8ad,0x3c46f7e9,0xbadf4509,0xbb3ae492,0xbc2f280d,0x3c156631,0x3cb33a5d, -0x3c84ff86,0x3bc1c6bd,0x3c91418b,0x3cb4c809,0x3cb5ef4e,0x3cae6d64,0x3c8ac13e,0x3c92c6ab,0x3caaf99e,0x3c8f4f31,0x3c9c1ccf,0x3c237a04,0x3c903431,0x3ca7112f,0x3c2708a3,0xbc1847ee,0xbb8652c0,0xbb943551,0xbba3713c,0xbba9d5fd,0xbba0d6f8,0xbb88c506,0xbb7f67eb,0xbb7ce868,0xbb93c45d, -0xbb8c3c7d,0xbb857201,0xbb5b510d,0xbb4a0b3a,0xbb2e27f7,0xbb014057,0xbb3b5a32,0xbba98a06,0xbb743695,0x3cee6639,0x3b68999e,0x3c4329f3,0x3c0797cc,0x3c429889,0x3c1c3e02,0x3b209de6,0x3c45eae9,0x3c1582e5,0x3c324e63,0x3b42cdd8,0x3c1defe0,0x3caa9afa,0x3c0a3eba,0x3c7c093f,0x3bf9e411, -0x3c963ead,0xba7aac5f,0xbbd3c9e1,0xbb9d5125,0xbbf7856c,0xbbccced5,0xbbb25f4c,0xbb93af3b,0xbb218d38,0xbb74618c,0xbc0b8798,0xbc001899,0xbbe4fb47,0xbb80b444,0xbac80ae4,0xb984e0cc,0x3923c212,0xba8e4d0b,0xbbd527b4,0xbb3c5bce,0x3c95d1ed,0x3b092ae5,0x3bfbd2ac,0x3c0db5a8,0x3c835795, -0x392f33ae,0x3c5a1248,0xbb0ef32f,0x3c4c37f2,0xbbf49372,0x3bc0742c,0x3b9ece08,0x3c330920,0x3c061640,0x3c3ab4d8,0x3c353731,0x3c406083,0xba98194a,0xbc39578e,0xbbc0d838,0xbc3fc6f2,0xbc1f52a3,0xbc1554ee,0xbbada3e8,0xbb3278c2,0xbb71e060,0xbc1f8be2,0xbc084ffb,0xbbe14680,0xba206ea2, -0x3b2527bf,0x3b9f092a,0x3b75ce9c,0x3a64dcdb,0xbc1e3575,0xbb730b69,0x3caf6439,0x3c26cd79,0xbaf87c68,0x3c2765b8,0x3c3df7bb,0x3b767940,0x3c014094,0x3b84e43f,0xbb0caa45,0xbb9ee9e4,0x3b4b14d4,0xbb5003e7,0x3c61a311,0x3c204514,0x3c2fed61,0x3c0cf397,0x3c52cb2d,0x3b8588aa,0xbc5c3e5b, -0xbbfafb68,0xbc72e287,0xbc555e7c,0xbc365231,0xbb934877,0xb930c9d7,0xbb48dea2,0xbc944c4b,0xbc6113a9,0xbc2dee99,0xbb2fd3b8,0x3bdd7f1f,0x3c1be7a9,0x3b599290,0x3b2b0faa,0xbbb96ade,0xbbb6b602,0x3c91b78d,0x3b9b7bff,0xbbbfddf6,0x3bcd03bc,0x3c1fcb81,0x3b9e449b,0x3c07af8b,0x3b395ec7, -0xbc03efdf,0xbb88549c,0xbb02a560,0x3b4d5444,0x3bfc3ff3,0x3c455759,0x3c6204b6,0xbb5e8818,0x3c9ea2fd,0xbb951375,0xbc77e249,0xbc23da2c,0xbc9b00df,0xbc7ec59d,0xbc586e68,0xbc0c5886,0xbb35d546,0xbbb91293,0xbc84ebf0,0xbc5ec091,0xbbf61214,0x3bddbe71,0x3c61bbf1,0x3c99d707,0x3bcd7a10, -0x3b68b5f8,0xbc57064a,0xbce4a053,0xbbda374f,0x38ff65e7,0x3c9df1b1,0x3c5c1e62,0x3bc39241,0x3b18cbf8,0xbbb2e241,0xbc012429,0xbb3152c7,0xbaabf9d7,0x3a86fe78,0x3b407e5b,0x3c28cf75,0x3c059d1e,0x3c9c3261,0x3b73ec92,0x3c774555,0x3c1a003b,0xbc5c4dd4,0xbc6a9bf4,0xbcb2228f,0xbc804acf, -0xbc8d62a9,0xbc357130,0xbc5ff9d4,0xbc6803f5,0xbc138a49,0xbcf031f3,0xbd2589fe,0xbcf09f31,0xbd0e7bd5,0xbcf5e8b1,0xbc73ef8a,0xbc594961,0xbcf491a7,0xbaf7afff,0x3d130ccd,0xbc08c779,0x3b83c4a9,0xbc75dd6a,0xbc4e447c,0xbabde9be,0xbbda2664,0xbb54fcf2,0xbbbcb113,0xba6a7257,0x3a1b0567, -0xbb2c645b,0xba64a1b1,0xbb620844,0x3b4e5308,0x3bca1e33,0x3c81dcd3,0x3c0c69c2,0xbc2cff90,0xbc00a611,0xbc9889ae,0xbc0f77ee,0xbbe3fb08,0xbb4991f9,0x3ae72a57,0x3a00eaa9,0x3bd338fc,0x3a57c502,0x3bd5be92,0x3c5166d2,0x3c9b3106,0x3c700d78,0x3b1a6d92,0xbc4a1d4d,0xbc6e7a7b,0xbcd8fd66, -0xbce43b87,0xbc31a61a,0xbc965177,0xbc1a1d3b,0xbbb075c4,0xbb266d2c,0xbb479916,0xb9d6859b,0xbb5d86e0,0x3a5333bb,0x3a58b612,0xba86dd89,0x3b4db9e3,0x3a2c5af6,0xbb52414d,0x3c0f253e,0x3c5b05d4,0xbbac8192,0xbc24282e,0xbc0d049d,0xbc6cd2ed,0xbc9a0148,0xbcba9058,0xbc90748d,0xbca8ebb1, -0xbc667988,0xbc72f3bb,0xbcb4f335,0xbccca4bf,0xbc83d4de,0xbb298887,0x3b518025,0x3b85f30d,0x39d8ebeb,0x3b31668d,0xbc42f80d,0xbb90efbe,0xbb8e8a95,0x3bd08199,0x3b6151fd,0x3b89c46a,0xbb740ba8,0x39382f37,0x39b30972,0xbad6a620,0xba71ace6,0xb9d82434,0xbb38d8ec,0x3a0f6a77,0xba2fe815, -0xbbfad126,0x3bacd666,0x3c49f720,0x3abf36f0,0xbc4910e4,0xbc2d421a,0xbc351c32,0xbc928a00,0xbcac913d,0xbcb7e16f,0xbca0a3e4,0xbc67c53d,0xbcbcb89d,0xbcbf0bc5,0xbd05ebb9,0xbd1fc2fb,0xbce30cf5,0xbc90a0e3,0xbc4cfda4,0x3b2c509c,0x3be14abf,0x3cf16a15,0x3d46faac,0x3d0c093b,0x3d050e6f, -0x3c5a9e5a,0x3be7e4d0,0x3bb077fc,0x3b1e146d,0xb8df07f4,0x39b0269f,0xba378655,0x3a30b711,0xbb8d9552,0xba7758a2,0x3a1ce497,0xbb5f4786,0x3bee3ee4,0x3c430c26,0xbc254b57,0xbc39abbd,0xbc50f80b,0xbc351380,0xbc2beb9d,0xbbf5e507,0xbc57c951,0xbb2580cc,0xba461f1f,0x3b7371a7,0x3a79b41d, -0xbac27c3f,0xbc9dff2b,0xbc164df4,0xbc5ad181,0xbd1ad87b,0xbb833f31,0x3d526dc7,0x3d7a2a62,0x3d3d54db,0x3d0d5786,0x3cb1b973,0x3cc127ad,0x3cb367e6,0x3c82e96e,0x3c69ae05,0x3c0ef7b0,0x3ab46da2,0xb9fe21e2,0x3b3bf46b,0x3c0fb48b,0x3bb7cd9c,0x3adf7ed0,0xbb7e1e16,0x3b11e78e,0x39500860, -0xbba2881c,0xbc367507,0xbc5aab6c,0xbca93adc,0xbc62727a,0xbc1fb5ab,0xbba46c56,0x3ba56f86,0x3b8ac955,0xbb8e361e,0xbcae9131,0xbcf2253e,0xbd270ae1,0xbc32beea,0x3c8e5ac8,0x3d1f5ffb,0x3d5edd2e,0x3cb26dd1,0x3cc3e640,0x3cecef2b,0x3ca9b84c,0x3c96e412,0x3c7e217d,0x3c4a67ac,0x3c5d8906, -0x3c3d17a6,0x3c78a631,0x3bc7b45a,0x3c2a9103,0x3bcc122d,0x3b9950ce,0x3baafb2c,0x3becc3a0,0x3bce13eb,0x3bae5dbb,0x3ba4911f,0xbbe02b43,0xbc21ab77,0xbc3280a8,0xbc4da0ba,0xbc826510,0xbc8f7d05,0xbc95af42,0xbc9c27a7,0xbc826337,0xbc1bb600,0xb846b03c,0x3c23f8a3,0x3c4956bf,0x3cb42cf6, -0x3ccbd702,0x3cb4a144,0x3cbc02ce,0x3c074a9d,0x3cad98ce,0x3c9710c8,0x3c8a0012,0x3c8e06e6,0x3c11020c,0x3c520f92,0x3c0f4401,0x3c3b6438,0x3c09c575,0x3c3d3653,0x3c060b55,0x3c37c07a,0x3bc27e68,0x3c02bef1,0x3c0ab442,0x3c4637da,0x3c4c3cef,0x3c152803,0x3c4ba6c5,0x3b31bded,0x3b8fe66c, -0x3ba6d81f,0x3ac2c136,0x3b52ff6f,0x3ba16e3f,0x3bee7688,0x3c150201,0x3c5aaa6c,0x3c5a6945,0x3c6c6760,0x3c7ae8ae,0x3ca16414,0x3cab6089,0x3c803ea9,0x3c92ab8e,0x3bf29892,0x3c1694b9,0x3c9f76b4,0x3c652d6e,0x3c9c8d15,0x3c881957,0x3c402c19,0x3b9bb021,0x3c0b04ee,0x3bd70aeb,0x3c73c78d, -0x3bb1e9c1,0x3c1fc9a6,0x3c012ce2,0x3c5af207,0x3c1dbfa9,0x3c29ee9b,0x3c3b4f3e,0x3cbcd471,0x3c741ccb,0x3c2ec4b3,0x3c59b2b5,0x3c443d22,0x3c8f4c9a,0x3ca6ab63,0x3ca95270,0x3c9d2d40,0x3ca983b0,0x3caf0560,0x3c896ed9,0x3c7085bc,0x3c40aa23,0x3bfef9b5,0x3bc20de7,0x3bbe9daa,0x3c05379e, -0x3bf2a102,0x3bc130c8,0x3c69d047,0x3ba21d6c,0x3bc6c970,0x3c0776b5,0x3c0195e8,0x3c4321fc,0x3c0b61b9,0x3c557281,0x3c57c72e,0x3c82ed3a,0x3c4b7a0a,0x3c7131cb,0x3c757abb,0x3c7774b2,0x3c9c852d,0x3c3957fe,0x3c8dfd39,0x3b4a113c,0x3b95eef8,0x3bdd6789,0x3bd1d3b2,0x3bafdbd4,0x3b691632, -0x3b13ceac,0x3b37ebbf,0xbab7377f,0xba8d94a7,0xb8d5041c,0x38c76db9,0x3ad9fa84,0x3b97ed6b,0x3bed7782,0x3bed3e9b,0x3be3a986,0x3b77e4de,0x3b634919,0x3c38d777,0x3c82042a,0x3c40d0eb,0x3c2f8ef6,0x3c67ebd3,0x3c538103,0x3c62ff82,0x3c557294,0x3c427248,0x3c4f2714,0x3c692271,0x3c6dff1c, -0x3c67aaf1,0x3c012878,0x3c43849c,0x3c6ad7dc,0x3c161d79,0x3b28a442,0x3b986f34,0x3b946724,0x3ba6b252,0x3bcf9074,0x3be8e840,0x3bee3f39,0x3c03c483,0x3bf2ee71,0x3befbf8c,0x3bdad4c6,0x3bac95ec,0x3b8e1af8,0x3b5ce14d,0x3b45ced4,0x3b484bd3,0x3b676732,0x3c0156ae,0xbb2e1e40,0xb9f412ac, -0x3b6c9f63,0xbc41d777,0xbc7a572b,0xbb7acfa4,0xbc133bc2,0xbc5a15e9,0xbc0d2996,0xbbef6d7b,0xbbc7e350,0xbb8fd7f7,0xbb8d5a01,0xbb99675f,0xbb86a9e0,0xbc6dd9ac,0xbc3b33d1,0xba3e2fdf,0xbc5699a8,0xbc37a5ee,0x3b5d9369,0xb9419f27,0xba2200cb,0xba07409e,0xb9de9d51,0xb958f010,0x39531c1e, -0x389ed63d,0xb992b4ef,0xba9a39ba,0xbaaeeae9,0xbabaf2a1,0xba74418a,0xbafa6e6e,0xbb017b44,0xba5c77ca,0xba5d653c,0x3a232b5b,0xbbbb36cf,0xbc86cfe6,0xbb390b11,0xbc24fcd5,0xbb7d16c3,0xbbe3feff,0xbb8ff8ee,0x3a98baa8,0xbc027260,0xbbe5d7e4,0xbc37032a,0xbbaa3206,0xbbe42816,0xbbe3a0c3, -0xbb858709,0xbbb02e5e,0xbb6be68d,0xbc4b40c7,0xbbcaef3b,0x39bd7f2a,0xbb218b78,0xbb0348c2,0xbb01c6b0,0xbabec013,0xbaaa0fcf,0xb96700f1,0xbafdcb8f,0xbbc6a2a3,0xbbc9cd52,0xbbc51c8c,0xbb66d527,0xbbe00c3a,0xbbb2e57e,0xba194763,0xbb267535,0x3b122498,0xbb98ec0e,0xbc3640c6,0xbb283e3d, -0xbc359cbb,0xbb5b7afe,0xbbae1576,0xba188064,0xbbaa244e,0x3b38884d,0xbc742ccc,0xbaa885cf,0xbba5cb98,0xbc04af83,0xbb74eed1,0xb9604c6f,0x3a1bd26d,0xbb28a978,0xbc05ab7e,0xbb52e305,0x3ab5b38a,0xbb990ab8,0xbb49bc52,0xbb800341,0xbaceb601,0x38c98444,0x395fc8cb,0xbb1a485b,0xbc136b1b, -0xbc1cc93e,0xbc316a8e,0xbbc40afd,0xbc48b926,0xbc26a3f2,0xbb05709f,0xbb7321d8,0x3b783f13,0xbbc8509e,0xbc793a33,0xbbafc8e5,0xbc382662,0x3b4021f5,0x3bba4787,0xba5b49c9,0x3bc5a71c,0x3b6d5914,0xbb589984,0xba210fe5,0xbbdef665,0x3b0e243a,0x3aa6805f,0x3bf79943,0x3bf38834,0x3acda143, -0xbc042dc3,0xbc0c64ba,0x3adecec6,0xbba27b5b,0xbbb5f472,0xbbba07f8,0xbb90d308,0xbb3f0ab9,0xba40fe7b,0xbbac8a1c,0xbc8e7dba,0xbc88ad52,0xbc93a13b,0xbc14ca44,0xbc9d7c0e,0xbc610e39,0x3b5a3896,0xbb9f1e7c,0x3b95210b,0x3a7f7ee7,0xbb83afdd,0x3b50e636,0xbc0864f0,0x3b02fd96,0x3bef639b, -0x3ba57540,0x3c068ecb,0x3afc698a,0xbb2dd898,0xbb5620d7,0x3aae3931,0x3af223b5,0x3c2dff22,0x3c2e2a58,0x3c0adb42,0x3c6eb4b3,0xbc2e90cf,0xbb20f2f8,0x3a813d86,0xbc0af654,0xbbf5d426,0xbc026584,0xbb914071,0x3ae428d6,0x3ad0d20e,0xbb8e4735,0xbc5d7f07,0xbc9657d8,0xbcb02daf,0xbc1fa6ba, -0xbcccfa84,0xbc8ed0f2,0xbab23b1c,0xbb590ced,0xbc105ec6,0xbca7f81f,0xbd69cb1e,0xbd147f1e,0x3c28f0e3,0x3b1d00d1,0x3b29aff8,0xbae489f5,0xbbbb84f0,0xbbe90bbe,0xbb3a0791,0xbb378508,0x3b1cd337,0x3ab41cbc,0x3bb8511d,0x3c272be1,0x3c163dc6,0x3c1efbd0,0xbba239a1,0xba815175,0x3bf5c102, -0x3bd80d16,0x3c610ccd,0xbbbfd760,0xbb155c96,0x3c49246e,0x3c854bab,0x3c77f7dd,0x3c3f817a,0xbc7a307a,0xbcc7379c,0xbc9f50d5,0xbccb07cd,0xbc9df82c,0xbc4e1d03,0xbb64de9b,0x3bc9c867,0xbbb6be39,0xbc35cef7,0x3b54f3ba,0xbcb4adca,0xbc91e837,0xbc8086d2,0xbc228f39,0xbbb3df56,0xbb8396df, -0xbbd38e83,0xb9290e02,0x385c8b20,0xba751b06,0xbb10fce8,0x39ef078c,0xbb95d431,0x3b9c3b66,0x3ab192ac,0xbbd16699,0xbbad780c,0xbc7d8827,0xbc8128ab,0xbc2b35c9,0xbc1fb1a9,0xbc6f328b,0xbbe79b3e,0xbb33274d,0x3b9f81ea,0xbaf33cb9,0xbc1ea048,0xbc861c59,0xbc5a4190,0xbc54e129,0xbc1c0d6e, -0xbc1138cf,0x3b772fa7,0xbc99a276,0xbcaf03ae,0xbc4871d8,0xbcc6a77f,0xbc3a45fe,0xbc082c48,0xbb83ea36,0xbbabde59,0xb987d84b,0xbb0f79e6,0x3aca42cf,0x39852f07,0x3a2c53e7,0xba0cd6cf,0xbb746d4c,0xbc1ec63d,0x3b2472bd,0x3b0e49ec,0xbb49efd4,0xbb645f20,0xbc515a94,0xbc704e10,0xbc9002d2, -0xbc897533,0xbc982ed2,0xbba148fa,0xbb13b9a7,0xbbdfba24,0xbba2c5f9,0xbc5ae07d,0xbd0cccad,0xbd0458f0,0xbcee65ce,0xbc703989,0x3a3e1c8b,0xbc5e2a33,0xbc0ba998,0xbbfc8535,0xbbc562dc,0x37dd603e,0xbb224b40,0x3a988bde,0xbb870845,0xbaabd106,0x39f9739b,0xbb13d480,0xba36248e,0xba8d2f35, -0xbaf49028,0x3aaec641,0xbbb0b1d4,0xbc2e63dc,0x3bc1f7ba,0x3a914e17,0xbc28d4d4,0xba1689f4,0xbc28f655,0xbc356ced,0xbc7b7f1a,0xbc911af4,0xbcc9d27f,0xbc92ea5d,0xbc8b16e7,0xbcb46aa4,0xbc951b63,0xbcafc04b,0xbd2ec926,0xbd25a2bf,0xbd32666f,0xbd648c84,0xbccacac2,0xbd3b98e8,0xbb9335e5, -0x3cc4202b,0x3cd4b722,0x3c9c6033,0x3c1290bd,0x3acf5e5d,0xbb16a29d,0x3a9b9555,0xba8cbed0,0xbb924c82,0xba8dd856,0xba83e449,0xbb9f5694,0xbb9e7fc2,0xbb8618fa,0xbbc3a352,0x3b929040,0x3b34d4f4,0xb922f5f7,0xbc0bf03a,0xbc5d15df,0xbc2a574a,0xbc8bc782,0xbc8b8389,0xbca96c3a,0xbca6e518, -0xbcb49fe9,0xbcc35a2f,0xbca8ce0e,0xbcd178af,0xbcd27ef8,0xbd021fea,0xbd2b3bdb,0xbda6395b,0xbd8ab85f,0x3ccac77a,0x3cefa03f,0x3cc58ffa,0x3cd2159a,0x3c8d5264,0x3ca192fa,0x3c8ddccb,0x3c670b17,0x3bcd5319,0x3bb1098b,0xba50ecb1,0xbac6e10d,0x3b012f66,0x3bd6aa5a,0x3b852e6b,0x3ad3efbf, -0xbb1ec8e1,0xbc069c9a,0xbc51b2ab,0xbc539bb0,0xbc02bffa,0xbc462eba,0xbc367ba0,0xbc680937,0xbc51f025,0xbc231e07,0xbc689233,0xbcaa6c4f,0xbce7b072,0xbd0534a9,0xbd13906e,0xbd5af57d,0xbd2f329d,0xbcce9386,0x3b1cc736,0x3c6d38f7,0x3c1e2834,0x3b86021f,0x3c163562,0x3c2d6940,0x3c0535d7, -0x3c2b2084,0x3c4dacd2,0x3c1d0465,0x3c53401a,0x3bfca50c,0x3c3a7b63,0x3c0afa14,0x3c009ae9,0x3b04eb97,0xb9e0b2b3,0xbb1545b6,0xbad4dd54,0x3b2cbed3,0x3a6f3beb,0xbaf93578,0xbbc30371,0xbc2b0a31,0xbc6a7d86,0xbcb8859c,0xbcde1b50,0xbd042021,0xbd0926d2,0xbcdeb289,0xbc71cff0,0xbbe1c0c5, -0x3ba9ecf7,0x3c877960,0x3cfbe093,0x3cf8c998,0x3cc11a62,0x3c53ddcf,0x3c90bfab,0x3bcd9e00,0x3b312df4,0x3b9eead8,0x3b555b84,0x3c25c25a,0x3bb8232b,0x3bff3e00,0x3bd42178,0x3c1eb2ed,0x3c029006,0x3c257875,0x3bee4ae0,0x3bca63db,0x3b9a1a1d,0x3bac22f2,0x3b5d66ce,0x3b9ed12f,0x3bb1d485, -0x3b1e5657,0x3bc9f93d,0x3b7fe4a2,0x3b89ff31,0xba85c3c5,0xb9418988,0xbab025d9,0x3aeafa96,0x3b88480e,0x3c230892,0x3c4f96fc,0x3c8d6ef3,0x3cb77ac0,0x3ccd435f,0x3cd9a4ea,0x3cc9834d,0x3cac1ed3,0x3c40861d,0x3c31e4f5,0x3b8dcf4e,0x3bfc9f4c,0x3ba4c333,0x3b32b965,0x3b2e797c,0x3b7895fb, -0x3b4011a8,0x3b94db9b,0xb9c3ef0a,0x3b966ab7,0x3bb7c4e9,0x3b9c8e63,0x3bca6ee9,0x3be2de4b,0x3bfd9226,0x3bf72beb,0x3c06ef09,0x3c1c28d6,0x3c68d155,0x3c3d09d0,0x3c69d9f4,0x3c8ecc05,0x3caa2f2e,0x3cafe427,0x3cad8154,0x3cb8b711,0x3caf6e2c,0x3c9687ed,0x3c8a8b67,0x3c850387,0x3c487f13, -0x3c0b39c3,0x3c08c87c,0x3c053074,0x3c0eb819,0x3c00938d,0x3aa7fe6d,0x3be2a1c9,0x3b6f8ac7,0x3bc01804,0x3bf97f7f,0x3bfc43dd,0x3c255570,0x3ba7b1f7,0x3bad493c,0x3b796949,0x3ba91b53,0x3b935cc6,0x3ad79485,0x3a90840a,0x3b410d8b,0x3b8a0fce,0x3ad2bbd2,0x3c00ce79,0x3bfbb9f8,0x3c2ba443, -0x3c2b180d,0x3c2b8aeb,0x3c1d421c,0x3c042eff,0x3c3970d7,0x3c0c9731,0x3c262234,0x3c41940b,0x3c3404af,0x3c3bb915,0x3c4dbd45,0x3c5ffdfc,0x3c55bb7e,0x3c3c0029,0x3c0eb747,0x3c198137,0x3a8b87a2,0xba9dde88,0x3b71777d,0x3ad3fc34,0xbb18b06d,0xb9631928,0xba160c34,0x3aabce00,0x3b33f20d, -0x3b28cfda,0x3b1bc054,0x3b2fa80f,0xbaea1801,0x3b20241a,0x3b9af8b3,0xbaabc048,0x3acb669f,0x3c2ed020,0x3c1fe03e,0x3c26f0c7,0x3c3329c3,0x3c486cb9,0x3c546e9d,0x3c57899b,0x3c624308,0x3c4ccc42,0x3c486bc9,0x3c39bf1c,0x3c264dfc,0x3c1fb2c2,0x3c0dead3,0x3c01987d,0x3bf79635,0x3c00da91, -0x3c485220,0x3c60d419,0x3bfc377a,0x3bd52227,0x3c8c86d7,0x3c44d067,0xbb973904,0x3c7bb950,0x3c430df3,0xb9b8ff6e,0xbacc418b,0xbb651ef2,0xbb9697d1,0xbba0edec,0xbbd9a29a,0xbba61056,0x3c4b4928,0x3c8887f8,0xbbc6c73e,0x3c28cf87,0x3c7bc2a0,0x3bfdb37f,0x3c0de3b7,0x3c1bc40c,0x3c141803, -0x3c14e1dc,0x3c158e51,0x3c1ccc65,0x3c13042d,0x3c0fb8f6,0x3c01c10f,0x3c1537ec,0x3c18b4e2,0x3c27af6f,0x3c2d627f,0x3c25f2ef,0x3c09f415,0x3c0a3459,0x3bff380f,0x3c5f197d,0x3c0e6a1f,0x3bfe6ca2,0x3b9048dd,0x3c2fba9a,0x3c59d4aa,0x3bbdde1d,0x3bdb3afb,0x3c40c0f6,0x3bf4d5fe,0x3c3482d7, -0x3c09f9b9,0x3beadfd7,0x3b78abca,0x3c509c00,0x3c41b0a7,0x3c3166c1,0x3c40a59c,0x3c8274ad,0x3c2f8e6e,0x3c569280,0x3c4f2839,0x3c4c33ae,0x3c58ee57,0x3c8a0bd3,0x3c6e444f,0x3c5522d9,0x3c190390,0x3c57da41,0x3c6d1e8e,0x3c8964ce,0x3c9bf647,0x3c95f5fd,0x3c5c5a76,0x3c4cbf73,0x3bc1c1ad, -0x3c0e33b3,0x3c614e65,0x3c4fa6e9,0x3c07e036,0x3c29d683,0x3c33f673,0x3bdcfe01,0x3c23188e,0x3beaaf2f,0x3c3e77ba,0x3bf685f1,0x3b4018e5,0x3c31ee88,0x3c1c878d,0x3c4a605b,0x3c871793,0x3c3170bd,0x3c61d984,0x3c3315ef,0x3c56ae3a,0x3c7bdd17,0x3c755f67,0x3c695b19,0x3c687233,0x3ca02044, -0x3c7b72fb,0x3c551f04,0x3c0c0620,0x3c618f57,0x3c91a73a,0x3cb3d26c,0x3ccff760,0x3cb2ee4f,0x3c32bb7d,0x3c38cd0e,0x3b9d8228,0x3c06ccc7,0x3c64fcb5,0x3c2d754e,0x3a680b6d,0x3c14f67a,0x3c0d2d7f,0x3be61030,0x3be987e5,0x3bc2316b,0x39340b0f,0xbacc5896,0x3b6481c2,0x3b2b8ada,0x3c2aa687, -0x3c3d646c,0x3c7a0cf9,0x3c5baccc,0x3c59e0c0,0x3c37b3dd,0x3c656d01,0x3c7c6eff,0x3c9113b3,0x3c8e9e05,0x3cac63cb,0x3cf6699e,0x3cb16efb,0x3c8b1b69,0x3bd9edcc,0x3c8a2d65,0x3cc81196,0x3ce955f8,0x3d16f54d,0x3cf7f92a,0x3c839e42,0x3c706a74,0x3b600e0d,0x3b912068,0x3c9517ae,0x3c4f124f, -0x3b5a766c,0x3c056866,0x3c13f96d,0x3b5fa81f,0x3bfa7fd8,0x3b9f663c,0xbb9e287b,0xbb931d96,0xba9b9e9a,0x3b67d1df,0x3c16c135,0x3c580d23,0x3c82cec7,0x3bd9f56f,0x3c61cb95,0x3c346683,0x3c6d0892,0x3ca6891c,0x3ca478b5,0x3c921e0d,0x3ca7c7bd,0x3cdcdaa2,0x3c9f174d,0x3c601f32,0x3b9d70ac, -0x3c90a091,0x3cd9ba35,0x3d05fdc8,0x3d2c218a,0x3d08c422,0x3bfe57e0,0x3c3fb4a5,0x3c78e8b8,0x3c4975c5,0xbc5dbb36,0xbc4d3da0,0x3cb23928,0x3c06c5dc,0x3bfe3a3d,0x3b1b0334,0xbb0b188d,0xbba65e93,0xbb52a475,0x3acad7eb,0x3b1ec591,0x387cdab2,0x3be137eb,0x3c0e0ff9,0x3cb99023,0x3c2e2d10, -0x3c89eff3,0x3c8a798a,0x3c540588,0x3c00e811,0xbaa4efa3,0x3b48101e,0x3b1d4846,0x3ac2035a,0x3c063db2,0x3c12364e,0x3c92f99a,0xbc56d771,0xbc326a0d,0x3ca39804,0x3c72e383,0x3c967ad1,0x3c7a0f79,0x3ca9dc47,0xbbf5c42e,0x3b9b8ae2,0x3cc716f1,0x3c20fe3a,0xbbb02764,0xbbd8db21,0xbc3f23b4, -0xbbbbeaa2,0xbbbd790b,0xbb0f84eb,0xbb86912d,0xbae3a54c,0x39a62a27,0xb8816bc2,0x3b0a6f3f,0x3af2c94d,0x3abea09a,0x3c01b9f3,0x3c054d38,0x3c2598e1,0x3c787d32,0x3c969b78,0x3cad243a,0x3c41708b,0x3c0fe98c,0x3ad0aece,0x3c0e8c0c,0x3bda0ab4,0x3bd37aef,0x3c271b8c,0x3c2083ce,0xba57106b, -0x3c840c8e,0x3bf70bfa,0xbc700dd3,0xbb5e5b55,0x3c3ac5cb,0x3ade59c9,0xbba1d736,0xbb4897e0,0xbc1fe51a,0xbc03545f,0xbba84f29,0xbae37a69,0xbb745af8,0x3a0a75ba,0xbaa8ec75,0x3a8b2b94,0x3a6f15a9,0xba85367c,0x3be27911,0x3b00242e,0xbb818a7d,0x3c1f726c,0x3c585116,0x3bad6930,0x3af863d2, -0x3a961d83,0x3b263680,0x3bc2966a,0x3bed137e,0x3c3c8565,0x3c65a56b,0x3c0f666b,0xbc35a683,0xbbf2ea55,0x3b7217bc,0x3c82c289,0x3d1c7bda,0x3d246abd,0x3cf0cd12,0x3caffd30,0x3af36d29,0xbb5587c8,0xbc27e206,0xbb5e444c,0xba87c426,0xba8a1b9b,0x3ac22f0d,0xbb8b0a49,0xbb060373,0xbab49525, -0xba76456a,0xb94c32f1,0x3919d123,0xbab26302,0x3acfc907,0x3aaa0ac4,0xbb41fb72,0x3babccac,0x3c15b6dc,0x3bbf2837,0xbb12d395,0xbb00566d,0xbb549c1d,0x3b9591c4,0x3c34dcdc,0x3c7b14f9,0x3cb2ae33,0x3c9f941b,0x3be4f421,0x3bb92939,0x3c19ff46,0x3c4df05e,0x3d1e3cf8,0x3d38f1ef,0x3d316a14, -0x3c7715fb,0xbc4fca44,0xbb81f44e,0x3cab2340,0x3c899c63,0x3c90dcb3,0x3be9a8c8,0xbb021530,0xbada738a,0xba11dd92,0xbae5867b,0xbb26a70e,0xb9b0d7a5,0x3a34e3f1,0xbb7b8d04,0xbb09d987,0xbb13075c,0xbb616198,0x3bb7f0a2,0x3bcedb93,0x3b1acbf0,0x3a647d38,0x3b7478bb,0x3c011495,0x3beff378, -0x3bc494cd,0xb8eb178d,0x3b508cb8,0x3b6bfdd3,0x3be69564,0x3b95e42d,0x3b60d1aa,0xbc210e8a,0x3cc9dd99,0x3cfa13f2,0x3c880ac9,0xbb6a28f3,0x3dc52f44,0x3da20baf,0x3d0d2bcf,0x3d4ba766,0x3cbda77a,0x3cf7ceb6,0x3cf169a1,0x3ca50b26,0x3c522ea5,0x3c0fff06,0x3b61c647,0x38321b80,0x3afb74ac, -0x3bb5e4e6,0x3b8e63e0,0x3b1ec781,0xbb4d7375,0x3a9dea31,0x3b023e3d,0xbaff65c5,0xbb0a62f7,0xbbbb302f,0xbb818190,0xbb13fa7b,0x3be6c148,0x3caa8c0f,0x3c82c3c3,0x3c6550d9,0x3cca163a,0x3c1bfaec,0x3badcde5,0xbb1e9586,0x3bd6c546,0x3ccf7495,0x3d6b3e5e,0x3d9d353c,0x3d377883,0x3d1840d9, -0x3cd34eaf,0x3cbd9d1f,0x3cbafb78,0x3c9f6e8d,0x3c910bc6,0x3c63ee16,0x3c70f7da,0x3c7b40d1,0x3c3b9955,0x3c5f64b3,0x3c117332,0x3b112ead,0x3a5ce5a5,0x3ae17fdb,0x3b5ae0a7,0x3ba44606,0x3b0bd55e,0xbb59e06f,0xbb90694d,0xbbb4c137,0xbc080854,0xbbb0f5ad,0xbc05464d,0xbc57aaf0,0xbcb3fb64, -0xbcc6ecc7,0xbca5b736,0xbc49e028,0x3bb3741c,0x3cdafe9d,0x3d234cf2,0x3d3f8fce,0x3d4749f9,0x3d35216b,0x3d1393de,0x3cae9921,0x3cd452a2,0x3ca8a087,0x3c981360,0x3c88bd25,0x3c703aca,0x3c38044c,0x3c3d2bd1,0x3c27f8dd,0x3c20a3f9,0x3c03d126,0x3c02d34b,0x3bdb3c98,0x3bd9d888,0x3bbff760, -0x3c04db00,0x3c1f6737,0x3c1aa34f,0x3bf8f0d8,0x3b52b41a,0x3b4aa81a,0x3ac5d5de,0x3b05cf54,0x3b7f4997,0x3af1c43b,0x3bd5e56a,0x3c18bd33,0x3c7c9ddc,0x3ca1552d,0x3ce83431,0x3d24dded,0x3d29512d,0x3d29470a,0x3d23cc69,0x3d14d4eb,0x3cada449,0x3cc291dc,0x3c849587,0x3c9091ad,0x3c6b27f1, -0x3c3905c7,0x3c28c47e,0x3c1e92e9,0x3c1a5599,0x3c1c66db,0x3c371772,0x3c635f5d,0x3c1d7a67,0x3c5cd2d0,0x3c2014d2,0x3c3ef437,0x3c289129,0x3c1d7611,0x3c6493ac,0x3c52036e,0x3c037bc2,0x3c1b394a,0x3c070b97,0x3c3bab3a,0x3c64b2a7,0x3c87eb0b,0x3cbbbe6d,0x3cf7736e,0x3d150ea5,0x3d1673f0, -0x3d1cd2a1,0x3d1f7520,0x3d053975,0x3ced5cbd,0x3cdd351d,0x3cc56a83,0x3cadce01,0x3ca2cbd4,0x3c441b49,0x3c912861,0x3c9c522d,0x3c9e02af,0x3cb869b3,0x3c7b7b87,0x3c9dad1b,0x3c8ed779,0x3c8567c7,0x3c8522dc,0x3c8b589e,0x3c7f82d7,0x3c9381d9,0x3c87b8a6,0x3c5b1ca8,0x3c70805a,0x3c18e2cc, -0x3bbd7f22,0x3be9803d,0x3c382015,0x3c4a90f3,0x3c6650e6,0x3c6a177f,0x3c577571,0x3c6a2761,0x3c386299,0x3c5b6d23,0x3c91fbfa,0x3ca28eb4,0x3cdc38fc,0x3cddbaf5,0x3ccdf95d,0x3cc664be,0x3cc5c87f,0x3c82c358,0x3c8e8728,0x3c9f37cc,0x3c5ae39b,0x3b58dece,0x3c9a419c,0x3c79e70e,0x3ba0d015, -0x3b737101,0x3b86a98e,0x3b886469,0x3b74c274,0x3b3a9926,0x3b40e89c,0x3c885084,0x3c99fa4a,0x3b7a4de9,0x3c75a780,0x3c945905,0x3c634d21,0x3c73ebbe,0x3c7491e5,0x3c775e14,0x3c7fc451,0x3c83089a,0x3c877941,0x3c9b7aa5,0x3ca291a4,0x3cadd409,0x3cb13de1,0x3ca54622,0x3ca78ef5,0x3c97b3e9, -0x3c8ed17e,0x3c8c4602,0x3c887dde,0x3cd28a44,0xbc55717e,0xbc16acf9,0xbc4e2581,0xbc5ca77e,0xba0bea9e,0x3c75f7a7,0xbc46b66c,0xbb2cbcae,0x3c55d53e,0x3c752680,0x3c879332,0x3c7aa28e,0x3c82a16b,0x3c9e147d,0x3c81a05d,0xbb2146a5,0xbc36ac31,0x3c9d6f84,0x3ade104d,0xbc15a09f,0xbc2af236, -0xbc17a517,0xbc2de0ed,0xbc2ddf62,0xbc3585ad,0xbc306007,0xbc1c5d69,0xbc28da34,0xbc30b7a8,0xbc3907a3,0xbc40edd0,0xbc3acb70,0xbc38fa13,0xbc38f0c7,0xbc33f164,0xbc1aa349,0xbc25547b,0xbc2a943e,0xbc94ff8f,0x3bdf772d,0xbb9e4110,0x3ae397a6,0xbb7c3cb9,0xbbad146d,0x3a092e7e,0xbb323ae9, -0xbb5e29a5,0xb9d8f5f3,0xbbb8ebe0,0xbbe104bc,0xba962959,0x3c1a9470,0xbba4734b,0x3b03aaf3,0xbb103347,0x3a2886f8,0xbc68626a,0xbc3822e4,0xbc5e3db3,0xbc7550d9,0xbc759fab,0xbc719339,0xbc66e9b6,0xbc800441,0xbc903dd0,0xbc9f1601,0xbca53313,0xbc9988b6,0xbc914e64,0xbc9064f7,0xbc7cb397, -0xbc18e0f4,0xbc313728,0xbc4411bf,0xbc873832,0xbba8386d,0xbc26f8d3,0xbb4631f4,0xbb6fa158,0x39341ed5,0xbbc48e32,0xb9072348,0xbb9b5c36,0xbb9f9267,0xbc3acbe9,0xb9cf3f2d,0xbc056a0e,0xba821b5e,0xbb1c4fa9,0x39374d84,0x3b35bebb,0xbae5a148,0xbbe4fcf4,0xbc6afe11,0xbc830c41,0xbca027cf, -0xbca02ae3,0xbc93b036,0xbc5db66c,0xbc91aa7f,0xbca81169,0xbccf5b27,0xbcd3464b,0xbcd27707,0xbcb50514,0xbcb26826,0xbc927d8a,0xbc06c2b9,0xbc534705,0xbc415576,0xbc901d4e,0xbaf8852b,0xbb70b80e,0xbb953321,0x3b3fe20c,0x3b99e50d,0xbb8bf47a,0x3b72a4b6,0x3b0f426d,0x39dfe213,0xbb2f17d2, -0xbba7c02c,0xbaffcd4a,0x3b2bd08c,0x3b9117d8,0x3bcbc674,0x3b342566,0x398dada5,0xbba9f8ed,0xbc702527,0xbc84eb20,0xbcbc06e5,0xbccb22a9,0xbcd60572,0xbc9040a7,0xbcc1bc92,0xbce4c976,0xbd14cbc9,0xbd104b58,0xbd0c71c3,0xbcf26c45,0xbce1fe90,0xbca40052,0xbb308249,0xbc0d3f34,0xbc676b08, -0xbc9956b7,0xbb1e6456,0xbb29369b,0xbbcf82d7,0xb9dd28fd,0x3b93bfb5,0x3b0d63ed,0x3bd3e8bb,0x3b137803,0xbb818fd4,0xbb6efa32,0xbae50320,0x3a802c33,0x3bb4041c,0x3bfaf48f,0x3c2b3088,0x3b9c619b,0x3b8caedb,0xbbea5245,0xbc71b55e,0xbcb6f2f8,0xbced7333,0xbce9172b,0xbcca03d2,0xbc727cd4, -0xbcbac415,0xbcfdb470,0xbd185244,0xbd278cdc,0xbd1e9cf8,0xbcf4df6f,0xbcf8f56d,0xbca9551b,0xbb9ecd73,0xbc4287d9,0xbcb19aff,0xbcf065fc,0xbd1f614d,0xbccf29cb,0x3c48846b,0x3be9edd3,0x39d93d86,0xba7a9419,0xbb9ff1e8,0xbbb10d67,0xbb762c32,0xba59d2ad,0x3ad1bfb5,0xba4b9d2b,0x3b4f8668, -0x3b84dc48,0x3c6a98be,0x3b5bd9e7,0xbb4a5a5d,0xbc569316,0xbc53c5ca,0xbbd4083d,0xbaee1de3,0xbb37dca3,0xbbd50785,0x3b3822d2,0xbb52a8e0,0xbb7789b7,0xbb06fee2,0xbd13e859,0xbd4315b6,0xbd2bae14,0xbd18598f,0xbcf51ac7,0xbcbee40c,0xbcd43448,0xbc3e343a,0xbc3c933f,0x3be6fe21,0xbbc5ad1d, -0xbc4873db,0xbc8f2ea2,0xbc2313a1,0xbbef7abe,0xbbc5c7b1,0xbb6ee567,0xbbb35d16,0xbaac0d4f,0x3a73fab0,0xb976e7f9,0xba816af4,0xbb20700c,0xbba79be9,0x3b183f58,0x3c21c65f,0xba1f921a,0xbc93d04b,0xbccf7be9,0xbd17f2c7,0xbccf1d81,0xbc88f8f9,0xbbb7119b,0xbbba2a4a,0xbbf3834a,0xbc6b395b, -0xbc6f7997,0xbc6faee8,0xbc72644b,0xbc63171f,0xbc8b015b,0xbcbef698,0xbc856211,0x3ba478bf,0xbba7ff4b,0xbc4fd3fe,0xbbde637a,0xbc7131f8,0xbc2db0fe,0xbbe8f9f5,0xbbd9d32a,0xbbb55591,0xbb111afd,0xba04e3de,0xba8ee2d7,0xbae02999,0x3ab2054d,0xbadde030,0xbb4c42ce,0xbbffc929,0xb97c895b, -0xbae689ac,0xbc269da9,0xbc29d766,0xbc74bd20,0xbc813069,0xbcd444e3,0xbcfab24e,0xbd067b7c,0xbce56a18,0xbcbb51cb,0xbcb86c27,0xbceced24,0xbd287e16,0xbd657921,0xbd365644,0xbd1b41da,0xbce57f9c,0x38c66fe7,0xbcf1b067,0xbc2d7b7c,0xbb260200,0xbc48200f,0xbb98e4e7,0xbbde799f,0xbb9ba5be, -0xbc188dba,0xbbc35bc7,0xbb33708e,0xbb43e776,0xbad9e28c,0xbac155c3,0xbab895d3,0xb93c9b8a,0xbbbd17bf,0xbbf07454,0xb9b74bed,0x39b831ba,0xbbf3e57a,0xbc1a08fd,0xbc69b5c4,0xbc5ad629,0xbccf2edf,0xbcf53854,0xbd077780,0xbd0dc80c,0xbcf86ecd,0xbcd5a87d,0xbd03b7ae,0xbd24e576,0xbd67e454, -0xbd7ac58e,0xbd86e40c,0xbd8d5476,0xbd2bc2b3,0xbdb01567,0xbcd805d1,0xbbc44c65,0x3b8f6501,0x3ba0c039,0xbbaeadcb,0xbc0a8285,0xbbe3d985,0xbb98dae4,0xbb7eb4a9,0xbba58765,0xbae58352,0x35c4c309,0xbb8f7aa1,0xbb947638,0xbb93c858,0xbb94208d,0xbb2b0eca,0x3a0a0ddb,0x3ad4c600,0xbc41e5d4, -0xbc97a570,0xbcac6bc1,0xbca647e9,0xbc729841,0xbc31b180,0xbc5f167f,0xbc901182,0xbc9d6d1e,0xbc9c5ee1,0xbcce8ab4,0xbcc4de41,0xbd580857,0xbd93bd5d,0xbdd3ce21,0xbdcf6674,0xbb7f3ab7,0x3d270e0f,0x3d7549f5,0x3d094986,0x3cdccf09,0x3cf855ac,0x3cd93579,0x3c4eb80f,0x3bf1a34e,0x3b6bcddb, -0x3ac5e3f1,0xbafda90a,0xb9c8d39a,0xb9c85405,0x3a8acff9,0xb98cd57e,0xbbadc332,0xbb876233,0xbbbe8700,0xbbe80aa4,0xbbff0853,0xbb5e7ab7,0xbaf94a73,0xbb4fe1d8,0xbc016da5,0xbca69759,0xbcfc335a,0xbd1621fc,0xbd25ae43,0xbd1cfaeb,0xbd263ffc,0xbd6a498b,0xbd979c53,0xbd87b916,0xbd1dd8db, -0xbc82a632,0x3aa4b3be,0x3b8633f8,0x3ca87e65,0x3c9bdd34,0x3c7dff1d,0x3c9219dc,0x3c720592,0x3c2f1834,0x3c3c59a0,0x3c1d3fed,0x3c2fadbe,0x3c108c40,0x3bbd23e7,0x3a1bca6a,0xbb434abb,0xbb835664,0xbb74464c,0x3a269d08,0x3b4e7c2d,0xbb3bc86b,0xbc2e22b4,0xbc8e45b1,0xbcb60146,0xbcd5e3d9, -0xbcf38e9c,0xbcfa1ab2,0xbd06a635,0xbcfca0f9,0xbcb33d7b,0xbccc67a9,0xbcbb2b95,0xbccdfc2f,0xbb2e6134,0x3b8c8df1,0x3badc89a,0x3a306a15,0x3c462326,0x3cb3d73b,0x3c546fd1,0x3c4806b0,0x3c0b9977,0x3bebd2e4,0x3c151188,0x3c06c3c2,0x3c07cb6a,0x3c1ad9f6,0x3c194d1a,0x3c1cb67a,0x3c0e6a8b, -0x3bf3bdca,0x3b85728e,0x3b855e22,0x3b86a6e8,0x3b182369,0x390dba27,0xb9db7f86,0xbc0d6a3a,0xbc02358f,0xbc141b5b,0xbc1d5db1,0xbc0dcb86,0xbc085e49,0xbbfeeb22,0xbbe2aabb,0xbaf14de8,0xba4dcf2f,0x3b726899,0x3ba5dcd6,0x3c6ffd64,0x3caafe58,0x3cb76292,0x3cc181b3,0x3c6548a5,0x3c15d714, -0x3c6c1416,0x3c36c13c,0x3c461cd0,0x3c3da90c,0x3c111879,0x3bcedda7,0x3bdab796,0x3bc36e56,0x3ba38180,0x3b5f5d6f,0x3c087275,0x3bb6471e,0x3c2ee791,0x3be09ecd,0x3bc65167,0x3b6b8732,0x3bb12693,0xbb3d930c,0x3a54c191,0x3b03e262,0x3b46958f,0x3be3e402,0x3c2ef4f5,0x3c656e0e,0x3c68a1af, -0x3c7c6e73,0x3c55c3d6,0x3c6bec48,0x3c8e00a8,0x3c9e20cd,0x3c8c88c9,0x3c70f604,0x3c82bfe4,0x3c59507f,0x3c6d7a64,0x3c7649dc,0x3ca18f46,0x3c660515,0x3c443cad,0x3c6a9dd8,0x3c45a7b6,0x3c95b609,0x3c677e40,0x3c69e375,0x3c6c5857,0x3c57034f,0x3c171c2e,0x3c21c6b7,0x3b99ec08,0x3ba1bd89, -0x3c1eb76a,0x3b9163a3,0x3c0aa41d,0x3c0a1723,0x3c383250,0x3c3d73ba,0x3c538ec7,0x3c5c555d,0x3c51ce83,0x3c3e7c1f,0x3c46bfb0,0x3c1b10ca,0x3c21f506,0x3c1cec50,0x3ba50a1a,0x3b847396,0x3bf7ec6d,0x3c133899,0x3c387643,0x3c56129e,0x3c068661,0x3bf1f67d,0x3bdfd34a,0x3c52b98a,0x3ca05470, -0x3bca38b3,0x3c1ba26a,0x3c8edeff,0x3c9670a1,0x3c978bba,0x3c97fa8e,0x3c9f7e53,0x3cafbee8,0x3cb4cb31,0x3c1188a2,0x3b8efecd,0x3c9e5cce,0x3c1a5c84,0x3b8f4eaa,0x3bdc198f,0x3bd5c3fe,0x3bed6c1c,0x3c0085c5,0x3c0e8eae,0x3c1c42e2,0x3c26d4f5,0x3c34692a,0x3c24e445,0x3c258688,0x3c24d5c6, -0x3c2324cf,0x3c28e71d,0x3c1bc923,0x3c08b714,0x3c06fbae,0x3c05c991,0x3c59be74,0x3c87442a,0x3c3802ae,0x3c88530f,0x3c2e0b7b,0xbba603a7,0xbc8834de,0x3c35b0b8,0xbaf25eb6,0xbc8be813,0xbc9551d4,0xbc9f1782,0xbc8c956c,0xbc95bd0d,0xbcb6a225,0xbc942bdd,0xbb17d501,0x3c19cce2,0xbc95d25c, -0xbba8957c,0x3bffb23e,0x3c852226,0x3c549ffb,0x3c66a5e0,0x3c63058d,0x3c678620,0x3c648ca1,0x3c6183e0,0x3c544d97,0x3c5222b9,0x3c4dd2d0,0x3c573f35,0x3c54fad6,0x3c5f298e,0x3c60f56c,0x3c55c3a4,0x3c327c23,0x3c42d7ae,0x3c3ee836,0x3c817612,0xbc6f06a6,0x3bd215a5,0xbb934f05,0x3bbc623b, -0x3ba7a44d,0xba0ab740,0x3bd8ca38,0x3b64b90d,0x3a99cf2a,0x3b280c5e,0x3bd81780,0x38c02ace,0xbc2f69a8,0x3c0a1cbe,0x3b1139d0,0x3be8053e,0xba8f2d6d,0x3c912749,0x3c8ec66c,0x3c943d18,0x3c9d1a21,0x3c93de3d,0x3c950717,0x3cac4549,0x3c8fd381,0x3c889830,0x3c855cea,0x3c9a445b,0x3ca05817, -0x3cab4117,0x3cb18f26,0x3ca083b9,0x3c47ac1d,0x3c4ca24a,0x3c35cdd3,0x3c2e8d4a,0x363689a5,0x3c48a722,0x3b06cbb2,0x3b9ac48a,0xb9578f3d,0x3c076532,0x3aa245ed,0x3c3325b1,0x3adb21d6,0x3c64d495,0xbab8e511,0x3be1fb4b,0x3b778f72,0x3c1fd298,0x3c418711,0x3bbaa379,0x3be33ea9,0x3c566985, -0x3cc29495,0x3cab70b1,0x3cc7383d,0x3cb53e7a,0x3cb03ede,0x3cbda89d,0x3c9014f5,0x3c81a68d,0x3c8a1f79,0x3c950ca7,0x3cac02d5,0x3cb8b7e6,0x3cc47b19,0x3c9985c7,0x3bc4e6b9,0x3c23cc3a,0x3beb0a08,0x3b6d237b,0xbbca6d26,0x3b5566e0,0x3a98c1e3,0x3b83ca22,0x3b3c1d0f,0x3baecc9a,0x3b9cc143, -0x3bb3bf61,0x3afb2908,0x3b041592,0x39ec45bb,0x3bbb27e5,0x3b93d0d7,0x3c27f72c,0x3c6057f0,0x3c42cf95,0x3be9b138,0x3c1ad283,0x3cd8c7aa,0x3cb642ab,0x3ce6f0c6,0x3cd90c04,0x3ce837a4,0x3cff2d14,0x3cae9988,0x3c9542b5,0x3c92effb,0x3cc5d885,0x3cef6680,0x3cfedfa5,0x3d0a4722,0x3cce6575, -0x3ba4ac26,0x3bd468f0,0x3b8a93a1,0x3bae5cac,0xb922e9c4,0x3bf09626,0x3b97abf3,0x3b8054a6,0x3ba6d993,0x3b08a04d,0x3bb956af,0x3b95e2d4,0x39cab8c9,0xbb446ba9,0x394d41c2,0x3b39e4f7,0x3c21eb7b,0x3c517308,0x3c602a5a,0x3c845036,0x3aafa809,0x3c826349,0x3ce13ebe,0x3ce637c1,0x3d08b970, -0x3cec0ee3,0x3ced1d4e,0x3ceb68d6,0x3c9f4ee8,0x3c76f1a3,0x3c8cc4c8,0x3cb26e7a,0x3cdd16bb,0x3cd49825,0x3d026849,0x3c9c75a9,0xbb481f1f,0x3b5cf1df,0x3cb3db95,0x3ccbd565,0xbcb33581,0xbcb61359,0x3c58163b,0x3b9af8b5,0x3c2288d2,0xb93379e1,0x3ac965ee,0xba932567,0xbb26af9e,0x3b08cad5, -0x3b23b28c,0xba481992,0x3b96c0ab,0x3c1af6da,0x3c5da0e0,0x3c869d9e,0x3c3f9bdf,0x3c87c837,0x3ce757f9,0x3ca0031c,0x3c86bd92,0x3c234e55,0x3c380e71,0x3c447afe,0x3cb817c0,0x3cdbb482,0x3d329e5f,0x3c67ff8b,0x3c9293f2,0x3d172ee1,0x3d271943,0x3d2a616e,0x3cd776a3,0x3cf838e9,0x3c55096e, -0x3c1b38f6,0x3a520925,0x3c8be0b6,0xbc2644d4,0xbb65af48,0xbc1df12f,0xbb58b8aa,0xbb5ead7a,0xbb07a507,0xbb1be09f,0xba6e9a75,0x3a75b558,0x3b306633,0x3b9cd3ad,0x3be0b793,0x3b07b8bb,0x3bd57ae8,0xbafc61bf,0x3bc613cf,0x3cbe8060,0x3cb139e1,0x3cff6670,0x3c8bd8a4,0x3c483378,0x3bce3d53, -0xbb0de683,0xbb8bd05e,0x366a9832,0xbb160c82,0xbb842cc0,0xbc092aff,0xbb3b5189,0xbc0a700c,0xbca785d2,0x39a80fc8,0x3c91a6bd,0x3c5f8d46,0x3b8b5068,0xba82639b,0xbbd7e94d,0xbbdfdab0,0xbb9bc689,0xbb8914a7,0xbb74f8e7,0x3aa42b2a,0x39f8abc5,0x3ad73398,0x3ab37059,0x3ac722be,0x3ba9ba31, -0x39ea46e4,0xbb191a11,0x3ba83570,0x3bd97237,0x3c693874,0x3c2630ca,0x3bbbf274,0x3c29e23b,0x3c7023ac,0x3ca0b910,0x3cc84b43,0x3ca71eac,0x3c73cb24,0x3bf71a11,0x3bd6ff8e,0x3c8101d0,0x3cab01b7,0x3d17761b,0x3d1a8cd0,0x3cd5e343,0x3ca104ea,0xbc0925d4,0xbc1df03b,0xbc913916,0xbc1594b8, -0xbc4bf467,0xbc00d895,0xbbc12aa5,0xbc1167d1,0xbb94b35a,0xbb04dfcf,0xba311663,0x3a9c4779,0x3a11493a,0x39f72a03,0x3ab90284,0x3a46858e,0x3913baf8,0x3b6c7a0c,0x3b2174cb,0x3bcd16bd,0x3bef8a09,0x3b8ba276,0x3bcf9cf4,0x3c67aa47,0x3cacdd09,0x3cf8b6da,0x3cddb8b2,0x3ca6e90e,0x3c6e1317, -0x3c2df3fb,0x3ca868a3,0x3d16bd57,0x3d3463c5,0x3d3ea50e,0x3d389de0,0x3b647c01,0xbcf352f5,0xbd097ea7,0xbc3ff94f,0xbb9a13b1,0xbb12cfb3,0xbb1eba2b,0xbc006c91,0xbc04af4e,0xbb5aeb4b,0xbb616de0,0xbb2bb5c3,0x3a5b3752,0x3a97c8dd,0x3a13b3c8,0xba0061b1,0xbb1bd709,0xbb7a71a4,0x3a3721c8, -0xba006fc1,0x3c5b9a1f,0x3c2665ea,0x3c48ebbb,0x3c4ee6e5,0x3bf6a264,0x3b599487,0x3aadccaf,0x3a2ff712,0xb990832c,0x3a165029,0xbbd45706,0xbbc36689,0x3b8d4230,0x3c58e874,0x3c8eb3a6,0x3d09e126,0xbc91e4a5,0x3da01091,0x3d5eb13e,0x3cb8b3a1,0x3d45bb07,0x3cc4cca1,0x3d05b620,0x3cf3b2c8, -0x3c83a20e,0x3c12be3b,0x3bdc2cbf,0x3bb089f0,0x3a3a5ae8,0xb9781ff6,0x395b9bc8,0x3a560b80,0x3b053882,0xba937b11,0x3b9af24a,0x3b864232,0xbafb45c8,0x3a47955e,0xbbba6427,0x3a686aa2,0x3b58a1dc,0x3b659260,0x3b6ad3aa,0x39951e2b,0x3b40e837,0x3c2e3f6a,0x3c107894,0x3c575c85,0x3c95f5f4, -0x3bc70301,0x3c1200fc,0x3ce3f348,0x3d4f459c,0x3d283332,0x3d02fe2a,0x3c8fb6e9,0x3ca1f6f2,0x3c9e0001,0x3c91e99a,0x3c8e6244,0x3c5e81d5,0x3c8600fa,0x3c5ef547,0x3c747f57,0x3c4c12d2,0x3c1b702b,0x3bc90978,0x3afbc7ff,0x3a8020c6,0x3a1ec382,0x3afeb858,0xbab53d7a,0xba3edb12,0xbaeec9d1, -0xbb33679e,0xbbc5689c,0xbbf9be40,0xbc2e02a0,0xbc0a9fd7,0xbc32b62f,0xbc5f4796,0xbc86c88b,0xbc8ade06,0xbc15c97f,0x3bde6d0c,0x3cb7fd00,0x3d0486a1,0x3d1c9fc4,0x3d184e86,0x3d3a4a8a,0x3c96f5a1,0x3cd14143,0x3cabb22c,0x3c8a252d,0x3cae34e2,0x3c7eb2b2,0x3c6fb2a9,0x3c56e6fb,0x3c5ed60c, -0x3c297ce5,0x3c22fbaf,0x3c044996,0x3c272aa6,0x3c05555e,0x3bb25249,0x3b6d22f6,0x3b21eb8c,0x3b2240b6,0xbb7388ab,0x39add6c0,0xbad9004a,0xbaaefbf2,0xba6a3632,0x3a28e7ec,0x3acabb5e,0x3b29b4f7,0x3b558294,0x3bab20da,0x3c4586fa,0x3cbb3e51,0x3d12f127,0x3d20bd95,0x3d28bdfe,0x3d39a571, -0x3d2009e5,0x3cf5db92,0x3cf7271f,0x3c65a7bd,0x3ca12fdc,0x3c516bde,0x3c1dc8e1,0x3c3bf221,0x3c6ff320,0x3c3a5440,0x3c505dd0,0x3c04d91a,0x3c944e4c,0x3c331143,0x3c783232,0x3bfdc011,0x3c488413,0x3c2839fa,0x3c0b2df0,0x3b0b364c,0x3c05db01,0x3c02b595,0x3bd0cd48,0x3bbeee1a,0x3beae464, -0x3c128408,0x3c2531b2,0x3c816a16,0x3caf2048,0x3ccc28e6,0x3d02531d,0x3d1de6b2,0x3d378354,0x3d2b18d5,0x3d240501,0x3d2565ca,0x3d0758b2,0x3ce4bccd,0x3ced7efa,0x3c667ec9,0x3cd6aa10,0x3ccc0df4,0x3cc6e465,0x3cde33a2,0x3c898a02,0x3cc26249,0x3c90bc03,0x3c827bec,0x3c5be5b7,0x3c894a08, -0x3c600af5,0x3c82e00b,0x3c6a5fa0,0x3c1824e9,0x3c8bfe18,0x3c0bb7c6,0x3c7b9b8e,0x3c639dac,0x3c8d4e09,0x3c94764e,0x3c9db1f2,0x3c9d8b87,0x3c9622e3,0x3cae63a0,0x3cace7ba,0x3cc18023,0x3cdc8e9c,0x3cd2959b,0x3cfa89ef,0x3cfbe7fb,0x3cd99c75,0x3cdfda46,0x3cf6947a,0x3cb0352c,0x3cc13ae5, -0x3c98bc7d,0x3c082674,0x3aabf1dd,0x3c9446a4,0x3c332b0b,0x3aa7be45,0xba8002dd,0x395832a6,0x3aa5c021,0x391a3be1,0xbb113999,0xbb2c06d1,0x3c41ccef,0x3ca02a63,0x3a906730,0x3c20a9df,0x3c8b8769,0x3c9931eb,0x3c9775e9,0x3c9970b7,0x3c98b8a0,0x3c9bb42c,0x3c9d9793,0x3c9e7203,0x3caec822, -0x3cb41273,0x3cc12754,0x3ccaa148,0x3ccaa3b9,0x3cd769cb,0x3ccd627f,0x3cc25d90,0x3cc2370e,0x3cba5912,0x3d009551,0xbc0274dc,0xbbdeb1a8,0xbc5b3c63,0xbaa00f99,0x3c5f323c,0x3c98fdc6,0xbb28afdb,0x3c1f83ac,0x3ca98b22,0x3cb08e34,0x3cb49954,0x3c9e299b,0x3ca24885,0x3cbedbbc,0x3c9e9245, -0x3c335fd4,0x39f75939,0x3ca936e0,0x3c67678f,0x3b1307b1,0xbc34a934,0xbbe7a917,0xbc0442df,0xbc0815e5,0xbc111713,0xbc0fd341,0xbc0048ac,0xbc0bcf84,0xbc0d21c5,0xbc0daab5,0xbc1090de,0xbc0b5f8c,0xbc0bb4f8,0xbc001778,0xbbf737b7,0xbbdf5380,0xbbee42c8,0xbc25d98a,0xbc4840b5,0x3cac1076, -0xb83338e7,0x3c392160,0x3af73954,0x3b3a9b25,0x3bc7a31c,0xbaa917e6,0x3bb3b257,0x3bf40f78,0x3ba86eeb,0xba927176,0x3bbca4f1,0x3c8baa51,0x3adf6027,0x3c22e9af,0x3b87839a,0x3c5b68f1,0xbbd0d17c,0xbc0e860a,0xbc0e6c22,0xbc3291fb,0xbc329b2c,0xbc325f54,0xbc228d97,0xbc56a162,0xbc726843, -0xbc7896dc,0xbc71cb06,0xbc5609f2,0xbc511bc7,0xbc1b965a,0xbbfee8e7,0xbbe4a845,0xbc063dd7,0xbc43f6dd,0xbc333d7a,0x3bdbaf94,0xbb9f4e7a,0x3c0a11e5,0x3ad45889,0x3bdad7c3,0xbb4f54f9,0x3bd3b1ed,0xbb8e97b9,0x3c149d27,0xbc11401e,0x3b90f845,0xba2983b7,0x3ba6ff12,0x3b0e6dc8,0x3bb1c847, -0x3c1958ee,0x3c12cce1,0xbabcebce,0xbc43d313,0xbc18cdbc,0xbc6fe64f,0xbc6cac4e,0xbc76d6a9,0xbc2f4eb7,0xbc864f1e,0xbc8f664d,0xbc940961,0xbc9059af,0xbc838ec8,0xbc6f889c,0xbc19c7bf,0xbbe4ff29,0xbbc89d43,0xbc06d5da,0xbc81f130,0xbc5e3998,0x3c189e34,0x3b9ac0ce,0x3ba65442,0x3b6f0e38, -0x3b62b3ed,0xba58d6c7,0x3b220c1b,0x3b1ac6e1,0x3b94d1d4,0xbae46a79,0x39ef1e31,0xbb4a35c9,0x3bd08bec,0x3b9cbff3,0x3c00c503,0x3c07484b,0x3c4405d2,0x3b8ec738,0xbc45706a,0xbc0ff238,0xbc85ac23,0xbc93351e,0xbc9e3372,0xbc317539,0xbcb15c50,0xbcce9556,0xbcead873,0xbcc97ea8,0xbcac4444, -0xbca68299,0xbc17a4d1,0xbb72a74d,0xbbd7e2dc,0xbc0e54e1,0xbc5e7590,0xbc73715c,0x3b3f960f,0xba57853a,0x3aac8f91,0xb9824a37,0x3ad99222,0x3ab4b7c7,0x3b8ee3f7,0x3b42617e,0xbb148183,0xbb18ca1d,0xbb392f57,0x3a33d73c,0x3b36e914,0x3bea4628,0x3c4eaa5a,0x3a4f5718,0x3c91b88a,0xba9e2a9a, -0xbc3f6b61,0xbc4d3b2a,0xbcaafbb3,0xbcabec92,0xbca93cda,0xbc5f8229,0xbcc81eb9,0xbcebf134,0xbcd9e9e3,0xbce02d5a,0xbcac0dbe,0xbc9656ec,0xbbfe5d22,0xbb5a0924,0xbbea563b,0xbc100f40,0xbcaf1f3b,0xbcbcafd8,0xbbb43a73,0xbb85ef5c,0x3c5f2863,0x3c5e89ad,0x3bd9304d,0x3ada548d,0xba7242c7, -0xbaf3c4be,0xbb12d3f9,0x3b0aaafd,0x3acc5438,0xba8547de,0x3b87794d,0x3b4b8d82,0x3c85c7f9,0x3bc1f228,0x3c365029,0xbb383340,0xbc717d90,0xbc3c2a04,0xbc6e2723,0xbbd8ff4d,0xbc11681d,0xbb4f4e7e,0xbc976e1c,0xbca7d6af,0xbc457475,0xbd0cfa5e,0xbd1b7dd2,0xbcddf6fc,0xbc7786cb,0xbc43e230, -0xbc59f5c3,0xbcaadbcd,0xbc7f3aa0,0xbb582626,0x3c8b41fa,0xbc2c3db6,0x3a0c23ec,0xbc4f4308,0xbbff0525,0xbb289eeb,0xbb96cd1d,0xbad32c01,0xbb319f0e,0xbb087340,0x397d0a67,0xb9378b65,0x3b0e22d2,0xba99642a,0x3a05c475,0x3acf6653,0x3c3b502b,0x3c174517,0xbc3a531e,0xbc4077db,0xbcd184ae, -0xbc83c08f,0xbc2657e5,0xba4e33bf,0xbbab7c72,0xbc0c91e9,0xbbe10607,0xbc406778,0xbc1f40e5,0xba31668b,0xbc5fa51f,0xbc9e2231,0xbcaada45,0xbc3b03ac,0x3ba5c970,0x3c1a47a4,0xbb3eaaef,0xbb2c2cfe,0xbc2db69f,0xbc10cad6,0xbba5e92c,0xbbe6e270,0xbb8c223b,0xbb021fbf,0x3905d08b,0xba930e0f, -0xb920bf07,0x3afaa530,0x3aac194f,0x3a2780a1,0xb90ed750,0x3b1e8233,0x3b5be827,0xbae72ce1,0xbbe6410e,0xbbe16125,0xbc05a9b3,0xbc868919,0xbca7c3a0,0xbc9d6dae,0xbccc4477,0xbcb628b8,0xbcaf4998,0xbce2f9e6,0xbd07a394,0xbcd64263,0xbc918281,0xbc55b8b0,0xbc575149,0x3a412a3c,0xbca34819, -0xbc7a51fc,0xbb918ffb,0xbc54dc61,0xbc72b483,0xbc02cae4,0xbbf3d72b,0xbc3be09d,0xbbedd904,0xbb84d9c7,0xbb1bd5f9,0xba6383e7,0xb96e9c12,0xb986b40e,0xb9accc52,0xba8100be,0xbac939de,0xbaa99706,0x3b80d07e,0x3baca519,0xbbfeabe4,0xbbc91ad8,0xbbb5f6b4,0xbc67d53c,0xbc943faf,0xbc9b61a2, -0xbcc2001f,0xbca64eec,0xbc9edcdd,0xbcd2d9bf,0xbd024d17,0xbcfa7200,0xbd069f1b,0xbcf666fd,0xbce49c4d,0xbccc7991,0xbd570f42,0xbd0ba64f,0xbcc66908,0xbc716e29,0xbbee5d9f,0xbc42a2c8,0xbc1e4a4b,0xbbb4adb7,0xbbc126b4,0xbb91ba0b,0xb9a2c776,0xba9cc993,0x3a812a75,0xbaeaeedb,0xb9517d0b, -0xba7c3a7d,0xbb48a433,0xbb852033,0x3ad5eba3,0x3b62b0c2,0xbbf4c2ab,0xbc42c0de,0xbc93b2bc,0xbc5e3062,0xbc1ad1b8,0xbbed98ac,0xbb87c2af,0xbb5a3216,0x3b2dc6c8,0xbb84fb8b,0xbc2e333b,0xbc88af5a,0xbd0fe7b5,0xbd3d9b25,0xbd5bcc52,0xbd571a87,0xbbcae52a,0x3d1ca853,0x3d80a4a2,0x3d1827e7, -0x3cfb6fa2,0x3d05d0ab,0x3cdf7d80,0x3be3af5b,0x3bf69951,0x3b0eec5b,0x3b2da2f3,0xbab2c553,0xba39a70e,0xbb6e8490,0x3a15db5d,0x39d02e71,0xbb87258e,0x3b8bebb4,0x3b8f92b8,0x3b4dc0d5,0xbb37b61e,0xba3f1f30,0xb9c3b0ae,0xbae7ee96,0xbc1a41f4,0xbca1d548,0xbc858481,0xbc959f57,0xbccd1b58, -0xbcd5cb40,0xbcd65c19,0xbd021874,0xbd389e12,0xbd3e550a,0xbd3f1326,0xbc708b6e,0x3c51d905,0x3c924107,0x3cf45a68,0x3ccde771,0x3cb3d041,0x3ca415c0,0x3c758012,0x3c8ebc1c,0x3c5962bd,0x3c6b017a,0x3c1f1579,0x3c2131fe,0x3bc9af20,0x3bdcd273,0x3b463fa6,0x3ae45cca,0xbaf8120a,0xbb36ebf2, -0xb8d3d726,0xbbcbc827,0xbc538785,0xbc893c91,0xbc9d1f73,0xbcaacfd9,0xbca6c41b,0xbc6f5ea3,0xbc863f96,0xbc95a041,0xbc943300,0xbccb10ca,0xbcf77916,0xbd2d3b85,0xbcd3882b,0xbc5523e5,0xba0a5b8c,0x3bd29d0c,0x3c7817d5,0x3d034ea6,0x3cdd56ad,0x3cc51a19,0x3ca55389,0x3c420a15,0x3c8c31d2, -0x3c771dfb,0x3c6f74e3,0x3c3f5638,0x3c407c0d,0x3c13d49d,0x3c2eb26c,0x3c0d4f26,0x3bd71b89,0x3b9fe8ff,0x3bbf83bd,0x3b1f9319,0xbb1ca7d5,0xba96ffee,0xbc3cd27c,0xbc1fcf08,0xbc295a2a,0xbc348a84,0xbc316f42,0xbc1586bc,0xbc407059,0xbc4b50d2,0xbc604de6,0xbc24338a,0xbba4c211,0xbb8a884b, -0x3bc71c83,0x3c6a0457,0x3ca93705,0x3cc1bce8,0x3c8b140a,0x3c61c5c0,0x3cc57fc7,0x3c916ee6,0x3cb501c2,0x3cb5cd6e,0x3c950122,0x3c508d46,0x3c5e2504,0x3c366bea,0x3c675ecf,0x3bf7626a,0x3c3b9269,0x3bfd8e2e,0x3c5436ee,0x3c00e52f,0x3be4b6d8,0x3ba8beaf,0x3c0a6bad,0xbaa409af,0xbad02614, -0x39f4d6c2,0xba6544d1,0x3ad4db3c,0x3b2386a6,0x3b55368e,0x3b18f0ac,0x3b2700e1,0x3a988e03,0x3bfe2cef,0x3c721a88,0x3cab22ef,0x3cb29e96,0x3cb1dfcd,0x3cbaed3e,0x3c9fec9e,0x3c989123,0x3c9e5c9e,0x3d0339a1,0x3ca36892,0x3c9c3204,0x3ca99314,0x3c8cb682,0x3cc297bd,0x3c947da0,0x3cb0ff3e, -0x3cb038e6,0x3cb14a31,0x3c890440,0x3c97622c,0x3c74de90,0x3c6d5a6c,0x3c96092b,0x3c271d6a,0x3c89b006,0x3c0349ec,0x3c2e6ece,0x3c3a10c3,0x3c546c97,0x3c5ca587,0x3c5ed158,0x3c636e20,0x3c6a754a,0x3c58f9d8,0x3c4c7744,0x3c318153,0x3ba4b941,0x3b59360e,0x3bd905f7,0x3be14319,0x3c3541ae, -0x3c78c509,0x3c29972e,0x3c138e70,0x3c7af78e,0x3cba8c6a,0x3ccb1dab,0x3c69c293,0x3ca2d126,0x3cca8ac9,0x3cd2835f,0x3cc9cf9d,0x3cc121c2,0x3cc8efc6,0x3cd898da,0x3cda63df,0x3c948467,0x3c2e5a88,0x3cbbf8da,0x3c96c1d8,0x3c355d84,0x3bc6acc6,0x3befef42,0x3bf85fd8,0x3bfcad0f,0x3c072b4d, -0x3c0ea72d,0x3c11b86b,0x3c17b913,0x3c10dd81,0x3c1b84fe,0x3c2a389f,0x3c39b78e,0x3c4dfbb3,0x3c4e3df0,0x3c3a7bf2,0x3c3bc847,0x3c3461b1,0x3c92c474,0x3bec00eb,0x3bbe0fca,0x3c3cc768,0xbb1b6a6d,0xbc5512d8,0xbc2a4ca2,0xb913f9d9,0xbc2390e4,0xbc714da7,0xbc72cf65,0xbc6b6499,0xbc37c9a4, -0xbc47ca19,0xbc70a7d1,0xbc460939,0xbc31a245,0xbb364cdb,0xbc2cb5da,0xbc394f41,0xbb49e338,0x3c36c116,0x3be94b41,0x3bf17ff9,0x3bf12c6e,0x3bf7d31d,0x3bf1dc8e,0x3bea9c7b,0x3bd1e6e7,0x3bcba10c,0x3bc67b0b,0x3bce37b0,0x3bcd77ca,0x3bd65b80,0x3bcd4362,0x3bbd2a91,0x3ba6e35e,0x3bc24d71, -0x3bd76fca,0x3ba90e5c,0xbc9ea0f5,0x3b113648,0xbbad3dfb,0xba0fd1dd,0xbb67edc5,0xbb3c33ed,0x3b5d2368,0xbb78615a,0xbb102b67,0xbb9ef020,0x3a5d8fca,0xbb8d21e4,0xbc34f1ef,0x3a6849b7,0xbb6b13dc,0x3ad42ce1,0xbbf6e9a8,0x3bd70797,0x3c2c4052,0x3c12a925,0x3c213e98,0x3c109ac3,0x3c0b48bb, -0x3c199a8f,0x3bc51912,0x3ba56747,0x3bb5f698,0x3bf2f54f,0x3c0452d9,0x3c079571,0x3bf075eb,0x3be59995,0x3ba02f7e,0x3b8fbf68,0x3bfd0156,0x3b6b2869,0xbc1459c7,0x3b925863,0xb9a1a4d2,0xba909ca0,0xbbe18a80,0x3b9fab5f,0xbb97b07e,0x3beed61b,0xbbab7715,0x3c0ab6e2,0xbb468918,0xbab24ee6, -0xbabed4b8,0x3b5f5c4e,0x3b8191bf,0x3aed4d46,0x388b73be,0x3be27e29,0x3c77f1af,0x3c1e6489,0x3c4a9185,0x3c2d736e,0x3c283d93,0x3c25c9e7,0x3b8ca0df,0x3b414db2,0x3b737c0c,0x3bad02dd,0x3bdbb29f,0x3bdd134b,0x3ba55858,0x3b3bfd74,0xb9a8d3fa,0x3b30e439,0x3bccd2ce,0x39840479,0xbc7709b6, -0xbaba87d8,0x3ba58eb2,0x396d305b,0xba0057f7,0x3b443d87,0x3b311171,0x3b7fdc43,0x3ba547bb,0x3b7a9607,0xbb306794,0x3b950c26,0x389d4f18,0x3be36894,0x3c11eb03,0x3c05c893,0x3aeefe35,0x3b6466ca,0x3c91798d,0x3c3a7af1,0x3c5fc610,0x3c4613c1,0x3c40083a,0x3c3bc65f,0x3af50a45,0xba794216, -0x3a281955,0x3bc8a3f6,0x3c0bdf92,0x3c0be28f,0x3ba2d3c9,0x3b847aa9,0x39afba8d,0xbaf36683,0x3be68188,0x3bbdb138,0xbc0b6298,0x3b7016e9,0x3bfe6b19,0x3a07ac44,0x3a497114,0x3b38a60e,0x3b732ffe,0x3b59ca64,0x3b9ec164,0xba28775d,0x3a51528e,0x3a970c48,0x3bf3ca24,0x3c14e28b,0x3c1ea0a1, -0x3c9969fe,0xbb407805,0x3c35277d,0x3c99b669,0x3c4c40c5,0x3c81ba06,0x3c50fcdd,0x3c45c55f,0x3c47d16e,0x3a893fd1,0xbb20d340,0x3a8c5414,0x3b79ebe3,0x3bbfe8dd,0x3b692862,0x39458268,0xbb8db681,0xbbefdb2f,0xbac0b5ef,0x3b597b1b,0x3b3d490f,0xbcde33f2,0xbcb50817,0x3b5353b6,0x3b93f6f4, -0x3c259ff0,0x3ad381b1,0x3b27fa5e,0x38552feb,0xba7df483,0x3b030684,0x3b487797,0xb931bd93,0x3b6e22f6,0x3c0c2de9,0x3bcde241,0x3c8bd8de,0x3be0ae1f,0x3bd8de24,0x3c97c16d,0x3c6d2775,0x3c93ba9a,0x3bbd287d,0x3c19a14a,0x3c8287e3,0x3c88c675,0x3c917335,0x3cc8292d,0x3bf3d91b,0x3c153b5b, -0x3c8d2ca7,0x3ca84d29,0x3cbbb4bd,0x3c6ecce2,0x3c73bf25,0x3cbceaa3,0x3c6893db,0xbcab6023,0x3ba4ff75,0xbc5d17e1,0xbbabe1fa,0xbc05f121,0xbbbe5c68,0xbb2187d1,0xbacb1b11,0xbaaf4d63,0xbaa8d2cf,0xb9dcd8c6,0x3b03d5c4,0x3b7a32d2,0x3bcef0b5,0x3af61227,0x3b705727,0xbb64bb5a,0x3b4b6942, -0x3c4aeeb7,0x3bc1e9db,0x3c2569dc,0x3b8544b0,0x3a6c38f3,0xbbacbbec,0xbc2ae9bf,0xbc098774,0xba04b956,0xbb028741,0xbbf52d33,0xbbd72598,0xbccf845d,0xbcedfb73,0xbc936761,0xba960545,0x3c4f779d,0x3c980e8d,0x3c0951fb,0xb9dc89b3,0xbc25a846,0xbbe4488a,0xbb9ac122,0xbbc47927,0xbb8fbfa2, -0xb79f6a9d,0x3a3bd49a,0x3a795f9a,0x3abaaa60,0x3b28799f,0x3b1a178e,0x39066571,0x394c7bcf,0x3aafa8e8,0x3a853069,0x3c63a91f,0x3c115c81,0x3b4cad06,0x3bbf877d,0x3c075d52,0x3c35d297,0x3bb66df7,0x3c222789,0x3c017047,0x3bfeb35d,0x3bf9400d,0x3c045615,0x3b9c7ef6,0x3b3efdf6,0x3b1666cf, -0x3a9bbbc4,0x3b5bb807,0xbc558742,0xbc83acda,0xbc6b889f,0xbc2de13a,0xbcaf15c1,0xbc14060e,0xbbddaca7,0xbc141abb,0xbbc42711,0xbb3b1a28,0xba5f2719,0x3a707bba,0x3a381155,0x3a84a348,0x3ac68cf3,0x393cd781,0x39f32226,0x3afe4377,0xbabf51e4,0x3bd632fa,0x3c2e82b0,0x3ba72033,0x3b8bfdf1, -0x3c100a97,0x3c0c9cf3,0x3b5245ce,0x3bb4bdfd,0x3af72dcd,0x3b5201e7,0x3b2b254c,0x3bee07db,0x3c2e521f,0x3c1fcd10,0x3c0484dd,0xbb34c774,0xbc3d0fa4,0xbccac7e8,0xbd2a9685,0xbd081b33,0xbc9e6214,0xbc80c157,0xbbffa430,0xbbda6511,0xbbf82986,0xbb6b43bf,0xbb64e071,0xba087e4e,0x399f153e, -0x3a234e02,0x3ab58b9d,0x39d78dc0,0xbaaf1fb9,0xbb4c2fe9,0xbb03a0fd,0xbb796226,0x3c549645,0x3bc9eb31,0x3b8ed2dd,0x3a597cf0,0xbb87b00e,0xbc1aedfa,0xbc408df6,0xbc2b2328,0xbc15dfed,0xbc268e46,0xbc3bd758,0xbc78007b,0xbbf86a63,0xbc8421e8,0xbc98c59c,0xbc3788dd,0xbcc89d1d,0x3b4901cd, -0x3bac6fe3,0x3c589f3e,0x3cdb0cb6,0x3ca45836,0x3cb7813d,0x3c8e0142,0x3b64d30e,0x3ac89c20,0x3a69d94f,0x3acd2f31,0x391c018e,0x39534de2,0xbb469504,0x3a39fa75,0x3b10c506,0x3ada88d4,0x37b8acb3,0xbabf7904,0x3a9e7861,0x3b0f9697,0xbb97344f,0xba15277a,0xbbdc2e17,0xbc1749c7,0xbc09b9eb, -0xbbef2282,0xbc1eac62,0xbc48b845,0xbc2e15e0,0xbbb885dd,0xbb587c3b,0xbc0f8b03,0xbc903571,0xbce815cd,0xbc57687f,0x3cc900c1,0x3caec35d,0x3c818ea0,0x3c9a351e,0x3c8fc880,0x3c74d4fd,0x3c80e611,0x3c92218a,0x3c8a57bd,0x3c3c8f9b,0x3c638dfb,0x3c18d65c,0x3c1a47f0,0x3c287f91,0x3baa17de, -0x3a5aa867,0xbb5bd953,0xbb74b7f3,0xbbdd1061,0xbb2a805b,0xbbacb38a,0xbbe13c05,0xbbccf926,0xbc4e6fd2,0xbc5f13b7,0xbc28bc5f,0xbc2eb481,0xbc3779ad,0xbc4df6f4,0xbc857e96,0xbc9553d0,0xbc91f15f,0xbc364870,0xbb36ae25,0x3c4f5b5f,0x3c881f27,0x3d07c3d8,0x3c8c685b,0x3cab7913,0x3ca2ef2f, -0x3c82bcf0,0x3ca78bc4,0x3c844246,0x3c9ef751,0x3c7c9944,0x3c80c30b,0x3c36fb6a,0x3c32d8ac,0x3c0177ad,0x3c19ccc5,0x3bdb36ec,0x3b7f2899,0xb9994380,0xbab1ba28,0xbb1256cd,0xbbd97c35,0xba2569f2,0xbb808fc7,0xbb65b0f6,0xbbd9f3c1,0xbbe3e583,0xbbd8f7f9,0xbc0489cd,0xbc082e1b,0xbc366bd1, -0xbb86c51d,0x3b328930,0x3c17b7b0,0x3c49224a,0x3c9168b5,0x3ceaf963,0x3cce827f,0x3cbcd85b,0x3cba69e6,0x3c45906c,0x3c83c706,0x3c498018,0x3c4352a0,0x3c6644df,0x3c8986fe,0x3c5875e0,0x3c684a0e,0x3bf96559,0x3c69bf65,0x3c1d499e,0x3c1123d4,0x3bc0ae1b,0x3bf785e7,0x3be523dc,0x3bbc20d0, -0x3954d733,0x3b9a6b1f,0x3beb6eeb,0x3b737997,0x3b78e6e0,0x3b47d4a9,0x3b03afd5,0x3952b088,0x3ab059ea,0x3b09b61e,0x3b08682a,0x3c26eecf,0x3c8cef7c,0x3cc7f00d,0x3cddf005,0x3ce0a3ee,0x3ce61f7a,0x3cc11626,0x3caef610,0x3cbac086,0x3c828820,0x3cbf01fa,0x3ca64ad6,0x3ca5effe,0x3cab9f59, -0x3c8d11cc,0x3ca983b5,0x3c79b330,0x3c68ff01,0x3c3fcb41,0x3c6a0162,0x3c4efc62,0x3c37dd8b,0x3c17b4f9,0x3bf57cd6,0x3c2f0895,0x3bd4b69e,0x3c374af0,0x3c240086,0x3c57bf8b,0x3c6d35c7,0x3c7fcf45,0x3c8b1c34,0x3c93d47a,0x3cabd272,0x3cb78d46,0x3cbad523,0x3cbb1ff9,0x3c9c5540,0x3c99e1fc, -0x3c984ca9,0x3c7d605b,0x3c9758ed,0x3cb17c42,0x3c92ca21,0x3c9a2690,0x3c43a194,0x3bd144dd,0x3bf4fff1,0x3c4c1f0a,0x3bfce12b,0x3bc0093b,0x3b9297fc,0x3bb989f5,0x3bdcbd1a,0x3bc20e2a,0x3b8c41b3,0x3b7c249c,0x3bd31b96,0x3c48c853,0x3bdd11f8,0x3bbf29dc,0x3c27323e,0x3c7e29ac,0x3c77a65e, -0x3c76b69f,0x3c725e49,0x3c75dbf4,0x3c7391e9,0x3c6d0dc2,0x3c72b5c8,0x3c71cda1,0x3c819697,0x3c8ae753,0x3c948be2,0x3ca3deee,0x3ca6b10f,0x3c9e29ac,0x3c9dcdd9,0x3c97a2c4,0x3cd9ddff,0x3bb299d5,0x3b00cce5,0xbb0f7cf7,0x3c32ac19,0x3c796894,0x3bff4274,0x3c140216,0x3c571201,0x3c338058, -0x3c26b67d,0x3c19cae8,0x3c021a1c,0x3bf88575,0x3c04f8d0,0x3be6606f,0x3c68908c,0x3c3ac79d,0x3bd13a82,0x3c6bba36,0x3c3f877f,0xb99b20fb,0x3b2390e8,0x3b27c9a0,0x3b0ce8d2,0x3b0421e5,0x3af08003,0x3afedc09,0x3aafee47,0x3ab1ea80,0x3a9d5c5c,0x3b012c97,0x3b16a0dc,0x3b1dff31,0x3b51af0a, -0x3b434cf9,0x3afdeba5,0x3b0bcf31,0x39b353fb,0x3b6e45f1,0x3c8cf288,0x3bd09547,0x3c598552,0x3bf7a4b2,0x3c18a70e,0x3c031601,0x3b53f4c9,0x3c2e7479,0x3c2c8144,0x3c393c71,0x3bc16d9f,0x3c0586f1,0x3c351fbb,0x3c10b51f,0x3c430f13,0x3c1bf771,0x3c81b649,0x3c09c748,0x3b640556,0x3ba54c8f, -0x3b788d31,0x3b74bd68,0x3b66db59,0x3b9a531f,0x3a4f2e1f,0xb9cfb189,0xba15b14e,0x3b443449,0x3b9cd3d1,0x3b947203,0x3c0ae826,0x3c093523,0x3b7bd9e8,0x3b836631,0xba9e40af,0x3ad1ae89,0x3c4ac08b,0x3bd05767,0x3c84d579,0x3be733e9,0x3c0a0c2b,0x3b90c02a,0x3c0f9d22,0x3b0a17a3,0x3c8430b9, -0x3affc7f4,0x3bb17e28,0x3bed33b4,0x3c0a583e,0x3c0452e4,0x3c31ce27,0x3c48357f,0x3c7404e7,0x3c03d12e,0x3b779cfa,0x3be85213,0x3b88d6e9,0x3b8ab647,0x3b1441e5,0x3b87ee0a,0xbae0eea2,0xbb1d2536,0xbb1fdd9a,0x3b394439,0x3bd40511,0x3bc6c2d8,0x3c460660,0x3c261c31,0x3b0180cd,0x3b73acdc, -0xbb8bc288,0x39fd8a12,0x3c82a159,0x3c3d1eac,0x3c8612f2,0x3baa2cdf,0x3b3f8554,0x3bce3594,0x3b4c0b16,0x3b807054,0x3c07c8e8,0x3a7bf3c7,0x3b8a4dc3,0x393b4951,0x3c03549e,0x3bf021ef,0x3c2d8da3,0x3c5dcc71,0x3c90c44c,0x3c5940c2,0x3ba86704,0x3c051a77,0x3bc4e9bc,0x3bc23120,0x3bb70a17, -0x3c15b3b4,0xbb3b8f06,0xbbccbf58,0xbbfe10f5,0x3b64d77b,0x3c2c1345,0x3bf34235,0x3ca7ce92,0x3c934974,0x3b046186,0x3baebe9f,0xbad4ae66,0xbb02442a,0x3c36170d,0x3be3f8f8,0x3c78caf8,0x3b68701d,0x3a45a9d5,0x3b41aef2,0x3b46c6f7,0x3b8ac73c,0x3b32e523,0xba124bfa,0xbb0b47b1,0x3ae89fd9, -0x3b760fcb,0x3c096e16,0x3c5730e1,0x3bb7bb96,0x3cad24d2,0x3c250ad8,0x3bd95f31,0x3c2d8f12,0x3be92a01,0x3bbb9be2,0x3b7473f7,0x3b971ce7,0xbbddb35d,0xbc1b7857,0xbc0f381e,0x3b599870,0x3c46393c,0x3c1049fd,0x3cb74c4e,0x3c868a4b,0xbafc5cfd,0x3b6547d0,0xbb133eb7,0xbba82e26,0x3c173635, -0x3b8eb287,0x3bd33d44,0x3c3fb248,0x3c3b2b64,0x3bf554f1,0x3b5da087,0xb95c4edf,0xba7fe752,0x3b800e21,0x3b40c9e0,0x398f530b,0x3bb54a80,0x3baed7d8,0x3c7d92af,0x3c5346d8,0x3caf16d3,0x3c216ec8,0x3ac90988,0xba4b8483,0xbc2a118f,0xbae2cfae,0xbaffd73f,0xbba3f035,0xbc10b380,0xbc252ab5, -0xbbfad297,0xbc58730f,0xbbc70ae7,0x3c7d51f0,0x3c8aacf8,0x3c8c3c07,0x3c515c12,0x3bb50054,0xbb9dabbf,0x3ca71712,0x3c5fd5c7,0xbbe52a59,0x3b985c34,0xbb179159,0xbb8da7bd,0xbb1f9e90,0xbb4e7eef,0xb9d8754b,0xba2cbe8c,0xbb2ab434,0xba44baad,0x3a103921,0x3b91c4a8,0x3b300262,0x3bb94771, -0x3b5a840b,0x3c058bd0,0x3c67f698,0x3bde85d4,0x3c2e6034,0x3bf87dab,0x3a8ad660,0xb9d3a60e,0x3a316211,0xb98597c8,0xba65dbaa,0x3ae0d0f5,0x3b5e4673,0x3b6b3f98,0x3c04f671,0xbc239da0,0xbc8cbe91,0xbc4c9033,0xbba544ee,0x3b39659e,0x3c9e0eac,0x3c17eedc,0x3b11af10,0xbb7dc1e8,0xbbca08d6, -0xbb3e00dc,0xbb9eb038,0xbb4a9d25,0xba8c69c6,0x3984137e,0xba499da9,0x3aa30c1f,0x3a7e677d,0x3ba8a771,0x3b8acd28,0x3bc6ace9,0x3ba783a9,0x3c015495,0x3c31e49e,0x3b536091,0x3bacf68d,0x3ba70509,0x3b80feeb,0x3aec8984,0x3ac52feb,0xbb984411,0xbbb6c159,0xbc064841,0xbc17c1f3,0xbb4a3a39, -0x3c694be0,0x3c95a878,0x3c96c7af,0x3bfb5eb0,0x3b6ae682,0xbb23f1d3,0xbc87fdd4,0xbc140119,0xbc295a18,0xbca63da3,0xbbc8ae88,0xbb981195,0xbc030240,0xbbd03710,0xbb91384e,0xba235b71,0x37d89ded,0x3a90cc9c,0x39e01239,0x3a73100e,0x3b7d3f94,0x3b8377a6,0x3a0039ed,0x3bd58c9f,0x3c8eaa24, -0x3b087ab5,0x3b907b1a,0x3b1b256e,0x3b2b9073,0x3abf3255,0x3b21863f,0xba2bd6c7,0xba7efe92,0xbac13732,0xb92fb2a5,0x3acf8034,0x3bc4d5d3,0x3caae290,0x3ccbb6e9,0x3c91701b,0x3bbf6f6b,0x3b87e720,0xbca996f7,0xbcdeef57,0xbcb719b7,0xbc534f4b,0xbc0f97e7,0xbba2e3db,0xbb3e5ab4,0xbb80e5bc, -0xbb3fa671,0x3b1d81a1,0xb9cdabf2,0x3aa90049,0x3a6dac84,0x3b0d51fc,0x3a8cb048,0xb9d5ac50,0xbab483ba,0x3ab4d402,0x3bc3d584,0x3b26c6ec,0x3b226c69,0xbaa80069,0xbb1b51c4,0xbbadd308,0xbb67354f,0x38f28b54,0x3b8dc214,0x3c448b76,0x3c0037a0,0x3b5b7ccd,0xbc46a662,0xba9b5652,0x391085e8, -0x3b5a51c4,0x3c645dbb,0xbba7f477,0x3c573c0c,0x3ce1ae70,0x3cc99b52,0x3ca53bab,0x3c9e36b9,0x3c72c9d5,0xb9cd61bd,0x3b58dfb5,0xb9caa4e9,0x3a93c9cb,0x3a22b782,0x3ab2d16d,0xbb53e9ca,0x3b0099d0,0x3b22f78f,0x3ad76eac,0x3b79776e,0x3bb36810,0x3c16b062,0x3a1da072,0xbad4b532,0xbba761ca, -0xbbbbd3da,0xbb23b913,0x3b97843b,0x3ba89b25,0x3b7cf801,0x3c1e4a67,0xba197d08,0xba0b9fd7,0x3a862b69,0x3bc9e7d9,0x3adc66cd,0xbc99cf4d,0xbbf7d74d,0x3cfd9385,0x3d11d799,0x3d0c5678,0x3cf7f09f,0x3cef822d,0x3cb3f5e6,0x3c937ce1,0x3cb9f3df,0x3c881ebc,0x3c89a5d4,0x3c190d7d,0x3c2cabed, -0x3c07bf9c,0x3c244bcf,0x3be8c90b,0x3b88ea3f,0xba5c64a0,0xbb8af7de,0xbba56975,0xbbbdb1c3,0xbc056940,0xbc07d550,0xbbc8ea6c,0xbbc16816,0xbb97dc93,0xbb510881,0xbbbe62e0,0xbc229952,0xbc586baa,0xbc87ab95,0xbca08bdc,0xbcc3edc3,0xbcc7663c,0xbc6e8d2a,0x3bea625d,0x3ca4935d,0x3cc20643, -0x3d014f93,0x3d0bb240,0x3cfa2cc0,0x3ce491c4,0x3ca0a682,0x3cb9cb51,0x3cb117fe,0x3ca1dce3,0x3c76901f,0x3c5b4ed2,0x3c16f6fa,0x3c1956a9,0x3be550c8,0x3bcfc4a0,0x3b82c8f8,0x3b8af6d5,0x3b579cd6,0x38d5cbba,0x3afc740e,0xbbbef506,0xbbbab1d6,0xbbe82a47,0xbc00ac64,0xbc06f177,0xbc19dacd, -0xbc2571bd,0xbc2dd2b0,0xbc6dbd3b,0xbc274346,0xbbe31b87,0xbb8e488d,0xb89060a4,0x3bd64417,0x3c8b11ef,0x3ca82fb8,0x3c8a56d2,0x3c989a7b,0x3cb75773,0x3c9c78a5,0x3cb2c6b6,0x3cbb36ce,0x3cb0414f,0x3c96e2a2,0x3c92a135,0x3c8198dc,0x3c99cefb,0x3c54b3f4,0x3c37bedd,0x3c11787e,0x3c20474d, -0x3bdbe290,0x3bc6169c,0x3ba18313,0x3c1f1bd5,0x3b47cd9a,0xbad4c273,0xba043b38,0xbb5eea50,0xbb816038,0xbbd0c85e,0xbbef279e,0xbbcd1f3b,0xbba2676c,0xbb2083e9,0x3b69c198,0x3c15605e,0x3c5c6299,0x3c920d84,0x3caac583,0x3cb1586f,0x3ca32859,0x3c9d754a,0x3c9fc796,0x3ce1d319,0x3cb1158c, -0x3cb705e3,0x3cb77263,0x3caa2d03,0x3cb778c7,0x3c9fc986,0x3cb2db92,0x3caac28d,0x3caf6226,0x3c9d4c8f,0x3ca23e18,0x3c99f8ed,0x3c8982f3,0x3c86307f,0x3c218ac4,0x3c43cd78,0x3a0954ef,0x3b20aa91,0x3b9959a9,0x3bd22d56,0x3c0388b2,0x3c2400db,0x3c3de415,0x3c440e0c,0x3c510d05,0x3c4cd629, -0x3c50a592,0x3c3b7db4,0x3c55123a,0x3c570919,0x3c2c62bd,0x3c61d34a,0x3c8da061,0x3c62f74b,0x3c5ab62d,0x3ca2ae3a,0x3cb1b7c2,0x3c918627,0x3ca0b4c1,0x3cb62eb7,0x3ca605bf,0x3ca5f077,0x3c9cdcd6,0x3c93aa74,0x3c9415e3,0x3c959753,0x3c937bae,0x3ca39dc5,0x3c834990,0x3c81eaa5,0x3c9e6877, -0x3c836019,0x3c163396,0x3c309ce7,0x3c2a1b63,0x3c229a22,0x3c1ce5f1,0x3c164481,0x3c12c4df,0x3c1b8a5b,0x3c297b8a,0x3c3db2e7,0x3c53270a,0x3c6029b2,0x3c76e592,0x3c803b7b,0x3c78c206,0x3c7b61ea,0x3c7144aa,0x3cc8abae,0xbb8043d7,0xbb0eb4f5,0xba89eb74,0xbc1f316b,0xbbe516d0,0x3bb8d7b1, -0xbbfd78fa,0xbbddd6fa,0x3aa52c17,0x3b059e08,0x3b65db54,0x3ba354d9,0x3b968777,0x3bae944a,0x3b8fe328,0xbbe8fbda,0xbc0e3036,0x3bdf7c6b,0xbb9c6881,0xbbf3053c,0xb9d7c445,0xbae81632,0xbb25fefb,0xbb248b4b,0xbb264161,0xbb2d9b84,0xbb34df3c,0xbb4fd700,0xbb59764a,0xbb62ed77,0xbb5e4913, -0xbb50fd52,0xbb69011a,0xbb668658,0xbb6788f5,0xbb3cbff2,0xbb324685,0xbb0bbbd4,0xbc00d1ca,0xbbad8ae6,0xba0afde8,0x3b1c1e88,0xbb48b90c,0xbbbde70b,0x38b5195a,0x384f9d66,0xbb860d16,0xb90f5a65,0xbba8ee3a,0xbb479c24,0xbb26b8a7,0x3965deb6,0xbb4abc36,0xbad92638,0xba0c207b,0xbb3c4651, -0xbb9db1d8,0xba915de2,0xbb682e38,0xbb7b0795,0xbb89bdaa,0xbba203dd,0xbbcbbb41,0xbc069498,0xbc16d995,0xbc0fbd8d,0xbbe6862b,0xbbcae746,0xbbfab65b,0xbbe7d980,0xbbc34c18,0xbb7fe7a9,0xbb8d3d5f,0xbaa3bb20,0xbbcd0b4e,0xbc008528,0xbb589c0c,0x3b557ab2,0xbb3b8c83,0xbba67873,0x3a3a47f1, -0xbb5d626c,0x3a2566a1,0xbb51e885,0xbac9d0fe,0xba46d1e7,0xbbb80968,0xbada0eaa,0xba4a87a7,0xba24ec61,0x3b238359,0xba31026a,0x3982423c,0xba5b0f2c,0xbb9680ca,0xbbaf60cc,0xbbb9a436,0xbbcba1e6,0xbc036c8b,0xbc3ea4d5,0xbc480789,0xbc555401,0xbc243439,0xbc1ebfdc,0xbc425268,0xbc3adee5, -0xbc2724f1,0xbbaac95a,0xbbb2c651,0xba9d3b5f,0xbc10d5d0,0xbc072d74,0xba688823,0x3c2cded4,0x38067f5a,0xba0d8a08,0x3ad08025,0x3b04f8c9,0x3b2d182a,0x3c00a2db,0x3b3e9cc5,0xbb512704,0x3acb4958,0x395269ca,0x3b8cd51c,0x3ba3367f,0x3bc0e47c,0x3b3c6dfd,0x3a9550c0,0x3a02bcd0,0xbb73382c, -0xbbdd5c6c,0xbbfe4fa6,0xbc305cfc,0xbc5c1ac0,0xbc9a3998,0xbcae52e7,0xbcaf6cdd,0xbc6ce031,0xbc61590f,0xbc91512a,0xbc816a07,0xbc386f03,0xbb8dacc1,0xbbbb875d,0x3995292f,0xbb8452e1,0xbbef321b,0x391b7796,0x3c354c10,0xba398d98,0xbab10873,0x3b982e90,0x3b32ce30,0x3b2a7654,0x3bef7f3d, -0x3a82a3be,0xb98d817f,0x3aa707cd,0x3b9ebd66,0x3bd03339,0x3bf644c5,0x3c5d9f00,0x3b6d4e69,0x3b6b978f,0x3aa2e84d,0xbbde83e6,0xbc0d949c,0xbc14c1eb,0xbc35302a,0xbc4bb13d,0xbca28c48,0xbcb7cf5d,0xbcaabf92,0xbc880fd4,0xbc846d60,0xbca592bb,0xbcaff3aa,0xbc9502b4,0xbbc44202,0xbbd4d047, -0xbc2f3ddd,0xbc96e45c,0xbcb9186b,0xbc7ca4e8,0xbbe26a14,0x3b9ab269,0x3bfdf427,0x3bcc376c,0x3b243385,0xba4c2564,0xba6ace6b,0x3abf3344,0x3b7693cc,0x3a8fabd0,0x3b830a5c,0x3bc4848f,0x3baaf175,0x3c5a9998,0x3ba25f30,0xbb531c5d,0x3ab8b293,0x3affbfe1,0x3bb5c0ea,0x39ab25f0,0x3ae74133, -0x3c05ed4e,0x3ba77d11,0x3b4ada0b,0xbbd9b34b,0xbc1b45f6,0xbc2c691d,0xbc05e315,0xbbc49b4a,0xbaca380f,0x3b1d5e3e,0xbba379bb,0x3c0c05c4,0x3c9906af,0xbc7ed745,0xbc19e9ec,0xbc05d3fb,0xbbb215b2,0xbb24c86b,0xbbb7b0ce,0xba9cc3ac,0xba54985e,0xbadb45ee,0xbaa053ab,0xba0f05d9,0x3aded1cf, -0x3b18df1f,0x3b59b306,0x3ac48e35,0x3aa83e38,0x3af58291,0x3b125f18,0xbb907b47,0xbc38933b,0xbc7d22a0,0xbc612084,0xbc48dc37,0xbc01ae91,0xbc11fb1f,0xbb8d3295,0xbaa01ac0,0xba9230d3,0xbbd3892f,0xbb52e610,0xbcf50076,0xbd03c4aa,0xbc29aeec,0xbc1aed24,0x39e28977,0x3c263c3e,0x3b2a8692, -0xbb190525,0xbc1d35b9,0xbc043350,0xbbac0bbb,0xbbbc67a2,0xbb73d9d8,0xbae13f3e,0x39e1a428,0xba768945,0x39e43485,0x3b1c3123,0xb75e0836,0x3a514514,0x3b6b9641,0xbaae359e,0xbb179ded,0x3bd6684f,0x3b2178b7,0xbb10cd82,0xbb635de9,0xbc226f89,0xbc3c233d,0xbc54ce3a,0xbc54a551,0xbc2bd68c, -0xbb3d4eaa,0xbb9ad8d0,0xbc2ae2ba,0xbc9e916f,0xbce7a85a,0xbce690c7,0xbcb84776,0xbc178d5f,0xbc5dac83,0xbc852a73,0xbc1ee865,0xbc5d458b,0xbcb24b53,0xbc2722f0,0xbbf41fee,0xbbe1ad23,0xbbdd3bfa,0xbb795736,0xba96a124,0xb99469d9,0x39a4c7bf,0x3a61dede,0x3a9cb531,0xb9bd756e,0x3aa8c436, -0xb94cc701,0xb9a56f09,0x3be2e4bc,0x3bc1bb6b,0xb97a163d,0xbb145f74,0xbc37470a,0xbc852f18,0xbc8a01d7,0xbcbde50d,0xbcb189b2,0xbc5fe7c1,0xbc30f621,0xbc418273,0xbcd3c066,0xbcd49afe,0xbcffbebb,0xbd3dad90,0xbca3266b,0xbcc4b26b,0xbcab09ef,0xbd0faf06,0xbcbe2795,0xbc98f811,0xbc2a6ea8, -0xbb91d958,0xbbb2b128,0xbb58e256,0xbb09e42a,0xb986336c,0xba322c4f,0xb81d7c0a,0x3af352f0,0x384fde9e,0xba8fffa5,0xbac325b7,0xbb461796,0xbb2ebf9f,0x3bdd4d6c,0xb9c78bd3,0xbbc7000b,0xbc453a56,0xbc7603a5,0xbc8716ef,0xbc3644bf,0xbc61626a,0xbc5d1c44,0xbc51ad61,0xbc3ea420,0xbc892366, -0xbc9eac83,0xbd2435c2,0xbd4db05b,0xbd702cbb,0xbd117162,0xbd8bedd6,0xbd227d22,0x3bbb4d16,0xba6af421,0x3c2633fa,0x3ba3a094,0xb99f7c4e,0xbbffe0ba,0xbbae9955,0xbbb31ed5,0xbacc1151,0x3a3bbfd1,0x3adf4708,0xbb69adfd,0x398844b2,0x3ad6f8e8,0x3b8bb1bd,0xbb8eb7c1,0xbbc23875,0x3a643b92, -0xba8cb721,0xbabd3361,0xbbb3688f,0xbc0438a9,0xbc2b3f2c,0xbc7ee857,0xbcb356ca,0xbcc78213,0xbcc68199,0xbcb43d6d,0xbca78c00,0xbcd1002b,0xbcdf1af9,0xbd151038,0xbd677dc5,0xbd840309,0x3ba27b5b,0x3c5a1c4f,0x3cb0fc20,0x3cb8919f,0x3caa7fed,0x3c92641a,0x3c86ff71,0x3c99051b,0x3c87aed7, -0x3c3ded51,0x3c21037a,0x3bdee19d,0x3bf83030,0x3bf73aee,0x3b88952b,0xba89ddf5,0xbba9a016,0xbbbd13e4,0xbbc6484f,0xbacad8cc,0xbbb8fe05,0xbc13d397,0xbc0986f1,0xbc5ad9f1,0xbc64dd91,0xbc59ba49,0xbc3308bf,0xbc2fea2c,0xbc2ba1f7,0xbc609646,0xbcae47e3,0xbd0208cb,0xbd04cdea,0xbcf3b9f6, -0xbc815fe5,0xbba74423,0x3c5a17a1,0x3cacf26c,0x3c978672,0x3ca627c9,0x3c943524,0x3c8ec13e,0x3c8e8583,0x3ca351b1,0x3c8b309d,0x3c83e7ad,0x3c4b8cc4,0x3c3d47af,0x3c02f2e7,0x3bdb357f,0x3b81dd1d,0x3b206190,0xba6d7506,0xbb261451,0xbb79d1f3,0xbb9457e5,0xbbddda55,0xbc076bb6,0xbc194415, -0xbc3bf162,0xbc501cb9,0xbc599404,0xbc78b6c8,0xbc84e1a3,0xbca5b821,0xbc9012cc,0xbc9272e9,0xbcab0588,0xbc74ff12,0xbbe460ce,0x3b698788,0x3c15f97e,0x3c3c9db8,0x3c397c14,0x3c4b3588,0x3c4a7a2b,0x3c5fdc06,0x3c7e56eb,0x3c84a057,0x3c86913d,0x3c66186e,0x3c5a12f2,0x3c20f342,0x3c029fc7, -0x3c030ad2,0x3b6a7318,0x3bb888cc,0x3b38f9e6,0x3b32f3ac,0x3a3496ae,0xba2fa021,0xbb9e6f46,0xbb3983a9,0xbb977bbe,0xbbac1b9c,0xbbda1480,0xbc099d0e,0xbc1b3749,0xbc346000,0xbc5705a2,0xbc79f37d,0xbc4050f4,0xbc0d64dd,0xbbba784d,0x3aceb872,0x3bc14a3d,0x3c1ad7bf,0x3c16e713,0x3c383f40, -0x3c45d6fc,0x3c900c41,0x3c74b4ee,0x3c52534f,0x3c62c56d,0x3c40e901,0x3c89e907,0x3c5f0ea2,0x3c47fc30,0x3c3c06cb,0x3c233067,0x3c0b9c32,0x3c096c89,0x3b718ad7,0x3b267c68,0x3b8699fc,0x38cea890,0x3ad2a62f,0x3b215c59,0x3b690fa1,0x3b6fa9d5,0x3b9d08cb,0x3bb5ae5d,0x3bdffa66,0x3c017762, -0x3c1a0d6b,0x3c3a5921,0x3c3b31dd,0x3c2f39d2,0x3c0c3a15,0x3bd2a40e,0x3bd1c26b,0x3b94bb50,0x3bed0261,0x3c1f0a16,0x3c16e2fc,0x3c0a9029,0x3bd9b90b,0x3c238092,0x3c8c3ff3,0x3beaa16c,0x3c1470a0,0x3c83a558,0x3c84c2c4,0x3c85b046,0x3c87160b,0x3c877c94,0x3c8aed04,0x3c8aa464,0x3bcc8a56, -0x3b9b9a05,0x3c7f6017,0x3be06e0c,0x3b905f2e,0x3bf29269,0x3bdf2bbb,0x3be0d16b,0x3bd9f8ae,0x3bd0c32e,0x3bc5f0b5,0x3bb971b7,0x3baa1b09,0x3ba158e5,0x3ba5b55e,0x3bb3d9d2,0x3bd616fd,0x3bf7e9e9,0x3c10e3a1,0x3c1217c3,0x3c180670,0x3c15c77a,0x3c7afba5,0x3c768ccb,0x3c1c44f8,0x3c3bb0f8, -0x3c694325,0x3bb95298,0xbbb99597,0x3c5550c2,0x3bd6d1fe,0xbb9931aa,0xbbcd0453,0xbbf2af27,0xbbce5bef,0xbbf31185,0xbc229fa8,0xbbfc234e,0x3bdc452c,0x3c540253,0xbc10d73b,0x3b9a1dee,0x3c4591fc,0x3c39b694,0x3c2d9ab9,0x3c3a3cf2,0x3c35156a,0x3c39d77e,0x3c3367cb,0x3c25474b,0x3c2243aa, -0x3c2482f4,0x3c20c00e,0x3c34ad7c,0x3c367da0,0x3c369a30,0x3c400150,0x3c373eca,0x3c172530,0x3c239a78,0x3c1efb51,0x3c7665d0,0x39b37b9b,0x3c16e30a,0x3bfae010,0x3c0757b9,0x3c104367,0x3bafea26,0x3bd468c0,0x3c0da461,0x3bf1da14,0x3c142882,0x3c0f59a4,0x3bac3a1b,0xba805c9f,0x3c2a6f20, -0x3be8113f,0x3c221fd5,0x3c08d6cf,0x3c8e9f6a,0x3c67cab2,0x3c7ce4d6,0x3c806a6c,0x3c76b2f8,0x3c69c269,0x3c6c173b,0x3c422b6a,0x3c3d1473,0x3c3fbbd9,0x3c8a9eeb,0x3c917251,0x3c858e24,0x3c9e5baa,0x3c92fabd,0x3c34337a,0x3c3fd8fa,0x3c1f2895,0x3c506f3e,0x3c1143db,0x3c62779e,0x3c6c57ef, -0x3c02eb11,0x3b8a293f,0x3c22c29f,0x3bb85b9f,0x3c098e1f,0x3c45e867,0x3c3ce352,0x3b51ba89,0x3c1a72fe,0x3be9463b,0x3c248458,0x3c372862,0x3c217e65,0x3c4f4388,0x3c67ad39,0x3c939284,0x3c953374,0x3c9dd98a,0x3c970164,0x3c81ce34,0x3c573961,0x3c23d67e,0x3c2b2e37,0x3c3a5cfd,0x3c967978, -0x3cb1ac0b,0x3c97c06f,0x3cbd46cd,0x3c98c7ef,0x3bef81d1,0x3c3164be,0x3bd7eebc,0x3c0f6fb0,0x3bca8598,0x3c2f4d8f,0x3c965892,0x3b987b2f,0x3ada0f56,0x3c217b44,0x3b780dfb,0x3ba66290,0x3c145b69,0x3b748396,0x3b8a4ad1,0x3b918a74,0x3bd17801,0x3c0ef814,0x3c2f6c76,0x3c68932f,0x3c720cbb, -0x3c7a325e,0x3ca8c42d,0x3ca13110,0x3cbb5c59,0x3cba59e4,0x3cb256d9,0x3c8983db,0x3c282f43,0x3c0e6c5f,0x3c25b347,0x3cc6b24a,0x3cf3bbf2,0x3cba2a95,0x3d03b914,0x3cd1f631,0x3bc405e3,0x3c21ff79,0x3c04be22,0x3c3c711b,0x3c0a58e8,0x3c31a6bf,0x3ca93a0a,0x3ba5013c,0x3a8621b1,0x3bb9ac6d, -0x3b407293,0x3b9c0cfa,0x3c041f57,0x3a8eec0b,0xb9c457a6,0x3b68e27b,0x3bdd93b1,0x3c207166,0x3c380f5a,0x3c5d4046,0x3c609bf2,0x3c8f0165,0x3cb153a9,0x3cc9431d,0x3ce1aeb3,0x3cc94853,0x3ca384dd,0x3c4bea61,0x3bd7a499,0x3be5141c,0x3c15e6ab,0x3ccee4d0,0x3d013e08,0x3cb78b60,0x3d078f5d, -0x3cb0e6f7,0x3aeb8511,0x3beca517,0x3c8bfb65,0x3c6fce41,0x3b74f57d,0xbb4cb012,0xbb3d63ed,0x3bd6a08e,0x3c61de32,0x3c259ef7,0x3bcf0f70,0x3a154e40,0xba40c6eb,0x3b75a01c,0x3b93cf81,0x3ae36c44,0x3bdde2c3,0x3c094ccf,0x3c327aac,0x3c9061bc,0x3ca48b02,0x3ca338a0,0x3ca6d892,0x3c439fc5, -0x3b86ac7f,0x3ba333fa,0x3be29868,0x3b64d3c1,0x3c390724,0x3c50d55a,0x3c36da1d,0x3c819d9a,0x3cc29071,0x3d1a5f59,0x3d0c3ae3,0x3d14eb19,0x3d12b328,0x3ce92363,0x3badef1d,0x3d0e428a,0x3a785fca,0x3a009888,0x3aa9af7b,0x3b94d5d1,0x3916ea1e,0xba4b25b5,0x3a2c780f,0x3aeee31e,0x39a8cddf, -0xba91feda,0xb9eb77a2,0x3b5bb28b,0x3bb5dde2,0x3be32ec5,0x3bf9a98e,0x3ba4e9df,0x3adbd654,0x3c2c62f9,0x3c9065d7,0x3ca172b3,0x3cc9d66f,0x3c4826fe,0x3be4df84,0x3b1e4484,0x3b18d895,0x3bb15a8f,0x3c15bc05,0x3c31fd7f,0x3c1f8056,0x3c2f1eb9,0xbb900cd8,0xbc4b3029,0xbbbf8b57,0xbb49755a, -0x3b83ffca,0x3c8d17a6,0x3c139219,0x3a5d6abc,0xbaba7dc3,0xbbc20b2d,0xbb82b8c5,0xbaf4a26c,0xbab61e1a,0x388602b2,0x39d89656,0x398fc5d8,0x3b1c3198,0x3a87e169,0x3bc30b14,0x3baf4516,0x3c091331,0x3ba03ad5,0x3bf22ee4,0x3c92f7e8,0x3c38273e,0x3c296ba0,0x3c1ddb3c,0x3c548283,0x3c7d59a0, -0x3cad1dcd,0x3c776b8a,0x3c37d780,0x3c16d2d9,0x3c28befe,0x3cb3266a,0x3d0bd7d1,0x3d0c7858,0x3d0312e0,0x3c970314,0x3bd1fab3,0x3c0d70ad,0xbc03efb9,0xbc77ce0e,0xbc1b68ce,0xbca08ca7,0xbc0e2057,0xbbd02f52,0xbb69cdff,0xbb9dfb0f,0xbb626a77,0x3a1b6c15,0x3a5ea30e,0x3ae64236,0x3ac75379, -0x3b23169b,0x3bb9cb93,0x3bdba613,0x3b299cc5,0x3bc9706f,0x3c8da0b5,0x3c1ae101,0x3c129b27,0x3bbb940e,0x3c3bf955,0x3c7b596e,0x3cb8b54b,0x3c9051d0,0x3c67d973,0x3c493910,0x3c7b812e,0x3cbfe9d1,0x3cfa5d85,0x3d3f283d,0x3d4f02db,0x3d2a48d4,0x3caf0f84,0x3cca0f10,0xb986551d,0xbca6f01e, -0xbcabc511,0xbc680e46,0xbbc832b0,0xbb051ac9,0xbb1600ef,0xbaa0140a,0xb8f8d01f,0x3afad9bf,0x39ad7558,0x3a1dbec2,0x3b8a5d6a,0x3b39bc07,0x3aafb88d,0x3a1ed09a,0x3b2281bb,0x3b0af92a,0x3be01b38,0x3c24d0c4,0x3c3ffa3e,0x3c1ce44b,0x3c162cd8,0x3b81ad3f,0x3b1250f7,0x3a91f29a,0x3b571862, -0x3c0b388b,0x3b8ca549,0x3b92c901,0xbb06a408,0x3c5b72ec,0x3c9cc902,0x3d145942,0x3d032038,0xbbfa865b,0xbcca6b0c,0xbc915a76,0x3b69c9a0,0x3b753365,0x3a2b8f69,0xbb1eb4ea,0xbbac62f8,0xbb70f8a0,0xbb8de862,0x3a17fc70,0x3b436ac6,0x3b5b5463,0xb9ec6c34,0x3a8e0ae1,0x3b39043d,0x3bd0bbf4, -0x3b0078e8,0x3b42f6de,0x3bcf436d,0x3baa74ac,0x3aa02b41,0xbb7640e6,0xbb3866c0,0x3a87ccee,0x3c0eaaa4,0x3bce439f,0x3c2e6c85,0x3cad81cf,0x3c86b4df,0x3c93ecd6,0x3cba5449,0x3cfaa862,0x3cda4ecb,0x3c424520,0xbb9d272f,0x3cee97b1,0x3d108241,0x3cd7cd64,0x3cd55895,0x3cde1651,0x3ca986d8, -0x3c98cf03,0x3ca6accc,0x3c981fb8,0x3c8c32fa,0x3c1bc8b7,0x3c216786,0x3c069b62,0x3be1b35c,0x3bc5ff24,0x3b589792,0x3a850232,0xbaf6c638,0xbb922858,0xba60bf2d,0xb69a3277,0x3a746bf2,0x3a9d2c84,0x3b8c79ec,0x3b803e3e,0x3b828c0b,0x3b4d0d73,0xbaa4bb77,0xbc010ee1,0xbbc397e0,0xbbc7dc79, -0xbb2fa2a0,0xbc1b90c0,0xbbfafef1,0x3b46be8a,0x3c917889,0x3cd7e129,0x3cc28188,0x3cf5e749,0x3ce9e62f,0x3ce9c67b,0x3cca478b,0x3cbf5f32,0x3cb44793,0x3ca644e1,0x3c888966,0x3c5d944b,0x3c2d6cdd,0x3c0b1ba7,0x3be65f93,0x3bcf117e,0x3b8354e7,0x3b1f75b5,0x3a5adea3,0xb927003a,0xbb15feef, -0xbb8ee669,0xbbae843f,0xbbebac26,0xbbbbe011,0xbbccec5f,0xbbd964d5,0xbbfac741,0xbc09eee5,0xbc489adf,0xbc090b12,0xbbd8e5ad,0xbb809ba7,0xbb04cbf9,0x3b09f752,0x3c1c4d33,0x3c77125f,0x3c8a7393,0x3cb12fd2,0x3c8948c7,0x3c9b9774,0x3c9806e6,0x3c972793,0x3c9fdad5,0x3ca310b1,0x3c8dafb0, -0x3c8545e7,0x3c84769c,0x3c7bd9a5,0x3c22a554,0x3c2932a5,0x3bbbe029,0x3bcce2cd,0x3b97f7e3,0x3b3dfa83,0x3a4b688b,0x39ffe540,0xbb84242e,0xbb9d2fbd,0xbc05bce8,0xbc231760,0xbc475ee0,0xbc55169c,0xbc27eadc,0xbc0c0431,0xbbba7551,0xbaf5afdf,0x3a61a488,0x3b55dfde,0x3c0cb870,0x3c662483, -0x3c8f422d,0x3c8c419f,0x3c70ced4,0x3c72c1c4,0x3c696761,0x3c888d97,0x3c90bcd6,0x3c8e665c,0x3c953e13,0x3c7db4ca,0x3c818a52,0x3c6d6cdb,0x3c479d80,0x3c3a8385,0x3c3c8e74,0x3c1c096a,0x3c32e122,0x3c1bb8f2,0x3bc5a88a,0x3be38f3f,0x3b83177e,0x3b18b40d,0x3b0d44bd,0x3b47c97b,0x3b794578, -0x3b93efcb,0x3bb04f92,0x3bc1aad5,0x3bea349b,0x3c205fd6,0x3c39bd8c,0x3c5f9d5d,0x3c83bf94,0x3c9e7321,0x3c8f4c23,0x3c54e512,0x3c578751,0x3c77f694,0x3c446751,0x3c4da494,0x3c79fe84,0x3c45314c,0x3bf5e996,0x3c7a5b80,0x3c69ede3,0x3c232921,0x3c0ea461,0x3c06caea,0x3c013fab,0x3be8eff8, -0x3bbfb9b4,0x3bae8af3,0x3c4df1bb,0x3c609a27,0x3bb70063,0x3c3ae10a,0x3c527ec4,0x3c0cd532,0x3c10bd46,0x3c09b29d,0x3bfbbb2d,0x3be2916f,0x3bcff972,0x3bc26960,0x3bd6c489,0x3bfc15b9,0x3c0d2e60,0x3c1b4aa8,0x3c230667,0x3c336b75,0x3c3fc125,0x3c48ad26,0x3c541c18,0x3c4f2956,0x3c9c5af3, -0xbbdefd09,0xbba8078c,0xbc0c345b,0xbbaba998,0x3bcac54d,0x3c896da0,0xbbb7ccc9,0x3b61bf47,0x3c7db78d,0x3c8556ce,0x3c8eddba,0x3c872912,0x3c882e78,0x3c9ea1db,0x3c84c363,0x3b810041,0xbb89f6a1,0x3c91dd71,0x3bea62c3,0xbb157a98,0xbbec7a01,0xbbb18720,0xbbd681ba,0xbbda0459,0xbbe239a3, -0xbbe6555a,0xbbe9aee5,0xbbe88a2f,0xbbe8b345,0xbbeea07a,0xbbe51385,0xbbd95f98,0xbbee9887,0xbbdc20f1,0xbbd32fb0,0xbbb74c25,0xbbc148bf,0xbbcd7e7a,0xbc294fc7,0x3c55479d,0x3a764ae7,0x3c39b333,0xb8a5b965,0xba58f453,0x3ba8a1a8,0xba088748,0x3aec9bac,0x3ba549a5,0x3ab41959,0xbacadacb, -0x3b5163ae,0x3c42acee,0xba502c59,0x3b9ea09d,0x3b0b1311,0x3bf5ed49,0xbbcd5d2f,0xbbcb7e79,0xbbf7e6bd,0xbc146b2c,0xbc15de72,0xbc279978,0xbc4cf5f3,0xbc588520,0xbc633ba3,0xbc605dc4,0xbc3bd823,0xbc2b5797,0xbc4e9ce8,0xbc24ef7e,0xbc0b32e1,0xbbcb4e23,0xbbd3948e,0xbbccbd6a,0xbbd415e0, -0x3b5cbdac,0xbb39e36b,0x3c220acb,0x3a04110c,0x3b056406,0xba0f7c05,0x3b3975d0,0xbb28d632,0x3ba09f72,0xbbc7f4e1,0x3b71f48a,0xbb340583,0x3b207502,0xb7c65b1f,0x3a39444d,0x3bd866af,0x3ba5f781,0x391b7b84,0xbc100ba9,0xbc111434,0xbc4ecf09,0xbc490224,0xbc60cbe6,0xbc8358f6,0xbc8d753f, -0xbc87e71c,0xbc930df1,0xbc5f3941,0xbc55177a,0xbc841d46,0xbc489b79,0xbc2119e8,0xbba51a4a,0xbbd780d2,0xbbdb48a8,0xbc033545,0x3bbe3d3f,0x3bb07e8d,0x3c75cf75,0x3b2554d5,0x3aad8a64,0x3b0a5374,0x3b139f2e,0x3b18b20e,0x3c0bb3ba,0x3ad62988,0xb8690ebc,0xba3a28ba,0x3b71ee1c,0x3b635894, -0x3b61b524,0x3be1e8b8,0x3c123484,0x3b9ce7fb,0xbc03ab7e,0xbc03a091,0xbc6c4c5f,0xbc7c4d54,0xbca1fb37,0xbcbf8256,0xbcd0b32d,0xbcd87296,0xbcdd5267,0xbc9c5280,0xbc9415a4,0xbcc1d11e,0xbc8056ea,0xbc1ffe65,0xbba7802c,0xbb90c81a,0xbb6d7547,0xbb7d16ad,0x3b680758,0x3b5c6374,0x3c658ed9, -0x3a34597f,0xba6f68da,0x3bc5d519,0x3b4696c8,0x3b4326ff,0x3bf0826b,0x3af6ce01,0xba8c6d65,0x3b1a4bc0,0x3b5e343e,0x3bae7bdb,0x3becb564,0x3bdf0a45,0x3c69bb2d,0x3b23955d,0xbc014ddb,0xbc4cc379,0xbc95b856,0xbc94e855,0xbcb125ea,0xbcc74c33,0xbce22f4a,0xbcdee7bd,0xbcda5d78,0xbca8ef1b, -0xbc9343db,0xbcbd15b1,0xbc899a3a,0xbc477225,0xbb5f42b2,0xbbc6e101,0xbc890d80,0xbcc394a7,0xbc065421,0xbbc73a81,0xbc0a9aa2,0x3c057387,0x3c0a3fb4,0x3c1f485f,0x3b6a03a9,0xba95a863,0xbac36389,0x3ae43ee8,0x3b8a73af,0x3aef71e0,0x3bcc4bc8,0x3b9875ad,0x3c0ca3ec,0x3c003537,0x3c07bfef, -0x3988dee0,0xbc268ce6,0xbc0e137a,0xbc0b4445,0xbba5965c,0xbbc19ea3,0xbb1cc528,0xbc0eef70,0xbc344f32,0xbcc14ae1,0xbc6fd580,0xbc960c1f,0xbcc69514,0xbc9560f8,0xbc30b5a8,0x3b9550d4,0xbc39b121,0xbc18f1b0,0x3ca53d95,0x3aaa97ea,0xbc878b4b,0x3a8bde85,0xbbcab20f,0x3a44fd1d,0xba9f320c, -0x3a32b829,0x3b11bf92,0xb9c6270b,0xba20df46,0xb98e4a85,0x3b24608d,0x3aeb8673,0x3ac48c42,0x3b5bdb06,0x3b008796,0x3c052b6f,0x3b9b12c1,0xbc45612a,0xbc76d2c2,0xbcd8230a,0xbc9292b2,0xbc4f9d58,0xbb45c1df,0xba2f517b,0x3b3baa06,0x3b0b1a92,0xbb36ab7d,0xbafd8e83,0x3c0be3e5,0xbc813bac, -0xbcad1aab,0xbc00bab1,0xbc65be60,0xbbb1fbbf,0x3b984763,0xbb6796bd,0xbb8a9792,0xbbd900c3,0xbc151f4f,0xbbe60079,0xbb74d440,0xbb0879aa,0xbb11407f,0x3948a521,0xba85aaea,0x3a8595da,0x3add1dad,0x39cb5d54,0x3b593a53,0x3bb06385,0xb8d74e58,0x388fd1cb,0x3aaee8cf,0xbb290ccf,0xbb7c6e29, -0xbc0ebd38,0xbc73ab8f,0xbc99ac69,0xbc970e4f,0xbcac5d6d,0xbc86878b,0xbbc97380,0xbc40ec7e,0xbc8e0cd5,0xbca6614c,0xbceb0b61,0xbcde79c6,0xbcc6226c,0xbc3c3bb7,0xbc0e8d8b,0xbbe8e180,0xbb86920d,0xbc4a2118,0xbc7df241,0xbc222d75,0xbc08dc2e,0xbb80545e,0xbbc1cfdc,0xbb771508,0xba7c642e, -0xba308d59,0x3a5c05e7,0x3a500f60,0x3aef843c,0x3ac43f9b,0x3b1f5e5d,0xb9afd7e7,0x3b5c1591,0x3bb01d0c,0xba8c7b60,0xbb083389,0xbbaee56a,0xbc5c600b,0xbc9b062b,0xbcb5e554,0xbcefc4d8,0xbccff47e,0xbc86de90,0xbc91f421,0xbcb991a8,0xbd03e5c7,0xbd126967,0xbd14e060,0xbd2d8036,0xbc8815c6, -0xbca07299,0x3ab3435d,0xbcadca56,0xbca0da83,0xbc68b8d4,0xbc44ce88,0xbb66d2c8,0xbae5bd14,0xbb0b11a3,0x3992c8ae,0x3aa3cdc2,0xbaa9e786,0xb964b9cd,0x3b21c0bb,0x3a9f01b2,0x3a949d28,0x3a8de9f2,0x39eb9b6f,0x3b32c615,0xba63521b,0xbb7fc732,0xbc162a01,0xbc71811c,0xbc24c5c9,0xbbfdad0a, -0xbbb2f32a,0xbc30273e,0xbc31506d,0xbbb73faf,0xbc0880c7,0xbc47936b,0xbc936b6d,0xbd2511f9,0xbd5588b9,0xbd6fd3ab,0xbd0819b6,0xbda17771,0xbd5b2d28,0xbaef3f63,0xbc8a475d,0x3aa8a58a,0xbbe6e55b,0xbc38f314,0xbc3b42c4,0xbc08dd44,0xbc1cadca,0xbb34187e,0x3a9dc4b2,0x3b541c8e,0xba95958c, -0x389658c9,0x3a2de723,0x3b651793,0xbb1ecc30,0xbb11b18a,0x3b51d453,0x3a922627,0x3b87d162,0xbb79441e,0xbbe24d77,0xbc3aadb4,0xbc8d3457,0xbc95abea,0xbc99076c,0xbcc8abbb,0xbca002da,0xbcac36fb,0xbcecadfc,0xbd0475cd,0xbd180b43,0xbd411409,0xbd805bb4,0xbc4ebefe,0x3b89fa3e,0x3cadb62a, -0x3ca02a06,0x3c979a80,0x3c8c3719,0x3c61637e,0x3c8b993c,0x3c65b537,0x3c5d2d89,0x3bd089e2,0x3bc1d1e3,0x3b8663d4,0x3b39f5b8,0x3b470f4a,0x3a211481,0xba875630,0xbb2c9310,0xba87c38d,0xbadb6e0c,0xbba175bd,0xbc06df7a,0xbc201c18,0xbc12f0f2,0xbc212b77,0xbc107cb9,0xbc00e2a8,0xbc104359, -0xbc16601f,0xbc29adf5,0xbc94f910,0xbd02adbb,0xbd0beed1,0xbd120937,0xbd06e6e4,0xbcaacb73,0xbb6af3b9,0x3cc19c76,0x3c8eeb01,0x3ca7d001,0x3cb45733,0x3c6c2ce1,0x3c993e2d,0x3c8dedd3,0x3c8795b7,0x3c5d2fc7,0x3c4b80b4,0x3c2ce56f,0x3c1cc358,0x3bcbe5b7,0x3b8ceb2b,0x3b64f122,0x3aeba3bd, -0xbb00ac67,0xbbb294bd,0xbba258f4,0xbc50855c,0xbc4c43cb,0xbc721f69,0xbc68f99e,0xbc80a713,0xbc78f50d,0xbc992b19,0xbca3732a,0xbcbca4bd,0xbcbde4da,0xbcd7eea2,0xbd0a1be2,0xbcd599f6,0xbc99479d,0xbc62aad0,0xbafb98cd,0x3ba890bc,0x3bbb3fe9,0x3c8ec6a3,0x3c5e5c29,0x3ca107da,0x3cab75e6, -0x3c949f67,0x3c682d4d,0x3c60db75,0x3c364cec,0x3c49b6f9,0x3b84c6d6,0x3c04933c,0x3b4e2221,0x3be54169,0x3ae06465,0x39e45497,0xbaf8221f,0xbb0a574a,0xbc2a204c,0xbc30c119,0xbc2cc72b,0xbc53c95e,0xbc5b60dc,0xbc6b48ba,0xbc6d001b,0xbc8c4e8b,0xbca62816,0xbcbfbb2f,0xbcb8c9bc,0xbcb55a8d, -0xbcb22f00,0xbc6c21f6,0xbc044314,0xbb1de4b2,0x3aa9f402,0x3a8f1d5b,0x3ad5657f,0x3c807623,0x3b8ebea1,0x3b74b874,0x3bcd4116,0x3b4a1e9f,0x3c60476a,0x3bb86965,0x3c0c0326,0x3bf74f57,0x3be71012,0x3af2bafe,0x3b173dfc,0xba9f2e31,0xba0ce9b9,0x3b74eaa6,0xbb36dfdd,0x3b8c7e12,0x3a1c272b, -0x3b0c8358,0xb9f75fba,0xb79df9ac,0xba85219d,0xbae1fa3f,0xbaf30ae5,0xbb0d7651,0xb99d564a,0xba19b4d9,0xbafdde58,0xbb336797,0xbbb8ab79,0xbb95654a,0xbb98f30c,0xbb5a1032,0xbadb7bf8,0xba181520,0xbb0c3371,0x3b234f81,0x3c3e65a4,0x3c9b92d3,0x3b214c65,0x3c10250d,0x3c9aeb25,0x3ca2af00, -0x3c97eac8,0x3c8fabd1,0x3c94bbd3,0x3ca3078d,0x3ca2dda8,0x3bbc83cd,0xbab55722,0x3c830473,0x3bd1ee3e,0xba5ced5b,0xbb4faccc,0xbb5d28b5,0xbb66efcf,0xbb7f1a88,0xbb8c4a50,0xbb8d25ec,0xbb939904,0xbbad264b,0xbbb83e83,0xbbc930ce,0xbbcc3781,0xbbb073eb,0xbbaceb3e,0xbb7203fe,0xbb2f3ea5, -0xbada2239,0xba87275a,0xba56b74a,0x3c61af63,0x3c2121cc,0x3c771af6,0x3be9c3d4,0xbba2ef2d,0xbc1d3083,0x3bf22406,0xbb2d86a9,0xbc43f730,0xbc53e155,0xbc5a4ddf,0xbc3020b6,0xbc42103d,0xbc73bffc,0xbc418620,0xbb56e690,0x3bb3494c,0xbc4461b7,0xbba18dda,0x3b9ce1ef,0x3c68cf20,0x3c331a40, -0x3c3c429d,0x3c39dd5a,0x3c403fb7,0x3c39f22d,0x3c27bc15,0x3c280f89,0x3c285ab2,0x3c246210,0x3c34b258,0x3c34b351,0x3c32a28b,0x3c350b47,0x3c2de839,0x3c16dd59,0x3c2531df,0x3c4160ef,0x3c664134,0xbc35eaed,0x3bf7bde9,0x3acfa863,0x3b908994,0x3b44508c,0x3abfbdc8,0x3bcbfe55,0x3b290a20, -0x3b06e36e,0x3b167e7f,0x3bccf91c,0x3a1f0b23,0xbc011ff7,0x3bc3d773,0x3a073275,0x3bc2f086,0xba3acb18,0x3c6e9671,0x3c75b3d7,0x3c6f73d7,0x3c7baff0,0x3c6bb4f6,0x3c581a03,0x3c4800b2,0x3c385c9e,0x3c3c9a40,0x3c47ad74,0x3c83edf3,0x3c8540ab,0x3c75b000,0x3c80f727,0x3c706da3,0x3c26185b, -0x3c332f81,0x3c5a9e59,0x3c5cc30a,0x3afc330c,0x3c4fff47,0x3c018ef1,0x3b8fc0e1,0xbaebeef3,0x3c164452,0x3a319dbb,0x3c220464,0x3b25e447,0x3c52d81a,0x3a60daef,0x3ba5d67f,0x3b33e19b,0x3bd96423,0x3bd5ba2d,0x3ba9292b,0x3bc654fc,0x3c5c8d40,0x3ca1ac95,0x3c859cb1,0x3c99f421,0x3c8ed1e4, -0x3c7ec4f4,0x3c2f713b,0x3c1bc61d,0x3c27c47d,0x3c3624a9,0x3c8691a4,0x3c959e7c,0x3c74bde4,0x3c84baeb,0x3c55298b,0x3bc7e5b5,0x3c243cc7,0x3c59bfe1,0x3c2fe223,0xbb1dd705,0x3befe557,0x3c79a3b8,0x3b4090c2,0x3a07478e,0x3c042766,0x3b7b69e9,0x3ba432fe,0x3bf74302,0x3bb46374,0x3b069600, -0x3bbfbf0d,0x3b4113a1,0x3beceae8,0x3bf018ff,0x3c2f7362,0x3c00f13a,0x3c3eef49,0x3cba12ee,0x3c927b41,0x3cad4e3b,0x3ca79293,0x3c94542c,0x3c1cf31b,0x3c019ef9,0x3c0571d1,0x3c47b409,0x3cacdec5,0x3cc16082,0x3c9adf34,0x3ca5228f,0x3c866a7d,0x3bad3431,0x3c0a7a61,0x3c69c5f9,0x3c9013e0, -0x3b9da5be,0x3c49febe,0x3ca4e4ae,0x3b8a0df0,0x3a2b2e7f,0x3bdb54a9,0x3b6b04ad,0x3b9996d4,0x3c2e93ab,0x3b21744d,0x3ad1f2e4,0x3b7e2761,0x3c015917,0x3c0b4ef3,0x3bed727e,0x3c910929,0x3ba54cd0,0x3c98db65,0x3cc14f00,0x3cad5754,0x3ccea350,0x3cb5f761,0x3c927003,0x3c113538,0x3bc2fd6d, -0x3c01d1e8,0x3c28f212,0x3cad62d1,0x3cc00967,0x3c71564c,0x3c95e26f,0x3c228a11,0x3a88854b,0x3bd22e22,0x3c80cf3e,0x3c5fae36,0xbc3bae29,0xbc6f4c4b,0xbc37f1a1,0x3b497faf,0x3c61bda6,0x3c2b495a,0x3c032b2e,0x3a662d05,0xbac8aec4,0x3b288412,0x3ba79d92,0x3b1c8e6d,0x3bfb5d8e,0x3c1dc905, -0x3bca4910,0x3c70672d,0x3c2f9203,0x3c91bc9e,0x3ca73c66,0x3c61ffbc,0x3c72989b,0x3be4b459,0x3c1d6712,0x3c0b23a0,0x3cafe677,0x3cbe0661,0x3c5877e6,0x3cdb6f9b,0x3cfa6828,0x3cdb252f,0x3ce28589,0x3d0b2174,0x3d28f8da,0x3d0242d7,0x3c5f8eaf,0x3d01b9e7,0xbc25c997,0x3b6ebe86,0xbb240578, -0x3ab112b7,0xbaacd7f8,0x37ee5806,0x3b20ef77,0x3b581b25,0x3b056291,0x3a02b068,0xb718eb9e,0x3b9ed3ba,0x3b89ca49,0x3c059139,0x3be80adb,0x3be04ad3,0xba0bb1b9,0x3bab88c8,0x3c8a3431,0x3c6ce3a9,0x3ca4912d,0x3c42c4ed,0x3c075b19,0x3b81daf4,0x3b12386a,0x3bd67239,0x3c436f16,0x3bf4f16a, -0x3bc44459,0x3c13ef5c,0xbba88b9d,0xbc3370ca,0xbbc1e7f0,0xbb3c7c8f,0x3b17bdf8,0x3c3d44b0,0x3bb8a340,0xba865774,0xbaae897c,0xbbdc6dbf,0xbbea224e,0xba606cb3,0xba97810a,0x3a0970a9,0x3a739cad,0x3aedcad8,0x3b5ae8d9,0x3ac3431b,0x3b8ddd8e,0x3bac2b75,0x3bbe3731,0x3b67825e,0x3b967760, -0x3c786b93,0x3c4de6e2,0x3c224aec,0x3c112567,0x3c68d1d3,0x3c8bec17,0x3c981cfb,0x3c8ca0c1,0x3c6cd31d,0x3c942cea,0x3c96c7f5,0x3cd4d28a,0x3ce3d68c,0x3ca4df10,0x3c857d30,0x3c0e1581,0x3a09c574,0x3b8a44a4,0xbab71118,0xbc446586,0xbbd8a5e3,0xbc634990,0xbc0df031,0xbbdcba4f,0xb98c1d47, -0xbb50851e,0xbb0c0938,0x3a6261c2,0x3aba4231,0x3b1a7cc7,0x3ae6a18e,0x3b76b538,0x3bab25dd,0x3bbd068c,0x3b88be17,0x3b4abf02,0x3c010ec1,0x3c529c3d,0x3c3061d5,0x3c00c366,0x3c74a935,0x3c8f2f15,0x3c95ef5d,0x3c6ac245,0x3c266de2,0x3c6285da,0x3c5d871c,0x3ca81c6a,0x3ce50814,0x3cf18cdc, -0x3d00c919,0x3cd45fc2,0x3c39abca,0x3c503dd2,0xb9481220,0xbc4a9e8b,0xbc7722ee,0xbc4b0723,0xbbd061af,0xbade28ab,0xba93d00b,0x3a3a56b9,0x3b0715b9,0x3b0671d5,0x3a23d346,0x39c119c8,0x3ba8d05c,0x3b55ae08,0x3b38d838,0x3b402711,0x3bc5d51d,0x3b400927,0x3bdb3137,0x3c42eb5f,0x3c52d7bd, -0x3c45861f,0x3c27ea4b,0x3bc9e27b,0x3b3873c3,0xbb2efaa6,0xbb19f3e9,0x392ca6af,0xbb974499,0xbb82ac7d,0x39e3f416,0x3b9d3e14,0x3c0b030c,0x3cce4ba0,0x3c4f95fc,0xbc359699,0xbd3cd2be,0xbd283c26,0xbc6d7c95,0xbc01205a,0xbc4ef4de,0xbc717f2c,0xbbfee241,0xbc183957,0xbc08a339,0xbb0075f8, -0x3b2036f4,0x3b85c06f,0x3b17d4ae,0x3a655cae,0x3b0dfd8b,0x3bc719ec,0x39a7076e,0x3a6cf3a4,0x3b5945ae,0x3bdc5c9d,0x3ae1c111,0xb9eae3ba,0xbb315b8f,0xbada69e0,0x3aebddfd,0x3ba7c114,0x3bee966a,0x3bbe3021,0x3c3e65eb,0x3c505d40,0x3c661fad,0x3c5b7a37,0x3c1be895,0x3bdbe136,0xbc1c0b76, -0x3b5e9c4b,0x3c218bd7,0x3bd1b98b,0x3c27f73b,0x3c3daccc,0x3c396be1,0x3c4c3811,0x3c6d6da3,0x3c6e7db2,0x3c4e4aa0,0x3c1372b1,0x3bee7e96,0x3bbddfda,0x3b87a705,0x3b98e672,0x3b51113e,0x3b63441d,0x3a9efeb5,0xbb1ca4a1,0x3ac2e069,0x3b847de0,0x3b921f0e,0x3b8fa213,0x3b80983e,0x3adc630a, -0x3ab5a041,0x3a58ad62,0xbab5b9ea,0xbbb8b9b9,0xba987f5e,0x395444ec,0x3bc4abf3,0xba6cfbf4,0xbba0ed06,0xbbe01f41,0xbaf398e6,0x3c641121,0x3c326faf,0x3c7a4bdf,0x3c90fb74,0x3ca86872,0x3caf98e7,0x3c971a60,0x3c9156fc,0x3c80cfd5,0x3c675f19,0x3c35bebf,0x3c2ae165,0x3c03c551,0x3bf85d84, -0x3bcebc23,0x3b89ff64,0x398cfbcd,0xbaf1f691,0xbb2b5026,0xbbe828b0,0xbb1f3461,0xbbb5b960,0xbbe1baaf,0xbbe7a816,0xbc05f350,0xbc096bfa,0xbc1bb792,0xbc1ac7bc,0xbc3ccfea,0xbc0e6558,0xbc00aad2,0xbbde60cf,0xbbc4ef38,0xbb8f3445,0xbaa50291,0x3b65e0b6,0x3c5173f9,0x3c8f4073,0x3c3b3757, -0x3c801332,0x3c747dc2,0x3c5fa85e,0x3c6e3021,0x3c842774,0x3c57149d,0x3c559ae1,0x3c1a740b,0x3c4abcc8,0x3c00f098,0x3c0d7e49,0x3b2c75bf,0x3b8d1bf1,0x3aff679a,0x3a144391,0xbbdc93cd,0xbae05003,0xbb5ed96b,0xbbcdc83a,0xbc0f4422,0xbc2d7b36,0xbc4664d9,0xbc5e655b,0xbc3d633e,0xbc3813ff, -0xbc2502bb,0xbc136036,0xbc15f283,0xbc0bfdec,0xbb6d6a9a,0x3afc31e2,0x3bcf1bd8,0x3c15b172,0x3b8ec6d2,0x3ba571f7,0x3901235e,0x3bb49298,0x3b969472,0x3bb95dd3,0x3bf327c1,0x3bb60467,0x3bdd3f5e,0x3b673734,0x3abf0e6d,0xb9b332b3,0x3a83edbe,0xbae533cb,0x39c32ae5,0x396861bf,0xbb02843b, -0x3b5a28d6,0x38999b55,0x3b9dbdea,0x3b24f9f4,0x3b06457a,0x3ad3f392,0x3a010531,0xb9b5d9d0,0xba6b6149,0x3967b44f,0x3b433093,0x3b8edb34,0x3bca6f88,0x3c161946,0x3c2bdfc7,0x3c1598cb,0x3bceca64,0x3bad5c96,0x3bb8414c,0x3bb2283d,0x3bd585f3,0x3b7b08d3,0xba0c1b2e,0xbac0c4aa,0x3b8fe01b, -0x3a66ba82,0xbab2fd99,0xbb3894ad,0xbb3449cc,0xbb22428f,0xbb66afcc,0xbbacc7b3,0xbbc4b8fa,0xb9df691b,0x3b7a8916,0xbb84f5db,0xbae7c269,0x3b070661,0x3b53ed67,0x3b219b36,0x3b01ab87,0x3aa9b379,0x3a4bc1cc,0x39f60178,0x37393c24,0x39079144,0x3a45e5cc,0x3a7c4015,0x3a8ce077,0x3aad6af5, -0x3acff533,0x3b2a8d83,0x3b738919,0x3b9b57a5,0x3bab9ece,0x3b9cc3d1,0xb9a21e47,0xbabba8fa,0xbbc9b3b0,0x3b9d0bfa,0x3c6a494b,0x3c737842,0x3b3820b7,0x3c34feb3,0x3c87869a,0x3c88655b,0x3c88b7ff,0x3c714072,0x3c74ab2a,0x3c8b3d16,0x3c6caa12,0x3c4331e5,0x3ba9d60a,0x3c6b9925,0x3c607bea, -0x3bd3f4d9,0xbb9130e2,0xbacef1fe,0xbb1010d8,0xbb2395ce,0xbb3222ad,0xbb3e9587,0xbb4de7cf,0xbb461e56,0xbb436d54,0xbb4e2b76,0xbb254222,0xbb0f384b,0xbb275709,0xbaeed4f0,0xbad368c0,0xbad0a882,0xbaee8025,0xbb0ef536,0xbaf2afe6,0x3caba448,0x3ba2861e,0x3c6f9674,0x3b9c6215,0x3bc4ac1e, -0x3c031f9f,0x3afdebef,0x3c082a76,0x3c107b4f,0x3c0de5ed,0x3b67215f,0x3bf83b96,0x3c675a0a,0x3b9acaee,0x3c1f1247,0x3bd5420c,0x3c695c09,0x3b027351,0xbadbae5a,0xbab013b5,0xbb43e20c,0xbb496c32,0xbb869198,0xbbb7d059,0xbbcc28d3,0xbbd32408,0xbbcf472c,0xbb7a4d65,0xbb399d74,0xbb86f403, -0xba962139,0xb997b472,0xba1900ee,0xb9995f6a,0xbb3ae1fa,0x38b8ec49,0x3c5508d5,0x3b6f9db0,0x3c6b1697,0x3ba6a8ee,0x3beda5d6,0x3aea6e30,0x3c070054,0x394adb62,0x3c4315b5,0xbae94d26,0x3bdd1f48,0x3b6d64d1,0x3bd330c7,0x3b7a833d,0x3bb808b5,0x3c21cdc6,0x3c3af98f,0x3bc154e9,0xbb5b7b1f, -0xba624800,0xbb9f2d7e,0xbb95f711,0xbbdaa934,0xbc0cb511,0xbc18a0e1,0xbc0abe49,0xbc1983de,0xbb92deff,0xbb38508b,0xbba1f581,0x37aeb5c8,0x3a8a253d,0x3a1054d4,0x392f037c,0xbb53d3c1,0x3a113c10,0x3c9644ad,0x3c4419dd,0x3c876e17,0x3b96aa60,0x3b307de9,0x3b8ead0f,0x3b62320a,0x3b746328, -0x3c00120d,0x3b095cff,0x3b8cd25b,0xba14f305,0x3bd9145d,0x3b8abe68,0x3b9e352a,0x3c1ac1bc,0x3c6d219f,0x3c433587,0xbb199b72,0xb8873518,0xbba28919,0xbbb24b9f,0xbc143b5b,0xbc44646b,0xbc655843,0xbc66ab12,0xbc665789,0xbbdfb159,0xbb783f04,0xbbfd32b5,0x3ab1660b,0x3b782d79,0x3a3bccfa, -0x3b641e5f,0xba539724,0x3a91a646,0x3c72c8c1,0x3c1807b2,0x3c889210,0x3b49c3ad,0xb9527893,0x3bb47624,0x3b765cca,0x3b94c5b3,0x3bdefe01,0x3b21c45a,0xba073e02,0x3b46e566,0x3b64711b,0x3bb04ab7,0x3bfb7444,0x3b80ffbc,0x3ca9a5df,0x3c1b4f86,0xbab9f8ad,0xba7459bd,0xbbd017ec,0xbbe3b982, -0xbc2e20b2,0xbc6dfbcd,0xbc8a9c52,0xbc804ba8,0xbc853399,0xbbe363d0,0xbb173cb7,0xbbd1cde1,0x3b789ad5,0x3b89a3d2,0x3ae51398,0x3ab03594,0xbbcc810b,0xbc53fcd2,0x3b96525d,0xb72f92f3,0xbc1cda9e,0x3c0d7037,0x3c308116,0x3c52193e,0x3be69428,0x398821e9,0xbb1d05e6,0x3b220dd1,0x3b85bc3a, -0x3b1c4dd6,0x3c081206,0x3ba662a2,0x3c3c801a,0x3b897819,0x3c3a7ace,0x3bd610c9,0xbc12c375,0xbbfc0a2f,0xbc320269,0xbba05f43,0xbbd07db1,0xbc107f3d,0xbbc41170,0xbbff2118,0xbccb497e,0xbc0bfe3b,0xbc08ee31,0xbc456d87,0xbbdde4c7,0x3aa7ad8c,0x3c976f6f,0x3b115ad7,0xbc8acf81,0x3c86c633, -0x3c8b57c6,0xbc217979,0x3c1d1bb3,0xbb8b8c05,0xbab00746,0x3abaf0b8,0x3a7bbf1f,0x3b6a59da,0x3b129aa9,0x3960aa38,0x39b2cc7a,0x3b393220,0x3b15e7c5,0x3b0c894e,0x3bdda982,0x3bb1920f,0x3c43e6f8,0x3c1a8d65,0xbb563dd7,0xbaa25a70,0xbc279dc2,0xbbb0560c,0xbb14c3f3,0x3b819c1a,0x3bc053b3, -0x3bcd6b8e,0x3b58bf7a,0x39ed6b1c,0x3b6c11bb,0x3c37c7e5,0xba5d5737,0xbbec8882,0xbc018223,0xbc4e4635,0xbc1fa968,0x3b53be77,0xbab5c282,0xbab1ada6,0xb9e7fd7f,0xbbe5619b,0xbbf164a9,0xbab99f73,0xba8cb631,0xbaab9701,0x3a7ec9be,0x39d3f609,0x3b1bfa11,0x3a91ef46,0x3b381e2c,0x3bd10749, -0x3bc8cfab,0x3b87a58d,0x3bb509b9,0x3ab4a1dd,0x39c12cde,0x3b3d824e,0xbb21f12d,0xbbb2d41f,0xbc18bfdf,0xbbf4b3cf,0xbc438165,0xbc2905b7,0xbbb23d38,0xbbf5ac2a,0xbbb5f927,0x3b486d96,0xbb6c9095,0xbbb2ba6f,0xbc3c2bd9,0xbc13994f,0xbb24f2c2,0xbb2398a3,0xba13de13,0xbbd2d067,0xbbffa49b, -0xbbd64058,0xbbc1b693,0x39a6b608,0xbb66d278,0xbb3434a6,0xb7983f7a,0x3973041e,0x3b050f40,0x3a5eb798,0x3b2befdd,0x3b9e61b3,0x3b969973,0x3af42b63,0x3bd56175,0x3bd29fb0,0x3a18b6f9,0x3b839b85,0x3a119f18,0xbb29f090,0xbbb519cb,0xbc00732a,0xbc609bc6,0xbc3e330a,0xbbb7ade2,0xbc06c7e8, -0xbc32d82b,0xbc25bf9d,0xbc2b211c,0xbbdbcfed,0xbbcf333c,0xbb18f9bf,0xbb88a4a9,0x3ab3e561,0xbbf19912,0xbc4c1445,0xbc019811,0xbc2bf067,0xbb65951c,0x3b26c3ee,0xb9ab1c4c,0x3b08156a,0x3b5e93b3,0xb9e1a349,0x3a56c497,0x3b3e6860,0x3b742460,0x3b9dc140,0x3baad63a,0x3baa8ae3,0x3bed2363, -0xba927f97,0x3a9c81a0,0xb9b8b2e4,0xbb73f02a,0x3a2e3c5e,0x3b4ddc80,0x3b0cb8b0,0x3aa4b111,0x3ad8bd05,0x3bbd6cd0,0xb98e794f,0xbb705a15,0xbc51176c,0xbc5f6a82,0xbc823356,0xbc94138e,0xbb966e5b,0xbd04ac48,0xbcf8cbde,0xbc24d3b7,0xbc9654fd,0xbbb16bbb,0xbc493a0e,0xbc6814f3,0xbc224591, -0xbc00ee1a,0xbc23c25f,0xbb765c7e,0x3958d1cc,0x3b6cb677,0x3af99c91,0x3ad98576,0x3aa082dc,0x3b1e428b,0x3b2d6f5b,0x3b95b0d0,0x3bcd2760,0x3b3eb505,0x3ba7a11b,0xb90d0b8e,0xbac93c3a,0xbb5dc4dd,0xbbd946f4,0xbace5872,0xbad07c9f,0xbbfa2f32,0xbb4ed21e,0xbbf1a7f2,0xbc852d71,0xbc969993, -0xbc9bbd1b,0xbcbc70f5,0xbcbeda1e,0xbc8efdc2,0xbb8a5c28,0x3c1ddbfa,0x3c101de6,0x3c076f77,0x3c292ffe,0x3c0b1f38,0x3c4c1a3d,0x3c08d0ff,0x3c35cf64,0x3b6bb237,0x3bbdb2ec,0x3b3ba26f,0x3b4e3cda,0x3b8a7f82,0x3b923028,0x3b9a15fe,0x3a31349d,0x3a993718,0xbaf87d2b,0xbabc453a,0xbb10f545, -0xbb0e0347,0xbb2b8412,0xbb518357,0xbb817ec7,0xbb8df967,0xbbd6a3d1,0xbc0cde23,0xbbd87880,0xbc0bd3bb,0xbc3f2241,0xbc8d32e4,0xbca3c608,0xbcb6740b,0xbc9d9b90,0xbc2be10d,0x3c83de37,0x3c547ebe,0x3c805b58,0x3ca2ce87,0x3c401ee6,0x3c8ba4ec,0x3c5d05bd,0x3c5bfd17,0x3c1d39d2,0x3c2dda76, -0x3c08ffb8,0x3c1ca21e,0x3bc2b787,0x3ba8681d,0x3b821381,0x3b6a13e3,0x39f0e333,0xbb53afeb,0xbacb7b38,0xbc0d25f5,0xbc0e9717,0xbc34841f,0xbc3e0ad5,0xbc56098e,0xbc63d60c,0xbc717732,0xbc70b527,0xbc813750,0xbc87fb3e,0xbc9c7d5e,0xbcc18c0a,0xbca3df52,0xbc8b6759,0xbc89e675,0xbbfa9e30, -0x3ad994db,0x3b99561c,0x3c90d1a3,0x3c5492c6,0x3ca3c634,0x3ca3f807,0x3c84ca91,0x3c3f3000,0x3c52409d,0x3c2673bc,0x3c64b0f2,0x3b9e97b0,0x3c003b58,0x3b9773b5,0x3bd4f2c4,0x3af45ba8,0xb945ae28,0xbaa5278a,0x394a739a,0xbbca0145,0xbc233031,0xbc195202,0xbc5024a1,0xbc522131,0xbc671950, -0xbc71c141,0xbc7e00ee,0xbc88db96,0xbc89faed,0xbc96e1b4,0xbca5e773,0xbcb6af23,0xbc908aab,0xbc475787,0xbc070c96,0xbad5df8b,0xbb64d42f,0xbb615e7a,0x3c0a213d,0xbb1ac5cd,0xbb0ac242,0x3a10a2d6,0xbaa577b8,0x3bd88145,0xb8f93ab5,0x3b88058d,0x3b6342bd,0x3b91b18a,0x39c53140,0x3a994830, -0x3a29f38b,0x3aa7548a,0x3b91011c,0xbaa50a8e,0x3bad22b8,0xbb5667a3,0xbb1ed44d,0xbb947610,0xbb9b7661,0xbbcf97bc,0xbbf4c6aa,0xbc01329a,0xbc1a17bf,0xbc0dac6f,0xbc146765,0xbc196208,0xbbf367a2,0xbc0424cb,0xbbe13648,0xbbbd7b97,0xbbb7513b,0xbbb305b1,0xbb881824,0xbba2c170,0x3ae5700e, -0x3c0e00ab,0x3c2808fd,0x3adfc58c,0x3bd6f5f9,0x3c36e820,0x3c44bd36,0x3c2a2aa7,0x3c127649,0x3c183b07,0x3c29f29e,0x3c26759a,0x3b907123,0xbb0d7952,0x3bde61cf,0x3b81d3e3,0xbafd3e5d,0xbbf71e3f,0xbbe054a3,0xbbf0f62c,0xbbfdfbb2,0xbc0474f6,0xbc0501a9,0xbc06c0c9,0xbc0c3718,0xbc06f839, -0xbc0c3460,0xbc1063bb,0xbc1019e6,0xbc1a49bf,0xbc0765c9,0xbbe44437,0xbbc1a882,0xbb9de7f9,0xbbfea47d,0x3b938932,0x3b80db23,0x3bf5e29b,0xbb3bbfc5,0xbbfca51f,0xbb0e25cc,0xbad35eff,0xbbd0c763,0xbbc8c431,0xbbbe1898,0xbba76a4b,0xbb51449c,0xbb6b82d4,0xbb9849a4,0xbb6b9ae4,0xbbe85550, -0xbb5bc72d,0xbb1d95dd,0xbbd705fc,0xbb41ee54,0x3bed2841,0x3b91f24d,0x3b8b34f1,0x3b8a0736,0x3b9031bd,0x3b898b49,0x3b679c3d,0x3b69bd9e,0x3b61542e,0x3b5378f9,0x3b6f0c04,0x3b712f9f,0x3b6389d6,0x3b5c3019,0x3b5be0d2,0x3b5ee60d,0x3b76173c,0x3bcaea3a,0x3b5b5304,0xbc0fa0e6,0x3b52d38c, -0x393013fd,0xb9ae9975,0xbb235160,0xb957971b,0x3b604ae1,0xbacd9b94,0xba09cf81,0xbb1ac841,0x3acb9ae5,0xbad5fc16,0xbba05b2a,0x38d11705,0xbb04242c,0x3abe04fc,0xbb6cda64,0x3b88e33a,0x3bddf4a3,0x3ba15a73,0x3ba7067e,0x3b8f195a,0x3b52e1c3,0x3acbc20a,0x3ace5414,0x3ae4c5ca,0x3b158239, -0x3b81eeb6,0x3b82d83b,0x3b56abb2,0x3b27bbba,0x3b360944,0x3b5ec4fa,0x3b78af44,0x3c00f9b4,0x3b924fc5,0xbb44bde9,0x3b94b152,0x3b1c9df4,0xb9037a3c,0xbb8fbbe3,0x3b7e7e24,0xbabb0846,0x3bcf55b9,0xbb5a6c11,0x3bd711a7,0x3a301d71,0xbaa27da2,0xba33cf43,0x3aada226,0x3ac7ac7e,0x3b0255b5, -0x3a76c5cb,0x3beaec19,0x3c1546a9,0x3b9ef3bb,0x3bb95638,0x3b9b493e,0x3b7f45d4,0xb969f636,0xb9ece18f,0xb819bb8d,0xba127161,0x3b208c90,0x3b2fb330,0x3a50f5ec,0xb9363496,0xb7b04585,0x3b0e6da4,0x3b68aa56,0x3c24ce8b,0x3b69f7c4,0xbb920ee6,0x3b3b8cb1,0x3c194bc9,0x3a570e8c,0xb97ba022, -0x3b5b9788,0x3b7680bc,0x3b9b23b8,0x3bc5c6c2,0x3bb85c15,0x39c5f57f,0x3b69aefe,0x39f4a711,0x3b849eaf,0x3b852920,0x3bc16699,0x3b507eec,0x3bde5301,0x3c363a4e,0x3bbf2717,0x3bacc991,0x3b8dbfa9,0x3a7a9a87,0xbbc5cd3c,0xbba9ed62,0xbb920471,0xbb09729a,0x3aca8e2c,0x3ae15597,0x39950d78, -0xbb48e887,0xbac5cf72,0x3b2cba15,0x3b5cec64,0x3c26ae1d,0x3c133884,0x3a5fe1a7,0x3c00f24c,0x3c56023a,0x3ae45947,0xb9e3454e,0x3bb44113,0x3b8acd5a,0x3b9cde3a,0x3c23f324,0x3b6370d7,0x3b1f74ff,0x3b2e723b,0x3bd46735,0x3bb9d12c,0x3b9b2fe4,0x3c702d03,0x3b3f4615,0x3c58b03d,0x3c4321a1, -0x3bb073bc,0x3bbe4565,0x3b8d1252,0x3abdcc62,0xbb8f2b07,0xbbb0ce38,0xbb9133e7,0xbb8dfaac,0x3a884a71,0x3903f1a1,0xbb6ed3a1,0xbbcf484f,0xbbd47062,0x3adbdb87,0x3b34f3ab,0x3be8e2f5,0x3a90501e,0xbc99ac71,0xbc93e645,0xbc8d1a88,0x38db8249,0x3c205233,0x3c31753a,0x3c1409d1,0x3ae2874e, -0xbb1947e5,0x3a9cb9a2,0x3b8ebfc2,0x3b525f9f,0x3bf4c2fc,0x3c022394,0x3b4d00dd,0x3bf27145,0x398bd66f,0x3b89d266,0x3be68e50,0x3be47c86,0x3c6006e4,0x3b91c317,0x3be08f94,0x3c1d173a,0x3cb2610f,0x3cab56a7,0x3a78b54a,0x3c4001a2,0x3c2467ba,0x3a6d9fb6,0x3b3e9458,0x3c46d46c,0x3cde42b5, -0x3c93cc1b,0x3bb05e29,0x3c303893,0xbc0119d7,0x3b91bd8c,0xbb387c15,0xba9111e7,0xbb0f2ccc,0xbaed4c65,0x3b10ddfb,0x3b59f869,0x3b490c32,0x3af3eb2b,0x3a578219,0x3b8b8a55,0x3b1ebc21,0x3bca60d4,0x3bb9a9ca,0x3be06e8d,0x3b46b14e,0x3ae52295,0x3bd55813,0x3acfb04d,0x3a4a882a,0x3af8861e, -0x3a8dfbea,0x37a6c737,0x3acf6696,0x3b9dcc7e,0x3a7c7ec2,0x3b178f67,0xba17cf02,0xbb174b76,0xbc20aa9f,0xbc4a282a,0xbc06da56,0xbc041ad0,0xbbb7203e,0x39e6cc12,0x3a8d98ec,0xba89d405,0xbaf64e39,0xbbadcb8b,0xbbfea99f,0xba7a8fa2,0xba9b7df3,0xb8a24b17,0x3afaeaf3,0x3b0599d2,0x3b370c75, -0x3b179742,0x3ac4cf52,0x3b94a1b5,0x3b48f6ad,0x3b0438ce,0x3a319b1c,0x3ba65042,0x3c0b9e73,0x3bbc0f39,0x3af3a33e,0x3b5923d7,0x3b6dc4e1,0x3af41a32,0x3bc6437e,0x3bb63106,0x3c158124,0x3c3e9d6a,0x3c4bfa9d,0x3bace431,0xbbede37d,0xbc43090b,0xbc4cbfe0,0xbc19088a,0xbb8bc6ae,0xbae69eb6, -0xbba4befb,0xbb81f1c1,0xbbd1e9b0,0xbbfdf38f,0xbbd399c0,0x3b2ac533,0xbb0035c5,0xba648f57,0x3a44eac8,0x3ab72104,0x3b0725e2,0x3adc0aa5,0x3b6247dc,0x3b6c4657,0x3b66b80e,0x3b7664b8,0x3a688bc7,0x3a1b94ea,0x3c350a41,0x3c072331,0x3ba2aefe,0x3bd7c956,0x3ba40303,0xbac81a13,0xbb06048b, -0xbb30a608,0x3b31a35e,0x3b310378,0x3b94c61b,0x3ac7c661,0xbb938af7,0xbbce6342,0xbc50943a,0xbbbd160d,0xbc1b8f3c,0xbc411745,0xbc1c1144,0xbc077601,0xbc26768c,0xbbfb9c59,0xbb614339,0x3a3d1aa9,0x3a8b00d0,0x3b2f302f,0x3ae2c536,0x3a535840,0x3a2f54bd,0x3b90238d,0x3b5c854c,0x3b87dfee, -0x3ba66ad9,0x3bcdefb5,0x3b822ca2,0x3bafb971,0x3bf1117b,0x3bbd0696,0x3b801a16,0x3b2e57a5,0x3af16075,0xbb0320f6,0xbb340296,0xbb9df202,0xbc3141d3,0xbc448348,0xbc606798,0xbc07e6ba,0xbc543078,0xbc5f08f7,0xbc66e907,0xbc5f249b,0xbcab8ef1,0xbd187f54,0xbd0741e9,0xbcc4dd5e,0xbc507d80, -0xbc898678,0xbc904fbc,0xbc1c04c9,0xbc347f03,0xbc25f342,0xbb9968d8,0xba2d15fd,0x3b3c11d6,0x3b436b03,0x3acc428c,0x3b0c1c4a,0x3b97df75,0x3795dfd6,0xb9be1600,0x3a05557b,0x3ba80dec,0x3b76f366,0x3b3b6a16,0xbad41bc1,0xbb8e1809,0xbc046b77,0xbbf079d1,0xbbe84094,0xbc478741,0xba8acdd2, -0xbb3570c5,0xbc597f0e,0xbc96e0ed,0xbcb66683,0xbcb5018f,0xbcbdea0d,0xbcb63b68,0xbc908240,0xbc355792,0xbb9c2c6f,0xbb9ac32a,0x3b060904,0x3baa4c7b,0x3bb4d662,0x3bbdbd4d,0x3b823590,0x3b9ac7d5,0x3b8b397f,0x3b98eca0,0x3b963d5a,0x3b6beb08,0x3b139467,0x3b67ddf0,0x3a622bba,0xbaa79ec9, -0x3b033a9d,0x3b90abcc,0x3b779825,0x3b89d538,0xbb0d753d,0xbb8a414f,0xbbcb5634,0xbb87a03f,0xbb82890a,0xbbb58b44,0xbb79016b,0xbb1fa531,0x3b90c4e4,0xba87303b,0xbbe0b137,0xbc59e084,0xbca34225,0xbbc30802,0xbb126b31,0xbaf9bdfd,0x3b51ab91,0x3bfc4ee5,0x3c397f1c,0x3c27eab5,0x3c2932e7, -0x3c0c85b3,0x3c13ae24,0x3c04dd78,0x3c13e57f,0x3beff8e4,0x3bd27888,0x3b930418,0x3b40fabb,0xb9fc56eb,0xbb2382ae,0xbb46e4ae,0xbbacd4d2,0xba485651,0xbb819ca5,0xbbab5b09,0xbc0146b8,0xbc1b5a23,0xbc348010,0xbc2cca2d,0xbc261b6a,0xbc257065,0xbc28fcfa,0xbc36a430,0xbc39484b,0xbc43f7cc, -0xbc3f81bf,0xbc3f8ce1,0xbc17736e,0x3b101cec,0x3baa95d0,0x3baadcbc,0x3bf10512,0x3c0da46f,0x3c02b055,0x3c060315,0x3c21db1d,0x3c14302e,0x3c15c5b6,0x3bc9af53,0x3bce0506,0x3ba99ea9,0x3b6c4ec1,0x3ab46d84,0x3a9a0000,0xb9e1d5ff,0xbaac203d,0xbbcf05f0,0xbb6c877a,0xbb581372,0xbbd4fa93, -0xbbfdbc4e,0xbc147844,0xbc2510b4,0xbc3e8b9a,0xbc3978e3,0xbc48d05e,0xbc51c10e,0xbc6bd5b9,0xbc8a2aa4,0xbc9c2528,0xbc7c387d,0xbc40de76,0xbc0e4399,0xbb49cfeb,0xbb773852,0xbb432d46,0xbbb98934,0xbb56b6dc,0xbbae9def,0xbb595af5,0xbb1d4311,0xba9f4faf,0xbadad755,0xbb82ec13,0xbb99a529, -0xbbaf3a25,0xbb89aed9,0xbbaa0a86,0xbbbe1c13,0xbbc59a97,0xbbbdc11c,0xbb7db062,0xbb93c76e,0xbab0350e,0xbb385554,0xbb775934,0xbb8f414d,0xbbbf0e8a,0xbbde23fb,0xbbf12390,0xbbeadf93,0xbbbd6e3e,0xbbaf0238,0xbba5858b,0xbb3626a5,0xbb52de52,0xbb429901,0xbb0e26f4,0xbb2bfefd,0xbb62c010, -0xbb0737a0,0xbaa639b9,0xbbafe364,0xbbccfeb7,0xbb3674d7,0xbb920ea0,0xbbd65a1f,0xbb8b504f,0xbb9765f4,0xbb89cc0b,0xbb7cf8db,0xbb93b8ff,0xbbb21a0b,0xbbbd6448,0xbc00c07f,0xbbb30130,0xbb9fc1b3,0xbc0be99a,0xbbe1c9b4,0xbb4ac619,0xbb80fdb8,0xbb8f4d74,0xbb9a5878,0xbba0e866,0xbba45e6e, -0xbbacafb8,0xbbb7ba85,0xbbb61082,0xbbc26a0f,0xbbcf7c1c,0xbbd295e4,0xbbe66908,0xbbc7e116,0xbba23fae,0xbb88535b,0xbb4a5cde,0xbbf1b4ee,0x3c11b7b7,0x3ba7cfdf,0x3b5cd368,0x3c40bf40,0x3c3cc025,0x3b636cad,0x3c1ea92e,0x3c283eac,0x3bbc22e4,0x3ba934e2,0x3b8dde54,0x3b5ada57,0x3b51282b, -0x3b38cef7,0x3b355828,0x3c30ccab,0x3c34df0d,0x3ae31d4a,0x3c28ac82,0x3c340b32,0x3b855a64,0x3baff40a,0x3bb79918,0x3bac21de,0x3bae8992,0x3ba7bbb0,0x3b992950,0x3b9a79c3,0x3b9afc3e,0x3b93b8ff,0x3bae9508,0x3bb2e532,0x3bb33900,0x3bc460cf,0x3bc3cf8f,0x3ba62c23,0x3bae0938,0x3bbc6001, -0x3c16b205,0x3c4d8216,0x3bf67df1,0x3c27af2e,0x3bf07632,0x3c11db9a,0x3bd87331,0x3ba34a10,0x3c263ed0,0x3c078010,0x3c30632c,0x3bfd1dd4,0x3bed5f32,0x3bd48a69,0x3c083d9b,0x3c170b8f,0x3c0c38c9,0x3c47f8e4,0x3c3b557e,0x3beb0a2e,0x3c090099,0x3bf7e41b,0x3bf2199c,0x3bd8e070,0x3bcd9fb5, -0x3bb13af1,0x3bb41b09,0x3bb3e639,0x3c06f084,0x3c1104ad,0x3c0d22ca,0x3c2feeb1,0x3c2852e4,0x3be0cf26,0x3c00f823,0x3bae7be0,0x3c0a86df,0x3c5d71cf,0x3c2239dd,0x3c4ad91e,0x3be88dcc,0x3be56b4d,0x3ba90d91,0x3c10f21a,0x3bbed98a,0x3c4a02bb,0x3be1f716,0x3bd3e4ae,0x3bfea0d7,0x3be848ae, -0x3be3c3b7,0x3c1a6284,0x3c19d09c,0x3c4da4e8,0x3c331bbb,0x3c06ba4e,0x3c28debf,0x3c0d8b8e,0x3c0cb913,0x3bda4376,0x3ba3acb0,0x3b8a503d,0x3b9c4514,0x3b940903,0x3c1256ac,0x3c3333b2,0x3c21fa29,0x3c5f5dd8,0x3c489855,0x3bd7066d,0x3c0c74b8,0x3b9fcde5,0x3c0adc49,0x3c814a5e,0x3c4034e1, -0x3c602190,0x3b98198e,0x3b21f902,0x3bc46d04,0x3b958596,0x3bbbaf35,0x3bd532d3,0x3b881299,0x3bd94ac6,0x3aa4d69c,0x3bd10d69,0x3ba7f477,0x3bf2d0a1,0x3c2bbe12,0x3c6c9c96,0x3c7a8d44,0x3c219dc3,0x3c38ba32,0x3c279a55,0x3c30403c,0x3c131d8d,0x3bb9cf9c,0x3b614604,0x3b78eab1,0x3b98bd59, -0x3c34b066,0x3c7402a7,0x3c54a441,0x3c9eb9fb,0x3c87daf7,0x3bc1f446,0x3c2a93ab,0x3bbaf6c0,0x3bf9fe2d,0x3c807ca7,0x3c3fb602,0x3c70a6b7,0x3b9338c0,0x3a703763,0x3b853f6e,0x3b930a7b,0x3bd32573,0x3bdeebb0,0x3b595e9e,0x3a906b1d,0x3b320e33,0x3b9cb5c3,0x3bc8f453,0x3c0a303d,0x3bc7d892, -0x3c928afb,0x3c7bcf9f,0x3c33d0f2,0x3c666e54,0x3c48485a,0x3c327733,0x3c008f9c,0x3b46bc55,0x3ac69f06,0x3b2f4045,0x3ad494d0,0x3c4a932b,0x3c844e3b,0x3c4e7a52,0x3cb27f73,0x3c88cfad,0x3bb77c65,0x3c14d001,0x3c52bfe6,0x3c154a14,0x3c1955c7,0xb82fa9c7,0xbc2054f7,0x3b7d7996,0x3c27fe2b, -0x3c5604a1,0x3c365bea,0x3b49d4f8,0xbb267ae9,0x3b28fccf,0x3b668d9e,0x3b81d81a,0x3c0f971c,0x3bd3fe1b,0x3c1fcae2,0x3b995e41,0x3c2d4176,0x3c296c24,0x3b6efb24,0x3b2d70c9,0xbad7c76f,0x3b0017f4,0x3b1a121a,0xbb1838bb,0x3c283fda,0x3c17c6ea,0xbbacd4da,0x3b87d3de,0x3c067c90,0x3c883667, -0x3c6ec581,0x3ca2451b,0x3cfdd787,0x3cae55ad,0xbc4dfd3f,0x3baa03f4,0x3ca6447e,0x3be2236f,0x3bf936b2,0x3b7b70cf,0x390560cf,0x39fa9e32,0x3aba5e13,0x3b949d74,0x3b97413d,0x3ac70a9a,0x3a813b1c,0x3b61dc29,0x3b85f9a6,0x3bac599e,0x3c1438fa,0x3bfbbb0b,0x3c1bf29d,0x3c1c0ea2,0x3c3138d4, -0x3c7171c7,0x3c485f4f,0x3c045f35,0x3bd2cc9a,0x3bcbaabe,0x3c1b55a2,0x3c15eec5,0xba449b02,0x3bbf785b,0x3bcf113f,0xba616b8b,0x3b9b1e77,0x39d2a36f,0xbbe821bf,0xbbe73060,0xbc0b70dc,0xb986957d,0x3b66a34b,0x3b3614ab,0x3b7dd316,0xbb244be9,0xbbb8e0b5,0x399d8384,0x39854099,0x38b2b94c, -0x3b0cf563,0x3add49c1,0x3b423aff,0x3ad150d2,0x3b969761,0x3bf4d1cb,0x3bb51396,0x3bc997bc,0x3be5e749,0x3ba54a1b,0x3bfdeb94,0x3c27413e,0x3ba9d707,0x3c0afc7c,0x3bf6393b,0x3c16becf,0x3c06e91b,0x3bcd880f,0x3ac1aa6f,0x3bc055fc,0x3c76175a,0x3cc425a1,0x3cad7752,0x3c856b12,0x3b97c252, -0xbb368347,0x3bb5d146,0xb9df82e5,0xbb237c85,0xba7c4a2b,0xba9d7a49,0xbb8ce178,0xbb94c8fa,0x3b6baf7d,0xba79a896,0xba6ead90,0x3ac15562,0x3ab59158,0x3b1d317b,0x3ad96eff,0x3b417d35,0x3bde14c9,0x3bb847c6,0x3b6f93c1,0x3bdac7e5,0x3c0a3465,0x3bcd3152,0x3c25c90c,0x3bce5d29,0x3c396dee, -0x3c497a81,0x3c0cac64,0x3c3146f7,0x3c274143,0x3bef9a93,0x3c09b61f,0x3c3cb1ef,0x3c92399d,0x3cc83a6f,0x3ce88851,0x3ce142a7,0x3c556b7c,0x3c52dddb,0xbb7ffa5b,0xb868876b,0xbba14c44,0xbba4178e,0xbbc10cc4,0xbb485132,0x3b6cc1ff,0x3a406747,0x3b2fa069,0x3b60c675,0x3a64b17a,0x3ad029dd, -0x3b84813c,0x3ba72fbb,0x3bcd7d2c,0x3be3396c,0x3bf946de,0x3c068e87,0x3b0c9dbb,0x3bf7b890,0x3c212205,0x3c24b954,0x3c33a4f2,0x3c22a142,0x3b90e3a5,0x3c049e86,0x3bf57f95,0x3b961a4f,0x3accac3e,0x3a93c1ab,0xbbacce7b,0x3c6f4229,0x3cb29261,0x3ccd6fa4,0x3cbe10d6,0x3c676398,0xb9d8d9ab, -0xbc8e0e83,0xbc5913af,0xbc39fd38,0xbc4099f6,0xbc32d4b4,0xbbe0ce09,0xbbc3d139,0xbbfcb325,0xbb720216,0xbace0239,0x3b1a5f21,0x3b7d5b45,0x3b393148,0x3b40f69a,0x3b692e19,0x3bc99ca5,0x3c02eba5,0x3bbc0283,0x3bc69bad,0x3bcc0541,0x3b375e1b,0x3acf48cd,0x3b32eb99,0x3bd8f2d5,0x3c0c41b1, -0x3c32fbc0,0x3c5b6d55,0x3c6ea747,0x3c32b539,0x3b40958a,0x3b972a87,0x3bb50c83,0x3b97cb95,0x3c45a565,0xbc1efa1f,0xbbeafeb3,0xbbbff3e2,0xbb51a17e,0xbacc8088,0x3b6bb5d1,0x3b8d339e,0x3b7900da,0x3b03f7d3,0x3b9eb4ac,0x3a33e5e7,0x3bbb6641,0x3b9eef52,0x3bad2a5b,0x3ba0e477,0x3baa425b, -0x3bce3966,0x3ae040a5,0x3a4ed506,0xb971b0b1,0x3b83dd37,0x3bbc3fb6,0x3bbe35f0,0x3bb09180,0x3b992a0c,0x3b3ee22e,0x3a8bc131,0xbb030106,0xbbb07f07,0xbbbd44cb,0xbae8c5f9,0x3c1f089e,0x3b914e59,0x3b23fbdc,0xbaea0ea6,0xbbd4187d,0xbbf3b918,0x3a663556,0x3b74c075,0x3bbb28da,0x3c37c152, -0x3c07209f,0x3c3474c8,0x3bfa2092,0x3c019714,0x3bbe646b,0x3c00747d,0x3bcebec6,0x3bfcc380,0x3ba53681,0x3b9e4ede,0x3b55b386,0x3b73b9fb,0x3b08ed40,0x39fc5c41,0x3ac3473d,0xba7e9d47,0xbad09c75,0xbb6f850c,0xbb8ad1d4,0xbbb4747a,0xbbf8728e,0xbbd8237d,0xbbcf1fd7,0xbbaf218a,0xbbe05ae1, -0xbbdb3382,0xbb7a8db4,0xbbc07619,0xbbf1e1b6,0xbc23c476,0xbbfa8d8b,0xb9e982c3,0x3b7a1d7e,0x3c1aa323,0x3c04f2d1,0x3c3e869f,0x3c3641df,0x3c1f0f83,0x3c0ef489,0x3c2cf923,0x3c185d0e,0x3c5b7bf1,0x3be6f38a,0x3bc5a329,0x3bab2dfa,0x3b735fec,0x3b17ca3c,0x3a1bfade,0x3803a5c6,0x3aab7e3c, -0xba930ce1,0xbbc8ee47,0xbbccdfc2,0xbc1591ee,0xbc23744a,0xbc38b513,0xbc49c79c,0xbc289d76,0xbc14a3f4,0xbbe0d8e2,0xbbfdf2da,0xbc1d2230,0xbc495cc8,0xbc36a8bf,0xbc0a76c4,0xbbed0ac9,0xbb004e6d,0xbaf0f6b8,0xbaeafabc,0x3a01f28d,0xbb0aaa75,0xba9b1048,0x394e1524,0x3a5aeb55,0x3a88fb33, -0xba81fbe5,0x3a2cb077,0xb942cb2b,0x3acbd0eb,0x3a93c9de,0x3aa264d8,0x3b136828,0x3aa77885,0x399418f2,0xbafbe357,0xba9f0db1,0xbc04adb9,0xbc038ac1,0xbc0c9e0c,0xbc12a056,0xbc2194b8,0xbc2b0e40,0xbc319f32,0xbc453539,0xbc3c122b,0xbc30fb84,0xbc231b1b,0xbbcc3c22,0xbb718389,0xbb412fa5, -0xbad1dddc,0xbb047145,0xbb1ece88,0xbb4deb68,0xbb244d4f,0x3ad96365,0x3b09b46c,0xbad7212a,0x3aeb4c42,0x3b1c9583,0x38e01438,0x39379a60,0xba0dde9a,0xbabe2d5e,0xbaf82ed4,0xbb1eda2d,0xbb31b822,0x3ab72565,0xb98a026c,0xbb747e91,0x3982275a,0xba45f9c6,0xbbb690c2,0xbba0550e,0xbbb733a9, -0xbbc5a05c,0xbbd2dd73,0xbbd95d50,0xbbdaa041,0xbbcf4c8a,0xbbb36622,0xbbb069d6,0xbbad9e2a,0xbbbb5de4,0xbbd49c4b,0xbbc99250,0xbba85b57,0xbb93816f,0xbb6f58ea,0xbbdc53c4,0xbb7785d3,0xbb1144b0,0xbb3f6002,0xbbd70592,0xbaa65171,0x3c0db4df,0xbbc44007,0xbb149cd7,0x3bc76414,0x3bef408c, -0x3c0af660,0x3c0973a8,0x3c0ec279,0x3c25bccf,0x3c09f3b9,0xbb1c6690,0xbbc3b35f,0x3c264d1b,0xb822b7ab,0xbb9a7073,0xbb1d5c27,0xbb240af4,0xbb57c9bd,0xbb59be0a,0xbb5a8492,0xbb58d52c,0xbb5c0ec5,0xbb5b9830,0xbb67547d,0xbb710f6d,0xbb770915,0xbb711dc2,0xbb824507,0xbb81d277,0xbb6bb87c, -0xbb2aa850,0xbb327c07,0xba8d761d,0xbbcac934,0x3b51cfab,0x38cab233,0x3b723254,0xbad738f9,0xbb436905,0x3aa999fc,0x3a3ae989,0xba307798,0x3a95f5d6,0xba9b4f14,0xba518703,0x38cab3ed,0x3b832563,0xbb164d60,0x3a54c843,0xb7c811aa,0x3a622aa3,0xbb8fb757,0xbb23e66b,0xbb8cda7c,0xbba806b1, -0xbba96a9e,0xbbc320a1,0xbbf817a9,0xbbecd566,0xbbefa926,0xbbe3facc,0xbbe63f8a,0xbbdf0d87,0xbbec5902,0xbbf944df,0xbbd40d04,0xbb540d31,0xbb3b259c,0xb9c4b85d,0xbb72dfa0,0xba5e1de3,0xbb0aa87f,0x3accc750,0xbace9317,0xbaca7b59,0xbab313da,0x3a4c04b4,0x3abf1204,0xbacba1d3,0xba137384, -0x3b41db98,0xbb78d5a6,0xb9f7d7d4,0xbac11723,0x37be653b,0x3b170fa7,0x3a356074,0x3a0585b6,0xbb768299,0xbbb6fec3,0xbbfae956,0xbbec1564,0xbbedf7fb,0xbc15d960,0xbc137b6b,0xbc11e67d,0xbc247027,0xbc17ca88,0xbc25c1f1,0xbc328699,0xbc373bb5,0xbc0c797c,0xbb04b49e,0xbb184aa5,0x3b0ab7e8, -0xbb6c5724,0x3a069ef7,0x3aa2ae59,0x3bc3d9ec,0x3a1df69b,0x39bf1e86,0xb9e40af6,0x3b5b0084,0x3b8b8d3c,0x3ba5d41d,0x3b9ceaf3,0x3aa4dc9d,0xb98bd647,0x3a208b80,0x3ab29e99,0x3b304aae,0x3b4eeff3,0x3b578361,0x3b60cd84,0xbb4b21c5,0xbba49fed,0xbc224796,0xbc2168b8,0xbc56150c,0xbc84a0bc, -0xbc757ddf,0xbc6ab361,0xbc5c0ecb,0xbc5fccc7,0xbc6efd96,0xbc6e854c,0xbc84cc23,0xbc39e7a6,0xbae5826e,0xba4f23ae,0x3b284104,0xbaa0e592,0x3b13c2ea,0x3b84b493,0x3bc4a2bb,0x37cf32cc,0xba18529f,0x3b517aa0,0x3b92fa2f,0x3bade5b1,0x3bedd1b9,0x3b8f3e6d,0x3b113c37,0x3a63f0ee,0x3b7a8999, -0x3b5a5bd8,0x3b9d0110,0x3beeeb4e,0x3be519e0,0x3b9773c1,0xbb34dcb0,0xbc0af47c,0xbc5317b7,0xbc41c5e5,0xbc4dc5af,0xbc66c968,0xbc644b11,0xbc65fb23,0xbc71b6fe,0xbc69b2c9,0xbc88d5eb,0xbc8f3234,0xbc9d1322,0xbc5ee248,0x3849c81a,0xb987a0bb,0xbb3e35e0,0xbc1ddd00,0xbc54b192,0xbc44dbf2, -0xbc6812a8,0xb99d5181,0x3b9002d1,0x3c20c7b1,0x3c273fb5,0x3b6c5bd0,0xbb266b95,0x39798461,0x3b43fc59,0x3ba682fe,0x3be339f2,0x3baa093b,0x3b561889,0x3a95122e,0xbb5ece90,0xbbd0a837,0xbbef1f68,0xbb184495,0x3b772530,0x3ab63683,0x3aa6fa28,0x3b73f76d,0x3c272aa9,0x3be81b7b,0xbc5095a7, -0xbc2559a0,0xbc64ea16,0xbc7c20ac,0xbc611a64,0xbbcf9976,0x3c15ad6c,0x3a4f8d43,0xbbe60990,0xbc4aacba,0x3bd22f73,0x3bb1f663,0xbb3b8b32,0xba2b913e,0x3aafa005,0xbb443040,0x3abb392f,0x3b7ab5b6,0x3b91c29b,0x3b22c802,0x3a9705e7,0x3b4e0b89,0x3b1e6712,0x3b8e4d4f,0x3b93b09d,0x3ba1d813, -0x3bf08195,0x39e570a4,0xbb819440,0xbc00928b,0xbc883fbe,0xbc1f005a,0xbbbef701,0x3a932725,0x3b3ccc37,0x3b85fa09,0xbbfc0a3d,0xbac890d1,0xbba597c0,0xbc895479,0xbc6470da,0xbc474320,0xbc039ba5,0xbc22dfd3,0xbc2f7119,0xbc2becca,0xbb25bb63,0x3a3c770f,0xbab326c7,0xbb153b75,0xbbcb33eb, -0xbacb58d9,0xb9fc76ac,0xba6aca7e,0x3b30a73f,0x3a946518,0x3adfd852,0x3b53b4c0,0xb9395d2b,0x3b8465f9,0x3ab30561,0x3a0193c2,0xbae003dd,0xbb5f68dc,0x3b370614,0x3aadf0e3,0xbb953891,0xbbdf65a9,0xbc1c2f4d,0xbc4da779,0xbc01a449,0xbb9e4dcc,0xbb156341,0x39eb2e2b,0xbb81d198,0xbc8e2b3f, -0xbcd14c1e,0xbce67ca8,0xbcbf9cae,0xbc64844e,0xbc06e8af,0xbafd69f5,0x3a33f9e4,0xbb1cc855,0x3a689e88,0xbb959234,0xbba86d0b,0x3b3d1fd8,0xba8d38c7,0xb988bcf5,0x3a46612e,0x3a3a7d8a,0x3ab4d0ef,0x3ae2307f,0x3b1010de,0x3b0e7c44,0x3a905511,0x3ac59cd7,0x3a84d4b7,0xbac90207,0x3b8619b7, -0x3b40217e,0x38aca8ce,0xbb957de3,0xbc16d520,0xbc938297,0xbc7d119b,0xbc565d70,0xbc213d93,0xbc1245f1,0xbc3cf6e9,0xbc9e6c4a,0xbce1e783,0xbcfd4ff5,0xbd0b5c15,0xbc7c897e,0xbca58626,0xbc3f7330,0xbbcbae2b,0xbb3c376f,0xbc00c106,0xbbe6ec20,0xbb732423,0x3a1ba08e,0xb9a000e8,0x3af37808, -0x3a9457bd,0x395a50f2,0x3a644a53,0x3b427f62,0x3b51dac3,0x3b991ab3,0x3bb03d78,0x3b8d3fe7,0x3b9a73a6,0x3aa41b32,0x3a33c9e8,0xbb11dd4a,0xbb839635,0xbb8f727e,0xbb3da73d,0xbb6e0de8,0xbb8bfd83,0xbc006f80,0xbc80cb17,0xbc538436,0xbc76e166,0xbc689b34,0xbcbd4b05,0xbce263b8,0xbd209609, -0xbcdfebca,0xbd02a27d,0xbc910750,0xbc1dcadc,0xbcc0f8d2,0xbc5f3b1a,0xbc64ea59,0xbc5bedf2,0xbc1d445b,0xbc0d70a5,0xbc150718,0xbbb751d3,0xbb6a7863,0x3a63b72b,0x3b47b22c,0x3ae54c2a,0x3b0681c5,0x3b2c0e4b,0x3aa11f7a,0x3a3644dc,0xba082aaf,0x3b34b583,0x3bbea8d4,0x3b434fe5,0xb9f63098, -0xbb9b1dea,0xbc32e856,0xbc45cd32,0xbc66ff43,0xbca47624,0xbc51d8a1,0xbc77ce59,0xbce1a090,0xbd0d738d,0xbd17173c,0xbd159a05,0xbcfcc5e1,0xbd02577d,0xbcec745d,0xbc901f0c,0xbc4e8ff5,0xbc360192,0xbb07be25,0xb9744154,0xbb399c3e,0xbb28b856,0xbb1a5db1,0xba762cff,0x3b0aaf18,0x3b7db031, -0x3b8107f1,0x3b1a4f93,0x3a78f6eb,0x3ac3e7f7,0x394d961f,0x3a7cf55e,0x3ab6b35c,0x3b4d719d,0x3accdc14,0xb980ec09,0xbb803639,0xbbbe65a5,0xbbdb4e1a,0xbbd8c7e3,0xbbc78ddc,0xbb82a8b6,0xbc0d684e,0xbc2991e2,0xbc18df0c,0xbbe93442,0xbc252f5a,0xbc952bac,0xbcd7cdb2,0xbca3b509,0xbc105741, -0xbc46ad20,0xbbdf56a5,0xbad6a11e,0xb9accb8c,0x3b12c9fa,0x3ae4c0c3,0x3afcf5f3,0x3b4dd16f,0x3baca606,0x3bc5c730,0x3bc98144,0x3b880503,0x3b1a487a,0x3adbc456,0x39d0d228,0xbaa1f653,0xbb0f7e3a,0xbad9b390,0xbb047f2a,0xbb3c4376,0xbb8d821d,0xbbcd691b,0xbc071d59,0xbc1ecc61,0xbc2b7084, -0xbc312b80,0xbc15a866,0xbc4a61de,0xbc620030,0xbc7b4f16,0xbc6a1ade,0xbc68e442,0xbc89c364,0xbc7c91cd,0xbbe4bafa,0xbbe13f13,0x3a6541be,0xb9959503,0x3b5266a4,0x3b84d7f1,0x3b52160d,0x3b65a9ab,0x3bb5225c,0x3ba5c6b4,0x3bca39d8,0x39b59ed3,0x3b40c868,0xba218266,0x3acc8908,0xba8a38e5, -0xbaf1d67e,0xbb41f69d,0xbb701c06,0xbbe98f87,0xbbd13137,0xbbf5a7fa,0xbbfeeedb,0xbc0bab6b,0xbc10661a,0xbc224e84,0xbc30bd74,0xbc4f4140,0xbc779679,0xbc846379,0xbc92d66c,0xbca46bff,0xbc9867a1,0xbc8d46e9,0xbc7c1c93,0xbc3079c5,0xbbf2a736,0xbbd7404e,0xbb2aed37,0xbbcc62da,0xbbf0b2d9, -0xbba797da,0xbbc121b6,0xbaa0b60b,0xbba5a6a5,0xbba045f3,0xbba37164,0xbb87b310,0xbba81fdf,0xbb8fd2c6,0xbbf9b9be,0xbc05fa10,0xbbd0a299,0xbc1d4435,0xbbf69213,0xbbfe1264,0xbbf01907,0xbc1a719f,0xbc247777,0xbc3b44dd,0xbc4aa8b1,0xbc5378c3,0xbc5e7f61,0xbc548d8d,0xbc500f61,0xbc6709e7, -0xbc5fe46f,0xbc7a88b4,0xbc56d794,0xbc1cc417,0xbc127545,0xbc1650ac,0xbbff7de3,0xbc00dad2,0xbc0e0c1a,0xbb97db94,0x3a49cc42,0xbc069594,0xbbd18517,0xb9839152,0x3a1ba79e,0x3a326be8,0x39fdf866,0x39e8f181,0x3a5ada16,0x3a6a9755,0xbbfe4771,0xbc1f92de,0xba29815d,0xbbf6faa4,0xbc23a7e4, -0xbc010abe,0xbc0bfbdb,0xbc0fff80,0xbc109915,0xbc11cc14,0xbc1159db,0xbc11fb81,0xbc1a7e27,0xbc2048d3,0xbc2d051c,0xbc329ee5,0xbc308c8f,0xbc3e1dcb,0xbc350cc8,0xbc288ac3,0xbc214f6f,0xbc112342,0xbc6e37cb,0x3c5366dd,0x3c0e013c,0x3c346ce0,0x3c2a3f84,0x3af9fe42,0xbbd89d88,0x3c1c5ce2, -0x3b46d71a,0xbbcdf821,0xbbe136e6,0xbbf9bd65,0xbbe01319,0xbbef3578,0xbc1c995b,0xbbf7adec,0x3b3e398c,0x3c143aa4,0xbc07a879,0x3a9e1eb4,0x3c055dd4,0x3c2a722f,0x3c16f691,0x3c224877,0x3c1f62d2,0x3c25eb68,0x3c239dc6,0x3c19dfc6,0x3c18b495,0x3c17f508,0x3c1652f5,0x3c1f2df9,0x3c1c9838, -0x3c1fd093,0x3c210027,0x3c1dd16a,0x3c09940f,0x3c14e584,0x3c316750,0x3c618152,0xbb097039,0x3bdd6ca3,0x3b228447,0x3bbf5d70,0x3bca81a1,0x3b2991c2,0x3bc61f29,0x3bd2bf94,0x3b8b435b,0x3be4b8f4,0x3c04b080,0x3b566386,0xbb54d43e,0x3beadcc2,0x3b8d7a32,0x3bda79fe,0x3b849771,0x3c600239, -0x3c45c6d2,0x3c523982,0x3c587078,0x3c53e507,0x3c4c1f14,0x3c516c9b,0x3c4774cd,0x3c4de264,0x3c5567b0,0x3c6c7e7c,0x3c6ada02,0x3c74bfe8,0x3c76ae51,0x3c62ff4c,0x3c1d1bd5,0x3c379ee7,0x3c35c118,0x3c42a55c,0x3bda6ba7,0x3c3706dd,0x3bbda3d8,0x3ba8552c,0x3b164755,0x3bc79eff,0x3b9ec0a2, -0x3c18e9c1,0x3bcc2d6d,0x3c4fd6ed,0x3b882065,0x3bdf3f44,0x3b8c4951,0x3bd6edc3,0x3c0f340a,0x3bb55cc1,0x3bfb14ab,0x3c2ef399,0x3c74efca,0x3c70638e,0x3c82c091,0x3c8266d7,0x3c776877,0x3c57a504,0x3c4e787a,0x3c4f02db,0x3c622b78,0x3c7d378d,0x3c86531f,0x3c82fc44,0x3c87a16c,0x3c669958, -0x3bea9226,0x3c399764,0x3c476d1b,0x3c367f33,0x3b915a30,0x3bd3a7d9,0x3c059674,0x3b3c4795,0x3aa72e5e,0x3badf5dc,0x3b8fc417,0x3bcf42a8,0x3b9fb15f,0x3bd8083b,0x3bcf84c5,0x3b388f46,0x3b5fab57,0x3b9cf246,0x3c0104bd,0x3c0994c5,0x3c0b7b50,0x3c384229,0x3c87c07e,0x3c7df6e1,0x3c91cb4d, -0x3c9b8ce3,0x3c990e5f,0x3c761544,0x3c66172d,0x3c711704,0x3c9481c4,0x3ca05595,0x3cb29f57,0x3cb60316,0x3cb38ed2,0x3c8c3d76,0x3bbe7599,0x3c36cace,0x3c36fb11,0x3c3e46d2,0x3c1aef77,0x3c32614e,0x3c25d6f4,0x3b6bd864,0x3aa8d3e8,0x3b0ff719,0x3b93991b,0x3be6fe4f,0x3be7908a,0x3b97c46a, -0x3b4c4aee,0x3abfe8f9,0x3bb934ea,0x3bc48ba2,0x3bfa363b,0x3c1f345d,0x3c074494,0x3c695051,0x3c8e1ccd,0x3c9d449d,0x3cadc346,0x3ca98d02,0x3ca0bbff,0x3c6e02e1,0x3c664714,0x3c7097bb,0x3c811d90,0x3cb1a367,0x3cb11e1c,0x3c972748,0x3caeecd2,0x3c6fc020,0x3b59eea2,0x3c2d44d7,0x3cb9cdd3, -0x3ca8102e,0x38bc71e3,0xbc01a3cc,0xbc136af7,0xbab17aff,0x3bf6cfa9,0x3c2267bf,0x3c604331,0x3bcf4613,0xbaf4e1e8,0x3abc6263,0x3b3c6a6e,0x3bd28585,0x3bfdbdc1,0x3bf38932,0x3bbd69da,0x3bbe9dfd,0x3babbd81,0x3c18ab5e,0x3c635cfd,0x3c422beb,0x3c3cfaed,0x3c0dc3df,0x3c1bf810,0x3bbe55d1, -0x3cafcbd3,0x3ca82231,0x3c2bb2cc,0x3c464632,0x3c9027ac,0x3d03a3ca,0x3cd7d4f7,0x3ceb9f73,0x3d0719a8,0x3cff0166,0x3aa4b8c8,0xbbe02444,0x3c5c37d6,0x3cacd3df,0xbaa360cc,0x3c044c58,0x3b187cdd,0xbaa054ad,0x3b0778e4,0x3b9ed9ab,0x3bd79833,0x3b37db12,0x3aa1bb46,0x3b836a86,0x3bc058ae, -0x3c138160,0x3c04da9f,0x3bf2e7c5,0x3b63b553,0x3b9e23c7,0x3c921ffb,0x3c9cf3f7,0x3cb196b0,0x3c71bab0,0x3c41c15e,0x3c180b60,0x3beddd7c,0x3be3ec73,0xba4c0129,0x3c17e431,0x3bb2380e,0xbc803e48,0xbab7c986,0xba04a3fe,0xbbbaa339,0xba50c0ea,0xbb9282c9,0xbba1e0a6,0x3bbff582,0x3babb9f2, -0x3b8d34a2,0x3b116f87,0xbb2fbb59,0x3a9142f0,0x3a8d695d,0x3a837f15,0x3b5ce338,0x3b17e992,0x3b4a9e0b,0x3b39511e,0x3b8bdb05,0x3bccc262,0x3b48bc59,0x3b8b58da,0x3b8ca155,0x3bf4a8a2,0x3c44a231,0x3c4718ef,0x3c163822,0x3c7727fc,0x3c86f029,0x3c9170d8,0x3c9b0c32,0x3c841bfa,0x3c1bd125, -0x3c903b83,0x3cd3fa21,0x3cbfd182,0x3cc5b077,0x3ca12f35,0x3c5122f8,0x3a645c28,0x3be4df5b,0x3aed61c0,0xbbb3b9b2,0x3abb54be,0x3b063aea,0xba448468,0xbad7787b,0x3b8cc09a,0x3a80bbff,0x39d28e8d,0x3b182f73,0x3ae708e5,0x3b1a6931,0x3b196508,0x3b2b0fcc,0x3bb6e0e7,0x3b725cac,0x3b538922, -0x3b6c084d,0x3bbd9da2,0x3c169326,0x3c276017,0x3c04ea82,0x3c708f84,0x3c8f7745,0x3c92ba8d,0x3cb15fdc,0x3c93601d,0x3c487e5f,0x3c757e9d,0x3cb10365,0x3d02d81d,0x3d0f3c45,0x3d167685,0x3d1b641d,0x3c8470a8,0x3c893e63,0xbb89b5bf,0x3b11e120,0x38cddac7,0xbb9d5246,0xba9dba46,0xbaf0d77a, -0x395de3b5,0x39db90d1,0x3af13c6a,0x3b002309,0x3a9d4994,0x3ac109f1,0x3b81e0b5,0x3ba1113d,0x3bbda99c,0x3bb19921,0x3bd71fe0,0x3baf29ed,0x3b9c8adb,0x3c2dad0b,0x3c64836f,0x3c8382b8,0x3c5356bd,0x3c1d1a78,0x3bbe7c18,0x3bc61d51,0x3b7ce658,0xbb6ae393,0xbabc7015,0x39ccfb25,0x3a913ceb, -0x3cb94412,0x3d029836,0x3d26f9f9,0x3ccfb8c3,0x3cdd95af,0x3ba6e78f,0xbcb7fbd7,0xbc34481a,0xbc83e5a4,0xbc399bfa,0xbc0d3eff,0xbb9fc105,0xbb96be9d,0xbba3f153,0xbb4e62c8,0xbb317576,0x3a39a34e,0x3ba2a411,0x3b23544d,0x3b571443,0x3b6bb926,0x3bc014a2,0x3bd1d4d8,0x3b16ffbd,0x3bc4d4d5, -0x3b8ddc42,0x3ba305c5,0x3ba94917,0x3be35721,0x3c2a631a,0x3c4aac15,0x3c523d5c,0x3c7032ae,0x3c64ec36,0x3c6fff7b,0x3c83cc32,0x3c7ad9dc,0x3c7b3b3b,0x3c96cc47,0x3cad59bf,0xbb83bcba,0xbc164e22,0xbc900d41,0xbc4da363,0xbc00ff55,0xbb33fe79,0xb9d3c89f,0xbb831dbd,0xbb3bda97,0xbabdb971, -0xba6c3be9,0x3b70b380,0x3ba22f68,0x3ba0fe17,0x3b792808,0x3b60f552,0x3b83e51d,0x3b3abcf3,0x3aa1619d,0x3b22c97c,0x3bfd8e77,0x3c1e35de,0x3c085ba5,0x3c10379d,0x3be1badc,0x3bc2e3ae,0x3b578cbb,0x3a8c38f6,0xbab035eb,0xbb22600a,0x3a29df43,0x3c2acdb7,0x3c49b66d,0x3c44c53e,0x3bbf1077, -0x3916a4de,0xbb2a4c7a,0xbc45324e,0xbbd0e47e,0xbb939d5f,0x3a244c3b,0x3b443de5,0x3b184342,0x3a63b746,0x3acb7ad2,0x3b119ea7,0x3b8a9908,0x3b8019ba,0x3b91da6e,0x3b80cc30,0x3b62608a,0x3b01b332,0x3a9e7828,0x3a9b7c5f,0x3ae4492a,0x3905a37b,0x3b70fc6e,0x3b38d3fb,0x3b0647b1,0x3ad56115, -0x39cd7352,0xbaa01037,0xba560769,0xba42ed43,0x3a330760,0x3988e6f3,0x3b1fa536,0x3be17d74,0x3b83f17e,0x3a144e11,0xbb1f930f,0xbbbc0d14,0xba9acb25,0x3ad5806c,0xba92de77,0x3ac7a7de,0x3a4b6565,0x3a1c8428,0x3affd0be,0x3b95fdfe,0x3bc18ea6,0x3bd4c90a,0x3c06fae1,0x3be6ceb7,0x3b64dd8f, -0x3b9465bb,0x3912dac6,0x3ae29369,0x393e2a9e,0xb9d44328,0xbb3e8ca0,0xb96bd7d5,0xbb2b65d4,0xbb62450e,0xbb898d6b,0xbbb86bfb,0xbbd542da,0xbc044206,0xbba3891f,0xbb5db6e4,0xbacb48e1,0xba37e68c,0xba4a4b7f,0xba7d9e62,0xbb1e56df,0xbb269a6d,0xbb3365ee,0xbab97b36,0xba5dc23a,0xb9a770dc, -0xbbbcc189,0xb9ed9069,0x39ee58fc,0x3a4c0215,0x3b3fbbd1,0xbad32e1c,0xb8b3a7f3,0xbb0e36fe,0xbb623b3a,0xbb2bce51,0xb9be66c7,0xbac280e2,0xb83000a2,0xbac5eb08,0xbbab4a20,0xbb14f478,0xbbe6d3b9,0xbbc27418,0xbbeb2d0b,0xbbf8e1e1,0xbc0bc6c7,0xbc179b6f,0xbc1ddee5,0xbc245166,0xbc250c4a, -0xbc151b06,0xbbf97a22,0xbbd75e6d,0xbb8312af,0xbad4803c,0xba96a85b,0xb92617ce,0xba1d4fb1,0xba1514d4,0xbae0efa1,0xb9b1f5b2,0xba913da6,0xbbb9a2f3,0xbc25a9ea,0xba655f7e,0xbb7dac8d,0xbc0f0c0c,0xbc19d853,0xbc13c62b,0xbc137447,0xbc23fc35,0xbc402640,0xbc46f9f5,0xbb7aed26,0xb9b9f453, -0xbc33238d,0xbba7a28f,0xbac6b1b4,0xbb0f858b,0xbb1f0238,0xbb38afc9,0xbb48c2dd,0xbb5cbc5a,0xbb7038e9,0xbb7b5a8f,0xbb5bb44c,0xbb2c55b6,0xbb226131,0xbb0fbb0e,0xbb16dc46,0xbb250184,0xbb324f59,0xbb1b9b4f,0xbb0f08fa,0xbaf7f9c3,0xbbaa62ab,0xbb928d60,0xbb730e68,0xbbfacffb,0xbb0b0390, -0x3bfc78e9,0x3c5b1bc6,0xbb39fd0f,0x3ba9351c,0x3c5fd650,0x3c71c3b9,0x3c7e240d,0x3c6238e6,0x3c6cc545,0x3c893e04,0x3c63bbe7,0x3bbc50fc,0xba976f48,0x3c73b4c4,0x3c03c15f,0x3835acc8,0xbbd503c0,0xbb8aacd2,0xbba172c7,0xbba2c411,0xbba66445,0xbba30af1,0xbb9b5827,0xbb9c1083,0xbb9f856e, -0xbb9e4552,0xbba6a282,0xbba4dc0f,0xbbab7d9b,0xbba54dbf,0xbb98740f,0xbb7f1228,0xbb881ce4,0xbb67e40a,0xbbdba79a,0x3c6a3062,0x39c789de,0x3bfe2b6b,0x3a55b311,0x3aa190bd,0x3b86ebbe,0x39b084a8,0x3b791500,0x3b9f203d,0x3b8c6b97,0x3a8e2268,0x3b7df673,0x3c2da66c,0x38f0a189,0x3bbb4ac8, -0x3b028270,0x3bf85c5c,0xbb9c9276,0xbbb49b57,0xbbc14510,0xbbe2b370,0xbbd6170b,0xbbdf36f4,0xbbf6ed65,0xbbf3472a,0xbbf5ef5f,0xbbe83945,0xbc06cb28,0xbc03fe86,0xbc010153,0xbbf3e0fd,0xbbd4a031,0xbb8c35b7,0xbb616c52,0xbb95ccf9,0xbba8b104,0x3babae67,0xbb2a23db,0x3b8e9199,0x3a097586, -0x3b65e568,0xbb2afd9d,0x3b9fda89,0xba0697a3,0x3b9f5bfc,0xbb0ae636,0x3bc4eaee,0xba5accd6,0x3b27ca46,0xb91818a7,0x3b25d705,0x3b9a3a20,0x3b884896,0xbabbc6be,0xbc0b21b0,0xbbdf11fc,0xbc1f2df5,0xbc0bc48d,0xbc0b6c33,0xbc0acc35,0xbc097b48,0xbc0bee8f,0xbc0dcc47,0xbc1bae0b,0xbc28feb5, -0xbc27033d,0xbc16aa0f,0xbbe0c708,0xbb3ab76d,0xbb468d9b,0xbb276fcf,0xbb7e8223,0x3c0f3fb9,0x3b3d89ab,0x3b9fb0af,0x3aceec9e,0x3acaa447,0xba2a7386,0x3b3cc851,0x3b82f16e,0x3b94c5f6,0x3b932c8d,0x3b9852b8,0xbb175c46,0x3b2da61e,0x3a5b1754,0x3b70ad6a,0x3b59409e,0x3bc8b5c7,0x3b3e720d, -0xbc14727c,0xbbe4c118,0xbc3c74e3,0xbc2f77b2,0xbc4a485e,0xbc448940,0xbc413684,0xbc3cf0ba,0xbc29a9ac,0xbc5eef19,0xbc6634c7,0xbc555304,0xbc3f2621,0xbc065c79,0xbb56594a,0xb99cd634,0xbb56aee9,0xbbc1b7da,0x3bd91d32,0x3b44bff5,0x3b39174f,0x38937183,0xb956274c,0x3a548658,0x3b82ae47, -0x3bb5dd5e,0x3b8f5c60,0x3baa5197,0x3b1062a4,0xb94a1acc,0x3af0d5dc,0x3b27abfe,0x3bd25448,0x3a8505e0,0x3c403ee3,0xba0ccaca,0xbc11a244,0xbc1eb9c5,0xbc6d8dde,0xbc4a9ef9,0xbc443e70,0xbc3de5d7,0xbc393000,0xbc40cae2,0xbc3b2619,0xbc5529f6,0xbc721331,0xbc66949e,0xbc4eccb0,0xbc01c573, -0xbacd07a5,0xba3b8aed,0xbb3e62d5,0xbc2480b0,0xbb471430,0xbbbdf35a,0xbc1bddf5,0x3a0ef829,0x3b052513,0x3c04778b,0x3c39dc58,0x3bcf8395,0xbabec413,0xb8fd440d,0x3af5cee4,0x3bee44da,0x3bcfdd4c,0x3b51777c,0x3bc157cb,0xbb099755,0xba66cdcb,0xbbd7c37e,0xbc38bb03,0xbbc4a3f7,0xbb93628b, -0xbaa00768,0xbb4d8110,0xbb1aa75c,0xbb0c8bb8,0xbbf34ea1,0xbcae823b,0xbcabfa68,0xbcb3269e,0xbc509bee,0xbc4b8706,0xbc0dc04e,0x3b0a939d,0xbb40d505,0xbc81345b,0xbcbabed8,0x3cb54061,0x3c1454e3,0x3a0f33d0,0x3a8044f8,0x3b48a649,0xbb077d64,0x3a91d661,0x3b8f47b3,0x3bc44d5c,0x3b484fd0, -0x3acf31e9,0x3b2002b2,0x3b848b5e,0x3b9525f7,0x3b8de2c5,0x3b72e86a,0x3c18cc82,0x3b297350,0xbbb28c3b,0xbbb9e0ae,0xbc80ff8a,0xbbf3b3bd,0xbb40f39f,0x3bb02080,0x3b95f889,0x3b3f034f,0xbc0ec500,0x3980e7e4,0xbb17b3b5,0xbc98c53e,0xbc2e8bf9,0xbbf1ae51,0xbbd2245f,0xbc1d9aa4,0xbc36ec11, -0xbc7fade5,0xbb61951f,0x3b123b03,0x38dfeaed,0x3b0d2486,0xbaae7ca5,0xb98dbb07,0x3a705125,0xba2ed110,0x3b6396b6,0x3a450811,0x3adcee6a,0x3b598d50,0x39df4dd8,0x3b8d07e6,0x3a2342f7,0x39a90a00,0xba1959c0,0xbbb64123,0xba7ab480,0x39919cd5,0xbb8f220e,0xbc0e9562,0xbc537730,0xbc58097c, -0xbc3de794,0xbc0737eb,0xbc0f3483,0xbb85ef1c,0xbc0d4bc1,0xbc9bf69a,0xbca16eaa,0xbca20d3f,0xbc72399c,0xbc18b86e,0xbb9a0e1b,0xb9835598,0x3b1801bf,0xbaf4927f,0x3b722e20,0x3a3101a2,0xba322f20,0x3b135cc1,0x38da800b,0xb8d2d973,0x3a906f3c,0x39845f06,0x3aba59b4,0x3ad093ea,0x3a91243c, -0x3ada864c,0xba261c53,0xba4b524c,0x3b00a8dd,0xba22434c,0xbb1a4bd6,0xba56100d,0xbaf2088e,0xbc1023ec,0xbc51fb45,0xbc7d8e2d,0xbc6de0e0,0xbc44c175,0xbc4398b2,0xbc34b764,0xbc7499cb,0xbc897608,0xbcc74959,0xbccb1a98,0xbc9ed83d,0xbc17c49a,0xbc5b1c4b,0xbaee8872,0xb9603e77,0x39fa62ae, -0xbb8ad343,0xbb99ff01,0xbb57284d,0xba8e6818,0xbae5edc0,0x39cbc330,0x3a95e1c8,0xb9928cfd,0x3a6cbf25,0x3abc1fd4,0x3b5dc630,0x3ba13c33,0x3b8203a0,0x3b0eeaa5,0x3b941df1,0xbab3efa7,0xbb01ed4d,0xbb75b146,0xbbaf8284,0xbb6c3a65,0xbaad8c5c,0xba3590f8,0xba63c435,0xbb8af641,0xbc47b6ad, -0xbbe42f94,0xbc1093fe,0xbc56ca9f,0xbc80cae2,0xbc995889,0xbce1c19d,0xbc8fa429,0xbcc6ccd1,0xbb8f9fe9,0x3b89e6e4,0xbc9002b3,0xbc5eb357,0xbc38fb2f,0xbc158313,0xbc0247e6,0xbb8be1cc,0xbbbb2172,0xbb8a86e8,0xbb8b0691,0xb9adac11,0x3b4d30b8,0x3ae90fd0,0x3ad5717c,0xb8bb5571,0x3b64b2de, -0x3b60a485,0x3a98ce76,0x3a347b00,0x3bab6d4e,0x3ba38188,0x3b6e3174,0x37d8a686,0xbbdce63e,0xbbccdd41,0xbc1e9e58,0xbc7e9798,0xbc752a96,0xbc800472,0xbc9ce218,0xbcd05835,0xbcd4e2c3,0xbccc75c8,0xbc9e74c1,0xbcc712ed,0xbcb93ea9,0xbc60c95d,0xbc49ccea,0xbc102815,0xbb839eb5,0xbb8e8713, -0xbbced11d,0xbbee0aa5,0xbb964e06,0xbb8ded59,0xb849545e,0x3aa7f94d,0x3b2ecf95,0x3acd0d64,0x3aa11905,0x3a655350,0x3ac4d7cd,0x3b7a0c3c,0x3a99b2a4,0x3acd6126,0x3988db3a,0xbaabb5a4,0xbb0cbdca,0xbb513999,0xbb757b71,0xbba6d5e4,0xbba4f7fc,0xbb430a59,0xbbd7b878,0xbc400648,0xbcad5430, -0xbc689f20,0xbc535b56,0xbc8f7d6a,0xbca91752,0xbcb36e80,0xbc131939,0xbc48a499,0xbc149454,0xbb8efc4a,0xbbef911a,0xbb2a96b8,0xbb80277c,0xbb008b82,0xbab66f96,0x3b3144cb,0x3b0d2c99,0x3b82cd55,0x3b206c1e,0x3a91389a,0x3a785571,0x3a87cb12,0x3963c747,0xba88ac2c,0x39ec6e1c,0xbb407adf, -0xbab1d07e,0xbae57eec,0xbb2da800,0xbb89f404,0xbbb47cd5,0xbbe07bf3,0xbbf64813,0xbbd076c8,0xbc107042,0xbc24d0a3,0xbc645d43,0xbc45cd1d,0xbc4a7924,0xbc7a87a5,0xbc6bacdc,0xbc2fdad3,0xbc42ad06,0xba61fe61,0xbb8dd70f,0xb8df863b,0x3af7892c,0x3a147b8f,0xba2b4999,0x3b3a9a17,0x3b09f4cb, -0x3bd7f17b,0xbabe08f8,0x3b16d68d,0xba2a5cb1,0x3b0b850c,0xbab536cc,0xbb16db65,0xbb560a5c,0xbaf6830b,0xbbebd4fd,0xbbdb9e15,0xbbac427e,0xbb99755c,0xbba6ee78,0xbbb33241,0xbbcc8e2b,0xbbf27f33,0xbc157262,0xbc3bbe73,0xbc40f9a3,0xbc41ced7,0xbc42e1c1,0xbc4d8186,0xbc5ae545,0xbc5cb6df, -0xbc3b9ab9,0xbbee2b3b,0xbbdc155a,0x3aa5c8d2,0xbbaf2de2,0xbb980258,0xbb465ef3,0xbb97ee6f,0x3a74ea70,0xbb90054e,0xbb09dc3c,0xbb13ded0,0xba3e42fb,0xbb480e50,0xbad8b879,0xbb8ad04e,0xbb92e5ba,0xbb2b18f0,0xbbebfe99,0xbb8331f3,0xbbeef951,0xbbd4410b,0xbc146092,0xbc22a4e5,0xbc339b4f, -0xbc3cc560,0xbc4158d4,0xbc589f4b,0xbc5c84b6,0xbc60346f,0xbc7f870b,0xbc898d99,0xbc9d247d,0xbc86de38,0xbc4b6e57,0xbc321a8f,0xbc25b301,0xbc10e77e,0xbc1a6e32,0xbbd51879,0xba80ebbc,0x3b0435dc,0xbbd6e0d2,0xbb3050a1,0x3b2a499c,0x3b7eb500,0x3b5e2398,0x3b2d9fab,0x3b4126a9,0x3b7bb22d, -0x3b7fa336,0xbb617c43,0xbbfef7f5,0x3a8678ee,0xbb5b6b08,0xbbf5ec00,0xbc10a8ed,0xbc102ce8,0xbc0f4d53,0xbc0c145a,0xbc0c88b4,0xbc0ce450,0xbc0c1d51,0xbc12e222,0xbc17c333,0xbc22cc17,0xbc25635a,0xbc1faabf,0xbc263c52,0xbc22ceb3,0xbc21460b,0xbc20de3c,0xbc19b34d,0xbc66e6e8,0x3c0d12cf, -0x3bcf1223,0x3c24d64a,0x3b1d6460,0xbbc202eb,0xbbf2d773,0x3b534ccf,0xbb8054c2,0xbc1aabb6,0xbc1a321f,0xbc18ee50,0xbbfaa0fb,0xbc0282d3,0xbc23c1fd,0xbc04cf9f,0xbb914375,0x3ad9a683,0xbbfdaa45,0xbbb2a976,0x3a8097fc,0x3c16cc6b,0x3bdfc7dd,0x3beec5e8,0x3bf1c0aa,0x3bfe2022,0x3bfc9410, -0x3bee3bd3,0x3bea1764,0x3be6551d,0x3be75d5e,0x3be9352e,0x3be11094,0x3be6adce,0x3bda362c,0x3bd4bdeb,0x3bc17a62,0x3bd6dbcb,0x3c1272ce,0x3c09d981,0xbc245c15,0x3b504c87,0xbb30ecd4,0x3ae58242,0x3a3cee9f,0xba26094a,0x3b906c0a,0x3a66fa4b,0x397d6fd0,0x3aa4c655,0x3b9e3a55,0xba245f93, -0xbbe0ac62,0x3b24728c,0xba1177bc,0x3b1f6013,0xbb4fa9dc,0x3beb3769,0x3c103234,0x3c09d19e,0x3c1be8da,0x3c16d751,0x3c130c0d,0x3c165f34,0x3c13db7b,0x3c1ac9b1,0x3c29418d,0x3c23b58d,0x3c19a0fa,0x3c25e432,0x3c09ad67,0x3bf73483,0x3bbd2d44,0x3beebf26,0x3c182a56,0x3bdf9587,0xbb07e69c, -0x3bbe87ef,0xba27a442,0x3a90535e,0xbb1752f6,0x3b7bc153,0x393cf275,0x3c030b7a,0xba5eb7cc,0x3c381f54,0x3b1749bd,0x3b15bac9,0x3a1b1c8a,0x3b4795d4,0x3b93a2b3,0x3aa2d096,0x3a550afb,0x3baf1727,0x3c35aaa6,0x3c11a0d3,0x3c3ecec7,0x3c3b7f32,0x3c3f9a69,0x3c22e15b,0x3c1e5c6c,0x3c18e1bb, -0x3c352fd1,0x3c2467dc,0x3c1d308d,0x3c1dc869,0x3be4e5ce,0x3bb0d7ef,0x3b460ba4,0x3bdb7a87,0x3c431f4e,0x3bd135c7,0xbbb9f1f2,0xb941c25a,0x3b18ddac,0x3a145b3f,0x3983dcd1,0x3b37e720,0x3b5f0f27,0x3bb16eee,0x3b6c7725,0x3c00702d,0x3b9b3e38,0x3b3fc672,0x3981f655,0x3b4e76e0,0x3bc8002a, -0x3b89d483,0x3a906fb5,0x3b46f9b5,0x3c3eaba7,0x3c0fb6cc,0x3c46e431,0x3c525130,0x3c54ccc4,0x3c2164ca,0x3c29948a,0x3c335c92,0x3c804582,0x3c4b5da5,0x3c449885,0x3c600d71,0x3bf8444d,0x3b9d26bf,0x3ae4a263,0x3bb55b36,0x3c12830f,0x3bec7952,0xb9c6c41b,0x3bb4a7ea,0x3b8d6bc5,0x3acb2431, -0x3a63697b,0x3a55fb1a,0x3b7856b2,0x3bc32c90,0x3bd185e0,0x3bc0ec73,0x3b9ac197,0x39bb3e24,0x3ba26e16,0x3b9c5315,0x3bd100f8,0x3c2772c6,0xba3ae151,0x3be05b14,0x3c42a194,0x3c2cd4ff,0x3c6bbd8e,0x3c6d81b5,0x3c70579b,0x3c3a6063,0x3c3a69ee,0x3c3d687b,0x3c6b9685,0x3c61c558,0x3c2cb031, -0x3c172fbe,0x3b85df47,0x3a043f46,0xba818069,0x3bac3d24,0x3ca139f8,0x3c88e205,0xbc4249cf,0xbc86dcde,0xbc43f0d4,0xbba2cf63,0x3b896bb9,0x3bb7a512,0x3c5f329f,0x3c0f0987,0x36ac4c7d,0xb949fa6e,0x3b136070,0x3c095123,0x3bbb77f8,0x3bcc6c48,0x3afe4bf5,0x3b8c390c,0xbae3092f,0x3b5b0c50, -0x3c563f5b,0x3c46248e,0x3c86ca33,0x3c154cd1,0x3c345c58,0x3c52a0ae,0x3caaed73,0x3c8c0448,0x3c0b9f18,0x3c006b86,0x3c3ef50b,0x3cb656e8,0x3c9bdb63,0x3cac0182,0x3cb32dda,0x3cc90846,0x3bdb280a,0xbc872a0a,0x3bb600d5,0x3ccbdca6,0xbbdb0b4e,0x3bedd6e9,0x3b2c9a9b,0xbb0e8bf5,0x3b1b4a6e, -0x3b8cd90c,0x3be991e6,0x3b8d8b66,0x3b0f2241,0x3b8595be,0x3bcf4b34,0x3c2353fc,0x3ba1a4f6,0x3bb5cf02,0x3902edbf,0x3a4bcd48,0x3c5e3b46,0x3c3d9ae9,0x3c7a8a92,0x3c446322,0x3c1b2b5b,0x3be7ae00,0x3b53ae1d,0x3b6f32f9,0xbafe003c,0x3c0e8216,0x3b3f8eff,0xbc8e318e,0xbc0b05b2,0xbbb27acb, -0xbb82253b,0xba13f061,0xbab1bdc0,0xbc4702ee,0x3af98f76,0x3b3d2bd6,0x3a339cc9,0x3b985bef,0x3a6f7c7b,0x3acbf69d,0x3ae4a269,0x3ad73ea3,0x3b85b183,0x3b2dcf45,0x3b471c1a,0x3b6cdad8,0x3b159057,0x3b738fc3,0xba27bb92,0x3a191ee8,0xb92ff045,0x3b9dbdfb,0x3c122517,0x3bf40537,0x3bedfe64, -0x3c1b335a,0x3c355ce4,0x3c306a36,0x3c8244a5,0x3c73eff9,0x3c205c1a,0x3c9d2d4a,0x3ca9061a,0x3bfd5f61,0x3bf8406e,0x3bb11f1e,0x3bfc795c,0x3ad11a98,0x3b8dd784,0x3b303455,0xbbb9453d,0x3889da7f,0x3ac1cbd3,0x3ab02442,0x3a8656f2,0x3b2233ad,0x3aea1451,0x3aa4b20a,0x3b1642a1,0x3ad3b324, -0x3b081e37,0x3b1badca,0x3af90d0d,0x3b0da6e7,0xb96b954f,0x3a7ec605,0xba748e4b,0xb884a5a9,0x3bf2b066,0x3bba8fcf,0x3bc5bcea,0x3c021ff4,0x3c1422fb,0x3c16dc72,0x3c5d52bf,0x3c34a477,0x3beeb907,0x3c3331b5,0x3c71679c,0x3c9fd9ca,0x3c7b172b,0x3c76660f,0x3c9d2f83,0x3c0278c7,0x3bbea6b4, -0xbaf19e45,0x3afa78ae,0x3b15900c,0xbb9cbc5e,0x3823c5cd,0xbb03bc1b,0xbb642fad,0xba2e648b,0x39ada683,0x39e09d0d,0x3a8948e7,0x3a696559,0x3b376e0d,0x3b7157ca,0x3b8a1f5f,0x3b265194,0x3b5f5df9,0x3ac9eb60,0x3ba9e666,0x3c000312,0x3c1b3b93,0x3c317a26,0x3bf3bf86,0x3b8a9c21,0x3b0ddae5, -0x39cc51fb,0xbb566257,0xbc6780fe,0xbbf4aeb5,0xbbbbad15,0x3981bc25,0x3c0693cd,0x3c5998d5,0x3cad6542,0x3bdb8b2e,0x3c2a4bd7,0xbc002905,0xbcb01c95,0xbc5eb7b9,0xbc97881a,0xbc5eee7f,0xbc25950b,0xbbae2442,0xbb8762af,0xbb3e4a80,0xbb190700,0xbb3b454e,0xb9c4472a,0x3b7f8dcb,0x3ad4a539, -0x3b1ba3fb,0x3abe3a04,0x3b3de54b,0x3b0ebc7c,0xb92edd4b,0x3b5ef17c,0x3ae14469,0x3bd81cdf,0x3b97de1a,0x3b8c9a5e,0x3b6f1e72,0x3b25c470,0x3ae0d41c,0x3aecbd30,0x3aaac4c3,0x3b8dd4d5,0x3c2932c1,0x3bb551b9,0x3b7cefee,0x3bf1e415,0x3bd27d69,0xbbe13055,0xbc51f670,0xbca47453,0xbc76ae8a, -0xbc1d67ad,0xbbf25d0a,0xbba1aa6d,0xbc052b6f,0xbbc704e2,0xbbccb6ca,0xbb034435,0xba47d6b3,0x3aebd9de,0x3b604380,0x3af05b95,0x3ab12e47,0x3ac0cf0c,0x3b64cbdd,0x3b0ffa57,0x3b96143b,0x3bda5a7f,0x3bf028a9,0x3c00cc9b,0x3ba0273b,0x3b552532,0x3aa9c7c8,0x3a05b9d7,0x399de350,0xba711c3a, -0xb9120a5d,0xba88f97a,0xbae4d95b,0x3ae08632,0x3b133f59,0xb89894b1,0xbb97fd58,0xbb9b2836,0xbc966ab0,0xbc66bbc8,0xbc3fb1f0,0xbbfb92a3,0xbb4adcb5,0xbba2bfbb,0xbb82b617,0xbb57d0cf,0xba6545b3,0x3a5c20af,0x3ac3e596,0x3aae73ad,0x3b559cdb,0x3adf2e4d,0x3a6a6366,0xbaca0f2b,0xba2166d6, -0x3a40ca09,0xbb14c744,0x3b9e8733,0x3b84e363,0x3bb1f9ba,0x3b801b36,0x3b452042,0x3aae064b,0x3a8f9a5e,0x3a3741a8,0x3a94fd4f,0x3b04314c,0x3b65bd15,0x3b992812,0x3adbaf89,0xbabda2e2,0xbb30a25f,0xbbf735ee,0xbba2e6a8,0xbb97e6fc,0xbc14d26c,0xbbb80897,0xbc008ed2,0xbbdc69eb,0xbb7e7938, -0x396bcc5c,0x3a7af830,0x3b2c9fe2,0x3aff5fde,0x3b919eb5,0x3af4f80f,0x3b523605,0xbaaf1a35,0x3a188e03,0xba3d6e17,0xbaae7c09,0xbbce3cf5,0xba642043,0x3a89ccb1,0xb7bd6d21,0x3adbb594,0xb8ad5eb0,0xba5b7268,0xbb125621,0xba6af6da,0xba3ca71d,0xba83a393,0xb993c118,0x39ea8c60,0x3b012284, -0x396da95c,0xbafc96ff,0xbb680ef6,0xbb9ca77b,0xbb071a86,0xbaa30b27,0xbc057652,0xba48f6d8,0xba09c0b7,0xba3afda4,0x3a72d550,0xbb3c7bb8,0xba47991f,0xbb85158b,0xbba3a5dc,0xbba9a963,0xbb18f92a,0xbb5fae44,0xbb364eec,0xbb701672,0xbbd954ed,0xbae36933,0xbbdfe9da,0xbaa8da27,0xbb60df20, -0xbb82bc22,0xbba9937a,0xbbb53bfe,0xbbb55f3e,0xbbbfbc5f,0xbbb5873a,0xbba61acb,0xbb8acca2,0xbb8a50ed,0xbb8d9068,0xbb9d471e,0xbb8f729c,0xbb51402b,0xbb270cdf,0xbb044d30,0xbac8fcc8,0xb9cee03c,0xbb9ee4e5,0xbc1fafee,0xbc3631c5,0xbb8d771d,0xbc032219,0xbc2f0196,0xbc37b462,0xbc29170b, -0xbc1e809e,0xbc2c5c81,0xbc473c71,0xbc4dbc00,0xbbef55b6,0xbb14ed7c,0xbc327f17,0xbc0a6299,0xbb7d2f36,0xb9c63b38,0xba811ee7,0xba6a2eb6,0xba56f7a8,0xba6c2b93,0xba975fc5,0xbaa918e9,0xba9c77ce,0xba91ee35,0xbaa2d0bd,0xba9a6217,0xba7ab52d,0xba3f547a,0xba60e78f,0xba96171c,0xbabb8fb3, -0xbad1ba52,0xbb83c4a6,0x3ab32dd9,0xb96de6ec,0xbb787068,0x3bacdecf,0x3c33061a,0x3c0a0589,0x3b7dbb53,0x3c134d28,0x3c2ec4b2,0x3c32a24e,0x3c308162,0x3c14bdea,0x3c1bf861,0x3c2e915a,0x3c12c586,0x3c1fbf38,0x3bba8ece,0x3c0dd63e,0x3c28f73d,0x3bc5258b,0xbb399863,0xb9da51c3,0xba021852, -0xba0e8f32,0xba1fb5fa,0xba1ba67b,0xba01369c,0xba153cb4,0xba1547fd,0xb9d5b698,0xb9ee29b7,0xb9f35e40,0xb9d5047c,0xb98919ab,0xb924bedb,0xb9a417fc,0xb9903c95,0xb97df0a3,0x39f14992,0x3c6cbf9c,0x3b3190d1,0x3c03772f,0x3b8cc8ad,0x3bbf99e1,0x3bae2f62,0x3b081727,0x3bf295af,0x3bdf7095, -0x3c0e704c,0x3b9f004c,0x3bc673ec,0x3c19d9f7,0x3b8809a5,0x3c011729,0x3b99fc87,0x3c22d13b,0x3ace651d,0xba98dcd7,0xb8e74e99,0xb9e97923,0xb9325c5c,0xb94869ad,0x387fedc3,0xba046062,0xb9d8329d,0x39929f95,0xb9ec3479,0xb9e068e9,0x39027778,0x3a4b0961,0x3a3e8c69,0xb9ae9283,0x3a8ae633, -0xbb058302,0xb9110970,0x3c0d7070,0x3ae9312f,0x3bd8df46,0x3b7a14a0,0x3bd5089b,0x398f0f79,0x3bebf4e5,0x3ace407d,0x3c1c9527,0x3b1d00e8,0x3bee5c59,0x3b8f04db,0x3bab8420,0x3b51ab79,0x3bbf0926,0x3bc7e226,0x3be3fe5d,0x3ac1916a,0xbb40e37b,0x399ab672,0xba852440,0xb997cd0e,0xba48bf9a, -0xb925dd1f,0xba4334c2,0xba583228,0x3a42b3c3,0xb9612d30,0xb8a39172,0x3a0876a2,0x3ac68d2c,0x3abc2383,0xb9e90843,0x3a96571a,0xbaa2ea8a,0x3a972445,0x3c3a1619,0x3b9efef3,0x3ba34097,0x3b4348bc,0x3b2e7ff4,0x3afb54a4,0x3b46093f,0x3b8f5672,0x3b883e21,0x3bacded9,0x3bff484d,0xba80538a, -0x3b8db496,0x3b02a489,0x3bb1d30b,0x3b9c325e,0x3bfb6b6e,0x3b8be45e,0xbb76d627,0xb9b1a41a,0xba63da32,0xb824fdc0,0xb7ffb696,0x3a69d116,0xba180ab5,0xba14bd0d,0x3b1816cc,0xba3ad41f,0x39648998,0x3a95edab,0x3b542840,0x3b232c49,0xbb172943,0x3b2fcd0d,0xbb3c78af,0xbb45a965,0x3c04d0f6, -0x3b73117d,0x3b5817f5,0x3af05c8d,0x3a8ab03d,0x36866eac,0x3b5d0b2c,0x3bb3a912,0x3b31f757,0x3bbf7b0f,0x3b4d0557,0x3973a46f,0x3ad80a54,0x3b65414d,0x3c03b423,0xba094523,0x3c3bb9a4,0x39919a18,0xbb69f58f,0x389af785,0xba9b3833,0xb97514f6,0xb9e3b353,0xba4292ca,0xbace81b3,0xba9ae5e3, -0x3abab60f,0x3a569fb9,0x3a7e3de7,0x3ada219e,0x3b7b9738,0x3b3b2ac1,0xbb100616,0x3af13b14,0x3bbb4987,0x3b5eb490,0x3be3238a,0xbacce155,0xbbf57a6a,0x39eebcaf,0x3b3982d5,0x3bb559f2,0x3c4a60a3,0x3c15aea8,0x3a87194a,0x3955c856,0x3abfd7d7,0x3c0cd561,0x3bb25356,0x3b1eba1f,0x3be243ad, -0xba849a66,0x3b71f458,0x3a86a0c1,0xbb40a5a5,0xbabd8261,0xbb8c5061,0x3a8c2dd2,0x39491c1f,0x3ac40705,0xbb6a129b,0xbc247c45,0xbc85f799,0xbc7593bd,0xbc267a05,0x3ba8210a,0x3bb93bac,0x3bc6763a,0x3becb826,0x3b9ea3e3,0xbc6539d2,0xbcb16d73,0x3cd42c61,0x3c6a4135,0x3b270d26,0x3ba2fe4a, -0x3b801cd9,0x3a109293,0x3aa07ef4,0x3b85691e,0x3be7b642,0x3b885b2b,0x3b39c9fb,0x3b2c3c2a,0x3bc944d7,0x3bc87442,0x3b989c80,0x3b6927f3,0x3c013e86,0x3bc14028,0x3afcfe86,0x3bb3cf22,0x3aed1397,0x3b54b701,0x3b8b6c72,0x3c03c6d3,0x3bc5ec42,0x3b7e9821,0xbb874bc8,0x3bc4240f,0x3b9a85f5, -0xbc04a424,0xbb166a06,0xbafe658e,0xbb83e8db,0xbb933e4f,0xbb9e403e,0xbc814756,0xbb419052,0x3ad26345,0x3aa5e46b,0x3b95ecc4,0x3b2d9d97,0x3ab746d0,0x3b173335,0x3a6c1da7,0x3b7a07fe,0x3ad89e2c,0x3b2d2eae,0x3b4a4515,0x3b1f7e5b,0x3b86ad86,0x371a7694,0x3aa78f42,0x3b067be2,0xbafa4909, -0xb98bae27,0x3b37d809,0x3b050ba2,0xbac1ae93,0xbb7776e6,0xbb322dd8,0xbafc710f,0xb9fadef3,0xbba52d18,0x3ac9470e,0x3ac128a6,0xba842f7e,0x3b1f7515,0x3b3fb344,0x3b750d74,0x3ad1583b,0x3b9e2c88,0x3b1507a9,0x3a644340,0xba6a0e8d,0x3b334517,0x3b648544,0x3b28a039,0x399e4af6,0x3ab651b1, -0x3a3d85f3,0x3ae3e2d9,0x3a57f6b6,0x3af5b7ea,0x3afa8398,0x3a4249c9,0x3ad15316,0xba7b96fb,0xbac0afab,0x3b0c42e9,0x3b0620c9,0xbb27f07d,0x3a3db7fd,0x3aff80ad,0xbb4023bd,0xbb966023,0xbb71d4eb,0xba512219,0x3a44eb99,0xbb37c0ff,0xb7fe603d,0xbb045ee9,0xb8926aa0,0x39d36d81,0x3b656a74, -0x3c5031e4,0x3bdd5d70,0x3b79c7c8,0x3bcd2b5b,0x3bb1253d,0x3b013f0d,0xbaece30a,0xbb166d6c,0xbb3c0aad,0xbaeb81dd,0xbaf98b87,0xb9ddb63f,0x3aaf86e9,0x39aa15f5,0x3a935959,0x3a67e197,0x3b68d189,0x3b9586bb,0x3b28f48e,0x3ad8a2e6,0x3b6f8f72,0xb99fe499,0x3a59297b,0x3afb3081,0x3b159f08, -0x3b449088,0x3b46887c,0x3b55422c,0x3b2fa7ef,0x398f4c82,0xbb9b255d,0xb9a84f42,0xb8b29061,0xbbaed393,0x3b54811c,0x3bb947dc,0x3bbd3d3e,0x3bea1ec3,0xba8464ab,0x3b26c4e5,0x3accb589,0xbc2d1002,0xbc6fb346,0xbc3c7e8d,0xbc04e7d0,0xbbca783c,0xbaaf76b4,0xbaffcfd0,0xbad7db69,0xbb3e56cc, -0xba0faf2b,0x3b17c42f,0x3ae1dd9f,0x3ac0d0f4,0xbaad214e,0x3b89c8d5,0x3ba3b881,0x3b6c64c8,0xb76be142,0x3b11a0e3,0x3b85fe89,0x3b874579,0x3b63ef1e,0x3aeb72b6,0x3ac751a5,0x3a5f6c7a,0x3ad9511d,0xbba92881,0xbba54876,0xb9417794,0xbb173ca4,0xba8977e5,0xbab83235,0x3b3ca725,0xbc085cd7, -0xbc0c29f9,0xbbf1c069,0xbc0193c8,0xbb55ec63,0xbb93c73e,0xbbc47f2f,0xbbe3ec19,0xbc075839,0xbb9d5beb,0xbbb66d54,0xbb1a31f6,0xbab94178,0x3b00f868,0x3aca2f65,0x3b2c0742,0x3b0674ec,0x3b4fece6,0x3b9a61f9,0x3af6a797,0x3a9d3b11,0x3aec2419,0x3b534c35,0x3b2f4695,0x3b3244af,0x3a262532, -0xba8b9cfd,0xbb397c70,0xbb97ec93,0xbb90487d,0xbbf67794,0xbc724d0a,0xbc65ddbf,0xbc3c7978,0xbc0bbe6b,0xbc01c33e,0xbc72c121,0xbc198ca7,0xbc10a8b3,0xbc03f64c,0xbb8d29a8,0xbc07d4b4,0xbb8f64ca,0xbbb78810,0xbb59df90,0xbb699553,0x39bf37af,0xba7ca4fb,0x3add1311,0x3b039c36,0x3a9b5ab2, -0x3a9508e9,0x3ac18df8,0x3b0cc0b5,0x3aa847e8,0x3b2ba4f0,0x399ff480,0x3b0c0259,0x3b5ebd2d,0x3b219158,0x3adb0ddd,0xb92894a5,0xba639ab6,0xbae1ce38,0xbb15cf8b,0xbb3384db,0xbb59033f,0xbbb0830e,0xbbe437fd,0xbc0c3cb5,0xbc23b885,0xbc2dbd33,0xbc2ecd37,0xbc3d4ca2,0xbb860e40,0xbbd7eb0b, -0xbb837ee6,0xbac5b0b2,0xbabf80fd,0xbaeea5f0,0x3a9a0be6,0x3a5c3a53,0x3bc4788c,0x3a4a5a24,0x3b3da3ef,0x3b23ecdf,0x3b268de4,0x39a0c3ba,0xba60e0a8,0xbaa562e3,0x39edf23b,0xbb0509d5,0xbb1cab56,0xb9f472a1,0x3989aa71,0xb9d9657d,0xba9af6d4,0xbad62e64,0xbb0a0631,0xbb264b7a,0xbb3f9e8e, -0xbb4e40e2,0xbb2d00e7,0xbb07c94d,0xbb6a9880,0xbbb4a5fe,0xbc0304c7,0xbc0c95be,0xbb7cb72e,0xbb781a7d,0x3ad4d4f0,0xbb13e7ba,0xb982a4fd,0xb94a006a,0xba9a9c42,0x3a7a918f,0xbb03e2c5,0x3a0af9b2,0x39a057ba,0x3afd05b6,0x3a2bb862,0x3b00d4de,0x3ad84028,0x3aa7f153,0x3aabc99d,0xbab86133, -0x3715f6dd,0xbba51d76,0xbba0d59e,0xbbc141ef,0xbbd5e4db,0xbbd77fbb,0xbbd07f00,0xbbd05a7d,0xbbfb68cc,0xbc0b6bc8,0xbc118353,0xbc21c368,0xbc2f0959,0xbc403610,0xbc2cc50f,0xbc0936c1,0xbbde0b92,0xbbbec49a,0xbb9d187b,0xbbaa5b8f,0xbaafdc49,0x3a8aa1a9,0xba1ee3f1,0xbab79a9d,0x3a93416d, -0x3ac64b4b,0x3b1c6131,0x3aee800c,0x3a961339,0x3ab31572,0x3ae279ab,0x3ad89926,0x3acdbb67,0xbaa98991,0xba0aa64f,0x3a63ba4c,0xbab3aa07,0xbb97e6d6,0xbb7bc9bf,0xbb75eda5,0xbb6bfeaa,0xbb6f91da,0xbb780032,0xbb70d529,0xbb720e69,0xbb6d5c60,0xbb78c7c7,0xbb75b573,0xbb6f3afe,0xbb6f957b, -0xbb727622,0xbb849589,0xbb91ac34,0xbb99539d,0xbbb7c616,0x395d3cad,0x3a18b988,0x3b1ebace,0xbb9f2678,0xbbc6e50f,0xb8658630,0xbb63d644,0xbba82db1,0xbb30318c,0xbafee553,0xba91341f,0xb8b02dfc,0x388c4538,0xb8dce9f6,0xb8aaf871,0xbbb489f3,0xbb96839b,0x3a8a843d,0xbba161cb,0xbb8ee3c6, -0x3b0b5c33,0x3a3a17ed,0x3a0dd6bb,0x3a4551ff,0x3a5cae7e,0x3a5e7f16,0x3a3a67de,0x3a1afcd5,0x3a03b64b,0x3a47eea1,0x39c72af7,0x396d123c,0x397b5263,0xb985c4e6,0xb9710de5,0x3922a22a,0x39dea898,0x3b11e568,0xba9cadd3,0xbbd008ce,0xb9ddbc63,0xbb0d64c7,0xbaac5a15,0xbb30e2c7,0xba784eb7, -0x3ace1a7c,0xbafac24c,0xba50925e,0xbad4395e,0x3a7c6675,0xbabcf854,0xbb249a1a,0xbaef0874,0xbb0369bd,0xba805548,0xbb8a7048,0xbb029ca9,0x3a55d61d,0xb9ab340a,0x39d3e7b8,0x390cc5aa,0xb92652eb,0xba269fa3,0xba1fd6c3,0xb97ead0c,0x3aa6a00c,0xb9cd4b62,0xba86e38e,0xba38daa8,0xbb381e52, -0xbb2f985b,0xbaaa842b,0xb974f591,0x3b1748ac,0xba87d3f6,0xbbb416b9,0xba956a76,0xbb39f89a,0xbac3c4e0,0xbb37fc8b,0x3956802b,0xbaa6f9fa,0x3b6805ac,0xbb5959d2,0x3b9e29f5,0x3b2071b0,0xbad175af,0xba89855d,0xba3e2774,0xb9446593,0xba3e58f7,0xbb407d9b,0xba4bcd64,0x3a5cdc27,0xbaa1daa1, -0x39729387,0x3852be88,0x39f46356,0xba5468cf,0xba955fa3,0xba9c0b15,0x3a9935f0,0xbac52378,0xbb330098,0xbb2678ca,0xbbc85598,0xbbbbdbeb,0xbb2bbb67,0xba4f4d78,0x3ba98955,0xba31fc9f,0xbbe97e6d,0xbb4f2ada,0xb9d7de17,0xb799548e,0x3a45196c,0x39489c61,0x3b32dee7,0x3b86a097,0x3b50266e, -0x3bf4606a,0x3b72a173,0x3afbe64c,0xba33d9f3,0x3a8b8d26,0x3b3411fc,0x3a0ad4f9,0xbb26c87b,0xbb3a61c3,0x39a0397b,0xbb00b6a2,0xba61b83a,0xbaa1856c,0xbb079d6b,0xbb86635f,0xbb567582,0xbb2337bd,0x3b49307e,0xbb36b7e1,0xbb9ffe43,0xbb5ff9db,0xbc2da2f5,0xbc16ea4f,0xbb892c02,0xbaea41d4, -0x3b3220b3,0xb8f57b3e,0xbba7f96a,0x39bf10fd,0x3944cbc4,0x38b2b964,0x3a441573,0x3a1c7703,0x3b5409e9,0x3b9099cd,0x3b9b6bee,0x3bda40b0,0x3bac22b5,0x39a31f3c,0x3b4ef7ea,0x3b4fd932,0x3b9e1b68,0x3bc9f721,0xbb50ce92,0xba95c0f1,0x38e7377d,0xbb4e83f9,0xbacf3991,0xba869bb9,0xba905197, -0xbb12aa64,0xbb335fa7,0xbb055a3a,0x3b48e295,0xbb2495d8,0xbbcff686,0xbbbaf10b,0xbc6bfa79,0xbc562f4a,0xbba03ac7,0xbaad426d,0x3babd4c2,0x3ba63d9e,0xbc471bcd,0xbc64e5fb,0xbc48bd34,0xbb8603f3,0x3ad77c27,0x3b0f8446,0x3c4011d5,0x3c26b119,0x3b304b6d,0xba6a04e3,0x3ae498d7,0x3c10e786, -0x3b70febd,0x3b552210,0x389c3378,0x3ac7a94d,0xbb967b56,0xbb1e92a8,0x3b859bfd,0x3bb16800,0x3c3a2e39,0x3bd7efb4,0x3bff84d8,0x3c81d833,0x3c0b8b39,0x3b0a56eb,0xbb95069c,0xbbb378dc,0xbb7c3999,0xb9cff102,0x3b7aada4,0x3bc2cabb,0x3baed09f,0x3bacb61b,0x3b94aa30,0xbcb5a957,0x3a0f5a7c, -0x3c83c02a,0xbbee3d97,0x3b838476,0x3b6b4520,0xb9d1a49e,0x3b044327,0x3b368b93,0x3bde36dc,0x3bb53a15,0x3b6deea3,0x3b617064,0x3bbb767b,0x3bfd931b,0x3afabf12,0x3b34511c,0x3a87ff01,0xba341289,0x3b08ca75,0xba51bfc1,0xb99a598b,0x3b301952,0x3b41bfc2,0x3b8c019a,0x3a1e3ae5,0x3a990446, -0xbb3f8b2a,0x3bb16d08,0x3a278c51,0xbc443270,0xbc3e8bee,0xbc191a6b,0xbb8455bd,0xba6f1331,0x3a6f3dab,0xbc8a4b03,0xbb96c105,0xba95b115,0xbadaec1e,0x3b8a6821,0x3b25f7dd,0x3a75c638,0x3ae46296,0x3ab85d1b,0x3b84fb7e,0x3b29348f,0x3b39df7d,0x3b8598e8,0x3a0eb48b,0x3a907b1e,0xbb34c68a, -0xbb0290bb,0xbb5c290e,0xba8e86c1,0x3ad6efcc,0x3a3564fc,0x3b372191,0xbaa5abe7,0xbaab234e,0xbb2dc2be,0x3b20bf89,0x3b8172ee,0x3b917927,0x3c25cf44,0x3b929743,0xbc40b127,0xbc609ba0,0xbc5425f5,0xbb7950e1,0x3a500b65,0x3a96723c,0x3b37cb75,0xba6ecbaf,0xba479f77,0x3a12f955,0x3b1f8a11, -0x3b1eaebb,0xba3cefb8,0x3af02bab,0x3af522cf,0x3ada5574,0x3ab6952a,0x3ae1f192,0x3b2b7762,0x3a70ffbd,0xbab25357,0xbb3c599d,0xbac483ab,0xbb56f307,0xbb8600f7,0x3b1e36ee,0x39ce660c,0x3b5ca0b2,0xbb81dbc6,0xbbd9fe5d,0xbbe64520,0xbb7c050e,0xbb31560b,0xbacdee6d,0x3a6915e4,0xba6d1f37, -0xbbe1ba54,0xbc528b2c,0xbc6daaec,0xbc2ca2cb,0xbb1ebb0e,0xbbffba58,0xba08bd2d,0xb8becc08,0x3adcc659,0xbbb067f4,0xbb174364,0xbb5c1095,0xbb85446b,0xbaaa3383,0xb9d2467a,0xb9c4e6fd,0x3a7b5899,0x3a3f701c,0x3a90f793,0x3b04cfc7,0x3b248007,0x3a7dbb1c,0x39d2dace,0xb989d4f5,0x3b684c60, -0x3b1e9859,0x3ab2ca19,0x3a88ed1a,0xbad41a81,0xbb271a4a,0xbadc9afc,0xbbb22aa7,0xbc1032ab,0xbc824de1,0xbc1f436e,0xbc1471e5,0xbb474bf1,0xbc1f52c5,0xbc40c113,0xbc5da663,0xbc5a2492,0xbc84982a,0xbc86903f,0xbc483e08,0xbc8aa4e4,0xbc8dcb8f,0xbc7d7398,0xbc4b9c49,0xbbf5724f,0xbb92a264, -0xbb0fe107,0xbae459fe,0xbb103de8,0xba4da538,0x3a95f2b9,0x3a2bb96e,0x3a95c907,0xb919ef2c,0xba2fc9a7,0xbaf2bb78,0xba9fc3fd,0xba07e591,0xb9b356b1,0x3b6f932f,0x3b047303,0xba2299df,0xbbbc9829,0xbc05e438,0xbc253e44,0xbc40ee9c,0xbc5f3bdd,0xbc43a2b7,0xbc005c7d,0xbc4e9002,0xbc661801, -0xbc4f3895,0xbc800394,0xbc634048,0xbc8103df,0xbc7574dd,0xbc40cf43,0xbc00ff65,0xbc0bad15,0xbc0040d9,0xbc1d9ffa,0xbc059a09,0xbc0c9039,0xbb8e6768,0xbbacbad1,0xbb150187,0x3a96881c,0x39ad28bf,0x39a66f47,0x3732a718,0x3b2fa8ca,0x3b371efa,0x3b8f9eb4,0x3b26db5b,0x3b099186,0x3b8091c3, -0xba113c41,0xbadd8907,0xbb87cfef,0xbb7034c4,0xbb5b3349,0xbb67178e,0xbb86bec8,0xbbe80844,0xbc417534,0xbc4e750f,0xbc599765,0xbc3fcd58,0xbc5deede,0xbc450145,0xbc8de6a5,0xbc8a50a5,0xbc6a268b,0xbc3eadb6,0xbc09c533,0xbc0d734f,0xbbd7d3e1,0xbbbbbecb,0xbb5d75a1,0xbae226d3,0xba4c6ae6, -0xb9a1f8d0,0x3b145ff2,0x3a0590e8,0x3a288533,0xbae2344a,0xb9e0da4c,0x3a0ba64e,0xba2224bc,0x3b762619,0x3b5bf09d,0x3bb6c3d4,0x3b515590,0x3b0b6bed,0x3a0890a1,0xb9cb05ba,0xbabbf5a6,0xbb2a79b1,0xbb2abd87,0xbb56a710,0xbb9dfcc1,0xbbf92964,0xbc1758da,0xbc183cbd,0xbc42c4fd,0xbc23b2a0, -0xbc45cd03,0xbc4e3b4e,0xbc2e4454,0xbc3db238,0xbc12e55d,0xbbcae6ce,0xbb3264d5,0xbb013b42,0xba5ada4c,0xbaabc5e6,0x39111b24,0x3aa64e66,0x3aa417c5,0xb962428b,0xb9acbfbf,0xba879475,0xbaa5995c,0xbb8406cb,0xba95174a,0x3b1fcfcc,0x3ac7db84,0x3b72fe9f,0x3b28acf1,0x3b1ba096,0x3ad9e09c, -0x39a7e63e,0xbaa25c38,0xbb5d3356,0xbb71c9c8,0xbb6cd09a,0xbb453a57,0xbb79a191,0xbbcaace3,0xbc094a5e,0xbc23cf93,0xbb8c498c,0xbb714069,0xbbbb90ca,0xbb221848,0xbb200392,0xbb36fe98,0xbb3c6232,0xbb3c1b0e,0xbb253785,0xbb7ec6e7,0xbb7dc57d,0xbb80de7c,0xbb36f823,0xbb19c9a8,0xbb6fa4ec, -0xbb824af4,0xbb90f258,0xbb3e9811,0xbba3a51a,0xba72e993,0xbb04165d,0xbb1b26df,0xbb40522a,0xbb3ecc2d,0xbb32a68b,0xbb3620ac,0xbb2753b1,0xbb37b0bd,0xbb42da04,0xbb863787,0xbbbc49c6,0xbc025bf5,0xbbfc050f,0xbbd290dd,0xbba92b7a,0xbb9cb4c9,0xbb262d08,0xbb235213,0xbbcc8d7f,0xbbeb50ac, -0xbb995362,0xbbb76c13,0xbbd581f8,0xbb994539,0xbb90231f,0xbb726fb1,0xbb496fec,0xbb4d9b30,0xbb619089,0xbb6510cd,0xbbbb588c,0xbb6fbb1f,0xbb640f62,0xbbc6a2f1,0xbb91bf3b,0xb99cf010,0xba555a44,0xba1492de,0xb9c05354,0xb983a5f6,0xb9a434f4,0xb9b32ec3,0xba366537,0xba9d1f42,0xbaceb447, -0xbae6b698,0xbacd6fdf,0xbabdce88,0xbab4adf7,0xbaee22c4,0xbb191d16,0xbb2cfec7,0xbb4f8bbd,0x3bf94ba5,0x3b8f7be5,0x3b88de98,0x3c11d015,0x3bccc37c,0xba9e8add,0x3c013065,0x3bce8429,0x3a2d5b44,0x39437e2d,0xba00b7ff,0xba57036a,0xba5b1b4d,0xbadd847b,0xba9651a9,0x3bd87c2f,0x3c088024, -0xbb156b08,0x3bae2434,0x3bfe0aea,0x3b882f86,0x3b9bd097,0x3bac6070,0x3baaeb6f,0x3bac3743,0x3ba72347,0x3b9c7f62,0x3b99d534,0x3b9d89a6,0x3ba984b8,0x3bae0ba5,0x3baa4d51,0x3bb2a777,0x3baf5341,0x3ba7c417,0x3b89563e,0x3b982d82,0x3ba73aa6,0x3c0bd0c9,0x3b9c3ecb,0x3b913a66,0x3b800c53, -0x3bb60a4d,0x3be0b39a,0x3b73160c,0x3b833a3f,0x3be64a21,0x3bb0f4cd,0x3c09e94d,0x3be7fe77,0x3ba13078,0x3b0e01a5,0x3bbdfa76,0x3baa7570,0x3ba92b72,0x3bc5e035,0x3c0179a3,0x3bb6d348,0x3be3f7aa,0x3bf23401,0x3be90137,0x3bdfcbc5,0x3bedb055,0x3bd16a5f,0x3be3e4c6,0x3c0bb896,0x3c09d89a, -0x3c05ef31,0x3c0f55f4,0x3c0c9b79,0x3bf924c7,0x3b8d936a,0x3bc174cb,0x3b81664a,0x3bdae486,0x3bde8ef7,0x3bd62ee3,0x3bb12094,0x3bad03f1,0x3bad95e2,0x3b7d6de9,0x3bc1672b,0x3baf5e4f,0x3c0d53c1,0x3c0d6a4f,0x3bc72e5d,0x3bef2ee6,0x3ba7cbe7,0x3ba39063,0x3bc97184,0x3b9767b2,0x3bc997d0, -0x3baa7ac3,0x3bd50043,0x3c0ac560,0x3c19a854,0x3c12d3d3,0x3c0073a7,0x3beaa9c2,0x3bc9936f,0x3bd94812,0x3c2ac0c4,0x3c1d6137,0x3c2b2d51,0x3c30ce38,0x3c28bc6e,0x3c0166a8,0x3b0ecdb0,0x3bb5ac51,0x3b9461af,0x3bfc4311,0x3be28775,0x3b9f34bb,0x3b88b0c2,0x3b5e7ce1,0x3b4abe96,0x3b8ca930, -0x3b6c224f,0x3ba53f61,0x3b82a924,0x3be305c6,0x3c0e8e9c,0x3b22ecaf,0x3b86322d,0x3b4222a5,0x3ba6a99c,0x3ba229ce,0x3bc0a78f,0x3ba364f6,0x3bd0ca4f,0x3c02e847,0x3c347b71,0x3c32e163,0x3c33dc08,0x3c1d9390,0x3bff4596,0x3c0c41d6,0x3c7162d5,0x3c4ddd2f,0x3c6782b8,0x3c6d946e,0x3c6005ab, -0x3c1cae08,0xb9493c92,0x3ba81eef,0x3b2e60c9,0x3b93223b,0x3bc1ce16,0x3ba7279b,0x3b93e59e,0x3b61fe34,0x3b19a8c0,0x3a29def9,0x3b569f97,0x3bab7cc6,0x3b5347fc,0x3bd6c161,0x3b9d8033,0x3adbf7c8,0x3b3f8277,0x3b90ee65,0x3bdec539,0x3aff25e8,0x3bbd0a1c,0x3b843801,0x3bdba8df,0x3c386740, -0x3c5c708c,0x3c4b87fd,0x3c2cc405,0x3bf9635f,0x3bbda63a,0x3bff0377,0x3c65e2ed,0x3c6bfee6,0x3c7eaa61,0x3c732abd,0x3c6c1aee,0x3c06c757,0xbb115908,0x3b920438,0x3c4ee6f4,0x3c8fc9b8,0x3c2a96b3,0x3a2c76c8,0xbbce42e7,0xba12375c,0x3b8529f1,0x3b63c1a2,0x3c448b3a,0x3c36852e,0x3b8d6937, -0x3a632b56,0x3ac94802,0x3c0b4f75,0x3b86fb8d,0x3b32f823,0x3ba50e7d,0x3b46fd87,0x3bd7f232,0x3c0f92b8,0x3c1c9de8,0x3beb950f,0x3b8f0102,0x3bdb4bb8,0x3bea57c0,0x3c2e7c11,0x3b224cc8,0xbb47e97f,0xbb14e384,0xb932156e,0x3c06297e,0x3ca8f154,0x3cc37f13,0x3cb84898,0x3c768fb6,0x3c633d87, -0xbaa54b39,0xbc6b4686,0x3c3a2193,0x3c63a051,0x3b134187,0x3bf56bb8,0x3b8a5627,0x3b6efc53,0x3afeb91d,0x3b4a51e3,0x3bf2bc66,0x3bb85149,0x3b8de6b8,0x3b4f8083,0x3bed3693,0x3bfa5b85,0x3b992ff5,0x3b658185,0x3b53b1a3,0x3bc3c4b2,0x3c254e16,0x3c6a8fda,0x3c992d7d,0x3c70772b,0x3c3f80b5, -0x3c16ef9e,0x3ba04939,0x3b6ccf4b,0x3ad04068,0x3c292c40,0x3c10d027,0xbb361603,0x3b394cde,0x3ab257e5,0xbb7de1fb,0x3b5de5ea,0x3b5c1901,0xbc2c2aef,0xbabbc3f5,0x3924601d,0x3b819756,0x3bb13e40,0x3b9226bf,0x3b1efc28,0x3b28323d,0x3aff1932,0x3b7e075e,0x3b420463,0x3b71030b,0x3b5004ee, -0x3b835d7a,0x3b3b2b6b,0x389125ca,0x3aeae45c,0x3b20742a,0x3b4d41f5,0x3b3f44bc,0x3bbef6cd,0x3c17f980,0x3c042d9c,0x3c0e5105,0x3c3efa2f,0x3c31356e,0x3c140df0,0x3ba98ae5,0x3c255dfe,0x3c53e291,0x3c581c67,0x3c9461e1,0x3c981009,0x3c88ed95,0x3c27c53e,0x3c442600,0x3bafc6c4,0xb93e4c98, -0x3b04b11b,0x3a65b52b,0x3b9c8437,0x3b8c023f,0xba60168e,0x3b26bcfa,0x3afc8b06,0x3b1129bc,0x3af9cb41,0x3b215fe4,0x3b441e00,0x3a48134d,0x3a8b280d,0xb854324e,0xba689b49,0x3a7f2193,0x3b4f05a7,0x3a9bb881,0x3b71f01f,0x3bdc3895,0x3b8ae871,0x3bb7b179,0x3c2d6908,0x3c5b2fd3,0x3c4ec1d8, -0x3c1a34e1,0x3c29ec4e,0x3c3f5b93,0x3c88414f,0x3cb7a4e0,0x3cd803a4,0x3d0800e3,0x3c9641ce,0x3c850e8e,0x3bcc7d96,0x3babac7c,0x3a6ee267,0xbb333a58,0xbac691b2,0xbb5aa61f,0xbb00efdf,0xba3bcd3d,0x38c17243,0x3a870817,0x3ad6e901,0x3ad0e153,0x3a78d3ff,0x3b3c0321,0x3b4ebc81,0x3ae4a580, -0x3ac8d2a1,0x3b0a2773,0x3b437180,0x3bc02f46,0x3c0c2f4d,0x3c2063b5,0x3c0620ae,0x3bbcb83e,0x3b7a88d0,0x3b3af102,0x3b08893b,0x3aa934b7,0x3b45e0d9,0x3bb46b97,0x3bb1557c,0x3ca7bd2e,0x3cd41eb9,0x3d00dfdf,0x3cc8b609,0x3c8ac343,0x3b9d5d1f,0xbc256b0f,0xbbf5b7f4,0xbc677e64,0xbc48a2c5, -0xbc103c4b,0xbbb32d31,0xbabfa3f4,0xb92a9950,0x381e66db,0xba69da12,0xb9e184c8,0x3a32c644,0x3a8d48fc,0x3ac36b57,0x3883108b,0x3b42a8a8,0x3b6cd10a,0x3b5bf2e5,0x3a5d6507,0xb9462cc5,0x3b13aea1,0x3b783b7d,0x3bb5d552,0x3c055cda,0x3c0b91c4,0x3c09e146,0x3c4e2e9c,0x3b609ac8,0x3b7c2c04, -0x3c48d3ac,0x3c7c34d5,0x3c940b1d,0x3c9ebf70,0x3c88d51f,0x3b3bff75,0x3a002693,0xbbb792ae,0xbbadabb1,0xbaabc3a3,0xbbc1ff61,0xbbeb8b93,0xbbf9610f,0xbbfaf7d9,0xbbaee8a8,0xbbba4841,0xbb91fb35,0xbb514c4b,0x3a28e096,0x3ad54999,0x3b53aaf3,0x3b42da26,0x3b62debb,0x3b51db76,0x3b2c5586, -0x3b0ec679,0x3b83d12e,0x3bc18693,0x3bdae6ab,0x3bcc26d0,0x3b71bb25,0x3af7f9f5,0xba1b4082,0xbb6c2f85,0xbb72db94,0xbb404197,0xb9c44e9c,0xbb943b0d,0xbb7b5915,0xba1fb616,0x3ad51e3c,0xbba8c0ff,0xbc2dc3e8,0xbbd25a34,0xbbe6a396,0xbb9d264e,0xbbc26823,0xbba59a19,0xbbae4946,0xbb778a98, -0xbb86d8ae,0xbafdf517,0xbb3cb9cf,0xb9fcf7e4,0x3ab78ddd,0x3acbd56e,0x3ac9d115,0x3ac95750,0x3b4a943c,0x3b6d9449,0x3b82a122,0x3b8b0fee,0x3b9e93b0,0x3bcb6ada,0x3bbe6235,0x3bacacfe,0x3b7714a6,0x3b72d1f7,0x3b32081a,0x3a60a8e5,0x3a6e64a3,0x3a8dc73d,0x3b2b6ce9,0xbae2d4e1,0xbb958fc6, -0xbbb7e926,0xbbe8021e,0xbbf77727,0xbbf2b641,0xbc04825d,0xbbe4a373,0xbbf3df76,0xbbafb7bc,0xbb4b0601,0xba8eae56,0xb73da205,0xb6c6b368,0x3b49fd89,0x3b2758cc,0x3b21d52f,0x3b8971e2,0x3abf6d2f,0x3adcae9f,0x3a544ba0,0x3aa21c1d,0x3afc3608,0x3b6b4d71,0x3b1d40f4,0x3b3cace2,0x3b452299, -0x3b1e0720,0x3b082bde,0x3b01c66d,0x3b0a4701,0x3b26ad2e,0x3b616bcd,0x3b677ca7,0x3b7413d4,0x3b74eec6,0x3ad99a62,0xb9c2f11d,0xbb56d92e,0xbba79fc9,0xba793156,0xbaa3d938,0xbafb3f07,0x367a5147,0x3b0ec41f,0x3a78d77a,0x3aa9633f,0xba96983d,0xb9706808,0x3a4eb9bf,0x3a0f7016,0x3ad314ef, -0x3b101e71,0x3b36f9ef,0x3b88df44,0x3b6cf863,0x3ab91954,0x3b054a5f,0xba0958a8,0xbb1654f3,0xbb33abab,0xbaffa171,0xbb086527,0xbac94e91,0xba945c6a,0xba84a881,0xba9fc98d,0xbadf67f0,0xbadce142,0xbac26187,0xba9afaa9,0xb90d5221,0xba5342e6,0xba8df77d,0xba62d54b,0xba3b9ca8,0x3917adcf, -0x3974120f,0x3b01a5c3,0xb9072b6f,0xbb8e3c31,0x3b0c65ec,0x3aee61fb,0xbaec508d,0xbae9e504,0xbafd210b,0xbb07585e,0xbb0b8863,0xbb26f1c5,0xbb3158e2,0x3b44a000,0x3b73695b,0xbb4e6bc4,0x3b0bca3a,0x3b670a72,0x3aa5887e,0x3ae948ab,0x3ae3976b,0x3add28bd,0x3ad16ee7,0x3abee8f4,0x3ac2c15e, -0x3ae30112,0x3b02dbff,0x3b1335b4,0x3b2032ab,0x3b11dc9c,0x3b185d91,0x3b003b65,0x3acd3c01,0x3a8fc37b,0x3a18790d,0x3b2fc866,0xbbaf9ad7,0xbb79cd6a,0xbba94635,0xbbc04bed,0x39a409ef,0x3c0249f2,0xbba9e825,0xba193a28,0x3bdf744d,0x3bffe12b,0x3c0f183e,0x3c0794bc,0x3c1070c1,0x3c2a6238, -0x3c0caa64,0xba06f191,0xbba48d45,0x3c19cb16,0x3a8d9c7d,0xbb852107,0xbb999e9e,0xbb81f442,0xbb94d980,0xbb90d656,0xbb9a716c,0xbb9bcbd5,0xbb9a4c1c,0xbb9a9be8,0xbb991b90,0xbb88e16f,0xbb99c1fe,0xbb99dac3,0xbb9cda00,0xbba72d2a,0xbba283e7,0xbb887cb2,0xbb8c077e,0xbb6b236f,0xbbd74978, -0x3b9168a7,0xbac54a77,0x3b030598,0xbaa53b2f,0xbadd2e2c,0x3a9744bd,0xb9860234,0xb99b2991,0x3ab12db7,0x39823d75,0xb9b023fe,0x3a7e7ec4,0x3b9fcdeb,0xbb361651,0x38bd1346,0xbaba8f82,0x39d8d24a,0xbbdb59e9,0xbba9c236,0xbbc69e5d,0xbbd02cf5,0xbbdade1f,0xbbee73cc,0xbc09e0fc,0xbc078a46, -0xbc007053,0xbbbf5cfe,0xbbfdbed8,0xbc021849,0xbc01ff6d,0xbc177453,0xbc0be35e,0xbbbb6bdc,0xbba9b25b,0xbb8a9cbb,0xbba6e879,0xbaf5c7cc,0xbb8bab1c,0xb9e51792,0xba4ae9bc,0x3a40b572,0xbb059fe9,0x3a8b09a2,0xb95ef522,0x39460033,0xba107d00,0x3b8d8bc1,0xbacbb455,0x38f29393,0xbb0f0081, -0xbb132862,0x392d4573,0xbacf8062,0xbb6f7fcd,0xbbe49d05,0xbbe8b1dd,0xbc057746,0xbc0d4874,0xbc140295,0xbc22fdbd,0xbc26cdb5,0xbc1ad265,0xbbd0d64a,0xbc147193,0xbc230cdc,0xbc1fb41d,0xbc459ce7,0xbc2fd727,0xbbb96faf,0xbbb6f827,0xbb0355d2,0xbb4950e2,0x39ac9253,0xba9421d2,0xb8b07f5f, -0x3a8cc7ea,0x3b1aba69,0xba1be338,0x3b33a689,0x3b637cd6,0x3b749b9a,0x3bd51102,0x3b9a6f2b,0x3a9480a0,0x3a52f8ef,0xb9c03028,0xb98b4100,0xba3d5d01,0xba540687,0xbb597f34,0xbc00e687,0xbc001498,0xbc1fffe8,0xbc3c2917,0xbc629278,0xbc763564,0xbc6a7e09,0xbc550562,0xbbec29a6,0xbc4e9d8e, -0xbc683606,0xbc5a3bf2,0xbc90c768,0xbc6dfe1f,0xbbd65c07,0xbbad9872,0xbb5e7fe2,0xbb96a045,0xbb3545d2,0xbab151c7,0xba3322bd,0x3a3d99ee,0x3aab5772,0x3a87ab9e,0x3b560b39,0x3b782352,0x3b6be5d3,0x3bedfe88,0x3baee48f,0x3ab97e61,0x3aced7f8,0x3ae30ac1,0x3b3dd911,0x39a360e5,0x3a5b11c1, -0xbb9b62d5,0xbc02dabd,0xbc23d128,0xbc46c80f,0xbc4bd617,0xbc673262,0xbc6928a1,0xbc79898c,0xbc58e269,0xbbd1417d,0xbc519942,0xbc6b8de0,0xbc56153b,0xbca01a52,0xbc864d43,0xbbc744ad,0xbba62e21,0xbbe3ac7d,0xbb464be5,0xba8ec276,0xbb21db8e,0xbc1cdf75,0xbad80a76,0xb8fb366a,0x3aed62f1, -0x3c0e678d,0x3c28c859,0x3bbc5f08,0xb9371c02,0x3a9f6a62,0x3c00a59c,0x3b192bcc,0x3a38bf52,0x3ad383b1,0x398cd278,0xba95a652,0xbb6f3805,0xbb92076b,0xbadd2c8f,0x3b054ae1,0x3b448d96,0x3b2894ce,0x3c43ae0e,0xbbd174ba,0xbc66e4e4,0xbc91be92,0xbc82b88b,0xbc6df67d,0xbc83b902,0xbb93dd6f, -0xbb4951c5,0xbbd1ba28,0xbc24ff4e,0xbb18395c,0xbcabab90,0xbb46d215,0x39a708c3,0x3a8184f8,0x3a4bc6a6,0x3b70367f,0x3b4af236,0x3b04bfeb,0x3b0fc8d1,0x3bcbf0d1,0x3bd69816,0x3ba90bd0,0x3b216171,0x3b9cc032,0x3b90dbb9,0x3a78c4c8,0x3a329b36,0x3b6c3f05,0x3a3138df,0xbbce3266,0xbbe62327, -0xbc1b5a4f,0xbb0f832d,0xb9b20edd,0x3b642b55,0xb9e72cc5,0xb9bf8383,0xbb1ecf4b,0x3ae9f6e3,0xb94eb5fe,0xbbca4273,0xbc04a1b9,0xbbe9c494,0xbbad459c,0xba33a61d,0x3adbf470,0xbc6bbf06,0xbbff7554,0xbb80200a,0x3a5090f4,0x3b668e53,0x3b609c5f,0x3a46ccd7,0x3ad01aba,0x3a5d38ed,0x3b6edefb, -0x3b24c00c,0x3b36f260,0x3b7f8e30,0x39b61921,0xb8b57a05,0xbaf7eedb,0xbb0dc017,0xbb7fd3e9,0xbba424a9,0xbb8e676c,0xbb573c4c,0xba2f4e0d,0xbbfa7693,0xbc1c76ea,0xbc230448,0xbc07bd96,0xbbc86291,0xbac93e86,0xbb191878,0xbc3a2a1c,0xbcb6695e,0xbcba53af,0xbc9f0274,0xbc16af87,0x3a95ee35, -0x3aa999ad,0x3b925e4d,0x3bb73a75,0x3a824ed3,0x3a0f8046,0x3b669b89,0x3b3b6577,0xbb0ec83f,0x3adddce5,0x3b0c5cb6,0x3a9d19c4,0x3ab120cb,0x3aefd7ce,0x3b44abd1,0x38aa0461,0xbb34cd86,0xbb2f66d7,0xbb32e188,0xbb2481cf,0xbb82f886,0xbb3fb98c,0xbb52b3ae,0xb75f5eab,0xbc30bfdf,0xbc70d1a0, -0xbc7f077a,0xbc6be362,0xbc3bfda8,0xbbd4d9d0,0xbc17bf36,0xbc718272,0xbcac93b4,0xbcde79b6,0xbce23c3a,0xbcba6d2e,0xbbc403bd,0xbc56bda4,0x37579495,0xbb370df8,0xbaa56a43,0xbbb319c9,0xbbad142a,0xbba2981e,0xbb51c919,0xba9971e5,0x38d502e6,0xb95d4306,0x3ab5ef27,0x3aa72aee,0xb9cb3774, -0x3a25c6fe,0x3a8ebf9e,0x3a2a339e,0xbabfcd73,0x37a5adb1,0x3a8854ab,0xbaa89f98,0xbb6acfc7,0xbbb6064b,0xbbbcfd64,0xbb9fe22e,0xbb900ddd,0xbbd529f3,0xbc07d732,0xbc0e825a,0xbbbe7f50,0xbbb4b711,0xbb1414da,0xbc52db16,0xbc9b49ff,0xbced31cd,0xbc957ba6,0xbce32121,0xbc43156e,0xba2a6dfd, -0xbc854f05,0xbc3967ab,0xbc5c6962,0xbc3f1495,0xbc0f695f,0xbb911e7a,0xbb1e1416,0xbad401e5,0xbab9bed5,0xba79515f,0xbad0e1ee,0xb8befc30,0x39803d65,0xba4f4c8f,0xbac6dc65,0xbb0cfba3,0xb94d1e0a,0xbb1088c3,0xb8f8621c,0x3a2a515b,0x39840134,0xbb1fe602,0xbc037a27,0xbc21e688,0xbc5b3e7a, -0xbc8941c2,0xbca38b98,0xbcaa1ce6,0xbcabf592,0xbcb69678,0xbcac1a76,0xbca14221,0xbcbfbecb,0xbc8a2793,0xbc7269b0,0xbbfd0224,0xbbf033dd,0xbbc80ec9,0xbc0c411d,0xbc24f6bb,0xbc1cc0a2,0xbc17957f,0xbc094163,0xbbd80d0f,0xbbf6a10e,0xbbb2617b,0xbadd532f,0xb99083b9,0x3a0640ee,0x37339290, -0x3ac6a3d6,0x3b39a87e,0x3b198ac2,0xba78443d,0xbb16bfcf,0xbb03fcfc,0xbb3dab7e,0xbb70c48c,0xbbb9a42c,0xbbbf0cf1,0xbbb3692e,0xbb71b413,0xbbd45466,0xbc259fea,0xbc8a4b46,0xbc8a4091,0xbc93bc39,0xbc99578f,0xbc8d71aa,0xbc8682dc,0xbc2ab38a,0xbc52f871,0xbc379b9f,0xbc236959,0xbc2b97dc, -0xbc08f321,0xbbe786e6,0xbbc49cd5,0xbbaebf15,0xbb6a66d8,0xbb4ded2f,0xbaa3ef9c,0x398c805c,0xb8a2391d,0x3a71c646,0x39dbc1c0,0x3a74bdf9,0x3a8c08ed,0x3b0bb284,0x3a01e20e,0x3a8727d4,0x3ae959ed,0x3a86e376,0x398e8881,0xb94ddfec,0xbaeb5593,0xbb5fd14e,0xbbb4b344,0xbbf42b93,0xbc234834, -0xbc6207cb,0xbc658188,0xbc67cad7,0xbc794547,0xbc5e9240,0xbc44fe46,0xbc6c820d,0xbc22e73a,0xbc2b26a4,0xbc0faa7d,0xbbc35bba,0xbb980ac9,0xbb6c043c,0xbb339b72,0xbb5d5bff,0xbb0d91ec,0xbb899bb1,0x399be348,0xba830f71,0x3a94bbb1,0xba4b308d,0xb9fb2fb5,0xb9ba7838,0x3a1c6f8a,0xba86912d, -0x3a8cb8b4,0x3a8ea09d,0x3b06fd3f,0x3b13a0c0,0x3b390513,0x3b62bc78,0x3901a718,0xbb1ffb55,0xbbb418ed,0xbbdb6cd5,0xbbf7d369,0xbc09e70f,0xbc14d16b,0xbc2ed35a,0xbc41ed15,0xbc49547d,0xbbd66837,0xbbde380b,0xbaf2dca8,0xbba1319c,0xbb92ea10,0xbb949348,0xbbc8ddba,0xbb1352af,0xbb8f3717, -0xbb1c42ac,0xbad316f2,0xba88487a,0xbb252d11,0xba59ca24,0xbb3cf4f9,0xbb22fc26,0xba594111,0xbb53c11c,0xbaee2329,0xba87f556,0xb9d921b0,0xba7768a6,0xba69ea70,0xba56d2ca,0xba746592,0xba8031f5,0xbaa7c639,0xbb005fd4,0xbb3c9ca0,0xbb9533b8,0xbbd749aa,0xbc134927,0xbc0d814a,0xbbf2d395, -0xbbe38599,0xbbedafd5,0xbb856e6f,0xbba71103,0xbb9ed8fb,0xbaa74766,0x3b34a336,0xbb916056,0xbae7c978,0x3b4c15e7,0x3b84a522,0x3b7fef98,0x3b7e690e,0x3b9489ed,0x3bb8dda8,0x3bc0118f,0xbaba4ec3,0xbb6d9bbb,0x3b82ac34,0xba494255,0xbb4021ef,0xbad07c9e,0xbaf555f4,0xbad7af11,0xbabf0f62, -0xbaadca96,0xba9c0552,0xba8f69ad,0xbadd66c6,0xbb20162a,0xbb40dfeb,0xbb572037,0xbb54cb8d,0xbb641cc1,0xbb64cb6b,0xbb75ba96,0xbb868902,0xbb8a8057,0xbb766386,0x3c077e31,0x3bb84ea4,0x3c0bd20a,0x3bb8cd45,0xbaf5f0eb,0xbbefa37e,0x3bc04ef3,0xb93fdda2,0xbbf48393,0xbc01b3e7,0xbc09480e, -0xbbee5f4d,0xbbf7bc52,0xbc1a9abd,0xbbf82a5c,0xba0d7962,0x3b97b8a6,0xbc0d6204,0xbb17741e,0x3b7cdeff,0x3bfb971b,0x3bcf0286,0x3be29104,0x3be2742f,0x3be21823,0x3bd97349,0x3bc6c568,0x3bc65b17,0x3bcb983c,0x3bdbb7fb,0x3bdec7bd,0x3bd94c06,0x3be2966d,0x3bd570cb,0x3bc98a49,0x3baac7d3, -0x3bc0101d,0x3bea54f8,0x3c27226f,0xbbbc5544,0x3b73f60e,0xbab8bb45,0x3b68f893,0x3b6f205c,0x3a12b113,0x3b862a96,0x3b48699e,0x3aed8e05,0x3b826c05,0x3bbd9a25,0x3ad35170,0xbb994bed,0x3b5e6630,0xb91db038,0x3b2c42f4,0xba4623bb,0x3c041024,0x3c060ba2,0x3c0e2ef0,0x3c18f396,0x3c09444a, -0x3bf9bfc0,0x3bf3c8c6,0x3be7de4b,0x3c02da17,0x3c268da9,0x3c25ad2d,0x3c1f577d,0x3c27c750,0x3c0f93a4,0x3bf9bf9b,0x3ba23635,0x3bcdbfee,0x3be84906,0x3c0ed0f4,0x3a8a89cd,0x3be1988e,0x3ac75cb7,0x3b80bef1,0x3ac8654b,0x3b98ee99,0x3b1329c4,0x3be76632,0x3b633fa2,0x3c335905,0x3b713a9a, -0x3bc16895,0x3b13a639,0x3b59dbe1,0x3b325786,0x3a8dfe51,0x3b0350d3,0x3bb237cc,0x3c3196b1,0x3c260573,0x3c4726a3,0x3c29b129,0x3c13530e,0x3be1bffa,0x3bcdc9fe,0x3bf20703,0x3c452e9f,0x3c34ce8b,0x3c3f80e0,0x3c40976c,0x3c175a19,0x3bd2f467,0x3aefa05a,0x3bb46abd,0x3c0a596a,0x3c251c94, -0xb9a9a510,0x3b2a53fd,0x3b0102e9,0x3b3635d5,0x3b450bfe,0x3b8c9fe8,0x3b7ee1da,0x3bac5dea,0x3b828b05,0x3c07737b,0x3bf28d9e,0x3baefacf,0x3b04beb7,0x3b154647,0x3b166338,0x3b3cb706,0x3ad73cf7,0x3b451c29,0x3c3d979a,0x3c26eb25,0x3c60a731,0x3c3f51e1,0x3c2ad049,0x3bdd8c62,0x3bd7c8e0, -0x3c09c3b4,0x3c85aa07,0x3c697408,0x3c76580c,0x3c80a6fd,0x3c2ae5d3,0x3bcf12c2,0x395512fa,0x3b7532c0,0x3bd1962a,0x3c1574e8,0x39a24e50,0x3b90dfa1,0x3b8ffedf,0x3b9307e1,0x3b50eb10,0x3acf0ce3,0x3b69480a,0x3ba31869,0x3ba9bc24,0x3bf8a00e,0x3bdd1795,0x3b4d15d2,0x3b82dbe9,0x3b77b7a7, -0x3b45bf03,0x3b9cc372,0xba931aca,0x3bb6041e,0x3c42dc84,0x3c5edc8b,0x3c89c16e,0x3c5edfd8,0x3c29d306,0x3bcfb8f1,0x3ba00d18,0x3c07887c,0x3c86d624,0x3c7f114b,0x3c83117a,0x3c702f75,0x3c214ca5,0x3b509ce1,0xbb416cab,0x3b5b938d,0x3c5c21e6,0x3cbe1903,0x3bfc00a1,0x3a0e5e90,0xbbeb57fa, -0xbb6ccda3,0x3b345114,0x3b255cd7,0x3c1c8f54,0x3c3665c6,0x3bf90069,0x3ab9e921,0x3ab7e66f,0x3bf024e4,0x3b27e5c9,0x3b52c298,0x3b326aaf,0x3bd8fbe8,0x3bbcbdec,0x3c24ce58,0x3c793c58,0x3c428591,0x3c5156c0,0x3c2afc8f,0x3c3f9f37,0x3c870266,0x3bdf546b,0x3af172af,0x3b82ee42,0x3c0d7422, -0x3c8780c0,0x3c9f8101,0x3ce2a225,0x3cdba770,0x3c731434,0x3c7c25f4,0x3c192443,0xbc1055d8,0xbc43b337,0x3bc02a4b,0x3b92accf,0x3bde33ad,0x3b45af5c,0x3bae1485,0x3b48fd43,0x3b3228ae,0x3be5868c,0x3becbc51,0x3bbdd963,0x3b56a46e,0x3bcf3c54,0x3bed5ea1,0x3b6c08e3,0x3b3753b3,0xba8fe222, -0x3b5399fc,0x3c4218f1,0x3c6338e2,0x3cb777ca,0x3c8f6c3d,0x3c50ff0c,0x3bd6bd4e,0x3a988a14,0x3b08d0df,0x3bb4af38,0x3c0d4d9e,0x3bd3bcea,0xbb04a4f6,0x3b0e0ba9,0x3ab5f9e1,0xbb8d0c8e,0x3bf6616c,0x3c1529ac,0xbb90cf78,0xb996f124,0xbafb9091,0x3bc6bdf4,0x3ba58b4c,0x3b90982b,0x3b1e8d78, -0x3b170c3c,0x3b2f5c4d,0x3b682a0b,0x3b853708,0x3b8819ab,0x3b5e894f,0x3b723ad8,0x3a821d6e,0x39311c6b,0x3a82efb6,0x397145c6,0x3bade121,0x3b8d3b8a,0x3bafacde,0x3c272c4f,0x3c4086f8,0x3c67280b,0x3c795e87,0x3c81b22d,0x3c4da7c4,0x3c3c9656,0x3c4474d7,0x3c54d6ca,0x3c3b1b73,0x3c79153f, -0x3c88f760,0x3c8c9df1,0x3c4f13be,0x3c5ed805,0x3c07f31d,0x3acbe2d9,0x3bac4695,0xb8c00181,0x3b8b2a4b,0x3b652211,0xba89441b,0x3b3e4ed9,0x3b3efed4,0x3b168819,0x3b2cbc16,0x3b35372b,0x3b6e4a7d,0x3a4e6684,0xb80fee08,0x3a21b6e2,0xb9639e5f,0xba92af72,0x3ad015dc,0x3b84c919,0x3b8abd40, -0x3be5e3f6,0x3c006b02,0x3c234fc9,0x3c4f8059,0x3c7b5bd7,0x3c56457e,0x3c5ae0e1,0x3c22b9a7,0x3c505029,0x3cab3096,0x3cb5dced,0x3ccc113e,0x3ceec3e3,0x3c8e4d0b,0x3c5784a0,0x3a1f5a54,0xba08ac6f,0xbb0b431a,0xbb9e0075,0xbb036300,0xbb7a67bb,0xbb4888da,0x39bd8a87,0x3a9677e9,0x3a117daa, -0x3b3e1a13,0x3afe0bd8,0x3a2658b0,0x3aa3460e,0x3a7dbc05,0x3a7ce4c3,0x3a7d9ab7,0x396344e5,0x3baf4778,0x3c09972f,0x3c30ba50,0x3c3f28f4,0x3c04b59e,0x3b945bee,0x3a92412c,0xb7b4fc86,0xb9398df5,0x3b172498,0x3adfc771,0x3bbd550a,0x3c53d72a,0x3cbb3b27,0x3cdc27cc,0x3d03be47,0x3ca7a94f, -0x3c91042b,0x393f4a5f,0xbc8de71c,0xbbfe0883,0xbc2fd572,0xbc3b77c1,0xbc16cfeb,0xbbb226e4,0xbb5d12fb,0xba418321,0xb9bc7d3d,0xb9280670,0xba327e91,0xba9049ce,0x39758477,0x3a968be3,0x3a9640f8,0x3a5044ce,0x3a6fd88e,0x3ab1b050,0x3a9d7ef4,0xbadb9b47,0x3a2f4f10,0x3afb6ba4,0x3b88ad62, -0x3bfd768f,0x3be21a53,0x3bd725b5,0x3c1d28f3,0x3b608c78,0x3b7b9b19,0x3c10fea8,0x3c61418b,0x3c8a2a02,0x3caa040d,0x3c6ef9e3,0x3b679e65,0xb8bb00df,0xbc0506c0,0xbbda5fe4,0xbbaf88c1,0xbc180e3d,0xbc19149f,0xbc16302a,0xbbef667b,0xbbd63647,0xbba2a778,0xbbbf5333,0xbb8f801d,0xbac36a18, -0x3a654588,0x3b180762,0x3b1ef634,0x3b43de39,0x3ac31452,0x3b482408,0x3b519d9f,0x3b8d8924,0x3b96ebb7,0x3bccdfc5,0x3bb2b991,0x3b581232,0x3ab9e8b3,0xb82ddf4e,0xbad974e9,0xba7feeba,0x3ab8641c,0x3bba2374,0x3b7e04e4,0x3b356d11,0x3aa3ae71,0x3b2b8e4c,0x39869c2b,0xbc351eac,0xbbcdec6c, -0xbbdee735,0xbbc985ef,0xbb7f3fd0,0xbbbfce7a,0xbba1a9b1,0xbb9b0cc5,0xbb97d73a,0xbb92fde6,0xbb87e29f,0xbb2bb227,0xb9124263,0x3a919583,0x3ad11f0f,0x3ab1d419,0x3b181813,0x3b6caf9b,0x3b0b9b30,0x3b9c5ac1,0x3b85aac9,0x3b925794,0x3ba9f756,0x3bb357d2,0x3bb4684d,0x3b993566,0x3b5436e7, -0x3a471799,0x3a8d8615,0x3aa56651,0x3b37491d,0xb99af40e,0xbb33c2fc,0xbb7fb348,0xbba80eaf,0xbb9e46d7,0xbb8797cf,0xbc258509,0xbbd21890,0xbc07b938,0xbbeeb6fa,0xbb88a984,0xba75aca3,0xbaffd72c,0xbb028734,0xbb265c81,0x3a5cd37c,0x382c9e14,0x3b1be4a8,0xba230900,0x3ae91b0f,0x3b0c7b6a, -0x3b27a358,0x3a7426d5,0x3bad67dd,0x3b9eab1b,0x3b7b7ba4,0x3b781b39,0x3b67c248,0x3b753cfa,0x3b8def99,0x3b7faf11,0x3b8353aa,0x3b88e33a,0x3b7faa2d,0x3b5adf75,0x3b499e1a,0x3a8f0712,0xb9fc8ad5,0xbb07bd4d,0xbb77f5d5,0xbaef0626,0xbb27c1a6,0xbbea5e7e,0xbae1cca9,0xba4326d8,0xbb030a5f, -0xba530352,0xbb93e197,0xbab6127e,0xbaef41cf,0xbae8ffa0,0xbadf7f42,0xb86c9581,0xb99ed59b,0x3acf05f2,0x3abbcc31,0xba939265,0x3b31103d,0xbab1c839,0x3b18e918,0x3ab11b44,0x3b22aeb1,0x3b2120b7,0x3b400c68,0x3b44f352,0x3b3a8687,0x3b5e13c2,0x3b5b172a,0x3b628644,0x3b86d7dc,0x3b94ec9b, -0x3bb7e8dc,0x3b80fe28,0x3b1ecd4e,0x3a8aaf32,0x3890be4f,0x3ad67f3e,0x3aff2ca1,0x39f05d5a,0xbb6e125d,0xbbd0d548,0x3a8b4f12,0xbaa32d23,0xbba114b8,0xbbb4a0be,0xbbae5153,0xbba30ccb,0xbbab7778,0xbbc49494,0xbbca6010,0xb8ee806b,0x3b5c5db2,0xbb9e1563,0xb9cf3ff4,0x3b514baa,0x3b7dad31, -0x3b6c72f3,0x3b6bcadb,0x3b6525e2,0x3b5f96e2,0x3b5b33c0,0x3b5999a2,0x3b6259b4,0x3b64d03e,0x3b721f74,0x3b70e46b,0x3b5d0b2e,0x3b60f62e,0x3b40fc03,0x3b30488b,0x3b1b044a,0x3b005b3d,0x3b85e147,0xbb934644,0xbb77307d,0xbbdbf231,0xba88e4d1,0x3bd71336,0x3c1957cc,0xbabfa73a,0x3b9da461, -0x3c297ef7,0x3c33bdc8,0x3c399f49,0x3c2304e8,0x3c2bd847,0x3c493cf0,0x3c277ee8,0x3ba9a668,0xb9f34eb1,0x3c215289,0x3bcf9286,0x39dcecea,0xbbc4b0fe,0xbb801daa,0xbb8ee8de,0xbb9072ef,0xbba1d53b,0xbba6a85c,0xbba545d7,0xbba1cbcb,0xbb9bffae,0xbb89f4ce,0xbb942ee1,0xbb916e14,0xbb91a547, -0xbb952645,0xbb91f691,0xbb8486ee,0xbb8939dc,0xbb8c1ccf,0xbb8701dc,0x3c413eb7,0x390c5559,0x3bacf670,0x3aa9ff36,0x3b0bece8,0x3b4dd7e8,0xb8221b43,0x3b5c7cb6,0x3b83d847,0x3b8bc6be,0x3aa4da3b,0x3b807614,0x3c080340,0xba13f0de,0x3b37415c,0x39cc4edd,0x3bb02fad,0xbb8afb0d,0xbba0c03d, -0xbb9dc18d,0xbbc07c6e,0xbbd53be9,0xbbf0cc3b,0xbc0aad0b,0xbc075c98,0xbbfcdfd5,0xbbbeeefd,0xbbe4432b,0xbbdd2b55,0xbbd88342,0xbbe71015,0xbbd84b05,0xbba51f2f,0xbb921fdd,0xbbb1c22a,0xbb30239c,0x3b890a05,0xbafeb937,0x3b63b66c,0x3b169d22,0x3ba2067f,0xbad081ee,0x3b91a79f,0xba21e66a, -0x3bbe4143,0xba6f7326,0x3bc1bf88,0x3af752d6,0x3b1a6905,0xba76fe8c,0xba9cb315,0x3b025891,0x3b0c1848,0xbb07b5af,0xbbd94a73,0xbba0b531,0xbbf0becd,0xbc0cba79,0xbc24799a,0xbc2dee47,0xbc2d4bbe,0xbc16981b,0xbbc5f93c,0xbbf5f1e1,0xbbf6522a,0xbbe70201,0xbbffd416,0xbbe7fa98,0xbb9d9657, -0xbb996d94,0xbb8a10a8,0x3a55cb95,0x3c13d707,0x3b6698e1,0x3b070af4,0x3b579bb7,0x3b8a792e,0x3a09cfa4,0x3b556ce6,0x3b787475,0x3b90bec3,0x3bc2dc29,0x3bdfbb93,0x3ad214d9,0x3b3a6ac7,0xba2e307d,0xbabe3ecc,0x39008c73,0x3b44fcb8,0x3901f527,0xbbe0b687,0xbb9f0fa1,0xbc02e80e,0xbc358073, -0xbc66d1b7,0xbc7009c2,0xbc67794e,0xbc4aa105,0xbbf1464e,0xbc28a3fd,0xbc28a7ea,0xbc1aba61,0xbc32e21b,0xbc165050,0xbbb913f9,0xbb77e229,0xbba16031,0xbb184e85,0x3b39b99a,0x39c95a64,0x3ac21217,0x3b624594,0x3b308b94,0x3aaeb69f,0x3b696596,0x3b89e57e,0x3b71cc45,0x3c01d57b,0x3bbed3bf, -0x3b44f329,0x3a8db43b,0x3a822b3f,0x3aa4e0bf,0xbb5ac420,0x3bbe7c28,0xbb3d9daf,0xbbde6678,0xbbbfd537,0xbc1e5c1e,0xbc45d5ee,0xbc7a577b,0xbc7d9bb4,0xbc842762,0xbc532cbe,0xbbd57dbd,0xbc25914f,0xbc1596df,0xbc01256f,0xbc26cd3b,0xbc13f51e,0xbba9720d,0xbb8a7081,0xbbe35dcf,0x3a939383, -0x3c6bcc75,0x3c20b5f7,0xbbaa0d34,0xba77e352,0xba978fcc,0x3b3e84bc,0x3bc743ae,0x3c1d09f5,0x3c11ed57,0x3abbf674,0x3a16827f,0x3bd0a392,0x3aec6b17,0x3824f8a8,0x3ba8a50d,0x3ad55004,0x3ba7cf48,0x39baf2ac,0xbbad8c0f,0xbb5b6928,0xbb623cbf,0x3b03139a,0x3934bbd3,0x3ba424ff,0xbc72d922, -0xbcb33573,0xbcbffaeb,0xbc87b5b3,0xbc4f55a9,0xbc717c60,0xba73415c,0xba2a4b99,0xbbeca3ec,0xbc35bd1f,0xbbfe1906,0xbc77f30d,0xbbefc6a6,0xbc3ec661,0x3c47eb7a,0x3abd3460,0x3b510991,0x3bc0e97d,0x3b1e2917,0x3b24a847,0x3bc364ea,0x3bebbf98,0x3bccf012,0x3ad663a9,0x3b7cc369,0x3b02fb9d, -0x3adeed20,0x39454617,0x3ba44eb2,0x3b6269fb,0xbbc2f24b,0xbb59e0d7,0xbba91afa,0x39e339f3,0x3a9a985c,0x3b2d9235,0x3981ea50,0x39281f15,0x3a9ca3ec,0xb9b8117a,0xb93fc91f,0xbb078abf,0xba1b063b,0xba15b5af,0xbbb0192f,0x3a35bb92,0x3b86f2e3,0xbbc71039,0xbbb3b08d,0xbb7c9f92,0x3bbbf2fe, -0x3b710149,0x3b80388f,0x3a823247,0x3b044e0b,0x3ac32edf,0x3b3c97ea,0x3b42c7aa,0x3b51049d,0x3b579b63,0x3abebce0,0x38dbc5d5,0x39856ba9,0xb9a40f0f,0xbab8dba7,0xbb7f55ee,0xbbb417f3,0xbb39b64c,0xba03908c,0xbba48873,0xbbec29f1,0xbbed8641,0xbc059ec2,0xbbf69c9a,0xbb60d8be,0xbc1620eb, -0xbc7d603a,0xbc84902d,0xbc4be117,0xbbfa48d7,0xbaf78847,0x3ba990ed,0x3bda1468,0x3bf75d59,0x3c25691d,0x3b9a052e,0x3ac3dd3f,0x3b8ec9aa,0x3b35a320,0xbb03817b,0x3af91db1,0x3b1d38a1,0x3aa95007,0x3ad6c598,0x3b0e7d50,0x3b4051e2,0xb9304674,0xbae6742c,0xba2ffd4e,0xbb15ea4f,0xb96c826a, -0xba12bbc5,0xbb987856,0xbb2bae51,0xb9fa763e,0xbbfc688e,0xbc286746,0xbc3354f5,0xbc352e73,0xbc0f3d48,0xbb6b21c9,0xbc2da0c7,0xbc74c276,0xbc4e329c,0xbc87d416,0xbc6ecafe,0xbc17626d,0x3a3d68af,0xbbefd0df,0xba1235de,0xbb8dcb65,0xbb8c5d31,0xbb8f9a4e,0xbbb3731b,0xbb98c0fa,0xbb1f66f4, -0xba36ade3,0x3a80d71b,0x3a573238,0x3b0b3e95,0x3af421d4,0xbabc5bfb,0xb8509e9a,0x3998cac7,0x3a74fe2b,0xba9e9690,0x3aa3c2ce,0x39890e31,0xb9f909cb,0xbaba0d38,0xbb5b0745,0xbb2c230c,0xbadf5134,0xbb3244d5,0xbb77c5d8,0xbb700b24,0x3b404a79,0x3a0cfbe7,0x3b220d89,0x3b8186f2,0xb9ca0caa, -0xbb951c6a,0xbc693878,0xbbbdcb38,0xbc7df9b7,0xbab351ee,0x3bad1a28,0xbc284647,0xbbacf435,0xbc118caa,0xbc03749e,0xbbeaeeab,0xbb5f9b3e,0xbb257ace,0xbb042616,0xbabf969f,0xbaaa55b5,0xbb40f324,0xb88703fb,0xb704e28b,0xba844e00,0xb89f4478,0x39a9ef56,0x3ac9c0c4,0xbb0f6051,0xb9886288, -0xbaa2ced6,0xba055f94,0xbab66ed6,0xbb45de5a,0xbb83095d,0xbbc2ffb3,0xbc0553be,0xbc5b1209,0xbc821af4,0xbca03276,0xbc8182d9,0xbc43afd0,0xbc2d5122,0xbc31fa65,0xbc2e5cbc,0xbc030866,0xbb138fd5,0xbb95324c,0xbbce1227,0xbc0f35df,0xbc347f07,0xbc1bbbfd,0xbc1ac6dd,0xbbdb5cee,0xbbec1ef3, -0xbbe59059,0xbbd5a40e,0xbb6cb128,0xba0c0db9,0x3aa6623b,0x3a9b76e8,0x3ab2c591,0x3b3af4e2,0x3a389a3c,0xbacf59d3,0xbb2ca3a1,0xbb681374,0xbaaf1b9a,0xba7aafcf,0xbb041daf,0xbb74e6d9,0xbb938769,0xbb735c0a,0xbb99f2af,0xbbd374b8,0xbc51eddf,0xbc42ee26,0xbc46dc89,0xbc58ec2b,0xbc3468e4, -0xbc59801f,0xbb72f281,0xbbbb9a1b,0xbbbd617a,0xbbb661dd,0xbc11f53a,0xbbcbb833,0xbbd4fc5c,0xbbba57bf,0xbbddfdfd,0xbbb05aa2,0xbbb174f6,0xbb20b3dc,0xbb0fb041,0xb9d931de,0x3aa45a7e,0x3b51c4f4,0x3b29c398,0x3ad19425,0x3b52d61d,0xbae794ce,0xba401b01,0xbaab9ead,0xb930f672,0x394da5c5, -0x3a881190,0xbaa557e5,0xbb53094a,0xbbbef035,0xbbf2bd09,0xbc21908e,0xbc62381e,0xbc4f6fdf,0xbc46b00b,0xbc5a3cac,0xbc274ca2,0xbc272e13,0xbc3cf2a8,0xbbb301ac,0xbbecfd0b,0xbb8369fc,0xbb190eb4,0xbb26bfe9,0xbb6bdc38,0xbb451b29,0xbba0f42c,0xbb2f89a9,0xbbcac25c,0xbaac4219,0xbb193b21, -0x3ab585d1,0xb91ad9bc,0x3aabedef,0x3aa6ed4c,0x3b86a340,0x39d82c3b,0x389e3d6e,0x3a7b9c39,0x3a09baf6,0x3abe71fc,0x3b00cfef,0x3b5a5920,0xb85b8fd6,0xbb00d207,0xbb869472,0xbbb6a624,0xbbdde7bb,0xbc01cea0,0xbc0dd4b8,0xbc1b59ff,0xbc264031,0xbc210dfc,0xbbe60417,0xbc046987,0xba901955, -0xbbdcf81a,0xbbc2e581,0xbbc03f71,0xbbf3df28,0xbb42a30b,0xbbb5052d,0xbabba4c6,0xb9ac373c,0x3a40272b,0xbae012ac,0x38a7080e,0xba3e853f,0x3728db91,0x3b0828b6,0xba8b9189,0x3b26e00a,0x38f07025,0x3aa14dee,0x3a5013c7,0x3a8a3ee1,0x3a8d1df2,0x3a4f15ef,0x3a301f54,0xb923bfb7,0xba87b624, -0xbb12d59e,0xbb5f478d,0xbb986315,0xbbc8fc4f,0xbbd00027,0xbbbdf463,0xbbcf97ee,0xbbefb5b9,0xbb8bbb96,0xbbb4be1f,0xbb0ebee8,0x3b19ab48,0x3b8fc95a,0xbaeb7aa2,0x3aefd3f2,0x3bb242fb,0x3bcf3fae,0x3bb22ce3,0x3b9d71ae,0x3bb71235,0x3be5d7d5,0x3bedb63e,0x3b0078e5,0xbaea39bc,0x3bb163df, -0x3b40d57c,0xba08ae57,0xbb21ac9c,0xbb146989,0xbb0f7b3a,0xbb0b45d3,0xbb091511,0xbafcdd71,0xbaea59c9,0xbb122cbd,0xbb31d0a8,0xbb45d179,0xbb5c1844,0xbb64e71c,0xbb794bfc,0xbb812e65,0xbb84717c,0xbb8ba5f9,0xbb8cc8ae,0xbb72a4c4,0x3b41025e,0x3b263389,0x3bc0477e,0xbaa5cbe3,0xbbd9720a, -0xbbba5c6a,0xb801d556,0xbb9fed5a,0xbbf93537,0xbbf2fe9a,0xbbeb584a,0xbbbc63ed,0xbbc24c30,0xbbe9b439,0xbbbdf463,0xbbb6c17b,0xbaf5f556,0xbbcaaae9,0xbbcf63d8,0xbb09656b,0x3ba16bc0,0x3b4a376e,0x3b55c6a6,0x3b580d6f,0x3b49baf7,0x3b399c43,0x3b1ce4db,0x3b22eb21,0x3b2c0f88,0x3b4aa178, -0x3b40cfab,0x3b398cf3,0x3b474ee7,0x3b20548a,0x3b11ac67,0x3b046996,0x3b217bd1,0x3b85748e,0x3b9e93be,0xbc0ca760,0x3a99d2e5,0xbb784d67,0x393fa487,0xba4176da,0xbae208d0,0x3b13fe92,0xba9097c6,0xba8f9d97,0xba54c734,0x3b08154b,0xba8de49e,0xbbc07fed,0xba888181,0xbb852b10,0xba8e341b, -0xbba78c22,0x3b142544,0x3b98381e,0x3b81a155,0x3b8486fd,0x3b331f2a,0x3adec3a8,0x3a4a5987,0x3aaf1704,0x3b11cf0d,0x3b8b0c82,0x3b7584b2,0x3b652a44,0x3b83349f,0x3abfe17a,0x3a777cce,0x3a8c7eac,0x3ae540c2,0x3b95b2f0,0x3ba4386d,0xbb6de567,0x3b368a55,0xbb0330b8,0x3aa38e24,0xbaa76fab, -0x3b07025e,0xba3487e9,0x3baa9444,0xbaa7a967,0x3bf53899,0x3af99ba8,0x3af514eb,0xba7e51a7,0xb9ebc38c,0xbb00f087,0xbb0be065,0xbb20690f,0x3b01bd6b,0x3bdef19d,0x3b8f6830,0x3bb23c90,0x3b42b71b,0x3af093c5,0xba0608bd,0xb9208808,0x3aa2c158,0x3b9bbf06,0x3b63e000,0x3b5a9622,0x3b78463b, -0xb986830a,0xbac1e53e,0xbaa90dd1,0x3a6d36fa,0x3bde3286,0x3bfb87b3,0xbb72b9fb,0x39da104c,0xb92f0dc0,0x3b0b953e,0x3b461787,0x3b019b8d,0x3b76b7fe,0x3b9de677,0x3b7a804e,0x3c064a01,0x3baa5a49,0x3bb92b51,0xb941dead,0x38f406b8,0xbab1d7a3,0xba1c7da8,0xbb197366,0xb9de8506,0x3c023662, -0x3ba4de65,0x3bb757a2,0x3aea541c,0xba7ae0e7,0xbb93cbea,0xbb1b8273,0xb6aac074,0x3bd259ad,0x3b897e95,0x3b68f6fb,0x3bb32a61,0xbb515f59,0xbb8c64ae,0xbaf365d3,0xba81c130,0x3ba0d4f7,0x3c04a2ed,0xbb617a69,0x3b04a100,0x3b25eb17,0x3b91db4d,0x3b61cdb4,0x3af4260d,0x3b76addc,0x3b932749, -0x3bd4c652,0x3c0bfcc9,0x3c01b766,0x3b7c1ea8,0x3b6b716c,0x3adef042,0xba70e3a2,0x3b8d14a8,0xbb9bcda2,0x3b414217,0x3c0381b1,0x3bc63762,0x3bddff35,0x3b33813e,0xba25901d,0xbb547124,0xbb486d6c,0x3a17f6f1,0x3bedee7a,0x3b8b522a,0x3b557eda,0x3b6246e3,0xbba6c798,0xbbfd88a4,0xbb892c44, -0xba87b361,0x3be26be1,0x3c8cdf1e,0x3bb0063c,0x3b14d580,0xbbd3219c,0xbbc0f411,0xba6a1886,0x3af710b7,0x3bc0927a,0x3c1d40bd,0x3c2fbaad,0x3ae01f6e,0x3a2bf90f,0x3bbf3b0b,0x3aa0db9b,0x3b37c03e,0x3ad7c253,0x3be5c775,0x3b388328,0x3ba275cc,0x3c2d3511,0x3c173429,0x3c5fda05,0x3c1da699, -0x3c22646d,0x3c5fb0d3,0x3b40acaf,0xbade9b6a,0xbb2fd711,0x3b9fcfbc,0x3c2287b0,0x3b557b28,0x3c7b725b,0x3c7fc6f1,0x3b8ee847,0x3bd6f94b,0x3c1c3890,0xbc08aa13,0xbceccbef,0xbbcdaa35,0x3c000fd2,0x3ba47bc9,0x3b1f491f,0x3b9dd374,0x3b646bac,0x3b1feda0,0x3bc4398f,0x3c01865c,0x3bd66d52, -0x3b2b27ca,0x3b7feaf1,0x3b970eb8,0x3aed1758,0x3ac2a1e5,0xbb050531,0x3957b7fb,0x3bb08da9,0x3b9a510d,0x3c39cb8d,0x3c315935,0x3bee25b6,0x3ac01e8e,0xbaf62dc6,0x3984867d,0x3bc7467f,0x3af4fe16,0xbaaf9292,0xbbc9fca8,0xbadd1cd8,0xb97cbe86,0xbb71c06e,0x3bbc7ddf,0x3c2b36a3,0x3a664d07, -0x38870998,0xbb3737e5,0x3be60fa9,0x3b96482b,0x3b8082f8,0x3ad4b75d,0x3b0efd16,0x3b4587d2,0x3b337797,0x3b8d329a,0x3b803599,0x3b672359,0x3affcae2,0xba34758e,0xb90844fe,0xb9ad754e,0xbb05d71d,0x3b3cd34d,0x3b010a06,0x3ab7591c,0x3bab48df,0x3bd67a3f,0x3c0b1a31,0x3c04839b,0x3c187013, -0x3be42413,0x3c2b09e5,0x3ba66c00,0x3adfc792,0xbb5ed76f,0x38767f74,0x3b5b2755,0x3c0f108e,0x3c1f49fa,0x3c283337,0x3c1e656c,0x3bc88b22,0x3bf12ba7,0x3a07399b,0x3b712a48,0x3b2f46a9,0xba16c0c8,0x3b3b275c,0x3b5a1fc3,0x3b019c7c,0x3b27a3ba,0x3b1eec16,0x3b5704d0,0x3a2f8cfe,0xbaab0c84, -0x38fc48cc,0xb99b611c,0xbb27b1e6,0xba9f2445,0x3b6656dc,0x3b042500,0x3b73482e,0x3b6c8452,0x3b903fdf,0x3b96adbf,0x3ba471ab,0x3b71936c,0x3c04f998,0x3ad33c32,0x3b4e3d29,0x3c161d09,0x3bb3fd86,0x3bb5eb6f,0x3bc213e0,0x3bf530e1,0xba2ab67f,0xbbd5e03a,0xbbee196f,0xbb973e99,0xbbb9894b, -0xbb1ec102,0xbb59eb8a,0xbb768048,0x39db8f66,0x3ac5d6d9,0x39b8d59b,0x3b4721fb,0x3ae07407,0xba127b77,0xb9d7433d,0xba348589,0x395b6b2d,0x3915b76c,0xba395462,0x3ba9b2f2,0x3bc4a4ca,0x3bd6e9f7,0x3bcae974,0x3b53ae89,0x3a65921e,0xbb0c843a,0xbba143b7,0xbb98fa41,0x3a4c72a1,0xbb02c5cb, -0x3b0fd0b9,0x3c576286,0x3c33a727,0x3c2b412f,0x3c1cd43a,0x3b04ea43,0x3b234480,0xbbe88b61,0xbc59d6e6,0xbc0e84b9,0xbbf305f1,0xbc1436ca,0xbc025c0f,0xbba236df,0xbb97e483,0xbb1510ea,0xbb157ece,0xbaaf6b67,0xbad61559,0xbb2594a1,0xb9759af6,0x3a0b39b6,0x3a82b5cf,0xba9edc4a,0xbae5605a, -0xba82f4a4,0x3a005e98,0xbaeca7c6,0xb9b3d031,0xb999a9c0,0x38cf0fcf,0x3aa0564d,0x38e0f819,0xba37c87e,0xbae8c2b9,0xbb74f3d3,0xbb87ccb5,0xbbd12e3d,0xbb0c31a7,0x38852513,0x3b580ac8,0xb99f97dd,0xbb3e4496,0xbbb843e5,0xbc17fac9,0xbc049bd1,0xbc2d8705,0xbc3d686f,0xbc3434a1,0xbc3599d2, -0xbc042e91,0xbc00e219,0xbb9bd5a8,0xbbd40b26,0xbba5ebec,0xbb63df31,0xba6e1a44,0x399abae8,0x3ab04c5b,0x3af18082,0x3a3d6903,0x3b382c7e,0x3b24b9a1,0x3b113e4f,0x3ab26291,0x3ac4ef3b,0x3aa801f7,0x3a3dd5e1,0xba22ad61,0xba7466bb,0xba9366c8,0xb9cac817,0x3a9233c0,0x3b2c89ce,0x3b27ff23, -0x3a6d7300,0xba6f181b,0xbb2e7bd9,0xba8bb155,0xbc1cf6e9,0xbbf062ab,0xbbee4112,0xbbfed9c9,0xbb9354a3,0xbbedf918,0xbbc4ab32,0xbbd9afcd,0xbbc27d72,0xbbe23d1d,0xbbaf96e8,0xbb923180,0xbb2d6a88,0xba144620,0x3a6edc57,0x3ac0fca4,0x3a9fdf97,0x3af1d031,0xb81f1692,0x3b3aca37,0x3acedcbf, -0x3ac8b26c,0x3b06c36a,0x3b32c188,0x3b79af4a,0x3b040e0d,0x3a04154f,0xbaef8f45,0xbad197ab,0xbb0dd325,0xbb1f5065,0xbb6a0e78,0xbb8b9e9b,0xbb8367d0,0xbba610d6,0xbb92ba19,0xbb9a1124,0xbc265f99,0xbbd6de3e,0xbbff07dc,0xbbf9414d,0xbbb37cf8,0xbb41335d,0xbb96f570,0xbb9e4f43,0xbbf645cc, -0xbb67953e,0xbb4eb433,0xbb020120,0xbb0dc401,0x3a025af3,0x3b19cfaf,0x3b125223,0x385405dc,0x3b62cbe1,0x3b906dfb,0x3b3a71dd,0x3b419e56,0x3b4395f4,0x3b52efe1,0x3b6dc1cd,0x3b107d8f,0x3abdf9a3,0x39e09fed,0xb9b01c3e,0xbaafc3a9,0xbaecc8fc,0xbb21100f,0xbb61476d,0xbb837419,0xbb9f7430, -0xbb910243,0xbba3f310,0xbc1ec76b,0xbba637d2,0xbbb8c49d,0xbbcffe27,0xbbaed39c,0xbbe8924d,0xbb8d7fce,0xbba070e7,0xbb89c356,0xbb96092f,0xbb50044f,0xbb5e2908,0xbb2b37f1,0xbb1b8d74,0xbb4bfd6d,0x3a0a1a5b,0xba90f602,0x3b7e6092,0x3b3c0e25,0x3b6382d8,0x3b60710d,0x3b607fb0,0x3b53d348, -0x3b48c6a1,0x3b6bb16d,0x3b6f1a5d,0x3b5df1e5,0x3b693356,0x3b606857,0x3b515513,0x3ac71f71,0x39b479b5,0xba90001a,0xbb291d1b,0xb8915dbb,0x37d69d3e,0xbb58be1f,0xbbc12f7c,0xbba91c37,0xbb174789,0xbb91544b,0xbbaa97a8,0xbbba1474,0xbbb0b1e9,0xbba11ebe,0xbba4d014,0xbbb0eb27,0xbbb167f3, -0xbb75e4c3,0xb9f31321,0xbb64ded6,0xbb541c73,0xba0e0f22,0x3b1d4052,0x3ae85528,0x3ae6bea1,0x3adcc68d,0x3adc9c94,0x3adc9abb,0x3ad00d2e,0x3ab97107,0x3a99a15f,0x3a95d819,0x3a6dc720,0x3a437d66,0x3a455a73,0x3a03d44e,0x39c886a0,0x3909033e,0xb8188ee2,0x3a11d89a,0x3a24c9b5,0xb9b5cde8, -0xbb07d830,0x3b91c435,0x3bea46ff,0x3b64011d,0x3b69826e,0x3bca35b3,0x3bb0c61e,0x3bb210b4,0x3ba7fec4,0x3b85dde5,0x3b8bf14e,0x3b9c6bed,0x3b8657c5,0x3bd1a0a2,0x3b8b3a66,0x3b2ee5e7,0x3bc972ff,0x3b911129,0xbaeb2a1a,0xb918a4b4,0xb8fffd29,0xb9a450e2,0xba50ad86,0xba864eff,0xba971e58, -0xba7c2211,0xba3c99b6,0xb99eefa1,0xb9a21d26,0xb983c1af,0xb80b0bee,0xb930bc50,0xb9935dc1,0xba1df3f4,0xba02a62f,0xba223bce,0x3b41d9f7,0x3c21e0a7,0x3b1c73e9,0x3b9396c3,0x3b6ae8cb,0x3ba3b6be,0x3b45cd85,0x3aca3c4d,0x3bb14b12,0x3b946376,0x3bcfd516,0x3b68430b,0x3b975af9,0x3ba66aca, -0x3b04498a,0x3b4d0664,0x3b02e43a,0x3bc01d23,0x3b000084,0x396111f4,0x3a893433,0xb9136568,0xba879ac8,0xbaf78f13,0xbb2374a8,0xbb0a351b,0xbac33b1d,0xb948a5da,0xb92db267,0x39545b38,0x3a49bbfa,0x3965cc2a,0xb91617d8,0xba53c4a0,0xb8ea0333,0xbae9fbff,0x3b534923,0x3be6de81,0x3b3729fc, -0x3b9b1e29,0x3b9bed6f,0x3bcd6f77,0x3a1396ab,0x3bba68e9,0x3af77e00,0x3c096b98,0x3b382b83,0x3bb4d7ad,0x3bb060bb,0x3b5572e0,0x3a885537,0x3a585c8c,0x3b162d21,0x3b87316c,0x3adf7fa3,0x3995d88b,0x3b0ef682,0x3877ef63,0xbaea255b,0xbb7012e4,0xbb8b5e10,0xbb74d82c,0xbb0df165,0x39d64248, -0x399a0b3c,0x3a81eb47,0x3b04c09f,0x3a9fcc3c,0x396fed61,0xbae68190,0xba071579,0xbaa579db,0x3bf19b19,0x3c42075b,0x3bd07071,0x3b4e03e4,0x3b95b46e,0x3ba42950,0x3b194d20,0x3b81b6ae,0x3b978f43,0x3b8f134b,0x3bc3e751,0x3c0115a2,0x3b4b1437,0x3b58fb5c,0xb9da6a9b,0xba91b601,0x3a7165c8, -0x3b924617,0x3b6c0c22,0x3a987dfc,0x3b49352b,0x3a37996e,0xbb3246b2,0xbbac1ee6,0xbbbe751d,0xbba100f0,0xbb49f196,0x39dd5681,0x3a0a7be9,0x3ae79c7c,0x3b5b9365,0x3acbb29b,0xb363d24e,0xbb1c97b7,0xb909400a,0xbb11584d,0x3b6a9e32,0x3bd71768,0x3b4bb37d,0x3b639485,0x3bc0d1bc,0x3b85a906, -0x3ab13759,0x3b758f24,0x3b9c302d,0x3b958eeb,0x3c097ae9,0x3bda373e,0x3b8ad060,0x3ac69e06,0x3a3aa179,0xb70db5c7,0xbb5b1a0e,0x3bc8aff5,0x3adb7a46,0x3abfaea0,0x3b910a80,0x3a938fd3,0xbb311cd6,0xbbcf9487,0xbbf152b7,0xbbe2ce3c,0xbb557dd3,0x3a9a1c46,0x3a82c0ee,0x3b4e09bc,0x3b928ceb, -0x3b5d85ff,0x39d22df1,0xbb6a73ef,0xba98dea6,0x3b01efec,0x3c408bd1,0x3cbff3e3,0x3c86d34a,0xba8021be,0xbb208ff6,0xbb1381c1,0x3b576740,0x3b857a4f,0x3c08a145,0x3c4328e6,0x3b33f08c,0xb96d6e31,0x3b9e73d1,0x3ac96491,0x3a868e3b,0x3bde1609,0x3b9055a2,0x3c1754cb,0x3bc314b6,0x3af68038, -0x3aa2c44c,0xbad48c90,0x3b7c7f1a,0x3ad5da30,0xb896ec43,0xbc4ed550,0xbc8df1f9,0xbc8f4782,0xbbdbf498,0x384619a9,0xbac4652a,0x3c2a8606,0x3c141cfd,0xbb03d1df,0xbac72ca5,0xbc04f8d7,0xbc0259a9,0xbc618735,0xbc72b696,0x3c8e31fa,0x3ba55fc5,0x3b55e6a2,0x3bc0ef20,0x3b30c149,0x3b3ea516, -0x3bb618b1,0x3bec04b6,0x3bd8ccdf,0x3acccbbd,0x3b588091,0x3ad3c992,0x3b3fa04b,0x3a89b7d6,0x3b775f9d,0x3b9eca01,0x3a4b586f,0x3ba8b925,0x3bef5d77,0x3bfb6e4d,0x3bb6e2bc,0x3b307cea,0x3ab34bd9,0x3ab992a4,0x3bbecf81,0xba5612f1,0xba817807,0xbb0b6ad2,0x3bba2e1b,0x3bae2874,0xbb451432, -0x3afe3cac,0x3bdc0ba6,0x3b83c2a8,0x3a689169,0xba91e381,0x3c1d8963,0x3b9e380b,0x3b9b13a3,0x3b03b8a0,0x3b37840c,0x3b316e66,0x3b0739f9,0x3b69018f,0x3b6d97ab,0x3b31f705,0x3b3cfc74,0x3a312014,0x3afa717c,0x3ae8792e,0x3ad7b1fa,0xb82c6e38,0xbb199f18,0x39f28ecd,0x3b050a22,0x3b3d3e7e, -0x3b2e51be,0x3b955c92,0x3a1bde9e,0xbaa14926,0x3a81164d,0xbbed7931,0xbc019555,0xbab5c238,0x3bfb2169,0x3c428c5a,0x3c403393,0x3c25c837,0x3c438c10,0x3c20eb2c,0x3c2c9d62,0x3c052d0b,0x3b2815dd,0x3ba34c8d,0x3b5d51a8,0x390587be,0x3b351000,0x3b3020fe,0x3aeec7fc,0x3aff328d,0x3b13450d, -0x3b2775c8,0x39831972,0x3756fb18,0x3a787de0,0xba6af5d3,0x3aa78e9d,0x3b2047e9,0xbb1f6f4a,0x39b79c08,0x3a3cc84c,0x3a8fc89e,0x3b01c450,0x3b5ccd67,0x3afc54d5,0x3af78eb2,0x3b747b0a,0xbb390b54,0xbb377f83,0x3bb1598d,0x3c188695,0x3c4c0fd5,0x3c6c5015,0x3c365010,0x3b4e5876,0xbb329e94, -0xbbaf4449,0xbbb5d50f,0xbb213b43,0xbb3482cb,0xbb3a4dfc,0xbadd37dc,0xb98be0b8,0x3aa35cff,0x3acaaa42,0x3b18bf18,0x3aebaf13,0xbade54ac,0xb9363670,0xb88c098d,0x3a1ef5dd,0x394d2887,0x3b015558,0x3a972dbc,0x3b11af72,0x3b7330f3,0x3b6dc40f,0x3b84f1fe,0x3b554970,0x3940c581,0xb9930b69, -0x3ae10f07,0x3c382e67,0x3bd01f1c,0x3c21897c,0x3c35abe1,0x3c875571,0x3c8b27ab,0x3c629d97,0x3c42891c,0x3bd658e8,0x3be3872d,0x3b1f36fd,0xbb4e2976,0xbb6849ae,0xbb993dfb,0xbb6bc1c9,0xbb65d84a,0xbaf8d325,0xbb021b1c,0xbb25868d,0xbb118d44,0xbb0cc206,0xbb3cc993,0x3828eef7,0x39363f9f, -0xb8e8d6f4,0x3acafe40,0x3b1d8d23,0x3b2039d2,0x396e7749,0x397e171f,0xba898c34,0x3a231a36,0x3af0ecc2,0x3b90dab6,0x3bb332e9,0x3ba30d8b,0x3b98c5bb,0xba333909,0xbb480bce,0xbbe3d64b,0x39d83d8c,0x3b9b48a3,0x3ba58223,0x3bedb114,0x3903c2a1,0x3808491d,0xb9aafc09,0xbb4566bd,0xbbe5a195, -0xbc108522,0xbc2f239e,0xbc1cd818,0xbc123f1f,0xbbb79c2d,0xbbd98601,0xbbb2ea8d,0xbbbca266,0xbb8bd48d,0xba91b862,0x3a9fdba3,0x3b2eaa41,0x3ac6f0e2,0x3b04b1f4,0x396f29b4,0xb94e160d,0xb8333bda,0xbaa069ef,0x3ae25231,0x3b2dd7be,0x3b54f527,0x3a56190d,0xba8c2b52,0xbb0b6120,0xbb0d5a3d, -0xba87867b,0xba31e089,0xbae48bb0,0xbab09482,0xb9136923,0x38f28241,0xbb918b3c,0xba6dfec1,0xb914b6a1,0xbafd7546,0xbb24d62c,0xbbc0a1fc,0xbba6a8d5,0xbbd48ffd,0xbbc58194,0xbbf493d8,0xbbe40979,0xbbe60da3,0xbb8dd160,0xbb975ac1,0xbaa2797f,0x3a459c23,0x3b8e3526,0x3b633909,0x3b181bf9, -0x3b5c79ca,0xb9db2241,0x38ce441a,0xba295440,0x3a0f0c74,0x3aa12ab7,0x3b1012f3,0x3a2e40d0,0xba148a1f,0xbb2290e8,0xbb5fbd5f,0xbb999d8a,0xbbb7c374,0xbbb78c94,0xbbafa0a3,0xbbb1a897,0xbb874a69,0xbbb526e2,0xbbb19455,0xbb6349fd,0xbb830332,0xbafeffc4,0xbafc2bfb,0xbb28bf00,0xbb80cf7f, -0xbb774903,0xbbb13dba,0xbb6b4e45,0xbbb4e7c1,0xbb56f0df,0xbb4a7f7d,0xb98b961e,0x39235def,0x3b153ae6,0x3b0892c1,0x3b9e7f75,0x3b23e6a1,0x39e9573f,0x3a98bbe3,0x37949b17,0x3a19e47f,0x39bf458e,0x3a4b2724,0xb9be5ea2,0xba07aacb,0xb9855c8c,0xba998858,0xbb082679,0xbb59160e,0xbb76d792, -0xbb84d6d0,0xbb9b95c2,0xbb93f102,0xbb928ff7,0xbbb025bb,0xbb3eb261,0xbbb608df,0xbb9f92fe,0xbbaf3a25,0xbbb3b047,0xbb906688,0xbb9ab9b1,0xbacee593,0xba2b3677,0x39dc07b1,0xba2cba0e,0x399fd997,0x3a90d86e,0x3ab0eeb2,0x3b025e21,0x3a2bd23f,0x3b59a41e,0xb9ba8d3d,0x38c6f202,0x399b1ead, -0x39e82e12,0x39e50205,0x39cdc41d,0x3a0d4506,0xb962805a,0xba458580,0xbabea6a3,0xbac05946,0xba89d13b,0xb9e77028,0xbabd8559,0xbaf99b63,0xbb3dace6,0xbb831e0d,0xbb11b4af,0xbb371fa0,0x39bdfa14,0x3af4d9d8,0x39fad40b,0x3a5a681f,0x3b1ba61c,0x3ae60f2b,0x3b02c23a,0x3aa07baa,0x3a23654d, -0x3a8288d4,0x3ad6d171,0x3ae9944e,0x3b2dfb3d,0x3a50e192,0x3acc7c28,0x3b56dd23,0x3ad6a379,0xbab604b7,0xba65dca8,0xba8947eb,0xba979663,0xbaa3aa39,0xbaa7cefe,0xbaa8e1b0,0xbaabca5d,0xba97e0c8,0xba887695,0xba8eed5a,0xbab1fe99,0xbaca3279,0xbaeb8247,0xbaeaf15f,0xbb01027a,0xbb066d21, -0xbab1164f,0xbb79dce2,0xbb10661b,0xba8f47fa,0xbbc5799b,0xbba0c157,0x3a65ccd5,0xbb9bc50f,0xbb9213ea,0xba89a7c4,0xb95eb5ce,0x3a0fcee8,0x3a8e4b9c,0x3aa0b882,0x3ad4f48a,0x3aadcb98,0xbba3bc2c,0xbbc0228f,0x3abc2a61,0xbb8d6bca,0xbbadd1c9,0xbab1a0e3,0xbb0338f9,0xbb1af471,0xbb1d50a3, -0xbb380641,0xbb409bbe,0xbb45b8c4,0xbb37c0f1,0xbb2f8f1a,0xbb19f138,0xbb31b514,0xbb319920,0xbb2ac187,0xbb50296f,0xbb51d4e7,0xbb2dd49c,0xbb2b8046,0xbacaf0df,0xbb2a1f51,0xbb2f9651,0xbaa6e20a,0xbb183d1c,0xbafef549,0xbb376494,0xbae007e8,0x37aad25a,0xbb1ad9cc,0xbab870a3,0xbb23cc3a, -0xbaa15dbc,0xbaa96865,0xbad2f381,0xbb881954,0xbb8831e8,0xbb5c1d73,0xbb8d9f87,0xbb8e5cac,0xbad8f31c,0xbb3cafc2,0xbb7c8283,0xbb9fc78d,0xbbbdd06a,0xbbe7887c,0xbbbbda34,0xbba902d7,0xbb813407,0xbb9dccee,0xbb9db1df,0xbb90a0ef,0xbbe328b4,0xbbd9a433,0xbb8010ba,0xbb7c8ba0,0xbac6ecd0, -0xba905171,0xbb7ec4c0,0xbb122571,0xbb475467,0xba00a271,0xba6d0e55,0xbad001a5,0xba588ea5,0x3ac4bef7,0xbaffb6de,0x3aa11442,0x3ad1b891,0xba933c62,0xbb19b548,0xbb6a0c7b,0xbb9c117f,0xbb4d3949,0xbb82cab6,0xbb0df517,0xbab2ec31,0xbb60aa14,0xbb9e2096,0xbbde8984,0xbbf57c21,0xbc10f5ba, -0xbbf4986d,0xbbc6e4a5,0xbb94abee,0xbbc175d0,0xbbdbdf50,0xbbbbe6cf,0xbc1f4581,0xbc15d215,0xbb9d6414,0xbb99b0cf,0x3a52c95c,0x3b28c914,0xba8c4342,0xb996bb54,0xbab779fc,0x3af5e4b8,0x3b58f006,0xb9c4ebc8,0x3b6c2850,0x3b87ae14,0x3b64d226,0x3bd69b81,0x3b6aece9,0x3b7e63d9,0xba9b2d96, -0xbb14dbfa,0xbb766b94,0xbb5d3ee3,0xbb66feb1,0xbb2ba02f,0xb9de9c23,0xbb252c3d,0xbbcb76b0,0xbc266936,0xbc5b7ccb,0xbc7365a6,0xbc36e98b,0xbc1404fa,0xbbc6b5a9,0xbc028ef5,0xbc1d7698,0xbbeace79,0xbc7ba09d,0xbc5b4ab9,0xbb8ccf38,0xbbad8a87,0xba69d1a2,0x3b00172a,0xbb55618f,0xba23c54b, -0xb99a3814,0x3b83734f,0x3b6b50b8,0x3ac6d6ba,0x3b7545f9,0x3b823d89,0x3bcb439c,0x3c0fe5b2,0x3bfe3cb4,0x3b804fe9,0x3aecf80b,0xba56a3db,0xbb46f57c,0x39936656,0xbb6920d4,0xbaa0df26,0xba04d81f,0xbb844d20,0xbbfd5882,0xbc300c40,0xbc583c6b,0xbc576364,0xbc357b76,0xbc013d94,0xbb8bb845, -0xbc10cd4a,0xbc2b1b20,0xbc04f6b6,0xbc8c4909,0xbc7c9224,0xbbb11f4c,0xbbb641e6,0xbaea23fb,0x3bca45b5,0x3bf38a8b,0x3bf290b4,0xbb86d6b3,0xbbdb1cc4,0xbbb66bf6,0x3aa2feaf,0x3b0787af,0x3be8e94b,0x3c528d92,0x3aed7921,0xba0734fe,0x3b839b9f,0x39bebede,0x3ace55e5,0x3af67aec,0x3b958648, -0x3a8f407f,0xba513ff3,0x3aa7fbff,0x3b1c3fdd,0x3bd3e478,0x3baf0b01,0x3b76efec,0x3b943651,0xbbd7e639,0xbc31ec21,0xbc7188b0,0xbbb0fb99,0xbb705e95,0xbc802a79,0xbae2fea1,0xba828874,0xbc20eaaa,0xbbd64dd4,0xbabb18e9,0xbc354df1,0xbcf9713d,0xbc83db4e,0x3c26bb7d,0x3b546cb6,0x3b4d0bc8, -0x3b4399cf,0x3b446eb1,0x3b1eae83,0x3b95fd7d,0x3bf72c9e,0x3bdbffcf,0x3b03ad50,0x3aea8b9d,0x3ac07198,0x3a2f3237,0x3a19282d,0x39f22a9f,0xba769003,0xbb686490,0xbba7e1a1,0xbb819140,0x3a7362f1,0x39d6bb96,0xbac1fd7f,0xbb2b3f5b,0xba4a2a4c,0x3ba21a16,0xbba657f0,0xbc00092e,0xbbec94b0, -0xbb6bfe83,0xbac9c27f,0xbac933a0,0xb98bd088,0x3bf196d4,0x3b71006c,0x3a2927b1,0xbae34d3b,0x3bc50f0a,0x3b8836f5,0x3b81688e,0x3ae3b1da,0x3b1cb4a3,0x3b357308,0x3af134b5,0x3b6e4856,0x3b4dd737,0x3b5a5148,0x3a1f9e1f,0xba9cb4b7,0x38ada6bf,0xba750d73,0xbb415a0f,0xbb14ed85,0xbb1f7a22, -0xbb43928d,0xbaf4241c,0xba8d323e,0xba1eb000,0xbada0ad1,0xbb08af9c,0xbb214549,0x3b636d1a,0xbbc47c2f,0xbc4cff14,0xbc9348fb,0xbc41a99d,0xbbe5ca91,0xb96f59e4,0x3bad6804,0x3ba61b0b,0x3c169091,0x3c29ca42,0x3bf9d850,0x3b0b6cba,0x3b4bebb5,0x3b0ebc29,0x3aab7acd,0x3b36b1dc,0x3b452d89, -0x3acd3765,0x3ad9c700,0x3acbdd13,0x3b178b32,0x3a0504f9,0xbb0076b4,0xba91e2ee,0xba8a58a9,0xbb2e127e,0xbb5ec08e,0xb9a55571,0xbac6421c,0xbaaefbe3,0xbb019d4e,0xbb482e20,0xbbae427f,0xbbe27937,0xbbd191be,0xbb195b1f,0xbbed051c,0xbc095f1f,0xbc257625,0xbc2cc390,0xbc427a90,0xbc7c9efb, -0xbb198b18,0xbc5b7aea,0xbc1ed6d9,0xbc3e2299,0xbbc7e8b6,0xbb8e0565,0xbb28ad28,0xbb23ee9c,0xbb4c362e,0xb9ef3051,0x3a62d3af,0x3961096e,0x3af58cd1,0x3a6e5be7,0xbae24bcc,0xbac7d60d,0xbad01ed4,0xba508160,0xba3b12b2,0xb9da5477,0x3b160add,0x39b2ea23,0xba21ae6b,0xbab0bde7,0xbafd98ab, -0xbb1a672e,0xbb8da3e1,0xbbca0b34,0xbba970d0,0x399f0ea4,0xba5b3568,0x3ad1de01,0x3c0168e6,0xbb2b5d2f,0xbbfcc620,0xbc6f4df6,0xbc6a7188,0xbc675443,0xbc0005a1,0xbaf280f0,0xbc0389f5,0xbb8df766,0xbbbba376,0xbba787d3,0xbb6f3d05,0xbb805554,0xbb443a9e,0xbb753578,0xbb4b937a,0xbb42916d, -0xbb4af503,0xba814658,0xb9dc5413,0x3a2eaee9,0xbaf64121,0xbb2a68bc,0xbab8770f,0x399bb128,0x39d1274e,0xb79e52a4,0xba373b1a,0xbb0fa5f3,0xbb94b6cf,0xbbaaf3dc,0xbbf4a8cb,0xbc492d05,0xbc303669,0xbc407b1a,0xbc99a900,0xbc870907,0xbc80981c,0xbc74cae2,0xbc7b05e4,0xbc16a79d,0xbc218fc1, -0xbbeaf4c9,0xbbeaa602,0xbc4adad2,0xbc3fe6f8,0xbc40c63f,0xbc397096,0xbc13f5e4,0xbc0a4f0f,0xbbb5d043,0xbbd6d9e6,0xbbb215c7,0xbb9e017a,0xbb3628b3,0xbad4ad43,0x39e6fe8a,0x3a390680,0x3a702034,0x3ad2e3cd,0x3a08a663,0xba7f5d27,0xbb20ce91,0xbb4f76a8,0xbb4db936,0xbad7bece,0xbb019f55, -0xbadae1a0,0xba0bceb3,0xbae19809,0xbb1aee65,0xbb738687,0xbb5f3495,0xbb9bd712,0xbba5a6de,0xbc04b1cc,0xbbaf11dc,0xbbaa86ef,0xbbd92245,0xbbd99cce,0xbbfccffe,0xbbe0226e,0xbc096778,0xbbffad30,0xbc0654aa,0xbbf1d6e3,0xbc05918f,0xbbd2d0ad,0xbbbdc733,0xbbae210a,0xbb3a2b26,0xba014f25, -0x3ad3c215,0x3a47f7d8,0x3a08e37b,0x38d7ca0b,0x3a0638ae,0xb9a96aee,0xba1befbd,0xba84ddd7,0xba635800,0x394c40bf,0xbabbda42,0xbb1ae17e,0xbb6e20a7,0xbba248ee,0xbbdc1c5b,0xbc0cd94d,0xbbfc4902,0xbbd5d643,0xbbb7a120,0xbbaff7ed,0xbba85afe,0xbbcab5bd,0xbbee78b6,0xbbc177a9,0xbbb0aee2, -0xbbb8bd07,0xbbb9aad1,0xbbb7a4f7,0xbbd01287,0xbbe0ea65,0xbc115e5a,0xbbf8c507,0xbbb6b9a5,0xbbcb98fa,0xbb3ef5be,0xbae3d933,0x3a636170,0x39ae37a2,0x390e2f49,0xb60bc789,0x3aaf6c3e,0x39d69f13,0x3a27ee91,0x3a372f45,0x3a1bb6c7,0x3994f031,0xbaa794b2,0xbb26adc8,0xbb816380,0xbba3183d, -0xbbc5d89d,0xbbee26bb,0xbbd707b4,0xbbe02e49,0xbbd92bed,0xbbcf6cf8,0xbbb92e5d,0xbbbb6f50,0xbbe18254,0xbbd559f6,0xbbfedc74,0xbc027626,0xbbfed8cc,0xbbd428a2,0xbbbcbda8,0xbbb449e9,0xbb90959e,0xbb9483f8,0xbb907725,0xbb833a60,0xbba47c4e,0xbb9c8108,0xbb65e0f2,0xbb4c6429,0xbab4c106, -0x3a288cf8,0x3a0822a7,0x39b292f3,0x39ab1035,0x38b5ee6a,0x381856c5,0x3985d84b,0x39259272,0x38525171,0xba286746,0xbaaee9b4,0xbb00a745,0xbb4a0ef0,0xbb727458,0xbb698424,0xbb86bd37,0xbba90419,0xbb3edbe4,0xbb53c5c4,0xbbacf1cf,0xbb8d8882,0xba83018c,0xbb9064e2,0xbb905223,0xbb054e85, -0xbb00e034,0xbaebe864,0xbacd057d,0xbaafd122,0xba6ed93e,0xba2dbdf8,0xbb90946a,0xbb83658b,0x398236e7,0xbb596ab0,0xbb6da29d,0xba91cb99,0xbacb8f43,0xbacbf982,0xbac8ef4a,0xbac4500e,0xbac5fa57,0xbad478f7,0xbb05efe4,0xbb1b4260,0xbb2a5e87,0xbb3a85fa,0xbb3c1048,0xbb4863d4,0xbb47d15a, -0xbb45d59c,0xbb50b928,0xbb4c5814,0xbb837f71,0x3b97f37b,0x3b3972de,0x3b7a3f7b,0x3bb88860,0x3afbfdab,0xbb8e4bf6,0x3babe894,0x3b275bd4,0xbb5193f5,0xbb62a043,0xbb828d5f,0xbb7c7e9d,0xbb85b465,0xbba73a55,0xbb843391,0x3b18659a,0x3b9cd9e7,0xbbba5de8,0x3a7c986b,0x3b8e11fa,0x3b60b958, -0x3b5df485,0x3b76eef4,0x3b668b9f,0x3b56b694,0x3b48b411,0x3b366596,0x3b466401,0x3b5557a1,0x3b6396b7,0x3b6c9b5c,0x3b6a0e53,0x3b810258,0x3b6aef58,0x3b56838e,0x3b26a7a4,0x3b3e1e6e,0x3b5954cb,0x3bffaab9,0x3a8548d3,0x3b452c57,0x3976ce0e,0x3b625dbc,0x3b8efb11,0x3a526c69,0x3b33407e, -0x3b82e924,0x3b1b0d84,0x3b9104d3,0x3b81396d,0x3b261ed8,0xbae2fa5f,0x3b12d974,0x39ea5477,0x3acd4917,0x3aca7526,0x3bc1821a,0x3ba35f80,0x3bb9c70a,0x3b9c5d27,0x3b7ef132,0x3b545b41,0x3b4a9227,0x3b7e923a,0x3b93a6b5,0x3ba81e6b,0x3bbbe0ef,0x3bbffe1d,0x3bdacebd,0x3baed0a3,0x3b91409b, -0x3b3441df,0x3b5c7874,0x3b2b419c,0x3be385e2,0x3b8ec018,0x3baf322a,0x3b0220f3,0x3b94f6e7,0x3b824fd8,0x3b0d5fea,0x3b7a0e42,0x3b9747d1,0x3bc6d77d,0x3bcfbc3d,0x3b4bf9c4,0x3bc6cef4,0x3ae219b2,0x3abba643,0x3a94234d,0x39e8b9b0,0x3b283980,0x3b82c702,0x3be3c8d5,0x3beab6eb,0x3bcc29e5, -0x3b8f0a45,0x3b427776,0x3b0baa2a,0x3b5c1ca5,0x3b9cb36f,0x3bd486cf,0x3bdc7497,0x3bf17359,0x3c0ce873,0x3bd3ae9c,0x3b8baef8,0x3a03c79f,0x3b233c71,0x3b53fe78,0x3c293142,0x3bde0f1c,0x3baa8c9c,0x3add46f2,0x3b8677a8,0x3b91aa71,0x3b4c2ddc,0x3b91410e,0x3baa8ef8,0x3b72b228,0x3bc18dce, -0x3bd68392,0x3b9a284b,0x3ac55d08,0xba17c81f,0xba4671f9,0x399bdc36,0x3b0e699c,0x3b842bdd,0x3c0be4e5,0x3c099c02,0x3bed7e75,0x3b91cb63,0x3b40f903,0x3b006967,0x3b87b107,0x3bc07b18,0x3c03b265,0x3c186686,0x3c2803dd,0x3c4907ec,0x3c020925,0x3b923707,0x3a0166ca,0x3af56e35,0x3aa78618, -0x3bf66b03,0x3b960087,0x3b71432a,0x3b3b6e86,0x3bdb2dbd,0x3ba39dd1,0x3a99c843,0x3b7908a3,0x3ba2442c,0x3bb8093f,0x3c0710af,0x3bef4ba2,0x3b99ca2d,0x3b004a69,0x3907378f,0xba9c544a,0xba60887f,0x3ac7023c,0x3b9f5b98,0x3c117482,0x3c337d66,0x3c1410d2,0x3baf61aa,0x3b28d290,0x3a85ac41, -0x3b51d0c0,0x3bde18dd,0x3c184297,0x3c21ce88,0x3c367d41,0x3c4a2f13,0x3c1323ae,0x3b700f58,0xbb22f425,0x3a0a94f7,0x3c2be50b,0x3ca55e9b,0x3cb3aeb4,0x3c7eea1a,0x3a6b6a35,0xbbca0fae,0xbb984ccf,0x3b0461b2,0x3b145a0b,0x3bd93103,0x3c58bdf5,0x3b4905b8,0xba5e9ce0,0x3b4c82ac,0x3a907ed2, -0x3b21a31c,0x3ba09d0b,0x3bcafab9,0x3c0b8886,0x3c150319,0x3c22c3ac,0x3be9a022,0x3b96ec31,0x3bd6f780,0x3b9d4f53,0xba4e93d3,0xbba97c20,0xbbed1a23,0xbbcd6264,0x3ba427c0,0x3c426d20,0x3c0bf717,0x3c8edff3,0x3c789aaa,0x3adefbf7,0x3beb9d28,0xbbbbe100,0xbba91119,0xbcad60b6,0xbc461b72, -0x3c60502e,0x3c00749a,0x3b83f7b8,0x3b832f19,0x3b3b542e,0x3b43f916,0x3b9c1ea1,0x3be1d064,0x3bd7fd32,0x3b1f656a,0x3b40e100,0x3b18842b,0x3b62cce6,0x3b232b20,0x3aa0d820,0x3b6356b5,0x3bdfbe54,0x3c22a796,0x3c789121,0x3c485022,0x3c0b92bd,0x3b053848,0x3a8ee16c,0x3ae283ef,0x3c1578fe, -0xba39ad6a,0xbaead101,0xbae10b11,0x3bd51a44,0x3bc94bcd,0x3a5b18f2,0x3ace5203,0x3c0d68d2,0x3c1d497a,0x3bd51274,0x3ad10463,0x3c0bae38,0x3baacaed,0x3ba81506,0x3b79e03a,0x3b5a89e7,0x3b6e5291,0x3ac4729f,0x3b7be354,0x3b6fcd11,0x3b215701,0x3b6bb08d,0x3a823de2,0x3b1b7cff,0x3b2077ec, -0x3b079b55,0x3b3387be,0x3ac96517,0x3b42726d,0x3b89b795,0x3c28fdda,0x3c4b0844,0x3c5ea7b9,0x3c24d424,0x3bda60dd,0x3bbb61e7,0xba887754,0x3ad3b6bd,0x3bed2966,0x3cabe308,0x3cc7e032,0x3c98882d,0x3c4ec9ad,0x3c5220ed,0x3c2a3797,0x3c070373,0x3c1903f2,0x3b32f17a,0x3b6c6c30,0x3b37a237, -0x3b5e75fa,0x3b6955c1,0x3b3889b9,0x3b0e9ee5,0x3ae1b324,0x3ae107cc,0x3b00bef2,0x3a62f5da,0x3a7f31e0,0x3a75a7fa,0x390d6c24,0x39c4784a,0x3b18b90b,0x3a8f6b50,0x3b3b3220,0x3b2106eb,0x3c198f8a,0x3c4b06b1,0x3c691fa9,0x3c596160,0x3c344735,0x3becd78a,0x3bb71e68,0x3c186468,0x3c71f11c, -0x3ce2ed1d,0x3cf7a98d,0x3cd29477,0x3c7f51eb,0x3bfac40c,0xbba658f5,0xbbeeb576,0xbbca59ca,0xbaab29dc,0xb876580d,0xbaa3517f,0xbad24564,0xb9c48041,0x3a2a5c58,0x3a8fd2d9,0x3ad7557a,0x3a595b41,0xbaa0ebdf,0xba1a7590,0xba71cded,0xb9f87004,0x3a972a7f,0x3abe0b31,0x3b1f1657,0x3b8edf0c, -0x3bf1312e,0x3c179cc4,0x3c08aeb1,0x3bb756ce,0x3af06bfe,0x3b131923,0x3ba3b835,0x3c40b446,0x3c1faaba,0x3c5a6ad5,0x3c5bb0c3,0x3cbbf9c1,0x3cd3b5ee,0x3cfb70e1,0x3c946cdc,0x3ca25b9f,0x3c1de2a8,0xbb7631a5,0x3ad76645,0xbb247bd1,0xbb0519e8,0xba3f1d03,0xb8da5f3d,0xba44f960,0xba7238db, -0xbb1ca9d1,0xbb3763af,0xbb49b70e,0xbb031062,0xba505201,0xb89f5337,0x3ac2b56a,0x3accf038,0x3b091e78,0x3afc15b8,0x3b2e36b2,0x3a90b6cb,0x3a2a7f49,0x3aee7424,0x3b85fbe8,0x3c0424ec,0x3c1a0fc9,0x3c19298b,0x3c1c20d6,0x3beb075c,0x3be79ca8,0x3bce604a,0x3c4c05d1,0x3c6c0992,0x3c70f270, -0x3c7b4791,0x3bd7be75,0x3b5c55b9,0xbb4f0d59,0xbb8b5688,0xbc0897ce,0xbc207d70,0xbc26ef20,0xbc182a09,0xbc01c395,0xbbbd378e,0xbbb1ff35,0xbb902cc1,0xbb8fafd0,0xbb87e95d,0xbb0255c5,0x378ff860,0x3b1d949d,0x3aea47ba,0x3aaaa38b,0x3a681c29,0x3b0732d6,0x3b3659f5,0x3b029ed0,0x3b726515, -0x3b80f6b9,0x3bbd1277,0x3b8166a3,0x3b0bfd6d,0x39ddebaa,0x3a285c14,0x3b5476b5,0x3c11416a,0x3bd80d26,0x3bddc80e,0x3c077728,0x3be61aca,0x3b6b2549,0xbaca9449,0x3a8b521f,0xbabb68be,0xbb17a814,0xbb709a21,0xbbb9ee4c,0xbbde71b6,0xbbde1a47,0xbbef2ece,0xbc001ed1,0xbbef5585,0xbbc89b28, -0xbbc0e6b1,0xbb226114,0xba1509ee,0x3b3ee690,0x3b30da28,0x3b2b32d9,0x3b1c5897,0x3b14c711,0x3aec57c3,0x3ab1b8da,0x3add9e27,0x3b066726,0x3b358eb0,0x3b1932b1,0x3b02814a,0x3a8bed10,0x3a1750d3,0x3a1bbabe,0x3b28682f,0x3acad93d,0x3a9bfa1c,0x3abdc148,0x3a5a781e,0xba865272,0x39656005, -0xbb59992f,0xbae050be,0xbb063c19,0xbb58186f,0xbb6f006a,0xbb8dc9e6,0xbb9c5eb0,0xbbac3b32,0xbbac56d8,0xbb81e4d0,0xbba3d0d7,0xbb6b2283,0xbb419a6d,0xba06e6ec,0x3ac970e8,0x3aa52fa3,0x3b09011d,0x3b4949c3,0x3a950316,0x3a8239ea,0x39101553,0xb8df122f,0xba5a5d56,0xbac35858,0xb9c35a1e, -0x3a371d6e,0x3b1faea9,0x3b1bc6a8,0x3b04b86d,0x3a8a3f77,0x3a38cb8a,0x3a0c1b1e,0x38370ee1,0xb97b1d2c,0xbab2a886,0xbadae559,0xbba415ed,0xbb424782,0xbb39da23,0xbb7367c9,0xbb15d5fc,0xbb9c5c36,0xbb21fb26,0xbb141295,0xbaf84632,0xbac7e96c,0xba155ba8,0xba70852f,0x3a0a320a,0x38f86b69, -0xba9c6d16,0x39b5cc3a,0xb7fdb4df,0xbaa30343,0xbac637bc,0xba4cf50d,0xba384f84,0xba0239a1,0xb8aa6ad6,0x39df3e92,0x3820d79d,0xb7b1078c,0xb94ff1e6,0x39d7e33c,0x3ace9fe5,0x3b5604a5,0x3b0d221a,0x3aa5b2fc,0x39a141be,0xb9c472b3,0xb9b8d2bf,0xb7e46f42,0x3a25da09,0xbabbfaa7,0xbb8e0f28, -0x3a93874e,0xb928f8d1,0xbb7a185e,0xbb8f2f3d,0xbb914c70,0xbb93ebd2,0xbb9a5bcd,0xbba80405,0xbba6caf6,0x39112d7f,0x3abbab35,0xbb659e4b,0x39bc22d0,0x3ad2e5d7,0x38ea0ef0,0x39d2df3a,0x394504ff,0x38093631,0xb9093531,0xb9ae5e13,0xb9e8795f,0xb983c7e3,0x39785db9,0x3a17ef39,0x3a465578, -0x3a056f63,0x39e76f07,0x3911a268,0x3934d7ef,0x38186e11,0xb8fe035e,0xb793dcca,0xbbdb12f6,0xbb9abffe,0xbbcbd47e,0xbbab609e,0x3a37671d,0x3bc06b90,0xbb9d98bd,0xb96754e8,0x3bb5daec,0x3bd52807,0x3bebfc90,0x3bd6ab78,0x3be0fc42,0x3c08ae4b,0x3be1f882,0xb9b40f77,0xbb998aa3,0x3bde670b, -0x3a706d3d,0xbb76c7ab,0xbbbbea98,0xbb9c9546,0xbbaf7bd6,0xbbb4908d,0xbbc3d76b,0xbbc4b9f2,0xbbbdd98f,0xbbb3bcac,0xbbaf15dc,0xbba97671,0xbbb5c564,0xbbb34e77,0xbbb1736d,0xbbbd73c9,0xbbbb087d,0xbba3116a,0xbbaaecb0,0xbba78537,0xbbbf651f,0x3bb6cd1c,0xbae8c148,0x3a583284,0xbac0448c, -0xbab864a0,0xb8a50b1a,0xba774af5,0xb9bfa765,0x3a0461e1,0xba2c7867,0xbb051243,0x3a260439,0x3b627d33,0xbb826617,0xbabeb064,0xbb40698f,0xb909de07,0xbbd2b4ed,0xbbb24bf5,0xbbcd1463,0xbc0247d8,0xbc0a2ceb,0xbc12ca11,0xbc232277,0xbc081ef7,0xbc03c167,0xbbff9232,0xbc0de554,0xbc0a8a95, -0xbc0438e7,0xbc1da482,0xbc13f16a,0xbbc26259,0xbbca25df,0xbbc40bc4,0xbb8ae6cb,0xb97e9e11,0xbb851a57,0xbad3652d,0xb8b7c33a,0x3af24087,0xbb5d38b9,0x3ab6a32a,0xba766ea7,0x3ab7310a,0xbb41b2cd,0x3b0f8b6b,0xba3c1a0b,0xbabafd15,0xbb83cac7,0xbb90256c,0xbaf1a1ba,0xbb06ec94,0xbb6c89a4, -0xbbd9582e,0xbbe60892,0xbc27e6cb,0xbc39cdf1,0xbc409057,0xbc40b814,0xbc1df1a1,0xbc0948e4,0xbc09b812,0xbc1caa06,0xbc2a701c,0xbc15c775,0xbc3e88e5,0xbc2afc1b,0xbbbcf95d,0xbbe2853d,0xbb930b69,0xb9987eeb,0x3b966a74,0x3a9dae3c,0xbab3bb44,0x3b19422f,0x3b75b2a7,0xba9fae09,0x3b74fb39, -0x3b7b22c7,0x3b5cac46,0x3b89446a,0x3b49fa1d,0x3b10dc15,0xba47fa99,0xbb617c0d,0xbb848ed5,0xbb785910,0xbad8057e,0xbafe415e,0xbbc8523f,0xbbcdf75d,0xbc45aac9,0xbc77968a,0xbc8fb64f,0xbc8848dc,0xbc4c9087,0xbc32e59c,0xbc37765f,0xbc4bd21c,0xbc64322e,0xbc3f8880,0xbc85ce02,0xbc608ffd, -0xbb9f4354,0xbbce5954,0xbbc9ea66,0xbb34fc54,0xb80e0c08,0xbae9a3b8,0xbb1dd311,0x3b80c9a4,0x3b83fc0f,0x3a69cbbe,0x3b74f606,0x3b819561,0x3ba4c8bc,0x3c0190a2,0x3bd639b3,0x3b7eb2d0,0xb9146ef6,0xbb20c32c,0xbb468c17,0xbb7e1591,0x3a08ab40,0xbb4a8dae,0xbbcad48e,0xbc0bc0f5,0xbc73ae09, -0xbc882b06,0xbc9326fa,0xbc83c576,0xbc4aa626,0xbc1c78d0,0xbc108c46,0xbc5a5dcd,0xbc69ddd9,0xbc355ba8,0xbc89a505,0xbc62eb56,0xbba5ef7e,0xbbea97ba,0xbbc0b87a,0x3861cfe4,0x3c6d68c1,0x3c69f564,0x397c70f6,0xbbdad196,0xbc171d32,0x39abf8fa,0xba08d59f,0x3b9d55a6,0x3c50579b,0x3b0588d8, -0xbaa4ddd1,0x3b09aaf6,0x399afffc,0x3a3a9ad7,0x3b317fdf,0x3ad67b9e,0x3b0d5bfe,0xbaefacc6,0xbba1afb1,0xbb476e26,0xbb06813e,0x3a9fd66f,0xbaff167e,0xbb9eed95,0xbc74b3b7,0xbc9675a0,0xbcb28776,0xbc401ef1,0xbc3424a6,0xbcb332b6,0xbc1fbcd1,0xbc29935d,0xbc8ebc74,0xbc6780e1,0xbc661e0e, -0xbc690e16,0xbcb49cf1,0xbca68eaf,0x3c20380e,0x3b47e2fb,0x3ba1c374,0x3b17d2ee,0x3b15b5eb,0x3b14b69f,0x3b608894,0x3bd33883,0x3bd12021,0x3b080cd1,0x3a657af8,0xba363473,0x3a65f8cc,0x3a620174,0x3b78e327,0xb685f3d7,0xbbfe04dd,0xbc03813f,0xbc38a16d,0xbb883149,0xbb2f575a,0xbb086bc3, -0xbad6a09c,0xba736245,0x3ba002f7,0xbc008d78,0xbc1092f2,0xbb7f57cb,0xbb2390eb,0xba5e02e8,0x3b103c5b,0xbba27d4f,0x3b8c4063,0x3b987c45,0x3aff739c,0x38556f67,0x3b56fadc,0x3b546ffa,0x3b86f46f,0x3b592145,0x3b3cb270,0x3b287cc6,0x3a8cd949,0x3b346379,0x3b2303fd,0x3b2fe1b6,0x3a55bf66, -0xb97f9d79,0x3a68b577,0xb9c399ad,0xbb0f9323,0xbbab0907,0xbb9fabbb,0xbb8d70f1,0xbba0b8f9,0xbb84c723,0xbb9f2c94,0xbbc7b9ef,0xbc0272cd,0xbbf0f96f,0xbb88172a,0xbc4f44e6,0xbc96b87a,0xbcaf3ef0,0xbc1cc26c,0xbb8e499e,0xbb86228d,0x3b637fb7,0x3b0809f4,0x3bffdfbf,0x3c43b834,0x3bdc6e86, -0x3b493926,0x3ac8ed41,0x3a886b47,0x3b72ac79,0x3b38432a,0x3b2153ff,0x3a933c21,0x3a03ab55,0x3a1a0dbe,0x3a8cfc13,0x39c97f2c,0xbab13269,0xbae3b3a9,0xbada4483,0xbad31e04,0xbb41de94,0xbb6c8043,0xbb4772d9,0xbb5c8d92,0xbb873cd4,0xbbbece4a,0xbbf37636,0xbc215f55,0xbc0a5d60,0xbc180267, -0xbc213d35,0xbc45a480,0xbca05240,0xbc3f885a,0xbc4e6988,0xbca587ac,0xbba4456c,0xbc82226e,0xbc016bd2,0xbc438633,0xbbe6c149,0xbaf776a4,0xbb1d1353,0xbae55d7d,0xbb05b2b9,0xbad8591f,0xb9c07884,0x386c0394,0x39162d4e,0xb972e9e2,0xbb0b3c6e,0xbb058bb4,0xbb0889dd,0xbabc6cf6,0xba81a9ee, -0x3a319deb,0xba6576bd,0xbb4c3e7c,0xbb82750a,0xbb907a41,0xbb49bc8c,0xbb24ed04,0xbb2ad91c,0xbb46c7ff,0xba9e5956,0x3b68c26f,0x3b938b6b,0x3ba268a5,0x3acc5264,0xbc01abaf,0xbc61d46c,0xbca18985,0xbc868e4a,0xbc85c122,0xb979b1d7,0x3c184093,0xbb52a673,0x39e17a00,0xbac03e38,0xbaa44d7c, -0xbac8de26,0xbac8f45e,0xbb06278c,0xbb551c7c,0xbb77b25e,0xbb745cae,0xbb37137a,0xbae98205,0xbaa299cd,0x39dff676,0xba8e846c,0xbab26284,0xb8f8d47e,0x393bc6ae,0x3b176893,0x3a1b6898,0xb8a72932,0xbaf577c2,0xbbad30ed,0xbbafe8c1,0xbc004418,0xbc5e618c,0xbc3c8c68,0xbc43baa7,0xbc8995ce, -0xbc88b1bc,0xbc8cb51c,0xbc982d02,0xbc85d64c,0xbc1ebdc3,0xbc0daa5f,0xbb8b0ad0,0xbbc553dc,0xbc32005b,0xbc2baea7,0xbc38d7d9,0xbc1c9a13,0xbc152db1,0xbbf6ecd9,0xbbcb9ef7,0xbbbce0e3,0xbbaada1c,0xbba2ce9c,0xbb6db113,0xbb1e224b,0xba03f8db,0x39e479fa,0x3b04a629,0x39ffdfc1,0xba3144b6, -0xbb16e6f2,0xbb580ee5,0xbb85885a,0xbb7da991,0xbad21e5e,0xbae397de,0xbacd391a,0xb913fa0c,0xbb04387a,0xbb828e17,0xbbfa6d31,0xbbed50f4,0xbbf77933,0xbbed42d3,0xbc0c1d9f,0xbbf227f8,0xb96a0543,0xbb7c21f3,0xbb98cce6,0xbbba0ccf,0xbc082bee,0xbc047bd7,0xbc0ac648,0xbc0864b8,0xbc04d7c8, -0xbc059907,0xbbe32d07,0xbbc79ad0,0xbbd2ec4c,0xbb89355e,0xbadf8a5f,0x3ac1db33,0x3a6d64d7,0x3984f33f,0x3ab7c4d8,0xba9184d9,0xba8e0bea,0xbaca9959,0xbb0ce782,0xbb1b8498,0xbaced5f0,0xbb341d55,0xbb531ea3,0xbb77d2bf,0xbbbe8094,0xbbfce167,0xbc271049,0xbc00fefd,0xbbc7ff13,0xbbc38150, -0xbb898ce1,0xbba73c95,0xbbc9b3aa,0xbb2ceb77,0xbb7bccb4,0xbae38acf,0xbb10a2b1,0xbb8a9f39,0xbbdf364d,0xbbd12a90,0xbbeb1c07,0xbbeb45f5,0xbc0fead6,0xbbc9eb69,0xbbf322f3,0xbb364c35,0xbb46171e,0xba36a8e6,0xbaa545eb,0x3a1fdd4a,0xbb08aaf2,0xbacdcdf8,0xbaad4e8c,0xbaac7624,0xba97f3fc, -0xbac2be0f,0xbb007863,0xbb4dce47,0xbb8b5c67,0xbbade305,0xbbc711c5,0xbbdcb732,0xbc03a921,0xbbeccd6e,0xbbe9cef7,0xbbd74bbe,0xbbc03d28,0xbba9bd1f,0xbba7f7fb,0xbb035819,0xbbbff8a6,0xbbdcc605,0xbbd08092,0xbbdd60f5,0xbb57af45,0xbb976e06,0xbb5b6d28,0xbb208d22,0xbb10569d,0xbb5f5aee, -0xbb3323de,0xbb9148b7,0xbb8db03c,0xbb21cf25,0xbb9a9928,0xbaae8676,0xbb3574f8,0xbaf1de61,0xbb20cd60,0xbb124556,0xbb199e0f,0xbb091a6c,0xbac47cf6,0xbb20fe7e,0xbb3e7964,0xbb8263db,0xbbab533f,0xbbca61a9,0xbbf7211b,0xbbe6ca35,0xbbc22b62,0xbbbd4765,0xbbc5228d,0xbb9e6e36,0xbbb2813c, -0xbb94f27d,0xba834bdd,0x3b0d88b8,0xbb869bcd,0xbb0e3f56,0x3a8b3f9e,0x3ac0ad71,0x3aac3c79,0x3a91c4cd,0x3ac76962,0x3b1f8a4b,0x3b35e95f,0xbb2fcf46,0xbba3911b,0x3b206301,0xbac8e2f1,0xbb8879c0,0xbb8364c1,0xbb83e192,0xbb835028,0xbb809973,0xbb800809,0xbb806443,0xbb808fd6,0xbb8fb012, -0xbb96ecfd,0xbb9f4c11,0xbba41eec,0xbba22a7b,0xbbac4019,0xbba98fb2,0xbba6a5ab,0xbba8e854,0xbba51764,0xbbe4094b,0x3b82cdee,0x3b4151c0,0x3bbb03b6,0x3af43d86,0xbb8c48dc,0xbbfcb5cc,0x3b1dd3b9,0xbb2b856a,0xbc05502b,0xbc065b63,0xbc0952fe,0xbbeee921,0xbbfcf503,0xbc16fabe,0xbbf3afd4, -0xbb548157,0x3a825ec6,0xbc0bda92,0xbb95a81b,0x3a06a822,0x3ba4e853,0x3b6912ad,0x3b7eb1a8,0x3b736ac1,0x3b6d5feb,0x3b654f0c,0x3b5577b6,0x3b67f4b3,0x3b726c28,0x3b75baf6,0x3b77825b,0x3b70169e,0x3b82921d,0x3b629757,0x3b4ea408,0x3b2e6d74,0x3b476e35,0x3b8039de,0x3bd7f92b,0xbbd96de3, -0x3aced1d3,0xbb7ff5b8,0x3a8b5616,0x3a7abc76,0xbae1b04c,0x3b1f72c4,0x3a05fad2,0xba0f4b3e,0x38f5eced,0x3af2aa34,0xb9e0b7e9,0xbbd09c1f,0xb905f2a3,0xbb4c8e8a,0xba28d2d0,0xbb73852d,0x3b928529,0x3baac03b,0x3ba4fc4f,0x3b94e8f5,0x3b79a572,0x3b619493,0x3b5d1455,0x3b9d2af8,0x3bae5f2f, -0x3bae7e5c,0x3bb97474,0x3bb43a7a,0x3bcd2854,0x3b892ec3,0x3b5bd2ef,0x3b23acc9,0x3b390d2f,0x3b7345c1,0x3bb7a4b4,0xba697e6d,0x3b795323,0xbb23531a,0x3b03fe5e,0x39a7258f,0x3aeb46fd,0x3a2b9246,0x3ba7d35f,0x3ab2073c,0x3bc96dd9,0x39a9c34e,0x3b724d7b,0xba87b2a8,0xb992667a,0xba7cd363, -0xbb0dbb4a,0xba8efb31,0x3b47e0d2,0x3bf81ea3,0x3bbc9566,0x3bbeb5d6,0x3b87fb09,0x3b747f32,0x3b3c4d2c,0x3ba1cfce,0x3bc72ad5,0x3bd7edd9,0x3bcddd92,0x3bc96b85,0x3bebe246,0x3b7e313e,0x3b07df2d,0x3906ef7a,0x3adf88ed,0x3b9cd757,0x3c05f49b,0xb9ced476,0x3af603f7,0xbab18223,0x3b1e7311, -0x3b4db342,0x3b04776c,0x3b948e53,0x3ba98b5a,0x3b4f89cf,0x3ba6fd30,0x3b61b872,0x3bb0f952,0xba9f7bc9,0xbabc9b4d,0xbac1ead2,0xbac42907,0xbae6d441,0x3acce9f8,0x3c13f072,0x3bd816e1,0x3bc591dc,0x3b6fa0a0,0x3b4160f5,0x3b0296e1,0x3bc6ca86,0x3bfc3181,0x3c06a2cc,0x3c0fa8fe,0x3c084c18, -0x3c2a849d,0x3b7bc8f9,0x3a99164a,0x39bb5d31,0x39784c34,0x3b0bcda9,0x3be158d4,0xb944db87,0x3ae24317,0xb9f5b177,0x3bb0ff13,0x3ba75217,0x3a8e5eb7,0x3b815b72,0x3b9e10f6,0x3bcade93,0x3bebcd4d,0x3be2eb6e,0x3b9601f0,0x3acd0599,0xba7af96e,0xbb1d8e21,0x3ab4da33,0xbb7330ec,0x3b956b6d, -0x3c17069f,0x3c082004,0x3bef0f8c,0x3b9168f6,0x3b4f1ad3,0x3b15da42,0x3bd0886d,0x3c1c714d,0x3c2639c7,0x3c114e5f,0x3c0332f0,0x3c141ea2,0x3b475607,0xba46f64f,0xbb22b810,0xba52694a,0x3c35b79b,0x3c9a0003,0x3c6ed6f0,0x3c3f6651,0x3b0907c2,0xbc1666b3,0xbbffb53f,0xba2cb578,0x39f63605, -0x3b9d9b4e,0x3c4444f4,0x3b2d864a,0xba58f975,0x3ab2db81,0x3a51f469,0x3b59f120,0x3aa84328,0x3bb52aa6,0x3b8aade7,0x3bf3cb8e,0x3c38bc89,0x3c0c77ff,0x3c15cbd7,0x3beea8d5,0x3bc30f52,0x3982e083,0xb8bd0a60,0xba7250cf,0xb9684516,0x3c202031,0x3c6b4bd7,0x3c05a1d0,0x3c618e3f,0x3c33fb17, -0xba02a4c5,0x3be1b6f7,0xbb5fbf91,0xbc00c6b6,0xbcdcc1be,0xbc2a1057,0x3b8c0ebb,0x3c051720,0x3bb7d441,0x3b290da8,0x3b308af0,0x3b0ce44b,0x3b6db409,0x3bc4f308,0x3bc29b6a,0x3b5fa81f,0x3b0eb6ec,0x3b18573a,0x3b2c53a8,0x3b4b7dda,0xba27d1bf,0x39da9307,0x3be65129,0x3be88318,0x3c4373c0, -0x3c1f09f4,0x3bd41fd8,0x39db2edf,0xba4b33f3,0x3a2f3d1b,0x3c2731a9,0xbafa7de9,0xbb899453,0xbb08516b,0x3af13d99,0x3b504a2a,0x3bb730d9,0x39a76497,0x3c0bb6d3,0x3c2111cd,0x3bfe07ac,0x3b0fdf62,0x3b6052fb,0x3b6e9e64,0x3b8f3109,0x3bb09b95,0x3b614627,0x3b7bc0c1,0x3a766195,0x3b633b90, -0x3b4de8d7,0x3b11fe98,0x3b4f12c0,0x3a717857,0x3acef473,0x3ab2c81a,0x3858197f,0x3b3a834c,0x3b4e6472,0x3b2f6cd0,0x3b6b6f45,0x3c2ea4b5,0x3c5f6396,0x3c600a5b,0x3c489281,0x3c14d215,0x3bd5e415,0x3b3670d4,0x3b9ed095,0x3b96d1a1,0x3c949ad2,0x3ca84de1,0x3c4ff7c2,0x3c223b4d,0x3c04ce00, -0x3c0e26b8,0x3bbfea7c,0x3bfd9bc3,0x3b02015f,0x39960e9e,0x3a1f23ca,0x3bb4a771,0x3b79c0ce,0x3b3fc7d2,0x3adbc74c,0x3a83476a,0x3a3709df,0x3a85a556,0x3a948288,0x3a3cbb9c,0xb926c1f8,0x396153d1,0xbacd1c3f,0xb8801d6a,0x3b4067a5,0x3b34530d,0x3b1ff124,0x3c21818c,0x3c50d9ef,0x3c7524d7, -0x3c658ae8,0x3c390459,0x3b9e4957,0x3c004b3d,0x3c4b183d,0x3c343e69,0x3ccde2b3,0x3ccc7913,0x3c6a4b9c,0x3c1f8cd5,0x3b2d42db,0xbbf0db40,0xbc169a73,0xbbcfb96c,0xbaa2ef29,0x3a8d2425,0xb9362404,0xbb0cafb7,0xba78c553,0xba04ef5b,0xb8095e39,0x39877138,0xba296c32,0xba2ee89e,0xbacc1046, -0xbb130223,0xbadf1298,0x3a5a3251,0x394ff3b4,0x3b10e432,0x3b83fdea,0x3bd49b75,0x3c0b2f06,0x3be2798a,0x3b7bebb9,0x3b148d82,0x3afa7b92,0x3b8e78ef,0x3bf4140c,0x3c0bf8c9,0x3c2ac76b,0x3c0ec68d,0x3c598d8a,0x3c7a31a7,0x3cc03876,0x3c128511,0x3c8a93d9,0x3bc4f0a4,0xbbb73d26,0x3b4d19fe, -0xb9459bf9,0xb973847b,0x3a07bafd,0x3ad89586,0xb9c8e52a,0xb8b2a419,0xbabcc9f6,0xbb31dda5,0xbb65b775,0xbad4fe23,0xbae1e471,0xba05f1cf,0x3b0973c7,0x3964e3c6,0x38b44132,0x39b27b00,0x3b49385b,0x3ab0403e,0x3afbbb0c,0x3aeb8e0c,0x3b404ad3,0x3ba5e09f,0x3bb2d33b,0x3ba4e562,0x3b7fd499, -0x3bb09e1d,0x3bf5b4e6,0x3c2eb0f9,0x3c432358,0x3c312365,0x3c338727,0x3c2b1d07,0x3b8daaba,0x3a02acf1,0xbbf634e8,0xbbf3bbf4,0xbc286afd,0xbc2fe9cf,0xbc1ef942,0xbc0b4221,0xbbe6c6b8,0xbbd6f557,0xbb8c9342,0xbb861b6e,0xbb57cc17,0xbb6a018d,0xbb3e3bae,0xbaf7b4e2,0x38cd1956,0x3ad8a4bf, -0x3a97e0e2,0x3af56815,0x3b50ee3c,0x3b6d9741,0x3b6fa624,0x3b2d697e,0x3b21e2db,0x3b85e37f,0x3b66b7d3,0x3b3e763f,0x3adafbab,0x3b122cf0,0x3b887cc8,0x3c14e841,0x3bf651ea,0x3be27fed,0x3bdd4052,0x3ba7bdf1,0x3bb392cc,0xbb553e71,0xbacf3354,0xbb67889e,0xbb99a547,0xbb7478d3,0xbbe8f21b, -0xbbe33fac,0xbbf45462,0xbbde1a40,0xbc03824c,0xbbd6844e,0xbbdcc2a3,0xbbb87696,0xbb6197b8,0xbaef5c34,0x3979f8fa,0x3a72e367,0x3af6b1f7,0x3a4c3a1b,0x3b6d369f,0x3b1c2fe3,0x3b1ffcc1,0x3af7e5bb,0x3afd4730,0x3b1507ea,0x3b1d4ae6,0x3b244a17,0x3b05bdc5,0x3b060a3b,0x3b2ef045,0x3b9b6641, -0x3b87a50e,0x3b6b023f,0x3b716464,0x3b0bfd2f,0x3a3f255a,0x3ad2957e,0xbb855d78,0xbabd67af,0xbb499c60,0xbb96bc05,0xbb9be915,0xbb9ff4c9,0xbbbc02bc,0xbbaaa568,0xbbeb0445,0xbb661789,0xbbbd2793,0xbb856b66,0xbb976f35,0xbac68508,0x38b24058,0xb858df31,0xbaaf47e6,0x3b127c80,0x3af808ff, -0x3a77ad99,0x3a5d3427,0x398355c0,0xb9dcfce9,0xbabc76fe,0x37f464e6,0x3a755906,0x3b193f11,0x3b2aed91,0x3b27c28d,0x3b0fafe7,0x3afe3f87,0x3ae43ffb,0x3ae893ce,0x3a641eb9,0xba403e91,0xba1bfea9,0xbbccf8dd,0xbaf8de83,0xbb26e41a,0xbb4421b4,0xba7d8927,0xbb7eada1,0xba604bee,0xbb3d9b80, -0xbb3f5b02,0xbb62dc89,0xbad52197,0xbb37d290,0xbaf4c776,0xbb1d5cbd,0xbb8dbcb0,0xba7dd159,0xbb58f483,0xba5182d7,0xbac2258a,0xba555609,0xba4466b2,0xba0d7e43,0x3616b40d,0x3a1d3c77,0x3a0ce1b8,0x3a3acb6c,0x3a1e08b7,0x3a885c3c,0x3ae1193c,0x3b31c234,0x3b006914,0x3a9ace3c,0x39e95a71, -0x394989c3,0xb89c612a,0x3a133ce9,0xbac876c7,0xbb9ebbb6,0xbbd46b91,0xba7b14f5,0xbb774f82,0xbbeb7b46,0xbc03e68f,0xbbf6e50c,0xbbea2144,0xbbf904f8,0xbc0aa266,0xbc0b1ca9,0xbb6c27bb,0xb9c23672,0xbbc93456,0xbb6368b6,0xba21fe05,0x3a219a41,0x39d2cb96,0x399b874c,0x395532a0,0x38d7cf00, -0xb8c141e2,0xb9663c5b,0xb90bf5e5,0x39618c68,0x39fa0f00,0x3a249614,0x3a0ba351,0x3a119217,0x39ae86a1,0x39b3d76d,0x3987e1ba,0x38a762af,0xba7cad37,0xbb87df29,0xbb6179cc,0xbbbdd1d9,0xba03691c,0x3b9e9718,0x3ba7598a,0xba7f330b,0x3b6e7b39,0x3bd5e19d,0x3be65f09,0x3bebdaa3,0x3bc819a9, -0x3bccda11,0x3bf4807a,0x3bcec026,0x3b773c15,0xb96aab47,0x3bb2a993,0x3b8f6d2c,0x39d0eae2,0xbba4d7cd,0xbb63dc99,0xbb7a5563,0xbb843b5b,0xbb914e97,0xbb91366c,0xbb8890d5,0xbb798d4a,0xbb6e7a19,0xbb6c761f,0xbb79c102,0xbb766936,0xbb701ba1,0xbb79d9d7,0xbb7719e4,0xbb640841,0xbb724c61, -0xbb8a80f5,0xbb46d142,0x3c14556d,0xb9aca33e,0x3b20e7a4,0x3a14e78f,0x3acba367,0x3ab584ae,0xb92d1e06,0x3b2b0c08,0x3b29ae66,0x3b14e5a3,0xb9ff47aa,0x3b2ac892,0x3b9b0aea,0xbab9d25b,0x3a89f3dc,0xba62da38,0x3b54db0b,0xbb47597b,0xbb89cbca,0xbb88e010,0xbbbae481,0xbbc09217,0xbbc45bff, -0xbbcef2b3,0xbb995613,0xbb93fbcf,0xbba620e9,0xbbb2bc21,0xbbab987b,0xbb9d7d94,0xbbb08bc1,0xbbab93a0,0xbb82fa1e,0xbb82ed99,0xbbb9518a,0xbb2ef37e,0x3b770555,0xbaea36ce,0x39875ea5,0x3acf61e1,0x3b8ae945,0xbb0d7d8b,0x3b71eec7,0xb9ede4a1,0x3bb14a73,0xbb235615,0x3b228ba5,0x3b0ce959, -0x39b4c515,0xbb0d7c06,0xbb0a89a9,0xb85255c5,0x3a806ff9,0xbad17940,0xbbafac00,0xbb8ff3ee,0xbbf2c497,0xbc05d393,0xbc0ab566,0xbbf95374,0xbba77496,0xbb83f0aa,0xbb9e397e,0xbbb27672,0xbbc212a1,0xbb9c5373,0xbbb99cd7,0xbba99886,0xbb74b5fb,0xbb956be5,0xbbaaee43,0x3a51a40f,0x3c0e0e19, -0x3b618bdc,0xba72050d,0x3b319558,0x3b752f68,0xb9268a19,0x3b892d40,0x3b89c5ec,0x3b6e0de6,0x3b217710,0x3b4da450,0x3b0a1f73,0x388f7fa4,0xbb477718,0xbb3db136,0xbb16c260,0x3a875482,0x3a45094d,0xbba6084a,0xbb8589fc,0xbc0a0bc8,0xbc2c8a2f,0xbc3aa61d,0xbc1988b3,0xbbaefd9c,0xbb88edd0, -0xbbd4bfbc,0xbbd824d6,0xbbed21f9,0xbbbbe376,0xbbe6fb9a,0xbbd1cb1b,0xbb6e6d8e,0xbb769c31,0xbbe1940c,0xbb51ec70,0x3b6def1f,0xba5aa77d,0xbb54f8f7,0x3b8498ab,0x3b986989,0x3a439b8d,0x3b816c12,0x3b93d221,0x3b8c14c5,0x3bcc3b32,0x3ba1662d,0x3b87f0e5,0xba975cf9,0xbb2f44fd,0xbb0b8851, -0xbbaa8942,0x3b6b24e4,0xba938fdd,0xbba316cb,0xbba23760,0xbc29fd00,0xbc432572,0xbc4ba7e3,0xbc2983cb,0xbbb56f31,0xbb39a7f6,0xbb8cefaa,0xbbe1f449,0xbbe6684f,0xbb99c1ad,0xbbcc7a27,0xbba6c704,0xbb5b6cf0,0xbb9eb86a,0xbb364238,0x3b043c98,0x3ca9c359,0x3c9a27ed,0x3ba81194,0xbbc8f96d, -0xbc2ac495,0xbaa04f29,0xbaaf2a89,0x3b5c4013,0x3c2906ac,0x3b276d09,0xba80a610,0x397fb980,0x3a81a8ed,0x3a949e7e,0x3b488c75,0x39e41206,0x3b90124f,0x3abeb364,0xbb8818a3,0xbb5b37fc,0xbbabb343,0x38ce5e36,0xbb629b2d,0xbc1895a2,0xbc847141,0xbc95d2e4,0xbc9610ed,0xbc0d7ba2,0xbbd42462, -0xbc342e68,0xbbae0419,0xbc0bb409,0xbc6e916a,0xbc3a635c,0xbc98ee0e,0xbc647efa,0xbc641ed3,0xbc9ae93d,0x3ba90d5b,0x3b9fe55e,0x3bec63eb,0x3b4892f0,0x3ad07a12,0x3ac574ea,0x3b291c6f,0x3b9edd03,0x3bb0f64d,0x3b2fcd79,0x3a85a1f4,0xba869827,0x3ae475a6,0x3ad3018f,0x3b9aaac1,0x3aeaef2b, -0xbb974915,0xbb4d556b,0xbbda6bac,0xbb30e4e8,0xbad541b3,0xba03aae3,0x391b9dbf,0x3903149d,0x3bd4503e,0xbbd03e26,0xbbd1abd3,0x393fb711,0x3a7454a5,0x3b2ceef8,0x3bee97aa,0xbb9eaa7b,0x3b2ac279,0x3bd9d9ed,0x3b60abec,0x3a9b0ea6,0x3a1e84a7,0x3aecccd2,0x3b751657,0x3baaa69e,0x3b5b01cd, -0x3b2c435e,0x39b6ca9d,0x3b0315d8,0x3b09c45d,0x3ae52295,0x3b129154,0x3aaf7c10,0x3adb7f2a,0x3a5c1e7e,0xb8e44b0d,0xbb6103f2,0xbb70bc29,0xbb11fe77,0xbb56ffe3,0xba8a09a7,0xbabaacc4,0xbaa7aaa9,0xbb921900,0xbb99ed9d,0xbbc24b18,0xbc3434e6,0xbc44cff8,0xbc13e8e8,0x3b28ce1e,0x3bbd8aec, -0xba641728,0x3b4c4186,0x3b07db01,0x3bd34f5f,0x3c1d4667,0x3ba773b9,0x3b2a93cc,0xba69cdbd,0xba2a8c89,0x3ba72624,0x3b4cca77,0x3b185d1a,0x3a25947f,0xb91f1518,0xb8f21307,0x387daef0,0x39e3e751,0x38e23975,0xba9d0205,0xbac31a1f,0xb92a4216,0xba46bc17,0xbb89f43d,0xbb0c3acd,0xbb219831, -0xba8c380a,0xba9fd1a4,0x39068956,0xbb14a23d,0xbae88e21,0xbbf022fb,0xbb7ea6d0,0xbb8ce15a,0xbc2e0926,0x3a548fef,0x39ec132e,0xbc0c2fd1,0xbaa3be72,0xbc032445,0xbbaea761,0xbc0c89b9,0xbbd2f5ba,0xb8ec3384,0xba4f8521,0xb940afb3,0xba84a834,0xbb03d7a4,0xbab2cb2e,0x3824d6df,0xba9b30c6, -0xbaa505d7,0xbad17fa9,0xbb0efd1f,0xbb1eac05,0xbaeafce4,0xba558b7b,0x3a96e93b,0xbb391ec6,0xbb367efa,0xbb150503,0xbaee9aa5,0x37e788ac,0x397bdcc6,0x3ab8c1bb,0x3b0cd80b,0x3b9717a8,0x3c0bccec,0x3c235b93,0x3c127f1d,0xbaa51e0f,0xbb34fda8,0xbb9eaf93,0xbba46106,0xbb9444cb,0xbae6705d, -0x3c1492df,0x3c4a8391,0x3b3f56c1,0x3b740c68,0x3b02b433,0x3b00c4b8,0x3a746046,0x3a57729b,0xb9877d09,0xba9712a6,0xbb433113,0xbb69754b,0xbb235797,0xbaf260e7,0xba9c4a1a,0x391da364,0x3a1fbe64,0x3a87450b,0x3ad0ad95,0x3a4b9cf6,0x3b395cf0,0x3a8e2a29,0x3a8bc529,0x39424e27,0xba8244f5, -0xba5d0b02,0xbb1cfd42,0xbbb3d52e,0xbb8f74c0,0xbb6ebffe,0xbb1057cf,0xbb3e3ae0,0xbb67599c,0xbbb8dff7,0xbaf18fba,0xbb9a3cc8,0xbb705ab1,0xbb1fe9c1,0xbbb129de,0xbc09985a,0xbc0ef61f,0xbc1ddc40,0xbbe65102,0xbc030aa9,0xbbbfdf2f,0xbbc0e83b,0xbb8d6c41,0xbb890597,0xbb808c7c,0xbb66cd60, -0xbb1e7efb,0xba9a59e0,0x3a2e53ab,0x3b2d373b,0x38b51b4b,0xb9c6b639,0xba684745,0xba686c68,0xbab4b2e1,0xba56ec80,0x3a22fe30,0x39b39c89,0x38af1136,0x3933d261,0xba53be6e,0xbb08956b,0xbb981ef3,0xbba7b8e0,0xbb9c96bd,0xbb915340,0xbb7fdef5,0xbb9ef359,0x3b25d970,0xba314a92,0xbb2e8572, -0xbb7bec3d,0xbc00419c,0xbbe1a062,0xbbf8fc46,0xbbece47c,0xbbfb89a4,0xbbf20d79,0xbbdb183a,0xbbb866e2,0xbbc0147b,0xbb885984,0xbb134323,0x3a5e872d,0x3aa8bc70,0x3a6e62f6,0x3b37552b,0xb9fa7d5e,0xb803b87d,0xb99a0c8e,0xba4abeec,0xba83a3c6,0xba6a75de,0xba8cb671,0xba8d0099,0xbab6b18a, -0xbb38c79c,0xbb7a8aba,0xbbac3948,0xbb62dec7,0xbb29a85c,0xbb51e8fc,0xbacb9582,0xbb503a0a,0xbb72971d,0x3990b703,0xbae5dc24,0x397ed476,0xb997f08e,0xbb3baaf4,0xbbcf25e0,0xbbb1ba39,0xbbc6e8ec,0xbb9c6906,0xbbe223d4,0xbbad9df8,0xbbbc3c5a,0xbb1c0fc6,0xbb34de77,0xbaa9b5cb,0xbaab021e, -0x3ab33656,0xba67cf78,0xbadcbc9c,0xba53300b,0xba9cb599,0xba84e4e3,0xbac26c0b,0xbafe8a3e,0xbb150d4d,0xbb2886d4,0xbb1b894d,0xbb323655,0xbb3e73ee,0xbb73b72c,0xbb68fe7c,0xbb5be0fd,0xbb479429,0xbb39b9dc,0xbb58e738,0xbb59bdcb,0x39c0ae04,0xbb7ae6fb,0xbb80335c,0xbb5ccee2,0xbb663f62, -0xba062a39,0xbb0de4eb,0xba30d35a,0xb98cc177,0x389a4de8,0xbaaf5704,0xba8115ca,0xbae72212,0xbae5874a,0xba4b3492,0xbb4748c9,0xb9fa537c,0xbb67bd76,0xbb28f546,0xbb441ff1,0xbb33ece1,0xbb33bfc8,0xbb1be7cf,0xbae541a1,0xbb3c1eba,0xbb5dfeaf,0xbb8e0763,0xbba98dd4,0xbbb8077b,0xbbc8861e, -0xbbb48df0,0xbb9a92d6,0xbb949e87,0xbb8de184,0xbb7adafe,0xbb8d7816,0xbae9e764,0x3a9352ea,0x3ad4c32c,0xbad92f31,0x39086a4c,0x3a9c9dd4,0x3ac5102e,0x3a947d62,0x3a305d59,0x3a80a650,0x3add3acd,0x3af87402,0xb99f358a,0xbb384db1,0x3aa8ede0,0x39c2f458,0xbb039243,0xbb7a52ed,0xbb64a453, -0xbb66ec72,0xbb645cbc,0xbb6602ba,0xbb68e8d6,0xbb6727a8,0xbb758671,0xbb70cc38,0xbb72fe17,0xbb70f540,0xbb701915,0xbb7e6c76,0xbb7ef753,0xbb7a5681,0xbb7a9eee,0xbb79c919,0xbbb47d62,0xb9d1c533,0x39275cce,0x3b1b84e4,0xbb578d99,0xbbd265c5,0xbb9a4bd6,0xbb0f0a52,0xbba5c32d,0xbbc5a6f3, -0xbbb99336,0xbbadc28a,0xbb89629c,0xbb94a020,0xbbaac1ec,0xbb87f99a,0xbbbbd0d3,0xbb6cf881,0xbb942352,0xbbc6bfbc,0xbb6bb910,0x3b04c889,0x3a016b55,0x39ea5060,0x39c761e9,0x398562a9,0x398666d7,0x3989c346,0x3a18452e,0x3a2f9cf0,0x3a263cb8,0x39d93abf,0x399b93f0,0x39de6c68,0xb8599d9e, -0xb91144dc,0x3777703d,0x38f47db4,0x3a73ec4d,0x3a51bf26,0xbbe92a35,0xba1dc99b,0xbb9f41f1,0xbacf6c32,0xbb17e837,0xbb2872e2,0x3a7d2535,0xbb07f80f,0xbaf25b11,0xbb4ca978,0xba922430,0xbb003e2e,0xbbb77cad,0xbb47c659,0xbb9e0fc1,0xbb3ca315,0xbbbc18b3,0xba23f8f7,0x3a8b89e3,0x38a5dcac, -0xb9a94f48,0xba4d6131,0xba658f8c,0xba92cfcf,0x3a63d03e,0x3aa2af91,0x3a4ce354,0x39b0bdbd,0xb79cbdb1,0x39c3db46,0xbad92f81,0xbafb1795,0xba65bbd9,0xba657c33,0x3a61fa82,0x39d20f56,0xbb8a64a8,0xb98318ef,0xbbaab34d,0xba3f7299,0xbadfab65,0x37c9e723,0xba9f4e73,0x3b4bddc3,0xbad40191, -0x3b1b83af,0xba8aa6c2,0x39d58ffc,0xbb41aa02,0xbb325054,0xbb782f27,0xbb71021a,0xbb7cc9a1,0xb8fbd673,0x3b095ca0,0xb9f74c71,0xba12fdf9,0xbaf11ea4,0xbab289b0,0xbad80851,0x3a94d7e4,0x3b0291d0,0x3aadaaa6,0x39295cbd,0xba74c766,0xb9a7e456,0xbb65bc92,0xbb6d14a1,0xbaf843bb,0xbae6de19, -0x3b1d4bf0,0x3b2390b3,0xbb6e3db2,0xba2c5a80,0xbb72dbb8,0x3a4393dd,0x3b009d5c,0x398a20b5,0x3b8f2527,0x3b9b7480,0x3b5ad4a7,0x3b6f01e6,0x3a1408ee,0x3b9977f4,0xbb43b827,0xbb29964c,0xbb436e74,0xbb59eb93,0xbb8a132c,0xbabd5ffc,0x3b338347,0xb9c0d94a,0xbae0ab9e,0xbb79e795,0xbb87070d, -0xbb892a32,0x3ab8d358,0x3b3fd209,0x3adfe1b0,0x3a2bf008,0xbab75300,0x38a3ea1b,0xbbcb0817,0xbbccb5ae,0xbb0095cf,0xbb4822c1,0xb906bbae,0x3acad8d1,0xbb68329a,0xba83c238,0xbb8cae8a,0x3b516229,0x3b989f18,0x3aad6bdb,0x3b87a792,0x3b979298,0x3bc809cc,0x3bb9dfd8,0x3bb518c0,0x3b8acb7b, -0x398c1642,0xbb122c6b,0xbb5e3973,0x3a878f4b,0xbbaffffa,0x3ac0cd86,0x3b2fc92c,0xba58e13f,0xbb207bc8,0xbb8981a2,0xbb825d11,0xbb4828f3,0x3b291f71,0x3ba7d6db,0x3b7d7e96,0x39185a5e,0xbb2c7495,0xbad99d47,0xbc04e679,0xbbf5a9ec,0xbb29d951,0xbb599a64,0x3b8b79ca,0x3c14f0f7,0x3c017968, -0x3c165add,0x3b6dd08b,0xbc1962ad,0xbc299b42,0xbb5ef1b4,0xba82896b,0x3b516b28,0x3c0e5366,0x3b15db4e,0xb93b3bc4,0xba0aa324,0x3a6902e4,0x3b508cb4,0xbab465c4,0x3b33fefa,0xb9bd902c,0x3b017888,0x3b9fa5bd,0x3b90d4cf,0x3c006b15,0x3ba337ba,0x3b5f165a,0xb9a4d041,0xbb13db91,0xbb3b387c, -0xbace6967,0x3bac7f54,0x3bd2e078,0xba0c725c,0x3ac543ea,0xbadaf24c,0xbbfd81a9,0xbad3a47f,0xbb98754d,0xbc43b190,0xbcdd22cc,0xbc481ed0,0xbbaa802b,0x3bcf7fe7,0x3c00157c,0x3b10cdd4,0x3b024937,0x3a1fb247,0x3b063c8f,0x3b95e15a,0x3ba084de,0x3b7b9f5e,0x3aa50e17,0x3aa266d5,0x3a8f1c5c, -0x3b0ebcb5,0xba40cb77,0xbad2d1dd,0x3ad79375,0xba5cc074,0x38a8d2cd,0x3a8fcf89,0x399991d7,0xbad69063,0xbaeb117e,0xb92e8e53,0x3c015613,0xbb840c5b,0xbbd66df0,0xbae31702,0xbb337526,0x3a7b2ad0,0x3c2c6a94,0xbaa7bbc5,0x3badab8b,0x3c0a6050,0x3b9dd26f,0x3a1cf926,0xbb17d1ad,0x3a8848ba, -0x3b3a9730,0x3bb9c1d8,0x3b4ccf28,0x3b4d5a5d,0x395de76e,0x3b1618c7,0x3b07c419,0x3afcc63c,0x3b0b4425,0x3a4feb46,0x39f197e2,0xb9648909,0xbaf86a13,0x3a1aba5c,0x3a8e008f,0xb97ba84a,0x39074c1e,0x3b97c56b,0x3be394cd,0x3bbe1acc,0x3bc32c8f,0x3b97002a,0x3b4fd2bb,0x3a2062be,0x39109083, -0xbb163c12,0x3b1f4e25,0x3b5fddb6,0xb8e1050d,0x3b111727,0x3a8a08cb,0x3bd27807,0x3b94f2d0,0x3b86ed03,0x3a467f92,0xbb582c74,0xbb09dd49,0x3bb5e9f8,0x3b6c6278,0x3b42954c,0x3a1c79d8,0x390792f0,0xb9cfa3ca,0x38c09b01,0x3a6e9a3b,0xb91e9783,0xbac1f4ea,0xba0865a4,0xbb393286,0xbb419434, -0x3aa500ff,0x38532d6f,0x39d2fc58,0x3b8c7bd1,0x3bb057f6,0x3bd69730,0x3bba6717,0x3b893aa3,0xbab325d7,0x3b8372ba,0x3bd51d65,0x37db0301,0x3bb22686,0x3b038901,0xbc12ca08,0xbb119cd3,0xbbe8c160,0xbc18e0ca,0xbc18f71b,0xbba86f21,0xbaf52b05,0x3aad0f2f,0x3a8706d4,0xbb0085b9,0xbaa5dc16, -0xbabf7dac,0xba652bd5,0xba9315d8,0xbaf7be10,0xba0c2334,0xbb3220ec,0xbb5f044d,0xbb27f3a8,0xba3be7ee,0xbaa62d76,0xb62bb711,0x3a404387,0x3aa61b4d,0x3b1cab78,0x3aaee62b,0xb78ac6ac,0x3aae6003,0x3a8e387d,0x3b253075,0x3b2450fb,0x3bbf3d3d,0x3b9f42a4,0x3ab68176,0xbb4d7907,0xbb83ca8b, -0x3a02cd67,0xbbd0c58e,0x3b917ced,0x3ab9ac3d,0xba70a678,0x3aead6d2,0x3adcc8a0,0x3a1a4b56,0x3a01d708,0x3ad83adf,0xb9c08314,0x39939257,0xb9903443,0xbb0506dd,0xbb556466,0xbb11d15c,0xbb0a4887,0xba64f686,0x3a859bfd,0xba70decf,0xbab88928,0xba4f1a01,0x3b0a4920,0x3ad23269,0x3afba751, -0x3a6e19cd,0xb872d669,0xba8aa56e,0xbb2eadcd,0xbb777339,0xbbc79d3c,0xbaad54cb,0x3ada71ea,0x3bc5da63,0x3b2dbc81,0x397c9d0e,0x3a400263,0x39c02e52,0xbb76bedf,0xbbbb277e,0xbc1bc277,0xbc17caf2,0xbc36a571,0xbc29273c,0xbc11b6b4,0xbbeff3eb,0xbbd5ccee,0xbbe50faf,0xbb746be5,0xbb893039, -0xbb3a7125,0xbb47693c,0xbb769378,0xbb6f046b,0xbb1a8e18,0x3a442497,0x3a9c9705,0x3b09b2f7,0x3b1fe618,0x3b0e6f4c,0x3b29465d,0xb935fd10,0xba06aea4,0x396805e4,0x3a97cbb8,0x3b0910f5,0x3b0cfb8a,0x3b026d25,0x3af6423e,0x3b2a7a5b,0x3b03d166,0x3a3cc2bd,0xba4891a2,0xbb2b3cb5,0x3a924560, -0xbb648491,0xbb9e392c,0xbbc4b5a9,0xbbf7615e,0xbbbe1397,0xbc087d29,0xbbe31a64,0xbbf741a3,0xbbcd16f9,0xbbf2d3c0,0xbbb15bd1,0xbbc82987,0xbb95c26d,0xbb825e32,0xbb2f7bc7,0xbb01293b,0xba20db64,0x3a3f107f,0x39c4764a,0x3b507c67,0x3b041c29,0x3b20c731,0x3a9887c9,0x3a6a0a72,0x3a5fa495, -0x3a99c532,0x3abab97f,0x3ab06fbc,0x3a92ab89,0x3a9fa692,0x3ac7c505,0x3ace89d0,0x3aa6c6fb,0x3a9ff0d0,0x3891b0f6,0xb8daf847,0xb9e7ddac,0xbb861669,0xbb24bc98,0xbb824314,0xbb9fce88,0xbbad9704,0xbbba16b5,0xbbcea202,0xbbb24eb9,0xbc0292a8,0xbb92778c,0xbbb5c96d,0xbb97d1a9,0xbb93eb8b, -0xbb271ae3,0xbac733ad,0xba9aef2d,0xbb1f3c47,0x3a636301,0x3afe404f,0x3a690246,0x3ab377d8,0x3a74a26d,0x3a20d2d2,0xb9883adf,0x39044260,0x380092c2,0x3903c659,0x3928d8bd,0x39076407,0x3893706c,0x39020099,0xb88110e2,0x3974d5e0,0xba1b6a1e,0xbad96a91,0xba9a6dbc,0xbba918b7,0xbb0e4dca, -0xbb55fb5e,0xbb49cee2,0xbaf106eb,0xbb205a97,0xba6649d3,0xbb437a3e,0xbb417471,0xbb802a15,0xbb363e53,0xbb774af4,0xbb8180e3,0xbb84ec9b,0xbb9c1913,0xbb177235,0xbb821749,0xb9a724ee,0xba6ba77e,0xba424786,0xba4ae00d,0xba50a308,0xba032ada,0xb8ba253d,0xb5721656,0x38ed1662,0xb929ad81, -0xb9d8f9ef,0xba3c695c,0xba995677,0xbaa1a665,0xbab163cf,0xbac1e935,0xbab828c0,0xba4d92c8,0xb9da082f,0xbb5ddcdb,0xbba79cb3,0xbb8dfe7d,0xbb40ad3f,0xbba5b032,0xbbbe4026,0xbbce0ba1,0xbbbb16c8,0xbbac07a3,0xbbb40104,0xbbc278c7,0xbbc1d7d0,0xbba55dc9,0xbb28d3ca,0xbb8d6d15,0xbb9ac23b, -0xbb32063b,0x3893df87,0xb9dd6c4f,0xb9d54754,0xb9cc2dcd,0xb9c29b09,0xb9f21723,0xba1584a1,0xba4041c6,0xba46c9fa,0xba481c2d,0xba458da8,0xba32d0ea,0xba2e6420,0xba30a1db,0xba33a256,0xba3bc8c0,0xba4fe161,0xbb194aba,0x3a5c19d1,0xb7ab9910,0xba849241,0x3b6efdbe,0x3b88446f,0xb9749c15, -0x3b4277cc,0x3b7d9e68,0x3adf442c,0x3acffb81,0x3aa2c344,0x3a46558b,0x3a077e50,0x3a02a16a,0x3a321920,0x3b7f991c,0x3b58d16e,0xba4ca5d1,0x3b57fc10,0x3b563c0d,0xba24e0b6,0x391b01e8,0x396fac22,0x379cccd2,0xb94d6176,0xb950841e,0xb877e4d1,0x39966117,0x39ee404a,0x39d72d12,0x39cde413, -0x39b20241,0x39f67b85,0x39e34fd3,0x39c95ce4,0x38dc04a7,0x38946ad7,0xb9c9674e,0x3b20e254,0x3bac17b9,0x3ac36ca6,0x3aa444a3,0x3b0a8b09,0x3b546052,0x3abb0a8c,0x3ab2f4f5,0x3b7cb175,0x3b468e39,0x3b5eed60,0x3abcd213,0x3b361071,0x3abb194e,0x3a76b302,0x3a94a3b6,0x3a378c53,0x3b3ee313, -0x3b0b7f50,0x3902fb5e,0x3a28c3ba,0xb94371ab,0xb98a6f74,0xb8cd51a5,0x395a3177,0x3ae34713,0x3b036fa9,0x3a971793,0x3aa1ae3e,0x3a97014b,0x3abf93fc,0x3aaaab9c,0x3a4e7b69,0xb8a09e13,0x3961c1c2,0xbad10c63,0x3aadf450,0x3b963aae,0x3b00f43e,0x3a391bb4,0x3b32bd45,0x3b8923c9,0x3a37bbb2, -0x3b8312b0,0x3b01d657,0x3bdbdc7b,0x3a947940,0x3ae64f52,0x3b95a97a,0x3a916209,0xb805e79c,0xb99422a4,0x39c56e02,0x3b0da438,0x3abc3972,0x3900bd78,0x3a82bacc,0xb9cabbd5,0xba96422d,0xbaa281d0,0xb9952660,0x3b164c64,0x3b4e6ab7,0x3b1e1bf8,0x3b0a945c,0x3af466ed,0x3b1b25a6,0x3b127759, -0x3ad696b7,0xb99c3ead,0xb9556183,0xbad280c5,0x3b745774,0x3bf7c300,0x3b9209ac,0xba27fd92,0x3b27afea,0x3b4833ee,0x3ae43342,0x3b971512,0x3ba11792,0x3b8acf0a,0x3b024189,0x3b3b7608,0x3b5962da,0x38fbb8f3,0xbafa5681,0xbade220d,0xba5750c7,0x3aee0b3e,0x3b32e807,0x39c91739,0x3a69ad79, -0xba052f88,0xbada74b9,0xba878c94,0x3a1571ac,0x3b974c11,0x3bba2d79,0x3b5272a2,0x3b71ea00,0x3b5de93d,0x3b6fa5a6,0x3b6e1e79,0x3ae2f8ff,0xba9686ef,0xb95b09c7,0xbb5ee3db,0xb96fc96c,0x3b907fa7,0x3a76c5d3,0xbb3cc7f0,0x3b830a45,0x3ba4f887,0x3aa6e32a,0x3b89e1fd,0x3baaeec5,0x3b991292, -0x3b96de55,0x3b7ba850,0x3b9287a5,0xba8290b3,0xbb03b0e4,0xbadba8b3,0xbb63b5c5,0x3b3fbc0c,0x3b0ae1ca,0x3a075952,0x3aeae73f,0xba2ea058,0xbb13673a,0xbb0bfbb5,0xba66343e,0x3b94c3f3,0x3be5ac34,0x3b9b50b7,0x3b832912,0x3b73d885,0x3b8216a9,0x3b98808c,0x3b657c83,0xba4ebeea,0xba81010a, -0x3b7abdd8,0x3c096564,0x3ca6e789,0x3c91d8e0,0x3c0a95e1,0xbbb9ec2b,0xbc1c572f,0xbb43ce08,0xba7b9594,0x3b31a756,0x3bd9099f,0x3b5662dc,0x39375273,0xbac1b595,0x3aeeb5ad,0x3b20eb0d,0x3afcbebc,0x3a6b672a,0x3b9c79cf,0x3b9d63e4,0x3abdf4b6,0x3a18830f,0xbaf04049,0x3ab1cb5a,0xbab0a6a1, -0xbbfc865e,0xbc32815e,0xbc353f43,0xbbb79c3f,0x3a9001c6,0x3b9d3fee,0x3bd63864,0x3b9305f2,0xba888884,0xbbd43994,0xbb249295,0xbc6935cf,0xbc260d6b,0xbc3e1707,0xbc608a4a,0xbb2c44f9,0x3be0bb2c,0x3c17237a,0x3b8bd718,0x3aacf110,0x39af78cc,0x3ac908c9,0x3b593124,0x3b8e4fd4,0x3b659d67, -0x3aedc8b4,0x3981a6cd,0x3b1ce024,0x3afc0d91,0x3b24d9e3,0x3b30e411,0x3b00239a,0x3b7d3cd8,0x3b50c07a,0x3af9f881,0x3a996352,0x399f42a3,0x3ad058ac,0x3ab90fb8,0x3be467d7,0xbb34682f,0xbb2e4e6a,0x3b5ec813,0x3b8ccecd,0x3be220a3,0x3c4f366e,0xbabb3575,0x3b187d0c,0x3c2ab636,0x3b9319c4, -0x3a51ee2a,0xbaf54a21,0x39dcd76c,0x3b422c4b,0x3bc3b3c5,0x3b61f703,0x3b33b449,0xb99948f3,0x3ab90be9,0x3ae2e342,0x3a98ebd2,0x3b6ad8e5,0x3b2216dc,0x3afc4534,0x3ae0d479,0x3aea10bc,0x3a4e5a00,0xba0e7137,0x3a777fef,0x3a67755e,0x3ba094b0,0x3bc86371,0x3bddbaa1,0x3b80b8cb,0x3b1a1130, -0xbadf834d,0xbb7197c2,0x395802cc,0x3c2022ff,0x3c4bac15,0x3c459224,0x3b8f2862,0x3b08ff6f,0x3b57c607,0x3bc8b819,0x3b92b9ac,0x3b32d4fa,0x3a82b5a6,0xbb5c012b,0xbb17670a,0x3ba5dc93,0x3b677e85,0x3b29eaa2,0x39b64a3b,0xb987eef9,0xba123dc6,0xb9bfe7bb,0x3a0dab63,0x3ab07e9c,0xb9d1b518, -0xba2e384a,0x39c91bbd,0x3a6f2360,0xbb0c059c,0x38707694,0x39fde2e1,0x3b995b7c,0x3bdad222,0x3c216d76,0x3c15f1ec,0x3bffe49c,0xb925a673,0x3bb05eb2,0x3c028c37,0x3c030a92,0x3c603099,0x3c4b7a0e,0x3bc58c53,0x3b5f1626,0x3b034617,0xbb9aadd3,0xbb8c9599,0xbb830f0f,0x397a4533,0x3aecc7ed, -0x3af1567f,0xb89c8bbe,0xbaaada1e,0xbada12e7,0xb7af90df,0xbad3510c,0xbaf495bb,0xba502745,0xbb14a6ac,0xbb35faed,0xbb02e030,0xba502f30,0x393b09df,0xbb2d44e3,0xb99fc99b,0x3ace13c4,0x3b569b2a,0x3b77fdc5,0x3b58cd6a,0x3b9f726e,0x3bdf5084,0x3c12a8f5,0x3c304093,0x3c482287,0x3c2e1363, -0x3a508879,0x3bcf58fd,0x3c0ef334,0x3c6b0bf9,0x3c15c864,0x3c8a6ec8,0x3c6703f5,0x3bed0882,0x3bd47c42,0x3b80a128,0x3b3ef43e,0x3b3aa920,0x3b1e066c,0x3af8f397,0x3ab69c11,0x3a7dba4d,0xba9eb35f,0xbb2dd769,0xbb157c09,0xbad451d8,0xba5bea88,0xb980e3ea,0x3ae3b628,0x3b2a7a95,0x3b1a50ed, -0x3aff5be1,0x3b16849a,0x3a8b94eb,0x3aee2092,0x3b18adc2,0x3b7e98ac,0x3b4a977c,0x3b60522c,0x3b8be7a5,0x3bb66c41,0x3bfcb027,0x3c65be60,0x3c5869f4,0x3c59f093,0x3c5cea57,0x3c808552,0x3a8c4baa,0x3a211020,0xbb658ec2,0xbbbbae31,0xbbddaace,0xbbead329,0xbbec5d43,0xbba3df73,0xbbc8efde, -0xbb91c1a5,0xbb91bed1,0xbb43b00e,0xbb3bb918,0xbb310be9,0xbb4f6254,0xbb17e57e,0xbac09e5d,0x3a204592,0x3b000496,0x3a18f6da,0x3aa23d52,0x3b030c9a,0x3b24449a,0x3b291c2b,0x3b3687c5,0x3b4f1d32,0x3b4ae395,0x3b2fd6ab,0x3acc3c8a,0x3ace7af4,0x3afe2122,0x3b382ceb,0x3a9345a6,0x3a9fb003, -0x3a99b6df,0x3ad0a687,0x379f7676,0x3accaed3,0x39aeb703,0xbb18c447,0xbb72badd,0xbbc4ec5d,0xbbc4eea2,0xbbcaff5e,0xbbc2f989,0xbbd13cbf,0xbbccf190,0xbbba4ab0,0xbba08913,0xbb89db96,0xbb5e3df1,0xbb1f94f5,0xba084793,0x3a831fcc,0x3ad665a9,0x3b5ef946,0x3aef7af2,0x3b06cfa4,0x3b082ff9, -0x3ae1b2a0,0x3ad3d1d3,0x3ab784a5,0x3b070f97,0x3b1a9c3d,0x3b208119,0x3b071fe0,0x3b115fe4,0x3b361d49,0x3b18ccd4,0x3accaaff,0x3a3f2989,0x3a641b7d,0xb9cc3c02,0xb9001d79,0x39dc50b7,0xba218d2d,0xb9fcad4e,0xbaa11388,0xbb3c1f56,0xbbace91b,0xbb9a6a18,0xbb988c2e,0xbb752966,0xbb6f4f31, -0xbb831008,0xbb3f374e,0xbb1ed79c,0xbaf6664c,0xbabc87df,0xba2a3a52,0x3abeb3ca,0x3aecbcb1,0x397779b2,0x3a55f5b1,0x399be232,0x398c2f3a,0xb9317538,0xba27e8e7,0x38c2e2d1,0x3a45904e,0x3b034ab4,0x3b069af5,0x3b115e86,0x3b07a9cf,0x3acae1d8,0x3acd4131,0x3aa30885,0x3a3b9ccc,0xba0777f2, -0xb9e43149,0xb89749d7,0xba9adc9e,0xba593fd3,0xba2e1407,0xb911026a,0x393181e5,0xb6fb93ee,0x39f675d5,0x39ddca4d,0x39e4a79b,0x3880b9c0,0xb98f2f30,0x39e86d89,0x39ea805d,0xb7ab6d92,0xb98bbf06,0xb96751cb,0xbb1141ff,0xbb041e33,0xbaf2c566,0xbaecb31f,0xbae0bf30,0xbabab713,0xba87bc41, -0xbad84ae6,0xbb01a8b6,0xbb155eab,0xbb153d18,0xbafe208c,0xbab1dffb,0xba9f6561,0xbaa9b074,0xbaa48224,0xba68cd33,0xba48c794,0xba3e8547,0x3a8c9ce3,0x3a8b4a69,0xba9b2c38,0x3a7a73a1,0x3a6a7d6d,0xba98ac91,0xbaa56f06,0xbac17406,0xbae78ee4,0xbae49509,0xbadfdca4,0xbadd1592,0x3a82813d, -0x39fadacc,0xbacd6218,0x3a879c15,0x3a686750,0xba86905c,0xba357223,0xba4ed444,0xba592f2f,0xba6b1ca7,0xba82fdaa,0xba8583f8,0xba6f6d7d,0xba1d3011,0xb9dd22e1,0xb9879fa7,0xb9ac8c16,0xb9be48ee,0xb9eab5df,0xb9e6333a,0xb9e2104e,0xba0f45e8,0xba85987f,0xbb95e7ac,0xbb403a17,0xbb3bd6d1, -0xbbb4435e,0xbb5dab81,0x3aa20001,0xbb9816e7,0xbb53999a,0x39cd0027,0x3a82635a,0x3ad30bd2,0x3aff3b65,0x3aedc599,0x3b1cdfed,0x3b09fcf7,0xbb6c8dae,0xbbabddc5,0x3b056429,0xbb426b0d,0xbb9ad55f,0xbb2d2036,0xbb44db47,0xbb5edf93,0xbb617a42,0xbb6fb5d0,0xbb68cae9,0xbb55721f,0xbb40c2eb, -0xbb3ca8c7,0xbb3ee265,0xbb5857f7,0xbb5d80ac,0xbb63ba20,0xbb717023,0xbb6695fb,0xbb3bbd4f,0xbb4bedbb,0xbb3b2d1a,0xbb939a3e,0xbaa06fc3,0xbaec3962,0xbb1b171f,0xbb1e00a5,0xbb426de4,0xbaaf2ce3,0xb9edb4ca,0xbafa7d8b,0xba431e4c,0xbb4bb83c,0xbb354787,0xba9bbc4e,0xba79ba2b,0xbb88a928, -0xbb6fb2fd,0xbb65bef8,0xbb6786c0,0xbba15411,0xbb76f841,0xbba03bde,0xbbb67c23,0xbbb7b95c,0xbbb28c4d,0xbbbcb1af,0xbb707ec1,0xbb6229c3,0xbb878969,0xbba8530f,0xbbb4fa00,0xbbb9a798,0xbbdeeca0,0xbbd556d6,0xbb88419f,0xbb8e1e5c,0xbb505404,0xbb894891,0xbb58b05b,0xbb5b47e2,0xbb8fa246, -0xbad7784c,0xba54894a,0xbac1082e,0xba2049de,0x39b4b121,0xba2de316,0xbafa940c,0xba18e718,0xbaa258d0,0xbb36aeea,0xbb809ffa,0xbba7f8b2,0xbb58a1c6,0xbb81c502,0xbb43de5e,0xbb99d32a,0xbbce0edc,0xbbf3bc1c,0xbc039695,0xbbe9ab00,0xbbd27e7c,0xbb65967a,0xbb3ba078,0xbb86e86a,0xbbbbf9dc, -0xbbeffff5,0xbbf10a56,0xbc136d0f,0xbbf688c6,0xbb5d5ca7,0xbb99b805,0xbae7642c,0xbb101dbb,0xbaa586ca,0xba1ab076,0xbb74a52b,0x39bbd905,0x3acec0bf,0xba335908,0x3b858751,0x3b8c2d2d,0x3b8ad92d,0x3b06a2a4,0xba1437ae,0x3b507fe4,0xbb3c5323,0xbb548229,0xbb866c66,0xbb858746,0xbb7cbd39, -0xbb398ab4,0xbba40c01,0xbbe12c30,0xbc1d5480,0xbc341fb2,0xbc33ad09,0xbc1d1135,0xbb7d28f4,0xbb2adfce,0xbba5d468,0xbbe6c1cd,0xbc20df46,0xbc1f0d79,0xbc545ded,0xbc33e213,0xbb80ad9d,0xbba748d6,0xbb65b5f9,0xbb7825fe,0xbb41d1fc,0xbb1d694a,0xbbc4bb2b,0x3aca89bd,0x3b85b57d,0x3aebc817, -0x3b8af2fa,0x3b980f1f,0x3bb8f981,0x3b899608,0x3b781c0c,0x3b81173d,0xba9e86fa,0xbb45299f,0xbb6e4d91,0xbade1c3d,0xbb4c4df7,0xbb0dd5f6,0xbbb02d24,0xbc1502be,0xbc46a2fe,0xbc4ddd85,0xbc39dc02,0xbc0bc8c1,0xbb239aff,0xba44f473,0xbb452fb7,0xbc005b4b,0xbc35d372,0xbc2eeb6b,0xbc6e32de, -0xbc25c798,0xbafe6d43,0xbb9babf3,0xbb76b5a4,0xbac2565d,0x3bc97ffa,0x3c1ffb7a,0x3bcb2dc9,0xbbd9ed62,0xbc3264d7,0xbb9fe417,0xbaf91d63,0x3b04eb8d,0x3b995cf8,0x3b2e0c05,0x3a7840dc,0xbb0db62f,0x3ab03452,0x3b1aa841,0xbaff0c33,0xba0e5592,0xbb2695b2,0xbb400c84,0xbb5cb8b1,0xbac9fd3e, -0x3af5aac5,0x3a604962,0xbab7a3ae,0xbb5ad5d1,0xbc174880,0xbc1ea6fb,0xbbbc1aad,0xbb2212c4,0xbb62a792,0xbc04f2fa,0xbc1eae64,0xbc5ee940,0xbc6ab3e1,0xbc31ea87,0xbc13cb76,0xbc5ad6c1,0xbca1377f,0xbc71cd40,0xbc2b5560,0x3b61d8a8,0x3c1a15a4,0x3b602761,0x3aba5d5f,0xba3907ab,0x398e207f, -0x3b3d26cd,0x3b7e5ebc,0x3b6c3cf2,0x3a6e4fc0,0xb8fcdf15,0x3925b14e,0x39ee22c7,0x39f370d5,0xbad1b722,0xbb9588f6,0xbbe8920a,0xbc2763e9,0xbbd8337e,0xbba82fd7,0xbb4cfa0c,0xba89fd2b,0xb94724a9,0x3b6ece7a,0xbbbc4e94,0xbbe755c0,0x397b5c82,0xbb51ab0f,0x3b105f38,0x3c6d8de5,0xbb1aea7b, -0x3a876332,0x3c09bad6,0x3a5382d1,0xbaf78612,0xbbc7733c,0xbaa14c90,0x3ad7d5d9,0x3b972d12,0x3b33072f,0x3b0debf9,0xba175de3,0x3a4f1f00,0x3a63fd6d,0x3ad77f43,0x3ab65586,0x3a870080,0x391bd9cf,0xba6cc6d3,0xbb012024,0xbb0aaa6d,0xbb1a4cfa,0xbb3efa83,0xbb35a177,0xbb08693e,0xbabe6d99, -0xbb4820c6,0xbb313e9c,0xbb090535,0xbaf02649,0xbb9b848d,0xbbde373e,0xbb8b7b9e,0xbc44a2d7,0xbc528dfc,0xbc30dcc5,0xbba9fd71,0xbb7b28d7,0x3ba02df0,0x3b67932b,0xb8e5140b,0xb8ff3780,0xbbac6c8c,0xbb76cf1d,0x3b7bc21b,0x3b476058,0x3b34f091,0xb9851fc3,0xba22aad8,0xbaa05615,0xba01e58e, -0x39a70261,0xba1d0fa4,0xbb0c1039,0xba988405,0xbb19defa,0xbb77104e,0xbb04e0f9,0xbb334ce9,0xbac4ba2c,0xbb06700e,0xbb2f4c7b,0xbb267781,0xbb4e13f9,0xbb3cd7d1,0xbbc5aeb9,0xbade1134,0xbae58138,0xbbc93405,0xbc676b86,0xbca22df1,0xbcd3cd48,0xbc373359,0xbc5a3291,0xbc15fc85,0xbbe09f09, -0xbb35bcb6,0xbae1b0dc,0x3aa40f61,0x3b010289,0xba671302,0xba9c2241,0xbaf20495,0xba8a9bea,0xbafa1d81,0xbb1b5d6e,0xba75da18,0xbb578f5e,0xbb77b80a,0xbb37bbdc,0xbb216c7b,0xbb0cf448,0xbb2d9415,0xbb52d17c,0xbb8b1095,0xbb83dfe1,0xbb7b33ea,0xbb1a2e9a,0x3a9e2633,0x3b07a8c5,0x3b2d95f5, -0x3ab099c5,0x3b935bf4,0x3aba346c,0xbb6237f0,0xbc5bb802,0xbc87f056,0xbc927038,0xbc7bf367,0xbba83a50,0x3a73e0e2,0x3bdc5e99,0x39ec130c,0x3b5b44e0,0x3a7807c8,0x395451ff,0x3a1dce16,0xb8ea105b,0x3a0c8f13,0x3a1d989e,0xba44d231,0xbb16dd86,0xbb3a4123,0xbb0d97c4,0xbab5c5f7,0xba60e4e1, -0xba9531d1,0xbaa7081f,0xba067be9,0x3a4526e1,0x3af93302,0x3a8d1fde,0x392294a7,0xbb0f38ac,0xbbba1be9,0xbc0883cf,0xbc11b175,0xbc37ba1f,0xbba98925,0xbb3cb8bd,0xb9174978,0xbbab8de6,0xbbda3aa1,0xbba30679,0xbb9e23dc,0xbc23005c,0xbc171ea3,0xbc075066,0xbc10cc6b,0xbc22ef74,0xbc04389b, -0xbbe52884,0xbbb59f18,0xbbc0e6cd,0xbbc9b049,0xbb693455,0xbb8427d6,0xbb3ef34b,0xbb3ee22d,0xbb84118b,0xbb88fc29,0xbb71ec94,0xba1dd892,0x3a89c49c,0x3acf2006,0x3a7655c7,0x3934a1b3,0x39caa2b4,0xbaed5020,0xbb0fcf7e,0xbb086fa8,0xba0179ff,0x3a7e6f71,0x3b128543,0x3a8fa782,0xba529349, -0xbb8bb12e,0xbb82f173,0xbbaf5769,0xbbefdef5,0xbc0ff22f,0xbb997222,0xbb00b841,0xbbc7d61f,0xbbe23950,0xbc0b5ec4,0xbbfe43d8,0xbc07a2b7,0xbbdcbcf3,0xbbe34e35,0xbbc01fff,0xbbc9735a,0xbb9148e0,0xbb983a0f,0xbb5b21af,0xbb7ad2c9,0xbb415b29,0xbb37d6d0,0xbaadc7c5,0xb90e7d3b,0x3aa07752, -0x3ab90246,0x3a952437,0x3ab91fb6,0x39bc073d,0xb825ac29,0xb89dda61,0xb6ff5505,0x3862a9d4,0x39f136d9,0xb98aa107,0xba823a7f,0xbb301f87,0xbb1987f3,0xbb1f52a6,0xbb377836,0xbb2d1af2,0xbb055362,0xbb55828d,0xbb28fa28,0xbb51db85,0xbb65b020,0xbb7e36c3,0xbba45b79,0xbbd279f0,0xbbccc013, -0xbbb6e24b,0xbbe33193,0xbbb08dc3,0xbb90a0e7,0xbb8fcbbf,0xbb476a14,0xbb4529e9,0xbb285769,0xbae865b7,0xba9af4bc,0xb9d6d07b,0x3a4cc307,0x39fe4b81,0x3a89515a,0x3a8272dc,0x3a8b4ead,0x3a3b965f,0x35f0ba07,0xba5b3026,0xbaf6a24e,0xbb19fb26,0xbb2700ca,0xbb2b8b14,0xbb1888e4,0xbb1d5858, -0xbb10c949,0xbb277824,0xbb19b317,0xbaea75dd,0xbae03a0f,0xbb265cf1,0xbb611d56,0xbb370b4d,0xbb3ae41e,0xba583e6c,0xbab9060f,0xbb04f21f,0xbae64435,0xbb231dd1,0xbb3a75fe,0xbb4730fe,0xbb83457b,0xbb6a5675,0xbb2c036d,0xbb331408,0xbb1909d2,0xb9fd1e38,0xb9e84f43,0xba682bce,0xba82bea3, -0xba9c7d6f,0xbaa24d3d,0xba93f8da,0xbaac7a13,0xbacdaf3b,0xbb009e1b,0xbb379d02,0xbb758222,0xbbab8174,0xbb97490d,0xbb824c9d,0xbb5ffa7d,0xbb46558e,0xbae13ece,0xbaf2ae49,0xbb503840,0xbb065853,0x39474d4d,0xbb4ed590,0xbb5189d5,0xbab66ace,0xbaa11d54,0xba7ff01e,0xba4c4d68,0xba1b58b0, -0xb9714fa2,0xb8ac8ee5,0xbb50d6bc,0xbb588ae1,0xb765fd2f,0xbb2f945d,0xbb43356f,0xba867b6a,0xbab95698,0xbaad6377,0xba9fbaf0,0xba95887e,0xba92cf26,0xba9650cf,0xbabd1e13,0xbae267ce,0xbb02757f,0xbb0b87f4,0xbb03626c,0xbb0840b7,0xbaf58e36,0xbaf55a67,0xbaf439d7,0xbaefd3d6,0xbb4466e6, -0x3b7a17eb,0x3b211609,0x3b6aca13,0x3b7dbcfb,0xb95d6336,0xbbac9a3a,0x3b735334,0x3a356b33,0xbb8bfad7,0xbb9a0660,0xbba85daa,0xbb9554de,0xbba78392,0xbbcb80a3,0xbb9f2dbb,0x39cd080c,0x3b4b3980,0xbbcd8e8c,0xba7b1062,0x3b2845c0,0x3b59578e,0x3b32a4e8,0x3b48581c,0x3b3f608e,0x3b3e4575, -0x3b3f1963,0x3b413586,0x3b5254ee,0x3b5aaa0c,0x3b56e115,0x3b58c3a1,0x3b4df3b7,0x3b52e4f4,0x3b4fbbb2,0x3b4ac8df,0x3b2b4bbb,0x3b33ffca,0x3b3be21a,0x3bb492ed,0xbb037b15,0x3b02bad7,0xbac91b49,0x3af46d33,0x3b1733c7,0x391ebb92,0x3b0e44fb,0x3b2026a9,0x3ad672f9,0x3ae68612,0x3af159b9, -0x3a8bde3e,0xbb560071,0x3a98bee3,0xba8e4792,0x39d08ad1,0xba1a7c93,0x3b923816,0x3b593cf0,0x3b6c4a00,0x3b63fc2b,0x3b614c6a,0x3b761ca2,0x3b8f9b82,0x3bbb55d6,0x3bc76140,0x3baf1ec6,0x3bb5ef53,0x3ba72c39,0x3ba6595f,0x3b9984e4,0x3b7b34c4,0x3b154f0d,0x3b35b1cc,0x3b210302,0x3b7b5ef4, -0x3af97e00,0x3b7dd9e9,0xba2758a6,0x3b15bbe1,0x3afa3f78,0x3b347bea,0x3b0e3a82,0x3b800008,0x3b94b3ea,0x3b871313,0x399d4f7e,0x3b8eadf4,0x3988206d,0x3a14e22e,0xba0d506c,0xba81b189,0x39d5d8bd,0x3b27152c,0x3b8ae64d,0x3b7e330e,0x3b8a22fc,0x3b6622c7,0x3b7d224e,0x3b97dcb8,0x3be0e8c6, -0x3bf3bab3,0x3be6968d,0x3bd9b097,0x3bca3670,0x3bbdc33a,0x3bb09b5d,0x3b91c418,0x3ae54e7e,0x3b263d34,0x3b33426b,0x3baa2a34,0x3b1cee0e,0x3b53ce94,0xba8a611b,0x3af84001,0x3b08694c,0x3b3456ec,0x3b95f3d4,0x3bac694b,0x3b9f75cb,0x3b13a2d9,0x3ae7ce50,0x3b9328c2,0xba4ef208,0xba9033cf, -0xbad7332f,0xba6279e7,0xb9339ba7,0x3b0838e2,0x3b9025c6,0x3b5ca988,0x3b896d1a,0x3b798544,0x3bad1fc6,0x3bcbe290,0x3c24b0d2,0x3c3544b8,0x3c19ae6f,0x3c1ed52a,0x3c10f0a6,0x3c029922,0x3be3d486,0x3b868507,0x39636314,0x3ac196af,0x3a8ce648,0x3b3efbd0,0x3b10a92a,0x3afba8ce,0xbb1dcb95, -0x3b58c157,0x3b9ec073,0x3b0df784,0x3b8f19d4,0x3bb85514,0x3bbe71bd,0x3b61fc66,0x3b5b42b0,0x3b93221a,0xb9ab37b6,0xbab35713,0xbb106c77,0xba68439f,0xba8cbeb3,0x3b4df945,0x3b8988ae,0x3b9b283c,0x3ba4ff65,0x3b7bd6c0,0x3b998060,0x3bba26d3,0x3c2fbd92,0x3c4cbbaa,0x3c2cbcf4,0x3c25f624, -0x3c0ec0ed,0x3be4b8c1,0x3be7dedd,0x3bb6cdaa,0x3a7a8fd5,0x3acd25b1,0x3bf5bc1c,0x3c37f4fe,0x3c51971e,0x3c447d5f,0x3c173e16,0xbba6ea73,0xbbfe5f51,0xbb912cad,0xba42a345,0x3b147984,0x3b49cd80,0x3b826a49,0x3af5e2b5,0xbb2be74f,0x3b11e3fb,0x3b659ab2,0xb9ad302c,0x3ac9a44f,0x3b165590, -0x3baa0236,0x3bd31a33,0x3b9f272a,0x3b890c29,0x3b52d904,0x3ad27b3c,0xbb621dea,0xbb8a1951,0xbb2ebdeb,0x3be44718,0x3c20066e,0x3c58e116,0x3c892cb9,0x3c148ea2,0x3b31b910,0xba7df571,0x3b725c1a,0xbbbd4d8c,0xbbc02e41,0xbc5a8b3d,0xbc07035e,0xbc22a32f,0x3bcddd05,0x3c177c22,0x3bb0b93d, -0x3ad71c3b,0xba2572be,0x3903e3d4,0x3b02da78,0x3b5a5b60,0x3b7c9dff,0x3b1f7639,0x3ad2caa0,0x3b10b365,0x3aa87e53,0xba8e553a,0x3a9da7e8,0x3bb79956,0x3bd3369c,0x3c114af7,0x3b8d0503,0x3b17425b,0xb98757cd,0x3b089ec5,0x3b19a0a6,0x3bbf8dfc,0xba3260d4,0xbaa518dc,0x3b794551,0x3ba9ea54, -0x3c1c23bd,0x3c86828d,0x3b091bb5,0x3b1e06e7,0x3c604164,0x3b811ce9,0xba8acdcf,0xbb772181,0xba42d9ff,0x3b08e6f6,0x3ba2ac9c,0x3b4750e7,0x3b3300a8,0xba58efdf,0x3a5129f6,0x3a92f004,0x3a8e675f,0x3b6dfc4f,0x3b25b2e3,0x3ae0815d,0x3acb2735,0x3b06f6ec,0x3b696bf3,0x3b0b49b9,0x3b32daef, -0x3b85c24c,0x3c03d973,0x3c2b63e5,0x3c3353bb,0x3c21f294,0x3c000085,0x3b6ee8db,0x3b4693aa,0x3c0f1d15,0x3cb1b4b5,0x3c423fad,0x3c090550,0x3b8fbe0b,0xb9b8e9c5,0x3b43a41a,0x3bc5e646,0xba2b7b31,0xb8fb5659,0xba15cbc8,0xbb99cd01,0xbb4e3457,0x3b599dbc,0x3b59308f,0x3b311519,0x398a7b0d, -0xb9653e48,0xba70f645,0xb9ae24f3,0x39ef247f,0x3ad177fa,0xb8af22e9,0x398e22a9,0xb880b9de,0x3a8a1f94,0x3a1b5f09,0x3aba1ab1,0x3b372b93,0x3bfd46fe,0x3c3249d0,0x3c6a4009,0x3c713d52,0x3c4c0042,0x3bcf7d52,0x3c270452,0x3c7113cf,0x3cb603c6,0x3c7b5ef8,0x3c4121ba,0x3c0a7cae,0x3b63cf25, -0x3bb00355,0xbbc83ec1,0xbaaee19f,0xba7c3c7e,0xb91a5d25,0x3b67d6f6,0x3b423cce,0x395a173c,0xb9b740b2,0xbac7a91e,0xb9d8e9b7,0xbab79867,0xbafe1bef,0xb9aa7e81,0xbb153821,0xbb4547ec,0xbb1a7297,0xbaabbbb2,0xbae01608,0xbabab06a,0x3aa417ce,0x3b5651e8,0x3baf433f,0x3b9455e7,0x3b905c9b, -0x3bc56d9d,0x3c08a2d3,0x3c1ef1aa,0x3c182846,0x3c22c4a1,0x3c08e05b,0x3b78841d,0x3c23c000,0x3c647c74,0x3cabc264,0x3c4b6176,0x3cc8d299,0x3c38430f,0xb81bf0d4,0x3bc826c5,0x3b46a7a4,0x3b0b73d8,0x3afba933,0x3b107b26,0x3ab4c1da,0x3b0805f5,0x3b051d9b,0x3a4e1cb1,0xbaafb91a,0xbb068553, -0xbade6b90,0xba805c03,0xba15ac01,0x3aa20233,0x3b0b11f1,0x3ae947cf,0x3b253df9,0x3ab58bff,0x3ab6058b,0x3aee3941,0x3b2012a5,0x3b9377c8,0x3b60267a,0x3bb2fa82,0x3c0a8626,0x3c3387e2,0x3c5d8387,0x3ca8c02c,0x3c9fa594,0x3ca48a02,0x3cbd9113,0x3cb885b0,0x3b548d05,0x3a8715a2,0xbbce4bf7, -0xbbe44931,0xbbd5a194,0xbbbde479,0xbb905e52,0xbb6b27d8,0xbb841f4d,0xbb72af7c,0xbb2c0e96,0xbb17c111,0xbaff378e,0xbb093c04,0xbb33dcd9,0xbb1cd051,0xbb0c0b96,0xb90ccd66,0x39ed9264,0x3ac6e409,0x3b3331a6,0x3b82e411,0x3b96b4df,0x3b975da3,0x3b902696,0x3b83275b,0x3b8ec701,0x3b85eb5c, -0x3b3cb65e,0x3b5b7e4f,0x3b9938c8,0x3bfd621c,0x3bc9dc07,0x3bb69ebc,0x3b8e1848,0x3b7848b4,0x3b58a764,0xbacdfa70,0xbac28f6c,0xbb7bd5ad,0xbbaf4254,0xbb8edf02,0xbbbfbf5e,0xbba83676,0xbba9f82c,0xbba0add1,0xbba8ad01,0xbb8e0f2d,0xbb86c8f9,0xbb29d9a5,0xbb23e1c0,0xbb1df2bc,0xbb0d9579, -0xb95d6ca3,0x3abbe690,0x3b1adf41,0x3b5e30ba,0x3b542b8b,0x3b60d1cf,0x3b60cfd2,0x3b61196d,0x3b518ba5,0x3b834a0e,0x3b8b0593,0x3b992250,0x3bab09fa,0x3bc87591,0x3bfce5d9,0x3bb12a69,0x3b63250c,0x3b38da98,0x3ad62e77,0x3a9d4386,0x3af258f0,0xbabd2d91,0xba61f4da,0xbb32a9bb,0xbb77c03d, -0xbb87994f,0xbb9bf45c,0xbb9cac42,0xbb7907e0,0xbb8c482d,0xbaa8112e,0xbb416dc6,0xba683618,0xbb3083ea,0xba9c5020,0xbab3b930,0xb94ce6ce,0x39829ed0,0x3b4a7880,0x3b042afb,0x3b001e6b,0x3aec57f5,0x3ac933e7,0x3ab430aa,0x3a8e46ee,0x3b10fe97,0x3b509fc6,0x3b8f3655,0x3b926322,0x3b969270, -0x3ba0aec1,0x3b8998e4,0x3b84132a,0x3b5a94c6,0x3b1187c6,0x3aacb50b,0x3acd27fd,0xbae992d6,0x3a06bab6,0x3a392aca,0x3a13fae6,0x3ad81297,0xb9fbf6dd,0x3a901fd7,0x37fda97a,0xb9726986,0xba44a6f6,0x38c96971,0xba46996a,0x3a3fb678,0x3a54309e,0xba126aec,0x3abe7206,0xba30aab1,0x3959ae8b, -0xb9c4034c,0x381bb240,0xb9328f80,0xb8d1eafa,0xb8549283,0xb88befb8,0xb852e873,0xb92635f6,0x3923d58d,0x3a3d03fe,0x3abbd6a3,0x3b17ef9c,0x3b027cff,0x3aa84ce5,0x3aa2ee62,0x3ad5c31e,0x3acb337c,0x3b06e203,0x3ae4cea6,0xba3efe56,0xbb68a83f,0x3ac2ba2b,0xb9cf6cbe,0xbb7b95c3,0xbb8c50b7, -0xbb857370,0xbb803f17,0xbb86af37,0xbb97279e,0xbb99922e,0x39931fbe,0x3b0435eb,0xbb6f5aa0,0xb7be4106,0x3b009ccb,0x3acfdb4a,0x3ad08d61,0x3ac7bf63,0x3abfe7d9,0x3ab7b3ff,0x3aaae0ce,0x3aa49f59,0x3ac662a2,0x3aed6e7e,0x3b02ee32,0x3b0a8a68,0x3b0259df,0x3b080834,0x3b04d56f,0x3b03561c, -0x3b02b1bc,0x3aec6355,0x3b122d91,0xbba7ec88,0xbb740d3d,0xbbb3da61,0xbb58dd68,0x3adc47e2,0x3b9e4ef9,0xbb5446e7,0x3a5107ea,0x3bad9a13,0x3bbb47f5,0x3bc85274,0x3bb919da,0x3bb81f81,0x3bde71bb,0x3bbb5afa,0x3a4bca13,0xbb3fd093,0x3baf73b5,0x3ac9d66f,0xbb1bc731,0xbba2847c,0xbb857e99, -0xbb935ef6,0xbb9586ce,0xbb9d5c42,0xbb988ac8,0xbb8990cc,0xbb814306,0xbb7d9e0c,0xbb7f16a7,0xbb8abb63,0xbb8c5a6a,0xbb935478,0xbb90d6a4,0xbb879d4b,0xbb657527,0xbb7ec404,0xbb89d147,0xbbac490b,0x3baa8830,0xbaa4272b,0x3a848c38,0xba89f20b,0xba6bf42a,0x3a3e6e05,0xba49c405,0x39d3581d, -0x3ac70bdf,0xb9f8db30,0xbb0a7a38,0x3a4f87f2,0x3b55a060,0xbb32d2a0,0xba8954a8,0xbb15f3f8,0x39d8131a,0xbba7e39c,0xbbb4b613,0xbbc64356,0xbbe0dbb4,0xbbd6bd16,0xbbca0d80,0xbbc8d031,0xbb968d22,0xbb93ead1,0xbbac44f7,0xbbc81e66,0xbbd21f82,0xbbe42aed,0xbbe70b85,0xbbdba502,0xbb9a2178, -0xbb99a003,0xbb9e08e5,0xbb9d8b38,0x3a149269,0xbb46ae95,0xba9e72ed,0xb9c83c53,0x3ae5bef4,0xbaac4f3c,0x3ac76e6a,0xba884573,0x3b37d950,0xbb635900,0x3a4a28e3,0xb9ce6f94,0xba75381f,0xbb41ca25,0xbb8b7371,0xbae792f5,0xbafbe971,0xbb6810af,0xbbf927db,0xbbf3b4cd,0xbc169cec,0xbc165573, -0xbc082e5f,0xbbd71eec,0xbb8cd5a0,0xbb7d7ad5,0xbba8b0d7,0xbbd11f95,0xbbfe571c,0xbc09649b,0xbc0769d2,0xbbd298d5,0xbb3e19da,0xbb92ac36,0xbb836d48,0xbb3d7dff,0x3b6e1813,0x3ab3e461,0xbafcb9d6,0x3a998e14,0x3afed5ae,0xb8b113b8,0x3b780de5,0x3b84f96f,0x3ba9df23,0x3a851d92,0x390230ed, -0x3afd1332,0xbaa2739f,0xbb34cf78,0xbb8a6411,0xbb623eb9,0xbae27b97,0xbb067d38,0xbc0bc56d,0xbc0a4cf7,0xbc37b711,0xbc3f6465,0xbc347ecf,0xbc053a1a,0xbb89fee7,0xbb631eaf,0xbbd0eefe,0xbbfc439f,0xbc23c9d5,0xbc38e654,0xbc368512,0xbc186faf,0xbb865a3a,0xbb864df6,0xbb9a98ed,0xbbabc146, -0x3a4e4c20,0xbaae1c2f,0xbba09cc5,0x3aa6f21b,0x3b790aeb,0x3b1cc85e,0x3b8d3e08,0x3ba3cfb7,0x3babe267,0x3b48fca1,0x3b1b5f8c,0x3b74dcd9,0xbaf31160,0xbb367147,0xbb5987c8,0xbb95d7a7,0x38c256d9,0xbb80193e,0xbc173618,0xbc311eab,0xbc654bc7,0xbc5f61d1,0xbc433020,0xbc01762e,0xbb430235, -0xbb0dd91c,0xbb9cc4a1,0xbc06d2e9,0xbc2d06e3,0xbc37cbea,0xbc3adc7f,0xbbcfdc40,0xba0040ff,0xbb595f52,0xbbeaa302,0xbbd342bc,0x3bf52cbe,0x3c313701,0x3c0d3d89,0xbb3ea5b6,0xbc145f78,0xbba53f45,0xbb200182,0x3a9b8472,0x3aca2cf4,0x3b787c45,0x3b2241d9,0xbb47fe78,0x3af745de,0x3ad0b805, -0xba380db8,0xbb1849ec,0xbace9c16,0xbb674e1d,0xbbd8a2f4,0xbb884e3a,0xbb61313b,0xbada2fbc,0xbb9694b8,0xbbec4828,0xbc6e6a72,0xbc681dd6,0xbbd2867f,0xbbbd2870,0xbbdc9329,0xbbe81c7b,0xbc4c910c,0xbc8f4d6a,0xbc7e990d,0xbc663503,0xbc4690e3,0xbc2dbf21,0xbc1220a9,0xbc6ce728,0xbc2aa997, -0x3a7eeb8b,0x3c0c9e62,0x3babe5ae,0x3aab5532,0xba954182,0xbaa1a71f,0x3a9f270f,0x3b3b117c,0x3b3ff0c1,0x3a9cf833,0xba5e8e08,0x39a9934e,0xba88fed1,0x3a8afeca,0xba5cb881,0xbbe3f706,0xbbf40964,0xbc3fb7d2,0xbc106d41,0xbbd6d5a2,0xbb47f914,0x3ae57ecf,0x3ad301ef,0x3a32011f,0xbbb80976, -0xbbb035f6,0x3b317f19,0x3a542271,0x3bd7e0c8,0x3c86d3dc,0xbad7ce44,0xbb17581a,0x3c248f4a,0xbac856ab,0xbb774231,0xbbc84d04,0xbb1035d5,0x3aa161be,0x3b3dee45,0x3b11da04,0x3ac245d0,0xba974c65,0xb9e96298,0xb867024b,0x3aa77c20,0x3aac1c6b,0x3ac9cbf0,0x3a727e0a,0xb9d04ec3,0xb9bffd9c, -0xbb3e92c7,0xbb760c58,0xbb42e1f8,0xbb31df2e,0xbb937f6a,0xbba2e0e5,0xbbc2261e,0xbbc882f5,0xbb9a2a07,0xbb91375d,0xbbfca496,0xbc0a8104,0x3af64e86,0xbc68f8cb,0xbc89b55b,0xbc57bd2e,0xbc0afa4f,0xbb943aeb,0x3b87d1a1,0x3af80280,0xbb4de7f2,0xb9817ebd,0xbba5421d,0xbb743d59,0x3a9d7784, -0x3b06e00c,0x3b07a346,0xb9e64eaf,0xba7e9c9d,0xbac8b393,0xba29777c,0xb98040d1,0xb956ce5b,0xbada4313,0xba8ee613,0xba156351,0xbafdb539,0xbb88071d,0xbb676cbe,0xbaed9f1b,0xbb837a00,0xbb96a71b,0xbb8a6962,0xbba9e41c,0xbb8195da,0xbb936adf,0xbb6658c6,0xbb92a8f8,0xbad6f861,0xbc9770be, -0xbcc708fc,0xbcd116a0,0xbc42ee74,0xbc39a93b,0xbbee8af3,0xbb355476,0xb9315bcc,0xb9bfb4dc,0x3aa12589,0x3b0c4012,0x39dca2c7,0xba5dcfcb,0xbaebea28,0xba6fad12,0xbafbce0e,0xbb01bc1f,0xbaab81db,0xbb3e4af5,0xbb55741e,0xbb316cf4,0xbb5f9b95,0xbb1df2e5,0xbb8ae72e,0xbba9c67e,0xbbcfec0b, -0xbbd4cb7a,0xbb9fc40e,0xbab14a9e,0x3b20a85b,0x3b97ecd1,0x3ba98bae,0x3b99963e,0x3babbd06,0x3ad5c4e8,0xbb6b9a7c,0xbc2ff16f,0xbc5c1c16,0xbc95fecb,0xbc3fcc29,0xbb89e474,0x3b52d166,0x3c31cd25,0x3a580c32,0x3b8d5892,0x3af3af55,0x3a6c6f52,0xb8f6bae0,0x39dfe3c2,0x3a6eb7ac,0x3aa6b66a, -0x3a6aa0e1,0xba747e27,0xbb39f38a,0xbb0ae7e4,0xbb03520d,0xbb0f2054,0xb9fb5111,0x3984fbed,0x3a72b153,0x39097d9e,0x3b088c9f,0x3a664fd5,0x398f7389,0xbb129e94,0xbbb2a6a1,0xbbe27bd1,0xbbcc9a27,0xbbd9288e,0xbb347c97,0xbaf7e543,0xb98531e9,0xbb817bb1,0xbb67b464,0xbac111d6,0xba1c3842, -0xbc121365,0xbbff5496,0xbb9c4fae,0xbbd41211,0xbbdf4466,0xbb9607e5,0xbb8267a5,0xbb4bdb96,0xbb8ea6df,0xbb84c024,0xbb52e985,0xbb591944,0xbb4286dd,0xbb3dc89e,0xbb59dd8d,0xbb5bc476,0xbb7b7ef9,0xbae7a163,0x3a0e2c2b,0x3a27c6b5,0xb92a6e05,0xba160882,0xba088734,0xba905056,0xba78e2e2, -0xbaa99f9d,0xb97af259,0x3a10e1fa,0x3af5e4cf,0x39f571aa,0xbad9b92e,0xbbc68289,0xbbb0f5e6,0xbbc1d629,0xbbf968da,0xbc013e0a,0xbbddaf7d,0xb89150ea,0xbb978ec5,0xbbbb7226,0xbbf0bfc5,0xbc01de26,0xbbde283c,0xbbc26868,0xbbb5f4ce,0xbba91d2f,0xbb95a9c3,0xbb7a44df,0xbb52f75f,0xbb2cd4fb, -0xbb47511d,0xbb2ca7e8,0xbb1f3bd0,0xbaa36ab2,0xba02abe9,0x3afd3145,0xb986c1e0,0x3a0c97d5,0x3a05010b,0x39e060f8,0x39130e4a,0x37e56b2d,0xb85e11e6,0xb94a1da1,0x39baaaf5,0xb9dce164,0xbab0c3c1,0xbb6baf4f,0xbb704da9,0xbb81ee34,0xbb9606f4,0xbb5b928b,0xbb489430,0xbb873b93,0xba501999, -0xbb470269,0xbb22a131,0xbb2f486d,0xbb8ca888,0xbbd27f85,0xbbb407a4,0xbba6b02e,0xbb95a2bc,0xbba22220,0xbb40aa43,0xbb530ec1,0xbab63821,0xbb260647,0xbb1db14f,0xbac041d8,0x3a28018c,0xba49a624,0xb9eb0a35,0x3993a31e,0x3a192de1,0x3a630a5d,0x3a991920,0x3aba34a9,0x399e7940,0xba085e00, -0xbad92a77,0xbb204ac4,0xbb3afdd0,0xbb4a657a,0xbb3c9b86,0xbb37256a,0xbb41d36a,0xbb450dd3,0xbaf4404e,0xbacf8f02,0x3acc91ed,0xbb030a75,0xbb0eb91b,0xbac64006,0xbb174b9c,0x3a05c754,0xbaa0eef3,0xb9bc2d08,0xb6bbe96b,0xb95d11f8,0xbad013a8,0xba9237cf,0xbaf58666,0xba9e5ee3,0x39d0f0b9, -0xbac78ee0,0x39db983f,0xb9f1526f,0x385cfdd9,0xba387270,0xba640348,0xba94986e,0xbabd9edc,0xbad727ce,0xbb0c240e,0xbb2f82cd,0xbb45fd9d,0xbb79054f,0xbb940461,0xbbbeda1d,0xbba64675,0xbb8baab8,0xbb656ff3,0xbb42213b,0xbb07f9c8,0xbb2385d0,0xbab2894b,0x3ab10c5e,0x3b44b0eb,0xbaf0e3b8, -0xb9989209,0x3b00d35e,0x3b24cd58,0x3b1ce1f7,0x3b150ba4,0x3b33ceef,0x3b6b8f55,0x3b78fac1,0xb83378fe,0xbb10aa2c,0x3b37e8eb,0x39e4376b,0xbacaaa0d,0xbaee9990,0xbaf28622,0xbae6a1b5,0xbad7bf17,0xbacdc10e,0xbac168b3,0xbab8c998,0xbad3d8b2,0xbaf6c995,0xbb0ed31e,0xbb1b591f,0xbb1a1319, -0xbb246742,0xbb139b12,0xbb10b257,0xbb0f7e3f,0xbb0d0105,0xbb2e0b49,0x3b311a2b,0x3b0eb10c,0x3b8cf04b,0x3a170d78,0xbb88acd7,0xbbc15879,0x3a90d238,0xbb39d865,0xbbcefad0,0xbbd89a60,0xbbdc36ea,0xbbb53ece,0xbbc7d687,0xbbee5eae,0xbbbfe59f,0xbb5ce58d,0xb8f27b43,0xbbda8dad,0xbb9304e4, -0xba2c1f8b,0x3b6f796c,0x3b15201b,0x3b24eec1,0x3b236f5a,0x3b2823be,0x3b2cc874,0x3b32c5db,0x3b3cdad1,0x3b40d8bf,0x3b3c94ac,0x3b378db7,0x3b2a595e,0x3b26e2a7,0x3b1f0bd5,0x3b1fce03,0x3b14f9b8,0x3b1d65b2,0x3b486997,0x3b793a1d,0xbbd3a70a,0x3a7bc9ba,0xbb5c30d8,0x39756ae4,0xb95befb9, -0xba8f9dca,0x3ad2abaa,0xb9629cc1,0xb96d332d,0xba8c48ce,0x3a0073c9,0xba8554a6,0xbbabc54f,0xb9fa4115,0xbb668afc,0xbaa484c3,0xbb845624,0x3b18cb0c,0x3b2f3d4a,0x3b18d826,0x3b29dce7,0x3b2c1dc0,0x3b472241,0x3b71ccb8,0x3b9bb9f8,0x3ba5176c,0x3b93ecc4,0x3b92f5cc,0x3b7b0ade,0x3b5eeb48, -0x3b25b5a4,0x3afa209c,0x3ac00ef7,0x3b010b81,0x3b62790d,0x3b3637b8,0xbad1a83c,0x3b31571b,0xbb152d15,0x3a346bda,0xba198579,0x3b34a2f6,0xb929de0c,0x3b69a43a,0x3a7892c3,0x3b7dc68e,0xba5d7cf6,0x3ae3bfe9,0xba9c82d7,0xb9e8109a,0xbb2257f0,0xbb3b67f0,0xbb2bd5f4,0x3a55f3f5,0x3b59ba2c, -0x3af019f8,0x3b41f9d8,0x3b257ebb,0x3b614e80,0x3b8ea04f,0x3bc40415,0x3bcc18d8,0x3bbca368,0x3ba680ba,0x3b86c03d,0x3b4a5f63,0x3b00661a,0x3ae5fc00,0x3aad7816,0x3b03caaa,0x3b90d9bc,0x3b65f95d,0xbb1facbd,0x3a76bfdc,0xbacf4656,0x3a973642,0x3ab4893e,0x3b21c0df,0x3b82cee2,0x3b9e453b, -0x3ba78a93,0x3b1f5ee0,0x39c756d8,0x3b8d6f33,0xbada8bae,0xba69c9d3,0xbb36fb95,0xbb11c5bf,0xbb515acf,0xba3c3d2c,0x3b47c409,0x3a6dd6f8,0x3b149f82,0x3b146077,0x3b7f7a10,0x3ba840ad,0x3c059d10,0x3c11e6b9,0x3bfc4145,0x3bf57552,0x3bb847ff,0x3b85eaaa,0x3ab1540b,0xb9814c43,0xb99f1a05, -0x3a23794b,0x3b5ecff4,0x3b53248e,0xba23ed55,0x3adccdac,0xbb11dc7e,0x3b13beb5,0x3b8af0fd,0x3b492a5b,0x3b9174e4,0x3bb6215f,0x3bdadeb2,0x3b37dcb7,0x3b456e30,0x3b82142c,0x39283808,0xba96ae77,0xbb5ecaf2,0x392d5768,0xbba9a4c1,0x3a637040,0x3b160f92,0x3a8da81c,0x3b235b94,0x3b0ea042, -0x3b7f5e7e,0x3bc3f184,0x3c23916f,0x3c2c8dcb,0x3c0f86da,0x3bf6d876,0x3ba12128,0x3b1b8d4f,0x39a7e690,0x3a778b91,0x3ab19fbe,0x3aeb3178,0x3b8fb76c,0x3bd4725b,0x3b0c75f5,0x3b9178e0,0x3c03aa66,0xbb7d404a,0xbbc7a44e,0xbbb0b2f7,0xbad1d8ca,0x3ab4643e,0x3a3982e2,0x3b95ce81,0x3b6e9d5d, -0xbb48b2bd,0x3b07fb20,0x3b5dd95d,0xbaf63aa2,0x3aa55c4c,0xbaa07f07,0x3b16ee3c,0x3bd87afd,0x3bc163e8,0x3bf0f976,0x3b78d5d8,0x3b29eaec,0xba83e53c,0xbac0f9bf,0x3a8e9d13,0x3c44d1d8,0x3c349911,0x3c492160,0x3c600469,0x3b89d2df,0xbaca0335,0xbb3a9bb3,0x3ae07524,0x3a2cab3b,0xbb69bd9a, -0xbc65f790,0xbbb39226,0xbc605bfa,0x3b49c932,0x3be7c2a2,0x3bb0a22c,0x3b082b3d,0xba7ef116,0xbabd7abe,0x3a532c99,0x3b1b5d92,0x3b630cf5,0x3b166233,0x3aefaf73,0x3aa64a2f,0xb981fcc7,0xbb7ad875,0xbafcbbf3,0x3b5ed1a2,0x3b24e76a,0x3bac9dd0,0x3ac0b88b,0x3931b3f9,0xbb00ee6c,0x3b306f94, -0x3b5c505d,0x3b4e6579,0xba6261cf,0xbafcc8e7,0x3b349775,0x3b828756,0x3c1f99a2,0x3c8be88a,0x3b7a06f4,0x39c1fe83,0x3c5736f7,0x3acdc49d,0xbb6acedd,0xbb97db29,0xbac371c1,0x3ab295e0,0x3b2aefdc,0x3b0118b4,0x3b0b5670,0xba8c8537,0xb7d3b87b,0x395c5458,0x3aa32f58,0x3b177ae2,0x3ade2f75, -0x3aa03027,0x39c94828,0x3a327b8d,0x3b47e953,0x3b229996,0x3b0a43ad,0x3b82da76,0x3bc49436,0x3c07d223,0x3bf74f5a,0x3c100146,0x3bff822b,0x3bbd96ec,0x3ba14447,0x3c0b7311,0x3c9ee2b9,0x3ab0952e,0xbb6488f6,0xbac5c9ce,0xbb9a8191,0xba122e9e,0x3b92b52d,0xbb5f0d0f,0xbb3f2f9f,0xba691229, -0xbb9b2b4f,0xbb51891c,0x3a119dd8,0x3b07690f,0x3b08721d,0x396f8ece,0xb99c3cdb,0xba9889ce,0xb9602017,0x392c06bb,0x3a518bdf,0xb9f80d1d,0x3a0424c3,0xba7f1291,0xb97e0179,0x3acc9f18,0x3a65eb0a,0x3b374144,0x3bc6a780,0x3c0d6c1b,0x3c2c6f2f,0x3c2e2a79,0x3c155913,0x3c01e1cd,0x3c0d66a7, -0x3c466a7c,0x3caf42b9,0x3b905b61,0xbac1af53,0xbb1cb9fe,0xbb14172a,0x3aa19c65,0xbbf2319c,0xba34abb2,0x3ab33563,0xb9232af2,0x3b5befe7,0x3b2bdcbb,0x399e81b9,0x39580af8,0xbab21150,0xba97f38a,0xba860e0d,0xbac81657,0xb9d1b12a,0xbb105a89,0xbb44416b,0xbb3a3996,0xbb1ce0c7,0xbb694d2c, -0xba6e71d2,0x396ca497,0x3a87e834,0x3b1bd9ee,0x3ac2f83c,0x3b32cd0f,0x3b9bc02d,0x3bdb8b35,0x3beede63,0x3bc52585,0x3bab73cb,0x3b5ae056,0x3b8829fd,0x3bb6e731,0x3c027965,0x3c28d970,0x3b98e30a,0x3c7e9b61,0x3b0d800d,0xbb816663,0x3b1fde52,0x3aeec1b5,0x3abafa43,0x3a827160,0x3a8ee053, -0x394d0490,0x3ae99530,0x3b05eba9,0x3b0e8ea0,0xb9321b70,0xbafebe50,0xbb086d68,0xbae39d64,0xba95aba4,0xb9a11eb4,0x39f0d170,0x3a3a5f44,0x3b0d3887,0x3a69f61a,0x3af6b960,0x3ab30f8a,0x3a461f1b,0x3aa66794,0x39ef4a3d,0x3b30799f,0x3bbded5e,0x3c1154d1,0x3c32d429,0x3c819aa8,0x3c5f5e62, -0x3c622d08,0x3c8fab8c,0x3c736181,0x3a8ac6ba,0xbb2a33f4,0xbbf417a1,0xbbe101c4,0xbbcd87b4,0xbb86d614,0xbaf4f689,0xbb156179,0xbb03e1f8,0xbb4d6c72,0xbaa087d4,0xbb18b608,0xbae76f17,0xbb0cca2c,0xbb1e3c31,0xbb2ecdc1,0xbb4ec29c,0xbabe0422,0xba8cca08,0x3ad5b22e,0x3b2ac5cc,0x3b6a00b3, -0x3b82589a,0x3b59dd3c,0x3b50c58c,0x3b20d96d,0x3b47b3ff,0x3b5e1a2f,0x3b57e4c6,0x3b5f148a,0x3b8b3d44,0x3bd60898,0x3bcd80c5,0x3bb31bee,0x3b5cc3ba,0x3b08c44c,0x3b260dbe,0xbb889405,0xbb8c2c03,0xbbb88a78,0xbbf3dae3,0xbb84f59d,0xbbc4bfce,0xbb935564,0xbb9840de,0xbb6b0169,0xbb83ae43, -0xbb4da3ba,0xbb63ec68,0xbaff883e,0xbb089494,0xbb17ea75,0xbb53c950,0xbada66f9,0x3949f172,0x39cbf971,0x3b47728b,0x3b38bbc1,0x3b4fcfca,0x3b5490c2,0x3b51a05f,0x3b41feab,0x3b64d5a9,0x3b6adc36,0x3b880090,0x3b9e392b,0x3bb77a1b,0x3bd86538,0x3b849559,0x3b07cb3c,0x3af0f9c5,0x39dad834, -0x3a3a7f97,0x3a92f7d5,0xbb65e4d1,0xbb1b478d,0xbba3ff76,0xbbc0da12,0xbbb366c4,0xbba0406c,0xbbaa0b13,0xbb716be0,0xbba9b27b,0xba8e3714,0xbb2515c2,0xba5b9ff5,0xbb33379b,0xba9a2419,0xbaa5b05b,0xb9723c26,0xba96c46f,0x3b108735,0x3b2244a0,0x3b057958,0x3b240eaa,0x3b10a8b5,0x3b1db9b4, -0x3b1a4e32,0x3b3f1d0c,0x3b5d732f,0x3b6cfa49,0x3b5c3d69,0x3b493aee,0x3b581d5b,0x3b3ee121,0x3b325dba,0x3b09c05a,0x3a871f93,0x3a9d37af,0x3abf0897,0xbb334725,0x3a322f84,0x39f71719,0x3982f47a,0x3a96f430,0xbaa29548,0x3a3e645e,0xba90f61e,0xbaa886d2,0xbb0be5b2,0xba7a7cfe,0xbae3c76b, -0xba2110fc,0xb9bdce7a,0xbab06550,0x3aa771e2,0xba68b87d,0x3b055044,0x3a973ebc,0x3aaddcbe,0x3a7c1823,0x3a62c84c,0x3a223c7b,0x398adeba,0x3a34e170,0x3a3b94bf,0x3a9f3c9d,0x3ae91d55,0x3b186ee6,0x3b2ff011,0x3b11a787,0x3aca15a8,0x3ac45a56,0x3ae3d01d,0x3abfadd9,0x3b035b0a,0xb71eff99, -0xbb2f8e04,0xbb780df6,0xb9c9daf1,0xbb27ed19,0xbb993789,0xbba5b069,0xbb950457,0xbb84cbdc,0xbb89bd5d,0xbb990cfc,0xbb9aa9f6,0xbad5a0a3,0x3a4cbe0a,0xbb61dc0d,0xbae70695,0x3a163a5e,0x3b0174c3,0x3ad96da4,0x3adba994,0x3ada7b83,0x3adcf0f1,0x3adb9d0c,0x3ad70140,0x3aec44d2,0x3af1c342, -0x3af41216,0x3aeb1901,0x3ad92c9d,0x3ae080e7,0x3ae6e0b2,0x3ae7521b,0x3ae2b8bb,0x3acd4c25,0x3af16102,0xbafdc55d,0xbae1d517,0xbb6c7afb,0x3a871708,0x3b91a50a,0x3b675b02,0x39e3abb6,0x3b64dd84,0x3ba3c9c7,0x3ba10927,0x3b9e358f,0x3b89c125,0x3b866137,0x3b9d0791,0x3b84b001,0x3b6de700, -0x3a889492,0x3b4f7535,0x3b6efa49,0x3a93f73f,0xbb584c3f,0xbb0b8e61,0xbb14159c,0xbb199c7e,0xbb2242ff,0xbb1982db,0xbafb4230,0xbae83333,0xbadd2d38,0xbae3d0d7,0xbaf660b8,0xbafeb81b,0xbb0b885a,0xbafdcf26,0xbae0d5f3,0xbac45e0e,0xbae30281,0xbb0ea52e,0xbacbc6ed,0x3bdf10b8,0x39f55a37, -0x3b2c29c3,0x3a90d17f,0x3aeb0bb0,0x3b0583fd,0x37ffd66e,0x3b2b088a,0x3b3ff5ed,0x3b122500,0xb73f2b74,0x3b0a3cca,0x3b78bb5e,0xb7290fa6,0x3a463adf,0xb9bedee1,0x3b2e0e01,0xbad91495,0xbb589891,0xbb495482,0xbb6b2173,0xbb4d3eb7,0xbb281a89,0xbafa0d37,0xbaa272d9,0xbaa2f0a0,0xbaff8277, -0xbb0c21bf,0xbb1e693b,0xbb4d3f1e,0xbb337e5e,0xbb35cf52,0xbb147986,0xbaeeb07d,0xbb2b5119,0xbacc1248,0x3b80cc24,0x38e164b3,0x3ae64dcb,0x3ad55d4f,0x3b66924a,0x3a130b8f,0x3b4981bb,0xb9c31a80,0x3bb1aab2,0xbacb1051,0x3ad6e101,0x3ad90419,0x3a86a35e,0xba25a326,0xbb0adee5,0xb9e390fb, -0x396e09b7,0xbaf389ca,0xbba7cfd9,0xbb7c1945,0xbba41ea6,0xbb98f9a8,0xbb824469,0xbad97649,0xb9eb6b25,0xb98ed3a0,0xbaa8c917,0xbadce95d,0xbb231d07,0xbb64a5de,0xbb286460,0xbacc6867,0xba305f3e,0xbaa004bd,0xbb20a586,0xb95e4844,0x3bd660a5,0x3b6483b2,0x39e5f563,0x3b13fdce,0x3b18dbd5, -0x3aecf482,0x3b61f47e,0x3b814c56,0x3bb251e7,0x3a65d270,0x3ac2b950,0x3acd9744,0x3a138336,0xbaa503bd,0xbb5cdc5f,0xbb067312,0x3887502e,0xb9de70b3,0xbbca8af9,0xbba4416f,0xbbc76010,0xbbb85f50,0xbb860f05,0xb9d7955e,0x3a719cfc,0x3a91bbfc,0xbac7a97d,0xbaa7c9c9,0xbb2b513e,0xbb9e68ff, -0xbb525fdf,0xbb512040,0xbb1930d3,0xba46a48e,0xbb0a2360,0xbb1b53a7,0x3b90e738,0x3aabae6e,0xbb00422a,0x3b02ad67,0x3b7bcf77,0x3b4d189b,0x3b8f69d9,0x3bb100c4,0x3bac35df,0x3b1e33ea,0x3ae1dd6d,0x3b650079,0xbaa40b56,0xbad6aa79,0xbb3cb0af,0xbbaca2f7,0x3a9ec4de,0xbb4b1771,0xbbe8575c, -0xbbc70d44,0xbbf8eade,0xbbe39d4f,0xbba3d62a,0xba61840f,0x3b12eb9f,0x3b0846af,0xba12ea47,0xbaab3565,0xbb1ca4e3,0xbb8bf52c,0xbb171b59,0x3a250f9b,0x3a9e3461,0x39e013d2,0xbbaa6218,0xbb96bf2f,0x3bfcb799,0x3c182d9a,0x3c1e3899,0x38b82de4,0xbbbd80ed,0xbb9bf51b,0xbb3f9464,0x39c338e9, -0xb9141c9d,0x3ba949bf,0x3b86dc5d,0xbb552fa7,0x3b115e48,0x3ab83ddd,0x3a9b36ae,0xbadd573a,0x3a5c9f35,0xb9d119b2,0xbb46ae20,0xbaefc735,0xbb84af17,0xbaa6ee65,0xbb8a08b2,0xbc137a7c,0xbc60ca89,0xbc3ee737,0xba164032,0xbb0b3e50,0xbad5612c,0x3b00be50,0xbbe08675,0xbc4f9c8d,0xbc39b493, -0xbc245ef6,0xbc17c83b,0xbb991f38,0xba60bf7e,0xbc2c4081,0xbc13d02c,0xb971e87d,0x3bc8288a,0x3bc0d123,0x3ae6d006,0xba25e8c6,0xbb147fad,0xb9452cbf,0x3af96b40,0x3b1a21ca,0x3ae8bd77,0xb9dc87ca,0x3a8f27cd,0xbadc7497,0xb8a686a9,0xba04af5d,0xbb881262,0xbb2970d3,0xbb9d39e4,0xbba96dbf, -0xbb7b3f5d,0xbaed8d93,0x3ba459fc,0x3b859f9b,0xb89f9f7f,0xbb4f0a7d,0xbb06bd82,0x3b995a12,0x3bd3fb01,0x3c3bf660,0x3c7febc8,0x3abed396,0xbb9cd144,0x3c1cd897,0xbad8c929,0xbb940a54,0xbb867173,0xbafcdb03,0x3ab4ede8,0x3a8f5ded,0x3ac0dc8f,0x3a88ea98,0xba9e314e,0xba910b37,0xba156161, -0x3a788d2b,0x3ad832ed,0x3afb15d2,0x3af1206f,0x3a0bf8a2,0x3ac5a085,0xba987ee5,0xbb096092,0xb9b34a0e,0x39a291ba,0xba98aa8e,0xbad222ea,0xbb07a966,0xbb229e0c,0xbacad212,0xbb1f3610,0xbb9f17e2,0xbb42a5bd,0x3c3a9f21,0xbbc888cf,0xbc257340,0xbbe73383,0xbc0798df,0xbb6d4f02,0x3b056bf8, -0xba62009c,0xbb8fa827,0x39c087e9,0xbb66b3d1,0xbb302f71,0xbaa12899,0x3a5db723,0x3a8a56d5,0xb809abc3,0xba543c54,0xbaa8f796,0xba14bc8f,0xb9f368ba,0x3a10d98a,0xba24554b,0xba0a5c24,0x3a66ab70,0x3a3186c2,0xbb61c2f5,0xbae6235e,0xb91070a8,0xb9dcd9ae,0x39bae934,0x3ab268bf,0x399e5173, -0x3a9d2822,0x3b060dd9,0x3a86e26e,0x3a4a9051,0x3c10bce9,0xbc0c0e20,0xbc59006a,0xbc248df9,0xbbde2e87,0xbb04c39b,0xbb6d50e5,0x3a62ec54,0x3adff555,0x3adc5147,0x3ad305e1,0x3af1313d,0x3ac9f97b,0xb95cc6a4,0xbabd1163,0xba6c2772,0xbaa8a265,0xba8a9514,0xbaa72c46,0xbaf97e18,0xbb1943b0, -0xbb2c0086,0xbb5e4ef8,0xbb27c58d,0xbb84f6f1,0xbb8a0319,0xbb8cae2f,0xbb82bae9,0xbb05081d,0x3ac53ad2,0x3b9041b6,0x3bef0664,0x3c06422d,0x3c198663,0x3bdab85b,0x3b72f391,0xb9a2ab55,0x3a6a4ecd,0x3ad1b9d5,0xbb406a4f,0x3aafd574,0x3b64dd48,0x3b9169d4,0x3bedda0a,0x3aec3c6a,0x3b619956, -0x3b3c05a0,0x3b12e196,0x399affd9,0x3a90cea1,0x3ac7b5c2,0x3aed5e50,0x3b106dc5,0x39594ebf,0xbb109e86,0xbb089466,0xbb22c299,0xbb2fd565,0x3992157b,0x3af6fe3b,0x3b1a744e,0x3a272cfd,0x3afd03c2,0x3aa1a917,0x3a978915,0xb86140ea,0xba361058,0xba01b958,0x3ab18d4f,0x3b83f1c6,0x3b987212, -0x3b9e8214,0x3be94499,0x3bb4ba54,0x3bd362a3,0x3c01db72,0x3c007a1c,0xbaf20977,0xbb489073,0xbab1241d,0xbb45824b,0xbb3e4357,0xba99f53a,0xba3622c3,0xba0950e2,0xbaf2a0a9,0xbabe652c,0xbb10b8bb,0xbb12470b,0xbb2cc4c3,0xbb2d081b,0xbb135aca,0xbb08bfa4,0xbb48608b,0xbb1e2d1d,0xba169d3e, -0xb9d1c557,0xb9a5d505,0x3996a131,0x39cbe90c,0x3aa7cc23,0x3afa26f0,0x3ab8e8a0,0x3aaecb01,0x3aa6ca43,0x3aeb80b7,0x3a85c277,0x392b1b70,0xbae67acb,0xbaa8b20d,0xba2a9555,0xbab536ab,0xba5bb1ab,0xbb89611d,0x398554fc,0xbb0c851c,0xbb6e3d8a,0xbbaed98b,0xbbc8a22f,0xbb9b1b8a,0xbb9296dc, -0xbb7523b6,0xbb7e12d2,0xbb453850,0xbb58ee61,0xbb2295a8,0xbb223139,0xbb0fe75c,0xbb0bc6a2,0xbad9e0ea,0xba6e1391,0xb9f095e8,0x3ae78af2,0xb9f7e08a,0x3a592154,0x3a4d1ea0,0x3aaa28dd,0x3a969c28,0x3a6eca23,0x3a88c31c,0x3a7c01a3,0x3ac6ae38,0x3a97c3c4,0x3a56e186,0xb996e1f0,0xbaaabd7a, -0xbb154313,0xbb3e7974,0xbb000665,0xbb1b01c8,0xbb21df0c,0xb9604198,0xbb2962b7,0xbb208645,0xbb2b019f,0xbb796dcf,0xbbb5a42f,0xbb936447,0xbb85c01c,0xbb247eba,0xbb53af2e,0xbafcfb7b,0xbaed8e5a,0xba393ea8,0xbace69fc,0xbabdd860,0xba1e2f86,0x3adc1519,0x38974c1a,0xba181db7,0x3a1f835e, -0x3a3196aa,0x3a7a06ca,0x3aa066d2,0x3ad63dae,0x3a98cdc2,0x3a9111f1,0x3a6a7fd8,0x38dd8b3f,0xb9fc42df,0xba66e152,0xba8c1737,0xba75d0b9,0xbaca7a4c,0xbad0e1c5,0xb9c14958,0xba0a218b,0x3b1d15ff,0xba1152fb,0x37e23a08,0x38f57c76,0xba1d7167,0x3a290562,0xba169548,0x3a21eaec,0x3a4f8395, -0x3a6fcccd,0xb98cb7c5,0x3980bb01,0x3a045ace,0x3a896507,0x3b057b41,0x39a7e0e3,0x3b0c8270,0xb94518ea,0x397c8dde,0xb9869320,0xb9eb0db3,0xba1ea0e0,0xba727bbd,0xbaa03d1b,0xbada3e37,0xbb0d7efe,0xbb10fc0b,0xbb144856,0xbb066d4e,0xbb0ddf1d,0xbb0009e2,0xbadc40b8,0xbab0962d,0xba85b7d3, -0xbaba2c6f,0xbae02142,0x3a027df4,0x3b13bfa4,0x3afa5e3e,0xb9a8fc09,0x3a94e8d8,0x3addc2d9,0x3b0e3185,0x3afb2f52,0x3adf106d,0x3b0b320d,0x3b37fe5b,0x3b409257,0x3ae8a3a7,0xb99a81c0,0x3b08dd00,0x3b0615ce,0x39b061bd,0xbac52ad4,0xbaa06c92,0xba9d43a5,0xba961196,0xba911242,0xba861ec7, -0xba73f252,0xba69dfe0,0xba729348,0xba87e47a,0xba9abe93,0xbab072f1,0xbac5e20c,0xbab6e2ac,0xbaacaee4,0xbaae3974,0xbab4cefc,0xbab4424d,0xba6ca430,0xb8c9a846,0x3a99a708,0xbb433ae0,0xbb91aa02,0xbb06218d,0xbb11bcbf,0xbb746edf,0xbb4c3167,0xbb4aedef,0xbb38f98c,0xbafadbd0,0xbb10756a, -0xbb25b25d,0xbb0900cd,0xbb89008a,0xbb518fa2,0xbb126817,0xbb90ce62,0xbb5d4428,0x3a237dc9,0xb9cc77fc,0xb9e9cfa2,0xb9cf9fa0,0xb9b0c92e,0xb9433b70,0x38d60ec0,0x391fca87,0x391eeec9,0x38897207,0xb9205d4a,0xb99f5960,0xba01c56d,0xba229f2b,0xb9ee8654,0xb8963398,0xb8c8547e,0x3a1d4b2b, -0xba480d8a,0xbb9db4c5,0xb9e93a2c,0xbb2823fd,0xbaa4aeb5,0xbb091235,0xba8ed2b8,0x39376130,0xbaf803d0,0xba84fb14,0xbb2cbca9,0xbaa2a69a,0xbaea3dae,0xbb48b009,0xbb0c6aa4,0xbb8345ac,0xbb2aee7e,0xbb95f383,0xbb024112,0xba6123c4,0xbad70ea9,0xbac14389,0xba9d1f25,0xba329793,0xb8d8a82a, -0x3a153068,0x3a214881,0x39434bfd,0xb90f8f00,0xba47881e,0xbad1bdc2,0xbb29434b,0xbb2a9723,0xbaa2f215,0xba600cfe,0x3ac24708,0xba046bec,0xbb3b6387,0xb8ab66b6,0xbb1f0377,0xba3a49d4,0xbab9698e,0x3aad2724,0xbaa0230a,0x3aa1cb03,0xba9edeb4,0x3a6fadc8,0xba5e40ae,0xba8e2e4c,0xbaea350d, -0xbae2821f,0xbb87b605,0xbb694430,0xbb8e8744,0xbb0fdc48,0xbac3b24f,0xbb43b37f,0xbb1a02a3,0xbb0eeaba,0xba608c2d,0x3a3303f1,0x3acc8bea,0x3ac5a72c,0x3a173458,0xb97a8737,0xbad17c21,0xbb3f3e24,0xbb8a200e,0xbb4fb295,0xb9cae6c8,0xb9c43f12,0x3b2f21df,0xb93c0a37,0xbb4d5831,0xb976fb94, -0xbaad3635,0x3a57e6bb,0x3a8f3bb2,0x3ad7c75b,0x3b4236d2,0x3b71bf9c,0x3b9b85f1,0x3b06cec9,0xb9b0176f,0x3b37e3ae,0xbacac628,0xba688132,0xbb7ffc32,0xbb6380c5,0xbb9afd5f,0xbb65380d,0xbb1c4668,0xbb8afe8b,0xbb832cb4,0xbb664455,0xbb04d849,0x3a031a10,0x3b084958,0x3b1b9b64,0x3a5a0431, -0x39d27920,0xbb117630,0xbb8cca1e,0xbbef58b1,0xbbd7e5da,0xbae2e57d,0xba9fa58e,0x3b48c51b,0x3a51913d,0xbac709f1,0x3a561384,0xbb061389,0x3a9ddaaf,0x3b5f2170,0x3b76556c,0x3b8f4f5e,0x3ba719f6,0x3bd8056a,0x3b2350d5,0x3b25ad8f,0x3b4d4b5e,0x39438038,0xba98818b,0xbb883ded,0xba7a278f, -0xbbcbcf49,0xbb4478d1,0xbb6b49dd,0xbbbe1e8c,0xbbac30ba,0xbb8bc50a,0xbae27445,0x3b12df5e,0x3b9c0e69,0x3b82db18,0x3afef3fd,0xb908ce4d,0xbb4fc7f0,0xbbb3b138,0xbc0cf0c8,0xbba34605,0x3a9832e8,0x3a65573e,0xbb6890a9,0xbb41ca79,0xbb991ee1,0xb83f257b,0x3bd2a811,0xbabcf765,0xbb9b4835, -0xbbbd8a7d,0xbb5e141d,0xb82a4ee0,0xb9fc12ee,0x3ba7a8e3,0x3ba49e02,0xbb4d4ef3,0x3ae29f09,0x3b12ead9,0xbaad2296,0x396babbf,0xbb5051b3,0xbac98fb9,0x3b177ef1,0x3b51b235,0x3bb17738,0x3b0f1f2c,0x39faa02f,0xbb23c5a8,0xbb8e6690,0xbaa43126,0x3c143e24,0x3bac469a,0x3b84ce8e,0x3b322aca, -0xbbc804ac,0xbc2cdd61,0xbc17ea6a,0xbbd02ef7,0x3b3916e1,0xbb25dc7b,0xbc2ed177,0xbbcf55d0,0xbc6341c4,0xbabbb467,0x3b8961bc,0x3b909d14,0x3b29dd95,0xb9e28123,0xbb3453a9,0xb9b3e473,0x3ac58cdf,0x3b2b6c6d,0x3ad1c5b9,0x3a6772d1,0x38e3c5b6,0xbae67358,0xbb84a794,0xbb8b2d55,0xbb0874f4, -0xbb7d0512,0xbb5fd329,0xbb85b6a9,0xbb5e2fe0,0xbb3395f4,0x3b742a12,0x3b7f326b,0x387f288f,0xbb1db724,0xbb52fb3e,0x3af57a88,0x3b52370f,0x3c1564c0,0x3c6df9ef,0x3b880493,0xbb804548,0x3be1e396,0xbadb6e05,0xbba8a4f7,0xbba8783f,0xbafa6569,0x3a6c652b,0xb83b99cf,0x3a39dbfc,0x3a861923, -0xba73bd02,0xba7564e7,0xba4721fe,0x3aaaac8d,0x3a126cdd,0x3a3d05c5,0x3a40e776,0xba510822,0xba47158e,0x38fbc804,0x3a30dc2b,0x39a71689,0x3adebd6e,0x3a58218a,0x3ad75a90,0xb9a4ebca,0x3b1931a7,0x3b542a6a,0x3b71714b,0x3b1c84db,0x3b01c554,0x3beb0997,0xbc3fb34c,0xbc8224d2,0xbc081281, -0xbc19c126,0xbbcc6818,0x395c244f,0xbb67d762,0xbb9153db,0xb9731b40,0xbb67373f,0xbb2bb688,0xbb09d3ec,0x398dbc5c,0x3a63d67f,0x39460644,0xb9f233d5,0xba9ca49d,0xb9b9aa30,0xb9864396,0xb9b05f1c,0xba8e86fc,0xb8bd221b,0xbac20dd1,0xbae3716b,0x39dd990c,0xba126f12,0x3a965722,0x3ad62296, -0x3b187446,0x3af16d64,0x3aac3ecc,0x3adf5d32,0x3b9f7d17,0x3b80e9db,0x3b85acd9,0x3c0671f6,0xbc3e69cb,0xbc948520,0xbc7ab9cf,0xbc2596e3,0xbb86bc49,0xbbab7510,0xba3f8b01,0x3b1d881a,0x3a6d7c13,0x3b08c810,0x3ad6f82c,0x3a3104ec,0x39bef69e,0xba9333d4,0xbae523b7,0xba3a1c00,0xba5d464e, -0xba5206ef,0xbaf98c65,0xbb2c720c,0xbb55b3e1,0xbb65b8cc,0xbb8f02db,0xbae489b4,0xbb29d173,0xbb579070,0xbb4753df,0xbb33627f,0xb8157e4b,0x3b3e13c4,0x3b8b3d90,0x3b8dae23,0x3b673c1f,0x3ab2aa3d,0xba83b6c3,0x3adb6935,0xbb0dcce7,0xbb0e0a04,0xbbd0ee7d,0xbba54faf,0xbb2434de,0xbbcf9438, -0xbb44d346,0xbad8f96b,0x3a623fc4,0x3a9f74ea,0x3a42938b,0x391782b6,0xb98eeb72,0x3aad3473,0x3ac7531e,0x3b250668,0x39ef1f1d,0xbae645d7,0xbb217598,0xbb3145fc,0xbb08dfe2,0xbaee3bc7,0xba81d96a,0x3897fcdb,0x3a96214d,0x3a8e7db3,0x3ae8a56c,0x3a5274c5,0xba4602be,0xbb227f6b,0xbb2e6cf2, -0xba90e51c,0x3a34d516,0x3b749ae2,0x3b9a6af8,0x3bcf7296,0x3b3174d8,0x3aafbdfd,0x3b59a74d,0xb9e07bf8,0xbb1b18bc,0xbbc039a0,0xbbb6b1eb,0xbb954b37,0xbb894841,0xbadbecfe,0x399af7bb,0xba1ce744,0xb996f164,0xbb053f80,0xba03455a,0xbb1c1f5d,0xbb04e319,0xbb1f6264,0xbb1c0f39,0xbb3f4516, -0xbb710923,0xbb34884f,0xbb085f85,0x3a03510d,0x3a779f99,0x3aaaab7f,0x3ab9f3d3,0x3a12ea80,0x3a201ade,0x38db1bb8,0x3a227d54,0x3acbbe82,0x3b33e981,0x3b128e9d,0x3ade57ee,0x3a91ae9e,0x3b182041,0x3b0c7ad0,0x3a062e6a,0xba628198,0xbab9b2a2,0xbb97dcad,0xbbc266ad,0xbbca7aed,0xbc030f31, -0xbb9a4fc7,0xbbba9ae0,0xbb81d426,0xbb80566e,0xbb2f54fa,0xbb3bf7d5,0xbb187908,0xbb3dfdcf,0xbb07f149,0xbb10fe06,0xbb148e5d,0xbb4f880e,0xbb240d51,0xbaa70f51,0xba8339d9,0x3a91fb56,0x3ab0872d,0x3aead758,0x3ad69a16,0x3ab2e46e,0x3a9cd124,0x3aa0ef70,0x3a999cef,0x3ae6c0fa,0x3b04b7de, -0x3b0c695e,0x3ad6cbbd,0x3970a6c3,0xba78ec15,0xba73d081,0xbaea5742,0xbaa89402,0xbac845dd,0xbb87bb1b,0xbb855f63,0xbbc6cbcb,0xbbce1cd3,0xbbc0a041,0xbbadad0d,0xbbb02152,0xbb842e90,0xbbae1524,0xbb24c8f3,0xbb25aa78,0xbb0724f6,0xbb15a65e,0xbad8015d,0xbab3d519,0xba3e3403,0xbabeccc1, -0x38027423,0x3aae088f,0x3a980efc,0x3b0a4e33,0x3afda52c,0x3b17ad61,0x3b1e6100,0x3b0c495d,0x3af6267b,0x3a8df33a,0x39ce9b85,0xb9ae5041,0xba0403e5,0xba06529e,0xba2bbbcc,0xba8875e1,0xbac4dd19,0xb94ff683,0xb8f4be27,0xbafc894a,0xb970e4c6,0xba0b6240,0xba527965,0xba55ba18,0xbad005de, -0xba478d2b,0xbb03a4d1,0xbafe952a,0xbb2f9b9d,0xbb10945a,0xbb1f190f,0xbb16a025,0xbaf1b4d6,0xbac7f70e,0xb9a41827,0xba2fd929,0x3af9561b,0x3abd2987,0x3a9aebe0,0x3a623ded,0x3a3b7708,0x39dd1fe8,0x38a5f93a,0x39d94532,0x39c7ae27,0x3a24f780,0x3a4c8b79,0x3a5d96ce,0x39ceb762,0x390b6d21, -0x377998f6,0x37c3ec04,0x37596d65,0xb9e9a581,0xb9981d02,0xbb1500ff,0xbb4a8996,0xbb0121a6,0xbb391cdd,0xbb6f5a5a,0xbb4ce692,0xbb49f025,0xbb2c6851,0xbb0cb960,0xbb056b25,0xbb01df6f,0xbafb321f,0xbb364217,0xbad94152,0xbaa45925,0xbb22bcd1,0xbad41994,0x39ab6fe9,0xb8344bd0,0x386f237d, -0x390d6e04,0x396b38ca,0x399a6572,0x39a136ef,0x398a5884,0x384695f6,0xb909b6aa,0xb9c41682,0xb9fadb11,0xba0ea0af,0xb9e298c1,0xb9cdf11d,0xb9eea160,0xba0995b8,0xba7ed250,0x3b077e23,0x3aa39a6b,0x3a4f2e04,0x3b7adc4d,0x3b48ee26,0xba52e3a1,0x3b4f8a06,0x3b3da5ab,0x3a13d9d8,0x380cb738, -0xb9d66426,0xba0658a5,0xba448792,0xba8d269b,0xba5a9f5b,0x3b4072ba,0x3b5b9a28,0xbafbf3ef,0x3b05d7ee,0x3b3b083c,0x3a050873,0x3a6fa7e6,0x3a947f6a,0x3a8b1494,0x3a948c83,0x3aa35a45,0x3ac8f2a7,0x3ac9d9ea,0x3ad127d7,0x3ac277bc,0x3ac84523,0x3abae202,0x3aaee346,0x3abd3b38,0x3ac785c5, -0x3ab0484f,0x3ab6d4c9,0x3aabc8d0,0x3b42549c,0x3b3f2cc2,0x3af87f5d,0x3adb944e,0x3b11bd71,0x3b37ff81,0x3ae8d313,0x3a801cbe,0x3b3761e9,0x3b1add1d,0x3b3821b0,0x3ae1fa4d,0x3ae3eec3,0x3a71f4bd,0x3af8c7ce,0x3a15d7b7,0x3a409210,0x3ad8518e,0x3b0c458b,0x3a075556,0x3a8e77ea,0x3a8d3fe8, -0x3acf9fef,0x3b13f3ee,0x3b61806b,0x3b58f890,0x3b54e7b2,0x3b2dbf33,0x3b4dd07c,0x3b35fab4,0x3b02b82b,0x3b0d5327,0x3ae3d43c,0x3a853124,0x3ae6ac40,0x3ad2458d,0x3b26c453,0x3b898c91,0x3b54f803,0x3b26e6ef,0x3b28867c,0x3b42681f,0x3b2bf04b,0x3b2e05c7,0x3a9dd18f,0x3b9e71c6,0x3ae81ef3, -0x3ab5c100,0x3b3a8441,0x3ae4ff67,0x3aaf1aeb,0xb9d71d5f,0xb99289c8,0x3a27dde8,0x393bee27,0xb9330e12,0x3a65a864,0x3a8162a4,0x3ac949ec,0x3b132972,0x3b95886e,0x3b97e136,0x3b9469dc,0x3b77fad9,0x3b85344c,0x3b731eaa,0x3b2581f8,0x3b46646a,0x3b40d45e,0x3ae7d6f1,0x3b260b43,0x3ab66391, -0x3b39e436,0x3ba8d542,0x3b8460d2,0x3aee2671,0x3b26f938,0x3b05f963,0x3b634101,0x3b33bdef,0x3b671448,0x3b97f91b,0x3ab41700,0x3b147b35,0x3b01d433,0x3abccfda,0x39fdc133,0xbb0d8da1,0xba7af589,0x373f374e,0x39799885,0xba86c903,0xb9896ddf,0x3a2f22db,0x3b082e82,0x3b8ddad7,0x3c01bcc6, -0x3be598ee,0x3bddce0a,0x3b9e12cc,0x3bd42a9f,0x3bbb0755,0x3b4250b7,0x3b78d5a3,0x3b0f6095,0x390efa00,0x3b2022de,0x3b32e605,0x3b1211dd,0x3ba83e9d,0x3b5cbc45,0x3a421e4c,0x3b208b15,0x3b6c66ee,0x3b7944ee,0x3b8bb23e,0x3bb05ee3,0x3bb344e1,0x3b0dd34f,0x3aefd5d0,0x3b4f188e,0x394a5c88, -0xb947e495,0xbb2823c0,0xbb640c20,0xba22f3b5,0xbab3b28b,0xbb05b91f,0x3895ecf8,0x3a4d7186,0x3ae77a59,0x3b8276ed,0x3bfd1fd1,0x3c0fa8aa,0x3bfe22cc,0x3bafd7e7,0x3bd9b517,0x3bc83787,0x3b6134c1,0x3ba2141b,0x3bad7cb7,0x3b2f31c7,0x3b866ecf,0xbad84290,0xb92c6796,0x3b9bc3e8,0x3baf26a3, -0x3c0a085c,0x3ad29766,0xbb255abb,0xbb9d31ec,0xbb6cddd2,0xb9fdcbcb,0xba3d0fe1,0x3bc9bb80,0x3bb1195e,0xbb4cc46c,0x3b0ed31d,0x3adb1ffc,0x3b1f3919,0x3a0b54e6,0x3b17bdde,0x3b4a3c08,0x3b759414,0x3b4d9968,0x395d9539,0x3a5cb5f1,0xbad21cc6,0xbbfbd877,0xbc070a98,0xbb8c0ca2,0x3c0a8494, -0x3bb1681a,0x3be9538b,0x3c3e450e,0x3a5d76c6,0xbb9d5777,0xbbada9c3,0xbb6e1c69,0xba645174,0x3ade1bf3,0x39f8a163,0xbbbdf416,0xbc0f3ee3,0xbab40c1e,0x3b3c4ed6,0x3ba93f37,0x3b3029f1,0x39fca24f,0xbb3339f0,0xba998505,0x3a8a3ffa,0x3b0b1138,0x3b08807a,0x3a185613,0x3aae3c47,0xbabedc91, -0xbb09e7a8,0xba97bb49,0x3a51020a,0x3b3602f0,0x3b7c6793,0xb780e3e6,0xb8bd88de,0x3932d114,0x3be4d729,0x3bb8b23c,0x3a2fdc19,0xba160633,0x39d1ab75,0x3baf6c2c,0x3c25b3e9,0x3c613282,0x3c4dccfa,0x3bb4fb90,0xbbbaa6db,0x3baf02f7,0xba1f40e5,0xbb72d75e,0xbb3b3374,0xbaacb184,0x3abacba8, -0xb9c2944d,0x3a304568,0x3a559c63,0xba52b3ab,0xba9ae459,0xba4c8b13,0x3a36ae3c,0x3ad0740e,0x3adb826d,0x3b068cee,0x3a89fafa,0x3b163241,0x3a96852c,0x3a897147,0x3b37f18f,0x3b7690ce,0x3b7941d7,0x3b8a9f57,0x3b7f26ae,0x3b91679f,0x3b93c475,0x3b03cbf4,0x3b0b960d,0x3bb09dd6,0x3c7825c9, -0x3b2cd315,0xbab8469d,0x3a07c1d7,0xbbd71049,0xbb60861d,0xbac047f7,0xbb62c1a0,0xbb5eba62,0x3a121922,0xbadbabbc,0xbabe901f,0xbb35b6c7,0xb9a8580d,0x38bc14d7,0x39facee9,0xb9ac0e78,0xba4e9db5,0xba07d5b0,0xb9ddb1bb,0x3a6c5db5,0x3962d816,0x36cdc041,0x3a7ea5c8,0x3ae90bff,0xba33fd35, -0x3a8a94ea,0x3b0be608,0x3b9e18fa,0x3bdf7053,0x3c044bf3,0x3bf5ba34,0x3bf7540b,0x3c0a5448,0x3c02e7db,0x3c0d6acc,0x3c721bc9,0x3b5fac09,0x39df9e80,0x3bca3f02,0xbaf472a3,0x3bfa5b86,0x3a379f81,0x3b4c7927,0x3b35888e,0x3b61182b,0x3b183eba,0x3ac85d78,0x3b010745,0x3a052c6b,0xba5c40f0, -0xba89c114,0xb9f3d56b,0xb946c315,0xba58f111,0xba615721,0xbacc27c0,0xbb368958,0xbb3cf60b,0xbb3c7ef9,0xbb347629,0xbaf10744,0xba45ad33,0x3990379d,0x3acbedb5,0x3b731850,0x3bc02909,0x3c071a29,0x3c15bbaa,0x3c2b4f3b,0x3bc30f1f,0x3b94186b,0x3b7a2d3d,0x3c374c1d,0x3c778c72,0x3c64101f, -0x3c504cf2,0x3c0ee012,0x3b0baa4c,0xba8f2bfe,0x3b051c73,0x3a9eb692,0x3b3824d0,0x3b393fdd,0x3a998583,0x3ad0a820,0x3b1156f0,0x3b02cf6f,0x3b331fd8,0x3a5013ae,0xba8ecf4d,0xbb09e024,0xbb34ee3f,0xbb23a29c,0x37f10215,0x3afa79b1,0x3b1d44d2,0x3abd6baa,0x3abf0921,0x3aa65558,0x3b03dbee, -0x3b2b1e4f,0x3b851b47,0x3bbec402,0x3c08d4ba,0x3c4fed1b,0x3c41f7a4,0x3c4321a1,0x3c730760,0x3c70235d,0x3c683cbd,0x3c6301bb,0x3c3c814a,0x3bbb7627,0x3b0982f1,0x380dcbff,0xb9c1b6a1,0x3a45e855,0x3abdcba6,0x3b1226f8,0x3acd7044,0x3a668345,0x3a22ed71,0xba207152,0xba8f3197,0xbafa4a1b, -0xbb0f9eb1,0xbad629cc,0xbabb992d,0xbb090f05,0xbb297e6f,0xbaf95457,0xba8e1e84,0x3980e189,0x3ae58c19,0x3b00e409,0x3b6506e3,0x3b843eea,0x3b6be61a,0x3b3737a9,0x3b137a60,0x3af4e172,0x3b05a0ca,0x3b37c1ad,0x3b92492b,0x3b957809,0x3bc40d30,0x3bccb171,0x3bdb186c,0x399a9544,0xbab61454, -0xba789402,0xbb1551d3,0xbb72dbb6,0xbb5f09b9,0xbb4dbf41,0xbb3c7b92,0xbb1522b7,0xbb1de1e9,0xbafe20d2,0xbb2e3001,0xbb168625,0xbb17df96,0xbadef773,0xbaf2ad9a,0xbab763ce,0xba85bea3,0xba0b76c5,0x3a0c252f,0x3991d417,0x3ab71351,0x3ad37ef5,0x3b102675,0x3b08dcc7,0x3ae767e0,0x3b05877b, -0x3b04fecb,0x3b229d57,0x3b41f8b8,0x3b68ea22,0x3b8be85d,0x3b29541f,0x3a905e18,0x3a38d32f,0x38ad4c55,0xba75fb55,0xb9aa0f30,0xbab0f028,0xbb25aad9,0xbb7577bf,0xbb815e4a,0xbb8493ea,0xbb938152,0xbb829f8e,0xbb55aa4b,0xbb0c3a63,0xbababaac,0xbadcba98,0xba4d2b5c,0xba922c68,0xba5b330d, -0xba4606ba,0xb8d4cf2b,0x3a8a7524,0x3a6d8928,0x389ba1c4,0x3a86d516,0x3aa2be62,0x3a9a1ad7,0x3aa41bd7,0x3ac394ee,0x3b0422d6,0x3b331e2b,0x3b5c479d,0x3b416e45,0x3b1ead74,0x3b09d6c5,0x3ac2169f,0x3aba8ed6,0x3a24582a,0x3982f2e5,0x3a75e66c,0x3a0ee4df,0x3a2d4f21,0x3a369bd8,0x3ad478a8, -0x3a719976,0x3a4bdc62,0xba0deb11,0xb92b41a1,0x391275fc,0x38650514,0x38a6a1d3,0xb8000890,0xb604e53d,0x3a9c2a4a,0x3ac21c46,0x3aaf9fca,0x3ab53385,0x3ade64fc,0x398df02a,0x398f50b3,0x399c0b54,0x3906ac2f,0x39871495,0x396680b5,0x389f61b2,0xb8c444f5,0xb99e20fb,0xb840d924,0x3a209611, -0x3ac6e34c,0x3b21c565,0x3b000ec1,0x3ac5a2b8,0x3a99f2d9,0x3a90af5d,0xb9a5d87b,0xb9866097,0x3a833fe0,0x39bd18a4,0xbad22453,0x38e6273d,0x394af9e5,0xbab5202a,0xbaa71b6f,0xbab08ce9,0xbab232c8,0xba9de7e8,0xba8ee0a5,0xba8bfa2a,0x3a9f7c51,0x3a7c39cb,0xba757b7d,0x3aa01b8e,0x3aa359ad, -0xb9bef537,0xb88ecb0f,0xb8a7e7c2,0xb8a2dd17,0xb8ca25cc,0xb8c1c35f,0xb7d1e851,0x395e76ab,0x39d0c146,0x3a01e437,0x39e4f5ae,0x394258f8,0x38e12138,0x3729f3cd,0x38810b7d,0xb6a933a5,0xb92761e9,0xb78dd06c,0xbb6c1dc3,0xbb0a7eb6,0xbb2d23e9,0xbb7547cb,0xba999bb3,0x3b338f4b,0xbb5edf3e, -0xbacacd72,0x3b0e2f68,0x3b19614e,0x3b3194a0,0x3b358c2b,0x3b39c4e6,0x3b6464d8,0x3b363562,0xbad7d4b1,0xbb667ea3,0x3b3f478f,0xba9b076f,0xbb5dc2da,0xbb3af04f,0xbb353d9a,0xbb47233e,0xbb442f0a,0xbb4210ab,0xbb3476af,0xbb158f43,0xbb18c0e5,0xbb1b15e7,0xbb230e5c,0xbb33878d,0xbb371c5d, -0xbb474bd5,0xbb4a2ecf,0xbb397a2a,0xbb0b80f7,0xbb169be4,0xbb03994e,0xbb867141,0x3a533d49,0xba7f84a4,0x39116f77,0xbab23b6e,0xbaf9db95,0x38c917a9,0xba881467,0xbac5a5bd,0xb9c5a27b,0xbaebd364,0xbaea0397,0xba58b335,0x3aa0f704,0xbb0e115c,0xbb10d9ef,0xbb22f394,0xbb08e90f,0xbb9b20e2, -0xbb852d2f,0xbb9a2db1,0xbb9f3f98,0xbb8b2ce6,0xbb6cc4ba,0xbb431248,0xbb3eb1d1,0xbb4e641c,0xbb6ca459,0xbb80104e,0xbb8da136,0xbbb157da,0xbbc2ecbc,0xbbb35be1,0xbb4ebc9e,0xbb3da5e8,0xba8fc4e0,0xbb3c3d80,0xba8872d0,0xbaf82e78,0xba35f193,0xba627c37,0xb99c4090,0xb89d3ded,0xba0c2839, -0xbaac7603,0xba519bc0,0xbb06c93e,0x395083e6,0xbb055e4f,0xba5ce935,0xbaee4f16,0xbb81f290,0xbb29fa6f,0xbb6ec74d,0xbb86578e,0xbbc3b70c,0xbbcf4e0a,0xbbdc50b1,0xbbbe360c,0xbb910929,0xbb0942e5,0xbb0d1649,0xbb1fc6f7,0xbb798a89,0xbb8e0a35,0xbbb68bf5,0xbbdf9c27,0xbbf5175a,0xbbbc2f29, -0xbabac427,0xbb0486cc,0xb9cfae4a,0xbb358c45,0x38c1bb56,0x39df7632,0x368392e2,0x3a87a132,0x3a8fe710,0x3a91c463,0x3adeab89,0x3b1524a9,0x3b71058d,0x3aab2ece,0x39413613,0x3a874f3f,0xb90259a9,0xb9db1e1d,0xbb7ca3c9,0xbb6340c0,0xbb7c552b,0xbb8dca19,0xbbefdfbc,0xbbfbc333,0xbc0fdd9a, -0xbbf5a251,0xbbc5dc07,0xbb06c234,0xbb2929b3,0xbb3c4c60,0xbba6735c,0xbba0f119,0xbbf01f94,0xbc22452e,0xbc37d844,0xbc1433e6,0xbb11bb8f,0xbaf2a5d9,0x3acde7b9,0xbacd2a9f,0x396225cf,0x39c333c0,0xbaa02aaa,0x3a170527,0x3b2311f2,0x3b834214,0x3b83b4fb,0x3b912093,0x3bb0c1ee,0x3b151c26, -0x3b041955,0x3b1ec966,0x394b6513,0xba51f69e,0xbb76c78d,0xbb48ef86,0xbb84db5f,0xbbbccf12,0xbc0e3a91,0xbc26ab3e,0xbc3419ea,0xbc0fe089,0xbbbdac85,0xb9bf5f61,0x396e3be8,0xbac8a113,0xbb841938,0xbbbd7601,0xbc02d8c6,0xbc1ce2c5,0xbc3e9aa5,0xbbdbd37a,0x3ab0e936,0x3a0df647,0xbc2e1475, -0xbc2d9c98,0xbba51af7,0xb83958aa,0x3bacd358,0x3ac844cb,0xbb4fbb47,0xbbbb5cad,0xbba5dae2,0xbaac596b,0xba57f836,0x3bb85cef,0x3bb881d1,0xbb42ff14,0x3aba76a8,0x3a4ae8f4,0x3a8c0320,0xb9c8f697,0xbb0c5a23,0xbb4dfc87,0xbae0dbc6,0x380f722d,0x3a7b2908,0xb9e9defc,0xbb4cc7ec,0xbbcce933, -0xbc1b1623,0xbbc42c7a,0x3b61c93d,0xba9216e6,0xbb5ee764,0xbbb2d157,0xbc58e1e7,0xbc880236,0xbc642be9,0xbc602dab,0x3afe65a4,0xba578b56,0xbb853c4f,0xbc0b40cf,0xbc34facd,0xbbb41aa8,0x3a8845ad,0x3b5fd477,0x3b3fb571,0x3a2682e7,0xbb575967,0xbabc3ecb,0x3a2d5e19,0x3ae7d39b,0x3a6164f8, -0xb9ed3437,0xba43d5a2,0xbb1ef56b,0xbb0e528c,0xbb8ea575,0xbbcabcaf,0xbbf4393b,0xbc1ff741,0xbc032d59,0xbbb36975,0xbac5a305,0x3bb00834,0x3b8db68e,0xbae2bf9f,0xbb7f2a79,0xbb6911ae,0x3b440cab,0x3b8e80b7,0x3c0d70c2,0x3c259e5c,0x3b80f02b,0xbbff43c9,0xbab56961,0xbb638cc0,0xbb90889b, -0xbbac5be2,0xbafc3a9e,0x3a280885,0xbaf69ea4,0xb913a59a,0x38d904e1,0xba1fdeb9,0xbac51fd9,0xbab4aeec,0x3a7585d0,0xba3adf0b,0x38d8bdc7,0x3a29ab94,0xba893093,0xba8a5135,0xbb3cb47b,0xbab77745,0xba62d72d,0xba2a1ebf,0xbb609b4a,0xbb889e69,0xbbcddf76,0xbb69bccf,0xbab255ff,0xba1c7e28, -0xba12379e,0xbb6d9a90,0xbbaf2aea,0xbc892f38,0xbc9c4aa9,0xbc3bc15a,0xbc39f00a,0xbc23e1c7,0xbb9469dc,0xbafe74b5,0xbb733d28,0x3a0a60eb,0xbaca9bc3,0xbad68191,0xbb740bb6,0xbaad2613,0xb9c567d8,0x38ca0ee6,0xb9fa2f71,0xba7823c8,0xba3c9a29,0xba292e27,0xba80969c,0xba9d4ea6,0xba7e0848, -0xba9e6486,0xbb1adecb,0xbad05bbf,0xbac27f39,0xba043abf,0xbb00ba5d,0xbb39c582,0xbb91734e,0xbbb72562,0xbb68b3bf,0x3a59e86b,0x3a0f61c2,0xbb28105a,0xbbe02622,0xbca3db87,0xbcc97141,0xbca043db,0xbc609ac6,0xbb982f1a,0x3967cabb,0x39ead7ae,0x3b35a36d,0x3b3a1916,0x3a5d342d,0x3a4405c0, -0x3ab6037a,0x39b6d307,0xba42536a,0xbadf3769,0xba15dfa4,0xb971c8ab,0xba8aaf32,0xbaa88ba7,0xbafbb7c8,0xbb5d1ab0,0xbb83d4fb,0xbb8152fb,0xbb59b017,0xbba24739,0xbbcf6787,0xbbdff236,0xbb9e429b,0xbaada82e,0x3b1cebcc,0x3b5cf84d,0x3b4efcea,0x3b383bf8,0xba4152de,0xbb3aab1b,0xba17e673, -0xbbca1f47,0xbbf52c58,0xbc73adda,0xbc0293f0,0xbc8360df,0xbc1d878c,0x39bbd2c9,0xbb5979aa,0x39dfdb5c,0x3ab26dc9,0x3a8d7d59,0xb939695e,0x39b7d3dc,0x3aad437d,0x3a882d16,0x3b0d749a,0x3a2b00f8,0xba916ef2,0xbb25bed2,0xbb5df85d,0xbb3fbe72,0xbb2bc221,0xbacd88c6,0xb8146aca,0x37345343, -0x3ac574b3,0x3a8b5757,0x3a516c9f,0xba3751ab,0xbb5f2f75,0xbb1e9503,0xbac9ef44,0xba5ec3e5,0x3a938d3c,0x3a21443c,0xba530835,0xbb68bd9c,0xbbcd880d,0xbc0ac8c4,0xbc3cd3ef,0xbb3a2975,0xbb998ffe,0xbaa9429c,0xba6ebf91,0xb8d8e369,0x3ac9e19d,0x3b1f5656,0x3ac339e4,0x3aa032bc,0xb93e462b, -0xb926fd04,0xbaec9c70,0xbb10a4b7,0xbb2ad724,0xbb1fe222,0xbb37b740,0xbb5a98a8,0xbb5f0854,0xbb18083e,0xba9d4cd7,0xba850081,0xba72257b,0xba843c51,0xba92eb54,0xba529ecc,0xba8e5f91,0xba6861e8,0xb8995623,0x3ab77042,0x3a0f6ee5,0xba50f6e7,0xbb596fbf,0xbad05c07,0xba379c64,0xba792008, -0xbabd78fe,0xbb9b63a3,0xbb45ef74,0xbba7b029,0xbb9c2500,0xbbc78a09,0xbb9f2b9e,0xbb8e5b6d,0xbb5162f0,0xbb396def,0xbb0b95df,0xbaf7d219,0xbb008ba5,0xbb128954,0xbb1d6e5b,0xbb1f30e8,0xbb1396d4,0xbb1e6397,0xbb27630a,0xbb1524c9,0xbab94c61,0xbaa22879,0xb9954ecb,0x3900e070,0x382f0a05, -0xb9bdf245,0xba185afd,0xba80eeba,0xbaa0fe99,0xba52d9a0,0xba661dc8,0xbaa7fd30,0xbb30041f,0xbb209fb2,0xbb270cac,0xbb24e814,0xbb3e171b,0xbb4e70b1,0xbb84c18a,0xbb57dbd1,0xbb9dddc4,0xbbb4231b,0xbba89259,0xbbab8cc6,0xbbb3b77f,0xbba76089,0xbb8e949e,0xbb915a9a,0xbb80ad16,0xbb24a041, -0xbb4455b5,0xbac597d8,0xbb095e39,0xbae48eef,0xbab90fd1,0xba6a574b,0xbb021ada,0xba2e12ae,0xb878ec63,0x3a802f5c,0x3a7b34a9,0x3aa8b709,0x3ad1059f,0x3a4bebfe,0x39181240,0xba8f77b2,0xbaf3076c,0xbb2c9fa0,0xbb4cf287,0xbb4606b4,0xbb4be6b4,0xbb50d8eb,0xbb4ffb60,0xbacfabea,0xbae40cba, -0xb928414c,0xbaab36ae,0xbaa40ea6,0xbad40b00,0xbb267824,0xbac87768,0xbb0ec4be,0xbb059a90,0xbae5ae97,0xbb064405,0xbb2e3088,0xbb13318f,0xbb387510,0xbb124143,0xba4b5846,0xbad4cb12,0x38344aeb,0x39d3cae5,0x3a33e5ae,0x390ca86c,0x372a07c0,0x378a5937,0xb8975dfc,0xb93b7db5,0xb995cbb0, -0xb9f2e7b4,0xba180b43,0xba5913d6,0xba96a986,0xbaffa09c,0xbb022a7c,0xbad2cb82,0xbadcaa0f,0xbafa690a,0xbb1e34ac,0xbb346f38,0xbb4eccee,0xbaec9c29,0x3960dda5,0xbb7e5848,0xbb3ec80b,0xba2b5e9e,0xb9381504,0xb88100e3,0x390e0316,0x3a09955b,0x3a970d27,0x3aae664b,0xbb0f0f3a,0xbb4aaaf4, -0x3a8813ca,0xbad66791,0xbb304964,0xbaec86a5,0xbafbebb9,0xbae94a01,0xbad74b00,0xbacb7ad7,0xbabeab17,0xbab2e1a7,0xbac83961,0xbaee35da,0xbb077d36,0xbb19dca8,0xbb1d8b41,0xbb27e4c6,0xbb23e7cf,0xbb208214,0xbb25773b,0xbb25b9b7,0xbb68530d,0x3b6dafc6,0x3b356b34,0x3b7ef563,0x3b4b3067, -0xba372c84,0xbb8624fe,0x3b3db2e1,0xb858a956,0xbb764a0a,0xbb8f68da,0xbb9d1e3b,0xbb8b3797,0xbb933ce6,0xbbb30a25,0xbb942a7e,0xb941dcba,0x3b20758e,0xbbaca4f4,0xbab86263,0x3ad9ca05,0x3b4a49fc,0x3b21c67b,0x3b38fd93,0x3b381256,0x3b487350,0x3b5035fa,0x3b5c27d5,0x3b53ac4a,0x3b52cfba, -0x3b4768ad,0x3b4e6164,0x3b46dd95,0x3b43d90c,0x3b4097d1,0x3b3f7bf9,0x3b3083ca,0x3b406acc,0x3b5e2937,0x3b9302e8,0xbb29cc1e,0x3aff5aaa,0xb9e51e7f,0x3acf5e39,0x3ac5ac57,0x39df3b57,0x3a8c246d,0x3a64b289,0x39a3610b,0x3a8dd196,0x3aefd957,0x3911bece,0xbb17556a,0x3aeffa2d,0xba827681, -0x39a51a48,0xbaaf2f10,0x3b493098,0x3b291eee,0x3b3e2b9e,0x3b5948f1,0x3b7c92c4,0x3b94d929,0x3bc02c95,0x3baac119,0x3ba5edd9,0x3b9730e2,0x3bb12734,0x3ba298e1,0x3b85853b,0x3b73948b,0x3b575763,0x3b27983a,0x3b58a34b,0x3b9477a7,0x3b89d97c,0x3ad8636f,0x3b8145e6,0x3aad79cd,0x3ae3ce7e, -0x3a29f232,0x3b550691,0x3a203660,0x3af11661,0x3ab7dd3b,0x3b662549,0x39e1345f,0x3b06c561,0x3a902057,0x3ae7551d,0xb9351f98,0xba9d8f1b,0xba6eac3f,0x3a202756,0x3b3192d1,0x3b32a4cc,0x3b7ee600,0x3b9928d7,0x3bb80ebb,0x3bf94bd5,0x3bdc9fb9,0x3bd045b7,0x3bb866a5,0x3bcaee49,0x3bc247ab, -0x3b984699,0x3b8ae024,0x3b74eacc,0x3b305b75,0x3b85d197,0x3b90a43c,0x3b688e4b,0x3a78f5f0,0x3b30df29,0x3b01b95f,0x3af97834,0x3a970ad0,0x3b6f3528,0x3accc4de,0x3b23c5b1,0x3b3c3282,0x3af148e3,0x3b065903,0x3b19bb1a,0x3ab4acc6,0x3ad9f9d7,0xbaaf6fb4,0xba6ef28d,0xbae75ead,0xba540040, -0x3b03a697,0x3ad987af,0x3b6d0a0e,0x3bbb753e,0x3c054398,0x3c3797d5,0x3c116901,0x3c0947fc,0x3be6d765,0x3c17d354,0x3c0a6296,0x3bb2f75e,0x3b984e24,0x3b4523ed,0x3ad90519,0x3b68af2b,0x3bd5c02e,0x3ba3d3f3,0x3b45dbab,0x3b68c0f6,0x3b04e24d,0x3afe424e,0x3b35712b,0x3b84a5b2,0x3b78eb9c, -0x3b98604c,0x3ba6605c,0x3b0b3dc0,0x3b192f9f,0x3b2f7ff5,0x3adb4865,0x3a7ca552,0xbb1ed998,0xba825fc2,0xbb802593,0xba71d200,0x3a6fac63,0x3b134feb,0x3b91d3a9,0x3bc6e1af,0x3c0d4d77,0x3c463cac,0x3c38b776,0x3c1c4633,0x3bf2b70c,0x3c16e10d,0x3c0a3ae0,0x3bb7e41f,0x3bab09aa,0x3b9a16bf, -0x3b530bde,0x3bb6d567,0xba63b9a9,0x3a8dc660,0xbaaaaec2,0x39462717,0x3bbcf740,0x3afd4678,0xb9aa41a4,0xbbabd404,0xbb8dae76,0xba93f64f,0xba2194a8,0x3bced18d,0x3bbcf323,0xbb2c6cf7,0x3ad3bd6c,0x3ad56209,0x3b31b20c,0x3b378465,0x3b0afccd,0x3b9253dd,0x3c0ffc38,0x3be7c502,0x3bb1e4eb, -0x3b18ab1d,0x39c12145,0xbba422f1,0xbb26336c,0x3b30815d,0x3c704b4f,0x3c2ecc18,0x3c43063e,0x3c6c27e4,0x3b6077c6,0xba80f3aa,0xbb083a64,0xba2cd68a,0x3bfe89fd,0x3bc43edc,0xbb08c5be,0xbb2f2f44,0xbc1f5cf4,0xbb631ceb,0xba23356b,0x3b61c332,0x3b551499,0x3ab1eb87,0xbb36275e,0xbaf74c6e, -0x3950b9ef,0x3b0387f7,0x3ade11e5,0x3a9163c3,0x3a04852a,0xba801cc8,0xbb6297bd,0xbb22809d,0x3b5aed39,0x3b7ea340,0x3bd9b374,0x3b0aab20,0x3ad86b7b,0x3aea135a,0x3beb0fbe,0x3bb9afa7,0x3a9a169f,0x3940c2b0,0x3a34c00b,0x3ba617d8,0x3c2363d9,0x3c48415e,0x3c04d355,0x3bf8fef5,0xbbcaceca, -0xbaee9b95,0x3926ad57,0xbafbfa61,0xbb5a2b62,0xba4d436a,0x3a9175a1,0xbac64865,0xb7c00d8e,0x3a1f2fa5,0xb9bf6274,0xba7600a9,0xba63c207,0x39d38bc8,0x3a3450f2,0x3a447689,0x3ac81a17,0x3a4834c9,0x3ab213be,0x3ae4cada,0x3b490b39,0x3b825513,0x3b9cbf10,0x3bc113c1,0x3be3a62d,0x3bd11e58, -0x3c078480,0x3c0194e2,0x3b96606b,0x3c0812ac,0x3c2da7f0,0x3c1f7c63,0x3ba1b3d2,0x3aedd14a,0x3b1f1be6,0xbbb86bcb,0xbb9f7f8a,0xbbb05692,0xbb8fa83f,0xbac4292a,0x39972372,0xb8b20134,0xba04f8ea,0xbb61a227,0xbaa6c41d,0xba152e33,0x3a19b55a,0x395533b8,0xb9a6e5b3,0xba288ed3,0xb9b10a27, -0x39fd05d3,0x39e1efc4,0xb830f483,0xb9b4082e,0x39ea5c98,0x3ad1cd9b,0x3b264687,0x3b482620,0x3be4782a,0x3c144ac9,0x3c224dee,0x3c1dcf57,0x3c17063c,0x3c21a656,0x3c3f2bfa,0x3c4758c7,0x3c302079,0x3be45663,0x3bab2967,0x3c2510ff,0xba7a2741,0x3c40a4be,0x3b9a2a85,0x3b81e61f,0x3b5941f7, -0x3b8b5cc4,0x3b1af867,0x3a8f0a21,0x3afc5030,0x3a858088,0xb95c86c1,0xba9fe491,0xb84abf47,0x393881b8,0xb98da650,0xb997ffb0,0xba9f5d08,0xbb4a5b18,0xbb2bdc5d,0xbb5ee23d,0xbae01db5,0xb9c92f61,0x3a61ae7b,0x3b06f945,0x3b3ce06f,0x3b7f96b3,0x3bbe68d3,0x3be46492,0x3bec189b,0x3be7c4da, -0x3afb9130,0x3ae547b4,0x3bb18d6f,0x3c479210,0x3c887dd7,0x3c92ecb0,0x3c6aa17f,0x3ba2f0d3,0xbb839606,0xbc06d934,0x3a468e94,0xba5d2aa2,0x3aeb6b16,0x3b0e3eb7,0x3ac95829,0x3ac35529,0x3b219bac,0x3addf87a,0x3b1e9384,0x3a5c66a4,0x385f1c76,0xbb0c7a9c,0xbb4107d6,0xbb0d62f3,0xbabe14ff, -0xb792dd50,0x3a40b391,0x3abc4235,0x3a670911,0x3aa85f4d,0x3b0f4e2c,0x3b697c1f,0x3bbe7703,0x3c0019f3,0x3c240619,0x3c6798d8,0x3c5f2df8,0x3c5e9c6b,0x3c79fd44,0x3c841d16,0x3c5ec974,0x3c2bd04d,0x3bce43a4,0x3c12498c,0x3b987b05,0x39b06470,0x3a911816,0x3b45cd67,0x3b4d9ccc,0x3b8b1937, -0x3b40f4a1,0x3b459ced,0x3ae4d8fd,0x3a7583d7,0xb98c35b7,0xbaa18de5,0xbafcc264,0xbadb3aab,0xbad58961,0xbae1444a,0xbb25a8b0,0xbb35509e,0xbab0f727,0x3a137748,0x3b114457,0x3b2876cd,0x3b6f2a41,0x3b7fae2e,0x3b5d8fcc,0x3b31cdbe,0x3b1ba0ca,0x3adc86b6,0x3b18ced4,0x3b806799,0x3bf85509, -0x3bf74575,0x3c12ab7d,0x3c1e6e1a,0x3c1f63be,0x3b46bc92,0xbb60f66b,0xbac237b8,0xbb055a11,0xbb4b8799,0xbaa93991,0xbb13a889,0xbad58d2a,0xbabae5bd,0xba9b03e0,0xbab88175,0xbafd6bbe,0xbb1633bb,0xbb15a9ce,0xbae8e6bc,0xbb02eb92,0xbb0311e5,0xbaeffc08,0xba9d0d7b,0xbab0fa97,0x3a2c3982, -0x3aa6e230,0x3aedc794,0x3b0d0436,0x3b06f4b3,0x3ada05cb,0x3af39594,0x3aebba62,0x3b064056,0x3b4c49da,0x3b8966ee,0x3bc3e8ae,0x3b99807c,0x3b668a13,0x3b6764fd,0x3aa364b9,0xb91bf057,0x399244a4,0xbb5cf504,0xbb4feb00,0xbbb14d09,0xbbb6f9e0,0xbb9ad964,0xbb7f8c2b,0xbb86c9c6,0xbb4a9b37, -0xbb55cb4e,0xba69db8a,0xbb08a83a,0xba6346c2,0xbb0684a6,0xba812064,0xba83c10d,0xba105989,0xba6e9bc5,0x3a0bc778,0x39ed59a1,0x3a5caa9e,0x3abe6487,0x3a925ee1,0x3a93c064,0x3aa57631,0x3b0a6a57,0x3b41befc,0x3b6ba974,0x3b6bf1e5,0x3b564b53,0x3b4fc552,0x3b218cf9,0x3b0ecc7d,0x3adcac5a, -0x3a712702,0x3a6306db,0x3a044163,0xbb0072a3,0x3a3294c7,0x3ab1a5ed,0x39424762,0x39f92fe3,0xbb180324,0xba2a26a8,0xbabb2cf8,0xbacfbc51,0xbaf5da53,0xba8964fb,0xbabb8d12,0xb8f8a47b,0x38385047,0xba2eeb83,0x3a7eb7bd,0xb5e269f2,0x3a15de23,0x395bdca5,0x3a0f6fc8,0x39ea8227,0x3a4e3db8, -0x3a837911,0x3a85a558,0x3aa1c1bc,0x3ab5d510,0x3aeca605,0x3b300c7d,0x3b6c0a9b,0x3b9ba021,0x3b77098a,0x3b403c12,0x3b07b564,0x3ad2321a,0x39124d60,0x39ce1b8d,0xb98603dd,0xbb27a8d4,0xbb90a37a,0xba7d010a,0xbb0c4ab8,0xbb8f0264,0xbb950fa6,0xbb8e35d0,0xbb84c32b,0xbb86600e,0xbb8fe449, -0xbb90b5c9,0xba81e13f,0x3a05a6c9,0xbb619398,0xba8f776d,0x39e5f015,0x39bde2cb,0x39efad07,0x39f9b217,0x39fceab2,0x39f008b0,0x39dff483,0x39f8020e,0x3a3ad071,0x3a6acbfb,0x3a897690,0x3a859c7d,0x3a595c34,0x3a5f9a1d,0x3a219f82,0x3a22619f,0x3a05b265,0x39a8ba05,0x38f82846,0xbb518561, -0xbb0b5941,0xbb7c111d,0xbab3e304,0x3b2a5ebb,0x3b960864,0xbae0c3cf,0x3acb2c98,0x3ba51cfa,0x3ba52355,0x3ba8c4aa,0x3b93dcf0,0x3b9d0f56,0x3bbc58d5,0x3b97fc0c,0x3aed4cfd,0xba8af723,0x3b96b78f,0x3b136051,0xba804efc,0xbb7cd4a0,0xbb3e064e,0xbb4c3cf3,0xbb4bde1f,0xbb47a254,0xbb39e7fd, -0xbb19067e,0xbb229362,0xbb262cd2,0xbb314360,0xbb38daf6,0xbb37788d,0xbb46036d,0xbb409076,0xbb31dcf9,0xbb0ce16b,0xbb17fc20,0xbb20aa52,0xbb724834,0x3baddaaf,0xb989775f,0x3b2b8c23,0xb91c7a4e,0xb9003b87,0x3ab902d2,0xbaaa1cd4,0x38ecccb0,0x3a38c51c,0x39e83ee2,0xba463ac6,0x3a4ee9b0, -0x3b861542,0xb9f5a4ea,0x39b354ff,0xba8c5067,0x3a85cf39,0xbb80a453,0xbb8f83db,0xbb90efd1,0xbb99b62c,0xbb7b6b37,0xbb4cdce9,0xbb144edd,0xbb3e2cb1,0xbb59919a,0xbb7c1d6a,0xbb7104e6,0xbb7cfca9,0xbba63e7a,0xbba0e829,0xbb8f5720,0xbb2b2989,0xbb17b438,0xbade0f5b,0xbb1bfb6a,0x3b0670cf, -0xbaab153b,0x3aed59a4,0x389943bf,0x3ab09eb5,0xb96fc374,0x3a518584,0xbb217908,0x3a66279d,0xbb328552,0x3ab2497b,0xba5bc285,0x3a756e40,0xb9e6acda,0xbafdf452,0xba6241ed,0xbac000ed,0xbb73ecc2,0xbbd851aa,0xbbb68f30,0xbbd2379d,0xbba2bf53,0xbb7bbc43,0xba9046fa,0xbb0b69fb,0xbb298b0a, -0xbb8614f4,0xbb7c7eae,0xbb93cad1,0xbbbb5172,0xbbad8f77,0xbb7df16d,0xba442e6d,0xbaa40fd6,0xbaec591c,0xbb2a2013,0x3b82685d,0x3b0a430e,0x3b009b65,0x3ac4bd17,0x3a8ae4f4,0x3ab11a42,0x39fca9b2,0x3a7f4f12,0x3b01c5ff,0x3a2c4f69,0x3ac66c43,0x389413d0,0x3aee810c,0x3a33ba8b,0xbb1c91bd, -0xbb1345ec,0xbae1aad7,0xbb4e026e,0xbc036835,0xbbdfae1b,0xbc030b80,0xbbbe5f8b,0xbb87b6d9,0x39e088bd,0xbb1517a0,0xbb458e87,0xbbb5c3e6,0xbb85494f,0xbbb21562,0xbc0dec45,0xbbf6039e,0xbbb9a02c,0xba95713a,0xb99add6a,0x3a9ed91d,0xbada472c,0x3b49e029,0x3a6f8ff4,0x3a0f2675,0x39e4eb93, -0x3ad80a46,0x3b733027,0x3b5a3b28,0x3b6dcc03,0x3b5ecc0d,0x3b0754f4,0x3aee1675,0x3b045c1c,0x3a2ba06c,0x394afbfe,0xbb1a504a,0xbb8ae316,0xbaa20715,0xbbc2f5a2,0xbc181ce7,0xbc0f312c,0xbc1ff9fd,0xbbe23cb3,0xbb813837,0x3ac9d1c8,0x391b57c4,0xbb0d92a5,0xbba27b68,0xbb9e3b76,0xbbb58c07, -0xbbe6f733,0xbbd6d09e,0xbb368621,0x3b0bed82,0x3aec5497,0xbc4a5563,0xbc461b9c,0xbb05c181,0x3ac28e23,0x3ba19154,0x3b72d630,0xbaa08625,0xbbab527c,0xbbb6347e,0xbaf168ad,0xba1a5e0f,0x3bbe783f,0x3bac57af,0xbb1a0b4f,0x3a8b0ce5,0xb9a21632,0x3b7a5fea,0x39f88f2b,0x3aad427d,0xb9ffe56e, -0xba8d9eb2,0xb9b1124c,0xbb09f255,0xbb1769c1,0xbbb7ddc0,0xbc1c5976,0xbc3faf6b,0xbbf2ad13,0x3ae227e0,0xbb287a38,0xbb8c2e62,0xbb90a6e0,0xbc488786,0xbc798c5a,0xbc52681b,0xbc6eb0ab,0x3a9d6378,0x3b2d1a0f,0x3b4eeb4d,0xbc090287,0xbbff3f44,0xbbf69baa,0xbaebdc99,0x3b1d19a1,0x3b333768, -0x3abb31be,0xbb4853b9,0xbb1b10c8,0xb95c3173,0x3aa126d4,0x39d1c854,0xba9c3773,0xba83d2b4,0xbafd2d68,0xb836f0a2,0xbb2ec6b1,0xbbbeebd5,0xbbbeb31f,0xbc0fd6df,0xbbebbe7b,0xbb89a6cc,0x3acd7c1c,0x3be304d6,0x3b8f74ad,0xbb0d69fb,0xbb7ce344,0xbb0d909f,0x3ba445ff,0x3bf06e8d,0x3c16609c, -0x3bae205b,0x3b75ab9b,0xbc23761e,0xbc11dce6,0xbb57d0c3,0xbafb4c5f,0xbba6fb22,0xbaab3e19,0x3a32b994,0xbb2c7c37,0xb9fc9dbe,0xb9bc0d8e,0xb9b2ee2e,0xbac35365,0xbabc35b5,0x39678ca0,0xba859e56,0xb80ffae4,0x3a820d2b,0xb997efb4,0xb96f046d,0xbb6f6bce,0xbae9cc4a,0xb9bc0613,0xba7cefcb, -0xbb6c1edb,0xbba39432,0xbbc21cbd,0xbb93db57,0xbb2a3607,0xbb68a947,0xb9b68ae2,0xbb3a6a14,0xbc12a198,0xbc31efab,0xbc469470,0xbc14510c,0xbc2214ed,0xbc245467,0xbc0889f5,0xba4dd8ec,0xbaebfbc4,0x3a1dcebf,0x3a314242,0xb99b4973,0xbb87e4d5,0xbb0c9a6f,0xba976683,0x37cebfc5,0xb916e54b, -0xb9edf77f,0xba8ecaae,0xba4bacd0,0xba4bccc0,0xba0e51c1,0xbac3b4b6,0xba32f674,0xbaf467aa,0xbb2d9d2b,0xba9440b9,0xba62cae3,0xbb0157f0,0xbb3d98ae,0xbb864b78,0xbbaf431f,0xbb5402e8,0xba0e4a20,0x3acefb69,0xbb213d6b,0xbc48077c,0xbc7dbcc9,0xbc8ccf40,0xbc444033,0xbc2c65ca,0x3af1ab61, -0x3bf22998,0x3b5f8dd7,0x3b4bde5a,0x3b94c305,0x3948ebc9,0x398a0a32,0x3b132639,0x3a0e9472,0xb93979cd,0xba9afe5d,0xba1cacae,0x38a3ad93,0xba559394,0xba1930d8,0xba9c6587,0xbb4e7735,0xbb77fec9,0xbb483aab,0xbb8d4e48,0xbba78199,0xbbc2218e,0xbbcc318b,0xbb4a1b10,0x386b2cf0,0x3b62f04f, -0x3b89d0c2,0x3b7c8791,0x3b7b273d,0xba95dccc,0xbb21ac1e,0xba8c24c9,0xbb597cb9,0xbb67321d,0xbc1b81e6,0xbaaad473,0xbc8e4dc8,0xbc055700,0x3aa92631,0xbb1765af,0x39950bef,0x3adb5f61,0x3ad215bb,0x398e0fcf,0x3ab155c2,0x3ad8e1c7,0x3a669536,0x3ac54660,0x3a104884,0xb9336ece,0xbb14f6a9, -0xbb67bcd2,0xbb57c41e,0xbb2f725e,0xbabef2f6,0xb8e2990d,0xba37c2e6,0x3ac76f15,0x3a1bf1ca,0x3a995123,0x3a6e504d,0x382e988f,0x3ac55b2d,0x3b0c7cd8,0x3b52637f,0x3b5d533b,0x3afd4724,0xba58f8f6,0xba80a023,0xbb843343,0xbc1d611a,0xbc444d6b,0x3a81f174,0x39e3e50b,0x3b6bd2e4,0x3b3d08f8, -0x3b836142,0x3b8e6dfe,0x3b893bb1,0x3b68616e,0x3b2ed47b,0x3b00a17f,0x39a56762,0xba25213b,0xbafe8dff,0xbb246de4,0xbb175251,0xbb14286c,0xbb1e8c95,0xbb4ef42f,0xbb07c356,0xbb23424c,0xbb06ac4a,0xbadb09a8,0xbad0f146,0xba41fd90,0xb969ff63,0xba0de0a3,0xba3d152f,0xb9cb1e0a,0x39cfd44d, -0xb95b4ce9,0xba92c6ee,0xbb47e87f,0xbafb4086,0xb988b047,0x3a600d8a,0x3aea1332,0xbb969284,0xba6c5ae0,0xbb196545,0xbb07efbf,0xbb455ceb,0xbb70f792,0xbb118535,0xbaff2584,0xbab64b3e,0xbac34eb5,0xba8f5ddd,0xbaec4ac3,0xbae666da,0xbb390b60,0xbb28dc72,0xbb1952e9,0xbae9ab84,0xbb0f26f7, -0xbb25a28d,0xbaaacf28,0xbb246588,0xba94eb58,0xba4fac75,0xba2948c0,0xba723ab6,0xbaa046ba,0xbadd3e4f,0xbb03f614,0xbaf049ee,0xbaf47a56,0xbb10b8ba,0xbb50f2e4,0xbb0352b5,0xbab7c03a,0xbabd0189,0xbafdef58,0xbb622669,0xbb924597,0xbb0a49b6,0xbb91288e,0xbb8ae100,0xbb70409e,0xbb85fa7e, -0xbba0558a,0xbb8eba24,0xbb883e6f,0xbb4d64fa,0xbb87bdee,0xbb22bfe0,0xbb4d14c3,0xba9c7b6e,0xbb1a65b0,0xbb0dc99f,0xbafcfd46,0xb9ddad4c,0xbb2f33a1,0xbb0df054,0xba81234a,0xb990126d,0xb8d53751,0x3903c25a,0x3a27183c,0xb91a8cee,0xba178d4b,0xbabc019d,0xbaf2b51a,0xbb18421e,0xbb355a85, -0xbb3bdd86,0xbb4412a9,0xbb3e76ce,0xbb39eadb,0xbb09e2a5,0xbb232093,0x3a49f359,0xbaeec1a8,0xbaa8239a,0xbaf7ad8e,0xbb497ac8,0xbae552a1,0xbb3d85d9,0xbadbe49f,0xbaada24c,0xba98f011,0xbb14b7e3,0xbace3aba,0xbb03ab31,0xbac04a09,0x38a567e7,0xbae95f94,0x3a23ac3b,0xbaa1330c,0xba02a671, -0xba77a349,0xba612e4b,0xba2c40ba,0xba06d11b,0xb9d1c7f4,0xba419d45,0xba6b187b,0xba92da14,0xbab2708f,0xbad2c5cc,0xbb0438bb,0xbb0bc56e,0xbae454eb,0xbb0b14b0,0xbb2777b5,0xbb46af5c,0xbb6bbebf,0xbb1b51bb,0xb9b6d5e9,0x3a467e65,0xbb4dd118,0xbab1a6c2,0x3a080e7e,0x3a90fc03,0x3a694005, -0x3a4fbec4,0x3aa569fc,0x3b07226b,0x3b144026,0xba416ff6,0xbb31df09,0x3ac1de9c,0xb9912877,0xbb0c4525,0xbb3d00e0,0xbb2d78bf,0xbb26026b,0xbb1d4226,0xbb19649c,0xbb1349b7,0xbb0a0bbe,0xbb12429b,0xbb1dc720,0xbb2836c8,0xbb3400f5,0xbb35ab07,0xbb3eb61a,0xbb443b6c,0xbb422b5a,0xbb47cb56, -0xbb47d99d,0xbb87e38a,0x3b00f661,0x3b0081ba,0x3b64727e,0xb65e25b7,0xbb5ea3db,0xbb6f78eb,0x39986ba7,0xbb2b7e6d,0xbb8fde70,0xbb9c7dfe,0xbba03369,0xbb88292a,0xbb89d548,0xbba25845,0xbb88adc2,0xbb36b8b0,0xb9c378f6,0xbb8ba3a5,0xbb68c3ff,0xba8435cc,0x3b292739,0x3acd380d,0x3aea1a92, -0x3af20728,0x3b0d1d54,0x3b172444,0x3b23db6e,0x3b151922,0x3b0ebb08,0x3b003576,0x3b041af0,0x3afe4866,0x3af0807d,0x3ae11b4b,0x3ae2bbf9,0x3aecf980,0x3b03ae89,0x3b337a46,0x3b0e3ce2,0xbba48c2d,0x3a5923b2,0xbac80508,0xb88a00a0,0xba52b654,0xba366acf,0x38fae24d,0xbacdfb73,0xbad7d415, -0xbaa241e9,0x3a104d51,0xbaa659cd,0xbb4549c2,0x39d47fa7,0xbb0ed2ad,0xba6f4c96,0xbb69cee2,0x3a434095,0x3ac64e20,0x3ab02a25,0x3af68dd0,0x3b23f45e,0x3b4e2b3e,0x3b8ad433,0x3b5e16e1,0x3b4ca8e1,0x3b33f934,0x3b63020c,0x3b467532,0x3af80844,0x3aa9b945,0x3aa54a8f,0x3ad97e0d,0x3b0b2d68, -0x3b8e7eeb,0x3b283b4b,0xbaa4879c,0x3b016409,0xb902de5a,0xb8d69e51,0xbad40968,0x3b0cd9e6,0xbacb5fcc,0x3a2c0b2b,0xbb1b8d3a,0x3b1bcc2d,0xb9a501a5,0xb7c57d07,0x382404f5,0x3a64cda3,0xba646a1b,0xbb0b9361,0xbb3c85e7,0xba6036f1,0x3ac32919,0x3a4aa3bc,0x3b0a9f35,0x3b526cc7,0x3b911d33, -0x3bc946cd,0x3b9a4039,0x3b86f7ef,0x3b4889c3,0x3b7075c1,0x3b52e907,0x3ae9504d,0x3a8052ea,0x3a85eac9,0x3b017adb,0x3b3cccfd,0x3b93ecd8,0x3ab17179,0xbb2051d7,0x3a455f8b,0x3ad8d4ea,0x3a54eca3,0x38898cb3,0x3b20148c,0x3898dd7b,0x3a6501df,0x3a331d01,0x3ae1205c,0x3aab48e3,0x3b0165ed, -0x3a8b8cfe,0x3b030bbe,0xba648be5,0xbacf73fb,0xbb6ef430,0xbb3ad4fd,0x3a3a434d,0xb992eeb6,0x3aa71754,0x3b77bca9,0x3bbf04d9,0x3c0b311b,0x3bb830b3,0x3ba4eb21,0x3b744cf9,0x3bbfd3d3,0x3b96f779,0x3aab0052,0xb93fe4e6,0xb98d4dd1,0x3ae4da01,0x3b23779e,0x3be8370e,0x3b8a3cce,0x395d2faa, -0x3b0808bf,0x3b073c4c,0x3a146ceb,0x3ab7300d,0x3b6e83e5,0x3b3d8010,0x3b55599e,0x3b6799f2,0x3b09708c,0x3b345cf4,0x3b077c06,0x3b1f75d3,0x3ac4de7d,0xbb012aeb,0x39a301f1,0xbbc6471d,0xbb21d3ef,0xb9f86d14,0xba0b244c,0x3ad766b7,0x3b86eeac,0x3be470ed,0x3c2d35ca,0x3c0ace41,0x3bc994d9, -0x3b823048,0x3bad505f,0x3b84436e,0x3abdd0b2,0xb9445313,0x3a2c200b,0x3b503128,0x3b9744a7,0xbb894314,0xbb2e4856,0xbbea299a,0xbb7f7478,0x3b50b937,0x3af88f30,0x39eaf2c1,0xbbafec70,0xbb979ebb,0xbabb18d0,0xb99bcb50,0x3bb58061,0x3ba3cec1,0xbade7b6f,0x3a3596db,0x3a5cd259,0x3b2c9b63, -0x3b7d6bbf,0x3ac9d45e,0x3b8b3c8e,0x3c181b72,0x3bf28d57,0x3bed2864,0x3ac4baa0,0xb9d7c37f,0xbb822e44,0xba3b9a9a,0x3ba68b67,0x3c6fc95e,0x3c22f35c,0x3c175156,0x3c0bfc15,0xba3476e3,0xbb612890,0xbb6884ce,0xbb532f2b,0x3c3b3234,0x3bed4207,0xbb582b1b,0xbaf8d75e,0xbc2a25c4,0xbbc65398, -0xbb521274,0x3aae501b,0x3b410f4d,0x3ac812e2,0xbb26a3d1,0xbb193356,0xba18f451,0x3ae76c10,0x3a30189d,0x3a223aaa,0xba718a4e,0xba1190c5,0xbb4035f3,0xbb5c5a7c,0x3af1dde1,0x39fac1a5,0x3b21f59d,0x386e71ea,0x3a361783,0x3b5b644b,0x3bca8443,0x3b86867b,0xb9921f0b,0xba8a2a5e,0xb9ef359e, -0x3b918f10,0x3c007b3f,0x3c13a623,0x3b731d14,0x3bd37a15,0xbbeb1068,0xbc279032,0xba51667f,0xb9761657,0xbba8fbfe,0xba0d129e,0x3a309a69,0xbb174ea6,0xba13ce90,0x38c8fea7,0xb8a6b278,0xba3ed221,0xba79952e,0x38438da9,0xba308609,0xb9b5edb6,0x3a410c4a,0x38924d79,0xb986e572,0x39d4d766, -0x3b343a3d,0x3b2f66b9,0x3b455684,0x3b66e350,0x3b8da09f,0x3b77963d,0x3bc6f2b2,0x3bc514ec,0x3b58b76b,0x3c1e294a,0x3c1a1454,0xbab313fd,0xb9e808f6,0xbb2a14d3,0xbae94cce,0xbbcaba78,0xbbf3ef45,0xbc145249,0xbb71c5b3,0xb96e8d76,0xba09ac0c,0x3a9b5d34,0x39c0ab0d,0xbb69092a,0xbaf58307, -0xba70bfb3,0x3986b11e,0x3a0512ec,0xb8428d86,0xba71cc23,0xb9af9383,0xb9b38a39,0x393042a0,0xba19ce37,0xbafb8781,0xbafcaeb5,0x3ae70ec4,0x3aebec9f,0x3b07f7d6,0x3b9bae98,0x3bba82ee,0x3bacab90,0x3ba71383,0x3ba1c8e2,0x3bbdd3ea,0x3c24c6c4,0x3c14b2a9,0xba4718de,0xb9ae5fcd,0xbaf65158, -0x3aba9e3b,0xbb8726e8,0x3c2387e1,0x3c101b1e,0x3b9c761b,0x3b7721e2,0x3b839633,0x3ac0d85d,0x3a1b5ba4,0x3aea9148,0x3aa5aa55,0x39b689b0,0xbaa35a0f,0xb94fc2ee,0x38812c0d,0x393e679e,0xb98807dd,0xba9cd2ab,0xbb517820,0xbb388733,0xbb77f624,0xbae07e19,0xba6efb6e,0xb9ea8584,0x39e879bd, -0x3ab9cb1f,0x3b1ab786,0x3b9599e1,0x3b8c0cce,0x3b681f1c,0x3ae5cf25,0xbb3439bd,0xbb269cf1,0x3b717d3a,0x3b9839f5,0x3beaacd1,0x3bfd9a06,0x3bebf3c1,0xbbccdadc,0xbc2ae333,0xbc275182,0xbacfdc42,0xbadf3880,0x3a1ffd3b,0x3a657dc6,0x3aa0d5d6,0x3a7bacfc,0x3b0489cf,0x3a8a86af,0x3ac0a913, -0x39f27bc5,0x3a21e996,0xbb0f526a,0xbb4b7bc2,0xbb16a2e3,0xbb568ef2,0xbb29d564,0xbacd78d8,0x39a1e9a6,0x39b116db,0x3a8f19f7,0x3ae155f8,0x3b3e9670,0x3b8ee68a,0x3bb4466f,0x3bd92790,0x3c1042ef,0x3c211248,0x3c1ba213,0x3c0a0dec,0x3c10fd3f,0x3ba4a170,0x3a0d3202,0xbb9b4946,0x3be3e342, -0x3b84610c,0x3aa9fb0e,0x3b164a20,0x3b7a1cb7,0x3b7e54a3,0x3ba006b0,0x3b71e9aa,0x3b85bbf8,0x3b125bba,0x3afed1fc,0x393959e3,0xba5ae42a,0xbafa3a4f,0xbb081e06,0xbb12c049,0xbb024083,0xbb1c44ef,0xbb37ffd8,0xbac4a811,0x382889cc,0x3a8acc0f,0x3ac2ae76,0x3ad1746d,0x3ad15f48,0x3a914d21, -0x3a8b027e,0x3ac1a17a,0x3ab37b1a,0x3afb1145,0x3b474c68,0x3bbbfe17,0x3bc5d5b4,0x3be20cbf,0x3bf69293,0x3bf6a5e0,0x3b113680,0xbb8851e4,0xbb2cd6b5,0xbb118b83,0xbb526b07,0xba2dd20a,0xbae9f2c6,0xba519211,0xba6b9f79,0xb9aca6c7,0xba8687e6,0xbaa37846,0xbb129dc9,0xbb25a43d,0xbb1aecf4, -0xbb20158d,0xbb38a43e,0xbb342dac,0xbb0d4ace,0xbb35ebbd,0x38799f34,0x3995750d,0x3a7e174d,0x3a6709ae,0x3a4af8f7,0x39f18025,0x39c11447,0x3967abc1,0x39b2f189,0x3ab51899,0x3b11b34b,0x3b693527,0x3b659156,0x3b5d7b22,0x3b7362e2,0x3a77cf3d,0xba26b023,0xba79cbcc,0xbb97b098,0xbb86671c, -0xbbcbd944,0xbbc869a4,0xbba3221a,0xbb6d5d46,0xbb8cb144,0xbb5bcd4f,0xbb9418eb,0xbaf5061c,0xbb38ded1,0xbb0a7b38,0xbb3c11d9,0xbafff356,0xbafe6515,0xbad88c7f,0xbb3305ef,0xba76ffd3,0xb8b4a0ef,0xb8eb37b2,0x3a4cdc2a,0x3a0ef149,0x3a36be09,0x3a6c5b4b,0x3a9e6c78,0x3ac2acc1,0x3ab344da, -0x3acdd780,0x3abbedf6,0x3ad01a20,0x3a952420,0x3a3000ea,0x3a32ab58,0xb8ce9695,0xba3993d7,0xba7dac33,0xbb6a3daf,0xba335a28,0xba053163,0xbadd956c,0xbac72322,0xbb798153,0xbb088034,0xbb4d5a28,0xbb4b508f,0xbb6938ae,0xbb2a31ff,0xbb415bc3,0xbb190da4,0xbb0a7854,0xbb21f2a3,0xba364e32, -0xbad4fc22,0x39292f0e,0xb91cd92f,0x3909284d,0x39176b93,0x39ff4419,0x3a4b16f8,0x3a6dc46b,0x3aae210a,0x3ae02aa6,0x3b05afe9,0x3b26c866,0x3b3b3398,0x3b56af3c,0x3b198a16,0x3ae73c8a,0x3a4d45ff,0x38831b8f,0xba153658,0xb9e53068,0xbb15cc24,0xbb8c8b63,0xbb9663db,0xbb3372aa,0xbb822b66, -0xbba3960b,0xbba92082,0xbb9ea251,0xbb90cc32,0xbb921edb,0xbb99b7a7,0xbb98ccf0,0xbb4980d9,0xbaabeffd,0xbb6e2657,0xbb474ef7,0xbabebe2e,0xb9139d93,0xb97f7de4,0xb92c2d8b,0xb8d16460,0xb88e4d19,0xb86313b5,0xb683f433,0x383fae9d,0x37c1fe11,0x385116ad,0xb7aaaeb8,0xb82e6b60,0x38112501, -0xb955b92d,0xb980a1fc,0xb9c58404,0xba00a8f8,0xbaaafcb8,0xb94daac8,0xb95377b2,0xbad54bc7,0x3afbf2d3,0x3b7bcfab,0x3b25c538,0x3a9b0c41,0x3b435f05,0x3b69a503,0x3b51e032,0x3b404f53,0x3b1397fd,0x3b26212e,0x3b4380b1,0x3b1d738c,0x3b5dd1cd,0x3b0249ac,0x3b074672,0x3b526892,0x3ae01596, -0xbae82e84,0xba59aa18,0xba4b6092,0xba4e5b4d,0xba227351,0xb9eda65d,0xb8cd3ecb,0xb9a406de,0xb9cb6359,0xba2161eb,0xba0404ed,0xb9f408f6,0xba23de39,0xb9f3f45b,0xb9bc4b49,0xb956eaac,0xb9848df8,0xb9f2abb4,0xb9972942,0x3baa25c4,0x3a8541dd,0x3b524bf5,0x3aa17c57,0x3acc149b,0x3af04d97, -0xba3e5141,0x3aa5077a,0x3a875664,0x3b0aa5ce,0x3a7598ae,0x3ad9a199,0x3b6d15de,0x3adcb86d,0x3af57707,0x3a128d9a,0x3b13a3c5,0xba256a3c,0xbae758d9,0xbaa06be9,0xbaa22907,0xb9b344c8,0x39bcfb24,0x3abcf5da,0x39a9bf7c,0xb8e1c49d,0xba392b46,0x3918d252,0x38238216,0xbaa2f5de,0xba26ddc2, -0xb9caa772,0x382ac247,0x39cdd029,0x39833cba,0x39e3311b,0x3b73c9c8,0x3a65a4e7,0x3b62e77b,0x3a8ad3df,0x3aed6357,0x3a4a935c,0x3a9eb740,0xbaff7136,0x3ad98659,0xba7a02b5,0x3ae0d6b0,0x3a8e5f2b,0x3b138cdf,0x3ac2b266,0x3a3616b3,0x39d3eff9,0x39bc37ea,0xbade15ad,0xbb50c98c,0xbac9f267, -0xbaed7859,0xb975981a,0x3a18a94a,0x3b460165,0x3ab1461b,0x3a49c36e,0xba287ce9,0x3a0776d1,0x39fe5a77,0xba65436b,0x398e50ba,0x3a3eb713,0x3ab09cbf,0x3ab36c0c,0xb9e6e986,0xb9a1ce80,0x3ba49a70,0x3b5039a9,0x3b6935b3,0x3acd476e,0x3a100323,0x3b016c95,0xba28e8c7,0xb93149d0,0x36aebfce, -0x39d65f10,0x3b2a8373,0x39561f50,0x3b4d606c,0x3b06d32b,0xb89de1ab,0xba1d41e2,0xb9428aea,0xbabea160,0xbb8c0649,0xbb274b7c,0xbb20a589,0x39f0fbd8,0x3b1ef82a,0x3bcb9e0a,0x3b14c6d1,0x3ab4fa89,0xba871e17,0x3af95840,0x3aced0ae,0xbb180ee5,0x39a7a6ef,0x3a300eed,0x3aaa05d6,0x3b2004df, -0x3b31ac83,0x3a2e116d,0x3b9307f2,0x3af09265,0x3b3384a2,0x39c5fcc1,0x3a4a09ec,0x3b439296,0x3b1116e0,0x3b274687,0x3aab28e0,0x3af07ae0,0x3b054329,0x3af0ce27,0x3acf2615,0x3ac95362,0xb9d93596,0xbb55a40e,0xb9712631,0xbb84c056,0xbbae73f0,0xbb4026a1,0xbb300ec5,0x39618235,0x3b39df28, -0x3be2e6a7,0x3b8a1318,0x3ae6e283,0xba90df60,0x3ac15cbe,0x3af9356d,0xb99a5dfd,0x3b119c47,0x3b654187,0x3b65a0fe,0x3b817273,0xbc12b54f,0xbc0162a4,0xb8cfee41,0x3ab884e4,0x3b8db81c,0x3b872500,0x3a2244a2,0xbb8af7ac,0xbb97a93d,0xbacea229,0xb97c37cf,0x3bacf6c7,0x3b86629c,0xba98dafb, -0x3a173a1e,0xba385798,0x3babf515,0x3b238704,0x3ba7df2a,0x3ba50748,0x3b8462cd,0x3b24b684,0xbaa41fdb,0xbb29f83e,0xbbbb3c5d,0xbc253508,0xbc132cb0,0xbb63a103,0x3bbb536c,0x3af52c79,0x3aa8934c,0x3b4a1ebb,0xbba55d9f,0xbc018b89,0xbbe5ea5b,0xbc1772f8,0x3b2a1074,0x3be3090a,0x3bf16eaf, -0xbb99dc15,0xbbbc2fc2,0xbbf0dc11,0xbb714665,0x3aaa273c,0x3b0d31bd,0x3ad3135e,0xbb174e93,0xbb35e6cb,0xba732b5f,0x3a9396f8,0x3927942f,0xba81ff3e,0xba6e284d,0xba10f8f3,0x3a7b929d,0xba28144c,0xbad622e2,0xba4e5556,0xbaec49b8,0xbb2da07f,0xb9fe2473,0x3bad541f,0x3bf153ca,0x3b7018b4, -0xbb11a761,0xbb1bab4e,0x39b41974,0x3bdd5c51,0x3c2ccb2e,0x3c24cd73,0x3ac621cd,0x3b6734c5,0xbc196a59,0xbc624efc,0xbb235dbb,0x3a233ff3,0xbba3832f,0xba11b1ee,0x3a4e78eb,0xbb18e5ed,0xba0bbd80,0xb9fec130,0xb7a4740a,0xba78fad1,0xba89dfc4,0xba026bd0,0xba3eeadc,0x368a70d5,0x3aadbc99, -0x3a60e8f2,0x3a8f0f7f,0xbadc9fef,0xb927b391,0x3aac7289,0x3a3f62be,0xb9a87692,0xba998196,0xb9f15baa,0xba314e96,0xb9476be0,0xbb53d0f1,0x3b4f0620,0x3b4966f9,0xbba19233,0xb81b19ca,0xbabc5876,0xbb4d9d0e,0xbbc42052,0xbbeb13fb,0xbc2d7772,0xbac4ed4d,0xb93e0039,0xb9b263c5,0x3b182944, -0x3a966f93,0xbb672a28,0xbb0e5849,0xbaacac01,0x38862b7d,0x39c1f4d5,0x38751fa2,0xbaa77177,0xba23cd5f,0xb8e4154a,0x3a002276,0xbaa3fe6c,0xb9c0b8b9,0xba46a35c,0xbaf38664,0x39880d0b,0x39a7ce9d,0x3a98a97c,0x3aa7b6d5,0x3a848c07,0x39c0e4da,0x3a9e1a79,0x3a911064,0x3bc2952c,0x3b4848fc, -0xbc03e461,0xbb7a704c,0xbb64948c,0x3ab267c5,0xbb68970d,0x3c3316eb,0x3c617244,0x3bf4b551,0x3b81debe,0x3ba1303c,0x39c6b590,0x39afc865,0x3b2a2bd6,0x3a8256e0,0x39fb33de,0xba0ef46d,0xba258681,0x38bd7bfb,0xb80a8069,0xb76fb2ac,0xba2798a1,0xbb2bb23c,0xbb4083cd,0xbb1ee053,0xbb7fe0a8, -0xbb4d0ee5,0xbb2de5c5,0xbaff0263,0x3a425b4b,0x3b336510,0x3ba86cfe,0x3bb18167,0x3b9dc1fd,0x3b8304e3,0xba2e4698,0xba306db0,0x3a78a322,0x3b5ee41a,0x3baf7e89,0x3b80a230,0x3c0e0bd0,0xbc1a8b98,0xbbad5582,0xbb06a524,0xba041f9a,0xb9348072,0x3ac6f869,0x3adaf8ec,0x3a909899,0x3af9bb9a, -0x3af4f92e,0x3a6fce1c,0x3a5f5661,0x398992db,0x3a091906,0xbafe7bcf,0xbb52ad0e,0xbb561b8e,0xbb23d378,0xbab3e741,0xba327b54,0xba808372,0x3a4ab4af,0x39c0b3e3,0x3af0747b,0x3b574698,0x3ba0404e,0x3bd4a514,0x3bf17655,0x3c184467,0x3c0a566e,0x3bdec372,0x3b8ea40e,0x3bc35697,0x3b58b685, -0xbb1d260e,0xbba98312,0x3bd2b48a,0x3bccd9d9,0x3bd7afc7,0x3baf5551,0x3bd13336,0x3bb5b984,0x3ba3dd99,0x3b9b0033,0x3b7ae065,0x3b6c6589,0x3aa2e63e,0x3a42121a,0xba8fbf70,0xbb04793c,0xbb02a240,0xbad943fd,0xbac53aed,0xbb163829,0xbae8b18e,0xbb341c2c,0xbae9e841,0xba76ae15,0xba172689, -0x3a5faa94,0x3aad6c8a,0x3a87418c,0x3a0f5481,0x39e0ba8e,0x396922d4,0x39f16de7,0x3a766577,0x3acc5fe6,0x3ad020f7,0x3b4eb37f,0x3b9d1bd7,0x3bd555ee,0xbab56daa,0xb87c7d64,0x3957467c,0x3959e5ae,0xba166c57,0xbac5cc8e,0xb9870e82,0xb9e7a91a,0x376c9e55,0xba0e029b,0xb9e1b948,0xbac01a09, -0xbad0b77c,0xbb425015,0xbb280336,0xbb200c2b,0xbad65dd1,0xbaeb8199,0xbb0b60b6,0xba9aff4a,0xbb0b05bf,0xba8279c4,0xba38530a,0xb9c03b0b,0xb9dddf7f,0xba40d255,0xba799272,0xba95226f,0xba8aa6ef,0xba361661,0xba01755f,0xb9383cbd,0x3a5929f6,0x3ac6ad1e,0x3ac1450b,0x39a04b63,0xbb16da97, -0xbb38e6f3,0xbad10e41,0xbb61d612,0xbb61893d,0xbb41df1b,0xbb49b405,0xbb66702c,0xbb5c64c8,0xbb5e5a17,0xbb178f58,0xbb4b6e79,0xbb27be2e,0xbb2c1aee,0xbadb79ff,0xbb196755,0xbb19b626,0xbb08b8f2,0xba2a96db,0xbb056f08,0xbb1ec4b3,0xbaaa0291,0xba84510a,0xba4addd9,0xba26f830,0xb8c5af0a, -0xb9a1143a,0xb954ae9d,0xb98d0a5b,0xb924bae3,0xb93fc46b,0xb963a7e5,0xba2eeaca,0xba81b5c6,0xba821d86,0xba9d61e8,0xbaf928ec,0xbb1fccf4,0xb9803dbc,0xbaeffcc2,0xba823fcb,0xbafda5e9,0xbb2fd7f7,0xbb2eb930,0xbb443aeb,0xbae2de38,0xbabf05cd,0xba93cec8,0xbae2870e,0xbaa80824,0xba85014c, -0xba319c1e,0xb862e530,0xba9db981,0x398ee40e,0xbb0938e5,0xbabe4404,0xbac1ee67,0xbaa719f2,0xba7233c3,0xba212972,0xb9bdf526,0xba2371db,0xba190b0e,0xba25d936,0xba10693b,0xb9e19024,0xb91949dc,0xba20fc23,0xba16d239,0xbaaba8dd,0xbafcae1c,0xbb1141eb,0xbb2b218e,0xba87e324,0xb9573256, -0xba5aa712,0xbadb711b,0xba08493e,0xba09d143,0xb95c0b61,0xba0a312c,0xba395406,0xb9dad84b,0x382e3399,0x393b720d,0x3814a7ef,0xbaaacde4,0xb98f408f,0x39343968,0xba6be76b,0xbb21523a,0xbb05d76d,0xbb029492,0xbaf9f981,0xbaf76e5f,0xbaef8be7,0xbadceab8,0xbadbf0ce,0xbad9760f,0xbad97082, -0xbadd6bf9,0xbaddf007,0xbae0b6b9,0xbaff0ca5,0xbb00e2de,0xbb08715b,0xbb0b2f49,0xbb3ef0ef,0xba76742d,0xb8956b47,0x3a00157b,0xbb26379e,0xbb3b06fa,0xb906fdff,0xbb0c7bde,0xbb304a48,0xba9b885e,0xbaa9181f,0xba923e19,0xba4e52bb,0xba10876e,0xb9fbb849,0xba04ad10,0xbb2f785d,0xbb1d2420, -0xb863373a,0xbb2cd2a7,0xbb2d0452,0xb8afaf3e,0xba1df012,0xba239d85,0xba06c748,0xb9891820,0xb8ab5d2e,0x3937234c,0xb8982b4f,0xb96d5a26,0xb9f8ce9e,0xb9f201ef,0xb9f0fa59,0xba2f0142,0xba3c6a81,0xba1fb528,0xb9248665,0xb93b222a,0x39d3effa,0xbaca79e4,0xbb34fa05,0xb9c2cb17,0xba07b99b, -0xbaa1f672,0xbb0cb60d,0xba312735,0xba98c39e,0xbb3165a3,0xbb0ec920,0xbb0e0d0c,0xba4c1794,0xbab06d38,0xba35ad2a,0xba3eca4d,0xbad6318d,0xbad01c2e,0xbb4fec02,0xbb208519,0xbaa1fcae,0xbad4f319,0xbaa20599,0xba05ecec,0x386e8f99,0x3a455ea9,0xb8595b05,0xb9db3020,0xba5f76a6,0xb9a20b07, -0xba295552,0xbb0640c3,0xbb1bb7fb,0xbaf86c9b,0xb95e237a,0xb923196b,0x3af03e1d,0xb9e2f91f,0xbb0d2e1f,0xba4f1d21,0xb90dc3ed,0xbac0ba4f,0xbb15ff02,0x39b120fc,0xbb2194ca,0xbad87b62,0xbb81dae0,0xba04470b,0xb98d5a7d,0xbad9d174,0xb98b5337,0xb88f09a2,0xba96c618,0xbb0180d3,0xbb5fde84, -0xbb317ab7,0xbb07ba4c,0xbb25953a,0xbae80f60,0xb9c2208b,0x3a692d4f,0x3b1e72c6,0x3a63b0ac,0x39361537,0xbaaf6cfb,0xba1c952e,0xba9a3d2a,0xbb34d138,0xbb4b10a5,0xbb0f0426,0x3a5e9690,0x3a1233c7,0x3b0cb61b,0xbadcd912,0xbb30caec,0xb9c79f1a,0x3af29855,0xb83d122f,0xba484ce1,0x3a5b51a3, -0xbabe5f5c,0xba833462,0xbaa35a9a,0x3a6ba396,0x3a4fa191,0x3a6eab32,0x3aa2d9be,0x3af96805,0xb97167d5,0xbafa1860,0xbb81eee1,0xbb8b19c0,0xbb4584bd,0xbb6692c4,0xbb4aa7dc,0xb9e066f3,0x3a8c82f2,0x3b61d153,0x3a245f60,0x37f7bfa8,0xbae79ea2,0x393a73b3,0xbaaca31c,0xbba40578,0xbbb457b4, -0xbb779252,0x3aba78e4,0x3a824281,0x3b9c58b4,0x3aaa9d7b,0xba8d655b,0x393a537a,0x3b04a723,0xba706b73,0xb9350739,0x3b32e4d6,0x3ac489fb,0x3abdc8a1,0x3a935685,0x3af39836,0x3b314d1f,0x3ac72b09,0x3b1c710c,0x3aded74c,0xba38c13f,0xb8417765,0xbbafb152,0xbb95ca10,0xbb8893db,0xbb9c2eef, -0xbb6b1957,0xb9ea49c4,0x3b1d5351,0x3bc239e7,0x3b591194,0x3a378bdf,0xbaeced4b,0xba46cae0,0xbb01f728,0xbb88e688,0xbbaeb4bb,0xbb2640b2,0x3b565330,0x3b3283e1,0xbc1483ae,0xbc092e42,0xbc1a2054,0xbba866d0,0x3ab92ee2,0x3b0d402b,0x3a081ad9,0xbb9122f4,0xbb88296b,0xbab1d788,0xb8d55880, -0x3b86b0ec,0x3b6193e6,0xb9d09be2,0xb9595e22,0xba0f9c84,0x3b318741,0x3b6c9c27,0x3b0e0092,0x3b792664,0x3bcb11b5,0x3b9cd9de,0x3b9ddc56,0xbaa6c208,0xbb630bc0,0xbba9e26a,0xbb329a86,0x3b467b2e,0x3c23fce9,0x3baa5a1a,0x3b17080c,0xba829894,0xbbf31366,0xbc0e332f,0xbbe3992a,0xbc0b2d5c, -0x3c0e46c7,0x3bdf4fc2,0x355a4dac,0xbb04d840,0xbc152680,0xbc051489,0xbb9817cd,0xb99c887d,0x3b03c271,0x3a9dad97,0xbb0b7b37,0xbb2226b6,0xba9c079c,0x3aae46fc,0xb9fe8185,0xb9fb8a9d,0xbb067187,0xb91f0607,0xba32e2cd,0xbb313d44,0xbadcd660,0xbb819d5b,0xbb85adc7,0xbb644f5f,0xba8decc8, -0x3ba1167c,0x3b9ffca4,0x3af2828d,0xbb51e572,0xbb42725a,0xbaa548a7,0x3b95cfc1,0x3bd76576,0x3bd37f7a,0xb7a92046,0x3b36517c,0xbbf66959,0xbc868da8,0xbb78cc60,0x39524644,0xbbd9eee9,0xba4e0675,0x3942ba6a,0xbb145804,0xba5f53db,0xba162a19,0x3915dc9c,0xba1b80e7,0xba7c70ae,0xb9cd01b7, -0xbae918b5,0xba8a0df2,0x39565050,0xb97811ef,0xba70c836,0xbaa8fcfa,0x3a59093f,0x39ad9684,0x390d4265,0xba819db1,0xba98d8ba,0xba9db17e,0x3865292e,0x3a1d328b,0xba35a70a,0x3bcc3d2c,0x3b6c9295,0xbc39a74c,0xbbf4a99b,0xbc0eaaff,0xbbeba58f,0xbbc974e6,0xbc0afba4,0xbc389473,0xbb3984ee, -0xba012975,0xbab43466,0x3af935ec,0x3a9b4e80,0xbb439acf,0xbb0acb17,0xba96133a,0xb8afd157,0x3a026b67,0x3886afec,0xba9f01b5,0xb9e88dda,0xba812044,0xb8b1c27f,0xba8c78b4,0xbb1d7dfd,0xbb56a9b8,0x391a2013,0x36a938cd,0x39c7235b,0x39c22cf6,0xb956ba26,0xbaf2b3d1,0xbb069cdf,0xbabe58e0, -0xb9a6cd86,0x3ba6b826,0x3b00bb1f,0xbc53a9f3,0xbc387180,0xbc4d82be,0xbc1b73ca,0xbbe80375,0x3bbf3087,0x3c542023,0x3bdebea8,0x3b9589ed,0x3b529930,0x39c94d48,0x39d545a1,0x3ad3284b,0x3aa0306c,0x3a3d264d,0xba6e4aac,0xba268ed1,0xb958f250,0x39ee883f,0xb9bb8c6c,0xba864e2e,0xbb32c9f1, -0xbb417b92,0xbb668a8c,0xbb21f39d,0xbb26d138,0xbb41ea83,0xbb1e5005,0xba8396a0,0x3a4ed616,0x3b589f1a,0x3b0e5cc4,0x3a0c166f,0xbb4188b8,0xbbac2cad,0xbba428f8,0x3a46ba43,0xbb8d7d4f,0xbb9ba78e,0xbbd5bd07,0xbaf84838,0xbc88c7b8,0xbc56e4b2,0xbbedf1fc,0xbb66d474,0xbabfdc76,0xb96c0a25, -0xb9411613,0x3a35e13f,0x3a095047,0x3a956660,0x39c19b8e,0x39c53743,0xb809b7f0,0x39ffa000,0xbb0afd7c,0xbb4c23b6,0xbb432666,0xbb8f8d04,0xbb8af9b7,0xbb5608ef,0xbab82557,0xb8d8d0e6,0x3a18c95d,0x3a9a5d81,0x3ae927bd,0x3ae5db46,0x3b130e62,0x3b1e9407,0x3b260a94,0x3b8e3fed,0x3b4b94d5, -0xba22200e,0xbaa9c8be,0xbba626c1,0xbc19372a,0xbc63e492,0x3b391d3f,0x3b327970,0x3b583f39,0x3b6413b7,0x3b87bd08,0x3b84c749,0x3b90c9a7,0x3b7b7d3d,0x3b84ee0e,0x3b2bbb61,0x3b152ac6,0x3a242de2,0xba08bbfe,0xbaee7bf6,0xbb19d424,0xbb292026,0xbb15a081,0xbb0c8f55,0xbb0cd703,0xbad656c7, -0xba8c18e0,0xba7c32da,0xba225799,0xba6cc536,0xba6d6381,0xba9400b4,0xba366306,0x396c34d8,0x3a623dc8,0x3a8c7742,0x3aae7ebd,0x3adec720,0x3b145e30,0x3b21e52e,0x3b34a601,0x3b470d36,0xba4b4917,0xbb4932b9,0xbb4ade70,0xbb024270,0xbb38ec20,0xba7b754d,0xba94966e,0xb940babb,0xb99d7273, -0x39379b18,0xba096036,0xba30998b,0xbaf5416a,0xbb2d2eb9,0xbb3b512d,0xbb34afa3,0xbb47e52d,0xbb465452,0xbb33357e,0xbb3ee04b,0xba9fb6a3,0xba8902c3,0xba0e1ade,0xba40cac5,0xba5b161a,0xba845d23,0xbaaab00f,0xbab90c3a,0xbaa1b602,0xba52658a,0xba33f86a,0xba1efd60,0x3a03dc05,0x3ac04f6a, -0x3af57411,0xb89dcda5,0xbb0525d0,0xbb42ca7a,0xbb885044,0xbb91680a,0xbbb2cbb8,0xbba3488f,0xbb89cecf,0xbb5212c0,0xbb804097,0xbb63a58a,0xbb9981f1,0xbb5699be,0xbb563e6b,0xbb5c8fe5,0xbb432369,0xbb3dfcde,0xbb3a1c25,0xbb2f743a,0xbb5580da,0xbb2c33e5,0xbab97fa5,0xbab3aec7,0xba0a4803, -0xb9ec9a69,0xb8fb7441,0x3991fa14,0xb96cb1ff,0xba2d4879,0xbacb267c,0xbab94684,0xbabc515b,0xba9b548a,0xbaaad6e4,0xbaf2dff5,0xbacc68e7,0xbb01c459,0xbb37fb64,0xbb48e140,0xbb6a6424,0xbb2e25c0,0xbb321c98,0xbb6c22af,0xbb825dfa,0xbb934cf4,0xbb75fb1d,0xbb8375d8,0xbb6fd555,0xbb811293, -0xbb69cdb7,0xbb67ae94,0xbb7ad197,0xbb647f5f,0xbb459e55,0xbb22a75f,0xbb1424fe,0xba8168a2,0xba623d03,0xba6a62fe,0xba477620,0xba0a3457,0xb9a018e3,0xb9051ea9,0x38f4f308,0x39ebea01,0x3a03260d,0x39bd8782,0xb792ee94,0xba1019cd,0xba8ccf7c,0xba7e1d50,0xbadca2e8,0xbb2018be,0xbafe181b, -0xbb0a78bb,0xbb6934c6,0xbb792478,0xbb2749ad,0xbb7ace9f,0xbb82713e,0xbb4ecc5b,0xbb49c5f9,0xbb40733a,0xbb2e5172,0xbb26a26c,0xbb1ca524,0xbb138cc5,0xbb68645b,0xbb468563,0xbafa656b,0xbb5ac782,0xbb456e5a,0xbacf043a,0xbaddcc14,0xbacd6d90,0xbabc8ca4,0xbab10c09,0xbaa509cb,0xba98678a, -0xbaadb2b4,0xbacb6a29,0xbadf3261,0xbaef5b8d,0xbadeebc9,0xbad8d244,0xbaec92bf,0xbaf47731,0xbb03ddbc,0xbb03ba60,0xbb53bf4b,0x3b34068a,0x3afbfdbb,0x3aef675a,0x3b5f0051,0x3b0047a9,0xba8b3dfe,0x3b37b5f1,0x3af157f0,0xb9ca1317,0xba858637,0xbac0c6a2,0xbad4f7b5,0xbabfbe34,0xbae9f295, -0xbac20bb4,0x3b0d03e4,0x3b50ff9e,0xbaf0f49b,0x3ab68618,0x3b28656b,0x3ab4de71,0x3acde30f,0x3af60f95,0x3afa1cab,0x3b0f27e4,0x3b1624d2,0x3b1e1a97,0x3b0e744e,0x3b075c22,0x3aec883c,0x3b08c665,0x3b09dea9,0x3b0288e7,0x3b0af1ec,0x3b0a3f49,0x3afeb03c,0x3b044871,0x3b0d41ad,0x3b41ecca, -0x3a9705be,0x3ae17104,0x3afe4492,0x3ad3d1b2,0x3ae1483b,0x3a93af55,0xb8f8526f,0x3a533f99,0x39313b4d,0x3af79d89,0x3af5c42d,0x3a9ae34e,0x3a5b0cd8,0x3b31e8ee,0x3ad9bb5b,0x3aa4387f,0x3a8082c0,0x3b10499d,0x3ab933d1,0x3b0b8fd3,0x3b2972e4,0x3b59713a,0x3b7f8e2d,0x3ba1c94e,0x3b759d2b, -0x3b614f8b,0x3b3cbcdf,0x3b871c07,0x3b809a73,0x3b2dbfce,0x3b5096f1,0x3b4e84f9,0x3b310ad9,0x3b46596c,0x3b422cf1,0x3b4816aa,0x3b30ab80,0x3b25c1ac,0x3b5c79de,0x3a8e63c4,0x3a14025b,0x3aee129f,0x389ffdb0,0xba7260bf,0x39ee9a4a,0x3aa32165,0x3a861290,0x3b00c1c0,0x3b165164,0x3b2bba62, -0x3b17c2fa,0x3a0dd3d6,0x3a11f3f6,0x39785605,0x3a9ceae4,0x3b1ef73f,0x3b58e6e7,0x3b991340,0x3bad6101,0x3bde3684,0x3ba30a58,0x3b8d478d,0x3b4e1aff,0x3b9e6b54,0x3ba76726,0x3b6955ea,0x3b96f35b,0x3b8b3764,0x3b5618cc,0x3b713db0,0x3b1e2a48,0x3aef2511,0x3b1cc055,0x3b256203,0x3b875ea1, -0x3a79c7f6,0xb9d0c875,0x3b10a572,0xbae58f80,0xbaae4dd1,0xbaea8fa6,0x39a70cc7,0x3b28d405,0x3a641145,0x3b52000d,0x3b450eaf,0x3af9f8d8,0x39e8ff4c,0xb99aa3b8,0xba3d6b3b,0x3a1b5af9,0x3ae0f755,0x3b634feb,0x3bd64cb3,0x3c0bb789,0x3c2c674d,0x3bdad097,0x3bc3218b,0x3b89c5ea,0x3bf9718f, -0x3bfb82cd,0x3b6ae20c,0x3bc03ac0,0x3ba62280,0x3b714e21,0x3b95a949,0x3b9e396d,0x3b5df32e,0x3b574702,0x3b06a036,0x3b902b70,0xb8d5c538,0xb9a5dc4e,0x3b0aeedb,0x3a3ec176,0x3a8602ac,0xb9da3936,0x3ac0a01c,0x3b18a614,0x3ae13d07,0x3b26e06d,0x3b2ff1da,0x3aac2160,0xba5968ea,0xbabc8d5d, -0xbaeb8c05,0xb957c670,0x3b29e8c0,0x3b9c086d,0x3bef1dc5,0x3c1aa090,0x3c3abb8d,0x3c0737b9,0x3bc227e5,0x3b5e93f3,0x3bf3cf75,0x3c0414e4,0x3bab4448,0x3bffba2e,0x3beae806,0x3b9931dd,0x3bb12a76,0xbb88ee03,0xbb2ee82a,0xbaf4ed60,0xbaa1b7c8,0x3b38e732,0x3b5474d4,0x3b06b288,0xbb3af867, -0xbb3caafd,0xba6d8b00,0xb4851152,0x3b7e051c,0x3b2a01b8,0x3998f236,0xb91790ef,0xba654379,0x3b946fd4,0x3b91d961,0x3be7ee44,0x3c16dfbb,0x3c1b8acf,0x3bc8c238,0x3b10c7de,0xbb00ff5e,0xbb85038a,0xbbf62cb9,0xbb253507,0x3b7c87cd,0x3c461c62,0x3c0a71cf,0x3c02b606,0x3c16ff1d,0x3aca5c95, -0xba2d3d38,0xba36eb46,0xbb26ae20,0x3ba928c8,0x3c25a784,0x3bff6e31,0x3a4f27b5,0xbbb084c9,0xbbd428a2,0xbba44f9b,0x3828b573,0x3abc05f9,0x3aa56606,0xbacbecba,0xbb27ea96,0xbabe648e,0x3a93e6a4,0xb9065b61,0xb9630ef1,0xba55fd2b,0x3a68d70d,0x3a4e470a,0x3a39ae92,0x3b320250,0x3b52862c, -0x3ba3a945,0x3b0870b3,0x3b50b77f,0x3bfc44be,0x3bc5e447,0x3b0164e6,0xbb3fe4c0,0xba6929fc,0x3b141826,0x3be5c9f8,0x3c413d33,0x3c1e1547,0xbace0001,0x3b23ec5f,0xbbccbf64,0xbc7b7f50,0xbb613353,0x3a5ba7fb,0xbb9c2548,0xb9fcbc42,0x39c3e449,0xba9dd933,0xba07c0d2,0xb9e0b6da,0x39836a1e, -0xb969773e,0xba0dbfed,0xba824ac9,0xba0c9e8a,0xb91bf9bb,0x3a9ad000,0x3ad46162,0x3b03eb0a,0x3aab68eb,0x3b059550,0x3b2bfd7b,0x3b270b16,0x3b464f30,0x3b51278f,0x3ba640a7,0x3b7bc8c1,0x3b3afc09,0xba2e10a2,0x3be0d0ca,0x3c0ad26b,0x3a00b575,0x3be9b61b,0x3bb09b09,0x3ab512fc,0xbab15d59, -0xbb5865e1,0xbc31a135,0xbb84a2a7,0xb9cc0158,0xbaacf18f,0x3b2c55a2,0x3b066096,0xbb0769d5,0xbaeef316,0xba9aa315,0x390d3e43,0x3a384877,0x39d9bd19,0xbaa22896,0xb9c48923,0x398e6c45,0x3a9706c8,0xba008c84,0xb9ec5987,0xb86b42dc,0x38fa2d9d,0x3ad55b06,0x3aefd79b,0x3b886862,0x3bac8fcf, -0x3bb42f60,0x3bbbc10a,0x3ba861a4,0x3b6d0d8d,0x3c155140,0x3bfbfea4,0xbadf2631,0x3b9c7b22,0x3bc78648,0x3c26401b,0x3b317292,0x3c80f66e,0x3c8ba53d,0x3c346ec6,0x3bacb68d,0x3b831540,0x3a909c2c,0x3a7a271c,0x3b0d57b4,0x3ab49ef1,0x3a6f52f5,0xb926fa5a,0xba1d846b,0xb8a82627,0x3a4ed80e, -0x399401c6,0xb98accd0,0xbaf485de,0xbaf7e054,0xbb114ae1,0xbb216741,0xba2f9397,0x3a493305,0x3b2471c0,0x3b734d4c,0x3b97ebd8,0x3bbdae11,0x3bb134df,0x3b8b0a69,0x3ab9d0be,0xba862f21,0x392e6ccc,0x3b4ad11e,0x3bf71127,0x3c2c16fd,0x3c55d586,0x3c56656f,0xba86284f,0xbb91ee8c,0xbbefdf27, -0x38526e42,0xba89c402,0x3a1a45ef,0x3a742030,0x3ae00afd,0x3acf87c4,0x3ac438a6,0x3a3b9601,0x3986b024,0xb869e66b,0x3a330f29,0xbad987bb,0xbb2e08e0,0xbb4a55a9,0xbb32beee,0xbb05aef1,0xbb00b699,0xba9c1e2c,0xb9da8e79,0x39873093,0x3b04f933,0x3b9301e6,0x3bfd8d6a,0x3c14f1fd,0x3c279b0a, -0x3c4fe634,0x3c3f47b7,0x3c249a83,0x3c096cc0,0x3c274545,0x3c04cd04,0x3b85f14f,0x3a83ed03,0x3c18a77c,0x3c190d41,0x3bd6a91c,0x3bb5980a,0x3bd2c532,0x3ba472f0,0x3b9a8199,0x3b93a887,0x3b8b1ed6,0x3b86cd35,0x3b13f96c,0x3af3e955,0x3889ece9,0xbaa71bb5,0xbad77887,0xbab3f8cf,0xba89b110, -0xbab8d8ab,0xbad26e7e,0xbb02e03c,0xba574b70,0x392ca6de,0x3a2c64ee,0x3b05442a,0x3b1787fc,0x3b093918,0x3ae882ce,0x3acd6aec,0x3a43bb5c,0x3ae7504c,0x3b6cd0ab,0x3bdf5a58,0x3bc4774c,0x3bd96516,0x3bf76a20,0x3c11ea9e,0x3b15847f,0xba42d0b3,0x3a6eed2f,0x3a827afd,0x39ea3725,0x3a363b0b, -0x3a73940f,0x3a5c3691,0x3a7f57c4,0x3a051b00,0x382ea080,0xba5043aa,0xbabfdd6a,0xbb2710cb,0xbb19c563,0xbb21eae6,0xbb04203c,0xbae5af7a,0xbad57a52,0xbab6e456,0xba7753d4,0xba061d74,0xb99800ac,0x3945e691,0x39cd8483,0x393ed3f6,0x39d41222,0x3a0c5cd6,0x3a430516,0x3aad008c,0x3afdd67f, -0x3b5fe89a,0x3b6ac678,0x3b814059,0x3b83634b,0x3b12c799,0xba77ffb3,0xba616478,0xbb012480,0xbb20ac9c,0xbb531b1f,0xbb455d8d,0xbb1eaaa1,0xbaf1c8de,0xbb1f0b18,0xbb1d80d2,0xbb18c83b,0xbae11d3d,0xbb2b7f41,0xbafe2967,0xbb21678e,0xbb0e0744,0xbb1bbd5f,0xbb085491,0xbaddc016,0xba9e7fa4, -0xbaee4144,0xbaa5c07d,0xba9afd50,0xba8396ff,0xba603006,0xb9c6cb2e,0xb862b2b0,0x39da81b7,0x3a6ecbb4,0x3ab05a43,0x3ad0d256,0x3afde46b,0x3aa97d4f,0x3a4701a1,0x3a1917ef,0x3855b478,0xbae6fb6d,0xbb175c58,0xbb34a743,0xbb0594e6,0xbaaae7b5,0xbb1e426a,0xbb20c0a7,0xbb869949,0xbb46f09e, -0xbb24e0dd,0xbb1746d8,0xbb097e94,0xbadcd54d,0xbae1ee37,0xba6d3155,0xba4d639b,0xbaa42c57,0xba4ba2d0,0xba7e867e,0xbb01fc27,0xbaea38a1,0xbac0d671,0xbaa7eb5c,0xba73fdf5,0xba24fd6a,0xb9d8dffd,0xb9d40d55,0xb915bd85,0x3847d667,0x39d27cfc,0x3a58825d,0x3ac55e3c,0x3a3dae2c,0x39e54bd8, -0xb9f6b2e7,0xba9b8548,0xba840685,0xba86cf7a,0xb9fb86ee,0xbabf6ba4,0xbb4bf037,0xba55c290,0xba84d358,0xbb2f8b7f,0xbb362348,0xbb41f57c,0xbb44910c,0xbb44444c,0xbb48c956,0xbb44acc8,0xba13df74,0xb9a2ca6b,0xbb338ac9,0xba4aad31,0xb9a19b8c,0xbaae9aff,0xba849aaf,0xba82faac,0xba7a9168, -0xba794a9f,0xba6e4fdd,0xba4faf6c,0xba35d7f9,0xba14828f,0xb9f86442,0xb9d8a26b,0xb9d33aa2,0xb9a977aa,0xba1f7cf3,0xba2efa87,0xba570031,0xba6b2a2a,0xbab107aa,0xbb21914c,0xbabe2463,0xbb1462dd,0xbb225c98,0x38cbc372,0x3b5911e1,0xbb205848,0xba0c92b0,0x3b363c2e,0x3b33b554,0x3b40f31b, -0x3b2e47f7,0x3b4a1d68,0x3b7c5c79,0x3b4b62ee,0xb978d6f0,0xbb033ded,0x3b717190,0x3998742e,0xbb007c13,0xbb1c1afd,0xbb0407b1,0xbb0d92f5,0xbb054c84,0xbaf5b408,0xbae05f0e,0xbabdf559,0xbadaf090,0xbaf0fcba,0xbb083015,0xbb0543ba,0xbb007845,0xbb11b504,0xbb0c1bca,0xbb00fdbb,0xbab8304f, -0xbad4de3e,0xbab2c7bc,0xbb62164b,0x3ada376f,0xba3d385a,0x3ad9dca0,0xba8fd8fb,0xbad890d8,0x398fbd9f,0xbaf92167,0xbb06184b,0xbaabdfe5,0xbaa135e8,0xba8c6bf6,0xb95f0c23,0x3b2368b1,0xba05ff3d,0x3999d57c,0xba8d2265,0xba3e3a2f,0xbb7466bb,0xbb48f193,0xbb512321,0xbb4194a6,0xbb11eef2, -0xbae72c26,0xbab338fc,0xbb0ac411,0xbb238c58,0xbb42f803,0xbb251bdd,0xbb324530,0xbb8892e6,0xbb7fc656,0xbb4f8020,0xba92a28c,0xbaa76e9d,0xba1112d2,0xbb0c1571,0xba396010,0xbb0cab59,0x3aad6e37,0xbacab12c,0xbab1e23e,0xba4fa651,0xbb01b330,0xbb668b2b,0xbb417777,0xbb3898db,0x39a21aec, -0xbadce5ee,0x39f6310d,0xb86a89c7,0xb99da492,0xba462ad2,0xbb0a5617,0xbb552c4b,0xbb941e6a,0xbb8138d9,0xbb77e01f,0xbb174b18,0xbab146c7,0xb88d6141,0xbac7292f,0xbb11e959,0xbb7c5a28,0xbb3a9ebe,0xbb560d6d,0xbb9e1cfb,0xbb899c24,0xbb3e0fea,0x3a006dd7,0xba30e0aa,0xb9792b4c,0xbb4c5b75, -0xb9c7a130,0xb9817bd5,0x3b33dbce,0xb9ae9f5f,0xba9844ff,0xb8b38c9c,0xbb2eb8aa,0xbb2be141,0xbb2639cc,0xb99a1af8,0x3a4aacdb,0xb90b5482,0x3b01ee68,0x3af35043,0x3a4ef083,0xbab4cdcc,0xbb26bf91,0xbb7dbd9c,0xbbb41e0e,0xbb9b5f1a,0xbb9fb923,0xbb1b2194,0xbaa966b7,0x3a270946,0xbb0614fa, -0xbb2a2b83,0xbb9734af,0xbb3a4c43,0xbb8351f4,0xbbfe348a,0xbbce1999,0xbb800f01,0x3ad41b86,0x3a5eee35,0x3afaabcc,0xba874714,0xb977cb2e,0xba623386,0x3b291c19,0xbaf3bbaf,0xbac5dd14,0x3ad6ba5e,0xb8e18e5b,0xb9c6c9b0,0xbab504eb,0x3aa61c1f,0x3b0cccdf,0x3aa384a4,0x3b041bec,0x3b00779c, -0x3a8d5e3d,0xba9c350c,0xbb27d260,0xbbac74fa,0xbbd24812,0xbbc92879,0xbbb66a51,0xbb226219,0xb9020d94,0x3b282c8c,0xb93f6a1f,0xbb31e34d,0xbbaca619,0xbb71f71b,0xbb8ab4fd,0xbbc60429,0xbbad9df2,0xbaf97aa5,0x3b6e6bbc,0x3ae2ac1b,0xbc3826f6,0xbc3aeda3,0xbbfb6d05,0xbb82f796,0x3a430e27, -0x3b3de7fa,0x3a84c07f,0xbb2154e2,0xbb3d5379,0xba851e7a,0xb8b3e977,0x3b204285,0x3ae1242e,0x3a697d94,0xba81e381,0xbb0901f1,0x3b369dcd,0x3b3baa73,0x3b85bb58,0x3b85ae28,0x3b3ce8e4,0x3add8dbd,0x3933485b,0xbb8af92f,0xbbcc92c5,0xbbe12d7a,0xbb8a075e,0x3a97fdc3,0x3bb51724,0x3aa11f0b, -0xbb3c3bc2,0xbbe21b5b,0xbc34507d,0xbc39dfc1,0xbc06badc,0xbc383442,0x3b2bd7a0,0x3bd1fd92,0x3bd9d52b,0xba9017c1,0xbbca06e6,0xbc10cb7d,0xbbb3e31c,0xbaa6e8ca,0x3a530269,0x3a3642c3,0xbad858c0,0xbb153655,0xbad18419,0x3a35a342,0xbaa01cde,0xbaa3614f,0xbb0be28a,0x39bd53f0,0x3af8ac81, -0xb9fceaec,0xbb7ddbff,0xbbb449e5,0xbbe39d84,0xbb9b04f0,0xbaa5537e,0x3bcd6e07,0x3b758588,0xb9525446,0xbbca9072,0xbb7de65c,0xba23a5e6,0x3baa94b5,0x3be71fd8,0x3bafbf48,0xbb4dd55b,0xbaa19946,0xbbd313b0,0xbc9511de,0xbbfa809f,0xbaaa9b1a,0xbbcbacb9,0xbad00d84,0xba2aadc8,0xbaaa4338, -0xba551d23,0xba768e69,0x398049cb,0xb9cd687d,0xba50ca34,0xba7ad02d,0xbb05830f,0xba8fd30f,0x38e0747d,0x398b063a,0x384b7949,0xbada74ce,0xba4a06e5,0xba909689,0xbade4f26,0xbb832337,0xbba57b50,0xbb85eae7,0xbb9cdfb2,0xbb86f1a2,0xbb819c65,0x3aa582ff,0xbaec0991,0xbc59aa98,0xbc17427e, -0xbc20dac7,0xbc18223c,0xbb7de75a,0xbbd755de,0xbc3f0257,0xbb5c16a8,0xbb18e19c,0xbaa12d23,0x3af0ffff,0x3ade05f6,0xbae1c871,0xbb049c0e,0xbaac3510,0xb95ba987,0x39b33dc4,0x3926a055,0xbaafcb6a,0xba11a269,0xba8bf252,0xb74e224f,0xba895d86,0xbac673da,0xbb2cc55c,0xbac13361,0xba9945af, -0xba4382ea,0xbb2f6200,0xbb8366a0,0xbbc51d89,0xbbc9c386,0xbba66f75,0xbb600a46,0x39d3b1c8,0xbb863a0b,0xbc8eef22,0xbc815ae6,0xbc826e4c,0xbc4e94ac,0xbbb9bc68,0x3b63c824,0x3c810f10,0x3c233b2c,0x3bba2d70,0x3b30ad02,0x382a64a2,0x3a717a2d,0x3aca1522,0x3a842b43,0x3a4665c4,0xb9b5fd26, -0xba7c4663,0xb9c5e812,0x3a091ad1,0xb9826e38,0xba020c96,0xbadf33aa,0xbb259783,0xbb27f529,0xbb4ba916,0xbb69f96e,0xbb87101a,0xbb633fd9,0xbaf079b7,0x3a273c76,0x3b344f71,0x3ad07df2,0xb9e0b526,0xbb94e482,0xbb9fd8ec,0xbb98546e,0xbace5560,0xbc020f03,0xbc2180a9,0xbc5729d9,0xbbb60f7c, -0xbc9687f1,0xbc31bb2b,0xbb50a031,0xbb8238f3,0xba555ae2,0xba0b95d4,0xba1e47cf,0x3a02b529,0x39e11f77,0x395b8f22,0xb96966a8,0xb9ff5262,0xb9c43414,0x378ca198,0xbaedb737,0xbb391731,0xbb72e222,0xbb909ba5,0xbb90819c,0xbb7718ce,0xbb39404e,0xba1c690f,0xb883bdb4,0x3a4cca93,0x3aa5a8fe, -0x3a7bbc2d,0x3ab28013,0x3a9f7e80,0x3a15ef88,0x3ad70361,0xba2d3fb3,0xbbb393a7,0xbbce7cc2,0xbc116f98,0xbc4eb51d,0xbc712edb,0x39a6f59b,0x3b3c6129,0x3bb3df78,0x3b8e4ba9,0x3b8fae48,0x3b809603,0x3b63f21e,0x3b63a31b,0x3b57799e,0x3b422a81,0x3b07b0ac,0x3aaef71e,0xb828f9ed,0xbab778eb, -0xbb0bde0d,0xbb17ecd9,0xbb0e4a79,0xbaedbf84,0xbaa7181b,0xbadc42c8,0xbaffc2f2,0xbb18f621,0xbb0e1c06,0xbafb7bed,0xbadabcb7,0xbad9af3c,0xba80746f,0xb8f1293e,0x3a35a1d4,0x3a491eb0,0x3a2efae1,0xb9bebe1d,0xb77cd37c,0xb98790c4,0xb9be6bc2,0x395e5226,0xbb308316,0xba543baf,0xbb02c95c, -0xba50a32e,0xba9ee876,0xba5d534f,0x38f34445,0x3a0785c9,0x3a16d8ac,0x3a12c3c2,0x38df11fb,0xb96518d3,0xba997b61,0xbb1de997,0xbb394f77,0xbb332773,0xbb2dfb79,0xbb29e05f,0xbb2d90c9,0xbb062587,0xbb182447,0xbb004f58,0xbaf1bbea,0xbade393e,0xbad1bf8c,0xbace2ad4,0xbae09a61,0xbad3e233, -0xbaa30418,0xbacd34b2,0xbb099f41,0xbb3bd780,0xbabb00c3,0xb8946591,0x392ede10,0xb9c8d37f,0xbb44685b,0xbb815776,0xbb170295,0xbb626281,0xbb50b25c,0xbb2b3aa4,0xbb1e5668,0xbb0ca09b,0xbb3067a5,0xbb3f671b,0xbb616078,0xbb77836f,0xbb47e25e,0xbb6e7f75,0xbb1e7d6f,0xbb4f47a7,0xbb509219, -0xbb489cb7,0xbb2bc4cb,0xbb630ee9,0xbb3229e8,0xbb16f710,0xbaf2bcf8,0xbaba7968,0xba8088b0,0xb9b91383,0xbaabdefa,0xbb05de82,0xbb4706d5,0xbb4b5bda,0xbb4cd8eb,0xbb446470,0xbb417375,0xbb5e5b24,0xbb4c6825,0xbb4c040e,0xbb88150c,0xbb935df4,0xbb39215b,0xbb89833d,0xbb879baf,0xbb989a6c, -0xbbb1c93c,0xbb940ed5,0xbb9b7195,0xbb7bb55c,0xbb54a2d4,0xbb4bb746,0xbb606b06,0xbb4361fd,0xbb71d9f5,0xbb5810ab,0xbb172703,0xbb5117d1,0xbaf190bc,0xbb0f9deb,0xbad4f6b9,0xbafbda4e,0xbae1908a,0xbad5741d,0xbacabb9a,0xbab96c38,0xbac8491a,0xbab91fd8,0xbad450dd,0xbb0f497b,0xbb36a31b, -0xbb73b993,0xbb7b95bf,0xbb517177,0xbb6a6c7b,0xbb89f3f5,0xbb3be8c3,0xbb54ce91,0xbb5385d3,0xbaf2da1f,0xb9a0715c,0xbb5c0cc8,0xbb19aad0,0xba2db3eb,0xb9cd5527,0xba14292f,0xba1a35fa,0xb9b2e534,0x391576d1,0x39b855b0,0xbb1c7592,0xbb5ea954,0xb9115dbd,0xbb0e5cbf,0xbb51edea,0xbb3a4ec2, -0xbb363557,0xbb2e6f3a,0xbb247df8,0xbb1d914f,0xbb13aa11,0xbb09e181,0xbb1a4eb0,0xbb2bf3a0,0xbb3b383a,0xbb439491,0xbb39a05b,0xbb3c47ac,0xbb404f5f,0xbb422fb3,0xbb4b757a,0xbb4614f0,0xbb8997a7,0x3b5d581d,0x3b289116,0x3b6de7a4,0x3b0e1c0c,0xba8c6534,0xbb44d95c,0x3b04f028,0xba1b0ab9, -0xbb55a010,0xbb7e8e1d,0xbb8a10b9,0xbb78a976,0xbb73c577,0xbb8ffe27,0xbb6c6133,0xb9edc7d3,0x3af996ba,0xbb6d7921,0xbaa54f80,0x3aa30d11,0x3b4412eb,0x3b1e9062,0x3b35d375,0x3b3dc996,0x3b51e8c6,0x3b562cd5,0x3b533c8e,0x3b43f692,0x3b3a0848,0x3b29920d,0x3b3d2e8e,0x3b3d1c8f,0x3b35f412, -0x3b3868f3,0x3b355a65,0x3b2ab33e,0x3b30fbfe,0x3b590084,0x3b63ef36,0xbb4a599c,0x3aab56f9,0x3955960e,0x3a483281,0x39b59a49,0xb8359ae9,0xb9156fef,0xba67f47b,0xbaa385cc,0x38ee308e,0x3ab5bb83,0xb89d33ba,0xbad119ac,0x3b092f82,0x39d8286c,0x3a4354fe,0xbaacfdc2,0x3b1f9b70,0x3b2ecec0, -0x3b4d24fb,0x3b827bc9,0x3b91b25d,0x3b9e99d9,0x3bb63fb0,0x3b963d9d,0x3b904b47,0x3b836369,0x3ba6b93d,0x3b9c239d,0x3b6d89df,0x3b7949b4,0x3b776d21,0x3b66fe81,0x3b71850f,0x3b89eb2b,0x3b60c834,0x38966e28,0x3b14eec5,0x3b010bdb,0x384c4d45,0xbabe3d40,0x3af384fe,0xbaf41dac,0xba3063ee, -0xbb029776,0x3aec701c,0xb91616d7,0x3a973bae,0x3aaa8fe8,0x3b19b6a9,0x3b138a4e,0xb91df860,0xba196bc3,0x3a2ea3ec,0x3b4dc951,0x3b65f004,0x3badfc36,0x3bcec158,0x3be16677,0x3bf06579,0x3bbc0400,0x3ba459d2,0x3b85b636,0x3bb96aff,0x3bbf48d0,0x3b8cc1d3,0x3b9c1e7a,0x3b8dca06,0x3b7375ca, -0x3b82eb1b,0x3b8e9280,0x3b0331b2,0xbad81020,0x3a10a7a7,0x3b6b7a10,0xb902c44c,0xbabbbe19,0x3aceb504,0xbb34d992,0xbb276b09,0xbb45cedb,0xb722639e,0x3abb7f7c,0x3aa294aa,0x3b19c678,0x3b49ce2e,0x3b318006,0x39e1b04e,0xbacae783,0xbaaa5e86,0x3b39a167,0x3b47704a,0x3bbc40c8,0x3c0805fe, -0x3c21cf73,0x3c268271,0x3bec6e38,0x3bde0491,0x3bc0b1cc,0x3c0a2784,0x3c067771,0x3b990aa9,0x3bb9918f,0x3ba50e93,0x3b9a79ca,0x3b9d6777,0x3bb96869,0x3b8afec5,0x3a1097f8,0x3a9db94e,0x3b99525d,0xba900557,0xbac56a0c,0x3aa384dd,0xba54b394,0xba4da568,0xbae070fc,0x3a66ba2c,0x3b155c99, -0x3acd97c3,0x3b464bc3,0x3b4f1bd4,0x3b13e576,0x3aad0b3d,0xbb57519c,0xba5d8d37,0x3b12dd9e,0x3b870536,0x3bf9eab3,0x3c1e5867,0x3c39c908,0x3c3d6e0b,0x3c0cb781,0x3bd260f3,0x3b940d48,0x3c07ddde,0x3c08d9c8,0x3bb90692,0x3be192a2,0x3bc9b609,0x3ba2e7ce,0x3ba7fd10,0xbad8875f,0xba42524c, -0xbbc6844d,0xbba066fb,0x3a480e39,0x3b0dd258,0x3b3bca7c,0xba9f33ee,0xba9da037,0xb9e8ee6a,0xb870470d,0x3af7dc14,0x3a94b75c,0x3ac6f391,0xba99a012,0xbac08751,0x3b12dcec,0x3ba24f27,0x3bcfff4f,0x3c1ac73e,0x3c33072e,0x3bea903b,0x3b9052e6,0xbaeca5d8,0xbb1abc38,0xbb7f9df0,0x3b8d9f9c, -0x3c2e0509,0x3c7db429,0x3c40985f,0x3c201f4a,0x3c03aacc,0x3b19d0c8,0x3abcfe69,0x3ae7af90,0x3a3b1c24,0x3bcd4a8d,0x3c291b7e,0x3bda8727,0x3bacac0a,0xbbbb99e9,0xbbc781cc,0xbbc36bd5,0xbabaf9a5,0x3a031bc4,0x3a16b509,0xba91206b,0xbafe91d9,0xbae10a01,0x3a649776,0xba117242,0x39e0ab9e, -0xba606158,0x3ae0b4c5,0x39d17bf0,0x3a953935,0x3b8113f0,0x3b5a8f61,0x3bda2c8a,0x3b802e53,0x3b99ef95,0x3bff7b9f,0x3b66612d,0xb97418c2,0xbb9fd168,0xba0845da,0x3b2d9280,0x3bbcfd79,0x3c2134da,0x3be5024c,0xbb843a99,0x39ab9391,0xbb3f21bd,0xbc77b830,0xbbd4b654,0xbac98e27,0xbb850c04, -0xbac6a530,0xba88c054,0xb8c56982,0xba029c44,0xb9bcffb1,0x399c96a4,0x39678d49,0xb96dfa5f,0xbaaeb454,0xba492c65,0xba087914,0x3a03c244,0x3ad857ab,0x3b09d1d3,0x3b489621,0x3b496876,0x3b1bad02,0x3b2d804b,0x3b6157a5,0x3b881919,0x3bc942ca,0x3b9d8948,0x3b58e6af,0x3ae2c7aa,0x3bf0c5f0, -0x3c0cd556,0x3ae0b192,0x3bd911bc,0x3ba472cb,0x3a3be20d,0x3ae3f8ba,0xba922b97,0xbc2e6df8,0xbbe57e75,0xbb20619d,0xba90678b,0x3ad697f7,0x3b06c12c,0xba01fad0,0xbaba6817,0xba89d634,0x3872ca12,0x3a22e95e,0x39fb98bf,0xba91e779,0xb97bdb68,0x37a25238,0x3a8b6373,0x395a0894,0xba436c3a, -0xb9209d4b,0x3ae1f11a,0x3af36180,0x3b13ac30,0x3b8a8fa7,0x3bad6dd2,0x3ba6c3b2,0x3bc2988e,0x3b9f4375,0x3b9ba047,0x3c004a86,0x3bdac1c9,0x38ab275e,0x3ba19d20,0x3bc953c1,0x3c09e433,0x3b9dde4b,0x3c54a59f,0x3c83dea7,0x3c529e00,0x3bda5e60,0x3b32c86f,0x3aeff530,0x3afbbe3a,0x3abf1e7e, -0x3ab444f5,0x3a590be4,0xb920d8d2,0xba1eca48,0xb9921c69,0x3a91d648,0x39966414,0xb7d2dbb2,0xba82ed2b,0xba8bd24f,0xbb0ef0e1,0xba8d8f4b,0x39f97bb3,0x3affa492,0x3b88f357,0x3b7fbca7,0x3b8ffde8,0x3b99e1f5,0x3b72c68d,0x3b031200,0xbb16e3b2,0xbb1d0a1b,0xba59178c,0x3b521fe6,0x3bab6205, -0x3bf0d6eb,0x3c338bcf,0x3c0ff94b,0x3aa32052,0xbbc4c6c8,0xbc2cb1c2,0xbaacc150,0xbaeafda0,0xba2009ba,0xb9a40dc5,0x3adda637,0x3a257553,0x39f007e7,0x37164b58,0xb9bfdfb0,0xb9b324a3,0x3994593f,0xbabad5e5,0xbb0b6707,0xbb487b44,0xbb66063d,0xbb6001dc,0xbb632a72,0xbaede85e,0xbad5ad17, -0x38ef6cbb,0x3ac896db,0x3b7f2562,0x3bdff352,0x3c000afc,0x3c10d2e8,0x3c2dfb08,0x3c29eff0,0x3c0eb681,0x3be8b375,0x3c029bc1,0x3bcda053,0x3b8342aa,0x3ac4f87c,0x3bf34950,0x3c03dce2,0x3b96eef3,0x3b838f81,0x3b94f766,0x3b5e27f7,0x3b66195f,0x3b53d125,0x3b6da3d7,0x3b5c21f4,0x3b3455ee, -0x3b1aad01,0x3a86b502,0xba0e9a75,0xbab4c8b2,0xbac59641,0xbaa47011,0xba864d0e,0xbac5ee2b,0xba8229b8,0xb94922f2,0x39f4e4ae,0x3a6292c4,0x3ae3c7ed,0x3af8e06d,0x3af23051,0x3b0f64dd,0x3b1921cc,0x3ad72bcc,0x3b44c3b7,0x3baa0f82,0x3c132f42,0x3c010b0f,0x3bef40a3,0x3be711aa,0x3be8bfda, -0x3b7eba76,0xbad247c8,0x389b53f7,0x3a203e07,0x39e4c22d,0x3b072200,0x3abbe00d,0x3ae04279,0x3ac3cfb9,0x3ab7cbb5,0x39db0c55,0x38825b61,0xba96b596,0xbaf7c34d,0xbb09dcd1,0xbb1fe18a,0xbb2ab25c,0xbb083b4c,0xbac9d52e,0xbaf4fc9a,0xb95c157f,0xb9d5ceb8,0xb99739c8,0x395ee90f,0x3a28e9a9, -0x3a3cad64,0x3aa39c73,0x3adcf6e7,0x3b0ca805,0x3b292822,0x3b4c3756,0x3b9ac3cf,0x3b8bbeb0,0x3b8d73e1,0x3b93b71d,0x3b3b09e2,0xb982c23b,0x38c6b076,0xbb18a380,0xbaca45bb,0xbb33319a,0xbb34a901,0xbad9ec34,0xb9843e7d,0xbac091b4,0xbabb3674,0xbb293a2d,0xba79c60d,0xbb27b409,0xbae5f503, -0xbb418923,0xbb0a8824,0xbb1e0b1d,0xbb0cc760,0xbb3c7290,0xba91d127,0xbaa49979,0xbab0b489,0xbaa271ba,0xba8b253b,0xba50822c,0xb9c5dea5,0x314165ec,0x39c5c4a7,0x3a5a945b,0x3a9a4074,0x3ab4302d,0x3aec08db,0x3aab7a95,0x3a4fb637,0x3a25ff71,0x389f5089,0xbb0ea16e,0xbb288e9a,0xbba5a2a5, -0xbb36169f,0xbb23c538,0xbb6104e7,0xbb45d77c,0xbbad0feb,0xbb5cdcdc,0xbb6d7658,0xbb5da6f5,0xbb5d1e49,0xbb14743a,0xbb29f60f,0xbaf2c60a,0xbaecea6b,0xbb2fd6d0,0xba9287f7,0xbb1652b2,0xbac798e1,0xbadb6307,0xbaaa724b,0xba9930b6,0xba7bac0f,0xba4fa227,0xba33fabe,0xb9fe3481,0xb91d5e81, -0x38c4a0d1,0x39ca40e2,0x3a4f3436,0x3aa08b72,0x39ec47ab,0x393347c0,0xba259cf7,0xbaac5721,0xb9f4f790,0xb9602f4c,0xba878e86,0xbb3bda3a,0xbb860212,0xba8165c2,0xbb08fc79,0xbb80bc48,0xbb8cd57b,0xbb8c3b15,0xbb879f6e,0xbb8d90fb,0xbb99d439,0xbb99021d,0xbb00f503,0xba1760a0,0xbb81d099, -0xbb15bc8b,0xba65c652,0xba266de0,0xba11de5f,0xba0d0776,0xba01f887,0xb9f3b359,0xb9d4cd49,0xb9a4e9aa,0xb98b0235,0xb9487d8d,0xb919a769,0xb8eab614,0xb8be45f2,0xb78f7498,0xb96498a5,0xb9855406,0xb9d569d9,0xb9ee1945,0xba64fbd4,0xbab80c36,0xba8b91a1,0xbb231966,0xb917a425,0x3b379a79, -0x3b81fb66,0xba1fe3c4,0x3aefff21,0x3b8a3d21,0x3b82ef51,0x3b82320f,0x3b5d0847,0x3b778597,0x3b965f48,0x3b784781,0x3b17ad88,0x398e6de7,0x3b871a92,0x3b31893c,0x3999c6f2,0xbb1c6b22,0xbac4bbfe,0xbacb453a,0xbab9f185,0xbaab1004,0xba9da46c,0xba894526,0xbaa1d4e0,0xbab63b3c,0xbad1955b, -0xbabe89b7,0xbab1e5df,0xbacf3901,0xbab74829,0xbaa5638a,0xba6f99bf,0xba98f38b,0xba913b37,0xbb0e946e,0x3b8e8d6d,0xb89d69b4,0x3b50bc17,0x377b89d1,0xb821493b,0x3a9d44d3,0xbadf508e,0xba0dd562,0xb8a5949e,0x3a0344bd,0xb9825986,0x3a8b47bf,0x3b809a8d,0x3a5d46a7,0x3b0d550f,0x39892290, -0x3adad698,0xbb0fccff,0xbb1ee4dc,0xbb03cb06,0xbadc435d,0xba916271,0xba4857ac,0xb9ef3242,0xbaa2707b,0xbac97f34,0xbb006de9,0xbac1d8b3,0xbad20a83,0xbb353e85,0xbb02cd68,0xbab573f3,0xb8c7d8f9,0xb991a8d0,0xba665c35,0xbaab6b3e,0x3ac97d4a,0xbaa6b6c2,0x3b42d19f,0xba26eeb5,0xb88960b9, -0xba25a5be,0xba87eb7a,0xbb7aa437,0xba6bd0ab,0xbb436e02,0x3a42325d,0xb9c019b1,0x3acebb89,0x3a761d46,0x3aad3ed9,0x3a392a3d,0x380bfa60,0xbb05fd5b,0xbb72eaf7,0xbb0d80e1,0xbafbb75a,0xba2c4292,0xb93caa52,0x3a27082c,0xba30ca60,0xbab47251,0xbb2efe9c,0xbabe04e1,0xbac1d026,0xbb36d279, -0xbab5d4ca,0xb9fe9384,0x3ab6cb94,0x393414ab,0xba2f2d91,0xbb080e81,0x3b0140f4,0x3a115483,0x3b709865,0xb9960262,0xbaafbfcb,0xb872d347,0xbb5f5733,0xbb6fe187,0xbb4be095,0xbaaa44e8,0x3a7a2836,0xba1233ec,0x3b321744,0x3b077f61,0x3b02b44c,0xb90c4570,0xb9fe6360,0xbb0c5380,0xbb92dd1f, -0xbb2e4096,0xbb083bb5,0x38599b66,0x3a7d0a94,0x3b07ec80,0xba124774,0xba8a7a7c,0xbb2bb084,0xba926cff,0xbacd03a2,0xbb9bd2de,0xbae2121a,0xb8f88b4b,0x3b388aac,0x3b16f08a,0x3a300dd3,0xba8b2ee1,0x3ac75de6,0xba18a473,0x3b672ee8,0xbb085813,0xbb1913f0,0x3a2c204d,0xbad1676d,0xbaf7d488, -0xbb4cc9af,0x39cee18e,0x3ab7c251,0x3aa3cb66,0x3af03770,0x3b1dd557,0x3b2f3b15,0xbacb6ffe,0x3969759a,0xbb7f98ee,0xbba4ce9e,0xbb4ca96f,0xbafe6551,0x39f03dfa,0x3b03dbfc,0x3b466ecd,0x39ca56f1,0xbaf5c112,0xbb84aba3,0xbac55303,0xba9793d1,0xbb2ea6f7,0x3728158a,0x3b0bfed8,0x3b8cc0c2, -0x3b19530c,0xbc0cace1,0xbc17fdcf,0xbb898a7f,0xbb1e2824,0x3a37433e,0x3b62de69,0x3b0ed1ba,0x37b34ab9,0xba9a8239,0xba47d69a,0xb9a408cf,0x3a62546b,0x39a04804,0x3af7487c,0xbade6e87,0xbb541d97,0x3b158a32,0x3b0ac50e,0x3bbd554a,0x3bad45fb,0x3af20340,0x395318ed,0xbb5faa1d,0xbbbb4a4e, -0xbbdcca0d,0xbbf418c1,0xbb04bb11,0x3b448b73,0x3b9c742a,0x3aa88260,0xbb3aeab1,0xbbc92b12,0xbc0e302f,0xbc0df3d7,0xbbbfb0c8,0xbc0cdc53,0xbb05b3b4,0x3bd29c88,0x3c4fc1ea,0x3af510b6,0xbb4b43d4,0xbc01cace,0xbbc46e63,0xbafe7dc1,0xb9da1967,0x39642b54,0xba988893,0xbaf0d16d,0xbae854e4, -0x38df0e29,0xbaa49175,0xba89d4c9,0xbaa1527c,0x3a8d3570,0x3b579929,0x3b079a6a,0xbb38d572,0xbb41a12b,0xbb73fb98,0xbb06963b,0x3a84b925,0x3bdd97dd,0x3b33c34b,0xbacccb18,0xbc04e1d1,0xbb4c3620,0x3aaf5fcd,0x3bbd7bb6,0x3c00601e,0x3b996148,0xbbb04195,0xbb6c8ce1,0xbb8db7f6,0xbc877209, -0xbc2d318e,0xbb6fe759,0xbb74d1d6,0xbb343441,0xbb0a455a,0xb9334ca2,0xba080388,0xba4b865a,0x397add9d,0xb8b53b96,0xba02ea6b,0xbacc8b7f,0xbac2219d,0xba30e7be,0x394d830e,0x3aa382fd,0x3af7534b,0xb958c2b9,0xba3d7036,0xba60c138,0xbac430a5,0xbb677bed,0xbb99c7fc,0xbb4122fa,0xbbaaf5bc, -0xbba5fb4e,0xbb7c512e,0xbac48d09,0xbb4b528f,0xbc002b50,0xbb66e8ef,0xbb7b1862,0xbbe95f06,0xb93b2f13,0xbb4dabb4,0xbc397257,0xbbb69625,0xbb8dc1c0,0x39593f97,0x3a916aa8,0x3ae25ab3,0xb9789641,0xbacc70da,0xbaa4aeab,0xb939ebc4,0x394fcc40,0x39866e36,0xbaad2a1e,0xba17ba07,0xba2f184d, -0x39c099c2,0xb9ee4cb2,0xb7582c30,0xba137aec,0xbad29e62,0xba6f4aa3,0xba133b03,0xbb295d7b,0xbb688b35,0xbb9fc478,0xbb99a95b,0xbb772f30,0xbabe6ef2,0xba85214d,0xbbafefc5,0xbc544e04,0xbc20f474,0xbc0a00e1,0xbbbf932f,0xb9ea9309,0x3b85d06f,0x3c7b37a4,0x3c5426ed,0x3be6a091,0x3b36d735, -0x3a566c07,0x3b04c742,0x3adccbd3,0x3a4ecd4d,0x39fd73b7,0x386c6f79,0xba80f726,0xb9b85574,0x39efdced,0x38b26393,0x395fd1b3,0xb9d92450,0xbac06307,0xbab586e9,0xbb38dcbb,0xbb3f93ad,0xbb318221,0xbab3701e,0xb972a07c,0x3afe910f,0x3b40a6f7,0x3b126520,0x39d74783,0xbb569ca4,0xbb1ef992, -0xbaf4e759,0xbaba78b6,0xbba108b7,0xbbc717f6,0xbbf20f29,0xbb0e46eb,0xbc2735a5,0xbbb56eb2,0xbae7e83f,0xbb4d4d6a,0xba07256e,0xb9e1f364,0xb9fdf449,0x3a57c8fd,0x3a0b4a28,0xb9f6f536,0xba25d643,0xba7a4f28,0xba091e48,0xb9df0e5a,0xbaad43ba,0xbb1371bc,0xbb8384fe,0xbb7802d5,0xbb6febba, -0xbb5fb5e1,0xbb609de1,0xbaaeb541,0xba1982be,0x3a40c3ac,0x3af2341a,0x3b16930f,0x3b584088,0x3b69f34d,0x3b69b6f1,0x3b46d91a,0x392bda64,0xbb71ee89,0xbb71efc2,0xbb9a676b,0xbbf945ca,0xbbedbaa2,0x3a2b59fb,0x3b885804,0x3bd15c94,0x3b8fbb29,0x3b8815ad,0x3b566bd7,0x3b1f0a4d,0x3b33d0a7, -0x3b1507ca,0x3b40e45e,0x3adc33f2,0x3b078a79,0x3a291470,0xba2a6098,0xbac2791e,0xbad8999c,0xbae2ef72,0xbac2de7b,0xba4dc8bf,0xbad11a56,0xbb05d295,0xbb12a821,0xbb0cd2df,0xba7b53c2,0xb9cc8def,0xb8eb69fe,0x3a0d9794,0x3a6cff94,0x3a957d4d,0x3adbfb75,0x3b062ebf,0x3acf8ecc,0x3a7fb68a, -0x39e918b3,0x39ae7743,0x3a14f044,0xbadb67b1,0x3aa0088f,0x38fa0ecc,0x3a6f92f2,0x3a872895,0x39b4f75c,0x3ae25e2e,0x3acbb4c2,0x3adc79ff,0x3a973a36,0x3a5970ee,0x3977239e,0xb9ea16b4,0xbaf9a9be,0xbb16ff8a,0xbb1ec7dd,0xbb07528b,0xbaf7a57f,0xbb08c381,0xba8adb5e,0xbb20ea31,0xbb00f429, -0xbb0ef102,0xbaca4b58,0xba957d80,0xba63e4e7,0xba21a62f,0xb94c07e0,0x39d0d9c1,0xb9360ec1,0xba550a7c,0xbab0cf93,0xba171eba,0x3990f2e1,0x396d5227,0x3a22d321,0xbb1eb2e9,0xbb35c1fe,0xb90e4a86,0xbaae4061,0xb9eed5ef,0xb88a0ec5,0xb91dac21,0xb98dff8e,0xba4f265f,0xbac9a14d,0xbaba0e7f, -0xbb37e0d4,0xbb19caf7,0xbb3f4dbf,0xbaedfe99,0xbb317b61,0xbb3cb707,0xbb335ff4,0xbadb4b90,0xbb475c0b,0xbb501900,0xbb2559e5,0xbb27ba89,0xbb00a6ed,0xbacd6eca,0xba679440,0xbacd8624,0xbb022165,0xbb196d77,0xbb258122,0xbb283abe,0xbb28e4f5,0xbb2b4da3,0xbb374832,0xbb306e77,0xbb1fcc54, -0xbb8486dd,0xbb913e99,0xbb1c3a2b,0xbb9334fc,0xbb893ef9,0xbb93bc11,0xbba91238,0xbb8a9d03,0xbb975f4b,0xbb4e7c41,0xbb2875cf,0xbb0a26f4,0xbb291fc4,0xbb07ccd1,0xbb227f99,0xbb0e5c0a,0xbab8ef77,0xbb33ac32,0xbaa3aee2,0xbb3efa46,0xbb0ff684,0xbb201de1,0xbb10ae06,0xbb0df6f3,0xbb0bc368, -0xbb0444bb,0xbb1ef045,0xbb249453,0xbb37fbc3,0xbb5a98e5,0xbb6c3d8b,0xbb89d3a1,0xbb88fe3c,0xbb6573d9,0xbb75529d,0xbb899801,0xbb2efcc3,0xbb4299f6,0xbae22e6f,0xb8fe8358,0x39ddffa4,0xbadfbb64,0xb9d32819,0x3a15e20d,0x3a488406,0x39c49267,0x38f51b2e,0x39a493d7,0x3a46aeeb,0x3a730826, -0xba5b95b1,0xbb1c83bf,0x392a4c1d,0xba4a3d38,0xbb0d03fb,0xbb478599,0xbb3663f2,0xbb329880,0xbb2b201c,0xbb263b9f,0xbb1cd031,0xbb11f740,0xbb1dc679,0xbb25d01b,0xbb30d461,0xbb35e492,0xbb31832f,0xbb393726,0xbb3a9643,0xbb3806f3,0xbb3e889f,0xbb37e06d,0xbb70d79a,0x3ad74792,0x3ac291d4, -0x3b2ae805,0xb9b3ca1c,0xbb27f06b,0xbaf2e1fa,0xb916b160,0xbb0b5dd7,0xbb393ab7,0xbb5260ac,0xbb54f3c3,0xbb30070b,0xbb29a8cd,0xbb4175b5,0xbb1e6f23,0xbb0687b1,0xb9cc0889,0xbb00f642,0xbb1a0293,0xba488359,0x3b07e6a9,0x3ab268a9,0x3accb14e,0x3ae84745,0x3b04902c,0x3b07bc51,0x3b014ba6, -0x3ae87947,0x3ad0838f,0x3ab671b7,0x3acf0771,0x3ad02ee0,0x3abd754c,0x3abb9951,0x3abcad1b,0x3acb8fba,0x3ac89ee6,0x3b1a1c20,0x3aa6c92c,0xbb85265b,0x3980b251,0xb9ea6091,0xba03ff62,0xbaa97803,0xba4087a7,0xba575f96,0xbb1e93ff,0xbb07ec17,0xbad44fb7,0x37ca8563,0xba809b7a,0xbade15a4, -0x3a2de67d,0xb9e45e50,0xb9245d1b,0xbb20e5b7,0x39b73df9,0x3abc5152,0x3acab02c,0x3b251cfb,0x3b353eee,0x3b42d51a,0x3b5376aa,0x3b297ed0,0x3b2271fd,0x3b16adbc,0x3b357286,0x3b1cc5b7,0x3ac513aa,0x3ac3d1d9,0x3ae79483,0x3b225b81,0x3b16ecee,0x3b4f04c0,0x3acb4ea5,0xbaf68796,0x39f616f1, -0x3a232d18,0xbaa42def,0xbb33ccba,0x3a48239b,0xbb56027d,0xbad19f7c,0xbb778a42,0x398a0a05,0xba7761f4,0xba106b89,0x3983697b,0x3a9ddb2d,0x3a9ee677,0xba2dc0bf,0xbad60b8b,0xb9af21b1,0x3ae27dc7,0x3ad73311,0x3b6b29d6,0x3b8ee77e,0x3ba0a1bc,0x3b96cbdc,0x3b61edd3,0x3b30454a,0x3afa12d7, -0x3b3c9dcd,0x3b35f7a1,0x3ac3ebd1,0x3ad4a425,0x3aea44f4,0x3b3d1d95,0x3b20b7c7,0x3b8231b6,0x39920e6d,0xbb806ee2,0xbaa60eaf,0x3b2b5dfb,0xba9093cc,0xbb0d20db,0x399af37e,0xbb6ed07b,0xbb76792a,0xbb626b50,0xba49daca,0xb8920b44,0x3a49c46f,0x3ab649a9,0x3b1ed10f,0x3b1fdea5,0xb7949014, -0xbb1fbc1f,0xbb1c9102,0x3abb65ce,0x3aae1b00,0x3b7f6666,0x3bb93a98,0x3bd66398,0x3bbe8268,0x3b839c94,0x3b785dfa,0x3b69ea1d,0x3b8ebe71,0x3b6c1e73,0x3a9849b2,0x3abb761e,0x3b0a12b1,0x3b94fc32,0x3b680e3f,0x3b914831,0x3b2e10b8,0xbacd79c1,0xb944ee0f,0x3b772d64,0xbb121b1d,0xbb29c83b, -0x39ed9952,0xbb11558e,0xbb278f0a,0xbb2b9bd5,0x38202057,0x3adc93ee,0x3aa8d9a4,0x3b34e354,0x3b40cb10,0x3b27a722,0x3b065d0a,0xbb6f010a,0xbabae12e,0x3a88333a,0x3ae6b37f,0x3baf99d9,0x3be96191,0x3c09159e,0x3bf892c5,0x3bad4af1,0x3b5264f3,0x3af33ad9,0x3b868dbb,0x3b67dcc3,0x3ae27029, -0x3af7634d,0x3b287c6e,0x3b9a8571,0x3b6c1f4b,0xbb0ad46f,0xbb289cbd,0xbc12ae18,0xbbe05275,0xba4a70b5,0x3ae93fed,0x3b4dd3ec,0x3a33e63e,0xb731cf98,0xba105b74,0xb9f28263,0xb88cc10d,0xb8779766,0x3b1b31b8,0xbb12e477,0xbb2d21d4,0xb99b565a,0x3b53e6db,0x3b76d6b7,0x3bc92210,0x3be80f52, -0x3b924214,0x3b3e733b,0xbb413fe4,0xbb14cfed,0xbb131029,0x3bf42dd9,0x3c525d01,0x3c596627,0x3c1d55ab,0x3bb1eb82,0x39908138,0xbb087143,0xbace6668,0xb9a4acef,0xba004d84,0x3b90d861,0x3bf79b75,0x3bd72536,0x3be3bd52,0xbbae2826,0xbbd255bc,0xbbd494a1,0xbb39a28a,0xba19b2cd,0xb886a834, -0xba78753f,0xbaac238c,0xbae7ab87,0x39915eb9,0xba75b114,0x3a11d108,0xba6463fe,0x3af3c2cf,0x3a3becba,0x3aa4aab6,0x3aec2ba8,0x39c380dc,0x3b487294,0x3b3b786e,0x3b8711b3,0x3bc36194,0x3a575863,0xbb1fe29f,0xbbf7ccb1,0xbaac1343,0x3b073f4e,0x3b867d65,0x3bbe442f,0x3b337b86,0xbbc2479e, -0xbb1b8e4d,0xbaba2ee2,0xbc6be641,0xbc2a0358,0xbb9df6cd,0xbb2655c7,0xbb4f209b,0xbb4f72b2,0x398c4cad,0xba023a86,0xb9ac4b15,0x39659712,0x397e9cfb,0xb96e5e17,0xbacca512,0xbaa4f213,0xba6c165a,0xb9caf0dd,0x3a98bac1,0x3ad50347,0x3b3621b5,0x3b15af05,0x3a30828e,0x3a4d89cc,0x3a40e882, -0x3a969545,0x3b1daffd,0x3ab2e5f1,0x3a008d2e,0x3b1a205a,0x3b82bd33,0x3b4e2f0c,0xbb15bbe7,0x3a6ee8c7,0x3948be9b,0xbb73f1c1,0x3b052f08,0xbad080c0,0xbc316326,0xbc0f2bd2,0xbb9b5071,0x3a3e4742,0x3924f4a6,0x3ab2fc48,0x3a2aaaff,0xba900737,0xba7da9a5,0xb8eff299,0x3985c60b,0x3984510b, -0xba8be867,0xb9ad9fc4,0xba239df9,0x39e688d8,0x39f40cf0,0xba45b90e,0xba1a49e7,0x3af155e3,0x3a542c0b,0x3aa16a04,0x3a923237,0x3a9fa1c9,0x3988baad,0x3aa1c00b,0x3a775dfa,0x3b7e423b,0x3b39703c,0x39c5d15c,0xbb903133,0xbad9a57a,0xba26e150,0x3819040e,0x3b2a2f2a,0x3ba2d248,0x3c3fcda4, -0x3c5174b8,0x3c00d168,0x3b0e7cff,0x3b0d3215,0x3b32323f,0x3a9db2ed,0x3a82e963,0x39dcafbd,0xb9802c07,0xba34c259,0xb9c56a7e,0x3a42174f,0x391cd9b2,0x395ccacc,0xb8b04239,0xba14a7a8,0xbaf26771,0xba04b407,0xb8c9783c,0x3a42a422,0x3b379c97,0x3b026dc0,0x3b2f34f7,0x3b301beb,0x3abcba40, -0xba148988,0xbbb3e71d,0xbb59f207,0xbb03af8e,0x3add0ed3,0xbad78765,0xbae20d73,0x3ab20cc9,0xba15ea3e,0xbb175549,0xbbee75cd,0xbc1a157f,0xbb66f8f0,0xbb04077f,0xbaae0644,0xbaa27660,0x3a9bf492,0xb98afdf3,0xba523436,0xba6e48c1,0xba8196be,0xba15cbd1,0xb9c238b7,0xba9c069e,0xbae5f745, -0xbb552cb3,0xbb8d763c,0xbb99089c,0xbb90fc66,0xbb33ac63,0xbb1eb72e,0xb9bec28f,0x3a39cfdf,0x3b1460d9,0x3b564d1e,0x3b871c05,0x3b9c7487,0x3baefbe6,0x3bb61382,0x3b692914,0x3abb7767,0x3a737c91,0xb9d39e04,0xbad94d31,0xbb2848bf,0x3b040525,0x3b6ef835,0x3b241dad,0x3b0bb1d6,0x3b0a169d, -0x3acebda2,0x3af9111e,0x3ad97ee9,0x3b149cdb,0x3b035af7,0x3b1c1f1e,0x3b119bd5,0x3ac01f43,0xb7cfc2ab,0xba989e09,0xbae6009f,0xbae94927,0xba9f0b02,0xbabecffc,0xba0869e4,0xb9d83b85,0xb992fac3,0xb8abf9a0,0x39bd0f5a,0x3a2498a4,0x3a826b77,0x3b0422c6,0x3b29ef5c,0x3b20b527,0x3b7221b7, -0x3ba885d2,0x3befb99b,0x3bcaac7a,0x3b99d2b6,0x3b70368f,0x3b142d84,0x3b38f215,0xbaac06c9,0xba717458,0x3896274f,0x39a07de7,0x3b17f3c4,0x3ada3364,0x3b12bede,0x3aee4ace,0x3b033f37,0x3a6eba9c,0x3a642553,0xba1a3823,0xbaa1d0d4,0xbaf46e91,0xbb1658da,0xbb3dce62,0xbb1e5adc,0xbaf0eda1, -0xbb0c297d,0xb9ee922f,0xba5d4b9d,0xba5ea09e,0xb9c6bf34,0x39311429,0x3a15d733,0x3a9a3d4f,0x3af4a2de,0x3b2a979f,0x3b2d8181,0x3b2e9e68,0x3b62bae6,0x3b436f7c,0x3b3f53a0,0x3b471768,0x3b119619,0xb936d38b,0xb7983826,0xbadb4352,0xba1796b2,0xbab763f6,0xbab8bb0f,0xb9ce2922,0x3a8b618f, -0xb9a395d1,0xba030ea9,0xbb0fc876,0xba75c032,0xbb1411cb,0xbb080293,0xbb37d809,0xbb10eda6,0xbb233b37,0xbb17d890,0xbb5a329a,0xbaed8471,0xbab06eca,0xbae05184,0xbac4a526,0xbaa4df6f,0xba6f6299,0xba0f34c6,0xb9fa23b8,0xba009229,0xb9e389e4,0xb9ddd7c5,0xb9ddedcb,0xb9435bfa,0xb9a36d0c, -0xba08c353,0xb9d96032,0xba20d480,0xbb440693,0xbb4d7b97,0xbbb54a2a,0xbb6e4bd5,0xbb794e34,0xbb8cff6e,0xbb81e4f7,0xbbaf5a24,0xbb7a22bd,0xbb8b83c3,0xbb819fc1,0xbb84ba3f,0xbb477f1e,0xbb5a1969,0xbb4f54b1,0xbb47c1b5,0xbb63f7dc,0xbb0e51fc,0xbb47716b,0xbac5e7f0,0xbad13ace,0xbabb806b, -0xbaaaa561,0xbaa31675,0xba9a0d78,0xba902f56,0xba868835,0xba5ba967,0xba571a81,0xba6ffac1,0xba5aba8e,0xba8c3670,0xbabe15cf,0xbab62dbd,0xbaf62181,0xbb1c379d,0xba72ea28,0xba31ae42,0xbb050526,0xbb4ebfbd,0xbb46372c,0xbae0170c,0xbb2acfdd,0xbb515509,0xbb68d462,0xbb63c462,0xbb58d08d, -0xbb64f23f,0xbb78bd42,0xbb77085e,0xbb44d6c7,0xbaeb6aa2,0xbb524509,0xbb4e850f,0xbb07d6d5,0xba7fa4b3,0xba8e1a10,0xba88b7cb,0xba80246f,0xba70ad49,0xba5aee71,0xba448a7a,0xba5d11d3,0xba6a876d,0xba7fc76e,0xba86ada6,0xba81d706,0xba861219,0xba8a7619,0xba84bff4,0xba8fd0a1,0xba89323d, -0xbaf3d441,0x3a95362d,0x3a15415f,0xb99e0987,0x3b17df90,0x3b4efd9e,0x3ae61a0c,0x3ad3c623,0x3b23d58c,0x3b19c9b9,0x3af62d84,0x3ad25a43,0x3a9f97e2,0x3abaefcd,0x3ade0e0f,0x3abf674a,0x3b420795,0x3b1d5b94,0x3ac617a5,0x3b3aa5bf,0x3b0ff953,0xb9a4e262,0x39c03afa,0x3a0bd023,0x3a336cf7, -0x3a584100,0x3a5e2dbb,0x3a4fefb5,0x3a28689e,0x3a04bae2,0x39b81c82,0x3a192ad2,0x3a29e154,0x3a07c5de,0x3a38586d,0x3a43b260,0x3a47cd0f,0x3a1f8363,0x3a412ee5,0x3a63e438,0x3b5add63,0x3a644eaa,0x3b405287,0x3a875afc,0x3a9b8859,0x3aa4ad71,0xba81220c,0x39b29537,0x39d9a4bb,0x3abb78d4, -0x3a50f3c7,0x3ab89462,0x3b316d0e,0x3b0cbf77,0x3b2f84d5,0x3abbe7c3,0x3b144102,0x3a28e28f,0x377d6863,0x3a5807b6,0x3ac234a6,0x3aeaf478,0x3b02c340,0x3b13bd30,0x3ac6d962,0x3ab59a7c,0x3a96dfe2,0x3acfc4d9,0x3ab9dfbd,0x3a4154fd,0x3ad55808,0x3afc05b8,0x3b097fcf,0x3af7c14f,0x3a4e5bdc, -0x3a891157,0x3b283fdd,0x3a39765f,0x3b5dad35,0x3962589f,0x39916fe5,0x39745343,0xba4d3780,0xbb384e92,0x397da33c,0xbab88c04,0x3a0061ef,0x3a71065d,0x3b09762d,0x3b065c07,0x3b2b52f0,0x3ac4e17e,0x3ac0d8a7,0xb8259df3,0xb9cc09a1,0x3ab279fe,0x3b1a780a,0x3b5487f7,0x3b58598e,0x3b56d524, -0x3b142bc6,0x3acd8242,0x3a6fa73f,0x3b0508ae,0x3b18e137,0x3ab28981,0x3b3f38ba,0x3b480ab9,0x3b42600e,0x3b0f947f,0x3a782b56,0x39957fa6,0x3b0ed3f5,0x3a80c008,0x3b79b6cb,0xb9a9bc94,0xbad02385,0x3991c4a5,0xbb7ed94d,0xbb8aadd0,0xbb4f35f0,0xbaf6b03a,0x3a4638ac,0xb9dd8f28,0x3b35cb8c, -0x3b17b791,0x3b38a0fa,0x3a978a36,0x3a506cc3,0xb9e08f96,0xba51297b,0x3a985356,0x3b55cb35,0x3ba1009e,0x3bbcb8b7,0x3bb45b5c,0x3b5be0f5,0x3b437d88,0x3b230752,0x3b54a195,0x3b5d0217,0x3aa0cea4,0x3b924e3f,0x3b9bdb8f,0x3b989a8b,0x3b897be5,0x3ac454e3,0x3a674f32,0x3b1c2157,0x3995e9d1, -0x3b85ec39,0xbb018a2e,0xbb375f95,0xb8daa043,0xbb3adbc7,0xbb4c517b,0xbb6bf782,0xba1d76ee,0x3a34c750,0x3a9fc7f9,0x3afc9d71,0x3b3a8e66,0x3b659d31,0xb9e93a77,0x3aada577,0xbab37517,0xba692924,0x3b07fa17,0x3b9bdac9,0x3bcd9da2,0x3be40494,0x3bbf0b18,0x3b763786,0x3af500ba,0x39dd3c5d, -0x3b5f46de,0x3b88d48d,0x3b3b13c3,0x3bce4d82,0x3bd2cd18,0x3ba5fd41,0x3b774f0f,0xbb2ca138,0xbb6c6a54,0xbae728a3,0xbaec6c40,0x3a3e6ef2,0x3b6636a6,0x3b7128b8,0x3b1be84e,0x3a10899d,0xba410950,0xba382a87,0xb9d49808,0xba1aaa69,0x3b2bb37d,0xbb190a1d,0xbb77b8c7,0x3a3a17d2,0x3a95bad4, -0x3bb18f2c,0x3bba7c21,0x3b2a5ea2,0x39f03823,0xbb87ed68,0xbbb67cc6,0xbba87545,0xbbd16ada,0x3b36e9e7,0x3bf5d8bd,0x3bed49b4,0x3b985290,0x3aa07087,0xbaa87f15,0xbb3462aa,0xbb2a72c2,0xbabca89b,0xbb09b3bd,0xbb2e07de,0x3bd30245,0x3c6c77c3,0x3bbc27bc,0xbaac0c12,0xbbce522d,0xbbd2b972, -0xbb2bbd55,0xbaa405e7,0x37075179,0xba5259a3,0xbaa62909,0xbae563a0,0xb9c61d76,0xba4910ed,0xb718fa42,0xb5441445,0x3af19f1e,0x3b46ce40,0x3b73865c,0x3a14f5c4,0x3ac71d14,0x3b338f02,0x3b499358,0x3b947fdb,0x3bc2d860,0x3aa9caec,0xbb2d2b69,0xbc0de665,0xbab01127,0x3b611ed8,0x3baedb00, -0x3befa018,0x3b505035,0xbbdd8ef8,0xbb7f872b,0xbb284ff4,0xbc5a804d,0xbc401be2,0xbbb96945,0xb9e5e70b,0xbb747278,0xbb7cf8ed,0x39b1f46c,0xb97a40bc,0xb9978a75,0x3943841d,0x3947ffa5,0xb96862f4,0xbafb110c,0xba42f5ba,0xb9980740,0x3868b806,0x3afc220d,0x3b501470,0x3b09d87d,0x3a2b8628, -0x39ac5f8d,0xb909020c,0xba2a7f59,0xba999d57,0x3a26d9aa,0xbb052ea6,0xbb2e2899,0xb9e3b394,0xba900646,0xba81dfea,0xb8441cae,0x3b8d545b,0x3b887230,0xbb126f58,0x3b1e8f18,0xba2512f7,0xbc336181,0xbc07a3a4,0xbbb06f23,0x3b1e352b,0x3906e96a,0x3aa37bd2,0x3a8599f2,0xba7e75c8,0xba75873c, -0xb8aa53a6,0x38cc17fb,0x39816ecd,0xba99627f,0xba0e9c85,0xb9754506,0x3a357bc5,0x39b18341,0x3a8de02f,0x3aa7f2d0,0xb9966529,0x395ecb10,0x39b2bc6f,0xb9f0a9d9,0xb9dc7489,0xba1c13de,0x3923e3d1,0x3a162dca,0x3b712364,0x3994d1e0,0xbb442201,0xbb8e264b,0x3a17dea1,0x3b66bbe0,0x3bb44443, -0x3b985571,0x3bb62b30,0x3c370128,0x3c643fe7,0x3c05a6be,0x3b63237b,0x3b04ccb8,0x3b41c043,0x3b04e9c5,0x3a4641de,0x3954bd63,0x3925f83b,0xba444f5d,0xb96e76df,0x397a4626,0x39df2f48,0x3a53075f,0x3a3d1aa1,0xb9279ea3,0xb9eae951,0xbad0a141,0xba7f4ed1,0x39a2c758,0x3b1e2809,0x3b2ce1e3, -0x3b6ac3eb,0x3b51033b,0x3b40c503,0x3ac79c8b,0xbaf33d68,0x390acf52,0x3aa3ec3b,0x3a364b9a,0x3a666e21,0x3abaf962,0x3b9c167f,0x3b665d0f,0x3abccdd8,0xba093a57,0xbb67f5a2,0xbb05d96d,0xba821ded,0xb9925d84,0xb952a72c,0x3aa57723,0x39f9722f,0xba56f497,0xba6a5a85,0xba917c0a,0xba0f31ad, -0xba1c4140,0xba57d572,0xbacc7e57,0xbb722d51,0xbb4f3ef0,0xbb422f8a,0xbb4198c0,0xbb514e40,0xbb1040f9,0xba85d238,0x3a548c20,0x3b35ee60,0x3b8dd8a5,0x3bc2b4de,0x3be00ba4,0x3c065183,0x3bc6b989,0x3b57e63c,0x3adf2260,0x3b218d6e,0x3b20a366,0x3a26fadd,0x3b1cc49c,0x3b05a8ab,0x3b9bd00c, -0x3ba33898,0x3b56eeec,0x3b4e482c,0x3b078135,0x3ac31555,0x3ae2022f,0x3abc7527,0x3b1ae024,0x3aafabdb,0x3b1ea14c,0x3aaef247,0x39345d82,0xba371ec4,0xba822c7d,0xbaa594fb,0xbaa9e642,0xba7bfdf1,0xbab48486,0xbab2bdd1,0xba78fdee,0xba55e1ad,0x3a82702e,0x3ae74901,0x3b1c415f,0x3b428f5b, -0x3b3c0faf,0x3b179355,0x3b628e80,0x3b984ee6,0x3bc19113,0x3b8bbcb3,0x3b5b9011,0x3b3f657c,0x3b16a921,0x3ab9ac0a,0x3b06113b,0x3af375cf,0x3b0c6cec,0x3b304d74,0x3b0b7e58,0x3b40de12,0x3b277782,0x3b276125,0x3afb13e2,0x3ac5cb9d,0x3a54bb91,0x3908158d,0xba905112,0xbac25bd1,0xbafe1434, -0xbae6205e,0xbabd808c,0xbac0c9e6,0xba2e5f44,0xbad3b552,0xbaa6daa7,0xbace3a60,0xba22a4ee,0x38449a86,0x3a0125da,0x3aa232c1,0x3b067b32,0x3b3ddc4c,0x3b2738a2,0x3b14c0ab,0x3b3396bf,0x3b1de5d1,0x3b13db3f,0x3af6c76e,0x3b15ff01,0xb9bc54b1,0xb80e960d,0x3ab0167c,0x3a81c568,0x3ac3f3ec, -0x3accec74,0x3ad7bbab,0x3ae4d584,0x3a8b9bc0,0x394d4cfc,0x39b6d20e,0xba6435e3,0xbac1d650,0xbadd0b78,0xbace17d5,0xbaf9a5c7,0xbb147d3d,0xbb075e97,0xbaa4e391,0xbaf679f1,0xbb2a7862,0xbb0a1637,0xbb1e2a1a,0xbb00153e,0xbae5b48f,0xbaa5647c,0xba947040,0xba70b1af,0xb9b57fb0,0xb9ee7b29, -0xb9ea2687,0xba0041b2,0xba365dea,0xba0e57a5,0xb9f42308,0xb985a1d6,0xbb430af1,0xbb5400b4,0xbb328114,0xbb6ebb42,0xbb52e8fe,0xbb6441d8,0xbb6b5bb7,0xbb773931,0xbb6c0edf,0xbb2a56a7,0xbb180465,0xbaf65f07,0xbafc2e92,0xbaea8a69,0xbac4f37f,0xbaafeefb,0xbaaf8e95,0xbaf6d01a,0xbab0e46f, -0xbb3abb2c,0xbb19700e,0xbb17ce14,0xbb08f7a9,0xbb036716,0xbaf7d4d5,0xbae2df04,0xbb12f61e,0xbb1c2931,0xbb2bb454,0xbb387cf4,0xbb276d2e,0xbb236f43,0xbb2724ac,0xbb16e42a,0xbb2c9ed8,0xbb3f9be3,0xbacf5058,0xbad0fea6,0xb9aad31d,0x39171d3a,0xba24ec23,0xb92d1002,0x39d40cc7,0xb8e559b1, -0xb965ea0d,0xba18e4dc,0xba631255,0xba67fe69,0xba58a436,0xba4f6a17,0xb987c342,0xba89ca14,0xba97fbce,0xb9cbec6a,0xba7630c7,0xbb10d9d6,0xbafcceac,0xbafef273,0xbaf9a75c,0xbaf8b029,0xbaef99e4,0xbade6f99,0xbae2c0b7,0xbad53679,0xbad77f3c,0xbad64b85,0xbad9f03d,0xbaeb457c,0xbaedb83f, -0xbaded941,0xbae002b9,0xbad519c0,0xbb1b294b,0xba2dbcd2,0xb9583c9f,0x36a4bbae,0xbaf7a396,0xbac2b17e,0x3a8cbb19,0xbae558e3,0xbad4d34e,0x38f6e643,0xb64ea1c5,0x393445eb,0x39dc4568,0x3a1b51d5,0x3a619464,0x3a3ba2a2,0xbabe0ae4,0xbad8d123,0x3abc5c83,0xba928ed6,0xbad81e5c,0xb95965ae, -0xb9d17d36,0xb9d1a252,0xb921a83f,0xb6e5f399,0x37e81ab2,0xb88d2a43,0xb95648e3,0xb9c8a7e3,0xba02e2b7,0xb9e7d16e,0xb9d5ee92,0xba181530,0xba1164b9,0xb9f28325,0xb8a290d2,0xb98c4014,0x39c0137f,0xbabbd9e4,0xbabeed3d,0xba16f45d,0x39a65495,0xba94325a,0xbaf554ae,0xba1c00c9,0xbad30efe, -0xbb309216,0xbae954d4,0xbb04d773,0xba8e4201,0xba6c6deb,0x3995d6fd,0xb99a7ed9,0xb8f1e3e9,0xba06c4e8,0xbac54c6f,0xbafcfcec,0xba4c2eeb,0xba4dc5ca,0x38510f32,0x3943eb23,0x3983be0f,0x389ad78f,0xb973812e,0xb99b096d,0xb9a343f1,0xba0a3376,0xba62b721,0xbab9e09d,0xbaa143d5,0xba2362be, -0x3a6af73a,0x39bf1cd5,0x3a6c6ec6,0xba3d3f35,0xbae4ade2,0xbaabdfa4,0x39777bac,0xbaf3a4e1,0xbb257bf8,0xba4164a3,0xbb5aaa37,0xbb4400c8,0xbb6f1129,0xbb074408,0xba851760,0xbaeba1b5,0xb84b5d89,0x398737de,0x39bb8afc,0xb9b971dc,0xbac04d07,0xbac0701e,0xba8faec7,0xba67927a,0x3a0f12fd, -0x3aa255b8,0x3ad33741,0x3a66bd3f,0x399d2bd4,0xb9dfd291,0xba8619cf,0xba48667c,0xba884331,0xbafa8864,0xbac4bcec,0xba2a43de,0x3aee5bca,0x3a1565a5,0x3af505d6,0xbacc838a,0xbb475816,0xbae99019,0x3aed7d4c,0xbac1ecc4,0xbb192c00,0xba8b516e,0xbb8df9a1,0xbb9bd7a4,0xbb593020,0xbaf314d9, -0xba905dec,0xb9c92b2c,0x3a82028d,0x3acdb88b,0x3adf699b,0xb90a6788,0xbb008ccc,0xbb3419c1,0xbac7d3b9,0xba91bd9a,0x3a410117,0x3ae83b8d,0x3b04fc12,0x3a649380,0x39238a92,0x38258f4d,0x393f2ee2,0xba635934,0xbaf11f98,0xbb4aaa76,0xbb13ae01,0xb9aca18d,0x3b831e1e,0x3b0b56f2,0x3b052a3b, -0x3984534e,0xbad786da,0xba9e109f,0x3b1d9638,0xbb40c9d3,0xbb5cbdbb,0xb9b7ca32,0xbb5d93bc,0xbb83353a,0xbb48e324,0xba7b89ef,0x3a16e880,0x3a57a3aa,0x3b022c68,0x3b1dbcdf,0x3b27ae64,0x3ab2b235,0xbaef9d59,0xbb13cf48,0xbaceb196,0xbaa48655,0x3ac9935b,0x3b4c20fd,0x3b7a0c5f,0x3b1ff3bc, -0x3a978200,0xba3dd21b,0xbadab954,0xba8a9d20,0xbae7fa1d,0xbb21f02e,0xbb015f34,0x39182044,0x3b904b9f,0x3b08da63,0xbb568abb,0xbbabfe49,0xbbff78e6,0xbbb44127,0xba89b836,0x3b228475,0x3b64f5c6,0x3b3532f9,0x3a607830,0xba7958a8,0xba815a3e,0xbaad43e7,0xba643312,0x3b3ef928,0xbb44f675, -0xbb819a3d,0xbb0bf91c,0x3770d112,0x3a5d990c,0x3a9f4ac6,0x39dcf6cb,0xb9c4d01b,0xbae857fe,0xbba82231,0xbb771c1d,0xbb4e2cee,0x3bca1096,0x3c2680bb,0x3becf1c5,0x3b872a89,0xbaaa7423,0xbc032c95,0xbbed0d5e,0xbbbcd30f,0xbb7a8364,0xbb4b680b,0x3a06bde5,0x3b7edce2,0x3c09b579,0x3bcf8519, -0xbb5c536d,0xbbe4c5c6,0xbbe1b23a,0xbb71a27c,0xbabb97a5,0xb9761f3d,0xba5cf60f,0xba5f57eb,0xbada0de3,0xba1cf69c,0xba831e0b,0x39bbe37f,0xba09c6cc,0x3ad73ed9,0x3aea9fba,0x3af7adc4,0xba8e53e7,0xbb180389,0xbac4bcde,0x3ab2ad9f,0x3b43e753,0x3b603997,0xba9f5dbc,0xbb8699bf,0xbc1cda07, -0xbb07741b,0x3adfd418,0x3b3ac13d,0x3b144ec4,0xba89aaaf,0xbbe9a7d6,0xbb914f77,0xbb19f0f9,0xbc58f0a4,0xbc56605d,0xbbe974f3,0xba292f6d,0xbb92a11e,0xbba71da7,0xb96315fe,0xb9e6ab27,0xb97236f3,0x38f92691,0x38d8287b,0xb9bb6c1b,0xbade0d7d,0xbad069f1,0xba889183,0xba88e54d,0x3a23d799, -0x3a97e595,0x3aab26e0,0x39ecb964,0xba997dc1,0xbad671ff,0xbb2cd894,0xbb47646d,0xbb32be29,0xbb6bfce2,0xbb628c24,0x3ac051bf,0xba9d1589,0xbb85441a,0xbbdb1d8b,0xbb9f5fe1,0xbb8efe90,0xbbd81e14,0x385c8a16,0xbb578a93,0xbc355f8e,0xbc11fc89,0xbbc6890c,0x3b49f30b,0xba65928c,0x39f4375f, -0x3a96ba9d,0xba6a474d,0xba53630b,0xb93dff56,0xb8afe0e5,0xb86203e9,0xba89f242,0xba1e0167,0xba94abba,0xb95068d5,0x39a7aa39,0xb97ca5de,0xba5db297,0x3a21106f,0xba28f427,0xb9ecadb7,0xbb33ce9e,0xbb727466,0xbba60354,0xbb87d3c6,0xbb4b1039,0x3b2b112e,0xbb3e731d,0xbbe93004,0xbc253c50, -0xbc0b427c,0xbbdd5c62,0xbbb84eca,0xba450c84,0xbb115c45,0x3bc0ff52,0x3c3775c5,0x3c08e18d,0x3b3e3691,0x3afdc08c,0x3b3c3cb7,0x3ae22326,0x3a2c01e7,0x38ee3560,0xb8fed824,0xba38a9c2,0xb9b71f0c,0xb898bf13,0x38b8ba92,0x3a0db9ec,0x3a5207dd,0xb9382085,0xba82442e,0xba2c4a34,0xbaa2529b, -0xba843a32,0x3a0892bf,0x396d6d2b,0x3a91767f,0x3a71d8af,0x37e62181,0xbaece0c5,0xbbcc442f,0xbb331a7d,0xbb0395c5,0xb9c18a5a,0xbbe239ff,0xbc0f6e67,0xbbde71b4,0xbbf1070a,0xbbcc2e76,0xbbbb3444,0xbba2b804,0xbb9ce617,0xbaea318a,0xba9ed6d4,0xbaa763c4,0x3a01caff,0xba1f4fba,0xbac64611, -0xbabd70ee,0xbab6f489,0xba343dd4,0xba560e06,0xba678b09,0xbabd10f0,0xbb5be632,0xbb924acb,0xbba12d8d,0xbb8faae4,0xbb645333,0xbb2e4d7c,0xba8aebc9,0xb7ed8ec6,0x3a50a581,0x397b54df,0x3a95c330,0x3ab1829e,0x3a8e41fd,0x3a4415a8,0xbadd8fab,0xbb87ef93,0xbbb2e19b,0xbbcf5b8b,0xbbeeac94, -0xbbc415fb,0xbb57ebf3,0xba4bcfb3,0x3a9f03b8,0x3a537d34,0x39f5fe2d,0x39c9f1b5,0x3a12dfa3,0x3a009d7b,0x3a603b41,0x3a59edc5,0x3aa9916c,0x3ae37f39,0x3aba5a6c,0x399b0e0d,0xba598904,0xbada1703,0xbb050b38,0xbad762d9,0xbabca92c,0xba50014e,0xba9366ee,0xbaa250ae,0xba9fd88c,0xba231663, -0xb831f5a9,0x3a430747,0x3b0b6ed0,0x3b3ee49f,0x3b5909bc,0x3b83622c,0x3b8c0355,0x3b8231f6,0x3b485977,0x3aa2ecf7,0xb9d0b91e,0xbb1edd89,0x3a23f6fa,0x39c37d04,0xba505b9e,0x396dd326,0x3a550fab,0x3b01b746,0x3b021ab2,0x3b1d5b66,0x3b080605,0x3b131091,0x3ac89f31,0x3abe12fc,0x395be204, -0xba0cff10,0xbab99c35,0xbaf988ba,0xbb2b73f8,0xbb1b62f0,0xbb08e14a,0xbaf89cab,0xbaad1936,0xbabc0aa7,0xbacb812b,0xba84f73b,0xb9df5a48,0x392a1a00,0x3a54cc08,0x3ade11a2,0x3b31f843,0x3b14e35c,0x3ade954c,0x3abfb318,0x3ab60802,0x3aacb27f,0x3a90dd9f,0x3aaa8e06,0xb73e4871,0xb9872c7e, -0x393ab959,0x3a254f0c,0x3a2cf6b9,0x3a42caa0,0x3a99c568,0x3afc345c,0x3a72bf8c,0x39bbf3de,0xba592d79,0xba8c8dc3,0xbacf327f,0xbb11b82e,0xbb04f1e1,0xbb0d7986,0xbb207ea2,0xbb191b3f,0xbb3327de,0xbb271267,0xbaf9a7a7,0xbb089c6c,0xbaf6e85f,0xbacf7e84,0xbaaa5f1d,0xba7f9a8f,0xba946fae, -0xbab9a464,0xbad0479d,0xbaf325d7,0xbb016ece,0xbb03ef1f,0xbaeda91c,0xbaca173b,0xba866cc6,0xba4d0953,0xbb697ff5,0xbb639463,0xbb86cfaf,0xbb81d986,0xbb8b43a3,0xbb8a843b,0xbb8be451,0xbb8681ba,0xbb7a8961,0xbb7e3957,0xbb6f070c,0xbb7271b2,0xbb614d76,0xbb66c63a,0xbb7c4aea,0xbb6a3ff7, -0xbb5418de,0xbb4922cb,0xbb3e628d,0xbafbb0bf,0xbad95d75,0xbaea613c,0xbad4feeb,0xbad7faa0,0xbacff12b,0xbabf0b84,0xbae689c2,0xbaebe438,0xbb098d4c,0xbb29664e,0xbb3811d9,0xbb67d952,0xbb5fe308,0xbb48aa4d,0xbb55db54,0xbb668dc2,0xbadc4237,0xbad851a2,0xbb1da49d,0xbb06d999,0xba6fe99c, -0xbb0573a2,0xbb03890a,0xba976e8c,0xbaac6281,0xbab20692,0xbab0d123,0xbaba871b,0xbabc9043,0xbaba1b40,0xbb3bc94b,0xbb371aaf,0xbabd77cc,0xbb36876d,0xbb385608,0xbaf47bac,0xbb036416,0xbb006d22,0xbaf6d673,0xbaf0b938,0xbae67c96,0xbada9252,0xbaf4153a,0xbb008c57,0xbb0b09bd,0xbb10e7b5, -0xbb0cce2d,0xbb15ac50,0xbb0eb411,0xbb05cd9d,0xbb02f75a,0xbaf20dee,0xbb52b46d,0x3b40bf80,0x3b005080,0x3b10d304,0x3b3f6801,0x3aa007a8,0xba952c06,0x3b1c51aa,0x3a9a2485,0xba689f51,0xbaba2596,0xbae48d3c,0xbad3bb98,0xbad48f54,0xbb0149a1,0xbacd1973,0x3abf1ad7,0x3b3148fb,0xbacacb45, -0x3a7e0fa8,0x3b189389,0x3afe5c30,0x3b00ccff,0x3b155250,0x3b20fad3,0x3b2d3a55,0x3b2aa1ff,0x3b1a0254,0x3b12bd33,0x3b0aafa3,0x3b050194,0x3b140df0,0x3b1461f2,0x3b10c4b6,0x3b188a4a,0x3b164f35,0x3b0b15d4,0x3b090134,0x3b20fe70,0x3b478f57,0xb86b320c,0x3aa29178,0x3aa30009,0x3a9480bb, -0x3a8cd539,0x39b624c5,0xb9f074a8,0xb8f82535,0xb94c8974,0x3a4eb7ce,0x3a8c537b,0x3a1bdf47,0x391860e4,0x3b184aa1,0x3adbcd71,0x3ad5695e,0x3a7c7828,0x3b1feb73,0x3b0f71b2,0x3b42f96f,0x3b8177c7,0x3b836545,0x3b854c89,0x3b88d363,0x3b6ff1bd,0x3b72bd0a,0x3b726e63,0x3b7bd8f1,0x3b6801d0, -0x3b5a1024,0x3b837fbc,0x3b863fad,0x3b70c12d,0x3b5b5387,0x3b30eee6,0x3b38b369,0x3adb2a4d,0x3b006599,0x3b0b7321,0x39848ce6,0xba10ec52,0x3a2da96c,0xbac54d48,0xbad01320,0xb9c9c16a,0x395b4aad,0xb9c20111,0x3a7a12ad,0x3ad3dc4c,0x3b1906d8,0x3b2cd653,0x3aa7f0df,0x3ab83e98,0x3aae74a7, -0x3b33eeac,0x3b7ebfe9,0x3bba5e99,0x3bcae6f4,0x3bc63c2c,0x3ba74108,0x3b94d08b,0x3b7db1de,0x3b7bcb1c,0x3b91185f,0x3b9c232e,0x3b866013,0x3bad2c9f,0x3ba18e6d,0x3b7ff88f,0x3b68ba1a,0x3b3ef133,0x3b044f38,0x396d58a6,0x39ef851e,0x3b35ca13,0xba1cd148,0xbaf7779c,0x3743b7f8,0xbb8a90be, -0xbb97863e,0xbb4d43be,0xbb10e349,0xb8a93205,0xb99f8e4e,0x3b05132b,0x3b1141dc,0x3b30fe56,0x3adf6333,0x3a35d3d2,0x3977eef8,0x3b2e7b7d,0x3b7e32d5,0x3bea51c2,0x3c0790e0,0x3c128d78,0x3bee9994,0x3bc9e790,0x3bc3ffde,0x3bd8a835,0x3bc56d20,0x3bcad179,0x3bab0272,0x3bf84b45,0x3beb04f5, -0x3bbffd59,0x3ba1eb6c,0x3b405b8f,0x3b3b3153,0x3ad31481,0x3a3b93ae,0x3b6437ba,0xbafbd011,0xbb4b5b9d,0xba50877e,0xbb7a9b48,0xbb8674db,0xbb46fcdb,0xbabe174c,0xb5e1edb9,0x3a583000,0x3b074540,0x3b40dab7,0x3b561bbe,0x3ab0400d,0x3a33e10b,0x3a46cbb3,0x3b47ec33,0x3bbb5b63,0x3c1d6f7b, -0x3c2b0717,0x3c2aca69,0x3bf8b762,0x3bd2eb9c,0x3ba256b6,0x3b8ec04a,0x3bd79df5,0x3be5f6f1,0x3bc2f94f,0x3c102ffe,0x3bff8f69,0x3bad846d,0x3b94204f,0x3b495759,0x3ad52cab,0xbaaea7d5,0xbb0191ae,0x39ed1ed9,0x3b584025,0x3ba4cdd3,0x3b88d3aa,0x3b004450,0xba4e776c,0xba898154,0xbaa1fb39, -0xba89729c,0x3b4b7508,0xbb3bf148,0xbb7c2bbe,0xbae4c229,0xb995db04,0x3b221ed7,0x3b6717a8,0x3b31eac2,0x3a3b97ba,0xbb55dc42,0xbba01b51,0xbb435200,0xbb87376b,0x3bf6201c,0x3c3d0214,0x3c1e6ae0,0x3bfa30d7,0x3b9cff3c,0x3b083ba2,0x3af40762,0x3b1c9b6a,0x3af0df01,0x3b838941,0xb9c7a2f1, -0x3bb5f49f,0x3c3fbd0f,0x3c0b38f5,0xba3b5ab4,0xbba8cc64,0xbbe8a21a,0xbb5989bd,0xbad3c426,0x3790f843,0xba093b97,0xba34ffd7,0xbacca251,0xba5c0dc9,0xb95b4472,0x3a977f9e,0x3a6e8aae,0x3b133134,0x3af1db33,0x3b84b3ec,0x3b6f817b,0x3b97f6e4,0x3bf4f167,0x3bebf955,0x3bde5b4f,0x3b738a06, -0xba4ef730,0xbb747eaf,0xbc068643,0x39d21aaa,0x3b96081c,0x3b8112f2,0x3b9e7d91,0x39eb94ef,0xbbef9495,0xbb4be68e,0xbb0cbb6a,0xbc2535a4,0xbc3a51da,0xbbd8a1db,0x3ad28a3d,0xbb8bad2a,0xbbaff565,0xb906d53d,0xb9236d89,0x39361370,0x38bf8c9c,0x39a3d234,0xb8ccc989,0xbaf72fb3,0xb9ee6201, -0xb99a7bf4,0xb9f094a9,0x3ae062a8,0x3b42033a,0x3b63a215,0x3afcc2b0,0x3a94218e,0x3a539ffb,0x3aeff290,0x3b047c14,0x3b42e0e2,0x3aa3dd08,0x3985aaed,0x3b69ea20,0x39ee1314,0x3a8207f3,0x3b877037,0x3bf6f05f,0x3bfc76fc,0x3b132c0e,0x3b1281bc,0xb90bdad7,0xbc24c6ba,0xbc21d88f,0xbbafbf3f, -0x3b7ada1e,0xba29c3ce,0x3a02dd71,0x3abe9724,0xba159713,0xba0c7e7e,0xb7689b4b,0x37985e69,0x388fcdcf,0xba72d8a8,0xba184a63,0xb956b902,0x3a1e30c2,0x3a5846d9,0x3a984e87,0x3ac782df,0x3aa63ba3,0x3a8b3a13,0x3a762c89,0x3aa33bfa,0x3afcd3c7,0x3b195647,0x3b7addce,0x3b802f8a,0x3c036a0f, -0x3a9ded48,0xba91212b,0x3abeb3c3,0x3beb0555,0x3c34a39f,0x3c56472f,0x3bce607d,0x3bb0fd2d,0x3b96e1d8,0x3c450d1e,0x3c0a2574,0x3b8bace2,0x3b2d913e,0x3b44af0c,0x3b1d103e,0x3a5fafb5,0x39161286,0x390359e6,0xb9dfbd3a,0xb93bbe7d,0xb9066475,0x3a149922,0x3a8f4340,0x3ac0b7eb,0x3a6245d6, -0x387309be,0xb782bae2,0x3a867b03,0x3b396063,0x3ba9138a,0x3b97d317,0x3b86e00b,0x3b28419d,0x3b25ebf8,0x3ac3c587,0xbacdae89,0x3a93a913,0x3b23c8bd,0x3b18fcfd,0x3b9cb859,0x3bd321ba,0x3c5095d1,0x3bcc904e,0x3c0cbd80,0x3af40ae7,0xbbc36d07,0xbadb3e98,0xbaf068e6,0xb98e576d,0xb8ae972e, -0x3a96b899,0x387b7157,0xba7c0bdc,0xba852476,0xba95dfb7,0xba0a1854,0xba0375cd,0xb9e98d6c,0xba75be41,0xbb3bb207,0xbb3ffec2,0xbb3ebb5d,0xbb40f9a3,0xbb300472,0xbb3bd7ee,0xbaa8c064,0x3a17c837,0x3b3fbd6c,0x3ba63a0d,0x3bddd1a9,0x3c0087cb,0x3c1fc912,0x3be94876,0x3ba17ef3,0x3ba4d46d, -0x3bbdaec7,0x3bc3d520,0x3badebf7,0x3bf6c52a,0x3af6745d,0x3b479a23,0x3ae71e02,0x3aa4a1a2,0x3abd49c8,0x3a1d58dd,0x3a315475,0x3a2a9f19,0x3a63b3e6,0x3aa825b5,0x3a80e18f,0x3b0b16c3,0x3adfb62b,0x3a4e9557,0xb8968a9f,0xba1fbc58,0xba83e223,0xbaadd793,0xbaca661c,0xba98fd54,0xba04b783, -0x39eb770f,0x3a2a2562,0x3b2602fa,0x3b5a4998,0x3b861380,0x3b9ef866,0x3b9c1b64,0x3b814acf,0x3baaa95a,0x3bd9423b,0x3c10b100,0x3be1ea06,0x3bb5fed4,0x3b8b1c2a,0x3b2f96f4,0x3b8373c1,0x3ae46bb0,0x3b16a762,0x3b175779,0x3b4a3eb7,0x3b64641c,0x3b575ff1,0x3b4449cd,0x3b37d983,0x3b237048, -0x3afce183,0x3abc2b7b,0x3a1b67fa,0xb8b0b537,0xba1e5441,0xbab3d23d,0xbaecc638,0xbabd318c,0xba9ada86,0xba83e554,0xba22c1a1,0xba10dc41,0xba3d0100,0x398aaceb,0x3a89f696,0x3acd879c,0x3b3064d8,0x3b7759c9,0x3b9f1f0a,0x3b9db414,0x3ba01010,0x3bc770e3,0x3ba40be5,0x3b8537c3,0x3b665064, -0x3b5b045b,0x3b021e17,0x3b262ef5,0x3af705f8,0x3b2852f7,0x3b153c3c,0x3b045ea9,0x3b1f1c7a,0x3b464915,0x3b0e6a98,0x3ac75f5f,0x3a9d9086,0x3a5c4ec6,0xba3660d8,0xba1f3dec,0xbacc0690,0xba9b857f,0xbae0a6f6,0xbac10fe0,0xbac42572,0xba681f9f,0xbac884e0,0xbac2c6a4,0xbae60d74,0xbacf54a1, -0xbacd8c5e,0xbab1066a,0xb9fef457,0x393a3c9b,0x3aaac30d,0x3ab272c4,0x3ac1f0bf,0x3ac9af5a,0x3aa9e085,0x3ae2e066,0x3b04358b,0x3b0535ea,0xbaf4bb84,0xbaf4f860,0xbb5d09c1,0xbb20c47f,0xbb0e9c01,0xbb184004,0xbaf8edd8,0xbb4d39e2,0xbb1d3df1,0xbb203350,0xbb290e03,0xbb2240e3,0xbb026053, -0xbb1c5bb6,0xbacde75e,0xbabfe9d9,0xbb07fe1e,0xbab2777f,0xbb044750,0xbb0b63dd,0xbb0280ba,0xbae2c648,0xbacb464a,0xbaba1e5f,0xba9e5f51,0xba83af9a,0xbab9c681,0xbabd5a71,0xbacaaaaa,0xbabb8f1a,0xba64d326,0xb9cd2dc5,0xba187874,0xba689a3b,0xbab30050,0xbacaafe9,0xb9aed1d7,0xb8c28a99, -0x391c1f1d,0xba477b86,0xbb09fd77,0x39d56643,0xb8e3854b,0xbad0a089,0xbb023f37,0xbb0d322a,0xbb16503d,0xbb264354,0xbb3e45fc,0xbb46259c,0xba5e373b,0xb9ba973d,0xbb358ba4,0xba8f60ec,0xb9e5bc06,0xba8560d5,0xba6ea6ef,0xba7e0ad9,0xba81be5d,0xba888932,0xba8a4bbb,0xba81202e,0xba6f53f6, -0xba2e4544,0xba1558a8,0xb9ff7e11,0xba09dbd8,0xba1bf5a6,0xba1f9785,0xb9efafcf,0xb9bbaa76,0xb997a6ab,0xba9e4a8f,0xbace271f,0xba8b6582,0xbaf373d9,0xbab00cbd,0x3a77a9db,0x3b4d9679,0xbaccee27,0x39796dfc,0x3b37a8bb,0x3b37c4e0,0x3b4322f0,0x3b361230,0x3b43af8c,0x3b6e5e9a,0x3b43d70f, -0x3a143a98,0xba839606,0x3b6e0ae7,0x3a9822aa,0xba4faee9,0xbae68d9c,0xbaa7ae7b,0xbab25298,0xba969cf4,0xba8dc6c4,0xba8ccfb2,0xba9aa1b7,0xbaa4562d,0xbab68198,0xbaba279a,0xbabb74d3,0xbab5eafe,0xbacb6baf,0xbaba8b13,0xbaaa0b64,0xba6769fc,0xba97fb2b,0xba74e986,0xbb193ccd,0x3b0b4e4e, -0xba1a4718,0x3ac652ba,0xba370aa1,0xba8b5d63,0xb811bd74,0xbaf5f88e,0xbae1a35b,0xba5759b7,0xba8fb2f9,0xba9d4954,0xb9115533,0x3b1c3642,0xb9099745,0x3a7874e0,0xb7d66040,0x3a1eeed1,0xbb1d4c2c,0xbaf9b65d,0xbae0ab19,0xba8fa5d0,0xba81ee72,0xba83151c,0xbab2da55,0xbac34f0a,0xbac57dcf, -0xbabb0420,0xbb09c18e,0xbb1c2074,0xbb29687c,0xbafaa5cd,0xba9cce25,0x39866526,0xba018c3e,0xba3ff04c,0xbac9641e,0x38494dee,0xbade8be5,0x3a2b74d6,0xbab9a351,0xba9de3cb,0xbae3f15e,0xbb17d78b,0xbb703dcc,0xbb0444cf,0xbb589772,0xba211687,0xbaf2ccad,0x39e525b8,0x3933f156,0x39a7f47d, -0x3a166622,0xb9049008,0xbac4fa23,0xbb25d326,0xbad3e954,0xba593bd1,0xb930bd0e,0xb8d90b14,0xba8217d0,0xba9314e9,0xbae79c5f,0xbb04596b,0xbb177f24,0xbb256971,0xbb463fe8,0xbaf59556,0xba5bd705,0x3abc67aa,0xb921c4f8,0xb93e143e,0xbafcdc1b,0xb98c93b0,0xba828775,0x3aaaf240,0xba9853d1, -0xbb02ed55,0xbb01ff77,0xbb978212,0xbbae6bf1,0xbb4cf80f,0xbb3c73af,0xbab425a0,0xbad20bc3,0x3a9a154b,0x3a827a84,0x3a8ca995,0x39b56731,0xb9c292ee,0xbaeb645a,0xbb445633,0xbae68313,0xb9df8e3a,0x3951ab5e,0x392e07d9,0xba8a7268,0xba99a3b5,0xbaa72c37,0xba6802a8,0xbb53edf4,0xbb81813f, -0xbb8dedba,0xbb028dbf,0x392944f8,0x3b790173,0x3ad76551,0x378409a6,0xba92a42b,0xb8b4d26f,0xbaaa08b7,0x3a9d63f8,0xbb39cbc4,0xbb6e3e9e,0xbaa2086a,0xbb8ae5f0,0xbb9e6f09,0xbb464de0,0xbae80def,0xba25ee9b,0x391fdfac,0x3aa565d2,0x3b011644,0x3b1b2181,0x399609c7,0x3a807bb8,0xbb021386, -0xbb275040,0xbadd78a4,0x396d8fbe,0x3ac93715,0x3ad31e73,0xb976df7c,0xba364a24,0xbb106f1c,0xbb31fda2,0xbb498c0e,0xbb61682d,0xbb61d174,0xbab6067d,0x3a6d6c3d,0x3b89a820,0x3ac90a9a,0xbb12bac3,0xbba82388,0xbb44f732,0xbad5d040,0xb924c00e,0x3b787fba,0x3b903691,0x3b990441,0x3aee68cb, -0xba85a0a5,0xba98991f,0xbad933f2,0xbaa732af,0x3b4f7e0b,0xbb54e4df,0xbb994c6f,0xbb4ed0e8,0xbb472b59,0xbaad5c35,0xbb36f4de,0xbba4a6af,0xbb965f40,0xbbe54cdf,0xbbe7be7d,0xbbac19bc,0xbb9db7ae,0x3b6d2966,0x3bcaa83c,0x3aebe8dc,0xb9efb8f0,0xbbb04340,0xbc33922d,0xbc065356,0xbbd5dda2, -0xbbaa32f9,0xbb53c384,0xbb492c32,0x3aa7a349,0x3c2c186a,0x3ba5dec0,0xb99697e6,0xbbe319be,0xbbf0e785,0xbb7e6102,0xbafd0fa5,0xb8e7133c,0xba140219,0xba096e65,0xbabcd318,0xbab4885f,0xba2fc0b5,0x3996937a,0x398851e9,0x3ab6b55f,0x3b37c5db,0x3b4d6cf8,0xbaf485c5,0xbb012fa4,0xbb298464, -0x3ad3528a,0x3b2d7cbd,0x3a9107cb,0xbb2379a3,0xbba445be,0xbc1f184b,0xbaccbf83,0x3b22e2b2,0x3b2a1e74,0x39e3bdee,0xbb5830a0,0xbbf76961,0xbba5a2bc,0xbb8aba57,0xbc3259b0,0xbc56649b,0xbbf60e72,0x3a2fcb4a,0xbb9eaa9a,0xbbc70140,0xba9634d2,0xb9a6be51,0xb7bc4c77,0x388819a1,0x389d6d09, -0xb9c600db,0xbadb102c,0xbac1895b,0xba6d8dde,0xbaa3933f,0x39abe14c,0x3a818d5b,0x389f2369,0xba75f264,0xbaf3b95f,0xbb3bb729,0xbb81fab3,0xbba52a8f,0xbbb1442b,0xbbca1bae,0xbbb1ca16,0x39f980c7,0xbb9f883c,0xbc06a8f9,0xbbf1ad65,0xbbba4d2a,0xbb8d98c7,0xbb9e5697,0xbb064738,0xbb7eb5d1, -0xbc21dadc,0xbc009413,0xbbc0625b,0x3b8642bc,0xba89d337,0xb9037a58,0x3a6584ab,0xba3f1f6d,0xba05624a,0xb8cf2956,0xb9319d4f,0xb968533b,0xba7980dc,0xba6779ea,0xbaa07cea,0xb9f140f0,0x3891c8ab,0x39fe2d8b,0xba270f80,0xba38d7ac,0xbab21617,0xbac854a6,0xbb9533c9,0xbbbfe5e2,0xbbe4b9a5, -0xbbbcdc4d,0xbb81c35a,0x3b258a96,0xbbcb6a68,0xbc359713,0xbc3ed038,0xbc0e1c47,0xbbb6d8b9,0xbb5154dc,0xbadbe446,0xbb892f9c,0x3a5870d0,0x3c0f0ec5,0x3c00a281,0x3b89f727,0x3aadae18,0x3b0f4f49,0x3b211fb5,0x3a15e957,0x3882c574,0x39297f96,0xba0ccb06,0xb99a3ef3,0xba4744b1,0x393a3bc4, -0x3a77039f,0x3acd475d,0x39ae1a8a,0x39212cd7,0xba37cb80,0xbab92217,0xbaa555b5,0xb98323a0,0x39ab9a52,0x3a600e3e,0x38cd71e6,0xb920c71a,0xbab68e33,0xbb885fac,0xba5aa00c,0xba05806b,0xbaccc8f1,0xbbc3b203,0xbbfd67c8,0xbbde98a0,0xbbdb9305,0xbbaf3787,0xbaa56eed,0xb9e1a556,0xbb87cae7, -0xbab15032,0xb9e3a0b3,0xba089fc5,0xb8e592bf,0xb9d9cf7e,0xbab66cbd,0xbaa54f26,0xbab397c2,0xba238f70,0xba55f986,0xb9f558e8,0xba85ae4e,0xbb42f0ab,0xbb733ca7,0xbb84cb30,0xbb6a15bc,0xbb6c3647,0xbb25669f,0xbad8a227,0xb9cdeeec,0x39bb029f,0xb9ae6f83,0x3a48b1ac,0x3a4b4bf1,0x39bfdcad, -0xba9bb931,0xbb752424,0xbbc23bc2,0xbbe3949b,0xbbea8612,0xbc02653d,0xbb984da8,0xbbb707f0,0xbb499967,0x3a0da5da,0x38fe7468,0xb8dc2994,0xb90c5be0,0xb972253e,0xb806cd24,0xb88572c5,0x395809a7,0x38e6bb93,0x3a95d086,0x3a952a31,0x3a15f093,0xb998db7a,0xba8e4235,0xbade0757,0xbafd289d, -0xbac541d6,0xbac15e7c,0xbad740ed,0xbac2639d,0xbabf0e42,0xb9035fa0,0x3a4c38c8,0x3ada31da,0x3b4461ac,0x3b6ee97e,0x3b880628,0x3b8cbf01,0x3b6ff98d,0x3adefc40,0x3a70185e,0xba1f0c56,0xbb20a349,0xbb8cf881,0xba2bafb7,0x3b19cc7c,0x3a134c2b,0x3a94e4fa,0x3b005955,0x3af0c767,0x3b24dd75, -0x3b1b7329,0x3b17aa05,0x3b123359,0x3b05a1a9,0x3ae62202,0x3a86818c,0x3977e7ab,0xba2f50d3,0xbaa59c60,0xbafa01fd,0xbaf810d2,0xbb031d5e,0xbab170fc,0xbb04a0df,0xbadcacf9,0xbaf178bc,0xba91c40f,0xba0309c0,0x38c23f22,0x3a656480,0x3af18a45,0x3b45253b,0x3b174ed9,0x3ac1b7da,0x3a3ff673, -0x3a69b427,0x3a422a63,0x395cc96d,0x3a718dc7,0x3a48a142,0x39998723,0x3b1a9804,0x3b0143cf,0x3b2ee2d8,0x3b323aa2,0x3b23e2a0,0x3b1c4dc7,0x3b007519,0x3a9530c4,0x3a80c958,0xba3339ce,0xba20d5be,0xbada04cc,0xba8558df,0xbae1ea0e,0xbb0b3275,0xbb03a901,0xbac61105,0xbb27387f,0xbb16af6f, -0xbb0bb660,0xbb0b5b5d,0xbaeed1a6,0xbadde63a,0xbab7c9a0,0xbabc6cce,0xbad4a812,0xbacf223d,0xbaf1e7f3,0xbaf4ac4d,0xbb029915,0xbadb9545,0xba86419a,0xb98b9027,0x395a9976,0xbb538919,0xbb45da30,0xbb01e3fb,0xbb5ea6b8,0xbb660171,0xbb4c9a36,0xbb6398bd,0xbb16ca83,0xbb5089bf,0xbb3361b5, -0xbb32dc39,0xbb2fbf48,0xbb4e7df9,0xbb4c37a0,0xbb60d263,0xbb4783a2,0xbb15720a,0xbb4b5dab,0xbb0b5bc5,0xbb1ca9d4,0xbaef57bc,0xbb07192f,0xbaf1a8f7,0xbaf25c7d,0xbae22784,0xbac6d8cb,0xbb0bbbe2,0xbb160847,0xbb32ad79,0xbb576477,0xbb6788e3,0xbb897a84,0xbb79781c,0xbb64f101,0xbb690564, -0xbb6b9888,0xbaed6cc0,0xbb01971a,0xbad58139,0xb99f22e6,0x3a400085,0xbab6ff03,0xba1be7ef,0x3a3ede07,0x3a42e57b,0x3a051411,0x399d6e7b,0x39a2edf9,0x39fbe0de,0x39ea0fed,0xbad5b24b,0xbb2b4fcb,0xb89b159e,0xbac1bcf7,0xbb1d26e2,0xbb1b5a71,0xbb1cbd0b,0xbb1c31b8,0xbb192d45,0xbb196f03, -0xbb16a504,0xbb10b498,0xbb1bbb14,0xbb1c85d4,0xbb248d3b,0xbb26a3a6,0xbb20d316,0xbb29c020,0xbb1fc7c7,0xbb143ddd,0xbb09a00a,0xbaf9de84,0xbb6a7280,0x3b2dfe75,0x3b02755c,0x3b425546,0x3abd418f,0xba9305ce,0xbb1877fe,0x3aa7f75a,0xba4e9e9a,0xbb32b4c8,0xbb47d66d,0xbb50d44a,0xbb312cd4, -0xbb36df81,0xbb5ab578,0xbb349859,0xba3421c5,0x3a9b92bf,0xbb2423c9,0xba8fdd60,0x3a6500f5,0x3b2918ef,0x3b090405,0x3b1b1643,0x3b278b15,0x3b345f82,0x3b305890,0x3b1a1ab7,0x3b1544cf,0x3b0ded9f,0x3b0da800,0x3b14de89,0x3b11d8e4,0x3b0ea8f9,0x3b12fa2f,0x3b107571,0x3b0a1229,0x3b0a1fa9, -0x3b2bb7f6,0x3b33fc3b,0xbb35c508,0x3a467701,0xba084aa4,0x39c17748,0xb8ad0bfe,0xba5e94bc,0xba0bae2c,0xbab6739a,0xbaab6860,0xba527d77,0x39af2148,0xba30152e,0xbad174d4,0x3aaa2ac0,0x390668e9,0x3a6ac4ef,0xba4ea44e,0x3b044bca,0x3b2460a0,0x3b403ee4,0x3b824971,0x3b7f967d,0x3b7c5451, -0x3b73b565,0x3b663205,0x3b700182,0x3b7dc0ba,0x3b62a5d9,0x3b4662da,0x3b4c0bb7,0x3b6a8142,0x3b73e608,0x3b6788d5,0x3b428789,0x3b4cf48d,0x3b2c0a46,0xb9445bcd,0x3ac7c990,0x38a1d1d7,0xb9f1655b,0xbadf6513,0xb6951a05,0xbb24285f,0xba908252,0xbb04873d,0x39f99f5e,0xbaa28092,0xb9aba403, -0x3a0bebf5,0x3acd8473,0x3abdbbdf,0x3a02509b,0x39b6c06a,0x3ab03505,0x3b649f08,0x3b78793d,0x3bbd673f,0x3bc782ba,0x3bc2f523,0x3b9133f8,0x3b8d7483,0x3b726163,0x3b86d57c,0x3b7ac0d8,0x3b7f325c,0x3b6043d9,0x3b8a8628,0x3b838eb1,0x3b67e057,0x3b4f148f,0x3b60b379,0x3af8ff4d,0xbb09c873, -0xba2b8c15,0x3a82aa31,0xba747c4a,0xbb03b93e,0xba96b751,0xbb90e85e,0xbba3fbf6,0xbb5769fe,0xbb27882b,0xbaa4e51f,0xba3ecf41,0x3a76a0c9,0x3ad18bfd,0x3ada1705,0x3ab2fdc9,0xb946fe32,0xb902ef07,0x3b67ba23,0x3b7b7d54,0x3be8c54c,0x3bfeaf65,0x3c04cb30,0x3bbbf4cb,0x3bbb1244,0x3bbaefae, -0x3be8e1df,0x3b9cfb97,0x3b9483bf,0x3b935575,0x3bc32382,0x3bc43e9e,0x3bba8793,0x3b8135ca,0x3b5730bd,0x3b4bdb0f,0xb903aeb0,0x39799b6c,0x3ae089a1,0xbb025926,0xbb56a1e5,0xbad24757,0xbb915b86,0xbb9b7136,0xbb1122ec,0xbafde8e8,0xba2c9821,0xb81277ce,0x3afe57f7,0x3b25a543,0x3b10b432, -0x3b256913,0xb9b9c260,0x3ac1082f,0x3b8e39bd,0x3bbb2dbf,0x3c1c8421,0x3c268f89,0x3c1ff7d7,0x3bd0d3d9,0x3bc5b19c,0x3ba14444,0x3ba8e543,0x3bb36e0a,0x3ba76e68,0x3b903f3b,0x3bcd88ee,0x3bbb1cc0,0x3b9a6227,0x3b78f988,0x3bbca654,0x3b730352,0xbae0ab31,0xbae819de,0x3960aff9,0x3b59a5ba, -0x3bc063f1,0x3bad01dc,0x3b41c3db,0xba1a26e0,0xba85b1f7,0xbac7e505,0xba9a1130,0x3b55b1cc,0xbb4c5fc4,0xbb715627,0xbb8a9eb4,0xbb119698,0xbaefff66,0xba647d11,0x39a22993,0xba413b5f,0xbb5447d7,0xbb9e05b4,0xbaf5959d,0xbb0421a5,0x3c1b1697,0x3c488f3e,0x3c117b5b,0x3be71424,0x3b8ee084, -0x3a6ff7e1,0x3b15f6fb,0x3b5b0312,0x3b014f09,0x3bd1932d,0x3adf2897,0x3b5d0878,0x3be4ea95,0x3c0b982f,0xb98b4aba,0xbba0949d,0xbbfc4695,0xbb7d4a5f,0xbaf4b12c,0xb8865019,0xb98abe1c,0xb9812085,0xbaacaccd,0xbaa1ecd7,0x38a31168,0x3adff66d,0x3a9d00ec,0x3b050f1b,0x3a6899a5,0x3b670884, -0x3b904980,0x3b9a8072,0x3bf338af,0x3c033a81,0x3bd1cef4,0x3a43624e,0xbb4eed21,0xbba11ade,0xbbeef82e,0x3ab36831,0x3b93d492,0x3b11925a,0x3a735f9a,0xbb46360f,0xbbeed393,0xbb26af2e,0xbb4a8d7e,0xbbf8c35b,0xbc24f84c,0xbbd5a2cb,0x3ac29c2d,0xbb8a2c41,0xbbc1f78d,0xbaac8e40,0xb985389a, -0x39bd5baf,0xb51682fe,0x398a0a3a,0xb8c1189f,0xbacb83cd,0xba439145,0xba30b9f3,0xba96c120,0x3a391a37,0x3abad550,0x3b3e9979,0x3afe8503,0x3a4c1b14,0x39bae686,0x3af99477,0x3b122d37,0x3af5335c,0x3aeda491,0x3a9b61b9,0x3bad022e,0x3a54817d,0x3986a3ac,0x3b3797bf,0x3b99239d,0x3babcbea, -0x3b712b1b,0xb9727b67,0xba9a22a8,0xbc030b2b,0xbc164a31,0xbb9b25dd,0x3b5c0de0,0xba72c1e3,0xb9109dd9,0x3a4ebc6f,0xb9e44977,0xb988b402,0xb6fb0bf6,0xb71ef31c,0xb92631f1,0xba2eed21,0xba3f45ac,0xba288cb1,0x38b0ee80,0x3a443f74,0x39f095d0,0x399f7416,0x3aee6861,0x3a68637e,0x3a0cd7b5, -0x3a504bde,0x3aa9975d,0x3ab90d63,0x3b6ec480,0x3b7ae23d,0x3c0bc3b4,0xb9bacfee,0xbb167af2,0x3aaa78ce,0x3bdaf1b8,0x3c2af172,0x3c4abba6,0x3b88060f,0x3b3f7664,0xbaa37bb6,0x3bfdca84,0x3bee9b09,0x3b926b33,0x3b04755e,0x3af5ce94,0x3b1b3a4b,0x3a5f8b1a,0x395e1d96,0x390cbd42,0xb9334135, -0xb9862410,0xba0bb227,0x39e73685,0x3a916b52,0x3af0a723,0x3aab4aa0,0x39aeec65,0x3a9a75d5,0x3b00e51f,0x3b5e7ba1,0x3ba6d75f,0x3b93da02,0x3b50ec03,0x3a9577ab,0x3a756a3f,0x38d140db,0xbb166b4b,0x39ff4a3b,0x3adc8882,0x3b08aa6b,0x3b944e67,0x3bc44eb4,0x3c353a95,0x3b89f7d9,0x3bff615a, -0x3ada5c86,0xbbc3c129,0xbafdf206,0xbb10b819,0xb97dff54,0xb8baf2c6,0x398c8969,0xb9f56e9e,0xba7b5dea,0xba68a539,0xba8da12d,0xba07dff9,0xb9c356b5,0xb93a3384,0xb9f16b29,0xbaf4fb8d,0xbb3e5909,0xbb576173,0xbb54bad0,0xbb1a5eec,0xbb44d326,0xbabc70b9,0x388b7b6a,0x3b03de97,0x3b6b0eed, -0x3b9dda05,0x3bb46863,0x3bdc2d42,0x3b929b76,0x3b4049c5,0x3b55409c,0x3b552006,0x3b53c9b4,0x3b6b35f4,0x3bc1e965,0xba446c3f,0xba40ac8c,0xbad7038e,0xba69cf53,0xb9e990b2,0xba407e57,0xb9005e03,0xb96637c5,0x39b2e339,0x384e51af,0x39e60517,0x3a9b5225,0x3ac86208,0x3a8d1ccf,0x398b8a9d, -0xba03a5c8,0xba8120ad,0xbacb699a,0xbb092271,0xba9946af,0xb95735a4,0x3a6a1979,0x3aa1c0ac,0x3b361002,0x3b678116,0x3b8bbcfa,0x3bae3a7e,0x3bb74d90,0x3ba8bbe0,0x3bc1020f,0x3bd62cd9,0x3bfef927,0x3bcde33d,0x3b9a7e8c,0x3b309f0b,0x3a0f3f9d,0x3b84753b,0x3a84e9f4,0x3ac7b961,0x3ad2c344, -0x3b1f803d,0x3b71b67d,0x3b3d7552,0x3b35b2e2,0x3b23ede4,0x3b2d5eaf,0x3b07f9cc,0x3aff8c08,0x3a8667d0,0x3a63fc28,0x38b5b343,0xba57c294,0xbafdecaf,0xbadbb62c,0xbaadc204,0xbad834ce,0xb99581fa,0xb9c7e5a7,0xb9aa8285,0x39f6ec0d,0x3a9e4136,0x3ae05a04,0x3b3f2169,0x3b840b86,0x3ba984c0, -0x3bab2783,0x3bae719c,0x3bd00d9d,0x3ba94688,0x3b8595f5,0x3b6c85ef,0x3b3ed2ee,0x3b5cc5a7,0x3b6c2b5e,0x3afb5092,0x3b464418,0x3b13f666,0x3af2e25f,0x3b19c1a6,0x3b501f20,0x3b1d07d0,0x3b07b247,0x3aae1c97,0x3acb080e,0xb8886fdc,0xb8568576,0xbab6d59e,0xba54d6e8,0xbabb5357,0xba9de0eb, -0xbaf26496,0xba2a56ef,0xba446689,0xba932d7b,0xba9d6a5c,0xbaa32af7,0xbaac1ec1,0xbaa9f0f6,0xb97db47d,0x39d637c9,0x3abdd912,0x3ad9b00b,0x3afc4a0e,0x3b0e8083,0x3b0d33be,0x3b32b0a2,0x3b54e306,0x3b4ff0fb,0xba9f32d9,0xba755b32,0xbb5c5a18,0xbacdf440,0xbad86a77,0xbad11693,0xba8c8dd1, -0xbb1c3574,0xbadf20db,0xbb263c79,0xbb410a38,0xbb5115bd,0xbb261442,0xbb515a75,0xbb1ddf78,0xbb140452,0xbb3bfc02,0xbacf4acd,0xbb30894c,0xbacab348,0xbad56c6c,0xbaac3c35,0xba971fc5,0xba8622e4,0xba49539b,0xba0cd67d,0xba4ad47c,0xba23836d,0xba26dae3,0xb9f70858,0xb80b078e,0x39b05a25, -0x392c6db3,0xb9cf2335,0xba4f8c85,0xba60da69,0x39884c7b,0x3a13acfc,0xb9962cb1,0xbad73921,0xbb1fc525,0xb81d814f,0xba8c9b82,0xbb131721,0xbb30385d,0xbb2ec7f2,0xbb2da661,0xbb42d3b2,0xbb65858f,0xbb72d182,0xbaeaa3ac,0xba2784bb,0xbb4dc8b0,0xbb0306fe,0xba57be50,0xb9cc9ca0,0xba009062, -0xba1195fc,0xba1e5359,0xba3143d4,0xba3f159a,0xba39d138,0xba28d19e,0xb9d4651b,0xb99e31fc,0xb946e74a,0xb916aa0f,0xb8ed252d,0xb8971354,0x38897522,0x397cf331,0x39aa88ba,0xba86823f,0xba13c52d,0xba0ccb02,0xbacfc747,0x3a1273cd,0x3b284bd4,0x3b330a82,0x36f83631,0x3ae6e4c0,0x3b4725d6, -0x3b45fe0b,0x3b46bc89,0x3b2bd057,0x3b366d62,0x3b572ba8,0x3b2ece9f,0x3b0c89a7,0x3a431f40,0x3b453fd8,0x3b24bc45,0x3a6b5e4e,0xbab6b0c7,0xba2b7fb9,0xba2bc2ed,0xba070e59,0xb9f083e3,0xba012414,0xba2f4e96,0xba36c9b8,0xba4c74cc,0xba3efdd6,0xba420e05,0xba3fcf64,0xba610760,0xba2571c0, -0xba0de245,0xb9b49e4e,0xba162409,0xba2f0f75,0xba73ddf4,0x3b6eaebb,0x384465ec,0x3af79b82,0x399da8ae,0x399c956e,0x3970a1ec,0xbac17a8e,0xb9f9140e,0xb8c9d28a,0x38f2dae7,0xba0350bb,0x39f70d51,0x3b35a37c,0x3a42ed64,0x3adf8278,0x3a5ca79a,0x3b0b65e2,0xba54b683,0xba8cf30a,0xba190800, -0xb89d4708,0x375a1316,0xb7d5c5bd,0xb9b76c21,0xb9e9b87e,0xb9c88d77,0xb95fef58,0xba8a4994,0xbaad08e5,0xbaa335ca,0xb9199130,0x39cf004a,0x3a811518,0x394d0766,0xba264f49,0xb9e1a854,0x3aeb26bb,0xba21a363,0x3a84ba60,0xb9e19931,0x38159eae,0xbaf76537,0xba960c4c,0xbb4822a2,0xb9e3e6cc, -0xbb2dd0b2,0xb997153a,0xba8c0fd1,0x3a88a3a0,0x3a420ba5,0x3a5e4629,0x3ab4bc5a,0x3ab27cfe,0xb9906a51,0xbaafeead,0x37ba943a,0x3a0e480d,0x3a946339,0x3a643b49,0xb91928e3,0xb8345284,0xba151fd2,0xb98fd274,0xba761cc6,0xba7f2456,0xbaab31a5,0x3a0ab753,0x3a99d13f,0x3af9e1e4,0x3a2116a6, -0xba39efb0,0xba185d80,0x3af3aad7,0x390212d5,0x3a57be68,0xba0f84fa,0xbabfa5f4,0xbb1d68ac,0xbb94092e,0xbbb137c0,0xbb529b31,0xbb63501f,0xbaa4ac16,0xbb190fc2,0x3ab790e7,0x3a48d7ef,0x3a3e4f18,0x3a90be65,0x3a9f3ccc,0xb885cb50,0xbad78797,0xb7364c64,0x3abac0c2,0x3b01daf1,0x3b0145e3, -0x3a20d77e,0x3a2ffc39,0x3a18ce27,0x3ab876b0,0xbad383c9,0xbaf0ec2f,0xbae9917f,0x3aece68e,0x3b4daf1d,0x3b86ce53,0x3b0cf1ee,0xb9cfaeb3,0xba09032f,0x3ac38d01,0xba2fd897,0x39ba9891,0xbb087faa,0xbb5cd51a,0xbb1193f1,0xbb95618f,0xbba14368,0xbb28600f,0xbb0ab13e,0xbab9e8c3,0xba298d11, -0x3a759051,0x3ae60de8,0x3afb64ac,0xb84e58fe,0x3b40515a,0xb9ae2c17,0xba30ac2d,0x3a866f3f,0x3b2b1eb4,0x3b6a9d3f,0x3b47eca2,0x3a224029,0x3a115855,0xb9dac78a,0xb97d27c1,0xba7a569a,0xba7b73a7,0xba874de7,0x3b31f380,0x3b8022ba,0x3b842913,0x3b023632,0x3aca49b7,0xbaae40e4,0x3b1d5953, -0x3b1600d4,0x3aa12298,0x3b9f6eef,0x3bb97d9a,0x3bc2f85d,0x3b454c4c,0xb9f26590,0xba566a55,0xbaa896e0,0xba9bf8cb,0x3b4b6272,0xbb4037e1,0xbb9035e5,0xbb7cc8d1,0xbb9e7428,0xbb3509cb,0xbb97990c,0xbbe3df7c,0xbbd0e0de,0xbc223a42,0xbbfc01b9,0xbbaf1eb0,0xbbac80f8,0x3b2c9e8b,0x3b85224a, -0xb9239c74,0xbac816fd,0xbb92f373,0xbbe7efdb,0xbb894071,0xbb448867,0xbb4d59c1,0x39b8015d,0xbb84df50,0x39f3d803,0x3c2bb161,0x3b8eb7d3,0x3b2b81e7,0xbbc32742,0xbbf61b0a,0xbb6e8501,0xbb0fb51f,0xb8a1c298,0xb95bb901,0xb9838079,0xbaa09197,0xbae05fa0,0xb8a79eac,0x3a1dd9ea,0x3a93ff3a, -0x3aa5fff1,0x3b413696,0x3b8c1796,0x397ed355,0x3ab808f4,0x3a3dba03,0x3b803f4f,0x3b5cbabf,0xb9eb8b51,0xbb5acb13,0xbbae7017,0xbc01a7d6,0x395973de,0x3b7d3548,0x3b1eeadd,0xb95d5c54,0xbb86332d,0xbbeffd4f,0xbb887ea7,0xbbbbd09c,0xbbfd9edd,0xbc2bed34,0xbbcfdbaa,0x3a5f3fac,0xbb88a9d0, -0xbbb54a39,0xbb07feb8,0xb94d9ca6,0x3951bce9,0x372d3168,0x39228dc5,0xb93e1d7c,0xbabd1c56,0xba82c8af,0xba33a057,0xba9711b4,0x396418fc,0x3a6dc86e,0xb8b7e5a0,0xba7e7094,0xba938e40,0xbb18d701,0xbb254d71,0xbb6fb7f7,0xbb8e2b13,0xbb988a30,0xbb8542ba,0x3a0df1c0,0xbba7fa94,0xbbe9a452, -0xbb3870a2,0xbaaebe66,0xb8681e66,0x3a2a1d72,0xbb4b0059,0xbb316d27,0xbbe3f9f5,0xbbd09dc5,0xbb9b16b5,0x3b3cc0cb,0xba0f9e06,0xb9789881,0x386f266d,0xba0f431c,0xb9448642,0xb8c16148,0xb8054143,0xb93d2651,0xba36d224,0xba791f09,0xba7e3e9b,0xb9adb998,0xb7627871,0x3a738ce4,0xb90fd598, -0xba8919ee,0xba83c6e7,0xbacd46d4,0xbb65d919,0xbb8a5895,0xbb9b2307,0xbb2ef36a,0xba9bb472,0x3b772ad0,0xbbc4f5b9,0xbc1c79a8,0xbbd64ca0,0xbacfbf6a,0x3b1f33c6,0x3bb24888,0x39df7193,0xba015648,0xbacceaf0,0x3bb4475a,0x3bbda6b2,0x3b9c0224,0x3a0d95a5,0x3a71c9fd,0x3b275fa7,0x3a1ef7a8, -0x3907daf6,0x399e5cca,0xb94f9109,0xb999d615,0xba7940e4,0x39ad5644,0x3aa4a3d7,0x3b087c90,0x3a7f2739,0x3a97970b,0xb8aed9ae,0xb92352bd,0x39da909e,0x3a8bfaab,0x3b09642e,0x3aec477e,0x398b58c5,0x39dfe047,0xb9504228,0xba99cf86,0x3a8f3111,0x3aca2141,0xba86ad51,0x398c236d,0x3943c639, -0x3a20db97,0x398a96ed,0x397a743b,0x3b62e43c,0x3ad47f1f,0xbaf9d57d,0xba6a5b16,0x39fd2c52,0x39e36e03,0xb9e1f7ad,0xb8d0944d,0xba4fce2c,0xba13f485,0xba80cdd5,0xb9e5232e,0xba016888,0xb7de6303,0xb9f1f173,0xbb05087b,0xbb1cd3db,0xbb2d6c7c,0xbb29027f,0xbb43378b,0xbb1360c7,0xbaef2d4b, -0xb9af1c5d,0x3a579097,0x3a9c31b7,0x3b14a97e,0x3b1bb9fe,0x3b297385,0xb9a4cae2,0xbb1daf15,0xbb632718,0xbb6ff1ca,0xbb4ed5ed,0xbb59d50e,0x3a43b5ff,0xbb91b962,0xbb4a3c90,0xb9acbb74,0xb9fc20ee,0xb97c04e2,0xb9e1513b,0xba1bc57a,0xb92a20fc,0xb9b7c8f4,0xb82bcb08,0xba1f5f95,0x3a0ed231, -0x3a5351e1,0x3a5fbb32,0x39a3dbfa,0xb998f0b4,0xba7a2f81,0xbaf9b81f,0xbae12f8d,0xbb0494e7,0xbad512d7,0xba63a080,0xba0f83ea,0x3ac02c41,0x3b2718d3,0x3b5d81ec,0x3b8e2a8e,0x3b96cc3c,0x3b9a3581,0x3b9498e6,0x3b6e107a,0x3acf375e,0x3a288304,0xb9bc7401,0xbafc9712,0xbb4c9dd1,0xb9aae643, -0x3b4a22f7,0x3b02651c,0x3b02dfbd,0x3b3d64ed,0x3b09cd5a,0x3b3ed061,0x3b112ed3,0x3b1b0467,0x3b0b2c5d,0x3b14fd1e,0x3af4d727,0x3ad2073f,0x3a82b457,0x394277be,0xba1107ae,0xba9ed74d,0xbaa88e11,0xbad2703e,0xba7294ac,0xbb02350c,0xbab90020,0xbac23688,0xba1d6625,0x37f27692,0x3a061673, -0x3ac0f9c4,0x3b1ff05c,0x3b679861,0x3b4201a6,0x3b19d917,0x3af7271c,0x3ad8482d,0x3aa18d14,0x3a26fc45,0x3a897afe,0x3b09b50f,0x3ae7131d,0x3b734641,0x3b43e0ff,0x3b6f4d5f,0x3b668c30,0x3b43777d,0x3b21c4db,0x3b25f50b,0x3aec2712,0x3b229a33,0x39da864c,0x39d0503c,0xb9e39d7e,0xb985b900, -0xba8264c9,0xbacf025a,0xbab919f6,0xb9f4133d,0xbae201a3,0xbb069df2,0xbae63a25,0xbb02ea49,0xbaece615,0xbaf4ba5b,0xbadde84a,0xbaa4ea80,0xba879d35,0xb9dc1eeb,0xb9c69d49,0xb8d7baf3,0xb77449b4,0x3984caf6,0x3a816783,0x3ad253ac,0x3b0380b8,0xbaee7609,0xbaca7946,0xb9c03dd7,0xbafcb735, -0xbaf23124,0xbabbd8a3,0xbae541a7,0xba664af0,0xbb057bc2,0xbacd8179,0xbaf2e3c4,0xbae4655e,0xbb1a7d36,0xbb1d1a09,0xbb1543ef,0xbb004b70,0xbabc0ffe,0xbb1d51b2,0xbacc50de,0xbb2e7fc5,0xbb092222,0xbb0df28c,0xbafab96b,0xbaf13e46,0xbad46a9b,0xbab0552f,0xbb01367a,0xbb04ab74,0xbb190226, -0xbb2b863a,0xbb2a7a1d,0xbb33ec6f,0xbb1d99be,0xbb1e21ba,0xbb1c417d,0xbb126918,0xba92daa5,0xbaa4856f,0xb992d576,0x3a51c09a,0x3a6145af,0xb98649c7,0x3a0aacf7,0x3a93ba69,0x3a97d5b0,0x3a645617,0x3a17ce4a,0x3a126291,0x3a26bea2,0x3a0a9f8e,0xb9b09dc4,0xbac1f2a8,0xb7cb76c3,0xb9a6ef1c, -0xbaa2ad7e,0xbb0733dd,0xbb002824,0xbb03ed6e,0xbb05523a,0xbb09bb51,0xbb0ab96d,0xbb068905,0xbb096718,0xbafe219a,0xbafcc46c,0xbaf06d0a,0xbae148ce,0xbae40170,0xbad28474,0xbabf9b81,0xbaa363c1,0xba8ec8a7,0xbb376771,0x3a4cd690,0x3a552c76,0x3ad1c37f,0xba2668de,0xbafdf508,0xba98a498, -0xba0e6c07,0xbae163ff,0xbaff7172,0xbafb1662,0xbaeba00f,0xbab72b0a,0xbab7223e,0xbad6571d,0xbabcd60d,0xbadcab2e,0xba3806b0,0xba6eaead,0xbad91b5f,0xba44fbaf,0x3ab027bc,0x3a660d8d,0x3a805eb6,0x3a967cbc,0x3aaa515e,0x3aa359b9,0x3a750fb4,0x3a6c62f1,0x3a541aa1,0x3a67f40e,0x3a59f369, -0x3a47fa3a,0x3a2d5ca5,0x3a44d5c5,0x3a4b1242,0x3a6c1f3b,0x3a5ac31d,0x3aa3086a,0x3a20547e,0xbb31cd2b,0xb8f7b4d4,0xba986ed0,0xba030c0a,0xba996e44,0xbacb223c,0xba8796fc,0xbb16c734,0xbb021a89,0xbb04b3ed,0xba4f77b4,0xbabc6b3c,0xbab37602,0xb892e4f3,0xba459e74,0xb78ebaf8,0xbab90bca, -0x3919e333,0x3a8c94cc,0x3a93231b,0x3afe54ac,0x3af6b085,0x3ae86bd0,0x3ab531a4,0x3abe4dcf,0x3ad5b6ae,0x3b015e06,0x3a80ec92,0x3a089aec,0x3a34e1e2,0x3a9a2085,0x3accb77e,0x3b05ac05,0x3aa1d538,0x3af24a6e,0x3a796628,0xbab594dc,0xb82dd997,0xbabab4b8,0xba9e5568,0xbb0ad5c9,0xbabc9dcb, -0xbb38eae6,0xbac3b36f,0xbb51f9cb,0xba21e9f9,0xbaca05fb,0xbafbe3cf,0xb9c33108,0x39aefbea,0xb7eafc63,0xb8b0388f,0xba08732d,0x39ea6f37,0x3aee2b16,0x3ae19039,0x3b4db7bb,0x3b640df5,0x3b5d9176,0x3ae36ac4,0x3b011790,0x3abf9ae1,0x3b0b351a,0x3a83744b,0x3a3c5e90,0x399dd805,0x3a979e23, -0x3ac7854a,0x3b14dee9,0x3ac5af02,0x3b092f85,0x3a0354ba,0xbb39b0f1,0xbac1bc89,0xba2ac099,0xba8665bf,0xbaea4b26,0xbb365135,0xbb90fad3,0xbbab2130,0xbb6df473,0xbb456668,0xbb10984b,0xbae16028,0x38d0b0a4,0x3a266091,0x3997ceb3,0x3a299107,0xba406a26,0xba2fd1bb,0x3aec1344,0x3ae3481a, -0x3b811a9c,0x3b8f8d0d,0x3b8d5189,0x3affcfd6,0x3b31d053,0x3b39a8d7,0x3b9358c3,0x3a42c928,0x381b2861,0x39ddeed7,0x3af1ccf1,0x3b40f990,0x3b9291bd,0x3b058855,0x3b0d340d,0x3ae24240,0xbab309d5,0xba444835,0xb9ee9d22,0xbb029033,0xbb5260dd,0xbb27d86a,0xbb914e49,0xbb9dd335,0xbadd5d4f, -0xbb022480,0xba9b9967,0xba93244e,0x3ab88b98,0x3ae06353,0x3a74cf04,0x3b1b1371,0xb9cc1b0d,0x3a8520a2,0x3b3ec4cf,0x3b49c3f8,0x3bb89423,0x3bd28939,0x3bbe6564,0x3b335895,0x3b3e13a9,0x3b0fec8c,0x3b4cf0a0,0x3ab7829b,0x39b2e942,0xb8925239,0x3accc332,0x3b1d8f59,0x3b6fd39d,0x3b0e5235, -0x3bacddac,0x3b32a98d,0xba873add,0xb991818e,0x3a06e709,0x3b7da8ae,0x3bc7f290,0x3bba4ab0,0x3b681795,0xb858d7a6,0xba16e44e,0xbaa284db,0xba79782c,0x3b44e6d1,0xbb399d50,0xbb5cae9d,0xbbbef10e,0xbb8f8a91,0xbbb67815,0xbbb5381e,0xbb8a6db7,0xbb81c0c0,0xbbab9135,0xbbb94122,0xbb182a7d, -0xba8e7d96,0x3bfbf0d6,0x3c11190e,0x3b923cb7,0x3b3bd3aa,0x399f786d,0xbb4d1d0d,0xba23eb37,0x3a545109,0xb91ab075,0x3ba5d3a9,0x3adbe277,0x3a37df8d,0x3b5e1d71,0x3bc3851e,0x3a859a49,0xbba8daec,0xbbfa986a,0xbb8065c6,0xbb094932,0xb995c7e0,0xb8dfccc3,0x372654e7,0xba92b5f3,0xbac7cb63, -0x38aa8fb4,0x3ac0b629,0x3a879527,0x3ab1cced,0x3a5eae6d,0x3b3de24a,0x3b464727,0x3b398354,0x3b793806,0x3bbe243f,0x3b7f5ecb,0xbae347e2,0xbba14a67,0xbbbdadb4,0xbbcd06e8,0x3ac3d7d0,0x3b6e5736,0x3a4453f8,0xbb2d1bf1,0xbbbd6e6a,0xbbe41b27,0xbb28c2c5,0xbba4a328,0xbbca0782,0xbc0a5589, -0xbbbad3f0,0xb97ac097,0xbb69a8ae,0xbba4bfa8,0xbb22b48b,0xb9918f3c,0x39a7ade0,0xb815c868,0x39390d25,0xb86c720a,0xba8eeccf,0xba9b8c5a,0xba8ec3ab,0xbada42ea,0xb9f1f6ac,0xb9ced96b,0x3a66830a,0x3a3e7ade,0xb9b5cd5d,0xba94c416,0xb94d1d8e,0xb9cf0910,0xbaeffd50,0xb9ac545a,0xb915744a, -0x3b7f87e4,0xba6d06b5,0xbb38ef37,0xba61df6a,0xba8e8fc9,0xb9b32fde,0x3b389522,0xbb68fdb3,0xbb2454ee,0xbba1a691,0xbbdbb650,0xbb86c795,0x3a94d227,0xba1c6db8,0xb9b7754a,0xb9d88d44,0xb9d7c10c,0xb90b2ba0,0xb8a1d42d,0x37964b56,0xb9628cc9,0xb9d8c269,0xba58fb39,0xba9823cc,0xba095d63, -0x39944ac4,0xb991a375,0xba9bf3f1,0x3a854348,0xb93514f4,0xba4236d1,0xbab66c4f,0xbad03491,0xbb19867d,0x3a1f0de7,0x3a9ee147,0x3bb53534,0xbb7e2ed8,0xbbba9da5,0xbb00de0d,0x3adf350a,0x3b96f950,0x3bd39efb,0x39d0aae8,0x3a22a470,0xbb54ab13,0x3b29ecf1,0x3b8adac8,0x3b70221e,0x39ffefd8, -0x397b9e49,0x3af784cf,0x3a248646,0x3956c61b,0x38af3aa0,0x38047919,0xb9be1413,0xba4c2909,0x39458a71,0x3a8289fc,0x3b025079,0x3aa9d871,0x3a34e46b,0x3ad18835,0x3adc1301,0x3b11b0d1,0x3b35575f,0x3b339310,0x3ace2dd7,0xb974106b,0xba4beed5,0xbacf03f7,0xbb483822,0xba2a4f4b,0x3953c8e5, -0x3a3e8d92,0x3ae73eac,0x3b030025,0x3b384d2f,0x3a119125,0x3ae73478,0x3a1b76db,0xbb350430,0xbaf4316f,0xbacdfa78,0xb6eaf65c,0xb8ce07af,0xba461638,0xba2a2984,0xba405e45,0xb9de3af6,0xba58ed98,0xb9e9914e,0xb99bef93,0xb62a1751,0xb90b3085,0xba85fab4,0xbb2a2c6b,0xbb5b1841,0xbb595221, -0xbb10c5e5,0xbb260917,0xbaba330b,0xb9f7cf2b,0x3a0fd94a,0x3a824970,0x3ab94ea2,0x3abb9e07,0x3ab79ec5,0xb9bfb229,0xbac15774,0xbaf8d5b2,0xbb399d53,0xbb38861b,0xbae16da4,0x3a35b578,0xbb8489fb,0xbb916585,0xbb6e6dcc,0xbb1c3d94,0xbaee15e5,0xbacb34a0,0xba54ffac,0xba3e0fc0,0xb9558bee, -0xba536cf1,0xb9972252,0x3889e04f,0x3a5e19ce,0x3a81264a,0x39d0c587,0xb9e3faa6,0xba7d8681,0xbae8d875,0xbb16e6ea,0xbaba21d9,0xba2c523a,0x396cb078,0x3a458089,0x3afb506f,0x3b30530a,0x3b61b0fc,0x3b97d9fe,0x3bab79d4,0x3bafe613,0x3baa5d3b,0x3b92b0b1,0x3b5ea0a9,0x3b2bf5e5,0x3a9bc113, -0xba70811f,0xbb2dab36,0x3ac8fea0,0x39e4a177,0x39a950d0,0x3a2ae61e,0x3ab732f4,0x3b2f84fe,0x3b09b927,0x3b026f09,0x3af2912b,0x3b1451b5,0x3b057697,0x3b0aadb5,0x3abb873a,0x3ac863f7,0x3a03aa88,0xb9b8eb30,0xbaed824b,0xbae80057,0xbad30fbc,0xbb00f457,0xba452ec0,0xba4ad278,0xba11d7a2, -0x372e92c7,0x3a1f8216,0x3a8de74e,0x3b0a8895,0x3b49ee7a,0x3b86e01c,0x3b816aeb,0x3b748db8,0x3b7a8731,0x3b415901,0x3b113e58,0x3afd84ed,0x3a9bc96a,0x3b5c8394,0x3b4ac436,0x3b0466e5,0x3b2c9e5b,0x3b057f5a,0x3adc2279,0x3af15686,0x3b1c25ee,0x3b0953e8,0x3b0395cf,0x3ac0d174,0x3ab6567d, -0x3a06f766,0x3923970b,0xba5e1e78,0xba3393d4,0xbaae9dfe,0xba980c0b,0xbae321fc,0xba8805c6,0xba273859,0xba9320f1,0xba8ace86,0xba9799cb,0xbaa11362,0xbaaa775e,0xba057c97,0xb9359069,0x39eaf175,0x3a41a4b4,0x3a979af1,0x3ad01471,0x3af8795e,0x3b1e0c46,0x3b411652,0x3b4210d0,0xba5085f7, -0xb9a9a70c,0xbb0403a5,0xba603dba,0xbaa31fb4,0xba7efccf,0xba4103ac,0xbaa9dbaa,0xbaa7de91,0xbb15fa1c,0xbb367a00,0xbb4d0db4,0xbb3710ff,0xbb59aaa4,0xbb461018,0xbb391a35,0xbb423338,0xbb0fd5a3,0xbb4042e7,0xbaccefa2,0xbacf099e,0xbab97a4b,0xbaa35d21,0xba99b802,0xba75d447,0xba36a440, -0xba5770a2,0xba0e29ba,0xba13d824,0xba15d8bd,0xba030953,0xba1595a6,0xba040128,0xba65edca,0xba66bf73,0xba3ff952,0x36dac0bd,0x39501c03,0xba793043,0xbad695cf,0xbab7c43e,0xba5c1ec1,0xbacaf3f9,0xbad0dfa5,0xbaf0d02f,0xbae03bad,0xbad596c7,0xbaf457d5,0xbb1279f3,0xbb1e5209,0xbb0e41e5, -0xbaba5b13,0xbb095353,0xbb14b39a,0xbacbbeee,0xba275b97,0xba5cf71a,0xba6abef5,0xba76ed47,0xba840052,0xba8a79ac,0xba8af988,0xba8d0991,0xba74336e,0xba687caf,0xba49de1d,0xba1cde14,0xb9fb0076,0xb9b5a1db,0xb98a2663,0xb89084db,0x381a7dcd,0xbaeaf070,0x3aa0e508,0x3a3c3987,0x399077f5, -0x3b073231,0x3b0dfb95,0x39f1dbeb,0x3ac2ce84,0x3ae729f3,0x3a71210f,0x3a604cff,0x3a3afdf1,0x39e9d6f9,0x3a099495,0x3a08ef34,0x39b81fa2,0x3b054208,0x3b017c55,0x39e6e2a5,0x3b012640,0x3afe1bcc,0x39ac1e08,0x3a4900c1,0x3a6e31c1,0x3a81374c,0x3a8e0ff6,0x3a847915,0x3a3ec17f,0x3a3e0f3f, -0x3a34718e,0x3a5212c3,0x3a5221db,0x3a446e25,0x3a2e5f8c,0x3a71ceb9,0x3a7676bb,0x3a61e6e4,0x3a4a14fe,0x3a2226c4,0x3ab1241f,0x3b0f4b4b,0x3a2fbce6,0x3a84f438,0x3a836dd6,0x3a8be481,0xb94ef977,0xba46a591,0x389b8487,0xb9491fa5,0x3a0746f4,0x396dfe46,0x39a8a021,0x3aa20956,0x3ab235b6, -0x3abee67b,0x3aae2897,0x3b02b573,0x3ab1d235,0x3a5cb102,0x3abf538a,0x3b02c561,0x3b0633cf,0x3b01ec21,0x3ae4df08,0x3ad8d909,0x3aeee5c1,0x3b09e10a,0x3aa286e2,0x3a70ceb8,0x3a964f01,0x3b19aa26,0x3b2a8c5e,0x3b1268ed,0x3ac8025e,0x3a453c07,0x3ac04d9c,0x3b086fc2,0x3a52d94e,0x3a20620f, -0x3992a0ad,0x39aadf80,0xbac9c3f0,0xba30a214,0xbadc088b,0xb94bce6c,0xba676a9e,0xb9c8e274,0xb9dd3246,0x3a8a47cd,0x3a9c132e,0x3a9d4940,0x3abce48f,0x3afa5887,0x3aa81376,0x3ab164ce,0x3b266bc1,0x3b527220,0x3b702404,0x3b51d0d3,0x3afebb79,0x3b0c137d,0x3ae511fa,0x3b2d2d3c,0x3adbda9b, -0x3ae35cf0,0x3ab7d0cd,0x3b5f029f,0x3b62e4dc,0x3b282b2f,0x3afbf934,0x39692b5b,0x3aae5380,0x3aed71c1,0x3a0fd246,0x389a46a8,0xb8e66622,0xba88cb78,0xbb33c1dd,0xbb85c522,0xbba406ac,0xbb70548a,0xbb63782a,0xbaa92ac6,0xbb2460cd,0x3a91be78,0x3a1790fc,0x39f5b499,0x3ac8439b,0x3ae7587a, -0x3aade28b,0x3aafe615,0x3b2c66b5,0x3b937586,0x3ba8bb72,0x3bac35c3,0x3b61442b,0x3b6e41f8,0x3b6ede77,0x3ba72dae,0x3ae34698,0x3aee24e6,0x3b02ce4e,0x3bbc1d82,0x3bc45670,0x3b9224ac,0x3b37c2d7,0x3a23fad7,0x3aa755dd,0x3ae4ce59,0xb8355fcf,0xb9bd7076,0xba9d3a4c,0xbb375b13,0xbb4adc96, -0xbb899ff0,0xbb8e3c5f,0xbaf1ea20,0xbaf76342,0xbacaff63,0xbab9f7d9,0x3a6337cb,0x3ac8e838,0x3a9690f8,0x3a15b7b2,0x3b43829b,0x3ae57d7a,0x3b3116b1,0x3b99d29d,0x3bd222f3,0x3be7331e,0x3bc6bfe9,0x3b4410d9,0x3b44ec04,0x3b2f6f75,0x3b776d4d,0x3b36cc88,0x3b32f1e3,0x3b1147a4,0x3bd6ac30, -0x3bd0645c,0x3b70168c,0x3b2e4d6b,0x3bc6d201,0x3b7baaf4,0x3bb28236,0x3b8c95cf,0x3b15e427,0x3baaa9dc,0x3bd79bad,0x3bc732de,0x3b82035d,0x39bcc43b,0xb93273cb,0xba349397,0xba3e5de2,0x3b2fee85,0xbb0aa093,0xbb53d1e9,0xbb997e38,0xbbafc424,0xbb870970,0xbba203e3,0xbbc79e3e,0xbbc4db65, -0xbc1cc6ab,0xbbe137f6,0xbb7d744d,0xbb5ed6cb,0x3b793083,0x3b8d1839,0x3a6e7cc9,0x3933bf31,0xba1fb447,0xb989f57f,0x3abd1f4d,0x3b0cf889,0x3a56a5f5,0x3bb40381,0xbb09ef52,0x3a55069e,0x3bf3bf5e,0x3b8b11d6,0x3b89c18e,0xbb915139,0xbbe788ce,0xbb56f0b4,0xbb0fd76c,0xb981ebdc,0xb80eae3d, -0x3820623e,0xba802880,0xbad99041,0x39cccb3f,0x3a951b11,0x3ad48d85,0x3a9b8c80,0x3b0a0d63,0x3b929a9d,0x3b6c5858,0x3bae1b94,0x3bb4252a,0x3bce2e62,0x3b820e12,0xbabaceef,0xbb891299,0xbbae9b3a,0xbbaa3b4b,0x3b161045,0x3b9fb623,0x3afce681,0xba400f64,0xbb8e837f,0xbbdeee0e,0xbb242460, -0xbbce074a,0xbb9d0c48,0xbbe64ef9,0xbb98c8ca,0xb9901509,0xbb36cee9,0xbb7da47b,0xbb261923,0x36164cde,0x39bb0704,0xb8b209ce,0x395382b8,0x38fa1f84,0xba85a7c6,0xba12e1e4,0xba189bec,0xba91ca7d,0x38036459,0x3a029321,0x39ea671b,0x37a366f9,0x392c3577,0xba6861c9,0x38c098c2,0xba18e7f1, -0xbab76b98,0xba2ea8df,0xba23692e,0x3ad1337c,0xbb3be407,0xbb445dea,0x3b521120,0x3b7d47fa,0x3b8fbcf1,0x3bd5a093,0xbb5b4d40,0xba6f48da,0xbb3feea0,0xbbaa8d04,0xbb7128ad,0xb8fa943d,0x3918f13a,0x37a7be1c,0xba4f863d,0xb99a5bc3,0xb8ce2cf0,0xb7d5cd68,0xb738d455,0x36c917fc,0xb9ace01a, -0xba47ecec,0xba2e1b07,0xb8f1cff1,0x38f39865,0x3a524410,0x391cd50b,0xb9bd057b,0xb9264753,0xba7bfc65,0xba886786,0xba4eed20,0xba5ce732,0x3b1f21f8,0x3b3cd959,0x3ba96ad6,0xbb810d34,0xbba4d86b,0x3aca6355,0x3be76c59,0x3c320f1d,0x3c5f0a10,0x3b46d09b,0x3bacf074,0xba4467c8,0x3aee4923, -0x3b0ce3f5,0x3b71b0d0,0xb948c837,0xb96fb26d,0x3af1f6d2,0x3a0ec8cf,0x39037ffe,0x387d8dca,0x38dcc5ef,0xb98b83ea,0xba41565b,0x39caf841,0x3aaa3a3c,0x3b184053,0x3acc7b5a,0x3adee652,0x3a91e3a6,0x3ae64fc9,0x3b343848,0x3b4ccc05,0x3b7ad39e,0x3b33d5f9,0x3a4a31d4,0x3a3a849f,0x39d5b883, -0x3a17c0ae,0x3ae866a5,0x3b38677e,0x3a8b3773,0x3be5da5e,0x3c0a7b19,0x3c09518d,0x3bfcedca,0x3bc65a87,0x3bb7cde0,0x3a90941a,0x3a414750,0xb9c9db20,0x3a813abb,0x3a536f37,0xba132f10,0x36cbfb46,0xb95f43da,0x39070ada,0xb9eec229,0xb975b436,0xb900949c,0x39937c5b,0x38df19d0,0xba5134e0, -0xba90f647,0xbabb8813,0xbaf7df7b,0xbafc8d51,0xbb008276,0xbac20523,0xb90a1de2,0x3aad25cf,0x3b3e440f,0x3b6bc29f,0x3b7b6c5f,0x3b957460,0x3a951592,0xb8d1134e,0x38d103d6,0x3a10fd5d,0x3adb45a0,0x3b2735a9,0x3bc5e06e,0xbae0d98b,0xbb0a025c,0xbadbfabb,0xbab42cdd,0xba246487,0xba640135, -0xba42ad00,0xb9897c47,0xb982d02a,0xb9746834,0xba414a4b,0x36bc188a,0x39ff27c6,0x3a78a67a,0x3a47a848,0x39aafcd2,0xb96a90b2,0xbad3d550,0xbb02c560,0xbb08625e,0xba982c39,0x3896eb02,0x3a3f9440,0x3b3ee1c8,0x3b81d5be,0x3b9a81f5,0x3bace29d,0x3baa733c,0x3b9ceb57,0x3b92b526,0x3b73e808, -0x3b2458ad,0x3ab682fb,0x3a432fc9,0xb9ea4595,0xba43c8e9,0x3a3ad89f,0x3b009fe0,0x3b11039e,0x3b005e38,0x3b33983a,0x3b158ed4,0x3b2bebba,0x3ae23ee2,0x3b010f28,0x3af3c5e3,0x3b0c752f,0x3aeb9e18,0x3ae8b4a7,0x3ad27a2c,0x3a647b32,0x37fd75c6,0xba587d30,0xba69a6d9,0xba9651bb,0xba6e5636, -0xbab09e24,0xba656430,0xba4cef1e,0x38cdec56,0x3a3f92ff,0x3a93af7e,0x3b10c51a,0x3b4c4c87,0x3b8412f4,0x3b73c978,0x3b639e00,0x3b695a0a,0x3b294fc0,0x3af15c5e,0x3ab6183e,0x3a8b3c82,0x3b52e9fe,0x3b52fed7,0x3b6e6d33,0x3b523b1a,0x3b5675cf,0x3b3e54e5,0x3b2195a7,0x3b0dd198,0x3b24031a, -0x3b0f6975,0x3b4a2d11,0x3ae033d9,0x3a9d0065,0x3a73757c,0x38cffeba,0xb968c1f5,0xba7af578,0xba47cf30,0xb8f86b07,0xba279d50,0xbaa2c5fa,0xba959480,0xbac28b6c,0xbac1c7b5,0xbada96b1,0xbadac27e,0xba354e54,0xb82878d9,0x3a91305e,0x3ac4db1a,0x3b087062,0x3b24b322,0x3b2e20db,0x3b4e0025, -0x3b5a00d7,0x3b61c2d8,0x38a374bc,0x39c9fa79,0x39c9e433,0x37a7c890,0x39017a38,0x39cd6e31,0x39db09be,0x39001af9,0xba04a1b1,0xba2cf76d,0xba9fe3c1,0xba9b9f9d,0xbabb75a0,0xbae001c5,0xba96223d,0xba866314,0xba9948cb,0xbabf9b07,0xbad178c2,0xbb1e7122,0xbb0b505c,0xbaff4905,0xbae1b853, -0xbad0c36c,0xbaac1595,0xba862c28,0xbab546a1,0xba9c6610,0xbaa13428,0xba9015eb,0xba4cfa9e,0xb9c9e848,0xb9813795,0xba196e17,0xb9dfa5e2,0xb8e34e19,0xb88f6802,0x376e7ffb,0x3a321d70,0x3a24154e,0xb998d439,0x3a0dabad,0x3a1dc4fd,0x37dce8d2,0xb87d8498,0xb939ece0,0xb9ba0bd1,0xba006253, -0xba33a550,0xba5f7d23,0x38e6ec15,0xb9946e63,0xba8c84cb,0xb8e2b64e,0xb97d450e,0xba96efe4,0xba8874b0,0xba9652bf,0xbaa0f67b,0xbaaf42c7,0xbab813f1,0xbab5d886,0xbaaa395f,0xba82ff2b,0xba5f7d87,0xba285b6c,0xba01df5b,0xb9b7eba7,0xb987280e,0xb9528000,0xb76dc8cb,0x385a121e,0xbac845b5, -0xba8335b2,0xba00b918,0xba04a75c,0xbad07345,0xba58cb35,0x3a8148ff,0xbac8387a,0xba8672a8,0x39bb2dd4,0x3a2d99f5,0x3a6d0738,0x3a6a4522,0x3a8a2f55,0x3aa9213c,0x3a6fb140,0xba785f67,0xbabd9a1b,0x3ac8c272,0xba03b9aa,0xbaa12887,0xba02ee36,0xba042625,0xba144b12,0xb9ec3e14,0xb9c37d63, -0xb9d90ad2,0xba29ee61,0xba2996f4,0xba38803c,0xba1110a1,0xba3dd241,0xba4fcc71,0xba774dd5,0xba4a19c5,0xba3401be,0xb9d9b84c,0xba1397ae,0xb9f3b61f,0xbab40609,0xb9a76611,0xba31b6d5,0xba18bbe4,0xba414a1c,0xbaa90180,0xbac197d6,0xbab628f5,0xbb081978,0xbaeb1360,0xbb03326e,0xbab9e538, -0xbaa9ffff,0x394a0e96,0xba523615,0xba037dbe,0xb9c86775,0xba071d9d,0xbab2df7a,0xba27ba39,0xba384c76,0xb97a1fac,0xb95c95a3,0xb9b11bac,0xba6409cb,0xba318d5d,0xba03f246,0xb8bffbc8,0xbabe46e8,0xbaf48fa4,0xbae0da23,0xba787533,0xb9c0531e,0x39fe00d0,0xb9d7bada,0x37433e7c,0xba2532ea, -0xba8d1144,0xbab25c29,0xbad80d4c,0xbaaabfb1,0xbaba50ba,0xbb31229f,0xbb0e7044,0xbb09cf98,0xbb498d7b,0xbafb09d2,0xba9b5390,0xbb3003eb,0xba20d98b,0xba104f08,0xba504d66,0xb86a9da7,0xb9e61f4d,0xb994cd09,0xb9c7d44f,0xb983908d,0x398ad852,0x3a37b4dd,0x3a0d7c6e,0xba67a0c0,0xba0425be, -0xba5e0af3,0x3843862a,0xbad26a90,0xbb07cc46,0xbb2070f1,0xba966e51,0xb9ada243,0x3a888af5,0xb8233bff,0xb82149fa,0xba46b613,0xbac982cb,0xbabd19a1,0xbac8ce11,0xba42b0b6,0xbaa5ca60,0xbb8783ff,0xbb844f7d,0xbba40945,0xbb845552,0xbb5a0350,0xbb2296e6,0xbb38d498,0xb9726425,0xb998c34a, -0xba389ec7,0x3915c43e,0xb9b92c4a,0xba0ec5c8,0xba0125c9,0xb9771971,0x3a36a078,0x3a8ce2e5,0x3a426abc,0xba9d7e70,0xb94112cd,0xb5eea3ec,0x3ada3391,0xbb3aa314,0xbb704425,0xbb5595f0,0xba7db47c,0x3a5e197d,0x3b4907c3,0x3a130232,0x39db8d2f,0x37b169eb,0xbaa877d4,0xbac1d145,0xbb063804, -0xbadaf7d7,0xbb393990,0xbb5d7bd8,0xbb79ca9b,0xbb890c64,0xbab71126,0xbad0fecc,0xbab127dc,0xbb012430,0x3a19d58a,0x3a4984a6,0xb6d48447,0x3a97fa14,0x3a441aa5,0x39fe55df,0x3a531b92,0x3a2d37cc,0x3acf2b69,0x3b2484d2,0x3ae053ab,0xba465974,0xba0d66ba,0xba3bbd8c,0x3a655fb3,0xbb0d8ec7, -0xbb5e4dba,0xbb672e71,0xba9f2123,0x3a210748,0x3b295e95,0x3a483f18,0x3b795c1d,0x3a98e997,0x3ac1b5d9,0x3b1ad6fa,0x3ac26817,0x3b9c0685,0x3bbf7144,0x3bb0196e,0x3b7425e9,0x3a143336,0x38687596,0xba210326,0xba054c6e,0x3b1a3239,0xbaf67893,0xbb309980,0xbbca1cce,0xbbc68933,0xbbf08e41, -0xbc086a85,0xbc0bdb24,0xbbefd0b6,0xbc06cf20,0xbbd8ee92,0xbb5a619d,0xba40a479,0x3b86a2c0,0x3b6f4178,0xba84b712,0xbb0c7855,0xbb86d51c,0xbbc673d9,0xbb66ee44,0xbafae3e9,0xbae49a42,0x3b399068,0xb8e3764d,0xba8ed1aa,0x3b12e0a4,0x3b2b4de5,0x3b438f99,0xbba1d012,0xbbdae196,0xbb620107, -0xbb0ad8f0,0xb9fd75a8,0xb8defbfe,0x391ddbb2,0xba528244,0xbad51a1d,0xb5d44c60,0x3a53a03f,0x3a5814a1,0x3a21f6bd,0x3abbb8a3,0x3b2e4433,0x3ab46356,0x3ab0ac29,0x398234ca,0x3b34ce3a,0x3a82674b,0xbb4aade0,0xbbbe90b0,0xbbc76403,0xbba017fb,0x3ac7eb96,0x3b483adf,0x39df0fb9,0xbb8b4347, -0xbbe20de6,0xbbd7826a,0xbb3a5c5f,0xbbdb6651,0xbba92b38,0xbbe45edc,0xbb99fcce,0xbb156018,0xbb1f1fd0,0xbb52f3fb,0xbb385a4f,0x389830c3,0x3998e26e,0xb86ed524,0x38b215a1,0x38ca2a35,0xba27dbd1,0xbaa2d96f,0xba9a9a45,0xbaee139a,0xba9881b3,0xbac48781,0xba95fe16,0xba45e479,0xbaa9639f, -0xbb1c2b3b,0xbb1fe67e,0xbb5a0096,0xbba5d4d9,0xbb338577,0xbafa5809,0x3a7bb3c0,0xbb5f40d5,0xbbc050fd,0xbb6014be,0xbb9b9deb,0xbb838dcf,0x3b1e73f6,0xbbb949a3,0xbb415bef,0xba9f92fd,0xbb8618de,0xbb82253d,0xbb00260e,0x3670e719,0xb8c4b2b4,0xbaa85935,0xb97fc36b,0xb90bdbf0,0xb71501cb, -0xb7d53a7c,0xb88d2ad0,0xb92959b5,0xba3ce1a6,0xbaaa2bb2,0xba5ed9bc,0xb91642dd,0xb9eb4a7f,0xbaeadcaa,0xb9d6e90e,0xbaa54580,0xbafe4c50,0xbb6028e3,0xbb86eb7c,0xbbb0b6ce,0xbaf24dc6,0xba86613c,0x3ad7a080,0xbbe62368,0xbc0c436c,0xbb8a58a1,0xbb0bd259,0xb90d9b3b,0x3ae1c430,0xbb104f4e, -0x39c207af,0xba46a5c5,0xbad688d8,0xb8e93ecc,0x3aeba1e8,0xba8f8fee,0xba60551f,0x3a975613,0x39a2342d,0x3833118f,0xb89b8b26,0x3807cca1,0xb9904b63,0xba4b2fb4,0x384b176d,0x3a666426,0x3b0aa5ef,0x3a9fbf9a,0x3aa7185d,0x3ac8c63b,0x3a84e646,0x3a52d926,0x398865f3,0x3a5b73c0,0x39b655a4, -0xba4d9caa,0xbae387a0,0xbb20372e,0xbb2c108e,0xba8809e1,0xb95a900d,0x394dbb50,0x39574648,0xba84cc4a,0xbba57c06,0xbaa73867,0xbb58cb5c,0x39fb8631,0x3afbd63f,0xb9f942a7,0xb8c5873f,0x39e61552,0xb81de300,0xbaa1390f,0xb9c17b0a,0xb99ef009,0x390b4fc5,0xb9ae5267,0xb981e4b5,0xb946889e, -0x3929d4d7,0x392adefa,0xb9b8fd89,0xbadaa809,0xbb245a35,0xbb319d22,0xbb02a125,0xbae0a32a,0xba9104b1,0xba300a68,0xba02e27a,0xba5a8bd9,0xba81f8a7,0xbac63d32,0xbb2b7658,0xbb8cd1a3,0xbbab265f,0xbbd2f5de,0xbbf6d4a2,0xbbe00278,0xbbaec74a,0xbb31bede,0xbbb384b8,0xbbbdabe7,0xbb6f85a2, -0xbb396568,0xbb12999d,0xbae22c5b,0xbaa214eb,0xba5a0dee,0xba136db7,0xba78b80a,0xba5ace4e,0xba34583c,0x38902918,0x3a20fd8d,0x39fed911,0xb93afa52,0xba3867e9,0xbae7bdeb,0xbb0b8363,0xbae144b2,0xbab0ff77,0xba4bbcf1,0xb92d33a5,0x3a82c72b,0x3af5e833,0x3b2e2ccf,0x3b6b7184,0x3b87b866, -0x3b967d97,0x3b7000b6,0x3af55eb8,0xbaa35e8f,0xbac76a0d,0xbb270020,0xbb861389,0xbb94a9ca,0xbacd9df3,0x391769c4,0xb9f32e0c,0x381a08c0,0x3a2e307f,0x3a965c44,0x3aaa3fb2,0x3a71920b,0x3a92b64f,0x3ac3aea0,0x3aecb7aa,0x3af12b9e,0x3ada8dc8,0x3aed4595,0x3a4a2637,0x3886db49,0xbaa2b957, -0xbac06683,0xbad9760e,0xbae69455,0xbac97eba,0xbaa97cce,0xba8a68f5,0xba100272,0xb88d97da,0x39ce7a1a,0x3a99bdd3,0x3afc0a18,0x3b348120,0x3b10743a,0x3ac928a3,0x3a19eeb1,0x3859599b,0xb96995b8,0xb9c49c1e,0xba3e0b92,0x3b1c2f06,0x3af38396,0x3b1669a6,0x3b000e51,0x3aff78d1,0x3ae32756, -0x3ab5832b,0x3ab195f2,0x3ae1944c,0x3ae27dd6,0x3b001729,0x3a89a07b,0x3a934699,0x39f15060,0x37c3742c,0xb9eca259,0xba8cf131,0xba83ffef,0xba83dc70,0xbabcae77,0xba7b9771,0xbaa07cd3,0xba99864d,0xba9dc78a,0xbaa4da1f,0xbaab543b,0xba58c227,0xba40eb2c,0xb9d254bd,0xb92331d2,0x39b68fed, -0x3a581a09,0x3aab9046,0x3ad055a2,0x3aeca144,0x3b021325,0xb97477fa,0x39655a3b,0x39801f54,0x36453c81,0xb9d7d364,0x383cb08a,0xb8d83782,0x398563bc,0xba13d1e1,0xbaa19c94,0xbae2b6f5,0xbb000cf1,0xbb0fdc47,0xbb1dbdb4,0xbb2a470b,0xbb1fcff9,0xbb0b9c4d,0xbb1e0fe8,0xbb210fc6,0xbaf6d1d3, -0xbadb49f4,0xbae0339b,0xbac870ff,0xbac56c85,0xbaac55da,0xba8d7736,0xbaa02863,0xba74b0d1,0xba83eccd,0xba98a90d,0xbab32a63,0xbae419f3,0xbab81bf2,0xbab6c531,0xba7065c7,0xba0d49fd,0xba0b4624,0xba04acaf,0xba8a25e0,0xba35448e,0x38ff2a96,0xba970c3d,0xba903f44,0xb9571f29,0xb93621b7, -0xb8861c96,0xb80b8aab,0xb8e31489,0xb94662d9,0xb99fb29e,0xbacbf12a,0xbae8608b,0xba0eb5ef,0xbad29d41,0xbaec3d4b,0xbaa1a8df,0xbab594c3,0xbabad70d,0xbabf2e44,0xbac66f72,0xbaca5fd0,0xbaca5490,0xbad2e9d8,0xbac7bf31,0xbac76e36,0xbab7721f,0xba96e62f,0xba804585,0xba4fae10,0xba4de0a5, -0xba278517,0xba0ee3d3,0xbb232d10,0x3b0d9a2a,0x3ac86bef,0x3affaac0,0x3b013734,0x39a631e6,0xbad9cae5,0x3adbdc99,0x39ec74ea,0xbad00f79,0xbad14c92,0xbae46779,0xbae17dae,0xbadca459,0xbb092a9f,0xbaf2498b,0x3a04f512,0x3adf5dac,0xbae93ac4,0x39596432,0x3acbefdc,0x3aecb0e4,0x3adf3559, -0x3afabfc8,0x3b00bd30,0x3b09217a,0x3b031a98,0x3ad89356,0x3ad8b2d8,0x3ad771a2,0x3aee202b,0x3ae96472,0x3adb219f,0x3ad2f1bd,0x3aef8db3,0x3aeae618,0x3acf871e,0x3ad3f0e8,0x3ad2a06f,0x3b254318,0xba28782e,0x3a3d3a05,0xb9f3c1bc,0x3a6c2972,0x3a436d48,0xba8aaab1,0xb97edbf7,0xb9ac97a7, -0xba77e187,0xb905b9e3,0x39a97340,0xb9f6f85f,0xba653254,0x3a8c37a3,0x39d3fbed,0x3a882faf,0x3a19aa30,0x3b1a5ce2,0x3b0f3ced,0x3b2d7d3f,0x3b547483,0x3b533ad8,0x3b4bfe67,0x3b3d3f17,0x3b39c622,0x3b4a7ab0,0x3b673ec2,0x3b282f69,0x3b0d41c0,0x3b1f55e0,0x3b61578b,0x3b67bfd4,0x3b34ff9b, -0x3b0de479,0x3b023d0c,0x3b24589d,0x3a61295f,0x3aad2941,0xb9ff219b,0x3992201e,0xb9877c97,0xbab536fc,0xba829a27,0xba0410fd,0xbab04dad,0x39fbcff3,0xba5335cd,0xba1a2a15,0x39abcd0d,0x3a6f5851,0x3a68f4fe,0x3a4516bb,0x3aa59196,0x3b0746e1,0x3b592dff,0x3b7c7452,0x3b9c31c6,0x3ba47309, -0x3b948bf1,0x3b4947db,0x3b551537,0x3b44dc07,0x3b911744,0x3b48d605,0x3b45ed5c,0x3b2efaa3,0x3b8dcf92,0x3b856e01,0x3b28d53a,0x3b21b909,0x3ab52236,0x3b1501c2,0x364d3f15,0x36fd5838,0xba73508f,0xb8669e73,0xba60d192,0xbb57b71e,0xbb62e0f9,0xbb8e65a7,0xbb89cc2a,0xbb46eda4,0xbad6e207, -0xbb1fc8a2,0x396697b3,0x38f2e43f,0x38ab87ea,0x3aa08497,0x3a95825a,0x3addb62d,0x3b6847fd,0x3b850524,0x3bc877a9,0x3bdbcc34,0x3bde883d,0x3b942f06,0x3ba2accc,0x3ba7cd0d,0x3bed452e,0x3b61ea1a,0x3b61637d,0x3b714859,0x3bda384f,0x3bd394b1,0x3b882678,0x3b31642d,0x3aefcfd9,0x3b2cab21, -0x3a125aab,0xb7c6b51b,0xba9b72d2,0xba1dcf72,0xbb0e3718,0xbb6c3b9b,0xbb596084,0xbb5cb434,0xba821759,0xbaa59604,0xba956e1b,0xbaffd8f4,0x3a2f1d00,0x3a8296e2,0x39469c23,0x3ab830f7,0x3acc5a6e,0x3b476e6a,0x3ba572d8,0x3bd42a6d,0x3c07b9a5,0x3c0d2bb9,0x3bf2aae4,0x3b86bc6a,0x3b812f0a, -0x3b8b19b2,0x3bd1e29a,0x3b97adec,0x3b858d74,0x3b5deb6e,0x3be4f5aa,0x3bca27ff,0x3b3970d6,0x3b2c0906,0x3c0ff1b4,0x3bea75f6,0x3bb29770,0x3b8cbe4a,0x3b34dc35,0x3ba2bcb0,0x3bd30126,0x3ba7692e,0x3b86caed,0x3a6c40f5,0x39ae22b7,0xb92ff894,0xb95f13b4,0x3b023ab2,0xba86522a,0xbacc8f89, -0xbbb59f61,0xbbaa9754,0xbbb7ed13,0xbba95d84,0xbba15bfb,0xbba821e5,0xbbf1c795,0xbbb0eeba,0xbae875a2,0x398a6fcc,0x3bbc966d,0x3bac34ba,0x3b128983,0x3af39374,0x3b18a351,0x3b875a1f,0x3b91460b,0x3bab985f,0x3b85f82a,0x3c137877,0x3a5c3528,0x3a9f18aa,0x3b3316e3,0x3b7cf675,0x3b8bccbb, -0xbb44cf6b,0xbbc4b97b,0xbb3ef532,0xbafc8ca7,0xb9ecbd3f,0xb8d07731,0x390cdd50,0xba0edc79,0xbab8d343,0x39e396cd,0x3ab54f87,0x3ac79ae0,0x3a738647,0x3a5db627,0x3b6bc9e9,0x3bba33c2,0x3be52ab8,0x3c006c91,0x3bd8f201,0x3b56509c,0xbb17fed0,0xbbafe100,0xbbb0c17e,0xbb269b9b,0x3b6f1553, -0x3ba0df93,0x3aaf9b0a,0xbaf543fb,0xbba4627d,0xbbcd4e8d,0xbaa5f58c,0xbbbed5bc,0xbb393be2,0xbb94a10c,0xbb677f56,0xbb02f88a,0xbabccde5,0xbb0a5ca5,0xbb15e243,0x39ef8113,0x39aff50b,0xb756e826,0x380ea98e,0x399b5694,0xba005617,0xb9e68f3f,0xba30e5a6,0xbaa7be39,0xb9d4be2d,0xb9bbdc2c, -0x3a49d8db,0x3a66b70e,0x3a5b2ada,0x39338dc0,0x3ad5c908,0x3ac4defb,0x3a21166e,0x3b2d4a9c,0x3b17910b,0x3b1c6d71,0xb9fa52ad,0x39762a39,0x3bc143cb,0x3bb6c0b6,0x3bb54689,0x3c1d792c,0xbb50b9b1,0x3932e63c,0x3ab34ebd,0xbb925f9f,0xbb605225,0xbb6b8498,0x3a029836,0x399a3bb8,0xba9d035f, -0x36a3703d,0xb936d981,0x38f509f7,0x3553f9c2,0x3763cfa3,0x388ac3c4,0xb9fd4817,0xba0c2152,0xb8e97d0b,0x39a7fa64,0x39972838,0xb8221839,0x3a068114,0x3999531e,0xb9fbe081,0x3a17874d,0x3abe9a60,0x3ac9c302,0x3bbce10a,0x3baa2bdc,0x3b9f0b5a,0xbb23fada,0xbacd0dad,0x3be08ef6,0x3c33eb25, -0x3c5d9430,0x3c7a3ab9,0x3b64b94a,0x3c0465bb,0x3b1f1838,0xbae6ac58,0xbb148b06,0x3a530951,0xba53e40e,0xba461981,0x3a4fd2d2,0x39a80418,0x37d15063,0xb8de0400,0x3896f857,0xb8e1a4e1,0xb9e85174,0x3995efee,0x3a829dec,0x3b190648,0x3af6d33e,0x3aeef9d3,0x3b186bde,0x3b49a0e8,0x3b827da3, -0x3b81aa43,0x3b7f56f7,0x3b26fc60,0x3a5d4066,0xb6a5c9db,0xb988d02e,0x39fa0a1d,0x3a8b78f4,0x3b3b8ab0,0x3b6c4636,0x3c205ae8,0x3c3162bb,0x3c141b0a,0x3c1b1984,0x3bffe127,0x3b941f9f,0x398c829b,0x3b41c753,0x39b11058,0x3a7e88ff,0x39d8b4b6,0xba27f524,0xb805ed21,0x38516792,0x39b70fc4, -0xb697157c,0xb8904a23,0x38d73957,0x39d40be6,0x3a19c930,0x39beddda,0xb93eb80b,0xba394bce,0xbac8148d,0xba784935,0xbace478b,0xba364622,0x3816d29c,0x3a9ee995,0x3b45d064,0x3b510a2b,0x3b5971d0,0x3b744baf,0x3a5a9b23,0x39d08d80,0x3a8b9ad5,0x3ae63c3b,0x3b60863c,0x3baf4ca6,0x3bf70fa7, -0x3915e39c,0xbac14720,0xbb440557,0xbb1cf6ed,0xbab69c95,0xbabd6d0f,0xba6cbba3,0xba13f713,0xb938342b,0xb9e6bac7,0xba05d794,0xb9e1249f,0x39146104,0x3a39f6b5,0x3a62b2d7,0x3a0c44ff,0x392a1088,0xbaa4b903,0xbb0b3866,0xbadd3c08,0xba327a5d,0x3a0e1182,0x3aad6ba7,0x3b4fedb9,0x3b859909, -0x3b9b0bf3,0x3ba31985,0x3b9cb01d,0x3b88ca38,0x3b7a2b91,0x3b525810,0x3b2aeb2e,0x3ac9e292,0x3a6e4abd,0x389e4d59,0x3a001136,0x3a86133d,0xb96fa30d,0x3a7dac62,0x3a7501f8,0x3ac7fa29,0x3af4a4a0,0x3ad2532b,0x3a68406e,0x3a9a064c,0x3ab0bd8f,0x3ad385a4,0x3ac74ae9,0x3acf58cf,0x3aface10, -0x3aa4d632,0x39ddf55f,0xba26cb6c,0xba45f3ef,0xba64f56b,0xbaa70fe7,0xba3c5e2d,0xba02d0e6,0xb97e6cc0,0x3a08b4f0,0x3a929635,0x3ac56e5b,0x3b244a45,0x3b55d533,0x3b80643e,0x3b75d574,0x3b6e1f41,0x3b7dc243,0x3b1b86db,0x3ac887e5,0x3aaf0339,0x39f5329f,0x3b56332b,0x3b66c2d3,0x3b1f1f05, -0x3b240ff0,0x3b017b19,0x3aca1ba2,0x3aba81f9,0x3ad39559,0x3b03693c,0x3b10a8cc,0x3b381fff,0x3b24183f,0x3adc526c,0x3af3bf23,0x3989e63a,0x39d2afbc,0xb9b11301,0xb97cdd3a,0xb9b429c4,0xb7a15d68,0xb9b94515,0xba1749db,0xba5033d9,0xba77fea0,0xba956f22,0xbaa5f328,0xb84cea6d,0x3a443583, -0x3b03a25e,0x3b24a9f4,0x3b512737,0x3b7a36ef,0x3b7dc4eb,0x3b8021b8,0x3b69f6a3,0x3b627ba5,0x3ac64f9a,0x3ae94104,0x3a1700f1,0x3acf75c6,0x3aca5bf9,0x3ae0b66f,0x3b045940,0x3a61b3c1,0x3a60364e,0xb8524f9e,0xba4544fe,0xba69fb34,0xba332e82,0xba96baed,0xba07ddec,0xba23e891,0xbaabbb54, -0xba55eedd,0xbafb54dd,0xbae36a25,0xbae8fe45,0xbac0a19e,0xbaac2e8f,0xba9a57f3,0xba6dcad4,0xba2ec48f,0xba339777,0xb99e54b8,0xb8e8f342,0x399b3669,0x3a3ba0fe,0x3aaad876,0x3aa78747,0x3a6208f5,0x3a9e76a9,0x3ad25120,0x3a2ef305,0x3a792be6,0x3a43d8f2,0xb99e7541,0xbaba9df2,0x3a0dbab9, -0xb9146b20,0xbaa6b870,0xbabe98fc,0xbaadb93c,0xbaa9ccc9,0xbac6e2c4,0xbafd4aed,0xbb0b01cd,0xb9891174,0x399099c8,0xbb02a15e,0xba28bd1d,0x3850aa60,0xb9708f9e,0xb96f05a3,0xb9ace61e,0xb9e00c83,0xba0cb512,0xba2359da,0xba290962,0xba025a90,0xb9383a15,0x37c1e849,0x398b7208,0x39e294c2, -0x3a3606ea,0x3a462183,0x3a39a8cd,0x3a516a87,0x3a4b9a3a,0xba0cc712,0xbab4bf3f,0xba72bc64,0xbad33fa8,0xba681432,0x3a7fac4b,0x3b0d8b7e,0xba87bf30,0x39f4a063,0x3b03ae9b,0x3b1c3aef,0x3b27aa2f,0x3b0c87e1,0x3b1d85bb,0x3b3b5465,0x3b106cbe,0x3a1c90a5,0xba38953e,0x3b2ec406,0x3a93b455, -0xb9d1a1a9,0xbab992bb,0xba7bb7af,0xba8ab050,0xba832c1d,0xba816c63,0xba877679,0xba9f1998,0xba9d81cc,0xba9ec612,0xba821ade,0xba9cd619,0xbaa60004,0xbab9f7da,0xba987495,0xba8cbb70,0xba62565d,0xba859575,0xbaa0e01f,0xbadb40bb,0x3b0a9dde,0xba1a4839,0x39b11a80,0xb9812df3,0xb9f0fbd5, -0xba7d294d,0xba9f15f4,0xba81120c,0xba89c2de,0xba7b24b6,0xba97bfad,0xba1c5088,0x3abd49aa,0xba2032d3,0x39c1fc7b,0xb89ca1fc,0x3a7b1363,0xbaa9cf15,0xba9d8843,0xba8fdec0,0xba645f93,0xba555584,0xba77f738,0xbabbede5,0xbaad706f,0xba9663cb,0xba2daff1,0xbb09720f,0xbb1f9af5,0xbb159dae, -0xba99d777,0xba1f63e3,0xb880ef8f,0xba5da975,0xba7f0d15,0xba6804a2,0x39622915,0xbac0409c,0xba76cc4e,0xba2dd0c0,0xb936ec0f,0xbb4c1d78,0xba876614,0xbb0b8705,0xbb049678,0xbb14fb19,0xba2487b2,0xbb152dc5,0xb9ab201c,0xba37f43f,0xba10b069,0x39bf2323,0x39cecb74,0xb90f198b,0xba9950f1, -0xba0c6c9f,0xba220ecf,0xb973f6cd,0xba16d2a7,0xbadafdab,0xbab777af,0xbacc6735,0xb993cf72,0xbb0c9967,0xbb271d4b,0xbb39bac6,0xba87d395,0xb98adeef,0x3a0ab5ae,0xb9e8b1f8,0xbab7bf85,0xba4fb867,0x3a031039,0xba40d072,0xbad5a008,0xb973026e,0xba3674ac,0xbb955316,0xbb57debe,0xbb8cd2b7, -0xbb8ae968,0xbb512796,0xbb06ea3a,0xbb5c4d02,0xb99aeeb8,0xba6e31f0,0xba748cfa,0x38a36cad,0x3a22e4e0,0x39d4e721,0xbaa59761,0xb9d91c16,0xb8c0249f,0x395bdf10,0xb93645f7,0xbae15b2b,0xba7cdb09,0xba4dd4fb,0x3a857d05,0xbb6a382a,0xbb86730d,0xbb79872f,0xb9e8ca28,0x3a9c1619,0x3b0ecfbb, -0x3989b68c,0xba2dbaa5,0xba2044dc,0xb97d8ce8,0xbac4236b,0xbb2a444c,0xba804d2a,0xbb0a7173,0xbb72ff9c,0xbb363de3,0xbb43b04e,0xba719693,0xba71918a,0xba8f4f53,0xbb10c04b,0xb92b23cb,0xb7286c6c,0xb9dcc033,0xb8f64c9c,0x3b0866b1,0x3a4535d6,0x38ed113c,0x3a0a12e4,0x3a03dede,0x3a98a369, -0x38fd6332,0xbb0088cd,0xbb0b6e2a,0xbadd1c85,0x3a33bddc,0xbb33682d,0xbb71a4e7,0xbb6d68e9,0xb9924322,0x3aaa1e55,0x3ae37177,0x39975ee3,0x3b73866a,0x3ab74393,0x3b9be1f5,0x3ba29991,0x3b3b1b54,0x3bb2399d,0x3bac35a8,0x3b9134c4,0x3b613ad0,0x3a61547b,0x39dfc92f,0xb794855b,0xb83f50d4, -0x3ac58f3e,0xba0a914c,0xbabbc3e2,0xbbb5be83,0xbbd5de42,0xbbe6ab55,0xbc0a9ea4,0xbc295abe,0xbc12e14e,0xbc255f41,0xbbdb2d72,0xbb629e3d,0x397fade4,0x3ae11c57,0xb86998c3,0xbb9032e1,0xbb9bd488,0xbbb62188,0xbba2603e,0xbb6e4d01,0xbb036490,0xba1ff9c2,0x3b32f36b,0xbaf640b9,0xbaa3fba3, -0x3b252265,0x3996fbae,0x3b9aa52a,0xbb7a8033,0xbba6511b,0xbb31d2a9,0xbae5dccc,0xba047dc6,0xb95bf308,0x385f28fb,0xb9ae0cdb,0xbabe9fd8,0xb7c01a7e,0x39a6a01e,0x3a50e1f1,0x38b0c543,0x3ae5de1d,0x3b335079,0x3a8c8860,0x3ae6af12,0xb98d0907,0x3a8ac12d,0xba402d88,0xbb60fc8d,0xbbc61306, -0xbbbd050f,0xbb3b96f9,0x3b0286d0,0x3b4b7965,0x3a896552,0xbb83c85c,0xbbd9b3d8,0xbbc8b2fc,0xbb3aefec,0xbbdd5e5f,0xbb71d918,0xbbb2a724,0xbb764bc4,0xbb5c1ccd,0xbaa4278c,0xbac2cbc8,0xbb0a7855,0x3a47a4a7,0x387e0c58,0x38c0c3d8,0xb8a9e4a4,0x392c2db8,0xb96fa71c,0xba58068f,0xba61a555, -0xbacd8b08,0xba9e921b,0xbac99906,0xbaf7fb69,0xbabe3235,0xbab2153d,0xbb1c2810,0xbb461dae,0xbb87d39d,0xbbafde43,0xbb4013eb,0xbb084c40,0xbab3a36e,0xbb9975a7,0xbbcfe95d,0xbb152204,0xbb6b2ef6,0xbb40ad90,0x3b855ef3,0xbbad4daa,0xbaf907f5,0x3b41145e,0xbb20654b,0xbb854651,0xbb9bb141, -0x3a0ed2e9,0x39900968,0xbaa9e123,0x3811e844,0xb97bc27b,0x39102077,0xb8764484,0xb6e5f3e2,0x38b0b80b,0xb9e982c0,0xba733a92,0xba3cea20,0xb942b596,0x3798dfcd,0xba9b3ad4,0xbaaf021c,0xbad52b02,0xbb15d6ad,0xbb743a07,0xbb8a174f,0xbba6a9f9,0xba9b7ad6,0xba453c56,0xba69faa0,0xbbfbab08, -0xbc078ff1,0xbb0fe527,0xba90a728,0x3969c01f,0x3afaaa5a,0xbb0d0fea,0x3b00257c,0x3b8fde56,0xbb83ad8d,0xbb96a790,0xba90bca2,0xbafb8d66,0xba745b48,0x39d3d0d9,0x38eb76e4,0xb85ac71a,0xb93621c7,0xb89ac7d9,0xb8a3ff8d,0xba0c812d,0x380fe324,0x3a422860,0x3b10a9c9,0x3ab1ded9,0x3afd0a91, -0x3acabef4,0x3a693246,0x39f3d992,0xba2999a1,0x38300e12,0x379aabfc,0xba0414a3,0xbae46e54,0xbb0efcb5,0xba90f808,0xb9a02f3e,0x3a8913ae,0x3addc344,0x3ac2fcc4,0xba682bdf,0xbbf872af,0xb9e035b7,0xbb5024ce,0x3af5b962,0x3bb8d00a,0x3b2391a1,0x3ad08f05,0x3a7c6729,0x3889f39d,0xba7ec5d8, -0x38809682,0x385ddd80,0x39bf552b,0x39229948,0x383721db,0xb8162ec6,0x39c28d05,0x3a0d8fa3,0x39a839f5,0xb9536c58,0xba654c85,0xbac148f0,0xbab7975b,0xba5ee2fc,0xba00dda3,0xb9ba3dd5,0xba0a3472,0xba6380b9,0xba9df38c,0xbaf60cb8,0xbb549636,0xbbadd698,0xbbc7c8f4,0xbbf1f31e,0xbbf6a27a, -0xbbba0ac1,0xbb84272b,0xbac2c01f,0xbb8310ad,0xbb89245a,0xbb1fc774,0xbb2578f3,0xbafba34f,0xbac61a4d,0xbaae36bf,0xba3d5aea,0xba20d811,0xba161a16,0xba6b3f8d,0xba656812,0xb9e316d9,0x39612f50,0x3a0f244e,0x3971c018,0xb9515a33,0xbabee274,0xbae498d7,0xbaeb3237,0xbadf6e35,0xbaab0d24, -0xba3fae44,0x3a40ea7d,0x3ae2115b,0x3b1ef072,0x3b36f489,0x3b3fcb0d,0x3b4ef13d,0x3b0b3300,0x3959a5f4,0xbb5d0b98,0xbb6e9269,0xbb8aa8e5,0xbb9ccda4,0xbb7e7236,0xbb517e17,0xb9107bdd,0xba1b0e40,0xb8d845e8,0x39ef11e2,0xb7afa60a,0x3a3741d5,0x374a29d0,0x3a108833,0x3a39a4f3,0x3ab69218, -0x3aa8febd,0x3ad5f07c,0x3ae51313,0x3a85a5cf,0x39f0bcca,0xb9c96229,0xba57e495,0xbaaeb8ef,0xbaa7682b,0xbafea481,0xbabcb108,0xbaa0fe95,0xba1e2979,0xb91be99a,0x399f2513,0x3a66d30c,0x3ab88485,0x3afa06c2,0x3a976bd6,0x39794679,0xba968c61,0xbad96e8d,0xbae20663,0xbaf4368f,0xbae99ff5, -0x3a9f5839,0x3a650f0f,0x3b19349d,0x3ab07ddd,0x3aeaed34,0x3ae38f46,0x3a93502f,0x3a35afb5,0x3ac4c5f3,0x3acd9087,0x3b2911d2,0x3a94f652,0x3ae1e890,0x3a9495e5,0x3a6c4f3f,0x38da8c4f,0xb9f6178e,0xba0e3a8f,0xb888d19a,0xbaaf248d,0xba91fce7,0xba8ab73a,0xba900074,0xba8ae559,0xba8fdf4d, -0xba8c2729,0xba35931b,0xba19649c,0xb945afee,0xb844d739,0x39e8c76d,0x3a5c3110,0x3a9a65b7,0x3a8e6d9b,0x3a40fa28,0x3a85b2b5,0x3a2d6950,0x3a6b7b4a,0x3b0d2c51,0x3a83b4e2,0x3a568484,0x3aa9170f,0x3a70609c,0x3ad7ffef,0x39e1451b,0x396c5d6c,0xb97cff0d,0xb9881353,0xba61c010,0xba54e803, -0xba9747c5,0xba9767f9,0xba5a39a1,0xbaee8d1c,0xbac9330e,0xbb0201fd,0xbad7222f,0xbae63940,0xbacfe6de,0xbaccad46,0xbab816cd,0xba9e59a3,0xbab2e47a,0xba9542b2,0xba9dd597,0xbaaa1a41,0xbac144fc,0xbae2b35a,0xbaab2341,0xba8528db,0xb982f526,0x397034f4,0xba30a519,0xba3c8d64,0xb9d52c1a, -0x39ef8338,0x3a822d36,0xba32a896,0xb8e3cc85,0x3a608e1e,0x3a8a8626,0x3a8ebee5,0x3a879fb0,0x3a8c025f,0x3a9834b5,0x3a8f636a,0xb99fbf90,0xba9aac59,0x39e957f7,0xb9df5c01,0xba9afc7c,0xbab51b45,0xbab66f8c,0xbabb11be,0xbabed9ec,0xbac6186c,0xbac8d57a,0xbac76906,0xbacb806b,0xbabdc6bd, -0xbaba5b78,0xbaa88573,0xba8ac3af,0xba641554,0xba3ce06a,0xba4fe83a,0xba434acb,0xba3956c2,0xbb105234,0x3ac35b58,0x3aa17b91,0x3b06b255,0x3a083fed,0xbab08195,0xbb065b03,0x3a175fc3,0xba7d26e0,0xbb242530,0xbb191eeb,0xbb191775,0xbb0e927c,0xbb0a0408,0xbb25f53f,0xbb12b555,0xba8db078, -0x3990c14b,0xbb02a034,0xbaa3b7b7,0x394fba2e,0x3af003cf,0x3ab9712d,0x3accce59,0x3ad4a115,0x3ae166d9,0x3ad6223f,0x3aac71dc,0x3aaadd25,0x3aab7fa5,0x3aca3e49,0x3ab917fa,0x3aa77b82,0x3a9dc83e,0x3ab406b7,0x3aaf7eeb,0x3a9df9f9,0x3aa71c2d,0x3ab742e3,0x3ae7524b,0xbb1dc7f8,0x392ea82f, -0xbac280df,0x39488a6b,0xb963daf1,0xbae30a05,0xb96642fb,0xba94b542,0xbae187da,0xba9b7962,0xb9824a64,0xbaa3f362,0xbb016577,0x37b5057e,0xba221e41,0x395dcd98,0xba526644,0x3acfad6e,0x3afecdcc,0x3b09bc19,0x3b2f3ee7,0x3b284683,0x3b1dad16,0x3b0a3e8a,0x3b092494,0x3b1b4b90,0x3b43af97, -0x3aec1fc6,0x3ab17672,0x3ad31060,0x3b1ccdc4,0x3b270d4d,0x3b05f8a5,0x3ac5a8c5,0x3affb896,0x3b00816f,0xba41b39a,0x3a1a4582,0xbacfd77c,0xb9740fc8,0xba79e155,0xbae7cadd,0xbac18f72,0xb93efbcb,0xbb36b5ae,0x3a0033fa,0xba9ea20c,0xbab7461e,0xba30bf08,0xb845182b,0x38a037ca,0xb9241f13, -0x389ea87b,0x3ad73f71,0x3b4b9ce4,0x3b47f188,0x3b819add,0x3b82b781,0x3b6ac741,0x3b0c81de,0x3b128691,0x3b0b7900,0x3b801a15,0x3b0810c6,0x3aec3b38,0x3ac4eda7,0x3b332c76,0x3b2be431,0x3ae07d40,0x3ae1e384,0x3ac8e068,0x3ae3319a,0xbaebe638,0xba7aed34,0xbaf0a42b,0xb95fa39b,0xba4966a3, -0xbb7e7fdc,0xbb3a9dbf,0xbb6edd6d,0xbb91a4d4,0xbb26898e,0xbb0583ba,0xbb1b8381,0xba6ea5d3,0xba341074,0xb9d299cc,0x39b93446,0x3894d8d6,0x3a99f243,0x3b5ecd4d,0x3b5b97da,0x3ba53acb,0x3bad9da0,0x3ba91b55,0x3b39ba63,0x3b64073f,0x3b7496f1,0x3bcf8a67,0x3b043167,0x3add3964,0x3b0594ca, -0x3b89cc6b,0x3b90aa44,0x3b49cdc1,0x3ada8cbb,0x3b032ebf,0x3b239c22,0xba82676e,0xba204343,0xbb0a2208,0xb9c88c72,0xbad36f5c,0xbb685b0f,0xbb0ddad2,0xbb11e5c2,0xb9090d62,0xb9ef4ace,0xba14ed47,0xbb0728fe,0x392f6aec,0x38cbd791,0xba274cdc,0x3ac924de,0x384d514f,0x3b3f123c,0x3b9da0a6, -0x3bac9f53,0x3bdcc1a1,0x3bdd97d3,0x3bb4b7a4,0x3b2afb9e,0x3b0bef6b,0x3b421bbc,0x3bc74b86,0x3b488d07,0x3afa896e,0x3ac85d47,0x3b825208,0x3b6c05cc,0x3ada73d5,0x3ad30e5e,0x3c0d1722,0x3be92bd1,0x3b7c467e,0x3b642581,0x3b44f6f5,0x3b94c7ff,0x3baba144,0x3b6597f0,0x3b570824,0x3a5e3cf4, -0x39ae7aa6,0xb8203835,0x3941df47,0x3a96545a,0x371e56f7,0x3808a9ae,0xbbc08d28,0xbba0e511,0xbbdda62b,0xbbc30486,0xbbad84dc,0xbbaa6ab6,0xbbb4e965,0xbb87b483,0xb920c52f,0x3b842761,0x3bdd7e87,0x3ba4e814,0x3ab6e5e5,0x3aaeae75,0x3af945c7,0x3b75004f,0x3b4a6919,0x3b95ecc9,0x3bac34f2, -0x3c17eb1a,0x3b1c0fd7,0x3a6e1631,0xba95ba98,0x3b25f98f,0x3b6a5148,0xbb0f9521,0xbb921417,0xbb209cf0,0xbaa77e9c,0xba1a5859,0xb8a71c57,0x38098f1d,0xb92529dc,0xba892b92,0x38b785aa,0x3a88d4fb,0x3a835960,0x39be2188,0xb8de63cb,0x3b0e12ef,0x3ba7ce49,0x3bb9234f,0x3bcc2360,0x3b8e22de, -0x3a8e78d2,0xbb5bc3ed,0xbbd4e123,0xbbb03f08,0xba0f31b7,0x3b72011d,0x3b78ac9c,0x3a4e5524,0xbb7064b3,0xbbcc7be1,0xbbbc5602,0xba99e88c,0xbb97af0a,0xbac5af47,0xbb5897a8,0xbb464cbe,0xbb578d72,0xba209d3f,0xba7c5a64,0xbaaf7277,0x3a5c1ffc,0x388e4c74,0x390e7fcc,0xb8700a5a,0x394bc6ac, -0xb81387c3,0xb9ff59a9,0xba470b29,0xbabfb4b2,0xba734037,0xbaa375c1,0x39a9126b,0x3a519aca,0x39e0c5d9,0x38d1f2f7,0x3a7d6ea0,0x3a8d66c6,0x398eaa1a,0x3b54bd58,0x3b4496f9,0x3aeb174e,0x373fb7b4,0x39d00eab,0x3b926a3f,0x3b519228,0x3b50a50a,0x3c10a73d,0xbb3d0941,0x390e65eb,0x3bad7101, -0xbb5ffe1a,0xbb711845,0xbbc58f0e,0x3a0dc773,0x39ae4920,0xba772c55,0x3932ad55,0xb98531b5,0x392b6773,0x3710162c,0xb8127f59,0x39824dfe,0xb9645705,0xba0c032e,0xb9b53585,0x39fe9304,0xb8d2849e,0xb9e74df0,0x3a48bfb3,0xb8815a99,0xba29ad59,0x393168f6,0x3a87b901,0x3a9c8a13,0x3bb64edb, -0x3b93982a,0x3b0bd1b8,0xbb3e5ba0,0xba8e33e6,0x3bf1b1db,0x3c0a2e62,0x3c17839b,0x3c208adf,0x3aacac63,0x3bc1e8f7,0x3bc825e4,0xbb915fa0,0xbbcf830a,0xbb492b45,0xbaa972db,0xba3c186c,0xb7aea4e9,0x3919acbf,0x37fe8ab4,0xb91a3697,0xb6bf3f75,0xb85c79ef,0xb9769b63,0x385daced,0x39ff8d74, -0x3b098391,0x3af719bd,0x3ae80f39,0x3b414792,0x3b4a740d,0x3b5c9649,0x3b347ab1,0x3b0a0498,0x3a8c26e7,0x39383158,0xbab7d954,0xbade9c1a,0xba5ccef4,0xb8b82f3a,0x3b10b4df,0x3bb3d988,0x3be5750c,0x3bb8af70,0x3af24ac5,0x3b924a12,0x3ba0b5ca,0x3b0dc7ec,0x3abf7889,0x3b9d3b2a,0x3ab7d533, -0x3a4baceb,0xb964ec23,0xba192b2d,0xb8709b19,0x38c0c6ad,0x39873715,0x3964638f,0x38c8d26b,0x390fc631,0x39dcbcd1,0x3a695457,0x3a99bd77,0x3a0176a9,0xb958b381,0xba938650,0xb9894714,0xba7c8a07,0x3917badd,0x3930e662,0x3a127063,0x3ac0504a,0x3a83e5dd,0x3a4020ba,0x398b9e67,0xbad9652d, -0xbad9e22a,0xbabac6e2,0xba3829db,0x3ab586ad,0x3b75446d,0x3b9ae646,0x39008353,0xbaccb27c,0xbb639184,0xbb496d3c,0xbb0ec55d,0xbafb2329,0xba957c3f,0xba6b9b18,0xb987723e,0xba15a1c4,0xb9bc78d2,0xba2fc70a,0xb96e2a6b,0x397164ca,0x3a1c3c80,0x39c7f3f8,0x394c26b3,0xba80b164,0xbaff7c42, -0xba99e5b5,0xba18bdf6,0x39313575,0x3a51f67c,0x3b068155,0x3b37b9f0,0x3b59af81,0x3b6087bd,0x3b5a7c61,0x3b3edf4f,0x3b28976e,0x3af7499b,0x3a7db576,0x3953f0a2,0xba16fd20,0xba7a2bc9,0xb935237d,0xb84e09d5,0xbb09051b,0xba663eb2,0xb9e57c56,0x37624e88,0x3a50e5d8,0x39a4c7c4,0xb89fb996, -0x3994fe21,0x3a32447a,0x3a7ea1d3,0x3a89c9a0,0x3a9d5d24,0x3ae88c43,0x3aa94097,0x3a2b145f,0xb9dff999,0xba3886f0,0xba592a98,0xbad6902a,0xba104702,0xb9fa17c9,0xb8d3e2b3,0x3a0301fe,0x3a8751cf,0x3ac09351,0x3b0efc70,0x3b30da64,0x3b453d5d,0x3b359032,0x3b1f170b,0x3b1218d6,0x3a51929e, -0x393271f7,0x38e93be5,0xba363c50,0x3b086dde,0x3b19ab99,0x3a756cf9,0x3aa21c82,0x3a198997,0x39b4629f,0x39faa8e5,0x3a7b7d6c,0x3ab3c31a,0x3af591e8,0x3b0d2451,0x3b209458,0x3afa58dc,0x3b0b8181,0x3a0dd574,0x3a4809a5,0x3928999d,0x389e6c7d,0xba1f8893,0xb8a9b1ad,0x3935499c,0xb96ca9bb, -0xb942af85,0xb9bbe057,0xb9e288a0,0xba0e217e,0x39db58d6,0x3a80ed6f,0x3af68ad0,0x3b10bc4e,0x3b340dd4,0x3b583cc9,0x3b563676,0x3b3a0b97,0x3b08a383,0x3b01de43,0x3b08c0c2,0x3b12c5d3,0x3a530aea,0x3b13172a,0x3b044672,0x3b0d85dd,0x3b1db28e,0x3aad85a9,0x3ac3106d,0x39af1858,0xb9934fe4, -0xba060682,0xb93344d6,0xba0dfa13,0xb9954265,0xba0b9e36,0xbaa5d388,0xba17c4bc,0xbaff845c,0xba7c7eeb,0xba99c42d,0xba74f943,0xba604855,0xba48913c,0xba17b9e5,0xb9e656a6,0xb95578d0,0x3967f7f9,0x39fb2812,0x3a6b4e06,0x3a98a1e8,0x3acbf25a,0x3acab801,0x3ab747f8,0x3afd66d9,0x3b163b7b, -0x3a3e315b,0x3a894f4e,0x39417dc3,0xba7fed3d,0xbac35966,0xb79a64f3,0xba61c027,0xbacc6447,0xbadd19f8,0xbab987bb,0xbaa2d48f,0xbabb5148,0xbaee0518,0xbb00c25c,0xba4010dd,0x391bd060,0xbaebb69d,0xba90dcbd,0xb961493b,0x397d775a,0x3904698d,0x389bb790,0x36e3308f,0xb889a110,0xb909925a, -0xb930cd0a,0xb8749ad2,0x39230350,0x39a0407c,0x3a00cee5,0x3a2af29a,0x3a72459d,0x3a7b9865,0x3a594187,0x3a52e489,0x3a4225aa,0xb9401a37,0xb9c7abad,0xb9b5ccd7,0xba8809a9,0x3a17757c,0x3af08938,0x3abf9b36,0x398c0f39,0x3ab6020e,0x3adc21ab,0x3b01023d,0x3b01d6c0,0x3abe69cd,0x3ade1a89, -0x3b008a0f,0x3ac37aee,0x3ac28992,0x3a1ca6c3,0x3ade50a0,0x3ae75cdb,0x3a4ee826,0xba637065,0xb9ab7956,0xb9af92dd,0xb9a29714,0xb9adc488,0xb9d0d6a5,0xba156c22,0xba15d257,0xba0ca376,0xb98aef25,0xb9ea1565,0xba0bd286,0xba286006,0xb9babe4f,0xb9a7dc6f,0xb9aa69af,0xb9cd65d8,0xba38f413, -0xb9b2f343,0x3b2865ab,0xb8d4dcca,0x3a1f9dca,0x39ea9838,0x3a077e49,0xba1dce86,0xba27229b,0x3802c720,0xba0105b8,0x37ff2cd1,0xb9e04b1b,0xb81f6f82,0x3aa1c910,0xb76e7ce8,0x3a75af99,0x39e16c39,0x3adbfd24,0x388bfba7,0xb9bb59f6,0xb765f95c,0x395017b2,0x392fdfeb,0x37f52a9d,0xb9919086, -0xb9c0a729,0xb9348558,0x39dc4a71,0xba65ccb2,0xba97e1ee,0xba78327b,0x39aa8b67,0x3a33de40,0x39f5e42f,0xb8a24c26,0xba170b44,0x392ff902,0x3a9f83ef,0xba0c62e3,0xb97ffd58,0x392ce162,0x3a2da7b9,0xbb2d07aa,0xb9291f49,0xbab1188b,0xba966ca5,0xbab90ef2,0xb9c62d54,0xbaa449d9,0xb8bff08f, -0xb9d21ffc,0x394d31b2,0x3a2179f3,0x3a91c1da,0x3a2d4134,0xb8fc7b69,0x3a4c5540,0x3a38988c,0x3a562bd5,0x39946dff,0xba149988,0xba0e2e4b,0xba0d96ef,0x3a9e37cb,0xba31c65b,0xba6b6a5a,0xba8a2610,0x3a73d7bf,0x3aa12d2f,0x3a395625,0x39851917,0xbaa428a7,0x39a22ad5,0x3accc66c,0xb8a0d119, -0xbab88cb5,0x39361650,0xb996840a,0xbb852095,0xbb1e3d37,0xbb582189,0xbb858298,0xbb2d92ac,0xbabeaedc,0xbb428fa3,0xba06df0a,0xbaa3fad1,0xba16b5cd,0x3950a0dd,0x3aab1141,0x3ac3f2f2,0xb87204f2,0x3a8fdc3f,0x3ad8f522,0x3ae23ab1,0x3abcd268,0x38812747,0x39b79da7,0x3a003bce,0x3b2f810d, -0xbacec222,0xbad97a8b,0xbab7f23e,0x3b1f8a10,0x3b523957,0x3b0086d5,0x3a64dff9,0xba03ffae,0x3908f047,0x3a31d1a6,0xba7f9567,0xbb1af9f1,0xb93e8363,0xbaaa6286,0xbb5c3e7c,0xbad32db8,0xbad67571,0xb8ce5267,0xb8dec6e2,0xba144072,0xbaf65f06,0xba11ff1b,0xba058aa1,0xba006aef,0xba315444, -0x3b1df51d,0x3ad6778a,0x3aa582b3,0x3b1eb119,0x3b22c89f,0x3b20c627,0x3a987dc1,0xba641271,0xbac9775b,0xba01e36a,0x3b2ef3e1,0xba157331,0xba99c796,0xba85b6d4,0x3b3cc3e6,0x3b53911a,0x3a968245,0x3a20bf4e,0x3bb371e0,0x3b6eda14,0x3bdeba92,0x3bc6c3d7,0x3b83fb3f,0x3bacd5b3,0x3b90cb1f, -0x3b419787,0x3b2cc4e0,0x3a21a119,0x3992b60b,0x374c6cf7,0x39915e2e,0x3a381ba3,0x3a23138b,0x39444aed,0xbb943363,0xbbbacd09,0xbbba30e3,0xbbd9a5b4,0xbc14beb6,0xbc075e02,0xbc194798,0xbbb01cd8,0xbb0008ad,0x3b287f17,0x3b18d5ce,0xb9bcf4d7,0xbb92a67a,0xbb832180,0xbb647fd6,0xba060fc4, -0xba89cfb4,0x3a2a441d,0x3b4a02cc,0x3bae759b,0xbb08ffac,0xb92dddc0,0x3b1a931e,0xb9a159e0,0x3baa61bf,0xbb115938,0xbb5bbdb6,0xbaf65c2c,0xba719e7c,0xba0fea44,0xb7c9b669,0xb8ddb002,0xb6320fa6,0xba7c18dd,0xb8966ebc,0x396dba7e,0x3a700fc4,0xb96d7845,0x3a9e3655,0x3b2517a8,0x3b0d5e10, -0x3b67cfae,0x3b0a29b2,0x3a913de8,0xba8c655e,0xbb642d1c,0xbbc60650,0xbba4125c,0xb9a22755,0x3b33c07d,0x3b549e4e,0x3ad3df72,0xbb5c8816,0xbbc6836c,0xbbb4a879,0xbb20ae05,0xbba32122,0xbaab72ca,0xbb68300a,0xbb3d64c6,0xbb4fc7aa,0xb9e6c45c,0xba00bec4,0xba31f1b2,0x3a4d5b65,0xb88dde2b, -0x39089038,0xb8b39d33,0x38c588ff,0x37ca44f2,0xb96ac0c7,0xb9e1d99f,0xba8b1abd,0xba5972e4,0xba66b2e4,0xbaa3e490,0xba854ab3,0xba275937,0xbaa3c170,0xbae72264,0xbb20d2b7,0xbb312da6,0xba1c4892,0xb99dd93f,0xbaf5e2e1,0xbb802028,0xbb7a48bc,0x3aee8727,0x3a8d585c,0x3ad1cbca,0x3bdc6e79, -0xbb440db4,0xb952a483,0x3bd59eb2,0xbacea12d,0xbb81286b,0xbbcd9727,0x3a45dd1f,0x39bc466b,0xba267d0d,0x38209423,0xb94f4c1a,0x3907dd3d,0xb7987a68,0x37525e0e,0x3917c645,0xb8f99946,0xb9c45ab5,0xb99d0d22,0x3956fc19,0x3a3e40a9,0x389e9134,0xba9350b6,0xba9a7e94,0xbae5c4a2,0xbb16e6f3, -0xbb013d6e,0xbac90c72,0x3b0fe0a8,0x3ae0b63d,0xbacd3020,0xbbb6185b,0xbb95f544,0x3b6c019d,0x3b781bad,0x3b94909e,0x3bb18544,0xb9dd0604,0x3b60d112,0x3c0a2061,0xbb99315e,0xbc038940,0xbb8e4829,0xbaf797ed,0xba09880f,0xb84b03a6,0x3907a1f8,0xb887d5ae,0xb8e1715b,0xb8d269a3,0xb8d2c9ec, -0xb95290ce,0x378478bf,0x39f7352f,0x3b0542ff,0x3adaba22,0x3b185289,0x3afb4dab,0x3ac3e19d,0x3aaa1e5a,0x39290a4d,0x39b35a9b,0x392fae20,0xb8d34d1a,0xbab03dad,0xbab69738,0x398d1fa1,0x3a7fded5,0x3b48a68d,0x3b993d48,0x3b7f7a9d,0x3a5994d0,0xbba02f3f,0x3ab35fe9,0x3ab791ad,0x3b86b9eb, -0x3beaa074,0x3bcc7c9a,0x3b3ac4a4,0x3aac2acb,0x389e0065,0xb9c657d3,0x39884fed,0x38f8c9d6,0x399341ae,0x398aa44c,0x3996e8b6,0x38ac938d,0x3a0592b6,0x3a6bbea9,0x3a86d73a,0x3ab030a1,0x3a75bebb,0xb85c3576,0xb9c86059,0xb92e90b4,0x3975b98e,0x39a10e1f,0x3980b1ff,0x3a0cd745,0x37983e38, -0xba0e8b00,0xbab2938e,0xbb7cbebe,0xbb8ebdb2,0xbba2629c,0xbb6b0903,0xba584875,0x3a3f2690,0x3b2a3c4f,0xba4a1572,0xba90ed8e,0xba9d415d,0xbb04ddd5,0xbac5db84,0xbaaa708a,0xba9af31f,0xba1d15bb,0xb9cda4d2,0xb9301008,0xba1e432a,0xba244b1d,0xba0e3615,0xb848f826,0x3a03e8f0,0x3a12c241, -0x39b5ad7d,0xba7bd590,0xbab46a15,0xbac90184,0xbac14d46,0xba8e8057,0xba2cf716,0x3a7fb4df,0x3afa8476,0x3b1d0851,0x3b10ea68,0x3afca524,0x3adc641a,0x3a965e41,0xb8147104,0xbb23e5cb,0xbb4c9832,0xbb63eec0,0xbb468b17,0xbabce853,0xbb33f6be,0xba429968,0xb9e1a1f3,0xb89be5ff,0x39e97d3f, -0xb9e9d503,0x3980bc38,0xba03d6a1,0x3938360c,0x39473374,0x3a62e643,0x3a2d1b9d,0x3aa5a532,0x3ab48209,0x3a99eaf5,0x3a472d5e,0x39aefa55,0xb938b666,0xba4cce1c,0xba65e9c1,0xbad23e5b,0xba88d4bc,0xba5355dc,0xb8871b1c,0x39e1a7c9,0x3a66285f,0x3aaecde2,0x3adaca58,0x3aeb43b6,0x3a91f226, -0x39805836,0xba5e92c2,0xbaced37a,0xbae34935,0xbb01e36c,0xbae8e7f0,0x39d44469,0x3a05772c,0x3ae4088c,0x3a5e7baa,0x3aa7e16c,0x3aad24fe,0x3a6466e7,0x39f8b11a,0x3ab12b80,0x3ac74b25,0x3b387a63,0x3ad6cfe8,0x3b0a9729,0x3afafbab,0x3aba31d1,0x3a501cb4,0x399f10ec,0x38f65655,0x3a1092b6, -0xba2e4719,0xba38918d,0xba04adc2,0xba1aeb17,0xba09e938,0xba0b06f0,0xb9e15315,0x37e7ae9f,0x39a7fd14,0x3a7b1627,0x3a83c2a4,0x3ab5c82c,0x3ad4915c,0x3acc6acc,0x3a8c1250,0x393f95ea,0x39ea6556,0x3ae5f4f8,0x3ae20075,0x3b3bff7c,0x3afffcb2,0x3b0313f3,0x3b14a072,0x3afe974c,0x3b137de8, -0x3ab20d12,0x3ab1ed61,0x3a7cee11,0x3a8e4e80,0x3a1e4ee6,0x3a45d0a9,0x3a177b19,0x39c16ef3,0x39928abf,0xba1edffb,0xba2bc210,0xbac2b7b5,0xbaa40618,0xbaa6aee1,0xba983d46,0xba90c147,0xba80efb8,0xba64b6e0,0xba6c8cb5,0xba3b9a59,0xba2e2505,0xba01b8b3,0xb9d9cbf0,0xb96ec9dd,0x388b48c6, -0x39d17344,0x3a946b50,0x3ac7d736,0xb956bd8b,0xb9387da1,0x3a0619cd,0x3a81186e,0x3a435fbd,0x393dc004,0x3a2bdcf5,0x3a6a41a5,0x3a8dfb6e,0x3a8e8c09,0x3a852b21,0x3a8ad3db,0x3a926cf1,0x3a8be684,0x3a48e7a9,0x380bc300,0x39e6216b,0x3a082942,0xb8497146,0xba416a89,0xba299824,0xba3208ec, -0xba3ac68b,0xba4976ce,0xba507423,0xba4f11cc,0xba3fc8aa,0xba174a79,0xb9fead27,0xb9b30b7b,0xb95d07c2,0xb819e4f0,0xb68ded3a,0xb91105ea,0xb94be85b,0xb972a1f8,0xba66cdde,0xb6175b4b,0x39819260,0x3a4fa66a,0xba792b27,0xbad10e4b,0xba487ae5,0xba3e4feb,0xbab315fe,0xbabdf7f3,0xba8f4c85, -0xba75403d,0xba6eab98,0xba48536c,0xba63de3f,0xba5f9e02,0xbac90133,0xba892933,0xb9e7375c,0xbab1cf0f,0xba777b2f,0x3a26611e,0x39ad7969,0x39b6baba,0x39dda0a1,0x39e2efa3,0x39c06960,0x3927f1c7,0x390f383a,0x3928651f,0x39e9b945,0x39624810,0x38b90f43,0xb6acab67,0x391d711e,0x39203f63, -0x393afa37,0x395b030d,0x39b8463b,0x3825aed2,0xbafe4ff2,0xb9f7b8ea,0xbabd4581,0xb9e7bc3e,0xba6b9396,0xbae58d7b,0xb9fa5efe,0xbac510f6,0xbaf5a835,0xbae22612,0xba779c33,0xbab7960b,0xbac8d410,0xba81c84c,0xba68264e,0xba009dea,0xba92b1de,0x3613262c,0x3a207ffc,0x3a10f67d,0x3a81a97c, -0x3a50ff1c,0x3a1ed0e3,0x398ad2b7,0x39869126,0x3a02533f,0x3aa12f45,0xb917ea46,0xba0c5466,0xb99a54b1,0x39e07ec0,0x3a45d846,0x3a447205,0x397f045b,0x3a6a36b5,0x3a14f05b,0xbabb77ad,0xba1f43ae,0xbafedbcc,0xba2b15fa,0xba8902b1,0xbb1975be,0xbabded36,0xba12e093,0xbb5cccd0,0xba13a4e7, -0xbaa77a00,0xbb063042,0xbaaf50c3,0xba8a6147,0xba187ecc,0xba2e7b6a,0xba3453f4,0x3a161878,0x3aaa1170,0x3a8e7c24,0x3ada5644,0x3ac26d70,0x3a966ee5,0x3854685e,0x38638583,0x38cbc228,0x3b044066,0xb9173e28,0xba18aac3,0xba3db587,0x39b138d6,0x3a19b8e6,0x3a212974,0x39eb29d1,0x3a37f41d, -0x39ffdbad,0xbb0beef2,0xbac68169,0xbb12987a,0xb99afe1c,0xba1932d5,0xbb844d2f,0xbb10c7ab,0xbb3cfdbc,0xbb8172a5,0xbb09652a,0xbb0971bf,0xbb138f1a,0xbae04f9e,0xbad0435a,0xba41ffbc,0xba097162,0xba0fd36d,0x39fccb54,0x3ac342f8,0x3abe7baf,0x3b1e36c6,0x3b0bea4a,0x3ae31269,0xb8b1131e, -0x3a1e9bfb,0x3a60b0f5,0x3b6968e2,0xba828e8a,0xbac5cb43,0xba81f9e0,0x3a7fc7af,0x3afb126c,0x3af7b525,0x3a0c9693,0x3a9d2579,0x3aa3481a,0xbadd6241,0xbaa4fe59,0xbb33132c,0xb9aaca89,0xba8f0b6e,0xbb3de9e4,0xba8753ee,0xba96ae30,0x3a0ce151,0x39613a32,0xb83c5c2a,0xbae1ad26,0xb9d87a87, -0xba5acc4a,0xba88437c,0x3a3b3ed8,0xba0359d8,0x3ae732d6,0x3b2cb3a1,0x3b213e36,0x3b52c978,0x3b3b55ab,0x3adc1138,0xb9ba7af9,0xba869e93,0x395cb6a5,0x3b7d532f,0xb92c0187,0xbacb0cff,0xbaa9afa6,0x3a05f040,0x3a7b31c7,0x3a428f55,0x39decfca,0x3bdc9521,0x3ba118bf,0x3b35b322,0x3b4f78a9, -0x3b591891,0x3b86fec6,0x3b6aba2a,0x3af7156f,0x3b00577b,0x398af074,0x38d65ad1,0xb9433f0f,0x397848d8,0x39e9618b,0x3a37fb46,0x3a97a061,0xbba8e190,0xbb981cef,0xbbe0b05c,0xbbd7eb96,0xbbdf0196,0xbbc75467,0xbb9e8fc0,0xbb50e657,0x3a4fc0a7,0x3bdaf8f7,0x3bd26dca,0x3b5ffe03,0xbabc733a, -0xba88b555,0xba6b5bcb,0x3a17552e,0xb9d5fd42,0x3afbabca,0x3ba51c9d,0x3bf4dc6b,0x3af14445,0x395d5c3d,0xbb25b011,0x3a2162ba,0x3b3da312,0xbadf3a46,0xbb37b568,0xbacdc37d,0xba11a1e1,0xb9fed1a4,0x38dccd2f,0xb815e184,0x38312ce9,0xba1864c3,0xb9ac7e95,0x39a87b88,0x3a063da4,0xb9b3fe1f, -0xb9e8c2ee,0x3a5b6f6a,0x3b35c262,0x3b3cd962,0x3b257a10,0x3a857bfe,0xbab52814,0xbb892abb,0xbbe1e3f9,0xbb9e4ff1,0x3a985875,0x3b47183e,0x3b1d6634,0x3a2fdca4,0xbba7bfa3,0xbbecb7a6,0xbba0b17e,0xbae8d15e,0xbb3c07de,0xb9778008,0xbb283912,0xbb32640a,0xbb61cd09,0xb9b2c1a9,0xb9e57dfe, -0xb9054f05,0x3a010f88,0xb5ac3da9,0x3843d388,0xb8454e76,0x37bce671,0x39169068,0xb9cd97cf,0xba242cdd,0xbaae572c,0xba993a28,0xbacf3425,0xba122baa,0x380411cf,0xb9f0ccbe,0xba18176a,0xba6021db,0xba4f9bdf,0xba918e56,0x3aec4da8,0x3af52162,0x392f0b8f,0xba94cd23,0xbab7ea45,0x3abc6970, -0xb9092267,0x39c99aab,0x3bc4adce,0xbb080ef1,0xb9ca7296,0x3bfb10ac,0xbada18fa,0xbb74fdfd,0xbbd9cbf7,0x39b09157,0x39362642,0xb9d58959,0xb833c5a1,0xb8c2081d,0x38c30bba,0x382555f6,0xb787650e,0x390c0e08,0xb7981620,0xb9e97470,0xba11bc7e,0x3a22aa5e,0x385a303e,0xb9f00060,0x39d32e61, -0xba4eaa4f,0xba974ace,0xbab9b46c,0xba65783f,0xb95e6254,0x3b58ed69,0x3b160cff,0xbaccc87a,0xbb7cfbfc,0xbb0a0827,0x3ba88c1b,0x3b445163,0x3b1f8021,0x3af63dab,0xbad427dd,0x3a6c6c99,0x3bfe2b8e,0xbbb5dbb2,0xbc11cf5c,0xbbd0f88c,0xbacd56b3,0xba0af7fd,0xb940f0ff,0x3912bafe,0xb8394aad, -0xb8f78635,0xb8843dc4,0xb8f43981,0xb8f13c3d,0xb91c2fd4,0x380f96ed,0x3ad0247e,0x3ae11e8d,0x3ae7de65,0x3b3dc4ed,0x3b0e65d5,0x3addaa26,0x3a0a5642,0xb966762f,0xba3de3dd,0xba4b8135,0xbb209df1,0xbb2aac62,0xbaf0dba2,0xb9324146,0x3b0c3a34,0x3bcee763,0x3ac86383,0xbb3a9f99,0xbbf76a4a, -0xbb3dd135,0x3a500daf,0x3acfb98f,0x3ba33a03,0x3bddb52a,0x3b2ae936,0x3a6529ef,0xba00c43e,0xb9c40795,0x36dfc2a6,0x38858034,0x393222a0,0x39622bd4,0x394c4d0c,0x38ae4456,0x39c71236,0x3a824cbc,0x3ac77296,0x3aa22d6f,0x3a0f0d34,0xb9a35730,0x39a84db7,0xb894e806,0x3a5df673,0x39f210c3, -0x38668134,0xb908b179,0xba9fbb48,0xbb02478c,0xbb522ba2,0xbb92de62,0xbb91d9c3,0xbba4d63c,0xbb866a0c,0xbaeaa699,0x395b1af5,0x3a0b12ba,0xba427a14,0xbad00a62,0xbb2ea655,0xbb3b3dc5,0xbb21f888,0xbafc4c86,0xbaa04ccb,0xba6ec498,0xb99e9e91,0xb9f800e8,0xb9abbce1,0xba25f4ac,0xb9e90c4f, -0xb9428a76,0x3982d47b,0x3931fe51,0x39388895,0xba3ca7d9,0xbac4a06f,0xba445807,0xba419b05,0xba2186e8,0xb99dbc2f,0x39e78f76,0x3a8a6f13,0x3ab7aa1e,0x3aba54ec,0x3ac854ba,0x3aca1610,0x3aa6019c,0x39d99b29,0xbab35978,0xbaece5df,0xbb2d5428,0xbb1ce17c,0xbac6c316,0xbad65465,0xbb2eb6c9, -0xbb055511,0xbaa85038,0xba7490cb,0xb9d9dba7,0xba25650f,0xba47b8af,0xb9a7919d,0x38b5e962,0x39ede544,0x3a048034,0x3a46fdfa,0x3aa24c8c,0x3a89468f,0x3a494bc1,0xb831b5aa,0xba033c28,0xba4586f7,0xbace5602,0xba2e06f7,0xba142182,0xb910e794,0x39b024bd,0x3a53f7fc,0x3aac0d56,0x3ad85a0a, -0x3af877b1,0x3af74944,0x3ab66cb2,0x3a2365e7,0xb9962b23,0xba908915,0xbaab0298,0xbab87ceb,0xbae08960,0x39ca6a5f,0x39fc5c0d,0xb8dbc38f,0x38751d48,0xb9646d71,0xb9208e5c,0xb6cabf7d,0x39c3bf81,0x3a63d22c,0x3ab495c6,0x3ad6e821,0x3af091b5,0x3afe82e4,0x3afb2e64,0x3a830d7e,0x3a76c305, -0x3a1359d1,0x39a7238b,0xb9ea5751,0xb9bb8aa1,0x39c6b58a,0x385e3470,0x39a3950b,0x398d64ec,0x39c843fa,0x39dce6cd,0x3a572b7a,0x3a7fc683,0x3aac34af,0x3aa8cb3b,0x3ac82248,0x3ae38b63,0x3ad2d48b,0x3a63ea68,0xb832a8dd,0x3844f3bf,0x3b07f5e5,0x3b08f72c,0x3aba228b,0x3b126245,0x3af96ae1, -0x3b053c37,0x3b03663f,0x3ad6ee9f,0x3ad07587,0x3a484e79,0x39d50dd5,0x398c3a9a,0x39e20201,0x39d07507,0x38d0d5da,0xb93ff349,0xba1c4c6e,0xb9b878b9,0xbab119b5,0xb97892f7,0xb9d0208d,0xb9ae7944,0xb9a50fee,0xb998512c,0xb9748cc3,0xb965ea8a,0x38eebcbe,0x39d91b87,0x3a1e0887,0x3a60dd12, -0x3a63a951,0x3a780116,0x3a8e7828,0x3ab090ac,0x3b0095fb,0x3b106336,0x39d7ed57,0x3a20a531,0xb9903a8e,0xba4d23f5,0xba050307,0xb9e098db,0xba60c546,0xba3a41bc,0xba30fb29,0xb9d1d426,0xb958bce1,0xb98a8b49,0xb9e053b8,0xb9ff5d4c,0xba1fc28a,0xb8b511a5,0xba14a448,0xba5eae31,0xb9cf75a0, -0x39c51b17,0x395d9052,0x39696349,0x39597918,0x3944e793,0x392f1a00,0x390f7fee,0x3931dffd,0x39694eb0,0x39917238,0x39be98e6,0x39fabee3,0x3a2d71d0,0x3a2d43fc,0x3a010840,0x39ca23ad,0x39abb6f2,0xb8057c52,0x3a937c9a,0x3a3eac13,0x3a22cfb2,0x3ad3d31b,0x3aa4224b,0xb998d551,0x3aaf059e, -0x3a99a298,0xb8a35010,0x38ac3ede,0xb830c53a,0xb9cca144,0xb98160ca,0xb9b6d963,0xb9b19ee7,0x3a93bcd0,0x3ab5a044,0xb9a99b36,0x3a8d8c25,0x3ab77e44,0x3a1847bd,0x3a53bfde,0x3a71afbd,0x3a789bc1,0x3a70645c,0x3a5a6873,0x3a2af70d,0x3a269474,0x3a38e375,0x3a835ace,0x3a5fdc1d,0x3a410e50, -0x3a3547cf,0x3a74b18a,0x3a6c1a1b,0x3a34f60a,0x3a44907d,0x3a224ffa,0x3ac364d0,0x3a870f0e,0x39e040d2,0x38dd8d53,0x3a66e1c2,0x3a814aba,0xba1779c0,0x3888d714,0x39e1e197,0xb9a1ad75,0x39c863a3,0x39598163,0x3867f915,0xb9240ad1,0x39d6b503,0x3a58343c,0x3a3c0c04,0x3aa1a17b,0x3ad0dfe7, -0x3a95315c,0x3ace2ca9,0x3afb5d93,0x3ae01bea,0x3acbc3e7,0x3abe953e,0x3aa3365c,0x3ac1352d,0x3b0d4e90,0x3a8dd27a,0x3a550382,0x3a94ae5b,0x3b14dbb2,0x3b1d0198,0x3ac5bf15,0x3a9c41e0,0x3a57b20e,0x3adaea6f,0x3aa615fc,0x3a2e5946,0xb8d10a2c,0x3a3354c4,0x3a35885f,0xbad8bfe4,0x3880d8ea, -0xb95632bc,0xba98fe5d,0xb91d61f4,0xba104a5e,0xb9b66388,0xb985982e,0xb9144447,0x3a576f1d,0x39efd1f4,0x3a9a22c4,0x3abe80ea,0x3ae71bfd,0x3b208307,0x3b383ed8,0x3b24cabd,0x3afb75da,0x3a9f9318,0x3a8e1332,0x3aa25838,0x3b596fb9,0x3ac2e8fa,0x3ab9ba8a,0x3aba627f,0x3b4c2797,0x3b3d2845, -0x3aa8a251,0x3abd4fb1,0x39635dd1,0x3ae3ffcd,0x3a8f0711,0x38f1a730,0xba9fcd2c,0x39bab5a5,0xb8f0bd44,0xbb45e706,0xbad76cf3,0xbb13a03c,0xbb5568e9,0xbaeb029a,0xba9a46c0,0xbb008277,0xba85235f,0xbabe4701,0xb84e6571,0x395f4f15,0x3a9efd52,0x3b025b89,0x3b02c86f,0x3b3fe5d0,0x3b86c5be, -0x3b75b66a,0x3b6a228d,0x3b1385bf,0x3b196272,0x3b220dd4,0x3ba54ba1,0x3aaab6b2,0x3ac93a3e,0x3b00d623,0x3bada425,0x3baa8f94,0x3b16aa63,0x3aee98d4,0x3a4b1276,0x3ad4bf06,0x3a5b48e5,0xb9a6d312,0xbaee5e48,0x39cb598e,0xba20ef30,0xbb1f8612,0xba220e4c,0xb9ff0b8e,0x39e03613,0x395a8c54, -0x390ba1eb,0xbaa9afe8,0xba13b649,0xba54e9ef,0xb9e5bfb1,0xb9cc6f00,0x3abd3ee3,0x3b1caf2b,0x3b4ab0fb,0x3b933063,0x3bab81d7,0x3b8efe4b,0x3b43925d,0x3a855f3c,0x3933ec11,0x3ae046ff,0x3bafff06,0x3b1db4fa,0x3aff4c02,0x3b11702a,0x3bba2294,0x3b9bac2a,0x3a871042,0x3ab61aca,0x3c03a782, -0x3bd1faf9,0x3bdccb93,0x3bb4623b,0x3b90daee,0x3b8a4446,0x3b572faf,0x3ac111a1,0x3ac92c99,0xb7f05f41,0x392352a7,0xb9387dd1,0x395c9fcc,0x393718b4,0x3a95cbb8,0x3acd51ac,0xbb5db1b6,0xbb874e9c,0xbb8f5aaf,0xbb8cc6eb,0xbbc48bff,0xbbbe2f5d,0xbbc47915,0xbb31acb8,0x3a82c521,0x3bca3e2a, -0x3baf1e63,0x3b077006,0xbb097cfa,0xba73d69b,0x39f22f7d,0x3b9218de,0x3b207844,0x3b8fde24,0x3bf6830a,0x3c161767,0xb98d7d07,0x3ab8074a,0x3a783d6a,0x39e6af93,0x3b85f2b4,0xba39bbc4,0xbb0188dd,0xba5f46c6,0xb9dc5cc8,0xb986cd3d,0x38d4e953,0xb84ee71d,0x389ebda4,0xb9b385c0,0xb93fccda, -0x39845a69,0x3a84d029,0xb9af2781,0x34824642,0x3add6e93,0x3b691c97,0x3ba8261b,0x3ba7c7ad,0x3b0c4273,0xb9ec1069,0xbb5d59b0,0xbbb8cb90,0xbb6a2310,0x3b3486ae,0x3b78d393,0x3b5fd6aa,0x3afdc697,0xbb421841,0xbbb462b1,0xbb8a3fc4,0xbac0f75c,0xbad97fc5,0x3acb79d8,0xba994b63,0xbaf5b484, -0xbb0dd217,0xb92c11d0,0xb8685519,0x39875e79,0x3998008d,0x381063c5,0xb5d617cb,0xb80ac8db,0x375826b8,0x387ccb02,0x39280863,0xb9063add,0xba0ee136,0xb9a3b7f4,0xb9002ea7,0x38f3ca56,0x394da131,0x39ddb49e,0x39ed0aa4,0x39da9353,0x3a1896af,0x3ab406fc,0x3b44fc68,0x3b29fd68,0xb9f559ea, -0xba9ff88a,0x39c20225,0x3bc7965c,0x3bc02805,0x3bd0764d,0x3c0e5dbe,0x3969372e,0x3aa7220b,0x3c09662a,0xba40f6a5,0xbb46ea28,0xbbc8b3d3,0x39f44ff1,0x398969f4,0xb932deed,0xb880bce3,0xb84f0a7e,0x386f484d,0x37f1a6d3,0x383063f0,0x3809392e,0x38888f10,0x38934568,0x38ad5d73,0x3a690b4a, -0x3aab2924,0x3aad52ec,0x38da6662,0xb96f228c,0xba1f0b6a,0xb9212058,0x3a8f2b15,0x3b4fdb07,0x3bc7cc6a,0x3b99efc1,0xba7b186c,0xbad211d7,0x3a61ba88,0x3c1e2bff,0x3c0c385d,0x3c0d8d4a,0x3c054c3e,0x3aa77d8b,0x3b4170a1,0x3c0d45f0,0xbb8658dd,0xbc17bacb,0xbbd9d187,0xbaa902c2,0xb987be92, -0xb6112f21,0x38ae7576,0xb7c3db7f,0xb827ade3,0xb8561b8d,0xb8c59bbc,0xb805ab05,0xb6567816,0x38dac378,0x3ac89369,0x3b03b9da,0x3b1ca814,0x3b2cbe82,0x3b2132ec,0x3b26822d,0x3ad8b24b,0x3a8e7f01,0x39c2cac6,0x38ae98f4,0xba681af8,0xb9f5df33,0x3a7685ec,0x3b2cbac1,0x3ba7e622,0x3bf6d630, -0x3ba74473,0x3ab8de56,0xba9c200f,0x3adb0241,0x3bdb62f9,0x3bd63b2b,0x3bf1b7a1,0x3c1def2e,0x3b5d2aea,0x3ac7b29d,0x38483205,0x380947ca,0x3925914a,0x389b9edb,0x39239ece,0x392ef309,0x396a372b,0x38fb9b17,0x39fd701c,0x3a936dc7,0x3adb2a2e,0x3b28cf35,0x3b1c1a8b,0x3aa38ea6,0x3a84c25e, -0x3a0f9c7c,0x3a8f7824,0x3a9b8a4c,0x3ab2f719,0x3b1848e2,0x3ac579c8,0x3a89b9b8,0x3a68bb28,0xbacff3c0,0xbad7f7a7,0xbab63888,0x3a89164c,0x3b821358,0x3baeb469,0x3bc4d9bd,0x3b182f40,0x3adefad7,0xb9c84458,0xbab56e6f,0xba96ddce,0xba93ae59,0xba55b60e,0xb9f00f4d,0xb84cbffa,0xb801b342, -0xb976da46,0xb99046fd,0xb9a70fcf,0xb8d89b61,0x39d495aa,0x3a345ab7,0x3a5be747,0xb98ec509,0xba84237d,0xba503052,0xba20ac0c,0xb98a8234,0xb8679a0e,0x3aabdce5,0x3b022ba9,0x3b0ee738,0x3ae3e902,0x3ab611ed,0x3a767be2,0x3a8dcbbb,0x3a6730b0,0x38488e3e,0xba5f3bed,0xbaa27814,0xb94e6f03, -0x3a9ee51d,0xba5122f2,0xbaae2c77,0xb957c5dd,0xb85b31cc,0x39a685c4,0xb96e9eb1,0xb8f58a49,0xba1dd86e,0xb85a8ce9,0x37a82db0,0x39c7c3d1,0x39568285,0x3a307a3c,0x3a70cd05,0x3a999225,0x3a80e40b,0x3a4f51cb,0x39b49b4f,0xb85bbe10,0xba19a1fb,0xba047c92,0xb925babd,0x393e9f17,0x3a6b3fe4, -0x3abcae35,0x3afab477,0x3b14b5a1,0x3b2053c0,0x3b15db06,0x3aed8bde,0x3a96f29e,0x3a28d4ac,0xb940e583,0xb9fa07bb,0xba55cf04,0xba5f017c,0x39649248,0x3a2d7dc0,0x3a25e2cb,0x39f891ed,0x3a00dca3,0x3a1061eb,0x3a136c25,0x3a1adc98,0x3a9ebf71,0x3ac7ca94,0x3b1fff23,0x3b1330a0,0x3b10e688, -0x3b24419c,0x3acde6e7,0x3ac2a817,0x3a9381b3,0x3a6a8d54,0x3a431aea,0x39df8df5,0x39d110d6,0x39fc136c,0x39fa7029,0x3a10beba,0x3a29f200,0x3a5376ca,0x3aabdcad,0x3ae283b5,0x3b2182ca,0x3b1d5086,0x3b292a6b,0x3b2974e3,0x3b0ba796,0x3ab19ee7,0x3988ad4c,0x39c5bbcd,0x3b337506,0x3b27cc77, -0x3b26bad2,0x3b33f621,0x3b3ba889,0x3b3ae1ab,0x3b377f1b,0x3b121d60,0x3b105a21,0x3b039371,0x3ae2ac41,0x3af29ccd,0x3af63d2c,0x3b00a24c,0x3b0347b0,0x3ad69310,0x3a814adf,0x3a6a90bb,0x3786c29a,0xb92866d1,0xb9608cbc,0xb8563c72,0xb8014d78,0x38449bf8,0x38c78f8b,0x38a3b805,0x399f2e6e, -0x39ef0072,0x3a2b72fd,0x3a8ded65,0x3ab47704,0x3b00fc02,0x3b060247,0x3b123189,0x3b30a5e6,0x3b3cecb5,0x3a4b606e,0x3a7728ee,0x3aa5c83c,0x3a549bfc,0xb8ab78f6,0x3a8787e7,0x3a706ac0,0x395a2e09,0x3980f5df,0x39adcf6b,0x39ba16d7,0x39ae1d38,0x395dde64,0x39370f84,0x3aa8316d,0x3ab14c02, -0xb89e3876,0x3a787511,0x3a95a810,0x3a24cfc1,0x3a3424b0,0x3a3099b8,0x3a27efc9,0x3a1e8547,0x3a177968,0x3a13573b,0x3a36112c,0x3a5d7a00,0x3a80a1db,0x3a9098b4,0x3a922bf1,0x3aa3bdcf,0x3a96b487,0x3a80a5c3,0x3a60e562,0x3a493b9a,0x3a95a63b,0xba9ac94f,0xba3409fc,0xba5e11de,0xbaa79c2e, -0xb9a0bdb3,0x3a8dda34,0xba9a1bcf,0xb9f1e92f,0x3a2e563c,0x3a8c6c37,0x3aa144b1,0x3a7389b9,0x3a94e377,0x3abce309,0x3a962ce3,0xba1708c5,0xbaa48f01,0x3aca1039,0xb902e299,0xba81e8df,0xba5ded65,0xba3cd084,0xba51c65d,0xba3ef9ca,0xba57b7ae,0xba649f15,0xba7933cb,0xba7d6ced,0xba6f17f7, -0xba1ef82e,0xba695ad6,0xba828e61,0xba8fe333,0xba703b5f,0xba66fccc,0xba4a6b17,0xba4e2c0d,0xba49a3d1,0xbaa5d07e,0x399e4e60,0xba3d9679,0xb9f44cec,0xba00f817,0xba3ab8bb,0xba948ee0,0xba2e1a31,0xba7d2420,0xba95ee7d,0xba9e619e,0xba9a333f,0xba54dcfb,0xb9017592,0xbaa806be,0xb9795973, -0xba15fca0,0xb938f733,0xba92c0e2,0xba43a351,0xba4e45f8,0xba0e206e,0xba52e5f9,0xba81e42f,0xbaa85842,0xbaa9df1d,0xba924301,0xb9cd8159,0xbae82fb9,0xbb051399,0xbaeaaf6f,0xba7bbb7e,0xba0d04ed,0xb9b0c171,0xba448297,0xb9eb3db7,0xba0e3975,0xba33020b,0xbaa9cd50,0xbaad6e3f,0xba097901, -0xb99e2dbc,0xbb21f20b,0xba3f228c,0xba8eba13,0xbb2bbca5,0xbaea3b87,0xba84482f,0xbae980d0,0xbab1b06e,0xbaca5643,0xba1059a3,0xba027d47,0xba0190b2,0xb9a7094c,0xba2cb64b,0xba0f97ac,0xb9dbc4cb,0xba544d38,0xba97f1ab,0xbae328fc,0xbae25db2,0xbac8dba6,0x39a5d2c3,0xbaf8144a,0xbb1945ae, -0xbb164b5a,0xba926206,0xba2be845,0xb982fdfa,0xba0b0592,0xba11d21a,0xb9c12ee4,0xba3df34b,0xbaa0bdbd,0xbafd0fa7,0xb8bb01ba,0xb9726c70,0xbb5c54cd,0xbac4c925,0xbafe8ef7,0xbb268b5d,0xbac0ad58,0xbad4ad97,0xbafb6f52,0xbae7ec82,0xbb0d8676,0xba3469bd,0xba60433a,0xb998c2cd,0x39534979, -0xba198f0b,0xb904a874,0x394d71de,0xba2aada7,0xba9c0950,0xbb0de9dd,0xbacbaac6,0xbab33a95,0x3a85032b,0xbb52c9c2,0xbb6d5b15,0xbb439425,0xba298e94,0x3a253125,0x3a6a3059,0xb8a243ef,0xb884c8de,0xb8a7fa7a,0xba7755e0,0xbab989e2,0xbb2b7e8d,0xb8ec8ca8,0xba14315e,0xbaf41845,0xb9670750, -0xb9bb4346,0x39ca0cf3,0x38ff0dae,0x39aa85db,0xba8a77c0,0xba46b632,0xbab35fb8,0xba5b2540,0xba107f30,0x38e6b6d7,0x3a03ce6f,0x3985da3b,0x392b8140,0x3969c947,0xba2809c1,0xbae614e1,0xbb3a0f3e,0xbb5e0613,0xbaf207fe,0x3ae46a7b,0xbb282a64,0xbb740b05,0xbb417cb6,0xba853048,0xb969aeb3, -0x38123adf,0xb9cb3b87,0x3b9fe63b,0x3b1e6d2f,0x3b571af4,0x3b776c72,0x3b665704,0x3b6b47f3,0x3b005ccb,0x3a5a63ab,0x3a2c56d0,0xb9067254,0x390a56f2,0xb966f13c,0x391537fe,0xb8013946,0x3a853e65,0x3ad6883c,0xbb563782,0xbb889366,0xbbb96e5d,0xbbcda1fb,0xbc01e782,0xbbdcd34c,0xbba26db6, -0xbb14c556,0x3aa605aa,0x3bfb3085,0x3b9f0fe8,0x3a6b0a1d,0xbb925d8a,0xbb6db682,0xbb6fbca7,0xbb044502,0xbb4885e9,0xb96b64b3,0x3b98b24b,0x3bb91c41,0xb98de97e,0xb83bd732,0xba8b696e,0xba793967,0x3b300c3e,0xba9644fc,0xbaac800b,0xba069b8e,0xb97d8f43,0xb8e815ff,0x37668499,0x372edd95, -0x383fc37d,0xb945a4ac,0xb9eea18b,0xb9b5fa3c,0x39d2e38b,0xba5eafff,0xb9888cca,0x3838ce30,0x39be5457,0x3a4751ca,0xb9e2daef,0xbac1f471,0xbb4bcbe0,0xbb9eaa63,0xbbd55fc4,0xbb781ce9,0x3b2da95f,0x3b0dfaa4,0x3a945593,0x39f0fe9c,0xbbc15f85,0xbbfb8e77,0xbb87d157,0xbb2c0e68,0xbaab7afe, -0x3aadecb1,0xbabe59a8,0xbb017bca,0xbb231c40,0xb9d475dc,0xb7451142,0x391e3530,0x38bebd91,0xb61ea33e,0xb705eb99,0xb806c2cd,0xb85ec600,0x38e3f743,0xb906b53a,0xb98d22a1,0xba423415,0xba593830,0xba8d855e,0xba9aba38,0xba63022a,0xba97961e,0xba9e805a,0xbb1f7ad1,0xbb24c7c3,0xbb03e8b8, -0xb906978d,0x3904c82e,0xbaeca62d,0xbb2d1576,0xbb43ea05,0xb9c6cbf2,0xbacb353e,0xba0c77f2,0x3b3e92a7,0xba8c8c4f,0xbab27ce9,0x3bf6ee22,0x3a3f633f,0xbb464335,0xbbb53321,0x38b67cee,0x38cf4637,0xb9371673,0xb83494bb,0xb76296ac,0x380807ce,0x37bad072,0x380f37d3,0xb785e036,0x37daf394, -0xb9239038,0xb9df8854,0x3a4b77e6,0x3a5db22d,0x399e8cee,0xb9ad2b28,0xbab87736,0xbade3f86,0xbb3f6a71,0xbb2b728d,0xba708d18,0x3a80fe22,0x39188a07,0xbb9d03a1,0xbb83b043,0xbb22ef60,0x3b424dcf,0xba88a323,0xbb11986f,0xbb72143c,0xbb7fdbec,0xbb972458,0x3bbb698b,0xbba54304,0xbc16e087, -0xbbf4b33a,0xbad6966f,0xb99a2264,0x37d1636b,0xb7a6d8e4,0xb7e1aacc,0xb89bdab6,0xb88f02c5,0xb906e92e,0xb86283d1,0xb9358d64,0xb92809ca,0x3a844f11,0x3ac89fd1,0x3b02e23f,0x3b13d634,0x3a877e92,0x39081fbb,0xbab2b0ca,0xbaf841b6,0xbb0f69e7,0xbafd1e10,0xbb488c07,0xbb33818f,0xbb024146, -0x3a863504,0x3b3f163d,0x3bb70d26,0xbb532e34,0xbc19b9a3,0xbc583e20,0xbc08d84c,0xbabf5f11,0x3b75fd05,0x3c1bafd4,0x3c10c7c8,0x3b61f94c,0x3ab5dbdf,0xb9935137,0xb8c339fe,0x38167e41,0xb72e6d5a,0x38d5e5ea,0x39032158,0x3962692f,0xb6f4db9f,0x39a7e944,0x3a806372,0x3acff9c9,0x3b140ae9, -0x3aed1ef6,0x3a8f4d05,0x3a5aebd9,0x3a56df99,0x3a9a755a,0x3a4376ec,0xb89f0ff2,0xba60a529,0xbb18efec,0xbb6217ac,0xbba0c681,0xbbc4f2bf,0xbbc4d68e,0xbbe411ea,0xbbb6f0c1,0xbb5cf088,0xbb190f02,0xbb113e69,0xbaa4dbf1,0xba8994a7,0xba52ea52,0xbad1829d,0xbae6da6e,0xba9acbf6,0xba773087, -0xba085495,0xb93180e8,0xb9369871,0xb991cd85,0xb9c4ec17,0xb9d8ea41,0xb991dc10,0x38fc2f4a,0x3978898f,0x39c683a3,0xb9b11e95,0xba2c7220,0xba167784,0xba7fa40c,0xbaa1603c,0xbaaf2f39,0xba60a229,0xb9ea15c7,0xb9c8d22b,0xb9dd7b93,0xb92b85ff,0x3981c83f,0x391975a4,0xba366661,0xbb43fe8c, -0xbb504905,0xbb7be419,0xbb45679c,0xbb109c43,0xbb34b349,0xbae6c8dd,0xbaf05629,0xba9d00d3,0xba777933,0xbaa3175b,0xba5a9688,0xba6f5247,0xb9d9a437,0xb967307e,0x3963178a,0x38e15285,0x3a02c791,0x3a224d5d,0x3a51acff,0x3a62ff00,0x3a35b6a5,0x38b3b493,0xb9bb89e4,0xba5f00f6,0xba5f66af, -0xba09eca0,0xb937bfc4,0x39790cc2,0x3a248171,0x3a972578,0x3a98ec49,0x3a97d31d,0x3a699f01,0x392e3950,0xba6928e5,0xbb12282e,0xbb1309c4,0xbb032517,0xbb14304d,0xbb008735,0xba8fc5a8,0xba99a335,0xb996f31f,0xba259f15,0xb98cf0c2,0x38b7f3cf,0x389923aa,0x387f1112,0x3a3894f4,0x3a7ad11a, -0x3ad3c63b,0x3a979bab,0x3af84cae,0x3adae179,0x3ad9ad18,0x3aa07e1f,0x3a867e25,0x3a3c32e4,0x39dc7516,0xb9927dc5,0x39d77551,0x39ddee52,0x3a36b4aa,0x3a6654ab,0x3a958c5d,0x3ab2b6b6,0x3a967974,0x3a7811e8,0x3a57afc0,0x39fc7ca0,0x39d5bfa8,0x393fe64d,0xb8876093,0xba60abf0,0xbada5bca, -0xbab4059d,0x3ae8cd0d,0x3ad3b263,0x3b23ebfb,0x3b02d2f8,0x3af14d4a,0x3b00fab8,0x3ad45893,0x3b08ea6a,0x3ad4acd6,0x3ad04e4a,0x3ac67c51,0x3ad4e5b4,0x3abb4f2d,0x3ae507fb,0x3a8ef7e3,0x3a5aee6a,0x3a655251,0x39b764fd,0x39184a85,0x39d07d01,0x39cf6ca4,0x39b426e6,0x39aa2e30,0x399eff4a, -0x3971b1b5,0x3913e160,0x39e1ff41,0x3a03f6a8,0x3a113c82,0x3a1eee61,0x39da5f37,0x39a3ad19,0x3a1bb3ae,0x3a9587e1,0x3ad83f83,0x3ae31a0d,0x38f58ba7,0x38bd9e96,0xb5ba5d8d,0x39e302bd,0x3a8a319d,0xb9067162,0x393f75f2,0x3a7eb962,0x3a9a60ee,0x3aa90cec,0x3ab1cbf8,0x3abd47cc,0x3acc4a15, -0x3ad17928,0x39f0efbf,0x39536463,0x3a9997c1,0x39c772d4,0x38afa734,0x39bbdfc0,0x399f5b2a,0x39b9821f,0x39c71c98,0x39d69aef,0x39e496fa,0x39de5e75,0x39cf7b14,0x39a51014,0x3999b07e,0x3998d958,0x39aa9e4a,0x39c3f6ef,0x39a74ec9,0x3927f585,0x37ced71c,0xb69eaef4,0x39c4f352,0x3a99c66d, -0x3a68ea12,0x3ab13d5f,0x3a831d16,0xb9ac0ba4,0xbacb62ed,0x3a738256,0xb8b17be1,0xbad4ea0a,0xbac62ab3,0xbad66c1e,0xbae198db,0xbada99a5,0xbafdd11d,0xbad0f8fb,0xb98cc1e3,0x3a319cd6,0xbace5050,0xb9d58b13,0x3a26c992,0x3a95c03b,0x3a832b53,0x3a95450c,0x3a9bc950,0x3a92d74c,0x3a876f2b, -0x3a67b564,0x3a63505d,0x3a790267,0x3aa2acfd,0x3a8ba67a,0x3a756e75,0x3a6df673,0x3a8ded53,0x3a8507f0,0x3a47d685,0x3a7004cf,0x3a8101b2,0x3adcfadf,0xba93aba6,0x39315611,0xba655de0,0x39cf8ca2,0x39b02669,0xba862879,0x39145d14,0xb8eec684,0xba40c93e,0xb99eb71a,0xb8b10007,0xba00faf6, -0xbad7f196,0xb90cd1ef,0xb75cf816,0x395dfbcf,0xb9001623,0x3ac4c09e,0x3ac05e4c,0x3ae51526,0x3b0e9222,0x3aeb2cdf,0x3ad61901,0x3ad2ac83,0x3abc5c0e,0x3ad934d7,0x3b19dc01,0x3ab3ceee,0x3a9676a5,0x3ac23f4b,0x3b1783ac,0x3b18ab10,0x3ab02ab9,0x3a9f87b3,0x3aa7ef7a,0x3ae8ed4f,0x38fdae5f, -0x3a31a510,0xba522785,0x399c6f1f,0xb88415fb,0xba97239b,0xb9e6100c,0x388a8dcb,0xbafe683d,0xb843c5f4,0xba9743e3,0xb9ab61ec,0xba822971,0xba2045f8,0x3a1a8e40,0xb96b15b0,0x3988220a,0x3a95f8c7,0x3b144be2,0x3b1f277d,0x3b4bf77a,0x3b1de69a,0x3af6c93d,0x3aae73aa,0x3aa44990,0x3ac414f6, -0x3b665200,0x3adb466f,0x3ac9bd7e,0x3ad6773c,0x3b3699f8,0x3b1c0067,0x3a44c100,0x3aac2325,0x3a848402,0x3af18039,0xb9feabaa,0xba0932c3,0xbabd0011,0x38dca488,0xb972d854,0xbb10aea1,0xba976a8e,0xbaaa8d5e,0xbb05475b,0xba8a1120,0xba9e4df4,0xba8f8aa7,0xbadaab02,0xbaed057c,0x38847899, -0xb950ab77,0x398e2e80,0x3aa5d348,0x3b2a98de,0x3b453c10,0x3b913f0e,0x3b61e771,0x3b54d676,0x3b0dab33,0x3b1eb2c3,0x3b27dde4,0x3ba573c1,0x3ae20035,0x3af71178,0x3b23f195,0x3b9c445b,0x3b91ef49,0x3ad1b44c,0x3ac2354a,0x3aa57dfd,0x3b0231c9,0xb824389d,0xb9b174e9,0xbadaa8ef,0x39b83e2a, -0xb985fe0c,0xbaad724c,0x388c9b51,0xb8c593c6,0x3a0e0ec1,0x392e8fb9,0x39c4bc66,0xba1dd5c6,0xb9e1d8b4,0xba88254d,0xb9f5726a,0xb6dfa676,0xb909cd9c,0x3b00f460,0x3b5fbd84,0x3b8bc430,0x3bb081a7,0x3b77ca63,0x3b21a223,0x3a70315e,0x39c84f3d,0x3b0c6b8a,0x3bb9d887,0x3b282f22,0x3af692cf, -0x3b130389,0x3b94ea4d,0x3b532214,0x369b1b9c,0x3a715c1e,0x3c0b1c15,0x3bd466e3,0x3b9036c4,0x3b687626,0x3b646709,0x3b2cf1cd,0x3ae16028,0x39c5e7f1,0x39c45586,0xb8a06b70,0x35c98e84,0xb9435bd8,0x38e45f5a,0xb8c8c553,0x3a7d44d1,0x3b0703fd,0xbb157f44,0xbb321b67,0xbb818f1d,0xbb533966, -0xbb81b8a8,0xbb82695f,0xbb3a9200,0xba0fb209,0x3b49a828,0x3c0b58aa,0x3be1fe57,0x3b5093eb,0xba74f438,0x3954b988,0x3ad66c52,0x3baac657,0x3b3a3c6e,0x3baab131,0x3c1338c4,0x3c2a1faa,0x3a695864,0x3aea8dc9,0xba856041,0x3a3b15ba,0x3b04eaea,0xb84cf2d0,0xba68896f,0xb92dabc3,0xb8d7406a, -0xb626cacd,0x387ab9aa,0x385dbe4b,0x37ac6d99,0xb7ff5d14,0xb97c5e75,0x352667f3,0x3a413261,0xba19bd57,0xbaa56ccd,0x38b4715b,0x3b51c9d8,0x3b8e720b,0x3ba9d527,0x3ac78cd7,0xbaa61550,0xbb9e8c4e,0xbbcced93,0xbb53edd2,0x3b8370f1,0x3b3aa06b,0x3abf8016,0x38adfd15,0xbba12680,0xbbdfc46d, -0xbb83f2e9,0xbaea9dfb,0x399c1e99,0x3b50b743,0x39999512,0xba9e8a52,0xbad871c8,0xb9985d94,0x38cb35e5,0x39559108,0x37ce723d,0x3828f2e8,0xb7f0f197,0xb7b48c13,0x3698a128,0x381dffc9,0x390dc974,0xb82c1eee,0xb9b0a99a,0xb928ca3a,0xb7724488,0x3a28c542,0x3a1e10b4,0x39b0d7e6,0x3a320877, -0x3a4664a5,0x3ac4d943,0x3b36fa51,0x3b76322c,0x3b3f4abc,0xba06b1c3,0xb9372c02,0x3afc77b7,0x3bc75a12,0x3bc7a06c,0x3bdac8cf,0x3bd6042a,0x3a9e5fb8,0x39903054,0x3bde86be,0x39323256,0xbb08a563,0xbba73327,0xb839ea4c,0x38d3b2e2,0xb8b5fab4,0x37e74c5b,0xb6af94dc,0x37cca331,0x381dd5c7, -0x37cd34cb,0x37c830d1,0xb6125a98,0x39566ecb,0xb8039f6b,0x3a9c614c,0x3ab36645,0x3ad36bd1,0x3a4b6a93,0xb937758c,0xba121b17,0x38fe7596,0x3ad55ee3,0x3b9f636f,0x3bc85bf2,0x3b8931ee,0xbb21144f,0x395b7781,0x3b661abc,0x3c292388,0x3c043940,0x3bf3b474,0x3bb0d6ed,0xb8bea4d8,0xbabc670b, -0x3b5f3926,0xbb86420f,0xbc0c2025,0xbbf06a44,0xba81bd01,0xb95559e1,0x3901c05e,0xb8033e89,0x37de8a8a,0xb79518cd,0xb5ea2263,0xb854b802,0x382a753a,0xb8738ca2,0xb969d07c,0x3a3253a7,0x3adbf15c,0x3afbd0b9,0x3b2823b2,0x3b1928c8,0x3b17507b,0x3abff1cd,0x396fece4,0xba9315f2,0xbad7fc23, -0xbb154f28,0xbabdd3ee,0xba2cd8f4,0x3b2dea8f,0x3b9cf708,0x3bdb8506,0x3aed6c34,0xbb137c8e,0xbad0634e,0xbb074136,0x3bed0242,0x3bec87d3,0x3bebe8cd,0x3c30cebc,0x3b36d606,0x3acc6d25,0xb91d79d2,0x39149f69,0x380ae6f3,0x381c8ca3,0x38594361,0x386e99c4,0x38f1c482,0x3801ef41,0x39686211, -0x3a81588f,0x3adf44a9,0x3b448630,0x3b3a3289,0x3af64e9c,0x3ad262e8,0x3a374e47,0x3aa56703,0x3a9600c1,0x3a9c6619,0x3b00d52b,0x3a222ba3,0xb873fb5a,0xb9366b08,0xbb030cc0,0xbac99b6e,0xba5a085f,0x3ae12e3e,0x3b81c2be,0x3ba26f37,0x3b8f5d38,0x3b240168,0x3af556ed,0xba136c62,0xba8bc7e8, -0xba94d41c,0xba8339af,0xba17b6b7,0xb9b9bc8e,0x38bc162c,0x36e214d4,0x3604a523,0xb7e872a3,0xb8fd0ff3,0xb8c7567c,0x394e5e17,0x39d47c87,0x3a409662,0xb70810fe,0xba310452,0xba0cdf2e,0xb9d2b8f2,0xb94019f1,0xb989f805,0x39c55324,0x3a114abc,0x399e57d4,0xb7d52c52,0xb9199a0d,0xb9dc0e80, -0x3909ae7b,0x39f53843,0x3a1eaea7,0xb8bfc623,0xba0c38f4,0x3a2e6758,0x3ab37a7d,0xb8dc48f1,0xbb06950e,0xba630328,0xba3aff58,0xba08be83,0xba0b74cd,0xba395a6a,0xba355a95,0xb9b11f18,0xb93cb6c5,0xb7326bc9,0xb8f88adc,0x393b6a8b,0x39b7153d,0x3a50b6ac,0x3a5b843b,0x3a57809f,0x39cc71d2, -0x38fb82c9,0xba26753d,0xb87b50e4,0x390d58f6,0x3a006389,0x3a81720c,0x3abb8910,0x3af4115f,0x3b0295dc,0x3afe1433,0x3ac53696,0x3a962157,0x3a29b14c,0x39fde521,0x3502299d,0xb926df43,0xb9f365b0,0xba3571cc,0xba2e5f05,0xb97bd1a0,0xba5ddfa8,0xba0cfff0,0xba35ab2b,0xb9e9d703,0xb884a71a, -0x3990646c,0x3a2f5fa4,0x3a83bf9c,0x3ac334be,0x3ae5067b,0x3ae59a6b,0x3b087e57,0x3ab95ee2,0x3ace3d4f,0x3ab715c0,0x3a943f29,0x3a1f7840,0x3a4d16da,0x3a817b71,0x3a6f300b,0x3a888a70,0x3a958213,0x3aae5de1,0x3ac4eddb,0x3adada2a,0x3af8112b,0x3b16f97b,0x3b09feb8,0x3b04d7b2,0x3ae7c5d5, -0x3a9ad184,0x39b59287,0xba0ddad2,0xba09e2a3,0x3b1a4333,0x3b0613a1,0x3ade586d,0x3b1f2fe5,0x3b2570bd,0x3b1bd567,0x3b1e9514,0x3ae75330,0x3b0ace11,0x3af65363,0x3ae7d2b9,0x3afa1fc0,0x3b108a57,0x3b169382,0x3b143b77,0x3af24e4e,0x3aa2fb55,0x3ac76e38,0x3a1662bc,0x3a508e50,0x3a0cb058, -0x3a4a84d6,0x3a3aac18,0x3a46a57f,0x3a3a17f4,0x3a1b0fa7,0x3a818c35,0x3a8d223b,0x3aa7c347,0x3adcc48a,0x3afddbf2,0x3b245f7b,0x3b20c81a,0x3b2a677b,0x3b332faa,0x3b2ee570,0x3a7fb902,0x3a92706b,0x3a801548,0x397cf18f,0xb9bd46ff,0x3a6c0736,0x3a0b4f31,0xb8f9870a,0xb9072cfb,0xb5b668a5, -0x38b83ab1,0x3822a52f,0xb90a2ed5,0xb9157442,0x3a7f57be,0x3ac8f95e,0xb89bea68,0x3a43878b,0x3aa859cf,0x3aa557d5,0x3aa802d5,0x3aa8f380,0x3aa7069e,0x3aa79d58,0x3aa6b9d4,0x3aa2cee1,0x3ab03f08,0x3ab6835a,0x3ac39efb,0x3aca2ccc,0x3ac12821,0x3ac7966f,0x3ab0741a,0x3a9c4afa,0x3a8885cf, -0x3a783351,0x3af8a8ad,0xbaa9b1ed,0xba648b5c,0xbab595cd,0xba22036d,0x3a439645,0x3ab4038c,0xba3b2fd1,0x39e0e0c3,0x3ab304bc,0x3ad79afd,0x3adab0b7,0x3aa0ce51,0x3ab8501f,0x3aeac15c,0x3ac75892,0x39bda493,0xba24d2e7,0x3ae444a5,0x3a49bfcf,0xb9c67336,0xbab15352,0xba7baa4b,0xba87559d, -0xba805bee,0xba979086,0xba9e2a22,0xba9d010c,0xba9c470f,0xba90af7c,0xba564502,0xba8c5abb,0xba96b674,0xba9fba53,0xba851e5a,0xba81f0c7,0xba7c3ecf,0xba79f28c,0xba872b5c,0xba992ee7,0x3ac6f65f,0xba269d4b,0x3897e17c,0xb98ce38f,0xb96d51db,0xba28e36f,0xba14e307,0xb981db41,0xb9de34d5, -0xba0a3ea9,0xba83e2ac,0xb98b01e1,0x39b923bf,0xba8de5ef,0x39a46ecf,0xb9cfaa96,0x3a18aa6b,0xba8b2b31,0xba8f0bbb,0xba7f46cf,0xba5de82e,0xba9e7d17,0xbab1b115,0xbac1d709,0xbac487cb,0xbab2fe51,0xba4b7737,0xbaf9956e,0xbb02c0bc,0xbadcd2d8,0xba457784,0xb9e19c77,0xba154605,0xba4eeb89, -0xba6551d4,0xba1b1723,0x397ad944,0xba8d38f6,0xba2af32e,0xb94f4bd2,0x399856eb,0xbafa466a,0xb940c1af,0xba9a19c3,0xbad2ffdb,0xbb089d84,0xba7e7307,0xba70e27b,0xba958465,0xbac97f3f,0xb8fdc7e5,0xb989ff41,0xb85918b3,0xba1a343b,0xbaa112ad,0xba573389,0xba687188,0xbacf78d3,0xbb032c21, -0xbb07747a,0xbb018a98,0xbad98212,0xb86437d9,0xbafcaa06,0xbb0e3a4b,0xbaf75d49,0xba1ccf93,0xb9a2ac97,0xb9fce13b,0xba0c575b,0xba7840af,0xb95e966a,0x3a1afb3c,0xba366438,0xbabf6f46,0x37feadb8,0xb8b429be,0xbb0fde6f,0xba5f1652,0xba7e5296,0xba939eb3,0xba6be793,0xba83ae05,0xbaaa9a91, -0xbaccbd44,0xbb15b190,0xb9d527e7,0xba5f5580,0x391e007b,0x39665372,0xba9e6439,0xb9b9a0ad,0xb916399c,0xbacddc02,0xbb050ed5,0xbb0c51cf,0xbadaa488,0xbacc6a78,0x39636f7e,0xbb49654a,0xbb4701c1,0xbb105dac,0x39f36d79,0x3aac9c09,0x39db4f8e,0x3902de98,0xba0d6379,0xb9e8a24f,0x3806a379, -0xba892616,0xbb00bce2,0x38e59265,0xb96865b0,0xba5dfc51,0x397bde40,0xb8d14f7f,0x39a758c0,0x390cb8e3,0x3941f3b6,0xb9a685fa,0xba2ff0fa,0xbab4eadf,0xb9dcfdf2,0xbab4d161,0x3a22ecc0,0xb9210c4c,0xba27c58a,0xb9828ac0,0xb9d92c81,0xbb02e26e,0xbb4b0087,0xbb61cafa,0xbb6ca3c1,0xbaf4d9a2, -0x3a8f8a33,0xbb22eb6f,0xbb46ef9b,0xbafda67a,0x39b75037,0x3a15e167,0xb9bd018c,0xb9a8e53f,0x3b9d3b99,0x3b0d72ba,0x3b8c81d6,0x3b85e025,0x3b50dff3,0x3b23df08,0x3a63a149,0x3918b565,0x37be97b7,0xb87700f3,0xb80343ea,0xb927e55b,0x38c3938f,0xb93460f8,0x3a53255c,0x3accd5a7,0xbaa26a0a, -0xbb51813a,0xbb84243f,0xbb9f9e60,0xbbf26cf4,0xbbccc41e,0xbb97dfb5,0xba62339d,0x3b0aef19,0x3bfa5404,0x3b69443f,0xba5a3832,0xbbb70afa,0xbb8ff1c4,0xbb806abc,0xbaa7495c,0xbb1fce8e,0x39d9371a,0x3bb771c3,0x3bbf4bdc,0xbaa047cf,0x396d9f17,0x395b9871,0xbaaa9c4f,0x3b0d4d76,0xb9f68f4e, -0xb9979809,0xb868767c,0xb859415f,0x369688fc,0x37d21e72,0x37fb9d66,0x37f99579,0xb8a67503,0xb98b2999,0xba1d4b41,0x39d4b3de,0xba85f2b1,0xba042633,0xba024901,0xba056330,0x39f29fa2,0xba1cd630,0xbb01bfd0,0xbb64196b,0xbbb0e9b1,0xbbbec2a2,0xbb35a928,0x3b789bba,0x3ac714e5,0x3996732a, -0x38ef98e9,0xbbbbd0cd,0xbbeaaa7f,0xbb4db2ab,0xbb24ace9,0x3a5fea77,0x3b4ddb68,0xb7521e06,0xba8ae383,0xbad5400f,0xb9b821c9,0x390d9015,0x36c56f1a,0x36d6547a,0xb7d988dc,0xb772fb1a,0xb844f1c1,0xb7ec26f7,0x37427317,0x38b7e580,0x37accae4,0xb9379bb9,0xb9b6f250,0xb993b4d4,0xba83f6d5, -0xba74a957,0xba7a6732,0xba62f1d7,0xbb0c0701,0xbb06f291,0xba30efb0,0xb9fadb93,0xba24b2a1,0xbb4f8ec7,0xbb5337c7,0xbb2a27d3,0x3a1c310d,0x3a21ced4,0x3af9d233,0x3b02c278,0x3a4a96d7,0xba559733,0x3bb9b431,0x3aeb7aa5,0xbac9c222,0xbb8b27d0,0xb8284199,0x388a5a4b,0xb8b0506f,0xb58517ab, -0xb76a4921,0x372fb023,0x36a18178,0x37d1b77a,0xb7ffd834,0xb82427f1,0x38ab0e73,0xb984646d,0x3a48c18a,0x3ac00b0a,0x3a9af1d5,0xb9e970fc,0xbaa164a0,0xbac728b5,0xbb29b7c4,0xbb0290bf,0x3a8fe9ae,0x3a8526e2,0xb79bff37,0xbbc3f908,0xbb2081fb,0xba27fdf4,0x3b41386b,0xb9f3110d,0xbab6fb7e, -0xbb69d5c3,0xbb53d6ee,0xbbd8725a,0x3a1ab4b8,0xbb874000,0xbbf5e8d4,0xbbdb687b,0xbaafdd04,0xb8837f86,0x38940038,0xb85b27c1,0x36a8a17e,0xb7ba1e0a,0xb813d685,0xb88fc1ac,0xb7bfbccd,0xb86333d8,0xb95db5d7,0x3994e721,0x3a8d6eff,0x3aeea215,0x3acd342a,0x3a09cd00,0xb9900fae,0xbad2c79a, -0xbb04e8ab,0xbb282c51,0xbb260a47,0xbb35aa5f,0xbae787d6,0xba7f3df9,0x3b501ee7,0x3b8b6d15,0x3b755dfd,0xbba064db,0xbc2df8d8,0xbc3a7d06,0xbc0991a8,0x39b3ff8b,0x3bf6c4a6,0x3c3ca513,0x3c259596,0x3b508d0a,0x3ae5adcf,0xb84374ea,0x38809ebd,0xb72b64d0,0xb8141a97,0x37d41a18,0x379038a1, -0x38f2817e,0xb780aa48,0x38bd476e,0x3a31ff64,0x3aa0bb0e,0x3b36ed33,0x3b35eb92,0x3b0bce37,0x3ac19c85,0x3abda19c,0x3ab9f5fd,0x3a98b721,0x3a0aa372,0x382a322a,0xbace80a3,0xbb37071e,0xbb7bac91,0xbbb385c0,0xbbb21329,0xbbc115db,0xbb884e52,0xbb196f2e,0xbb059d66,0xbb0a126d,0xb9c4ccb0, -0x39acf006,0x39f41145,0xb99edf2c,0xba58874e,0xba0740b8,0xba0975f7,0xb8d6264a,0x37f9c8d8,0x3884676e,0xb907ceb8,0xb8a6dd06,0xb93bf9f2,0xb93e6524,0x385f032f,0x39856ac9,0x39fedabc,0xb89dbe5e,0xb9c46959,0xba21bbb1,0xba86159a,0xbab25bb8,0xbacc46a7,0xba9e16c2,0xba8770ef,0xbab45e8b, -0xbabd451b,0xbaa7e9f4,0xba7923b3,0xba5bf68c,0xbaade8ad,0xbb525a1a,0xbb59d4e6,0xbb6b66a4,0xbb10e104,0xbaba8104,0xbb242ee2,0xba93a2a9,0xba9945d0,0xba874a89,0xba5b7d0e,0xbac8b15e,0xba7215c1,0xba68f2ab,0xb9e498ac,0xb9bfaa95,0x37c9e55d,0xb929fbc1,0x392a45f2,0x3821f158,0x39cb410e, -0x3a20ca56,0x3a6ebe25,0x39c6ced3,0xb8e9c942,0xb9d2172e,0xba49d0a8,0xb9d527b9,0xb8f5eb88,0x399711a8,0x3a277764,0x3a8c7313,0x3a6d2c74,0x3a2dcd6e,0x38e8b051,0xba2e39c8,0xbad62c49,0xbb3884b1,0xbb15f0a0,0xbaf29f35,0xbb106979,0xbae36852,0xbb0df767,0xbb1436d4,0xba7e6022,0xbaad4aa6, -0xba42583d,0xb96febd5,0xb94b1843,0xb9b46b6d,0x39838ccc,0x39be3141,0x3a956365,0x3a04ffb5,0x3aaf1d55,0x3a9af83d,0x3ad1cf58,0x3a94c016,0x3a91b7b0,0x3a5548d6,0x3a66c3e1,0xb673c279,0x39d7cc74,0x3a1ba72b,0x3a4aca9a,0x3a8bffef,0x3ab5ee51,0x3ae2a3a6,0x3a9bed47,0x3a69fd34,0x3a34543c, -0x39433f8f,0xb8db7e3e,0xba2df559,0xba8c54c1,0xbaef6992,0xbb1e5831,0xbb0d7803,0x3a995b0e,0x3a6cdb25,0x3b19350e,0x3aba3b4d,0x3acaad56,0x3acd9869,0x3a9cfc8b,0x3af5d1fa,0x3ab7f80a,0x3af3c083,0x3b032339,0x3b155a9b,0x3b030683,0x3b20c530,0x3af5ce1a,0x3ad11041,0x3ae342ae,0x3a773498, -0x3a8dad15,0x3a307d9f,0x3a40ae32,0x3a32e185,0x3a269aac,0x3a1ae0fe,0x39e20f36,0x3987d384,0x39f4c6a1,0x39b0e9f1,0x398f6533,0x3977ca21,0x386e0820,0x38279ead,0x39a4b440,0x3a6b68d3,0x3a94d270,0x3a8aa4d4,0xb7c30e29,0xb931db7e,0x39911b1f,0x3a80134e,0x3ab3ec2e,0x397c56ed,0x3a5e355b, -0x3ac91c18,0x3ae8fe61,0x3ae77c84,0x3ae320d2,0x3af4fccf,0x3b089b78,0x3b0df8de,0x3a97217f,0x3a1dc9f3,0x3adf0355,0x3a982619,0x3a21271e,0x39ecd42f,0x39ff2468,0x3a0bb3c3,0x3a1450bf,0x3a2062d6,0x3a2d03f8,0x3a2dc376,0x3a24a5aa,0x3a06da6d,0x39ff778d,0x39ed92e1,0x39cd829b,0x39aee6a0, -0x394ec953,0x38866abe,0xb8a3b7c6,0xb8e5fb46,0x3a58d3c0,0x39d63a4f,0x3a013cb3,0x3a907b92,0xb9186df7,0xbaaf9030,0xbaca1d4a,0xb8450ee8,0xba8652d2,0xbaf38b90,0xbae36388,0xbae85613,0xbae2b776,0xbae2036d,0xbaf9c950,0xbac56c33,0xbaa6f299,0xb9e32025,0xbab81ea8,0xbaa9803f,0xb9e05515, -0x3a5308e5,0x3a0670b2,0x3a1a4dba,0x3a2c8662,0x3a0a2ac7,0x39f14737,0x39d33955,0x39d7b804,0x3a03ac1f,0x3a44a6f4,0x3a119598,0x39e830f2,0x39e3932f,0x3a0c8ef0,0x39fe2b74,0x39ae9c92,0x3a01cdd9,0x3a410189,0x3a6af5c1,0xbb04dc42,0xb98cb99e,0xbab02ed6,0xb9832bd0,0xb9f2477f,0xba9dd695, -0xb84cbc44,0xba3b0cef,0xba8b9d72,0xba8eca93,0xba41195a,0xba6ae1c0,0xbb0f3f71,0xba71b5ab,0xba2b188d,0xb9e762ff,0xba900809,0x39ec2045,0x3a5d061c,0x3a6cc514,0x3aa6819c,0x3a4771a9,0x3a20f270,0x3a265f6e,0x3a2e3386,0x3a5b6eac,0x3ab2c3ad,0x3a05144a,0x39c69385,0x3a4fbeb5,0x3aac8c50, -0x3ab3149e,0x3a337f80,0x3a28b2bd,0x3a97df8a,0x3a936595,0xba54eece,0x38f3958d,0xbab1b9fc,0xb997e95f,0xba2e947b,0xba6d0477,0xba516f31,0xb95aafe7,0xbb18efd6,0xba40139c,0xbacda86a,0xba1bd46b,0xbacf9db9,0xbaa93a66,0x382c8e60,0xba58bac5,0xba35fe43,0x3963327e,0x3ab7c93f,0x3a96ceed, -0x3aef8c4f,0x3a55492c,0x39f22156,0x39859eeb,0x39daa18d,0x3a44c53e,0x3b15cefb,0x3a25dc43,0x39f50f72,0x3a57800b,0x3aba352a,0x3a9b4984,0x396514f6,0x3a546b2c,0x3aa45178,0x3aaa94e8,0xbab9b24b,0xba8f55ae,0xbac62b31,0xb925d685,0xb997dd7d,0xbabe3a8e,0xba3b2658,0xba0cd072,0xba4cbf4a, -0xb9febca7,0xba950fe0,0xba0dfe44,0xbb00f517,0xbb09ca81,0xb9051c91,0xba57e347,0xba36f462,0x3887fb89,0x3ad4a7c5,0x3ad891c4,0x3b36ea30,0x3a922a05,0x3a5ab5e2,0x39f32c71,0x3a95b213,0x3aa76b80,0x3b4865ba,0x39bb0482,0x39ff7032,0x3acf518c,0x3b3984e1,0x3b39e46f,0x3a73ecd4,0x3a6f592f, -0x3ab724aa,0x3acc9e0f,0xba41f10f,0xba0a3162,0xbac79d28,0x38f3469b,0xb8fa70cb,0xb9cb6c98,0x39b35e08,0x36303333,0x3a0c7326,0x39592336,0x3991a1c8,0xb8bf0c75,0xb94b0ec0,0xba944e66,0xba065851,0xb8793ae1,0xbaabd3a9,0x3a348f3f,0x3b08c567,0x3b0deba9,0x3b4a42ad,0x3a7ea054,0xb8a02c6e, -0xba2afd1a,0xba077383,0x3aa99834,0x3b81c86b,0x3a765a2d,0x39927169,0x3aa04e22,0x3b128c81,0x3aae091d,0xb9a6e7ee,0x3a09688a,0x3bfb640d,0x3baada9e,0x3b288d4f,0x3b037c37,0x3b1909b1,0x3ab820f6,0x3a0855aa,0xb8afa609,0xb67d3ad6,0xb893770a,0xb8ffe6f3,0xb939d145,0x380deb69,0xb9055cb6, -0x39cc841f,0x3ae1f0aa,0xba99e156,0xbae43340,0xbb7e4374,0xbb4cfb93,0xbb5e311c,0xbb3ea74e,0xb9bb7fc8,0x3ae83acb,0x3ba2eed3,0x3c268013,0x3bef4207,0x3b5172f4,0xba68e62a,0x399055ee,0x3aa4c0af,0x3b786941,0x3af94c81,0x3b974244,0x3c11bd96,0x3c20de4f,0x3b12fb82,0x3ae9785d,0xbb05bb48, -0x3a2cf00a,0x3a14300d,0x3938030f,0xb99f108d,0x36413593,0x37c03a5e,0x38443f21,0x389dc798,0x38a1daae,0x37d5081a,0x3806323d,0xb941871a,0xb993d492,0x39b13331,0xba2c67c1,0xbaedc873,0xbaa161c8,0x3ae5cfba,0x3b19da0f,0x3b5193e2,0x39bacb67,0xbb036607,0xbbb25f9b,0xbbb6a1c3,0xbafe5b89, -0x3bad2196,0x3b231674,0x39e2f9e3,0xba3ce03a,0xbbc42a20,0xbbe5fad8,0xbb256010,0xba8e28a4,0x3b287439,0x3ba1cd63,0x3ae35e77,0xb9c8597d,0xbab2463c,0xb91d2be0,0x38375dac,0x38348f29,0xb79d7c77,0x373d75bc,0xb806cf58,0xb801fed9,0xb5fccd91,0x37af858f,0x386b0b8d,0xb7ced511,0xb94f201b, -0xb902cbaf,0xb842dc64,0x3a18fd2f,0x3a3354e6,0x396a15d1,0x3a411505,0x3a28772f,0x3ad30ec6,0x3b516292,0x3b58e33c,0x3b22d44f,0xba00902a,0x3a1236a6,0x3b0ee6f9,0x3b83e662,0x3b842de7,0x3b9c3b76,0x3b3bca91,0x3b06cb2f,0xba1b6d92,0x3b8feacd,0x3adbaab7,0xba2ce3d0,0xbb6f43ba,0xb8c5c667, -0x388eb570,0xb878eca0,0x38285508,0xb6755cb6,0x372c7027,0x37ee0d00,0x36145d00,0x37ea8dad,0xb84af3fb,0x3920af79,0xb97050f7,0x3a8943db,0x3aa10fcd,0x3ac47a19,0x3a908502,0xb8fad5ad,0xb9cb2b13,0xb6c2910f,0x3ab12b1b,0x3ba700d9,0x3b90d73a,0x3b2b3bd2,0xbb742060,0x3aac928f,0x3b8e0321, -0x3bed981d,0x3b8a7ff3,0x3b403af3,0xba46eae0,0xbafeb3d1,0xbbcc5fb7,0xbb7201c1,0xbb753e70,0xbbc3a20a,0xbbc49051,0xba4559be,0xb7692351,0x38201fe8,0x36c0abbd,0x37ea8114,0x33f0c6a5,0x3763e67e,0xb775634e,0x37e8288d,0xb640c5df,0xb994f9f5,0xb8ae65b3,0x3a86d7ea,0x3ab2d6c0,0x3b0a3cd2, -0x3ad8afef,0x3aabec28,0x39ece331,0xba4301bc,0xbb0d301a,0xbb2ede70,0xbb372651,0xbacaa148,0xbaa8b68e,0x3b64074f,0x3b8f5c63,0x3b82aa96,0xbb55925d,0xbbf9cc20,0xbbb50380,0xbbcf4d89,0x3b86ae07,0x3bfadb6d,0x3c078b4d,0x3c2250d8,0x3b0af482,0x3ac93963,0xb98728b8,0x389b029d,0xb8ddca15, -0xb68a94e8,0xb8078ed0,0xb70ebece,0x36bc4394,0x38525d11,0xb8537f9f,0x3a132fea,0x3ab079aa,0x3b2e298d,0x3b398324,0x3b145c96,0x3b150bc9,0x3ab9603e,0x3ae353e1,0x3ab2b1b3,0x3a8e22be,0x3ab067dc,0xb9f6fa86,0xbac289ae,0xbb034801,0xbb4b4dc7,0xbb1dd687,0xbae6555e,0xb9affd92,0x3a2d3f3f, -0x3a809c25,0xb93aecac,0x3abc3e9d,0x3a91e822,0xb9d31132,0xb9abc730,0xba536fde,0xba0c9c3a,0xb98d1bc7,0xb89694db,0x393d156f,0x37ad1417,0x39065b6e,0x382fe9ab,0x385188c5,0xb89c3a4a,0x360a8820,0x3917e09e,0x3a0a2fb9,0x39a0ab0b,0xb9d0bac1,0xb892e12c,0xb8acf21d,0xb9728737,0xb9f42833, -0xba2297ea,0xba4b9571,0xbaa7af3e,0xba9612fb,0xba595ad3,0xba31f450,0xb93e12bc,0x382705b4,0xb88cc078,0xb9bad95d,0xba4e824a,0x39a43ed2,0x3a0d93f8,0xb7b1aa58,0xbb002177,0xbaa3febb,0xbaa7e163,0xbaba2702,0xba7a0562,0xba93e184,0xba459b9b,0xba0efa71,0xb9882ae6,0xb91ff718,0xb947eebf, -0xb924621a,0xb71c9a7b,0x399f1b17,0x3a046d1a,0x3a197253,0x39b362e5,0x39874572,0xba0bb057,0x39c3a11a,0x39abfc90,0x3a30188f,0x3a6ec17e,0x3aa24a5c,0x3ad4d586,0x3aca54bd,0x3aaba877,0x3a37dc7e,0x39b94415,0xb8bd0f48,0xb9b7df21,0xb952b9d4,0xb8b17302,0xb9d3c610,0xba25a5a2,0xbabeec6a, -0xbab5ca18,0xbb0ef46d,0xbac7020e,0xbadf5941,0xbaad11ca,0xba51bce3,0xb9980370,0xb8448d11,0x39818079,0x39c0f322,0x3a54ac17,0x3a7e6106,0x3a9f5feb,0x3a79f087,0x3aa27a07,0x3aa84abf,0x3a8f0ad9,0x39aab131,0x3a713cc4,0x3ab6995e,0x3a9c6bd7,0x3aba8459,0x3ad162c7,0x3af9a367,0x3b0bff97, -0x3aeef231,0x3ade1dd6,0x3ad716ac,0x3aabd8a6,0x3a871669,0x3a1a7f29,0xb6b48832,0xba55fadd,0xbaafa3e6,0xbab911ff,0x3ac664e4,0x3aaa634c,0x3a43c6bc,0x3adc89d0,0x3adf7c3e,0x3ac73c84,0x3ad84e28,0x3a9cd929,0x3ad8c93a,0x3abb0b70,0x3ac322af,0x3ad4087d,0x3b014878,0x3b0a17ee,0x3b01a939, -0x3ad9f2f7,0x3a9fa811,0x3add91dd,0x3a4c9f55,0x3ad31e29,0x3aa92e72,0x3ac1f0da,0x3ab4ad61,0x3ab1a32f,0x3a9ca676,0x3a828340,0x3abdd360,0x3abc5516,0x3ac7bcd1,0x3ade0a4c,0x3add2b5f,0x3afea66d,0x3afb3855,0x3b0b168e,0x3b05f600,0x3aeda908,0x3a71b5b7,0x3a7f90cc,0x39d9d15e,0xb967efa7, -0xb9a44acb,0x3a114c0c,0x39154aa9,0xb923eea0,0xb91783a6,0x37a887cb,0x391ec18b,0x3907d8d7,0x37e2736a,0x38441c39,0x3a12b934,0x3aa76458,0x39323d06,0x39fd5ee0,0x3a924bc4,0x3ad5c469,0x3acb43cb,0x3ad038d0,0x3ad1c803,0x3ad806bf,0x3adba542,0x3ad745b8,0x3ad8f193,0x3acd2562,0x3ad0380f, -0x3acdcd54,0x3ac1a190,0x3abe08be,0x3aa385ad,0x3a9132d7,0x3a7b6974,0x3a68bf13,0x3b0f1d4e,0xb9ff85b9,0xb9bfb1cf,0xba502c12,0x39d1f608,0x3a8f9286,0x3a183583,0x392e83ea,0x3a5f5721,0x3a5760b4,0x3a6bc375,0x3a4bc6d4,0x39e6dce9,0x3a00a180,0x3a2b29ff,0x3a343968,0x3a4993d5,0x398319e4, -0x3a3fe5df,0x3a7aa8ed,0x39cba343,0xba594aca,0xb9ecd50b,0xb9eb18e6,0xb9da3a46,0xba24e4f4,0xba321de4,0xba238a56,0xba1848f6,0xb9f47959,0xb982f653,0xb9de957e,0xba01d42c,0xba066d62,0xb9b20c62,0xb9bbfd98,0xb9fd8ae0,0xb9cfb9b4,0xb9ebcde5,0xb8a49f29,0x3ac4317f,0xb98512ac,0x3937e743, -0x38e229b5,0x39a51fa2,0xb972fb9d,0xb8db5744,0x39c230f7,0x3705cf64,0xb7b40ec2,0xba022b88,0x39096676,0xb82a55b7,0xba1e60cc,0x3a12904c,0xb8a08f3c,0x3a4de990,0xb96a3b5b,0xb9fd199e,0xb964f97e,0xb8f0d658,0xba175b8c,0xba2d6357,0xba0ea7ef,0xb9f509a1,0xb9c0eec1,0xb8887a19,0xba48460b, -0xba3f0c9a,0xb9ad1095,0x3a01444e,0x3a194606,0xb8e8d84e,0xb8cb004c,0xb9ca0c21,0x395a2bd5,0x3a70259f,0xb98f1377,0xb90d7485,0x3930dbeb,0x3a098cc5,0xba6b0ebc,0x38028a92,0xba48dfb6,0xba440fd3,0xbac8d97c,0xba915374,0xb800d9e8,0xba6eb5c3,0xba97a677,0x39e35608,0xb9031caf,0x399aa438, -0xb9b0d14f,0xba03dbe3,0xb84a20a0,0xb7a591a2,0xba860fda,0xbabab6a4,0xba8c4172,0xba476ff3,0xb9bc38bb,0x3a47ae5a,0xba124d9f,0xba184fe0,0xb8ec51bb,0x3a77dc74,0x3a565e87,0xb988760d,0x391628f5,0xb9f2b153,0x3a2c058f,0x3aa14b04,0xb94d2ddc,0xba658449,0x38c44cf8,0xb8129a10,0xba73fb6e, -0xb991445f,0xb8df17eb,0xb9cdcb42,0xb983826d,0xb9f50c2a,0xba0e6ae3,0xbaa7a1e5,0xbb0501dc,0xb782f11c,0xba33faa9,0x39a1c51f,0x3985ed2e,0xb9f39488,0x39d0f753,0x3a6cc1e7,0xba80e683,0xba9d1326,0xba12ce26,0x370dfee7,0x38486a5a,0x3a6d1ecc,0xba88e9ec,0xba171ff0,0x39fb0dbf,0x3b3496a2, -0x3b358e22,0x39a596f7,0x3a3e6d73,0xb98c6b9d,0x38f00edd,0x3a5805a5,0xb9c9f8e1,0xba93e735,0x39945ed8,0xb88db7f8,0xb821e277,0x39203b1f,0x38b6a676,0x392d87d6,0x3930a872,0x38ba2402,0x384a26ff,0xb92fab50,0xba8606d0,0xb8d5e44f,0xbab26a9c,0x39f330fc,0xb9759081,0xb8ee1158,0x3a299b50, -0x3a2f7c05,0xbad16515,0xbb24e949,0xbb153062,0xbae6179b,0x38392f97,0x3af6fac4,0xb9fea602,0xb9faf28c,0x3a2facc7,0x3b30a402,0x3af0f41a,0xba13ed72,0x3929a99f,0x3bb749ca,0x3b374b64,0x3b9dd471,0x3b61d67f,0x3b170ddd,0x3aa840ef,0x397d0e03,0xb6f69e4f,0x36174086,0xb8d02bd3,0xb80cbd6c, -0xb8fe6c8e,0x378225ec,0xb90342df,0x39984958,0x3a957b38,0x396d9aad,0xbae589c8,0xbb214888,0xbb3d7bfc,0xbba6741c,0xbb8ae0ee,0xbb2885aa,0x3ae8b043,0x3b8afa28,0x3c0ba94b,0x3b8e9116,0x3801ad08,0xbb684360,0xbb205b57,0xbac5ee1d,0x3ae6a0a8,0x3992797c,0x3b3277e1,0x3bebe199,0x3beafd35, -0xbaa36efd,0x3a8d8b7a,0x3acaeaae,0xb9fcdd69,0x3ad5c0f0,0x38f2aac7,0xb8d1976c,0x381876ec,0xb6ddcc60,0x38554916,0x37f28c9e,0x3801b042,0x383eb5d3,0xb812ca40,0xb84d359f,0xb9d8c6f9,0x39d72fc5,0xba2e3594,0xba3d0fe3,0xba4105d2,0x39103ac3,0x3ac11ced,0x3aa23b5e,0xba81f5bf,0xbb37816a, -0xbbaef1fc,0xbb916dda,0xba8a72a6,0x3bb15abd,0x3afc607c,0x39455ae1,0xba3407b2,0xbbb1c06c,0xbbd37874,0xbb20139c,0xbb011a5b,0x3af394d3,0x3ba47b0a,0x3af2cffd,0xb8eedd8d,0xba696330,0xb869c3d6,0x388fd8f3,0x379acd8c,0x353887f8,0xb7aab3c9,0xb73baba5,0xb82600d7,0xb70095f8,0xb7ef686a, -0x3905c7e2,0x38fee53f,0x39684c1f,0x3959e1ab,0x3a21a64a,0xb938f918,0xb99cad9d,0xb926282a,0x3821c5ef,0xba05c4cc,0xb86081b1,0x3afa27ff,0x3a398964,0x38aca79e,0xbb3bd966,0xbae3c2d1,0x384b6d8c,0x3b3efeb6,0x3b7f915a,0x3b9a0263,0x3a800506,0x3ad388e6,0xba6bec5c,0x3b09b1f5,0x3b2825d5, -0xb98fcf08,0xbb3f1c38,0x397ac6d8,0x37aab3e6,0xb8281bbb,0xb53d99be,0xb739b40a,0xb57aa815,0x364c7bc4,0x36b7d6c8,0xb6cb6c21,0xb88947ad,0x39128a1c,0x381b5763,0x3a2657d7,0x3aea38e5,0x3af52e6e,0xb960a51e,0xba35ece3,0xba8da51f,0xba943e3d,0xb7f56c74,0x3b81bb84,0x3b06c61c,0x3a3b792b, -0xbbb255cd,0x39aa46d9,0x3b359ec5,0x3b8d9782,0x3b2c1198,0x3af55e58,0xbadc3699,0xbb0b23f3,0xbbe14c06,0xbbe27d0f,0xbb6be02f,0xbb99cf83,0xbb953344,0xba2ca972,0x38aaf66b,0x386385b9,0x375758ad,0x371c87e9,0x37a22821,0xb707434b,0x34b4b099,0xb676e17c,0x38322e47,0xb898e646,0xb925e3a2, -0x3a234322,0x3abf7ba4,0x3a70adfa,0x39d96aaf,0x362aa48a,0xba7bc31d,0xbac09e91,0xbb28d3e2,0xbb4a470c,0xbb29d1b2,0xba68bcd3,0x393b6551,0x3ba0836d,0x3ba3b8f9,0x3a9d3b12,0xbb90751f,0xbc03e93f,0xbbbfc0e0,0xbbb3615e,0x3b43e40e,0x3c21c8bb,0x3c2e86bf,0x3c165570,0x3b163644,0x3ace9ec4, -0xb8ba7c8a,0x37878606,0xb81b4b79,0xb7f4d320,0xb7a36aaf,0xb7cecfc5,0xb5db73b3,0x3766965f,0xb88166c6,0x39b08c67,0x3a742f19,0x3b3e4233,0x3b679e02,0x3b45f07c,0x3b0e315e,0x3aef8995,0x3abe1c9c,0x3a9e8887,0x3a6e79e9,0x3a9d1add,0xb9ffbb24,0xbacbc75b,0xbb0035e4,0xbb6584b6,0xbb43290d, -0xbb188f9a,0xba5aff8b,0xb7a4f756,0xb9f16674,0xba6c80ff,0x3aaa09fd,0x3acd26b9,0x3a9a0135,0x3a5c5c9a,0x38e65124,0x39411841,0xb7940bae,0x3960a42b,0x38cb4ee3,0x3936ece9,0xb6b1566a,0x38b2c63f,0xb71761d1,0x3774e776,0x3863563b,0x39b5402d,0x3a396df0,0x39d7a1e3,0x38de7dcf,0xb9bf52be, -0xba118362,0xba5bbeef,0xbaa04f38,0xba944c78,0xbaa5e27d,0xbaf05f51,0xbae5f115,0xbacfa634,0xbaafe9cb,0xba855f9b,0xba82c6d3,0xbad8ea4c,0xbae73f3e,0xbad9159e,0xb8ee71b6,0x39f99628,0xba72da0a,0xb9cf4e2a,0xb9550078,0xba1fb58e,0xba3825ba,0xba9f2ed4,0xba4c1b2a,0xba1e6d2f,0xb97c7b21, -0xb9412884,0xb885c0a9,0xb920e25b,0x378b4f4b,0xb9375059,0x393a0751,0x39d008c1,0x3a776209,0x3a3bc00c,0x39dc3094,0x39879e54,0xb971033b,0xb74b7405,0x38e87b76,0x39cfa6fd,0x3a240fce,0x3a6c6d9c,0x3a3b8548,0x39cde3a9,0xb98c9d39,0xba448ae8,0xbaa18486,0xbadc1715,0xba7bd86d,0xba116411, -0xba72e37b,0xba341148,0xbb0cd8de,0xbb118777,0xbac0e882,0xbac8c60e,0xba8fce4d,0xba2f539a,0xb9fa48b1,0xba0830e9,0xb94489a1,0xb8caba17,0x3a0fef57,0x3951bcd4,0x3a360eaa,0x3a56e390,0x3a9d6144,0x3a89dc8f,0x3a991b05,0x3a887a95,0x3a9d308a,0x3a459da0,0x3a451eb8,0x3a7c0a8f,0x3a7ca964, -0x3aa5af0d,0x3ac88c74,0x3af2dc34,0x3aa6fe86,0x3a89ae99,0x3a74d1ec,0x3a18ca18,0x39927bcc,0xb99743e7,0xba6542e1,0xbac6b87b,0xbaf36715,0xbaeed2d3,0x3a834e2b,0x3a381c7c,0x3ae0f077,0x3a9ade8e,0x3ac41a6e,0x3ab79cc8,0x3aa01b57,0x3ac8a91e,0x3abafb76,0x3b001368,0x3b0c1458,0x3b20e36f, -0x3b198d5b,0x3b301401,0x3b23823c,0x3b162f7e,0x3b1617ed,0x3aeb027a,0x3aeffbef,0x3aa5b6b0,0x3aa76175,0x3ab1679f,0x3aacb45c,0x3aaaebb6,0x3a959355,0x3a7ee80e,0x3a987ff2,0x3a7f5519,0x3a6410dc,0x3a5e5bb4,0x3a3ffc06,0x3a72348b,0x3a86da5a,0x3ab2214d,0x3aa3063d,0x3a84b437,0x39ebb09a, -0x399a393b,0x3a68f63c,0x3aa2216f,0x3a8cecc0,0x3a7bb112,0x3ab6531a,0x3abf8bc8,0x3ad30f42,0x3acc8122,0x3ac6b600,0x3ad3b575,0x3ae6c6e1,0x3af174b9,0x3ae4a4e9,0x3ab69293,0x3ac9ccf3,0x3ae46812,0x3abed52a,0x3a8791cd,0x3a9352b3,0x3a9763ac,0x3a99cbee,0x3a9fba50,0x3aa5a309,0x3aa54e50, -0x3aa398d2,0x3a97072f,0x3a98b074,0x3a95f834,0x3a876cfa,0x3a76a227,0x3a3fb3da,0x3a226dcd,0x3a0176c4,0x39e928a4,0x3afed5a5,0xba64c7a8,0xb9cc7d89,0xb90b4faf,0xba99b0f6,0xbaa5d73d,0xb9e8c9a2,0xba879d0e,0xba981a9c,0xba48f169,0xba22191b,0xba10533e,0xba113ce4,0xba1a53f6,0xba0c22ba, -0xb9aaf90b,0xbab5392e,0xbaabc1ea,0xb8ed2743,0xba9648d0,0xba9a12c6,0xb9b22d30,0xb9f69e90,0xba03757f,0xb9e86288,0xba29f71a,0xba32624e,0xba1ee5c5,0xba0fe497,0xb9ec933a,0xb992950c,0xb9f7b0a4,0xba0f0962,0xba116690,0xba01e7f9,0xba08695b,0xba1253c6,0xb9e395f0,0xb940d3c9,0xba09d944, -0xbaaa39c5,0xba4ed628,0xba95917a,0xba554b23,0xba7f691f,0xba7890c5,0xb9c3c06d,0xba7dbe38,0xba95d8a0,0xbac61953,0xbaa940e8,0xba628e44,0xbacbbf61,0xbad0030d,0xba4d92b3,0xba779563,0xba9f8664,0xba82bd8c,0xb9ed843b,0xba0e1682,0xb9cd8898,0xba728edf,0xba843622,0xba72741a,0xba2186f7, -0xba076279,0xb9a78ac6,0xba805165,0xba7bb744,0xba0f328d,0xb966434c,0xb902a351,0xb9ee09b8,0xb9d1d820,0x38f8b5cb,0xb92bfcf3,0xba92cfd8,0xba57fd77,0xbab9c904,0xba3faaee,0xba3a4904,0xba59d1c9,0xba4f05a4,0xba2be020,0xbae3cdd7,0xbacd294b,0xbad2226a,0xba4d8376,0xbade647d,0xbae643c5, -0xb9e5678c,0xba89ad96,0xba9cc156,0xba6ee87d,0xb9bfbf12,0xba3b2457,0xb9e9baca,0xbad113fd,0xbae4fed0,0xbab8ab87,0xba631df0,0xb9ef5022,0x3997042c,0xba7a8ec2,0xba952d5a,0xba1daf24,0xb9bd28ac,0xb9c76025,0xba374778,0xb95fae7d,0x3a071f86,0x3981c145,0xbaad1ecf,0xbab1d27f,0xbab61856, -0xb9a64961,0xb96eeaab,0xba54f304,0xb932fed5,0xb8a5e045,0xb924077d,0x3785bb22,0xba30b75d,0xb95c58d6,0xbadb0c97,0xbb0b88a6,0xb9c73e4f,0xbaa70f48,0xbaa08f13,0xba840bb7,0xb9b07589,0xb9badd54,0x3897350c,0xbb09addc,0xbb1b3a41,0xbad60fd3,0xb9f0d22b,0xb9a9948a,0x392453a6,0xbace887f, -0xbabdbc63,0xb8c4f893,0x3a0ca4c9,0x3a6221f7,0xb92902e4,0x386d3728,0x3a0047e6,0x39521a10,0xba84e5d7,0xba524e0e,0xbaaf8696,0xb90519b5,0xb88d8f41,0x38dd1b15,0x38de0c87,0x3824a695,0x38c615ec,0x38bdc785,0x3935af3e,0x3889e77c,0x390c4437,0xba748a24,0xb9e6e7f6,0xba151a9a,0xbabfcbef, -0xba623b22,0xb914e93b,0xba23bf3e,0xba02ab9a,0xbb3b6774,0xbb62e25a,0xbb356dc3,0xbaddeb09,0x377ef84c,0x3aa81ec5,0xbaa2b6e7,0xbadb7a4e,0xb9ba37fb,0xb939cab4,0xba1d72e8,0xba80dd00,0xb99be0f6,0x3ba87e8b,0x3b1aab78,0x3aaa45ac,0x3a9456c7,0x3a8e7842,0x3a17a734,0xb90bb9b0,0xb8516914, -0xb8ab6c95,0xb806d0a3,0xb7a3a1e6,0xb8a77801,0xb802f258,0xb89aed28,0xb80837d4,0x3a561b45,0xb7eb0523,0xba96d4c3,0xbb5e3c16,0xbb5ce0be,0xbb846a94,0xbb3e8fdf,0x39c38688,0x3b66e0f5,0x3bc3274a,0x3c29a101,0x3bcf57d7,0x3b0be7ef,0xbac2efd9,0xba74ca60,0xba1dc836,0x3a90a54e,0x387a0a15, -0x3b2db676,0x3be1fdfe,0x3be32a3d,0x3aaf64e4,0x3a13f036,0xbad5b426,0x386092d9,0x3978f4c3,0xb802afdb,0xb8e24626,0x3816aab9,0x36f1896f,0x37fa91ee,0x35a83f08,0x38224443,0x380011c3,0x37cd6b46,0xb7a5f28a,0xb9b77578,0xb77b6b7a,0xba094681,0xbab18888,0xbaf2fd9d,0xb938622b,0x37895536, -0x38615fd2,0xbada0286,0xbb5dac70,0xbbc26ccd,0xbb951d35,0xba3fce33,0x3bba6b4b,0x3ad9e57e,0xba40aa71,0xbafae3cf,0xbbd9f2ff,0xbbe07a42,0xbace09b8,0xbaaa5dfb,0x3b543920,0x3baf7d5a,0x3b114fde,0xb886af10,0xbaa6f018,0x38d560b9,0xb8a97c07,0x37c7fb22,0xb7fc07cb,0x36fb34b7,0xb707e9ea, -0xb77fcd5e,0xb7244b65,0xb6952ac7,0xb7d57a2c,0x36e281f0,0xb890f181,0xb8cf8686,0xb8d38bcd,0xb844d538,0x393cc302,0xb9557750,0x383acdf0,0xb9af13cc,0x39c93eb9,0x3af5d5cd,0x3a67b775,0x39907f51,0xbb07a9b4,0xb9b66b5e,0x3a40db3d,0x3a7b6533,0x3ac8e343,0x3b18cbb0,0xba5f4311,0x3aed453c, -0xba571135,0x3a672d38,0x3b165e14,0x394923d0,0xbb20eec5,0x39ac0c08,0xb8c1d4c1,0xb72d95a0,0xb710d024,0x360ec698,0xb6cbd1c0,0x3750e85e,0xb753e9f1,0x37e623d2,0xb84f7437,0x3792661f,0xb98a112d,0x39fcd106,0x3a659a92,0x3a81d42a,0x39fac54e,0xba1d9cea,0xba752417,0xba70bae0,0xb5a5c8b6, -0x3b69f213,0x3a722456,0xb9bce61e,0xbbb56b67,0x3a639615,0x3b59be58,0x3b1fdc50,0x399599a3,0xba8fc342,0xbbb93f2b,0xbb36d73d,0xbc093993,0xbc2efcce,0xbb8b5f74,0xbb4d303c,0xbb792f44,0xb991d754,0xb4e0a1ac,0x383d5a88,0x372cc5ef,0x37b37839,0xb71d6542,0x36f5f8b8,0xb5b79a18,0x36bf3deb, -0xb76ec4e1,0xb8513db0,0xb9e4ef90,0x396c71ab,0x3a33f26f,0x3a72de95,0x393da68f,0xba062e60,0xbaba5426,0xbb190e78,0xbb6309d5,0xbb74f9cb,0xbb5bdbf1,0xbaced664,0xba5c0de7,0x3b8b3422,0x3b6ce16f,0xb9a964d4,0xbbe49eee,0xbc2c136e,0xbc057df2,0xbbfc1e52,0x39c130bd,0x3bf99c90,0x3c0baf05, -0x3bec4b5e,0x3ad9e06d,0x3a911525,0xb9c92ded,0xb68a4790,0xb9149b09,0xb7d38625,0xb7cf889c,0xb721bd2c,0xb80e5ca7,0x37682df4,0xb8a4b9bc,0x38e3817f,0x3a4669a5,0x3b08ce83,0x3b2dae44,0x3b262adb,0x3b19f3a0,0x3af3c28d,0x3adc367f,0x3a8fc8f3,0x3a02c8c1,0x3938ea10,0xbae0a286,0xbb47411b, -0xbb84e6f1,0xbb97f6a2,0xbb7434d7,0xbb489e35,0xbb3b3076,0xbb405718,0xbb4e6b7b,0xbb8c16e9,0x39f6847f,0x39e16640,0x3917f5ed,0x3a0741ac,0xb96dda64,0x38ee2464,0x36c090be,0x39009acf,0x38abd056,0x384aaa09,0x372bde1e,0x37a68031,0x37d1872c,0x37165080,0xb87ed192,0x3876de36,0x39cfdc37, -0x3a03b571,0x391f7691,0x38ab4b27,0xb94f8499,0xba3b8822,0xba9380a6,0xbaea98b3,0xbb0e0098,0xbb377801,0xbb16a101,0xbae5f3f1,0xba9ad966,0xba84f232,0xba8eabef,0xbadfc7a3,0xbab0378f,0xbaaeff43,0xb8e32480,0xb8a7408c,0xb9979916,0xba856f88,0xba87510b,0xbaa14fac,0xbace3cd1,0xba981580, -0xba87a6dc,0xba0cf9ea,0xb9a24d29,0xb90b7add,0xb8390b41,0xb899aaa6,0xb8d47719,0xb90b2582,0xb8248858,0x395e30f1,0x39e09eff,0x39b1bb60,0x39a4af9e,0xb8f9825d,0x39959c39,0x3916a163,0x39a0e30d,0x39a68298,0x39eee0df,0x3a3235dc,0x39dbf276,0x3825c152,0xba2b1f23,0xba832988,0xbaaaa3b4, -0xbadea211,0xba5268f0,0xb9a1285b,0xb9f9f688,0xba0e8027,0xbb064cf2,0xbb18905f,0xbb262957,0xbb03502a,0xbaf4cacd,0xbabc2bf9,0xba893c43,0xba44e32e,0xba21f732,0xb9d6b3d1,0xb9a47ea6,0xb95b2b8a,0x397e3907,0x398f0f43,0x3a2485ba,0x3a33fb8b,0x3a6765bb,0x3a61901d,0x39d4b78f,0x3a4a30ac, -0x3aa76170,0x3a942a45,0x3aad6b72,0x3ac8cef3,0x3af01642,0x3b083576,0x3ab5a580,0x3a8437f4,0x3a2018fa,0x398b54af,0xb8b42346,0xba1b5e2c,0xba8e346b,0xbae41a8a,0xbaf500e8,0xbb01aeb0,0x3a1d674f,0x39d05e9a,0x3a09ec8c,0x3a4abd8c,0x3a429eb0,0x3a2a2ae1,0x3a238267,0x3a6231db,0x3a81492f, -0x3a8d7530,0x3aa57790,0x3abc096c,0x3acda48e,0x3aede5a5,0x3aca8364,0x3ac0829d,0x3ac850bf,0x3ad549b6,0x3ab0478f,0x3b016118,0x3aec30b8,0x3af8b82d,0x3af0fa7d,0x3aec8a02,0x3ad3c99b,0x3ab949e0,0x3ae5e9b1,0x3acfe53e,0x3abf6db9,0x3ab0dc7e,0x3a87e049,0x3a7a5180,0x3a837237,0x3aa5e956, -0x3a8b3022,0x3a430e1e,0x3a226d33,0x3a028cdf,0x38f9a82b,0x390fe3a8,0x3a235570,0x39bdbed7,0x39b29cc6,0x3a3be990,0x3a5992f5,0x3a720757,0x3a84e089,0x3a8c8ca2,0x3a9634f4,0x3a9e46c1,0x3a2d80de,0x3a71791b,0x3a948f51,0x3a3e142b,0x3a707b2d,0x3ac2a776,0x3ab80a0e,0x3abfebd0,0x3ac4234f, -0x3acd9936,0x3ad5054e,0x3ad2f3f0,0x3ac9e0ca,0x3ab16a16,0x3aadb372,0x3aa56bc8,0x3a98cf8d,0x3a8d82bf,0x3a66ef2d,0x3a4721e0,0x3a258b56,0x3a1a479a,0x3b072bc1,0x394c409c,0x3931adcb,0x393fb6a7,0x3a3f1d0b,0x39954721,0xba56603f,0x3a0c195e,0x399c66f3,0xba1d78e7,0xba281cfe,0xba4ac917, -0xba63dd8c,0xba7ec8f0,0xba928f03,0xba4968f8,0x390bd994,0x39e650a9,0xba52a493,0x39042f7f,0x39f3d5cc,0x370d49b8,0x38f4ce56,0x39409f1d,0x3948d5ba,0xb7ac7417,0xb886f764,0x376e0183,0x38cbde8b,0x395f1b4c,0x39ac3550,0x397f871c,0x39492944,0x397bdf60,0x39af4ab2,0x399005af,0x37ef477c, -0x39512810,0x3998b264,0x3a63c6bc,0x36f75326,0xb8fd8053,0xb9e4e435,0x382d9e09,0x39602981,0xb972255a,0x38cdbb96,0x3903e52f,0xb990aad0,0xb9bec787,0xb9e06103,0xb82f889f,0xba96e10d,0xba08459b,0x38ef1676,0xb91df08f,0x38249d15,0x39bdad42,0x3979b1d9,0x39fdf2d8,0x3a131a79,0x3849d8b3, -0x37e3b837,0x39a12575,0x3a18c896,0x3a2b591b,0x3a1f5de1,0x39b24192,0x39ffb697,0x3a830548,0x3ac17378,0x3aad87ec,0x3969ba49,0x39fe3f65,0x39d4178b,0x3a675ffa,0x3a0c1ce9,0x39905381,0xb9a9165d,0x37fbbe8b,0x385a019c,0xb8dffc09,0xb8fc8d8b,0xb8d2c4ca,0xba109bf2,0xba37cf01,0xbaa92ca9, -0x394b1097,0xba849bb0,0xba7d3ba7,0x3a009bc0,0xb9d719ad,0xb5e301cd,0xb94b4aa7,0x39f5ee8b,0x3a1b6420,0x3a47209e,0xb9e7cbbd,0xba3bf3f4,0xb8f3ca89,0x3a043688,0x3a6fd47c,0x3ab09bf1,0x3a2f3450,0x3a582093,0x3ac93734,0x3b03d58d,0x3aca9ba6,0xb907f3e7,0x3a4087e7,0x3a12e4dc,0x3ab53ecb, -0x3a0c8440,0xb98e5a95,0xba3e02f0,0xb8dfd1ab,0xb901023f,0xb810b7b9,0xb8744377,0x373791b0,0xb6fc043a,0x39124833,0xb926366a,0x38931f89,0xba8b2fb5,0xbade1af9,0x38548e0d,0xba3c7937,0xb956e12b,0xb90a44aa,0x3a0eccdf,0x3a803fdf,0x3ad6786d,0xb9ffa83d,0xb9f20fc1,0x3a2d957d,0x3ad3f5c5, -0x3ad62670,0x3ab8f4f8,0x3a4d1038,0x3ac8a38f,0x3b436d35,0x3b85f4ee,0x3b5eb512,0x37c0707c,0x3a894c58,0x3a061dad,0x3a54b9c9,0x3a0d5048,0xb85ddf0f,0xba1a89b4,0x391ac77e,0x38362374,0x37da3d18,0x384332d9,0x382d3ec2,0x37c11bb6,0xb61e5691,0x388068f2,0x38e3e35e,0x39b315a8,0xb9fd9853, -0xb8ba63bf,0xba5577e3,0xb9efc5c1,0xb98d2f85,0x3a3de986,0x3aa61e08,0x3ab95b9b,0xbaa015da,0xbaef31f6,0xba8dd4d8,0x398d10fa,0x3afb3080,0x3b1796a0,0x3a9eb033,0x3ad05223,0x3b3cfbec,0x3b7ee6fa,0x3b146402,0xba4a0b9e,0x3a2a4c60,0x3bd40a75,0x3b8b86a0,0x3b6e1489,0x3ae9fa79,0x3a970631, -0x3995d0d3,0x38225304,0x37c8353a,0x370fa961,0xb714413a,0xb721e092,0xb616a236,0xb7507f68,0xb8959ae9,0xb86f0445,0x39d57cf3,0x3a5119d1,0xba105df9,0xbad7c264,0xbac9cc9a,0xbb291a0c,0xbb012a9e,0x381a0b06,0x3b8bacbd,0x3bca9d0c,0x3c1319d0,0x3bb1a819,0x3ad145c3,0xba40abc1,0x38908daf, -0x3ac2e5eb,0x3ba53803,0x3b6f6079,0x3bb8336e,0x3c0fccc0,0x3c0b2a0c,0x3a81ce87,0x3ac64cfb,0x3a2ad925,0x3a43efae,0x3a380b08,0x393e2104,0xb8936e8c,0x38a6a652,0xb7914aac,0x37e99969,0x36c5286d,0x36784261,0x374b3c84,0x37fb2b70,0x38b70aa2,0xb91177ac,0x3962b2c0,0xb96e1abc,0xba78e27e, -0xba860158,0x3a8f6874,0x3b0a2f8a,0x3b2d578d,0xb9bb64b3,0xbb218166,0xbbb04b64,0xbb5fd3da,0x38ba5df1,0x3bc188d4,0x3b06d505,0xb8cf879c,0xbae14536,0xbba0d745,0xbba472f8,0xba207f1e,0xb882266b,0x3b80ec98,0x3be00899,0x3b67ba73,0x3a086572,0xba1e6401,0x39141595,0xb86658b4,0x38a18e31, -0xb77deaab,0x3780785f,0xb6ffbcd4,0xb57d7013,0x3738eee1,0xb8378c99,0x38b52478,0x384e6d9e,0x3949b73b,0x39b46dc5,0x3a64e40a,0x3a31cf96,0x3a1be90b,0x3a40d7a3,0x3a7c4e78,0x3aaa4a16,0x3b0999a0,0x3b7c23c5,0x3af77eb7,0x3a5cc6b8,0xbb10530c,0x39cf94d9,0x3b4a7e01,0x3ba5d14e,0x3bd3fdeb, -0x3bdd5ff1,0x3a508ba1,0x3b46abf2,0x3998d537,0xb82c863b,0x3b230eac,0x3a36aaa4,0xbae57191,0x3a15ea7f,0xb903a41a,0x380a9bd1,0xb7b1debb,0x371f0c95,0xb6ed7da9,0x36906cad,0xb6c0ab02,0x376469cf,0xb7a7d297,0x389168f2,0x38d27168,0x39acce78,0x3aa4c8ba,0x3aedee70,0x39a5f8c7,0x37ee8a1b, -0xb9dc7761,0x3a48be56,0x3b113f70,0x3bca58f1,0x3b43f757,0x3ac43441,0xbb795280,0x3b4b9202,0x3bcaf2db,0x3bbcb186,0x3bbb5cf5,0x3b9f599e,0xb9934d18,0xb91718b1,0xbbb4066b,0xbc4f6f7a,0xbb57c79d,0xbb014af8,0xbb154bcf,0x390cdd12,0xb5d021dd,0x38f7034f,0xb733af49,0x378422c7,0x3741332f, -0x374d3a12,0x37b45f43,0x378f5730,0x3800df92,0x388949dd,0xb9a4641e,0x38dfca08,0x3a2d3db3,0x39ace1b2,0x39aeea89,0x3983b2bd,0xb9684cce,0xba90092e,0xbb229a95,0xbb469482,0xbb0c611b,0x391e40d7,0x3ae5089d,0x3bc3b613,0x3b9fad95,0xbaaf56e0,0xbb4d7cfe,0xbb923b41,0xba621550,0xbaee62a6, -0x3b8f77c4,0x3c216d91,0x3bf7a720,0x3bd80c04,0x3ac8d456,0x3a3fe1d0,0xb9857fb0,0x388ba8a0,0xb8368bb9,0x37ddf54a,0xb78c655a,0xb6bf9fbd,0xb81c3e42,0x3657d563,0xb79404a4,0x374380a9,0x3a0ffc74,0x3b1329cc,0x3b581e0e,0x3b5132c6,0x3b293435,0x3b04e3d1,0x3ae16286,0x3ab8f015,0x3ab4cd68, -0x3b08261c,0x3a187b94,0xb9e3e437,0xba21730a,0xbaf78b48,0xba59121c,0x3a5eab25,0x3ab2c1a0,0x3a963f99,0x39a2aa9f,0xb965a236,0x3b3294dc,0x3b1a118b,0x3aab5849,0x3ab16107,0x3a2abb30,0x3a1164f4,0x39236f0c,0x394779be,0x388abed6,0x38b55140,0x37b4f4dc,0x38aa2011,0x387501a4,0x38b25aab, -0x37baf3ff,0x398a93a5,0x3a2ac951,0x3a4409b6,0x39dd24a6,0xb78b9cdf,0xb725c020,0xb9541ece,0xba08d62b,0xba54f854,0xba9a0cf0,0xbafb036e,0xbad08b11,0xbab61dee,0xbaa8e9a1,0xba80a8dc,0xba28c87c,0xb93f627d,0xb90e7d31,0x39b8b515,0x3af491bb,0x3b128107,0x3a60f2c5,0x3905e7c1,0x3a0dbbef, -0xb95b9cea,0xba2bfd0a,0xba28a4ee,0xba03159c,0xb954d253,0xb8405c39,0x35420572,0x368fee8b,0xb896edad,0xb8b532ae,0xb8e32b9b,0x38144790,0x3946d7c0,0x3a1fe6e2,0x3a407cef,0x3a4b9f6a,0x3a1c43a3,0x3a15bc02,0x3a0086b4,0x3a08fe13,0x3a2bce62,0x3a4b6a1d,0x3a6132b3,0x3a3d4854,0x39b53e9b, -0xb9c254c0,0xba0c8401,0xb9fcf11b,0xb990f22b,0x39c7d4ce,0x3a2a0676,0x39bb7aa1,0x39b0ab1f,0xbae31a47,0xbae59337,0xbafe6dad,0xbac5e820,0xbaaeb07e,0xba8e212f,0xba4c7b24,0xba1a63f7,0xba09697c,0xb9bb9d0d,0xb8ed8afa,0x3600654d,0x38d02ee9,0x39c21b28,0x3a059527,0x3a3ea69b,0x3a7d2158, -0x3a88090e,0x3a8988dc,0x3abaa3f9,0x3aa4fd24,0x3aabb47f,0x3aa4460f,0x3abd5430,0x3ad77a38,0x3af7f152,0x3ab9fa4f,0x3aaf7fc7,0x3ab2280e,0x3a95a44c,0x3a60973b,0x39cafe5a,0xb99fd16d,0xba69eff2,0xba8f3ef2,0xbaa6892c,0x3a41b953,0x39e39582,0x3a30f335,0x3a45ee82,0x3a83942a,0x3a5a5b28, -0x3a6d33f8,0x3a4acf71,0x3a88eed2,0x3aaf1bbe,0x3ac48e09,0x3ae56a07,0x3afd5fad,0x3b0b2f9d,0x3b170af4,0x3b13f4b1,0x3b0ccf64,0x3b13aeaa,0x3b059fb2,0x3aecdaab,0x3adbd91e,0x3af8a4c4,0x3af40730,0x3af81bda,0x3ae494b0,0x3acd1cf2,0x3ae99813,0x3ac99b9f,0x3ab80aa5,0x3abac49a,0x3ab06219, -0x3ad8ac50,0x3acef400,0x3ad7b94f,0x3aa93391,0x3a767419,0x3a6087e5,0x3a412db1,0x3a8e0460,0x3a79535e,0x3a106bd3,0x3aa6e2e4,0x3aaac148,0x3a6f9524,0x3a7dca5c,0x3a7e66ce,0x3a8174cf,0x3a8596da,0x3a86084f,0x3a8ba5c6,0x3add45aa,0x3aea4fcd,0x3a8a21f7,0x3adb7a7c,0x3af05f5a,0x3aca21fb, -0x3ad41293,0x3ad6d883,0x3ad71d7e,0x3adccb50,0x3ae1f2ba,0x3ae143c6,0x3ae2bb61,0x3ad8afe9,0x3adffe20,0x3ade87b4,0x3acb35d9,0x3abf96f8,0x3a9e88f9,0x3a8fc62a,0x3a802200,0x3a6d8c9b,0x3b2de182,0xbada4a1b,0xba828793,0xbaa06b27,0xbaaaeebf,0xb9df0b30,0x3a0cbe4b,0xbaa77693,0xba151ba2, -0x39fe3c9a,0x3a1b8737,0x3a2a5e58,0x3a07ee8a,0x39f1f9c4,0x3a2c3f33,0x3a300108,0xba3db9fb,0xbab1bf23,0x3a6c183b,0xb9bc80d4,0xba96123f,0xbaadd907,0xba9a7011,0xbaa7122c,0xbaa54e4a,0xbac590dd,0xbac61b5a,0xbaaf6de6,0xbaa1d21c,0xba95a3a3,0xba8d5b43,0xba9f43f8,0xbaa1883b,0xba9ec4d2, -0xba98513e,0xba97213d,0xba94c89d,0xba895ff8,0xba5f899e,0xbaab8278,0x38c30ac3,0xba7ae6ee,0xba16c830,0xba6fa226,0xba5ec50c,0xb9d7b6d1,0xba10d88b,0xba3a47a7,0xba4cfebe,0xbab1c52c,0xbab26af3,0xba00fbde,0xba16c5a9,0xbad3ecfb,0xba008f72,0xba87ca77,0xba37ceb8,0xbaea6ee4,0xbab9dd47, -0xbac4d52b,0xbad42513,0xbb0828c7,0xbb084af2,0xbafced35,0xbab8e328,0xbaba2b0f,0xbad9fb42,0xbb03764d,0xbaeaed4d,0xbaaa52f6,0xba89a0f4,0xba7bbead,0xba9b4f0c,0xba80d4e8,0xba2a3c9b,0xba68ad7c,0xba1b65f7,0xba99c3ad,0xba695685,0xba3a7bd3,0xb9b20098,0xba10b883,0xb9a71d81,0xba33df5a, -0xba444467,0xbacf85be,0xbaa72f1c,0xba23e4e1,0xbab8a0b3,0xbadf881b,0xb9fd6069,0xba69a765,0xba871cf1,0xbad1e467,0xbadf3750,0xbaf9b20f,0xbb0da7ea,0xbb55b054,0xbb575b69,0xbb237fc4,0xbad673ed,0xbaa5652a,0xbabd8fb2,0xbb0681ab,0xbb0804c8,0xbaa2993d,0xba9453ff,0xba836df7,0xba90210d, -0xba2944a5,0xb89a270c,0xb985746d,0xb9847d6e,0xba73b388,0xba825eac,0xb9a8ef8b,0xb8c192b3,0xb94b9f80,0xb799db9c,0x38b2984e,0x39177710,0x39a1868c,0x384e73a7,0x36315995,0xba6330fd,0xbae79e67,0xba00cbbb,0xbab21518,0xba981ece,0xbac73938,0xbaf08082,0xbadb550c,0xbb00bffe,0xbb8a632f, -0xbb8f1ae9,0xbb348ff2,0xbaaa1e70,0xbaac387c,0xbb1c3e9d,0xbb3bf3d0,0xbb20f4b6,0xba3b67d4,0xb9a933c3,0x3893e1df,0xba65416e,0xb922606d,0xb8efccf2,0xba2fe08c,0xb9ea907c,0xba24ba22,0xba682f5c,0xb8c35a5c,0x36b4b476,0x3830f962,0xb6b6dbce,0xb86a4047,0xb8cefc32,0xb8d193fd,0xb84255aa, -0x37529b3d,0x3991f4d1,0xb9dfe580,0xb98ceaba,0xba8d9d03,0xba60835c,0xbaf7ceb9,0xbaef438a,0xbb1c50a5,0xbb4f15ce,0xbbb31578,0xbbb9b98d,0xbb85b65a,0xbb127233,0xba66a426,0xbab186bd,0xbb378e62,0xbb2b3a63,0xba53e510,0xba613b84,0xba87d31c,0xba8c894c,0xb9ab3c24,0x3b68870f,0x3a90f2b1, -0x3aee46a0,0x3a992629,0x3a0eecd0,0x39441266,0xb9095d99,0xb7a713e7,0xb813777b,0x3740df58,0x381510de,0x37bc056f,0x3818ad64,0xb8874f7d,0xb88e110c,0x378a9b1c,0x3a411533,0xba466be1,0xbb1cfb40,0xbb53da65,0xbb903510,0xbb3abc74,0x39491949,0x3b9b0b05,0x3bc71f7b,0x3c0ddab3,0x3b80df0a, -0x388a2b75,0xbb27407b,0xbb0d1652,0xbaf3f9f6,0xb8ee2073,0xb987aa36,0x3b0639de,0x3bc016b3,0x3ba0dbb8,0x3a1aad7b,0x38c97b32,0x39b9ae56,0xb84cd69a,0x3a0947a2,0xb966580c,0x38499dc3,0xb79dca72,0xb5a24ed6,0xb791b392,0xb7b338fe,0xb7924977,0xb75af5c7,0x370e6f9a,0x37d792bb,0xb95d12be, -0xb8f78bb8,0xb9aa977f,0xb9e0e9c8,0xbad72d1d,0xbaad97df,0xbaa6af36,0xbb07d50c,0xbb59478b,0xbb922318,0xbbc1c2db,0xbb55fbb3,0x397e40ff,0x3ba7eec7,0x3a8e32f9,0xba965a23,0xbb1ccf94,0xbbc5b828,0xbbb57b89,0xb954b3eb,0xb9f3899c,0x3b4e9373,0x3bcc249c,0x3b49c289,0x39af2cc9,0xba35624f, -0x3833161f,0xb8a15550,0x374f7d6e,0xb7a6841b,0x367677ab,0x352f0015,0x36fd1426,0xb5ec946a,0xb75fcec0,0xb82973b5,0xb74e581a,0x388a0f68,0xb81c025a,0x38be569b,0xba056774,0xb98bf06a,0xb97a786b,0xb989a58e,0xba140aa4,0xb93f178f,0x3a5ae085,0xba87ff17,0xbabd7f96,0xbb5d1114,0xba443644, -0x39d091f3,0x39389c9f,0x3a7546d1,0x3aa32e91,0xbb73f70d,0x3a9fb576,0xbab5c791,0xbaf78112,0x3b406f7f,0x39c16ae8,0xba8d1dfa,0x3a214f53,0xb95c142d,0x38414bd2,0xb82850b8,0x37790fd2,0xb6ff3867,0xb5ede84b,0xb7057b9e,0x3633ec7e,0xb73397cd,0xb8aab4b5,0xb898b4ad,0xb904670e,0x39fd5e95, -0x3a0e898e,0xb9a7cdd0,0xba3eebc5,0xba932686,0xba5f72e6,0xb98a8eea,0x3b271e03,0xbab52faf,0xbb0b4ac4,0xbbb90626,0x3a817d97,0x3b4179d0,0xba00808e,0xba9af2c6,0xbb2dd488,0xbc05c6e2,0xbb5264b2,0xbc10226f,0xbc7e89ca,0xbb91df3c,0xbaa26690,0xbab5333e,0x376e1142,0xb6af3157,0x384f69e4, -0xb7e17a63,0xb43e5e62,0xb7b20ed2,0xb66a9188,0xb7999a42,0x369036a6,0xb83552fa,0x38ce2df9,0xb9a28576,0xb9c90847,0x3899a094,0xb9d07d22,0xba844c29,0xbae927cd,0xbb293fd0,0xbb51afc1,0xbb816cef,0xbb7b0529,0xbb4ed7e0,0xba628273,0x3a93d426,0x3ba0b84e,0x3b34b00d,0xbb8fd803,0xbc04be21, -0xbc227d0e,0xbc0457f2,0xbbd4b917,0xbb23c185,0x3bcd2d2f,0x3beadb99,0x3b733953,0x3aca62ac,0x38c85370,0xb96f50ce,0xb824b441,0xb80f4cbb,0x363befb6,0x37552769,0x378a9c13,0x37139e1c,0xb809da78,0xb721455a,0xb8f6d388,0x395d9f65,0x3ac26763,0x3b181159,0x3b2ea0e2,0x3b14f6d8,0x3b1585c7, -0x3ae91aff,0x3a877abb,0x398b1963,0xb9ad8287,0xbb03db4c,0xbb61c20a,0xbb982d9b,0xbba10efe,0xbb7b38ca,0xbb468c77,0xbb7eff4c,0xbb9edc77,0xbbc2b3ef,0xbbc8dd70,0x38b498ab,0x39126b25,0x3a7c10e5,0x3aa14176,0x39f37b70,0x3a2964cb,0x3768f559,0x39188fa2,0xb8be1a04,0xb8149f2b,0xb8c034c9, -0xb88c91bb,0xb8606b95,0x375b5413,0xb6f455ea,0x389d0b64,0x39a6535a,0x3a23f098,0x3a25bc8a,0x3946a932,0xb974f200,0xba6952aa,0xbaa3220f,0xbb062208,0xbb220592,0xbb557267,0xbb2da179,0xbb0d1cb0,0xbac33186,0xbad8de1b,0xbb038b54,0xbb36028e,0xbb0c7a3c,0xbad43f78,0xb9bf4bc2,0xb91dbebb, -0xba2192bb,0x398527ef,0xb98e0766,0xba312fc9,0xba902cd0,0xba8536ef,0xba0375d9,0xb9243b6c,0x37f9133e,0x388ccf3d,0x39025f2e,0x38dafbac,0x386fcc00,0xb867d911,0xb9249fdd,0x37f1c453,0x39c4b442,0x39ee1609,0x39f6ee53,0x3a0a01e2,0x3924c33f,0x38578341,0xb7ef417a,0xb89c9ed4,0xb9139637, -0xb9287916,0xb9f710e0,0xba74dd4a,0xbad47e6a,0xbafabdbd,0xbb03bf7a,0xbb1cdcb5,0xba9b1e90,0xba17e25a,0xba47625c,0xb9f9192c,0xbb1e0d60,0xbb3a24ed,0xbb0f50a5,0xbb025a41,0xbac401cd,0xba932325,0xba80a435,0xba6cabfa,0xba4d3235,0xba2db4c2,0xb9f02f59,0xba3cc6a6,0xb968ed95,0xb9b07330, -0x39becd13,0x395fdd07,0x3a026daa,0x3a1c8ac8,0x3a4a547f,0x3a3578ca,0x3a61f2a5,0x3a7137e3,0x3a79f15d,0x3a95b6a9,0x3ab2bb79,0x3ad61a9c,0x3a4e1696,0x39bac64f,0xb8df7775,0xb9dfc718,0xba507306,0xbaaabab9,0xbae483b5,0xbb11800a,0xbb0dae01,0xbb122766,0xb9733999,0xb9f0824d,0x39e2043a, -0xb92e10e9,0xb8fa92e0,0xb900ec12,0xb9826ddf,0x39dc695f,0x395ad2e3,0x3a28ae2a,0x3a6a8522,0x3a933eac,0x3a8d049a,0x3ab97daa,0x3a99b11e,0x3aa621ce,0x3ae70541,0x3ab60395,0x3af56410,0x3ae61fff,0x3aea58a3,0x3aea3d1c,0x3ae8e65b,0x3ae6a2f5,0x3ace90df,0x3ab75348,0x3ac3a9b0,0x3a9a79cf, -0x3a62b03d,0x3a14a123,0x390dced3,0xb8d1c995,0x3745e095,0x39a605b7,0x388ca5fa,0xb98c7e08,0x390ea028,0xb8fbe3ba,0x382edf99,0x3a384bf4,0x3ab68e10,0x398c4439,0x3a3828ea,0x3abf68eb,0x3ad9a0a6,0x3ad90158,0x3adb6c3c,0x3aeb4178,0x3b02868a,0x3b0844ff,0x3a7e8581,0x3a21eda8,0x3af7257b, -0x3a95091a,0x3a4ad174,0x3a74701d,0x3a740bb6,0x3a808881,0x3a8489c4,0x3a8c8b2e,0x3a956f7f,0x3a9753aa,0x3a8a3369,0x3a62bf6d,0x3a583e47,0x3a45331d,0x3a2abca7,0x3a0922b4,0x39b3d797,0x39838ecb,0x391b63db,0x39007bea,0x3aca24b2,0x3936b4bf,0x3999718c,0x3a2e3d6e,0x392fbddc,0xba66026f, -0xbad50fdb,0x39035965,0xba2f8c64,0xbac8cc68,0xbad28826,0xbad9c07f,0xbaca7925,0xbae11883,0xbb025491,0xbacd3104,0xba71913a,0xb9267828,0xbad2aa31,0xba7914ef,0xb91e6166,0x39cf9995,0x3965d727,0x399228c8,0x398b57a5,0x38b4b433,0x38911631,0x39377184,0x39985580,0x39cac78b,0x39cc9531, -0x39c37dd1,0x39b60df7,0x39e76930,0x39dfacb7,0x39babb4e,0x3906727b,0x39afdeaa,0x3a27e7d1,0x3a7719b8,0xbabcfdf4,0xb99cc22f,0xba8b9880,0xb9c64fbc,0xb9ba3b46,0xb9d633e5,0xb87a0210,0xb9f5c404,0xba5d0ec9,0xba95f644,0xba568e79,0xba06dad4,0xbaf844eb,0xba58c858,0xba2097a5,0xba14cb4f, -0xba872d30,0x390455d2,0x39bb7224,0x39e349a5,0x39dfcc25,0xb7f4f629,0x3722c570,0x39ac04ec,0x3a5a2193,0x3a5bd9dd,0x39e1195d,0x3a04ab0d,0x3a433c25,0x3aaf576f,0x3ab148ee,0x3a924b03,0x390be1e6,0x3a11525f,0x3a5e55b2,0x3a687a70,0xb9ba214f,0x396100db,0xba45c3f4,0xb9c4e300,0xba05f428, -0x3989ee5a,0xb9989d44,0x392798aa,0xba073585,0xb9086401,0xba999bbb,0xb7c5293f,0xbaa3ce4d,0xba88bd4a,0x3887d059,0xba5996ac,0xba3c1268,0xb9fdd164,0x3a26c346,0x399850aa,0x39e2896e,0xba37c9db,0xba401825,0xb773b638,0x3a66c9fd,0x3aa0f19f,0x3a61d761,0x3a4f62ab,0x3a84eb29,0x3afe3201, -0x3ad8a64d,0x3a95c246,0xb98815d5,0x3a4fe30b,0x3ab109e4,0x3aba18f5,0xb9fdc08b,0xba23128f,0xba3a1b4e,0xb998fe50,0xb90c49b2,0x3903ea6c,0xb8a2c103,0x380c5e5b,0xb6dc50d1,0x397b7c7f,0x3825c55f,0x398e1cbf,0xba1d9955,0xbaa628b3,0xb960b7af,0xba792101,0xba8ca402,0xba781a49,0x3a308a49, -0x3a10194f,0x3a76c028,0xba8cf4dd,0xba6ac3a7,0x3a025bec,0x3af93554,0x3af0a43c,0x39fa410d,0x3a834e15,0x3aeb7691,0x3b709b0a,0x3b562c27,0x3b233528,0xb9a54c78,0x3a7a1b3d,0x3a8a7ff9,0x3a7b0360,0xb9366621,0xb7feff4e,0xb9cd3040,0x381679fd,0x389117d4,0xb6efdc88,0x3815d77a,0x37c3ef89, -0x37c56ff6,0xb899d877,0x37b7097f,0xb842c14e,0x39be6727,0xb8044e69,0xb96511ce,0xb99dd95a,0xbabbc4b8,0xba44c3d3,0x3a2d71e3,0x39f8ce6f,0x39cd2d74,0xbb04795a,0xbb0c5862,0xba73378e,0x3a8e86a0,0x3b1956f8,0x3aad20ad,0x3a9e2b2e,0x3ae8c574,0x3b5b49c0,0x3b381150,0x3a983964,0xba71dd1d, -0x3a37a50c,0x3bb8b360,0x3b86d082,0x3af2f444,0x39cf6778,0x398ae740,0xb8f898a5,0x38247b06,0xb6d81f5e,0x37906f1c,0xb607e8ba,0x35e3122b,0x37de0d76,0x378045b3,0xb64e70ce,0xb8bd2a37,0x383ab1eb,0x3a1411ef,0x391b6219,0xbacb8091,0xbaa2f524,0xba89e519,0xb96b23e4,0x3b1f4ea3,0x3bd19246, -0x3bf8fb67,0x3c10bc0c,0x3bbd4b2c,0x3b30a494,0x3ab89f4d,0x3af20d1f,0x3b4526fb,0x3bb64b75,0x3b9792cc,0x3bcb015d,0x3c0a3a55,0x3bf983d6,0x3b0cc7b6,0x3a99a7d0,0xb95aa946,0x3ab1232b,0xb8903773,0x39014d18,0xb74c6e7e,0x37b98a36,0x36d5391e,0x37543f49,0x365896df,0xb6a52349,0xb76d01f3, -0x37c6ae09,0x38a84b31,0x3803c42b,0xb8a22323,0x38903bde,0xba65ecaf,0xbaa1bb2a,0x3a9464f7,0x3aa7e072,0x3af94906,0xba82d249,0xbb328f20,0xbba2de82,0xbb0fa329,0x3a9d191d,0x3bc1fbb7,0x3b1195c7,0xb94ea498,0xbb1cb651,0xbb93d936,0xbb8108ce,0x39e2e496,0x3a648b94,0x3b82cb30,0x3be6ba40, -0x3b82eb02,0x3a1648da,0xb9e2ed71,0x390f7992,0xb8b174d1,0x388c1026,0xb7b19d48,0x37a03df2,0xb7176e78,0x378038f6,0x373bf79b,0xb6bdbb8b,0x36d2b53c,0x3848f6c5,0xb67df8f2,0x39305f11,0x3a02ab72,0x3a821282,0x3a99c734,0x3aa65f8d,0x3ac17e0f,0x3b2285a8,0x3b608202,0x3b8da3ac,0x3b14b1a9, -0x3a9f67cd,0xbab3050b,0x3b081d18,0x3b954f84,0x3b973bd2,0x3bc20e63,0x3bba1bb0,0xba16262d,0x3b2ac73d,0x3a11e451,0xbb164f77,0x3ad84c89,0x3a14e628,0xba251884,0x39e59f2c,0xb9030b34,0x3871f49e,0xb7880bbc,0x37a82d34,0xb614c94e,0x37141778,0xb6f6def8,0x379e7a49,0x3604d801,0x37f0fd5b, -0x3801d391,0x3743fe9d,0x3963c50d,0x3a83013a,0x3a3e36e9,0x3a189d58,0x3943a67e,0x3b10117e,0x3b640642,0x3bce344d,0x3b1a4161,0x3a852e9a,0xbb204228,0x3b843bb2,0x3be2be31,0x3b8d526d,0x3bb6a9ca,0x3b947a40,0xba777866,0x39e08154,0xbb8ce980,0xbc82fc55,0xbb88404f,0xba0b3c4f,0xba4245b2, -0x3982052a,0xb7dcfb08,0x386f249e,0xb7992ba6,0x36cccf45,0xb7195906,0x3739f6af,0x369dc965,0x37d5c6f6,0xb6ef8244,0x38b85a4f,0xb9422969,0xb9972508,0xb959873f,0xb924c548,0x37a6c857,0xb9017979,0xb9a67bfe,0xbac7f537,0xbb385834,0xbb3f336a,0xbb10880a,0x39997a24,0x3b333a20,0x3bacf3b7, -0x3b44e226,0xbb845b62,0xbb519fed,0xbb2be755,0x3aa32430,0xb8ebe1b4,0x3b3a8cc5,0x3bc4d473,0x3b35e826,0x3b40c7ba,0x3a4972df,0xb8dd0b05,0xb8cb3246,0x38400112,0x3662cd85,0x38021209,0x3778b7c6,0x37895af3,0xb72179c9,0x3599b5a3,0x37b54092,0xb8bdb0cd,0x393d394a,0x3aaecf2e,0x3b1cc2c8, -0x3b386aa6,0x3b34c32b,0x3b104c92,0x3afbfdaa,0x3aa754ec,0x3a8841d5,0x3ab993ae,0x38532eef,0xba823734,0xbabe0c1a,0xbaf69d8c,0xb9bbc904,0x3adbcd2b,0x3a8c8c66,0x37aa4163,0xba6fe385,0xba97558b,0x3b3d398d,0x3b0569cc,0x3a4054ca,0x3a96709a,0x3a31def7,0x39bf4524,0x3853e0a3,0x38573b05, -0xb72e45e9,0xb6d86b64,0xb718ad22,0x35b9b10f,0x38242944,0x37fe2d5b,0x382ed4a8,0x38a2b1e4,0x39d54cab,0x3a684110,0x3a354b5a,0x3a10edcb,0x3a009ea0,0x39182961,0xb916ec02,0xba60f492,0xbab245d2,0xbb12a8d3,0xbae2c88a,0xbac5663e,0xbab1c33c,0xba9fdc38,0xba5cf693,0x394f318e,0x39f537e6, -0x3a984e43,0x3b1f42c3,0x3b2e5c8a,0x3adcfe6e,0x3943c2ba,0x3a026b9c,0xb96045e3,0xba5f0531,0xb982eb26,0xb98c1a4e,0x3840d7d0,0x38cf492e,0x38be734e,0x38bada39,0x388a978a,0xb810fe8f,0x3815cc90,0xb8a86fc6,0x3704d475,0x3915cc34,0x39eafbe5,0x3a43b571,0x3a1fb887,0x3a54f27a,0x3a0755fe, -0x39c7b29e,0x39c632aa,0x399849ab,0x38e2360d,0x379e1df7,0xb9ba1f33,0xba827cd6,0xba6671f0,0xb9d7ef8e,0x39028052,0x3a46dedb,0x3a76833d,0x3a512aa5,0x3a2c0648,0xbabce35c,0xbac4cce8,0xbb184259,0xbac72fbb,0xbac9fa42,0xbab85019,0xba8a4b04,0xba1da40e,0xba294e8a,0xb9de97fd,0xb9d49d10, -0xb9554805,0xb996bf91,0xb8ec2e68,0xb9085321,0x39465642,0x39f2f7e6,0x3a24878c,0x39fd91ff,0x3aacc6a9,0x3a97c565,0x3a8df93d,0x3a8350c2,0x3a849e94,0x3a9018be,0x3aa4c763,0x3a7ab8b6,0x3a7ea81f,0x3a8970c9,0x3a7251fb,0x3a2a6f1d,0x399f3806,0xb9951ccd,0xba3ead1a,0xba45e771,0xba8a4c37, -0x398890f6,0x38359967,0xba0152a4,0x38d657a7,0x3922eb84,0xb7891ea1,0x3975f05e,0xb8f94d5a,0x399877f9,0x399600ef,0x39cb517c,0x3a1b921c,0x3a7fcece,0x3a8e6284,0x3ab66b25,0x3abfb115,0x3abc0c6d,0x3afc60ad,0x3ae23ed5,0x3b00f5c5,0x3aea1d2c,0x3b001bab,0x3afd1bdf,0x3b017305,0x3af33e73, -0x3ade057f,0x3aedb3db,0x3accc825,0x3ab290c2,0x3ab21a92,0x3aa79dfb,0x3ac52b08,0x3ab1925f,0x3aa9c6e2,0x3a632244,0x3a0559c7,0x3a4ef204,0x3a3e8232,0x3a1b1ca1,0x3959849e,0x37c10162,0x3a5ab0c2,0x3a11e77c,0x394cd3b9,0x396db3bf,0x39a72a76,0x39d9542f,0x39d2d134,0x39a7d2a0,0x39ad4cc6, -0x3a707ff6,0x3ab0215d,0x3a0997f1,0x3a7783f7,0x3ab1d41e,0x3ac2da65,0x3ac2d323,0x3ac50311,0x3ac3b035,0x3ac6588a,0x3aca0554,0x3aca6337,0x3acb8442,0x3ac526c6,0x3acdf35c,0x3acbe692,0x3ab94c2d,0x3aae95a2,0x3a917e95,0x3a8634c1,0x3a728eef,0x3a5ee0fe,0x3b1a498a,0xbab88fd0,0xba73c42e, -0xbab6b433,0xba1d743b,0x39c7d9e7,0x3a2362ed,0xba371657,0x39245c01,0x3a5e3335,0x3a5a853c,0x3a51c79e,0x3a2f2db6,0x3a1ffcc4,0x3a40965b,0x3a38c42d,0x381028d3,0xba2e1028,0x3a54a2ce,0x39adc2aa,0xb9f66781,0xbab68f7d,0xba91a006,0xba9bfa75,0xbaa0c28e,0xbabcb7e8,0xbaba7c6e,0xbaa038ac, -0xba8ea004,0xba837161,0xba88bcf2,0xba8c6a98,0xba8946e0,0xba7ef2a7,0xba7ead4e,0xba80860c,0xba88470d,0xba795508,0xba6506b9,0xba82fca9,0x3a810e1f,0xba397208,0xb8fd6857,0xba1e063e,0xb9ba3808,0x387f5148,0xb9c1f1ce,0xb958ca73,0xb9b519f4,0xba828316,0xba8f6977,0xb9376c1e,0xb8fd49ff, -0xba88896c,0xb90579cc,0xba3f555d,0xb8f1f684,0xbabe53e4,0xbab6965a,0xbab3a6e4,0xbad76b12,0xbb00392c,0xbaf5c352,0xbad63db0,0xba870c06,0xba91db37,0xbae0869b,0xbad35d91,0xbaa3d809,0xba33cf50,0xba24c4ec,0xba3d9f3e,0xba9f2ab9,0xba5dbc8a,0xba6c8860,0xba58ff34,0x392ab53b,0xba5b2fe6, -0xb9819c4b,0xb9dbce5f,0x3809b1ef,0xb85138f2,0x386adfd9,0xb9a38c16,0x37e58ce2,0xba26055f,0xba246e6f,0xb924e41c,0xba7aec5f,0xbaa4fc22,0xb92ba4c1,0xba14f539,0xb9fbcb8e,0xbac3d33b,0xbae3a177,0xbae9ac32,0xbb16fd8d,0xbb4fcab0,0xbb4ad999,0xbb08c7b7,0xba8df333,0xba4acb6f,0xbad82268, -0xbac25398,0xbaa5bdaa,0xb963aa20,0xb9de9d7c,0xba0af9da,0xba934a29,0xba0df042,0xb9e8047a,0xb9195f45,0x3a4a5745,0xb9c4624e,0xba116ca3,0xb97122b4,0x382bf94e,0x37473c8d,0x37f870b5,0x38a04c25,0x38f36797,0x3981f80b,0x394f6a6a,0x38a41f69,0xb7157659,0xba81e457,0xb9e44b37,0xba90903d, -0xba51b397,0xbab751c9,0xbafa5e4d,0xbad6e727,0xbb118c46,0xbb85525e,0xbb818b31,0xbb02e3bd,0xba09d91a,0xba34d2a7,0xbb3c3e83,0xbaff8189,0xba977b21,0x3a581dbf,0x3a26bff2,0x39e4fe2d,0xbab1fa8a,0xb8ece647,0xba2e39b7,0xba86062b,0x39564d86,0xb9a3926e,0xb9d09fd8,0x39130784,0xb7883407, -0xb7ae6bee,0xb79da0c8,0xb85d1952,0xb8cbe83f,0xb90e9343,0xb88bb9b5,0xb90bdc2f,0x39071598,0x38329b42,0xb85e284c,0xba8f91c6,0xb9b9a827,0xbafe5fce,0xbb03ffef,0xbb19d6ba,0xbb672aa1,0xbbb21155,0xbbac31fd,0xbb5d38b1,0xba97c6dd,0xb96feea4,0xbb0566be,0xbafd70fd,0xba899af8,0x3a6dfddb, -0x39eaaaab,0xb9a0eb12,0xbaa7b548,0xb98db7a8,0x3b1de17e,0x3a95725d,0x3b1990fe,0x3a906f36,0x39783139,0x386c3e05,0xb82252f3,0x37aec282,0xb715c618,0x374ab659,0x380ea743,0x3851baf3,0x38264548,0x37258562,0xb6ba0501,0xb98981e2,0x3a565a91,0xb95483fc,0xba95604d,0xbb1378e8,0xbb585f92, -0xbae795e9,0x3a1c5cbe,0x3bbe2584,0x3bcc0107,0x3bdd2868,0x3b2d43d2,0xb989be98,0xbabb3f03,0xba9581b2,0xba305618,0x3a94b625,0x3aa77add,0x3b36a756,0x3bb07d73,0x3b60b32e,0x3965b9af,0xb9ad1753,0x3abf5ac4,0x39336dd0,0x3a010ce0,0xb94018f2,0x38ac4deb,0xb810b887,0x36039fa3,0xb79dc641, -0xb7757719,0xb80404ea,0xb77b3887,0xb811cdb8,0x381307b7,0xb8c7fce8,0xb8d39408,0xb8aead95,0x396e0d45,0xba5c6f0d,0xba85a499,0xba81df18,0xbafd0c67,0xbb5b12c3,0xbb825a38,0xbb90fb50,0xba986e4d,0x3ad99a7a,0x3b9fc9d7,0x3aa6aa89,0xba461896,0xbb1d0e24,0xbb8aa86f,0xbb55dc75,0x3aa40020, -0x3a3f02aa,0x3b5d3779,0x3bd354a4,0x3b625e5d,0x39eed28e,0xb966c8a0,0x37b515be,0xb7e69218,0xb67a7333,0xb6a45f5a,0xb6c4d65c,0x363c4b0b,0x36fbd1df,0x3610a951,0xb6e232a9,0xb7047b09,0xb72540e4,0x3907c8b0,0x388bde80,0x39f3a3da,0xb9061433,0x38b7f83c,0x3a106de5,0x39d255ed,0x3a256c9c, -0x3a5ed4dd,0x3a9fe60b,0xba909333,0xbac9d604,0xbb5b1b68,0xb96dc8a7,0x3aa0e59f,0x3a84de78,0x3b11749e,0x3b0b80cd,0xbb55b282,0x3ad16135,0xb9929e0f,0xbb2e7270,0x3b0caca1,0x39b05277,0xb956d8f0,0x397774b6,0xb8a90035,0x37f78eaa,0xb78e24c9,0x37164c3f,0x36e19b20,0xb6eb3875,0x3724068e, -0xb7afb050,0x37d70ac4,0xb8ea467a,0x3902f2e7,0xb9a1ea09,0x3942d72b,0x39fec52e,0xba042efe,0xb927de7d,0xba0fa43a,0x39fa705d,0x3a690da5,0x3b274c62,0xbada678e,0xbb0ce16c,0xbb88d2a1,0x3abd8a76,0x3b4a4c54,0xba43bd08,0x39ef894a,0xba2acb8b,0xbbbb7239,0xbab64748,0xbbc1c3a0,0xbc809dfd, -0xbb88bb11,0xb997d260,0xb845866a,0xb9179505,0x38649d62,0xb8095d5f,0xb74d5004,0xb7b52786,0xb797b4e2,0xb77b0bc0,0xb7b1bbc5,0xb783a507,0xb71409ce,0x388637b4,0x38065358,0xba05cde9,0xb97f7371,0xba9d731f,0xbabcae57,0xbb06404c,0xbb273589,0xbb4ec9c1,0xbb747f75,0xbb59808a,0xbb22b6b1, -0xb6018193,0x3b4ee98f,0x3b9393c7,0x3acb9bb2,0xbbd10de6,0xbbbf8a53,0xbbb312d6,0xbb7bc3ae,0xbb1746a7,0xbb072dfa,0x3b77d450,0x3b73a178,0x3a871f66,0x3a8e1e13,0xb99840ef,0x38854958,0xb8075a02,0x387ac4ec,0x376a008b,0x3841f139,0x380711d3,0x3822c49e,0xb6eef45a,0x35a139c3,0xb8d58e00, -0xb8cb2641,0x3a8b6cdc,0x3b0cc577,0x3b34ec32,0x3b0dd74f,0x3b1b016e,0x3ad482c7,0x3a6bde1c,0x39766625,0xb9307c36,0xbab5c217,0xbb2a72e3,0xbb65f55c,0xbb73a46a,0xbb24bafd,0xbaab560b,0xbb1a5f90,0xbb6592d3,0xbba6854c,0xbb8a6721,0x3a8f1148,0x3a7b0813,0x3ad23a98,0x3abe76d2,0x3a6806a7, -0x39accb86,0x378d92a4,0xb758a2d6,0xb8d3a84d,0xb89ef1da,0xb8f2d306,0xb8dbddf5,0xb893e917,0xb8488861,0x3828b0f6,0x38d82475,0x39930b13,0x3a425a49,0x3a86e467,0x39e04c1e,0xb7a9596d,0xba2875d1,0xba836bc7,0xbad68bbd,0xbb03f17d,0xbb39d2ab,0xbb15f2b1,0xbb04f124,0xbad1d27e,0xbaee876e, -0xbb06a2a6,0xbb1455fc,0xbae36387,0xba50033a,0x3a06b57b,0x3a830128,0xb8012772,0x3a9d92b6,0x3a42e5ce,0x3659bd29,0xb9cadabb,0xb9dd1555,0xb816eed4,0x38dc1927,0x394a7d2c,0x38ffb9e7,0x393b9fcb,0x392c9e9d,0x390eeed3,0x38a76e27,0xb8d49b93,0xb89ee046,0x3960ed9f,0x39d08403,0x3a089a82, -0x3a5f67bf,0x38828c62,0xb7f03172,0xb9a2cc99,0xb99c0956,0xba043834,0xba4d6465,0xba76a8b7,0xbaadd282,0xbaf48b25,0xbafe9ea7,0xbae11156,0xbaebccb3,0xba46fb3e,0xb99fe072,0xb9e8f4ba,0x34a90e0f,0xbb056759,0xbb1a7ad0,0xbad29ae9,0xbac0e243,0xba826bdf,0xba5efaba,0xba43bcf4,0xba2a28ee, -0xba124a1d,0xb9e1a17c,0xb926e444,0xba0a1a33,0xb9b2dcb8,0xb9dfb161,0x374cf527,0xb902e750,0x3911e470,0x398c526c,0x3a30aab0,0x3a105ed1,0x39b3eb5f,0x3a0f0d01,0x39d90797,0x39f55dfb,0x3a0d02f0,0x3a448e7e,0x3966b550,0x385e4349,0xb8b38e4c,0xb9ab9a72,0xba277ecb,0xba88ff46,0xbabbdce7, -0xbae16ce8,0xbad5f4d7,0xbae09225,0xb9e9d9ea,0xba25fdba,0x395bcc90,0xba0ee978,0xb9bfdebe,0xb9c73a13,0xb9fb2e51,0xb89c9938,0xb9842037,0x39486e9a,0x39c96d3a,0x3a291fc2,0x3a2cfaa2,0x3a7d3d80,0x3a839ea7,0x3a99fc7f,0x3ada17f9,0x3aaa9565,0x3b05b978,0x3ac25edc,0x3acdea73,0x3ac3e954, -0x3ac47b42,0x3ac54450,0x3ab256bf,0x3a9e2a37,0x3a8db078,0x3a3aa93b,0x39b385ac,0x38d7794c,0xb9307599,0xb98dedfb,0xb955e3c8,0xb608692b,0xb98961f2,0xba0cafdd,0xb888239b,0xb9a04f1b,0x396b62ee,0x3a6dd41a,0x3aa1896e,0x39bdb7b6,0x3a67a6b6,0x3ab1b87f,0x3ac951f5,0x3ac60407,0x3ac64df0, -0x3ad3a1be,0x3ae72022,0x3af01406,0x3a964671,0x3a1fcdc2,0x3adaee51,0x3aa6efd6,0x3a4b8936,0x3a03c65f,0x3a153308,0x3a1cce08,0x3a1ed5ff,0x3a23d519,0x3a307fad,0x3a397bcf,0x3a2bdb2e,0x3a14e9a1,0x3a16d157,0x3a0a4d88,0x39d7dbcc,0x3996a2b5,0x390b4cf3,0x389ea45f,0xb601774b,0xb8156275, -0x3a97868d,0xba16eed8,0xb9356c09,0x392890bf,0xba4ff92f,0xbab8c36a,0xbaa1aca8,0xba34ceba,0xba9db771,0xba9e59f7,0xbaa46989,0xbaa1d12f,0xba91091a,0xbaa27f16,0xbaafdf41,0xba8fbfbb,0xbabae6c3,0xba7f9c5e,0xba91d151,0xbab19245,0xba6ccd34,0xb814dad4,0xb991b061,0xb9994752,0xb9aadccd, -0xb9f07e95,0xb9e59847,0xb99c5808,0xb934cf1e,0xb8ebfa39,0xb9563320,0xb9432a5c,0xb932d096,0xb867de77,0xb91c55b3,0xb94b89ec,0xb9a0f3ab,0xb91a812c,0x3931c5b0,0xb84d91eb,0xbae5d665,0xba322043,0xba9e8265,0xba5d575d,0xba60c13f,0xb9d5722c,0xb9b2ee5a,0xba5d6614,0xba851f91,0xbac9db3d, -0xbaa9e094,0xba5bf0d0,0xbadd2b51,0xba997b98,0xba83c9cc,0xba7be11d,0xbaca9d79,0xba487903,0xb998a4b9,0xb9d77a8b,0xba140710,0xba5e9941,0xba47289b,0xba070d6b,0x3906bd04,0x3844b283,0xba256850,0xb9bd7bfa,0xb830596c,0x3a14f0e7,0x396ef183,0x36fe5cea,0xba15aa3c,0xb90b34cd,0x39c143ac, -0xb88f0fc8,0xba90d309,0xb9d96ebe,0xba82e7ea,0xba3f22d0,0xba328f77,0x395cbb73,0xb9953484,0x38b4940d,0xb9ca6850,0xb7e94cf9,0xba15ef9c,0xb9684cd3,0xba96478a,0xba980a7e,0xb9e4a8fe,0xba7fb071,0xba9d1179,0xba87c038,0xb961b504,0xba58ee3f,0xba7be83c,0xbae4e6d7,0xbac8468e,0xba4a3292, -0x39782170,0x39ebf36c,0xba2205f5,0xb96f3af2,0xb6c6a5ba,0x3a8c9fd9,0x398070f4,0xb8770c07,0xba3fb3c3,0x38e65ac0,0x3a8990c8,0x39c55c5e,0xba970221,0xba72288b,0xba4cadc1,0xb9a29bb8,0xb78fa233,0xb770fbdf,0xb826b768,0x384b479d,0x382804ba,0x39323eb3,0x3904a3b8,0x39262121,0xb7eccb43, -0xba2f5665,0xba013898,0xba90467c,0xbacff5c3,0xbad6c460,0xb984b844,0xba3a6de0,0xba7845a3,0xbb2289d8,0xbb132a5a,0xba4466b5,0x3a6576f7,0x3a32c495,0xbacf2a25,0xb998fa7c,0x39caafb7,0x3b260221,0x3a88306a,0x3a127256,0xba8a769a,0x390ba417,0x3a365314,0xb8076d40,0xba734499,0xb98d70c2, -0xb9b152fe,0x388e851a,0x364453e1,0x3740fe9e,0x37b67ea3,0xb7c04bc5,0x3645b057,0xb89fd51c,0xb7b45a9f,0xb8ea4dc7,0x39096c30,0x391ef21c,0xb943bc16,0xb916cfeb,0xbad8161f,0xbab937b4,0xb9cfc46a,0xbaad693d,0xbb025956,0xbb6e28e8,0xbb53a200,0xbadadaaf,0x3a1fa959,0x3aa5396d,0xba650cc8, -0xb9c03f77,0x39af3d11,0x3b101ecd,0x3a0dd874,0xba0dc91d,0xba91bae5,0x391287e4,0x3b63702f,0x3b3f22fc,0x39ba2f12,0xb93c057d,0xb92d627a,0xb827da6f,0xb828f745,0xb68706a6,0xb71fa0dd,0x37a7c494,0x35e95b5e,0x380474a3,0x37ca60d9,0x3835fce6,0xb83929bb,0xb8a00357,0x38f42a19,0x39c376bc, -0xbabac2b9,0xbac3f6a8,0xba4b1564,0x39fa1c61,0x3b635432,0x3bec94cb,0x3bf82cb2,0x3bfb5053,0x3b9e1edb,0x3b2c4fa2,0x3af5d10f,0x3b03140b,0x3b1d12aa,0x3b4e3a0e,0x3b5b0e16,0x3b9a43b4,0x3bd694f6,0x3b9f5930,0x3b2ea263,0x391db036,0xba4e31bb,0x3a8ac21c,0xb9d52b4d,0x38cb2af7,0xb817b0a0, -0x37aa0ef3,0x35a32ff5,0x34f7f959,0xb6ade346,0xb6a5c620,0xb7d08d4d,0x36f7c55f,0x36fbcd31,0x38d82764,0xb95b521b,0x38e666f9,0xb9ad163d,0xba893268,0x3956d8b0,0xba00c54f,0xba1b4338,0xbb2a16ae,0xbb5e506f,0xbb855b0f,0xba8989e1,0x3ae17fad,0x3b9415a6,0x3ac3d8be,0xba37c1a8,0xbb335b79, -0xbb811c54,0xbb2f0b89,0x3ae6a210,0x3ae90660,0x3b67ed0f,0x3bd86a56,0x3b731148,0x39c87263,0xb988924a,0x38c3a2df,0xb88e6464,0x37da5096,0xb79dee04,0x3730d0d8,0xb6d7a6fd,0x3759d75d,0x3691150d,0x375d6ada,0xb7c6b765,0xb7166f0f,0xb78808c1,0xb82bc54b,0x38f1cafa,0x3a32ba2c,0x3a86045f, -0x3a945664,0x3a931295,0x3b02fd89,0x3b268541,0x3b1859d6,0x3a0ab342,0xb8c08680,0xbaec0a99,0x3af236e4,0x3b604969,0x3b084e8b,0x3b3766e2,0x3b1396d5,0xbb351b12,0x3ac91c7d,0xb96b7a1e,0xbb3e64d7,0x3a9b7a80,0x398daf07,0xb94afd0c,0x38c77f2e,0xb8083509,0x37eb42ed,0x3632f550,0x37548cc8, -0x36d27667,0x365e9ec5,0x3699b03d,0x36b8ba2a,0x37acbce2,0xb8117775,0x37ae14b2,0xb9139105,0xba05d9b2,0xb705c229,0x39cb7062,0x39eba5cc,0x38dc331b,0x3b0121e2,0x3b232f6c,0x3b62cec2,0xb9c8b174,0xba87a796,0xbb13bfe1,0x3b306675,0x3b99c1f7,0x3a8920f7,0x3b1afe62,0x3a8142de,0xbb88b902, -0xba4258c2,0xbb8f73e6,0xbc7e1c7b,0xbb91b125,0x3813dfe9,0xb88a7c76,0x37fd3b86,0x36e8cfa9,0xb80b3f0c,0xb6eada59,0xb75df91a,0xb7ad981b,0xb54a65e6,0xb79ac004,0x35a470ff,0xb6e25185,0x37448910,0x37c3ba32,0xb9d8e70e,0xba42e8d7,0xba6eb000,0xba6ce5fe,0xbab56afe,0xbad375f1,0xbb31d410, -0xbb650da6,0xbb469a0a,0xbb1acdd5,0x37df4b3e,0x3b5a666c,0x3b6152ff,0x39f85ba7,0xbbbba4ef,0xbb84d7a1,0xbb349039,0xba070491,0xba619d5b,0xba202343,0x39eb40e1,0xba0b1da9,0xb83306f1,0x39c44412,0xb9b0368b,0x3867ff4d,0xb67e4740,0x381f7bb3,0x37d58b04,0x380e4571,0x37eae744,0x37f16850, -0x37ee5360,0xb70fcb82,0xb7d8d994,0xb8aed2d2,0x3a0fd168,0x3abbdb34,0x3b0caf97,0x3b1189e0,0x3b041531,0x3adab00c,0x3a5d4f00,0x399d7bf9,0xb74dd8cb,0xba88ae3d,0xbb091e7e,0xbb3c99ea,0xbb1fc27d,0xba773f62,0x3a0a860f,0xba490f49,0xbb0ba61c,0xbb584dc7,0xbb31e7a9,0x3aec0b45,0x3a708311, -0x3a068f01,0x3a6da88c,0x39f815f0,0xb73caef9,0x379437e3,0xb8bad015,0xb81bec76,0xb8ddb1ce,0xb8132e24,0xb89604f1,0xb7cd11ee,0xb852b3ba,0x37c60a56,0x3735fb4c,0x38ad9abc,0x3a47367a,0x3a64672e,0x3a664925,0x3a14ff73,0x37d33a4b,0xb95ead96,0xba903138,0xbacd5245,0xbb1d89c4,0xbaf4c4e9, -0xbad1c1a5,0xbaa49bb5,0xbab739f6,0xbaac7051,0xba1846a5,0xb8e4e00f,0x3a2efca8,0x3acfbb48,0x3ae72550,0x3aa6b816,0x39d98cf8,0x398e6905,0xb9777caf,0xba3aabbb,0xb8aa4fb6,0xb8863ed7,0x39183f9f,0x38eb0d91,0x39273248,0x38f27d77,0x3914ae3c,0x38a10c74,0x390d849d,0xb87c99bd,0xb89fc4c3, -0xb912e50f,0x38f13ee3,0x39e4b43d,0x39f16c47,0x3a200978,0x397cfa7e,0xb79bc4ba,0xb87d1ff5,0xb9a23cf5,0xba30ec54,0xba41b0c4,0xba8c64c4,0xbac73788,0xbaab9af2,0xba49550d,0xb9c72607,0x3980aeb5,0x39e7cb7d,0x39e8438a,0x39f5d7f9,0xbaa9b83c,0xbac5d81b,0xbb086e20,0xbab18174,0xbab1f961, -0xbaa2411f,0xba701aae,0xb9e81edf,0xb9c4383c,0xb9927e22,0xb9a6f5ad,0xb98d32a2,0xb9987a83,0xb9a4aec4,0xb9cafbc2,0xb96ce46f,0xb75961a2,0x3920d511,0xb8a583dd,0x3a36756c,0x3a2f4845,0x3a174f6c,0x3a086757,0x39ca1831,0x39ce7d3f,0x3a01806c,0x399a1c44,0x39a33853,0x39a70dd6,0x394e9be0, -0xb87d768f,0xb9a0d3bc,0xba2c70d8,0xba70cd5a,0xba583f28,0xba8e6ba1,0xb97a966a,0xb9b3ee09,0xba6d9219,0xb9f10c43,0xba069071,0xba25f040,0xb9f36348,0xba28c866,0xb9f541cf,0xb9f93102,0xb9b957be,0xb96346d3,0x384a88b4,0x39464c35,0x39df0d91,0x3a1e51fe,0x3a531580,0x3aa2037e,0x3ab475a2, -0x3aec7dbd,0x3ad8b345,0x3ad7be31,0x3ad49501,0x3ad71524,0x3ac77575,0x3ab22079,0x3aae27b4,0x3a8c3e1c,0x3a5495a3,0x3a3e73e4,0x3a1a385d,0x3a1b2c78,0x3a01df75,0x39fb325f,0x3922a82b,0xb8f6ecd4,0x399e1ad6,0x3971afdc,0xb8cd5105,0xb97bbea4,0x375b0b3e,0x38f3bf0f,0xb8664f34,0x3823fc48, -0x3902bcad,0x396102b8,0x399bd32f,0x39a687f6,0x39a588b9,0x39a8cd8c,0x395e8232,0x3a03909e,0x39ececbf,0x399703d2,0x3a0a4407,0x3a6d8014,0x3a5ffbed,0x3a65f711,0x3a62eb0b,0x3a63253d,0x3a6a11b7,0x3a6f674f,0x3a6bff0d,0x3a60be26,0x3a6aae8a,0x3a60d612,0x3a437f39,0x3a2e8895,0x3a08f1a8, -0x39f72475,0x39d0e2ab,0x39b2df24,0x3aad1028,0xba094fba,0xb9b0c529,0xba196949,0x3934280b,0x39b2e91a,0xb9846040,0x372af985,0x39827910,0x38cd5257,0xb7cce94a,0xb8f1cd61,0xb933797a,0xb995c9ce,0xb9a62c66,0xb939dbfd,0x3927b020,0x374f5395,0xb987abb9,0x397a79a6,0x38e91552,0xba229b81, -0xb9f8414a,0xba016e58,0xba14b1be,0xba3468b2,0xba2d3e7f,0xba041967,0xb9c2f282,0xb9a33455,0xb9e2cf75,0xb9bb89a8,0xb9a1acff,0xb933e53c,0xb970eef3,0xb98b99eb,0xb9d948b9,0xb99ea8d8,0xb948121e,0xb7c7eee4,0x39e25487,0xb9b6d0bf,0xb951e9eb,0xb9905ef6,0xb8650489,0x3986b0da,0xb87ac790, -0x383d4706,0xb90a4cf6,0xba03cec9,0xba32c635,0xb939101d,0xba16a0b8,0xba023e63,0xb8c2faf5,0xb9d5a242,0xb8ab93a6,0xba048066,0xba1ed6df,0xba09fc3a,0xba57df40,0xba7d4b5c,0xba5a07db,0xba11e4f5,0x364b414a,0xb900bc0e,0xba6ddc45,0xb9f01143,0xb84a45fc,0x3a170ce9,0x39cf1009,0x3918fcab, -0xba161196,0xb8e82e4d,0xb973eae3,0xb8f40108,0x39b2f81c,0xb93510d7,0xb8875ca8,0xb9823ced,0x38958473,0x397f230e,0x38fc8b35,0x387deae6,0x397c6e28,0x389a2a8b,0xb90a7afb,0x3950116a,0xb9e4a85a,0xba3df41d,0x38008470,0xb9bbbef4,0xb90bb221,0xba66d00a,0xba4820fb,0xba6566cb,0xbab30a15, -0xbaf7c5c9,0xbae2b58b,0xba5bd6fe,0x38f019e4,0x3994f433,0xba7bbf8c,0xb963509a,0x394bd07d,0x3ab18812,0x3a54b968,0x39f22860,0xba110f56,0x392ead66,0x39714459,0x39ced27e,0x3a3a7ca5,0xb90001d3,0xb9a65a72,0xb80f9d05,0x385fa38d,0x378c76fc,0xb738be38,0xb6df998e,0xb7d188ca,0xb7b7a04d, -0x391ad855,0x36332159,0x3998c3c6,0xb9838c99,0xb98002d5,0xba4a65b4,0xba113fef,0xba824820,0xba63ec6c,0xba49a695,0xbaac0040,0xbb1e1ec1,0xbb0695af,0xb9d24a8a,0x3a6b5737,0x3a18ef9e,0xbb04700a,0xb931246d,0x3a5582c7,0x3b3e2a01,0x3b036d2c,0x3aab2476,0xba7de788,0x39ef8e97,0xb8ce5577, -0xb9e12ec1,0x39abe9a5,0xb83ba28f,0xb6a110bf,0x390dc148,0xb7693073,0x36904e50,0x3589a916,0x375e885c,0xb4227b20,0xb796ebff,0xb8041b10,0xb8959b96,0xb7cdf6e6,0x38933f0a,0x391114d5,0xba1ad3bd,0xb9b0b8b3,0xbaab1277,0xba8eb3cd,0xbaaf44be,0xbb1ee74e,0xbb70ea02,0xbb519975,0xbad7beb5, -0x3a0a5486,0x3a806e48,0xbac8f151,0xb9637e43,0x3a879290,0x3b41ecb1,0x3b06d9ba,0x3a4cd0b6,0xba52a193,0x39d42625,0x3b256c7c,0x3b252525,0x3b14e8b3,0x3a2a7bbe,0x390528d4,0x37d77b7c,0x3785842b,0x37944645,0xb551c40d,0xb6fc4f10,0xb63a285d,0x37182391,0x37646bc4,0x37876b3e,0x3835de13, -0xb9046328,0x3992d219,0x39938cf4,0xb96a2910,0xba57337a,0xba83d054,0x39514f61,0x3b01f492,0x3bd78940,0x3bcf5561,0x3bb01f01,0x3b290a06,0x3a554cb5,0x3a27bf45,0x3a928d95,0x3ae6f53b,0x3b42f67a,0x3b5ef4a1,0x3b8d2397,0x3bbca938,0x3b645dbc,0x3a240f94,0xb85e5795,0x3abbc7a1,0x39e6db7d, -0x38848aea,0x382faa90,0x36e7394e,0x37a82bf6,0xb6c9ac4d,0x37180af8,0x3618440d,0xb6b90927,0xb684a201,0xb7a5f1d3,0xb5f92ebe,0x376b9018,0xb823427f,0x384a457c,0x39c6a88c,0xb9442016,0xb95bb6d3,0xb9de3710,0xba86c253,0xbb473a52,0xbb5ce7d0,0xbb55225b,0xb92fe722,0x3aff6281,0x3b750fc3, -0x3aa72a8c,0xb98961cc,0xbb0159b8,0xbb19c79e,0xbaa57a76,0x3b03a4ad,0x3ada8fc8,0x3b3a2159,0x3bc666ce,0x3b664241,0x3985fab7,0xb5b206d0,0x37d55023,0xb79553f7,0x36de63f8,0xb6965fb1,0xb61fd7c0,0xb63d7beb,0xb4bde9c4,0x35960802,0xb69320fb,0x37c09d3a,0x371ac99e,0x38b3617b,0x389895d5, -0x3a1a9e91,0x3a0649fc,0x3a265270,0x3aa3427f,0x3a95b591,0x3afc494c,0x3b0c4df6,0x3aee97ec,0xb99be281,0xba50a849,0xbb1f4a22,0x3a7d353c,0x3b35af6c,0x3b2f45ce,0x3b727461,0x3b4c1f4e,0xbb014a65,0x3acf7537,0x39b45bfc,0xbb395361,0x3a583c3e,0x3976edfb,0xb90e2d5f,0x38df215e,0xb733e6e4, -0x37ad707e,0xb608938c,0x36ce9761,0x36c0e641,0xb5ae90cb,0x3753970e,0xb77d6b54,0x37b9a959,0xb830cc3f,0x38f37c81,0xb915b147,0xb96a4fdd,0x39850ba7,0xb93efe02,0x3a1c9109,0x3997d06b,0x3b12dfe4,0x3b2c3491,0x3b4cc6fe,0xb9c5c479,0xba3d15ff,0xbabd4e7e,0x3b1c2236,0x3b7dc73e,0x3a88d09f, -0x3b4f7a68,0x3b192704,0xbad7e6b8,0x39b9b663,0xbb2629fd,0xbc576eaf,0xbb73265d,0x38f48dcf,0x3914b384,0xb833a559,0x374e2f60,0xb7c3f02e,0xb6f9c1d6,0xb750ff43,0xb3ef9a8a,0xb6f3a44e,0xb712df58,0xb78ca9bf,0x37738537,0x3716bccb,0x39027a11,0xb994f994,0xba1282e2,0xbab71e41,0xba9b982d, -0xbac73249,0xbad8dd1b,0xbb17c29d,0xbb355d04,0xbb0ee95f,0xba975707,0x3aa1f42b,0x3ba80549,0x3b71d5a4,0x3a276f8b,0xbbbc854d,0xbb08e520,0xb8f9e6f8,0x3ae07e2f,0x3ac3d7ad,0x3a1266ad,0x3962096e,0xba271e85,0xb9e593df,0x39f467c8,0xb96590c3,0x391ba372,0xb5f0d312,0x38843a1c,0x3737b887, -0x37b11817,0x372064b7,0x37ef8619,0x378ce4ee,0x365514f4,0xb6956ba4,0xb935ae66,0x3a14abb4,0x3adbd03f,0x3b1a08c0,0x3b02da55,0x3b095749,0x3ac9724c,0x3a81d4ea,0x3a220d4f,0x39f95b48,0xb9164d05,0xba87330e,0xbac88443,0xbacee532,0xb9b14779,0x3a8c6739,0x39c8bbc9,0xb9ec1fdc,0xbae12590, -0xb96650bb,0x3b17da3b,0x3ae6d587,0x3ac6db75,0x3aa0a33d,0x3a1d8a6c,0xb7dd7dbe,0x3864da67,0xb8b039fb,0xb7de6a56,0xb8231587,0xb7e8b45f,0xb7d1841d,0xb830fb6a,0xb81d64f0,0x36846f0e,0x38bb62b4,0x3906656d,0x3a4bbf7e,0x3a8c0070,0x3a56de97,0x39fe5cf9,0x37cdcefb,0xb93fbae8,0xba2a6288, -0xba7a43e5,0xbae3beb2,0xbabd1858,0xbabf57c3,0xbaab1fc8,0xbac5127a,0xbab8e218,0xba3a432f,0xb9e2bc7e,0x3a180b02,0x3ad8c4fc,0x3b1106a2,0x3a8153cb,0x3ab0aba6,0x3a9e5a82,0x39ccd0e0,0x38dc0cb5,0x355090f3,0x39014e7a,0x391ab6b9,0x3908398a,0x389937d3,0x386564d9,0x381ccad6,0x38d840d8, -0x38a4e1f2,0x37cf834c,0xb789d059,0x383fd854,0x39993694,0x3a09127f,0x3a5f6411,0x3993e54d,0x38ec7d82,0xb98c9e31,0xb91fa67a,0xb9dd7f7a,0xba647f0b,0xba66dfd3,0xba9a0ad8,0xbaca372b,0xbab08296,0xba51252c,0xb9dc5819,0x3919a9ab,0x39a0282c,0x39803732,0x3a17c7c1,0xba9d0e83,0xbaac9f2a, -0xba975e44,0xba629931,0xba31f0c1,0xba22a180,0xb9df0363,0xb9260df1,0xb9431646,0xb8dac727,0xb638c58b,0xb8b47f77,0xb93e4695,0xb9475124,0xb950df16,0xb96f054c,0xb7da71b6,0x388b0a89,0x39a63682,0x3a0af0fc,0x38ce4924,0x3994d88f,0x38799695,0xb88c00af,0xb907c696,0x35926042,0xb84ec1de, -0x38f966f5,0x39b4bc3b,0x396f62f9,0x36e11036,0xb983616c,0xba1718b8,0xba3b24c9,0xba30c751,0xba596216,0xb98260ea,0xb9bd9c93,0xb969a833,0xb9fb1b1c,0xb9988821,0xb9e90a47,0xb9e4c3db,0xba0b6971,0xb9e0ba5d,0xb938da2e,0xb8716da8,0x38ec21a3,0x395959d8,0x39cbe8bb,0x3a30e023,0x3a67879f, -0x3a97bf38,0x3a9c76f3,0x3ae653cd,0x3aa8d70b,0x3aaa02fe,0x3a9f7ddc,0x3a9f983f,0x3aa37f1d,0x3a96739b,0x3a83d783,0x3a4a9b01,0x39ea8ad1,0x391e6429,0x38c02969,0x389ce37b,0x395797be,0x39287334,0x3935421e,0xb8ab937c,0xb98d02e8,0x3766d2d8,0xb8e13e1c,0x39abeaae,0x3a0d0ac9,0x39d909f3, -0x39d89c9c,0x3a2a1f0a,0x3a186e19,0x3a298d0f,0x3a25a36c,0x3a2935a0,0x3a36d2dd,0x3a4611e2,0x3a4df771,0x3a6c1326,0x3a2c782d,0x3a515b13,0x3a75f7d1,0x3a3f1e0b,0x39be68ea,0x39e3d8ec,0x39e4eb62,0x39d7e650,0x39ca5d4a,0x39d43c3e,0x39ea09af,0x39f7c454,0x3a047834,0x3a159a62,0x3a118f9d, -0x39e0dbd9,0x39b0b274,0x395e7848,0x3942e348,0x390a084c,0x38a536a2,0x3a755f34,0xbaa12574,0xba35b65d,0xba3bda53,0xba98f936,0xba6bca7f,0xb956d529,0xba8ac0d8,0xba614e4f,0xb903faa0,0xb9365d45,0xb92ad030,0xb910722b,0xb9750499,0xb93a240a,0xb8b17928,0xba770810,0xba98bfa5,0xb840c6cd, -0xba5658f6,0xba8a5bff,0xba481ca6,0xba5dff6d,0xba74f890,0xba81e235,0xba8c9680,0xba8678dd,0xba64682f,0xba45252d,0xba3d1b9a,0xba6259d9,0xba572e70,0xba48554c,0xba281b6e,0xba46c4fb,0xba494b3f,0xba495d16,0xba35aa73,0xb9f380c0,0xba7b426e,0xba426d08,0xba515ef9,0xba3cf1ea,0xba65a08d, -0xba5328f6,0xb9003d72,0xb9c2e641,0xba25937a,0xba252289,0xba95aa04,0xba8db976,0xba37f0f3,0xba72fe78,0xba958c5b,0xba4c637a,0xba7653c7,0xba92d4f4,0xbabaff3a,0xba8a32fb,0xbaa362b8,0xbaca9d8c,0xbad2dd29,0xbac25f05,0xbab143f5,0xba43aec8,0xba6c707d,0xbadae8c5,0xbaaadf52,0xba7193ac, -0xb9ae7a60,0xba4f009c,0xba71fa8e,0xba8d7f7f,0xba3c93a8,0xb9c5bcbe,0xba6f48fc,0xba69b602,0xba4f124b,0xba35c43c,0xba2c4020,0xb9a3081b,0x38349b35,0xb90a4ef8,0xb7b8a8c2,0xb8a890b4,0xb77dfa5c,0xb88d9e2a,0xb9042ffe,0xba02f846,0xba77fc76,0xba2396eb,0xba3911ee,0xba80a192,0xbab62242, -0xbaab960f,0xbaf2a23a,0xbb18faf6,0xbb2dda02,0xbb180eb2,0xbad400b2,0xba35225a,0xba1fbb8e,0xbb0393a0,0xbaac9b43,0xba8b078a,0x38a68582,0xba6346dc,0xba70c93f,0xba74449f,0xb9fcdc45,0x399d6af7,0xba04d1e5,0xba28190e,0xba382470,0xba0a8747,0xb7af2f93,0x384d986d,0xb8dd1ede,0xb69dd752, -0x37163363,0xb7cad653,0x37a37130,0xb7f10f92,0xb5d22ce8,0x394461ab,0xb867af07,0xb9d56697,0xba8301ea,0xbaacddd1,0xbae4d226,0xbabccbe7,0xbaf0d279,0xbb300161,0xbb654bad,0xbb54f55d,0xbaf8ba50,0xb9f38552,0xba523d14,0xbb5defb8,0xbaded8a5,0xba8c3743,0x3a912a44,0xba2a0393,0xba453e21, -0xbaa3d2f0,0xb9abd860,0xb89e7bde,0xba83a2da,0xba3c7093,0xb99ae7be,0xb8d94598,0x37194b76,0xb87413c8,0x38038c75,0xb6020d78,0xb7863112,0x3785d21a,0xb71cce18,0x372eb9d0,0xb82fa0de,0xb89c67fb,0xb7d2b043,0x388008e3,0xb963b4dc,0xba8282ab,0xbaefda8e,0xbae22a45,0xbb3e05a1,0xbb86514b, -0xbb9d802e,0xbb86ac7f,0xbb271489,0xb9ef0a47,0xb9a51bd1,0xbb3e8ad4,0xbb01601c,0xba8cf33c,0x3a7b1523,0xba730825,0xbab2de86,0xba6619b7,0xb9631805,0x3a7cc9f6,0x3a99fc27,0x39862461,0x36dcb483,0xb906bf54,0xb7a22a1c,0xb80d627d,0xb76d652d,0xb788f2bc,0x370a27f5,0xb6db6a0d,0xb5af1706, -0xb51cd46a,0x378f8385,0x37b18dae,0x35d1bf77,0xb902bd66,0x3938fd08,0xba5173dc,0xbaca41f8,0xba87116f,0x39e2d728,0x3b3d3edc,0x3bcea5c0,0x3bbf543e,0x3ba105e4,0x3b10c7b3,0x3a60a7a6,0x3a098e29,0x3a6f96de,0x3a48e1f3,0x38f1e32c,0x3aa6225f,0x3b157006,0x3b7c6b1f,0x3ac68148,0x3ab3ca31, -0xba7f5b02,0xb8e41d6c,0x392e683e,0xb948a92a,0xb6a9622b,0xb78b81ee,0xb5ed01e0,0x36178ae0,0xb6b2c6e4,0xb59c072c,0x3622287d,0xb6231e52,0xb59de481,0xb822b4b9,0x379b86e6,0xb8cc7219,0xb796ced2,0x3969e66b,0xba382fc4,0xba990d9a,0xbb130081,0xbb4fae15,0xbb8bf956,0xbb8356f1,0xbb481850, -0xb9245a95,0x3ae8f0c5,0x3b3c9ee1,0x3a388636,0xba6ca6c9,0xbb20bc63,0xbb3db68d,0xbab95e77,0x3b16eab1,0x3ad7abcd,0x3b2986a6,0x3ba6bb0e,0x3b3071fd,0xb8a98d25,0xb88c1015,0xb71f7e46,0xb7ab2c9e,0xb6e99d87,0xb7028bb3,0x358434df,0xb62f65ab,0xb600aa76,0xb6558205,0x36b5cb99,0xb72a9427, -0xb8225411,0x3703c1ca,0xb904940f,0xb89d29dd,0x390320b6,0x39f64330,0x3a5212dc,0x3a49a263,0x3aa1202b,0x3aaffdcb,0x39bd5816,0xba8792a9,0xba967f31,0xbaf47aa7,0x3a95f555,0x3ae89c6d,0xb6456d4f,0x390dee49,0xb9d8adbe,0xbb6e8a00,0x3a47f2a3,0xba2ae524,0xbb29a754,0x3a096eab,0x3800c968, -0xb9056a8b,0x38819688,0xb7dbecb9,0x3779e5b1,0xb665b563,0x35e78f25,0xb55063c1,0xb58aa463,0x368c8246,0xb674e7c7,0x375cefb7,0xb8575f95,0xb7af7423,0xb8521830,0xba3fab18,0xba17d499,0xb7eeb4f6,0x39f228d4,0x39a0e4f2,0x3ae33d1d,0x3acc07a4,0x3a76bac4,0xbb078f32,0xbb07b9f8,0xbad7a25e, -0x3a9e3354,0x3b04fdf8,0xbab17f36,0xba060d16,0xbaf09cc4,0xbbb3a977,0xbac20ce3,0xbb8d4b70,0xbc4241fb,0xbb740bf8,0x3993b4e6,0x37b04a30,0xb8bc9b37,0x3778a787,0xb838d095,0x36a34c93,0xb6e0b58d,0xb6b3c8ba,0xb698dc33,0xb72d31ed,0xb74819fa,0xb6b8c7aa,0xb7e0f2cd,0x388b2730,0xb9507d31, -0xba57f38d,0xbab02a6d,0xbac11b59,0xbb0eca6a,0xbb235ce6,0xbb4eb70a,0xbb596803,0xbb20cd8e,0xbacdd9b7,0x39cfe741,0x3b7bd5ef,0x3ada77eb,0xbab661f6,0xbbbef881,0xbb873b5f,0xbb366731,0xbb0461ae,0xbb01669c,0xbb1ca452,0xbb6b96b2,0xbadf5a89,0xbaae2c7c,0x39f1b608,0xb98527a6,0x3892e183, -0xb7de6854,0x372bb095,0xb6cef00c,0x368a1ddf,0x36626617,0x37806b6e,0x378a5659,0xb6ebc4da,0x36f8b343,0xb906a6ed,0x38bbc552,0x3a6cce36,0x3adb266c,0x3ad82079,0x3af03fb2,0x3ab28ec7,0x3a25265b,0xb8ea19e1,0xba84f985,0xbae667f3,0xbb32f0d8,0xbb6cb5e6,0xbb3dcda5,0xbadbde04,0xba6e9454, -0xbafdb47b,0xbb38bc58,0xbb751e79,0xbb1ad9ed,0x3a231da1,0x3942704b,0x3a5da942,0x3a54940d,0x38558528,0xb89ad748,0xb7ad4d00,0xb8b803ef,0xb6ef2078,0xb84f026c,0xb4d5fb36,0xb7ee185b,0xb807ebc1,0xb7f12710,0xb8823134,0x37d35e8f,0xb8d4b090,0x3a18874f,0x3a89bd3e,0x3a8b8615,0x3a1461c7, -0xb89e167f,0xb99a731a,0xba94f6f7,0xbac307e2,0xbb1080d9,0xbaeafd6f,0xbacf6c38,0xba94f073,0xbac2536c,0xbadb265a,0xbabfa717,0xba806d70,0xb96a5730,0x39ecf996,0x3a21a066,0x39e63917,0x3a65d20e,0x39c3a4a7,0x37c22de4,0xb93fa87a,0xb891431a,0x381b6d45,0x3882a2de,0x36ce0542,0x37e23b4c, -0x36b039e9,0x37edfc1f,0x385f7e39,0x387df6b8,0x37feb471,0xb7394627,0xb900a264,0x376a1f6e,0x39608dff,0x39e6f707,0x3956b33f,0xb838e04e,0xb9d460ca,0xb9d939ba,0xba4859b4,0xbaa0264d,0xbaa7a6b3,0xbacaff04,0xbaec4078,0xbad0546c,0xba9570c4,0xba86c1ea,0xb9ecba5e,0xb9758b8d,0xb937027c, -0x3927704d,0xba91480a,0xbab89adb,0xbaaf12f6,0xba7b5f01,0xba54f248,0xba29952a,0xb9c25dc9,0xb8c24783,0xb918d4b6,0xb69ec710,0xb893eefc,0xb80e0e5d,0xb8e983da,0xb9782d95,0xb93bb9f1,0xb9b67266,0xb980dfbd,0xb93f2726,0xb98b5980,0x3770a3c7,0xb7ab5910,0x37e7d2b6,0xb8368137,0xb96692ba, -0xb9866d76,0xb930ce20,0xb994821f,0xb98e1468,0xb9a4c617,0xb9f34d5e,0xba37d2af,0xba6b0619,0xba862d8c,0xba909d1f,0xba809cac,0xba8b3517,0xba17eb96,0xba180bf2,0xba2680d6,0xba3d5da1,0xba41e1e6,0xba603867,0xba695aa8,0xba3f4ebe,0xba3422fa,0xba1ea9f4,0xba01ef8f,0xb9e694ef,0xb9b7f7eb, -0xb940d9b9,0xb9474f19,0x388050be,0x3a01254a,0x3a173c5e,0x3a9af534,0x3aa78cf9,0x3aa33b60,0x3a8a7c2c,0x3a87b62e,0x3a855ba3,0x3a6b0ad2,0x3a43c5ee,0x3a0ef88c,0x3996974c,0x375991b1,0xb902ce93,0xb988c5c7,0xb9d4ae40,0xb9d21d10,0xb9a2b9fb,0xb9f574a6,0xba24df06,0xb9853de5,0xb9c16755, -0xb9fb08f5,0xb950b93f,0x3997c57b,0xb9b00e27,0xb92d87fd,0x397ab6f2,0x399eaa7b,0x39b1e18a,0x39d249d5,0x39f509c9,0x3a13bfdc,0x3a1fc9c1,0x36e9d957,0xb8f9778e,0x3a27cd75,0x3893cd16,0xb8d08427,0x39017e3d,0x38c26419,0x38ed5370,0x38d9011b,0x38ba8b1c,0x38f291c7,0x39229a47,0x390d8203, -0x38eb4478,0x38f9cd3f,0x388bcd92,0xb793ccff,0xb8d46a24,0xb929eb2e,0xb9362e4a,0xb962bb51,0xb97cf5e3,0x396f1f85,0xb890c9d6,0x37fb7813,0x38dcf0bc,0x394a2292,0xb9b2a86e,0xba87de83,0x390006ff,0xb97b0a75,0xba3a6428,0xba6281dd,0xba75bd77,0xba6de2d8,0xba89bd7f,0xba9c8a00,0xba7ad313, -0xb9a95f11,0x383c6de3,0xba92bea1,0xb9d530df,0x384ee8fa,0x382c1b1b,0xb85d5ad8,0xb837f5f0,0xb8fc79d2,0xb918d250,0xb8ecd5d7,0xb7972509,0x38b943a0,0x38f8245a,0xb8178532,0x389cc2b6,0x39058df8,0x3993db8c,0x39366295,0x39077a99,0xb7b35f7f,0x38bb5fa3,0x397afd2a,0x39d03ab5,0xba2c4cc4, -0xb983f942,0xba0a884d,0xb99ed7a6,0xb9392578,0x39006310,0xb70c5f53,0xb8e44bc2,0xb9820769,0xb9be4a39,0xb9f0fc31,0xb9bc8c26,0xba92cfd1,0xb9e30c29,0xb9cd9bcc,0xb9b90c03,0xba0feb8c,0xb815f8e1,0xb88e36a3,0xb87257f3,0xb997f715,0xb99388f4,0xb90fb8f3,0x387d723c,0x3a02a85b,0x39b56697, -0xb9d8db4c,0x3911eb96,0x3a05b635,0x3a915d8d,0x3a37f99b,0x39d68163,0xb96058d8,0x395e5782,0x39788881,0x39129f7b,0xb902c982,0x38e4849a,0xb998607c,0xb94c6276,0xb85ab7c0,0x39556eb6,0x383a285e,0x395bbb5e,0x3930917a,0x39a0f1b1,0x38eb81fb,0x39a735fc,0xb8986146,0xb9927825,0xb9176620, -0xb9abf703,0xb9875ebd,0xb9f6f080,0xb85ead27,0xb9c8e72c,0xba36d950,0xba6439e8,0xba26193e,0xb8843360,0x3a34d17e,0x3a3aa5d8,0xba1658f9,0x39b20c24,0x3a475f8e,0x3af2f14b,0x3a86cca8,0x3a2708d2,0xb986ecae,0x39cde18d,0x3a2e378f,0x39d7ceda,0xb7a4ebf1,0xb984902d,0xb92ad41b,0x38a336fe, -0x37e4f70b,0x381f1b9f,0xb7d45c86,0xb80686b8,0xb881007e,0xb8888e33,0xb7ac6848,0xb8025bc5,0x390a8a57,0x390bca25,0xb7eeed1b,0xba0f1eeb,0xba227117,0xba58bb0f,0xb89c9f86,0xb9ad4829,0xba440a82,0xba90d971,0xba2fdac1,0x39a69160,0x3aad3634,0x3a6a4601,0xbac4c0b8,0x3a0b6ab7,0x3ab744a6, -0x3b5f7669,0x3af1fe77,0x3a8bc6ce,0xba3a2ca7,0x39e40a27,0x397e08dc,0xb96271f1,0xb8bac2ef,0x3824af55,0x3919b989,0x381110ee,0x36f8e643,0x36585b25,0x3745f90f,0x38150b95,0x380bc791,0x37ed23b7,0x37af407b,0x37f77a4a,0xb7e14d68,0xb6bd9244,0x39192e0a,0x3838f27e,0xba2a50e2,0xba54185b, -0xb9b5cf98,0xba612de1,0xbad33869,0xbb0a253d,0xbac3114e,0xb9f8ee7d,0x3aa95f79,0x3aa8fecf,0xbaa1fa91,0x39cd27ab,0x3ace48df,0x3b5889a2,0x3afab33a,0x3a306182,0xba0b10df,0x39f36f95,0x3b048937,0x3b3e5bc0,0x3a8b06f3,0x3829ac86,0xb7362a24,0x378c549b,0x37f43e7d,0x37547355,0x36a8852a, -0xb7303b9a,0xb74b248b,0xb6e6d9d4,0xb75d1b8e,0xb55cc898,0x374afc69,0x38911968,0xb8d67376,0x399eb31f,0x38b9b0e7,0x381d016f,0x3a51657f,0x3ad6e1f6,0x3b4a38f6,0x3bc74e9a,0x3bb308c5,0x3b76686c,0x3b099076,0x3ab8332c,0x3af963dc,0x3b2e4591,0x3b4bffbb,0x3b446fe7,0x3b784f6d,0x3b8c0740, -0x3ba05d85,0x3b345d1f,0x3abab6f8,0xb946e60a,0x398f01db,0x39bd17f6,0xb87e8a4a,0x38e6aef7,0xb7d12bfb,0x37d15df5,0xb6883bd8,0x377b478b,0x36cd542a,0x36e0d055,0x36b7cece,0x36f8f2f2,0xb636eea3,0x3830f23b,0x3801399b,0x3849d920,0x37f52300,0xb9004b1b,0x38f1ee1d,0xba01555b,0xba300919, -0xbb2ed779,0xbb28e26a,0xbaf86ffa,0x3a3074d6,0x3b0c2dec,0x3b35ddfd,0x3a9fd104,0xb85265fc,0xbae62b14,0xba932a81,0x38ca31cf,0x3b28ac6d,0x3b1345d5,0x3b2482c4,0x3ba3b741,0x3b32fbbf,0xb981064e,0x391168c9,0xb7630429,0x3704027a,0x3720d057,0x35982692,0x361fb53a,0xb6055dc3,0xb4af5df9, -0x35cb2424,0xb6b2de63,0x37d7afe1,0x376d4831,0x38136b15,0x37bcd0cc,0x39a739ba,0x3a6874b8,0x3a882645,0x3acf1f9d,0x3ae2e751,0x3b2e4663,0x3b3ec3d0,0x3b05687f,0x3a15b79d,0x3936f4d8,0xba7170c2,0x3b06e04c,0x3b675065,0x3b47df00,0x3b5f16bc,0x3b2950a4,0xba9560e7,0x3ac1299a,0x399107eb, -0xbb09e51e,0xb8fb6139,0x38c97fb8,0xb8e497ab,0x38a1d0c2,0xb69af671,0x374a9426,0xb6110593,0x365aff3b,0x34e39971,0x36626af2,0x35e78419,0x35f28e7e,0x35770ed5,0x3812fa5f,0x374c5a82,0x38c5364b,0xb9f59611,0xb7a20eb2,0x39c0d578,0x3a9a5744,0x3a8c4130,0x3b526b6e,0x3b5cf3f8,0x3b34c452, -0x39c66ba6,0x3909a3a9,0x39aa11d2,0x3b20b2be,0x3b6f1362,0x3b0e54c4,0x3b76fe25,0x3b42a443,0x396bba4d,0x3a3a4f7a,0xba9f227e,0xbc183ff1,0xbb34d108,0x39fa6260,0xb6b28cfd,0x37e47954,0xb6811cb6,0x36bd9e7f,0x3707a343,0x3600c1ca,0x36e929d3,0x3642461d,0x36f2f453,0x360437a4,0x37074e85, -0xb6860c2f,0x3848d30c,0x381d9267,0xba2346ae,0xba92d35d,0xba466cfd,0xba8723ff,0xba898008,0xbae0fb43,0xbb0781f2,0xbac35e3a,0xb9a1641a,0x3acb1514,0x3ba3c3c2,0x3ae7be23,0xba4eb97c,0xbb88c014,0xb8a3b493,0x3b1a6db9,0x3b8dcb2b,0x3b049ff3,0x3b163fc3,0xbb4c4580,0xbb536977,0xba28a805, -0x393fdd4e,0xb85c1a20,0x389e3102,0x3651e301,0x3695ecdd,0x34f01aa3,0xb6765de7,0xb6a00f52,0xb6f35cf6,0x371def5f,0x37292857,0x38207d7f,0xb8a003bf,0x389ea275,0x3a9574ac,0x3ae8b744,0x3adc35d4,0x3ace94af,0x3a988fa3,0x3a40bb9d,0x39f858a9,0x39ab0514,0xb898d063,0xba20357f,0xba286a59, -0xb9dcc53c,0x3a4a4b17,0x3b0b061b,0x3b05e427,0x3add83cb,0x3a8e1940,0x3b240cdf,0x3b127ec2,0x3acaa9da,0x3a833a6e,0x3a3c8270,0x36160bca,0xb70e7a3f,0xb712c1d0,0x36ea2d84,0x3815f664,0x37f7ef6d,0x37b1c2e4,0x381176e5,0x3760369a,0x37cf0ae0,0xb85ee3a0,0x38a9fd93,0xb847eb73,0x3a16872d, -0x3a819c73,0x3a8f60d8,0x3a60f0cf,0x3a0cd5a1,0x39e3b4cb,0xb854f83f,0xb9b17da1,0xba88e4c7,0xba72d0d6,0xba84d135,0xba79cb7d,0xba8d45ac,0xba57c772,0x399730ef,0x39cb1288,0x3a9bcfd9,0x3af56d7a,0x3b090e38,0x3abf6edc,0x3a8b587a,0x3a83054b,0x3a036da8,0x382256e7,0x390f1a51,0x38f7ae2c, -0x374cd1d5,0xb7d9dd98,0xb789c15b,0xb7fb096f,0xb829dda6,0xb7bacd70,0xb6cf9131,0x38bc382a,0x38880d1b,0xb8b65f65,0x38e1b7eb,0x39ac7d16,0x3a0d0e2f,0x39dbdf9d,0x395a7930,0xb920aa8d,0xb804eef5,0xb9b350d2,0xba5b725d,0xba4d1829,0xba81b75a,0xba9b9bc8,0xba4dd720,0xb905f901,0x39f50037, -0x3a1ccb55,0x3a0d92cc,0x3a1bc594,0x3a4826d1,0xb9cc8b79,0xb9d099d7,0xba609f8d,0xb9e53bcb,0xb9dc1ecc,0xb9c131c0,0xb903ed1e,0x38e8a085,0x390c6e07,0x38f315b9,0x38bdbaa6,0x393c2bba,0x385ec4d5,0x38e8674d,0xb9309cc3,0xb931c2a7,0xb9151f0e,0xb9029890,0xb95934ec,0x39912fcb,0xb89cf191, -0x3794514f,0xb923e2a3,0xb9cbddab,0xba002e26,0xb9dfa124,0xb953c8d4,0x38c30532,0x39d113fb,0x39c8a618,0x398210e2,0x3922ff21,0xb81e7a48,0xb8691299,0xb85b7f15,0xb9373dae,0xb90ad771,0xb90ec8ff,0xba2deb14,0xb9b9e7f2,0xb9a94dc6,0xba0f809c,0xb9c9469e,0xba2742ce,0xb9d69c66,0xb9dd2ac1, -0xb9c63949,0xb9a3758d,0xb93a4b03,0xb915d821,0x38dbb769,0x399be573,0x39e13fa9,0x3a5317f5,0x3a92e265,0x3a856d4b,0x3a737ad9,0x3a5b097c,0x3a561aa0,0x3a5be50b,0x3a483047,0x3a268ad1,0x39df4f86,0x397298d7,0x38a4bdef,0x391f2ede,0x399616be,0x3a00c299,0x39c10fec,0x39895835,0x387811da, -0xb88f1654,0x389bcd4e,0x387fb9c6,0x38bd6727,0xb903fb9c,0xb9b7abdc,0x3952658a,0x3882f31d,0xb99f5cdd,0xb9a4406b,0xb9899f48,0xb9663f97,0xb95a7b34,0xb96bd1fa,0xb959aea9,0x39967b42,0x39dcada0,0xb84ab499,0x397f5b2b,0x39baee4c,0x397b7aac,0x398cb124,0x39883789,0x396b4e9c,0x393f06de, -0x39429ead,0x396af11c,0x39969db9,0x39c21b9b,0x39e8648b,0x39e5266a,0x39afb39f,0x39955cec,0x395e1191,0x395db160,0x393e9bf9,0x390d5bf7,0x3a1525b4,0xbaa025cc,0xba515743,0xba8decaf,0xba5177df,0xb918fc11,0x39a1852e,0xba469b56,0xb9603781,0x39fb8b8f,0x39cd7319,0x39b45e7a,0x399a15f4, -0x39516e4b,0x398da0f2,0x39a06a13,0xb97ef209,0xba390ab7,0x39d39d06,0xb8e97f5d,0xba24b475,0xba84198f,0xba76b6cc,0xba87d5f3,0xba9074ff,0xba93ffd9,0xba8d7b5a,0xba7a256e,0xba610c2b,0xba5d9069,0xba81f2e3,0xba73a973,0xba60cfa6,0xba41c9fe,0xba5c1631,0xba5aa032,0xba55183b,0xba50b713, -0xba43a9dc,0xba923844,0x3949e3ce,0xba240467,0xb960fecb,0xba29164d,0xb9dec3e1,0x39162d4f,0xb92e33af,0xb91ae8d8,0xb8a32e27,0xb99fc053,0xb9dd615d,0xb993dad9,0xb95ddebf,0xba559f50,0xb9cfba72,0xba190bb6,0xb9ccc9d8,0xbaa5e186,0xba9e4579,0xbaafc663,0xbad95184,0xbacbddeb,0xbab9d3d8, -0xbab3055b,0xba760787,0xba92db45,0xbaed1b2f,0xbab9899c,0xba89518f,0xba0e32cd,0xba781faa,0xba8a62fa,0xba9029dc,0xba58a649,0xba51885b,0xba946baa,0xb9983d2f,0xba2fe4c4,0xb9950ad1,0xb966b61c,0x38faed4e,0xb8b73635,0xb6bc75db,0xb8c13026,0x36f89b18,0xb920c408,0x38b07b51,0xb58cfd50, -0x389b918d,0xb9a1a5aa,0xb9e45d76,0xb9a9b860,0xb9bf47fd,0xba9a11a5,0xbacef7f2,0xbaf7524c,0xbb219f23,0xbb1dff8e,0xbb09db2b,0xbace443c,0xba684d6d,0xba6d449d,0xbb117d44,0xbabc7522,0xba96cbd2,0xb909f666,0xba6cf88d,0xba67ec81,0xba559a07,0xba284b9b,0xb9c7aaaf,0xba6ad423,0x385481fe, -0xb9b952ee,0xb88282bb,0x38a5ebbe,0xb463b3b6,0xb8ab906b,0x378d5901,0xb73a42e8,0x36895809,0xb61905bd,0xb825f424,0xb89b64d1,0xb7bfdddb,0x38b300d5,0xb7a440ac,0xba21fe89,0xba243f68,0xba9daf47,0xbae29a0b,0xbafa6bf7,0xbb3b5dc6,0xbb440370,0xbb31d6eb,0xbae6a6c3,0xba55d0fe,0xbaa3b9dd, -0xbb686e6a,0xbaf1238f,0xbaa33779,0x3a227c02,0xba5fbbf0,0xba6e7f50,0xba9a8cf7,0xb9fb3f89,0xba3bd3a0,0xbabbab14,0xb973d8ab,0xb8b2193f,0xb6ca1e28,0xb864417b,0xb79d896d,0x37869e9e,0xb73ff82e,0xb7011102,0xb73d3489,0xb5d85c82,0x360f3d67,0x374d35a8,0xb72489cc,0xb8ec0cdd,0x38a1316c, -0xb93b9726,0xb94ea262,0xbac7410b,0xbb080a60,0xbb41d4da,0xbb883520,0xbb8793d7,0xbb6023af,0xbb155a62,0xba397d22,0xba6b5e1f,0xbb58325a,0xbb0c44da,0xba961f5f,0x3a2e2f4f,0xba4d25d3,0xba8309bb,0xba238153,0xb9b8b01d,0xb946ce1a,0x3a104dc2,0x3a2ea439,0x39271d82,0xb8671806,0x380e2573, -0xb802a932,0xb7000da7,0xb72914cc,0xb5b0c98f,0x363c4d00,0xb6a482f2,0x355feeac,0xb7947794,0x36b9ddf2,0xb70c8089,0xb6312367,0xb88ad525,0xb76b5ef9,0xba603702,0xba16c7b9,0x3a341744,0x3b0e3667,0x3ba065b5,0x3b81f16b,0x3b23205a,0x3975e631,0xb9b2faba,0xb94ceb75,0x3a231847,0x39c1d6cd, -0xba839302,0x3a1e7cea,0x3a9bd5ac,0x3b118351,0xb8c3c5e8,0x39c83d48,0xba91a657,0x3a0c611f,0xb9b63bc7,0x38f92925,0xb8e206a8,0x380ad5e7,0xb7e0b623,0x3702ef3a,0xb7188d97,0xb47664a9,0xb62fdd87,0x368a4941,0xb65e816b,0xb6d37230,0xb880cb6d,0x374a2f65,0xb90cef9e,0x39c5e49e,0xb99e3754, -0xbada126b,0xbb26ab65,0xbb6f6672,0xbb89e101,0xbb58c81b,0xbacf8d74,0x3a5fdd40,0x3afc279a,0x3ae66624,0x39b6183e,0xba1f2d58,0xbad214d9,0xbaa64ef9,0x386ade03,0x3b27bc7c,0x3ace7878,0x3adeb5fa,0x3b726f29,0x3ae51077,0xba08f4a2,0x392f4e14,0xb8d75fc0,0x382b3734,0xb7f60759,0x370ebcda, -0xb702fcac,0x36288bda,0xb6bafe10,0xb628a5d8,0xb6889d48,0xb7150135,0xb7b7d75e,0x3783d87a,0xb891fc80,0x387da75a,0xb84b045f,0x3958e359,0x3a43f1dc,0x3a4e60bb,0x3a6b9275,0x3a39e03d,0xb9e0115a,0xbad34711,0xbac20240,0xbad970eb,0x3a023e94,0x3a47d4b5,0xb9a7dd67,0xba157c9d,0xba8de868, -0xbb4802c0,0x39f569cf,0xba2af625,0xbafba70a,0x38f46660,0xb89fc108,0xb87a607d,0x38577d2b,0xb7e48e87,0x367e97bd,0xb70344e2,0xb6195362,0xb6086f03,0xb61a1ed3,0xb4b6baa7,0xb5f64905,0xb619ede4,0xb7b83467,0xb83feb7c,0x3701295f,0xb9c99ac4,0xba0a4a37,0xb924afab,0x3a20c2a0,0x3a21c0b4, -0x3ad2b5d5,0x3a8fb20f,0xb96537e9,0xbb115a8c,0xbaf6b9c0,0xba60a36d,0x39a5cb6b,0x3a002644,0xbabfad22,0xba923142,0xbb054ff3,0xbb781e42,0xba9d8b95,0xbb4a22dd,0xbbed2f25,0xbb141cbb,0x3a23f48b,0xb8d4cda2,0xb8656a30,0x367c76ba,0xb6eec2c1,0x368a583c,0xb5a8c3d5,0x34ab7b23,0xb687967f, -0xb66c997a,0xb6db8b0f,0xb6e23143,0xb7249a49,0x3716e0c1,0x3795285d,0xb9f1a837,0xbab06e07,0xbabca03e,0xbb0bc29d,0xbb213838,0xbb2d0bce,0xbb1fe6c2,0xbad34128,0xb9ae7050,0x3a910f4b,0x3b84b27b,0x3a0f5b18,0xbafc7213,0xbb8d00a2,0xbb2bcd88,0xbaa349eb,0xba261142,0xbac34d05,0xba8bd641, -0xbb974e7f,0xbae1f02a,0xba54890e,0x39cc3000,0xb8f78381,0x38147137,0xb8372f8a,0xb61803a8,0xb747d953,0xb4de248f,0xb59b78c1,0x3608f8ff,0xb63ebece,0xb71716e7,0x371f3ecc,0xb86c3751,0xb8e8484d,0x3a3e2336,0x3ab98f35,0x3a972f76,0x3ac12b92,0x3a6a40c1,0x39e45ef2,0xb94b24bb,0xba907e0b, -0xbac89db8,0xbb0f9396,0xbb2d5eb1,0xbb0c7ab6,0xbaa365cc,0xba2f4521,0xba6050da,0xba834634,0xbabbdc9d,0x3913a8b1,0x394fe15d,0x395c9635,0x3a9b5d25,0x39fdda93,0xb8fbef7b,0xb710d744,0xb75e18c7,0x3749ed6a,0xb6bb5fe2,0x34150b24,0xb74f9b60,0xb73b5e57,0xb7a7baec,0x3525a76a,0xb81f40be, -0x3778a21c,0xb8ff96be,0x399befdb,0x3a84977c,0x3a826855,0x3a06c9fd,0x3769d8ea,0xb8e2c922,0xba2a57a6,0xba60a169,0xbabd0b4b,0xbaa722ae,0xbaa06488,0xba669302,0xbaa21bb1,0xbabfd47f,0xbac275ae,0xba9ff586,0xba18a03a,0xb8a587da,0x388734a8,0x3895f685,0x3a9e6aaf,0x3a3412ce,0x39bbff60, -0x3808bf59,0xb8125c6f,0xb79b15e9,0xb8778566,0xb80e4cc3,0xb7ea3195,0xb6997ad8,0x36835655,0x3720b554,0xb7078dad,0xb78ff9e0,0x384e8b83,0x376268ac,0x372c91f5,0x38a001af,0x39cf876b,0xb872624f,0xb91874bd,0xba02792e,0xb9d7e65d,0xba45a78a,0xba9d4cdd,0xbaa5ccd4,0xbac2cc84,0xbad4a845, -0xbab5a4a2,0xba85e083,0xba7f8b10,0xba2157a2,0xb9f88ad9,0xb9c5cf93,0x38ae4971,0xba2f46ab,0xba692461,0xba036dd4,0xb9e4c230,0xb92705ae,0xb8603255,0x3893b9b2,0x388eca3d,0x386135b2,0x37d37b1a,0x37b41724,0xb85e3728,0x3722f5fa,0xb809a9c9,0x3893b866,0xb92438cc,0xb984d3ba,0xb9aac93c, -0xb9909f7d,0xb9d1629f,0xba0d5a8c,0xb9bb7ab2,0xb9f0bd43,0xba23c64f,0xba2fc45d,0xba13ebcf,0xba161055,0xba0529a4,0xba059f84,0xba1f4984,0xba46372b,0xba61c6c7,0xba5e6407,0xba4c5b78,0xba38c257,0xba29a96c,0xba1ce1e9,0xba0cf916,0xb9796aec,0xba264eec,0xba1c9f2e,0xba35c192,0xba348ba6, -0xb9db8418,0xb9d976fc,0xb9a4a65b,0xb972d8d7,0xb94408e4,0xb96801ff,0xb921315e,0xb99bda8e,0xb916eeca,0x398e1275,0x393795d0,0x3a6f724a,0x3a243cf1,0x3a324e3a,0x39e33da4,0x39dfe5be,0x39d49554,0x39a0daa7,0x3942a955,0xb8af58be,0xb995a3fd,0xb9fe3754,0xba1819c6,0xba24c9f2,0xba4236d3, -0xba3a0787,0xba23e48a,0xba2e8a2c,0xba3edd09,0xb9f07fd7,0xba17dc73,0xb9d24fdb,0x375950ea,0x39af5c12,0xb9a88f27,0xb869b484,0x395f56d6,0x3979ad67,0x3986d026,0x39943cfd,0x39b259f4,0x39e4d523,0x3a086bf3,0x38b7af09,0xb97300fe,0x3a160deb,0x38e4266d,0xb98b0242,0xb9bbd00b,0xb9b0b9df, -0xb9abd2dd,0xb9b29e6e,0xb9c04ad1,0xb9b3ed7b,0xb9993394,0xb997fa72,0xb98ee3f1,0xb98ce0ec,0xb9a1da22,0xb9c18dbb,0xb9e2dbae,0xb9e5e51d,0xb9de3c85,0xb9e52c8d,0xb9e92d95,0xb9a5e7df,0xb950a3f7,0xb7b50eb8,0x3945a1f6,0xb98d8d7a,0xba5f3692,0xba89c837,0xb952bf51,0xba2bd263,0xba561f19, -0xba75540b,0xba8235b1,0xba787917,0xba8dbe90,0xba9d87b2,0xba844e96,0xba48eda2,0xb9a5a85d,0xba8d95f7,0xba58f2f4,0xb9b450f5,0x3911ded7,0xb8a7ae05,0xb8bc9ef1,0xb918ecad,0xb8efcad6,0xb8a90cb9,0xb805c80f,0x382d1274,0x3843e20d,0xb8bdd147,0xb63ae428,0x3849d290,0x393e3308,0x3880de72, -0x380c4b03,0xb82267fa,0x37e8c676,0x391d2e5f,0x38540fb2,0xbaa31b2d,0xb9b67804,0xba38ee30,0xb9fed148,0xb9c326b4,0xb8a0f5b6,0xb8e096e8,0xb9769226,0xb98fa9d6,0xb97aecdc,0xb9615d80,0xb9a96a18,0xba75baab,0xba11e1d7,0xba304acc,0xb9d1f91e,0xba603b21,0xb943d17f,0xb8c57b2b,0xb9515ebd, -0xb9bb4a0d,0xb984312d,0xb9098718,0xb88da7c9,0x39768482,0x38bff237,0xb9f9686a,0xb80aadca,0x3989095b,0x3a439183,0x398702fb,0x3831da36,0xb9813728,0x3788031d,0x395dd9e6,0xb939be71,0xba23f03e,0xb810a39a,0xb9eeb9a8,0xb884a7f6,0xb85e4808,0x3902dc96,0xb76af3f2,0x393a63ac,0x379442ce, -0x39785cf4,0x38456ee3,0x390693f7,0x3897418e,0x38b4b949,0xb987e2a2,0xb9b48d16,0xb9e191c2,0xb9d47447,0xb8cbf60b,0xba120e34,0xba43e94a,0xba2a7987,0xb9c7a9a5,0xb9074c0b,0x39cc303f,0x39ab1222,0xba3e75b2,0x380b00b5,0x39b58eb5,0x3aa28059,0x39c27460,0x391ea0f9,0xb958a61a,0x390d45c0, -0x3a135331,0xb924959f,0xba3a81ae,0xb9d1b4c4,0x36c5fb23,0x38952def,0xb7cb59fa,0x378cff86,0xb7c690ab,0xb7ddb2e0,0xb83a89f1,0xb80d269b,0xb8472981,0x374bbc42,0xb8850456,0x3815f137,0x38dcd503,0xb986e128,0xba3184d9,0xba4711fc,0xb8d0b534,0xba122916,0xba772e36,0xba519c53,0xb9e9ef0f, -0xb849892b,0x3a2c4300,0x397f7fad,0xbac64fd6,0x38e8c562,0x3a339816,0x3b1b35c1,0x3a24a634,0x39332b38,0xba0b2741,0x381b1a96,0x3979129e,0xb9e3fea7,0xba005ce0,0x390020a3,0x3866501a,0xb7f72f7d,0x37ae8bbe,0x36af5f99,0x37478e3d,0x37d31868,0x380d309e,0x37c8e8df,0x37cd683b,0x37e48e3d, -0x381d0388,0x37a95ac0,0xb823c778,0x398b42a7,0xba235cda,0xba2ec426,0xb9d24c7a,0xba9f2d18,0xbadebed9,0xbacea070,0xba76a7e7,0xb9d0b704,0x3a5b9210,0x3a1a22c1,0xbab66723,0xb90479e3,0x3a416f6d,0x3b0e4d7e,0x3a28048b,0xb86d61fc,0xb983c497,0x393e7fde,0x3a8ceb74,0x3b0a1939,0xb8474a57, -0xb957dd46,0xb824a971,0xb63f4b59,0x375b409d,0xb5358930,0x3679dc2b,0xb6f0e47f,0xb71fd978,0xb7165d50,0xb72da70f,0xb52948ea,0xb7b48ebc,0x3885ce15,0xb8bf8d34,0x3915d6c0,0x3723364c,0x399b1572,0x3abe8739,0x3b0d8ea6,0x3b62ce0c,0x3b9e5e00,0x3b83dcf0,0x3b251de6,0x3ab66652,0x3aac9105, -0x3aeeaf15,0x3b32d4a9,0x3b31f4b8,0x3a98adc5,0x3b1d34f5,0x3b30fa69,0x3b46b1c2,0x3abe26c0,0x3ac2f7b8,0xb97d2910,0xba269187,0x39979c83,0xb8d46b50,0x38755a1f,0xb750accf,0x3614647f,0x3694a1f0,0x36e26bfa,0x369bc3f7,0x36ee66a1,0x3638734b,0x374b8304,0x3713ffde,0x382fb515,0x365de277, -0x384b8d23,0xb95671d1,0xb9bd62ff,0xb9d2fef8,0xbaa79c0a,0xbabf6d82,0xbb2b865b,0xbb07e067,0xba858b60,0x3a72f73c,0x3af01a09,0x3ad7fff4,0x3a2adb85,0xb9a16225,0xbacaff48,0xba2f93ee,0x3a1144aa,0x3b1be69f,0x3b005f14,0x3ae00d89,0x3b631ac0,0x3aaeec94,0xb9de25fb,0x39466ad7,0xb860b3cb, -0x37f49d09,0xb63fc3bc,0x368e6933,0x34883a89,0x3318be83,0x34de6495,0x35b4e53a,0x33e0e389,0x36965816,0x370d256a,0xb6d8f3a3,0x375ef60d,0x379fa301,0x3a2a661e,0x3a64318b,0x3a9e4bc6,0x3abf9468,0x3b01c12e,0x3b096b5b,0x3a8712ff,0x395e997f,0x38c1a31e,0xb8fe5b97,0x3af85efb,0x3b27f1be, -0x3acfb1fc,0x3a98b22e,0x39eff942,0xbab36785,0x3a644ca5,0xb993a163,0xbac6cd5e,0xb9b6b5cc,0x37bdabae,0xb892eff6,0x3829314d,0xb742dd32,0x36cb7715,0xb616614c,0x3642def4,0xb660b6c2,0x366f73b8,0xb6a6758a,0x371f476e,0xb72a05e3,0x383b77f8,0xb81798df,0x390f0fb6,0xb9d62bb0,0xb9a493e7, -0x3a142f4e,0x3a966ead,0x3a9f538b,0x3b2d7d89,0x3b207561,0x3aa213dc,0xb895b61c,0xb88ee9e7,0x3a3e30ba,0x3ac65f4b,0x3b0b6f3c,0x3ab6180c,0x3adceb0a,0x3a71b3a0,0xb9a4892d,0xb8989c09,0xbab56cca,0xbbb70eeb,0xbab7fc8d,0x3a4a8894,0xb990aa1e,0x392ab8d2,0xb83bbc9b,0x380e2e35,0xb67a7a23, -0x3719222f,0x35fa2ba2,0x36d9430a,0x36d71f45,0x371bf0e8,0x35c8603b,0x365e4802,0xb818c310,0x38f44912,0xb9ce7407,0xba541325,0xba1948f5,0xba7e9ac5,0xba8bc360,0xbac3904f,0xbacf3515,0xba8e4dc4,0x397c9127,0x3ab172db,0x3b67e034,0xb898a226,0xbafa2669,0xbb2bc4de,0xb9879cb2,0x3ad62d43, -0x3b636051,0x39b68ca1,0x3b104927,0xbb93c661,0xbb45d9b6,0x391eb33c,0xb8dbf8e6,0x37ecb1d6,0xb780a02f,0x36ce3df3,0xb7a66856,0xb626c1fd,0xb753af0d,0xb708ce87,0xb75cfddb,0xb43d1859,0x36601312,0x3681f386,0x38acee41,0xb922847b,0x39fd7d96,0x3a9725ce,0x3a938129,0x3a854319,0x3a33e30b, -0x39bf13ec,0x385697ea,0xb9ba25a5,0xba3d7de4,0xba8c55be,0xba8354de,0xba00e2e2,0x3a05abb8,0x3acab340,0x3af2ef76,0x3afa9deb,0x3b035cc5,0x3b408842,0x3a84a8d4,0x3a273b93,0x3a173b94,0x388b7047,0xb8b69017,0xb64e065d,0xb6100293,0x37f9baf5,0x38029a25,0x37f0c991,0x3801bf64,0x380e93d4, -0x37d58da2,0x37c4e3dc,0xb64b1ea9,0x37cc39cb,0xb8ab53ae,0x392229a6,0x3a4bbdc7,0x3a8a6d80,0x3a5ab1d3,0x3a1858c8,0x3a0ba8e1,0x37bd1218,0xb96389c4,0xba3fb341,0xba2f8bd6,0xba3249fd,0xba1725ea,0xba3c1321,0xba1e2936,0x390c18b5,0x39080ad4,0x3a12bba4,0x3a67bc8f,0x3a5360e4,0x3a8e4b91, -0x3a3f08b0,0x3a184a56,0x397f1521,0xb91ccf14,0x392c9a3d,0xb83b54cd,0xb72f73d3,0xb8805133,0xb7adba4e,0xb84c9f71,0xb81857d4,0xb85adb53,0xb6d8a882,0xb6ecfe4d,0x383cc0f1,0xb709a61c,0xb813fd24,0x3898bd91,0x392705d6,0x39ab2e3f,0x39065e6b,0xb915ec3d,0xb87f813e,0xb9b71cc5,0xba45dc6a, -0xba44387e,0xba6d2fd8,0xba816c9b,0xba15d8b8,0xb8760895,0x39c75a27,0x39a8169b,0x3964c895,0x39c17bd8,0x3a02ad2a,0x37d8484d,0xb7607d83,0xba1c5629,0xb923aebc,0xb95976c1,0xb9160e2f,0x38227f77,0x38d96294,0x38ffcb6b,0x38c0043f,0x38894412,0x391c8fb2,0x3892cc89,0x38e456fd,0xb7e3314e, -0x376f6d9d,0xb91e7e88,0xb9816337,0xba1338be,0xb9269857,0xb9923647,0xb98a067e,0xb9ae56e9,0xba124bcd,0xba227a74,0xba183574,0xb9bb8685,0xb919a70f,0x3663f20b,0x37ce9202,0xb826ca14,0xb77c1714,0xb77f52fb,0x38959a74,0x38b0aa07,0x382d297e,0xb98dac5c,0xb93a789d,0xba4392a7,0xb9bd1e1a, -0xb9d8eb39,0xba0a01d4,0xb9935eb6,0xb9ce3af1,0xb9320621,0xb9ade1da,0xb9a63116,0xb9a283fa,0xb949c47a,0xb96fa2a2,0xb97b0470,0xb95c61b1,0xb92b4afc,0x3980b71b,0x39e34451,0x3a1e5f4d,0x3a037a88,0x39c33119,0x39b5ab42,0x39b31359,0x39901c47,0x3930b844,0x37b86447,0xb8767a6c,0xb8dc2000, -0xb7fee663,0x38b7bee2,0x3932b681,0x38680af8,0xb88468ed,0xb9253348,0xb96444c5,0xb8406df3,0xb834fe8c,0xb990833a,0xba04de2c,0xba0baa3c,0xb933b028,0xb9da1a87,0xba27fb67,0xba32b67d,0xba1e64ea,0xba127749,0xba146939,0xba1c4552,0xba15367e,0xb98fd845,0xb729797c,0xb9adebfe,0xb995c051, -0xb904cd85,0xb6a4625e,0xb7b65308,0xb7d50321,0xb857cb6f,0xb8b1c17e,0xb8a73ee9,0xb8428ff3,0x3606129f,0x38869373,0x38d14dbe,0x38b14864,0x37f434cd,0x3730400d,0x36728176,0x37aed532,0x3777eecd,0xb73bdb5f,0x3806cb90,0xba220b85,0xb9e1718d,0xba304de4,0xb90f05ca,0x39597396,0x38d1050c, -0xb948242e,0x390bb090,0x39b1da04,0x397c38b4,0x3941fad4,0x390b7d9b,0x38724c56,0x386f7325,0x3869d444,0x38d27a51,0xb90c1143,0x38a82547,0x3959f770,0xb88ad32c,0xba1d3082,0xba0984b8,0xba16ee94,0xba261e26,0xba216c2e,0xba1853b2,0xba0727bd,0xb9edbd89,0xb9eaa2f9,0xba12b166,0xba00ce3a, -0xb9e298a5,0xb9ab2f9b,0xb9cfa206,0xb9ce46a1,0xb9d47f9c,0xb9d4c7cc,0xb9e26fa0,0xba0a9874,0x39aa9996,0xb9910d3f,0xb8b5ddf5,0xb95fe5ca,0xb666681d,0x393c7672,0xb71598ae,0x38de6ee0,0x38fbcc26,0x38dfca79,0xb7fdf1ca,0x388c5555,0x38dfab0c,0xb9791276,0xb94c28ec,0xb94bc066,0x38a42a7e, -0xba091077,0xba347590,0xba3faed9,0xba79f8b9,0xba507c25,0xba324606,0xba2ce3d0,0xb9eb7f8c,0xba1cb5ca,0xba8d1d48,0xba3ffd86,0xb9eb9fd0,0xb84918f8,0xb9aecdce,0xb9e829b5,0xba0e67ba,0xb9c1e3f4,0xba02030d,0xba241c18,0x3904c8db,0xb98654c8,0x38be06b6,0x38f84ee2,0x39314c76,0xb894fd59, -0x387e7106,0xb86960e6,0x38a8ecff,0xb8ae036c,0x38984151,0x383caba7,0x38a91fe7,0x390321c8,0x37a39cb6,0xb8a98d0c,0x38fa0c28,0xba12b1fa,0xba78f98f,0xba8daf07,0xbac3ab9a,0xbaa69b78,0xba8b829e,0xba4b9ee3,0xb9c7d696,0xb9e9a7bc,0xbab188b3,0xba37f505,0xb9d86963,0x39c0258e,0xb90f9c94, -0xb932cdc2,0xb99521eb,0xb96d2120,0xb99c6073,0xba17945c,0x3994aee2,0x37ea8bb5,0x390d5230,0xb7eced5d,0xb574e48c,0xb757f804,0x370eed85,0xb76c15fa,0x36a4f5dd,0xb7c7719e,0xb6214aae,0xb8751751,0x37d5cbf9,0xb89f7cdf,0x38dbcec6,0xb8a7a5d1,0xb88f91fd,0xb9ed511d,0xba875456,0xba8eb50b, -0xbae1daaf,0xbabc978d,0xba97a039,0xba399be2,0xb9939355,0xba33a94f,0xbb122e44,0xba6542a9,0xb9b553c5,0x3a892868,0x380a6773,0xb916eaa5,0xba0b0105,0xb8d85cb3,0xba08c29c,0xba7b4217,0x3937fd01,0x3545926d,0xb78071c2,0x36567e6c,0x370e9393,0xb6c00475,0xb69b980e,0x3631363f,0xb748b878, -0x363f98b0,0xb58c588f,0x36cda77a,0xb6a51c9e,0xb76e4d86,0x37cef129,0xb92b856d,0x3975e550,0xba47755c,0xbab36349,0xbaeda2ed,0xbb2885d4,0xbb11ed4d,0xbada1132,0xba933cec,0xb93dabcc,0xb9f471e7,0xbb0cdc99,0xba8e52c0,0xb945f79a,0x3a94cdaf,0x39a4f4a1,0x382ece23,0xb894bcc9,0x37dd8453, -0xb94e03e7,0x3a49e8a9,0x3a4ad18c,0x389655cc,0x38bbd151,0x3755efed,0xb7035d33,0x367f511a,0xb5d355a1,0xb6b540cf,0x368febd6,0xb63db9b6,0x34db091c,0xb74d7e4a,0x371b00fa,0xb861e212,0x38d8e6ca,0xb911a64d,0x39b8486e,0x396b8236,0x39f267e5,0x3aa1654a,0x3af79d49,0x3b632c06,0x3b21d10f, -0x3a8b81e0,0xb9b3bd96,0xb9afb16f,0x38fa24f4,0x3a933438,0x3a7b8632,0xba0f7ef3,0x3a62689e,0x3a859482,0x3abc022c,0xb9601da1,0x3699c545,0xba0da33f,0x3a0e80e2,0xb996efbf,0x393e2aad,0xb8b3823c,0x38338187,0xb7c6a476,0x3702fe73,0xb686fc88,0x360fb5dc,0xb66653aa,0x36bc5e2d,0xb70a4fbf, -0x37102a41,0xb844fbf5,0x38138d31,0xb89f920f,0x39468a34,0xb9051f3e,0xbaa715d8,0xbaec7d20,0xbb256d52,0xbb421843,0xbb077b2c,0xba18403c,0x3a998eb4,0x3ada01a0,0x3a841089,0x39968697,0xb954fbdf,0xba6c75e1,0x382c01f7,0x3a8626c3,0x3b0e9f1f,0x3ab6c508,0x3a808783,0x3b23e363,0x3a2bfc83, -0xb9c03c47,0x392e9d41,0xb8a48136,0x38253fb7,0xb79f4544,0x372be45b,0xb6caaf4a,0x365a72ac,0xb66f852e,0x34d887e3,0xb6ab3326,0x367b5b3d,0xb6c9432c,0x37dfe523,0xb7f88c77,0x3941b0cc,0x38df757b,0x398248c5,0x3a484ad7,0x3a6f5f6a,0x3a70870e,0x3a39939e,0xb92a6367,0xba87fa97,0xba6c5c9b, -0xba52cf9d,0x3a0e0c9a,0x3a629c52,0x3a0c9619,0x393b1d7b,0xb9a26bfa,0xbacafc70,0x3a009c49,0xb9ccd3f8,0xbaac2fc8,0xb8968ea5,0x387e9299,0xb81fedf9,0x3821c13b,0xb781ddf6,0x35b39af9,0xb69e34ef,0xb5b2687a,0xb55cb7f9,0xb58140ca,0x34a433a0,0xb65dba27,0xb6129c1f,0xb70808f6,0xb56717ea, -0xb725a22a,0xb7d4c767,0xb94b6386,0x385d2a83,0x3a51703f,0x3a703774,0x3ad46a9b,0x3a9d02bb,0xb65c96ad,0xba83e1db,0xba3a43be,0x38da2fc1,0x39b4faaf,0x39d5ba56,0xb831e47b,0x380f5373,0xb9d2e2bf,0xba333e48,0xb9b72084,0xbab37e65,0xbb727bde,0xba0e7847,0x39db4193,0xb92bae09,0x388f9428, -0xb7f0716d,0x37daa7f2,0xb6f86970,0x36a51f5e,0x366b61ff,0xb41b726c,0x3601b128,0xb6226150,0x353ff246,0x36f0a036,0xb717d009,0x37de2ff0,0xb862c811,0xba77cacc,0xba620f70,0xbaab3dec,0xbac592fa,0xbac1efd9,0xbaa1405f,0xba379f3d,0x3a446645,0x3acf3fdb,0x3b5c2ab8,0xb8d378b5,0xbad6082b, -0xbb16af7c,0xba0def69,0x3a69272f,0x3b0b1b12,0xb8cd27ec,0x3ad6a880,0xbb5bf250,0xba83b561,0x398f10aa,0xb84b3d27,0x385cf207,0xb796bc70,0xb6421337,0xb678fe52,0xb660e8c0,0xb5f553e8,0xb642102b,0xb57a29dc,0xb7218af0,0x367c5c0f,0xb7cedb21,0x3844e622,0xb8e31920,0x39ef848e,0x3a94e159, -0x3a4520e5,0x3a74a4c6,0x39d6335d,0x3982075b,0xb8a0b251,0xba121dac,0xba55b55b,0xba8dc2ee,0xba7dc996,0xba3e8842,0xb8684692,0x3a3113c5,0x3aa4fff4,0x3ad3af78,0x3ae965ba,0x3b33dcde,0x39a2fa9d,0x3a035c7b,0x3a7c9d3f,0xb7925565,0x38341c93,0x38184194,0x36cdf876,0x37c1955e,0xb5cd5b47, -0x37ab0b97,0xb6e2440c,0x36d4778a,0xb6a8c603,0x369c1a97,0x36585198,0x379e53f1,0xb8271eb6,0x378bc9df,0x3a352f2b,0x3a53fcd3,0x3a032846,0x3992eba3,0x3970d2bb,0xb80a95dc,0xb925417d,0xba10f867,0xba188e3c,0xba2a6880,0xba08f6d1,0xba489302,0xba6592ed,0xba510e90,0xba502a56,0xb9bc9e58, -0xb51c03b0,0x38a88ae9,0x398bdc29,0x3a968080,0x3a601d0f,0x3953a1e6,0x38571d8e,0xb86514dd,0xb7ae7f05,0xb7d10395,0xb7d62426,0xb7ea2d72,0xb7549ff3,0xb78f89a0,0xb63556d5,0xb7c23085,0xb769b62a,0xb78e449d,0x38c4d0f3,0x381ebac6,0x381a51d5,0x39949720,0xb7caa82b,0xb86adae9,0xb9ab0992, -0xb9508cdd,0xb9efb98f,0xba52ebe9,0xba600853,0xba843789,0xba8b8889,0xba5295f6,0xba03b43b,0xb9c198bb,0xb99715cf,0xb990beb2,0xb916c20b,0x395ef78f,0xb8d27bd6,0xb938a63d,0xb80298a6,0x386f2f27,0x39113fc8,0x390b723d,0x38eb0731,0x37e77566,0x38a3f7aa,0x37a99297,0x38a0e7cf,0xb7698eb4, -0x38299f96,0x37754c51,0x389d69d0,0x37bf47df,0xb79a6a8a,0xb975eb00,0xb981b3ff,0xb9dc8a30,0xba23d542,0xb9ee2df4,0xba1289b8,0xba36f762,0xba41dcce,0xba2b91a1,0xba1081a6,0xb9e1da2e,0xb9bfbb73,0xb9c39ef6,0xb9d8bea1,0xb9d83e96,0xb9a97db8,0xb927da11,0xb903f9a0,0xb87188ff,0xb9dabded, -0xb9a3ebc0,0xb91927e8,0xb9d89a7e,0xb99ea97d,0xb998d8fc,0xb9179179,0xb8b73a6e,0xb8e27391,0xb88c86e5,0xb81d00e3,0x34ee14cf,0xb80ecd80,0x375117a6,0xb796157c,0xb8b5ddbe,0x365da599,0xb7cd5c61,0x39fcbf28,0x3909117d,0x39382ab3,0xb731955c,0xb7815c08,0xb7f849c0,0xb8c14ce7,0xb9371385, -0xb9cb22a7,0xb9fe1766,0xba104a66,0xba10ab3f,0xb9ff525c,0xb9fdcb9a,0xba031c77,0xba090ca1,0xba090fec,0xba073cfe,0xb9a9d08c,0xb9cf5fdf,0xb92dfb68,0x382ab085,0x37ccdf04,0xb931448d,0xb87ba25b,0xb8940acd,0xb8336de1,0xb7e0e06c,0xb7d89351,0xb6351596,0x3800aad7,0x3867c412,0x38376adf, -0xb8f46ba3,0x39398c76,0x38cf03d8,0xb92d6ffc,0xb9d8233d,0xb9c15f46,0xb9c37b1b,0xb9cc35ee,0xb9db5ea8,0xb9d4c354,0xb9be7682,0xb9ae66d6,0xb9943b78,0xb98dd478,0xb995c217,0xb9a8b7cc,0xb9b64b85,0xb9aa7123,0xb99b87d9,0xb9967dc7,0xb99a080d,0xb9c0a9b3,0xba0b6ece,0xb99044cb,0xb9450ba9, -0xba1a83b3,0xba352d7a,0xb9e0b600,0xba04d356,0xba1d644a,0xb9a40d7c,0xb9c46d26,0xb9cc6f30,0xb9b85baa,0xb9d61c61,0xb9e16e68,0xb9c718cc,0xba2ac4b8,0xba17417e,0xb9e03d6e,0xba21527c,0xba0d7f28,0xb9442aad,0xb9af1553,0xb9c5bd29,0xb9d69d44,0xb9c2bcee,0xb9b3ad18,0xb9a2e065,0xb98ce32d, -0xb98fafc5,0xb9be4258,0xb9a9684f,0xb9939c15,0xb94e63ec,0xb9949cfe,0xb99458f7,0xb98a1446,0xb98638b8,0xb954910d,0xba011be0,0xba5a4f08,0xb9c3d704,0xba0bfee2,0xb9956029,0xb9572f51,0xb8989f0f,0xb84e3f11,0xb91ceae0,0xb911cb79,0xb9369bd6,0xb8cf65d4,0xb9056abd,0xb97fc93e,0xb9a56b25, -0xba0fe240,0xb9ca0b99,0xba2464c5,0xba0b07c8,0xb9d85c89,0xba14056a,0xba340904,0xba111b42,0xb9f6ee3f,0xba04a45b,0xb9b0b9f2,0xb9eb8917,0xba4c16ed,0xba0f9c26,0xb9b7f8f2,0xb81318bd,0xb9d6fa5f,0xb9ff4e7d,0xb9e0c79a,0xb9adaefa,0xb9191f98,0xba148011,0xba175282,0xb9766411,0xb90b44c9, -0xb4dc56a7,0xb8b27a9e,0x377b9403,0xb884bba2,0x38306fdf,0xb8b72962,0x387fbf45,0xb8137673,0xb80e39a2,0xb8380905,0x382f75ef,0xb8688fc8,0xb965f4d4,0xb9b95ce7,0xb9f8f0da,0xba0dcf63,0xba6d678c,0xba8e80fb,0xba65d864,0xba2b78bc,0xba14d428,0xb9915faf,0xb9ba94f6,0xba88b1e1,0xba1d18b1, -0xb9e36e3d,0x39310279,0xb9eb31a7,0xb9e345cf,0xb988f6d0,0xb9824a58,0x38a5cf3f,0xba28f8b6,0xba2a0fe2,0xb90d521f,0xb78718c8,0xb8874da5,0xb7828e47,0xb6f25a30,0xb6c990cb,0x33620543,0xb7025028,0x37098a04,0xb7d0c2da,0x37ccb0ad,0xb866fb1f,0xb7f68c24,0xb7a9c19f,0xb73eede4,0xb9eea512, -0xba22addb,0xba117db7,0xba73055b,0xbab2ab53,0xba889ac0,0xba5cc23c,0xba4065d9,0xb9b5c8fe,0xba2bf33d,0xbadee357,0xba499827,0xba01b8e3,0x3a2c2979,0xba25fa7f,0xba2b2d07,0xb9d50f1d,0xb9a1c716,0xb8edea4f,0xba406e96,0xb9965433,0x388e6851,0xb878133d,0x372b1ff1,0xb6094a39,0x36c0ae2f, -0x363521f8,0xb52287f1,0x3747f83c,0x3643d3d4,0x370ef73c,0x360ddf8d,0x379d1480,0x37e2d4d3,0xb869a748,0x3910fce0,0xb96aed86,0xba25e9ad,0xba602eea,0xbad4c9f7,0xbb04b85b,0xbad43728,0xba925694,0xba571f65,0xb903df59,0xb9dae6e9,0xbad6b6ae,0xba84b933,0xba063148,0x3a09d18d,0xba201ec8, -0xba2da674,0xb88f9fae,0xb922a1e0,0xb9087ff9,0x3a1ad034,0xb9cb1414,0xb9309fe3,0xb85de169,0xb7d21734,0xb70002bc,0xb68dec62,0xb62ddcf3,0x35d4740c,0xb68307c3,0xb64cefca,0xb6184bdd,0x36390f29,0xb75dcab7,0x37733f9a,0xb85f4452,0x37b4e887,0xb90ddc37,0x395e02ce,0x3a852dcb,0x3ad49827, -0x3b28ec16,0x3b3f29e6,0x3b0b5680,0x3aa1b886,0x39a7f364,0x39fffb96,0x3a4962db,0x3ad3fc77,0x3aa8aae5,0xba3b803b,0x3a1c5fab,0x3a442255,0x3a848d37,0xb8df9586,0x3a6c51cb,0xb9d77c8b,0xb9fb864c,0x3921728f,0xb8f26bdc,0x37d0664e,0xb7426ef2,0xb6039131,0x35aef70c,0xb5b39978,0xb50a7083, -0x36246b5e,0xb584841f,0x36a2b430,0x3526d383,0x37a87429,0xb7623d53,0x3725eb92,0xb896136c,0xba11b38e,0xba8f295d,0xbaf68c79,0xbb12fa86,0xbb1f5d39,0xbad968c5,0xba04588e,0x3a538c2b,0x3aa43343,0x3a363c85,0x39073e13,0xb9df3ec3,0xba8a230b,0xb976b0ad,0x3a4198f8,0x3af2f409,0x3aa5c626, -0x3a6113e9,0x3ae931fe,0x3938f82b,0xb91439be,0x380b3de5,0xb776a7e0,0x3624503a,0xb59b3cd6,0xb5dc0b2b,0xb465dafa,0xb516c830,0xb38f1b59,0xb59387a9,0x365fa52b,0xb71218c7,0xb68b3d53,0xb7aa8844,0xb7cc6e15,0xb8a9833b,0x3904af22,0x39c98ce5,0x3a13eb1e,0x3a4dd725,0x3a472a43,0x3a328509, -0xb93575c3,0xba152083,0xb9d82a54,0xb6cf8eb9,0x3a7f3b77,0x3a742b1a,0xb8a188a5,0xba55ab5b,0xbaa573c2,0xbace2e03,0x3953c145,0xba25ed82,0xba88c3ef,0xb8e11632,0x382ff31c,0xb80834ce,0x358d935e,0xb6c6944f,0xb51c1c8f,0xb587604c,0x3510bf73,0xb65288ba,0x34b5c0c5,0xb68f523c,0x36c6bab6, -0xb6e7cf44,0x3763ee0a,0xb8109207,0x3885c336,0xb920c591,0xb9c54ac9,0x39dc514c,0x3a48a0b7,0x3a71b9c7,0x3ab37eba,0x3a7a45f1,0xb94dccf2,0xba52f4fc,0xba1ac91e,0x398a025f,0x39909b2a,0x39a6fe2e,0xb8cf3af7,0xba375664,0xbaa5d729,0xbab34009,0xba4b060f,0xbadb95ba,0xbb3a0885,0xb920408f, -0x3906d084,0xb8cd99b0,0x388b79aa,0xb7a4561e,0x373ab84e,0xb6a3832f,0x3651eb24,0xb643038e,0x35db22f5,0xb3bd58f2,0x364917fa,0xb6657fe9,0x34a83a4f,0xb7f1b2db,0x37cf666d,0xb8a2a8f3,0xba0be1ec,0xba0e7fdd,0xba814e47,0xba981080,0xbaa63641,0xba8accbe,0xba1d3159,0x3a1ee04b,0x3a89cf6f, -0x3afe3604,0xba6bd885,0xbb02a2c5,0xbac255fb,0xba640b76,0x39043d4c,0x3aa1471f,0xba9a7ab5,0x3aa942c8,0xbb645742,0xba3b406a,0x3937f343,0xb91d309b,0x37b89359,0xb81f7619,0x368fd244,0xb7789bbf,0xb60e8e9f,0xb6f7768c,0xb6605301,0xb688c315,0xb6051280,0x357815c0,0xb76903bd,0x3880b422, -0xb8cd24db,0xb79971f1,0x3a326ca1,0x3a14c3e1,0x3a1e55b3,0x398e7d36,0x384fbf96,0xb9a0d750,0xba639eda,0xba9c75e4,0xbab6bc6f,0xbab3531c,0xba504079,0xb8f1f357,0x3a113927,0x3a767439,0x3a9ad5dc,0x3adf3aa3,0x3afd5663,0xb98eba02,0xb8e14a92,0x394cba46,0xb940c12a,0xb72e4515,0xb7e1d3f7, -0x37588489,0xb6be028a,0x372b18cf,0xb68b0f6e,0x375c16af,0x3623b695,0x372314ac,0xb4e6d1df,0x3749a0fb,0xb7b1ae80,0xb5371273,0xb8ca4693,0x39d165af,0x3a54e76e,0x3a0b5254,0x39c1bc7c,0x39a78f45,0xb8cae234,0xb98a563c,0xba13f309,0xba053b86,0xb9ed8505,0xb997d2b6,0xba046b04,0xba24398c, -0xba12e5bd,0xba0d5058,0xb9c2b22a,0xb993a836,0xb9e3fffc,0x39a2c158,0x3a219990,0x3984a16e,0xb9102c86,0xb8873660,0xb7a296ce,0xb81e6992,0xb71bebfc,0xb7b04c67,0xb646525b,0xb75df8e8,0xb6890f21,0xb7822954,0x36014356,0xb7624cf3,0xb7dd2a4b,0xb799d47e,0xb7c9b6f7,0xb880ac24,0xb64478b8, -0x39012471,0x37365201,0xb931aff0,0xb9109376,0xb9c05033,0xba267125,0xba376bc4,0xba57ca6e,0xba5e302b,0xba18978e,0xb9ab9ee8,0xb959553f,0xb9710d18,0xb98007b2,0xb88b3d74,0x390557c3,0x38fa28b4,0xb730f820,0xb9722fe5,0x37307255,0xb89ba5d6,0xb78e3885,0xb7938c25,0x37a32c71,0x36fa1ed9, -0x37a19722,0xb7b71878,0x380a4593,0x36f62d4e,0x36d62ffd,0x36065459,0x37c6831f,0x370e75f9,0xb90460a5,0xba060841,0xb9e640b2,0xb9d5c3c2,0xb9d28da2,0xb9d399d0,0xba0f586e,0xba12534f,0xba07b206,0xb9e459d7,0xb9c8c2b7,0xb9df706f,0xb9d517a3,0xb9de1dd4,0xb9be0b9e,0xb95e991f,0xb879e65b, -0xb6c3b92d,0x37b6e371,0xb9d2bc79,0xb984b1d4,0xba00a0b2,0xb9ad16e8,0xb9a1198f,0xb977a07d,0xb86e4b54,0xb8e545de,0xb883a541,0xb90b77b1,0xb908c4b1,0xb915f281,0xb8cf05ab,0xb8e3d9cb,0xb9001ae0,0xb983c4bd,0xb9a74c70,0xb96afeed,0xb7d930fb,0x39187c5d,0x38e8cd1a,0xb81a5371,0xb862049f, -0xb8a4fd14,0xb90bd96d,0xb9556107,0xb99d7628,0xb9a51148,0xb9a4eb34,0xb9a0e0e1,0xb99037b1,0xb9b2ce77,0xb9cb576d,0xb9ebee33,0xb9e5b85c,0xb9e25552,0xb95c1dea,0xb97711ad,0xb9e2729e,0xb9ec538d,0xb9a766ef,0xb9d272ab,0xb9f3e9bc,0xb9c64a2d,0xb9c32aab,0xb9b4143d,0xb9a6c0f7,0xb9a748d2, -0xb9a7452b,0xb9a501b2,0xb9e0ae8b,0xb9aa582a,0xb965070e,0xb9c73d2e,0xb9ca80b8,0xb9838320,0xb991d0d6,0xb98fc98c,0xb9948f5f,0xb99cf3cf,0xb996ece1,0xb988614b,0xb9811817,0xb96da2df,0xb9747874,0xb98598ac,0xb98ba633,0xb98d6cc6,0xb970c54b,0xb9561a07,0xb949805a,0xb94c9c3f,0xb9d67034, -0xb8ccecf6,0xb84ef154,0xb8c506b1,0x39291f29,0x38089f62,0xb9c439f8,0x38c55dbb,0x386a90d7,0xb8e18d41,0xb92a4ffe,0xb947b107,0xb9642a59,0xb9840a6b,0xb9940caf,0xb98b0451,0x37e67542,0x38ee0182,0xb9f2959c,0x37206658,0x390d19ce,0xb894abee,0xb8af6df3,0xb8bb7f24,0xb901040a,0xb8bb24a8, -0xb89b05d3,0xb87ac332,0xb80135af,0xb7f6bcdf,0xb8c0bb1a,0xb8326d97,0xb722b250,0x3883001c,0x37b189ca,0x377bce17,0xb7bae4cb,0xb78e37b8,0xb880e9e7,0x36d3f1fa,0xb8ef3432,0xb8cd7744,0xb8b33fe8,0x38cfe09c,0x38f8ace4,0x38ceda4d,0x37e2bd69,0x390d731b,0x38d8626a,0x391948c6,0x38ab2bdd, -0x39112c0a,0xb71fd07b,0x38e05d6b,0xb7febd04,0xb806581a,0x37eae8d5,0x384e9380,0xb8f7b37d,0xb8f87c92,0xb95fb482,0xb8c2f5a8,0xb7c2356a,0xb7854a75,0x3820ec3a,0xb8382d6b,0xb9903a5f,0xb85fc3d3,0x38e2d8c1,0x39b873d9,0x3932d8ee,0x3893dc83,0xb893092a,0x3741235d,0xb8a62014,0xb90239f2, -0x38835970,0x39193728,0x3918c696,0x38c153e9,0x38b39536,0x37866b60,0x3887e767,0x370aaa07,0x38ba3d4f,0x3796a88a,0x38151688,0x38910135,0x3892b485,0x38c00eaf,0x3915ddac,0x38915872,0x38ff3e92,0xb877ed21,0xb9459ed2,0xb98b57eb,0xb9d96538,0xb96a853f,0xb8fb4d20,0xb82d9626,0x38eaa980, -0x38570316,0xb9cb2c88,0xb51c98a1,0x395681be,0x3a2adb90,0x39bf64f1,0x3990d4c0,0x384948b3,0x38af7ab0,0xb81b60ac,0xb9835713,0x390222cc,0x38d86e63,0x3819fe36,0x37021063,0x371e9924,0x378e9132,0xb4eed7ac,0xb6df7ba8,0xb64f6f34,0xb7a1bd26,0x3794688a,0xb7831bc0,0x37eac102,0xb666221e, -0x36ca2767,0x38abff7e,0x38d5a3f4,0xb85584b8,0xb932c101,0xb985756a,0xb9ff647a,0xb90e1bc9,0x389bbefd,0x390aede7,0x3965f669,0xb820a0d3,0xba429c42,0x384cfc5a,0x39d2006f,0x3a9ca042,0x3a13c83c,0x39a6f71b,0xb8aaf6a8,0x38991a03,0xb92b9d7d,0xb9cb6580,0x397aff1a,0x38025c8c,0x383cf921, -0x37a31e01,0x36e21a93,0xb6864173,0x3459d844,0x3710d896,0xb6176c26,0x36a9dc07,0xb67228c0,0x36f2a712,0xb70283c3,0x378842a9,0x3802550f,0xb8302066,0x390aab36,0xb8f431e2,0xb9e19f9d,0xba19ac5f,0xba599920,0xba04723b,0xb9426012,0xb8c3a541,0x399deff7,0x38b11aa3,0xba467681,0xb88bb29f, -0x3a01de8e,0x3a9c74fb,0x3a50bf9f,0x39fe0807,0x3910e330,0x39275ca7,0x3979cbb0,0x3a6baa37,0x39757dae,0x38eebca8,0x3837e353,0x378bc66c,0x370ac429,0x36f1ccc0,0x365fa658,0xb625c880,0x358a916c,0x356d3d70,0xb32ea0c8,0xb6195a7e,0x36de1c03,0xb777cbe3,0x382734b6,0x372110a7,0x38b2befa, -0x3a4d2a04,0x3a9251b6,0x3ab6fdbb,0x3ad602f9,0x3b01f982,0x3aa96594,0x39db5c76,0xb8f8589e,0x3906786a,0x3a19637f,0x3ab53576,0x3ab3d41e,0x39804490,0x3a93fdad,0x3a8b81e6,0x3a851d4e,0x398ce2e7,0x398bf311,0x38c57e98,0x39163f3a,0x381dc9be,0x385c3577,0x3745f9a6,0x3633dcb5,0x36b65adf, -0xb58fc20a,0x368cc6ed,0x35e9450b,0xb0ce2ba2,0x35cba9a4,0xb59e10ed,0x368663ab,0x32028f2e,0x374b6fad,0x37b040b2,0x37e060ab,0xb9477684,0xba132005,0xba584a3e,0xba788882,0xbaae45ef,0xba51e6aa,0xb7bb41aa,0x3a7731ca,0x3a92d79a,0x3a18711d,0x397a3d32,0xb80e4006,0xba0b73f3,0x3a03c712, -0x3a919f81,0x3aba6694,0x3a8b1409,0x3a17d357,0x3aaedae8,0x3835a5a1,0xb686ed51,0x37ffca59,0xb4892c7e,0x36b9d4a8,0x35fde3fe,0x3627f8cd,0x358c89e0,0x353cdfcc,0x3586870f,0x360169ff,0xb63b05ed,0x3724e9c8,0x36d56a3f,0x37a772bc,0x37a44ebd,0x38d3fddf,0x39896786,0x39b849e1,0x3a26d7b1, -0x3a579eaa,0x3a66883a,0x3a54770f,0x39b393f6,0xb90d6ab6,0xb8e05012,0x3891ab96,0x3a381057,0x3a874bf8,0x3a8692d2,0x3a2919c4,0x3980443f,0xb9a4db63,0x39d574a7,0xb8ef0556,0xba4131d7,0xb839775a,0x3807128c,0x374b7c39,0xb5bca179,0x36d7f8ab,0xb3538a85,0x3623cb0e,0x34f6fcb5,0x362cdc90, -0x35cd0906,0x361b9981,0xb59ada90,0x35ac4b48,0x36cd6692,0x3773058f,0x373ad141,0x381e799c,0x38d3a27a,0x39a08002,0x3a4914e5,0x3a663c18,0x3aadeb40,0x3a9686a8,0x39f9cb5e,0x390b0d80,0x396c3267,0x3a219796,0x3a0bf032,0x3a34a84d,0x3a88e381,0x3a711e1d,0x3a47b314,0x3a889610,0x395cdbd7, -0xb98966ba,0xbac7f58c,0x39e1acb1,0xb8ce51a2,0x38353153,0x35c7cc86,0x35fd347a,0x368c4ba1,0x34c9e4c9,0x358431a9,0x363387a1,0x359cacc3,0x35d4d183,0x35a38d5c,0x3626cc67,0x3707cf3c,0x36e1263d,0x36aeef96,0x38a3d8f8,0xb9c163be,0xb98075be,0xb9d64fb0,0xb9ef6527,0xb9f29cf3,0xb9a99766, -0xb88bcdaa,0x3a88d2fa,0x3ab02c03,0x3afa9e0c,0xb9c6d190,0xba84f1ce,0xba3aba49,0x3a387eba,0x3af0c36d,0x3b480abc,0x3a2c04ce,0x3b340214,0xbaab2b21,0xb9829d45,0x3987ba1d,0xb8a8029a,0x385aff40,0x35798372,0x374db008,0x36ae5bde,0x3686bee5,0x36696ac6,0x359bc67a,0x3613f7a3,0xb61b6b5a, -0x3711f269,0xb724b1a1,0x372d631d,0x37f03c52,0x38529dc1,0x3a3c1ecf,0x39dd1470,0x39df4370,0x38cc0018,0x3875fb3d,0xb819aba8,0xb9115b8c,0xb99b66ad,0xb99687ab,0x3883fac3,0x397fd774,0x3a435283,0x3acc575c,0x3b11fe08,0x3b2af437,0x3b4ac9ee,0x3b505d18,0x3997ce95,0x3a0de801,0x39526feb, -0xb7cc604d,0x38c6179b,0x3717851d,0x372ea966,0x366cb31b,0x3614de2d,0x371e4805,0xb5b1fcc4,0x36afe720,0x35ec323f,0x3579767b,0x371f9870,0x355708a2,0x388c2d7c,0xb8a51de4,0x39441f12,0x3a188f89,0x39d0b468,0x39e1752c,0x39d19722,0x399137c7,0x3940258d,0xb7e60c0f,0xb8c826e0,0xb93f2556, -0xb96a721a,0xb9ade717,0xb9a6d288,0xb8a1e805,0xb9652c23,0xb8056318,0x38f9a6d8,0x39074a97,0x39d5d4cc,0x3a53bd06,0x39c80650,0xb7a58a1f,0x38d191be,0xb7a1be5d,0x381c2a39,0x36c01217,0x3739374c,0xb63a8b07,0x35bc6736,0xb6e81b47,0x36593f54,0xb6e18c4d,0x374ff361,0x3601d54e,0x361df315, -0x386cb401,0x38155f89,0x3910ed05,0x38e5ba14,0x389cdbad,0xb89c1aeb,0x369fac9b,0xb91dad83,0xb9bc0d3b,0xb9c83576,0xb9f24355,0xb9f768fd,0xb9851fe0,0xb80fd9e5,0x392f5736,0x3845264a,0xb7a85e54,0x38cae3b0,0x399530ed,0x39881495,0x3977671f,0x39140519,0x38f6ffcd,0x3868e834,0x3899aeaf, -0x37b3398b,0x35ce808b,0x37afd60c,0x35df03e1,0x3824f232,0x36eab580,0x3734c391,0x37ba3170,0xb6541ff0,0x380b887e,0x38452774,0x387d5759,0xb95369d9,0xb97c9478,0xb9c720e5,0xb9a539c4,0xb9c54650,0xb9fa1f9f,0xba03f503,0xb9f5086c,0xb9acca36,0xb95ab880,0xb9047308,0xb8a0155f,0xb8604c29, -0x36fc62a1,0x38e38cde,0x398b2771,0x398ccbcb,0x3995c0cf,0xb944d282,0xb8b8eb8a,0xb96f5206,0xb8ee06ac,0x377814f2,0x377c6018,0x38d85829,0x38753552,0x3884cca1,0x38b74ff1,0x38affbfb,0x38c746b3,0x38ad651f,0x38a2e8d9,0x390c0d14,0x38ac40e3,0xb859c6f1,0xb8ce3dc7,0x37bb2dff,0xb8972b93, -0xb8a99624,0xb928d7ce,0xb92d98e1,0xb9301ea8,0xb94a0d79,0xb973d47a,0xb9ac56dc,0xb9b0174c,0xb9a1a06e,0xb9821502,0xb91347cc,0xb89556de,0xb90dfb27,0xb97bd414,0xb9789329,0xb95ecc63,0xb8c8b92f,0xb8d820fa,0xb81ac51c,0xb8f60e58,0xb99e62dc,0xb8304a78,0xb8667638,0xb95c884f,0xb95a5ad9, -0xb96174d0,0xb96b8b44,0xb96962d6,0xb96d5873,0xb9718da7,0xb7f52d6c,0xb7ab1cba,0xb987bedf,0xb8229436,0xb840ad2b,0xb9687f2e,0xb94e66cb,0xb955c95d,0xb9646f7c,0xb9791f24,0xb9757d86,0xb95c6c0e,0xb9360644,0xb901f388,0xb8e17a0e,0xb8df1e25,0xb9004f28,0xb8f71fe7,0xb8bea64d,0xb88b0714, -0xb855dab4,0xb87e7a71,0xb97708d5,0xba0c89c0,0xb9b2e869,0xb9d1770b,0xb9e5c697,0xb97d4275,0x382da54f,0xb9a25b29,0xb903c9d6,0x3921045d,0x391c2082,0x39240dfd,0x392abbbd,0x3924b46b,0x39408dfd,0x393047df,0xb901a351,0xb997269a,0x3885d07c,0xb948fc23,0xb9bb87cc,0xb9c1339d,0xb9cb9704, -0xb9e1e46e,0xb9e92db2,0xb9e012d6,0xb9d77c69,0xb9cb4017,0xb9c29ecf,0xb9c526bb,0xb9d87302,0xb9d514e5,0xb9c7dbf8,0xb9b58a7c,0xb9c6e183,0xb9bf1415,0xb9a5c8a6,0xb9b1bdda,0xb9bd7dd4,0xba1978b4,0xb94601fc,0xb93f6985,0x35cb15c8,0xb876aa6f,0xb8acf820,0xb7fa5dfc,0xb7f2348a,0xb88b429e, -0xb81b63e3,0xb8bda373,0xb8582364,0xb8110561,0x3882dbb2,0xb8550072,0xb891a7c5,0xb90758d4,0xb954a533,0xba06915f,0xb9ffdb2c,0xba17f947,0xba2dbcdc,0xba15dc63,0xba0b5422,0xba18b5a2,0xba0a3580,0xba1ab722,0xba3bd16b,0xba2a8396,0xba0fe021,0xb9d54b2a,0xba140a9d,0xba118335,0xb9cf54b6, -0xb9ced3a7,0xb9a6d615,0xba1895ef,0xb93a44ed,0xb8bedffa,0xb87ae612,0xb893665e,0xb86c54f6,0xb83e23df,0xb85191e9,0xb833ec87,0xb8a35a61,0xb879b850,0xb80c7073,0xb8ad83a4,0xb86b3b87,0xb8b5b8b5,0xb8a539fc,0xb6e0efd4,0xb8ae7b84,0xb9cab290,0xba283c8d,0xba4fe41a,0xba76e421,0xba4dbf81, -0xba2f85e5,0xba25560e,0xba0b0e3a,0xba174a7f,0xba67576b,0xba3bc5d7,0xba2aee91,0xb9bf92c3,0xba1e0a21,0xba013026,0xb95070f4,0xb9b1b9fe,0xb96df433,0xba3c05c0,0xb84939d4,0xb8808147,0xb866f5a8,0xb760009f,0xb68c4a15,0xb7b43d97,0x369a2a9d,0x3702dd40,0x373b1172,0x378cd048,0xb70d18b8, -0x3690275f,0xb78c04ae,0xb71632c9,0xb8205473,0xb8a96ecf,0xb860a9e4,0xb9b88374,0xba2eb8cc,0xba5371b4,0xba95c077,0xba6ec1b2,0xba5d6bc0,0xba528e42,0xba375e64,0xba61443d,0xbaa97cf2,0xba7811a3,0xba5d87a1,0xb99f850d,0xba5ad8ca,0xba314fd8,0xb96b91de,0xb9a8f9ee,0xb9a7d6ba,0xba1bb3e3, -0x387b0213,0xb8fccfb2,0xb74126ba,0xb7de706e,0xb689a183,0x3523d676,0xb5ad8534,0xb747a207,0xb6ad8c22,0xb6f449db,0xb58aa29c,0xb720b8f2,0x35d17d14,0xb7bce53d,0x35fffd71,0xb832d8d1,0x386a53e7,0xb9c909b7,0xba6c5b68,0xbaa51006,0xbacc9dff,0xbaa18609,0xba7e107b,0xba534fe2,0xba14af35, -0xba453d1e,0xbaa50906,0xba8ea3e0,0xba5e1807,0xb9a0d960,0xba47afb0,0xba0b71cd,0x382503a0,0xb93e3edf,0xba10c166,0xb97bfb3a,0xb8ff2a0d,0xb8a5fcd3,0xb7ae32bc,0xb7839f7c,0xb7037b8a,0xb6fe198c,0xb6679d32,0x360c74c0,0x3586e6dd,0xb3b3d616,0x35c138b6,0x33c853ac,0xb603717f,0xb639606f, -0xb7cd03a2,0xb7cfa7e0,0xb927d14b,0x388ee184,0x39af6732,0x3a370e08,0x3a977a30,0x3a960039,0x3a213e92,0x39980177,0xb9b7a2d0,0xb96312ca,0xb90d96f6,0x39bc3576,0x37fe0704,0xbaaa6845,0xb9d749b0,0xb9b73fd8,0xb93ab6d3,0xba3328ae,0x393cc023,0xb9865dc3,0xb8444bfc,0xb8b6caa8,0xb7aac3f9, -0xb7e29813,0x3607d35d,0xb6c08a95,0x350c212e,0xb6a76336,0xb605f745,0xb5de33f4,0xb5369610,0xb624d567,0xb61f003b,0xb78d68c3,0x36e40bfe,0xb88a3950,0x390e308d,0xb9c601cb,0xba8b7c8b,0xbabc6d4f,0xbaecba06,0xbac639bd,0xba6f6502,0xb8c3089f,0x3a18199b,0x3a364bf1,0x394af8bc,0xb8c1e2a4, -0xb996fcd2,0xb9f0db2d,0x38affccc,0x3a1b5d06,0x3a80c5ff,0x3a0bc3c2,0x39871072,0x39ff0b72,0xb9178e4d,0xb614b324,0xb805f20f,0xb509fe4d,0xb6578a19,0xb69364cb,0xb5cbc330,0xb62147ff,0xb4a64a17,0xb6217b64,0xb5efe4e9,0x3489e189,0xb6e87eae,0xb7400d20,0xb700717e,0xb82fc097,0xb87d556e, -0xb9218f7e,0xb63f7018,0x38f3e6f7,0x395252c9,0xb826bd8a,0xb9552ebb,0xba2254a9,0xba554369,0xba1ef65d,0xb9092105,0x38a816fc,0xb9303554,0xba283d7d,0xba99a579,0xbab0ab97,0xba8c4160,0xb8f44f7d,0xb9fd0c8a,0xba0f2abd,0x38f2b8d7,0xb82f4cc4,0x37959440,0xb7a92b0f,0x34e6d528,0xb65ccf16, -0xb584bd9a,0xb60adb76,0xb5ca6b34,0xb62149f7,0xb591eb53,0xb5035b5f,0xb41bc9bc,0xb7539568,0xb735a95f,0xb7c586a4,0xb75c6c99,0xb91849cd,0x38edcf88,0x39a60a71,0x39e0cd22,0x3997c227,0xb8679b6b,0xba3280b7,0xba7066c5,0xba32d29a,0xb92d5ca8,0xb9b3e3db,0xba07fe1e,0xba35d48d,0xbaada4e3, -0xbacfb29e,0xbaa88d42,0xba3801f7,0xba9fc603,0xba62aebc,0x39b3e648,0xb93a9c55,0x38582dda,0xb846799a,0x37449b37,0xb74241a2,0x35a6a305,0xb64c817f,0xb5e54c61,0xb6484fee,0xb61bd272,0xb68b517c,0xb6271d35,0xb6fad377,0x3607946e,0xb80b1f92,0x382e466b,0xb988efb1,0xb9da9450,0xba373ac0, -0xba5bda4f,0xba480b81,0xb9fb5482,0xb9130248,0x3a1c9eac,0x3a2b2b6c,0x3a44de2c,0xba30c754,0xba9317c7,0xba32a7ef,0xba49d6e9,0xb9e7577a,0xb9578e96,0xba95d677,0x39b390fe,0xba85da3e,0x397d7644,0xb92e9d3b,0x3894a72e,0xb83dda4c,0x35d3caaf,0xb74833b2,0x33110851,0xb665bc50,0xb50810f4, -0xb4889195,0x35e43a92,0xb4987a0a,0xb63d6341,0xb5f0f5f1,0xb6ba7aa4,0xb7cdcc7f,0xb9141502,0x399ed308,0x392e5294,0x398f7ca9,0x3791ccad,0xb8c588ed,0xb9b245cb,0xba3fd15d,0xba731526,0xba8262f4,0xba826c53,0xba1ff9fc,0xb9975616,0x388def77,0x399930e4,0x3a029907,0x3a720f14,0x3a58effa, -0xba2a99fc,0xb9836c5b,0x38b2acb9,0xb8a1ff47,0xb7e88e9b,0xb7b88480,0x358d78d8,0xb74a5868,0xb6be5467,0xb757bb73,0xb6aebde6,0xb742ccd5,0xb6d5d1f0,0xb7094e88,0xb676e1c9,0xb7a6c8a5,0xb72a5250,0xb7e38728,0xb4354bf0,0x39dd0e08,0x393780fd,0x38ea39a7,0x38a5c469,0xb8f49c7b,0xb93fed22, -0xb99afada,0xb98d8a8f,0xb977ef5f,0xb90b1c6e,0xb9a54cd3,0xba04a581,0xba48ecda,0xba445a12,0xba380244,0xba357c3f,0xba42ac72,0xb92f26df,0x3a001783,0xb8932fde,0xb8e2bb85,0xb75aaead,0xb83ad38f,0xb77c79b9,0xb710f96b,0x35e2dc72,0x3649f09d,0x3707614f,0x374d27b4,0x3703e121,0x370231e2, -0xb72937c4,0xb643641d,0xb7d8b367,0xb807ec00,0xb7b30a10,0xb603b3ce,0xb7b64687,0xb83de04b,0xb90f15cf,0xb908f6c8,0xb98542c0,0xb9c6c9e5,0xb9eb7002,0xba088ef7,0xba084f0b,0xb9e5bb13,0xb9cdd0c6,0xb9f47b87,0xb9e51b5f,0xb9cde4a4,0xb98e94ba,0xb8945d1c,0x383a7d40,0xb80d253f,0x38602a59, -0xb7c02a6e,0xb802637c,0xb7c7c66e,0xb7b2dd7a,0xb7c05f4c,0xb817dbb6,0xb7ab5d83,0xb831093a,0xb82902b6,0xb7cf20f9,0xb832280e,0xb6917b45,0xb7b15afc,0xb7cff619,0x385120e1,0xb9097764,0xb9d3c78d,0xb9ab60f6,0xb9a3f1a2,0xb99b2e29,0xb9b75810,0xb9b168f1,0xb99ff4e8,0xb9a80d86,0xb9b66820, -0xb9e7c6e7,0xb9e8532b,0xb9e80708,0xb9d6884d,0xb9839b96,0xb8f723ac,0xb893b810,0xb7862fa0,0xb9a57c3d,0xb96c8f7e,0xb90fda08,0xb900622d,0xb8234cd6,0xb79d9938,0xb8856ec5,0x37bb63e5,0xb792cb8a,0xb6ce3eab,0xb61e1cae,0xb713a03c,0xb7c492dd,0xb6ace75d,0xb8a03ddb,0xb814f0ce,0xb82f4b66, -0xb93fc312,0xb942b7ce,0xb903d91a,0xb8be83b6,0xb9500d16,0xb94de5aa,0xb961e248,0xb97da3e7,0xb98d759e,0xb9ad0878,0xb9ae042e,0xb9ac9d19,0xb9bc1fce,0xb9c50ee8,0xb9f8130b,0xb9f56e97,0xb9fb562a,0xb9dfaadc,0xb9cc8d02,0xb971f3f6,0xb989df2b,0xb99bb966,0xb94ae4ff,0xb866064b,0xb94b4259, -0xb9006325,0x37986fcd,0x37e70c89,0x37f278f1,0x38154084,0x383caccc,0x38837d71,0x389e053c,0xb907f60b,0xb9578cfe,0xb8712427,0xb9709fe7,0xb99f349d,0xb9991554,0xb9a11deb,0xb99d427c,0xb99c925f,0xb99e48da,0xb9984837,0xb98e6c67,0xb990d452,0xb99252b3,0xb99c45b4,0xb9a493a2,0xb9a1764c, -0xb9a1908b,0xb98afc2e,0xb980b1d0,0xb971d829,0xb96d0dfa,0xb9e753fb,0x38f29520,0x38cab841,0x39486392,0x38aad5be,0xb9579e6e,0xb9dab873,0x39182c2f,0xb831704e,0xb964898a,0xb971205d,0xb97cb0d8,0xb97476ec,0xb97ce2f8,0xb98f7e97,0xb97bd13b,0xb85e47aa,0x39010702,0xb9ee1ef9,0xb957b1e4, -0x38214a3a,0x393120a4,0x38d38347,0x38ef1628,0x38df7d01,0x39036424,0x390504a2,0x38fa0d35,0x390284fd,0x3901ca1e,0x38e05661,0x39021378,0x3908c9c1,0x392331ff,0x391127d9,0x39099076,0x38dd9ece,0x38f59765,0x38f51945,0x39339877,0xb9c94cbb,0x38800232,0xb83bc230,0x389b22f0,0x3863fee8, -0x37251df4,0x37de01c9,0x381b87f5,0x36d569a1,0x3859847a,0x38340599,0x379e7aed,0xb8fc51d5,0x38ba7003,0x368e629b,0x382821f8,0xb91ab5a9,0x3934224b,0x390ddf64,0x390b9b1a,0x390b2dbd,0x392f1130,0x39426a68,0x3943be1f,0x393df752,0x392a0c7f,0x38f4158d,0x39448e81,0x396e8480,0x399e4272, -0x3968d380,0x39351b53,0x38cfc972,0x38f88c33,0x3928bc58,0x388d6d4e,0xb7c39ee8,0x393ca7a2,0xb61e831f,0x3847cebb,0x37326b41,0x38607187,0x37d97dd3,0x3867177d,0x383d66fe,0x38a7f07d,0x3771d0ed,0x388f8016,0x3801a4a3,0x3887e5f1,0x3847710b,0x3845d5b0,0xb6f87bdc,0x38b6ba68,0x393f0b21, -0x38eef7f3,0x391795fd,0x3950c820,0x396dcb45,0x39566c97,0x396875c8,0x394f2157,0x38e879f4,0x3962cceb,0x39934e92,0x39d2730b,0x399523c4,0x3966133b,0x38ce7d94,0x39058bbb,0x391dbdc1,0xb75a208f,0xb71a42c1,0x37615bec,0x37f4aa4e,0x378ec14c,0xb41850b4,0x37c3e706,0xb6c9c38a,0xb6b53ce0, -0xb74e3b06,0xb74c1343,0x3667f096,0x3700cb32,0x36bb00b7,0x37ab5046,0x37c2522b,0x38723b53,0x363bc2cb,0x37b95545,0x3968757e,0x39046704,0x391fc402,0x399b1239,0x39c269b6,0x39993b04,0x39901474,0x395238cf,0x38b414eb,0x399f779f,0x39d5de8b,0x3a2670ab,0x39bc187c,0x396894ca,0x388b6739, -0x389faec1,0x38f19a8a,0x383adc58,0x38997f99,0x385ad77a,0x3810bf35,0x373cded5,0x3700197e,0xb60b2dde,0x364bd7c1,0x37204a58,0x371bb942,0x36f75068,0x364bbe21,0x37075d7a,0x361d26dc,0x37b7b93f,0xb66553e6,0x388c3959,0xb8334a26,0x38a845e2,0x39154dbc,0x38932fcb,0x390f5589,0x397572cc, -0x39a9f0ec,0x3987d372,0x39a8189a,0x3981b3b6,0x3892eeed,0x39911cb9,0x39dc1c1a,0x3a16f15d,0x39d64d8b,0x397e5ea3,0x38b68599,0x38ed9bba,0x39a7846c,0x3a005ee8,0xb7de7762,0x3808fc92,0x36f06515,0x36bc8f05,0x3721adee,0x3677014a,0x368406fa,0xb5cda7e7,0xb5efba5e,0xb5589660,0xb5e8f9d1, -0x36126cfb,0xb61b6f28,0x379180e0,0xb7808977,0x38b11d0f,0xb7e13087,0x39e9f292,0x3a4f81a1,0x3a4a2172,0x3a6a1dd7,0x3a2e24dd,0x39ed655c,0x39759f97,0x39742d07,0x39cced20,0x3a19999b,0x3a5eef07,0x3a675a79,0x39f01086,0x3a37d068,0x3a24d284,0x39f8c7a6,0x39c79409,0x39c337c0,0x397f56d0, -0xb905f2c3,0x3928941e,0xb80a96c3,0x383507cb,0xb7534d06,0x371bb2e1,0xb6149c4b,0x36ab55bd,0x35a7d328,0x362d4d60,0x3506da56,0x365572b4,0x3667d5de,0x3795236a,0x3712513c,0x37de19a7,0xb809db83,0xb9119b18,0xb7b4d8f0,0xb8dd9694,0x3817ebc5,0xb926a943,0xb8482bef,0x389b87be,0x39add48c, -0x39c7dfd7,0x3962bb3e,0x390ec07d,0x3778b3f1,0xb9630bb9,0x398d1f89,0x39f89da9,0x39f2f06f,0x39e5bca1,0x3981ba68,0x399b7da0,0xb7138c40,0x3886e69f,0xb67ad4c6,0x378fc8e4,0xb6a86aab,0x36edc0cf,0xb56a110f,0x365993f6,0xb40cae95,0x362d9373,0x35e81520,0x3430f573,0x36cc54cf,0x36ffe62c, -0x36809fd1,0x380ab1a2,0x37f1b5eb,0x393e7017,0x3980f834,0x398eeddf,0x39c41ab5,0x39eaf0df,0x39fc9edf,0x39b87502,0x3985ab22,0x396d943b,0x39a51746,0x39ff3ff0,0x3a2ccd7b,0x3a26fb74,0x39e991cd,0x398c980f,0x39248f48,0x39380c5d,0xb70a583e,0xb928683f,0xb7dd1816,0x359ac5d5,0x3739e0f6, -0xb6dbda8e,0x36ddc7fe,0x34baf939,0x36302d8b,0x35e4bf3f,0x35c0c2fc,0x361c78d6,0x35010fd5,0x35d3cdbd,0xb5045f63,0x37683f05,0x36accbae,0x381008c6,0xb70e4a27,0x389b1e1a,0x398a0d73,0x39b71221,0x39d32572,0x3a17e77c,0x3a18b913,0x39e0e885,0x39cbd8af,0x39b9cb88,0x39e10b78,0x39caaabc, -0x3a0d2e50,0x3a58c203,0x3a3bf794,0x3a2e1df9,0x3a50d4a4,0x39706a12,0x3883e291,0xb98a683d,0x39335c69,0xb83001b4,0x37b6e466,0x37618c3a,0x3598f3e3,0x356ed605,0x36284323,0x35bde1d6,0x3519e551,0x3631de01,0x35fa6e44,0x369159c4,0x36151259,0x3645b559,0x36211496,0x37876af2,0x37598a96, -0x37339ac5,0x3882add9,0x3881b2c5,0x38d1ca17,0x37ef9a20,0x383a9920,0x38fa838e,0x3a010025,0x3a043b5c,0x39edaeb5,0xb97b96d5,0xb9ac34f1,0x3805859a,0x3a1bb148,0x3a890c9c,0x3acb7779,0x39f2f488,0x3ab7aecc,0x37bbceab,0xb99c9367,0x39168634,0xb8792751,0x37dafc15,0x351bdb73,0x37136437, -0xb6055915,0x3611a9e3,0xb4d1b895,0xb3d75ef6,0xb6118749,0x35db985f,0x35397610,0x36f2a1b5,0xb6652f18,0x3835a23a,0xb7062688,0x3905c8f1,0x392224cd,0x385d58c8,0x360c3bcf,0xb7af50f7,0xb75ee9c2,0x38020a02,0xb80f7c69,0x37e840c4,0x395f6da2,0x39b997cd,0x3a180518,0x3a83a773,0x3aa2e555, -0x3ab2fc1a,0x3ad65e98,0x3abcdc2c,0x393e7bb2,0x39381f03,0xb83a9e9b,0x38034659,0x3772c41a,0x372926ce,0xb55a9250,0x36ea70bb,0x36ebee56,0x36fcf13f,0x3708130a,0x37298921,0x36f9c1af,0x3705892c,0x35cf1323,0x37849ac6,0x36e9d6bd,0x381e69ef,0xb88ed23a,0x395fc84d,0x3951a473,0x3979db12, -0x39843c0a,0x3945b61b,0x39196561,0x38b5ba2d,0x388a567d,0x3806202f,0xb7fd225f,0xb82e4894,0x36fad27f,0x39571fd6,0x38f41ff0,0x39043952,0x3907f5fd,0x38c04ea7,0x39a2f04c,0x393b0fe9,0xb84cfbb4,0x38822dfa,0x3698716f,0x38542fab,0x3752bd3d,0x37163a0a,0xb5b14991,0x34f67ced,0xb7084f5b, -0xb71b01cb,0xb72264fa,0xb626e94c,0x370305bf,0x37420424,0xb26a6c96,0x37a37e73,0x37bf028d,0x348f7eac,0x39017092,0x38b7b96c,0x385e01b7,0x388b0a26,0x37b966d0,0xb8308c5b,0xb83537bf,0xb886cea7,0xb885a2a7,0x3806dc26,0x39057292,0x3985d512,0x39178e94,0x38b007fb,0x3915c6a2,0x391b849b, -0x394bb5df,0x398a0c61,0xb823076a,0x38528399,0xb7028bc6,0xb730cb0b,0x36710604,0x37afcc80,0x37cc10f9,0x37a0b343,0x37c75fbb,0x383bfc2e,0x377e552e,0x382c5ebd,0xb789c615,0x37b4459d,0x359bdaf9,0x38285efa,0xb7c58006,0xb86ca827,0xb8794e2b,0xb8bab08e,0xb8be8616,0xb90ef58c,0xb9160184, -0xb915f1a5,0xb890756a,0xb755f200,0x37e903cf,0x38894412,0x38b6e64c,0x390864a9,0x3936ecba,0x39799537,0x397150c0,0x396656e6,0xb75d2d43,0x3792a7a4,0xb935c574,0x3868940b,0x38281616,0x384ba944,0x387e41e1,0xb78540ee,0x37dc8693,0x36307e5b,0xb6b5d4b0,0xb664356a,0x379d8577,0x36a4d254, -0x3855a414,0x388fa93e,0xb66949ae,0x38e19ff6,0xb92421b3,0xb88160ff,0xb887b261,0xb8a581fc,0xb8a226b1,0xb89e36c2,0xb89e54ef,0xb8b315aa,0xb8b7397c,0xb88a5d7a,0xb7ea0f3d,0x379d5adf,0x38a21099,0x390466ef,0x38a186c1,0x350b8392,0xb6c6587c,0x37032315,0x381c4e03,0x3874a1ef,0xb7ad40ef, -0xb92c4dbf,0xb991b0c9,0x38b53c61,0xb6e070c4,0xb8eb6f80,0xb9019ae9,0xb8fbfd9c,0xb8fc804e,0xb908b337,0xb91cd089,0xb926cfab,0xb66aed27,0x38ca2af0,0xb998fb7e,0xb916e365,0xb7912b4a,0xb59676a0,0xb7880761,0xb79bdabd,0xb7c66839,0xb7fb417c,0xb801bc76,0xb7da21e4,0xb7056d65,0x37514bad, -0x37b77eb2,0x37d8bc83,0x37bbb178,0x380a25aa,0x3839cf45,0x385e1092,0x387d3052,0x3859e807,0xb740c93e, +const uint32_t defaultHRIR_rom_AlphaR48[470 * 128] = { +0x3e094595,0x3e0070b5,0x3e249d6a,0x3cdebe05,0xbcb8b8ac,0xbd743498,0x3d767ab7,0xbc7e793e,0xbd7b74ec,0xbd83ebe3,0xbd77e4f6,0xbd3b83f5,0xbd7150b2,0xbd7e0636,0xbd7119ac,0xbc7c942a,0x3d352f28,0xbd848755,0xbc870462,0x3caef063,0x3e15c18c,0x3dee7ab7,0x3dfce600,0x3e00876d,0x3e01163c, +0x3e024a33,0x3e035f7f,0x3e04b5f7,0x3e06feee,0x3e09c88a,0x3e0d20e6,0x3e10371e,0x3e151794,0x3e12d853,0x3e1028ae,0x3e0987f9,0x3e0931f2,0x3e20e8e2,0x3e0b90d0,0xbd02dc11,0x3dd27b26,0x3d122337,0x3d2c1d55,0x3d888631,0x3d6ef13d,0x3db299a0,0x3d78d706,0x3d017832,0x3d617605,0x3d82a0c4, +0x3d694f61,0x3d00648f,0x3d4abe94,0x3d45c45e,0x3d7d8112,0xbc9cc1ae,0x3dddca9b,0x3e051b61,0x3e012b5e,0x3e0b9909,0x3e0c1d7a,0x3e106cf1,0x3e133fa9,0x3e162ff7,0x3e1bd401,0x3e247577,0x3e2f6688,0x3e3a7047,0x3e463a8e,0x3e44da00,0x3e3c22ab,0x3e29207f,0x3e200d41,0x3e3a14f6,0x3e02f236, +0x3d13cc60,0x3d7cd57f,0x3c867a71,0x3ce6b061,0x3ccc0823,0x3cbd7e35,0x3b645ab3,0x3d2cb2a4,0xbc17826b,0x3d4c34fa,0x3af31597,0x3cfb2a34,0x3b90b90a,0x3ce80da7,0x3cec41dd,0x3cec2f91,0x3c98453a,0x3d957269,0x3e02685e,0x3df2c132,0x3e0f08cb,0x3e0fd707,0x3e17edad,0x3e1dca8c,0x3e249ea3, +0x3e304162,0x3e40f8ed,0x3e528311,0x3e681e31,0x3e7eb4b4,0x3e79b8e8,0x3e68f514,0x3e44e649,0x3e2fdee8,0x3e4c92e2,0x3dd12cbd,0x3c86d9d0,0x3d678820,0x3cfcc451,0x3ca616e5,0x3cccdb61,0x3c934c02,0x3c6d584e,0x3bdbbe3f,0x3c90630e,0x3b541073,0x3aef66f7,0x3c3bcbe4,0x3bf143c2,0x3c8aacb5, +0xbbf3e38b,0x3cdb4d74,0xba818a14,0x3d66b380,0x3de1730f,0x3de4c8e1,0x3e0a9799,0x3e0bfcc5,0x3e16e14b,0x3e1f99f3,0x3e2663f3,0x3e375f5d,0x3e51af28,0x3e7091a0,0x3e8aeff4,0x3e9f2451,0x3e9dc5e0,0x3e8eed58,0x3e64d701,0x3e3bd239,0x3e8d5739,0x3e1e412c,0x3d246c2b,0x3d493d16,0x3cb16f14, +0x3c1cee42,0x3cdedc6c,0x3c3f5bba,0x3c540526,0x3c21cecf,0x3c421806,0x3c2fbff5,0x3b97d6ed,0xbac12178,0x3b9ec1d7,0x3c838b2d,0x3bb94c23,0x3cfc0a96,0x3bf25a88,0x3d8556c4,0x3e0d36fd,0x3e0ea62d,0x3e3e16e5,0x3e4cdf7c,0x3e61c2aa,0x3e6c10f7,0x3e859436,0x3e8f8477,0x3e903571,0x3ea9a0bc, +0x3eafeba1,0x3eab4a09,0x3ea5a7e4,0x3e9b53b7,0x3e91e606,0x3e80d6c0,0x3e9a2bd0,0x3e03191e,0x3c6096cd,0x3d8653ae,0x3d811170,0x3d015304,0x3d330778,0x3c669eeb,0x3c8108f0,0xb82fc02c,0x3c0dafcf,0x3bf8a2a4,0x3bd815f4,0x3c5d5358,0x3c86ff8f,0x3cacb82f,0x3bf13f65,0x3d09fb60,0x3bc07b73, +0x3d9ce3ac,0x3e1e7153,0x3e22e413,0x3e595906,0x3e66b5b3,0x3e7fc06a,0x3e89f455,0x3e88af01,0x3e8a8d72,0x3e8e2e5d,0x3e9fad4b,0x3eaa8185,0x3eaf5903,0x3eb40538,0x3eaf29f3,0x3ea9b428,0x3e91ada4,0x3ec8e1f3,0x3e33d418,0xbc3e53cc,0x3d9e654c,0xbae50000,0x3d649c84,0xbc14061a,0x3cc2159e, +0x3b9f41ab,0x3cc12d49,0x3c4a53a1,0x3bdc38de,0x3c4e078a,0x3c6133de,0x3c8feee4,0x3d101c44,0x3c7e8306,0x3d35a757,0x3cbcbbcc,0x3d92eddc,0x3e24939f,0x3e21dd97,0x3e577100,0x3e8107c0,0x3e9b39f6,0x3eb32895,0x3ebd665a,0x3ebd0f21,0x3eb12a54,0x3e9edc5e,0x3ea1033f,0x3eb3442b,0x3ebfc82a, +0x3ecb4568,0x3ee537e1,0x3ec6aef4,0x3edd6967,0x3e53e71f,0x3cf6f3da,0x3dfa4e3e,0x3c22ef66,0x3d7a11de,0x3cdd1847,0x3c90a6a4,0x3b989102,0x3ca35b3d,0x3cdb269c,0x3c8196c3,0x3c1a9dd8,0x3b2084a3,0x3ca84d9e,0x3c86e7ad,0x3c920006,0x3d535c60,0xbbb3d49c,0x3dab615a,0x3e18ddc9,0x3e1666c9, +0x3e3f3dfa,0x3e624a2a,0x3e830a64,0x3e8f8696,0x3e9e3399,0x3ea5c6f9,0x3ea7ce1f,0x3eae3532,0x3eaebb2b,0x3eaceb1f,0x3eaf980d,0x3eb16b96,0x3ec2f11d,0x3ec0d2ac,0x3ec0fa35,0x3e8136ab,0x3ce1613a,0x3d6be9d8,0x3d8ceb29,0x3c76d985,0x3d5b75bd,0x3d43c2cf,0x3c231b88,0x3c970205,0x3b82f96b, +0x3c7718b5,0x3cac9266,0x3c910634,0x3c9f26bf,0x3c695c43,0x3d0e8bbc,0x3d2d1d54,0xbbb02f4c,0x3dc5df37,0x3e1adb91,0x3e05d927,0x3e14ea98,0x3e28abe1,0x3e4facc0,0x3e7fd6b7,0x3e8e7a66,0x3e9bf12c,0x3ea7f980,0x3e9adcde,0x3e94ced1,0x3e9ce3c1,0x3e968a79,0x3e9b8af3,0x3eaf4b48,0x3eaeb9c3, +0x3e871eb8,0x3e432124,0x3c597938,0x3d549215,0x3cb6433f,0x3c66ad21,0x3d16c0d7,0x3cb1ff3c,0x3d0afe6d,0x3cd86cad,0x3d3f00ed,0x3c17188f,0x3c450b5b,0x3cad5ae3,0x3d03a62c,0x3d087ed8,0x3d48ae0f,0x3d4740e8,0x3ccd0da2,0x3dba995d,0x3e2148c7,0x3e12056e,0x3e1e73f3,0x3e2fe45f,0x3e420cef, +0x3e4b5ca8,0x3e52b60f,0x3e51f68a,0x3e503a06,0x3e5a3a26,0x3e6d12ac,0x3e7d1865,0x3e786b0a,0x3e71e50f,0x3e6e6fef,0x3e6916e0,0x3e4cdaf7,0x3e02191e,0x3d45534a,0x3db7fee8,0x3d0ff223,0x3d311970,0x3cfcd265,0x3ccb28b2,0xbb08c5d4,0x3d34d285,0xbc8d227a,0x3d80b58c,0xbb0d931d,0x3d09f2b3, +0x38962bc6,0x3d07cc2a,0x3cab5565,0x3d181f55,0x3ca9595c,0x3dbb20d2,0x3e1185bb,0x3de54f1e,0x3dff5960,0x3e058238,0x3e12686e,0x3e19443b,0x3e32bff4,0x3e478537,0x3e5bf84a,0x3e61b9f1,0x3e64c828,0x3e69ae3c,0x3e62a692,0x3e581165,0x3e54cf24,0x3e3814bd,0x3e210374,0x3e137ec2,0xbd314e2a, +0x3dd21757,0x3d0706c3,0x3d2f2b9c,0x3d9cdee6,0x3d8ac808,0x3ddbb83c,0x3da2cdc5,0x3d262ce3,0x3d8fbc44,0x3daedb8a,0x3d9cc2a3,0x3d2e51ef,0x3d869d54,0x3d89836e,0x3d997a33,0xbcb690f6,0x3dead195,0x3e02007f,0x3df4baf6,0x3e001c1e,0x3dfb500b,0x3dfefd2a,0x3dfca0ef,0x3e0dcdf9,0x3e17299f, +0x3e21a6b4,0x3e297a6c,0x3e3288d4,0x3e3c480c,0x3e344b56,0x3e2c49e5,0x3e29034f,0x3e1d34ed,0x3e1710fb,0x3e3eaef4,0x3cfdd759,0xbccb286b,0xbd8efddf,0x3d96688d,0xbca67db0,0xbd9a5c5a,0xbda5e43b,0xbda00bdd,0xbd70fda5,0xbd9b3bb0,0xbda63b49,0xbd9d8384,0xbcaeb0f1,0x3d5745f5,0xbdac5d81, +0xbcc1857e,0x3cc1c426,0x3e349546,0x3e0ebba6,0x3e14ab28,0x3e14eb73,0x3e14beca,0x3e150f7c,0x3e134260,0x3e1725db,0x3e19d2ee,0x3e1cba26,0x3e20f6f0,0x3e248a52,0x3e2a3649,0x3e263bfd,0x3e246166,0x3e220a03,0x3e20aa6b,0x3e2ff142,0x3ebd3e60,0x3eb1330d,0x3ec8464f,0x3e868ae6,0x3e1f9162, +0xb9c67cc8,0x3e9a6b90,0x3e2858e1,0x3c5cc5da,0x3bc30407,0x3bb42eec,0x3c9cc248,0xbb160584,0xbbc2ca14,0xbbcfb1b0,0x3e215c6b,0x3e8b51af,0xbcade073,0x3e1c3a7c,0x3e760d09,0x3eb85558,0x3ea41f7e,0x3eaca088,0x3eae9b71,0x3eb016af,0x3eb1e22b,0x3eb3c2b3,0x3eb61c88,0x3eb92710,0x3ebc8f09, +0x3ec0b6b4,0x3ec4b19c,0x3ecb2247,0x3ec8455a,0x3ec53914,0x3ebd39b0,0x3ebbd0b2,0x3ed4592d,0x3ed0b71f,0x3e046116,0x3ea8b74a,0x3e65ccfe,0x3e5be330,0x3e82d61a,0x3e6a5747,0x3e8b0b0a,0x3e810a4b,0x3e4ff18d,0x3e7a0485,0x3e744e71,0x3e6c4883,0x3e35e945,0x3e533946,0x3e6cf826,0x3e70d49a, +0x3ddfe003,0x3ea5f80d,0x3eacc212,0x3eb2a993,0x3ebbb64f,0x3ebf1ceb,0x3ec4a393,0x3eca25b8,0x3ecfe5eb,0x3ed82a7d,0x3ee2b844,0x3eef968b,0x3efda383,0x3f073132,0x3f066b70,0x3f01a647,0x3eeaddaa,0x3ee0bea1,0x3eeb3984,0x3ec88f74,0x3e8363a9,0x3e851ebc,0x3e2644bb,0x3e2ab4eb,0x3e19c930, +0x3e142ac5,0x3dd026a7,0x3e193276,0x3da449ac,0x3e2c11b3,0x3d9d0b2a,0x3e103172,0x3dbb30c5,0x3e0fc466,0x3e1aeb39,0x3e1719f9,0x3e24a834,0x3e76471e,0x3ea2b2ba,0x3ea89ebd,0x3ebe2fed,0x3ec46490,0x3ecf8357,0x3eda344c,0x3ee644a1,0x3ef5cf58,0x3f051831,0x3f1008c1,0x3f1dd872,0x3f2d34b6, +0x3f2a2b02,0x3f2123de,0x3f09131d,0x3ef91e2e,0x3efec4ce,0x3eb997e6,0x3e506030,0x3e65fe3d,0x3e1da56f,0x3df627eb,0x3de190f4,0x3d942eda,0x3d74b5f0,0x3d1addf9,0x3d5d58fe,0x3c8aa7e0,0x3cb97c36,0x3d1bc907,0x3d120c6f,0x3d86eebf,0x3ce400da,0x3dc35506,0x3d955567,0x3e367c8d,0x3e89e963, +0x3e987600,0x3eb41677,0x3ebbeadb,0x3ecba170,0x3edad066,0x3ee9752d,0x3f0100b9,0x3f105b07,0x3f22f346,0x3f3b06aa,0x3f575d60,0x3f56ffd9,0x3f46c53f,0x3f20099d,0x3f06fea1,0x3f29c90e,0x3ef304f4,0x3ea4819c,0x3e7b9b40,0x3e1c4056,0x3def2ed2,0x3e096bd0,0x3db17389,0x3d987273,0x3d63dc2f, +0x3d5e4662,0x3d294f9b,0x3cf38c11,0x3c9058a5,0x3d29297b,0x3d9323b3,0x3d882d09,0x3dfc8a89,0x3df94f43,0x3e6b464d,0x3ec01913,0x3ed6eb03,0x3f060659,0x3f11f518,0x3f201a63,0x3f2b556c,0x3f3a937b,0x3f4673c3,0x3f492dd4,0x3f6e74a7,0x3f781c98,0x3f720f4e,0x3f6618d9,0x3f580317,0x3f4af428, +0x3f335b37,0x3f4967d1,0x3eed290e,0x3e8b0188,0x3e97b871,0x3e903a5f,0x3e3625e7,0x3e225e96,0x3db3ac73,0x3d95647f,0x3d1cecc3,0x3d4188ae,0x3d3b6e3c,0x3d2ffe21,0x3d811b82,0x3d98eafe,0x3dbcafd8,0x3dd3823a,0x3e216438,0x3e0a0d14,0x3e8a7955,0x3ed4c715,0x3ee8cec7,0x3f117543,0x3f1fb39e, +0x3f33d295,0x3f474aef,0x3f4e75d8,0x3f5677ff,0x3f5bb981,0x3f73e1e8,0x3f805d3d,0x3f80c405,0x3f813f54,0x3f79b8c5,0x3f6ed14d,0x3f531cbe,0x3f792a1e,0x3f1ea472,0x3e80fcda,0x3e9ff2eb,0x3e30500d,0x3e6d6999,0x3d97e532,0x3de73b2f,0x3d6cc3d1,0x3dbf99d5,0x3da81c02,0x3d5bee64,0x3d8183c4, +0x3d9a8ec9,0x3db59271,0x3e16f79a,0x3dff3225,0x3e344037,0x3e35113b,0x3e82da60,0x3ed074ca,0x3ee3748c,0x3f0ffe5e,0x3f24b379,0x3f404483,0x3f5d06f9,0x3f701eaf,0x3f7b3cf8,0x3f7bebcb,0x3f6c3529,0x3f68c9f3,0x3f72b167,0x3f75e995,0x3f7f2739,0x3f881629,0x3f7f9f65,0x3f7502bf,0x3f2e5bf6, +0x3ebef280,0x3ecc7e43,0x3e25bd13,0x3e725cd2,0x3e072203,0x3ddcd1fb,0x3d7dee80,0x3dc183fd,0x3e1753d5,0x3db31688,0x3d7074b2,0x3d8629c3,0x3de6b3bc,0x3ddf1f15,0x3e159667,0x3e6103e3,0x3e0cadc4,0x3e905ce0,0x3ec2b5f8,0x3ecf71e4,0x3efeb354,0x3f1a911b,0x3f325789,0x3f43d0cd,0x3f58a6d4, +0x3f64c835,0x3f698203,0x3f77f494,0x3f7b713a,0x3f7aeefc,0x3f6d7c8e,0x3f6093d0,0x3f5ae230,0x3f6ac3a3,0x3f61f977,0x3f3bda06,0x3ec431fb,0x3ea93f2e,0x3e981e66,0x3e27285d,0x3e4c8cf4,0x3e4f61a9,0x3dd23ac1,0x3deecba9,0x3da3ee9f,0x3db80b95,0x3dc93b66,0x3dd083a9,0x3df1eebb,0x3df0470c, +0x3e310972,0x3e486fe6,0x3e0dce87,0x3eb53116,0x3edc2e46,0x3ed2ef30,0x3ed59157,0x3ef40688,0x3f10c753,0x3f2f2618,0x3f427a49,0x3f552f5d,0x3f64fb6b,0x3f5dea65,0x3f5ae325,0x3f662f08,0x3f59f7d8,0x3f5ba528,0x3f61a727,0x3f666c0a,0x3f3630cb,0x3f1cff6b,0x3e9cd9a0,0x3ea2635b,0x3e4b5d64, +0x3e3dc4dc,0x3e490217,0x3e1434f7,0x3e2305e3,0x3e0aa062,0x3e39c441,0x3dadf83a,0x3dbfccf3,0x3df15b45,0x3e1f2057,0x3e41f430,0x3e7ac723,0x3e76aea5,0x3e624a8b,0x3eb1cc0e,0x3eea4a56,0x3ee12ee8,0x3ee04d39,0x3ef6eb47,0x3f07c374,0x3f12d55e,0x3f1d8732,0x3f2527fa,0x3f2bd475,0x3f33b5ae, +0x3f3cfd65,0x3f4250fd,0x3f3f6dc6,0x3f3adc9e,0x3f30ff68,0x3f315be0,0x3f16f3c4,0x3ef2859f,0x3ea5b2f3,0x3ebc3b1c,0x3e7bcfaa,0x3e6d5f2f,0x3e3edecb,0x3e1f6b50,0x3dd153e2,0x3e4146c2,0x3daf0d73,0x3e77e632,0x3dac2c1c,0x3e3b4b7b,0x3dd0373f,0x3e4264d3,0x3e34d971,0x3e5fdcd8,0x3e5cfcc1, +0x3eaf3236,0x3eda79db,0x3ec5a313,0x3ed2bfb9,0x3edf9afb,0x3eeed6c6,0x3ef89318,0x3f0bdea2,0x3f187ca8,0x3f2508d1,0x3f2a4165,0x3f2e61e6,0x3f336f78,0x3f2e45c0,0x3f286058,0x3f237e2f,0x3f155f03,0x3efbdf75,0x3efe031b,0x3dd39d38,0x3ecb34fb,0x3e866f17,0x3e8642af,0x3eab0011,0x3e9a2bc8, +0x3ec368cd,0x3eb7e7fe,0x3e8d5138,0x3eb23f82,0x3eb434ae,0x3eace303,0x3e835ff0,0x3e9854ee,0x3ea72d07,0x3ea146b6,0x3de2d6a6,0x3ed0699e,0x3ed0ff8e,0x3ed19c2c,0x3ed6c420,0x3ed81791,0x3edcb3d9,0x3edefa69,0x3eefd589,0x3efacaf1,0x3f03622c,0x3f07ced7,0x3f0c8d61,0x3f1265b3,0x3f0ccc0d, +0x3f085b1f,0x3f055367,0x3f0049ba,0x3eed5668,0x3f0851b4,0x3ea976fb,0x3e40d30a,0xbca3b156,0x3ecfede4,0x3e4bfaf6,0xbc2419a0,0xbcbba915,0xbcce003a,0x3b5fe713,0xbd01990f,0xbd1c8d29,0xbd0f1c67,0x3e474a11,0x3eb9e655,0xbd76c714,0x3e3c9d20,0x3e9d8d6f,0x3f012267,0x3ee0fb7e,0x3eea0982, +0x3eea057f,0x3eead1fb,0x3eeb40a3,0x3eea05ff,0x3eee2217,0x3ef148a0,0x3ef49e24,0x3ef98a48,0x3efdbe45,0x3f022b24,0x3effbf26,0x3efda656,0x3efa30e5,0x3ef9ac5b,0x3f082bd2,0x3e55bff9,0x3e4bb958,0x3e12cedf,0x3eadee33,0x3ecd9629,0x3ec89e80,0x3e8d4aa3,0x3ec02004,0x3ec94ffa,0x3eca2660, +0x3ec58973,0x3eb87a9f,0x3ec024b0,0x3ec1f2e5,0x3ebdbb44,0x3ebc699f,0x3e93c889,0x3ec1eaf2,0x3ebfe052,0x3ea7797e,0x3e134842,0x3e3ecd9f,0x3e3b8e11,0x3e3d14b5,0x3e404b63,0x3e4380bb,0x3e474d06,0x3e4c64b7,0x3e4f0f96,0x3e50cde8,0x3e510799,0x3e51f19a,0x3e536056,0x3e5368da,0x3e532f70, +0x3e53c25f,0x3e49f47f,0x3e5aae82,0x3e74d658,0x3edf1eb6,0x3e6a174c,0x3e99671f,0x3e8e4651,0x3e6f042c,0x3e6a0b11,0x3e37e5f8,0x3e5c80f0,0x3e835748,0x3e64fca5,0x3e4fa609,0x3e5c6f75,0x3e7a1984,0x3e6e1b5d,0x3e7fad3c,0x3e6b7278,0x3eafdb56,0x3e4da08c,0x3e30d4a6,0x3e45a018,0x3e446d7d, +0x3e4e0013,0x3e563acf,0x3e6361ec,0x3e7332e6,0x3e7d3a38,0x3e8088a0,0x3e7fc39c,0x3e812def,0x3e84492f,0x3e85aea3,0x3e854822,0x3e8388e3,0x3e7943d6,0x3e4e7388,0x3e839d15,0x3ead296c,0x3e8413af,0x3e896cf2,0x3e6c26b3,0x3e58ea65,0x3e43400c,0x3e487f82,0x3e09fb3a,0x3e4e41f1,0x3e00bd73, +0x3e33086e,0x3e1cb208,0x3e3be37e,0x3e306351,0x3e488967,0x3e4db166,0x3e7909be,0x3e495cf1,0x3e160953,0x3e3e8754,0x3e3fa509,0x3e5323f1,0x3e6554c1,0x3e7cc060,0x3e8cc723,0x3e945688,0x3e98bba9,0x3e9a698e,0x3e9be62a,0x3e9e37ac,0x3ea05146,0x3ea10d78,0x3e9c2451,0x3e8d22a9,0x3e56e8c9, +0x3ea1bd29,0x3eadd2a3,0x3e58f6dc,0x3e3d3e90,0x3e2e873f,0x3e057f5e,0x3dbd068d,0x3d84d6ed,0x3d629cf8,0x3d1eb30d,0x3d286cc7,0x3d305c88,0x3d24d20e,0x3d5fe81a,0x3d97a228,0x3de284cc,0x3dde22a3,0x3e2d4336,0x3e180b96,0x3df262a3,0x3e1885ee,0x3e2351bc,0x3e3e9d50,0x3e58e0b0,0x3e7c67b0, +0x3e96359c,0x3ea52caf,0x3ea9c547,0x3ea96f08,0x3ead6e06,0x3eb5d2f9,0x3ebdb6b6,0x3ebf2951,0x3eb3237f,0x3e9f6f66,0x3e38a5c9,0x3e86bc14,0x3ed34d72,0x3e961725,0x3e756b50,0x3e52132a,0x3e123158,0x3dfd135d,0x3dbf4376,0x3d91d552,0x3d9456e7,0x3d5f3afc,0x3d616b78,0x3d689ef8,0x3d9fa6f7, +0x3dbfde1e,0x3e01c3c9,0x3e19164b,0x3e6c3a4e,0x3e65e02f,0x3e6811cd,0x3e9a36a3,0x3ea124ca,0x3eb0cdc3,0x3ec3c93f,0x3ee58f13,0x3edf658c,0x3ee88962,0x3efc021b,0x3f028375,0x3f00e460,0x3eee3e06,0x3edcecbf,0x3ed2734d,0x3ed11cff,0x3eb21605,0x3e856416,0x3edc6f93,0x3f07827a,0x3eb8dc7b, +0x3e9957a6,0x3e7b5050,0x3e2e43bb,0x3e1de746,0x3dd88b7d,0x3db9a1a9,0x3da6d728,0x3d8c12a1,0x3d82034d,0x3d8da5d1,0x3da637df,0x3ddea6d2,0x3e3c34f5,0x3e538449,0x3e943ff8,0x3e86b400,0x3e6baae5,0x3e88bf77,0x3e7a83f6,0x3e950cb1,0x3eaeaaa2,0x3ed2df13,0x3f032dec,0x3f157724,0x3f1d4e48, +0x3f231c53,0x3f2156be,0x3f0ffdfa,0x3f085841,0x3efa9013,0x3ee18f5c,0x3ecb7830,0x3e434e20,0x3ef7df06,0x3f1d657d,0x3eb469c8,0x3ed3b503,0x3e8541d6,0x3e7b3992,0x3e1fb57c,0x3dfd2c32,0x3dedd014,0x3e2345c0,0x3de80068,0x3de89f6d,0x3e048968,0x3e09d0d1,0x3e2263d1,0x3e6a984d,0x3e550521, +0x3e8bfd73,0x3e772aa6,0x3e20ad2c,0x3e5c1e98,0x3e5571d1,0x3e32401e,0x3e1e3840,0x3e244536,0x3e68950b,0x3eb07d7b,0x3f0133a8,0x3f19fcc3,0x3f127607,0x3eebc91a,0x3ec79cec,0x3ea6fff6,0x3e3b07bf,0x3e866ddd,0x3d2ae3b7,0x3ed36c93,0x3f1a58b7,0x3e989da9,0x3eb0dfa6,0x3e60d585,0x3e433ced, +0x3e1dba0d,0x3e08a778,0x3e119d7b,0x3e8439ea,0x3e089cbc,0x3dc5edd9,0x3e118e3a,0x3e295365,0x3e46d4d3,0x3e7f07e6,0x3e809c3b,0x3ea8c5ab,0x3e79eb7e,0x3e2117c8,0x3e4787a9,0x3e46fc44,0x3e783b06,0x3e85d66d,0x3e8e6950,0x3ea010dc,0x3eb644aa,0x3ecf67ac,0x3efc0f9a,0x3f0e2324,0x3f17b639, +0x3ef6a17e,0x3ec67418,0x3e7743ca,0x3e705982,0x3e5581ff,0x3ea08c57,0x3f18a705,0x3ed11192,0x3e992023,0x3e95a79e,0x3e5f6345,0x3e5c1113,0x3e54a719,0x3e4342f5,0x3e534c06,0x3e1d0cb7,0x3e162305,0x3e31d973,0x3e5402bf,0x3e73c866,0x3e84cdc4,0x3e9356a9,0x3ec2b414,0x3ead5bca,0x3e8ae941, +0x3e9778e4,0x3e7538c5,0x3e8545b2,0x3e84f5dc,0x3e8de2d3,0x3e989563,0x3eab5a3c,0x3ec1e2de,0x3ef8a799,0x3f0f6919,0x3f195dbd,0x3f1854ec,0x3f0c0a0d,0x3ed0307c,0x3ec7403f,0x3ec4ac8c,0x3ed6cada,0x3f1adb62,0x3eeaab7d,0x3ec26065,0x3eb4ab7f,0x3e8c1a87,0x3e74b400,0x3e637d4f,0x3e619e09, +0x3e5a3236,0x3e437f68,0x3e3ab418,0x3e459c4b,0x3e603487,0x3e8b3c05,0x3ea19348,0x3eaeda1d,0x3ecd0046,0x3ec03939,0x3ea73bee,0x3eaca7fc,0x3e8a400d,0x3e88ca06,0x3e8fae1b,0x3ea862ee,0x3ec658d2,0x3ef0216c,0x3f0ebfa0,0x3f16b9b8,0x3f17d7d1,0x3f161653,0x3f1bb2c0,0x3f18c8e7,0x3f0878d8, +0x3f0143f5,0x3ee78aa7,0x3eff7320,0x3f01e37a,0x3ed42618,0x3ece35e1,0x3eb01af7,0x3ea18b14,0x3e871c5f,0x3e926e93,0x3e80d2de,0x3e9a1719,0x3e85c8e4,0x3e8ac545,0x3e8fa74e,0x3e94bacc,0x3e9eb364,0x3eaf1556,0x3eb624d6,0x3ed02a13,0x3ebc68cc,0x3eab52d6,0x3ec3b201,0x3ec85b4c,0x3ed120f8, +0x3ed136f8,0x3ed2d5af,0x3ed738df,0x3ed99a38,0x3edbd48d,0x3eea312c,0x3efabad5,0x3f05441f,0x3f052c18,0x3f07c90e,0x3f085f12,0x3f05609b,0x3edc5720,0x3ee92038,0x3f0ae2f4,0x3ee1df47,0x3ef1a768,0x3ee2ebbd,0x3ecf1221,0x3ec54cc3,0x3eb80206,0x3ecb2bc8,0x3ed6b930,0x3ece8ff6,0x3ebbc23b, +0x3ec01186,0x3ecb1340,0x3ec9f6ef,0x3ed38f32,0x3ec9648c,0x3ee5df07,0x3ed404dc,0x3ecf4914,0x3edcac53,0x3ee07d8e,0x3eea2890,0x3ef37e13,0x3efdd967,0x3efa79a1,0x3efa3800,0x3ef9087b,0x3ef84122,0x3ef541ab,0x3ef56476,0x3eef5607,0x3eebb839,0x3ee5e635,0x3ee6a81b,0x3ec8ffba,0x3eb8de0f, +0x3f085a15,0x3f0f471c,0x3ef81b51,0x3ef6e88e,0x3f0b4865,0x3efd2988,0x3eff7dac,0x3efb7de0,0x3ef0cc8a,0x3ef6291a,0x3efa78c5,0x3ef59a18,0x3f09c302,0x3ef89e8e,0x3ef2950c,0x3f0b77ff,0x3f049b1a,0x3eb2940a,0x3ec22f6a,0x3ec541ce,0x3ec724a3,0x3ec9f072,0x3ecb612a,0x3eceeec8,0x3ecda2ec, +0x3ecdc45a,0x3ecdc591,0x3ecd3845,0x3ecce581,0x3eccaaa8,0x3ecb90da,0x3ecad0c0,0x3ec8f7a8,0x3ec9573f,0x3ed73623,0xbdb20078,0xbda3068e,0xbe0820ea,0xbc803ecd,0x3de4b7f8,0x3ea9edf5,0xbd96ae4e,0x3db6fd1c,0x3e967c23,0x3e9a19fc,0x3e99d4be,0x3e957de3,0x3ea00574,0x3ea2f557,0x3ea4dd1d, +0x3dc0e3ed,0xbd30e039,0x3eb3481a,0x3de1e6de,0x3b68bd51,0xbddd93df,0xbd840eea,0xbda93e8e,0xbdaf3a3a,0xbdb0e0d5,0xbdb133e5,0xbdaecc64,0xbdaf585a,0xbdb4d198,0xbdbc3cab,0xbdce01a6,0xbdde9199,0xbdfe2844,0xbdeb1e88,0xbde14631,0xbdc6d5b4,0xbdcd7e40,0xbde4ea27,0xbdf54122,0x3e420b20, +0xbd8add3a,0x3d0abd05,0x3d3bc163,0xbc645793,0x3bd9b2d4,0xbd60075b,0xbd2a93a0,0x3c72826c,0xbd048558,0xbca079b2,0xbc7897e0,0x3d73352b,0x3d14fdb1,0x3b33d79f,0x3c9c1a3f,0x3e2fbf12,0xbd859b02,0xbd863396,0xbda306de,0xbdbf5c78,0xbdc36ed8,0xbdc3a450,0xbdb936df,0xbdb350ac,0xbdc073aa, +0xbddd3fbe,0xbe0a20bd,0xbe292c8e,0xbe563a55,0xbe497eb1,0xbe3a1e73,0xbe102686,0xbe084c84,0xbe0535b7,0xbd9be4e2,0x3c50a154,0xbc6bd0e0,0x3d88832a,0x3d612e57,0x3d594f5e,0x3d0682b4,0x3d82d24b,0x3c803a1e,0x3db064e9,0x3ae3b1d3,0x3dc405c8,0x3cd9cd84,0x3db16b49,0x3d41b31f,0x3d5eb511, +0x3d9d2c1b,0x3d88cab3,0x3c177ba0,0xbd5e54f3,0xbd87af14,0xbdcfec92,0xbdd60dab,0xbdd50c2f,0xbdc0d5a7,0xbdb7a2cf,0xbdc8906b,0xbdfbbf51,0xbe2b3ad4,0xbe6e7e40,0xbea4878b,0xbe935197,0xbe83e80d,0xbe2a4e46,0xbe0ede22,0xbe00f997,0xbc33374d,0x3da9dd48,0x3b8d8068,0x3d0d9def,0x3d6c2a9d, +0x3d3650d1,0x3d38b792,0x3cd8fe0a,0x3d091d63,0x3cd8d091,0x3d50652c,0x3d2df52b,0x3d2153d0,0x3d565a12,0x3d4de086,0x3dce3407,0x3d95d50d,0x3ddba832,0x3d3ebb48,0xbc9b8449,0xbd47d2f3,0xbdbcb489,0xbdbc2736,0xbdb6deed,0xbd89fdad,0xbd403954,0xbd836abc,0xbdcf1584,0xbe388466,0xbe994a6e, +0xbeecdde4,0xbedd5f2b,0xbebe878b,0xbe6073e0,0xbe12fc59,0xbe9538cf,0xbe40a8c1,0xbd572735,0x3cb15c7f,0x3d71b917,0x3d65df97,0x3b18ece6,0x3cdfb0b7,0x3c5c813b,0x3c98e3c3,0x3d135146,0x3d360886,0x3d607893,0x3d710cda,0x3d6ec94d,0x3d65b833,0x3dae55b7,0x3daedb2a,0x3df5413a,0x3d251b75, +0xbd92a577,0xbdca6499,0xbe46b0bb,0xbe612259,0xbe719906,0xbe631925,0xbe802ab7,0xbe8019e0,0xbe405e31,0xbed3c684,0xbeeebcc8,0xbeeac535,0xbecce332,0xbeb97136,0xbea9f316,0xbe918992,0xbefeb445,0xbd698cfd,0x3e2005e4,0x3d93b002,0x3cdf5abf,0x3db57a2a,0x3d8ab514,0x3deaf5be,0x3d9e30cb, +0x3d9ec099,0x3da13fea,0x3d22614f,0x3cdfca01,0x3c684953,0x3cb090b6,0x3d12b566,0x3d90a04f,0x3d8aa881,0x3e143f00,0x3d1974b3,0xbdaeb810,0xbe017ecd,0xbe8cbfb6,0xbeab7af3,0xbed2e097,0xbef04e67,0xbedc140b,0xbeca6745,0xbeb1a599,0xbee16243,0xbef5a9f9,0xbeffe10a,0xbeee7cc7,0xbee96136, +0xbef5733c,0xbef873d9,0xbf1ed7dd,0xbe7bc2a6,0x3e3d3e1c,0x3d30e01a,0x3e18af04,0x3cd5a79a,0x3e26481f,0x3d9f2f0c,0x3dc1c2b3,0x3d8e0778,0x3e18686c,0x3df097a6,0x3de5745a,0x3dc99926,0x3d9db07b,0x3d11da8a,0x3df368fd,0x3da3af04,0x3dafa1d7,0x3cfa37f1,0xbe09b3f7,0xbe454c6c,0xbeae56ec, +0xbed7d653,0xbf074d80,0xbf230132,0xbf30a207,0xbf2c47a4,0xbf12f1c5,0xbebc6406,0xbe8ca41a,0xbe9ec23b,0xbe75c958,0xbe9f38e5,0xbee94785,0xbf08f3e1,0xbee0ffa9,0xbe8e4d08,0x3ceaf712,0xbceacfdc,0x3e2fd2e0,0x3cdb588c,0x3dd69d06,0x3dae4039,0x3dd1f249,0x3dd37f61,0x3e4ea42b,0x3da74ce0, +0x3d7dfccb,0x3dd46c07,0x3da6485f,0x3dfd0f00,0x3dfffd85,0x3d8a73b1,0x3e24ce9b,0x3b96582a,0xbdd8a30a,0xbe0c0dc4,0xbe75139c,0xbeb52255,0xbee7b173,0xbf02b217,0xbf10f46a,0xbf0e1928,0xbefa1761,0xbeeb4336,0xbec2347f,0xbea69266,0xbe3a574a,0xbd4e10b6,0x3db6e6cb,0xbe85e2d1,0xbea21e3d, +0xbeb77127,0xbc624ef3,0x3c2ee7d7,0x3c8c3419,0x3df5e16e,0x3d7775f5,0x3cc2134e,0x3e04a851,0x3debdf42,0x3e49bf3e,0x3df7951f,0x3dd6a7e6,0x3dfc7b11,0x3e05507f,0x3e2ac256,0x3e014da4,0x3e14fdd3,0x3e7c7dd4,0xbb85fda5,0xbdeeefff,0xbde31801,0xbdfe18de,0xbe34b7fc,0xbe87b8f8,0xbec369e7, +0xbee1629f,0xbef6941f,0xbef84853,0xbec485bd,0xbe8ca97f,0xbe7d0bba,0xbdc77a34,0xbdd0af55,0xbe1c383e,0xbe86202f,0xbe54da06,0xbe2e282e,0x3e257d24,0x3db3ffa4,0x3e2f5800,0x3e0ddbb6,0x3dbc15e4,0x3de69397,0x3def0aa0,0x3e193b74,0x3da767cf,0x3e336e4c,0x3e1b81e8,0x3e0a6e23,0x3de60509, +0x3dd2b027,0x3d96d09b,0x3de9e5ae,0x3e39af64,0x3ce1489a,0xbdb4755c,0xbd6cff8f,0xbda77b26,0xbe003d53,0xbe3143c0,0xbe5380d0,0xbe71c51b,0xbe6f0071,0xbe4dcfc4,0xbe483687,0xbe4060f9,0xbe1b98c8,0xbda4073a,0xbd56120b,0xbd021e87,0xbdecc29a,0xbd90c8b2,0x3d02a431,0x3e414c68,0x3daf977b, +0x3e47767f,0x3e287eec,0x3e3f0d14,0x3e30b13b,0x3e703b04,0x3df3c775,0x3e70f549,0x3d685d6a,0x3e7e3eea,0x3e072b01,0x3e7b2246,0x3e1f5479,0x3e42b384,0x3e2475ef,0x3e3f4856,0x3d4d3442,0xbd09b285,0x3d3949f7,0x3d27d072,0x3c8bbb94,0xbc771305,0xbd051911,0xbdad1998,0xbe018798,0xbe313ae8, +0xbe2da90d,0xbe254867,0xbe1f6215,0xbe00d494,0xbda5b43c,0xbccfda68,0xbc3052ba,0xbca1f59d,0xbd190b72,0x3ef3b4a5,0x3d4b385b,0x3e5431a3,0x3e45b92c,0x3d983ebd,0x3dbc0cc4,0xbc784229,0x3c63ee0e,0x3de683cd,0x3c75e32a,0x3bc656b2,0x3c6ac682,0x3e14a56e,0x3de803d5,0x3dad1393,0x3def554b, +0x3ed07382,0x3d0ed124,0x3d58167f,0x3d8ec196,0x3d9d8f78,0x3dbc0c16,0x3dcfe68a,0x3dec22f6,0x3d99d60f,0x3d5282c1,0x3ccd8ed8,0x3c0ba8f5,0xbc494906,0xbd0e4a38,0xbcd6f6ee,0xbccb8815,0xbcecf24d,0xbca22b73,0xbd38cd71,0xbe144d01,0x3e04b876,0x3ea4f8e2,0x3f1c1e5e,0x39fe9be3,0x3e8ff8ff, +0x3f1068c0,0x3f150567,0x3f14af7b,0x3f0bc380,0x3f167e5b,0x3f18ecda,0x3f173ddf,0x3e8d4fef,0x3d38b8b5,0x3f24589b,0x3e9db9c5,0x3e115e8e,0xbdfa8632,0xbce70d4e,0xbd351524,0xbd1a95b8,0xbd00b972,0xbcce1ad9,0xbc3c95c1,0xbcbcc15b,0xbcf19def,0xbd165712,0xbd4a156d,0xbd76aa46,0xbd97ec3f, +0xbd92fc30,0xbd930c1d,0xbd8fd6a7,0xbd93d351,0xbdc274b4,0x3d898d77,0x3d8046f3,0x3deb9726,0xbd222642,0xbdf90cfb,0xbe1a8e4c,0x3bd648bb,0xbdccb159,0xbe190227,0xbe1d1bc8,0xbe175665,0xbdfc2ef1,0xbe0dac04,0xbe0ee109,0xbe0977b0,0xbdc43c09,0xbc0b4eb7,0xbe0d4d19,0xbdcae833,0xbd1416ba, +0x3dccc590,0x3d830de0,0x3d8bac7b,0x3d831972,0x3d7a3220,0x3d70d332,0x3d702f66,0x3d5dc842,0x3d5c0e25,0x3d60b79f,0x3d695788,0x3d72d60c,0x3d777559,0x3d85792c,0x3d8375f8,0x3d632d31,0x3d8a31b9,0x3db23b69,0x3d9d8d37,0xbe10da40,0x3d60fd0e,0xbce670c5,0xbc9a35cd,0x3c999265,0x3c5817e8, +0x3d5561ce,0x3cf52bc9,0xbb925351,0x3cd97550,0x3d15438f,0x3cafc774,0xbaf29dca,0x3c35be95,0x3c1e4d79,0x3cf67d19,0xbd8ba95a,0x3d9d315a,0x3dc60f9b,0x3dabf73d,0x3da0e229,0x3d8fb360,0x3d859a54,0x3d837aec,0x3d4fea8b,0x3d3fbb35,0x3d5132f2,0x3d650edd,0x3d6c2a88,0x3d53e08d,0x3d808f17, +0x3d8590bf,0x3d50a3cd,0x3d8e0938,0x3e18efb5,0x3dcf1863,0xbc7741f1,0x3cd43a32,0xbcdb0d26,0x3aee8fa2,0xb98c93a0,0x3bfa8151,0xbc595310,0x3d2ad7e2,0xba322ce1,0x3d8863d4,0x3c414567,0x3d042e6d,0x3c53834a,0x3d0f1062,0x3cac9a99,0x3d0e6bd2,0x3c854761,0x3d93b4a2,0x3df0a273,0x3db01f83, +0x3d9758b0,0x3d638a3c,0x3d31b92d,0x3d3547f3,0x3cb94d7f,0x3cc23911,0x3cfb80aa,0x3d06efdd,0x3d26c90e,0x3d140cc6,0x3d8304ba,0x3d7a233b,0x3d30b331,0x3db5f93f,0x3e457790,0x3da1ca7c,0xbb4af62f,0x3da39500,0x3d16a778,0x3cc3c790,0x3d11957d,0x3d13c247,0x3d250bc8,0x3d1f895f,0x3d86326a, +0x3d2e5a73,0x3d434c14,0x3d547e0b,0x3d6e5123,0x3d798961,0x3d3913b9,0x3d96a357,0x3d5806fd,0x3de144f7,0x3e1bf82c,0x3e08c1d0,0x3dedd6db,0x3dbf126f,0x3daca85f,0x3db859f1,0x3d67a1e7,0x3d3fb9c0,0x3d681cfc,0x3d738900,0x3d2cd7fb,0x3a9c0887,0x3cd78646,0x3d084fe6,0x3d1d5202,0x3dd00e52, +0x3ebb81db,0x3e616f14,0xbcb9f66b,0x3d68d674,0x3cdc02d5,0x3cf96a9b,0x3d90fc76,0x3d098da6,0x3cc0744b,0x3cd34b47,0x3d02bcbc,0x3d4d0356,0x3d43f1a0,0x3d16b7cb,0x3d0e1241,0x3d3c2805,0x3d64bd42,0x3d85f2cc,0x3cc805d6,0x3d1708f0,0x3cda666e,0xbd5190e8,0xbdd8372d,0xbe1dbcaf,0xbe534bf5, +0xbe87d823,0xbe651ec6,0xbe559cc9,0xbe4b5441,0xbe4497db,0xbdb6674f,0x3db58583,0x3e288ead,0x3e3e7326,0x3e0a3450,0x3e39756c,0x3ea6f61c,0x3c960075,0xbe228300,0x3c7c5319,0x3d42d444,0x3d3599b7,0x3d940793,0x3d87a2dc,0x3d97afc6,0x3d7b46a2,0x3da266eb,0x3d1a534f,0x3cc68603,0x3c90056c, +0x3d219cda,0x3d1b6df1,0xba5b82bd,0x3bb3b52e,0xbccc1a35,0x3d51c7b9,0x3dcb0cc6,0x3d91bf9d,0x3d8d1fea,0x3c55cb25,0xbd76e700,0xbe225937,0xbe9062cb,0xbeafd0ed,0xbea86dbd,0xbea0a5e1,0xbe6d105f,0xbcdc89ab,0x3d895a11,0x3e2c40e1,0x3e75e9be,0x3e55b12e,0x3f151b2d,0x3d26f77b,0xbe73a3df, +0x3d09e00f,0xbe1371ec,0x3c4e755d,0xbd04be52,0x3d4dfb90,0x3d476262,0x3d892ebc,0x3ded8e27,0x3db0551d,0x3d9c516c,0x3d2ac084,0x3d1690ed,0x3d2815bb,0x3b8c315e,0x3d91e42c,0x3cebd22e,0x3dcbf52d,0x3e648fcc,0x3e20a2eb,0x3e0d40d5,0x3e36b5ad,0x3e4826b9,0x3e4406f5,0x3df038a7,0xbac68b64, +0xbe240142,0xbe2e8cd0,0xbc924010,0x3e640c50,0x3ecb4d7b,0x3ef57ac4,0x3f2585ea,0x3f087d6a,0x3f32db24,0x3e7dbec2,0xbded2785,0x3e21ada1,0xbc495ca5,0x3dd92421,0x3d8fbdf3,0x3dc20d55,0x3d8368f4,0x3db5c7fd,0x3dfd2d4f,0x3d6d35ca,0x3d3d7e53,0x3d6ee792,0x3d4198a3,0x3d530d83,0x3d1cb066, +0x3d717fd8,0xbc416508,0x3dc36be6,0x3e6011cf,0x3e3b7ca9,0x3e3e3fb9,0x3de0464e,0x3dccd33f,0x3dffee65,0x3df40638,0x3de6634e,0x3dc50023,0x3d13e041,0x3b630159,0xbc9d67a9,0x3e633cba,0x3ecab89f,0x3f1bbd44,0x3f0473e1,0x3ea26427,0x3e625ec2,0xbdc18896,0x3cda17d2,0x3dc4ede6,0x3d43fc5d, +0x3d8b602b,0x3cccdbb2,0x3d13c128,0x3d506368,0x3dadb04b,0x3db05abf,0x3d9fe46c,0x3d539721,0x3cc40e9a,0x3ca51ffb,0x3c3955f1,0x3c465ab6,0xbd3c6e4d,0xbc6af41f,0x3d49c24e,0x3d7779e3,0x3e34f69b,0x3e2f9e2b,0x3e3ac83e,0x3e1e51c4,0x3e17498f,0x3dd7d025,0x3d45dcf5,0xbdde1659,0xbe31ace1, +0xbe317806,0xbdb0aee6,0x3c6a6912,0x3e43234d,0x3e306df0,0xbc216de0,0xbab6b44a,0xbe418e34,0xbdc6344f,0xbd5027de,0xbd74cf3a,0xbbbf637b,0x3cd76adb,0x3d2073ee,0x3d20c819,0x3c4da622,0x3d984250,0x3da5eed8,0x3d846433,0x3d3b15c6,0x3bd35a19,0xbd178248,0xbd0e3c37,0xbd7f2689,0xbda87b8b, +0xbccb4fd6,0x3c883618,0x3e0d6ccf,0x3e31ac24,0x3e2a5035,0x3dce6e90,0x3cbb7fca,0xbdacc7ff,0xbe3b897b,0xbe5c40c4,0xbe553452,0xbe4cc55b,0xbe3f2807,0xbe1c75a4,0xbdb2e97c,0xbdac5482,0xbdfe7d02,0xbe100be9,0xbd9081b8,0xbcc55f5b,0x3c9a650a,0x3d110014,0x3d0e4d89,0x3d61ffbb,0x3d246eec, +0x3cfe1d38,0x3c64af90,0xbaa761a7,0x3d070536,0xbaf89531,0x3cb87015,0xbc25ee85,0xbcce51f0,0xbcf66239,0xbd6b1749,0xbd04b6a5,0x3c4f9ae1,0x3c879ee3,0x3d050efe,0x3cefb7f6,0x3d3be073,0x3d8ab6ca,0x3d6ba929,0x3d679ca7,0x3d5bd5ce,0x3b076972,0xbd542a8f,0xbdd50329,0xbdf51204,0xbe102bf1, +0xbe1a6923,0xbe14344d,0xbe0921a9,0xbe236504,0xbd96cd22,0xbe0ec6c4,0xbde9e402,0xbdd9b818,0xbdd37371,0xbdbc5a01,0xbdc43e07,0xbdd696bd,0xbdcc5407,0xbdd76ac0,0xbda55310,0xbdb5cb53,0xbd846dda,0xbd95f130,0xbda86130,0xbd70bc48,0xbc243ab8,0xbde0774e,0xbdd80796,0xbde88ab4,0xbde7267a, +0xbdf96891,0xbe0a2022,0xbe1620f5,0xbe197907,0xbe1f6318,0xbe218248,0xbe208b58,0xbe1a35ac,0xbe1aca68,0xbe12ed2c,0xbe0f00ba,0xbe0c1b03,0xbe0f854d,0xbe091982,0xbe152002,0xbe289a67,0xbe16dd3d,0xbc8b2400,0xbe2ea5ce,0xbe1e089f,0xbd51b6b2,0xbd52ea16,0xbd4dcb6f,0xbd3676da,0xbd37db04, +0xbd4a528b,0xbd378057,0xbe1aeb9d,0xbe222e70,0xbbe40a42,0xbe141b70,0xbe1a0360,0xbe00a1a5,0xbdeafa5c,0xbdfa7132,0xbdfc14ed,0xbdf9f03b,0xbdf276e8,0xbdeea24a,0xbdf3c06e,0xbdf9899e,0xbe007795,0xbe029d2a,0xbe05a5c8,0xbe07fd78,0xbe09ae59,0xbe0b764a,0xbe0b18ec,0xbe0eb8ed,0xbe1c830e, +0x3dce82c0,0x3dd55707,0x3dcc5e72,0x3e19b2fe,0x3e0b75b9,0x3d24f953,0x3e0bc7d0,0x3e01d335,0x3d78197f,0x3d72838c,0x3d6b827d,0x3d48780a,0x3d4e725e,0x3d46402c,0x3d2239e2,0x3dfe72f1,0x3e04f430,0x3d03f6d0,0x3df6287e,0x3e051a38,0x3da832c4,0x3db81e7e,0x3dbe4752,0x3dbdd9e0,0x3dba3b5b, +0x3db4d1be,0x3daeb7df,0x3da6bdfe,0x3da2797a,0x3d9f9104,0x3da82a80,0x3db56a68,0x3dced484,0x3dcd5617,0x3dd2c0e0,0x3dd68287,0x3ddb41a9,0x3e07653b,0x3e17376c,0x3e02471a,0x3e0572b9,0x3dfd669f,0x3dd38a64,0x3dcd0aa8,0x3dc6cd41,0x3dc42e18,0x3ddfb77f,0x3df2a008,0x3de73e63,0x3dc80c46, +0x3dca5a91,0x3db6ea64,0x3db7133f,0x3dde1da3,0x3db72533,0x3dcb5c9e,0x3dd59c10,0x3dbc4daf,0x3dd8b780,0x3dd45282,0x3dd31407,0x3dc5c15a,0x3db47918,0x3d9c9911,0x3d91516e,0x3d8b0c40,0x3d94de3e,0x3db1fe91,0x3df75a6c,0x3df9dc33,0x3e09f609,0x3e0ede39,0x3e1552b9,0x3e231776,0x3e32b3ac, +0x3e51a60e,0x3e2bf642,0x3e04680b,0x3dcd3df2,0x3db404b0,0x3dc1f2fe,0x3dac1ef8,0x3d927933,0x3dc36a66,0x3d9bd717,0x3d95113c,0x3d86dd53,0x3d9a7e86,0x3d9d98f3,0x3d9e42e3,0x3d930c51,0x3dd51656,0x3dbd3776,0x3da9e6b1,0x3dd9ea29,0x3dd04e9e,0x3dc7aa7a,0x3da0bc13,0x3d69126a,0x3d02f020, +0x3c587543,0x3c0f5e80,0x3cc334f6,0x3d93c4bd,0x3e19bbc5,0x3e1608ee,0x3e2b61e7,0x3e248b3e,0x3e3034fb,0x3e1eb3f0,0x3e3a35cc,0x3e47e7d7,0x3e2df703,0x3e02d038,0x3dab57b4,0x3d7c26f1,0x3d7d3770,0x3d5307f2,0x3d5954bb,0x3d6ddd3b,0x3d4099b8,0x3d4a64fc,0x3d17d217,0x3d589bf7,0x3d4fa7f4, +0x3d6cda5d,0x3d6013eb,0x3dc7a372,0x3db03c80,0x3da61882,0x3de069d2,0x3de4eab0,0x3de5b9a1,0x3dbfce9f,0x3d7a02ef,0x3c9b0f69,0x3b1cddaa,0xbc93d628,0xbc29bd28,0x3d4255fe,0x3e271e57,0x3e27fd07,0x3e4645f2,0x3e3f05bb,0x3e44a250,0x3ed7e396,0x3efcf99b,0x3ee0b397,0x3e99a479,0x3e80ee64, +0x3e67011f,0x3e4d8acd,0x3e0e325c,0x3dd1af80,0x3d933821,0x3d82fd7a,0x3d583397,0x3d2b4a2c,0x3cfa2bf4,0x3d27bbf1,0x3d40a20a,0x3d8d2929,0x3d2aa64f,0x3d63271e,0x3d8c8b5e,0x3db58b95,0x3ddcdc29,0x3dcd926f,0x3d25c884,0xbcde5a0b,0xbda98ee1,0xbe11dc2f,0xbe45412d,0xbe87e070,0xbc3e93a0, +0x3de8a800,0x3e7684a0,0x3e867f17,0x3ea8fa95,0x3ecd04be,0x3ed6a67a,0x3f235095,0x3ebd919a,0x3e70472f,0x3e3faaef,0x3e2f4cda,0x3ded2db1,0x3dad4a04,0x3d7f552e,0x3d9d6b45,0x3d9e1b6d,0x3d9bc504,0x3d821ff7,0x3d80f859,0x3d460a79,0x3d8b45dd,0x3d8ec59e,0x3d90b5ad,0x3d8727d6,0x3d9eb300, +0x3e00a392,0x3e07039a,0x3e28b5e6,0x3e6ab081,0x3e8e84ef,0x3ea14a8f,0x3ea304cd,0x3e827aac,0x3e485d70,0x3df1229e,0x3e46d8bc,0x3e75cc34,0x3eaf22a8,0x3e7671c6,0x3e97d07a,0x3ee4b9f2,0x3f236636,0x3eae9010,0x3f039487,0x3eb1d4e6,0x3e5e9c61,0x3e5311e9,0x3e25841e,0x3dd329b7,0x3da42d49, +0x3da22be7,0x3d9e365a,0x3df0fd51,0x3d5cad69,0x3cf96841,0x3c908b08,0x3d6849de,0x3db7eae0,0x3d99c396,0x3e0224a3,0x3e3abba4,0x3e480660,0x3e7d4173,0x3ea482eb,0x3ec02888,0x3eb797b2,0x3eaf5993,0x3ea9ebfc,0x3eb2b996,0x3eb40519,0x3ea3321d,0x3e674515,0x3e1a4115,0x3df94aac,0xbdb3f343, +0xbe22b337,0xbe866c01,0x3e0d3239,0xbeae7ea2,0x3e7783c3,0x3ec7545a,0x3de8bc24,0x3e19fdf6,0x3de48c37,0x3dc6d347,0x3dd0aed9,0x3dc3512f,0x3daa3af5,0x3db046dc,0x3d996d0f,0x3dabdcb1,0x3d93b508,0x3dab77f5,0x3d99df50,0x3db233f1,0x3de17d16,0x3e170ad4,0x3e541694,0x3e816255,0x3e8f3331, +0x3e96c349,0x3ea7344b,0x3eb3ddb4,0x3eb457e9,0x3eacf4e4,0x3e8cd011,0x3e2d68b8,0x3dc8dfb2,0x3ba42ecd,0xbd18e36a,0xbe80d2f0,0xbee28aa5,0xbf48df8b,0xbec8b044,0xbec296b4,0x3c8b1372,0x3e9a5721,0x3e3efe14,0x3dd330a8,0x3e0d2d62,0x3d984028,0x3d6805f4,0x3d838a0b,0x3d55fe07,0x3d02678c, +0x3d92d77b,0x3d8dcd35,0x3cf94c9e,0x3ce22f65,0x3ca278ae,0x3d548210,0x3cd43565,0x3ca53dcc,0x3dd2cd95,0x3e4638b0,0x3e89ae55,0x3ea2d7a6,0x3e9ab7f4,0x3e96d797,0x3e9352e6,0x3e845151,0x3e5af083,0x3e0ecc08,0x3d9c1215,0xbcf9a6e7,0xbdeaf7e3,0xbe8cf66d,0xbeaa0432,0xbedc4f73,0xbeaf4be0, +0xbe394f8e,0xbd87597a,0x3dd20780,0x3d5c7b00,0x3d3d0dc7,0x3d417aad,0x3d1172ac,0x3d9f1ae1,0x3c7fff28,0xbbb48f61,0x3b257dce,0x3cc55737,0x3d2eb6f3,0x3d09381e,0x3d0f86e6,0x3ce70f4a,0x3c9785af,0x3cd159af,0x3c3908da,0x3d6d6530,0x3dd222c7,0x3e0a44ad,0x3e547691,0x3e69f65f,0x3e7f75f7, +0x3e846fed,0x3e8a7d29,0x3e89e489,0x3e74d9b0,0x3e3a58f8,0x3db685c6,0xbd444e4c,0xbe0cd842,0xbe3ff9ea,0xbe82c684,0xbe3e3515,0xbe0bfa18,0xbdb200b9,0xbd9c2ee3,0xbd850d11,0xbce95301,0xbc349e36,0xbbd9d16d,0x3bbdf918,0x3bf7b1fb,0x3c5a964a,0x3c88309c,0x3c6f6026,0x3a561de3,0x3c7e4a9f, +0x3ac1718b,0x3c7ed9c6,0x3c5fe722,0x3cae6f81,0x3cdb05e5,0x3d13782b,0x3d6119d0,0x3d86b03e,0x3da2afd7,0x3de4db62,0x3e1523c7,0x3e39769c,0x3e21574e,0x3e0e7837,0x3e05db00,0x3da376f5,0x3d0dade5,0xbc7a6ce6,0xbd85a4b1,0xbe0164b3,0xbe57bca1,0xbe2277a1,0xbddde803,0xbdc6fbf8,0xbdf641b0, +0xbd93f778,0xbd95476a,0xbd9d7a24,0xbd5a6a1e,0xbd386750,0xbcfe9b4d,0xbce11b3d,0xbcd10656,0xbc4dd8f4,0xbc96ce3f,0xbc2534b9,0xbd093604,0xbd36042d,0xbd225dfd,0xbd7a3f30,0xbdc2eb93,0xbd955335,0xbdb87786,0xbdc60d54,0xbddee140,0xbdefc33a,0xbe0424cc,0xbe0a14e3,0xbe111bf4,0xbe15d529, +0xbe1aaaf9,0xbe2293de,0xbe277722,0xbe2b728a,0xbe1e782e,0xbe09f3e8,0xbdf7eabc,0xbde12d40,0xbdafec28,0xbd9d17b6,0xbda985cb,0xbdd4bd46,0xbe2b5484,0xbd5b611f,0xbda50d9d,0xbe0f70ad,0xbe10e723,0xbe0db645,0xbe0ee7db,0xbe0eb9b0,0xbe0c9e19,0xbe0c4f6b,0xbd91ab57,0xbd421eb9,0xbe1c4b45, +0xbdaacf6d,0xbd860d66,0xbd8e0bb0,0xbda1ed41,0xbda5cb45,0xbdaef1c5,0xbdb9f830,0xbdc58c38,0xbdd53081,0xbdd4c77b,0xbdd70622,0xbdda20d4,0xbdd4f63e,0xbdd1662a,0xbdd41262,0xbdc4ed50,0xbdbdec27,0xbdb26df0,0xbdb0acea,0xbda06812,0x3d11b5bd,0x3d0f5bab,0x3c8c0893,0x3cb406a7,0x3d823359, +0x3e0ee267,0x3c106515,0x3d3b539c,0x3deb5ff3,0x3ded1b40,0x3ded6794,0x3df2c301,0x3df43a7e,0x3df3859e,0x3df5682d,0x3d3838f5,0x3c5dbe1e,0x3e035b91,0x3d4edb7c,0x3ca9cd37,0x3cdeebc5,0x3d0f2ddd,0x3d084bb9,0x3d1afcb5,0x3d214c28,0x3d258026,0x3d222f34,0x3d20a8e5,0x3d154816,0x3d05c021, +0x3ce7a9d9,0x3cb98cab,0x3c65a792,0x3c50857c,0x3c8daf17,0x3d084596,0x3ce5decd,0x3ce0de59,0x3c562f3c,0x3df3c1c7,0x3cf67249,0x3d79619c,0x3d6989f7,0x3d18fc01,0x3d277379,0x3cd439a5,0x3cc71152,0x3d1cfc7f,0x3cea5a07,0x3d1a6c81,0x3d03c12e,0x3d570681,0x3d5401fa,0x3d154555,0x3d40d53f, +0x3d97be1c,0x3cbe2f0b,0x3d130533,0x3d0d5de3,0x3d3b6d4f,0x3d5367e3,0x3d61a4e4,0x3d50f5d8,0x3d54562a,0x3d3bb85b,0x3d069f15,0x3cb1df8d,0x3bc7a304,0xbc3b83b6,0xbcc667af,0xbc9f47e5,0x3c9801f8,0x3c810b22,0xbc09130b,0x3c059112,0x3d7e5325,0x3d64cfc1,0x3dbca3cc,0x3d828ad2,0x3d632823, +0x3d307857,0x3d33f79d,0x3d2c199a,0x3d68231e,0x3d405957,0x3d6b9f49,0x3d16c728,0x3d50a894,0x3d41acce,0x3d60860f,0x3d541b44,0x3d3eb112,0x3d0741e1,0x3d21277f,0x3d407790,0x3d849b5f,0x3d99cc04,0x3da2a7a8,0x3d8945df,0x3d7a389f,0x3d299f04,0x3c9d0c2d,0x3c1c2da1,0xbc9ed29c,0xbd5b3e07, +0xbdaad4af,0xbd80b3cc,0x3c136a44,0xbbceb948,0xbd7a7b11,0x3c2b7cb3,0x3d935a8d,0x3c8d679e,0x3d8b0c02,0x3d78f0f0,0x3d2b5a7b,0x3d1e67da,0x3ccce608,0x3cf00167,0x3d6501b5,0x3d5a2ad3,0x3d47d870,0x3d323b50,0x3d527768,0x3d6abdab,0x3d51916d,0x3d866a42,0x3d6abcd1,0x3cf423b3,0x3d0a6801, +0x3d15f1de,0x3d6975f6,0x3d96ed32,0x3d9a21cf,0x3d5b5a1a,0x3d4378ff,0x3cd31fdf,0xbaea5717,0xbca31ce3,0xbd2b3bb6,0xbd952bdd,0xbdf3957d,0xbddb904d,0xbd0abcd5,0xbd4473d0,0xbe4e256a,0xbc647226,0x3e3a766a,0x3e08bf76,0x3e1f831d,0x3dfc38ae,0x3d8ae20c,0x3dc51506,0x3d99b298,0x3d7543bc, +0x3d8a38d8,0x3d5fe84c,0x3d443a6d,0x3cd534da,0x3d4d2f78,0x3d713852,0x3d4ddee8,0x3d82b767,0x3d7a4aeb,0x3d97d87d,0x3dd766d0,0x3e070587,0x3e46d5bc,0x3e56f123,0x3e6676c0,0x3e5da78c,0x3e1f377d,0x3deabd85,0x3db57af8,0x3c9a0b52,0xbe174a18,0xbeb9299a,0xbed7429b,0xbebf95b6,0xbe6431c3, +0xbe02805a,0xbf0ed6ce,0x3c1ca63f,0x3e8b2e4a,0x3d8f2d93,0x3cd9002f,0x3d836d75,0x3d2138ac,0x3d4b9899,0x3d570b32,0x3d7db738,0x3d85dc73,0x3d835b54,0x3d8718eb,0x3d454db9,0x3d44b29d,0x3d5c5c83,0x3d9533e6,0x3db20ceb,0x3dcdf8ea,0x3d99bce6,0x3d47db01,0x3d5fbae2,0x3d9a33d2,0x3dae60e9, +0x3dd9b133,0x3e082066,0x3e3497f2,0x3e39642a,0x3e169d6c,0x3d7139e5,0xbd8fee27,0xbe93ab6c,0xbedd07de,0xbf11b714,0xbf362117,0xbf0abf7a,0xbf8d5a6a,0xbea81967,0x3e4b2949,0xbd907239,0x3e349834,0x3b85e869,0x3e15fe43,0x3d4003b1,0x3d96f4a5,0x3d79dcb0,0x3dd8b48d,0x3d1dd67c,0x3c8b5382, +0x3cd73289,0x3d7736d8,0x3d8a3777,0x3dc589d5,0x3dc01669,0x3dfd70b5,0x3da6dcdc,0xbb887304,0x3b8aad26,0xbc8b7eea,0xbd1e8dcd,0xbd92f83b,0xbdf16472,0xbe2474e9,0xbe33735e,0xbe168ada,0xbe45aa0d,0xbeaab19b,0xbf10cbac,0xbf2ec83f,0xbf4757ae,0xbf7eb3c4,0xbf804ae5,0xbf79b0e7,0xbf41485a, +0xbe5c0cf6,0xbe8b7916,0x3d01dc6a,0xbdb62ef1,0x3c9adaad,0xbc54c652,0x3d705e31,0x3ce5fa72,0xbc19c72c,0x3d7ca248,0x3dbd9ca0,0x3d383d86,0x3d77d4a5,0x3d6ff20f,0x3d4ef4c5,0x3d022065,0x3dd49443,0x3d94537a,0x3c96e611,0x3c862da0,0xbd3d9d6c,0xbd56e140,0xbe0ea75e,0xbe8c19b4,0xbec56d87, +0xbeec1a29,0xbef51c8c,0xbf0250fb,0xbf040af3,0xbf08006e,0xbf22bf10,0xbf29acce,0xbf2b1485,0xbf4bf978,0xbf0ed26c,0xbf1eefec,0xbebf5bb4,0xbe85f16e,0xbe65cdc7,0xbdb9495f,0xbda5f422,0xbd39f0f1,0x3c59e2de,0x3ca2e173,0x3b5ce937,0x3d154d61,0x3d2bcd16,0x3cf5f7f0,0x3d36fd5c,0x3d56401f, +0x3d8af2ef,0x3d780d50,0x3da6e36c,0x3d3adf27,0x3d4af71e,0x3cf13507,0xbd83d9e2,0xbe1485e3,0xbe61baf1,0xbe82c026,0xbea80384,0xbeaf6595,0xbe9e7766,0xbe319fc1,0xbdf2f2d9,0xbe26a94c,0xbe75e9da,0xbebe19ee,0xbf02a506,0xbf0ced90,0xbe9b1ba1,0xbeaaa165,0xbe0a7ee3,0xbdd37a40,0xbd1b46f8, +0xbc9130f5,0xbc87d3cc,0x3bed9c1c,0x3b1f98ee,0x3c097589,0x3c2cbe95,0x3c22f62b,0x3c21ec5a,0x3c40912a,0xbb1bbcab,0xbc286673,0x3c204003,0x3b96be73,0x3d07699d,0x3d330e53,0x3c32a674,0xbbdfad05,0xbd94dbad,0xbde56510,0xbe02c234,0xbdd8d497,0xbdde36aa,0xbd911e31,0xbced12c3,0xbd3be487, +0xbd9bd704,0xbd91b2b9,0xbdfea3cb,0xbe49a6c8,0xbe887338,0xbe99fe41,0xbe0d0fdd,0xbe0c913c,0xbe267bed,0xbe257b30,0xbe1c94fc,0xbde42980,0xbd8f381f,0xbd1d89b1,0xbcdd5798,0xbccd4698,0xbc6d337c,0xbcad2934,0x3bbe451a,0xbc08c142,0x3c2dada8,0xbc199154,0xbc82aa20,0xbcd0e364,0xbc1bc129, +0xbda74dfa,0xbe14a5ef,0xbe15f7e9,0xbe2ae486,0xbe36d864,0xbe510a7b,0xbe69e903,0xbe7f1494,0xbe8a7905,0xbe9468bd,0xbe85a5ec,0xbe70452e,0xbe58a06b,0xbe47d2e5,0xbe3265bd,0xbe240bea,0xbe1c869f,0xbd825bc3,0xbd886363,0xbda39b50,0xbd0f947c,0xbd34fba4,0xbd127913,0xbd08a4b3,0xbcc494d0, +0xbcd0bc16,0xbd358f5e,0xbd3e1365,0xbd639dcf,0xbd493271,0xbd5a51c6,0xbd6a7c4c,0xbd822a44,0xbd8f05d1,0xbd88576b,0xbd892d36,0xbd9eef13,0xbd85bf4f,0xbd8fe070,0xbd9bb4b8,0xbd96319f,0xbd898edc,0xbd8108c4,0xbd8f3786,0xbd9094f6,0xbd98eb67,0xbda3539f,0xbdb32a19,0xbdbdd1f9,0xbdb336cb, +0xbdaf63d2,0xbda55e54,0xbd9bb0a5,0xbd421568,0xbd0e6ac9,0xbdd8940d,0xbdd52809,0xbdaa436f,0xbda591ff,0xbdb16e58,0xbd894e68,0xbd8aa1ee,0xbd7cc0f5,0xbd6d567a,0xbd628ff9,0xbd68f3b1,0xbd5edb38,0xbdb708d0,0xbdb2918e,0xbd833dd2,0xbdc2af4f,0xbdd371c1,0xbd689a36,0xbd7db0c2,0xbd8932cf, +0xbd89c4de,0xbd958b3a,0xbda3e32f,0xbdafa67d,0xbda5851f,0xbd9daf9d,0xbd94d1ef,0xbd9091f5,0xbd8a1e5e,0xbd86f06f,0xbd7b3c0c,0xbd6b356e,0xbd58d34a,0xbd4fd90b,0xbd47ab6e,0x3df75052,0x3db930b8,0x3dd3c09c,0x3db51a15,0x3d44467e,0xbbd63eae,0x3de270bb,0x3d78cd7f,0xbbdf1a66,0xbc124796, +0xbc10df58,0xba9b02bf,0xbc09ea06,0xbc15eb64,0xbc34cd1c,0x3d7116a5,0x3ddf6506,0xbc737ad2,0x3d6731d9,0x3dc8f3f6,0x3df28669,0x3dd8b231,0x3de700a9,0x3dee8044,0x3df60ba7,0x3dff38fa,0x3e05001a,0x3e090a81,0x3e0e2d2e,0x3e1446e0,0x3e14bc92,0x3e0f3ac7,0x3e043b6f,0x3deea607,0x3dd8c915, +0x3dba992d,0x3dc11e6a,0x3d82073d,0x3dac40de,0x3d0627f3,0x3db3f77b,0x3d9ca0ed,0x3d87abad,0x3dacc310,0x3d9beb09,0x3dc4d531,0x3dccfc3a,0x3db84e54,0x3dd95c20,0x3dcc7da4,0x3dbfacf5,0x3d998ec1,0x3da540df,0x3dc8e784,0x3dc5f5c8,0x3d3ce2d0,0x3decd852,0x3de6e633,0x3df85173,0x3e08144b, +0x3e0db5a8,0x3e1681df,0x3e22aca3,0x3e2b2a13,0x3e39dcc1,0x3e4e50d2,0x3e5ec5ec,0x3e59325b,0x3e397cb2,0x3e17c6b2,0x3de249dd,0x3d8f2176,0x3d8cad92,0x3b7829d1,0x3cd4b976,0x3cb58007,0x3d13ded2,0x3d4e4794,0x3d626a94,0x3d57a8fc,0x3d4070e5,0x3d2ff5b5,0x3d8495ef,0x3d8cd023,0x3db85422, +0x3d7acce9,0x3d96f5e2,0x3d7c6330,0x3d9f0e5c,0x3da86ff6,0x3db12a66,0x3dabed56,0x3dc4a0ae,0x3de9da3b,0x3df88aca,0x3e1acaa8,0x3e2b9522,0x3e455062,0x3e66bbe0,0x3e7a65b7,0x3e8ed067,0x3e9dc5e5,0x3ea5189a,0x3e94df25,0x3e5dcc1a,0x3e1deb23,0x3daacace,0x3c5f1f12,0x3c2c0b21,0xbd08a89f, +0xbc174b6f,0xbb34c0ca,0x3ba21857,0x3d0989ae,0x3d321280,0x3d0f710f,0x3c8513f4,0x3cc8c071,0x3cf5edfb,0x3d7ee9e0,0x3d4ca0c7,0x3d6a8ed3,0x3d49e21d,0x3d6c7b5f,0x3d8d2ee7,0x3d8a59b0,0x3da6ec30,0x3d8437f8,0x3daa6e73,0x3ddc7fdb,0x3dfa78ad,0x3e2026b2,0x3e29830e,0x3e43ecfc,0x3e68c5c1, +0x3e80127e,0x3e9481f8,0x3eb7880a,0x3ed8702c,0x3ed1e011,0x3ea2a017,0x3e63f2fa,0x3de3885f,0xbc35297a,0xbcdd5813,0xbeab5a13,0xbe8aaab6,0xbe119518,0xbd69f23f,0xbd3151d7,0xbcf04a36,0xbc832298,0x3d085804,0x3d166c5f,0x3d504d33,0x3d73622f,0x3d836509,0x3d804641,0x3d2babb5,0x3d843709, +0x3da08b35,0x3da72568,0x3df1889b,0x3e0048c4,0x3e074f0b,0x3e01180e,0x3e14a84b,0x3e5d0ea9,0x3e9c1b23,0x3ec7e092,0x3ee4a890,0x3f09f86b,0x3f15baab,0x3f1dabcf,0x3ed19711,0x3e7eb49b,0x3da050f6,0xbd93baf4,0xbe5df235,0xbebc3936,0xbeaafcfe,0xbf025ca9,0xbebbdd62,0xbe550e11,0xbde2d153, +0xbd85cd56,0x3bfc1dc4,0x3d00adae,0x3d44a533,0x3d4c8c24,0x3d6fb6b7,0x3d9baaf9,0x3d813928,0x3d6dece9,0x3d407c57,0x3d760055,0x3d8d1e26,0x3d9eb4cf,0x3dc8a7c3,0x3db47d24,0x3dd693b6,0x3e15164b,0x3e2aa069,0x3e4b5b14,0x3e4bb861,0x3e467fa4,0x3e47777b,0x3e27842f,0x3e146399,0x3e2fa44e, +0x3d08eeb4,0xbd714b77,0xbe3fa460,0xbd4eaf65,0xbdc884c1,0xbe91c79f,0xbefacfba,0x3e0c53f0,0xbefa7b2d,0xbf082a56,0xbe6a36ff,0xbe821d13,0xbde971a3,0xbd845eb3,0x3c81fae7,0x3c85e538,0x3d2d21ed,0x3dadcb58,0x3d5c4650,0x3d3fda1a,0x3d67eb85,0x3d8a3305,0x3da54c56,0x3da2a577,0x3dace5d2, +0x3d92d826,0x3dc5c79d,0x3e12a295,0x3dd8a8f1,0x3dbe0b08,0x3ddb4920,0x3e0d41bf,0x3e3b1617,0x3dd44e95,0xbc9abe0c,0xbe1cbb9c,0xbea10c62,0xbeb2452f,0xbe95343c,0x3caf4289,0x3e998fd4,0x3f39fee1,0x3eabc4ce,0x3f5c6ccb,0x3d155c57,0xbee9b50b,0xbb968ce4,0xbe2cdffb,0x3b89c0cd,0xbcca0196, +0xbc468424,0x3c9e9450,0x3d205d9c,0xbc351fde,0x3d96c675,0x3d98df97,0x3d2686a0,0x3d445834,0x3d4c9919,0x3d5a98ad,0x3d786a42,0x3d20a528,0x3d82ffbc,0x3d8765bc,0x3d8a42dd,0x3dc41b9f,0x3db4c0e5,0x3d9f5e23,0x3d8d11fd,0x3d8122ae,0x3d7709f5,0x3d827250,0x3da7dee2,0x3db8a5ef,0x3d8d00f5, +0x3e8bc579,0x3ed4a312,0x3f3d437d,0x3f277d74,0x3f1453de,0x3ea4ea17,0xbe678c05,0xbdc5ad7e,0x3ab96730,0xbdc56021,0xbb9e9064,0x3d49d26c,0xbc14aac3,0x3c7588ea,0x3c4413ab,0x3d1d2e93,0x3d3a389e,0x3d54283f,0x3d6dd17c,0x3d5cc2c9,0x3d288f7a,0x3d936421,0x3d95941b,0x3dc7e39b,0x3d8f50ba, +0x3c760999,0xbd44db79,0xbb847932,0x3d30f754,0x3dcee600,0x3e1af3b8,0x3e40cab7,0x3e515c49,0x3dfc0c7f,0x3debf706,0x3e28046b,0x3e5fa5d0,0x3e9622a1,0x3eee6260,0x3ee3a5b6,0x3e8a31af,0x3e63e699,0xbe47a52b,0xbd8a4f52,0xbdacb438,0xbd461fea,0x3c2363fc,0xbc8b48b8,0x3d220314,0x3d1a50f3, +0x3d32f7ed,0x3c07d348,0x3c680925,0x3d12a1c4,0x3cbe1c41,0x3d0e2c4e,0x3d8d0165,0x3d215f81,0x3ccf5303,0x3cddd797,0x3ce4aa3e,0xbaf68b53,0xbd56f6ba,0xbccdfa7d,0xbc11d324,0x3c114304,0xbc959acb,0xbd7c3034,0xbdb9908f,0xbd9e4663,0xbc9648b1,0x3d73c29d,0x3da57206,0x3ddf393c,0x3e419310, +0x3e3f4c83,0x3e058c06,0x3d1a1a9d,0x3bcfcc03,0x3d9664ef,0x3c242d0f,0x3c688548,0xbbbfc374,0x3ac736f4,0xbcee68e5,0x3c7e914b,0xbcd25f3c,0x3d22c488,0xbcfaa2ea,0x38e3aa0a,0xbd22ffbd,0xbd076130,0xbd7d7264,0xbd8bb737,0xbda82348,0xbd647acc,0xbd2d657c,0xbdaaf118,0xbdc5863c,0xbdeb6697, +0xbe0928c1,0xbe23e794,0xbdd778fe,0xbd6714e9,0xbc6860b5,0x3c1c3145,0x3ce2790b,0x3d4b467a,0x3db55001,0x3dfbaf17,0x3e2880ab,0x3df542ff,0x3e0bebfe,0x3e14a08a,0xbdb7cf7e,0x3da0dda9,0x3c931499,0x3ceda467,0x3d9eb2c3,0x3d8ffde2,0x3dda7738,0x3dcc75be,0x3d6c0f3a,0x3dbc37bd,0x3dc87f9f, +0x3db97f72,0x3d0460e6,0x3d28ba7c,0x3d571973,0x3d2ded53,0xbda086e2,0x3d7ba3c2,0x3d7c963f,0x3d5e57b8,0x3d603a78,0x3d4e3765,0x3d559991,0x3d36dce2,0x3da0efec,0x3dc67f3c,0x3df4af57,0x3e0ee67e,0x3e250b7e,0x3e3732ea,0x3e2a2418,0x3e1b17b3,0x3e161c9d,0x3e0d0ace,0x3e01edaa,0x3e2bb7af, +0x3d970609,0xbc2d6b2a,0xbe03b18a,0x3dea38b9,0xbbcc9384,0xbde869cc,0xbdfc096b,0xbe026a49,0xbdef4b14,0xbe0a4604,0xbe13362b,0xbe11cf57,0xbc4b3eb5,0x3db0c933,0xbe24adef,0xbd0570d1,0x3d1e73ff,0x3e14dbbb,0x3de3a3a6,0x3df3db4d,0x3df338ce,0x3df3b2af,0x3df4d100,0x3def2208,0x3dfc73af, +0x3e02aed8,0x3e079a3f,0x3e0d1f84,0x3e123315,0x3e1caecb,0x3e161251,0x3e141943,0x3e0ea21f,0x3e0ff10b,0x3e1e3471,0xbd64d9cc,0xbd8c0167,0xbdd827b5,0x3cf564e3,0x3de61522,0x3e3bed1c,0xbc1dfc3c,0x3dd7a7ab,0x3e39eeb8,0x3e400ee8,0x3e3ff418,0x3e3179c9,0x3e4387a7,0x3e458fa6,0x3e4027d8, +0x3dde6237,0x3c59d465,0x3e4c4074,0x3debf9a3,0x3d3c6a66,0xbda7ecaf,0xbd3999fc,0xbd609a65,0xbd5fc114,0xbd60989d,0xbd614eef,0xbd64d778,0xbd5d112a,0xbd57fdc4,0xbd500e79,0xbd5aaf3b,0xbd604ebd,0xbd5c0b6f,0xbd730416,0xbd85a43f,0xbd9516bd,0xbd9e067d,0xbdda91d7,0xbdca6740,0x3dd4cb59, +0xbd38f756,0x3cdd1bd4,0x3ccd6d9a,0xbbe5f0cc,0x3c882320,0xbc8bf283,0x3b44b554,0x3d3a88a9,0x3c1ca04f,0x3b43f0ef,0x3c1a9a8b,0x3d3a1713,0x3cd73a6c,0x3cc6a225,0x3c3bac81,0x3dfcdb4e,0xbd221ca7,0xbd6ce6d3,0xbd5ccd4a,0xbd711796,0xbd726437,0xbd7b45cc,0xbd7d8ada,0xbd6dfe3b,0xbd62d391, +0xbd51fda6,0xbd6adaf8,0xbd731d95,0xbd69766d,0xbd8545a1,0xbd98a1f9,0xbdb8c010,0xbdcc7157,0xbe26446c,0xbdf50b13,0xbc86ac80,0xbd01fd0e,0x3c8d16df,0x3c270dff,0x3cadab50,0x3d269bae,0x3d88e580,0x3cc7defe,0x3da9f4ac,0x3be0de1c,0x3d91e857,0x3c8bb68c,0x3d685476,0x3cd5191a,0x3d101add, +0x3d2a0b44,0x3d53f6be,0xb956b32c,0xbd7fbc2d,0xbd4cad59,0xbd811152,0xbd75ae16,0xbd72e991,0xbd65da11,0xbd27f72a,0xbd015115,0xbcd695b2,0xbd47ecec,0xbd7f4acf,0xbd7151f5,0xbd9bed39,0xbdd3ef05,0xbe13d02c,0xbe183803,0xbe280f65,0xbdea1f5c,0xbc9ddc48,0xbc58ef98,0xbc9e4d07,0xbc992414, +0xbc599074,0x3d05ea3a,0x3d040c2c,0x3d3c90a3,0x3d2074ac,0x3d65cc4a,0x3d3befd1,0x3cd1e0f7,0x3d10b695,0x3cc2ff2a,0x3d9c967d,0x3ce5182d,0x3d8c7c4e,0x3c912465,0xbd4fcee7,0xbd4a0fc9,0xbd65090b,0xbd538dd8,0xbd52b9fe,0xbd376d85,0xbcce648d,0xbc322af3,0xbc2265f3,0xbd19c50b,0xbd75fc40, +0xbd76d931,0xbda3ebef,0xbddadf99,0xbe13db91,0xbe0fec9b,0xbe23ea21,0xbe3c2ad6,0xbe3b8532,0xbdd49067,0xbd266e97,0x3c30b0fa,0x3c977265,0x3c499895,0x3ca5bfd9,0x3d0a15e7,0x3d3568f2,0x3d4be935,0x3d5944cb,0x3d42bffb,0x3d4b34b0,0x3d1dceb2,0x3d899005,0x3d15c5c5,0x3d8fdb2f,0x3c57a1a0, +0xbd74e8df,0xbd2f4590,0xbdbff622,0xbdf13374,0xbdea3c56,0xbd589519,0xbd6953ae,0xbd88d1b4,0xbdcf8fa9,0xbe07480f,0xbda704d7,0xbc3d9ff3,0x3c68578a,0xbc8bb929,0xbdcfd262,0xbe4a700b,0x3eb85d7e,0xbdef3159,0xbe8ee885,0xbe040601,0xbdbe8b89,0xbd8a67ec,0xbce3ffed,0x3c1eabd4,0x3cd5631b, +0x3d465778,0x3d89ac54,0x3d5c3924,0x3d49af2b,0x3ced80cd,0x3d44e192,0x3d4d2cf9,0x3d7ce2e4,0x3d517e87,0x3dc58721,0x3d0198c4,0xbc844986,0xba619333,0xbd361e0e,0xbd0a804d,0xbd5f2b8b,0xbdbb995f,0xbe01dcf9,0xbe41e346,0xbe91e7e5,0xbe8ec2c1,0xbe8b0cb4,0xbe577655,0xbdcbc65a,0x3dad8f7b, +0x3ec7a191,0x3ec3e8b1,0x3f0c91fc,0x3e9dbc99,0xbd0b4d24,0x3d40674a,0xbd4e4ddc,0x3caa9144,0xbd1cc349,0x3b80037a,0x3bcb345d,0x3c68bba3,0x3d44fe9e,0x3d7c2bdf,0x3d85667f,0x3d5006de,0x3d74357c,0x3d17819c,0x3d8e61ec,0x3cb0acbc,0x3d747436,0x3cd55f8b,0xbd4ea2be,0xbc620bd4,0xbd11cd70, +0xbe25e6aa,0xbe7d3a6d,0xbe9457a0,0xbe6901c8,0xbe1d5e49,0xbdc27429,0xbd66ac56,0xbda965b8,0xbd61a7c1,0xbe2af1bb,0xbe35574d,0xbe0944b4,0x3e81695b,0xbdc30df7,0x3ef093cb,0x3eb87d9f,0x3de225fe,0x3d007681,0x3d3d646e,0x3c9dd628,0x3d115c36,0x3d68d24e,0x3d967aa3,0x3d51e0b3,0x3d8e49f7, +0x3d406c8b,0x3c90c143,0x3beff203,0x3ca915e5,0x3cf058d0,0x3c16ea6a,0x3db3bba2,0xbcb9b32e,0xbdbb2ef0,0xbd54a81a,0xbd074ee5,0xbc88b9af,0x3d092848,0x3dc0f9cf,0x3e42c018,0x3e5bf27a,0x3e1a8663,0x3e2f3c21,0x3e246ffa,0x3e557f31,0xbc2579d2,0xbe696822,0xbf1953a7,0xbe59dc2d,0xbe2d58cd, +0x3e45afbf,0x3ee0d432,0x3e87393b,0x3e1d8296,0x3e011dde,0x3da2fd77,0x3d960f1f,0x3d2f7d38,0x3ceefe3a,0x3d4a8901,0x3d3a0f53,0x3d2a2141,0x3d0f5b55,0x3d271ae5,0x3d0653dc,0xbbb866fa,0xbbd9d7d8,0x3d91c2f3,0xbd19ba1e,0xbdb90ac6,0xbcccbcd4,0x3caf3932,0x3ded6244,0x3e36edde,0x3e54b13a, +0x3e813102,0x3e7d7954,0x3e479a3f,0x3dee9ad5,0x3caed420,0xbcce1b42,0xbde7dc27,0xbe011d0f,0xbe5cd0f6,0xbdef4519,0x3c0895a3,0x3dc56aeb,0x3e72e8bf,0x3e02802c,0x3db933f8,0x3db9e552,0x3d69c6fe,0x3d2fa59b,0x3c87d13e,0x3c8f2878,0x3cba5a1f,0x3cad1476,0x3cdc11ee,0x3d32b3eb,0x3d21b4d2, +0x3d374689,0x3cb0b9a4,0x3d3de70a,0x3d13f4f6,0x3787da2b,0xbc50fd73,0xbc310bd4,0x39527127,0x3a5c070e,0x3c98d012,0x3d65e69e,0x3de18d94,0x3e119f2e,0x3e1498fe,0x3e0123f0,0x3d8b059f,0xbd47deb3,0xbd4b597f,0xbc80f65d,0x3c3d207d,0x3d44afe5,0x3d2502bf,0x3dc0200a,0x3de81f90,0x3db1ea80, +0x3debac01,0x3da132f2,0x3d7ca051,0x3d0a32b4,0x3d6aede9,0x3d28352e,0x3d8f29a0,0x3d485fc2,0x3d557b51,0x3d822124,0x3d2c6ffc,0x3d7af001,0x3da1fddd,0x3d8ad771,0x3d1c332e,0x3db564f7,0x3e070ba6,0x3e053f1d,0x3e136cd1,0x3e1d8517,0x3e2ca6ee,0x3e36f23e,0x3e2b6140,0x3e20b92d,0x3e1ad12d, +0x3df54446,0x3dd13c47,0x3db05781,0x3d92deb3,0x3d4a1511,0x3ce05d66,0x3d55f7b8,0x3d3e58c6,0x3d6ba750,0x3e21f01e,0x3d86e0eb,0x3dcf07b5,0x3dbed41d,0x3d8842cf,0x3d8ec8fc,0x3d40a4b8,0x3d8c6fd3,0x3dc28035,0x3da8b5f1,0x3d87c064,0x3daacddc,0x3dc2da73,0x3dcf913d,0x3db346c2,0x3da93685, +0x3db26b8c,0x3df1e285,0x3dd7066f,0x3dcc3937,0x3dc7ef4a,0x3db68d7b,0x3da13a30,0x3d94e98b,0x3d8d6a95,0x3d7f6212,0x3d5fc647,0x3d433cbf,0x3d2435a0,0x3d00694e,0x3d111b2e,0x3d386708,0x3d42eba3,0x3d5a421c,0x3d3f8cb1,0x3cbcb892,0x3e0700b0,0x3e317ec2,0x3e2cbdae,0x3dc44fb3,0x3e26bfe2, +0x3e309e40,0x3e372ea2,0x3e34b558,0x3e284792,0x3e31ce7f,0x3e38a514,0x3e3411e6,0x3e2a5247,0x3deb55be,0x3e1dee8f,0x3e30b09d,0x3e11db9c,0x3d916ecb,0x3d960767,0x3d9fff3e,0x3d9e020a,0x3da46323,0x3dac17f6,0x3db33eb8,0x3da00e1c,0x3d90e4c8,0x3d823118,0x3d6bc8f8,0x3d50db1d,0x3d2b82a8, +0x3d3519d6,0x3d31b639,0x3d323306,0x3d32230a,0x3d53ed89,0xbce4b897,0xbc3d8a07,0x3c3e2114,0xbdbe9d89,0xbdf13abb,0xbd8892e7,0xbd9290cf,0xbdde3ef6,0xbd8643cd,0xbd88d7e5,0xbd809e11,0xbd4b945e,0xbd66437c,0xbd690da3,0xbd53c9f0,0xbdd505bf,0xbda5b30e,0xbd44020a,0xbdd4890b,0xbdba0659, +0xbbe86b3a,0xbcb44952,0xbcbec94a,0xbcd43675,0xbcdd4bf5,0xbcf2a625,0xbd09c62f,0xbd1be135,0xbd3597fd,0xbd56b0a8,0xbd6cbf45,0xbd6ee13f,0xbd6c42a6,0xbd1fe508,0xbcd0d57b,0xbbe5593f,0xbbfa5d08,0x3d0cb51d,0xbc579fe5,0xbe08898a,0xbcd1ba5d,0xbd949aa1,0xbd5a9371,0xbd16373d,0xbce8c59c, +0xbc699de3,0xbcf67fbe,0xbd491ac1,0xbd19d64a,0xbcd17dc5,0xbd1d0682,0xbd1f5a24,0xbd17505f,0xbd542f49,0xbd06c64d,0xbd875a85,0xbce6c871,0xbc278191,0xbcc75f70,0xbce7f6ba,0xbcf476b9,0xbd0aa923,0xbd34d97f,0xbd525538,0xbd903853,0xbdc930df,0xbdff213e,0xbe055ef7,0xbdf43661,0xbd95ec7a, +0xbd060980,0x3c8160f2,0x3c90c17f,0x3df6fd0f,0x3c1d71dd,0xbd93cd10,0xbc8e89eb,0xbd5e2c4e,0xbd0bc9d7,0xbcc8e9eb,0x3b42b551,0xbba6000c,0x3ca3338b,0xbc406ff7,0x3c9334f0,0xbba311ba,0xbc496dea,0xbcab77c8,0xbc9dfc40,0xbce6ae1e,0xbcb7cbc5,0xbd26bb61,0xbc9b1a35,0x3b1f7530,0xbca33b85, +0xbd07048d,0xbd21d1a9,0xbd49214a,0xbd97a081,0xbdb4f86d,0xbe016a32,0xbe2e32c6,0xbe56a6fc,0xbe63bfe3,0xbe4dfd84,0xbde2a17a,0xbcde70a3,0x3d9a3f4b,0x3d9d213b,0x3e557257,0x3c5ea1ed,0xbd800ffd,0x3c9e0e9a,0xbb641a1d,0xbcc9ba87,0x3ac5c306,0x3d309f71,0x3d2f25a0,0x3d2d8bf2,0x3d737ee6, +0x3d4c6da0,0x3d24e1e2,0x3cf09272,0x3cf510aa,0x3ccdeb04,0x3cbbb0c1,0x3cf01f2d,0x3c0c15c2,0x3c27295c,0x3c4c91c0,0xbbd7e23f,0xbccb0f30,0xbcd4bb52,0xbd1957a7,0xbd64f88d,0xbd85cd14,0xbdeec96c,0xbe4a25ce,0xbe989297,0xbeac625c,0xbe9c2472,0xbe2be394,0xbd3752d4,0x3df488d3,0x3e0400fd, +0x3e9d5dc1,0x3e0d8ba4,0xbd581d1d,0xbd19bc75,0x3aaa5b3d,0x3cb80592,0x3d63bedd,0x3cefdbbd,0x3d0d168c,0x3d0b2ff3,0x3d0c21fe,0x3d2b41bd,0x3d311619,0x3d00d71e,0x3cd6831b,0x3c735ae9,0x3b85f9e5,0xbc3a13cc,0xbd10bf97,0xbca808b2,0xbc111582,0xbd4799cc,0xbdcb16b5,0xbdf4964c,0xbe2206bb, +0xbe5ca4b3,0xbe98587a,0xbeb05e02,0xbec62d1b,0xbeaf32f9,0xbe927654,0xbe80653c,0xbdc99c04,0x3d2eaad2,0x3e6adb48,0x3e76dcf5,0x3d159b17,0x3df7e611,0x3d11c503,0xbcb65ecd,0xbc85ca64,0xbd55b2a4,0xbd191bc9,0xbd0e6016,0xbb4c4827,0x3c853abb,0x3d48a651,0x3d4ea7ae,0x3d45164a,0x3d0691db, +0x3d15caf0,0x3cd6da17,0x3c8da004,0x3aceecf4,0xbbdd8798,0xbd4ea9ab,0xbd874012,0xbdb3f9e2,0xbe04509c,0xbe60c540,0xbe9b69ab,0xbec2f5fc,0xbebf1ed9,0xbebe1df4,0xbed3208e,0xbe7e519c,0xbe17b3d6,0xbd74de0b,0xbe4bbfb0,0xbe7e5f5d,0xbe6991a2,0xbd5b062d,0xbf2f5d90,0x3be4be31,0x3e817b7f, +0x3d13fbbe,0x3e033968,0x3d34a329,0x3d87bb18,0x3bf3317e,0x3d4042e2,0x3d1d4779,0x3c5892a4,0x3d850fc6,0x3d89902f,0x3c6c19fe,0x3cc8ffc1,0xbc8a5cfa,0xbcf007c4,0xbd8d57bb,0xbda8b4db,0xbde186a8,0xbe26993f,0xbe1e54fb,0xbe017676,0xbd8faff7,0xbd2ef9c6,0xbd734528,0xbb857724,0x3d5714df, +0x3dc11138,0x3e816362,0x3eaeadec,0x3eb33afc,0x3dd86bc4,0xbe45b589,0xbf321009,0xbf2f301e,0xbf266972,0xbf015b27,0xbcd651e6,0xbe238aeb,0x3ceec5b1,0xbd6762bd,0x3c0ec626,0xbc41735b,0x3d3ecd2c,0x3d337703,0x3c703248,0x3d2fdbfc,0x3d09eb9c,0xbd07ee67,0xbd178278,0xbd3517a5,0xbd9b1620, +0xbda27d58,0xbdb64925,0xbdd557fb,0xbd04dab2,0xbc1d85a6,0xbc84df69,0x3c9b4a9c,0x3d3acdc2,0x3d69000a,0x3da895e9,0x3e0c4cec,0x3e652249,0x3e26a83c,0x3df00e44,0x3d760dd8,0xbd3003d0,0xbd52b2db,0xbdaa6e37,0xbeac9e3d,0xbdeaafbc,0xbea467fe,0xbe57abcc,0xbe0863d5,0xbde3d1dc,0xbcadbd8c, +0xbc2d6e02,0xbc11bacb,0x3d20805e,0x3d55fc6b,0x3d538aa6,0x3d2ce72c,0x3d1adb6f,0x3cc33bdd,0xbb4051db,0xbcb1d369,0xbce5ce79,0xbd61a107,0xbdcf59b0,0xbe01f3ef,0xbdaed8ed,0xbd55cc6a,0x3d6e7b62,0x3d84787d,0x3da697f3,0x3db41ae0,0x3d96b1cd,0x3d8f5233,0x3dd1985a,0x3e20ed12,0x3e1da887, +0x3d927e6c,0x3cc9ba5c,0xbd7d11e1,0xbe12dfe4,0xbde6e238,0xbdd34cf1,0xbe3b295c,0xbcbe936e,0xbbbb89e1,0x3d15616e,0x3cfc360d,0x3c244b34,0x3bc8813a,0x3bb49ad7,0x3caaa5a2,0x3d20ca72,0x3d46e526,0x3d45d2b0,0x3d27f077,0x3d56050c,0x3cfd922c,0xbb68ea4a,0xbc2d4598,0xbc986eb6,0xb9755281, +0x3ce50f87,0x3d3e738e,0x3dcb4377,0x3da517b7,0x3d7b3124,0x3cf9027d,0xba7ea581,0xbbf7b86f,0xbbd9bd5b,0xbcc6ed7b,0xbd1bdede,0xbb916a3d,0xbc25fff8,0xbcf4a221,0xbda09d75,0xbdb96f47,0xbd0f17c0,0xbcefe97a,0xbd1a11d8,0xbd777edc,0xbd3c0453,0xbcde7fb1,0x3b59b371,0x3c974362,0x3ceabc47, +0x3c999d14,0x3cb1e97a,0x3ca76619,0x3d7494a5,0x3d5e4de7,0x3dad219b,0x3dc1e8c6,0x3de8bf4b,0x3dfbb7ab,0x3df13049,0x3e061f42,0x3df3caa7,0x3ddda7ca,0x3dbec8f6,0x3da9c9b4,0x3da23087,0x3da5ec2f,0x3d3cbd42,0x3c49fc94,0xbcb9b9f8,0xbc88f59c,0xbc676506,0xbc32f0bb,0xbcdaa2d0,0xbcf8ee3d, +0xbcbda9a0,0xbcf8b9d5,0xbcd45718,0xbd2881f3,0x3d3e3ee9,0xbb502d67,0x3c327927,0x3c1a6b1f,0xbc1a7405,0xbbfbf643,0xbc968e04,0xbccb2a55,0xbca89bcf,0xbcf3c7ac,0xbca8d013,0xbcd1ec1f,0x3c074f97,0x3c84ad00,0x3c9e89ea,0x3d27f4de,0x3dc83285,0x3d465277,0x3d3dd27d,0x3d5505a7,0x3d624502, +0x3d63e004,0x3d5082c8,0x3d454a67,0x3ce7baab,0x3c9c2f15,0x3bd90ce2,0xbb26feac,0xbc638955,0xbcbc628d,0xbc9cabba,0xbcaaaad8,0xbcd0ac15,0xbcea71f3,0xbc0dd7db,0xbcb74789,0xbd277a76,0xbc869937,0x3d992774,0xbd451441,0xbc889500,0x3d6ade53,0x3d78ef53,0x3d826400,0x3d8b124d,0x3d90896e, +0x3d927935,0x3d949bca,0xbc23cb34,0xbce68b40,0x3dcbec6b,0x3c5ac6e4,0x39f49471,0x3980a040,0x3c09f9ee,0x3b60234a,0x3af47ad9,0x3ab54983,0x3b12377e,0x3ba9b89c,0x3b85009f,0x3b3c33c6,0x3ae4f761,0xbb1c4ecb,0xbbbb58a7,0xbc30b3a7,0xbc4036ed,0xbc4fdcbc,0xbc417c32,0xbc5e39ee,0xbc4dc6d9, +0x3d183f3f,0x3d64b965,0x3d644f9d,0x3da9218d,0x3d35116e,0xbd71fff1,0x3da67efe,0x3d2fefd0,0xbd0ff50f,0xbd1424c2,0xbd1bd401,0xbd3a08b2,0xbd3e02e1,0xbd47bb14,0xbd6537c8,0x3d190b20,0x3d858432,0xbd899a78,0x3cec703d,0x3d689d06,0x3cd02998,0x3cd32d27,0x3ce9b11b,0x3cd9e5fb,0x3cdd45ad, +0x3cdda33b,0x3ceb31d1,0x3cd92643,0x3ccc01da,0x3cba2378,0x3cc84964,0x3cd7645d,0x3ce1bdde,0x3d04a80b,0x3d25bfd0,0x3d5f0680,0x3d7618a0,0x3dc4c0d9,0x3de7e9ec,0x3d3f256b,0x3da01baa,0x3d7e6258,0x3d42f7e0,0x3d55a22b,0x3d1bafd5,0x3d3f3f86,0x3d6b29a3,0x3d5c9e7d,0x3d726790,0x3d335d84, +0x3d2ce305,0x3cb79c83,0x3ca0d8c1,0x3d20b52e,0x3caa273c,0x3bd21ab8,0x3cebd257,0x3c43cfd0,0x3caeb1b2,0x3c734509,0x3c8172b9,0x3c7878c3,0x3c95cbcc,0x3c638cd1,0x3c41a067,0x3c068672,0x3c198156,0x3c47ed2a,0x3cb5a16e,0x3d021685,0x3d61acec,0x3db99072,0x3dda44ec,0x3e1b9881,0x3e133b66, +0x3e0cb457,0x3de78a00,0x3da3994d,0x3d7b1188,0x3d538bea,0x3d3485ac,0x3d307627,0x3d100e43,0x3d390486,0x3d192a1e,0x3cddc72b,0x3cc8afb0,0x3cad0d36,0x3c942645,0x3b921bd0,0x3b508881,0x3cbb8646,0x3b232c20,0xbc39fddd,0x3a12ab26,0xbbd6a02a,0xbbd1531d,0xbc2c97b9,0xbbf22263,0xbcb548e2, +0xbd0489d0,0xbd226d9f,0xbcee0041,0xbc596a40,0x3b066fae,0x3cca8a1e,0x3d8aa651,0x3e14f1c0,0x3e2a03d5,0x3e44c450,0x3e4d821a,0x3e3f0cc8,0x3e08a189,0x3df8eefa,0x3dbce99f,0x3d8d4256,0x3d1a9cf9,0x3d176c4d,0x3d1576fd,0x3d2c0e6a,0x3d225a2d,0x3d0d695e,0x3bdd4156,0x3ca7c93e,0x3bf849ab, +0x3c7d9831,0xbbcbffb8,0x3cb45ab1,0xbca24a00,0xbd1ede0e,0xbc717e1d,0xbcda19c8,0xbced5533,0xbd07a050,0xbceabd3e,0xbd40c3a7,0xbd62040a,0xbd7f959c,0xbd7defdf,0xbd604f82,0xbca1669a,0x3c791ce8,0x3dcf9aed,0x3e5d8311,0x3e6ff441,0xbdc505a0,0x3d054310,0x3e1b6f84,0x3d70b534,0x3d3dc54c, +0x3d38989a,0x3d366be3,0x3d8878e5,0x3d8870e6,0x3d6290b6,0x3d28ccf9,0x3d27e720,0x3d1f642c,0x3d11a5ed,0x3cbbe46d,0x3b84746d,0x3c611216,0xbcd1c78a,0xba9ec4a0,0xbcda9a98,0xbd6d8705,0xbd362376,0xbd995b5b,0xbd4c7261,0xbda2513c,0xbe1849c2,0xbe24332a,0xbe2b43a7,0xbe1b05b6,0xbc9c4246, +0x3d789816,0x3e1ae6f0,0x3d725951,0xbbca4477,0xbd85a1c3,0xbb84d4cd,0xbee7eaca,0xbde104fb,0x3da13c67,0x3c2ac443,0x3c9f0764,0x3d096f1d,0x3c4d8e63,0xbc0e8889,0x3b54240f,0x3cc2f3b5,0x3d17d108,0x3d6c9463,0x3d6e976b,0x3d115216,0x3ce56c95,0x3c7d99d1,0x3c3ae7c7,0xbc989793,0xbd10f650, +0xbd5ebc5a,0xbdaadaf7,0xbd8c3e27,0xbd2300ab,0xbc0f4286,0x3cc9cefc,0x3d823ed4,0x3db518c1,0x3e26542e,0x3e97a75a,0x3e9fe17c,0x3eb0e239,0x3eb74fe0,0x3e6b8048,0x3d87d134,0xbe602a16,0xbecae48c,0xbc90cb5a,0xbece7657,0xbe85ea49,0xbe0d2f64,0xbd9d6c7e,0xbd357a48,0x3b5eec23,0x3b3321a2, +0x3d5a86f7,0x3d61f4dc,0x3b303752,0x3d6eeb0b,0x3d2cbc7e,0xbcb6e2c4,0xbcb82906,0xbd2d201f,0xbdb0ffd9,0xbd8e99fd,0xbdb6bed8,0xbd03c18d,0x3dd6a6ae,0x3e2563af,0x3e8dd5d8,0x3ee2f62a,0x3f0f126f,0x3f2121c3,0x3f1ba795,0x3f0b1684,0x3eed0b57,0x3ea8efbe,0x3e9d5f59,0x3e878b92,0x3ec2a0bc, +0x3efdd764,0x3f3291d6,0x3e9da187,0x3f3084ce,0xbc987f09,0xbea8fa34,0xbc8c4c9e,0xbd952abc,0xba2b50a0,0xbc63fbb5,0xbc58ea16,0x3c68490d,0x3cd06bdc,0xbc88f05c,0x3d2f6ffa,0x3d44bb50,0x3c2fe059,0x3c47c1fa,0xbbf71edf,0xbcaecfe1,0x3bbe2104,0xbd7cb53e,0x3d43e3f7,0x3e1bec77,0x3e2fe324, +0x3e7867e2,0x3e8eabc8,0x3eaf0d58,0x3ed8b71e,0x3eccaf89,0x3ece010c,0x3edd52fd,0x3ec5deb2,0x3e9adb03,0x3e2a8e18,0x3e978add,0x3ed1ae33,0x3f3aac4c,0x3f1a16e0,0x3ecfd7b1,0x3e875d5f,0xbd4c3c27,0xbd4f51a2,0x3c647894,0xbcadaa2e,0x3ca84d7a,0x3d04c83a,0x3d4ba744,0x3d6b8927,0x3d385c2b, +0x3d204e59,0x3d0d27da,0x3d0a425f,0x3c7c3282,0x3bb53ebd,0x3d175b10,0x3c9bdf35,0xbd449ebc,0x3da674d4,0x3e0efe65,0x3e10f924,0x3e329ae3,0x3e252136,0x3e1641f0,0x3dead975,0x3df122d9,0x3dc124c0,0x3ce63746,0xbbfe1de8,0xbb008768,0x3cbf4109,0x3da6cd9f,0x3e36bc4b,0x3ecb01a2,0x3ec1cf6d, +0x3e2a2360,0x3e34e48d,0xbd5504ab,0x3c07c4a5,0x3af8b7a0,0xbc21ace7,0x3bc75f41,0x3c2af6b4,0x3d09437b,0x3d134e4e,0x3d254d62,0x3d636e5c,0x3d6e08bf,0x3d1669b3,0x3d554d63,0x3d858f45,0x3d9bbc16,0x3d790039,0x3d732988,0x3d8fbe39,0x3d685fbc,0x3d6ef555,0x3d62e517,0x3d86cc00,0x3d7a69a8, +0x3cc2d50f,0xbc8b3261,0xbd8320bf,0xbdb6119e,0xbdad901c,0xbd1e5e18,0x3d0efe52,0x3d57014e,0x3d61a110,0x3d8c8b6b,0x3df908e5,0x3c833634,0xbbb8de94,0x3caa50af,0x3d38829b,0x3cf2c091,0x3cea9243,0x3c82c7d5,0x3c8ed361,0x3c2ab8b8,0x3c94ab92,0x3c96222e,0x3c97fce6,0x3c9f72fe,0x3c7cfc99, +0x3d2242c5,0x3d029a21,0x3d0ac139,0x3d365dd0,0x3dab1cc9,0x3d083a86,0xbc087edd,0x3bb907d6,0xbc31c27e,0xbc733c72,0xbcd6c2ff,0xbd052a26,0xbc5f9ca2,0x3b5592cb,0x3c8bfdc4,0x3ca65bfb,0x3c891dd3,0x3c03130e,0x3caaf108,0x3d0ae299,0x3d018fb5,0x3c954bf5,0x3cd795f4,0x3d0ac006,0xbd0db45e, +0x3b2c29fe,0xbb5b9f9d,0xbb01e286,0x3c6aeda1,0x3c4e53ed,0x3cc9a599,0x3d0ef80e,0x3d0cd3de,0x3d38046e,0x3d37cf1b,0x3d37ae67,0x3d075730,0x3ca5f7a2,0x3d22b97f,0x3cd793aa,0x3d1d9559,0xba8b1149,0xbbb38c83,0x3a2fd9c0,0xbb0f359d,0x3af0e35a,0x3bb87e55,0x3bdb0a28,0x3c1ed745,0x3c4f34dd, +0x3c9db147,0x3cca78e1,0x3cfbd153,0x3d104228,0x3cf7ae32,0x3cc647ec,0x3cd5be0d,0x3ce27e5d,0x3cb3d9e2,0x3cfcb795,0x3d36676a,0x3ca37204,0xbd102861,0x3d4b2827,0x3c9faadf,0xbcd88f6f,0xbce9774a,0xbcfbdbc9,0xbd0543e9,0xbd0bbdb4,0xbd12c1ca,0xbd11b563,0x3cf54099,0x3d45daff,0xbcab3c1d, +0x3cabc7cc,0x3d0903e1,0x3bbbcc6e,0x3c6e4440,0x3c3438a1,0x3c2e7a16,0x3c0dbb24,0x3bc35a54,0x3b508646,0x3be4a589,0x3c1e4f18,0x3c3dddc3,0x3c701c99,0x3c993788,0x3ccf2a4b,0x3cd09dcb,0x3cdbb5da,0x3ccff690,0x3cd57974,0x3d03de98,0xbdc3abcf,0xbdc9d8bd,0xbe0672df,0xbd73c1c5,0x3c9eb2ea, +0x3df354f7,0xbdb45d51,0x3a8a7655,0x3db87692,0x3dc32fb8,0x3dc198c1,0x3db47b4a,0x3dc9567c,0x3dcaace7,0x3dc95460,0xbb5ba32c,0xbd9b26be,0x3dd60cd6,0xb9662f82,0xbd75eb31,0xbdd5adfd,0xbdb0bec6,0xbdbf5d18,0xbdb94238,0xbdbc1263,0xbdbc7d13,0xbdbb50d2,0xbdba5ac0,0xbdb832cc,0xbdb4fc23, +0xbdb7512a,0xbdbb91f4,0xbdbefa93,0xbdd69f88,0xbde33b9b,0xbde71c18,0xbdea6e0a,0xbe1a7b9f,0xbe0f1094,0x3dc58892,0xbd979d9c,0xbc01d552,0xbc732441,0xbd3e0112,0xbd16d046,0xbd77d469,0xbd672786,0xbd10cfb8,0xbd6722b3,0xbd533dcf,0xbd4ffceb,0xbcc68fa8,0xbd16c67d,0xbd72b61c,0xbd6be629, +0x3bed0934,0xbdce2291,0xbdcb0a81,0xbdd36f15,0xbdc4f8a8,0xbdc3f50f,0xbdbf4295,0xbdbe861a,0xbdc578d8,0xbdc7ecc4,0xbdc446fb,0xbdc7ad1f,0xbdd8d12f,0xbdea82e6,0xbe187543,0xbe270f9e,0xbe26e156,0xbe25632b,0xbe7e483d,0xbe187ea0,0xbc75f6be,0xbd50c663,0x3ce1a09b,0x3a3aee1c,0xba0950d0, +0xbc465ee7,0x3c68acde,0xbc096e43,0x3c077aa6,0xbcda9110,0x3c4b8ceb,0xbcb24b92,0xbc0f8a78,0xbd0bac17,0xbd1579ce,0xbd232b69,0xbd6975dd,0xbdabad77,0xbde1221f,0xbde35c0c,0xbdd5a735,0xbde20db9,0xbdeae338,0xbdeef9de,0xbdfe9e74,0xbdfc50d8,0xbdf42895,0xbdf09e6b,0xbde9fafd,0xbde4305b, +0xbe3bea3b,0xbe669a3c,0xbe798adc,0xbe74df35,0xbead49d6,0xbe0c8730,0x3d1e800e,0xbc8c942f,0x3ca882e2,0x3d1eae45,0x3ca7f44d,0x3ce24fe0,0x3ce47f06,0x3d035a3b,0x3ce049fa,0x3d2ed812,0x3cb2511f,0x3b5c3f4b,0x39234fac,0xbc89b098,0xbcbd8e46,0xbd2ec8ae,0xbd5250c6,0xbda20f98,0xbdca0d75, +0xbdddcf52,0xbdbd3497,0xbdba0e61,0xbdb729a2,0xbdcfc7c3,0xbe047756,0xbe136cc8,0xbe17b223,0xbe0d2c8e,0xbe07715e,0xbe0e64c2,0xbe83f67c,0xbe9a7ebe,0xbea342f7,0xbe96f8dc,0xbeec4722,0xbebf5f18,0xbe4820d0,0xbe08f86d,0xbdc88397,0xbd8a1645,0xbda89127,0xbd04b2fa,0x3b088745,0x3ca905d5, +0x3d0ace44,0x3d1231ac,0x3d153d18,0x3cdb8c9a,0x3c45cb06,0xbbc6e270,0xbc582573,0xbd191c33,0xbd8b6605,0xbdf6ef83,0xbe0ba333,0xbe168b1a,0xbe208cec,0xbe572994,0xbe70b0fe,0xbe6606fc,0xbe49f4fa,0xbe2aa375,0xbddcae67,0xbddb2abd,0xbdd0e931,0xbd703050,0xbe08b91b,0xbe688202,0xbec179bb, +0xbee57193,0x3d7c6c40,0xbe53d233,0xbe54261b,0xbdcc30ca,0xbdbc4225,0xbd16f441,0xbba2c426,0x3c0192bf,0x3c144eee,0x3cc403ae,0x3cb63fdd,0x3d3eda88,0x3d30619c,0x3c5fc389,0x3b811054,0xbc88976e,0xbd50de15,0xbd764263,0xbd9e9fca,0xbd2ed0e0,0xbce67592,0xbc6694a1,0x3d35cfa3,0x3e3474de, +0x3e9d3b39,0x3ed4e692,0x3eec09f7,0x3eea22d3,0x3ee1b198,0x3e6902fd,0x3d0cb503,0xbe107baf,0xbdb70c28,0x3cd7d241,0x3e7ae487,0x3e17a385,0x3ed924ba,0x3dd95a8d,0xbe18eddd,0xbd07f7a0,0xbdb3974a,0xbd17a5dc,0xbd5ba6d1,0xbceb9fe3,0x3c82b588,0x3cf230ff,0xbc648dba,0x3d0ae73f,0x3c57f647, +0xbd2c7905,0xbd3fb311,0xbd4a17c4,0xbd5bd07b,0xbc9bc1cc,0x394ae8d9,0x3d1ea96d,0x3d5dc3a5,0x3db44a2b,0x3e065547,0x3dcde5f9,0x3d749b24,0x3bc42009,0xbbb8b3e9,0x3cb1f43a,0x3da7844d,0x3d757eec,0xbd81fea4,0xbe451903,0xbe756ed7,0xbe66632c,0xbd0b03fb,0x3e4e3657,0xbe587ee4,0x3e93ef16, +0x3e661334,0x3d93bc5e,0x3cc39d4c,0x3c1a534c,0x3c6783c1,0x3cc9f8b1,0x3cd26248,0x3ce32bf0,0xbca02379,0x3d044d3f,0x3d39cc15,0x3d0aa880,0x3d187fb3,0x3ccfd3f1,0x3d230bb7,0x3c22b004,0x3d59f9d1,0x3d1a9f23,0xbd51c2b6,0xbd84027a,0xbda11d32,0xbe125e19,0xbe446889,0xbe659354,0xbe85b728, +0xbeb33bd8,0xbf010c49,0xbee0ef2d,0xbec4f56e,0xbe8c13d7,0xbec07bc7,0xbeed861d,0xbf23164e,0xbeca0ce1,0xbee006e4,0xbe05a019,0x3e45dfd1,0x3dc358db,0x3d0b1732,0x3d5593c9,0x3c116cbf,0xbcb9630f,0x3c1e5898,0x3c3053be,0x3c91f438,0x3c3c8aa2,0xba09ebbd,0xbbe7b2c8,0x3c6cb53a,0x3d16f581, +0x3d1e43af,0x3d317b87,0x3dc51435,0x3d1459ba,0xbd107796,0xbd43008d,0xbdfff798,0xbe311fec,0xbe77b9d5,0xbe9e081b,0xbebd54bb,0xbecb9176,0xbed36f56,0xbec6810f,0xbebed739,0xbea9ee37,0xbe981ca6,0xbe89d2e1,0xbe9f4744,0xbeb5668c,0xbe1ed5b6,0xbdb58204,0x3dd15cba,0x3c627e1b,0x3c21fb60, +0xbac3da45,0xbbbd02bc,0x3c9f8366,0x3c48def6,0x3c629937,0xbbdfd1fa,0x3c5731c6,0x3c2b8e11,0xbb06a57e,0xbcb71880,0xbd0b7b46,0xbd540281,0xbbe46cd3,0x3ced8acc,0xbd12a28a,0xbdac636e,0xbdc4cf73,0xbe1f31a9,0xbe49b033,0xbe5a2e19,0xbe4ad8a0,0xbe0830b6,0xbd9623ac,0xbd12e297,0xbc3f4bb3, +0xbd0ccbc5,0xbdf6cbd0,0xbe022714,0xbdf9a23c,0xbdcbb10f,0xbdf057b7,0xbd87f41d,0xbc318a80,0xbc1330b5,0xbc86eeda,0x3ca70648,0x3c08b849,0x3c05f523,0xbb9f3b12,0x3c673250,0x3b1fcd1f,0x3ce7039c,0xbc6d5821,0x3c50b502,0xbc99e4c4,0xbb31f857,0xbd019a47,0xbceacc7d,0xbd48b846,0xbd536780, +0xbdc7ee26,0xbdcb3543,0xbd797ad7,0xbd105ff9,0xbd0ac582,0xbd1cbb30,0xbd3c8d32,0xbd7ade25,0xbd991054,0xbdaa7b3a,0xbdd294fa,0xbdea9a91,0xbdffb90d,0xbdf9e3f7,0xbe02bed0,0xbe0eb641,0xbdbd8de9,0xbd879def,0xbd8f3db4,0x3d054f8e,0xbd441b9d,0xbcb894ff,0xbc928e2b,0xbd26e1fb,0xbd0dd16d, +0xbd523858,0xbd507a5d,0xbcbc98f0,0xbd34eb40,0xbd322478,0xbd0eacb2,0xbc30d09d,0xbcaaef9d,0xbd2dc154,0xbd0e61a3,0x3c7efdae,0xbd463bad,0xbd279dbf,0xbd4f2e80,0xbd6863e7,0xbd69e5cd,0xbd5c1851,0xbd42aa30,0xbd5ee387,0xbd7b5190,0xbd8d3c3f,0xbd9d559a,0xbdaac0a2,0xbdbad4a4,0xbdb05459, +0xbd9ecf15,0xbd94f326,0xbd8a6fc7,0xbd931a28,0xbdb4cc66,0xbd18d00a,0x3c4868c5,0x3da25a9f,0xbd81d5c2,0x3bbedd39,0x3d902d55,0x3d9df2ed,0x3da5ec08,0x3d9ccafe,0x3db7e2b5,0x3dc54e31,0x3dcbc5e1,0x3c0621a3,0xbd6253d9,0x3dbac611,0x3c02a21d,0xbd2bd59b,0xbdae637f,0xbd8f22a1,0xbd93851c, +0xbd8f1ce3,0xbd8f3ca1,0xbd930118,0xbd956b45,0xbd9e10aa,0xbda26fea,0xbda6f7b1,0xbda9ad4e,0xbdadf244,0xbdb6eaeb,0xbdaca691,0xbda80c92,0xbda0564f,0xbda0cb21,0xbdb71d8e,0x3d614f99,0x3d1098b2,0x3d96c6d1,0xbd3be8a9,0xbde43e39,0xbe1a9d2a,0x3b2e0173,0xbdb7a8c1,0xbe18744e,0xbe1b220a, +0xbe18c254,0xbe0abd3e,0xbe183626,0xbe1a74b9,0xbe16889f,0xbdb6b66a,0xbbc3de52,0xbe22edfe,0xbdc1eb0a,0xbd017ec7,0x3db07dc3,0x3d4dad22,0x3d77c201,0x3d811985,0x3d859aaa,0x3d89505a,0x3d8e38cf,0x3d8a3b55,0x3d890c02,0x3d842fa6,0x3d82afc6,0x3d7ca742,0x3d763bf7,0x3d6f2046,0x3d5895a7, +0x3d13da79,0x3d31d164,0x3ca7a226,0x3bec5b15,0xbe1dabe1,0x3c3d44ee,0xbd37b94a,0xbd1f815b,0x3a8971bd,0xbb35ab35,0x3d23bc7e,0x3cd79499,0xbc653f21,0x3c96efb5,0x3cb2ddd0,0x3c72bff6,0xbcc1a2db,0xbc3359a0,0xbbdec11b,0x3beeaa6d,0xbdcdd299,0x3d7ab578,0x3da0d210,0x3d9ecb63,0x3db94659, +0x3dc20e12,0x3dcd21a4,0x3dd2ae3e,0x3dc4563a,0x3db3f691,0x3da11ce3,0x3da40273,0x3da3428b,0x3d96f4a0,0x3d8ec374,0x3d436682,0xba5e6a13,0x3bf28ed8,0x3c35f106,0xbd31d996,0xbde3e901,0xbd656fc6,0xbd8afaf0,0xbd0c5027,0xbce7d975,0xbc96ef97,0xbc9c16dd,0x3ccf28d1,0xbcc19883,0x3d1b06c8, +0xbc81eb53,0x3cbfda59,0xbcd8e7fb,0xbb96c8d5,0xbb8fccf0,0xbbc78d79,0xbcdaafc3,0x3d2c3356,0x3dcf4038,0x3dbb43fb,0x3df7ccf8,0x3e05ed80,0x3e143bda,0x3e1f8469,0x3e158404,0x3e0fd8b1,0x3dfcbc69,0x3df9048b,0x3de775f6,0x3ddd3fb2,0x3dc74f71,0x3d7f22b5,0xbd15d37f,0xbc9f5007,0xbcd878f4, +0xbe0db756,0xbe3d862d,0xbd8a693c,0xbd768833,0xbd181bae,0xbc6504c1,0x3ba615ff,0x3d1b8e99,0x3d15886b,0x3d2a8ae6,0x3d0093e8,0x3ce59681,0x3ce4e03f,0x3c0b9667,0x3c54cc19,0xbce680fc,0x3c7da9ca,0xbd1d6c71,0x3d62837d,0x3e03d461,0x3e015bf8,0x3e22f315,0x3e2bdd1e,0x3e3beeef,0x3e4401d6, +0x3e2857f2,0x3e03c6fd,0x3dc3e289,0x3de3d28c,0x3e043870,0x3df807e7,0x3dd34d63,0x3c4c4cca,0xbe167ea3,0xbdfad7b7,0x3e9c0e6b,0x3d8d3c41,0xbe20971e,0xbd98ded0,0xbdc3f2a1,0xbda08047,0xbce53ba8,0xbd47048c,0xbc73d85d,0x3c86c228,0x3cb82dcd,0x3d2de4ee,0x3d3b22fc,0x3cea0b84,0x3cae6dd7, +0x3cb9c1b2,0xbc0885da,0x3ce5fd65,0xbcec145d,0x3d27f8f4,0x3df82732,0x3dd33219,0x3e3d687e,0x3e7e3669,0x3ea02694,0x3eb5ed95,0x3ecfafb0,0x3ee3c40e,0x3eeebb2f,0x3eb67de3,0x3e885237,0x3e1e69c6,0x3e735c61,0x3e92c930,0x3ea34bc5,0x3e7317e5,0x3ebe8df1,0x3dfaf9df,0xbd8f622e,0xbb86e637, +0x3cdcdaa8,0xbc593308,0x3beb6e15,0x3ba08d21,0x3c7a7170,0x3c7f330c,0x3cef1d7a,0x3d329b90,0x3d175b89,0x3cd691e1,0x3d005465,0x3ca3d9f3,0xba925fa2,0x3c55347b,0xbc37cbb9,0x3dafc78f,0x3e35c8a5,0x3e442ac5,0x3e6d43dc,0x3e7ec945,0x3e88a765,0x3e9483a0,0x3e870d33,0x3e4f5ab4,0x3d9b73ca, +0x3d945297,0x3d4803aa,0x3d2eac26,0x3df04b58,0x3dfc7078,0x3e21b508,0x3e8b937f,0xbe21b6eb,0x3e6e6d15,0x3e4cfdab,0x3dd7b2b5,0x3d464141,0x3d3eab12,0x3b41a379,0x3b64f7cd,0x3d0a7e06,0x3d38bcf4,0xbc5b3d2b,0x3d0fd2ce,0x3cc59d2f,0xbbe02355,0x3bcb2d1c,0x3ce9f4ac,0x3cce4e98,0x3d2075af, +0x3d458771,0x3cf64dc8,0xbd09e01c,0xbda64edb,0xbe10b029,0xbe24dc49,0xbe3424f9,0xbe3746da,0xbe7f1e7b,0xbe959aba,0xbeaa1aab,0xbe686996,0xbdd8cf1f,0x3dacd3a7,0x3d8644c6,0xbcddb46e,0xbe5427ce,0xbe75529d,0xbe1b06c3,0xbe501206,0x3ccdcb8e,0xbc354f40,0x3bd40c2d,0x3c852779,0x3ce59db9, +0x3cd59b58,0x3d0308ee,0x3cf4f049,0xbc7f5d85,0x3ce8d9be,0x3cde5f34,0x3c908dcb,0x3c7987ed,0x3bf2e7db,0x3c692ac6,0xbc605314,0xbc686a9b,0xbd55af74,0xbdd6aa8b,0xbe048a47,0xbe31b63b,0xbe4e6a03,0xbe84dcee,0xbea26096,0xbea35963,0xbe8e9ce2,0xbe4ee038,0xbe33b859,0xbdf731fa,0xbda4a7f9, +0x3caa3943,0x3e022aea,0x3e3c4c5e,0x3d2aa30a,0x3e12afa2,0xbde52732,0xbe80fc4f,0xbde867a9,0xbd60ac6a,0xbd3ee311,0xbc55e044,0x3c134a74,0x3b40f6aa,0x3cac8da5,0x3beb7313,0x3be99510,0xbb5107ce,0xbbcf6209,0xbc523e80,0xbc5ee3fd,0xbd0a2c14,0xbb05e03e,0x3c049bf5,0xbd6f48d2,0xbdbca7f5, +0xbe122cdd,0xbe39d599,0xbe4241e0,0xbe2f50dd,0xbdd52cbd,0xbdb02ffd,0xbc6ee650,0x3e02c56c,0x3e141f10,0x3e25bb9a,0x3e1d9476,0x3e3b2f91,0x3e1e9ca4,0x3dbae86f,0x3dbaf3ef,0x3cd96162,0xbd6793be,0xbde9ed51,0xbd58e2ed,0xbd4078f5,0xbcc0ff73,0xbb967ccd,0xbab85a42,0x3c9daea8,0x3c83a361, +0x3c39c9e9,0xbb5d53fb,0xbb9455fc,0xbba4e5af,0xbcb92a44,0xbd3b1361,0xbd4899ab,0xbdac1302,0xbdd015e1,0xbdb590ee,0xbd71f3df,0xbd4ccb95,0xbc7cbe23,0x3ccb74b0,0x3d086fd1,0x3cd8402b,0xbbc1808d,0xbcd88b5a,0xbd099a15,0xbcd90b0f,0xbc6046d1,0x3c953481,0x3cadd10f,0x3d158713,0x3d4379db, +0x3bf87063,0x3d17d854,0x3c1f0390,0xbcbceb55,0xbc82eb10,0xbd247043,0xbc8c11ff,0xbb887007,0x3c5a8af4,0xbb83b13e,0x3c341ada,0xbbedff01,0x3bdd3b86,0xbcc12a06,0xbcc3877f,0xbd2019a1,0xbd228c88,0xbd7489fd,0xbd6c0778,0xbd93a74d,0xbd316301,0xbcbc5f8d,0xbd26be15,0xbd270f37,0xbd44224d, +0xbd33bf71,0xbd1b3a54,0xbd0a5bf1,0xbcdd4786,0xbcc86392,0xbbd12cf2,0x3bea15a7,0x3ce62027,0x3cb380cb,0x3cafa26e,0x3d237ca9,0x3cde46ad,0x3bc86704,0xb776c595,0xbda049ff,0x3a615566,0xbcf00627,0xbced7585,0xbbf5ddfc,0xbc5cabd3,0x3b974595,0xbc35ac09,0xbd134bf8,0xbcbd5436,0xbc6a4c01, +0xbcc588b9,0xbd249157,0xbd1b3d5f,0xbcef2261,0xbcd46caa,0xbd8104e1,0xbd13f2ac,0xbd133612,0xbd06f9b2,0xbce2c1e5,0xbcc47af0,0xbcb84209,0xbcc301ef,0xbc65e81d,0xbbade4fc,0x3b5500ae,0x3c5f13dc,0x3cc9fd68,0x3d1b0714,0x3d0bf354,0x3cef97b7,0x3ca78890,0x3c2c31fc,0x3c33c343,0x3ccfe40d, +0xbd5adff1,0xbdc3b8cf,0xbdeac4b4,0xbcbd79f6,0xbdadccf4,0xbde8c330,0xbdf2f99f,0xbdefe861,0xbdde3532,0xbdeec5aa,0xbdf765ac,0xbdf4132c,0xbdbee490,0xbd1e3ce4,0xbded023f,0xbdc35deb,0xbd63c633,0x3bcb38ea,0xbb7d1020,0xba8ce611,0xba5f6648,0xb92abdd0,0x3ad40b10,0x3b29ffdc,0x3c14ac7a, +0x3c664b12,0x3c9e1c7b,0x3cba55a8,0x3cce34b6,0x3cf36248,0x3cbb5608,0x3c9fdac4,0x3c8cca82,0x3c833619,0x3c4676a7,0x3d4c45b8,0x3d47e097,0x3d21e35d,0x3db3cb72,0x3dbb8b90,0x3d1d702c,0x3d9e3a0c,0x3dbb9234,0x3d687079,0x3d7a0dc9,0x3d7a50d9,0x3d4a1173,0x3d616899,0x3d5cb7e3,0x3d4c6a30, +0x3dbf57ea,0x3da09eae,0x3d31abe4,0x3dbfb236,0x3db22d59,0x3cf8d107,0x3d3322d8,0x3d35845f,0x3d33791f,0x3d40da24,0x3d493c22,0x3d4d1154,0x3d556394,0x3d596600,0x3d5cb0ae,0x3d6a61de,0x3d76caf4,0x3d8ab88f,0x3d75d396,0x3d6b94db,0x3d5a2866,0x3d5ddf99,0x3d692148,0x3d8630c8,0x3d42e5d6, +0x3d291236,0x3d5c2b48,0x3d4f8576,0x3d3fa4fd,0x3d3b94d8,0x3d4bf534,0x3d7462c9,0x3d87af45,0x3d763d73,0x3d4d91be,0x3d75f86d,0x3d475eee,0x3d37379f,0x3d818427,0x3d3c21f2,0x3da0aa41,0x3d401f2a,0x3cf9b36f,0x3d22dd40,0x3d0674b1,0x3d16fa29,0x3d1614fb,0x3d1f28c1,0x3d3f2fe9,0x3d68e3d0, +0x3d85347d,0x3da00300,0x3db28810,0x3dd0ec5a,0x3db24021,0x3da442bb,0x3d8ee74b,0x3d9127e4,0x3dc0cead,0x3d86aad6,0x3d546ca1,0x3d32d7aa,0x3cec4edd,0x3cd4931e,0x3cee067f,0x3cd4d023,0x3d404dd0,0x3d033da2,0x3d2c30c4,0x3cada6a4,0x3d17fb38,0x3d1f7544,0x3d034a2a,0x3cc11b44,0x3d15a90e, +0x3d03119d,0x3d87924d,0x3d33c77c,0x3c9acfd0,0x3d31b40d,0x3d1392cc,0x3d69275e,0x3d8ac946,0x3da38490,0x3dc741d0,0x3ddd2f2c,0x3df3e94f,0x3e0be544,0x3e123025,0x3e260d23,0x3e07ed14,0x3e03fefb,0x3de51399,0x3dedc35f,0x3deea7a6,0x3d92d801,0x3cb67d29,0x3c828a83,0x3c4d39ca,0xbb53ecb0, +0x3b18c0e9,0x3ab85229,0x3cded041,0x3d10434a,0x3c3910b2,0x3ccda914,0x3ca1809a,0x3c62560a,0x3ab2866e,0xbbf40e84,0x3cbd56fa,0x3b8c2565,0x3d52afb3,0x3cb8ba7f,0xbc73ff7e,0x3a9cd162,0xbc51e2e9,0x3b4f5f33,0x3be73e62,0x3c880089,0x3d418615,0x3db6ccf8,0x3e01093d,0x3e25b134,0x3e2ec4c4, +0x3e47590a,0x3e248560,0x3e0f7dec,0x3df7c05b,0x3dfc2604,0x3e5fb39e,0x3e7c723b,0x3e43c5f7,0x3de1ff22,0x3ddbaf9b,0x3daa868f,0x3d97153d,0x3d2790aa,0x3cdb68af,0x3cabb6ec,0x3c8056a6,0x3d019152,0x3d10978b,0x3d141fab,0x3cbf6441,0x3c3b9153,0x3cd87081,0x3c1bbd53,0x3d7d682f,0x3d8a9758, +0x3d8a29b2,0x3e16451f,0x3e3dcb01,0x3e6df216,0x3e947028,0x3ec0d524,0x3ec2bd23,0x3eb3abcb,0x3e827433,0x3e90af9b,0x3e954910,0x3e91d785,0x3e95796e,0x3e9ca9ac,0x3ead5ecf,0x3ea491bb,0xbe291c0d,0x3df5cdc5,0x3e3f6214,0x3da077fe,0x3d906c41,0x3d38d732,0x3c9caae3,0x3c17b113,0x3c8bf744, +0x3cba844b,0x3cc6ab4d,0x3d1daaec,0x3d12db1a,0x3cea4aa7,0x3ccb1ece,0x3ce2307c,0x3d838397,0x3d710690,0x3ddc380d,0x3c9eecca,0xbdc1ce18,0xbdf13c2d,0xbe4b2aef,0xbe4004c2,0xbe5c5053,0xbe70e329,0xbe8ce0fd,0xbe8354e3,0xbe55221e,0xbde0108a,0x3cbe16cf,0x3e27020d,0x3db14f28,0xbcbe831a, +0xbe4f308b,0xbe4cc392,0xbe0385cf,0xbe029ff4,0x3d95f79e,0x3d1e9f46,0x3da9572d,0x3d3c31f9,0x3d806843,0x3cb6ae8e,0x3d690260,0x3d4b5fed,0xbbd2eb2a,0x3d272e2f,0x3d0fbb12,0x3cec7e78,0x3d033d79,0x3cb9837c,0x3d488a4a,0x3b7009ca,0x3a8e09d7,0xbd559945,0xbdc4bee8,0xbdb90a1c,0xbe200643, +0xbe4d09b1,0xbe5c26a6,0xbe20fc6f,0xbe29a438,0xbe2a8499,0xbe1ffa95,0xbe692920,0xbe6ba2ed,0xbe80c28f,0xbe4dbea2,0xbd498a0a,0x3dffed1b,0x3d24adbd,0x3e7aa9df,0x3ce68552,0xbddf4510,0xbc952b53,0x3bad3719,0x3c488aa2,0x3c2e0998,0x3bee1a12,0x3cc68554,0x3cda8c56,0xbb0d6646,0x3c76aa79, +0x3bc9879a,0x3c3a54be,0xbc91dbb8,0xbcadc4ad,0xbce2e291,0xbcbd1a8b,0xbc8db8b5,0xbd6c4693,0xbda72bbf,0xbda48a89,0xbd855a96,0xbc96f6bf,0x3d02cfec,0x3dac458e,0x3e0200d7,0x3e42ff84,0x3e8ce760,0x3e6f868f,0x3e31352d,0x3dafef02,0x3dc232e3,0x3d8b7675,0x3e16ab8a,0x3e49be5e,0x3de023ee, +0x3e1ebff9,0x3dd03b92,0x3ce6468b,0x3d3b08f6,0x3c9a29b8,0x3d0b226d,0x3d81f3a0,0x3d441c81,0x3cb56d02,0x3bbae065,0xbb0a577a,0xbb5a3250,0x3c38d991,0xbb32278e,0xbcbd2887,0xbd1c81a8,0xbd73b9d6,0xbd6fddf8,0xbd460fab,0xbc9fbf0f,0x3b9f8109,0x3d00d4ec,0x3d856f50,0x3dad877b,0x3dadfa05, +0x3e1e14ba,0x3e105d33,0x3d4b4a3f,0x3cf95e76,0x3c154bc0,0xbb4600ed,0xbd52bb17,0xbcd8f5ee,0x3d5fcb16,0x3dda53d5,0x3d939e67,0x3dd8a3cb,0x3ccfe8d3,0x3bf62750,0x3bc0e829,0x3a771c04,0x3b294d6e,0x3c51f135,0x3b456eca,0x3b18f5f2,0x3b1b387e,0x3bdb8da9,0x3af4a8f1,0xbb60f73f,0xbbe6f233, +0x3ba2366c,0x3cda8c7f,0xbbaf99a9,0xbd15c465,0xbc3349dc,0xbce3c992,0xbd1e81a1,0xbcbd227b,0x3c48c777,0x3d292af9,0x3d7fe3ee,0x3d4bcb25,0x3cf2a0cb,0x3c7effcb,0xbca400e5,0xbd018141,0xbcc2faf6,0xbc934fd7,0xbc3e1dce,0xbc0f6015,0x3d7ffa1d,0xbbe7f925,0xba8a0d79,0x3d192c9b,0x3d01cc93, +0x3d0da940,0x3cd24a06,0x3c83a8fd,0x3c2f89d9,0x3c80db82,0x3b81a79a,0x3c8d11c2,0x3a93d513,0xbb2f5962,0x3b58d98e,0xbc46a2d4,0xbc1b89a3,0xbc4778ee,0xbc5482cf,0xbc107bc7,0xbc679133,0xbcc9d555,0xbd01c693,0xbd40e3b0,0xbd07804d,0xbcbff718,0xbc3ea13d,0xbc33b85a,0xbbd6117b,0x3a1aeb73, +0x3b9394b9,0x3c5684de,0x3c81c07f,0x3cc7a7c8,0x3cfcdab3,0x3cc6971f,0x3c7dd955,0xbbf54f67,0x3b5b8e28,0x3cac6650,0xbb938d86,0x3c72bd66,0x3c318221,0x3bd2ffbd,0x3c3e1be8,0x3a9a0363,0x3c4d49aa,0x3cae4bf8,0x3c97f148,0x3c1329e3,0x3c65ccc9,0x3b2f40a8,0xbb1b95e4,0xbbc296a8,0xbcc12e34, +0xbd07832c,0xbce134d8,0xbcdd2052,0xbcc2548a,0xbcb60c4b,0xbcbc2af5,0xbcd06b98,0xbcd45a0d,0xbcb3f476,0xbc94c4f8,0xbc811f41,0xbc6aad2b,0xbc8a7881,0xbc9e3937,0xbca11df4,0xbc95051f,0xbc50b436,0xbbeda903,0xbbed2603,0xbc57dfce,0x3d33d46d,0x3d5fcdfa,0x3c83a6ba,0x3d0ddf52,0x3d59384a, +0x3cf453b5,0x3cebf334,0x3ccff891,0x3c8231e3,0x3c8872f2,0x3c7f7e14,0x3c36e19c,0x3d485562,0x3d0713ec,0x39a7767b,0x3d266aeb,0x3cfdc8ed,0xbbc3b377,0xbb71b93f,0xbb672e2f,0xbb60f5c7,0xbb4f5c4d,0xbb132427,0xbb03a501,0xbb98102a,0xbbf9df88,0xbc2650d9,0xbc4120a1,0xbc3f8ce2,0xbc3d82a4, +0xbc1bbb2d,0xbc0e674f,0xbc1d7b3f,0xbc023354,0xbb6f5982,0x3ccbbc4c,0x3cdcdcd7,0x3ceead27,0xbb17cef7,0x3b9fbcf4,0x3d610e39,0xbb794e88,0x3afb4c66,0x3d2ef1e3,0x3d3c5729,0x3d3f85b0,0x3d4ba714,0x3d481200,0x3d4e1486,0x3d664cc2,0x3b67b82c,0xbb9d5446,0x3d744627,0x3bcda8ea,0xbb931ee9, +0x3c99085d,0x3c9ce7ca,0x3c866c35,0x3c6d8815,0x3c660195,0x3c5229ce,0x3c22d95d,0x3c41909d,0x3c5e574a,0x3c90c30e,0x3ca7962f,0x3cce0814,0x3d0a30b9,0x3d0078a2,0x3d03e2dc,0x3d1f5b8a,0x3ce5809a,0x3d4e4780,0x3cecf47c,0x3cbbe377,0x3c910377,0x3c4e3e77,0x3cb236e2,0x3ca317cc,0x3c863541, +0x3cab7f04,0x3c712b80,0x3b850532,0x3c0d7e27,0x3c88a20a,0x3c7cc53d,0x3c8b4968,0x3c83c268,0x3ba816b3,0x3c7584cf,0x3ca72d73,0xba400065,0x3c2dc366,0x3affb8ff,0xba6819b0,0x3a225aaa,0x3895e51a,0xbb9666a1,0x3a978177,0x3c170e47,0x3cc15cfe,0x3cfea4fc,0x3d28eb6c,0x3d6a721b,0x3d4d928c, +0x3d5e0e80,0x3d9d80d6,0x3d6079ce,0x3d88603b,0x3d3e22f9,0x3ca849c3,0x3cc1672b,0x3c813218,0x3c2d4175,0x3c5122c6,0x3c00bba0,0x3cad6866,0x3cf7af52,0x3b1ebfb2,0x3cb1b9fb,0x3c7d399d,0x3cb8a4d5,0x3bc13b36,0x3b719528,0x3bcf71cb,0x3c0c63c9,0xb980527e,0xbc31311a,0xb97923fa,0xbc46fd30, +0xbcd0eae8,0xbcda17d2,0xbd016404,0xbd2ee01a,0xbd027b3b,0xbc9b84f5,0x3c377439,0x3cdcae63,0x3d4cdb1e,0x3db29c22,0x3d91fec2,0x3d9b5529,0x3df52156,0x3d90c1e0,0x3de84c9e,0x3d95837a,0x3d3b4c03,0x3d033fd4,0x3d02ab1e,0x3cc46d69,0x3cc100da,0x3c6bcb70,0x3cef89e2,0x3d01ed4c,0x3cabe0f0, +0x3cccfbf6,0x3c990374,0x3cd759e3,0x3b756305,0xba3dd603,0x3b6698d3,0x3c2f9a76,0x388ebcec,0xbcb9d418,0xbcac0a1a,0xbd19f6d6,0xbd55f95b,0xbd2c8634,0xbd24228d,0xbd415d32,0xbcc26700,0x3c0db508,0x3d8188f8,0x3da27b03,0x3dd99efe,0x3e1735e3,0x3df04845,0x3e0536ea,0x3e56d11f,0x3e14def7, +0xbd37f722,0x3b8da530,0x3d9db3e7,0x3d710276,0x3d3a3acc,0x3ccdabca,0x3c2350e5,0x3cf343dd,0x3cb1abc7,0x3c4c49de,0x3c6be344,0x3cc5c84e,0x3cd32730,0x3cbfbc92,0x3c66f0d1,0x3c1a67a1,0x3c047053,0x3c67f062,0x3c3689f2,0xbc1d2d23,0xbd0bc134,0xbd6bc05d,0xbdaec282,0xbe0dddd3,0xbe2ef4dd, +0xbe3fb5b6,0xbe34c6af,0xbe2dad08,0xbe305c89,0xbe2a4764,0xbe251a8d,0xbe231b7a,0xbe07c1e1,0xbdfe21d5,0xbdcf691a,0xbd9ee547,0xbe57b8ef,0xbde00865,0xbc1ecf5e,0xbbbd8342,0xbbc18b2d,0x3c8a1a56,0x3cdc709a,0x3d09fee0,0x3d0c4bd3,0x3d06e7a3,0x3cb3a392,0x3d0e8f9d,0x3cd209ae,0x3cacb917, +0x3bb71c1b,0x3ad8ae2f,0x3a8c8735,0x3b8f221d,0xbc7bab56,0xbd94749c,0xbded7bcf,0xbe309b76,0xbe5cc6ce,0xbe8c7e7b,0xbe99cb92,0xbe9de9cf,0xbe88bace,0xbe609718,0xbe0a4abd,0xbe0d0dbe,0xbe1d5339,0xbe77d63a,0xbe74f741,0xbe4dda7f,0xbe1396b3,0xbe298032,0x3c8b23a9,0xbd933052,0xbdf55846, +0xbd53a896,0xbcd1b03a,0xbc6f1c1f,0x3c1a6e02,0xb9f14046,0x3d05c0d8,0x3d2f5638,0xbba2cd79,0x3d2d2665,0x3d3474e1,0x3d1b470e,0x3c8e90ab,0xbb89bcff,0xbc0010ba,0xbccc80ca,0xbd7bf03e,0xbd8f9794,0xbda9d061,0xbdc7eb43,0xbd89d68d,0xbd726542,0xbd21ea30,0xbd162b1c,0x3d632967,0x3df55eb5, +0x3e319444,0x3e2e7608,0x3da80784,0xbda7b45a,0xbd9c4910,0xbdd09c7c,0xbda4c20f,0xbd342876,0xbea581f1,0x3b660bf0,0x3d6d9c30,0x3bf60877,0x3c93a84a,0xbbf2fe58,0x3c89b0ea,0x3cdaa46d,0x3cd4d3c5,0x3c836bf4,0xbc35816b,0x3b64a758,0x3bb6f51a,0xbb932ff7,0xbc971342,0xbd1d857c,0xbd774033, +0xbd4236b5,0xbd7f2e15,0xbd329329,0xbc21a21e,0xbb849d55,0xbbede2b6,0xbccc0e8f,0xbd3871d5,0xbdbfcb2d,0xbd98715d,0xbdff9bff,0xbe6a6497,0xbe6e725f,0xbe58f362,0xbe2cbf40,0xbe4c708d,0xbe6657f2,0xbe8175b3,0xbeb9b0ad,0xbe741af9,0xbe3cdc53,0x3bf17545,0x3c7f968f,0xbc59c8d9,0x3c535e3a, +0xb9d2c5be,0xbc2272b6,0x3b85ff2c,0x3ae1b513,0xbc6b0419,0xbc35b19a,0xbb8b2408,0x3bcdd323,0x3b897665,0xbb0a3f00,0xbc18926e,0xbce7ba47,0xbd6f7440,0xbd17f8f4,0xbd314702,0xbd4d8a16,0xbd0a859e,0xbd470b70,0xbd7d2353,0xbdb3672c,0xbe0f01d6,0xbe389dce,0xbe510f2b,0xbe3a6225,0xbe2cbeca, +0xbe24356b,0xbe088a15,0xbe08a3e3,0xbe0543a1,0xbe3c5ac1,0xbd957282,0xbdd69865,0x3ba96285,0xbccf791a,0xbc496509,0xbc536fa6,0xbb76cfff,0x3be5ab1f,0x3a9a9eae,0x3b45f683,0x3b95053a,0x3c286b8b,0x3b895267,0x38e1c25d,0xbbf9e39f,0xbc597b62,0xbcc05b2c,0xbac036a9,0x3bc0a030,0xbb1d5422, +0x3c1807f0,0xbc43b631,0xbd7fcd3f,0xbe042947,0xbe19ddd5,0xbdf8e1f9,0xbd997957,0xbd05f91c,0xbcafd311,0xbc59c3b2,0xbc3f156a,0xbc4aed45,0xbce27b36,0xbd2e3819,0xbd130d9e,0xbd505656,0xbb79f09f,0x3ba19b5c,0xbcdfc2b9,0xbc9d87e8,0xbc47b6c1,0xbc062fc0,0xba81c021,0x39f66723,0xbb5efeb6, +0x3a4148d8,0xbc841a65,0x3b8ac9ee,0x3c339b72,0x3cbb287d,0x3c63d3b4,0x3c7f9a74,0x3c7a6bb8,0x3bbb6c5f,0xbc9a6954,0xba628b8b,0x3b2423de,0xbc8343a8,0xbc70e956,0xbc3c8a0f,0xbc7b8b3f,0xbcf61b8b,0xbd1c9ba5,0xbd47caee,0xbd618271,0xbd6bf4f8,0xbd82227d,0xbd8e247a,0xbd6f207f,0xbd4c9c49, +0xbd31a3ca,0xbceae710,0xbd351523,0xbd53eb35,0xbcb04568,0xbd0db9be,0xbd17a62c,0xbce05b69,0xbcfed9b1,0xbce3980e,0xbce49db4,0xbd1665ee,0xbd2046c7,0xbd22a143,0xbd131d1e,0xbd1ac60e,0xbcd30ca0,0xbc73ef81,0xbceea1d4,0xbc742f5c,0xbc7d6380,0x3bd49f73,0x3bc1a7e1,0xbb664de4,0xbc1f2370, +0xbcb0ac08,0xbce885bb,0xbd05bbb3,0xbd0f7e38,0xbd1f2574,0xbd37ca14,0xbd584390,0xbd6d5257,0xbd85f29a,0xbd74b1df,0xbd6a5e6e,0xbd5a5553,0xbd5405e2,0xbd1801a9,0xbd184280,0xbd78d2e9,0xbd3441ae,0x3c9a241d,0xbd7f248d,0xbd359150,0x3b910927,0x3bad8b5e,0x3be9178c,0x3c574bc9,0x3c3fbbc3, +0x3c59013e,0x3c830054,0xbd35d810,0xbd6763fa,0x3c78e35c,0xbd0e6ddf,0xbd3567d6,0xbc8bcb3b,0xbcdc332f,0xbcebf948,0xbcfcc916,0xbd042e8d,0xbd0c6f58,0xbd1978e7,0xbd249895,0xbd2e3e00,0xbd343eaa,0xbd394c33,0xbd40c119,0xbd4ff57c,0xbd41a752,0xbd386f14,0xbd2b17b1,0xbd27ab44,0xbd37de32, +0x3ce67d59,0x3d24e1e0,0x3d0fbdc0,0x3d973f10,0x3d70c6b9,0x3c582f00,0x3d82cedf,0x3d69b1bc,0x3cc49f84,0x3cda2288,0x3ccbe993,0x3c81e42f,0x3c9d7737,0x3ca3ba62,0x3c938f77,0x3d644367,0x3d73737c,0x3c388fc2,0x3d52660e,0x3d7852e7,0x3c82a099,0x3cb1b39e,0x3cb42240,0x3c9e4cd5,0x3c9a8fbb, +0x3c985306,0x3ca7bc16,0x3c9674c2,0x3c90fae2,0x3c8a87ce,0x3c7ac2af,0x3c75a43d,0x3c6bd4da,0x3cae98be,0x3cec7611,0x3d2d52a5,0x3d2e39e0,0x3d853d27,0x3d929574,0x3d5c8499,0x3d588be0,0x3d453462,0x3d33af5f,0x3d289bea,0x3cf39c43,0x3d047be2,0x3d38a4b4,0x3d44c379,0x3d4388e2,0x3d1ac72f, +0x3d304cd3,0x3d095e61,0x3ce5d7dc,0x3d1e43df,0x3ced2f1c,0x3d010dda,0x3cdc4964,0x3ca91507,0x3ce3c13b,0x3ca85366,0x3ca03973,0x3ca05a7e,0x3cd691a1,0x3cb81882,0x3c9217fb,0x3c555762,0x3bac2d80,0x3be96ccc,0x3c625f60,0x3cf912c5,0x3d3cc59e,0x3d923c97,0x3d94b9b9,0x3dc21e8c,0x3dc25fc8, +0x3db7b7a3,0x3d960e63,0x3d5476e3,0x3d45bf1c,0x3d1aa2f2,0x3ca51a6e,0x3d16a9fb,0x3ccfbf06,0x3d1a89d8,0x3cd5b021,0x3d0a3b58,0x3d155fe5,0x3cf97b19,0x3cc3d9a0,0x3c865411,0x3cb3ea0f,0x3cd37878,0x3c1fa581,0x3c089251,0x3c0eecb5,0xbb30b20e,0xbc04ab02,0xbc316a02,0xbb67a53b,0xbc86e616, +0xbca933a8,0xbcf0718f,0xbd24e0a6,0xbd18d5a4,0xbcd661a4,0x3c7eae6e,0x3d4a0b41,0x3dd94bf9,0x3dd112b1,0x3ddfeece,0x3dd9eb12,0x3dabea35,0x3d798627,0x3d42990c,0x3d5de934,0x3d0cd236,0xbb8e88ac,0x3caa05b0,0x3cd3f3cb,0x3bf11dc1,0x3c9d38e2,0x3ca3614a,0x3c5d150d,0x3b026fa6,0xbbd1a6ee, +0x3c133d3f,0xb9ba7f29,0x3c498b3d,0x3adf938c,0x3c90f632,0x3d082aba,0x3c7f688a,0x3bd25c10,0x3bb6f297,0x3ccd5584,0x3c67ad34,0xbc1aee64,0xbd22f1d9,0xbd878feb,0xbd525017,0xbcc65de5,0x3d2501ec,0x3db8ea4b,0x3e18a636,0x3e07e274,0xbd275bef,0x3b653bc7,0x3dc0035f,0x3dc098f9,0x3cba928e, +0x3c766c1f,0x3c2b5edb,0x3c983004,0x3d0528fa,0x3d1df03c,0x3cb91821,0x3cb7a61c,0x3ca33724,0x3d09252e,0x3c609589,0x3af03be0,0x3c2f6bba,0xba30c9e3,0x3c11c388,0xbc6d0ab2,0xbdabf340,0xbdf95300,0xbe2b82bd,0xbe01b5e8,0xbe0f8667,0xbe510d20,0xbe4ec914,0xbe21a7bb,0xbd45b557,0xbd033685, +0xbca66dcf,0xbb91093c,0x3c2bccc8,0x3bba6f38,0xbc20495b,0xbd391cc6,0x3daeb0e3,0xbd74fae7,0xbdbe6fda,0xbcda0c09,0xbbc66b9f,0x3c9aabd7,0x3d01179a,0x3d5dd049,0x3d4b2c84,0x3d417500,0x3cec3f48,0x3d193c0d,0x3cd6329d,0x3ca66342,0x3b6c13c4,0xbb869f88,0xbc28d94b,0xbcdcb17a,0xbd3483d7, +0xbcf1f472,0xbc179f9d,0x3c3f2608,0x3d321556,0xbcd202db,0xbd08da8c,0x3b757813,0x3d99a172,0x3de02d5d,0x3dd9f727,0x3e3fe5e3,0x3e576105,0x3e3e489b,0x3e90b0df,0x3e8951f1,0x3e4d4b72,0x3e092d3c,0x3d5cb6bc,0x3d8369ad,0xbc5e257e,0xbbb0e744,0xbce73a2a,0xbc318364,0xbc2b6a2d,0x3c15a009, +0x3ca5472d,0x3d02b6c8,0x3b31d6e1,0x3d0455d2,0x3d136c8e,0x3d2ff547,0x3c7a89a6,0x3bdbe7a0,0xbc22cc09,0xbb8a038e,0xbc167c9f,0x3be8b174,0x3d47ae26,0x3d56123a,0x3dc4666c,0x3e1669b1,0x3e3cb5cb,0x3e3b9e42,0x3e356207,0x3e04eab8,0x3d0bda32,0x3d35a7eb,0x3dbcc437,0x3e3f5be3,0x3eac8a1e, +0x3ea7221a,0x3e3ed50b,0x3da8b5ce,0x3e3ccc54,0xbca5d58e,0xbcee78d8,0x3cec79b8,0xbc544172,0x3cb3ce94,0x3c89d2ad,0x3d246931,0x3cb7a5d0,0x3c4a8dcf,0xbbfffd4e,0x3c4055b9,0x3c90e98c,0x3cd2264f,0x3cb22e65,0x3c448fee,0x3c1c6d37,0x3c3ea5c8,0xbce144f5,0x3c0a9521,0x3d3257b3,0x3d42f7fd, +0x3d814b0f,0x3d72f219,0x3d76b8a4,0x3d9817ae,0x3d3712f5,0x3d3da2ba,0x3da9e16b,0x3d98816e,0x3dbfb996,0x3d95bb9c,0x3e74262e,0x3eaad302,0x3ec10ce6,0x3e8bd322,0x3e7cb74d,0x3e045abe,0xbd9b6e5d,0xbc155c57,0x3c1a4a28,0xbaf67012,0x3c5c7b9b,0x3cc22fa2,0x3c454556,0x3c843033,0xbb5e8ad4, +0x3c71486c,0x3cb9ee61,0x3cdd326a,0x3c612cc1,0x3b9764ae,0x3b902b77,0x3d0cdc81,0x3c817679,0x3d60020f,0x3d62d9b0,0x3cd08f55,0x3b55386a,0xbb645a3b,0x3c8a895a,0x3d7908fa,0x3d613d19,0x3ddd68d5,0x3e5deecd,0x3e2afdaf,0x3e25c96e,0x3e24f29d,0x3e797209,0x3e8c031f,0x3e950fd7,0x3e684301, +0x3dc17ec3,0x3d7d0005,0xbd2f9622,0x3c077aa8,0xbb1e043d,0x3c931c47,0x3cc226ee,0x3c66a2c7,0x3cd1abb0,0x3c9c20f0,0x3cb08516,0x3c1874e0,0x3c2f93ef,0x3c86a045,0x3cbd6ee3,0x3d02a135,0x3d19f764,0x3cc68e6b,0x3c80f8fc,0x3cf8ec32,0x3d5e9315,0x3d7c9249,0x3d84a2f2,0x3d7986e3,0x3d2da12e, +0x3bd321d2,0xbcba3eac,0xbd5d5b30,0xbd8a283b,0xbd5785f2,0xbc9bd1ea,0x3cb52ebc,0x3d8d7267,0x3dd970da,0x3e034982,0x3dc840bd,0x3d81b82f,0x3d591d20,0x3d4c4aae,0x3d379ba8,0x3c8b93fe,0x3ccd0322,0x3ca7ad75,0x3ced529f,0x3c66e9d0,0x3cdcb9c8,0x3c7ce134,0x3d09b483,0x3c6759e9,0x3caa2220, +0x3c90fb96,0x3c9e0130,0x3c174129,0x3cc93b95,0x3d186c17,0x3d5d077a,0x3d42e71d,0x3d09ed4e,0x3cccff14,0x3c38e35f,0x3aa00c48,0xbc156787,0x3c301271,0x3cc07843,0x3cec07d3,0x3d1d0b69,0x3d1d0de2,0x3d13a978,0x3d3527f6,0x3d620e71,0x3d9bbb8d,0x3d85c02d,0x3d623d2f,0x3d862998,0xbd20f038, +0x3d38ab87,0x3c9d3c5e,0x3c90fc8a,0x3d2a3e7f,0x3d0dd1d2,0x3d55d9c6,0x3d4e7ae3,0x3d070ad5,0x3d361f0e,0x3d263729,0x3d0fb126,0x3c909fd4,0x3c8fe4af,0x3d1d35e2,0x3cfa314d,0xb89ebcc2,0x3cc0487d,0x3c3cabaa,0x3c636568,0x3c3389e0,0x3c2a913a,0x3c1524ec,0x3b514cad,0x3c078158,0x3c39a3ea, +0x3c93e038,0x3ccdb642,0x3d124ecf,0x3d3e9205,0x3d4bf565,0x3d4f73cf,0x3d534d84,0x3d5b4200,0x3d4fad5e,0x3d90241d,0x3cf3afb1,0xbc64808d,0xbdaeaba6,0x3d6386dd,0xbb94c7da,0xbd91931e,0xbd9be90a,0xbd9e2634,0xbd9917ac,0xbda48040,0xbda9acf4,0xbdac313e,0xbbdac58f,0x3d24801f,0xbda471e7, +0xbc56113f,0x3cb70409,0x3d26de0d,0x3d09fd1d,0x3d0bfd25,0x3d02f622,0x3cf90757,0x3ceccc4d,0x3cdc210b,0x3d0aa326,0x3d20ba03,0x3d347452,0x3d4435f1,0x3d503cad,0x3d613abd,0x3d5a3b46,0x3d5ae8c9,0x3d58e320,0x3d618cfa,0x3d74370e,0xbdc9ebf2,0xbdb9e9b5,0xbdf5514f,0xbd6d46dd,0x3c00d8c6, +0x3dc7941c,0xbdb3c180,0xbbfad1e9,0x3d97ad34,0x3da3afec,0x3da508c3,0x3d9b33e6,0x3db04165,0x3db45fdb,0x3db7e719,0xbc0e4505,0xbd9b2c8c,0x3dc484a1,0xbbc381f8,0xbd76c214,0xbdd617ce,0xbdaed385,0xbdbeb8ea,0xbdbba23d,0xbdc07c79,0xbdc13409,0xbdc20960,0xbdbe146e,0xbdbe078b,0xbdbf2848, +0xbdc40537,0xbdcb8c9d,0xbdd980cc,0xbde1296a,0xbde2898a,0xbdd8490c,0xbdd51b6e,0xbe11197d,0xbe0121a6,0x3d853837,0xbda26891,0xbcf52a7d,0xbcfc7398,0xbd6b165d,0xbd430a11,0xbd8914cf,0xbd8349d2,0xbd2e3252,0xbd7e176e,0xbd61d93c,0xbd518cbf,0xbccf34d1,0xbd18622c,0xbd6d31c0,0xbd69400c, +0x3c346652,0xbdc3a816,0xbdc3d76b,0xbdce7b36,0xbdcdccc9,0xbddb3cd7,0xbde1c390,0xbde66ab8,0xbdde315d,0xbddda312,0xbde98da7,0xbdf7eeb5,0xbe0b7071,0xbe2058aa,0xbe2c25cb,0xbe2d6830,0xbe22fcfd,0xbe1ed109,0xbe35cef5,0xbdd41a6a,0xbc57bbc6,0xbd440062,0x3a505b03,0xbc2e8df1,0xbc3871f5, +0xbcbfc00b,0xba4fed3c,0xbc94a061,0xbb8a118c,0xbd05d62d,0x3bf39a92,0xbc9585fe,0xbb61db0e,0xbceabf9b,0xbd075e2b,0xbd1cb8f5,0xbd3a294c,0xbd8da212,0xbdcad96a,0xbdcbea72,0xbdd23eeb,0xbdec7b82,0xbdf83314,0xbe01cc47,0xbdf440e9,0xbdf67df3,0xbe03e8fd,0xbe0e3555,0xbe25403b,0xbe4de410, +0xbe5e3984,0xbe5e2964,0xbe48b391,0xbe33536f,0xbe97abb4,0xbdf594ee,0x3c39f2dc,0xbd1f10d1,0xbd03d05e,0xbc45f0d0,0xbc94ff10,0xbc5316ee,0x3bd156da,0x3c8672c9,0xba236dbd,0x3cac9412,0x3c2bbc55,0x3bc2e259,0xbbe114b0,0xbcb83257,0xbc7e40e2,0xbd21de18,0xbce32065,0xbd8060d2,0xbdc492f6, +0xbdd57f73,0xbdd56e0f,0xbdf93777,0xbe0eedf0,0xbe213d25,0xbe19df38,0xbe15a3ac,0xbe293e07,0xbe3da277,0xbe778663,0xbea2ad02,0xbeb1a428,0xbeae295d,0xbea233ab,0xbe92f3f1,0xbd1a2888,0xbd86580e,0xbd98e29e,0xbcf52e13,0x3c82072e,0x3cce5e21,0x3c22adf0,0x3a5ae5d4,0x3bf94dd7,0x3c7a8491, +0x3cbe9e9e,0x3c2c0042,0x3c024b09,0x3cd2b629,0xbb154c3a,0xbca7ebb0,0xbcb3d500,0xbd634017,0xbd867b3c,0xbdd7390d,0xbdc939f5,0xbdc12366,0xbe014b21,0xbe30913b,0xbe38dbe1,0xbe1a478d,0xbe2932a7,0xbe396863,0xbe413531,0xbe0c83fa,0xbd8b3726,0x3ce61d38,0x3d3590ce,0x3d58c389,0x3cf2d493, +0x3a980c93,0x3d811d75,0x3d6db4d2,0xbc014c32,0xbc43dc82,0xbd03944e,0xbcb49051,0x3a8aa8c6,0x3c9b4555,0x3d201218,0x3d263534,0x3c62240c,0x3ca6a509,0x3c8b1246,0x3cc2d51f,0xbc10569e,0xbce1c426,0xbd37535f,0xbd87be07,0xbd67e485,0xbd9b4d71,0xbdd8137c,0xbdb498f5,0xbd7a590f,0xbcfa1099, +0xbc62d0e6,0xbc1b89ec,0xbb6209a8,0x3bb15723,0x3c167884,0xbd16f667,0xbd065694,0x3d109d8b,0x3b896c25,0x3c84d24d,0x3da372cc,0x3d0cb87f,0x3c39bddd,0x3ace8cfa,0x3d4ef671,0x3d054974,0x3d009f0c,0x3c4a443b,0x3c121323,0x3c98a77d,0x3c6d3e31,0x3c81a3a5,0xbb390ab6,0x3bd4489b,0x3c27b839, +0x3d1d5b84,0xbb178066,0xbc80c835,0xbbc27e4d,0xbabea2c6,0x3c06d667,0x3c05751e,0x3cd361b6,0x3cf8f477,0xbc171f29,0xbd40cd37,0xbda60e6d,0xbdbbb17a,0xbdfff9cb,0xbdf9259f,0xbdbad676,0xbe111ddf,0xbe369c2d,0xbe7aee90,0xbe8d8e6e,0xbe74b504,0xbe56ad81,0xbd05c8a1,0xbc6d7272,0x3db9c73c, +0x3cc5825d,0xbc2c155c,0x3c95673e,0xbbccb66f,0x3bcdd11c,0x3ccdeb72,0x3c26009a,0x3b882ca0,0xbc02f5a7,0xbb4f31df,0x3c02c98a,0x3d3edb4d,0x3ca65747,0x3cb63ed0,0x3d3b4617,0x3cb7a815,0x3cec66bd,0x3c43fd89,0xbd004039,0xbd55d130,0xbd5275cb,0xbd4155ff,0xbd01ee78,0x3b524c56,0xbd282916, +0xbd2fcf83,0xbbc3bdeb,0xbca87ec1,0xbc2cda5d,0x3d3c0434,0xbd6bb60c,0xbe2ed2d8,0xbeadcd79,0xbe08298b,0xbe70164b,0xbb356309,0x3e03b663,0x3d303a1c,0x3cc020b7,0x3d066d39,0x3caba730,0x3c2ee752,0x3c59776c,0x3b3700b5,0x3b8a7cbb,0x3cc4944d,0x3cd76996,0x3cb6a3ad,0x3c8d5eb8,0x3c803055, +0x3ca46a31,0x3b9b3919,0x3d096e25,0x3cccd108,0x3cc352ac,0x3d3e0a03,0x3cf4dbf5,0x3a99a29b,0xbd1c17e9,0xbdd13a74,0xbd9852bd,0xbdc9ee10,0xbe2de632,0xbe1f2c8c,0xbe12d541,0xbdd37f16,0xbe0e6930,0xbe1e97a8,0xbe5a57a0,0xbe6a524f,0xbdd5f0d2,0xbd726a56,0x3d193d33,0xbb2936b8,0x3c874b79, +0x3c95bcd7,0x3c5ee4b9,0x3c085008,0x3b4ecdfd,0x3c055163,0x3bd0122d,0xba70b147,0xbb242428,0x3b73274b,0x3c12d790,0x3c76167d,0x3c8909c4,0x3ceecef1,0x3d15c7ce,0x3ca4a3dc,0xbc2852c1,0xbc3a9773,0xbc264d8d,0xbcba1c80,0xbd014826,0xbd805d0f,0xbd5f72aa,0xbd4c746b,0xbd163edd,0xbd0872af, +0xbd20aca1,0xbd6db245,0xbd2da6d8,0xbd2975fe,0xbd68c16e,0xbd87b5ce,0xbd66cc74,0xbd0bc47e,0x3b5b7916,0xbca3a0e7,0x3b0154af,0xbbbcdd1d,0xbb709fa2,0xbbc156e9,0x3c8f51e0,0x3c09242f,0x3d141347,0x3c1428c7,0x3cbb53c7,0x3be60641,0x3c44a6e1,0x3b143e75,0x3bc1fc89,0x3be98137,0x3ca1b22f, +0xbae8f795,0xbba410db,0x3c78d7e7,0x3cb7b2b7,0x3c474fc7,0x3b9a3a8d,0x3ad74ecc,0xbc3271e3,0xbcbe9e5e,0xbd0e60a2,0xbd24416c,0xbd179086,0xbd16d445,0xbd20232c,0xbd27cade,0xbd3f8e32,0xbd237f8c,0x3a73887a,0x3b72400b,0x3dab02a3,0x3c61ab13,0x3d2921f1,0x3d19a023,0x3c805f3c,0x3cb12be1, +0x3a372db5,0x3bd6fba6,0x3cb10901,0x3bfd49c4,0x3bd59297,0x3c32dbdb,0x3c9575bb,0x3c8688b7,0x3b9c10fa,0x3b62109d,0x3ccc510f,0x3ba844f9,0x3c43d992,0x3c144c3a,0x3c1cadbd,0x3c5d820b,0x3c8a9f90,0x3caa3247,0x3c5cc67f,0x3c12aca3,0x3b6a95f5,0xbacf917d,0xbc3f6376,0xbcaf5937,0xbc92330b, +0xbc538f71,0xbc0ca6b9,0xbb069622,0xbc06a87e,0xbcaf7285,0x3ce25623,0x3d81e1b6,0x3db2e815,0x3bf8eb95,0x3d696fbb,0x3db53b59,0x3dba5221,0x3db73e56,0x3da7d7be,0x3db2c32b,0x3db32068,0x3dafec7e,0x3d5e6eca,0x3c6530ec,0x3da0ba53,0x3d4fb6a6,0x3c9f1582,0xbc1f51c7,0xba89a176,0xba83dbc9, +0x3a67f2a2,0x3ae4ffe5,0x3b115218,0x3b8d937e,0xb9d6b245,0xbb8b67e6,0xbc0c28ba,0xbc5370cc,0xbc7ee9d1,0xbca5805f,0xbc869782,0xbc784803,0xbc61d8f1,0xbc59c732,0xbc60efc0,0x3cc3f898,0x3bf8ce83,0x3d213788,0xbd605a76,0xbdde145c,0xbe122793,0xbc777ca0,0xbdb88edf,0xbe0d6e04,0xbe112a31, +0xbe0ffbf7,0xbe038783,0xbe0ee405,0xbe0f9df0,0xbe0ba959,0xbdb27579,0xbc962b2a,0xbe15f095,0xbdc31f45,0xbd31ceb4,0x3d4e00df,0x3ca87592,0x3ce31547,0x3cf744f6,0x3ce79583,0x3cdfad06,0x3cd2524e,0x3cd72b4d,0x3ce05525,0x3ce88d81,0x3d02a413,0x3d079688,0x3cfbf091,0x3d0f5e94,0x3cf942fe, +0x3c79e6ff,0x3c685586,0xbbf8a99b,0xbc9e27f4,0xbe0f9fe1,0xbc5b458e,0xbd6e740a,0xbd512cc3,0xbc838ab4,0xbc84a874,0x3c83c021,0x3bea5674,0xbcbdcbd4,0x3ac033e3,0x3ba06b2a,0x399ef2cf,0xbce5efe5,0xbc9b3b5d,0xbca94d36,0xbc431a1a,0xbdca799d,0x3cd71c48,0x3d0cbc63,0x3d00559a,0x3d31763b, +0x3d24c06d,0x3d1ed97b,0x3d011579,0x3ce943b1,0x3cf0d6d7,0x3d12ed84,0x3d4dd896,0x3d6ab977,0x3d3e3164,0x3d775b14,0x3d42ef4e,0x3bc9a40f,0xbbaf7530,0xbc8869e5,0xbd3f85dc,0xbdc813bc,0xbd79b221,0xbd9dc019,0xbd42da9d,0xbd09b193,0xbc8c5f28,0xbccabc57,0x3c648dbc,0xbcc85243,0x3cd446f1, +0xbca03fad,0x3c9ef1db,0xbc8f1659,0xbad9eead,0xbc6d72d6,0xbcad3568,0xbd1e2eea,0x3c37c669,0x3d44817b,0x3d17e263,0x3d7e1703,0x3d5788c6,0x3d49838c,0x3d26a7ff,0x3d21c853,0x3d379f57,0x3d674ea1,0x3d9d1c98,0x3db4079f,0x3d8331e7,0x3db1b070,0x3d766524,0xbc87d14d,0xbd002cf5,0xbd1ba473, +0xbe0a41bf,0xbe25c7ec,0xbd9f4b78,0xbdaa03f7,0xbd789abd,0xbd0ddfc1,0xbc2a1e77,0x3c8dabe2,0x3cc6e105,0x3ce01e02,0x3c65725e,0x3c9aa406,0x3cec9324,0x3c239df9,0x3c2e6679,0xbd03196b,0xbbb3c73a,0xbd4a500b,0x3c181f2f,0x3d4e1581,0x3d3cc5ba,0x3da60de4,0x3d967a4f,0x3d8ea4c4,0x3d4ab88b, +0x3d0ed262,0x3d19ddc2,0x3d8c15f6,0x3df7da2f,0x3e169ff4,0x3de30dc3,0x3e0cb1ca,0x3db5ca19,0xbcfc8bf5,0xbd83df3a,0x3eaf8110,0x3e4f9f60,0x3cc03776,0x3c7e10c4,0x3bfe8579,0x3b20cd5d,0x3d114f05,0x3cf3f316,0x3bafd61c,0x3b270939,0x3ca1a9a9,0x3c50c218,0x3c3d8fd7,0x3c914c25,0x3bd88234, +0x3c3a454d,0xbc8bf634,0x3be53a2a,0xbd1e9976,0x3b056db0,0x3d8de724,0x3d29ec44,0x3d972e37,0x3d7d9ea4,0x3d702ecd,0x3d03428d,0x3d716c86,0x3d42ce1c,0x3b947871,0xbd592a85,0xbdb35a5b,0xbe11c84c,0xbd8e7db8,0xbbfa59b0,0x3d16a728,0x3e5bcdfb,0x3d68fbe7,0x3dc36a7d,0x3d8d6e9e,0x3d80aff2, +0x3dafc190,0x3d120a12,0x3cf3a2cb,0x3c631d4e,0x3d209502,0x3d151d69,0x3c8016f8,0x3c8d8c9f,0x3c91da47,0x3d25e36b,0x3c90164e,0x3bc9cf19,0xbcaa6cde,0xbc49a1ac,0xbd583467,0x3c3b19a3,0x3dcba8dc,0x3dc4581b,0x3df46c5e,0x3dfc2427,0x3df05863,0x3db2b30c,0x3d58cee8,0x3cd01320,0x3cece299, +0xbda1288c,0xbdd5c190,0xbdbb67d9,0xbdbe7c50,0xbd81180d,0xbd3d4c77,0x3c78fcfa,0x3c032d3e,0x3d811f9c,0x3c815e18,0x3d23874f,0x3cca233c,0x3ceeb4f3,0x3c8b8f8a,0x3d5a75b2,0x3cf3a13e,0x3cefcf66,0x3b57d23d,0xbb3f89b5,0x3b9f5442,0x3d63e253,0x3c78565f,0x3cb41936,0x3c6cb22e,0x3d0084ee, +0x3cde129d,0x3ccff543,0x3c9ff579,0xbc564a80,0xbd0cd0ae,0x38c38fd6,0x3cf073b8,0x3d31cf82,0x3d535805,0x3d653ec5,0x3dad98c8,0x3dbb9aa6,0x3e0827ad,0x3e60fa8e,0x3e1b25af,0x3d95596d,0x3ca574a8,0xbce9c1f3,0xbd4ca188,0xbd0cc4c1,0x3d1409ad,0x3d1618be,0x3c53bd8c,0x3cb226d4,0x3cba73ec, +0x3d3ce307,0x3c51c304,0x3ab18e81,0x3ad92bf8,0x3b5ad219,0x3c3d2695,0x3d4f134d,0x3cd4380e,0x3c6de9be,0x3ca6bc96,0x3c8b6491,0x3bd20d20,0x3c93874e,0x3d0896c6,0x3d0a863a,0x3cd295b8,0x3c7ef0e2,0xbcae00ee,0xbdb44fd2,0xbdacfeac,0xbdd77926,0xbe06c01e,0xbdc13269,0xbd3851a1,0x3c846f14, +0x3cb4a72c,0x3d851188,0x3dd382af,0xbc231497,0x3d9a022b,0xbd482683,0xbdccd3e4,0xbcdc47fd,0xbc1b0d0c,0xbb941808,0x3b9f0e14,0x3bbed29b,0x38592157,0x3c8df07b,0x3ca138fd,0x3cc98953,0x3cb36f8a,0x3c9d0958,0x3c5bf6ee,0x3c93f2f8,0x3c98a228,0x3ca3f315,0x3bfc05bd,0x3ba7925d,0xbbe077cd, +0xbce658f7,0xbcd8812a,0xbd06ff48,0xbd00a385,0xbccd8b45,0xbd5a878a,0xbd8d9831,0xbd70a6de,0xbd077f2d,0x3bdb0089,0x3d57a9bb,0x3daa2ac0,0x3d85f100,0x3c82587e,0x3d2094a2,0xbc1528fe,0xbd43cc80,0xbd845b80,0xbc5d4161,0xbc0c7766,0x3bfd1f66,0x3ca935e0,0x3c47a7ee,0x3ccaf4f1,0x3cbff2ef, +0x3cb209d3,0x3c82c52c,0x3c81830c,0x3c59c287,0x3c88adb7,0x3c156f87,0x39958528,0x3a322868,0x3b03f857,0xbc23605e,0x3b981824,0x3c2f419b,0x3cacf9a3,0x3cd8b569,0x3cdc473d,0x3cc1c131,0x3c18ffc5,0x3b26dea6,0xbc2e05ec,0x3cb5905a,0x3d4ec4df,0x3dad6ab7,0x3d0970df,0x3b1715bd,0x3b84a587, +0xbcec04c1,0x3cd38116,0xbc16eb15,0xbd231166,0xbc8bc349,0xbcece642,0xbc9c0e19,0xbc2cb9f0,0xbb046267,0xbbbd2fff,0x3c34ce41,0x3b2bc783,0x3caeb714,0x3bd92437,0x3c9aa3bd,0x3ba6d4e1,0x3c3a470f,0x3bf85b0f,0x3bc50020,0xbaf7c54b,0x3c55def7,0x3cd1f966,0x3c9509b6,0x3ca89f79,0x3c53d940, +0x3c22bd9d,0x3bc2e591,0x3c9ca3bf,0x3d0d1c93,0x3d49cd74,0x3d3e5935,0x3d1e35e5,0x3d27cb57,0x3d07ea98,0x3cd6d04b,0x3cc57e35,0x3c70e8c6,0x3c5fc7d8,0x3be40d97,0xbc937d11,0x3c2a99c8,0xbb5f34cc,0x3a7369e2,0x3c48af65,0x3c11f960,0x3cb7c828,0x3c80c58e,0x3b7b5ed0,0x3c8f3f53,0x3ccad536, +0x3cc0cdd3,0x3c97ba51,0x3cbc35d4,0x3cbcfc7a,0x3cd3eb20,0x3c299102,0x3ce22336,0x3cce9113,0x3cd718ee,0x3ce82851,0x3ce8eed1,0x3cedd5bf,0x3ce17e00,0x3cf8f00c,0x3cf85e4a,0x3d047b6d,0x3d0e7099,0x3d29c8ed,0x3d3b2ae6,0x3d2715e4,0x3d0dc75f,0x3cdd9bef,0x3c968991,0x3c8919c3,0x3ca23bb2, +0xbc79c8e8,0xbd01a933,0xbca02802,0xbbb766e1,0xbcf67905,0xbcf5484b,0xbcfe3cf1,0xbcf4e08f,0xbcbb522f,0xbce505fb,0xbcec43dd,0xbcd3b3fe,0xbcc53be2,0xb9cda76d,0xbcad8f88,0xbca4afb6,0xbb185a79,0x3cd868a6,0x3ca8097b,0x3cb56320,0x3cb2fbaa,0x3cbb1346,0x3cc4ff3a,0x3ccee4b4,0x3cd2f1ed, +0x3cd7f3d6,0x3cda9ddf,0x3ce234fe,0x3cdd3c27,0x3ce5709b,0x3cc5b521,0x3cb680ad,0x3cae7498,0x3ca0bfb6,0x3c86f146,0xbc019588,0xbb767567,0xbc44dfc5,0x3d3b4413,0x3d6f2a04,0x3cbb3e93,0x3d040c26,0x3d685491,0x3d3267ac,0x3d40fc77,0x3d419ae9,0x3d137e7c,0x3d2bf356,0x3d2a7842,0x3d1d5b96, +0x3d7fc5de,0x3d1245da,0x3d035906,0x3d765263,0x3d349640,0xbca1dacb,0xbbdf80ac,0xbc0113fd,0xbbe555d7,0xbbf65707,0xbc05591b,0xbc1b82ea,0xbc266751,0xbc3b9a67,0xbc495792,0xbc7e706d,0xbc89b7ff,0xbc918803,0xbc7870c1,0xbc3f2a96,0xbbab20e9,0xbb5ed69e,0x3c9d8e92,0x3cba71be,0x3c801abe, +0xba860409,0x3c98e518,0x3cab7455,0x3c24597d,0x3c2d5cc6,0x3b526a15,0x3c79cf20,0x3d101689,0x3ca45737,0x3c496525,0x3cc351d6,0x3cba1b92,0x3c8431ff,0x3cbee98c,0x3befc98f,0x3d30645b,0x3b1e4b6c,0xbc73e7cd,0xbbf6f091,0xbc2be5b0,0xbc7057f5,0xbc9a8f4d,0xbca8dcb5,0xbcabe2f8,0xbcadce7c, +0xbc9df055,0xbcd8076a,0xbcd7a8e2,0xbcb05e38,0xbc3496de,0x3b368d1f,0x3cb61524,0x3ceed159,0x3d2df0bc,0x3cfbca65,0x3cb7e3d3,0x3cc1ce47,0x3c2ea428,0x3bd5e9f7,0x3c432ba9,0x3c1b88b0,0x3cd4a833,0x3bb5e336,0x3d0dc698,0xbab878bf,0x3cc93b69,0x3cc95345,0x3ceb9417,0x3c78143e,0x3c79f657, +0x3c187306,0x3ce4853b,0x3c1ac7ce,0xbca83f80,0xbb9b9d6f,0xbb85a441,0xbb7100c5,0xbbd8c926,0xbc2d9cbf,0xbc3c8c28,0xbc8ef1a5,0xbcc84434,0xbd3b80de,0xbd61e92c,0xbd66ab45,0xbd21934d,0xbc8755da,0x3cfbb71a,0x3d2d4661,0x3e02a40e,0x3d8ffe3d,0xbb27eb34,0xbc340c11,0x3b889702,0xbc09b7ac, +0xbb6ed592,0xbc549940,0x3b32c385,0x3c93e641,0x3b9e52d5,0x3c472387,0x3c528f94,0x3c900f81,0x3b8579db,0xbb9bd2e3,0x3bbb571e,0xbc8f5a7f,0x3c109827,0x379ee9bb,0xbcdef419,0xbc88861d,0xbc94081e,0xbd0134e1,0xbd2c9085,0xbd35dc18,0xbd2cf983,0xbd341b59,0xbd3f5900,0xbd92c114,0xbd8d1dfb, +0xbd4f676b,0xbbdac06e,0x3d28972b,0x3dee2223,0x3e091258,0xbd8aa93d,0x3def1972,0x3e7de66b,0x3e21b8c7,0x3dcd2f82,0x3d8a9da3,0x3d4f3b95,0x3d80120d,0x3d36b3bb,0x3cdf8ee8,0x3c9d2d65,0x3c0c0725,0x3bb452e2,0x3ccf9c79,0x3c4b145f,0x3bb10a85,0x3bcf4773,0xbb2d7bc6,0x3cf03b10,0x3cbe7031, +0xbb706ca1,0x3d297f80,0x3d95e6b6,0x3ded3fd5,0x3e154984,0x3e2f6212,0x3e179d15,0x3e06500a,0x3df20cf6,0x3d834bad,0xbb58f48d,0xbd9dac30,0xbe02ea15,0xbe0d57c0,0xbdf7ee76,0xbd273743,0xbcf1f879,0x3c279b94,0x3d8bf580,0x3d1da7fd,0x3d60b57f,0x3d900181,0x3d2c39da,0x3d086e94,0x3cf81941, +0x3d07f46d,0x3c2bb8c2,0x3cadccda,0x3ccb521c,0x3d050ac6,0x3c6673bb,0x3c94f3bf,0x3d0e3343,0x3d1cd58a,0x3d80c6a7,0x3cd1c781,0xbcabbd90,0xbd23c532,0xbddf171f,0xbd9ef7e8,0xbd878dbb,0xbd917c54,0xbd41806a,0xbd12c49e,0xbcdb6e64,0x3d894ee7,0x3e11d9e4,0x3e56eac7,0x3e6d4ea3,0x3e3889f6, +0xbb42b5c4,0x3cb5b5b3,0xbcc56ec6,0x3bbc2b84,0x3d8a84d4,0x3d0ca1f4,0x3d618f90,0x3c329f39,0x3d29b04e,0x3d8d7dd2,0x3d0e4702,0x3c809a5a,0x3bed38e5,0xbc69bc08,0xbb0c8e68,0x3d946670,0x3cb0f939,0x3be70c9d,0x3ccb4e16,0x3ae5ee5b,0x3c415426,0xbb47da5b,0xbcb4625e,0xbb181c2e,0xbc369fdc, +0xbd5ff0f2,0xbdb84a75,0xbde2a347,0xbdc42172,0xbdb5d260,0xbdb3c87a,0xbd8fc3b9,0xbd19b4b1,0x3d1cd0e8,0x3d5869e3,0x3daab49c,0x3da63f94,0x3d568a91,0x3e0b9eb8,0x3cf97985,0x3adc1003,0x3b8cbd10,0x3c589890,0x3c8b459e,0x3c87c6d6,0x3d0834b1,0x3c19c623,0x3aa4d5b4,0x3cc07eba,0x3c502299, +0x3c935e21,0x3d57c24e,0x3cb08698,0x3ca42a38,0x3c08828d,0x3c7ecd98,0x3d14dae7,0x3bed4fe5,0xbcaa6bb0,0xbc6b46ba,0xba919b0b,0x3cb85244,0x3d455785,0x3d9707a7,0x3d9055b8,0x3d8838d6,0x3d73ce40,0x3da6d10b,0x3d84bb28,0x3b072f40,0x3d342c72,0x3d51c384,0x3d17f5c7,0x3e200a14,0x3dcabb33, +0x3ddf1bab,0x3d918fce,0x3d1b2c4e,0x3cfe50be,0x3ccf9998,0x3ca5ffe7,0x3d0feaac,0x3ce45c8a,0x3c806b82,0x3ca3a321,0x3c1e8bde,0x3c10459e,0x3c530f32,0x3c3fc10c,0x3c4fdfa3,0x3bb676a8,0x3c6d5307,0x3cd5cff4,0x3c30958e,0x3c584c2e,0x3c702d22,0x3c33a215,0x3d3370cb,0x3d6b75fc,0x3d9a32d3, +0x3d6e64af,0x3d732b10,0x3d68e34f,0x3d2017bb,0x3cb89a68,0xbbebf0e1,0x3bf77490,0x3cca7e53,0x3cb52fff,0x3dbd8611,0x3cc9c5e6,0x3db5da0e,0x3d4eaee2,0x3d5478a5,0x3d252190,0x3d0bb8b8,0x3cbb83c9,0x3cfc2f6d,0x3cc2ca4b,0x3c9fc746,0x3bf8170d,0x3caabc2c,0x3ca3ff55,0x3c86e95a,0x3c5f6299, +0x3c99f4c4,0x3cc5d525,0x3c84fa29,0x3b9f46fa,0x3c29337b,0xbc5c07fe,0xbc436867,0x3b9b3209,0x3d45eeb8,0x3d7c2d40,0x3d799ffd,0x3d0ee0cc,0x3cae7e89,0x3ce9defe,0x3ba22c6e,0xbca400d3,0xbd79de1b,0xbd06e8cf,0xbc8eae4f,0xbc9e64ca,0x3b68a11c,0xbaa45d06,0x3b28d194,0x3ce1e7be,0x3cc098c0, +0x3cdd7d4c,0x3cb20f58,0x3c80d731,0x3c2378b0,0x3c864782,0x3c096966,0x3ccf4f68,0x3bfb4c44,0x3cb4c016,0x3c945bb1,0x3cc580f2,0x3c9e4e4a,0x3cb804dc,0x3c95332b,0x3cd12291,0x3b5b3e3f,0xbbe53e69,0x3b822978,0xbb5f8df0,0x3b7e47d4,0x3c2b9785,0x3cb62197,0x3cbbe657,0x3cb249c0,0x3ca0027e, +0x3c3f0d79,0x3c008340,0xbb34ad8a,0x3c24db3b,0x3c8a9861,0x3cc41de2,0x3c93bfe7,0x3c3cc3ed,0x3cbb7cc5,0x3ccf92fb,0x3ca89b47,0x3cf92228,0x3cf46e14,0x3d00c498,0x3d054b48,0x3ceaf0e1,0x3d04c428,0x3d2d3fbe,0x3d0a6cc8,0x3cd4647b,0x3cee2f92,0x3cf91db7,0x3c97af11,0x3cae6d1a,0x3c1bd230, +0x3cdb950e,0xbc7017b3,0xbc7e50f8,0xbc417714,0xbc2f2f97,0xbc061f8f,0xbc0cdfbb,0xbc091669,0xbc46dbdf,0xbc683703,0xbc812a88,0xbc8b2a6b,0xbc942007,0xbc9d8f71,0xbc6a2961,0xbc0f8f91,0xbb084a48,0x3bb19e8c,0x3bf5dd5d,0x3bf3c7e5,0x3d10af2c,0x3d21c728,0x3c620387,0x3d06166d,0x3d28a754, +0x3cc92695,0x3cd33ca8,0x3ce0040b,0x3cb80d77,0x3ce9d98a,0x3d004889,0x3cf50561,0x3d2cd503,0x3ce47152,0x3ce042a7,0x3d1a8eae,0x3ce365a3,0xbc0f6213,0x3a9006b3,0xba4c9602,0xba40688a,0xba865ef2,0xba560cef,0xb905e23a,0xba4f7c32,0xba7a80c9,0xba897ae4,0xba682c6a,0xba0ecdfc,0xba75df3b, +0x3af4bc0a,0x3b56c0fc,0x3b80ad1f,0x3bd17a64,0x3c2856f8,0xbc8f8449,0xbcb5cb0f,0xbc914640,0xbd5921d0,0xbd3b10d8,0x3bb83cce,0xbd407428,0xbd4213f7,0xbc43569f,0xbc371813,0xbc0fcc94,0xb9db2f2d,0xbb8bc720,0xbb55bbf7,0x3b6c7a2f,0xbd408492,0xbd4290d7,0x3bad6a6c,0xbd3aaf43,0xbd4f5f79, +0xbbe6e14a,0xbc53e219,0xbc63b06c,0xbc55efc4,0xbc724bc4,0xbc82ed92,0xbca29ae2,0xbc8ce566,0xbc8703ca,0xbc6abc60,0xbc812f0c,0xbc8abc6a,0xbca2fc03,0xbcb6be73,0xbcc9c19f,0xbcd7ff65,0xbcd4e5e8,0xbd282e6a,0xbd02bf37,0xbbf12b60,0xbc9047ac,0xbc91c760,0xbc856db7,0xbc81909f,0xbc8db546, +0xbc7acb29,0xbcdf4366,0xbd0887af,0xbcec568f,0xbc8b7b68,0xbc919981,0xbc7b3e40,0xbc5df2ac,0xbcf4825c,0xbc83d42b,0xbcd2aa35,0xbca6dada,0xbbff5bb9,0xbc85af4b,0xbc47c2f2,0xbc8d0fe5,0xbcaa3365,0xbcf1ca83,0xbcb51663,0xbc9349fd,0xbc6ed0dc,0xbca7a924,0xbcfdf16d,0xbd3a10c2,0xbd690a93, +0xbd826313,0xbd78db53,0xbd69720d,0xbd8cda4f,0xbd04944c,0xbc60f87f,0xbc3a3a42,0x3b7981b9,0xbbaf408a,0xbbbf35b7,0xbbe8e0ab,0xbc3460bb,0x3ac29e9a,0xbc8d0c72,0x3af095c2,0xbba8693f,0x3bf5b596,0xbbcccdca,0xbbcfd0d5,0xbc0bfd48,0xbc121403,0xbcba4012,0xbc34afd7,0x3b72d935,0xbbd9ab2e, +0xbb9a2ca6,0xbc706415,0xbcaccf3e,0xbd29132e,0xbccf19fa,0xbc9836c8,0xbc372468,0xbc85ad8e,0xbcf3d0b2,0xbd5dd0e6,0xbd967ea8,0xbdb2dec9,0xbdae6583,0xbd9e6b9b,0xbe03f3ee,0xbc488a5d,0x3d3f5f40,0x3cbe20cb,0x3d0b00df,0x3cbf0d0a,0x3c9a8f9a,0x3c2f23d7,0x3c07c73a,0x3c0f6c55,0x3c58e7b3, +0x3c4c52eb,0x3c7f641b,0x3d16ffa6,0x3c6bfcf0,0x3c8026b9,0xbb3992f7,0x3c491905,0xbc593459,0xba191e6e,0x3be4cf4c,0xbc1ec8c7,0xbabefbce,0xbc636a9b,0xbcd8e70e,0xbd645642,0xbce9a7d6,0xbc1dfc05,0x39f46741,0xbcad5547,0xbd8e358a,0xbe020eb8,0xbe279ea9,0xbe3ae1c7,0xbe2ca6ee,0xbe11fcc2, +0xbe0d313d,0xbdf19a98,0xbd970999,0xbcacb34e,0xbb0770cd,0xbbaf5759,0xbc8e9b98,0x3b73bf40,0x3cff2c1c,0x3d01ae9a,0x3cdebd5b,0x3c2c202d,0x3bcaccc3,0x3c880842,0x3c1c9221,0x3c304d9a,0xbc4b17f9,0x3c73574c,0xbbddc3fd,0x3b5b3b56,0x3d095538,0x3c509092,0x3c3f653a,0xbd664f32,0xbd8672e5, +0xbcef95ea,0xbbfa89cc,0x3bfd61db,0x3c9bcfa1,0x3cad71e4,0x3d2432c3,0x3dcc8e26,0x3d3406b4,0x3c7b78c2,0x3c84a464,0xbdd69ef9,0x3cef91f4,0xbc321b06,0xbc2f999d,0x3bd9ca9c,0xbc9dec22,0x3ca115b4,0x3d0eda76,0x3ce3e87d,0x3cf4c403,0x3cec71ac,0x3b469045,0x3c82f234,0x3ca04699,0x3d112225, +0x3c63f111,0x3c478981,0x3b914c1c,0x3c662b90,0x3ab662c6,0xbc8b1946,0xbd004abd,0xbd810452,0xbd907695,0xbdbc9f20,0xbdec7d5f,0xbe1f4711,0xbe2af07e,0xbe28c4ad,0xbe1569d0,0xbd99d235,0xbd40bf42,0xbcd4c4c8,0xbc90a783,0x3badcd29,0x3cdd36b7,0x3cf01e92,0xbcc8f306,0xbd4cf486,0xbd17ad57, +0xbcdf35b2,0xbc5785c1,0xbcb6427b,0x3b39aa7f,0x3d532c1c,0x3c81526f,0x3ba98051,0x3a025eb3,0xbc22d82f,0x3bd60824,0x3d86d79d,0x3c687386,0xbaeeedef,0xbc26d1de,0xbc4322c8,0xbcd5328b,0xbcb6df71,0xbce8651a,0xbd586ce2,0xbd87a20a,0xbda3e686,0xbd9dabe5,0xbd81f383,0xbce6911c,0x3bf61e9d, +0x3ce34b1b,0x3d41c9b1,0x3c1688a1,0xbdc290d8,0xbe39e798,0xbe62b70e,0xbe66fb20,0xbdb8c745,0xbe226e70,0xbc61fcb9,0x3a734a96,0xbce01933,0x3bbf4a9d,0xbc23b12e,0x3bfe89f4,0x3caa4108,0x3b8f2888,0x3b4348da,0x3cac1983,0x3b84ee16,0x3c561430,0x3d166903,0x3b332ee7,0xbbc24834,0xbc12beb0, +0xbbb398b8,0xbc040176,0x3af1ab56,0x3ca360ee,0x3c41d8e7,0xbbc9d73a,0x3c00fcf7,0x3c50c388,0x3badbe31,0xbc910ab3,0xbd6c8682,0xbdf4c24c,0xbe266d03,0xbe2fb3a0,0xbdecee38,0xbe39c194,0xbe686aab,0xbe99f9d7,0xbe67b31b,0xbe437a1e,0xbdfde098,0x3b2b8daf,0xbb31e1da,0xbc3b3cae,0x3a2df63c, +0xbb1ceba9,0xbb717913,0xb9da97e1,0xbab8a6b0,0xbb21667c,0x3b5fbebf,0x3bce9f05,0x3b968f37,0x3be6f29d,0x3c115ba8,0x3c3f9d1f,0xbc1b259f,0xbca9092d,0xbc6a3b4b,0xbc5f12d0,0xbabc8a39,0x3c8519bf,0xb7c5f234,0xbcd2c921,0xbd7d957c,0xbd9b7d54,0xbdd423d7,0xbe0c0f01,0xbdcf008d,0xbdbb1f76, +0xbdb52d45,0xbe0ef7df,0xbe308a58,0xbe5a2c17,0xbe3e4882,0xbd954431,0xbd749486,0x3c181d9b,0xbc7dfe1e,0x3bac7d18,0xbb63f137,0x3b0a293d,0x3be073f5,0x3c376f2e,0x3c7a1d34,0x3c119584,0x3c0c073f,0x3bed7995,0x3c1db50e,0x3b54a1eb,0xbbd6d7cb,0xbc602c24,0xbb9ca2fd,0x3b2bd332,0x3baa4fe2, +0x3b61879b,0xbbd3b971,0xbcc3e1a5,0xbd2756ec,0xbd5c084f,0xbd686475,0xbcb22b8d,0x3beaea3a,0x3cc5ddad,0x3b17160a,0xbc809e98,0xbcca2442,0xbbe55ab4,0xbc925af4,0xbd8356a3,0xbd8d947a,0xbd081722,0xbd0b2562,0xbd10960b,0xbcf67da1,0xbc827996,0xbc64f209,0xbbda3246,0xbba82a87,0xbb44a930, +0xbb02ba92,0xbbd8587a,0x3aedd4b5,0x3c0ddf44,0x3c0df852,0x3c3838c1,0x3c1c075d,0x3c0cbf0c,0xbb2cf435,0xbc9b433c,0xbccb83a4,0xbc8f7ef4,0xbc850ff3,0xbc0f18c4,0x3a507891,0x3bfd4940,0x3c387fdf,0xbc8134fa,0xbd3329df,0xbd88d9ab,0xbd64b5b3,0xbd2a8c82,0xbd04860b,0xbd0e6ff1,0xbd0ed7ce, +0xbd08e4db,0xbd032815,0xbbad6d7c,0xbc163a9b,0x3c8bae17,0x3b1076f5,0x3b8bcd46,0x3bd4f008,0xb9eded7c,0x3bc0bd44,0xbb4d1b3c,0xbbefb9b0,0xbc2846a7,0xbc6cd898,0xbc205a29,0xbc56ada3,0xbc40a01c,0xbc218f77,0xbc9a10fd,0xbc2d4f97,0xbc6d6fd0,0xbb8e0362,0x3ac6d77d,0xbba50bcd,0xbbe65639, +0xbc2e583b,0xbc46788a,0xbc133684,0xbc09a292,0xbb7297aa,0xbbab275a,0xbc135a73,0xbc93c907,0xbcbffd4b,0xbcae7b6a,0xbc9c35f4,0xbc854f2f,0xbc59e339,0xbb8047e8,0xbb60f21e,0xbcbbf591,0xbc715da0,0x3ca6ed65,0xbcc3f006,0xbc818f56,0x3c873404,0x3c8c7965,0x3c889cea,0x3c98613a,0x3c8ca6f5, +0x3c7d9530,0x3c82afe0,0xbca8037f,0xbcb8aff3,0x3c415383,0xbca69606,0xbcc0990e,0x3b73c4a8,0xbadbb26c,0xbb192b34,0xbb17ebdf,0xbb51d128,0xbb9d5a31,0xbbfe1406,0xbc0f8020,0xbc2b0327,0xbc2f2e13,0xbc3c1107,0xbc2ed8c2,0xbc40f97b,0xbc17b88c,0xbc021c2a,0xbbd0b151,0xbbcea0fd,0xbad55195, +0x3d236a20,0x3d0607fc,0x3d0b0dda,0x3d28c866,0x3c8aafa5,0xbd31010d,0x3d5e2e21,0x3cd6c944,0xbcf712ad,0xbd0921c2,0xbd0fe6b0,0xbd1a45ca,0xbd20802e,0xbd217187,0xbd269876,0x3cd3c26f,0x3d5d145f,0xbd4bb7bc,0x3ca75300,0x3d414d3a,0x3d1b44a6,0x3d0c270e,0x3d18f1cf,0x3d10f044,0x3d1374b1, +0x3d1376c1,0x3d170a27,0x3d157fae,0x3d1a3ccf,0x3d1bbba4,0x3d2f4be1,0x3d39a73b,0x3d3caa56,0x3d534445,0x3d5136a6,0x3d2f44c6,0x3d23c3b7,0x3cae405f,0x3cb4c2f6,0xbbd48678,0x3d074f21,0x3cc54aa3,0x3c90aa0c,0x3cff76df,0x3cefd141,0x3d106468,0x3d26da66,0x3d13ca42,0x3d31573b,0x3d15381b, +0x3d27ee71,0x3cc89b29,0x3cca5325,0x3d137b0f,0x3cf39187,0x3bd59e70,0x3d34bd98,0x3d1d10ed,0x3d3d33ca,0x3d2bd536,0x3d3943f8,0x3d3e6127,0x3d490f86,0x3d458035,0x3d44b1e7,0x3d4402b6,0x3d76d2a6,0x3d92b8f1,0x3d99fb00,0x3db6ef2e,0x3da28b12,0x3d3bf4ac,0x3d111d19,0x3b54c526,0xbc329575, +0x3a9ed76f,0x3bc3b2f3,0x3c0bc38e,0x3c93aa6e,0x3c9af7f1,0x3cc399f6,0x3c869bdb,0x3c8e42e7,0x3cb47ddd,0x3cd5b68a,0x3ca00a65,0x3d0cad62,0x3ce3689e,0x3cf259eb,0x3c8259cd,0x3cc6e646,0x3d0c6785,0x3d017e11,0x3d163084,0x3d228ba5,0x3d08879f,0x3d1220e7,0x3d0dbaab,0x3d1b5bac,0x3d06dcba, +0x3d1edb28,0x3d380fbb,0x3d948dff,0x3dc4d00f,0x3dc893c9,0x3e05d7b8,0x3df28e5a,0x3d3c1199,0x3ce12042,0xbd837c47,0xbdadde8a,0xbd20eb15,0xbb65c577,0xbbb713f1,0x3c61ae20,0x3c4a04ae,0x3c2fd0d7,0x3c59c68a,0x3c519f96,0x3bc8bec2,0x3bd7ed7d,0x3c9d92eb,0x3ce4992c,0x3ca66b85,0x3c6de314, +0x3c583d11,0x3c840105,0x3cdd432f,0x3ce8adf8,0x3d20f907,0x3d79762d,0x3d48470e,0x3d6080aa,0x3d735119,0x3d89d6eb,0x3d839b77,0x3d7863c3,0x3d7bbeee,0x3de0b137,0x3e194bd5,0x3e2503ec,0x3e51e6c4,0x3e281813,0x3c8fefbe,0xbcf2824c,0x3e0ad80a,0x3d83695c,0xbcf55dc2,0xbcf52b83,0xbcc38484, +0xbc925425,0xbb272e03,0x3ab822cf,0x3c92ae5a,0x3ce7fbb7,0x3ce8e1bf,0x3c80d680,0x3c5ee3ae,0x3cda39be,0x3c9aa590,0x3c9d5abf,0x3c9e2d2d,0x3cdde53b,0x3d322b3a,0x3d7defba,0x3b9ebc26,0xbce30088,0xbd7bd523,0xbc26a328,0xbcb3b4d1,0xbdc8f2bd,0xbdb12372,0xbd9c7c65,0xbd5fa9be,0xbd0268df, +0xbb3a2756,0x3d04f99e,0x3c9f171b,0x3d2d1ddc,0x3db7c44a,0x3dd1ca0f,0x3e01cf77,0x3d470866,0x3d205ae1,0x3d71dcb8,0x3d71870e,0x3d3d0c51,0x3d297760,0x3cfd7be5,0x3d043506,0x3d08f52e,0x3c6f4c91,0x3c4361f5,0x3c7f72ac,0x3d15a6c9,0x3caf8123,0x3cafc1ce,0x3c897cf4,0x3c9c1691,0x3c4a8e7d, +0x3d1fe9e8,0x3d8a9bb7,0x3dc5ca9c,0x3e06a8c0,0x3dae3aec,0x3d898ff9,0x3dabd300,0x3d8cbaa2,0x3d7b2f08,0x3d621f9f,0x3ccb998b,0x3c8cb624,0x3d0c6ab2,0x3d47de74,0x3d684a96,0x3da67e67,0x3df85914,0x3dd1a92f,0x3d6ff701,0xbc98c2c8,0xbbab06e9,0xbcf766bf,0xb93ff3c5,0xbb57ac69,0x3d564194, +0x3c8a8631,0x3ba91a00,0x3b6a9f2a,0x395eadff,0x3c8278ec,0x3d6d3534,0x3cc74916,0x3cbd6166,0x3c992888,0x3c1c8a9f,0x3c2691c8,0x3af9cc18,0x3c635193,0x3b658011,0xbb74647a,0x3d9314da,0x3e031e6b,0x3e25c8a4,0x3e231f9a,0x3e03a2df,0x3da6e918,0x3d8956c9,0x3da57626,0x3e22d15d,0x3e1b5cf4, +0x3e05d8ef,0x3dd45a7b,0x3d834191,0x3df3a50e,0xbae47588,0xbaae7b11,0x3d30ab5d,0xbb946614,0x3ce951cf,0x3c545071,0x3d04f741,0x3c37c687,0x3c2502d3,0x3cb5a2c8,0x3b3b6d52,0x3c2a5990,0x3d24ff02,0x3cb8f98a,0x3c83d680,0x3c52a30c,0x3c84a39f,0x3c22b66f,0x3cfe7065,0x3d9e6bf8,0x3dbbecc9, +0x3d9b262d,0x3db290ce,0x3da6c563,0x3d88c218,0x3d9a4943,0x3d933482,0x3d8c8dd1,0x3d338b16,0x3d004228,0x3cb7a6a2,0x3d990d69,0x3e266d39,0x3e9eb25a,0x3e35aef7,0x3e474de9,0x3daea4cc,0xbd4e095a,0xbb6014f3,0x3c8456c4,0x3af1f816,0x3c6d52fc,0x3cdf5d08,0x3c4ac664,0x3c5f64ad,0x3c0cb022, +0x3c8526de,0x3ca64c98,0x3c9dfe48,0x3c775c77,0x3c3d431a,0x3c0726a7,0x3ca7a35c,0x3c25bfce,0x3cbf9e7c,0x3ccbf1af,0x3c9f9619,0x3c1f53c1,0x3c6ff949,0x3ce8a014,0x3d45c190,0x3d57bcc4,0x3da365d6,0x3e0add77,0x3dfea5a9,0x3e040398,0x3e03fae9,0x3dfc392f,0x3dfd273e,0x3e24524e,0x3e2cdac0, +0x3dadea87,0x3d70ac19,0xbc97ed0c,0x3c942acc,0x3c399eba,0x3c5d7463,0x3c67a717,0x3c3b63b7,0x3c80abed,0x3c562a37,0x3c574e59,0x3c33cefc,0x3c370e93,0x3c1ac84c,0x3cab0f5a,0x3cd684b3,0x3cc3631c,0x3c28cc01,0x3bd05e95,0x3c96a214,0x3cfcaf1e,0x3cf70fa0,0x3ceaef49,0x3cd87f60,0x3ce24f16, +0x3d14b96e,0x3d09235e,0x3c6fdb11,0xbc9fee81,0xbc5f7a07,0x3c4fe650,0x3d878a8d,0x3d324ce4,0x3d221b2c,0x3d210eaa,0x3d765c22,0x3cdb7771,0x3c8416b7,0x3c5ae937,0x3cf586d8,0x3cbe2a51,0x3cc7c8b9,0x3cc19811,0x3ccf96b1,0x3c6d0b9c,0x3c8a1bc9,0x3c1b4e4f,0x3c8cb8f1,0x3c0dcd91,0x3c8718de, +0x3bedf1b2,0x3becfe21,0x3a378b41,0x3b8c3ea8,0x3b8e5658,0x3c3f5cfc,0x3bd0476f,0xbb6e52cd,0xbc03cd38,0xbb97d066,0xbb65369e,0xbbb6590f,0x3c0f407a,0x3cdead10,0x3d38c5fb,0x3d70656c,0x3d78d79e,0x3d882154,0x3d44f971,0x3d15e5ae,0x3cc5b671,0x3ca7b4ed,0x3cfba3b3,0x3d03e384,0xbc417e45, +0x3c9541e7,0x3c0d34ce,0x3bb4b6c4,0x3c66fb19,0x3c4c9e8a,0x3cad5749,0x3cdd013f,0x3cc24a75,0x3d081229,0x3cf89b86,0x3d099902,0x3cb8e47c,0x3cad28e4,0x3cfaa790,0x3cc3da50,0x3b5cdd4a,0x3cbeef64,0x3c880ba9,0x3ca18b1c,0x3c8f0c37,0x3c85d06b,0x3c7dd4e1,0x3c5a2211,0x3ca129b1,0x3cbb730f, +0x3ce30312,0x3d0b0c03,0x3d351af1,0x3d67db20,0x3d564f39,0x3d481993,0x3d349beb,0x3d227b70,0x3d12bad6,0x3d20e325,0x3d179b63,0x3c7288cb,0xbcd446ae,0x3d2f5d2e,0x3c7cc758,0xbcac4aba,0xbcaf4b09,0xbcb97e8f,0xbcbaa4e9,0xbcccce41,0xbcd27530,0xbcd9bfb9,0x3cab287f,0x3d33013a,0xbcebe3d7, +0x3c8c2fba,0x3d11789a,0x3d075a50,0x3cec3bc9,0x3cf3af86,0x3cebd5ad,0x3ce6f000,0x3ce0479c,0x3cd10dff,0x3cfc88dd,0x3d109372,0x3d220a76,0x3d31fed0,0x3d3ba8ef,0x3d4d62fa,0x3d3b56fe,0x3d33c4f2,0x3d2a9081,0x3d24519b,0x3d3ba4d2,0xbd5ad34c,0xbd3d9b17,0xbd804078,0xbcd84320,0x3c9206ce, +0x3da0cfdd,0xbd351fef,0x3c4c3a82,0x3d96968a,0x3d9b5a19,0x3d9b8649,0x3d9388f8,0x3da29735,0x3da5f900,0x3da86b1c,0x3c786711,0xbd158f2a,0x3db05614,0x3c928184,0xbccab268,0xbd80b502,0xbd3ce21d,0xbd559077,0xbd580006,0xbd575d5e,0xbd5880b7,0xbd591a7d,0xbd5d13aa,0xbd62594f,0xbd690dba, +0xbd742c59,0xbd7b8289,0xbd7b5249,0xbd877d34,0xbd8457fa,0xbd603941,0xbd5bb6f0,0xbd43d0a5,0xbd75be20,0x3c9a761f,0xbd4f73c9,0xbc87315d,0xbbfb347a,0xbcd42104,0xbc865966,0xbd133125,0xbd0ca82b,0xbc869772,0xbd0272d2,0xbcd9cd57,0xbcbfa6b5,0xbab59e3b,0xbc1f29c0,0xbcd8dfda,0xbcd6d0b0, +0x3cf1e9d3,0xbd63cd3b,0xbd5db3b9,0xbd6b395e,0xbd80c818,0xbd7f5aec,0xbd80680f,0xbd7d01ac,0xbd805b4d,0xbd886a6c,0xbd969e28,0xbda7dc3c,0xbdb52b4c,0xbdac1837,0xbdbfe1d1,0xbda6a28d,0xbd5c44b9,0xbd4f3148,0xbd5f77f8,0xbd68e8da,0xbd31c584,0xbd277f37,0xbc285cfa,0xbc08b35d,0x39334ef8, +0xba8f82ba,0x3bfe4787,0xbbf549b4,0x3bb3e254,0xbc8524ce,0x3c625ef0,0xbc0502e7,0x3c3c0903,0xbbbdba74,0xbc675a64,0xbc5d328f,0xbc6ded0d,0xbd1ff9c7,0xbd7396f3,0xbd749c42,0xbd92ea2b,0xbd92350c,0xbd96159e,0xbd99a9ec,0xbda23027,0xbdb7c77b,0xbdcff690,0xbdf4caca,0xbe04c53e,0xbdf63e01, +0xbe134a8e,0xbe00f2ba,0xbd9d8500,0xbd887eb9,0xbd303ad0,0xbd85eb00,0xbd999a72,0xbd8bf350,0xbd0706f4,0xbca520b6,0xbbbc6c83,0x3b5390bd,0x3b9518b1,0x3c33848e,0x3b7d33e7,0x3c55fa09,0x3c466ff7,0x3c886617,0x3c5c4aef,0xb9bd6a62,0xbb8e2921,0xbc8dea7d,0xbadeb433,0xbd181c5e,0xbd75204a, +0xbd876b93,0xbdb06ef3,0xbdb37bd8,0xbdc08699,0xbdbc3b4b,0xbdc13a0e,0xbdd5294c,0xbe02a5f6,0xbe20cb98,0xbe339178,0xbe1d5ac5,0xbe30a8b7,0xbdfbda3e,0xbd3deab2,0xbd32bed7,0xbd89fd74,0xbd0f17e2,0xbb051f1c,0xbcf2b9a6,0xbb7cdcaa,0xbb81a45b,0xbb383211,0x3bf4b8e5,0x3c0889b2,0x3c15d0ca, +0x3c7515d5,0x3c349dc3,0x3c4a7496,0x3cbb24cc,0x3bbffc69,0xbb4514db,0x3b9ee023,0xbcd76541,0xbc5fa1fe,0xbd2a9c4a,0xbd8e7f5a,0xbd4c5756,0xbd9bf2e2,0xbd67f53e,0xbd4b837d,0xbd350ca3,0xbdc1006d,0xbe09564a,0xbe2886c0,0xbe132d43,0xbe0880f7,0xbdf96615,0xbe42b6e4,0xbe423185,0xbe1ccd09, +0xbd9d614d,0x3dab179a,0x3d9af5f0,0x3d767fed,0x3d17fbc9,0x3d0c31c5,0x3cb7fe4a,0x3c9b4821,0x3cdf2649,0x3c839a15,0x3c981106,0x3c122f22,0x3ba41d0e,0x3c1fa3c6,0x3cb84d90,0x3b11b482,0xbb88e7e6,0xbc0bad0e,0xbc87b2d1,0x3c3baf43,0xbd0347bc,0xbdc1a9c9,0xbdaebd60,0xbdc69038,0xbd623b8e, +0xbd179053,0xbcd34dd0,0xbb014398,0x3c97db5a,0x3cce2b01,0x3bcb1937,0xbc3b0a32,0x3c5493e1,0xbd86f6ca,0xbd6ee82c,0x3c8a89b3,0x3d61e14d,0xbc29be35,0x3a225b4c,0x3d86cef4,0x3cce6f2b,0x3cc1d78c,0x3cc346e1,0x3cfb54b9,0x3d3b7165,0x3c557a6a,0xbb374ef5,0x3bb328ad,0xbaa18e77,0x3c52d152, +0x3d31877a,0x3c14c33f,0xbbdedc8e,0x3c3883b7,0xbb53a391,0xbc11c94e,0xbc9f7713,0xbc8d1cfa,0xbc33b7c5,0xbcf675bb,0xbd770e87,0xbdd68d27,0xbe1d630d,0xbe2a658f,0xbe1e468e,0xbdfd57c2,0xbdb87a95,0xbdd7b974,0xbe1123a2,0xbe35a691,0xbe019022,0xbdaa3fbd,0x388f7333,0xbce7d2d6,0x3cf9b5d5, +0x3cc64427,0xbc1efa78,0x3ca1352e,0x3bfa10b4,0x3c40a8f0,0x3c6790f3,0x3c05bffe,0x3b80a11d,0x3c684fa5,0xbbaabaef,0x3b3f2439,0x3ce5109b,0x3caefcb3,0x3cf0abde,0x3cc15264,0x3c5c58e5,0x3cfbddba,0x3ba2d834,0xbd0759a0,0xbd2d04d8,0xbd341c56,0xbd4bf010,0xbd21a3cc,0xbc1f336b,0xbbcaa510, +0x3be4a1cd,0x3c9fc991,0x3cf18b61,0x3c386386,0xbbb358ee,0xbdb8e033,0xbe143e40,0xbe384da6,0xbd7cc3fc,0xbe11bb2d,0xbc757202,0x3da026b5,0x3cb095a3,0x3c0edf3a,0x3caeeafb,0x3c84d7bf,0x3c953404,0x3c8946c6,0x3b178fc1,0x3b1b0f4c,0x3c0808f6,0x3c511f64,0x3c2226be,0x3c2fa194,0x3bf9b70c, +0xbb343b57,0xbbd63e7a,0x3c720b79,0xbbe9e991,0x3b4136f4,0x3c895b31,0xbc789939,0xbb3e19af,0xbc5d5c5d,0xbd37905e,0xbd0458ed,0xbd05e9cc,0xbd7ab1f4,0xbd87c7a6,0xbda99310,0xbdbc04fb,0xbdff2ee7,0xbdf9a9b2,0xbdd13162,0xbe023180,0xbd081239,0xbc07ca69,0x3d6b8660,0x3cbf0449,0x3cbfdc0d, +0x3c37834a,0x3aa7871e,0x3c5bd9c5,0xbbef240a,0xbb993d7b,0xba80b35b,0x3b4b1418,0xb8c8795b,0x3ac68684,0x3b79877e,0x3b9829fc,0x3a932105,0x3c02bf10,0x3c5c7b89,0x3bf23ccd,0xbc8194e3,0xbcaff78d,0xbce83e56,0xbd219bfd,0xbd03a7a2,0xbc496c2b,0xbc193370,0xbba33f43,0x3b0aa881,0xbc23aac6, +0xbd04d208,0xbd8405e8,0xbd91e7d6,0xbd8b4d9b,0xbd77ad48,0xbcd7e0a2,0xbcef740c,0xbae4c23d,0x3c2da3f4,0x3b8c0428,0x3cc77be0,0x3ca83d5d,0x3cb21f77,0x3c932bae,0x3cca0607,0x3bef323c,0x3c728585,0xbbc645df,0x3c8493fa,0x3b56d7e6,0x3c212f35,0xbaa67393,0x3b3deaab,0xb9d1fc9a,0xbb115a4b, +0xbc5624b5,0xbc881306,0xbc19c2be,0xbc152185,0xbc3c8d93,0xbc608fc4,0xbc55c7a1,0xbc90460b,0xbca37e6d,0xbcba6cd3,0xbd01c0dd,0xbd118e1c,0xbd216dfd,0xbd2af7a0,0xbd36a850,0xbd5b85f1,0xbd15ea34,0xbcc94593,0xbce9749a,0x3cf9762e,0xbca4f442,0xbb50cacf,0xbb7b99d2,0xbca336b5,0xbc8e99d7, +0xbcee93c7,0xbcd37425,0xbc249477,0xbcbf9e03,0xbcc85c79,0xbcad4a50,0xbbad8556,0xbbd061b8,0xbc7bb265,0xbc339730,0x3ca87829,0xbc3da255,0xbbeba198,0xbc08e7b8,0xbc00a707,0xbbe60fc3,0xbbf412fc,0xbc09834a,0xbc5881af,0xbc9535ff,0xbcb988f1,0xbccbd02d,0xbce75a53,0xbd03d5d5,0xbcf5ba8a, +0xbcdd96ad,0xbcc75fc2,0xbcc014bf,0xbca443bc,0xbd00b076,0x3a981c7d,0x3cf7d03b,0x3d83b8a0,0xbc8437b1,0x3cccd672,0x3d74e3e9,0x3d8256fd,0x3d85af7a,0x3d7f6f6e,0x3d8e73cc,0x3d954fe5,0x3d968cb0,0x3cce69fb,0xbc406c1d,0x3d91c8db,0x3ce17acc,0xba169bca,0xbccdf2f2,0xbc84a146,0xbc8fcfec, +0xbc868a22,0xbc821714,0xbc6fefbe,0xbc4902eb,0xbc701cdf,0xbc832506,0xbc911681,0xbca36a67,0xbcb3ef4f,0xbcca8078,0xbcbf4377,0xbcbe7e1f,0xbcbb2a08,0xbcbef771,0xbcbb7bb2,0x3ceb202d,0x3ca675d1,0x3d37ee8f,0xbc905a49,0xbd76fda0,0xbdb15db6,0x3beff6fc,0xbd464f9d,0xbda84cbe,0xbdafb57a, +0xbdae5e33,0xbd9d3f1d,0xbdad4006,0xbdadd27a,0xbda9ed4e,0xbd45f402,0x3a974fb8,0xbdb60199,0xbd5ac7d3,0xbc839578,0x3d3a5e6b,0x3cd55502,0x3cfeb72e,0x3d012573,0x3cf7d8ab,0x3cf37192,0x3cf3656c,0x3cee0f82,0x3ceb971b,0x3ce07254,0x3cf80bce,0x3cf90dfd,0x3cdc4f6f,0x3ce9aad3,0x3cd7bafc, +0x3ca38824,0x3cbfa36f,0x3ccecc6e,0x3cee51e1,0xbd922e37,0x3c8c298b,0xbc55e28f,0xbc245ad2,0x3c395dfa,0x3ba4dc06,0x3cadcebb,0x3c5eb611,0xbbb63cd7,0x3c44c3fe,0x3c672438,0x3c0c1915,0xbbcbf578,0x3a2506f9,0xbabcd453,0x3ba58182,0xbd65f821,0x3cfd0279,0x3d211ff9,0x3d1867eb,0x3d2da10d, +0x3d239c12,0x3d1eb4fc,0x3d1405e8,0x3cff3657,0x3cf79fd9,0x3cf02842,0x3d1b30a1,0x3d0c1b7f,0x3c91a112,0x3c9edddc,0x3c8eeb66,0x3c2cf813,0x3c99db3e,0x3ce3175a,0x3cb275db,0xbcd2e586,0xbba72509,0xbc9f05fa,0xbbd08c90,0xb9c37a40,0x3be65692,0xbc0a2d9a,0x3c5cf67d,0xbbe1e1f0,0x3cdb7fe9, +0xbb85eab5,0x3c7e0857,0x382d9de9,0x3c6547cf,0x3b22df5c,0x3960a99a,0xbc64cc90,0x3ca8ab80,0x3d559601,0x3d2f4da6,0x3d619492,0x3d398dd0,0x3d328fe6,0x3d36305e,0x3d20a321,0x3d211715,0x3d05d806,0x3d40cf0a,0x3d2c1379,0x3c685cd1,0x3caeec38,0x3c414625,0xba03c82c,0x3c0c4f4d,0x3d571d67, +0x3c98fb7a,0xbcff3b26,0x3b3e0150,0x3c2e9245,0x3bd4d80d,0x3c9b56c3,0x3c83fa79,0x3c66d7ad,0x3c51c797,0x3cc83ae5,0x3c34d938,0x3ca5ba05,0x3ceed06c,0x3cdd0f4c,0x3cf997dd,0xbc1508f8,0x3c7c2d98,0xbc8b4da5,0x3cbcb701,0x3d773bf6,0x3d62396f,0x3d990e34,0x3d85caa5,0x3d8215df,0x3d7600a8, +0x3d326d93,0x3d266cad,0x3d24ce3b,0x3d81f46e,0x3d2cf822,0xbc84af46,0xbc8215ae,0xbc846672,0xbc25e0a9,0x3c945d50,0x3db1d76a,0x3cdf68d4,0xbcb53fcf,0xbc66f4c4,0xbcf7bbfc,0xbcd46d62,0xbb3d93a6,0x3bf0886b,0x3c955269,0x3c9a293f,0x3c3b70cd,0x3c9a5b36,0x3cac3c8f,0x3c844da0,0x3c5ae54e, +0x3c94752e,0xbacfd753,0x3c79f5ed,0xbc91e2d2,0x3bde072f,0x3d83a3ef,0x3d180e7d,0x3d07ace1,0x3bcdd6d8,0xbc312f8b,0xbc9ae6cc,0xbb9fbed2,0x3aa17b85,0xbc02dd7c,0xbaed704c,0x3c164f42,0x3d189fb6,0x3ce3294a,0x3bceddbc,0xbba2e798,0x3cb981c3,0x3d5dbb8c,0x3da9c522,0x3db6dc43,0x3d9d7c11, +0x3d93a061,0x3d00d06d,0x3cc2b2f0,0x3d1c0534,0x3c99bd3b,0x3c54000a,0x3bc31bae,0x3bf0852e,0x3c52d8d1,0x3cc1efef,0x3c6b5c5e,0x3c0624d3,0xbc6cc5cb,0xbc8f91d3,0xbd43ff10,0xbc8715d0,0x3d279f60,0x3d42c7e7,0x3d8fd9e7,0x3d8f6231,0x3d5817b0,0x3bfbc69c,0xbcf777d0,0xbd7d8780,0xbda62c94, +0xbd5be350,0xbd843308,0xbda94cb0,0xbdcf9e24,0xbcd4a17d,0x3dd1bf00,0x3d5c81f6,0xbc83dda2,0xbceb42a4,0xbd278b67,0xbcd1ac4b,0xbc24ac28,0x3cda6ef9,0x3d1152e8,0x3d493422,0x3c657a8c,0x3b9f521c,0x3c534698,0x3bcded59,0x3c8ccc18,0x3ce64c59,0x3ccb3f8a,0x3ccbc050,0xbbc182ad,0x3ca15f89, +0x3c3fc622,0x3c286df9,0xbc3829c4,0xbd2e1c83,0xbd1da18f,0xbd000caa,0xbc521a7d,0x3bc2715d,0x3c327362,0x3cdf8924,0x3d3b1e2e,0x3ddd9c27,0x3e2abc6c,0x3e3e3880,0x3e2298cb,0x3dc2c75f,0x3d9417de,0x3c3ce799,0xbc310f95,0xbd070132,0xbc4c64eb,0x3c0712fa,0x3c1b5e97,0x3ca7cfd4,0x3c829411, +0x3c7f16ac,0x3c35a158,0x3bdfa8b5,0x3c5ae084,0x3bdf17c6,0x3c2019a5,0x3c8962ef,0x3ca07008,0x3ca95b25,0x3c4554a1,0x3bd019f6,0xbc21b7cf,0x3acd3617,0x3c8adf17,0x3cb372c2,0x3ce27c73,0x3ce63b22,0x3c83fc53,0xbb0b1d22,0x3c95762b,0x3d178584,0x3d30d5b3,0x3cf68ed8,0x3cc05477,0x3d0bf32d, +0x3d212e83,0x3d644f4d,0x3d922c05,0x3b69a223,0x3d41a2f1,0xbce2b038,0xbd8b1798,0xbcb3fddc,0xbc3232f9,0xbbeeae97,0x3bddfd02,0x3c7362b4,0x3ba93043,0x3c23a199,0x3bb5acbc,0x3c286e30,0x3c490309,0x3c69f078,0x3b8da99c,0xb94ac87c,0xbb230ae1,0xbbc05bf6,0xbc86dd8a,0xbc4815db,0xbb71a643, +0xbc350ab1,0xbbe6bbd1,0xbb495c55,0x3c0cce43,0x3ce31aa4,0x3d0e1647,0x3cf548c3,0x3d09055f,0x3cba0782,0x3ce6bebb,0x3d690c27,0x3d5646e4,0x3d3a0e78,0x3d3ba751,0x3d0364c8,0x3c21b755,0xbcb5d606,0xbd16223f,0xbc66dedf,0xbc6ea485,0xbb7961a4,0x3ba69cde,0x3b89b688,0x3c1aa965,0x3c20ad7e, +0x3c85c6be,0x3c0d5884,0x3c3a04c5,0x3ca17ce5,0x3c513c1f,0x3b2f6150,0x3a02798d,0xbb464d05,0xbb85a6d1,0xbc25d74d,0x3c934d28,0x3cedb20e,0x3d01513e,0x3d05cac8,0x3d041bc0,0x3cdd0da3,0x3cba221a,0x3cbde655,0x3cb1d79c,0x3d3b879e,0x3d769ed6,0x3da42dda,0x3d42c1a6,0x3cfe239f,0x3cea05dd, +0x3c0f7975,0x3d1c74f4,0x3cd2fdd0,0x3b2c5cd3,0x3c1b6452,0xbb43a9ab,0x3bc51188,0x3c0bc94a,0x3c8d28d9,0x3b8bd6a8,0x3c5bed50,0xbbea1e70,0x3c613c11,0xbbf46081,0xba075ca6,0xbb68c210,0x3bee790c,0x3bd34179,0x3bef7748,0x3a531a7c,0x3cabce1e,0x3cecd584,0x3c52b4bb,0x3c1efd55,0x3bcff829, +0x3bed1675,0x3bf2b0b9,0x3c1fa03d,0x3c34c142,0x3c2a3d74,0x3c8fd655,0x3cc25c79,0x3d1cefc0,0x3d0894e5,0x3cee928a,0x3cc3d7d4,0x3cd21b0a,0x3c74d0c0,0x3bce2174,0xbd28e8a1,0x3a67f2cd,0xbc93b871,0xbc96a892,0xbc098431,0xbc4341b8,0x39e1b62b,0xba871b6e,0xbc6a1db3,0xb7816156,0x3bfa9fe2, +0x3b84d266,0xbbf33069,0xbb3bdbb1,0x3ac040f7,0x3b92b542,0xbca91044,0x3c3649ff,0x3bf8ada5,0x3be1f705,0x3bf5d169,0x3bb70e33,0x3b52549c,0xba0ecb7d,0x3c32ee44,0x3cb427b4,0x3d081d93,0x3d2c1e71,0x3d48c1c6,0x3d63747e,0x3d3e8970,0x3d20f14d,0x3cfebac4,0x3cb0aa3d,0x3cb85734,0x3cf31f3a, +0xbc3f97d8,0xbd11d759,0xbd328636,0x3ad89011,0xbd03e93d,0xbd3c2de4,0xbd45cdc1,0xbd4a2ebb,0xbd3381fe,0xbd503fe6,0xbd5cdda7,0xbd55a08a,0xbcf89a44,0x3b25665a,0xbd413799,0xbcf0e1a2,0xbba75457,0x3d05a76b,0x3cc0a314,0x3ccc4407,0x3cc47d0d,0x3cc27417,0x3cc67aa9,0x3cbd4375,0x3cd6a218, +0x3cdd53ae,0x3ce5bd01,0x3cf23583,0x3d00f05f,0x3d12f1b5,0x3d028d7d,0x3cf5ae36,0x3ce9eb93,0x3cd8e1d4,0x3ce94a36,0xbcb39af1,0xbc72a0ef,0xbd058669,0x3cfe9c48,0x3d66abd0,0x3d40be60,0x3c6917e2,0x3d52e6b6,0x3d6451eb,0x3d680395,0x3d63fb47,0x3d3e16f9,0x3d5ada72,0x3d5a693a,0x3d49c158, +0x3d573856,0x3c9e3ba6,0x3d4ab66c,0x3d561b66,0x3cf1d0b7,0xbd0fc417,0xbca35e59,0xbcbd1d09,0xbcc0a247,0xbcc2119d,0xbcc1e9f1,0xbcb4166f,0xbcc1b2c8,0xbcca00b5,0xbce5298b,0xbcc9b2ff,0xbccf16a1,0xbcfb736f,0xbcc6bff2,0xbca591c2,0xbc7d6fa3,0xbc7f14f0,0xbc01dc0d,0xbb9e7a0f,0x3d4b6a40, +0xbb417b9b,0x3cd8eae5,0x3cbc3344,0x3bfb4dc0,0x3c248533,0xbc080f6b,0x3a6176c4,0x3cb3f517,0x3be70604,0x3af253b1,0x3befa091,0x3c91ecc8,0x3c2207ac,0x3c64402d,0xb9689a3f,0x3d36a084,0xbc683246,0xbcf9868f,0xbcd68f4f,0xbd035955,0xbd09b1cc,0xbd0bbe31,0xbced8fd5,0xbd093294,0xbd127e92, +0xbd2f1c6e,0xbd06ccc4,0xbcfc682e,0xbd267ad8,0xbcd43f23,0xbca6ae0d,0xbc2287b1,0xbb39ce33,0x3c2a9e59,0x3bcd70b1,0x3d086a58,0x3ca284d5,0x3cf56fde,0x3cb00655,0x3ca0770f,0x3c8cf3e4,0x3ca4c787,0xbb4d3876,0x3cf17c53,0xbbbccbf3,0x3cbfb80b,0x3ba2faac,0x3cd56fb6,0x3c4eeb6b,0x3c355af8, +0x3be76890,0x3cb20917,0xbb477cb1,0xbd1fb2c8,0xbce6262c,0xbd0d8dff,0xbd0ac9fc,0xbd0eb8ee,0xbccd79ef,0xbd0dc386,0xbd1fb0e8,0xbd5f924c,0xbd0e1f28,0xbd182273,0xbd88754f,0xbd043c2f,0xbc84f4ee,0x3c880933,0x3ccbfe85,0x3d5560c9,0x3d2d548c,0x3d510046,0x3d046e62,0x3d29b63e,0x3d008860, +0x3cd51b9b,0x3c91bec6,0x3b739f25,0x3bc1985e,0x3b828fe8,0x3c30bd81,0x3c572746,0x3c1b9e6f,0x3c5af814,0x3b792454,0x3c8781e5,0xbc35d6dd,0x3c93f6b7,0xbb51a7f1,0xbd302b51,0xbd12be71,0xbd41b23b,0xbd5a95e3,0xbd5863ba,0xbd0c7640,0xbd43d822,0xbd6b4417,0xbda01093,0xbd3ab224,0xbd1ee0e7, +0xbd91ab8f,0xbcc5e00b,0xbbb20eb0,0x3d0c7126,0x3d8df6df,0xbdd90501,0x3b013b18,0x3d5e81ec,0x3cc16e4b,0x3cbd8b71,0x3cbb3977,0x3c127f9a,0x3bbe8444,0x3ce03d03,0x3cee6129,0x3c4a9beb,0x3c96210c,0x3c99b28e,0x3c8f4aa7,0x3c8b956e,0x3c44bfa9,0x3c7f3643,0xbc1451f2,0x3c8917bd,0x3c0ef865, +0xbcf648e9,0xbb87596f,0xbb7c4e7b,0x3cfdef9b,0x3cfd9255,0x3c8ad0c0,0xbc65d36c,0xbccd0a0b,0xbd1b9425,0xbcfdc74b,0xbd4c0feb,0xbd9da301,0xbd7724d4,0xbd84dd69,0xbd597d59,0xbd8bd391,0xbb565c07,0x3c686318,0x3d4f96e2,0x3d367652,0x3d08c310,0x3cfd641d,0x3c99748a,0x3d3b4fe3,0x3c869381, +0x3c2b66e6,0x3b3805bc,0x3bba6aed,0x3c54188f,0x3c542624,0x3c257e13,0x3c057544,0x3b867c33,0xb9433da8,0x3c394f4d,0xbc105f19,0xbcaad5bc,0xbc9fc510,0xbd813823,0xbd53f305,0xbd14524f,0xbb8a9d60,0xbbe2f1dc,0xbc83659e,0xbd15ada5,0xbc876e92,0xbc372202,0xbd0fd5e9,0xbbddc2fd,0x3c6eabde, +0x3d774727,0x3d0b9cf5,0x3c5e3fc0,0x3b55f087,0xbc8fed3b,0xbc8f18f6,0xbb5ca8b3,0x3cc3fcb5,0x3d21e41b,0x3d19abc3,0x3c0f094f,0xbc0b3df3,0x3bf83d73,0xbb2d0ae9,0x3b927007,0x3bdfa836,0x3cdeec62,0x3cb8aef9,0x3b1c5898,0xbc25001d,0xba03b0b9,0xbc9b9f6e,0xbd429dac,0xbd001dfd,0xbcfbaded, +0xbd6e5a3b,0xbd962aa2,0xbd778cf1,0xbd30c78b,0xbcc1c877,0xbc28fd50,0xbc79926a,0xbbe325e5,0x3cbd020a,0x3d5ab72d,0x3d3ca4a9,0x3d8f46a0,0x3ccebf1d,0x3d685e40,0x3d064255,0x3c343bd1,0x3cbb7df1,0x3c4693b7,0x3c5a061d,0x3b71dba9,0x3bcbba0c,0x3c88ccfb,0x3c90f2d5,0x3cab31fb,0x3c661e79, +0x3c753c4c,0x3c0d95cf,0x3c9b78e8,0x3cb21d66,0xbbc2e867,0xbbd69c0a,0x3ba6ce10,0xbc2d6730,0xbcac36f0,0xbc1e85ea,0xba0c8918,0x3c93ed5b,0x3d305e7c,0x3dab7de9,0x3dc38034,0x3df5111e,0x3e19e470,0x3e228f99,0x3dfadaec,0x3d382871,0x3d09ebfd,0x3cde04d0,0x3d5e9382,0x3d7acd28,0x3d7629b6, +0x3d97d87e,0x3d533650,0x3cc5ac5b,0x3cbf83e3,0x3cd51324,0x3cd6f8a5,0x3cf42659,0x3ca13e18,0x3bb830cd,0x3c3f9614,0x3b9f9ab6,0x3ba2a7af,0x3c45c267,0x3b786491,0xba20e274,0xbb82e513,0xba6a94e8,0x3bbec405,0xbbb533f9,0xba5d6fae,0x3bed4751,0x3c9dffc3,0x3d09de47,0x3d44461c,0x3da05c0c, +0x3d9f9924,0x3da51e39,0x3d99f3c8,0x3d746ddf,0x3d2f2772,0x3cb7eb05,0xbbe8a91d,0xbbda5334,0x3cc5566f,0x3d79a377,0x3c1f339c,0x3d2a0b58,0x3cde99c0,0x3cbadfae,0x3c4942b4,0x3c3bebde,0x3b4fa988,0x3bb9a58b,0x3b2450e9,0x3ad6d32b,0xbb2724e3,0x3c1a59d9,0x3c64505d,0x3c92d64e,0x3c150e96, +0x3c475817,0x3c8f458e,0x3c76102e,0x3bd7adea,0x3bc3658c,0xbb6a0407,0xb9d51d28,0x3c284217,0x3d08c817,0x3d244f84,0x3ce226fd,0x3c7a24c7,0x3c06f8be,0x3be25b87,0x3ca1a5ad,0x3c4ef351,0xbc7a8580,0xbcbb8627,0xbc900068,0xbb18d8cc,0x3bbed36e,0xbbd8ac24,0x3bdf5f17,0x3cfaee25,0x3ca8486e, +0x3cd15507,0x3ca43702,0x3c72d2f3,0x3c37205a,0x3c92ec7c,0x3c609dd2,0x3cdc3131,0x3c2cf54d,0x3c25950d,0x3b39734d,0x3bfcfdd8,0x3c140e06,0x3c5b6bc2,0x3c8fd0ea,0x3ce9e423,0x3cafcbb8,0x3bbc68a6,0x3bb6b9dc,0xbbb24de8,0xbb5212a3,0xbb02adce,0x3aefb0d3,0x3c24adda,0x3c8fea2c,0x3cca1479, +0x3cad54ad,0x3c9bc426,0x3c7f79b0,0x3c793b91,0x3c293f2d,0x3af5d1cd,0x3b6483f3,0x3bf3acf6,0x3c313eb9,0x3cc209b5,0x3b543595,0x3c49ebfc,0x3c08a2f8,0x3b7d009d,0x3b0279a9,0x3ab911b3,0x3c084ff5,0x3ca3f06c,0x3c93b64b,0x3c79b8d4,0x3cbb08a2,0x3cc2d81e,0x3ca0924c,0x3c9ec8e5,0x3c42ba4a, +0x3c8e5aa2,0x3c384347,0x3c4c80f7,0x3c816a98,0x3c8cbf4e,0x3ca5f5e4,0x3cb02568,0x3cb8f8b0,0x3ca6aa93,0x3c9029e5,0x3c84df8a,0x3c601543,0x3c40cfd1,0x3c1ec5fd,0x3c009f13,0x3c10ccd5,0x3c0fdce8,0x3c37f942,0x3b8d37bf,0xba5164a3,0x3d117f37,0x3d3a2dbe,0x3cde9e2f,0x3ce6e001,0x3d331f4e, +0x3d00b18e,0x3d083c32,0x3d0aee82,0x3cf3e079,0x3d0ca7d4,0x3d16730a,0x3d15836d,0x3d4531fb,0x3d004a85,0x3d053fc1,0x3d3fdaba,0x3d127854,0x3b256084,0x3bf73549,0x3bf94292,0x3c0300d9,0x3bfd35fa,0x3bfa4968,0x3c073d40,0x3be81bdd,0x3bce6ae8,0x3ba5a882,0x3b9f6e1f,0x3b92565b,0x3b7cff9b, +0x3b95e1c7,0x3b9397f9,0x3b874232,0x3b7af6e5,0x3b887a42,0xbcb97b91,0xbcc3a476,0xbc9077cd,0xbd6b3dce,0xbd63e732,0xbc332af3,0xbd4936b7,0xbd5e4592,0xbcc5feab,0xbcd498a0,0xbccb2f77,0xbc85c95c,0xbca2d26d,0xbc9f22f9,0xbc7eb9c5,0xbd616f09,0xbd4e1ed4,0xbc423344,0xbd5f7caa,0xbd645236, +0xbc372347,0xbc978f31,0xbc99e41d,0xbc96309b,0xbc97a503,0xbc9acaec,0xbca414ff,0xbcacac51,0xbcb0873e,0xbcaade41,0xbcaf7007,0xbcbef2c4,0xbce89f40,0xbcf5e4c0,0xbd02c2d2,0xbd06bebf,0xbce896e6,0xbd08dc04,0xbd0d365c,0xbcee8521,0xbcc950fa,0xbcddfc19,0xbcc6ec9c,0xbcac8582,0xbc9fcfd2, +0xbca0b50b,0xbcf46e2d,0xbd1bb25d,0xbcf9245a,0xbca8ee94,0xbcdbb8da,0xbcb32718,0xbca44a86,0xbd0b4676,0xbcc0feeb,0xbd1fde45,0xbccdd53a,0xbc6becb8,0xbcbbbdd7,0xbc9f93bb,0xbca446db,0xbca51d58,0xbcb932d8,0xbcc52234,0xbcce4d39,0xbcd68273,0xbcf40f97,0xbd1f05d2,0xbd545052,0xbd647ff1, +0xbd6c2eab,0xbd64df75,0xbd42d948,0xbd365bf3,0xbd028dc6,0xbd066bc9,0xbcde72ff,0xbc06dbcb,0xbc1a778b,0xbc253772,0xbbfae73d,0xbc8c68e0,0xbb88d0ca,0xbca85ff4,0x3addcf89,0xbc1543ca,0xbc0b248b,0xbc6bb152,0xbc32efea,0xbc65c0f6,0xbc97dbbf,0xbd10fb1a,0xbc94eeea,0xbb439fd1,0xbc520c01, +0xbc3972ed,0xbc4966f5,0xbc6e9fb0,0xbcbf291d,0xbcd6addc,0xbcf49385,0xbce5dbfb,0xbd068766,0xbd396c45,0xbd85b69c,0xbda334a6,0xbdb7a1a6,0xbdbbbade,0xbd85193f,0xbd914f3d,0xbca79ec9,0x3be12044,0x3bc6026f,0x3ca7bc77,0x3c9c922b,0x3ca04416,0x3c988e87,0x3c027cf7,0x3b6840c3,0x3c754fe6, +0x3c633a6a,0x3c8fd7f7,0x3cc82e25,0x3c9c77f3,0x3c947cb8,0xbb875117,0x3bdc2704,0xbcab8cbd,0xbb8933c0,0x3b2c7358,0xbc94af78,0xbc6a797e,0xbc5fb46a,0xbc824594,0xbcedeb8a,0xbcf56506,0xbd0513e8,0xbd0746f1,0xbd4e89c2,0xbda56921,0xbde17dc9,0xbe0163e0,0xbe0bebbf,0xbe075778,0xbdcbf0a6, +0xbdc42dee,0xbdda19c4,0xbe052ada,0xbdb64272,0xbd148e4e,0xbc98c8e8,0xbc891933,0xbcbca435,0x3c0420ab,0x3ca14d51,0x3c490070,0x3ca0ff5e,0x3c9532c0,0x3a9c42dd,0x3c190e11,0x3c68469f,0xbbaf8fe8,0x3abd83e7,0xbcbbe749,0xbc612590,0x3cd51d49,0x3cc3a1f6,0x3d361e82,0xbbefc6d9,0xbc671875, +0x3c990c66,0x3cb43cbf,0x3c97ab75,0x3be5f5cb,0xbb2c9341,0xbc4ec64c,0xbd2dead9,0xbd5976f3,0xbd502284,0xbccc44d5,0xbd9589f3,0x3d7939dc,0x3d548855,0x3b969b4d,0x3c51960a,0xbb7c0f5e,0xbb81c171,0x3c3472f0,0x3cffa7fd,0x3c5a202a,0x3b97fed9,0x3aa6abc5,0xb9611adf,0x3bf2b4dd,0x3c99c111, +0x3ca875d5,0x3c6ecd0f,0xbbf2abbf,0xbbcd67f9,0xbcbbe6ce,0xbce880d6,0xbcf6d711,0xbd760763,0xbd9bedb9,0xbd96c111,0xbd915de6,0xbd839c4e,0xbd7300b3,0xbd01121d,0x3abdd1eb,0xbc768c8b,0xbd764c2d,0xbe0b801c,0xbdf459d3,0xbdf8659f,0xbdb1fafa,0xbcaa91ce,0xbcd43278,0xbc2136a1,0xbbcb1d97, +0x3a5f6ac3,0xbac29813,0x3d099381,0x3ce17206,0x3caf764f,0x3a711b3d,0xbc1d8196,0xba80edc4,0xbb1ebcf3,0x3b3549d1,0xbc6a846c,0x3c5d18cc,0x3c6b6af4,0xbcc06855,0xbc9229a2,0xbd150132,0xbcdf39e5,0xbcb8172f,0xbce51188,0xbc9d3cc2,0xbcd563b7,0xbd0f5995,0xbd2f1929,0xbccb49bb,0xbb226b61, +0x3c848349,0x3d257603,0x3cd0c38f,0xbcea9499,0xbd07cefc,0xbc3c855e,0x3cf841e6,0xbc237a14,0xbdb1842e,0xbbc3bbdd,0x3c84a68d,0xbb904031,0x3b76f955,0xbb70c3e4,0x3b995760,0x3b74e580,0x3caaecfa,0x3cac7490,0x3c609906,0x3c219445,0x3c5885a3,0xbb9b5f38,0x3c822ffb,0x3c49fcfa,0xbc67bd9f, +0xbc3ae763,0xbccd505f,0xbc630c6d,0xbc30fc69,0xbcaf2fad,0xbccef833,0xbd293cd0,0xbd1d6077,0xbc9f72fb,0xbca8dd03,0xbcdc7b68,0xbd3e95cb,0xbc3b9980,0xbaaf138c,0x3c52d768,0xbd83030e,0xbddc3de9,0xbdfbee02,0xbdf1935c,0xbdb820d5,0xbd9a519a,0xbc546072,0xbc17bc78,0xbb87e1ed,0x3c6654d8, +0x3c6577e2,0xba86f382,0xb9ef7cd7,0xb9e42cb3,0x3aa05534,0xbab016a0,0xbac82f31,0x3ad00d2b,0x39d5ff0a,0x3aff1f6c,0x3bd6772c,0xbb8b0594,0xbc8660a2,0xbc365a6b,0xbca13135,0xbc83377e,0x3bf4ea62,0x3a08c9d0,0xbc1aa350,0xbc925777,0xbd1a9763,0xbd4fb4bd,0xbda43ee8,0xbd32cd55,0xbd16eb6f, +0xbd10c482,0xbd80b662,0xbd9fd38e,0xbd9a0339,0xbda9872c,0xbc9f400a,0xbcf42267,0x3b15bc2b,0xbc20136f,0xbc210270,0xbc256cfb,0xbb4a1ea3,0xb9e676c0,0x39c2ddd6,0x3a9c22ba,0xbae476fe,0x3b890f04,0x3bfbad77,0x3c01beb3,0xba914bda,0xbc0e9630,0xbc667ab3,0xbbc99d48,0x3b20c382,0xbaf4df00, +0xba9b7dad,0xbbf59d06,0xbcc21fc1,0xbd003533,0xbd1424ff,0xbd1a0738,0xbcd56c8f,0xbc4da35d,0xb9c4aa00,0x3b58c968,0xbbb0e7ea,0xbcb70142,0xbcdf57f4,0xbcf4ce7f,0xbcaa40fd,0xbcb6707d,0xbc5c1ba4,0xbc4a34f9,0xbcc9daee,0xbc849e40,0xbc214b5f,0xbc03654d,0xbb94070e,0xbb7e9512,0x3a3c1d4f, +0x3bbd9cd6,0x3bda0b1a,0x3bba9044,0x3bd98d46,0x3a75ae33,0x3b78763d,0x3b340552,0x3b8183dd,0x3b3ad577,0xbb2884eb,0xb99bf125,0x3b61d4bc,0x3bba2d9f,0x3c2a2589,0x3b25eaec,0xbbe01bff,0xbc8cf418,0xbc832a79,0xbc8fddaa,0xbc931baa,0xbce46e3b,0xbd092c7a,0xbd22db7e,0xbd0c39aa,0xbcfb37dc, +0xbcd00d7c,0xbcc0be60,0xbc81c018,0xbcb097b6,0x3a6d3e1a,0xbc4badf0,0xbc507110,0xbbf594c8,0xbc12c47f,0xbc2a3bba,0xbc2a706a,0xbc92bb46,0xbca08d50,0xbcb78fc2,0xbc8f7908,0xbca4ad6b,0xbc11ed82,0xbb397187,0xbbfe6b3a,0x3b174389,0x3c69d1bc,0x3c56ea2b,0x3c911493,0x3c82b8e3,0x3c905a1a, +0x3c99fcf1,0x3cbd8cab,0x3cdf5949,0x3c9e5119,0x3c336470,0x3b37a237,0xbba655da,0xbc4f2879,0xbcb3be60,0xbca344db,0xbca54613,0xbc9e0884,0xbc9a08fa,0xbca7d8ad,0xbcb69bf5,0xbcf4cc17,0xbc986e16,0x3ca6f52c,0xbd02e724,0xbc9ac1b1,0x3c2ee97b,0x3c2b82f5,0x3c441004,0x3c77d050,0x3c7f3c10, +0x3c863163,0x3c95976b,0xbcb749e8,0xbd01a3aa,0x3cb3114b,0xbc8289a1,0xbcbd39ca,0xbc5a36d0,0xbc570c6a,0xbc524cc9,0xbc46684f,0xbc3a515b,0xbc3e568b,0xbc2a2ec7,0xbc67ddd9,0xbc8324cc,0xbc9468fa,0xbca36644,0xbcb28a07,0xbccd9675,0xbcc036d3,0xbcbb8ce9,0xbcb428d5,0xbcb697a5,0xbce6d2e2, +0x3ce77e37,0x3cabde6f,0x3ccefe67,0x3cf581ab,0x3c15f370,0xbd37b40b,0x3d283d2f,0x3c86eb2c,0xbd0423ad,0xbd0f6b0e,0xbd13f2eb,0xbd1f11c0,0xbd20aca4,0xbd24c881,0xbd333763,0x3c847a12,0x3d25bdb9,0xbd4d5bfb,0x3c405661,0x3d0d50a0,0x3cebcd25,0x3ccf98df,0x3ce9a5e9,0x3cd8bd01,0x3ce228f0, +0x3ce620bf,0x3cf721a9,0x3ce3983d,0x3ce55c07,0x3cf17430,0x3cf86211,0x3cfe0ae9,0x3cf7581e,0x3d0bac3c,0x3d06aa80,0x3ccd5f45,0x3cd0261e,0x3c992a35,0x3cbe90b0,0xbc58cc2e,0x3ca5d23d,0x3c884ffd,0x3c321952,0x3cb032dd,0x3ca0d558,0x3cc986b4,0x3cec8efa,0x3ccedac5,0x3d051db2,0x3cd69b78, +0x3cdd2bcf,0x3c7ba128,0x3c881a84,0x3ce69771,0x3ca0c3d1,0xbb07ab2e,0x3d11a530,0x3cfcab2f,0x3d19f0f7,0x3d076c05,0x3d15e2b5,0x3d182423,0x3d2732de,0x3d0c0e14,0x3d0df4b8,0x3d2aabcd,0x3d39f68e,0x3d48caa5,0x3d3f14b4,0x3d666506,0x3d56d3ea,0x3cf83b28,0x3ce7cb2a,0xbbf952b4,0xbbadfd97, +0xbaedc60d,0xb86d71da,0x3baadaa5,0x3c1d29f9,0x3c33e66a,0x3c6e4fde,0x3bf0260b,0x3befff93,0x3c69ff6c,0x3c93c031,0x3c54c62d,0x3c86e9a4,0x3c8a2e5e,0x3cabb133,0x3c65cc8b,0x3c7090e3,0x3cbd83cf,0x3cde33bc,0x3d0a6cbc,0x3d1d8d91,0x3cf58248,0x3d146b4d,0x3d159ea8,0x3d3e9be7,0x3d07765a, +0x3d15b724,0x3d3dce78,0x3d46fb20,0x3d5d2eea,0x3d5bdc7b,0x3d9d26df,0x3d91b343,0x3c4eadc8,0x3be80e46,0xbcef139b,0xbd19b21c,0xbd01bdbd,0xbc3111b5,0x381e2621,0x3c2a949e,0x3c3b1183,0x3c2166a2,0x3be7bb2a,0x3bf46c6b,0x3bf5b943,0x3c2f917e,0x3ca83261,0x3c78aa80,0x3ca8756c,0x3c895e0c, +0x3c809dfc,0x3c4e9234,0x3cad85bd,0x3ceab7d0,0x3d23d7b3,0x3d5bc5d1,0x3d22af69,0x3d4f1c6c,0x3d66dcba,0x3d8392e6,0x3d3bcb65,0x3d30575f,0x3d7d3500,0x3d98bcb5,0x3db3746d,0x3db660e0,0x3df6a861,0x3dd5924f,0x3c4b6a3e,0xbc2c8340,0x3d52f8b7,0x3cf11430,0xbd0d8852,0xbd1c8e38,0xbce1781b, +0xbc36c9f9,0x3ae79365,0xbbda5e3e,0x3bf250c8,0x3c9f0f01,0x3c042c34,0x3ca7b212,0x3c925d22,0x3b231cea,0x3c8142dd,0x3c886c98,0x3c05ff96,0x3c5f2943,0x3cdf4be0,0x3d086e10,0x3b561b0f,0xbb5087ed,0xbbf081db,0x3b89b8ad,0xbc47518c,0xbd2ef769,0xbc974ee2,0x3b7b909c,0x3d0f649b,0x3ca53ddf, +0x3cb7d20c,0x3c8e6194,0x3cfdf458,0x3d1134da,0x3d342016,0x3d14de42,0x3bef09b7,0x3d50a625,0x3d9a675c,0x3d52f717,0x3d082c78,0x3c985531,0x3c675c1b,0x3cd91392,0x3c324261,0x3b96838a,0x3bcfe979,0xbb21e9d1,0x3c01ddcd,0x3cb8d819,0x3cd44892,0x3ce0b548,0x3ca706d2,0x3c89bd8b,0x3b0b957b, +0x3ccef86f,0x3d3bd03d,0x3d5aec7a,0x3d8c0c65,0x3d6a9aeb,0x3d48f9c9,0x3d5cb837,0x3d18a6c9,0x3cdd60f7,0x3c7aa267,0x3d069d33,0x3ca30a30,0xbcf06f27,0x3cbba609,0x3cd19b1a,0xbc3ff33c,0xbb34a914,0x3d852404,0x3c889f94,0xbcba5e84,0xbbdb4617,0x3c913e63,0x3d3f7c4b,0x3d1accd6,0x3c8767bd, +0x3be2a815,0xbbbb659a,0x3a23af4e,0x3a6c5887,0x3b6d8e53,0xbcabbc9c,0x3cd2c7a1,0x3d0ba7d9,0xbc0621d7,0x3a1ac58b,0x3b0292bf,0xbad6ceef,0xbb0bc597,0x3bcdbff8,0x3c9a46c6,0x3d3bfbaf,0x3d871850,0x3dadea6d,0x3d553c68,0x3cf0426e,0x3ca993c8,0x3cbb08c4,0x3d825053,0x3e06e9d4,0x3e4b962f, +0x3e6c7935,0x3e738530,0x3e02474f,0x3dc967a6,0x3bc932d6,0xbc009a6e,0x3c91f1b5,0xbbbc2dcd,0x3c9de98f,0x3c71f488,0x3c4b9deb,0x3ccf6c7c,0x3cb712a7,0x3c6984b0,0x3c49280e,0x3c6f6d85,0x3ba532cd,0x3cd3222b,0x3cc16444,0x3b72e85b,0x3bb2337f,0xbb1de43b,0x3b076969,0x3bcc0173,0x3c121049, +0x3bc456c1,0xbb851700,0xbc092f9e,0xbbe69040,0x3ca655a7,0x3d322061,0x3d5b7347,0x3d98753a,0x3da75623,0x3d5151d7,0x3db84ff8,0x3df2b3a1,0x3e306500,0x3dfe1e16,0x3e0c4704,0x3d90b58d,0xbc164fc7,0x3c5c847d,0x3c8cda71,0x3c80e4a2,0x3c8f7c34,0x3c4bf2f9,0x3c1e42d6,0x3c09a5f1,0x3bd4084b, +0x3ad394aa,0x3b217be7,0x3c36a874,0x3c0c736d,0x3c00453e,0x3bfa6640,0x3c9873d5,0x3c55afb5,0x3c4a809d,0x3ba7bcec,0x3b507ea1,0x3c4d12de,0x3cb236a3,0x3d10f22e,0x3d5c29dd,0x3d47370d,0x3d669b7f,0x3d95d41b,0x3d9d36f2,0x3d9b8bf2,0x3d75b28d,0x3dd8ae79,0x3e02a220,0x3e129dff,0x3e084827, +0x3d8ae6c2,0x3d5a06d9,0xbb8fcd26,0x3c405f67,0x3b86cd5f,0x3c4176df,0x3c642b2a,0x3c38113a,0x3c75285a,0x3c32884b,0x3c0188f6,0x3bf362e9,0x3c1af871,0x3bb4fea7,0x3c1e6f1e,0x3c526254,0x3c5115ba,0x3a5e7fff,0xbb350ca3,0x3ad61ab9,0x3c5c05b3,0x3c52049f,0x3bb212e2,0x3c8d94f9,0x3cb3a9b6, +0x3ce92f86,0x3c508637,0xbb0cbc1f,0xbc6d8f02,0xbc259b0e,0x3a12e84a,0x3c813770,0x3c97c932,0x3cdaf2cc,0x3d39f006,0x3d684137,0x3d0a277c,0x3cf453d5,0x3cd6446d,0x3cf70b5e,0x3ca344f1,0x3c96641e,0x3c53b458,0x3c4370a4,0x3c048fcc,0x3c34d8a4,0x3c4438e4,0x3c3594e2,0x3b5ad29d,0x3b9b0c60, +0x3b74fe0a,0x3bc6db19,0x3bc99dac,0x3bcfaeeb,0x3c51aa7c,0x3ba085a1,0x3a8425d6,0x3bbfce3b,0x3c033c1c,0x3b5a81a5,0xbb7cd26d,0xbc384ff2,0x3a6e78d9,0x3c5650ac,0x3cc140d9,0x3ca73d3d,0x3c767611,0x3c267ae1,0x3ca358f6,0x3ce82738,0x3d12035b,0x3d04e2f3,0x3c859be9,0x3cb114d8,0xbc90cd1f, +0x3c69c8ea,0x3be3f7c4,0x3bfdc191,0x3c9046c1,0x3c872786,0x3ca7f120,0x3ca7e8f8,0x3c81d9bb,0x3c9cae92,0x3c810aa9,0x3c6656d2,0x3c16e095,0x3bd65f3c,0x3c869d0c,0x3c496809,0x3c0b1640,0x3bf32d43,0x3b2d0d4c,0x3b7ec2b0,0x3b1b15d2,0x3adb90bd,0x3b38fb90,0x3aefb0f5,0x3b258b65,0x3adb0222, +0x3b7c06b6,0x3bd77b86,0x3c43991d,0x3c771e43,0x3c7fe0ef,0x3c749d38,0x3c811cac,0x3c852245,0x3c1c6915,0x3c803b98,0x3c1a8154,0xbbeb8d19,0xbd190d59,0x3c916146,0xbb476607,0xbcec8031,0xbcfff5e3,0xbd042829,0xbd0a0e82,0xbd1203ed,0xbd17af0c,0xbd1fe8af,0xbb6d71dc,0x3c514fcb,0xbd0d026b, +0xbbab512a,0x3be01db5,0x3bb00dfc,0x3ba64254,0x3b9a8610,0x3b815a4c,0x3b82d6b9,0x3b5f34b0,0x3b389460,0x3b8f75f9,0x3bc3ec0c,0x3be79b33,0x3c0bf22a,0x3c1ccfb0,0x3c416747,0x3c37e1b3,0x3c397cfc,0x3c327d08,0x3c40bc4b,0x3c0cbb64,0xbd0ca859,0xbce94f4e,0xbd24a3c9,0xbcb8c3db,0x3c049259, +0x3d62014a,0xbd0aae70,0x3b96ee34,0x3d48f338,0x3d4e32b9,0x3d4ffe4f,0x3d49efba,0x3d5e42d4,0x3d61eef5,0x3d63588e,0x3bcfdd51,0xbce820fe,0x3d795585,0x3c1a2a21,0xbcaac2c2,0xbd2c3532,0xbcf78ad1,0xbd0e48fe,0xbd143e98,0xbd0ea0e4,0xbd0d57df,0xbd0c2434,0xbd0e6430,0xbd104bec,0xbd0bee6c, +0xbd1dad81,0xbd24571d,0xbd1d4053,0xbd294576,0xbd1d216f,0xbcf3c66a,0xbcfee903,0xbcaac742,0xbd0be70b,0x3c231e9a,0xbd113dea,0xbc29d7d1,0xbbafa6d5,0xbc94e6d2,0xbc39fdee,0xbcc95267,0xbcd305a9,0xbc7c3b8a,0xbcc0ebb4,0xbc9897b5,0xbca0dd02,0xbb03a176,0xbbcf93f5,0xbc88d008,0xbc944513, +0x3caac47a,0xbd2420bc,0xbd14e9ad,0xbd2294a3,0xbd3fa0a8,0xbd364089,0xbd35d0d0,0xbd2f3352,0xbd322dac,0xbd349a69,0xbd2daf86,0xbd59445e,0xbd62e081,0xbd41a413,0xbd6bc5a8,0xbd5432e6,0xbcee60ec,0xbcccf5d1,0xbca2cf64,0xbd186569,0xbd14f085,0xbd001581,0xbbe1ece2,0xbc1bf9ce,0xbb82a35d, +0xba957d26,0x394edda9,0xbc0e9589,0xbb089fbc,0xbc4859ad,0x3bd7e3a3,0xbc6b40c0,0x3b700ac3,0xbbc14965,0xbbb873ed,0xbc3c0094,0xbc346345,0xbd02f3f9,0xbd335d10,0xbd333852,0xbd748248,0xbd546d5a,0xbd51473c,0xbd4a8eb6,0xbd53c68b,0xbd61658a,0xbd4da468,0xbd90f601,0xbda39bb5,0xbd81f435, +0xbdac088d,0xbd839f16,0xbc95862c,0xbca6b1f9,0x3c9ff226,0xbc8ab723,0xbd44d324,0xbd3b49c5,0xbc49a7fa,0xbc5480ec,0xbaab4a1d,0x3c2805fb,0x3aba99c6,0x3b862d6a,0x3b6c23e5,0x3c75f9ea,0x3c6013eb,0x3b8274a1,0x3c383584,0x3b78569c,0x3b9ed37c,0xbc2cb5d0,0x3a9dc98b,0xbcec9e4f,0xbd2e9e82, +0xbd48e8e6,0xbd9c6162,0xbd8e66d3,0xbd9489bf,0xbd899244,0xbd8e7a06,0xbd8d9ec9,0xbd7db848,0xbdc138a0,0xbdc5f9e9,0xbd87180c,0xbdcab429,0xbda1db00,0xbbcf01eb,0x3c0d8235,0xbde778f3,0xbd58db44,0xbca8c973,0xbcfaaa83,0xbc36efce,0x39bc5dc4,0xbb90631d,0xbbce4462,0x3b88daf1,0x3c17cc3c, +0x3b1550d8,0x3c5910ee,0x3c32f0dd,0x3a1cfb3e,0x3baec052,0xbb078978,0xbbd93abd,0xbcdc92cb,0xbcaeab2e,0xbd437561,0xbd8a8925,0xbd43fec0,0xbd56b859,0xbd274d53,0xbce3588f,0xbc32bc69,0xbd300d93,0xbd55f054,0xbd5e152a,0xbd8b7041,0xbdb5254f,0xbdf4e2d0,0xbdad44e7,0xbd82f37f,0xbd69e5d1, +0xbdbaaf60,0xbcd7c56b,0xbc0f6977,0x3b95659b,0xbbbda0ae,0xbcf688b7,0xbbb8b341,0x3be8955d,0x3cbd0169,0x3b830098,0xbbb66617,0x3af00afe,0xbb6cd40f,0x3be19be8,0x3c5e70a2,0x3c1f1203,0x3bba63a1,0x3aacef6b,0x3a174f53,0x3c5ee961,0xbc361a1c,0xbd6829e3,0xbd788ae8,0xbd82868a,0xbd84229b, +0xbd78e388,0xbd2f5694,0xbce61cf7,0xbcf702b6,0xbd4418f1,0xbd4f1533,0xbd3329a3,0xbd7775c6,0xbd6ddf88,0xbd7829f6,0xbd5efec1,0xbcd3f6fd,0x3d1da9c9,0x3cc135b1,0x3c3a31fb,0x3c53ab63,0x3d13c541,0x3d38479d,0x3d108f5f,0xbbb07f32,0xba28e0b6,0xbbf39915,0x3964c1dc,0xbb160329,0x39e1da6a, +0xbca36990,0x3c842bc0,0x3c839f1c,0xbbb139cc,0xbc4c6fdf,0xbcac9335,0xbcd00b35,0xbca2ed53,0xbc1d0a5e,0xbc830b14,0xbd46da76,0xbda28188,0xbdcf163c,0xbdee9d5a,0xbddb8298,0xbda84f61,0xbdaf3950,0xbdee9883,0xbe2e4667,0xbdf98f77,0xbd9d4c76,0xbd6c4416,0x3cb55021,0xbd460378,0x3cadfaec, +0x3c6a5b41,0xbbd6c9cd,0x3be0d6fb,0x3b8a30fb,0x3c6dbc5e,0x3be3c288,0x3ca9698f,0x3c82c8c3,0x3b96f838,0x3be3bf9e,0x3c3a3f95,0xb9fb4641,0x3c98d880,0x3ca87147,0x3a89ecfa,0xb6d0d508,0x3b32b37d,0xbc9c43a7,0xbd5c5050,0xbd89d316,0xbd8f3600,0xbda62ddc,0xbda4aec6,0xbd8df1cc,0xbd89aae7, +0xbd413f49,0xbcc9294f,0x3b87484e,0x3b94cfa6,0xbceb27ac,0xbd8ec25a,0xbdfa0d8d,0xbe3837dd,0xbdbd948d,0xbde1136e,0xbccd04c9,0x3d5ecc66,0x3cabf47f,0x3bedaf1b,0x3ca374aa,0x3c3a1a15,0xbb14e4da,0x3b121de9,0xbba97e28,0xbb9654d3,0xbb9499ee,0xba89bf6f,0x3ba2a7df,0x3c39598f,0x3c331178, +0x3b908bf1,0x3b4b6217,0x3bd5ec56,0xbaad9b32,0x3b92cb17,0x3c3742e2,0x3bed008f,0x3b1f108e,0xbaf46e25,0xbc84a91b,0xbc2a0cad,0xbc9e09b2,0xbd37dafa,0xbd3bd3f2,0xbd8da5ca,0xbde9ae4c,0xbdc57fdf,0xbdab9ffa,0xbda8e264,0xbdbe2018,0xbceb76bd,0xbc8443f6,0x3ce71b3e,0x3b232851,0x3c3568a5, +0x3c016a63,0x3bff7dad,0x3c3827f9,0x3b7404f9,0x3b870c3e,0x3b9336e5,0x3b1a1344,0xb9d6224a,0xbb106a6d,0xb9ebb0ae,0xb95d5f67,0xbbc5ef00,0xbaeaf72f,0x3904dee9,0xba81364e,0xbca5fbec,0xbce74e65,0xbceed758,0xbd101312,0xbd17a9c6,0xbd034013,0xbccee038,0xbc39d3ee,0x3bcd62c0,0xbc19a104, +0xbcf1e265,0xbd912e0d,0xbd2a7f59,0xbd03839b,0xbd02c89b,0xbc90bb17,0xbc8ded1f,0xbb4d9454,0x3bda7b73,0xbb7d78e8,0x3bd6c791,0x3b3401db,0x3b0926f5,0xbae956d9,0x3bb6c128,0xb9a02cad,0x3bcab538,0xbaea9bff,0x3c0f8dff,0x3b981132,0x3bcb9d1c,0x3b080282,0x3b9cd82c,0xbb64c74a,0xbc32af42, +0xbcb90dcc,0xbca1a627,0xbc623f82,0xbc46844f,0xbbb2b403,0x3acbb379,0x3c1e5f91,0xba2ae3cf,0xbc2bc071,0xbc924407,0xbcdd8e8c,0xbcfdaa80,0xbd23a39c,0xbd0538ea,0xbcdefb67,0xbcb70c02,0xbc78039a,0xbc827734,0xbc4beafe,0x3cd79af1,0xbb931074,0x3be25567,0x3bcf8068,0xbb4a70bc,0x3abd628b, +0xbc1ca995,0xbc3601e0,0xbbc56403,0xbc762ddf,0xbc84a925,0xbc853037,0xbc0c2382,0xbbf9b72a,0xbc5d113a,0xbc0ce57f,0x3ba16d8c,0xbb5b9654,0x3a7b8b7b,0xbad57166,0xbaca9d6f,0xbb539455,0xbbc74cb1,0xbbe0192e,0xbc447611,0xbc8715ca,0xbcbb0dab,0xbced7ebf,0xbd145b39,0xbd33f05c,0xbd1bab3b, +0xbd0730a4,0xbcde59cd,0xbcb2d76f,0xbc95904e,0xbcbab0b6,0xbc25eb7d,0x3be7db98,0x3cdd9863,0xbc8c62f8,0x3b9af40b,0x3cd88faa,0x3ce29a2b,0x3ce4aac4,0x3cd48594,0x3ce898bd,0x3ced1f70,0x3ce39787,0x3a40e4ab,0xbc8b8230,0x3cd4451b,0x3b2a0098,0xbc412e26,0xbc8131e0,0xbc6179bf,0xbc6e108b, +0xbc644dc4,0xbc5ea763,0xbc512e6c,0xbc3dddf1,0xbc794844,0xbc939977,0xbca82aea,0xbcbccd35,0xbcce6328,0xbcf11e55,0xbcd3da88,0xbcc7f331,0xbcbbc30b,0xbcb0b207,0xbcba2701,0x3cfa2577,0x3cd52519,0x3d2730bf,0xb9fc0153,0xbd0e3c24,0xbd7cf845,0x3c847007,0xbcd3eb81,0xbd69bc6b,0xbd77feb6, +0xbd781156,0xbd645c09,0xbd790864,0xbd7ac7da,0xbd7b8d22,0xbcd5d277,0x3c52283c,0xbd835000,0xbcf4b2ab,0xb9a2b245,0x3d22123a,0x3cd93746,0x3cfd7888,0x3cfd9779,0x3cfed4b0,0x3cff09b1,0x3cf747d3,0x3d01111b,0x3d0270da,0x3d09268b,0x3d03c862,0x3d064d68,0x3d0d200d,0x3d0b2e28,0x3d03898f, +0x3cd7b761,0x3cf2fbb9,0x3ce79fee,0x3d0a2fae,0xbd25f84f,0x3caf3d56,0xbad6ed44,0xbb58c440,0x3c5bd8fb,0x3c2f4252,0x3cb49b8b,0x3c91496e,0x3b1cfc3a,0x3c8e3d96,0x3c8b8af5,0x3c3f1654,0x3a8f79c5,0x3beda95a,0x3c250fa6,0x3c43dde6,0xbd11a3d4,0x3ce45aec,0x3d118d8b,0x3d1256d7,0x3d1dd247, +0x3d201a12,0x3d1f5a65,0x3d12195e,0x3d216a31,0x3d297520,0x3d36b274,0x3d1a86d3,0x3d11f2f0,0x3d1967a9,0x3d14efca,0x3d0399af,0x3c9b0710,0x3cd0499f,0x3d202be6,0x3cfad030,0xbbb2335f,0x3b2ac425,0xbc13e28d,0xbb706d83,0xba8b0186,0x3c2aa63d,0xbb96ef0a,0x3c1f25cc,0xbbb32820,0x3ca8d90f, +0xbaedd0ea,0x3c140b6b,0x3a80ce0f,0x3c614ca5,0x3c1e82c5,0x3b855c83,0xbbd4fab0,0x3c4c753a,0x3d2b46bf,0x3d1aef5f,0x3d3a4f22,0x3d36e854,0x3d3dee3a,0x3d311b08,0x3d4d9133,0x3d507063,0x3d71ce2d,0x3d4979da,0x3d537223,0x3d803fc8,0x3d6d9cf4,0x3d3eca1b,0x3c83259e,0x3cf17b4f,0x3d2a8812, +0x3d23e096,0x3bbe6df0,0x3c78870b,0x3c7d5964,0x3bd42c64,0x3c357365,0x3c906ea7,0x3c1857b9,0x3bbed55f,0x3c514b08,0x3c493e87,0x3c92c8e0,0x3c1a6359,0x3c9e43e7,0x3cd8e7b5,0x3b5bf286,0x3c850291,0xbc1b23c2,0x3c2586be,0x3d3fce73,0x3d458a64,0x3d72e828,0x3d7ebaba,0x3d7ec222,0x3d62d63c, +0x3d83f161,0x3d8f0d71,0x3da8de21,0x3d686d2f,0x3d51b88e,0x3d7ac464,0x3d516db6,0x3ced61f0,0xbb851cb6,0x3c8b4e08,0x3cdc16b9,0xbc26fc86,0xbd123df5,0xbca10960,0xbce941c5,0xbc832085,0xbb961b15,0xbb8f82e6,0x3c122e59,0x3c80d850,0x3bd4fc5f,0x3c767a0c,0x3c688e22,0x3baf3b9f,0x3c19004b, +0x3c131a81,0xbbf7f82e,0x3bbfb1d3,0xbc9eb914,0xba89769a,0x3d37cfd6,0x3cabeb70,0x3c9a4d65,0x3b8e9aba,0x3bbb1864,0x3c6fe333,0x3cf3dda3,0x3cfd8124,0x3ceffc38,0x3cbf16fb,0x3d057344,0x3d114732,0x3d96742b,0x3da7e910,0x3d42f7bc,0x3cc1805d,0x3af162d8,0x3cae32e5,0x3b00e061,0x3ba410f8, +0xba9ed8f4,0x3b82166f,0x3c85487b,0x3cbd5c5b,0x3c33fb08,0xbadb0286,0x3b6f0086,0x3b05a2d1,0x3c0cb985,0x3c333e86,0x3ca2f300,0x3c943ebd,0x3afc0847,0xbabe87bf,0xbcb0cbf0,0x3bed1693,0x3d24038a,0x3d39042f,0x3d9d067d,0x3cdd6a7a,0x394ed90f,0xbc5d4387,0xbce3abc1,0xbcef14c8,0xbc701899, +0xbd81284e,0xbd903d54,0xbd82d1c5,0xbd4f450e,0xbd617638,0xbd9015ad,0xbd0a7fe5,0x3d6b227c,0x3d54a167,0x3c8a7c81,0x3cff97d4,0x3d077151,0x3d4cd0f4,0x3cded3f9,0xbbb2d7f3,0x3bb0df83,0x3bb78c42,0x3bdc6e63,0x3bcf0ad5,0x3c124d8b,0xbc256d4b,0x3cb8681a,0x3d05ea2c,0x3a0e922e,0x3c2496d0, +0xbb053903,0x3bbc2d31,0x3b97f469,0xbc298353,0x3b49f861,0x3ce548ba,0x3d5ec847,0x3d8cd75f,0x3d8cd197,0x3d6b3fa9,0x3d0e1f3f,0x3d3bdeb3,0x3d89ebc4,0x3d848df6,0x3e0538b8,0x3e11b98e,0x3df1b0a8,0x3d9980b4,0x3cacf283,0xbc87287a,0x3a70846b,0x3c5341cf,0xb919c915,0x3c9725d6,0x3cb4d8a3, +0x3ca7b7f4,0x3c9f2272,0x3c3724d8,0xba886c5a,0x3c3ca1de,0x3c46daef,0xbba7277c,0x3c856993,0x3c8484a8,0x3bd69768,0x3c10d57f,0xbc6918ec,0xbbb43c89,0x3c122ae3,0x3bf99a03,0x3baeb493,0xbbe35581,0xbce86ac1,0xbd70f9d8,0xbd6a524e,0xbd372ef2,0xbca8e440,0xbba6720a,0x3c8ab524,0x3ceedfa9, +0x3db71e21,0x3df21b30,0x3e01c0bc,0x3d4d2ccf,0x3da3dd8d,0x3c1ceaf9,0xbd3d9a5c,0xbbeab392,0x3c035569,0x3bdff989,0x3c1cd9dc,0x3b61c8ba,0x3a0b76d3,0x3c16158f,0x3aa01b74,0x3b967618,0x3c04ddff,0x3c4e2b6a,0x3c83dae9,0x3c78bac6,0x3c1f4e2d,0x3c5c412b,0x3b5e6701,0x3ca01ed0,0x3c91d6bd, +0x3bc4c7ab,0x3c15e15b,0x39059ca9,0x3c7124c9,0x3d14dfa6,0x3d5556d3,0x3d75ca10,0x3d9be83c,0x3d332d73,0x3d1651dd,0x3d1eb3f4,0x3d9169b1,0x3da3c80a,0x3da35463,0x3d943df9,0x3d128083,0x3bb0d116,0xbcb0e129,0x39fc9b0e,0xbb297ff1,0x3c08ccf5,0x3c905e48,0x3c785b5a,0x3ca397fd,0x3c852b1c, +0x3c93ea23,0x3c2af1f4,0x3c262b07,0x3c45407b,0x3c4b06aa,0x3bf0577c,0x3a839043,0xbbb0aa26,0xbc03aaf3,0xbc071b13,0x3c009b4e,0x3c72bc5c,0x3cacea5e,0x3c01bbbd,0xbb5ccad5,0xbc35fbd0,0x3b0646a8,0x3c22a20b,0x3c770427,0x3c8d407f,0x3d0173e0,0x3d593111,0x3d5d0c90,0x3d5747cb,0x3d50505c, +0x3d1a5ac6,0x3d0c4917,0x3cb31e78,0x3b1479d8,0x3c07ab51,0xbb864bbd,0x3aa4a538,0x3b0c7177,0x3bc6e9d3,0xbb07f2d5,0x3c14e089,0xbb2a2e34,0x3c8211c3,0x3ac308ae,0x3c33235f,0x3b9d3f81,0x3c3cc785,0x3c0b2ee1,0x3c1bb64b,0x3aaf05c1,0x3caebaf5,0x3cf09d0b,0x3c75b732,0x3c538df4,0x3c8bc3dd, +0x3cc3c9b0,0x3ce00a37,0x3cf51c0d,0x3cfd8f89,0x3d041ed6,0x3d0359b9,0x3cfb209c,0x3d08c5f9,0x3ce86214,0x3cd849fd,0x3ce30f21,0x3ccfae17,0x3c1c93ad,0x3c03b234,0xbcbaa720,0x3c069b6d,0xbb3f0999,0xbb1dddb2,0x3c06cf3c,0x3befbfd6,0x3c87081a,0x3c633a73,0x3ad5c420,0x3c3f2489,0x3c692945, +0x3c30ab91,0x3ae972f7,0x3baf0aae,0x3c3219b4,0x3c362807,0xbbdc7504,0x3c5f7d91,0x3c0f0ba7,0x3c3037e9,0x3c355be5,0x3c1cd8b1,0x3bf20be1,0x3bc435e1,0x3c025dc1,0x3c349b96,0x3c6ea82d,0x3c99df8f,0x3cbfabaa,0x3ce36817,0x3ccb3b4d,0x3cad887a,0x3c8d7aba,0x3c52e739,0x3c80d45c,0x3ca9facc, +0xbb69c6b2,0xbcb1be64,0xbd0cff85,0x3bfa41f2,0xbc95ae44,0xbd11422b,0xbd1c92bd,0xbd221339,0xbd1402ce,0xbd2bd3fa,0xbd36cd01,0xbd37003f,0xbc967e5b,0x3bd90e1a,0xbd24b973,0xbc950aa6,0x3a8ebcb7,0x3caac1aa,0x3c74164f,0x3c832218,0x3c78fec2,0x3c7866d5,0x3c7bfaad,0x3c747b44,0x3c8ae550, +0x3c942045,0x3c9bb138,0x3ca21ffd,0x3ca6ab43,0x3cb53d02,0x3ca46f09,0x3c9ec1cb,0x3c98efab,0x3c94527c,0x3ca84596,0xbc9fb7d0,0xbc6210f5,0xbcf2229c,0x3c9d3a4c,0x3d37ca35,0x3d482873,0x3b537725,0x3d213661,0x3d5b2060,0x3d5e0eb0,0x3d5a8e14,0x3d3bd249,0x3d579733,0x3d587d88,0x3d4b17a6, +0x3d280f84,0x3c1fab97,0x3d57666c,0x3d2d1b38,0x3c9e1db1,0xbcfd6d11,0xbc923d0d,0xbcab48e2,0xbcabe2b0,0xbcb1a959,0xbcb263cb,0xbcb03bcc,0xbca49043,0xbca5b6dc,0xbcb0dbcd,0xbcc01ed2,0xbcc45a36,0xbcc4a6d1,0xbca524ff,0xbc8f1979,0xbc5e2118,0xbc7fa199,0xbc71888b,0xbc797293,0x3d31172f, +0xbc3cef87,0x3c4767df,0x3c3772b2,0xba394bfa,0x3bbab901,0xbc230001,0xbb80f478,0x3c46cf06,0x3830b6e3,0xbb437de5,0x3a632876,0x3c4e57f5,0x3bf5d616,0x3c256bcc,0x3712a1bc,0x3d1c634e,0xbc8eda30,0xbce4796f,0xbcd12815,0xbcea3ee6,0xbcf6b829,0xbcf29f3a,0xbcdee1cd,0xbcb28604,0xbcb10d33, +0xbcce1a7c,0xbcf72d69,0xbcf86eb2,0xbcdfea59,0xbc89659a,0xbc10d87e,0xbadb46d5,0xbbd00447,0xbc56aa7f,0xbbd91627,0x3ca4c0ef,0x3b87e238,0x3c605da6,0x3be04f5f,0x3c038e2f,0x3c439fc4,0x3c4f95b5,0xbbb7330f,0x3c81c5d9,0xbc26abfa,0x3c7c157c,0xbae40dbb,0x3c8e0997,0x3bef6664,0x3c30ca90, +0x3bc802f0,0x3c5f4a42,0xbc371b95,0xbd180680,0xbcf8eef0,0xbd0b1e08,0xbd14f8c7,0xbd14070a,0xbd05621e,0xbcc61127,0xbccd29b3,0xbd097e29,0xbd3eb95b,0xbd4bf8e3,0xbd390864,0xbcb01fde,0xbb91a82e,0x3c4fb5e6,0x3b42ba6b,0xbc26bd86,0x3ab90e7a,0x3cc6e28a,0x3a9dbd71,0x3bbae408,0x3bbdc112, +0x3ba14c6d,0x3c68f617,0x39e0b3d0,0x3b0dab21,0xbb158c1e,0x3c39a132,0x3bf740e0,0xbbf1d0fb,0x3b81e82b,0x3af95c7c,0x3c925223,0xbc19210e,0x3c141d82,0xbc96af62,0xbd418cc9,0xbd2de243,0xbd41d99e,0xbd504aaa,0xbd4377f1,0xbd19c5df,0xbcaa530a,0xbca2e5ab,0xbd0b2486,0xbd560b31,0xbd5add40, +0xbd2e06a7,0xbb8fb9a1,0x3cdb4c10,0x3d4d1dd8,0x3cfba64f,0xbda24954,0xbcd7a6cd,0x3c956560,0x3c0c6f79,0x3c048167,0x3bbc7d59,0xbb8b948f,0xb97012d4,0x3bbb76fd,0x3c5b4fa7,0x3beb93a3,0x3c1dfc07,0x3c375eba,0x3c8b5839,0x3c22ed0d,0xba63cd05,0x3bd322cd,0xbc74b1e3,0x3bbd25ad,0xbc206809, +0xbd3134a6,0xbcbdc4c4,0xbce8ad8b,0xbc226286,0xbc11b086,0xbc8ae863,0xbd00bd65,0xbd4e2b90,0xbd5c294e,0xbd827059,0xbd7aa8ef,0xbd54e983,0xbd213ae1,0xbd5192c1,0xbdb451b0,0xbd840bf2,0xbda87278,0xbcd7a6f5,0x3b2f296f,0xbc290177,0xbc8b9b43,0x3c1c4186,0x3c36d388,0x3c21c70b,0x3bc08632, +0xb7321d03,0x3b182920,0x3abad78b,0x3b7a17c9,0xbb73ee16,0x3c061d69,0x3c35d6c5,0x3c11bc25,0x3aa031a1,0x3c69aa88,0xba33957d,0xbcd7991f,0xbcd1aa75,0xbd4fe943,0xbd2253a8,0xbcebef76,0xbc2d0977,0xbb87850b,0x39c81187,0x3bfc7c92,0xbcf4b700,0xbcf7b841,0x3b4db275,0x3c55af1e,0x3b90ed84, +0xbce832c7,0xbd6bb3c8,0x3d95e20b,0x3d4b22a0,0x3d5a8487,0x3d3920a8,0x3d6faea6,0x3d26c9a5,0x3d0291e3,0xbb9bf39f,0x3c163bf9,0x3af103c4,0x3b5febd4,0x3a70e796,0x3b9a863b,0xbb2bc8d1,0x3caac251,0x3c9cb6b7,0x3c46dc29,0xbbfba5cb,0xbba94fe5,0xbc53098c,0xbcd8bf5a,0xbc25302d,0xbc087c57, +0xbd14de2d,0xbd66efab,0xbd6726fa,0xbd8569bc,0xbd85e39f,0xbd4761eb,0xbdae8819,0xbdb6a101,0xbda9a8d2,0xbc724830,0x3cf524c3,0x3cf63d6c,0x3d9edd19,0x3c9bdc5c,0x3c5ec96a,0x3b27001d,0x39e0db03,0x3be133f9,0x3c4a798d,0x3c9d33e5,0x3c9332e2,0x3c710a6f,0x3bf93287,0x3b13d63d,0x3c082542, +0x3bc39cdc,0xbbff6bef,0x3bbf96c2,0x3c37f75a,0x3b508099,0x39c6066d,0x3c1a65cd,0xbc5100ad,0xbd0e8dd4,0xbd22852a,0xbd454cbe,0xbd4f183b,0xbd2b6517,0xbcbd3deb,0xbca0db46,0x3aa0d3e4,0x3d3de28a,0x3d337b15,0x3d35b0df,0x3c43a20c,0x3d346224,0x3d1bb620,0x3b1e209d,0x3ceea0e9,0x3b028717, +0x3d39885f,0x3d5fa585,0x3cdfb37e,0x3ccae59f,0x3cd2f1e1,0x3c8f9abe,0x3c4fc1a8,0x3c64c117,0x3c03dc6e,0x3bf96a4d,0x3bcdbd84,0x3c12e227,0x3c414992,0x3ca62c23,0x3c950c03,0x3bc9a895,0x3bbe262a,0x3ca71675,0x3c0ef29e,0x3c270be6,0x3c8a4bde,0x3c31dfb1,0x3ca3b261,0x3cbbfe55,0x3cb7e22e, +0x3d1429c7,0x3d3a4d7c,0x3d6a290f,0x3cc6e706,0x3b5ebda3,0xbcb581aa,0xbc999b3e,0xbbececd2,0x3bf4c151,0x3c189c54,0xbb0e50a0,0x3cbca490,0x3cf44a14,0x3ca3b0a0,0x3c9068e1,0x3c908726,0x3c5ac8b0,0x3c80dbef,0x3c7786fb,0x3c4cdc58,0x3b9c081c,0x3c4087cc,0x3c380d15,0x3c1ebef8,0x3be439ce, +0x3c15e4c2,0x3c62740f,0x3c216751,0x3ac4d164,0x3bd1c5e7,0xba8b0c59,0xbb3f0c49,0x3aab0992,0xbc49fa1f,0xbc39f762,0xbb9f3efb,0xbac3f8e0,0xbb488e8f,0xbab001c9,0xbca0184d,0xbce3bb0b,0xbcf763b3,0xbc9fc82a,0xbbd1f7c2,0x3c164331,0x3b913a6c,0xbaaa3ccd,0x3c397fa9,0x3cd63158,0x3c70e9ba, +0x3c89ad06,0x3c598f9e,0x3c2d301f,0x3bff91e9,0x3c5830f6,0x3c0d57a3,0x3ca4b2d3,0x3c01deed,0x3c6ad1b4,0x3c20b428,0x3c67b79b,0x3c409304,0x3c5debea,0x3c895bff,0x3cd89f3c,0x3c903907,0x3c00776f,0x3c5932f0,0x3c5a355a,0x3c6eadb7,0x3c5d197e,0x3c409cf9,0x3c109209,0x3bae415f,0x3a9b44fc, +0xba50afca,0xbb2c8bae,0xbbee8b72,0xbaf13ae5,0x3a57c61f,0x3b041b5e,0x3ba9dde5,0xbad79446,0x3b23dd70,0x3c980fd7,0x3b953809,0x3c6ae14e,0x3c70ee90,0x3c48f8d1,0x3c6a4da9,0x3c30a7e2,0x3c597463,0x3caec039,0x3c834521,0x3c4f7c67,0x3c81a8ed,0x3c8ce487,0x3c346526,0x3c100b18,0x3b10dd94, +0x3c4f5999,0xbc1fccf9,0xbc26c640,0xbc1f1977,0xbc48aaab,0xbc3b19b0,0xbc390cb6,0xbc2f6373,0xbc627373,0xbc7c8304,0xbc8551ca,0xbc854153,0xbc8628b1,0xbc8b5bad,0xbc66b976,0xbc2f7965,0xbbfcce54,0xbb6111c0,0xba2a73dc,0xbb68a77e,0x3c9cd633,0x3cf1ae4f,0x3cc3f65c,0x3c71118f,0x3cf275e9, +0x3ce69bfa,0x3cf02657,0x3cf73100,0x3cdd1e9f,0x3cfc7e20,0x3d04f5e6,0x3d03a384,0x3d01ee82,0x3c765ab1,0x3cedd91a,0x3ce7a661,0x3c8336bf,0xbbff2e93,0xbb1bc32b,0xbb799b4c,0xbb6e2b6b,0xbb92c802,0xbbb05e73,0xbbbecb07,0xbbb9557f,0xbbb1815c,0xbbb4137c,0xbbc40487,0xbbc8cab0,0xbbce312a, +0xbb9cf448,0xbb8030a0,0xbb4a0fe2,0xbb112991,0xb940eef5,0xbb460200,0xbbb08e48,0x3b9b397d,0xbd0fe6b5,0xbd363e79,0xbcb85912,0xbcd8a40e,0xbd2a4afb,0xbce7b19a,0xbcfb5a34,0xbcf699a7,0xbcbd362d,0xbcdd63a0,0xbcd9ce89,0xbcc016c8,0xbd2a503e,0xbce4d906,0xbca7b1bc,0xbd283a5d,0xbd0bec4b, +0x3bf05141,0xbb1b962c,0xbad3d9d4,0xb9abd5e1,0xbad590f6,0xbb05fe59,0xbb544abf,0xbae9bb8f,0xbac8c0f9,0xbaccdbb8,0xbb6bc47a,0xbb9e3b84,0xbba43dc6,0xbbdb470d,0xbbec57d9,0xbbce3d38,0xbbcefa9f,0xbbf664e4,0xbc347c47,0xbd10a7c1,0xbc51a4f6,0xbcc96a2d,0xbc9c269a,0xbc31f023,0xbc0ec980, +0xbba5c0b6,0xbc583ac3,0xbcc20090,0xbc7d8365,0xbc182e70,0xbc5a660f,0xbc659737,0xbc1ebd49,0xbc882a11,0xbc076254,0xbd049e69,0xbbc5f8a9,0x3ae4153c,0xbb9454fd,0x3b1933bc,0xbaa4aca1,0xbabf49a1,0xbb91d18c,0xbad91117,0xbb46018d,0xbbd47d7d,0xbc3cc835,0xbc67f0ee,0xbc4f0606,0xbc85ece2, +0xbc8e4f15,0xbc5c6ba2,0xbc6a3c9b,0xbc33a453,0xbc2aa884,0xbcdb7117,0xbc99a2e5,0xbc9a521d,0xbc5973dd,0xbc19801b,0xb95d0f9f,0xbc49c9aa,0xb8ec2a93,0xbc8d9fbc,0x3b84a055,0xbc1f5d21,0xba3169c5,0xbc375fcf,0xbb6c57f9,0xba9c7d99,0xbbb1f5ac,0xbcb564d7,0xbbcecdc8,0x3c1057c2,0xba84f9c3, +0x3c0a65ed,0x3916be57,0xba83660a,0xbc1ccde4,0xba3a15e9,0xba652fbf,0xbb7e0cb9,0xbc410b75,0xbc9a47f1,0xbc8f2cf3,0xbcfcecd6,0xbd10c08f,0xbcac12c3,0xbcb69809,0xbc4c17a8,0xbc85b5fc,0xbce4b9d3,0xbcad1931,0xbc5925bd,0xbbb81e2d,0x3b66c87a,0x3c7c6b43,0x3bbcc24e,0x3b2931eb,0x3c155f70, +0x3c354f09,0x3c19de3e,0x3c1029d8,0x3c123ab1,0x3c864b14,0x398fc13c,0x3c1378ca,0xbcb1e270,0xbae6d98c,0x3c3c6138,0xbbac2050,0x3c6116a0,0x3b54ace5,0xb96f5f3d,0xbc486f62,0xbb56b0b3,0xbb606fbf,0xbc606a29,0xbce132c1,0xbd19dcf0,0xbd01a384,0xbd4d184f,0xbd5a0b62,0xbce620f4,0xbce1104d, +0xbd0c33ad,0xbd6b1f35,0xbd80248f,0xbd15d095,0xbcdaecf7,0xbcd4bd3e,0xbc91c37e,0xbbefb7e0,0xbb94e7d9,0x3b9fc547,0x3bd9089a,0x3c1059b4,0x3c491afa,0x3c66e395,0x3bd3fcdb,0x3bf8e8c3,0x3ae85a98,0x3c018862,0xbca850bb,0xbc9d6a99,0x3cceaff9,0x3c972cd2,0x3d0a0dc3,0xbc64071e,0xbc42fcba, +0x3c7f25b5,0x3ca4c1f4,0x3c8260a2,0x3b92e6bf,0xbb53398b,0xbc1afe72,0xbc823a32,0xbc9f6ac5,0xbcf0fec9,0xbd428201,0xbd3a8142,0xbc8b09c4,0xbc9268aa,0xbd24d41e,0xbccaf10d,0xbcac2c6c,0x3acc423e,0x3c5626db,0xbb9261a8,0x3a7dd7bb,0xbb6a75ef,0x3afd9cbc,0xba9ed534,0xbaa4c6aa,0xbb592758, +0x3c73a927,0x3c735429,0xbabc5821,0xbbbb0793,0xbc982196,0xbc80de58,0xbc4d8450,0xbcda5580,0xbcb7be57,0xbc8076d1,0xbcaba1d6,0xbd38597e,0xbd2493a3,0xbd0e0de4,0xbc995b96,0xbd231eb6,0xbd212591,0xbce7d918,0xbd12b1f6,0xbd0b4921,0xbce873f9,0xbd12051f,0x3d4aff39,0x3d662484,0x3d1ac46e, +0x3d3ba222,0x3d217f03,0x3d020805,0x3c770b36,0xbb9fdd45,0x3be3b7a4,0x3bad4724,0x39b70d5e,0x3b451278,0x3bda73d7,0xba267703,0x3c2eb3c1,0x3c5f4b13,0x3ae8277d,0xbb0932da,0xbc9937c2,0xbc12a7d0,0x3b30c973,0xbc4158f1,0xbcac3dbe,0xbd10d713,0xbd0ecbf1,0xbcf209d0,0xbbd457b2,0x3be1e7f3, +0x3cbd20a8,0xba214a46,0xbc8e0bed,0xbd2e52cd,0xbd44ed45,0xbd2e653e,0xbcf1809c,0x3c9c0137,0xbd6ea8ce,0xbc8e991c,0xbae2fec4,0xbaba8a8c,0x3c0d1ca5,0x3c700493,0x3cb754ef,0x3cac12cd,0x3c3382df,0x3b777d7d,0x3b161520,0x3b60f0e6,0x3aa79a24,0xbbdea3d5,0x3ad7fb35,0x3a07fe24,0x3b3c5160, +0xbaf4301e,0xbc933662,0xbc677fea,0xbc4d009a,0xbcd1801b,0xbd00156b,0xbd281345,0xbd357d83,0xbd40ad05,0xbd540ead,0xbd6f61e1,0xbd5ff7b7,0xbd6fadea,0xbd00c1fb,0x3c63d972,0x3c9872dd,0x3bd0a0b5,0xbd33ae71,0xbd73bc8d,0xbd428afa,0xbd3dc485,0xbc752457,0x37af4b4d,0x3b6526e1,0x3bf9eed6, +0x3bea4d62,0xba51e939,0xba2843f5,0x3bfcbdd9,0x3c25ec2a,0x3c1bfc39,0x3c1c565e,0x3bb63781,0x3c931c08,0x3c928a2e,0x3c4290ee,0xba81bbf1,0xbc3ada6c,0x3b0f1f8c,0x3b25602c,0x3aed27f2,0x3c1777c4,0x3b86106a,0xbb9b68df,0xbc8ab995,0xbc67d0f7,0xbc5a675c,0xbbe2b56c,0xbc453e27,0xbc74ad57, +0xbc1a04e4,0xbccbba09,0xbd08b037,0xbd267599,0xbd540ad1,0xbc85390d,0xbce2024b,0xbc325d0e,0xbc334c4f,0xbb2dba18,0x3b362c37,0x3c41f741,0x3bfea5c6,0x3c84f4f8,0x3c85093e,0x3c3f9d84,0x3c2e0a7a,0x3c24c545,0x3bbdb1f7,0x3a325cfe,0xbb28ed8c,0x3b0ecd7f,0x3ba13fcb,0x3c09aa59,0x3bf921b7, +0x3c49750c,0x3c2df347,0x3b82542f,0xbc428557,0xbc43f414,0xbba62338,0x3b4ec1ec,0x3bb63568,0x3b91d714,0xbc72c4b9,0xbc7834dd,0x3be356a9,0x3ba6672e,0x3b901687,0x3b9ac32d,0xbc52d5f6,0x3b415d8f,0xbb980237,0xbc529bb6,0xbc221352,0xbc43259f,0xbbfcd50c,0xbb5d2ffb,0x399f3c55,0xba1e8908, +0x3b7a2e78,0xb908c886,0x3c0c9cc6,0x3bf66668,0x3c4c7b89,0x3c17b03d,0x3c0e5866,0x3b879810,0x3b978b32,0x3a9095b2,0x3c133728,0x3c8bc431,0x3c7bdb6e,0x3ca27af9,0x3c8a46c6,0x3c69b6a3,0x3c2e59d3,0xb8c5eb96,0xbc33d3ab,0xbcabe15b,0xbc67c48f,0xbc29b3c4,0xbc127c02,0xbbde7cf5,0xbb477ed8, +0x3b43b6f6,0x3a9a3987,0x3b18e765,0x3a0d958e,0xbab9cc71,0x3bc0831c,0x3b0ac930,0x3bc10ad3,0x3c105968,0x3c27b9d1,0x3c316763,0x3bb7e8a1,0xb9f5668b,0x3a21a2f7,0x3b6c4c25,0x39c5f232,0xbad30867,0x3904e10a,0xbb846cbd,0xba188ac4,0xbbfcdc99,0xbb0d45ab,0xbb16d18f,0xbbc40fdc,0xbbf85789, +0xbc16b57b,0xbc229b5d,0xbc261af7,0xbbd49b18,0xbb48077f,0xbb2815b6,0xbb463504,0xbb9104f0,0xbba6d1d6,0xbb2f9cc2,0xbb1efe98,0xbb05af46,0xbae22bfa,0x3b730bdf,0x3bd51145,0xbc547c2c,0xbc6d69b0,0x3a8c60ce,0xbc068dd3,0xbc571dff,0xbb14708a,0xbb481534,0xbb2369d9,0x3a07dc73,0xbaaf05e9, +0xbb03a308,0xba3ab6a2,0xbc7fd341,0xbc237656,0xbae80f6c,0xbc81778a,0xbc48aba6,0x3bc56945,0x3b3d980a,0x3b585861,0x3b5b28ca,0x3b4d27dd,0x3b392489,0x3af488b7,0x3af5fbf5,0x3ac68a55,0x3b060878,0x3af3932f,0x3b059f60,0x3ad1fa5b,0x3ad93f9d,0x3b0852bc,0x3b43bdaf,0x3b55dbf4,0x3b8e719c, +0x3c8439be,0x3c4ba629,0x3c25d7de,0x3cfd0863,0x3cc02d8b,0xbc7481ac,0x3d03c33d,0x3cd44145,0xbb40c628,0xbb94ff43,0xbbbd26a8,0xbc28fe07,0xbc127566,0xbc1a79b6,0xbc436d04,0x3cda70e2,0x3d0ad42e,0xbc76cf8e,0x3ccb6a35,0x3d0aee34,0x3c6ee62a,0x3c6c6c29,0x3c80d23e,0x3c8066e3,0x3c7388ef, +0x3c7536af,0x3c85a019,0x3c81ad4c,0x3c812386,0x3c81e77d,0x3c855549,0x3c91ee2b,0x3ca5092e,0x3cb67e77,0x3cb17d1a,0x3c91f96d,0x3c7e9b77,0x3bf4aab7,0x3c528ea0,0x3bea06d7,0x3c46098d,0x3c5dfd46,0x3c46cbc5,0x3c86018a,0x3c895e4d,0x3c7f0938,0x3ca7bb21,0x3cbb109a,0x3cb83a3e,0x3c8ac004, +0x3cb58fbf,0x3c79dfe1,0x3c7ff0df,0x3cd71dbc,0x3c9adef7,0x3c69a6c8,0x3cd52380,0x3c8ba1e1,0x3cb3ae80,0x3cb22bad,0x3c9d149a,0x3c955b65,0x3ca5a057,0x3c930c6d,0x3c91b457,0x3c993869,0x3c943fa0,0x3cb15f17,0x3ce38b60,0x3d109618,0x3d09f371,0x3cb01e85,0x3c883acb,0xbba3ede0,0x3aa05fac, +0x3c46413f,0x3bdc1de2,0x3b1f5adb,0x3bf73fe1,0x3c2ed7e3,0x3c7e326e,0x3c35ba36,0x3b69306a,0x3c67a8a7,0x3bc82ff3,0x3c38b1e8,0x3c94c8d1,0x3c8bb35e,0x3c975ad6,0x3c9f48a4,0x3ca8b44c,0x3cdd48eb,0x3cc946f0,0x3c8d71c3,0x3cadb155,0x3cb5f717,0x3c8f0127,0x3c8960d8,0x3cbfede2,0x3ca09a44, +0x3c9af31a,0x3ca40c99,0x3cb07939,0x3d06d146,0x3d3ed569,0x3d7f6713,0x3d62cfee,0x3cac727f,0x3c11a0bd,0xbc9ab2a7,0xbc692cdf,0xbc3b5bef,0xbc6221ac,0xbc3dce9a,0x3a450716,0x3b94d98d,0x3c23b0ce,0x3b4e43fc,0x3b77a3da,0x36b2883d,0x3be6469d,0x3c0f040f,0x3bd20d40,0x3c07385c,0x3c2e5abd, +0x3caed479,0x3c643f0a,0x3cbf4d8d,0x3ce0f415,0x3cc0af51,0x3d04b92e,0x3d0c9141,0x3cdc023f,0x3cd8123b,0x3cff0d51,0x3cb40078,0x3c9f278d,0x3ca49895,0x3cb2c737,0x3d147a6d,0x3d7145fb,0x3dadba12,0x3d9617d1,0x3c89c738,0xbb071ef4,0x3c36099d,0x3cb11b43,0x3cdb5cb8,0x3c8deee7,0xbaff6bde, +0xbbf21b99,0xbb2a0b10,0x3c0f6209,0x3b45da13,0x3be71de0,0x3ba68109,0x3bfb1d2f,0x3c41b2bd,0x3c9f5b1f,0x3c48a882,0x3c33bf70,0x3ca103d4,0x3c87f058,0x3cbed3bf,0x3cabe961,0x3b339343,0xbafe3f07,0xbbdcf4d3,0xbbb181ec,0xbc8c0723,0xbd0f09d6,0xbca33e46,0xbc3a339d,0xbc8e7272,0x3bf3ef66, +0x3cc15c4a,0x3d0a6e3e,0x3cefe123,0x3cbcbae7,0x3c3f16fc,0x3c5b6556,0xbd27a277,0xbcbc1581,0xbc0e1463,0xbbe69473,0x3c3a1b2d,0x3ca4b839,0x3c6c0791,0xbba93dca,0xbb09accb,0xbb42bc65,0x3b6d571b,0xbafbb11b,0xba989ead,0xbb61623c,0x3c92ebf3,0x3cbda1c8,0x3c91135f,0x3c29c68b,0x3ba9465d, +0x3c5ef5cb,0x3cd4dedd,0x3d10ae48,0x3d2695cd,0x3d0b683f,0x3d070c82,0x3cccf8a7,0x3cd30fb2,0x3c04933c,0xbc7273dc,0xbcdbcc99,0xbc2a36b7,0x3d1a739e,0x3d596b10,0x3d4b9b4a,0x39ad4675,0xbcba6101,0x3d90801b,0x3dabb1a8,0x3d62d832,0x3d4344eb,0x3d4ac563,0x3cf5b6b7,0x3c90bacc,0xb920e07b, +0x3c104a26,0x3b24dca1,0x3a354f69,0x3b0e8efd,0x3b24fcef,0xbae97a43,0x3c18626c,0x3c6b42f9,0x3ca9e636,0x3bc78676,0x3c0a8ff5,0x3b0d2b8c,0x3a30ec51,0x3b2f5b04,0xbba6394c,0x3a0fbe4a,0x3c6b673f,0x3cd91ac3,0x3d1d69e9,0x3cd35efb,0x3becb5c2,0xbcdd6670,0xbc496d03,0x3d7ce914,0x3d5099e1, +0x3d7a8f88,0x3dced54f,0x3d960cd0,0x3d5b17b6,0x3b3ee5b6,0xbb826add,0x3ca01155,0x3c51b2f2,0x3ce74178,0x3cc0edcd,0x3cb5c085,0x3bfa9d95,0x3ac0a369,0x3bea28bc,0x3b77adde,0x3b0f09cc,0x3c02b656,0x3c1087d0,0x3c24b09d,0x3ca6c684,0x3bfb2788,0x3abe4517,0x37d61508,0x37930b16,0x3a2c852f, +0x3ad5ff49,0x3c36f180,0x3c505156,0x38eacde0,0x3c2b1938,0x3b8d4f23,0x3c12752f,0xbbf71585,0x3c333cfc,0x3d49213f,0x3ddcf957,0x3e11d5e6,0x3e20ed73,0x3dc5d2fd,0x3dc16fa5,0x3d85cfc1,0x3c5c643c,0x3cb0e0d1,0x3cc1e7c8,0x3c8243b5,0x3c57583f,0x3c759a38,0x3c64e68f,0x3c87fe00,0x3cc69669, +0x3c6a82cc,0x3c48f511,0x3c3248c7,0x3c8f9344,0x3c89506e,0x3c29aa3b,0x3c68546f,0x3c7d1df4,0x3c6a6b76,0x3c0cb93e,0x3be1259e,0x3b9540ff,0x3b6ba198,0x3c3b8dd0,0x3d017738,0x3d38dd00,0x3d7866c4,0x3dac740d,0x3d64d965,0x3d5dd728,0x3d914222,0x3d8fc9c2,0x3d948c2f,0x3d80cdb4,0x3da6eee2, +0x3ce10c2a,0x3cd8b22f,0x3b08ec63,0x3c880653,0x3c8a87ed,0x3cb559ea,0x3ca263d2,0x3c7a04f7,0x3c8f2355,0x3c7befb9,0x3c5eadde,0x3c430d74,0x3c2e39d7,0x3bbc6f8f,0x3c0564b8,0x3c797185,0x3cc06d66,0x3c8742d7,0x3c3dbd7e,0x3c2825a4,0x3c6e5948,0x3c970e1b,0x3cb215a7,0x3d3614e5,0x3d57f2ea, +0x3d444d66,0x3d0eef6a,0x3c639aea,0xbbf615aa,0xbc069742,0x3add89ce,0x3cd24964,0x3cd628fd,0x3cdf68f2,0x3cb498be,0x3cd924b7,0x3c92f837,0x3c3ff3a5,0x3c928248,0x3c99f355,0x3c75ca34,0x3c5f0a0a,0x3c47a6e2,0x3c49a7a5,0x3c20fb91,0x3c0f0eef,0x3c229a3d,0x3c377765,0x3c49af59,0x3c941837, +0x3c5ab568,0x3c1e5089,0x3b85a416,0x3c277137,0x3ca1a706,0x3caa6f99,0x3c7450bf,0x3c708760,0x3c275448,0x3c0f9a87,0x3be8b28e,0x3bf5b447,0x3c122720,0x3c5980b8,0x3c8737ce,0x3cc0c221,0x3cd926c5,0x3cf54b45,0x3ce87f12,0x3cf230bd,0x3d004fbe,0x3ccbccf1,0x3cb7dfa2,0x3cd9b7ae,0x3becdc0f, +0x3ca7dec0,0x3c9c1a9a,0x3c99e790,0x3cb6c254,0x3cb9ffbb,0x3cc243c5,0x3cdad4f4,0x3cdb8273,0x3ce54401,0x3cc12f07,0x3cc823f2,0x3c92bfa8,0x3c654535,0x3c8a217c,0x3c1da6b8,0x3ad9a757,0xb8060a2a,0xbb435527,0xba9d4fed,0xbaa1fd4c,0xba83f680,0xba96beef,0xbafbb995,0x3a6cae36,0x3b6a266f, +0x3bde9286,0x3c35f34d,0x3c86060b,0x3cb74a35,0x3cb842b5,0x3cb8d584,0x3cb99806,0x3cbc5650,0x3c9ca9a5,0x3cb071df,0x3cda200c,0x3c9e586f,0xbb86bcf8,0x3cec2feb,0x3ca85bf6,0x3b17879a,0x3ae2b5a1,0x3a83ae5a,0xba6981eb,0xba8cd657,0xbaaeea78,0xbb1b96ed,0x3cb1b04b,0x3cd772d8,0xbb9968f9, +0x3c8af0f9,0x3caa9380,0x3c2e0782,0x3c3fd69f,0x3c3fe9f9,0x3c38264d,0x3c37938b,0x3c353b98,0x3c293087,0x3c5380a2,0x3c730113,0x3c886b6f,0x3c92aa7d,0x3c9a4a60,0x3ca88c94,0x3ca1bd0b,0x3ca18dd8,0x3c9e5501,0x3ca501b4,0x3ca8bb38,0xbcc997fb,0xbcb768c9,0xbcde6409,0xbccfb071,0xbbb326fa, +0x3d0a59a9,0xbcfbbc07,0xbbf7d4dc,0x3ce717c8,0x3ceb1192,0x3cee70ee,0x3cf549d5,0x3d0291f7,0x3d06ffdf,0x3d130ed9,0xbbcee320,0xbce28623,0x3d254fcc,0xbb467155,0xbcb8ae72,0xbccff71b,0xbcac2e28,0xbcc6a0ab,0xbcc3e8b9,0xbcc7f15a,0xbccb5687,0xbcd00026,0xbcd2743c,0xbcd6eb07,0xbcd1d9a8, +0xbcef9ccb,0xbcf4c1b5,0xbcde190e,0xbcf2c3ff,0xbce9bb00,0xbcc34d0c,0xbcce5967,0xbcc77e85,0xbd045653,0xba9b858a,0xbcdf9b79,0xbc8d83f6,0xbc079bf7,0xbc6a2b80,0xbc252e13,0xbc954046,0xbcb5ca1c,0xbc92ee6f,0xbcbd6158,0xbc8d8c65,0xbc712019,0xbbad2a5f,0xbbdb82eb,0xbc6bf65b,0xbc31551b, +0x3c375cd9,0xbcc808d4,0xbcc0abf7,0xbceba138,0xbcf5692c,0xbd02a96b,0xbd04898b,0xbd053d96,0xbd034d56,0xbd0610fd,0xbd0097d3,0xbd256939,0xbd2d415f,0xbd0e3f6f,0xbd2a5256,0xbd1b3004,0xbccf0917,0xbce3c5b6,0xbcea7baa,0xbcfa982b,0xbce6bd1b,0xbcbac0ef,0xbc614028,0xbbf9dfd3,0xbb26c11f, +0xba13955f,0xbaf7f128,0xbbd495e6,0xbbfa22e1,0xbc3cfd2a,0xba27f7a8,0xbb0dc69e,0x37da487c,0xbb8bed37,0xb97a8404,0xbad7a19c,0xbb9d6f5f,0xbc6ea551,0xbcd6287a,0xbcf75d08,0xbd0b16ca,0xbd109944,0xbd187e25,0xbd236aca,0xbd2920aa,0xbd3ac743,0xbd277e80,0xbd78f85b,0xbd85088e,0xbd469e30, +0xbd8343be,0xbd5de990,0xbccd1c17,0xbd060f09,0xbcabd7f5,0xbce78182,0xbd069dc7,0xbd06c232,0xbcb525b5,0xbc1bd50c,0x3b0a3508,0x3c497867,0x3ae02bd8,0x3a6cbf5e,0x3a07cb36,0x3c035456,0x3bafbe88,0x3c2b8286,0x3bb3c437,0x3b9f397c,0x3c288e07,0x3ba3dbbd,0x3c0e7eea,0xbbf483b4,0xbcd158f3, +0xbd14e4ba,0xbd3b876d,0xbd4eeb7c,0xbd59ed54,0xbd51f66a,0xbd5579ec,0xbd53ff00,0xbd36d450,0xbd9ccbf5,0xbdaa9dfb,0xbd6f6e4c,0xbda11c22,0xbd7bf136,0xbc7a4c9a,0xbcc81868,0xbd94db9a,0xbd35f0db,0xbbf4b334,0xbb66a586,0xbb819cff,0xbbcbd189,0xbc1ae194,0x3a32eb68,0xb8bcc751,0x3a400533, +0x3b04aef2,0x3b2886a7,0x3beb238f,0x3c7a15f5,0x3b89ac3f,0x3ad2d220,0x3c096ee0,0xbbd842b6,0xbc49056e,0xbcecef19,0xbd1d6050,0xbcd700e3,0xbcac38c0,0xbc8f64ce,0xbc7b0c42,0xbcbbda7b,0xbd18ac3f,0xbd3eb360,0xbd84e9d5,0xbd1c901d,0xbd1596a9,0xbd48fcbf,0xbd6ad599,0xbd7eea49,0xbd8901a8, +0xbd969a87,0xbd2567ac,0xbd390c0c,0xbd52a0a7,0xbd1ce505,0xbc91cc90,0x3b239160,0x3c0c5c68,0xbc0edc89,0xbb595d39,0xbbad4ce9,0x3a6a9d3c,0xbaaf138e,0xbb0d48b4,0xbae4ea03,0x3c3ac79d,0x3c235a29,0x3b21a058,0x3b3e4f0a,0x3c134ba0,0xbc44be24,0xbd1456b0,0xbd3b4e24,0xbd6eca31,0xbd412849, +0xbcf7a5a8,0xbca4081a,0xbb1b3c66,0xbc1c4f02,0xbd34edde,0xbd3a32b0,0xbd419ba4,0xbc7543d5,0xbcd9c1d4,0xbcdb4f66,0xbce37bcc,0xbd036a09,0x3cf97eb4,0x3d6278fe,0x3d8debf3,0x3d5f1c43,0x3d644e01,0x3ca6730a,0x3c1007fa,0xbbb0b52e,0xba0f8870,0xbb4ed2b1,0xbb1e1719,0xbaf293f9,0xbb863d97, +0xbb432958,0xbc12d77b,0xbbe8fa6c,0x3ca5b7db,0xbb6cabdd,0xbc7e4410,0xbc98cc47,0xbc0500b9,0xbc18b2fa,0xbca55b41,0xbd2897e5,0xbd851882,0xbdc0d786,0xbda0ad1c,0xbd96e240,0xbd9cbcd4,0xbdb21951,0xbddf59db,0xbdd6f58f,0xbe2a41ee,0xbe1cee91,0xbdd0bbe7,0xbc3e289e,0xbd325fb1,0x3c45aa84, +0x3c09a128,0x3ae5cf92,0x3cb60e2d,0x3c84d4d6,0x3ca75efa,0x3c55d6f4,0x3a5f20e1,0xbb26d94f,0x3b1177ac,0xba351b5a,0x3a1bc955,0x3be16c64,0x3b4b6704,0x3bbb5331,0x3c985b43,0xb89d3af7,0xbaa5dbfb,0xbc27ef61,0xbd0449c6,0xbd31ef4b,0xbd306131,0xbd3cfcdb,0xbd1648f3,0xbce1810c,0xbcdbd2e4, +0xbd25c527,0xbd5d1d3c,0xbd8e587e,0xbd76d7ec,0x3a629419,0xbd1476df,0xbd66d91b,0xbdaff055,0xbd7a2c36,0xbda9fe62,0xbcc398c7,0x3d06881c,0x3c699059,0x3c1dfbb5,0x3c4ec663,0x3bf609ff,0x3b54859c,0x3c1ea4a3,0x3c1f1e23,0x3c8a49d1,0x3c165e0a,0x3be1d265,0x3b924bc8,0x3c34d8a6,0x3c36a907, +0x3c0e9457,0xba1dfa95,0x3a9956de,0xbc07743c,0xbc1ceaec,0xbbe229bc,0xbc5415a9,0xbccb1073,0xbd09401d,0xbd32169d,0xbcfe76d7,0xbcf51b2d,0xbd2d93aa,0xbceaa867,0xbcf024ef,0xbcca97e1,0xbd7b085e,0xbd9f5505,0xbdb13872,0xbda86b61,0xbd24ba5d,0xbce84db3,0x3c12d496,0xba8264a7,0x3c3a6202, +0x3c11f342,0x3c1dbd7a,0x3c2f00b1,0x3b974fc6,0x3bb0eefe,0x3c1ecca0,0x3bb4222f,0x3b1d45ec,0x3aaa89b6,0x3b694daf,0x3bc5bf58,0x3bac4da1,0x3c42fd1c,0x3c597cf4,0x3c2e1733,0xba416771,0xbb85588f,0xb992d071,0x3c1a521c,0x3c7211da,0x3c7c96fc,0x3c337c2d,0x3bbbc3ae,0xbb12022e,0xbac58e6b, +0xbc52ae7b,0xbd0e0dea,0xbc966c61,0xbca64cfc,0xbd11f7ad,0xbd0e16b2,0xbc389818,0xbc0905ac,0xbb871930,0xbbb8ffa1,0x3b2762c7,0x3b00a522,0x3b91e843,0x3ba8a27e,0x3c02e6f3,0x3b53acd9,0x3b8e5f37,0x3b3d6169,0x3c67955e,0x3c5eaa5c,0x3c2a6aa1,0x3a73c001,0xbb634d2c,0xbb4d22ea,0xbaafd561, +0xbc0bc14a,0xbc0e023b,0xbb0ea095,0xba323c3b,0xbb18c016,0xbb78f509,0xbb2cbb27,0xbc07091c,0xbc3c9d3e,0xbc75f19c,0xbc75f047,0xbc4cf0d6,0xbc46763a,0xbc47b0a9,0xbc4d9ce9,0xbc299513,0xbc142efe,0xbaadc4f4,0xba81cbf7,0x3cd51be3,0x3b8a5096,0x3c2aeb43,0x3c3a8989,0x3b880db1,0x3bbf85a3, +0xba12b90c,0xbadd8d78,0x3acd05a4,0xbb8c5609,0xbb99b01e,0xbba25a53,0x385c701f,0x3ad63a7c,0xbba1fea8,0xbb207aa6,0x3b85c18c,0xbab9711f,0x3b5b6e0c,0x3ad9f848,0x3b3a3d47,0x3b64d7e4,0x3b8c98fd,0x3bad2644,0x3b117075,0xba9418cc,0xbbaaccb4,0xbc15fe86,0xbc646f9e,0xbc924d79,0xbc6f048d, +0xbc3660c3,0xbc02baad,0xbbb4316f,0xbb75ce5c,0xbbd5f86d,0xbab3f9ec,0x3c3462f2,0x3d06297a,0xbc081bda,0x3c0053c3,0x3cebc1f9,0x3cf70b9a,0x3cfc3fa7,0x3cfbfab1,0x3d056683,0x3d0906b4,0x3d0b1de2,0x3bb86aaf,0xbc0490a2,0x3cf7d0a9,0x3bc353ad,0xbba1d14f,0xbb8f96cc,0xbb456e24,0xbb6191ae, +0xbb3e7568,0xbb2999fe,0xbb148722,0xbabdee16,0xbb51d9dd,0xbb8d2683,0xbbb18782,0xbbdd7ac9,0xbc03ade4,0xbc32f24f,0xbc0fe1c6,0xbc039db9,0xbbe6a0b9,0xbbc87acf,0xbbf48dff,0x3cd879aa,0x3c9b61f4,0x3d03df65,0x3c20eb36,0xbc84f367,0xbd450c6a,0x3cb46c40,0xbc1890b1,0xbd252cf8,0xbd30a4bc, +0xbd33241e,0xbd2c1e38,0xbd3ac860,0xbd3b9892,0xbd37ab72,0xbc218918,0x3c9f6dba,0xbd4748de,0xbc49ea71,0x3c3c1dab,0x3d0993f7,0x3cc3a51b,0x3cdfa6a2,0x3ce42445,0x3ce2dc04,0x3ce09898,0x3cd85ac3,0x3cd869fd,0x3cdb09ef,0x3ce859c9,0x3ce4a639,0x3ce977a9,0x3cf8b75b,0x3cee0404,0x3cd88a12, +0x3ca1b9de,0x3cafdc3c,0x3c6d4bba,0x3cdd36d5,0xbcdb6702,0x3c9ef711,0x38312f30,0x3b22667c,0x3c8068b6,0x3c4eff49,0x3ca857c2,0x3c980a2f,0x3bff7bc5,0x3c8c1ff6,0x3c824f04,0x3c91a370,0x3bb93c5b,0x3c26a23e,0x3c823f82,0x3c8cb04a,0xbc84b939,0x3d000279,0x3d01734a,0x3d0783b0,0x3d12f675, +0x3d122488,0x3d0d7b46,0x3cffb888,0x3cfe7d18,0x3d024293,0x3d1369e4,0x3d0ee511,0x3d1c8abf,0x3d30b12e,0x3d2d9b03,0x3d0f1146,0x3c82d733,0x3c70e3f4,0x3c34bfe2,0x3cb6b180,0x3b2a18c6,0x3c126ea9,0xbc0f9958,0x3b7892d8,0x3bce9077,0x3c3caf32,0x3af3659b,0x3bf5fc0d,0xbadc1079,0x3c484a9e, +0xba0db902,0x3c93fe82,0x3bd8bde3,0x3c8348ce,0x3c606e0f,0x3c7bbc26,0x3c3f6708,0x3cc685e9,0x3d1df99a,0x3d168326,0x3d38469b,0x3d343f78,0x3d316a1c,0x3d1f822b,0x3d15d464,0x3d1b7436,0x3d462136,0x3d3e63e4,0x3d556873,0x3d6f13e6,0x3d4fbb16,0x3d073074,0xbb177b7f,0x3b835ed3,0x3acc0efd, +0x3c8d6e88,0xba96d681,0x3c0f1311,0xbb82a89b,0x3c00e2cd,0x3c43ba90,0x3c604bd9,0x3bf1a212,0x3b2c4c88,0x3b6c8d04,0x3b7a297e,0x3c2469dd,0x3c97c4af,0x3c776b30,0x3cac233f,0x3c500f95,0x3cd0d9a4,0x3c4739ef,0x3cd5cd3b,0x3d38ad35,0x3d46c0a0,0x3d715a33,0x3d7147e9,0x3d6870a8,0x3d496f4f, +0x3d38641b,0x3d3f5d87,0x3d7858cb,0x3d674520,0x3d8a3988,0x3da665c1,0x3d94865f,0x3d2c6778,0xbc275a1f,0xbc54a03d,0x3ce1cc85,0x3b2870a7,0x3bbd2c6b,0x3c33d5f2,0xbc87bbd6,0xbc37073c,0xbadd8253,0x3b427a9d,0x3b16ef1b,0x3bb9e600,0x3b8532fb,0x3b680aaa,0x3bfb7af7,0x3c6c08f7,0x3c06a235, +0x3c3095a3,0x3c23eed9,0x3c96af1a,0x3b2e2a14,0x3c7a0d71,0x3d0ab3ac,0x3c6191fb,0x3c423925,0x3c9c6d94,0x3c9deffb,0x3b99dfb5,0x3c38162a,0x3c82864a,0x3ccab88e,0x3d596926,0x3d713785,0x3d319573,0x3d1fc7ce,0x3cf0e4d4,0x3c01ffc0,0x3c39b886,0xba872eeb,0xbc85dae3,0xbcab55a4,0xbc1a93aa, +0x3c8bee59,0x3c55b1cb,0x3c3d44b0,0xbba562b8,0x3b56661d,0x3acd9b8c,0x3b5a8f2d,0x3b0db19e,0x3a202aa2,0x3ba6ef7a,0x3c967b06,0x3c9cbba3,0x3c64b25d,0x3c0a6c00,0xbba9ceac,0x3c1fa753,0x3d1a0208,0x3d3b4380,0x3d86d865,0x3d1b2225,0x3caf8ae8,0x3c0297f2,0xbc0e648f,0xbc98e93d,0xbd1e298f, +0xbc8bbbb5,0xbb2a63e2,0x3c9d6ea4,0x3c79023d,0x3c22d2fb,0x3b833898,0x3c04f23e,0x3cf1cb54,0x3d3c94d0,0x3d3af811,0x3d350dce,0x3d2e7b2b,0x3c7da1a3,0x3aec9a04,0x3950a3c1,0x3ad8324a,0x3b02a749,0x3b0db82a,0x3b81d527,0xbaac7845,0x3acd4d9c,0xbbbf131e,0x3ba3abda,0x3ce6ee9f,0x3c944d82, +0x3c0d7dd4,0x3c08a814,0x3c0c125e,0xbba5a89d,0xbb06308a,0x3cddf329,0x3d4d54cc,0x3d4d7aae,0x3d78993f,0x3d37be2f,0x3b71e265,0x3c5d7f8b,0x3d08775e,0x3dad6888,0x3d422f08,0x3d006019,0x3ce455cf,0x3c35f8da,0x3d838fd7,0x3c273f67,0x3c2e5a5c,0x3cda0fb2,0x3cbe86f7,0x3cfcc080,0x3cc043c2, +0x3c8d9c2f,0x3aab79cc,0xbb101e00,0x3a8935ad,0x3b366212,0x3b2a27a3,0x3c0a9f0f,0x3b8ffd3d,0x3baa35c8,0x3cc70415,0x3b6a8f13,0xbc37503d,0xbabb402d,0x3c3202a5,0x3c8fdb79,0x3cc0eceb,0x3c8921cc,0x3c395139,0x39e68eb1,0x3c8e14ea,0x3c120ada,0xbcd023d2,0xbd155d89,0xbcc59572,0x3d1d2588, +0x3d9ce0a9,0x3df97425,0x3e2919ad,0x3dc9824b,0x3daf32bb,0x3cf404c2,0xbcabea6e,0x3bc52f23,0x3c81f051,0x3beb71d7,0x3c24c988,0x3c61a24d,0x3c61625a,0x3ca738cf,0x3c9ecab7,0x3c6251a9,0x3c31df44,0x3c0cdaf3,0x3c163ce1,0x3c1a5a2c,0x3c5b38d5,0x3c1cd084,0xb9eae3e1,0x3b61fac7,0xbba62029, +0xbc839271,0xbc7a309e,0xbc9ea189,0xbc16c433,0x3be6fc66,0x3c5f80c4,0x3cb5bea2,0x3d183de5,0x3d6b84ce,0x3d9e96c2,0x3dda14c7,0x3dc82d94,0x3da524e8,0x3d8b1042,0x3d985883,0x3ccf2ccf,0x3c56ebae,0xbc8592d5,0x3b8f99b6,0x3bea0577,0x3c6128ab,0x3c8e97b6,0x3c4f59d8,0x3c4c5eab,0x3c281ce6, +0x3c7f6dc7,0x3c1030e7,0x3c0020e5,0x3c24e46d,0x3c79a942,0x3c7e6151,0x3c3209b5,0x3c13833a,0x3c0d66af,0x3bed2969,0x3c9fa29f,0x3cf0e9a9,0x3d19ec97,0x3d3ca305,0x3d3fb587,0x3d3f9ead,0x3d1b1d6b,0x3ce0a87f,0x3c2ac69c,0x3cb05e58,0x3d0b7e5e,0x3d546026,0x3d22c18a,0x3d169283,0x3d03f85e, +0x3cb10f96,0x3cc7c8e8,0x3c71e89e,0x3bd196f0,0x3c4c2ad5,0x3b853fd0,0x3bec9870,0x3c041fb2,0x3c4ae8d8,0x3bc569b4,0x3c27931c,0x3b373162,0x3c507252,0x3bdabdfb,0x3c4b1eca,0x3ba10a05,0x3b86f3af,0xba429962,0xba499921,0xbab18d44,0x3b1f25e1,0x3bbad61e,0x3b061dca,0x3aefd06b,0xb98c0913, +0xbaa10ce5,0xbb08cf8e,0x3bbf35c7,0x3c71700a,0x3cba423c,0x3ced46b9,0x3d009715,0x3d130d39,0x3cf7f7e3,0x3cd25c9c,0x3cbe46ae,0x3caa6335,0x3c9872eb,0x3c9985d8,0xbbc115d3,0x3c758ab2,0x3c01e772,0x3bebfdea,0x3c57a582,0x3c3f968d,0x3c8a92f9,0x3c926074,0x3c40bc77,0x3c95daf3,0x3c9800cd, +0x3c916a1b,0x3c31d4b3,0x3c3f0f60,0x3c84c5d6,0x3c5a2e51,0x3a94b3a4,0x3c35e7b6,0x3c04e79d,0x3c1a3bbe,0x3c22dc7f,0x3c2723a3,0x3c30ea08,0x3c227c31,0x3c5d343c,0x3c830ef3,0x3c9ffdb3,0x3cb144a6,0x3cce3e08,0x3cf31f88,0x3ce2b758,0x3cd6407e,0x3cc15fdd,0x3cad2181,0x3c9f4d22,0x3cbe43b1, +0x3c2a559b,0xbb5ec688,0xbc910bca,0x3c839ea9,0xbb13b9d3,0xbc8d8433,0xbc97be86,0xbca0ad1d,0xbc95a6e2,0xbcaf70f0,0xbcbbe1ca,0xbcbd2257,0xbaa7b3b3,0x3c7ccbcd,0xbcb125ca,0xbb2187be,0x3c29c507,0x3c9ed510,0x3c870abe,0x3c8c705b,0x3c87904e,0x3c87658b,0x3c871d4d,0x3c84e126,0x3c919afb, +0x3c9a15fb,0x3ca258c9,0x3cb042d4,0x3cba7124,0x3cc902e0,0x3cba889f,0x3cb4ff74,0x3cb0d401,0x3cadd40b,0x3cbeba07,0xbca3dd75,0xbc8dbe10,0xbce47261,0x3ba67a62,0x3cf2d7de,0x3d32e3f0,0xbbd7df60,0x3cce3881,0x3d3a28d5,0x3d3ecb1e,0x3d3bd1e8,0x3d261100,0x3d3aa6ff,0x3d3da96e,0x3d3e191a, +0x3cda76ab,0xbaae6e9c,0x3d477bca,0x3cedcc40,0x3bf3b0e4,0xbce14749,0xbc8eff95,0xbcaaa86f,0xbcad9e4a,0xbcada19b,0xbcaff839,0xbcb31bc2,0xbcb34fe5,0xbcb33f6c,0xbcb0b84d,0xbcb55c3a,0xbcb3363d,0xbca78541,0xbcaaa88e,0xbca19d8c,0xbc80a37a,0xbc9f0a7f,0xbcb323d9,0xbca59c55,0x3cf0ae67, +0xbc86a378,0x3a79f9cc,0x3bd3fc65,0xbb63b4f3,0x3a0d8a30,0xbc3d2d23,0xbc1521c0,0x3af39ae7,0xbc09bf82,0xbc012df6,0xbaf96606,0x3c005bf2,0x3b844fa9,0x3b49c069,0xba474979,0x3d08b1dc,0xbc8602f3,0xbcc58e4a,0xbcc76d64,0xbce6b97b,0xbce4a1c2,0xbce729c2,0xbce49d72,0xbcdc62c9,0xbcdb2efe, +0xbcdd7531,0xbcee16d1,0xbce453fe,0xbcc18ee2,0xbcbe7887,0xbc9dfd9f,0xbc25f388,0xbc97d463,0xbcf8a1db,0xbc7355b9,0x3b94fd44,0xbb1f9e9a,0x3b075915,0x3b8bdae8,0x3be3dcec,0x3bb87eb9,0x3c193356,0xbbb57481,0x3bbb4ce0,0xbc5cbf8f,0x3c00912b,0x3a8b5625,0x3c5fc9c0,0x3ba8a1a1,0x3bed7124, +0x3c0bc04c,0x3c751235,0xbbb134e4,0xbcf249a8,0xbce11f3f,0xbd096d62,0xbd066c17,0xbd0c423c,0xbd109d95,0xbd127de1,0xbd12e2c2,0xbd0d96b5,0xbd1e1c84,0xbd139b9d,0xbce4e507,0xbcdf4790,0xbc996a6a,0xbb63ef39,0xbcbcbf17,0xbd195bbb,0xbc298808,0x3b3e5756,0xbc480ee4,0xbc3b8ac2,0x3b8b0760, +0x3bd3d3f8,0x3c1bbf56,0x3af7b8a6,0x392a5189,0xbbabf6f7,0x3b5d3645,0x3b46f903,0x3c001ae1,0x3ba5cbfc,0x3b35a04e,0x3c9b2e20,0x3bae722d,0x3cb24eb8,0xbb4a4767,0xbd0473bc,0xbd089c08,0xbd379a79,0xbd3853de,0xbd3bb2b5,0xbd2e6026,0xbd21153c,0xbd1ab0ff,0xbd2a467f,0xbd4f9887,0xbd3091b8, +0xbceb25b2,0xbcb42251,0xbbb85145,0x3c851b6d,0xbc80b549,0xbd886229,0xbd1f037f,0x3cdf736b,0x3cb398e8,0x3b93cff3,0x3b785c3a,0xbb306dd3,0x3b66b903,0xbb533019,0xb997379d,0x3b805447,0xba8ab694,0x3b2b1150,0x3c79c951,0x3bf76d89,0x3aa230fd,0x3c18bd6a,0xbc09ce56,0x3be9a64e,0xbbb7d3fa, +0xbd230b08,0xbcde58b1,0xbd0fb878,0xbbcd826a,0xbbdcf6ac,0xbcb4d96b,0xbd49dae7,0xbd68be45,0xbd43e5a2,0xbca5c9aa,0xbcca5703,0xbd5efd8e,0xbd699de3,0xbd8979bd,0xbd9e404e,0xbd7a2e0e,0xbd112440,0xbd3c66b7,0xbce4ee54,0xbcc8f035,0xbb9e82cc,0x3b74a722,0x3ab9aad5,0xbb9b6c16,0xba4058be, +0xb8d2b299,0x3a66d5fc,0x3a334af8,0xb903862b,0x3a7b93b1,0x3b188bc1,0x3ba331fa,0x3c8a532c,0x3c1da115,0x3c9cfe78,0xbb6f794d,0xbcd49a01,0xbcd11ca7,0xbd34ee11,0xbd17c820,0xbce6986e,0xbc0e771f,0xbc4a8a19,0xbc96a981,0xbd0174bb,0xbcb572ae,0xbabeb7ca,0x3ceb5d4c,0x3c68b140,0x3c81b6b2, +0x3cd8d082,0x3a01354b,0xbc44ade6,0x3c6aefc7,0x3d610604,0x3d2687ec,0x3d2c328f,0x3b9a7e4b,0x3ad635c7,0xbb0c101a,0xba281c5c,0xbb3aabb3,0x3a9823a5,0x39d7974b,0xbbaf627d,0x3b8058c6,0xbbd7b266,0xbba48feb,0x3cf6b8e3,0x3b1105e8,0xba08ea7c,0xbc22c348,0xbc9b9005,0xbc0436e9,0xbc04ec4b, +0xbcba0cc8,0xbd1fba1d,0xbd5d7d05,0xbd8f6001,0xbd93e6c7,0xbd8bdc16,0xbd8ff299,0xbdb19e19,0xbdc55812,0xbde8c008,0xbde9a682,0xbdf097ed,0xbd45f0e1,0x3d34f5ca,0x3d226577,0x3cbe8d05,0x3c87d208,0x3d055a2f,0x3ca3d084,0x3c8bb3ce,0x3c24606d,0x3a771baa,0xba11559b,0x3a124856,0xb83c22f9, +0xb99d53ee,0x3bc08fe0,0xb982e719,0x3b4f9cc1,0x3c85946b,0xbbc425e9,0xb915aa1b,0xbc3bb807,0xbcf113bd,0xbcf6fb48,0xbd004b71,0xbcecf264,0xbc98ef45,0xba1a5001,0x3c223d84,0x3c2604cd,0xbc22d70c,0xbc5fd100,0xbcb7e9a1,0xbcaf858f,0xbc9c3321,0xbc347f3b,0xbbc7edde,0x3d26a29e,0xbd03754c, +0x3c7d8476,0x3d3ea233,0x3cb0f2ff,0x3c998675,0x3c938895,0x3c707a24,0x3c99c8b6,0x3ca1a31c,0x3c5a7506,0x3c68b047,0x3c49dc37,0x3c267a1c,0x3b897788,0x3bc6c0d1,0x3bf7aa52,0x3c237d1d,0x3b6c39c2,0x3bf3dcd0,0xbc1de975,0xbc4d1c5e,0xbc411e9e,0xbcb492a6,0xbc48721a,0xbc43312c,0xbc7fad28, +0xbcc085aa,0xbccec1ed,0xbceedd2a,0xb88b651e,0x3c679d26,0x3c7f2db5,0xbb03b193,0xbc8daea8,0xbd0ba674,0xbcddf7af,0xbc1f5fc2,0x3c01a464,0x3cddfea0,0x3c941d26,0x3cb9d539,0x3c8873db,0x3c184ed4,0x3c0f57b8,0x3ad4c1d6,0x3abb4532,0x3aa83e03,0x3bb57d16,0x3bab8205,0x3c14a393,0x3c33a093, +0x3c38b8a1,0x3c01e456,0x3c2c0839,0x3c154006,0x3c3f9679,0x3bba1d70,0x3be115fe,0x3c50dcc2,0x3c81c340,0x3c90a21e,0x3cb50b97,0x3c6c6aa3,0x3c85ee31,0x3cb61bea,0x3c7cd000,0x3b3ecf74,0xbc87eae9,0xbca5cdde,0xbc7d85f5,0xbc23857e,0xbbd9f4d4,0xbc6363b0,0xbb51f57b,0x3c3c20d8,0x3bbeedd7, +0x3c53f7b2,0x3c261020,0x3c2c2640,0x3c1a31ec,0x3c664dc4,0x3c0b9285,0x3c78d3fe,0x3b84c517,0x3c40f278,0x3baebc08,0x3bf9f3dc,0x3b7dd695,0x3bc9a640,0x3ae48825,0x3a478472,0xbc2d1bda,0xbc8088b6,0xbc4ede77,0xbc6248a3,0xbc466dcc,0xbc36d5b8,0xbc1969e4,0xbc13c5d2,0xbc124205,0xbc022497, +0xbc1578b9,0xbc0ffd12,0xbc39aff7,0xbc130725,0xbc242aa4,0xbc518221,0xbc28ef7c,0x3b3b696c,0x3b9add55,0x3cc6cced,0x3b9be731,0x3c4ce798,0x3c38524c,0x3b9c83b9,0x3bb75399,0x3a7a469f,0x3b565aec,0x3c37ce87,0x3bc19de4,0x3b8ad72b,0x3bec9079,0x3c38101f,0x3bfd6e6b,0x3b8ea5f5,0x3b1aefd1, +0x3c495e75,0xba9ff36a,0x3b059884,0x3b2bc977,0x3b417cb2,0x3b85cde6,0x3b94edb9,0x3ba49d1e,0x3afe1bc8,0xba6a2e9d,0xbb7e162b,0xbbe62b6b,0xbc2771c9,0xbc57830e,0xbc25fba3,0xbbcf6766,0xbb3bc266,0x3aab0bd2,0x3a6e1a9c,0xbae70292,0x3c5d018f,0x3cc6c80b,0x3ce7b8ac,0x3bed62d2,0x3cb64a77, +0x3cef5690,0x3cfead10,0x3d022b46,0x3cf2c058,0x3d080354,0x3d0ed6f3,0x3d0f2042,0x3cbd0cad,0x3c004d30,0x3cfd5ccd,0x3cb13e8a,0x3c26aa02,0xbb70f2ca,0xb95aa439,0xba9734dc,0xba55b871,0xba8f4ed1,0xba9d7259,0xba3283c6,0xbb01e9f6,0xbb2ed991,0xbb56a969,0xbb6e41b1,0xbb7a631a,0xbb9ffd9f, +0xbb510e56,0xbb24c417,0xbae3dc2d,0xba9fd108,0x3a91f2ee,0x3c0e3865,0x3bad9530,0x3c93807e,0xbc96e3a8,0xbd0d6bdb,0xbcff24ff,0xbbfd7bf5,0xbcf33cc4,0xbd04d0b2,0xbd0c37fb,0xbd0b800d,0xbcef0ddb,0xbd0829d3,0xbd068f5b,0xbcf2e54d,0xbcf7d891,0xbc2f8f92,0xbcf1ae7c,0xbcf9d6b2,0xbc903619, +0x3c905bfc,0x3c02e987,0x3c199665,0x3c1d230b,0x3c1ddb6a,0x3c17164e,0x3bfbb6ed,0x3c033d8f,0x3c090520,0x3c1c01d1,0x3c15961d,0x3c126603,0x3c21449c,0x3bc918f0,0x3ba1cd7f,0x3babcde8,0x3bb63ca9,0x3ba346c8,0x3be85bb9,0xbd079dd9,0x3a540571,0xbc84f0c9,0xbc12a12f,0x3a89a629,0xbaa41889, +0x3bb29312,0xba8cea8c,0xbc50d0b5,0xbb9195c4,0xb9e41c55,0xbb05d8de,0xbbd0fa98,0xbae1f8ef,0xbb9bae3c,0x3b14f6e5,0xbcc73115,0x3c04cbe6,0x3c585830,0x3c146c87,0x3c4a193c,0x3c5033e1,0x3c49ba7e,0x3c05dfcc,0x3c0c9f88,0x3c1114f1,0x3c29165c,0x3c28f22e,0x3c10d867,0x3c0a870f,0xbac5c441, +0xbba380ac,0xbabcf5fc,0xbaa781a3,0x3b6a66bb,0x3bcc04d8,0xbc90a47e,0xbbf0b0ee,0xbc7c92e2,0xbb7c1a4e,0xba26218e,0x3b01c5b2,0xbbc08900,0x3b529ee4,0xbc5ae162,0x3bab2042,0xbc12094b,0x3ba34ab1,0xbb831d9b,0x3b851402,0x3b735ad6,0x3b664433,0xbbe13ab4,0x3be5c0e9,0x3ca046e2,0x3c3c1010, +0x3c86e5cb,0x3c764742,0x3c5c5f77,0x3b56016c,0x3bca7590,0x3c018f71,0x3c62e3e2,0x3c5ae367,0x3c25f0c1,0x3c462ffb,0xbc41bdda,0xbc96c9a8,0xbb696346,0xbbf40c72,0x3adc25c1,0xbb287fcc,0xbcbfbc51,0xbc6443a1,0xbc82814d,0x3b30793d,0x3c20322c,0x3c39544b,0x3c041e89,0x3adade79,0x3b8c50c7, +0x3b1906a7,0x3bdcb17c,0x3c8f0cd8,0x3c3d5505,0x3c9505fe,0x3bf279cb,0x3cb471b1,0xba750039,0x3c4d7d27,0x3cb43751,0x3c346189,0x3cac740a,0x3ca81760,0x3c8e86be,0x3b4e527e,0x3bdf123e,0x3c2ed30b,0x3c72a65e,0x3c4882e5,0x3bb75106,0x3b72effc,0xbd031c89,0xbd2892b7,0xbc68518a,0xbc83bb7c, +0x3bc99217,0xbd28183b,0xbcb12c29,0x39bbcd7e,0xbc9a2e23,0xbc59bc3a,0xbb9f90f6,0x3b34ab2d,0xbbf4df6e,0xbbb0e533,0x3ba40279,0xb93dc79a,0x3b4c6106,0x3c1b01cf,0x3c05b2b1,0x3c2e7038,0x3ad858a4,0x3c2bd4fc,0xbc137c10,0x3af8b0ca,0x3d122ef5,0x3cbd00a9,0x3cdae589,0x3bab821f,0x3b3e4d8b, +0x3ba3daf1,0x3b8ebda7,0x3c603229,0x3ca9db6c,0x3d2f13a0,0x3d242104,0x3c1c22ad,0x3c1beb13,0xbb0ff6b5,0xbc97b3c9,0xbc554c2d,0x3ca642c6,0xbc7c316d,0xbd170720,0xbca134b5,0x3bba7360,0xbb641312,0xbadba3d1,0xbba8197c,0xbb08610e,0xbb2f9748,0xb9ccaf03,0x3980ca40,0xb9a05f35,0x3b863713, +0x3b9615c1,0x3bd20be2,0x3c5e0ff1,0x3bbfcbe7,0xbc0f4caf,0xbbf97292,0x3b8946f0,0xb9f1b65e,0x3c4e3696,0x3bbb2b13,0xbb5df03f,0xbc811678,0xbd003f1a,0xbcf727fe,0xbc800805,0xbc1f9569,0xbc7f946d,0xbd033306,0xbd1ad771,0xbcb98397,0x3c1b293e,0x3c4bf5ba,0xbd35df3d,0xbc15c78f,0x3cb9480e, +0x3ce189e1,0x3c5b9473,0x391fc120,0xbbdd6a05,0x3a359c20,0xba277d6a,0x3b05672e,0x3ae9d476,0x3ba11586,0xba83c306,0x3b9082d4,0xbbe43ec6,0x3a31cacf,0x3c8d0ca0,0x3c473bfe,0xbadd7ebd,0x3b89f799,0x3c5d990b,0x3a6c7311,0x3a7c434a,0x3c6184f0,0x3cc2c434,0x3cebe0c6,0x3c4b27e3,0x3bb445d2, +0xbae6a44d,0x3cf9ed4e,0x3cfb414d,0xbbc842ec,0xbcc3b715,0xbd71521f,0xbdc19098,0xbd8f5a91,0x3d60e7e8,0x3cff9b7a,0x3cde4e75,0x3cd1634f,0x3cffb74f,0x3cc39be7,0x3c92f32b,0x3c575a34,0x3b913967,0x3b03cbbb,0xbaad1d2a,0xba36aed1,0xba899482,0x3bb4aa85,0x3ae93b7b,0x39efa7ce,0x3c4b68b4, +0xbadcb238,0xbc8f1709,0xbc0c4076,0xba67a204,0xbb1b4f7e,0xba9ce40f,0xbb6067ec,0xbbf8187e,0xbb9ef49e,0xbc996735,0xbce01212,0xbd351633,0xbd162e7c,0xbd068013,0xbca96179,0x3b0bee6c,0x3cef976e,0x3d4d6d02,0x3d5fc3b5,0xbbb37d8e,0xbcce6d12,0xbcbae6cf,0xbb54f244,0x3bf2f88a,0x3bab968a, +0x3c3aca4e,0x3c8650e6,0x3c32be3a,0x3c685540,0x3c232c93,0x3c7ef9dd,0x3c48c440,0x3ad507b7,0x3b5658fd,0x3bc8eaf5,0x3c6ae11e,0x3b8874f8,0xbc288185,0xbb8474a4,0xbb8cd4cc,0xbc4616a7,0xbc75043a,0xbc4a2cb1,0xbc9272da,0xbcc0ecd6,0xbd192ba7,0xbd198fd0,0xbcfc14d4,0x3ba4e007,0x3d017f7a, +0x3d507c49,0x3d3e30f1,0x3cfa4cb1,0x3c606017,0xbba35bf8,0x3c88554c,0x3a98456a,0xbafca68c,0x3bbec947,0x3bf176ff,0x3bdbcd75,0x3c134b31,0x3ba75c39,0x3b959bcc,0x3b5f90b1,0x3b6ebe76,0x3bbda790,0x3c197a59,0x3c582afe,0x3c4542a4,0x3bc714fd,0x3b1adde2,0x3b729942,0x3c0ab48d,0x3c1d82df, +0x3c8f1fba,0x3ca79c06,0x3ca5f114,0x3c5c921c,0x3c332e9f,0x3c4d0b19,0x3c895b59,0x3cda5851,0x3d1b6b7b,0x3d0d25d1,0x3d056805,0x3d201ed2,0x3cbb082e,0x3c5a39e7,0x3c51f666,0x3c3c9f10,0x3b877792,0xbb0668fd,0xbc14a6a5,0xba1b21c0,0xbad44ea5,0x3b1243eb,0x3bb53ebc,0x3c14ed53,0x3bc2036b, +0x3c231a07,0x3b69ff8a,0x3c136dcb,0x3b1c402f,0x3b5b8c91,0x3b3a103f,0x3beaf0f8,0x3c01824e,0x3b8d1958,0xbbc25d24,0x3b3823ab,0x3c1cac20,0x3b0c119e,0x3b17cdea,0x3b025451,0x3b48e1a4,0x3b12ac4f,0x3b2aaa41,0x3a8be66e,0x3a50303c,0x3b56b04f,0x3bb6c34e,0x3c0499ae,0x3baa4698,0x3b39b1a1, +0x3923a43b,0xbad5ee33,0x3c30d99c,0x3c0623c7,0xbb17d9f4,0x3bfd3c88,0x3add46f3,0x3af6f2ca,0x3b9cb2cf,0x3b57343d,0x3be128cb,0x3b886430,0xba8c3429,0x3b32f3d9,0x3bc57c25,0x3b8186e5,0x3a88f32f,0x3b425772,0x3b414a1a,0x3bbe7504,0xbb02fe68,0x3c2328b5,0x3c22eacd,0x3c21819b,0x3c2e2972, +0x3c286bb3,0x3c26f451,0x3c2930fc,0x3c538701,0x3c75712f,0x3c804337,0x3c82410c,0x3c809587,0x3c83817b,0x3c789c3d,0x3c66ae28,0x3c56c262,0x3c3e3fd3,0x3c4b5e89,0x3c74a4a6,0xba666212,0xbbfd1f2a,0xbb88c9b9,0x3b4047c2,0xbbeffd42,0xbbee6a21,0xbc025ea4,0xbc02e9d3,0xbbb65c4e,0xbc001988, +0xbc107dca,0xbc032709,0xbc11800b,0x3b01f0f7,0xbc043a06,0xbc083249,0xb934e365,0x3c78a56c,0x3c3d29fb,0x3c4a73a0,0x3c493f19,0x3c4b38a0,0x3c4eca3a,0x3c4c4132,0x3c4db952,0x3c4f19df,0x3c595965,0x3c62fef2,0x3c6ce65f,0x3c775d7c,0x3c6947de,0x3c625547,0x3c5ea555,0x3c55a8f4,0x3c820370, +0x3b48bdc6,0x3adcaa2d,0xbb41c4f0,0x3cc95622,0x3ceae41e,0x3c016736,0x3ca70b30,0x3ce6be7f,0x3c80dc20,0x3c810d5f,0x3c6f46f0,0x3c1537a2,0x3c43661c,0x3c40d47e,0x3c22ef7d,0x3ce8f540,0x3cb89211,0x3c14737e,0x3ce53a38,0x3cd20e8d,0xbabc2e10,0x3b375bc0,0x3b176221,0x3ad719f4,0x3ae602a8, +0x3afa3e09,0x3b1ebaa1,0x3b298f81,0x3b365405,0x3b28af8d,0x3b7125db,0x3b8853d1,0x3b87102e,0x3b97097b,0x3b8d0839,0x3b7873d1,0x3b0aef84,0xbb0e8a30,0x3ba68244,0x3cab358b,0x3bc5dd31,0x3c3fe604,0x3c5d1aca,0x3c3dcddb,0x3c343647,0x3bd1908a,0x3c2bce8d,0x3c80ff03,0x3c38123a,0x3bfa73ec, +0x3c4d84d7,0x3c578c21,0x3c4744d2,0x3c9858ec,0x3c4448fb,0x3cb81a6b,0x3c263fa1,0x3a8f9773,0x3b90f3be,0x3afbb8cf,0x3b18a0e9,0x3ace1803,0x3ad04a04,0x3a984430,0x3aedc1cf,0x3b090c80,0x3bbe0666,0x3c0cc157,0x3c1622c8,0x3c50516d,0x3c3cfd2c,0x3beee2ab,0x3b76b81b,0xbc12f17e,0x3b86f97a, +0x3c8271fc,0x3c13ba5d,0x3bcff29e,0x3c445cdf,0x3c5b278e,0x3c2e5ef1,0x3c4a8bb4,0x39b6985c,0x3c2308c0,0xbb5a9dbe,0x3c0181e0,0x3c0f9f9a,0x3c8b32d5,0x3c72e67d,0x3c73b5ab,0x3c84be9c,0x3cc1696e,0x3c641ed4,0xbab59fce,0x3b18361e,0xba94a18f,0xba929cf9,0xbab59cd4,0x3abb553a,0x3ab3a825, +0x3b689312,0x3accb684,0x3c1ce8fd,0x3c6509f4,0x3c352f77,0x3c968192,0x3c53b479,0x3a42e81c,0xbac6aac5,0xbc34cf1c,0x3b2abc3c,0x3b9f0421,0xbbac71d9,0xbc248b99,0x3bf89635,0x3c0f9277,0x3bf6dba7,0x3b893b51,0x3ab66f99,0xbb93f25d,0x38e48364,0x3b84df64,0x3c06c3f2,0x3bf5c9e1,0x3c03af1b, +0x3cb99728,0x3c69eeb1,0x3cd2fe62,0x3c809643,0xbb004b4d,0x3b94f080,0x3a037c2e,0x3a8f819d,0x3a3c4c11,0xba22950d,0xba81708a,0xba332d64,0xbb8d5a16,0x3c3d5fcd,0x3cb85b37,0x3cba3704,0x3d1adf4b,0x3cf96d9e,0x3b768871,0xbac0c397,0xbcb8ca4c,0xbc05f5b9,0x3d1b0b5c,0x3d1199ce,0x3be8fca8, +0x3bf7f1d5,0x3be4d448,0x3c61c3ef,0xbb00dad4,0xbb898237,0x3b5314ce,0xba7569fc,0x3b07fefa,0x3c36c20d,0x3c652c4e,0x3c40d9b4,0x3c4a90e5,0x3c098f44,0x3cc5e637,0x3cafd270,0xbbbdaf4b,0xbc06d271,0xbc9973d0,0xbc27eefc,0xbca14df4,0xbd0ab301,0xbcca65f0,0xbc7c46d3,0xbbcac4da,0x3c26b917, +0x3c26e445,0xbbac9689,0xbc468341,0xbcaeb528,0xbcef3d97,0xbc84071f,0xbc8908a2,0xbccbbc3b,0xbb35488f,0xbb6b98b6,0x3ca08def,0x3b0dfa38,0xbc319352,0xbc018b4c,0xbbc85a8e,0xbb663e51,0xbb1e3861,0xb9d84b61,0xb9c29dcc,0xba61c56a,0xbac38b66,0x3ba89438,0x3cc7335d,0x3c3579ad,0x3c10208f, +0x3bd49903,0x3c176933,0x3c97edce,0x3c9e171d,0x3cb7e2a5,0x3c90727d,0x3be982c0,0xbc00be21,0xbc58b32d,0xbc70f7e7,0x3c06d365,0x3c60b19b,0x3bc769f8,0x3c9e542b,0x3cbd2a30,0x3c7ac8b8,0x3c082141,0xbd5866b8,0xbcd042a9,0x3c3bdb01,0x3be22cf6,0x3c08c849,0xbba74439,0x39bdf67d,0x3b8fe979, +0x3b584778,0x39400ebb,0xb8943d9a,0x3af39399,0xbb5218b5,0x3b145d39,0xbaab79b0,0x3b529d2d,0x3cb6ec1c,0x3c4eb5f9,0x3c944e21,0x3bfb2486,0x3a8842a3,0x3bf9098a,0x3b80f1e5,0x3c09dbcd,0x3c39fdeb,0x3cb92635,0xb9466fa3,0xbc6d467f,0xbce4495c,0xbc8047ec,0xbaf7c2a3,0x3c0f7da7,0x3cb1748c, +0x3b204c88,0xbcd7769a,0xbd46ef59,0x3ddc87bb,0x3d6d2025,0x3d204cff,0x3d1f27fc,0x3d0df0f9,0x3ce4b3ba,0x3c8722eb,0x3c21ad95,0x3bd87c9f,0x3b7f8190,0x3abad0f7,0xb8df452e,0xba094699,0x3c13473f,0x3ba4c389,0x3bd6ed34,0x3c6b5eb0,0x3b9a0bd7,0x3b94d36b,0xbb8cf9b6,0xbbbaa948,0xb7f6276d, +0x398fb688,0x3c87d126,0x3c882c51,0x3c64c970,0xbba9c3f6,0xbbe14bea,0x39cbcea9,0x3c8f9010,0x3c73cc60,0xbcb827db,0x3c965d6e,0x3d5ad029,0x3dc3b5aa,0x3df393a7,0x3d27d23f,0x3d2556ca,0x3caf96e4,0x3c9421a7,0x3cbf2b80,0x3c8d51a1,0x3c8d912a,0x3cc8412e,0x3ca8fa83,0x3c763f5f,0x3c54efa7, +0x3c805aa9,0x3c46b841,0x3b81ef0d,0x3b725da9,0x3bc2063d,0x3c488a46,0x3c299a63,0x3c410976,0x3b57d34d,0x3b26dfe3,0x3a0cedea,0xbc21b9ee,0xbc0907a8,0xbc5a3a25,0xbc1a1433,0xbca849bc,0xbc1cbb4f,0x3c941d99,0x3cd427b2,0x3d35ebf8,0x3d69419f,0x3d990577,0x3d970eb3,0x3d6e4e8b,0x3d45d5dc, +0x3cf1628d,0x3d14e3c9,0x3ce1718e,0x3ceb25cf,0x3cc06c23,0x3c97bf55,0x3c303853,0x3c2c4852,0x3b87ee58,0x3aebf739,0xba91e757,0x3bbe28b8,0x3c2c2e65,0x3c491a47,0x3c56fef2,0x3c586588,0x3c661b6d,0x3c138782,0x3bfc1fe5,0x3c05332b,0x3bdc9d8d,0x3bf57964,0x3bf62807,0x3c8a86c9,0x3cafc944, +0x3c968ac6,0x3cc70d5e,0x3cd524db,0x3ce440ed,0x3ce5e465,0x3cd4252a,0x3cb8b919,0x3c15d618,0x3bddc5ab,0x3c4debd8,0x3cda02eb,0x3b3e0f64,0x3bf3e0ae,0x3c8775d8,0x3c8e09ec,0x3ca75be5,0x3c960166,0x3c88e085,0x3c7e5429,0x3c81769a,0x3c4df70e,0x3c756bc5,0x3c031cbf,0x3be536e6,0x3b85e647, +0x3bf59cc5,0x3c2ba8ff,0x3c720334,0x3c78e092,0x3c916a34,0x3c69fb3a,0x3c1a9797,0x3c326eb4,0x3c13dad1,0x3bf85e86,0x3bc34a1d,0x3b7e914b,0x3bea582d,0x3c2bc62b,0x3c725d10,0x3c567767,0x3c389ec6,0x3c276826,0x3c204b8e,0x3c0a5248,0x3b81e4aa,0x3b8ee28c,0x3c4be1fe,0x3c623d0f,0x3c472f22, +0x3c1e8d43,0x3c4730c2,0x3c30a6a6,0x3c22979d,0x3c1a7870,0x3c0b53c4,0x3c380ff4,0x3c78bbbc,0x3c6d45b4,0x3c4d2daa,0x3c72711d,0x3c632004,0x3c251069,0x3c2f545b,0x3bd7bbc9,0x3c143ed4,0x3b7b480f,0x3b174590,0x3b3a08b2,0x3b1f571a,0x3b39d2b2,0x3b5089ad,0x3b633b6b,0x3b84f31c,0x3b9ed35c, +0x3bd7bf96,0x3c0fcee9,0x3c3f9872,0x3c68e6a6,0x3c5a1ab2,0x3c5c8103,0x3c631942,0x3c6ad2c9,0x3c1dc499,0x3c0878e7,0x3cb5d313,0x3cbf554b,0x3c46a6f3,0x3ca1bf43,0x3cbeb021,0x3c7e66c7,0x3c83688b,0x3c82dbf2,0x3c63a7c5,0x3c78c613,0x3c7fa671,0x3c7535e5,0x3ccabeb4,0x3ca4194d,0x3c62023e, +0x3cbd5853,0x3ca2c316,0x3bc36b7c,0x3c02d191,0x3bf93820,0x3bed9c6d,0x3be460c2,0x3bd7a4e3,0x3bc4ff6d,0x3be5b746,0x3c005238,0x3c0a42bc,0x3c18499c,0x3c239120,0x3c3b87ef,0x3c337c76,0x3c2f3629,0x3c26554e,0x3c23b18f,0x3c3c7826,0xbc65469e,0xbc57d78b,0xbc43a2b7,0xbcc7f402,0xbc872926, +0x3c3f903c,0xbcc3b090,0xbc87d65e,0x3bc95c59,0x3bd1a9b8,0x3bd932b6,0x3c10998f,0x3c0c53c9,0x3c190ca8,0x3c46f8f6,0xbc873448,0xbcc181ae,0x3c8449d8,0xbc7134a7,0xbcc00461,0xbc453df1,0xbc4ad19f,0xbc68ca7a,0xbc6b037c,0xbc67e71f,0xbc6a6200,0xbc78f2a6,0xbc6b669e,0xbc69cb4b,0xbc6e4348, +0xbc7c4700,0xbc8415b3,0xbc865628,0xbc92ed4d,0xbc8ead7a,0xbc62ba1f,0xbc774aa1,0xbc5811be,0xbc9203fe,0xbc16a231,0xbc71a21f,0xbc825a5f,0xbbea5560,0xbc07a3a9,0xbc0a67bd,0xbc287881,0xbc7f375e,0xbc93deac,0xbc981d1d,0xbc58ac9b,0xbc5eedf6,0xbbdfcdb3,0xbbc1d253,0xbc53aca6,0xbc0d7f37, +0xbb5d4053,0xbc85e999,0xbc6056c5,0xbc9a23a8,0xbc9c845b,0xbc9bf55e,0xbc98d76a,0xbca4207e,0xbc8fd136,0xbc9383fe,0xbca58a34,0xbcb67c9b,0xbcca2c9d,0xbcd1bfef,0xbcf77dfd,0xbcdeaa4a,0xbc817069,0xbc94d771,0xbc82ec48,0xbc611ade,0xbc9b8e59,0xbc4b96fe,0xbc390143,0xbb08b7d1,0x3a14a5b9, +0xbb053db9,0xbb20625a,0xbb1e2b3d,0xbc43b760,0xbc00efcd,0xbbdf14a6,0xbb96571a,0xbad9d80a,0xbab46bec,0xba1791ab,0xbb323dd2,0xbc130544,0xbc2cd844,0xbc6f408a,0xbca72280,0xbcbeb992,0xbcb8d5b7,0xbcbdb57a,0xbce32e7d,0xbcba62fe,0xbcb7a809,0xbcd1c804,0xbcf42d02,0xbd0d9364,0xbd1421a1, +0xbd34de54,0xbd19006c,0xbc7dcd88,0xbcc16670,0xbc044c29,0xbbb944fc,0xbc3f3929,0xbc250c77,0xbc42dc6a,0x3b21613e,0x3c172cec,0x3c2b6073,0x3bcb32a6,0x39f8c301,0x383bb542,0x39cbf557,0x3b22a0a5,0x3c358fa8,0x3bfdf5c0,0x3c141efe,0x3c082323,0x3c1b4d8d,0x3b13acf3,0xbb78f9f6,0xbc7047cc, +0xbcdd59cc,0xbd02975e,0xbd046f50,0xbd045c2c,0xbd130ae7,0xbce93155,0xbce9e5c0,0xbd116f2e,0xbd304fd2,0xbd4ed9a1,0xbd58dcbc,0xbd826779,0xbd403d8e,0xbc166274,0xbc978dd4,0xbd4a8b3e,0xbd52fdc6,0xbcc39638,0xbb82915f,0xbb7bf82e,0x3a6b0df5,0x3a9ddb56,0x3b87b727,0xbbae2252,0xbbfc2304, +0xb8cae761,0xbb2ad466,0x3a4a2836,0x3bc8fa1c,0x3c28dee7,0x3c32a5b0,0x3b3bb48d,0x3a83d4c5,0xbbb17fa0,0xbc783b96,0xbc6bf6f7,0xbc11426d,0xb944a2a1,0xbc3fe2af,0xbc5a7e35,0xbc590d24,0xbbcb6f3c,0xbbaef344,0xbbb3dc69,0xbbcdc35c,0xbc943b26,0xbd0788ed,0xbd4a6982,0xbd6aea04,0xbd5abcea, +0xbd62dd36,0x3bc74c6c,0xbce879b9,0xbd13338e,0xbca1df7e,0xbafc4d74,0xbc1e70e8,0xbc5aa21f,0xbc5d8847,0xbbf8fd77,0xbbcacdce,0xbbab0ea0,0xb92d4a14,0xba9aa535,0xba3f2068,0xbb9fec60,0xbb34cd61,0x3c24a2f1,0x3b9dfeb3,0x3b248bf5,0xbbdc9cbe,0xbc845c42,0xbcd76fc2,0xbd07cfce,0xbc980ad1, +0xbc91be6f,0xbd005e13,0xbcc6105c,0xbca61b32,0xbc9a1057,0xbbd6e277,0xbc155308,0xbccf3f69,0xbcdea2aa,0xbcab71a4,0xb9911686,0x3b20d418,0xbda0d0ba,0xbd4f334b,0xbc28c712,0xbb48d081,0xbc15b920,0xbc359cdf,0xbbe4e779,0x3a062e8e,0xba76a2fd,0xba23d48c,0xbb7624a5,0xbade1b07,0xbb9e4cb5, +0xb9e05b86,0xbbd09683,0xbb86a2fe,0x3c130693,0x3baa5956,0xbaf74cc0,0xbbac28ca,0x3b1c7071,0x3a8c5e84,0xbb4ea77f,0xbc4c0660,0xbcdeefd0,0xbd274020,0xbd3891b3,0xbd1f8ab1,0xbcff1f2b,0xbc9f3195,0xbd023d42,0xbd9d2784,0xbdb7d1d4,0xbdd7d42e,0xbde67210,0xbdc2f2d9,0x3cf3eadf,0x3d7c8b17, +0x3d4c7295,0x3d1330b3,0x3d19308a,0x3cbfee96,0x3c837f8c,0x3b9a8c73,0x3bbb4495,0x3b5aac47,0xba8c7bba,0xba8f28cc,0xba143722,0x3b2ea690,0x3acbd5d0,0x3b1e87d9,0x3bd7222d,0x3ba957c4,0x3a30e954,0xbbda2c2f,0xbc0d4cc2,0xbc6ed34e,0xbc9f2d4e,0xbc4bce50,0xbc8702cc,0xbcc172bf,0xbd514e6f, +0xbd6b3cd6,0xbd4350bb,0xbcdb6592,0xbcce792b,0xbd24b51b,0xbd9a3794,0xbda5a71f,0xbd802442,0xbc060ac6,0xbd706166,0xbcfafb90,0x3c0cdf11,0x3bd7f7f4,0x3c2a4869,0x3c3566bc,0x3c3e0509,0x3c331923,0x3c28737f,0x3c04c5c7,0x3bb06978,0x3c278929,0x3bfc3671,0x3a6d3e95,0x3a4450e4,0x3b242c42, +0x3c2b6861,0xb9df0193,0xbb98ce02,0xbc05ecb6,0xbc03885d,0xbc0b9433,0xbc586556,0xbcd13582,0xbd25412c,0xbd5ca8ca,0xbd8619ce,0xbd85e630,0xbd67a119,0xbd1f7486,0xbcc34bb7,0xbc3515b6,0xbc2758de,0xbc663efb,0xbca00d5b,0xbd3c2dc4,0xbc1446ed,0xbc043f21,0x3c82cda5,0x3c072c3e,0x3c2bb24a, +0x3b951339,0x3b9308f4,0x3bc4833c,0x3ab1fbaf,0x3a90308b,0x3ab4174c,0x3ae756b9,0x3ba380a5,0x3be5acac,0x3bef9f4f,0x3b921d75,0x3b63553a,0x3b4a7620,0x3bc05fc4,0x3b6b077b,0xbb5c3459,0xbc1cf166,0xbc73fad7,0xbc5370f1,0xbc1f2632,0xbc27f493,0x3bf2329b,0x3caaf2d8,0x3cfa3503,0x3cf4be8f, +0x3ca7a381,0xba0a6958,0xbb5e17e5,0xbc0f3440,0xbc571c26,0xbc27153f,0xbb896ff5,0xbafdc489,0xbb68c6cb,0xba38e863,0x3bbaace0,0x3bd96c16,0x3c0bb024,0x3c197625,0x3c247d21,0x3c1c36fc,0x3bdd5712,0x3bf3e3fb,0x3be785a1,0x3ba6f4d1,0x3bd5a87f,0x3c05f539,0x3c2e54a5,0x3c0bbd53,0x3b893ee2, +0x3b39aecd,0x3c04d5fb,0x3c3f6c7b,0x3c74f902,0x3c476c84,0x3c258499,0x3bf461c8,0x3b791a65,0xba342625,0xbb56a92f,0xbc1c4ed9,0xbc55e24d,0xbc87d647,0xbc595e4e,0xbc3f710d,0xbc2f6c1f,0xbbff0c77,0xb99c4ef0,0xbb1553a3,0x3c28c694,0x3a82a848,0x3ae8bdd9,0x3b3279af,0xb98af0c7,0xb884a988, +0xbb2fde55,0xbba21ad0,0xbbb5ed5a,0xbbebae9d,0xbba89987,0xbbc79918,0xbb10cad9,0x398e5550,0xbb7307ba,0x3a955eca,0x3b7d0e9b,0x3c0937d4,0x3c1c5f1a,0x3bbd9a5a,0x3bb25334,0x3b862f58,0x3b697447,0x3b5d1fca,0x3b61b877,0x3b428724,0x3af5059f,0x39b12eac,0xbadc372d,0xbb9d644d,0xbb863515, +0xbb73afc9,0xbb2a07a3,0xbb08751a,0xbb10e1dc,0xbb5c660b,0xbbcfe95a,0xba047da9,0x3c8ba038,0xbc07f39d,0xbaa32539,0x3c5f7a35,0x3c6530cd,0x3c6c015d,0x3c801980,0x3c7fbf0d,0x3c81c9e7,0x3c86abc6,0xbb65223a,0xbbff7e40,0x3c85851f,0xba39dede,0xbb908787,0x3b824245,0x3b0ae515,0x3aeaf6c0, +0x3ab04363,0x3a8699e5,0x3a2c4623,0x3859b5ff,0xba4f3034,0xbad48c7c,0xbb1e3fc8,0xbb43412c,0xbb611a37,0xbb8db1af,0xbb65ba0e,0xbb5441ec,0xbb3f77d8,0xbb4a1121,0xbb53adb7,0x3c9bfdd6,0x3c715c25,0x3cadf41d,0x3c87074f,0x386a4218,0xbcf5a95e,0x3cbdd4ae,0x3b930d02,0xbcb84c94,0xbcc1ec88, +0xbcc8bd66,0xbcd2b75e,0xbcdf5637,0xbce30720,0xbce87685,0x3b6ec54f,0x3cb0e9c2,0xbcfad3b1,0x3a98aae8,0x3c86814e,0x3cae0a5e,0x3c892c5c,0x3c9bc606,0x3c9a73d0,0x3c9dd3cd,0x3c9f32ec,0x3c9caef1,0x3ca33849,0x3ca5865e,0x3ca46c38,0x3caa1ed3,0x3cac69b1,0x3cac576e,0x3cae8f8a,0x3ca3cc4b, +0x3c821742,0x3c8a0ab9,0x3c60ce48,0x3cc0336f,0xbbe1092f,0x3c9ac46e,0x3be698e6,0x3c0d5be5,0x3c82b250,0x3c3dd71f,0x3c8a56c5,0x3c8c267a,0x3c304508,0x3c7ab001,0x3c51510c,0x3c6abb68,0x3c08fd91,0x3c379d4c,0x3c8891c9,0x3c62b8c1,0xbbb4b167,0x3cb69a37,0x3ca8553a,0x3cbe2513,0x3cc16db5, +0x3cc74769,0x3cc60d8d,0x3cb9fd54,0x3cc940a8,0x3ccd71fb,0x3ccc1e9b,0x3cd8fa97,0x3ce19848,0x3cdfe529,0x3ce74f79,0x3cc6f966,0x3c65f45a,0x3c7116c1,0x3c49aa64,0x3c9dbd24,0x3c56b62a,0x3c61d993,0xba3e135b,0x3c316a3a,0x3c3b7254,0x3c166dd3,0x3be87273,0x3bcdf099,0x3aab50f7,0x3baebf76, +0xb54b97bd,0x3c29ae28,0x3c2cc145,0x3c865a2c,0x3c51f774,0x3c46ebad,0x3c43e94d,0x3c8ecb6b,0x3cc1ef73,0x3cccbd5b,0x3ce1204e,0x3cef2e73,0x3cf47363,0x3ce97ff2,0x3d042425,0x3d0b81c1,0x3d09e0d1,0x3d17880b,0x3d1dd8c1,0x3d16e1ae,0x3d1aade2,0x3ce839de,0x3c1fff79,0x3c54a0ed,0x3c3ea679, +0x3cb46c41,0x3c87c435,0x3c975f2b,0x3ab62026,0x3c712b1e,0x3c7292ab,0x3c2179f5,0x3c17a8b4,0x3b26f992,0xbaec161e,0xbb4a7edb,0x3b8bd98e,0x3c31d287,0x3c6b902d,0x3c943fc2,0x3c62e036,0x3c938ded,0x3c4a9752,0x3c9a77e4,0x3ce3e4c5,0x3d0690b7,0x3d160721,0x3d1ff893,0x3d22a3db,0x3d114bfb, +0x3d23748c,0x3d220973,0x3d1cf4b6,0x3d3621ef,0x3d3fc35f,0x3d39f01f,0x3d3aa97e,0x3cf72f86,0x3b88c928,0x3be8b52b,0x3c819830,0xb95dee10,0xbb1d7f7b,0x3bbdda6b,0xbb143e2d,0x3bc4c38b,0x3c272ae2,0x3bb81a79,0xbb0487a1,0xbb77bf41,0xba18f062,0xbac5b433,0x3b006688,0x3bdbb67c,0x3c6ff22d, +0x3c8c17b6,0x3bfc5c0f,0x3c9157c4,0x3c65d025,0x3c99f750,0x3ccb5125,0x3c59345a,0x3c488753,0x3c40e3d9,0x3c0a59a9,0xbab1dbb0,0x3c8ba0fa,0x3ce12c9d,0x3d1fa1b3,0x3d115d0b,0x3d14af7b,0x3d2eefdb,0x3d05b651,0x3cd4963d,0x3c9357eb,0x3c30f031,0x3c47fe8b,0xbabbef5b,0x3a12c400,0x3bb58d71, +0x3c85c8f3,0x3b0f2db6,0xbbe07ed1,0xbc1c94f8,0xbba356bd,0xbb487fbf,0xbb8c0924,0x3ab616a2,0x3a8acba9,0x3aa4228e,0x3a867a83,0x3bc3ef93,0x3c9cee25,0x3c33ee48,0x3b4a5481,0x3c4f7ab8,0x3cea01a4,0x3d0de92b,0x3d34ab62,0x3cebba21,0x3c4276bd,0xbbd1878c,0xbc2476dc,0xbbedbc9e,0x3beb20dd, +0x3c4ec191,0x3c7306d5,0x3b19b356,0x3c7a6b64,0x3c6f238d,0x3bd42add,0x3c3b6d0b,0xbd6bf845,0xbd2caf97,0xbcf05361,0xbc7f61f4,0xbc706aca,0xbc13043c,0xbbb1da2a,0x3b0a3817,0x3acaad75,0x3b092025,0xbac5c422,0x3910c8c1,0xbb2d5ac1,0xba84dfa5,0xb848277b,0x3b64a7fa,0x3bf98f02,0x3c714960, +0x3c8e011e,0x3c3bdd14,0x3be1f915,0x3b5c9c21,0x3bc8cfda,0x3ce0cb5f,0x3d20e0a5,0x3d23ea36,0x3d1b4c64,0x3cf8d7b5,0x3cbbf3f5,0x3ce72d03,0x3d3d2ab5,0x3d8280f1,0x3d86a641,0x3d4ed30e,0x3d17ed30,0xbd2ced8a,0x3db65ee7,0x3d8028bd,0x3d69aecd,0x3d6214f7,0x3d199840,0x3d085e71,0x3c9265d0, +0x3bd6d77e,0x3bd0fbc8,0x3b3aad18,0x36a62b16,0x3b1cc429,0x3add1f36,0x3b2692cd,0x3b56919d,0x3bb3614d,0x3c245412,0x3c4c7d0b,0x3be256d7,0x3b4d969d,0x3ca41c2f,0x3cd8735f,0x3cc7f9f8,0x3cc294a9,0x3c3b9eaa,0xbbccd970,0xbc51559c,0xbc36f307,0xba165263,0x3b7a2249,0x3ba58369,0x3ac19cef, +0x3c4f8bda,0x3d3b68a2,0x3de70f7f,0x3dba84ca,0x3db19187,0x3d2137db,0xbb43bfef,0x3c729c98,0x3cad6336,0x3c6511d8,0x3c776890,0x3c901281,0x3c6a58e4,0x3c6c9460,0x3c225bf7,0x3c218362,0x3c019981,0x3c01b42b,0x3afed0c3,0x3aa83d27,0x3bf81b27,0x3c0c9b1b,0x3ba5a5ac,0x3a1fc523,0xbc126f9e, +0xbc5f6d82,0xbc2340b0,0xbc79bcc6,0xbc42fc8e,0xbbd192e7,0xbb997f3f,0xba7c3218,0x3c2d207e,0x3c43bf8f,0x3cf577de,0x3d74d382,0x3db18665,0x3dcce720,0x3dd93ea5,0x3dbdfe77,0x3d07163c,0x3cee6cfb,0x3be4d1cf,0x3c910aed,0x3c37b124,0x3c4f75a1,0x3c3b4554,0x3c1e06dc,0x3c257f13,0x3c080f8a, +0x3c0b6210,0x3bacdc66,0x3bde54af,0x3c0817ae,0x3c52facf,0x3c773a22,0x3c89e7a1,0x3bc90f3e,0x3b17e347,0xbaa3326e,0x3aecfd04,0x3b3b2790,0x3a1e8038,0x3c25c1e7,0x3c5da373,0x3c669feb,0x3cbb48d0,0x3cd096d9,0x3cc37538,0x3d0a023e,0x3d2e0670,0x3d51d6ab,0x3d15d8d1,0x3cf06f94,0x3cdb41ca, +0x3cdc10c7,0x3cb45658,0x3c9e33ed,0x3c809b54,0x3ca0bcbe,0x3c840ee1,0x3c86bb71,0x3c74820a,0x3c7bed92,0x3c457f10,0x3c689b3e,0x3c3acc0b,0x3c79512a,0x3c069bad,0x3c29445f,0x3c0d97e9,0x3c41a718,0x3c43efd6,0x3c5b632e,0x3c6efdda,0x3c9002fa,0x3ca17bff,0x3c9c2302,0x3c9708c9,0x3c928020, +0x3c8e9f3d,0x3c8782ed,0x3cacd457,0x3ccfa606,0x3cf2b743,0x3cdb7bec,0x3cbbf965,0x3cb2ebbb,0x3cafaec0,0x3cadfa14,0x3c9a5996,0x3c9deb11,0x3c4e0bfb,0x3c4dc0cb,0xbb71e7e7,0x3c17af82,0x3bbb151f,0x3b997612,0x3c0c3b57,0x3c00d637,0x3c32d7f0,0x3c531f32,0x3c260c3d,0x3c6a9efd,0x3c678463, +0x3c6bf67b,0x3c32e36a,0x3c433fe4,0x3c87ec81,0x3c767598,0x3c070d67,0x3c90f980,0x3c584817,0x3c4bb544,0x3c3b9897,0x3c1f8fa6,0x3c0bf1d5,0x3bdaf32b,0x3c1d7c8c,0x3c45fc7c,0x3c822e9e,0x3c9daa35,0x3cc0982c,0x3cdb5a40,0x3cc0d80e,0x3ca93135,0x3c954063,0x3c81db5d,0x3c4b9445,0x3c6000dc, +0x3c44daad,0x3b6c34bd,0xbc2d09e2,0x3c7c19ce,0x3bab35f7,0xbbfd71c8,0xbc0f4735,0xbc20c056,0xbc245198,0xbc435831,0xbc5596b4,0xbc646122,0x3bd6d9a3,0x3c880d6b,0xbc361393,0x3be8b934,0x3c77ff73,0x3c87b517,0x3c67178a,0x3c669088,0x3c528963,0x3c4a2260,0x3c3fcaf0,0x3c2ab327,0x3c4633a2, +0x3c542ed7,0x3c5d21ec,0x3c6eb5c4,0x3c7c4371,0x3c8ec8a1,0x3c838650,0x3c7f2449,0x3c723132,0x3c67c929,0x3c72a347,0xbc8f7630,0xbc6a4244,0xbcb684c4,0xbbaf6ef6,0x3c6365c3,0x3d0af902,0xbc5477ad,0x3c2e5d48,0x3d022a14,0x3d08d224,0x3d076324,0x3cf77ce6,0x3d0851ef,0x3d0ac567,0x3d0d0d2d, +0x3c393aaf,0xbc1e6476,0x3d1c414f,0x3c558c09,0xbb997657,0xbcba2995,0xbc7fb578,0xbc969c32,0xbc9c09cb,0xbc9a5d0b,0xbc999e6b,0xbc99aa6a,0xbc8f7184,0xbc8fb78c,0xbc97f9fb,0xbca231be,0xbca6c67f,0xbca39aab,0xbca6720e,0xbc9ca477,0xbc72ac4e,0xbc86acb4,0xbc769185,0xbc940666,0x3ca59935, +0xbc55cd71,0xbb3f6993,0x3b460936,0xbb97a5b2,0xbb6f519c,0xbc2817ec,0xbc304fdc,0xbbc687a2,0xbc4edf52,0xbc2b5263,0xbc06cfcf,0x3b3d9175,0x3a728d9e,0xbb53cf70,0xbbb491c2,0x3c966059,0xbc9d0008,0xbcaeceeb,0xbcbcadb1,0xbcd72114,0xbcd11cb0,0xbcca60ea,0xbcc57bf5,0xbca63fc3,0xbca8b39c, +0xbcc28894,0xbcdaee37,0xbce3c2e4,0xbcccd5c9,0xbccd78fb,0xbcab7e89,0xbc368fd0,0xbc76793d,0xbc888be4,0xbc6a5089,0xba5800f9,0xbb94fae3,0xbae5b479,0x3b944f1e,0x3bc6332e,0x3948e8f1,0x3bd12dc4,0xbb34bedb,0xbb26efdb,0xbc4b4c21,0x3a676c6b,0xbbbb9ac2,0x3c0a1073,0x3b591f28,0x3b62c814, +0x3a07364d,0x3b0acefe,0xbc4888c7,0xbcd6e3e4,0xbcd642c8,0xbd0992aa,0xbd01bb31,0xbcfeaf1c,0xbcfe7d40,0xbcb99a0d,0xbcbeb50e,0xbcfa02c5,0xbd183804,0xbd267892,0xbd1303d9,0xbd1376f7,0xbce5a091,0xbc100300,0xbc67583e,0xbc6c9025,0xbb97a8d5,0x3c0bcaf1,0xbb5c0234,0xbc0775b5,0x3bc1bb76, +0x3c209da1,0x3bfe7738,0x3be6e18a,0x3ae8647a,0xbbc0db15,0xbb26cdec,0xba7dce44,0x3b563e08,0x3c0f0e44,0x3bf0b2f6,0x3c4912ad,0x3a5ac1b0,0x3c0b84da,0xbc4098cc,0xbcffe09b,0xbd0dfe98,0xbd40df9f,0xbd33f8e4,0xbd2c5451,0xbd23e016,0xbcd40b11,0xbce03bdb,0xbd215926,0xbd44bacf,0xbd4a52f2, +0xbd21fe28,0xbd0ca347,0xbca112e0,0x3bb61e45,0xbba7ef4d,0xbd5a0486,0xbd224e78,0xbc8bfbdf,0xbc0466ab,0x3c11e4a6,0x3c3aa7c6,0x3b9cf11f,0xb93862df,0xbbbf87a7,0xbc05ad50,0xbb2a2403,0xbb89e877,0xba068abf,0x3bcaff8f,0x3c3b97d1,0x3c11166f,0x3b962d3f,0xbb683d3c,0x3b990bfa,0xbbd51727, +0xbcfb5bb6,0xbcae4c91,0xbcb082a1,0xbc3577cb,0xbc335149,0xbc388989,0xbc89fc20,0xbc8cd560,0xbc5ddc8f,0xbd020af7,0xbd3f39cc,0xbd5cae32,0xbd80f7e0,0xbd76bfce,0xbd407163,0xbd31d37b,0xbc94e224,0xbc85ff9b,0xbbf26869,0xbc06c2f5,0xbc5fddd0,0xbc1e815e,0xbc193cae,0xbbe3454d,0xbbe4551d, +0xbbba97b7,0xbbcb3933,0x3a46a2b4,0x3a93f910,0xbad708b8,0xbbd539c1,0xbb85848d,0x3c0e0d04,0x3c061d68,0x3c79a907,0xbb5d8af2,0xbcd17e1b,0xbd03f43c,0xbd4d937c,0xbd23385b,0xbd00a443,0xbc9f8a1d,0xbc68ffda,0xbc396bb0,0x393a9801,0xbade49cb,0x3adbe820,0x3b27e0d5,0x3b54d450,0x3a99188b, +0xb8e35cb0,0xbc5ce548,0xbd749799,0xbd5e509e,0xbcd77b5b,0xbca357d6,0xbc1112fa,0xbc27ef21,0xbb86bc5c,0xbb850436,0xbafe3e9c,0xba5893f6,0xbb3841ac,0xbb42b851,0xbb8aa295,0xbaf2f0b1,0xbb0c653f,0xbbf2ede8,0xba8a26ee,0xbaa47125,0x3ae1b94b,0xbbfe7d54,0xbc57576b,0xbbe9a1cc,0xbc022642, +0xbce51f70,0xbd5351d1,0xbd8c7144,0xbd93595a,0xbd71afc7,0xbcf18f82,0xbd33ff0d,0xbd86304f,0xbdb3855f,0xbdbc06b8,0xbda096f9,0xbd815ec1,0xbd6bebe9,0x3c231a03,0x3d673714,0x3d6f5665,0x3d228eca,0x3d22685b,0x3ca39c86,0x3c4bfacd,0xb94fdc13,0x3b624ba4,0x3a989088,0xbaab7a84,0x398727e9, +0x3853c1eb,0xbb12573b,0xbae2935e,0x3ab7e843,0x398a2d76,0x3bc5871b,0x3c5c4c8d,0xbbc0aee6,0xbc504e3e,0xbc93f513,0xbcc691ae,0xbceb8850,0xbcde7ccc,0xbcc4f2b9,0xbcbd191f,0xbcaeabd3,0xbc8979c8,0xbcb63d94,0xbcd977f2,0xbcfa1378,0xbda2e6f3,0xbdc63bf3,0xbda6a98f,0xbce89fbc,0xbc8719f4, +0x3c4c2ddb,0x3d29b5ec,0x3cbc9873,0x3c8e4b77,0x3c9ad6db,0x3c75e726,0x3c51d51a,0x3c5f8e51,0x3be74766,0x3b8d0a94,0x3b60530e,0x3b6c6a7d,0x3be1a14a,0x3aaf40fc,0xb8db10a4,0x3aa42920,0xba617639,0x3b10b765,0xbc83d49e,0xbca9947c,0xbc90cb05,0xbc998aae,0xbc92400a,0xbcb5e2de,0xbd218b19, +0xbd043785,0xbd20856f,0xbd79d30d,0xbd577b25,0xbd48d670,0xbd34a3be,0xbcdec184,0xbc21c9e4,0x3a6c0e65,0xbbb71c34,0xbc5b17b1,0x3a0b04ca,0x3cc5bf00,0x3c4dcd9c,0x3c4d521a,0x3c07b576,0x3ba5808f,0x3bc5e5f5,0x3bac3091,0x3bd618ef,0x3bab65b0,0x3b900e63,0x3b3c8554,0x3b8c2f13,0x3bea9386, +0x3c1e1743,0x3c241583,0x3bf31319,0x3b2dab76,0xb9af93b6,0xbc308c79,0xbc8ec51b,0xbca9c855,0xbcba6ad1,0xbcaa9a45,0xbc60407c,0xbb852054,0x3bc73fb5,0x3c80ea5c,0x3ca3780d,0x3c603725,0xbb9c9325,0xbb7c6ff2,0xbc056d0f,0xbc40bf7f,0xbc27a9a3,0xbb1d5219,0x3bcac356,0x3c46eb32,0x3c0d808a, +0x3c7edca9,0x3c4cecc9,0x3c39faf0,0x3c10f9ac,0x3c5875fa,0x3c25dcfa,0x3c7982a8,0x3c165d65,0x3c65f041,0x3c1c2458,0x3c391498,0x3c0bc59e,0x3c22c585,0x3c14ae02,0x3c20d454,0x3b9178c5,0x3b68547c,0x3c099faa,0x3c28dad9,0x3c5201fb,0x3c683be3,0x3c840f03,0x3c48e03e,0x3c099fb5,0x3ba54e57, +0xbb2e82de,0xbbe9702c,0xbc4350c1,0xbc0e0a3d,0xbbe2eac6,0xbbe2bd91,0xbb0d276d,0xbb653f4a,0xbb71500a,0x3c6ce830,0xbaa8f96f,0x3b7e44b7,0x3b8931c4,0xba17fb25,0x39423520,0xbb56016b,0xbb374230,0x3b05e74d,0xbae74bc6,0xbabeb8ab,0x39fe2870,0x3bdd978f,0x3c0a16fa,0x3bc91f8a,0x3c10b381, +0x3c90424c,0x3c605445,0x3c74ff68,0x3c4f4f09,0x3c369aec,0x3c252913,0x3c13fe47,0x3c0a671d,0x3bae422e,0x3b23e96e,0xb967d723,0xbb40f42d,0xbbcd87c1,0xbc335cb3,0xbc1f96e1,0xbc0c74bc,0xbbe41160,0xbba9ad42,0xbbb23162,0xbc070d60,0x3a2d87f3,0x3c307489,0x3cb5913b,0xbb845a82,0x3c1cf892, +0x3caf76df,0x3cb9ef6c,0x3cc02e73,0x3cba54ab,0x3ccd5ed1,0x3cd70695,0x3cd86133,0x3c352774,0xba771ab0,0x3cd6a04a,0x3c5764ff,0x3b886f74,0xba7428bc,0x380af538,0xba2f2bee,0xba1bc712,0xba838b45,0xbabb6380,0xbac65e75,0xbb4b24cc,0xbb90f337,0xbbc2bae6,0xbbeda3f0,0xbc076cf2,0xbc20b1a1, +0xbc057824,0xbbf62ee9,0xbbe1a365,0xbbdd9b88,0xbc03f1aa,0x3c811141,0x3c526275,0x3cb6ee90,0xbb50d4b1,0xbcacd196,0xbd02d118,0x3bd02512,0xbc855791,0xbcf9269f,0xbd005581,0xbd00fe66,0xbcee9305,0xbd04e5c4,0xbd051e37,0xbd005fec,0xbc8e30fa,0x3b61a438,0xbd00ba3f,0xbc9a1384,0xbb7dc9ac, +0x3cae4c8f,0x3c612939,0x3c815b94,0x3c7fb9fa,0x3c836959,0x3c849133,0x3c7e77ed,0x3c88d090,0x3c898f3e,0x3c844d78,0x3c8042b0,0x3c7d2c9a,0x3c86ca0e,0x3c736ac4,0x3c64d2bc,0x3c4b97ad,0x3c66062c,0x3c71e05f,0x3c8af2bb,0xbca9c08c,0x3c4b35a4,0xbba67af0,0xba7d55de,0x3c097e2d,0x3b84ef8d, +0x3c4e9c60,0x3c0feba2,0xbb35721c,0x3ba2aa38,0x3bc488cd,0x3b86018a,0x3988ea4a,0x3b9018be,0x3b940fe8,0x3bd22056,0xbca32de7,0x3c56a0d0,0x3c9272c7,0x3c8b1569,0x3c9b0c17,0x3ca3a504,0x3ca8ad22,0x3c97d37a,0x3cb19904,0x3caf1dad,0x3c9f7d7f,0x3c997d87,0x3c95aba3,0x3ca818b0,0x3c85c656, +0x3c61bad2,0x3c296740,0x3c44d3bc,0x3c838c00,0x3c488f52,0xbb0f1ce1,0x3b72cc52,0xbc1a49c6,0x3b8bcb26,0x3ba745c8,0x3b3931b0,0x3a3f116a,0x3be9b85a,0xbc0dd9c1,0x3bd34672,0xbbcb6b24,0x3b699c03,0x3ab2a597,0x3c1de93e,0x3bfcc552,0x3b8bd642,0xbb630a12,0x3bdd816d,0x3cb59cac,0x3c96705c, +0x3cade164,0x3cb88274,0x3cc207e2,0x3c9909ff,0x3cdbb6e3,0x3cdddead,0x3cb9f857,0x3ca6cfab,0x3c934e11,0x3cc3351b,0x3c6e24b5,0x3c1f01c5,0x3bd87980,0x3c2bed9c,0x3c6ef171,0x3c0ed0e7,0x3b0bc8f5,0x3c070323,0xbbd75ad0,0x3c0934ac,0x3c614aef,0x3c03485d,0x3c48e16e,0x3b8bb57a,0xba6f24c9, +0xbb72d473,0x3b223ee2,0x3c08e615,0x3c7c2a9b,0x3ca963e1,0x3bd111c4,0x3c6370c3,0xbbaaa2e7,0x3ba75443,0x3cb8bc95,0x3ca4082d,0x3cd9f22e,0x3cf55706,0x3cfbc069,0x3cb46e72,0x3d0c2725,0x3d0624f4,0x3cd1bc40,0x3cc4243d,0x3cb68882,0x3cf50938,0x3c84e0e7,0x3c0295e2,0x3b67de83,0x3b94e9fd, +0x3cf9f1a5,0xbc6b451b,0xbd27f1b5,0xbca74437,0xbb410402,0x3a09d5fb,0x3b984b7f,0xba598128,0xbbb39a40,0xbbe2e7d4,0xbb16ac85,0xbb034b7b,0x3ab892ac,0x3b74161a,0x3c2c330f,0x3c781b0b,0x3bb8747f,0x3c7fd751,0x3a4a87d4,0x3c47ca49,0x3d079292,0x3c9fa695,0x3cb09652,0x3b9b0ed0,0x3bb28b30, +0x3c4fcdf0,0x3cdc0f33,0x3d1703d3,0x3d4056b6,0x3cd06889,0x3c6d8df3,0x3c8ad1d9,0x3c00e1f9,0x3bec93df,0x3c3b2b25,0x3ca56a51,0x3c1eb7ef,0x3c400b2e,0x3b67d29f,0x3b9e37e6,0xbb53b3e5,0xbc2f234b,0xbbfccf76,0xbb5e9515,0xbb888a5a,0xbb8cbcb4,0xbba525e5,0x3ac1aa30,0x3b08ba9a,0x3aa901a3, +0x3ac578f9,0x3b0bc28b,0x3b706dc5,0x3bea0bc8,0xbaf04f00,0x3b2bef41,0x3c51000b,0x3c137678,0x3c9d48d5,0x3c29f30f,0x3afc13b1,0xbbcfb60c,0xbc570425,0xbc20ba7a,0x3be96647,0x3bb8feed,0x3bcc87b1,0x38668a29,0x3bbba66a,0x3bab7c7f,0x39515754,0xbbc25bba,0xbcd9696e,0xbd401691,0xbd363099, +0xbccc614d,0xbc9eac8a,0xbbbfcfaf,0xbb97eb25,0xbb3ceeff,0xba45f903,0x3b741286,0xba033765,0x3b0d086b,0x3a95423a,0xba45fa1f,0x3a0f44bd,0xb8b78394,0xbc08e46b,0x3c240d39,0x3c03bb5f,0x3bc43008,0x3bfb9eeb,0xbb9c4a5f,0xbb82700b,0x3ba141ad,0x3c5fbaaf,0x3c91ae4b,0x3cca90cc,0x3ce7fc11, +0x3cf89677,0x3ced0393,0x3ce4b0bf,0x3cb02f87,0x3ca8eced,0x3cac621b,0x3cad3f48,0xbc0bf410,0x3ccc5a09,0x3cf15a73,0x3d46c12b,0x3d38e361,0x3d07c162,0x3cb73f75,0x3c382b00,0x3b4e06e4,0x3b739694,0x3a29b69d,0xbaf3dd0f,0x3a9f267a,0x3998f400,0xbb2a460b,0xb930d057,0xba241dec,0xbb296267, +0x3c28ad02,0x3b49ac9e,0xbada3a04,0x3c4bcb18,0x3c4976ca,0x3c5dfa5c,0x3b776bd0,0xbb935e75,0xbc8c3791,0xbc36b41e,0xbc6857eb,0xbcbfdb87,0xbcdab603,0xbc9e2d39,0xba0030b8,0xbb91c3bc,0xb9062978,0x3c84c911,0x3c190155,0x3d9453bc,0x3ce1bcd7,0x39a03cf7,0x3c7a8b97,0x3c856ba2,0x3c5b17f4, +0x3c7849d9,0x3c67775b,0x3c234985,0x3c284b4c,0x3b442f7f,0x3b467c8f,0x3b840baa,0x3c189bbe,0x3b4e47eb,0x3ac1a490,0x3b1701b4,0x3afb27a4,0xbc08cd81,0xbc0dbf84,0xbc5ab272,0xbcb20849,0xbca37d3d,0xbc8c2c32,0xbc54d42c,0xbc80ab5a,0xbaffd19d,0xbafd792b,0xbc786c45,0xbc5b0b39,0xbc23a576, +0x3b416b25,0x3d049201,0x3d60b158,0x3d96a145,0x3d91aaba,0x3cb78c3b,0x3c27f3b9,0xbb818800,0x3ba6dcea,0x3aeb1968,0x3bc4dd19,0x3c2a755e,0x3c019473,0x3c5d4514,0x3c5e184c,0x3c514a97,0x3c170967,0x3c050cdc,0x3bfffcf8,0x3c1723bb,0x3c1573ff,0x3c0754eb,0x3bc253ed,0x3b61404a,0xbb24bf9e, +0x3ae606fc,0x3b44b724,0x3b012c78,0xbc12756f,0xbc4db7d3,0xbbfd7cca,0xba9098bd,0x3b9bea8b,0x3c145fcd,0x3cb7e0cb,0x3d1516e0,0x3d55f709,0x3d43561c,0x3d1de784,0x3ce9ae17,0x3caa3b59,0x3cb39e47,0x3c8193cf,0x3bf88385,0x3c4d8be0,0x3c11fff2,0x3c1ac353,0x3c02c86c,0x3c024f4e,0x3bc3715e, +0x3c25721a,0x3bfabcdd,0x3c583ff1,0x3c084564,0x3c26ef2e,0x3c0cd920,0x3c255497,0x3c0fb730,0x3c1ab273,0x3bf154f6,0x3c8a1cf7,0x3cb4324d,0x3c92efe3,0x3ca0e6b9,0x3cafbec6,0x3cc4861a,0x3cce2deb,0x3cda53be,0x3ce5e748,0x3cef0a66,0x3cdbd664,0x3cc55459,0x3cc60a5f,0x3ca5e03c,0x3c9bd92c, +0x3c95c85a,0x3c96c487,0x3c2598cb,0x3c17ef97,0xbbe9e531,0x3c016be0,0x3acdd23f,0x3adb4228,0x3bdbd6c5,0x3bb1668b,0x3c249d32,0x3c10d441,0x3b869e0a,0x3c0994ba,0x3c2cdbd1,0x3c1de20c,0x3c0251c3,0x3c384c92,0x3c7c056b,0x3c929eaa,0x3c48d489,0x3cad2f20,0x3c959f76,0x3c955c18,0x3c8c84bd, +0x3c84219b,0x3c73ecc5,0x3c5e2e6a,0x3c74f7eb,0x3c814a02,0x3c89dbe4,0x3c909c99,0x3c9952aa,0x3c9c5b1e,0x3c904813,0x3c7c8809,0x3c58adf6,0x3c34a641,0x3c2e479a,0x3c5ad3f4,0xb994c24f,0xbc178708,0xbc64f273,0x3ba726e8,0xbbfa7b02,0xbc69706e,0xbc7a5b8a,0xbc7ce681,0xbc619da4,0xbc80bbfa, +0xbc887dd7,0xbc875e15,0xbbdcd31c,0x3bba241f,0xbc540027,0xbba68266,0x3b917dc7,0x3c72e76c,0x3c49592c,0x3c56b10f,0x3c56bb3f,0x3c58588d,0x3c5bc882,0x3c5c7f24,0x3c5d2ad5,0x3c5a818f,0x3c580e75,0x3c5948fe,0x3c590086,0x3c5f2579,0x3c536ef3,0x3c4fd7ee,0x3c4d0393,0x3c45deaa,0x3c4704ff, +0xbb88bbcf,0xbb52806a,0xbc3a4fe7,0x3c7d8360,0x3cdb5dd1,0x3cb05105,0x3c0f8bdb,0x3cc87a52,0x3cce765e,0x3cda325c,0x3cd3ba70,0x3caa1738,0x3cc4c045,0x3cc4af23,0x3cb6935a,0x3cca515c,0x3c3e3ea9,0x3cc4de94,0x3cce95e4,0x3c814598,0xbc27e801,0xbb7a40fc,0xbba5d542,0xbbba7e71,0xbbb17d30, +0xbba3c54a,0xbb86f46f,0xbb6ae612,0xbb827428,0xbbc29312,0xbbb6abce,0xbbb01836,0xbb92eac8,0xbb7cc393,0xbb4e2397,0xbb04d6cb,0xbb663929,0xbb8e83b4,0xbb56ad4b,0x3cdcdf60,0x3a9179df,0x3c0cb2a9,0x3c2dc723,0x3bb13c49,0x3bb0ea99,0x3a574758,0x3b7e9c71,0x3c129259,0x3b527895,0x3aa0b27d, +0x3b8c39d1,0x3c28f85a,0x3c0d6f4b,0x3c3d07d5,0x3ba31cd3,0x3cb0c4ec,0xbb2c044c,0xbbfaa4d8,0xbbb61c60,0xbc0acbbd,0xbc05ce4e,0xbbf9702a,0xbbb08ed9,0xbb679359,0xbb87c133,0xbc0699a6,0xbbf53b43,0xbbbef5f1,0xbada8b6a,0x3a28752c,0x3b0052b5,0x3b13d16e,0xb8481876,0xbc066aad,0xbbb0f5a1, +0x3c5b9eaf,0x3bd6179d,0x3b6c385b,0x3c2ae0db,0x3c2d6237,0x3b8cd892,0x3c39c62a,0x3a7a1671,0x3bb38ed3,0xbbd384e4,0x3bb7aebf,0xb877bd5f,0x3c56b772,0x3c2766db,0x3c3fb9ac,0x3c1070b6,0x3c5606de,0x37e2ab2c,0xbc3b8ad1,0xbc0132e2,0xbc544e96,0xbc40f0ce,0xbc20e256,0xbb961564,0xbabc01a4, +0xbb571ce7,0xbc62cebe,0xbc40908c,0xbc28bdf0,0xbb876192,0x3b032246,0x3b979d94,0x3b168cc2,0xb83c276f,0xbbe6411c,0x38c88139,0x3c8f99c6,0x3bb658e5,0xbbed1e53,0x3bd3e614,0x3c1c4475,0x3b954d6e,0x3c00e121,0x3b8181fd,0xbc025851,0xbb7a1876,0xba973d3e,0xb9fa5f99,0x3c15b356,0x3c09ad4b, +0x3c89e87f,0x3b4f56b0,0x3c43ba60,0xbb48a82b,0xbc75f006,0xbc248948,0xbc90d18e,0xbc83ebc4,0xbc5e4102,0xbbf8fcd2,0xbab1e3c9,0xbbab8621,0xbc9e2dbf,0xbc617a9c,0xbbbe5cc8,0x3bebc675,0x3c926611,0x3ca6caf6,0x3c17a66a,0x3bb60b2b,0xbcb415b6,0xbc11429f,0xbbaf02cb,0xbb578e23,0x3ca17de6, +0x3c65695d,0x3bdeb28f,0x3b3f93fa,0xbb79ba1b,0xbbd6d9bf,0xbb6b8574,0xbb174d98,0x3a3e95db,0x3b9c3358,0x3c20905f,0x3c1b1a11,0x3c6ffba5,0x3ba1acca,0x3c8db709,0x3c5ed96e,0xbc763048,0xbc6088bd,0xbcb8ade9,0xbc7e26a2,0xbc81e4c8,0xbc3bbe56,0xbc50ef4d,0xbc69a030,0xbc0a2de0,0xbce76372, +0xbd172208,0xbce7a120,0xbd014239,0xbcdec5bd,0xbc996738,0xbc0fc743,0xbcf12870,0xbc08721e,0x3c95a967,0x3bb63395,0xbc431edb,0xbc6c8e01,0xbc82a44e,0xbbbce915,0xbbcc9228,0xbb7e60fb,0xbbb1d93b,0x39843a47,0x3a6a7684,0xbb454dcd,0xbb61c751,0xbae989bb,0x3b572060,0x3bfb4158,0x3c6da40f, +0x3b41f0e4,0xbc121ea2,0xbbfda078,0xbc8c8fbd,0xbc296486,0xbc03bfd8,0xbb924919,0xba0cba5a,0x3b23415f,0x3bed27f1,0x3b61318c,0x3c0aa7b8,0x3c82da66,0x3cc12fac,0x3ca16309,0x3ba15c93,0xbc5be2d1,0xbb14ce83,0xbd0aef9a,0xbcffb776,0xbcd9e75a,0xbc472ff3,0xbbce93ef,0x3b4ea648,0xbb1db49f, +0xb92e848f,0x3a388191,0xba8ba883,0xb883b2c8,0xb8c5f6fe,0xba27bc23,0x3b82f421,0xbb1ea173,0xbba2f2ca,0x3b9451c7,0x3c59643b,0xbb11a85a,0xbc537ad6,0xbc15b6f0,0xbc5af59b,0xbcb4fdcf,0xbce134bc,0xbce1f400,0xbcd89331,0xbce6f486,0xbcdf128a,0xbd1e1994,0xbd30580e,0xbd195607,0xbcc8b328, +0xbc0110e5,0x38cd576b,0x3c0cb32d,0x3ac4f9c1,0x3cb0eb3f,0x3d27fbe5,0x3d0edb2c,0x3cf670eb,0x3c53f0e5,0x3b89202c,0xbadd96a6,0x3ae6d062,0xb9e1dfef,0xbab0735d,0xb9f11b47,0xba9eb31b,0xbb591407,0xbb17c7fc,0xb98b34a4,0xbba31fa9,0x3bf6f8c4,0x3c7576ef,0xbb9b69a6,0xbc3a0341,0xbc438d1f, +0xbc26c616,0xbc25ee59,0xbc1e58f5,0xbc5f4e87,0xbb845e78,0x3882e6f8,0x39fb38e5,0x3aa145e9,0xbb3f684c,0xbcc86254,0xbc7b9660,0xbcc04459,0xbd2f1cb7,0xbc3cb22c,0x3d58cc07,0x3d774937,0x3d57721c,0x3d0d0e4e,0x3cd0996c,0x3cc86023,0x3ca4b398,0x3c9073c4,0x3c7aa3cf,0x3beca793,0x3b1ca710, +0x395d7b98,0x3b2701b2,0x3c14676b,0x3b98eb21,0x3b2bbba7,0xbb35aeb6,0x3a48d57e,0x3b813585,0xbc220569,0xbc40e452,0xbc6a893c,0xbca2f62e,0xbc70aaa9,0xbc283bbc,0xbbaea081,0x3b5335bf,0x3b73a22e,0xbbac00cc,0xbc99c0ca,0xbce37ed9,0xbd18ec04,0xbc0a8a64,0x3c973191,0x3d0b0276,0x3d595531, +0x3c699f53,0x3ca9aa92,0x3cbfe6a1,0x3c9bdea6,0x3c81fe0f,0x3c69d344,0x3c342357,0x3c493009,0x3c3f7513,0x3c3ff890,0x3c0ffe69,0x3c31185c,0x3c09e877,0x3ba3c7a2,0x3b9b4f82,0x3be3b89e,0x3c06e979,0x3c03b555,0x3b380656,0xbb1248c7,0xbc042985,0xbc255d90,0xbc1b6d6f,0xbc7db50e,0xbc91ed75, +0xbc94845b,0xbc9f15cc,0xbc8b107e,0xbc0e12b6,0x3b27793f,0x3c5431ef,0x3c8e5ff1,0x3cce1717,0x3cd9cb94,0x3cb1ca87,0x3ca9b8d1,0x3c07d062,0x3c54fb84,0x3ca546bf,0x3c85cad4,0x3ca18e28,0x3c76bd82,0x3c35fb01,0x3bdd06fe,0x3c233e3f,0x3be59ed4,0x3c5475db,0x3bc85d39,0x3c32fbea,0x3bec302e, +0x3c311c80,0x3c146848,0x3c32a8ed,0x3c5195e3,0x3c9898ae,0x3c802c4a,0x3c2faca0,0x3c57e730,0x3c4ddf9d,0x3c79f45a,0x3c903d40,0x3ca461b0,0x3cb09269,0x3cc2b43b,0x3cd15db1,0x3ca97438,0x3c8acf7f,0x3c6aab0a,0x3c4e2286,0x3c3be1c3,0x3c17370a,0x3c38ec57,0x3bd0dec2,0x3c0190f1,0x3c5ffab8, +0x3be06a21,0x3c2a8c59,0x3c19d60a,0x3bfdb71f,0x3c07e205,0x3be8fb1e,0x3c0fbacb,0x3c5fa24a,0x3c3526bf,0x3c2028c6,0x3c43c00a,0x3c682dfe,0x3c441b43,0x3c511754,0x3c36f718,0x3c95570d,0x3bdb30e2,0x3be61ff0,0x3c0ccb82,0x3c077e4e,0x3c160630,0x3c13ad4b,0x3c163820,0x3bcfa832,0x3b8907b8, +0x3b51d6bd,0x3b4b63d1,0x3b626a94,0x3b563c98,0x3b8128df,0x3b9e1923,0x3bb5a5a4,0x3bd37946,0x3ba8176c,0x3b6886a2,0x3c5a2256,0x3c8df485,0x3c51fa1c,0x3c358f69,0x3c8c0643,0x3c7a8d5c,0x3c838f57,0x3c86ee62,0x3c71f9cc,0x3c8a937c,0x3c910ba5,0x3c8d8066,0x3c9afe68,0x3c4240ba,0x3c8d9f01, +0x3c93808e,0x3c4e5287,0x3aa8bc73,0x3b9e45ab,0x3b94bb5e,0x3ba9fe42,0x3bb1635d,0x3bbe363c,0x3bdb60bd,0x3bc7f00a,0x3bbe9907,0x3ba878db,0x3b96ef17,0x3b834d33,0x3b62f992,0x3b864c83,0x3b8f89f1,0x3b9566e4,0x3b9c8525,0x3babbee2,0xba1a95e9,0xba6cdd40,0x3b2658e8,0xbc874335,0xbc9d12ca, +0xbbb1c6a7,0xbc43eec5,0xbc8ea165,0xbc11d977,0xbc0dad21,0xbc0902fa,0xbbb93c38,0xbbf35155,0xbbe6f867,0xbbaaaea6,0xbc929ccf,0xbc579fd2,0xbb0595c9,0xbc8abe57,0xbc82a0c8,0x3b3dd4e7,0xba1a11f3,0xba38d1a0,0xba4b42c0,0xba41d215,0xba360158,0xba0c6b95,0xb9db75d2,0xba59dc8b,0xbb2462ea, +0xbb1ed199,0xbb2586b0,0xbac520a3,0xbb3b9d51,0xbb25f74d,0xba3d823b,0xba92ba9a,0x3a7a00c9,0xbb8144bd,0xbc538a7a,0xbb12be03,0xbc2fe0c2,0xbbad920c,0xbb19c5cd,0xbb8216cc,0xb97e5a77,0xbb98d002,0xbc381741,0xbc09a6f5,0xbba5f960,0xbbe259d4,0xbb945ac7,0xbb0abd93,0xbbac2f0e,0xbb135a72, +0xbc37514c,0xbb8d8101,0x39c1906b,0xbb5bd89a,0xbb1a37dd,0xbb2613bb,0xba990bc6,0x39387172,0x3a122f44,0xbac350bc,0xbbc82150,0xbbd06b84,0xbbdf418e,0xbb826373,0xbc057ab2,0xbbe46189,0xbadf0a84,0xbb26f5bf,0x3ad1e6b8,0xbbb2934b,0xbc550083,0xbbc46049,0xbc38f783,0xb9c96525,0x3a347515, +0xbb2415b8,0xbae4c851,0x3b620493,0xbc1fe15b,0xb8b49efb,0xbbdffd07,0xbb4c22cc,0xbb511e58,0x3add128e,0x3b8c489b,0xb963ea7b,0xbc10773b,0xbbae956d,0x3aeb076b,0xbb6f884b,0xbb7715b5,0xbb84d1a3,0xbb2f4538,0xbb0088e0,0xb9f32839,0xbb6b6005,0xbc4ccc0d,0xbc544da8,0xbc68fe61,0xbbf38c2b, +0xbc7cedae,0xbc3e9246,0x3994310f,0xbb8a0adb,0x3bd75be0,0xbab45521,0xb9d42c65,0x3b5be927,0xbc03dddc,0x3b0c70de,0x3c206761,0x3bd3d492,0x3c2aa597,0x3b9a5999,0xbab0096e,0xbb5b4f3d,0xb9d4f860,0x3b98bfb4,0x3c244c44,0x3c554a37,0x3bdd536a,0x3c028b09,0xbbc644ee,0xbb9a6dc7,0x399de753, +0xbc0d3549,0xbc0c8570,0xbc0c2bf3,0xbba6b71b,0xb99b3ee1,0x39305068,0xbbd5d64e,0xbc97de17,0xbca358dd,0xbca5ac56,0xbc2cf5e1,0xbcc197fc,0xbc84ee05,0x3ab5e40a,0xbb367c1e,0xbb841aa8,0xbcd82c69,0xbd53fec5,0xbcffe878,0x3befcb58,0x3b18d0f1,0x3a7d658f,0xbb09415d,0xbbc15182,0xbbf957d9, +0xbb88fccc,0xba969a1c,0x3add85a8,0x3a24e338,0x3ba3e7ff,0x3c221044,0x3c3572f3,0x3bf26837,0xbba96b74,0xbb6551d8,0x3bf69cb2,0x3bcd547a,0x3c45ea62,0xbb8c5537,0xbada747a,0x3c47ff23,0x3c71971c,0x3c666714,0x3c4b63b5,0xbc5f6663,0xbcc2e7f5,0xbc94d3f1,0xbcbce259,0xbca08372,0xbc3d91bc, +0xbbc8a0cf,0x3ba9e5f7,0xbb4cb560,0xbb8a4fcf,0xbb066047,0xbcaa3b73,0xbcb24888,0xbc809a04,0xbc19ddd6,0xbbc78385,0xbb891754,0xbba565cf,0xb9477acb,0xb8f6c9e0,0xba7fbbb0,0xba918df2,0xbb6c5652,0xbc04d806,0x3b76b735,0x3b26ba1c,0xbb8b0cf9,0xbbefe13b,0xbc916709,0xbc9b1218,0xbc584c3c, +0xbc463d50,0xbc8f6e6d,0xbbbddea5,0xbae7491d,0x3b75dd1c,0xb7e8871e,0xbbf58595,0xbc8f2124,0xbc7182df,0xbc575644,0xbc1145f2,0xbbe6bd75,0x3b98c031,0xbcab53c7,0xbcec7eed,0xbca19f18,0xbc9cc0cf,0xbbc5d418,0xbae6ae5f,0xbb287538,0xbb46c638,0x3a9d8b27,0xba5f315f,0x39fabd8e,0x3a8b85a3, +0xb7b9e3b7,0x3b0a2b4c,0xbb0686fe,0xbc3fcb11,0x3b95cbfe,0xb9a8b151,0xbbbbd0c5,0xb8ade1e0,0xbc16139d,0xbc478ddb,0xbc874d2f,0xbc95fc52,0xbcb239d3,0xbc29a5cb,0xbc14a983,0xbc864811,0xbc206a1a,0xbc93e3e4,0xbd393367,0xbd2f238c,0xbd153278,0xbcf0cb6f,0x3a9da711,0xbd48fa7c,0xbb7cd076, +0x3cc415af,0x3cbb434d,0x3ca8c0d5,0x3bc03d7c,0xb93d0a8f,0xbb84710b,0xb994f881,0xbae70361,0xbb837acc,0xbae97625,0xbae2937a,0xbbd6c0f1,0xbb94b21f,0xbba28c09,0xbbf7b929,0x3bd2a026,0x3b1a1f98,0xbb5c36a5,0xbbb1865a,0xbc51ed5c,0xbc27b790,0xbc796ace,0xbc8eb641,0xbcb7252d,0xbcb33f50, +0xbcb6c067,0xbcc46a86,0xbcb3efe6,0xbcbae9ae,0xbce2ba20,0xbd028ef5,0xbd4ea1ac,0xbdb73d6c,0xbd964ee6,0x3ca674ad,0x3cbf4046,0x3cd13725,0x3cc05462,0x3c96f972,0x3c9fd301,0x3c9e835a,0x3c4a2cc0,0x3bea550d,0x3b98c87e,0xbae5f8e1,0xba210568,0x3adcefd4,0x3bac3b70,0x3b608bb8,0x3ac2faea, +0xbb25307c,0xbbcbf3dc,0xbc54012d,0xbc2edb3a,0xbc13b6e8,0xbc50824f,0xbc3d0c56,0xbc7fc00b,0xbc6d2998,0xbc2f6f85,0xbc741949,0xbcb054fb,0xbcea1ea3,0xbcfec930,0xbd1e7e48,0xbd4dbc6a,0xbd25e392,0xbcbd1af3,0xba5c4c86,0x3c349b32,0x3c503a7f,0x39f54477,0x3bbfb76f,0x3bca9bf8,0x3bca639e, +0x3bf1b276,0x3c3b0841,0x3c2a134b,0x3c4f15f5,0x3c50ff6e,0x3c52a049,0x3c33e737,0x3c05dcc0,0x3b3f5f5f,0x3984ee2b,0xbaea462b,0xbac034f4,0x3b4e999c,0x3b533990,0xbb019ddb,0xbb8c7292,0xbc11ef7e,0xbc49e9c7,0xbcaf65f0,0xbcdb16d8,0xbd017a38,0xbd0406a7,0xbccd81f5,0xbc35c402,0xba518d32, +0x3c574df8,0x3cd8b976,0x3d208d03,0x3d1fc307,0x3cfc631f,0x3c99ef6e,0x3c83d6e2,0x3c37dee5,0x3b80d503,0x3bb7f71f,0x3ba42c13,0x3b9f9964,0x3b7ff35b,0x3b50e030,0x3b25f38d,0x3ba30e57,0x3b1cf495,0x3bd2f7fb,0x3bb65a89,0x3bd86649,0x3be16c49,0x3bf150f7,0x3bdeeec2,0x3be5da72,0x3bd19ea0, +0x3c1e82fa,0x3c51e5e3,0x3c45197c,0x3c5806e2,0x3c6e5dcc,0x3c885df7,0x3c95b0c8,0x3ca7bb37,0x3caeda61,0x3cb3d07c,0x3ca257d4,0x3c979cef,0x3c95dcaa,0x3c70e7c1,0x3c59946b,0x3c61e321,0x3c60ca70,0x3c0955b1,0x3bd54aa3,0x3b75ca05,0x3c04bb51,0x3b9949c7,0x3bb2ab20,0x3beed490,0x3be0da46, +0x3c0d6b3c,0x3bbdb341,0x3b357634,0x3b73c826,0x3bb67677,0x3b84339c,0x3b7c54ce,0x3bb43aba,0x3b9fa5a1,0x3bf6aa4e,0x3badebb0,0x3c04e4d8,0x3c2189f3,0x3c2c0247,0x3c406d2f,0x3c500bd9,0x3c5c906c,0x3c6bce26,0x3c65cf50,0x3c608689,0x3c5acbad,0x3c57731a,0x3c51903a,0x3c4c5d86,0x3c48aa1c, +0x3c389c0d,0x3c23a2ed,0x3c074472,0x3c209c45,0x3c30f454,0xba07f276,0xbb2ebca2,0x3b688ae2,0x3aee773c,0xbb1fe7e2,0x3a8d09b7,0x3a43bdfb,0x3a988613,0x3b432b94,0x3b0a6f63,0x3afd8b25,0x3b2b42cc,0xbb6e7bb5,0x3a60f76c,0x3b4083fa,0xbb3a8489,0x38165801,0x3c322f64,0x3c26786c,0x3c322ab6, +0x3c3e74e3,0x3c47ea05,0x3c53940f,0x3c6373a1,0x3c58736d,0x3c5126cc,0x3c48d80d,0x3c413a04,0x3c387af8,0x3c2cc7be,0x3c28e989,0x3c272890,0x3c28bb83,0x3c25d5b0,0x3c3444b3,0x3c335fac,0x3c125998,0x3c00d9d3,0x3c97beaf,0x3c5ad2d5,0xbc04232e,0x3ca06057,0x3c736d20,0xbb09c224,0xbaf6d24b, +0xbb21a830,0xbba97129,0xbba2ce76,0xbbb309f2,0xbbe8526f,0x3c6b48fa,0x3ca1b191,0xbbee9108,0x3c6071c0,0x3c9db514,0x3c219708,0x3c2235d4,0x3c320691,0x3c2e603c,0x3c2e7c69,0x3c33a63f,0x3c49ea26,0x3c3aac1e,0x3c324822,0x3c16d524,0x3c30e205,0x3c3bbf4c,0x3c47998c,0x3c551506,0x3c504324, +0x3c2e75c4,0x3c2ba868,0x3bf36fc1,0x3c4458ce,0x3c14e5bd,0x3c59acec,0x3c310da8,0x3c1f76c5,0x3c3901c7,0x3c19f780,0x3c34eb56,0x3c5f455a,0x3c5a5329,0x3c4f52e5,0x3c1a5ce3,0x3c3cbefc,0x3c1a2057,0x3c29eae3,0x3c8b9e36,0x3c460741,0x3beddc89,0x3c6ef503,0x3c3bc437,0x3c68d9b2,0x3c5e826b, +0x3c5771e3,0x3c5d4706,0x3c86befe,0x3c5f5d0d,0x3c430b1e,0x3c1598f1,0x3c519d7e,0x3c8216fa,0x3c9800fa,0x3cabe880,0x3c9bd572,0x3c4604a6,0x3c39f999,0x3bc9dde8,0x3bde3512,0x3c60a4d2,0x3c2f1062,0x3b648c1f,0x3c287505,0x3c1c050c,0x3bb63b3d,0x3c0bdf6f,0x3ba94e9a,0x3bdfae58,0x3b246b2b, +0x3b506d09,0x3bc1556d,0x3c1bff41,0x3c543869,0x3c739606,0x3c543be1,0x3c67a05e,0x3c486db7,0x3c517894,0x3c77c54c,0x3c7fb08d,0x3c7ab0e5,0x3c8ab551,0x3cc6718e,0x3c98335c,0x3c82a321,0x3c045152,0x3c7a7614,0x3ca3b6d0,0x3cc11d41,0x3cf4c31b,0x3cd00557,0x3c562fdc,0x3c523a8f,0x3b51dce6, +0x3be5c41a,0x3c9e6702,0x3c7fdd4a,0x3a214068,0x3c07e424,0x3c19c8c4,0x3b626c44,0x3c098044,0x3bb19c87,0xbb96480c,0xbb9c85a2,0xba06dd38,0x3b07e417,0x3c23f313,0x3c48b9ac,0x3c86ab34,0x3c2f96cf,0x3c34304b,0x3c2a63fe,0x3c6e1d7e,0x3ca55262,0x3cacda6e,0x3ca8d47b,0x3cc042e7,0x3d05c2c6, +0x3cb9036f,0x3c604654,0x3ba3154a,0x3c9916c3,0x3cf644e8,0x3d1877c7,0x3d343a38,0x3d111ec3,0x3c4e909c,0x3c4530ab,0x3c624aa7,0x3c27151a,0xbc52f018,0xbc30f538,0x3c88735c,0x3c259fc5,0x3bdff7fd,0x3b4bb954,0xbb0054f0,0xbb84c7a6,0xbb832fc1,0x3952a0fe,0x3b1b59b8,0x3ac6b35f,0x3bcd0325, +0x3c2b10e8,0x3c9b571f,0x3c5f2ffe,0x3c77219a,0x3c8bfa34,0x3c629592,0x3c104e3c,0x3a85a9ae,0x3b47158c,0x3b107819,0x3aae3d1f,0x3beba137,0x3c3999fd,0x3c8c7009,0xbc012c7f,0xbbee6120,0x3c8540a3,0x3c86438f,0x3c8ab4cd,0x3c3690b1,0x3c9437e4,0xbbd064f6,0x3b3797fa,0x3cbd7013,0x3c5b3fbd, +0xbbbaaf14,0xbc3d5462,0xbc56eba5,0xbc02f1b4,0xbbc35c64,0xbb19d213,0xbb77f8ca,0xba55f6f3,0x39ef80fd,0xba37cd29,0x3ad49b5a,0x3ab3e818,0xb8a12b2d,0x3bec8bbc,0x3c0dc7ae,0x3c0e8b50,0x3c5f87a4,0x3c8e2bda,0x3cae61ca,0x3c568beb,0x3bf286ec,0x3af67d46,0x3bda18e2,0x3b83de7c,0xb9ce06b4, +0x3bc3664a,0x3bf6cf81,0x3abec19e,0x3c87e956,0x3c3db92d,0xbc4fb9d8,0xbb8c02b1,0x3c957fcf,0xba210cd2,0xbc89e443,0xbc889a4f,0xbc339bfd,0xbb93958e,0x3b0c798e,0xba7c08fa,0xbabfdf1a,0x39f0571b,0x3a951b4a,0x3a25035d,0x3a1c346d,0x399220e4,0x3bb5a02e,0x3af6f726,0xbb862f5e,0x3c08234e, +0x3c59b487,0x3b3c56a1,0xbb88a92c,0xbbcfae62,0xbbe04137,0x3a993e2b,0x3c33f419,0x3c9125f2,0x3cc41eeb,0x3c80114f,0xbb8dd401,0xbbc2ad13,0x3bcc7dd3,0x3cc95399,0x3d3de9ae,0x3d54e79d,0x3d4d311c,0x3d026704,0xbccbe2aa,0xbc5641ff,0x3c280761,0x3c922e8f,0x3c432ccb,0x3b442f0e,0xbba85ad1, +0xbbe473cc,0xbb11ebb7,0xbb5786cb,0xbb79407f,0xba440ddf,0xb9bf8251,0xbb77aff9,0xbb31d12b,0xbb00a988,0xbb261f5c,0x3bc79e6c,0x3bfe0c4a,0x3b69d03e,0x3b384238,0x3b95026d,0x3bf50200,0x3c167003,0x3bf5a1a5,0x3b04253c,0x3be3f9c9,0x3c15f5ed,0x3c2d78fb,0x3c1d83c3,0x3bc355cb,0xbc0bac86, +0x3cd131eb,0x3cf59050,0x3c8067a6,0xbc4fba01,0x3dbb0e00,0x3da1d2ab,0x3d346b60,0x3d22603d,0x3d030793,0x3cf58f44,0x3cdaba9a,0x3ca3cb1d,0x3c5a67f4,0x3c051f54,0x3b6e9bae,0x3a8c250f,0x3af8a4aa,0x3bae036a,0x3b636c7d,0x3ab67882,0xbb676758,0x3a4a4669,0x3a75cccc,0xbaa8bd4f,0xbb696a87, +0xbba0a0fa,0xbb6d8af8,0xbb284d48,0x3bb6800e,0x3c990ba9,0x3c4e52c4,0x3c39717e,0x3c9bd105,0x3c01f986,0x3b41ae2a,0xbb5ffc18,0x3bef4754,0x3cdbd7d0,0x3d5f572d,0x3d9eebef,0x3d1c23a9,0x3d07d98f,0x3c907c4f,0x3cba2c8b,0x3c8bc202,0x3c9e4f0f,0x3c8b81a6,0x3c65a349,0x3c786c33,0x3c6a4cb9, +0x3c5ed5c1,0x3c581642,0x3c21b0dc,0x3b5237c5,0x3a921fbb,0x3b1ac143,0x3bb1b2f7,0x3bbf45e2,0x3b531669,0xbb03735c,0xbb8952d7,0xbbbe3e85,0xbbfd5c38,0xbbbc6f55,0xbc10d33c,0xbc75b90e,0xbcbc4816,0xbcd48192,0xbcafc76d,0xbc3d4c0c,0x3bf0de9e,0x3d086565,0x3d335e24,0x3d49f8d5,0x3d429a21, +0x3d2d2fb5,0x3cdd686e,0x3cc14f55,0x3cb7d120,0x3ca62333,0x3c830101,0x3c613267,0x3c2bad74,0x3c065eb7,0x3bee8c9c,0x3bf398ff,0x3c0489d6,0x3c033946,0x3be6ca22,0x3c12d4cd,0x3c13de52,0x3c1bba51,0x3c15fdb9,0x3c22d942,0x3c6e2c33,0x3c4bd9ca,0x3c0fd89c,0x3c126eb5,0x3bd16c5b,0x3c13e561, +0x3c368271,0x3c5d0461,0x3cb67b73,0x3cf89241,0x3d191844,0x3d224e1a,0x3d260f70,0x3d2e42f6,0x3d164f4a,0x3d0a9a37,0x3d01841a,0x3cf41841,0x3c9f3517,0x3ca374b1,0x3c0d48d7,0x3c8982f8,0x3c792ed0,0x3c6df989,0x3c8ac537,0x3c8766ff,0x3c934b94,0x3c9b7d31,0x3c9a43e3,0x3ca20a5c,0x3c924665, +0x3c93acde,0x3c73281b,0x3c4e1b62,0x3c753eae,0x3c36f8c0,0x3c0e57c7,0x3bc43670,0x3bc93c07,0x3c15ca49,0x3c2ebbd0,0x3c4d9ee1,0x3c67b7d1,0x3c7b0a7b,0x3c824221,0x3c899346,0x3c9b82ca,0x3cb1fef6,0x3ccea7b5,0x3cf22f0d,0x3ce2aa46,0x3cd583a8,0x3cc35542,0x3cb29b58,0x3c9c2a5c,0x3ca04b0e, +0x3cb0fab7,0x3c8d2f29,0x3b79f495,0x3cbde9de,0x3c93698c,0x3bda4419,0x3bcacc7f,0x3bbeb8d1,0x3ba076c1,0x3b9982bc,0x3b93a160,0x3b8193d2,0x3c96e2f9,0x3cafd445,0x3b8240de,0x3c883d61,0x3c9b8986,0x3c5da0b6,0x3c7a3ab6,0x3c8142ab,0x3c859c26,0x3c89aae5,0x3c8d9ad2,0x3c92d6e4,0x3c9a394f, +0x3ca191be,0x3ca681f1,0x3caca826,0x3cb068c0,0x3cba26ef,0x3cafbafa,0x3cac0965,0x3ca77dbc,0x3ca6030c,0x3cae982d,0xbc420121,0xbc24c5ea,0xbc6f8223,0xbc43ccae,0xb83e2119,0x3cabcd7b,0xbc730148,0xbaf2531a,0x3c88be17,0x3c92ea27,0x3c9510a7,0x3c97d3de,0x3c9d42de,0x3ca0ae96,0x3ca94cd8, +0xbabd0799,0xbc59100d,0x3ccb9edc,0x3a71941f,0xbc269e89,0xbc5331a2,0xbc258328,0xbc44923e,0xbc48da0d,0xbc4e30b0,0xbc4d3232,0xbc3b0a15,0xbc4a9c33,0xbc536c80,0xbc6633bf,0xbc6594f6,0xbc662daa,0xbc5daf3e,0xbc602a56,0xbc5275fa,0xbc24ebef,0xbc39673c,0xbc362190,0xbc8c1c0c,0x3bc4de2f, +0xbc2bc1e0,0xbbac4ba3,0xbb156a95,0xbbda6068,0xbbae9e43,0xbc032ce0,0xbc1bd5bd,0xbbf891c2,0xbc3d03e9,0xbc1408ed,0xbc0e6ead,0xbad64237,0xbaf9beca,0xbb9b66e4,0xbb859ec0,0x3c02e825,0xbc51e614,0xbc45a67a,0xbc787f4a,0xbc872c06,0xbc8e2612,0xbc88539d,0xbc5f6ea9,0xbc84e467,0xbc963c1c, +0xbcad40ec,0xbcb0551f,0xbcacef91,0xbc99b147,0xbc9aeab8,0xbc84db95,0xbc1b2055,0xbc45194e,0xbc4980b4,0xbc8d5390,0xbc1d01a1,0xbc020d8b,0xbb48f3a8,0xb9263646,0x38e8a635,0xbb51456f,0x3a5837ef,0xb976b0b2,0xbb23486f,0xbbbd3aca,0xbb03a09d,0xbba7b5a1,0x39e71ada,0x3741b857,0x3b928ca2, +0x3ade0735,0xba86c4eb,0xbc01701c,0xbc5bec21,0xbc860c18,0xbca5b99a,0xbcb24931,0xbcac9d4b,0xbc7c72fa,0xbca39f89,0xbcbea466,0xbcf3b5d6,0xbcf51417,0xbcf4670f,0xbcd3d609,0xbccce28e,0xbc9ff303,0xbbcefb3c,0xbc3cb866,0xbc55a080,0xbc7a0056,0xba8efd00,0xbb49ec73,0xbba06ef7,0xb958bbdd, +0x3b95c441,0x3b3d7850,0x3bcde114,0x3b907b74,0xbb0a09b3,0xbb4e0c93,0xbb3c4379,0x3aade185,0x3bbb8637,0x3bd70e14,0x3c3d5e67,0x3b6cfa10,0x3b6cf3ea,0xbbca3901,0xbc751860,0xbcb6671c,0xbcf08517,0xbd012e78,0xbcef053e,0xbc9f9695,0xbcda7813,0xbd0e5154,0xbd2efd9f,0xbd2ecd12,0xbd1e982b, +0xbd03538d,0xbcf6b42c,0xbca3da47,0xbaa74d70,0xbc01b3a4,0xbcea338a,0xbcb1cae1,0xbd0c13e1,0xbcd4128c,0x3c5ba557,0x3bdf2b3c,0x3a9bb7aa,0xbadb7b72,0xbb763c8b,0xbbba0098,0xbb9cbf72,0xb9ec184b,0x3a93afe2,0xb9eea944,0x3b2e82c1,0x3baf81b2,0x3c580499,0x3aa6ca56,0xb99c17e8,0xbc1d1a8b, +0xbc7479b8,0xbbec619e,0xbbb90a0b,0xbb9be96e,0xbb56de3b,0x3b65dfc3,0xbb11ac6b,0xbb8a00bd,0xbb4cf551,0xbd0b97f4,0xbd395e8f,0xbd1ded89,0xbd105f6b,0xbcf23cf9,0xbccb22db,0xbcce4f35,0xbbd0b79a,0xbc0ee693,0x3a86d709,0xba7cd6fb,0xbca49c90,0xbc911f67,0xbc51ffb6,0xbbf4b911,0xbbd8ab69, +0xbb892df6,0xbb7db056,0xbaaf962f,0x393e0583,0xb6e19cc0,0xba936a57,0xbb8ef0f0,0xbbfa3594,0x3b283260,0x3c0861b4,0xbb3c0492,0xbc885486,0xbcd709fc,0xbd175af1,0xbce81cb6,0xbc9bbbc6,0xbc3baa00,0xbbc33eda,0xbbfeaa3a,0xbc672105,0xbc685c19,0xbc6c4375,0xbc97d7e0,0xbc720452,0xbc87b505, +0xbcb4e447,0xbc478970,0x3baf142a,0xbaf91ed9,0xbbfa1b58,0xbc381a0b,0xbc0a9f54,0xbbeabf23,0xbaf0cd0e,0xbbc53521,0xbba61255,0xbab88397,0x3919843e,0xbadadca5,0xbab937a1,0x3922ea3f,0x3a80dab9,0xbb9d3fe1,0xbbd9bedd,0xbb10d34e,0xbb866d17,0xbc15ec8f,0xbc1abfa7,0xbc19aa6f,0xbc145056, +0xbcc582b4,0xbd1509fc,0xbd31dc23,0xbd2b341f,0xbd0e54ba,0xbceb295f,0xbd1710b7,0xbd530135,0xbd92f670,0xbd821fda,0xbd562436,0xbd2b83c6,0xbb37b3d5,0xbdbba244,0xbcebd57a,0xbbe512df,0xbbc83fbf,0x3b24670a,0xbc3bf5bd,0xbc3a2ed3,0xbc599cc2,0xbbc39946,0xbba6a92f,0xbbb36ab6,0xbaf84caf, +0xb9db59bd,0xbb984181,0xbb943369,0xbb9babd4,0xbbcccc6e,0xbac953f7,0x3b1e217d,0x3a9cdb9b,0xbc3e543d,0xbca5397c,0xbcb8a336,0xbcbcb5d2,0xbc93907a,0xbc336ad6,0xbc6e1ad3,0xbc8d1a2c,0xbc9187a1,0xbc9ecfa6,0xbcb36646,0xbcca4305,0xbd515e8e,0xbda1b5ce,0xbde18bd9,0xbddac755,0xbc03a486, +0x3cfad95c,0x3d5d4258,0x3d186596,0x3cd72642,0x3d020b5d,0x3cd979da,0x3c53d9e7,0x3c112e82,0x3b2ccc32,0x3a7dbcdb,0xba6ee3f8,0xba904a8f,0xba30bf76,0x3a09ad94,0xb993ff66,0xbb9e0e6b,0xbb801781,0xbb84a366,0xbc0caeb1,0xbbf4d011,0xbb897bfc,0xbb5fa4e9,0xbb940888,0xbc1c1f00,0xbca56d53, +0xbcf1cc57,0xbd140e19,0xbd25e89e,0xbd18973e,0xbd31e12b,0xbd66cf04,0xbd94ea91,0xbd874a2f,0xbd248999,0xbcb8b132,0x3bc22978,0x3bba4b34,0x3cbb55f8,0x3c764c6a,0x3c7dd41d,0x3c5f31e6,0x3c50822a,0x3c2f3a60,0x3c38b5e4,0x3c46b686,0x3c4b5495,0x3c307d31,0x3be0104b,0x3b01fb92,0xbb28506e, +0xbb8146e4,0xbb5d1a1a,0x3b05ed9c,0x3b236f48,0xbaa88065,0xbc2e1650,0xbc94134d,0xbcba6025,0xbcdcf6d4,0xbcf72163,0xbcf8ba57,0xbd06728d,0xbcefa02b,0xbc9f4eef,0xbca6e2dd,0xbc9b4fec,0xbc8f8e84,0x3be3219d,0x3c8b6d31,0x3c81c670,0x3c450c1f,0x3c7dfda6,0x3c652a33,0x3c448b30,0x3c0af574, +0x3c166d68,0x3bf82d85,0x3bec3d8a,0x3bad600b,0x3bdb24bd,0x3bc1d7fc,0x3bbf66bb,0x3bbcef1e,0x3c1189d3,0x3c171b0e,0x3c163159,0x3be88eb4,0x3bce9aa2,0x3b430694,0x3ad649bd,0xbb9003db,0xbba181a3,0xbb1498b2,0xbad659e8,0x3afd3701,0x3b93a7b6,0x3bf21297,0x3c0ca416,0x3c15943b,0x3c1ebcef, +0x3c4b2145,0x3c8b5f52,0x3ca18be4,0x3c96c827,0x3c92c6a2,0x3ca49940,0x3c966c92,0x3c5cc0cf,0x3c5358a8,0x3ca46d6e,0x3c62e7d8,0x3c698242,0x3c777268,0x3c4c035c,0x3c4bd780,0x3c284cc8,0x3c0637c3,0x3c0cb179,0x3bbfcdc0,0x3bb27e9d,0x3b89df00,0x3bce4b88,0x3bd9396e,0x3b65b5db,0x3ba5ae42, +0x3c014d31,0x3bb78cd7,0x3c1ea263,0x3c23e456,0x3c38e60f,0x3c4d3ead,0x3c6459ed,0x3c813e55,0x3c71b26c,0x3c62189a,0x3c463940,0x3c32aff1,0x3c0f4262,0x3bfe1fb3,0x3c14819b,0x3c290440,0x3c3705e9,0x3c3e42f3,0x3c33c1f2,0x3c2c8d0e,0x3c16aa59,0x3c67dea7,0x3cc28931,0x3be95f1b,0x3c543b01, +0x3cb18fc9,0x3cb3bd67,0x3cb6e904,0x3cb96fe0,0x3cbe255b,0x3cc2b9fd,0x3cc64de6,0x3c2e1be3,0x3b9be7d2,0x3cb77e72,0x3c2f853c,0x3bc236a6,0x3c0432a9,0x3c13ea81,0x3c1859f2,0x3c28f788,0x3c30feac,0x3c38a079,0x3c458021,0x3c368f40,0x3c30dd7c,0x3c2da51d,0x3c2585d9,0x3c1fc399,0x3c0ee4f9, +0x3c18be29,0x3c1b53c3,0x3c201d14,0x3c26a019,0x3c201200,0x3c7ed749,0x3c480a05,0x3c9375d3,0x3bd6f422,0xbbf61eba,0xbcc5339e,0x3c59a4cd,0xbb89e599,0xbcadce5b,0xbcb3ba11,0xbcb3e014,0xbca9679d,0xbcbf14d9,0xbcc26b20,0xbcc370e0,0xbb9c1165,0x3c3a724f,0xbcc6d58c,0xbbb27d81,0x3bf2668a, +0x3c9ebb90,0x3c69a8e7,0x3c83cf92,0x3c83d17a,0x3c829c10,0x3c831866,0x3c88c039,0x3c7c6e7b,0x3c76d8b0,0x3c7433cd,0x3c808cde,0x3c8531a2,0x3c89f945,0x3c8c7a32,0x3c845f40,0x3c4e90da,0x3c63b02b,0x3c3fc14e,0x3c7a0852,0xbc41ba91,0x3c5f2b7b,0x3b852e48,0x3b1d085e,0x3c0b4583,0x3bd42073, +0x3c4955df,0x3c457578,0x3bdfc15f,0x3c2b17bd,0x3c12c6f5,0x3c0b2c33,0x3b61317e,0x3bd2d15e,0x3c2ddcdf,0x3c2fd69e,0xbc037885,0x3c915979,0x3c9cc5bc,0x3ca18508,0x3cabcb69,0x3ca74e62,0x3ca53ae9,0x3cac375a,0x3c8ca56d,0x3c8245f1,0x3c8750d8,0x3c9339d6,0x3ca0eaf7,0x3ca7aa57,0x3cafb2fe, +0x3c97d56c,0x3c219b06,0x3c4080ea,0x3c22138f,0x3bf0fbb7,0x3b2650dd,0x3be62bd1,0x3a123a94,0x3b901bde,0x3b5a4725,0x3b6c8cf9,0x3af83272,0x3bdc63d9,0x3b25b8ad,0x3c03501f,0xbab5852b,0x3bc13907,0x3b2bb500,0x3c1db293,0x3c377ba1,0x3c2c4dd8,0x3bed4e42,0x3c600c07,0x3cc305a6,0x3cb7be70, +0x3ccfeca2,0x3cc556f8,0x3cc70c9f,0x3cdcd534,0x3ca21d5e,0x3c93ecd4,0x3c944bd3,0x3cb24a3a,0x3ccfde62,0x3ce0794e,0x3cf33895,0x3cbce40b,0x3bc9f1cf,0x3c1c7e6a,0x3b84b636,0x3a1d5fcb,0x3b073758,0x3c2b2c4a,0x3b41144c,0x3b9029ad,0x3bbfcb21,0x3b2117ab,0x3bf0c62b,0x3bae9fe6,0x3a7d7ea5, +0xbb69550c,0x394bf1e6,0x3b8a65b4,0x3c1cc764,0x3c6dea50,0x3c41ddda,0x3c6c4d08,0x3b9f391f,0x3c624128,0x3ce34d46,0x3ce5b577,0x3d099ce8,0x3d0351ca,0x3d03d2bd,0x3d088664,0x3cb087ab,0x3c766624,0x3c8cca46,0x3cc17ca6,0x3cf4eed8,0x3cfd929b,0x3d032be4,0x3cac443c,0xbb127f12,0x3a817ef8, +0x3ce994ae,0x3c235ab5,0xbcb4de9c,0xbc8848be,0x3bd2a96c,0x3ba72ac1,0x3bde0f60,0x3aa6263b,0xb87e39d5,0xba9fb006,0xbb4cdcad,0x3ae47bd7,0x3b15c936,0xba377f1f,0x3b8b05ad,0x3c2ac973,0x3c667015,0x3c90510c,0x3c02b51f,0x3c4a3a49,0x3cf17411,0x3ca69078,0x3c9b663e,0x3c32730c,0x3c26d060, +0x3c4cef03,0x3ca1723e,0x3ce18b86,0x3d24138f,0x3c8b7cf8,0x3c8f23f4,0x3d09ee59,0x3d1cd07f,0x3d1739aa,0x3ccced57,0x3cc80525,0x3c583b39,0x3c4ca081,0x3c5690f1,0x3c343b1b,0xba117d2d,0xbc122ecd,0xbc07eb39,0xbb82643d,0xbb6c0ba9,0xbaed7a90,0xbae2d65c,0xba250477,0x3aa0708a,0x3b4144a4, +0x3bbce935,0x3b734a98,0xba69e0e8,0x3b738c10,0xb9e16a82,0x3c1de38a,0x3caa85dd,0x3ca70ea9,0x3cf0aa46,0x3c922df7,0x3c3feabd,0x3bf5b8e7,0xbb82a312,0xbbf6fd36,0xbb870986,0xbbbb86ed,0xbbbc7881,0xbc27af5e,0xbb6fd24c,0xbbd743fe,0xbca014df,0x3a1ba088,0x3c7d28b5,0x3c120312,0xbc22832a, +0xbc212be1,0xbc529d95,0xbbbd42dc,0xbb65372e,0xbbba7460,0xbb703d08,0x3a549a49,0x3aec8bc2,0x3abd94b9,0x3a9a8631,0x3aa95e12,0x3b278a3e,0x3b2e3111,0xbb277515,0x3bff21f7,0x3bdcc530,0x3c04962e,0x3bc0068f,0xbac8d923,0x3b600145,0x3c594a89,0x3cd5dbe2,0x3d18b21f,0x3d115f08,0x3ceff89c, +0x3c838835,0x3c87bda1,0x3ce4f8dd,0x3d34ec29,0x3d69497c,0x3d61a3e5,0x3d48c371,0x3cbee4f1,0xbd2ba769,0xbd25cde7,0xbcacbf87,0xbbf776b9,0xbc16173a,0xbc1b8697,0xbc3efcd1,0xbc2facf0,0xbbcf7c9d,0xbba8de3f,0xbb7d3d19,0x39cdbf45,0x3a937a77,0xba473ebd,0xb991cc6d,0xbafc94b5,0xbae35aa7, +0x3a286756,0xbb01e901,0x3c21db3c,0x3c55c66d,0x3c599183,0x3c6625e5,0x3c319256,0x3c0b9e00,0x3bda1095,0x3ba2e387,0x3b4c9b44,0x3b373030,0xbb6aade5,0xbb1a2041,0x3c2761b0,0x3c8eb24b,0x3cc1209e,0x3d08bb23,0xbcc4149e,0x3d93b8d8,0x3d5a0b62,0x3cea2b6b,0x3d149e9c,0x3d0287a8,0x3d035d84, +0x3ce3981e,0x3c769771,0x3c119e2b,0x3bdb45be,0x3ba19e83,0x3ac4663e,0xb950ca93,0xb9818dc0,0x3a21789c,0x39e019dd,0xbb13dc0a,0x3ba72342,0x3a1a89a3,0x3b7fbe90,0xb969e2fd,0xbb71ffbf,0x3a1d43e1,0x3aebfd5e,0x3abac04a,0xb8f70171,0xb9b6998f,0x3af18631,0x3c06c698,0x3befa87b,0x3c1472aa, +0x3c6fa193,0x3b9e808a,0x3c0a0bda,0x3cf04f0f,0x3d51fc13,0x3d24bd39,0x3cf38d57,0x3c4bc648,0x3ca0dae2,0x3c6853b8,0x3c8c231d,0x3c9312cf,0x3c73ceae,0x3c90d653,0x3c860a7f,0x3c85f823,0x3c4f5a56,0x3c27be8c,0x3bf3855b,0x3b75cec4,0x3b1d2a37,0x3ad8e7e6,0x3a278a1e,0x3985253d,0xbb815862, +0xbb517f2e,0xbb589759,0xbbcbdd85,0xbbfb5197,0xbc1bf38b,0xbbe89d95,0xbc30cba5,0xbc6f851a,0xbc90ff2f,0xbc877384,0xbc010a4c,0x3c418c3e,0x3cdb4e98,0x3d18e1af,0x3d2238f7,0x3d1c3f93,0x3d15568c,0x3ce0bcf9,0x3ca488d3,0x3cad9230,0x3c67398b,0x3c65bc0c,0x3c507347,0x3c41e6a1,0x3c04dbf2, +0x3c29e5c1,0x3bd2abef,0x3c3c2071,0x3bf3918c,0x3c3ab0da,0x3c0d6454,0x3c167bef,0x3be3ecea,0x3b91a082,0x3b0129dc,0x3b3d05cb,0x3b8c47ac,0x3afc2639,0x3ab573fc,0x3b757fd8,0x3bb397ea,0x3bd66f2d,0x3c3795a1,0x3c847512,0x3ca77721,0x3cfa62e8,0x3d21d019,0x3d465dbb,0x3d384fff,0x3d326b1e, +0x3d37d852,0x3d1edcac,0x3ce03f5a,0x3ce4ac14,0x3c3b9322,0x3cc6a304,0x3c9b300d,0x3c9644da,0x3cb13c49,0x3ca56b58,0x3cbbf62d,0x3cb63740,0x3c940337,0x3ca961ab,0x3ca13c65,0x3c91309e,0x3c5a141d,0x3c58a6d9,0x3c812988,0x3c6a640d,0x3bf41138,0x3c54eb53,0x3c4a5e8f,0x3c639a44,0x3c6f48a1, +0x3c78dc0f,0x3c83a5e3,0x3c88bfdb,0x3ca4df9d,0x3cbc2881,0x3ccf7f33,0x3ce4a2ec,0x3cf56a69,0x3d0a8787,0x3d04de68,0x3d011db4,0x3cf624af,0x3ce95b11,0x3ccec004,0x3ce2a492,0x3ca9a836,0x3c4debb7,0x3b1ed02e,0x3cc18fca,0x3c523be7,0x3b2ac086,0x3ab11e19,0x3a074476,0x3a5645e4,0xba9a11b7, +0xbb100063,0xbb29d9ef,0x3c34f36e,0x3ca60050,0xbaf59f01,0x3c23162e,0x3c8baabf,0x3caa54b9,0x3ca2bfd5,0x3caaae0b,0x3cadcb69,0x3cb1b7ff,0x3cb4ffc1,0x3cb59edb,0x3cbf1b54,0x3cc790a0,0x3cd25442,0x3cda28da,0x3ce18275,0x3ceb9944,0x3ce18f02,0x3cdd37f8,0x3cd824c4,0x3cd88892,0x3cdd63e2, +0xbc136c6d,0xbc02390e,0xbc774d0f,0x3b6e8d5b,0x3c8e71b4,0x3cd2f3f3,0xbb1e8cec,0x3c67c39f,0x3cca226f,0x3cd3abdb,0x3cd38a59,0x3cc33b1b,0x3cd28705,0x3cd2fb84,0x3ccd49c6,0x3c75b95d,0x39669e69,0x3ce2a668,0x3c8ac032,0x3bb1ef01,0xbc520005,0xbbef2619,0xbc145ffe,0xbc1a5317,0xbc1f4114, +0xbc1ec64c,0xbc0d4dd8,0xbc234615,0xbc2c3ccf,0xbc348df3,0xbc30670a,0xbc2c3d67,0xbc29e879,0xbc177caf,0xbc0b88df,0xbbf602ae,0xbc102c25,0xbc1fc03d,0xbc39a8bb,0x3c97ed2e,0xbbb51480,0x3bbc991a,0x3b8d3fa7,0xbb1a05be,0x397c1487,0xbba6d3bc,0xbb478127,0x3b8000d2,0xbb3d871b,0xbb5d9cfb, +0xbad98f03,0x3b98a254,0x3b54fdb4,0x3b7620e0,0x3ac96ac0,0x3ca0460d,0xbbd3f101,0xbc1b5411,0xbc1f837d,0xbc48c4b2,0xbc586f64,0xbc5ef177,0xbc34c246,0xbc6e56c7,0xbc7ec828,0xbc80423b,0xbc7ace12,0xbc650711,0xbc5383f7,0xbc1d327d,0xbbfe1288,0xbbd0efac,0xbc007706,0xbc6c8d42,0xbc5e8d72, +0x3ad756cd,0x39919bd6,0x3bf78a6a,0x3b566fd3,0x3b1691f6,0x3a87382d,0x3b9d2aa2,0xb9b8d9fc,0x3bec2ee4,0xbb9876c6,0x3b7c293e,0xbb08c5a2,0x3bd5fbb3,0x3b7d4e87,0x3bf66629,0x3bf8c9e0,0x3c30abf1,0xba1af2a7,0xbc37837f,0xbc27795d,0xbc74d0fa,0xbc856d02,0xbc868593,0xbc29d924,0xbc95cb2f, +0xbcaae0ea,0xbcbc617e,0xbcb06eaa,0xbc9e4346,0xbc95d770,0xbc2a1908,0xbbd94660,0xbbe446fa,0xbc224472,0xbc6d97cc,0xbc2dd48d,0x3b279bd1,0xba509471,0x3b1cea89,0xba0b6c7d,0x3966ea76,0x3a90d252,0x3b3a2ebf,0x3b7a90fd,0xba69dcbe,0xbad514b2,0xbb225b5e,0xbaac66e8,0x3b6c9858,0x3b83db9c, +0x3c772d15,0x3b9ad94a,0x3c5d753c,0x3a09caef,0xbc3af2b2,0xbc465dcb,0xbca7b419,0xbcbd2adc,0xbcbec91d,0xbc7e7473,0xbcd640a9,0xbcfd1fce,0xbd00d153,0xbce4605f,0xbcad8268,0xbca29f41,0xbbf80e90,0xbb0a5655,0xbbad9dbf,0xbbdd0cee,0xbcfc0010,0xbc237ba2,0xbba62ed9,0xbbf0ee08,0x3c808f49, +0x3c55ff0f,0x3bebf545,0x3af89277,0x396e04ef,0xbac51233,0xbb3965cb,0x3a73b639,0x3a813885,0x3915acf2,0x3b755deb,0x3ba16f25,0x3c5bdbb7,0x3ba7d4a8,0x3c58f980,0x3b0ac10f,0xbc87b18b,0xbc3c350a,0xbc8530a5,0xbbfbc542,0xbbe9b632,0xbb5c63d6,0xbc8d9320,0xbca6f063,0xbc4623ff,0xbd075d1c, +0xbd14aeb4,0xbccd5e95,0xbc87631c,0xbc54e815,0xbc8c32f9,0xbc9266b2,0xbc10eb03,0xba03d4ab,0x3bbff9e0,0xba1ac516,0xbc433b73,0xbc3b2631,0xbc32617d,0xbbaa1e9e,0xbb9a28ee,0xbb0fb124,0xbaf536da,0xbace4cf9,0x38e4b14c,0x39b43fac,0x3a5e45fe,0xba33743c,0xb9237011,0x3b084ad2,0x3c192168, +0x3ba0b9d7,0xbc17aa73,0xbc4d0c49,0xbcc95381,0xbc943570,0xbc446331,0xbb7bdc01,0xbbcb84c5,0xbbfd4c45,0xbbdb2d8b,0xbc2b4998,0xbc130942,0xbb157e31,0xbc446c9c,0xbc8d7447,0xbca1a4ae,0xbc100c2e,0x3b8e33cc,0x3beb1124,0x3b93769e,0xbbb41997,0xbc10f99b,0xbbfb1f2a,0xbb107ac9,0xbc06f1bb, +0xbba892a5,0xbb236824,0x38c36935,0xba8aa56a,0xb9c3b010,0x3aa5b9d1,0x3abb0891,0xbb01a055,0x3aa97383,0xba441f59,0x3b343e64,0x3ab75f06,0xbc05cb18,0xbb50dab3,0xbad25540,0xbc674923,0xbcc229da,0xbce08cdd,0xbd060296,0xbd073eeb,0xbce49445,0xbd1e42f1,0xbd343a12,0xbd18daac,0xbce1be65, +0xbc925381,0xbc71f3ff,0xbb05c8e5,0xbd72792b,0xbd261729,0xbcf15a48,0xbccd5237,0xbc74a1af,0xbc925618,0xbc5a888b,0xbc52118b,0xbbfdcbb7,0xbbace658,0xbb233263,0xba1d6eb4,0x39a9d2ce,0xba4e7d9e,0xba74464a,0xba959101,0xbb739440,0xbb96b6ca,0x3b851b0f,0x3bbefae2,0xbc04c2bd,0xbc4ced14, +0xbc8f6ba5,0xbc719188,0xbc2c0eae,0xbbc29e0e,0xbb92e730,0xbb15c25a,0x3b07d62c,0xbb4e41cc,0xbc212eea,0xbc834f72,0xbd0eb8e3,0xbd409dfa,0xbd6201b1,0xbd657bb0,0xbbd763b0,0x3cff8e8a,0x3d68a14f,0x3d25d13c,0x3cfde83a,0x3d0e513d,0x3cca047e,0x3c1b4bb5,0x3c0a8802,0x3acb86c1,0x3b577795, +0xb9f56ee1,0xbaec252e,0xbb35a489,0x393a8309,0x3a38f5d5,0xbb6decfb,0x3b255742,0x3be89494,0xb8afbc04,0xbb36e8a0,0xbaddbaff,0xbb35f2a4,0xbb4b0189,0xbc2c6b72,0xbc9e2367,0xbc83d8b0,0xbc8f02dc,0xbcc6e30e,0xbcc82f6f,0xbcdff7ef,0xbd0752bb,0xbd3b7907,0xbd48cc8e,0xbd386075,0xbca0398e, +0x3c72a75e,0x3cb99f16,0x3d0b8d7a,0x3cca3b5f,0x3cb63d19,0x3c8decac,0x3c6fc42c,0x3c9135c1,0x3c7032ee,0x3c5f589a,0x3c3e3904,0x3c2ede8d,0x3c0b769b,0x3c0432dc,0x3b65950d,0x3add09b5,0xba9df748,0xba98dfc4,0xbb670ed2,0xbbac85b0,0xbc643bdf,0xbc942385,0xbc9f7c99,0xbcb3cf60,0xbca71ae5, +0xbc6f943d,0xbc91e70a,0xbc9a920b,0xbca04018,0xbcc66094,0xbcfeb8be,0xbd235241,0xbcace5a3,0xbb8bf00f,0x3be6f518,0x3c751bc7,0x3c8acc7c,0x3c9c8933,0x3cbf0694,0x3c9802d6,0x3ca599b9,0x3c8f6e20,0x3c851dd9,0x3c566b66,0x3c61e4bc,0x3c2ac007,0x3c41a937,0x3bee672f,0x3c34a742,0x3c0aeb8b, +0x3c1a50fb,0x3bd5ee87,0x3bdac0ea,0x3b804979,0x3b3d55f5,0xbb887f93,0xbbef3f16,0xbba89446,0xbbbb0b41,0xbb899a49,0xbb8c0e6e,0xbb82ab15,0xbbb141e7,0xbbbde618,0xbbda6b2d,0x3afc8e40,0x3c41dd99,0x3ca2e82e,0x3cb6040d,0x3cbc7209,0x3ccf10c8,0x3cb53e4b,0x3c900187,0x3c9ba485,0x3cf6e981, +0x3c99876f,0x3cb57020,0x3cb05381,0x3c90be54,0x3c91ac56,0x3c720398,0x3c7041af,0x3c909286,0x3c62be81,0x3c4394ba,0x3c42e640,0x3c62c52c,0x3c40fff4,0x3c16a92b,0x3c07e951,0x3c63fe9a,0x3bc0f95b,0x3c0bffa4,0x3c1914cc,0x3c243480,0x3c373515,0x3c4a442a,0x3c61852b,0x3c5745cd,0x3c5056b6, +0x3c3cc96c,0x3c2ee629,0x3c08fd54,0x3bf6ba90,0x3c10370d,0x3c37c3c0,0x3c5a8881,0x3c812bc0,0x3c5e66c0,0x3c45f681,0x3ca68715,0x3cdaa945,0x3cf8d6be,0x3c8447d6,0x3ccbca0a,0x3cf12b74,0x3cf54d30,0x3cf5bde6,0x3cebc3fb,0x3cf7323c,0x3cfc4757,0x3cfb248a,0x3cbd41db,0x3c63c1ec,0x3cebea4d, +0x3cb453e3,0x3c756a21,0x3be6aca4,0x3c1e1f2e,0x3c1d708f,0x3c29ef9c,0x3c2fa356,0x3c350c55,0x3c3f1bb1,0x3c381508,0x3c379d6a,0x3c3a55ce,0x3c3450c6,0x3c34605a,0x3c2abb84,0x3c3ad99d,0x3c3fa59f,0x3c42b7d9,0x3c4ba3f6,0x3c519c6e,0x3c048606,0x3bc2d25e,0x3c409bce,0xbbf3be35,0xbc87638f, +0xbc7204e2,0xba8c5e1e,0xbc6acfa9,0xbc8bf916,0xbc92a28a,0xbc8ea471,0xbc619536,0xbc8a2d48,0xbc8adccc,0xbc827cce,0xbc6d7602,0xbb421a06,0xbc73b501,0xbc65ccf2,0xbbcdf6bc,0x3c51b7be,0x3bfd36ff,0x3c0c7770,0x3c0c4c51,0x3c0955cf,0x3c059371,0x3c05fce7,0x3be38493,0x3bda30eb,0x3bde1891, +0x3bf10b16,0x3bfbd003,0x3c02f9a2,0x3bface40,0x3bed93f0,0x3bc2f720,0x3bdb62bc,0x3bea9f55,0x3bc4dd05,0xbc868153,0x3bb28f67,0xbaabaf6c,0xbb49c895,0x3a987f06,0x3a745758,0x3baec5d2,0x3b400c41,0xbadb2779,0x3a9c428a,0x3b0e538c,0x383a0fdc,0xbb00ceba,0x3a804247,0x3a1bf9f7,0x3b944ca8, +0xbc27880f,0x3c01eca1,0x3c3f626c,0x3c1bdfcf,0x3c2f39f0,0x3c287b47,0x3c244751,0x3c228b65,0x3bc97b7f,0x3ba00e09,0x3bb2f629,0x3bddbd24,0x3bf5ca7f,0x3bf18150,0x3bcf970a,0x3baaac93,0x3b30ab87,0x3b91d935,0x3bcdcbcd,0x3b127df5,0xbc02b1f7,0x3a0e7549,0x3ad1ec07,0xba429d1e,0xbac7fbe8, +0x3ad66a8c,0xbb230155,0x3ba87be0,0x38a08585,0x3be14ae5,0xbb72212a,0x3ae5a01f,0xbb0dafb7,0x3b7bd91b,0x3bbaebec,0x3bc273a7,0x3a1285d9,0x3bda4c01,0x3c821354,0x3c3d90e3,0x3c53fc36,0x3c3fae03,0x3c3342fb,0x3c2d73a6,0x3b658ade,0x3adcc7f2,0x3b44952b,0x3bcd2e18,0x3c08abef,0x3c1099e5, +0x3bca144c,0x3b9a18ed,0x3a451e1d,0x3ab0c79a,0x3c03c961,0x3ad1ffb4,0xbba30ccb,0x3bb6987a,0x3c177d28,0x3a2330fb,0x3ad6ef14,0x3b6b59b5,0x3badea88,0x3b988fbb,0x3bcf1edc,0xba2a9517,0x38f93f69,0x3b7b8d6f,0x3bd9d3cd,0x3c3dfd9e,0x3bf8c986,0x3c614016,0x3b287542,0x3c12f076,0x3c9c1b8d, +0x3c54e0a8,0x3c7c5f09,0x3c655eaf,0x3c5bc35c,0x3c533d2b,0x3a52685c,0xbb6d38a7,0xba0714fc,0x3b8c873b,0x3be891aa,0x3b9e1a6d,0xb974d9b9,0xbb2664e5,0xbbe3ddef,0xbb54b36b,0x3c368e00,0xbc2a36e7,0xbce65568,0xbc923adb,0xb96d5a8f,0x3b6fbf6c,0x3beed547,0x3b0d497e,0x3a4eec10,0xba018bc5, +0xbadd5f7f,0x3b16c733,0x3b18367e,0xba855feb,0x3b5623db,0x3c0d038f,0x3c137ace,0x3c7d539c,0x3b8b84c7,0x3b52c176,0x3ca1008c,0x3c6d5607,0x3c983862,0x3be2c4fe,0x3c0655e3,0x3c806b34,0x3c6919c4,0x3c8a43b7,0x3cb982a9,0x3c0fd154,0x3c03d232,0x3c8a14ec,0x3c92b4f6,0x3c9aeeb2,0x3c6eae3d, +0x3c2cb83b,0x3cc68d0a,0x3cb4946e,0xbb8fb8be,0xbb32b284,0xbbb001bb,0xbc19b152,0xbbe3c63d,0xbbb54409,0xbb413131,0xbaa0a998,0xba23b92e,0xbab215b7,0xb959d3c9,0x3b292e0e,0x3ba9fc72,0x3b357223,0xba7c3c49,0x3aa0238c,0xbb2dae30,0x3be0662d,0x3c29f75a,0x3b97df2b,0x3c064e78,0x3b8c88be, +0x3a51f095,0xbbb1f08d,0xbc1d1c5d,0xbc0ed4f0,0xba6ba8e6,0xbb35ccd4,0xbbe62d36,0xbc163ac5,0xbcdc4187,0xbcf2c841,0xbc979feb,0x38fae95e,0x3b052c21,0x3c028c2a,0x3ac0341e,0xb903bc8c,0xbc86b7ff,0xbbba0b71,0xbbadf8f8,0xbbeb90d0,0xbbb65950,0xba658997,0x3a23923b,0x3a9539b6,0x3b0c6f0c, +0x3aeef73f,0x3a986c64,0x3b35b0fd,0xb9e085d7,0x3b8d368d,0x394eb3f2,0x3c37e9b3,0x3c2f238a,0x3b4e9522,0x3bc5e649,0x3c40e14a,0x3c7ccf6e,0x3c449d62,0x3c8193f0,0x3c6a70b8,0x3c1be7ea,0x3c5aaaf2,0x3c7aef51,0x3c7757b9,0x3c9a099d,0x3c77a3f4,0x3be6f638,0x39ad5568,0xbcef2b28,0xbd36e363, +0xbd194193,0xbcd8eb7d,0xbcb61843,0xbc5f5076,0xbc15409a,0xbc064d45,0xbbd51d17,0xbb9041fc,0xbac83b79,0x392fd0de,0x3a56669a,0xb9c2858b,0x3a589f01,0xbac9e7cc,0xbb0e8c02,0xbaf6a4c9,0xbbabc140,0x3c18430a,0x3c199c9e,0x3bb74bec,0x3b230987,0xba549353,0xbbb4cd98,0xbc305e7f,0xbc1fd293, +0xbc1b88f1,0xbc0e56da,0xbc2d568a,0xbc3e8c59,0xbb455148,0xbc4490ba,0xbc5370c2,0xbc39e3cf,0xbcc7d2e1,0x3a66e0ce,0x3b4e9155,0x3c3a6655,0x3cb5eaf1,0x3cb822a7,0x3cba9846,0x3c897a0e,0x3b57f534,0x3aa51561,0x3ab68297,0x3a96654f,0x3a487720,0xb9f80683,0xbb3f624e,0x3a2d0fad,0x3ac9aa7a, +0x3a1bfdda,0x3a6f856d,0xbb7749d2,0x3baf3f50,0x3aae4ff9,0xbb83aa6f,0xbab3e42e,0xbbf6d69d,0xbc2cf53a,0xbc17ed60,0xbbf52ffe,0xbc17abb4,0xbc44420a,0xbc2964f8,0xbc13b699,0xbbaa5c6e,0xbc357f1e,0xbca34443,0xbcc8872d,0xbc5edf85,0x3cfbe458,0x3cc31f14,0x3c90c872,0x3c9f0f4b,0x3c85f8da, +0x3c634328,0x3c9027fa,0x3ca9873c,0x3c9da393,0x3c86f41a,0x3c7641a4,0x3c31b8ff,0x3c2a8843,0x3c3cb11a,0x3be25fa1,0x3ae8fb26,0xbb717fae,0xbb9e5d40,0xbbb5ad03,0xbbd8211e,0xbbd2c425,0xbbe5b92e,0xbbd47b80,0xbc489327,0xbc4895b0,0xbc17532a,0xbc2ef8dc,0xbc2c9d9f,0xbc579fce,0xbc7a3103, +0xbc8793f6,0xbc739ade,0xbc0308ee,0x3b62085f,0x3c9911db,0x3cbd6529,0x3cdc00d6,0x3cadee7d,0x3c6f3198,0x3c8a3fd2,0x3c5775bb,0x3c750109,0x3c7b52e5,0x3c815f13,0x3c3f2bbf,0x3c5985fe,0x3bff6c30,0x3c390bc1,0x3bdb2063,0x3be754a2,0x3bac0afb,0x3bb3d831,0x3b700614,0x3b12ec40,0xbb0dc635, +0x3aa33ae9,0x3b78c294,0xb92c7847,0xba6f6456,0xbb0f7628,0xbb63bcff,0xbbb0bc61,0xbbb16a93,0xbbbd79da,0xbbe2f6d1,0x3b8002a5,0x3c640bdf,0x3cc3de87,0x3cd48772,0x3cdfdb7e,0x3cfd9475,0x3cd6fd99,0x3cafab51,0x3cb0c312,0x3c7c9059,0x3caf2775,0x3c919085,0x3c9045c3,0x3ca015fe,0x3c98a0db, +0x3ca43212,0x3c929ffd,0x3c5fe790,0x3c763479,0x3c7c669c,0x3c54248e,0x3c2b526f,0x3c2955b0,0x3c266c1e,0x3c2be768,0x3bcd0f2d,0x3c113b63,0x3c17f67e,0x3c2d1518,0x3c4257e2,0x3c4fa0ec,0x3c5f66c1,0x3c6b6b76,0x3c883ec3,0x3c99de74,0x3ca365a2,0x3ca80580,0x3ca2d6a5,0x3ca71754,0x3ca49476, +0x3ca61fba,0x3ca6c42c,0x3ca9cc01,0x3ca8155c,0x3cb6c26b,0x3c5cb7ee,0x3c12bae2,0x3c1d595b,0x3c8155f2,0x3c12bff0,0x3bf3d55e,0x3bd3f19e,0x3bc37efd,0x3be5458a,0x3babff82,0x3b91799c,0x3b95662d,0x3bb9cbba,0x3c47516d,0x3b9c3ee3,0x3bab28fc,0x3c240027,0x3c89c6ec,0x3c82a42f,0x3c878a82, +0x3c897e94,0x3c8cb426,0x3c908caa,0x3c939922,0x3c9824bd,0x3c9ba38b,0x3ca1e818,0x3ca4c1fb,0x3ca9f713,0x3cae1d0c,0x3cac1edf,0x3cab14c2,0x3ca9c8ae,0x3caa0981,0x3cbbac72,0x3b3dd872,0x3b079930,0xbb075571,0x3c71b0eb,0x3c993b3d,0x3c279df0,0x3c421f32,0x3c8d5069,0x3c48dbff,0x3c49f689, +0x3c46e4d6,0x3c27c4ad,0x3c33b804,0x3c2c3a8f,0x3c1110b3,0x3c90dc0c,0x3c594b45,0x3c17033a,0x3c959ac0,0x3c840c72,0x39b4f837,0x3b54ca98,0x3b40f9c9,0x3b2d974a,0x3b2ad811,0x3b27e4b7,0x3b4b5eb9,0x3ae64b4a,0x3aaebc87,0x3a7af7b0,0x3b1a005c,0x3b45e0e2,0x3b413e29,0x3b90ae53,0x3b901438, +0x3b36abb7,0x3b278692,0x3a1a1964,0x3b3cb2c1,0x3c7dcb06,0x3bcb2893,0x3c6ae044,0x3c0a48f9,0x3ba5b87b,0x3be785e9,0x3b80db87,0x3bee564a,0x3c5552b6,0x3c0546dc,0x3baf8b90,0x3be56b4a,0x3c08277f,0x3c0138f1,0x3c3ff7ed,0x3c12d36b,0x3c8429ce,0x3bee470c,0x3b6dd2ed,0x3bb6122d,0x3b78a06d, +0x3b66009c,0x3b250356,0x3b513649,0xba298689,0xbab2c6c3,0xba800ed2,0x3b223744,0x3ba22a3d,0x3b9d8442,0x3c11890b,0x3c052016,0x3b442e20,0x3b6ab164,0xbb30e00a,0xba26b83f,0x3c3a99c0,0x3c143244,0x3c81692e,0x3bd69783,0x3b9d1b2a,0x3bd98adb,0x3bdbbb23,0x3b240544,0x3c54e73b,0x3aaff948, +0x3bbabcc3,0x3b5aebba,0x3c11e026,0x3c0dd64c,0x3c2ac012,0x3c4d624d,0x3c89d5da,0x3c26a8ff,0x3b86dcc9,0x3bd49af2,0x3b9598b7,0x3b8eef6b,0x3b6822bd,0x3bd79f75,0xbaf947a7,0xbb808893,0xbba26c17,0x3b306906,0x3bfe5758,0x3bc5654a,0x3c7e8810,0x3c5cd9b4,0x3b0a3b0f,0x3b78723e,0xbb47b611, +0x3ad4912f,0x3c42e380,0x3c21edf6,0x3c8374a1,0x3b750c5a,0xba55546b,0x3b24da94,0x3b0c2aae,0x3b8e8680,0x3b75ec02,0xb7ea7c44,0xba8ff82b,0xb99a9e89,0x3b914d10,0x3bd081f1,0x3c731ef4,0x3c28a818,0x3c8fa440,0x3c330630,0x3be50c59,0x3c322602,0x3c00199a,0x3be3633a,0x3bab391c,0x3be5083a, +0xbbc04ab4,0xbc25ee76,0xbc1cb80a,0x3b81f251,0x3c4f949b,0x3c212c87,0x3cb9bcbe,0x3c96d4e8,0xba575445,0x3b86d0bb,0xbbe5299b,0x3aa515e3,0x3bbd08fd,0x3aa52a68,0x3bee147a,0x3c3dfbbb,0x3c3a778c,0x3c00d72b,0x3b5d222c,0x3a250f47,0xbabce00f,0x3b0b7094,0x3b17cb88,0x3abc6179,0x3ba99408, +0x3bdd6eff,0x3c50a062,0x3c609c24,0x3cabf710,0x3c4f880b,0x3aaa58c5,0xb9e7d4d7,0xbc1224b8,0xbb10f277,0xbb391ad3,0xbba9fb0f,0xbc1623ce,0xbc2031ae,0xbbf8aa4b,0xbc3ab1fa,0xbb9bd970,0x3c5a910e,0x3c6e1154,0x3c70fb15,0x3c13504c,0x3bbb8583,0xba2c9eae,0x3cb4bcfe,0x3c420e71,0x39073ff3, +0xba11fa35,0xbb559b2c,0xbbdf17cb,0xbbaad85a,0xbb53d663,0xba0765de,0xba313214,0xbb05201b,0xba10dbfb,0x3a18f927,0x3b58fc7e,0x3b6c03f1,0x3bc07a9c,0x3b3779b9,0x3bd6cc0b,0x3c3796d2,0x3be402c7,0x3c2b02fa,0x3c097484,0x3b08f439,0xba115985,0x3a194f1d,0xbab5a6b4,0xba3cc173,0x3a97989f, +0x3ae5dd73,0x3b1ea7f1,0x3c0ca470,0xbc1c1c88,0xbc810277,0xbc531b72,0xbbb3678d,0xba1ac3fd,0x3bb5174e,0x3c0fbffe,0xb82d593e,0xbc229049,0xbbd61035,0xba938110,0xbbc1e9fa,0xbb8f1311,0xbb3cbb93,0x3a04bb5e,0xb8096e93,0x3a9e0a72,0x3aba571d,0x3b4c0e1b,0x3b570707,0x3bd59a4c,0x3b4cf993, +0x3c12ffcd,0x3c6efeae,0x3a969f9f,0x3b4a3979,0x3b73e369,0x3b799650,0x3b60006c,0x3b12edc8,0xbb503c66,0xbc0a7f0b,0xbc1cdb1d,0xbc3be709,0xbb75da63,0x3c7fbc4e,0x3cf4c105,0x3cfad40a,0x3c9ceaf2,0x3bb04451,0x3a1c7443,0xbced3b9b,0xbd0e15fc,0xbceab8a8,0xbcbab61c,0xbc511316,0xbbf11ab4, +0xbbfa5787,0xbbbf63b9,0xbb73e6c3,0x394704ad,0x391442df,0x3a3b0d4b,0x3aadbd47,0x3abcc625,0x3a75ca02,0x39a5da0a,0xbb14be12,0x3b73f78a,0x3c1d0c70,0x3b52895e,0x3b65cd02,0xb946805c,0xbacfba9e,0xbb9561f5,0xbb3c0a23,0x3a106b8f,0x3ba8c65d,0x3c3e9481,0x3c3294a3,0x3b8cd0ed,0xbc2b73e0, +0x3900f8bd,0x3ba0d521,0x3bd13906,0x3c63586f,0xbb77e946,0x3c6f3533,0x3cd569d3,0x3cc963fe,0x3cbc8eee,0x3cadb72a,0x3c3dbee0,0x3b1b52d2,0x3b5a6806,0x38018e9d,0x3b03bab2,0x3a98128e,0x39a48e42,0xbacf67e7,0x3acb2af0,0x3b23d52e,0x3aabe67d,0x3b076a5f,0x3bcd0fde,0x3bcb42be,0x391e887c, +0xbb00d1a9,0xbbab62f3,0xbbb8cae6,0xbb459d22,0x3b99f2ca,0x3b68bc90,0x3b8aab8c,0x3c07b763,0xb926ccdc,0xbab50aec,0xba93f6a6,0x3b556721,0xbb05f6e0,0xbc87fdc2,0xbbf0944f,0x3d044daa,0x3d29f1b6,0x3d1c286f,0x3d0bc8ca,0x3cf1191a,0x3cbc97a5,0x3ca42774,0x3ccc26ec,0x3c9f4420,0x3c81ed1f, +0x3c392d32,0x3c2f6bee,0x3c28f2cc,0x3c3205be,0x3beeb337,0x3b88d548,0xb972c514,0xbb5e0130,0xbbddfcd1,0xbbadd6d4,0xbc1802a2,0xbc1bc42f,0xbbd5b34b,0xbbd26680,0xbb9d7fbc,0xbb991843,0xbbfc5d94,0xbc3b0ae7,0xbc8be664,0xbc9c2d4c,0xbcb63613,0xbccf6a9f,0xbcced0cb,0xbc5447e2,0x3c1356bd, +0x3cc2182c,0x3c9006bc,0x3cae4d78,0x3cd16d72,0x3cbd992a,0x3cbc890c,0x3cb4d0d0,0x3cabadc1,0x3c9f9f48,0x3c95502e,0x3c76e124,0x3c8029b1,0x3c212978,0x3c1420ee,0x3bab3410,0x3bc72821,0x3ba20164,0x3ba59863,0x3bafffcf,0x3bea0b60,0x3b4c7fa0,0xbb153186,0xbb4ef301,0xbbd623fd,0xbc06088a, +0xbc274509,0xbc462db3,0xbc35fb4c,0xbc245aa6,0xbc21ca24,0xbb1f5f0e,0x3b7ca219,0x3c23179f,0x3c7d1a79,0x3c9b4bd5,0x3caf8643,0x3ca1e6ce,0x3c93a4ee,0x3ca373bb,0x3cc50a80,0x3c9d8c13,0x3cb60be6,0x3cadeee4,0x3ca30de2,0x3ca6cada,0x3c953ad4,0x3c9b8d46,0x3cabd4ab,0x3c99b399,0x3c87b56b, +0x3c891e32,0x3c8068cb,0x3c3b346b,0x3c2a4f24,0x3bcfee7f,0x3c121690,0xba4403bd,0x3875a87f,0x3b11cb22,0x3b553a4e,0x3b9983fb,0x3bbab95b,0x3bd384a2,0x3bdf705b,0x3c022363,0x3c19f271,0x3c2ea8b8,0x3c3fec22,0x3c5784d2,0x3c5987b1,0x3c6af699,0x3c80be7b,0x3c9177af,0x3c87ac3b,0x3c7f8545, +0x3cc961b8,0x3cda3f18,0x3cb33049,0x3cba4bc7,0x3cd75b3a,0x3cbfb60e,0x3cbf827a,0x3cbbe15a,0x3cadbf3c,0x3cb360fc,0x3cb3937e,0x3cae020e,0x3cc810f2,0x3ca2692f,0x3ca160d0,0x3cb51306,0x3c98e19a,0x3c0622ec,0x3c3380b7,0x3c2dae25,0x3c303e53,0x3c3252d4,0x3c35a394,0x3c3a57eb,0x3c49bcbd, +0x3c560c09,0x3c617117,0x3c69594c,0x3c742915,0x3c81becb,0x3c82c2f0,0x3c83b92c,0x3c8275bb,0x3c84238b,0x3c9b0b7d,0xbb361768,0xbb2dc6b7,0xbb067d1b,0xbc39d4e7,0xbc07a2d3,0x3c01f819,0xbc263d03,0xbc119083,0x3b2aa2bb,0x3b17a59c,0x3b3b3382,0x3bbdfb90,0x3b8d052f,0x3b90bde5,0x3bb46a00, +0xbc0b1651,0xbc27a677,0x3c0299fe,0xbbdf8000,0xbc207b04,0xba654c83,0xbaf90eda,0xbb3231ba,0xbb3c545f,0xbb451400,0xbb5aa4fe,0xbb75b49b,0xbb9299e3,0xbb9a9ac8,0xbb9d87bf,0xbb876035,0xbb830d6a,0xbb8ea95f,0xbb87b39a,0xbb7b5536,0xbb46e64b,0xbb500f9b,0xbaed8062,0xbbcfdfc3,0xbb989eda, +0xbb4a9328,0xb9dd88f6,0xbb41b1ea,0xbb8a8163,0xbb0005f6,0xbb2ba6f7,0xbb98053f,0xbb8ca1e1,0xbbbd9208,0xbb78dd80,0xbbaddddc,0xbb13592e,0xba9c5fc5,0xbb8c589c,0xb997e4cf,0x39c010c0,0xbb5b02a8,0xba8a2e0d,0xbb87b8eb,0xbb8f30bb,0xbb94a4d1,0xbba79c0e,0xbbcc91cc,0xbc0b8575,0xbc197664, +0xbc1bee08,0xbbfabecc,0xbbf3efcd,0xbc10ac43,0xbc0f6c25,0xbbfddfef,0xbb9dcf95,0xbb9595c7,0xbb098624,0xbbeb3870,0xbc1a0142,0xbb5038f2,0x3bdc3c69,0xbae7995f,0xbb1dc5df,0x3ac6d8be,0xbad1b04d,0x3b0cfe92,0x3afa2dce,0x3adf986f,0xbafa4086,0xbae65ba0,0xbab497ee,0x39e92e22,0x3b2556b7, +0x3b6e90a0,0x3a0ecff5,0x38fbfd94,0x3980893a,0xbb7ed9eb,0xbbb5b6d4,0xbbcf98fc,0xbc01c31e,0xbc2a0f2d,0xbc6c8166,0xbc842858,0xbc85c1bc,0xbc437cd1,0xbc34a223,0xbc61d420,0xbc513657,0xbc23a915,0xbb8d1d5b,0xbbb14891,0x3a7e42f4,0xbbaff462,0xbba480f4,0x3ae485e7,0x3c6af6ce,0xb98c67f8, +0xbacd95de,0x3ba97c08,0x3b4fd459,0x3b8b9092,0x3c19103b,0x3ad80484,0xba8ad2ec,0x3b381997,0x3b8d43d3,0x3beca7ba,0x3bed196f,0x3c25300b,0x3bca4951,0x3b5e9d9b,0x3ab7b267,0xbbcd77ff,0xbc14e077,0xbc277a39,0xbc4f8052,0xbc8202e4,0xbcbb6a07,0xbccee72b,0xbcc6e0db,0xbc9053da,0xbc8c0cba, +0xbcb9d95f,0xbcb6334a,0xbc8cb4b8,0xbbe2ed21,0xbbba47c9,0xbc1f9653,0xbc95aa90,0xbcbdc75e,0xbc81045c,0xbb9e919b,0x3b4eb095,0x3bede792,0x3bb886e2,0x3ae997ac,0xba93a4e7,0xbad81c9a,0x3aff249f,0x3b2f2bdf,0x3a17b4f2,0x3b70feaa,0x3bc7cd12,0x3bdf0a01,0x3c2cc8aa,0x3bb01d3c,0xbb3bfe52, +0x3a784908,0x3ab2f555,0x3b85a1d5,0x3676fad8,0x3b06dca2,0x3c00b997,0x3b9082f3,0x3abdb9ab,0xbbb2bf3a,0xbc154208,0xbc2844d1,0xbbd0e8b7,0xbbe84374,0xbb4816f7,0x3b5d0752,0xbbc37ddd,0x3c394337,0x3cc0233e,0xbbfa66df,0xbc297660,0xbc017b3e,0xbbc96e4b,0xbb863262,0xbba710f3,0xbaeffe45, +0xba50f822,0xba60457f,0xbae260e3,0xba4ad432,0x3b013387,0x3b36267e,0x3a93839b,0x39567a61,0x36bf5e72,0x39b77f78,0x3b2a2e9e,0xbb944c0e,0xbc41300e,0xbc8467a8,0xbc76c1aa,0xbc4d56c1,0xbc223ff6,0xbbf1ef8c,0xbb60dc35,0x3a929b80,0xba4091b1,0xbbc01c95,0xbbc73fd3,0xbd052518,0xbd0f7ad4, +0xbc54170f,0xbc09d82a,0xbc005abc,0xbb5d3f83,0x3b4b7a03,0x3a91abda,0xbc6415a6,0xbc149d6b,0xbbd410dc,0xbbcb481f,0xbbc6fe01,0xbb442c50,0xb96ffa9f,0xb9f13e9a,0x3aa92e00,0x3ab0e597,0x3a1e0f89,0x3ae7618c,0x3b5bdc62,0xba0f3777,0xbb2c49b6,0x3c2110d2,0x3be37471,0x3b36e46b,0x3b04aed4, +0xbbe4485e,0xbc5c24d5,0xbc845546,0xbcadf6df,0xbc97f996,0xbc2424bb,0xbbd49c1b,0xbc451fe4,0xbcdbf284,0xbcc7c9b2,0xbcd26862,0xbd048e04,0xbc510d9b,0xbc9a834a,0xbca9f976,0xbd0a8960,0xbd06b976,0xbcbef025,0xbc65daee,0xbbb38f08,0xbbc82d7b,0xbba78d80,0xbb2f4a45,0xba2a75a1,0xba217562, +0x3909ddd2,0x39c5e6e5,0x3a03f11d,0xbad258aa,0xbb00de77,0xbb3ae25d,0xbaedf2ba,0x3bdc5b30,0x3a3f3fd2,0xbbbeb510,0xbc380187,0xbc838fdb,0xbc91307e,0xbc47dcc8,0xbc828ae2,0xbc8064ff,0xbc563566,0xbc445654,0xbc6a818c,0xbc9ba148,0xbd171879,0xbd45df04,0xbd71a8a8,0xbcfaae81,0xbd8b7d85, +0xbd255dbf,0xbb263299,0x3b95f9aa,0x3bf2fc30,0x3bda7732,0x3a3247c7,0xbbe1b8f6,0xbba4ed16,0xbb8d96be,0xbb0a5573,0x3a881a66,0x3a1a78ed,0xbb375c6b,0x39a57dbc,0x3ae4a40d,0x3b6f1d45,0xbb70b032,0xbbc7e1ac,0x39e8b200,0xba484008,0xbb164bd9,0xbbbcec0b,0xbc04bbc5,0xbc2d9bc2,0xbc7130d1, +0xbca760b9,0xbcbac29a,0xbcba80e0,0xbcabf55d,0xbcb4aac0,0xbcce4cc3,0xbcf29ebd,0xbd229745,0xbd60dacb,0xbd8867cd,0x3c86c4eb,0x3caa54f6,0x3cfa5807,0x3cc95bc0,0x3cca1c85,0x3c949652,0x3c9afbd6,0x3cb63134,0x3c9cbec6,0x3c83991e,0x3c3a21ba,0x3c141c2e,0x3c0a0b03,0x3c090dad,0x3b9ac045, +0xba670b4a,0xbbca4ccb,0xbbc8ae95,0xbbb2bf34,0xbb2b23f3,0xbbd3e7ae,0xbc192379,0xbc120464,0xbc5a67d5,0xbc5ebc22,0xbc520128,0xbc316e59,0xbc14f5d7,0xbc2a8c60,0xbc52b962,0xbca473e0,0xbd014d17,0xbcf5e4a0,0xbcc25da3,0xbc003e38,0x3bae6a90,0x3c3cc75d,0x3c6567db,0x3c4103ed,0x3c56b74a, +0x3c67bf49,0x3c7d16eb,0x3c88fed4,0x3c8ed96f,0x3c7e309e,0x3c6fec67,0x3c406278,0x3c2bcca8,0x3c002e50,0x3ba303fb,0x3b856148,0x3b59289f,0x3b0d3cf2,0x3a0a424e,0xbb36fda4,0xbba73e84,0xbbbd9ec9,0xbbf4b6bd,0xbc0d9934,0xbc2cd012,0xbc46c60a,0xbc650752,0xbc87ff55,0xbca33322,0xbcc189cf, +0xbca1ad6e,0xbc810d41,0xbc4a1eff,0xbb807857,0x3b1fc051,0x3c0bb2f5,0x3c12089b,0x3c3d0ebc,0x3c39e27e,0x3c92dd39,0x3c618084,0x3c6a432c,0x3c79a57a,0x3c697edd,0x3c6e1884,0x3c4b88bf,0x3c1ff569,0x3c02dc0a,0x3bc8b088,0x3bcae0ff,0x3b8cf475,0x3b942adc,0x3b6b92a1,0x38c1c69c,0x3a050a49, +0x3a4414cb,0xba0fbf7b,0x3ac6e600,0x3aaec935,0x3b00bbe0,0x3b201434,0x3b3d0cbe,0x3b5eb246,0x3b9189fd,0x3bb86fde,0x3bc8e0cc,0x3bc6805b,0x3bafbd38,0x3b8fc126,0x3bb13285,0x3bcc3639,0x3c013bcb,0x3c1b7610,0x3c2f4821,0x3c2d0c1a,0x3c0bc3d7,0x3c36f820,0x3ca980f9,0x3c01f085,0x3c31ea79, +0x3c98599d,0x3c95645b,0x3c94e8dc,0x3c98cbe7,0x3c959b3a,0x3c94892b,0x3c960cc9,0x3bdfe304,0x3b96d2ac,0x3c87367f,0x3bd53028,0x3b95010c,0x3bfe6f6e,0x3bfc06b0,0x3bf91fee,0x3c001733,0x3c0080da,0x3c028e60,0x3c031211,0x3c0631c8,0x3c073291,0x3c0b3f48,0x3c0b3945,0x3c0f1014,0x3c0f9620, +0x3c17fe76,0x3c1cb36f,0x3c1fed81,0x3c22e6c6,0x3c44b543,0x3c5249a0,0x3c2a3c00,0x3c4f29ce,0x3c5f44d2,0x3bc90589,0xbc0f238a,0x3c83b27c,0x3becc1a7,0xbbd35088,0xbbf4262b,0xbbf71736,0xbbf12b2b,0xbc0f94c5,0xbc19b863,0xbc2bbf15,0x3be8e1e2,0x3c7b9fda,0xbc3bcdbc,0x3bdaf9eb,0x3c6a8cae, +0x3c649343,0x3c4424de,0x3c556784,0x3c53453a,0x3c54256d,0x3c5078b4,0x3c483e7b,0x3c3dd3c8,0x3c3b8a28,0x3c3a18b1,0x3c582621,0x3c630e65,0x3c59ffda,0x3c6e955a,0x3c647933,0x3c310f5e,0x3c3fbbec,0x3c272e78,0x3c7374bc,0x3ae410c9,0x3c680ec4,0x3c634270,0x3be6f5a1,0x3c0fda32,0x3c1afce3, +0x3c2dd414,0x3c4bdcea,0x3c54aaad,0x3c4fd833,0x3c2509fe,0x3c28d5f0,0x3be63d28,0x3c089033,0x3c4aeb13,0x3c4459c2,0x3b781cb6,0x3c88ed5f,0x3c7868de,0x3c897cdb,0x3c89ea39,0x3c8a0943,0x3c7bfc59,0x3c58c3e9,0x3c33fe2e,0x3c32d7b1,0x3c41cad7,0x3c87f5f4,0x3c993c7f,0x3c889405,0x3ca292c5, +0x3c8dd960,0x3c1913ad,0x3c36f7a4,0x3c0ac579,0x3c254c1d,0x3c28db75,0x3c4085ae,0x3c76771f,0x3bcfa19f,0x3b930c4c,0x3c0cfc05,0x3ba28ea4,0x3bb3258a,0x3c35d66d,0x3becf923,0x3b6c6587,0x3bd9080e,0x3bd2b224,0x3c1fe65e,0x3c1e74d7,0x3c4f79ec,0x3c66dbf2,0x3c82bf7e,0x3c960873,0x3c9a826f, +0x3ca43275,0x3ca42074,0x3c948099,0x3c773f30,0x3c2e0934,0x3c270451,0x3c3729a9,0x3caddb03,0x3cd2478a,0x3ca91973,0x3ce42649,0x3cbac869,0x3bf78cb0,0x3c35c14b,0x3be26344,0x3c141c83,0x3c21a03c,0x3c77e18a,0x3caeb876,0x3bbe043b,0x38bec248,0x3ba7b94c,0x3b5ba52a,0x3b9dd5cb,0x3c101106, +0x3aa2e2e2,0x39cb634d,0x3b458372,0x3bda3f2b,0x3c2451e7,0x3c34c380,0x3c72c54a,0x3c640fb2,0x3c8955e3,0x3cb508c4,0x3ccd28e4,0x3ce7127a,0x3ce31ef5,0x3cbf7b59,0x3c8120ed,0x3c006b2c,0x3bd58839,0x3c1f6b52,0x3cd85002,0x3d045ba5,0x3cc8dbc1,0x3d06f6c5,0x3cbd99c4,0x399f6c93,0x3bb30f34, +0x3ca17fce,0x3c354842,0xb8ce18c0,0xbb27787e,0xbb8dbf22,0x3bc90f76,0x3c5046f5,0x3c3159c1,0x3ba4cfa3,0x3aacdce6,0xba839e6d,0x3b35b809,0x3b7049b2,0x3b21851f,0x3bd459ba,0x3c1493e2,0x3c2834aa,0x3c99bb72,0x3c928e92,0x3c93d8d2,0x3cac244f,0x3c4a0b4e,0x3bda33ab,0x3bb19f14,0x3ba3d177, +0x3b36752e,0x3c186514,0x3c4d6801,0x3c38059d,0x3c88ba24,0x3cc4454a,0x3d0e256d,0x3d05e803,0x3d096fb3,0x3d0e3db8,0x3ccf2dd8,0x3bc0d74c,0x3d0a9d9b,0x3c2a5713,0x39256673,0x3bc85373,0x3ae40060,0xba93cdb9,0xbb1bb50e,0x3a0983c6,0x3b007b32,0x391fae09,0xba92a283,0x38626d80,0x3b39f214, +0x3bad0019,0x3bcecccd,0x3bf7e145,0x3b47dedd,0x3a7c1016,0x3c364649,0x3c839de5,0x3c9f0bb6,0x3cc59b4c,0x3c630625,0x3bf3aede,0x3ba568f7,0x3b219198,0x3b88eb57,0x3bfb7368,0x3c01f0b6,0x3c06965a,0x3c365b1c,0xbbc0098c,0xbc4f8dd3,0xbc130c0b,0xbbc49570,0x3ae382ee,0x3918a27b,0xbaab1901, +0xbb119080,0xbc40ee01,0xbc148465,0xbbc38594,0xbb48c0b0,0xbb7016c5,0xbb22f60f,0x3a2d7c87,0x3a8bb37c,0x3b1ef7c7,0x3abcb7cb,0x3b5ea1f6,0x3bdc8713,0x3bfe470f,0x3bb22a06,0x3c1b4e6a,0x3c9b20e0,0x3c1e7934,0x3bbae578,0x3b83cc09,0x3c36378b,0x3ca55ad7,0x3cf0edfd,0x3cbeb47f,0x3c8a7f88, +0x3c4079cf,0x3c82d4d9,0x3cef21b0,0x3d3bd204,0x3d6a2cff,0x3d58c4fa,0x3d183cea,0x3c58dd2c,0x3cd8d1d4,0xbb8e1676,0xbccd3621,0xbcba730c,0xbcaf4f4e,0xbc0573f5,0xbb5c0003,0xbb237f2d,0xbb4b85fe,0xba890176,0x3a5e5e9a,0x39ab4fbc,0x3a0326ea,0x3b5e9e59,0x3b438c69,0x3acb0ebd,0x3b1774f4, +0x3aea548e,0x3b2d2c47,0x3c0a40c8,0x3c2cc429,0x3c537f8e,0x3c31d46a,0x3c2e9202,0x3bd82999,0x3b8a5ee0,0x3b437180,0x3b9e2e77,0x3c0f2dd5,0x3be1d569,0x3bb5ae6d,0x395379a2,0x3c85d7af,0x3ce1be5d,0x3d27b344,0x3d12c0bb,0xbc04876c,0xbc88b8dd,0xbc82dfcb,0x3a63ec55,0x3be98b7b,0x3a8d106e, +0xbb6bebc3,0xbb8bfc97,0xbb7dbd0f,0xbb1d0af6,0x3a07890e,0x3b4fcb9e,0x3b2e22f1,0x39e5144b,0x3a8fcac1,0x3b0c3217,0x3ba7d30d,0x3afce6b3,0x3a82fa2a,0x3bf2d738,0x3ba3609c,0x3af220fa,0xbb43cf17,0xbb066ed6,0x3ab1fddb,0x3bf38501,0x3bb88150,0x3c27938e,0x3ca28d53,0x3c79712f,0x3c8bbf23, +0x3cabc438,0x3cdf8795,0x3cc11db7,0x3c4689a5,0xbb06ed20,0x3d084695,0x3d2616c8,0x3cf6fb12,0x3d02c394,0x3ce9442a,0x3ccd95b8,0x3cb97c3e,0x3cc3be2f,0x3cb2db86,0x3c926d3a,0x3c3d8cd9,0x3c246094,0x3c14c617,0x3bf24c59,0x3bd4f694,0x3b82737d,0x3aadf43d,0xbb3e03e3,0xbb6e1627,0xbb15e386, +0xbafa7d84,0xb8eea432,0x3a2a5df0,0x3b8014a8,0x3b868569,0x3b72ea17,0x3b14fc4b,0xbb2b9355,0xbc343d0c,0xbc15fb49,0xbc04e0d1,0xbbb67d7d,0xbc45203a,0xbc1faafa,0x3ad9067b,0x3c970d07,0x3c998ebd,0x3cb3ac3d,0x3cb4e9b4,0x3cc4f995,0x3cb82ecc,0x3cb50dd1,0x3cad058a,0x3caa1f81,0x3c91c19c, +0x3c8634c1,0x3c7a3ea1,0x3c551f01,0x3c145716,0x3bf92f29,0x3bba4c17,0x3bb1fb3a,0x3b7dc90d,0x3b28e50f,0x3abf3c3f,0xbaa9929e,0xbb9d8f5a,0xbbf61e89,0xbc323313,0xbc45991d,0xbc571df3,0xbc6c361d,0xbc59e805,0xbc4513cb,0xbc3b9faf,0xbbf17a39,0xbbaa0345,0xbb1eb968,0x3b8c8970,0x3c2fccb0, +0x3c7b4328,0x3c89c669,0x3c7a8ba2,0x3c886d58,0x3c49f16c,0x3c810553,0x3c83493b,0x3c83903e,0x3c8f7d15,0x3c9181fa,0x3c89113c,0x3c876b28,0x3c74898a,0x3c6b9338,0x3c487a8b,0x3c36952d,0x3c0c864a,0x3bcc3567,0x3bd9ddf4,0x3b6b198e,0x3acd3b3f,0x3a0bebcc,0xba2b7b14,0xb786b8fb,0xb95ba4fd, +0xb960140f,0xb9f5124e,0xba8f7644,0x3ad406cf,0x3b8f0a2b,0x3bf30eb4,0x3c275e19,0x3c5d593e,0x3c86ca0b,0x3c8171b6,0x3c76cd13,0x3c787750,0x3c7e7f98,0x3c5e1bf9,0x3c60d74c,0x3c90f9d3,0x3c7cce5b,0x3c16a98c,0x3c965da1,0x3c85546d,0x3c38e08f,0x3c280476,0x3c1a1c85,0x3c07dafc,0x3bf7826c, +0x3be08d36,0x3bc19227,0x3c6082b7,0x3c7b2d2f,0x3bb4e106,0x3c48b79f,0x3c5fe2fa,0x3c0f8f35,0x3c148b31,0x3c122b18,0x3c0cde84,0x3c08a726,0x3c05980b,0x3bf70343,0x3c1540c6,0x3c25e74c,0x3c376bac,0x3c4779c9,0x3c563907,0x3c70674b,0x3c67a03a,0x3c686e1d,0x3c63ef03,0x3c64d2f8,0x3c7c194f, +0xbbe7bb0c,0xbbbfc937,0xbc23fe95,0xbb3a9d17,0x3c03cb96,0x3cbec34c,0xbbe2a056,0x3baad687,0x3c9cb14d,0x3c9f0fc6,0x3ca0d401,0x3ca36aa8,0x3ca87b80,0x3ca91d9d,0x3caa5645,0x3bc15423,0xbbaf2ab2,0x3cbce4f3,0x3bfff0c8,0xbaca9580,0xbc0d4269,0xbbb86965,0xbbeee953,0xbbf90597,0xbbfdbe14, +0xbc04ab98,0xbc0f0f99,0xbc11b8bb,0xbc145b4b,0xbc1a04ef,0xbc0a1e58,0xbc0791bb,0xbc1455ab,0xbc042f4d,0xbbf2a8ac,0xbbc8347c,0xbbe08756,0xbbc3492f,0xbc0b5191,0x3c47f67d,0xbb78134f,0x3bbbd62c,0x3b071954,0xbb66563a,0xb90b8924,0xbb978cc1,0xbb8e1957,0x39ff581c,0xbb8d7502,0xbb618051, +0xbb5cd07e,0x3b01db5d,0x3a8bb216,0xba8a5c8f,0x39baf429,0x3c5b9922,0xbbb44df4,0xbbe31cec,0xbc0ea8cd,0xbc2ab10b,0xbc3115ed,0xbc43bd6c,0xbc5e3831,0xbc68e79d,0xbc69ad3d,0xbc71022f,0xbc4354b9,0xbc3a64be,0xbc5b0c93,0xbc33d56c,0xbc191e65,0xbbc8734b,0xbbdf090e,0xbbede8a9,0xbc01fa11, +0xba21cd97,0x39d9eb4d,0x3c4a7ab0,0x3ab8f6af,0x39cb0129,0x3b48b008,0x3b2dbfa0,0x3a18bf56,0x3bc8c9ca,0xbad83921,0x3b3299c5,0xbadddeaf,0x3b5cb3ae,0x3aac6975,0x3b365d48,0x3bac0b89,0x3bdc38bb,0x3a176388,0xbbfb469e,0xbc175ba0,0xbc5715b4,0xbc61760a,0xbc83930c,0xbc9bd2e5,0xbca7ef09, +0xbcad52a9,0xbcb3dd7c,0xbc88e778,0xbc801c29,0xbca2a0f4,0xbc6a1e90,0xbc243763,0xbb9f66eb,0xbbc57a0d,0xbb7e0835,0xbb234a82,0x3b83f2c0,0x3ba21f7e,0x3c8e4aa9,0x3aa4c9c2,0xbb2043df,0x3bb36a0d,0x3b057ba5,0x3b822ca4,0x3c12947f,0x3b3c7e92,0xba98f0d7,0x3abb8f97,0x3b61fb51,0x3b6ec24f, +0x3c0e89d6,0x3bf620ad,0x3c4ce1d7,0x3b710040,0xbbf54583,0xbc3e9756,0xbc94a6df,0xbca398c0,0xbcc63d24,0xbcec3a68,0xbcffa148,0xbcf84151,0xbcf7eccd,0xbcb1a29c,0xbca27fcc,0xbcd71eda,0xbc8f687a,0xbc463d51,0xbba4f5b3,0xbb8abcf6,0xbcb35d89,0xbc476ab4,0xbc098bb7,0xbc203fb8,0xbb643c36, +0x3bd34ffe,0x3c201622,0x3c17a86b,0x3b7ed5c9,0xba409b62,0xbae7ad7d,0x3acffb05,0x3b416ec9,0x3b2ca5b8,0x3bbc59d1,0x3bb37205,0x3bf9b7d7,0x3bcc2593,0x3c2be79e,0x3b409d1c,0xbc3e0e31,0xbc17d440,0xbc2bf7d0,0xbbcaed71,0xbb9cec01,0xbb3137d8,0xbbf85087,0xbc46b637,0xbcad6060,0xbc84b4b4, +0xbc90b05b,0xbcadb007,0xbc951e14,0xbc2a45d1,0x3b850150,0xbc1ce0d0,0xbbaf5a9f,0x3ca10203,0xbafef6d2,0xbc27b0b8,0xbbc463a2,0xbb9a0bbe,0xbb560877,0xbb2ccf2d,0x39b44918,0x3af06938,0x392dfb73,0xba80858a,0xb9523025,0x3b03c7b7,0x3a77d742,0x3abc3702,0x3b61f617,0x3af7c3db,0x3bb056ff, +0x3af356d7,0xbc30a6c4,0xbc7a621b,0xbcd4c73b,0xbc9e29ea,0xbc57a6ad,0xbba31d4b,0x3a27da32,0x3b9097dd,0x3ba810f4,0xba470b8d,0xba29ae9a,0x3bde8e21,0xbc8b07e0,0xbcc02f63,0xbc41f422,0xbc6d457c,0xbbf4f301,0xbbc70725,0x39d7146b,0xbb2bbfba,0xbc0c3615,0xbc362259,0xbc06cfa7,0xbb868f39, +0xbba3cf93,0xbb8c1c82,0xba8336c6,0xba002ce7,0x3ab6cf51,0x3a59efe1,0x3adba857,0x3b091b33,0x3bb66bb4,0xbb198def,0x39452c71,0x3bce9ae0,0x39c3e4ab,0x3b13b0ee,0xbb00a96a,0xbc4d9179,0xbcba2dde,0xbce45b7d,0xbd0d9272,0xbcfb4b4a,0xbc85f936,0xbca1e739,0xbcdc5c86,0xbd130ec7,0xbd107136, +0xbcfa6a13,0xbd06fed8,0xbc3e6060,0xbc3f859d,0x3b6a6d4c,0xbc8e686b,0xbcd87ccd,0xbc8bbc7b,0xbc4cdd7d,0xbb7f53b1,0xbb46b6bc,0xbb3a8957,0x38140bd8,0x3a53a059,0xba81195e,0xb9b6f89e,0x3b133cab,0x3abb06bb,0x3a71680c,0x385f4461,0x39d50710,0x3b92646c,0x3ac7b3bf,0xbbbc57e5,0xbc1ead87, +0xbc702025,0xbc46973e,0xbc248598,0xbbe02ab1,0xbc544fac,0xbc4ad63c,0xbbe646c6,0xbc1c9c43,0xbc4b69d6,0xbca05441,0xbd2181c6,0xbd5429f7,0xbd6f6ed2,0xbce22357,0xbd9fb334,0xbd56d507,0xbc2c72b5,0xbbf2d4f8,0xbb5b80a8,0xbbbe1133,0xbc2a7642,0xbc1ee426,0xbbf6a0e4,0xbbff237a,0xbb3e94e3, +0x3abd6314,0x3afc5f7c,0xba09b4b1,0x394d84f4,0x3a953641,0x3b66fd2d,0xbb18f78b,0xba068ffc,0x397578f1,0x3b11610c,0x3b33788c,0xbb977278,0xbbcdbe30,0xbc2e04bc,0xbc7d60d2,0xbc8cc4a6,0xbc919679,0xbcb61d20,0xbc999c72,0xbcaa4c36,0xbce350c4,0xbd0b3394,0xbd241fb7,0xbd4663fe,0xbd878044, +0xbb511545,0x3c56f84a,0x3d03c271,0x3cbb61e4,0x3ccf4a78,0x3c9ecf12,0x3c8988fe,0x3ca1c2e9,0x3c878b57,0x3c6d29ba,0x3c0b129d,0x3bf6db1f,0x3bab48f2,0x3b5d3ad6,0x3b3e11ae,0x3a1b489b,0xbacfbff2,0xbb196896,0xbb25a3a8,0xba940f72,0xbbd3ba0d,0xbc19328e,0xbc2de173,0xbc25500d,0xbc2affa5, +0xbc1bc0e6,0xbc1343ce,0xbc0b8d92,0xbc1d292b,0xbc314ab1,0xbc994247,0xbd0bae56,0xbd06d77f,0xbd03585c,0xbce0f538,0xbc52204b,0x3b341dee,0x3c4415b4,0x3c813401,0x3c7f6632,0x3cab9684,0x3c9a764d,0x3c96c64e,0x3c89ba42,0x3c8aebd8,0x3c5bdb44,0x3c667641,0x3c1d9d59,0x3c3b8cd4,0x3c011e3b, +0x3bdbf637,0x3b691e79,0x3b08f400,0xbabb2be7,0xbba5e69a,0xbc42df51,0xbc7574ec,0xbc754218,0xbc88cae2,0xbc8c2f34,0xbc913e1a,0xbc943959,0xbcb529b3,0xbcd3d35b,0xbcf1ce71,0xbcf563a4,0xbcf1d4a6,0xbcf897e2,0xbca84dbe,0xbc491ff6,0xbbb39557,0x39448880,0x3b3840c2,0x3b6e9e6b,0x3c90b738, +0x3bd14c0c,0x3c2bd3d1,0x3c3ea6dc,0x3c0d6471,0x3c23f345,0x3baf5f4c,0x3b76f84e,0x3b98d391,0x393b26d1,0xbabaec09,0xbb26bcd9,0x39b5521b,0xb93c7fcd,0xbb6d3ba2,0xbb37eb92,0x3b118932,0xbad955fd,0xb9b46082,0xbaf11f52,0xbb29c5e7,0xbb58bd96,0xbb8a0bd8,0xbba0f337,0xbba2c1b1,0xbba2792b, +0xbbb0eb11,0xbbc06fb9,0xbbd8b70b,0xbc04d68a,0xbbc82c4c,0xbb990264,0xbb14d967,0x37df759d,0xba005aa3,0xbb0802f1,0x3b890dff,0x3c3b6176,0x3cb53377,0x3a862873,0x3c328463,0x3cb1c20a,0x3cb0ea5c,0x3cb0170e,0x3ca94766,0x3cafbb59,0x3cb19da0,0x3cae5b1e,0x3bfd55ef,0xba6c7aed,0x3ca1eaca, +0x3bff152b,0x3a9d9f84,0xbb185fce,0xbae3e4ba,0xbb210d49,0xbb29bf2d,0xbb48e775,0xbb603fbd,0xbb805501,0xbb8301b6,0xbb890460,0xbb8b1795,0xbb9449a7,0xbb98072f,0xbba68f3f,0xbb7a94bb,0xbb4766a9,0xbb1bf908,0xbaef81fb,0xbb246ce8,0x3c564da1,0x3c3275c6,0x3c85c6b0,0x3b6977bc,0xbbe75450, +0xbc67ff0a,0x3c0b5960,0xbba88596,0xbc6d8bac,0xbc808f7d,0xbc7edfb7,0xbc5a619a,0xbc812d19,0xbc83e072,0xbc82b5ea,0xbbb43b29,0x3bdbd31a,0xbc88418f,0xbbbcb5c7,0x3b7b5362,0x3c89db8d,0x3c46d182,0x3c599e67,0x3c5854af,0x3c57da61,0x3c5135ef,0x3c3f841a,0x3c3e621f,0x3c3fca69,0x3c4266e1, +0x3c58b834,0x3c5fedd5,0x3c5849af,0x3c5fb14f,0x3c566133,0x3c300139,0x3c4403ef,0x3c493709,0x3c73594b,0xbc01e9de,0x3c55ae3e,0x3bf3389a,0x3b1ebe30,0x3bcaa9e8,0x3bca9934,0x3c235659,0x3c1a4c02,0x3bba9321,0x3c0eeca2,0x3c03c8d1,0x3bd402ab,0x3b291449,0x3b99facd,0x3bcbfa75,0x3c12b7f8, +0xbba6157a,0x3c7c5226,0x3c859254,0x3c8123be,0x3c885400,0x3c87c9e8,0x3c7aba7b,0x3c44fe53,0x3c3678bb,0x3c37dd38,0x3c43ce89,0x3c819e11,0x3c89cb50,0x3c6d9e24,0x3c7d5cdf,0x3c5be934,0x3c05b4c3,0x3c2b236b,0x3c59e9ba,0x3c4779be,0x3b85a860,0x3c0c3b06,0x3c22e1e0,0x3b4e99bc,0x3af3b522, +0x3bd195e5,0x3ae479d6,0x3bd30dd8,0x3b9fecf6,0x3c14a129,0x3a50fa97,0x3bb19e6c,0x3ae32963,0x3bd10e16,0x3bbcdc0c,0x3c0e6683,0x3bdd57e9,0x3c6611f9,0x3ca67cfe,0x3c91b714,0x3c9ea1a4,0x3c9b8673,0x3c86ee0e,0x3c2b8db2,0x3c195fc0,0x3c224423,0x3c4b6c07,0x3c9c990c,0x3cb1103b,0x3c932f60, +0x3c9d594c,0x3c85e43b,0x3be7835a,0x3c30d93d,0x3c6dac48,0x3c52dcda,0x3bf35646,0x3c87da1a,0x3caf844b,0x3bb00239,0x39dd3ff7,0x3bc798f7,0x3b981640,0x3ba82293,0x3c3a9c63,0x3b2ef0e1,0x3ade6858,0x3ba15473,0x3beb0b0a,0x3c25e867,0x3bb71931,0x3c794979,0x3c0de0a6,0x3c8bdb22,0x3cc76148, +0x3cb4b47c,0x3cd0c24e,0x3cca4f95,0x3ca63059,0x3c1ef2d3,0x3bbd97d9,0x3be89ece,0x3c38e690,0x3cb5df7a,0x3cc49561,0x3c8b267e,0x3c93c9f1,0x3c300eb1,0xbae9765e,0x3b83b63c,0x3cbf610a,0x3ba0a006,0xbc542b10,0xbc45eabb,0xbc4826ea,0x3af99954,0x3c48c5bc,0x3c3a5045,0x3bc70d87,0x3a966f11, +0xbac1f8d5,0x3b25b730,0x3b84f916,0x3b2d4c88,0x3be7168b,0x3c1ff9ec,0x3bf808e5,0x3c786860,0x3c0abdc7,0x3c6444fc,0x3cb3a22e,0x3c65c51c,0x3c84c135,0x3c03a11e,0x3c030792,0x3c0e3ab0,0x3c9e5c90,0x3cb54dba,0x3c65d675,0x3cd1b2b6,0x3cef1180,0x3cd4295e,0x3cd8c7dc,0x3d02fde0,0x3d2cfc55, +0x3ce34193,0x3c4067ac,0x3d00f4a3,0x3b83f465,0xbaa4a80d,0x3bdd289d,0xbb04ca51,0xbb0532e6,0xba9d19fd,0x3b0a3d15,0x3b705f07,0x3b0de0fb,0x398e587c,0x3a4ff75e,0x3b840790,0x3b9fd78c,0x3bcd95f3,0x3bc4169e,0x3b98c8ab,0xb97f1101,0x3c03bcb7,0x3c74a9fb,0x3c6a1342,0x3c9b385f,0x3c56b370, +0x3c155f77,0x3bc61fbc,0x3b49049e,0x3bbcbb87,0x3c3ba20e,0x3bdfc603,0x3bced3fd,0x3c0f85c6,0xbbde71e1,0xbc5ac00f,0xbc3643de,0xbbd3d2de,0xbaa1ecfc,0xbaacc394,0xbbc75de0,0xbb50303e,0xbc2cb472,0xbc09a96a,0xbc1add0d,0xbab833f1,0xbb631d2d,0xbb0b66a1,0xb80b4457,0x3b12e09f,0x3b7162b0, +0x3a982bdd,0x3b4dd698,0x3bf2552f,0x3b95dc55,0x3ba55295,0x3ba36d58,0x3c505ed5,0x3c5a89c2,0x3c02fcd0,0x3bbc2a1a,0x3c716eba,0x3cb24f81,0x3cd2077f,0x3cbb5e9b,0x3ca4834d,0x3ca2a2c9,0x3ccc50a7,0x3d0857ba,0x3d1fefff,0x3d192b52,0x3d043490,0x3cb85100,0x3bc4a1a1,0x3c89a588,0x3b25d8c8, +0xbc3c6265,0xbc626ce6,0xbc70eb03,0xbbc10f41,0xbad44586,0x3b09ce76,0xba2d4116,0x3acaaf6c,0x3b0047ef,0x39d50cde,0x3a24f17f,0x3b6ccaba,0x3b7d32ba,0x3b4c5468,0x3b896bc3,0x3bcadcf9,0x3ab59a0f,0x3b9fed05,0x3c518d76,0x3c69a211,0x3c5be7aa,0x3c534880,0x3c1bfdab,0x3b8c4f77,0xbad2622a, +0xbb173574,0x3a7476f8,0xbb8785d9,0xbb4c07bd,0x3b53c5e5,0x3c05ddc7,0x3c856ef7,0x3cedf4ed,0x3c917fe0,0xbc570fae,0xbd220fc4,0xbd236b1a,0xbc8a77d7,0xbbe91810,0xbc6218d6,0xbc63ae17,0xbc06bdf5,0xbc1abe34,0xbbb8de22,0xbb1cdee2,0x3b2b5984,0x3b637b2d,0x3b06f4cb,0x3aa1f3f3,0x3ac646c8, +0x3ba59de6,0x3ae088d6,0xbadefa41,0x3be45209,0x3be0ad42,0x3b241b18,0x392ae4f2,0xbb013c92,0xbab44159,0x3ae60508,0x3ba01c7e,0x3be4bf64,0x3bd8b753,0x3c27d8f8,0x3c41f582,0x3c5fb14a,0x3c42ddf1,0x3c0bb946,0x3bdde4c8,0xbbfc6153,0x3c0ef554,0x3c619fde,0x3c2897dc,0x3c738751,0x3c75f6a0, +0x3c83e656,0x3c8c7b8c,0x3c936d2d,0x3c8ebc8f,0x3c72565a,0x3c2edefe,0x3c03de6c,0x3bc75946,0x3b923bf2,0x3bb60b4a,0x3b899e68,0x3b54e635,0xba06733b,0xba7f0f50,0xbacc73c0,0x3b07ad16,0x3b8397bf,0x3b66c93c,0x3b5a6f66,0x3adb80be,0x3a58dd94,0xb919a587,0xbb1d9ace,0xbbe43e7f,0xbb383a49, +0x39ce29fb,0x3b945b6f,0xbace76ea,0xbbc75b1a,0xbbf7af30,0xbaf4e7a3,0x3c7056b1,0x3c90cc32,0x3c7b93c3,0x3ca003a9,0x3ca0ae66,0x3c9bf1b9,0x3c918780,0x3c8ecf86,0x3c65fdd4,0x3c686a8f,0x3c354551,0x3c5415c2,0x3c188743,0x3c1fa0f4,0x3bbf1aef,0x3b92eba8,0x3a900095,0xbac15059,0xbbc919ba, +0xbba60bd2,0xbba47865,0xbc1c9e6c,0xbc41370d,0xbc5211be,0xbc5ae6cd,0xbc6bd4d4,0xbc6491b8,0xbc5e8f53,0xbc5e6682,0xbc520fc5,0xbc5a24ee,0xbc5caa53,0xbbfdd648,0xbac46290,0x3b83a078,0x3c147ee1,0x3be8a2b5,0x3c02d217,0x3b18871f,0x3c054992,0x3bd83988,0x3be9710f,0x3c1e1f01,0x3c268239, +0x3c23482c,0x3c1017d9,0x3ba384f4,0x3bb2100e,0x3b8f3f19,0x3b175a9a,0x3a15cd35,0x3ab1e5a0,0x3b2bd242,0x3b3119af,0xba376140,0x3b68b806,0x3a929e11,0x39b0246a,0xba467e75,0xbb0ff687,0xbb73aa60,0xbbb9a00a,0xbb481525,0xba7e70b2,0x3a9d6d61,0x3b4cbcc8,0x3bb4e47c,0x3bed8f2e,0x3bf5bdae, +0x3be2be1b,0x3bdf96ed,0x3bda9c1a,0x3ba91676,0x3bd06d3f,0x3b403bfb,0xba6c5249,0xbb355014,0x3ba43874,0x38a1f236,0xbb0168fb,0xbb599483,0xbb8934e3,0xbb8982d2,0xbbbd56b8,0xbbdf7f95,0xbbf81b50,0xbb167680,0x3b4476fe,0xbbd49e2b,0xbb1ba8f9,0x3af68a05,0x3b97b267,0x3b3fc078,0x3b369b0e, +0x3b09a181,0x3ace9544,0x3a99a72b,0x39759b16,0x3abb10a5,0x3b05b05c,0x3b339032,0x3b5e2d15,0x3b80929d,0x3b9d01cf,0x3b97c1ec,0x3ba1d4b2,0x3baa01e6,0x3bb1cfac,0x3b98cb9c,0xbb14084f,0xbac1cc16,0xbbd7bcbe,0x3c138fc4,0x3c9119c0,0x3ca5e357,0x3b7a0ceb,0x3c74a6fa,0x3ca0831b,0x3ca409ed, +0x3ca2aeaa,0x3c9430ea,0x3ca0d81d,0x3c9fa76d,0x3c974328,0x3c7c76d8,0x3bb96c40,0x3c9da4d5,0x3c87dcfb,0x3c1f3563,0xbba395a7,0xbaaf7fb3,0xbb2319e8,0xbb3915c3,0xbb3fb0a7,0xbb52055f,0xbb719ef8,0xbb760c7f,0xbb7b64e9,0xbb87d2d7,0xbb4a4f32,0xbb363414,0xbb5c771f,0xbb0c3f98,0xbadb6d38, +0xbabcf3c5,0xbafe1403,0xbb0f0893,0xbac16b16,0x3ca055c6,0x3b261695,0x3c40e84d,0x3be26c31,0x3ac77d69,0x3b86e9e6,0x38f69a0c,0x3b2c3559,0x3c00aa8e,0x3b63048b,0x3b110015,0x3b47a618,0x3bcfe604,0x3ba1fe6f,0x3bc93195,0x3b9febb0,0x3c92d398,0x3af6986e,0xbb086df1,0xbae340e6,0xbb7b2b14, +0xbb8c78a0,0xbbb8e0e9,0xbbeb1347,0xbbf8aa11,0xbbf024f4,0xbbf4ace6,0xbb8b37b7,0xbb444e03,0xbb8d00c7,0xba892f86,0xb9e7db7d,0xba259c26,0xba7a9d2b,0xbb51a36e,0xba881300,0x3c2f31fe,0x3be422ac,0x3c746a14,0x3b9d5f8d,0x3b6a25e9,0x3bad1a2d,0x3bdbb126,0x3b059df8,0x3c1baebe,0xb6ae81bc, +0x3bd805c1,0x3aa0eb6a,0x3be9d39a,0x3b947de2,0x3bb41222,0x3c09c246,0x3c53dbea,0x3beb287e,0xbb37b405,0xbae68635,0xbba90440,0xbbb28c2c,0xbbff8e0e,0xbc20edc0,0xbc3533bd,0xbc358c52,0xbc3e6a20,0xbbd061cb,0xbb84533c,0xbbeac818,0xb9b45b0b,0x3af9baa2,0x3a6c6b53,0x3ab727b5,0xbafb1a7d, +0x3b8f1e7d,0x3c73b3af,0x3c44aca0,0x3c969755,0x3b80dfd1,0xbb13bae1,0x3b855fa3,0x3b115041,0x3b9a5cb6,0x3bf90eb3,0x3b64c6d1,0x39789cd0,0x3a34f01e,0x3b7b60f6,0x3b391bda,0x3c19e0af,0x3bfbf8f5,0x3c8c459d,0x3c31d69b,0xba5a4486,0xb9bbaea5,0xbbc34a71,0xbbf8ccb1,0xbc40c995,0xbc883875, +0xbc9b799f,0xbc8f4ba8,0xbc8d0150,0xbbee8148,0xbb5b579c,0xbbeb4dc0,0x3b6a2351,0x3b7eb1cf,0x390682b1,0x3b0d98b9,0xbc47af79,0xba63e633,0x3b955ebe,0xbb8a1f51,0xbb938ffb,0x3bf56ba2,0x3c47cad8,0x3c55d8d0,0x3befc735,0x3a8c6a61,0xbb0c799d,0x3aba1d45,0x3b49ffe4,0x3b800a52,0x3bf77c77, +0x3bcbb895,0x3c13686d,0x3b9e39ac,0x3c577357,0x3c1edc6e,0xbc1dcb15,0xbbfd2768,0xbc3bf0e2,0xbbb18840,0xbbbeeda7,0xbc07cef9,0xbbb31715,0xbc11b4af,0xbcb7e514,0xbc2a2d71,0xbc053920,0xbc3dafef,0xbbe9e32a,0x3aebb676,0x3c88f949,0x3b84b335,0xbc7f9190,0x3c54e66d,0x3c194413,0xba917ffd, +0x3b2b6c85,0xbb4ee405,0xbbb6f2a4,0xbb0b523e,0x3a221103,0x3b529525,0x3b235132,0x39eb0bf0,0x3a5d4390,0x3b0064c6,0x3a785616,0x3b6d44ce,0x3bf389b2,0x3bc18f57,0x3c2332c9,0x3bb74cf5,0xbb12366a,0xba9d0183,0xbc1dea07,0xbbcc0f70,0xbb397698,0x3b4b4613,0x3bc3c705,0x3beec3c8,0x3b952c79, +0x3adf1790,0x3b945dc0,0x3c52c913,0xb9973fe1,0xbc0ec17b,0xbc55e436,0xbc823cb7,0xbbcf8bd1,0xbb48d15b,0x3a2318ff,0xbb7b60a2,0xbb4c46aa,0xbc07471c,0xbbd0b33c,0xba624aa1,0xbb45baf7,0xbb747e0b,0xba3bbdfc,0x3a4a5a16,0x3b152032,0x3a45345b,0x3b50b616,0x3b888234,0x3bcab3e2,0x39da6db7, +0x3badec5d,0x3b8cbecd,0x3a0bbcc7,0x3bb5d670,0x3a35d6b7,0xbb99020b,0xbc379e36,0xbc65f628,0xbca9824d,0xbca8e50a,0xbc2b79c3,0xbc5c90d4,0xbc4f3f71,0xbbc6bb19,0xbc003ee3,0xbba799b0,0xbc047656,0xbb99da07,0xb9816df1,0x3b5c4050,0xbba85da4,0xbc56c85f,0xbc198f31,0xbc106d51,0xbb53b0c7, +0x3ae6bcd3,0xb9778662,0x3b089f2e,0x3b3106d1,0x38c17eac,0x3a00b8c9,0x3b5bc50f,0x3b577922,0x3b9f2ee4,0x3b979aa2,0x3ba22932,0x3c0ead3d,0x3aff951c,0xba03431c,0xb95449af,0xbb662783,0x386d6e73,0x3b048017,0x3b0c0d92,0xb76ddbd0,0x3aa52082,0x3ba74233,0xb9b713ed,0xbba3e865,0xbc64aa12, +0xbc642bac,0xbc6b8519,0xbc7d1419,0xbad479ef,0xbd050158,0xbcef6bb9,0xbc5aab75,0xbc504854,0xbc09c294,0xbc48b29a,0xbc6d477d,0xbc049041,0xbbf086ae,0xbc03079e,0xbb549570,0x3a1c48c3,0x3b201816,0x3b2121db,0x3ae7d175,0x3ae9c41a,0x3b4381be,0x3b025636,0x3bd1189a,0x3b456d7a,0x3b715a2d, +0x3b8a6069,0xba145e39,0xba89b60c,0xbb3e0410,0xbb9d56ad,0xbacf9839,0xbab24d54,0xbbd81d35,0xbb74a5cd,0xbbe0697f,0xbc7f09cd,0xbc9aec64,0xbca8716f,0xbcc68b8e,0xbcd090fb,0xbc80979b,0x3adaf37c,0x3c85c02b,0x3c4ca65d,0x3c6a496e,0x3c649cd3,0x3c3f7b83,0x3c694be4,0x3c29ed33,0x3c146168, +0x3bb3d516,0x3bd277c3,0x3b8b13c1,0x3b5759e2,0x3b7e8174,0x3b8b2da4,0x3b9638f4,0x3aa71d33,0xbaa69491,0xba64e4d7,0xbb3c1652,0xbb5e744e,0xbb5bb094,0xbb8e8700,0xbba0becc,0xbbcad6af,0xbbdf9b52,0xbc06f7b2,0xbc25d03b,0xbc0913ac,0xbc1ede01,0xbc64337b,0xbc8d71a9,0xbca23482,0xbcb0ce82, +0xbc92693d,0xba4a7c78,0x3c241e36,0x3c8f6240,0x3c85b4a6,0x3cb7aaa6,0x3c9de975,0x3c8cfd88,0x3c752656,0x3c80d1b4,0x3c463e37,0x3c68f98b,0x3c12a309,0x3c3d181d,0x3c0603c1,0x3be59646,0x3b48cf56,0x3ac00662,0xba2c8316,0xbafb41b1,0xbbdbe88d,0xbc39c05a,0xbc48807f,0xbc737651,0xbc7d15f3, +0xbc855ad4,0xbc8b0b26,0xbc91436c,0xbc9551e9,0xbc98af70,0xbcafb07d,0xbcc6d6a6,0xbce558fd,0xbcb19e30,0xbc82bd3a,0xbc40a217,0xbb752310,0xbad1b50e,0x395bc578,0x3c31cc16,0x3abe3958,0x3bc45b61,0x3bc6db30,0x3b81d695,0x3bb89e30,0x3b025841,0x3b17f4f8,0x3b96087a,0x3a89bcaf,0xba6c3cc8, +0xba4f0fce,0x3ab2a2ff,0x399fd0f1,0xba85b6ab,0xbae6cdd4,0x3b5dd6f9,0xbb58801a,0xbb7b11a4,0xbb99edec,0xbbc33fee,0xbbe43af5,0xbc084aeb,0xbc1fd798,0xbc2c04c7,0xbc37560e,0xbc3a6285,0xbc38ac63,0xbc2cd83b,0xbc301dc2,0xbc0c9ce3,0xbbe51151,0xbba9d87a,0xbb507e1e,0xbba01330,0xbbced100, +0x3b1fdb8f,0x3c0296de,0x3c33a13b,0xb98f0613,0x3bfad425,0x3c491948,0x3c4a29a3,0x3c46b439,0x3c2e9fcc,0x3c40466f,0x3c4383e1,0x3c38c14d,0x3bdda56b,0xba633f84,0x3c2d8ccf,0x3bc4fdf2,0x39e51646,0xbbfb1602,0xbbcfe88c,0xbbed2041,0xbbfa02b4,0xbc06c4fd,0xbc0eb559,0xbc182baa,0xbc13ca50, +0xbc124a10,0xbc131e28,0xbc143d44,0xbc163076,0xbc19da7d,0xbc088288,0xbbf69216,0xbbdb3388,0xbbc69808,0xbc00c6bb,0x3ba54fdf,0x3b96e6ce,0x3c02e6f9,0xbbbb5765,0xbc22907e,0xbb6ac27a,0xbb35adaf,0xbc181fbe,0xbbe10e30,0xbbef1485,0xbbe4c427,0xbb92c824,0xbbc85b32,0xbbc6c389,0xbbac8e1e, +0xbc1a6dd0,0xbb7c05c4,0xbb94177d,0xbc0e932f,0xbbaf2f4e,0x3c07bfb2,0x3ba29e73,0x3ba680c2,0x3ba2a1ab,0x3b9f4c83,0x3b91900c,0x3b6231d7,0x3b69a2a2,0x3b6f15cc,0x3b739a17,0x3b8dd7cc,0x3b91a6f6,0x3b890037,0x3b85b483,0x3b85fb53,0x3b84ee2d,0x3b99178e,0x3bd08127,0x3b91e1e5,0xbbdc7ccf, +0x3b9c7017,0x3a8de0fa,0xba9ffb2f,0x39fe0649,0x3a6c92cf,0x3b7a9121,0x3b0f1c88,0xbac12581,0x3a984120,0x3b128f28,0xb93d0cb8,0xba6ec3cf,0x3a0f1e1a,0xba123d87,0x3b4b5e20,0xbb7a6d88,0x3bc099fd,0x3bf6b50c,0x3ba83a24,0x3bb2733e,0x3bab6a14,0x3b926e6a,0x3af9db75,0x3ae3eb0e,0x3ad73a5e, +0x3ad56a3c,0x3b7561a0,0x3b7af1b8,0x3b2562d3,0x3ae8d4ae,0x3ad8b4c8,0x3b221cc4,0x3b672c0a,0x3c0ef515,0x3b9ab8a8,0xbb102f9d,0x3b0205f5,0x3ba06c8a,0xb9be5fe3,0xba46d14c,0x3b2b00db,0x39e786d2,0x3bb1ab8b,0x3a201b37,0x3bd3ba1e,0x3916b8e7,0x3aae7864,0xbaa128fc,0x3ad089d5,0x3b256788, +0x3b80f455,0x3aabff06,0x3be9a5e4,0x3c22b9f4,0x3bc608a3,0x3bbb863f,0x3ba7c479,0x3b386bb1,0xbb29efad,0xbb00be57,0xbac6fefb,0xba08b5a6,0x3b1db898,0x3b409c55,0x3abce07f,0xba367884,0x3a1fd519,0x3b5b4e81,0x3b9bf083,0x3c3385fc,0x3bc33683,0x3b3c685e,0x3c2b5332,0x3c7930c2,0x3b3520dc, +0xba10c965,0x3b9fec39,0x3b9cfe86,0x3bb98195,0x3c3496ad,0x3b866491,0x3b07e58e,0x3b83a226,0x3bb59d85,0x3be5c44c,0x3b561ed9,0x3c382e31,0x3bd744bb,0x3c4ca334,0x3c50f7aa,0x3bc7aa06,0x3bb50300,0x3b8c7d65,0x3a8634fd,0xbbe43df6,0xbc02b6b8,0xbbd0720a,0xbb8dce09,0x3a618224,0x3950271b, +0xbb417682,0xbbd618df,0xbbdbbe7f,0xba833f70,0x3aa9ba4d,0x3c4f3444,0xbb8fb085,0xbc8cc90a,0xbc84b5ed,0xbc80b4f8,0xbaa6c4c2,0x3c1511ce,0x3c35690e,0x3bf8ab68,0x3acadf9e,0xbb0b20da,0x3ad8d246,0x3b613ddb,0x3b420609,0x3bdddcc3,0x3bffaf45,0x3ba70dd8,0x3bdcfb8e,0x3883cce0,0x3b27bd1e, +0x3c05100f,0x3be51bc3,0x3c590065,0x3bb1c2bf,0x3bd9f02d,0x3c252143,0x3ca56347,0x3c9be6d6,0x3b134b53,0x3c2a9891,0x3c1462bd,0x3aa9dfc4,0x3b414cc0,0x3c42a862,0x3cef12e0,0x3c836226,0x3b01589e,0x3c3a7f25,0x38827f81,0x3a4f5a69,0x3b5a6d3d,0xbb36125f,0xbb58f180,0xbb39ba59,0x3aadb9a7, +0x3b57fe9e,0x3b74890a,0x3ad462c8,0x3aae6df8,0x3b765093,0x3b4c5edd,0x3b91c334,0x3b8ba713,0x3bbd9164,0x3b42e933,0x3b5bb66e,0x3bbf97fb,0x3ac5e2ee,0xb9f4efb8,0x3a858e86,0x3aa1c3de,0xb9903e06,0x3b613d85,0x3b9fa420,0x3b105ad1,0x3b46fa38,0x3a87d0da,0xbacc4f72,0xbc3b039d,0xbc83ab84, +0xbc6680ec,0xbc3a5556,0xbbb8edf8,0xbb4c7013,0xbb928996,0xbb1a9d09,0xbbc8e201,0xbbd5d841,0xbc15bcf0,0x39fa3b52,0xbb3a4ef5,0xbaf2c584,0xb90ea294,0x3b02c1df,0x3b522687,0x3a9cfb6e,0x3b0615fa,0x3bb27f7c,0x3aff1e77,0x3b1080f5,0xba3f13e5,0x3b5bd63d,0x3c3f0d16,0x3c0b90ce,0x3b9187e4, +0x3bd5c4fe,0x3bb1c334,0x3b0a3307,0x3b252ebe,0x3b9e94eb,0x3c181746,0x3c7e7f50,0x3c7f481f,0x3bebec2d,0xbb21d105,0xbbe905d8,0xbc343fdb,0xbbd23d59,0xbb9751d1,0xbbb455d3,0xbba57138,0xbbe623b2,0xbbffdce8,0xbbd36369,0xbb21655b,0x3b90d481,0x3a771e99,0x3b337c30,0x3b20b8cb,0x3a5a41af, +0x3a8b559a,0x3b3b8488,0x3b74bb4b,0x3b88e40a,0x3ba054f9,0x3bdf9fb6,0x3b291190,0x3b5fa074,0x3c089b62,0x3bd9cda9,0x3b9a070c,0x3b95687b,0x3b580197,0xbb059382,0xbb6af1c5,0xbbbb7279,0xbc1d540a,0xbc54fc13,0xbc4e4a6a,0xbbf25954,0xbc2455ea,0xbc22a5c3,0xbc449712,0xbc1713fc,0xbcbcbe9b, +0xbd19611d,0xbd0dc358,0xbcbd10ef,0xbc80bc3b,0xbc94e505,0xbc809a36,0xbc272023,0xbc35d9db,0xbbfda5ba,0xbbac218e,0xb93fce76,0x3b08edde,0x3b2ca55a,0x3b02e3e5,0x3b09c450,0x3b978aa2,0x3ac20562,0xbad2fce1,0x3b3937c8,0x3bb11a30,0x3b75aba9,0x3b449ccc,0xbac6a489,0xbb855c86,0xbbe58d22, +0xbbbed56d,0xbbd87c28,0xbc2f82ba,0xbb0ed9f7,0xbb859cce,0xbc3f11e5,0xbc944640,0xbcb2b295,0xbcae47ed,0xbcc2ac33,0xbc9283f8,0xbc7bcf37,0xbbf1e41d,0xbb4aab88,0x394cf068,0x3ba4bf70,0x3c0a6718,0x3c0598e8,0x3beef40f,0x3bd166b3,0x3bbc548d,0x3bbf536b,0x3ba5fdb0,0x3b9b9a6e,0x3b88f6a6, +0x3b2c2db1,0x3b1f2f1a,0xb9be3e21,0xba2314cf,0xb9030c2f,0x3b5c0127,0x3b705306,0x3b4bae5b,0xbb2eb778,0xbb9fb768,0xbbde5f5e,0xbba48f5a,0xbb85d3fc,0xbb9dd340,0xbb6b0c7b,0xb9b91983,0x3bb09875,0x3a8fae26,0xbba46f36,0xbc372840,0xbc95b79d,0x3aff8631,0x3bb3590c,0x3ba28ab1,0x3c06c54f, +0x3c37d794,0x3c3aaa3d,0x3c33ffd8,0x3c3f3f77,0x3c29084d,0x3c361f46,0x3c11e105,0x3c254a60,0x3c001dc1,0x3beaae56,0x3b8ceac1,0x3b1c49c7,0xb99039bb,0xbb0f540c,0xbbcd2c56,0xbb86e1f1,0xbb66692b,0xbbf795b1,0xbc12c54b,0xbc27cc34,0xbc345913,0xbc4d0711,0xbc4c5d8d,0xbc57cdec,0xbc5c61c9, +0xbc8018d1,0xbc985c06,0xbcb28258,0xbc996e14,0xbc74599b,0xbc30c589,0xbb913c96,0xbaa9841a,0xba3f1768,0xbaa9c683,0x3a2982d5,0xb9d08d46,0x3955783d,0x3ae42a97,0x3b1644bc,0x3b0f461a,0x3a0c2817,0xbb0f4093,0xbb01fa29,0xbac9d057,0xbb4a40d1,0xbb636f53,0xbb195299,0xbb3b7127,0xbad3c8b1, +0xbb6242f9,0xbab64b3f,0xbb2d734e,0xbb7389c5,0xbb980929,0xbbc4a3fe,0xbbf10564,0xbc10f0f9,0xbc01b5a1,0xbbf5bcd8,0xbbeba70f,0xbbe50ee8,0xbbccb6b2,0xbbd026e8,0xbb8fe65f,0xbb71e700,0xbb4b8997,0xbb2bf5c3,0xbb49eb3a,0xbafebd03,0xbbfb74d6,0xbc120fdd,0xbb9bfd82,0xbbc51c0c,0xbc08cc9c, +0xbbb4abad,0xbbcc5c29,0xbbd3c0c8,0xbbbd1a7f,0xbbdb7a81,0xbbec8b32,0xbbeaf532,0xbc251121,0xbbef7ef9,0xbbe44ad9,0xbc250778,0xbc0222b7,0xbb3624cb,0xbb8b63f4,0xbb93c888,0xbba31d3f,0xbbb0b907,0xbbbac86f,0xbbcef7b0,0xbbc433dc,0xbbc231d0,0xbbbe601d,0xbbba8151,0xbbb9ae8c,0xbbbddfb2, +0xbbaf6094,0xbb9d52ad,0xbb826f93,0xbb683c75,0xbbad020a,0x3bd2ea80,0x3bc201e6,0x3b89800e,0x3c666f8a,0x3c6179e8,0x3b88720e,0x3c480f83,0x3c558179,0x3bca3197,0x3bcf970b,0x3bc7b3e3,0x3b8e305a,0x3ba673f5,0x3b9a3699,0x3b538704,0x3c553d54,0x3c51a56f,0x3b307e3a,0x3c57511e,0x3c68d2ec, +0x3bab3e30,0x3bcca8d8,0x3bd0731a,0x3bc8ce04,0x3bca25ed,0x3bc43821,0x3bb843d2,0x3bb356b8,0x3bb1d1bb,0x3baad07c,0x3bcd31ad,0x3bdaa940,0x3bd2c2b0,0x3bf2ce90,0x3bf0955e,0x3bc4376d,0x3bd103d5,0x3bb95955,0x3c0c676c,0x3c4bc79d,0x3c1a9a2d,0x3c48f823,0x3bfc80af,0x3bd0aa70,0x3be434a0, +0x3bdf26e5,0x3c1d9ac4,0x3c3a9c55,0x3c2bb831,0x3c032b06,0x3c045047,0x3bed9a80,0x3be3b825,0x3c3166d5,0x3c0fdd35,0x3c38e044,0x3c30a51e,0x3bf41384,0x3c129d0f,0x3bfdf7f3,0x3bfa44d5,0x3bd6ed36,0x3ba90ffa,0x3b942324,0x3b99cc54,0x3ba1bdec,0x3c01ec55,0x3c197e67,0x3c0ffeda,0x3c37aff1, +0x3c27fa37,0x3bd162ce,0x3bf108fd,0x3bb46e85,0x3bf704eb,0x3c635cc9,0x3c267355,0x3c45f839,0x3bbeb466,0x3b9bbf1b,0x3bc3c2a8,0x3bf729e1,0x3ba5a67a,0x3c1a8e98,0x3ba0ba74,0x3be82d91,0x3b880668,0x3be1c8c9,0x3bdbcc4a,0x3c014972,0x3c1e3211,0x3c5e6707,0x3c4fa3a6,0x3c089d35,0x3c2485de, +0x3c1061a3,0x3c167e65,0x3bf213c0,0x3bb43f49,0x3b8a71d9,0x3b9613a5,0x3b91fe5a,0x3c1a69c4,0x3c48c7af,0x3c2c0461,0x3c828db9,0x3c6c7e07,0x3bdc5911,0x3c205050,0x3b8bb062,0x3c1053e6,0x3c7c0c61,0x3c6cf1ed,0x3c7c2cde,0x3baf8f8c,0xba2b18fd,0x3b261b3a,0x3b643282,0x3bc30d62,0x3be4fa56, +0x3b840b8a,0x3b0edbfe,0x3a4b2081,0x3b98e59d,0x3b980dbb,0x3c144642,0x3c1c2615,0x3c81aeff,0x3c843e4b,0x3c3ff5cb,0x3c6931b7,0x3c4c005c,0x3c45344e,0x3c12e011,0x3b73f9ce,0x3a64dce6,0x3ade6631,0x3b49534f,0x3c521c25,0x3c883673,0x3c74aa8f,0x3cb31336,0x3c87691a,0x3b7a91f3,0x3bfa3dcc, +0x3c3cdde8,0x3c44ec77,0x3c1dbc5e,0xba5b78d4,0xbc090c66,0x3b79e841,0x3c3299bc,0x3c5f642e,0x3c2cb1e0,0x3b7e63d9,0xbafaa7a5,0x3ab63bf7,0x3b470cd2,0x3b9f28ee,0x3c077c21,0x3bec6491,0x3c05d4cf,0x3bd6435c,0x3c324bc0,0x3c3c1323,0x3b8217d7,0x3b46d971,0xb9dec206,0x3b09dbfd,0x3abd5bdc, +0xbb02ab0d,0x3c14bc02,0x3c0be5ab,0xbba00083,0x3b6b8a09,0x3c045864,0x3c51bbe5,0x3c6504ec,0x3c9ee353,0x3cf45104,0x3caca1aa,0xbc8147aa,0x3aae0fb5,0x3c85d4a1,0x3c344ab0,0x3bfa3778,0x3b4cab88,0xbb24471e,0xbb3ff85d,0x3a447a31,0x3b838ac1,0x3b973246,0x3aff2cf8,0x3ad26e93,0x3b36dd02, +0x3b4b04be,0x3bd23fcb,0x3c189a09,0x3bf9bb5f,0x3c0de01c,0x3bf95cf1,0x3c31fc32,0x3c728ff0,0x3c432108,0x3c0a65a9,0x3bcfcf0d,0x3be20a71,0x3c1ebbba,0x3c070500,0xba9b88af,0x3ba1c10e,0x3bcfbaf2,0x3b491556,0x3b952ae5,0xba696843,0xbc44caee,0xbc43c69f,0xbadae9cf,0xba217776,0xba82bc69, +0xbb5fdf46,0x3a292a40,0xbb9a5dea,0xbbb82cd7,0x3b05a5ac,0xba26c2dd,0xbafe0c1f,0x3a11fa32,0x3aebbb1b,0x3b26d599,0x3abc2e03,0x3b6481eb,0x3bc2c465,0x3ba3be94,0x3b5ce92a,0x3be93ad1,0x3bb0c45b,0x3bc3917d,0x3c07f7a3,0x3b5c9682,0x3c0be539,0x3c275782,0x3c1a3112,0x3c11d7b2,0x3bea5504, +0x3b9ecb72,0x3c071c2c,0x3c8d71e0,0x3cf7ebbc,0x3cee63b0,0x3cd05f8d,0x3c99120b,0x3b962b13,0x3c582bf2,0xbb4c5bf6,0xba424a4a,0xba59ed4f,0xbb9659d5,0xbb872ec6,0xbb2c563c,0x3b8c4958,0x3ab08da7,0x3b367d5d,0x3b5b220c,0x3ab3033c,0x3ab9c3df,0x3b892c02,0x3b92dd89,0x3bd70edb,0x3bea0386, +0x3bec551a,0x3c0fb467,0x3b932614,0x3be8bf52,0x3c2ee1fc,0x3c290a56,0x3c4dbfa3,0x3c376df4,0x3ba48b12,0x3c153ff9,0x3c14fde5,0x3ba78247,0x3b2c84d9,0x3a0d9438,0xbba44186,0x3c7a5d9d,0x3cd1e933,0x3cef6113,0x3cc6ab3e,0x3c594a4a,0x3a0c3274,0xbc6d6e28,0xbc673bab,0xbc3df247,0xbc50d471, +0xbc3ec6ee,0xbbc7f50d,0xbbca3e13,0xbbbfcf0d,0xbb6075df,0xba6fbfbe,0x3ace98d8,0x3b8da50e,0x3b43dded,0x3b45a7d9,0x3b84b062,0x3bb617f0,0x3c048cfb,0x3b97d093,0x3bc53986,0x3bca63dd,0x3b54a8d0,0x3afe7eec,0x3b4d31b7,0x3be4f2b6,0x3c069433,0x3c28b6b9,0x3c4a9f32,0x3c500b63,0x3c27fa51, +0x3b3b5f23,0x3b94000d,0x3bb506f7,0x3b9815dd,0x3c4e796f,0xbc5a7b91,0xbbd118f7,0xbbb2f1b9,0xb9949ba2,0x3ad2ea04,0x3bf2fdd7,0x3bd8fc3e,0x3ba7c631,0x3b4cb0f7,0x3b242375,0x3b02b5ea,0x3bbe86c4,0x3bc5c89e,0x3baca00d,0x3b976fbd,0x3ba5d33f,0x3bc685f4,0x3acca862,0xba07b87c,0x3901850f, +0x3b423e67,0x3b9bf04c,0x3b9e38d2,0x3b8f66cf,0x3b5a4bbf,0x3a68ab4b,0xba895907,0xbb8cce54,0xbbeca732,0xbc0788d8,0xbb442ac2,0x3c10f768,0x3b67dd83,0x37a3a23e,0xbb9d81ac,0xbc2616d6,0xbb03f3c3,0x3b7edcfe,0x3c290dc2,0x3c2ac0cb,0x3c62f242,0x3c4ac382,0x3c322ebc,0x3c2cee34,0x3c3a5f70, +0x3c260739,0x3c4e33ef,0x3c05d730,0x3c0391fd,0x3bbb1d32,0x3ba17230,0x3b3b9310,0x3b018043,0x3ac3af67,0x3b0f4ace,0x3a0ffd0f,0xbb65884d,0xbbb1564c,0xbc06646e,0xbc166b9f,0xbc278737,0xbc3d00a1,0xbc19b9c5,0xbbf1da0f,0xbba373cb,0xbbd67fc8,0xbc1cf51c,0xbc524c96,0xbc4a6f39,0xbc314876, +0xbc2668a6,0xbb945c82,0xba6651a1,0x3aa42285,0x3b08ab6f,0x3a5689a8,0x3b41ea83,0x3b22c741,0x3b3ea85c,0x3b77029b,0x3b333033,0x3b6bd522,0x3b9d725e,0x3b7d92b8,0x3b29d647,0x3b46ee5d,0x3b0c366c,0x39040bc5,0x39510e11,0xbb1b0f14,0xbad18469,0xbbdf49e8,0xbc0a931b,0xbc09d149,0xbc19584b, +0xbc26c4b3,0xbc377406,0xbc4d3b74,0xbc4825fd,0xbc4438d5,0xbc36de64,0xbc2328d4,0xbbfe3fab,0xbbc6fca3,0xbb8c1296,0xbb483fca,0xbb11782f,0xba978023,0xbb6ab12c,0xbb6f29a7,0x3acd757c,0x3b079f65,0xbb2d4867,0x3ab8c6a2,0x3b2ad9ee,0xb9bf8d44,0xba212f41,0xba6fac6f,0xbb0d628d,0xbadf8ef9, +0xbaf2104b,0xbb1a4a01,0x3b2219a5,0x3a2397e1,0xbb3fd440,0x3a55729d,0xb9d9cde3,0xbbe7ff44,0xbbca9bc9,0xbbdfdbab,0xbbf02469,0xbbfe71f5,0xbc058f18,0xbc0f340f,0xbc031e31,0xbbf696dd,0xbbe9faa5,0xbbdbf34d,0xbbd363f6,0xbbc4dce3,0xbbbb6a30,0xbbab25fb,0xbb9635b5,0xbb84f4ce,0xbbbe000d, +0xbb5992e8,0xbb0cfba8,0xbb6101bb,0xbbd480af,0xbacc79fb,0x3c410984,0xbbfe9495,0xbb3ac209,0x3c00af3e,0x3c0a828e,0x3c0f7d57,0x3c1ebdfd,0x3c21e4c0,0x3c252d2a,0x3c2b86a0,0xbb2cba83,0xbbef9695,0x3c4a820a,0xba9ad685,0xbbc19c1f,0xbb484340,0xbb286625,0xbb6854fe,0xbb757b26,0xbb786a26, +0xbb84d976,0xbb95bd00,0xbb93411e,0xbb940258,0xbb970da2,0xbb95aa6c,0xbb97de56,0xbb9cf8a1,0xbb9d4067,0xbb8ca040,0xbb3aca4d,0xbb40d329,0xba9ae40c,0xbba528f1,0x3b592571,0xbb22807a,0xb99edc43,0xba72fbef,0xbb463d7b,0xbafe7788,0xbafb7648,0xbb2c67c0,0xbb38df55,0xbb3d6c9e,0xbad40e56, +0xbb6c9595,0xba415c46,0xba4db56b,0xbb1e59f9,0xba170993,0x3b98b9d0,0xbb52dad0,0xbb35a60e,0xbba67a6c,0xbbc3834e,0xbbc33e40,0xbbcbd869,0xbbf14cfe,0xbbec4776,0xbbf1da6a,0xbbfd69f4,0xbbedc671,0xbbfbd65a,0xbc04f9f5,0xbc0e9f22,0xbbee83a4,0xbb4ae00f,0xbb43f5cd,0x3a144419,0xbb5e3ffc, +0xbb366a8e,0xbad68db1,0x3b662544,0xba67c7ec,0xba5cfa08,0x38a23cdd,0x3ae93c77,0x3b6186ff,0x3a6d3c1f,0x3b29fb30,0x3b21d629,0xbaec52ca,0xb9a76420,0xba623a2a,0x3af52900,0x3ae418f5,0x3a9bfe18,0x3a0ae665,0xbb414fdc,0xbbaec0f3,0xbc041fea,0xbc03bfbf,0xbc1bd808,0xbc471e84,0xbc38d3c0, +0xbc383c03,0xbc3bf970,0xbc3d7f76,0xbc47a499,0xbc4e800a,0xbc5bda6f,0xbc1b4b48,0xbac498fe,0xba9d4db0,0x3b34928f,0xba638e34,0x3b0b081d,0x3b8baa3b,0x3c104a01,0x3a23252f,0xbaace3c0,0x3b24667e,0x3b75974a,0x3bbdeb7f,0x3c077a43,0x3bb09870,0x3b07c646,0x3a724b43,0x3b44cb0d,0x3b39297a, +0x3b9c549d,0x3bc9b56a,0x3bfb3a7b,0x3bb6e7d4,0xbb035b52,0xbc045860,0xbc5a6fb4,0xbc5f2f9d,0xbc764657,0xbc97ea9e,0xbc9163c2,0xbc871609,0xbc7f6ee4,0xbc731117,0xbc8b0de4,0xbc92327b,0xbca0bf22,0xbc6d7d0c,0xbafbcfdd,0xba09383e,0xbb436cc6,0xbbe4d6bc,0xbc1c6aa7,0xbc439d54,0xbc3af5be, +0xba889ccb,0x3bb18330,0x3c1a1dad,0x3c1f0782,0x3b66607a,0xbb05aa9a,0x3a1658ee,0x3b1d8777,0x3b953f72,0x3bd959c2,0x3bad9281,0x3b8661cb,0x38c85497,0xbab85d2f,0xbb9fef57,0xbbf77ced,0xbb2b8ac6,0x3b0267b7,0x3a869d22,0x3b0cb32b,0x3b961d47,0x3c272a60,0x3bbda539,0xbc3f901b,0xbc34b002, +0xbc649ecc,0xbc80a7e4,0xbc59cb3e,0xbbb1e12f,0x3c2d6eaf,0x3af774cc,0xbc273161,0xbc47ce57,0x3b398eb3,0x3bd976a0,0xbb5c66a7,0xb933dd97,0xba8bd68c,0xbb870903,0x391205bd,0x3b4349da,0x3ba876f2,0x3b17247b,0x3aa7754d,0x3b49a782,0x3b10b3be,0x3b76d682,0x3b6f61ec,0x3ba77993,0x3bc42ae8, +0xb9e85293,0xbb351d19,0xbbfbfff2,0xbc8b955c,0xbc371f22,0xbbc1925c,0xbaa0389a,0x3b91f6e5,0x3b8d6076,0xbba1f67c,0x3a39255e,0xbb523fd0,0xbc806657,0xbc8215f4,0xbc819a5a,0xbc51a1ac,0xbc49bf49,0xbbefdb11,0xbba374a2,0xbafb380e,0xbace83ed,0x3a8acee7,0xbb5fff40,0xbbeb6c8d,0x3a8c3d4e, +0xbaada8fa,0xbae6f866,0x391e3ee5,0x3a6c6d3c,0x3afacba6,0x3aea79c2,0x3a7d7897,0x3b192856,0x3a2b6d90,0xbad01e00,0xbb4e4353,0xbb103ad5,0x3bae8288,0x3bc72a5c,0x3a9eba32,0xbb6d4a67,0xbc42f93f,0xbca55745,0xbc935cdb,0xbc3b50e8,0xbba75fbf,0xbaca64ca,0xbbe4d368,0xbca8bc40,0xbcf45cac, +0xbd03435c,0xbcf462af,0xbc58b5de,0xbc8203a2,0xbbc4ce18,0xbaa3bc34,0xbb3f6f1e,0xbb51ffe2,0xbbb5e4ff,0xbb2194a2,0x3b2af6a2,0x3a3f669e,0x3b1c5269,0x3b144b57,0x3a27bf56,0x3a8d4030,0x3b20f94d,0x3b465d80,0x3b948df6,0x3b823928,0x3b976bb8,0x3b9f1fd4,0x3ad0584c,0x39827bee,0xbb1c15cc, +0xbb8d460a,0xbba19452,0xbb8eace3,0xbbaef0b3,0xbbb83339,0xbc11a6c5,0xbc7e7ca1,0xbc71ba5d,0xbc71adb1,0xbc6f7619,0xbcb39dc0,0xbce8b4ea,0xbd1e4ba5,0xbcc6aaff,0xbd040e2a,0xbcb7c083,0xbc61c8b3,0xbc9b2e91,0xbc9a88d6,0xbc6f55b8,0xbc411404,0xbc210d88,0xbc0d423f,0xbbfb1668,0xbbc967b7, +0xbb3a2122,0xb7d73bc5,0x3b3f3d22,0x3b0edf66,0x3b251dfd,0x3b676237,0x3ae5ade8,0x3ab5a851,0xbab53277,0x3b5b201c,0x3ba284d9,0x3b3491a8,0xb9da31a4,0xbb8f5e3b,0xbc1615ac,0xbc2fcde3,0xbc5caf0d,0xbc9982f4,0xbc538a45,0xbc82f212,0xbcd6603d,0xbd096a3f,0xbd14ed0f,0xbd14546b,0xbd09cc03, +0xbcf2270c,0xbce4098d,0xbc6dccff,0xbc542a76,0xbbc6d9bf,0xba846813,0x3a463c48,0xbae0939a,0xbb1942e1,0xbac02f2e,0xb912857b,0x3b73ade9,0x3b979765,0x3b87019c,0x3b0bc04f,0x3a163d71,0x3928afa8,0xb908b40f,0x39983239,0x3acf1f6b,0x3b3d761c,0x3ab1c17b,0xba7b5c3f,0xbb93f468,0xbbdb56a3, +0xbbf9ee9f,0xbbf5e6ec,0xbbc1d662,0xbb3013b5,0xbbff5811,0xbc11fa56,0xbbfa68d6,0xbb8dde35,0xbbeaa8bb,0xbc7228bd,0xbcc0d4f5,0xbc2487f1,0xbbd7c9ce,0xbb619c26,0xbb198e3b,0x3b2634c0,0x3b2a335c,0x3b5af95b,0x3b93f3e1,0x3bd48fad,0x3bde536f,0x3c0477db,0x3bb80b77,0x3bc3b254,0x3b74a345, +0x3b47ee19,0x3a8bc031,0x390d9ce3,0xbaaccf53,0xbb5f83f4,0xbb9b2c45,0xbbad829b,0xbbc7c6c1,0xbbcfeed9,0xbbf0f3b5,0xbc079c01,0xbc1b16b4,0xbc30bbdf,0xbc508ced,0xbc629229,0xbc81d2e0,0xbc8f2122,0xbca6f089,0xbca2814c,0xbc9ab88e,0xbc8d14a9,0xbc55c9b7,0xbbc89d10,0xbbaf73f2,0x3aa6e4ff, +0xbb494b86,0xbadded39,0xba76b03a,0xbacababe,0xba6029bb,0xbb17d218,0xbb7d5fa2,0xbb81bf39,0xbbaff50b,0xbb9f0f77,0xbbb29cb6,0xbb9a93e1,0xbb9e6125,0xbbf58dd2,0xbbde8448,0xbbcd0889,0xbbf8248b,0xbbec9488,0xbc0e2020,0xbc1b89aa,0xbc2d0b89,0xbc3bc208,0xbc4ac549,0xbc4b988a,0xbc5298f8, +0xbc62eaed,0xbc702223,0xbc7e738f,0xbc886f57,0xbc615b68,0xbc3ed375,0xbc21962e,0xbc07e355,0xbc0e10bc,0xbc0b42d0,0xbc249833,0xbbe78e72,0x39caf96e,0xbc2907bd,0xbbe5afce,0xb9e3ac27,0xba01eff0,0xb9819e0b,0xb79a6aa9,0x399174c5,0x39c259d8,0x3a3d4952,0xbc0b81e6,0xbc38143b,0xba48dcdb, +0xbc117179,0xbc361095,0xbc0daa93,0xbc168f38,0xbc1ec002,0xbc22abe7,0xbc28592c,0xbc2d5040,0xbc33fa52,0xbc397874,0xbc3e9c45,0xbc411139,0xbc457276,0xbc48be28,0xbc550d5e,0xbc449198,0xbc39fe0c,0xbc2a89fc,0xbc20549f,0xbc44dd8d,0x3c3a2dca,0x3c23d1fe,0x3c4c09de,0x3c180e66,0x3ac9fbce, +0xbc232a53,0x3c3f4471,0x3b3e4cdc,0xbc0431a7,0xbc0687e5,0xbc06b833,0xbc084466,0xbc12f33f,0xbc18d569,0xbc291f12,0x3b24bd8c,0x3c304077,0xbc360c2b,0x3b069ea2,0x3c159807,0x3c4d51e8,0x3c28f5ee,0x3c39b9c3,0x3c3906d9,0x3c3b75fe,0x3c39eb6e,0x3c34284a,0x3c320dfd,0x3c3289fb,0x3c3564b3, +0x3c3c3444,0x3c410100,0x3c42f395,0x3c4751fe,0x3c3fbb46,0x3c1e2621,0x3c324ffe,0x3c2d4ebd,0x3c58dc07,0xb9b5d379,0x3c3b3712,0x3bec8afd,0x3b8ffcd6,0x3be772a6,0x3bc29176,0x3c1e426e,0x3c32f925,0x3c0abc17,0x3c3bdaf9,0x3c1cc10e,0x3c01e7be,0x3b90b3d3,0x3bb485ec,0x3c181fca,0x3c0d53e2, +0x398a83fa,0x3c5b030d,0x3c528d62,0x3c62f39d,0x3c688f5c,0x3c6fab6a,0x3c6825d1,0x3c50d75e,0x3c47fabc,0x3c48ad41,0x3c582b3a,0x3c6cec8a,0x3c7637c1,0x3c72f132,0x3c77481e,0x3c5b91e7,0x3c0afdc3,0x3c303dac,0x3c48c7e5,0x3c3a352c,0x3c0b1410,0x3c04c63d,0x3bbdf333,0x3b7ba733,0x3b594fc4, +0x3b8ff4b8,0x3b9ee61a,0x3be15535,0x3bba4ac4,0x3c156a14,0x3ba76a37,0x3b9d6c8e,0x3b5cb8e9,0x3bbf52ba,0x3bf18cf8,0x3bf5248f,0x3c02d34d,0x3c3fc571,0x3c73c526,0x3c7b603d,0x3c860613,0x3c8d4587,0x3c860e4b,0x3c67e01e,0x3c5de9a5,0x3c65001c,0x3c80d4c7,0x3c8dbfde,0x3c9bf676,0x3c9b74c8, +0x3ca1eb64,0x3c87a1e9,0x3bf050bb,0x3c4b5b6a,0x3c2a29a8,0x3c264756,0x3c1c1f9d,0x3c5091f5,0x3c2f87ee,0x3b8fbceb,0x3a3997d4,0x3aa9bb0b,0x3b8b728f,0x3bcdb0d6,0x3be65176,0x3ba6a693,0x3b81ce51,0x3a804e15,0x3b9ad1ab,0x3bca9120,0x3bde528c,0x3c27dfdf,0x3c183a88,0x3c6855bc,0x3c932cdf, +0x3c9d8780,0x3cae3f28,0x3cb93329,0x3cb05704,0x3c83da42,0x3c69da2a,0x3c71ea84,0x3c99d238,0x3cbc0db4,0x3cbddf62,0x3cb7e0aa,0x3cafd4e6,0x3c70a203,0x3abd6a89,0x3bfa5356,0x3cdee1e2,0x3c5ed93b,0x3ab93945,0xbb9a16b3,0xbc332456,0xba5a663d,0x3bed04c0,0x3c2c451d,0x3c489f30,0x3bdb1407, +0xba8b0f52,0x3a84d6ff,0x3b32bf50,0x3bc24dfa,0x3bfd7182,0x3bfa2a03,0x3bc8ba23,0x3bf5ab81,0x3b8e39f8,0x3bfbe868,0x3c72878b,0x3c489055,0x3c50b96c,0x3c169df4,0x3c080a99,0x3bd68fe8,0x3c9f9a3f,0x3ca52cba,0x3c1c4c52,0x3c4952f3,0x3c8ccb4e,0x3cdc4b8d,0x3cd0cae0,0x3ce189ac,0x3d07e6c1, +0x3cec9c0e,0xbbaa4a50,0xbc08215e,0x3c859646,0x3c9a49eb,0x3bc2a1fc,0x3bc06485,0x3ae70a17,0xbb461754,0x3a6b1c93,0x3b86c053,0x3bd7e7c9,0x3b416309,0x3aeff0b8,0x3b76838d,0x3bbac0ec,0x3c0d4288,0x3bf71723,0x3bd273f0,0x3b6e1f07,0x3bcb2f30,0x3c8d7fdc,0x3ca01f6f,0x3caca662,0x3c81465e, +0x3c4afbf2,0x3c26d41e,0x3bee7176,0x3ba65f3d,0xbab81f58,0x3c11782d,0x3bae5112,0xbc5671ec,0xbb4ab7c4,0xbb0b2879,0xbc1a47d6,0xbbad3f71,0x39960a96,0xba414c7b,0xbb904ad6,0xbb1feb4c,0x3b09ff42,0x3a330da7,0xbb70e475,0x3b5405af,0x3a8ed7ca,0xb982e2a9,0x3ac58268,0x3b0e5353,0x3b3b07a2, +0x3b1dcae6,0x3b13a8d0,0x3bac1a44,0x3ad8e33f,0x3b5ec73e,0x3b930277,0x3ba99364,0x3c1bec0b,0x3bfe4d38,0x3b9b31cc,0x3c633375,0x3ca150a1,0x3cba1bb5,0x3cd246ef,0x3cc876f5,0x3c83180e,0x3cbd608d,0x3d088827,0x3d2ee4b0,0x3d2418a4,0x3d063877,0x3cefd0a3,0x3bffce6c,0x3c850caf,0xbb32528b, +0x3a9b7f33,0x3bb49ac2,0xbb1a19d0,0x39ed5390,0xba57205d,0x3b4845da,0x3a8bb873,0x3b06a5ac,0x3b3198eb,0x3ac1123d,0x3ad52e3a,0x3b6b2d41,0x3b938d08,0x3bc62504,0x3bc350c6,0x3bce406c,0x3b9808d5,0x3b9a7522,0x3c32c90d,0x3c6f2eef,0x3c83ea4c,0x3c6e4ba5,0x3c3d9ce3,0x3be59935,0x3c0581d2, +0x3ba701c4,0xbb0bd5fe,0xba564789,0x3a3bc687,0x3b88e62b,0x3cc6f9d8,0x3d15f0e6,0x3d38cc01,0x3cdb2e0b,0x3cd4d52e,0x3bd3101e,0xbc933d51,0xbc79c1e5,0xbc7b9797,0xbc4ff6f3,0xbc120588,0xbbb991f1,0xbbb04c42,0xbb6b9ef9,0xbb63c491,0xbb07531f,0x39c1ab3e,0x3b9d0e00,0x3b3e1eec,0x3b432562, +0x3b77ee86,0x3bc576ef,0x3b9f325e,0x3b89adaf,0x3bbe942e,0x3bab9c03,0x3bbe4e04,0x3bb418c5,0x3be33898,0x3c261717,0x3c3e418e,0x3c490947,0x3c5c2841,0x3c521ca7,0x3c5fbe93,0x3c6c178a,0x3c800167,0x3c85e2e7,0x3c9a25cc,0x3cbc9961,0xbbf83365,0xbc3d95c5,0xbca9a8cf,0xbc326918,0xbbe3a343, +0x394ddc4d,0x3a867d0c,0xbb4753fe,0xbb1ec223,0xbb08982e,0xb96fdbdb,0x3b725e2d,0x3bb2f42a,0x3ba115af,0x3b777c3b,0x3b6498c9,0x3b73c10b,0x3ae5ebd2,0x3ae2e211,0x3acab93d,0x3be8fd9f,0x3c18d7ff,0x3bfdf236,0x3c084cdb,0x3bd2a353,0x3ba114c6,0x3b13c1a3,0xba0ee978,0xbb0cd2cf,0xbb7f45aa, +0x397c371a,0x3c354fb4,0x3c38902c,0x3c168a4c,0x3b2b0ed1,0xbb8ebe23,0xbae52538,0xbb258f29,0xba3bdcff,0x3ac0c3a8,0x3ae72673,0x3b1200f4,0x3b15867d,0x3b762d77,0x3b952adf,0x3bcccd82,0x3bfc37ad,0x3bd0e9d5,0x3b829d50,0x3b7739a9,0x3b1e0d00,0x3b041591,0x3a5235b0,0x3a0bc3c5,0x39b6e43c, +0x3a991176,0x3a484a4d,0xba4d0086,0xbac30b8e,0xbb253c83,0xbb67687e,0xbba1efc9,0xbb31a9bd,0xba514d35,0x3aa3ee1e,0x3b0fcdfe,0x3b10b6a3,0x3b069e55,0xba7a85ac,0xbb2c9235,0xbb76e9c6,0xbb403008,0xb92d387f,0x3aaddacb,0xbb93a9fb,0x3a8c9392,0x3a0e4396,0x39ff2db3,0x3b3d2cb0,0x3b4caa9f, +0x3b7918e9,0x3b76f2f3,0x3b2370fc,0x3b6c3482,0x3b53adb8,0x3b418160,0x37315b9a,0xba95d4e4,0xb9b46c02,0xbb1d0f16,0xbbd35c0f,0xbbaad687,0xbbee4896,0xbbfad85b,0xbc0b9b2c,0xbc1c100f,0xbc2891f0,0xbc3d2ae0,0xbc20e479,0xbc0c6e13,0xbbed809a,0xbbbf13c2,0xbb87df5a,0xbb0b985a,0xbaae365e, +0xba226c6d,0xb9dbd1cd,0xb91c4a78,0xbb041be7,0xba5e9020,0xbb038bd1,0xbbb4f47b,0xbc40711f,0x3905af0b,0xbb90b625,0xbc229698,0xbc2e60da,0xbc34c97a,0xbc3bea45,0xbc4644a9,0xbc5086db,0xbc560a19,0xbba246f0,0xba5598b8,0xbc5ac393,0xbbcba451,0xbb464bd0,0xbb4c4b54,0xbb80b10b,0xbb861cc9, +0xbb976f9c,0xbba0e60d,0xbbab43bd,0xbbbfe583,0xbba666aa,0xbb969223,0xbb83afca,0xbb61a0df,0xbb422f74,0xbb1c2e2f,0xbb255c2e,0xbb1c5835,0xbb0c8c95,0xbaf25ac3,0xbb5b7395,0xbbaa63d3,0xbb71ce67,0xbc072cd1,0x3a43515a,0x3c1d3f15,0x3c96b3e3,0xbb60990a,0x3bf28116,0x3c87bcc0,0x3c90af49, +0x3c91c472,0x3c88ceda,0x3c9691fb,0x3c97423f,0x3c917b2b,0x3bffb397,0xbaf8450a,0x3c9f29da,0x3c14675c,0x3aa3a137,0xbbfd2c94,0xbb915e93,0xbbb84b5b,0xbbbc011c,0xbbbaffe1,0xbbbbe6c1,0xbbbc3cf8,0xbbbde7af,0xbbc0ed20,0xbbc1d12c,0xbbcdbbd1,0xbbd08daa,0xbbd0a185,0xbbc7d04a,0xbbb6a392, +0xbb8e2ba5,0xbb96cfda,0xbb8ba85b,0xbbd903aa,0x3c52264b,0xbb55f1bc,0x3b44fcae,0x3b1d9d86,0xbaea3579,0xba2430c9,0xbb2e16eb,0xbabd221d,0x3ad6f7d2,0xb9aae7d9,0xb9b6cfb1,0xbab4ac82,0x3b1991b0,0x3a99fa25,0x3aa96c49,0x397586ee,0x3c44cef9,0xbb9dd417,0xbbcf2d66,0xbbdf19d0,0xbc03439b, +0xbc010ba4,0xbc02b20e,0xbc02f86b,0xbc00dea4,0xbc009222,0xbbfa52db,0xbc089a31,0xbc0f4803,0xbc0b5c91,0xbc06ca2e,0xbbe07864,0xbb807ddd,0xbb82c6a0,0xbb60a0c6,0xbba3bcfb,0x3b1cb231,0xb9ad21db,0x3b95ed97,0x3a825b8a,0x3a96d356,0x39ec981f,0x3b8e84c7,0x3b189b50,0x3b8b8f49,0x3aad88dd, +0x3bccf555,0xbab37d18,0x3b47798c,0x39acec17,0x3b6fbc71,0x3b319fcb,0x3b9a4041,0xba9b749c,0xbc07a4fb,0xbbfa4463,0xbc28a310,0xbc1f6457,0xbc25c7b2,0xbc23526b,0xbc21c145,0xbc27bc1e,0xbc25ff4b,0xbc4a5e6a,0xbc527232,0xbc4a8eb3,0xbc32f494,0xbc01a812,0xbb46c844,0xbafc393f,0xbb800a5c, +0xbb26fcf7,0x3baa91f6,0x3b1315eb,0x3ba54f5c,0x39c79484,0xbab50e5e,0x390e5d47,0x3b0fcb3b,0x3ba8fda0,0x3ba1270a,0x3bcf8eb4,0x3b356b67,0xbaedb05a,0x3aa76288,0x3a0158ef,0x3bf8927f,0x3b4852b8,0x3c17cf1e,0x3aaa8006,0xbc103c2c,0xbc22bbfc,0xbc72221c,0xbc69990f,0xbc6d6f71,0xbc71ec04, +0xbc622a17,0xbc53addb,0xbc37bd61,0xbc57ff16,0xbc77bea7,0xbc6d9983,0xbc569872,0xbc1310c4,0xbb269cc9,0xb9ca3545,0xbbf91927,0xbb1ccb30,0x39d9036b,0xbbde5000,0xbbd5ca3b,0x3a012454,0x3b71416c,0x3bf6e507,0x3c3ba8c6,0x3bd4f5ac,0xba4db82a,0xb940e6bf,0x3ad8391f,0x3bdd3c0e,0x3bd4c799, +0x3b79cdb0,0x3b9fe0ec,0xbb0f6a3f,0x3ad9cea6,0xbb6b1926,0xbc4ba2d4,0xbbcb5224,0xbbce5401,0xbb0385e2,0xbae6d4fe,0xbabb3f87,0xbaaf6b47,0xbc005199,0xbca9ed79,0xbcb112c9,0xbcacd64e,0xbc6c1747,0xbc4f02cc,0xbc0373ee,0x3ad12af8,0xba8a5b84,0xbc96611c,0xbcc788e7,0x3c359d03,0x3c6c70bf, +0xbb89dd6c,0x3b38b931,0x3a1dbe39,0xbb6b3488,0xb93dd4c3,0x3b45f9e9,0x3bd29868,0x3b46e36c,0x3ad91b77,0x3b21bd9a,0x3b3f616c,0x3badab57,0x3b8dbfa5,0x3b8ff0c1,0x3bf745c3,0x390a04cc,0xbb6d70cf,0xbbb075ae,0xbc77dddd,0xbc127fd9,0xbb69746f,0x3b2d2a60,0x3ba3a5a7,0x3b59a253,0xbbcc604b, +0x3b4da975,0xba8fd9c7,0xbc91a404,0xbc40761b,0xbc15c4fb,0xbc147e15,0xbc36dc87,0xbba297e3,0xbbc394df,0xbad1c42c,0xbb4803e1,0x3b96e63f,0x3abcfba1,0xba1fb8d9,0x3b0fb0e5,0x3a670f38,0xba965729,0x3a5d776f,0x39c6c09a,0x3ac62b61,0x3b11f944,0x3a0e7056,0x388dd905,0xb7f2a24b,0xbb64054a, +0xbac525bb,0xbb6f7976,0xbadb38ac,0x3b241a62,0xba2e4060,0xbc10924e,0xbc917ed6,0xbcb383fb,0xbcac1236,0xbc80dc85,0xbc3a383e,0xbc2de284,0xbc7728fc,0xbca8bacb,0xbcd47a54,0xbccf567b,0xbc936276,0xbbf95cac,0xbc320d3d,0x3aadb66c,0x3b3a3ba0,0x3a1d0610,0xb92322ac,0xbb37a924,0xbaebf94c, +0xba61ac60,0xb99a76fe,0x3a8cda45,0x3afe48d8,0x39bb1567,0x3a72da8a,0x3b036923,0x3b3194f6,0x3b998ae2,0x3b1d31a2,0x3afe60fc,0x3bb831d8,0x3a018f69,0xbb6d5508,0xbb9e0d1a,0xbbd332f7,0xbbc2bd8a,0xbb85f9f5,0xbad54c83,0xbaeed38c,0xbba52d14,0xbc41c7cd,0xbc09ad6b,0xbc1c1ad4,0xbc523294, +0xbc89e0df,0xbcad0cf4,0xbcdba5ed,0xbc852178,0xbcc35578,0xbc0642ed,0x3a087915,0xbc4cb8c5,0xbc92eb59,0xbc36a592,0xbc13507d,0xbbf73c9d,0xbb91f83a,0xbbad607f,0xbb8f48dc,0xbb71315f,0xba8f9fce,0x3b545a43,0x3b0a8f2a,0x3b14da76,0x3a9ec046,0x3b392043,0x3bacf458,0xbab58a6e,0x3ab5cd89, +0x3b982b01,0x3b9095df,0x3b755f77,0x391543b8,0xbbb0e375,0xbbc5c9d5,0xbc184cf2,0xbc7e5bf5,0xbc694ba8,0xbc80b924,0xbca49fbf,0xbccaae3a,0xbcd60bc9,0xbcd4180a,0xbcb6f56b,0xbccd3046,0xbcb63563,0xbc458cef,0xbc4d75d5,0xbbaa53b4,0xbb6281c2,0xbb91ebb0,0xbbd48347,0xbbf66cf7,0xbbc0d67b, +0xbb749b26,0x3a307ff1,0x3b0aa15e,0x3b30639a,0x3a56c771,0x39eadb79,0x39914b7b,0x3af9b5c0,0x3b0a450d,0x3b279dea,0x3acce036,0xb97fb97e,0xbb00a69b,0xbb497b16,0xbb8aab51,0xbb9c6604,0xbbc83c29,0xbbac7a75,0xbb02c8af,0xbbc39bde,0xbc4139f2,0xbca75dd0,0xbc5c114a,0xbc415578,0xbc81c9a0, +0xbc9e2230,0xbc73dc76,0xbc42d07e,0xbbc47ed4,0xbbe75f7e,0xbb1bcfb1,0xbb3260b0,0xbad687cb,0xba7700f9,0x3b42ec51,0x3b300e1b,0x3bd9afe2,0x3b110ab5,0x3b948fc1,0x3b14e65d,0x3b17f149,0x395d1aaa,0xb95c854b,0xbaaedce8,0xbacc2508,0xbbab76e7,0xbbbbd480,0xbb5ab02e,0xbb114415,0xbb3eb559, +0xbb83a18f,0xbba31b22,0xbbd651fb,0xbc07cc69,0xbc1f0e96,0xbc2ae1b1,0xbc1e06e7,0xbc2808f8,0xbc3c4073,0xbc5aea99,0xbc6e390b,0xbc5f674e,0xbbed3bd1,0xbbc7fc52,0x3b5661d0,0xbb7493a2,0xb9c468b6,0x392a4ba2,0xbac8b1bc,0xb9d64c5d,0xbb3ae08d,0xbb5b51ff,0xbabecbe6,0xbb6ba288,0xbb787028, +0xbb5ccec0,0xbb1f508a,0xbb60ecd4,0xbbbefb69,0xbbc805d2,0xbb852821,0xbbe8bbd2,0xbbd7b05b,0xbc03e6b2,0xbc1129a8,0xbc1e681f,0xbc267dc0,0xbc2e531f,0xbc3cadc2,0xbc4d32a9,0xbc638533,0xbc776499,0xbc8a691c,0xbc95f409,0xbc8411ee,0xbc5e922d,0xbc3b3442,0xbc17fb1f,0xbc1ab644,0xbc25e958, +0xbbd6b2a2,0xbafdc3f1,0x3b3eabc6,0xbc028536,0xbb04fb55,0x3b5a6777,0x3b6ef07f,0x3b80742a,0x3b56c035,0x3b8af141,0x3b9403d9,0x3b956564,0xbb2ab9ab,0xbc02e62b,0x3b342c8e,0xbb56cb1f,0xbbf779e0,0xbc1d1e48,0xbc17a4cd,0xbc1fc52f,0xbc2205a0,0xbc257c5f,0xbc29d2fb,0xbc2d5cf5,0xbc365463, +0xbc3ccd21,0xbc41d13f,0xbc484771,0xbc4c2eb2,0xbc5aaee8,0xbc478c17,0xbc3f6b97,0xbc35144a,0xbc2cd654,0xbc4827aa,0x3c0c14cb,0x3bf7aabe,0x3c38f0c9,0xb9973683,0xbc01d5d2,0xbc34a012,0x3b67c25b,0xbbc8f8d5,0xbc3954d9,0xbc3bdc21,0xbc371a29,0xbc1ee2cd,0xbc31cd01,0xbc33af5d,0xbc3698d1, +0xbbd42008,0x3b0d4a03,0xbc36c0a1,0xbbdcaa05,0xb9cbfe2c,0x3c30d58d,0x3bf71614,0x3c0a1a4a,0x3c0d10a4,0x3c0e9e24,0x3c0dbc8b,0x3c086113,0x3c072a70,0x3c080754,0x3c0ecfa7,0x3c0aa3b2,0x3c0b2b62,0x3c0fbec6,0x3c07aff7,0x3c00ff17,0x3bddaa3e,0x3c037a6b,0x3c096eac,0x3c05716f,0xbc07c10e, +0x3bd5da20,0x3a0a8aed,0x386827e0,0x3b68f0f7,0x3b0baf5e,0x3bda1a1d,0x3bc55408,0x3b00008d,0x3bd0b2d3,0x3bca0d34,0x3b598ca6,0x39eb7a9f,0x3afe7fba,0x3b5c63c6,0x3b939fde,0xbbc35bf0,0x3bfbea86,0x3c1bde66,0x3c14a11a,0x3c2b87bc,0x3c326ddf,0x3c335f1f,0x3c221dd2,0x3c1de7a2,0x3c1d41b4, +0x3c2fcd9b,0x3c27288a,0x3c1f4e5f,0x3c1f1dd5,0x3c002f90,0x3bdb617c,0x3b999429,0x3be23157,0x3c374b23,0x3bf48e3f,0xb9b6ad73,0x3b0ebc5d,0xb86a6330,0x39f8133d,0x3a4cfbdb,0x3aef00b1,0x3ac17848,0x3bceca5c,0x3ab8e118,0x3c1c610c,0x3b4e7613,0x3b497a89,0xb99a6e20,0x3b27f34f,0x3b95d45b, +0x3b53ca63,0x3a1ad559,0x3ba843ca,0x3c35462f,0x3c20f42e,0x3c43d085,0x3c4cc540,0x3c4aa871,0x3c25ffc8,0x3c28550b,0x3c29e6e7,0x3c57f763,0x3c3a3dd3,0x3c38b44f,0x3c4a209d,0x3c0b503c,0x3bd4f0cc,0x3b56dd73,0x3bf7f39a,0x3c17a2f1,0x3b99a29d,0x38b4eacb,0x3bc5f02f,0x3bb7596b,0x3b0bfa03, +0x3aaa3ba0,0x3a40fba9,0x3b81ab37,0x3bb05a2b,0x3bd57ec4,0x3bd01d48,0x3ba55e19,0x3a8a1646,0x3b6b2db9,0x3bc16655,0x3ba17609,0x3c057bbb,0x3b093111,0x3bcf4f2a,0x3c42b76d,0x3c296acc,0x3c67053b,0x3c7c5d42,0x3c7d1b3f,0x3c3d42fe,0x3c390bed,0x3c46c5a6,0x3c8dfaa5,0x3c77c69c,0x3c4575c5, +0x3c4283f0,0x3b86d575,0x39d9c45a,0xbb2d8722,0x3b2f9b10,0x3cd3203e,0x3be5d53d,0xbc169ee6,0xbc3b5bd2,0xbc64f612,0xbb991f94,0x3b56b4d2,0x3bbcd8c5,0x3c423752,0x3c0a719f,0x3a1e369d,0x39ea2a80,0x3b13a08f,0x3bdec8fd,0x3bc6e3dc,0x3bca55fb,0x3b719a4d,0x3b9d6384,0xbb24f5b7,0x3a7dbdc1, +0x3c65f336,0x3c4bb457,0x3c899bba,0x3c24494c,0x3c2e1c88,0x3c5a51c2,0x3c9d5a82,0x3c896530,0x3c005b5b,0x3c0609fd,0x3c3a7198,0x3c9e7b5e,0x3c94e165,0x3ca00690,0x3cbeb1e1,0x3cb10bc8,0x39e3c3b5,0xbc865ee5,0x3c29e247,0x3c9f5eda,0x3afd99d8,0x3bb86220,0x3b6a2e8b,0xbafe826b,0x3a91dae7, +0x3b675464,0x3bf04c8b,0x3b874b19,0x3b29490f,0x3b8793ab,0x3bdb847d,0x3c0b336a,0x3b6f00f4,0x3b8d1c6d,0x3a33954f,0x3b64a78b,0x3c54268a,0x3c42772e,0x3c724e8e,0x3c454064,0x3c2224d5,0x3be15ab7,0x3b885acb,0x3b365384,0xbaba2d6b,0x3c1ed9ec,0x3b6f38d5,0xbc8c4abc,0xbc287db8,0xbbe5ac0a, +0xbbc91b0a,0xbb235cc5,0x3adb616d,0xbb8df6a1,0xbc021ab4,0xbb7e3ce9,0xb9810e6c,0x3b762a41,0xb7ebd0ee,0x3b4450d2,0x3b034327,0x3aa13591,0x3afa19fe,0x3b03e5cd,0x3b3da4e6,0x3b3105b7,0x3a0719a7,0x3b0fcbce,0xbb1fdae6,0x39fab2af,0xba88b945,0x3aa6c40a,0x3bf859a0,0x3b9363c6,0x3b8eb55a, +0x3c0777b7,0x3c405242,0x3c64adec,0x3ca337b5,0x3cb49e0d,0x3c74dd60,0x3cc19b3d,0x3cda3360,0x3cc1caef,0x3c9ac3d5,0x3c5cdfb0,0x3c897ae4,0x3bbcd75c,0x3bf0d990,0x3aefa7b1,0x3b5aa271,0x3bc6f6f0,0xba2f7d28,0x3ae053bf,0xb94d85dc,0xb933efc4,0xb885ce3e,0x3a4923ba,0x3ad7330a,0x3a97803f, +0x3ab9bd0a,0x3b0b9765,0x3b6d0817,0x3b88b763,0x3b2b1ab7,0x3b5d9565,0xb721ff18,0x3b46bfcb,0x3c0e59bb,0x3c1de6f8,0x3c322a39,0x3c06dc76,0x3bb2371c,0x3b3437c3,0x3ad321ea,0xbb4dd14c,0xbc40d649,0xbbf9a4fd,0xbb94e761,0x3b787767,0x3c219026,0x3c881633,0x3cc65331,0x3c11b22b,0x3c16793f, +0xbbe23061,0xbca18e3d,0xbc8710c8,0xbc9ac355,0xbc7059c6,0xbc1d1587,0xbbd99d64,0xbba55755,0xbb141eee,0xbb436070,0xbb276664,0xba0e8dc2,0x3b5fe790,0x3b0b5379,0x3b0a1719,0x3adbefc9,0x3b6e0cb9,0x3a35c402,0x3b403e95,0x3b5b3522,0x3b361f38,0x3be5eda1,0x3b9df61e,0x3b8bcb1b,0x3b5c10df, +0x3b366dcd,0x3adcb91a,0x3a5e98c5,0x3aaaa5f7,0x3b592bfc,0x3c0c614e,0x3bc948e3,0x3b9f073c,0x3c04b8e3,0x3bf908f5,0xbbf232de,0xbc7b6255,0xbcb989a4,0xbc7067df,0xbc132d35,0xbbbaa866,0xbb864df6,0xbbf44cef,0xbbc73b95,0xbba81331,0xbb0422a8,0xb9ceb051,0x3add2327,0x3b5f43b3,0x3b0584de, +0x3abc4a84,0x3a92e686,0x3b14bc1c,0x3b5dced3,0x3b318af9,0x3bd6d275,0x3bf8fbe4,0x3bf4b934,0x3ba7f89e,0x3b613f7d,0x3adf225d,0x3a3b6d5b,0x39a65a84,0x39223a64,0x39f5abf9,0xb8412b97,0xb9855863,0x3ab4bde5,0x3aa46bf8,0xba9939cc,0xbbd3d2a1,0xbbbbe7dd,0xbc21fb27,0xbc31a6ad,0xbc05687d, +0xbc0bd13d,0xbbcffd59,0xbb92c157,0xbafb2878,0xba838da3,0x3b076dd8,0x3b1aa929,0x3b84bdfb,0x3ae0da21,0x3b4b58df,0x3a56f930,0x3a45c149,0xba996c9a,0xbae599d5,0xbb6817eb,0xba6056fb,0x3b3d8b89,0x3b2395db,0x3b8cfc6e,0x3b422639,0x3b031768,0x3a18c22d,0x3a8a4850,0x3a89668e,0x3a68d13e, +0x3b1d87d2,0x3b87ef8d,0x3bc54c68,0x3b19ccf5,0xba99c346,0xbb5883f6,0xbbb8f967,0xbb07952d,0xbad0b513,0xbbe17f39,0xb9ead940,0xbb0384a3,0xbad4c35a,0x3a4b6a59,0x3a887d70,0x3b08ea8c,0x3aa5f05e,0xba980884,0x3a3d2936,0x3ac23ae3,0x3a6e1e91,0xbaead3ff,0xbac59c0a,0xba6469a1,0xba86d9bf, +0xbbc46fb4,0xbaa7649c,0xbb369114,0xbb6f9679,0xbb898b0e,0xbba7062d,0xbbb5fd72,0xbbcc6b02,0xbba43cff,0xbb8c9eb4,0xbb7eff96,0xbb78a843,0xbb879675,0xbb814cb1,0xbb709b91,0xbb43a8df,0xbb34cfb8,0xbb25c6ca,0xbaf26272,0xb9c574b3,0xbbceeff7,0xbc284bf6,0xbc4e6aa2,0xbb629ec7,0xbc16f958, +0xbc45574a,0xbc4f342f,0xbc525b66,0xbc4ac277,0xbc5c9d45,0xbc683211,0xbc68b7e5,0xbc1eddef,0xbb73823b,0xbc6a9e4d,0xbc264ff3,0xbbbc3e25,0xb9963d3e,0xbb014b74,0xbae4e334,0xbb07d70b,0xbb085e8a,0xbb0d9807,0xbb2162f8,0xbb17ed95,0xbb15f36b,0xbb0a0676,0xbafbd68b,0xbadec50b,0xbadd7932, +0xbadb1ee3,0xbae0f7a9,0xbad87494,0xbad14b76,0xbaef261f,0xb9cd343b,0x38f261c2,0xbb713ccb,0x3c0b0cbc,0x3c5c9877,0x3c3b9829,0x3ba66fe9,0x3c472097,0x3c4da20f,0x3c5a9ffe,0x3c5a1063,0x3c3a550d,0x3c576a56,0x3c54cbe9,0x3c3c3a07,0x3c4ad16a,0x3bccb428,0x3c42b4c8,0x3c4f73b7,0x3c0d7fce, +0xbb54750b,0xb9a2fd31,0xba436631,0xba2f6769,0xba220dc8,0xba0c09c7,0xb9b7c5ae,0xba196771,0xba340b8f,0xba064664,0xba4f0547,0xba42e7a0,0xba1fa471,0xb998aa1b,0xb949b5fd,0xb9d10610,0xb9635062,0xba9a36f5,0xba2c1f4a,0x3c51aeac,0x3aa6cb6d,0x3bd6dd5c,0x3baeabc9,0x3b21e1fa,0x3b3a816f, +0x3ab0325d,0x3b719435,0x3be4382a,0x3bb7e603,0x3b87b96d,0x3b723e1b,0x3ba57be7,0x3b8048d9,0x3bcca6e1,0x3b6858da,0x3c3c8a8e,0x3a25d0b6,0xbae3d6c4,0xb9d24de0,0xba76fd74,0xba64ac38,0xba947fab,0xba6846be,0xbaa541e3,0xba81c7aa,0x3910eeb7,0xba0e1067,0xb9efbbbc,0xb60c29ae,0x3a0c51dd, +0x3a07ed05,0xb9cb69c1,0x39d67ae4,0xba92e7c8,0xb8e55d51,0x3bf76ebe,0x3b64be24,0x3bb61c40,0x3b67b5d2,0x3b6cbb0d,0x3b279124,0x3bc484a8,0x3b485f3e,0x3be8bf67,0x3b676931,0x3c098fd2,0x3af205cb,0x3bb49570,0x3b4cd317,0x3bb3bbd8,0x3b98a3a3,0x3bf31124,0x3afe35fc,0xbb5a8a50,0xba4430bb, +0xba9de3e2,0xba223602,0xba0764e2,0x39eee0aa,0xba3ed2fe,0xba96ad83,0x39f2bd70,0xbabbe0e6,0xba6e0c68,0xb932212a,0x3aec1bd1,0x3ac6e292,0xbaa9e24f,0x3ad87ed2,0xbb843c17,0xb9531f2c,0x3bd1a68a,0x3b5a0eb1,0x3b8fd2b5,0x3b0a66d9,0x390bff8d,0xba16291e,0x3ae4720f,0x3b8ee68f,0x3b2bd3f6, +0x3bdb6e6e,0x3b89d56c,0xbaff65a6,0x3aa85e4d,0x3aaf3f5f,0x3c185749,0x3b408c46,0x3c075ea9,0x3ac3c7b2,0xbb8a82b5,0xba434777,0xbac4ae91,0xba5f265c,0xbab48f95,0xbaabb3b0,0xbb01400d,0xba56ff42,0x3b4e7b64,0x3ab4c4b8,0x3a88ce4a,0x3af49da7,0x3b5c1bb9,0x3b04d4f1,0xbb3e076c,0x3ab0a424, +0x3ab9026b,0x3c0e5fc4,0x3c1728a6,0xbab0784a,0xbbcabd67,0x3a872371,0x3b7766b3,0x3bb17cfa,0x3c454c6b,0x3c191b00,0x3ad5e205,0xb85dc968,0x3ad33637,0x3c0454f8,0x3bc106ba,0x3b5a179e,0x3bad1661,0xb5c946c9,0x3ba4d804,0x3b491419,0xbb7a457e,0xbaaae4b9,0xbb90b1ec,0x3a082af4,0x3a760ac5, +0x3aa9f2e3,0xbb568957,0xbc2179af,0xbc865d35,0xbc7513da,0xbc1d0a8f,0x3b1d5da0,0x3b89af49,0x3ba68239,0x3bb70653,0x3bb0c51f,0xbc860570,0xbccf4c53,0x3c754cfa,0x3c987c54,0xba14b417,0x3bc9d13c,0x3b2686da,0xba32d021,0x39b4af05,0x3b3c9bb2,0x3be45e67,0x3b8e8a31,0x3b462ce4,0x3b2bb097, +0x3b9e7dce,0x3bed7e92,0x3b9f443f,0x3b81c210,0x3be10198,0x3b6e6eef,0x3b322dd5,0x3bb0189b,0x3b18359f,0x3b21f7a8,0x3b7420b1,0x3bd6205b,0x3bc55f5b,0x3b86f91a,0xbb459549,0x3bf28a06,0x3ba84f14,0xbbe4638b,0xbb188e33,0xbaed8bd2,0xbb9ea869,0xbbb10388,0x3b0ef6fb,0xbbb590dc,0xbb6f0edc, +0xbbad9672,0x3b580934,0x3b7e0da2,0x3b75dcbe,0x3b008b19,0x3b2d872a,0x3a2ded5f,0x3ae23752,0x3a79ba34,0x3af18aff,0x3b2ca85b,0x3a411674,0xba4006da,0xba573cce,0xbb21857d,0x3ab4e9c8,0xbadcdb22,0xbb644569,0x3a7cdc46,0x3a9606ea,0xbb8e7a01,0xbc00abf5,0xbc023239,0xbba76af6,0xbb2c377f, +0xbb9175a5,0xbb115e09,0xbb0ef84c,0x3a444c47,0x3ad8a6fb,0x3b53c264,0x3c1b0f48,0x3bb0e678,0x3b952f04,0x3bf216ff,0x3bcf0631,0x3b82bff1,0x3a454cc5,0x37e701fa,0xba8d4dcb,0xbb2480dc,0xba2cd0a1,0x398a5a57,0x3ad95f75,0x3a6d82eb,0x3a9e2d40,0x3b00a58b,0x3b3604cd,0x3b8d8bb2,0x3aee2035, +0x3a8163b5,0x3b92529d,0x3ac45dba,0xb962e230,0x3aa951eb,0x3ae016a8,0x3aab62e6,0x3aa02498,0x3b3ea311,0x3b48d861,0x3a5a081d,0xbb751423,0x3987a314,0xba155ca5,0xbb9eef0f,0x3ad355df,0x3ba6d05f,0x3bfdc3ef,0x3be9262d,0xba87ded7,0x3b10f616,0x3a96b29e,0xbc0f39ae,0xbc827370,0xbc3bb1cb, +0xbc163a16,0xbbb2ff67,0xbaea3b46,0xbb0de404,0xbac07ec2,0xbb363b57,0xba8828db,0x3b2b3eef,0x3afa2079,0x3af7f822,0xb9b478c6,0x3b505d3e,0x3bd8773a,0x3ac95ec9,0x39648194,0x3b1509af,0x3b82ec58,0x3b8dce9a,0x3b73eeee,0x3b02f61b,0x3a835016,0x39e27992,0xb9a7f793,0xbb9f7a75,0xbba5c018, +0xbb08d725,0xbb17d3ee,0xbaeeb100,0xbb1d43e7,0x3aeb8a00,0xbc3e74c3,0xbc13dffd,0xbc004939,0xbbe613c9,0xbaecb4f3,0xbb4614d2,0xbbc43b76,0xbbf61e10,0xbc0b92d7,0xbbef98ae,0xbbb0a679,0xbb2dc7c5,0xba5cef29,0x3af280d7,0x3a678035,0x3b015c98,0x3b1301c8,0x3b74adf7,0x3b5038da,0x3b4277a4, +0x3ab6399f,0x3ab3f0d3,0x3b4276ed,0x3b1298e1,0x3afef1c6,0xb7d6f9be,0xbae72ac1,0xbb67d9d1,0xbb989ca1,0xbb9c0255,0xbc0d5091,0xbc7f8c1b,0xbc80e4e3,0xbc59ee1b,0xbc2a00b8,0xbc1dda36,0xbc68061e,0xbc5a4f55,0xbbf54959,0xbc0feb9f,0xbbc84a8f,0xbbb8e3e7,0xbb848459,0xbb408eff,0x39cec980, +0x396d29c3,0x3b907913,0x3a903e49,0x3b61000c,0x3b2befdc,0x3b0cfa51,0x3a11c571,0x34933253,0x37c2a8df,0x3aa02760,0xba29e255,0xba31b8fd,0x3aeba305,0x3b4e1eab,0x3b06a043,0x3a72974b,0xb873f2a2,0xba1ce7c8,0xba62defd,0xbab848a0,0xbaa2bd26,0xb9da68c9,0x39959c65,0xbb057e64,0xbbb1357c, +0xbc12fb61,0xbc30ab11,0xbbacd7eb,0xbb8c3217,0x3a87f36e,0xbb33991e,0x39a30822,0x3998505c,0xba360bf4,0x39d90e91,0xba8b456d,0xb959e241,0x3b053822,0x3a93422a,0x3a3c9ca3,0x3b052d09,0x3ae01deb,0x3900adec,0xba1798aa,0xbb0c9a39,0xba6dda7e,0xbb93d3a1,0xbb99cc1f,0xbba6e363,0xbbb3e2c9, +0xbbb9a8fe,0xbbbaaf98,0xbbbad295,0xbbdb392f,0xbbf8b481,0xbc08381d,0xbc139b33,0xbc234da2,0xbc2d9eb4,0xbc24e9b8,0xbc0cc4be,0xbbf1b720,0xbbc211fa,0xbba2b5f6,0xbbbbd16c,0xba26ce67,0x3adfd9fd,0x396ce129,0xbabcc2a9,0x3b0001ae,0x3af9ad14,0x3b18fd83,0x3b237923,0x3acd3415,0x3b1e08b2, +0x3b276165,0x3b1a11cd,0x3b3dd513,0xb9f33ae6,0x3a8c871a,0x3ae31f9c,0xba6c8500,0xbbb6e48f,0xbb99109f,0xbba0c8af,0xbba31035,0xbba2577e,0xbba4aa56,0xbba3ff7e,0xbbad8abb,0xbbb27bca,0xbbb8eda1,0xbbbebeec,0xbbc22433,0xbbcd5e7e,0xbbbb466e,0xbbb7ac8d,0xbbb46650,0xbbb0bcfd,0xbba42caf, +0x3a815ae8,0x3a92d5f1,0x3b367396,0xbbd3a298,0xbbfa4732,0xba093c0b,0xbb99e04b,0xbbe617d7,0xbb387f27,0xbb2b4de8,0xbb111cb0,0xba238f55,0xba892128,0xba6fc066,0xba2a3185,0xbbe830ae,0xbbb1ceb8,0x3969d60d,0xbbdea844,0xbbcfbca5,0x3b152a11,0x3a4ef737,0x3a4cf470,0x3a82d750,0x3a7652e6, +0x3a5cd9a9,0x3a0ea47c,0x39ffc260,0x3a0ecae5,0x3a98f493,0x39e91d07,0x39826964,0x39e8b2b4,0xb990a5fa,0xb99a4e1b,0x38e2bddb,0x3a42c473,0x3adad454,0xba84d1e6,0xbbc6f4e6,0xba53223c,0xbb461f60,0xbaf570a1,0xba544455,0xbab36ad3,0x3a618107,0xb9e49404,0xbb30267b,0x3851ea02,0x3a993cc4, +0xbac32468,0xbac95a7f,0xba80beef,0xbb0be548,0xb9bcc12f,0xbb716d36,0xba8f11fe,0x3a7d196e,0xba02834a,0x3a0524e2,0x3a0b6b84,0x3a111e78,0xb88b1d05,0xb976a2ae,0xb84c03dc,0x3ac43e06,0xb952e982,0xba9ad355,0xba97edc7,0xbb71fd8b,0xbb68d2d3,0xbad80916,0xb9b4da4b,0x3b8223f1,0x3970b7ef, +0xbbab0ada,0xbb23d9f3,0xbaf9a0f2,0xba8a13f1,0xb97a3951,0xb8005a03,0x39b55926,0x3b8ce3a8,0xb916e1c0,0x3bd8fc28,0x3b45749e,0x3a5c1c0f,0xbaa37985,0xba2ec943,0x3a8d83af,0xb994e802,0xbb4edb59,0xbad4ca65,0x3a87e19f,0xba3d9054,0x39a6f613,0x38e5c814,0xb880f360,0xbaf80603,0xbadfaef2, +0xbadf5a15,0x3b00eb44,0xbb0258cd,0xbb5cbde9,0xbb12ce55,0xbbee5745,0xbbd31976,0xbb3b6a0c,0xba047f87,0x3b640789,0xbad1d741,0xbbabb63a,0xb9fc9eb0,0x3b05e156,0x39da2732,0x3aae09c1,0x3a5dfcfa,0x3b5014bd,0x3b874207,0x3ba4e905,0x3bede687,0x3bacd728,0x3a8b96fb,0x3b085cc1,0x3b70c387, +0x3b84b7e3,0x3b80502c,0xbaaab2c7,0xbabccac5,0xb9b62944,0xbb686fd6,0xbb0c801b,0xbb0420a0,0xbb2d76ef,0xbb9763b4,0xbb850b8e,0xbaf049df,0x3b93c755,0xbaeed494,0xbbbe71d0,0xbbc0881a,0xbc7507f9,0xbc623a03,0xbbcb5ef3,0xbb1a42a5,0x3c0b99b1,0x3a24a339,0xbc115dc9,0xbc29b214,0xbc4b2cc1, +0xbb8738dc,0x3aa988ae,0x3b03290b,0x3c2a99ec,0x3c1ac5b2,0x3b434428,0x39aa7595,0x3af2ee6c,0x3be71081,0x3b89a25f,0x3b5cf7c2,0x3aee2658,0x3a3d18a1,0xbb8a3cdd,0xbb57cbde,0x3b8c72b7,0x3bb54dbe,0x3c2d7bed,0x3bddc872,0x3c12df56,0x3c7a0752,0x3c0b5e26,0x3b009165,0xbb8dde23,0xbba8e3a7, +0xbb75673e,0xb9054efa,0x3b475e0c,0x3ba17e80,0x3bda970a,0x3b86a19f,0x3aa6e01f,0xbcb6d7a3,0x38eddbb7,0x3c42e6a5,0xbb472eda,0x3b716b2b,0x3b870d5b,0x3a4e1139,0x3a70e4fc,0x3af98355,0x3be432e8,0x3baaae66,0x3b711032,0x3b74d33b,0x3bc35da8,0x3bd02d0a,0x3a1f846a,0x3b102b72,0x3a8090df, +0x3a1009c5,0x3b08d388,0xba6f30d9,0xb99992f0,0x3ad19829,0x3b4f5748,0x3b31ae4a,0x3b0630ed,0x3acefd05,0xba3c5285,0x3bf56b3a,0x3b055a3b,0xbc541490,0xbc552960,0xbc31c5d2,0xbb944f05,0xb8f4fb43,0x3b347321,0xbbd0009d,0xbbd8da08,0xbb60705d,0xba13e63b,0x3b9a3d4a,0x3b07cb04,0x3a3afa14, +0x3afcc992,0x3b00ed2e,0x3ae84d73,0x3ac4f4c3,0x3b1deb8c,0x3b4b8f61,0xba0a3464,0xbad228ee,0xbb8a01d9,0xbb3cf9b9,0xbba7eaf1,0xbb5fde4e,0x3af21ce7,0x3aa210e8,0x3b86b2a6,0xbb197323,0xbbb26338,0xbbbd4ccf,0xba1e6fa7,0x3b9b8a42,0x3ba4ffb2,0x3c287fed,0x3b91166c,0xbc1f4225,0xbc5d27d6, +0xbc5c6712,0xbbbcdfad,0x3ab1543c,0xbb815bf8,0x3b97ea4b,0x3b905418,0x3b3459be,0xba47f6df,0xb9636225,0xba2ff37d,0xbb0be49e,0xb9c1d1ff,0x39d318c7,0x3a590167,0x3a9458a8,0x3abccda0,0x3a82c2de,0x3b0769d8,0x3b075c97,0x3930981a,0x39e4d7b9,0xbaad57d0,0x3ad12f25,0x3b504647,0x3a983663, +0x3ab97869,0xbb2d4497,0xbb7b1afc,0xbb22b450,0xbbb80e3a,0xbc179432,0xbc65a113,0xbc22f77a,0xbbf6505f,0xbaf6a86e,0xbc121ba7,0xbc3ebe04,0xbc4f2514,0xbc312727,0xbc8a7d28,0xbc90d5e7,0xbc6ee361,0xbc807fae,0xbca1f52c,0xbc844cb2,0xbc3db24b,0xbc069ffc,0xbba5a4d8,0xbb16f588,0xbb192fa3, +0xbb178e19,0xba917757,0x3a4dbdd0,0x3a874afc,0x3aad760b,0x3998078d,0x38e396af,0xbaf256ee,0x3956e26b,0xb9aa3274,0xb8329ac1,0x3b6c53af,0x3b07cd41,0xb98cb60e,0xbbb0f1c8,0xbbf16d39,0xbc20ba04,0xbc473846,0xbc50e9e4,0xbc4c392f,0xbbff8e41,0xbc41b6af,0xbc5f24c3,0xbc495d14,0xbc84591e, +0xbc43f6b1,0xbc87dbf2,0xbc72f6ad,0xbc48a4a9,0xbbcf07a7,0xbbfbebd5,0xbbf44e12,0xbc1a4849,0xbc0acce3,0xbbef59da,0xbb9d3e72,0xbb98f1df,0xbb248003,0x3a9f7982,0x39eba96c,0x394b5002,0xb9df5fee,0x3b12f9c9,0x3b630cdd,0x3b5e976d,0x3b4d1031,0x3b2f60f1,0x3b877fe2,0xb7b16759,0xbac9e56a, +0xbb590641,0xbb3ad35a,0xbb0e4a54,0xbae8aee1,0xbb1f60e7,0xbbb6dd93,0xbc309636,0xbc46d98f,0xbc4c7d8e,0xbc2d2818,0xbc498d88,0xbc45c97b,0xbc7ed12b,0xbc87868f,0xbc7196bf,0xbc632c56,0xbc338854,0xbbfa38d8,0xbb96fdca,0xbb537d1f,0xba8b3d08,0xba1fe91d,0x3aac24bf,0x3ab907a4,0x3b2a52af, +0x3a433a1d,0x393343dd,0xbaa8fd2f,0xbaadeab2,0xbb38a83d,0xb972858c,0x3b617a36,0x3b799105,0x3bca117d,0x3b9ce65f,0x3b813035,0x3b362f3b,0x3a8fcbb1,0xba6cc42d,0xbb4d3bbf,0xbb3b20fe,0xbb09d445,0xba9376db,0xbb613c27,0xbbd111c1,0xbc0eb57c,0xbc3ac8b5,0xbbabc4e6,0xbbbcdf94,0xbbae5949, +0xbb55144f,0xbb7a1914,0xbb47647c,0xbb187689,0xbaf63c26,0xbac2b05f,0xbb1b9b17,0xbb67dd12,0xbb23f31b,0xba993a15,0xba94cc35,0xbb093cf2,0xbac562fd,0xbb1821af,0xbac2a733,0xbb8575f0,0xba8ef41e,0xba83d0c7,0xbae4e57f,0xbaec83fa,0xbb064e48,0xbb0124a1,0xbae5a27c,0xbaf5794e,0xbb11a142, +0xbb459994,0xbb87be6f,0xbbbe050f,0xbbee1eef,0xbbead32f,0xbbdb23ce,0xbbcdc1aa,0xbbc3a8a2,0xbb3b46d3,0xbb1647d1,0xbbeea667,0xbc0642c8,0xbba6801d,0xbbbd93f8,0xbbf9750f,0xbbb6a361,0xbbb46ecd,0xbbaa5022,0xbb8ed119,0xbb9baa3a,0xbba17f76,0xbb93f24b,0xbbf256af,0xbba41ba4,0xbbaf18c5, +0xbbf585df,0xbbc0c49f,0xb9963467,0xbab561e3,0xba964657,0xba93ec0a,0xba80fd5d,0xba703eca,0xba5c34cf,0xbaaff2fd,0xbae049e5,0xbb012c3e,0xbb1461a7,0xbb208605,0xbb42a4ca,0xbb326908,0xbb3698ad,0xbb355bc3,0xbb3ce6c4,0xbade0673,0x3bc1da67,0x3ba8d167,0x3ba957d1,0x3c24524a,0x3bf59289, +0xbb07b94e,0x3c22a98f,0x3c0334bd,0x39e63ab4,0x3a1d5ee8,0x3a0fdd11,0xba15c2f5,0x38601141,0xb97b2b24,0xbad17fe1,0x3c002ad1,0x3c1eebad,0xbb29d8ab,0x3be9cbda,0x3c1fbce0,0x3ba53b6f,0x3bacd540,0x3bbeb190,0x3bc41b47,0x3bc34eba,0x3bc2b52b,0x3bbf5b99,0x3bb80378,0x3bb9a74f,0x3bcfcf00, +0x3bc97bd7,0x3bcdbbbc,0x3bd413d4,0x3bd4df41,0x3bc87e95,0x3b983baf,0x3bb2e849,0x3b8e7e9f,0x3bea405d,0x3b90141f,0x3bcfc4f9,0x3bd53d43,0x3bad15da,0x3bbbe189,0x3ba05f9e,0x3bc16447,0x3bfe5723,0x3c09637a,0x3c1bcd2d,0x3bfb8f6a,0x3be5309c,0x3ba1138e,0x3b96ddf6,0x3bf4b04d,0x3bb7f13c, +0x3b82dedb,0x3be53911,0x3bbc7ba7,0x3bf63fad,0x3c00aa98,0x3bfb31c5,0x3be47a0d,0x3bd2ec8f,0x3bbb2ad5,0x3bd09a82,0x3c10fab3,0x3c09e411,0x3c10579b,0x3c1327df,0x3c0ed908,0x3bee1e5c,0x3b6c92f8,0x3bb09fda,0x3b9ee719,0x3be6283c,0x3c08a7c1,0x3bc6df9e,0x3b8c5d32,0x3b9205a1,0x3b971bee, +0x3b82efab,0x3bb2e5e3,0x3b9eb8d9,0x3be5f7a9,0x3bf05964,0x3bfca1d1,0x3ba61c94,0x3ba2e9e1,0x3b90d219,0x3b9caf13,0x3ba165ff,0x3bd2c94f,0x3bb9a0bf,0x3bc31a3f,0x3c0532b5,0x3c1e4bab,0x3c1df872,0x3c176f09,0x3c0c8f61,0x3be67410,0x3bf1a548,0x3c4014d3,0x3c2c9e7c,0x3c3f4e2b,0x3c46bb6d, +0x3c4630a4,0x3c13ac69,0x3aaf3b9a,0x3bb6acb1,0x3af5d409,0x3b9b80cb,0x3ba68ca2,0x3bae9ed8,0x3b938d0d,0x3b78f65b,0x3b0bb50f,0x397b594d,0x3b2a8907,0x3b822874,0x3b2fad3a,0x3be2ca4d,0x3bc19d87,0x39f5c9ae,0x3b26d269,0x3b627681,0x3be4c261,0x3b81f990,0x3b92ecf8,0x3b7c6532,0x3bc279eb, +0x3c28f2b7,0x3c5761c2,0x3c544837,0x3c315c66,0x3c0acc3d,0x3bd83f67,0x3c13d830,0x3c88f41a,0x3c7e8bd8,0x3c84842f,0x3c83ad33,0x3c611338,0x3bfaa089,0xbb41bb25,0x3b444c99,0x3c54a26e,0x3c802852,0x3c3a6b13,0x3b36ec56,0xbbe38c04,0x393dafd2,0x3b850772,0x3b80766c,0x3c3624a4,0x3c356bea, +0x3b99937d,0x3a7e94a9,0x3aff6458,0x3bfd8f70,0x3b9ac6f7,0x3b63ac5c,0x3b924620,0x3b8c0866,0x3bc8ed8d,0x3c0a1007,0x3c1b36d2,0x3bf95ee9,0x3bae85ca,0x3bd7f5ac,0x3bf1989f,0x3c173a40,0x3b00ff3c,0xbb2f4374,0xbb46d64e,0x39ba146a,0x3c0428d1,0x3c92ff13,0x3cb3277c,0x3ca69062,0x3c5e8ec7, +0x3c4cb835,0xbb811e5e,0xbc94dd79,0x3be68d66,0x3c54d6f5,0x3b9375b2,0x3bdf9281,0x3b8b621d,0x3b47c8d1,0x3aa12def,0x3b08cc1c,0x3be1d8ca,0x3bbbf763,0x3b960279,0x3b4f7771,0x3bd6a05b,0x3c020056,0x3b93d3ec,0x3b4a4933,0x3b4d62c5,0x3bb5fc71,0x3c1abc24,0x3c651508,0x3c9b84e3,0x3c71f34e, +0x3c3ee280,0x3c1de295,0x3ba411a0,0x3b4d8335,0x3ae8f549,0x3c28aed4,0x3c0a5002,0xbaf60875,0x3b2a692b,0x3af17147,0xbb5654c9,0x3b4100d7,0x3c03171b,0xbac3e7c1,0xbb55bd26,0xbb405df0,0x3b16d37e,0x3bbfdb98,0x3ba826b7,0x3a8a0cac,0x3b46e175,0x3b0f58de,0x3b1655f9,0x3af822c3,0x3b22a630, +0x3b60b33b,0x3a897ccb,0xba11894f,0xba86bb88,0xb92b407b,0x3b0d865b,0x3a610c4e,0xba512f24,0x3a9d074d,0x3b9c27ee,0x3b546a84,0x3bd5f042,0x3c4c3ef9,0x3c7575ee,0x3c69805b,0x3c178153,0x3c2df51c,0x3c67865f,0x3ca8ecbe,0x3cc88b19,0x3cd06ad1,0x3ce77542,0x3c6e12f3,0x3c876e73,0x3bedfddb, +0x3bb82c70,0x3b9b0265,0xbaab00b3,0x3a717787,0xba760408,0xbaf2d752,0x39c3e329,0x3a4ecb09,0x3ab3e86c,0x3b017b9f,0x3b05f5dd,0x3b061e25,0x3b1d44f3,0x3b3fc946,0x3afbd952,0x3a6692a9,0x3b011872,0x3b5ad126,0x3bc3c54d,0x3c0dd9f0,0x3c27ad79,0x3bfb742b,0x3bb34382,0x3b921aa5,0x3b8ef70b, +0x3b6ee686,0x3b3f0960,0x3ba246ca,0x3bc41b5a,0x3bd6c2a5,0x3ca2f2d7,0x3ce19c63,0x3d0b7a76,0x3cc8d6dd,0x3c84569d,0x3bd65828,0xbbfb4d42,0xbc1bf532,0xbc565e54,0xbc5512bd,0xbc273c5e,0xbbaacdea,0xbb0e70ed,0xb9ecfd46,0x38d97d12,0xba9b1576,0xba312ec7,0x3a53faa0,0x3a99f00a,0x3ac93887, +0x398b220c,0x3b268542,0x3b74fa06,0x3b65f1d4,0x3a1fb40c,0x3a0ac7fe,0x3b286aef,0x3b872566,0x3bc02b53,0x3bf0c314,0x3bf1a290,0x3bf6caa4,0x3c286efe,0x3b5aa129,0x3b7a49ca,0x3c35cb8e,0x3c7ddcdb,0x3c93eddf,0x3c994dbb,0x3c94c5f9,0xba2031aa,0xba3f5461,0xbbf705d3,0xbb7276e3,0xbacfd74a, +0xbb67126c,0xbbd4c9fb,0xbc013ad3,0xbbfd3378,0xbbecd2eb,0xbbc442bb,0xbbac052d,0xbb492ef5,0x3a201683,0x3abe6748,0x3b4cc7db,0x3b634a46,0x3b6b128c,0x3b4a6af8,0x3b308eca,0x3b1b1f24,0x3b7fe1da,0x3bcb7f9d,0x3bdcd47a,0x3bc35110,0x3b666b70,0x3af3edba,0xba9ac317,0xbb919092,0xbb985aa5, +0xbb88c456,0xbaea43f1,0xbbf30e4b,0xbbfd9464,0xbb99f174,0xbb14e599,0xbc14d332,0xbc2f7e7a,0xbc0df537,0xbc089d7f,0xbc0aad27,0xbbdca3e9,0xbb984608,0xbb2ded98,0xbac034b6,0xba99d2be,0x3a931e9b,0x3a13eece,0x3ae6cebd,0x3b27472a,0x3ad6d5e3,0x3a9ab7da,0x3a40cf0b,0x3afe6f9a,0x3b77cfc3, +0x3ba06938,0x3b9d2d90,0x3bac41b2,0x3bb6eab5,0x3b9b98a8,0x3b8721c0,0x3b65cb00,0x3b798463,0x3b89b63e,0x3b850b0e,0x3b97ea7a,0x3b92fcef,0x3ba41092,0x3b001c20,0xba8b6924,0xbb9e3035,0xbbe54bf8,0xbb39b4f7,0xbb266e54,0xbb8b29c0,0xbaf1ac0a,0xba732492,0xba8255c8,0xb99a920b,0x39a2d86c, +0x3a2405d1,0x3af53114,0x3b3844ee,0x3b6df517,0x3b6422ff,0x3b9d216c,0x3b4d537c,0x3afd00f4,0x3b2d5e23,0x3a3c477b,0xba5a2817,0xbad5b2dc,0xbb1a7de2,0xbaf6b7ea,0xbaf56163,0xbacfea2e,0xbaa8f598,0xba85bcc7,0xbaa96ed1,0xbaada06b,0xba85dbef,0xba4f5804,0xb9e6db4d,0x38f64264,0xba69de2f, +0xbaa325ee,0xbad59708,0xbaf5e22f,0x39242262,0xb8be0064,0x3b242949,0x3a93a894,0xbb8fbd14,0x3b4f9966,0x3af59090,0xbb1ee44d,0xbb1013dd,0xbb0adeb3,0xbb2a2489,0xbb1b0a97,0xbb21aace,0xbb2c8a05,0x3b66ca3a,0x3b9445f6,0xbb57b848,0x3b2131bd,0x3b578372,0x39bde906,0x3a4bfea8,0x3a64d426, +0x3a58a1a9,0x3a6e6912,0x3a6c2f7c,0x3a76bdd8,0x3a8ed57e,0x3aa0dac3,0x3aa8228d,0x3ab5aee5,0x3abf9a68,0x3ae54d28,0x3aba91fc,0x3a9905d6,0x3a56bda3,0x3a178455,0x3b216b97,0xbba1a11b,0xbb7e7638,0xbbb0d72a,0xbb9e651e,0x3a2470ec,0x3c320ab3,0xbbd6e765,0xb9ba75f2,0x3c0cc622,0x3c1765c7, +0x3c1bc658,0x3c20f215,0x3c2ee533,0x3c320d47,0x3c325c3a,0xb94cca59,0xbbcca4a6,0x3c405c89,0x39db4c9c,0xbb99a1c1,0xbbbb1d04,0xbb8cfbfe,0xbba7c573,0xbba55741,0xbbad9959,0xbbb3c794,0xbbbe1e85,0xbbbd8801,0xbbba48c4,0xbba10df9,0xbbbae793,0xbbc1952f,0xbbbe3833,0xbbce05ef,0xbbc4fca0, +0xbb9cd469,0xbb9f66b9,0xbb8a8911,0xbbd651cd,0x3b3fca3f,0xbb9b57c1,0xbae0bd84,0xb978c11e,0xbb1c5bb5,0xbb0a138c,0xbb40c39d,0xbb55e327,0xbb0a63ff,0xbb14031b,0xbaa026db,0xbb293965,0xba05cd50,0xbac01a25,0xbb62be24,0xbb26eafe,0x3b667b54,0xbbcb42e1,0xbbb6a032,0xbbdcb256,0xbbe5b8c4, +0xbbfc8e7c,0xbc073817,0xbc0db922,0xbc0dbbec,0xbc027371,0xbbc00e76,0xbbfb3754,0xbc09000e,0xbc084cdf,0xbc248a4a,0xbc16d274,0xbbb77c8c,0xbbb0a079,0xbb48dc79,0xbb65f94b,0xbb310aee,0xbb2d37fc,0xb828d479,0xb7b66ffd,0x3a6fa5f7,0xb890f652,0x3b015665,0x3b271489,0x3afb2b92,0x3b630af8, +0x3ba26f51,0x3994f5e1,0x3a2dbcf4,0xbaebc2e5,0xba82cdc0,0xba8bce8d,0xbab84620,0xbb8b020f,0xbbdbfb57,0xbbf2be01,0xbc08aac0,0xbc1c2119,0xbc2ae70d,0xbc41902b,0xbc4072a2,0xbc39c7e4,0xbbeae8c5,0xbc358d2d,0xbc47bfdf,0xbc3abe0c,0xbc6dba0b,0xbc4aae75,0xbbc56b9f,0xbbb6db1b,0xbb3e79e7, +0xbb69ce90,0xbb61cc91,0xbb38ddf3,0x3a3c8a68,0x3a5fc14b,0x3acebe19,0x3a8844bb,0x3b260cc7,0x3b65b439,0x3b761c0f,0x3c01b48d,0x3bb700ba,0x3aac4aa9,0x3a98e17b,0x3a4b156f,0x3b4d4e3f,0xb8f555e8,0x39247ca4,0xbb9433fd,0xbc0c367e,0xbc2e40d2,0xbc514839,0xbc73c395,0xbc8e8ccd,0xbc954275, +0xbc8d255a,0xbc5b66db,0xbbd00bf2,0xbc50c141,0xbc75113c,0xbc761e4e,0xbcaac7a4,0xbc915c6d,0xbbd6fe55,0xbb91514e,0xbc07c841,0xb9b3e9ab,0x3aa8dd58,0xbb1334ec,0xbbe27018,0xbb019715,0x3a2774a4,0x3abe25d5,0x3c0c1b61,0x3c1e0fce,0x3bbe1c98,0x3a7b2aa2,0x3ac39ca8,0x3bd87d77,0x3b3e827f, +0x3aa484f4,0x3b057891,0xba6abe93,0x394340e3,0xbb1b3d73,0xbbab43b0,0xbadfaac9,0x3a23d136,0x3b1cb40f,0x3b9b75bd,0x3c2e6b1b,0xbba8cc00,0xbc65f2a9,0xbc8afc03,0xbc8327f6,0xbc69014b,0xbc683afb,0xbbb5700e,0xbb73cefc,0xbbd46410,0xbc184129,0xbb1ed141,0xbcbac416,0xbc25f41a,0xb9224de4, +0xbaa8c5c4,0x3b0d5673,0x3b4f74bc,0x3b6a5ceb,0x3a9369bd,0x3a8790f6,0x3bc997c9,0x3bcc8602,0x3ba2643a,0x3b376f85,0x3b8f75df,0x3b836a5f,0x39ac9e03,0x3a61b8fb,0x3b1ec31c,0xba0f3265,0xbbbaa570,0xbbf0a678,0xbc0f5f34,0xbb7f76a0,0xba29d687,0x3ad7351e,0x3a909b1e,0x3a73867d,0x3a23b13f, +0x3b8e6cb5,0x3a466bda,0xbbf889f3,0xbc11b49d,0xbc06490b,0xbb89f36f,0x3ab7c266,0x3b8e80d0,0xbb23a027,0x393b3afd,0x398754f7,0x3b213016,0x3ba615aa,0x3b82e156,0xba1fe67f,0x3acfd521,0x3aeb055e,0x3ac93844,0x3a869de7,0x3af20579,0x3b661e16,0xb9b57be4,0xbb6cdfd0,0xbb2a4f2a,0xbb8b04cf, +0xbbad5ff6,0xbbafc06c,0xbb89bc83,0xbabf0222,0x3afae045,0xbc1d479e,0xbc8388b2,0xbc9089a9,0xbc80d9bf,0xbc344f51,0xbb8fb138,0xbc06c7b2,0xbc933e50,0xbcf312cc,0xbd024536,0xbcd6ac8d,0xbc8674cb,0xb9305374,0xbc0f468d,0x3b9a7fa7,0x3b36a036,0xbaced6ab,0xbb08d37f,0xbb43d03d,0xbb099e8a, +0xbb48e5b5,0x39c1c07d,0x3a969d37,0x3a3a987e,0x3ae8c766,0x3b033a38,0x3a340863,0x3a068cdf,0x3a0904e9,0xba15293f,0xbacc8fbc,0x3910e27f,0x3a5e5000,0xbacc8fdd,0xbb8afc79,0xbbafb3dc,0xbc03911b,0xbbfc93cf,0xbbbe493a,0xbbfdd390,0xbc11170b,0xbc012ab9,0xbbcbbd45,0xbba0a683,0xbb294906, +0xbc61d97d,0xbcb44647,0xbcf29f9b,0xbc89287f,0xbce59dc0,0xbc785aa5,0xbbaf4f8c,0xbc47a7c8,0xbc73ee32,0xbc62afa1,0xbc3c5e86,0xbc0c02ca,0xbb9a4596,0xbb3f5c36,0xbaf74afc,0xbaea4651,0xbabdbdd9,0xbadff74e,0x380b69a6,0x3a4811e5,0xb97d306a,0xbab3ab39,0xba639ae6,0xbaa2f4ea,0xbae330dd, +0xb9ea68aa,0x3943d16c,0x39becba8,0xbb0519f0,0xbbf24268,0xbc1bda99,0xbc5790e9,0xbc889090,0xbc9795cd,0xbca60b04,0xbca21a94,0xbcacacd6,0xbca925d2,0xbca6884a,0xbcce2229,0xbc776d38,0xbc6442e0,0xbbb2a9b8,0xbbfe5165,0xbb828a80,0xbc0677e2,0xbc232103,0xbc22a09d,0xbc1e624b,0xbc09de16, +0xbbe93f01,0xbbeb371e,0xbbb2188a,0xbac8bce5,0xb9e5c2b3,0x39806cb0,0xb94ef476,0x3b0260cf,0x3b253b69,0x3b3fa0af,0xb9cb6afb,0xbb0b6708,0xbad7a48d,0xbb382575,0xbb7f0cd0,0xbbad01b8,0xbbaae2fe,0xbb88def9,0xbb29ff2d,0xbbaa51d7,0xbc1f0339,0xbc8b8c77,0xbc89835b,0xbc8f80cd,0xbc8e73b9, +0xbc7b6431,0xbc6edf75,0xbc6fc3b9,0xbc61765b,0xbc5e7bf2,0xbc388b72,0xbc19ae8c,0xbbd20cf0,0xbb8e67e1,0xbb3bc7c0,0xbb57fdbb,0xbb06b17d,0xbb034c4c,0x3a95c316,0x3a9ec847,0x3a839ad4,0x391810e8,0x39a87f8d,0x3a09e6b8,0x3a0ce010,0x39c7caf2,0x3a8bbc22,0x3b120912,0x3b54fd11,0x3b438ebe, +0x3b3e548b,0x3b504f5c,0x39376f9f,0xbb4b4c47,0xbbd68a90,0xbc04b08a,0xbc11c943,0xbc22f34e,0xbc2fe80b,0xbc45739e,0xbc5dbac5,0xbc65ca89,0xbc0285ae,0xbc1117a7,0xbb2a3d12,0xbbc5ca6a,0xbb935a84,0xbb6d7be2,0xbb9b6ef3,0xbb81fb3e,0xbb9c9868,0xbba26b7d,0xbb7d9c91,0xbb927d1e,0xbb700abf, +0xbb3bbd5a,0xbae33e3f,0xbaafa42d,0xbb44038b,0xbb09b1c9,0xba9f30ca,0xba83d22e,0x395b57cd,0xb9b890d0,0xb96699ed,0x381a855a,0x39a124e3,0x3a6fa155,0xba179817,0xbadf826a,0xbb4ebdaf,0xbb9abeeb,0xbbdcbc7c,0xbc0f87ca,0xbc10a4f4,0xbc0eb38f,0xbc0998da,0xbc089f87,0xbb955088,0xbbb17b51, +0xbba43e0a,0xbb15cce8,0x3b5bf262,0xbbbb88f9,0xbb135aab,0x3b3df2a8,0x3b678c46,0x3b8727a2,0x3b94921e,0x3ba9a2cb,0x3bb5eea8,0x3bc4d60a,0xbaaed9c1,0xbb84eb12,0x3b99c362,0xba934809,0xbb56fa5f,0xbae0e633,0xbae56c46,0xbae0e674,0xbac5675c,0xbabe5f01,0xbabc6a23,0xba9cca30,0xbb01fc94, +0xbb279595,0xbb4d022f,0xbb75a6f2,0xbb8ad056,0xbba4e81d,0xbb98f85c,0xbb9a1903,0xbb9ae1ac,0xbb9f3642,0xbb5851dc,0x3bfce09c,0x3bd6c8bf,0x3c22ca94,0x3b9270b3,0xbb23f8c6,0xbc2e69b2,0x3bea5a54,0xba61d711,0xbc14bcef,0xbc183c7a,0xbc16d7d0,0xbc0f108e,0xbc18a985,0xbc1c1a4e,0xbc244be4, +0xbab1a1f0,0x3bba2d2f,0xbc3dba49,0xbb1571ee,0x3b7ff898,0x3c158a02,0x3be454c5,0x3c01537f,0x3c036886,0x3bfec8d6,0x3bf71486,0x3be63d2b,0x3be571f2,0x3becceab,0x3c0745be,0x3c033bb8,0x3c0530f1,0x3c09a368,0x3c01c25c,0x3bf14d73,0x3bbf85de,0x3be4064e,0x3bdaa4aa,0x3c188011,0xbba70440, +0x3be2eec7,0x3b2ced6f,0x3b278ad4,0x3baede5c,0x3b6ba4ad,0x3bdd0ed1,0x3be87cd2,0x3ba03916,0x3c041507,0x3bea5236,0x3bbfb52d,0x3b00f06e,0x3b1957a4,0x3b6f1b81,0x3b8809a4,0xbb876953,0x3c026355,0x3c1227d2,0x3c1cbcad,0x3c2929da,0x3c1c6872,0x3c0c2b24,0x3bef58ca,0x3be1be50,0x3c000b99, +0x3c3122fc,0x3c29835e,0x3c2c5ee7,0x3c2a56b7,0x3c10af10,0x3be82131,0x3b7faa8c,0x3bc468a6,0x3c07780a,0x3c251883,0x3b8ef692,0x3ba49ee7,0x3aa2caf1,0x3b507feb,0x3b6d7780,0x3b5760e9,0x3b553dac,0x3bbe121d,0x3b8f746e,0x3c19a322,0x3bacdd6d,0x3bc0650a,0x3af99df6,0x3b3140ce,0x3ad4dfcf, +0x3b30dd20,0x3b0c39dd,0x3bb6eccd,0x3c2fde41,0x3c30c492,0x3c50702d,0x3c398409,0x3c238889,0x3bee0bff,0x3bdc6f34,0x3c0223e7,0x3c62da15,0x3c4f6b95,0x3c5d0ea4,0x3c67d1cc,0x3c318f78,0x3bf4a275,0x3acca218,0x3bb13fb0,0x3bd75fac,0x3be55bf5,0x3a605bcb,0x3b9fb9de,0x3b7fe489,0x3ba291aa, +0x3b865134,0x3ab6a1f6,0x3b7b457b,0x3b87b7a3,0x3b94e319,0x3bf9193a,0x3bf400e4,0x3b6a2d52,0x3b62fdcb,0x3b888c82,0x3af3f22a,0x3b7e3591,0x38eae5c5,0x3b8e35d5,0x3c3d6bbd,0x3c5572f1,0x3c86a007,0x3c662224,0x3c2bd5b3,0x3bd47338,0x3bb8b031,0x3c1de5b5,0x3c9abfc4,0x3c8a66ef,0x3c89a94a, +0x3c83b7f2,0x3c138472,0x3b306dbe,0xbb6da62f,0x3ae16d76,0x3c936f6d,0x3c7c2990,0x3bfe05c2,0x3b64319c,0xbc001f52,0xbb588c8e,0x3b09d488,0x3b481e65,0x3c0c8cf1,0x3c2f3711,0x3bfbf1fb,0x3b123580,0x3b013ab2,0x3bca3ef9,0x3b4e7453,0x3b6dd78d,0x3b6bf494,0x3be9a7ba,0x3b8f1d77,0x3c0395eb, +0x3c811f91,0x3c4a2879,0x3c6159f4,0x3c305c4a,0x3c415a4d,0x3c71192b,0x3bc1618d,0x3b06615b,0x3b6f8337,0x3c1474d3,0x3c82e760,0x3c99d23d,0x3cd40f1b,0x3cc7f5f9,0x3c6cd5e8,0x3c52bd02,0x3bde9474,0xbc3ca1d9,0xbc17b89f,0x385dc34a,0x3c23fcbb,0x3bb90233,0x3b8e3eb7,0x3bafdad0,0x3b1d6e88, +0x3b0358bd,0x3bced9b5,0x3be7ef90,0x3bc34260,0x3b6161fd,0x3bd16799,0x3bce6147,0x3b3b1484,0x3ae154f4,0xba5e0fec,0x3b998ab0,0x3c2c6e7b,0x3c5f587b,0x3cb783e7,0x3c92289c,0x3c57c1fe,0x3c00b644,0x3b1b3233,0x3b01ee8d,0x3bbcdc57,0x3c0dd99d,0x3bbed463,0xbb2b3b87,0x3abfcd51,0x3ac48136, +0xbb32676a,0x3c002a89,0x3c405cbf,0x3b984acb,0x3a80e7e0,0x3b2bbf4b,0x3b061526,0x3bc8129a,0x3b88f743,0x399f63e0,0x3b23137e,0x3b4988c5,0x3b130431,0x3b1e2638,0x3b39c28c,0x3b7d8d5b,0x3a88954d,0xb98a652e,0xba709737,0x3a86f4f8,0x38e33fbb,0x3ad2220c,0x3afb328a,0x3a3f9ca9,0x3ba220a7, +0x3bfdd2b3,0x3c634b24,0x3c99d3d9,0x3cb40950,0x3ca24e30,0x3c80f156,0x3c5fec83,0x3c8430cd,0x3cb01f07,0x3cb9976f,0x3cc435a7,0x3cda3c84,0x3c7f7e37,0x3c7011b9,0x3b4e8b83,0x3ab4bd1c,0x3b0091e1,0xbb5e2f03,0x393745f8,0xbab67665,0xbab6b9ee,0x3ab91032,0x3af71d98,0x3aab638a,0x3b4a85ca, +0x3b3611f5,0x3ac93806,0x3aa1c5f6,0x3a6127b9,0x3acdc162,0x3a32035a,0xba61ccfa,0x3b829477,0x3c183c92,0x3c3868c5,0x3c4dfc85,0x3c111a18,0x3bb374ef,0x3add7f56,0x3a978d58,0x3a87f6f1,0x3b823c93,0x3b4c7bb1,0x3bde9389,0x3c7eaa05,0x3cc02d20,0x3ced4793,0x3d0be63b,0x3caeb58e,0x3c8586fd, +0x3ad044d8,0xbc7c0724,0xbc38c53f,0xbc219482,0xbc521f6c,0xbc2356f1,0xbbc56b90,0xbb87d4b5,0xba4c7f08,0xba10707e,0xba1718d6,0xba3e862f,0xbab599d7,0x3995c53b,0x3a6aeca0,0x3a431e19,0x3aa62d72,0xb934d8ea,0x3b63f951,0x3a89f23b,0xba14ade4,0x3aa3c600,0x3b10acd9,0x3b8fd5df,0x3bde4cd5, +0x3bcce3b1,0x3bc4c184,0x3c0b6250,0x3b7aa7d6,0x3b859be2,0x3c14d79d,0x3c73419b,0x3c968584,0x3cac9996,0x3c8ac1fe,0x3b11f8d1,0xbaace356,0xbc20e29d,0xbbb051b7,0xbbc328c4,0xbbf004fe,0xbc087703,0xbc13593d,0xbbf072af,0xbbdee52f,0xbbb93ce4,0xbbd445cf,0xbb9916cb,0xbabb2e1d,0x3a9c3cfc, +0x3b30faa1,0x3b3eb301,0x3b262ae8,0x3b2d310b,0x3b042d15,0x3b47b40d,0x3b8e80f8,0x3b9fca55,0x3bd852a7,0x3bbdc585,0x3b7f162a,0x3b08d123,0xb782c86f,0xbb1e8756,0xbaccc4d0,0x3a6148e2,0x3ba25c7c,0x3acfed9c,0xba516fac,0xbb1367c6,0xba458434,0xbb88c625,0xbbe4cca5,0xbc0e55e6,0xbbd81a86, +0xbc02e785,0xbbc15813,0xbb88e03a,0xbb0856aa,0xbb55dd35,0xbb464bc0,0xbb6ac56f,0xbaa45cfb,0xba5b30e3,0x3a8ac48b,0x3a04f759,0x3abb153b,0x3ae7e0bb,0x3b1c310a,0x3b370155,0x3ba83eed,0x3bbbc3c5,0x3b980021,0x3b8b284b,0x3b8e44ff,0x3b9cc65d,0x3bb4606c,0x3ba684af,0x3b9402b2,0x3b62a011, +0x3b58539e,0x3b1ae05c,0x3b14b514,0xb8b77c07,0xbad8305d,0xbb66f3b6,0xbb951c4f,0xbb4a04ba,0xbb7e4d1a,0xbc16a617,0xbb5daf21,0xbb8e4596,0xbb85ba20,0xbb137d48,0xbb002311,0xba028b85,0x39b0154b,0xb9cb0455,0x3ab67cf4,0x3ae6a65e,0x3b17d593,0x3a5f7371,0x3a9f8ccb,0x3b337448,0x3b15043b, +0xba244469,0x3b3a2b54,0x3aff1ef7,0x3b18b5d8,0x3b2128c4,0x3b2d20fc,0x3b301f66,0x3b346af4,0x3b3dd472,0x3b5c74fc,0x3b80ce20,0x3b8dfbd2,0x3b9df1c9,0x3bb0fb48,0x3b6ae4a1,0x3afb648c,0x39b3f848,0xbab2e5a8,0x3aab98f3,0x3ac495f5,0xb857070f,0xbb5e91d3,0xbbfa4394,0x3adcbf01,0xbb20c17f, +0xbbd4c522,0xbbd6fede,0xbbd643fe,0xbbccf558,0xbbdb1a7d,0xbbe49fc1,0xbbe55dde,0xba80a9e0,0x3b53f742,0xbbdc2394,0xba78938e,0x3b1cb4b1,0x3b810b93,0x3b56d95e,0x3b6c8308,0x3b685936,0x3b6af1ba,0x3b6cafa7,0x3b6db641,0x3b797ee8,0x3b7ce2b2,0x3b7e17d6,0x3b811744,0x3b81738e,0x3b8c4c7e, +0x3b6705fa,0x3b4a3715,0x3b27e2c4,0x3b0c7654,0x3b88e848,0xbba52bc6,0xbb82b93a,0xbbe0b5f7,0x3aebfbc3,0x3c0bb337,0x3c55d091,0xbadc6d64,0x3be408dc,0x3c4db91f,0x3c5b399b,0x3c5be547,0x3c4a026e,0x3c637e13,0x3c641f64,0x3c5af3ec,0x3be62ffb,0xba839396,0x3c586e57,0x3bf20b10,0x3ad64562, +0xbbe891fc,0xbb88ef58,0xbba528bf,0xbba8321b,0xbbb6afcd,0xbbbf4524,0xbbc88eb8,0xbbc5c25f,0xbbc0ef9f,0xbba8a072,0xbbb8f792,0xbbba2067,0xbbb55c17,0xbbbb6820,0xbbb44193,0xbb9a6868,0xbba117c9,0xbba24a86,0xbb9ac519,0x3c1beb3f,0xbb481014,0x3b0dd122,0x3b430a00,0xb9b96c18,0xb969cdc0, +0xbb117d19,0xba861f3e,0x3b0d10f7,0x39d33f6d,0x398da466,0x3999463b,0x3af23663,0x38034f61,0xba530cb0,0xbaad0d97,0x3c06602f,0xbb95d4ea,0xbbb2ff84,0xbbb1cb7a,0xbbda9bc2,0xbc042d3e,0xbc163491,0xbc1a3f40,0xbc171289,0xbc05a20b,0xbbc3b7f2,0xbbe59ec9,0xbbe73e76,0xbbdff405,0xbbf3556c, +0xbbe21a1f,0xbba006ba,0xbb9eb11a,0xbb9b8069,0xba8bead1,0x3b82c26a,0x3a9ec614,0x3b4ae75c,0x3b31dff3,0x3b551c3e,0x3a8fe88b,0x3b91874f,0x3b11b72b,0x3bac3076,0x3b25856a,0x3be3ec37,0x3aecab77,0x3b4ee715,0xba41aa3e,0xba8a7353,0x3993295e,0x3b2f919b,0xbafffbb4,0xbbd17cb9,0xbbb5e042, +0xbbf6a81e,0xbc1fb42e,0xbc3ab70a,0xbc47e661,0xbc47d95f,0xbc380aa8,0xbbf26ff0,0xbc1d8b5b,0xbc1d73f1,0xbc102246,0xbc1eade9,0xbc0b7b6c,0xbbb2fca3,0xbb9f9eab,0xbba55da5,0xb6f9d9de,0x3b09aa22,0xba0b7483,0x3ad74355,0x3b6e5b05,0x3b3d49ad,0x3a78dad7,0x3b2411f9,0x3b71e652,0x3b5a33b0, +0x3c098fdf,0x3bd5bffc,0x3b0b851e,0x3a9c5d96,0xba7e995e,0x3af82ac5,0xbaf75ec9,0x3b4f39da,0xbb21a006,0xbbea4778,0xbbd5ea66,0xbc28e252,0xbc6ef5b3,0xbc97d514,0xbc9962a5,0xbc8ef6f2,0xbc5213f0,0xbbda4a71,0xbc263aaa,0xbc25be9d,0xbc1f0911,0xbc40e08d,0xbc2cb1b1,0xbba57344,0xbb50cb79, +0xbc34cbd4,0x3bd71ae4,0x3c7058b5,0x3bf8c1b0,0xbaadea0f,0xba8a405a,0x38b90b3b,0x3b2cec95,0x3bdcddaa,0x3c17f920,0x3c1136ab,0x3b08cbd0,0x3a933edd,0x3bbdd374,0x3b156e02,0x3a82202e,0x3b851ca2,0x3a953132,0x3bce225b,0x3b210828,0xbbd5f4fe,0xbb5ba939,0xbb8f39aa,0x3a83fc4d,0x3b0558d9, +0x3b6078e0,0xbc5b7298,0xbcb12034,0xbcb66135,0xbc8b3ba6,0xbc4cabcc,0xbc59a608,0xbb1aea29,0xbacf92d7,0xbc1360d0,0xbc22ca6a,0xbbceb0a4,0xbc9a510a,0xbc894e70,0xbc20b766,0x3bd40cf3,0x3b6d2929,0x3b1e8978,0x3ba77472,0x3af38f92,0x3ac1bccd,0x3bad659b,0x3be82bcc,0x3bc5dcb4,0x3b001874, +0x3b3d0cea,0x3b2176d5,0x3ae1e213,0x3a26b5c3,0x3b615b8b,0x3a82d0eb,0xbbb2c2e7,0xbb7c0f16,0xbb915bcd,0xba5e8554,0x3a38e93e,0x3aed51ba,0x3abf7888,0x3af0326e,0x3b5c0a90,0x3ac716a6,0xb9ff5625,0xbb5430a9,0xba3145bd,0xb99bd631,0xbb40155f,0x3b240d2c,0x3c1722a2,0x3bc4700f,0x3c09d129, +0x3baf7370,0x3bbd4f44,0x3ba29b0f,0x3b9e35b8,0xba459976,0x3afeba25,0x3b06a0d0,0x3ab32543,0x3a9076d6,0x3adfc8f5,0x3b6ae453,0x3a2fcb3e,0xbb45efcb,0x392e258f,0xbb3e1071,0xbafd02e8,0xbb6484ac,0xbbdae002,0xbb21ee80,0x38cbce4f,0xbc0357e6,0xbc4d18e9,0xbc6575ba,0xbc654229,0xbc577477, +0xbbd6a239,0xbc890c38,0xbcbc652b,0xbcb5fb97,0xbcb3b939,0xbc679134,0xbbcc0cb6,0x3ba0eb06,0xbb915af9,0x3b12fe82,0xb8c4ba0a,0xbb79913d,0xbb394cbd,0xbb4fff08,0xbb20db43,0xbb45647b,0x3a834762,0x3b058fcf,0x3ab09ae6,0x3b35bdcb,0x3b1fca81,0x3a009602,0xb9cc237a,0xb7b75c23,0x3914e485, +0xbad19f20,0x3b0326dc,0x3ac3a7c4,0xbab1bd48,0xbb060777,0xbb58d383,0xbb93f547,0xbb87001e,0xbb78d767,0xbba0ded3,0xbb6bf1dd,0x3b3d31ae,0x3a34a8f8,0x3b0b9154,0x3b89767a,0xbb05247a,0xbc0411a3,0xbc7cd4f6,0xbbc04d0c,0xbc838ca0,0xbb8cd7e8,0x3ab2db9f,0xbbe6e4c7,0xbc04d5bd,0xbc17d886, +0xbc10c59d,0xbbda3b25,0xbb6be200,0xbb446d47,0xbaed729b,0xbae96727,0xbade5301,0xbb3c79d2,0xb9680261,0x39eaf95e,0xba24fa98,0xba0e90df,0x3b017de0,0xba229fd0,0xbad5cbd4,0xb9ea895f,0xbac8141e,0xb9b1d7bd,0xba8720fe,0xbb362ace,0xbb907adb,0xbbcb8ff3,0xbc09f50f,0xbc471f80,0xbc75b941, +0xbc962c16,0xbc7182a6,0xbc3c2dfe,0xbc3848a7,0xbc4cd110,0xbc34eb72,0xbbd9a8ff,0xb89018c3,0xbb8cc0d5,0xbb971675,0xbc0a69c3,0xbc3553d6,0xbc25cd7a,0xbc22155c,0xbc099b68,0xbbfd6c17,0xbbf04408,0xbbce347a,0xbb69d706,0xba6b527b,0x3a80215d,0x3ac9f291,0x3b128707,0x3aeb0f86,0x3b0021e2, +0xbad3d8fd,0xbb4e1088,0xbb6450b2,0xbae146c1,0xbab42494,0xbb05b398,0xbb6c9f52,0xbb888a5e,0xbb861a0f,0xbb997219,0xbbf248ec,0xbc66277e,0xbc55c7ee,0xbc5a98c3,0xbc62ab7a,0xbc3127e5,0xbc42043a,0xbc1f15a3,0xbbdf94a0,0xbbf7b309,0xbba2cbb5,0xbb9c2bab,0xbb7015b5,0xbb4d5349,0xbb25440a, +0xbba7bae5,0xbb784abf,0xbba4c74f,0xba130e3b,0xba86f19c,0x3a45bcae,0x3a285146,0x3b31d934,0x3b1d9202,0x3b4d7702,0x3a48b7e9,0xba72839c,0x39aea631,0xb8d85566,0x3a3d4d88,0x3ab079ac,0x3b37e404,0xb9766220,0xbb3fd445,0xbbbc4ea1,0xbc017936,0xbc1beac4,0xbc3802a9,0xbc355f7b,0xbc37f23b, +0xbc4504cc,0xbc366702,0xbc08f4e2,0xbc17bc08,0xbb2abaa3,0xbbfc4bb0,0xbba7874d,0xbb987526,0xbbcbd757,0xbbaaf637,0xbbce7418,0xbbab3114,0xbb2fd56d,0xbb7f13c8,0xbb7e548c,0xbb2cb154,0xba1681c1,0xba07e931,0xba9b9e76,0xba3e543d,0x3b2c952a,0x3a3d7b50,0x3ad6dca8,0x3ac471ca,0x3acb9821, +0x3aef0444,0x3aee33e5,0x3b110a41,0x39a19ac8,0xba72bb7d,0xbb0f5ce2,0xbb5a8613,0xbb978026,0xbbc55d0f,0xbbda98c4,0xbbeadabb,0xbbf49114,0xbc0103ae,0xbba33e5f,0xbbd598dc,0xbaff4c9a,0x3ad9ec4f,0x3b9c9b61,0xbb660b8e,0x3ad192f3,0x3bade22a,0x3bc69fbe,0x3bd5980e,0x3bcd2c14,0x3bf16544, +0x3c018160,0x3c03f51d,0x3b54c9d8,0xbaabbddb,0x3bf3db25,0x3b7091df,0x399251f5,0xbb2848da,0xbaeb8c78,0xbb0008e9,0xbaeb1f3d,0xbaeead71,0xbaefdd26,0xbad2ac05,0xbb1261a2,0xbb3169e4,0xbb558c35,0xbb7adc37,0xbb8dee77,0xbba0e4e5,0xbb9bfd2a,0xbb9ecbc1,0xbba381ec,0xbba9b220,0xbb7a8c7b, +0x3b6f5a5c,0x3b4ef68b,0x3be45b3f,0xbb4704a9,0xbc05112f,0xbc0764d3,0xb98e0858,0xbbdf3507,0xbc1272ce,0xbc12cd1e,0xbc0eca98,0xbbeeeacb,0xbc05a7b0,0xbc05ded0,0xbc0008fe,0xbbf16c80,0xbafd5d14,0xbc1297d5,0xbc001941,0xbb6e8181,0x3bbe50f5,0x3b64eacd,0x3b81d19b,0x3b811958,0x3b622857, +0x3b488df4,0x3b1ce208,0x3b2c8626,0x3b406e0c,0x3b800c0d,0x3b67b13b,0x3b693569,0x3b80a87b,0x3b444db6,0x3b2d97a1,0x3b156aa2,0x3b488773,0x3b794d90,0x3b9a3cda,0xbc04d97c,0x3b32439b,0xbaf710eb,0xb9f3c140,0x3afe624f,0x38f4bdf5,0x3b5cebbe,0x3b21d52f,0xb9ba67fe,0x3b3138ad,0x3b4dd9eb, +0x3ad52882,0xbab2c9e8,0xba90398b,0xbb08a022,0x38edbb99,0xbbdfcb20,0x3b41d566,0x3bae5546,0x3b90f270,0x3b9b67a8,0x3b5e3ee6,0x3b1ed1a5,0x3a9f9bfe,0x3ac9cbf0,0x3b2394eb,0x3b9ca585,0x3b856c0d,0x3b77c391,0x3b7bce7b,0x3a9ba9bd,0x39bb11bb,0x39b99251,0x3ae2c5cb,0x3bc1768b,0x3bf4b13b, +0xba02b31b,0x3adb2290,0xbaa15d23,0x3aa9e2db,0x3afd894b,0x3a811f9e,0x3aaa3ac1,0x3ba73240,0x3ac5a0ed,0x3c01c344,0x3b45ee32,0x3b83042f,0xba915014,0xba3fc453,0xbb02c50a,0xba521c00,0xbb1dc82e,0x3ae7cc3c,0x3bf2c6f9,0x3bb66e3c,0x3bc28533,0x3b530879,0x3aa533c6,0xbafa16b3,0xba5cbb08, +0x3a44b583,0x3bbacaad,0x3b892dbe,0x3b85a6cd,0x3bb76aa4,0xb9cbfbc6,0xbad6899e,0xba95cdac,0x3a427ea8,0x3bc2b8a7,0x3bc1ec06,0xbb0dd8b6,0x3b0f4558,0x3b11f5c8,0x3ba22472,0x3ba4b550,0x3b0079b4,0x3b8fd46f,0x3b8cd284,0x3bc24986,0x3c0af8b0,0x3c0515b2,0x3bae069c,0x3b4748d8,0x3b1d8724, +0xbb29ec36,0x3ac24476,0xbb31652f,0x3ae55a6f,0x3c079902,0x3bc3ebf9,0x3bcfb206,0x3af94a2a,0xbaf69854,0xbb9f2e88,0xbb5292e5,0x3abf2598,0x3c0bbf41,0x3bad47c9,0x3b7b77b6,0x3b876596,0xbbc4c522,0xbc08435c,0xbb948db1,0xbae3bf9a,0x3c3ba993,0x3c1d8a7f,0x3ba140c3,0x3b7ab138,0xbbba6052, +0xbbc24ff8,0xbaa833be,0x3b0016ce,0x3bb0e87e,0x3c125eb3,0x3c2cc093,0x3b4871bf,0x3ab0a0d0,0x3b936e36,0x3ada1e67,0x3b4a6c2e,0x3b4aa39a,0x3bd350f2,0x3aebf71c,0x3b5383c1,0x3c34be93,0x3c1ce764,0x3c607671,0x3c2217b7,0x3c2d1ee3,0x3c480059,0x3b3925a7,0xbaca8cd2,0xbaebbc74,0x3ba1ca0e, +0x3c190ea6,0x3b9ecf56,0x3c6a455b,0x3c64e965,0x3b9d7ac0,0x3b9484f4,0x3c0a1239,0xbc1a4bc0,0xbcc7e49d,0xbc53d34e,0x3c436ef7,0x3b9e5555,0x3b843bd9,0x3bac231a,0x3b3efe65,0x3b00f59a,0x3ba81271,0x3bf7bbc5,0x3bd513a5,0x3b470bb6,0x3b8d0af5,0x3b47fec7,0x3a3b42ce,0x3a18498b,0xbb02ef63, +0x3afc6092,0x3b90c6b6,0x3b942108,0x3c395907,0x3c2ebd50,0x3c002a86,0x3b2cbb11,0xb8ce5827,0x3a99e5b3,0x3bee2af2,0x3b32825b,0xbaf72c79,0xbc01ee7c,0xbb2f469b,0xb990080a,0xba8e915c,0x3beb6c90,0x3c533a8d,0x3c35118e,0x3c033a67,0x3c0e83d3,0x3b5be4cf,0x3bb8895b,0x3b527c0a,0x37e6a2b8, +0x3b123422,0x3b63a3eb,0x3adb9926,0x3b12a456,0x3b2cc7c9,0x3b753627,0x3a53ead9,0xba2b9e28,0xba73de2e,0x3993dca3,0xbb294348,0xb93b6815,0x3af15208,0xb955afbe,0x3b310622,0x3b8ca553,0x3c03f27d,0x3c279a8b,0x3c448698,0x3c2eee3e,0x3c3bcbf8,0x3bbe0a03,0x3b817cc1,0x3b700f4b,0x3b384976, +0x3bb3dbfc,0x3c183b77,0x3c2dc3d8,0x3b1e83a0,0xbb280ef7,0xbb5ab3b4,0xbb0c22dd,0xbb70ce2f,0xba0ae622,0xba9dc2f7,0xba93ba76,0x3ac1057f,0x3b1c9180,0x3abd3e81,0x3b5dc894,0x3b2e03fa,0x39352ba9,0xb8fb257e,0xba472a25,0x39ff533f,0x390bca57,0xbafe9c3a,0x3b5252bd,0x3be6c043,0x3be36360, +0x3be797ab,0x3b808da6,0x3ac8dadb,0xbb0af084,0xbb9f291c,0xbb8d6755,0x3ae28946,0xbac5c89a,0x3b647c64,0x3c82b059,0x3c501fef,0x3c3a9ed7,0x3c1d7dc8,0x3b71ff32,0x3a86880e,0xbbfb65eb,0xbc6e9276,0xbc2cc9b7,0xbc09d810,0xbc2a6245,0xbc013e6e,0xbbc8f4b3,0xbbaaeb2a,0xbb0f102c,0xbb2527e5, +0xbacff560,0xbaceb6a9,0xbb45ae7c,0xb993c551,0x39a2d54c,0x3a1081e8,0xb98dd328,0xbb2fa200,0x3aa8b919,0x3a20be44,0xba81a249,0x384fa401,0xb924f68b,0x39a8f9cf,0x3a6b2a1c,0x38d1e60e,0xba43d1a0,0xbaaceb33,0xbb3663a3,0xbb802b41,0xbb9401ee,0xba1e6d28,0x3b0a7210,0x3ba1b4c7,0x3a72f2d5, +0xbad1a14e,0xbbbee296,0xbc187a67,0xbc0147c3,0xbc28eec2,0xbc33e9e3,0xbc2ae98a,0xbc31f304,0xbc091407,0xbbe8803e,0xbbba7cc3,0xbbdb0ef3,0xbbb4b203,0xbb6260f1,0xba0f2a8a,0x3a377c39,0x3ad3b2c9,0x3ab69c39,0x3afd5dec,0x3ac8646b,0x3b136188,0x3b14cd3f,0x3ac7f37d,0x3af2fe76,0x3af2699d, +0x3ae04400,0x39cae6c6,0xb98ae78b,0xbaa5b5bf,0xb851efc3,0x3ad556a3,0x3b3a9807,0x3b01853b,0xb99fd4cf,0xbafb8d0a,0xbb552e97,0xbb4e7461,0xbbbb9809,0xbc1005bf,0xbbccf695,0xbbe346ad,0xbbb448c6,0xbb9819a6,0xbb54df7f,0xbbac7078,0xbbb26c4d,0xbbfb89d8,0xbb8e5a92,0xbb75b7aa,0xbb05b1d5, +0xba85008c,0x3a5c167b,0x3b214dd7,0x3af8f344,0x3a0bd1dd,0x3b2615a3,0x3b745023,0x3b164aa4,0x3b052d4e,0x3b282c3e,0x3b540ccd,0x3b88636a,0x3b1f45e5,0x3a52e797,0xba81da04,0xbafab16c,0xbb511fda,0xbb7ba007,0xbb9521c0,0xbb988d64,0xbb93562e,0xbb9b7761,0xbb9f4672,0xbbd0c714,0xbc2d38d6, +0xbbc3b99b,0xbbf99eb4,0xbbe912da,0xbbb80327,0xbbb33a09,0xbb7dae67,0xbb6a006d,0xbb982c1e,0xbb4a5768,0xbb0d0d64,0xbb107e27,0xbb16aa24,0xba6e4bce,0x39b5224f,0x3ad9f07b,0x397be179,0x3b8d96d6,0x3b794244,0x3b77aa49,0x3b79f0e7,0x3b6fa3a2,0x3b5ed5de,0x3b59d5eb,0x3b5aef1f,0x3b67f17c, +0x3b683810,0x3b5ff28b,0x3b568916,0x3b469931,0x3accdcf8,0xb93d8f7c,0xbaef9351,0xbb6c9146,0xba51a557,0xb9ec7d0b,0xbb978a1a,0xbbe83bf8,0xbbe5d60d,0xbb40f783,0xbbd1accf,0xbbe6a235,0xbbe862de,0xbbe46062,0xbbc95990,0xbbd9a6d2,0xbbde8ffd,0xbbd66d63,0xbbad37d7,0xbabd54f2,0xbbba58a6, +0xbb8d1bcd,0xbaaabaf2,0x3b468f59,0x3b009bba,0x3b105f94,0x3b0d106f,0x3b0d47e0,0x3b0fd60b,0x3b0facfd,0x3b09c939,0x3afe118b,0x3aed1ee2,0x3adc2e73,0x3ac8248d,0x3acade06,0x3a751905,0x3a1a99fe,0x397f201b,0xb920247b,0x3aafaa0c,0xba0426c3,0xb9924875,0xbad177fb,0x3be3375d,0x3c16bebe, +0x3ba3c256,0x3b9838a2,0x3c0ae456,0x3bd1a769,0x3be73ed7,0x3be47ea5,0x3bb3f1f7,0x3bd9de42,0x3bd3f04d,0x3bb7dba7,0x3c05dd38,0x3b9af391,0x3b8b4e52,0x3c01744f,0x3bcfb491,0xbb038263,0xb8181f6e,0xb9878e38,0xb9fab549,0xba7cd941,0xbaa2a535,0xbac4f011,0xbaabff6e,0xba93a4f2,0xba10593f, +0xba2639ac,0xb9fcc659,0xb93010a4,0xb9cf2ef5,0xba06e3a4,0xba51ee3e,0xba2f56af,0xbaa62553,0x3ae7eb9d,0x3c08de8a,0x3ae0b0b2,0x3b915faf,0x3b98c3e6,0x3b43b1e0,0x3b07cd67,0x3ac85a1e,0x3b5cd8bf,0x3bbc11b3,0x3b98678b,0x3b60f1ee,0x3b850795,0x3b4548aa,0x3ac19deb,0x3b1d8303,0x3a94ba03, +0x3bc99852,0x3a94591b,0xb6da312a,0x3a821698,0xb9d8332d,0xbb013f5f,0xbb51ce50,0xbb655d80,0xbb47b3cc,0xbafb139a,0xb9389355,0xb986a154,0x39421f80,0x3a3d4a2d,0x3984eed4,0xb99e9a3c,0xba9763c1,0xba232353,0xbaaeac80,0x3ba0dd48,0x3c0e0c1d,0x3ba6afd1,0x3b85433d,0x3b964928,0x3b9c4b5f, +0x3b0c4de7,0x3bb5b28a,0x3b57997f,0x3bdcc832,0x3b7c17c0,0x3be20597,0x3b81228d,0x3b735c7d,0x3a455244,0xb95b9c89,0x3ac11789,0x3b988283,0x3b1bd2bb,0x39fa0e89,0x3af9b719,0x38a63bcd,0xbb20311f,0xbb8dcf2f,0xbba21743,0xbb94a031,0xbb535ead,0xb9ba137d,0xb9c03643,0x3a1e6137,0x3b0076fd, +0x3a853d2f,0xb96ab954,0xbb149076,0xba53e40a,0xbb29429a,0x3bb34cfd,0x3bd3310b,0x3b50fa4d,0x3b2415a3,0x3bcba37a,0x3b951497,0x3a82fd10,0x3b4e0aa4,0x3b86a46c,0x3b6b1580,0x3c0aa8b0,0x3bf79891,0x3b5f3d52,0x3adc1b4f,0xba8c0005,0x38e00389,0xbae1cc4b,0x3b6ad293,0x3adb3bc2,0x3ab7bdaf, +0x3b7a830a,0x3a146e2c,0xbb8977ce,0xbc04b916,0xbc09f5eb,0xbbdf7e7b,0xbb2b5b7f,0x3ade476d,0x3ab8e5a2,0x3b358555,0x3b8d83d0,0x3b091d8f,0xba261a5d,0xbb4901be,0xba38d4bf,0xbab15d13,0x3c63649a,0x3cb1fd77,0x3c658bf1,0x3ae764a5,0xbb029159,0xba9b5ddb,0x3b4cacbf,0x3b9cea15,0x3c08db1d, +0x3c40ca96,0x3b4d1596,0x3a27b0a7,0x3b976a71,0x3afa1fd5,0x3b0230cb,0x3baec0d7,0x3b9d605e,0x3c17e6a4,0x3be8e42a,0x3a7bd655,0x3ab8e241,0xbac89109,0x3b500b8e,0x3b16a778,0xbabdcb75,0xbc4311c5,0xbc8ab419,0xbc872547,0xbbed4088,0xb9fe5731,0xbacb5038,0x3c0dd3b6,0x3bf2b9f7,0xbb8ddac4, +0xbae9919e,0xbbe400fa,0xbc40c378,0xbc9c71d6,0xbc653d96,0x3c5ade10,0x3bdaffd1,0x3b505269,0x3b98c9c4,0x3b2081b4,0x3b0fc1e6,0x3b8af358,0x3beb3b70,0x3bd638b9,0x3af1f274,0x3b1ed371,0x3b0b1032,0x3b4b961d,0x3aa1781c,0x3b3a7bb7,0x3b46dc7e,0x39d18c42,0x3b95beca,0x3bf3f4bf,0x3beea071, +0x3baf1f00,0x3b7d2ad7,0x3af22394,0x3b2c1472,0x3bd869a5,0xb9f7fbd5,0xbb215594,0xbb1be9c0,0x3bc2448c,0x3be49705,0x39b848a3,0x3b43d057,0x3c5a9ff4,0x3c6d6214,0x3c6ae06d,0x3c245a0d,0x3bf322dc,0x3ba81be1,0x3bb25c83,0x3a6947f6,0x3b4c4790,0x3b38b0d3,0x3ac07592,0x3acd768e,0x3af2de78, +0x3b5ba3ee,0x3ae1fa74,0xba76adbb,0x3ae1a4c0,0xb931e503,0x3ad97c1d,0xb9e8fa08,0xbb94b893,0xbae264e9,0xba7c14fc,0xba27a535,0x3aa178f0,0x3b589aa1,0x3a8c16f2,0xbb1ef305,0xba0eebac,0xbc30ddb7,0xbc27785c,0x398b6248,0x3bc063c2,0x3c3f129b,0x3c603985,0x3c48a77c,0x3b7e3ae7,0xbb000832, +0xbb6b21c6,0xbb62afb2,0xbb103251,0xba44ade3,0xbabaf743,0xbabbec6c,0x3a949e72,0x3b0df546,0x3afce738,0x3b4c9927,0x3b142fd7,0x39273295,0xb9de3ee7,0xb8a50b17,0x3a1fbab3,0xb9e46606,0x3b22de98,0x3b1b5c62,0x3ad6d71a,0x3b66703c,0x3b673207,0x3b70dc27,0x3b39bb27,0x39970a71,0xb967bfc8, +0x3b2f85fe,0x3c30a74a,0x3bf4b7ac,0x3c1bf737,0x3c44f89b,0x3c844450,0x3c83dade,0x3c5494cc,0x3c3494ef,0x3bad594f,0x3bc588d3,0x3aaabbbf,0xbb557da2,0xbb8d0147,0xbbad127f,0xbba469b7,0xbb646ea9,0xbb143625,0xbb123585,0xbb07df75,0xbb1a12d2,0xbb0f63ef,0xbb37b18d,0xb9935a24,0x398eae89, +0xb8f73210,0x3a8200bb,0x3b53f981,0x3a9f2721,0x39b07a88,0x39f535c5,0xba722abd,0x3a383aca,0x3af47a06,0x3b84f4e7,0x3b891f11,0x3b8c5c4f,0x3b862d8c,0xb96b4b40,0xbb23384d,0xbbc1e7ea,0x3a56371e,0x3ba93135,0x3bb2a1de,0x3be98934,0xbb099921,0x3a596965,0x39a81ba6,0xbb093044,0xbbd5a385, +0xbc07f249,0xbc3056db,0xbc28728a,0xbc196794,0xbc01c658,0xbbef8dd6,0xbbd19037,0xbbb9007b,0xbb91d2eb,0xbac3b0ee,0x3a90428e,0x3b5c9ecf,0x3b102ca0,0x3aa1114d,0x3a874626,0xba174c98,0xba52d46b,0xbaa4ad3f,0x3a9e1698,0x3b1d6259,0x3b40ac24,0x3a2a7cd0,0xbad4ef99,0xbb6bf4b3,0xbb5962a9, +0xbb2e75dd,0xbb1c8a05,0xbb77c60f,0xbb828475,0xbb3e0bea,0xbaeb38e6,0xbbb5e871,0xbb846de4,0xbaf6790d,0xbb175f7e,0xba95ad85,0xbb05170f,0xbb35187c,0xbb5fb11c,0xbb7a2dc1,0xbbce59a7,0xbbbacd16,0xbbdc745e,0xbb7379f0,0xbb826255,0xba54108a,0x3a07c321,0x3b6ea7f1,0x3b59a36f,0x3b8f42e3, +0x3b2f1bbd,0x39c9380c,0x3a3e78f5,0xb9c73ccb,0x3956e68f,0x39d754c4,0x3a948f09,0xb7b1c9bd,0xb9fed480,0xba84d03d,0xbb25deaf,0xbb8ef893,0xbbc2617a,0xbbbbd25f,0xbbb05a0e,0xbbbd30d8,0xbba66c65,0xbbb24f34,0xbbc344a1,0xbb9dd903,0xbbd4a974,0xbba94c94,0xbbaca0d2,0xbbbd6d72,0xbbac03b9, +0xbbab859c,0xbb699790,0xbab0d7d3,0xbae202e2,0xbb02dc8a,0xba6e14b9,0x396666d7,0xb96069c3,0x3a240288,0x399fdfac,0x3b50eed0,0x3a217738,0x39e15417,0x3a4b56ba,0x3a2bc8c0,0x3a461544,0x3a21a3b6,0x3a23f272,0xb9a47755,0xba5c0e65,0xba8c19df,0xba8a736c,0xba43ec98,0xba292be2,0xbad55233, +0xbb2ccdde,0xbb68508c,0xbb8c8688,0xbb3b88c7,0xbb78ae8a,0x3a145589,0x3af17cdc,0xb7edc11c,0xb950092e,0x3b02fdd7,0x3aa35708,0x3adf5710,0x3af57ffd,0x3ab6cc80,0x3b0ede73,0x3b256666,0x3b21dc4a,0x3b7c9750,0x3ac9ec51,0x3b3adfb1,0x3b866ad1,0x3b254443,0xbaec76e2,0xba7053e3,0xba93f070, +0xba962686,0xbaa009c9,0xbaa7cc94,0xbaa45fb9,0xbaab4fee,0xbab10faf,0xbac45817,0xbad59136,0xbaec9eb3,0xbae14ca0,0xbb0525f0,0xbb0f96e6,0xbb1eec81,0xbb2e150b,0xbad41646,0xbb2ed98d,0xbb0b4192,0xba368776,0xbbd366f0,0xbbbb2e7c,0x3a96644a,0xbbc5c997,0xbbbb59e3,0xba71a7bf,0xb9cd3220, +0xb8fb7cfd,0x3a69dd4a,0x3a3e5c43,0x3a5e0ca3,0x3ac18928,0xbbc8ece4,0xbbe1b873,0x3a90a1fc,0xbbc1ecaa,0xbbe23bcd,0xbad3f5d7,0xbb049e6c,0xbb1c7e71,0xbb2d3871,0xbb501688,0xbb6870f3,0xbb845eb6,0xbb6ca550,0xbb5c419a,0xbb366ae2,0xbb515199,0xbb565d01,0xbb3e6222,0xbb7ffffd,0xbb7e78e5, +0xbb40fdaf,0xbb3b2674,0xbaf2ad21,0xbb202484,0xbb5b7ac4,0xbb2d7d9e,0xbb814f84,0xbac238a6,0xbab7f1e3,0xbb2f4ef5,0xba9e7670,0xbb0e6424,0xbb4e33f6,0xbb11f1a1,0xba951f44,0xbb012d46,0xbb34ba22,0xbb59c06f,0xbbb4a13f,0xbb660467,0xbb513f10,0xbb673fea,0xbac68b30,0xbb4d9c99,0xbb829b21, +0xbbb1c85b,0xbbc86ca2,0xbbd956e7,0xbbb52db5,0xbb986a31,0xbb6ef209,0xbb945c04,0xbba759f9,0xbb9a218a,0xbbf279d6,0xbbe8f886,0xbb86f286,0xbb80483f,0xb9bad91f,0x3ada2560,0xbb19a63f,0xbaa356f1,0xbaff14e4,0x396bd15b,0x3a864618,0xba82567a,0x3a931301,0x3b605ab1,0x3a1beffb,0x3b847ed3, +0x3b0e12d7,0x3abf4d15,0xbb0a934d,0xbb65136d,0xbb809df7,0xbb552569,0xbb81f67f,0xbb1e4962,0xb9bfda19,0xbb26df07,0xbb9a2fe7,0xbbf8c96e,0xbc1a5af1,0xbc3979d2,0xbc143261,0xbbfb469a,0xbbaa1ce2,0xbbde2f6c,0xbbfcd0b5,0xbbbc9a98,0xbc404f23,0xbc2e44bb,0xbb928e5d,0xbb9d66ba,0x39d84150, +0x3aecd98c,0xbb1bf3e2,0xba950819,0xb934fbe8,0x3b8f5947,0x3ba6c8a4,0x3afbc8be,0x3b87ec19,0x3b89dc98,0x3bb9c8b3,0x3c0f9ae2,0x3bfbfd1a,0x3ba8a1e9,0x3ab89eba,0xba787b9e,0xbb8879b3,0xbb1117d9,0xbb3fc0d7,0xbae627dc,0xb81aecb9,0xbb826904,0xbc06b747,0xbc55006d,0xbc818482,0xbc83c330, +0xbc44b56d,0xbbf9fefd,0xbb934615,0xbc090175,0xbc2a487b,0xbc103449,0xbc93b0e4,0xbc844f4a,0xbba377d3,0xbb99fc25,0xbab1aa4d,0x3b787e9f,0x3bdba318,0x3bcdd1e4,0xbad25e5c,0xbbdc579e,0xbba007cf,0x3a16d792,0x3b206ad3,0x3bd81715,0x3c4c64a2,0x3b5568e6,0x39a0593d,0x3b47648a,0x3a32598b, +0x3af7e4e9,0x3b2eca46,0x3b60dc35,0x3a9d4719,0xba46a189,0x3a8dbc6b,0x3b249865,0x3bb6b717,0x3ba96f24,0x3ba2694c,0x3b779324,0xbbb3cb9e,0xbc2d57ff,0xbc512b22,0xbbbd3a0e,0xbb85bacd,0xbc4efeb5,0xbb1492f0,0xbae75b8a,0xbc1c9cf8,0xbbeb9bcd,0xb98b1651,0xbc3a5596,0xbcf2656f,0xbc9fbf7d, +0x3c172d7c,0x3b9f5f49,0x3b84962a,0x3b6bfa3e,0x3b27e377,0x3aff6217,0x3b68b5f4,0x3be8064b,0x3bd4a95f,0x3b28254d,0x3b02faf2,0x39c92027,0xb892e332,0x39f6c089,0xb91e31a0,0xba56bbc5,0xbb76dabb,0xbbb00ef9,0xbb7ee7ce,0x39257e72,0x3a4ac485,0xba66b898,0xba8eb7f4,0x3a8c2906,0x3be608c2, +0xbb6759d5,0xbc051562,0xbc144bcb,0xbb854856,0xba4fc2d7,0x3adffc20,0x3b10fb63,0x3c3e0947,0x3c720380,0x3c6f0a46,0x3c4e7bad,0x3ba90946,0x3b8d3736,0x3b5fa505,0x3ac9dc7b,0x3b334b3f,0x3b53716b,0x3a9e40cd,0x3abece9f,0x3ae8d324,0x3b4c8706,0x3a5af84f,0xba9e397b,0xba26c7b1,0xbab46104, +0xbb85f1ab,0xbb5a9e40,0xbaa01664,0xbaccddd8,0xba8dc8eb,0xbab0940f,0xbaf45d1b,0xbb565f5a,0xbb8e4f17,0xbb9a55e8,0xba072a87,0xbc010285,0xbc5ccf60,0xbc9ddd36,0xbc7f930d,0xbc2cb3be,0xbc013da4,0x3b9e0667,0xbc245b15,0xbbc6c01e,0xbbe699a9,0xbbbda77a,0xbb05b88f,0xba972e55,0xba884fc7, +0xba4be99b,0x3a44cbcd,0x3af0199a,0x3ab1dd11,0x3b23ad54,0x3adcd704,0xba74e38c,0xba90fb40,0xbadf1a64,0xbaa9a742,0xba484c42,0xba819e01,0x3a99d894,0x3a39d803,0xba3eff9d,0xbaa36a0d,0xbaf93398,0xbb28cc55,0xbb9ecc51,0xbbe4046c,0xbbb29039,0xb7d4f9e7,0xba8f540b,0x3b209e35,0x3c0f2040, +0xba5185c5,0xbc08328a,0xbc87cc8c,0xbc519fab,0xbc7bc3a7,0xbc2b92a6,0xbbc82e4a,0xbbe5fefa,0xbbe72063,0xbbd350b2,0xbb9c2f73,0xbb9ae99c,0xbb8ca215,0xbb4937aa,0xbb7c0284,0xbb4ed5e7,0xbb3bb320,0xbb661b54,0xba93427b,0xb9bb8822,0x3a106916,0xba9d6fe9,0xbb212f0f,0xba5599dc,0x3a0c9324, +0x39bc1dbc,0xb8c9330f,0xba5c115f,0xbb13b4d8,0xbb8718eb,0xbba51e8b,0xbbe90056,0xbc30de5b,0xbc1a488c,0xbc389545,0xbc834974,0xbc7c0a23,0xbc6d065c,0xbc54b50d,0xbc81de93,0xbbdca459,0xbc11607f,0xbbad0fda,0xbc00d088,0xbc36b9f4,0xbc4c9339,0xbc454a16,0xbc3f5f75,0xbc1db0a6,0xbc01aaf8, +0xbbd6848f,0xbbd5d2aa,0xbbbf153d,0xbba1ed35,0xbb365135,0xbacaf6da,0x39eaf34f,0x3a4cb23e,0x3aad7dea,0x3aaa76a1,0x3a0610ae,0xba7d9800,0xbb17bfec,0xbb4c57ba,0xbb326ad0,0xba840c6e,0xbaa33236,0xba306225,0xb9115d65,0xba8bc5b5,0xbafac79e,0xbb6306c1,0xbb2cb5f9,0xbb722087,0xbb80ebb0, +0xbbc7704e,0xbb941cc9,0xbba6dfe7,0xbbe92762,0xbbc23840,0xbba4dcd9,0xbba818c3,0xbbb0bc86,0xbbb6a806,0xbbd87cf9,0xbbedb172,0xbc13838c,0xbbebb274,0xbbc47b18,0xbbb60b58,0xbb35da60,0xba341a44,0x3b04bd91,0x3a907b70,0xb9611796,0x39a65708,0x3a6117f7,0x39b33183,0x39d72a8e,0x39da0fc0, +0x39bf4bdd,0x39e89a60,0xbac6918b,0xbb5726a1,0xbb9f144c,0xbbd6644a,0xbc033475,0xbc1b60e9,0xbc0d0748,0xbbfaa8e7,0xbbd431de,0xbbc46d11,0xbbbc1c47,0xbbe22130,0xbbe56826,0xbbdd6f76,0xbbfd8142,0xbbecb451,0xbbe8134e,0xbbe9d0b3,0xbbceac9e,0xbbd3108f,0xbbd69fd4,0xbbca811a,0xbbaa72d7, +0xbbaff2b7,0xbb893167,0xbb4df246,0xbb4ff4b6,0xbaba2885,0xb9b9c9a5,0x3a77b771,0x3aa31c50,0x3a6a42c6,0x3a5f8551,0x3a38d676,0x3a16667f,0x3a1cad2e,0x3987d2fd,0xb90787d4,0xba4de623,0xbab9c94b,0xbb0b81df,0xbb4fa272,0xbb631958,0xbb8b8279,0xbba07598,0xbbb76b50,0xbb6c033a,0xbb678e18, +0xbbcf2656,0xbbc4243c,0xbb1080e7,0xbbc413e5,0xbbc179b9,0xbb47d2c1,0xbb3cef30,0xbb296db5,0xbaeec373,0xbaed72ad,0xbad2ce99,0xba972808,0xbbae27e0,0xbba55d8a,0xba22c16b,0xbb8a5cca,0xbb82ee5c,0xba58588d,0xbaac38e5,0xbaabc667,0xbaa6e285,0xbaaa9351,0xbaab18ed,0xbaa69176,0xbad9c0e4, +0xbb01b79b,0xbb13d314,0xbb28b8fe,0xbb3b6030,0xbb5040e1,0xbb569704,0xbb5a9990,0xbb5b4a27,0xbb663a19,0xbb4741cb,0x3b7ed5d1,0x3b55b133,0x3b9e2f52,0x3bca17f2,0x3b2dc633,0xbbc05ed0,0x3bda3c50,0x3b582ef1,0xbb805a61,0xbb69aeb7,0xbb6c8c1d,0xbb8c0aba,0xbb8af69f,0xbb93f8bf,0xbba49430, +0x3b2c7fe0,0x3bbb4205,0xbbe42f38,0x3afa35d5,0x3baee675,0x3b88e1d8,0x3b7a5228,0x3b8c2957,0x3b821538,0x3b6c3b51,0x3b5d30a0,0x3b4b3450,0x3b607dee,0x3b6de366,0x3b83d63b,0x3b877c08,0x3b8deed0,0x3b9c3c68,0x3b8a9c56,0x3b7a2970,0x3b3c22a3,0x3b5e4ccd,0x3b3837d6,0x3bd91fe4,0x3a69f25b, +0x3b9d9443,0x3b37528d,0x3b5fb8d7,0x3b9599f8,0x3b282ad7,0x3b94b5e1,0x3bbaca25,0x3bb5021f,0x3bcb1d85,0x3ba00857,0x3bafda09,0x3ae066d2,0x3a94d9f9,0x3b325585,0x3b0862c7,0xba168378,0x3baebebe,0x3bad2494,0x3bc8b4e8,0x3ba86323,0x3b82678e,0x3b4c1d36,0x3b313bba,0x3b6a9fdb,0x3b9526ac, +0x3bb64bb5,0x3bbee799,0x3bcb148c,0x3bded3f1,0x3bb6bda6,0x3b8a8a54,0x3af72c20,0x3b3ce03a,0x3b4f399f,0x3c0dd52e,0x3bf6463e,0x3bbb1d3b,0x3ae73f4d,0x3b862ea6,0x3b8cc232,0x3afd183a,0x3b937056,0x3b95216a,0x3bad159e,0x3baf5c21,0x3b8fb6ec,0x3ba4cb92,0x3ad168cb,0x3a4a72bc,0xb9321d1f, +0x3a8150fb,0x3b370f95,0x3b9a4735,0x3becd1ff,0x3bfb2f43,0x3bd40183,0x3b8fb4c8,0x3b3d7a00,0x3b039108,0x3b5e44a3,0x3b9d4c04,0x3bdd3b9d,0x3bf94cb0,0x3c0b82bd,0x3c27a704,0x3bf0eec3,0x3b95807e,0x3a0d41ba,0x3b13018f,0x3ac26055,0x3bf78b6d,0x3baa2322,0x3b8d7294,0x3ad2791e,0x3beb2850, +0x3bc63acb,0x3aacd279,0x3b8826ca,0x3b935da0,0x3b8fa305,0x3c015d72,0x3c0108f0,0x3b9bdb48,0x3ae6936c,0xba08cba6,0xbb0616ab,0xba6b3cf2,0x3a463ed1,0x3b861837,0x3c1476f3,0x3c2d7097,0x3c0d6469,0x3ba1e91b,0x3b19a4f8,0x3adaac91,0x3b917c7d,0x3c025202,0x3c299615,0x3c311659,0x3c3e4abc, +0x3c5c8081,0x3c097ffc,0x3b65647f,0xbae8d5bc,0x39e06a8a,0x3c22642a,0x3c864e7e,0x3c9ef475,0x3c6f3181,0x3ac9e8e1,0xbbaa9f83,0xbb84688b,0x3ae6eb83,0x3b29683e,0x3bdbacf5,0x3c54e2de,0x3b6d9f34,0x3951216f,0x3b3f8404,0x3ab915b8,0x3b3ed18e,0x3b8fc94a,0x3be3c367,0x3bf7632a,0x3c0b3807, +0x3c2093a4,0x3bf2d1a0,0x3bacf285,0x3bd27b36,0x3b8eedc9,0xbade8ff0,0xbbac9998,0xbbdfd3e5,0xbbb21b9b,0x3b96a3d6,0x3c312a49,0x3c083e65,0x3c819e09,0x3c560429,0x3994f62e,0x3ba74f75,0xbbadff8b,0xbbf3b1c9,0xbca1e32b,0xbc6d1a53,0x3c5fdad9,0x3c0d73e8,0x3ba79b34,0x3b77c874,0x3b2f8b25, +0x3b2e8b41,0x3b4ff7b1,0x3bdcdb69,0x3bda87ea,0x3b319de0,0x3b342bc0,0x3b134a27,0x3b64217b,0x3b0ee243,0x3a9441e1,0x3b59f8ab,0x3bb864b1,0x3c1b5944,0x3c7279be,0x3c523022,0x3c1237ba,0x3b946af7,0x3ab1dcf6,0x3b2801ac,0x3c0fdc6e,0xba9fefad,0xbb612080,0xbb00abf9,0x3be73aeb,0x3c12965f, +0x3b847c64,0x3b28514a,0x3c78eb7c,0x3c9840ab,0x3c8601b1,0x3c50cf30,0x3bc0c454,0x3b817388,0x3b98edd9,0x3b7a9f87,0x3b8a49a7,0x3b67f369,0x3adf1ef1,0x3aee1a76,0x3aebc3a4,0x3b35dd97,0x3b16f416,0x3a9a937f,0x3ab818c8,0x3ad205d0,0x3af3b3c5,0x3a717462,0xb9c95899,0xb9d7974a,0xb9956933, +0x3c01f0f4,0x3c6e0902,0x3c92a473,0x3c845ade,0x3c28e7af,0x3ba6983f,0x3987f4d0,0x3ba3f005,0x3c69db7f,0x3cdfcb11,0x3cf664e2,0x3cc4b46e,0x3c82013c,0x3be6b3ff,0xbbaec471,0xbbe90475,0xbb51826c,0xbaa0e622,0x3a8aebd4,0xba269373,0x398ca26a,0x3a23bc0e,0x3ab01a49,0x3ada09a7,0x3b15d690, +0x3aab811c,0xb923bb3b,0xb9d8e890,0xba3a907d,0xb848ecb6,0x3a1574b4,0x3a8cc421,0x3b1dee65,0x3b9370a4,0x3bf8ff11,0x3c161178,0x3c1c93dc,0x3bedec74,0x3b3ed899,0x3b6597ca,0x3bd20e75,0x3c39602f,0x3c375f55,0x3c5d68c5,0x3c6c33ac,0x3cc8947e,0x3ce7f303,0x3cf674bb,0x3c90dfb2,0x3c9416b1, +0x3c2abf5c,0xbb37c942,0xbad3959d,0xbadd113e,0xbb36778a,0xbaf51666,0xba75412c,0xbab8f926,0xba8303d0,0xbb09f532,0xbb391912,0xbb3243b4,0xbb0e25f2,0xba88b4d7,0xb9a24cf2,0x3a8e351a,0x3aca109f,0x3ae5966d,0x3b256d1b,0x3b1b555f,0x3ad29807,0x3a8c813f,0x3aeb6f2b,0x3b7445b5,0x3beee889, +0x3c053fdf,0x3c0f8119,0x3c1a963f,0x3bf190da,0x3bf4e8dd,0x3be9875f,0x3c498fe1,0x3c73add0,0x3c858b3e,0x3c8a3317,0x3b960269,0x3b486ec3,0xbb808f59,0xbb5f865d,0xbc14ba58,0xbc1abbf1,0xbc292fd9,0xbc22671b,0xbc08318f,0xbbed2a1d,0xbbd00c1e,0xbbb11c8e,0xbb996ceb,0xbb9282ce,0xbb0c5165, +0x39036567,0x3b441dc3,0x3af33251,0x3ac67ff9,0x3a5097cf,0x3ade02f1,0x3b1b9d57,0x3b00739d,0x3b63c6ef,0x3b8a19f1,0x3bbc7d41,0x3b824c30,0x3acd122b,0xba86b090,0xba640de4,0x3ad9b762,0x3bf563b6,0x3ba065e6,0x3b8d4a1d,0x3ba3d094,0x3b9512c5,0x39fc6217,0x3926f142,0xb9878359,0x39499014, +0xb9e2e470,0xbad91fe5,0xbb631b1c,0xbb9cbe3b,0xbbc2c997,0xbbddb173,0xbbf26476,0xbbe2a6de,0xbbda1fc8,0xbbc7dc58,0xbb4a2824,0xb9ea6ada,0x3b2347f6,0x3b1dd844,0x3b506b9a,0x3b7119e7,0x3b217639,0x3adf40c0,0x3a3acf79,0x3a0145b6,0x38f49714,0xb93b2db8,0x3a059eea,0x3ad65dcb,0x3b2fe718, +0x3b116130,0x3a875696,0x39901e1f,0x362dd97d,0x399e9f2f,0x38decd76,0x3937197a,0xbaefe7fa,0xbaf667dc,0xbbd1aede,0xbb6d108d,0xbb91af68,0xbb9adc5f,0xbb7381f0,0xbb80a0f3,0xbb2dfb94,0xbaceaa30,0xba97c711,0xb9aa33b0,0xb9e52e88,0xb9039bac,0xba182a5e,0xba8959ae,0x39db5da8,0xb93df701, +0x386d202f,0xb9ed4662,0xbaa8054b,0xba418292,0xba4b5eb0,0xba36dd10,0xba33f642,0xba5bb6b6,0xba0e5f1d,0xb9923841,0x39a48126,0x3a8b8d76,0x3b0e6c91,0x3b491e01,0x3b0fd04c,0x3a93c576,0x38f5a5d0,0xba351437,0xba276400,0xba046636,0x3a05d057,0xba94d413,0xbbb58226,0x3a8e4b36,0xba49f865, +0xbb94e26a,0xbb97a2c9,0xbb9a9d5c,0xbba0798b,0xbba1a50b,0xbba2b7f4,0xbba58084,0x397bed2b,0x3ad6d125,0xbb857797,0x39d3a646,0x3ad687c9,0xb9d22565,0xb8f92b0c,0xb909d651,0xb972e18b,0xb988cf37,0xb99940f6,0xb9b2f578,0xb8a558f2,0x38f1dbbc,0x39827e92,0x39d6ad7e,0x3a0369b0,0x3a7c90b0, +0x39e7b8d9,0x3990eb25,0x385c3a8d,0xb909a292,0x38fef46a,0xbbc8201d,0xbba5b6b8,0xbbd0e3f7,0xbb77bdcf,0x3ab501c6,0x3c0aabe7,0xbbc177b7,0x39827b64,0x3be29324,0x3c013ce1,0x3c03b705,0x3c002f26,0x3c0b43e2,0x3c0cb1c8,0x3c127469,0xb710faa1,0xbbbec908,0x3c0fde31,0x39fa98d6,0xbb871622, +0xbbdd8faf,0xbba6e706,0xbbc31a61,0xbbd0792c,0xbbddd44a,0xbbe4e24f,0xbbea517b,0xbbda10a7,0xbbd55b4a,0xbbd0f00b,0xbbdb5226,0xbbde02bd,0xbbd36d52,0xbbea8c2a,0xbbe34a07,0xbbb6fc09,0xbbc4a14b,0xbbb61a79,0xbbc52471,0x3b7eff16,0xbba042fc,0xbb31307d,0xb92bd6e2,0xbb0b5d43,0xbb390452, +0xbb56f4ac,0xbb559ad2,0xbadf6dd2,0xbb57db04,0xbb2f00c0,0xbb0ece33,0xbae0ee4e,0xbb4b9819,0xbb9c08ed,0xbb8b02e4,0x3b2631a8,0xbbcab3a8,0xbbbf7a01,0xbbe4f73a,0xbc0f6404,0xbc22bd43,0xbc29314e,0xbc24d86b,0xbc0a2a4d,0xbbfa1d7a,0xbbfce80c,0xbc0bd435,0xbc1406c7,0xbc093962,0xbc24cfef, +0xbc186556,0xbbbfda47,0xbbd352c6,0xbbafb6ea,0xbb0605a7,0xb7d22329,0xba9ccb59,0xba7b0a1d,0x3a45bce1,0x3abd7275,0xbabf5b83,0x3b26fb3d,0x3b0be52b,0x3b07f1d5,0x3a032a3d,0x3b1ff242,0x3a199b41,0xba8484b9,0xbb800bec,0xbb6dc12a,0xbb541e40,0xbb0096e6,0xbb69cbdb,0xbbbe6cd4,0xbbe33391, +0xbc2c72d4,0xbc51bd70,0xbc6478e4,0xbc64ce0d,0xbc37f4fe,0xbc277d8f,0xbc24f043,0xbc39fa78,0xbc49e136,0xbc2ac7dd,0xbc6716d4,0xbc4a5ace,0xbbb6c913,0xbbe8c8fd,0xbba6b0e0,0xba633fa9,0xb8759cec,0xbb2f754f,0xbb11d161,0x3b87ed72,0x3ba3a2ee,0x3abd9357,0x3b778e43,0x3b8b6224,0x3b9205eb, +0x3c014a7b,0x3bd43f2e,0x3b87bedc,0xb9a6dd3d,0xbb713ff1,0xbb53ce84,0xbb95b2ca,0xba8a7ac6,0xbb45fa18,0xbbc22fe4,0xbc0f26ee,0xbc7c4a2a,0xbc9e98e6,0xbcaac420,0xbc999595,0xbc56d116,0xbc1acff2,0xbc22b72d,0xbc5a6152,0xbc7314df,0xbc4f4c07,0xbc90531f,0xbc6d32bb,0xbb866927,0xbbad531e, +0xbc27fc30,0x3b3a1aef,0x3c577378,0x3c358b25,0x3b4e8339,0xbbc9c384,0xbbf86097,0xba4b7568,0x3a0a9714,0x3b96fbd8,0x3c4a77b1,0x3b47dcba,0xb9d0fb75,0x3af84d09,0x3a0167d7,0x3a83618a,0x3b16d741,0x3a6cb6a0,0x3b4cd441,0xb9a7a748,0xbbbdb077,0xbb4ba166,0xbb55aadd,0x3a01be02,0xba5aa98f, +0xbba7c0c2,0xbc590690,0xbc92ff47,0xbc9f4a45,0xbc4cbcbb,0xbc3a344d,0xbc9bfa0c,0xbc2c53de,0xbc325a02,0xbc92dabb,0xbc61be71,0xbc33a5ca,0xbc7273f6,0xbcd58cd8,0xbca25bd6,0x3b8546df,0x3bbf22bb,0x3ba65db8,0x3b4b7ba8,0x3b0072a5,0x3af0cb18,0x3b115070,0x3bc733df,0x3bca89f2,0x3b268f41, +0x3a3488e8,0xba26c7a8,0x3a6d1bc7,0x3ab67d15,0x3b282f5a,0xbae0e00f,0xbbf4d00e,0xbc0999ca,0xbc34f3a1,0xbb9edc6c,0xbb22d578,0xbae57583,0xba5fb304,0x3ab03687,0x3bd41090,0xbbcb1819,0xbc165d6e,0xbbb59b10,0xbaef44b2,0x3ab9003a,0x3ba4a67c,0xbb03a341,0x3c2ae5bf,0x3c80ca5c,0x3c95e9cb, +0x3c5d468c,0x3bb250f9,0x3ad86da7,0x3b58bb21,0x3b86b38e,0x3b75b574,0x3b423350,0x3a826248,0x3a327909,0x3a580556,0x3b0874c3,0x3ab957d8,0xba53632c,0x38b7446c,0xbb19e689,0xbb666acc,0xbb955914,0xbb82c0c4,0xbb095d73,0xbb2ffbd7,0xbb7be926,0xbbdc1f3a,0xbc1a3eb3,0xbc41a10e,0xbc5561cf, +0xbc367f5d,0xbc888139,0xbcb19ff1,0xbce55e85,0xbc7fac84,0xbc24aa1d,0xbc6259d8,0x3b23b9f6,0xbc6b486f,0xbbd774b2,0xbc10ff69,0xbc00b40d,0xb9cc0ab3,0xbae562f9,0xbaaa7aeb,0xba34fd1a,0xb9bd5513,0x3a0fee4a,0x3a5a9a43,0x3a5e4e99,0x395c631e,0xba9fcf57,0xbade372f,0xbb0b65c9,0xbb1d2fe0, +0xbaa3eec7,0x3a6675a9,0xb9f4e57a,0xbb72eddb,0xbb94dbf3,0xbba3d402,0xbb7c4abc,0xbb5a1539,0xbb45682e,0xbb735fdd,0xbab0bb19,0x3b0fbd05,0x3b8ba6a6,0x3ba0a2f9,0x39eb0e66,0xbbe63777,0xbc73d446,0xbcbcf114,0xbc849504,0xbc8d7cc5,0xbb5adc92,0x3b954176,0xba839a8b,0xbb1ac04f,0xbabdab6c, +0xbaadbc25,0xbb0b0de9,0xbaf5b3a7,0xbb228090,0xbb4db400,0xbb77228a,0xbb6a43dd,0xbb41b3a3,0xbb014b0a,0xba7e6353,0x3a19293f,0xba89017b,0xb962e3c9,0xbabec9e2,0x39f6728b,0x3ae20693,0x39965df3,0xb9862825,0xbb0b7751,0xbb9f5394,0xbbb44144,0xbbf8dc5b,0xbc468392,0xbc27df9e,0xbc362724, +0xbc75ea26,0xbc8920fc,0xbc8f1abf,0xbc8d6471,0xbc92b16a,0xbc0937a5,0xbbf5a784,0xbafc51dd,0xbbe54585,0xbc20a452,0xbc45a6d4,0xbc491bce,0xbc2cc90d,0xbc203cc8,0xbc0614e1,0xbbeaab4b,0xbbc0a763,0xbbb28314,0xbbab5fdd,0xbb82bd3a,0xbb321fc4,0xba0f7145,0x3a7f7edc,0x3ac19d10,0x3ab3a421, +0xba0f1db6,0xbb200435,0xbb5c2b1f,0xbb8ec961,0xbb78cb1e,0xbabf496f,0xbac7bcba,0xba64ba56,0x38869be5,0xbaf1f2a1,0xbb95214a,0xbc05e7bb,0xbbd0586a,0xbbc425b8,0xbbc5597e,0xbbce1c43,0xbba9e848,0xbb6eb746,0xbb5392e8,0xbb80b24d,0xbb0436ac,0xbb746b26,0xbba9be12,0xbbe640d4,0xbbdeb234, +0xbc01a728,0xbc060eaf,0xbc0ad706,0xbbdae894,0xbbe9f231,0xbb7697bf,0xbaf7d7f0,0x3a8f6604,0x39e2de64,0x3996ae69,0xba36802a,0xbab7a3b1,0xba6548ab,0xba626180,0xba90326c,0xbad24481,0xbafd110c,0xbb5d91c2,0xbb964a19,0xbbb6f6af,0xbbeb9fef,0xbc050c01,0xbc1c78a0,0xbc0504f0,0xbbe7f889, +0xbbc9c6a0,0xbbb1680e,0xbbb09799,0xbbbae790,0xbaf95d63,0xbbb8edef,0xbba7fe08,0xbb9e0812,0xbbbb86c3,0xbbb9a0cd,0xbbc1ce07,0xbbc4e73a,0xbba181f6,0xbbbcc44a,0xbbb250a6,0xbbb13860,0xbb7b1ab4,0xbb782d0e,0xbb9aeee6,0xbb714216,0xba8b3fcc,0xbb1d80f5,0xbac8d9af,0xbaea8719,0xbae3a06d, +0xbad6cba8,0xbac47c2c,0xbaa4f04f,0xbb09df0e,0xbb44dfa5,0xbb83929a,0xbb9fe6d3,0xbbc16c25,0xbbecea2a,0xbbde0cf6,0xbbd8c82d,0xbbcdbd19,0xbbc22e48,0xbbabfff5,0xbbbba42c,0xbb9ca112,0xbb0e5ece,0x3b031d6d,0xbbbdbed9,0xbb25f895,0x3aa6cbaa,0x3acaae32,0x3aeed5af,0x3b01b934,0x3b22383f, +0x3b3b9cfd,0x3b4f6024,0xbb207051,0xbbb29461,0x3b51b5f1,0xbae724df,0xbb857f71,0xbb8c0fc1,0xbb808505,0xbb8536d4,0xbb8111d2,0xbb812c55,0xbb81243d,0xbb77cf74,0xbb8e701b,0xbb9a7717,0xbba6b955,0xbbb4974d,0xbbbf76f9,0xbbcfa248,0xbbc3e499,0xbbbed14c,0xbbb917df,0xbbb7567b,0xbbca9c2a, +0x3b8ba31e,0x3b62fb5a,0x3bdd5a52,0x3a348c15,0xbba4b3f4,0xbc2dde77,0x3b464fc3,0xbb73c719,0xbc1f7f9e,0xbc1c1a15,0xbc1a45b1,0xbc1110a2,0xbc209c68,0xbc239e41,0xbc1ebb94,0xbb92a8cb,0x3ac2dc1c,0xbc3a4d4d,0xbba846ae,0xb8c07f8c,0x3bc569e8,0x3b8272a3,0x3b960ad9,0x3b8ceaf4,0x3b842325, +0x3b7dd32a,0x3b6cd654,0x3b8642a4,0x3b8cdb04,0x3b933c30,0x3b943ded,0x3b978b96,0x3ba6310a,0x3b8a6c63,0x3b77c70c,0x3b49d315,0x3b70eacc,0x3b6e160c,0x3bc3bbab,0xbbc362d0,0x3b75ef27,0xbaaee745,0x39c557ae,0x3b4e748a,0x3a6fecb2,0x3b8cf6a8,0x3b87bb66,0x3b05d497,0x3b6d310a,0x3b4ee5e5, +0x3b5a8632,0xba80e012,0xba5c73f5,0xb986baaa,0x3a12bbb9,0xbbc9e0c4,0x3b987410,0x3bbd8e43,0x3bb5c1ae,0x3ba9542b,0x3b8f532d,0x3b85b204,0x3b76a0bc,0x3baab1a1,0x3bc2755c,0x3bc56fb6,0x3bc38395,0x3bbde970,0x3bcdb070,0x3b8bb6cd,0x3b4acc4c,0x3ad9550f,0x3b2ad492,0x3b8ffe06,0x3bf49c2c, +0x3b211bef,0x3b4fca9f,0xbafc39c4,0x3af3960b,0x3b171027,0x3a02a64c,0x3b1b9294,0x3b9edea4,0x3b2085f7,0x3ba65855,0x3a861c61,0x3b8f7d9a,0xbac56e3c,0xba6de3d2,0xbac9264e,0xba7fcfad,0xba9a655b,0x3b5d1add,0x3c039fd2,0x3bdd463d,0x3bc87553,0x3b8e558b,0x3b682841,0x3b271e8f,0x3bab5307, +0x3bd6c08c,0x3bf10734,0x3bfaeeb1,0x3bfb0bcd,0x3c1a9deb,0x3b97e15d,0x3b17ac23,0x3a03b0d8,0x3ac00453,0x3b568a06,0x3bbac557,0x3a6bbed2,0x3b0d2bef,0xba97bfbf,0x3bbf1931,0x3bd6d01f,0x3aed8ec0,0x3ba6b98d,0x3ba11d4e,0x3bac6712,0x3bdb02c4,0x3be226b0,0x3bb87db2,0x3a840559,0xba184255, +0xbb7dd61e,0xba273b1d,0xbb32597f,0x3b5e1a8f,0x3c1c43dc,0x3c06721a,0x3be77945,0x3b8c726a,0x3b5cd026,0x3b48eb8a,0x3c00d542,0x3c32a541,0x3c341bdf,0x3c233d55,0x3c10f230,0x3c283105,0x3b4875df,0xb9a9b439,0xbb07ba57,0xba7ba883,0x3c4bca0c,0x3c3e9b90,0x3c48bd73,0x3c42d4bc,0x3a91ad47, +0xbc0150d7,0xbbf38d7b,0xba934a94,0x3a019389,0x3b97ef49,0x3c408198,0x3b66077f,0x38a18d0d,0x3a979e7f,0x3a793398,0x3b4c4ec3,0x3b050344,0x3bc39dc8,0x3b5090c3,0x3bbeaddb,0x3c4050f3,0x3c10ec89,0x3c1bb3f2,0x3bf34134,0x3baa9a4e,0xb9295fa9,0xb9e881bf,0xba132c72,0x3a845914,0x3c1ad3bf, +0x3c598676,0x3c120ea2,0x3c504cb0,0x3c19a890,0xb9207023,0x3b9020c1,0xbb42e3a0,0xbbf9eeb2,0xbcaf2e32,0xbc79a462,0x3bd6c7ef,0x3c08b677,0x3bf39c17,0x3b833c9e,0x3b1ee7e0,0x3b0dbc02,0x3b0d2b5e,0x3bba7347,0x3bc7c497,0x3b70da34,0x3b350a45,0x3ada4281,0x3b1aea03,0x3b236203,0xb9eb0978, +0x3ad35692,0x3bc01b27,0x3be63b83,0x3c3df5b5,0x3c2f4f46,0x3bf51e73,0x3b447f5f,0xb967231b,0x3adc7a19,0x3c1af836,0xbb099db3,0xbbaa2bc6,0xbb4f0277,0x3b250495,0x3bc55c93,0x3bfb9a32,0x3afc9da7,0x3c59f733,0x3c923bad,0x3c7b23d3,0x3c54fc0c,0x3b31f31d,0x3a4ee11c,0x3b02aaab,0x3bc3b764, +0x3b9c422e,0x3b8444d0,0x3ac07305,0x3ad0855d,0x3ab8198a,0x3ae23bde,0x3b174da1,0x3b1643df,0x391acb96,0x3aafa34c,0xba2124ab,0x3a093720,0x3b291d7f,0x39b907d1,0x3a12a93c,0x3c234dd8,0x3c88c665,0x3ca25ddf,0x3c9defa1,0x3c62518a,0x3ba73037,0x3bd6614b,0x3c355721,0x3c47c7ab,0x3cde8a53, +0x3cd8aa4a,0x3c71d2a4,0x3c3c6994,0x3aeab412,0xbbf9443a,0xbc16ff81,0xbb8c6b22,0xba41b8a4,0x3a931a30,0xb99730fe,0x3a58c71e,0xb98fbaf9,0x39046800,0x3a2b4929,0x3a1d5c15,0xb91119a2,0xba10ad8f,0xba7bb21e,0xbaffa0b9,0xbab1dc06,0x3a192721,0xba6499b7,0x3a8c7117,0x3b93e03b,0x3bdeb864, +0x3c0aa44a,0x3c099314,0x3bc79cda,0x3b6a89db,0x3b5f9b02,0x3bb3cfe4,0x3bebd3a9,0x3c1eb134,0x3c376a41,0x3c1bb59c,0x3c82944b,0x3c9cef3c,0x3cb77300,0x3c178d2a,0x3c7d6a82,0x3be39803,0xbb9fd533,0xba191381,0x3a1abfbb,0xba42d4a5,0x397cb891,0x397e6b14,0xba993530,0xb9760436,0xbac34562, +0xbb34177f,0xbb4373aa,0xbafb2bf4,0xbaf4e8d3,0xba66948c,0x3ac83501,0x3a530518,0xba554914,0x3b086348,0x3b382ce4,0x3af3f774,0x3b1c9035,0x3ae7bba4,0x3b2b7317,0x3b8dc613,0x3ba3c45d,0x3ba26be3,0x3b9bea13,0x3bbeb973,0x3c01d911,0x3c36d5e4,0x3c3d9292,0x3c36e048,0x3c57dcce,0x3c4a6d9e, +0x3b81ffcc,0xb9e8d976,0xbc0d9503,0xbbf59889,0xbc3d95a4,0xbc399fc3,0xbc25b99c,0xbc1335f5,0xbbf1ea4b,0xbbd8d4ac,0xbbb1a394,0xbb99fece,0xbb7f0fb6,0xbb7ff981,0xbb35b233,0xbadea152,0x39b14631,0x3a9ef887,0x3b0a3e04,0x3a94c773,0x3b46310f,0x3b73b7dc,0x3b6ae575,0x3b3a20df,0x3b498325, +0x3b96c015,0x3b838685,0x3b42b9f4,0x3a8e801a,0x3abfa023,0x3b634868,0x3c0d759e,0x3beae563,0x3bca66ac,0x3ba433e8,0x3b7a284a,0x3b455c5b,0x3a9ac437,0xbac29edb,0xb9efc15b,0xbafb5784,0xbb3d6552,0xbb9d58a8,0xbbcc40ed,0xbbf9c204,0xbbe2ce21,0xbc0da4ce,0xbbd4c6d8,0xbc00816b,0xbbd3e766, +0xbb920548,0xbabf282c,0x3a07140e,0x3a16d1ec,0x39fd50ad,0x3b3b6405,0x3b5c3b34,0x3b026ef6,0x3ad953df,0x3a978da9,0x3a23368f,0xb92032fb,0x3a5f0302,0x3afa672d,0x3b3c34a8,0x3b46d853,0x3b347c35,0x3b34640b,0x3b1fd0b5,0x3b2b7ecf,0x3b3dbedf,0x3b135cb3,0xba46f1bf,0xba65ec04,0xbbd7e9c7, +0xbb03f9b7,0xbb814c95,0xbb82d622,0xbb0f81a8,0xbb279219,0xba78e1f2,0xba6f67df,0xbb0ad1c3,0xba4fcc7c,0xba1914f8,0xba8f9d3d,0xbb138756,0xbb0f39be,0xba82d9bf,0xba68d9eb,0xbb31a0a7,0xb9a3cf22,0xba8e1cd5,0xba41eaa2,0xba2bc24a,0xba2a9ff7,0xba0cb59f,0xba226fbc,0x38bc607a,0x3a0a4033, +0x3a91b7b8,0x3ada68d9,0x3b19a593,0x3b3f3458,0x3b160cb3,0x3abaa87c,0x3a211721,0xb8e6452e,0xb9549916,0x3a118edb,0xbb0d3ab5,0xbba41f0b,0xbc02ab89,0xba38d3a6,0xbb9683b5,0xbc005e11,0xbc078e30,0xbc0ae175,0xbc063094,0xbc114306,0xbc1604f5,0xbc166a0f,0xbb99b51a,0xba802f37,0xbc055675, +0xbb8d21b2,0xbabf8eba,0x39e47f0f,0xb9048887,0x38879bf3,0xb78a3694,0x37ab27f2,0x38461f10,0x37f9084b,0x395e82a9,0x39b7b563,0x39fb21e6,0x3a259e00,0x3a462d42,0x3a8fd849,0x3a33e1d0,0x3a12abb9,0x39d57443,0x399848f0,0xb8dd8154,0xbb93080c,0xbb789448,0xbbc388d6,0x3ae63a06,0x3bd532e0, +0x3bfa5b7e,0xba85f5dc,0x3bad5809,0x3c0167be,0x3c115762,0x3c1174ed,0x3bfe2cc2,0x3c0c5755,0x3c0b34e1,0x3c0ab416,0x3ba59696,0xba2cbdd5,0x3bfe3f71,0x3babd8c1,0x3ab076ba,0xbbc1f996,0xbb77dd82,0xbb91dc5c,0xbb9da97f,0xbba6905c,0xbba7fd99,0xbba4e33f,0xbb9481ce,0xbb91f9f9,0xbb975af1, +0xbb9b170f,0xbb9b4a55,0xbb9287b6,0xbb9dde93,0xbb9a69b3,0xbb8440cc,0xbb908348,0xbb9ccded,0xbb7d9d9d,0x3bf174dc,0xbb334a9f,0xb7ee9168,0x3aee52e3,0xb930e0cb,0xba2df8a1,0xbad3f9ef,0xba133397,0x3b098c0c,0xba1f4573,0xba88b128,0x3a0c6931,0x398d9256,0xbaa942b5,0xbabbf529,0xbb12083c, +0x3ba72679,0xbb6410d2,0xbb9b4eed,0xbb9d9f6a,0xbbd590e8,0xbbf3c7ca,0xbbf99351,0xbbe28246,0xbba66c9c,0xbb8e552a,0xbba52d28,0xbbb4f70d,0xbbbcea23,0xbba68e23,0xbbb86ce4,0xbbad1197,0xbb80d36c,0xbb90fd20,0xbbb634c3,0xbab24dff,0x3b84fbd6,0x3aad6590,0x392c274a,0x3b0009a1,0x3b1d54e8, +0xb9d50c02,0x3b864f38,0x3b0bae5f,0x3b8f6ffe,0xba0858d3,0x3b31ddb6,0x3ae7dd8e,0x3a1ace4b,0xbb17f28b,0xbb0db2b5,0xbacab0ad,0x3a948faa,0xba9e942d,0xbba71a46,0xbba0eb64,0xbc0031cc,0xbc1b27f2,0xbc210390,0xbc0d156d,0xbbbfea15,0xbba46bdd,0xbbce7641,0xbbdc52ad,0xbbeaa2ea,0xbbbda01a, +0xbbe648ae,0xbbd72953,0xbb83dddf,0xbba11924,0xbbcef5c8,0xba0f515a,0x3b5211c3,0xbac68fed,0xbb593c4a,0x3b85403e,0x3ba65809,0x3aaff7a2,0x3b824b1b,0x3b9b2420,0x3b72468b,0x3bc859c6,0x3ba4cc5e,0x3b6d918a,0xba9c7a6a,0xbb8effe8,0xbaf288d3,0xbb8e689f,0x3a7fe45a,0xba7ccdee,0xbba5fd87, +0xbbb5057a,0xbc327eb4,0xbc6355f5,0xbc695480,0xbc399151,0xbbaa4216,0xbb19dbfd,0xbbaa3331,0xbbe5b6b5,0xbbfe0389,0xbbc3498d,0xbbe13543,0xbbb743d0,0xbb2d8057,0xbb599e34,0xbc11d850,0x3bb4cc15,0x3c9878ae,0x3c7ab7d5,0x3bd40136,0xbb9d09a2,0xbc0c3d00,0xbb0eacc7,0xb979a6e3,0x3b5c0ae1, +0x3c26a876,0x3b40508b,0xb990225d,0x3a607d61,0x3a7fc581,0x3aa6d25e,0x3afff3bb,0x3a209d2b,0x3bac064a,0x3b44cf0f,0xbba84b7d,0xbb62c370,0xbbc4e818,0xba69a676,0xbb512a17,0xbc1bdead,0xbc74e89c,0xbc91985e,0xbc874698,0xbc1be0d7,0xbbe70f04,0xbc25acaa,0xbbd2a430,0xbc141817,0xbc7cbe22, +0xbc3313e6,0xbc7d192d,0xbc6f27f8,0xbc9ce39e,0xbc8b6aee,0xba94f211,0x3be9f68a,0x3beb7a33,0x3b8601f8,0x3ab32672,0x3aa10c8e,0x3aa05cd3,0x3b97e626,0x3bafde2e,0x3b3c2402,0x3a3f30a5,0xb9264116,0x3b16267a,0x3b0f2703,0x3b6a2075,0xb99fea72,0xbb90d35b,0xbb6514fd,0xbbd74111,0xbb35dc46, +0xbaaff31c,0x39d4a525,0x398f26ba,0x3b0a49c6,0x3bd872f6,0xbbb800c0,0xbbe9e5d0,0xba110053,0x3b101893,0x3bb20f04,0x3c1406cc,0xbb30cfce,0x3c1487af,0x3c80fc90,0x3c8db37b,0x3c3dbf54,0x3b8482b4,0xbaec0eae,0x3ad75090,0x3bc0b6b9,0x3b9cba58,0x3b4d5364,0x3a49f38d,0x39c38b29,0x3984b30c, +0x3a792904,0x3b14a2b5,0x3a3c4ad1,0x3a6f4038,0xbad1b93e,0xba794c69,0xbb2d3c08,0xbb8d6174,0xbaee37b0,0xbb1edeaf,0xbaaf9ef9,0xbb118e62,0xbb35fc74,0xbbb81b37,0xbc149789,0xbc46d5df,0xbc5f30a6,0xbc5a7715,0xbc5d6a30,0x393307c9,0x3b0c8458,0xbbea6aa0,0x3b176d59,0xbc1844ce,0xbbd862bc, +0xbc0959e7,0xbbe90428,0x3812416d,0xba847292,0xba4f8029,0xb9c5e21d,0xba778209,0xba09197c,0x39674130,0xba271f17,0xba8dde32,0xba5a2cfe,0xbafd7c35,0xbb14f94d,0xbb2167ee,0xbaa3c979,0x3ad11493,0xbacc5c63,0xbb832a1c,0xbb414815,0xbb355d47,0xba5073e8,0xb93059d6,0x3ae17aba,0x3b1dc548, +0x3ba9bd17,0x3be95594,0x3c2c9a2f,0x3c0a4208,0xbb37db98,0xbb3cb5c4,0xbbae5c38,0xbc08e301,0xbbc61dd9,0xbb29049f,0x3bee7e12,0x3c23d20d,0x3b838e1d,0x3b231450,0x3b275e56,0x3ab6c2bb,0x3a34c002,0x39d43515,0xba7c54cd,0xba6c344a,0xbb468f0e,0xbb5d3997,0xbb153f76,0xbb0e0395,0xba8b86d2, +0x398e559e,0x38f5cbcc,0x3b13c338,0xb9b00f73,0x3a7a5242,0x3b1a555e,0x3a780a7f,0x3a807e0b,0xb7e67ccf,0xbaa0fd78,0xbab9a29e,0xbb27773e,0xbb9eb0fa,0xbb7c9f8e,0xbb3f8045,0xbb1babae,0xbb826bf8,0xbba0beb2,0xbbae890c,0xbb448b06,0xbbc068df,0xbb54a8c3,0xbac01969,0xbbc7c440,0xbc0c56b1, +0xbc2ac50a,0xbc336a55,0xbc074e85,0xbc0bcbca,0xbbf575f9,0xbbde5ef5,0xbb9ec149,0xbb8caf75,0xbb8be3d1,0xbb81af4c,0xbb3a3107,0xba86e66f,0x3aa35abf,0x3ae0eae8,0x3ab481c3,0xb99d5327,0xba9beb81,0xba8e5943,0xbaeb5852,0xba8b90ee,0x39b9d2ab,0x3960904b,0x3916d267,0xb95a980b,0xbab7dea1, +0xbb67fdea,0xbbc3bf0a,0xbbad3cbf,0xbb961426,0xbba1a0e7,0xbb78379f,0xbb4a1a36,0xba8b25ca,0x39e80374,0xbab997d8,0xb98de94b,0xbb213d5e,0xbb93afad,0xbbe4d47d,0xbbce5095,0xbbf2828f,0xbbdd126b,0xbc01ba57,0xbbce6029,0xbbd98252,0xbb7786b5,0xbb10a191,0x39074154,0x39ac5f92,0x3ac86471, +0x3a2793e2,0xba58bec6,0xb8b579a1,0xb9a1b089,0xba170a73,0xba9f13a0,0xbaea6911,0xbb064712,0xbb0757a2,0xbb0208fd,0xbb3a619c,0xbb54197d,0xbb85a802,0xbb4ed816,0xbb2e1421,0xbb2252a3,0xbb0e2bab,0xbb7735a5,0xbb68ffbf,0x36de6551,0xbb6f116c,0xbb199d99,0xbb1a22b7,0xbb509a10,0xbb399f25, +0xbb6691ba,0xbb4f26be,0xbad8fa89,0xbb324568,0xbb4c728c,0xbb3d8ba3,0xbafe98ff,0xbb2dc677,0xbb4feac0,0xbb4cce8d,0xba4461ac,0xbb402db2,0xbb204f05,0xbb1bd1f2,0xbb1a9743,0xbb0d4d8c,0xbafcc911,0xbada568f,0xbb25fd6f,0xbb5cac90,0xbb838388,0xbb93569d,0xbba3edc3,0xbbb9022d,0xbbaf03e1, +0xbba4ad48,0xbb96e323,0xbb856f94,0xbb843d60,0xbb983093,0xbac040bb,0x3a6465c6,0x3af0c9bc,0xbb2dbb7a,0x3a0e4c9d,0x3b044f17,0x3b10f0f0,0x3b14f9e7,0x3af0ab32,0x3b1c70cf,0x3b2f25ba,0x3b2bda7e,0x3a11093a,0xbb2997b3,0x3b2b1e9d,0x3a3fd2ff,0xbae02a9f,0xbb91a7b9,0xbb72fc27,0xbb7e2a7f, +0xbb7876d9,0xbb78b62e,0xbb7a2d3d,0xbb715209,0xbb82f5e9,0xbb87f888,0xbb8fa3e8,0xbb97719f,0xbb9d7e36,0xbba5dc67,0xbb9b3214,0xbb963944,0xbb9257d9,0xbb8ec558,0xbba8b417,0x3a2dfdcc,0x39dfeb2c,0x3b429f41,0xbb973d2c,0xbbf9a600,0xbbd482b6,0xbb33acc3,0xbbe04483,0xbbe98fb7,0xbbdf96e5, +0xbbd7d355,0xbbb158ba,0xbbd6b1b9,0xbbd7214b,0xbbb83048,0xbbf20fae,0xbb8331e8,0xbbd7922b,0xbbf8b947,0xbba9441b,0x3b1f82d8,0x3a201c21,0x3a461134,0x3a0e1873,0x39a22a9b,0x396fa5ac,0x38b0120e,0x3a35eb27,0x3a63cabc,0x3a62e1ed,0x3a2dd292,0x3a197149,0x3a655845,0x37dfa45b,0xb92bc9e4, +0x383b58df,0x399d899b,0x3a4b635d,0x3a403112,0xbbdf7877,0xb94c2103,0xbb966213,0xbb021881,0x39042521,0xbaa8e53b,0x3aac1e98,0x39a67d8d,0xbac79120,0xba5832e3,0xb9ac92e2,0xb91638a2,0xbb4298f3,0xbb3de20d,0xbb825a70,0xbb0de6bb,0xbbd38da4,0x39014ff9,0x3abe3010,0x39230176,0xb8287a4c, +0xba33562c,0xb9f91c4e,0xb9b3fa91,0x3ad30fce,0x3b0c2410,0x3aba3010,0x3a35ed51,0xb8aabbec,0x395339c9,0xbaf25688,0xbb0599ed,0xba8ffdd8,0xba5336df,0x3ad4dc0e,0x3b12ab04,0xbb0a0088,0xb959c15f,0xbb8a6afe,0xb9c4e8f7,0x39a92b55,0xba672388,0x3a75909d,0x3b81dffd,0x3a3d3cf1,0x3b3c53a1, +0xba896c31,0x3b274b50,0xbb5c55bf,0xbb449747,0xbb5bc47b,0xbb486a48,0xbb864aa4,0xb97064d2,0x3b2ebb1e,0x39befe30,0xb9e9bff6,0xbb076e6e,0xbb0e3a5e,0xbb2d3e8e,0x3a911a5b,0x3b11ea59,0x3ae3737e,0x3a5cbd96,0xb9c144cc,0x3a6a1cd5,0xbb8163d8,0xbb8c041a,0xbadaa9f2,0xbb018670,0x3ad0c36e, +0x3a681b72,0xbb26bd09,0xbaa0abf0,0xbb813459,0x3b594286,0x3bc3246e,0x3b1e5ccf,0x3bb308c7,0x3baee833,0x3bbf5d14,0x3bada56c,0x3ba57466,0x3bb70e4d,0xb9b5f1e1,0xbae63f10,0xbb994989,0xbad057e9,0xbb84fb08,0x3a2440d4,0x3b45185e,0xba523d3e,0xbb2a1761,0xbb9fdbc6,0xbb8f74f9,0xbb5609b9, +0x3b687799,0x3bcc054d,0x3b832641,0x3a554017,0xbb0daf71,0xbac64ab3,0xbc023b43,0xbbefc543,0xbb306bf2,0xbb4593a8,0x3ba47b9b,0x3b5b9bb1,0x3bcb794a,0x3c13c684,0x3b0f1f52,0xbc03915d,0xbc1e9645,0xbb8509a3,0xba6d3e4e,0x3b31d4a6,0x3c0c5fc5,0x3b53a506,0x39baea1d,0xb9e5aa71,0x3a4af2e6, +0x3b2d350b,0xb915c223,0x3b269d2a,0xba36c52e,0x3a6967df,0x3baed09f,0x3b95f38a,0x3bf1d45a,0x3ba03363,0x3b48a232,0xb9dfdf1d,0xbafc5088,0xbb18c69c,0xb8b33c86,0x3ba7fe26,0x3bc08d63,0x3a8acbe2,0x3ab4d43c,0xbae59b99,0xbbc298d7,0xbb31a079,0xbb652927,0xbc1c934f,0xbcb69255,0xbc892d60, +0xbb7ab4db,0x3bda7f85,0x3c1a1c9d,0x3b9f1639,0x3ad236ff,0x3a37a28e,0x3a6e73be,0x3b8609ae,0x3ba234c8,0x3b8479c3,0x3b0fbb47,0x3a0bfd70,0x3a3f40e9,0x3aed15a6,0xba3aa81d,0xb9cc16d7,0x3aa40282,0xba2699ea,0x389acc00,0x3ae99ea7,0x3acca43a,0x361a255b,0xba7ff664,0x3aae638d,0x3bfd0105, +0xbb6f089e,0xbbdf607d,0xbb3e7152,0xbb1ab64c,0x3b1fef8e,0x3c3a705c,0x3a15efa1,0x3c0a0a01,0x3c812c64,0x3c4dfcf2,0x3c2c301e,0x3809bf4f,0xbb51e3ab,0xbabbc5e0,0x3bc561f4,0x3b99dc48,0x3b832bd4,0x3a49ab4a,0x3a5b4367,0x3a1a82ec,0x3a31e5f0,0x3b0391ed,0x3b0e971c,0xba56d6f5,0xb9370d62, +0xbb3fa2f4,0xba8d604b,0x3ae85937,0xb96d3636,0x3a05f902,0x3bc0ca7c,0x3c10ddc6,0x3c1af45d,0x3c1733e6,0x3bc9be7f,0xb940a4a0,0x3b7b0201,0x3bb2cf1a,0x39db1e51,0x3be4e1fb,0x3b70c24e,0xbbbf72cd,0x3a6e4e9d,0xbbf80490,0xbc1502b0,0xbc138acb,0xbbafa305,0xba6bfd5c,0x39ea75ac,0x39a9b881, +0x3a49013b,0xba301586,0xba395484,0xb9aa0c1a,0xba83b73e,0xbab92d12,0xba6bf920,0xbafdc5b5,0xbb4d3b58,0xbb30c6c9,0xba2c3666,0xbb1bfa5a,0xbab7f234,0x3a6df7c0,0x3aa6eb31,0x3b12b479,0x3b07b177,0x3aa93a18,0x3b090bda,0x3b05def3,0x3b490125,0x3b155e9d,0x3bd0bb77,0x3bc005a8,0x3ad28b7d, +0xba90db61,0xbaf9aa98,0xbabe1aeb,0xbbc8c15f,0x3b72233f,0x3a69fca8,0xbb01ede7,0x39f1f724,0x3aa0f07f,0x3a4b6e88,0x3a95f101,0x39b2c636,0xba8201b3,0xb928afdf,0xba092ea2,0xbb0cc516,0xbb3cadf8,0xbb1a31d8,0xbb16a9f2,0xba9c6793,0x3a32fd45,0xb986f71d,0xbafc504e,0x3a0932de,0x3b0b78f5, +0x3adf37ea,0x3b0ff83f,0x3a5bc1b2,0xb90b83bc,0xbab8cd3c,0xbb0c11d4,0xbb596a7f,0xbb93976b,0xba320970,0x3b089e80,0x3bcbfcd0,0x3b2218cd,0x39bc9bfc,0x3b17fdbc,0x3aa3f469,0xbb38d4e6,0xbbd225f4,0xbc2359a8,0xbc2c3128,0xbc47c41a,0xbc46355e,0xbc218ceb,0xbc00642f,0xbbe1d49e,0xbbcbe7db, +0xbb9fb24c,0xbb8dcf35,0xbb62866e,0xbb564ecd,0xbb685a72,0xbb69bf46,0xbb2187de,0x39a3467f,0x3b034892,0x3acb1f8a,0x3b2a30bb,0x3b27de75,0x3b2ba901,0x394711ef,0x35855fcc,0x3a7fb8ec,0x3b0091db,0x3b3e84fc,0x3b2d296c,0x3b1652b1,0x3b055024,0x3b3c234a,0x3b34b515,0x3ad5c17f,0xba089f3b, +0xbb15cc93,0x3ad90de8,0x37d74474,0xbb522f98,0xbb3d0966,0xbb89e423,0xbb9ad951,0xbbc4fc71,0xbbea7982,0xbc01c225,0xbbdefd99,0xbc0cb066,0xbbc5f3fe,0xbbea07a5,0xbbb80acd,0xbb94475d,0xbb17341a,0xbab76fe2,0xba74ae63,0xba9d6967,0x3adb7494,0x3b3f22a7,0x3afb1aff,0x3b15163f,0x3ae00b69, +0x3aa2c7e9,0x39d69217,0x3a23ef4d,0x3a259107,0x3a441f43,0x3a4f0ce3,0x3a7c3a57,0x3a91fd14,0x3a894dcf,0x3a8f56ca,0x3adcbdc1,0x3a815f47,0xbace6e6f,0xbaf78390,0xbb9f4d83,0xbb0036dc,0xbb686d8e,0xbb59a37d,0xbb0d8a48,0xbb172a94,0xbab87592,0xbb04f7f2,0xbb61cbab,0xbb2b4d03,0xbb0e8308, +0xbb4380ee,0xbb67f126,0xbb411202,0xbb28c3c5,0xbaca0cab,0xbb4eceec,0xb8a4448a,0xb9b4dfa0,0xb9db360b,0xb9c3fca4,0xb9e350a3,0xb9b00f15,0xb9965b49,0x3890d418,0x3910ed13,0x38c117dd,0xb884004f,0xb9b1ff17,0xba2da131,0xba44f38e,0xba88f21a,0xbaada07e,0xbad78041,0xba68dcba,0xb901be9b, +0xbb88da4a,0xbbc1ed6b,0xbbb32e46,0xbb4b19d3,0xbbbe8db7,0xbbc7c93c,0xbbd331a8,0xbbd6dba2,0xbbc5caf4,0xbbdbb590,0xbbe2fc6e,0xbbe02092,0xbbd39489,0xbb68d5ed,0xbbc9cffa,0xbbbf32f4,0xbb757973,0x39269c48,0xba347920,0xba038a1c,0xba0716ba,0xb9fb0c43,0xb9ed468f,0xb9e4515d,0xba0b0d96, +0xba1b2c56,0xba24407a,0xba2d4e8e,0xba30cd65,0xba40dbb6,0xba4bcf3c,0xba4cd8e4,0xba454936,0xba42e7a7,0xba9f80b0,0x38967c4d,0xb88b0ef8,0xba51c2d5,0x3ba6cf8e,0x3bb6e72b,0x395e6efc,0x3b7d56f2,0x3babbda8,0x3b02bd1e,0x3b26b34d,0x3b23bf24,0x3ac7ddd2,0x3ad4b35d,0x3ab81aff,0x3aa7c739, +0x3ba035ea,0x3b73ac3e,0xb9490ab1,0x3b942b62,0x3b937884,0xba3dc62d,0x38c47265,0x383b5672,0xb94d2152,0xb9b0d1d6,0xb9904418,0xb8d0a501,0x39ce4f16,0x39fd65b9,0x398fd30d,0x399de7a7,0x39b0b7fe,0x39fd3a27,0x39b9fe0b,0x39549cce,0xb8daf51b,0xb8dca9f3,0xba6d0736,0x3aa78a7a,0x3b952b46, +0x3aacb73c,0x3ac42050,0x3b2678d7,0x3b1b4415,0x3ae33bc0,0x3aeb44f7,0x3b48ea25,0x3b9d8bcb,0x3b37aa25,0x3ad5a466,0x3b5c3615,0x3aa2ab76,0x397c1b65,0x3a9db285,0x399260c2,0x3b2934c9,0x3abbb139,0xb9100524,0x39f4813f,0xb9fc3fed,0xba8d44ed,0xba874517,0xb9a3ad73,0x3abe0c01,0x3b08d117, +0x3ab08289,0x3a8e9c08,0x3a757b83,0x3aa78dc1,0x3aaad661,0x3a6ffe1c,0xb9489ba5,0xb924a6b5,0xbad83cde,0x3b02f2a2,0x3bc34d56,0x3b77d352,0x3992ff37,0x3b285167,0x3b361904,0x3a8fa874,0x3b8f7635,0x3b4acd3d,0x3bb692dd,0x3a5f4155,0x3b08643b,0x3b684570,0x3a78f4fc,0xba0625af,0xba8fd84c, +0xb93f1454,0x3b148406,0x3b007706,0xb8b3ca37,0x3a0541a4,0xba3b3818,0xbae369e4,0xbac141a0,0xb955d2f4,0x3b2c0d3f,0x3b66d40e,0x3b0a3d08,0x3b19bf57,0x3b0e94dd,0x3b27fa15,0x3b21d87a,0x3a951760,0xba5ec27b,0xba269111,0xbb4719e8,0x3ac45015,0x3b90520a,0x3a719d35,0xbb4a3e7d,0x3b813c3a, +0x3bace302,0x3afbf542,0x3b998b8d,0x3bb415dc,0x3b8cc7b2,0x3b8e8531,0x3b81ee74,0x3b831881,0xba924fe6,0xbb525a68,0xbada2ad1,0xbb23d971,0x3a9cf70f,0x3b00196a,0x3977c5d4,0x3a8d6b44,0xba90d1be,0xbb386a9e,0xbb1520fc,0x387df26f,0x3bc599bd,0x3c047747,0x3b9d5006,0x3b85c3e6,0x3b591864, +0x3b710f7f,0x3b8d93af,0x3b4ad01b,0xba5c84f6,0xba1feb4b,0xb9625af1,0x3c049685,0x3c91b587,0x3c808249,0x3bea6254,0xbb7bbeaf,0xbc061c17,0xbb5e1d13,0xb9ba6f18,0x3b2cba03,0x3bdc7319,0x3b536cde,0x3a23a3a4,0xb9cfb9ec,0x3ad17956,0x3b188faf,0x3a96f005,0x3add8fdf,0x3b9cd152,0x3baa58e5, +0x3a7b7843,0x3a134dd6,0xbafd7599,0x3a159520,0xbb0a6da7,0xbc058efb,0xbc2bc7c0,0xbc2ae7be,0xbba8b61a,0x3a20948e,0x3b84a3e8,0x3bb01345,0x3b67dacf,0xbaa64f41,0xbbd81a87,0xbb30da71,0xbc4c060b,0xbc207dc5,0xbc59a6df,0xbc5e854d,0xbbb021fb,0x3bf83fa6,0x3c1ea116,0x3bbc911c,0x3a926607, +0x3984eb36,0x395848b6,0x3b4b310b,0x3b9099e7,0x3b62aa7b,0x3aeffa0f,0x3a8ee184,0x3b4097c5,0x3b0af982,0x3b11ffc7,0x3aea91cd,0x3ad449f9,0x3b6da7d1,0x3b46aa83,0x3b2ce332,0x3af572eb,0x3b06f68a,0x3ab134ed,0x3b29ec71,0x3bc386e9,0xbb5fea8a,0xbb79db93,0x3b812138,0x3baaca6b,0x3c0e59af, +0x3c57176c,0xba58ca32,0x3bf4c8ff,0x3c872b46,0x3c4c73eb,0x3bf31018,0x3a9a6b57,0xbb980fab,0xba927713,0x3bbc0916,0x3ba90917,0x3b691c50,0x3a268db8,0x39ad7e4c,0xb8335345,0x39916c62,0x3b341331,0x3b229d71,0x3a8fdb2b,0x399cabe6,0x3ac685f5,0x39c56af8,0xbb13b88e,0xba711727,0xb98e98a8, +0x3b9283eb,0x3bf37791,0x3c14d0b3,0x3bef394e,0x3b2056b0,0xbb96d1a1,0xbb21f1c1,0x3b66b27e,0x3c397b77,0x3c7f0a5b,0x3c3d3af1,0x3b21c176,0x3ae78345,0xba9bde3a,0xbbedc421,0xbbdd0401,0xbb8552c8,0xb9fea4c0,0x3a5012db,0x3a133b8d,0x3a0b0cfa,0xba0cac8b,0xba75c4cb,0xb95d2d74,0xbab7e48b, +0xbae6c26b,0xb9d9a401,0xbb0238e0,0xbb1ca851,0xbb05036d,0xba9bbc4e,0x394097b4,0xbaf76a54,0xbaa9b30d,0x3a9d38fa,0x3b26ac7b,0x3b7825f8,0x3b81d316,0x3bc04658,0x3c072dc3,0x3c2857e0,0x3c23581d,0x3c5cdb22,0x3c29bb68,0x39ced17d,0x3bbb7ffa,0x3c14d78b,0x3c46b322,0x3bd9a0be,0x3c8379a1, +0x3c67e7c7,0x3c05c18a,0x3bb59d9a,0x3b9670f3,0x3b71f9ac,0x3b1bc2a1,0x3b0cdb27,0x3ab7b6f1,0x3a2211e7,0x3a9d44b2,0xbab9a460,0xbb1e9c76,0xbafbfd9e,0xbb0431f1,0xba8d8dc4,0xb9a7b80c,0x3a9a80fe,0x3b4573f7,0x3abd293b,0x3af6598b,0x3b120290,0x3ab0e803,0x3aeb4ece,0x3b1105fc,0x3b43ae4e, +0x3b2a6bab,0x3b46657f,0x3b8ce18a,0x3bab72c4,0x3c026590,0x3c4a6ce2,0x3c450f1f,0x3c4706be,0x3c55045d,0x3c82a460,0xbaf2fc09,0xb903aa7d,0xbb95c0c7,0xbbcc5f50,0xbc087143,0xbc0bea79,0xbc0b5013,0xbbc510ac,0xbbd418e4,0xbbc59f68,0xbbae3b31,0xbb7a18e8,0xbb48d005,0xbb436093,0xbb5c1b76, +0xbb260042,0xba9cb76f,0x3a594d71,0x3abe7b65,0x3ab2a1cb,0x3aa2efc0,0x3ae5eaca,0x3b1d644c,0x3b1929a6,0x3b2ab4cf,0x3b44f3f4,0x3b473357,0x3b195985,0x3a60a4c7,0x3a141fe2,0x39c15d6f,0x3ab50228,0xb983d169,0xb9ef6cd3,0xbaa64a92,0xba4b1c4e,0x39bccf30,0x3a97f006,0x3adc87e8,0xb8e80192, +0xba7d4deb,0xbb2591ab,0xbb911de3,0xbbd0abdb,0xbbc46126,0xbbcf5a99,0xbbbde17a,0xbbc5742a,0xbbb21b09,0xbb9bcca4,0xbb5c3adb,0xbb0a7437,0xba8af64b,0x394284d9,0x3b153fb5,0x3b465c3e,0x3adc59ed,0x3af3b2c7,0x3abe5145,0x3a90f3d4,0x3a2a470b,0x38e4b5e1,0x3a800101,0x3b0454a2,0x3b4e044b, +0x3b4fc099,0x3b4e060b,0x3b4a4916,0x3b338d2c,0x3b1be959,0x3aeb48d7,0x3ac51595,0xba996c63,0xba3b8917,0xba7e5734,0xbab6572e,0xba4b0899,0xba8ea753,0xba8e6550,0xba6428c5,0xba89a1b1,0xb9d78a24,0x39c5e2f1,0x3911f429,0xb9f4c3ef,0xb995676b,0xb9ee41da,0xba95a90f,0xba1fa12f,0xba97f90f, +0xba0a5e55,0xbace8ac9,0xbafb7f99,0xbacfa558,0xbad750a7,0xbac2cfac,0xbab2318f,0xbaab24e0,0xbacd768a,0xbaef45a7,0xbaecadda,0xbad95164,0xbab1a3ff,0xba86c156,0xba9404f7,0xba8c4e92,0xba8b3146,0xba70c945,0xba439556,0xba659ee2,0x3abff7de,0x3accd847,0xbaa0eaa9,0x3a8313b5,0x3ab55f2a, +0xba0b6cf4,0xba0e38a3,0xba36f5fa,0xbaa0aebb,0xba8e82b9,0xba8c36f0,0xbaaf08e6,0x3aca5901,0x3a75b37c,0xba7e3bde,0x3abdba56,0x3a7b2b56,0xbadd8727,0xba9e9de3,0xbaa8dbb5,0xbaaca334,0xbaaf2644,0xbab45536,0xbab1bbec,0xbaa8bd6d,0xba9adbcd,0xba96f584,0xba8ef4fe,0xba8af4ac,0xba7915d4, +0xba6fc1a3,0xba6390da,0xba619cda,0xba4a5424,0xba8aff7b,0xbb688cdc,0xbb489ef3,0xbb3d52d1,0xbbb7f783,0xbb7b219b,0x3af1eb5e,0xbbbd2193,0xbb8904f6,0x3a13f92c,0x3a8913d3,0x3aa762b2,0x3b08d8b1,0x3ac1ba03,0x3acb3e76,0x3b26315f,0xbb90c648,0xbbcbd090,0x3b0c99c3,0xbb8a5f80,0xbbc3675c, +0xbb49e8e5,0xbb546763,0xbb729573,0xbb7ffbe1,0xbb85965a,0xbb854d91,0xbb837659,0xbb5ef4e4,0xbb5650be,0xbb5f9a5a,0xbb770afa,0xbb825cf0,0xbb81be39,0xbb92071d,0xbb8dffc2,0xbb5b111b,0xbb697f2f,0xbb4474c5,0xbb8fd9c6,0xbaf89479,0xbb6a651a,0xbb960530,0xbb05d94c,0xbb014946,0xbb0e69f4, +0xbae775cf,0xbb2575cf,0xbb1703b7,0xbb6c7b16,0xbb3b1fe6,0xbb1461df,0xbb3cc028,0xbb63288e,0xbbb37ba0,0xbb80ff4a,0xbb1032cd,0xbb8db431,0xbb8047ff,0xbbb0d457,0xbbc24e56,0xbbd26316,0xbbc23ae4,0xbba9ab50,0xbb4d6eee,0xbb31d75c,0xbb7704c4,0xbba20043,0xbbc44826,0xbbc48020,0xbbeacb8a, +0xbbd19aa3,0xbb71d661,0xbb8860e1,0xbb2c578f,0xbb36d8b7,0xbb3f0cb3,0xbae6d484,0xbb6d957d,0xba6e89b0,0xb98cfdbe,0xba947cfc,0x3a8e029f,0x3b274ead,0x3ab9fa48,0x39227b05,0xba8180fb,0x3a7dc81e,0xbb3ed819,0xbb7ebfee,0xbb8bc90f,0xbb80a060,0xbb883d0a,0xbb530338,0xbb8b3afe,0xbbca1054, +0xbbfcb7c0,0xbc11cf3a,0xbc0a6685,0xbc0099db,0xbb80e6ac,0xbb4a67bf,0xbb93e1ae,0xbbc861cf,0xbc03440e,0xbc00a010,0xbc2d0734,0xbc15b2c7,0xbb6a8c41,0xbba19e99,0xbaf9327f,0xbb37a41b,0xbb21fbf1,0xbb4b9ed5,0xbba37c7d,0x3abbcad5,0x3b9c788f,0x3b3a1fcd,0x3ba9986d,0x3bba9182,0x3bc5b230, +0x3b86a120,0x3b5298c9,0x3b9bc4d5,0xbad294ff,0xbb586169,0xbb881f45,0xbb4fa5c0,0xbb42d818,0xbb147a8d,0xbbabf3f7,0xbc17de86,0xbc4ac1ea,0xbc64540b,0xbc4d0b17,0xbc1cddb9,0xbb0d0fe7,0xb8671edc,0xbb6dbbea,0xbc00b2e7,0xbc3b6a8a,0xbc42d2b9,0xbc70623f,0xbc2fb43e,0xbb21696a,0xbb7ff98a, +0xbbb5d6c0,0xbb350e27,0x3b9c722f,0x3c069790,0x3ba4af6e,0xbbb36744,0xbc1ee825,0xbbb2bd6b,0xbabdbd11,0x3ab9be3b,0x3b9b19d0,0x3b540dae,0x3a8f02e2,0xbac649d4,0x3a85ba72,0x3af6a7a2,0xbaa19449,0xba97a336,0xbb0366c7,0xbb2af0a7,0xbb60128a,0xbacbb648,0x3a54583a,0x39a5f875,0xba9d4227, +0xbb606130,0xbc01b8cd,0xbc1137fb,0xbb967c42,0xbb248cf0,0xbb66c5c6,0xbbde9ed9,0xbc1643db,0xbc473a72,0xbc46684d,0xbc23e50e,0xbbe4f3e6,0xbc2484dc,0xbc9d5e46,0xbc87d9ae,0xbc45c541,0x3b8b130e,0x3c2608cc,0x3bc7849a,0x3a8a0c8f,0xba3c0120,0xba16fc01,0x3b18d233,0x3b73e40c,0x3b7539b2, +0x3acb1c54,0xb9675c31,0x38696691,0x3a34df96,0x39380071,0xbacf02eb,0xbb88efc7,0xbbe2a5be,0xbc220edd,0xbbd3102f,0xbb850af2,0xbb25c9ca,0xb9c63825,0x3acc1c53,0x3b89195f,0xbba9009c,0xbbe754d7,0xb811c982,0xbb4facc0,0x3b03683a,0x3c6a868b,0xba74cc75,0x3b6e3771,0x3c6e5e9c,0x3c149913, +0x3bb6208e,0xbaa795fa,0xbbc01ece,0xbb6c5046,0x3b86c1af,0x3b866ae4,0x3b67f1ed,0x39401c24,0xb927c612,0xb9dcf0a4,0x38d4dae4,0x3ad7ed40,0x3ac9ffa7,0xba4151ef,0xbaa39d00,0xbb40afae,0xbb0e3a90,0xba9ea498,0xba91a063,0x39a65966,0x3886e470,0xbac14c73,0xbb5d7e16,0xbb86d614,0xbb9e2751, +0xbbcd8df5,0xbb848562,0xbb9205a0,0xbbea0ebb,0xbc6e9339,0xbca31e78,0xbcbacf38,0xbc0b74df,0xbc628a9a,0xbc13ced8,0xbbe19f0f,0xbba5c439,0xba62a930,0xb8eb58bb,0x3a74f83f,0x39be025c,0xb9e19fb5,0xba86aefb,0xba57036a,0xbafc27a0,0xbb083a1f,0xba998402,0xbb2ec373,0xbb66e407,0xbb5dbb70, +0xbb1689f3,0xbb2c4979,0xbb566d0b,0xbb70d353,0xbb98e671,0xbb8f60d7,0xbb89a1f0,0xbb2759ba,0x3aa9efea,0x3b1906f8,0x3b378932,0x3a61c6a3,0x3b8f98ae,0x3af41c00,0xbb5d122d,0xbc5c8d48,0xbc9264e2,0xbca8ef97,0xbc845e65,0xbbaf04e6,0xba8f9d24,0x3b8ff602,0x3b0d1562,0x3aef140d,0x3af83bb7, +0x3aa37889,0xb68821b0,0xb9de5c9a,0xb984c2d7,0x39ea86d4,0xba879983,0xbb0d492d,0xbb33c580,0xbb1eced8,0xbac93f06,0xba52cefe,0xba7d47bc,0xba81daa0,0xba3a8c6b,0x3a82cca8,0x3abfe81f,0x3a8f2d33,0x37f00d7c,0xbb06bbf7,0xbbb9d92d,0xbbedd1cc,0xbc0870fa,0xbc1de8da,0xbb99c52e,0xbb280c7f, +0xba14281b,0xbbab3c42,0xbbdf164a,0xbba3a601,0xbbb1cdcc,0xbc1678e2,0xbc1a9be1,0xbc040c36,0xbc32c261,0xbc2dbcf3,0xbc2c7307,0xbc0ae472,0xbbccb2d1,0xbbcef76b,0xbbba10a1,0xbb93b506,0xbb83ec66,0xbb5b1868,0xbb442f07,0xbb8147ab,0xbb8cc43d,0xbb81bae0,0xba261dba,0x3a925f78,0x3af0c9a1, +0x3aaea1b2,0x3a09077a,0x3a018b6c,0xbacdce59,0xbb03c4a0,0xbabb949c,0x3908d9de,0x3af70940,0x3b4c4fb6,0x3af4cb69,0xb9fc4fd8,0xbb8034e0,0xbb5417c7,0xbb89dd13,0xbbcf0f1b,0xbbffb33a,0xbacbaa2a,0xbae246b6,0xbb66d03c,0xbb93b60b,0xbba7c96a,0xbbba86a8,0xbbd5e534,0xbbf736f4,0xbbea7d8e, +0xbbd51873,0xbbea5e36,0xbbb4ca65,0xbba7a88b,0xbb82fc12,0xbb681f50,0xbb325ae8,0xbb23146f,0xbacd25fe,0xba895030,0x3a257594,0x3a988253,0x3aa59c9a,0x3aef4825,0x3ac4d413,0x3aa8c6d9,0x3a6fb722,0x3979e900,0xba1902e2,0xba8f5c3a,0xbacbf742,0xbabb7714,0xbad8d688,0xbacaf031,0xbadb7337, +0xbaa99420,0xbac70373,0xbb2963f3,0xbb3636b6,0xbac12571,0xbb19fbd1,0xbb2c1f23,0xbb1cd6b3,0xbb2a7d03,0xbb297d1f,0xbb31ae3f,0xbb582209,0xbb721608,0xbb7a801e,0xbb657d41,0xbb820a02,0xbb60c3bb,0xbb34881b,0xbb52f885,0xbb011194,0xbaf16d1b,0xb9c89594,0xb8371566,0xb9d573d3,0xb9ea85dc, +0xba06ed2f,0xba0369a9,0xb9cf8b4d,0xba3d0bc6,0xba9f3c12,0xbb01ae79,0xbb351bf1,0xbb7580da,0xbb9ac551,0xbb8a3308,0xbb7a28b5,0xbb6238df,0xbb520b66,0xbae3e529,0xbac31bdd,0xbb695ad3,0xbb44159a,0xb85c7bd2,0xbb79a1fe,0xbb602717,0xba8d0633,0xba8bd4a5,0xba838941,0xba26323f,0xba4dea8b, +0xba3d733b,0xba132849,0xbb7f6585,0xbb8223c9,0xb9cd45bd,0xbb5847e9,0xbb6602ec,0xba740a5d,0xbab32a4c,0xbab0d592,0xbaaacaa7,0xbaaacbfc,0xbaab342e,0xbaa3c375,0xbad40aeb,0xbaf3d871,0xbb06b55d,0xbb151f2f,0xbb211b85,0xbb3e2806,0xbb27325f,0xbb1def32,0xbb1015b4,0xbb055fa1,0xbb163b50, +0x3b6173c1,0x3b327dd3,0x3b879781,0x3b709909,0x37e625a6,0xbbe646f3,0x3b9aaac3,0x3a3a564f,0xbba9de9b,0xbba885e4,0xbba78eda,0xbba6483a,0xbbc3713c,0xbbcba06b,0xbbc6305b,0x397afd51,0x3b79cb70,0xbc002431,0xba046ffd,0x3b42481d,0x3b81bdd2,0x3b3f36af,0x3b5c81a8,0x3b53c741,0x3b5173e4, +0x3b579bf7,0x3b614ddc,0x3b7de505,0x3b835464,0x3b802496,0x3b80fc60,0x3b80a8a7,0x3b7fda49,0x3b76e7c7,0x3b625bda,0x3b2f73a2,0x3b48269e,0x3b2ba414,0x3b99bf19,0xbac3c0cb,0x3b717310,0x3a338922,0x3aba462e,0x3b55054c,0x3b1fed38,0x3b7d7385,0x3b90bf55,0x3b8d5ca1,0x3b776f8e,0x3b33e2ce, +0x3b77753d,0x39f583e9,0x39866414,0x3a7bc7dc,0x3a83f09c,0xbb294aa2,0x3b849296,0x3b5eb22b,0x3b791c4c,0x3b74cd9b,0x3b6623aa,0x3b7c2b4e,0x3b92a5d9,0x3bc1fcae,0x3bd06f9b,0x3bbe932b,0x3bb545fe,0x3ba9806c,0x3ba307a0,0x3b9da6d8,0x3b85ef51,0x3b0d5e46,0x3b32c70b,0x3b27155b,0x3b8db921, +0x3b84cead,0x3b8197ba,0xba55cbcb,0x3b05ce12,0x3b0c5a0e,0x3ae4e2a7,0x3b4bb8cb,0x3b7d1a25,0x3b9f99a9,0x3b2cc4fd,0x3a1a2692,0x3b880696,0xb95d30e8,0x37092053,0xbabecfe8,0xba05bc04,0x39c75a6e,0x3b400439,0x3b81e7da,0x3b7d50c6,0x3b85fb2b,0x3b6be387,0x3b8bb38d,0x3ba6e29c,0x3bfec89f, +0x3c0ea404,0x3c00999b,0x3c054fd6,0x3bfaa52c,0x3be64949,0x3bd21616,0x3b8f7a03,0x3a97576b,0x3b0b220d,0x3ae3173d,0x3b4ec0a6,0x3b443617,0x3b192565,0xbb2180b1,0x3b5bfe9c,0x3bad220e,0x3b3be272,0x3bb13d13,0x3bca80ad,0x3bc0ac69,0x3b4ddda6,0x3b5570d1,0x3b9b0836,0xba297e63,0xbad188ed, +0xbb3a2d88,0xba89fba1,0xba771378,0x3b2c3b04,0x3b826a2b,0x3b88e7af,0x3b9adf9a,0x3b8bdeca,0x3bba7487,0x3bf886c6,0x3c503f81,0x3c637d27,0x3c3899ff,0x3c2bb211,0x3c105e71,0x3bf589ea,0x3be8d3f6,0x3baa04f3,0x389ce106,0x3a786cae,0x3be8e7e0,0x3bd2be87,0x3c2b1cbe,0x3c409375,0x3bc2e4e8, +0xbb5f76d9,0xbbebfecd,0xbb8b1cea,0xba2b6e3f,0x3afd4437,0x3b596bfc,0x3b7c63a5,0x3b01cb90,0xbac7c7ca,0x3af6e4e0,0x3b4a075b,0xb8c64500,0x3b0fc318,0x3ad217ef,0x3b8b8746,0x3bd7f74e,0x3ba0aa7d,0x3b90ed8b,0x3b3cb1fc,0x39c6472f,0xbb82d7c1,0xbb8c8076,0xbaf9ee0d,0x3bd25ec0,0x3c2086f1, +0x3c4c84a1,0x3c73384a,0x3c12adc4,0x3b58fa93,0x39efd4a1,0x3b4deb32,0xbbb89745,0xbb674873,0xbc25c048,0xbc32c622,0xbc07552a,0x3bb5f90c,0x3c2b6e5a,0x3beaa74c,0x3ac499bd,0xba08cd32,0xba802617,0x3ad1a15f,0x3b5a92ee,0x3b7616d7,0x3b3bf2cb,0x3af52bf6,0x3b1ec30a,0x3a8fe32a,0xba062f66, +0x3af6bedd,0x3ba13b9c,0x3bd4713f,0x3c0dbdb9,0x3bb20304,0x3b5c075f,0x3af42359,0x3b07b56c,0x3b407fd5,0x3b92e391,0xbb06edf5,0xbb166403,0x3bab0d9c,0x3bad4c40,0x3c1c9f19,0x3c814684,0x3ad0ce1e,0x3bb184b0,0x3c8a236f,0x3bc77d4f,0x3b1a5e86,0xbad6086c,0xbbb492ad,0xbb56d8ba,0x3b69cbb1, +0x3b8ec8aa,0x3b76b7b8,0x3a182cd6,0x394e047d,0xb99d5587,0x3901b713,0x3b1ab797,0x3b5cf6ac,0x3a420fdf,0x3aff32c0,0x3b11f037,0x3b219571,0x3a6629d4,0x39918582,0x3b163233,0x3c081a74,0x3c5b0c9d,0x3c8392fb,0x3c7e18b7,0x3c37d973,0x3b89bac0,0x3bef41ab,0x3c80e1a9,0x3ce92ba7,0x3c928d78, +0x3c0ae380,0x3b56da2a,0xba692d13,0x3b0f96fa,0xbc04e955,0xbb9c7a10,0xba6df48f,0xba733b6b,0x3b0657d1,0x3ad33dfa,0x3a89d827,0x3923f52b,0xba807940,0xba114dcb,0xbaceedb9,0xbaeefdeb,0xb9e2cac2,0xbaf5cefd,0xbb230a60,0xbaf79830,0xbaba1f26,0xbb131753,0xbaefb53b,0x3a707ff9,0x3b531803, +0x3ba83fb6,0x3bafd84a,0x3bc0bc8d,0x3bf22f95,0x3c266af5,0x3c364d76,0x3c1a20a2,0x3c359ea6,0x3c0b99da,0x3bb09f95,0x3c1b5589,0x3c6fc2a3,0x3ca36181,0x3c27ccc3,0x3cc28ec4,0x3c4a1214,0x3b2aa084,0x3b87656c,0x3b968ee8,0x3b3da792,0x3b087e83,0x3aeaabb8,0x3a756a0d,0x3ab6e17e,0x3b09dbeb, +0x39cae62c,0xba8734b0,0xbaf37b26,0xbb0321e6,0xbabf1701,0xba6b7bf0,0x3a88d26b,0x3ac5ce45,0x3b1eebbb,0x3b16bbbf,0x3ad90ab9,0x3af25321,0x3aeaa0f2,0x3b23f389,0x3b63d844,0x3b6b4f63,0x3bac857e,0x3c0b4c3f,0x3c288d44,0x3c5bbe3f,0x3c97a9d8,0x3c9c484a,0x3ca488b0,0x3cb86603,0x3cc471da, +0x3a21276e,0xb9b788e9,0xbc0dfec0,0xbbfeb535,0xbc11af1c,0xbbe46113,0xbbb3fe18,0xbb888ea5,0xbb8ab505,0xbb8bb7f4,0xbb62fd0d,0xbb4c0a81,0xbb1bef01,0xbb127a2c,0xbb292af1,0xbb156ef0,0xbafb24e0,0xb9c49889,0x3a4a967f,0x3ab3a418,0x3b347d88,0x3b8471cf,0x3b96692b,0x3b9e2ce9,0x3b95b1ad, +0x3b8e9dab,0x3b94e922,0x3b7193a9,0x3b15cc68,0x3b28fc6f,0x3b7f340a,0x3be994e4,0x3b93646b,0x3b4cd979,0x3ac0be29,0x3a338634,0x3b22a5f9,0x3aca0650,0x380de7d3,0xba4d424a,0xbb5a5330,0xbb803d2d,0xbbabe850,0xbbcac655,0xbbcd6743,0xbbb12b80,0xbbb5e63f,0xbb83028b,0xbb90ed14,0xbb33427d, +0xbb3a8057,0xbafdb8b3,0xbb050aa8,0xb9d6f0c7,0x3ab4b437,0x3b69135b,0x3b54f2e3,0x3b3bf1b1,0x3b2e3aae,0x3b23ac1c,0x3b1e80c1,0x3b0dc6ba,0x3b58cada,0x3b947f8b,0x3bbe8c45,0x3bd082e5,0x3bd46fd5,0x3bdf66e0,0x3bb31aea,0x3b950e40,0x3b7574bb,0x3b4793ee,0x3a32780b,0x3a85fc75,0xbb31e61f, +0xb64f2065,0xba2ff49e,0xba85f154,0xb93bce18,0xb9c0a66f,0x399ccd65,0x3a3f534a,0x39928d02,0x3a89cdce,0x3a45b25d,0x3a320f94,0xb9725ab6,0xb96ec983,0x3a76be3c,0x3a122b97,0xba2b1755,0x3a16f9a3,0xb9870426,0x379bc1de,0xb8ab1c0d,0xb90f7c80,0xb94bbe83,0xb9bb173a,0xb7e16d07,0x39589bc9, +0x3a16bd59,0x3a7ff33a,0x3ad22bf0,0x3b1d3e2c,0x3b0ac9da,0x3afad771,0x3aca9031,0x3a9dc976,0x3ae87165,0x3b14041f,0x3af47c77,0xb8e9259b,0xbb82c5d9,0x3b13fedb,0xb9503183,0xbb6f7886,0xbb7c56ed,0xbb85c6fd,0xbb8a13a7,0xbb961ab7,0xbb9c82cd,0xbba348bb,0x37c831f9,0x3b0fcc26,0xbb8beb6d, +0x37945e18,0x3ad9e74a,0x3ab09676,0x3a971258,0x3a9ea131,0x3a8ee414,0x3a8cb002,0x3a884818,0x3a7aafdf,0x3a9e379c,0x3ab893ab,0x3ad1e16b,0x3af05b7e,0x3b017fef,0x3b118824,0x3b0408f7,0x3b00bb3e,0x3afb9c57,0x3b023cc5,0x3b0c5d9d,0xbb9ee717,0xbb867ea0,0xbbc10b88,0xbb0b9aee,0x3b19ffa0, +0x3be455c1,0xbb826516,0x3aa88bab,0x3bd0e9d7,0x3be1b24f,0x3be5ca53,0x3be433eb,0x3be4f856,0x3be54270,0x3bf57521,0x3aa22966,0xbb7630d1,0x3be867f8,0x3ab8b7aa,0xbb2065ab,0xbbbe8563,0xbb9293fe,0xbba91450,0xbbaef910,0xbbb17a13,0xbbae1ad8,0xbba4a060,0xbb968321,0xbb93eba7,0xbb9ac9f7, +0xbba43bd2,0xbbab7823,0xbbb29826,0xbbb47e29,0xbbacb1bb,0xbb8ba1c6,0xbb991a2a,0xbb8f6cb5,0xbbafeac3,0x3b84ea70,0xbb6f8001,0xbae448f0,0xb925c6f8,0xbad569ea,0xba8b45e5,0xbb219ec1,0xbb17f609,0xb8d974ac,0xbb3f018e,0xbb317286,0xbadd14f3,0xba876351,0xbb1029a9,0xbb80fdf5,0xbb679821, +0x3b1990a7,0xbbac4ac9,0xbbc9a461,0xbbe0f8ef,0xbbfb60eb,0xbc024263,0xbbf18d74,0xbbc71a77,0xbb934170,0xbb88f921,0xbba99195,0xbbca9953,0xbbe6e401,0xbbf09f40,0xbbf236bb,0xbbd137ac,0xbb7f3039,0xbb95601d,0xbb9a4048,0xbb892b80,0xb90a76be,0xba2be41e,0xba9933fa,0x399df931,0x3a1f0fec, +0xb8fb69f6,0x3b132393,0x3aca2fb5,0x3b6c78c1,0xbaa238f2,0x39dfbbe0,0x3a189ab7,0xba55b491,0xbb3abdef,0xbb7d6754,0xbb522646,0xbb01f708,0xbb699898,0xbbf7624f,0xbc046f30,0xbc1f9dd8,0xbc28ef44,0xbc1b003a,0xbbf84978,0xbb9cc4fe,0xbb8b44a3,0xbbc659b9,0xbbebc812,0xbc11ef96,0xbc22014d, +0xbc234912,0xbc096b16,0xbb6fcfe3,0xbb9e35f3,0xbb74a757,0xbb3a0e37,0x3a58205c,0xbb07b664,0xbb811e25,0x3a9300ad,0x3b8138bd,0x3b4cf2d2,0x3b9b42db,0x3bc4ec68,0x3bc37291,0x3b4fc1d3,0x3b047b24,0x3b70e754,0xbafd56e8,0xbb7ecf1d,0xbb4fdec8,0xbb8b9ac8,0xba9c770f,0xbb641af5,0xbc1acc87, +0xbc3a975b,0xbc6ce91b,0xbc77be55,0xbc5740ef,0xbc0cff79,0xbb34b34c,0xbaeced50,0xbbbadf5b,0xbc0fec0e,0xbc3ca3ef,0xbc55303b,0xbc431625,0xbbf9ace9,0xbaa51489,0xbb1f4450,0xbc358858,0xbb8b8e7f,0x3bc894f5,0x3c08a8a0,0x3bf9b7e1,0xbafda34a,0xbbfe1e5b,0xbbac0f4c,0xbad61220,0x3a3b64f0, +0x3ae165dd,0x3b75005f,0x3b1620c5,0xbaf24d4b,0x3abef9ab,0x3ab21a8b,0xba77b4b2,0xbb39ebe2,0xba3d7bb1,0xbb18bfaa,0xbbef37cf,0xbb90838c,0xbb92522b,0xbb27d011,0xbb8d6503,0xbbefb587,0xbc51fda8,0xbc56eff0,0xbbc9845b,0xbbbf4a82,0xbbdcd81b,0xbbebc7d8,0xbc4188dd,0xbc7afa26,0xbc62338f, +0xbc44228b,0xbc247054,0xbbf4d947,0xbc463919,0xbc5d3460,0xbc66d013,0x3af648ac,0x3c0f6897,0x3be0af81,0x3a9b424e,0xbaa613c8,0xbaffe779,0x3a2b8e1e,0x3b2389c6,0x3b42a40d,0x3aa2bc0a,0xb9442893,0x3a2e0376,0xb9c53012,0x3a2499f8,0xbb046f55,0xbbced615,0xbbf43979,0xbc3a8e69,0xbc12fe19, +0xbbc50fdf,0xbb40cf11,0x3b08570e,0x3b52c575,0x3a90083e,0xbbb42cd8,0xbbb63443,0x3b72cb7e,0x3a2ee80d,0x3bb0fa1d,0x3c8036d5,0xbaa0d4ab,0x39f121ba,0x3c67736b,0x3bae6cb7,0x38666563,0xba8757e0,0xbbc387bd,0xbb6b18b8,0x3aaa967d,0x3b40fec2,0x3b35e893,0x38a3fc4b,0xba63416b,0xba99c6e2, +0xb7b62b12,0x3aade3df,0x3a9a2962,0x39bf2579,0xba68eb6c,0xba22553f,0xbaa7d084,0xbb4b4945,0xba91c6ec,0x3a232dd5,0xbb2563a3,0xbbb7dc07,0xbc0185fc,0xbc1f7032,0xbc1ed386,0xbbf74e03,0xbc0edf7b,0xbc0593e2,0xbb23a9ec,0xbca7e329,0xbce02206,0xbcd3330a,0xbc45cec0,0xbc4d9983,0xbc001f8f, +0xbb828881,0xbb484333,0xb9a4d1aa,0xb9880832,0x3a7f8fcf,0xb8c9b734,0xb87ccc65,0xba9805ed,0xba7ebe3b,0xbb0564c3,0xbb01c0a9,0xba972816,0xbb2a5299,0xbb42c195,0xbb54854a,0xbb5a7273,0xbb087795,0xbb7969f1,0xbbcdfbfb,0xbbe95d17,0xbbe6fa5a,0xbbbe2381,0xbb1478a6,0x3b248a63,0x3b962a3d, +0x3bae85f5,0x3b88b4f9,0x3ba40aa2,0x3aa520d6,0xbb4acf68,0xbc50a8c2,0xbc8b74ea,0xbcacf0aa,0xbc6221f9,0xbb8d5998,0x3a821783,0x3c13e288,0x3b7d7100,0x3b44af68,0x3b520627,0x3ad8c5b3,0x390a6a3f,0x39d7c6b7,0xb8086267,0x3aacfff2,0x39e449eb,0xba64e8e7,0xbb298d96,0xbb1c4b41,0xbb02ace9, +0xbb02ddef,0xba7ad572,0x3a795743,0xba0564ba,0x39cf0b1b,0x3ac0a0f0,0x3a28cc8e,0x38d57632,0xbb0433cd,0xbbb3410f,0xbbc74c29,0xbbc4158e,0xbbc36b0e,0xbb36f8d2,0xbae4e4cd,0xbad5184b,0xbb82de0c,0xbb7f49ab,0xbb429dd5,0xbafd9811,0xbc1cb58b,0xbbf8d195,0xbb98f900,0xbc0afab4,0xbbf98a3c, +0xbbe28f94,0xbbb8b3b5,0xbb8332ae,0xbb9c2805,0xbb9183ef,0xbb7d429d,0xbb69e62a,0xbb534ed7,0xbb40bec1,0xbb5fdc12,0xbb6a0325,0xbb8210ab,0xbab862d1,0xb898473b,0x3ac3c7a1,0x39585adb,0xb9fd4847,0xba069994,0xba89d65c,0xba9625e8,0xba8e7745,0xb93c68d1,0x3a4dca17,0x3b10d6ec,0x3a57ab5c, +0xbaea2be2,0xbbca06b2,0xbbb95a30,0xbbc762ec,0xbbf4ac7c,0xbbfc4dc7,0xbb6b556c,0xbb1d0d1d,0xbb1c7a11,0xbb9073aa,0xbb9b907e,0xbbb63496,0xbbcc9226,0xbbeca4dd,0xbbc22b17,0xbbbf1755,0xbba3eb67,0xbb9c72b6,0xbb4c77e5,0xbb2df19d,0xbb1998c0,0xbb2716ba,0xbb1eaf8e,0xbaad7289,0xb69e50e7, +0xb86520b9,0xba0d3de7,0x3a13793f,0x3a849218,0x3a96afe6,0x3a9b10a8,0x3aa90271,0x39e7a603,0xb9a4cc54,0xba53b76a,0xbac7a49c,0xbadea7e5,0xbb1ad0fb,0xbb210dc3,0xbb3990cd,0xbb448126,0xbb3897b2,0xbb23a244,0xbb1cfb74,0x3aa4fa41,0xbb0edd4e,0xbaa0e8ab,0xba9bf9b4,0xbb19e0dd,0xbb1683f0, +0xbb4641fc,0xbb48942c,0xbb1300ec,0xbb4750ed,0xbb4b5a66,0xbb426e7f,0xbaeb10bb,0xbabec9d9,0xbb09749a,0xbab8d46d,0x399c4621,0xb9b25277,0x392d06cd,0xb950b0e4,0xb9aa2d2e,0xb9d769db,0xb9fd059b,0xb9d115a7,0xbaa1a8fb,0xbb05d679,0xbb447c8e,0xbb7cdb83,0xbb9cc4fe,0xbbb84be9,0xbba107cc, +0xbb899850,0xbb6a70e3,0xbb497dbb,0xbb00e35f,0xbb15a22d,0xba8e14e8,0x3a7fb3ca,0x3b6d65dd,0xbb207275,0x3970a165,0x3b3a78d0,0x3b4e2240,0x3b5765aa,0x3b55c375,0x3b6f762f,0x3b815c62,0x3b84ffd9,0x39b1975f,0xbb0d4447,0x3b813c19,0x3a3279fc,0xbaaa97c2,0xbaec9fb0,0xbad3d4a0,0xbae7b639, +0xbae2cedc,0xbae78fd1,0xbaedaad1,0xbae81eb6,0xbb0c3e8f,0xbb1af8a5,0xbb28c733,0xbb37c222,0xbb460e48,0xbb669402,0xbb4a3874,0xbb3f156d,0xbb2f8387,0xbb205dd9,0xbb2b5c04,0x3b4c6ea1,0x3b242da3,0x3b9e779c,0xba40101e,0xbba53a35,0xbc06f66d,0x3ab8b100,0xbb84b2a8,0xbbf96e5c,0xbc007e62, +0xbbfbe86f,0xbbda728b,0xbc0396d3,0xbc06133b,0xbbfa519d,0xbb92b8cd,0x395e1bcf,0xbc13ef61,0xbba98985,0xbab639d2,0x3b9055d0,0x3b23418f,0x3b41096a,0x3b3e0da1,0x3b3eef8a,0x3b45487f,0x3b4f7295,0x3b644e7a,0x3b6dac8b,0x3b6cccfe,0x3b67e022,0x3b5fd2a8,0x3b545d4a,0x3b424194,0x3b31de8c, +0x3b17720e,0x3b34e061,0x3b4fcce0,0x3b77b9df,0xbbb14930,0x3b36ec7f,0xbab07fea,0xb9ed7402,0x3afd3b7f,0x3aaec91a,0x3b48cb25,0x3b29a519,0x3ab32b34,0x3ade42f9,0x3ac15d99,0x3ace481d,0xba8d7b19,0xba6935b3,0xbad472d2,0xb9d0ec66,0xbbc37c26,0x3b1e3329,0x3b3b1716,0x3b249112,0x3b43a262, +0x3b470cf9,0x3b716d71,0x3b917982,0x3bb398a5,0x3bb8fe84,0x3ba7dbfe,0x3b982c18,0x3b812539,0x3b5a136d,0x3b2a2173,0x3b12e2f9,0x3ad7bf94,0x3b1918a5,0x3b78fcd8,0x3b5a21fb,0x3905ca57,0x3afc24b7,0xbb01d155,0x3a5648f1,0x3a6e76cf,0x3ab73080,0x3aa48668,0x3b64c82c,0x3b43d345,0x3b449df7, +0xba43d29e,0x3b40685e,0xbad59a55,0xba3ce8d3,0xbb3be302,0xbb07e1b6,0xbb378738,0x3a668ac6,0x3b557244,0x3b0f32d1,0x3b43d177,0x3b36e09f,0x3b74665c,0x3b954620,0x3bdbe1cd,0x3bf39fc7,0x3be0af8b,0x3bde174d,0x3bb73169,0x3b8e0e59,0x3b2313f6,0x3aadb941,0x3a51893a,0x3ade1683,0x3b94cb92, +0x3b37d596,0x3a2d6d0a,0x3b051bcc,0xbae9324c,0x3b1ed274,0x3ba2d24e,0x3b7f4e10,0x3bbb8f08,0x3bd3d960,0x3bedddf2,0x3b29f330,0x3b2bebf9,0x3b9f0792,0xb971c67b,0xba314999,0xbb93bc2e,0xbaa3e2dc,0xbb751be3,0x39a18310,0x3b119f76,0x3a4d1268,0x3b19522d,0x3b2ecc33,0x3ba20c3f,0x3bf92afd, +0x3c3cd0fd,0x3c3ef587,0x3c1a19d4,0x3c01670b,0x3babe838,0x3b37b2bb,0x3a0ef2cc,0x39e595c4,0x390be4d6,0x3a8a83f6,0x3bd3055a,0x39c4faf5,0x3a39ed98,0x3bac6bd5,0x3b91260b,0xbb380955,0xbbc8ea7d,0xbba27454,0xbad30936,0x3a674b8e,0x3a6cafb2,0x3b94a191,0x3b5dd85c,0xbb0c436d,0x3ad9604e, +0x3b3b7cac,0xba66e599,0x3aa0af72,0xbb01c564,0x3a6ed1d4,0x3be51410,0x3bc0432a,0x3bf17224,0x3b72d670,0x3add43e4,0xbaa65a3a,0xba9c3acd,0x3b06dde5,0x3c370abb,0x3c3c80df,0x3c43027a,0x3c4e61f9,0x3baa63ba,0x3939abac,0xb8e89457,0x3ae9c890,0xb81845b8,0x39f69f70,0xbc0ddd5c,0xbc1a13ba, +0xbc266748,0x3afc8bda,0x3c0f1efb,0x3be8d828,0x3b0692bb,0xba5ca2bd,0xbb0ea3ec,0x390d669e,0x3b0a3024,0x3b6185d9,0x3b409c71,0x3acb4e73,0x3a983a68,0xba07f670,0xbb4556b5,0xb9ecce37,0x3b41e28b,0x3b3c79f8,0x3bacbdde,0x3b1d6700,0x3aa063b5,0xb9fde0a4,0x3b4d341d,0x3b8064d6,0x3b18365d, +0xbb0719c5,0xbb1ffac3,0x3b864964,0x3b5f2e80,0x3c068320,0x3c83056f,0x3b4715b9,0x3a5042c3,0x3c696445,0x3a473a3b,0xbb055e98,0xbb2baad6,0xbb98555d,0xbb8028f6,0x39ce67d4,0x3b1a5d03,0x3b4be72a,0x3a2832f9,0xb939f8f8,0xba2ce5c3,0x395184ce,0x3aaebc9d,0x3b3a22ca,0x396f12d5,0x3b08b890, +0x3a926d74,0x3b294060,0x3b34e2b1,0x3a9c99ef,0x3b770846,0x3bfe09d4,0x3c3bb4c4,0x3c4fa863,0x3c4ad6b8,0x3c2d22bc,0x3c018832,0x3c21609b,0x3c811167,0x3cd596a0,0x3ba840b9,0xbbc4e3f0,0xbbc1c707,0xbbd5c28d,0xb9de5328,0xbc0159f6,0xbb529213,0x3a25c674,0xb9cd964a,0x3ae348b1,0x3ac3de6d, +0x3a78ada6,0x39f16a20,0xba8b60e9,0xba84db0a,0xbabc1feb,0xbabaad14,0xba518fb9,0xbadefe8f,0xbb2494c9,0xbb175d77,0xbb0f322e,0xbb8b7bf2,0xbb0e222f,0x3985d463,0x3a862ed9,0x3b25a000,0x3b2644c4,0x3b8860cd,0x3bc2dee7,0x3c01ecfe,0x3c05768b,0x3bd9e5e0,0x3bbe9482,0x3b7f736b,0x3bdc8824, +0x3baf61a5,0x3bffe1dd,0x3c2535e6,0x3b69b22d,0x3c7c47fe,0x3b3fd7af,0xbb06d926,0x3abdfeb8,0x3b3dfeab,0x3b0ca9c0,0x3af4ef86,0x3a471839,0x376d02e4,0x3aa363dc,0x3af6dde8,0x3ad9855a,0x39436a19,0xbb01cd51,0xbb0ff6b5,0xbb0cffd1,0xbacde4b4,0xb90fcbe5,0xba1ea669,0x3b0a03ff,0x3b033be5, +0x3a974ef0,0x3b0aa24f,0x3aa42791,0x3a7ad5b0,0x3a3ee75d,0x3aaae20d,0x3b4463e0,0x3bcd12ed,0x3c0a0e7e,0x3c30631a,0x3c695ab4,0x3c687467,0x3c74e30d,0x3c8c732a,0x3c86beee,0x394272e5,0xbb671b45,0xbc1cd5ec,0xbc05a86e,0xbc0ac936,0xbbb28ebf,0xbb3c0717,0xbb2af2a5,0xbb0f86b1,0xbb243f66, +0xbafb0c1a,0xbb394fa9,0xbb1c749b,0xbb10d021,0xbb0686e2,0xbb1b1fb6,0xbb4975f1,0xbaf6ef69,0xb9a4b361,0x3a618964,0x3b32a89b,0x3b8068fc,0x3b84a7b9,0x3b7dd372,0x3b67ccfc,0x3b49b54b,0x3b5f1d86,0x3b52047a,0x3b49ddcb,0x3b571308,0x3b94156a,0x3be45e4c,0x3bacf52b,0x3b723a5d,0x3af02017, +0x399ad142,0x3ae5f9de,0x38306e3b,0xbb448e7b,0xbb50fb68,0xbbc8ff75,0xbbbf3c8d,0xbbce5c40,0xbbcf212e,0xbbd248d7,0xbb9cc7fc,0xbbae233f,0xbb397c0e,0xbb6b0e07,0xbaf24d9a,0xbb268605,0xbafc68f3,0xbb1e0cc9,0xba97b030,0xba02be6e,0x3afc04d3,0x3b3cac0e,0x3b22e078,0x3b3be3bf,0x3b3d2bf2, +0x3b4767cb,0x3b4592b9,0x3b6dcec5,0x3b891bf8,0x3b9c88e3,0x3ba6a5df,0x3ba55c36,0x3ba87fde,0x3b7068af,0x3b30c275,0x3b0fb4d4,0x3ac4b7eb,0x3a62302c,0x3a5ded44,0xbb50f7f4,0x38c6745d,0xbaa5c554,0xbab95d61,0xba0bd6ea,0xba848dc1,0xb872715f,0xb8e9d0a4,0xbaa6997c,0xb9640646,0xb7a7838c, +0xb9a6537c,0xba7e2d91,0xb95ca2fa,0x3a4d395c,0x3a93ef86,0xba068532,0x3b092f46,0x3ab5d8cf,0x3ab073b5,0x3aa1fe17,0x3a8272ef,0x3a585c0a,0x3a1d6d95,0x3a88720f,0x3aadc001,0x3acc648c,0x3ae3888f,0x3b0641f4,0x3b276362,0x3b1e9f32,0x3b107b96,0x3aec4547,0x3aa60038,0x3ae34f9d,0x3b1f5323, +0xb942efcf,0xbb2125c5,0xbb8b853d,0x39ea50e9,0xbb2c2f1d,0xbb9b2f8c,0xbba164e4,0xbba5e1f2,0xbb9aa3ce,0xbbabf41e,0xbbb22639,0xbbb1e435,0xbb209ec2,0x3a0c2068,0xbb993d92,0xbb09e9ea,0x3926d921,0x3b16f93c,0x3ad25c7e,0x3ae1f609,0x3ad0ea38,0x3acf6f7c,0x3acc6dad,0x3abdd021,0x3ad3f482, +0x3ae2e407,0x3af73245,0x3b07b025,0x3b0e7c7c,0x3b159b66,0x3b057e69,0x3afde658,0x3af9115e,0x3aff03ed,0x3b079718,0xbb20e17f,0xbb073fe5,0xbb824a20,0x3b21f99c,0x3bb96f01,0x3babf427,0x3a20d0a8,0x3b9cb777,0x3bc37d9a,0x3bcb7f6e,0x3bcb980e,0x3bb7cdbb,0x3bbee2c9,0x3bbabeef,0x3bb7b013, +0x3b9b614e,0x3a719500,0x3b9c6bb7,0x3b9406a9,0x3b045bb1,0xbb7e6bae,0xbb1f1186,0xbb37f58f,0xbb3ee535,0xbb3cb2aa,0xbb310b40,0xbb13ac90,0xbb088a52,0xbb0620ea,0xbb13bbc9,0xbb180064,0xbb21cd37,0xbb378744,0xbb2c2a60,0xbb251dbd,0xbb0d04e7,0xbb197456,0xbb1437f4,0xbafdd400,0x3bc95cfb, +0xba2a900b,0x3ac91682,0x3af13f09,0x3a043024,0x3a991b2a,0xba19f188,0x3986e707,0x3b395113,0x3924da86,0xb9d7d534,0x3a1e1dd8,0x3a832a1c,0xb9215e23,0xba7735b4,0xbac32c8f,0x3b5ff3ca,0xbb221628,0xbb850b10,0xbb74fdfd,0xbb8d934d,0xbb8d13e9,0xbb7329ce,0xbb0f89de,0xbab2d18d,0xba9f68cd, +0xbb019629,0xbb1efaa1,0xbb3edd84,0xbb60c5e3,0xbb3dbe24,0xbb1b752a,0xbaccb5e2,0xbae00e50,0xbb3dd0a4,0xbae5824d,0x3b5eedd7,0x3af94d2e,0x3aa36ef1,0x3b006cfe,0x3aeccba2,0x3acb4004,0x3b469e2c,0x3aa73e2a,0x3ba8d738,0xba1fe9df,0x3adc7ea8,0x3aa4905b,0x3a9a9e77,0xba23ed76,0xbb2a9ed2, +0xbad45d49,0x397e087d,0xbad70b9f,0xbbb513cd,0xbb9d9899,0xbbb711e1,0xbbb3f0e2,0xbb8f2ed1,0xbadb3506,0xba0f6858,0xb9915f88,0xbaff11e2,0xbaf9b54b,0xbb4222a6,0xbb9a4cac,0xbb62a1dc,0xbb4d3563,0xbaea421f,0xbae199e3,0xbaf413b4,0x386e24a7,0x3b9358a4,0x3a91fc18,0xbabc01cb,0x3b032410, +0x3b75ea9c,0x3b71ceb3,0x3b969b07,0x3bc924ac,0x3bc2d494,0x3b24a574,0x3ad75841,0x3b3ef957,0xba931c88,0xbb3ab0ff,0xbb30b6fe,0xbb841d15,0xb9e04625,0xbb338a08,0xbbfa51a8,0xbbe533d3,0xbc0600f6,0xbbff0bbc,0xbbb04c5b,0xb96ab3f5,0x3b3a0518,0x3b191d66,0xba95d561,0xbb008e53,0xbb5d143b, +0xbbb93266,0xbb4049bc,0xba4f28df,0x39ef2c46,0x3a4d7be1,0xbc0cb4b9,0xbb16717d,0x3bcf1203,0x3bf09545,0x3c05a159,0x3a67b293,0xbba26828,0xbb9457be,0xbb03e06b,0x3974d702,0x3852f4ed,0x3b95df4f,0x3b731b7e,0xbae61b21,0x3ae329df,0x3ab7392c,0x39b140b4,0xbae85509,0x3a9dd679,0x39f5822c, +0xbb829170,0xbb124a48,0xbb961c85,0xbb0e3494,0xbb90a25b,0xbc148fc4,0xbc49d733,0xbc2d4af4,0xbabff286,0xbb0b9935,0xbaf1728c,0x39aef769,0xbbcaedb6,0xbc2d577d,0xbc29c288,0xbc0280e4,0xbc08d0b0,0xbb2470b9,0xbb87259f,0xbc11181f,0xbc4505ae,0x38d4e616,0x3bd066e5,0x3bd2b9da,0x3af994df, +0xba5ca8cc,0xbb3e2ea2,0xba4ccfbe,0x3ab6a10c,0x3b16d15e,0x3abe76ad,0x3a0d6f47,0x3ad8f494,0xba8ef347,0xb97a33d7,0xbae7e073,0xbb7ed4d3,0xbb30885b,0xbb9a8550,0xbba8eab5,0xbb719a92,0xbacaa859,0x3ba2515f,0x3ba6d7bc,0xb9b843af,0xbb83d1ba,0xbb328f63,0x3bd0e021,0x3bcc30c9,0x3c23517d, +0x3c7411ff,0x3a326d51,0xbb70af86,0x3c2a8b5a,0x3a9cb75b,0xbb84b68c,0xb91b9089,0xbb884f85,0xbb1c6d43,0xbaac6565,0x3aa9d7bb,0x3ae95be8,0x3a10c4fb,0xba812cce,0xbab8c87a,0x388d7c34,0x3a888f64,0x3aa7079c,0x3ab7a256,0x39f454a8,0x3b0c6540,0x3a7d50a2,0xbb115ebd,0x39415855,0x3af9e50d, +0x398674ae,0xba9139fe,0xbb20d898,0xbb9cd90e,0xbba9ea26,0xbb27d7e0,0xbb9aadea,0xbaeb190b,0x3c209ac6,0xbc378cc3,0xbc9af708,0xbc74e0ed,0xbc37e0d1,0xbb864ca8,0xbba74788,0xbaca15a6,0xb9b4b338,0x3a6e4ad7,0x396c5b5a,0x3a27ba1c,0xb8846b3a,0x3982bec4,0xba9ecb7e,0xba8d8c68,0xbac1a2b1, +0xbaa54ef0,0xba740d30,0xbaef228f,0xbb02b4b1,0xbb2c17a8,0xbb630923,0xbafb8619,0xbb561763,0xbbb26ffa,0xbba543ac,0xbb95d785,0xbb2825c6,0x3a8e206e,0x3ba02990,0x3bf6a530,0x3c0e0ecb,0x3c136ecb,0x3be55fb2,0x3b479996,0x3a230e55,0xbaea25df,0xbb119ba5,0xbb91f285,0xbabbb484,0x3b717d7f, +0x3b6ebba1,0x3bf7e3e9,0x3b7f4cfc,0x3b654cab,0x3b866bbe,0x3b24c300,0x3a8ac2bd,0x3aa96a8a,0x3a3ccdf1,0x3afe1c50,0x3adb5637,0x39bfd0cb,0xbb0027f4,0xbb138420,0xbb21a624,0xbb2ef5aa,0xba0a5f1f,0x3b1659cb,0x3a680be5,0x3a366b6d,0x3ac9d671,0x3a7cb612,0x3a80f5ac,0x385b521b,0xba7967c8, +0xb9abf9c4,0x3aa2ae78,0x3b7138bc,0x3b80b04f,0x3b9ae060,0x3ba1c412,0x3bafcbf4,0x3bd0a1ba,0x3bc121e7,0x3bec428b,0xbb81f251,0xbb3f1243,0xbb04434d,0xbb8a7351,0xbb8c336e,0xbb352d72,0xbb0d9704,0xbabcd268,0xbb0f1feb,0xbb1cc4d0,0xbb27562d,0xbb3bc774,0xbb3ca84a,0xbb35a5b8,0xbb1d687f, +0xbb11dded,0xbb3c6c47,0xbb03282e,0xbaac32cf,0x39b0c591,0xb9274d13,0x391dfaf4,0x39a0fb56,0x3a9adeb4,0x3ac33aea,0x3a906dab,0x3a6993fb,0x3a130d73,0x3a96524e,0x3a073af1,0xba07cfa6,0xbb1d039f,0xbb364fae,0xbb2c72f0,0xbb35dfd7,0xbb0fbb85,0xbb55f4fb,0xbaf6bab1,0xbaa37653,0xbb675321, +0xbb9209ab,0xbba61618,0xbbb61e47,0xbbcbda2f,0xbb9d52ee,0xbb9d412a,0xbb5008fb,0xbb7479c4,0xbb0d539b,0xbb0a7031,0xbae16a23,0xbb0675a0,0xbae306df,0xba30747a,0x3a7a0f95,0x39542ea7,0xba2d0b00,0x3a2cc767,0x3a78b8da,0x3a972b33,0x3a9eb23f,0x3abf7701,0x3ab150cc,0x3ac0824d,0x3adab4da, +0x3a890635,0x3a11594a,0xb986fca4,0xba663ba8,0xbad370d1,0xbb206a63,0xbb161af5,0xba88014e,0xba486e00,0x3adcbf6c,0xba9cfda5,0xb87df1d3,0xb9add51b,0xbac285fb,0xbace3840,0xbb0fb4a1,0xbadbeefd,0xb9f7232f,0xba99df15,0xbac5a741,0xba82b72a,0xb7e315f2,0xb8965509,0xb8ee8f7d,0xb9574153, +0x3addd110,0x386a5786,0x39523f5e,0x38d338cc,0xb7f077e7,0xb86eb8ab,0xb8e8ccfd,0xb8f53eee,0xba50c54b,0xbab3a871,0xbaf0844e,0xbb0e7b79,0xbb1b99ec,0xbb2021d7,0xbb08e2d8,0xbad36210,0xbaa5fe57,0xba83f0b0,0xbaa3e102,0xbae4cf01,0x3a962402,0x3b328a40,0x3b39e037,0xb9a3f018,0x3b05229b, +0x3b2d0883,0x3b43d04a,0x3b48d6b9,0x3b33d9c1,0x3b56d5f5,0x3b69e7dd,0x3b67e392,0x3b304bb3,0x3990a513,0x3b6c196c,0x3b3827c7,0x3a8297d9,0xbad1a7a5,0xba8d1e87,0xbaa582a1,0xbaa900a8,0xbaaf3e47,0xbab7976b,0xbab7a974,0xbac55fce,0xbac99828,0xbad26b11,0xbad7abea,0xbae1fda7,0xbaf93e65, +0xbae7083a,0xbae34a22,0xbadb0606,0xbac947c6,0xbae16c48,0xb78e895d,0xb76bde86,0x3aab941a,0xbb863039,0xbbb409f4,0xbb485cd2,0xbb35195d,0xbba767c5,0xbb778eaf,0xbb838e20,0xbb7a26d0,0xbb2a86c5,0xbb6bc26a,0xbb6c3884,0xbb41e194,0xbbada64c,0xbb6620e9,0xbb6ade8a,0xbbb8d753,0xbb964d82, +0x3a5fba3e,0xb9c22e61,0xb9a91dd6,0xb9b49784,0xb9957a48,0xb92fd3bb,0x38c42867,0x397abff7,0x39ad83b1,0x39960ad1,0x390ac174,0xb8d1fc29,0xb9da2dbc,0xba41920c,0xba454ccc,0xb9ac2779,0xb904885f,0x3a8a05dc,0xb8b59cb4,0xbb8942cf,0xb8609ead,0xbb211575,0xbac3b8ca,0xb99ca4a0,0xb94c5483, +0x39ad7e56,0xba26b6e6,0xbabb8443,0xbab4ee47,0xba59d3c2,0xbaa4c335,0xbaf310ac,0xbaf4e1d3,0xbb8336d6,0xbb1db797,0xbba57adf,0xbada3109,0xba725d45,0xbaef1ad5,0xbab972b9,0xba948b6c,0xb9833dc3,0x3a679ef5,0x3ac2899d,0x3ab51916,0x3a2f651f,0x3845e9e0,0xba65bf4c,0xbadcc62c,0xbb2d72d8, +0xbb10f98f,0xba144a2e,0xb92f9296,0x3aea4e95,0xb8fe8b7e,0xbb2081a8,0xb9ad595a,0xbaf43206,0xb8e1a575,0xb8c74af0,0x3a4ce774,0x37776a46,0x3afffb7c,0x3ab09fa0,0x3ad924b9,0xba759d72,0x3a61ffa8,0xbaf9031c,0xbac93b2f,0xbb7e97ac,0xbb5a2fa9,0xbb96fe5d,0xbb1efd0d,0xbab315a4,0xbb33e892, +0xbb1e608d,0xbb138c79,0xba8f38f4,0x39e8c314,0x3ad91b86,0x3b01b41b,0x3a8edc26,0x3a3bf5b6,0xba8b3b56,0xbb351474,0xbba1bc24,0xbb90c6b3,0xba7b015a,0xba3327a1,0x3b8a4863,0x3a5eab71,0xb9c00a3f,0x3a70bc50,0xba8f55a9,0x3abcfaf1,0x3b85d8bc,0x3b99cbf4,0x3bafd3ea,0x3bc9be0e,0x3bf54965, +0x3b21b699,0x3b024993,0x3b844b74,0xb81b69f6,0xba372f75,0xbba9b7e6,0xbb2c2cd7,0xbba23393,0xbb56f86a,0xbb6ebaff,0xbbc66b00,0xbbb094bf,0xbb909d7e,0xbab54835,0x3b411b00,0x3bb1783f,0x3b93af3b,0x3af9d545,0xb886dd9e,0xbb4a77e2,0xbbc4c92e,0xbc0bd7da,0xbbbca56b,0x395454ec,0x3a4b628b, +0xbaba2545,0xbbc60c2f,0xbbac6072,0x39b64670,0x3b81abe2,0xba980304,0xbb9ef621,0xbbb1ff13,0xbb4309e2,0xb9d665f9,0xb9cf43d7,0x3ba5ad8a,0x3b92c896,0xbb13585e,0x3aa03fdf,0x3afb3ed1,0xba004e0b,0xb9f06b4f,0xbb62c92e,0xbb16150d,0x3b1d448e,0x3b46f10a,0x3ba12cec,0x3b0653bc,0x3995cb18, +0xbb11076c,0xbb503546,0xb8f3d572,0x3c095ab7,0x3bc19414,0x3b88bcae,0x3b3f97a8,0xbb8b1098,0xbc016379,0xbbd3ad2c,0xbba07539,0x3b1b0eac,0x3ab20b5b,0xbbecc67e,0xbc11a545,0xbc44f793,0xbb068726,0x3bb5caa4,0x3bbd400d,0x3b2fcd9f,0xb9f6e8f0,0xbb498875,0xbaa02b0f,0x3a6cf486,0x3b3042a5, +0x3b071fef,0x3a0dbff0,0xb898318e,0xbae9c0ec,0xbb6ba265,0xbb557ed3,0xbb019cf8,0xbb5d062f,0xbb49b400,0xbb75907c,0xbb2d42c0,0xbb1e9b7f,0x3b90bde9,0x3b9c57e0,0x38a431eb,0xbb42c68f,0xbb5478c6,0x3b2180a2,0x3b1980eb,0x3bde421f,0x3c62acd3,0x3b6f68a8,0xbbd96342,0x3bc68f24,0xbb26b1af, +0xbb8a2da9,0xbb06122d,0xbb4212e9,0xbb4c346b,0xbb27a2e7,0xb84f5f90,0x3ad50801,0x3a5c77a1,0xba2541e3,0xba8ec6cf,0x392c75aa,0x395a5394,0x3ab02879,0x37c8f5bf,0x3a719390,0xb9b5a115,0x3a8b48d0,0x3b1bd2f5,0x3ae52019,0x3b7d0b92,0x3b7efdb5,0x3b71bba2,0x3af82c4f,0x3ab34a8a,0x3b2937c9, +0x3bacc3e3,0x3bc726eb,0x3bd81778,0x3c0e7a4e,0xbc6a09f4,0xbcbaebda,0xbc8a4239,0xbc598563,0xbb8a7c9b,0xbba0e595,0xbad2dc84,0x3a17d8a6,0x3a958e33,0x3a342b63,0x3a4735e4,0x39da5ae4,0x39d2b764,0xba92a610,0xbabb3fad,0xba915837,0xba551479,0xba9cb6f1,0xbabdfb95,0xbb172087,0xbb42a45a, +0xbb4fba25,0xbb9a9293,0xbb3e2dcf,0xbb2d4c2c,0xbb632b5f,0xbb3d52e9,0xbb0da489,0x3a199995,0x3b5f32bf,0x3b91399d,0x3b8f5789,0x3b80500c,0x3abb3c64,0xb9f77cd5,0x3b6290e6,0xbb302c77,0xbb8898d0,0xbbcb494a,0xbbb330c5,0xbabc54f4,0xbbd39d68,0xbb418ac7,0xba1471bf,0x3a72302c,0x3b019b18, +0x3b01ce7f,0x39752739,0xb8a4c130,0x3a663856,0x3aa320c8,0x3b045860,0x3a4d5a1c,0xbafa2965,0xbb1d490f,0xbb39f61c,0xbb1d30d8,0xbad54865,0xbadb6aaf,0x3a5a97b3,0x3a99294c,0x3a7d791d,0x3ad80ddf,0x3a223d85,0xba1f0678,0xbb140959,0xbad11634,0xb9ea20cc,0x3ac3265e,0x3b667753,0x3b9a12ee, +0x3bb389ce,0x3b76a250,0x3b42d0d2,0x3b47b5c6,0x39fcc351,0xbadde009,0xbbc2dfce,0xbbd318d9,0xbbc791f5,0xbbb79b0f,0xbb54229e,0xba52b52d,0xba804958,0xba15dd78,0xba806215,0xba6f65a4,0xbb2763b7,0xbb2d5019,0xbb24809d,0xbb0adea6,0xbb30c556,0xbb70edd5,0xbb4342e1,0xbacf9717,0xb8f07981, +0x3a9ad77f,0x3ae18df5,0x3acabd43,0x3a89acac,0x3a5479e6,0x3a02b622,0x3a4ee9c7,0x3abba845,0x3b32df91,0x3b27cbec,0x3b1fbd99,0x3b00491a,0x3b0efcee,0x3ad3e8b1,0x3a5a2a26,0xba3947f8,0xbab4ceb3,0xbb245b4b,0xbbabc314,0xbbbb10f8,0xbbff5db4,0xbbe8a14c,0xbbdd4e81,0xbbce1676,0xbbc1180b, +0xbb90d414,0xbb962344,0xbb2e10a2,0xbb3d2ce9,0xbaff6aef,0xbb18b273,0xbb05849e,0xbb13b753,0xbad4444a,0xbae3e3cb,0xb9e09a74,0x3a7f8aeb,0x3aa22ddf,0x3b0f65e5,0x3b09df51,0x3b0f61c1,0x3b14e8ba,0x3b08bdc2,0x3ae9e16c,0x3ac8f08b,0x3aa2c57f,0x3a82576d,0x3a1b69cc,0xb9a75d9c,0xba9369bf, +0xbab8f93a,0xbaf2b229,0xb9318af3,0xba02f841,0xbae98d39,0xba40902a,0xbadf1dec,0xbadeb818,0xbada8482,0xbb10c097,0xbae28b81,0xbb0a218e,0xbb418ecc,0xbb20c5f9,0xbb00beb6,0xbb11e4a5,0xbafcbddd,0xba6d2473,0xba260bf0,0x39a6ca71,0xb94e4c85,0x3aec734f,0x3ae3b4ce,0x3abcdea4,0x3ab98300, +0x3aa41631,0x3a9cafed,0x3a92c0d4,0x3aa2b63c,0x3a9ec531,0x3a840ac6,0x3a36b89d,0x39bec041,0x3929b2eb,0x39990b78,0x39ac06ac,0x3979851e,0xb8b5464b,0xb996fcff,0x38996c30,0xbb24f49b,0xbb59ceac,0xbb03929c,0xbb21638f,0xbb751cb2,0xbb4c9638,0xbb4ac570,0xbb477368,0xbb25b94a,0xbb35f274, +0xbb3554b1,0xbb28f8dc,0xbb6961ce,0xbb0b1ee8,0xbb07895b,0xbb3f3142,0xbaf0cf9b,0x3a694f20,0x398b542e,0x39aefcce,0x3990df00,0x39910a76,0x398cf87f,0x397a8c5c,0x3923e6ad,0x38bfbfbb,0x38acd0f7,0x38ca191b,0x38b407c7,0xb843f639,0xb91fee88,0xb988dd44,0xb9948f08,0xb990fe80,0xb9e8a219, +0x3aafdbec,0x3a953825,0x3a3b77c5,0x3b8fc88d,0x3b7e4f7b,0xba5ab8d3,0x3b832eb0,0x3b7867e9,0x3a2800d2,0x39e45834,0x39c85b00,0xb83de1c8,0xb900e24e,0xb9a74f52,0xba2fd7b0,0x3b72489e,0x3b8079e7,0xbaf1655d,0x3b4704ea,0x3b7832ef,0x3a198cc5,0x3a6599e4,0x3a87ca6d,0x3a82e344,0x3a97d24a, +0x3ab3a623,0x3af2d6f1,0x3ae85b6d,0x3ae9c737,0x3ad58920,0x3ae91a48,0x3ade31e5,0x3ab0166f,0x3abf8f37,0x3ab1ada5,0x3a897177,0x3aa4af11,0x3ac75163,0x3b304095,0x3b59216f,0x3b34e742,0x3b3cbf86,0x3b1814ea,0x3b1d4a69,0x3b33e1bf,0x3afa3bc3,0x3b2f2a89,0x3b7d7b2c,0x3b380cd7,0x3afec361, +0x3b1db686,0x3aea5145,0x3a9da4f6,0x3a8cbb48,0x39e434be,0x3a20f95a,0x3a9cc2a7,0x378b9ae4,0x3a5b6e5b,0x3a563b4d,0x3aa322ba,0x3afba36e,0x3b5b896f,0x3b5df18e,0x3b57d01b,0x3b32d1b2,0x3b3902c0,0x3b29aa00,0x3af8a3ab,0x3b128527,0x3b0a7699,0x3abcfd7f,0x3b0589aa,0x3a905275,0x3af2987e, +0x3b96301e,0x3b6d49d4,0x3b07afef,0x3b288644,0x3b07db44,0x3b2b3154,0x3b1d6a3b,0x3aae932d,0x3b941ae8,0x3a94b29d,0x3aee0205,0x3b063342,0x3aea70f9,0x3aaab88c,0xbab6b9b5,0xb9e9ef28,0x3a254f4d,0x39e24870,0xba48fc76,0x396a662b,0x3a1b2662,0x3ab59788,0x3b2f36ec,0x3bb1f22e,0x3ba4c7e9, +0x3ba7136a,0x3b7f5e8c,0x3ba3e34b,0x3b918081,0x3b186e49,0x3b4dbb10,0x3b0ade3c,0x3a364efc,0x3afee398,0x3b262abe,0x3b5a5abf,0x3bba63ef,0x3b818c9c,0x3a6ddb36,0x3b321159,0x3b6f78b9,0x3b8f3642,0x3b9704ed,0x3bbf3df9,0x3bc298ab,0x3b0bb893,0x3af2b746,0x3b34e1e4,0x39b974a8,0xba37c2f8, +0xbb3c0d63,0xbb34bd98,0xbaaec857,0xbac63ae2,0xbb316de3,0xba6cbd35,0x396f49db,0x3af9bf09,0x3b9de6c5,0x3c1ec3c8,0x3c21e731,0x3c051a08,0x3baf0ccb,0x3bcf601d,0x3bb916f7,0x3b39eb3b,0x3b9414d7,0x3b8d934e,0x3b0963dc,0x3b7b666f,0xbb055a52,0xb9882d55,0x3b635625,0x3b9bd93e,0x3bcd7275, +0x3b0635b8,0xbb2426b5,0xbb8990ef,0xbb393109,0xb9b29d76,0xba10a307,0x3baf0cd2,0x3b9f909d,0xbadb8a4f,0x3ad77fd0,0x3ae7ff2a,0x3adb4051,0x3a450b40,0x3af47c3f,0x3b3adf7b,0x3b476a61,0x3b362425,0x39472666,0x39b3193d,0xbb1eac06,0xbbf6f445,0xbbf66881,0xbb5c3e52,0x3bdf7a25,0x3bb4753a, +0x3bd8387b,0x3c1d706d,0x3adba8f5,0xbb4e6ff3,0xbb98acef,0xbb166581,0xbac0f53b,0x3b35d24a,0x39f3a357,0xbbb15597,0xbc158e16,0xbaf9c4f5,0x3b6e912c,0x3bac7108,0x3b4598a9,0x39a49b7f,0xbb51db7a,0xbaf1a3d7,0x39edfc82,0x3b03d3ae,0x3aeba00b,0x3a990d10,0x3ae6313f,0xbaac9b93,0xbae70f4a, +0xbac0f2ec,0x39e71386,0x3b334631,0x3b6f7669,0x39bc1859,0x3888847d,0x3a520847,0x3be297ad,0x3bc80d80,0xb9dd253d,0xbb08da46,0xb9c66c18,0x3bd475a0,0x3c20b2bb,0x3c4ae5bf,0x3c487821,0x3b86e39f,0xbc06866c,0x3b242bfe,0xbb203524,0xbb9e2b17,0xb9e099f9,0xbae598d7,0xba9a3e56,0xbb4bb485, +0xb9ec6bdf,0x3a4c4b47,0x3a99a6e0,0xba17c678,0xba9c225e,0x381a5963,0x3a0743b8,0x3ab9bf95,0x3adc5469,0x3ae51993,0x3b5a6097,0x3b2638d5,0x3a392761,0x3b0a4337,0x3b636ee9,0x3ba76b02,0x3bd2d953,0x3bcc0053,0x3b9da391,0x3b88cbc4,0x3b9e59a9,0x3bb2efb4,0x3c150bd2,0x3c8b7cd9,0x3a32360f, +0xbbc18db2,0xbad8b76c,0xbc190453,0x3bb0f779,0xbaa357eb,0x39f2fefa,0x3b0c82e6,0x3b1544ef,0x3a9e5a77,0x39d9df5d,0x39a2d642,0x39d84c2a,0xba8d8d8b,0xba9af6a4,0xba3a20ef,0xb9d8c8da,0xba345cb3,0xba504fde,0xba9b3b9a,0xbb0b5d19,0xbb44c1b5,0xbb23952d,0xbb21336d,0xbb29479c,0xba8fb48c, +0xb81e413a,0x3afedcba,0x3b8fa2ab,0x3bdc3281,0x3c1141d6,0x3c20024e,0x3c2a5baf,0x3be099a4,0x3b88ae42,0x3b949c57,0x3c16f409,0x3c51483c,0x3c6ac3c0,0x3c2b73dc,0x3c1ed0e1,0x3b5e2ca8,0x3aaf3f01,0x3b0723c5,0x3b39d476,0x3b6d0eab,0x3b421d0d,0x3b001f21,0x3af75850,0x3ae4c53a,0x3b07aa62, +0x3b14090e,0x3a93b4b8,0xba85dcc2,0xbb08ebb1,0xbb3a1561,0xbb38217d,0xba149573,0x3ad7add2,0x3afb68b3,0x3aa5dd2d,0x3ab85e5d,0x3aa0b15e,0x3af413ae,0x3b244f98,0x3b74f297,0x3bb712bb,0x3c05687c,0x3c43f522,0x3c2de9fd,0x3c3e96af,0x3c52504f,0x3c6f6036,0x3c72038e,0x3c4d97a3,0x3c4bec47, +0x3b5e6c3a,0x3ae713e1,0xbaba8073,0xba3925c3,0xba94bae1,0x3a437eb8,0x3a9a2734,0x3a687c32,0x3a204d4b,0xb8ddea1c,0xba49b3f9,0xbaf5c418,0xbb148a93,0xbb1ecf03,0xbadf4973,0xbab48015,0xbadbe69c,0xbb1e7621,0xbb0e8f00,0xba810292,0x3945b9cc,0x3ace289f,0x3af64324,0x3b60fc4b,0x3b730641, +0x3b49c1d2,0x3b086f3b,0x3a6247ba,0x3a02e7ae,0x3a75c8c9,0x3afde81e,0x3b6e4164,0x3b2ac4c6,0x3b52d0e2,0x3b88bca1,0x3b9261ad,0xbada60e7,0xbac3dcd2,0xbac6fdb0,0xbb47b15a,0xbba11152,0xbba27924,0xbba709f8,0xbba929f0,0xbb8dc3bf,0xbb7f5488,0xbb27b928,0xbb2f0e26,0xbb0c18d6,0xbaf9910a, +0xbadaeb9d,0xbad3fce3,0xbab161a3,0xba04e2ff,0x3a4dc73d,0x3a059f30,0x3948e067,0x3a8da67d,0x3abb9b01,0x3ab14043,0x3aa6d5df,0x3ab9bb71,0x3b09ed7b,0x3b43be7e,0x3b76828f,0x3b73c0b8,0x3b59ecd4,0x3b3edd11,0x3aec409c,0x3a49c62d,0xb9dc6731,0xba67d7f4,0x3a228362,0x3a4bfc60,0x375034b1, +0xb973a215,0x38733f85,0xb9d4d1a2,0xba5c3b3b,0xba9fea05,0xba9ac6bc,0xba08847b,0x38834212,0x38a1dce9,0xb953ab49,0x39827f76,0x39f52470,0x39cce396,0x3a95029a,0x3a3300b7,0x3ab54f7a,0x3a064a63,0x39757472,0x39e91bd7,0x39eadb9a,0x3a0e0758,0x3a2832cf,0x3a211b1c,0x3a0a2720,0x39ff47b4, +0x3a2f094e,0x3a663830,0x3aacca90,0x3afa5efd,0x3adaaa91,0x3ad419b9,0x3abedfae,0x3aa3b29b,0xb94d6066,0xb9de6772,0x3ac551ba,0x3aaaae18,0xba8263ca,0x3a5777ac,0x3a6507cc,0xba674d41,0xba35c351,0xba3fd4bb,0xba837090,0xba48e8f3,0xba2d7c74,0xba4bb62d,0x3ae4b6d1,0x3ac0a3fa,0xb99831e8, +0x3af08bd5,0x3ae1d02b,0xb9eb9a25,0xb8e1db07,0xb93c7392,0xb988fe01,0xb98da5cc,0xb99fbb4f,0xb9a6f847,0xb9288c33,0xb76eb017,0x38cac4c7,0x398d7cc3,0x39c7331c,0x3a1b074a,0x39a9eddd,0x39191c3c,0xb818ee1a,0xb8c6399e,0xb98bfefc,0xbb41c3da,0xbb1be3eb,0xbb43d397,0xbb778aeb,0xbac3b3a3, +0x3b70e1f1,0xbb8ac433,0xbb05d15c,0x3b255c8e,0x3b1d3569,0x3b253f7f,0x3b4a63d3,0x3b43bd5f,0x3b494510,0x3b603282,0xbafa8f86,0xbb882439,0x3b5e9fea,0xbb009931,0xbb86a6f7,0xbb56484a,0xbb434ba8,0xbb5b748c,0xbb5e9c82,0xbb558e57,0xbb4ac3fe,0xbb2ebb45,0xbb340ff4,0xbb341166,0xbb3e0d53, +0xbb44fb6c,0xbb55b98d,0xbb7004a0,0xbb7c7371,0xbb6f6799,0xbb2e9ffa,0xbb36bc6a,0xbab69ddd,0xbb546468,0x3a29b742,0xbb0c097c,0xbac7bdbc,0xba797629,0xbacf3c55,0xba432c2c,0xbb029d11,0xbb2d2183,0xbb07985a,0xbb39f644,0xbb09d729,0xbb21df16,0xba8c0622,0xbad1cd56,0xbb85f704,0xbb53a797, +0xba97a01b,0xbb99b310,0xbb952f18,0xbbadbe61,0xbbae02b3,0xbb9c7490,0xbb79e6a6,0xbb157808,0xbb1272d8,0xbb27066e,0xbb6247ef,0xbb803e98,0xbb9a642e,0xbbb40e96,0xbbc7605c,0xbba71dc8,0xbb0ec2c5,0xbb0e2cd5,0xba9aa90e,0xbb433702,0xbaffcdd8,0xba88a857,0xb98aa3f5,0xb8bf68d2,0xb9a1914f, +0x3a040321,0xb9498057,0x385c3935,0x3a4041ff,0xb94b85ed,0x3903cae9,0xba1511c0,0xba13cd3d,0xbaa4f52c,0xbb64c786,0xbb5115d2,0xbb7cba64,0xbb8f8e09,0xbbc0f3dd,0xbbd6e8b6,0xbbe6a56f,0xbbcf0383,0xbba3f03d,0xbb1ea6d1,0xbb2af1eb,0xbb3438d0,0xbb886324,0xbb8cd827,0xbbc54dda,0xbc02d445, +0xbc155361,0xbbf62aca,0xbb07ed4f,0xbb1ceebe,0x3b0e2aaa,0xba0de82e,0x3a515748,0x39cbc199,0xb8e7c50d,0x3a60fa57,0x3b3b70af,0x3b9e8801,0x3b8fe778,0x3bac9263,0x3bcb79d3,0x3b1e2ee0,0x3ad2e744,0x3b351aaf,0x39a5ef33,0xba5d0e7b,0xbb8aebbd,0xbb7f107f,0xbb860049,0xbbbb2dbf,0xbc13222e, +0xbc2f3ec0,0xbc39731d,0xbc1c3561,0xbbc5e653,0xb98b61e9,0x39543760,0xbad76515,0xbb9f80e7,0xbbc8e3db,0xbc09ddd0,0xbc386a1a,0xbc43cfbe,0xbbf9efd2,0x3a835964,0x3aa0f94f,0xbc2492ea,0xbc1200f2,0xbbae8c05,0xba86c992,0x3b8fedac,0x3a96620b,0xbb4ed22c,0xbbb2a286,0xbb85d4c5,0xbab4d15c, +0xba46f999,0x3bac3810,0x3ba2b35c,0xbafd2a3d,0x3a5c5099,0x3a623c0c,0x3a75186f,0xbaa4a15d,0xbafb5d5e,0xbb3b23e2,0xbb14fd3b,0xb9822033,0x38ff5b19,0xba4bc2ab,0xbb3be9f1,0xbbb2bffc,0xbbfa2046,0xbb9f44da,0x3b459db8,0xba4a9d53,0xbb521f60,0xbb965ca7,0xbc390e4b,0xbc63c759,0xbc47c962, +0xbc35d2bd,0x3b0f0b3c,0x3a924869,0xbb8eef28,0xbc04e13d,0xbc4d487b,0xbbacb5cd,0x3ae23412,0x3b854c35,0x3b51db1d,0x39e9ab23,0xbb5bf613,0xbb174fad,0xb933c56c,0x3aed6df3,0x3a58b3a1,0xb9f216f7,0xba3add96,0xbb0acc47,0xbb163b83,0xbb97eb9c,0xbbbc0429,0xbbec2a5c,0xbc1aa4ec,0xbc06ccb0, +0xbba87f6a,0xbb0c59d8,0x3bc5089d,0x3bb42b5d,0xbacaeb3c,0xbb7e5ec5,0xbb509a62,0x3b1f6c35,0x3b7b4feb,0x3bdaf0ce,0x3c2305cc,0x3b77e04d,0xbc538f8a,0xbb8b2eca,0xbb591b76,0xbb6d2b07,0xba98c0c5,0xba89b199,0xbabd9190,0xbb8ce671,0xbaf369d8,0x383b38c1,0x3a7b24d4,0xba42c80d,0xbaa99d36, +0xb934bd4d,0xba27f34c,0xb903f83d,0x39ebe067,0xb9aa30e5,0xba58d26b,0xba610144,0x3a187017,0x3b0056b3,0x3b40846a,0xb901f4bf,0xbb7096e3,0xbbf3fdd6,0xbc095e8d,0xbbb1f064,0xb8997851,0x3acb5fcf,0xbb253883,0xbc26e14c,0xbcceacf9,0xbce97745,0xbcadb900,0xbc88a313,0xbb8b0f18,0x394aab19, +0x3a27172e,0x3a174b9b,0x3b409266,0xb8a57577,0xb8274066,0xb840867d,0x3922533a,0xba84ab30,0xbaca05ca,0xba4c8aca,0xb9aa72fb,0xbaa13a24,0xba84801f,0xbae6bc54,0xbb56c744,0xbb7a1b58,0xbb724216,0xbb6b8f34,0xbbb1c50d,0xbbdc1218,0xbbe2a4b3,0xbba46b0e,0xbad98e1e,0x3b15db7b,0x3b2fe7d0, +0x3b2cf7e8,0x3b26bb9a,0xba687aa0,0xbb329795,0xba79f7df,0xbbf195f9,0xbc32d376,0xbc712d26,0xbc09b35f,0xbc638854,0xbc256cb8,0xba36f953,0xba566283,0x38784674,0x3b0d6d26,0x3b0cac19,0x3a05d67d,0x3a5f225b,0x3a6f7d3a,0x3a6551ee,0x3ae6fab2,0x3a6d8ff5,0xbaa3a380,0xbb1b073c,0xbb534340, +0xbb48d2ae,0xbb31f43e,0xbac21d29,0xba1ffba6,0x39387bac,0x3a816b09,0x3a39efe1,0x3a1b7924,0xba3452ed,0xbb33c19d,0xbadf7d72,0xba78ae7c,0xb995fb2e,0x3a3e9613,0x3a2d3088,0xba7fb3ab,0xbb3a7240,0xbba9bf30,0xbc105e28,0xbc3cd348,0xbaf746b8,0xbb8a655e,0xba86fc89,0xbb0ca751,0xba4d2105, +0x39026227,0x3aa7906d,0x3a6d3438,0x3a5aab83,0x39afe8e6,0xb98b55fa,0xbaf827b7,0xbb2b62fb,0xbb36a73b,0xbb22382d,0xbb37e7dd,0xbb57b09d,0xbb51e9d8,0xbb2259a7,0xba94d519,0xba4b6153,0xba41f51f,0xba76727e,0xba80a33d,0xba828a04,0xbaa970a6,0xbaaba5bb,0xba17f1aa,0x3a92353f,0x3a3e2c47, +0xb9eea8c5,0xbb4744e8,0xbab6ba91,0xb9e5efff,0x39e2a5a1,0xb96548ab,0xbb92a605,0xbb955603,0xbbb26a2b,0xbbd5bbf4,0xbbef71b0,0xbbe1c01f,0xbbcbd485,0xbbbea238,0xbb9f1d17,0xbb896230,0xbb6723de,0xbb453181,0xbb11bf2c,0xbb12413d,0xbb036d5c,0xbb0f5cb8,0xbb0799ad,0xbaf4e3ff,0xbafe6451, +0xbb17062b,0xbab5c3a6,0xb983ab26,0x3a6ebdd1,0x3a3db17e,0x3a246010,0x3a4bb39f,0x3873d2ff,0xba3679a3,0xbab9394c,0xbb024346,0xbb1579b0,0xbb3e497d,0xbb45348b,0xbb649bb8,0xbb746421,0xbb8aecf2,0xbab1dfac,0xbaea600f,0x395787b6,0xbae96820,0xbae0a697,0xbae18522,0xbb31d5bb,0xbb4dcad9, +0xbb5d6a45,0xbb6cf7eb,0xbb623cdb,0xbb7719f7,0xbb5e6b61,0xbb5ac674,0xbb113b96,0xbac4637b,0xbaf03bed,0xba6a6fe3,0x3953f3d2,0x39a13bcf,0x3a643343,0x3a1c5210,0x3a390f73,0x3a4c97a0,0x3a7bd173,0x3a966412,0x3a51fb31,0x39db5bc1,0xb90653fb,0xba4565a1,0xbac317ce,0xbb0fa19d,0xbb03e238, +0xbaebe846,0xbacdfa90,0xbac6381f,0xbb2131b6,0xbb3066f0,0xbb51b64d,0xbb0c6ab9,0x3a4454fe,0xbb84854f,0xbb36f802,0xb9d19517,0xb8cdc886,0x38b9ca88,0x39ce9d00,0x3a25b6a8,0x3a65b571,0x3a90629a,0xbb1d72a0,0xbb5eb98a,0x3aa97cfd,0xbae702dc,0xbb2504bd,0xbab7ea48,0xbac34547,0xbac7c501, +0xbac31436,0xbabf0c7d,0xbabd994e,0xbab24580,0xbad622f9,0xbaed382f,0xbaff8c4d,0xbb082509,0xbb0e6f3d,0xbb1e43b3,0xbb1c34c3,0xbb233104,0xbb279103,0xbb2ba12e,0xbb46b2ab,0x3b5cfe8c,0x3b3c517c,0x3b84fb45,0x3b2141fd,0xba579fcc,0xbbb79d58,0x3b70217d,0xb988aabb,0xbb952747,0xbba765ee, +0xbba7f2d4,0xbba0e64a,0xbbaf0e72,0xbbb3240d,0xbbb9bcc9,0xb9a77dba,0x3b5124d9,0xbbdb3519,0xba949d68,0x3af1b566,0x3b6fdd0e,0x3b2cec58,0x3b4cefaf,0x3b4d98f6,0x3b5e2d00,0x3b6b7dab,0x3b83b055,0x3b761e5d,0x3b759d80,0x3b6ebc92,0x3b7ed77f,0x3b7a1d41,0x3b637940,0x3b5e31ee,0x3b50dc62, +0x3b322051,0x3b505c08,0x3b821154,0x3b9ada46,0xbab5c563,0x3b801768,0x3aefe0b7,0x3a8f5ffb,0x3b21e038,0x3b275ca3,0x3b357e35,0x3b359320,0x3b0a93c5,0x3b400c5f,0x3b24bbba,0x3b0fcc03,0x3a90e6ba,0x3a981fd3,0x3a5851cf,0x3a498432,0xbb5ac69f,0x3b2549eb,0x3b1e8be2,0x3b43551c,0x3b66cc87, +0x3b8e6183,0x3ba8dd19,0x3bcfe9e7,0x3bbca9b5,0x3bb059fb,0x3b9f0513,0x3babf2e4,0x3ba4dd8b,0x3b895b0c,0x3b81a400,0x3b6c2df6,0x3b39981e,0x3b7c6ead,0x3b860e41,0x3b652875,0x3b2b61ec,0x3b4d9d3b,0x3ab966d1,0x3ae46aac,0x3a906665,0x3b19dda9,0x3a096c72,0x3a7eacfe,0x3af21da8,0x3b177fef, +0x3a83491d,0x3b01b470,0x3a907889,0x3afa276d,0xba6cdb1f,0xb9f01cd5,0xba81a767,0x3a3f3406,0x3b16e798,0x3b3077fe,0x3b76820c,0x3ba62beb,0x3bd1a73f,0x3c0ef40f,0x3bef0ba2,0x3bebcb3d,0x3bd1dc4f,0x3c01a030,0x3bf39fce,0x3bab2e9d,0x3b9bf2be,0x3b62c874,0x3b03d105,0x3b6c42ce,0x3bcfeb85, +0x3b96aa9a,0x3b84ba20,0x3b98531d,0x3b14df7d,0x3b21dacc,0x3b506357,0x3b9a0d75,0x3b8e5466,0x3ba186f2,0x3bae59a5,0x3b028daf,0x3b152cab,0x3b3d9bd6,0x3aec3004,0x3ab90620,0xbb5446a9,0xbad6540b,0xbb5bc040,0xbaca9532,0x39a1b4e1,0x3ac2c79f,0x3b85aed1,0x3be1579c,0x3c27f2ab,0x3c6d09e6, +0x3c4c8dcd,0x3c2286db,0x3bfa14de,0x3c18e2c7,0x3c0d0dd8,0x3bb225e9,0x3ba956c3,0x3b90c8f3,0x3b3fdf9c,0x3ba8db56,0x3b06a418,0xba844ec5,0xbb0c9501,0x3a37ef09,0x3b61ec30,0x3aed2ca2,0xba8c8393,0xbb930834,0xbb74ecd1,0xba6f0cbe,0xb9f1f05c,0x3bb641e3,0x3bab5490,0xbac8ab38,0x3a8ce98e, +0x3aeab745,0x3b2006a8,0x3b3d2766,0x3a9cbec4,0x3b582bcb,0x3c0addbb,0x3be0fe46,0x3bb5220a,0x3b18ce43,0xba317040,0xbb91c504,0xbb0f3a9e,0x3b61265b,0x3c56dde4,0x3c315807,0x3c394046,0x3c5bb5fd,0x3b9a25f9,0x39d655c9,0xba9eba13,0x39117c79,0x3bca45d4,0x3bcb5c9a,0x3ac89561,0xbb796c90, +0xbc00b5b2,0xbb926aab,0x3a36a0f8,0x3b6be843,0x3b726a82,0x3aad252d,0xbb45c522,0xbb2afce1,0xb9f50cc9,0x3af25c10,0x3ada4124,0x3a7c100a,0x3a20cb4e,0xbaa5a556,0xbb3b6bb0,0xbae8ca51,0x3b2f2105,0x3b82a7f5,0x3bd067a7,0x3b34240b,0x3b0a4dfb,0x3b217056,0x3bf278e3,0x3bc088ce,0xb9cef8a4, +0xba90600f,0x39fdd785,0x3b9a8f4b,0x3c2056e6,0x3c37a204,0x3c031bd0,0x3bd0711a,0xbc4b4a61,0xbbf536af,0xbb98768a,0xbb440c8c,0xbad408a8,0x3a12cf02,0xb99e2f3f,0xbb842ce8,0xbaf2cacf,0xb79561d9,0x3ab30839,0x38f6a0b2,0xba3767b0,0xb99fccfb,0xb992b765,0x3a97e61c,0x3aabebf8,0x3b00569a, +0x3b095b8a,0x3b02c6aa,0x3b5451b3,0x3b5c33b3,0x3b8881c8,0x3bf74c77,0x3c2207ef,0x3c238335,0x3c1ffe7e,0x3c1ee10d,0x3c0e35dd,0x3c6b7378,0x3c82eff4,0x3c4c5d88,0x3b954be7,0x3a13431a,0x3b3ef6ec,0xbc0f178c,0x3c2bd7b8,0x3b4e950b,0x3b1887d2,0x3b6a69ee,0x3b587732,0x3ad93f73,0x39448765, +0x3a49cece,0x39d3acf6,0xba482bf4,0xbaa4c832,0xb9853787,0x3879149c,0xba0ccee6,0xb88b7180,0xba697074,0xbb0843a5,0xbb2e0daa,0xbb661365,0xbb1213a4,0xba0217ad,0x3a768a3a,0x3b0aee3d,0x3b7e2cdf,0x3baae085,0x3bda95ad,0x3bf7578e,0x3bf92c9f,0x3beaec71,0x3b3eee49,0x3b081621,0x3bac79f6, +0x3c3e70e2,0x3c837aee,0x3ca1c032,0x3c5f11ae,0x3be57d0c,0xbab979f0,0xbbab6b24,0xb9ff1577,0x3aba5d2f,0x3b0b7f90,0x3b293c66,0x3b0b338b,0x3af43d97,0x3b18a71e,0x3ad9b62c,0x3b08689e,0x3aa72edd,0xb8e5dc34,0xbb001226,0xbb494b20,0xbb31977c,0xbac50470,0xba428e54,0x3ab23f0d,0x3a9e041c, +0x3a853ee8,0x3ab55728,0x3b0a0504,0x3b609c42,0x3bba1d73,0x3bfd6ab4,0x3c252ce8,0x3c6182a5,0x3c4a8c78,0x3c590b45,0x3c6dda04,0x3c85c191,0x3c71d0f5,0x3c2c29ed,0x3c08f651,0x3c017543,0x3b83b3df,0xba9de1d7,0x3a9df0c0,0x3a9c244e,0x3b449108,0x3b6ec4e5,0x3b282540,0x3b379e3e,0x3ae904fc, +0x3a667558,0xba61fc04,0xbadb7ca5,0xbb136a59,0xbad6344a,0xbab9b994,0xbaaac7c1,0xbb2c96c4,0xbb1ff1e7,0xbaf4a1be,0x39e680b5,0x3b0f34db,0x3b257656,0x3b75861b,0x3b76c47a,0x3b3fc871,0x3b027c96,0x3a6e0020,0x398510df,0x3aa96e55,0x3b600c9e,0x3be5f22c,0x3bcd379b,0x3be70cae,0x3c0ba27b, +0x3c05a20e,0xba0fccd0,0xbb01aabe,0xbb513cdf,0xbb676212,0xbbbd96cc,0xbbabda0e,0xbba10958,0xbb900255,0xbb8d2ad6,0xbb5c65e3,0xbb420b33,0xbb08f638,0xbb262592,0xbb039828,0xbb058176,0xbae4a8b4,0xbaeed0fe,0xbaa9f9f8,0xba570d75,0xb94804e9,0x3a1287a0,0x3a6bfcc4,0x3ac96f22,0x3aa3ef9e, +0x3a959beb,0x3a9aa2eb,0x3b017a72,0x3b37b330,0x3b62c8a4,0x3b80a7c9,0x3b7af2d2,0x3b832841,0x3b472742,0x3b0fcc66,0x3aaa4da1,0xb837e57a,0x3a8fcf90,0x3a64945c,0xbb0e7f98,0xb9720a67,0xba82f842,0xbab904b0,0xba9b8a8c,0xbaeae5e6,0xba93e27a,0xba404ff0,0xba8b0b0d,0xb9c84507,0xb9ac517e, +0xb938692a,0xba0454d8,0xb987f887,0x3a548793,0x3a24ef37,0x36cb7b23,0x3a27f81d,0x3981e6b4,0x3a13b16a,0x3a3ebeae,0x3a6c6112,0x3a95a1f1,0x3a9dbb1c,0x3ad6be38,0x3b064a01,0x3b28f119,0x3b453969,0x3b6b8ff1,0x3b8ba487,0x3b67d36b,0x3b4310c9,0x3b1f84e6,0x3af81b5d,0x38c67c34,0x39718b9f, +0xb95b5780,0xbaf059de,0xbb8fb9cf,0xb8312ab3,0xbb05fd2c,0xbb935434,0xbb9247c7,0xbb94f4e0,0xbb9330b3,0xbb97bba0,0xbb999b62,0xbb9b4316,0xbaa796bd,0x3a1139f5,0xbb82506a,0xba85fd54,0x39f6d80f,0x39e8fcf0,0x39b895c8,0x39e749e3,0x39c1f486,0x39dffcf5,0x39ee276f,0x39f1fd60,0x3a371c80, +0x3a666b91,0x3a8b1de4,0x3aaa843c,0x3ac40585,0x3af89988,0x3ab670fa,0x3a8e01a9,0x3a3f2e4d,0x39ffb39d,0x39a47f0f,0xbb552a2a,0xbb28adf0,0xbb916d32,0xb9fdb563,0x3b5113bc,0x3bd49324,0xbb0b6104,0x3b0cfbaa,0x3bc306dc,0x3bbf370f,0x3bbec058,0x3bb3e7ff,0x3bc9cf5f,0x3bccaff0,0x3bc81920, +0x3b243b89,0xbabe2e4d,0x3bcb1964,0x3b1fbbd5,0xba473814,0xbb941e8c,0xbb51fedc,0xbb6e5479,0xbb71ef2d,0xbb62c567,0xbb54d1a4,0xbb30d02b,0xbb451289,0xbb4a6e22,0xbb5b0bc0,0xbb54ef41,0xbb60e6db,0xbb7eb04e,0xbb7b1d1c,0xbb6ba923,0xbb32e60a,0xbb421a1d,0xbaf44381,0xbb4de465,0x3b9d626a, +0xbae63807,0x3a5535d2,0x3a00757c,0xba945fab,0x388af509,0xbb14c88f,0xbb11e8e6,0xba3138c8,0xbae420ec,0xbab50855,0xbaba3d70,0x3a2c797c,0xb940d077,0xbaf12539,0xbb14a097,0x3b0acd2f,0xbb92c20a,0xbba922ad,0xbba892d3,0xbbb06304,0xbb965a37,0xbb72a6f6,0xbb067c6d,0xbb2c9266,0xbb4b4be2, +0xbb8459c9,0xbb821a6f,0xbb8f357d,0xbba877fb,0xbba3a5f1,0xbb8523d1,0xbadff597,0xbae871f5,0xbb131430,0xbb4c551b,0x3a3b0d93,0x38b0970c,0x3afcaab0,0x3a2bae65,0x38a888fe,0x3a56f514,0x38bf5c6a,0xbaaf4da8,0x3a38eddf,0xba9525a8,0x3ac94227,0xba20f083,0x3abe2f58,0x3959efd9,0xbae69131, +0xbae9a699,0xbaca4030,0xbb7933e6,0xbbde2c3c,0xbbcce7b3,0xbbe3992d,0xbbb7ab8a,0xbb8b55c7,0xba86a5c1,0xbb3007f2,0xbb4d1866,0xbb9e638a,0xbb865530,0xbba84b91,0xbbf41203,0xbbdfb6ef,0xbbb29d7b,0xbac2494e,0xbadca2a8,0x3a810f3c,0xb9578e11,0x3b4ec1c2,0x3aa17c71,0x3ab7aabd,0x3a573403, +0x3adee826,0x3b8d79cb,0x3b4f504c,0x3b81328a,0x3b78a8a7,0x3b114ed0,0x3ae110a8,0x3ae17fd1,0x3a8f5860,0xb981fae7,0xbb171083,0xbb841741,0xbb26f424,0xbbc11f68,0xbc241eed,0xbc1eaebf,0xbc2934bc,0xbbf9ccd5,0xbb850cc4,0x3af5368f,0x36169257,0xbb2be492,0xbbc7a79d,0xbbb1fd19,0xbbce8a83, +0xbc16a716,0xbbec6741,0xbb6e4c8f,0x3b1980c0,0x3b385a54,0xbc5496ad,0xbbee8196,0xbb1ff272,0xb9df4340,0x3ba01390,0x3b469b35,0xbaa6ae8c,0xbba174bd,0xbb8e7739,0xbad020f1,0xb9f459ef,0x3ba4bfa5,0x3b9a38d1,0xba9eb872,0x3a033e80,0x394591b6,0x3b2f5024,0xb8c41b32,0x3ad411c2,0x394a2897, +0xbb116ac1,0xba3882e5,0xbb3bf5dc,0xbb328ca8,0xbbb4e53e,0xbc09fa54,0xbc232788,0xbbd633c9,0x3a926480,0xbb32d526,0xbb90d00d,0xbb83a89f,0xbc30b6a0,0xbc5861b4,0xbc4de7a5,0xbc435ce7,0x3ace2cdf,0x3aeb7bf1,0x3a0babc8,0xbbb70028,0xbc3990a0,0xbbe44042,0xbacc5929,0x3b18bf0a,0x3b522641, +0x3a9b0d62,0xbb4ac659,0xbb487439,0xba8ce443,0x3a908d07,0xb8ac9494,0xba696627,0xba333131,0xbaca70dd,0xba063ef6,0xbb80d33a,0xbbb5d288,0xbbc38dbd,0xbc0f8e57,0xbbf6f8cc,0xbb86e2b9,0x3a505f5b,0x3bec7089,0x3baf3292,0xbb2cb8f6,0xbb7a9310,0xbadd9f12,0x3b74897b,0x3bf240df,0x3c0515c1, +0x3bb29cdc,0x3b698fd1,0xbc86353e,0xbc6675ce,0xbb66633d,0xbafeb1c2,0xba85dde4,0x3a84240a,0x3a0d05b4,0xbb9ae669,0xbb2c3aa6,0xba84262a,0x3a6e7230,0xb98abab4,0xba870818,0xba38d5ad,0xba7a4aa9,0xba313259,0x3aa94860,0xba2679d2,0xb9631d61,0xbae24a64,0xba3d9866,0x3b01a0fd,0x3afba9ea, +0xbaa9c0e6,0xbbad13cc,0xbc0e7c19,0xbc22a008,0xbbf052fb,0xbb4c031d,0x3ace5166,0xbb56b190,0xbc856a58,0xbcab638e,0xbca6d4e9,0xbc80ddcf,0xbc74e0a2,0x3aea1c01,0x3bcca241,0x3b6be7c3,0x3ad2ec2e,0x3b827c37,0xb910e246,0xb9f71df0,0x3755a071,0x38ad3253,0xba2be0c0,0xbab21a22,0xba1186af, +0xb8e6127c,0xba55aa04,0xb9f55cce,0xba8e487c,0xbb404e7c,0xbb7ac938,0xbb203f5a,0xbb74f8cd,0xbbc3005e,0xbbd1c1cc,0xbbd8a0d4,0xbb6ff2c6,0xba23f5e6,0x3b4f4e3d,0x3b5bcbae,0x3b580762,0x3b402394,0xba8a4149,0xbb2fd0cb,0xbb54a62d,0xbba4c366,0xbbe85306,0xbc194e41,0xbb0c46b6,0xbc7181d5, +0xbbff5c96,0x3a7b6761,0xb8afac09,0x3a06f189,0x3b1769a6,0x3b0a8dbe,0x3ab8af54,0x3b02f00a,0x3aae8e29,0x3a7032b7,0x3aa2291e,0x3a44cb97,0xb958e601,0xbb0953ab,0xbb55ab76,0xbb5e903b,0xbb4813c9,0xba659265,0xbac53c07,0xba0e1849,0x3a74a71a,0x396e42b9,0x3a89b7b9,0x3a539b08,0x3a14bd58, +0x3ac8ec76,0x3b18cc7b,0x3b4d61de,0x3b2056ac,0x3ae467be,0xba4e2e16,0xba8d1e6a,0xbb7c3c3b,0xbc2721da,0xbc492580,0x3a8caf54,0x3a513c6e,0x3b85c892,0x3b1e3c50,0x3b67bd49,0x3b687def,0x3b55787b,0x3b384070,0x3b1640b3,0x3ad47e28,0x39ef08ff,0xba5f13a3,0xbb09eb35,0xbb3b6a10,0xbb2bcf63, +0xbb1f0538,0xbb118bce,0xbb2fa0bf,0xbb3032a3,0xbaf7a077,0xbafdab6c,0xbaeaeefb,0xbada0fe5,0xba83c82b,0xba5a972c,0xbab86d5b,0xbae5178a,0xbac4743c,0xba00ab82,0xba28d3f0,0xbacef6ac,0xbb77dd9a,0xbb09ae71,0xb94a27ad,0x3b019499,0x3b29f48b,0xbbac35b0,0xbb9c75d0,0xbb8279c9,0xbbb110b9, +0xbbb34a15,0xbbb1bcfb,0xbb9d6a7c,0xbb976b5f,0xbb6a2020,0xbb724a1e,0xbb22f487,0xbb534f42,0xbb005a34,0xbb2d2457,0xbb01182d,0xbb21304a,0xbb0e9a67,0xbb05c3f8,0xbad0b736,0xbb3c4dae,0xbb33042b,0xbaa15555,0xb99981e9,0xb9e86ed6,0xba0fea35,0xb9a18c6e,0xba8177b3,0xbad0a8e2,0xbb0ed958, +0xbb289cec,0xbb3486fe,0xbb4c8247,0xbb313048,0xbb3b2e30,0xbb530ea5,0xbb867b60,0xbaedf0d2,0xbb0eff71,0x3a702bcf,0xbb1cb5f8,0xbad0db0c,0xbae884b2,0xbb519c5a,0xbb64667e,0xbb84e008,0xbb7b2e27,0xbb381760,0xbb66aca4,0xbb6233d8,0xbb462c90,0xbaea48bc,0xbad60107,0xbb023054,0xbad1c623, +0x39a35bd7,0xba9f27af,0xba083d71,0xba0c81b3,0xb9aeff83,0xb7ac237e,0x39ab7001,0x3a37e9b5,0x394a064b,0xb949a1e1,0xba246c6d,0xba8e16c3,0xbad5191f,0xbb1139b0,0xbb1a63e6,0xbb1717c0,0xbb085ecd,0xbaf3908d,0xbb586805,0xbb811b63,0xbb0f2cb3,0xb9d19491,0x3ac826a9,0xbb65a08f,0xba8e2b2a, +0x3a6014b4,0x3aaa806f,0x3ac3aa3c,0x3abd79e6,0x3b034a12,0x3b19fa40,0x3b22aee0,0xb9c4a51a,0xbb2ea982,0x3b264d38,0x37620681,0xbaddc972,0xbb3bef33,0xbb1d1a19,0xbb223089,0xbb1c3b65,0xbb186728,0xbb1645f0,0xbb0c9ad7,0xbb1c36b0,0xbb252885,0xbb2e2afd,0xbb368c87,0xbb3bc5e6,0xbb42a55a, +0xbb4208db,0xbb4a3440,0xbb55efeb,0xbb603fa0,0xbb7e80c9,0x3b1bb299,0x3b091c37,0x3b6e43ef,0xba9b9b5d,0xbb89d3b0,0xbbaacd9c,0x39e0a061,0xbb707cc8,0xbbaf6436,0xbbc52e8e,0xbbc3ece6,0xbbad1628,0xbbba4ff9,0xbbb8b78d,0xbbb5649f,0xbb68976a,0xb5a1e8ce,0xbbc2bfe5,0xbb87db1f,0xbad7651d, +0x3b4d46a9,0x3ae5d981,0x3b0cd8e8,0x3b0f2d21,0x3b2223ce,0x3b2db79b,0x3b458781,0x3b2e2b5a,0x3b2bd24f,0x3b238593,0x3b33d161,0x3b2c4365,0x3b12224a,0x3b05929b,0x3afd89c4,0x3af99f0d,0x3b1533fc,0x3b6abd9c,0x3b44c422,0xbb7d32e4,0x3b14ca1e,0xb893f774,0xba2e9a39,0x3a4676c7,0x3a87b9d5, +0x3aac3829,0x3a0a4952,0xba82888a,0x3a45ca3d,0x3a98a7aa,0x39ab294c,0xb8b27d4a,0x397e5dc3,0xba569fb0,0xb9ca09e8,0xbba75bd5,0x3a369b93,0x3ac2483f,0x3abea7b3,0x3b123fd7,0x3b57bb9e,0x3b8a12e6,0x3bab60c4,0x3b8d2c12,0x3b729cb4,0x3b44feda,0x3b63c04a,0x3b4cde98,0x3b0b7dcb,0x3ace1a26, +0x3acffe01,0x3b088aba,0x3b3dce11,0x3b8612f4,0x3b06ab74,0xba22ac51,0x3a881f76,0x3a144ab7,0x39440c4a,0xb9f83cfd,0x3a9b35f4,0xbac9822c,0xb952f968,0xbaab5be3,0x3af80d59,0x390417ac,0x3a6f28bb,0x3942b804,0x3aaff76e,0xba5ca430,0xbaa0415a,0xbb44ea12,0xba741f66,0x3abfc56f,0x3a94692a, +0x3b0aee1d,0x3b730a48,0x3ba3256b,0x3be18491,0x3ba42c0e,0x3b9bad45,0x3b807270,0x3baea83e,0x3b968bcc,0x3b119af0,0x3a8cdba8,0x3a43e6be,0x3adef645,0x3b2ab979,0x3bea7fbf,0x3b4f5ea1,0x3aa8424b,0x3b53850f,0x3b2f7482,0x3aa15705,0x3b02cb52,0x3b8e91af,0x3b5da91f,0x3b5e8858,0x3b6e8a49, +0x3b0086bc,0x3b27619f,0x3b34b23a,0x3b29ea36,0x3b252e38,0xbb3c8b26,0xbab797ee,0xbba555ce,0xbb5888f7,0xba8270d3,0xba8a0390,0x3ac1f935,0x3ba2beb5,0x3c0ce6fc,0x3c49c0b5,0x3c17d1f4,0x3bd07159,0x3b83fb35,0x3bb7b2ea,0x3b935465,0x3a84b5fa,0xb8715d7f,0x3a4694e1,0x3b53d370,0x3b99cae6, +0x38dcb35c,0xbb85c67a,0xbbf20eeb,0xbb58cf43,0x3ac71321,0x3aa29617,0xba14edf7,0xbb9c1a58,0xbb880dc5,0xbaa3035c,0xb925ce51,0x3ba355c5,0x3b96bab3,0xba8bcb75,0x39694e39,0x3a91dcf2,0x3b2ef999,0x3b68d12d,0x3a48f17b,0x3b3e210a,0x3c15499b,0x3befdea5,0x3be88c5a,0x3af31d4e,0xba98d7c6, +0xbb3a1a9f,0xb91f7e33,0x3bbaabdf,0x3c5f551b,0x3c25dfbf,0x3c11e042,0x3c1598c7,0x3a9268e9,0xbaf56a64,0xbb1bb718,0xbb195693,0x3c231862,0x3bd81a17,0x3aa43f55,0xbb48496c,0xbc0a6016,0xbbe1e3f6,0xbaf33a22,0x3ae4b42d,0x3b5fddc1,0x3ac79f5c,0xbb26adc9,0xbb472da8,0xbaa8b62f,0x3accc76a, +0x3a55a7ad,0xb8844125,0xba891b57,0xba80033f,0xbb29255e,0xbb207f60,0x3ab1e73d,0x3a353220,0x3b1b3e4f,0x3a1a6122,0x3abf8420,0x3b6eb214,0x3bdb2846,0x3b8d8757,0xbad407fb,0xbacf5b23,0x38f1a1aa,0x3b3101c1,0x3bfefd5d,0x3c05274c,0x3b70b91b,0x3bc3890d,0xbc7fba42,0xbc8f8b7e,0xbbc7cad7, +0xba76e4f9,0xbb54ce30,0x3b14f0ca,0x3a101c00,0xbb8bc176,0xbb2e7344,0xba32f944,0x3a8a5d9b,0x3a353e19,0xb985c3c8,0xba5f62ce,0xba850ceb,0x39f47b09,0x3a5a4bc6,0x3a90494e,0xb9986c8a,0x387dd83d,0x3b70a7b1,0x3b532f6b,0x3b66c086,0x3bba813e,0x3bd42f39,0x3bb8a6a4,0x3bc73ab1,0x3bf0f977, +0x3bdb2e70,0x3c85bbad,0x3c68141b,0xbaadb9e2,0xbb3aa37a,0xbb872c73,0xbb2efafe,0xbc21619c,0x3c26f676,0x3c0189d5,0x3b9b0f24,0x3b826b23,0x3b673c74,0x3aabe8f1,0x388b1eb3,0x3a7c2de5,0x39d0a119,0xb996e0c9,0xbaa300fd,0xb984c9e5,0x3892ea6e,0xb9d351fa,0x39123ae9,0xba7a8886,0xbb14f021, +0xbb310234,0xbb88cd35,0xbb2c4af7,0xba3abcaa,0xb9591f68,0x3a353b02,0x3b19fb8a,0x3b5f89e8,0x3ba04e2d,0x3b8e6e85,0x3b5d0663,0x3ad39cd6,0xbb0e24d5,0xbae6fa86,0x3b203616,0x3ba4b6d8,0x3be609d3,0x3c203fd9,0x3c017449,0xbb5a51e8,0xbbfbd2db,0xbc0636ac,0xbb1cbcc9,0x38246e06,0x3a28b9f3, +0x3ad1d736,0x3ae115f1,0x3abcc51d,0x3b098b90,0x3a780c34,0x3aa95c88,0x3a5ef2dc,0x39c64432,0xbaf9f32c,0xbb4f8686,0xbb3a7d39,0xbb3d730a,0xbb51c7ac,0xba1e593f,0x3970d638,0x39ca06dd,0x3a96163c,0x3adc8e60,0x3b3902a4,0x3b992c43,0x3bbe054e,0x3be7bcc3,0x3c15d982,0x3c118d7c,0x3c16faaa, +0x3c159b02,0x3c193512,0x3bd14727,0x3ab89a21,0xbb2f9439,0x3bfc5e7e,0x3b60957c,0x39df3b94,0x3b1831c7,0x3b2b79c8,0x3b7bbaa2,0x3b966f96,0x3b633b88,0x3b7ea588,0x3b3fffbe,0x3b02d25f,0xb6ce1981,0xbaa29953,0xbb1675b5,0xbb058d2c,0xbb05064e,0xbae08a78,0xbb278a19,0xbb12927c,0xbb0b5ff5, +0x382feedd,0x3aa3bbea,0x3ac550a2,0x3ae5d7b9,0x3ac42794,0x3a37488a,0x39dde0d9,0x39cd86d4,0x39d6084f,0x3ab718b9,0x3b48d46a,0x3bb5fd37,0x3bc2b55c,0x3bdd95e9,0x3c069970,0x3bf871bd,0xba764eeb,0xbb4652f1,0xbb9f0f4a,0xbb9516ba,0xbbcecc57,0xbbafa5e1,0xbb94c4fb,0xbb6f3814,0xbb8236fc, +0xbb42acf4,0xbb5cbe95,0xbb09d283,0xbb3f683d,0xbb27666a,0xbb2dbcba,0xbb1c7680,0xbb2f0746,0xbb211733,0xbb31a182,0xbad2f8aa,0xb9235d01,0xb87baf6d,0x3a5b1ecc,0x3a0fcaea,0x3a115c7c,0x3a25b498,0x3a50a62e,0x3a5d5832,0x3a52d43b,0x3aad2f0c,0x3ac706ea,0x3b068f34,0x3ae84c6f,0x3ac05055, +0x3a9cd43b,0xba158cdd,0xb780b1ca,0xba215442,0xbb56784a,0xbaab9b19,0xbb230e34,0xbb31aa96,0xbb212090,0xbb4a8cbb,0xbb183371,0xbb18576d,0xbb47bc2d,0xbb14fc1a,0xbaf3ba6a,0xbafe3335,0xbb0df79d,0xbacf085a,0xba61805f,0xb9ee0eb9,0xbab7037b,0x38820668,0xb869a5dd,0x3914b0dd,0x39d15a21, +0x3a281e01,0x3a7bbc88,0x3a9bf860,0x3adfefad,0x3b0f96c2,0x3b29544d,0x3b386105,0x3b44abc6,0x3b5062b6,0x3b19ea75,0x3ad23ca6,0x3a886fd2,0x3a040cf0,0xba60adc4,0xba24c235,0xbb2fc133,0xbb8b70e7,0xbba29c61,0xbb150fa1,0xbb91d3d0,0xbbb769b0,0xbbb6743f,0xbbb6b590,0xbbaaa8d1,0xbbb2f13d, +0xbbb4a267,0xbbb10667,0xbb808a87,0xbae3c68a,0xbb9adb1e,0xbb631d87,0xbae61e82,0x38a5468b,0xb98b7f97,0xb8aa0bb9,0xb8956e17,0x37e46a48,0x38d8e64c,0x392dfc4a,0x39883a87,0x39a78b2c,0x39dc0596,0x3a0dd0dd,0x3a2ec14e,0x3a7a3f57,0x3a08124a,0x3971c673,0xb90bc11a,0xb9eab88a,0xba298cb5, +0xba5af334,0xba1115a7,0xbb09e630,0x3b39b7d4,0x3b9cba5b,0x3b7afde8,0x3ac26c16,0x3b82fac5,0x3b8a73fc,0x3b8029cd,0x3b781344,0x3b45bffa,0x3b7e1c4c,0x3b80af9a,0x3b61db39,0x3b90ad45,0x3b0fe277,0x3b59fe5a,0x3b862a39,0x3b268292,0xbb0c4751,0xba852beb,0xba936b9d,0xba94e2ed,0xba59bb3a, +0xba1d527f,0xb88747cd,0xba038e03,0xba22f813,0xba745027,0xba178df7,0xba2c5a0b,0xba976a7d,0xba713e49,0xba55b541,0xba0c7482,0xba261da0,0x38286796,0xb8eeef53,0x3ba5bda3,0x3a0bbd60,0x3b3ba441,0x3ac8a288,0x39ac0eb7,0x3aba15d5,0xba462f62,0xb998086e,0x3a891548,0x3a37335a,0x3a1b115e, +0x3a3b300a,0x3b05d118,0x3abaa1d5,0x3a8d79c9,0xb9992b17,0x3b162fe4,0xbacfca3c,0xbb240630,0xbaddad0c,0xbadf6e42,0xba3626b7,0x3871c87b,0x3ab96174,0x39c3ced9,0xb94856ba,0xba8af690,0xb9a9702e,0xb9ae5bd0,0xbaa12563,0xba0af160,0xb8f0f78b,0x3a21aba0,0x3a421e7d,0xba16d271,0xba43357a, +0x3b418da2,0x3ae72108,0x3b5f093c,0x3aa1f7ac,0x39b0a083,0x3aae661f,0xb8a78fc7,0xbafbf690,0x39a62f8a,0xba3e84a2,0x3b0f1cce,0x399aaaaa,0x3b34f81b,0x3b02c9c9,0x39e71413,0xb8364997,0x39cdf476,0xbacf372b,0xbb6c2b53,0xbb1498e6,0xbb1a3e66,0xba0a0917,0x3a42e64e,0x3b720555,0x3a988111, +0x3a2a93f6,0xba888e8b,0x3a5e30d6,0x3a166575,0xbb0e06de,0xb9be9675,0xb8e15f59,0x3a35d43c,0x3a76d5fc,0x3b015744,0x3ac81bf5,0x3b91c740,0x3b304b8f,0x3b4edf01,0x3a6bab13,0x3a31544a,0x3b5c7e2c,0x3af0f06f,0x3b159c96,0x3a9c2579,0x3af2df47,0x3b0eb4ec,0x3aacb8f8,0x3b0c17bc,0x3aa76e70, +0xb95d22b2,0xbb34d296,0xbaf13a9b,0xbb919b5c,0xbbd18363,0xbb86c025,0xbb5b73fc,0x39695bf4,0x3b6a26e5,0x3c04683b,0x3b924017,0x3ab5080d,0xbaf38230,0x3a7dbeeb,0x3aa6848b,0xbb032e00,0x3ac8724d,0x3b422066,0x3b842c6f,0x3b9d8884,0xbc173eeb,0xbb5acc28,0xba222a21,0xb9438930,0x3b886262, +0x3b63d019,0x39898967,0xbb7b3a93,0xbb71328c,0xba92766c,0xb88dd906,0x3b8c3cbb,0x3b7addb4,0xb967bd5e,0x39153861,0xb76deb2c,0x3b7661aa,0x3b1f2e67,0x3ba44b4e,0x3ba80048,0x3b36195d,0x3b0dd7ca,0xbad289db,0xbb35ad3a,0xbbcc014d,0xbc10ab1b,0xbc02d0a0,0xbb460fde,0x3b9519da,0x3ab697c0, +0x3a3c2aca,0x3b30b080,0xbb8610bb,0xbbdd60ea,0xbbfb27af,0xbbfa6575,0x3b254635,0x3b8181f9,0x3bb42e82,0xbace5256,0xbc0d60e7,0xbbeb78d0,0xbb63cf79,0x3a72b493,0x3b30e515,0x3ab57ac7,0xbb1a62c7,0xbb53d6e9,0xbad62948,0x3a4d24a8,0xb9dde494,0xba422d37,0xb9f90826,0xb9eca2e7,0x3a15824d, +0xbaf52e29,0xbafa93ba,0xba9dfaa6,0xbb1068a2,0xbb324a86,0xb9a51fd6,0x3ba611c1,0x3beec0c4,0x3b80b128,0xbb68f296,0xbb3ba313,0x3a2c99c1,0x3bac5bc3,0x3c33729f,0x3c1fa838,0x3ad8f550,0x3b4ee4fb,0xbc841464,0xbcaf75df,0xbbac98ef,0xba9512aa,0xbb157b16,0x3b28df81,0x3b070019,0xbb82f599, +0xbb28d388,0xbab64188,0x3a54ea1e,0x3a13f277,0xb9e44c01,0xbaa0b805,0xba6ffcb2,0xb9ae6c91,0x3afad631,0x392a74a1,0x3a6b2482,0xba6feeef,0xb9b8e68c,0x3aff7f17,0x3acb94eb,0x3a35cd96,0xba9d93d0,0xbb3452c1,0xbb72c893,0xbb212ee3,0xbad27de3,0x3bd65994,0x3b6380be,0xbc2c32a7,0xbbfb155c, +0xbbc65422,0xbb95f27c,0xbc19acd4,0x3c26e4c0,0x3c3cfd07,0x3be59e2b,0x3b7b3253,0x3b75ae71,0x3a1e56ad,0xb94d14aa,0x39e6d65e,0x399236db,0xb8dbfa23,0xba7f78de,0xb9e7af8c,0xb8b87c5f,0xb8c59998,0x38b1cbc7,0xb9f19ad8,0xbb038d68,0xbb4be20b,0xbafcafbd,0xbb4efdc3,0xbb802177,0xbb4159df, +0xbb1b985c,0x39f9d390,0x3b2237cd,0x3ba306ed,0x3ba4b3bf,0x3b937b67,0x3b42dc6d,0xb958a6d8,0xba75dbce,0xbaf5b353,0x3aef37ab,0x3b4284e3,0x3b8ec30e,0x3bfcb8a7,0xbbe3583f,0xbb50c4bd,0xb9c6dbcf,0x393f1000,0x3a9d4d17,0x3aee0709,0x3ad80198,0x3b140dff,0x3b26200c,0x3ae5bbd0,0x3a8e305c, +0x3a3c4dff,0x39f08a5e,0x3a1c2571,0xbae8cc69,0xbb47d844,0xbb64f403,0xbb3c0c0e,0xba6a2c2b,0xbae95dd4,0xba7b4491,0x39f22073,0x39537681,0x3ae8129c,0x3b496c14,0x3ba696af,0x3bc3a618,0x3beab9c4,0x3c0ddf04,0x3be6509d,0x3bd02658,0x3b924256,0x3bb196ed,0x3b4b5162,0xbb463652,0xbba196bd, +0x3bb691d3,0x3bbf8dd5,0x3bd19297,0x3bb9453b,0x3bb93ded,0x3bb65824,0x3b948399,0x3b861782,0x3b69f26a,0x3b3a01ad,0x3ac77004,0x39cf4d1f,0xba95f9dd,0xbb2376bb,0xbb1b1d54,0xbaed610b,0xba93bf45,0xbaf4c045,0xbb155460,0xbb0bb4e1,0xbae94df2,0xba9b1c8d,0xba4484fc,0x39d3db05,0x3a13b1a2, +0xb94134d1,0xba4560df,0xba8f5840,0xba8e58b0,0xba1096a2,0xb8e342e5,0x38c5f28c,0x3a506bce,0x3b286b85,0x3ba3508b,0x3bcab7e5,0xbb6c2165,0xbb644454,0xbb176bfb,0xbb62d6be,0xbb7502a5,0xbb6d98e4,0xbb49f0d2,0xbb3b7276,0xbb1ae9bc,0xbb364b37,0xbaee7dd3,0xbb3cc78e,0xbb10226d,0xbb413565, +0xbb16d225,0xbb2d0147,0xbb1dd72c,0xbb0b37c1,0xbaa6cb83,0xbb0f6a9d,0xbb20f6ca,0xbab10f58,0xba602012,0xba701798,0xba71ce1a,0xba2add66,0xba52f783,0xba582528,0xba6a3747,0xba555247,0xba4e7e7d,0xba202dcd,0xb97dde14,0xb97b7031,0xba44fd48,0xbb053e23,0xbacec892,0xbaf15200,0xb9a9f36f, +0xbb1fabd0,0xbae6eb0d,0xbb0c6929,0xbb4f9ca9,0xbb5fc831,0xbb73327c,0xbb4b02e8,0xbb041f80,0xbb1d4fc8,0xbb24e481,0xbb00840e,0xbaaf02c5,0xbacc5621,0xbabb1e55,0xbad75230,0xb9813667,0xbb01aa5a,0xbad68758,0xbaafd6b7,0xba910117,0xba310433,0xb98fbd1e,0x3908ac4c,0xb90aa923,0xb9596379, +0xb95616bb,0xb93f877d,0xb92d80c2,0xb95795c0,0xba57bf49,0xba9c53e9,0xbaab953d,0xbaa652de,0xbb2fc1f4,0xbb57d672,0xba6ce845,0x38666cd9,0xb9c794eb,0xbaf84ac7,0xb9da4683,0xba0220c9,0xb8fab44f,0xb802a90c,0xb98c73e4,0x395ddae9,0x39f43abd,0x39fc615e,0x39fe084a,0xba8dc8b1,0x3a29eadb, +0x3a17ff7b,0xba0ef41d,0xbb362a42,0xbb0bf97c,0xbb0d226c,0xbb071a8c,0xbb01f9fd,0xbafd4190,0xbaead83a,0xbaf04c8a,0xbaefd8cc,0xbaf35280,0xbaf5b9cb,0xbaf5270a,0xbae23dc4,0xbaf701fe,0xbb05defc,0xbb18ba9f,0xbb289d97,0xbb39b720,0xb996613f,0xb8bfc70d,0x39ce6d83,0xbb570166,0xbb6bb9eb, +0xb9d74b35,0xbb2be613,0xbb716a14,0xbacdd26a,0xbb0bc204,0xbb091c21,0xbac29bfb,0xbab87a74,0xba9d1f00,0xba7f0e67,0xbb58bf0e,0xbb26fcc5,0xba2a8e8c,0xbb660ebb,0xbb64335d,0x37848d1a,0xba12a597,0xba08b3b6,0xb9f74f3b,0xb94909b5,0xb81b8f6a,0x3994428a,0xb89260e2,0xb91524c3,0xb9c10504, +0xb904be97,0xb9985d52,0xba4e77df,0xba6c7cd6,0xba5197d4,0xb943880e,0xb933a88a,0x3aa46ace,0xb9f384f8,0xbb1bb1f0,0xb9ec11de,0xba5aec9f,0xbac308cc,0xbaa364f4,0xb9e41514,0xba9d02a0,0xbb101255,0xbb48d54f,0xbadc08d4,0xba347143,0xbac20567,0xba08d8a1,0xb9bf25e7,0xbaf434eb,0xbad5fc45, +0xbb5e77be,0xbb16e95d,0xbab888e1,0xbae303e8,0xba8f0c45,0x37164d68,0x3a6e5744,0x3aeabfd2,0x3a5a6aba,0x39099c67,0xba532b15,0xb993eeb0,0xba346132,0xbaea269f,0xbb0b5427,0xbac7ba50,0x39fc14a6,0x3a1ef879,0x3ada42f5,0xba61bd14,0xbb25acad,0xba7adce0,0x3a42a0ce,0xba7b097b,0xbad567bd, +0x386293bc,0xbb341d79,0xbaf7d49c,0xbb51e792,0x392ccc8e,0xb89f9fae,0xb9d50b5a,0x38f091c9,0x3a2a959e,0xb9f62e3e,0xbad50296,0xbb691828,0xbb40e305,0xbaf07b4a,0xbb138696,0xbaf0226d,0xb92068d1,0x3a80c943,0x3b2c09c0,0x3a4a1743,0x39c55d57,0xba6d9219,0x39c6352e,0xba1e2fce,0xbb53bcfe, +0xbb7b6a4f,0xbb38b1a3,0x3a5551a3,0x39fcbf9a,0x3ba5a8b3,0x3a352ab3,0xba0ef4f4,0x3a862eb8,0x3b3fedb5,0xb989c4cd,0x398f1520,0x3b590cb5,0x3acf82e0,0x3ab25c38,0x3a93bf98,0x3aec3d7e,0x3b21d33e,0x3b0befa5,0x3b305147,0x3b2c97bf,0xba96e24b,0xbae0864e,0xbba782ae,0xbbafa07c,0xbb9aa426, +0xbbaad01a,0xbb724bf0,0x3792a3d9,0x3b64fd31,0x3bda3db9,0x3b64e9ac,0x3a206f95,0xbb0c1f34,0xba2670c3,0xbae431ac,0xbbae1d58,0xbbaef537,0xbb22f56a,0x3b760145,0x3b721dec,0xbbc66780,0xbbe06274,0xbc15516b,0xbbae9169,0x3a746623,0x3a9888a5,0xb9a081a2,0xbb875765,0xbb71618b,0xba99b485, +0x369ad60e,0x3b713260,0x3b56033c,0xb8f10bf2,0xba11fa85,0xb8c9135d,0x3b27338d,0x3b44f31a,0x3af7c04e,0x3b47df22,0x3bbdd2ea,0x3b9b0d8c,0x3b8fc0a3,0xba54b650,0xbb72658b,0xbb6b9bf3,0xbadeb463,0x3b67afc4,0x3c1b0c9d,0x3bace537,0x3b17606e,0x3a327d84,0xbbb150ae,0xbbe20fbb,0xbbc501ad, +0xbbed398e,0x3c097037,0x3ba96454,0x3b0f6396,0xbad72134,0xbc14fd3f,0xbc08c775,0xbb7ca2bc,0x3938454e,0x3b1f336a,0x3a927879,0xbafda3af,0xbb462180,0xbaf0e63a,0x3a87d8ae,0xb9da92bb,0xba9a4a8d,0xbb0d4793,0xb9d66ffe,0xba5ef9bb,0xbb23f3a9,0xbae8c081,0xbb7cf20b,0xbb8413a1,0xbb5a3890, +0xb992ee34,0x3b98cc2f,0x3baf3c49,0x3b01dd8c,0xbb827598,0xbb3dcfa2,0xb98b2251,0x3b1512a1,0x3bda6cbe,0x3bba2068,0xb869cb12,0x3b4fcfaf,0xbc7dd42e,0xbcc8a47b,0xbc057f45,0xba97a8b2,0xbb909e40,0x3b38d50a,0x3ab366a2,0xbb655e19,0xbb386faa,0xbaa4f16d,0x3a2bd1d2,0x3a7c5a0b,0xb774e832, +0xbab5bf75,0xbabe414d,0xb9e08ecd,0x3a2f62b8,0x37f5312a,0xbadf728c,0xbac74019,0x3b089127,0x3b0bde37,0x3b086246,0x3a9c4f54,0xba64ad85,0xbb41351a,0xbb2ef54d,0xb658b12c,0x3a9f568f,0x3c38edd0,0x3bb497ad,0xbc848560,0xbc695c10,0xbc52b206,0xbc2df0c2,0xbc1d5c8f,0x3be7be01,0x3c4995a5, +0x3bff9fe4,0x3b8dfd70,0x3b469f76,0x3a43f5cf,0x398990c7,0x3a45c96f,0x39bafffa,0x392cb02d,0xba81c5d5,0xba0ab5df,0xb92710a5,0xb910538b,0x3899585f,0xba652839,0xbb0ba350,0xbb32f964,0xbb764090,0xbb47a627,0xbb20a09f,0xbb37d2d1,0xbb117b9c,0xba2f0e1e,0x3a6bda10,0x3b3e9a70,0x3ad2523d, +0xb9785ddc,0xbb609a70,0xbbaf3b15,0xbb90c163,0xbacbf2bc,0xbb86cca2,0xbbba9aa8,0xbbac3f8a,0xba2e10a6,0xbc609b18,0xbc32720a,0xbbd7ce58,0xbb39ed8d,0xba44ec14,0xb963989d,0x3a0e9612,0x3aa1d8b5,0x3a8f2a3c,0x3aa91214,0x39960448,0x39b96c92,0x394a46bd,0x39bdf177,0xbaf274e9,0xbb46fc24, +0xbb583129,0xbb813d62,0xbb8cbff4,0xbb3ca46a,0xbaa8f896,0xb9a17f63,0x39fd6728,0x3a91340e,0x3ae3bd2e,0x3b22c72c,0x3b30eb3d,0x3b41efc5,0x3b49f802,0x3b73882a,0x3b44a69c,0x3a856a56,0xba2ecb69,0xbb84d047,0xbc0b6bf9,0xbc5419a2,0x3b96752a,0x3b0dedcf,0x3b545688,0x3b553498,0x3b7491a2, +0x3b7fe8fe,0x3b8af168,0x3b6c54bc,0x3b7d3da0,0x3b5ab046,0x3b236305,0x3a4dc22d,0xba4637d1,0xbb10847c,0xbb1ed0b0,0xbb2640a0,0xbb0c1274,0xbb0acf4d,0xbaea2eec,0xbae91e6f,0xba5f53ee,0xba30f173,0xba1c0a1c,0xba610437,0xba982222,0xbadbec2f,0xbaaf56a2,0xb9d6552d,0x3a0f4b9e,0x3a8a292a, +0x3aca61a4,0x3ace2aee,0x3b43853b,0x3b76a1e2,0x3ba05a31,0x3b955eed,0xbb210464,0xbb813523,0xbba8374f,0xbba1bb14,0xbbb748ca,0xbb96c686,0xbb639959,0xbb26ddb6,0xbb3b7b5e,0xbb1f2f3a,0xbb47c841,0xbb19cde8,0xbb3b8f21,0xbb42ac1b,0xbb415de9,0xbb4077af,0xbb50b7ca,0xbb4eb650,0xbb696a98, +0xbb3c37ba,0xbad27e96,0xbaabda7b,0xb9e4e03c,0xba07131b,0xb9c17a69,0xb92132fb,0xba34bfdc,0xbab28263,0xbb048fb8,0xbaf95baa,0xbadc5338,0xbaa09af9,0xba53ff1a,0xba1c940d,0xb9d1356d,0xbafbde54,0xbb04533c,0xbb32af0e,0xbb400392,0xbb3acf80,0xbb693514,0xbb6daa1c,0xbb8085dc,0xbb8f2c77, +0xbb830fcc,0xbb87a8b8,0xbb922a0e,0xbb86431a,0xbb68c459,0xbb6c39cc,0xbb5981cc,0xbb30fece,0xbb2f0e71,0xbafb991e,0xbb09b7b6,0xba972565,0xba578fe2,0xba503a20,0xba0aa40b,0xb987a44b,0x388b0503,0x39e52fca,0x3a15716f,0x3a3cf289,0x3a30d885,0x3a0ad798,0x39539b34,0xb95d9d01,0xba519c71, +0xbab4c5e4,0xbade2d74,0xbafed299,0xbb212365,0xbb22b326,0xbb892bc8,0xbb926191,0xbb439fd4,0xbb88f4b3,0xbb9bde63,0xbb80ab8d,0xbb760007,0xbb6eb96c,0xbb5310b5,0xbb56cd0d,0xbb50a93c,0xbb41008e,0xbb8ed861,0xbb6de204,0xbb2d9404,0xbb7f625f,0xbb5b4fde,0xbab8eead,0xbad3e309,0xbabef34a, +0xbab0e1cf,0xbaa28225,0xba963c48,0xba8536e6,0xba96568e,0xbaa2f81c,0xbaaabce7,0xbab59c7b,0xbabaef75,0xbaba624a,0xbad0ec94,0xbae542df,0xbb021473,0xbb13837f,0xbb1daede,0x3b08381f,0x3af4234a,0x3adc2199,0x3b68ee75,0x3b233e70,0xba9ce634,0x3b66823b,0x3b1bd44f,0xb9f2afe5,0xba8c8d99, +0xba9fef13,0xbae00bea,0xba9be7f0,0xba966c80,0xbad2a629,0x3b34011e,0x3b7cb0d7,0xbaf240d5,0x3b108e7d,0x3b55c663,0x3ac92a99,0x3ad2df5c,0x3afb9d9c,0x3b02e1f5,0x3b17cfdd,0x3b24b516,0x3b3d0714,0x3b219183,0x3b1abcb9,0x3b07b360,0x3b2864de,0x3b26b20e,0x3b0541e3,0x3b149afd,0x3b11476f, +0x3b031474,0x3b0a8b0f,0x3b2a2e14,0x3b478feb,0x3adf0bb1,0x3b28593e,0x3b55036d,0x3aac2710,0x3aad2b72,0x3b082f31,0x3a5bf35f,0x3a912b8f,0x3ab15313,0x3b131b7b,0x3b074519,0x3b0651b4,0x3b0fe68c,0x3b0df02d,0x3b2dff54,0x3a9c1987,0xb9542c8f,0x3ab5a76c,0x3a856056,0x3b0a1c50,0x3b2d4c8e, +0x3b75147d,0x3b8e85bc,0x3ba6759e,0x3b7f0333,0x3b571dd6,0x3b2774fd,0x3b732b8a,0x3b7dc6d8,0x3b3969dd,0x3b66c960,0x3b608bf4,0x3b41b0ca,0x3b56b62b,0x3b15a7ec,0x3af6ec1e,0x3b3869af,0x3b18fd86,0x3b648a85,0x3a7ed011,0xb8537af9,0x3abd2d88,0xba9631ce,0xbb08c2e7,0xba72b2c2,0x393b49bb, +0x3acfc277,0x3a8d37ed,0x3b2cece1,0x3b4169ef,0x3afec771,0x3a70325c,0x3a1bc790,0x39b6cb42,0x3a4e4db9,0x3b09a8c5,0x3b44b3b4,0x3ba24f6f,0x3bc4e206,0x3c00190c,0x3bae2150,0x3ba137ea,0x3b6be2cc,0x3bc6efd8,0x3bc8b8d5,0x3b5215f7,0x3b9f9c14,0x3b89feeb,0x3b40e204,0x3b63e000,0x3b8c4a95, +0x3b4a98f4,0x3b5e9528,0x3b568fa1,0x3b948021,0x3a14698b,0xb9a2f0fa,0x3b18e9be,0x39dff768,0x39be33cd,0xba6417c2,0x3aaabee1,0x3b23b501,0x3ac27f57,0x3b473821,0x3b49bc73,0x3ab3b3fa,0xba6dbccc,0xbb1bbfa7,0xbb354e0c,0xbaa9c8fe,0x3ad27cff,0x3b8bf3c9,0x3c06d625,0x3c35d351,0x3c582c7c, +0x3c1206bf,0x3bbf67ef,0x3b5d94f5,0x3bed96af,0x3c01f093,0x3b92109b,0x3bf45eff,0x3be8f386,0x3baf557b,0x3bc614f1,0xbb463618,0xba23bc0f,0xbb066c7c,0xbac8779d,0x3b0a73b8,0x3b2d57ad,0x3aa137b3,0xbb1c2c5c,0xbb243c1c,0xb9e50ce1,0x39175d62,0x3b474a06,0x3b2acbae,0x3a4efd31,0xb9d1e4b1, +0xb964a7f8,0x3b66290c,0x3b98eb43,0x3bd2d001,0x3c099080,0x3c0cafe9,0x3bc12a14,0x3b163636,0xbad8c8b8,0xbba568b6,0xbbccc645,0xbb1eb390,0x3b7e8957,0x3c2b7a0d,0x3c02ee97,0x3bedfe7e,0x3c0d5d3a,0x3b1fd273,0xb793d564,0xbab51e33,0xbb173285,0x3b98ec83,0x3bd6fb51,0x3c0a5a80,0x3b186b78, +0xbbbd0c76,0xbbe5b4bc,0xbb9592bb,0xb9470fc8,0x3afd8c8e,0x3a978a3c,0xbac8c879,0xbb39d0ec,0xbaf822f4,0x3a1e7f6b,0xb9e29ff4,0xb9b3163f,0xba08d39e,0x3a1a3441,0x3a4b95d4,0x39a7511d,0x3b01a9b9,0x3b374501,0x3b8ffd5a,0x3b1ca46b,0x3b6d9d47,0x3c05396e,0x3bbce974,0x3aac0cec,0xbb99a802, +0xbaffb2bc,0x3b1e088b,0x3bbd4ed0,0x3c480fc5,0x3c1dbb4c,0xbad8f3f2,0x3b0e6c0a,0xbc480171,0xbcc9ef36,0xbc1d1b23,0xbb47adcf,0xbb7e7db8,0x3b3dff3c,0x3b1d078f,0xbb139d15,0xbb0d1b88,0xbaaefeba,0x3a335f89,0x3aa50bf7,0x396720fb,0xbacb7c54,0xba64f81c,0x390e726e,0x3ae8f038,0x3aa8234e, +0x3acc8aa8,0x3a233e96,0x3aaa5a6d,0x3aff6972,0x3ad4d4ec,0x3b4ed764,0x3b72d2f6,0x3b86574d,0x3b7c2da3,0x3b8cca94,0x3b32eb2a,0x3c42621e,0x3c2a142a,0xbafc99f4,0x3b4f79ec,0x3b923ac7,0x3b8c5fef,0xbb1f47f2,0x3c761384,0x3c703038,0x3c25568d,0x3bd1a037,0x3b38d2cb,0x3adbf6ef,0x3a38d3e8, +0x3a70732b,0x39eead6a,0x39abf12a,0xba1a1e42,0xb9e5f5f2,0xb91e7d6f,0x3a089d89,0x39fc18f1,0xb7744c36,0xba6deca7,0xbb00542b,0xbb0b4440,0xbb1019e6,0xba79ff4b,0x3a60f335,0x3b19aec7,0x3b870807,0x3ba4d2d2,0x3bbd9c52,0x3bb4df6d,0x3b85177f,0x3a6d0166,0xba12ba97,0x38279c1b,0x3a1ee54c, +0x3bdacff6,0x3c21a384,0x3c6659ed,0x3c526831,0x3a5f3cf0,0xba4ceaf9,0xbb832933,0xba3ca8d5,0x3a84ecb5,0x3a139bb9,0x3a4b7742,0x3b20c227,0x3b0a6cd8,0x3adb3357,0x3a68fddd,0x3995c260,0x3912f25f,0x3a4da4a0,0xbac2d3cf,0xbb2ed59b,0xbb619347,0xbb359ef9,0xbb04a4df,0xbb029d9f,0xbaac1e14, +0xb9be4296,0x39b1fdb5,0x3b0213f5,0x3b8c7bc5,0x3bfe3095,0x3c0b9f58,0x3c22a297,0x3c42034d,0x3c27c397,0x3c1dde40,0x3c1069fa,0x3c228a28,0x3c05f100,0x3b807960,0x3b007e7f,0x3c0bd86f,0x3c046246,0x3bb4cdc3,0x3bcb4bf5,0x3bb38ef0,0x3bb8b977,0x3b9ab5c9,0x3b892d2f,0x3b879f9d,0x3b6c37c5, +0x3b29c92b,0x3accd8d6,0x376d2415,0xbae2750d,0xbaf5466a,0xbab82f4d,0xba2329ba,0xbaa2c98b,0xbacae4c7,0xbae7f081,0xba5586b5,0x38571c71,0x39f56158,0x3ae0ce3f,0x3ae4c104,0x3a83ac50,0x3a341b87,0x395574c3,0xb9a9c364,0x3a3a9c9c,0x3b2d478c,0x3bb250db,0x3ba5d3c1,0x3bbf7a22,0x3beea6fc, +0x3c045dd9,0xba8de9e2,0xbafd644c,0xbace5552,0xbaeb31d2,0xbb2b1d87,0xbb095b3f,0xbac22a8d,0xba7c5c7e,0xbab20307,0xbad31245,0xbad470b9,0xbb06c1a4,0xbb24055f,0xbb36a6b5,0xbb2ab4d9,0xbb2b61e4,0xbb302f3a,0xbb159292,0xbac966b0,0xbab29863,0xbab89ebe,0xba8d328e,0xba730ea9,0xba55464e, +0xba1ef281,0xb999a4b1,0x38f5ad0f,0x3a1f082d,0x3a84bf65,0x3ab4357a,0x3abe5df8,0x3b030067,0x3b00ac1f,0x3b0143c5,0x3ac95c2f,0x3922a53c,0xbab92abc,0xbad91f48,0xbb3406b8,0xbb1e29fb,0xbb255837,0xbb40a86a,0xbb4d7875,0xbb60e5f4,0xbb4a88ef,0xbb1e375a,0xbb007bf7,0xbad1dee7,0xbad3f0a2, +0xba9fccdc,0xbab95c8e,0xbad154ef,0xba81329e,0xbab74f64,0xbaaf875e,0xbaf93789,0xbb0407ec,0xbad16c2c,0xbab62509,0xba893f95,0xba449e73,0xb9f713dc,0xb9c21a2f,0xb8fcb7d7,0x39878d90,0x3a32fc6c,0x3a9a2cd7,0x3ad47f4b,0x3a436bf5,0x36b69033,0xba0b1ebb,0xba5d6337,0xbad00934,0xbaf0de91, +0xba424b6f,0xbaa8a787,0xbb5de546,0xba6854ab,0xbab93d49,0xbb555262,0xbb491ade,0xbb4a41c6,0xbb5297e0,0xbb4acc53,0xbb4622c2,0xbb46d0d3,0xba161c4f,0xb987e7b7,0xbb31d992,0xba287424,0xb9b19e75,0xbae0c225,0xbab1e3ca,0xbaa54faf,0xba9d36ba,0xba91481e,0xba8834e7,0xba776c2c,0xba524c01, +0xba33924f,0xba1f4cd0,0xba0acd83,0xb9f6e475,0xb93d8ae0,0xba045963,0xba31237c,0xba801177,0xbaa2de75,0xba9bea99,0xbb0dfad0,0xbad5e3bc,0xbb2bae2e,0xbb17d470,0x365c987c,0x3b92cf11,0xbb47a26d,0xba40ee91,0x3b505711,0x3b342aa5,0x3b321e83,0x3b36a68d,0x3b61b9a2,0x3b72e9f0,0x3b783b35, +0xb93b8654,0xbb1c9235,0x3b9459e3,0xb8ff40d7,0xbb184707,0xbb34aee3,0xbb0c92f0,0xbb1c569a,0xbb16b8b9,0xbb07402a,0xbafc13ca,0xbad66fd1,0xbafeda74,0xbb061a6c,0xbb1a84c3,0xbb09b131,0xbb1493ba,0xbb38de2d,0xbb3293ba,0xbb224778,0xbacd0f32,0xbaf42788,0xba4b0875,0xbb2cb853,0x3aa5bbed, +0xbb02d6c5,0x391afd76,0xba78c5b7,0xbb07f6bc,0xba4e8305,0xbb3a24f6,0xbb606c47,0xbb3ccac5,0xbb23780b,0xbac61c9d,0xbaeae287,0x39360356,0xb6afad60,0xba99a79d,0xbae7a3a0,0x38a14579,0xbb78e442,0xbb63da3c,0xbb65fcc9,0xbb4b1749,0xbb0c4ec3,0xbabddcaa,0xba49a2a4,0xbada44aa,0xbb185d26, +0xbb580680,0xbb2e2638,0xbb3f0a24,0xbb81bec0,0xbb72d77e,0xbb382819,0xb9b83fd4,0xba55e844,0xba3f5fc4,0xbb321853,0xbafff808,0xbac4d50a,0x3aff85d1,0xba8e36c8,0xbaedc68a,0xb9a86dc1,0xbb3a9920,0xbb5b8315,0xbb58fa50,0xbadaf9af,0x39a9456e,0xba8bde4e,0x3a81cc5e,0x3a2889eb,0x39f694c1, +0xba927997,0xbb13382a,0xbb6656a5,0xbb8e5d6c,0xbb86117b,0xbb837699,0xbb1ff16e,0xbac6a992,0xb8a829c9,0xbaed0e43,0xbb143a6f,0xbb7bc5f6,0xbb29a255,0xbb63c2e0,0xbbcab2fc,0xbbb142b7,0xbb758e45,0x3a05fee2,0xba12b980,0x3b135c1a,0xba4bd25b,0xba04216c,0xb9c8dd16,0x3b5e9911,0xbaa8e275, +0xbabd9457,0x3afb997d,0xba114a7b,0xba50e3b4,0xbac75d98,0x3aa4392c,0x3b03e6dd,0x3ab16ef4,0x3b24fef8,0x3b1da4aa,0x3aaedc11,0xbaf85d84,0xbb6c9f91,0xbbc1b605,0xbbe962d0,0xbbda60a1,0xbbbccf68,0xbb1a2cd0,0x39e099e6,0x3b2c32a8,0xba039f3d,0xbb4d1d6d,0xbbbe78bc,0xbb838e42,0xbb92ad92, +0xbbf9b470,0xbbb6d684,0xbb08e671,0x3b93f5ff,0x3b5d73b9,0xbc32af43,0xbbe5b80e,0xbbe6b761,0xbba0f755,0x3a9eb293,0x3af2eb0b,0x39fbc523,0xbb1e4fe7,0xbb21c1fc,0xba49412c,0xb825b3a7,0x3b0533ce,0x3ae65f18,0x3a881000,0xba9ba9b5,0xbabdd174,0x3b0ce76f,0x3b17ca43,0x3b883f2b,0x3b8764d3, +0x3b0871c2,0x3acbcf8a,0xb981c4a9,0xbb7934e3,0xbbca1614,0xbba8d417,0xbb4e55ff,0x3ab43eca,0x3ba1ef8b,0x3a8e5fc5,0xbb34225d,0xbbb09c62,0xbc1890cc,0xbc1f1111,0xbc04c09b,0xbc2334e9,0x3b6caddc,0x3b7b7e91,0x3ba99a1b,0x3a80a1e3,0xbc05e320,0xbc0db8c4,0xbbb41fae,0xba8d88a4,0x3a9c4543, +0x3a143624,0xbab58874,0xbb286d18,0xbb07e646,0x39760158,0xbab322cf,0xbac85b31,0xbb05c2c7,0x39c8fddc,0x3ab745e3,0xbaa7a7c1,0xbb746c07,0xbbba7691,0xbbe3e927,0xbba2489d,0xba43e8d5,0x3bbaf941,0x3b779325,0xba0ad7c7,0xbbd70ba1,0xbb7dbd1d,0x3935db76,0x3b6690c8,0x3bedbe25,0x3b9d96bf, +0xbb5957da,0xb9c905a9,0xbc411209,0xbcd96046,0xbc3e8025,0xbb9b593b,0xbb8717d9,0x3b063a94,0x3ad72138,0xbae95f8c,0xbb19fc09,0xbacca720,0x39c57418,0x3a83ea4a,0x38f26004,0xbae225cb,0xbabe9e86,0xba8dc5fa,0x3a4ac9e8,0xb9bcfec6,0xba95d843,0xbacd82fe,0x39107306,0x3a7f890d,0x39fb2279, +0xbb315b9e,0xbbd54228,0xbc0fd52e,0xbc1577c0,0xbbc22fdd,0xbb2a4d9d,0x3b780a2a,0xbb4dfcb1,0xbcafd7b9,0xbc999f54,0xbc801896,0xbc52fc01,0xbbbd0e5d,0x3b99ec2f,0x3c71c890,0x3c31319e,0x3bb0a178,0x3b2a0121,0x3a44a2b8,0x3a7c0242,0x3a0d3a6f,0x3969f942,0x39adcd3c,0xba1ad342,0xba47cb71, +0xb9c4b7b8,0x39587223,0x3822da82,0xb9d807f1,0xbab3c132,0xbb162f6c,0xbb1cf6fb,0xbb3e557f,0xbb755dd7,0xbb86e6c6,0xbb652f70,0xbb094533,0xb90a1af3,0x3af46caa,0x3a28088d,0xbac7c285,0xbba8b532,0xbbb53550,0xbb9e01be,0xbb91888b,0xbc0d4e75,0xbc406ea3,0xbc531593,0xbb98603c,0xbc85ea8c, +0xbc141732,0xbb3f43f0,0xbb0cccc7,0xba584fbf,0xb9da5600,0xb93ff1a0,0x3a917444,0x3a822267,0x39bda3c4,0xb94ff012,0xb9c2fffa,0xb9b56f72,0x38c000d0,0xbad357f4,0xbb2c649f,0xbb761f92,0xbb8a6313,0xbb7ff15b,0xbb8b43dc,0xbb2d1ac4,0xba7c7630,0xb987840f,0x3a322524,0x3aa0ec3e,0x3ae64080, +0x3acb4c98,0x3abe988f,0x3a1d849c,0x3a8ba3ea,0xba1c1041,0xbb7f8a91,0xbbc25de1,0xbc0d93dc,0xbc4b9831,0xbc7836a6,0x3af3d251,0x3b12f4ba,0x3bbc6bc2,0x3b852ca8,0x3b93ea9f,0x3b798334,0x3b5aade4,0x3b4f9685,0x3b4d7f81,0x3b4cb83e,0x3b21c62c,0x3acd505e,0xb7f2b540,0xbae2b3ea,0xbb1b66eb, +0xbb22f900,0xbb07e677,0xbac48d2b,0xbaac6dbe,0xba997bc1,0xbad0115d,0xbb0b9185,0xbb1179c5,0xbb09eda5,0xbb0d3d09,0xbb20df82,0xbade1373,0xba03ab41,0x3a56316d,0x3a67647d,0x3a2cc01d,0xba43b50a,0x3a37531f,0x3aa7353a,0x3af993f0,0x3b0a2889,0xbb58442e,0xbb6fee00,0xbb63d74e,0xbb6bc0a0, +0xbb51c109,0xbb2764ee,0xbac3745e,0xba5cc888,0xba881ee1,0xbabebf5f,0xbafa30e2,0xbb161546,0xbb16bf64,0xbb3df21d,0xbb319eda,0xbb469bc5,0xbb4f0c9e,0xbb4c7a31,0xbb4df549,0xbb588f22,0xbb3cb8d4,0xbb13c0b6,0xbae148b4,0xbabd3b24,0xba8f6d85,0xba24e097,0xbab371fe,0xbb0ce054,0xbb39845d, +0xbb54928e,0xbb587da0,0xbb544652,0xbb2645db,0xbb082f7b,0xbae3e119,0xbb266ed7,0xbb6edd73,0xbb87e18b,0xbb0d3c64,0xbb81a57b,0xbb7c84ff,0xbb7e2e18,0xbb9a0a0a,0xbba037b9,0xbba3053d,0xbba0c7d3,0xbb90f643,0xbb94b8a6,0xbb87e129,0xbb819c33,0xbb5678a6,0xbb41c98e,0xbb5e328f,0xbb37f6ce, +0xbb027d85,0xbb168140,0xbae210f1,0xbae7af33,0xbacef0b4,0xbaaf3af2,0xba91af8e,0xba43133c,0xba92959e,0xbab462e1,0xbae7f7c2,0xbb0a97b3,0xbb2b67b1,0xbb54e399,0xbb6466b7,0xbb7746bb,0xbb7c8a1d,0xbb7ad166,0xbb67104d,0xbb7e96fb,0xbb7e16be,0xbb3b2216,0xba30e552,0xbb9006de,0xbb4f13e6, +0xbab7e2fa,0xba8d9e79,0xba6c51c4,0xba344021,0xb9e84679,0xb951f5a0,0x384acf92,0xbb333059,0xbb7b04aa,0xb886e446,0xbb2392d4,0xbb5bc369,0xbb3e0ddd,0xbb32cc11,0xbb2e2e82,0xbb23bded,0xbb1dc61e,0xbb185c4c,0xbb0dac16,0xbb1dd866,0xbb28d290,0xbb342b3f,0xbb4259bc,0xbb4df91d,0xbb5ba3de, +0xbb57fb98,0xbb58fa27,0xbb5dc619,0xbb674f72,0xbb69bd9c,0x3b5028ac,0x3b365d79,0x3b767bd1,0x3ac39049,0xbaa93def,0xbb878ed2,0x3b290e03,0xba7163aa,0xbb80530d,0xbb9a9f69,0xbb9de60f,0xbb98b85d,0xbb96a2c2,0xbb9377c9,0xbb98112a,0xba1f1da9,0x3b27d92c,0xbb9980d0,0xba933d0d,0x3aa73632, +0x3b6342f8,0x3b2b63e8,0x3b4bf9d3,0x3b57e498,0x3b68b1ad,0x3b714c85,0x3b7c8e41,0x3b675b4e,0x3b62a0f5,0x3b53f514,0x3b711a72,0x3b6e5cca,0x3b4fa696,0x3b56e4ae,0x3b50fd73,0x3b414738,0x3b4e0767,0x3b751f55,0x3b79cb16,0xbb0d5125,0x3b307472,0x3b02c0ef,0x38a32a1e,0x3a767c4d,0x3ac2973d, +0x3a84e301,0x3a347781,0xb8840dd4,0x3adb54fb,0x3af8532c,0x3ad5ae3d,0x3aa5dacd,0x3ae528bc,0x3b0da26a,0x3aa608bb,0xbb3b03a8,0x3b0dbb93,0x3b2e3b3e,0x3b622d76,0x3b93997c,0x3bb3f6e7,0x3bc3e0f0,0x3bc7aaaf,0x3ba39f4a,0x3b8f4ac9,0x3b78c37e,0x3ba0eac1,0x3ba3d570,0x3b81bb31,0x3b8be0ec, +0x3b856697,0x3b702ba7,0x3b8170c7,0x3b82bdcd,0x3b2d6bcc,0x3a131329,0x3aa6e04c,0x3b21ffb2,0xb8a39de1,0xba81a7aa,0x3a6ea858,0xbb2e206e,0xbb1a5386,0xbb2c10f1,0x39e1da27,0x3959f1d5,0x3a793ef2,0x3ac286b3,0x3b29e710,0x3b0f924f,0x3a3b0aa9,0xba2bd645,0x3a20bca6,0x3b4318bd,0x3b71abed, +0x3baea552,0x3be492ec,0x3bfdf2cd,0x3c07db8f,0x3bd08fb2,0x3bc7b263,0x3bac405b,0x3bf07fdf,0x3bec589e,0x3b96b8f8,0x3baeb060,0x3b9b02b0,0x3b7c1b5b,0x3b8810b2,0x3bbea416,0x3b4b06db,0x3a407516,0x3b17d42e,0x3b9e1c57,0xb9ccb12f,0xbab4192f,0x3ab24632,0xba810266,0xbac9de1e,0xbb106c80, +0x3a1a6447,0x3b15c9cf,0x3aed875c,0x3b5f9c04,0x3b89437f,0x3b0dd5f2,0x39c92afd,0xbb5ab323,0xbb08e398,0x3abd758f,0x3b707c5e,0x3bf6ee1f,0x3c361398,0x3c5a3ac1,0x3c58ee1f,0x3c167196,0x3bd47768,0x3ba657e9,0x3c093e38,0x3c0eccce,0x3bb9c0b6,0x3be79a12,0x3bd72c0c,0x3bbc3379,0x3bbe6e03, +0x3a162338,0xba5a12c3,0xbbb432c8,0xbb7f6409,0xb95fdab6,0x3ac737f1,0x3ae9b0a0,0xba605636,0xbab491f8,0xb8c9d0e0,0xb76da4dc,0x3ac32f73,0x3aaef80b,0x3ac757d1,0xbaa14a20,0xba79ad2a,0x3b05d5cf,0x3ba741d5,0x3bb41379,0x3c063f33,0x3c2d367d,0x3be7fd38,0x3b9c5a6c,0xba8109a5,0xbb5882cc, +0xbb29fb52,0x3b7d491a,0x3c28da82,0x3c6318f1,0x3c3d9996,0x3c19b1f2,0x3c05162c,0x3b688e57,0x3b0a6332,0x3adcb327,0x3919384c,0x3bc04d52,0x3bf6215a,0x3c12de4d,0x3b9fc403,0xbb7d2913,0xbbeafeb6,0xbbb3e78d,0xbab0eb53,0x3a74dc51,0x3a28d4c3,0xba76d501,0xbb09a428,0xbafc315a,0x39807459, +0xb9e59bea,0xb81649fa,0xba56861c,0x3aa284ab,0x3a3cc325,0x3accef4e,0x3b5339d7,0x3b4f18d3,0x3bcc3d56,0x3b8f8394,0x3baec4a1,0x3c094638,0x3b51e52e,0xbad4e3d3,0xbbcc5d2f,0xbae9a015,0x3b372da9,0x3ba23621,0x3c253766,0x3be30922,0xbb9440dd,0x39dac054,0xbbf1d580,0xbccb3ae1,0xbc76a9cb, +0xbbeed405,0xbb8ba95b,0x3ae112c0,0x3aa6e33e,0xb9c2772d,0xbad1d969,0xba9232a3,0x39e673d8,0x3ab6e117,0x3a18d15f,0xbae1994c,0xba7ff60d,0x38c097d4,0x3a6ee9a3,0x3ae9e3b2,0x3aac00e7,0x3ad3ff01,0x3b35f23d,0x3adbedc8,0x3aafff74,0x3b58eac2,0x3b96520f,0x3bb9492d,0x3bc641e8,0x3be6d6be, +0x3bcf2ef0,0x3c4d16e5,0x3c2efeeb,0x3a753f2c,0x3ba4609e,0x3bbe796d,0x3ba180f7,0x3b21b150,0x3c54b2e7,0x3c6b70bc,0x3c452163,0x3c072554,0x3b1659a0,0x3b272586,0x3afe5a45,0x3aa968f7,0x39d040f4,0x39b99382,0xb9c59d7a,0xba0d3389,0xb967672a,0x3a390ada,0x3a1791dc,0x395ded21,0xb79ec846, +0xba61828c,0xbb1e3df3,0xbab4c17f,0x3a58dada,0x3b1e5889,0x3b8fd1db,0x3b9be4b3,0x3ba43d42,0x3b96a6b7,0x3b7cc409,0x3ad3c277,0xbb0c02be,0xbb1e42a2,0xba6d6875,0x3ab8bb5d,0x3badd153,0x3c03cfbd,0x3c49d545,0x3c1f71fc,0x3b1c31ae,0xbb04086c,0xbbe74b4e,0xbb173723,0xb9043f5f,0xba56a86e, +0xb95219be,0x3afba91b,0x3a85cc21,0x3a653c27,0x38cb5143,0xb92d1a75,0xb958046b,0x39bbffaa,0xbaa09861,0xbb11ad9c,0xbb5e751e,0xbb4d60de,0xbb745d4f,0xbb293f89,0xbb01a1c7,0xbab5e3ae,0x399c8cea,0x3ac3ec61,0x3b78d183,0x3be6b161,0x3bf9d087,0x3c0f894f,0x3c24b088,0x3c1a170a,0x3c0dbf64, +0x3c0416bd,0x3c07242a,0x3bdf6b04,0x3b94febd,0x3b2c64d0,0x3bfdc8b2,0x3bd4b35b,0x3b55f083,0x3b9396b2,0x3b7aaed2,0x3b876879,0x3b796d03,0x3b53d7ca,0x3b6fc2c8,0x3b670c22,0x3b4b9b57,0x3b16a76f,0x3a7d6bf3,0xba627300,0xbabbb5eb,0xbabe2fa4,0xba7c3a2e,0xba8c2669,0xba760f41,0xba963a97, +0xb7ec373f,0x3a2965de,0x3a478612,0x3adbbcac,0x3adb3c8d,0x3a9d8411,0x3ad31686,0x3ad3903b,0x3ab05e24,0x3b232039,0x3ba08b48,0x3c09e830,0x3bf78303,0x3bea93dc,0x3bec9c75,0x3be2e182,0x3a535fbb,0xba4b81bf,0xbac1f853,0xba32e564,0xbad0620f,0xba3b1d6d,0x385edd43,0x3a623ad5,0xb9854eeb, +0xb9936b83,0xbab89dc7,0xba9156d1,0xbb21e8c5,0xbb1dba80,0xbb2eefbf,0xbb234ff7,0xbb3d755c,0xbb267f73,0xbb17e6e8,0xbaa3e984,0xba4a2d42,0xba893b1b,0xba833f00,0xba31511c,0xb95f7d56,0x3965cea0,0x3a46f570,0x3aaa3826,0x3aed0f40,0x3b04e02c,0x3b012a01,0x3b21b68e,0x3b0e395b,0x3b116c26, +0x3b0dfc77,0x3a9de658,0xbaec3cf9,0xbb082bb2,0xbb98d1bb,0xbb2b6751,0xbb6519df,0xbb74c0c3,0xbb5945f4,0xbb6f905e,0xbb3b0954,0xbb21ae3f,0xbb32749b,0xbaf1b419,0xbad094a1,0xbac31e2c,0xbb076ec6,0xbafd66f7,0xbaa54f3c,0xbab65381,0xbb19ba0d,0xbacae2fe,0xbaf0c525,0xbac8c9e4,0xbab463cc, +0xba9d9d3c,0xba8ce38c,0xba7800d2,0xba34b270,0xb9c24a5f,0x378aaed8,0x39efe3c8,0x3a80c4d2,0x3abdd000,0x3a420d45,0xb82b83db,0xba43e780,0xbaa9af4b,0xba8b92e0,0xba72ba31,0xbaeb17b8,0xbb53e6ee,0xbba6e806,0xba9fd964,0xbb49d23a,0xbba69e0f,0xbba6013d,0xbba78bae,0xbba2d59d,0xbba9c703, +0xbbab877d,0xbba98e9a,0xbb28cf08,0xba67e2e8,0xbb9e4c90,0xbb2aa985,0xbaa8f238,0xba624ad3,0xba722000,0xba40f784,0xba3360b5,0xba1b9539,0xba059921,0xb9e795f6,0xb998cd2c,0xb945f3d7,0xb8f173ba,0xb84cd7f7,0xb7e44a81,0x3939dfeb,0xb922bcdc,0xb995e4ac,0xb9f99e0d,0xba2f60e7,0xb9e315be, +0xbae3d313,0xbaa5ee3b,0xbb3ec1b7,0x3a19a354,0x3b5b5644,0x3bb79cf7,0xba5447ee,0x3b1fa1da,0x3ba30d1d,0x3b95ab9d,0x3b917403,0x3b82fa9a,0x3ba08b37,0x3ba736a7,0x3ba17ba1,0x3b44b21c,0x38b8639c,0x3bb7b3cd,0x3b480011,0x3a239e11,0xbb3d9800,0xbaddd1d9,0xbaf898e2,0xbae366aa,0xbacb7819, +0xbabadf6a,0xba9c45f0,0xbac00438,0xbacec8e2,0xbaf7d58b,0xbad356ae,0xbae1ec4b,0xbb11d508,0xbafe3c76,0xbadf24ed,0xba86ba4e,0xbab7b9cf,0xba636028,0xbafa40cc,0x3b784868,0xbaad3830,0x3afddff4,0x39807acf,0xbab4336e,0xb7b84d60,0xbb2a4fe7,0xbb27bc5c,0xba8c64e6,0xbaaf9dc0,0xba53f8f1, +0xba0e0873,0x3ab3b769,0x3a8ce7de,0x3a57bbd8,0xba15b5a8,0x3b2238b5,0xbb2c5d31,0xbb402061,0xbb1735a8,0xbaf864b0,0xba9529f3,0xba4232ef,0xb9d4e847,0xbaa65b8b,0xbaf0352e,0xbb291238,0xbaef08b6,0xbaed0ee7,0xbb2d18f4,0xbaf042e5,0xba94bd51,0x39e6ca26,0xb94fe0e0,0xba91c757,0xbb0bce54, +0x3947e89c,0xba09b7f8,0x3b50b371,0xba02185d,0xbaaaa89c,0x3792e14a,0xbb1ce055,0xbb8244fa,0xbb1aa3e8,0xbb21d61b,0x3a374e1e,0xba5752c1,0x3b0533be,0x3ab14116,0x3ad9d5b8,0x38d1e8c8,0xb8d64f64,0xbb1277f3,0xbb7b78b6,0xbb301769,0xbb1325a7,0xba689fb7,0xb95d0a4e,0x3a5b7988,0xba534445, +0xbaa44f4e,0xbb2e0e62,0xbaba754d,0xbaf90960,0xbb8c0f26,0xbb1636ce,0xba8847e0,0x3abc82fa,0x39d17e39,0x3a6c1e0e,0xb9dfc86d,0x3a300abb,0xb9a16601,0x3b80eb67,0xbad497ae,0xbb2f050a,0x3a178972,0xbb1c560b,0xbb2c4a21,0xbb60aead,0x39ac9ae0,0x3ab7783f,0x3a5fb9e7,0x3b204e93,0x3b23a1a3, +0x3b5fe2ac,0xbaa193a5,0xbacff860,0xbb93676c,0xbbc09d88,0xbb729061,0xbb100271,0x3a2c2591,0x3b223ba0,0x3b4f3850,0xb8bed1e2,0xbb21c953,0xbb8ef0f2,0xbb0d8a47,0xbae184c7,0xbb81d8fc,0xb9b41574,0x3b01e14c,0x3bb1aa0f,0x3b83eb9e,0xbc2770cb,0xbb8b93c6,0xbb5cf617,0xbb515e8a,0x3aaa6bfc, +0x3b2d3a9c,0x3aed90ad,0xb70fa89f,0xba847b22,0xb9d6ae62,0xb9b55ddc,0x39e52b89,0x3a08aafb,0x3b01f231,0xbadf0f1f,0xbb259399,0x3ab30ae3,0x3b01938e,0x3bbf2c48,0x3bb94cf5,0x3a6960b4,0xb7e5f1ad,0xbb612723,0xbbab42df,0xbbddde8d,0xbbc11e7f,0xbad00645,0x3b3257bb,0x3b6fe82a,0x3a6d5588, +0xbb3b0c59,0xbbb77e21,0xbbfcc499,0xbbfc47e0,0xbbd68441,0xbc020dd9,0xba1e14e2,0x3b5b93ee,0x3c125c93,0x3b8eaae2,0xbbaffdc6,0xbc02d65d,0xbbdad54b,0xbb1159ba,0xb703f2f8,0x391ff471,0xba6f6741,0xbaf2b0e9,0xbb03cf79,0xba0f278e,0xbac708fb,0xba63105e,0xba7a514e,0x3aa45921,0x3b3e98ad, +0x3a53309f,0xbb3623ea,0xbb5e7a48,0xbb820158,0xbb1c0226,0x3a959292,0x3bcf0190,0x3b0fcb42,0xbb2f1758,0xbc097ed3,0xbb777810,0x3acb8691,0x3ba90400,0x3c065f28,0x3b97a52a,0xbbc139ae,0xbb3cac26,0xbbdceb44,0xbccc79cd,0xbc81bd62,0xbc1ef045,0xbb1f1928,0x39cd9576,0x3a59e979,0x3877c6d0, +0xbabebb72,0xbab3a6dd,0x3969bc62,0x3a6e95e8,0x3956948f,0xbaf7df88,0xba981b38,0xbaa1a912,0x3a4d5ca9,0x3918bbde,0x3a3df6ad,0xb89743cf,0xba1c0586,0x398bc9fc,0xba2e0ceb,0xbb77f5f8,0xbbe3b462,0xbc043f35,0xbc0faf82,0xbbc0cdc6,0xbac2f079,0xba19f36b,0xbbcc7cd3,0xbc7fea82,0xbc3dff30, +0xbc083372,0xbbf74e7d,0x3835b5d3,0x3b8e9482,0x3c60b60d,0x3c504346,0x3bf140e7,0x3b36f546,0x3ad76d42,0x3b085d3f,0x3a4e329c,0x3898db49,0x393acb86,0xb99c49c0,0xba4c655d,0xb9dc8cf8,0x39efe259,0x392adaf8,0x3997ad93,0xb8ce23a5,0xbaa45290,0xba6a12ac,0xbb033ee8,0xbb4e2739,0xbb310525, +0xbacc0ecd,0xba3126a9,0x3a6dc836,0x3b05cb2d,0x3ab55e7b,0xba22d437,0xbb6da32a,0xbb570f7f,0xbb3a4988,0xbb88ff0a,0xbbcb7e55,0xbc00263c,0xbbffed3c,0xbaf8bc97,0xbc1d596a,0xbb73db69,0xba196855,0xbab68e6c,0xba181104,0xb99e42ba,0xb9eb32ba,0x3ab204c7,0x3a79523e,0xb9a4f362,0xba0b18c7, +0xba424c5a,0xba247311,0xb9508ed6,0xba9b8333,0xbb071848,0xbb803d7d,0xbb7b19a3,0xbb443cb8,0xbb8c29c5,0xbb5c5b4d,0xbad2b37f,0xba404ea6,0x3a2b69ab,0x3ae71757,0x3b3b4353,0x3b450f9a,0x3b5ba456,0x3b34e79b,0x3b17eaaa,0x39a901a4,0xbb3627cf,0xbb7cdb09,0xbbac2735,0xbc02bc40,0xbc09e1a9, +0x3a994c43,0x3b5af19e,0x3bcdfb52,0x3b8ea19d,0x3b902254,0x3b61c0ec,0x3b1c05a9,0x3b212873,0x3b123b2a,0x3b28b904,0x3b1088a0,0x3b0e4a2b,0x3a5b7694,0xba6bfdba,0xbaed0e8d,0xbafc3442,0xbad48754,0xba88ccb3,0xba88a572,0xba4a0977,0xbad90386,0xbb0db5b1,0xbb1530b3,0xbaaf103d,0xba7cb182, +0xba850a8f,0xb937f980,0x3a0aba71,0x3ab5577d,0x3ad1da6f,0x3ae0e584,0x3a6e032b,0x3a9b9e80,0x3aa5135d,0x3abe3d78,0x3add34ca,0xbb09ed78,0xbae8f28e,0xba222f49,0xba527686,0x37953e30,0x39a27434,0x3a89e5ca,0x3abbe59a,0x3a90674d,0x389218c0,0xb999957c,0xbacb9be3,0xbacf46b9,0xbb2218e4, +0xbb114386,0xbb2de37b,0xbb32a652,0xbb2776a4,0xbb080809,0xbb31a316,0xbb4ad8c1,0xbb1f143e,0xbb1b2fe1,0xbaef15d4,0xbaae066f,0xba353e57,0xba83062c,0xba9a3ca1,0xbaa3fa9e,0xbaf5ecf9,0xbb124392,0xbb209956,0xbb0258e5,0xbad2431b,0xbab5d1d1,0xbab872ad,0xbb7f3e55,0xbb838de3,0xbaf4dfe2, +0xbb7ff2e6,0xbb5df2c3,0xbb62d417,0xbb8cd880,0xbb8e21a7,0xbb95eb9b,0xbb8a07bd,0xbb55d0ce,0xbb6755f7,0xbb607ffc,0xbb483ade,0xbb1f62fd,0xbb251e97,0xbb3d9ede,0xbb386c62,0xbad6f116,0xbb3cc7b9,0xbb1eea9a,0xbb1ac601,0xbb130ed1,0xbb055388,0xbafb392f,0xbad971ba,0xbb1414cc,0xbb31170f, +0xbb4bdce6,0xbb5b6d22,0xbb6a8cad,0xbb812b81,0xbb818053,0xbb846dee,0xbb85a2c7,0xbb834247,0xbb5a77df,0xbb78d993,0xbb173c8e,0xba853223,0x375ff3f3,0xbb410327,0xba98601f,0xb90dee97,0x39379493,0x39a0a509,0x397633e3,0x3a1bff7a,0x3a5e9c08,0x3a80ceae,0xba472d04,0xbb26efb5,0x3a43fd22, +0xba503688,0xbb0daf55,0xbb5e476e,0xbb3ebb30,0xbb3dfaef,0xbb34415f,0xbb2ff0b2,0xbb2bb00c,0xbb219157,0xbb2e31cd,0xbb35b1f2,0xbb40c5cb,0xbb4dd360,0xbb5b0665,0xbb69a975,0xbb62d44a,0xbb5f9bed,0xbb5d8f9c,0xbb5f2151,0xbb5d30f1,0x3afdf8ab,0x3ae8a335,0x3b36cc48,0xbaa162fc,0xbb547a27, +0xbb37a086,0xb8f3e490,0xbb41fc9c,0xbb63ae1d,0xbb8b0bc9,0xbb8c7b2c,0xbb716351,0xbb786790,0xbb6cdbfd,0xbb60dcbe,0xbb2ce4b0,0xb916b6bc,0xbb46ce19,0xbb3c19f8,0xbaab9935,0x3b201b4d,0x3acac35c,0x3af8e969,0x3b0da680,0x3b183019,0x3b1c752f,0x3b1d5507,0x3b0fe0cc,0x3b0ca4f9,0x3b02f4e0, +0x3b128a3f,0x3b0c5304,0x3ae606ce,0x3ae87ab9,0x3aeabdca,0x3b00f51a,0x3b02dabd,0x3b34eb45,0x3af93c25,0xbb5e4258,0x3a846178,0x39c66a27,0xba933e9c,0xb9f1284f,0x3912685e,0xb9be5584,0xba947ea0,0xbafbd843,0xb9b701c8,0x39cfeb36,0x38247da2,0x3956c1b5,0x3a5648d8,0x3a21d263,0x39b94aac, +0xbb553538,0x3a1ebfd5,0x3ad3f547,0x3afd63a0,0x3b4fd1aa,0x3b815d5b,0x3b8d5bcb,0x3b83546e,0x3b4fca4b,0x3b290c90,0x3b0b3a34,0x3b3840da,0x3b326273,0x3af674a8,0x3afb5e72,0x3b075ac0,0x3b31de6e,0x3b2a7ab7,0x3b5e3d17,0x3a9de15f,0xbaec29e6,0xba01e4eb,0x3ab476fe,0xba9e2411,0xbaf98db8, +0xb72ec0ff,0xbb7878ff,0xbb440381,0xbb75febf,0xb9e939d4,0xba83322d,0xb8a3bf3d,0x39bf1089,0x3abdd4f6,0x3ad0c559,0x3794e335,0xbaf2b10c,0xba21eeb8,0x3af0acce,0x3b04ce1b,0x3b79becf,0x3ba34f81,0x3bb349be,0x3ba7aa40,0x3b824bf2,0x3b74d0d8,0x3b55cd6a,0x3b8a252c,0x3b70e4c3,0x3ae7d0a7, +0x3af174e7,0x3b0f8c65,0x3b60433c,0x3b405ac0,0x3bab3f18,0x3ac60350,0xbada8da5,0x39ce097a,0x3b861f69,0xbad7d60f,0xbb25313b,0x39d70deb,0xbb214308,0xbb539865,0xbb3fbc92,0xb97391c6,0x3ac23ebf,0x3ae58e2d,0x3b4aca87,0x3b8786e5,0x3b290c4b,0x3a5ca308,0xbb5d1f8c,0xbb2188fc,0x3a262dbd, +0x3af49ebd,0x3bba0e96,0x3c0a56c7,0x3c22c6c6,0x3c0bf2f5,0x3bb0ef26,0x3b520f65,0x3b2c00d5,0x3b8a8f48,0x3b83b1f8,0x3b02a007,0x3b209686,0x3b58d297,0x3bb9f9ec,0x3b96cd7c,0xb956860e,0xbb330be9,0xbbfa118d,0xbbb09450,0xbabd8d29,0x3a869b15,0x3b104bcf,0x3a576521,0xb9fc048d,0xb9a32351, +0xba0bb6ce,0xb8aa2303,0x397ea174,0x3b03c3d4,0xbb0967ec,0xbb12850e,0x38504bc0,0x3b51fb4a,0x3b51aa8f,0x3bac1247,0x3bea3ffc,0x3b93834d,0x3b5bf95b,0xbaede233,0xbb30778a,0xba5bc1fb,0x3be5beb8,0x3c4a7d53,0x3c447b48,0x3c1ebd31,0x3bb8346e,0x3ab5f09c,0xba3739a3,0xba3dc2b7,0x392bfe00, +0xba81aeba,0x3b95f1ba,0x3bbf4674,0x3c018b9b,0x3bbb34d2,0xbb46bba0,0xbbf8c25d,0xbbd58ce0,0xbb31d714,0xb951dd4f,0x390f7043,0xba20e58e,0xbab22593,0xbaefcdb7,0xb9c31e72,0xba16bd00,0x38b89032,0xba82a11c,0x3accdb97,0x3a8e9c5c,0x3af07f8d,0x3accc7f1,0x39e71034,0x3b46e36a,0x3b5048bb, +0x3b9a4305,0x3bcb08ff,0x39f0051d,0xbb887879,0xbc016a8d,0xbb1a6bd2,0x3b14fecf,0x3b6c3277,0x3bc4ac7c,0x3b305cd5,0xbbde04a4,0xbaf00b78,0xbb8a5e5b,0xbcbe0382,0xbc9cb155,0xbc3b8d99,0xbb2ae61d,0xb9892450,0xba35da84,0x3a5d87b3,0xba8cc4cb,0xba64660a,0x394923cc,0x3a8496f1,0x3a038131, +0xbae90def,0xba9be5a6,0xba1d9a2f,0xb94dc12b,0x3aabd563,0x3a127ddc,0x3acd2ba4,0x3b363623,0x3a6cecee,0x395f980b,0x39d6837d,0x39f8a139,0x3a8514e8,0x3ad44b3c,0x3b8c965b,0x3be8c8f1,0x3bf6f001,0x3b571a43,0xbb8f4e1e,0xba68858b,0x39ec2eaf,0xba2eb14c,0x3b60a93a,0x3bb96bd4,0x3c31bb18, +0x3c4baf8f,0x3c1577cd,0x3b39fcf2,0x3b3be0af,0x3b3f085c,0x3ad690d0,0x393e5618,0x390a127f,0xb98c4ece,0xba267d2c,0xb996070d,0x39d9df91,0x39d56bf2,0x39bdaba4,0x3a1a94e2,0xb8bde7aa,0xbb057182,0xba6a44ca,0x3a29e618,0x3ab32c18,0x3b5473c6,0x3b2dea04,0x3b38721c,0x3b136a2d,0x3a9a2818, +0xbab62bb8,0xbb9e0fdf,0xbb86b137,0xbb19bb81,0x3953e12e,0xba952763,0xba2bbbef,0x3b201c0d,0x3aa1b582,0xbae51ae7,0xbb926748,0xbbe85f68,0xbb652732,0xbacd15f6,0xbacc63ab,0xba54c627,0x3a912df6,0xb800bda6,0xb99a9734,0xba71edb5,0xba2b921d,0xba110219,0xb9ab70d2,0xba7f5aeb,0xbaeb74d5, +0xbb5dd2a5,0xbb741269,0xbba10125,0xbb6273d0,0xbb3a9277,0xbb137b3b,0xb96cbc13,0x3a36fa24,0x3b1608da,0x3b7ddf98,0x3b8e9a21,0x3ba37d4d,0x3ba5d8b6,0x3bacf0c0,0x3b82bbc5,0x3b3cc2ab,0x3acc85ac,0x395cd53f,0xba28dd80,0xbb09bbd1,0x3b65bab0,0x3b228d26,0x3aca171a,0x3b0df48b,0x3b03e283, +0x3b075bcd,0x3b10ec34,0x3aefba99,0x3b1be7f1,0x3b30ae5c,0x3b384504,0x3b201e53,0x3abed493,0xb92a7ea0,0xba975c29,0xbae1ee0b,0xbae32c82,0xbaa66f9f,0xba4c949b,0xba36563f,0xb7d572ca,0x391649bd,0xb86d852a,0x39eb0003,0x3a2a4457,0x3a487e5e,0x3af9ffb1,0x3b2b2bf9,0x3b484d3d,0x3b806848, +0x3bb75cd9,0x3bfa31d7,0x3be0c0b4,0x3bba03cb,0x3b98eb35,0x3b56dc22,0x3acac3e4,0x387ecb3d,0xba8c9654,0x38f372cc,0xb970c4e8,0x3a3db3a6,0x3acd4d8e,0x3b22bc4e,0x3a9933be,0x3a8c8cf2,0xba1f70ae,0xb982dd2d,0xbaf76feb,0xbb0069fc,0xbb1ca050,0xbb161ef1,0xbb3b30e9,0xbb2f5fd3,0xbb40185f, +0xbaeaa804,0xba87f359,0xbaba31d4,0xbaad89ee,0xba606f64,0xb9942ab7,0x3961a993,0x3a0ae93e,0x3a5d4777,0x3a9e3077,0x3a8a4d3a,0x3a5afdb5,0x3a84d3aa,0x3a50d46e,0x3a793fa3,0x3ab2defb,0x3a9a5e1c,0xbb27d50d,0xbb369f03,0xbb9a1f3c,0xbb38e136,0xbb7c7f98,0xbb7b54c7,0xbb5ef7a3,0xbb72ebb4, +0xbb45655b,0xbb47f34e,0xbb6b32dd,0xbb384fd5,0xbb1d5dd8,0xbb2787de,0xbb3c99e9,0xbb229b5b,0xbb10989f,0xbaf8272e,0xbb3aa169,0xbad0edc2,0xbada62e3,0xbacd08c0,0xbabbd3b9,0xbab42dca,0xbab0b104,0xbaa6994d,0xba9d02a6,0xba96c797,0xba92c4aa,0xba8671b8,0xba658c41,0xba55ef2a,0xba850002, +0xbabd43c0,0xbafd6c9a,0xbb1d1e52,0xbac355eb,0xba9f11d9,0xbb492cd4,0xbb88384c,0xbb8da4a4,0xbb1bc6b7,0xbb802527,0xbb958082,0xbb975905,0xbb97c056,0xbb8da166,0xbb977a67,0xbb995627,0xbb950188,0xbb803b3c,0xbb1cbceb,0xbb8debac,0xbb787599,0xbb2d9ba5,0xba89eb2b,0xbaab9262,0xba92f83d, +0xba895a32,0xba7d648f,0xba66a6cd,0xba51016f,0xba53a002,0xba56740e,0xba5de48f,0xba68df95,0xba7e8650,0xba85a8ae,0xba99bbe9,0xba9f3595,0xbaa06d19,0xbaa6d83f,0xba973c24,0x39d8f6a6,0x3a081839,0xba10428f,0x3b3dae5f,0x3b7c217b,0x3b2f273d,0x3b00426b,0x3b588a43,0x3b39a43e,0x3b18a4bf, +0x3b0d01f3,0x3ad8e6d6,0x3b17151e,0x3b1db49d,0x3b09285c,0x3b749dea,0x3b2c9ade,0x3b21923a,0x3b6d0ffa,0x3b3b9d02,0xba15ead2,0x3987090c,0x39b5dab1,0x3a1dd08a,0x3a426419,0x3a5abbc4,0x3a73b603,0x3a3cc2b1,0x3a25a750,0x39df57a7,0x3a2f50c5,0x3a23a195,0x39888311,0x3a1da4e9,0x3a3afa90, +0x3a6983c8,0x3a281b85,0x3a4454a9,0x3a3f5b89,0x3b55800e,0x3a2769fb,0x3b416b55,0x3a7c3fb7,0xb86317ea,0x3a6db17b,0xba9229ed,0xba452234,0x3a252552,0x39faeec2,0x3a118977,0x3a860511,0x3b06db10,0x3b03da1c,0x3b2aac03,0x3a8c559b,0x3b15f18c,0x38ca23dd,0xb9a0ea10,0x3a57804c,0x3ac8ba1f, +0x3b0be947,0x3b1444b8,0x3b070f4b,0x3aaa2a87,0x3a5c86a1,0x39fea599,0x3a9b4532,0x3ab6917e,0x3a57b962,0x3aee499c,0x3b06fa61,0x3b139969,0x3ae3a37e,0x3a18a433,0x3920c19d,0x3af5be99,0x3a5a53e4,0x3b5e8fdb,0x37cd8500,0xba53ee42,0x39ccb406,0xbb12bb10,0xbb7a756e,0xbaca8962,0xbb0b0e12, +0x39e7ed09,0xb978dae1,0x3b184c00,0x3b094489,0x3b1dd210,0x3aa33b79,0x3aab7258,0xb95a8ea2,0xba54527a,0x3a4ff467,0x3b0a5029,0x3b53c71a,0x3b6d9d8d,0x3b79a18f,0x3b24e8a2,0x3b0df8bf,0x3abc1319,0x3b1a9a94,0x3b158593,0x3a198353,0x3b3a5633,0x3b4ff416,0x3b510009,0x3b24a19e,0x3ace18d8, +0x3a8ae3ce,0x3ab94d8d,0x3a0a4983,0x3b83b40f,0xbad24dc7,0xbb593a8e,0xba09a327,0xbb7237a6,0xbb8469c9,0xbb84d7b7,0xba4dab1d,0x3a39dd30,0x3a341cef,0x3b2274c1,0x3b44396d,0x3b8d1dc0,0x399a716c,0xb90f6cb9,0xbb027e74,0xbadd62f0,0x3adb333c,0x3b97fd62,0x3be38e3d,0x3bffaaf4,0x3bd6806b, +0x3b661ad5,0x3abcbcf3,0x3a4ebf03,0x3b368e00,0x3b726fd7,0x3b230c0a,0x3bcbb493,0x3bdbe917,0x3bce96cb,0x3ba1d1c0,0xbb8b7cb8,0xba00d3bc,0xba436351,0xbace43b7,0x3a4b1bef,0x3b41ea58,0x3b537f6c,0x3b20c512,0x399baf32,0xb9a1b3bb,0xba4cfc1a,0xba454709,0xb9826881,0x3b274673,0xbb0a3d22, +0xbb4ff5f4,0x3850fd73,0x3ac58388,0x3baac23c,0x3bbefefe,0x3b00d8b9,0x397d1e57,0xbb6e861d,0xbb9e06ec,0xbbb481f3,0xbba94bdd,0x3b18844f,0x3bde15fd,0x3bb4c4db,0x3b899193,0x3a8d2a2a,0xbad6f505,0xbb20af3e,0xbb217cb8,0xbb1e934c,0xbb1c8e24,0xbafc3a28,0x3b693d37,0x3c338874,0x3be20957, +0xbaf9c998,0xbbe6ed23,0xbbf3330f,0xbb5952d0,0xba57967b,0x387a8279,0xba138641,0xba90e529,0xbae76fbd,0xba93f94e,0xba75ce45,0x39bab81d,0x3997ca9c,0x3b013dbc,0x3b4de382,0x3b3db8d9,0x39c25774,0x3a8c6f11,0x3b1a87b5,0x3b41f669,0x3b928e23,0x3bc43767,0x39b02a75,0xbb93cbab,0xbc12273b, +0xbb32a5ce,0x3b488624,0x3bb95e99,0x3bfe5724,0x3b6bdaf0,0xbbf705bf,0xbb7839b3,0xbb571821,0xbcb08c3c,0xbc9c1259,0xbc5a2196,0xb898aaa3,0xba9ee64a,0xba4f258c,0x3aa154dc,0xba29f039,0xba60dbc5,0x391bcaee,0x3a37597b,0x39814a04,0xbaecde3f,0xba6ed637,0xba8dd6c1,0x39b02c7f,0x3a751c7f, +0x3b170941,0x3ade5486,0x3802112a,0xb85a7ed2,0xbab33af8,0xbb2606cb,0xbb5a33ff,0xbb2b28a7,0xbb441041,0xba0c49f8,0x3b7f6b9b,0xb9c97159,0xbb85b54f,0xbb9921c5,0x3a234ccf,0x3b604a34,0x3b0176ab,0x3b90c92f,0x3b9b9f82,0x3c181be8,0x3c4e79ee,0x3c19c773,0x3b7876c9,0x3b35eba8,0x3b42cdd9, +0x3ad558c2,0x38b66de9,0xb7346558,0xb91408c9,0xba208687,0xb9b2d856,0x39cc8509,0x39b98202,0x3a726742,0x3a9cde40,0x38d55015,0x38ccf81e,0xba3fc334,0xba6c0b8f,0x3a082d25,0x3b160c81,0x3b1f1f9a,0x3b3d0638,0x3b2a202b,0x3b2315b3,0x3a4275d8,0xbac73d0a,0xba3e6417,0xb91fa3ae,0xbabe87f1, +0xb9a9673a,0x3a8a3f30,0x3b93b03b,0x3b6c2981,0x3a86aea8,0x3ab5d644,0xba7f6b57,0xbab558dc,0xba2ed0f3,0xb9a7b490,0xb9c0e8ff,0x3acb54a5,0x3a386115,0xba1fb6a6,0xba585abe,0xba5d61e2,0xba3234b6,0xb9c5d547,0xba387013,0xbac2f05c,0xbb6b7456,0xbb5225b8,0xbb2ad210,0xbb60a1d7,0xbb5aa364, +0xbb0ec67c,0xba7ef898,0x3a572392,0x3b3084cd,0x3b96e21e,0x3bb02a96,0x3bd11825,0x3bddbf6b,0x3baf756e,0x3b6a5902,0x3b042865,0x3b03170b,0x3ad509fa,0x3984287d,0x3ab8f93f,0x3adcbdc3,0x3b79a6f6,0x3b8a4961,0x3b6a67c6,0x3b53b6cc,0x3b2d27ad,0x3ad39808,0x3ad52d0b,0x3ac66fb5,0x3b0102d8, +0x3af9d392,0x3b1e4ad6,0x3acc5cc1,0x38404849,0xba7a3210,0xba9c3a92,0xba993f39,0xba7ef1f9,0xba897a0c,0xba44757d,0xba88da4b,0xba71892a,0xba7836fe,0x3a214fec,0x3ab1c5f3,0x3ad739f1,0x3b1ff572,0x3b2540d6,0x3b2b0013,0x3b51cd15,0x3b8b45af,0x3bad9265,0x3b863cf4,0x3b5b4e97,0x3b308659, +0x3b15b1d4,0x3a67b485,0x3a87731c,0x3b03dd86,0x3b0940b8,0x3b297d57,0x3b35a2c4,0x3b4e302b,0x3b6306b8,0x3b3627b5,0x3ae2d9aa,0x3a9e6e0a,0xb946171b,0xba642063,0xbadcffcc,0xbada4182,0xbb01f7bc,0xbb12171d,0xbafae3f2,0xbaa24151,0xbad1e872,0xbb119167,0xbafb68c1,0xbb100b90,0xbad21fe6, +0xba90a964,0xba0b159f,0xb7befae5,0x3a3b9816,0x3ac56421,0x3a91f44d,0x3a350ad9,0x3a045a2a,0x39edee59,0x3a23a3a8,0x3a448f8f,0x3a9b0552,0xbb3db5fc,0xbb308ca2,0xbb13b167,0xbb35ea5d,0xbb23d31e,0xbb2bbf24,0xbb3fcc86,0xbb4293b0,0xbb478a9a,0xbb2cec03,0xbb017dc5,0xbb050bb1,0xbb0ddc82, +0xbaf9e235,0xbae233a2,0xbb020294,0xbafc9b57,0xbb13a253,0xbada9810,0xbb318f0e,0xbb2984c4,0xbb1a8e11,0xbb147fcc,0xbb0a91dd,0xbb071d21,0xbaffb751,0xbb1cc8c7,0xbb336506,0xbb3db308,0xbb3b79f6,0xbb2d317e,0xbb24e798,0xbb21c55f,0xbb251ed4,0xbb2f6ab2,0xbb35c181,0xbb0f47db,0xbb1f431a, +0xba6c621b,0xb9eec22e,0xbaa3b419,0xba9242f9,0xb9a9c233,0xba60802a,0xba460e22,0xba47a877,0xba81dd46,0xba5649a4,0xba3b2b61,0xba4408a6,0xb943f8e5,0xba92b100,0xba517c0a,0xb9bb0940,0xba892000,0xbb324677,0xbb14f170,0xbb13d09e,0xbb0e2cfb,0xbb0afa70,0xbb07c4f5,0xbb00d4f0,0xbb02fd3a, +0xbb025e0b,0xbb06d0e1,0xbb0af26f,0xbb12637c,0xbb178aa0,0xbb17a01a,0xbb15a8f9,0xbb124112,0xbb0ed5f6,0xbb1182f1,0xb98ce97c,0xb80b0c4b,0x380c2639,0xbb1647f3,0xbb0402c1,0x3a9c2078,0xbb0c441f,0xbb12f612,0xb7da4a06,0xba1723db,0xba1f427f,0xb87c3f80,0x37741662,0x3971f73c,0x3a020c4e, +0xbaf576ec,0xbaf504e7,0x3aa85f8b,0xbae7a234,0xbb138d0b,0xb97f62e8,0xb9c2498f,0xb9a95729,0xb7eafeed,0x385d450e,0x389a4d5a,0xb750af14,0xb8d22a91,0xb9139140,0xb9706dd0,0xb96d30b6,0xb9bbcd09,0xba2958f5,0xba18e977,0xb9d5d2ca,0x396d36e7,0xb8142c9e,0x3a31f692,0xba4b4632,0xbabdaf66, +0xba7f3cf3,0xb9bf1a7e,0xbab7ccf8,0xbae16dca,0xba82b301,0xbb0b5b61,0xbb392e39,0xbb31ac73,0xbb0a5e0e,0xba980a6c,0xbab0251d,0xb90d2302,0x3980b258,0xb9dcf152,0xb9f2fc08,0xba95bdcd,0xbac384e5,0xba26a864,0xba0c6f7b,0x3a081f39,0x3a8abe8a,0x3aa54c1d,0x3a3c98f2,0x397ae847,0xb982ca68, +0xba149e58,0xb9dcf9c4,0xba207a62,0xba94163b,0xba7b04f3,0xb9bc5cc2,0x3aa590ef,0x3a1cdc26,0x3aab9282,0xba5be6e5,0xbb1ec9e5,0xbacfa048,0x3a70bf50,0xbad87a58,0xbb0fd50b,0xba675436,0xbb8357c4,0xbb780e38,0xbb736038,0xbb00e9bb,0xbaba6922,0xbaad5012,0x38a193f5,0x39f359f6,0x3a6851e0, +0xb9abd7b3,0xbaec5ba2,0xbafd9b72,0xba7959dd,0xba43dd2d,0x3a3bad00,0x3ac1aa7f,0x3adffd53,0x3a6c4123,0x3a0b7421,0x398e202c,0xb66af407,0xb99f511e,0xba8f4422,0xbb0feba3,0xbaf0ca71,0xba00b019,0x3b271d53,0x3a9d88ef,0x3b3c833a,0xb986148f,0xbb17b226,0xbaa8bd5e,0x3b341efb,0xbb2a2c57, +0xbb683169,0xba3ab154,0xbb813af3,0xbb973f99,0xbb54a597,0xba954556,0x398ecbb1,0x3a8a15c6,0x3b18f165,0x3b52e248,0x3b412685,0x3a5136ec,0xbafc6015,0xbb3440ee,0xbae2372f,0xba63e5a4,0x3b07527e,0x3b802a58,0x3b979123,0x3b2bbc79,0x3a47e0e3,0xba645a14,0xba7c49d8,0xba9a344b,0xbad44f98, +0xbb1d0f8e,0xbab7d2cd,0x3a736564,0x3bb7fc54,0x3b5a3c71,0xbb385e7b,0xbb78e334,0xbbc815d4,0xbb9245a3,0xba896c63,0x3ad5e4ee,0x3b3d47ae,0x3b32ac81,0x39b00496,0xba3f6b47,0xba8cc72e,0xbaa06fba,0xba067bba,0x3b1c9ae0,0xbb2e2612,0xbb6b1b2e,0xbae5e659,0xb83317fb,0x3a52d4db,0x3aa51c83, +0x3a2535ac,0xb999089f,0xbaab1601,0xbb80a3e8,0xbb6cea8e,0xbae4ab8a,0x3bc56c5c,0x3c1e5ead,0x3bcdf754,0x3b8cfe9a,0xba2c2bf6,0xbbd400b8,0xbbc61c61,0xbba1a667,0xbb5e3adb,0xbb48c2d6,0x3a86c853,0x3b345d59,0x3bddef8c,0x3bb5a984,0xbb1ecd96,0xbc00c549,0xbbfccca7,0xbb8339f0,0xba890c49, +0x37083c1f,0xb9e10ea3,0xba43ae6e,0xbad8d643,0xba9ce211,0xba3d7cbe,0x397bd517,0xba23d71a,0x3ae2af74,0x3b052631,0x3b045eb6,0xba41b834,0xbb0e4d46,0xba9ae90f,0x3ab39e98,0x3b590c0e,0x3b522b05,0xbae66c7b,0xbbbf720e,0xbc11dc5e,0xbb36bd67,0x3aef01f5,0x3b351947,0x3b1e3287,0xba8ce5fc, +0xbc01c373,0xbb81f9e2,0xbb6f0770,0xbca732f3,0xbca60be3,0xbc611fdf,0x383468bd,0xbb0156a2,0xbb1bce6e,0x3a8b8d36,0xba37fbe8,0xba26f492,0x385596c2,0x39fe2b35,0x3950722f,0xbada5712,0xbab4d742,0xbacade62,0xba871cfe,0x39827db7,0x375f06d3,0x3a2749ca,0x3a96c562,0xb984c6ba,0xbacbab5b, +0xbb6f8f8f,0xbbadd5b8,0xbbb70cce,0xbba60689,0xba5f99c8,0x3bbd1547,0xb9f107fc,0xbbe6585f,0xbc3c806e,0xbc0850e6,0xbbabe59f,0xbba259df,0x3ac7cef8,0xbac58439,0x3bb6c1da,0x3c360756,0x3c13f5a5,0x3b8d991e,0x3b29a0e7,0x3b4c2916,0x3b05d4bd,0x390f8173,0x3703f3b6,0xb8974801,0xba15b050, +0xb9b45c72,0xb8f75605,0x391d9cd4,0x3a1d5648,0x3a89e9b6,0x39e3c86a,0xba507935,0xba21270f,0xba0585ee,0xb9fe6cc1,0x3a70241d,0x396da847,0x39dbb202,0x38beb798,0xba4c7fc9,0xbb449b40,0xbbaf6793,0xbb892f5b,0xbb40c540,0xbafcbcf7,0xbbdd6555,0xbc05755d,0xbbcbd6ec,0xbbb6c583,0xbbc57082, +0xbb9ff4d9,0xbb845f95,0xbb671a95,0xbb20d09a,0xbab801c6,0xba57a212,0x39e41e7f,0xba032be2,0xba92a079,0xbac81322,0xba885fdb,0xba4f0635,0xba52f022,0xba32451a,0xbab36e0a,0xbb524fc0,0xbb82a2b9,0xbb9e61d1,0xbb856896,0xbb65727a,0xbb2e43f7,0xba8580c5,0x3822dd37,0x3a751e99,0x3a8ed793, +0x3ac38054,0x3ad78f91,0x3a413cb9,0x3a804159,0xba6782ba,0xbb3232f4,0xbba0e024,0xbbca1b93,0xbbd47692,0xbbd9336e,0xbacc4603,0xba9fbc30,0x3a6d1046,0x3a04a8aa,0x3a8183fe,0x3a1a819b,0x3a411166,0x3a24e2e3,0x3a7e79fe,0x3ac76a0c,0x3af0bc98,0x3b0ae107,0x3ac8a96d,0x39aecc88,0xba653fe6, +0xbae3eedf,0xbb10dd49,0xbac99927,0xba89a08f,0xba27a091,0xba2264a3,0xba535791,0xba921b7f,0xba1d9b64,0xb6ab6f31,0x3a298f16,0x3b10386f,0x3b5e18ec,0x3b92d20d,0x3b99fc13,0x3ba482fc,0x3b9b150d,0x3b8ec356,0x3b3f23af,0x3a8d2f4e,0xba49ed8d,0x3ae1beb3,0x3a8a5b16,0x39c66011,0x3a947d19, +0x3acc3070,0x3b0ee029,0x3b3a0ce8,0x3b66868f,0x3b292753,0x3b0f01ae,0x3a5a4872,0x3a0566ac,0xba451bf6,0xbaa56672,0xbada40b3,0xbaf84782,0xbb243f4e,0xbb2065b2,0xbb35422d,0xbb182788,0xbaf0841d,0xbafaf32e,0xbaea13a6,0xbaa7eba3,0xba4aa3c6,0xb99ea35c,0xb9178e73,0x3833f970,0x39be1c60, +0xb8cdf5a0,0xb9ca4d81,0xba13344c,0xb9fb2a35,0xb92f1bbe,0x3a1a6ef4,0x3a9376ec,0xbb47584a,0xbb4c187b,0xbb480840,0xbb2dc7d3,0xbb4ec19d,0xbb432e89,0xbb419fe3,0xbb4b2eda,0xbb44f094,0xbb5c1d9f,0xbb71898e,0xbb66a9d0,0xbb54f688,0xbb668b21,0xbb55a66b,0xbb39a7f5,0xbb461247,0xbb22f52c, +0xbb2f470d,0xbb007e92,0xbadbb6bf,0xbae18c7a,0xbad2e4a0,0xbad04ae4,0xbacf3e92,0xbac3f3d7,0xbae6d6b1,0xbb08788c,0xbb1ff218,0xbb32a0ef,0xbb4297de,0xbb5919e7,0xbb454817,0xbb425193,0xbb482698,0xbb53f847,0xbb11de2b,0xbb0911ed,0xbb5e9ff4,0xbb5d650e,0xbb038ca2,0xbb4a870d,0xbb5087a3, +0xbb152837,0xbb190616,0xbb17836e,0xbb09b049,0xbb1420d2,0xbb13da15,0xbb0d9779,0xbb6fa5d8,0xbb6181d5,0xbb0c6fc0,0xbb619d2e,0xbb5921c5,0xbafd1f9d,0xbb08fd44,0xbb0288c9,0xbaf8f3f5,0xbaf18010,0xbae91fbf,0xbadc3cd3,0xbaf24d44,0xbb0025ad,0xbb085cb2,0xbb10b7fd,0xbb1aa4d1,0xbb2af9f9, +0xbb2652a4,0xbb2365eb,0xbb1aed66,0xbb14f6ad,0xbb213858,0x3b1a10cf,0x3b0b566f,0x3b137c3a,0x3b3c733e,0x3ac72699,0xbab6c1aa,0x3b434c8c,0x3ac80cf4,0xba842063,0xbacfe5c8,0xbae3d286,0xbaf13726,0xbadefe33,0xbad926a6,0xbaf6ceb5,0x3ae8424e,0x3b515ec8,0xbae11759,0x3ac9bad0,0x3b34baf4, +0x3b06ad04,0x3b02c368,0x3b1b58e4,0x3b30307d,0x3b370e28,0x3b39ce8e,0x3b33efa5,0x3b2cec43,0x3b2a25ef,0x3b26d137,0x3b2dd02a,0x3b2c9a3a,0x3b1f0579,0x3b30fd04,0x3b30c7c3,0x3b25cc48,0x3b2078bb,0x3b1fe5d5,0x3b3cf6d0,0x39f52b6d,0x3b059505,0x3b172084,0x3a28d4e0,0x3a30d65b,0x3a80a0d3, +0x390e5426,0x39b5f00f,0x3a5e3458,0x3aabefcb,0x3aa6630f,0x3ac63dae,0x3adfd9cd,0x3b08b0e2,0x3b3b2c98,0x3b001976,0x39882e4f,0x3b107206,0x3b1448fb,0x3b5d3c22,0x3b914202,0x3ba174e0,0x3ba0272a,0x3b87e993,0x3b6c6330,0x3b546336,0x3b550198,0x3b6d62a1,0x3b79d415,0x3b62f410,0x3b8bf3a3, +0x3b896b93,0x3b690b85,0x3b5226f9,0x3b2f791a,0x3b113540,0x3aec0c8c,0x3aade9fd,0x3b154641,0xb74213d9,0xba4826c3,0x38e43474,0xbb2e4f05,0xbb5d54d7,0xbadf2cc5,0xbabb1d17,0xb9fa57fe,0xb905165f,0x3ad32b66,0x3b0bd72f,0x3b0e3e5b,0x3accae26,0x3a9a4d67,0x3a8cafa5,0x3b13defb,0x3b6b7471, +0x3bb94141,0x3bd57029,0x3bd9ea8b,0x3bbd014f,0x3ba900e5,0x3ba1feb3,0x3ba3f6c8,0x3ba8d75a,0x3ba8e91f,0x3b8b4c31,0x3bc31716,0x3bba7a38,0x3b916c22,0x3b8293b3,0x3b3e7c01,0x3b0e87fd,0x3a5d7892,0x3a6825cc,0x3b4c6134,0xbad6629c,0xbb664226,0xbac6369e,0xbb949241,0xbba4f2cf,0xbb6deb43, +0xbaeba7ed,0xb8c7cb8d,0x3a0a6607,0x3b1eee5a,0x3b610121,0x3b79f410,0x3aefff25,0x39b47b8a,0x39676b95,0x3b282899,0x3bbc4f23,0x3c21a535,0x3c3e8d06,0x3c402a31,0x3c1014d7,0x3bd6592c,0x3ba154f0,0x3bb296ac,0x3bcd8b7b,0x3be2b4a9,0x3bd6fa57,0x3c169f6c,0x3c0dc48f,0x3bd610c4,0x3ba43e2b, +0x3b42a436,0x3b030e5e,0xb8996be4,0xba1de531,0xb88c2e86,0x3b3a1e76,0x3b8d728c,0x3b904c94,0x3aa5dd1f,0xb9c7350e,0xba8c163c,0xbab370aa,0xba26ecbf,0x3b3221f8,0xbb1d3333,0xbb639c95,0xbadf4add,0x39bef73a,0x3b08946b,0x3b5aabe2,0x3b35bb27,0x3a2d26db,0xbb190cc6,0xbb76cd69,0xbb68b0ae, +0xbb5362fb,0x3bd1ee9e,0x3c2e0d7c,0x3bfe6179,0x3bf268a6,0x3b9bd79b,0x3ad9176c,0x3b01eff0,0x3b0667de,0x3a9cd75f,0x3b4a287b,0xba820684,0x3b65e3dc,0x3c22dfeb,0x3bf92b40,0x3a4dfb25,0xbbd4cd4d,0xbc0446f0,0xbb8b9df5,0xba9ac6bd,0x3955ae5f,0xb99ebdc8,0xb9fc29d6,0xbabf8ac3,0xbac5b349, +0xb921b8e0,0x3ab7f3d7,0x3a8995c9,0x3b138843,0x3b22d268,0x3b89e7db,0x3b60dfaa,0x3b92fc8b,0x3bee6f4d,0x3bf34f20,0x3bdeecee,0x3b88a388,0xbaeffeb8,0xbbc391bf,0xbc077e70,0xbaa0a7c4,0x3b815da6,0x3b992d71,0x3ba736ae,0x3a738c94,0xbc027487,0xbb7689d2,0xbb1bd2f1,0xbc8d24c3,0xbca23925, +0xbc699975,0x3a9efb8f,0xbb0f9fc2,0xbb1c9303,0x3aa07da5,0xb999c09b,0xb9bff453,0x384db5e1,0x39d87d1c,0x3956aa6f,0xbac2caf9,0xba7be89b,0xba8a92a4,0xba16e0ba,0x3a9895e7,0x3b18d9a7,0x3b0be12f,0x3a74521e,0xb9b0f770,0xbaf52c20,0xba889eb1,0x39ac87ef,0x3b110db4,0x3b3b28a9,0x3bac4e74, +0x3c1a7381,0x3aa870e0,0xbab36bdc,0x3b35274e,0x3c0547ca,0x3c31782a,0x3c1adea0,0x3ba89f46,0x3b8b97e0,0x3b595484,0x3c29f613,0x3c2718eb,0x3ba556cb,0x3b56004c,0x3b4966c2,0x3b24bf3e,0x39a179ed,0xb729f9ef,0x37ced0d1,0xb9c27b49,0xb994f06b,0xb6ff4b89,0x39e49279,0x3aa2b9ef,0x3b04cb40, +0x3aa6c8aa,0x39e6b5fa,0x39c9b4c9,0x3ad0e3d9,0x3b59ba5f,0x3bae1bf7,0x3b9cd044,0x3b801b52,0x3b11922c,0x3b1c1007,0x3a6d7259,0xba0083a7,0x3961673b,0x3a907aa0,0x3a85135b,0x3b8f9ad5,0x3bff1bb1,0x3c5becbe,0x3bde1d01,0x3c03594e,0x3b5a172c,0xbb390efb,0xbb096b31,0xbaa00728,0xba1a39cb, +0xb957ac02,0x3a9dc2cf,0x391b9517,0xba2dc616,0xba8bca4f,0xba623dac,0xba2395f4,0xb9e23b21,0xb997cab6,0xba80ad28,0xbb37a441,0xbb34a6a2,0xbb466042,0xbb2c5a75,0xbb40ed52,0xbb26e7ce,0xba89526d,0x3a435e97,0x3b42faa3,0x3bac2fdf,0x3bd0919f,0x3bf64a35,0x3c097872,0x3bdd8870,0x3bb220c0, +0x3bab45d7,0x3bb5ac6d,0x3bb416e9,0x3bb033d5,0x3beccd0b,0x3abca430,0x3b162096,0x3a28193d,0x3add2473,0x3ab7c538,0x3abab560,0x3a830a7b,0x3a50b214,0x3a85e44a,0x3ab26608,0x3ac45be3,0x3b0f283a,0x3af4e084,0x3a58fb52,0xb91747f2,0xba27b768,0xba86cc11,0xbaa2cde0,0xbaa38817,0xba85088c, +0xb993d15f,0x3a0cb168,0x3a216eb1,0x3b180834,0x3b53e426,0x3b749e1b,0x3b991eb4,0x3b986e28,0x3b910a30,0x3ba64f9f,0x3bd6e620,0x3c0fd120,0x3be08066,0x3baeae41,0x3b674215,0x3b06eb5a,0x3b81d9fe,0x3b62cfe9,0x3b61b664,0x3b7df67d,0x3b763056,0x3b82eccd,0x3b865a65,0x3b91820b,0x3b643be3, +0x3b3f9f44,0x3b0b3178,0x3aa790d1,0xb9096c74,0xba1d146c,0xba8920c4,0xbaa310be,0xbaf49194,0xbac6cd07,0xba8eaa83,0xba5096a3,0xba8bec53,0xbaa7418e,0xbad30314,0xba945814,0xba38c198,0xb9a1ccc0,0x3a5d3ae2,0x3b0c8244,0x3b645177,0x3b645cf3,0x3b54ed4e,0x3b575e36,0x3b3c4929,0x3b3f1a3c, +0x3b50f9e9,0x3b739360,0xbac79da8,0xbaa49b47,0xbb358969,0xbab2eabb,0xbada8624,0xbae6c18c,0xbab89fba,0xbac3619e,0xbab33116,0xbaa6736e,0xbab8a212,0xba9a0617,0xbab617dd,0xbac386e6,0xbae310cf,0xbaeb9d98,0xbaabe338,0xbad5f017,0xbb04423e,0xbb01761d,0xbb0bb408,0xbaf1226e,0xbae52dbf, +0xbadbfd2d,0xbad97e38,0xbadbf712,0xbae61af9,0xbaf12212,0xbae002fd,0xbac06f9c,0xba7f8e77,0xba049b36,0xba01d3b0,0xba1e3e19,0xba6c841c,0xbaa1b459,0xba62aedd,0xba434743,0xba04e144,0xba9e44ea,0xbb44477d,0xb8c8f0ae,0xba5ed6f2,0xbb1de1a3,0xbb296520,0xbb32bcc8,0xbb3f5f69,0xbb4aa697, +0xbb52280f,0xbb5d6d67,0xba9c3546,0xba1992a9,0xbb4dedea,0xbaa92ecd,0xba513149,0xbabfe936,0xbab0e92f,0xbaa87f40,0xbaa61c04,0xbaa159bb,0xba9cb5da,0xba9776b3,0xba889ae1,0xba74e141,0xba686533,0xba511092,0xba4d48dc,0xba368821,0xba5964f3,0xba5fba7a,0xba59a83c,0xba45ac60,0xba7a394b, +0xbac787f1,0xba8b856c,0xbb039bda,0xba896061,0x3a7f4270,0x3b8a9eb2,0xbaff48f8,0x399c8cb6,0x3b514134,0x3b3eeca8,0x3b39fe9e,0x3b40b04b,0x3b598bc0,0x3b6603c3,0x3b6b6a21,0x3a2e6b9e,0xbab6431c,0x3b920614,0x3a74d42b,0xba805daf,0xbb0d4a60,0xbabb37f3,0xbace7d5d,0xbaa9aedc,0xbaa3b0f5, +0xbaa2c326,0xbab2dd6b,0xbab42fef,0xbab95d4a,0xbabdd658,0xbad40f30,0xbae46db2,0xbafdcff3,0xbadfe274,0xbabe209b,0xba3b6f9c,0xba9a3a34,0xba564eda,0xbb040b08,0x3ad47dc2,0xbae07969,0x363aca5f,0xba370f7e,0xbaf796bd,0xbaab45af,0xbb3c9847,0xbb48d532,0xbb0060d2,0xbb175d15,0xbad664d6, +0xbacb97e3,0x39b544e8,0x39da4720,0xb9387802,0xb9cf2f93,0x3ad8ffcb,0xbb0c9806,0xbaf5d76b,0xbad0ea84,0xba6817c6,0xba0a1bf6,0xba07247f,0xba981b88,0xbab2fdc5,0xbadfc1b0,0xbaed9147,0xbb096fe6,0xbb1362c7,0xbb21d153,0xbaede781,0xba8751f8,0x3a191da0,0xb9e7a89c,0xb9ea1311,0xbad9b784, +0xba8839a2,0xbaa88c89,0x3a849113,0xba9ab46d,0xbadd12a5,0xbab8bf4c,0xbb5bdb05,0xbb8ae143,0xbb3bff98,0xbb4db90e,0xba9623b6,0xbb075c21,0x3a16c77b,0x396a5ebe,0x3a0e722c,0x3757c847,0xba05977f,0xbb0456df,0xbb2cfd24,0xbb012612,0xba67403a,0xb9af1e19,0xb9916b6f,0xba96e9ae,0xba8c4db7, +0xbab11fed,0xbabcc17b,0xbb2e05b5,0xbb5b98af,0xbb7ab801,0xbb1d5f26,0xba4d1f39,0x3b0ccaab,0x39dd7459,0x399968c2,0xba88695b,0xbaa837aa,0xbaf2bca3,0x3aa52592,0xbb3528e5,0xbb84d1dc,0xbb052df7,0xbba8c8b0,0xbbb51778,0xbb5d2b2e,0xbb016bd4,0xba72171f,0xb8dc80d3,0x3ad287c6,0x3b0f145b, +0x3b4c19d2,0x3a517522,0x39b37171,0xbafbfa89,0xbb2d86ed,0xbaae9990,0x3a43ce38,0x3af81b21,0x3af6e44f,0xb9b1ee16,0xbaa68354,0xbb1e1f09,0xbb0a33b3,0xbb672399,0xbb7996e1,0xbb6e8650,0xba8e4b68,0x3acfe3cc,0x3bb718c4,0x3b2bde5f,0xbb54e378,0xbb112d88,0xbabf173e,0xbaaa29d9,0x39d494b8, +0x3b432d2f,0x3b82a0f3,0x3b9736ee,0x3aa68ff5,0xba471967,0xba958443,0xbad5e098,0xba671610,0x3b2b2ea5,0xbb31e3f4,0xbb8e63b8,0xbb4586d3,0xbb3cabbd,0xba7f6e87,0xbafda426,0xbb9e38ad,0xbb940b19,0xbbd1a8fb,0xbbc31f3b,0xbba01525,0xbb6e88ac,0x3b676d06,0x3bb9341f,0x3a6f2819,0xb9c8ffcb, +0xbb98efbf,0xbc21b1af,0xbbfa1d01,0xbbca7862,0xbbafc7f2,0xbb3dc84a,0xbb3f4c97,0x37abb064,0x3bc6f89a,0x3ba87aa4,0xba8d5700,0xbbf692da,0xbc107185,0xbb9fa4ab,0xbac81ffc,0x38dbb429,0xb9823ae0,0xb997eabd,0xbab807b7,0xbaf50528,0xba331c24,0x3a220255,0x39a4fe87,0x3aeb7902,0x3b436be3, +0x3b349f77,0xba9cee45,0xbaf88ba2,0xbb0e3706,0x3abb1d27,0x3b2c9e58,0x3a368c56,0xbb59c595,0xbbd9a9a7,0xbc0d1f53,0xbb0ba83d,0x3b17e800,0x3b3cf507,0x3a08ccf2,0xbb547a9f,0xbc013c7c,0xbbac38d4,0xbb884583,0xbc82c7b5,0xbc949571,0xbc5e5a78,0x3ac76642,0xbb3154bb,0xbb42ef0e,0x39df3f3c, +0xb9f42bb9,0xb9b389e4,0x3735188b,0x39389a9c,0xb6dc4d79,0xbab1d5d8,0xbabc408e,0xbb11f66a,0xbab6edbc,0xba323186,0xb7ccae18,0xba04a142,0xba7bf11d,0xbaaefb75,0xbb4ba02a,0xbbc8b067,0xbc086521,0xbc104c0a,0xbc041113,0xbb6b8c4c,0x3b8cd8e6,0xbbdf35c3,0xbc5fef0f,0xbc60efe1,0xbc1ec771, +0xbba19c4d,0xbb471b87,0xb9cdb80c,0xbb868ac0,0x3a3d9e2d,0x3c0b0f46,0x3c072e13,0x3bb8458d,0x3afd01a1,0x3b1d3eb5,0x3b10b0e9,0x39aabf79,0x3840d771,0x393b418e,0xb9b2b10c,0xb9d004b1,0xba0fcf9a,0xb726d2ed,0x3a740d2f,0x3ac75005,0x3a6db02d,0x3a49a140,0xb8f608a5,0xba6ec597,0xba788d0f, +0xb875e055,0xb9a0be1c,0xb9d775be,0xba730dc4,0xba9baef4,0xbb2a1344,0xbb5b0ac3,0xbb2662e6,0xbb06eb0d,0xbb50c68f,0xbbd2428e,0xbbf9bf17,0xbbd6d55e,0xbbbb5b2e,0xbbb1c492,0xbb0a9f0a,0xb90e1d7b,0xbb245452,0xbb17abe1,0xba2b4b9a,0xb9cdca13,0x385368a2,0xb9cc8fe8,0xba9e53c4,0xbab4ccda, +0xba93683f,0xba538a27,0xba55ea08,0xb9a21db7,0xba6459fc,0xbb2c47d0,0xbb68660c,0xbb728534,0xbb827226,0xbb6aef1c,0xbb295c01,0xbad76a85,0xb947b6c7,0x3a18662c,0x39d603ac,0x3a657b82,0x3a5a9823,0xb9a56f4a,0xba57725f,0xbb3bc13e,0xbba64348,0xbbe01239,0xbbfadea3,0xbc009664,0xbbc80aea, +0xbb9a7eda,0xbb412623,0x3a27f5b0,0xb92625e3,0x3a2a78e6,0x3829cf2a,0xb8fbbc3c,0xb5aaef1d,0x379c5641,0x39ff6b6e,0x3a2fa14d,0x3ac7a0f3,0x3ab26824,0x3a3dd72b,0xb9db470c,0xbaa3ee7d,0xbb0395bc,0xbada1de0,0xbac5a19a,0xba811e84,0xbaa24632,0xbaa72ed5,0xbab19a67,0xb9aa6624,0x3a2bbbd5, +0x3abf6c92,0x3b4527e1,0x3b885d9a,0x3bae7ccb,0x3ba2a67e,0x3b892488,0x3b19c2c0,0x3b07bad2,0x3a505fb6,0xbaafc328,0xbb4e0a84,0x3b0b0408,0x3b1bdd4b,0x3b2967c3,0x3b272896,0x3b5f250c,0x3b6495d8,0x3b7467ba,0x3b811b90,0x3b69e04c,0x3b3ec4b9,0x3b1ae527,0x3aa5e8cd,0x3a19a90c,0xb989f959, +0xba2b2798,0xbaa54ad5,0xbaf9a5f7,0xbaf15838,0xbaf3c97d,0xbb13323b,0xbb1a75c1,0xbb0ad07f,0xbb09ec5c,0xbad7bde8,0xbaa6619e,0xba638bc8,0xba144392,0xb964a690,0x399f2cca,0xb9227665,0xb9aeadd8,0xba219c53,0xb9a70c19,0x3881a905,0x3a61a79e,0x3ae57923,0xbb2c8243,0xbb2614e9,0xba87ace4, +0xbb013d74,0xbae99c1d,0xbad52828,0xbb03020e,0xbaff7b0d,0xbb22efa8,0xbb3ce152,0xbb39c2c7,0xbb571826,0xbb5ba12c,0xbb6af16c,0xbb408bcf,0xbb30987a,0xbb46e592,0xbb2e2197,0xbb051acc,0xbb1649a6,0xbaeff926,0xbaf30f23,0xbae6257c,0xbadf6695,0xbadae291,0xbacf0d27,0xbb05a425,0xbb24e878, +0xbb427c31,0xbb5b11c0,0xbb6f7d23,0xbb83d6ad,0xbb66f132,0xbb507182,0xbb438e12,0xbb40047c,0xbb190ac9,0xbb1e5893,0xbb1874fa,0xbabbf8b9,0x38cc6541,0xbb23a6fb,0xbaaef5fa,0x38c45f63,0x381561a7,0x3802e270,0xb81d6f66,0xb7941f8d,0x3708ca06,0xb8456785,0xbb07350c,0xbb4acd1f,0xb8f4c36a, +0xbaf93ee2,0xbb3154ee,0xbb29f12f,0xbb2301df,0xbb237c22,0xbb1dfbe3,0xbb1c51e8,0xbb1a6424,0xbb14b24b,0xbb204736,0xbb26915d,0xbb2ece81,0xbb358ce8,0xbb3d46e5,0xbb4d2eb0,0xbb417775,0xbb3c43a4,0xbb31d388,0xbb272692,0xbb47be1e,0x3b2762c1,0x3b16291d,0x3b52c509,0x3a6b1a30,0xbab29c94, +0xbb5431f7,0x3adeccc7,0xba8c848e,0xbb5772a3,0xbb77c5b8,0xbb7da719,0xbb667e62,0xbb74d3a7,0xbb70690e,0xbb714a9c,0xba7ae6a1,0x3acd8260,0xbb61f3ce,0xba932bc6,0x3a47dfff,0x3b3cbfa2,0x3b100989,0x3b2be048,0x3b409661,0x3b45a68e,0x3b4548eb,0x3b362a73,0x3b361b30,0x3b360733,0x3b3c3f36, +0x3b34279b,0x3b311478,0x3b2ac82d,0x3b375528,0x3b368ca9,0x3b2dfbdd,0x3b2b0dcf,0x3b30c064,0x3b3a746f,0xbb0897c6,0x3ae5d986,0x39fd8468,0xb9ae226d,0x39969843,0xb6ac631a,0x3925e511,0xb686feec,0xb9c44c26,0x3a185c13,0x3a43e442,0x3a133002,0x3a2acad8,0x3aaa8346,0x3accfd38,0x3ad29ffe, +0xbac62f5a,0x3b17c472,0x3b41c625,0x3b6c6b9e,0x3b9c009d,0x3ba98fc6,0x3ba65bcc,0x3b842a5b,0x3b76b3f8,0x3b63ef81,0x3b7533d4,0x3b680820,0x3b6680de,0x3b58ac2e,0x3b7cd71a,0x3b7c1d4c,0x3b5e0e9d,0x3b448276,0x3b5cd183,0x3b265da4,0x399c15ad,0x3a28d5c9,0x3a055923,0xba01cf72,0xba8cbc4e, +0xba6e1057,0xbb55a14e,0xbb4ceb25,0xbb2edcec,0xbaa4d62d,0xbac7e99c,0xba5718f6,0x39da5c14,0x3aac56f1,0x3a8e68cc,0x3a822cf2,0x38117862,0x3a7780d6,0x3b4eb8b9,0x3b7935c6,0x3bc2bd83,0x3bd74af7,0x3bd5fc60,0x3ba23b85,0x3ba57725,0x3ba1958c,0x3bb7d007,0x3b95db9e,0x3b8dbe62,0x3b8590fe, +0x3ba77473,0x3ba56581,0x3b8efab5,0x3b723b87,0x3b509434,0x3aefe47d,0xba3cf4d9,0x39165bed,0x3aa8b76f,0xbaf2b1aa,0xbb62e236,0xbb26e00c,0xbba501a7,0xbbb699cc,0xbb40ea1a,0xbb215714,0xba796a85,0xb7a58771,0x3b08d7f6,0x3b55b72c,0x3b230f0c,0x3b285d17,0x39af0927,0x3aa2f778,0x3b8d8c17, +0x3bcca938,0x3c28655b,0x3c3d34b5,0x3c374a88,0x3bf83c7a,0x3bcf50e0,0x3bacee99,0x3bd90449,0x3bb487f8,0x3bae8e79,0x3bb375af,0x3be65ea2,0x3be45ecc,0x3bc17b0a,0x3b7d6ef9,0x3beaffd5,0x3b29b157,0xb99e8990,0x380b635e,0xb9b07d5d,0x3b3525d8,0x3ba2035f,0x3bb6af52,0x3b0188bc,0xb99234e4, +0xba6e5c74,0xbab5f829,0xba45861c,0x3b270692,0xbb209473,0xbb68a3f3,0xbb64945c,0xbad14d80,0xbb0875f4,0xba89e10e,0x3a8d6bb8,0xba11c482,0xbb0c11a2,0xbb60318e,0xbb169d01,0xbaac00b3,0x3c079227,0x3c3b1af0,0x3bf29fb4,0x3beb4e0b,0x3b9aac04,0x3a98273d,0x3b289354,0x3b43a140,0x3afb7267, +0x3bb3edf4,0xb81d35ed,0x3b1315aa,0x3bd151e5,0x3bcdd876,0x3b027f42,0xbbcf8dce,0xbc0c0e18,0xbba10bb7,0xbabd8d07,0x39687698,0xb8efd57c,0xb8adb3cf,0xba9e674d,0xbadcd4f7,0x399e4c46,0x3ae7347b,0x3a9815d9,0x3b0438ff,0x3ae65a8f,0x3b919e88,0x3b94019a,0x3ba3aea5,0x3bfc9ae5,0x3c0aa1e7, +0x3bd7f388,0x3a9f8979,0xbb84576b,0xbbe46773,0xbbe2e240,0x3938c0ec,0x3b834fb9,0x3b3b882b,0x3a73bc2a,0xbb37afa1,0xbbf54027,0xbb71d2b9,0xbb55121f,0xbc4c5400,0xbc8d9fab,0xbc4f7a57,0x3a1ae35e,0xbb18030f,0xbb45b021,0x3938e43e,0xb9984856,0xb8a189db,0xb88eb91e,0x393a43ff,0x3917ae67, +0xba89f158,0xbaa4c91e,0xbab9f08a,0xbace9d75,0x39fbb012,0x3a5b7bd3,0x3a59db42,0x3a7adef8,0xba63c972,0xbb1f80ae,0xba9423ad,0x3a44056c,0x3b23b4cd,0x3b944d80,0x3bedac24,0x3c35736b,0x3a6ce6a3,0xbb0336c0,0x3b30414e,0x3befc33d,0x3c28deb1,0x3c2ee289,0x3b2f01ee,0x3b1a5edb,0xbab0a658, +0x3bdcf2c1,0x3c10bbd4,0x3bb50061,0x3b26d9a0,0x3b0a8764,0x3b2a7bec,0x3a0dbe87,0x38cb6217,0x396a2be1,0xb91b530f,0xb9a19f27,0xba011c1d,0x39a4207e,0x3a9e7151,0x3b11ee91,0x3af5c5fd,0x3a0ed208,0x3a8f04f8,0x3b3fdb28,0x3b84d949,0x3bb5801f,0x3b9bf534,0x3b4dab2a,0x3a44c21c,0x3a4d5fb8, +0xb9f2bf8f,0xba6f512d,0xba250f9a,0x3a07eade,0x3ac77419,0x3ba79976,0x3c08fae2,0x3c5053a5,0x3bb15e9b,0x3bfcc384,0x3b04e5f9,0xbb72fe0f,0xbb2f73c6,0xbae69599,0xba50de35,0xb8b7265e,0x398dfbd2,0xb9e1f9c6,0xba23db39,0xba88d778,0xba5bf40c,0xba181f2f,0xb9ec594b,0x36fbcfc9,0xba0abbcf, +0xbae845fc,0xbb251e8f,0xbb6fca8a,0xbb1dbd9e,0xbb27cc48,0xbb288da9,0xba934495,0x39c946b1,0x3b1561ea,0x3b80940f,0x3b9f4b30,0x3bb4e5bd,0x3bc48a76,0x3b9b8f53,0x3b71beec,0x3b750356,0x3b6672be,0x3b5a2295,0x3b8889b7,0x3bc76f89,0xba2d4552,0xba888519,0xbb24ed9b,0xba21781e,0xb9cc5129, +0x381cfac2,0x39b4e90b,0x38a9fe5c,0x3a0a2b11,0x3a2aff49,0x3a61c88b,0x3abeeeb5,0x3ad738b9,0x3aa61767,0x39bcf0e6,0xb9d86769,0xba9f7b6f,0xbad7c413,0xbacbf57f,0xbab6b3a5,0xb889acdf,0x3a89f8b9,0x3aaf2c19,0x3b336d7d,0x3b70858c,0x3b8c43b5,0x3bb454f1,0x3bc0f172,0x3bc1c118,0x3bc958e7, +0x3be4c76b,0x3c0aeba1,0x3bdd6751,0x3ba17b53,0x3b227e70,0x38e17fa3,0x3baf3d17,0x3b92584c,0x3b6a0565,0x3b86cf8e,0x3b72ca3c,0x3b831c63,0x3b825fbc,0x3b8cc4b4,0x3b5f9646,0x3b61c5e3,0x3b2606e8,0x3b1c1981,0x3a38df4b,0x3a0903d7,0xb9c553db,0xba28880b,0xbad4a0f5,0xbab2f778,0xbab8a339, +0xba3086ec,0xb9e76fcd,0xba7e285b,0xba992956,0xba61a9a3,0xba0b1d98,0xb9a6a006,0x3a725306,0x3b0cb382,0x3b618f91,0x3b74a951,0x3b7b79a4,0x3b87204c,0x3b74013e,0x3b773b4d,0x3b8c82d6,0x3b9a76ed,0xb9e89cef,0xb9a239d2,0xbb284a10,0xb9c5bf6d,0xba9319d4,0xba95374d,0xba0bb1e5,0xba2a8f16, +0xba08dc3c,0xba6336e8,0xbadbbbee,0xbab35ae0,0xbac3f4be,0xbafbe3f3,0xbb130903,0xbb019c1c,0xbabd3a79,0xbabdceb7,0xbb1a08f4,0xbab880b3,0xbaceafff,0xbab09dac,0xbaa1e22b,0xbaa00d2f,0xba9e2732,0xbaa68e15,0xba8bc636,0xba77ea0b,0xba37e6b3,0xb9f0f146,0xb816c74d,0x39df654b,0x39f5c28f, +0x39d0b65a,0x3917714e,0xb973e01b,0xb9396947,0x395f28c7,0xba800dbb,0xbb0cb114,0xbb5f05b3,0xb98c3907,0xbae9d5e5,0xbb4735d0,0xbb5d825f,0xbb6a368e,0xbb6d6557,0xbb842f90,0xbb8c7b4d,0xbb9362bb,0xbb2860c9,0xba929146,0xbb867842,0xbb244f24,0xbab5a21d,0xba31bb94,0xba67b720,0xba4fe278, +0xba5351c6,0xba4c71e4,0xba44ee25,0xba45ade2,0xba1dd73a,0xb9fb17f6,0xb9c5e2b3,0xb96505c8,0xb8fc1292,0x37bdcde9,0xb90306bb,0xb92eacc3,0xb91f1496,0xb8905453,0xba0f4762,0xba7db7b4,0xba21db1d,0xbae90180,0x3a9bf90c,0x3b49b679,0x3b81301b,0xb6bfb494,0x3b1c390c,0x3b697b38,0x3b63c38e, +0x3b5ad9b9,0x3b450463,0x3b6685e0,0x3b6e721e,0x3b62a474,0x3b2d7a44,0x3a0dcb4e,0x3b85a87a,0x3b3a90ea,0x3a9c6f40,0xbaf1f736,0xba667f8c,0xba7f66fd,0xba3fa78e,0xba30ec65,0xba2eae8a,0xba550f74,0xba4d9513,0xba55d45f,0xba49fff5,0xba87377c,0xba922f22,0xbaa23818,0xba5b59e6,0xba239243, +0xb952ff3d,0xba2aa245,0xba44bce4,0xba8b1065,0x3b4e0b10,0xba652d78,0x3a3fe350,0x398bf1f4,0xba827107,0xba736cd9,0xbb0c887f,0xbaea01ce,0xb9f479c6,0xba878c25,0xba6b64c4,0xba3ead6c,0x3a8592fc,0x3a81f5fd,0x3a6bb179,0x39f8872c,0x3b448876,0xba57d941,0xba89394b,0xb9d6fc82,0x38634762, +0x39b125f4,0x3938ca16,0xba1619e9,0xba29919b,0xba5a7787,0xba24e3b5,0xba9a2fc1,0xbaa22f96,0xbaab9ee2,0xb92c2417,0x39e59f0e,0x3a8dc91e,0x388107c4,0xba1800d2,0xba2489ce,0x3a82fa56,0xb86ee215,0x3a8acd10,0xb990b472,0xba553587,0xbad76561,0xbb211fa6,0xbb852fd6,0xbb0a8668,0xbb590ee0, +0xba4c2d86,0xbb099629,0x3a93c646,0x3a10731c,0x3a08d926,0x3a3a69fc,0x3a839855,0xba3f22b9,0xbaedce63,0xba34eecf,0x3998a2db,0x3a5befa9,0x3a4d0e72,0xb8f786bb,0x38c404c5,0xb91480a3,0x39226487,0xbaca6c3f,0xbafad18e,0xbb0790d4,0x39c87e12,0x3abe8664,0x3b24d5fd,0x3a874335,0xba74eac6, +0xb9fddd39,0x39049d18,0xbab3ade7,0xb89fadc1,0xbb120e34,0xbb7e4ce9,0xbb5dcaaa,0xbbba37a5,0xbbbdf211,0xbb5b7e2b,0xbb271064,0xbae2142a,0xbaa7f9db,0x3a99afd0,0x3acd5ef1,0x3b358b08,0x3aa06aed,0x3b11f451,0x384b31e2,0xba503e72,0x3aa490d6,0x3b4986dc,0x3b805247,0x3b5a06bc,0x3a5920a6, +0x3974fbfa,0xb9f81066,0x39eada31,0xbaca0b2d,0xbad5cf71,0xba938dde,0x3b3656f2,0x3b956a26,0x3bb14f2f,0x3b23d6f0,0x39575506,0x3ac8dadd,0x3b65c1b4,0x3b17e40b,0x3afb42aa,0x3b89d896,0x3ba8d45f,0x3bc4b36b,0x3b19354e,0xb934f0f5,0xba23f68d,0xbaa80b7c,0xba5305d1,0x3b285cfc,0xbb147508, +0xbb888e83,0xbb7a5609,0xbb8e2368,0xbb186639,0xbb6a7454,0xbbdacff9,0xbbce9d9b,0xbc145b40,0xbbda48f4,0xbbaa8633,0xbb938b19,0x3b0e2860,0x3b5fa616,0xba9c8bc0,0xbad30647,0xbb83e8ac,0xbbe6cf0f,0xbb8e8543,0xbb5bcb69,0xbb81d46d,0x39e323f1,0xbba53bd0,0xbaa715d0,0x3bae3fd7,0x3b988d48, +0x3a8a1957,0xbbd4b462,0xbc1469a0,0xbba7b0bf,0xbaeebb0f,0x3885d8c7,0xb8eb0de7,0xb7d537a9,0xba99bffc,0xbb08186b,0xb9b3eaa6,0x3a97553d,0x3aad5fd9,0x3ae42cb6,0x3b553f42,0x3b7cc1d0,0x3a6547ba,0x3abc50b5,0x3a8d063b,0x3b78f187,0x3b4db96d,0xba325473,0xbb8f4721,0xbbdfc736,0xbbe6a2d5, +0xb9d58344,0x3b5cf840,0x3b4dcad9,0xb955d400,0xbb82d357,0xbbe793b0,0xbbae56a8,0xbb9d0625,0xbc2ee1e8,0xbc6348c7,0xbc3b5ead,0x3a465a69,0xbb169f36,0xbb1792f9,0xba21ea82,0xb996582a,0xb6bc4358,0xb88feddb,0x390d9755,0x388851b0,0xba6c0d02,0xbaacd277,0xbb1a09cf,0xbabee1cc,0xba877291, +0x39347387,0xbaa29e61,0xbb112d10,0xbb026521,0xbb7ed578,0xbbbce2ae,0xbbdf2955,0xbbdc3e9d,0xbba43c1c,0xbad469af,0x3b877dd2,0xbc0a70d4,0xbc542964,0xbbfc05f2,0xbb5481cf,0x3aceb769,0x3b8adbbd,0xba71d969,0xba922017,0xbad782f8,0x3ba275cb,0x3bcfd150,0x3bb48e8c,0x3a92993f,0x3a8e785a, +0x3af61123,0x39fe654e,0x38a0be5b,0x398751b4,0xb87f7817,0xb9d75b30,0xba388ca4,0x372ccb04,0x3a9f792d,0x3b0154ba,0x3abac456,0x3afcb2be,0x3a3e00e4,0x394f23f3,0x3a18fc90,0x3a8ca9f8,0x3aa6de15,0x3a1d3acc,0xba31702f,0xb9ba06f9,0xba879b06,0xba01268e,0xb9d54471,0xb971593b,0xbb0f547a, +0xb9ac5dcf,0x39f34e2c,0x3a8813cb,0x39ca78e6,0x388eb309,0x3b05f7ec,0x3b0be22d,0xba9085a8,0xbaaa572e,0x39058998,0x39054e59,0xb8eff87b,0xb8faecce,0xba43d740,0xba3e6abc,0xba68d936,0xba2f0cdc,0xba00d378,0x3893d8e2,0xb9b0b69e,0xbad79b99,0xbb22857e,0xbb184112,0xbb500ff3,0xbb450d09, +0xbb0e5afe,0xbae396a2,0xb751b083,0x3a90a392,0x3ad090cf,0x3b076d0a,0x3b0b295d,0x3ad1944b,0xb71ac8e0,0xbae3dd1f,0xbb5e8cda,0xbb82090f,0xbb842052,0xbb7c348f,0xba3255b3,0xbba1194a,0xbb3d6b1e,0xb98f00fd,0xb9eb57e7,0x399efd04,0xb80c627e,0xb9c4630a,0xb9236161,0xb9a2ddc1,0xb8fd4299, +0xb93b45da,0x3a5a5bde,0x3a8dd178,0x3a896c9e,0x393956e8,0xb9e90cd4,0xbaabf38f,0xbad812e4,0xbafa9635,0xbac61d64,0xbac30aa2,0xba7e1a83,0xba071520,0x3a8dd6d3,0x3b15ce01,0x3b469157,0x3b8ba8a2,0x3ba15f24,0x3bb48476,0x3b9f7292,0x3b75e7f3,0x3af705db,0x3a8e9b69,0x385d92df,0xbae7ccb7, +0xbb5670ad,0x3b3b3897,0x3b692229,0x3b8dbc1c,0x3b76658b,0x3b917a17,0x3b8812f6,0x3b817eed,0x3b7732e6,0x3b799fe6,0x3b54fbf8,0x3b60af51,0x3b08e999,0x3add4996,0x3a5e5451,0x399122b2,0xba0f7ef8,0xbaa8c392,0xba90df2c,0xba4bbd44,0xbabf0409,0xbb048ac3,0xbaea015a,0xbb030366,0xbad99f18, +0xbabacf16,0xba99c85a,0xb9f8fbbd,0x398c8c8a,0x3a9869a9,0x3a8e2a2a,0x3a9c33bf,0x3a98cf22,0x3ab2a0a1,0x3ad1955f,0x3b08ead9,0x3b39b05f,0xba8fb386,0xba605fed,0x39a5f43f,0xba42a319,0xb9b13981,0xb9bb6315,0xba4c1062,0xba3769fa,0xbab963a0,0xbaddecb8,0xbac6d964,0xbb0c9f15,0xbb237859, +0xbb2cac5e,0xbb0a3ad3,0xbb0a85fe,0xbb1508e9,0xbb170647,0xbac86395,0xbb1d1297,0xbb0663e7,0xbafc9ae8,0xbaef61fc,0xbae39840,0xbadbd8ba,0xbad4afb1,0xbafcd9ed,0xbb1183b1,0xbb1ce7c3,0xbb2524d5,0xbb2672b8,0xbb25f799,0xbb0b9a26,0xbae2a91f,0xbabde5b6,0xbaa86f33,0xbaccfb89,0xbada3aac, +0xba23f99a,0x3982206e,0x3a27f257,0xba7d67d1,0x3991a40a,0x3a73dc52,0x3a577a1b,0x3a435451,0x39ea66a4,0x3a06dfcc,0x39fe0b6b,0x39922d04,0xb9fb407e,0xbae4bcef,0x398bac4c,0xba0318d6,0xbabeba94,0xbb252960,0xbb127a73,0xbb16d38b,0xbb143541,0xbb142e39,0xbb13eec1,0xbb115866,0xbb1304a8, +0xbb11f070,0xbb133e52,0xbb114253,0xbb10a464,0xbb13fbd0,0xbb0aa282,0xbb0614b5,0xbafdd0d8,0xbae8c742,0xbb2777ef,0x3a8ef396,0x3a8d067c,0x3af49935,0xba992447,0xbb1eaf12,0xbaeb5637,0xba089a05,0xbb159ae3,0xbb2406dc,0xbb335d1d,0xbb3658a7,0xbb176132,0xbb239f0a,0xbb1afb04,0xbb120be1, +0xbb112866,0xba358238,0xbae49abc,0xbb0ddb67,0xbaa3507b,0x3ac76c7b,0x3a75b611,0x3a98a516,0x3aba406e,0x3ac2a003,0x3abe64f0,0x3a983c44,0x3aa374d7,0x3aa5af55,0x3abd0ce8,0x3a8f47bc,0x3a826a16,0x3a74481f,0x3a939f84,0x3a9e4991,0x3ab536c0,0x3a9fa796,0x3ab835d9,0x3a7a3b07,0xbb1f8195, +0x393c0713,0xba9cc9a9,0xba8f2560,0xba3da417,0xbab3120d,0xba57f9e4,0xba9bf1a0,0xbaee226c,0xba6b850b,0xb9ff445a,0xba83ae20,0xb9a39111,0x3993e803,0xb900f472,0x3a0ff9ac,0xbac13f7c,0x3a58ca6f,0x3adb8b83,0x3aee3f1e,0x3b31fe42,0x3b48c26f,0x3b40f713,0x3af3248c,0x3af1a885,0x3ad90a18, +0x3b06c7b4,0x3aa7fa18,0x3a84ace3,0x3a604710,0x3ab4e58d,0x3ae1ec78,0x3b05e097,0x3ab8fc78,0x3b141124,0x3aabd692,0xba976119,0xba02ed86,0xba61729b,0xba6d44ab,0xbaac291a,0xbb0f2942,0xbb630ffb,0xbb524925,0xbb714137,0xbaf305c5,0xbb09d20a,0xbb000526,0xb9f88992,0x3908f493,0xb9291132, +0x390115c5,0xba6c19b6,0xb8806eb4,0x3ada406a,0x3ae97c95,0x3b5a4c0c,0x3b7b9f69,0x3b727ad0,0x3afe93b8,0x3b273466,0x3b2223cf,0x3b61976d,0x3aaa26d6,0x3a3ed8de,0x3a4da3ea,0x3ae28084,0x3b1d4c4a,0x3b529765,0x3b0828da,0x3af55894,0x39f62ba4,0xbb054403,0xbaa5e88a,0xba627631,0xbb08126b, +0xbb564600,0xbb700eab,0xbba913fa,0xbbb60976,0xbb28411a,0xbb2f264e,0xbadd4a8e,0xba881c94,0x3ab6e1d7,0x3b15fee3,0x3a988567,0x3b19b1fb,0x3a1c1920,0x3aa417b7,0x3b566395,0x3b803457,0x3bda5237,0x3bf7fb7b,0x3be2702f,0x3b633ac5,0x3b4e0a20,0x3b33ff4f,0x3b936c01,0x3acc5565,0x3a0ff19a, +0x3a5bc5ef,0x3b187de6,0x3b70965b,0x3b9d66cc,0x3b0cc0b8,0x3be83e95,0x3b103382,0x3989d0ee,0x3a826c27,0x3a0b5bf7,0x3b4dad92,0x3ba8d4ba,0x3bc0cd0d,0x3b28a0b5,0x3929d0bc,0xb9af8712,0xba6f1310,0xba1667bd,0x3b0e1c98,0xbb07f4a1,0xbb5dda2f,0xbb9d2de2,0xbb814bf7,0xbbb0b467,0xbbad7435, +0xbb487286,0xbb6b4147,0xbb889438,0xbb8a819c,0xbb1ada9d,0xb9fc00d4,0x3be0fd3e,0x3c07ef04,0x3b74ec78,0x3b577871,0x3a8ce3c1,0xbb17606b,0xb93cc505,0x3a33d49a,0x389bd4e2,0x3b9a25b8,0xba14e038,0xb82d7a0f,0x3b1650a3,0x3b79ea78,0x3b061c1c,0xbbc8e3c7,0xbc098950,0xbba42388,0xbae1b8c2, +0x3686ec25,0xb8878a8e,0x38adbb91,0xba87fb36,0xbae3f3fe,0x39892a25,0x3ac05a43,0x3a72ec08,0x3ac47ffe,0x3acc704c,0x3b7efe0a,0x3b6feb57,0x3b61bfea,0x3b962ef4,0x3bcbdbda,0x3b8734ec,0xbad58ac9,0xbbb732d9,0xbbee3315,0xbbb2c25f,0x3a89a4dd,0x3b5f436a,0x3aa2c607,0xbb3b9457,0xbbc3c8df, +0xbbd60260,0xbb80f80b,0xbba6399c,0xbc06a62a,0xbc4db3ca,0xbc1e49c2,0xbab97266,0xbadedd79,0xbb133bbe,0xba94d832,0xb98bd6a7,0x38c1bd22,0xb8fa7a2e,0x38bedfcb,0x3951c5bc,0xba19d31f,0xbabd777f,0xbb018df7,0xbb10744b,0xba42bb33,0xba8b52b1,0xbaaf1af6,0xb9668a29,0xbad84e5c,0xbb4f80fc, +0xbb3ad3b7,0xbb05b89a,0xbac1a68e,0x3af8d4d7,0x3ba1e0cf,0x3c063bb4,0xbb25f425,0xbbc02b58,0xbad95417,0x3a94d144,0x3b8ff9c6,0x3bef31c4,0xba9eba20,0x3a783eea,0xbb1a2944,0x3b2d0a02,0x3ba4cc0c,0x3b93edd1,0x3a81e3f3,0x3a259e8c,0x3aede4b9,0x3a10b585,0x38c0ade8,0x397a7507,0x3810c79d, +0xb9b06b24,0xba44af61,0x38aec5fa,0x3a82dca5,0x3b04816d,0x3afc75dc,0x3a696741,0x3ab78635,0x3b30d569,0x3b3762b4,0x3b56d743,0x3b32ad60,0x3aa627d0,0xba7281b0,0xba950c65,0xbb0ed1df,0xbaf63e0d,0xbb02e186,0xba44ee88,0x3a3f002d,0x3b3e1302,0x3b8af6aa,0x3b9eb2d7,0x3b016169,0x3b1d5cb1, +0xb9835134,0xbb149915,0xbb135d25,0xbad1792f,0xba28cb40,0xb8947bce,0xba2984fc,0xba1ff99c,0xb9ecc299,0xba21ad12,0xba2fbc0d,0xba0a4800,0xb9e16d0a,0x392bf756,0xb912f515,0xba4f6f7e,0xbb10b34c,0xbb6e07fd,0xbb294de1,0xbb146391,0xbb0f782a,0xba992298,0xb8c264a0,0x3a821861,0x3acb945b, +0x3af081b9,0x3add4dfc,0x3aabcb58,0x39fc35fe,0xba20f406,0xba98298e,0xbb1119b8,0xbb20bf24,0xba8f8c36,0x3a515334,0xbb69eca0,0xbb8f8eb3,0xbb7f6b8c,0xbb1c9fae,0xbacad4ce,0xba8bcdcb,0xb9afe98f,0xb9e73098,0xb85a4573,0xb8ce14ff,0x385a664d,0x3a010d76,0x3a829024,0x3aa7209d,0x3a0cdbe3, +0xb9b4d6af,0xbab8cd74,0xbaf97a28,0xbaf3c933,0xbadd40be,0xba1b23a3,0x39b3d392,0x3a705e2a,0x3afb86e2,0x3b3b2f11,0x3b6c4edb,0x3ba4bf03,0x3bc168cc,0x3bd0abd1,0x3bbf612a,0x3babf25f,0x3b94a852,0x3b65c652,0x3afd9b29,0xb9a5e6f2,0xbb2d9dba,0x3b9009e6,0x3b7aa603,0x3b3d989b,0x3b4f6260, +0x3b42f3db,0x3b5086fe,0x3b4a67d0,0x3b54dc1c,0x3b3d3ee9,0x3b580a16,0x3b350339,0x3b3b5421,0x3ad06b5c,0x3abd236e,0x3995014d,0xb986b74d,0xbab500f3,0xbaa38ae4,0xbacfda36,0xba81aa13,0xba13bdf7,0xba8870df,0xba90a7f9,0xba729520,0xba365297,0xba206efb,0x39966811,0x3a899b0f,0x3aff7a99, +0x3b172318,0x3b31a3ed,0x3b4c7f25,0x3b41738c,0x3b45188d,0x3b68651d,0x3b794ee7,0x39ab7a92,0x39bbad36,0xba8e3a1c,0x3993dd07,0xb9f52d53,0xb9ecc4d7,0xb8c08264,0xb98660cd,0xb9a9ecc8,0xba8476c2,0xbaff62ff,0xbaf6f8c5,0xbafc4fa9,0xbb1ff7a7,0xbb262270,0xbb09e587,0xbafe0d41,0xbadaeb57, +0xbb1d01cf,0xbab6bfa3,0xbab01ae4,0xbaa3ee4f,0xba936d5e,0xba947c0f,0xba9220b6,0xba978be6,0xba652df6,0xba3882ef,0xba0ae102,0xb9e3b34b,0xb9974972,0xb88014de,0x3919a4bf,0x399d40f1,0x39b2f069,0x3971951c,0xb99aeff1,0x390c4170,0xbac4c2f8,0xbb0fbf3e,0xbb07e1c6,0xba816045,0xbb04843f, +0xbb0b35d1,0xbb210b16,0xbb2a2483,0xbb26c9bc,0xbb400322,0xbb4f99c1,0xbb5a160f,0xbb47c2a1,0xbb0445dd,0xbb497b19,0xbb40790b,0xbb0dd41e,0xba5b09be,0xba94a8c0,0xba8d4d99,0xba8ea61a,0xba8d46a5,0xba8a8faa,0xba8d2dfa,0xba803eff,0xba6c8eb8,0xba557eea,0xba2fcbdc,0xba112ad7,0xb9f616ce, +0xb9fce780,0xb9f7ec0a,0xb9dad32a,0xb9a6652b,0xba97b43b,0x3a2a770d,0x3a378907,0x3963f224,0x3b22ece2,0x3b330dcd,0x3a779d23,0x3af64508,0x3b1ea24b,0x3a8fb113,0x3a8fdc75,0x3a75f1a3,0x39ff0f67,0x3a61ec70,0x3a720051,0x3a214cad,0x3b244569,0x3b0953f2,0x3a6ec06f,0x3b262aee,0x3b1cd940, +0x38f822e6,0x3a1e1337,0x3a3d56a2,0x3a728df7,0x3a848b38,0x3a853c59,0x3a570f41,0x3a6639a4,0x3a6347b9,0x3a849847,0x3a374cae,0x3a2add4f,0x3a169edd,0x3a88a4fe,0x3a951c1d,0x3a90aed5,0x3a5b1ca4,0x39f0d2ca,0x3a814887,0x3b09a878,0x3a12d075,0x3a66affe,0x3a356906,0x390ab008,0xba02b349, +0xba24fadd,0xb8a6104a,0x3a02cdf9,0x3a057c6c,0x39758ea6,0x3940406a,0x3a96d7a5,0x3aa96aee,0x3add85b9,0x3ab24c83,0x3b0dbbf3,0x3aaab505,0x3a89edf3,0x3af4adc1,0x3b15e03c,0x3b288203,0x3b169210,0x3ab59c6d,0x3ab1ad30,0x3aaa8fed,0x3af0b73e,0x3a930e08,0x3a8e1394,0x3a8573f0,0x3b18b13f, +0x3b29211a,0x3b0768a8,0x3aaefb6b,0x3a30b81d,0x3aaf3341,0x3b06901a,0x3a81f50f,0x3a164d33,0x39c6f805,0xb931f1cc,0xbaf9df48,0xbb012701,0xbb5f6c88,0xbb10f007,0xbb2c13af,0xba5e4b1a,0xbaeca323,0x3a87305d,0x3a5105b2,0x39f53363,0x3a921bca,0x3ad39bc2,0x3a70703b,0x3a3284b9,0x3af1fdb7, +0x3b41333c,0x3b6b1585,0x3b6231f9,0x3b16a5f5,0x3b282676,0x3b20608f,0x3b581b21,0x3ab0b51e,0x3aa2e730,0x3a9b2a4e,0x3b803cc7,0x3b882aed,0x3b4d2398,0x3b117687,0xba09ed15,0x3a376549,0x3a24b87d,0xba2ea8e4,0xba9f45f4,0xbac1f8d2,0xbb512ccd,0xbb91c6c1,0xbbadc8fa,0xbbaedd39,0xbb4b9a42, +0xbb2ee22b,0xbb015200,0xbb08bf3a,0x3a68c76c,0x3aa9af7c,0x3aecc500,0x3af59e30,0x3b3b3f43,0x3b1035a0,0x3b2e6457,0x3ba22783,0x3be38b02,0x3bfe5b4f,0x3bdd7945,0x3b743404,0x3b5076db,0x3b42e453,0x3b9b5cae,0x3b1ca08d,0x3b0e0778,0x3b27572f,0x3bd9593c,0x3be99b57,0x3b9f2494,0x3b21e296, +0x3bbd461d,0x3bab5020,0x3bc90c0d,0x3b9606bd,0x3b34e549,0x3b9aebd5,0x3bbe455e,0x3bccdc8e,0x3b4d1ddd,0x3a280f4b,0x3931b97b,0xba06928e,0xb9d7be43,0x3b0dab35,0xbab8c3ee,0xbb4f8dbe,0xbb90305d,0xbb97d2b8,0xbb77e229,0xbb8bfb3e,0xbbb43d7b,0xbbc01ba7,0xbc0af6e1,0xbbc07660,0xbb86e4a7, +0xbb4bb1f6,0x3b372ac9,0x3b69880d,0xb94c09e6,0x38b055ef,0xb9ca6073,0xba8acd25,0x3a723546,0x3aaa82b0,0xb98da796,0x3ba52f2d,0xbb920749,0xbaa10bd8,0x3b766756,0x3b7b7d1d,0x3b461498,0xbba65876,0xbc05d8d1,0xbb9ae287,0xbaf7dedc,0xb9274a3a,0xb9473c48,0x38c7d845,0xba703f78,0xbaf757a5, +0x388a6fb2,0x3acc38ea,0x3aef27b9,0x3ac81ce1,0x3b2d3ebf,0x3b95af8e,0x3b849d19,0x3bb3de4f,0x3bbec7d0,0x3bd34712,0x3b74504d,0xbab22bfe,0xbbaa08a8,0xbbdaf396,0xbb9daa21,0x3ad30759,0x3b8a7a6b,0x3b3cdc67,0xba5c79f2,0xbb8dee0c,0xbbc45290,0xbb90a576,0xbbae4f68,0xbbbf582e,0xbc1a9484, +0xbc0b479d,0xbaf3af85,0xba982006,0xba764e63,0xbabafb2c,0xb7a4f6c3,0x397171db,0xb825d91f,0x38a3d6e7,0x39962210,0xb9c51dbb,0xba903783,0xbb0342d4,0xbac911ee,0xba733f51,0x3889b91e,0xbac79275,0xbb101247,0xbb0ff293,0xbb797bd9,0xbb63c24c,0xbb2a68be,0xbae593b2,0x3acffe36,0x3b60788b, +0x3ba71e1a,0xbbcad52f,0xbbf1bef5,0x3af3cc3b,0x3bb532bd,0x3c141c56,0x3c44c18d,0xba3c3ff4,0x3b921c5d,0xba37b95d,0x3a9d7858,0x3b436790,0x3b699f4b,0x39b48b34,0xb8702117,0x3a98b5dc,0x39dc3ab8,0xb88fe074,0x38935c8f,0x38a5c4a3,0xb9a2382c,0xba2491b8,0x38e9fa6b,0x3aa80cbe,0x3b15aab6, +0x3afc869b,0x3b16a06b,0x3adc64d3,0x3b0f42a8,0x3b3f2038,0x3b4b661a,0x3b584d50,0x3b0ab091,0x3884c32b,0x3a01bbfb,0x38f4b754,0x3aa34dac,0x3a39d27e,0x3ab30cba,0x3a62c3bf,0x3be4e35c,0x3c1be76b,0x3c1b86aa,0x3bf3d5b4,0x3bca008d,0x3b9a249a,0x3b0570dd,0x38ae8fef,0x385385b1,0x39f57b55, +0x399f3b82,0xb98b35fc,0xb6b13532,0xb93bdcc2,0xb8e7b34b,0xb9ee6fae,0xb9ef0f96,0xb9281461,0x39b0892c,0x390c6a53,0xb9ff844a,0xbaa01ee9,0xbab91b72,0xbb05f196,0xbb0514c5,0xbad71b56,0xbaa74750,0x397a902b,0x3ad7dfea,0x3b459526,0x3b57f356,0x3b60e7ca,0x3b6dc604,0x3abcbd9d,0x39a9e24f, +0xb982bf3b,0x396bf9e0,0x3a7fc76f,0x3af42855,0x3bb1e93b,0xbb4b1fd9,0xbb155771,0xbb0062cf,0xba86af7d,0xba0a6f7a,0xb97e4ad6,0xb9b1f193,0xb93de236,0xb97bf6ef,0xb9af4a76,0xba032ca1,0x394a4eff,0x3a3f311d,0x3a98fda6,0x3a3d5fbc,0x3996d5c0,0xba1a69d7,0xbacc6947,0xbb084c5c,0xbaf9681f, +0xbaab5e5d,0xb97b24a0,0x3a34378b,0x3b255ed5,0x3b745d4e,0x3b8faaaa,0x3bacc302,0x3bb16e01,0x3bac2b5e,0x3b94b154,0x3b6d8811,0x3b2ad2d8,0x3a955519,0x395401b5,0xba8fbf5e,0xbb0a813e,0x3b56a42e,0x3b780460,0x3b91aec1,0x3b801166,0x3b8471a1,0x3b72d472,0x3b53d894,0x3b3dcc9f,0x3b4d6c20, +0x3b49fc61,0x3b6cb0df,0x3b32ba52,0x3b1505e6,0x3aed8a41,0x3a66d2c6,0x387f14a1,0xba5468e5,0xba0dadd6,0xb907a7c6,0xba04c0f0,0xba8bde7e,0xba933b4a,0xbac515d5,0xbaaadfc1,0xba9788cd,0xba8a4641,0x3824afc4,0x3a952dcf,0x3b1a1e61,0x3b31f7f1,0x3b4a80c6,0x3b60dfe0,0x3b55dd92,0x3b507cb9, +0x3b5016bd,0x3b61daf0,0x3a7ac43a,0x3aa5e59c,0x3a71e193,0x3a576b4c,0x3a6a4518,0x3a354a0e,0x3a202e88,0x3a14a2d6,0x38fd8dbf,0xb90421af,0xb977d702,0xba276e44,0xba8e847b,0xbaa05df8,0xba9d44dc,0xbaad5e68,0xba9d3b7b,0xbaceae60,0xbabb8cc0,0xbb070f07,0xbb028e5d,0xbae570b7,0xbad7bd2e, +0xbacd22d3,0xbac6a171,0xbac9e9aa,0xbabc434c,0xbaafca1c,0xba8e876f,0xba5b68ba,0xb9ee198f,0x382329a9,0x396998e6,0x3a08f729,0x3a43a610,0x3a6ff25e,0xb9b3d9fd,0xb98582b7,0x3a1a6e4c,0x3a37de0e,0xb98ea688,0x3a040c79,0x3a421bfd,0x38e26a00,0xb8d69687,0xb9819f81,0xba17ad28,0xba24c280, +0xba486468,0xba883977,0xb62eb297,0xb9e5e71d,0xba81c9dc,0xb9718542,0xba0d78ed,0xbae20b66,0xbac675dd,0xbacdc389,0xbad0203b,0xbad1df1d,0xbad28ece,0xbad5c540,0xbabf0361,0xbaab9ae7,0xba9bb268,0xba82ccb3,0xba5d7492,0xba2ee650,0xba258519,0xba1a0cc6,0xba0f2b87,0xb9e436c4,0xbab7db52, +0xba3100a5,0xb9ceed19,0xb9cbc32f,0xbadbb6ee,0xba90e163,0x3a9c09e4,0xbae94119,0xbab09328,0x391d440a,0x397a4ba7,0x39469e08,0x39b80485,0x3a02bf9b,0x3a2f7af7,0x3a4a18b9,0xbaa91a28,0xbae88d36,0x3abf21d7,0xba871545,0xbadccdac,0xba21ab2a,0xba171c45,0xba1fcf88,0xb9e300ce,0xb9c43ea9, +0xb9d6270c,0xba320077,0xba10c388,0xba0cfb56,0xb9aa51d5,0xba57b42a,0xba79e1d2,0xba86df66,0xba409629,0xba100ee9,0xb9092e24,0xb9e9e7c9,0xb9ac7d5d,0xba897156,0xba2e4465,0xbaad2313,0xbae09b3d,0xba88c1c9,0xbab77303,0xbb0e12b0,0xbae54bb6,0xbb007d61,0xbb14d5de,0xbae9bd4b,0xbab32eac, +0xbb00e444,0xba1f2be7,0xb9a20796,0xba792137,0xb9932be9,0x3936561f,0xba337af9,0xb9087d25,0xb940b20a,0x398b3aa7,0x3a09927d,0x39b9e094,0xba1d0429,0xb9f5b1f2,0xba090718,0x375690c9,0xba967971,0xbac98f73,0xbad8c6ef,0xba670ca6,0xb971ff95,0x3a1ef934,0xb983893d,0x39c3635c,0xb90fbc00, +0xbaafd573,0xba91f0ee,0xbaa31c5c,0xba527510,0xba939ca1,0xbb4d1e2f,0xbb468c2a,0xbb5ca7f9,0xbb86f3c1,0xbb30f808,0xbb0386f2,0xbb3aa623,0xba2d4138,0xba405979,0xba633f21,0xb9cdcbd3,0xba59b4c4,0xba50de37,0xba066174,0xb9e197a1,0x39a125c4,0x3a4a7b09,0x3a1b523e,0xba6eb36c,0xb91e8501, +0xb960c4fc,0x3a62522e,0xbb011dce,0xbb2ed9e2,0xbb27e318,0xba8887d4,0x395449d8,0x3af54b32,0x39f091f6,0xb979e89e,0xba54aebb,0xbb10e69e,0xbb1bf3d8,0xbb2671a7,0xbb047f70,0xbb40ebc0,0xbb963e73,0xbb9c2e1a,0xbba09fe5,0xbb22ac29,0xbb1d0a16,0xbb02d492,0xbb0c5311,0x39f5e99d,0x3a5b3895, +0x39bcf10d,0x3acc4b78,0x3aaf722b,0x3a945a75,0x3aab09a8,0x3ac0c752,0x3b2a95de,0x3b522fcc,0x3b15130e,0xba1ea5ac,0xb9ea45b4,0xb939025d,0x3af33177,0xbb0cb02c,0xbb678315,0xbb527a0d,0xba4d09c5,0x3acbf78d,0x3b707d7f,0x3a4ab4e2,0x3b9fee5f,0x3b1d0ffc,0x3b1b4bd8,0x3b2bd686,0x3b11b519, +0x3b81cf55,0x3ba5e997,0x3bb09ab5,0x3b41a910,0x3a447a45,0x39d51398,0xb9596eae,0xb943a39d,0x3ada337a,0xba9a22c0,0xbb373fb4,0xbbadcf63,0xbbbd1a35,0xbbdc97a6,0xbbf84c4d,0xbbf1a5d9,0xbbe1fb76,0xbbee6efc,0xbbb2d1c9,0xbb48a8dc,0xb9a2cd79,0x3b6f9a54,0x3b57a6a7,0xba936fb5,0xbadc0d7c, +0xbb50206c,0xbbad0187,0xbb503276,0xbb017033,0xbaf430b9,0x3b43f13d,0xbb19b95d,0xbb0f678f,0xb9f2d5d0,0x3ac74c16,0x3ae82182,0xbbadf6b7,0xbbf337b6,0xbb91b52d,0xbae9e87c,0xb98190a6,0xb9766aa7,0x38fda05f,0xba4650fe,0xbada65a4,0xb84f1a25,0x3a6f0029,0x3a467161,0x3a80c679,0x3aeb755c, +0x3b508e65,0x3b1ac014,0x3b04a317,0x3a9fa9b7,0x3b42e792,0x3a89ffa4,0xbb624934,0xbbd10a9d,0xbbe3c138,0xbb813399,0x3ada6075,0x3b41d49a,0x3a4d58dd,0xbb9578a1,0xbbf03784,0xbbb4d078,0xbb8bf38a,0xbbd2acac,0xbb99cc73,0xbbfe06fb,0xbbe0a063,0xbb75f8dc,0xba473aa9,0xba2aa588,0xbaeaa4e1, +0x3900d099,0x398da049,0xb61ec1c9,0x37c9b9f8,0x39adb500,0xb9139eda,0xbaa3ab60,0xbb14daf9,0xbb160d91,0xbae5778d,0xbb0d2e66,0xbb45113d,0xbaffde98,0xbb1d9aa0,0xbb70b561,0xbb97509d,0xbba88611,0xbbb8d0d3,0xbaa9610b,0x3ab7ba65,0x3b54cd55,0xbbe6ea61,0xbc25c45a,0xbbb5012a,0xbb85a506, +0xba18756d,0x3b8f0a66,0xbb7e63f7,0x3a96f9a7,0x39e10c69,0xba6f5fd2,0xb8f1c557,0x3afda546,0xba22b322,0xb9ed6b19,0x3a338cf5,0x39a9541e,0xb9031ff3,0x38261dad,0x38a2f5b2,0xb972d887,0xba33a3a6,0xb87b0229,0x3a5259c4,0x3aeaf3ef,0x3ae88d59,0x3ad28e60,0x3ad1c92a,0x3ae7a8ab,0x3a8ed44d, +0x3a139500,0x39caa821,0xb9bc8de3,0xbae78b30,0xbb101bd5,0xbb4172d8,0xbb01ca05,0xbb1e3715,0xba8c5d34,0x3a0ab487,0x3aa1970f,0x395aec1d,0xbb5cd441,0xba015194,0xbb15b329,0xba7afcd6,0x3a738091,0xba0bacc8,0xb9e86086,0xb9045012,0xb9059a22,0xba820715,0xb9a71adb,0xb8e7140d,0xb80dda9b, +0xb99b19a0,0xb9bf8f09,0xb99e5c5f,0x398977a2,0x3969d695,0x3803fee3,0xbac4d5c7,0xbb271f25,0xbb24cb72,0xbafbb023,0xbac61a33,0xba83556d,0xb9a7cf78,0xb777e843,0xb962acc8,0xba19d8b9,0xbab137f4,0xbb2281dd,0xbb553b20,0xbb92c405,0xbbbca5a6,0xbbe4751b,0xbbdb7a3c,0xbbac3a11,0xbb472f05, +0xbbad60be,0xbbbc8fa5,0xbb61ba6b,0xbb4543ec,0xbaf6a0e2,0xbacbf92e,0xba674444,0xba40ea93,0xba0b40ee,0xba1ff60c,0xba1b07a8,0xb998ae54,0x398636e0,0x3a73df1f,0x3a1004f2,0xb93bd4de,0xbaa5bda0,0xbaf05dbd,0xbb048229,0xbaeb701b,0xbab6e432,0xba5f4728,0xb890100f,0x3a678efa,0x3af75176, +0x3b31d919,0x3b829fca,0x3ba23e8d,0x3bb769ee,0x3b90ebbf,0x3b25f9a2,0xb9995fd8,0xba4a8525,0xbae96b27,0xbb4fb9a3,0xbb9277f1,0x3b033fc1,0x3b0faa25,0x3b0568d6,0x3af46da7,0x3b0d41d4,0x3b0a9e65,0x3afdffcd,0x3aec4b76,0x3b0d46fb,0x3b2ba2db,0x3b3862b3,0x3b312bf8,0x3b163d3e,0x3b076d45, +0x3a6c7827,0x38822f65,0xba714347,0xba705f9f,0xbaa189f4,0xbaa9124a,0xba8e0eab,0xbaa16e0e,0xbaa61e2b,0xba94f188,0xba80d7fd,0xba6f8d76,0xb9c70eeb,0x36ff83a6,0x3a163c52,0x3a44fe75,0x3a9d603c,0x3ac467cf,0x3ac7617d,0x3ac2d2d5,0x3ade4bd0,0x3aeecebf,0x3a73f5d8,0x3a822eda,0x3a954a89, +0x3a69d06a,0x3a17cf1f,0x3a12fe89,0x39fb352f,0x39bd1cc5,0xb785f05c,0xba472852,0xbab06d6a,0xbadec215,0xbaee08ee,0xbb10c061,0xbb06006c,0xbae429ba,0xbb052964,0xbaeb7a94,0xbaffce22,0xbad838d1,0xbab1f6b7,0xbab3687f,0xbaa3d12e,0xbaa2d038,0xba9f4e68,0xbaa00656,0xba85dd1f,0xba704cee, +0xba60492a,0xba64a000,0xba70cff0,0xba647bcc,0xba059f54,0xb8ddfe96,0x398d03f0,0x3a0e35dc,0xba2fa823,0xb9dfa51e,0xbaaa8095,0xba8d7d93,0x37e0a615,0xbaa11d95,0xba92dc66,0xb985bf4b,0xb9f9ebe6,0xba0ce5fa,0xba0ba978,0xba37553c,0xba591e26,0xba757d25,0xbb0c24af,0xbb1402ef,0xba874bfc, +0xbb0e69d3,0xbb1654f4,0xbabf7c4e,0xbad2bb10,0xbad4a800,0xbad3e8c5,0xbad4d838,0xbad37f5c,0xbad5d371,0xbad0a5b7,0xbacc1cca,0xbac4f4a7,0xbab781dc,0xbaaaa31f,0xbaa929a2,0xba958a86,0xba8a5e51,0xba78e208,0xba5c1077,0xbafc010a,0x3aee4642,0x3ad7ac74,0x3b098744,0x3afb75ff,0x3a0dcfc2, +0xbb08910b,0x3b0fde0a,0x3a300262,0xbafe3e5d,0xbaf6c3cb,0xbb03b834,0xbb1509c2,0xbb0ca05c,0xbb096db8,0xbb18eee8,0x3a19aab3,0x3b02c341,0xbb0f207a,0x3a0a8b7c,0x3ae85f63,0x3afa897a,0x3adadc56,0x3b006bd3,0x3b0bd045,0x3b11c8e0,0x3b10f9b6,0x3b00933a,0x3b05ce23,0x3b06c2d6,0x3b1787e3, +0x3afc1811,0x3af61d8d,0x3aef847e,0x3b131eea,0x3b138209,0x3aff7a7f,0x3af67ac7,0x3ac6dabb,0x3b151f23,0xb9b67c5d,0x3aa6fd63,0x390b16fc,0x39b40490,0x3a25cea0,0xba1073bf,0x39fd0756,0x3a55666b,0x398adc3f,0x3a906dec,0x3a49c7c7,0x39abdace,0x3a0a0ca9,0x3a6f2411,0x3abe28f8,0x3ac591f7, +0x394dcfee,0x3b26e7b4,0x3b2e84a5,0x3b5884a5,0x3b783c12,0x3b8471bc,0x3b744eb7,0x3b311814,0x3b2ecfd4,0x3b31f00f,0x3b68928b,0x3b2bd26d,0x3b22f978,0x3b1c5437,0x3b6616cb,0x3b677642,0x3b21bc5c,0x3b0757d2,0x3b0229bc,0x3b2c753c,0x3ac1a3c7,0x3a8b8252,0xb9cfab90,0x39e41a0e,0xb860d2c1, +0xbb1f66d2,0xbb04ad17,0xbb2e2fdd,0xbb4e33c6,0xbae83301,0xbab1ab0b,0xbadff3d2,0x394165e4,0x39f107ff,0x391a5e5d,0x3a59ff75,0x3a85d9de,0x3ae75f33,0x3b334624,0x3b650c66,0x3b99aeb1,0x3bad9521,0x3ba70af0,0x3b6dc6c0,0x3b820078,0x3b823f29,0x3bb1b705,0x3b4d076b,0x3b46edaf,0x3b475aae, +0x3bad5405,0x3ba6ce87,0x3b50aa7d,0x3b35cc16,0x3a03f6b7,0x3ab020c4,0xb92cd350,0xba1444a3,0xbb0fa435,0xba800099,0xbb19f572,0xbba07e5e,0xbb8a75d2,0xbb8ce4ac,0xbb25c0da,0xbb15f2ae,0xbae5fbd0,0xbb1c4a33,0x39ed3cc9,0x3a6fba36,0x3a050396,0x3b0e75f9,0x3b1498bd,0x3b63c734,0x3baca74f, +0x3be4ab94,0x3c141820,0x3c1fb050,0x3c0b0721,0x3ba683a5,0x3b947cde,0x3ba15766,0x3bf8ea16,0x3b96ef83,0x3b7d9ee2,0x3b862775,0x3bef7126,0x3be9b427,0x3b761270,0x3b015c51,0x3c246cc7,0x3be5467c,0x3bc1e45a,0x3ba3c486,0x3b43fb5a,0x3b9603b1,0x3bb563a1,0x3bad58bf,0x3b53326b,0x3a96df5e, +0x3a44a642,0x3965fbf0,0x3872c03b,0x3ac06f6f,0xb9c7db18,0xbae1ca82,0xbb9cfd48,0xbb937fa7,0xbbaf7af0,0xbba2e0ed,0xbb7eb5af,0xbb9e877f,0xbbcb1ee8,0xbb912d0a,0xbb108bc1,0x392164fc,0x3b9099ff,0x3b943f0d,0x3abf6fbc,0x3b0058fa,0x3b2b1773,0x3b5a976a,0x3b860ffc,0x3b8dcabc,0x3b50b673, +0x3c063a25,0xbb19a45f,0xba4b4cd3,0x3aa3634a,0x3b1d9bb7,0x3b7cc392,0xbb733222,0xbbd59136,0xbb7ea6dc,0xbad41fc1,0xb9bf2cdf,0xb9d09a36,0x370ab580,0xba0c1082,0xbac0cf22,0x3954ecfa,0x3ac18c45,0x3ad2500c,0x3a8f2f38,0x3ac6ea7f,0x3b8ecf59,0x3bc65982,0x3bf4b245,0x3c083a09,0x3be74afe, +0x3b4ea909,0xbb0d28f5,0xbbc87eb8,0xbbd3ca1e,0xbb23cb0c,0x3b4e6b95,0x3b8ef117,0x3b0a3399,0xbb089456,0xbba75956,0xbba5ac1f,0xbb5c6ae5,0xbbac9409,0xbb0d3344,0xbbcc2f1f,0xbbc398e9,0xbb9b6d69,0xb8b6d5bb,0x3972babe,0xbac8e75b,0x39ef9b21,0x399a368a,0x390fe619,0x3804e3fd,0x39a269ec, +0x38d6bc72,0xba607caf,0xbac6504f,0xbae39914,0xba4a6dfd,0xba0db20d,0xbad8dbaf,0xbacbdd8c,0xbb10084a,0xbb4ffaed,0xbaaab8dc,0x3a631955,0x3b0be758,0x3be77135,0x3bf925fc,0x3bae0607,0xbb5a7b16,0xbb1c721b,0x3bf8f1e8,0x3c22793c,0x3c46423b,0x3c7cd965,0xba01c0cd,0x3bff1476,0x3b39f2cd, +0xbb043866,0xbac51450,0x38281904,0xb9ccf63b,0xba06be08,0x39c541bc,0x3914d518,0xb985aa5c,0xb89a4b28,0x338ff216,0xb9151983,0xb9e0a919,0x3912f63b,0x3a868965,0x3b171380,0x3b137a69,0x3b091d40,0x3b1e2399,0x3b7324e4,0x3b8a4894,0x3b84ce12,0x3b78a4aa,0x3b24905b,0x39b0062b,0x399d9828, +0xb8e9e56e,0x3a915797,0x39c6230b,0x3b083b27,0x3b9163ca,0x3c2f26c4,0x3c4e0c46,0x3c319af7,0x3c17d9dd,0x3c094b9e,0x3b93f79d,0x3a8938cc,0x3a9693dc,0x3aa23b51,0x39c8b006,0x38916e7e,0xb9f35e59,0x37375e9e,0x3914110e,0x392001af,0xb83398e0,0xb94dc873,0xb7898f44,0x39ed16d6,0x3a07a73f, +0x3a1daf7f,0xb926e849,0xba8656b0,0xba87052a,0xba8bc0df,0xba8dc204,0xb9f54be8,0x39c53741,0x3acda524,0x3b4a788e,0x3b46dcb8,0x3b44ee35,0x3b57e74b,0x3ab110da,0x3a4041a8,0x3a777077,0x3af0fe66,0x3b584d84,0x3ba12e76,0x3c0126bd,0xbaa23674,0xbb0bcdbe,0xbb69b888,0xbb02a748,0xbad64793, +0xba5816fb,0xb9da2148,0xb9d812f4,0xb93c8005,0xb9c6f496,0xba00913a,0xb9a8c208,0x398b5ff0,0x3a7b130a,0x3a7eb214,0x3a22c195,0xb96f4ce4,0xbabeae03,0xbb01cb27,0xbb01877a,0xba843473,0x39419e73,0x3aa38b15,0x3b40fa07,0x3b83dfee,0x3b974f45,0x3bab5234,0x3ba7946e,0x3b94e7f2,0x3b7f565b, +0x3b52f79f,0x3b361667,0x3a87e96e,0x389761f4,0xba31c3ed,0xba9dade4,0x3b2f4412,0x3b319f23,0x3b3c43a2,0x3b35df29,0x3b22a816,0x3b1973e5,0x3af6d48f,0x3ad3757e,0x3afbc218,0x3b21de91,0x3b41381f,0x3b3e27b9,0x3b1b5299,0x3b1fe0b6,0x3a9e1502,0x3a0b3486,0xb9c13864,0xb95c2726,0xb8e237b0, +0xb88041f2,0xb93f86b4,0xba0665c9,0xba5f2c82,0xba44905d,0xba23e8b0,0xba1900f8,0x3a1ec6b7,0x3ae37fc7,0x3b40a214,0x3b61a821,0x3b7d115a,0x3b8e9731,0x3b7aeeaf,0x3b60ae05,0x3b43ce55,0x3b38921c,0x3b2091d0,0x3b3131c0,0x3a943750,0x3b057986,0x3ad728f0,0x3ab6b259,0x3ae077b1,0x3acf8778, +0x3ac30374,0x3a97fdb1,0x3a209081,0x3a0d3410,0x392f06c7,0xb886474a,0xba0b3529,0xba1f1230,0xb9c85390,0xba5ac62e,0xbac6676e,0xbab9b942,0xbac9f97d,0xbaac4750,0xba9e4c15,0xba99c23e,0xba96a01c,0xbaa30eb9,0xba4772f2,0xb9b87797,0x393ff34b,0x3a2f52c3,0x3aa66894,0x3b03bfd0,0x3b04d3ea, +0x3b0f85ad,0x3b17af6b,0x3b2087cb,0x3a2102f0,0x3a6e9ad5,0x3a48f136,0x38f18fc7,0xbaacae1d,0x3a8e63ac,0x394f56ae,0xba8e7098,0xbab3dffb,0xbaca94cb,0xbae434bf,0xbb005023,0xbb0e62c4,0xbb1dda44,0xba0b3133,0x38d5ec09,0xbb1dbf32,0xba67fc0b,0xb9ce6c5a,0xba3a6f2d,0xba42b5ee,0xba43ae37, +0xba517257,0xba54cfb1,0xba5437bf,0xba6556d5,0xba1b3f4a,0xb9c8bae4,0xb93c9d4a,0x38c128aa,0x39a5e7c3,0x3a1f5c9b,0x3a131ca8,0x3a1a69d9,0x3a1cd738,0x3a289de8,0xb9b07d52,0xbab4a077,0xba821a31,0xbada4194,0xba044e59,0x3a947c39,0x3b446470,0xbaa4307d,0x3a278ba9,0x3b0d1955,0x3b2333cd, +0x3b1d99f6,0x3b07c90d,0x3b27bd1b,0x3b31a5cc,0x3b2c67f0,0x3a2ab754,0xba90ee0d,0x3b58a7ef,0x3a8124af,0xba019f99,0xbae54ca9,0xba96bc6f,0xbaaaacd4,0xba9a2a44,0xba942380,0xba973fe4,0xbab25b1e,0xbaa48e27,0xbaa41736,0xba83967b,0xbacb9574,0xbadb6c22,0xbae6bf2c,0xbaaf346f,0xba93298d, +0xba45c3d2,0xba917b18,0xbaa14520,0xbad541ac,0x3abc76cc,0xbad8b7c3,0xba8f7ca9,0xb9aa9e6d,0xba99a9a7,0xbb03b1e6,0xbae5a62f,0xbad06ecd,0xbac67cb3,0xbab9b72f,0xbaa8c825,0xbae467bb,0xb996ab55,0xb99762e2,0xba0fca9e,0xb9b1b6a3,0x3af96819,0xba722497,0xba68f3c9,0xba4b3fd6,0xba316974, +0xba108a39,0xba571cc7,0xbad0b33f,0xbac503c0,0xbab8eb08,0xba295582,0xbb000fa0,0xbb16de79,0xbb1a6f21,0xbaa2e1f8,0xba185db9,0x3559bc89,0xba600a14,0xba548c3a,0xba0c0d05,0xb9905023,0xba4e8518,0xba626880,0xb959dbec,0xba12b029,0xbb6242d8,0xbb0d63ad,0xbb52388c,0xbb8075ab,0xbb495308, +0xbac4f97b,0xbb457992,0xb9d74567,0xba7dc285,0xba4d95c3,0xb9b08950,0x388295e3,0xba0bd5a2,0xbac04e13,0xba865972,0xba47c0d0,0xb9c224b4,0xba173ff8,0xbadce4f9,0xba972a56,0xba9e1d19,0x38a0a99d,0xbb424ac4,0xbb656539,0xbb606c35,0xba92a34b,0x38a8cd9f,0x3a93583e,0xb89ad4fb,0xbae8a0bb, +0xba921597,0xbab317f2,0xbb27a750,0xbb59c920,0xbacd1dd6,0xbb1c7c15,0xbba04e54,0xbb7b7474,0xbb739c59,0xbb10f8a8,0xbae4f109,0xbae7f11a,0xbb3384e4,0xb9ce883b,0xba03cd76,0x38923234,0x3a56131a,0x3b0cf940,0x3aced9c4,0x3a0ced31,0x3a90d504,0x3aa7ed05,0x3aca3aa8,0x399228be,0xbb0bb3dd, +0xbb0a229a,0xbaa4fe34,0x3aa37776,0xbb42a803,0xbb8b1ff7,0xbb7b17ae,0xb976861e,0x3af6ea1b,0x3b2fb788,0x394ce5c7,0x3b76fd4e,0x3b7ef811,0x3ba897ba,0x3b92b412,0x3b81c89a,0x3b9cb282,0x3b9a0a19,0x3b8cb1c1,0x3b3b818e,0x3a8f5852,0x3a617299,0x39c28789,0x3981be50,0x3a918bcc,0x3791feee, +0xbad52864,0xbba42441,0xbbcd2d13,0xbbcd648d,0xbbf59477,0xbc1a3e7a,0xbc0d3cad,0xbc173d63,0xbbc29e3a,0xbb4f7c3e,0x399c186c,0x3aa25d2c,0xb9ec6682,0xbb8b586f,0xbb937e1f,0xbb9d5e40,0xbb9fb691,0xbb6fff40,0xbb1af573,0xbabdfd02,0x3b3e17fb,0xbb827c47,0xbb4b3dfd,0xbab0bf57,0x392d80be, +0x3af48357,0xbb7dceb6,0xbbbf67ae,0xbb5feecd,0xbab62549,0xb9cd7d7b,0xb9e5f86e,0xb8a8647a,0xb9b57dfa,0xbab54a85,0xb9aa3d62,0x3a0a6911,0x3a527382,0x3a1333cd,0x3af78baf,0x3b358492,0x3b052c4a,0x3b159400,0x3a08ab4c,0x3a8e99d3,0xba7f84e6,0xbb84e94e,0xbbd836d0,0xbbcb3af5,0xbb10febf, +0x3b174400,0x3b400645,0x3ab6413b,0xbb8c07a8,0xbbe3b264,0xbb99fa16,0xbb8dc0f3,0xbbc2b0b2,0xbab42be1,0xbb8bbe6e,0xbba00629,0xbbabbb93,0x389e2eaa,0x3a2def11,0xbab95a7c,0x3a3f4cfc,0x395c8ab4,0x3973d5f8,0x37f89aa4,0x399269fb,0x39736280,0xba413869,0xbb00bb5c,0xbaf9e37f,0xbaffeaf7, +0xbafdefa4,0xbb584e98,0xbb4da435,0xbb383975,0xbb6ddb54,0xbba0c32f,0xbbb9f68b,0xbbc9d37d,0xbaaa88fd,0x38d9233c,0xba44e44b,0xbc1c8f2e,0xbc35f7e1,0xbb94bc45,0xbb67ac3c,0xb93d7342,0x3baafe69,0xbb6f44b7,0x3b29ce9f,0x3bacc355,0xbb574287,0xbba4c711,0xbaf41a4b,0xbacb6b8c,0xba319528, +0xb93b251f,0x3804bc79,0xb99a17ce,0xb9061bda,0xb886a0b8,0xb8c60b96,0xb9da652d,0xb8cce876,0x3a295471,0x3ae07d6b,0x3ae36f65,0x3b1c55bd,0x3afd6fc4,0x3aa78de6,0x39deffaf,0xba3227de,0xba390f22,0xba5e78b9,0xbac363d0,0xbb0260aa,0xbb1c3629,0xba868c03,0xbab74a91,0x398b5e1d,0x3b17088a, +0x3b06d366,0xba41671e,0xbbda2b46,0xba4b017b,0xbb1d2693,0x3a4ddfd3,0x3b89e64b,0x3b0b1099,0x3ab25763,0x3a07d7ed,0xb92b5999,0xba3e7124,0x38dc71ab,0x394a2d20,0x399f366a,0x38c83855,0xb8a89118,0xb8c81d77,0x39c5a023,0x3a1b7df0,0x3a486567,0xb9aa4bb0,0xba49e011,0xbae35b9f,0xbaaacc31, +0xba37c92a,0xba083849,0xb8cf4571,0xb922ae10,0xb9f32fbc,0xba9aea56,0xbb0788f7,0xbb579b43,0xbb9159b9,0xbbb9508a,0xbbe6c1d1,0xbbf135f0,0xbbc646fa,0xbb9b8010,0xbb0dfd75,0xbb975b5a,0xbb9670a4,0xbb1318b5,0xbb2f7d02,0xbadf21e2,0xbac4de7d,0xba96c9c0,0xba5eec16,0xba41a64d,0xba3f10c1, +0xba5c1553,0xba2f0d78,0xb9998428,0x39ed4abd,0x3a07de80,0x39112908,0xba449960,0xbac35f87,0xbb00ddc6,0xbae449a8,0xbafb95b6,0xbad7e080,0xba4e3268,0x39f45efa,0x3acc75f9,0x3b170300,0x3b4b5843,0x3b6d24f2,0x3b7f717e,0x3b2f2b58,0x39e80eba,0xbb480132,0xbb6661e4,0xbb83b74e,0xbb8d0d93, +0xbb8b939a,0xb9a196c7,0x3a06da30,0x3aaaf5e2,0x3a68e9fc,0x3ac3e8ad,0x3aa24017,0x3a816442,0x3a20069f,0x3abee8d6,0x3aea6c9a,0x3b2cabd7,0x3b12d74f,0x3b2aaf4c,0x3b1d777e,0x3aba6304,0x39f61b1a,0xb951fdee,0xb9a7b5bc,0xb9f53f27,0xba9f3b72,0xbaadb863,0xba933d94,0xba9d5e55,0xba89abcc, +0xba72442a,0xba4c956c,0xb9cdbcd8,0xb89dcf93,0x39c8c443,0x39aa1e1c,0x3a1567ab,0x3a2adc60,0x3a1a9954,0x39a45e91,0xb874c11d,0xb7a7a57b,0x3ac7d43a,0x3adcbde9,0x3b38e3eb,0x3ac1beb2,0x3ad8a946,0x3acc7bc4,0x3a9e524f,0x3a9f49f4,0x3a2c9fda,0x39353f6a,0x38966778,0xba09f14a,0xba530da1, +0xba7ea6b9,0xba555cad,0xba5ab369,0xbab146ca,0xbabd19c6,0xba9d874c,0xbae0ce3f,0xbab197e0,0xbab49b3e,0xbaa7c2d1,0xbaa2c212,0xba9e5a0d,0xba9d86da,0xba8d46e7,0xba84d003,0xba774b0e,0xba6c7eed,0xba6701ff,0xba4cb351,0xb9df45c6,0x38890812,0x3a13eeb5,0x3a8c5981,0xba28220f,0xba244f5a, +0xb9a8cb60,0x39f541d7,0x3abeb89f,0xba1732bc,0x39a6648f,0x3aa3e763,0x3a970ab5,0x3a9373cc,0x3a827f98,0x3a896e63,0x3a85f7e5,0x3a760cbe,0xb9de8c76,0xbab7dba9,0x3a09b400,0xba3bd47b,0xbac3a9df,0xbadfd5e7,0xbad56e0a,0xbade343d,0xbadcc1b8,0xbadf03ef,0xbadeb48f,0xbae0ca84,0xbadaa887, +0xbad4d5bd,0xbace877e,0xbac2ab67,0xbab79701,0xbab5bc21,0xba9aab0e,0xba8a7c4e,0xba751c05,0xba5f161f,0xbafa2bbf,0x3ace9414,0x3abb7ffd,0x3b18c55a,0x391ffb06,0xbaca230f,0xbb3add7b,0x3a6735f9,0xbaa300e1,0xbb4f7da8,0xbb45a72f,0xbb4a3305,0xbb4c22c7,0xbb4c6d60,0xbb46f692,0xbb4a86f4, +0xbabbe8cd,0x39e8a8f8,0xbb3a2e55,0xbab83029,0x37d750dc,0x3b08723f,0x3ac0c2c2,0x3ae4d575,0x3af9c82f,0x3b004a08,0x3afbfc29,0x3ad9c0ca,0x3ae3a797,0x3ae7713c,0x3b0aad66,0x3ad413e4,0x3aca4c6a,0x3ac53627,0x3af0df9b,0x3af26087,0x3ad29c93,0x3ad39c65,0x3abc8bdc,0x3aef9815,0xbb0ac88f, +0x3a3bb830,0xba851b6d,0xb9c475b0,0x398f4f92,0xba90745c,0x3a073e2b,0x39ff5238,0xba542275,0x39f0b6ec,0x39ae0a57,0xb9c2dd58,0xb9e70a73,0x37a00309,0x39c314b8,0x3a503b7b,0xba9b88c8,0x3b0908c0,0x3b297d67,0x3b39fd9c,0x3b5aa136,0x3b62c169,0x3b4e258d,0x3b0e0f01,0x3b096b3a,0x3b11b3b2, +0x3b569946,0x3b0825be,0x3aea05fe,0x3add7007,0x3b25da7a,0x3b29e8a3,0x3aec5003,0x3acaa7b1,0x3b0cf9f4,0x3b1db436,0xb7d8f0a5,0x3973db67,0xbaaece91,0x389e1952,0xb9a3a2ab,0xbb49a62c,0xbb12bd88,0xbb0e3a8e,0xbb89c199,0xbabd5942,0xbaf85fec,0xbafe7910,0xba7804c1,0xb9e8f4af,0xb9ad1bf4, +0x37b2ffd6,0xb912ff18,0x3ab67d18,0x3b385fab,0x3b4876fd,0x3b87183d,0x3b933ba4,0x3b8ae3ab,0x3b2f4417,0x3b473ae6,0x3b4b6ea5,0x3ba4737e,0x3b1254d9,0x3b002d00,0x3b0791d8,0x3b707965,0x3b71c585,0x3b1d4bac,0x3b0ba4e8,0x3a5ee093,0x3a7649d9,0xbac20c3d,0xbaa04376,0xbb44cd7e,0xba5e4aee, +0xbad67a14,0xbb968e18,0xbb3cb086,0xbb41e305,0xbad7d8d6,0xbac4a7c1,0xbaab6ac4,0xbb1386dc,0xb9724d3e,0x38becd04,0xba179144,0x3ae54850,0x3aa17be5,0x3b5f8bbf,0x3baf9a84,0x3bc75fc8,0x3bfce80d,0x3c03324e,0x3bd73cd8,0x3b57bb01,0x3b36bff4,0x3b795e9f,0x3bebe114,0x3b5ab536,0x3b026f66, +0x3b146734,0x3b94c914,0x3b98e883,0x3b18abfb,0x3a6976ca,0x3c2f4324,0x3bd5d475,0x3b8a8825,0x3b8b29b0,0x3b52500d,0x3b8876fb,0x3b93cc12,0x3b68e1cf,0x3b29c30c,0x3a8e91fd,0x3a536ba5,0x39f58e19,0x39e253ad,0x3a403df5,0x3a053c1e,0xb9a029dc,0xbb9cdb81,0xbb92696f,0xbbd39abf,0xbbc231c5, +0xbb817a07,0xbb9c1a71,0xbb915236,0xbb58538b,0xb9d8e86d,0x3b6ff06c,0x3bb37be2,0x3b9115fc,0x3aafe2e9,0x3adbe993,0x3b2211e5,0x3b66c25f,0x3b4fa6bb,0x3b80ee34,0x3b99ca66,0x3c0b8372,0xba344cd6,0xba458103,0xbab8c00b,0x3a1666fb,0x3b5838bb,0xbb3505b6,0xbb989a04,0xbb351d7b,0xba78a815, +0xb9f33d1c,0xb9cef483,0xb95dadd7,0xb96cd716,0xba7fc07f,0xb79b99f6,0x3a6c95c5,0x3a75ed13,0x39f1d66c,0x39fe2713,0x3b544e35,0x3bb8f6aa,0x3bd1ac76,0x3be3b1f5,0x3b9f4e0c,0x3a86f179,0xbb61205b,0xbbe32b6a,0xbbc4f75c,0xba0f91cb,0x3b6d3906,0x3b67b8e6,0x3a9a965f,0xbb7e60ea,0xbbcf2e3f, +0xbb9138cd,0xbb3da8b6,0xbb8ca372,0x3a60dd56,0xbb7f0cea,0xbb84ca90,0xbbc9c5fd,0x3a0c3823,0x3a438dce,0xba6095d9,0x3a4b373d,0x390a1dc0,0x39881119,0x38c45978,0x393964ec,0x39b18468,0xba08ce83,0xba8bffb8,0xbaf2c29e,0xba485f49,0xbaa1fd20,0xbaec3550,0xba950a53,0xbb1101ae,0xbb264fb2, +0xba4ad512,0x3ab5c25e,0x3b2ebffa,0x3c084147,0x3c046374,0x3b5973fe,0xbb30791a,0xbaa5a34c,0x3beb7f8d,0x3c03450f,0x3c1bd608,0x3c5632cc,0xba18d81c,0x3bd41632,0x3be3d669,0xbb855512,0xbbc87d09,0xbb853e22,0xba8c8d43,0xb9e3ecc2,0xb940b21c,0xb85d0d5d,0xb9858c88,0xb8fdb21d,0xb9033658, +0xb8c6c62c,0xb965152c,0x37d21305,0x3a0c6f90,0x3afe53bd,0x3b1492cf,0x3aec7c79,0x3b304330,0x3b7bae01,0x3b6c392b,0x3b41df16,0x3b0e7803,0x3aa25c2e,0xb973b879,0xba611f24,0xbab245f3,0xb9dac951,0xba1b725c,0x3b08612e,0x3be5e7fd,0x3c0c74a5,0x3bf2d8f8,0x3b72aef5,0x3b92e03c,0x3bbba379, +0x3b2f509e,0x3aad771f,0x3b2cc56a,0x3b0b41ba,0x3983f46f,0xb9807f4e,0xba040379,0x38ada68f,0x39642541,0x39584392,0x394e175e,0x388acd58,0x368ecb8b,0x39f0fca4,0x3a4c5626,0x3ab82346,0x3a2439ec,0xba2d4978,0xb9a4ab7a,0xb9a63e52,0xba00128a,0x398d7c85,0x39d22a86,0x3a6a0282,0x3ad665ae, +0x3a8bb870,0x3a2440de,0x39e5f862,0xba51e4bb,0xbaa96b84,0xba7bbe4f,0xb9569c61,0x3adc9ea1,0x3b6f74c1,0x3bb3df0c,0xba1d8057,0xbb260b25,0xbb86600d,0xbb3fc269,0xbb224ab3,0xbacf226a,0xba477b09,0xba526784,0xb9a012fc,0xb9e87962,0xb9f2056e,0xba28ed8d,0xb97647ea,0x39eb246c,0x3a4f60c7, +0x3a07725f,0xb979606a,0xbaaefa07,0xbae1dfa2,0xbae799a0,0xba7ba136,0xb9116ed7,0x3a427ad4,0x3b0448f5,0x3b402d31,0x3b649c39,0x3b8285f4,0x3b814bb1,0x3b5f6648,0x3b3dbcfc,0x3b0e1d95,0x3ab0125b,0xb81c7b07,0xba7a7094,0xba9b9a50,0xbaa2e405,0x3a75bf51,0x3a3df0a8,0x3a13f4ac,0x3a72916a, +0x3a2bef30,0x3a43e93d,0x3a04b3be,0x39c50023,0x3a4a8941,0x3ad93958,0x3b0292c5,0x3b24e834,0x3b0f1674,0x3b29cb46,0x3ab63ba6,0x3a59e9cf,0x388e71e2,0xb7fc3052,0xb9d3cf9e,0xb9833725,0x392a15d2,0xb928afeb,0xb989651f,0xb92faadb,0xb59b6f5a,0x38d0edfe,0x3a7c0cbd,0x3ae121b2,0x3b24c1c3, +0x3b360227,0x3b44604d,0x3b5a62c2,0x3b2ceeb3,0x3b042a50,0x3aa91c75,0x3a7b517f,0x3b3c032f,0x3b43755a,0x3ab55c90,0x3b1f6a72,0x3aef0fc4,0x3ad8f871,0x3b08e7a4,0x3b01d932,0x3b06cb73,0x3ad7f92d,0x3a73bf4d,0x3a87dc5f,0x3a60219b,0x3a156dfe,0xb8b4f6cd,0xb88809c7,0xb7f67337,0xb9ad7e29, +0xbab89129,0xba4b6a99,0xba64ced1,0xba4d52ae,0xba3424a6,0xba376ead,0xba3777d2,0xba529592,0xb94bb250,0x3999c3aa,0x3a594d5e,0x3aaa74c8,0x3aef02e3,0x3b208def,0x3b1fbee1,0x3b26f44d,0x3b2c788f,0x3b35ecb1,0x3a6cc3ec,0x3aa48092,0x3980dda0,0xba12ea35,0xbaadb796,0x3a40cc17,0xba03e4c7, +0xbab6d839,0xbad758ef,0xbae7aa6b,0xbae952cb,0xbb062035,0xbb12fcce,0xbb19968f,0xba91a857,0xb8856f7b,0xbb24da1b,0xbac1e774,0xba3864fd,0xb74e41ca,0xb9809c14,0xb95aa834,0xb985c7b3,0xb988d7b3,0xb981c146,0xb9a6ca7a,0xb88d2771,0x38dd0959,0x3996e11b,0x3a08abd6,0x3a3b2751,0x3a7aeb4e, +0x3a6f6b10,0x3a786b4c,0x3a7fc2d5,0x3a7dd8f3,0x39098d0a,0xba3b2b79,0xb9f2b178,0xba96ba18,0x3a8d6ac6,0x3b161631,0x3b12a489,0x39a3e021,0x3af6e326,0x3af85f10,0x3b175c3a,0x3b0fa6ad,0x3aca9bf2,0x3b0a76cd,0x3b10c1c9,0x3b01eea1,0x3aea5e15,0x39c79de9,0x3b1fbef0,0x3b065906,0x3a88c86a, +0xba9a8ce0,0xba0ba544,0xba1d6af4,0xb9fb3f42,0xb9f35a41,0xb9fb3c39,0xba225e1f,0xba17d7eb,0xba187333,0xb98f7c1e,0xba542442,0xba69e880,0xba7c2131,0xb9f4ca4a,0xb9a45dfd,0xb986ffb4,0xba024ef0,0xba5ee4a2,0xba1bd57c,0x3b0786f7,0xba5748f1,0xb94dffd8,0x39cedcb7,0xb99bded4,0xbaa53297, +0xba56d40b,0xb9c79237,0xb9b991f1,0xb9809bbc,0xba00914a,0xba44632a,0x38c4406c,0x3687e426,0x39e37603,0x392d7dad,0x3b140f59,0x38db561b,0xb932e1ca,0x3974091d,0x3984588b,0x39563538,0xb92f8a07,0xba50c9b9,0xba646990,0xba2c48d0,0x39cd6e5a,0xba6a046f,0xba92dc52,0xba906504,0x3950878d, +0x3a187f94,0x39a5e3b8,0xb98e4b46,0xba1e01e0,0x39ab0ead,0x3a80e999,0x381bd18c,0xb9d87813,0x39e76595,0x3792b8e6,0xbb51e268,0xbab12943,0xbb2ae8b1,0xbb649b57,0xbb30f988,0xba92f6e3,0xbb1dd272,0xb9a6533a,0xba5c55b1,0xb9775b6c,0xb7ddf9bb,0x3a693e16,0x39eaf272,0xba1dcd6e,0x394ed8a3, +0x3a06f5e9,0x3a3e6f7b,0x39ffdd52,0xb9aba578,0xb9477f29,0xb969dba0,0x3abb546f,0xbac4025d,0xbae0d9f2,0xbad52745,0x3a8e6939,0x3ae05a34,0x3a95318e,0x3a0c8449,0xbafab186,0xb9dd3d1f,0xb9bfdf12,0xbafe62b4,0xbb5a1f1e,0xba69e82a,0xbad67d24,0xbb8f103c,0xbb28cf0b,0xbb187a2e,0xbac4f308, +0xba726514,0xba9bfd4f,0xbb2742f8,0xba742acf,0xbaaa4f4a,0xb881fd8a,0x39e693ed,0x3b1a98c2,0x3b1d017f,0x3acdbd71,0x3b385dc7,0x3b450714,0x3b394340,0x3aa271fc,0xba8296eb,0xbabe1c18,0xb92f969f,0x3b442c08,0xba6ab92f,0xbaf60af1,0xbaa9fe10,0x3b3834a2,0x3b73832e,0x3af29ae6,0x3979625b, +0x3ba74455,0x3bc17aac,0x3bdfae74,0x3bb66943,0x3ba22618,0x3ba28276,0x3b82e94d,0x3b35b2ec,0x3b141766,0x3a6c42a7,0x3a583829,0x39d9b900,0x3a08b3d2,0x3a1a053b,0x3a7c3004,0xb8dab89c,0xbb87588a,0xbbb10c9a,0xbba5dc64,0xbbc21be9,0xbc092a24,0xbc0384e2,0xbc0c072b,0xbba3fb7b,0xbaf97f78, +0x3b0b0268,0x3abb661a,0xba7b1e9a,0xbb8c8e5a,0xbb83352d,0xbb4a8875,0xbaa703bd,0xbac1c1cd,0xb94aefa7,0x3add3b96,0x3ba37b3d,0xbb8780f4,0xbb221bbf,0xba93bf58,0xb9a3f373,0x3b12006a,0xbb1c6dce,0xbb842e63,0xbb082422,0xba37dc01,0xba0159d9,0xb9be48a5,0xb9921839,0xb909d43c,0xba628b6f, +0xb9f087f8,0x39b7e5db,0x3a74f45d,0x39484985,0x3ab34b66,0x3b2181b8,0x3b37e27b,0x3b7efee6,0x3b26e408,0x3a92ba5d,0xbaceec05,0xbb854f35,0xbbd91d9f,0xbbaccc09,0xb972c839,0x3b3d5687,0x3b3fb983,0x3b055b9b,0xbb6093e6,0xbbc24ba9,0xbb87c8bf,0xbb7eff7e,0xbb764f14,0x3b05ff4e,0xbafa254a, +0xbb647d6c,0xbbad4106,0x3a0c7088,0x3a8c2245,0xb9c7b99c,0x3a44058b,0x38dfa1b5,0x39988ad4,0x38fa1474,0x39108dd7,0x39b2ff82,0xb92f7e84,0xba9cfe37,0xbaa9cb63,0xbaa7d406,0xba5963cf,0xbb1545c8,0xbb47059f,0xbb31b99e,0xbb469c04,0xbb61b96c,0xbb48ab91,0xbb1676f5,0x3b1ed1f8,0x3b0053bf, +0xbb138eee,0xbc0bd525,0xbbfaae39,0x3aadeccf,0x3b1c3fd5,0x3ba047ec,0x3c0f2a41,0xbaa075aa,0x3b6a436e,0x3c10b91a,0xbb8e9f5b,0xbc0adbbb,0xbbbb2a71,0xbae82234,0xb9ebcc99,0xb9ed53f7,0xb8be496c,0xb991c4ba,0xb927b2d2,0xb927b13f,0xb8d05501,0xb93d5535,0xb8e5936f,0x39d777f7,0x3ad1f6d7, +0x3af258b9,0x3b34b869,0x3b1ad178,0x3ada9db4,0x3a8c6a3d,0xb8e72514,0xb9c41be7,0xb9edb6db,0xba3f449a,0xba8ffda7,0xba980340,0x380b3404,0x39d91695,0x3b29eb50,0x3bba7175,0x3b899626,0x3a296a18,0xbb99d73a,0x39169568,0x3acc3e07,0x3b807465,0x3bcc2b4d,0x3ba08e25,0x3b494d6b,0x3a7d8d3a, +0xb937d803,0xb981d8ba,0x3999dd88,0x3982a8ea,0x39a360db,0x397fe813,0x39179d84,0x38b67868,0x39e73adb,0x3a627846,0x3ab54dca,0x3a8a9e3f,0x3a7a5f44,0xb9b0994b,0xb9bde206,0x383a3650,0x391dff6a,0x39e5a79f,0x39e212d1,0x3a0b1a4f,0xb9cb3ef5,0xba89ef72,0xbadd2fe2,0xbb56b5b9,0xbb8ba850, +0xbba1e705,0xbb7d20b2,0xbad0c029,0xb9cffdfa,0x3b054187,0xbb09bfdb,0xbb080ef5,0xbabe838e,0xbb0677b9,0xbacb9eda,0xbaa93d3d,0xba94865d,0xba5afc45,0xba2710b0,0xba10694a,0xba44ad17,0xba33abe4,0xba07e571,0x37a3f39c,0x39f121fd,0x39f81e41,0xb8c8c939,0xba8c2f90,0xbae1cbd0,0xbad0e634, +0xbaf47e3d,0xbad4aa62,0xba5c2874,0x3a2d5efd,0x3adf9a77,0x3b1336b7,0x3b257472,0x3b1f0179,0x3b08906d,0x3ab25558,0xb9487526,0xbb361f64,0xbb6ca50e,0xbb7fa160,0xbb5b92a2,0xbb1c3110,0xbacac942,0xba2c6936,0x3a1960c6,0x39afff82,0x3a6ceebd,0x3a1fc60b,0x39b06a4c,0xb8a91d26,0x3a5cda4d, +0x3a8e06da,0x3b0c1b78,0x3ae0e357,0x3b1b2411,0x3b1a1793,0x3adb6252,0x3a622f50,0x3a00fe6f,0x399e990a,0x3985ac98,0xba3ac307,0xba6bd3d0,0xba1369c1,0xba2a2a60,0xb9ea3d82,0xb9910b5b,0xb7f3d856,0x39d13aa5,0x3a58f244,0x3aab21aa,0x3a8d0344,0x3a81e0a7,0x3a689706,0x3a0419d9,0xb8927172, +0xba83873d,0xba88844e,0x3b0b7606,0x3b1991b1,0x3b520326,0x3affe7cb,0x3b149ddc,0x3b09564d,0x3aee874a,0x3af9943a,0x3ac2898e,0x3ab4385b,0x3acd38eb,0x3a9024e2,0x3a47e8de,0x3a4e5e17,0x3a21f3e4,0x39a23528,0xb8f65f8b,0xba18e0f2,0xb9fa42ba,0xbaa665c4,0xba894965,0xba8615e8,0xba7aebf5, +0xba6e264a,0xba67ca05,0xba6bdbdd,0xba3db7bb,0xba183d30,0xb9b850e6,0xb8d3074c,0x39453b24,0x3a079533,0x3a33c69d,0x3a880d0f,0x3ab5e5e2,0x3af27fa1,0x36b6fd58,0xb8a64ac5,0x3a5a2c4c,0x3abe59aa,0x3ac1cabb,0x3a14f7cc,0x3aab0769,0x3ac07c73,0x3abd89fd,0x3ab8e279,0x3a9cf11a,0x3aae8182, +0x3aafcc04,0x3aa8f29b,0x3a816c3c,0x389adc4f,0x3a49a822,0x3a03482c,0xb965fa33,0xba908210,0xba727476,0xba81a03f,0xba81af7c,0xba83f23b,0xba840a39,0xba87e71f,0xba7055a2,0xba577f5d,0xba438e00,0xba25ead1,0xba0e3700,0xb9e9355c,0xb9a7448e,0xb9647d8a,0xb907f72f,0xb8e29984,0xba6b3476, +0x39b39967,0x39da6161,0x3a88e455,0xbaa6d64b,0xbb011327,0xbaa40f90,0xba4ad1d9,0xbaf009b3,0xbb0440c8,0xbae49e3e,0xbae7ac04,0xbae413cf,0xbadcab6b,0xbacdb499,0xbac148d3,0xbb068727,0xba9c39e7,0xba892194,0xbaf07589,0xbab03c6a,0x3a5068b3,0x39c782b2,0x3a007523,0x3a284abd,0x3a23127c, +0x3a16d04f,0x39c39476,0x39dc3f00,0x39eb45b1,0x3a5e5e66,0x3988f475,0x39269b85,0x39075070,0x39dd1f58,0x3a05518e,0x3a0397a5,0x39f04015,0x39f43c43,0x39a2ef24,0xbb035b9a,0xb9f8f171,0xbadeca92,0xba4e4a5f,0xb9d74530,0xbad944bc,0xb94ac118,0xb9e5b509,0xbae9bc13,0xba37764f,0xba1af137, +0xba9f05ef,0xba90470c,0xba4b3976,0xba2776ac,0xb937d234,0xba8c76f8,0x3a1da616,0x3a9c28ce,0x3a93aa25,0x3ac57e2b,0x3ab7cbc6,0x3a8f8b66,0x39bf2808,0x398cb8a7,0x39f8587c,0x3ad56e61,0x39701bcc,0xb9233098,0xb92c5527,0x3a0d9116,0x3a5170d6,0x3a24520f,0x39b0f54e,0x3aa33bc7,0x3a9b5f5b, +0xba929702,0xba3759aa,0xbadf178e,0xb981e358,0xba0f4407,0xbb5cad25,0xbb0ad725,0xbaf9d33d,0xbb924f69,0xbad7f6c0,0xbb05c1bc,0xbb0d4007,0xbae376f4,0xbabdac28,0xba23a87d,0xba42c810,0xba6d5bb7,0x39c11891,0x3aa31d40,0x3aa16178,0x3b0064d4,0x3afe7aa2,0x3ad9bddf,0x39d98a94,0x3a3f5104, +0x3a4daccf,0x3b3c52f0,0xb98fadec,0xba3683b1,0xb9ded63b,0x3a6a74f0,0x3abfb675,0x3aafa328,0x3a796689,0x39a301f5,0xb7f77df6,0xbb10e5b0,0xbb06cd6c,0xbb609be6,0xba64d519,0xba902ad7,0xbb6e80a9,0xbada7f97,0xbad5678a,0xba316d54,0xba225759,0xba4e7b06,0xbaeec78e,0xba6a2bfc,0xba8572a6, +0xba8cb46a,0x3a45e541,0x3a095d47,0x3b1cda00,0x3b5cd771,0x3b5ee090,0x3b89c6d5,0x3b7805e4,0x3b126b28,0xb9a02e07,0xba2c0231,0x3a670689,0x3b951414,0x3909bb68,0xbac33a46,0xba6b0508,0x3a90c158,0x3afd4d5c,0x3a9d53db,0xb8cea8b1,0x3c09b9a3,0x3ba5b492,0x3b471c86,0x3b6632ff,0x3b6fa3ab, +0x3b774122,0x3b51b3bc,0x3aeab185,0x3add1619,0x3a1257f7,0x3a14189a,0x3995cfa5,0x3a0a9ff2,0x39732c8a,0x3a88d8db,0x3a46cddf,0xbb8635b6,0xbb9440e4,0xbbd310cb,0xbbd2e4c1,0xbbb47088,0xbbb7b8c9,0xbb82ec7a,0xbb2c89d1,0x3a666844,0x3bc8ca20,0x3bb24769,0x3b42f9d8,0xba36ec8c,0xba19ed49, +0xb8b78df6,0x3a5fe2e9,0xb90283d1,0x3ac29823,0x3b972646,0x3be41408,0xb9ad2f40,0xba8fef51,0xbb49cb90,0xba8754e7,0x3aff10cd,0xbb05a40c,0xbb43cd22,0xbab1a32d,0xb9d87a30,0xb9d0d55c,0xb969732d,0xb982ba8b,0xb8ec125a,0xba00cbc2,0xb9bb9432,0x3930be3a,0x39be11a6,0xb937abc7,0xb8c5b7c0, +0x3add5596,0x3b657270,0x3b717a1a,0x3b5b94c8,0x3ab6d486,0xbaccca80,0xbb989139,0xbbea7d52,0xbba4962e,0x3aa16fec,0x3b5e3996,0x3b1ce16c,0x3a408c90,0xbba9f7c9,0xbbe73831,0xbb76e214,0xbb38bce5,0xbb1b5ebd,0x3b60bf71,0xbad25f90,0xbb2700ff,0xbbb4b14f,0x3a1b4cb7,0x3a3c0611,0xb6981b47, +0x39ed4a8b,0x38d3b98d,0x394b860d,0x390bae8b,0x38abeb94,0x399700c3,0xb8eb6e0e,0xba26bb57,0xbad0a59f,0xba43d40b,0xbab5eaef,0xbadd9072,0xba950148,0xbb0d14d3,0xbb040670,0xbac9d677,0xb931bf74,0x3aa0cbc1,0x3bcbc223,0x3bb1670c,0xb96d2742,0xbb84ac09,0xbb436b14,0x3b5d90d7,0x3b58bfdc, +0x3b9bdc1d,0x3bfec585,0xba011125,0x3af83861,0x3c0f635d,0xbb9d2e14,0xbc1a8935,0xbbf0f74e,0xbad52b50,0xb9905802,0xb99deb88,0xb8648671,0xb950348c,0xb8f7cf64,0xb91e66ad,0xb8f533e2,0xb8d98911,0xb905fed0,0x386e95e3,0x3aa536be,0x3b045ba3,0x3ae838d4,0x3b2af1cf,0x3b3896f4,0x3ae893e9, +0x3a3288c9,0xb9b9215f,0xba496c16,0xba931f66,0xbafe27b8,0xbb1530fc,0xbaea3a54,0xba16deb3,0x3b211673,0x3c040eff,0x3b469c9c,0xbae8f4bf,0xbbd6ab4b,0xbb439d42,0x3ab32556,0x3af7e2e3,0x3b793a59,0x3b9dd76a,0x3b3aceea,0x39fc00fa,0xb9a21081,0xb99acc26,0x396dfbb9,0x3935ea41,0x3966cfd7, +0x39808310,0x395e702e,0x382527fe,0x39d68c68,0x3a6a65cc,0x3aea46c5,0x3aac83a6,0x392f153b,0x39a0fd89,0x39b4a8a2,0x396fa161,0x3a526201,0x3a0fd798,0x399743bb,0x37c863cb,0xba9465e7,0xbb0332fb,0xbb34557a,0xbb608979,0xbb86f3c8,0xbb887c4a,0xbb6b95ea,0xbad10141,0x39544784,0x3a86bf56, +0xba62171a,0xbb2c82ee,0xbb5200ca,0xbb4c464d,0xbb2d3f4e,0xbb04391a,0xba8c710b,0xba80ae32,0xb9d82e99,0xb9e4cec8,0xb9e76991,0xba359c49,0xba0d9a15,0xb8a2bfeb,0x39d1476d,0x398cb7f7,0xb98cd8b5,0xba8f2806,0xbab8804e,0xbab36e21,0xba8f2edc,0xba68327c,0xb9b45e48,0x3a01235d,0x3aa03e34, +0x3ae2cd7d,0x3b0cb2f6,0x3b19df9e,0x3b0ebb29,0x3aec1551,0x3a5d4008,0xba76be7e,0xbad4b733,0xbb16ef4d,0xbb05cce7,0xbadbaf5b,0xba8de3cd,0xba9e1d63,0xbaa2abd8,0xba338c36,0xba12994c,0xb9d39101,0xb9e59907,0xb9f7cb10,0x38577a74,0x3a65b422,0x3a9bc33a,0x3ae23580,0x3ae9ad10,0x3b0ff8ff, +0x3aba39fe,0x3a7c9a62,0x3a014b0a,0x39351647,0xba008edc,0xba1786eb,0x39010dc6,0x389229c2,0x39823ce2,0x39e1ac9a,0x3a349663,0x3a7712a1,0x3aa4ecff,0x3abef9f5,0x3adbb26f,0x3abc6d97,0x3aa732c6,0x3a9ea92c,0x3a218d11,0xb83728f3,0xba64b7f2,0xba91415a,0x3b215450,0x3b20ea6b,0x3af15eff, +0x3b0e4f7e,0x3ae0d7c5,0x3ad9a5d5,0x3afa948e,0x3af5a361,0x3aff9ea3,0x3ace739a,0x3a8fa300,0x3a9c7ea1,0x3a9fb62a,0x3a85c3c0,0x39ededa3,0x39fd5701,0x3941067d,0x385f4f80,0xba66219f,0xb958699a,0xb8ecc063,0xb943191e,0xb8f4021e,0xb91b2c8f,0xb929223a,0xb9647edc,0x397dcddf,0x3a1a0684, +0x3a70ad69,0x3a9e950b,0x3ac2e11e,0x3ae88404,0x3aedf765,0x3afe2ce7,0x3b063379,0x3b130588,0x3a4bbe9b,0x3a83a1c6,0xb916147e,0xba03e738,0xb9691351,0x3941f867,0xba0fcc51,0xba11e11f,0xba2de151,0xba336f37,0xba18886d,0xba412a81,0xba59229e,0xba495035,0xba6ae980,0xb9851154,0xba96c968, +0xba9e91e3,0xba4b91b1,0x39bad3d7,0x38acf913,0x39027296,0x38edad69,0x38ed7a28,0x390a709a,0x38b17acf,0x395f7ef8,0x3998d69d,0x39c6eaad,0x3a0157b4,0x3a1993c9,0x3a34f6bf,0x3a3afecf,0x3a4939b8,0x3a5a8737,0x3a51d34e,0x39799d4a,0x3a383b4b,0x3a3c7cd2,0x3a23ee5f,0x3af49a2f,0x3ada036a, +0xb92a88de,0x3ad8f2fb,0x3ad117c4,0xb8e12138,0x39696996,0x38ee2756,0xb9ec21b4,0xb8dd1298,0xb8b7a46e,0xb99a4919,0x3ab1e5c3,0x3abda86f,0xb8d69b80,0x3ac51e05,0x3ae51a36,0x3a07a46e,0x3a3c5cf9,0x3a5bf8e6,0x3a813653,0x3a794754,0x3a750699,0x3a5b7b98,0x3a58632e,0x3a5adc95,0x3a9eaed1, +0x3a3b77d4,0x3a303415,0x3a2a5733,0x3a90b746,0x3a97e91b,0x3a64a0b3,0x3a594a85,0x39ea85cb,0x3a98448f,0x3a828c7d,0x39f932b4,0x39935f69,0x3a358583,0x3a298b4f,0xb9f57510,0x39fc8340,0x3a676227,0x39a2f54f,0x3a4a7725,0x39ce7604,0x3997cf76,0x39160b5d,0x3954b7cd,0x3a9b22ec,0x3a444d37, +0x3a986a7f,0x3ac67f9b,0x3ab009ef,0x3af55d91,0x3b05fb97,0x3aecae01,0x3ab696e0,0x3a6698c8,0x3a358a13,0x3a82720f,0x3b133233,0x3a8b3180,0x3a73deb3,0x3a86fa1d,0x3b112c38,0x3b12d41b,0x3a977fa8,0x3a797f3d,0x3a4d9471,0x3aeb1f0b,0x3acbe9ba,0x3a463146,0xb9a278de,0x3a52e167,0x39b7cddb, +0xbb272d62,0xba78f761,0xbae4a290,0xbb423e7e,0xbae28c18,0xba98b49a,0xbabe0465,0xba2c2b92,0xba43ef01,0x39ae5e82,0x3949f259,0x3a891892,0x3ab6acf5,0x3aa5841b,0x3b0929c7,0x3b36c476,0x3b307b8f,0x3b1f7c58,0x3ae68a8a,0x3adb7441,0x3adfb6bb,0x3b73a645,0x3a8b3032,0x3a91f350,0x3ab10816, +0x3b760a85,0x3b747b6b,0x3ae4046d,0x3ae65e2f,0xba1da545,0x3a400bdc,0x38fa8e72,0xba8921d7,0xbb38ba0e,0xb98b594a,0xba5f4b76,0xbb5078e4,0xbab00f8e,0xba88a50d,0xba4136e8,0xb9eae86c,0xba063089,0xbaea7f82,0xba8fada9,0xbac6806c,0xb99b89b6,0x39cdd37c,0x3ae62c08,0x3b416512,0x3b5e54ee, +0x3ba0519a,0x3bb95b31,0x3ba175e9,0x3b4ffbb7,0x3a8e998d,0x39d1c7ed,0x3b037e61,0x3bb89a9f,0x3b1208b0,0x3abf7b1f,0x3b160151,0x3bbf4ec7,0x3bb162b1,0x3ab92ae4,0x3a38181a,0x3c042933,0x3beda7a0,0x3bda3a84,0x3bb564f7,0x3b9d39fd,0x3b8b75d2,0x3b3eaf44,0x3ab6b999,0x3ab07b88,0x39a63a91, +0x3a12fc7f,0x3951b693,0x39f36f00,0x39629a56,0x3aaea815,0x3a9aee84,0xbb3cc51e,0xbb7b761d,0xbb850be1,0xbb86946e,0xbbae8831,0xbbb81994,0xbbacc4f4,0xbb29ae7a,0x3a50b8e8,0x3bab7cb9,0x3b829e94,0x3aae3726,0xbaec4bf3,0xba86565c,0x3a22b652,0x3b5ab867,0x3af4c836,0x3b51c7ae,0x3bc8f0da, +0x3c05f80a,0xbb0ff498,0xba309705,0xba47354a,0xb98ecc35,0x3b1b05e3,0xbaa20fc2,0xbb192bf8,0xba3f6198,0xb9dbac4b,0xb9959ef5,0xb95d43bf,0xb95a5258,0xb8dee033,0xb9b3a69d,0xb9ef25e0,0x392851b9,0x3a7926bb,0xb8b3d67f,0x39b5ae2b,0x3b017bbe,0x3b7e267c,0x3bb31f68,0x3baf1fe3,0x3b1649ff, +0xba894ccf,0xbb738276,0xbbc9b197,0xbb7897df,0x3b17394e,0x3b760197,0x3b47deda,0x3b1b430f,0xbb3650fe,0xbb9e75bf,0xbb551037,0xbb2e0e33,0xb9ea8ff2,0x3ba988bf,0x37fe0b51,0xbb016eac,0xbb86aca8,0x3a0882f9,0x3a56fd8b,0x394a81dd,0x39983bcd,0x39037129,0x391e3fda,0x39053e10,0x389a6136, +0x395b289a,0x39250b4e,0xb9a81456,0xba3c9be1,0xb8d339a2,0x39d5fc74,0xba0b7d87,0xbad7395c,0xbb027a55,0xbaea5026,0xba772a8f,0x3a9c091d,0x3b79768a,0x3bfcd1b9,0x3bb56516,0xbab98e07,0xbb90c0b7,0xbaba1c37,0x3c076ead,0x3c18c65e,0x3c2d6458,0x3c41321f,0x3b01073b,0x3b2fdb0c,0x3c0f034e, +0xbb8bc5bd,0xbc1c7831,0xbc05389a,0xbacab301,0xb95ad8c1,0xb99ba6fb,0xb8aeb678,0xb9219edc,0xb8fbed05,0xb90d7494,0xb8d41c6e,0xb8eec0e1,0xb905113e,0x38edbfc8,0x3aa6b53a,0x3b06969a,0x3b2bfadf,0x3b38578f,0x3b2cf754,0x3b173cf7,0x3ab3a8c1,0x3a2e3e79,0x39773652,0xb6cfe731,0xb914ba11, +0x38e8827f,0x3a35b782,0x3b2d1e91,0x3bab3b17,0x3c13f0f2,0x3bb3f864,0x3ad9b3ca,0xbab73904,0x3992e832,0x3bcdde24,0x3be6cd52,0x3bebbc17,0x3bee2772,0x3b862e23,0x3aa2c614,0xb8bb4cb0,0x389b59c1,0x3951c0a3,0x39161c78,0x39634a4f,0x396db322,0x393012b6,0x3907e2a4,0x39e21811,0x3a7ed9dc, +0x3af30146,0x3b18adf1,0x3b0b0cc0,0x3ab1ed63,0x3a73756b,0x3a5e8827,0x3a85d4da,0x3a9dc12f,0x3ab6a6c6,0x3afdc13b,0x3a6de451,0x3a02484c,0x3a0b3c42,0xba92fd42,0xbae6f20a,0xbabadb90,0x3a256c4a,0x3b53247b,0x3b913b61,0x3bc4d368,0x3a6ed2d8,0x39d6c479,0xba9d7b9b,0xbab5b106,0xbac0c4e0, +0xba897b57,0xba5860f4,0xba2b0e1a,0xb9a355e6,0xb9a04bd2,0xb9fc4a42,0xba10ec9f,0xb9ec2b5c,0xb93d40a0,0x39db4c8c,0x3a39a485,0x3a112403,0xba131016,0xba9e52a7,0xba9b3ff5,0xba926b17,0xba546cce,0xb98aa92e,0x3a91650a,0x3af84f9e,0x3b10ebd1,0x3b0ea8d5,0x3ae80ec3,0x3a91791b,0x3a8bdf9c, +0x3a200277,0xb9d95ab1,0xbac582d1,0xbaef929e,0xba8236ae,0x38fca434,0xbab493fa,0xba8735ed,0xb8f3b7fd,0x3882a7bb,0x39930de9,0x391c062c,0xb88ea227,0xb9a4a571,0x39a6fcaf,0x3a2d5f1a,0x3ab6a5a0,0x3aae4115,0x3addb0d4,0x3b010e74,0x3ad321aa,0x3aa2490d,0x3a8bac3d,0x3a606702,0x3a427a32, +0x39062f68,0x396be79c,0x39e991ed,0x39eb9943,0x3a3fd886,0x3a85978a,0x3ab44c47,0x3af08298,0x3b16b051,0x3b3292a9,0x3b1b9445,0x3b010b42,0x3ae191cf,0x3a8b8912,0x39b0126b,0xba564900,0xba7e56ce,0x3b2c4feb,0x3b37f91f,0x3b24414f,0x3b18fac8,0x3b1cf8b7,0x3b1043f1,0x3b16735c,0x3b1a6242, +0x3b1a68c7,0x3b231125,0x3b2c279d,0x3b2a6091,0x3b1db033,0x3b247653,0x3af4eaeb,0x3ac072ad,0x3aab0e78,0x3a2f4b26,0x391a8267,0xb8c77bbb,0xb8b778d4,0xb7c62317,0x37790bdd,0x3832ee33,0x382e613f,0xb65c1063,0x39984f38,0x3a12942c,0x3a79a0e8,0x3ab51ad1,0x3af7a791,0x3b1be967,0x3b1649ce, +0x3b1ab2a7,0x3b1dc991,0x3b2b8448,0x3a986a0f,0x3a96acb5,0x3ade0bf9,0x3ad099b1,0x3a19adc5,0x3ae21761,0x3ac9538a,0x3a3423b8,0x3a3113d9,0x3a25b472,0x39fb8138,0x3a0af2e6,0x3a052b37,0x3a05deac,0x3aceafa1,0x3acbc112,0x38a2143a,0x3a8caed4,0x3a876bf4,0x39d94444,0x39f58abf,0x39f3ed7d, +0x39ec17af,0x39e8de48,0x39eba691,0x39d55a5e,0x3a1a270a,0x3a3b5a46,0x3a549fd3,0x3a75fb71,0x3a87178d,0x3a9ea818,0x3a9c685e,0x3aa1ca26,0x3aa57043,0x3a9f3a63,0x3a6792d4,0xba762568,0xba275ca6,0xba4492c3,0xbaa0e2ff,0xb9fef1c9,0x3aac5963,0xbabb31d5,0xba2b8cce,0x3a02102f,0x3a62c7aa, +0x3a5f3aa5,0x3a3c26c4,0x3a79e548,0x3a882fb0,0x3a96c2d7,0xba66002d,0xbad6e836,0x3ad934ae,0xba0491e6,0xbaa4c8cb,0xba730f8d,0xba45c4c1,0xba59ca6a,0xba349a46,0xba4d8ca6,0xba589d8b,0xba730ba1,0xba6ebba3,0xba69a405,0xba03b8b4,0xba90cf53,0xba9ea7e6,0xbaa1882d,0xba7014dd,0xba46a269, +0xba1d57ac,0xba3ec025,0xba3ae185,0xba8af35c,0xb9260bc3,0xbaafcbcb,0xbab6e493,0xba08a85e,0xba4a612b,0xbae0042e,0xba6d147e,0xba89ddd2,0xbafa966f,0xbac3f476,0xbaa79966,0xbabc22b4,0xba909a55,0xba85be5c,0xba50b917,0xba39bad9,0x39ad9f04,0xba429c89,0xb9dfdd3c,0xba0b0ca3,0xb9be6ddd, +0xba3ead95,0xba88c540,0xbab9ff7f,0xbac22333,0xba9c5f90,0xb890b907,0xbac48323,0xbaf3ff37,0xbae5cbbb,0xba813a1a,0xba1b4ce5,0xb9e03ab8,0xba46cb3b,0xb8e3b9fa,0x35990397,0xba6f10ed,0xba80fabc,0xbaaad8e7,0xb9316b91,0xb9d3c8ae,0xbb3e7e53,0xbabd6110,0xbad7b00b,0xbb5b4cfa,0xbaee3c83, +0xbada9f0c,0xbafb91cc,0xbae9e325,0xbb03aa55,0xb9f6ebe8,0xba76ad7f,0xba39bb72,0xb9f1d39b,0xba2dd2e8,0xba0c4963,0xb92b9073,0xba1bf898,0xba640197,0xbac6d737,0xbaa82646,0xbaa42ad6,0x3a31c5e7,0xbb204ebc,0xbb3a87e2,0xbb20a5b5,0xba7bbc15,0xb81fed0d,0x39d4d656,0xb7625ba2,0xba593f83, +0xba3e470d,0xbadc2d78,0xbb1ad97c,0xbb51d177,0xba31b809,0xba2d0d52,0xbb1c9333,0xba560f0c,0xba10ece8,0xb983c788,0xb93d5048,0xb9a09d86,0xbaa05897,0xba9e61e0,0xbaf48ba7,0xba608aee,0xb98220b9,0x3a0695e7,0x3aa0ce02,0x3a6fbad7,0x3a7362cf,0x3a741dc7,0xb997e4a1,0xbaf9c51e,0xbb5be130, +0xbb5e12da,0xbaca443f,0x3aef83d0,0xbb2291e1,0xbb808883,0xbb433634,0xba1fa6c9,0x3a097fae,0x39a3b983,0xba369439,0x3baa235c,0x3b7aff82,0x3b5d43ef,0x3b648177,0x3b849da3,0x3b5becd7,0x3af82d8f,0x3a427d38,0x3a49cea9,0x391b56bd,0x39ab48c0,0x3863532e,0x39d15683,0x37fc153a,0x3a9cee7e, +0x3aab1cec,0xbb2c24e8,0xbb8b03b9,0xbba9ded4,0xbbc0fe69,0xbbe6369e,0xbbd0889c,0xbb906112,0xbb0b7b8d,0x3ad658aa,0x3be18a99,0x3b885315,0x3a16c9ff,0xbb567edc,0xbb58d0ed,0xbb402be4,0xbaf11bf8,0xbb47137b,0xba49899f,0x3b85255f,0x3baca2ba,0xbaacc73d,0xba9c0b65,0xbb3bd775,0xbade43cd, +0x3a434197,0xbaaa35ab,0xbaca7668,0xb99e0097,0xb9911b44,0xb926d6a8,0xb9006f5e,0xb8f46612,0xb8e811e3,0xb937e62e,0xb9fac77e,0xb9bcd213,0x397be914,0xba0d14af,0xb9338186,0x39b15845,0x3a922173,0x3ab00aaa,0x3956f14e,0xbab8e415,0xbb6bcaed,0xbbb6bc0b,0xbbde5d22,0xbb706abe,0x3b2eb82e, +0x3b33dad5,0x3a9df9d8,0x39ef4bf3,0xbbbb64de,0xbbe90022,0xbb627d5d,0xbb4aab86,0xba0a736c,0x3baf26c4,0x3a97bf34,0xba882d31,0xbb608618,0x399668ae,0x3a1f4b33,0x39097784,0x39252f48,0x38cc61a6,0x38b2ea11,0x38c3a91d,0x388e8e10,0x390dcf5d,0x394251c3,0xb94f2ee2,0xba60fa74,0xb9eac5e8, +0xba2569b3,0xba8a0ecd,0xbac5db1a,0xbb0986f5,0xbaec1bee,0xbb303d60,0xbb012758,0xb7829430,0x3b4e3277,0x3ad0a9aa,0xbb852cb5,0xbbbc643d,0xbb99cee3,0x39a9c027,0x3929fc6d,0x3acb492c,0x3b3a8844,0xb9b0828d,0xbb845bd9,0x3bd338ce,0xbb8f13f4,0xbc2833d2,0xbc0a9e57,0xbaf82e6b,0xb9175845, +0xb938dfd3,0xb8908347,0xb8f4740b,0xb8b13759,0xb8eaca26,0xb8d77d28,0xb8a48e56,0xb9513efe,0xb9439750,0x3a1f1cb1,0x3ad7d790,0x3b0cf563,0x3b17a739,0x3aae7539,0xb84ea4dc,0xbabcb8d1,0xbb1f7175,0xbb2a1498,0xbb0bc1e0,0xbb300d69,0xbb2465fc,0xbb1a1938,0x3a4ab281,0x3b5f0a67,0x3be9bf07, +0xbb23c797,0xbc19439c,0xbc5ec92f,0xbc134f83,0xbac8db20,0x3b5796f2,0x3bfdf2f0,0x3befea55,0x3b5efb68,0x3a93af0e,0xb9015f97,0x384d5a1a,0x39531771,0x38f5024f,0x39323484,0x3947cb9f,0x395689cf,0x38bedd67,0x39afcc67,0x3a72b6d1,0x3af1a9c2,0x3b08766c,0x3adb725a,0x3a8bc7f4,0x3a6d9215, +0x3a6df1a5,0x3a80c9ad,0x3a38d96f,0xb76cdc8f,0xba7e310a,0xbb233c09,0xbb6a154c,0xbb968837,0xbba5636f,0xbbc06fff,0xbbcc052d,0xbbb4a01c,0xbb7435af,0xbb295c92,0xbb19f3de,0xbaa53142,0xbaf7c876,0xba9af2c7,0xbb0d8c48,0xbaf1751b,0xbad08740,0xba83ec78,0xba45bf76,0xb9a6f28f,0xb98e46d5, +0xb9b5ffd9,0xb9ef7862,0xba05688c,0xb9a69eb3,0x39049890,0x396e09f2,0x37bb42cc,0xba17582c,0xba6d299b,0xba721c27,0xbaaaf029,0xbacaeae8,0xbab5345b,0xba626bd1,0xb9c719a8,0xb7fed6c1,0x3998e7a5,0x3a2d17e0,0x3a659d75,0x3a2fc522,0xb9c75ddb,0xbb35b54d,0xbb35d841,0xbb482665,0xbb201c6f, +0xbae57ec1,0xbb2815cc,0xbb16b49c,0xbae794f2,0xbac3f7a7,0xba6cf52f,0xba610329,0xba41dbf1,0xba42e6b7,0xb8c475a5,0x39973174,0x3a559760,0x3a5f97a9,0x3ab63d65,0x3acc887b,0x3abba0c6,0x3a9056e8,0x3a888c37,0x3a20e1c0,0x38840d30,0xba101e8e,0xb80a536e,0x39a615b9,0x3a24bb75,0x3a779210, +0x3aa7f040,0x3add5351,0x3ac1b881,0x3a9c67c8,0x3a6ee502,0x395fa679,0xb9a361d4,0xba4ff51f,0xba9206c0,0xbad3fda8,0xbb1b30b1,0xbb1df223,0x3ad078e8,0x3acd3c23,0x3b254cf3,0x3ad7ea49,0x3ae5d10d,0x3ae55bd4,0x3ad6f5ca,0x3ae023de,0x3ad6de82,0x3ac9c2dd,0x3ad589e1,0x3acbbe01,0x3ad84fa6, +0x3adbd556,0x3ab6d96e,0x3aa40690,0x3a3bbe69,0x3a1cecfb,0x39ab02b1,0x39b58b39,0x3a194ec9,0x39ef360b,0x39fe1f9b,0x39f7edce,0x39ed864a,0x39f5e88b,0x3a1af330,0x3a32b17e,0x3a43c63e,0x3a57a7d6,0x3a5e8ad6,0x3a4f57e7,0x3a63cf56,0x3a8294e4,0x3a927d86,0x3ab1ecfd,0x3a19460d,0x3a03e5f4, +0x39abbab3,0x3a376991,0x3ad12f2c,0x39856c24,0x3a15bb91,0x3aa505b8,0x3aace7cf,0x3ab442c9,0x3abb2175,0x3ac47aef,0x3aca496c,0x3add113d,0x3a0e63c1,0x3986f1c2,0x3a9bf0b3,0x39a07b62,0x382445d3,0x39f9ca23,0x39d28f4e,0x39d811e3,0x39e5f5c7,0x39e92fd5,0x39f2e5de,0x39efdbdb,0x39ed893a, +0x39e48fa0,0x39d78bbe,0x39cd05ff,0x39c2c71a,0x39b25856,0x39e09321,0x3a016dab,0x3a16abf8,0x3a0cadd6,0x39b6f8cc,0x3a8bae8c,0x3a820c60,0x3ac2a43a,0x3a6e5f96,0xb98263d4,0xbb044b73,0x3aa38e8d,0xb7daa6c2,0xbb008cc9,0xbae581e6,0xbaea10fc,0xbb0478c6,0xbb0171e8,0xbb0400bd,0xbb0597b2, +0xb9bba9da,0x3a57eeed,0xbafffa40,0xb97ac2f4,0x3a4aae8c,0x3aa758fc,0x3a867ad4,0x3aa22273,0x3ab76ef5,0x3aa9c27c,0x3aa5f12c,0x3a9c8635,0x3a9934cc,0x3a9c1b70,0x3acfdfda,0x3a91afc6,0x3a8cd532,0x3a8eba78,0x3abbe97f,0x3abc44d8,0x3a870dee,0x3a95a5e7,0x3a688d3f,0x3acafd4d,0xba5e47f5, +0x3a2f8027,0xb995fc88,0x39145595,0x3a210c8d,0xb9f962c9,0x3a4fd7f1,0x3a5bf365,0xb993d827,0x39caa0fe,0x39547843,0x39a54471,0xba08fb4b,0xb998561e,0x3a50c348,0x3a053639,0xba059f84,0x3acf3cd7,0x3ae8ea21,0x3b0ad01f,0x3b1fdaec,0x3b0269d9,0x3ad1ed22,0x3aa241ed,0x3a8e2aca,0x3ab97a14, +0x3b2c2106,0x3ac3a3ed,0x3aaef624,0x3ac032fc,0x3b17fb44,0x3b0e7fdd,0x3a6f8678,0x3a8783c6,0x3ab96bfc,0x3b08e492,0x3a3af941,0x39deccc9,0xba5ab90c,0x39e86536,0x38caea36,0xbb05c119,0xba877eee,0xba922e5b,0xbb20f8ac,0xba8ec8c3,0xbac4e81f,0xba6da034,0xbab908a9,0xba9d1f7a,0x39aeb345, +0xb91299b4,0x396b2d76,0x3a983c15,0x3b03413d,0x3b228d03,0x3b5f0566,0x3b3c36ca,0x3b2a0b07,0x3b054434,0x3b035f2b,0x3b08b8a2,0x3b869363,0x3ad7a4c1,0x3add3845,0x3b07f2c4,0x3b730925,0x3b63a414,0x3aad18e0,0x3ae6a9e1,0x39891ae0,0x3a74b15a,0xb9cead75,0xba622fc9,0xbb1efc46,0xb8a8a322, +0xb9c597aa,0xbaf0bf6f,0xb9de0fe4,0xb9a27086,0xb906f378,0xb9460bd7,0xb90d3357,0xba56fa84,0xba8747aa,0xbac5c41b,0xba1a7f4f,0x397b21a4,0x3a1bf8b1,0x3b1d949c,0x3b7c7d0f,0x3b9fc889,0x3bc1eccb,0x3b93456b,0x3b33dbba,0x3a94f377,0x3a4976ba,0x3b25897d,0x3bc2f753,0x3b357e70,0x3af788d9, +0x3b381fd8,0x3ba853cd,0x3b89759a,0x38ec1671,0x392d3541,0x3c155e67,0x3bca8728,0x3b9262e6,0x3b860c5d,0x3b66d1ae,0x3b3aa77d,0x3ac709db,0x39fee66f,0x39dd4e7d,0x38b95be4,0x395e94c4,0x386d5244,0x39901ebe,0x3684e2db,0x3a90d1df,0x3adc7bf1,0xbad86b6a,0xbb25f4e1,0xbb79951f,0xbb5f6fa9, +0xbb50b537,0xbb757d83,0xbb135ddc,0xba17cf52,0x3b3d7ad9,0x3beda4eb,0x3bb41fc3,0x3b2945af,0xb999f1f9,0x39832bf5,0x3aedacda,0x3b904920,0x3b1b83f0,0x3b845583,0x3c04fc78,0x3c159ac1,0xba2c1168,0x3a0734b0,0xba9842c6,0xba262d48,0x3ac2c169,0xba2aa501,0xba77e2ca,0xb91bc646,0xb948b947, +0xb8a9005c,0xb8be7c78,0xb8a7b8f6,0xb8c12f2f,0xb8c0f450,0xb9ccb6fa,0xb946b987,0x3a1d13b6,0xb9f95f74,0xba5c1ed5,0x3a4065ba,0x3b5f32b9,0x3b9d4904,0x3bb18852,0x3aec0368,0xbaf57071,0xbba46039,0xbbdb69f7,0xbb5f71ef,0x3b5824b3,0x3b3a63a3,0x3aa299e3,0x39e30a03,0xbb93f950,0xbbbe5754, +0xbb71622d,0xbb266ee4,0x3a92cc9d,0x3bd02baa,0x3ad06a7b,0xba236f78,0xbb3ac625,0x3933a040,0x39dbc35f,0x38b3776e,0x38c44d16,0x3878df3c,0x3866148b,0x3898a9cc,0x383a56ab,0x38c98c2d,0x3910eb98,0x3950b833,0xb9eccb22,0x3a27d706,0x3a65598a,0x3a1e715e,0xba0a2aa0,0xbae16af9,0xbab143e2, +0xb6981bee,0x3b4c6752,0x3be53b48,0x3c174af4,0x3bc126ca,0xbb0dfa84,0xbae401b2,0x3b1574e1,0x3c24cf35,0x3c3566db,0x3c36e76b,0x3c1ece3a,0x3b211d84,0xbaf1bb3c,0x3b697e34,0xbb8f4686,0xbc117997,0xbc0ab503,0xbac05d06,0xb900b07c,0xb8ae1194,0xb8832de5,0xb8600292,0xb885dd61,0xb8aa1dec, +0xb897459e,0xb84386fc,0xb939caa5,0xb9308ab9,0x3a067796,0x3ade5b76,0x3b01a081,0x3b23bbc0,0x3b2b20b3,0x3b0f921b,0x3aac2a9f,0x3895b5d3,0xba6b5415,0xbaa5c682,0xbab10957,0xba534649,0xba5b9677,0x3b462eaa,0x3bb4743b,0x3c0aa16f,0x3b238f78,0xbab090ad,0xbafb33e9,0xbb40497c,0x3bd9f4ce, +0x3bf7369d,0x3beac29e,0x3c050772,0x3b7283c9,0x3aab4fb8,0xb869ceb8,0x38f910a6,0x38b4026d,0x38872d6a,0x38eba03a,0x3915f9db,0x390d6272,0x38672a2f,0x397e7a78,0x3a56505f,0x3aeaaca2,0x3b39877b,0x3b23be33,0x3b0f8e22,0x3ac65169,0x3a8189fd,0x3a9ab8a2,0x3a8e6d6e,0x3a92d2ce,0x3ab27fa4, +0x390c37cc,0xb9bce259,0xb95f21b9,0xbab4c1a0,0xbad8a81d,0xba24565c,0x3ac3b4d9,0x3b697d99,0x3b9c2310,0x3ba28fce,0x3ae497d2,0x3a4f510d,0xbac98a24,0xbaa5944f,0xbac4c195,0xba81bd75,0xba25325c,0xb9f419d4,0xb8d28f68,0xb905eac3,0xb9710ad1,0xb9a5c7b3,0xb99f1263,0xb97f250a,0x396a34ce, +0x3a00d875,0x3a19a18d,0xb9b2e427,0xba5a6339,0xba911498,0xba669827,0xba1f0242,0xb9c87bc3,0x39c63d66,0x3a30f04a,0x3a359e49,0x3a27e105,0x39ae407f,0xb96d7a8f,0x3923ddf2,0x39dde2f4,0x39ece6a9,0xb99e17b9,0xba1f3abe,0x39141a71,0x3a614b5e,0xbacdaf4b,0xbae7ad3a,0xbaadae9b,0xba6ec210, +0xba632bcb,0xba3e9911,0xba33e9eb,0xba21ed32,0xb970c5b6,0x38fd725c,0x3a0c9105,0x3a294a5a,0x3a67cfa0,0x3a9ad171,0x3a9e737a,0x3a997d34,0x3a9bf13a,0x3a6c9fa3,0x3a20a197,0x39b9630b,0x3a4420fc,0x3a605743,0x3a81afd2,0x3aaac042,0x3ad99c40,0x3b06689f,0x3b110164,0x3b1a7de8,0x3b1eb285, +0x3affa6ad,0x3ab0e7ff,0x3a805a8f,0x39b9ffe0,0xb980692a,0xba9686aa,0xbab3a79e,0x3af3051f,0x3af4c6a3,0x3ab67b90,0x3ae60688,0x3ae4aae6,0x3ad71fb2,0x3afd0ad6,0x3b028926,0x3b11ce75,0x3b1eca05,0x3b23e7eb,0x3b33c44a,0x3b37e695,0x3b3f7ca7,0x3b133f05,0x3af920c6,0x3af1703a,0x3ab49ae7, +0x3a32d0d0,0x3a4015ba,0x3a254f6e,0x3a307b88,0x3a32f676,0x3a2ec560,0x3a22a910,0x3a1607dc,0x3a59f529,0x3a8fee0c,0x3abe0e99,0x3aef8370,0x3b1412d3,0x3b2b2f54,0x3b1c7663,0x3b1171a7,0x3b050371,0x3b02c456,0x3abb0879,0x3ab7b229,0x3ab8dd7f,0x3a7cc432,0x39059d7c,0x3ad48667,0x3a81f8c2, +0x39382695,0x393e2f45,0x392cc4a7,0x39018145,0x38f0c784,0x388fb4d3,0x390b09dc,0x3aa0638a,0x3ae95d08,0xb8dcfd51,0x3a701698,0x3aad44aa,0x3aa4bbf5,0x3a9ee9c6,0x3aa36c71,0x3aa1bdfc,0x3aa316db,0x3aa575c4,0x3aa16e6a,0x3ab3f8fe,0x3abeb3b9,0x3ac5cad7,0x3acede20,0x3ad49a1c,0x3ae8139d, +0x3adadb8e,0x3ad97e6c,0x3ad79ab3,0x3acb7f52,0x3ad841bd,0xbaac18e8,0xba78731e,0xbabef5ba,0xb9c17693,0x3a595ecb,0x3aff5a46,0xba7adf16,0x3a0f422c,0x3ac43b2d,0x3af4c32f,0x3af2692c,0x3acc9b67,0x3aeef259,0x3af293db,0x3afc3120,0x39a1ea75,0xba899cb9,0x3b16c57a,0x3a351925,0xb9d70862, +0xbad38d11,0xba9017ce,0xbaa00548,0xba8ee36c,0xbaa46176,0xbaa81160,0xbaa72260,0xbaa7ca1f,0xbaa62f1b,0xba76b49f,0xbabe84e3,0xbac74f11,0xbac53466,0xba9776b9,0xba8322d3,0xba741c6e,0xba88767c,0xba91d3d3,0xbaa2fbc7,0x3a88957c,0xbaac3ebd,0xba4b3fde,0xb92628af,0xba31b002,0xbaa788ac, +0xba80ca09,0xba80d6fc,0xbab7ef2c,0xbac80c1c,0xbaba59f2,0xba807530,0xba6f61fc,0xba808c75,0xb9b55638,0xba3fd414,0x3a9281ac,0xba8a4c8e,0xba88ded1,0xba82d729,0xba816a94,0xbad3245a,0xbafebee6,0xbb013eef,0xbb0083d1,0xbad2874b,0xba251741,0xbaf15090,0xbb0602ad,0xbaeaba32,0xba7231e7, +0xba23d7f7,0xba4701ab,0xba7ccfd0,0xba2b8812,0xb9810a9b,0xb8d5eb37,0xba3d3b04,0xba60f46b,0xb7ce1392,0xb9540905,0xbb06acde,0xba58bee7,0xba9ff23d,0xbb02d4c0,0xbae1dae5,0xbaab8b64,0xbaade28a,0xbacfd0ea,0xbb08ddb1,0xb9286dca,0xba5858a4,0xb9549895,0xba32b69b,0xbab5c9bb,0xba84d1d6, +0xba448e5e,0xbad256d7,0xbaf219bf,0xbaf0e9ba,0xbadd556b,0xbad84d2f,0xb9045ebc,0xbb317326,0xbb399511,0xbb13eed6,0xba07169b,0x396362b3,0x37de0dfc,0xb8b82899,0xbaac7601,0xba3f1e26,0xba40a310,0xbb01222a,0xbb25d629,0xb9de3582,0xb9c2495b,0xbaa1a161,0xb962cbd8,0xb8c05008,0x392852a9, +0x391b36af,0xb8ae04b2,0xba0a83d4,0xba8fb759,0xbb08b340,0xb9f00872,0xba60bf73,0x3a13f07f,0x3a01cc32,0xb97ab574,0x394c11cb,0xb905a05f,0xbb0d9884,0xbb7778f6,0xbb8718d3,0xbb793d33,0xbafa356c,0x3a3ceed9,0xbb2ee636,0xbb643054,0xbb0e3ba8,0x3a0b167a,0x3a8f0f43,0xb9955e22,0xba309d83, +0x3b84729f,0x3b6f80f0,0x3b884b40,0x3b685917,0x3b6d12ae,0x3b207851,0x3a6671f3,0x395c82ec,0x3982c852,0x37e98c90,0x37f44ea5,0xb89f9ebe,0x39558b0d,0x368fadc7,0x3a737239,0x3aaf086f,0xba86939f,0xbb59e7d0,0xbb702d2e,0xbb942388,0xbbe3a8ab,0xbbc7a1d3,0xbb8d8164,0xba946249,0x3b20f909, +0x3bd63ccd,0x3b3cf1ae,0xba932332,0xbb90b9a4,0xbb8e1033,0xbb6aaf0c,0xbae20110,0xbb4366f9,0xba11296c,0x3b9a7e61,0x3baa1c3b,0xbacf6741,0xba2ec531,0xbb00eb53,0xbacc6b6e,0x38d54276,0xba2364dc,0xba06131c,0xb872b941,0xb9026436,0xb81adf1c,0xb6f4c9a3,0xb70f2767,0xb8818ad6,0xb8b58db4, +0xb9ae6387,0xba0f73b7,0x3965522f,0xba385418,0xb9f35c41,0xba1001ad,0x36c19824,0x3a46aa44,0xb9ba8fce,0xbb0a8bf8,0xbb8c6cb3,0xbbc4956a,0xbbccb4ad,0xbb29b385,0x3b6395bc,0x3b007c96,0x39797f6d,0x3980fc75,0xbbad6a77,0xbbc9ce92,0xbb4062f1,0xbb2edcb4,0x3b0320c0,0x3bd641f6,0x3b429b75, +0x38cf965b,0xbb045928,0x38af4ddd,0x39b60ee6,0x372e850a,0x38ab3588,0x37d4b303,0x37859eba,0x37aca93e,0x384a387e,0x384e58c2,0x396496b1,0x38d9eb2d,0xb978ea3d,0xb7986560,0x39d76413,0xb8388a7e,0xbaae6505,0xbad91940,0xbaacebf3,0xbb19f9b7,0xbaa2a244,0x3aed60c1,0x3b23ee92,0xb9c0c293, +0xbbd152c8,0xbbc2c573,0xbb790327,0x3a82f41b,0x3afada23,0x3b3e847e,0x3ae3c1b5,0x3a86f853,0xbbe041bb,0x3a5e5694,0xbb8af7a2,0xbc0a07b3,0xbbfe631b,0xbade940c,0xb7e61286,0xb8af5180,0xb8529771,0xb81bc68c,0xb7e3925c,0xb82d9703,0xb8821419,0xb8561d11,0xb91aa81a,0xb98918bc,0xb8829e5d, +0x3a8608b3,0x3b0646dd,0x3aedbdf6,0x3a02e0ea,0xba2dbb6d,0xbb00742a,0xbb359b14,0xbb4705bd,0xbb1cc6c3,0xbb1d11d5,0xbac8b07f,0xbacb8c26,0x3b564fdb,0x3b9e4d78,0x3ba2d0dd,0xbba35851,0xbc35360a,0xbc536981,0xbc1b651a,0xba1d58cf,0x3bd2eccf,0x3c27f98e,0x3c0d5558,0x3b5d887d,0x3ac5a01d, +0x38055dcc,0x390b229e,0x38acdb40,0x383ea274,0x38870cbd,0x38a184b1,0x38f75e99,0x38ca45fd,0x39046950,0x3a29b2c4,0x3ab8f7ae,0x3b1ff261,0x3b3264b5,0x3ae6d3fd,0x3ac40e71,0x3abb75db,0x3a9976ad,0x3a86cfbd,0x39c99452,0xba0e3558,0xbb096f35,0xbb4b44c1,0xbb80e138,0xbb9c9dc2,0xbbb70ba7, +0xbbbb5c44,0xbb9a2103,0xbb581f73,0xbb285b28,0xbb2a3ede,0xba39997b,0xb9bf5b05,0xb64d361e,0xba847446,0xba85b1e2,0xba807af7,0xba3f1e5f,0xb9b95862,0xb8f76f03,0xb86e2c31,0xb91a6d7c,0xb918e110,0xb98975d2,0xb9a146eb,0xb845a13f,0x392b450a,0x3986ed09,0xb984c1a9,0xba4ff003,0xba5f0f44, +0xbab64bf5,0xbae74f6a,0xbaded5ec,0xbaacf52c,0xba91ac74,0xba8ebe50,0xba6e0ef6,0xba3d8d27,0xba1fb4dd,0xba22d9bc,0xbab1ce02,0xbb5b1336,0xbb459fe2,0xbb3ab000,0xbb00562c,0xba853275,0xbb523de3,0xbb3cd8c9,0xbb01a88e,0xbb00ad50,0xbaa833f4,0xbaa59ef8,0xba8ca9d0,0xba82822c,0xb9c99f1f, +0xb9995ff0,0x399562df,0x376df9e0,0x3a29d24d,0x3a2bf94c,0x3a764dac,0x3a53b5f4,0x3a89f275,0x3a3b897b,0x39e0cb8b,0xb9a04225,0xb81e5e9e,0x39e6cc2d,0x3a3d4f4d,0x3a936ef8,0x3ac7fa24,0x3b03b985,0x3ac98f22,0x3a8af074,0x3a13e691,0xb9ad347f,0xba8cd1f7,0xbaeaa238,0xbafb00a2,0xbb14833d, +0xbb3dfd8d,0xbb3ebcc8,0x39ebd6cf,0x39ce50b8,0x3af57324,0x3a3ccafe,0x3a9ed075,0x3aa500a5,0x3a89bc63,0x3aa17b8b,0x3a923f17,0x3aa9f0b1,0x3ae6761f,0x3adaf24d,0x3aebcb11,0x3b050dd2,0x3afee9b1,0x3ad7e955,0x3a948248,0x3a72a7ca,0x3a84dd50,0x3a170d43,0x3a542b18,0x3a36eab9,0x3a3330a3, +0x3a2f8b0e,0x3a2147b7,0x3a2bad16,0x3a07a0ac,0x39e4fde1,0x39c10add,0x39b14dc1,0x398fcc06,0x38997162,0x38a4ea77,0x38f1e905,0x3934c6d4,0x39b08669,0x39c7d298,0x39068f6b,0x3a36b12f,0x3aadf878,0x3b04f318,0x39f893d8,0x3aa356fb,0x3afbc93b,0x3b087b54,0x3b0e2d2a,0x3b0da4b0,0x3b1a602e, +0x3b219315,0x3b2b2874,0x3ac7f7b8,0x3a545b4d,0x3b0cd078,0x3aafd72d,0x3a49d032,0x3a112b8b,0x3a256084,0x3a20cb68,0x3a2a670d,0x3a2bf584,0x3a2f52e3,0x3a32a3c2,0x3a21c229,0x3a113ba3,0x39f29521,0x39c31c2f,0x399962d5,0x39640bab,0x399b99af,0x39b18e1c,0x39c8d33e,0x39ae9225,0x3a10329a, +0x3a2a6dac,0x3a314110,0x3ab0e70e,0xb9dd2d39,0xbad1c3de,0xbb11fe8a,0x38c29baf,0xbaacbfbb,0xbb1bd120,0xbb138554,0xbb10c649,0xbb0e7705,0xbb1834b5,0xbb1b4609,0xbb0e8c7c,0xbadcb6ee,0xb9d5a69a,0xbb081bab,0xbac6207c,0xba16ec94,0x3a858e53,0x3a2173c9,0x3a4e8655,0x3a781cb6,0x3a4899d3, +0x3a3f7d7d,0x3a3a7c69,0x3a3c0367,0x3a44c594,0x3a8dd28f,0x3a2cda5a,0x3a24bd57,0x3a387c96,0x3a70e8eb,0x3a741121,0x3a242d64,0x3a4c2e26,0x3a4ee3a4,0x3a86379d,0xbaed2265,0x3967a951,0xba7cb273,0xb9fd76e6,0x38e86d6c,0xba3ae6e7,0x39e71a5c,0x38c8876e,0xba954df9,0xba2c9330,0xba197149, +0xb9188ce2,0xbaa13197,0xba73bfb9,0x379276bc,0xb8e66876,0xbabd2456,0x3a3a237f,0x3a9cf3e6,0x3aa0cc1e,0x3accb4b1,0x3a69b26b,0x3a1a8cfb,0x3a044816,0x3a0eb1b2,0x3a686470,0x3aecce92,0x3a527010,0x3a298351,0x3a7023e6,0x3ab74141,0x3aa98d87,0x39ca23b7,0x3a25426e,0x3ac72397,0x3adaa93d, +0xb98fbc24,0xb9593fcc,0xbaa27a3b,0xb896101f,0xb9609862,0xbabd8b59,0xba82c1ba,0xba2440df,0xbaea2a46,0xba54a020,0xbad19868,0xba234d14,0xbafda70e,0xbae7758e,0x381888e1,0xba39313d,0xba411602,0x3957a260,0x3aba1954,0x3ac3bd2a,0x3b1aef4d,0x3ab0ad9e,0x3a92611f,0x3a722045,0x3a9982e3, +0x3aa91f4f,0x3b39b691,0x3a3fff56,0x3a4ba456,0x3ac78d9a,0x3b19b167,0x3b17f45d,0x3a647aff,0x3ab35a26,0x3a52cffe,0x3a331944,0xba78a74e,0xba80b696,0xbafd913a,0xb8cda0a4,0xb90635a8,0xba31fb2d,0x38c2dc74,0xb6d08e8f,0x39d9c7b3,0x39076894,0x3739eb6d,0xb8c7d142,0xba420236,0xbabae552, +0xba4c05ca,0xb95bde8f,0xba02f111,0x3a8f3715,0x3b2db9e0,0x3b3ef733,0x3b704445,0x3abdcfb0,0xb8af7096,0xba234f1e,0xb95129c9,0x3ad18ea2,0x3b84f912,0x3aa90630,0x3a12f05a,0x3afb898b,0x3b47c62a,0x3b193874,0xba0bb999,0xb9418c1a,0x3c0bc3d3,0x3b92a489,0x3b2f0627,0x3b2ad87f,0x3b156b46, +0x3ad11189,0x3a09daf6,0x383ce3e6,0x38ef3028,0xb850ceae,0xb8c7410e,0xb8a0b272,0x38cc7beb,0xb8429fbd,0x3a130665,0x3ac01ba3,0xba17fd52,0xbadf71a7,0xbb773b60,0xbb5f770f,0xbb26f47c,0xbb2c9c22,0x3868606a,0x3acea0b7,0x3ba4afa0,0x3c101ebc,0x3bcd2ec5,0x3b405560,0x396e8c92,0x3a124ca5, +0x3ad6688c,0x3b6c3cfb,0x3ad86b2a,0x3b742f84,0x3c0e723a,0x3c0f8a8e,0x3abedc36,0x3ad0282a,0xbabe1aeb,0xba49c70d,0x3a1ddbde,0xb96cc117,0xb98d865a,0xb7bc4f32,0xb84b44f3,0x3773c1e6,0x383be50d,0x37949269,0xb8123d0a,0xb759ff27,0xb98573a1,0xb9d35bc3,0x395069ac,0xba1a14c6,0xbabbecb6, +0xb9eccc92,0x3b078bb0,0x3b40b1a5,0x3b6b0225,0x3a2d0940,0xbb2906ff,0xbbb5c054,0xbbc1198b,0xbafe0156,0x3b982bed,0x3b32fcd5,0x39e11158,0xba16695f,0xbbb38ade,0xbbc2074a,0xbb369f11,0xbaa5e653,0x3b3fb84c,0x3bf21340,0x3b66c9d2,0x3a3a2956,0xbaf61e4b,0x393b4e10,0x39358073,0xb6511e1f, +0x37efebc3,0xb72f77af,0xb7b44fd4,0x36be4902,0x37413a50,0x383c83fe,0x388d63b1,0x39b932b1,0xb981e367,0x3a5a4eb6,0x3a6bcc68,0x3a9f2637,0x39f67216,0xba6d16ea,0xb9d48b3c,0x3a2918ca,0x3b77409a,0x3c03d36f,0x3c0698c0,0x3b921919,0xbb42986b,0xb8ee6ccb,0x3b6d5ed0,0x3c001404,0x3c0f1fce, +0x3c03b3c3,0x3b8f5666,0x3b123167,0xbbd61e88,0xbb594efb,0xbb82f83a,0xbbd13f24,0xbbdfb45a,0xba916124,0x37003369,0xb7bef0a1,0xb7287fec,0x37544290,0x36f756ec,0xb73bbd9b,0xb8294235,0xb711c291,0xb8b8f345,0xb97ae3c0,0xb94e9244,0x3a86d08f,0x3aa8a65f,0x3af8a90f,0x3afabf98,0x3aa469e0, +0x39dfcbc9,0xba4ef188,0xbaeeffe0,0xbb05c6e7,0xbb04d3da,0xba8f8cc6,0xbabc418c,0x3b81d93f,0x3bb37408,0x3bb8b472,0xbb214cdc,0xbbd362d4,0xbbc55c08,0xbbd65e89,0x3b69dd79,0x3be6c459,0x3bfd4052,0x3c014fd1,0x3b3e45c8,0x3ab29669,0xb880c356,0x3884161b,0xb784e8dd,0xb79a8a08,0xb71945ed, +0x38188516,0x388ae4d5,0x38276274,0x37e2a27c,0x39f92c4a,0x3ab615b1,0x3b2bfba3,0x3b1f1124,0x3b2d1f58,0x3b10cc8d,0x3acc8f8a,0x3ad2fd1c,0x3aa19f80,0x3a7dc97a,0x3a3298ef,0xba37da60,0xbabdcb61,0xbad9ba42,0xbb122cc0,0xbb1ded3e,0xbaaee950,0xb9b82724,0x3a0fcb69,0x3abd67ba,0x3a229e31, +0x3acc51d1,0x3a1fa411,0xba997801,0xba653022,0xba97ae78,0xba2f1d6a,0xb99b1b8a,0xb8eec3d7,0x38e924da,0x381ae699,0x38409338,0xb8c3dc34,0xb8e4a689,0xb92a4e14,0x384979b6,0x3976c0bb,0x39fa35de,0xb840c227,0xb9e63ceb,0xba37b8fc,0xb9f9fce2,0xb9f9bf71,0xba0a7207,0xb9fcc16d,0xba16c173, +0xba33d703,0xb9dec87d,0xb999e928,0xb9eebc69,0xb85a3f2a,0x396ebcf4,0x395a4b82,0x39119326,0x37817530,0x3a09059d,0x3a777d32,0xbadb784e,0xbb12be9e,0xbb1b4d90,0xbafcd215,0xbb021cfe,0xbad35bd8,0xbaac28a1,0xba83a523,0xba446bce,0xb9b47dfc,0xb934c7c1,0x3853e6b9,0x390399ef,0x39d0b876, +0x3a15b77f,0x3a4cd3bf,0x3a78b926,0x3a417048,0x39b28aa2,0x39fc5ef7,0x3a90a6f1,0x3a90734a,0x3ab16547,0x3ae0bca2,0x3b0bfb92,0x3b25d2ab,0x3b146874,0x3aff24f8,0x3acea257,0x3a862eca,0x39d7afa0,0xb7fcaef0,0xb9e568ee,0xba5f78a3,0xbabaef2d,0xbadd23b1,0x3a465bb9,0x3a1cabab,0x3906f28c, +0x3a69c320,0x3a51c1a0,0x3a5adc7c,0x3a9d3d3a,0x3aa5b1d4,0x3ad1daae,0x3adec978,0x3adec6c3,0x3b0833ae,0x3b1a2360,0x3b230d57,0x3b040862,0x3af92729,0x3af2a6fb,0x3ada08fe,0x3a5fbcad,0x3abc2d75,0x3ab1001a,0x3aad2153,0x3aaaf95b,0x3aa3d615,0x3a995fc4,0x3a98241e,0x3aa80030,0x3abcd15b, +0x3ad1dcb5,0x3ae49c4b,0x3af5b722,0x3af93b94,0x3ad752ce,0x3ab3e528,0x3a9190b7,0x3a7467ce,0x3ab3454d,0x3ab4dafd,0x3a498bff,0x3975ce5c,0xb8dd3255,0x3a93f200,0x39c01e9d,0xb89e3108,0xb81cd62a,0x377f3422,0x38de3bf4,0x389730eb,0x38282c04,0x391b4fd3,0x3a331aea,0x3ac31356,0xb86fa820, +0x3a1846d4,0x3a9bf5ee,0x3af64680,0x3add84b2,0x3ae62bbc,0x3ae66cb9,0x3ae89e2b,0x3aeb2e76,0x3ae8fd5f,0x3aed1681,0x3aebc5f4,0x3ae85c1f,0x3ae5ed3b,0x3ae32f8a,0x3ae90e38,0x3adc8665,0x3ad7ad28,0x3ad2a83d,0x3ac53e83,0x3b0342a8,0xba404515,0xb9f37ca4,0xba72f7a3,0x3a34bf86,0x3ab671fb, +0x3a8bc160,0x39070d95,0x3a9bbf8a,0x3a8f47f9,0x3ab2ddfb,0x3aadff1a,0x3a826cad,0x3a92ff6b,0x3a8e450f,0x3a97fdfc,0x3a6b6f1a,0x373f1cfe,0x3aa970ad,0x3a9c7ee2,0x3a18fe3c,0xba90ac5c,0xba1fb1fe,0xba2a12f2,0xba0a06bf,0xba40fd08,0xba424f9b,0xba28911e,0xba2514fe,0xba21e2ca,0xb9d4a11a, +0xba46f17e,0xba4ba05c,0xba3ac022,0xb9cfe3e8,0xb9a3e7c4,0xb9fd2ce7,0xb9fc8e09,0xba283451,0xb9c3eb03,0x3aaf12b7,0xba139ad8,0xb8b86f3f,0x394e24d2,0xb91febb1,0xb9f78e2f,0xb9d76485,0xb9a99366,0xba17e488,0xba834164,0xba89780e,0xb916a58b,0xba22f893,0xba35ad34,0x39bfae7c,0xb9ae9dbb, +0x3a8778c2,0xb9f66489,0xba1862a6,0xb9c26de6,0xb9cfb0c3,0xba9e253a,0xbac5466f,0xbaa24097,0xba8b2ced,0xba31374c,0xb769178b,0xba5dc83b,0xba65f75e,0xba07964c,0x3985a9f6,0x399366e2,0xb9ef2c26,0xb9ca1193,0xb99a1b32,0x39cadde9,0x3a5415dd,0xb8d636fb,0xb9cf1be2,0x392779a4,0x3790b2c6, +0xba8b11f8,0xb9b8f3ab,0xba3556c0,0xba747c5f,0xbaa17a7a,0xba89ab97,0xba1d9501,0xbab050d7,0xbae9417f,0x39687bd6,0xba094267,0x394dce1d,0xb9d135c8,0xba546bac,0xb9995b00,0x38c2e75d,0xba8f2145,0xbaa0d1f9,0xba29b7a4,0xb9d40eff,0xb9ac63d0,0x3a0ab802,0xba9875a9,0xba80a0b4,0xb980cd79, +0x3aaade3c,0x3ac20ba0,0x390e5033,0x3a089057,0xba886254,0xb880911c,0x3974ab34,0xba954470,0xbad53749,0xb9152736,0xb9326f6c,0xb9a98dbf,0x37dbf26d,0x39325a4b,0x3968bb62,0x39d73498,0x38cfed49,0xb88a3fbe,0xba1c1163,0xbae0255c,0xb9656477,0xba7a9191,0x39ae2aed,0x39456411,0x37901bc1, +0x3a52bec0,0x3a1e3ba0,0xbb0658ae,0xbb63b05f,0xbb396e32,0xbb0157c3,0xb981aec7,0x3a9efc30,0xba55384a,0xba731682,0x3a22c10e,0x3b3c0989,0x3b18ad27,0xba4675ee,0xb9bf58a2,0x3b918361,0x3b75a70d,0x3b9809c1,0x3b50625a,0x3b2671ab,0x3ab910ba,0x395b0b24,0x3895a314,0x3853719e,0xb8a4fedb, +0xb8b01330,0xb92ce053,0xb5be24a4,0xb614e9d9,0x39e4048d,0x3a86bf8f,0x39558406,0xbaf07166,0xbb145f34,0xbb3780f4,0xbba1a0d0,0xbb8b9ded,0xbb217c32,0x3a949e0a,0x3b9102fe,0x3be73f6d,0x3b65187a,0xb99a7295,0xbb2d7986,0xbb2b0602,0xbad2e1cc,0x3a3eff2a,0xba3c5e32,0x3abad363,0x3bcf1ea6, +0x3bcbe2fa,0xbabd65d0,0x3a225895,0xb954da87,0xba2be0c7,0x393b600a,0xb8fe7e5a,0xb96eab4b,0x368d029f,0xb80ae976,0x38152e6e,0x384f4810,0x387bc6c3,0x37a2c7f7,0xb820dacb,0xb937ee03,0xb9df6216,0x395e3285,0xb9e5fead,0xba1332bc,0xba4815e8,0x39a7c825,0x3ad00a82,0x3a902edc,0xba9e0e6f, +0xbb7a6f76,0xbbb9be71,0xbba37d6f,0xba812cd0,0x3b988b61,0x3b0b182a,0x36bccc98,0xb9ce36f5,0xbb9e8817,0xbbad0045,0xbb3ef6b9,0xbb0bacb2,0x3b374bd0,0x3be4dd4c,0x3b9b66af,0x3a4e3912,0xba9e20bc,0x397af472,0x391ba69c,0xb7b2c34d,0x37a3cac0,0xb7e818f5,0xb7e0476f,0xb80a1bc0,0xb65d5b07, +0x375500a0,0x38f99a5b,0x39189db0,0x3961c7ab,0x39ed0b21,0x3aba4e9d,0x3a8b2b14,0xba437193,0xba8ab701,0xba528b60,0xba57ae92,0x3aae099e,0x3bac1bca,0x3b72a0b8,0xb9aa3c51,0xbbd48d3d,0xbb6e745e,0x37b23fc0,0x3b8da9a4,0x3bcb86a3,0x3bc0fbe5,0x3abbd3d5,0x3ab85d58,0xbc03778e,0xbbe5bdbf, +0xbb8be70d,0xbbaca9e1,0xbbb66b6c,0xba6e44e8,0x389faf59,0xb8489a7d,0x37cadaaf,0x37b55798,0x37da4967,0x37c1782b,0xb58e0ebb,0xb790af6d,0xb879a9d1,0xb915f709,0xb9bbf917,0x39d8cdcb,0x3ad6fc0f,0x3a9f204b,0x38f2e0da,0xb9ed4651,0xbac08c68,0xbb0977fa,0xbb3589ac,0xbb27f391,0xbb0e53e6, +0xba24c925,0xb9cfdf4c,0x3baf952b,0x3bb924ca,0x3b0b4a91,0xbba0d455,0xbc087c51,0xbbff56d7,0xbbd9e704,0x3ae039e3,0x3c082503,0x3c26587b,0x3c00a9bd,0x3b36a9fc,0x3ab8d39c,0xb8db8a9b,0x384c0c0e,0xb84526e4,0xb8522b1e,0xb8071d51,0xb7f8d3d2,0xb6b040e3,0x3881b3a6,0xb7f0f6a1,0x39a8d4a8, +0x3a80faca,0x3b265168,0x3b62ad24,0x3b27f070,0x3b0aec43,0x3aeafad3,0x3aa0e54f,0x3a8705df,0x3a279a49,0x39748e35,0xba97423a,0xbaf904e9,0xbb101d2d,0xbb4932f1,0xbb59e084,0xbb340f36,0xbae255f1,0xba934327,0xba737e5a,0xba9ce123,0x3a47d507,0x3aab59ba,0x3a4d113b,0x3990ff11,0xb9473b0b, +0xb90f1d1b,0xb94d9dee,0x388066ee,0x38c321ab,0x39249998,0x382b827e,0x38c778c1,0xb75dfb9f,0xb8c73c6a,0xb8193c04,0x3981f3a4,0x3a28a684,0x398aec53,0xb9a4b5b0,0xba0adb0d,0xba7b7bc9,0xbaa559de,0xbab9a975,0xbaa639c5,0xbab36ec3,0xbacd4a10,0xbab5cfd7,0xbaab5850,0xbab06451,0xba9613b5, +0xbaa8665c,0xbb00f992,0xbad166f9,0xba941ccb,0xb954f8e2,0x3a2fe545,0xbb260a76,0xbb1ec110,0xbade5f46,0xbaf05ee1,0xbabe9be1,0xbab7eb98,0xba9870cf,0xba81f3e0,0xba0f976e,0xba111ffc,0xb9066548,0xb9cfc9dc,0x383646e0,0x3826a8ed,0x39ef7373,0x3a0d47d8,0x3a757da7,0x3a60f445,0x3a709ae6, +0x39d6ee0e,0x39beaff7,0x3a36defa,0x3a52ceb1,0x3a9a910c,0x3ac7f114,0x3af9f996,0x3aba6370,0x3a7e0fc0,0x39fe7397,0xb9243529,0xba467e9b,0xbaacebc3,0xbab451c1,0xbad0a3ac,0xbb07e9d1,0xbb101d9b,0xb88e40e6,0xb936e829,0x3a5c3fa8,0x396bd481,0x3a4bece3,0x3a5b34d1,0x3a3a8cb5,0x3a6d6964, +0x3a5e4c3f,0x3a9da51a,0x3ae339cc,0x3ae6b46c,0x3af804bc,0x3b1184e7,0x3b126aed,0x3b00a2cb,0x3ae744ae,0x3ac1723a,0x3acfed6f,0x3a9191da,0x3a9e05a6,0x3a9de8ca,0x3a9a88f6,0x3a9bdef4,0x3a95b92a,0x3a9e9701,0x3a8136c4,0x3a689da2,0x3a587361,0x3a4ef891,0x3a419892,0x3a177e12,0x39caec39, +0x39709825,0x38f3abea,0x38a3b480,0x3a4e1c0a,0x3a03c200,0x3ab2baaa,0x3ae59f3e,0x3adc5fdd,0x3aa0c83f,0x3aebb96c,0x3af93325,0x3b08cf86,0x3b0de2f0,0x3b0b0364,0x3b17a811,0x3b1dfde6,0x3b23a518,0x3b165a59,0x3ae65509,0x3b0d050a,0x3b0c993d,0x3ae698d7,0x3a961255,0x3aa8fe46,0x3aa7c793, +0x3aac0a03,0x3aad7ac5,0x3aaea6f7,0x3ab12c59,0x3aa9cfca,0x3aa21287,0x3a95bdca,0x3a89b3e4,0x3a7ea970,0x3a751075,0x3a73d917,0x3a703687,0x3a67272f,0x3a53f715,0x3ab9aaef,0xb9f3a484,0xb97e1336,0x38ab733c,0xbab51da5,0xbadaacb9,0xba585285,0xba9b5cd3,0xbaccfca6,0xba98b8ea,0xba8ab9f6, +0xba840b07,0xba6daedc,0xba8c9dfc,0xba8cd7d3,0xba3fc752,0xbaf918e4,0xbaccad1f,0xba109d9f,0xbad2fa7e,0xbac4236b,0xb98863bc,0xb9d44dac,0xb9c6e044,0xb98951c5,0xba01ffce,0xba06f526,0xb9e79130,0xb9c34bf5,0xb9b08404,0xb9254223,0xb9fd0e86,0xba064ecf,0xb9d3ea5e,0xb994c74c,0xb97a67d3, +0xb9c1d24a,0xb984fa9c,0xb8d8a5db,0xb9a6dd49,0xbab938b0,0xba433695,0xbab3bb95,0xba6a273d,0xba1ad5fd,0xba72ced4,0xb9cb6ff8,0xba5b585d,0xbade258b,0xbae871df,0xbacb43ca,0xba456657,0xbad08235,0xbaba295a,0xba3bc401,0xba5d6bba,0xba9f139c,0xba3ceb21,0xb9547916,0xb9df3652,0xb995f340, +0xba93e825,0xbaabde90,0xba84c396,0xba306c66,0xb9aba8e8,0x38dad8eb,0xba2a6bd1,0xba4b3740,0xb9d4cad5,0xb94d54fc,0xb951904d,0xba2593a6,0xb9c6776f,0x3a22d166,0x39f99325,0xba8367ad,0xba788e85,0xbaab638b,0xb9fb313a,0xb9ce0e4a,0xba57feb8,0xba25251d,0xb9987e68,0xba66293f,0xba1f8850, +0xbaa0a585,0xb9de82dd,0xbaf93c4f,0xbb08f81d,0xb993d12c,0xba97ef9c,0xbaad08a5,0xba835f78,0xb9489121,0xb9be8e29,0x39059cc5,0xbaa35f11,0xbaaec663,0xba62493e,0xb967b1bf,0xb885a6cc,0x3a0dd813,0xba7f17b3,0xba7c7027,0xb7989124,0x3990ec44,0x3a090038,0xb8d21bc1,0x39c448e6,0x3999cbb0, +0xb8fac78a,0xbaa5aea2,0xbaa9d29a,0xbac30d43,0xb95171e2,0xb7e8035c,0xb789fd7d,0x393c888f,0x38e06d56,0x398d15e8,0x39944a90,0x394add76,0x3936987d,0xb97fed76,0xba9eea7d,0xba3178e1,0xba4a12cf,0xba8d1820,0xb9ea164e,0x39c8a683,0x3804d473,0xb89a520a,0xbb408126,0xbb853a6e,0xbb4cb68e, +0xbad742ef,0x382be4ea,0x3a769641,0xba863707,0xbabacb9c,0x392ad2a0,0x3a04056d,0x3936f69d,0xbab2a401,0xba4cb243,0x3bb2fea9,0x3b036128,0x3ab000fb,0x3aafde1d,0x3a9b90ee,0x3a25c18a,0x347bc258,0x374910bd,0xb86982f7,0xb87a906b,0xb8ebbf49,0xb90172f8,0xb8916caf,0xb8638dcc,0x390d2204, +0x3a56a91d,0x398becef,0xba9a7c09,0xbb53fafc,0xbb653498,0xbb5b4761,0xbb2e8f09,0x3a1459f1,0x3b472901,0x3bcfe65f,0x3c13b2ab,0x3bbe6a92,0x3b12b2d0,0xb847d9ac,0xba065a54,0xb91ae375,0x3a9ef130,0xb963bd03,0x3b017618,0x3be588c4,0x3bcdb0e4,0x3ab1a98f,0x3aa5e1a6,0xbaccc436,0xba460902, +0x38109bcf,0xb8224086,0xb90c8308,0x386e3268,0x36412280,0x38473475,0x3857893b,0x38822f7d,0x3802f32f,0x37da627a,0xb8b5e35b,0xb9b69245,0xb8bc7780,0xb9dc1ee1,0xba99ed18,0xbaab1b0f,0x398e4787,0x3a1a8940,0x39df628a,0xbacd107c,0xbb862ae4,0xbbcbb5e6,0xbba27653,0xba386ac5,0x3ba445ff, +0x3b086a76,0xba305ad7,0xbafc03b7,0xbbc8f082,0xbbbebc00,0xbb1193cb,0xba8a82b7,0x3b7a5375,0x3be2a1c2,0x3b972ac4,0x3a9516b4,0xbac36015,0x3a022e43,0xb821a8dd,0x34d3acef,0xb800b029,0xb7e69888,0xb826a3d4,0xb8033969,0xb7d4de61,0x35bb41ca,0x377f370f,0x397ba6ca,0xb7facd93,0x3a03cc67, +0x3a129c8c,0x3a90e836,0x3a0ee258,0xb9ed5e0e,0xb8fffa6e,0x39ab9572,0x3b2e3c36,0x3bcd86ff,0x3b8856ab,0x3994fd4e,0xbbb1e29b,0xba830b21,0x3b17d8c2,0x3b66bb3e,0x3ba27ff6,0x3b800418,0xba86e43a,0x3ab54804,0xbc0da612,0xbc2854ec,0xbb982114,0xbb6f6953,0xbb8fc44a,0xb9b0e235,0x365f73fc, +0x381b3242,0x380681cd,0x3846b5cd,0x381536f9,0x3813add3,0x373d359a,0x37690122,0xb8051575,0xb8955639,0xba09b27e,0x392c2685,0x3a14528d,0x3a4d3c2f,0x396441a8,0xba265bbd,0xbac7777a,0xbb22c42e,0xbb56e8d9,0xbb4ae6a4,0xbb449732,0xbabac476,0xba9af373,0x3b9a8b00,0x3b99cd95,0x3a732dad, +0xbbd52155,0xbc1dd62c,0xbc137051,0xbbf80547,0xb9437566,0x3bc03b3b,0x3bf73914,0x3bcaee60,0x3b0a4873,0x3a88523b,0xb956ac3a,0x36fa83a6,0xb8ebb392,0xb889b560,0xb89658ea,0xb8348fad,0xb80387aa,0x375679a3,0xb816a467,0x391c88e2,0x3a564ad4,0x3b058d71,0x3b1e520f,0x3b27eb28,0x3b19a532, +0x3aea1397,0x3ac3d754,0x3a6b7b6e,0x399b51a5,0xba0393dd,0xbaf159e4,0xbb390515,0xbb67b06b,0xbb7129ee,0xbb710fd9,0xbb37e69e,0xbb3e501e,0xbb48a8eb,0xbb24434d,0xbb7459c5,0x3a8c267c,0x3a1bb767,0xb94bcbcd,0xb96f72f4,0xb9f7d7fa,0xb916d7b1,0x3840a7ea,0x3935cddd,0x396a3131,0x39302907, +0x3914d076,0x38d9340d,0x3868e631,0x374350a3,0xb7a4e2b0,0x38d6a4c2,0x39d4142e,0x399b907a,0x36ba995a,0xb9a5a187,0xb9f051a8,0xba5baa3c,0xba98167b,0xbad529dd,0xbb025fa5,0xbb10d812,0xbae34e4f,0xbaa88834,0xba8b0248,0xba65dba5,0xba65e0c0,0xba9f994c,0xb9d9de46,0x36b8c4bc,0x3a26be03, +0x3a7486d6,0xbaecfd80,0xbb18aab4,0xbb28922a,0xbb15ec20,0xbb10e76d,0xbaf183e6,0xbab7fb12,0xba84b814,0xba48f27e,0xba026dae,0xb9c83c1d,0xb9a9659d,0xb963f29c,0xb907d00d,0x38d8c812,0x399bc660,0x3a0ff8eb,0x39fe301d,0x3964d55e,0x39e2f8ee,0x3a6b35ee,0x3a6c6d70,0x3a939514,0x3aba9d9e, +0x3ae6efd1,0x3b067a97,0x3abd3117,0x3a4cd59f,0x38ea484b,0xb9ce4bf9,0xba5a1e1a,0xbaa3ad1e,0xbaa8ea5a,0xbabce905,0xbad71e6c,0xbaf752a0,0xb9a8ffd9,0xba2478ef,0xb9c406cd,0xb8cf6dfa,0xb70bb57b,0x391b1e10,0x399c3f77,0x39cafa85,0x3a10ca14,0x3a212b98,0x3a3e0927,0x3a838da0,0x3ab12d67, +0x3aca55f8,0x3ac74b91,0x3ad2592b,0x3ac6f27b,0x3ad5e197,0x3aa31ccf,0x3ae2fac5,0x3ae9665b,0x3ae13d4a,0x3ae07e9f,0x3adbc351,0x3ad38bee,0x3adbd066,0x3acf2c37,0x3acbfefd,0x3ac049bb,0x3aaf07bd,0x3a936b43,0x3a57bfda,0x3a17f60e,0x399fd737,0x38ac904e,0xb915b8c7,0x3a8370d1,0x3a6f9a9e, +0x39e1e328,0x39a3c310,0x3a443d10,0x3a23479a,0x39dba072,0x3a42a1cc,0x3a617fd0,0x3a7d633a,0x3a905e84,0x3a9477eb,0x3a98c2d2,0x3aa7ec05,0x3a511672,0x3a963887,0x3a901fce,0x3a5e910c,0x3a9383b7,0x3af7a1c3,0x3ae55266,0x3aecd26b,0x3af13519,0x3af4da04,0x3af87bf1,0x3afbb07d,0x3aee566b, +0x3ae08fc6,0x3ad1fd10,0x3ac3527f,0x3ab79cd6,0x3aad8bf7,0x3aa76e1c,0x3aa0f043,0x3a9931b5,0x3a8d32ea,0x3af03728,0x379f71d7,0x39208ea7,0x3906f230,0x3a5e54cf,0x3a0c3723,0xba5796e8,0x3a33d109,0x3a147dbd,0xb9e5f15e,0xb9b558d5,0xb9c60fcf,0xba12c891,0xba2e692c,0xba461acb,0xba1b7e3e, +0x39702ad3,0x39e2400b,0xba3810ec,0x39d62674,0x3a31c822,0xb90c544c,0x37f5a29d,0x38e2f620,0x394e6fe4,0xb7f42042,0xb79d85af,0x3903f5d8,0x394a16fe,0x395d4f40,0x39908373,0x38e23bca,0x3914eb4b,0x3995e42c,0x39fb7c39,0x39f40e04,0x387899dc,0x396b8649,0x38c855b2,0x3a141637,0x396a7014, +0x38d4c6cf,0xb828f05e,0x36b99c40,0x38f50fc8,0x37d6f10a,0x39206dd8,0x39196a35,0xb995d95a,0xba4096c6,0xba52fa8d,0x3983f230,0xba416170,0xba2fb9c2,0x3a154e94,0xb8fab8ab,0xb8a4fa28,0x3914874e,0x393d87ac,0x39c43814,0x39b44b6c,0xba0cbecc,0xba43e301,0xb998cd36,0x38d9ab18,0x39f1bace, +0x3a32f4e1,0x3996a9b3,0x39d227fe,0x3a6754c8,0x3aacfb58,0x3a8c6d89,0xb91ee9d8,0x3982622b,0x3a127c5e,0x3a91524f,0x3a676d84,0x391a557f,0xb9ec7b05,0xb79c3a21,0xb82b1ee7,0xb9a1dfda,0xb94a267f,0xb9917beb,0xb9a8be5c,0xba0830db,0xba60784c,0xb90be500,0xbaa42071,0xbac6f8dd,0x395f88b3, +0xb9fabdc2,0xb878f812,0xb97d4d9c,0x3948d1b2,0x3a0d0d3f,0x3a820b01,0xb9c2d706,0xb9c91361,0x3a07bc4f,0x3a8a69f1,0x3a9ae701,0x3aa05a99,0x3a04c9af,0x3a773383,0x3b017bd8,0x3b374c8d,0x3b1eef30,0x3941eaf4,0x3a91b659,0xb8cd18a9,0x3a184e9d,0x39b9607b,0xba016044,0xba81b85f,0xb830769e, +0xb8283025,0x37a4edee,0x3868e9df,0x38c49ac3,0x391dd1d2,0x39838552,0x39486a74,0x38fecd65,0xb88df9a9,0xba858a98,0xb994d6b2,0xba5411b3,0xb9b48c3c,0xb897c149,0x3a4a6427,0x3ab723e0,0x3aa7c438,0xbad8fa86,0xbb312bc4,0xbaac0965,0x39779dd1,0x3ad610d1,0x3adbdb6f,0x3a83e66c,0x3abefc6f, +0x3b54f852,0x3b8a84a3,0x3b33f8e3,0xbaad12d2,0xb8fcc188,0x3bbfc967,0x3b6f6887,0x3b68eff0,0x3b0764e9,0x3a99fa0f,0x39ea9b7c,0xb8442359,0x3798413d,0xb806053b,0xb8231f3e,0xb8a54ae7,0xb8ed93b3,0xb89d3530,0xb8778696,0x38c92438,0x39ff08b7,0x3a40b2c1,0xba0bff08,0xbad0ab93,0xbae22bf4, +0xbb1fe8ad,0xbb073108,0x36e78cb7,0x3b5fa6c8,0x3bcae3d8,0x3bf0a9c7,0x3b934924,0x3ab1962b,0xb8509386,0xb8adcf60,0x3a9aeb83,0x3b7f7830,0x3b287814,0x3b8d3554,0x3c07d4e1,0x3bf23b16,0x3a582f1b,0x3b0013f4,0x3a0d80a1,0x39187fba,0x39b6e069,0xb8cb76b3,0xb8aa836d,0x3857abca,0xb6a24b5c, +0x3816d90f,0x38288898,0x386e5844,0x3832fd38,0x37ad5056,0xb81f4951,0xb98dfffd,0x380a0cf9,0xb91bb935,0xba27a5e1,0xba376294,0x3a8ea6dc,0x3b1748a2,0x3b1e6742,0xb9e541e9,0xbb62140c,0xbbb1ffe6,0xbb8317ae,0xb80fb758,0x3b9e2e92,0x3b08d14e,0xb997424c,0xbaad86eb,0xbb8be895,0xbb7c696e, +0xbac3214a,0xb8d34fd5,0x3b94e924,0x3bf9a34d,0x3bb54020,0x3a900761,0xba84c470,0x39f68994,0xb8d4e240,0x378f176b,0xb815adb1,0xb79d9639,0xb81948fa,0xb816c6fb,0xb7dff001,0xb7ba062b,0x382013a2,0x388156b1,0x395fb6f1,0x3a154fcd,0x3ac86c5b,0x3ae08de7,0x399273f6,0xb932a72e,0x38708dd5, +0x3ac016b2,0x3b919221,0x3c079f87,0x3ba87fb6,0x3a07aecd,0xbbaebcd8,0xb9399174,0x3b9d5824,0x3c04eb10,0x3c2aba74,0x3c0b5032,0x3ad6a81c,0x3b1c0995,0xbbde11ba,0xbc500e62,0xbb8bbe1f,0xbb0cc769,0xbb455d92,0x371864c9,0xb83348be,0x389f2b21,0x3780a504,0x3859d5df,0x38124415,0x3836d04d, +0x37f2021c,0x37b2ef49,0xb750493d,0x37202309,0xb9ca72b8,0xb9011d4f,0x3a27d1cb,0x39e6db67,0xb7987f99,0xb8963d60,0xba3754af,0xbaad1919,0xbb107ec0,0xbb128142,0xbadbfa97,0x39f8922c,0x3ab57edf,0x3bdf4d2f,0x3bbc45fb,0xb9dddf04,0xbb5f17a7,0xbb82a013,0xbb1b44a7,0xbb2169da,0x3b5af019, +0x3c057ca7,0x3bfb2f22,0x3bb95971,0x3b09739c,0x3a47ec4a,0xb995dc85,0x372edfec,0xb8ef8a5a,0xb883ebc6,0xb8a76c64,0xb880874b,0xb886165b,0xb7420d09,0xb84df67c,0x365e2b15,0x3a05eb32,0x3b05b216,0x3b4fcd2c,0x3b40293f,0x3b2217a5,0x3b01f3f5,0x3acb3167,0x3a9b39ae,0x3a87fcfd,0x3a89943d, +0x3836ef9f,0xba10dca6,0xba272ca3,0xbac05b93,0xba9a7eec,0x391f177b,0x3a2ce7de,0x39f5407c,0x39cf26a0,0x38c58434,0x3b1cfa83,0x3b2e10ec,0x3a90f86a,0x3a898f91,0x39b219b6,0x39e1d004,0x38edbf8e,0x3961b79d,0x39320861,0x39405a24,0x3912ce7a,0x391f171e,0x38f2586a,0x38a02114,0x37806dd9, +0x3975780a,0x3a3a4400,0x3a214c54,0x393d3a48,0xb96cd98e,0xb9b53a7a,0xba047f90,0xba3d69ea,0xba5709bd,0xba998d4b,0xbad02c4e,0xbaae7091,0xbab06a0f,0xbad2cc0b,0xbaac293e,0xba78fd0a,0xb9a922bd,0x3864574e,0x3a4fba8d,0x3addd586,0x3b1ce035,0xbab5a4fb,0xbad09053,0xbaaf91c6,0xbab313da, +0xbab88e24,0xbaa410b8,0xba7b56ed,0xba3ba611,0xba0b3bd1,0xb9ff50c1,0xb9a27869,0xb9e312c8,0xb9a744ea,0xb9917dbe,0x3561a500,0x396dc534,0x3a1a6355,0x3a4226d7,0x3a817505,0x3a8f3f8c,0x3a864c41,0x3a8b217d,0x3a87e353,0x3aab1245,0x3ace9ec6,0x3aee7652,0x3abce1ce,0x3a904eee,0x3a4188d8, +0x39db24a7,0x3839fc6a,0xb9995994,0xb9e04aa3,0xba2937f4,0xba88437b,0xbaa275d9,0xb9cfeb39,0xba1f77a2,0xb9da1ead,0xb98e0f6d,0x38deab98,0x391c3bc6,0x3935ec57,0x39a3cb9e,0x39d0cc76,0x3a40742a,0x3a8c64f6,0x3aa86d62,0x3ac17117,0x3ae98adb,0x3af2e3dc,0x3aeb0153,0x3b00fd70,0x3aed27b6, +0x3ae798cb,0x3ad51ff1,0x3aca9819,0x3ad5ca37,0x3ad47166,0x3ad602ca,0x3acfcf01,0x3ad807cf,0x3abf6533,0x3ab86bca,0x3ab58035,0x3ab0c8d3,0x3aababb5,0x3aa01323,0x3a6133c8,0x3a0d0372,0x3989efce,0xb6ac976a,0x3a929f5c,0x3a6bd899,0x3ac92e61,0x3ac1e1c7,0x3a6b2127,0x3acc48cb,0x3ad3aa6a, +0x3aa339fa,0x3ab73aea,0x3ac065f7,0x3ac06173,0x3ace1d32,0x3ad368c6,0x3ad7f8da,0x3b110605,0x3b10b701,0x3ac7cf02,0x3b0d76d6,0x3b10e4d2,0x3ae07d39,0x3aed47aa,0x3af048c2,0x3af2ad31,0x3af5b52f,0x3af81869,0x3afb90dd,0x3af5617f,0x3aedfe7e,0x3ae318cb,0x3ad9bba6,0x3ad17789,0x3ad19bf2, +0x3ac4cda7,0x3abadf32,0x3aacb150,0x3a9fcdf4,0x3b0840ea,0xbab4772f,0xba7d8b0a,0xba98f162,0xbaaf96eb,0xba3b1b56,0x3a26deef,0xbad4230b,0xba56953b,0x39ccc6a9,0x39f426d6,0x39ed3fce,0x39f41b72,0x39b38ba4,0x39d226b1,0x3a49492c,0xba8cf1b9,0xbaec6af3,0x3a77f270,0xba4bb3b8,0xbabe4e57, +0xbac3513d,0xbaa21fc0,0xbaaf5ecc,0xbaa94741,0xbac8ae45,0xbac81b26,0xbab3c70c,0xbaa38a42,0xbaa182db,0xbaa61b40,0xbabba0d4,0xbabb161c,0xbaa58ddd,0xba9b1e4c,0xba9144b4,0xba9458e4,0xba8a145f,0xba5e1f94,0xbaa3b55a,0xb98e2d37,0xbaac8266,0xba98685d,0xba5c45e4,0xba701e8b,0xba4a9c46, +0xba6a8f43,0xba989775,0xbac44ab6,0xbb0b6a02,0xbb040336,0xba85b8c2,0xbac563d5,0xbabf2d9e,0xba670fe5,0xba9e94ec,0xb9cbd30d,0xbae0b6a7,0xbab6f6f3,0xbadc2eef,0xbaf1978b,0xbb328f81,0xbb37cde6,0xbb107358,0xbad2acf5,0xbaac8aac,0xbac0d386,0xbaf35af0,0xbaf1da46,0xbaaa1aa9,0xba9cbd13, +0xba929695,0xbaa8ce4d,0xba86063c,0xb90fd651,0xb9bbafc7,0xba5394ff,0xba879495,0xba7967e4,0xba180d01,0xb9a735dd,0xb9467400,0xb918f002,0xb6e5399b,0xb93af7ae,0xb9690e35,0xba050d31,0xb929fa66,0xbab2c082,0xbb00057a,0xb9d622ee,0xbaa4560f,0xbaa67d51,0xbae8d5ea,0xbad29327,0xbae9a317, +0xbae9d66f,0xbb54d582,0xbb50e5fc,0xbb0c65f6,0xbaa0b2a6,0xba96436b,0xbae14a29,0xbb1bd236,0xbb0ffc4e,0xba77c483,0xba57b05f,0xb9daaeb4,0xba35a03d,0xb903b97a,0xb96512af,0xba10f2f5,0xba5a5fc7,0xba9a29ec,0xba7b225a,0xb9401b54,0x3891f149,0x3855ced8,0x3854ff27,0x38684649,0x38b0b158, +0x3951a829,0x392d05a9,0x39104b59,0x394350d4,0xba44c92c,0xb9e99798,0xba951ec4,0xba8bec20,0xbacb376e,0xbaca698a,0xbb0838fb,0xbb4d3d77,0xbbca6ad1,0xbbe08d41,0xbb9b2f53,0xbb1fed32,0xba9bcbf2,0xbb0cd7a0,0xbb41aa0e,0xbb2f1640,0xba2f007a,0xba1fb28d,0xba49fb1d,0xbadfce86,0xba5184bd, +0x3b493c94,0x3a9714ce,0x3ad84736,0x3a7aa132,0x3a351589,0x392107e4,0xb821bc16,0xb7a189f7,0xb7e7793f,0xb80749b2,0xb8454833,0xb8dc257f,0xb886c2af,0xb8d62b78,0x382c13d9,0x397be8fa,0x3a335ef4,0xba4c50b7,0xbb1149c0,0xbb506d29,0xbb8538ff,0xbb35b69d,0x3923c44e,0x3b7ef3f2,0x3bd74940, +0x3bf29ffc,0x3b78a8df,0x39b34002,0xbaa15ea0,0xbaf7c20f,0xbadb8e0a,0xb99d96ac,0xba6b4a26,0x3ab0eb99,0x3bc4ec82,0x3b95a4fe,0x3a8f0f79,0x3aa9c6ce,0xb9d95363,0xb9393914,0x37074633,0xb88ddb10,0xb7a1c0d8,0x3834e0ca,0x36bb670c,0x37e924f0,0x37f3d8ca,0x38555815,0x3839b31f,0x3816e503, +0x358ee5d7,0xb9394049,0xb9277a00,0xb941c1aa,0xb9e165f0,0xbabe0cbb,0xba74a4f3,0xba7228ad,0xbb02316f,0xbb6342d8,0xbbae6f2c,0xbbce3c7d,0xbb74188c,0x39a4e6bb,0x3b92e2bf,0x3acf4766,0xba87e425,0xbb176bbb,0xbbb60521,0xbb9c5fae,0xbaa961d0,0xb94c2049,0x3b634bf4,0x3bdd3a90,0x3bbfa2bf, +0x3a8da996,0xba4bbdfe,0x39e988a4,0xb92a2961,0x38070149,0xb841bf90,0xb748eaca,0xb808ccd9,0xb8023984,0xb80cd805,0xb7b0d298,0xb624a676,0x38996154,0x391ecf19,0x3838f610,0x39a7bc2e,0x3a451ea7,0x3964b77c,0x3867f281,0x39a109ac,0x3a317844,0x3b0bb99e,0x3b8fb940,0x3a19de3c,0xbb4e279e, +0xbbe2add6,0xbac4c1d1,0x3ae4eaae,0x3ab29d03,0x3b434147,0x3a8e5bb8,0xbbaf721c,0xb922ba2b,0xbc1baba0,0xbc78e61a,0xbb9eb627,0xbae8efbc,0xbae6a738,0x38ef7da0,0xb7e5bebb,0x38a7553e,0x37961529,0x384ab5e2,0x37fe8cb2,0x38386a4c,0x37f7acf3,0x381148c3,0xb79660c7,0x384635d3,0xb9c19ce7, +0xba075043,0xb8893564,0xb9c1d9d3,0xbaaf2789,0xbb06c7b3,0xbb40d196,0xbb647aae,0xbb7f632d,0xbb57ec69,0xbb4f3d6c,0xba6b768f,0x3a1ccb9e,0x3bb22a55,0x3b6c1859,0xbb6fa572,0xbc072115,0xbc1ffdf0,0xbc1c691e,0xbbd8f59c,0xbb4ab74a,0x3b711fe6,0x3bc46cdb,0x3b70b667,0x3ac71e21,0x3993c923, +0xb9630384,0xb7f09036,0xb8d6e2ac,0xb88174cc,0xb892225d,0xb88af0ee,0xb87b6c86,0xb81d6059,0xb7c236e5,0xb7c24817,0x39949304,0x3ab1377a,0x3b143995,0x3b156bad,0x3b16129f,0x3b053bf5,0x3aca6526,0x3a4b73cc,0xb83d17ed,0xba8b0ab3,0xbb11cd69,0xbb57f27c,0xbb8aaa87,0xbb8a6158,0xbb828c12, +0xbb5bd3d1,0xbb8c3014,0xbbad4337,0xbbb4034a,0xbbc8d6d0,0x3a2bacde,0x3a77bf67,0x3aa1704e,0x3a1de3c9,0x39b0cbfb,0x39a9e426,0x39442fe5,0x396384d0,0x39270d9d,0x39239305,0x38fb4df5,0x391e4c58,0x38d5a486,0x38e58dfc,0x37d3ee03,0x3897588a,0x39b84216,0x3a1619a0,0x39cce324,0x38f4aabe, +0xb9ce7b8f,0xba8121b9,0xbab44ac2,0xbb00875a,0xbb201b50,0xbb3ca108,0xbb1bcc47,0xbafa14ea,0xbad25e94,0xbad77639,0xbafdd404,0xbb1c9fa0,0xba9f7352,0xb9a22034,0x39dfa9eb,0x3a7745ed,0xbb020408,0xbb0a5569,0xbb06ae1b,0xbb040509,0xbae7a704,0xbac26201,0xba83fdb5,0xba25fe64,0xb9d3d30a, +0xb99b6101,0xb98057e6,0xb9aafaf7,0xb96b0036,0xb9a4d964,0xb925f71b,0xb84b3ef3,0x3986ed2f,0x39b49fa9,0x39d856dd,0x3a019be6,0x3a098d40,0x3a216e4e,0x3a34e268,0x3a670c32,0x3a8d5076,0x3aa45bdf,0x3a092e03,0xb967e7ba,0xba7346da,0xbaaccc60,0xbace4278,0xbaffa933,0xbaeab9cf,0xbaf05389, +0xbafb8269,0xbb04f417,0xbaa13fa1,0xbad04fd9,0xba17ae72,0xba84ad84,0xba29dfc2,0xb9f29a6d,0xba1876b8,0xb9f8307c,0xba02bb5b,0xb9c004b1,0xb8a54dd7,0x383eb317,0x39ad0765,0x3a18b6d3,0x3a7fa102,0x3a942fa0,0x3a898a81,0x3aaa415f,0x3ad24cca,0x3ace0e43,0x3ade2a61,0x3ad840ee,0x3ad7c229, +0x3ad7c852,0x3ad29881,0x3ae0648f,0x3ab52d2c,0x3a99a82e,0x3a68b261,0x3a127f25,0x39113378,0xb9ad8aa9,0xba09a54b,0xba3d1b94,0xba5dff37,0xba888394,0x39c7f4da,0x39234a7e,0x399d7552,0x3a3515f4,0x3acb98fe,0x3959ebd2,0x3a42ff4a,0x3ac9938a,0x3ae17c4b,0x3af109b0,0x3aff89d3,0x3b076b93, +0x3b0f084f,0x3b15d1fc,0x3a9effcf,0x3a5d6bb9,0x3b1243a7,0x3ab27c17,0x3a92438d,0x3aab086c,0x3aaf22f9,0x3ab07925,0x3ab63e54,0x3ab9011d,0x3abb624b,0x3ac1e09e,0x3aaa3b5c,0x3a962a64,0x3a814e76,0x3a5916af,0x3a385b38,0x3a110ef3,0x3a1342c8,0x3a068739,0x39ea5d52,0x39c5b72c,0x3a9ebecf, +0x39a0e6c5,0x39da261b,0x3a4bd1cf,0x38d3488b,0xba63c5c0,0xbb0a3efe,0x39a816b4,0xba3000cf,0xbad72611,0xbae0f288,0xbae2ba8e,0xbae5eae6,0xbb03ceb8,0xbb083eed,0xbaeb7d9b,0xba824564,0xb8084803,0xbb067ba4,0xba706450,0xb8f37fa3,0x39ddfd92,0x3980f681,0x39c537a2,0x39d796c9,0x395e3e1b, +0x3974f6ee,0x39cc266c,0x3a08450d,0x3a0cf7a3,0x39e56ef0,0x39e53146,0x3a03a949,0x3a3c1196,0x3a40883b,0x3a2f5e6f,0x3978fc9c,0x3a060035,0x3a116d59,0x3a5edd16,0xba8fb70f,0x39629366,0xb9dd15b2,0xb9f61e53,0xb68444e5,0x392a9494,0x39ab5af8,0x39152f47,0xb9b08baa,0xba499b1e,0xba602104, +0x389d9563,0xba903470,0xba6bddcd,0x392f7b97,0xb989383a,0xbaabc738,0x39109a40,0x39e18c18,0x39d91a83,0x39b454f7,0xb9e96382,0xba050bf6,0x38458049,0x3a2a84a8,0x3a702350,0x3a25e6b0,0x3a2685c3,0x3a579d36,0x3ab8a4f4,0x3ab1a8ec,0x3a8376e3,0xb910b712,0x39f785d4,0x3aa0784e,0x3aaaca78, +0x3998aa2f,0xb7b453ac,0xba2d14af,0xb99a4f09,0xb91e4a01,0x37fe136c,0xb93dd3e0,0xb8801758,0xb8fa29b6,0xb7ad9c19,0xb9f7f6e4,0x386c7cc7,0xba855c41,0xbaab1ca6,0xb90b8a39,0xba34baa1,0xba4aa0af,0xba11dbfa,0x3a18ad18,0x3a0f0a92,0x3a648976,0xb9ddb9e3,0xb99a3372,0x3a39c986,0x3acfea44, +0x3addf885,0x3a63192a,0x3a87164f,0x3accc9e7,0x3b3dd763,0x3b2e7278,0x3b0c09c2,0x38ae8c91,0x3aa6a749,0x3a536614,0x3a52ec01,0xb882703b,0xb98a7396,0xba173721,0x3790f3d6,0x37c6facc,0x37539807,0x38343f1d,0x3839f9f6,0x3809a033,0x3890c882,0x39206369,0x389f4474,0x3980ab73,0xb9b4d4da, +0xb9dd9593,0xba3065c4,0xba94f5b5,0xba2bbf8e,0x3a529a95,0x3a4b3f80,0x39d29f58,0xbb191379,0xbb39a9b6,0xba75940d,0x3aa3080d,0x3b0d901a,0x3a4aff75,0x3a9e69f7,0x3b0677af,0x3b859211,0x3b5ec8bd,0x3ade4d76,0xbadaf9d3,0xb80f8e7c,0x3bbb2cf6,0x3b34dd2e,0x3afd2c97,0x3a87174a,0x397ca313, +0x37fbeb11,0xb7994b93,0xb7337820,0xb79841c5,0xb7ca1b1d,0xb780bb15,0xb83cf6b8,0xb86949f9,0xb899084b,0xb81d37e1,0x38e3a9c5,0x3a1b4bd4,0x3970b9eb,0xbac53e1c,0xbac7359a,0xba47cb35,0xb998bf55,0x3b1523d0,0x3bb1c9c7,0x3bf7d238,0x3befa10e,0x3ba66b35,0x3b308a5f,0x3b0afc3d,0x3afbec05, +0x3b3a17a6,0x3ba27a3c,0x3b7f31c5,0x3bae31d1,0x3c0c06c3,0x3be128a9,0x3b021847,0x3b1f08b9,0x3a47440f,0x3a264129,0x3945b2ba,0xb89f7f99,0x37ab20fd,0x379261fe,0x371a43f4,0x379c1f6e,0x374296f6,0x37d78b99,0x3808f031,0x381a7d40,0x37d2b1e6,0xb8ab0f14,0xb93bb045,0x38660de3,0xba0d6e34, +0xba16ed43,0x3a9eb9c8,0x3ae26604,0x3af5ad31,0xba5d6773,0xbb621949,0xbb9f5fe1,0xbb2c20b5,0x3a8a5130,0x3b9f4881,0x3b180a77,0xb96f553e,0xbb0860eb,0xbb81190e,0xbb484087,0xba38f1d0,0x3a5c3852,0x3b8f19a6,0x3bddb7b5,0x3babbe06,0x3a59f27b,0xba2eac70,0x39aa19ca,0xb922e40b,0x3814b34e, +0xb82fe588,0xb6ede171,0xb7ad9e92,0xb7907c67,0xb7ff4b8f,0xb7ac9c3e,0xb7fd8234,0x385236a2,0x3856f9d6,0x39c294d7,0x3a4cd231,0x3ad75cc6,0x3aa9ed6c,0x3a6b77fb,0x3aa4b351,0x3b73af03,0x3bd84a69,0x3c1560e3,0x3ba7c02b,0x3a37cea3,0xbb80daee,0x3b18dee9,0x3bed3f71,0x3c07e326,0x3c2d0872, +0x3bfb3abb,0x398fc9a8,0x3af1101f,0xbba90974,0xbc81c7b7,0xbba4edb9,0xba0f56b4,0xba803653,0x395bcadd,0xb7d3defe,0x38923733,0x3791df53,0x3820d9c6,0x37adf46d,0x38059993,0x38025db4,0x382e307c,0x3644867e,0x38914ed0,0xb95c436e,0xb9e18f6c,0xb9fd0e0e,0xb9c7c9d8,0xb9989dbb,0xb976877b, +0xba1e42bf,0xbaa5ddf4,0xbb08b13a,0xbb0676d2,0xbaebd0a2,0x3a2857e6,0x3b2a8a00,0x3bce24cb,0x3b839203,0xbb52a711,0xbb3eb065,0xbab6b44f,0x3a3737d4,0x39122596,0x3b22a972,0x3b9330b8,0x3b4688ad,0x3b2602a3,0x3a97f0ff,0xb8f5d2c6,0xb90aef91,0xb83c6f7c,0xb8b4a07b,0xb852b1c1,0xb85ecec2, +0xb8557e57,0xb885ef25,0xb887bd1a,0xb7eb109c,0xb8ddd30f,0x390e6b18,0x3aaed91c,0x3b1288b6,0x3b3d6395,0x3b2f4563,0x3b09be63,0x3aea9645,0x3a864a52,0x3a3d2b68,0x3a253fb7,0xb8e15795,0xba44014a,0xba75d80c,0xbaab4c40,0xba07055a,0x3a9669ab,0x3a678c2a,0x381514d5,0xb8d24ed3,0xb9979707, +0x3b4d6863,0x3b3fc0a1,0x3a6f9fb4,0x3a8bec4e,0x3a0c18f8,0x39f810a6,0x3924d41f,0x3937466a,0x391cb27f,0x38f94a37,0x38d8659b,0x38e3ea82,0x390cd46e,0x3911b9a5,0x38ad1bd0,0x390dbf23,0x3a08d900,0x3a4b8681,0x3a292e9e,0x398edacc,0x3979e2c0,0x3828ba22,0xb9b00f48,0xba310aa6,0xba9d6ce1, +0xbaf085cf,0xbac83a04,0xbac96b63,0xbaf1869c,0xbac88888,0xba727b99,0x39f6aa4b,0x3a7429bd,0x3ae80a1c,0x3b253d16,0x3b48e446,0xba2550bb,0xba908628,0xbaae4780,0xba95a36c,0xbabd25bc,0xba899ed6,0xba3a5607,0xb9cea968,0xb9b2f3ad,0xb980e81e,0xb9709c49,0xb97e3483,0xb9b215e5,0xb9b02bf5, +0xb9a61a0f,0xb8ee4da2,0x38bf864b,0x399629ea,0x3a0ebec7,0x3a88d651,0x3a8119e5,0x3a53a67e,0x3a38a675,0x3a4fdad4,0x3a6d450e,0x3a79e641,0x3a3e0d55,0x3a0294d5,0x398fe9c7,0x397ed608,0x3900a60f,0xb72bba32,0xb8fc6aeb,0xb9929687,0xba051957,0xba42ece4,0xba30e62a,0xba819bae,0xbac63343, +0xba429562,0xba2d2f77,0xba20eb2a,0xb9e9bc34,0xb9bf3d87,0xb93371f3,0x37cde918,0x391d71ed,0x39e098d5,0x3a2da6c6,0x3a69c3ed,0x3a84ba87,0x3a9723a2,0x3ac5f95b,0x3ad297eb,0x3ac2c485,0x3ae69ee9,0x3ad11361,0x3ada64d3,0x3ad894d9,0x3ad74ef6,0x3ad1a983,0x3ad63b55,0x3ac61bd1,0x3ac2f56b, +0x3abfca3c,0x3ab4fd57,0x3aa9269e,0x3a9d3829,0x3a53d378,0x39e8da1f,0x3910c66a,0xb978e94f,0x3a811e7e,0x3a705771,0x3a6ccb0f,0x3a0802c0,0x36804d7a,0x3a8be7b7,0x3a322315,0x39916018,0x39c4c028,0x39ea3442,0x3a0623d7,0x3a11a0bf,0x3a163323,0x3a1d78f7,0x3aa26ef7,0x3add8b98,0x3a33d3ae, +0x3aae3089,0x3ae2067d,0x3ae7bfff,0x3ae5787d,0x3aea2fda,0x3aea7a51,0x3aecb0d9,0x3aedff95,0x3aefd9fc,0x3ae965aa,0x3ae181ca,0x3ad84cff,0x3ad1a338,0x3acc0735,0x3acd3278,0x3abca1e7,0x3aafa626,0x3a9e7053,0x3a91d96c,0x3b02651e,0xbab8cc1d,0xba860ace,0xbac6433e,0xba031a26,0x39b79aa1, +0x3a8570a4,0xba860238,0x391fed51,0x3a884193,0x3a87ecd2,0x3a7b1de6,0x3a6abb07,0x3a408f72,0x3a4f9c1e,0x3a92cdc0,0xb78bac9b,0xba8a46c2,0x3a9debce,0x393ea0c0,0xba22a49a,0xbae3019a,0xbaa87b00,0xbab7ce1c,0xbaba27e4,0xbad232d8,0xbacdbccb,0xbab39295,0xba9ef46d,0xba9f0582,0xbabb33ae, +0xbab6c608,0xbaafd6f9,0xba935237,0xba936794,0xba900b9e,0xba9de03e,0xba9105b8,0xba885d02,0xbaa3391c,0x3a2e056d,0xba952edb,0xba10f8c3,0xba0ad420,0xba41af48,0xb98a2966,0xba3a469f,0xba441397,0xba571043,0xbaca3364,0xbad2af32,0xba500896,0xba9b9288,0xba9659dc,0xba008f2e,0xba834c83, +0x39623ae4,0xbad9290d,0xbad1fa3d,0xbae99005,0xbb0cf7f8,0xbb3d016d,0xbb3bc37e,0xbb0c006b,0xbab92aa5,0xba9c92a2,0xbaeaa7b7,0xbadebdb8,0xbac4fa0e,0xba5bf605,0xba7183c6,0xba828009,0xbab3797d,0xba875e58,0xba1b0b50,0xba15c572,0xb8c76eac,0xba2e1823,0xba02873e,0xb9efeae8,0xb8e8eb90, +0x3903971c,0x388a3a40,0x38c45546,0x390fec1f,0x39136f0f,0xb8306ebb,0x38ec2279,0xba22df4a,0xbab1ff9e,0xb9b7c0b2,0xba819b20,0xba505bad,0xbae040d3,0xbaf4a904,0xbafb7b46,0xbb10b886,0xbb5f89dc,0xbb51690e,0xbaf3b311,0xba5f3bd5,0xba5a869e,0xbb162de0,0xbafd32c4,0xbac31824,0xb860f0f3, +0xb992e0dd,0xb970231a,0xba856cc7,0xb97dfbdf,0xba4ff12f,0xba26d275,0xb914263c,0xba54986a,0xba01af5f,0xb7f21186,0x389f31da,0xb8478911,0xb78ae940,0xb79b2c1b,0xb82d3b23,0x3584c4b7,0x38304ecf,0xb7984904,0x39a474f2,0xb967e858,0xb95d8917,0xba93ea7f,0xba614675,0xbaeecbb1,0xbb07ea84, +0xbb224b1f,0xbb8250f9,0xbbd74d93,0xbbdd374f,0xbb87d81c,0xbace684e,0xba6926e8,0xbb518ad9,0xbb251b0e,0xbabc72f8,0x3a4d4767,0x398d6fc4,0xba050f7a,0xbb075193,0xba50f879,0x3aad9e23,0x3a79512f,0x3b04d0df,0x3a3df95f,0x39a60e01,0xb6bd2b77,0xb742b178,0x35929cca,0x37658dd0,0x3581310a, +0x37a118d7,0xb7a3af28,0x35b51a08,0xb86a3e6e,0xb7f684d6,0xb8733562,0x3a22de05,0xb964ae98,0xba88b034,0xbb104450,0xbb5e1714,0xbaffb53e,0x39ac8b05,0x3b99a730,0x3bd62390,0x3bb869c5,0x3b27f67f,0xb864491d,0xba206080,0xba9c9364,0xba7cdccf,0x39c89fa0,0x39715fa2,0x3afde6fb,0x3bac478f, +0x3b4d1ebe,0x3a6387be,0x3a8b0d8f,0x3a1aa1fb,0x39a18fae,0xb792bc24,0xb8682728,0x37efab82,0x358fde4b,0xb62985be,0xb4e5a588,0xb636b7af,0x36c4b717,0x3772562e,0x374600f2,0x38645b9e,0xb86fb6f2,0xb9182d13,0xb73381bd,0x395ebf57,0xba569805,0xba5f3b3c,0xba6f0056,0xbb13f65a,0xbb6f73d7, +0xbb9ff9e0,0xbb9bd16c,0xbad68fd8,0x3ada457e,0x3b86410b,0x3acd378c,0xba4d6a59,0xbb143b68,0xbb7f7343,0xbb3466bf,0x393aa950,0x3a7a9acf,0x3b76ddee,0x3bce1c7f,0x3bb25f32,0x3a32f7bc,0xb9a67502,0x39403d62,0xb8d32b6e,0x37b37120,0xb7941d2c,0x36017827,0xb686d7f3,0xb719ec2c,0xb715f95a, +0xb7e2a265,0xb6639305,0xb8360d99,0x3955c500,0xb907b091,0x39bb0be0,0x3a455b28,0x39d4de4e,0x3a784add,0x3a9e6cbb,0x3b0c467e,0x3b4662b7,0x3b74e346,0xba4dd866,0xbb8ba444,0xbbd71c07,0xba90b591,0x3b102ff4,0x3ad7b452,0x3b6865b3,0x3aa01c37,0xbba6e8b6,0xb7f63c0d,0xbbe2b742,0xbc7df23a, +0xbb9dd396,0xba18f6fa,0xb986f460,0x383fef55,0x38357d9c,0x37ad766b,0x37816101,0x370c40ad,0x370fa355,0x376ee2e8,0x37b2f21f,0x37d66502,0x37d5365b,0x37a731c6,0xb79c0871,0xba2faeb3,0xb9f00a3e,0xba8f759a,0xbb08ea1b,0xbb1ef718,0xbb4c357c,0xbb5f05d4,0xbb6cca4a,0xbb3dd239,0xbb2e142c, +0xb83b908a,0x3b275157,0x3ba76720,0x3b07c63d,0xbbc8d0ff,0xbbd47b81,0xbbc0d7a3,0xbbb84f07,0xbb3b50c7,0xbb3c046b,0x3abd0206,0x3b47bc2d,0x3aaff1dd,0x3a653299,0xb9a5da46,0xb701d992,0xb89b3227,0xb7b26380,0xb7c23794,0xb76cab90,0xb804d128,0xb8199a98,0xb862eaa0,0xb8166501,0xb881479f, +0xb80e7402,0x3a653b38,0x3b0e4938,0x3b10e7dd,0x3b0d527b,0x3b05f4eb,0x3ab5c73c,0x3a1b9345,0xb939e646,0xba78e23a,0xbae4a050,0xbb2cc72c,0xbb5b6a38,0xbb6360bc,0xbb40aa19,0xbb12f5bb,0xbb4c9613,0xbb8b23fb,0xbba3f726,0xbb973d91,0x3aa6f8df,0x3b08a800,0x3b10932d,0x3a98ff92,0x3a47c9b9, +0x399d0272,0x391dcefa,0x38df4d9c,0x3876ca3c,0x38163692,0x37c0551c,0x3884b93e,0x38946d36,0x38e7be6e,0x38c2c2e3,0x38d0a2e6,0x39a53a7f,0x3a453495,0x3a443352,0x3a07bc9b,0xb9232c41,0xba47bc14,0xbaa3093a,0xbad4416e,0xbb088315,0xbb30d447,0xbb1751b7,0xbb07f412,0xbb02e03d,0xbb02cd0a, +0xbb0e2ede,0xbb0ea010,0xbaa0076f,0xb876fd9b,0x3a582806,0x3ad50273,0xbaced865,0xbabbaacb,0xba96542b,0xbaa23c38,0xba879795,0xba55f2e0,0xba01660d,0xb9368897,0xb8b7f598,0xb7b833ac,0x36ce02a2,0xb8c8c4c3,0xb9083a20,0xb96b9611,0xb99a0482,0xb99cd852,0xb878b01d,0x3847a49f,0x39b9c13f, +0x39bb8160,0x3852a4b2,0x393085b3,0x38cb1445,0x391a66d5,0x393a46d0,0x39516903,0xb981dbad,0xba32e83f,0xba8af43f,0xbaa4de02,0xbab28793,0xbad5b166,0xbabb6b2f,0xbabe0227,0xbacb3346,0xbacd0a0b,0xbab27b44,0xbad90987,0xba4277fb,0xbaa97b7e,0xba69549a,0xba4b0725,0xba7a0fb8,0xba606afa, +0xba67f3e1,0xba331a58,0xb9d7ef70,0xb9ad02af,0xb9338168,0x3863dc26,0x3a0e27a6,0x3a3ea022,0x3a4a563a,0x3a811efb,0x3ad3cbe2,0x3aabec2d,0x3ab348e7,0x3aaf48be,0x3aaaf6b0,0x3aaa7a9f,0x3aa5e83a,0x3aaead4c,0x3a7f157c,0x3a3d9416,0x39e954b7,0x39067208,0xb9729833,0xba1e04f0,0xba4c55bc, +0xba6fc689,0xba80890e,0xba958feb,0x38176dca,0xb954ae93,0x39e39a47,0x3a71e154,0x3abe0537,0x395bba6f,0x3a760cd0,0x3ac176f0,0x3ad7a60f,0x3ae3abd7,0x3aef1623,0x3b007d4c,0x3b0a346d,0x3b0fea4a,0x3ac1a385,0x3a593df2,0x3b13f076,0x3ad3cb05,0x3a9942ef,0x3a4dbf90,0x3a702eb1,0x3a6a3933, +0x3a70cf4a,0x3a7203a3,0x3a714bd6,0x3a7a340c,0x3a503f20,0x3a2e2185,0x3a099499,0x39d131c6,0x399bb33b,0x39390fe8,0x394634c7,0x3912daf2,0x38891fa2,0x3782f413,0x3a44a179,0xb917f076,0x378e823e,0x39c706fa,0xba705e34,0xbad90880,0xbaf1532e,0xba1f35b5,0xbabb8ddb,0xbac56db3,0xbadbc7a4, +0xbadcb5a7,0xbad6dc61,0xbafbc416,0xbafe389f,0xbace04a3,0xbad7ff18,0xba64df42,0xbae6a272,0xbad7845a,0xba8c6510,0x38947f6f,0xb9375ee6,0xb8dd181d,0xb90b7eac,0xb98baa84,0xb976239b,0xb8ba1f1d,0x38a42486,0x38ad8593,0xb928d066,0xb83ac8bc,0x37f8dd83,0x3997f6df,0x3921ba9c,0x38b71949, +0xb9534529,0x3878215f,0x3962f1e3,0x38cc4698,0xbad5d5b8,0xb996db38,0xba5f24b9,0xba632fa3,0xb9b8e5d4,0x38828505,0x38a55a14,0xb9443eea,0xba02741a,0xba69febe,0xba7b6a47,0xb9b66e04,0xbaade2c9,0xba977308,0xb9ef3623,0xba1cca59,0xbadc1ae1,0xba08d77e,0xb9006b2f,0xb9cc76a6,0xba169ee3, +0xba951184,0xba897d0f,0xb9f92bbb,0x3975048d,0x39c0ea99,0xb9b57333,0xb8807397,0x392417c7,0x3a561f27,0x39c424e8,0x38980d3a,0xba21619e,0xb81ef087,0x3a6fa92b,0x39f38e3d,0xba1dbed0,0xba043c39,0xba5a69c0,0xb9f52fc9,0xb920936c,0x38c58f9b,0xb8bdb5a1,0x38a52073,0x387b7551,0x39655a47, +0x376e3673,0x39190e85,0xb9f56a7b,0xba74e582,0xb9f84060,0xba6451f4,0xbaa9b051,0xba928ef8,0x3783ac38,0xb9bcd8dd,0xb9c68333,0xbab01afd,0xba8e22bb,0xb8ea0732,0x3a7af555,0x3a7c5e5c,0xba174af8,0x393b6543,0x3a2cc642,0x3b0fb71c,0x3a942651,0x3a4b6e8e,0xb9ee6c3e,0x3a1ce7df,0x3a47fa65, +0x382d7f68,0xba494b84,0xb9d0827d,0xb9c6e9b4,0x390df937,0x385546f1,0xb74d73b9,0x37141c09,0xb758a48f,0xb814b28a,0xb86ec020,0xb6805ef9,0xb7cd59eb,0x397eac3b,0x38a6f282,0xb9b25bfb,0xba1c20c7,0xbac3e324,0xbaac0238,0xb907e982,0xba6a4a63,0xbaef01c7,0xbb7f80c5,0xbb7ab62c,0xbadf1d5c, +0x3a4c1fb2,0x3a959826,0xbab373ca,0xb9768bb9,0x3a5f0203,0x3b460d1d,0x3a9c9030,0xb94dfdca,0xbb04de4a,0xb9f20f0a,0x3b8216f2,0x3ab92646,0x3a06204d,0x39bffbdb,0xb8d71d57,0x3846339a,0xb8805897,0x37637028,0xb6c174d9,0x36bdcf9b,0x378e40fb,0x3799f839,0x36ee43b7,0xb71b10c5,0xb8ce4066, +0xb7b463be,0x3968f2ea,0x39fe1eff,0xbaa9d98b,0xbad52b3e,0xb9c4514d,0x3a0245c8,0x3b54bb24,0x3bcc97a0,0x3bfd6ed1,0x3bd6f599,0x3b98cd8c,0x3b3fe6a5,0x3b34b56b,0x3b18d3a0,0x3b243a76,0x3b590163,0x3b49cba9,0x3b9280ae,0x3bec5f2c,0x3b9c0e65,0x3b3a6e8e,0x3b074891,0x39dc86bc,0x3a161254, +0xb88100f0,0x3808eb2d,0x368b0639,0x377d09ee,0xb6cea4f8,0x36336bb3,0xb72bd32f,0xb69054ee,0xb6e20bd6,0x37a78583,0x37ec2c79,0x385a8ce4,0xb95d9527,0x38da3152,0xb91143c4,0xb9cb5bd8,0x3a053529,0x38d5f748,0xb9c36e1e,0xbb1c8d37,0xbb801c37,0xbb88da5f,0xbab7284e,0x3ac9ac67,0x3b6fdf23, +0x3ae032e2,0xba1ab583,0xbb2c6502,0xbb69c618,0xbb15930f,0x3a067a86,0x3af7abd2,0x3b5a0105,0x3bc2916f,0x3b991d28,0x3a140bad,0xb9ab0ed9,0x39064c61,0xb8b3e298,0x37a04312,0xb76e5249,0x36abb0ca,0xb4c3bec6,0x365fe3c3,0xb68664b1,0xb72b2323,0xb80d5641,0xb6c2d924,0x3817663c,0x390763bf, +0x37ba7ef8,0x3a8b46eb,0x3ac97d45,0x3ac57d01,0x3af631fd,0x3b88842f,0x3bbbe7a1,0x3bc7aeef,0x3b049b09,0xbaadd26d,0xbb79e5d7,0x3b15a1c6,0x3bc5c4f7,0x3ba7a7c5,0x3bd5ef48,0x3b5c7d3a,0xbb4ca2dd,0x394671e5,0xbb9cb7fa,0xbc77bacc,0xbba022b9,0x36823601,0xb8a4e2ca,0x38979617,0x37e565df, +0x379c8b52,0x369f9aef,0x360f42ca,0x358f97cd,0x364b2000,0x36eee70a,0x37b4e6ae,0x37ea4ddc,0x37edd755,0x37ba39b9,0xb9eb48e6,0xba90bd75,0xbaa2a648,0xba9e29af,0xbaaefa88,0xbadfc3fa,0xbb135bc8,0xbb330122,0xbb1eccc1,0xbb138702,0x398f676f,0x3b4e47fe,0x3b8ca1ea,0x3aae63ee,0xbba6e7d6, +0xbb61589d,0xbac363f1,0xb9dc6d9f,0xb942bbbe,0xb9a5e490,0xba4591c3,0xba45330f,0x396e4629,0x39c45b2b,0xb9909a06,0xb458ed62,0xb877f652,0xb3b419d2,0xb70ad5e4,0xb63a77f0,0xb7217d09,0xb77e9f02,0xb829e224,0xb84a7b0e,0xb8649928,0xb8c34512,0x3a2912f1,0x3ab61a7d,0x3b135519,0x3b11c109, +0x3aeb2755,0x3ac8ba53,0x3a1c0f52,0x384279cf,0xb9c6b177,0xba64033e,0xbace14ae,0xbafbf61f,0xbae8ec49,0xba66b29a,0x39aeda10,0xb9fd3ae2,0xbad1e906,0xbb05fba9,0xbae1e00e,0x3b297a4b,0x3b161e8b,0x3a92cb6e,0x3a729a5a,0x3a1153a6,0x39641dd2,0x391d7001,0x386570d3,0x37bdcedb,0xb5a1de09, +0x371ef831,0x3771a494,0x380c53eb,0x38986fa7,0x38fab5d9,0x38c9cd5a,0x396cb5e9,0x3a3cfe8a,0x3a614e90,0x3a2f40ad,0x3a027dd9,0x39140fdb,0xb9ab035e,0xba459871,0xbaa9ac64,0xbb02eb7b,0xbadfd751,0xbad32c8a,0xbae4c4cb,0xbac9bbe1,0xba93af2c,0x385d59f1,0x3a23feb1,0x3ac2da1c,0x3b0799bd, +0x3b24d0c8,0xb9e0ac07,0xba615e07,0xbaa50a4c,0xba81b152,0xba959a02,0xba31cf48,0xb9b9dc88,0xb85dba06,0xb7a84238,0x386fda2d,0x36a13700,0x3642fc6e,0xb8862d40,0xb8f4b5ab,0xb9a6dd6e,0xb99eb08a,0xb976b475,0xb922dc35,0xb8979d1b,0x3a03407d,0x3a02e074,0x39949f82,0x394b112c,0x39105bca, +0x38fed70f,0x383b0e40,0xb8c00f0e,0xb98da40c,0xb9d79037,0xb9afb6a0,0xb99c0a05,0xb9b06e5e,0xb9b852d4,0xb9e49f09,0xb9ff24bf,0xba2afc7d,0xba61e426,0xba9cafc3,0xbada86fe,0xba80016c,0xba8b80ce,0xba827b27,0xba58b75b,0xba488585,0xba17e7b0,0xba06b95e,0xb9ee4ad1,0xb98cd4ab,0xb8d7e85c, +0x380d519d,0x396d8512,0x3a00efda,0x3a4f28cb,0x3a91d3b9,0x3a940860,0x3ad0197f,0x3abd524d,0x3abb2afd,0x3ab6e854,0x3ab02cc9,0x3aa898f6,0x3aa6e026,0x3a98dc67,0x3a916017,0x3a854324,0x3a5ff76c,0x3a2f973e,0x3a03e9a1,0x3973b4b9,0xb7e483f8,0xb97977f7,0xba11bc21,0x39f12b2e,0x39f2fe47, +0x3895ca50,0xb96d2d04,0xb95d7bf6,0x3973686d,0xb8d7c9f2,0xb9109c77,0xb8ab9334,0xb6dc0024,0x38b4c469,0x39099fcd,0x3945a0bc,0x39824917,0x39b549d7,0x3a45e18c,0x39e0de3f,0x3a0b3568,0x3a677ca9,0x3aab617f,0x3a9f4ef2,0x3aa292fb,0x3aa16ee2,0x3aa1f3fc,0x3aa1c86a,0x3aa22ce3,0x3a9853d1, +0x3a8e39e2,0x3a84cb98,0x3a7b84af,0x3a7025b6,0x3a683baa,0x3a51bc1d,0x3a3bc532,0x3a20d0c8,0x3a0eb894,0x3aa06040,0xba3ace88,0xb9f15856,0xba51a019,0x39611a3e,0x39fef4ed,0x38870102,0xb9208e21,0x39c3aaeb,0x39e65433,0x39b23cca,0x39835cd1,0x393709fe,0xb87be64b,0xb88acb65,0x3943657c, +0x3979de44,0xb92f8942,0x38fed848,0x39af6ded,0x38b89b3a,0xba7c97f7,0xba316eb3,0xba3bec6a,0xba4dd5d5,0xba64d11e,0xba573f2a,0xba281862,0xb9ffee6a,0xba04990c,0xba5811d5,0xba261cd5,0xba0c8980,0xb98ee9dc,0xb9bc725f,0xb9d00133,0xba22b3bb,0xb9f3ee1b,0xb9f350d6,0xb9e7b806,0x39ed5f11, +0xba034b2d,0xb91640dd,0xb9bce043,0xb9bd4120,0x396866ca,0xb940836a,0xb91e352f,0xb940646e,0xba255c54,0xba509bf3,0xb9a7ff17,0xba63086f,0xba5cc6ca,0xb8aea307,0xba0654c4,0x3848b4bd,0xba604704,0xba73efa2,0xba853831,0xbabc579d,0xbaf68758,0xbae990bc,0xba95db06,0xb9eb4771,0xb9b0f755, +0xba99e9cd,0xba3ad52e,0xb9c57ccf,0x39b5672b,0x38acc8d4,0xb92937e3,0xba4f1f1e,0xb9c1c08e,0xb880c332,0xb8d184dd,0x39c41b86,0xb95ede29,0xb9a76401,0xb98d050a,0x3734bd6e,0x387c07cf,0x3714fc99,0x3818baa3,0x384b5cc5,0x390ccf29,0x38ba2d05,0x3905e861,0xb8b6a0e1,0xba20f6b4,0xb99939ad, +0xba25b01c,0xb9cce0af,0xba8d347f,0xba8a444c,0xba8d4045,0xbabdfac7,0xbb0ca3f5,0xbaf013c6,0xba299be6,0x3990ded5,0x394bb3f5,0xbada48f2,0xba0f21ac,0x38a915fb,0x3ad25177,0x3a804f79,0x3a30db12,0xba192969,0x39ac0fc0,0xb9963e98,0xb97366d0,0x391ff183,0xb9d529fc,0xb92bac79,0x38a32706, +0x37a7a39b,0xb820493d,0xb4eef3eb,0xb731bc5e,0xb7bd4998,0xb836223a,0xb7818a7c,0xb88a5041,0x3906565a,0x38b4e319,0xb8889802,0xba47400c,0xba3b1853,0xbabaf37d,0xbab6775e,0xbae0973a,0xbb4f14f7,0xbb9d9ba5,0xbb95fb18,0xbb14b69b,0x38b8d09c,0x39588307,0xbb312077,0xba7ffcb3,0x3a14d332, +0x3b39d0db,0x3ae38ea8,0x39cd278c,0xbad766dc,0xb967ac25,0x3ac89fbd,0x3ad99be2,0x3afe2cbb,0x3a008d55,0x38aacbc4,0xb80dc077,0xb7145b87,0x376a6413,0x367d7d13,0x361da321,0x37668ea7,0x374860f0,0x378887a9,0x36c89406,0xb7ec1bdd,0xb8d45a0d,0x3960cc9f,0x39776367,0xb9654f3e,0xba721758, +0xbab641c6,0xb952aeb4,0x3ac369dd,0x3baf05e0,0x3bcfd65c,0x3b8ecf92,0x3b1830c8,0x3a49e260,0x3a60c387,0x3a44172e,0x3a88dbd8,0x3afd4b7e,0x3b105c65,0x3b5f9f9f,0x3bb597a6,0x3b4a4100,0x3a684342,0x3aa4cbe4,0x3aa9c4d6,0x39a533f8,0xb8cc0ff8,0x3808b347,0xb5181cc3,0xb5bb2de7,0xb6b9cc63, +0xb5512ddd,0xb6dad423,0xb6d16316,0xb6976682,0xb68eea08,0x37d483d8,0x38190224,0xb8dd8a3e,0x370a042d,0x39f2538e,0xb8e28170,0xb9ad61e1,0xba10a4bd,0xbade3c67,0xbb5e9b02,0xbb8b52d2,0xbb6693d8,0xba26fab0,0x3ae8761d,0x3b3ad6c0,0x3aa98e9d,0xb9c5ad9c,0xbaeab06a,0xbb0df5ab,0xba8c4c11, +0x3a687170,0x3acfb24b,0x3b461de4,0x3baac565,0x3b8c337e,0x398acaac,0xb9326fff,0x38896689,0xb83a3759,0x379adbc5,0xb65ce408,0x36a050fd,0x364713c2,0x35973359,0x3695c74b,0xb742ccb1,0x35ca36ea,0xb8878740,0x38f6bab6,0xb8d11ab4,0x399141aa,0x3a4904f6,0x3a59b6bb,0x3ad86cce,0x3b0540cf, +0x3b78b135,0x3b924a29,0x3b812216,0xb954a7fe,0xbb4d7dd2,0xbb92a56e,0x39f66e03,0x3b767174,0x3b6f79bd,0x3ba897aa,0x3b268d72,0xbb408d02,0x394ed604,0xbb75e8a0,0xbc57e160,0xbb936ed1,0x38ba658d,0x3802e3f3,0x37bb0cf0,0x37a209c4,0xb6e7438f,0xb627ffcb,0xb6ae937d,0xb5f90f0f,0xb5c7a056, +0x36c68b56,0x36838edf,0x380fda7e,0xb6ffe8f8,0x38fb7af3,0xb9e2e348,0xba5d085a,0xbac2b1fe,0xbafd1665,0xbaf7d4c8,0xbb1582ce,0xbb199c3e,0xbb1f22f5,0xbaf19d92,0xbaa6f73a,0x3ab52d58,0x3b97e836,0x3b90896f,0x3a795935,0xbbbb47e5,0xbb378123,0xba20e5e2,0x3907479e,0x3a42756c,0xb99dfff0, +0xba86c620,0xba0db7bb,0xb977163c,0x3952ae64,0xb962bd95,0x38448a55,0xb7d4d20b,0x37c9697c,0x3594d8aa,0x3709f268,0xb67da169,0xb70470e5,0xb7a70466,0xb82ef0b0,0xb7d5ea0a,0xb92e0649,0x39e84e8b,0x3ad8e2c8,0x3b05d572,0x3aff0b0c,0x3af02cd6,0x3ab1b1b2,0x3a352eff,0x3940e3e4,0xb952a055, +0xba0a4695,0xba960502,0xbabd7f30,0xbadadab8,0xba7020df,0xb8f28b77,0xb9f00456,0xba994d7d,0xbaf3c902,0xba1efa40,0x3b0cbefb,0x3b3d7336,0x3b10e8d0,0x3aa6a5b3,0x3a19e61b,0x37edc57d,0x38bbbd6e,0xb8337a5b,0xb7851951,0xb7c9c7a8,0xb749c883,0x36265c8d,0x378db3ea,0x3817423d,0x38b03d82, +0x38b34d56,0x39509193,0x3a48e9bb,0x3a7465e5,0x3a60a022,0x39bdab9c,0xb88b706e,0xba0620c1,0xba2501a5,0xba876462,0xbae6a3d0,0xbada1f34,0xbae741e6,0xbb0139e0,0xbaf28a80,0xbad8d659,0xba627a48,0xb9d62544,0x3a222c82,0x3ab4ae9a,0x3b115ab9,0xba40f2b5,0xba25e311,0xb9ebbefa,0xba02f877, +0xb9d90078,0xb990c299,0xb8e4305a,0x390dadbf,0x38b3c2c5,0x38af1e61,0x385bf1d8,0x3796155a,0xb748c5ea,0xb845aa0d,0xb93eda8a,0xb99afd4f,0xb93cf524,0xb915b5af,0x393d8403,0x399b640b,0xb8dd8b26,0xb8c38893,0xb99150d4,0xb9b12160,0xb9da81f1,0xba038c52,0xba0f3d5a,0xba1a2246,0xba196918, +0xba108547,0xba0acd1b,0xba24eff4,0xba0bfa85,0xba16d5b8,0xba363865,0xba3845b8,0xba7911f4,0xba95be78,0xba6d8c17,0xba8ab029,0xba61dd19,0xba541300,0xba64ea07,0xba48910b,0xba3c327a,0xba091727,0xb9c3d590,0xb998017d,0xb9827aeb,0xb90917a8,0x392b343c,0x39bb0c66,0x3a1ca025,0x3a47f9e4, +0x3aafaac1,0x3a92100c,0x3a86a1e6,0x3a860ac2,0x3a7d8b8d,0x3a74d351,0x3a67b7b7,0x3a637bf8,0x3a270481,0x39f9a289,0x39ad3fb7,0x3921a8c2,0xb77fa9c1,0xb9337079,0xb9b7f180,0xb9f9c9eb,0xba11bce3,0xba3b4da5,0x3779b84f,0xb90458be,0x39f6424d,0x3a2ed8e1,0x3a1e5880,0x399a482d,0x3a2ad628, +0x3a293df3,0x3a45b6cc,0x3a5379e4,0x3a6394a7,0x3a7d8dd8,0x3a8e1ebc,0x3a96ba1d,0x3a9ac227,0x3a57645d,0x3aafac33,0x3aacd3dc,0x3a8d613b,0x3a10f2f9,0x3a2e63a1,0x3a261121,0x3a23d57d,0x3a21185e,0x3a1c67fa,0x3a1cf8e0,0x3a07a574,0x39ea5195,0x39c13f63,0x39a312a8,0x398a0144,0x396c6b36, +0x3951e4ac,0x391b8640,0x389644c8,0x38069334,0x3a144426,0xba495c32,0xba0902d4,0xba00e00a,0xba9e0cb9,0xbaa28801,0xba1888b9,0xba9019c7,0xba9468c4,0xb9e0850e,0xba24a96c,0xba31f7bf,0xba2d7439,0xba6f8b2c,0xba67af47,0xba0e4eae,0xbaa67ab5,0xba9d5b01,0xb9fdb9a5,0xbaa38eec,0xbaa9331c, +0xba33e010,0xba423381,0xba4c2163,0xba619bd7,0xba6eb17a,0xba649fcb,0xba44b554,0xba1b12fa,0xba1f2873,0xba728123,0xba41be3b,0xba2c7fcc,0xb9c9be07,0xba19ed38,0xba22784f,0xba3a0e84,0xba0fe974,0xb9b9a9d5,0xba434cf3,0xba7fa381,0xba3b6992,0xba5a701f,0xba5fa8bf,0xb9ff519f,0xb60f49e7, +0xb931d6f6,0xb9a0f3a0,0xb9c5d447,0xba29e3e3,0xba3cb3cf,0xb9f28f94,0xba8ba511,0xba947d62,0xba4a6bf6,0xba438000,0xba87990c,0xba99da2a,0xba74508c,0xbaab40e8,0xbad60e24,0xbafa4829,0xbae2d41f,0xbaa04a86,0xba102eca,0xba09879c,0xbabc0fc9,0xba818a2c,0xba41e6ed,0xb8411dbb,0xba22420e, +0xba4cfcbe,0xba7ab070,0xba154f70,0x39555746,0xb9e4200a,0xba4a7cb7,0xba269e88,0xba20ed8f,0xb97a30d3,0x37c1102d,0x38a7a42a,0x37bd7d52,0x38f69e25,0x390754dc,0x3985225a,0x391b10dc,0x39335603,0x3888cb20,0xb9aa689e,0xba0042e3,0xba53563c,0xba97c3c1,0xbabdb796,0xba78b904,0xbab915c1, +0xbaedbe17,0xbb16e923,0xbb02375f,0xba98405a,0xb9351d33,0xb99cbda5,0xbb0b651e,0xba893aa5,0xba1d1ba0,0x3a7f8a42,0xb9b9908b,0xb9dbb972,0xba3f8f0b,0xb85dfc52,0x3982db88,0xba234f13,0xba3b7d1d,0xb9cc7e10,0xb84514d3,0x3914c5c0,0x33945474,0xb80d7e4a,0xb7989656,0xb833f07a,0xb88a89f7, +0xb8cfeced,0xb884c1b2,0xb88c465e,0x37303270,0x393518bd,0xb88936dd,0xb9f70cc9,0xba9cdd68,0xbae11da2,0xbabb3377,0xbb2552b3,0xbb810c94,0xbba68750,0xbb973b2b,0xbb2df09c,0xb9b57174,0xb9e2b038,0xbb5ceae2,0xbaf6c50c,0xba2540d2,0x3ace78bf,0xb9feb0aa,0xbaabdf74,0xbada8889,0xba0cf299, +0x3a9aa102,0x39ad0a25,0x39a10857,0x39237be7,0xb7737813,0xb800511f,0xb7af7495,0x37bf49fc,0x370c8f8e,0x37b169ce,0x380aa722,0x383bd653,0x37f9c7f9,0x380a02d3,0xb7bbe37b,0xb87e6665,0x37e3e67e,0x39b1f5c6,0xba290051,0xbabe9d01,0xba409297,0x39f3939b,0x3b2e3b1a,0x3bb08b16,0x3bc800d1, +0x3b8ca347,0x3b27527d,0x3ab39c7e,0x3abc91e6,0x3aa988f5,0x3a840d49,0x3a300fde,0x3aa23c42,0x3b225252,0x3b9678df,0x3afe606a,0x3b01bf04,0x3a7b10eb,0x39b08a11,0x3939aa14,0xb89297c7,0x386a1085,0xb71f2b40,0xb45c0bba,0xb7550969,0xb7186cb9,0xb7acae0a,0xb7abc720,0xb7a0de51,0xb70b951a, +0x342f68dc,0x387e69d4,0xb8b9fa81,0x367dcbd9,0x3944e780,0xb9bfe274,0xba4446ea,0xbae57d7f,0xbb3cd543,0xbb855fa2,0xbb8d7a0d,0xbb578baa,0xb9caebc5,0x3ae30a2a,0x3b1f01bd,0x3a8cd716,0xba356bcb,0xbb219529,0xbb3320ba,0xbab7a03f,0x3aa19b08,0x3af93041,0x3b1fe378,0x3b9207a9,0x3b5b20d5, +0x38e97e82,0xb92b7c86,0x3862a2c9,0xb8194899,0x37a99ac7,0x363c210a,0x37542482,0x3763f9a0,0x37713bd9,0x373fbd52,0x3667bf86,0xb674b8da,0xb80a790d,0x37e29fa9,0x382cdb19,0xb9c34ee0,0x39db8212,0x3ab1df3e,0x3b0011b1,0x3b254444,0x3b861aa9,0x3b8920d7,0x3b33028a,0xba4ce3a7,0xbb3a6f5b, +0xbb563317,0x3abea6b0,0x3b6c88d6,0x3ae647f5,0x3b0f0e01,0xb9f59e21,0xbb9e7350,0xba27a73e,0xbb936dbc,0xbc3d0bcb,0xbb8206f2,0x396d11e0,0x388dddab,0x3666c1ca,0x37876dba,0xb77c6b33,0xb730c9de,0xb78668db,0xb7930f9a,0xb7888c1a,0xb70b20fa,0xb6cfdd81,0x37a8852f,0xb5a7ee6e,0x38aff312, +0xb9457057,0xba979ce1,0xbad6a451,0xbaec4049,0xbb08fbb8,0xbb231077,0xbb300689,0xbb317364,0xbb0caed5,0xbadb026e,0x3a1bd575,0x3b697b00,0x3b161c94,0xba58f745,0xbbb222ab,0xbb6eabd0,0xbb09eb8f,0xbaf8e4a1,0xbac6b484,0xbb0437e8,0xbb8ded47,0xbb1a700d,0xba3f4f5c,0x390c39e4,0xb919b2f1, +0x38180a2d,0x35e456e6,0x3808d151,0x37cd4033,0x380fc128,0x37da4a29,0x3751762a,0x36e9a715,0xb7fde180,0xb720a967,0xb90ae9ce,0x3948a873,0x3a70031c,0x3ada6bdc,0x3ae0c863,0x3ac7097d,0x3a9f50ed,0x39c89972,0xb9ae46ba,0xba92a551,0xbac20e61,0xbb1192bb,0xbb2dfb67,0xbb1b1c3e,0xbad15f71, +0xba7aaa2b,0xbad0ab4a,0xbb1706aa,0xbb2f8bfc,0xbaeb414a,0x3abdc3d7,0x3ad7632e,0x3ad07ac8,0x3a57a62f,0x39a7bc98,0x3820ec5a,0x38304d4b,0xb896b0a2,0xb8255c78,0xb88cd4db,0xb88a0044,0xb86a97ca,0xb7e50e3a,0xb6d36a68,0x37eec7be,0x38d47bf5,0x38713088,0x3a21766f,0x3a8240c7,0x3a826a47, +0x3a2190b1,0x391b02bb,0xb9c706f4,0xba509ea7,0xbaa6f791,0xbafe714b,0xbae6b381,0xbad3aa42,0xbacdffdb,0xbac07a45,0xbab04330,0xba49e80c,0xb979245d,0x3a09b763,0x3a7d0a35,0x3ab46272,0xb9e802b2,0xba17d020,0xba5fea16,0xba1e244e,0xb9fa958e,0xb969d55a,0x37add6a8,0x39424b8e,0x38e082e2, +0x3934450c,0x391fbc05,0x3915baf0,0x388ccb99,0x3847fa2f,0xb83bc064,0xb9684781,0xb98daa1d,0xb9b446d5,0xb9c7ec2f,0xb8cf8673,0xb92fb051,0xb98702ad,0xb9a71ae6,0xb9e1ac14,0xba0aaa5a,0xba2d4b18,0xba3fcce5,0xba633860,0xba78e182,0xba65ed47,0xba4e9ed1,0xba5560bf,0xba3a7dcf,0xba3b7468, +0xba2e3ed9,0xba295641,0xba71b4a9,0xba98c2d6,0xba9848cb,0xba8369d5,0xba8be6a4,0xba769c79,0xba592eef,0xba3fcd61,0xba1aeec6,0xba0efe88,0xba01bdc2,0xb9ddeea8,0xb9be9b25,0xb9afc220,0xb94b1ddd,0x3717f3be,0x3939a9f6,0x3a0d17a4,0x3a646d24,0x3a914138,0x3a8774e0,0x3a787523,0x3a6929fa, +0x3a5513c1,0x3a4451d6,0x3a390ffa,0x3a16ee5f,0x39f3bdbe,0x39a31f09,0x38d9ff9b,0xb908be07,0xb9b9f42c,0xb9f28757,0xba1393cf,0xba26ce7b,0xba514368,0xb9113a97,0xb91f8d43,0xb9cdd317,0xb9bf926b,0x389711ca,0xb9c771fe,0xb9bd00a2,0xb8be6779,0xb8735b78,0xb6fcc392,0x38a12adb,0x3913673f, +0x3982a8a5,0x39b88665,0x364e18be,0x381ace87,0x3a272296,0x3960d64c,0x397ce660,0x3a0d9521,0x39fd0818,0x39f7d7ef,0x39f0afc8,0x39ea9ca4,0x39e1c81e,0x39dd1340,0x39ad864c,0x3982d90c,0x393b25bf,0x38fd2cfc,0x38a07dad,0x3770bd67,0x350a53c6,0xb82e58da,0xb8ba0a32,0xb8ff7ee7,0x398f547d, +0xb937db78,0xb85c6f39,0xb8c82a4a,0x3925f1ce,0xb925eac1,0xba783207,0x38d1bca0,0xb8f84963,0xb9c4bacb,0xba0ecddb,0xba2114c0,0xba2b152c,0xba683075,0xba7ef5eb,0xba5505b8,0xb991e028,0x380e7769,0xba7eb245,0xb96fe609,0x388020ed,0xb94e190e,0xb9559eb4,0xb93a768b,0xb98c0869,0xb98b0993, +0xb96174c5,0xb8d2cafa,0x37b62a06,0xb6cf30a4,0xb9ad3ec5,0xb8b08cb4,0x37c02846,0x3997b96c,0x3903ad1f,0x3861ff98,0xb94188b2,0xb6d7b0f3,0xb737a734,0x3850bfc1,0xb9a409ed,0xb8d73049,0xb92cbbda,0xb9d06ba4,0xb91d61c0,0x399f2bc3,0x38b60f4c,0x38be0f55,0x38536098,0xb9131123,0xb953360c, +0x370a890a,0xba19b55f,0xba29d804,0xb8f38641,0xb9582597,0xba0a6f8f,0xb992cc55,0xb9b2d1e5,0xb9e9c7b8,0xba4d4345,0xba707aae,0xba480024,0xb9b362de,0x395d6365,0x3959c93a,0xba2b9531,0xb89a0d35,0x398f920e,0x3a785750,0x3a08487e,0x395f0706,0xb9ce78b4,0x379b140c,0x39adaf83,0x38cd0236, +0x396bf42c,0xb8d557b4,0xb9950d06,0xb8a03f58,0x380e3778,0xb856730e,0xb835f13d,0xb6b8824f,0xb620f34e,0x3896e202,0x388ad101,0x388b6b95,0x38c03b8e,0xb886d0ca,0xb989710c,0xb9d313c0,0xb9b96cc0,0xba1d48a4,0xb99a08a9,0xb9eb8839,0xba4a41cd,0xba7cc13b,0xba27f725,0x38c573a3,0x3a54deb5, +0x3a258766,0xba94604e,0x3966260c,0x3a59e323,0x3b157e2b,0x3aa61122,0x3a5bc16c,0xb9a01fa8,0x39fe961a,0x38d1ee78,0xb922530d,0xb80484a6,0xb9362583,0x37b8387c,0x388d48d0,0xb7819f65,0x378463cb,0x378c0ddd,0x35eaf646,0xb6c91745,0xb7fcf35b,0xb804a8f8,0xb8159f55,0xb7da3ddc,0x38917b13, +0x3819021e,0xb9a5d0d7,0xba349537,0xba84b489,0xba330d83,0xba97f571,0xbb13fda7,0xbb3cc47a,0xbb1c6bff,0xba57e05e,0x3a823691,0x3a2d27f2,0xbb0dd0bd,0xb967834b,0x3aac5e13,0x3b5ebab6,0x3aeb4cd0,0x39c306c7,0xbaaa5067,0xb8af7ccb,0x3ac7b565,0x3ac1d304,0x3a835e34,0x392c625b,0xb84cc8ea, +0xb736301c,0xb6a43eaf,0xb4b67c25,0xb70bbdf5,0x3512a748,0x368d9803,0x377655e9,0x3769f364,0x37b63a0d,0xb4adec21,0xb7a81c6d,0xb82cf884,0x3997390c,0x3832caf4,0xb921dee1,0x39c4110a,0x3a99a54c,0x3b20c526,0x3ba30eca,0x3bab753b,0x3b4111ef,0x3aeb0251,0x3a9faaac,0x3aeaf873,0x3b0f6033, +0x3b19113a,0x3b1433a7,0x3b3d62dd,0x3b712a9b,0x3b9f6f80,0x3b1e6c40,0x3abb56e4,0x3a9371b7,0x3a75b559,0xb86113fc,0x37a5d48e,0x37396207,0xb6158778,0x359287e7,0xb3980694,0xb50b087b,0xb697e038,0xb6dc451b,0xb72446ee,0xb6cfc722,0xb704d285,0x380cf256,0xb7dcf856,0xb886f192,0x3950548a, +0x39066a61,0xb8b91ade,0xba13ff0e,0xbaa2bbcb,0xbb395aa9,0xbb4c6a56,0xbb019f2f,0x39e9ef84,0x3b0481ca,0x3b099008,0x3a9b7179,0xb8b74ad0,0xbac9a452,0xba85203f,0x38a4de5a,0x3aced317,0x3b0bf8d7,0x3b17df1d,0x3b83ee4b,0x3b2f56d4,0xb9497cb9,0xb85de111,0x37c5fe9d,0xb7468738,0x37245d6d, +0x35b4af12,0x369d8675,0x3691b525,0x36af3e74,0x36e05ced,0x363c4799,0x366dea3d,0xb7bf82b8,0x36e866cb,0x37e280a2,0x38928b10,0x3a4a312e,0x3ab6209e,0x3b0fa8f1,0x3b388b5a,0x3b9ce069,0x3ba76b91,0x3b70fa27,0x39fa073f,0xbad14962,0xbb0a9d8d,0x3b00f1d0,0x3b971f8b,0x3b96d828,0x3ba71bbe, +0x3b23bbae,0xbac58f1c,0x3990bc13,0xbb126fc2,0xbc18e92a,0xbb5a299f,0x3a08d6ff,0xb7d9a676,0x37089936,0xb69dfa67,0xb728716e,0xb72f7f14,0xb70c507c,0xb70200ea,0xb6eb0429,0xb6bf12c0,0xb6c4c91a,0x371e162b,0xb586e525,0x388adb2b,0xb89be6cb,0xba6ba1f9,0xbabd7c0e,0xbab3281b,0xbaa40a4d, +0xbabf7516,0xbabd3838,0xbac56f84,0xba9e1f59,0xb99d6efc,0x3af586a5,0x3b9a3afa,0x3b222a48,0xba019557,0xbb875da4,0xb9d74204,0x3b0f40a9,0x3b5b3b02,0x3ac2e15d,0x3adaeea3,0xbb51b977,0xbb34b60e,0xba1adaf6,0x387cb8f2,0xb82668e2,0x37d56c25,0x37832cc2,0x37db77e3,0x37897007,0x378287ab, +0x375f7fdf,0x36e6eafa,0x37649ed4,0xb7d7b276,0x376dca6a,0xb912960c,0x38c9f19d,0x3a908cb4,0x3aec3afa,0x3ad56df8,0x3ab57845,0x3a897882,0x3a00530a,0x39163fd4,0xb8cdf78d,0xb95e2938,0xba172986,0xb9c37554,0xba143d6f,0x39931cc8,0x3a9c0beb,0x3ac5436d,0x3ab3300e,0x3a8dff63,0x3b1fb0f3, +0x3b09612f,0x3b281f5d,0x3adc6609,0x3a70eb6b,0x38a1d2f1,0xb7ae1939,0xb72db750,0xb8754d2d,0xb842a655,0xb822e0c8,0xb8099d35,0xb7d21815,0xb7ad6de7,0xb72a4ef5,0x36e62d54,0x38a264d7,0x37c2b30b,0x3a158b18,0x3a7a9405,0x3a81dab6,0x3a4947e8,0x3a0ebd7a,0x391e6916,0x38a14da1,0xb9a4012c, +0xba8798f7,0xba9499ee,0xbab13ea3,0xbad50b89,0xbab4d23c,0xba789378,0x392f068d,0x395202af,0x3a638178,0x3ab01f9b,0x3aefb672,0x38b46c82,0x387aebee,0xb8f1818d,0xb7812548,0xb88512f1,0xb7739003,0x38cae97a,0x3901d77c,0x38edbde5,0x38b41966,0x38a4a787,0x387789e4,0x3838101e,0x380684b8, +0xb73c5511,0xb90656b8,0xb95a3cc5,0xb9920484,0xb931fc1d,0x3865b4b4,0xb94fdd01,0xb99032c4,0xb9e340ce,0xba11a243,0xba30fc98,0xba54a3c8,0xba24eb76,0xb9fa96e8,0xb9a32907,0xb8ef7e58,0xb607bc32,0x388ddeac,0x3893aade,0x3801885a,0xb787ff43,0x37c91e5c,0xba099917,0xba25ed6a,0xba81664f, +0xba362cbb,0xba396782,0xba2afd0d,0xba10f9f1,0xb9d4451a,0xb99303c1,0xb988456f,0xb9695152,0xb9377cc0,0xb9089724,0xb8c158f9,0xb8d53515,0x35ba530f,0x399fcaf2,0x39f79328,0x3a57d415,0x3a58631b,0x3a29f739,0x3a2786b8,0x3a1682d8,0x3a069a36,0x39eed23f,0x39c92b59,0x39a533e0,0x398e8f9c, +0x39838d4a,0x39543305,0x393a16b3,0x39344a13,0x37c77533,0xb8b6557b,0xb94c9154,0xb9b1e254,0x37d19823,0x373f053a,0x3931efc3,0x382a881b,0xb9a01de5,0x38eca084,0xb60302e7,0xb99b4ab8,0xb98ccabf,0xb95548c0,0xb921d122,0xb8cf07a6,0xb872eadc,0xb7a99540,0x39d2d869,0x3a01d860,0x39860008, +0x3a137d3f,0x3a23b8c8,0x39c5f5b5,0x39d378a5,0x39c74552,0x39b6e8e7,0x39ad72e9,0x39a09c2d,0x39935f4f,0x398e5336,0x39852e4d,0x39777881,0x3975b035,0x39753f22,0x3987798f,0x395942f5,0x392b595e,0x38e46eb9,0x389f9464,0x39c2c333,0xba7df050,0xba41115e,0xba7f6dde,0xba5a8bd0,0xb9ea62f7, +0x396495fc,0xba750197,0xb9f7839b,0x399d17fc,0x38e68363,0x38232706,0x3845e57b,0xb9118071,0xb9146d83,0x3870008e,0xba189562,0xba75fc2a,0x398b1cc0,0xb9f32bf9,0xba5e35bd,0xba85373e,0xba6f4299,0xba8306bf,0xba8fd478,0xba8cc02e,0xba875d10,0xba78901e,0xba5a1ec1,0xba622d0d,0xba995359, +0xba7dbac1,0xba691b05,0xba29a840,0xba5ccdbd,0xba60955f,0xba603c9b,0xba4ce562,0xba363840,0xba8aec7c,0xb94629ef,0xba4217f9,0xba1c35e7,0xba12ecfd,0xb9a46c1a,0xb7d4f2fc,0xb931531f,0xb9485721,0xb9379b2a,0xb99f6976,0xb9a8e804,0xb9852286,0xb9fe9aba,0xba3c8955,0xba3ee192,0xba1fc1a1, +0xb988f4b9,0xba9e8f65,0xbaa11208,0xbac96103,0xbaf84cf6,0xbafbfead,0xbae2e724,0xbab3d8f9,0xba60b008,0xba6c5b14,0xbae5f933,0xbaa75cf2,0xba85b290,0xb9d043eb,0xba6a3971,0xba81c6d1,0xba8000ca,0xba49fa24,0xb9cfabe0,0xba70bb06,0xba02d818,0xba051416,0xb95bc819,0x381b008a,0x38d864b0, +0x380bb18d,0x383947eb,0x3890b4c5,0x3888fcbf,0x38e682de,0x38dfc14a,0x38e5964c,0x391eb9e9,0x38cd3f0d,0xb91677a3,0xba0e2ffa,0xba1e18f1,0xba9d1a98,0xbaadcf79,0xbada63f8,0xbb0f5cd5,0xbb12186c,0xbafbcf17,0xbab0e67d,0xba29f0a1,0xba63ff48,0xbb25e95a,0xbab94c80,0xba848637,0x39b653a5, +0xba54119f,0xba4afa3d,0xba487ffe,0xb9d47054,0xb9dc2f5f,0xba87c732,0xb9d2d17f,0xb9478980,0x38ffb701,0xb6d7c0ce,0xb8148e97,0xb7c3169c,0xb78a88e5,0xb7f7f901,0xb8020bfc,0xb8434e53,0xb840fb49,0xb8576bf8,0xb880a2be,0xb79f279a,0x38cff57c,0xb968fdb7,0xba1ea8b0,0xbac4eb61,0xbafe7794, +0xbb3d239a,0xbb8ba1f5,0xbb94baf4,0xbb80fba1,0xbb24bdec,0xba5082c7,0xba99c084,0xbb7c35f0,0xbb192db9,0xba8eedb7,0x3a5e79d0,0xba569319,0xbab4414e,0xbaa9b7fa,0xba1e7fc5,0xb9c2caed,0x38b7fdc1,0x3a004366,0x37d5e2b3,0xb7493fe5,0xb7b5c017,0x37df75c3,0x370098a2,0x37423b59,0x3752e408, +0x378ec18b,0x37af1ce6,0x37c5efa8,0x37bc13b0,0x38104d8d,0xb74e4662,0xb7682b67,0x38e59d0b,0x38062eef,0xba42c494,0xba132a5d,0x3a23bee5,0x3b008978,0x3b8707dd,0x3b89e19d,0x3b136217,0x3a50e1ac,0x392e51db,0x39fc0639,0x3a58616b,0x39dfe36f,0xba28e651,0x39f12719,0x3ab8a95c,0x3b337b40, +0x39cea01f,0x3a92b51b,0x39d0671e,0x39c47043,0xb92a4855,0x38baff64,0xb7f9233e,0x368a864a,0xb770d2a3,0xb6899c9c,0xb71c337e,0xb717e5d1,0xb748afb9,0xb743aa9d,0xb769094f,0xb762ac27,0x3608d786,0x37a8fd75,0xb8d3766d,0x396e5dad,0xb9a3a38b,0xbab61b88,0xbb1c88b2,0xbb6d20fe,0xbb88881a, +0xbb6adde9,0xbaf65808,0x3a272084,0x3afb8a7d,0x3ac5a048,0x3a2101e1,0xba055ba1,0xbada61e5,0xbab046c3,0xb975c48a,0x3ad97b7e,0x3ae97b1b,0x3acc7d36,0x3b47866a,0x3b0442ea,0xb9a37cfa,0x37cb8ac5,0xb5ae8bcd,0x3708cb63,0x3712ef69,0x37040d8f,0x36f1b0a1,0x370bc200,0x37097d37,0x3715a505, +0x370c91ff,0x371d454a,0xb69d3c4c,0xb763e64c,0x385d1146,0xb94526bd,0x393f6d10,0x3a959fd5,0x3b0ac39e,0x3b348946,0x3b685110,0x3b327110,0x3a096828,0xbb14974c,0xbb5e34f2,0xbb2a04d1,0x3a09a18f,0x3ad99946,0x39903a93,0xb8bcdb36,0xbb03b52b,0xbb8f9fed,0xba4c00bd,0xbb66814f,0xbbeeddf4, +0xbb227af8,0x3a0b9e33,0xb8860f66,0x36595040,0xb73c5723,0xb78604c0,0xb7431417,0xb74231bd,0xb735c353,0xb72e1a64,0xb71f755f,0xb730e0e7,0xb6adf3fd,0xb60c08ba,0x37f0719b,0x38138721,0xba3d274a,0xbac82ce4,0xbaee7c66,0xbb0b6c3a,0xbb2398a0,0xbb198add,0xbb086b9f,0xbac6ca4e,0xba0e8a96, +0x3aa60d43,0x3b6d814b,0x3a7055c3,0xbae3e2a5,0xbb88f113,0xbb2d0198,0xbab614e4,0xba85f65f,0xbadda9eb,0xba947de3,0xbba01792,0xbb18c573,0xb9eec05b,0x38eaeffd,0xb8041a41,0x3826c76f,0x37bcb1dc,0x37e0f7db,0x37a88f3e,0x37abcd51,0x379be9bf,0x3771f616,0x37ad03cd,0x360e7a76,0x375e369d, +0xb88d4c8e,0xb86db6b0,0x3a3fa3b8,0x3aa7ed90,0x3aa017ca,0x3a973152,0x3a4813d2,0x39632245,0xb9d53eb4,0xba9d40ab,0xbab70872,0xbafe895c,0xbb09a7de,0xbb012bf6,0xbaaf9593,0xba6bdb25,0xba66a495,0xba784ade,0xba8af098,0x3887abfd,0x3a0aa4a5,0x3aa9c7fd,0x3ae121cc,0x39ff9ee3,0xb790d3c5, +0xb8049937,0xb83e035d,0xb88ac875,0xb846f7a7,0xb83e56a2,0xb830c6f9,0xb818499e,0xb8123c9a,0xb7f0241d,0xb814c2ae,0x381a1197,0xb630233d,0x39bf725b,0x3a6a1ec6,0x3a85a8e5,0x3a1e6c15,0x396889ec,0xb9450c0c,0xb9dc4181,0xba4b9d09,0xbab2fe08,0xbab62e76,0xbab0d44e,0xbaa8c2a3,0xba9f5dcd, +0xbaa33e00,0xba90fe06,0xba5e8677,0xb9a12871,0x36fcc887,0x39bb11fb,0xb9760de7,0xb8f9bc95,0xb96da114,0xb8a71c68,0x3805f875,0x3887892c,0x39147e2c,0x3910be77,0x38e870c0,0x38d7b9c4,0x38ca8f40,0x38b6fc3f,0x389e2ad7,0x38a84f46,0x387f9251,0xb62daa80,0xb90be813,0xb9b26214,0xb9e444eb, +0xb9f3a669,0xba1cf039,0xba14b60a,0xba20870d,0xba3cb26e,0xba59967a,0xba770452,0xba79dcef,0xba852858,0xba88ea81,0xba784cc5,0xba574c11,0xba4c1bc4,0xba23ba4d,0xba15671b,0xb9fad20e,0xb9aae446,0xba491221,0xba623267,0xba1b5d79,0xba4e8cef,0xba3de472,0xba1861b8,0xb9ed25cc,0xb9c687ba, +0xb997301c,0xb99d6738,0xb98dc97b,0xb989d527,0xb972a818,0xb980fb9c,0xb956f5ac,0xb94e9d81,0xb92d5984,0x389a900f,0x3a1290c0,0x3a03a1ce,0x39f37eae,0x39c4dbe5,0x39a458d7,0x398106a1,0x394a2c09,0x39172fb2,0x38003fc8,0xb894c9ae,0xb950bfab,0xb9b9deaf,0xba0c28c6,0xba3b497c,0xba3e934c, +0xba3da3f9,0xba3dc740,0xba45b967,0xb9daf36a,0xb9f2ab1d,0xb9c762a5,0xb93c6a18,0x394748ef,0xba04ad73,0xb99978cf,0xb851694e,0xb7f6632a,0x37c397eb,0x38b6dbc6,0x3910c720,0x395de8c7,0x3998ae74,0xb7a086ba,0xb9653ac7,0x3a25ec64,0x393b67b1,0xb7b67adf,0xb8666b90,0xb8366d3d,0xb8a0998b, +0xb8c22780,0xb8e9861d,0xb90d7124,0xb91f5e71,0xb96285ac,0xb98e228c,0xb9a6bda0,0xb9bc1893,0xb9c9e4a8,0xb9e22d9a,0xb9d6015e,0xb9db0e10,0xb9de6770,0xb9e3595b,0xb992982c,0xb8a43128,0xb7a4f098,0x38c3587c,0xb99c9ae8,0xba3f25fe,0xba9a65c4,0xb9220860,0xba1c0618,0xba292c04,0xba52e2e9, +0xba607dc4,0xba648f68,0xba87e2de,0xba90d12a,0xba845685,0xba4486ea,0xb98366fa,0xba9f8a83,0xba374f07,0xb9a6fa0f,0x3881def6,0xb8e86f9c,0xb8a94fc5,0xb92b5249,0xb8e21e9f,0xb8944bd0,0xb7dd2907,0x38723b72,0x37f85846,0xb96d2bb6,0xb76873b9,0x389cd783,0x399f77d5,0x38ebb5a9,0x384a287a, +0xb8ceb7e4,0x37fcad30,0x385a033c,0xb7d92f66,0xba57e84f,0xb8abf41b,0xb9b83023,0xb9bc6523,0xb828e770,0x39611395,0x38d8ce6a,0x39075885,0x39040aaa,0x38cce1e0,0x38a2187c,0x3915d16b,0xb95f81a5,0xb9ba21d2,0xb9aa1eda,0xb9169c89,0xba4cd4e4,0xb93ec7ca,0xb96129d5,0xb9cc7611,0xba1fac8a, +0xba0ae287,0xb9bf05b0,0xb92cdfbb,0x3961614b,0x391dbe93,0xba0f49e8,0xb84c57df,0x396dcf2e,0x3a4b58f1,0x39a0ef5f,0x38914ddf,0xb98c2fb6,0x35ea6c10,0x39a8b562,0xb91b7b26,0xb96ad2b7,0xb9448d0c,0xb919d387,0x38be844f,0x38020591,0xb86fce87,0xb7ebb8ec,0xb7ad8d5d,0xb7e12e80,0xb5808754, +0xb6980683,0xb679091b,0x3877f8e2,0x390601d7,0xb89c3a03,0xb9616c40,0xb9cb2b04,0xb9d3cb3e,0xb8d00e3c,0xb9c595dd,0xba265906,0xb9fe3311,0xb960240c,0x38951ddc,0x3a14ad9b,0x39b88b7d,0xba7d80ea,0x39329e4f,0x3a2362ef,0x3aef5683,0x3a366438,0x39d4ddfe,0xb938617f,0x3982f2a4,0x394ced9d, +0xb9e3f000,0xb9b49ccb,0x372c508b,0x38536b00,0xb7272151,0xb7cdd3fd,0x37c17817,0x37279c7c,0x36dd7b7f,0x36dbf084,0xb611608e,0xb6a9a8bc,0xb30b77df,0xb81b719c,0xb7d49a83,0x3795aa9b,0x3790239b,0xba0a27d3,0xba449b57,0xba15a227,0xbaa15a6e,0xbb01d76d,0xbaf3a053,0xbaa980c1,0xb9f9d4b8, +0x3a42f997,0x398f1b46,0xbaf84dc6,0xb9b4b14a,0x3a618b5b,0x3b279c4f,0x3a6ac3dd,0xb8e99c12,0xba5cc40c,0xb91c3e86,0x3a8eb8f2,0x3a720694,0x3935dc3b,0x387c926c,0xb86492ec,0x3780da0b,0x36d3fa3c,0xb6d06bb2,0xb6ba707c,0xb60527f7,0xb6296352,0x36346630,0x351352a2,0x36ed54ca,0x36caab95, +0x38100ece,0xb8917c7b,0x3914addd,0x3810df5f,0x3950af70,0x3a9ba1ee,0x3aeecd8d,0x3b39e84f,0x3b8398d4,0x3b7ae6c5,0x3b00e722,0x3aa740e0,0x3a9e0842,0x3ae89742,0x3b1ff57b,0x3b14faaf,0x3a9a6cbd,0x3b09f96e,0x3b2f14ed,0x3b5c100a,0x3abb94e2,0x3abc78b3,0x3a749cff,0x398b084e,0xb8f957d1, +0x38a2e2aa,0xb812c823,0x37182272,0xb698579e,0x3699f057,0xb4f07da1,0x34d054c1,0xb54e6638,0xb64219fd,0x34c8097e,0xb754b43b,0x36406473,0x35bcb370,0xb78ed5d4,0xb86f75b7,0xb8a4aaa8,0xb9f3af93,0xba9a7385,0xbad8d95b,0xbb28f1c0,0xbb16c927,0xba8a8914,0x3a5cb0ad,0x3ae71e49,0x3aa89a9d, +0x3a2ef468,0xb97c8d7a,0xbab96cdf,0xba214127,0x39bbffb7,0x3acbe944,0x3afc07e8,0x3ab08b8f,0x3b257c03,0x3a9bbe19,0xb9a69bc1,0x38868c69,0xb72e802c,0x36fe8f43,0x35a8595d,0x340a77a1,0x35a2f7b1,0x35210dab,0x3614ec8d,0x3432a577,0x36ad6bcf,0xb5fc1e3b,0x378f31f1,0xb82f7517,0x38957f8d, +0xb8832915,0x3a16547b,0x3ac4822e,0x3b0d8217,0x3b396142,0x3b87327a,0x3b7f32b8,0x3b0bf863,0xb8084307,0xba8ee1de,0xba369491,0x3b0d0e11,0x3b6f2885,0x3b538af7,0x3b2f59a6,0x3a25e45d,0xbabe5cd1,0xb86f24dd,0xbafa6ffa,0xbbb83e4e,0xbad78f11,0x3a2d68c7,0xb95e3a47,0x388f7713,0xb81f266a, +0x3702f4e1,0xb70f03de,0xb49e980e,0xb6897100,0xb5d3a24c,0xb6828e55,0xb4cd5fd6,0xb721ec09,0x37248d96,0xb7a71e7a,0x3908d7c1,0xba19be74,0xba9c7b30,0xba777f78,0xba8070e3,0xba93b3ac,0xba8891f8,0xba8365c7,0xba60582b,0x39ae1a25,0x3ae91f29,0x3b648d79,0x3a09aa46,0xbacbe8a4,0xbb252483, +0xb8ae8ae0,0x3afa47ae,0x3b5a25cf,0x39a5c849,0x3b095996,0xbb8071a1,0xbb2d088a,0x390959a3,0xb863d059,0x385a4e25,0xb67e80d9,0x37ac10ae,0x360f7f47,0x3715c909,0x369218ed,0x36d70ec8,0x3653676f,0x37010055,0x36186872,0x37273b68,0xb7a45d0f,0xb901026e,0x3a0f37b5,0x3aad8d47,0x3a93bf19, +0x3a606cac,0x3a1f8601,0x3954a229,0xb8c7aeb5,0xb9e399f0,0xba047fc0,0xba4b313a,0xb9e77ea2,0xb9ebe74a,0x39ae1c03,0x3a9f2aa6,0x3af1cffd,0x3b0b10bd,0x3b18a140,0x3b55780c,0x3a92b2c0,0x3ac6657d,0x3a8e78d5,0x398b389c,0xb8daf4ab,0xb3c72be4,0xb858b43c,0xb74b64e2,0xb7a21ec4,0xb72c6018, +0xb75c7f4a,0xb7155fae,0xb73223fb,0xb6ca8277,0xb7b2fb3e,0x371fc043,0xb738d57b,0x396fe77d,0x3a47563a,0x3a6ba232,0x3a57487f,0x3a3a437d,0x39d0f5f9,0x398dea40,0xb8863c86,0xba1ebc86,0xba469257,0xba69cfc3,0xba893e46,0xba58e5f2,0xba066eb3,0x396b681f,0x38051b6a,0x399a6f19,0x3a02a3b5, +0x3a2ccf7b,0x3a02577f,0x39d38c44,0x38089a5e,0x3927a89a,0x37cc962e,0x38d58eb4,0x38aa6252,0x3817c9f4,0x37e9b92b,0x379de820,0x37ad660a,0x3783603e,0x3754e4f3,0x3788fa52,0x37f3c16e,0x38172929,0xb88d773b,0xb98e8463,0xb9dff7f6,0xb98c0acb,0xb9a5559c,0xb9da0669,0xb9ff6c97,0xba1cdaff, +0xba3637a7,0xba560f60,0xba29d9fc,0xba0a77a4,0xb9d4ee85,0xb93248dc,0xb6b62b93,0x3931f225,0x394a4931,0x395d7fb3,0x3990a0d7,0x39c1906b,0xb9c07c30,0xb9d8f2de,0xba59a7af,0xb9d9f576,0xb9f53bee,0xb9ca2ab4,0xb9437d4f,0xb8963383,0x3758df30,0xb5b10bce,0x36f265b6,0x3706a3b9,0x37a46e58, +0x36dd9534,0xb8cb71c1,0xb91693c4,0xb82fc719,0x38e550c2,0x398b8ed8,0x39d7a1be,0x3985f030,0x3965642f,0x392aa71e,0x38beed8d,0x381939d0,0xb825f53c,0xb767e45c,0x37226ef7,0x3804f332,0x37e18477,0x37e3a12c,0x381a8380,0xb83730e4,0xb8e627fa,0xb9511161,0xb9976f94,0xb8c2d724,0xb846c16f, +0xb959462d,0xb9db2520,0xba25e087,0xb95875af,0xb9ef9791,0xba251675,0xba26477b,0xba1e02fa,0xba180315,0xba109db1,0xba0c08a5,0xba043583,0xb9820229,0x36937e27,0xb995b456,0xb8a31e9f,0x38a55343,0x3903a91f,0x38b0c67a,0x38954e5a,0x381ef0cf,0x37b04088,0xb4ddfff5,0xb80f13d2,0xb7b5a434, +0xb7b83b1b,0xb76dff0d,0x354daed9,0x379c4b4c,0x385de80f,0x37866bfa,0xb6ed629b,0xb7df277c,0xb8435c78,0x3837b794,0xba27232d,0xba017edd,0xba422877,0xb98d6b0e,0x37e5d807,0x39269c66,0xb9e3704b,0xb81c47ee,0x39a771fd,0x39404bc8,0x390a3451,0x390dea58,0x37c136ae,0xb623ec95,0x388702b3, +0xb8d1905d,0xb9dc20c3,0x38fff789,0x3816eccf,0xb97d3534,0xba38b6f4,0xba1da1f1,0xba2e91c9,0xba442a81,0xba3411f6,0xba2b3243,0xba206289,0xba10002e,0xba185c7e,0xba52cebb,0xba274050,0xba154766,0xb9c7f14d,0xba09ec06,0xba0ce017,0xba0b63ad,0xba04c038,0xba007750,0xba33e898,0x38c7fbd9, +0xb9ebe950,0xb993baff,0xb9394ac3,0xb8a05f47,0xb834eb87,0xb8865989,0xb8813d6e,0xb859d93a,0xb893a8a1,0xb8992a45,0xb85d6eb4,0xb8c3e567,0xb9440c5f,0xb9be25c4,0xb9b75c77,0x38c17fda,0xba3694ba,0xba65b78b,0xba897b9a,0xbaad4aeb,0xba9e555e,0xba8ad365,0xba657081,0xba150190,0xba2620dc, +0xbaa1ba73,0xba5ddb1a,0xba2138d5,0xb906fba5,0xb9efb7ee,0xba0bd3b5,0xba0c20f5,0xb9ea20e2,0xb9bb8098,0xba3c61c3,0xb924cc07,0xb93f34e4,0x389139df,0x38720f70,0x383018ad,0x37003b72,0x37b7da19,0x37bc665c,0x37a64b26,0x3800a840,0x38057923,0x37d09265,0x3838961f,0x389291b5,0x38e4600c, +0xb928f536,0xb8f01e46,0xba1b278d,0xba762df2,0xba923ed3,0xbac82a0b,0xbaaab78b,0xba8b8070,0xba4e3856,0xb9dd3110,0xba29fddb,0xbaea9f16,0xba6c5303,0xba1277e9,0x39f04af4,0xb9b22caf,0xb9adf719,0xb9b1e806,0xb95be4ef,0xb9c9ad23,0xba54d73b,0xb8afd598,0xb77aafc3,0x380f7c7f,0xb8558384, +0xb70a3e1d,0xb71a5e9c,0xb6d4abf6,0xb73fdc76,0xb70db341,0xb7813a9b,0xb750e638,0xb7925daf,0xb72792fd,0xb86d968a,0x379991d1,0xb806e75e,0xb90b9ec7,0xba6570fc,0xbac50c33,0xbb08e667,0xbb462ed2,0xbb34507e,0xbb113cba,0xbabf8a47,0xb9fafee6,0xba702ee3,0xbb363eda,0xbad00cf5,0xba0d1def, +0x3a7c57b6,0xb8e8a774,0xba0fe578,0xba0a5e61,0xb9610ffe,0xba26ae3e,0x39adfb81,0x39f7ead6,0xb914ed03,0x38464728,0xb70178ca,0x37ad79c2,0xb658cfe6,0x36f6788f,0x3658e5be,0x36cf2f5b,0x36bbb0b1,0x3719e557,0x364136d6,0x378e9a6c,0x3689cb6b,0x380669ce,0xb893f68a,0x39948f3d,0x391d47fc, +0x393174c9,0x3a854354,0x3ad72e56,0x3b3b75f1,0x3b287c70,0x3a7d1a02,0x382bb660,0xb8e2c570,0x39acf063,0x3a8120c8,0x3a277204,0xba3b14b3,0x39e459d5,0x3a805329,0x3accfc73,0xb849703b,0x3a05b5b9,0x39ad5940,0x3946aeee,0xb92a6162,0x38d1584c,0xb876d58f,0x379cb823,0xb75f979c,0x36248f32, +0xb6b507e3,0xb5f03d71,0xb6a23ae9,0xb62794a1,0xb6ddface,0x358678ed,0xb7cc6a43,0x381097e3,0xb8954079,0x38a08ccf,0xb99cde17,0xbaae20d5,0xbb056a6b,0xbb3e5da5,0xbb4e1048,0xbb1c8b3c,0xba59d7c5,0x3a8004bf,0x3ad643b5,0x3a5d1274,0x39b2ebb3,0xb97f1fed,0xba721171,0xb92b29d8,0x3a2329cb, +0x3ac892d1,0x3abef0f3,0x3a5db276,0x3ae3d9f0,0x3a3e35b6,0xb98cf40a,0x38b8a2da,0xb7b3b069,0x37702bca,0xb59516d4,0x368daaf4,0x3609c889,0x365393f1,0x36351b79,0x365a81b9,0x362a504e,0x3685b850,0x36e6b2dd,0xb66675e3,0xb6a7e3a5,0x38742a4c,0x396e6431,0x3a81219e,0x3af664b0,0x3b21f301, +0x3b367671,0x3af39d57,0xb841d9a6,0xbafc84e0,0xbb20f21d,0xbab1d22a,0x39f58d71,0x3a926961,0x3a152578,0xb93f0e9d,0xbac1b79b,0xbb2081a1,0xb9eec5c7,0xbb0f0dd5,0xbb83269b,0xba4d62a0,0x39d6c608,0xb92c9c38,0x38536d28,0xb7f41ae2,0x36a5ec13,0xb70902b6,0xb6211ff5,0xb69e7c0f,0xb66ddcb5, +0xb67e10f4,0xb66acb84,0xb695c09f,0xb69c00da,0xb72a472f,0x388e4db6,0xb97dae3b,0xba8c5325,0xbaa31d9b,0xbabb42df,0xbad8d66c,0xbab50f9b,0xba8d217c,0xba36643a,0x3a151e3e,0x3ae109d8,0x3b3f46c6,0x388cc364,0xbae18f2f,0xbb1c8a10,0xba8c659f,0x39065055,0x3a937a76,0xba6ded3b,0x3a7de4c7, +0xbb59d551,0xbaa7f561,0x39294400,0xb80b73c5,0x3836d96d,0xb695c0e0,0x378ae3fb,0x368c1de4,0x37213c5a,0x36dd3a43,0x36ed1565,0x36e34952,0x36a917d4,0x37269d57,0x3581f313,0x380f6391,0xb91f406c,0x39e3fb0c,0x3a815194,0x3a4c32a1,0x3a3a604f,0x39aed6b5,0x38acbc9e,0xb99285f5,0xba4ca989, +0xba6869db,0xba96f29d,0xba77e57a,0xba7c16e2,0xb9d07767,0x3901653c,0x3a47302e,0x3a98bd0f,0x3ab9005e,0x3b10bab9,0x388828ea,0x3a83add0,0x3a9bc994,0xb89292a6,0xb870c5fb,0xb7b25ccb,0xb7dfa8d2,0xb77f0ce0,0xb792404c,0xb7811a9f,0xb77b71bc,0xb76b0907,0xb74e82c8,0xb7625107,0xb73d1500, +0xb7b4fc22,0xb7783b58,0x3899e76b,0x3a1bdadf,0x3a5949b1,0x3a135edb,0x39cafc1d,0x3902e589,0x382ed5b2,0xb95ae191,0xba255fd4,0xba501a08,0xba60b69c,0xba61be16,0xba53218b,0xba605e7a,0xba630ef1,0xba7296cc,0xba2ee047,0xb9ef765c,0xb97214a8,0x39429966,0x39b91100,0x3988ee20,0x392ad561, +0x38c400b8,0x38928cf0,0x383e547e,0x380f2dab,0x380dca55,0x38088e7a,0x37ff2109,0x37f33661,0x37dd68f5,0x37dc9b5f,0x37e5b43b,0x3823e64f,0x38810f46,0xb931b97e,0xb9ac2748,0xb9f7ae9d,0xba1bc305,0xba130614,0xba1e755a,0xba326ff9,0xba482900,0xba5d4d74,0xba524d0f,0xba504c40,0xba4c0f4e, +0xba275574,0xba01a497,0xb9c55fec,0xb96453dd,0xb8fc8722,0xb6ebb6e1,0x39314c36,0xba02a541,0xb9fec859,0xb9b24c6f,0xb9d734c0,0xb99d17a5,0xb954f0a7,0xb8ac6559,0xb87bdfc2,0xb88ccd8d,0xb883b7ad,0xb881b6b6,0xb87d2f5d,0xb86f13ed,0xb876aeb4,0xb86dd17e,0xb8ecdd7d,0xb94edcd7,0xb9351089, +0x395024ea,0x382f6068,0xb693ace4,0xb882e468,0xb8edadad,0xb92e6423,0xb9592f33,0xb984c44d,0xb99d3dd8,0xb9b1cb10,0xb9cb46fb,0xb9eab340,0xba088abc,0xba1cb04f,0xba19c5f3,0xba121aa7,0xba0f99ac,0xba09c1c1,0xb9c64531,0xb9d3f01e,0xb96a0844,0xb8ee9262,0xb82e8bc1,0xb9bc33a7,0xb9508164, +0xb91078aa,0xb8f6394a,0xb8c0a3e2,0xb889cc69,0xb82adf9e,0xb741df21,0x37b6a385,0xb8406d2b,0xb974b8f2,0x39765f39,0x38c21f7c,0xb8b96702,0xb9985280,0xb986c405,0xb997f6bc,0xb9a1f248,0xb9ab5516,0xb9b6b5c9,0xb9c2e6b7,0xb9cbb68c,0xb9d429df,0xb9d94d27,0xb9ddf467,0xb9dd4f81,0xb9dfcd2f, +0xb9d49972,0xb9d21bae,0xb9cccb10,0xb9cb7c40,0xb9cc902e,0xb9803cb2,0xb9412c1d,0xb90c9833,0xba04718c,0xba2d774d,0xba35321b,0xb9c4b920,0xba074288,0xb9a2de5b,0xb9d72a74,0xb9e51797,0xb9e2a933,0xba02cbc7,0xba0890cd,0xb9f95607,0xba189b09,0xb9d8669c,0xba403114,0xba2006d4,0xb9f5801c, +0xb8f3514b,0xb97d7548,0xb98203fe,0xb9a30d9e,0xb981aeac,0xb96c814d,0xb966bf6b,0xb9383185,0xb94f83db,0xb9b9f1eb,0xb96c949f,0xb9337203,0xb7756e11,0xb92c6170,0xb948b4e5,0xb95e0c8e,0xb92b9c23,0xb9072685,0xb99b0c8e,0xba25a769,0xb94c76e4,0xb97ef10f,0xb850013c,0x38aa47ee,0x38eb3174, +0x38a226f8,0x38c6c2ec,0x38c61de7,0x38c98a9a,0x38b296c8,0x38f610ae,0x38a5e6d4,0xb3aa0708,0xb968e4da,0xb9292bb4,0xba057ad8,0xb9a4f7f8,0xb9c0e21d,0xba109017,0xba34f193,0xba0e7b71,0xb9d92115,0xb9b4e48d,0xb90c6602,0xb956fb19,0xba29d8e6,0xb9b7e3b6,0xb9416d41,0x39454fa4,0xb92a0df5, +0xb98921bf,0xb994f7a2,0xb944b017,0x38138410,0xb9e227b3,0xb9bdaf5e,0xb82bf532,0x387f67ec,0x382bb6f2,0xb78e9fae,0xb8183bff,0xb7c05d5d,0xb7cce45f,0xb7ecabbf,0xb7bc490c,0xb7c4b8f6,0xb7f0c5ab,0xb7c28d0a,0x382ba2fd,0x383494c0,0x37eee008,0xb98aef28,0xb9b71b7e,0xb99741c0,0xba1047c3, +0xba4cd3fc,0xba0915f0,0xb9b396cd,0xb99de8b0,0xb80f5c17,0xb9649d7c,0xba82a7f9,0xb9a561f9,0xb888cd3c,0x3a447c49,0xb8db0d74,0xb9229c27,0xb9171f58,0xb8903a4f,0xb690118d,0xba21f3da,0xb951f05f,0x38c725f3,0xb8378570,0xb7295eb1,0xb5174127,0x3792582e,0x370e7839,0x3729e4c0,0x3730c923, +0x371c0129,0x36f6d4d3,0x3775dfd8,0xb4b153c0,0xb6ba0a21,0xb852ef4f,0x38ac2b89,0xb953593e,0xba1290a5,0xba44dfbb,0xbab28525,0xbaf6cc5e,0xbac0dfa5,0xba842dd3,0xba2f2983,0xb6794f4d,0xb9cd09a8,0xbae1be90,0xba6081c1,0xb8f41162,0x3a884c39,0xb912f0bf,0xba1019e9,0xb9da1a35,0xb96b6c9f, +0x3914cdd0,0x39299ce7,0xb7e12b6d,0x382bd0b5,0xb7dcd61e,0x37e04237,0xb7158ff6,0xb6604666,0xb6d0d65a,0xb671b56d,0xb6b63814,0xb6640f0e,0xb6a720d0,0xb6670c02,0xb6c29185,0x379265b2,0xb70569ad,0x379a752f,0x378cefc4,0x399968db,0x3a8260f4,0x3ac71265,0x3b0e73d4,0x3b2115a3,0x3b0a34e7, +0x3a80ff2d,0x3a039117,0x3a1a965a,0x3a81101b,0x3ad8a6da,0x3aaeac7a,0xb8a12d5f,0x3a6333e6,0x3a9f95d1,0x3acceb80,0x398fbdc0,0x3a8278a0,0x3a09a248,0xb90c818c,0x38099630,0xb6727878,0xb7128bcf,0x362d902b,0x360b0014,0x3643d489,0x360b25e1,0x361a255d,0x361c5256,0x35c3112d,0x367e3a63, +0xb5bbb94a,0xb5bb9298,0xb7240641,0x37a42fea,0xb85540fa,0xb9cd7f09,0xba746acf,0xbad3a7b8,0xbb037f11,0xbb111aef,0xbad59179,0xba0e88a8,0x3a5074ba,0x3aa5daad,0x3a2aca69,0x398428ce,0xb9949852,0xba824b33,0xb9536ee4,0x3a040377,0x3aa8bf99,0x3ab08939,0x3a135582,0x3a999f02,0x3956b6bc, +0xb904c6d2,0x384d0936,0xb72e732d,0x36879ff4,0xb62ffa37,0xb5c6f73b,0xb58d90e9,0xb5e6525b,0xb524228b,0xb62701bc,0x35821e80,0xb6bd2907,0x3770f0c2,0xb7a0756f,0x37f04a18,0xb821649d,0x39a389e1,0x3a99a3f4,0x3adad97e,0x3b0fa027,0x3b27ff42,0x3aff93ba,0x39f28b16,0xba5af2a3,0xba94c027, +0xb97d6f07,0x3aa90fd1,0x3ae7c349,0x3a9325cd,0x38d0af8e,0xba8fbf06,0xbad58979,0xb9ba9d2a,0xbadfbfa0,0xbb3f67cf,0xb9064831,0x3956914f,0xb8e6d323,0x382fc671,0xb7ae4326,0x3731523c,0xb63ab19f,0x3646c701,0x3451b41b,0x35f336dd,0x3462df53,0x36657653,0xb68e66d7,0x3703737a,0xb80b2bff, +0x38bb8d7f,0xb927072d,0xba4a8e9b,0xba2cc558,0xba5731ae,0xba739ff8,0xba550a04,0xba24f97a,0xb9dc0f48,0x3a384935,0x3abab994,0x3b01ac79,0xba0934db,0xbadff834,0xbab1cfaf,0xb9d3173d,0x3a2cce4f,0x3ae7c193,0xba4f014c,0x3ad25e14,0xbb36b0d9,0xba5bfcb7,0x3992fa83,0xb8ccf160,0x3869bc73, +0xb7afb08c,0x36fa213c,0xb6d2b2fa,0x351971c7,0xb631a3a9,0xb5b3cdca,0xb5bfb27e,0xb6712192,0x363ae458,0xb689ac72,0x38111927,0xb8c58b68,0x39001bbf,0x3a51f599,0x3a22dfca,0x39ed4906,0x396b046b,0xb7c9d059,0xb997b33a,0xba32b1ae,0xba44e472,0xba739b9d,0xba2dfb78,0xba0b2b29,0x3890ef22, +0x3a46e222,0x3ab31091,0x3ae7a8d7,0x3b120098,0x3b23b61a,0x37c95580,0x3a084016,0x3a04a682,0xb8c9cbe0,0xb796e7b8,0xb74446a1,0xb69d227f,0x370c0ab0,0x35f102c6,0x3689a0e2,0x366b0393,0x365ccee6,0x368f8779,0x366b48be,0x36bc30a8,0xb78bafa9,0xb690df76,0xb6f5afab,0x39c88d21,0x3a36046a, +0x3a1f7f51,0x3a13aa6e,0x39b4cce0,0x3945d52e,0xb87571a0,0xb9c77c2b,0xba03b9e4,0xba0a4605,0xba0cdb77,0xb9f5da03,0xb9e1907f,0xb9987418,0xb9f4d32a,0xb9e21ac3,0xb9c42dd0,0xb9c09393,0x3a0280ed,0x39fff5b7,0x391ab119,0x38a0e661,0x384fdc08,0x3812de62,0xb6c09ba1,0xb788454d,0xb721e3c6, +0xb73e1836,0xb73974d3,0xb73f08e1,0xb72757cc,0xb78186d7,0xb6fe86b6,0x37660070,0x384fc2a1,0xb834621c,0xb9be09c0,0xb9ccf866,0xb9b7f5cc,0xb9d7ecc5,0xb9dce723,0xba017ae6,0xba1184d8,0xba2670aa,0xba18740a,0xba160a16,0xba1351fa,0xb9c7ae46,0xb965afd7,0xb83f71f3,0x3862767e,0x39172b49, +0x39931491,0x39d4d3ec,0xb9a191f1,0xb9a6c2a3,0xb9f7e8fe,0xb92c00f4,0xb94387e9,0xb868b43e,0x38744a94,0x388b8d4b,0x386004ff,0x3874451d,0x38679978,0x386f065f,0x385a97f8,0x388167d0,0x386889b7,0xb74e4fdd,0xb8e83393,0xb90edb8c,0xb8d7145a,0x3798bbfe,0xb864948f,0xb8df94cf,0xb91660ca, +0xb95037a5,0xb97667fb,0xb993d678,0xb97e4857,0xb95d6527,0xb9532efb,0xb95d99c2,0xb9797bcb,0xb98a68cd,0xb98f06fa,0xb993317b,0xb9a38687,0xb9acbe99,0xb95dd2a8,0xb92c922f,0xb9bf69c3,0xb9f8fd04,0xb9fea925,0xb9ad8b73,0xb9de1a38,0xb9d036d8,0xb9d1209f,0xb9cc3270,0xb9c956a6,0xb9c5109d, +0xb9c2297c,0xb9ba9924,0xb9c51224,0xb9927c0d,0xb9b9b026,0xb9a8db97,0xb97dc171,0xb904bbf6,0xb936a805,0xb93ea70e,0xb9550705,0xb961941c,0xb9710450,0xb9864601,0xb9829f15,0xb9830170,0xb97aeb41,0xb97108f1,0xb95fac8b,0xb94e1337,0xb9519b5a,0xb952a437,0xb94a4b55,0xb94d0e59,0xb97b464e, +0xb986a3ad,0xb956349d,0xb9a19d25,0xb84c32cb,0xb7f98ee3,0xb95de60e,0xb8d1a46b,0x33a26f70,0x37c3c078,0xb7bf27dc,0xb825cb7d,0xb82a5b6d,0xb89d03ff,0xb8bd277c,0xb8b4f0a8,0xb79d274e,0xb8a66b37,0xb98d1eef,0xb6d8c517,0xb70de743,0xb986858d,0xb97ec9ff,0xb98a35e3,0xb9a4af83,0xb9876cb7, +0xb97aaf55,0xb971a856,0xb95b32b6,0xb9707eb7,0xb9b3e3bc,0xb9804e16,0xb951f89d,0xb8b6661e,0xb9357dde,0xb94259b9,0xb94cbe35,0xb944af2b,0xb9601dfb,0xb98dffd8,0xb892d682,0xb91d29ee,0xb7ff9fc1,0x35eb1f67,0xb709285e,0x35a13d72,0x36d002b7,0x378a737f,0x379bc3d1,0x37f4804f,0x380f7860, +0x381a5029,0xb5eca1b1,0x36746960,0xb7d75a56,0xb8d715f3,0xb74dc595,0xb96829ff,0xb9cc0d83,0xb9f487f8,0xba1dae86,0xb9f73b0b,0xb9c9bc26,0xb9addf10,0xb956d3ec,0xb986cbbf,0xba1300ef,0xb9af6a55,0xb941bd04,0x38d33576,0xb8a2eccb,0xb913c589,0xb93e0d0d,0xb925744a,0xb92dc110,0xb9d5535a, +0xb7d0432b,0x3728b483,0x380f06e1,0xb5772bac,0x369fd1a5,0xb5e76696,0xb6103538,0xb6bbd0ff,0xb6fb3c6c,0xb725e025,0xb758602b,0xb7423593,0xb414c565,0x3533ec1d,0x37fcfc0a,0x34e33c0d,0x383affd6,0xb9260df6,0xb9c31435,0xb9f17c10,0xba3143c2,0xb9df42a4,0xb998f18a,0xb976d655,0xb8fa429d, +0xb98e1d0e,0xba5653be,0xb99fbb5f,0xb8ab41f5,0x3a037483,0x383f9329,0x37467d81,0xb850afcc,0xb85b0e04,0xb98066b2,0xba06fee1,0x383e9e5e,0xb784ae04,0xb6cafb18,0xb6e71fb6,0x35af6897,0xb54dc10b,0x35f9e1cc,0x360a6946,0x3678e801,0x368a2470,0x36d116ad,0x3679018b,0x362bb2d7,0xb6b143e3, +0xb710a4b1,0xb6bb0935,0xb5592318,0xb9a58a74,0xba46807b,0xba88a741,0xbac037d5,0xba8b8888,0xba3c4cca,0xb9fdde19,0xb8e924ac,0xb9deb3e0,0xbab20a1a,0xba3124c2,0xb807ac5c,0x3a5d07e1,0x39836589,0xb87c1f0f,0xb90c6da1,0xb89e0e6a,0xb952227c,0x39b91d89,0x388c0f51,0xb819859f,0x37af9a47, +0xb680e0cd,0x362fca8c,0xb5b71371,0xb47aa5c6,0xb5d18cc8,0xb5ce788d,0xb6270dfb,0xb61dd906,0xb64a820e,0x35a0fab7,0xb630fd8f,0x378c0a89,0xb7d92cfc,0x381a359c,0x3a0a4224,0x3a302ce2,0x3a8daad9,0x3aadd706,0x3ad00bf7,0x3a9fe1dc,0x39a5e172,0xb8b54443,0x374a1421,0x39c244f3,0x3a8071d4, +0x3a4d6644,0xb99d6da6,0x3a0f9446,0x3a489fc2,0x3a636764,0x38691b6a,0x39ca1576,0x39c5dc12,0xb889f345,0x36e0b4f4,0x35adae4a,0xb6c56a91,0x3648220b,0xb59b0422,0x35c6f1d4,0x3505d6c0,0x35b88ecf,0x35966312,0x36052b9b,0x34e85e18,0x361005e8,0xb68b42d7,0x3595e50c,0xb5923f63,0xb5907c86, +0xb9a05a79,0xba6577fd,0xbaa30c5e,0xbace82cf,0xbad68b0d,0xba8fb162,0xb91f243e,0x3a5d0cf4,0x3a90250e,0x39f42d5e,0x391b4a89,0xb9174c28,0xba06ebd7,0x3990afa6,0x3a44cfdc,0x3a8a3528,0x3a802329,0x39c7b21a,0x3a3a5f8f,0x3808a5d1,0xb848d479,0x37d2aad6,0xb702adf6,0x3641f9b5,0xb605f80e, +0xb5133eb0,0xb5a565d5,0xb58d022b,0xb5b01054,0xb5a76c5b,0xb5a3a421,0xb44697ee,0xb50a4fa8,0x3705fd4f,0xb7ab8b06,0x3818e46e,0x3997bc97,0x3a4c99a1,0x3aa9ae39,0x3ada9c39,0x3ae6626e,0x3a99ff1d,0x388f959b,0xba751ac2,0xba92c84f,0xb9951eb9,0x3a1a855a,0x3a781d32,0x3a695ddb,0x388eaff2, +0xba36ac25,0xba61a938,0xb9348f9b,0xba90a6b6,0xbae84456,0x3906a031,0x37b34610,0xb7d47d00,0x3729d32f,0xb68f16f9,0x3682d20d,0x35773e7d,0x3611a0ca,0x35e24b58,0x35ee629a,0x3606e5bb,0x35af22af,0x35897aed,0x342588eb,0xb71e998f,0x37ba9882,0xb7b6bf7f,0xb9f89dc6,0xba10e108,0xba1ec03e, +0xba32c7f9,0xba0611fe,0xb99c37ce,0xb893fe60,0x3a794315,0x3abc1f53,0x3ad60c14,0xb9ab8ff4,0xba9ad8a7,0xba6bb0f3,0x374dcd99,0x3a6ea500,0x3af33d92,0xb9867a12,0x3aeeb498,0xba9e60e5,0xb931ec29,0x38bbbfcd,0xb7d0ef5b,0x3756d5ab,0xb6c3b419,0xb60a6bd2,0xb6923b78,0xb661adb5,0xb6658c78, +0xb67bdd35,0xb62c3954,0xb6a611f2,0x363a2f91,0xb7192115,0x37fb1e2b,0xb85351ac,0x381a8cee,0x3a25af28,0x39d1de8e,0x39ab59e4,0x3889aa09,0xb82ffa28,0xb94db03b,0xb9dc88d8,0xb9f14bcb,0xba0859b9,0xb95ce47b,0xb945a61f,0x399ad333,0x3a63cd3a,0x3ac954df,0x3b0177f1,0x3b1a6613,0x3b26c138, +0xb933930a,0x3a0e8cfe,0x398a9d72,0xb91485c1,0x381be85c,0xb7b3fa84,0x3736e629,0x36abe1f5,0x37198a90,0x36e52db2,0x37026383,0x36dac7e3,0x3706417d,0x3697e2da,0x36f84453,0xb72b4b7c,0x36e95358,0xb8570113,0x39356db8,0x3a0f9419,0x39dbff13,0x39de9928,0x39966462,0x397ed0df,0x38ab7588, +0xb91de611,0xb99df1a3,0xb9c9135d,0xb9e369bf,0xb9d90a88,0xb9e856f1,0xb9e53763,0xba2b498c,0xba245ff3,0xba0b269b,0xb9e7d1e7,0x39cd8e37,0x3a0dfeac,0x39888e01,0x367344ca,0x380b9dd7,0xb5a071c2,0xb6bde3bb,0xb7ad1262,0xb78d5f58,0xb79172f5,0xb78979f0,0xb787fab2,0xb780aac5,0xb7858b31, +0xb6d22db6,0x33a42f41,0x37b7bfa2,0x381bb4d1,0xb90fedf9,0xb999cf44,0xb9af2b58,0xb9b4c6f8,0xb9c4222d,0xb9ddf5cd,0xb9f7e22e,0xba0a08f7,0xb9fa995c,0xb9ea775c,0xb9dbb5e5,0xb99518ae,0xb92bd8dd,0xb80b3d74,0x38a7ba3c,0x393a78a6,0x398e9e61,0x39d550aa,0xb975ea55,0xb95b4a6d,0xb937aae6, +0xb88f5af5,0xb82d45e2,0x36a7b2ad,0x37d6fd34,0x386b5231,0x384626b5,0x384ae109,0x383fb152,0x383d2c31,0x3833a675,0x38382bed,0x37be84ff,0x35e333dc,0xb74cda88,0xb9151de4,0xb8bd2c54,0xb91e8b60,0xb9483489,0xb9658388,0xb97fedd0,0xb9901e0b,0xb99b173e,0xb9aa6a73,0xb9a3b49d,0xb99ccb75, +0xb9981d92,0xb995fd3e,0xb996bef0,0xb9988345,0xb9964840,0xb98ebddc,0xb990c0bb,0xb9876a7a,0xb95a6d05,0xb954c801,0xb91f8512,0xb929f3be,0xb97e81be,0xb9163382,0xb8d1bb07,0xb90601b2,0xb904da9c,0xb8fbfe61,0xb8f6dc2a,0xb8eca6dc,0xb8e8c5df,0xb8dfe186,0xb88bb2ef,0xb9084af9,0xb93444b7, +0xb8c5286d,0xb8f98bab,0xb9825fc3,0xb97c6832,0xb9852b25,0xb98cf6cb,0xb99216f1,0xb9986a07,0xb9a2041a,0xb99c0f7c,0xb9985bd6,0xb991d486,0xb98c2bdc,0xb9840864,0xb9740aa5,0xb96df0b9,0xb9686cf1,0xb95d93ba,0xb95a3eb7,0xb99316ea,0xb98540cd,0xb95e43b7,0xb96b18b4,0xb9ab291c,0xb9aa6d26, +0xb966ea5c,0xb8e016e0,0xb8eaee84,0xb6a7dbe6,0xb80fd762,0xb82937bf,0xb81d5646,0xb852a012,0xb8613a0a,0xb81ddb94,0xb8ed6c15,0xb8cf1515,0xb97607c4,0xb993f53f,0xb99670ae,0xb94f14c3,0xb9785950,0xb98545c3,0xb9969693,0xb9829838,0xb97bc534,0xb97fe439,0xb9731cba,0xb97fd9cf,0xb9a1790f, +0xb986d6b1,0xb975587e,0xb929074e,0xb972000a,0xb9731b3e,0xb953c9dd,0xb955144a,0xb93e5b39,0xb9a195aa,0xb99851ee,0xb6ad2e29,0x37b7bea2,0x388e3267,0x37ed118e,0x3781eeb3,0x371f47d3,0x3796082a,0x3784568f,0x37b34f9f,0x3794f0b6,0x37d755ca,0x37f0607e,0x3894fe82,0x3704bd81,0x37cea407, +0xb92e32f5,0xb98d0313,0xb9ad8a77,0xb9e5a7c1,0xba0454a5,0xb9d5de30,0xb9b46ddc,0xb9ac3a20,0xb986ac12,0xb99cb158,0xb9fd6203,0xb9c10407,0xb999a051,0xb8ef6376,0xb98b184e,0xb990b024,0xb9491f73,0xb95392d8,0xb8d83aaa,0xb9e9e4e9,0xb85c2a3b,0x388b3fde,0xb7b7da68,0xb783aad3,0xb76a0303, +0xb69e5149,0xb698da05,0xb6b7bbe1,0xb6e2bdc7,0xb6e0b574,0xb7008261,0xb6ff7009,0xb77393f8,0xb794ec6d,0xb7424765,0x38050111,0xb68945fd,0xb96f972c,0xb99de9ac,0xb9e54f11,0xba17c980,0xb9d38245,0xb9a8fcbf,0xb9b33fcb,0xb98cd9cb,0xb9c23c44,0xba30cfd0,0xb9d76ae8,0xb9a1d1ad,0x389085ea, +0xb9a2d710,0xb987c462,0xb89ba44a,0xb925d64c,0xb8f08416,0xb9fa57ae,0x389fca87,0xb7dd69dd,0x3653da4e,0x37193279,0x36ae6b10,0x363cdf04,0x35fbbebb,0x3629108a,0x36472610,0x364fc203,0x3655310b,0x368626d0,0x36ba0e55,0x372646d3,0xb5c6a898,0xb6de8561,0x3796f30e,0xb994b611,0xba1dc8b4, +0xba713723,0xba9ba7ce,0xba665c2d,0xba26545a,0xba0c3ca2,0xb9a8fed8,0xba096729,0xba8c027e,0xba449f64,0xb9d62c66,0x391a56a6,0xb9b39c5b,0xb9ced3d8,0xb8a801b4,0xb90bf38d,0xb96f801f,0xb8453074,0x3822d94c,0xb741e972,0x36d3c25f,0xb6d2cfc3,0xb60e94bc,0xb5cdab12,0xb5870c8c,0xb5a70ef2, +0xb5c477b3,0xb5d44dba,0xb5c5295c,0xb61501b0,0xb619b919,0xb6c14581,0x368530cb,0xb641ec79,0xb710b2b3,0x3978afc8,0x3a03e376,0x3a53ba45,0x3a8f3414,0x3a84de16,0x3a43e586,0x399e45b3,0x375f4cfa,0x38a43c9e,0x398af040,0x3a2a6c3d,0x39d5e758,0xba0d1790,0x38b50e72,0x397e6cce,0x39ae027e, +0xb92c6d68,0x39e339ca,0x3958697a,0xb8ba6301,0x38061941,0xb7554649,0x36dbb3cc,0x33ac9e23,0x35b7d8a4,0x350deb7e,0x3556d6a7,0x3576e393,0x35536772,0x35a1de2a,0x350f8ddb,0x36435d69,0xb49ef208,0x369bbb70,0xb76a8e3b,0x386237d0,0xb9b74e77,0xba4f25f9,0xba955106,0xbab3c9f6,0xbaa155ea, +0xba488075,0xb905a26f,0x3a13fe38,0x3a3e025a,0x399760c5,0x383e4a98,0xb93b4e34,0xb9e9084f,0x38bfd323,0x39e4809c,0x3a3d8dd4,0x3a277c81,0x3912c297,0x398e6045,0x3698c7fc,0xb770fa0d,0x370d1238,0xb6afbac7,0x34cf54a3,0xb5d21617,0xb4be3ee6,0xb5768fbd,0xb536cbd0,0xb56cbccd,0xb536791f, +0xb59c821b,0xb5404fc3,0xb6531843,0x3690f562,0xb6f06e69,0xb4719c12,0x39170ebc,0x3a1b3c19,0x3a67d826,0x3a9373f5,0x3a847056,0x3a023fe2,0xb99b63f4,0xba6c49d9,0xba65eb80,0xb914d495,0x39c62fec,0x39d7ba74,0x388f7b6a,0xba39d7f7,0xba983835,0xba85a6f1,0xb993eb36,0xba8754a5,0xba7a45f7, +0x394cdd17,0xb88080b9,0x37c26561,0xb706fa12,0x36cb7b19,0xb55e5772,0x360a887e,0x3539ca21,0x35b3745b,0x358cfcb8,0x3594b6aa,0x35ba8896,0x358f5a42,0x3676e65f,0xb68ff38b,0x36911c2a,0x37a6321f,0xb993a5d7,0xb9c0ac95,0xb9fa1ce6,0xba08a7ec,0xb9ead8de,0xb987fa15,0xb7f44c32,0x3a29e064, +0x3a604d45,0x3a492855,0xba089c70,0xba80cefa,0xba0c4693,0xb9a2a642,0x38a00132,0x3a0ec162,0xba36855b,0x3a5ff233,0xba3dfbd8,0x38f943f7,0xb7fe4bff,0x37731a9c,0xb73a1839,0x358ff5b8,0xb68d4b79,0xb5a60ed5,0xb62ea27e,0xb6016667,0xb613d392,0xb60686b8,0xb61ba2cf,0xb62a16b8,0xb695161a, +0x3527d3c8,0x37179e53,0xb8547c5f,0x39a84ec9,0x396ba108,0x392b1201,0x368ec18f,0xb8d76cce,0xb984f3c2,0xba00d8ba,0xba0d8d8a,0xba1e83cb,0xb9f1dc7d,0xb9a1f791,0x383dda13,0x39ed9a88,0x3a526ac4,0x3a8d69ec,0x3ab843dd,0x3aaec363,0xb9c9316b,0x388595e8,0x386c0851,0xb845b177,0x37b216b0, +0xb5c4e81e,0x3722367b,0x363c5414,0x36b8a0ea,0x36863aaa,0x369de1da,0x368dcfb0,0x36910026,0x369805a8,0x36bdda46,0x36f81b46,0x3698db4a,0xb7b79154,0x37a67517,0x39c0cc04,0x3999b96c,0x3992e6df,0x3945682f,0x38c6c488,0xb7befac2,0xb91e9b4a,0xb96ab0fc,0xb96b052b,0xb956fb79,0xb97647ec, +0xb9acb3ad,0xb9eeda39,0xba162a65,0xba1ee4dd,0xba1a452c,0xba16acd5,0x399619ba,0x39ca2745,0x3859340a,0xb6e1033d,0x364b711e,0xb7b75bdd,0xb724ee1e,0xb745e80d,0xb725f303,0xb72a674a,0xb72afb65,0xb7217eaf,0xb725e080,0xb7207b26,0xb76735b0,0xb76afcdd,0xb79d168f,0x38609b3d,0xb84b8eb0, +0xb98abd6a,0xb965a006,0xb97cac03,0xb975efed,0xb98dc0e1,0xb99cde57,0xb9afe916,0xb9b340ea,0xb9c10eec,0xb9cddb2f,0xb9a1f358,0xb963ef8b,0xb9021684,0xb7acbf95,0x3892bf0f,0x39326422,0x398dd9c7,0xb949e8e4,0xb9387abf,0xb8e5f911,0x37b2afb1,0x3796eced,0x38622660,0x37ef65c0,0x3808dbc4, +0x37e10417,0x37f2a293,0x37e51290,0x37ed4e73,0x37cef6bb,0x380106ba,0x37f36767,0x386c25bd,0x37c2ee9f,0xb6aa5495,0xb93b7366,0xb92ca9f4,0xb922e234,0xb94a6654,0xb95441d4,0xb96ba051,0xb977a0bc,0xb9833cba,0xb9738ff8,0xb965da8c,0xb969a05a,0xb974f5a9,0xb987bf88,0xb996a7e3,0xb98ce005, +0xb983a0e2,0xb980d27e,0xb96dab87,0xb93a8921,0xb92b71f0,0xb9869897,0xb984bf8c,0xb959251d,0xb897ba21,0xb8d02824,0xb8902ec6,0xb8965258,0xb8937289,0xb8917e1b,0xb88ef79e,0xb88d4b83,0xb87f302a,0xb8d63b14,0xb8aabd31,0xb9591ba8,0xb98a7a35,0xb9824cff,0xb9406499,0xb95f9bb1,0xb960df4f, +0xb9689062,0xb96d8ec0,0xb97356ee,0xb97e36a3,0xb97d6930,0xb97de85d,0xb97721ac,0xb9739a83,0xb96a82a3,0xb9666951,0xb95b2c9c,0xb9540646,0xb946ba1f,0xb9419fa0,0xb987200f,0xb87b2c24,0xb8630639,0xb850c0ee,0xb8899705,0xb8ca30c4,0xb931ccd0,0x381bcd1d,0x3790e350,0x378b741b,0x3791b073, +0x37906d71,0x37905587,0x37907473,0x37919db0,0x378bb216,0x378f14ce,0x3823c494,0xb94026bf,0xb8a4c306,0xb815a48e,0xb80c5476,0xb873cbd5,0xb8721dfa,0xb897f665,0xb85b7e5f,0xb8484c1a,0xb85436cb,0xb84d721d,0xb866cbd9,0xb8ab67d8,0xb86719c2,0xb82ee7be,0xb6f6d61b,0xb8148804,0xb82752ca, +0xb82ebd4b,0xb82c0a13,0xb833a060,0xb8a1993d,0xb8dc3369,0x38307de7,0x384edd27,0x361af43c,0xb74e97ef,0xb68b7bd7,0xb6e49eb4,0xb6c94660,0xb6d5308b,0xb6c7f658,0xb6e86d89,0xb6811cf8,0xb75c9eea,0x3688fe8d,0x38507011,0x38225669,0xb89991e3,0xb81cc5e0,0xb8c1a93a,0xb8f9f587,0xb918d38a, +0xb8c655e8,0xb8918fb3,0xb891139a,0xb84d7579,0xb88fc320,0xb913d215,0xb8a910ee,0xb8183071,0x38427f14,0xb7229ea4,0xb7f9c720,0xb810720a,0xb820c141,0xb7de56f0,0xb91b9005,0x3854b73a,0xb723e479,0xb782f22e,0xb67be637,0x369f8bbe,0x35e0cb36,0x361293f2,0x3616a754,0x360ba384,0x361cdd2e, +0x3603adf4,0x360be46b,0x368b5a6a,0xb64fba35,0xb79246c8,0xb6a81f1e,0x378fa2e3,0xb796f792,0xb88ab6a4,0xb8cdbd93,0xb91e7cf4,0xb85d115c,0xb794510e,0xb8177d4e,0xb80185cc,0xb8a5adba,0xb94e1aad,0xb87e4de7,0x36a6d321,0x3934a90b,0x37c92365,0x37591428,0x3785feab,0xb7718391,0xb8850595, +0xb9252e78,0x3825c9c3,0xb794b737,0x376c8cae,0xb57d7662,0xb524d094,0xb5c554a1,0xb535718e,0xb590baae,0xb57bbcc4,0xb57eab9c,0xb589e0b4,0xb528a994,0xb631687f,0x3685e374,0x36480b9d,0x36f24474,0xb6ed476e,0xb85e260b,0xb951608c,0xb99b13e1,0xb9c3d498,0xb95393f3,0xb8bd4fd4,0xb8a874ce, +0xb80e1d31,0xb90fd51c,0xb9b9dc70,0xb93b929c,0x36d5c8e6,0x39868c1f,0x3885b54d,0xb7aa6e87,0xb600714d,0xb78c4a03,0x36c96d54,0x38cafb8f,0xb7cf4195,0x37355287,0xb6ff828a,0x3587aecb,0xb461db00,0x3588f811,0x345721aa,0x35271cfc,0x34c93057,0x352cce55,0x34162665,0x359c7626,0xb50c8ba7, +0x35deb444,0xb7202a3e,0x379170d5,0xb86ab9b6,0x396c5130,0x39db717a,0x3a031e27,0x3a1bbc8c,0x39f9be94,0x39a33255,0x38c52835,0x36beb932,0x38ac80a9,0x395decd6,0x39e2e77d,0x39ba9708,0xb89b4ce3,0x397a58ed,0x398e0ba4,0x3970c701,0x37fed8ee,0x395f9335,0x3917d266,0xb8879331,0x37e62165, +0xb72fcc27,0x36c0c676,0xb62db2e0,0x351f19ca,0xb537ad65,0xb3d9e5cf,0xb4da2815,0xb458aafc,0xb4d5e833,0xb400da0b,0xb5680d85,0x35d5031e,0x334be125,0xb4c425e6,0x37aa9f5a,0xb919fd18,0xb9ad1727,0xb9e4b6db,0xb9fb9b71,0xb9e9b311,0xb981cb67,0x380910e7,0x39af7d1b,0x39c8500b,0x39193448, +0x37ff7901,0xb8730f67,0xb93b936c,0x393c3ed4,0x39b14582,0x39c43d78,0x39ac6e81,0x38994355,0x38a672ac,0xb6a7a6d4,0xb6102f77,0x34fc05d2,0xb58bf7da,0x35117077,0x3487affd,0x34943411,0x349111d2,0x348fc9f9,0x349c49e7,0x346eae4b,0x34c6b965,0x34a08e18,0xb5104e08,0xb5777d06,0x35d12c25, +0xb7942e84,0x38fa4679,0x39a5ecc3,0x39e8c072,0x3a117312,0x3a0a4181,0x39ae01b1,0x370cf810,0xb9914acc,0xb992e072,0x386795a1,0x3993f4b3,0x39c5f0ce,0x39c90b16,0xb740df5e,0xb984abb6,0xb93ee901,0xb851e148,0xb9c66ae9,0xb9a9b397,0x38ae4102,0xb7de32de,0x373dba37,0xb676cd4c,0x35a69493, +0xb5a0c896,0xb3a3b7d8,0xb50c42fc,0xb4d0a68f,0xb4bfc596,0xb50c32f6,0xb4245740,0xb59bb3e3,0x35f76726,0xb5a08a57,0x367b4713,0x3681711a,0xb8a85278,0xb8f40c07,0xb905ca86,0xb8fb1e8a,0xb8ba3257,0x34bd6ba7,0x38ecb219,0x39f9d034,0x3a0de6f6,0x39d33930,0xb96d65e3,0xb9da00ad,0xb917922c, +0x390cc761,0x39e14f2f,0x3a412136,0xb8842bd0,0x3a55db10,0x379fe60e,0xb76f698d,0x36ae1ac9,0xb6968f38,0x343b430c,0x353eeb94,0x35816528,0x3530ac6d,0x355f10a4,0x353a8c95,0x357745da,0x34e52089,0x35c46140,0xb4a6e475,0x3618516a,0xb71cd27e,0x37775ca5,0xb823f35f,0x391d44c4,0x38e73078, +0x386ddef1,0xb75d0ae6,0xb8721530,0xb8cc31a7,0xb922a87f,0xb92fc758,0xb92ab995,0xb8186b96,0x38136e9a,0x3983e8f7,0x3a0947b4,0x3a47c321,0x3a722435,0x3a8f721d,0x3a8598bc,0xb90d72c9,0x38976af7,0xb835ea84,0x37aec384,0xb6559530,0x369f0dec,0xb6868966,0xb56c0701,0xb5f9ffff,0xb5c62289, +0xb5e3d123,0xb5cabd2c,0xb5ec59de,0xb598e832,0xb6628b73,0x365259fb,0x35d536e2,0x376a201e,0xb83f9229,0x39291fc4,0x3931bc13,0x393a91a6,0x391e2149,0x390064e1,0x389053cf,0x3692bda8,0xb844232f,0xb8a2bbf0,0xb8dd9019,0xb8f3dfe5,0xb91339fb,0xb919b3e4,0xb98727f7,0xb99a3330,0xb9915ced, +0xb98ba8bc,0x3958be2a,0x398b5345,0xb7f8cb86,0x3651c45e,0xb7936866,0x35a1bd2c,0x3697b677,0x368401ab,0x365e5313,0x3682f505,0x366975e7,0x368232b0,0x36625d7d,0x367e5971,0x36a31c90,0x351f2fd0,0xb795a7ab,0xb6dbc007,0x380976ef,0xb8bbe057,0xb8afbd81,0xb8d15f15,0xb8ddde76,0xb902201c, +0xb9110a5a,0xb9254125,0xb9185e93,0xb9119af9,0xb90c0400,0xb8a620e3,0xb800dc4b,0x37d07988,0x38951843,0x38f4c2a5,0x3926ef4d,0x3958401f,0xb890a7cd,0xb7f453fa,0xb834e578,0x382216d4,0x3822ea2e,0xb644eea6,0xb7860150,0xb70f9e18,0xb739b536,0xb72be86d,0xb7323549,0xb72bb4e2,0xb73a765f, +0xb70d1ab0,0xb789846f,0xb61c7ea0,0x382dfa53,0x38580731,0xb8a989c6,0xb9063c0c,0xb8eb61e4,0xb90507d9,0xb9066291,0xb90ef892,0xb9126254,0xb91921c0,0xb90743c4,0xb8ee330e,0xb8d5e8ec,0xb8c268a2,0xb8b4d2a8,0xb8a7b4ee,0xb8a2fde4,0xb89a09bf,0xb8a165c5,0xb88cb6c2,0xb87a62ee,0xb86fab3d, +0xb8adfea5,0xb8bfdd3e,0xb90eebca,0x38458914,0x37f30681,0x37ef876d,0x37f4dafc,0x37f3b4ac,0x37f3acab,0x37f3b745,0x37f4e1d2,0x37ef5aac,0x37f2af15,0x384aeb24,0xb91a4941,0xb8e39e44,0xb8f40b4d,0xb8b96003,0xb8d9a8ef,0xb8dab0ba,0xb8e26219,0xb8e70a4b,0xb8ebd981,0xb8f81313,0xb8e780b4, +0xb8db74bf,0xb8c98e54,0xb8ba3e83,0xb8a7f64b,0xb891c20d,0xb890fcbf,0xb88bc3ae,0xb8835e51,0xb87bff26,0xb8d3ede1, }; -const uint32_t orange53_rom_AlphaL32[578 * 86] = { -0x3e8f52c1,0x3e145823,0x3e963792,0x3e5e155c,0x3e5f72bd,0x3e63c256,0x3e6aa8ed,0x3e715293,0x3e75d7db,0x3e6cdba4,0x3e6ac8ed,0x3e611eaa,0x3e5bb05b,0x3e5a8795,0x3e5baa66,0x3e56bb3d,0x3e593954,0x3e53cf54,0x3e558dcb,0x3e488834,0x3e66ab70,0x3d71aaae,0xbc82e075,0xbe0629bf,0x3dce05ec, -0xbc419c9d,0xbe0866d5,0xbe03c908,0xbded3e64,0xbdc9c452,0xbe12e4c6,0xbe14222d,0xbdf16d26,0xbd2bbbd9,0x3df567fd,0xbdd6b256,0xbd6f131f,0xbe2f205c,0x3e5bdb82,0x3e925c95,0x3e8f7308,0x3e9400ef,0x3ea360f4,0x3eaeb6c6,0x3eb14f5d,0x3e9db253,0x3ea202a2,0x3e968ba6,0x3e8c7853,0x3e8a7eba, -0x3e8c3ff5,0x3e7e7a47,0x3e86bdd6,0x3e818221,0x3e740e62,0x3e6f31c6,0x3e88b450,0xbab6bf87,0x3d8b3aff,0x3cf37ee4,0x3d0339fc,0x3df4b4b6,0x3cf4e8e6,0x3d87a88f,0x3b57097c,0x3d747515,0x3d0ec887,0x3e517835,0x3d556e35,0x3d385e32,0x3d9b237b,0x3cf23b2f,0x3dbc23df,0xba6ef452,0x3eaf0a18, -0x3e9fde99,0x3ea44017,0x3ead0f01,0x3ed09ca6,0x3ed7ad6a,0x3edf233f,0x3ed017ab,0x3ebd1d96,0x3eaa4516,0x3e9fdbfd,0x3e9655a4,0x3e904283,0x3e9018c9,0x3e8544cc,0x3e89307a,0x3e669204,0x3e836bc2,0x3e155eb2,0xbd339444,0x3d31dfac,0x3d93a05f,0x3b87c8ad,0x3d17a77c,0x3d5501c9,0x3d50487d, -0x3e2a71b8,0xbc9ec763,0x3dc7bf69,0x3b74cbf2,0x3da4a8fb,0x3dbb63b8,0x3d97319c,0x3ba25d30,0x3e4c7c88,0xbd8e98ed,0x3e002d83,0x3ebe5e2d,0x3ea36440,0x3ec26f6f,0x3ee8ccdb,0x3f0209a7,0x3f0075a8,0x3eea3e12,0x3ed3cf57,0x3ec12164,0x3eab00eb,0x3e9b5f31,0x3e989415,0x3e8c2777,0x3e860cd7, -0x3e85086e,0x3e63c417,0x3e61a899,0x3e167962,0x3d4b9596,0x3dcfe1e5,0x3c559e5f,0x3db28c8d,0x3b5cf73b,0x3d7d7ab7,0xbce3be26,0x3c8cf35c,0x3c814ccd,0x3dafc9aa,0x3c4c864a,0x3d71dff6,0xbd0140c9,0x3d1f50a0,0x3d84241a,0x3ddfb5fb,0x3e1dc413,0x3e5f1d8f,0x3edc2100,0x3eb80086,0x3ed7dd1f, -0x3f0c3141,0x3f1bbd45,0x3f1cebb4,0x3f0f2116,0x3ef7d35a,0x3ed200e8,0x3eb96677,0x3ea9a6f4,0x3e9d9dfe,0x3e9a5e96,0x3e8ff7aa,0x3e88829e,0x3e65c951,0x3e5520fa,0x3e093732,0xbdba6a10,0x3d0e517b,0xbbe83a15,0x3c0da358,0x3c9303bc,0x3b9e9c8f,0x3cfabda6,0x3c985be1,0x3ca09d9f,0x3bb90cd8, -0x3d461a2a,0x3c8ed9d6,0x3d1a71f4,0x3db26824,0x3d702853,0x3cd0b8a9,0x3bdf59e8,0x3e5cbaf6,0x3f03298f,0x3ef308e6,0x3f064eca,0x3f10daf6,0x3f1a6c38,0x3f1fcc57,0x3f24e97b,0x3f1dcb0e,0x3f07ff91,0x3f094cc1,0x3eff45bd,0x3ed93ba4,0x3ed47a6a,0x3ebb4d27,0x3eac7b7a,0x3e862664,0x3e699b22, -0x3e300cec,0x3ce489ba,0x3dcc1d74,0xbb61af1a,0x3d3a27b4,0xbc0301ec,0x3c90bc47,0x3aa38ef3,0x3cecb012,0x3cfdbadb,0x3c7c149e,0x3c89dbd4,0x3c27f507,0x3db4e3a6,0x3ce74391,0xbd5642d3,0x3e428488,0x3d995d89,0x3e93c2fe,0x3f0007ce,0x3ef721da,0x3f0cd191,0x3f1fa736,0x3f27719b,0x3f1dd6a3, -0x3f1e0212,0x3f0fd2b2,0x3f004547,0x3ef174d3,0x3ee1b958,0x3eeb23e7,0x3edc983e,0x3ecb06e5,0x3ec54eaf,0x3e91b372,0x3e905baa,0x3dfa85d6,0xbd1d4b9e,0x3cc86998,0x3d243164,0x3d12fac3,0x3cb42fd1,0x3ca51b38,0x3c497714,0xbb9c9e6f,0x3c181f66,0x3c39193a,0x3d4e4b8e,0x3cc670c5,0xbc0156c2, -0x3d84e631,0x3dfa76c5,0x3d038430,0xbcd68927,0x3e932924,0x3f2e619c,0x3f27d826,0x3f588194,0x3f423e10,0x3f3a3a80,0x3f24b3c6,0x3f11f255,0x3f04912a,0x3f100003,0x3f158c72,0x3f228892,0x3f2099da,0x3f0d741f,0x3ef14d54,0x3ecf863f,0x3e9e85c1,0x3e9668f9,0x3e1fda2b,0x3d38edf7,0x3d41df18, -0xbc9d9c88,0x3d769a2f,0x3c993996,0x3d26ce58,0xbb2dbe56,0x3d48d10b,0x3d063c51,0x3c61d7c8,0x3c3514f7,0x3d09d70d,0x3d5fa5f0,0x3da29cdc,0x3d1a2a9d,0x3c9fecf5,0xbd9c9d3b,0x3e9bdb59,0x3f569786,0x3f5827d5,0x3f711142,0x3f489fcd,0x3f3c1b8e,0x3f296230,0x3f177348,0x3f15af7d,0x3f2a6c5a, -0x3f3203cf,0x3f307949,0x3f27aca5,0x3f118da4,0x3eeb7de0,0x3ec4a307,0x3e8faa08,0x3e9f5931,0x3e00c37d,0x3d0833e1,0x3d60df6a,0x3d961931,0x3a143889,0x3d55daa9,0xbb7c69c8,0x3cf12898,0x3bbc16f2,0xbcbb52ea,0x3d8abc5e,0xbadf3970,0x3d1d47fc,0xbd69ea99,0x3dd87891,0xbd484ad4,0x3e815111, -0xbd3fcc84,0x3f3bee1c,0x3f5702a6,0x3f4fee49,0x3f4d4908,0x3f337b50,0x3f2c0597,0x3f1b2489,0x3f2343b2,0x3f236df3,0x3f1cc465,0x3f172c50,0x3f116d8f,0x3f0189d5,0x3eef3e0b,0x3ecd5a6f,0x3eb1801e,0x3e945f72,0x3e8e2e24,0x3e0a418c,0x3d8fdf1e,0x3de39d5e,0xbbd4a474,0x3cc5a9d9,0x3d265e35, -0x3c8ee181,0x3ce692c2,0x3d3276d7,0x3d40e57f,0x3c15a361,0xbc06cd88,0x3d2bb831,0x3d1b2a39,0x3debb163,0xbd76a6a2,0x3e04073a,0x3dcfa296,0x3e794066,0x3f61a1e2,0x3f2e3406,0x3f38c211,0x3f152ce6,0x3f0d9ec9,0x3f118389,0x3f04b4b7,0x3f0cd703,0x3f252027,0x3f16cefa,0x3f0a134a,0x3efb64da, -0x3ec74b5a,0x3e9bd1ec,0x3e88ed46,0x3e700735,0x3e81a507,0x3e7247a8,0xbc5b000d,0xbc7f5f9d,0x3d8ce6f3,0x3a9f9128,0x3d194480,0x3c6968ed,0xbc9c9276,0x3cbc3d2b,0x3b8187b1,0x3c8cbd1c,0x3d7fde5a,0x3d25dd61,0x3e1f3daa,0xbd71d326,0x3d9505e0,0x3e85c0bc,0xbe14663f,0x3f078a4a,0x3f08ff25, -0x3eef0a2d,0x3ef62eba,0x3eeaba8f,0x3ee88a3b,0x3ee7ef77,0x3edbbfa8,0x3ec18cc8,0x3ec0e706,0x3ec2e2bc,0x3ecc793c,0x3ec110e3,0x3eb8ee87,0x3ea74e17,0x3e9252bb,0x3e808af6,0x3e97d152,0x3dbdabdf,0xbcf74b6b,0x3e5d392b,0xbbbc975a,0x3daf1530,0x3d2fdf23,0xbcd48ee8,0x3de15cab,0x3cba9a46, -0x3d7f9414,0xbc424eaa,0x3cfe15eb,0x3d3dc6f6,0xbcd041f7,0x3db935e6,0x3d849aa9,0x3e41b928,0x3d6bd316,0x3e28cd88,0x3ee0750a,0x3eb9de30,0x3ec1c4db,0x3ec4a554,0x3ed0721f,0x3ed68788,0x3ec6df2e,0x3ebb7048,0x3eb7a565,0x3eae51d5,0x3ea6469e,0x3e9c0527,0x3e96f892,0x3e81fd61,0x3e7027fa, -0x3e4f2040,0x3e7b0ed8,0x3e5a18b1,0xbca0a8a4,0xbc64954a,0x3da329c8,0xbb84e965,0x3d2a1350,0x3d5499c8,0xbd582c45,0x3c38f946,0x3d327425,0x3d367cf5,0x3cf52dc0,0x3c07065c,0x3d921e85,0x3d43f3ae,0x3c59209c,0x3d607590,0xbd2358cd,0x3e8acbdd,0x3e9e6298,0x3e9447cb,0x3eb5d66e,0x3eb4185a, -0x3ebd9d07,0x3ec21fdc,0x3ec18405,0x3ebf38c0,0x3ebd9faf,0x3ea25d4b,0x3e8cd223,0x3e62d805,0x3e5e91b5,0x3e475292,0x3e532556,0x3e389f94,0x3e7ef9e8,0x3dc26159,0x3d93bba4,0x3da2b952,0x3d9e82ae,0x3d617f4d,0x3cc48cc4,0x3d2a81a6,0x3d6088d8,0x3e4d349d,0xbd991310,0x3e16035a,0x3baf8418, -0x3db092e0,0x3d9d7eb0,0x3c49b9a4,0x3dd1e643,0x3e3c29ce,0xbda96432,0x3e9ccc05,0x3e8a3f68,0x3e8fd060,0x3e85bb76,0x3e9614ed,0x3e97ee48,0x3ea540b1,0x3e952e38,0x3e89e5ab,0x3e7e4b14,0x3e794bb8,0x3e746514,0x3e5fb1df,0x3e66166e,0x3e627c09,0x3e6f4880,0x3e583a61,0x3e6ce9a7,0x3e5ae103, -0xbd654597,0x3d89c3a4,0x3d0b7e2c,0x3dd351df,0x3d9d9073,0x3da5c144,0x3d5ece48,0x3cefadec,0x3d21b446,0x3d3e6217,0x3e51bb0b,0xbd07760b,0x3da681a7,0x3d8cf402,0xbdb869b1,0x3e50f27c,0x3d8ef47f,0x3e8fc86a,0x3e719d88,0x3e7df47b,0x3e80b787,0x3e8595df,0x3e84b419,0x3e895041,0x3e8667b2, -0x3e865617,0x3e83fc47,0x3e7e8241,0x3e73e6d1,0x3e6cf5da,0x3e6b79c6,0x3e6ac9d9,0x3e6d5897,0x3e6d6b10,0x3e62c775,0x3e927b5f,0x3dae94a4,0xbd1c4d87,0xbe079640,0x3d9ebf76,0xbd354e1a,0xbe0e03d6,0xbe1de0dc,0xbe034c9d,0xbdf10d58,0xbe2b5687,0xbe318071,0xbdf45595,0x3b808bed,0x3de64a8a, -0xbdf3d0cd,0xbd91ac9a,0x3eaab7ce,0x3f178910,0x3ee158ca,0x3eb72cf1,0x3ec74ff4,0x3ec94f09,0x3ecee858,0x3ecfce07,0x3ed39bf4,0x3ed6c2e8,0x3ecee1e2,0x3eceeb67,0x3ec9a5bf,0x3ec5b686,0x3ec472e2,0x3ec415e0,0x3ebddfb0,0x3ebf5e62,0x3eb9c37a,0x3eb9de7c,0x3eb65f84,0x3eb23eb5,0x3ed26768, -0x3ecf8325,0x3e8fe59b,0x3ed1051d,0x3ecfa686,0x3e962b12,0x3e973fb9,0x3e97e1a0,0x3e98d776,0x3ea0971b,0x3ea09883,0x3eaef7a8,0x3ed1fa17,0x3ed5616b,0x3ea62f72,0x3ed762cb,0x3efabc31,0x3efe01fc,0x3f006fb1,0x3f03d7fb,0x3f0d3118,0x3f12b26d,0x3f1b0fba,0x3f1c151d,0x3f0a1238,0x3f10ce18, -0x3f08aa78,0x3f00fdcc,0x3f00b281,0x3f0029ec,0x3ee45630,0x3ef4786e,0x3ee53b34,0x3edde77e,0x3ed3c65d,0x3ecf48e7,0x3ed9d0ae,0x3ecf33b8,0x3ebec885,0x3ed0af58,0x3ec90a0f,0x3eb36d5b,0x3ecc8157,0x3ec75d3b,0x3ec58fd5,0x3ed434a7,0x3eb5ccfd,0x3ec3dfac,0x3ed1b0e9,0x3ee058f5,0x3ee616ef, -0x3ee3ceb9,0x3f0d1b7e,0x3f08f082,0x3f08c3f8,0x3f1d44f7,0x3f2a032d,0x3f3d47b2,0x3f3bfa18,0x3f41f99e,0x3f33ee29,0x3f271361,0x3f1e15f9,0x3f1adc89,0x3f107143,0x3f066e88,0x3f031aec,0x3eefe501,0x3ee9e898,0x3ed895b3,0x3ec52865,0x3ec5f488,0x3ec2ac1b,0x3ea6b4e2,0x3eb15bbf,0x3e9c596c, -0x3e8c72d9,0x3e9d3dd5,0x3e817559,0x3ea29115,0x3e9fd543,0x3e933a6c,0x3ea0ea51,0x3ea96136,0x3eb6734b,0x3ec2a155,0x3ed0acb8,0x3eebe83b,0x3ef76492,0x3f02d0b9,0x3f07ebe5,0x3f1ec964,0x3f3b3569,0x3f515b1f,0x3f5dc3b2,0x3f578e19,0x3f4420b2,0x3f3623c4,0x3f2c88e6,0x3f1f338d,0x3f15a618, -0x3f088657,0x3ef825e6,0x3eeb6b0e,0x3edd20b4,0x3ec20b95,0x3eabe16d,0x3e9b8f7a,0x3e908562,0x3e6b88eb,0x3e59f8a4,0x3e47e0d4,0x3e2d7091,0x3e1cc074,0x3e1a0a84,0x3e0c18aa,0x3e26d61d,0x3e333791,0x3e3984ba,0x3e6a4d6c,0x3e819e3e,0x3e8f2285,0x3eb04013,0x3ec203ea,0x3efee064,0x3f1a4b95, -0x3f12f9e2,0x3f3eed8b,0x3f5bac0b,0x3f7e9953,0x3f86d09d,0x3f864732,0x3f70227d,0x3f544d84,0x3f42753a,0x3f39dd34,0x3f28683f,0x3f178d92,0x3f0cc63d,0x3efec2fa,0x3ee30500,0x3ec63c6f,0x3ea7dd02,0x3e8ed124,0x3e4db25b,0x3e280f44,0x3dfb054f,0x3dc37b5b,0x3d85654e,0x3d662a9e,0x3d54b72f, -0x3d4c0f61,0x3d9106c1,0x3d8d67bc,0x3de6ccf5,0x3e0ceef2,0x3e3e4234,0x3e8252ac,0x3e8c83b2,0x3eca75a4,0x3f190a00,0x3f334b90,0x3f2dd110,0x3f60f701,0x3f822d00,0x3f85c4fb,0x3f8ba95d,0x3f920b04,0x3f9eaccb,0x3f9bb589,0x3f81d3b6,0x3f7d7344,0x3f775a72,0x3f6ea04f,0x3f583b35,0x3f3e214e, -0x3f36f55a,0x3f1be9be,0x3efd0d21,0x3ec64718,0x3e914076,0x3e681dd4,0x3e2592b7,0x3e14b67c,0x3dbd4b51,0x3d9d6fb6,0x3d92b077,0x3daf7405,0x3df1c941,0x3ddbc76b,0x3e153221,0x3e39cef9,0x3e7ad953,0x3ea1390f,0x3ebbe2c5,0x3f05088e,0x3f37dc18,0x3f41a361,0x3f5acbc1,0x3f8b728e,0x3f97e463, -0x3f98afa0,0x3fa636d1,0x3fa70e57,0x3fb0ee89,0x3fa7820d,0x3f9d0f4b,0x3f9c781a,0x3f8cb85d,0x3f8406db,0x3f631a86,0x3f46e8e6,0x3f2b6fc2,0x3f19900b,0x3f04629e,0x3ee1d5d3,0x3ea72cd2,0x3e9573bf,0x3e63001c,0x3e228913,0x3df1fe3a,0x3dc1d435,0x3db533ac,0x3d949728,0x3db45b41,0x3de1e1c9, -0x3e1ae278,0x3e4635cd,0x3e6fcabf,0x3e9f836f,0x3ee3356e,0x3f06cbfa,0x3f4be163,0x3f676799,0x3f807951,0x3f853767,0x3f7b0549,0x3f8b52fe,0x3f932344,0x3f979ad0,0x3fabd6fc,0x3fb08417,0x3fa7afac,0x3f96f270,0x3f87f253,0x3f690fb6,0x3f4a06d7,0x3f3c84e9,0x3f2a2d78,0x3f163ef8,0x3ef23752, -0x3ee35402,0x3eca5830,0x3e973dec,0x3e8280c6,0x3e69f510,0x3e210452,0x3e1b85ef,0x3dc5d550,0x3e1a26e4,0x3e2c0f7a,0x3e084a03,0x3e24e023,0x3e407810,0x3eae3167,0x3ecda82c,0x3f1081b0,0x3f02047c,0x3f65b760,0x3f73a2a9,0x3f4fe7e3,0x3f5aa760,0x3f4079dc,0x3f6ced57,0x3f801396,0x3f9ea0cc, -0x3f9d155b,0x3fa30184,0x3f9a2184,0x3f8bb6f6,0x3f73e9f3,0x3f4d065b,0x3f439b3e,0x3f2a57bb,0x3f1eee52,0x3f02f9bb,0x3ee34c7a,0x3ece158b,0x3ed3b75c,0x3e99ae84,0x3eb5dd88,0x3e5f34ad,0x3e6d1654,0x3e131a55,0x3e1cbfaf,0x3e014899,0x3e4ffe2b,0x3e58e877,0x3e15c0c0,0x3e665899,0x3e8a3547, -0x3eca8601,0x3f0b0130,0x3f16cafb,0x3f7258b2,0x3f35da4c,0x3f30aafa,0x3f49d978,0x3f2ea6e8,0x3f6e39b0,0x3f8f624f,0x3fa75a2e,0x3fa1c38a,0x3f99658b,0x3f8a4be6,0x3f827b7b,0x3f7ada1b,0x3f60f4b2,0x3f4f705d,0x3f32fba9,0x3f0d383e,0x3f04c0de,0x3ee1c2c0,0x3ef8dff9,0x3ed86ff6,0x3ee0fd01, -0x3e919d34,0x3e95d625,0x3e6f54d0,0x3e493a18,0x3e15bf7c,0x3e4b5308,0x3eb5abee,0x3e2fc6fd,0x3e396236,0x3e5b5fee,0x3e93b25b,0x3ecabe76,0x3ee1f251,0x3f184ba1,0x3f763bc4,0x3f77cf9d,0x3f3464b0,0x3f7cd3f0,0x3f6f0e5b,0x3f8b871a,0x3f912a4d,0x3fa033c6,0x3f94e39c,0x3f92009e,0x3f883521, -0x3f71b9d7,0x3f5c86cb,0x3f4916d7,0x3f2c9432,0x3f1c66ff,0x3f0e8d5e,0x3f1ac671,0x3f118300,0x3f17d104,0x3ef69941,0x3eb4b7c4,0x3eb2858a,0x3e8e4e48,0x3e8d7ae6,0x3e4a5722,0x3e1cd361,0x3e4c97f1,0x3e5bc280,0x3e7aedcd,0x3e980774,0x3eb627a4,0x3ec83658,0x3ea92755,0x3f10ac9e,0x3ef38c85, -0x3f58e159,0x3f44efc4,0x3f617302,0x3f79384a,0x3f7b90af,0x3f8e47d9,0x3f93c420,0x3f933db1,0x3f9873df,0x3f91aec6,0x3f8abedf,0x3f7fb1dd,0x3f617547,0x3f482fcb,0x3f2d4ea7,0x3f1f9434,0x3f112a6d,0x3f242dca,0x3f2c8a58,0x3f0f7633,0x3ef862f6,0x3f0e532a,0x3ee3904b,0x3ec57380,0x3e9bff71, -0x3e3529c9,0x3e9c1d96,0x3e5ed2f8,0x3ea2d680,0x3e57d141,0x3e98c871,0x3eab62d9,0x3ec1bd38,0x3ef34b84,0x3f0c5640,0x3f36d8ac,0x3f44e9fe,0x3f56962b,0x3f603ee8,0x3f711913,0x3f7b581f,0x3f82a307,0x3f879252,0x3f89f26a,0x3f863bc7,0x3f82d373,0x3f7c90a4,0x3f637328,0x3f53c039,0x3f3f3833, -0x3f345a4b,0x3f2d1af1,0x3f2581e7,0x3f264c1e,0x3f26b523,0x3f27b482,0x3f05078a,0x3ecf75e0,0x3efd4533,0x3eb512d9,0x3ea788c0,0x3e9db265,0x3e6fdf23,0x3e8693d6,0x3ea81f71,0x3ea6846a,0x3eaa394c,0x3e8db9be,0x3ed8dbcc,0x3ed3d050,0x3f06cf87,0x3f1226cf,0x3f1e7497,0x3f50b1bf,0x3f526ea7, -0x3f5e692d,0x3f6bcd48,0x3f6b9c6b,0x3f7147e0,0x3f76c446,0x3f6bd487,0x3f63d6a7,0x3f58c29a,0x3f5afc53,0x3f5174c4,0x3f48ccc7,0x3f451f58,0x3f3ab9d3,0x3f314350,0x3f29c730,0x3f25bca5,0x3f13af03,0x3f184edd,0x3f005704,0x3f097cc9,0x3eeb9ba1,0x3eda68ae,0x3ef77af1,0x3ec6ade8,0x3f16bbfe, -0x3ec2d39e,0x3ef85bee,0x3eca3eb2,0x3ee59236,0x3f03ccf2,0x3f01a2e0,0x3f1c4044,0x3f2e9d5d,0x3f06055d,0x3f4417aa,0x3f4a181b,0x3f44bb37,0x3f3aee14,0x3f524935,0x3f4f25df,0x3f5b12b1,0x3f576552,0x3f56b179,0x3f539bbc,0x3f4f042c,0x3f4a2b6c,0x3f48ba42,0x3f3f7c44,0x3f39c704,0x3f40bb8b, -0x3f396d4b,0x3f31ff11,0x3f3c55c5,0x3f04f3eb,0x3f1ab375,0x3f142d5b,0x3f256c5f,0x3f1422ff,0x3f05e5c3,0x3f16a47a,0x3f12019a,0x3f129f1f,0x3f1edb58,0x3f262f9f,0x3f03c9a3,0x3f2c38a1,0x3f1108a1,0x3ef410a3,0x3f4e434b,0x3f25b7c5,0x3f268526,0x3f213e69,0x3f23ccb6,0x3f224eba,0x3f2607c2, -0x3f246085,0x3f27d81c,0x3f23e476,0x3f22c3a2,0x3f21e213,0x3f21102d,0x3f207248,0x3f20479e,0x3f1ec274,0x3f1ea9e5,0x3f1def8e,0x3f1acb57,0x3f15a330,0x3f1eb4cb,0x3f1e5a69,0x3f0d7bc1,0x3eaa64b5,0x3f1dacc0,0x3f0bd2a7,0x3eb23a34,0x3eaf0fd6,0x3eaf3021,0x3eb426c3,0x3ea668d7,0x3eaa214e, -0x3ec3706c,0x3f14396a,0x3f1df81f,0x3ebff0f8,0x3f0acbc2,0x3f7c2a01,0xbd04f14b,0xbd660f6a,0xbdeb3ea5,0xbd71b68c,0xbd89cd3b,0xbd8edb51,0xbd97c568,0xbd9eea43,0xbdb10ee8,0xbd9443aa,0xbd832968,0xbd52f3dd,0xbd4d0324,0xbd4e2540,0xbd4ef99e,0xbd54809d,0xbd55e16e,0xbd4cf9e2,0xbd3f2f78, -0xbd0c56fa,0xbd72828e,0x3d27412c,0x3dfdeade,0x3eb5f20e,0xbbc0add7,0x3de1a99d,0x3eaed940,0x3eaacfba,0x3ea5068e,0x3e96a85c,0x3ead0fb9,0x3ea67648,0x3e947fc4,0x3e09ffad,0xbcec68f9,0x3e9f5649,0x3e25291b,0x3eb35b80,0xbd037f13,0xbd6a1b45,0xbd959d95,0xbda9bfc5,0xbdf46681,0xbe0c2b77, -0xbe1cdd8b,0xbdc085c4,0xbd9ea1e1,0xbd7de04f,0xbd3d6cde,0xbd2bd1b2,0xbd3b51dd,0xbd4a57e0,0xbd6aae89,0xbd63cf96,0xbd237428,0xbcc8bad5,0xbd445c12,0x3e37d1e3,0x3df456d3,0x3e2c1082,0x3dd48d72,0x3c0ba5d8,0x3e299de0,0x3dc12bf7,0x3e2391ed,0x3dbc4c5d,0x3df70aa8,0xbd518834,0x3e001d58, -0x3def0666,0x3dba6afc,0x3e0b7505,0x3da5da30,0x3de08469,0xbe02eb5f,0xbdb8835a,0xbe018d60,0xbe17d261,0xbe65cb21,0xbe751883,0xbe905150,0xbe3de47e,0xbdf55bb9,0xbd6f261e,0xbd4a0a34,0xbd34d938,0xbd580397,0xbd93ab77,0xbd8a5e53,0xbd8f7ef8,0xbcc954f0,0xbcfdaf4b,0x3d51c434,0x3e3e04ec, -0x3e1664e4,0x3d845d07,0x3e12846d,0x3df649d4,0x3d873803,0x3dd1a651,0xbd36d806,0x3def6ccb,0x3d05d72a,0x3de33c48,0x3d5cb316,0x3d4c2bb6,0x3d98e933,0x3e0a6c4c,0xbd4a1374,0x3e4913a1,0x3df724f1,0xbdb05395,0xbd608699,0xbe151d63,0xbe8b39c9,0xbea416ff,0xbeb8fce8,0xbe4783d7,0xbdb16b36, -0xbd63e1c1,0xbc25e400,0xbbe17df8,0xbc80b1c1,0xbd49f459,0xbd7adc43,0xbd784006,0xbc8d3001,0x3c9a21bb,0x3d89aab5,0x3e089fdf,0x3dab7cc8,0x3e16691c,0x3d80ffb9,0x3e00a374,0x3d859e79,0x3e0d37fd,0x3ddcffce,0x3ddc8e16,0x3cc3e7e1,0x3d9f6d57,0x3d1d616b,0x3e1c5700,0x3df7e715,0x3d3c013d, -0x3d5ff092,0xbab5d697,0xbac61d71,0xbded8497,0xbe1b6597,0xbe7afb5f,0xbec95ded,0xbeef8bb3,0xbf034d9d,0xbe9ef3f4,0xbe205cc1,0xbc9cd979,0xbc0162f4,0xbc5650ed,0xbd2347bb,0xbda579ac,0xbdb233ae,0xbd8c3cff,0xbc44e477,0x3d12d64d,0x3dbc589a,0x3e6c149b,0x3e17f73f,0x3e058e8d,0x3dd99cfd, -0x3d976706,0x3d99f76c,0x3d2aa513,0x3d4bbd4d,0x3d418fdd,0x3d868071,0x3ccf2f12,0x3db8c3cb,0x3dbfdb19,0x3d853651,0x3dbf5d14,0x3e017dad,0x3dd92ef3,0xbe492fba,0xbe8bf22d,0xbe95f902,0xbeb42532,0xbeb6e8ae,0xbeb8dadc,0xbed63f1d,0xbef1e63f,0xbed1d1a6,0xbe0a7ffd,0xbe6d59a3,0xbe620fb8, -0xbe6184a0,0xbe694315,0xbe71f19c,0xbe5763d9,0xbdbf1387,0xbcc7f8e6,0x3d66bb7b,0x3e4c8666,0x3de844cb,0x3e2041ab,0x3da8ef33,0x3de8d565,0x3d9bad65,0x3ddd1bcb,0x3da19101,0x3d610698,0x3d2a19e4,0x3ce7a018,0x3d70f80a,0xbc5e52b1,0x3cf950b3,0x3e1c19fe,0xbe09226c,0x3d8fa36b,0xbe1729bd, -0xbf077823,0xbf17de4f,0xbeff5d2d,0xbee1740d,0xbef8ed1b,0xbf0cb702,0xbf0dee55,0xbf012dc9,0xbead6651,0xbedd7f06,0xbeeb3f27,0xbf03bbd0,0xbee43f02,0xbea91e0e,0xbe85ea26,0xbdbd9c94,0xbd22dbbf,0x3dc16e51,0x3e84c62e,0x3e18cf73,0x3db98d21,0x3d93e001,0x3d4bc08c,0x3d0c74a2,0x3d066721, -0x3d8cc339,0x3dfdd1e3,0x3dcdec20,0x3dbe7797,0x3e20b1c0,0x3e52d0e9,0x3e27311f,0x3dbe0ae6,0x3e7e2d19,0x3e27bf9b,0xbe82d6e4,0xbf34b849,0xbf01a66a,0xbec7fab9,0xbe6ba6a5,0xbe5f462f,0xbeaac281,0xbebf209b,0xbeea32df,0xbf1798d6,0xbf292835,0xbf373504,0xbf28d25c,0xbf0a2daf,0xbee4df9f, -0xbeb5fb4d,0xbe270385,0xbd7b90ce,0x3d7f0f3d,0x3e0f2d28,0x3e2edb84,0x3e47e6f3,0x3d6f509b,0x3dc4c2b5,0x3dc60e6a,0x3e19f7c4,0x3ddfdbc1,0x3e26d319,0x3e06454b,0x3e089868,0x3e300c38,0x3d9fb54e,0x3db6299d,0x3d7d0b8e,0x3e85301e,0x3d925170,0xbe811791,0xbec9dfd2,0xbe64bfb2,0x3e3164d1, -0x3caa0461,0x3c8b014c,0xbe8d4637,0xbe89750b,0xbee1009e,0xbf275506,0xbf3bb749,0xbf38974e,0xbf20e868,0xbf0cd040,0xbed5664e,0xbea679f6,0xbe1cf8c3,0xbdbe58ec,0x3db0d558,0x3e0898e7,0x3e42b693,0x3dffd9bc,0x3e3eeb05,0x3dcb54c2,0x3e3c7509,0x3e0f8e1a,0x3e30e47a,0x3ea390ca,0x3dd067a2, -0x3e15bf87,0x3df884ed,0x3e6da104,0x3db94bdd,0x3e2ded5e,0xbd0eab83,0x3c2a4151,0xbe88c929,0xbdd81877,0xbc5f3cbd,0x3f1330d3,0x3e580780,0x3cc4cb4d,0xbe90a136,0xbea47d35,0xbedd18f0,0xbede3246,0xbf08251b,0xbf15972d,0xbf043cb7,0xbeea6ce5,0xbeb159b1,0xbe3acca2,0xbddd9857,0xbd43c874, -0x3d5ceb18,0x3e36fb50,0x3dce232b,0x3e883493,0x3e2daf31,0x3e07d518,0x3e1eff4b,0x3db192f7,0x3df3dcbc,0x3e9b4d4d,0x3e39129f,0x3e30c9ad,0x3e24a33b,0x3e26cb1f,0x3d7abd49,0x3e8a82f8,0x3df3afe3,0xbe2952d8,0xbe498e17,0xbe0e3eec,0xbd06aa55,0x3b30439a,0x3d83ad68,0x3d0c2820,0xbe4fe626, -0xbe8052f8,0xbec7ec15,0xbf0852d4,0xbef4a774,0xbee87219,0xbeca813f,0xbe799d5a,0xbe1839a4,0xbdcc6904,0xbdda972c,0xbd6c60fc,0xbd19c50f,0x3e8c0da4,0x3eb65c08,0x3e38c430,0x3e8f5a92,0x3e456aa4,0x3e555099,0x3e72ecea,0x3e49857a,0x3e97cf74,0x3e4bb6fc,0x3e03d232,0x3db880fd,0x3d2a8892, -0x3e98b56f,0x3d8aa547,0x3de7a9c2,0x3e96e060,0xbe154db6,0xbe05079f,0xbd01a354,0x3df91b37,0x3d606d49,0xbb1ca83c,0xbe0a2b9b,0xbe70ed0d,0xbe8c27ff,0xbe92f74d,0xbeaa2655,0xbe9ba52e,0xbe6e89d0,0xbe2d8e45,0xbdd0dcaf,0xbd6e840d,0xbcac30f7,0xbde9a889,0x3e3f7043,0x3ecb5bf9,0xbcbc56e2, -0x3e8553fa,0x3e0e4ca3,0x3e420941,0x3e9a6335,0x3dbcfe5a,0x3e719a0b,0x3e2ea6a0,0x3e9fb9cf,0x3e5ac16f,0x3e201d2c,0x3e68b50e,0x3dea7537,0x3e1f7c21,0xbc8152d0,0x3e7ef50a,0x3df51bb2,0xbdb5c219,0x3d173ec5,0x3d765b5f,0xbbc96cc0,0xbd7719d6,0xbdefa0ad,0xbe15a575,0xbe2592a8,0xbe2e2e1e, -0xbe129b6e,0xbde159a3,0xbd898fe4,0xbd2530b5,0x3c988004,0x3d37fdc8,0x3d7cba50,0x3a7b2e70,0xbcab04c5,0x3ea4474f,0x3eae5d14,0x3e18cf2c,0x3e9d4d27,0x3e808f04,0x3e59c79f,0x3ebbc793,0x3e9231fa,0x3e56e39c,0x3e70c1f4,0x3e81cab1,0x3e909966,0x3e5b62bc,0x3e919222,0x3ea0d5e0,0x3ea32496, -0x3f025b4a,0x3d220965,0x3c9c760e,0x3d976935,0x3d693ca2,0x3bfb8e23,0xbd2b511f,0xbd998f9a,0xbd89a05a,0xbd8f629b,0xbd8aff82,0xbcea589c,0x3c8830a0,0x3d7ef454,0x3da44161,0x3dfad783,0x3dffb16a,0x3e0ac0ec,0x3c920502,0x3e65e8a1,0x3e5f6f0e,0x3e7f3e0e,0x3e397f3d,0x3e713d6e,0x3e8b8f8d, -0x3e4db0b5,0x3e8470eb,0xbd5bb780,0x3ec835ed,0x3d969d71,0x3ea1642b,0x3e4e467b,0x3e61fdb4,0x3eb38c74,0x3e786c89,0x3e00fbea,0x3f203879,0xbd88b99b,0x3d058190,0x3bf75cf6,0x3c1c5721,0x3d14783f,0x3d4ded1b,0x3d49cc8c,0x3da253f0,0x3dc92106,0x3dfcb385,0x3e13e33c,0x3e27a9a5,0x3e5a7543, -0x3e2f04b4,0x3e06039d,0x3de647fb,0x3dee65af,0x3d89ab10,0x3d8ae312,0x3f04f90a,0x3ea05d50,0x3eb15b75,0x3e511f74,0x3e7c593b,0x3e5353f4,0x3e85ae81,0x3e874e1a,0x3e9a3eac,0x3e8fe3d0,0x3d071617,0x3ee2ccd5,0x3e65368d,0x3e8a4d31,0x3f1ad8a0,0x3d124578,0x3e1ec220,0xbddc9639,0xbc8fbff7, -0xbd264264,0xbd333523,0xbd51491c,0xbd69ca19,0xbd762866,0xbd527b99,0xbd2b269f,0xbd07ebc6,0xbccebfd3,0xbca9c6e7,0xbc6b8fdb,0xbcac540a,0xbc694f72,0xbc89152b,0xbce1ea0e,0xbc4a02a2,0xbdf67e1b,0x3dfc4921,0x3eb2bf50,0x3f264ff5,0x3df8e26b,0x3eac306f,0x3f1e810e,0x3f2a4271,0x3f1dd883, -0x3f1a160b,0x3f2f7ab6,0x3f2ded1f,0x3f16eedf,0x3e8c909c,0x3da7a1cd,0x3f22462c,0x3edd11a6,0xbc011909,0x3e00bbf6,0x3dc4ba28,0x3e2092fb,0x3de1cbd5,0x3ddebb4f,0x3dd75697,0x3dd6d964,0x3dcfa221,0x3dc8e4a7,0x3db56f3d,0x3daa860f,0x3d9b03ee,0x3d9dd41d,0x3da7341b,0x3db4abd1,0x3db812eb, -0x3dc16133,0x3dc3dbc0,0x3dcc0e1c,0x3dc319d3,0x3de16d53,0x3d159c5c,0xbc41c281,0xbdc1ee72,0x3d74d5c6,0xbba2b4f5,0xbdc3014a,0xbdbb048f,0xbdae2d35,0xbd963c07,0xbdce26a8,0xbdce9609,0xbda96a5c,0xbccafe01,0x3d9134ee,0xbdb86c8d,0xbd24819a,0xbdfc897e,0x3de9da6e,0x3e16e6fc,0x3e08630c, -0x3dea3a6a,0x3e038e0a,0x3e05ea5c,0x3dfac39b,0x3db22a58,0x3da2fb22,0x3d9ddd2a,0x3d9558ec,0x3d9d465d,0x3dc41c53,0x3dc8c1ed,0x3decd93b,0x3df9a967,0x3e014bb0,0x3e01d396,0x3e0db6af,0x3bd9a25e,0x3d2ea679,0x3c543252,0x3cdbab0f,0x3d980389,0x3c75607b,0x3d413934,0x3c8168d6,0x3d38297b, -0x3cd1298e,0x3de8b25f,0x3ccd40cc,0x3c9905f9,0x3d23cb36,0x3c958395,0x3d73dbe2,0x3d54035b,0x3e7bed26,0x3e4e0aae,0x3e41d571,0x3e1e3060,0x3e2eeb56,0x3e10ed37,0x3dfffc71,0x3d91233f,0x3d0a92ac,0x3c345215,0x3c78ecf7,0x3d110f0a,0x3d90d5bf,0x3dba87f5,0x3dde8d51,0x3e04c2d8,0x3e06b8dd, -0x3e1ae405,0x3ddea988,0x3cb4dff9,0x3d40b1f7,0x3d8a15e3,0x3d19c72d,0x3d548602,0x3d556230,0x3d733c78,0x3e0117ad,0x3d3bfade,0x3da88002,0x3cf9ff97,0x3d9434af,0x3d881106,0x3d77f89b,0x3ca27095,0x3e22c7d7,0x3cef4b37,0x3dde0868,0x3e860c29,0x3e30cf5a,0x3e099156,0x3e1f5b30,0x3e1ca2cd, -0x3e0070a5,0x3d12bb31,0xbc9f192a,0xbbcc67c2,0xbc84c949,0xbae6d84e,0x3d437ac2,0x3d9b558d,0x3de0ea0f,0x3e088b48,0x3e20d821,0x3e1e1272,0x3e05bba4,0x3db61fea,0x3dc2d477,0x3d45e8dc,0x3db7c91d,0x3d77c372,0x3d8ca04e,0x3d5b58d6,0x3d8404e1,0x3d954f17,0x3dbc57f9,0x3d49fdaa,0x3dad19bb, -0x3c4b5e54,0x3d3fa04e,0x3de76a50,0x3e20d7d1,0x3e910054,0x3e880634,0x3eb297ee,0x3e8e3b30,0x3e645173,0x3e59bca2,0x3e25434b,0x3dfd9276,0x3ccf3f05,0xbd249f79,0xbdbdb629,0xbd8e797e,0xbcba2bea,0x3d3b04c8,0x3db4ed9f,0x3de7e7ec,0x3e14aacd,0x3e25c9b9,0x3e296f4c,0x3e151d9c,0x3d859d67, -0x3d90e1bf,0x3d9f060b,0x3d8bbca0,0x3da7a1ee,0x3d658367,0x3d9c2b85,0x3d9c6cbe,0x3db9896e,0x3d85571f,0x3dbb40cd,0x3d999d6e,0x3d8f5c43,0x3dea07c8,0x3dfeaa7d,0x3de37139,0x3e21c2f0,0x3f0d7c30,0x3f3227f5,0x3f0b0238,0x3efba7fa,0x3ef8938c,0x3ec6f7e5,0x3e8b3ee6,0xbca2e7e9,0xbe87ee55, -0xbeed1874,0xbed160c0,0xbed9f775,0xbec3fd6b,0xbe9c5a33,0xbe073af4,0xbd610f76,0x3bcc2c1d,0x3d8d7a9a,0x3d6b53ce,0x3d215c77,0x3daec61f,0x3d916caa,0x3d8ac2ca,0x3d379f09,0x3d4d1f14,0x3d8328a4,0x3d97bba4,0x3d9b9817,0x3d8a0f51,0x3dc70e34,0x3ddeed00,0x3e80b9ad,0x3e7f04f0,0x3de87d28, -0x3ee6c546,0x3e2eb667,0x3ef650c3,0x3f670a46,0x3f54ab23,0x3f203cb0,0x3ed5096a,0x3e834e1d,0x3e5f5138,0xbcc79d1c,0xbe0a6893,0xbe87d98c,0xbe520ebc,0xbdbd6598,0x3d79273b,0x3e1a52e3,0x3e2bde5f,0x3e42d712,0x3e297335,0x3e1cec7c,0x3df5ec3b,0xbc5d1ddc,0x3c73f3aa,0x3d688652,0x3d899c83, -0x3d95f60f,0x3d45c16c,0x3d5b7a5a,0x3d9ae12b,0x3ddbaab1,0x3dc024c4,0x3dea080a,0x3dcd6838,0x3d4d92ce,0x3dea5f89,0x3e37e429,0x3d5113ba,0x3d416499,0x3f0bb92d,0x3f82330b,0x3f3b75d1,0x3f09478c,0x3e9c9612,0x3e8e9c32,0x3ebda336,0x3d9eb999,0xbd1d5db0,0xbcbb0b73,0x3de29a51,0x3e575350, -0x3e98d0ea,0x3eb124d7,0x3eb142d4,0x3ebb6bd9,0x3e977eaa,0x3e9ad539,0x3e3fbeea,0x3ddab0fa,0x3d9a4cd7,0x3cbe5b40,0x3db7b55c,0x3d8ba3c4,0x3d094858,0x3da11655,0x3d98c937,0x3e170d98,0x3ddae8f2,0x3dc842df,0x3db23f93,0x3de550c4,0x3e036adb,0x3deaea35,0x3daabb3d,0x3e62183d,0x3efc0c55, -0x3f1ce2e9,0x3ea770d6,0xbddbe7f1,0x3dca2bdc,0x3dff468e,0x3e367ac9,0x3e0a0d1c,0x3e0ebbe8,0x3e4fdb86,0x3eb86dbc,0x3ecf8c9d,0x3ee4a09f,0x3eda0ef6,0x3ed7db94,0x3ee101ef,0x3ecec3ad,0x3ecfdfbe,0x3e6d754d,0x3e1b3d01,0x3e0a0734,0x3d8a62dd,0x3d8298ba,0x3d9be29d,0x3d4dead6,0x3da73f1a, -0x3dcdc886,0x3e3b7ce7,0x3dde9eef,0x3dc9df0a,0x3ddec630,0x3d430279,0x3e11365f,0x3d8e3aae,0x3e9a3c10,0x3ea0526c,0x3ede364c,0x3db83300,0xbc81b112,0xbeaf1d0e,0xbe1c0240,0xbe0a9655,0xbde19364,0xbd844023,0x3d2fb204,0x3e40e987,0x3e94bde0,0x3ebeead7,0x3ebe1fbc,0x3eb8b8bf,0x3eb01a4e, -0x3ebf14b4,0x3eb3a0e8,0x3ea7111b,0x3e515bc8,0x3dcadc5f,0x3dc29fc0,0x3d913e7b,0x3d8dc126,0x3db14f85,0x3db563f6,0x3dc00bff,0x3dbeb9f6,0x3e13377f,0x3dfa1573,0x3df46811,0x3e18c665,0x3e0d9b75,0x3e3a09f8,0x3ddf1dd5,0x3e4c46ee,0x3e7e65d8,0x3e3e36a0,0xbe09f1c8,0xbe852110,0xbe87f056, -0xbead89af,0xbeb25c07,0xbe8dfae3,0xbe2b3158,0xbd43cee0,0x3e3b1f8d,0x3e8acefe,0x3eb5fc6d,0x3ec80bf5,0x3ed5c3a8,0x3ecb0f57,0x3ed21435,0x3e865108,0x3e2e72ef,0x3d81e51a,0xbd4e4694,0xbd09d2c3,0x3cf861f7,0x3bde3812,0x3c2ecd78,0x3d31f2ce,0x3dec7d94,0x3ddf4e49,0x3d9f763d,0x3d752c6c, -0x3d84fcb8,0x3d23747c,0x3dfbfe0c,0x3e06057c,0x3e4cd846,0x3df5ee51,0xbccaef87,0xbd5a9321,0xbe3c1ea7,0xbe8203f8,0xbea94808,0xbea8ca6b,0xbea9b72e,0xbe8298de,0xbdf21a8d,0xbcd14978,0x3d8cd668,0x3e37f741,0x3e8f6314,0x3e9c5eab,0x3eb5a343,0x3eae3307,0x3ea4fce4,0x3e032b8a,0x3d9ee8d8, -0xbd82972c,0xbdd89863,0x3c2eee58,0xbda25843,0x3bc5fbf7,0x3d30da69,0x3dabdba6,0x3d739907,0x3d916087,0x3be776eb,0x3d17a314,0x3d0c14c6,0x3d8e78ca,0x3cc4d34c,0x3b38f379,0x3b341897,0x3c93557b,0xbe139f81,0xbe32860b,0xbe784f76,0xbe9341da,0xbeb697e8,0xbe8ffe38,0xbe62d1a4,0xbe257cd6, -0xbd2f76d3,0x3d17717b,0x3e090b74,0x3e3e3e89,0x3e6f95ef,0x3e8cdea8,0x3e893738,0x3e694b87,0x3e38e6c2,0x3dba92bf,0x3d5a1492,0xbc33a6ce,0xbd9d263c,0xbd2eaae2,0xbce8b45d,0xbc0c342b,0x3c971b59,0x3d090e8c,0x3d31437f,0x3d05c7fb,0xbbc82ef9,0x3c44412b,0x3c1ee707,0x3d8ad494,0xbc09d4b7, -0xbc4cb141,0xbca0fbca,0xbdb3fa89,0xbe2d72a8,0xbe70ac29,0xbe7094c4,0xbe8b7c7b,0xbea27dd0,0xbe808b73,0xbe4ea242,0xbe26b676,0xbdcb49cf,0xbd2369d3,0x3d701f11,0x3c66a007,0x3d2d2d72,0x3d3df9e4,0x3c0677e5,0x3bce8647,0xbbd4a938,0xbc77f736,0x3c0686af,0xbd6b658e,0xbd91a890,0xbd64ee7d, -0xbd7624f9,0xbd56d521,0xbd3a7107,0xbd7ec816,0xbd1ac8f2,0xbd7ceb8d,0xbd3063d1,0xbd086b25,0xbcf0d245,0xbd2c616a,0xbd8ea4b6,0xbd4416e6,0xbdd7fb67,0xbe145a8d,0xbe4e38ae,0xbe6e8584,0xbe7f7c55,0xbe734eaf,0xbe61bf5a,0xbe8eab03,0xbe9c4542,0xbeaca395,0xbeb0ac66,0xbeb15712,0xbeb88d8f, -0xbeabf243,0xbea686d7,0xbe9f4c98,0xbe8e6fec,0xbe82691c,0xbe7efcc7,0xbe78eb72,0xbe65a5e1,0xbe5c20d3,0xbe32701e,0xbe29c29b,0xbe29e028,0xbe28b307,0xbe0f717c,0xbdffac7a,0xbe18cb10,0xbe2092c4,0xbe340134,0xbe413529,0xbe32147e,0xbe343416,0xbe591e61,0xbe580258,0xbe429f18,0xbe838fb8, -0xbe61c535,0xbe3d57e3,0xbe3c6953,0xbe40149b,0xbe3d5bc3,0xbe3aff5f,0xbe2e3309,0xbe2cd30a,0xbe218c03,0xbe1d0354,0xbe17d912,0xbe162dea,0xbe1688a9,0xbe183f9f,0xbe1c103b,0xbe206472,0xbe1c2459,0xbe145563,0xbe111907,0xbe10f40d,0xbe392252,0xbe4b49f7,0xbe120ffa,0xbe3fbb9e,0xbe4fb913, -0xbe25fda8,0xbe2a1244,0xbe231291,0xbe1e946a,0xbe21151d,0xbe269697,0xbe2e9bc7,0xbe5006f7,0xbe3ab867,0xbe266ddf,0xbe5d0c42,0xbe9528f3,0x3e291de4,0x3dc30e22,0x3d82e926,0x3dcb2bce,0x3dca3701,0x3dc3f101,0x3dadb3d9,0x3db07b66,0x3dbaf8b8,0x3dc7c8a6,0x3dd85f98,0x3dde7225,0x3de07e31, -0x3de1ffcd,0x3de34564,0x3ddd1b2b,0x3dde59e2,0x3dd4d680,0x3dcdda4c,0x3dc953d3,0x3dbbba2f,0x3defb144,0x3e031030,0x3dfe9509,0x3de72434,0x3e01ed3b,0x3e024fda,0x3e0437e2,0x3e04d77f,0x3e026aee,0x3e0f3031,0x3e0bba87,0x3e0b9d84,0x3e0641e1,0x3de5e75c,0x3e16ebf5,0x3e19210f,0x3e861c15, -0x3e28be91,0x3e03de8a,0x3e05788c,0x3e1235ec,0x3ddc5a9b,0x3dd14608,0x3df80bd6,0x3dfeb93d,0x3e1053b1,0x3e0b73a8,0x3e0e5057,0x3e195164,0x3e1ee364,0x3e132ce9,0x3e1b0316,0x3e0cbd2b,0x3dffb22f,0x3ded3836,0x3dd8b0b9,0x3e14cafd,0x3e096d2e,0x3e0b1665,0x3e0946b7,0x3df0cf67,0x3e019100, -0x3e0a02b5,0x3e133a30,0x3e0765bf,0x3e0e05cd,0x3db1266f,0x3e08c979,0x3e0d98f8,0x3e15038a,0x3e2515b3,0x3e101b2d,0x3e41a0a9,0x3d69572a,0x3dd610c8,0x3dcf5fb8,0x3dd80eac,0x3d63b09c,0x3d44ab51,0x3dbfa0bc,0x3dff1486,0x3e17f1e5,0x3e1bd74d,0x3e2f2789,0x3e322e06,0x3e30a48f,0x3e39d01d, -0x3e2c84c6,0x3e1fa4f5,0x3e05e57e,0x3dd91f81,0x3de5add0,0x3e13ddb7,0x3dfa0225,0x3dff27fc,0x3df894a4,0x3de779f0,0x3de08f39,0x3de5b9bb,0x3ddce064,0x3e07e6dd,0x3dd343e7,0x3df48c88,0x3dd410ff,0x3df8bf49,0x3e0a5d26,0x3e4d86de,0x3e10d62e,0x3e9749cd,0x3e4b9840,0x3d1d0fd2,0x3dd998d1, -0x3e00b1c9,0x3d891014,0x3d35226d,0x3ddffba9,0x3e06f245,0x3e162659,0x3e0414f4,0x3e189d83,0x3e2f236e,0x3e3c58a3,0x3e444170,0x3e3ddbe3,0x3e261b16,0x3e0239d4,0x3dd4e72d,0x3db3d4b7,0x3df8cf68,0x3dd784ce,0x3de6018d,0x3dc96ad6,0x3dcbad5f,0x3d985cef,0x3dc58c3d,0x3dc8ab9f,0x3ddcf91e, -0x3d88587a,0x3d9a9d30,0x3daf715b,0x3e00870c,0x3e1327b3,0x3e156e24,0x3dd5b04e,0x3d746260,0x3da7b314,0xbd357a07,0x3cfd8fcd,0x3ccefc67,0xbcfbdd63,0xbc3d6273,0x3da4eaa5,0x3dfc78b9,0x3e1d852b,0x3e1c50d2,0x3e321804,0x3e3a5742,0x3e4280a1,0x3e5894fb,0x3e570b1d,0x3e3061f6,0x3e0624a2, -0x3dc94daa,0x3db74fde,0x3e002b0f,0x3dd4eae8,0x3dbca334,0x3db8ba32,0x3da8a2cb,0x3d88fe50,0x3da51fae,0x3d9db51e,0x3db5c51c,0x3d6dbe83,0x3d1439c7,0x3d997223,0x3de259ed,0x3dd91ef8,0x3e209b5d,0x3e6cce4c,0x3f019204,0x3e53b437,0xbe65f379,0xbdd7efa6,0xbe514b51,0xbec67998,0xbec7aa07, -0xbe85ac0a,0x3d133d37,0x3e84b511,0x3e91631b,0x3ea7e062,0x3ecacb05,0x3ee88a83,0x3ef2f387,0x3ed10618,0x3ec2e4d2,0x3e8dc688,0x3e51c719,0x3e2d1814,0x3e003afd,0x3dfd8ced,0x3dd88155,0x3dce7013,0x3da747fe,0x3d3f84b4,0x3d996b17,0x3dadcc2f,0x3defd4a1,0x3dd9451c,0x3e0d4ea9,0x3e47ca4e, -0x3db8fd81,0x3e2b861f,0x3eb43da8,0x3dcf233e,0x3e7f01f0,0xbdb885e1,0xbf0c96c6,0xbf0bb7c0,0xbf2bc1b2,0xbef6eff4,0xbe923188,0xbda8fd61,0x3e11a9b8,0x3e89c515,0x3ebc4ddd,0x3ecb842e,0x3ec4a541,0x3eb86df8,0x3e9eb0e9,0x3e8aeb3a,0x3e75959a,0x3e2a0342,0x3e0b1c15,0x3e2000f5,0x3e27f5d6, -0x3e17e4b4,0x3df044f6,0x3dcc82fd,0x3dada0ed,0x3da40a36,0x3de09cf6,0x3de41c50,0x3db59746,0x3dd22589,0x3da81f97,0x3da27345,0x3e422c09,0x3e129304,0x3dc7eb39,0x3e95f876,0x3eb1e566,0xbe9a2777,0xbf8d8239,0xbf63c75b,0xbf7ed59a,0xbf356b79,0xbf204a9a,0xbf082e5f,0xbe423d99,0x3cde7cd6, -0x3e3644ff,0x3e46760e,0x3e6412b1,0x3e7c2ac9,0x3e61e113,0x3e656141,0x3e36b4f4,0x3e2e11d1,0x3dff2ded,0x3e2ebdf2,0x3e58f8cb,0x3e2fe571,0x3e2537f6,0x3df32600,0x3dc3bed9,0x3d82761b,0x3d6ba02e,0x3d75a7f6,0x3e29b0d1,0x3dd5ea8c,0x3de15307,0x3db99652,0x3db85f1f,0x3d79d878,0x3e1ccec7, -0x3e121c1f,0xbd3d1f40,0xbf07c5f2,0xbf8db434,0xbf61ff2e,0xbf35b88a,0xbf388632,0xbf3bc5e7,0xbf1f612d,0xbef12e54,0xbea834b6,0xbe41beee,0xbe377e6e,0xbdbbc02c,0xbc99c44a,0x3da626f3,0x3debb333,0x3df34dcf,0x3e0be803,0x3de32aad,0x3e31a81f,0x3e409642,0x3e080c6c,0x3e052968,0x3dfcc1f7, -0x3de0d2c7,0x3d4bd176,0x3d8d01ba,0x3d9c42db,0x3e062187,0x3d86801e,0x3de95592,0x3d73eee9,0x3e4644f9,0xbb59c415,0x3e236873,0xbe98cb7e,0xbea55d88,0xbf7956f1,0xbf333304,0xbf318fc6,0xbf1cb90c,0xbf21803d,0xbf1735d2,0xbedf8751,0xbec88a68,0xbeb6cbb0,0xbeb422bb,0xbeaaa8f5,0xbe6c520a, -0xbdd03ab4,0x3cbaa580,0x3de42c86,0x3db505ba,0x3e10e0a5,0x3e15b593,0x3e34993a,0x3e0a5c92,0x3de872ef,0x3dcee0df,0x3dd618bf,0x3dd722db,0x3db330c9,0x3e128ecd,0x3ddded61,0xbcfaceab,0x3d9265d4,0x3d9e2a3b,0xbbf6b9a0,0x3c6ecb17,0xbdcecc5f,0x3d4d80c6,0xbe60e08b,0xbefb70b7,0xbeda976c, -0xbf039cea,0xbef4d45e,0xbedfb679,0xbeaa9505,0xbe4c3385,0xbdb22207,0xbd6c67f1,0xbd85f93d,0xbe600b67,0xbe839be6,0xbe598fcd,0xbe306e93,0xbe18bc29,0xbd9e498f,0x3c63e81b,0x3e23225e,0x3e2a2015,0x3e0f463d,0x3e124c4e,0x3dd370d0,0x3ddfac98,0x3d9cc4d6,0x3daaf233,0x3d389c3a,0x3d9d69ea, -0x3d80e2f4,0x3c410654,0x3d6efc5b,0x3c99d353,0x3c921789,0xbdf39d59,0xbb95f425,0xbe84cc02,0xbe6683c6,0xbe3dd7dd,0xbeb5b7e8,0xbe99d607,0xbea06581,0xbea60a3f,0xbe5e7a5c,0xbdd8eee4,0xbc745e58,0xbcbb53a8,0x3c012613,0x3bb897bb,0xbaf04ba7,0xbd37750f,0xbc192236,0xbd23d601,0xbcc8ae87, -0xbc20214d,0x3dad243c,0x3de712fa,0x3e09bb0e,0x3dbba132,0x3d838301,0x3dcac1e4,0x3d23541d,0x3cd4c443,0x3d348e39,0x3cf8a1f3,0x3d0da6d3,0x3ce25738,0x3cd30b51,0x3cdc4a11,0x3cb2e90f,0x3c4d75dd,0xbd3f35e9,0xbda6b3bc,0xbe27f59e,0xbe300e4a,0xbe2a4222,0xbe21651e,0xbe40a70d,0xbe2a526c, -0xbe10c457,0xbe05441e,0xbdd8c2a6,0xbe0a3b08,0xbe0589a9,0xbe1f4411,0xbe2f4d4b,0xbe4474ce,0xbe389d89,0xbe32bfca,0xbe310d6f,0xbe120ade,0xbdbfefb6,0xbd7c0c5b,0xbc100cba,0x3cfba185,0x3b7b4573,0xbb7dc95f,0x3bc51aaa,0x3bac20d7,0x3c92f873,0x3bd2ae0d,0xba5db601,0x3c34b521,0xbbd10cfa, -0xbc169a15,0xbb8617c1,0xbd3897d0,0xbd72ad85,0xbe0720ac,0xbdfe4b7f,0xbe2905dc,0xbdc2cc0b,0xbdad64d2,0xbdbef6dc,0xbdd5fd79,0xbdf27a56,0xbe1029ef,0xbe25e483,0xbe3d58ff,0xbe4e02d8,0xbe8a537f,0xbe44c891,0xbe53c256,0xbe2d0245,0xbe2b3cd8,0xbe398b3b,0xbe331c3a,0xbe190cd2,0xbe39f6ec, -0xbdbe5d5b,0xbd35a103,0xbd334ea2,0xbd17c687,0xbc89537a,0xbb0bd79b,0xbc07b447,0xbb6fec4b,0x3c658d3c,0xbcb009ac,0x3ac2db09,0xbcd6ee11,0xbcba6cc7,0xbd80a01e,0xbdc9e639,0xbde22712,0xbdb90cd1,0xbe1024eb,0x3ce4df17,0xbc29535c,0xbc890e11,0xbcb05e4f,0xbc986217,0xbc36e1cf,0xbc272890, -0xbbf1ebec,0xbc01020a,0x3b8e9562,0xbce999da,0xbd32fbe3,0xbd94559f,0xbd7661eb,0xbd2b143d,0xbd587a35,0xbd0b9729,0xbc4330bc,0xbd2d9fda,0xbde7bd9c,0xbda01e57,0xbd8e5533,0xbd804827,0xbd800957,0xbd02d0fb,0xbd274b3c,0xbcf5609b,0xbd2d3de9,0xbcf24b49,0x3c5c3e24,0xbd319204,0xbb2a3c27, -0xbcb86ef3,0xbdd0fd6e,0x3c3a5417,0xbd488c76,0x3cac4d3d,0xbaf4d914,0x3b3c77dc,0xbacca673,0xbc0d751c,0xbc99217d,0xbce9788b,0xbd154985,0xbd3b11d8,0xbd58ba14,0xbd5af052,0xbd4768b4,0xbd4be869,0xbd2373f6,0xbd1d7390,0xbd1928cb,0xbd11bb6d,0xbd0049ea,0xbc689208,0xbd4ffa1e,0xbdb79b35, -0xbe16161d,0xbcd2d8c4,0xbd83bd37,0xbe05338f,0xbe0c0bb8,0xbe05483a,0xbe02ed6a,0xbe110ccb,0xbe1371cd,0xbe05cf5c,0xbd896a29,0xbccdb621,0xbe23a6d4,0xbdddf621,0x3bbaa688,0x3d4d8288,0x3c6535dc,0xbc8712f2,0xbb8f049e,0xbba9b2a4,0xbb13f9f2,0x3c65b36a,0x3ccebe1e,0x3d1165c7,0x3d233fc6, -0x3d2fbdc2,0x3d34cfe0,0x3d196a7a,0x3d0c48cd,0x3d0671d2,0x3cfccd61,0x3cf6c2c0,0x3ce84e10,0x3cd76f3e,0x3cdb463b,0x3ca9c096,0x3d5f7d1c,0x3d8f9d0e,0x3dd95d15,0x3d346cbe,0x3d8c50dc,0x3dd2479b,0x3dd07afb,0x3dca7cd1,0x3dbfdb28,0x3dc8e082,0x3dbf78b8,0x3db6edc3,0x3d8f053b,0x3cf21296, -0x3dbecc89,0x3d870943,0x3db9a35f,0xbcfbe0fd,0xbd4746c7,0xbd544cd7,0xbd3fe7ec,0xba24cb45,0x3d202fde,0x3d9695ee,0x3dcec372,0x3decc99a,0x3dd860ab,0x3dbbcb05,0x3d9d145a,0x3d87c21a,0x3d551afc,0x3d47d8f1,0x3d2d7d08,0x3d112fd9,0x3d11d20e,0x3d09ba90,0x3db229d9,0x3d9f7b3d,0x3da9b61e, -0x3d9534c9,0x3d42ba8c,0x3da3c43e,0x3d9a144d,0x3dbbe541,0x3d964f8e,0x3d9f3824,0x3d2e30d5,0x3d7973fe,0x3d841a1d,0x3d45039f,0x3d8447b1,0x3d16fdd6,0xbc8d1fd8,0xbdf2933e,0xbe0b8098,0xbe07f6c5,0xbdf463d8,0xbcf28c71,0x3d3493a3,0x3dcd6f33,0x3e14b960,0x3e2ce638,0x3e341c15,0x3e0f3f02, -0x3def0aaf,0x3dc2d131,0x3da0c77c,0x3d822195,0x3d6732f0,0x3d3574e8,0x3d0ea2c7,0x3d65f35f,0x3dbb345a,0x3db474e6,0x3d9210c5,0x3daacc52,0x3d92a516,0x3d82d311,0x3d99c449,0x3d46be20,0x3dba5a4b,0x3d624761,0x3d7c2c54,0x3d513e40,0x3ca67be7,0x3cb3fa56,0x3ce32883,0xbd3d1392,0xbd816913, -0xbe00c530,0xbe55a67d,0xbe48070d,0xbe49f47b,0xbd815c51,0x3d5e2574,0x3e11b78e,0x3e79fdc4,0x3e94d729,0x3e8a0732,0x3e6f9cd6,0x3e36ced9,0x3e17b70c,0x3dd2a0e2,0x3da0b6e9,0x3d868036,0x3d2e5cd1,0x3d40f91b,0x3d83f0be,0x3da25480,0x3d91e192,0x3dbd6a66,0x3d660616,0x3d97ea38,0x3d64fd7a, -0x3dbf04b8,0x3dac012b,0x3db78c84,0x3d5c6061,0x3d697d7f,0x3cda36d7,0x3d4338fe,0x3c9465eb,0xbc65842c,0xbceef778,0xbe02a363,0xbe57cd6f,0xbe7edc83,0xbe865cdd,0xbe767344,0xbd9b3025,0x3d8e9e35,0x3e2a9c7e,0x3e887812,0x3e9e7030,0x3ea1806b,0x3e81b045,0x3e50e047,0x3e28a9b1,0x3e046664, -0x3dc6ad3a,0x3db3c329,0x3d597f55,0x3d7d0fa8,0x3d954aa4,0x3dd7aa7a,0x3dcc278b,0x3dd22a51,0x3daa1c7e,0x3d928803,0x3d855a1c,0x3d923f5b,0x3d9d4771,0x3da0384d,0x3d67f343,0x3d31e535,0x3cdcd98f,0xbbbe3706,0xbd12ad87,0xbd038206,0xbdcd0771,0xbed11fcd,0xbf0ea72c,0xbed87056,0xbf04bec7, -0xbef0ac42,0xbe71004c,0xbdff6053,0xbc999482,0x3d8af7dd,0x3e3bceb5,0x3edb50ce,0x3ed152bb,0x3eca959a,0x3e8ca590,0x3e35e254,0x3db3e6ee,0x3d69d98d,0x3d20ea8e,0x3d3523da,0x3daf2dbc,0x3e14ea2e,0x3ddc952a,0x3de8b72d,0x3db3a7a9,0x3dc296a2,0x3d7cdff3,0x3dc2e7bd,0x3dafaad2,0x3d9ee316, -0x3d4e3830,0x3c46f933,0x3a223b30,0xbcfe2547,0xbd9aa243,0xbe12ca91,0xbe4deb43,0xbec9dedf,0xbecf05b4,0xbe64bd36,0xbe3c5c59,0xbcb626f5,0xbdae4e47,0xbe462a1c,0xbebcef8a,0xbe9cf447,0xbe34262c,0xbd102494,0x3d309f16,0x3db4691c,0x3dfff0e9,0x3e18647f,0x3e1b9040,0x3e07f712,0x3e0478c8, -0x3dd93dd6,0x3dce04e6,0x3e083868,0x3df42592,0x3da85aac,0x3db0fc62,0x3d9146a2,0x3d50ee89,0x3d9a1069,0x3dac3002,0x3dc9babc,0x3da862c6,0x3d53e3ec,0x3d47cddf,0xbc94574c,0xbd8b2abc,0xbe10d958,0xbe9a1c2e,0xbf24ce68,0xbe8135f2,0x3ed49753,0x3e95b995,0x3ee51ec0,0x3d8a8330,0xbe289b88, -0xbeda4537,0xbee08bc7,0xbec5cae9,0xbe8adc1d,0xbe80a36f,0xbe13f353,0xbdf706da,0xbdd62981,0xbcf3d532,0x3d13dc45,0x3d969f75,0x3dce9b8d,0x3dae974c,0x3dbccf25,0x3dc24dc9,0x3de907e0,0x3dafa57b,0x3dc79331,0x3d9b08df,0x3da6fb92,0x3dada33c,0x3debbd78,0x3d2522c6,0x3c711fb3,0x3c3a1403, -0xbd9a0e41,0xbdc47a23,0xbe8f0283,0xbe6585f2,0xbea882e3,0x3d7ff3a4,0x3f30dc9a,0x3ef75345,0x3eb92633,0x3e04901c,0x3bd757e6,0xbde890ec,0xbe732f50,0xbe6770f5,0xbe05ca00,0xbdd9dd12,0xbd8c1296,0xbdf760c2,0xbdc2d823,0xbda8bea7,0xbc3f867a,0x3b1579ee,0x3c6f80b6,0x3d6db4e1,0x3da7f87f, -0x3da38ffd,0x3d9cff79,0x3dac5c21,0x3d8e175f,0x3d8b41c4,0x3db8cf27,0x3dba5591,0x3d725026,0x3d74078e,0x3c235ce4,0x3c87d719,0xbdfc867a,0xbd4c7814,0xbe8e4ee4,0x3cb49234,0xbdd08b40,0x3f3e9f2a,0x3ef38f7a,0x3ebc0991,0x3dd702a7,0x3e3358ee,0x3e532d95,0x3e4979a4,0x3e112e10,0x3e0dea59, -0x3d082902,0x3e156574,0x3de2d218,0x3d2b1132,0xbba3e386,0xbcb983d2,0xbc6bf7fd,0xbd2e84e1,0xbd83e6d6,0x3c43e864,0x3d3d22b3,0x3cdfeb6e,0x3d7d56d0,0x3d3f67b9,0x3d15312d,0x3cf743f7,0x3da7baf1,0x3dd7fd0d,0x3ca0f5d2,0x3d9cf65d,0x3d4f28a7,0x3ca797b3,0xbc0528dc,0x3d7b47d6,0xbe1d066d, -0x3d0b9cc7,0x3e857b00,0x3e307e46,0x3ed0d66c,0x3e78966a,0x3e70caab,0x3e17c197,0x3d84188b,0x3d81ba8d,0x3ce9c607,0x3e05226b,0x3e92db33,0x3ea5df7d,0x3e523621,0x3e49f4a5,0x3df8b3b6,0x3cfcf862,0xbdb7958d,0xbd9e3488,0xbd5961ae,0x3b5ddb1a,0x3dda0ced,0x3daf4029,0x3cc11c9d,0x3d982043, -0x3d6c7d9e,0x3da4f5be,0x3d5c4bd9,0x3d4e038a,0x3d54a867,0x3b68c0d0,0x3c7c70e2,0x3d811700,0x3dce4d55,0xbdb444db,0x3df202ef,0x3e099e5a,0xbd706e0e,0x3eb09c91,0x3e745338,0x3e3faaad,0x3e3f7085,0x3d906208,0x3cc06c6c,0x3b9ef44c,0x3d054e9d,0x3cc12a61,0x3c9b1153,0x3d19fbd9,0x3d5a24d5, -0x3bcea8a6,0xbd374d94,0xbd8f858a,0xbdbfa15f,0xbd5ecc47,0xbd239aff,0xbb2c576f,0x3d1a8a29,0x3c86075d,0x3cefeaea,0x3d279cac,0x3d59909e,0x3d1508c5,0x3d46a8e8,0x3cccb032,0x3d2e9800,0x3d0e1f80,0x3d25f585,0x3c574809,0x3c0c92af,0x3d6bcc7a,0x3cfc0331,0x3ddca2c6,0x3d91afa8,0x3da575e1, -0x3e360857,0x3e1be773,0x3e2011ca,0x3dbfa42e,0x3d741959,0x3cfb8ef1,0x3d1c1c33,0x3d267fcc,0x3d6dd417,0x3d57b9fb,0x3d1c884d,0x3c949fe0,0x3aef87a9,0xbc185667,0xbc1e6199,0xbab1f9bb,0x3cb3b01a,0x3a000583,0xbd06524d,0xbb975985,0x3d3dbb01,0x3a3c960e,0x3c119aa6,0x3d2403cf,0x3a5bad16, -0x3cb46eb5,0x3cfa9cfb,0x3d086f4d,0x3cb97bc2,0x3b7849d3,0x3d2c59a4,0x3d068ee0,0x3d3aee5d,0x3d181b3a,0x3d2dcf7c,0x3e0f03d3,0x3e0bdd97,0x3e07fa62,0x3e1f6a54,0x3e13bcbf,0x3e135089,0x3e056020,0x3df7d62a,0x3dd9cdb1,0x3de31995,0x3d777d42,0x3d1199fc,0xbc858725,0x3c9f439d,0x3d01708f, -0x3d67daa4,0x3d21c9f8,0x3dd62fe7,0x3c398cb1,0xbd09b9de,0x3ad89c7f,0x3ca8849f,0x3c862c93,0x3cbd7e86,0x3d734a6e,0x3d2be522,0x3ddc19f5,0x3d0e8704,0x3d98eb34,0x3d152e07,0x3d4e4a5c,0x3d9fa743,0x3d4b897d,0x3dded53d,0x3de9290d,0x3d8777c9,0x3e0f83e8,0x3e12d6eb,0x3e166df3,0x3e0de5d4, -0x3e1a40ac,0x3e188c0b,0x3e28cf98,0x3e261773,0x3e2156fb,0x3e1a2dda,0x3e21c6aa,0x3e2711f3,0x3e200152,0x3e195e96,0x3e0e146f,0x3e1d63a8,0x3e14f0eb,0x3e14f38a,0x3e243e0a,0x3d756265,0x3dcaaf9b,0x3dbd32f2,0x3e083412,0x3dd69994,0x3dd2a415,0x3dcf4e47,0x3dbd50e5,0x3dbcde9f,0x3dd226dc, -0x3df4a1d9,0x3da2103c,0x3dd8c27d,0x3dbda00e,0x3d3ce08b,0x3e139c19,0x3deb1799,0x3dfe3184,0x3dec8349,0x3df0c63b,0x3df35d62,0x3e004343,0x3e02878d,0x3e06bcd7,0x3e030b36,0x3e04aa50,0x3e0407e9,0x3dffb6dc,0x3df46fea,0x3df667f6,0x3df859ce,0x3dfdeeb6,0x3dfdfbcf,0x3dfc3f7b,0x3dedc690, -0x3e105633,0x3dcae893,0x3d890d57,0x3b8d3434,0x3dc39f22,0x3d94fbe3,0x3cf6e254,0x3cda050d,0x3d0a34ec,0x3d19d213,0x3ceebd6f,0x3d013da9,0x3d3a70ac,0x3dba83dd,0x3ddebd2d,0x3d336aaa,0x3da4b17d,0x3e3843cb,0xbd4517b1,0xbba7445c,0x3b9d1277,0xbc3d62c3,0xbc4ffce1,0xbc338e8c,0xbcef3868, -0xbd31bffe,0xbd74a806,0xbd83f533,0xbd8c3cfa,0xbd81d69f,0xbd600f46,0xbd49f460,0xbd3b5306,0xbd29cf2a,0xbd211942,0xbd162f22,0xbd0aa8d9,0xbcf3b9ac,0xbd025437,0xbcd37b9c,0xbc9a4f75,0x3ca13087,0xbd0187ac,0xbca17117,0x3c7d3b3f,0x3c805f7c,0x3c77b5b5,0x3c489e72,0x3c7dba55,0x3c3be9fe, -0x3bc2c5b2,0xbcc0898d,0xbcf8feac,0xbc432cd0,0xbce7fa49,0xbdaed974,0xbd14644d,0x3ce5904a,0x3ccb98a1,0x3c950572,0xbd10ba40,0xbda60068,0xbe054b7a,0xbe0faa97,0xbe10bdc7,0xbde7e00b,0xbdb22c49,0xbd95af55,0xbd8b7287,0xbd4fb8b0,0xbd58f00e,0xbd4be8ab,0xbd2190cb,0xbd0e321d,0xbd2765ed, -0xbc4a353b,0xbc9c490d,0xbc37ec19,0xbc9edf06,0xbcd74164,0xbaccecc5,0xbbe89cf8,0x3bb28f5a,0xbb83d7a9,0x3af61bf8,0xbbf1eee1,0x3be0fcd0,0xbc8ae1c3,0xbc4d8ee3,0xbc8f874e,0xba13bc36,0xbc8f88b5,0x3dbae0ee,0x3dd38d45,0x3dccd058,0x3dbd3c7f,0xbcb187f5,0xbde0c612,0xbe5149ae,0xbe7b28a5, -0xbe7cdf7b,0xbe5208ef,0xbe226f11,0xbdf58dbc,0xbdd91973,0xbdb539ef,0xbd8e5dab,0xbd8a28ef,0xbd25ea2b,0xbd1cae16,0xbc8673c9,0x3c467831,0xba8726b4,0xbc314557,0x3adb7a78,0x3bcf8a6e,0xbb8029ef,0x3c970585,0xba5a4f09,0x3cde52f7,0x3ca14db7,0x3cd50719,0x3c5f36c2,0x3b273ac7,0xbc58958c, -0xbd13e706,0x3c8dff4f,0xbd5490cf,0xbbb71628,0x3e71ffcb,0x3e270a5d,0x3e241f1c,0xbc7cca9b,0xbe1fa1a1,0xbe984dc1,0xbeb6409e,0xbea6819c,0xbe7bf003,0xbe352323,0xbdfc95bb,0xbde6fc2c,0xbda5108b,0xbd93cf32,0xbd8f6d18,0xbd241b55,0xbd085de8,0xbc4ec5db,0x3c466dbc,0xbc291485,0x3c188f17, -0x3b0fdd8e,0x3cb2317f,0x3c4563d5,0x3d4bf958,0x3d60f8c1,0x3d589c07,0x3d5305c7,0x3d5f7819,0x3d946e99,0xbabbfefa,0x3ba939cf,0x3d278afa,0x3d9a8139,0x3de4ed73,0x3dec1627,0x3e9f3216,0x3e845765,0x3e80280e,0x3c11f414,0xbe3f2250,0xbeb589ea,0xbee6ee16,0xbedfed14,0xbea96d75,0xbe7491e1, -0xbe2e0f0b,0xbe2403d4,0xbe022fbb,0xbdd16ed0,0xbdb7c722,0xbd2f3107,0xbd0dfbba,0x37f65dae,0x3db49698,0x3d1789c0,0x3d77f9d3,0x3d1f82da,0x3d40221b,0x3d19711f,0x3d64af03,0x3d90c708,0x3da65a6f,0x3d80cfc6,0x3d81ede8,0x3d74f423,0x3c8c11db,0x3ca38329,0x3d18e5df,0x3d0bacfb,0x3d018f7d, -0x3e8c2d78,0x3eaa4274,0x3ead1039,0x3ea9c38d,0x3e240ef8,0x3d4c0dbd,0xbe02c022,0xbe815954,0xbed171e6,0xbf0bdea2,0xbef065a8,0xbed6f42c,0xbe8bcf44,0xbe6d8e54,0xbe27a0f0,0xbe182dc4,0xbd8bcf8d,0xbd317a14,0xbd477f17,0xbc55ff62,0xbd4165d1,0x3cdcabc7,0x3bfbaa9f,0x3d5802c6,0x3d3e02be, -0x3d8ca191,0x3d76459b,0x3d50a9cf,0x3d853de6,0x3dae3285,0x3d9544a5,0x3e0ce405,0x3e00b3f9,0x3d2574c5,0x3d8e0423,0x3d2c1088,0x3e46be78,0x3e599655,0x3e0592b0,0x3c43b069,0xbdf3c188,0xbde30313,0x3cd8a935,0xbe1cc0a2,0xbe9b6c29,0xbf11b3c6,0xbf05885d,0xbf0033ad,0xbef810b4,0xbec82ed6, -0xbe963bb7,0xbe58137f,0xbe021ef8,0xbdd394f7,0xbd4cbe2e,0x3d89cfcb,0x3d05d403,0x3d44c477,0x3d55f81a,0x3d72f271,0x3d64b199,0x3d8d0118,0x3d9e12ad,0x3db0b7cd,0x3cf36b51,0x3b50906b,0xbce65169,0xbd51dc05,0xbd3675b9,0xbc278d3d,0x3c05668f,0x3ea9dbee,0x3dea4817,0xbebca3b5,0xbeb84944, -0xbf10a19e,0xbe1db63e,0x3daabc64,0x3eda1856,0x3e984718,0x3e2c19a1,0xbd8469a2,0xbd60f0c3,0xbe0aff63,0xbe4bc361,0xbe11bb9a,0xbe0fcf6d,0xbe019e51,0xbe19038d,0xbe44736b,0xbdf06f5c,0xbd811ae6,0xbcd2256d,0x3c98578a,0x3c105697,0x3d737976,0x3cfbc573,0x3dd23435,0x3db917b6,0x3d194020, -0x3d61ef3b,0x3d40141f,0xbb28c593,0x3d754fe0,0x3d1274ed,0x3e19a458,0x3bd76281,0x3e5d3225,0xbdbb4dd0,0xbf297e57,0xbf024e64,0xbf004329,0xbdd2e7e8,0x3e027512,0x3ed0a4ef,0x3f012449,0x3f00753c,0x3ed05674,0x3eaebc52,0x3e708013,0x3e4c50ca,0x3dfa8cf1,0x3d9a851c,0xbc1f1f80,0xbd559819, -0xbdf0bcb2,0xbdd48057,0xbdb6c4b8,0xbdaf0f94,0xbd8b73f1,0x3bfe986a,0xbc96f9b4,0x3c7cdf4e,0x3da352a1,0x3dd41f02,0x3d0b468e,0x3d820733,0x3db63b8a,0x3abdcb90,0x3dd6d540,0x3d06d99b,0x3e352dfc,0xbd5f3109,0x3decf984,0xbf261f7e,0xbecd109e,0xbe8924ad,0xbdd4a31d,0xbd230b0a,0x3d8c0d0a, -0x3e5a9fa3,0x3eac890f,0x3edaa7db,0x3f167574,0x3ee82dbc,0x3ec3737e,0x3ea09cc5,0x3e829102,0x3e2b8c7e,0x3dbc7cb3,0x3d1f88d7,0xbbc9146a,0xbe03357d,0xbde53e2c,0xbd9158f6,0xbd81f842,0xbd7b9b34,0xbcd5000f,0xbcd192e8,0x3d561c07,0x3d8b07f0,0x3d4ea36e,0x3db2e126,0x3d95dfc0,0x3a9d8867, -0x3ce3da7f,0xbd352673,0x3db19989,0xbd97e5ad,0xbdb9763b,0x3d2985be,0xbe379db7,0xbd3e5ee8,0xbe4ae4d5,0xbdb26512,0x3b87e4e8,0x3de80da1,0x3e8000dd,0x3e950425,0x3e5767f0,0x3e97244b,0x3e87ac27,0x3e8d6ce2,0x3e88c38a,0x3e692ee3,0x3e3ca6af,0x3cf68f42,0xbd79085c,0xbddbfb94,0xbda36d18, -0xbda734df,0xbcbd8c1b,0xbc7c8e85,0x3c1f59e7,0x3d582e83,0x3d94b335,0x3d98bb9d,0x3dae804b,0x3db49b20,0x3daa3587,0x3d7e93a5,0x3afccf49,0x3dd92142,0xbcbc66ff,0xbd8e0739,0x3e26117e,0xbe4aa5fd,0xbd98c234,0xbd1f142c,0xbdc81d68,0xbc90fb9e,0xbbdfeff8,0x3c88381e,0x3c99a014,0x3d916fad, -0x3e0317d1,0x3ddf5d73,0x3e02ca12,0x3e1f828c,0x3e3cd9e0,0x3e3997f2,0x3e3f6e0a,0x3da570f3,0x3d266f55,0x3c0bcdd7,0xbd26e696,0x3d1669cd,0x3c998e24,0x3d844d3b,0x3da0fde5,0x3d874e09,0x3d8f3420,0x3d945d36,0x3d84505c,0x3d1efa7b,0x3ce00088,0x3d196889,0x3d966a32,0x3d490114,0x3d8d5867, -0x3c07423b,0x3d33f37b,0x3d114fa8,0xbd3f798a,0xbca6d7f9,0xbcf4b05a,0xb9a33fc0,0x3ca42190,0x3d1635ca,0x3d3cd2cf,0x3d5c3cba,0x3d8d3c7d,0x3dc5aca5,0x3e04e8e7,0x3e1ed821,0x3e212099,0x3e2e955a,0x3e2b17cc,0x3e21ec77,0x3e18ba5e,0x3e1a05a6,0x3e21f184,0x3e0a3167,0x3e08e56a,0x3e0899e9, -0x3dfd5c54,0x3da71161,0x3dd51a09,0x3d961643,0x3d85458c,0x3d38507f,0x3d42d000,0x3d26fc51,0x3d2a6547,0x3d4eacd8,0x3d6423b0,0x3d6afc4f,0x3db276c9,0xbcc70ed9,0xbce3c956,0xbbc44d4f,0xbc0ee642,0x3ae5d187,0x3c2b0b47,0x3cdf0744,0x3d1d38f2,0x3d4667f0,0x3d6f1fad,0x3db8f80b,0x3e030207, -0x3e2c7dd5,0x3e271d16,0x3e305168,0x3e292c95,0x3e39d28e,0x3e3fbe5c,0x3e510721,0x3e501c08,0x3e26d7d4,0x3e2db013,0x3e077e0c,0x3dd4a586,0x3db36527,0x3d90242a,0x3c847d1b,0x3d8dc8d0,0x3cb2a3ff,0x3d71d60e,0x3d223c75,0x3cb18d5a,0x3d4e05c1,0x3c349138,0xbb455f34,0x3dee9a07,0xbc2bab0a, -0x3bfc7bd2,0xbb1ec911,0xbbbfdf41,0xbba09304,0xbc200097,0xbc8e7271,0xbbb5cc8e,0x3c48d0df,0x3cd53823,0x3d10ecd0,0x3d184829,0x3d6805a9,0x3d549be3,0x3d59fa1c,0x3d767d06,0x3d569233,0x3cfd992c,0x3d6a4451,0x3dfa52b0,0x3db2c24e,0x3d94c796,0x3d646fa1,0x3d836d85,0x3d1bb10e,0x3d6e2aeb, -0x3d70e5e7,0x3d8a3118,0x3d7013d9,0x3bffdc42,0x3da177c8,0x3d3d1ca1,0x3d6d818c,0x3dffa810,0x3bff06bc,0x3d11c136,0xbc4ac760,0x3ba5e60d,0x3b6bbfa3,0x3badba75,0x3bb517d7,0x3be1d340,0x3c082d13,0x3c62d35f,0x3c79f517,0x3c95a249,0x3cc58459,0x3cfe4494,0x3d13a0fd,0x3d08ad14,0x3d076c6c, -0x3d0ec670,0x3d1a7d01,0x3d2a4d88,0x3cd91a63,0x3d94057f,0x3de563c2,0x3e1d5bd3,0x3d6bdb18,0x3dafa6d3,0x3e025e6e,0x3e096e7e,0x3df86a22,0x3df012fa,0x3e06e059,0x3e06d084,0x3de95949,0x3d7492f7,0x3cbec842,0x3ded7ea0,0x3daf089b,0x3ceabbe7,0xbd0456f9,0xbcccd8a7,0xbd3d8613,0xbcc49cb8, -0xbcbc216c,0xbce14528,0xbd001a94,0xbcfafc9b,0xbcd441a8,0xbcaf7e38,0xbc99225b,0xbca9366f,0xbcae113e,0xbcaf7155,0xbcb3bdbf,0xbcc66d17,0xbcd7b8e2,0xbcd9f694,0xbce514d0,0xbcdd9ad7,0xbcdb23c0,0xbc9901be,0xbc926a9b,0xbccb0c09,0xbc6d2f3c,0xbc4bf0b5,0xbca6f9bd,0xbc9a0732,0xbc928fc5, -0xbc8a5e34,0xbc6f7d58,0xbc560add,0xbc68b6e6,0xbba10a0c,0xbbebccbd,0xbbd83a47,0x3b3ef166,0x3db38b0a,0x3d22549f,0xbc49db8d,0xbc5abd61,0xbcb46562,0xbd522caa,0xbd6fb24a,0xbd41aaf2,0xbd4aee7f,0xbd54cf75,0xbd4a9f2a,0xbd510b89,0xbd4646fc,0xbd29fc11,0xbd287345,0xbd2dbf7f,0xbd1e8c84, -0xbd29bce5,0xbd2d17ee,0xbd29b61a,0xbcffbfbc,0xbce276ec,0xbcebe484,0xbc93dd49,0xbc77d4a3,0xbc885de9,0xbbefbf94,0xbb4bc7af,0xbbe009ed,0xbb1c4be8,0xbc1fb1e9,0xbbbe8f67,0x3b1efccb,0x3b9d689d,0x3c7b9ee7,0x3b8e4552,0x3d8e1501,0xbd75403c,0xbd1639a0,0xbd367a0f,0xbd64153a,0xbdb7f49f, -0xbdb5cc9d,0xbd58b48d,0xbd3c2b88,0xbd41f469,0xbd8758d2,0xbd866b1f,0xbd84ef19,0xbd4ef037,0xbd6b1f71,0xbd6cbde8,0xbd74cfd2,0xbd7ee9ec,0xbd81ce5a,0xbd636d56,0xbd0b7eec,0xbd089875,0xbcc9e42d,0xbc5b6259,0xbbc3b95e,0x3ad45894,0x3bf529fb,0x3c2695fb,0x3c8eeba4,0x3c6248c5,0x3c96c38c, -0x3bb3f844,0x3cb4aaba,0x3d04db27,0x3d8e3d60,0x3d013b1e,0x3e4c0676,0x3ded712e,0xbd894de8,0xbc31689a,0xbd2f7663,0xbdd72ede,0xbdf6aa30,0xbd914ad9,0xbdc8ba73,0xbe01d980,0xbdff5bf0,0xbe093a92,0xbdf86689,0xbdbc8d90,0xbdaa7def,0xbd9cf138,0xbd837309,0xbd969830,0xbd9acb39,0xbd8f1997, -0xbd4562b7,0xbd0dd14b,0xbd089491,0xbc5a4c9f,0x3a843df3,0x3b248285,0x3ce85515,0x3d137654,0x3d0aa25a,0x3cfbd702,0x3d2d7323,0x3cc3d361,0x3d8c14c4,0x3d88297d,0x3da7abdb,0x3d308c7c,0x3d1becf2,0xbb71e387,0xbe2d4227,0xbdbbe53c,0xbdf540de,0xbe188acd,0xbe15e51f,0xbd8aee70,0xbd8bab71, -0xbda705ca,0xbe08fa3a,0xbe0b45aa,0xbdef80d8,0xbdabae77,0xbdb624fc,0xbdba1b9c,0xbdb94560,0xbdc20b41,0xbdbf4ead,0xbdb95a31,0xbd062695,0xbd2702a4,0xbc73f32f,0x3bcf7005,0x3cbf3456,0x3ca3726c,0x3d375f76,0x3d84aafd,0x3d840c29,0x3d51c0e1,0x3d20a404,0x3d422e77,0x3d9ff8e9,0x3d9a6cc4, -0x3dbedc2e,0x3e00e61a,0xbd149683,0xbe99403f,0xbef14819,0xbedb5793,0xbee0e338,0xbe8d55b9,0xbe163993,0x3c98b2f2,0xbdac6cf9,0xbde7c5d6,0xbe266081,0xbe77c941,0xbea9a66d,0xbea3541e,0xbe80db77,0xbe29c64b,0xbe382414,0xbe24f227,0xbe0cedf4,0xbdfec70b,0xbd8aa43e,0xbd27e7a7,0xbc1cc8f3, -0xbbf9f109,0x3c874b2d,0x3d1ad2d1,0x3d69dfa6,0x3d6d43a3,0x3d4bb999,0x3d730b14,0x3d40d1ee,0x3d0119e3,0xbdb4249f,0xbdb6cf4a,0xbd170dc7,0xbe0f3fa6,0xbde8c0e7,0xbeaf620f,0xbefba865,0xbebdcca1,0xbe45abfb,0xbb933fb7,0x3d25fac0,0x3dce00f6,0x3e8b5d55,0x3ec338e7,0x3f106d1a,0x3ed1f5ae, -0x3eba020f,0x3e91b4e6,0x3e30470b,0x3d82f1ce,0xbce870d0,0xbd93f2c7,0xbdc73515,0xbdb4b03f,0xbdec0a65,0xbd9850e8,0xbcecd3ad,0x3b82758c,0x3cf5d6b2,0x3d4b67a4,0x3d8df5da,0x3d99fd6b,0x3d53d441,0x3d0e5c6f,0x3c2fa121,0x3baef039,0x3d4da07f,0x3c1abd4f,0xbd48195f,0xbd8e3df0,0xbecfa3b1, -0xbebc9339,0x3beba20d,0x3de50b42,0x3ef25be1,0x3e487640,0x3e3afb1e,0x3de50c13,0x3e8ebf97,0x3ed4078b,0x3f1bd89c,0x3f19d5d2,0x3f181ef8,0x3f1d08db,0x3f1053cd,0x3ecc545f,0x3e910058,0x3df30e14,0x3daec102,0xbcfaa057,0xbde8a6d9,0xbda3d288,0xbdf40e2e,0xbd64071d,0xbd4a216b,0xbcc06d36, -0x3d6df826,0x3d8f27fc,0x3c5abcba,0x3d5436d1,0x3d2651c6,0xbcd86c74,0xbd83ee76,0xbd8eec55,0xbe3a75fa,0xbddae7d5,0xbeb2e8b7,0xbe2a8c4a,0x3ee8fc69,0x3ed52768,0x3f10a9ec,0x3e7a8cb4,0x3e357b05,0x3b965817,0x3dfad8ba,0x3e3c8144,0x3e4322fe,0x3ea31b73,0x3eb98c73,0x3ee4c758,0x3ecd1640, -0x3ebd64c8,0x3ea09a2b,0x3e470182,0x3e27212e,0x3d0e7451,0xbd455513,0xbd82852e,0xbd82bc0e,0xbd8ca455,0xbcb549b0,0xbcf17347,0x3d4807f3,0x3d932384,0xbce6a1db,0x3d671830,0x3d127e41,0xbc18db90,0xbd7a8ce5,0xbd56a47f,0xbe379b2c,0xbda80fe4,0xbe58a50f,0x3ece32ea,0x3ea544d4,0x3e802a7a, -0x3e7d21b6,0x3d4e8ca3,0xbdbc8fb7,0xbe2fdfe7,0xbe376aa5,0xbe3bd45c,0xbe3784b8,0xbde3b3c2,0xbc3e5f69,0x3d4b9570,0x3d68bec7,0x3d8fe537,0x3dd9b41e,0x3ddb88a6,0x3dc4242e,0x3db845cd,0x3d1e965a,0x3cd3aadc,0x3c27a32a,0x3ced6fd7,0x3d4a109e,0x3d2a2d8d,0x3d8b986c,0x3d3efb91,0xbd19f190, -0x3d0fbf14,0x3cb5022c,0x3bdd1e9d,0xbc4b2bac,0x3b94c86e,0xbdb419d3,0xba7059bb,0x3d13cf9f,0xbdb53d76,0x3e115d00,0x3dc5848f,0x3e548f5b,0x3c08c2a9,0xbdbb7181,0xbe723665,0xbe91912f,0xbec01de5,0xbea1e891,0xbeb50bb8,0xbe4235e2,0xbe4bf9ba,0xbdf1baca,0xbd23e3b4,0x3d146c4d,0x3d79cebd, -0x3dc819b8,0x3de844ac,0x3aa0861d,0x3d4655a2,0x3d6651a1,0x3d0db89a,0x3cc7aafa,0x3bbe5704,0x3d15f0dd,0x3d0d1e48,0x3d33dba7,0x3d5e7f8e,0x3cdd66e3,0xbcd55bfd,0x3c9abad9,0xbd38787f,0xbc8ebe66,0x3b7deeb5,0xbda13c5c,0x3e10a27c,0x3d3b91f0,0x3ccfffaa,0x3d1d25c4,0xbd13e267,0xbd679c3a, -0xbda2acac,0xbddf13a6,0xbe18c529,0xbe3c9c2a,0xbe2d2865,0xbe3d1de3,0xbe356865,0xbe17fcd6,0xbdf0eb09,0xbdb6bdaa,0xbc563d2a,0x3c1076e5,0x3d0de968,0x3def992a,0x3c9d8642,0x3d6a9941,0x3c5f01c0,0x3c93424c,0x3d66f4d3,0x3cbc59dd,0x3d5ec9e7,0x3d06472f,0x3d55e157,0x3d198950,0x3c1bd219, -0xbcc6ec51,0xbcc5a249,0xbc9027c7,0x3b26a193,0xbc98cd48,0xbd0e2371,0xbbebf587,0xbd07a5c4,0xbd69d052,0xbd78861a,0xbd98cb81,0xbdbe7a9d,0xbdd134ff,0xbdf2c8b4,0xbe07484a,0xbe147133,0xbe16c678,0xbe228e85,0xbe071bec,0xbdce8618,0xbda28b17,0xbd7abad4,0xbd98fec0,0xbd4e97bc,0x3ba955d2, -0x3c7773dd,0xbd1cd9f8,0x3cad7552,0x3b243d57,0x3c34659f,0x3d0328b8,0x3cf94355,0x3c3a12e2,0x3cc87728,0x3c4405e0,0x3c10bf1c,0xbb87079e,0xbb53ab6a,0xb9b3b32a,0xbbb90c80,0xbd4d7b35,0xbc678a76,0xbcce173a,0xbd52129f,0xbd84930b,0xbd8ed3f9,0xbd9d5147,0xbdaffb02,0xbd8def52,0xbd56bda5, -0xbd1ef1b0,0xbd4e61fa,0xbd794555,0xbd8cd3e7,0xbd894edb,0xbd885996,0xbd88afcf,0xbd84e82c,0xbde82dd1,0xbd4b167d,0xbcb0bb28,0xbc3b7823,0xbd198163,0xbc2d2cdc,0x3c3efc04,0xbc8972a9,0x3b3cd02c,0xbc9cba80,0x3c2762a2,0xbbab737b,0xbbd74c7b,0xbc55caa7,0x38eb3ada,0xbc5df37a,0xbb292271, -0xbc8419a4,0xbd13d347,0xbd103d07,0xbd1e3442,0xbceb254d,0xbcb741b6,0xbce4837e,0xbcc394d8,0xbce26674,0xbd1deb8a,0xbd61446e,0xbd84a317,0xbd86d85e,0xbd7a6477,0xbd7daa83,0xbd69b3fb,0xbd5a6c52,0xbd720a3b,0xbd321f8e,0xbcf48f13,0xbd2fadd6,0x3bd13b51,0xbc3b4249,0x3bc46991,0xbcac3947, -0xbc5c5418,0x3b881662,0xbba8bc0e,0xbc0b82a8,0xbc9c2a96,0xbcdb9f60,0xbcbe579e,0xbd09b6c6,0xbd330ad3,0xbd216caf,0xbd3f1599,0xbd1c5729,0xbcfe0176,0xbcfbf0a1,0xbd063b7d,0xbd136107,0xbd1bd94f,0xbd27415f,0xbd2f846d,0xbd36c053,0xbd2d5d53,0xbd1e4b7e,0xbd184cbd,0xbd20da4e,0xbd33b28b, -0xbd447dbd,0xbd3dc4bd,0xbd39bd91,0xbd3af9cb,0xbd497a43,0xbd41e571,0xbd77491e,0xbd2b6d3d,0xbd0234a5,0xbbbf6457,0xbcf8102a,0xbc96f641,0xbc148301,0xbc2eb923,0xbc36430e,0xbc41e290,0xbc4b4ce6,0xbc73296f,0xbc7fb0ec,0xbccc5b8b,0xbcd45b68,0xbc45067b,0xbcea8797,0xbd5528ab,0xbbaf2f78, -0xbd0211ae,0x3b5754d5,0xbc12bc6e,0xbc3ebf30,0xbc714462,0xbad98b49,0x3b5b2191,0x3c278030,0x3c395ca4,0x3c6b7992,0x3c847990,0x3c932ba1,0x3c99bad5,0x3cab4e11,0x3c97b386,0x3c87f57f,0x3c5a8bf3,0x3c3108b7,0x3bd40c81,0x3c412bd0,0xbcd04816,0xbd0fdbd6,0xbd2b14bd,0xbc9d9f13,0xbd097d80, -0xbd182945,0xbd1619fa,0xbd0c5179,0xbd05a83d,0xbd1dc8e5,0xbd20b02d,0xbd2944d9,0xbd1c3a82,0xbcc48c3e,0xbd11762e,0xbd368cf9,0xbd92e900,0xbd97794d,0xbd862ed6,0xbd9a1950,0xbdb75e07,0xbd18b8a3,0xbbad6ef2,0x3c969442,0x3caaa456,0x3cda40ff,0x3cc51e31,0x3cdeda2f,0x3d0b5078,0x3d167d79, -0x3ce7ff0e,0x3cfda388,0x3ccd1ba6,0x3c7f6c74,0x3c42d996,0x3cc10fed,0xbd09b8b9,0xbcb1752e,0xbcbc9a8e,0xbce89160,0xbc5642ec,0xbc5fbf1a,0xbc52d629,0xbc9b77b0,0xbc8c3d6d,0xbc6c5afe,0x3c1abefe,0xbcb0fa96,0xbcc47e6d,0xbd03864d,0xbd053cf0,0xbcff6816,0xbdd0ff25,0xbdb1e5e9,0xbdc50d0f, -0xbdedc24d,0xbe09fd1e,0xbd1e0167,0x3bbe596c,0x3d45a34f,0x3d581ff9,0x3d83847f,0x3d8cf63e,0x3db52417,0x3db74d99,0x3dc4ce15,0x3dbcbc4a,0x3d944f39,0x3d851d01,0x3d19b9d0,0x3d2b7876,0x3c28e173,0xbd5c4c31,0xbca1299b,0xbc8ce921,0xbcdf40fe,0xbc6989af,0x3bc766da,0x3b7d3409,0x3c5a5e35, -0xbc442ae6,0x3c6d46b0,0xbb726ca0,0xbc78371c,0xbce991f2,0xbd182e4d,0xbd5f7a66,0xbd96ecb3,0xbe2d29c7,0xbe49e3fb,0xbe3ac3c0,0xbe600ae8,0xbe8773ee,0xbdc60b62,0xbbc2749d,0x3d7e2936,0x3d929b5e,0x3d9a4217,0x3d8b8cb1,0x3dbda5fe,0x3de0dc95,0x3de8e0c7,0x3dc85ee2,0x3dbc1520,0x3d9dbee1, -0x3d47520a,0x3d30e011,0x3cdf247a,0xbc809eac,0x3bb1c58d,0xbc3440fb,0xbb836646,0xbc4ec324,0x3cd2b9d3,0x3c2a795a,0x3cdec2b6,0x3c47e770,0x3d0f458c,0x3cb3d2ab,0xbc6f0b91,0xbc9bfd52,0xbd046542,0xbd772352,0xbd8538e4,0xbe041665,0xbe42e0e9,0xbe123600,0xbe6bf309,0xbe7b5fc0,0xbdb01172, -0x3cb3a32c,0x3dad7b49,0x3dc58e45,0x3ddee1f3,0x3dea0fe7,0x3e2260a9,0x3e2ac524,0x3e4d7ec1,0x3e3abda0,0x3e212f70,0x3e02c566,0x3daa2167,0x3d9ce65d,0x3d3e9e08,0xbda9b466,0xbc2675bd,0xbcd01c13,0xbba6b4aa,0x3c400649,0x3cef4dd4,0x3d32d8fd,0x3d61631c,0x3d4b4029,0x3d4f9333,0x3d3bea81, -0x3c0a5df2,0xbcdb2616,0xbd5dc2cc,0xbda02729,0xbe1f96eb,0xbe6f63e5,0xbd7d6638,0x3e636eb5,0x3e52aa58,0x3eb05b8f,0x3ebec86e,0x3ea7270b,0x3e79a940,0x3eb8c205,0x3ed7bd7c,0x3ef82b5c,0x3ef63269,0x3f00a7bd,0x3eccad77,0x3e9e53e2,0x3e5ed13e,0x3e3b1bfb,0x3dcf3915,0x3d927216,0x3d17a03e, -0xbcfa671f,0x3cf1f9b8,0xbc2bbe52,0x3cd8b02c,0x3cc126d9,0x3d448b1a,0x3d80ce2e,0x3d6661d7,0x3cc87321,0x3ce00a83,0xbca2e467,0xbd9ff393,0xbc6b18cd,0xbd28508d,0xbdfbb369,0xbd2fbc44,0xbd73aa84,0x3e2bbf8c,0x3efd3933,0x3ed9c9db,0x3eb4bfe5,0x3e45b72b,0x3e4b7ebc,0x3dad225c,0x3dbfc961, -0x3df43f07,0x3e4f4e8b,0x3ebd5cad,0x3ed54cf1,0x3eef7c29,0x3ec8d38a,0x3ea65378,0x3e6235a8,0x3e296758,0x3e0f6a1f,0x3da31a64,0xbcb38c19,0x3a11c6c6,0x3b9ebf4e,0x3c9a8939,0x3cf4771d,0x3d29fea4,0x3d616a47,0x3d78c269,0x3d5760db,0x3cbd2e77,0x3c882670,0x3c70dd1f,0xbd34ba6c,0xbd24a97d, -0xbc404654,0xbd9b0ba5,0x3e3864b8,0x3ea9f424,0x3e7e3d82,0x3d8bae32,0xbe1708dc,0xbdf2e503,0xbe04dab5,0xbddfe6c2,0xbe481885,0xbe5c5ad2,0xbe8e3b4d,0xbe54bcae,0xbe43a428,0xbdf61c89,0xbe1165c8,0xbd9a453a,0xbd7f0a66,0x3c8c4041,0x3ca0f2a5,0x3da45f29,0x3dbbce47,0x3bfdca1a,0x3cf1645d, -0x3cc59108,0x3cb840d1,0x3b07ae65,0x3d25ab21,0x3d71de3a,0xbbaaaf5b,0x3d3dd6c6,0x3d176dda,0xbbf5b9c7,0x3d0db234,0x3d152c77,0x3dc82fd2,0x3c584475,0x3e957afa,0x3e71f2ee,0xbe4d38ba,0xbe8106c1,0xbed249a7,0xbe86cc3a,0xbe865f7e,0xbe08effe,0xbea2c707,0xbec99edf,0xbede622a,0xbf03b7f2, -0xbef750e6,0xbef9fc1d,0xbecd6b13,0xbead4ae6,0xbe852dbd,0xbe2b1705,0xbe0bec9c,0xbc2530e2,0x3d3a25ff,0x3d606001,0x3d1b59f5,0x3bfec823,0x3cbd307b,0xbbb2677c,0x3d0862f6,0x3d616c8b,0xbccbd38f,0x3d82a099,0x3d6a1a8d,0x3c2c1d5c,0x3d15df5f,0x3d690924,0x3dd25a59,0x3e0dbe2e,0x3e484258, -0xbe6d3ffb,0xbe613373,0xbe3d17d2,0xbe89673b,0xbe237a82,0xbe044de1,0xbe04729c,0xbe35e226,0xbe598243,0xbe93e68a,0xbe9b2b84,0xbebe9a2e,0xbebccf02,0xbeb85ee3,0xbe9e53f6,0xbe901ac3,0xbe7059e3,0xbe46f842,0xbd61b8ed,0xbbea0c86,0xbce38caf,0x3d3151a9,0x3cc5e04a,0x3c769877,0x3d10727c, -0x3cf28248,0x3cf5654b,0xbbe16de4,0x3d2eeddf,0x3d3b0cb0,0x3d12669e,0x3d38cb3a,0x3c3bb516,0x3d6573c4,0x3c44f5df,0xbd9806d3,0xbbe38499,0xbe31f5ad,0xbe165ad2,0xbe3c98d9,0xbd372af5,0xbc2a6a35,0x3cc94e25,0x3c1e2d40,0x3d10d158,0xbb7df13b,0xbdc268c1,0xbe3fa3e0,0xbe4d4f3f,0xbe770d99, -0xbe7548a4,0xbe678287,0xbe2fb0b7,0xbe03a498,0xbddc9c72,0x3d368560,0x3cfb9f7b,0xbd0be30d,0xbba74ea5,0xbc918a6c,0xbc21cf64,0xbb350863,0x3c1364d0,0x3c8c24dc,0x3cc528d2,0x3cfc7009,0x3cd86da7,0x3b1c1f4e,0x3cf79d7a,0x3c4f3217,0xbd1ee91b,0x3caf2c83,0xbe11e19b,0xbd9932f2,0xbd786546, -0xbd431c0f,0xbd2084be,0xbd5e69ad,0xbd8029ec,0xbcaeaca2,0xb9349938,0xbc07d36f,0xbccf25ac,0xbd0c719b,0xbd2d8e47,0xbd6ad7fa,0xbd97fd54,0xbdf1d3fd,0xbe0276da,0xbe0e8a4e,0xbda4bcb8,0xbdc15dc6,0xbde69597,0xbd94ebc9,0xbd6ac01c,0xbcf30ff1,0xbc0b034d,0xbc5c21ef,0xbb9119b5,0xbaf590b7, -0x3c95080e,0x3c95730d,0x3c96d399,0x3c23321c,0xbc2aa444,0xbcceacf3,0xbd2a7e38,0xbb70a822,0x3c1f4bd0,0xbcdc1cfa,0xbcc0a08e,0xbca3a97d,0xbd009869,0xbcfece35,0xbcabd881,0xbc5c2f20,0xbad9b082,0xbb52235e,0xbb70ca8e,0xbc2c2adb,0xbbaacb7b,0xbc799843,0xbd0b19fd,0xbd439b60,0xbd907b12, -0xbda3e204,0xbde20e23,0xbdb1cf23,0xbd8dfcbf,0xbd7fd78c,0xbd829152,0xbd364511,0xbcd67820,0xbc6b6f51,0x3a434cd7,0x3c8e37e9,0x3c8f3c38,0x3c8f9b35,0x3ca23ac6,0x3bdde459,0xbb9cda97,0xbc2cefdb,0xbc12f037,0x3c28f8b4,0xbc28c907,0xbc7ec37f,0xbc5992af,0xbcc22f4c,0xbc8c71a2,0xbc69ad89, -0xbc205b0e,0xbd0a3647,0xbd598beb,0xbd83d6b3,0xbd5a3a7a,0xbd331578,0xbd1b981a,0xbd45d5b5,0xbd4e9b17,0xbd623a96,0xbd80a7df,0xbd49f534,0xbd953841,0xbdb3d337,0xbd96ec65,0xbd83eaf3,0xbd54f02c,0xbd36ebeb,0xbcfc20cf,0xbc88aa08,0xbc5de9fc,0x3c46c2b8,0xbb391e15,0x3bd914e6,0x3ba317fe, -0xbb118e13,0x3c152b2c,0xbc1aed63,0xbb7c44f8,0xbd00abba,0xbcf32ef8,0xbcd365bc,0xbcbe28e9,0xbc82c862,0xbc95e3b9,0xbca4dfda,0xbc91075c,0xbc3c14ed,0xbbc7dace,0xbbe33712,0xbc803d87,0xbce6c05c,0xbd0c27d0,0xbd13f4bb,0xbd2395f1,0xbd32062f,0xbd488f8d,0xbd6774d6,0xbd6f7b24,0xbd3b8fa6, -0xbd2f4d4a,0xbd2fc37e,0xbd1de5f5,0xbd07e754,0xbd0290e4,0xbd0e5c0b,0xbd162b3f,0xbd116e22,0xbcfa009e,0xbcd686bc,0xbcb0941b,0xbc9ff16c,0xbcd2c3c7,0xbcb5fcce,0xbce5c4fb,0xbcbec7a4,0xbca5bcf3,0xbca889b9,0xbca7f9d2,0xbca72730,0xbca0b684,0xbc8624a3,0xbc7fe6cb,0xbcaa86fd,0xbccca834, -0xbcd825e4,0xbccb88ca,0xbcaf2d75,0xbcaaa7e4,0xbcb77799,0xbcc4a1ff,0xbcce1b84,0xbccc444e,0xbccb60c8,0xbcde6b7b,0xbd181821,0xbd291e8d,0xbd189257,0xbd078121,0xbd11500a,0xbce65163,0xbcd41c74,0xbccba95f,0xbcce8d53,0xbccec5af,0xbcdf0ef3,0xbce4a3b1,0xbcc93936,0xbcaee4b4,0xbcf07c93, -0xbcce601c,0xbd2521cc,0x3e06acaf,0x3de070d0,0x3de1ae76,0x3dbce90d,0x3dc16ee5,0x3dcc00e7,0x3dc7da44,0x3dce0a08,0x3dd3fbf3,0x3dbd0bf6,0x3db2aa1b,0x3da8a8d5,0x3da0aa16,0x3d9ac2cc,0x3d95fbcb,0x3d97e3a2,0x3d9d265a,0x3d9a5afc,0x3da08f50,0x3d9f881c,0x3da30f44,0x3da44e56,0x3d88b63b, -0x3c734738,0x3dab8d2b,0x3d886245,0x3c9df916,0x3c9b378a,0x3ca72ed6,0x3cc2bb94,0x3cb526d1,0x3cb3a9b6,0x3cef501f,0x3d76601a,0x3db94c08,0x3c8726c3,0x3d51ac1f,0xbc92e7c3,0x3dd79cb3,0x3e1acbf5,0x3e2ab7cf,0x3e3e9e02,0x3e3b0ae7,0x3e3813af,0x3e426577,0x3e23d2c1,0x3e191ced,0x3e017178, -0x3de9ab5c,0x3dd935f7,0x3dd0b743,0x3dc7665b,0x3dc44fa0,0x3db0e523,0x3db893b0,0x3db4beb2,0x3da98604,0x3d87ec19,0x3d8c47c5,0x3d62d00a,0x3d8c50f2,0x3da6c291,0x3d81be79,0x3d9c7228,0x3d86600c,0x3d8b9d1f,0x3d9e8ffb,0x3db74099,0x3d6d53f8,0x3d6fb69c,0x3d8efb45,0x3d5d8f9d,0x3d83206c, -0x3d6a6880,0x3e3fc374,0x3e3785c8,0x3e5794da,0x3e70b072,0x3e64d301,0x3e5ee8f1,0x3e6f661e,0x3e401677,0x3e258d68,0x3e0c7b34,0x3dd02a1b,0x3dab30db,0x3d7e5bd5,0x3d7fb740,0x3d85cb49,0x3d6018d6,0x3d8b5fce,0x3d7c8048,0x3d854aeb,0x3d9fca16,0x3d609ece,0x3d8a2b69,0x3d2e40ba,0x3d3484ae, -0x3d935ad0,0x3d5355f1,0x3da45343,0x3d5945d1,0x3d96c4b8,0x3d7ea37c,0x3d566695,0x3d88dcfe,0x3d6f2756,0x3d1389ec,0x3dd141a9,0x3a0899ea,0x3dcdc7b4,0x3e95d222,0x3e96abe0,0x3eb9f046,0x3ea6bf07,0x3ea445df,0x3eada950,0x3e94566e,0x3e845b4e,0x3e4836ee,0x3e1ef6c3,0x3ded1361,0x3dcecf73, -0x3dae6fc6,0x3d8c523e,0x3d280c69,0x3d68aaf4,0x3d4662b6,0x3d2da31d,0x3d5d0939,0x3cfd8fe6,0x3cef0c9c,0x3cc8995c,0x3ca4cba6,0x3d5a8c7c,0x3d06da20,0x3d14120e,0x3cce82b8,0x3d754f0b,0x3d3bcc2a,0x3d006f53,0x3ac35dd0,0x3c605641,0x3d2e924f,0x3d5574e1,0x3ddca242,0x3e3e9056,0x3e9f395b, -0x3ea19fc1,0x3eb272f6,0x3ea61386,0x3ea41f51,0x3eb3db2c,0x3e93fa9d,0x3e7a1320,0x3e562d6d,0x3df53e58,0x3d8511c4,0x3ba7816b,0x3c550837,0x3c32866e,0xbc3c2f3f,0x3c940e52,0x3bc6d33a,0x3cb61645,0x3d97333b,0x3d03b69a,0x3cea5dbc,0x3ab008ae,0x3c25d6f8,0x3d029598,0x3d093e24,0x3d280c66, -0x3d08716e,0x3d47337f,0x3d473143,0x3c8a249e,0x3cfe30e8,0x3d56a07e,0x3d729709,0x3d96ecb6,0x3e90c964,0x3eade84a,0x3e6a999b,0x3e9be3d3,0x3e85df7e,0x3e279dbc,0x3e1aed0a,0x3db9ab0e,0x3e1fb4a7,0x3e1dd661,0x3e050ff7,0x3e723749,0x3e8dbe7b,0x3e80f028,0x3e61c00e,0x3e09ecb2,0x3e2010f7, -0x3e007237,0x3d99cb0a,0x3da1342a,0x3d92ec78,0x3ca8288c,0x3d24dc77,0x3cbd4503,0x3d2549ed,0x3d39d7ce,0x3d489ead,0x3d2592f7,0x3c75e949,0x3cd89853,0x3d4201dd,0x3d955bb3,0x3da7335e,0x3dc4c4e9,0x3e0266c2,0x3e29f972,0x3e06ce90,0x3d0b5a31,0xbea087d8,0xbeaa14c6,0xbeae16c9,0xbe194a03, -0xbda67b6d,0x3c674bb5,0xbd67c16a,0xbe0e4e7f,0xbe7b4abf,0xbeb62f99,0xbed40c03,0xbed742b5,0xbec294f0,0xbe9d2398,0xbe88b757,0xbe34b155,0xbdde28da,0xbc3abeea,0x3dd03048,0x3d98e1c0,0x3d42e0a6,0x3d01c733,0x3cb5b7b4,0x3d1958ea,0x3d2dfb6f,0x3d52e06a,0x3d3a47f4,0x3d09d1e4,0x3d344e39, -0x3cbf65af,0x3d564c18,0x3d921abd,0x3db1174f,0x3e093b00,0x3d730d68,0xbe36c246,0xbea5210f,0xbe29b7c5,0xbd2ad11f,0xbcfcc9db,0xbd93bef3,0xbdd4bfb0,0xbd6d57c6,0xbdc88698,0xbdb0c407,0xbe37e847,0xbe3d5e4a,0xbe655424,0xbe8526a1,0xbe882b60,0xbe7b4f51,0xbe3a4ecb,0xbe1e82d8,0xbda8dd82, -0xbc94e141,0x3d320932,0x3d6ceecd,0x3cfe5fae,0x3d53322c,0x3d5703e5,0x3d7d6da1,0x3d8e7eea,0x3b93820b,0x3d8f6468,0x3d82f9b4,0x3d26d811,0x3d5b82a5,0x3d394357,0x3d17c346,0x3d8e04f6,0xbe1fe5b4,0xbe4ac400,0xbca46e8a,0x3d8104fa,0x3e99fa7f,0x3d39a0b3,0xbc820799,0xbe1cc769,0xbc6b63e5, -0x3d27fc7d,0x3e0ff3d7,0x3dfa72b3,0x3dae9ba5,0x3d02e5e1,0xbd1a207e,0xbd9bd5ac,0xbdd7d66f,0xbdd5596d,0xbdd1e7a8,0xbdc6a2ce,0xbd9b2560,0xbd5c8ed2,0xbc809569,0x3b7a614c,0x3bbd41d0,0x3d151c44,0x3d2d87b6,0x3d5366c7,0xbc5a14ef,0x3d7c4690,0x3d812c31,0x3c516d97,0x3d288fee,0x3c132dc3, -0x3c2d7b2f,0xbd749133,0xbe205834,0x3d92d4bc,0x3dad7446,0x3d971124,0x3e6f5620,0x3d93e084,0x3d692185,0x3c9426b9,0x3d8199de,0x3dbaa01e,0x3df705f6,0x3ddece72,0x3dce4801,0x3d2f82d1,0x3d781c67,0x3d085940,0x3c1405b1,0xbc99f5f9,0xbccd3a5a,0xbdbc983d,0xbdaa4d5a,0xbd5d6f04,0xbdb81b35, -0xbd83ebe6,0xbd023cc1,0x399e80eb,0x3b0ca3e3,0x3c0162ec,0xbc652917,0x3cefaf24,0x3d0b3fca,0x3ce66d5e,0x3c59f1c1,0x3c02a2d4,0xbc8c9ee5,0xbcb19f37,0x3c9a3177,0xbd620545,0x3e0af687,0x3e093c2d,0x3e039308,0x3acda85b,0xbd57a7cf,0xbd89bb82,0xbd46f157,0xbd366a34,0xbd1580a5,0x3d7ee466, -0x3daef1f4,0x3d9b1783,0x3d90558e,0x3d3260f9,0x3babeeec,0xbcd2a976,0xbd221b94,0xbd2cb5ac,0xbdd180e3,0xbdce413e,0xbd2473e2,0xbcf7ac00,0x3b44711f,0x3ca51fe4,0xbc40e5c9,0xbc2c82b9,0xbc161baf,0x3cefac08,0x3d26427d,0x3d427d3c,0x3cf212b9,0xbc86a325,0xbb89ef7e,0x3c5854f4,0xbd7efd03, -0x3daa35af,0x3da94965,0x3d8ac2be,0x3cbe75a5,0xbbaa3c08,0x3b293925,0x3ccc5415,0xbce33635,0xbd1b9aed,0xbc3503a8,0x36b3fee9,0x3c1f8d8a,0xbb35442e,0xbd084b14,0xbd2c7302,0xbc9dc355,0xbcafcaca,0x3bdb7d0d,0xbd2809da,0xbd908f7f,0x3cbc9b76,0xbba39ccb,0x3afd001a,0xbc017e44,0xbc255c33, -0x3c9e9dcd,0x3c8775a8,0x3c489d91,0x3c0a3fad,0x3c2ddfe0,0x3c4dfb2f,0xbc164859,0xbc4ff296,0xbc1e172f,0xbbb5a390,0xbc0e39eb,0x3a8ddc8e,0x3d3ca265,0x3d1720b5,0x3ca81a16,0x3c6cec5b,0x3b161822,0xbc4c9d44,0xbcfebdd2,0xbd32f604,0xbd27b0c6,0xbcfe66b1,0xbce76cf3,0xbcac8e4e,0xbd1b0f26, -0xbd56cb4d,0xbd78393f,0xbd1c844e,0xbbd3195f,0x3cba7f70,0xbcdbe525,0xbcd2230b,0x3ca1dd10,0xbb6691ef,0x3b64627d,0x3c40b730,0x38e99161,0x3b752e12,0xba6b73a7,0x3b551904,0x3b9f2584,0x3c336b1d,0x3b3ecae0,0x3b27a494,0xbbc0eafe,0xbc0d49be,0xbc8df09c,0x3b105a63,0x3a8deb5a,0xbb909816, -0x3c4982d6,0x3b2228d8,0xbbb9fd74,0xbc9aaeeb,0xbc223e24,0xbc0357d3,0xbc56b470,0xbd08d9ca,0xbd440380,0xbd756dff,0xbd51402d,0xbd4c355d,0xbd410194,0xbd0a6968,0xbc54d9a2,0xbcbbd7e6,0xbc4582bf,0xbc230a5a,0xba48660b,0xbafad40d,0xba8894d6,0x3c50ded7,0xbb88ec43,0x3c4f6ac0,0xbca09994, -0x3b363dbf,0xbbb50c73,0x3b3d01fa,0x3be549af,0xbbf3679a,0x3baca0a0,0x3b904c36,0xbd094a98,0xbcc0f058,0xbcd349f0,0xbcead820,0xbd1c85ad,0xbd2ed1f3,0xbd237ca1,0xbd213adb,0xbd37aeb9,0xbd3bbb97,0xbd2c9923,0xbd0ff64c,0xbcdbbebb,0xbce287aa,0xbcbb2ed9,0xbc8e9563,0xbc4869d5,0xbc5e97cf, -0xbbede0a1,0xbbf49a8c,0xbd35a5af,0xbcf05631,0xbcf20358,0xbc823e69,0xbcaccfd7,0xbcaf67bf,0xbc958f5b,0xbc8215ca,0xbc7a8670,0xbc6fb458,0xbbed2f18,0xbca24be0,0xbcaf2a05,0xbcb7b5ee,0xbd0b836a,0xbcced450,0xbc234cff,0xbc286292,0xbc5e551a,0xbc506578,0xbc2ef7d1,0xbc2b6b0e,0xbc5848c4, -0xbc77ecac,0xbc49aeda,0xbc3d503a,0xbc59aee4,0xbc8357d2,0xbc9ca92f,0xbca0ea7b,0xbc8ccccf,0xbc86736d,0xbc766265,0xbc3b0dec,0xbc339c73,0x3a1b08c2,0xbb9d3389,0xbc2047ff,0xbcc08cae,0xbc19b876,0xbc4dcd99,0xbca4d027,0xbcbec08a,0xbcaa1354,0xbc98d024,0xbca94bfc,0xbc9631ba,0xbc59de77, -0xbc06316a,0xbbf8cbee,0xbc555c96,0xbc3deef7,0xbca108fa,0xbd0030d3,0xbc76f95e,0xbd59bca2,0xbcc3fd2b,0xbcc1a9b4,0xbcafea0d,0xbd07fb6d,0xbd1a6db6,0xbd1f0d07,0xbd171272,0xbd11d225,0xbd0bb248,0xbd0e190d,0xbd0e4d30,0xbd12df05,0xbd16e0c1,0xbd19ec0e,0xbd1274d6,0xbd0e7cff,0xbcfb58ca, -0xbd28a49f,0x3b8c8fe7,0x3d091e9a,0x3dc6cc9d,0xbbec76a7,0x3d098c9b,0x3dcae620,0x3dc37fef,0x3dbad203,0x3da8a2b3,0x3dcdaac5,0x3dc83f83,0x3dadaf59,0x3d3c5aef,0xbc128466,0x3db617df,0x3d6b8ca7,0x3e15b980,0x3cade802,0xbc026aed,0xbc42e84c,0xbc0a8953,0xbd7034f9,0xbd986e10,0xbda7ba77, -0xbdae3d3c,0xbda7896d,0xbd87f3fa,0xbd82fe2e,0xbd7dee00,0xbd773595,0xbd670a04,0xbd669460,0xbd4ca259,0xbd2d6a9d,0xbd1bf9e1,0xbd52e72d,0x3d0f970d,0x3c87492a,0x3cfb0f5a,0x3caa4db0,0xbbda0392,0x3d2fa1a1,0x3cb7d1d0,0x3d2f2d17,0x3c9518b6,0x3d0cf100,0xbcdcd9ac,0x3cbeef0d,0x3d060bc1, -0x3cf85530,0x3d4b6340,0x3d127a45,0x3dc0b48b,0xbcd85a20,0xbbcfa8e8,0xbc3a3dcb,0x3b49511d,0xbd905fc7,0xbdc71d54,0xbddac8e5,0xbddb24e6,0xbdd70611,0xbdbd47be,0xbdb27e1b,0xbdafdd14,0xbda7a2b4,0xbdb3102f,0xbda4748c,0xbd97430e,0xbd61e436,0xbd67c589,0xbd1fd6ba,0x3ca713c1,0x3c1b3517, -0xbbee8065,0x3cbb7fc7,0x3ca955be,0x3cbb575c,0x3cc19852,0xbc92e8f8,0x3cff9fd2,0x3c3cb2b5,0x3d27b074,0x3baa1ed7,0x3ca8f134,0x3d0eac25,0x3d7f7cf4,0x3c83e2a6,0x3e2c47a2,0x3df5da93,0xbca8ff72,0x3c40bd27,0x3c8fb869,0xbdcf1804,0xbe1dc47d,0xbe341496,0xbe4d1090,0xbe4511f6,0xbe14519d, -0xbe0d750a,0xbe024c7a,0xbe007e56,0xbde64ff3,0xbdd24596,0xbdada276,0xbd7e5a0a,0xbd535438,0xbd4d069c,0xbc599ea0,0xbc97466d,0x3ab79941,0xbc6bd46a,0x3c852904,0x3c9e6a93,0x3d287efa,0x3cfd1d29,0x3c901ad3,0x3c63e774,0x3d00b488,0xbc11c8cb,0x3d6e9212,0x3d6b87a8,0x3d696b7a,0x3d80ba71, -0x3d74a27b,0x3d2c9222,0xbdaa6ad6,0xbca9f078,0x3c808680,0xbdcaf67b,0xbe1757ea,0xbe356cc3,0xbe3da58f,0xbe3c1ae2,0xbe22d326,0xbe0b2ef7,0xbe01f5f1,0xbdf8578e,0xbe0b5594,0xbe04d691,0xbdcccc29,0xbd9b678c,0xbd73b8ab,0xbd80b19f,0x3c339fc5,0xbc4b8347,0xbae09728,0xbc1a6132,0xbb79c337, -0x3ccfd4ae,0x3c7f77e5,0x3cf49cc6,0x3c61e1fe,0x3d326269,0x3cd8ba27,0x3c1aa647,0x3d2b2c5e,0x3d44b42b,0x3d48cd55,0x3da53bcc,0x3d07dfe3,0xbe2c4f9f,0xbe4bb7f5,0xbe6b21df,0xbe10d3d9,0xbdaebb63,0xbd963700,0xbd9a96e5,0xbe345482,0xbe550d47,0xbe7a6fed,0xbec65a9e,0xbeec3f57,0xbee2045d, -0xbec7755f,0xbe9de355,0xbea44cac,0xbe6fab26,0xbe27b9dc,0xbdda0ca6,0xbccb0388,0xbd0e88c3,0xbb43e514,0xbc571c52,0x3c90ee23,0x3d2ddf27,0x3cfc574e,0x3cf386e6,0x3d054bd7,0x3d4104e1,0x3d04a48f,0x3c33d4c4,0xbcd67582,0xbb257165,0x3d0521ed,0x3d4e4e22,0xbdc8c502,0xbe01eb5a,0x3cfb41f3, -0x3deeb261,0x3e6ec390,0x3e23fdf9,0x3de340be,0x3c0fba87,0x3d8a55d3,0x3d5c481f,0x3b2dd4f3,0xbce52cf5,0xbd7797c7,0xbe2049f6,0xbe419a78,0xbe47fda8,0xbde3a8b2,0xbdf3af1d,0xbdfd66a0,0xbdcbf0f4,0xbd84fe76,0xbd64712c,0xbcf0b17e,0xbcadf40d,0xbb12d9b6,0x3cc2d6c3,0x3cd95dd8,0x3d4c53e2, -0x3d110e92,0x3d836139,0x3d8b3268,0x3d98ed6e,0x3d4a98b4,0x3abf97e5,0xbd2872bc,0xbd8c77c7,0xbe1afdd7,0x3cca88b5,0x3e2e367d,0x3de2f6c7,0x3dd1ee83,0x3e22cbea,0x3e37e5be,0x3d2b4e96,0x3dfda6bd,0x3e2428fe,0x3df8ef77,0x3e278cd4,0x3de81ad6,0x3d2789d7,0x3d5bbe44,0x3cbd366a,0x3d6fb2f6, -0xbcb5f10c,0xbc5f5b51,0xbd5558bc,0xbd90dafe,0xbd0b6094,0xbd28460f,0xbca00df5,0x3a728475,0x3d41f287,0x3d51a8ee,0x3d390590,0x3c6d72b5,0x3d68a6ba,0x3d265f34,0x3ca2fb3e,0xbc4a331d,0xbcc6c1b6,0xbd676d40,0xbd4f0b51,0x3d51cd65,0x3dda7861,0x3c947c1f,0xbd24346e,0xbe137a3d,0x3d471aa4, -0x3d6e8ef1,0xbc43de34,0xbcf165c3,0xbd0565f0,0xbd6edd00,0x3b2d81b1,0x3cda4274,0x3d6cc020,0x3d8ae567,0x3d934696,0x3d89b342,0x3d21fd87,0x3d18ec33,0x3b5775b3,0xbbf6cfab,0xbc8ed651,0xbb23dd4b,0xbbddc176,0x3c7fe1f9,0x3d658a20,0x3d178c35,0x3d0021ec,0xbc015941,0x3cd80803,0x3cac0074, -0x3cb84d64,0x3a0ca143,0xbc07ed1f,0xbc6587d5,0x3ca36879,0x3dad2a41,0xbb4733d1,0xbde1630e,0xbdb67f34,0xbd8bfe4f,0x3d3dd8aa,0x3d136f32,0xbcbb674c,0xbd84fcbc,0xbde2d45a,0xbdb94543,0xbdb42f56,0xbd74e35a,0xbcb3ec24,0xbce281fe,0xbc8ce7d3,0x3bbd2b75,0x3c45d6c1,0x3c3976df,0x3b97d26a, -0xbc0295ba,0x3c0a1ae8,0x3b1b1e9b,0x3c3c566b,0x3ccb9ed8,0x3d0dee4b,0x3cad7806,0x3c15c618,0xbc4820b5,0x3cad76c4,0x3d0bd5ad,0x3d4f81ef,0x3cd3fd37,0x3be9c807,0x3c970dce,0x3d07b8c8,0xbb2b71ec,0x3d061b40,0xbdecbe1a,0xbdb01a9d,0x3cb05856,0x3d7913c1,0x3d84f3a5,0xbc34cfab,0xbcb6702c, -0xbcc8c9ea,0x3c6147e5,0xbdad3578,0xbdb7ff09,0xbd8842c4,0xbd80a5ad,0xbd456916,0xbbaef1d9,0x3c41d4e5,0x3d099c9a,0x3d76d649,0x3ccdbdb4,0x3ce46511,0x3c1f4ff9,0x3c907c06,0x3cba60a3,0x3cd5f883,0x3ca0d5e7,0x3cb0fff6,0xbc8a4bc2,0x3c111495,0x3bb7d8ab,0x3bdb1b08,0x3c32b00d,0x3d1528c5, -0x3ccc7eed,0x3cc333d4,0x3d036052,0xbd8f4f9f,0xbd30fd43,0x3a8996ea,0x3d89576d,0x3d874caf,0x3cfa6313,0xbd10a750,0xbd16d0a9,0xbd65fe60,0xbd98a518,0xbda91081,0xbdc969d4,0xbdce7454,0xbd8c642d,0xbd03f073,0x3c12368e,0x3d4511a0,0x3d566fe9,0x3cf23989,0x3d2e4efa,0x3d2162f7,0x3c918909, -0x3cbcbbc8,0x3c7bb4f4,0x3c837c8c,0x3c204316,0x3bc4524f,0x3c5304fd,0x3c6fff4f,0x3cb54cf7,0x3c8b9bfc,0x3ceeeee4,0x3cab10b7,0x3afdda0e,0xbbf404b1,0x3cf534d3,0x3cb71b87,0xbb0112c2,0x3c93cea6,0x3d02352b,0x3c2debdf,0xbc034593,0xbce90ce0,0xbcceca65,0xbcc1b8ee,0xbd1529dd,0xbd2982e3, -0xbd2bab06,0xbd7266c7,0xbd0acc11,0xba6fffc5,0x3cf876bd,0x3d21850e,0x3d2d0f7c,0x3d2e6a61,0x3d0a9be1,0x3ce27d24,0x3c658ff4,0x3cbc02f9,0x3cdd28ee,0x3ccffce6,0x3cb1febc,0x3cb1bbb9,0x3cc77702,0x3cb5f74a,0x3cab397c,0x3cba68d2,0x3ca5f06c,0x3c6db2a2,0x3c862170,0x3c72ebaf,0x3cebce80, -0x3d277b8b,0x3ce7fe92,0x3c904028,0x3b037b07,0xbc575106,0xbcb497a4,0xbd036a9c,0xbcfa25cb,0xbcfd7278,0xbd053d27,0xbc1ea919,0x3b1b068b,0x3c24c940,0x3cbdbdcc,0x3cf49e07,0x3d136bb7,0x3d0881d9,0x3d23713c,0x3d2d8bb1,0x3d0349cf,0x3cecf720,0x3cc4df55,0x3cd4417c,0x3ccd1600,0x3cb55240, -0x3cd2829b,0x3d093227,0x3c9848e0,0x3cfd3c4f,0x3cae0759,0x3cd41f61,0x3c8db02f,0x3cd63d05,0x3c548f27,0x3cebfc7a,0xbc45bc9c,0x3cfd4fb0,0x3cb83a3b,0x3c9945bc,0x3c96a129,0x3c745532,0x3c1ed36b,0x39b60c8b,0x3b1d555e,0x3b300cea,0x3ae04169,0xbbefc9c4,0xbc809461,0xbca7e962,0xbc979461, -0xbc402b0d,0xbbb9b8eb,0x3b54cf80,0x3c15453a,0x3c79bd52,0x3b6b265c,0x3c14f9b1,0x3bd8409b,0x3b98a91c,0x3a45469f,0x396f82e4,0x3adaaaeb,0x3b790329,0x3c035a50,0x3c476783,0x3cc193bb,0x3c31d29c,0x3cc98d01,0x3c5df41f,0x39f45d81,0x3cef8ef1,0x3c042ce1,0x3ce35140,0x3c994539,0x3c832938, -0x3c40f895,0x3c0ec7aa,0x3be6874b,0x3ba6c1b6,0x3ba6864f,0x3b84e617,0x3b9b2997,0x3bee2940,0x3c2e418c,0x3c3e187c,0x3c6e2573,0x3c760374,0x3c79377a,0x3c701040,0x3c6f5084,0x3c98543b,0x3bb8b5b1,0xbb839e27,0xbc4b4997,0x3c08bcc0,0xbaa88c1f,0xbc504c50,0xbc4ca581,0xbc44582a,0xbc4b141a, -0xbc823f67,0xbc859787,0xbc4cd513,0x3a3e80d2,0x3c2ec7b6,0xbc811bbf,0xbbd8f60b,0x3cb2a218,0xbd813644,0xbd73021d,0xbd356ccd,0xbd385657,0xbd3c590c,0xbd3dac85,0xbd1ed3d5,0xbd199472,0xbd22697e,0xbd110aeb,0xbd1461c2,0xbd1a0c13,0xbd1441cc,0xbd121c63,0xbd13fc38,0xbd0d57a7,0xbd0d166f, -0xbd04601c,0xbd0e388d,0xbd1140cd,0xbd019350,0xbd497b3c,0xbd5eca60,0xbd4b6ba2,0xbd2f1228,0xbd4ba928,0xbd3fac2c,0xbd40b73e,0xbd401827,0xbd3e974c,0xbd503def,0xbd4c62e0,0xbd57ef51,0xbd57a586,0xbd4473aa,0xbd3df555,0xbd5a877a,0xbd48b62d,0xbda6cf76,0xbdbc29c2,0xbdbeb990,0xbdc30a5f, -0xbd90d4be,0xbd7b6890,0xbd86dfdc,0xbd215daa,0xbd1aea86,0xbd2726b9,0xbd227481,0xbd348df7,0xbd41e794,0xbd2dfec9,0xbd3445af,0xbd169d9f,0xbd2e2761,0xbd2c77a3,0xbd0d26d4,0xbd6dde14,0xbd4dff4a,0xbd418521,0xbd3ee974,0xbd0d667e,0xbd0cc477,0xbd1d5d3b,0xbd2d81ca,0xbd1f469f,0xbd3306c6, -0xbceeb1b7,0xbd423de5,0xbd3ef81f,0xbd7230b8,0xbd7a5945,0xbd6d5f56,0xbd9a8428,0xbde3a14e,0xbdee0edb,0xbdff7c65,0xbe009f66,0xbda03805,0xbd7a6596,0xbd9de40a,0xbd27bdf4,0xbd19cbd6,0xbd4bbc9f,0xbd3fb887,0xbd34feb6,0xbd339130,0xbd1c9978,0xbd093d2e,0xbcc15f34,0xbd1c5ca0,0xbd0e650e, -0xbd19f1bd,0xbd809e8d,0xbd3e0c54,0xbd2378d3,0xbcfa5fce,0xbc9fd56a,0xbc390ad6,0xbc5fd0b2,0xbc49037d,0xbcca8eee,0xbc4be5fb,0xbcd3d782,0xbd013d39,0xbd3d05e2,0xbd4d5268,0xbd6b4df4,0xbda69034,0xbdbe0930,0xbe0cce6a,0xbe3752d3,0xbe35c4f6,0xbe446e87,0xbdf4c488,0xbdc096e3,0xbde8ba85, -0xbcfee9a3,0xbcb0fce5,0xbd1f6db2,0xbd347437,0xbd49dfe5,0xbd4a65ba,0xbd240448,0xbd08fae7,0xbc84dc54,0xbd0f99b6,0xbd0c1e64,0xbcf6c495,0xbd3a00ed,0xbd01251b,0xbcf66a18,0xbc1fd89f,0xbb61e544,0x3c8df2b5,0x3b92847f,0x3c013201,0x38a82d63,0x3c3b4b53,0xbb2c93fa,0xbce18a13,0xbcbe24e2, -0xbd37bcef,0xbdac2b13,0xbd96b1b6,0xbdc9a039,0xbe1daf5c,0xbe2c7a96,0xbe460c58,0xbe4aac12,0xbddccb99,0xbdaeba54,0xbde5cf6e,0xbd37b6ef,0xbd05acf4,0xbd986561,0xbd8bd3bb,0xbd70354f,0xbd5dc8d1,0xbd0072f9,0xbc903297,0xba83bc23,0xbcf06fe6,0xbd063ce9,0xbd0cb152,0xbd85c38a,0xbd45d3ca, -0xbd0fa9eb,0xbc72448a,0x3b2b1940,0x3ca7e33f,0x3cbf03c1,0x3cde9d16,0x3c9921db,0x3d08eac2,0x3cb5330b,0xbca1a7da,0xbd1fb26a,0xbd8649e4,0xbda990f5,0xbde6cd96,0xbce6c5a8,0x3e14cf46,0x3ea823d3,0x3e8d2d66,0x3de6bd99,0x3dad20cc,0x3c4e84b5,0xbd8dde6b,0xbdb2d9e2,0xbe02a6f1,0xbdc502f8, -0xbd4c7700,0xbd2ea977,0xbccbf370,0xbcfd7dd0,0xbca8f52c,0xbcd57171,0xbca00259,0xbc73d3fa,0xbd69dc8f,0xbd8dad0b,0xbcb9b889,0xbcde0a7b,0xbb6165ec,0xba959e1d,0x3d2692c5,0x3c48976c,0x3c4d9f39,0x3d0b28e1,0x3c138d9d,0x3b816357,0x3ce622b5,0x3d8e5f56,0x3d599d8a,0x3c9e9f27,0x3d26ad8b, -0x3d8a0686,0x3e4205a8,0x3df86412,0x3d3ee0e7,0x3caba8e0,0x3c468f4e,0x3d183da5,0x3d58a0c1,0xbce4a54c,0xbcf29e8d,0x3d92fb16,0x3d81c40b,0x3da21966,0x3dc630f9,0x3de44363,0x3db6f9ec,0x3dadd164,0x3ce79197,0x3a58385c,0xbd227672,0xbdb93e7d,0xbd8fd1de,0xbd183acd,0xbc8235f4,0x3c2f377a, -0x3d3dbcf2,0x3ccc0002,0x3d071274,0x3cd184d4,0x3d643cd2,0x3d6e6219,0x3c95d9ad,0xbbc354af,0x3c818790,0x3d2e4fe9,0x3cf3cbf9,0x3dfc8b17,0x3da6e3fb,0xbc0fa75f,0xbca0c735,0xbd62a723,0xbd5cd6d4,0xbd920296,0xbcceb8fc,0xbdefca63,0xbe0a31e1,0xbd2d67cd,0xbd5e5ab8,0xbc8317a4,0x3d119538, -0x3ce7f335,0x3d168d94,0xbbef78ce,0x3d0ba728,0x3d1abffb,0x3c0c65bc,0x3c1f8845,0xbc954d90,0xbc2b2d0d,0xb81c415c,0x3bb22c13,0x3d7b7f47,0x3c82c549,0x3bbe7b0c,0x3c0b492f,0x3d3b1bdf,0x3d2da178,0x3d4c60d1,0x3d3699c7,0x3d21a54a,0x3dac498e,0x3d250697,0x3cb21911,0x3be9186e,0x3d2671fc, -0x3ced3dbc,0x3bd874ac,0x3c666430,0x3ce1b7a0,0x3daebfd5,0x3c956df6,0xbc14c352,0x3b87e066,0xbd032f6c,0xbd205a7d,0x3ab3af71,0xbc8bd36d,0xbc652d72,0xbca0a06a,0x3cbddfbd,0x3d18fb6f,0x3cebeb42,0x3d103b2e,0x3d15e58d,0x3d1d5292,0x3c659b45,0x3cd80ce3,0x3da6c57a,0x3c1f6c77,0xb9676b52, -0xbb875f55,0x3cd1575a,0x3ceceead,0x3d6dfe0e,0x3c481ffe,0x3cc0bba8,0x3d0872b9,0x3d5b4b07,0xbc905728,0x3d89efc0,0x3dd3d91b,0x3d755800,0x3c1baac9,0x3d026d6d,0x3d816c4a,0x3db8ba0a,0x3cf9d8c7,0x3b3e1a17,0xbbe877f4,0xbd6184c4,0xbd470226,0xbcafb8c0,0xba889b78,0x3b493f19,0xbacdb263, -0xbc1d5a5f,0x3b8d5ea2,0x3d01acaf,0x3d1d6d7a,0x3d158f60,0x3d65b487,0x3d206182,0x3d1351aa,0x3d90559c,0x3c790728,0x3baa6355,0xbb3248af,0x3b264bd0,0x3c6f69b5,0x3d35f32b,0x3cbe21cc,0x3cbefc8a,0x3c0ae6d4,0x3c1739b5,0x3ca0db64,0x3cc63212,0x3cbe56c6,0xbcc6f532,0xbd2ab0aa,0x3c9e8228, -0x3cd3ce4c,0x3d1f0ee6,0xbcef4e80,0xbd930038,0xbdbab381,0xbd3d4c2e,0xbc39f9be,0xbd528016,0xbc84c1dd,0x3ac7345a,0x3cb3f942,0x3d2eb02c,0x3d24838f,0x3cde22b0,0x3ce02f51,0x3cc40567,0x3cd07bf3,0x3cac8327,0x3ccd3890,0x3d1a2404,0x3d44154a,0x3d2f29b1,0x3cc79fe1,0x3cb4cbf8,0x3ca32ecb, -0x3cd3a7f9,0x3cdce99d,0x3b5e491e,0x3c2fc117,0x3c2f7e3a,0xbd371d08,0xbbd62c43,0xbce06641,0xbd17639e,0xbc940f4b,0xbc78eefe,0x3c2c01ed,0x3d15266c,0xbb758486,0xbd02c5a2,0xbd688ca4,0xbd49bb32,0xbcc0ac21,0xba3c61e9,0x3d1867d1,0x3d12d65e,0x3cc0bbc4,0x39b7ac67,0xbba0e80e,0x3ca2a7d8, -0x3d0cc8d7,0x3ca0a848,0x3d1fbf0e,0x3ce5151b,0x3cdba171,0x3c893b33,0x3c822bfa,0x3c804c58,0x3cac05ab,0x3cb0c69d,0x3cab52f8,0x3c97c81d,0x3cd8edb8,0x3cfba55e,0x3c5ea5d8,0x3bc2f7e7,0xbcef104d,0xbd3015da,0xbcd64ddf,0xbc9c576b,0xbb72ff66,0x39b17359,0x3c270211,0x3cd132a0,0x3c6da468, -0x3af85b89,0xbade3b55,0x3b34f10f,0x3bc93c59,0x3c552c12,0x3cdfb8dd,0x3ce8f07b,0x3d13f475,0x3cc5a3cb,0x3c898e20,0x3c6baaa9,0x3ccf9abb,0x3ca1ac0b,0x3c878385,0x3c897415,0x3c80915e,0x3c69c123,0x3c8a5e82,0x3c9a5ac5,0x3d0c927a,0x3cb77fea,0x3c86eb4d,0x3ac1e581,0x3bc8b9fb,0x3adc91ae, -0xbc4891ed,0xbc8ebbc6,0x3c282a9e,0xbc223d65,0x39bb068d,0x3c4aca93,0x3c988c74,0x3ce9316a,0x3d0d99c7,0x3d263836,0x3d2d2f57,0x3d3e0b84,0x3d66e822,0x3ce7f467,0x3c9485fe,0x3be4c829,0x3c0b120a,0x3c4e2661,0x3cb7734e,0x3cbcc158,0x3c7e410b,0x3c8a404b,0x3cb978c6,0x3c69febd,0x3c41e81f, -0x3c4a4dae,0x3c9736eb,0x3ce35695,0x3cdf3796,0x3d02d994,0x3d118ac0,0x3ca45baf,0x3c8c34c9,0x3bf116d9,0x3a59c5c1,0xbb3e7d58,0x39a6cd03,0xbb7324e0,0x3d629eed,0x3cc19c00,0x3ced0e35,0x3cf011b1,0x3cf0a719,0x3d055a36,0x3d019ca6,0x3d1344e1,0x3d0e3f4e,0x3d038ccd,0x3cfb4b96,0x3d2ebda5, -0x3d5f2721,0x3d7ab434,0x3d70efa1,0x3d4b7c3e,0x3d343430,0x3d1b1d71,0x3d088a9d,0x3d066df5,0x3d0bf8ef,0x3d184361,0x3d307de3,0x3d46223d,0x3d36900d,0x3d3416c3,0x3d2b7bd8,0x3d21a984,0x3d0fddf3,0x3d25a488,0x3d05ca99,0x3d3a4bb9,0x3d32e10e,0x3d3f6427,0x3d601e2c,0x3d132621,0x3cc0e416, -0x3c208e00,0x3c82b247,0x3c806e5b,0x3c866848,0x3c98f40a,0x3ca7295e,0x3cb68c3b,0x3cc58031,0x3ce1c8e9,0x3ced09e0,0x3cd96e3d,0x3cb3bd09,0x3caac05b,0x3c92c8de,0x3c999bda,0x3c9ce081,0x3c98f92e,0x3c8ecace,0x3c72093b,0x3cc9e21f,0x3cefda92,0x3cbe0c8f,0x3cc3a45c,0x3cfa6fd9,0x3ce07e6b, -0x3ce2d50d,0x3cec86cb,0x3cf6a008,0x3cff15ec,0x3d00cb8a,0x3cecda49,0x3cca07fc,0x3c90f412,0x3ceb54f1,0x3d008ebb,0x3cd223ac,0x3b52d251,0x3c643fad,0x3cac566b,0x3bac0cf7,0x3ba09e1c,0x3bb65a45,0x3baf468a,0x3b8672ee,0x3ae18a30,0x3b406f80,0x3b91ce13,0x3ba6a349,0x3b20bdc8,0x3abd7936, -0x3a4b193b,0x3b727ca5,0x3bad6619,0x3beb1d9f,0x3bcb184f,0x3b9dbf64,0x3c0852ae,0xbac27b68,0xbc03a44e,0xbd00897a,0x3b8255ab,0xbba8f36a,0xbcd32d7f,0xbcd7763d,0xbcce1671,0xbcb541fb,0xbccf4aa6,0xbcd52d94,0xbcc70311,0xbc4dd608,0x3bc3f932,0xbd066d8a,0xbca18ce4,0xbda61779,0xbbff9842, -0x3bef5c86,0x3bd27e84,0x3b9d6d8e,0xba107e25,0xbb360e97,0xbc1b73b8,0xbc0f4a84,0xbc04b1a1,0xbb229799,0xbb87763a,0xbb252c3b,0xbb3a89e0,0x3bb49564,0x3c2387bd,0x3c6cdb7b,0x3c1092be,0x3be92666,0x3c6b5a01,0xbc4b16e8,0xbc08464f,0xbc198ca5,0xbaa475ad,0x3c1a22ab,0x39aee17d,0x382bffe0, -0xbbdf9298,0x38545526,0xbb802b25,0x3c07d0a3,0xbc155e2e,0xbc744998,0xbc30f0b8,0xbccaf492,0xbca53ddc,0xbd1e46a7,0x3d39aa47,0x3cc10963,0x3cd8fa39,0x3ca1408d,0x3b9d5ce8,0xbb330d50,0xbc92ff81,0xbbcaa973,0xbac7a8dd,0x3c1ca9eb,0xbb203838,0xbbb20f0e,0xbbf5920c,0x3bcc6206,0x3c53f2b9, -0x3cc024a8,0x3c3ddb6f,0x3c5b7ec6,0x3c200c5c,0xbc62df00,0xbbab1a6f,0x3b73b17d,0x3ae16321,0x3bde06d3,0x3cbcbdf0,0x3bf2ad77,0x3c90f9b7,0x3c19ee9d,0x3c44b1ee,0x3b0be523,0xbb17e089,0x3b320681,0xbbeb2aa5,0xbcce929c,0x3c01cd6c,0xbd98e7ea,0xbc8dffd3,0x3d883ddd,0x3cd6f7fb,0x3d00431d, -0xbc589c2b,0xbcb9b7ed,0xbd180de4,0xbd017052,0xbccac7ad,0xba86ca7e,0xbb496734,0xba903108,0xbbe00cc4,0x3c66b365,0x3cc92fb5,0x3d0cb629,0x3c9193fe,0x3c5eab14,0x3c7a8179,0xbbb893af,0x3a50bb47,0x3a9dd772,0x3c61c09c,0x3c67cb68,0x3d231165,0x3c1dba1a,0x3c339ac2,0x3c4da115,0x3c9aed70, -0x3bea1f34,0x3b53fbcc,0xbcfd7b2f,0xbcff339c,0xbc5d1b4b,0xbcc7b405,0x3ac2715f,0x3d690f11,0x3dd91ca3,0x3db06850,0x3d80fb4d,0x3ca3ac50,0xba71688d,0xbd1e6527,0xbc154e9c,0xb9d8bab1,0x3ce1d721,0x3b9816f3,0xbc14cb33,0xbc2f005b,0x3c021073,0x3cb12df6,0x3d04837a,0x3c68f7c4,0x3c5d01cd, -0x3c7e2315,0xbd1cf43b,0xbb89999e,0xbc203a42,0x3bcabc62,0x3c5cd61b,0x3d16b50f,0x3cd617e9,0x3cbdce6f,0x3cc78fd0,0x3d05df1a,0x3c9a2b55,0xbba643d2,0xbb3d8407,0x3c57130b,0x3c0c3d3e,0x3bb3e8e9,0x3e6683c2,0x3e1c0cf1,0xbc94c634,0xbd4b5289,0xbe13c01a,0xbe4b54a9,0xbe42c914,0xbdef4dd1, -0xbd811fa5,0x3d6a8e2e,0x3dfc8821,0x3e208723,0x3e4218fa,0x3e2d3444,0x3e1171c8,0x3dcb6c54,0x3e0e0d01,0x3da5af99,0x3d4555e6,0x3d28a241,0x3c08b71a,0x3c8c8fd4,0xbbf0a02c,0x3c8ec62f,0x3c55507c,0x3d16e638,0x3ba2ddee,0x3c20c1b1,0x3d080280,0x3ce50896,0x3d654996,0x3db29377,0x3d2413a5, -0x3d526949,0x3da261e7,0x3e218f7d,0x3d9c62d7,0xbb7127dc,0xbc125f9c,0x3c566817,0xbd85529c,0x3dc909a0,0x3dce1ae1,0x3d290761,0x3d59b4c8,0xbbec8df8,0xbd674c74,0xbd819666,0xbd7a45ce,0xbd8a6084,0xbd0bf89e,0xbcdcb342,0xbda0a803,0xbc9efd9d,0x3cb95e18,0x3ca0f64f,0x3ccb1171,0x3d231ff6, -0x3c9fe318,0x3ce4df58,0x3ccaaddb,0x3d2d8bf9,0x3d1612b0,0x3d0d7d6c,0x3c4f1726,0x3d45dd1c,0x3d4f9b71,0x3cf6038a,0x3d91de8c,0x3da60204,0x3da1c3bc,0x3d96761b,0x3d40e57c,0x3cd5e895,0xbbaf2bfa,0x3d1e2eca,0x3cbd6aeb,0x3d97be9b,0x3dd8b4cb,0x3e128b35,0x3d899304,0x3cba18df,0xbd2e2048, -0xbd9ef4de,0xbde80614,0xbe14178a,0xbdf4498b,0xbdc36325,0xbd8bf924,0xbce7147a,0xbc537302,0x3c704705,0x3ce050b2,0x3c9f007f,0x3cd38966,0x3c799ede,0x3cb41f35,0x3dbc19fc,0x3bab8afa,0xbab0d470,0x3c0c38ba,0x3d1faeb7,0x3d42fa16,0x3dbc80e1,0x3d379c7e,0x3d33e591,0x3d660211,0x3d93fa88, -0x3d2431ae,0x3c9998a4,0xbd520be3,0xbd0b8d65,0xbda4a2ef,0xbc6ebcac,0x3c138b8c,0x3d5fad1b,0x3ce4cedc,0x3b896c5d,0xbd4d7d9f,0xbd1342f5,0xbd325e70,0xbdb959b6,0xbd74cd0a,0xbd491349,0xbcfa16c5,0xbd1d0a2d,0xbd135484,0xbb8205df,0x3b98b2d3,0x3c6a0017,0x3c2f0457,0x3ca1114a,0x3cf0473f, -0x3dd336f7,0x3bd62fde,0xbc0e44c5,0x3c93a0f2,0x3c502760,0x3d016256,0x3db52e5b,0x3d0670a4,0x3b849673,0x3d1f399f,0x3b13617c,0x3d5eb59f,0xbcf48baf,0xbccf1622,0xbc966e47,0xbddf5328,0xbd505216,0xbd8d8928,0xbdcb365b,0xbdb63089,0xbdcf8f37,0xbe07093b,0xbd699dd9,0xbc8ebb3b,0x3a390090, -0x3c938a3d,0x3ca25f98,0x3a468f32,0x3bd9e785,0x3a6799f4,0x3c41f3d1,0x3c9fad80,0x3c2be702,0x3b82d258,0x3c6c4c90,0x3cadac54,0x3d650a9e,0x3cdc8730,0x3c8d81d7,0x3d00e650,0x3b5177d1,0x3c82ce7f,0x3d35a7fe,0x3d08d6d5,0x3ccf342a,0x3cff264a,0x3cb7df0d,0x3c0fef92,0xbb858831,0xbb3a23d9, -0xbbbcad91,0xbda0abab,0xbd13ad4d,0xbca53eee,0xbd117c9a,0xbcbd6a2e,0xbceef254,0xbd16b737,0xbd25be15,0xbce224d3,0x3ce5158e,0x3c243e00,0x3bfa6e03,0xbc892d5b,0xbcf76800,0xbc8006ac,0xbc39f9f8,0x3c76e96a,0x3ca9375c,0x3c9a8c08,0x3cc067b8,0x3c637a9e,0x3cbed08d,0x3c41ee48,0x3c1cb0dd, -0x3cc00ba6,0x3c94d597,0x3c977077,0x3cd5c6ab,0x3b97b56a,0x3cc261a4,0x3c5d177d,0x3c4e9287,0x3cfb3fd1,0x3c48f8c9,0xbcc50742,0xbd40aaa9,0xbd6996a3,0xbcfa7178,0xbcf54dca,0xbd4450a1,0xbba30144,0x3c7a1f88,0x3cc938b2,0x3ca147a8,0x3c8a732a,0x3d0ed84d,0x3ce899b8,0x3cb7850b,0xbba9d86e, -0xbc5641f9,0xbc75b1ca,0x3b126742,0x38a45fc1,0x3ae390de,0xbaf4dcc5,0x3c1026f6,0x3c8013ec,0x3cb15f95,0x3cb89532,0x3ce9dcbb,0x3c9f33ee,0x3d032ed7,0x3d0a2526,0x3d19008a,0x3d0103fd,0x3cd99a47,0x3cfddc7f,0x3d01be6f,0x3aef49f6,0x3ab9d706,0xbbda4343,0xbc69624b,0xbb8ca8c6,0xbbd39871, -0xbb738c3a,0xbc6ee880,0x3be7a324,0x3cabf61b,0x3cff5c43,0x3cc48e70,0x3cd72f8e,0x3d02962a,0x3cd5f254,0x3c8f9129,0xba854d86,0xbb3e0f3f,0xbbe56315,0xbbe3c76d,0x3c1411e7,0x3c89b8b5,0x3cae1e65,0x3ca930c9,0x3cae5a28,0x3cd31070,0x3ccfed5a,0x3cad59f2,0x3c33530d,0x3c92cbdf,0x3c850fc9, -0x3c69abee,0x3c5942e7,0x3c552e70,0x3c4631b3,0x3c47a804,0xbbdc7727,0xbb9a49f1,0x3bb01467,0x3c06da0c,0x3c443fb8,0x3a8aca35,0xbc022e31,0xbc955494,0xbc8b3c64,0xbc7c95b5,0xbc408126,0x3ba7ee83,0x3c4a5096,0x3c88c743,0x3bffad7d,0x3bcfa477,0x3b0ddca5,0x3aec8a12,0x39a4379f,0xbb379a7d, -0x3bb35e68,0x3c4e69a3,0x3cd16604,0x3cd41178,0x3cddce8a,0x3cdafb91,0x3cb6e4cd,0x3c37fd8d,0x3c94fb34,0x3c2d2bd5,0x3c4abc9c,0x3c4177df,0x3c3aee4f,0x3b92b44b,0x3bb9a472,0x3b113b8f,0x3bebe028,0x3c449da8,0x3ac38736,0xbc055fa1,0xbc81dcb0,0xbc73bbda,0xbc7f00a4,0xbc8c547f,0xbc58620f, -0xbc2162dc,0xbc1da3c0,0xbc6ef055,0xbc97c296,0xbc75621f,0xbc506f79,0xbc31c4d0,0xbc2fef0f,0xbc316c1f,0xbc391b84,0xbbe5aebc,0x3c7ee26e,0x3c2d9a2f,0x3c0ce451,0x3bd3d4b4,0x3c6964f0,0x3c4b08e2,0x3c9d5001,0x3c9d93ca,0x3caeb4a8,0x3cbb35d9,0x3ce00678,0x3cbaa823,0x3ca9bc19,0x3ca71bcb, -0x3c5765a1,0x3c69aa06,0xbbb0bef2,0x3b73d427,0x3b76b114,0x3baf7a03,0x3b9a23cb,0x3b5827b2,0x399df4a3,0xbb1f6b20,0xbb5cda42,0xbb968c46,0xbb7c4586,0xba82b572,0x3b044f5e,0x3b135fae,0x3a8fe071,0x3a2965f2,0x3ad1b796,0x3b071788,0x3b3de688,0xbac27920,0xbb879d82,0xba97448e,0x3c51a4b2, -0x3988696e,0x37146a92,0x3c2d78fc,0x3c33ee59,0x3bdfa95a,0x3bb33e90,0x3b4606f7,0x38e637f2,0x3815e43c,0xbb8e9d2a,0xbb0c965b,0xb9d457df,0xbbf40ddb,0x3b784a69,0x3a304fb6,0xbc10a24a,0xbc904648,0xbbb36fd6,0xbb95e6e7,0xbba9ebc0,0xbb18ee60,0xba5bdefe,0xba9d2b84,0xba1bd71d,0xba7b9c5d, -0xb9b823f1,0xb99ef81c,0xba610358,0xbb255b5c,0xbac420f1,0xba7eae42,0xb9e7c40c,0x38ec1641,0x3a4d9ca3,0xba34637c,0x3b9e4f19,0x3bde6384,0x3c215f78,0x3b7847dc,0x3bf01c1e,0x3c43fe5b,0x3c203b37,0x3c15f985,0x3c110c39,0x3c1a6728,0x3c10800c,0x3c10eb15,0x3c089323,0x3b269989,0x3c70338f, -0x3c3c358d,0x3d2b2088,0x3ac7d87c,0xbcbe5eb8,0xbc9f2f4f,0xbc89d7ab,0xbb81372f,0x39c311b9,0xbac88e3a,0x3c0ce4bc,0x3c0a6d27,0x3b445de4,0x3a8ab015,0xbb2765b7,0xbbebf099,0xbb78dc7c,0xbb2458c4,0xbaf24ff9,0x3ac72784,0x3aff311f,0xbb09d0c8,0x3c23054e,0x3bf0b4ea,0x3bd68e3a,0x3c1acf30, -0x3c14869d,0x3c839503,0x3c101c00,0x3c03af8e,0x3bae8774,0x3bc7714f,0x3b25e67b,0x3bfbf147,0x3c45af6c,0x3c00f8b3,0x3c426770,0x3b0c1cf3,0x3c98d23a,0xbd6445f7,0xbd2fcefb,0xbd3f87c5,0xbd3002fe,0xbc9c6011,0xbb12fd2a,0xbba18648,0x3b5faa93,0x3b57f15a,0xb8ad0d12,0xbb19ba9e,0xbbe8c21b, -0xbc855a12,0xbc1e5020,0xbbada8bb,0xbafc2a78,0x3b9893b1,0x3b6589df,0x3bd93610,0x3ca238a4,0x3c5a31a2,0x3bdee8bc,0x3c848f03,0x3c8c53d1,0x3cb79c9b,0x3c73577b,0x3bfb632c,0x3c33330a,0x3bbad60e,0x3c2484e1,0x3c60d43f,0x3c3a358c,0x3c7fb8df,0x3d057c28,0x3badd83e,0x3d718ca5,0xbc4f0296, -0xbdf3ac78,0xbd992462,0xbda1a232,0xbca5e214,0xbad2d44b,0xbc37aa97,0x3ce12aba,0x3cdbdb1b,0x3ba52b18,0xb6c9708e,0xbc43486d,0xbcf0116a,0xbc67db02,0xbc19f474,0xbbc97d89,0x3bc33426,0x3bc401ad,0x3bb920e2,0x3c8e5a46,0x3c1f42d7,0x3c1f99e5,0x3c7a5365,0x3cd11078,0x3d137496,0x3cad4db9, -0x3c4fa201,0x3c140211,0x3c2b0ef7,0x3c4b8bbd,0x3c5784cb,0x3cecf5d0,0x3ce845c5,0x3c9cf381,0x3b2db7ac,0xbb37b96a,0xbd89c9d4,0xbe2c53e8,0xbe0be035,0xbdfa7e43,0xbd619a8a,0xbc891aaf,0xbc8ca193,0xbb773f66,0x3c0a4f9b,0xba34f8d3,0xbacb454d,0xbc5b2b79,0xbd0c9ae7,0xbc9ec30b,0xbc2cfbae, -0x39df21da,0x3c44bf9e,0x3c1f332d,0x3c81e6aa,0x3cfdb27a,0x3ca5914e,0x3c630d5f,0x3c882256,0x3caaf60c,0x3d2ca824,0x3cbe56b1,0x3c844245,0x3c41dda9,0x3c9f6d44,0x3c8a0636,0x3c5805c4,0x3ce785ae,0x3cd18bce,0x3d03938c,0x3d27609a,0xbd980f14,0xbdb25d0a,0xbd70600a,0xbce81fb1,0x3dd5cdb2, -0x3d879a99,0x3da4e256,0x3e18b5c6,0x3da5dc74,0x3c88c47d,0xbc69aed5,0xbd4c9466,0xbd7bfff0,0xbdb21583,0xbd8fb523,0xbd7807a4,0xbd8bc2a6,0xbcfb37d2,0xba184c20,0x3d2f6e16,0x3d06e58a,0x3c9be71a,0x3c2f17ad,0x3caa7334,0x3cc59c10,0x3d1ef98f,0x3c4ed4d6,0x3c90b08d,0x3d3a5a95,0x3d4808c8, -0x3d1e3d78,0x3bacef25,0xbcb87669,0xbcbf6114,0x3c0631bd,0xbd7fec6a,0x3c9fc8d6,0x3c50ccfe,0x3da96d66,0x3dc853be,0x3dd3988a,0x3d959daf,0x3d9a7951,0x3d626715,0xbc64810c,0xbd3f1c1a,0xbdb63862,0xbddceeee,0xbddcee46,0xbdb5bcb7,0xbd8b5ef2,0xbd32f7f2,0x3c95f8b4,0x3a8cb464,0x3bba765d, -0x3ca36481,0x3d0dbe94,0x3cfe53f2,0x3c63a94f,0x3ca22a8e,0x3cb54afe,0x3d298907,0x3ce1ee90,0x3cd371c0,0x3c667de4,0x3d57a761,0x3d3f6eb5,0x3d0fc693,0x3d789aec,0x3d4f4475,0x3c21f234,0x3cc45ce2,0xbc9f87bf,0x3c00be0f,0x3d8adc7f,0x3cd4ac7d,0xbd9689d6,0xbd2163fa,0xbc847945,0x3c645f36, -0x3d19e8bd,0x3d173b08,0x3c40cb40,0x3cf9cc91,0x3cc94114,0x3ad884d4,0xbcf2b8c1,0xbd2045db,0xbd424507,0xbd177c85,0xbccdd34c,0xbc54800a,0xbb8e760e,0x3c3e22b3,0x3c888390,0x3cbd1744,0x3cf1becc,0x3db05b59,0x3c8d8604,0x3b8ae1ba,0x3a9ca038,0x3cc12553,0x3cdcf67b,0x3d8f86be,0x3c1bfc22, -0xb8018662,0xbc806c41,0xbb0f9216,0xbcf9e8ef,0xbc59cbc3,0x3d0cf604,0xbc5fcf60,0xbd883309,0xbddc8364,0xbe074b75,0xbd98a3cf,0xbd89822d,0xbc91ef0b,0x3d1bcf0a,0x3d7ddd9d,0x3da648f8,0x3db651df,0x3d7ff146,0x3d004619,0xbc8ada0a,0x3c837907,0x3cb61253,0xbbdc6566,0xbc1ac83a,0xbc338c12, -0xb9642de2,0x3b550e9b,0x3c8225b7,0x3db146df,0x3c436396,0xbbaa137e,0x3c67e753,0x3b0901ed,0x3c915300,0x3d939a3b,0xbb50675c,0xbc542cc6,0xbcf7f7d5,0xbc57801d,0xbcaef4c1,0x3ccfb228,0x3c162500,0xbc452f33,0xbc9378f3,0xbd574f1f,0xbd4485e7,0xbce4ebd2,0xbd31eb65,0xbcc40d8c,0x3cce47a1, -0x3d57395f,0x3d9094b6,0x3daa5d08,0x3d9d6abc,0x3d89a7f1,0x3d546c75,0x3d81e65e,0x3d815603,0x3ccb0ae2,0x3c334db3,0x3c78fe4d,0x3bd90cf7,0x3c454a13,0x3c9fedf8,0x3d565f30,0x3c9a7bce,0x3bc16068,0x3d19333f,0x3c214061,0x3c2fb47a,0x3cd1bfba,0x3c25e779,0x3c63ad43,0xbad81829,0x3b6a1b52, -0x3a3d49e8,0xbc17b8ea,0xbb9873de,0xbc9f6a6b,0xbd5fbe17,0xbd90505e,0xbd6b5b85,0x3c23532e,0x3c80d833,0x3cbda895,0xbb03724a,0x3b0d19fd,0xbbc83b5d,0xbb967363,0x3c8896fd,0x3d02dfad,0x3cf13db1,0x3d0f427f,0x3c5ab7b3,0x3c41b646,0xbc122a6b,0xbb7cb006,0x3c335534,0x3c263e88,0x3c8d884c, -0x3c90851b,0x3ca8a29b,0x3c7c72f1,0xbaf5a028,0x3c01d570,0x3c3e4ea8,0x3cdfc41f,0x3c6bc8b2,0x3a4337b3,0x3c2a5daa,0x3b9d855f,0x3c30f1e6,0x3cd1064a,0x3c19e385,0xbb0c17b8,0xbd176682,0x3b72454f,0x3c3e7fde,0x3bd1da04,0xbc853a09,0xbc821c19,0x3c3846f2,0x3cafd029,0x3c6be312,0xbc15d22d, -0xbc170911,0xbad3be37,0x3c684b45,0x3ca4c9b0,0x3cfa21c7,0x3cd792ff,0x3c44c338,0x3c8fbd88,0x3c94fe6a,0x3cac1132,0x3c8a1bdd,0x3c86e630,0x3c13d53e,0x3c5c3df7,0x3c612ac9,0x3cc119dd,0x3c89c215,0x3c458586,0x3c32fdf0,0x3c3ef070,0x3ca6df34,0x3c12ad92,0xbab4362b,0xbc3e7ce6,0xbc51bc90, -0xbc885a3d,0xbcb09780,0x3b19a6f0,0x3bdacf54,0x3c4ffd24,0xbbc6b174,0xbc92050f,0xbcd7064a,0xbca3fe75,0xbc58c0df,0xbc82981d,0xbc7e2132,0xbc3dba88,0xbca65031,0xbc5baef0,0xbbca49dc,0x3acd7858,0xbbe09c9b,0xb8b9e472,0x3bae70e3,0x3c6d32be,0x3c8a4e45,0x3c8dca54,0x3c8bf3b2,0x3c55535b, -0x3c104f04,0x3c46b3aa,0x3c790fe6,0x3c791edd,0x3c46f0bb,0x3c317eba,0x3c7ba808,0x3b3db9d4,0x3b6239a6,0xbc291391,0xbbd1d33a,0xbb01e87f,0xbadbd7a5,0xbaa5ce65,0x3b9f8d9a,0x3c967e62,0x3c40d913,0x3ba7393c,0xbc2e0d2f,0xb9e8dd65,0x3b82a72a,0x3c8aa588,0x3c05a2a2,0xba9162b2,0xbc05b138, -0xbbf0842d,0xbc524932,0xbc0fde68,0xba80520b,0x3be217aa,0x3bd0b1f3,0x3c31d030,0x3c654ff8,0x3c908ba7,0x3c7746ce,0x3c571b41,0x3c5dcc1c,0x3c48e62a,0x3c5ca475,0x3c84dadb,0x3c9144ba,0x3c65636c,0x3c809b75,0x3bca718d,0x3cf690b6,0x3ce196af,0x3cccc895,0x3cb6d136,0x3ca4fb4c,0x3cc1d1a6, -0x3caa1f49,0x3c885548,0x3c51b2fc,0x3c6646c2,0x3c826a4e,0x3c32907e,0x3b6b18fa,0xbb930d3d,0xba578e9c,0x3bd16301,0x3c195897,0x3c4c3d78,0x3c9ca771,0x3c84a3ac,0xba902c34,0x3bdfd264,0x3c2d3319,0x3c6553ae,0x3c5edd7d,0x3c91d4d8,0x3c93cb2d,0x3c999dbb,0x3c9fa786,0x3cabf6fb,0x3c3ef761, -0x3cca6928,0x3c89edd6,0x3c9a65de,0x3ccb5ca4,0x3cb6376b,0x3cb1ad9c,0x3c93a6fb,0x3c9f5ec3,0x3ca6b21c,0x3ca644d3,0x3ca22b5b,0x3ca4e14c,0x3cb62e9f,0x3cb3bea1,0x3ca12481,0x3c8f2485,0x3c89ec1a,0x3c948182,0x3c964581,0x3c9e6dc2,0x3c9492d4,0x3c94af22,0x3c900b41,0x3c85a2b7,0x3ca7795e, -0x3cb045ee,0x3c902be5,0x3be40b07,0x3cc16d9b,0x3cac66ad,0x3c48ffee,0x3c5d314c,0x3c69e850,0x3c751f2f,0x3c91cbea,0x3c9a4995,0x3c8dca5b,0x3cab2852,0x3cb5cf1e,0x3c5e9214,0x3caf37a8,0x3d22eb02,0xbc2b0fea,0xbb73c46b,0x39b9abba,0xbb447d14,0xbb5c3140,0xbb67a24b,0xbbd6fdf2,0xbc0b96bd, -0xbc044874,0xbc02cc60,0xbc091ecc,0xbc191536,0xbbf85efc,0xbbc873cb,0xbb952895,0xbba66d49,0xbbb8d2df,0xbbd2172d,0xbbbefb27,0xbbbb462e,0xbbde7d1a,0xbbac5fd4,0xbb89aec9,0xbac135b6,0xbb54be9f,0xbadad930,0x3ac033b6,0x3a472cd1,0xb99cd01d,0xbabce175,0xba8fdb97,0xb9e1304a,0xb87880ba, -0xbb82585d,0xbbb48f9a,0xbb5d86ee,0xbbe7a457,0xbd250758,0xbd1a2321,0xbc991558,0xbca507d6,0xbc971d22,0xbc7b83cb,0xbc72bde0,0xbc5e2998,0xbc8a940d,0xbc93e42c,0xbc8ccd8a,0xbc7b05eb,0xbc5d2f0c,0xbc25673b,0xbc36504e,0xbc1f031e,0xbc21e96d,0xbbda2c40,0xbbba12c0,0xbc08862f,0xbba8fcbb, -0xbb94d8c6,0xbb99efe3,0x39fe429f,0x3af03fcf,0x3b8a8efe,0x3aa204b4,0x3a3dfd69,0x3930506c,0xba748788,0xbade70a3,0x3b0378a3,0xbaee4808,0xbc008377,0xbc7569cf,0xbc98e765,0xbd384c18,0xbc9163b2,0xbc680bab,0xbc26ddea,0xbc1e1729,0xbc366967,0xbcbfa38e,0xbca6dcbc,0xbcd8ef64,0xbce6ed55, -0xbd055a60,0xbcb74de8,0xbc7b76b8,0xbbbf140c,0xbbf8a830,0xbc0f64cc,0xbc345caa,0xbba07f56,0xbb87bb68,0xbc0a09a1,0xbb9972a2,0xbb21f36b,0xbbb8678a,0x3c0e094b,0x3c4f28cd,0x3c1e1e83,0x3c23453f,0x3bd09826,0x3b9df83d,0x3b84c6ce,0x3b814467,0x3bdb965a,0xbaa42bcc,0xbbf83077,0xbcaa11a7, -0xbd076de4,0xbdf88f42,0xbdceb9fc,0xbd04176c,0xbd63cdc5,0xbd21146e,0xbcb915b7,0xbcdccd73,0xbcd67801,0xbd36ea6f,0xbd525ae5,0xbd3ad3e2,0xbd2b1b2f,0xbcfe7eba,0xbca8f12a,0xbcb20822,0xbc9263b6,0xbc7d13cc,0xbbdbef74,0xbb351b4e,0xbc06aa28,0xbbb1597b,0xbb10feb4,0xbbed4de2,0x3c8cc3c7, -0x3ccb82a5,0x3cb4d568,0x3cae88be,0x3c609ab8,0x3c4f9089,0x3c5f719c,0x3c3451bf,0x3c3fe58c,0x3b49ed24,0xbc72c1ec,0xbd30b459,0xbd624c18,0xbdbf6e5f,0xbdaec735,0xb9ce8c38,0xbbb1c7bf,0x3c440a21,0xbb596bf1,0xbd06ffea,0xbceea7d8,0xbd3f8d05,0xbd641aec,0xbd8bddf4,0xbd3c473b,0xbce9886c, -0xbbabebd2,0xbc66587b,0xbc38fb0e,0xbc6ccb0f,0xbab05e83,0xbb1ee557,0xbc53fbd6,0x3bc27d30,0xba1d14f8,0xbbb4538d,0x3c83815b,0x3ce39995,0x3d071dd6,0x3cc88688,0x3c8f32d8,0x3c7d79d0,0x3cbe5fdb,0x3c855beb,0x3c034e5a,0xbbc545c3,0xbcb3e557,0xbd252372,0xbdc2bfbc,0xbd0dde6f,0x3d16ac3c, -0x3dbff383,0x3bde1767,0xbe0ae924,0xbe32a9f8,0xbe3ed6bb,0xbdf56e2d,0xbe1ed648,0xbe2722ba,0xbe3f9273,0xbe260c79,0xbe0fd71c,0xbdcf6e34,0xbd5b9884,0xbd09d0fc,0xbdc1e22b,0xbd3d4184,0xbcec7cd6,0xbc5e0a6d,0xbaccf116,0xbc00be69,0x3c68d5ab,0x3c203273,0x3c8ac923,0x3d107d06,0x3ccb87b6, -0x3ca72cbf,0x3cc91d5b,0x3c630f65,0x3c2a6119,0x3c5cd985,0x3b54d41b,0xbcc57a32,0xbd3c21b0,0xbd1598c8,0x3dc17338,0x3dfcb4ac,0x3e28018b,0x3ddc3496,0x3d640675,0xbdac256f,0xbdf0da5f,0xbcf18de5,0xbd4cda06,0xbbeabd5b,0x3ccc4f1b,0x3d1da6e4,0x3d09cd15,0x3d0b4389,0x3cf86654,0x3cdcfca2, -0x3cd262b1,0xba11b082,0xbcc28680,0xbc0d6d0d,0xbb51f3b2,0xbc4bbe92,0xbbf69081,0x3c0b231b,0x3c8f86eb,0x3d0ae118,0x3c83a9f4,0x3c54ae1d,0x3c9c2eea,0x3d07da88,0x3cf283ca,0x3d05f1ff,0x3caba62c,0x3d2539b4,0x3da287e2,0x3d9550a9,0x3db4e2b5,0x3d98482e,0x3dbb486e,0x3db08907,0x3d80297d, -0x3a17d451,0xbcf79d5b,0x3d0e24ed,0x3bc16512,0x3c8f7dc8,0xbab4c171,0xbc0dc770,0xbb6abaf5,0x3c2cafe9,0x3d0d3291,0x3d2834ac,0xbc19e704,0xbb08f9a1,0xbc1de138,0xbc4e5474,0xbbd69b4b,0x3afa04d6,0x3c170b13,0x3bf88311,0x3c8fe613,0x3d7e13df,0x3cac035c,0x3bfd0fec,0x3c25452e,0x3c625262, -0x3cb7078a,0x3d90b718,0x3d4639bb,0x3d30c9f7,0x3d3462cf,0x3d0ff317,0x3cdef6ef,0x3c8a1d92,0x3cad903e,0x3d2ecb79,0x3d136828,0x3d0834b0,0x3cd52de0,0x3d81bffb,0x3d1b35cf,0x3c4c7eb0,0xbd362b43,0xbd4b96f8,0xbd66cacd,0xbd7fd05e,0xbd164534,0xbcd56ebd,0xbcc22150,0xbbfa492c,0x3b3fd207, -0x3c3f1508,0x3cad2f75,0x3cb30f81,0x3cd19538,0x3ccb8ef8,0x3ce6981d,0x3d78b959,0x3c9ae5bd,0xbad42352,0x3c8bbb82,0x3b5ee225,0x3cb109dc,0x3d7adcfb,0x3cee8ba0,0x3d0da88b,0x3c00b25d,0x3c841ca4,0x3d0901cb,0xba97bbf3,0x3cc6db71,0x3d1389ce,0x3d669b20,0xbc41cca4,0xbcc2631f,0x3c0ce211, -0x3cbd4bbd,0x3d258413,0x3d51baeb,0x3d16f3da,0x3cbabb79,0x3b5c9e95,0x3b8ab8b3,0x3bc9d3b2,0x3c62508d,0x3c659609,0x3c53e65c,0x3ca0989b,0x3cb43b67,0x3caa409d,0x3cff9f1a,0x3d23baa5,0x3d096dd4,0x3d19d1af,0x3c089614,0x39a1e51c,0x3cabc016,0x3bfc4906,0x3c76f1c5,0x3cd7f090,0x3cc60dbd, -0x3ce8c432,0x3ca4fda7,0x3cc8cbe6,0xbb189921,0x3c9bd526,0xbbae6032,0xbbf50013,0x3cf33309,0x3bf0eced,0x3be36934,0x3c6dec65,0x3b92c6c8,0x39a2e0f5,0x3c900886,0xba7bfdaa,0xbc67f7a2,0xbcfbb44a,0xbcaab9e8,0xbc9a7e97,0xbd1cf3c8,0x3bf34d7b,0x3c4294ad,0xbb8b3c3b,0x3c86ee26,0x3c353299, -0xbab11c20,0x3c59421b,0x3c856f06,0x3cc0d63e,0x3cdeaabf,0x3c96a633,0x3be0c67d,0x3c58e1ab,0x3cb0ced2,0x3d0491bb,0x3ca6f557,0x3c85666b,0x3beb9f9a,0x3ada4dac,0x3cac5bca,0x3a9d3bec,0x3caa69f8,0x3c8f3b26,0xbb148025,0xbcdea0ce,0xbcdae46d,0x3c56eb5a,0x3b017b17,0x3b866a8c,0xbb7970b1, -0x3c41bb11,0x3c7c71ff,0x3cd0602d,0xb9430a2d,0xbbf908b9,0x3aab9944,0x3c15cbce,0x3bb0130d,0x3c1ac840,0x3c54dcfa,0x39dcf877,0x3c202114,0x3c67a594,0x3c996dc4,0x3c156b1a,0x3bf3d5de,0x3c11fd1d,0x3c4b3e7d,0x3b1a3607,0x3b882a97,0x3c99c67c,0x3c25da7a,0x3c5554fa,0x3c603595,0x3caeec18, -0x3c989062,0x3cb7fac1,0x3c9e8f07,0x3b29f8b1,0xbcdbfd4a,0xbc8ced08,0xbc02d1ac,0x3c7e7867,0x3c32d3d2,0x3c7035ff,0x3c6ee97a,0x3c420553,0x3b86367c,0xbb535081,0xbc90b7e3,0xbc86e61d,0xbbb5e260,0x3ad43340,0x3bb3532b,0x3b426bdc,0x3be162db,0x3bde0a0e,0x3bdedb0f,0x3c080a5d,0x3c43d8ce, -0x3c270cb6,0x3c59825d,0x3c37447c,0x3c3615ed,0x3c7261c5,0x3ca5112a,0x3cf91243,0x3cd2ff6c,0x3cc73006,0x3cdf74e5,0x3cd2aa34,0x3b72b5b7,0x3c5c8ffe,0x3b5dda54,0xbbd95566,0xbc2fae69,0x3aada5d2,0x3be79be6,0x3c442406,0x3bf4883d,0x3ba78389,0x3bbd3011,0xbba603fc,0xbc234084,0xbc98bea5, -0xbba65bad,0x3aaad737,0x3a35381e,0xb91fad7e,0x3b03801a,0x3bab7646,0xb94380b0,0x3b138b7d,0x3a64995f,0x39f2955f,0x3b0fe87b,0x3b9d61c0,0x3bbc4a2d,0xbb5abe24,0x3ba7d393,0x3bd174a8,0x3c76f659,0x3c8c72e7,0x3ca0f2a5,0x3c9b256f,0x3c8d51d4,0x3c3127f2,0xbb7d4fa0,0xbc59aba6,0xbad1c3ed, -0x3c00a6c3,0x3c62caa4,0x3c7a41c0,0x3c914706,0x3cc8d98a,0x3c9edb23,0x3c6be522,0x3c17d082,0x3c0471c5,0x3bd693aa,0x3b842dba,0xba2a6637,0xbb109429,0x3ac3aca0,0x3b69c315,0x3b35c662,0x3b8d873b,0x3c789290,0x3bea8c17,0x3bb526ac,0x3b452c73,0x3b3ad69e,0xbac26d7a,0xbaf9a294,0xbb945c2e, -0xbb74ffe4,0xbc3e0844,0xbc95947a,0xbc9864eb,0xbcb171db,0xbca03b2b,0xbc3870cb,0xbc8439ba,0x3bc36a4b,0x3b395634,0x3b8f4de6,0x3b70123b,0x3ba0c14c,0x3be322d9,0x3c0a8888,0x3c22a299,0x3c0a85b2,0x3c0ffe7c,0x3c0ba72b,0x3bf0442f,0x3bbb423e,0x3ba7e893,0x3bda286a,0x3be29831,0x3bb40e03, -0x3b8c81d9,0x3b97ee93,0x3b0dac9e,0x3b87b7ec,0x3c231868,0x3ca693a1,0x3b87fd6b,0x3c0c1a0f,0x3ca023cd,0x3ca7cca7,0x3c93ef1c,0x3c8ace26,0x3c9b2a80,0x3c988f4c,0x3c90071b,0x3c28a84f,0x3bcfd035,0x3ca36ad6,0x3c345632,0x3c2f27ef,0xbc7a337f,0xbaf1cc60,0xbbc0163d,0xbc2b621d,0xbc4fd6fe, -0xbc82018f,0xbc8cba9f,0xbc92c6e8,0xbca60a4f,0xbc709011,0xbc6444cc,0xbc8b670d,0xbc72dfd2,0xbc5d01ee,0xbc420cbc,0xbc3b6540,0xbc35eeb3,0xbc1f5d3f,0xbc211815,0xbc1a9dad,0xbc1670bc,0xbc069e8b,0xbbead376,0xbbb5e06f,0xbbce4c5c,0xbb9fec4a,0xbb7d3070,0xbb6f6b8a,0xbb7f0b64,0xbb8494b2, -0xbb722f0c,0xbb80bcf0,0xbb5efd6c,0xbb9280e5,0xbb95df53,0xbbb71c45,0xbbbf0a1e,0xbc96d748,0xbb5bb1df,0xbb0b37c0,0xbbc1706f,0xbc8f06fa,0xbcf1018e,0xbd12f4a6,0xbd2ecdfd,0xbcb2e1f2,0xbca43990,0xbcd04865,0xbc8828ac,0xbc835614,0xbc6a99fe,0xbc697e2b,0xbc6db21b,0xbc24ad14,0xbc371512, -0xbc2b5c18,0xbbfa4a5d,0xbbebaf60,0xbbf23644,0xbb665799,0xbaea773a,0xbb25d889,0xbb1748fa,0xbb4bc71c,0xbb1e2f3e,0xbb28ba01,0xbbbef13b,0xbbe364db,0xba93ebfa,0xbb29b93a,0xba6506f6,0xbb2768ec,0xbc154aeb,0x3bc3c5b5,0x3cac5b3f,0x3bbc2d8b,0xbb0765e8,0xbccdf107,0xbd6addeb,0xbd80dd92, -0xbd9c10ce,0xbd13167d,0xbcd55603,0xbd2c59bc,0xbcfc3418,0xbcc2ecc7,0xbc7c85fe,0xbc8f029e,0xbc663981,0xbbfcc291,0xbc15cd97,0xbc0567b6,0xbb5fe0a8,0xbc0153f7,0xbbb86101,0xba1696af,0x3bf2b424,0x3c107f7f,0x3b606a18,0x3bd9cf42,0x3b1a07fb,0x3bd6b974,0xb9d63a0c,0x3b37bb73,0x3c0ede34, -0x3c438365,0x3c3753b5,0x3c09a6c4,0x3c3e4912,0x3ab78264,0x3ce85ccc,0x3d57323b,0x3cf5266b,0xbbd664b6,0xbd911a96,0xbdaaae2f,0xbdda8b36,0xbd29efb4,0xbcb43aa0,0xbd3cbf25,0xbc9ce4a2,0xbc9acecd,0xbbd0cc67,0xbc8117d4,0xbc4bc2a2,0x3a6c4089,0xbbedf508,0xbba87367,0x3b6ca6b4,0xbb68a5f1, -0x3a0c2abf,0x3bf28b43,0x3c8752f0,0x3caff152,0x3c732d28,0x3c8b051d,0x3c5afaae,0x3c836120,0x3bcc7095,0x3be55699,0x3ca62c7f,0x3c619e3a,0x3c37d055,0x3cdb35e5,0x3bd14390,0x3d252d25,0x3d8acb1e,0x3d83adfd,0x3d2eeea8,0xbcb64ee1,0xbdd4f1d5,0xbe02b335,0xbe0d28cd,0xbd79d0b8,0xbcfc4619, -0xbd865d80,0xbd33e22f,0xbcf01018,0xbc55e509,0xbc81b6b7,0xbc3ff847,0x39be3dd1,0xbb83ffef,0xbab7a118,0x3b4a4600,0xbc64b0e5,0xbb4d54d7,0x3ae1896a,0x3cc03ba5,0x3cf1847a,0x3cee72c2,0x3cd17590,0x3c90dabf,0x3cb6843f,0x3c7c3cc6,0x3c7a508c,0x3cd435cb,0x3d052aeb,0x3d1f348c,0x3d48ce8a, -0x3d3ad555,0x3cb0b152,0xbc11280a,0xbdb9493c,0xbdad9f3a,0xbd8a11a1,0xbd4c604b,0xbc5e930f,0xbc782492,0xbce8c932,0xbcf202b3,0xbcdcd350,0xbc395fe4,0xbc73f920,0x3c7243a9,0x3a3c9b58,0x3c4a6942,0x3d01221b,0x3cf22cd3,0x3caef048,0xbb6f2802,0xbc4db1be,0xbab3d70b,0x3bd5f0c9,0x3c9b4ee2, -0x3c963758,0x3cb9c950,0x3ce9aee3,0x3cecd727,0x3c87d6cd,0x3d14cb83,0x3d275fea,0x3c256065,0x39d75a68,0x393ec2e5,0xbb1c5ad4,0xbc082ed4,0x3db7c60b,0x3d5719bc,0x3cd84d36,0x3d3862f3,0x3dec2fb7,0xbc94ee09,0xbdc80028,0xbdb2fa12,0xbd77790e,0xbd371109,0xbde7a1fe,0xbd97962f,0xbd3208ba, -0xbc9216fa,0xb895b2c1,0xbc1843ea,0xbceeb171,0xbc29f983,0xbc082371,0xbd1d2867,0xbcfe6f5d,0xbca054e5,0xbc070f26,0x3c0b0aab,0x3c93486a,0x3cd819f8,0x3cac3207,0x3c7cfbc2,0x3b3a1403,0x3ca61047,0x3cbbe860,0x3d624be8,0x3ce59b89,0x3d0536bd,0x3d8833c0,0x3db5c913,0x3b7c99b5,0xbb9a3aef, -0xbce67d1b,0x3b4d3cd0,0x3d8ee8b2,0xbc8fb10d,0x3aa25744,0x3cd33517,0x3c4c6912,0xbcd6cef1,0xbda25bf4,0xbdcbbb32,0xbdc8ad00,0xbdd3a913,0xbddffb1a,0xbdaad473,0xbd914416,0xbd3bdafb,0xbd31d06e,0xbc9dd256,0xbbe004c3,0xbc016c29,0xbc3d5efd,0x3c8b265d,0x3cc7e309,0x3cd31976,0x3c8bd1de, -0x3a83192f,0x3c4324f1,0x3b75289b,0x3c9d7519,0x3d9a9c43,0x3d33ff5a,0x3d3b3c9c,0x3bde3f20,0x3cb6026f,0xbd17fd8e,0xbcdaee42,0xbc6faaba,0x3b0aeac1,0x3bd7dc7a,0x3d012c25,0x3dafa8f8,0x3da26602,0x3dfd6bab,0x3de4347e,0x3dab4b41,0x3d2de1ff,0xbbd3f752,0xbd05018b,0xbd6475c6,0xbd70184e, -0xbd28c38a,0xbd5b1caa,0xbd44b24f,0xbc233190,0xbb992649,0x3c2e937d,0xbba26621,0x3d2ee1e3,0x3d1620ba,0x3cce839f,0x3c9f7ba5,0x3b458ba8,0x3cb828ef,0xba1af49a,0x3c8036a0,0x3d2ce8d8,0x3d458f64,0x3d0bdfa2,0xbb9e9389,0xbcdb43f5,0x3a96c8db,0x3c09498a,0xbbe36126,0xbcadc1a8,0xbcd788d9, -0xbcb4e45f,0xbc252ed3,0x3cfc6bfb,0x3d8dabab,0x3ddaadea,0x3e022a3e,0x3dd2e4e0,0x3da2899c,0x3d8d70b8,0x3d35b90b,0x3ce771d3,0x3bfeaba0,0xbb91569f,0xbc5275b4,0xbc88a1c7,0xbc9af7a7,0xbc159081,0x3b566d6f,0x3ca1c431,0x3c86d386,0x3c4cda4d,0x3c910698,0x3c92148e,0x3cbdce6e,0x3c8ea0be, -0x3cb0a90a,0x3c3c9a57,0x3c1fb678,0x3c62e9ae,0x3cb43842,0x3c670d9b,0x3ac30ecc,0x3b7bb58a,0x3c1684ac,0x3bdbb2ed,0xbc80bad5,0xbcebd79b,0xbc4bd36a,0x3cce2c81,0x3c988701,0x3cd8722b,0x3d253a5d,0x3d914d61,0x3d92bf0c,0x3d871a78,0x3d0a7eec,0x3ca77afe,0x3c287693,0xba978379,0xbbf4821a, -0xbc9c988e,0xbc14068b,0xbc4890eb,0xbbc07d95,0xba10ed0a,0x3ba581e2,0x3cb9a3fa,0x3c398c87,0x3bede231,0x3c376c81,0x3bef38e8,0x3c6a9166,0x3d0d7358,0x3cdac1f2,0x3c7fb99d,0x3b652c93,0x39dbdd6e,0x3b2e6879,0xbaa6841b,0xbc7c356c,0xbc720099,0xbbb77083,0xbc3e34d3,0xbb9a9e15,0x3cbc5c0b, -0x3d48bb23,0x3d6ed4b9,0x3d32209f,0x3cea14c4,0x3cf06eab,0x3d02c0b6,0x3d4c1edb,0x3d32294a,0x3cc38f03,0x3c255275,0xba0478e6,0xbc21deb2,0xbb9b4e0e,0x3b9d82d7,0x3b9beda5,0x3b97bcfb,0x3c48bd63,0x3ce4cbaa,0x3c96d712,0x3c5a0fcc,0x3c1eb7b9,0x3c0dfe02,0x3c0b45fe,0x3b96c56e,0x3ba7469c, -0x3b46b908,0xbb4b8eeb,0x3b45eae5,0x3c49bd6e,0x3be944fd,0xbb62829e,0x3ad2d991,0x3b4b5752,0x3c213af4,0x3c9f1614,0x3cd51a6d,0x3ccabc91,0x3c8dc01f,0x3bef28d0,0x3c5944dc,0x3c82a4bb,0x3caf541e,0x3cc2d023,0x3c928868,0x3c3e3227,0x3c75112a,0x3c917e53,0x3c85f05a,0x3c77842b,0x3c652499, -0x3c7c9ab9,0x3c0ed25c,0x3bd4edd0,0x3c217c80,0x3bdc45df,0x3c2c10bc,0x3c51a056,0x3c3d11a6,0x3c4a0984,0x3c9a83d2,0x3c236fb5,0x3c354506,0x3be2a651,0x3c0743f0,0x3c83cd16,0x3c5f6a33,0x3c4f1db2,0x3c7938b7,0x3c37a613,0x3cac7f38,0x3cc69106,0x3cf6f7d8,0x3cc392ef,0x3cc2c1d1,0x3ca7748e, -0x3c8aac3f,0x3c480cc3,0x3c2162e4,0x3b95dd8a,0x3a13a1b5,0x3a801263,0x3bf258eb,0x3cb02dab,0x3ca36502,0x3c5f0589,0x3c41a2b8,0x3c543292,0x3c1dd4cc,0x3bba35c9,0xbaa278c7,0x3b622927,0x3c7d7c4a,0x3bf9db61,0x3c593ce3,0x3bf6b5b8,0x3b96ab71,0x3af40e7c,0x3c2a0930,0x3be20c96,0x3c1966ce, -0xbbc8607b,0x3b6d5498,0x3c1fbe40,0x3c59944c,0x3c982cd2,0x3cc14027,0x3cd87168,0x3d0691bb,0x3d06f3a8,0x3cf8e54d,0x3ceab243,0x3cdfff89,0x3cca1f31,0x3c9bcb23,0x3cb7cdc7,0x3cc4de38,0x3ccace02,0x3c9f1c13,0x3c5a6670,0x3c34e36e,0xbb636d4d,0x3bb111b3,0x3b8d6d15,0x3c12f98a,0x3c08b7a7, -0x3c6a3f2a,0x3bf59693,0x3ab5dc1b,0xbb7563fc,0xbbb3922a,0xbbc87f00,0xbc1e0f8a,0xbb5a8172,0xbc078e28,0xbbed9204,0x3a97d61c,0x3c6693c6,0x3c63f333,0x3c5ce3ee,0x3c6050fe,0x3c5b308a,0x3c67f2be,0x3c6eea6c,0x3c78d621,0x3c64623f,0x3c6e628b,0x3c729f94,0x3c6e9405,0x3c79c7ba,0x3c8286c0, -0x3c7265f3,0x3c5d3f54,0x3c60c66a,0x3c7b92f1,0x3c876b4a,0x3cad44fb,0x3c9080a4,0x3c50149e,0x3b8d9aa8,0x3c750c35,0x3c33e51a,0x3b19f290,0x3a93ce95,0x3b8f433b,0x3bbb1b09,0x3ba99ccf,0x3bada4b3,0x3ba8d73d,0x3c3a4db9,0x3c5c1e9c,0x3bc442c1,0x3c38986d,0x3cad32f5,0xbc957cee,0xbca17e40, -0xbc9a8d7f,0xbc5e8e30,0xbc58cb7d,0xbc807936,0xbc60eef7,0xbc715405,0xbc914562,0xbc4da062,0xbc2ff93f,0xbc3bcfdf,0xbc35a624,0xbc3484b6,0xbc272698,0xbc338211,0xbc3c03d9,0xbc3b49b7,0xbc34aabd,0xbc2ee06b,0xbc2503e2,0xbc3c423c,0xbc386c58,0xbc0c6c5a,0xbc23aad9,0xbc1fcdbb,0xbc1270c1, -0xbc133b2b,0xbc12c29f,0xbc130c09,0xbc1ab2be,0xbc0ddd71,0xbbfb4f33,0xbc194111,0xbc3be8cf,0xbbcad9de,0xbc1ff142,0x3b9b57f6,0xbc3c2444,0xbcc63fe5,0xbcd28046,0xbd04b0e0,0xbcb7b61d,0xbca6571b,0xbcec4562,0xbc7697df,0xbc87794a,0xbca7980f,0xbca524cc,0xbc8fc6f4,0xbc4934a1,0xbc408d1e, -0xbc51ea35,0xbc57b0d6,0xbc4612cc,0xbc3ad163,0xbc2193a0,0xbc4771a1,0xbc383042,0xbc056ec3,0xbbfe3856,0xbbea8ccf,0xbbe712f5,0xbbd97b9a,0xbbe1269f,0xbc10b9a6,0xbc2e59c7,0xbc3647ec,0xbbaa5165,0xbba1391a,0xbbd96ad3,0xbbb6609b,0xbc4a18bf,0xbc2f54f7,0xbd2902de,0xbce373f9,0xbd0eecd7, -0xbd3bc6e2,0xbcfc61a5,0xbcd0eba0,0xbd38f3b8,0xbca923b5,0xbc6e2df2,0xbc9cc3c8,0xbc9b8f94,0xbc922473,0xbc1d1627,0xbc4be636,0xbc410dbb,0xbc633668,0xbc282d14,0xbc110117,0xbbc10dfd,0xbc137c35,0xbbbd6418,0xbb516def,0x3add9fb1,0x3b81d4ea,0xb99b93f6,0x3b8570e4,0x37e5982a,0xbb176ecf, -0xbba86a2f,0xbb1d02b7,0x3b9de0f3,0x3a0cec07,0x35090a40,0x3c2176e9,0xbc49d390,0x3cc316ff,0xbc046667,0xbd77466b,0xbd465443,0xbd9caaa9,0xbd16e0f4,0xbcd8c13b,0xbd43d93b,0xbcab8790,0xbca58583,0xbcfc2ac0,0xbcef905e,0xbcb79ad6,0xbbfab354,0xbbfa6dd2,0xbbadb690,0xbc308fd9,0xbb8ecf10, -0xbb67d612,0x3b058ede,0xbb44384f,0xba95b04c,0x3b8b2dd6,0x3c240b51,0x3c4f2dc7,0x3c3dbd10,0x3c715556,0x3c4f3232,0x3c04b9eb,0x3aaaf1d3,0x3b1fb128,0x3c1e4c8f,0x3ca25b0c,0x3cb5f254,0x3c60a847,0xbb922ba4,0xbbfa5a23,0xbd193ac9,0xbd90559b,0xbd80519e,0xbda5a3d4,0xbd1e3a0b,0xbd0e00cc, -0xbd884257,0xbcec2ff4,0xbc88411c,0xbca121ae,0xbca531b6,0xbc93ec26,0xbba16d67,0xbc0fb5ac,0xbc24d8b5,0xbc6d0825,0xbba8adf3,0xb9dd1f0f,0x3c3788a3,0x39df67b5,0x3bdf9bde,0x3c4e404b,0x3caebe9d,0x3cec29eb,0x3ce9fb09,0x3ce3b91b,0x3c962852,0x3c89561f,0x3c29bd1b,0x3c19829a,0x3cda2b67, -0x3cf91114,0x3cb56605,0x3cdfe575,0x3c9eb431,0xbde3ebe2,0xbd9343bd,0xbdbbcfdb,0xbd8c40b2,0xbc14bc23,0xbd835fe8,0xbd814df9,0xbd817969,0xbce452b0,0xbb7503a0,0xbbde691b,0x3bb8dc29,0x3c8e08cf,0x3b2c5c5f,0x3c160eaa,0x3c58727a,0x3d325734,0x3c923f40,0x3bcc0a88,0x3c9ce31b,0x3c142cf2, -0x3bc74de4,0x3c1a4d29,0x3cc5efab,0x3ca50055,0x3b037c8d,0x3ce3c542,0x3d042f82,0x3c6d7efd,0x3d138cc3,0x3c94fef2,0xbcf20e2a,0xbc133b55,0xbc598a81,0xbca3493a,0xbdd520b8,0x3d29764d,0x3d6355c2,0x3d21ae75,0xbbb44616,0xbdb4e827,0xbdafb476,0xbdc9e433,0xbe0e50be,0xbd1aaa8a,0x3c480b98, -0x3d040ea6,0x3c0133ff,0xbcb1b10c,0xbc72aa3b,0xbd47cd41,0xbd455905,0xbd640bc1,0xbcb7f5ee,0x3b2689fa,0xbbe30091,0xbc180396,0x3b75a510,0x3be6d08a,0x3cd2dc56,0x3d04910f,0x3cf1b6a7,0x3c83fa7e,0x3c08b897,0x3bff9ae5,0x3c8960df,0x3c935b90,0x3d475043,0x3c82a18b,0x3c031957,0x3c9e4de3, -0x3d1793fa,0xbbaff656,0x3d0460de,0x3d18cdf6,0x3cb86038,0x3db472c3,0x3d2b74e0,0x3d11e608,0xbc42b529,0x3c336538,0x3ce3c114,0x3d07557d,0x3cd662a3,0x3b642290,0xbb1b313f,0xbcbc5b27,0xbcf179fb,0xbcf54acf,0xbcf11a0c,0xbd0c098c,0xbcafd758,0xbca1264f,0xbc151784,0xbc15dd08,0x3d0d872c, -0x3cebcbe7,0xbb179aab,0x3bff273f,0xbbf25ce2,0xba17316a,0xbbd569d7,0x3c18021a,0x3d3160b3,0x3d225229,0x3d37d6cd,0x3b998050,0x3b3ddbfd,0x3b81f3b1,0x3c29a41b,0x3c69f039,0x3d2eb6dc,0x3e11a4a1,0x3da5bbf1,0x3da8f617,0x3d7e007e,0x3d973128,0x3d825e34,0x3d22227a,0x3d002b47,0x3cd035cf, -0x3b99bcf9,0xbb50a163,0xbc039337,0xbb9d108e,0xbc95bbc5,0xbcd22765,0xbcd3d48f,0xbd0529b4,0xbca58a85,0xbcd0623a,0x3d05b37f,0x3d01bbab,0xbc997a62,0x3c38a2a7,0x3ba0a58e,0x3c444451,0x3a76073b,0x3c95fd69,0x3ccd16ab,0x3d1b81df,0x3d2e7bab,0x3b1b76e7,0x3c405921,0x3c851933,0x3c51c24b, -0x3b4678f6,0x39c40c4c,0x3c8ec70c,0xbc0bfa34,0xbb62fb03,0x3d21e7c1,0x3da09dfa,0x3da58458,0x3cfb0ed9,0x3d412f44,0x3d11ef77,0x3d0bdd37,0xbc1eaf1f,0xbca4ec45,0xbc128046,0xbbdd3247,0xbb51835c,0xbc14c930,0xbc3bbfdf,0xbbacdd3f,0xbc373ef5,0x3cab7de3,0x3cc7499a,0x3b83b110,0x3c9e3a98, -0x3c8e6bd3,0x3cc564ac,0x3d0991d3,0x3d09dfde,0x3c06a7ed,0x3bcaec5c,0x3b766468,0x3b98f423,0x3c66c371,0x3bcc7197,0x3bd2638a,0x3d0c144b,0x3d2b2b3f,0x3d16b2bc,0x3bda9c4c,0x3c465aa1,0x3cebfe7b,0x3d0f18e5,0x3d089fa8,0x3b07511f,0x3c93b2de,0x3bb93b86,0x3d23090e,0x3ce299ed,0x3cca36d1, -0x3c885da9,0xbc529b7d,0xbca6ddbc,0xbb123c68,0xbb83936e,0x3b3a31c6,0x3bbf201d,0x3b6153d7,0x3b6996ab,0x3c054f71,0x3b03e054,0xb9af2dd3,0x3c3ee839,0x3b4f4f1c,0x3c12f25f,0x3ca0b329,0x3d0ac6ec,0x3d0d6492,0x3c930b67,0x3c184477,0x3c07e06f,0x3cb8f96e,0x3ce9d296,0x3c6ce09a,0x3b712cbb, -0xbcc8974a,0xbce6d210,0xbc6340e9,0x3b1304c5,0x3bf1500a,0xbc1ff94b,0xbbc62bf0,0xbaa8f97d,0x3b520972,0xba99e61f,0xbbba4a45,0xbc290874,0x3889180e,0x3bc8643c,0x3b2473fb,0x3bb586d4,0x3b9e4510,0x3b758ca1,0x3bda46e3,0x3bdb8950,0x3cad3d05,0x3c2df5a6,0x3c264a53,0xbaddce19,0x3bb9f20f, -0x3c091709,0x3bc49f53,0x3b3ffb36,0x3b1253c8,0xb986bd0f,0x3c451323,0x3b94bfe3,0x3c35a6fb,0x3c38a6c1,0x3ac12198,0x3b77ea68,0xbc491aed,0xbc80bc73,0xbca055b0,0xbbd8b30c,0xbb16a1d5,0x3aefbe3e,0xbc24dbb6,0xbc99e770,0xbcc85d37,0xbc23edcf,0xbb893dd0,0x39b0721b,0x3b24469a,0x3abb67c7, -0x3bd88a33,0x3c46f838,0x3c07f031,0x3b75e51e,0x3bb0ace2,0x3b9db680,0x3bf986ad,0x3c7488dd,0x3c7ec3e3,0x3c44f412,0x3c441c53,0x3c0baf12,0x3b9633e8,0x3c014753,0x3c0b2c25,0x3c056486,0x3c0b8ca7,0x398859d5,0xba9c429a,0xbb9d2752,0xbbfa643c,0xbc3efe2d,0xbc371df0,0xbc59ce7c,0xbca2977e, -0xbc13d09a,0x3b137156,0x3c92d5d2,0x3c5965ca,0x3c0918da,0x3b49123a,0x3bf150d1,0x3c3a75a6,0x3cba0373,0x3cac02ca,0x3c886f4a,0x3cbb46c7,0x3cb4998c,0x3c8a706a,0x3c6114da,0x3c532252,0x3c2caa8e,0x3bcbb11f,0x3c1ad638,0x3bce4104,0x3cbcdf5e,0x3c0c55d2,0x3c1de58c,0x3b49cfe6,0x3bd6a50a, -0x3b7303aa,0x3c084720,0x3b8b4a85,0x3b90e3d1,0xbbdf09e1,0xbbbb1a98,0xbb895478,0xbb4188d0,0xbbca6a1d,0xbbc504aa,0xbbeb5405,0xbaa8915c,0xba90b2a0,0x3a0770ff,0x3c13bf3a,0x3cb89144,0x3d0bffc5,0x3cfe9ff5,0x3cbac02f,0x3c85c227,0x3c82c128,0x3c5f0785,0x3c5ac62c,0x3cc47e27,0x3c780430, -0x3c6cc253,0x3c077573,0x3bfc2be2,0x3b7d5ba9,0x3b9b9b16,0x3b03c4ae,0x3900651f,0x3a0b1a64,0x3b9dcc5a,0x3a8fcc33,0x3b49a911,0x3acec7c6,0x392e9398,0xbb78f6d0,0xbbba7e75,0xbc715631,0xbc615ff7,0xbc75e96c,0xbc7bc09e,0xbc810bc7,0xbc819ce7,0xbc8ebc37,0xbc801f4b,0xbc50fc5b,0xbc28ff6a, -0xbc2a1695,0xbc565b8c,0xbc612cc3,0xbc66b20a,0xbc30e4a8,0xbc1a2125,0xbc1e253f,0xbc20b9c2,0xbc553d60,0xbb624e47,0x3bc02bb0,0x3c86167f,0xbbba2387,0x3b3df248,0x3c7431fd,0x3c7e40ab,0x3c5fe036,0x3c57a5bb,0x3c469cb4,0x3c1e3eff,0x3c2241c1,0x3b05cb7e,0xbbc9df74,0x3c4b8930,0x3b569973, -0xbcb4820b,0x3923d2bc,0xba048257,0x3bc50183,0x3b6df0ff,0x3b2bb082,0x3a626567,0x39486930,0x3938fd27,0x3ae2c803,0x3ade5c00,0x3b222b9f,0x3b883fe7,0x3b0b8d55,0x3b0282b1,0x3b53c068,0x3b209fe6,0x3b102faf,0x3a762e2d,0x3b1caafe,0x3b0c91cf,0x3af6b796,0xbaf4a3de,0xbb94eaf2,0xbc386ece, -0x3a8e7b63,0xbb617de9,0xbc2ffae0,0xbc26e0da,0xbc2a84b6,0xbc286f78,0xbc3c158f,0xbc32e27e,0xbc16e3ae,0xbbb1109b,0xb9f77106,0xbc24645f,0xbc09a89d,0xbcf136cf,0xbc81bc15,0xbc0e28bc,0xbbc60399,0xbbb384eb,0xba8e5b50,0xba8d6b20,0x3b18e166,0xbb0d11db,0xb653cde1,0x3bcd272d,0x3a1e0d9a, -0x3a348d41,0x3bbb7b3e,0x3b56d4b5,0x3b2ddf0f,0xba8228e7,0x3b9f67ab,0x3ba7b239,0x3a6b8c60,0xbbc6919f,0xbb879c2e,0xbb61b7ac,0xba155402,0x3b451e6a,0xbb5c3552,0x3a64a0db,0xba92293d,0xbb259bc2,0xbb934248,0x3ace63e6,0xba9dbd70,0xbb2ce667,0xbb9731cd,0xbbdb50bb,0xbc667af0,0xbce4e25a, -0xbbe69686,0xbb952032,0xbbbd324d,0xbc1ed462,0xbb7a5217,0xbbc3c396,0x3b7717dd,0xbb0e88f9,0x3a2abe49,0x3c475cb3,0xb892b992,0xba19cf5f,0x3c01a82e,0x3b7c45fd,0x3b76191b,0xbb66fcc8,0x3bf35527,0x3c02be50,0xba64eebf,0xbaa4a639,0xba1da94b,0x3b9ef215,0x3bac8c7d,0x3bf9dba8,0x3b00d154, -0x3be49007,0x3bf883ad,0xbafa8410,0x3abd4a6c,0xba6f1533,0x3bc72bed,0x38a2f726,0xbb7add9f,0xbbeed146,0xbc9deeff,0xbd8f17cf,0xbd6d18e5,0xbd08498a,0xbd0403ff,0xbccd62d9,0xbaf6fe41,0xbbc968a6,0x3bfd16c1,0xbc677576,0xbc091648,0x3c586702,0xbbd5bc04,0xbbf7a4fc,0x3c045eb9,0x3ab44675, -0x3aa279f5,0xbc34ac13,0x3c45d56f,0x3c23e7f8,0x3a0e7dd1,0x3a989eeb,0x3a24aa24,0x3b34ec76,0x3c6ccfc5,0x3c675021,0x3bb89846,0x3c8388bf,0x3c53c40e,0x3bba2e7d,0x3b49e3d5,0x3aaf0d77,0x3c060500,0x3b2ca9a4,0xbbb69600,0xbc5da7d6,0xbd20aece,0xbd67efce,0xbd0e54d3,0xbba91feb,0xbc9ade98, -0xbcb04496,0xbc53fdc2,0xbc16842e,0x3bf61231,0xbbe4f0ff,0xbb94ee06,0x3c7d113f,0xbc058f75,0xbc14c619,0x3bb9b1a8,0x3a95b7b8,0x3adcbcd3,0xbc2a8337,0x3c548d51,0x3c541630,0x3a7ab532,0x3c62ded1,0x3c0cc00d,0x3c4a0fac,0x3c9e88ce,0x3cde9f19,0x3c9a6fe7,0x3ce8414b,0x3ca46e59,0x3c4ef426, -0x3c2cd01b,0x3c1c9d22,0x3c5edd21,0x3bd1aaea,0xbc3ee773,0xbc7338f5,0xbd676a92,0xbd96bd86,0xbce107b7,0xbd1c08e4,0xbd2593ae,0x3c8ffa09,0x3bc63e86,0xbc28ef75,0xbd3a3dd9,0xbcc31018,0xbc823736,0x3bca32f0,0xbccc8c2e,0xbd2dddc6,0xbd37e1b2,0xbd30e3f8,0xbd0f552e,0xbd0e3d28,0xbcfc00cf, -0xbcfcfb68,0xbcb05a43,0xbb9bee57,0xbc27b21e,0xbbe9ddd6,0x3c385d68,0x3c89c884,0xbbf672ce,0x3cb08a6d,0x3cd88233,0x3b271218,0x3cad623a,0x3bc76209,0xbc930dbf,0xba1086ee,0xbc458770,0xbd151da3,0xbd9a541e,0x3d483656,0x3d121157,0xbc240d1b,0xbcc09e93,0xbd817750,0xbd2e3055,0xbd64509f, -0xbd9dda86,0xbd03aaab,0xbcc9bd63,0xbd223eb2,0xbc5c540e,0xbb9bce43,0xba767154,0xbbcdbad1,0x392a09d0,0x3c1e3e0c,0xbc0ee21d,0xbbe21ee2,0x3c2372ee,0x3bb93194,0x3c3f10f9,0x3c80c5d4,0x3cbc4038,0x3cd5caf1,0x3d014640,0x3c55178f,0x35776d6d,0x3c0c5da5,0x3a9c0def,0x3c0c2a5f,0x3d1032de, -0x3ba07a9a,0xbbef1ecf,0xbc2ba457,0x3d151d5a,0x3c571599,0x3cbd9ce3,0x3d32caf2,0x3d6b4d18,0x3d95e2c6,0x3d893efc,0x3d10270a,0xbd1feb28,0xbc192a6a,0xbc9e71e6,0xbd1f0785,0xbd418025,0xbd20e082,0xbc3b1055,0xbb49505a,0x3b64609e,0x3c96880b,0xba87adea,0xbbc689a7,0xbc2a4e9a,0xbc6184bd, -0xba147605,0xbc0cdf6a,0x3d0d9e2e,0x3cf3b939,0xbc1d259b,0x3bfb21e7,0xbbbbfc95,0x3b042c85,0xbc0d21ee,0x3b9d9bac,0x3c89b9e0,0x3d418935,0x3d5fdcfd,0x3cf1c129,0x3c268346,0xbc5ebecd,0x3c85b84f,0x3d733f27,0x3d809c6f,0x3d8a4ac7,0x3d6f64b1,0x3d21cdaf,0xbc87bc09,0xbc0ecd71,0xbcb0e8e2, -0xbccd4b11,0xbd2d6971,0xbd329719,0xbca8df7b,0xbce29042,0xbce167d9,0xbcc6a36d,0xbc9aff76,0xbc8ea638,0xbc7c0b18,0xbc2542da,0xbaef7d9f,0xbc23a27b,0x3d1d23bd,0x3d19dfd4,0xbcfd35c6,0x3c33316e,0x3ba9cae1,0x3bac746b,0x3b543bb8,0x3c98f1b1,0x3b50f48d,0x3d47b53d,0x3d5f750d,0x3d01257c, -0x3ad718de,0x3bf3f342,0x3c2afa53,0x3be21a21,0x3b20a164,0xbd24da84,0xbc3085a6,0x3b154a96,0x3c85da66,0x3d3c9814,0x3d317c79,0xbbf6648d,0xbc72c822,0xbd496254,0xbda00c0f,0xbd9b677a,0xbd811f0a,0xbd223efa,0xbd294f9b,0xbcf587ae,0xbc2bc7f2,0xba94a33d,0x3be97330,0x3c0c32e6,0x3cdddce9, -0x3ce52b13,0x3c545640,0x3c8aa243,0x3c5fc78b,0x3c3a9421,0x3ce9f77e,0x3d05d508,0x3c850ac9,0x3ca1e43d,0x3c589d13,0xbbb34510,0x3b5db14f,0x3c404cb5,0x3c3c5abc,0x3b5d405b,0x3bdd0982,0x3d320f16,0x3cff5c93,0x3bdaf786,0xbd6ad8e6,0xbc50fe90,0xbb064380,0xbbb4618e,0x3c579ff4,0x3c5307e9, -0x3cc0f7bb,0x3cef349b,0x3c821d42,0x3c60121e,0x3c49b009,0x3bba15be,0x3be10bcb,0x3bc6ae44,0x3c5d8404,0x3c1d65c5,0x3c6bb772,0x3c82ad8b,0x3bc63e35,0xbb0ba376,0xbb7476fb,0xba7d2cc3,0xb912f559,0x3b56a80f,0x3953f4af,0x3c9d21cd,0x3ccfa838,0x3c63961f,0x3caa2b94,0x3c4babc7,0x3c340e5f, -0x3cae9d22,0x3cc931a3,0x3bf570c1,0x3b9d3897,0xbbd6274c,0xbcf43ff6,0xbc3bb457,0xbba19a10,0x39e7dcb9,0xbc190723,0xbc2a4282,0xbc467f1c,0xbcadfa41,0xbc934d76,0xbc998a43,0xbbfe20cd,0xbae5d6e2,0x3aa93f53,0x3ad58d2e,0xbab0eb32,0x39b6997d,0x3c04ff5f,0x3bd84b50,0x3ae08900,0x3bcaad9f, -0x3badf79c,0x3c284651,0x3c2ebaef,0x3c7b93b6,0x3c813cd9,0x3c7fd20d,0x3c3121cb,0x3bc0ab71,0x3b20b45e,0x3c772150,0x3c969db9,0x3cb2c9b0,0x3cbfbe76,0x3c845c09,0x3b2b6892,0xbc483389,0xbd055515,0xbcbf60d3,0xbc90697a,0xbbb3b1b2,0xbbb52bfa,0xbb94ca22,0x3b2abfe5,0xbacdcedb,0xbb258adb, -0xbbdaf3bf,0xbbe26136,0xbc18fbd1,0xbc751edd,0xbc0f3077,0xbb739957,0x3ba12090,0x3b5142b8,0x3be50ba4,0x3b8a1c7e,0x3bb04aef,0x3bd3ac43,0x3c286009,0x3c0f19a3,0x3c07460e,0x3c0eeb42,0x3c4489e8,0x3c48f11d,0x3c4a34a5,0x3c1f21d1,0x3c2f7023,0x3c846f4b,0x3c18ce38,0x3b477fce,0x3b376dfa, -0xbbebffe4,0xbc5a29a5,0xbcbb744f,0xbc66f7b6,0xbc38937e,0xbbbe5dec,0xbbfb2dcc,0xbbc798d6,0xbc004b4d,0xbbd6a95f,0xbb9deaea,0xbaa6d0c2,0xbbaa530d,0xbc38ad13,0xbc2fd348,0xbb336489,0xba0affb5,0x3b3de48a,0x3b0ba4e8,0x3a81174c,0x3a25f740,0x3b4d7d27,0x3b6a8851,0x3b6a5f6b,0x3bb13bf1, -0x3bf7bb58,0x3c035e4e,0x3be94ad8,0x3c217adf,0x3c2acc37,0x3c64c640,0xbbec81f2,0x3aa34365,0xbb2384de,0xbb92d1c0,0xbc10ba2d,0xbc561f8d,0xbc7bde8b,0xbca84739,0xbc9d43f6,0xbc8ef062,0xbc7a175a,0xbc4a0521,0xbc12b99f,0xbba86dff,0xbb5574f5,0xbb6014e9,0xbb63c17d,0xba27280f,0x3b68865e, -0x3b1fe857,0xbb3a0683,0xbb9483cc,0xbc1b4378,0xbc36f315,0xbc3908a2,0xbc660091,0xbc39f57f,0xbc09e5f5,0xbbad3dd8,0xba4bd727,0x3a76b469,0x3c00b848,0x3bb38bd3,0x3b5d8320,0xbaba4060,0x3a84ac49,0xbc1f42a6,0xbb2f874a,0xbbc0132a,0xbbdc594e,0xbbe19cc4,0xbbfafcc5,0xbc06c893,0xbc147c84, -0xbbf7ba7b,0xbbed508d,0xbbe94997,0xbbdf4fda,0xbbe402e4,0xbbe7e439,0xbbf5e6f0,0xbbe5e980,0xbbe39cc2,0xbbf18948,0xbbf4a2e0,0xbbd7f000,0xbc4c37b4,0xbc862ece,0xbc857315,0xbc2dfc00,0xbc82bec0,0xbc9a1ff5,0xbc910922,0xbc875c2e,0xbc80d1ad,0xbc785368,0xbc70f53b,0xbc6ccc0b,0xbc629e81, -0xbc0d8322,0xbc870d48,0xbc6e4630,0xbc7cacde,0x39d8e883,0x3b9324ea,0x3a94d6ad,0xba44764e,0xba7ec3e2,0xbb0277e5,0xbb39b114,0xbb510bb1,0xbb5fdd15,0xbba457f5,0xbb96911c,0xb9c6d05f,0xba697469,0xbacfe6c0,0xbb3e08df,0xbb115a8c,0xbafe8190,0xbaf5b8cc,0xbaa5e603,0xba61b613,0xbb062672, -0x3ada37e9,0x3b675cca,0x3ba0ddb4,0x3b32bb91,0x3b90ff00,0x3b8fa176,0x3ba4dc39,0x3b93ae39,0x3b6cf6e3,0x3b9d5064,0x3b9ec9c6,0x3bbb6fe1,0x3b747eb4,0x3a1cef54,0x3b25f526,0x3b09d3a3,0xbc167640,0x3b1986c1,0x3c5f0456,0x3c707431,0x3c264fe2,0x3bd1663c,0x3a174c8e,0x3afa4ed9,0xbb5ec3bd, -0xbb57df46,0x3b5bf04b,0x3b1e6af2,0x3af7df1b,0xbb193591,0xbaa48532,0xbb440fc6,0xbb89c2ab,0xbb290eeb,0xbb3e7b9f,0xbbd0bfaf,0x3aa2aa7b,0x3b0eea7b,0x3bd3be83,0x3bcfb158,0x3b651025,0x3ae7052f,0x3b8f1d7c,0x3bbabcd2,0x3b0ed33a,0x3b1c1b56,0x39a96ffd,0x3bc5fb74,0x3b275fed,0x3b03a51e, -0x3b563194,0xbb286f97,0xb897d70a,0x3c7b516f,0x3c45d3da,0x3c5db471,0x3bc06183,0xbaf5ab37,0xbbb2ee19,0xbba0d5fd,0xbcac4aec,0xbc8c4a14,0x3ba296ae,0x3af6c153,0x3aaefb3b,0xbbef15fa,0xbbde1ea1,0xbbccb4f6,0xbc055db8,0xbb912718,0xbb9f6414,0xbbf67c9b,0x3aafb6ad,0x3abf86bb,0x3c096a6a, -0x3c273226,0x3c189c42,0x3ab7857f,0x3bd12300,0x3b24baa3,0x3b6edf53,0x3ac43a04,0x3b964361,0x3c344535,0x3b5b340b,0x37fa43e4,0xbb192a1b,0xba665507,0xbc8056bf,0x3c828b90,0x3d5b002e,0x3d3de104,0x3d0c30d5,0x3ca63ba8,0x3c0528c0,0x3c83aa87,0xbc497821,0xbc060e39,0x3c611528,0x3c100efa, -0x3c2f7bc7,0xba551877,0xbae0e9f3,0xbbd93f6a,0xbc2ac1a8,0xbc066b96,0xbc107bf7,0xbc82a325,0xbba8524a,0xb988820c,0x3c3fad22,0x3c5bdb02,0x3c6c66f2,0xbb07773c,0x3c706d08,0x3c404a01,0x3ba9e95a,0x3b2c3c0b,0x3b73b750,0x3c88c9ce,0x3b1d25d8,0xba8d79b4,0x3bf63119,0xbbb8b2c8,0x3c386b59, -0x3cf75506,0x3d189697,0x3ce806be,0x3c078657,0xbbad4dc1,0xbc5fe7ab,0xbbf067b0,0xbd1a1254,0xbd18d408,0x3c879b85,0x3bd469c2,0x3bc5ee23,0xbc395951,0xbc3b7fcf,0xbc3c7714,0xbc46471c,0xbbd97447,0xbc0a543b,0xbc99cb4d,0x3a6454a2,0xba4ab48b,0x3c2a22c7,0x3c9e346a,0x3c9fdc1a,0x3bc14eff, -0x3cb008a5,0x3c9e77a2,0x3c2d4889,0x3bff6845,0x3c0baeaa,0x3ccdc5d9,0x3c067c1f,0x384a3b51,0x3c402141,0xbad30387,0xbc3e4fc1,0xbcc3e036,0xbd84b584,0xbd1679b0,0xbc70dd96,0x3cec6cf6,0x3c633d74,0xbd6be556,0xbd0f5316,0xbd285448,0xbcca8a92,0xbc790e3f,0xbb9f8fdb,0x3c787dc1,0x3ac5382e, -0xbc352417,0xbcfce735,0xbca66bd7,0xbc74497f,0xbcf632ab,0xbce60c48,0xbc8c3bf9,0xbc1273e6,0x3b05cfe0,0x3c5ac90b,0x3c02193b,0x3c8c76fb,0x3c9e2ea4,0x3be1bd21,0x3cbb05f6,0x3c5f5bcf,0xbc3b46ba,0xbb59bec7,0x3af5359e,0xbc3c18e9,0xbc628494,0xbbfbc8aa,0xbc4a0455,0xbd733fd5,0xbd73e578, -0xbdc29548,0xbd89847a,0xbd947021,0xbd8510eb,0xbdcbab8b,0xbdb8ee5f,0xbd0b4fa3,0xbd3344e2,0xbd0e3ba3,0xbd1624a2,0xbd32b092,0xbcf70ec1,0x3c70c4c4,0x3b08eeb0,0xbbcb0c5a,0xbaab4e08,0xbb136fdf,0xbaa04b57,0x3b6a2d71,0x3c66fbf6,0x3c9ee0a6,0x3c7006db,0x3c6cf3e8,0x3bb05a01,0x3b8cfec4, -0xba51f923,0x3c36c6f3,0x3d29359b,0x3c415328,0xbc02190c,0xbd011663,0xbbcf972a,0x3ca93ced,0x3d31b954,0x3d3b70a9,0x3ccd2161,0xbb425c70,0x3c9e8d7b,0x3a167c41,0xbda846a7,0xbd82dacf,0xbd686194,0xbc6b0f2e,0xbc74f657,0xbc2b5215,0xbc42eb56,0xbca56969,0xbcd2dbf9,0xbba4a916,0xbc6c1fb9, -0xbc4f3fdc,0xbbe54c63,0xbc2f95b3,0xbb1aea4f,0x3b0773b1,0x3cff19e5,0x3cde3db7,0xbbf897ed,0x3c244bb1,0x3869e9e8,0x3c113b2a,0xba9b4e54,0x3c27f740,0xbb823b94,0x3d337375,0x3d5d0689,0x3d2477fa,0x3cd46f0d,0x3d2d05d0,0x3d5c4759,0x3d8e5f51,0x3d8a6381,0x3d8756a1,0x3da06540,0x3d665f91, -0xbd3432b1,0xbc06b934,0xbca9058b,0xbd203dbd,0xbd4c377d,0xbd6c0085,0xbd2bab57,0xbd0ac8eb,0xbcaf6f5d,0xbc45b826,0xbcb15d5d,0xbcb62f31,0xbc4d37b8,0xbc076cc4,0x3be5a10e,0x3bcff69a,0x3d219b0a,0x3d074091,0xbc8e53ec,0x3c595f12,0x3c012075,0x3b89b5b1,0x3bf3ddad,0x3c83e69f,0xbb37245b, -0x3d335c02,0x3d5bd404,0x3d4b25f1,0x3d2b5817,0x3bd9424b,0xbb5f534f,0xbb955e77,0x3c720bda,0x3cd0ce88,0x3d4a04c8,0x3d3ce0b2,0x3c8ca7e0,0x3d085c8d,0x3cf5ca26,0x3cb32690,0xbd05d8eb,0xbd68d568,0xbd8deb5a,0xbd7d0a3e,0xbd59e50a,0xbd2c0701,0xbd090692,0xbcc4850a,0xbc63498d,0xbb858df1, -0x3bd4b90f,0x3bc522de,0x3caf4742,0x3c9566be,0xbb6361b5,0x3c81dc9d,0x3c819036,0xbabf244f,0x3c972525,0x3cd454e3,0x3cdceb49,0x3cdac221,0x3c8ef7ec,0x3afe6c19,0x3b81809f,0x3c7880ea,0x3cd9adba,0x3cf717ce,0x3cdfd12c,0x3d0cbb23,0x3cbd78d9,0x3b2d8db8,0xbd0c5b45,0xbabe7494,0x3cbf9dfc, -0x3d90b99f,0x3d8970c9,0x3d6a64cf,0x3d22be21,0x3ce0ce7c,0x3c1d061e,0x3c8238ad,0x3cc2c6e5,0x3cd506ee,0x3cc1a65a,0x3c97632d,0x3c890c61,0x3c420d22,0x3cca942b,0x3cd1bcf5,0x3c8dabd0,0x3bdd88f4,0x3b308cc4,0x3ab7476a,0x3ba12c25,0x3c02c771,0x3b3fbf4d,0x3cacdd72,0x3cc53934,0x3cc016ec, -0x3c8029f3,0x3bf0ca85,0x3b901c65,0x3c36a126,0x3cb5bf35,0x3ce0120a,0x3ccd29f8,0x3c98a256,0xba84a1f7,0x3c10a358,0x3c204f7f,0x3cb32433,0x3bae693f,0xbbd72396,0xbcf79674,0xbcc91458,0xbc667405,0x3ba383ad,0xbbd04ec0,0xbc04ad8f,0xbc03f2ef,0xbc1e8a90,0x3a14f496,0x3a2ac353,0x3c382202, -0x3c78f1a3,0x3c226d38,0x3c84db03,0x3c4fa0d7,0x3c7d812d,0x3c792624,0x3cacd74d,0x3cc5c715,0x3caaa66d,0x3c8ca1ac,0x3c2cda67,0x3c3fce05,0x3c4e9c04,0x3c91eddf,0x3c9ad067,0x3ca449cf,0x3caaf99f,0x3c8f71d7,0x3c6789a3,0x3bec1297,0x3c552408,0x3ca35991,0x3cf17787,0x3cd9a207,0x3cbe05e9, -0x3c84ad93,0x3c450b4f,0x3c0bdc77,0x3c091138,0x3bda3b27,0x3c5008c1,0x3c67229d,0x3b8d5b7a,0x3c030be6,0x3c5d458c,0x3c51fbab,0x3c5c615e,0x3c59697c,0x3c1e925d,0x3c3d02d0,0x3c609486,0x3c4b94ee,0x3c389503,0x3c401fb9,0x3c72276e,0x3c64c4ac,0x3c3470c5,0x3c54a936,0x3c424a06,0x3c5350ec, -0x3c100a55,0x3bc9f722,0x3b6535b7,0x3b72649d,0x3bf1a9b9,0x3c3a0ee5,0x3c4bcfaf,0x3c3aaddb,0x3c58a2e0,0x3c6febc4,0x3c9ce633,0x3cbb9809,0x3c96b3ea,0x3c653374,0x3b99edf2,0x3c11bf70,0x3c7dfbed,0x3c2c3121,0x3c05982e,0x3c2535b2,0x3c4d9702,0x3c397102,0x3c396b26,0x3c654477,0x3c31c58c, -0x3c8c7c53,0x3bb5fa2e,0x3c46618c,0x3bca1801,0x3c00f24c,0x3b8033e5,0x3b866ef4,0x3b514f52,0x3be30e8f,0x3b23d093,0xbab2f90a,0x392c029f,0x3aa20e81,0x3b27b627,0x3a80cbe5,0xbabee04e,0xbb968bed,0xbb69eeaa,0xb9b67c80,0x3a8fe5fd,0x3b19f651,0x3ac2b633,0x3b4f7903,0x3b623edf,0x3bc80f56, -0x3c335033,0x3c14de8c,0x3bd0211a,0x3c119246,0x3bb8aea6,0x3bd6883b,0x3bb99df7,0x3bfdda16,0x3bae951f,0x3b8a0330,0x3b9e0567,0x3ba7d398,0x3bb64063,0x3be21409,0x3c28f776,0x3bd4561d,0x3c12503d,0x3bfe0112,0x3be4ffc5,0x3ba0ab09,0x3ba99f78,0x3ba99e9d,0x3b9f3990,0x3b85bf24,0x3b7665be, -0x3b7d5c79,0x3ba48687,0x3bc4ac85,0x3bcbd5b0,0x3baf1830,0x3ba33194,0x3bb0213d,0x3bceb58b,0x3bdf7c79,0x3bd33248,0x3baf1a0f,0x3b8859d9,0x3b98b391,0x3bad3f30,0x3bd2f93e,0x3bbe3056,0x3b800e05,0xbb225bf0,0x3bca6f5d,0x3b8d8a5e,0xbb1c8b9c,0xbb39c1d7,0xbafd0955,0xbab1f485,0xbb21ccc7, -0xbb0ab089,0xba80bb0e,0x3b6a15f9,0x3b92b3f6,0xba894869,0x3b5b0df9,0x3c0adfbd,0xbba75a7d,0xbc101160,0xbc07d5de,0xbbc5199f,0xbb9d9dca,0xbb704006,0xbb404cab,0xbb54930e,0xbba5460f,0xbba6035e,0xbba59ee3,0xbb722ba2,0xbb54428c,0xbb5c3083,0xbb946097,0xbb8980e5,0xbb877241,0xbb4482ec, -0xbb749fc3,0xbb7c241a,0xbb3f5ff6,0xbb626388,0xbb3efdad,0xba581cff,0xbb25cd55,0xbb232c0c,0xbb1a82a6,0xbb0d0d56,0xbb11863e,0xbb20562d,0xbb190073,0xbb03d3b7,0xba9acef3,0xbb67f8e8,0xbba194b8,0xbb61f7ae,0xbb9d1472,0x3c08d9dc,0x3b8372ac,0xbbb731c2,0xbbab175d,0xbb29aad1,0xbb8f46ac, -0xbbe23ac8,0xbc641008,0xbc59d895,0xbc2da61a,0xbba6f90a,0xba9c719e,0xbad35160,0xbbedd41a,0xbbc0882b,0xbbbe34e7,0xbaffa488,0xbbac15fb,0xbb93c9c6,0xbab3db08,0xbb333eb2,0xb98d5270,0x3b3d1f63,0x39981549,0xba75892c,0xbafaf277,0xbaa0e010,0xbab4025b,0xbb337a95,0xbb6319ba,0xbb11b43e, -0x3b30f288,0xba974142,0xbb59d91e,0xbb321b5a,0xbb2728a0,0xbbb84298,0xbc90a3fa,0xbc638e35,0xbc245edd,0xbb134b90,0xbb359304,0xbb8ad042,0xbc8b4d80,0xbc94f094,0xbc83a3e0,0xbbf4f9a2,0xb9084390,0xb9eb7e63,0xbc257866,0xbc025771,0xbc04f028,0xba37bf28,0xbc00f887,0xbbac4289,0xbb84b6ee, -0xbbaa5161,0x3b12275a,0x3bc6b95e,0x3baacef8,0x3b754891,0x3ab54abd,0x3a8afea8,0xba8bae8e,0xbac16318,0xbafe73ad,0xb97018aa,0x3be99fa4,0xbaaf2f92,0xbba9e97b,0xbbc8b23d,0xbc237208,0x3cbb238f,0x3c72e3b9,0xbc9044c0,0xbb9e8a70,0x3b32f458,0xbb8fdc41,0xbc5fe566,0xbd00d1c4,0xbd08291b, -0xbcbd8eb0,0xbbf146e0,0x3bbbc28f,0x3bd33261,0xbc4feea2,0xbc03e4ff,0xbbfe568b,0x3b61e011,0xbc04666a,0xbba19c26,0xbaf76226,0xbb5b9129,0x3bebe4b5,0x3c763c00,0x3c2d92bc,0x3c04ebe1,0x3b5e7cab,0x3c0cffa5,0x3c05e46b,0x3b4d7118,0x3a621b06,0x3b1e5bf9,0x3c869dfb,0x3bc59ea2,0x3b186dfc, -0x3ab943ff,0x386b2c5e,0xbc8108cf,0xbcac3fe0,0xbd0f879a,0xbc50fd0b,0x3b736e63,0x3bbe9085,0xbaa405cc,0xbccd5a19,0xbd01adb0,0xbcd9eab4,0xbc1100cd,0x3c033f6a,0x3bb28962,0xbc509560,0xbc21e3d3,0xbc39b73a,0x3b08fcdb,0xbc69c153,0xbc0d7ab8,0xbba13072,0xbc816fb2,0x3b02789d,0x3c57d054, -0x3c8b0b77,0x3c4e9bd1,0x3b846dca,0x3c6d2007,0x3c89dfb2,0x3bf76c32,0x3ba161a5,0x3b8fe818,0x3ca90633,0x3bcc500b,0xbb4163e0,0xbc2b48f1,0xbc187810,0xbcdae4aa,0xbd3581ad,0xbd56e375,0xbd6b01b7,0xbdbf875f,0xbd142393,0xbcb07e83,0xbc9e0a91,0xbd12193e,0xbd1636c6,0xbca6ea48,0xbc4344af, -0x3bca397e,0x3b557062,0xbc3d8346,0xbc52776b,0x3ca15b95,0x3c345969,0x3b8857e9,0xbbbc6e51,0xbba94da8,0x3bc56172,0x3c0b0ac5,0x3bfd545d,0x3c41bef6,0x3cd614cc,0x3c9183cd,0x3c63a1ac,0x3c199ca2,0x3c90c3f0,0xb98928e9,0xbbf8ea2f,0xbc92b86f,0xbc987ce5,0xbbef1041,0xbca139e9,0xbcee8242, -0xbcf6169b,0xbdb8d8b7,0xbd9c4af8,0xbd334fcf,0xbc2aacea,0xbbc094a5,0xbb3599aa,0xbd108002,0xbd0688d6,0x3baf4fd5,0xbcb6fc7a,0xbd03a94f,0xbd19764a,0xbcb2ee31,0xbc90c3a7,0xbce2b596,0xbc698089,0xbbc8cac2,0xbc0d4538,0xbc318d41,0xbb726b2c,0x3bf997dd,0x3ca25b8b,0x3cab9ebd,0xbb0f10aa, -0x3bae64cd,0x3b93adca,0x3bc4ac19,0x39382cf7,0x3b31ff4f,0x3c13aa9e,0x3c667436,0x3b3760c3,0xbd078c07,0xbca09102,0x3d03ff65,0x3d0d48f8,0x3d30f058,0x3cddb163,0x3cad461f,0x3cd18bbc,0x3b8e9d74,0xbd1aebb9,0xbd55c0cf,0xbd6ecdc4,0xbbfa7b28,0xbcc8232c,0xbca4ac11,0xbcb5f395,0xbcf1fa72, -0xbcc41298,0xbc9e93ae,0xbc775049,0xbc80cbca,0xbbf6c896,0xbc350fa0,0xbb188f17,0x3bcdd197,0x3ceef20f,0x3cc62d95,0xbbb10061,0x3c11706e,0xbaa029a3,0x3b808c18,0x3b25cf55,0x3c4dcaf6,0xbc362d0a,0x3d0786f9,0x3d2e22e9,0x3d4bfa42,0x3d1d8d91,0x3d47175b,0x3d5a1d9f,0x3d90ca6e,0x3d860153, -0x3d1c15d0,0x3d74dc91,0x3d248b16,0xbc92a098,0xbc57a929,0xbc960607,0x3ca0b8ef,0xbcb1ea91,0xbd0bf03b,0xbd45998e,0xbd627b40,0xbd58bdd5,0xbcf7b679,0xbcbb290f,0xbc83b695,0xbc55d881,0xbc3bcf2e,0xbad0e665,0x3c1461d8,0x3cc99c76,0x3ca1c9ea,0xbb4946c9,0x3c0b4956,0x3bd96641,0x3b89f815, -0x3c0b9e74,0x3c968f5e,0x3c0fd53a,0x3d16a6ff,0x3d34b124,0x3d6d2a8d,0x3d403110,0xbc309621,0xbc9656b0,0xbcb58e1e,0x3bcd5e94,0x3cc00f52,0x3d91da3f,0x3d9946c4,0x3d0e3814,0x3c8b9f88,0xbc04eed6,0xbb431c57,0xbcdb824f,0xbd0b1e5e,0xbd08db84,0xbd2f2a2e,0xbd369ed5,0xbd241710,0xbd01c599, -0xbcae9b94,0xbc72460c,0xbbfdb8c7,0x3a7ca19e,0x3bd2b01b,0x3bad76fc,0x3bb4b814,0xbc16fe1e,0x3bb82e35,0x3c2bd958,0x3b984dd6,0x3c173d43,0x3c98ed38,0x3cfa8b10,0x3cfad807,0x3cbf2e68,0x3b94c538,0xbba3a821,0x3cc77822,0x3c860275,0x3c81bceb,0x3b5234dd,0x3c7ac927,0x3bd8c297,0xb907e968, -0x3a8775ed,0x3c7859c4,0x3d1274fa,0x3d86de85,0x3d3372ef,0x3cb0f862,0x3c40aa0a,0x3cb4ca75,0x3cbda1cb,0x3c91eb54,0x3c9269ad,0x3c498734,0x3c4cf7ad,0x3c11aa35,0x3b8fb238,0x3c673acd,0x3d0115d5,0x3d01ecf5,0x3c708ea7,0x3c8517f8,0x3c577e5a,0x3c7a5e3e,0x3c70edad,0x3c1bac24,0x3c109f10, -0x3c957f0f,0x3cc417d8,0x3cc9a6de,0x3cbdca7c,0x3bd87021,0x3abb3048,0xbb2db535,0x3b65895a,0x3ce1f160,0x3c6cffd2,0x3be3b363,0x3c1bd142,0xbcb022b1,0xbcba8489,0x3c0f17b1,0x3ba6b409,0x3c247111,0x39863640,0xbc306582,0xbc532d50,0x3bd241c1,0x3c360535,0x3c4f75b6,0x3beec0de,0x3aaeb7db, -0x3c4b1b24,0x3c6a7f4b,0x3bd4f1be,0x3c18b078,0x3c76e62b,0x3c864448,0x3c9e45b7,0x3c44e231,0x3cbe7a95,0x3cdc0c18,0x3c9a9bc5,0x3cb893bb,0x3c893c28,0x3c2f4ebd,0x3b91ef25,0x3c64f22c,0x3c4c415b,0x3c1fdc17,0x3c539958,0x3cb0a8a8,0x3c0c203f,0x3906c8db,0xbb56a0dc,0xbc65f431,0xbc4c8809, -0xbbc88b0d,0x3b917c6c,0x3c26f9d2,0x3c3e1015,0x3c4d1ad5,0x3c8fe54d,0x3cfee617,0x3cdc433f,0x3cc98262,0x3cb1d170,0x3ca612bc,0x3c7404a1,0x3c63a662,0x3c69f12d,0x3c55f559,0x3c8b6b7c,0x3c826e97,0x3c83445f,0x3c6fa382,0x3c891e09,0x3c6f36f5,0x3c3a5d69,0x3c3d6872,0x3c2b4112,0x3bdbad33, -0x3c27b6db,0x3bfdab8c,0x3c1461da,0x3c16ae50,0x3c208cf6,0x3bf94e2c,0x3bd4b328,0x3b8539a4,0xbb581381,0x3a3a498f,0xbb66c9ca,0xbc460b54,0xbbd870aa,0xba691a45,0x3b77e71d,0x3c17ff10,0x3c5a702f,0x3c2d9052,0x3c3b11d0,0x3c5598e4,0x3c7f965b,0x3c867e8e,0x3c66adae,0x3c50dc37,0x3c7a31b2, -0x3c8d8cb9,0x3c8a58dd,0x3c81e67e,0x3c8a1db0,0x3c86cbb2,0x3c6334a0,0x3c4ec1b4,0x3c580356,0x3c11e2f9,0x3bd3d391,0x3b9f5778,0x3c05748e,0x3b447959,0x3c1cf721,0x3bceff11,0x3b4172d1,0x3ac7df47,0xbb0c3f36,0xbb84a63f,0xbb7d54f8,0xbc0e18df,0xbbffb31b,0xbbb7174f,0xbc100ec4,0xbc67d9e0, -0xbc907abc,0xbca0405c,0xbc8bf6b0,0xbc73ac6f,0xbc535359,0xbc4e1992,0xbc1f0f5c,0xbaa08d32,0x3b557ab7,0x3be84429,0x3c113a4e,0x3c4af153,0x3c797dc3,0x3c8d00d8,0x3c8b6674,0x3c8518ec,0x3c9e0d50,0x3cb331b5,0x3c985d34,0x3ca48f22,0x3c88f2e0,0x3c2c2625,0x3c5ba295,0x3bba10f0,0x3c0d5e50, -0x3bf411e8,0x3bf5a835,0x3be7cf77,0x3bf47972,0x3be824fd,0x3bda0e12,0x3be0b501,0x3bb0d349,0x3b560aa0,0x3b4187c6,0x3b7c2cfe,0x3b86b4c9,0x3bc90c25,0x3bcc2fd9,0x3bd8d871,0x3be2a518,0x3bf7f1a8,0x3bdc2d7c,0x3bd49316,0x3bca864d,0x3bdfc761,0x3c04a43d,0x3c018815,0x3bdf7a89,0x3bcc6a87, -0x3bc28e8b,0x3bc85657,0x3b94861d,0x3b793e1f,0x3b9e2a62,0x3bc02e15,0x3bd7bb69,0x3b51f322,0x3b775d5b,0x3c5029c4,0xba0499ca,0xbb5d6a8f,0xbb383665,0xbb0280bc,0xbaa593d6,0xb9955c6f,0xba317d6e,0xba32c760,0xba1e4cbc,0xbb38f2a8,0xbb52a7f3,0xba979c67,0xba5094b3,0xb9cf9fcd,0x390be5da, -0xb98545d0,0xb83f4eec,0x3a64a1ba,0x39d96117,0x39ab3e4a,0x3abd9e52,0x39a6397d,0xb9039ecf,0xbad43b45,0x3a4f5a21,0xb8e649c2,0xbb11a4d3,0xbb3dcf11,0xbb473ac3,0xbb34b6a4,0xbb48a325,0xbb385890,0xbad63e96,0xbacc13b3,0xba710292,0xbb955eba,0xbb7e039a,0xbbdb06b5,0xbbe31c02,0xbbd9377a, -0xbb802ad3,0x3b07fb92,0x3b2aa9c9,0x3af216f0,0x3b50a78f,0xbb78848f,0xbbb0cc69,0xbae6efdd,0xbb2d6998,0xbb08080a,0xbac1b939,0xbb23b060,0xbaae7b30,0x3ada0083,0x3a2acb44,0x3afb9bcc,0x3bb6c755,0x3b3aa787,0x3b83730e,0x3b8bc774,0x3b279fac,0x3b32b8d3,0x3b0aa27a,0x3a2f8cf8,0xba3190eb, -0xba87546c,0xbab895f1,0x3ad9a66b,0x3b6f9ac3,0x39491eee,0xbb233980,0xbbb16c48,0xbbb3ba12,0xbc8d5053,0xbc93991e,0xbc62d3ea,0xbc2f0388,0xbb214cf0,0xba2ef8b7,0x3afcfa5a,0x3b31b2ef,0xbc6a0de1,0xbc84537b,0xbc01f62e,0xbbdd2220,0xbb961f69,0xbadaf1f9,0xbb25993a,0xbad49199,0x3bb27dc6, -0x3b113c1d,0x3ba563ef,0x3bfadc51,0x3ba47004,0x3c0b1444,0x3c1c953e,0x3be1b7ec,0x3bb4726d,0x3c0ebf0f,0x3ad3ec4d,0x38bbb9b0,0xba228f2f,0xb9c2fc5d,0x3a1c28e5,0x3bd2e21f,0x3ac1a63c,0xbb5e6c71,0xbc540a95,0xbc7f3414,0xbccd06ff,0xbcc3b0a5,0xbcc0e9d2,0xbc99876a,0x3abd744d,0x3bc7cfa6, -0x3c07891a,0x3c6ecb29,0xbc48bec8,0xbc94e145,0xbc16f1b8,0xbc51ed63,0xbc0cc874,0xbbf5972a,0xbbfc8ff5,0xbb8fe79d,0x3ba17de7,0x3b8317f3,0x3bef2119,0x3c69863e,0x3c3beeda,0x3c8084d8,0x3c89871a,0x3c405382,0x3c08336c,0x3c618e7a,0x3bf1c936,0x3bc20ed3,0x3b0910e5,0x3a93484c,0x3b880511, -0x3c76e029,0x3b2014c8,0xbbc9fd45,0xbc8518b2,0xbca7179d,0xbd370791,0xbd1de2a4,0xbcd047ae,0xbcdca8c7,0xbc73627e,0xbb3e2e32,0x3b5e2f6d,0x3ba57009,0xbce9014d,0xbd1137ab,0xbca41b4c,0xbc8b880d,0xbc49dbbb,0xbb926305,0xbbcf4d12,0xbb0348a9,0x3c2f24f2,0x3bb86639,0x3c312ed5,0x3c945b47, -0x3bf52bf7,0x3c758f1c,0x3ca7a17a,0x3c753ef2,0x3c511dac,0x3c4cda48,0x3c4a62df,0x3c5e112f,0x3b851d93,0x3b942748,0x3b69ff73,0x3c69a220,0x3ae38ebf,0xbc0e043f,0xbcfeec30,0xbd30fc83,0x3b8c7f5a,0xbc06d5e9,0xbd0765b3,0xbce6803d,0xbcbabcec,0xbc9f5c94,0xbc9c846d,0xbc0b2b32,0xbadbec5b, -0xbc38c945,0xbd28ad37,0xbcaf1b26,0xbcfc2ea7,0xbd12d40f,0xbcffe309,0xbcc274b3,0x3b2f22ed,0xbb72da99,0xbb8b6c1f,0xbbcc53bc,0x3bb38f8c,0x3c4b5803,0x3ca7fb9e,0x3c433e58,0x3c22f197,0x3ce71fbf,0x3c808b03,0x3c0bacf9,0x3b996458,0x3be137f0,0xba29c019,0x3bca55a9,0xbc711ee6,0xbc979d7c, -0xbbc2a87b,0x3a3db9a4,0xbd5c7bad,0xbd5ec0a8,0xbd7d4f52,0xbd351323,0xbce9d707,0x3c90d737,0x3cf2bf3a,0x3c7372a5,0xbd0105fd,0xbd4f9035,0xbd17e9f2,0xbbfc06d4,0x3c5d0542,0xbb90293e,0x3bdd79cf,0x390063d5,0xbbbe102f,0xbc1f6f8d,0xbb8fde4e,0xba9603cd,0x3ae342ed,0x3c24c57b,0x3c727fb5, -0x3cd3a92a,0x3cd8bfe8,0xbb1369dc,0x39958712,0xba878391,0x3beba494,0xbc00153c,0xbba94b97,0xbbe890ab,0x3c8a8e4a,0x3c1d9f3a,0xbca010e0,0xbd05b6e0,0x3d04cc56,0x3d6d0c49,0x3d48557d,0x3c86d157,0x3b217f2a,0xbcf1d1a6,0xbd6395e5,0xbc87f059,0xbd8aaa8f,0xbd748b6a,0xbcb89f2e,0xbc3c7841, -0xbc1f40b6,0xbd002f5f,0xbcc17902,0xbcb2f501,0xbc162345,0xba31bb13,0x3b3f17ca,0xbbce93ca,0xbbd7e59f,0x3a547bc5,0x3c68ff04,0x3ca2623a,0x3c4cca00,0xbbf6952d,0x3b09b3da,0xbb7b5e61,0xb9206efc,0xbb07fa6e,0x3bb7d5bc,0xbc6e3c00,0x3cb935d1,0x3cfbdd31,0x3d57e512,0x3d036de2,0x3d8512ef, -0x3da1c295,0x3d536aa6,0x3d1537d4,0x3d16940c,0xbbe5d86e,0xbc3ee23d,0x3c5a1434,0xbd4ab938,0xbd5b1fe0,0xbcbc40e3,0xbc280577,0xba63fe52,0xbcdf54fc,0xbccaf9b0,0xbd0430db,0xbd062b9e,0xbc82a287,0xbbdd5d2b,0xbc588b92,0xbbb3bb6f,0x3b1e2301,0x3cef43c8,0x3c2907b3,0x3bb39c98,0x3b70d7d7, -0x3b0be30d,0x3b8673da,0x3b4146bf,0x3a9f875a,0x3c253c2c,0x3c297df6,0x3cddb869,0x3d1f0f9a,0x3d77c7e4,0x3d7d316d,0xbc2b1aad,0xbbd12a94,0xbc5957f3,0x3c40ede8,0x3d441640,0x3d9383ca,0x3d8ff080,0x3d0e397c,0xbcd1cbea,0xbd684722,0xbd17e04f,0xbd3785e1,0xbcdcbc90,0xbcec6ec9,0xbc95ce74, -0xbc95feba,0xbc9fb637,0xbcc4ffc0,0xbc73c5ba,0xbb9d4dc6,0xbb813634,0x3bbc5145,0x3ca2130f,0x3c30cc43,0x3c5a3355,0x3c020e83,0x3b348312,0x3b5af021,0x3c52159a,0x3b836b61,0x3c25aa3c,0x3ced1a2f,0x3d02b46e,0x3d076aa1,0x3c7e8c7e,0x3bd08a0a,0x3ce7eea6,0x3ca90549,0x3c9ecf27,0xbacd335e, -0xbc5d8f4c,0xbac70cf0,0x3b33cebc,0x3d150278,0x3c6df3d1,0x3cd46135,0x3d376b99,0x3d1767fe,0x3c5349db,0x3a63bb44,0xbc0929c7,0xbbf18449,0x3abedb8f,0x3bbbd756,0x3b8693b9,0x3c075cd7,0x3bc7de30,0x3c28b4dd,0x3c69d5a9,0x3cd8358f,0x3cc46079,0x3c267966,0x3c90f1e8,0x3c9704db,0x3cf7be07, -0x3c866d09,0x3c3f10a5,0x3c1d7240,0x3c64c85e,0x3c90a3a7,0x3cc39340,0x3cd41905,0x3a780061,0xbbdc2cdd,0xbbd2c7d7,0xbab6fc90,0xbb8981af,0x3c600781,0x3c909f00,0x3c12627c,0xbc3bdf25,0xbc8644d3,0xbbe16f1e,0x3c42c7db,0x3cf1468d,0x3d170c73,0x3d1dbf44,0x3cf80d91,0x3c4aa352,0x3c4d8372, -0x3c5d248a,0x3c711524,0x3c940bbe,0x3c9cc466,0x3cbdfb11,0x3c468f8c,0x3bf60708,0x3ba2320e,0x3c1f00d8,0x3c7bebf9,0x3c9ec3b7,0x3cb11168,0x3cacb2ed,0x3c97851b,0x3cc538ce,0x3cb6e8fa,0x3c999ba5,0x3bc5942b,0x3b8eb8fd,0xbaaaa215,0x3bd1eaca,0x3c03410f,0x3c1e9c88,0x3c298d60,0x3c165e26, -0x3c23b156,0x3b6ff4dc,0x3b396c83,0x393d5b58,0x3c14e404,0x3c7cedfa,0x3cbcd94c,0x3ccd0404,0x3cb025f1,0x3c6ea0f6,0x3c863d3c,0x3c72ecb0,0x3c84abf0,0x3c82a55a,0x3c4704b4,0x3bfc19ea,0x3c4c93bc,0x3c6109ac,0x3c98851d,0x3c85e4b5,0x3c622c9e,0x3c35f1c1,0x3c4c80e8,0x3c49f052,0x3c3358ab, -0x3c579673,0x3c40fb33,0x3c26f8b8,0x3bdcef39,0x3bea4a29,0x3b87d224,0x3c108661,0x3c67c0ae,0x3cb3dd78,0x3c8a6d11,0x3c6c459b,0x3c5277ca,0x3bfdd4cd,0x3a9645c4,0xbbec52c6,0xbb3b8d32,0xb9c6cf28,0x3b9378d9,0x3b16d679,0x3b868c20,0x3c0d599c,0x3c15aeac,0x3c2e0436,0x3c1c7837,0x3be9f121, -0x3bd62d6f,0x3b05c190,0x3c223d1c,0x3c858b3c,0x3cc348bf,0x3c8c25e4,0x3c5d27e3,0x3c35e678,0x3c3c255b,0x3c621ece,0x3c817100,0x3c5ff107,0x3c20034b,0x3c266aea,0x3c13ef39,0x3ca86a86,0x3cc42d62,0x3ca6f63e,0x3c76e06e,0x3c03a9af,0x3c17c3b8,0x3bf76350,0x3be39c0f,0x3bdc2ee6,0x3c0ef3cf, -0x3c22a87b,0x3bf2d33b,0x3b5deef9,0xbaa07b48,0x3a4feb31,0x3aaa770b,0xba631c44,0xbaeaf1ae,0xbade76be,0xba97d3ae,0xba4c80cc,0x3bbadad8,0x3c296cc5,0x3c3f9544,0x3c3143fa,0x3c319d4b,0x3c835d35,0x3c96e8ec,0x3cab0b48,0x3cb9b607,0x3ca64e40,0x3cc1524c,0x3cb6b524,0x3cbb6d20,0x3caf0f5f, -0x3cbde3ab,0x3c29d95d,0x3c35dc2d,0x3c334113,0x3c423498,0x3c4bd2c0,0x3c4f0c4b,0x3c3fe00f,0x3c3bf7b7,0x3c2f19b4,0x3c18399a,0x3c05cc3e,0x3c02cd90,0x3c11f519,0x3c179a7c,0x3c134d9c,0x3c0e096e,0x3c1d70c7,0x3c256b0a,0x3c1ec533,0x3c208863,0x3c17ece0,0x3c0ae1da,0x3bf5ccd4,0x3c27f44f, -0x3c3d8a38,0x3c48eca5,0x3c49edd8,0x3c2f9cf4,0x3c2ce541,0x3c315a1e,0x3c35bd79,0x3c38898c,0x3c2fb28f,0x3c2cd9a0,0x3c13d146,0x3c244ab6,0x3c8c8847,0x3a9a7d4f,0x39ce6ea8,0x387772a1,0xbb216be8,0xbaeb02b6,0xb546517b,0x3aff5140,0x3b250cf4,0x3b69935f,0x3a2ff8eb,0xb907ea4f,0x3aa67817, -0x397bec61,0x39121b70,0xb8d691e4,0x39d32f3f,0x3a4f713a,0x3a9d7980,0x3a9ee441,0x3acab9f6,0x3b0bd463,0x3b2584d7,0x3b1d4e7c,0x3ae967e5,0x3b23acd3,0x3b1405c3,0x3aefd65e,0x3a07c036,0xb77684df,0x376cb9cf,0x39859b73,0x39db5028,0x3ab9842f,0x3ab1afd4,0x3a50d046,0xbb180afd,0xbacf03c4, -0xbbf14567,0xbb373ad2,0xbb9c6399,0xbbdb98f6,0xbbd8bef0,0xbb13d29f,0x39eb0203,0x3b395274,0xbbb268b8,0xbb9a072a,0x3b236113,0xbaa47e81,0xbab99622,0xb9834cfa,0x3aa12fcf,0x3b09b9f2,0x3b525779,0x3b2c6f31,0x3b538f2d,0x3ba2da0a,0x3bceca38,0x3bd8f817,0x3bc6d2d3,0x3ba2237c,0x3b924f91, -0x3bb56b93,0x3ad38505,0x39ff4045,0xb9b3ee1d,0x3a23d461,0x3b3b4983,0x3ba39350,0x3b52beb0,0x3ada6791,0xbb3e0232,0xba95241c,0xbc3fe67e,0xbb83b305,0xbc84ee47,0xbc66de1d,0xbc0ab3ec,0x3b609607,0x3be9472c,0x3c5c6dba,0xbb1f3400,0xbbd15ccd,0x3b82632b,0xbb646bc4,0xbb2bbc35,0xbad075af, -0x399acb3e,0x3b0a49a7,0x3b5f8727,0x3b773efd,0x3b9dc454,0x3c157d10,0x3c47a0ea,0x3c3beaa4,0x3c3583f9,0x3c25f67a,0x3c0d70ec,0x3c362517,0x3b1961ec,0xbab02175,0xb9106b28,0x39f2bada,0x3b599d4c,0x3c079d62,0x3bbc8d51,0x3abff9c2,0xbc4c77de,0xbbccdba0,0xbc74faf8,0xbbd5668f,0xbc647035, -0xbcb98204,0xbca99946,0xbbde1fad,0xbb597950,0x3bf7710e,0xbc6d4e54,0xbc8a1a78,0x3c16811e,0xbbffb1c2,0xbbb8e115,0xb9a483c3,0x3b1b747f,0x3b842ffe,0x3bb9db70,0x3ba0c51c,0x3bd9802e,0x3c3b36e5,0x3c89223c,0x3c9099bb,0x3c893645,0x3c60af9a,0x3c422d7e,0x3c8c5a70,0x3be3d562,0x3b2df9cd, -0xba1156b9,0x3a67275d,0x3bbf1cd4,0x3c76e820,0x3be55c84,0x39fe95d0,0xbc2444c7,0xbbc4939e,0xbc946b76,0xbc68b6b2,0xbcd2dd15,0xbcf0ccfa,0xbc2584b1,0x3c2887aa,0x3ca2d2e0,0x3cdad56a,0xbb466f26,0xbc3eebe5,0x3c02dfa0,0xbbe9134c,0xbb9dcb62,0xba297c23,0x3a2ae113,0x3ad7b766,0x3b33c89d, -0x3bbf049d,0x3be9f48f,0x3c4dbca5,0x3cbabb44,0x3c9c88d8,0x3cabd746,0x3c8c4df8,0x3c821b23,0x3c9f80b5,0x3c370a34,0x3c19374f,0x3ae6c186,0x3b5170d2,0x3ba34389,0x3c8df6ac,0x3c159848,0x3b3417a5,0xbca90c3a,0xbc778b4e,0x3ced6b0c,0xbc2c3249,0xbcfa3801,0xbd1fc2cf,0xbd524936,0xbceadae1, -0xbcadaa11,0xbbfe94af,0x3c739bab,0x3b988e50,0xbd2432ea,0xbd10b736,0xbd1890f4,0xbd04c3a8,0xbb86f189,0x3b3b8ea9,0xbcc4b66b,0xbca69ee4,0xbc77d9cd,0xbbd9003f,0xbaa8a93f,0x3bde6c61,0x3c915e94,0x3bddbe6a,0x3bf1683d,0x3ccd7f49,0x3c1db04c,0x3b38a4ca,0x3b59c6f8,0x3bdec929,0x3b36dc29, -0x3bc2fe48,0xbc27d7e2,0xbc018f6b,0xbbb1c533,0x3cb5396d,0xbd675801,0xbd6c7fd7,0xbd666221,0xbd0d105b,0xbca59faf,0xbb9538a1,0x3c82f34b,0x3c4239fa,0xbce3b5b7,0xbd23e459,0xbd6e7a02,0xbc5bb294,0x3baeacb3,0x3c2b97a8,0x3be941be,0xba1f40d2,0x3c2923f3,0x3be52c37,0x3a2b5fca,0x3b57cb5b, -0x3bff01cf,0x3c4c0a6c,0x3c42d59d,0x3cc44922,0x3cd117ea,0x3b7fa59f,0x3b2f14a3,0x3b1143ca,0x3ba9b61d,0xbb01b741,0x3b2a7c1f,0xbc055058,0x3c97e74c,0x3c2c4593,0xbbf5ebc9,0xbd04dfe7,0x3d499724,0x3d033e25,0x3ccce004,0x3c1e0a90,0xbd044b01,0xbd2b377a,0xbd60f8a2,0xba11c91d,0xbd58709b, -0xbd6900e5,0xbd8a8994,0xbcdacf63,0xbc8217e8,0xbd0a1a39,0xbc70d2cd,0xbc72f12b,0xbc18daaf,0xbbf245a0,0x3b065937,0xbb90b3fb,0x3b5be632,0x3c0c3efc,0x3cf99ee6,0x3bd9deeb,0x3a069461,0xbabd83b1,0xbb8d7dcd,0x388f027b,0x3a78a3a6,0xbb071187,0x3b1b3d29,0xbc4ed9a8,0x3c2ee74e,0x3c914cb6, -0x3d819fb7,0x3d11310c,0x3d8ae202,0x3d7f8d6f,0x3d260236,0x3ca43e01,0x3c34eda0,0xbd014fca,0xbd52df52,0x3c62db7f,0xbd9c0455,0xbd9ded0d,0xbd74a8cc,0xbccee140,0xbbb61208,0xbcb7ed65,0xbbbc410e,0xbbf9a7be,0xbc40bb1c,0xbc506d12,0xbc16b9d0,0xbc18743a,0xbb4e2aa7,0x3c0ccd1f,0x3d2ae925, -0xbb065376,0xbbf5aa08,0x3bb33180,0xbb0c29ae,0x3b75b081,0x3a125283,0xbb438f4c,0x3a42140f,0x3c244752,0x3c9c596f,0x3d008b22,0x3d8d8ca0,0x3d732bdf,0x3ba4e56a,0x3c94a1c8,0x3cf0ec36,0x3d372deb,0x3d9f2cff,0x3d756f99,0x3d674ebe,0x3d1d3cdf,0xbd0d35aa,0xbd537332,0xbd1f66ea,0xbc1aa1ca, -0x3a147129,0xbc8cea11,0xbcb2ab44,0xbcd0ec5c,0xbc90c751,0xbca2d67a,0xbc924d8b,0xbb8d9de0,0xbb80bc28,0x3b355b5e,0x3d02ac2f,0x3c648cc3,0x3c399801,0x3c338631,0x3b9eb95c,0x3aba7c7b,0x3c01c018,0xba81f40e,0x3b4f7feb,0x3cb29022,0x3d045848,0x3d13e778,0x3ce28426,0x3c8354cd,0x3ce3b714, -0x3cbd5fac,0x3c98a8dc,0x3bec935c,0xbbfcc6a3,0x3bf756c8,0x3cd698c8,0x3d9038d1,0x3d1c1681,0x3d106e76,0x3c14d0c5,0x3b45ba09,0xbb4f9a41,0xbcb0edf6,0xbce1da1c,0xbd07c0fe,0xbc95aa34,0xbc8af691,0xbc24f5e2,0xbbb5a922,0x3baf19dd,0x3c32c6ff,0x3c78a16c,0x3c627d01,0x3c626178,0x3c445763, -0x3c6ce54c,0x3c90e292,0x3ced07be,0x3cc35ae9,0x3cadb24c,0x3c531881,0x3c5ed451,0x3c7cd83f,0x3ccc1ab6,0x3cbd3c85,0xbaf17ed6,0x3847f78b,0xbbca30d2,0xbb643bfd,0x3b47102d,0x3c82e9cb,0x3cb4186e,0x3c7d8fca,0x3c92d841,0x3c56d649,0xba9b186a,0x3cba22d2,0x3d0aca88,0x3d30e0e9,0x3d2bb3bd, -0x3d17ea28,0x3ca5a3ed,0x3c5f7730,0x3c1bf02a,0x3c570430,0x3c80119e,0x3c58be5c,0x3c94a728,0x3ca1c3b8,0x3c8489d3,0x3bd37306,0x3bee5d65,0x3c2fd8f1,0x3cae4f61,0x3c54d9c0,0x3c6af06d,0x3ca28c53,0x3cb8af99,0x3caf245e,0x3c9794b6,0x3bec5157,0x3be02d4d,0x3b96729f,0x3b7e456e,0x3b3a0954, -0x3ab85dad,0x3c197658,0x3c5fa4fa,0x3c85f494,0x3c9c529c,0x3c92b5d5,0x3c165615,0x3c7ae47d,0x3c800750,0x3caecd94,0x3cabd54e,0x3c8db29d,0x3c592a67,0x3bf4a594,0x3bac8b56,0x3b5ed9ec,0x3c1e566c,0x3bf84eea,0x3b38e3ff,0x3c24320e,0x3c69d9c4,0x3c87d45c,0x3c6e9654,0x3c3de34d,0x3c485cff, -0x3c3ca3e6,0x3c4ed171,0x3c8aefa2,0x3c6e5aa0,0x3c6aaa66,0x3c54c6b6,0x3c3a980e,0x3c2d5d32,0x3c2f665f,0x3c5701f2,0x3c6b4f94,0x3c87d79d,0x3c76805b,0x3c7b1f2f,0x3c927381,0x3c3679ca,0x3c190fb9,0x3c0be734,0x3b6e8e7c,0xbb196793,0xbb896e93,0xbb8e6bf0,0xbb91557f,0x3a87d942,0x3a0f7cb7, -0xbbba75fd,0xbb0752f6,0x3a8307b8,0x39da0f32,0x3a0b0223,0x3b9484f0,0x3c33662d,0x3c9975ca,0x3c806907,0x3c5087a7,0x3c099421,0x3c44342d,0x3c5c4ecf,0x3c76fc2b,0x3c57ff9f,0x3c4b4aea,0x3c365dc1,0x3c2b4c0c,0x3c9ed332,0x3c79ffdb,0x3c62db0f,0x3c34e0ce,0x3c0232dd,0x3c270565,0x3c0b8b4f, -0x3c049fe0,0x3c2cf097,0x3c38af6b,0x3c345cec,0x3c57795c,0x3c87e986,0x3c897673,0x3c8b1279,0x3c76447f,0x3c39c740,0x3c331e41,0x3c4ac263,0x3c31c573,0x3c2f5cd9,0x3c464f7b,0x3c68de95,0x3c72e1a4,0x3c4c1366,0x3c34717a,0x3c48e804,0x3c641db8,0x3c8555bd,0x3c80b59f,0x3c456177,0x3c7d43dc, -0x3c6d9028,0x3c804cb4,0x3c986e64,0x3c86c518,0x3c183101,0x3c1c01f1,0x3c2b8929,0x3c2e9715,0x3c2a0a0d,0x3c294090,0x3c222e07,0x3c1eb4f9,0x3c0ec4cf,0x3c08e0d8,0x3c087419,0x3bf011aa,0x3bc2419b,0x3bb6f826,0x3baf8d13,0x3bc5eaac,0x3be3cdee,0x3be446d7,0x3bd524e5,0x3bcc9d37,0x3bd578a2, -0x3be33743,0x3beab3fe,0x3bf2f05b,0x3c137b57,0x3c2bfd13,0x3c341a8d,0x3c22e923,0x3c1c742a,0x3c28bf24,0x3c333bfc,0x3c2af378,0x3c0f97c2,0x3c07a2f5,0x3c2af204,0x3c1efb7e,0x3c6fc7ca,0xb959c479,0xbb123f8c,0xba6b8f41,0xbb31d867,0xbb152b31,0xba1bb139,0xba5949a6,0xb9d3e337,0x3a3e7d2e, -0xba50b5ce,0xbaa8087b,0xba59e2df,0xbaafbc2e,0xbab65af2,0xbae75a0a,0xba55985f,0xba1904be,0xba1f6a40,0xba08f4be,0xb951166c,0x39bb2754,0x3a7b05ea,0x3aa5497c,0x3afc8bd8,0x3a99155b,0x3aa54e58,0x3aff7116,0x3a3bf0a8,0x38b8d3ed,0xb905c8ca,0x3a017f46,0x3a7ac4c8,0x3ad853ba,0x3a4853fa, -0xb99cf4c9,0xbaf90f5c,0xbaff9b3e,0x3a372bb7,0x3b46cb33,0xbbb2d2ea,0xbbef766c,0xbb0671b8,0xbb3e39ac,0xba94ece6,0x3b7da90c,0x39a7f6cf,0xba56410b,0x395794a2,0xbaf51112,0xbb50ebd4,0xbb6e206d,0xb9704a05,0x39a375a2,0x39794f1c,0xb99e77b6,0x3a55bce5,0x3b63214b,0x3bb24cd4,0x3bc62955, -0x3bb27de3,0x3b8d5c75,0x3b51cead,0x3b9059ed,0xb839dd5f,0xba661655,0xba9c515b,0x39ae4c0b,0x3aeee768,0x3b8ba3f7,0x3b418deb,0x3aac1d2d,0xbb544e85,0x3a2e2201,0xbbe4b986,0xbae5f8ca,0xbc62a5fe,0xbc5d79cd,0xbad13d1b,0xbb93944e,0xbae7d371,0x3bea0b01,0xbaa39ac6,0xbb704de4,0xbad8290d, -0xbbbf4891,0xbbc7c82d,0xbbe8228b,0xbb08da54,0xb95949be,0xba25c972,0xba2060b9,0x3a7d9745,0x3bb5b47c,0x3c11613b,0x3c26edc8,0x3c0dae71,0x3c1c1619,0x3c000cb6,0x3bef3859,0x3a7af93c,0xbb31324e,0xbb0b61b4,0x384ca54e,0x3b5a7b8f,0x3be874c2,0x3bb0a2dd,0x3b077214,0xbc245ab2,0xbbaf956b, -0x3bbda6c5,0x3c007b63,0xbc9c63ab,0xbcbb33e9,0xbb377e1a,0xbbf184e4,0xbb50a51d,0x3c5784bf,0x3b793da6,0xba8f794c,0x3b4df277,0xbba39d41,0xbc00920f,0xbc10cd5b,0x3a72e1eb,0x3b26e919,0x3b33d842,0x397bfd9f,0x3b8bb41f,0x3c3395a5,0x3c735b6d,0x3c96658c,0x3c84d4f9,0x3c5f0efa,0x3c4ff894, -0x3c6bc37a,0x3b8bd2e9,0xb8682174,0xbae941e5,0x3a815935,0x3bd4284b,0x3c4cb7f0,0x3c1db2ec,0x3b8a3a61,0xbbf4ccfd,0x3b2cf45d,0xbc72a5be,0xbbf35253,0xbd00c594,0xbcd650dd,0x3b9529f8,0xbc2de9d5,0xbade6ff5,0x3c5885b2,0xbb076be8,0xbbf72998,0xbb64ca74,0xbc08c26b,0xbc2c0b84,0xbc36a3bc, -0xbb2fddab,0xb90e0df1,0xb9aa8a68,0xba339baa,0x3b78c736,0x3c41b01f,0x3c639a8b,0x3ca26234,0x3c9f76e2,0x3c8ecfce,0x3c71a8c9,0x3c9e9f7f,0x3c0b400f,0x3baddf07,0xb825541e,0x3abcfbfe,0x3bbdd632,0x3c74db4e,0x3c525e5d,0x3c216466,0xbc994260,0xbc0b6499,0x3cde9124,0xbd2ea643,0xbd030a5c, -0xbd3931f7,0xbd9b8962,0xbd12ccde,0xbccab3e2,0xbcda2afc,0x3cf95eeb,0x3d10df0c,0xbc0baebf,0xbcd409c9,0xbcb630b2,0x3ae3f49d,0x3c4713e5,0x3c4f7747,0xbc1ae0c4,0xbaf935fe,0x3a4d524e,0x3b4003cd,0xb8933098,0x3bccd81b,0x3c3a87f1,0x3bfea84e,0x3c25789c,0x3cb35fe3,0x3b8a95fd,0xba484259, -0x3be98433,0x39c74fe1,0xbbec6086,0x3b9cb5ef,0xbc247b37,0xbc1de820,0xbc32085d,0x3cd7eb34,0xbd5986b7,0xbd6729cc,0xbc81b260,0x3b89fcc6,0x3d2ebc51,0x3a0b9087,0x3c189966,0x3cbdc48c,0xbae9bab7,0xbcd96333,0xbd42cf22,0xbd2427e9,0xbd1e24b7,0xbc9a78fa,0xbcb77de8,0xbc5e138e,0xbb0e876a, -0xb927ec5f,0xbacd68c4,0xbb020833,0x3bfcc65d,0x3c2e0539,0x3c96fd85,0x3c6a0b86,0x3c506c44,0x3ba38b43,0x3b46bf56,0x3ae17edc,0x3b405164,0x3a1ede02,0x3abd2842,0xbbca463a,0x3c3ce12f,0x3bd8f474,0xbb1e5cdc,0xbd012900,0x3ced9927,0x3b46e815,0xbc880d0d,0xbcf93fab,0xbdaa2ac7,0xbd6e26a2, -0xbd606468,0xbcd747db,0xbcb5d797,0xbcb41ebd,0xbd134081,0xbce3db3e,0xbc8403c6,0xba8083cf,0x3a9a2502,0xbb5a6485,0xbb55d645,0xbbfca4ed,0xbb95605b,0xbb516e8e,0x3bb1fd1d,0x3c7d867e,0x3d17ada2,0x3b835784,0xbadffa82,0x3be6bb61,0xbb7d9278,0x3b8cea6c,0x3b2a293c,0xbaa68453,0xb73d6b87, -0xbbd95d39,0xbb7251e7,0x3b0e9a3e,0x3d196235,0x3cfde9cd,0x3d6737f6,0x3d14799e,0x3c3a6d66,0xbc1743ff,0xbd368775,0xbd3c5f48,0xbd590677,0xbcf44fbc,0xbd3797de,0xbd154554,0xbd3e7621,0xbcc4c944,0xbc86b017,0xbc5f8118,0xbbda326b,0xbbeaacfb,0xbc32eb3b,0xbc3ec2c6,0xbc222ab4,0xbbe37781, -0xbbb2e5ff,0x3b7843ad,0x3d13a5c7,0xbb5f93bc,0xbc12f488,0x3bf47d81,0xbb767fe0,0x3b92a36f,0x3ae1dd1c,0x3ac2abf0,0xb958c392,0x3c0c7ce5,0x3c0ddd4e,0x3ca6dc62,0x3d565ebc,0x3d5a253a,0x3cd4097b,0x3d327e42,0x3da99d4f,0x3dab74ff,0x3db2d00a,0x3d56e0a0,0x3d08333f,0x3bb6263d,0xbcd119dc, -0xbce4f0ed,0xbcda7e6a,0x3c55f83e,0x3c7661a6,0x3ba15bc9,0xbc548b42,0xbc8ab309,0xbc5efe5e,0xbc7bb3c2,0xbc8d29c3,0xbc613d19,0xbc3fd169,0xbba2f104,0x3cd0a8a4,0x3bc30b3f,0x3bb0fb29,0x3c11b3c5,0x3b44cee9,0x3b0fb60d,0x3b3219a5,0x399c4997,0x3bb86cd9,0x3ca33ee0,0x3cf087ed,0x3d0ed986, -0x3d2e11b4,0x3cd73e56,0x3ca18ac8,0x3bbcf215,0x3a40722f,0x3ab9c706,0xbbdb77ae,0x3cd0cf03,0x3d52152b,0x3d9f2afd,0x3d545109,0x3cf2a7a9,0xbd00a66e,0xbd0fae79,0xbce7b820,0xbc92e7f2,0xbc7fef25,0xbcb0bf2d,0xbcec7b76,0xbcc27958,0xbc8069b9,0xbc047d18,0xbac1a652,0x3c08b488,0x3c9a22b5, -0x3c29df4a,0x3bef63d8,0x3bd0970a,0x3c8c0cf3,0x3cac72d8,0x3cb1511f,0x3ccf463d,0x3cbddd96,0x3cce59eb,0x3c96f8b4,0x3c7d0400,0x3cb67fe7,0x3c8a09a3,0x3c1afa55,0x3c679363,0x3c82052f,0x3c63c390,0x3cbc4eab,0x3c78de4f,0x3c980205,0x3d09731c,0x3d02ab13,0x3d076547,0x3d0ee096,0x3d068078, -0x3ce533c0,0x3d0ecead,0x3cf18aff,0x3cf89bb4,0x3cdd545e,0x3cb5e20c,0x3c8bf80c,0x3c379a45,0x3c3747cc,0x3c2e641e,0x3c2747d1,0x3c82cc02,0x3c9977d7,0x3c71dfea,0x3c348d32,0x3c243b8b,0x3c287ce4,0x3c107d6a,0x3c1f11d1,0x3c64e4ed,0x3c9b400c,0x3cb3991c,0x3cc30215,0x3c92f847,0x3c0939d1, -0x3b3f92b6,0xba0bd1e6,0xbb6228cd,0xbb935ff3,0x3aa8365c,0x3ba89e98,0x3c84b5d0,0x3c9627d1,0x3c943483,0x3c65580b,0x3c17e867,0x3bcda48c,0x3c6d2e13,0x3c30d32b,0x3bc20aa7,0x3bb54201,0x3b011189,0x3bb8b157,0x3b3d057c,0x3b03fbd6,0x3ba0ba6f,0x3c1c6229,0x3c337c1a,0x3c519ae5,0x3c435c49, -0x3c48cc8d,0x3c361c85,0x3c401a50,0x3c36c086,0x3c44520a,0x3c6e8373,0x3c5516c7,0x3c4ffe23,0x3c47b8b6,0x3c2ff873,0x3c0f1ca8,0x3bc53fe6,0x3bc69e25,0x3c01662d,0x3bc606ef,0x3c04b3d5,0x3c03b4ba,0x3ba5f001,0x3b30b4e8,0x3b81cd9a,0x3ab793cc,0x3ba11c85,0xba3730d5,0xbb7249a6,0xbbafa9a4, -0xbc160661,0xbc0e8cbb,0xbbcbcdf8,0xbc1f830a,0xbbeac19e,0xbb39a900,0x3b57aa10,0x3c0a22e7,0x3bcdd0a0,0x3bf8c83c,0x3c2575d4,0x3c3dd86a,0x3c3d70b3,0x3c5b328b,0x3c562bc8,0x3c5314ad,0x3c461b86,0x3c3610bf,0x3c1ce0c5,0x3c1a5e8a,0x3bfa6f1a,0x3c6b8157,0x3c759461,0x3c63dc77,0x3c41065e, -0x3c2c6c91,0x3c28c971,0x3c18d99c,0x3c3a4d53,0x3c53ee23,0x3c518e43,0x3c590f58,0x3c48064c,0x3c70e49e,0x3c800aa3,0x3c8cf5d1,0x3c91ef82,0x3c878597,0x3c81fc25,0x3c8b0a09,0x3c658e87,0x3c4e0bc4,0x3c3cff50,0x3c382dcf,0x3c62f659,0x3c72052a,0x3c71dd95,0x3c609df0,0x3c47d424,0x3c3908bc, -0x3c2e3a39,0x3c1287b2,0x3c1be095,0x3c2b2c3c,0x3c304d57,0x3c550ea9,0x3c6273d9,0x3c2d3adc,0x3c49a46e,0x3c4b529c,0x3c4a3d0f,0x3c44623e,0x3c47cb1b,0x3c3c30fe,0x3c26b2cc,0x3c16d0db,0x3c12d8b6,0x3c140a98,0x3c122096,0x3c075c47,0x3bf8430b,0x3bea59f3,0x3be4e114,0x3bdf77e2,0x3bebf5bc, -0x3bf389e0,0x3c029093,0x3c06fb87,0x3c0956a0,0x3c00ec8d,0x3c24a688,0x3c15b46d,0x3c0f9bd6,0x3c19252c,0x3c169658,0x3c1a6176,0x3c201e46,0x3c19f3ab,0x3c15b830,0x3c280957,0x3c347351,0x3c0b4963,0x3c1e6fe0,0x3caece84,0xb9a186a8,0xb9faff85,0xb9e35ca7,0xbab9099d,0xbaa6eae7,0xb89ec851, -0xbaae319d,0xba941264,0x395c283c,0x381c05aa,0x3936a9fb,0xb9f3a24c,0xba8e1515,0xba9d97bf,0xbaa6dfa7,0xba258d0a,0xb9f7a805,0xba23e6dc,0xb9df8220,0xb8a70b02,0x3a152075,0x3a7e36e8,0x3a93a936,0x3a98a99b,0x3ab1c976,0x3a88e726,0x3a1010b5,0xb8f05dd0,0xb9f591e6,0xba148b6b,0xb89fb184, -0x3993b7d5,0x3a5f1642,0x3a7ef89e,0x3a3ce86d,0xbadda271,0xba41a5b7,0xba37896e,0x3a74f2d8,0xbb8ae7f8,0xbbb14bad,0xbafface2,0xbbf53037,0xbbb8a34d,0xb902e0e5,0xbabb6e8f,0xbafbd117,0xbb172b01,0xbb24abeb,0xbb5826f2,0xbb818398,0xbb0bbe31,0xbad4b88a,0xbaf6ecae,0xba96818a,0x39db4bab, -0x3b691f9f,0x3b9cd5cf,0x3bb3227e,0x3baa78a4,0x3b84bc0b,0x3b48b5d5,0x3b3b38be,0xb9fa45e3,0xba97adb5,0xbaac1fd1,0x39baf984,0x3b15f61c,0x3b59605d,0x3b61469c,0x3b0cadc8,0xbb3e6efe,0xba934fba,0xbba68eb8,0xbb4a97c6,0xbc07d07c,0xbc0403d2,0xbb3b3184,0xbc3d6abd,0xbc29468d,0xba98c815, -0xba133d3b,0x3973b60d,0xbb82d47f,0xbbc80f1f,0xbbf2ed38,0xbc0488f9,0xbb88cde7,0xbb39beb4,0xbb3c081a,0xbadd6be9,0x39f7624c,0x3bda2a53,0x3c063287,0x3c1d2356,0x3c165ffa,0x3c129f48,0x3bd69278,0x3b8fc02b,0x37d6a3fc,0xbb3241f5,0xbaedb560,0x386e3894,0x3b4e1b0a,0x3bc3d22e,0x3be710d6, -0x3b867f5c,0xbc048d1d,0xbb899c91,0xbbfeca51,0xba25a124,0xbc5e9f57,0xbc89527d,0xbbde2f6b,0xbcbd4462,0xbc93a1da,0xbb3e89fd,0xbb7508eb,0xbbaa2434,0xbc0166d9,0xbbf9df8c,0xbc3243a8,0xbc74bf09,0xbbf073bb,0xbbb971ec,0xbb8eac86,0xbb68c551,0x3ae1be76,0x3c4dba80,0x3c78d532,0x3c920372, -0x3c89a0eb,0x3c54bf48,0x3c43669b,0x3c419aa1,0x3b0cc2c9,0xbaa79943,0xbb1ef673,0x3a3fd47b,0x3bf0feaa,0x3c2a18d2,0x3c2720af,0x3b8e1f65,0xbc29a620,0xbc04422b,0xbcb842e4,0xbc6b04a8,0xbc70300d,0xbc799216,0xbbae5277,0xbcbbb21f,0xbc9b37c3,0xbbaa475d,0xbb30d870,0x3a883b5e,0xbc2d60c3, -0xbc3f9083,0xbc853fb3,0xbc99e5e6,0xbc1f6854,0xbbb1a705,0xbbb1c644,0xbb9d9e3c,0xba04ae41,0x3c7920bf,0x3c854f95,0x3caf4981,0x3cbf4eab,0x3c8247c2,0x3c4fce2f,0x3c88ebde,0x3be676c5,0x3b3dae2f,0xba21e8d0,0x3a7cdc01,0x3bc51bcd,0x3c434732,0x3c33da51,0x3bfc9aa0,0xbcc1cf83,0xbca48ea6, -0x3cdd5d15,0xbd3e6a58,0xbd000ed4,0xbd1afe06,0xbd7f0577,0xbd1b81f7,0xbcb8107e,0xbc9ad3d5,0x3ccf15d9,0x3cd9478b,0xbc107109,0xbc745844,0xbcd6563b,0xbcddc5aa,0xbc83f2cd,0xbbe45ff3,0x3ad5fdd3,0x3be03524,0x3c345cbb,0x3c5c1c54,0x3c23ddfd,0x3c1e9991,0x3c0b51b5,0x3c7fa07f,0x3c7229a6, -0x3c85496e,0x3b10c3e3,0xbb37a29f,0x3be32fbb,0xbc23480b,0xbc0edb76,0x3c7eab1a,0xba87ee4f,0xbb65e241,0xbc07cf6f,0x3d10ebb1,0xbd27941d,0xbd2b65fd,0x3bde376d,0x3b8efd26,0x3cb5c3ed,0xbbe2ed59,0xbc80b795,0xbcbdce38,0xbbd68358,0xbb1ab065,0xbc890543,0xbce16ea9,0xbcec8dbc,0xbc822a2e, -0xbbd5e079,0xba1ccc58,0xbb5b068b,0xbbd272ac,0xbb8e7158,0xbb912ff6,0x3b9171f9,0x3c46c93e,0x3cd57dfa,0x3bf9b4a7,0x3b5492a6,0x3b272208,0x3a835a7b,0xba34a232,0xba952f33,0xbbbc25d1,0xbbed742c,0xbc13dda4,0xbbf66d4a,0xb9995525,0x3c75af25,0xbcc45fad,0x3c5adfe7,0xbcf1e00c,0xbd8805f1, -0xbd61967a,0xbda119a6,0xbd4de804,0xbd146d44,0xbcedc2ea,0xbaa29e68,0xbad9e894,0xbd13ab01,0xbd0577a9,0xbcbb3ab8,0x3c5f8cf2,0x3c7dbf7d,0x3c6549c8,0x3c23b9fa,0x3bef0794,0x3c083e77,0x3b314be2,0x3bda61e6,0x3c6d639e,0x3cf0f16f,0x3b034b99,0xbb96b9ca,0x3b85a567,0xbb4acde3,0x3b2a85c4, -0xbad09809,0xbb43f5d6,0xbb33fbf5,0xbab420c8,0xbc15a9f5,0xbc28d710,0x3c4fa75a,0x3c676d55,0x3d02d542,0x3c18eb4d,0xbc7a8094,0xbc9eb364,0xbd4df835,0xbd09b562,0xbccca054,0xbd22b16c,0xbc2ac069,0xbc368c3c,0xbd19b9d6,0xbce6779f,0xbca1f570,0x3c394491,0xbb9e9a3a,0xbb80738c,0xbc197978, -0xbb67c0e3,0xbaa28f4d,0xbb31d4d2,0x3b912cb3,0x3c02584d,0x3cdda912,0x3aa8f4f4,0xbb9d3387,0x3bfea7cf,0xbb7fd3ed,0x3b87af3a,0x3ac81e0f,0x3b9b401a,0x3b8581ef,0x3c1f8236,0x3bacccb9,0x3c605210,0x3cf2afb6,0x3d0d68a4,0x3d45768d,0x3d91d7a4,0x3deea927,0x3dd73193,0x3da5b6aa,0x3d170ab0, -0x3bdf202f,0xbcecf5ca,0xbbf5b37d,0xbc3d7bff,0xbd09993e,0xbcfc2734,0xbce2ef2e,0x3b4b19e0,0x3b2eff3f,0x3b76a408,0xbc39b5d7,0xbc26444b,0xbc476cde,0xbc334ff9,0xbb818b2d,0x3a300334,0x3c97f36e,0x3bc5bd22,0x3bf2c332,0x3c3c929c,0x3a42f25c,0x39ba226e,0x3ac2ae3d,0x3b985904,0x3c36d5bb, -0x3c922639,0x3cdc5a7e,0x3d0e65d4,0x3d45e080,0x3d281f5a,0x3bf1dc22,0xbba64ffd,0xbc65205f,0xbabb8963,0x3c90f3c2,0x3d4c347e,0x3d8b91f3,0x3d819c1e,0x3d1e9ef8,0x3c37eb33,0xbcd4a070,0xbd4dab5b,0xbd4d15a2,0xbd0d2bea,0xbd031dd8,0xbc96a764,0xbca3e2c9,0xbc0d96a2,0xbb3fa4d5,0xbb35f671, -0x3aa5f849,0x3c1feb11,0x3ca94326,0x3c0d076c,0x3b7c7199,0x3a0329b1,0x3ca81aac,0x3cc5199b,0x3c8ca1fa,0x3cbabc00,0x3cb9454f,0x3d030904,0x3ca85bc2,0x3c882d8b,0x3cabc343,0x3c3ba1cc,0x3cc69a9f,0x3cea0f49,0x3d01c92f,0x3ce14ff1,0x3ca97096,0x3c4de525,0x3ca466b2,0x3d0ccf13,0x3d1d80c2, -0x3d2d0e0a,0x3d292476,0x3ceabf54,0x3c8e955b,0x3c50f24e,0x3c7cabd6,0x3c6a5f8a,0x3c37eb14,0x3c720ec8,0x3c78c9a8,0x3c485776,0x3c312fb9,0x3c21e32b,0x3c40f237,0x3c4c2732,0x3c8b0254,0x3c9de78b,0x3c64ceba,0x3c148602,0x39fd2e18,0x3b82a64a,0x3bd889a8,0x3c57854f,0x3c75ffdd,0x3ca6a929, -0x3cd9fc12,0x3ce71284,0x3c4eed6d,0x3b9b5251,0x3b668dee,0x394759a2,0xbc02e31c,0x38d01524,0x3be6ee8c,0x3c97bab1,0x3c993ac2,0x3cac416b,0x3cbea0df,0x3c76440b,0x3c378219,0x3bea6b56,0x3c2b2f88,0x3c1b05cd,0x3c26004b,0x3c333e68,0x3c45a533,0x3c52d569,0x3c3a4364,0x3c4d7134,0x3c807be0, -0x3c5515f3,0x3c4238d5,0x3c21f95d,0x3c36934b,0x3c301a66,0x3c1ea39d,0x3c3972a6,0x3c526970,0x3c73aaa4,0x3c74e1b5,0x3c7c2eba,0x3c8ea146,0x3c748884,0x3bae8dcc,0x3bb1718c,0x3b9cc507,0x3b9b85ab,0x3bc307d1,0x3bd98dfe,0x3ba4584d,0x3b60429f,0x3b4b5b5e,0x3b8df136,0x3b318637,0x3bfcf1c0, -0x3bee3757,0x3be10547,0x3bd4a79d,0x3bd86dfa,0x3bf0a970,0x3c08cec8,0x3c391939,0x3c223d50,0x3c21a13c,0x3c487a52,0x3c7b35a7,0x3c34ac30,0x3bff7c7c,0x3b9c5271,0x3c02f35f,0x3c190bbd,0x3c6f1063,0x3c594179,0x3c76aaa5,0x3c727c52,0x3c7de997,0x3c58bc51,0x3c6e2a82,0x3c1c6e74,0x3c7b8165, -0x3c658e76,0x3c766f3b,0x3c772e04,0x3c641e9d,0x3c83a3c9,0x3c91d2fb,0x3ca717c8,0x3c9da1d3,0x3c8c9af3,0x3c81136d,0x3c4fdd8a,0x3c30270e,0x3c2952b4,0x3c2ba2c3,0x3c267b78,0x3c24d13c,0x3c10b1c5,0x3bf9220a,0x3bfc7ec2,0x3bdc8369,0x3be517f8,0x3bcf5877,0x3c1612df,0x3c45d836,0x3c64f580, -0x3c5a0626,0x3c30aeeb,0x3c1a8427,0x3c15ecd6,0x3c095ce2,0x3c04004f,0x3c1cb6d7,0x3c15dbd7,0x3c2e1fe7,0x3c5c5f79,0x3c4444bd,0x3c2c3613,0x3c341d82,0x3c348db2,0x3c356d7c,0x3c366bf9,0x3c23adff,0x3c193db5,0x3c10bcbf,0x3c1544a3,0x3c1b8aa7,0x3c243436,0x3c2c73a3,0x3c26a3d0,0x3c243bc1, -0x3c24bcfa,0x3c281e57,0x3c2fdf16,0x3c348b5b,0x3c3d8234,0x3c4bd5ce,0x3c5f2a94,0x3c66ce9f,0x3c4ef382,0x3c4a817b,0x3c52338e,0x3c5953a5,0x3c5fa863,0x3c6940f1,0x3c6ef9d4,0x3c6435a6,0x3c68bf66,0x3c66a6c0,0x3c4f17d0,0x3c609f7f,0x3c55fa54,0x3ca5bce2,0xba7d928a,0xb9b8bffd,0xba16320d, -0xbafb8c76,0xbaedb268,0xba7e825c,0xbabdb187,0xbabed66b,0xba96899e,0xba68a6d2,0xba6e5bc2,0xbaa1152f,0xba83814e,0xba8f982b,0xbadcccd9,0xba94fec4,0xba7d3bb4,0xba91058b,0xba6f5ec8,0xba137869,0xb925bcf5,0x36a0213c,0x3936e525,0x3a8be7ce,0x3a543657,0x39a4d370,0xb9778909,0xba0ec7c5, -0xba3a4f87,0xba6d4857,0xba334eaa,0xb9a009c5,0x39664db0,0x3a26b82f,0x39bdf243,0xbaabd09d,0xba381fb4,0xbb07c499,0xbadd9c0e,0xbb9f64e1,0xbbcc880f,0xbb7e7967,0xbb71d835,0xbb4fb27e,0xbb2c0bc5,0xbaa25b95,0xbaa1356b,0xbad1ba83,0xb883fdb0,0xba4b06a0,0xbb318d8a,0xbada3022,0xbb0e9eab, -0xbb2f0f27,0xbae6d00c,0xba414a82,0x3aa511da,0x3b30014c,0x3b6991c9,0x3b917641,0x3b585e7d,0x3b322015,0x3adb06b3,0xbad06d98,0xbb125c1e,0xbb11f5f5,0x39bc1cc0,0x3b40b701,0x3b2857b5,0x3b7ca56a,0x3b3ebe6f,0xbb334a11,0xb9b2f96f,0xbaf81726,0x3820bdb1,0xbc062db6,0xbc1075a7,0xbba9e3da, -0xbbbfe57f,0xbbb1c3f5,0xbba192f1,0xbb0e9e82,0xbb0c893d,0xbb90e088,0xbaf95acd,0xbb1067cc,0xbbc6cd4b,0xbb73600d,0xbb49f9cc,0xbb830f0f,0xbb0b298c,0xba4443fe,0x3b830e04,0x3bcdee26,0x3be94cff,0x3c08697d,0x3c10c53e,0x3bd3a8ca,0x3b1c1fcb,0xba8c8712,0xbb7a2d07,0xbb374585,0xb8d7f7f3, -0x3b4c70ec,0x3ba70a17,0x3c0a1842,0x3bdad017,0xbbbbc1fa,0x3ab4bc72,0xbb16fefc,0x3b14b26e,0xbc25266e,0xbc887604,0xbc250c4d,0xbc06dfd3,0xbbd92f87,0xbbfdd8c4,0xbaf66bc0,0xbb03ce78,0xbbb29316,0x3a0bd819,0xbb059829,0xbbda3545,0xbb94238d,0xbba8e847,0xbbbeb9a1,0xbb54c57f,0xb9ac536a, -0x3c092974,0x3c3d70c7,0x3c62e9a2,0x3c70defd,0x3c62e1a3,0x3c504b15,0x3c1ffaac,0xb8869f55,0xbb6dde0a,0xbb87fd68,0x3b0afe1d,0x3c17fecd,0x3c248483,0x3c53bb20,0x3c0c5885,0xbbd55f1e,0x3757cc30,0xb9efe8fe,0x3b800cf9,0xbbd29048,0xbc59973e,0xbbe0559a,0xbc023c66,0xbc1f97fc,0xbc179451, -0xbb807887,0xbb819180,0xbc397c67,0xbba3049a,0xbb9a39b0,0xbc4f4ceb,0xbbc9190f,0xbba21f57,0xbbc59cca,0xbb3364dc,0x3a9fa349,0x3c37c60b,0x3c8a5fc3,0x3c980ff8,0x3cafa036,0x3c84b1e9,0x3c70346b,0x3c744974,0x3bbc3d5e,0xb9019aae,0xbaeed5ab,0x38ff0457,0x3befc9fb,0x3c54e3e3,0x3c6b4c3a, -0x3c72a579,0xbc21ac22,0x3b7fd694,0x3b9b2134,0xbd319c42,0xbd3a22d4,0xbd49b18e,0xbd3c05b3,0xbd383089,0xbcff43f7,0xbbde0e5f,0x3b5a9e4f,0x3c61ce8d,0x3c4b96a6,0x3b4dd8e8,0xbbb81dcb,0xbcda4b5a,0xbc8f9a46,0xbc254458,0xbac015db,0xbbd16e74,0xbb62781a,0x3b90cd37,0x3c56096a,0x3c4c2260, -0x3c0aa132,0x3cad419d,0x3c8ab51f,0x3c3351a3,0x3a78ea90,0xbb971e91,0x3a91e617,0xbc18fe12,0xbb9caa88,0x3c6a54a4,0x3c10118d,0x3baf8785,0xbb95e9b5,0x3c7db832,0xbcda7327,0xbd085500,0x3c8e940a,0x3c126471,0x3bfecc8f,0x3a09a7ee,0xba6e414a,0xbc3d546e,0x3c3a7b95,0x3c1bf9d5,0xbc8b2600, -0xbc941674,0xbcaafaeb,0xbcc445cb,0x3b62b481,0x3c3174c8,0x3b4c6ee3,0x3b763506,0x3b937049,0x3b7ad186,0x3bba0f2c,0x3c4657ad,0x3cc8c3d1,0x3b9f0045,0x3a209436,0x3b054afe,0x3a6f68b0,0x3a5813bd,0xbbb8240c,0xbbe27066,0xbc0a3b03,0xbc8d6346,0xbc6a5a3d,0xba670986,0x3cb74a2a,0xbc57f3b8, -0xbcbb3878,0xbd646b1c,0xbda8f936,0xbd8186b8,0xbd4279fe,0xbd0f2e42,0xbcab7ac8,0xbc92c1b8,0xbb170822,0xbbbff4e0,0xbcbfd52f,0xbca6c61a,0xbca18621,0xbc50e699,0x3aae438e,0x3be9d0ea,0x3be0c741,0x3bf17e14,0x3c0464de,0x3bbfd9d1,0x3c43a8d0,0x3c545fc0,0x3cb82993,0xba4587db,0xbbd089e6, -0xbaa529fa,0xbbbda7c2,0xba5ea772,0xbbd125ba,0xbb623954,0xbba2c8ad,0xbb600228,0xbc809efb,0xbc86e05a,0xbc49bea3,0xbc06cd37,0x3c30b798,0xbb24ac5f,0xbd041bcb,0xbd191a04,0xbd017a37,0xbd19ea71,0xbce30d18,0xbce390d3,0xba90e41d,0xbbcd0dbe,0xbd033a90,0xbcd5aee3,0xbcc84ed1,0xba1545ab, -0x3b53ebe7,0x3c1d6962,0xbac20a4e,0x3b78fc81,0x3b3f7e77,0x399e538c,0x3c3fa600,0x3c6c9c67,0x3c8c551a,0x3b8de78c,0xbaacb010,0x3b69bac4,0xbb6d77eb,0x3a7b3185,0xbae0a551,0x3b81a359,0x3bc647b2,0x3c0495c8,0x3b8ec87b,0x3bfdfa40,0x3c2b0b01,0x3ca57ce2,0x3d9a8580,0x3dca8e00,0x3ddc311d, -0x3d9ea657,0x3d538e60,0xbbfd9c37,0xbd07ab2b,0xbce9378d,0xbb69f2f9,0xbbfd7abf,0xbd129820,0xbd6fe925,0xbd5bb75e,0xbcc4ba72,0xbaeba070,0x3c14b4d9,0xbb98bc8a,0x3b4ef49a,0x3a33a3eb,0xbba227d1,0x3c08ac11,0x3c28cbc8,0x3c76cb14,0x3bdd9e47,0x3bc2a641,0x3bcb8f15,0x3b0efdcd,0x3a88a173, -0x3acf67cc,0x3bbd9ed4,0x3c41435e,0x3c2f1498,0x3ce37725,0x3d28f2cb,0x3d615253,0x3d819cff,0x3b620898,0xbb004396,0xbbafe3fd,0x3c9d0578,0x3d3603e6,0x3d72d6df,0x3d871834,0x3d392c22,0x3c56392b,0xbc503a18,0xbca338cf,0xbd6e6a4f,0xbd4f7f6a,0xbd3a5e42,0xbd3da3b5,0xbcfe790a,0xbc544666, -0xbc56983c,0xbbb67a24,0xbb4fad88,0x3b49274e,0x3bffd1ad,0x3c945cfc,0x3b97ea97,0x3ae3cffe,0x3b709212,0x3c79eb43,0x3c9795c9,0x3c59f16a,0x3c9f7491,0x3ca1e945,0x3ccf01ca,0x3c9d6377,0x3c9742b3,0x3cbff694,0x3c75377f,0x3cdf71d1,0x3ce934be,0x3cde3548,0x3ca9941d,0x3c9741c3,0x3c83be8d, -0x3c999dfe,0x3ce34f1c,0x3d266123,0x3d266f86,0x3cf0a28a,0x3cd69b9a,0x3c4daf26,0xbacd2a22,0x3b62f865,0xbab31350,0xbc3b36ac,0xbb983a26,0xbb2044b3,0x3b9f6bcd,0x3c04e26e,0x3bd5c1c5,0x3c61bf17,0x3c4e3334,0x3c743feb,0x3c5e3919,0x3c164255,0x3bc3cade,0x3b503db9,0x3b83fc73,0x3c006ee4, -0x3c60f5a0,0x3c6834df,0x3c961ac3,0x3cc16cc4,0x3ce7ddcd,0x3c5e70b1,0x3c05324e,0x3b9d3510,0x3b8fbf80,0xbb550b9f,0x3ba9e64e,0x3c1a586c,0x3c6ec39e,0x3ca50a7d,0x3cd24b08,0x3cf4f02f,0x3cd0a95a,0x3cae8133,0x3bcd0cc9,0x3c393668,0x3c424425,0x3c3dbbf3,0x3c5865bf,0x3c26abd1,0x3c263270, -0x3c620cc1,0x3c6e446e,0x3c913a15,0x3c6fd48d,0x3c4249c2,0x3c2cb4b8,0x3c2ea28f,0x3c3bb147,0x3c44a159,0x3c55248e,0x3c69c9bf,0x3c8c2cce,0x3c7f1f3a,0x3c824ceb,0x3c9491fd,0x3c78d968,0x3c2fdd19,0x3c53c9eb,0x3c49409a,0x3c110fdf,0x3c01d9ec,0x3ba9cd8f,0x3b189c7e,0xba055521,0x3b1b5e89, -0x3bd69e2e,0x3c1f6b37,0x3c250de5,0x3c3ad5bc,0x3c5122c5,0x3c82c763,0x3ca5ed2b,0x3cbf4d0a,0x3c9c2f1f,0x3caea8be,0x3c7aa498,0x3c7f4f40,0x3c703959,0x3c776565,0x3c4da0a9,0x3c290951,0x3c0912bc,0x3c1b39bf,0x3c46e315,0x3c368d6f,0x3c610cd0,0x3c6ef20e,0x3c7dab48,0x3c85a5f4,0x3c89ce16, -0x3c8d0659,0x3c5ede93,0x3c2186fa,0x3bb026c7,0x3be7cd00,0x3c0668c8,0x3c109a35,0x3c561555,0x3c8293df,0x3c95fca1,0x3c89b260,0x3c53d77f,0x3c26ca86,0x3c0a492d,0x3b95b55c,0x3aa64d81,0x3a638f1a,0x3a883141,0x3b3712b8,0x3ba479d3,0x3bf1f8a5,0x3c452830,0x3bf39edf,0x3c07c4a6,0x3beadfd0, -0x3c00adde,0x3bf7ec7e,0x3be3f6e9,0x3bf23c75,0x3bb8b10b,0x3be0a85b,0x3bd8a52d,0x3ba9752d,0x3bf40f4c,0x3bd2fbf2,0x3baa2847,0x3bee0e2d,0x3be3a703,0x3c001e60,0x3bd4b771,0x3bee9384,0x3be27cbd,0x3bcc40a7,0x3bb5e9b6,0x3b8345bc,0x3b5dc289,0x3b53e24b,0x3b8bc77b,0x3ba27759,0x3bb160c7, -0x3bddba94,0x3bfdf22a,0x3c1293ea,0x3c1f7b86,0x3c303f99,0x3c2c3bba,0x3c1f1513,0x3c300877,0x3c1b96d2,0x3c26a4ee,0x3c33fc9d,0x3c02933c,0x3c079564,0x3c232511,0x3c2bacb3,0x3c2f74bb,0x3c341589,0x3c3d2623,0x3c3df33f,0x3c3f5c22,0x3c1f14f5,0x3c042fc3,0x3c416abb,0x3c1dcceb,0x3c2c9848, -0x3a965835,0x3a372fd3,0x3acce263,0x3973c6ea,0xb89e60c8,0x398ec9b9,0x391216f3,0x394ca3a4,0x3a0f977c,0x3990a508,0x39ebdd77,0x3a7c08a2,0x3a938f1c,0x3a708330,0xb7384233,0x39a8f3cc,0x398cc5aa,0x36f0edb4,0x39c767c9,0x3a1fb399,0x3a3cf8a2,0x3a36b31e,0x3a3965ac,0x3a227a38,0x3b06ed10, -0x3a91bc41,0xba1fe750,0xba5c4103,0xba7b66dc,0xba936447,0xba53371f,0xb99648fa,0x368d2351,0x3aa23bf3,0x3ad7685f,0xba7eff6d,0xb90335b0,0x3a13c7ef,0x3b1d93f0,0xb8936c8a,0xba247e2a,0x388271c4,0xbaeeae20,0xbae4e738,0xb9d63211,0xbae25167,0xba1c52fc,0x3aa0b8e6,0x3b665d2b,0x3b57a850, -0xb9ceb686,0x3a4145b5,0x38b1ac21,0xba761eaa,0x38912880,0x3a0ef2a0,0x3a2c8653,0x3ac88fbc,0x3b38b74c,0x3b9070b4,0x3b8b03e4,0x3b78ba2f,0x3abfe771,0xbaa1f638,0xbb093619,0xbad47fe0,0x3af42118,0x3b95848d,0x3b29245e,0x3b9bb779,0x3b6eef63,0xbb2ae489,0x3ae5372f,0x3ac996c9,0x3b86fc90, -0xba4dc29b,0xbb1c6a07,0x39d58f18,0xbb74ac74,0xbb8669e1,0xbaa0498d,0xbb774464,0xbad24206,0x3adc2253,0x3ba804d5,0x3b9ac41e,0xbb39562b,0xba6b608e,0xbabb0168,0xbb61ab10,0xba895186,0xb95f23dd,0x3a919f6b,0x3b8458de,0x3bb9f7af,0x3c07d09c,0x3c21750a,0x3bfecd93,0x3a977991,0xba863328, -0xbb2e58d2,0xbb6c45ff,0x3ae25aa3,0x3b971c71,0x3b954934,0x3c107b10,0x3bfd4e02,0xbb453526,0x3b76923d,0x3c042590,0x3bc5e6e4,0xbaa73746,0xba6040dc,0x3b08b3ed,0xbbe06d30,0xbbf64712,0xbb39e853,0xbc0226ab,0xbb75df27,0x3af896f4,0x3c1a3a44,0x3c1ba27e,0xbb61a897,0x3a281f37,0xba86129a, -0xbb9b4090,0xbaa2b2c3,0xb7a7714b,0x3b14168c,0x3be7dea4,0x3c162628,0x3c4eb5b0,0x3c810444,0x3c6f707e,0x3bcae805,0xbabf38ac,0xbbb3d53b,0xbbaeb9be,0x3b8b3337,0x3c333e99,0x3c0957e4,0x3c6f501b,0x3c392a72,0xbc011d6c,0x3bdc3da8,0x3c246139,0x3c1255a5,0xb9f07c3c,0xbae55746,0x3ba54771, -0xbbe5a2cd,0xbc00c53d,0xbb7ebc0b,0xbc0a91c6,0xbb9208b3,0x3b44ae94,0x3c215045,0x3c1d86ca,0xbbc4360b,0xbb17efa5,0xbb7b695c,0xbbeb0c50,0xbb1a379a,0xb90af218,0x3b7859b0,0x3c4d1a6e,0x3c6e8376,0x3c8e30e9,0x3ca365df,0x3c96a315,0x3c397700,0x3b67dc4c,0xbb4caefa,0xbb9e496f,0x3ab59473, -0x3c298f4c,0x3c47a19a,0x3c96af6d,0x3c89f99b,0xbb844c7f,0x3c26dfce,0xbcdf044a,0xbd357d1e,0xbcf09e8c,0xbd00be65,0xbcbd2c0e,0xbccb90e1,0xbcaf65ac,0xbbaca673,0xbba167af,0x3be94b7e,0x3cc628b9,0x3c59b412,0x3bc44994,0xbb26ade6,0x3b984f1c,0x3b948734,0x3ab45e79,0xbb0eee4c,0xb96bbc2b, -0x3b7dc9ef,0x3bf2dd5b,0x3c3a57e0,0x3b942c40,0x3ca97833,0x3c8b7e16,0x3c128678,0xba0e7cd8,0xbbc63477,0xbabe09da,0xbc2f318a,0xbbeb73da,0x3b353b39,0x3c263702,0x3c0f90b4,0xba87db44,0xbc23ffe0,0xbc182db4,0xbbbdcb0c,0x3c631c54,0x3b5abf06,0x3b72dec8,0x3948471e,0x3aeae6d8,0xbb811cc8, -0x3bc15e6d,0x3b62d873,0x3c23a5e3,0xbc45ee0c,0xbc8d29fa,0xbcbd238b,0xbca3f0ea,0xbc53013f,0xbbf237f6,0xbae51efb,0x3a9fe50c,0x3bb05795,0x3c3fe15e,0x3c53a72b,0x3c9e9afd,0x3b67119a,0x39300280,0x3b3dbed9,0x3b58d70d,0x3ad20200,0xbc00e040,0xbbd17a22,0xbbe61cc1,0xbc46f181,0xbbcf7ae8, -0xbae2c81a,0x3bd88b69,0xbbd57158,0xbd102df6,0xbd619404,0xbd9a5355,0xbd6dee78,0xbcc39d30,0xbc8d1a47,0xbc4cf515,0xbc945f8e,0xba450f8b,0x3b398f07,0x3b9cba1e,0xbc8f7f51,0xbcc26c1f,0xbcb3f07a,0xbc17a32c,0xbb765167,0xbbacac3e,0xbb7f297a,0xbb229dae,0x3b2e7e12,0x3c3a0493,0x3c3fc8ba, -0x3c342f37,0xbb55c1b3,0xbb9f7ebe,0xbab7db0a,0xbbaad901,0x390364cd,0xbbcb1d11,0xbb473541,0xbbda42a1,0xbba6644a,0xbc6ac561,0xbc834d92,0xbcbde5b6,0xbca68922,0xb9e00624,0xbc395b44,0xbd06632b,0xbd0e7934,0xbc1d3cff,0xbd291968,0xbd3e052a,0xbcc3b520,0xbca0fc47,0xbc75b05c,0xbc4766ce, -0xbccfa7ba,0xbd05255f,0xbce81257,0xbc7a131d,0xbb0024a3,0x3ae7706a,0x3a0c3ca4,0x3a9df482,0x3a4fea4c,0x3c34c0d7,0x3c3048eb,0x3b03811d,0x3a84aa79,0xbab97aa9,0xba96d109,0xbb14e6ff,0xb9d04b13,0xbaf0258f,0x3b5cbb7e,0x3b777ed7,0x3a6bfe89,0x3b8247e6,0x3ba0aaaf,0x3c21fbd5,0x3c10832a, -0x3dba997f,0x3dbb96ca,0x3d95a737,0x3d088861,0x3cae36c1,0xbd0fb565,0xbd44111e,0xbc5b66bd,0xbcaded11,0xbcb02351,0xbc9a5dfd,0xbd073dcd,0xbcf56871,0xbcda962f,0xbc82587b,0xbc3594d1,0xbbab4f6e,0x3b538275,0x3b92dc5f,0xbbb1ade9,0x3c635d46,0x3c4de984,0x3c19462b,0x3b92c662,0x3ad05b2f, -0xb9c4df74,0x3b2b421a,0x3b354361,0xba11c9c0,0x3b62224b,0x3c154662,0x3bd41646,0x3cd48f06,0x3d1f7c5e,0x3d6dd367,0x3d935a74,0x3c258bba,0x3ca560b1,0x3d0a0eca,0x3d768756,0x3d8909a8,0x3d6f877f,0x3d20347a,0x3b989ca2,0xbcb7ac7e,0xbd2ed3df,0xbd496d4c,0xbd32903f,0xbcc637f4,0xbd2a6d2a, -0xbcee74bb,0xbcce0a12,0xbc92d28c,0xbcef2bc2,0xbcc1bbcf,0xbc55bb26,0x3ace16cc,0x3bb1366c,0x3bed230e,0xba54870d,0x3ae1a6b1,0x3c347849,0x3c16be79,0x3c23cab7,0x3c2c3797,0x3c904de4,0x3c9bba13,0x3cb35dad,0x3ca5442c,0x3cb665d9,0x3ccc794f,0x3cb6ca8d,0x3cc04f15,0x3cca1f7f,0x3ca6277a, -0x3c655b8c,0x3ca14b15,0x3ca53ca8,0x3cd3727d,0x3d09e3fc,0x3d1be5fb,0x3d0cfb2d,0x3ca7e63a,0x3c8a6455,0x3b9036ce,0xbbdc6aa3,0xbc3cba08,0xbc704cae,0xbc8c3b71,0xbc568d77,0xbc28c366,0xbb446d97,0x3b57c868,0x3c0084d8,0x3c8fa55b,0x3c811c1c,0x3c60b4c9,0x3c0c13b4,0x3bb1bf10,0x3bd1d99f, -0x3c1c6ab8,0x3c15fbe7,0x3c3e92a9,0x3c3694f4,0x3c5fedb6,0x3c876d57,0x3c8870bf,0x3cd06dc4,0x3c69f17f,0x3c5d516c,0x3c16e613,0x3c2198da,0x3bd30a08,0x3c5725c2,0x3c88b381,0x3c93f5ea,0x3cb66c58,0x3cd3998a,0x3ce8e573,0x3cd4ecb7,0x3cb9fd0a,0x3c549aec,0x3c188261,0x3c03198a,0x3bcde7d8, -0x3beb1f98,0x3bdd2d33,0x3c05dd54,0x3c2b1861,0x3c53996d,0x3c8cceca,0x3c846d06,0x3c6d64e2,0x3c4e6603,0x3c5c6904,0x3c6f6e8f,0x3c910e3b,0x3c888aa0,0x3c86317a,0x3c83e483,0x3c7a1453,0x3c816f98,0x3c8dde8e,0x3c798291,0x3c808d68,0x3c8b2b86,0x3c7656cf,0x3c35e53d,0x3c072f9c,0x3bdcce0b, -0x3bb16ffc,0x3b9ef20d,0x3c1cab98,0x3c712cf6,0x3ca6d4de,0x3ca45614,0x3cb4da0d,0x3cbba7d4,0x3ccf14af,0x3cde5410,0x3cd7b8fb,0x3cc1905f,0x3ccee970,0x3c9a27f4,0x3c8da4bd,0x3c866371,0x3c78cc8d,0x3c6bce7c,0x3c6bf232,0x3c6a5236,0x3c64be37,0x3c83c99a,0x3c60d06b,0x3c641cf5,0x3c5a2ce8, -0x3c525f9c,0x3c6dcc5c,0x3c89c7ab,0x3c95ba08,0x3c870b2b,0x3b155648,0x39d416fa,0x3b47efd3,0x3b996046,0x3bdc0f17,0x3c2ab67c,0x3c4bead7,0x3c5a9342,0x3c56e55e,0x3c3529d6,0x3c1df45f,0x3c258a96,0x3c1207f6,0x3c0ab6d0,0x3c0198bc,0x3c0ef1cf,0x3c4f9e1c,0x3c76f0a9,0x3c90560c,0x3cbe8e99, -0x3c8c59bf,0x3c89be3b,0x3c73cc26,0x3c5a3f16,0x3c125a56,0x3bb8f4bd,0x3bc2b5ea,0x3b91dc7d,0x3ba4c916,0x3ba79f6f,0x3b79830d,0x3b8e2b3f,0x3b6583ce,0x3a579df6,0x3ad5c4e8,0x3ad1a241,0x3bcb0bea,0x3bb3036b,0x3bbb2473,0x3ba736a8,0x3b87e979,0x3b63cc85,0x3b279dfd,0x3b1d5f3a,0x3b482f04, -0x3b8e8e07,0x3bae8a2b,0x3bc11a1a,0x3bdd82ce,0x3bfa28f7,0x3c118b3f,0x3c1ff367,0x3c28e1d7,0x3c1f413d,0x3c0fe026,0x3c2237b1,0x3c02da43,0x3bf63d4f,0x3bca1da2,0x3bcc7d3b,0x3bd66baf,0x3bcaa421,0x3bd78f43,0x3bd768c2,0x3bd996a4,0x3bdbd01f,0x3bdc7ac1,0x3be021cc,0x3bcc71e0,0x3bba97d6, -0x3c018c38,0x3be97097,0x3bc8f69c,0x3b6058d0,0x3b3221a5,0x3b2c352b,0x3b28fff6,0x3b1fcdfe,0x3b3af78f,0x3b18effd,0x3b13b01f,0x3b434442,0x3b024cba,0x3b01b4ff,0x3b148db0,0x3b33814d,0x3b2e6ee0,0x3afb6343,0x3b013806,0x3aec3e23,0x3ab79a1a,0x3aebdd42,0x3af61d45,0x3ae4a515,0x3b054136, -0x3b0ebd54,0x3b003833,0x3b592fc3,0x3b285c8d,0x3a266171,0x3a20bf86,0x3a125101,0x3998f60f,0x3a80a983,0x3ac2802d,0x3ab8884d,0x3b269b54,0x3b2ca591,0x39e306cf,0x3b09bb1b,0x3b637910,0x3b3c579f,0x3b2986d9,0x3b2098a5,0x3b2ce7f6,0x397cfb27,0x3a399c8c,0x3b1c4e24,0xbaea4807,0xba0d5333, -0x3ac86f63,0x3bbaf7e8,0x3bcb30e5,0x3afebd84,0x3b0871fe,0x3ab82f84,0x396dd971,0x3ac18427,0x3afb4bab,0x3aaa600f,0x3b1eaf96,0x3b84af6b,0x3bd0aaa3,0x3bbb46d6,0x3b91807f,0x3af10d84,0x39d4b634,0xb9ba12f0,0xb9250743,0x3b7a8382,0x3bb58dbc,0x3b4d6600,0x3bc0a7c0,0x3ba920f9,0xba8407c2, -0x3b37a72d,0x3bbf3a8e,0x3b51170e,0x3b4f15d3,0x3b5519c6,0x3b91978b,0x3b350938,0x3af4f177,0x3bafeee6,0xbb00011f,0xbaaaedc3,0x3a35a97e,0x3bf99efe,0x3bff1246,0xb97b5e7e,0x3a89f8f4,0xb9db600f,0xbb18cd4a,0xb9590437,0x3a04a146,0xb9399108,0x3b42c7ed,0x3bb7e747,0x3c1c454d,0x3c267a6b, -0x3c038568,0x39c84489,0xb9810dca,0xba257e9b,0xbb3cc3c6,0x3b70c6fa,0x3bc66ef8,0x3b8a3d21,0x3c095f96,0x3bd6f570,0xbb48909d,0x3b9cf6bf,0x3b9b4492,0x39922b5a,0x39f8f394,0x3b15d471,0x3ae2c4d9,0xbaaf3391,0xbb1331ee,0x3b180043,0xbc36ced7,0xbbfec9ba,0xbb647bf3,0x3c418d1d,0x3c5bb2ee, -0xbb44fa44,0x39b4cdec,0xbb0accf1,0xbba91015,0xbacf8404,0xb94df70a,0xba8e5710,0x3b8deffb,0x3c08c069,0x3c6c9e57,0x3c8077d4,0x3c66e7ed,0x3b175804,0xbaaa874c,0xbba566f3,0xbbcc1d21,0x3bc126c1,0x3c4153f5,0x3bb3c034,0x3c6aec97,0x3c407fc7,0xbc1ecfe1,0x3b62e778,0x3c0c95f9,0x3b2dc54c, -0x39f30116,0x3b6dcd1e,0x3c09b5e8,0x3beb809a,0x3c074a89,0x3c0fc156,0xbb9482d0,0xbbbb814c,0xbaf8cd7e,0x3c3f483b,0x3c46a0c6,0xbbb328ba,0xbaeabd71,0xbb61a5bd,0xbbe76600,0xbb782f92,0xbb486248,0xbb0f2b1d,0x3b989136,0x3c33b2e7,0x3c858264,0x3ca8e9fc,0x3c979151,0x3bd0e68c,0x3ae344a6, -0xbb8ce20f,0xbbe871c5,0x3b5597e0,0x3c484160,0x3c0d7c9b,0x3c8b0b4e,0x3c28b08e,0xbc1ce205,0x3b80ae63,0xbd367583,0xbd1819c2,0xbc008186,0xbbf7d775,0xbcadbcfd,0xbd0e8a9d,0xbd242bdf,0xbcc3aefc,0xbce86913,0xbb880215,0x3ce994b6,0x3c7b43e2,0x3c1b7849,0xb9fbd626,0xbbda8a2d,0xbc1a9742, -0xbb76c6c2,0x39b71426,0x3bc02143,0x3c740b1e,0x3c1d7a70,0x3c483f31,0x3c27e204,0x3c990aeb,0x3c79a122,0x3bf54f7f,0x3838aa44,0xbb9bfba2,0xbb3b8b13,0xbc438d16,0xbbfc7b98,0xb79b7683,0x3c143fb3,0x3c163d26,0x3c075468,0xbcb3d8f3,0x3c3907a8,0x3c090b93,0xbbe32150,0xbc458972,0x3a91b006, -0x3c18333e,0x3c63085d,0x3c0f5da3,0x3bdc8d9f,0xba7f4e1d,0x3bc6c27c,0xbc3c549d,0xbc6108ea,0xbc33b734,0xbc689984,0xbc3eb9f6,0xbc41e415,0xbc226042,0xbb92e34b,0x3b0b3980,0x3c275390,0x3c38e7ec,0x3c1517e6,0x3b055cfe,0xba076c48,0x39d15257,0x3b435ce6,0x39f18b00,0xbc0c5bd7,0xbbf658b5, -0xbbf82f17,0xbba7e5cc,0xbc41cc94,0xbc3ba9b6,0xbb943aea,0x3b245562,0xbd1829ea,0xbd55d82a,0xbd36fd17,0xbcd32347,0xbac0a2eb,0xbb091829,0xbbb1c172,0xbca0977b,0xbbfbf265,0xbae9f49a,0x3c1c6b87,0xbc29f3d0,0xbc95784e,0xbc99f7dc,0xbc9232e2,0xbc7c0daa,0xbc65c51c,0xbc193b22,0xbb9ab474, -0x3acb8c89,0x3c439643,0x3c223a98,0xbaf26882,0xbb877ffc,0xb98f082b,0xb9d53df5,0xb93505e3,0x3b19d5ad,0xbba3acd8,0xba429cd8,0xbbb9dd3b,0xbb856d1f,0xbc1e2d2f,0xbc8651a0,0xbcf1792b,0xbcd4ae0e,0xbc5f1ded,0xbcd5851b,0xbc398905,0xbc3ef745,0xbca3a760,0xbd02a086,0xbd3cdde3,0xbd0c73f6, -0xbd0a0a58,0xbcc67144,0xbc1bd735,0xbc94a5e6,0xbcb76e14,0xbcfadfd3,0xbccffad4,0xbc931d69,0xbc00d183,0xbc164529,0xbb89649e,0xbb059a8e,0x3c46b316,0x3c179a17,0xbc214251,0xbb1be5bf,0x3996dd09,0xbb5cf27f,0xba2e2704,0x38c73de6,0xba6f3b2f,0x3b42aa61,0x3b1486f0,0xbb8d906a,0x3b9f6661, -0x3b9ab29d,0x3c06fa0e,0xbb86d5a6,0x3da9702a,0x3d66124a,0x3cef7564,0xbb4a4c83,0xbcd2f640,0xbd0776e0,0xbcf825ab,0xbc416b09,0xbcc6ec92,0xbceb1a91,0xbcdf6cad,0xbc7c9056,0xbc6ca511,0xbcd2b61f,0xbc7770ae,0xbc7c33c5,0xbbf8d03b,0xbbbc6841,0xbb1baba9,0xbc1f1573,0x3c6948f5,0x3c411ab7, -0xbb238b5e,0x3aac86a8,0xba45efcb,0xbacf7112,0x3a5b32c8,0x3af9c282,0xbb07d45e,0x3adf07c9,0x3bea018f,0x3bac5002,0x3c94a059,0x3ce40b12,0x3d55f446,0x3d88aee1,0x3ccf9b10,0x3d45418d,0x3d88f6be,0x3da91d10,0x3d82aba8,0x3d36727c,0x3bfe5b69,0xbd1fa897,0xbd274931,0xbd2b7896,0xbd1553d3, -0xbc6880c9,0xbbf73351,0xbd01f98f,0xbcc22e39,0xbcbd7f01,0xbcf19fca,0xbd04beec,0xbcbde4a3,0xbc847c2d,0xbb90103b,0x3af19352,0x3a865e01,0x3aa11f30,0x3ba962c0,0x3c600c10,0x3bbb8abc,0x3b5060f4,0x3b9e1062,0x3c7952bc,0x3c952fc5,0x3cb95ef2,0x3cc347ab,0x3cdc6721,0x3ce4e592,0x3cfd23ed, -0x3cb48ddb,0x3cc07acb,0x3cb807eb,0x3cb5b57b,0x3ce47b27,0x3d113628,0x3d1f020c,0x3d0fc192,0x3cec8ec0,0x3c8a3a20,0x39cfb6dd,0xbb6be2ec,0xbc4ee915,0xbcb1c5ef,0xbce49fa6,0xbccf5176,0xbc53bc78,0xbc380f1e,0xbc16480b,0xbbcf6198,0x3ba71eeb,0x3c196b6b,0x3c47b082,0x3c47acd4,0x3c308e7f, -0x3c260365,0x3c0287e7,0x3c380c96,0x3c4c2172,0x3c8043be,0x3c861e19,0x3c5d3302,0x3c709c5c,0x3c8157e5,0x3c63f520,0x3cc37533,0x3c60e076,0x3c7d5180,0x3c84cc5b,0x3ca2cbb2,0x3c9d5d12,0x3cc66f0e,0x3ce27aca,0x3ce88a4f,0x3ce1cffd,0x3cd9c0f3,0x3cd78c07,0x3caab1b6,0x3c96263c,0x3c5e828e, -0x3bd61ddf,0x3c07f2f7,0x3c36ef83,0x3c199320,0x3c175caf,0x3c31a5bb,0x3c2b3503,0x3c522351,0x3c6b295e,0x3c7172eb,0x3c63a04c,0x3c509519,0x3c818998,0x3c81ab2f,0x3c91b53f,0x3c8a19fa,0x3c7c92f2,0x3c4f5cf9,0x3c693196,0x3c7b2829,0x3c87a8c9,0x3c5a61cb,0x3c8c2f6a,0x3c8c2540,0x3c717643, -0x3c4032d9,0x3c179751,0x3c189338,0x3c2f1e85,0x3c5c967c,0x3c922007,0x3cb7b5d3,0x3cf7820f,0x3ce4b090,0x3cf9d95f,0x3ceb30b3,0x3cfd99ba,0x3d006922,0x3ccb3ece,0x3ccf4f0b,0x3ce1fc87,0x3cc848bb,0x3cad4327,0x3c986fdf,0x3c834925,0x3c7ac100,0x3c815ca5,0x3c6a09dc,0x3c692f10,0x3c5493ff, -0x3c6fb4d1,0x3c354a26,0x3c39b621,0x3c153af4,0x3c3ff389,0x3c794857,0x3c97ca1e,0x3c959c89,0x3ab8d1e0,0x3bb7479b,0x3be6f2f2,0x3c07856a,0x3c1c8307,0x3c2e3fcc,0x3c292375,0x3c0b9764,0x3c0f51e3,0x3c090e71,0x3bedd715,0x3c1a605f,0x3c2d728d,0x3c6bc339,0x3c42d1eb,0x3c43dbd8,0x3c8d18bc, -0x3c8e1346,0x3c82f498,0x3ca3917b,0x3cada7fc,0x3ca2d8f0,0x3c969821,0x3c81b9df,0x3c49ff0c,0x3c17f5ea,0x3c1e7baa,0x3c0f9c9e,0x3bf1d881,0x3c03c120,0x3bfd9cee,0x3bcbb595,0x3be4d147,0x3b4675d8,0x3ab718ba,0x3b86b2e9,0x3bc56e05,0x3bef44d1,0x3bd1ccf4,0x3bbc4674,0x3ba6bfe5,0x3b9a892a, -0x3b9a4e77,0x3ba7ae02,0x3bd56b69,0x3c008d3d,0x3c1693d0,0x3c242c86,0x3c277e80,0x3c2e55d0,0x3c311f64,0x3c319a53,0x3c236f4a,0x3c144d1f,0x3c119d40,0x3c075168,0x3be39291,0x3bcf4a70,0x3bba2cf1,0x3bc42a7e,0x3bbceaad,0x3b96f315,0x3b9991a1,0x3b8a0e2c,0x3b8a8bc7,0x3b7100c9,0x3b51b742, -0x3b594b61,0x3b95699b,0x3bbca80c,0x3ba07c99,0x3bb3cd9d,0x3bfbc778,0x3b61678d,0x3b2c998a,0x3ae9ec4b,0x3b163226,0x3b15cc9b,0x3b2db534,0x3b05d49c,0x3b043a84,0x3b28b59f,0x3ac785a2,0x3aa9c030,0x3a76aacd,0x3b1e4c06,0x3b2d77b9,0x3b24c071,0x3af76650,0x3add420c,0x3aca18cb,0x3af2d68f, -0x3afe2e55,0x3af52ea1,0x3b19aff0,0x3b36f8ca,0x3b6158c7,0x3b44fe84,0x3b30b5c4,0x3ae4f661,0x3afe79c6,0x3afa09f8,0x3ac85536,0x3b18f9bc,0x3b31cc22,0x3b16f41b,0x3b34baa9,0x3b21eb61,0x3ac8c92e,0x3b3b0f59,0x3b72648b,0x397a8514,0x3b06ca94,0x3b30bea9,0x3b96935c,0x3b562f21,0x3b1dc5fb, -0x3b5faa4a,0xba5736a4,0xbaaaa7f6,0xbb0b5a43,0x3b51d451,0x3bb4b102,0x3b8c4630,0x3b1bcb1a,0x3ab5f47b,0x3a75d6d4,0x3ad575b4,0x3b060511,0x3af0644d,0x3b54b428,0x3ba0165c,0x3bfac3a9,0x3bb7a7d0,0x3b74f10f,0x3b04103f,0x3a787810,0x3a2a941f,0x3a982529,0x3b8dd931,0x3b9fe617,0x3b49aee9, -0x3bbb8ed4,0x3bac4a07,0xba5ec160,0x3b4957b7,0x3bb9798f,0x3a86f206,0x3b0f6a56,0x3b5a9d95,0x3ba4a898,0x3b7d0ff1,0x3b1dc468,0x3bac68f8,0xbb341738,0xbb6feef9,0xbbaf7e11,0x3ba21b95,0x3be3f92f,0x3b9421be,0x3abaf6f5,0xba22dfbd,0xba84da82,0x39c92149,0x3ac993b1,0x3a4ccc34,0x3b585104, -0x3bd09e81,0x3c313db1,0x3c0e2478,0x3bcbd6c8,0x39eff18d,0xb9545024,0xb90ed549,0xbab07f0e,0x3b8489ed,0x3bbfaddc,0x3b502020,0x3be75a09,0x3bb07242,0xbb16c0da,0x3ba21bcc,0x3b3f779f,0xbb6937d7,0x3aea96be,0x3af4bf12,0x3bf1d146,0x3bc845e8,0x3b33d1e1,0x3bbe1a2b,0xbc027a16,0xbc1bab1e, -0xbc5ff828,0x3b945175,0x3c2d1d2a,0x3be10a50,0x3a8cbff9,0xbb1c460c,0xbb51dd33,0xba73e5e0,0x3a18aafa,0xb9343b6c,0x3b8ef45d,0x3c1f1249,0x3c878f0c,0x3c62f979,0x3c350944,0x3aa89795,0xbacb9baf,0xbb8411b7,0xbb9a5313,0x3bde27dc,0x3c2f30a6,0x3b887236,0x3c562830,0x3c31bea1,0xbc230da3, -0x3b9568a0,0x3c5e54e4,0x3b28b3ca,0x3b9734bd,0x3ba0bf8a,0x3bb5b301,0x3beb78c8,0x3ba4fb37,0x3c1104a2,0xbbc39111,0xbc255c56,0xbc3766da,0x3bb162b7,0x3c1eb2c5,0x3baead73,0xba5dee98,0xbb9c4d9a,0xbba4c531,0xbb1485a7,0xba0c8b76,0xba1efa93,0x3b85cf37,0x3c2f18b6,0x3c942e61,0x3c8d750c, -0x3c7d37b4,0x3b766a02,0x39d0007b,0xbba439ef,0xbbfe35a8,0x3b98adf5,0x3c485c73,0x3bdc3ea4,0x3c72a577,0x3be61e6e,0xbbee8337,0x3c1e5e9d,0xbd594ff5,0xbcbdbf0d,0xbbe45fc0,0xba685dd7,0xbc38a995,0xbca5a715,0xbcdf10ef,0xbc884bac,0xbd15a521,0xbcb508a7,0x3c242810,0x3bd6ea30,0x3c1e6ada, -0x3b90ff67,0xbc3f5496,0xbc744a91,0xbabebc76,0x3a892902,0x3ba14f2f,0x3c5a588b,0x3c36d56a,0x3c4e60a2,0x3cab131f,0x3c843637,0x3c3cbb34,0x3b75fd7b,0x3b1c2361,0xbb0c49f8,0xbb8e3900,0xbc304b18,0xbbdfc4aa,0x3ab771a1,0x3c063247,0x3c2f1d53,0x3c97e38c,0xbcfb473a,0x3c8b9301,0x38a87de3, -0xbc6255e6,0xbc24931f,0xbb449cc4,0x3b9b9910,0x3bbc56ea,0xbb28fa49,0x363ab727,0x3a957556,0x3c4e8b64,0x3ae294f3,0xbb186244,0xbc639a7c,0xbbac2b7f,0xbba2789c,0xbc168163,0xbc025a41,0xbb26994e,0x3b166e1d,0x3c207979,0x3c195608,0x3a08de37,0xb992ceab,0xbab64051,0xbaeb8715,0xb95cb617, -0xba0a7638,0xbc0fa273,0xbbc9925e,0xbc0d0232,0xbc2a0b44,0xbcaf712e,0xbca8f430,0xbc3fae8a,0x3b864ad3,0xbd001976,0xbd074187,0xba57499e,0x3aeabee3,0x3ab47168,0xbb73f9e7,0xbc1e6541,0xbcc32a94,0xbc819ce7,0xbc6225af,0xbbfd2fa8,0xbbb01b37,0xbba28b04,0xbc87fb46,0xbc9c535e,0xbc9793f3, -0xbc9d41f5,0xbc3c97f3,0xbbcaae31,0xba90cd65,0x3c52f341,0x3c2094ba,0xbc0ca56a,0xbb0b272b,0x3b7927ff,0xba499300,0x3aff1ed1,0x3acb4d06,0xbb68b5d0,0xb9959996,0xbbc3e9f7,0xbb8548c0,0xbc286864,0xbc8b4a63,0xbd0c835a,0xbcca3cdd,0xbc5d31ea,0xbca4823b,0xb87daaf9,0xbbc4b7ee,0xbd0f5372, -0xbcaadeea,0xbcf944c7,0xbd2a2813,0xbcdefa6c,0xbcc076cd,0xbcb1a03f,0xbc89622a,0xbc4508b1,0xbcb79a1c,0xbc8ede7e,0xbc82a5cb,0xbc531d57,0xbc4c2d08,0xbbe3a0eb,0xbb61a817,0x3c393fa2,0x3c2a5d62,0xbc54a4a7,0xbb37aa80,0x3ae02d3e,0xbb729f2c,0xb9a0fbf2,0xbab61af3,0xbaa5e6cf,0x3a0f3585, -0x393ee346,0xbb95fad9,0x3b9193b6,0x3acd7bc8,0x3903d5ff,0xbbfe427e,0x3d6a9929,0x3c93a501,0xbc9c4bf8,0xbd1586da,0xbd760a02,0xbcaa7ffa,0xbc815e23,0xbcf6ccc5,0xbc756260,0xbc362531,0xbc6962ed,0xbc3e903c,0xbc897909,0xbcc78b72,0xbc7e1e29,0xbc79e030,0xbc1ca5d0,0xbc5d3a71,0xbc11d4ca, -0xbbebd2a5,0x3c391447,0x3c2c8be5,0xbbf941d1,0xbb0a3696,0xbb89e774,0xbba19930,0xba843309,0x38d72463,0xbb74efe0,0x39833cd2,0x3b8a2ba9,0x3a712b69,0x3bf3291a,0x3c80b0c5,0x3d26e4f6,0x3d56c769,0x3d2eb879,0x3d956974,0x3d9a72bd,0x3d9b9785,0x3d22fa24,0x3c4c2a59,0xbcc62393,0xbd6ef50b, -0xbd21f9cd,0xbcfccb9b,0xbc4b9225,0xb9c653e2,0xbb02ed4b,0xbb243600,0xbc91fa39,0xbca3290f,0xbcb32fb2,0xbcb37f7c,0xbc56fd6f,0xbc4a82f4,0xbbea53e8,0xbb4bdb79,0xbb73835d,0x3b80e082,0x3bdc2f0b,0x3c4dd668,0x3b7b9630,0xb94a5482,0xb8aa06cd,0x3c4026bb,0x3c7922fa,0x3cc1cf7f,0x3cf8e0b3, -0x3d04d12f,0x3d0a8245,0x3d24b9b5,0x3cd0ee84,0x3ccec800,0x3d016bc2,0x3d16188c,0x3d359b1d,0x3d5ceaa0,0x3d4bf9ab,0x3d06bafe,0x3c8ae7f3,0xbb3eea88,0xbc8da704,0xbd05f4f1,0xbd13a12f,0xbd0a6fa5,0xbcf6709e,0xbcd5581f,0xbc74278d,0xbc60a6a9,0xbc2443e5,0xbbd16eb8,0x3b7b1bf7,0x3bce231a, -0x3b914b02,0x3b4772fa,0x3b8ad83a,0x3bf5c774,0x3c2763e9,0x3c795c1e,0x3c6c1c7a,0x3c93f185,0x3c9b48ff,0x3c96c181,0x3c954578,0x3c9dfb90,0x3c9748dd,0x3cde3578,0x3c8165c0,0x3ca42157,0x3ce04c8d,0x3d0463bd,0x3d16ddb1,0x3d1cd383,0x3d235b3f,0x3d14829c,0x3cf93034,0x3cbbbc79,0x3caa30c1, -0x3c34b8ef,0x3c006d06,0x3b347cee,0x3b0eda85,0x3bd5350d,0x3c07e23a,0x3c1da120,0x3c155b25,0x3c37d390,0x3c4eb1ee,0x3c5011d7,0x3c37807d,0x3c3086be,0x3c17c6a5,0x3c250601,0x3c5700de,0x3c5f1e27,0x3c64851b,0x3c67b96f,0x3c5ad104,0x3c54588b,0x3c75a0c9,0x3c83304b,0x3c8d0961,0x3c6ecd81, -0x3c8ad76c,0x3c94c5ec,0x3c8b84f6,0x3c802d4d,0x3c712158,0x3c893374,0x3ca8a5a5,0x3cd8b9fb,0x3cebb9b4,0x3d046eb1,0x3d240682,0x3d067280,0x3d083ea9,0x3ce7ed0b,0x3ce539a9,0x3ce3dc7a,0x3cb057a7,0x3cb270fb,0x3cc361f1,0x3cb58e07,0x3ca6d772,0x3c84c1c3,0x3c60a38c,0x3c5cf4d4,0x3c679cd5, -0x3c3b9d39,0x3c3b173d,0x3c260a99,0x3c32971a,0x3c1bb3ae,0x3c14a8b8,0x3bfe392c,0x3c22e4d2,0x3c60ea41,0x3c8c4962,0x3c95cf78,0x3bf9fb3a,0x3c545db7,0x3c750c34,0x3c8c671d,0x3c9bdb27,0x3c9d9751,0x3c941ed1,0x3c8136db,0x3c5b80df,0x3c3d1673,0x3c0c2c36,0x3c2ce5ea,0x3c3d60f5,0x3c7f061c, -0x3c4e147f,0x3c3527b5,0x3c60c45e,0x3c374b72,0x3be5a448,0x3c0b2000,0x3c4c2efd,0x3c6e4326,0x3c7287a6,0x3c6331db,0x3c5a97b6,0x3c541a65,0x3c6c8296,0x3c67d0c2,0x3c576461,0x3c640bb9,0x3c75f993,0x3c4fea84,0x3c66c456,0x3c22893e,0x3c00342d,0x3c3be588,0x3c35ad41,0x3c57cf2d,0x3c479b3b, -0x3c3d597c,0x3c38de11,0x3c3c1ad6,0x3c4c2098,0x3c65e476,0x3c7f7806,0x3c8ad3ac,0x3c94f828,0x3c987a91,0x3c9388ff,0x3c90d4cc,0x3c880cc9,0x3c82f908,0x3c7792b3,0x3c696118,0x3c68f879,0x3c51afea,0x3c30d517,0x3c11b0ee,0x3bf25bd8,0x3c3043f6,0x3c162be3,0x3bced5e4,0x3bcb16c2,0x3bbe3c78, -0x3bc495cc,0x3bb03859,0x3b9ef041,0x3babe21a,0x3c0b4e57,0x3c3078a6,0x3be06bde,0x3c178f22,0x3c9a6b24,0x3b476b79,0x3acf6250,0x39968a52,0x3a976f96,0x3ab80873,0x3b001eae,0x3af11f49,0x3aff6222,0x3b092092,0x3a9d8d91,0x3a3bce89,0xb98814f1,0x3aacffa9,0x3afdf43c,0x3b3f3e09,0x3ae1b527, -0x3ac340ba,0x3ad30b83,0x3af8a50c,0x3b04533b,0x3b09d7ba,0x3b27437e,0x3b3e39a6,0x3b6aa417,0x3b2c43a4,0x3b1846a6,0x3adf6aec,0x3af025b1,0x3af11126,0x3ae12500,0x3b1446d8,0x3b24dfb1,0x3b062b8f,0x3b1cd0e4,0x3b0edebf,0x3af30345,0x3b258cfd,0x3b4d0c1b,0xb7f5356d,0x3adb252b,0x3b47585e, -0x3badc198,0x3b850ada,0x3b5018bd,0x3b356582,0xb95da6ec,0xbae69420,0xbb818cb4,0x39f2d8f3,0x3b557281,0x3bb6356e,0x3b04d956,0x3ab2e77a,0x3af33d48,0x3b125a26,0x3b3bd270,0x3b488510,0x3b8761df,0x3bb2be97,0x3bfa85ee,0x3ba6096f,0x3b540311,0x3b05edc1,0x3a5a30a3,0x3a547d20,0x3b1a3d65, -0x3b83a45c,0x3b7776f9,0x3b1f95a5,0x3b97842d,0x3b953bf0,0xb901efa0,0x3b0a4f48,0x3b558b52,0xbb4700d8,0xb970ec1f,0x3ae857c7,0x3ba74b37,0x3b8fb63b,0x3b93a3ec,0x3b7b6f16,0xbb0f5d29,0xbbae4036,0xbc1e0173,0xba0c3e67,0x3b62fad7,0x3c07a8c3,0x3b02acc6,0x3847400a,0x3a804093,0x3b07c11d, -0x3b6c3024,0x3b4d23e3,0x3bacc018,0x3c0121dd,0x3c3c3ef1,0x3bf9a9f7,0x3b9de339,0x3a932f43,0xb95e4136,0x39b49752,0x3a1cb085,0x3b80f0f7,0x3ba4e903,0x3b147d83,0x3baedaa9,0x3b8dbfc1,0x3a38c360,0x3b836432,0x3b7b4b9f,0xbb2c0fe2,0x3a95e11d,0x3ba6fd7b,0x3c46b83a,0x3bfccc2d,0x3bc52818, -0x3b9198c4,0xbba9162d,0xbc28d15b,0xbc93d68f,0xbb1c29c5,0x3ba4e04d,0x3c63b535,0x3ae3107c,0xba39271b,0x39cee531,0x3ae9f37f,0x3b80bef9,0x3b50edaa,0x3bd88d91,0x3c37df28,0x3c8e9db3,0x3c4c86f5,0x3c0c8d4c,0x3aff2ed7,0xbb0ca15d,0xbb5e3913,0xbaa042bc,0x3bd81b2f,0x3c0f044e,0x3b2ab9e4, -0x3c2f4f1c,0x3c1b0edb,0xbbca9601,0x3b43d8cc,0x3c4d8196,0xbb34a62a,0xbaad17a1,0x3b73e84f,0x3bb7fabb,0x3c1f9d5c,0x3c08d732,0x3bd0f04d,0xbb7f8dee,0xbc54ccfd,0xbc9f031d,0xbba26c8d,0x3ba66c80,0x3c7b53fe,0x3af69c36,0xbb3a3e27,0xba6d6f77,0x3ad98aad,0x3b90ee1f,0x3b4e9d8f,0x3be8b821, -0x3c404ded,0x3ca17481,0x3c7908b6,0x3c56573a,0x3b64488e,0xba7c8997,0xbbba3708,0xbbe57302,0x3bc23b68,0x3c315fc9,0x3b9d4408,0x3c4f9c5f,0x3bbe50e1,0xbac9b17c,0x3c354458,0xbd60b98b,0xbc353690,0xbb7e0707,0xb9269d95,0xbbcc1ca0,0xbc2e435d,0xbc8aaf24,0xbc2bf30d,0xbd2b4332,0xbd075afc, -0x3c65bffa,0x3c2604e4,0x3c36209f,0x3be93146,0x3a43431f,0xbafa138d,0x3b6cccdb,0x3bc93003,0x3bb2d5af,0x3bb829f5,0x3c13b3f4,0x3c383d09,0x3cd19467,0x3c558075,0x3beec98c,0x39793ca1,0x3b5c7e83,0x379b0088,0xbbab3d3d,0xbc120d75,0xbbbad5af,0x3a8b56ef,0x3bcaa00e,0x3c2158bd,0x3cb5b29c, -0xbd185f1b,0x3c8f7e21,0xbb16c882,0xbc12f5e6,0xbc0deb44,0xbccd04ca,0xbb18d116,0xba81cd5c,0xbc5166e2,0xba755060,0x3b20d846,0x39f74cad,0x3b1954d1,0x3b8b1dd2,0xbc11ee71,0xbb9f227d,0xbbe05e0d,0xbbbf81d1,0xbb915692,0x3ad8dd78,0x3b8bb9c0,0x3c2bed6a,0x3c1545f4,0xbb3d31f5,0xb9a0439f, -0x39bcf870,0xb96c3b37,0xba199457,0xbad5d66b,0xbc019676,0xbba73fa1,0xbc108896,0xbc4b4e9c,0xbc94e1ad,0xbc99899f,0xbc7cebd0,0x3bda55f0,0xbc5b5d04,0xbc190060,0x3c928d1b,0x3c13f26c,0x3a3dd2fb,0x39a597a9,0xbb99be46,0xbcce2686,0xbca664b0,0xbcadba45,0xbcb50dd0,0xbba1cc2d,0xbb0fd541, -0xbc78197f,0xbc72879a,0xbc449342,0xbc571129,0xbc1ae7de,0xbbcc34ad,0xbb1288db,0x3c15a4cb,0x3c0484e8,0xbc21edb3,0xbaab3b71,0x3b80997d,0xb98ffcd4,0x39f77aab,0xb9d5777b,0xba92e19f,0xbad1f9cd,0xbbf0775c,0xbbadee50,0xbc2e526b,0xbc6a1aea,0xbcc987f3,0xbc814f42,0xbc18bcc8,0xbc59f08c, -0xbc83be17,0xbc83536d,0xbcde8b3d,0xbc3f10be,0xbc684c0f,0xbd070d7a,0xbc93bd7b,0xbc806679,0xbc3d6cbd,0xbbcfc9c4,0xbb763cbc,0xbc5ee969,0xbc38479a,0xbc57ce3e,0xbc5b9835,0xbc3fa204,0xbbded53a,0xbadbe625,0x3be2748d,0x3bd77ab0,0xbc1a466c,0xbb595252,0x3aa7de5a,0xbb361739,0xb98287c8, -0xbb2ceb1b,0xbaba5921,0xbb279f53,0xbb7e320b,0xbbf3c784,0x39b5b3c2,0xbba932a1,0xbb594b64,0xbc312bb3,0x3cb6459a,0xbc85e587,0xbd8517d7,0xbd907616,0xbd81a3a5,0xbccf4f80,0xbc8fffbe,0xbcec3379,0xbc8d8629,0xbc49a0ff,0xbc5eb2bc,0xbc4153b1,0xbc4550d4,0xbc416a72,0xbc0c7e02,0xbc118c20, -0xbc0032b2,0xbc33a39f,0xbbd89df7,0x39c6c435,0x3bbc5c2b,0x3ba69b0c,0xbbe2be5f,0xbba247bb,0xbbbc495f,0xbbde8500,0xb9d3f0d3,0xb9aa1ddc,0xbbdf5d86,0xbb1ecc9c,0xba881c8f,0xbbf53190,0xbb61d52b,0x3b60539a,0x3cc535a2,0x3cef2a66,0x3d75d380,0x3db6679f,0x3d923a9c,0x3d70e520,0x3cb80282, -0xbc97d2cd,0xbd357e51,0xbd481930,0xbcdcf70b,0xbca99b77,0xbc31fcd1,0xbc4bcbfc,0xbbe82871,0x3bd4f98c,0xbb83be61,0xbc00c142,0xbbd9d33a,0xbc0b0539,0xbc000f65,0xbc068a14,0xbbcd1e7f,0xbba793c5,0xbbbf1461,0x3b26a5ac,0x3b8bcfbf,0x3c016f5c,0x3a96b8e9,0xb8c01156,0x3a97020a,0x3c261ab1, -0x3c64b19d,0x3cd441c6,0x3d218414,0x3d2a6e5b,0x3d2bd4ff,0x3d4f47a2,0x3cfd74fd,0x3ce4dd64,0x3d0dd682,0x3d20f9fc,0x3d3b6c0b,0x3d4d3c68,0x3d22f94b,0x3c90c31b,0xbb7c3814,0xbcbab660,0xbcf1868c,0xbd377133,0xbd33a198,0xbd0ad612,0xbce0c9ee,0xbcc25037,0xbca038e9,0xbc897356,0xbc2ec8ce, -0xbb80ec99,0x3b83f235,0x3ba95d54,0xb9891beb,0xbb226b71,0xba96f1b6,0x3b1b6ddb,0x3c327ae3,0x3c88939a,0x3c8ae343,0x3c96a6e8,0x3c9c1fd8,0x3c97c9fd,0x3cb7ca1f,0x3ccd04ec,0x3cc8c957,0x3cfef107,0x3cb82185,0x3ce9bd7b,0x3d1d8b2b,0x3d2fbd0b,0x3d4dda1b,0x3d3ee440,0x3d3d192d,0x3d223f18, -0x3cf21dfd,0x3c97c432,0x3c6a560f,0x3b698a43,0xb981f41e,0xbba11972,0xbb80a8f9,0xb88c0fb8,0xbb41f976,0x3a9483f0,0x3ad8f501,0x3bae43b8,0x3c1c18b5,0x3c163fda,0x3c09e611,0x3bf8c84f,0x3be34c37,0x3c24ccdf,0x3c33a017,0x3c521038,0x3c5ab014,0x3c63b48c,0x3c5e05e6,0x3c5cd2e5,0x3c8d7c23, -0x3c94279f,0x3c953aea,0x3c9a01b3,0x3c9b68b5,0x3cc2f91d,0x3cc97da4,0x3cd4a430,0x3ce14fb0,0x3cf9e548,0x3d119c95,0x3d311623,0x3d2f3f12,0x3d2bca50,0x3d39e125,0x3d0facad,0x3d027540,0x3cc12e41,0x3ca698d6,0x3c8f7c4c,0x3c508792,0x3c4c51a2,0x3c4773ca,0x3c3816e3,0x3c5726de,0x3c375c83, -0x3c45bc22,0x3c57066c,0x3c6d91e1,0x3c64016d,0x3c454976,0x3c51ed4e,0x3c266f96,0x3c42c8d4,0x3c295068,0x3c36f1e7,0x3c3a7c44,0x3c5ec4d7,0x3c870c5c,0x3ca7db0e,0x3c79ba09,0x3cbc088f,0x3ccae738,0x3cd73073,0x3cdf5ec6,0x3ce9358d,0x3cdbaf38,0x3cd221ba,0x3cb2309e,0x3ca576df,0x3c8e6630, -0x3c9a5ffa,0x3ca4160a,0x3cbddc2b,0x3caadc45,0x3c9679c6,0x3c990b5b,0x3c7683f5,0x3c39162d,0x3c277bd0,0x3c29a092,0x3c60dc52,0x3c66432f,0x3c6e38d6,0x3c6d6518,0x3c6d28d3,0x3c93445e,0x3c94f3ac,0x3c9b8a5b,0x3ca64400,0x3cba05d4,0x3ca5c045,0x3cbb2e09,0x3ca36152,0x3c878ad7,0x3cb3be28, -0x3c89a1ad,0x3c9ac3c9,0x3c947918,0x3c941c65,0x3c952e64,0x3c9bd7ac,0x3ca7c415,0x3cbb649c,0x3cc24425,0x3cc68a14,0x3cc86fa1,0x3cc54c7d,0x3cb89789,0x3caf104b,0x3ca1dc2c,0x3c9d0a9a,0x3c98f197,0x3c91dd2b,0x3c8e1526,0x3c87ea39,0x3c7b046f,0x3c66c95e,0x3c4e4572,0x3c83b69f,0x3c75a6ac, -0x3c5116e6,0x3c4bfd81,0x3c41c45a,0x3c43b066,0x3c35f81d,0x3c2fc8e3,0x3c3c3545,0x3c6c4095,0x3c834e1a,0x3c4b3c4f,0x3c6fc421,0x3ce9370a,0x3b4b1b21,0x3abf2a5d,0x3a544d81,0x3aa61364,0x3aa40046,0x3a9b68bd,0x3ae8835c,0x3af5a782,0x3ad475f1,0x3a7eccbf,0x3a2fe327,0x39c41de1,0x3a90a3da, -0x3acc71ff,0x3b3cb098,0x3af9ad83,0x3af285a5,0x3b070517,0x3b1812d8,0x3b1f0d4d,0x3b263a31,0x3b2b98ad,0x3b2d39be,0x3b484451,0x3b1fcac4,0x3b04042f,0x3ab4ee26,0x3ab95d52,0x3ac5051d,0x3adc3ed1,0x3aefd907,0x3afd1ee3,0x3ad22c67,0x3ae8b4a2,0x3af5ab0f,0x3ae062dd,0x3af51eef,0x3abac47e, -0xba80fe25,0x398a7c79,0x3abc265b,0x3b0583a8,0x3b94ff24,0x3b90e558,0x3b3689d1,0x3a9aac70,0xba18d931,0xbb0fc009,0xba3cd083,0x3ac93141,0x3bacc65c,0x3b0cfb0b,0x3b05b154,0x3b3eb8da,0x3b597e2d,0x3b82b2f0,0x3b8b83cf,0x3ba379c2,0x3bc44ab3,0x3be3fa09,0x3b93e44f,0x3b435659,0x3b002702, -0x3a8b05ad,0x3a8550de,0x3b5630b2,0x3b659938,0x3b433bb5,0x3b00c63b,0x3b479d8e,0x3b633aef,0x3abc13c8,0x3b009e9c,0x3a66b0bb,0xbb996efe,0xbb136767,0xba979ae5,0xb9d093c7,0x3b66d678,0x3ba9b543,0x3abae5d6,0xbb1a1b4c,0xbbab00de,0xbbcfb547,0xbb71db59,0xb9b67bd3,0x3be76f7b,0x3b0f3129, -0x3ad589e2,0x3b528f4e,0x3b88ec5b,0x3bbdbd7a,0x3baaa353,0x3bdf9daa,0x3c0c49e4,0x3c2be728,0x3be68d45,0x3b908862,0x3ab50964,0x39b9d7dc,0x3ae44c21,0x3b1e276d,0x3b7ae0f1,0x3b7f2c41,0x3b092bc6,0x3b47e741,0x3b2b1b4a,0x3b29aab0,0x3b3a2582,0xb982901b,0xbc21de25,0xbbb9f5fc,0xba04b56f, -0x3aad50ce,0x3c01e7ed,0x3c1db5c4,0x3b7ac2a3,0xbad56a48,0xbbdb678b,0xbc57041d,0xbbdb5893,0xba9b5ddf,0x3c4107d8,0x3ac9543d,0x3a8afe70,0x3b62a227,0x3ba2e995,0x3bea05a5,0x3bcd253e,0x3c1c3fee,0x3c50ca59,0x3c8a7819,0x3c345b2e,0x3beb6b0c,0x3b032648,0xbad98326,0xbb0d06d6,0x3af68656, -0x3bc59b77,0x3bcb2433,0x3ab3f4e6,0x3bd31b84,0x3bd2cc00,0xba8db037,0x3ac8c6a1,0x3b22d2fd,0xbc3e3f10,0xbc17eb45,0xbba500b2,0xbba76852,0x3bb3dd8b,0x3bd48f7a,0x399e5db5,0xbba2c7b3,0xbc694d34,0xbc6e426d,0xbc448000,0xbb4bf29c,0x3c2f6da6,0x3b039b52,0x39e4acd8,0x3b59bda4,0x3bb50c91, -0x3c07cef2,0x3be2c93d,0x3c0c2312,0x3c4559a2,0x3ca491e9,0x3c6e0e0f,0x3c39a2e0,0x3b4338ff,0xbabcb383,0xbba3ac75,0xbb8d6e1d,0x3bc595fa,0x3c0e012c,0x3b32e39f,0x3c0a8f5e,0x3b242e3f,0x3a34bcca,0x3b9b2f91,0xbd2dbe13,0xba88c5f8,0xba8c075b,0x3a80cbc7,0x3b80e268,0x3c086daa,0x3b8c4435, -0xbb0804ea,0xbcd73df7,0xbc91dc62,0x3cdfeae2,0x3c4da84b,0x3c341adf,0x3bcd2313,0x3b94cafb,0x3b2ef6f5,0x3babad40,0x3c010698,0x3c04b0a3,0x3b88c8c1,0x3c285a36,0x3c530e43,0x3cba5012,0x3c3232f5,0x3bb26d1b,0xbaa30973,0x3b360de3,0x3b0f0c93,0xbba29d80,0xbba5e2fb,0xbb1698ac,0xb9e60f66, -0x3c07f440,0x3c2dcd30,0x3c96be6e,0xbd058c9c,0x3c769841,0xb93a2b5c,0xbbd2b21c,0xbc146573,0xbd05e979,0xbc2a3630,0xbc1c7753,0xbc62574e,0xbc3d3130,0xbc55f526,0xbc32830b,0xbc03e069,0xbb591841,0x3b5d05c9,0xbb210630,0xbba2fc1a,0xbb38abdd,0xba41ebdb,0x3b9714d7,0x3bdec741,0x3bfedc63, -0x3bee27cb,0xba918e3e,0x3b1321b7,0x3b67f503,0x3b14447d,0x3a4b9f0f,0xbb041c6d,0xbbbf4703,0xbb91fa5a,0xbbe52155,0xbbdf26f6,0xbc6d7c7f,0xbc6e9902,0xbc2b9f06,0x3c0a6148,0xbb775d70,0x3ba512e0,0x3caaffb7,0x3c207cdb,0x3915ee0d,0x3b5aff23,0xba0b14b6,0xbcac50a9,0xbcb57c62,0xbcabb680, -0xbc535b0c,0xbc018cc6,0xbc0010de,0xbba75a6a,0xbc10e5d7,0xbbfed34c,0xbb974d12,0xbbb243a4,0xbb23231d,0x3b241a49,0x3bb5ddd3,0x3b9ed59d,0xbbe9d0d6,0xba84c0e8,0x3b4e4478,0x3af87611,0x33197313,0xb9d44bbf,0x3a4cd777,0xbac0d654,0xbbe4dd36,0xbbe20d9a,0xbc1564b5,0xbc474ff6,0xbc8cfa90, -0xbbf8c2c4,0xbc65ac0f,0xbc93833e,0xbce1615f,0xbcc5a457,0xbc71305a,0xbc10a4e8,0xbbe9bb40,0xbc592857,0xbc71d9f0,0xbc862b5c,0xbc04bee1,0xbbe38174,0xbb66b238,0x39b375fc,0xbbaddfee,0xbbfa5aa5,0xbbab867b,0xbc0186b2,0xbb8a64c2,0x3b2bded4,0x3b5087eb,0x3b1be54c,0xbb9016f1,0xbb674780, -0x3a21a53c,0xbaa04901,0x3864a575,0xbadf3071,0xbae5f20e,0xbb859087,0xbc014d6f,0xbc652c94,0xbbf20e37,0xbc543278,0xbc2d2679,0xbc969961,0xbc3354a4,0xbd325987,0xbdacad05,0xbda50f5a,0xbd3558df,0xbd0e7fa9,0xbcd62b37,0xbc60a4d1,0xbc9f0196,0xbc74fd2e,0xbc1cd298,0xbc09c054,0xbc0fac60, -0xbb78f9df,0xbbef2a1e,0xbc042cc9,0xbbbce0ac,0xbb858840,0xb91aa2cc,0x3c13c335,0x3ad54167,0xbad72ab9,0xbbc98c71,0xbb858e41,0xbb5d4afb,0xbb5a4a84,0x3a7fef1f,0x3a0f65f7,0xbbd1aaa1,0xbb99d92a,0xbbc655bb,0xbc4e874d,0xbc39eb01,0xbc09ee33,0x3b735dae,0x3b2658df,0x3d8a3927,0x3da87b54, -0x3d6acfec,0x3d185647,0xbb03034d,0xbd1505f8,0xbd41e5d6,0xbcd220c3,0xbc92651e,0xbc98a0c5,0xbc9b48eb,0xbcb7855e,0xbc88cc0b,0xbc4c0c6f,0xbadc5736,0x3abdad5b,0xbb1cf570,0xbba2bb24,0xbbcb6e61,0xbb5ffa8a,0x39ed526e,0x3b364963,0xbbc6c6cc,0x3a7e4c4d,0x3a8b9a24,0x3aaea626,0xbb045553, -0x39e30a4e,0x3b951b8e,0x3c0f665a,0x3c520462,0x3cc34c9d,0x3d32690d,0x3d4f1b78,0x3d474d0d,0x3d65a26d,0x3d0e85ed,0x3cebd351,0x3d052f3d,0x3d07fb82,0x3cfb5958,0x3cf22304,0x3c48b87d,0xbc63e1c5,0xbcd614d7,0xbd057e63,0xbce3f825,0xbd0d649e,0xbd050c07,0xbcd7dbb9,0xbce73e8e,0xbcc9bda2, -0xbca261bd,0xbc8304de,0xbc318007,0xbb56e03d,0x3b571d44,0x3b29f15d,0xbb026114,0xba674bd1,0xb9d47fcd,0x3b7621a0,0x3c3b7d8b,0x3c843c2a,0x3c9ce188,0x3c9e6a33,0x3ca263c7,0x3c9f1878,0x3cc36457,0x3cd7c7c2,0x3cdabdd4,0x3d02e7aa,0x3cf23f12,0x3d0e7e58,0x3d36ad60,0x3d3e9623,0x3d5cbb26, -0x3d40d88e,0x3d30fea3,0x3cf7f814,0x3ca22a08,0x3c0ae0a9,0x3b1db629,0xbb5c0878,0xbb9c69d7,0xbba3848c,0xbbfd1798,0xbbc90c5d,0xbc220b81,0xbbf57acf,0xbbccd21d,0xbb383f15,0x3b052b02,0x3b900b8b,0x3bdd4d8d,0x3be97718,0x3c1a00a0,0x3c567341,0x3c4bfb4f,0x3c60bca8,0x3c71c746,0x3c84d74b, -0x3c884ef0,0x3c7d3637,0x3cb11467,0x3cb67319,0x3cb8c19f,0x3ccf3aff,0x3cc84680,0x3cf19b78,0x3d04e80f,0x3d17d795,0x3d2e2189,0x3d2d1e96,0x3d3924ec,0x3d519533,0x3d38ce52,0x3d1828a6,0x3d07b862,0x3cd58dd1,0x3cbd4911,0x3c85d51e,0x3c5cbe1f,0x3c214c50,0x3bb9ec5f,0x3bc6516e,0x3b90f102, -0x3b6f2e73,0x3bf74298,0x3c1760f2,0x3c50641b,0x3c6cfad9,0x3c822182,0x3c8ad7c0,0x3c79e8b6,0x3c880b64,0x3c54801e,0x3c8160b3,0x3c6e5989,0x3c8ab7f3,0x3c8b57db,0x3c8bf7d0,0x3ca92b38,0x3ccbd2a9,0x3cdde87d,0x3d0b0b1d,0x3d0a1596,0x3d018d03,0x3ce7ea3c,0x3cf64642,0x3cd9f655,0x3ccd08ab, -0x3cbb8fe3,0x3cc9f434,0x3cc59107,0x3cc73189,0x3cc7e421,0x3cd2bed3,0x3cc724e3,0x3cba57be,0x3cc02df8,0x3ca92627,0x3c995c93,0x3c8ee36e,0x3c799cfc,0x3c8caf8c,0x3c8843c9,0x3c8ecf7b,0x3c8d8cb5,0x3c8b970b,0x3cacb1be,0x3cb3ff05,0x3cc4a53a,0x3cd52fa9,0x3ce5fd54,0x3cd86492,0x3cf2f9b1, -0x3ceccfe8,0x3cdaa6e8,0x3d05e47f,0x3cad301d,0x3cbd4740,0x3cba19e2,0x3cbe248b,0x3cc1b24e,0x3ccaa543,0x3cd4e2ec,0x3ce78c01,0x3ce4065d,0x3cda2453,0x3cd1a515,0x3ccb6c6a,0x3cbf5056,0x3cb508dc,0x3caaff7c,0x3ca6869c,0x3ca20e1f,0x3c9b7e72,0x3c96a6db,0x3c94dd40,0x3c90c0be,0x3c8e4ee8, -0x3c86bf71,0x3c9f2240,0x3c993de6,0x3c8a2d26,0x3c8a87ca,0x3c86aab6,0x3c8867fb,0x3c83f173,0x3c844ceb,0x3c8d991e,0x3c9d252d,0x3ca2ff6e,0x3c904614,0x3c9e0dae,0x3d0b1c28,0x3b6ea9e3,0x3b188150,0x3b068642,0x3b062e92,0x3afad892,0x3ad68b12,0x3b0fa32c,0x3b121a4b,0x3af654ea,0x3acbb72a, -0x3aba64cb,0x3a91f3c5,0x3aa71c55,0x3ac93eff,0x3b359bc8,0x3b0d81fc,0x3b15a41a,0x3b24e9dc,0x3b372c46,0x3b3f9d5d,0x3b44b80b,0x3b497d03,0x3b43577f,0x3b436b79,0x3b3018d9,0x3b187eab,0x3ad92858,0x3aeb0c8b,0x3afa721b,0x3b12fb2d,0x3b07650f,0x3b019f39,0x3af84904,0x3af14c6d,0x3b1458ea, -0x3b15185d,0x3b093456,0x3a0b34f9,0xba868142,0x37971cce,0x39d1e2f9,0x3a701200,0x3b9bdac0,0x3b91cc1a,0x3b11c09d,0x3ab98f9d,0xb9aebf92,0xbaeba394,0xbaf14d4f,0x395676f1,0x3b980471,0x3b29702a,0x3b402395,0x3b7c77cc,0x3b8dbb3a,0x3ba0f624,0x3ba82485,0x3bc74493,0x3bdbea16,0x3bd63b44, -0x3b948d55,0x3b4caa3b,0x3b0cf932,0x3afd46d6,0x3b0d36d1,0x3b9c6459,0x3b68fc3b,0x3b3aff34,0x3b2a084b,0x3b140405,0x3b586a51,0x3b859916,0x3b4ea8fa,0x3a1d74a8,0xba817fed,0xbac3f039,0xba90cbf3,0xbb05dce4,0x3b73c709,0x3b9af198,0x3a158c65,0xba176d42,0xbb5d9817,0xbb925017,0xbbb675a5, -0xbb55e294,0x3babb2d5,0x3b012e93,0x3b29080a,0x3b89240e,0x3bb28181,0x3be61f22,0x3bdc19ed,0x3c0b69ec,0x3c170a2b,0x3c1a9b52,0x3bdb6f0e,0x3b8cea75,0x3ac788b3,0x3aa5f0d7,0x3b49e1fd,0x3ba28155,0x3b7ada8d,0x3b4f7594,0x3b3a7146,0x3afbbdaa,0x3b0f69af,0x3bc17767,0x3b55c305,0xbb56a394, -0xbc22553a,0xbbbf1b3c,0xbbd59dba,0xbb8e7569,0x3bfa134d,0x3c01351a,0x3a555f7e,0xba58363d,0xbbd1b6f3,0xbc439e4d,0xbc35caa5,0xbbdbde45,0x3c13842c,0x3acbb51d,0x3b1b2fe8,0x3ba0d3aa,0x3be6c5ef,0x3c11e047,0x3c09a874,0x3c4734eb,0x3c6a7d87,0x3c7d56bd,0x3c1ff67d,0x3bd08cff,0x3ad0e0d5, -0xb97fc682,0x39193478,0x3bbe55b0,0x3bbaf654,0x3b8761a2,0x3b309a10,0x3b2c049b,0x3b7a1cb6,0x3bc9a752,0x3b62b711,0xba872177,0xbbdb0fc4,0xbb9fb1e5,0xbbc4ce23,0xbc1dfafc,0x3b8c03de,0x3b97b277,0xbacd9b28,0xbb087fd0,0xbc2283e5,0xbc31fda7,0xbc818804,0xbc2726b9,0x3bc631a9,0x3a8210b9, -0x3aaa6b4b,0x3b866a8f,0x3bef8670,0x3c26e092,0x3c1f6cd2,0x3c33d0a8,0x3c55cfeb,0x3c9c48bc,0x3c5212b3,0x3c135037,0x3afc4b20,0xba9ab876,0xbb4586c3,0xb92be975,0x3bb586c1,0x3bd77122,0x3b27bf86,0x3b841771,0x39b8d88e,0x3bdcf10f,0x3b4b5820,0xbcd83b3c,0xbb85d6b2,0xbbcd6e28,0x3b1308d2, -0x3ba3f06e,0x3c82a01e,0x3c5fef0e,0x3b0a8a85,0xbc8df788,0xbc6e277d,0x3c93497c,0x3ae5cedc,0x3b16deb4,0x3c1bf688,0x3af69069,0x3a26862a,0x3b835549,0x3bab6365,0x3bf9788c,0x3c009acf,0x3c7bce5c,0x3c8944a8,0x3c99bca8,0x3c2dc073,0x3bb6b196,0xbaa27790,0x3b49ebca,0x3b80a4c5,0xbb4148ef, -0xbac1c351,0x3a8043d5,0x3a98a660,0x3c5cad18,0x3c66a94a,0x3c5dc7bc,0xbcaa43c8,0x3b998618,0x3bd484bd,0x3b323ed3,0xbbc74969,0xbcf45251,0xbcca45f5,0xbcc17569,0xbbce5f8a,0xbc443c46,0xbc3539f5,0xbb8429c7,0xbc46b51c,0xbc2d6d90,0x3a50d80b,0xbb0d32c9,0xbb180b06,0xbb55da1c,0x3b2283d2, -0x3bcd482d,0x3c298b73,0x3bafd47c,0x3baf9817,0x3b125ace,0x3b80fa45,0x3bab75dd,0x3b0f8e6c,0x37ec2f6e,0xbb157fe9,0xbb64ada7,0xbb1f1c20,0xbbaf98e1,0xbbab1672,0xbc60c76f,0xbc4a0743,0xbbdcad3e,0x3aac172c,0x3b2f9912,0x3ca5c5de,0x3c969c45,0x3bc1aa40,0xb9d4bdf5,0x3a226ce9,0x3b30efc4, -0xbbc3d226,0xbc73887b,0xbc773241,0xbc05dff2,0xbc0559de,0xbba2727f,0xba493d27,0xbb0aefa6,0xbb4989ad,0x3a25afb1,0xbab76e27,0x3b06b84c,0x3c23568f,0x3bb5fe12,0x3b85649f,0xbaac943c,0x3a856d67,0x3b6caf1a,0x3b4cf3ca,0x3ab50c5c,0x380402da,0x3a944a16,0xbacbe6b0,0xbbca68a8,0xbc0abdbe, -0xbbeeed36,0xbc311186,0xbc936291,0xbadd898c,0xbc7ef355,0xbcbc95b2,0xbcc63551,0xbca6bb81,0xbb97cc3d,0xba588681,0xb858438b,0xbb49c0dc,0xbc49ca18,0xbc722b0e,0xbb9e2714,0xbbda638a,0xbb1e8167,0x3a34726e,0xba5ecd77,0xba2b5972,0x3abac1a3,0xba62f007,0x3ad94a4d,0x3c1d7fdd,0x3b1c59dc, -0x3ab96829,0xba4f7a3c,0xba80bb1f,0x3aa9516f,0x399db125,0x3a457bcb,0xba2aedc2,0xbada85ac,0xbb9a83e9,0xbc2569e4,0xbc80e4cd,0xbc38b540,0xbc75989f,0xbcb86dec,0xbca269dc,0xbd119712,0xbd662514,0xbd7a4e7c,0xbd562bc2,0xbcf93ae5,0xbd027575,0xbceb393e,0xbc40c35f,0xbc889ecf,0xbc118bcc, -0xbb21da75,0xbb5f6f52,0xbc0374d7,0xbc13e1d1,0xbc0d5f47,0xbc011c0d,0xbc0ffa54,0xbae36985,0x3ab6ed82,0x3c4e5ec5,0xb93ae952,0xbb862695,0xbba27159,0xbadb8c29,0xb9dc0501,0xba0a3fae,0x3aac008c,0x3a876a28,0xbb34211b,0xbba0afdb,0xbbf853a3,0xbc2f5134,0xbc46486f,0xbc607b05,0xbc63be6f, -0xbca1fc17,0x3d73bda3,0x3d5ebc41,0x3cce9e33,0x3b9baa76,0xbcf1f4de,0xbd17fe4e,0xbd09d3a4,0xbc7ade8d,0xbc863ebb,0xbca0084b,0xbcb4db87,0xbc7605c7,0xbc6055eb,0xbca39e68,0xbc2c74d0,0xbaf14e03,0xb9936442,0xbb524d55,0xba362ce0,0x3b799e22,0x3b8f193c,0x3bd5bbac,0xbb81ee10,0x3ac4f773, -0x3a4f9ebc,0xbb3e3e1c,0xbb33b06d,0x39da1c20,0x3b8895ee,0x3bb503ed,0x3c0cba85,0x3c78f54e,0x3d1658be,0x3d4c1fa8,0x3d4882c0,0x3d50690e,0x3d195cc2,0x3d01ef95,0x3d08d2b8,0x3ce1e4ea,0x3c778851,0x3b2f359d,0xbc8c877e,0xbd137b5a,0xbd0c5142,0xbcfc779a,0xbcbbd95a,0xbcb63502,0xbca96629, -0xbc893372,0xbcc56fa3,0xbcc3c9bd,0xbc97551b,0xbc872dc4,0xbc58eec3,0xbbcc4781,0xbb498df9,0xbb3a6756,0xbb18be98,0x3b466499,0x3ba706b3,0x3c2a1bab,0x3c4ff94d,0x3c75fc88,0x3c9dfec2,0x3ca7bc63,0x3cb3d6b6,0x3ccf0ef3,0x3cc237e1,0x3cc09f08,0x3ce52a2e,0x3d0353eb,0x3d115210,0x3d1c1861, -0x3d311d31,0x3d29dab6,0x3d42f3f9,0x3d10c637,0x3ce6b24c,0x3c748d92,0x3bb7d686,0xbb8adfea,0xbc5c8a66,0xbc3be9d7,0xbc2fd7bf,0xbc03d3f6,0xbc3cef11,0xbc2cdf59,0xbc235933,0xbc19970c,0xbc00d7a7,0xbbb874b8,0xbb0cb788,0x3b104e09,0x3b9cd65e,0x3bf57578,0x3c339991,0x3c67334c,0x3c60903d, -0x3c6bac01,0x3c84e9a2,0x3c9f3f7f,0x3caf963f,0x3cb80f6a,0x3cd74670,0x3cdc6141,0x3cea6868,0x3d0510fc,0x3cee994a,0x3cfda14d,0x3d0827fb,0x3d1cd26e,0x3d30fe1f,0x3d2e0f22,0x3d32a481,0x3d3b1de2,0x3d0f426d,0x3cba3309,0x3c45edbe,0x3c23ccd2,0x3c0ab245,0x3bc90c6b,0x3be32826,0x3bb348cf, -0x3b57c8c7,0x3b928418,0x3b9103a3,0x3b884613,0x3bde1bc1,0x3c1b3602,0x3c47229d,0x3c6066df,0x3c709550,0x3c8117ab,0x3c89b086,0x3c965066,0x3c8da063,0x3ca25376,0x3ca2568a,0x3cbb2d31,0x3cbfbbf4,0x3cc11eda,0x3cd14a45,0x3cdfd9b2,0x3d0dca15,0x3d0e7137,0x3d0b67c4,0x3cf715c5,0x3cce31d5, -0x3cd3c2a3,0x3cafed30,0x3cad7cae,0x3cb619e5,0x3cdb57c9,0x3cee6463,0x3ceb965d,0x3ce4fbb4,0x3cdfefd7,0x3ccad118,0x3cbd67cd,0x3cc28fda,0x3cacf207,0x3c97bd36,0x3c9227a6,0x3c993364,0x3ca0007b,0x3ca1b041,0x3ca9cb60,0x3cb0fccd,0x3cb43843,0x3cc95458,0x3ccc91eb,0x3cdbf201,0x3ceb8b5d, -0x3cf39cd8,0x3cf0504c,0x3d027ce1,0x3cff3d73,0x3d050370,0x3d113423,0x3cb9e7cc,0x3cbea3c8,0x3cc24858,0x3cc5e6ee,0x3cca1a68,0x3cd55263,0x3cdd852e,0x3ce73d39,0x3cd9573b,0x3cc655c3,0x3cb74df3,0x3cafed4b,0x3ca9635c,0x3ca632fe,0x3ca31e43,0x3ca08a84,0x3c9be7f2,0x3c987cdb,0x3c976e39, -0x3c92e3b0,0x3c99e3b3,0x3c9fe4f6,0x3ca039b0,0x3ca77f45,0x3ca6bbff,0x3c9f1f0b,0x3ca4048b,0x3ca2620c,0x3ca4fc85,0x3ca3f8de,0x3ca43222,0x3cac3284,0x3cb4ce09,0x3cb1fd84,0x3cb23ac8,0x3cb6f0bd,0x3d11d40b,0x3b9936bc,0x3b2df450,0x3b0fece5,0x3b26cf32,0x3b23d6a1,0x3b08d65f,0x3b32b428, -0x3b3d61ab,0x3b28f869,0x3b1f6f87,0x3b0be0cb,0x3aa06c66,0x3aca4067,0x3af4c615,0x3b44f439,0x3b333e78,0x3b42df5e,0x3b4ba843,0x3b60a768,0x3b674f85,0x3b6d32d3,0x3b6f40fb,0x3b60a9e8,0x3b44c4b7,0x3b512131,0x3b3649cd,0x3af89702,0x3b0d90ba,0x3b1a9e71,0x3b3d89ac,0x3b19ebe7,0x3b0a1ee4, -0x3b1b1d39,0x3b114ca2,0x3b3e9590,0x3b56b03b,0x3b2587e2,0x3ae369bd,0x3a280637,0x3ad1c540,0x3b12cfb9,0x3b1953c1,0x3bbf65cf,0x3bb64629,0x3b5c803f,0x3b5d248c,0x3aa92105,0xbae15af5,0xbb029b23,0xb91d6c31,0x3b939196,0x3b6df7c2,0x3b8b754f,0x3b9902d9,0x3ba99c71,0x3bbf00a7,0x3bce3687, -0x3be5e4e0,0x3bf468dd,0x3bd44348,0x3b9faee1,0x3b6f5aa3,0x3b28a2e5,0x3b3ba251,0x3b5ecd96,0x3bd01b7c,0x3b840e9b,0x3b623073,0x3b8198d2,0x3b1f8d89,0x3b7c494c,0x3bfc0b93,0x3b92ef95,0x3aedc845,0xb8c131e1,0x3a69b3d7,0x3a953d9c,0xba56d6cb,0x3b878864,0x3bb5eb1f,0x3b0022c2,0x3b234e86, -0xba99b2db,0xbbc8ce39,0xbbd70e75,0xbb8b4bc3,0x3b8fcb51,0x3b43ae89,0x3b8a967f,0x3ba93a57,0x3bd7d7f6,0x3c030db7,0x3c00ec74,0x3c1f9e1d,0x3c22f3b7,0x3c0ee8ee,0x3bd91d16,0x3b902e2e,0x3b028db0,0x3b0630d3,0x3b838d64,0x3bf93abd,0x3b8693f8,0x3b4c2a95,0x3b946780,0x3aecb55e,0x3b3db7d1, -0x3c355f45,0x3b95b230,0x3a94670f,0xbb7f8e9c,0xbaa00d10,0xba0532f3,0xba824842,0x3c0c57d8,0x3c1977cc,0x3b16ddfd,0x3b8e5102,0xbb2fe3c4,0xbc5592f8,0xbc5161c7,0xbc0f4a85,0x3bfbb730,0x3b6e05cc,0x3ba84e98,0x3bd19466,0x3c0ad386,0x3c2a2772,0x3c340907,0x3c674988,0x3c804bde,0x3c6929ee, -0x3c19d72e,0x3bc40033,0x3afaf1ac,0x3a37af2a,0x3b1686e5,0x3c264c32,0x3bb89b5c,0x3b6d4cf9,0x3bb76cf1,0x3aae1311,0x3b60b21f,0x3c88a519,0x3bd83951,0x3b0e8425,0xba5be7fd,0x3a96909a,0xba644330,0xbc019a1b,0x3b732d59,0x3b990603,0x3a320134,0x3b3cd1d4,0xbba7a80a,0xbc728dee,0xbc8ee656, -0xbc494e10,0x3ba05549,0x3b46d31b,0x3b8a1094,0x3bcafd18,0x3c1aa29a,0x3c4e4b96,0x3c4862da,0x3c65d966,0x3c762ed1,0x3c8e8243,0x3c3df889,0x3bf699bc,0x3b06c96c,0xba9884a9,0xba596cc4,0x3ba0eb5c,0x3bb5512a,0x3ba6aeaa,0x3b835951,0x3aababe3,0x3a86d65e,0x3c917bff,0x3bb0a220,0xbc8cadea, -0xbc3b5a51,0xbbd3a461,0x3baa9ef7,0x3c481727,0x3c927a1c,0x3c874f77,0x3c3bf362,0xbc0a57b1,0xbc44c765,0x3b8019fa,0xba4edea2,0x3a8eddad,0x3bf30562,0x3b06cf6f,0x3a7b9808,0x3b4da508,0x3ba9d1af,0x3bfab1e3,0x3c00a214,0x3c9eb2a6,0x3ca3fb18,0x3c81a911,0x3c2e2750,0x3bc3b82b,0xb88ff926, -0x3b91f758,0x3b90c4d9,0xbb001a7c,0xb98d7cbd,0x3b553ba6,0x3bddc8d9,0x3c803998,0x3c587b76,0x3b990339,0xbc3ff730,0xbb32e918,0x3cc155bf,0x3c2cba60,0xbbd89fe0,0xbcb78082,0xbd05b91b,0xbd00139b,0x3acda5a2,0xbbac7efa,0xbab50e30,0xbaa0ece2,0xbc03d9c1,0xbc28c265,0xbbad8f40,0xbb93396c, -0xbb1913b9,0x3ab46f1d,0x3bb21a65,0x3c048726,0x3c4c0d44,0x3bae056b,0x3b9de820,0x3ba12d67,0x3b9a8456,0x3bbc0660,0x3ad150ed,0xbabf3189,0xbb39b527,0xbaea7904,0xbad7fb4f,0xbb9404c6,0xbbd6d993,0xbc286aed,0xbc060ca2,0xbb9274d3,0xbbeff229,0x3c3822a3,0x3ce28a53,0x3c142b45,0x3a588ec7, -0xbb47d3f8,0xbb9efd58,0x3ae8ed93,0x3b8a049c,0xbbbff4f2,0xbbe3ab1e,0xbb8eaecf,0xbba8b867,0xbb6c3ab6,0xbb8889ed,0x3b275a62,0x3b360745,0x3bb44126,0x3b58c788,0x3bbe64f8,0x3c76be28,0x3bab1ed8,0x3b7553b3,0x3b69f6b4,0x3b652158,0x3b8c7cd1,0x3b29615c,0x3b093550,0xba21a20f,0x3a53f5dd, -0xbafc3b94,0xbbb4c895,0xbc0ef829,0xbbba2e02,0xbc0da4f9,0xbc6e2371,0x3b566ffd,0xbc70b536,0xbccf3e43,0xbc87382a,0xbc37d5d1,0xbc10216d,0x3bce8aab,0x3c2000b2,0xbb45c298,0xbb392502,0xbbacd82a,0xbb81d35d,0xbc09c55d,0xbbd78039,0xbbc4f9e6,0xba0100f4,0x3b3211c0,0x3b6182fc,0x3b857603, -0x3bf66b2e,0x3c8aceb2,0x3b359d26,0x3a890fba,0x3b117e19,0x3aeaadf1,0x3b177b2a,0x3a46cb1f,0x3aac8e96,0xb9e5427f,0xba4ac7c0,0xbbb50d6f,0xbc2be758,0xbc5a51b9,0xbc0acf38,0xbc5a5c71,0xbcee01d1,0xbc967193,0xbd3d816e,0xbd4234aa,0xbcc105c0,0xbc77d638,0xbcf9972b,0xbcd3b5e2,0xbcdb81a4, -0xbc98f29a,0xbc491f7b,0xbb69f74d,0xbb0df43b,0xbbb04131,0xbc28cbd4,0xbc6af0db,0xbc701497,0xbc19beed,0xbbd5f476,0x3a48a9da,0x3b51b5fd,0x3c4f37a9,0xbb080726,0xbb751204,0xbb1ae7f1,0xba0c0191,0x3a76fcb9,0x3a83ed7b,0x3ab8bb33,0x3a628d14,0xb8e82388,0xbb828092,0xbbdef697,0xbbfcf3f0, -0xbc098a96,0xbc52cae4,0xbcbe22c5,0xbd0494c5,0x3d0f5695,0x3c558eb4,0xbca5660f,0xbd09b98c,0xbd256b7c,0xbcd25de8,0xbc5cba78,0xbc4ca813,0xbc673260,0xbc82b27d,0xbc3f7b08,0xbc1250de,0xbc004262,0xbbc009ad,0xbc42fb74,0xbc2b9856,0xbba0542c,0xbb9147a0,0x3abb0bb2,0x3bf544f3,0x3b2e5363, -0x3adda6eb,0x3a98f644,0x3b6538b5,0x3ae76bdd,0xbb912c8d,0xbaa927b4,0x3a9449b1,0x3a4c590a,0x3a60cfb3,0x3b0acefa,0x3b75d0e1,0x3ca786fd,0x3d15f773,0x3d1816b3,0x3d07b3e7,0x3d2bb7ad,0x3d19c879,0x3d113b9a,0x3cbf575c,0x3ba341cd,0xbca26378,0xbd11f9ca,0xbd21441f,0xbd04fb29,0xbcd5ab51, -0xbc9e6978,0xbc8ef087,0xbc885e1a,0xbc602630,0xbc82fc7b,0xbc8dacb0,0xbc345241,0xbc6e0606,0xbc5028b0,0xbbdedcb5,0xbc1a2a59,0xbbd5ff98,0xbb7d3aab,0x3b63e5e7,0x3c0ed7f8,0x3c77fe2a,0x3c5c3593,0x3c65e8c4,0x3c8ec5f6,0x3cab79a8,0x3cc341fd,0x3cfd667f,0x3cd1e6f7,0x3cc1a53b,0x3d0ae3ea, -0x3d102b9c,0x3d1c4659,0x3d1cb5e0,0x3d17e5df,0x3cfc2e2d,0x3d05603a,0x3c7e3b36,0x3bd5b0de,0xbb15d31d,0xbc0a1c4a,0xbc61333f,0xbcb4881b,0xbc855777,0xbc74ccef,0xbc5a3faf,0xbc5ba725,0xbc5adf17,0xbc16c499,0xbc0e50d5,0xbbc3d574,0xbb6502d3,0xbae462a4,0x3ab7db85,0x3af89a78,0x3bd1e239, -0x3c142e36,0x3c41e6b3,0x3c5257a2,0x3c71add1,0x3c929725,0x3cb7752c,0x3cd1b6b7,0x3cf3b767,0x3ced7384,0x3cf7a58a,0x3d0599db,0x3d1679ef,0x3ce10213,0x3ce25444,0x3ce2e32a,0x3cfc84a0,0x3d06bfb6,0x3d01b234,0x3cf3894e,0x3cd06cbc,0x3c89d8fc,0x3bd79fcb,0xbb90aff2,0xbb839807,0xbbb006ce, -0xbb960786,0xbb0773bd,0xba8d80c6,0xb9b626a6,0x3aef1a58,0x3b55eeab,0x3b9eca45,0x3bd5d955,0x3bfbdc1c,0x3c12f4e0,0x3c230df2,0x3c351116,0x3c42b56c,0x3c819a99,0x3c95b616,0x3ca90f0c,0x3cb71339,0x3cc13bc6,0x3cd86151,0x3cd8ce02,0x3cd4fc25,0x3cce0a2e,0x3ccd03fa,0x3d0be1ca,0x3cf73a9c, -0x3ceff2c1,0x3ccf2ba3,0x3ca86eef,0x3ca50481,0x3c8b97c0,0x3c9bb21d,0x3ca39da2,0x3cbe4e49,0x3cd275b0,0x3ccb547c,0x3cc1fc56,0x3cb1ddc8,0x3c99be33,0x3c88072f,0x3c7b9309,0x3c49b3e4,0x3c0ce105,0x3c003727,0x3c5d8777,0x3c7892c9,0x3c8cff83,0x3c9a9b1d,0x3cb3170f,0x3cbe2c2c,0x3ccaf483, -0x3cc5fa58,0x3cd5268c,0x3ce3fd01,0x3ce47a21,0x3cf4d63d,0x3cfa6853,0x3cf2ca35,0x3d075791,0x3d06ce17,0x3cb3ddb7,0x3cb255ef,0x3cb8ab13,0x3cbac257,0x3cbe4b32,0x3cc8ce8d,0x3cca27cf,0x3cc8e848,0x3cb774d6,0x3ca5d234,0x3c95d544,0x3c8ccf0f,0x3c8800b3,0x3c876998,0x3c89afe9,0x3c8aa15f, -0x3c8b29ac,0x3c8de670,0x3c91ee07,0x3c88ea4a,0x3c96b15e,0x3c9ea089,0x3ca6a906,0x3ca10582,0x3ca2af90,0x3ca44c6d,0x3cadbe4a,0x3caee5b2,0x3cb2e8b9,0x3cb664fc,0x3cb51d5b,0x3cba85d3,0x3cbc1cb0,0x3cb47a69,0x3cb7c14c,0x3cb6e5f5,0x3d131c4a,0x3bb7553e,0x3b565a29,0x3b4f5459,0x3b5488b7, -0x3b49312b,0x3b2c0408,0x3b5bedaf,0x3b65f9b5,0x3b44b0da,0x3b5a83ed,0x3b495d69,0x3aecb723,0x3b0af1d3,0x3b193201,0x3b444bf7,0x3b5593a6,0x3b6df8c7,0x3b70491f,0x3b81e75d,0x3b851089,0x3b8aeb4b,0x3b866ff8,0x3b7b03f3,0x3b5dc543,0x3b6c4cae,0x3b5653b2,0x3b23814d,0x3b33e751,0x3b463b94, -0x3b7190e2,0x3b422fb3,0x3b2cd10e,0x3b4f7577,0x3b31fb5c,0x3b633080,0x3b9349f7,0x3b4c0b1a,0x3b246dae,0x3af2a316,0x3b3569e5,0x3b571175,0x3b3900ca,0x3bd349eb,0x3bd29bed,0x3b548ea6,0x3b9c30e4,0x3b3efec6,0xba91faf9,0xbad4f3fb,0xb9808774,0x3b570783,0x3b88fa13,0x3bac113c,0x3bab2fe9, -0x3bbaf5cd,0x3bd1d5d5,0x3bedd4fd,0x3bfa6cfb,0x3c01a49a,0x3bd3c91d,0x3baaa0e1,0x3b87bead,0x3b557904,0x3b6e1ade,0x3b8e852b,0x3bebe54c,0x3b981672,0x3b83de0b,0x3babcf11,0x3b395824,0x3b8d3e75,0x3c26edcb,0x3bb7a37a,0x3b370d5a,0x3aa8a3b6,0x3b2dc5a1,0x3b04e913,0x39e0fad7,0x3b9b0483, -0x3bcdb709,0x3a967dee,0x3ba35eef,0x3ad42c5f,0xbbba03c0,0xbbc57ba0,0xbb97c6aa,0x3ab0860c,0x3b54c706,0x3bb13adf,0x3bc209b6,0x3be7b88f,0x3c0923e9,0x3c123371,0x3c2873d8,0x3c282736,0x3c024d79,0x3bdd0426,0x3b9f7846,0x3b344f6c,0x3b38f0bf,0x3b9423b6,0x3c157ea8,0x3b9261bc,0x3b695d17, -0x3bca9d2e,0x3b11d6dd,0x3b7cd4de,0x3c6caecd,0x3bbcb913,0x3b230daf,0xbb48a61e,0x39c080a3,0x3b0f9951,0xb982003a,0x3c1002e2,0x3c2adbe8,0xb9e5b15d,0x3be97caa,0x3a4d506a,0xbc535a60,0xbc5703ba,0xbc2712d8,0x3ab03bfe,0x3b7baf52,0x3bdb2fab,0x3bea021b,0x3c0ee93d,0x3c3188fa,0x3c4bc897, -0x3c783993,0x3c81ef43,0x3c531e68,0x3c17d8fb,0x3bc824d2,0x3b330ebd,0x3a9c2f4f,0x3b72beaf,0x3c51ba9e,0x3bb5e12b,0x3b7ffa64,0x3c02c3e2,0x3a3eadde,0x3b693cec,0x3cb4b3c0,0x3c09456b,0x3b441632,0x387ddf2f,0x3b367d6b,0xb9bf6148,0xbb8ac87c,0x3b66ce07,0x3b98b377,0xba71b413,0x3bc1f87b, -0x394aab4f,0xbc759dd5,0xbc8b2665,0xbc65cfaa,0xbb053f50,0x3b208be6,0x3bd29030,0x3bfc641e,0x3c1f4499,0x3c4fd73d,0x3c640b7c,0x3c8083b8,0x3c84bdaf,0x3c810d56,0x3c3d09e1,0x3bfc42ba,0x3b629b86,0xba8f7e2d,0x3a81543c,0x3c1d5d1b,0x3bba4f1e,0x3b8edd2b,0x3bdfa404,0xb90a598a,0x3b11a339, -0x3cbef76e,0x3bc5926e,0xbc46a06f,0xbc2091ec,0x38af5f9d,0x3c222d14,0x3cb1eaca,0x3c9d8f47,0x3c932262,0x3c86d017,0x3a1caa1f,0xbbbe3b40,0xbb869cca,0x3b4de1c9,0x3bbf8aa8,0x3baf1b4a,0x3b5a0e3e,0x3acb56a8,0x3b0fa7fe,0x3bc8d393,0x3c2970d8,0x3c1205ea,0x3ca688d2,0x3cb129c2,0x3c5d8c46, -0x3c30e660,0x3bdc2e5d,0x3adf84da,0x3bbb8102,0x3b8d0603,0xbb011588,0xb8bc0f67,0x3ba447f6,0x3c4134dd,0x3c845f46,0x3c2259f4,0xbb8df57d,0xbc181f94,0xbb87f820,0x3d140886,0x3bd77d7e,0xbc2a59e6,0xbc52f5eb,0xbcff0d59,0xbceed841,0x3ba5e5cd,0x39656e2a,0x3bb99e73,0x3b71fd8a,0xba993bcd, -0xbbc31a49,0xbb9c6084,0xbbc9be5a,0xbb882e10,0x3b1bb188,0x3b9d8e7c,0x3be61889,0x3c3c28ed,0x3ba96adc,0x3b8f60c0,0x3bd978e2,0x3bb56527,0x3bc8f0cb,0x3b2cc5d0,0xbabf2caa,0xbb15adbf,0xbaa4d961,0xb9e61bbe,0xbabc3103,0xbba75019,0xbb80c84c,0xbb1e84ae,0xbb2092d0,0xbc24e63c,0x3c2692a7, -0x3cb3ef84,0x3ab55712,0xbb3145c0,0xbbb35fe7,0xbc067bfa,0xb831d2a1,0x3bea0dda,0x39e89a24,0xbb076123,0xbb3a5d3b,0xbbb97da4,0xbba94a4e,0x3a733739,0xbacfba45,0xbab3aa20,0x3ba0eb2a,0x3b98f441,0x3c06edfc,0x3c867548,0x3b8ded20,0x3b3d7d2f,0x3c00995f,0x3ba619c0,0x3b8726bd,0x3b1dc37f, -0x3b09bd42,0xba88f6c6,0x39dfb53c,0xbaef7e44,0xbb86fb79,0xbbd83991,0xbbd95139,0xbc1568b1,0xbc33c1ad,0x3b391eef,0xbc89adcd,0xbcafc59f,0xbbed5bd5,0xbb4df065,0xbc2fc855,0x3c0bc19a,0x3c5c15e4,0xbba361ce,0x3b5870af,0xba05cc39,0xbb9be1f8,0xbc2dedef,0xbc230d54,0xba9a5543,0xbbb76045, -0xbb7a00ce,0x3b1b6e99,0x3ba05e93,0x3c1f0c98,0x3c9d5b89,0x3b930ff9,0x3a5109c9,0x3ba8f9cd,0x3b5f6446,0x3b34b454,0x3aaa5593,0x3ab4ce16,0xb9c08ad5,0xb9e896c9,0xbbb6cf34,0xbc24f165,0xbc2183be,0xbc0b26aa,0xbc7d39be,0xbcf389cb,0xbc9db01a,0xbd320c5b,0xbcac0389,0xbb87a127,0x37c3771a, -0xbce77fbc,0xbcc46806,0xbcd27522,0xbc9ff072,0xbc0e5f9e,0xbb27f93d,0xba94c23f,0xbbbf12aa,0xbc0ffbb0,0xbc005d68,0xbc5e7705,0xbc179bf8,0xbba5dc11,0x3ade6ab7,0x3b961fd5,0x3c31f464,0xba4158aa,0xbb0b1863,0xba0ac9ca,0xba0e168e,0x3acc8374,0x3b4917a9,0x3a5cf414,0x3a1a01e6,0x397f35c3, -0xbb01c513,0xbbac5fa1,0xbbb98046,0xbbb57983,0xbc3f02b1,0xbcd09cbd,0xbd12e063,0x3b40d4a8,0xbd04584a,0xbd6d4781,0xbd765941,0xbd0ca47d,0xbc74bfbd,0xbadad97b,0xbbf35d2e,0xbbee45f9,0xbc079fe2,0xbb6ea431,0xbc42fec5,0xbc3de0d0,0xbb7c9ea5,0xbbc53901,0xbc0ae1a9,0xbc04835b,0xbae7a890, -0x3abf3df1,0x3bb24a9d,0xba41845d,0xbaffa9cd,0x3bd1a095,0x3b7ded0c,0x3a9ceeb0,0xbb687ca0,0x3a99f28e,0x3b3ffc06,0xba90bfa5,0xbb91188d,0xbb9c7807,0xbbce83c9,0x3a8f5372,0x3c821f13,0x3c973700,0x3c2ecf73,0x3d34d360,0x3d1f6c90,0x3cf7a204,0x3c688afd,0xbc1490bf,0xbcf649c3,0xbd1a6798, -0xbd070e33,0xbccd606e,0xbc92fae6,0xbc7b9948,0xbc3480cb,0xbc24158e,0xbc27110d,0xbc17c63b,0xbc25554e,0xbbe7c180,0xbc1afe64,0xbbfa0417,0xbb26b9dd,0xbc14b4cf,0xbbd557bf,0xbb83fcbe,0x3af87e4a,0x3c05542b,0x3c5950ba,0x3c462ef7,0x3c5611c4,0x3c700151,0x3cb275b3,0x3ccfb1ff,0x3cfc1dd3, -0x3ce529d1,0x3cd83658,0x3d1c43db,0x3d142860,0x3d1f5449,0x3d14ee81,0x3cee9790,0x3ca3eb92,0x3c656d23,0xba92cdca,0xbc32ab1c,0xbc925633,0xbc9c85e1,0xbca1c869,0xbccbb3b4,0xbc9393a5,0xbc854c0c,0xbc71f057,0xbc5ecf18,0xbc7190f2,0xbc3acc74,0xbc2a1739,0xbbf8dc94,0xbb8cd4e3,0xbacdd312, -0xb86cc8d7,0x3a8bfdbc,0x3baff8a0,0x3bf0175a,0x3c1f6096,0x3c4c2257,0x3c82c68e,0x3c9e97d2,0x3cc76435,0x3ce38cf1,0x3d04d492,0x3cf9e5e6,0x3d07836d,0x3d117418,0x3d1fa1f6,0x3cc67300,0x3cc818f2,0x3cb298d9,0x3cb1c470,0x3cb1d339,0x3c8bca38,0x3c35c2c9,0x3aedaa02,0xbb315cbe,0xbc07ffdd, -0xbc8146dd,0xbc62b21d,0xbc7b8ab5,0xbc60c5ca,0xbc448304,0xbc311ac0,0xbc0c4aff,0xbbbb3c15,0xbb9e5b9c,0xbaaa5746,0x3b16eb7e,0x3b768470,0x3bc93ceb,0x3be34e18,0x3c0aee01,0x3c2b0fba,0x3c6cb593,0x3c8c8fe3,0x3cb32884,0x3cb61296,0x3ccc6822,0x3ce08a26,0x3cdeeb3b,0x3cd25704,0x3cc99d44, -0x3cbb6ccb,0x3cee9fd1,0x3cb703b8,0x3cb63a40,0x3c9d4fd4,0x3c7b6e3f,0x3c858f27,0x3c82432a,0x3c9c820c,0x3c984f68,0x3c957ab7,0x3c979ccf,0x3c847f23,0x3c677ef6,0x3c2e1fb3,0x3c1d3bc5,0x3c0f5d08,0x3be2cedd,0x3ba6789e,0x3b640bc1,0x3b12286f,0x3bc58a9f,0x3c01ac54,0x3c248557,0x3c4c4129, -0x3c82286e,0x3c8b29a1,0x3c9da0e0,0x3c97b04d,0x3cad7296,0x3cbe57f3,0x3cbc5039,0x3cdf937b,0x3cd72ac0,0x3cd22290,0x3cecd61a,0x3cd94cb0,0x3c9bfe8f,0x3c89e75d,0x3c91979c,0x3c91d25c,0x3c92af4e,0x3c96b06d,0x3c8e153a,0x3c860d3a,0x3c6e04ed,0x3c5c0f4d,0x3c47eb19,0x3c39a808,0x3c340a05, -0x3c315493,0x3c3aecf4,0x3c3eb80a,0x3c490f05,0x3c52c104,0x3c58f76c,0x3c512a30,0x3c80432a,0x3c91d7ae,0x3ca49827,0x3c88c4df,0x3c94e8d0,0x3ca9b2e7,0x3cb48b91,0x3cb508bc,0x3cb898df,0x3cbf0c72,0x3cbd1037,0x3cc08dbf,0x3cb03ac7,0x3c9ce656,0x3cb7b571,0x3caaf004,0x3cf0c127,0x3bd74e36, -0x3b98fe67,0x3b981165,0x3b85f52e,0x3b71c8df,0x3b5c4ae1,0x3b86a816,0x3b8a798b,0x3b694462,0x3b89df2e,0x3b8244b8,0x3b214ac0,0x3b37ac98,0x3b3f5424,0x3b467727,0x3b7363f7,0x3b8914b0,0x3b89d476,0x3b935c38,0x3b97d32a,0x3ba22246,0x3b9d61ac,0x3b93b03e,0x3b8126f1,0x3b8936e0,0x3b831787, -0x3b5953e0,0x3b64aeca,0x3b7741d2,0x3b90360b,0x3b76a3b9,0x3b60781c,0x3b84df11,0x3b691dc3,0x3b882741,0x3bb03027,0x3b86e211,0x3b66a7d2,0x3b5ec221,0x3b82a9f4,0x3b88f8fe,0x3b65437a,0x3bdf6f0c,0x3be46c6b,0x3b6adfe0,0x3bc5e8aa,0x3b93e818,0xb8a6fad0,0xba45e4a9,0xb881b82d,0x3b00358e, -0x3b8c1a47,0x3bc0abd4,0x3bbfb64e,0x3bd118c0,0x3be8c83e,0x3c07d926,0x3c07da08,0x3c075b46,0x3bd27607,0x3bba17ff,0x3b9a2dac,0x3b8727df,0x3b95ebb2,0x3bad96a0,0x3bf353b4,0x3bb097a0,0x3b9642c0,0x3bc856e9,0x3b66bb10,0x3ba93a35,0x3c3f7a3e,0x3be51d10,0x3bb82d99,0x3bc031b0,0x3b84bddd, -0x3b426393,0x3ae1bbbe,0x3bc007a4,0x3beba8ae,0x3ab92b95,0x3beae4cb,0x3b893055,0xbb8b6d4e,0xbb93fa13,0xbb9342f4,0xbacbdac6,0x3b35be6f,0x3bb88994,0x3bcf1abb,0x3bf40351,0x3c0fb4c7,0x3c2a60d7,0x3c30d0b3,0x3c2c9aa4,0x3bf31120,0x3be226d7,0x3bb1dfbe,0x3b728333,0x3b7c30b4,0x3ba86094, -0x3c1a5c87,0x3ba82e05,0x3b91b7c4,0x3be87f61,0x3b4bc7a3,0x3ba3341b,0x3c7ef945,0x3c014989,0x3b59254e,0xb832db61,0x3b154bf7,0x3b5e491a,0x39ccc5ec,0x3c10fa91,0x3c24d4a0,0xba6f0773,0x3c175fc4,0x3b845db2,0xbc2a6d41,0xbc4334f5,0xbc36ca98,0xbbac1106,0x3b20bc35,0x3bdcead9,0x3bf1a939, -0x3c16a637,0x3c3c65ba,0x3c5fbe39,0x3c7fc814,0x3c7a43de,0x3c32e11d,0x3c11e4b7,0x3bd477c1,0x3b60f837,0x3afde0ac,0x3b967667,0x3c56cd20,0x3baeb753,0x3b8e91f0,0x3c127f3d,0x3a8a1353,0x3b8d43f3,0x3cc7eddb,0x3c2fa0af,0x3be75d87,0x3bd049e3,0x3bad9ea9,0xb867b0f5,0xbb0b8b7d,0x3ba89898, -0x3be23a6e,0xba3703c3,0x3c132985,0x3b9018a2,0xbc4e00b0,0xbc6b1b24,0xbc75d4b5,0xbc0e1e77,0x37d68cd1,0x3bc512c4,0x3bf69e5a,0x3c19ae29,0x3c49b34a,0x3c800cea,0x3c850a37,0x3c8a8a5d,0x3c61fcac,0x3c38ff66,0x3c08993a,0x3b9acd71,0xb9ddf526,0x3b1bf2c4,0x3c4ccc47,0x3bc2db77,0x3b98428b, -0x3c152e16,0x38c5d194,0x3b68d586,0x3cd3460d,0x3c0f135f,0xbc27c84b,0xbbba4819,0x3b536de2,0x3c6439aa,0x3d07aa93,0x3c8fa761,0x3c59d0f5,0x3c293824,0x3bf2e111,0x3ba162ec,0xbb929862,0x3baefb0b,0x3be34558,0x3b9f0b5c,0x3b4b2b12,0x3a9f0a9b,0x3aef4e45,0x3ba6b96e,0x3c2bb6c4,0x3c692ed5, -0x3ca13d3a,0x3ca257a1,0x3c4ab43f,0x3c3c9f31,0x3c09973f,0x3b4a7970,0x3bd49c77,0x3b85428d,0xbb1e0a63,0xb9429854,0x3bdaf4c7,0x3c725c04,0x3c8ce3e1,0x3c1095f9,0xbc162573,0xbc25f52f,0xbb4ccc17,0x3d2a9f2f,0x3a9c5204,0xbc55f899,0xbc1af5ba,0xbcc077a1,0xbc97b493,0x3c4ec6a7,0x3ba2476b, -0x3bc289fd,0x3c0640e3,0x3bbecf78,0x3a343d4b,0xbafcf39c,0xbb9cc365,0xbb747412,0xbadfad3f,0x3b214e26,0x3b9de7bc,0x3c1d94ea,0x3baaf090,0x3bab661d,0x3c023008,0x3bd3c4f1,0x3bc29d19,0x3b90584b,0xba456523,0xba8f60cd,0x3871ce87,0x3b3e812b,0x3b06ebcb,0xbb1b402d,0x3a173d6f,0xba10c44f, -0xba53d589,0xbc337ba4,0x3b918a66,0x3c86a5dd,0xba2f0595,0xbb7b544e,0xbbc6480c,0xbbd76fca,0x39fa1440,0x3c24cd9c,0x3bac197e,0x3b569e3f,0x3b8bbcf2,0xba0cc8f5,0xbb32a882,0x3b592900,0xba4d5f8b,0xba996272,0x3a75ce9e,0x3b9180a4,0x3c043c93,0x3c7ae5ab,0x3b9084e8,0x3b274981,0x3c18e947, -0x3bd1d508,0x3b820548,0x3b22644c,0x3b30ca70,0x38245f53,0x3769272b,0xbaa55095,0xbb25198e,0xbb80ffbc,0xbc0ce3ed,0xbc3381dc,0xbc04f341,0xbaccb5b3,0xbc8236ab,0xbc379275,0xb77f1c92,0x39b3faa0,0xbbb8776f,0x3bed1ef5,0x3c206851,0xbb11af86,0x3b3f7b71,0xba80bdb9,0xbb0b1fe2,0xbc02dfcf, -0xbc013b6a,0xb9135551,0xbaf8c124,0xba8d6fd0,0x39cb7861,0x3bae59d0,0x3c087e51,0x3c74c9b6,0x3bbba545,0x3ae3ef8c,0x3bcf289e,0x3ba3ce4f,0x3b7997d6,0x3aef7b33,0x3af8c083,0x37a4aa3e,0xb9fad8f6,0xbb99775a,0xbc0e2ffb,0xbbc12e5c,0xbc33c4cb,0xbc863ff8,0xbcd34997,0xbc92976b,0xbcfb1e30, -0x3abd356a,0x3a3608a2,0xbac8e250,0xbcb49765,0xbcccab68,0xbcce9add,0xbc679355,0xbc0d7a15,0xbbc7c840,0xbafd1386,0xbc047448,0xbc116703,0xbb6d0ca9,0xbb598a28,0xba855a96,0xbb683158,0x3b0cc651,0x3b8bedde,0x3bc20f83,0x3b447680,0x3b1a618c,0x3a676251,0x3a74bfa0,0x3b23b5f8,0x3ba048d7, -0x3921fc04,0x399d5f13,0x3a66d8a8,0x3a3e2403,0xbb586886,0xbb43554e,0xbb8c2bfc,0xbc3d5a71,0xbcbc4cc2,0xbd0453fc,0xbccefc50,0xbd82ebaf,0xbd8c8fde,0xbd7f45a1,0xbcad3d84,0xbc409873,0xbab5045d,0xbb8df621,0xbb4a9efb,0xbb5a55e7,0xbba302e2,0xbc0ae6ab,0xbc3bda79,0xbc01f1e3,0xbc05e1d7, -0xbc003eac,0xbbc43de7,0x3b8a643f,0x3bbdd26a,0x3bbc066a,0xbac46653,0xbb159d93,0x3c03aee4,0x3b320d1d,0x3a50c566,0xba796fcc,0x3b6f94bd,0x3b85c58c,0xbb1352c5,0xbc1834ac,0xbc25993a,0xbc4141c4,0xbc64295d,0xbb43d396,0x3a9cbed1,0xbc0ded54,0x3d1920ab,0x3cebd8cd,0x3c56c99d,0xbb2ce46b, -0xbcc87f26,0xbd01eb1f,0xbd01ad60,0xbcd17752,0xbc8d1212,0xbc362d53,0xbc4d9d76,0xbbca8b29,0xbba28846,0xbba270bc,0xbb9c7830,0xbb6db9d7,0xbbcb5751,0xbb9e0e4e,0xbb6832f4,0xba2b070b,0xbb8e1005,0xbb3e7199,0xba3dbcb3,0x3b146a7c,0x3bd36a38,0x3c00e962,0x3c0f8b03,0x3c3e5013,0x3c53bb98, -0x3cb4dd04,0x3cc94fc3,0x3cdf4bd7,0x3cd751e9,0x3cca8c19,0x3d0aca17,0x3cedef78,0x3d118ddd,0x3cfb6a43,0x3c92e6dd,0x3c123f5d,0xbb233594,0xbc42dac3,0xbcab8957,0xbcdcf65c,0xbccc7895,0xbcbf5c40,0xbcd5e0bd,0xbca73853,0xbc974fd4,0xbc78599b,0xbc7b8efb,0xbc87c3cc,0xbc82f624,0xbc63c556, -0xbc32d541,0xbc038b6d,0xbb9841fa,0xbaff96b2,0x3aebfd89,0x3bb932f5,0x3c034b93,0x3c24e3d2,0x3c5f4a9c,0x3c88b5ab,0x3c9bf933,0x3cc08c74,0x3cdb553a,0x3cfd9e05,0x3cf4a6e2,0x3d086005,0x3d15bdc0,0x3d1a01ba,0x3cbf2c62,0x3cb5a20e,0x3c8fd903,0x3c654ca5,0x3c3d9e00,0x3b782f9a,0xbb8ee58b, -0xbc7376fe,0xbc8b76b4,0xbc9fa261,0xbccae74c,0xbca524e3,0xbcab6430,0xbc97ed57,0xbc901253,0xbc90090e,0xbc806309,0xbc48981b,0xbc4826d1,0xbbf1f0b0,0xbb3d187a,0x3a269489,0x3b7fa6ca,0x3bb904db,0x3c014dde,0x3c329ec5,0x3c5c309c,0x3c724103,0x3ca51986,0x3ca096a1,0x3cc105d3,0x3cd03b77, -0x3cd72aad,0x3cd5d9de,0x3cd7b1c9,0x3cb96d7e,0x3ca67802,0x3c449256,0x3c44e85f,0x3c1e1ee0,0x3bd8c72c,0x3c11d115,0x3c202cd6,0x3c4587f3,0x3c4406b6,0x3c297dbe,0x3c24d10a,0x3be28452,0x3b9509b7,0x3a4a9900,0x3b116aa8,0x3b6fceac,0x3b60cf18,0x3b73c18f,0x3b9b0e18,0x3b70e397,0x3b86f9a4, -0x3b6a8614,0x3b863592,0x3baa0c84,0x3bd77e17,0x3bc6d99b,0x3c1affb3,0x3c245567,0x3c5c51f4,0x3c82c7ec,0x3c7a88a6,0x3cb2ec10,0x3c99a1c2,0x3c8fb454,0x3ca5b2a7,0x3c8325f9,0x3c416cd7,0x3c0c2ced,0x3c19c658,0x3c139525,0x3c0afdce,0x3c014124,0x3bc4079e,0x3b90ece1,0x3b484cbf,0x3b2a41bc, -0x3b04734b,0x3adea84e,0x3afd2c8b,0x3aefaa2f,0x3b27946f,0x3b2e9fa9,0x3b4ce1c6,0x3b77fefa,0x3b8bdfb2,0x3b9abcac,0x3c061551,0x3c3b07b1,0x3c75f284,0x3c17fd60,0x3c434421,0x3c83d586,0x3c8e3e7e,0x3c8d1601,0x3c8fd541,0x3c98bebd,0x3c98e0f9,0x3c9a8bee,0x3c71438e,0x3c3fd8d4,0x3c9562e5, -0x3c76d2ea,0x3c62fd19,0x3be74b13,0x3ba58d28,0x3ba1fbb2,0x3b925990,0x3b8526d0,0x3b756732,0x3b900e1f,0x3b91b52b,0x3b799468,0x3b924aac,0x3b8bc5ff,0x3b39539f,0x3b4cec63,0x3b553a8f,0x3b4eb081,0x3b81ef61,0x3b9190f1,0x3b925af6,0x3b9cba99,0x3ba2b5aa,0x3bb0c7b4,0x3ba85be5,0x3b9e4959, -0x3b8cfbf8,0x3b8f9554,0x3b8bcf77,0x3b7f3edc,0x3b846632,0x3b8bcda1,0x3b996873,0x3b8b87b8,0x3b81c0f6,0x3b91cbfc,0x3b811363,0x3b8fba6e,0x3bbe9198,0x3b999e56,0x3bba5697,0x3ba2a040,0x3baffd2f,0x3bab4136,0x3b89cf31,0x3be39439,0x3be5f8d1,0x3b8ce66d,0x3bcf9bd9,0x3ba5ae62,0x3a93c005, -0x397adbcc,0x39b6d0dc,0x3aba82a9,0x3b864983,0x3bc51fd8,0x3bc678b7,0x3bdc923c,0x3bf5f1c9,0x3c137ad3,0x3c0b06cd,0x3c051326,0x3bc9ea69,0x3bb99a6e,0x3b9edcb3,0x3b97d4d8,0x3bae035d,0x3bc1ef6a,0x3be72203,0x3bc20972,0x3ba61938,0x3bccecb1,0x3b821c4a,0x3bb2608a,0x3c3f1dde,0x3c02e4bc, -0x3c05e4ca,0x3bfdd6bd,0x3bbcca30,0x3b8f6746,0x3b2cd105,0x3bcdac88,0x3be182e9,0x3af7026e,0x3be88c4f,0x3b9a0583,0xbb401c48,0xbb51448e,0xbb714511,0xbb12537e,0x3b3774b3,0x3bb87ed5,0x3bd42651,0x3c004c3c,0x3c17c606,0x3c41e12c,0x3c33356b,0x3c2975c0,0x3be31ef0,0x3bd2eaad,0x3bb2b763, -0x3b86dca9,0x3b9e7e02,0x3bc243d9,0x3c0c94b9,0x3bc46287,0x3bab037a,0x3be1c71e,0x3b5b5834,0x3baef340,0x3c7d0da6,0x3c186046,0x3c04610e,0x3b961d96,0x3bc39943,0x3bc92119,0x3ad4f11a,0x3c1373c7,0x3c145141,0x3a951555,0x3c0fa351,0x3b929a04,0xbbd2aa48,0xbc1d7bd8,0xbc26bc22,0xbbfa80a9, -0x3acfa98d,0x3bd638e0,0x3bedcc9f,0x3c1db4b6,0x3c454f5d,0x3c7b371d,0x3c7c0c2e,0x3c66a315,0x3c0f13a7,0x3c055a43,0x3bd2ca61,0x3b6d4899,0x3b46a256,0x3baf1bd2,0x3c431440,0x3bb957e0,0x3ba063db,0x3c0d9bb0,0x3ac74a75,0x3b9fc298,0x3cc2e481,0x3c5b86cd,0x3c4b7bae,0x3c373ff4,0x3c0fb2f7, -0x3b1a8127,0xba87baf1,0x3bb03ba9,0x3bd8ffa8,0xba2aa6e1,0x3c051126,0x3ba10301,0xbc222b9d,0xbc3a6895,0xbc5cc16c,0xbc19bf60,0x3928a997,0x3bc05604,0x3bf92641,0x3c2263ae,0x3c5b840d,0x3c95fae4,0x3c88d6e9,0x3c898d69,0x3c3a2473,0x3c25ea87,0x3c0c63d5,0x3ba9a13e,0x3a51ac4a,0x3b696472, -0x3c5e1155,0x3bd7a67f,0x3baf807f,0x3c1c992e,0x3945d322,0x3b89345b,0x3cdcff5d,0x3c55a3c9,0xbc2ae16b,0xbba938df,0x3b6182fc,0x3c968a97,0x3d2b6600,0x3c99e5f2,0x3c3635e8,0x3b84c450,0x3c485555,0x3c2828d6,0xbc23df2d,0x3bfb692c,0x3c0d72c8,0x3a5f33bf,0x3ac39517,0x3a72cbd8,0x3b340bff, -0x3b3ea8f2,0x3bd7c36b,0x3c81c019,0x3c85ba00,0x3c7827af,0x3c440f67,0x3c468af0,0x3c245075,0x3b7a8797,0x3bd8941f,0x3b7292cc,0xbb690a2d,0x39a35f4b,0x3c14b7a2,0x3c8be142,0x3c97533e,0x3c068e57,0xbc57fbb1,0xbc4c33c2,0x3ac05680,0x3d1aa78e,0xba35be00,0xbc4f08b7,0xbc204dcc,0xbc839b80, -0xbc277919,0x3c6f2d09,0x3bb27ebd,0x3b892882,0x3c3b12ee,0x3c10f3fb,0x3b9bc6d3,0x3b90699a,0xb65c9f89,0xba0bfd01,0xba259e7a,0x3b7db73c,0x3bbadba2,0x3c1b639a,0x3beeff12,0x3bfc7d1e,0x3c144a94,0x3be24d46,0x3ba6f774,0x3ba9608f,0x39094d5e,0x3757b682,0x3b2abf73,0x3b9b7651,0x3b4dc11a, -0xb9d16ada,0xbaa226bf,0xbb4c63ff,0x3b1acab1,0xbc08b935,0x3b1a8bbe,0x3c38d4fd,0xbb9aac1d,0xbbf6e0ed,0xbc153dd6,0xbbbdb51d,0x3a7017f8,0x3c67a36b,0x3c0edab0,0x3bdd9708,0x3c02d77b,0x39fa1b02,0xbb092347,0x3b469503,0x3ac27fd8,0x3b15c0a7,0x3b003301,0x3bd677a0,0x3c07090f,0x3c441a54, -0x3bc0d902,0x3b764446,0x3c0b77a5,0x3c00c9ff,0x3b825bef,0x3b245b73,0x3b714368,0x3af5bfa8,0x39891e3a,0xba0be263,0xbaf19893,0xbb30a0ee,0xbc2ef191,0xbc35ee62,0xbb8380f5,0xbb889a3e,0xbc2cd6e9,0xbb90a381,0xb9587e4e,0xba9266f6,0xb95c2bc2,0x3b82c1c7,0x3b94854a,0x3b2294cd,0x3aef5693, -0xbab27b36,0x3aa1ec85,0xbc000c5c,0xbbeba159,0x3aa5eca3,0x3b3cce25,0x3b957164,0x3b77f372,0x3c0e95ef,0x3c171ec7,0x3c1abbbb,0x3bd17965,0x3b813331,0x3bdcf7d6,0x3bd2f995,0x3b9ab37a,0x3aed4a6f,0x3b3b718d,0x3a6693aa,0xba048ce1,0xbb64defe,0xbbd9e728,0xbaee29a0,0xbc317401,0xbc5e8a76, -0xbc9df439,0xbc52db66,0xbc8e9fe1,0x3b0220a2,0xba6fde4a,0xbb800756,0xbc64d330,0xbc97c0e6,0xbca1b6b1,0xbc39baa5,0xbc0d1306,0xbbde0573,0x3ab20665,0xbbbd7efc,0xbbb273cd,0x3aadc843,0x3b3b1106,0x3b769d5f,0x3af1bdb8,0x3bb04757,0x3bd61578,0x3b799ad2,0x3bcc1333,0x3bebe882,0x3b8b945e, -0x3b8e0039,0x3b84c6b7,0x3bb54994,0x3a0814e6,0x39edd39f,0x3b2be4ea,0x3b36dddc,0xbab39cb0,0x3a17e4c3,0xbb8734b3,0xbc47d898,0xbc8f052c,0xbccc394d,0xbd23f009,0xbd8c2fc8,0xbd50db39,0xbd3d6614,0xbc8f2784,0xbc891f6a,0xbc26e74a,0xbbdb7c42,0xbb46fd44,0xba986def,0xbc12ee93,0xba8d96c3, -0xbbaaa461,0xbbf34f3e,0xbbef2c5c,0xbbba1574,0xbb4f9605,0x3ba4aa19,0x3beb0ed6,0x3bdaa4e3,0x3a69f19b,0xb9d63f05,0x3bd90292,0x3af809c5,0x3addb2b3,0x3b03c42c,0x3ba2192d,0x3b53609a,0xbb8bf5ad,0xbc503219,0xbc572643,0xbc5fb160,0xbcbd40a8,0xbc827264,0xbc372157,0xbca95936,0x3ca407ee, -0x3bfa052d,0xbc154d46,0xbc959e91,0xbcea98bf,0xbcd407a4,0xbcaa4644,0xbc630558,0xbc1c3476,0xbbd7397e,0xbc3c08ed,0xbbd30f25,0xbba854ff,0xbb8693a7,0xbb60e28f,0xba8b19c5,0xbb01a57e,0xba26b1a9,0xb94c2429,0xba427f73,0xba534014,0x3a873b3c,0x3b83de74,0x3b980176,0x3bc8b221,0x3b9b1dc6, -0x3bbf6e80,0x3c1dbdab,0x3c35f239,0x3c992bde,0x3ca18bb2,0x3cb03dad,0x3ca46f9b,0x3c8a5e4e,0x3ca2a01c,0x3c70edb8,0x3cd836f2,0x3ca7fb32,0x3b917b03,0xbb2aa690,0xbc5df5e7,0xbc9015f5,0xbcc2f2f9,0xbce364f2,0xbcc6ae66,0xbcb783b1,0xbcc1087e,0xbca69cf7,0xbc9fb6e3,0xbc8d8d9f,0xbc8bb054, -0xbc8a0c21,0xbc8135a9,0xbc571dba,0xbc1c28d7,0xbc001a4d,0xbbcf88ee,0xbb194aa5,0x3b132643,0x3bc01efc,0x3c0f797e,0x3c2e6085,0x3c63d656,0x3c80c782,0x3c89b334,0x3ca2cee3,0x3cbaad9a,0x3cdf1294,0x3cd3d77b,0x3ced6ad3,0x3d03fdcd,0x3cfa7809,0x3cb2f62c,0x3c954040,0x3c4af49c,0x3bcfd2ca, -0x3a096ca4,0xbbf2c7bd,0xbc8000c9,0xbcced063,0xbccc8c2e,0xbcc4b527,0xbcd426e7,0xbcb233e1,0xbcb407ff,0xbca1a8a8,0xbc96f750,0xbc980f9b,0xbc8afae0,0xbc5f53b6,0xbc58f93a,0xbc035ae7,0xbb9f118a,0xba591653,0x3ac42466,0x3b8a9c27,0x3beeca99,0x3c2c49e3,0x3c44ca30,0x3c4b9075,0x3c886183, -0x3c87cf97,0x3ca52543,0x3cae0aa6,0x3cba9c03,0x3cd007a2,0x3cd38e61,0x3ca94d1d,0x3c18fec8,0x3b0300de,0x3af19ad6,0x3984d18b,0xba993ad0,0x3a4b0933,0x3adfa265,0x3b17e9e2,0x3b2390f5,0x386c8cc9,0xba3fd6fc,0xbb518496,0xbb9fb35d,0xbc0356b6,0xbba5c71b,0xbb0a1b4a,0xba55ccee,0x3a9dc2e0, -0x3b602d13,0x3b507161,0x3b56d981,0x3aab6532,0x3a9277aa,0x3a1d8394,0xb8abeccf,0xbac4d0cc,0x3aaf46b4,0x3b29dec8,0x3bad47cb,0x3bf25529,0x3bcd5498,0x3c55177b,0x3c11d12c,0x3bcfcc60,0x3c1242ed,0x3b925425,0x3b85a12c,0x3ad92287,0x3b02212a,0x3a890dc8,0xb93378ea,0xbac5a351,0xbb6da14f, -0xbbb3249c,0xbbc55894,0xbbbcf88a,0xbbb9d6dc,0xbbb94ed8,0xbbab5e87,0xbbac6bc8,0xbb930b6a,0xbb939026,0xbb8f19f0,0xbb76ab21,0xbb4b81ca,0xbb1a3406,0x39cea4ac,0x3b3ef4f3,0x3bc03bca,0x3abc747e,0x3b7e3f5e,0x3be72e30,0x3c0476c3,0x3c041201,0x3c0a7013,0x3c1d52d4,0x3c20b9a8,0x3c1fbb3d, -0x3bc4e23a,0x3b84fd1b,0x3c2662c4,0x3bed2095,0xba2a1da3,0x3be13b91,0x3b98b604,0x3b900513,0x3b901767,0x3b8703d2,0x3b7f2c03,0x3b8c13b8,0x3b8bccde,0x3b77394e,0x3b8a641b,0x3b846f60,0x3b3970db,0x3b4b5326,0x3b557f7e,0x3b4e4283,0x3b7c79dc,0x3b8c2939,0x3b8d247d,0x3b9781aa,0x3b9e8028, -0x3bac19ac,0x3ba6edce,0x3ba117cb,0x3b967e82,0x3b8b0a67,0x3b8b43ab,0x3b8be6b7,0x3b934163,0x3b98302e,0x3b9bf654,0x3b9845e5,0x3b8fc95e,0x3b960428,0x3b8429f0,0x3b8960d4,0x3bc1034e,0x3ba06be1,0x3bef7880,0x3bb68d97,0x3bc4b5e4,0x3bbe765e,0x3ba1073d,0x3bc8261f,0x3bc8e94a,0x3b903429, -0x3bb65e83,0x3b956a2f,0x3ac8e904,0x3a4dff80,0x3a3a7a91,0x3aba4da6,0x3b75e38c,0x3bb78a23,0x3bba0e4d,0x3bd30c11,0x3bece5f4,0x3c0faef7,0x3c0716d8,0x3bf83b2b,0x3bc5cb05,0x3baf4066,0x3b952106,0x3b9977b2,0x3bbbfecf,0x3bd02b40,0x3bd6c421,0x3bcfd09f,0x3babdf26,0x3bbed1ce,0x3b84891d, -0x3ba75c20,0x3c2a5b5f,0x3c007d05,0x3c0ef4a6,0x3bdf3ffd,0x3bd90834,0x3bb53878,0x3b8d89bc,0x3bc0507e,0x3bbaf8e7,0x3b22aecb,0x3bc34230,0x3b81e9ce,0xbb24e1dc,0xbb0e5238,0xbb2ea8c4,0xbaf5e46d,0x3b3091a7,0x3ba9a510,0x3bc60935,0x3bf897c8,0x3c11f1bd,0x3c47e03a,0x3c314cc6,0x3c1d5ac6, -0x3be2c8b0,0x3bbb6866,0x3ba5888c,0x3b8013f3,0x3bb5bc09,0x3bd4908a,0x3bf83e28,0x3bdcf303,0x3bc06da8,0x3bc1b01e,0x3b4f310c,0x3ba014c8,0x3c5e814f,0x3c104daf,0x3c301143,0x3be02daa,0x3bf510bc,0x3c07446f,0x3b9385cd,0x3be9a456,0x3bd89d54,0x3b0d5d60,0x3bdc2fe2,0x3b41be82,0xbba82767, -0xbbf802b6,0xbc0a630e,0xbbf3faff,0x3a81bf06,0x3bba55b5,0x3bd3e9ee,0x3c145fe5,0x3c3b2493,0x3c83d37c,0x3c6c8c68,0x3c49beb3,0x3c008794,0x3be5108e,0x3bc05aba,0x3b4b95d1,0x3b8a9dd4,0x3bc88e04,0x3c2bf333,0x3bd8e0e4,0x3bb873dc,0x3bf26ccb,0x3ac1a535,0x3b9173ea,0x3ca160b5,0x3c531c17, -0x3c5dd2a8,0x3c283c9f,0x3c1852b9,0x3ba16b5b,0x3b38d6ff,0x3ba5886c,0x3bb4d1dd,0x3a0fe2bf,0x3bcfde0d,0x3b6e1a50,0xbc1bda46,0xbc1814c6,0xbc33eafa,0xbc0b86b1,0x398cd04e,0x3babdd94,0x3be529d8,0x3c1d71a5,0x3c5a1432,0x3ca27efa,0x3c8d391f,0x3c7ce6f5,0x3c2440b5,0x3c1093c2,0x3c092542, -0x3b9ad7e9,0x3af9f3eb,0x3b954d28,0x3c577a34,0x3bfb1ca5,0x3bc9c647,0x3c08da3f,0xb9196f33,0x3b839a46,0x3cbec921,0x3c62934c,0xbc0d2518,0xbb1c5c76,0x3bfac349,0x3cb10c3f,0x3d32a328,0x3c81f9ca,0x3bce3b7d,0x3a89b4a3,0x3c171064,0x3c002b24,0xbc433cae,0x3c5ed24e,0x3c7afc3a,0x3ab02af8, -0x3b06e98a,0x3a8fa735,0x3b956b1f,0x3b2b215c,0x3b6eb269,0x3c3ec952,0x3c32284a,0x3c2405fe,0x3c31acfe,0x3c3e71f0,0x3c30c28b,0x3b94fae1,0x3bc8fcd1,0x3b50975b,0xbb8ef3ad,0x3af17b03,0x3c42df06,0x3c9b9b66,0x3c8f6b98,0x3bb304d7,0xbc8b7404,0xbc5ebdbb,0x3be73b36,0x3cb95b62,0xbbe41e0a, -0xbc62b9de,0xbc43fbfb,0xbc2f03ad,0xbbb010c2,0x3bf5183f,0x3b99caa8,0x3b8d5349,0x3b8d83ad,0x3c138017,0x3bfd389e,0x3b804f5c,0x3b5945d1,0x3b38abeb,0x3a80d2e3,0x3bc9f133,0x3beac525,0x3c18b663,0x3c267ea4,0x3c2312d8,0x3c243cab,0x3be61a48,0x3b954c14,0x3baa0fee,0x3a94bece,0x3ab6edb7, -0x3b9b006a,0x3ba77707,0x3b4d1151,0xba37e088,0xbb5a38c6,0xbb20e9bd,0x3b9e66f5,0xba2bec68,0x3b219e15,0x3b5eab36,0xbc23f720,0xbc3d328d,0xbc4b73fb,0xbbb231ea,0x3b05a219,0x3c8b1cd7,0x3c3f1550,0x3c0d929f,0x3b922764,0x3b226095,0x3a8dfbc0,0x3b0f602b,0x3aae29bf,0x3b5183ab,0x3b2b7f73, -0x3c10a6b7,0x3c17db12,0x3bef8eb2,0x3bd64f05,0x3babc65d,0x3bfa3813,0x3c0b2fe2,0x3b7db7a4,0x3b345326,0x3b85dae0,0x3b40f6a8,0x3ab92f9f,0xb8655cc3,0xbaa376d0,0xbaf99858,0xbc2d83f3,0xbc05d994,0xb96a2939,0xbb64d5be,0xbbad3ee2,0xbb3771a0,0xba7cad86,0xba92bcec,0x3a31ff99,0x3b5bb3b5, -0x3b5e4e6f,0x3b701dbc,0x3b7a0272,0x3ae696b3,0x3b09e48f,0xbb79a1aa,0xbb7ec3ae,0x3a812ee7,0x3bbdbea4,0x3c01d671,0x3bc3cdbf,0x3c3e58d2,0x3c318a9e,0x3bcdcf4a,0x3bd1e717,0x3bb03962,0x3bdc2b35,0x3bf3b841,0x3b9b5296,0x3b034520,0x3b52213c,0x3ae631ef,0xb78a87ab,0xbb07e45b,0xbb8c7169, -0x3b459296,0xbc217e13,0xbc343db3,0xbc410ce3,0xbbf7a183,0xbc2d5120,0xbc06d757,0xbb6466a5,0xbae29282,0xbc166c6b,0xbc0b29a4,0xbc3f4b4b,0xbc5e05a9,0xbc1f9966,0xbc05b063,0xb9bbb584,0x39848cec,0x3b00d91f,0x3ae05316,0x3bd3e593,0x3bd4a185,0x3b9c6012,0x3bfaaf56,0x3c060b69,0x3b9297cc, -0x3c07cac4,0x3c227237,0x3bf75d9a,0x3be98eb7,0x3bb59598,0x3bbcbbac,0x3aacf73b,0x3a8c0e4e,0x3b6fc757,0x3b75cae2,0x39a2d082,0x3b5ccc4d,0xbba656ab,0xbc4b0622,0xbc4c0231,0xbc862737,0xbd1fd88d,0xbd460ff4,0xbccd108b,0xbce14fad,0xbca47695,0xbcaeff6e,0xbc8eb7bc,0xbc5be93d,0xbabbc272, -0x3b30bde0,0xbbfbc908,0xb9fcc131,0xbb7d3818,0xbbd157c3,0xbb804b6e,0xbad9ead4,0x3ad6cede,0x3bd71253,0x3bf66580,0x3bc21150,0x3b706c94,0x3b1de053,0x3bbc664e,0x3b2be624,0x3b476fca,0x3b8037fe,0x3b91cf7f,0x3a425625,0xbbc20e2a,0xbc628ee5,0xbc5e5bbf,0xbc615024,0xbcc7a12b,0xbcb68c0d, -0xbc974198,0xbcd5340a,0x38df77aa,0xbc46714b,0xbcca3416,0xbcccde54,0xbcb4404f,0xbc7fae72,0xbc058dd8,0x391e89a4,0xbb9b5c2b,0xbbc61ea5,0xbc310184,0xbbc5956b,0xbb9f0ff9,0xbbbb058d,0xbb3bd512,0xba48a6ca,0x3b6b297d,0x3b5d3952,0x3b48d113,0xb999dd20,0x39498f2a,0x3b0b5439,0x3be17cde, -0x3bbecbb6,0x3bcd4819,0x3bbf7b48,0x3bb2ada8,0x3bffd810,0x3be8b81d,0x3c3c2a8b,0x3c3eceb0,0x3c50c539,0x3c4ffc48,0x3c09e33e,0x3b827863,0x38e4b1da,0x3c554ad9,0x3bdc9d79,0xbbfea472,0xbc4299dc,0xbc9731e2,0xbc9cbe78,0xbcb2cd23,0xbcb05f4f,0xbc9f9694,0xbc92fbb8,0xbc8e1bcd,0xbc885711, -0xbc89ec50,0xbc8eb3f5,0xbc7d87d8,0xbc69699d,0xbc3c4f5f,0xbc0b0be6,0xbba9a549,0xbb8cea93,0xbb94ebd8,0xbab18569,0x3b2e3f46,0x3ba7f6ed,0x3c02c1e4,0x3c2286d8,0x3c54cdeb,0x3c64cd82,0x3c672212,0x3c738612,0x3c894396,0x3cae673d,0x3c9cdb6c,0x3cabd7c3,0x3cb3c41b,0x3c97e6ce,0x3c877ef8, -0x3c336adb,0x3b973968,0xbaf8d703,0xbc283963,0xbc80870e,0xbcb43fc1,0xbcf06738,0xbcd52ddb,0xbcb5fa1d,0xbcaa51aa,0xbc9cf5b5,0xbc9f9080,0xbc9792d6,0xbc8a86fd,0xbc857dab,0xbc749a6e,0xbc44bc49,0xbc2d490e,0xbbb23739,0xbb79aa4e,0xba9258c8,0x37a58944,0x3b37596f,0x3bc07bcf,0x3c099da0, -0x3c23026f,0x3c29f6ac,0x3c6ef253,0x3c67013b,0x3c87e3b1,0x3c837585,0x3c89382a,0x3caa6f93,0x3ca743cd,0x3c752c0a,0x3a464abc,0xbb7d7260,0xbb8a646e,0xbb9e4af3,0xbb90a2c0,0xbb84cf41,0xbb6d52a2,0xbb946373,0xbbaeb10c,0xbc0c1a04,0xbc215744,0xbc35aab7,0xbc3f31bb,0xbc5d09b0,0xbc2ef58c, -0xbc036cbd,0xbbdcf980,0xbb9451bc,0xbb42092e,0xbb42e15d,0xba0f7a85,0xbb0175eb,0xbabe151f,0xbb097c3c,0xbb2cd48d,0xbb5e18a9,0xbb0a34c2,0xbac08468,0xba398c38,0x3a1824f3,0xba12b9c1,0x3b9b8a54,0x3ae0e68b,0xbaf021a5,0x3958b6e9,0xbb40920c,0xbac2e972,0xbb39809d,0xbb4d7f40,0xbb939c8c, -0xbbc711e2,0xbbfa8ce1,0xbc19ee39,0xbc3513f4,0xbc2e3a51,0xbc1fe1d1,0xbc17ed41,0xbc16d520,0xbc13a99d,0xbc15ba2d,0xbc0b6436,0xbc0b5fa8,0xbc0afcd0,0xbc024300,0xbbea74d3,0xbbde9cb3,0xbb987de0,0xbb482d54,0xba85ea56,0xbb728e28,0xbaef24cf,0x38c04024,0x3a41e845,0x3a679725,0x3ab4e8f8, -0x3b162643,0x3b164a78,0x3afe8d67,0xb9b1d216,0xba97d638,0x3b373839,0x3a733019,0xbc1b68b1,0x3bd34552,0x3b8d23ae,0x3b83383d,0x3b8b96f4,0x3b858842,0x3b797176,0x3b8280bf,0x3b8009e2,0x3b682377,0x3b79d503,0x3b70e578,0x3b372d65,0x3b4bf5ee,0x3b58a775,0x3b54b0e7,0x3b72833a,0x3b8304ca, -0x3b81fc8e,0x3b8c1145,0x3b923f51,0x3b9bddaf,0x3b9bb63e,0x3b98ce20,0x3b9382c8,0x3b8298c7,0x3b827349,0x3b85a79d,0x3b90721d,0x3b94de80,0x3b92868b,0x3b974b86,0x3b8f1699,0x3b8acfab,0x3b7aa730,0x3b7ac84c,0x3baa7b0c,0x3b96702a,0x3be43361,0x3baf4672,0x3bc8e2fe,0x3bc2b7eb,0x3b9fa132, -0x3bb41fee,0x3bb5dbe4,0x3b90a679,0x3ba0eb6e,0x3b886d31,0x3af542db,0x3aa90163,0x3aa95dfa,0x3b000344,0x3b7335c5,0x3babcb9b,0x3ba75306,0x3bc13610,0x3bd833c3,0x3bfea070,0x3bf5915d,0x3bdf6b95,0x3bc20e3b,0x3b9e61aa,0x3b863448,0x3b8c089e,0x3bc1af3c,0x3bd4e282,0x3bc3d3df,0x3bd229cd, -0x3ba5a4eb,0x3ba437e6,0x3b7d15f1,0x3b99a155,0x3c0ea6c0,0x3bdeeed9,0x3c032a27,0x3bbe64a1,0x3be1b43d,0x3bce951e,0x3b9c9fa7,0x3bafbb29,0x3b9e6520,0x3b2e1969,0x3b983e59,0x3b5a871d,0xbabae397,0xba0d5f4c,0xba6efd74,0xb9ecd9ff,0x3b41f528,0x3b9acc32,0x3ba76ec2,0x3be12151,0x3c006f3d, -0x3c3258cd,0x3c24859b,0x3c0b55a7,0x3beb49af,0x3ba430c6,0x3b924b31,0x3b5fcde4,0x3bc37d13,0x3be6336d,0x3bdc3466,0x3becd028,0x3bcb6c51,0x3b934a5b,0x3b46d163,0x3b8697b5,0x3c29eb78,0x3bf77552,0x3c1c8560,0x3bd4b580,0x3c011020,0x3c15121f,0x3ba26197,0x3bc7c65e,0x3bc47bec,0x3b452009, -0x3bac8acb,0x3b20a6cb,0xbb562d42,0xbba71595,0xbbbecd63,0xbbb2b6c4,0x3ab958ac,0x3ba9c7c4,0x3ba789f5,0x3c048643,0x3c24f5be,0x3c7142a5,0x3c524ac8,0x3c2bb2ad,0x3c03d861,0x3bb944b3,0x3ba35f13,0x3b0957ef,0x3bad3551,0x3be203d0,0x3c14dea5,0x3bf2c709,0x3bc6eab0,0x3bb74db9,0x3ac5c784, -0x3b7e0c7d,0x3c7e8e7e,0x3c27dd59,0x3c4b2f2a,0x3bfef4c9,0x3c143bfc,0x3be17cdf,0x3b8753cd,0x3b993282,0x3b87d922,0x3a68cf20,0x3b8f12d4,0x3b3ebc62,0xbbe336a2,0xbbb8d836,0xbbde1693,0xbbbebc2d,0x3a598107,0x3b890b12,0x3ba9dacf,0x3c0c3c34,0x3c40a0f6,0x3c948b37,0x3c887611,0x3c5d9274, -0x3c22d80a,0x3bfee7c4,0x3c0016c3,0x3b67a966,0x3b3baf61,0x3bb89514,0x3c42e9d3,0x3c11ca02,0x3be01237,0x3bcc8c10,0x397fbedd,0x3b68d027,0x3c8c8cdf,0x3c4e4d17,0xbba39568,0x3b70bdea,0x3c3e341b,0x3cb29d4e,0x3d239d16,0x3c6666d3,0x3bd46ff3,0x3b99c4e5,0x3b8967be,0x3b41daad,0xbc011c35, -0x3c915b5e,0x3ca75169,0x3b871317,0x3ba79068,0x3b607e1b,0x3bc0ed5b,0x3b512aa7,0x3b1da733,0x3bc438d6,0x3bd046fa,0x3bd7b6a9,0x3c1407c1,0x3c2cece3,0x3c30382a,0x3bc80dcb,0x3bab0030,0x3b1ccd42,0xbb9156c4,0x3b8b8a01,0x3c726bba,0x3c99c8e3,0x3c5e37f1,0x3b0486a1,0xbc8fb52f,0xbc47751a, -0x3c529eba,0x3af38e3c,0xbc2c86ca,0xbc448567,0xbc4947a0,0xbc028d3b,0xbbcbf06b,0xbbf65bfd,0x3ac7050e,0x3b89cb4f,0xbb80a17a,0x3c27b8df,0x3c370b07,0x3b62195f,0x3b2dc285,0x3b17d870,0x3afe9837,0x3c04b4b7,0x3c0d9fa2,0x3bf7196c,0x3c3293c8,0x3c29aa45,0x3c283742,0x3bfb9815,0x3ba91cec, -0x3ba914d2,0x3af121be,0x3b3274d3,0x3bdb21ad,0x3bbdbf57,0x3b43338f,0xbb19769b,0xba3d165a,0x3aec3e63,0x3b27e8f0,0x3c1c78e1,0x3b3bc199,0xbbc23d51,0xbc43d865,0xbc4a6167,0xbc4acaca,0xbbb2e9ea,0x3aa9f7db,0x3c639b6a,0x3c5ebda6,0x3c30af26,0x3ac2fc5b,0x3be187c0,0x3b84b5d9,0x3adacc4d, -0x3b30c21f,0x3b9a58f8,0x3b1a7c0d,0x3c22d532,0x3c28be0a,0x3b7c0e91,0x3bb0528a,0x3ba9c67f,0x3bce8720,0x3c08079a,0x3b6e7b08,0x3b6118da,0x3b74c124,0x3b4b6b9a,0x3b2beace,0x399667a8,0xb99e1da5,0xbae5db26,0xbc1604dd,0xbb92bcf3,0x3b4b5483,0xba9c0801,0xbb14da2a,0xbb195051,0xb93800b3, -0xb9cf7c25,0x39e639d9,0x3b7ca046,0x3babd708,0x3b7df328,0x3bda6967,0x3b9cea61,0x39825023,0x3af29bae,0x3a27cd4f,0xbb0417e2,0x3be618e2,0x3c1b305d,0x3bd8da1d,0x3c474014,0x3c32ad16,0x3ba74965,0x3bbd172c,0x3bacfaca,0x3bbc0cb6,0x3bf8a820,0x3b85be96,0x3b2eb1cd,0x3b36d434,0x3b0dcd21, -0x3a6fcb27,0xba3ca8b3,0xbb0869ab,0x3bb9bec3,0xbc1adf78,0xbc09e50a,0xbb75df7c,0xbb738ff3,0xbbdaae87,0xbc5430e2,0xbb5e4ebf,0x3a196c48,0xbb9cc86d,0xba4c4a0b,0xbb9840cd,0xbc66d83d,0xbc283e3c,0xbc2d8568,0xbbd85591,0x39ee2e74,0x3b7047a6,0x39b51079,0x3bdaf31e,0x3bf50a9f,0x3bea1775, -0x3c06c738,0x3c0219e0,0x3b9a932b,0x3c0e18de,0x3c26d93b,0x3c13b32f,0x3c050b3d,0x3bc8a16a,0x3bc4bcf1,0x3af6abed,0x3aaf0937,0x3b635ce3,0x3b6b9b0c,0x3a438053,0x3b5c5349,0xbba644a0,0xbc217e00,0xbc1e9dd2,0xbc074705,0xbceaf503,0xbcb5b3df,0xbc0651dd,0xbc65fd40,0xbc991e0f,0xbca7d95b, -0xbc952e5f,0xbc7a490c,0x3a545a71,0x3bacdf6a,0xbb32339f,0xba1b63b7,0xbb7343a7,0xbb1a1805,0xbb1fb6fc,0xb9a9ab55,0x3b822e8a,0x3c0afd81,0x3c02f61e,0x3b82887e,0x3bbc6eb2,0x3b9c13d3,0x3bbc9a79,0x3b7d918a,0x3b714397,0x3ba1d5e6,0x3b24fb4c,0xbb061597,0xbbd974a2,0xbc50ba7f,0xbc419de9, -0xbc4e2d18,0xbca46418,0xbcb62fc3,0xbcba68b1,0xbcd213d5,0xbc82a3c3,0xbcc38c31,0xbcf1fba1,0xbcc26bb9,0xbc5c18c9,0xbba17fac,0x3aa69d14,0x3bc8d882,0xbbc62269,0xbc1f2b4c,0xbc01d7b1,0xbbadee91,0xbb669454,0xbb54b82a,0xba106aac,0x3ae45057,0x3bbc8ed2,0x3bdb5eed,0x3bc38c58,0x3a5ac762, -0x3a0d332b,0x3af24dc7,0x3bcf4ac3,0x3ba4f526,0x3bbb2a79,0x3bf98cf7,0x3bcedf0b,0x3bd120c6,0x3b050c06,0x3b6316f7,0x3b4921ee,0x3b1c0fdf,0x3bd18d8a,0x3b2adc8d,0xbbea2487,0xbc3c17b4,0xba876d78,0xbbd69805,0xbc7c91d2,0xbc85d27e,0xbc978517,0xbc83f4c5,0xbc834b80,0xbc574f70,0xbc6ffa50, -0xbc65d1f9,0xbc38221e,0xbc540a4d,0xbc56dc87,0xbc61ac55,0xbc32baf1,0xbc130e25,0xbbd775e3,0xbb696027,0xbab7bb69,0xbaa34230,0xbadb9ab2,0xb8b16673,0x3b3d732f,0x3b844a93,0x3bcf2002,0x3c052a40,0x3c39de46,0x3c3d9bb9,0x3c3560b5,0x3c19ff73,0x3c207f23,0x3c52b8e3,0x3c32e393,0x3c3b29e4, -0x3c1fceee,0x3ba4e4a8,0x3c0c8b41,0x3b1a7bfd,0xbb312458,0xbbfeeb66,0xbc7b6c9c,0xbc94f819,0xbcb2ca5b,0xbcd3acb7,0xbcafde4b,0xbc91919f,0xbc85d50a,0xbc8195a7,0xbc847dba,0xbc886928,0xbc7a5f11,0xbc691166,0xbc50b6d0,0xbc2d59d7,0xbc0ff3d0,0xbb94f989,0xbb44df3d,0xbac87aea,0xba131f55, -0x3ad78fb9,0x3b83ec5e,0x3bb39d69,0x3bef2a27,0x3c00faff,0x3c57d96f,0x3c364c86,0x3c511228,0x3c2a988d,0x3c1f674d,0x3c57d06a,0x3c463301,0x3bf5dbdb,0xbb47ae1e,0xbbac2696,0xbbcbaccc,0xbbd5b843,0xbbbc3e89,0xbbe66170,0xbbf73a87,0xbc22d3ac,0xbc42cf2f,0xbc707a7a,0xbc8108d3,0xbc898b7f, -0xbc8d61de,0xbc95b736,0xbc80b2d2,0xbc5d343a,0xbc532240,0xbc35472a,0xbc23d81f,0xbc257875,0xbbe032a1,0xbbd8c88e,0xbbaa1b45,0xbb9f47af,0xbb843df0,0xbb5907ec,0xbb469fd1,0xbb4766e5,0xbb7f304b,0xbb391cab,0xbb6ae899,0x3a19e1a3,0xba646954,0xbb8c814e,0xbb559212,0xbba89c54,0xbb9ef6f1, -0xbbb3e7a7,0xbbcb020e,0xbbf85696,0xbc133bda,0xbc2a4aae,0xbc3ccf60,0xbc4eda28,0xbc3e7255,0xbc32356d,0xbc2d14f4,0xbc2b1aa4,0xbc28fc56,0xbc2de5ee,0xbc276512,0xbc27eede,0xbc258f64,0xbc1be0c2,0xbc0f0572,0xbc0b9304,0xbbe8cf4e,0xbbcd4212,0xbba17e96,0xbbccc915,0xbba735f2,0xbb7f0137, -0xbb6909cd,0xbb55044b,0xbb2b7a74,0xbb0074af,0xbb1299c5,0xbb332780,0xbb860bf0,0xbb8ce2fc,0xbb16506b,0xbb54612b,0xbc60c096,0x3bc355e0,0x3b805efc,0x3b6fc164,0x3b81db2f,0x3b7a1536,0x3b60f323,0x3b6b426b,0x3b66029c,0x3b57f419,0x3b5f0fb7,0x3b5d9ec4,0x3b4690d9,0x3b4f88b8,0x3b5b9ddf, -0x3b5d8e94,0x3b6e2001,0x3b789789,0x3b6e79c7,0x3b7cd676,0x3b8241d1,0x3b86a4d9,0x3b89e842,0x3b89c302,0x3b8b935b,0x3b6e7589,0x3b6c32e7,0x3b734288,0x3b87284a,0x3b8be417,0x3b85fd67,0x3b8f5ec7,0x3b85d24a,0x3b6ff3d0,0x3b6103aa,0x3b5e8974,0x3b9046bb,0x3b86bc1b,0x3bc4e1f8,0x3b9fd0f5, -0x3bc1f364,0x3bb670f0,0x3b86530a,0x3b9d2cac,0x3ba1cf58,0x3b92fab7,0x3b8f55c7,0x3b856724,0x3b4c7b3a,0x3b18ffb5,0x3b155a7a,0x3b375e43,0x3b7d3a53,0x3ba3a198,0x3b956e3a,0x3ba9299b,0x3bb85c25,0x3bccc420,0x3bd1c265,0x3bc3742b,0x3bb9b999,0x3b8b4af6,0x3b6e23e3,0x3b73f607,0x3bc57055, -0x3bd54bc0,0x3bb06546,0x3bc79273,0x3b97610c,0x3b872106,0x3b6e29dd,0x3b89a9b8,0x3be02c3e,0x3bb39a2a,0x3be515de,0x3ba3be20,0x3bd50739,0x3bc4a6ed,0x3b690afb,0x3b90f482,0x3b73c339,0x3b39e0e7,0x3b6c6735,0x3b594a2d,0x3ab667f9,0x3ac25eb4,0x3ab3aad0,0x3ad3d833,0x3b81f6d0,0x3b9c4253, -0x3b8f605b,0x3bbe0de0,0x3bcc6ee5,0x3c08a54a,0x3c0c1833,0x3bed2fd1,0x3bead787,0x3b8dba57,0x3b806d2f,0x3b444126,0x3bcf41a4,0x3bf80da4,0x3bc24a32,0x3bec8816,0x3bc38eaa,0x3b432462,0x3b33c013,0x3b55723c,0x3bf0e417,0x3bcede2d,0x3bf73996,0x3bba7201,0x3c048871,0x3c09c667,0x3b4b2db2, -0x3b998cf6,0x3ba5471b,0x3b8668f3,0x3b8d3b46,0x3b4442bf,0x3aca89da,0xbaaa4909,0xbaf67e48,0xbb084af3,0x3b329e2f,0x3ba9b677,0x3b85611b,0x3bdb2c1c,0x3c006ecd,0x3c37b640,0x3c2c55ce,0x3c0cba05,0x3c074a4b,0x3b91fa7c,0x3b8533aa,0x3a833d71,0x3bd17d70,0x3bff5cd2,0x3bfd3fd2,0x3bf78f46, -0x3bbd98c4,0x3b7bd8c2,0x3acd9f27,0x3b581caf,0x3c385de1,0x3bf0fb5f,0x3c34356b,0x3bc58889,0x3c09881f,0x3be396c0,0x3ae5b66e,0x3b592ab7,0x3afb6f97,0x3a96fa5a,0x3b44cf39,0x3b70e718,0xba5f02fe,0xba8a2b7b,0xbab47efc,0xbab4f596,0x3b5c3c65,0x3b961a7c,0x3b7b748e,0x3be2f16f,0x3c14a9a8, -0x3c5f592a,0x3c6d89b4,0x3c3b15e1,0x3c2056c3,0x3bdb2c28,0x3be339c5,0x3afc1122,0x3b7bc19b,0x3be081a7,0x3c293b43,0x3c1b3ce7,0x3be065eb,0x3b6dd1ab,0x3a231c0b,0x3b206dc6,0x3c3dda99,0x3c3b3b81,0xbb96bc0c,0x3be4a7bf,0x3c557ef6,0x3cab59b6,0x3d086efa,0x3c58b55e,0x3c0bcc9f,0x3c0e94d7, -0xb9d8e4a2,0xbb3b7fa8,0xbbaaa6a8,0x3c86de1b,0x3ca01f26,0x3b830523,0x3bd412b6,0x3bbc3b20,0x3bfb7b3f,0x3b97ec38,0x3b0e511d,0x3aeb28eb,0x3b4cbfe1,0x3b8f7827,0x3c022bba,0x3c1c4267,0x3c243293,0x3c0cbad3,0x3b855ffa,0x3abf054e,0xbb79a07e,0x3bf22c57,0x3c8d23c0,0x3c858ca5,0x3c1a009c, -0xb9944bf5,0xbc682dab,0xbc500db2,0x3c945428,0xbc8236b1,0xbc0c6038,0xbc03a11e,0xbc3b7deb,0xbbf68255,0xbc362adf,0xbcb04f47,0xba2a3c1a,0x3bb27c15,0xbbd728a5,0x3c045910,0x3c2c6ec1,0x3c032a2f,0x3b8a87b6,0x3b1eb82d,0x3ad68290,0x3c058dcb,0x3c140ae4,0x3b9f071b,0x3c1af93b,0x3c177384, -0x3c18d868,0x3c1870bb,0x3bd9410c,0x3ba08f44,0x3b0f1553,0x3b691353,0x3c0ffcbb,0x3bcc0268,0x3b3e7010,0xbb5654ca,0x3b2d8917,0x3b97dfb9,0xbb032f77,0x3c992e6f,0x3b43e17e,0xbc52a813,0xbc3aff62,0xbc3456d9,0xbc083a1b,0xbbaff3f3,0xbaa34f9b,0x3bd13814,0x3c55609f,0x3c4782d3,0x3a69ff1e, -0x3c015dc0,0x3b8685f0,0x3b05d799,0x3b316ccb,0x3ba51b53,0x3b1875fd,0x3c1ed6e1,0x3c24712a,0x3b0179ff,0x3b7189df,0x3b7265f9,0x3b980ef1,0x3bf5afde,0x3b515fcf,0x3b924b71,0x3b592b1f,0x3b430569,0x3b7f485c,0x39e07d08,0x3a2d86dc,0xbadc070b,0xbbbc1387,0x3972618e,0x3ba43de0,0x3b1161f7, -0xbab15afd,0xba6276b7,0xb9b2b8e7,0x39dd8ff7,0x3b880c79,0x3b5bad8b,0x3bbdde1b,0x3bc40ff9,0x3bc95247,0x3b7bb1b8,0xbb0dadb8,0x3b68cebc,0x3b32682d,0xba8b77f5,0x3b92e749,0x3bd5c9d4,0x3baf2f9a,0x3c1e29da,0x3c0b267b,0x3b5ec5d4,0x3b93da85,0x3b744283,0x3b72d241,0x3bd5983c,0x3b417d17, -0x3b596a83,0x3b1c45e5,0x3b073df9,0x3ac12707,0x38d593a3,0xb982048b,0x3bc8b4e0,0xbbd4537e,0xbb6661b9,0x3b1177d3,0xbab47bfb,0xbb4d2086,0xbc1fb0c6,0xbb1abb19,0x39337105,0x39cbd44f,0x3b433b6d,0xb98cdf5f,0xbc3f1b84,0xbc110194,0xbc2a1d37,0xbc347aa0,0xbb09799f,0x3b33873f,0x3b2af61c, -0x3ba36153,0x3bca53ee,0x3c05c5f2,0x3bfccc67,0x3be5219e,0x3b873f29,0x3bf22aa9,0x3c07fc08,0x3c0691b0,0x3c0569a5,0x3bc74210,0x3bacb688,0x3b044a8a,0x3a6fb459,0x3b3402cb,0x3b1e275f,0xb88db760,0x3a6799af,0xbb85082f,0xbbc52a8d,0xbc0488a3,0xbb155786,0xbc9a9dd8,0xbbe066b8,0xbb290ff6, -0xbbddb88c,0xbc515ee3,0xbc811f09,0xbc6af89a,0xbc1eb2c0,0xba92a0cb,0x3a46ee34,0xbb403a9f,0x3a2dc35d,0xb9d73e51,0x3993d029,0x3aebc5c3,0x3b6d7e97,0x3bafb61e,0x3c02eac1,0x3bcfd5f3,0x3afd817e,0x3bcf0188,0x3bc4bb8e,0x3ba16694,0x3b86215f,0x3b6303dd,0x3bc090f6,0x39cd9672,0xbb8141fe, -0xbbd1fa19,0xbc29158c,0xbc14daf3,0xbc335611,0xbc7fb942,0xbca20339,0xbcd228e9,0xbcbc318f,0xbccd47ce,0xbce0c719,0xbce03d69,0xbca43465,0xbc23fd91,0xb917b5ab,0x3b365be7,0xba6427a6,0xbc05e1a5,0xbc1dfb1a,0xbb98104f,0xbb893fc4,0xbb0c8a20,0x39661d1c,0x3a87065e,0x3b880ca8,0x3b9e57da, -0x3c076c5e,0x3bfcab4b,0x3b0eae9a,0x3b135d05,0x3b1dc832,0x3b81b025,0x3b6e9115,0x3b92254e,0x3bef0267,0x3bb5f2f6,0x3b8c25a7,0xbb02cc46,0xbb34ba9a,0xbb7dd89e,0xbbbfd83f,0x39ed22d5,0xbb0b6049,0xbc5084b2,0xbc9638aa,0xbc3e4a43,0xbc742c7a,0xbc9440cf,0xbc87697f,0xbc7a8959,0xbc334088, -0xbc18c531,0xbc00ebc8,0xbc1cddb0,0xbc1fbd40,0xbbe26e1f,0xbc1a5463,0xbc18a5d5,0xbc0d8fed,0xbbd416aa,0xbb76111f,0xbb239a8f,0xb98320c4,0x39a7e228,0xb98b12a4,0xb8cdcddd,0x39c555ea,0x3b006253,0x3b331764,0x3b907474,0x3bc9eb58,0x3c109b9d,0x3c086f7f,0x3bf85c8b,0x3b87cf8e,0x3b4aa828, -0x3b6bb05e,0x3b2f6093,0x3b17cb2d,0xba04acdd,0xbbc584f3,0x3a9e046c,0xbb97e8f4,0xbbe5fa69,0xbc20ccf7,0xbc691560,0xbc7cdd30,0xbc876868,0xbc888be8,0xbc6dacc8,0xbc55ff3f,0xbc539cf8,0xbc49d3b4,0xbc4a5323,0xbc5ee8a3,0xbc47a31f,0xbc382acd,0xbc20b8f2,0xbc15f3f6,0xbc05f2b2,0xbbbcb52e, -0xbb842932,0xbb28f977,0xbac01622,0x39f8bb8b,0x3b17d785,0x3b5123a9,0x3b9c7721,0x3baddf99,0x3c2dcecf,0x3bf6089b,0x3c08d9e4,0x3ba5a5f9,0x3b5f8b19,0x3bacbb55,0x3b7b86e9,0x3a53e15d,0xbb84f7e5,0xbbb3303e,0xbbe465f9,0xbbf74227,0xbbf22d59,0xbc18f781,0xbc301898,0xbc66a4ae,0xbc7d0517, -0xbc8751ed,0xbc8b86be,0xbc94eaee,0xbc9ad968,0xbca178a9,0xbc8fc23a,0xbc7dfadf,0xbc7624fc,0xbc56b2b4,0xbc3b2091,0xbc3bc04b,0xbc25f5aa,0xbc12572c,0xbbf1efbc,0xbbd2f5f6,0xbbaac799,0xbb6b35c1,0xbb6d42f5,0xbb724514,0xbba5d5c0,0xbb74c148,0xbb81c561,0xb9b45823,0xba87898c,0xbb6424dd, -0xbb5a8ef4,0xbba940cd,0xbbe115a7,0xbbead0c7,0xbbff110c,0xbc0fb02f,0xbc1ec717,0xbc2f316d,0xbc35ad08,0xbc3ca1e4,0xbc2f4f39,0xbc2da399,0xbc2d0c41,0xbc2986c7,0xbc2634a3,0xbc2aeb03,0xbc256bbe,0xbc267752,0xbc23a0c1,0xbc1ccad6,0xbc15a4bc,0xbc0dfb21,0xbc05b4d5,0xbc010f91,0xbbeb9495, -0xbbf2b4b5,0xbbe0ae99,0xbbc69744,0xbbc199ec,0xbbb3e247,0xbb9def53,0xbb8fa19c,0xbb9c5f29,0xbbac5246,0xbbd0f68b,0xbbd13160,0xbbb138cb,0xbbbfe86b,0xbc7e08a7,0x3bb0c578,0x3b5b79de,0x3b3fb093,0x3b5e6617,0x3b5a34ae,0x3b3e29f9,0x3b49892c,0x3b4782df,0x3b46cff4,0x3b45bb34,0x3b4a8856, -0x3b508177,0x3b4a3b1d,0x3b538ec8,0x3b5a20f3,0x3b60c95d,0x3b662a96,0x3b5a61ca,0x3b5d2c05,0x3b5f4157,0x3b5dbb71,0x3b743528,0x3b7d2a7b,0x3b86a653,0x3b5a47e2,0x3b5f6af4,0x3b68d46e,0x3b83fd6c,0x3b87e80c,0x3b7d502e,0x3b8a0bfb,0x3b7d7d56,0x3b5820e6,0x3b51390c,0x3b48eb12,0x3b7d1c27, -0x3b75e211,0x3bb0c6b2,0x3b8cab56,0x3bb0ea5b,0x3ba0ca67,0x3b4e9f6e,0x3b7b964d,0x3b880581,0x3b8f51ba,0x3b74bb35,0x3b812e22,0x3b8e89a6,0x3b5b5a79,0x3b517f4b,0x3b6a3b61,0x3b8223fa,0x3b983c33,0x3b86138c,0x3b8a1498,0x3b8ebbe0,0x3b93ceb4,0x3baef07e,0x3baa0c26,0x3bb0a976,0x3b7dc023, -0x3b5857fd,0x3b5cab96,0x3bcb5b97,0x3bd9a472,0x3ba2db6d,0x3bb8dcb5,0x3b86a60a,0x3b681be3,0x3b649d7c,0x3b7367b8,0x3baa7242,0x3b8c6e68,0x3bb471e7,0x3b59f243,0x3bac0ff7,0x3ba02e60,0x3afe79cc,0x3b45f52e,0x3b280645,0x3b4ca6a3,0x3b40392d,0x3b5e6c70,0x3b83beea,0x3b45503e,0x3b4fdc12, -0x3b581b4d,0x3b9a9534,0x3b9d48c3,0x3b8898d9,0x3b937ba9,0x3b8ed107,0x3bb5c202,0x3be2b745,0x3bc72b30,0x3be43b78,0x3b7e2c70,0x3b6bb5ae,0x3b441b53,0x3bdc46f9,0x3c010409,0x3bb255da,0x3bdc6ac1,0x3bb253ff,0x3b033ad4,0x3b232f4e,0x3b2a7509,0x3ba6767d,0x3b99b760,0x3bb818dd,0x3ba19a51, -0x3bf433a6,0x3be620bd,0x3a717a6a,0x3b2ccb2a,0x3b75664a,0x3ba01091,0x3b5373a3,0x3b5f73a6,0x3bc9bb52,0x3b0c1114,0x3aec075b,0x3abbd738,0x3b86de86,0x3ba74f8d,0x3b755fa6,0x3b977c1e,0x3b9f8a26,0x3bdd1192,0x3c0080ce,0x3bdd4b22,0x3c0b8d1a,0x3b6e2006,0x3b5f5009,0x39da78f4,0x3bfb3942, -0x3c0ff4e2,0x3bdc1fed,0x3beabd89,0x3ba7268e,0x3b390876,0x3acafcdf,0x3b24a668,0x3be9ac4e,0x3b9324b4,0x3bfbb520,0x3b5cde32,0x3bb8fa75,0x3ba7bc42,0xba929645,0x3a80e00f,0xb8f129fd,0x3b036b35,0x3b1e10ad,0x3b92a734,0x3b970e84,0x3b20467b,0x3b325455,0x3b191908,0x3bb2bdc4,0x3bb309bd, -0x3b808bbf,0x3b9e52dd,0x3bb7a965,0x3c041842,0x3c3b93f3,0x3c18b0a3,0x3c22cbf6,0x3bc00371,0x3bbfab49,0x3a2b6ffe,0x3ba2591f,0x3c035023,0x3c0befe1,0x3c1524fd,0x3bccf10d,0x3a9e8c26,0x3a5b6068,0x3ad51869,0x3be7ad87,0x3c10371e,0xbbcc1606,0x3c0585bf,0x3c6f5ed8,0x3ca43f2b,0x3cd48924, -0x3c4a6f07,0x3c1fab70,0x3c2d8c03,0xbb6257db,0xbc008347,0xbbd9e083,0x3c285a31,0x3c7761ad,0x3baacc29,0x3bcb7d0f,0x3bbaf1d2,0x3c057bcc,0x3bb20914,0x3b31e9bb,0xb98d286e,0x3a748c14,0x3b1f8084,0x3bf06dbc,0x3c06a641,0x3c10796e,0x3c365cd8,0x3b459539,0x3a1e327e,0xbb04fcc2,0x3c2b78c0, -0x3c970c2d,0x3c518871,0x3bd2bb1c,0xbb2b9044,0xbc50a7dd,0xbc805a65,0x3cafd493,0xbcd86d13,0xbc00b004,0xbbd997aa,0xbc1de004,0xbbe79de0,0xbc5637b7,0xbccd6399,0xb953f6ff,0x3bfb1a3a,0xbbea1033,0x3bb06653,0x3c0d1aa2,0x3c2a2c90,0x3be8db8a,0x3bb081d3,0x3b628108,0x3c049d3d,0x3c12ea2b, -0x3b72eb55,0x3bf6317b,0x3c01ba55,0x3bfc8fb5,0x3c3456f3,0x3c048f26,0x3b995ebf,0x3b3e1839,0x3b93fcd6,0x3c2772ff,0x3bd2fcf4,0x3b488fe4,0xbb5c6e0f,0x3b7cb701,0x3bcbee55,0xbb7eb2fa,0x3cd1a9ac,0x3ad3656f,0xbc9962e2,0xbc162721,0xbbde27d1,0xbad6c58b,0xbb68d58a,0xbb0c699f,0x3a8132d4, -0x3c418593,0x3c563ca9,0x3945ed50,0x3c0053e8,0x3b99891b,0x3b03e77d,0x3aa8e65d,0x3b82e5ae,0x3b47fa81,0x3c02191d,0x3bfd116f,0x3a5c41e9,0x3b0bc8bf,0x3aeb38ca,0x3b26beb2,0x3bcf0f70,0x3b394663,0x3ba50ace,0x3b59d499,0x3b507ec1,0x3ba5203f,0x3a7b2880,0x3afe7578,0xb9da521e,0xba2c1e82, -0x3b9d9502,0x3b887a14,0x3b7cdbd4,0xbaf2376f,0x3aaa04a8,0x3a566c2e,0x3b282e26,0x3c18f4c3,0x3b1abe48,0x3b841d84,0x3bf4c391,0x3b8ed259,0x3b383baf,0xbb4db11c,0x3b86045d,0x3b6106e2,0x3a4e60a0,0x3ae05b11,0x3b42bd57,0x3b738c11,0x3bbf5278,0x3b9cd970,0x3a90f580,0x3b1db86a,0x3ab31daf, -0x3a84a5b0,0x3b98c2f9,0x3afcc6b0,0x3b63b019,0x3b18dd9e,0x3af8031a,0x3aed0678,0x3a284731,0x3aa4574d,0x3ba801e6,0xbab5f05e,0x3a9493e2,0x3b8add81,0xbab8258a,0x3a176b79,0xbb245de7,0xba6b3085,0xb8ec4c50,0x3bb5b9d3,0x3b856b28,0x3a8ec64e,0xbc182644,0xbc01eb14,0xbc1ec5ae,0xbc738896, -0xbb652baf,0x3b19dc7f,0x3b43813a,0x3b874f79,0x3bb2390d,0x3be7a518,0x3bd14cef,0x3bb95c92,0x3b63c553,0x3baae110,0x3bb08bfa,0x3bbbbc30,0x3bf29a6e,0x3bbb2f58,0x3b80b0ba,0x3aec9b82,0x39d4452a,0x3b0b9d92,0x3a3d68fb,0xbaac7b46,0xbb1e86a9,0xbb6e63e4,0xbb505a39,0xbbc5f459,0x3ad36120, -0xbc60047e,0xbb90b7cf,0xbad4d438,0xbb2b5d17,0xbbdf4e5a,0xbc2cb3d6,0xbc145720,0xbb3421b8,0xbb81bdd1,0xbba33cdd,0xbb9fc893,0xba5e5b23,0x3a9c031d,0x3a63730c,0x3ba146c8,0x3be233cc,0x3c057a03,0x3bd3b741,0x3b8828f5,0x3ad1f603,0x3bc0fa5c,0x3bcd83a2,0x3b36a5d1,0x3b6b15c9,0x3b406891, -0x3bc96065,0xba81e6fe,0xbb9707fc,0xbba5b58c,0xbbe7689a,0xbbcbc47f,0xbc1b7692,0xbc605eec,0xbc965393,0xbce0ed17,0xbca8535b,0xbcd6420e,0xbccd23b3,0xbcb2f8fc,0xbc86ffbd,0xbc210f6b,0xbb6b6441,0xbb8ef1a1,0xbc4a5235,0xbc0655b1,0xbbbbaaab,0xbb3851eb,0xbb394b3c,0xbaea41ee,0x3a2a5f3a, -0x3ac5892a,0x3b89e772,0x3ba636eb,0x3bf143eb,0x3beddc2b,0x3b61a732,0x3b8cb391,0x3b6e65e0,0x3b126cc8,0x3b2e8c9c,0x3b4cbd8d,0x3bc13561,0x3b2f66b6,0x3a826be9,0xbb8e8986,0xbbe11de0,0xbc098284,0xbc27df52,0xbba24117,0xbbd233db,0xbc553939,0xbca01f83,0xbc8a022e,0xbc9983c0,0xbc94ee3c, -0xbc7d604c,0xbc510e0b,0xbc073046,0xbbb82539,0xbbae3937,0xbb97a4c9,0xbb9eba3a,0xbb7843f9,0xbbb360ae,0xbba79210,0xbb7e8616,0xbaf146b5,0x3a226e76,0x3adaca87,0x3afe4216,0x3a869520,0xba052eef,0xb905220a,0x366248c0,0x3a442c1a,0x3ac36d59,0x3b33a117,0x3b9b1d54,0x3bbda636,0x3b999f31, -0x3b86dba2,0xb9052fe3,0xbb0425f2,0xbb603612,0xbb7a16ca,0xbb9aa308,0xbbeb5522,0xbc50fb5c,0xbb936802,0xbc2144e4,0xbc2565f6,0xbc2d9bce,0xbc433618,0xbc371e5e,0xbc2247e0,0xbbe7ca24,0xbc01dab2,0xbc0c9633,0xbc10ebb8,0xbc03fd9f,0xbbf39d37,0xbc0a172f,0xbbe6947a,0xbbbe1ae6,0xbb8bad1b, -0xbbafdf78,0xbbbdb4d4,0xbbc5afa9,0xbb9cd50a,0xbb511a21,0xbb0cc0f7,0xb982bb9e,0x3ac05612,0x3b238fc1,0x3b56615a,0x3b717f3e,0x3becc755,0x3b8600cf,0x3b867887,0x3a4a429b,0xbaadc38a,0xba8a327e,0xbb4c47a6,0xbb9c9f62,0xbb8a5ff1,0xbbab62ef,0xbbe47bdb,0xbc029454,0xbc0da866,0xbc388960, -0xbc5dbcd7,0xbc8ad901,0xbc85e813,0xbc788cf4,0xbc748a6a,0xbc7d0bea,0xbc8135a6,0xbc825344,0xbc6d22bb,0xbc57533a,0xbc51fc75,0xbc312e4d,0xbc0a96aa,0xbc01fb32,0xbc0888c4,0xbbef774b,0xbbcd42a8,0xbbb27577,0xbb9f125e,0xbb594591,0xbb69a121,0xbb6ad40f,0xbb9d992a,0xbb5afc46,0xbb64901a, -0xb987c699,0xba7f6fc2,0xbb157d51,0xbb1eaa92,0xbb94fa17,0xbbf4bd49,0xbbebc90e,0xbbfab146,0xbc057f18,0xbc0a750e,0xbc10cc80,0xbc0b375b,0xbc0bae98,0xbc06d973,0xbc0ee3eb,0xbc0fc078,0xbc0abd03,0xbc06bc7d,0xbc08bd36,0xbc04af2b,0xbc03fe67,0xbc0165bb,0xbbffda63,0xbc012e79,0xbbf3dced, -0xbc014edd,0xbc062b62,0xbc08c851,0xbbe69cb5,0xbbe961dc,0xbbea57a1,0xbbe6dec4,0xbbd77320,0xbbc43f77,0xbbbbb83d,0xbbc7707e,0xbbd6703d,0xbbee39bf,0xbbe3220f,0xbbf03b6a,0xbbec0344,0xbc65c8b3,0x3b98cfe1,0x3b330a2d,0x3b1664ba,0x3b35eced,0x3b351d3b,0x3b15cf64,0x3b215f0a,0x3b24e0af, -0x3b3220de,0x3b2aa990,0x3b30ac38,0x3b44c41e,0x3b33e9ac,0x3b3a338e,0x3b44b7f8,0x3b459fe7,0x3b496f2b,0x3b41da88,0x3b3ada20,0x3b386e66,0x3b332979,0x3b4c48bb,0x3b5774ae,0x3b73765a,0x3b3d6479,0x3b483350,0x3b53e27b,0x3b74054a,0x3b79c26e,0x3b630366,0x3b756d8b,0x3b5e44cb,0x3b3c0da4, -0x3b384475,0x3b30daad,0x3b52540c,0x3b4c6bc0,0x3b87c7c0,0x3b5f27c8,0x3b91af5f,0x3b7979e1,0x3b00e3c3,0x3b30250c,0x3b4eae47,0x3b8278d2,0x3b509eac,0x3b713601,0x3b99950b,0x3b63117d,0x3b570f3c,0x3b7499aa,0x3b77b571,0x3b881e43,0x3b710c8d,0x3b581c4a,0x3b501001,0x3b4edec0,0x3b88f7f7, -0x3b8ed39d,0x3b9c95a8,0x3b5ed8a2,0x3b43d950,0x3b4ba7d3,0x3bc891e2,0x3bd4b82d,0x3b940b28,0x3ba4b5bf,0x3b705763,0x3b4d0516,0x3b582822,0x3b5b54d1,0x3b84660f,0x3b545255,0x3b69c62d,0x3af252c4,0x3b778a02,0x3b6084c0,0x39467a83,0x3ab217e4,0x3ab1be23,0x3b5a7731,0x3b28db9b,0x3b53c4b6, -0x3babaf6d,0x3b4eaa6b,0x3b5ecd77,0x3b7a505b,0x3b96ba2a,0x3b91ddaa,0x3b84cb6c,0x3b580671,0x3b3b5e40,0x3b5a532a,0x3ba4f067,0x3ba115ad,0x3bcb27ca,0x3b6728f1,0x3b5d40c8,0x3b554310,0x3be28b7c,0x3c005ae2,0x3ba71893,0x3bc4ae6a,0x3b9e7d25,0x3ae25c3c,0x3b26bc3d,0x3b18c9b1,0x3b6534b9, -0x3b4ffba4,0x3b530910,0x3b6a9f37,0x3bbde973,0x3b920277,0xbad49d7b,0x39cfb279,0x3b03a7d4,0x3ba0ac28,0x3b37eb0d,0x3b753320,0x3c0a24b7,0x3b527936,0x3b478f4e,0x3b5544da,0x3b99ac59,0x3b9e9a7d,0x3b7779d2,0x3b353acc,0x3b1e4bee,0x3b4a688f,0x3bad3df3,0x3baaf64c,0x3c089fcb,0x3b4bcb51, -0x3b4a7fbf,0x3a357fcd,0x3c0cfdec,0x3c1c72a0,0x3bc4591e,0x3bdba53c,0x3b959eee,0x3b242ed6,0x3afccf69,0x3b16b827,0x3b998cb8,0x3b1bca64,0x3b7b7dce,0x3a5565a9,0x3b3a567a,0x3b31e083,0xbb7a826c,0xbb08644e,0xbafee853,0x3b43539f,0x3b1bf62b,0x3b975bb3,0x3bfa91d7,0x3b5efb51,0x3b5d0757, -0x3b6dade0,0x3bb71e76,0x3bb47bc0,0x3b8a9b26,0x3b3ecc3c,0x3b2fcb21,0x3b65d7fb,0x3bfc1144,0x3bedefd0,0x3c28581a,0x3bb553f9,0x3b9f0ed0,0x399d0a17,0x3bc735ab,0x3c121bfa,0x3bdb69bb,0x3c059606,0x3bb7e2b3,0x385ce036,0x3ac421c0,0x3ad56b98,0x3b8820cd,0x3bb6b8a1,0xbbacdd15,0x3c28eaa4, -0x3c726ec6,0x3c8a664f,0x3c9ee0da,0x3c61fb83,0x3c4a2be3,0x3c32d943,0xbb7e90de,0xbc2a6341,0xbc151c58,0x3b4ed65c,0x3c2f4050,0x3c2b1c76,0x3bf5bb31,0x3bc545b2,0x3c0261c0,0x3bbba474,0x3b828dc1,0xb883521f,0x383749bf,0x3ab2a742,0x3bd05d20,0x3bd12a99,0x3bf1adfc,0x3c52512c,0x3b17d261, -0x392db08d,0x3a4b0c99,0x3c567407,0x3c988c9c,0x3c0c4b20,0x3b9c5637,0xbb7bfc9b,0xbc61ad1c,0xbc830dc1,0x3cab01e3,0xbcfdcafe,0xbbd84a7c,0xbb96fa87,0xbbe94c3c,0xbbf1944c,0xbc3a2833,0xbc91a5ce,0x3b22988f,0x3c1dae8f,0xbbb16cca,0x3b8f18df,0x3be34340,0x3c2479e3,0x3c031fd9,0x3bed2642, -0x3bdce595,0x3c07cc17,0x3c0a057e,0x3b86aca0,0x3bc6c3c4,0x3bd55d02,0x3bbd2bb6,0x3c41569e,0x3c15cdd8,0x3b98f175,0x3b8db21e,0x3bbd84e9,0x3c316393,0x3bc4b50c,0x3b3a9412,0xbacae13f,0x3b977733,0x3bf61869,0xbb90bbe9,0x3ce790f4,0xbaff6e71,0xbcbdb787,0xbb8d0d4d,0xba1cb886,0x3b872bbe, -0xba9f69b1,0xba9efa43,0xb9f43ba6,0x3c39bf83,0x3c65e3e8,0x39d6bbc1,0x3c0ce598,0x3bb15c10,0x3a34e500,0x3a2a4940,0x3b2b9c07,0x3b92b1be,0x3bbd9563,0x3b96d585,0x393360d0,0x3a979faa,0x39a7b134,0x394ec424,0x3b98b886,0x3b2f85a5,0x3baf3e22,0x3b6e9ca2,0x3b7648d2,0x3bb931b7,0x3afa85fc, -0x3b4a08ca,0x3a4f90aa,0x3b3d4f10,0x3be3ec6b,0x3ad5bf50,0x3b3e0839,0xbb01de87,0x3b50685d,0x3b7dcf82,0x3bbf6f28,0x3c4da13b,0x3b1850ba,0x3b2863ed,0x3ba0d0d5,0x3b8e7cad,0x3b9bf8fd,0xbb315cad,0x3b9b9b30,0x3b44d33f,0xbac3b7c9,0xba848838,0x3a25a79e,0x3b87317b,0x3b5b15d7,0x3b1d5597, -0xb9ba0149,0x39bbb296,0xba4e4460,0xba9a3162,0x3b176135,0x3aa023ae,0x3b695c9a,0x3b1e27c9,0x3b0630bf,0x3b08a203,0x3ac27504,0x3b0c986b,0x3b139db3,0x3b19426e,0x3b627e85,0x3b602019,0xbb136294,0x3b7ba638,0x3b5f130e,0x3aa16857,0x3a97f639,0x3c00a6e6,0x3b817ee2,0x3a5e780f,0xbbd0425a, -0xbbd84935,0xbc100e57,0xbc7d5080,0xbbacba5b,0x3a25f42e,0x3b40a5d5,0x3b3c2c9d,0x3b985d01,0x3bde4f1d,0x3bb55bbc,0x3b9cf8d6,0x3b558913,0x3b511b89,0x3b4ae02e,0x3b5855ab,0x3bcf3397,0x3ba6a6ae,0x3b2b1051,0x3ade7b1a,0x39ce2906,0x3ace0617,0xba13fb70,0xbb0a32d0,0xbb8ab6a2,0xbb7b3c65, -0xbb07189e,0xbb8f946b,0x3b607d87,0xbc4533a8,0xbbfc00bb,0xbb17e825,0xba847372,0xbb95a7e8,0xbbc81691,0xbb9f497b,0x3a9038f3,0xbbc6b3cb,0xbc01e68a,0xbb50e38d,0xbb4e4a6d,0xb90db639,0x3968c743,0x3b9384d9,0x3bc689c1,0x3c034ccf,0x3b50f6a1,0x3ada45b5,0x3b057326,0x3b9897b8,0x3b9dcc18, -0x39c6302b,0x3b37abb2,0x3b15bac9,0x3ba7a68c,0xbaca7113,0xbb893be7,0xbb48d61f,0xbb84616c,0xbb91798a,0xbc159bf6,0xbc6c835c,0xbc9e6307,0xbceb544f,0xbc9933c5,0xbcb3fdee,0xbc9f7a41,0xbc8180f9,0xbc5cff10,0xbc232d73,0xbc38e642,0xbc5c700b,0xbc8aac63,0xbc018106,0xbb8a841e,0xbb915a88, -0xbb43f579,0xbb00a9b4,0xb9589541,0x3b13a175,0x3b6de034,0x3bde27eb,0x3bb80c77,0x3bb4a2d2,0x3b93fa56,0x3baaca83,0x3b96a17c,0x3add5d20,0x3b233367,0x3b0d31b5,0x3b8cdb74,0xba7cd63d,0xbb3ad226,0xbbc3a911,0xbc17aa98,0xbc2f9f1b,0xbc461c68,0xbc0b74d3,0xbc0d8d9f,0xbc2030f1,0xbc88cf8b, -0xbc9b1fcf,0xbca792a6,0xbc90c0a6,0xbc770125,0xbc4335e9,0xbc118a82,0xbbb8c553,0xbb8a08f6,0xbb0ec46a,0xbaf9b58b,0xbb1bd2b5,0xbb18f94d,0xbac293d8,0xb9194421,0x3b1daebc,0x3b8a2a97,0x3bcb08a7,0x3b852c69,0x3b2145cf,0x3a28c1e1,0x39d6bc27,0x39dcfa9b,0x39816e8c,0x3a72f97e,0x3af3098d, -0x3b837c1f,0x3b4dd05b,0x3ab4678c,0x3a6e4768,0xbb4d4176,0xbbaabc5c,0xbbf0f066,0xbc037731,0xbc18ec30,0xbc375e6b,0xbc857c05,0xbc203a60,0xbc6d7fed,0xbc564186,0xbc3ed166,0xbc2d9622,0xbc001486,0xbba9337c,0xbacd841f,0xbb64043e,0xbb983f0a,0xbb8d93d5,0xbb765640,0xbb2e2121,0xbb47b411, -0xbafe8e30,0xb9a51ad8,0x3ab352f1,0xba21e794,0xbab70316,0xbb7aa541,0xbb7196dd,0xbb22b5c6,0xbae30f62,0x382bf1f3,0x3ae445cb,0x3b586f98,0x3b40dd88,0x3b42dc24,0x3b853c83,0x3ab3fdca,0x3a31c74a,0xbb0a544d,0xbb9ba809,0xbbc91c67,0xbc14ebcb,0xbc2153e9,0xbb7b1eb0,0xbb96701e,0xbbc8599b, -0xbbe9a5e2,0xbc051df1,0xbc36a244,0xbc5a2e4e,0xbc7e90cc,0xbc62e30e,0xbc3dfbcf,0xbc33d3c3,0xbc2ef52f,0xbc2a7959,0xbc1fbfcb,0xbc16f2d9,0xbc123c80,0xbc14ede0,0xbbfebd80,0xbbc297b3,0xbba1467e,0xbba6f0cf,0xbb8c5923,0xbb6bc727,0xbb40ea16,0xbb384ac8,0xbadd683a,0xbb186746,0xbb2b1746, -0xbb6f93a4,0xbb26ba58,0xbb42e3f3,0xba4b83c3,0xbabb72dc,0xbac80a21,0xbac4eaa7,0xbb74012b,0xbbcd554e,0xbbb892ab,0xbbbeec07,0xbbbf8637,0xbbb5f0e2,0xbbad82f8,0xbb950b63,0xbb927723,0xbb938c52,0xbba76d9d,0xbba7289c,0xbb9cb822,0xbb965627,0xbb9523df,0xbb939813,0xbb8fd2ed,0xbb8a3bc3, -0xbb8c8f28,0xbb985e8e,0xbb96d7e4,0xbbb789c4,0xbbd02f8c,0xbbec4a17,0xbb977626,0xbba9c1c2,0xbbc62e84,0xbbc376c7,0xbbb800da,0xbbabbdeb,0xbbaaca8f,0xbbb67091,0xbbc4e726,0xbbc811b3,0xbbb528c5,0xbbf27d3b,0xbbdac221,0xbc106791,0x3b7a1295,0x3b135a03,0x3b00417d,0x3b0f9273,0x3b0d011c, -0x3adb284e,0x3af15c52,0x3b000d09,0x3b15ccd7,0x3b0d1737,0x3b13e14a,0x3b2f9e4b,0x3b0bf010,0x3b0bf589,0x3b176e6f,0x3b1d63c6,0x3b2443bc,0x3b236dc0,0x3b192185,0x3b1532c0,0x3b0f6975,0x3b22830b,0x3b2bb8fe,0x3b503faf,0x3b18baf2,0x3b2bcb6a,0x3b3e9fe0,0x3b5ae02f,0x3b5eb656,0x3b464328, -0x3b525d92,0x3b3de9f4,0x3b22bd11,0x3b1ebb52,0x3b15a1de,0x3b2ed827,0x3b23f2d6,0x3b40f72b,0x3b37ce37,0x3b63ef7a,0x3b2c963f,0x3a4cf945,0x3abfe241,0x3b0270f0,0x3b4deeeb,0x3b22e349,0x3b4c77b7,0x3b91fda4,0x3b2b82d7,0x3b10130c,0x3b337277,0x3b3eab55,0x3b5b34fb,0x3b4def1e,0x3b2adc22, -0x3b1b7f95,0x3b193da0,0x3b528315,0x3b63166d,0x3b736533,0x3b38beb5,0x3b2ebdd9,0x3b466ae1,0x3bbddf11,0x3bc743bf,0x3b86f20a,0x3b925589,0x3b593874,0x3b388bbe,0x3b4fe4f6,0x3b4d4813,0x3b58442f,0x3b276ebd,0x3b147318,0x3ae2117b,0x3b320078,0x3b092db2,0xbaaa73b6,0xb90ebb0a,0x3931fa7c, -0x3b45a4c0,0x3b14b908,0x3b383a0c,0x3bb7e591,0x3adcca79,0x3acf63c9,0x3b23a6ee,0x3b5bdfaa,0x3b6c102e,0x3b7223c6,0x3b2879fa,0x3b099d55,0x3b0caff1,0x3b617aa6,0x3b75becc,0x3b97c8e4,0x3b4bc641,0x3b523da8,0x3b719f5d,0x3be30142,0x3bfa3a93,0x3b9f3fd2,0x3baefad1,0x3b8f29e0,0x3af453ad, -0x3b357369,0x3b1e9e7a,0x3b2be25b,0x3b1f9ea6,0x3af24d67,0x3b4fca0a,0x3b947d48,0x3b0f9fae,0xbb824234,0xbade38fe,0xb92a4851,0x3b75a292,0x3b115ef0,0x3b5c77ff,0x3c150b6c,0x3adf3d71,0x3a7b1e24,0x3af04d3a,0x3b5c1c73,0x3b7937dc,0x3b6a47aa,0x3aef5192,0x3aa23615,0x3a9ce74a,0x3b629af1, -0x3b7bfeb9,0x3bdf0f65,0x3b2c846d,0x3b4e1c58,0x3ae74833,0x3c158965,0x3c248f93,0x3bbac2fb,0x3bd5b5bb,0x3b92d00a,0x3b27b3c2,0x3b37cfe3,0x3b318fe9,0x3b63da07,0x3ad28152,0x3ada67ad,0x39ef73a3,0x3af32dd0,0x3a8834c9,0xbbc04092,0xbb9743b0,0xbb56f71a,0x3b507d2f,0x3b1f71b9,0x3b8a81d5, -0x3c0ff9e7,0x3aa813ad,0x3820e0f5,0x3ac53628,0x3b610a3f,0x3b97fbe8,0x3b847979,0x3b059599,0x3aab9c67,0x3a8346f9,0x3b906544,0x3baba768,0x3c1b0c32,0x3baed4ea,0x3b8b9a41,0x3a7bb1d4,0x3be967cb,0x3c1cebf2,0x3bb19a84,0x3be919bc,0x3bad3bf0,0x3954a83f,0x3b192ca5,0x3afaf3a0,0x3b315b30, -0x3b745ade,0xba4b5adf,0x3c4364cc,0x3c348683,0x3c3880fa,0x3c6d9a27,0x3c7c511a,0x3c712837,0x3c11786b,0xbb3b15ed,0xbc2fabf2,0xbc214e9c,0xbb61dc98,0x3bb84c3c,0x3c87d060,0x3c1d0e22,0x3beded98,0x3c043b7f,0x3bd13627,0x3bb29758,0x3b0376e7,0x3a8bb3ec,0x3ac8df11,0x3ba57872,0x3b915c8b, -0x3bc28397,0x3c591bc3,0x3aff8b4e,0x39f73316,0x3b8ba1a5,0x3c7894b2,0x3c918cd5,0x3ba19189,0x3b8a6382,0xbb3fad4d,0xbc572e5c,0xbc3b0142,0x3c64c53a,0xbcf7c8fe,0xbb0e1cda,0xba195964,0xbbdc86a4,0xbbec15ff,0xbc0aaaa6,0xbc2f6387,0x3b9f7116,0x3c2d03f8,0xbb23b65b,0x3b58a55e,0x3babd6bd, -0x3c1c5609,0x3c106db2,0x3c113d38,0x3c0828c8,0x3bf133ca,0x3bded85f,0x3b8c792b,0x3b98e80b,0x3ba3f6c9,0x3b8ae8b6,0x3c3bdebe,0x3c1ca5b1,0x3b966fbe,0x3bc4b732,0x3be5bea2,0x3c323558,0x3b9a2dba,0x3b2b53de,0x3b00f4fb,0x3bbed89b,0x3bf064f1,0xbb8a069c,0x3cc28038,0xbbbac082,0xbcbaf521, -0x3a9f2344,0x3baee392,0x3bdea56e,0x39980911,0xbaabff2d,0xbb119a85,0x3c1ab9de,0x3c55b096,0x3b1aee90,0x3bee185d,0x3b9ea4bd,0x3ad9e351,0x3a4888f3,0x3b0758fe,0x3bdb391a,0x3b85afe2,0x3ad080c0,0xb9abb32a,0x39afbb29,0xb9fb1577,0xba93948a,0x3b3a828b,0x3b37af60,0x3bb87993,0x3b83b3db, -0x3b8df28d,0x3bbfda1a,0x3b1389c7,0x3b6398b5,0x3aa176bb,0x3b9ffa57,0x3c029fe8,0x3a6a554d,0x3ada04b3,0xb98efe57,0x3b9f64d2,0x3be1b80e,0x3c0ec37b,0x3c35f1b1,0x3b0afc7b,0x3abf70ab,0x3a5d711e,0x3b80176a,0x3bc17348,0xb97cf7fc,0x3b99e11d,0x3b05c47c,0xbb0c9f1a,0xbb847feb,0xbb014445, -0x3bc28f89,0x3af7e23a,0x3a819258,0xba83ef15,0xba90a407,0xbb0ce34a,0xbb036290,0xb7259c2c,0x3a416c87,0x3b8717f3,0x3b2c4c7c,0x3b2426b1,0x3b0e46ca,0x3b21f4d7,0x3b33a95d,0xba1387b2,0x3b9b03d6,0x3ba6b916,0x3b14818e,0xbab41e04,0x3b9493db,0x3ba803ff,0x3b5c3235,0x3b4cfd69,0x3bc7b36f, -0x3b80b23a,0x3b1f468c,0xbb041f3e,0xbb8a9d00,0xbbd4f4a3,0xbc3e1668,0xbbccfdf2,0xbaea11b4,0x3b1b0023,0x3ab0946f,0x3b33815b,0x3bc5bdea,0x3ba2b957,0x3b9c3efc,0x3b72242a,0x3ae54d03,0x3abdfb18,0x3afec40f,0x3ba04674,0x3b828eb5,0x3ac0fe53,0x3aff898c,0x3a597972,0x3a9021da,0xba5669d3, -0xbaf3eaf1,0xbb8f879c,0xbb9917ff,0xbb4c4f41,0xbb9479c4,0x3b266573,0xbc48f988,0xbc136f3d,0xbba98a13,0xbb3dde24,0xbb1c7c00,0xbb310adb,0xbb2c3a92,0xb9babc94,0xbc13018d,0xbc28f8ef,0xbb0f13bb,0xbb8395b9,0xb9f33d65,0xba71ad7f,0x3b63ad7c,0x3b9d40fa,0x3bb30e05,0x39852429,0xba09a882, -0x3adb8715,0x3b2450cb,0x3b1ea3ed,0xb9b0c6cd,0x3b0cb9e9,0x3aba411c,0x3b45e52c,0xbacc5fb9,0xbb4216db,0xbab76486,0xbb15dd3a,0xbb86e70d,0xbc21859f,0xbc810d80,0xbcaab366,0xbce59bf2,0xbc919ae3,0xbc849f44,0xbc6645ee,0xbc3eae91,0xbc3f5478,0xbc38479a,0xbc88c530,0xbc8fe30d,0xbc677fcd, -0xbc15f661,0xbbd39343,0xbbc49aa5,0xbb79a04a,0xbb0cae03,0xba6af8a0,0x3b12f50e,0x3b4c4d51,0x3bdcc989,0x3b74d0be,0x3b60dd6f,0x3ba0184d,0x3b9cb422,0x3b90d19b,0x3aee7c65,0x3b2c19a7,0x3ac987e5,0x3b184c3e,0xbb8cba8c,0xbbd20a54,0xbbfaaf85,0xbc2d216a,0xbc40752b,0xbc52f369,0xbc30a3a9, -0xbc1b1a3c,0xbbcda664,0xbc4f869e,0xbc98497b,0xbca311c1,0xbc886452,0xbc792f22,0xbc57ee45,0xbc34e5bb,0xbbfefbd2,0xbb90cda8,0xbb4bef11,0xbb1494a5,0xbb29d18f,0xba3bf24f,0x3a42b9a4,0x3aea923b,0x3b92bd15,0x3bccec7c,0x3c0cf74c,0x3bb31517,0x3b81bf1f,0x3b4a067b,0x3b16e061,0x3ae42a7b, -0x3a077a23,0x3a85be60,0x3acff60b,0x3b4dc64b,0x3a970ad0,0xbaaaf0e0,0xbafa60b1,0xbba411f2,0xbbdf53ca,0xbc142389,0xbc25b14e,0xbc3d62b2,0xbc571a50,0xbc8ba3c3,0xbc623904,0xbc88fae0,0xbc6e0164,0xbc4c0769,0xbc281b55,0xbbd6f6ff,0xbb6b70e7,0xb9c04bec,0xbaaeb63a,0xbafebc31,0xba98cb82, -0xba6dba79,0x3a13b486,0x3a7da620,0x3ad8a80c,0x3b43be50,0x3b8ac759,0x3b30cea4,0x3b33e1b3,0xb9a35830,0xba9f2dbc,0xba769ab1,0xba5631ba,0x3a184ab0,0x3b08a069,0x3b7f557a,0x3b36ce3f,0x3af6e6e1,0x3ae05f51,0xba46c788,0xbab58a3e,0xbb5fdd78,0xbbd0deaa,0xbc1bdfa4,0xbc51f419,0xbc554a12, -0xbb67baf2,0xbb8b017f,0xbba80b14,0xbbb78215,0xbbcbd30c,0xbc0def82,0xbc214c06,0xbc2c7a78,0xbc16e6ed,0xbbeb5504,0xbbd33db2,0xbbb9c061,0xbbaa9612,0xbb8d295e,0xbb97a01e,0xbba331b9,0xbbb3b2a3,0xbbaff7cf,0xbb9f27f8,0xbb8038b2,0xbb6084b4,0xbb11fcce,0xbabe044c,0xba3ee08b,0xba1eab04, -0x3936949e,0xba3c7382,0xbaac09b6,0xbb0c38f5,0xbade7efa,0xbb2837c1,0xbad64b5a,0xbb08af90,0xba92abc5,0xba935a80,0xbb4920c2,0xbb8659de,0xbb6f7eac,0xbb68cb3f,0xbb53fc2c,0xbb2c0a7e,0xbb057cb4,0xbaa77068,0xba91c792,0xba9290e7,0xbac41a85,0xbac245bb,0xbaa5963a,0xba934745,0xba78b043, -0xba8616aa,0xba79562a,0xba4bbc2b,0xba490839,0xba8b99c4,0xbaa53b44,0xbb16828f,0xbb4ab6f6,0xbb83359f,0xbad14fdf,0xbb08c19c,0xbb39a28d,0xbb34a801,0xbb343236,0xbb2ff375,0xbb3987fc,0xbb5346f5,0xbb6c8111,0xbb699aff,0xbb564a6b,0xbbb3f654,0xbb9b0733,0xbb43a0a7,0x3b3eb75b,0x3af12eec, -0x3ad67292,0x3acbfb2e,0x3abce0bd,0x3a860b82,0x3a9c1b6b,0x3ab3ac06,0x3ae943fd,0x3ad92023,0x3ae6da50,0x3b0ff8a3,0x3ab36f72,0x3aa3b76e,0x3ab027c5,0x3ad4c3a5,0x3aef9a18,0x3b012e1a,0x3af2afc0,0x3aebb41f,0x3adb05ee,0x3afdb019,0x3b04ed5c,0x3b24cc35,0x3ae4f8ae,0x3b0ffc30,0x3b2c6fd1, -0x3b42023e,0x3b43cd1e,0x3b2bc4b8,0x3b33c5a7,0x3b23118a,0x3b0da1a5,0x3b0ad1b4,0x3afdb1ee,0x3b1316bf,0x3b06e368,0x3b27caa5,0x3b35839d,0x3b298345,0x3acafc33,0x3759c567,0x39cffc3f,0x3a7b2f6a,0x3b1aaf5b,0x3af69760,0x3b1b0597,0x3b703562,0x3a9af52e,0x39c5e6c3,0x3a434bde,0x3ab41729, -0x3b0e4ab7,0x3b203ea6,0x3b0b553c,0x3afd8413,0x3aeb344c,0x3b27bef9,0x3b2afcc3,0x3b1c7f1a,0x3b0f3bd6,0x3b175b2f,0x3b49d522,0x3bb06a2e,0x3bb89077,0x3b7a949e,0x3b84504a,0x3b435b8d,0x3b26bf43,0x3b49679c,0x3b403c2a,0x3b3241c5,0x3b15be90,0x3af5d7d2,0x3b1ac6c2,0x3aed774a,0x3a484d6b, -0xbb0f5b51,0xbabfd351,0xba3df8cd,0x3b267cd6,0x3b07564b,0x3b137d8b,0x3ba612ab,0xba106d28,0xbaadaf1e,0xb9955b5c,0x3a9b0037,0x3b118c6d,0x3b53128c,0x3b1a03c3,0x3b04638f,0x3ade08ad,0x3b235c11,0x3b2e2ef9,0x3b2b352b,0x3b215801,0x3b408d6a,0x3b8a859e,0x3be0f7ec,0x3bf1f532,0x3b9f1434, -0x3b9fe4ee,0x3b875a4c,0x3b07e251,0x3b4aa33e,0x3b36ed8b,0x3b14b6b7,0x3b156b7c,0x3b11bebe,0x3b8e4b3c,0x3b6df127,0x3a06fbc4,0xbb91b1a3,0xbb5db997,0xbae81ce0,0x3b3d180d,0x3b05afe8,0x3b2a5f18,0x3c0420df,0xbaa1197c,0xbb4675fa,0xbb1daef1,0x399272fa,0x3af80d54,0x3b4b4446,0x3ae92e99, -0x3aa62eb1,0x3a3cab13,0x3b28ff17,0x3b308042,0x3b89ae33,0x3b028a36,0x3b5854a0,0x3b5628d7,0x3c1ccdef,0x3c2b541b,0x3bc396ae,0x3bd6cbd7,0x3b9b4252,0x3b3a16f3,0x3b7898d3,0x3b5056bd,0x3b334e9b,0x3afcf208,0x3a1f9f31,0x3ac6c86c,0x3ac59aed,0xb9d9dd56,0xbbdbe8c7,0xbbd79c48,0xbb84d01c, -0x3b47f430,0x3b2e4aaa,0x3b68af8e,0x3c046619,0xbb183eb7,0xbba7657d,0xbb3d9687,0xb99b0b8f,0x3b3f7795,0x3b82b030,0x3b1b6766,0x3ad1eb0a,0x39d64136,0x3b21b12b,0x3b5fce2f,0x3be69e98,0x3b9cdf39,0x3b85aa4c,0x3b18c3c2,0x3c072dba,0x3c2891ac,0x3bad5fa6,0x3bd64823,0x3bae76be,0x3a8cb473, -0x3b4f933a,0x3b403b20,0x3b17495d,0x3b40d020,0x3bb32d5b,0x3c4bc9c3,0x3bd3fc21,0x3bc4da45,0x3c258d58,0x3c8df7a3,0x3c8aff9c,0x3bb1aead,0xb94d914c,0xbc116596,0xbc260f63,0xbc0caa5f,0x3a86273d,0x3ca08d52,0x3c2da577,0x3c02ee7b,0x3c03f3ea,0x3bde6353,0x3bcf082a,0x3b8f5a34,0x3b68d8f2, -0x3b46b981,0x3b90b859,0x3b4db895,0x3b95adef,0x3c4b97b8,0x3ada1238,0x3ab17caf,0x3c035777,0x3c829efd,0x3c7f289f,0x3b5ce09d,0x3b62f318,0xbb281235,0xbc3ad0e9,0xbb895c23,0x3ad6ef95,0xbcd0b8ef,0x3af9a3b6,0x3b52fb71,0xbbf33853,0xbbb304c1,0xbb9e60d2,0xbbd08c57,0x3bb79e88,0x3c1ffe2a, -0x39e038fc,0x3ae7c804,0x3b3ded1e,0x3c1b2ece,0x3c1de0ac,0x3c33a063,0x3c227143,0x3bd325fa,0x3bac240e,0x3b891e01,0x3b5230e0,0x3b6f1143,0x3b5ef8d8,0x3c26ddda,0x3c162742,0x3b8f5e69,0x3bfc5f00,0x3c0910a7,0x3c2c61b0,0x3b8010a0,0x3b4add38,0x3bb51268,0x3bc6935c,0x3bc0ae99,0x39835871, -0x3c5102e5,0xbc05f245,0xbc92954d,0x3baed963,0x3c1b1ab1,0x3be9a68c,0x3a9ac868,0xbb2b010e,0xbba9d865,0x3b9801b1,0x3c160d39,0x3ba4687f,0x3bb3550c,0x3b8fa056,0x3b80cbd0,0x3adf6417,0x3b171392,0x3bfd358e,0x3b3ad895,0xba10e11c,0xb9bbbffe,0xba22dd12,0xba4151ef,0xba8349e1,0x3ab72ee1, -0x3b451c54,0x3bba1e91,0x3b9037dd,0x3b9f9d09,0x3bbce55f,0x3b12a361,0x3b58cfea,0x3ad77249,0x3bc1525c,0x3c08240a,0x3b3585ef,0x39cae65c,0x3b4b3a37,0x3bf699ec,0x3c17fd41,0x3c249fea,0x3c15b297,0x3ab24a69,0xb9b38d8f,0xba3f9ff8,0x3a1539dd,0x3b54ae5b,0x3b41c62d,0x3b6d072f,0x3ac16197, -0xbadfb3d1,0xbb8b8cff,0xbb4919f0,0x3bbabdc1,0x3a42157b,0x36a16596,0xba844ea1,0xbaf10442,0xbb26cb24,0xbaccac6b,0xbacbcb9d,0x39e98423,0x3b9f95f8,0x3b45d162,0x3b4942db,0x3b0ef8c4,0x3b569d0a,0x3b50899d,0xbaf1b943,0x3bb5c9fe,0x3bc2d7f8,0x3ae05dcf,0x3ace1b19,0x3ae679af,0x3b6a716e, -0x3b8109df,0x3b963f4e,0x3baf1562,0x3bc88ffc,0x3be22e3a,0x3b816632,0xba5ccbbf,0xbb4e9afd,0xbbc8ccf3,0xbbcec210,0xbb5c0f06,0xb9b64253,0x3a0155be,0x3af8492d,0x3ba441e1,0x3b9ad57f,0x3ba4fc3e,0x3b80a76d,0x3a6058d1,0x39073da6,0x3aab923b,0x3b4adaf1,0x3b288287,0x3a209806,0x3b263297, -0x3adeb551,0x3a548462,0xb8b5ddc3,0xba702a1e,0xbb8f6137,0xbbc04b0b,0xbba976ac,0xbbbf619f,0xba740945,0xbc3ef330,0xbbf16f19,0xbbd7e190,0xbb90c203,0x3a2cf676,0xba41d35a,0xbb44d06c,0xbba05f78,0xbc35be8f,0xbc3c590d,0xbb3e8fb5,0xbb87dd21,0x39ca3f4a,0xb8b4b467,0x3b33d7aa,0x3b553b19, -0x3b3317d0,0xba155012,0xba760e87,0x3ace9b20,0x3a6888f1,0x3a441b1d,0xb7b1a768,0x3acc807e,0x39eee6e9,0x39e5ccf6,0xbab7e294,0xbae2d776,0xba32bbee,0xbaff0b21,0xbb990a70,0xbc2f1f7a,0xbc81374e,0xbca7d946,0xbcc06bc5,0xbc8815c2,0xbc46aa24,0xbc30553f,0xbc20a8ee,0xbc312307,0xbc4dc727, -0xbc78c9cf,0xbc6a055e,0xbc284d74,0xbc15cb6a,0xbbe92dc5,0xbb9c9614,0xbb8735f7,0xbb322f08,0xbaa4e9ab,0x3af452ea,0x3b41f3f9,0x3b7c00ec,0x3af5088f,0x3af15621,0x3b8e7ea1,0x3b73245f,0x3b6eb8a7,0x3b07ae9d,0x3b310c02,0x3a8ee73c,0xb9acf2d2,0xbbe2b952,0xbc1163a6,0xbc112ef0,0xbc367d5e, -0xbc461c7d,0xbc5accbb,0xbc54a0f6,0xbc30f171,0xbbac6ccc,0xbc258914,0xbc81d51c,0xbc8a8ac6,0xbc70f8d8,0xbc71bdf6,0xbc7a8523,0xbc4c665e,0xbc236d17,0xbbd9b1ef,0xbbb841fc,0xbb853547,0xbb4174b8,0xb8a31366,0x3b012582,0x3b45750a,0x3b99d39b,0x3bc625e1,0x3be6c814,0x3ba36524,0x3b845e46, -0x3b8e25d1,0x3b770e24,0x3b318192,0x3abd4208,0x3aae8bca,0x3ab90d55,0x3ace6464,0xba257845,0xbb6be2a7,0xbb913b4e,0xbbcd6144,0xbbf36343,0xbc16baeb,0xbc2d0564,0xbc3f219d,0xbc5153f4,0xbc74aab5,0xbc709281,0xbc80ea47,0xbc64d035,0xbc4c05eb,0xbc29af42,0xbbf8fe04,0xbba66e9e,0xbb0cd889, -0xbadc3b77,0xbab0d228,0xb98dece9,0x3a02b48c,0x3b1cc6aa,0x3b7cae0e,0x3b6d144b,0x3b8432da,0x3b902113,0x3b793907,0x3b93d23d,0x3b115317,0x3a8de9fa,0x3a16f5b5,0x39a172cd,0x3a42d595,0x3ad7b9d5,0x3b4807d3,0x3ad8521e,0xb9f43ba3,0xba56f4f9,0xbb3ea900,0xbb24c620,0xbb6e5b82,0xbbc67c5b, -0xbc25f7f8,0xbc522349,0xbc59429f,0xbb83a560,0xbbb0d0b6,0xbbacf3b6,0xbba29fb0,0xbb9b484e,0xbbb803fd,0xbbb5caf0,0xbbb28733,0xbb988b4d,0xbb525e60,0xbb1d3d5a,0xbac79a65,0xba939aa9,0xb9854add,0xba5bc80d,0xbaa19ef9,0xbad8c092,0xbb125b42,0xbb24849f,0xbb030c7d,0xbb0fc758,0xba7ec6f1, -0xb9d65596,0x39838fdd,0x3926eebb,0x39dde7e7,0xb9ca8297,0xba68b237,0xbaae2eaf,0xbacdd45e,0xbb499ca6,0xbb369e96,0xbb62b4b4,0xbb0402a8,0xbb032770,0xbb79abea,0xbb1b5dac,0xbb2dff40,0xbb15f792,0xbaf1e273,0xbaa59639,0xba52f5b2,0xb978bf5d,0x38e498d6,0x39a3ea11,0x39840681,0x39ace332, -0x3a0c7834,0x3a463a22,0x3a8ba5db,0x3a7391cc,0x3a754f9e,0x3a8df5b7,0x3a959aef,0x3a7a32d5,0x3a6a47c9,0x39239ded,0xb9ae89ce,0xba6dff4b,0x3982c369,0x39105535,0x3912c021,0x397783b2,0xb8e3b08f,0xb9a45f15,0xb9d3f986,0xba36f04f,0xba823f6c,0xbab490f5,0xbada3203,0xbb3f8bc8,0xbb2ee52e, -0x392f0f73,0x3afa2302,0x3aafb88f,0x3aad6919,0x3a7afc48,0x3a46a38f,0x39c27875,0x3a0e693f,0x3a4329db,0x3a9ae051,0x3a8bc348,0x3a979001,0x3ac99e01,0x3a151daa,0x39bcfe27,0x39b12230,0x3a4734e7,0x3a8a0ca5,0x3ab4eda5,0x3ab07ff6,0x3aac5e4e,0x3a96adc1,0x3aab2d66,0x3aac42ca,0x3ad73e46, -0x3a8880ff,0x3acba123,0x3b0f6f02,0x3b1d597a,0x3b1de542,0x3b08d70e,0x3b0ce1ee,0x3afe497c,0x3ad68665,0x3ad65100,0x3ac46bb9,0x3adb5634,0x3ac0423a,0x3b1aa80c,0x3b378524,0x3aef7bf8,0x3a1c82ab,0xba49201c,0xba2cc05c,0xb8e4ffea,0x3abbe0a2,0x3a80bba2,0x3aa5371f,0x3b1ecf48,0xb9bd2959, -0xbac417b2,0xbabfd63b,0xb9fcb90e,0x3a3f5e10,0x3adbec43,0x3ae6a3df,0x3ae18a80,0x3ab1886d,0x3af78edf,0x3adcd131,0x3a73892f,0x3aaf68c0,0x3ae95ce4,0x3b44dce5,0x3b9bf6f6,0x3ba3eb26,0x3b5e870c,0x3b675221,0x3b2a3747,0x3b080fd3,0x3b3b0a2b,0x3b3031e6,0x3b0e9587,0x3b11e73a,0x3ae83e27, -0x3b5317b4,0x3aa1616b,0xb991fdaa,0xbb4028e4,0xbb25de3c,0xbadaf655,0x3ad986e0,0x3ab017af,0x3aa96af0,0x3b70c945,0xbb272cd9,0xbb841e2e,0xbb57e791,0xbab81591,0x39c686b6,0x3b2892be,0x3b14fab6,0x3b152a83,0x3ac3b45b,0x3aec9a18,0x3ad07005,0x3a0a1a34,0x3abe65a1,0x3b1c449a,0x3b95c5a0, -0x3bd7d1a9,0x3be3b041,0x3b9f3280,0x3b95a719,0x3b80ca72,0x3b0029ba,0x3b5cefbc,0x3b552a25,0x3b08ae4d,0x3b1545d7,0x3b5e6bcf,0x3bc47ec1,0x3b4753f3,0xba38a72a,0xbb9e2aa5,0xbb9d5b92,0xbb6051b8,0x3ae2d7ad,0x3a6a5a7b,0x3a818b36,0x3bc0957c,0xbb860fc9,0xbbe0b7b3,0xbbed8b8d,0xbb7101f4, -0xba3b4673,0x3b1fb718,0x3b154487,0x3b0b4187,0x3a6e7c76,0x3b0fe85b,0x3adb38ba,0x3aa3da7d,0x3a967e32,0x3b527ed9,0x3b9ae555,0x3c21933d,0x3c2ffdec,0x3bd359e1,0x3bd99a89,0x3ba7c017,0x3b3c98ef,0x3ba1692f,0x3b82572a,0x3b2b09ba,0x3b47be0c,0x396cd1fb,0x3b6413da,0x3ace20da,0xbad1a243, -0xbbe670a7,0xbbfea4c7,0xbb9d17b5,0x3b042f9b,0x3af80207,0x3b175f5c,0x3bc6a595,0xbba9671f,0xbc1a385b,0xbbf6c4b1,0xbb9a98c1,0x394bbde3,0x3b6fa66c,0x3b46bd7d,0x3b2ead2e,0x3a6aa023,0x3ae19412,0x3b03a849,0x3b749ab4,0x3b765644,0x3b84d977,0x3b818148,0x3c1b52d6,0x3c36f7ad,0x3bcadf4d, -0x3bd619ed,0x3bb61091,0x3af36753,0x3b8c5b67,0x3b9e1e1e,0x3b2e2fc0,0x3b251022,0x3c4f5e29,0x3c6598d4,0x3b82028a,0x3b24af66,0x3bc65e42,0x3c921bd7,0x3c8babdc,0x3a7c1851,0x3abb6807,0xbbf8c2af,0xbc5173f0,0xbc587bab,0xbb6ab1a1,0x3c9a0537,0x3c313025,0x3c0d74e0,0x3c014171,0x3bdc4c27, -0x3bcf8ede,0x3bc4e0d5,0x3bc97aa2,0x3ba86d98,0x3ba4fc47,0x3b34382b,0x3b5cc01b,0x3c31d163,0x3aaa9541,0x3b20598f,0x3c408937,0x3c7bd641,0x3c4e496f,0x3b574af4,0x3ae5f018,0xbb76cd07,0xbc1afd96,0x3b6420ee,0xbc4a3ab0,0xbca43e0d,0x3b638042,0x3bb7e98c,0xbbfe09be,0xbb37c54b,0xbad19ff2, -0xbb5f6a57,0x3b8c2f00,0x3be1e0a6,0x3b704fc2,0x3a7c1a1e,0x3a257587,0x3bf59c42,0x3c173d02,0x3c3f9523,0x3c306aa5,0x3bb60fc1,0x3b8279d0,0x3b83afaf,0x3b0adf14,0x3b25d1f6,0x3b41637f,0x3c0474b5,0x3bfee9bc,0x3b844ca4,0x3c158e99,0x3c1fc147,0x3c239d1c,0x3b806d60,0x3b7e6098,0x3c05c985, -0x3ba68845,0x3b9c1a73,0x3c0366c8,0xba1f61ce,0xbc0f64cf,0xbc2fe2cd,0x3c171acc,0x3c46645d,0x3beaca16,0x3b2b14a0,0xbb6cc844,0xbbf4493e,0xbad7c5fc,0x3b4ce8a1,0x3bcefc56,0x3b699206,0x3b87c9bd,0x3b810170,0x3b635c07,0x3b60f7a5,0x3bdc3281,0x3ae23899,0xbb01bb7b,0x3921457a,0xba9764e0, -0xba10fb97,0xb9064326,0x39e29c2a,0x3b491053,0x3bb37c84,0x3b9d0135,0x3bb281c9,0x3bac2a65,0x3b329349,0x3b52b4ab,0x3ae47ca5,0x3bc484d0,0x3c02e3d5,0x3bbe0089,0xba2de9be,0x3bf7f2b2,0x3c30c177,0x3c41adbf,0x3c29d539,0x3c04ce71,0x3a3ffa17,0xbaf46dfc,0x3aa092b5,0xbb64774b,0xbaac61b4, -0x3bad64f5,0x3ab9e1d5,0x3a2e9c11,0xbb0fb337,0xbb172d81,0xbad26820,0x3b944943,0x38ffaefc,0xba01b4d2,0xb9f5937c,0xbaff6775,0xbb128e39,0xba01a473,0xbb0a75db,0x399d1203,0x3ba96ded,0x3b59353c,0x3b697c14,0x3b10b1e0,0x3b80cb12,0x3b5df0c2,0xbb0f8479,0x3b995d02,0x3bc346d6,0x3afd1517, -0x3bbd9443,0xbb46820f,0xb89ee2cc,0x3b11872a,0x3b97aada,0x3bc49634,0x3c164df0,0x3c3cff39,0x3c2b5b5a,0x3b4041a2,0xb787518a,0xb99cff43,0xbbb2ba9f,0xbb86dc5d,0xbb07a376,0x39bc1cd4,0x3aee06ea,0x3bace48e,0x3bb22852,0x3bbd4eab,0x3b879863,0x39f6a493,0xba03a3f6,0x3a8ea099,0x3aa6ff6b, -0x3a8a4741,0xb9812d1f,0x3b448129,0x3b3422a1,0x3a79b5e7,0x3a874a9d,0xb898aadf,0xbb96f5c1,0xbbce97f9,0xbbd148ff,0xbbe3f7fb,0xbbb5a273,0xbc18834b,0xbbb10c3f,0xbb9e0a80,0xbb6a53aa,0x3b0f6442,0xba60fc40,0xbbb3bec1,0xbc2b9186,0xbc405d3a,0xbc3493c2,0xbb610077,0xbb6c3159,0x39add805, -0x3a7bbad0,0x3ae090e8,0x3ab175ef,0x398f5b99,0xbab67692,0xba92fea8,0x3aac0636,0x3959320c,0xb83c219a,0xb5d867ce,0x3a81023b,0xb8ccbab4,0xbaf73e0f,0xbab056f2,0xbab97634,0xba987c91,0xbb29e581,0xbbae261e,0xbc2f8e39,0xbc67e33b,0xbc93797b,0xbc8b5efb,0xbc664988,0xbc28ccb6,0xbc1062ea, -0xbc0c0b2e,0xbc196748,0xbc40875a,0xbc2b16e1,0xbc0c0536,0xbbf4740e,0xbbc4a123,0xbb9b2eb2,0xbb7bec6b,0xbb876c3b,0xbb429e72,0xba40816d,0x3afcc238,0x3b276836,0x3a8d84ae,0x3a2fbb36,0x3a90a26d,0x3b6c47c0,0x3b4ac36f,0x3b4faba2,0x3b0e3ca7,0x3b242e7d,0x39e7b441,0xbb48ac14,0xbc09eaa3, -0xbc2123d4,0xbc1526e7,0xbc353da2,0xbc48f644,0xbc676047,0xbc766753,0xbc54c744,0xbbfdbf19,0xbc1e8057,0xbc4575c5,0xbc526796,0xbc43ec35,0xbc53ac1d,0xbc79263a,0xbc46bf5a,0xbc334f7e,0xbc15dc7d,0xbbef1713,0xbbb3f039,0xbb839c9c,0xb9e8147a,0x3b1044eb,0x3b8bb8bc,0x3b89898d,0x3b8a0431, -0x3b582a30,0x3b44530a,0x3b354c1e,0x3b6d29ab,0x3b7b62c2,0x3b4bd976,0x3b37f2dd,0x3accb6d1,0x3a78b459,0xba1b0ed5,0xbb280274,0xbbbbda61,0xbbe3637f,0xbbf6719c,0xbc012a66,0xbc0d2e12,0xbc28011e,0xbc2f7c42,0xbc34e1ea,0xbc3aa870,0xbc5807d0,0xbc5b6f09,0xbc490b77,0xbc3d5017,0xbc2520b8, -0xbc0d4083,0xbbde809b,0xbb8faec0,0xbb578e33,0xbb062260,0xb9f6a11e,0x3a841b71,0x3b4b9b19,0x3bb460a8,0x3b8e71a7,0x3b85a11a,0x3b7687d3,0x3b78b27a,0x3b92bd50,0x3b5e9c65,0x3b2cc284,0x3b021f99,0x3affa986,0x3a75596e,0x3a40d606,0x3a699aae,0xba170436,0xbb6ab717,0xbb855269,0xbbaab869, -0xbb72727a,0xbb7b254b,0xbba9ce7c,0xbc0cd00a,0xbc2a09ff,0xbc3f155b,0xbbc6750c,0xbbff7c35,0xbbda8055,0xbbb6f2f2,0xbb8e431f,0xbb76173e,0xbb296e36,0xbafc87ce,0xba890471,0xb9241a1d,0x3a1aad49,0x3ac67748,0x3b0447f0,0x3b40eb2e,0x3b269062,0x3b129e1e,0x3b0bef9a,0x3ad1111f,0x3aa0d955, -0x3ab7b7fb,0x363fd551,0x3971444a,0xb8d0825d,0x38b69eee,0xb9ed8727,0xba531b1d,0xbabbd24c,0xbacc6769,0xbae6e717,0xbb2b9f07,0xbb9bfe0a,0xbb9b905e,0xbbc42f3c,0xbba156ee,0xbb9c498b,0xbbd1cfbe,0xbb0a0a61,0xbb3def75,0xbb1d005f,0xbafe3965,0xbac4fb5e,0xbaa88a48,0xba6a86fe,0xb9fd5b2e, -0xb952fc31,0x3860ee80,0x39abb581,0x3a18419c,0x3a656298,0x3aa548a3,0x3a901ee7,0x3a93f0da,0x3a9ebd7f,0x3a9c26d9,0x3a8b7924,0x3aa062f7,0x3a50d777,0x3a32147a,0x3a060e65,0x39d2f245,0x39f481c8,0x3a73b0cf,0x3a805d74,0x39f19e00,0x38fe1a3e,0x3955066f,0x3930cd11,0xb7c9a717,0xba5674b9, -0xbab76fea,0xbac66d70,0xbafc0cc8,0x385b4ad6,0x3a69f0a7,0x3a4cc48f,0x3a725422,0x39be60de,0x38ef5e1b,0xb954c322,0xb8ceef94,0x38aed3a9,0x3a129441,0x39cbd3ae,0x39e8545f,0x3a45016e,0xb92cf1d6,0xb9d9e963,0xba12cad5,0xb8a86956,0x39889a47,0x3a409961,0x3a503d61,0x3a514385,0x3a1d6463, -0x3a35f102,0x3a2f2b7f,0x3a5f70e7,0x39b79653,0x3a6acb87,0x3ae4229f,0x3af1d343,0x3af140f9,0x3acfadc3,0x3ad4cfb5,0x3abb236e,0x3a8a7225,0x3a97278b,0x3a81cce1,0x3a9557fa,0x3a73be86,0x3b21af81,0x3b3f2f16,0x3a96574c,0xb986a2ae,0xbab69d04,0xbadf5257,0xba989790,0x3a3f6525,0x38a4cf65, -0x3903ae39,0x3a84c288,0xbaccf2c1,0xbb3c6de1,0xbb57f196,0xbb1345f2,0xba4abbac,0x3a55225d,0x3ab36172,0x3ac65c36,0x3a64c4d3,0x3a987341,0x3a334fdc,0xb9b9aeec,0x39f6e1c3,0x3a93ea84,0x3b34e35a,0x3b82824b,0x3b8cfab2,0x3b39e197,0x3b462782,0x3b0fa495,0x3abc82e3,0x3b2a1d34,0x3b1c9c39, -0x3adb6a09,0x3b10eaef,0x3afd3d73,0x3b82f23c,0x3a3e718a,0xba9493f9,0xbb587f7c,0xbb60d4b1,0xbb342dcd,0x3a7737e2,0x393d02ec,0x38b79d49,0x3addc426,0xbb78cd9a,0xbbbc1c8e,0xbbb9bfbb,0xbb758fa1,0xbac9a687,0x3ad695ab,0x3b09c5d0,0x3b1e8db0,0x3aae629c,0x3a9f08f8,0x3a0e6e0d,0xba9049e6, -0x39b98038,0x3ad88861,0x3b94c8fd,0x3bc59949,0x3bca54dc,0x3b9c2f9a,0x3b8c0b93,0x3b72c5bc,0x3ab8a8e3,0x3b605336,0x3b694c01,0x3af47197,0x3b139d29,0x3bac0948,0x3c053ae7,0x3b25ba06,0xbadd7ea0,0xbba00fb5,0xbbc6bbfa,0xbba30618,0x3ab0ef66,0xb9cb50d2,0xba2a7e54,0x3b44ad57,0xbbbe849c, -0xbc154748,0xbc3335f5,0xbbf2337f,0xbb664fcf,0x3ab2f296,0x3b39720e,0x3b4a2f07,0x3a9b7bb2,0x3adc0f93,0x39b25282,0xbaaf1765,0x38f9906c,0x3b37fb89,0x3bb86bd0,0x3c2129f9,0x3c30b932,0x3bd9ee9c,0x3bdab8de,0x3bb49b80,0x3b238902,0x3bc38b4f,0x3b9e3ba4,0x3b2b69cb,0x3b90440d,0x3a7f6857, -0x3bc31bb2,0x3ac02963,0xbb232639,0xbbdaa6cc,0xbc09e516,0xbbbd4eaa,0x3a9602b0,0x39955c67,0x3a20d5f7,0x3b43618a,0xbbd6c0f9,0xbc3b893c,0xbc3296e1,0xbc0bfa5e,0xbb347060,0x3b2e67ce,0x3b683529,0x3b7318eb,0x3abf401a,0x3acb9794,0x3a5077c1,0x3a08427e,0x3b1cbda2,0x3b7f71f9,0x3bacfc0e, -0x3c2b668b,0x3c451e73,0x3befd9bf,0x3bda5041,0x3bba6cf8,0x3b0c4de7,0x3bad43d6,0x3bd35549,0x3b44bb8e,0x3b2eb131,0x3c9fb72b,0x3c7fb96d,0x3b418655,0x39c808bb,0x3ac6b0fc,0x3c809387,0x3c75c60f,0xbb44ceb3,0x3b12dafd,0xbbe3c9de,0xbc85e09c,0xbc866e28,0xbc015b62,0x3c612505,0x3c1fd57e, -0x3c0e1a0e,0x3bed8331,0x3bcea307,0x3bb89481,0x3bce454d,0x3c0248f2,0x3bdc644f,0x3bc86eb1,0x3b3d9b19,0x3b1fbbb6,0x3c1565b5,0x3a39102f,0x3b590ef6,0x3c7e571b,0x3c6583c1,0x3c1ac761,0x3b697966,0xba4a510d,0xbba7e793,0xbbc8a82b,0x3c3132ae,0xbcc96c79,0xbc800d20,0x3b1305a9,0x3bc8a176, -0xbbda40b8,0x3a1bccb3,0x3a041532,0xbba0ff96,0x39942b8c,0x3b34517e,0x3bc8b52f,0x3a3369cb,0xba1c80fa,0x3b88a32c,0x3c03dc29,0x3c398910,0x3c289321,0x3b8d9fcb,0x3b2b92fc,0x3b7605dc,0x3ad46a07,0x3af14692,0x3b2e3751,0x3bb95ec0,0x3bbd70d8,0x3b6aa6a0,0x3c212ce1,0x3c2e21e5,0x3c175af8, -0x3b8383b0,0x3b8cff8e,0x3c1378a7,0x3b91c71d,0x3ba20389,0x3c7a36af,0xbc51ba35,0xbbe9eedf,0xbb00844f,0x3c4702df,0x3c580aaa,0x3c0296f3,0x3ba44f00,0xbb3fdc71,0xbc13b974,0xbbe67a4c,0xbb249ef6,0x3be54ebc,0x3ae6e9b4,0x3b714e60,0x3b8a0fe4,0x3b8c7b9c,0x3b80df79,0x3ba12370,0x3a534346, -0xbb337b5c,0x3a29c068,0xba61c33f,0xb8371e72,0x3a32c5fd,0xb91e45da,0x3b41b37c,0x3ba71f10,0x3ba6ae04,0x3bbc4c43,0x3b8f9bf0,0x3b64aa5b,0x3b68277b,0x3ab867a0,0x3bcbeeb7,0x3c05856e,0x3c180cea,0xb9fe256d,0x3c45aa0e,0x3c5ea969,0x3c5eeb7a,0x3c268a0c,0x3be7747b,0x3af1d606,0xb9feaed4, -0x3b7c0120,0xbbad6767,0xbb8e037c,0x3be02228,0xb8efa030,0x390d42bd,0xba812e58,0xb9d8c98b,0xba0c95b5,0x3b55fd91,0x39383fbc,0xb9ec0390,0x38bb7018,0xbac4cb7e,0xbad495e9,0x39c650cf,0xbafa3497,0x399b8ae7,0x3ba04065,0x3b58e69e,0x3b782dba,0x3b18f5aa,0x3b8fb092,0x3b6ef73a,0xbac6d120, -0x3b85dd25,0x3bcbb878,0x3b366ce7,0x3c246916,0xbbfcd364,0xbbaaa80e,0xb97816e8,0x3b8eedfd,0x3bd34eec,0x3c3d330c,0x3c6f4768,0x3c787ba9,0x3bb0aef3,0x3ad1f15b,0x3b994a77,0xbb9d7f6f,0xbbacaf5d,0xbb22e8e7,0x3a87a02f,0x3b14f4c4,0x3baeb2c1,0x3bbbbf8b,0x3bc244ac,0x3b8e67d8,0x3a15e93d, -0xb9f2d9c1,0x3a7966f2,0x37100ea9,0xb8ecd275,0xbaa416d3,0x3b43dce5,0x3b5b46b3,0x3ab1354d,0x3ae832e5,0x39927626,0xbb926e52,0xbbb43c48,0xbbbe1ecb,0xbbe6d951,0xbc13a072,0xbbb68ce6,0xbb840b36,0xbb08cc05,0xbb1282de,0x3ab32d26,0xbb018e37,0xbbfedaa2,0xbc75db99,0xbc3287af,0xbc14f692, -0xbb4201e4,0xbabd4016,0x3a2b4455,0x3ac04acc,0x39ab1b19,0xb92a0445,0xbaac9000,0xbae1f62d,0xba786151,0x3a3718f0,0x38280677,0xb934cafa,0xb96a27e7,0x3a2a61ad,0xb916c7ad,0xbb679d6f,0xbae597a6,0xbb124c16,0xbb255fb5,0xbb609a4d,0xbbacb647,0xbc182427,0xbc33cc69,0xbc685f4f,0xbc4258fb, -0xbc2aa5e9,0xbc12198c,0xbbea9951,0xbbe55bc8,0xbbe1ffc1,0xbbf70547,0xbbcefeba,0xbb91e35a,0xbb8cf4ba,0xbb4c67bb,0xbb32861c,0xbb574369,0xbb61e12c,0xbb087838,0x3a0f540d,0x3af503a7,0x3abcd19d,0xb9084341,0x39553bec,0x3a54070d,0x3b3f4a03,0x3b2bc2a5,0x3b2e2587,0x3b25f426,0x3ade544c, -0xba431a65,0xbba55d63,0xbc0faab6,0xbc1ec797,0xbc11d733,0xbc31f529,0xbc4f8584,0xbc7a58e4,0xbc845667,0xbc6d7754,0xbc379d1c,0xbc1d52ea,0xbc0f2b5f,0xbc15dcb1,0xbc146c7f,0xbc266cc6,0xbc44cfb3,0xbc2b314c,0xbc2bb72c,0xbc1caf5c,0xbbf4cc3a,0xbbbf85f6,0xbb9cc4c5,0xba8e987c,0x3ad3cd18, -0x3b919348,0x3b5167b8,0x3b0c73b9,0x39d46d3b,0x3a97ac5a,0x3accb0ed,0x3b1f9b16,0x3b4f824e,0x3b54d5c0,0x3b808d43,0x3ab2bf28,0xb94bb8f2,0xbb5469d9,0xbb9a4087,0xbbfc922b,0xbc195b1d,0xbc138925,0xbc10ae1d,0xbc0e53dc,0xbc25d1a6,0xbc20f2fa,0xbc1b6ede,0xbc08ae94,0xbc39c3c2,0xbc3592c5, -0xbc265de7,0xbc21ee36,0xbc15c11b,0xbc06d19f,0xbbe3eb7a,0xbbb5cee4,0xbb8ebbfe,0xbb358ca2,0xba91894e,0x39d19c33,0x3b126f4f,0x3ba11e42,0x3b750301,0x3b60380a,0x3b39c30f,0x3b576dce,0x3b77456d,0x3b7b86bf,0x3b60c715,0x3b3fd98c,0x3b4e907c,0x3a638a5f,0xba11a979,0xbb0abde5,0xbb5d43b7, -0xbbd9e148,0xbbeb35a1,0xbbf2e825,0xbbb0c9d6,0xbba2ccab,0xbbaf0361,0xbbea053b,0xbc035d27,0xbc2210cd,0xbc086cc7,0xbc1544cc,0xbbfbf7bf,0xbbcc3b88,0xbb8d5da2,0xbb55f8e9,0xbad195a1,0xb9deb21b,0x39e38446,0x3a593ea1,0x3abb1205,0x3b196c43,0x3b431ca8,0x3b7c522a,0x3b6df08c,0x3b60b702, -0x3b6f3bbc,0x3b5ef387,0x3b475caf,0x3b514a92,0x3aed0181,0x3a4ebfd3,0xb9afaeab,0xba55184c,0xbabd76d2,0xbb07d49c,0xbb2e1962,0xbb27c9e9,0xbb3d5b27,0xbb8bb48b,0xbbdb32bc,0xbbe766a3,0xbc0a7b06,0xbc0420f5,0xbc0279d7,0xbc0ee583,0xbb2a20e8,0xbb57cca1,0xbb3bbed9,0xbb1f2c5c,0xbb0bc1a6, -0xbb04ad98,0xbae346c3,0xbaba9a44,0xba9fe8b5,0xba585220,0xba018332,0xb99e1ede,0xb898c5aa,0x398c922d,0x39545ea6,0x399cec22,0x39a2621d,0x39921642,0x39a057a3,0x39fab39e,0x39a79d02,0x39cfed57,0x39f92dd3,0xb986fe36,0xb9a1b83b,0xb68b47a1,0xb88cfd68,0xba185006,0xba7616f4,0xba40110a, -0xba0e6674,0xba3168c4,0xbab4b4ca,0xbae9381b,0xbad4c8ed,0xbb157413,0xbaa09095,0xb6eb1be2,0x394f8062,0x39cd592b,0xb966ad8c,0xb9f7ab3e,0xba38e030,0xba2f240b,0xba00f3fd,0x38272c11,0xb9567de3,0xb9435021,0x385980ae,0xba2d5562,0xba719628,0xba9b01e9,0xba40f7cc,0xb9d8f9f8,0x38d0e2bb, -0x398e82c6,0x39a5d69b,0x38e16e48,0x391e9dba,0x38d0e318,0x3916dd8e,0xb97cb2c5,0x398cc8ef,0x3a9d25b6,0x3a9fc8ac,0x3a9ec56e,0x3a878537,0x3a8c6bae,0x3a654055,0x39d0ff9f,0x3a318c93,0x3a01ef41,0x3a0d8fa8,0x39e06b8b,0x3b2ba754,0x3b3f26cd,0x39ed529b,0xba830655,0xbaf2c40e,0xbb282173, -0xbb03914d,0x3991817c,0xba1befb7,0xba36a10e,0xb92fb2f6,0xbb0bab94,0xbb5f6002,0xbb8d2d68,0xbb619367,0xbb015b44,0xb8db42d8,0x3a73d9ae,0x3aa11f39,0x39c1968a,0x39b526f3,0xb9ad927f,0xbaabb5a6,0xb9b82940,0x39de4711,0x3b17829f,0x3b49d512,0x3b650c5b,0x3b0f85c6,0x3b2519b6,0x3af5287c, -0x3a430728,0x3b13b8d7,0x3afb1583,0x3a7adac8,0x3afc5948,0x3b04a17c,0x3b7eee90,0xb7a65b1e,0xbb013432,0xbb69ee14,0xbb88dc6a,0xbb6b0916,0x3a17fa5a,0xba5f1cd9,0xba525dd6,0x384d8b4a,0xbb7d26aa,0xbbc3b3dd,0xbbddf39c,0xbba99c82,0xbb45dfe5,0x39e1d987,0x3aec9b7a,0x3b1b215c,0x3a8faa67, -0x3a0c75c3,0xb9f77604,0xbb0704cd,0xba3b1b85,0x3a4b0ed4,0x3b89c22c,0x3ba8c403,0x3ba81cd9,0x3b92f79c,0x3b81b829,0x3b5f78a6,0x3a266359,0x3b56343e,0x3b669a19,0x3a9c74c7,0x3b006d8e,0x3bde3951,0x3c1afd90,0x3ad300b3,0xbb21671a,0xbb9ae3cf,0xbbe69962,0xbbc43b84,0x3ac29106,0xbaa20832, -0xbace299a,0x3a08dd70,0xbbbfec9d,0xbc154829,0xbc4b5215,0xbc1d8549,0xbbb80e06,0xb8c8a0c3,0x3b488e9d,0x3b70d1ad,0x3aa4c5fc,0x3a5651c1,0xbaa046fd,0xbb464925,0xba88d8ea,0x3b016ad0,0x3bc0c889,0x3c17c959,0x3c2a25fa,0x3bd04ad3,0x3bdacfe7,0x3bbfbeff,0x3b05eb94,0x3bd65f14,0x3ba793aa, -0x3b050985,0x3b9fd5c8,0x3ae6a6e0,0x3be07f21,0x39e8dfe8,0xbb581e95,0xbbd1314a,0xbc0ee538,0xbbd483fd,0x3a6b9b4c,0xba9c825a,0xba298ac1,0x3a359a14,0xbbc1aeee,0xbc2fe976,0xbc43efdc,0xbc2c7c4e,0xbba46cd8,0x3a82d555,0x3b779a84,0x3b901a2a,0x3ae2943b,0x3a9841d9,0xb9f808c5,0xbaf9076f, -0x3a545a45,0x3b5f5277,0x3bc67ed4,0x3c331176,0x3c4dd631,0x3c046c69,0x3bdb52e8,0x3bba4d9c,0x3b041de4,0x3bc62256,0x3bf44112,0x3b260b8c,0x3b317b6f,0x3cc5c4d8,0x3c8233bd,0x3b4c8ba3,0xba8e0ef0,0xbb89bd1f,0x3c464d21,0x3c43b1fd,0xbbc5ac0f,0x3b2e718f,0xbbc564c5,0xbc98d0ce,0xbc8edcc9, -0xbc2dc11a,0x3bdd0138,0x3bfe224a,0x3c044ec7,0x3bc13675,0x3bc2fc3d,0x3bac2e59,0x3bbd8aa8,0x3c0ccf8c,0x3bf1385f,0x3bd7b769,0x3b4d4711,0x3ade41f0,0x3bee147b,0xb927d064,0x3b73763e,0x3c9a6829,0x3c434a24,0x3bcdc283,0x3b636acc,0xbb873bc7,0xbbdc9a2f,0xbb37651e,0x3c884d74,0xbd02c01b, -0xbc4ea77d,0xbb13ca43,0x3b8787d4,0xbb751515,0x3b60d311,0x3b00de23,0xbbe7afb1,0xbb91e905,0xbabb0201,0x3c00e83b,0x3a5b9136,0xba878163,0x3b11d6d8,0x3bd5b6fc,0x3c2348e7,0x3c14427b,0x3b4f5c94,0x3accb145,0x3b557998,0x3acd35de,0x3ae05559,0x3b281a61,0x3b73a78d,0x3b83b3c3,0x3b5d6851, -0x3c22c2bd,0x3c31c4d7,0x3c0501df,0x3b8989df,0x3b8c2b78,0x3bfacea7,0x3b9a8961,0x3bc05758,0x3c9b3ea7,0xbca900df,0xbb56fecd,0x3bb65589,0x3c520986,0x3c4f32e6,0x3c1d8ce6,0x3c057723,0x38781074,0xbc1a18ac,0xbc2c761c,0xbbe42d93,0x3be9453d,0x398a8ec8,0x3b42111e,0x3bbe0335,0x3ba77fd3, -0x3b860845,0x3b10c6fd,0x3896bc45,0xbb471b79,0x39ab3707,0xb95315d1,0x3a0def99,0x3aad439e,0xb9939fc7,0x3b3f5164,0x3b97af9c,0x3ba7fd70,0x3bb5ee52,0x3b628aaa,0x3b85830b,0x3b869a9e,0x3ace9843,0x3bdc15b2,0x3c0b1b24,0x3c3bbe11,0x3a888c5c,0x3c7460b6,0x3c748564,0x3c5d4a95,0x3c19f08e, -0x3bd8a99f,0x3bac4f42,0x3b7633a1,0x3b7412d6,0xbb9aaf1e,0xbba15462,0x3bc8a268,0xba01ec65,0x3a133d42,0x3abde769,0x3b1b4679,0x3a9b1bb7,0x3a7c1845,0x38434a4c,0xba217657,0xb7d2e512,0xba8ab16e,0xba88488f,0x3a09623e,0xbab47b8d,0x39f9b721,0x3b8a6e75,0x3b3d8e3b,0x3b66b51a,0x3b2bafa0, -0x3b917f8f,0x3b879574,0x3a1b9b02,0x3b876231,0x3bcd3c08,0x3b851d05,0x3c53ad44,0xbc3fa497,0xbc1962c2,0xbb2c8bc8,0x3b84e8ef,0x3bdbe858,0x3c4d9522,0x3c81367f,0x3c8b7d31,0x3c01a754,0x3b8fccd0,0x3c005c20,0xbb327bd3,0xbba10f74,0xbb2c2448,0x3adf32b6,0x3b48680d,0x3ba42cb6,0x3b9b99c9, -0x3b93d9af,0x3b79d463,0x3a410ed9,0xb93c8b65,0x395c9014,0xba5d5a63,0xba663610,0xbb04ef2e,0x3b1e9dea,0x3b4b19dc,0x3ace0d13,0x3ae2e4aa,0x38ddd032,0xbb75c4e3,0xbb84744c,0xbb8421db,0xbbb945c3,0xbc316070,0xbb0c330c,0xbb028148,0xb8ecb3f5,0xbb1a1fb2,0xb989c087,0xbb2f9c67,0xbc06c237, -0xbc83405f,0xbc0add84,0xbbd09984,0xbb35599b,0x3a1c2c8d,0x3acad428,0x3b091e0e,0x39b0641a,0xb75d9f71,0xbaba8b07,0xb9ee45a5,0x39d9e3db,0x3a090599,0x394513a9,0x37128b4c,0x38923faf,0x39aaed70,0xb9e823b1,0xbb8c9d11,0xbb3716f4,0xbb6fbb21,0xbb80249a,0xbb79f052,0xbb9129b2,0xbbdb4af5, -0xbbebe327,0xbc24fe10,0xbc1929ad,0xbbdd852c,0xbbef8172,0xbbbe234a,0xbba46770,0xbb7e0aec,0xbb27ae8e,0xbb43cb57,0xbaae7afa,0xb9d0fbbf,0xbaec5266,0xbaf60dc5,0xbb02e543,0xbafe9d9c,0xb9c61d38,0x3ae5e38c,0x3a956763,0x396f0627,0xba5d8496,0x37fbe35a,0x3a287472,0x3b0bc51e,0x3afcbeaf, -0x3b047850,0x3b431437,0x3994d385,0xbb175460,0xbbcc55b5,0xbc083b41,0xbc1561d2,0xbc10d331,0xbc314ce1,0xbc546513,0xbc81c4a9,0xbc872348,0xbc77088c,0xbc5badb5,0xbc123ebe,0xbbc218e9,0xbbc4954d,0xbbc345aa,0xbbe67574,0xbbf87e9a,0xbc0141ad,0xbc114b9e,0xbc08c0e9,0xbbe419ce,0xbbb1ad92, -0xbb827d8c,0xba9a5698,0x3a48ea39,0x3b4fdc3d,0x3ae99c48,0x3a1f9a0f,0xb9df996d,0x3a12a8ef,0x3aa8c11a,0x3b077d38,0x3b3489ac,0x3b4f83f9,0x3b86b0f2,0x3a065675,0xbb062a17,0xbbca18cf,0xbbe60ab4,0xbc199306,0xbc3636b8,0xbc29e1e5,0xbc24a4e5,0xbc214ae0,0xbc2a692c,0xbc1ab836,0xbc094a31, -0xbbc73fdb,0xbc1ce8ee,0xbc08660f,0xbbfbac6d,0xbbfc3bcf,0xbbfba8ad,0xbbe8a75c,0xbbd2e513,0xbbcf6300,0xbb96c6e6,0xbb43597f,0xbaca30d1,0xba6af449,0x3913e37d,0x3b043caa,0x3ae41420,0x3af81556,0x3acc8c68,0x3b0f7588,0x3b2f02c0,0x3b6021e7,0x3b4c9a38,0x3b2fd6ea,0x3b404027,0xb88e26be, -0xbb1cd06e,0xbbb0a240,0xbbc7ba4e,0xbc1051dc,0xbc1679f3,0xbc116052,0xbbeb57ce,0xbbdb136a,0xbbc5944e,0xbbcf0069,0xbbc8f1b6,0xbc043b41,0xbc13549d,0xbc06853e,0xbbebcf36,0xbbbe6256,0xbb7b21d4,0xbb47eb3a,0xbabc88c8,0xb90b4ff7,0xb477f23c,0xb97a3a7f,0x388a8c06,0x3a4b7380,0x3ab23d5c, -0x3af57cf7,0x3ade0cdd,0x3ace471d,0x3af08a87,0x3af0811b,0x3ac03e2c,0x3ae5948e,0x3aba5163,0xb9169a6f,0xbab35c2d,0xbb0b20e9,0xbb152b59,0xbb2b3392,0xbb57cfc2,0xbb52e266,0xbb7d9606,0xbbb28506,0xbbef1ddb,0xbc0adee2,0xbc18ca38,0xbc1b37da,0xbc1f7d20,0xbc11a689,0xbb3de9df,0xbb55da35, -0xbb48d909,0xbb312b17,0xbb2664b0,0xbb22e4ea,0xbb17483f,0xbb0b5754,0xbafc8bed,0xbac6573c,0xbaab417d,0xbaa745ce,0xbaa103df,0xba876179,0xba6e8b81,0xba43c448,0xba3e61aa,0xba330f46,0xba06ac55,0xba02bb71,0xb9d4b3d9,0xb991d8fd,0xb8bfef3f,0xba86d948,0xbaa012a3,0xbaa39a46,0xbac06c03, -0xbaf083a3,0xbb0b8bd3,0xbb01dd98,0xbae374b8,0xbae63fd7,0xbaffd2e3,0xbb066bce,0xbb0b7d93,0xbb32ba6e,0xbb17b2ad,0xba4cfbf5,0xb9c8a675,0xb9161248,0xba42fd08,0xba7dc319,0xba904bb3,0xba951168,0xba7ca9ae,0xb9ca9263,0xba305d37,0xba308643,0xb9f60194,0xba749d25,0xba9b235b,0xbaca9b96, -0xba9d31ca,0xba7be62b,0xba0ab715,0xb978cd19,0xb916f3d1,0xb9a914c9,0xb9c31aec,0xb9e8b29e,0xb9ed181b,0xba4cb18d,0xb9ba5721,0x3a225c02,0x3a122335,0x3a10e4bb,0x39f3fc56,0x3a005c13,0x399b75e8,0xb98cd9ab,0x391e7165,0xb800a9e2,0xb9309457,0xb919960f,0x3b160ffb,0x3b1e91f0,0xb9568676, -0xbacc88b3,0xbb0a9188,0xbb523844,0xbb306989,0xb9547b31,0xba9b9cb7,0xbaa59d8a,0xba735c05,0xbb0bb80c,0xbb549a76,0xbb95b13b,0xbb8402b9,0xbb390805,0xba8b77e6,0x39ba0738,0x3a4a594c,0xb9249edf,0xba04d068,0xbaa59f11,0xbb02354b,0xba953721,0xb999bac0,0x3ae50ff7,0x3b057bd7,0x3b24c180, -0x3ac8bca3,0x3b01892c,0x3ad13220,0x388cfd7c,0x3ae9c074,0x3aab6613,0x348ac339,0x3ab4ee8b,0x3ad0b70f,0x3b4312d3,0xba616132,0xbb2ef777,0xbb6cdfdc,0xbb9a965c,0xbb8a8d7a,0x397a1deb,0xbacfe491,0xbaa8695d,0xba51153d,0xbb421771,0xbba5361d,0xbbde944e,0xbbbc33dd,0xbb84ce67,0xba8c6cee, -0x3a96fa39,0x3b008da0,0x3a33c18d,0xb9703e31,0xbab08132,0xbb2902a2,0xbadf63e7,0xb93ac3d3,0x3b757a63,0x3b821562,0x3b7e5e0f,0x3b842c01,0x3b6ad6ca,0x3b44ce4a,0xb9393f3b,0x3b3f7fe2,0x3b4a10fe,0xb88bcf22,0x3aa4f945,0x3bdecf14,0x3c113472,0x3a2b3aa5,0xbb4528ad,0xbb8bdab6,0xbbfa46bb, -0xbbdcd5ae,0x3a9f12da,0xbb01265f,0xbafdb3bc,0xba41a9c3,0xbb932610,0xbbf246e1,0xbc449582,0xbc294fe8,0xbbe42f13,0xbaf27ba2,0x3b284406,0x3b68e7b7,0x3a805df9,0xb972e5ba,0xbb2d55f3,0xbb7db91e,0xbb0e85a5,0x3a4e4b83,0x3bbc6e04,0x3c03c88a,0x3c19a911,0x3bbc756b,0x3bda0355,0x3bc6f12f, -0x3ac7e84a,0x3bd9f716,0x3ba0deb6,0x3a63558d,0x3b91c635,0x3ac62850,0x3bbaa2d1,0xba835dfd,0xbb83df63,0xbbbe15d9,0xbc0e7aa7,0xbbe4090e,0x3a3a7dae,0xbb0aac05,0xba94498f,0xb66ae558,0xbb66842a,0xbc03e45b,0xbc39d529,0xbc338cfc,0xbbda763e,0xbab52275,0x3b4f635d,0x3b8b62b9,0x3ad2e664, -0x39bc045b,0xbacf605e,0xbb5a0642,0xba50fe4f,0x3b255924,0x3bcf8afc,0x3c30e35b,0x3c4c1225,0x3c08dfa7,0x3bd926ba,0x3bb8d70f,0x3acf9a96,0x3bdaf57f,0x3c015296,0x3a83bc63,0x3b065fc7,0x3cd8d174,0x3c81755e,0x3b73cc45,0xbb2fa9a0,0xbc2277c6,0x3bef9002,0x3c011a16,0xbc094631,0x3b16d6fc, -0xbb9e8469,0xbc982c90,0xbc8c48e3,0xbc4a3e23,0x39d14193,0x3bb5a664,0x3beed0d1,0x3b9146ce,0x3bb3de49,0x3ba55595,0x3bae5cf9,0x3c04665e,0x3be0ce5b,0x3bc24aa8,0x3b511190,0x3a959a80,0x3bab8677,0xba83233a,0x3b6fe7c3,0x3ca8fc8d,0x3c1b9b77,0x3b5dd9de,0x3b2a535b,0xbc05ac3c,0xbc135979, -0xb958bafa,0x3ca468b9,0xbd0cc7c7,0xbc4e7cc7,0xbc118aab,0x3a1f7007,0x3964de33,0x3b9b125a,0x3b1e55d9,0xbbd3b9be,0xbbe9a643,0xbb8c042d,0x3c11d36c,0x3a81bb69,0xba8971dd,0x3a5d3d61,0x3ba81770,0x3c01998c,0x3bce0b93,0x3af5c7f9,0x3a3dccea,0x3b25002a,0x3b037b6e,0x3b11ce07,0x3b335456, -0x3b1f5a5c,0x3b37d9ea,0x3b73ec5a,0x3c1f6595,0x3c2db068,0x3bdf36b3,0x3b8f1e3d,0x3b8289c3,0x3bb6bf31,0x3bbc7522,0x3be58ab0,0x3c942eb2,0xbcc1b884,0x3a7f52e1,0x3c1fbe69,0x3c4e5a52,0x3c3943df,0x3c28d9d3,0x3c3e0abb,0x3b9066e7,0xbc29e1a4,0xbc418273,0xbc1c319d,0x3bb97285,0xb9825581, -0x3b423f43,0x3bd2d894,0x3bd63ea7,0x3ba32b62,0x38fb3f80,0xba083d26,0xbb44ca2c,0xba3dcbb5,0xb7b60f8a,0x3a887524,0x3ae71d8f,0x38c758a8,0x3b49314c,0x3b88286e,0x3ba18564,0x3ba4149c,0x3b32033a,0x3b8f8349,0x3b9648e7,0x3b41d067,0x3be4c8cb,0x3c050a58,0x3c2e60a8,0x3b4bad8a,0x3c81da33, -0x3c754e26,0x3c43096d,0x3c00b861,0x3bac86fe,0x3c1aff95,0x3c0d06e5,0xb7b89638,0xbb41eb3c,0xbb80d44e,0x3b4b17a6,0x39e6b0c5,0x3b14947e,0x3b703195,0x3ba7c228,0x3b6b99c0,0xb995231e,0xb89cd029,0xba67bfe1,0xba3e323f,0xbaa3eb25,0xba544233,0xb8c066d3,0xba4fcfd4,0x3a41e078,0x3b5ae1bf, -0x3b0985ae,0x3b311962,0x3b3c5c33,0x3b861b16,0x3b9834db,0x3b6f1f86,0x3b6fc968,0x3ba6c468,0x3ba0029c,0x3c6566b6,0xbc703826,0xbc351d94,0xbba4c0f4,0x3b31e65c,0x3bdb022b,0x3c32df59,0x3c636c53,0x3c7ddd16,0x3c2f5daf,0x3c0b1712,0x3c0e8045,0x3a116987,0xbb3dce0c,0xbb17ceea,0x3b0c23b5, -0x3b7b6cda,0x3b9a6d37,0x3b66a363,0x3b2f51d6,0x3b33a1f7,0x3a5fb68c,0x384ed09f,0xba6e993f,0xbae0c9a0,0xbac72755,0xbb1a353a,0x3aaade9e,0x3b05a25e,0x3aaaf830,0x3a79d3f9,0xba1a1caa,0xbb464fce,0xbb33a5de,0xbb22685e,0xbb7c6b7f,0xbc42bf4e,0x3aa69d31,0x3aeeed32,0x3a536669,0xbb66d7b5, -0xba831583,0xbb38b19c,0xbbd32bbc,0xbc4939f0,0xbbab43fd,0xbb88eb0c,0xbb6d6c00,0x3a7f9762,0x3af6d85a,0x3b21a12e,0x3a8c9611,0x3a3e9086,0xb98df976,0x3ac3ed51,0x3af99ad4,0x3a17cc4d,0x3946894c,0x386556f5,0x3a848e5a,0xb9c1341e,0xbab72d6c,0xbb87efa5,0xbb847473,0xbb9ef145,0xbb914e24, -0xbb5a03f5,0xbb401800,0xbb75ed34,0xbb6cd19c,0xbbcd8966,0xbbd057a3,0xbb3e8fea,0xbbdc810c,0xbba2013b,0xbb5e6ca9,0xbabbf9bc,0x396ab1ee,0xba4cb881,0x39eb6d42,0x3b026605,0xba9084a1,0xba86f4b7,0xb9606a23,0xb92fb182,0x3a991ef3,0x3b1e2500,0x395c8e16,0xb9aab49b,0xba478e72,0x3990f37a, -0x3a80c14e,0x3ad73ff1,0x3aef0cd0,0x3ad497a3,0x3b286bed,0xbaaabc92,0xbb744cd5,0xbbde3cfc,0xbbf22c67,0xbc092dbd,0xbc105d1c,0xbc30457d,0xbc52db98,0xbc7bc094,0xbc86c18f,0xbc7c08a6,0xbc67f042,0xbc12fbe7,0xbb7ccad2,0xbb6b6800,0xbb554097,0xbb889a8a,0xbb8450ef,0xbba445c9,0xbbd1be60, -0xbbcea923,0xbbc24fa9,0xbb9622fd,0xbb2b8730,0xba65f76b,0x392cd734,0x3aef51a7,0x3a0f9f7b,0xb98ede5f,0xb9410c31,0x3a35f0c3,0x3abf6141,0x3b07501c,0x3b24d6da,0x3b3143ac,0x3b524ce5,0xba4c116e,0xbb85255c,0xbc0a4ab9,0xbc12cad0,0xbc2a4aac,0xbc434c07,0xbc378c3e,0xbc343fb9,0xbc36d186, -0xbc31e192,0xbc1c6126,0xbbf5cfbf,0xbb9bab96,0xbbede488,0xbbb07060,0xbbb001e3,0xbbb76617,0xbbc724ef,0xbbbd5e38,0xbbb422a5,0xbbc64f0a,0xbb842ddf,0xbb383761,0xbb0127c3,0xbb086b13,0xbaf0a234,0xba89e67a,0xba010099,0x38080abc,0x3937fda8,0x3a2f5003,0x3a94316c,0x3b04cf9d,0x3ad969d8, -0x3aa7d597,0x3ac68fb6,0xbaceda22,0xbb8d7fe0,0xbc011f80,0xbc03f7d1,0xbc1f038b,0xbc23a818,0xbc19da29,0xbc0952f2,0xbc032f9b,0xbbcd876b,0xbbadbdef,0xbb8d8a7a,0xbbc367c9,0xbbfd1bf7,0xbbc81d01,0xbbbbef3f,0xbb9b7dbf,0xbb598ebc,0xbb4e61b9,0xbb0b7249,0xbab2d82e,0xbadc11df,0xbb03ede5, -0xbadbc3dc,0xba9081f3,0xba0990ce,0xb989352f,0xba1b5bc5,0xba57921c,0xba640dd1,0xba5d7064,0xba9cfa08,0xba8e5508,0xba29bbc6,0xbb06df44,0xbb420c16,0xbb65612b,0xbb438775,0xbb348f26,0xbb617f1e,0xbb5be888,0xbb87f814,0xbbb34b5e,0xbbcce8b3,0xbc03838e,0xbc0838d4,0xbc12077b,0xbc19b772, -0xbbf22a1c,0xbb4ec9b3,0xbb5b3bfb,0xbb5dc167,0xbb4fa015,0xbb4ac9be,0xbb4ae4d6,0xbb4357eb,0xbb3d70fa,0xbb2befa4,0xbb17f05f,0xbb15a30c,0xbb1a66f1,0xbb1e8baf,0xbb162338,0xbb084053,0xbaf78a65,0xbaf050c4,0xbae5e715,0xbaceb632,0xbadcd80d,0xbabb3d9b,0xbaa2f9f0,0xba6cde8a,0xbb086a80, -0xbb15328a,0xbb18972d,0xbb2f71e6,0xbb39038e,0xbb44b626,0xbb4484c7,0xbb35f07d,0xbb2d386d,0xbb1fe3c3,0xbb1e27aa,0xbb1c7b69,0xbb446344,0xbb7bec6c,0xbaad61c6,0xba4f83ce,0xba1bc3b5,0xba93fbf0,0xbaaa1f6b,0xbab0a975,0xbabc9b1b,0xbaa8673d,0xba3a2bdf,0xba835f4e,0xba8316e8,0xba4fc155, -0xba86349f,0xbaa4ad0a,0xbaddf562,0xbac0c6cd,0xbaaefca9,0xba852b89,0xba30c4cd,0xba0d4d5e,0xba274a00,0xba409e6a,0xba53e303,0xba609d0f,0xba95dd73,0xba4a4052,0x3947d9b2,0x37f77119,0x37e84f6b,0x3847ba10,0x384272b5,0xb90bd444,0xba4143fd,0xb9685a68,0xb9e9843a,0xba4ca515,0xba1a02ee, -0x3ae8e5c4,0x3ae15d85,0xba48580d,0xbb00d1c8,0xbb13c50c,0xbb60f937,0xbb42f819,0xba10b0f0,0xbaccf39f,0xbaccd7a8,0xbaa68287,0xbade16d1,0xbb2a99fa,0xbb8cc891,0xbb878018,0xbb5a2b2d,0xbaf0f407,0xb9a9ac86,0x392a85fb,0xba179ad3,0xba93650b,0xbaf75c64,0xbb1cb617,0xbadc5483,0xba5b1d35, -0x3aaac528,0x3a86801b,0x3ac96825,0x3a8ed770,0x3acbb5c2,0x3ab5f6b2,0xb9f3601d,0x3aabdf93,0x3a43488f,0xba69f9f8,0x3a61db2a,0x3a84cc18,0x3af75787,0xbadc5321,0xbb502376,0xbb656608,0xbb9e2f01,0xbb90db3b,0xb909fbe1,0xbb0852a0,0xbac31e6a,0xba850854,0xbacfdac8,0xbb66cc5b,0xbbca07e1, -0xbbbb8298,0xbb997066,0xbb1a62ba,0x3948b5f5,0x3a9bdfc8,0x39a0c334,0xba56201b,0xbaf875f9,0xbb3bc753,0xbb1b6c1d,0xba77a289,0x3b5f9b57,0x3b31047f,0x3b2b311c,0x3b7160d2,0x3b531f00,0x3b2cd50c,0xba403044,0x3b22c515,0x3b2022f8,0xbac231c0,0x3a06c395,0x3bc6fae1,0x3bf4993d,0xb9c75a35, -0xbb6d30fd,0xbb7bdd1a,0xbbf3e1f4,0xbbd7ba72,0x3a6e5b0a,0xbb1dab70,0xbaf76efe,0xba85d049,0xbb12e230,0xbb9ad35e,0xbc2b74d6,0xbc244ab9,0xbbfd17b6,0xbb59edf7,0x3aae5bd4,0x3b2fe1ed,0x3a242b67,0xba8d148c,0xbb678545,0xbb87ac86,0xbb4634cf,0xb9cee78e,0x3bb734c1,0x3bcfe2b7,0x3c0084e8, -0x3baad406,0x3bda83d3,0x3bcbdb78,0x3a726f16,0x3bd0104e,0x3b8f4252,0xba1f2f7f,0x3b763eb6,0x3a6ab069,0x3b84df70,0xbb2c65a7,0xbb9b2853,0xbba597d6,0xbc046922,0xbbe48e9c,0x3991e000,0xbb351c1a,0xbaa27c1e,0x39b46011,0xb9cff45f,0xbb96aab4,0xbc229f92,0xbc2c5c3a,0xbbfe354f,0xbb6604d0, -0x3ae49b5b,0x3b566011,0x3ab8958c,0xb9e2e7d8,0xbb0ea326,0xbb7ea6ff,0xbb08caf4,0x3ab778f6,0x3bd069fa,0x3c22cd98,0x3c3cb9f9,0x3c070299,0x3bd935c8,0x3bbcb874,0x3a97ff49,0x3be72810,0x3bf8b793,0xbaa90a01,0x3a8af5de,0x3ce01dec,0x3c748b02,0x3b794cb8,0xbb8f3d93,0xbc661b4a,0x3b357b07, -0x3b9bf3ef,0xbc090324,0x3b2ee6a3,0xbb4c135f,0xbc8b1761,0xbc835f2a,0xbc5441e0,0xbb8c7cb4,0x3b634ab3,0x3bcc65c8,0x3b552a4d,0x3b981a86,0x3b95332c,0x3babcdc7,0x3be32c9d,0x3bb57aa2,0x3b912a33,0x3b52f7f5,0x3a7f38e4,0x3b53cd18,0xbab5e89b,0x3b5d6adc,0x3ca53098,0x3bedf9da,0x3a8a1468, -0x3a4f9e58,0xbc45b3c9,0xbc319df4,0x3b258723,0x3cb514f5,0xbd0a999e,0xbc76f7af,0xbc6c25a3,0xbb180ad0,0x3ba6a63f,0x3b9b7d2e,0x3aaf284b,0xbb976f50,0xbc06e06b,0xbbb9d670,0x3c227fa7,0x3a3ac301,0xbac0a863,0xb78e22c4,0x3b723c0f,0x3bbf4261,0x3b5f4e11,0x3a73eea3,0x397c223d,0x3ad1da0b, -0x3b2a0dc1,0x3b4489ea,0x3b3f1c08,0x3aca13d8,0x3b047d4f,0x3b914166,0x3c15d5a5,0x3c20cf36,0x3bb62cc7,0x3b84b936,0x3b631bf2,0x3b93ee63,0x3bf6369e,0x3c03f151,0x3c560492,0xbcc47b85,0x3b8b7ca4,0x3c355d3f,0x3c43f696,0x3c19fec1,0x3c0fbe7e,0x3c64dccd,0x3c1012b7,0xbc2eb5f8,0xbc2f0bd2, -0xbc1f31e3,0x3b54d50e,0xb90184eb,0x3b6c1eb7,0x3bd5881b,0x3bf27a39,0x3bb68d70,0xba337f2b,0xba23e7aa,0xbb11ef39,0xbac31f71,0xb9a54c6e,0x3aa5ac06,0x3af67185,0x3a5df87a,0x3b5d4ffd,0x3b6970c5,0x3b969b2f,0x3b8b2015,0x3b0819c8,0x3b933790,0x3ba1e83a,0x3bac62e6,0x3bd88eac,0x3bd1da3d, -0x3bf0e3be,0x3b97f95a,0x3c77b8a6,0x3c5ea519,0x3c132abc,0x3bb73664,0x3b014ab3,0x3c4b647a,0x3c4e2bd4,0xbb7b41f8,0xb9b84865,0xbb0a455b,0xb8127fed,0x3afb3834,0x3b8fd35b,0x3bc6a014,0x3bcd1713,0x3b96d6f4,0xba0042a7,0xb830f5e4,0xba63eb00,0xbaaa3db6,0xbad0df6e,0xba51d486,0xba65f32c, -0xb959483b,0x3a78e75b,0x3b0f5299,0x3a941af6,0x3ad38c81,0x3b35ace1,0x3b732730,0x3ba3553c,0x3bd1a6df,0x3b10b737,0x3b28a485,0x3b9a1517,0x3c5a33d4,0xbc830487,0xbc315b8d,0xbbda605f,0x3a5ed671,0x3bcd8812,0x3be58659,0x3c10b6a1,0x3c309889,0x3c47dcee,0x3c3f97a2,0x3c132697,0x3b6bc675, -0xba303ac2,0xba03221e,0x3b1038f4,0x3b8610b5,0x3b8de44f,0x3b30bf69,0x3aaa0b5c,0x3aba7a3d,0x3a6e5edd,0x38b9355d,0xbb002f60,0xbb2f539f,0xbb0de91e,0xbb14bed0,0xb936801b,0x39f9b849,0x3a2762ec,0xb9a13ecc,0xbad0a47f,0xbb2d9194,0xbae6e61b,0xbab9baf9,0xbb08c49e,0xbc4a7674,0x3b9e1cec, -0x3bbfc7ed,0x3b0aa08f,0xbb563132,0xba8ac4b4,0xbb0600a0,0xbb3f97ef,0xbba51c16,0xbb267f9b,0xbb4deef1,0xbb98649f,0x39e28cee,0x3afb3252,0x3af2083b,0x3ad1a060,0x3ab018c7,0x3a671bf3,0x3b331898,0x3b27623f,0x3a1e574a,0x3888fa19,0xb81a8a99,0x3aee0a48,0xba8fc476,0xbb1e3939,0xbb6a3a01, -0xbb9f3df2,0xbbaad3f9,0xbb720fc3,0xbb0b9815,0xbaa7c9c0,0xba834400,0xb9ea3e0c,0xbb1f7ded,0xbae24fc7,0x3a974b9d,0xbbecb138,0xbb8f2a6a,0xbb2916d2,0xb9a2af89,0x39843c5f,0x39293c29,0x3a56a022,0x3b082875,0xb9a4f600,0x38e7ec6f,0x3a843c92,0x3a763e7c,0x3ae46aa3,0x3b2600bb,0xb93c2c2f, -0xb9c0ee05,0x399f2381,0x3a654d18,0x3ac9e8b0,0x3aca7373,0x3b1957c9,0x3abe2f07,0x3a895386,0xbb30ec7d,0xbb971d8c,0xbbd936cc,0xbbcde0bc,0xbbf5a568,0xbc0c15de,0xbc2a4353,0xbc49ad90,0xbc632c76,0xbc81d509,0xbc7ae026,0xbc6aa3f9,0xbc23c4bf,0xbb42a1fd,0xbb0517fd,0xbaba86f0,0xbb02c304, -0xbacff087,0xbb124608,0xbb61f181,0xbb878d57,0xbb8982d5,0xbb5941ca,0xbac570dc,0xb9ce432c,0x37b46206,0x3a91a5c6,0x37a3105d,0xb9e9d2d9,0x398aba50,0x3a7140fd,0x3ad6423d,0x3b0517fa,0x3b0b128f,0x3affa6fe,0x3adc8773,0xbb02558b,0xbbb27149,0xbc18034b,0xbc21c183,0xbc2e01fb,0xbc44a02e, -0xbc3b09a7,0xbc3ab723,0xbc415e63,0xbc35d0f6,0xbc20a250,0xbbe1507e,0xbb8ef2ef,0xbb9f3132,0xbb610d86,0xbb712696,0xbb7714c8,0xbb873f51,0xbb88507b,0xbb8540f1,0xbb946c3d,0xbb3d1229,0xbb116432,0xbafd5a23,0xbb1c5efb,0xbb277a8e,0xbb209328,0xbac8df1c,0xba792822,0xba0f9f91,0xb9a25cef, -0x38199f79,0x3a34ba5f,0x3893ff62,0xb9801673,0xb88d3687,0xbb3513ef,0xbbb31c43,0xbc102cfe,0xbc10427e,0xbc1bc0a5,0xbc232e38,0xbc165f94,0xbc1110af,0xbc0c6f13,0xbbc67b19,0xbb86524a,0xbb3b9b39,0xbb881cc7,0xbbbf6a52,0xbb93c291,0xbb961e74,0xbb8621e3,0xbb5f302a,0xbb6becd0,0xbb4edf8b, -0xbb48f64e,0xbb561286,0xbb56e624,0xbb33f1ae,0xbb0d1f28,0xbac233d1,0xba9ca116,0xbade5002,0xbb08b7f7,0xbb1d982f,0xbb20dc45,0xbb320265,0xbb3f15f1,0xbb2964b8,0xbb6895f2,0xbb885d03,0xbb8e4f59,0xbb62fe57,0xbb355536,0xbb576db4,0xbb44577b,0xbb7147ed,0xbb926575,0xbb8dd28b,0xbbc726d8, -0xbbcef01c,0xbbf2ef11,0xbbfef82a,0xbbbd722e,0xbb681790,0xbb6ec30d,0xbb762f1c,0xbb6da561,0xbb691244,0xbb6be39b,0xbb657018,0xbb617dbd,0xbb4faac6,0xbb46110f,0xbb4a91da,0xbb512d30,0xbb57c921,0xbb4fd5c6,0xbb434c4d,0xbb379aa2,0xbb34f8d9,0xbb30a8a7,0xbb293bef,0xbb2e540e,0xbb264b61, -0xbb1f82bf,0xbb0bea9d,0xbb4dbbb1,0xbb5fd598,0xbb663a37,0xbb801ca6,0xbb7cb004,0xbb80322d,0xbb8385cd,0xbb796aae,0xbb69c54d,0xbb4a579b,0xbb3fbb65,0xbb33d1e3,0xbb59170b,0xbbb35cb0,0xbacad0c9,0xba83b875,0xba68e141,0xbaa9b177,0xbab579c8,0xbab61376,0xbac3d2d8,0xbab4e0d4,0xba62eca2, -0xba943675,0xba9179dc,0xba658074,0xba709a8a,0xba9439dc,0xbad497c8,0xbac896d0,0xbac2aaad,0xbaa27068,0xba745347,0xba4c052f,0xba45194f,0xba745833,0xba898a24,0xba9c66f1,0xbaab4951,0xba84e0b9,0xb91db8cf,0xb9dfb608,0xb9db408b,0xb98b5b08,0xb9afe4df,0xb9fe6080,0xba884205,0xb9f761b5, -0xba3089dd,0xbaa8001b,0xba6c242c,0x3aa5f863,0x3a8a828c,0xba8de060,0xbb0ba73d,0xbb1a94ea,0xbb5bc3b4,0xbb3f04f3,0xba41e6eb,0xbad70d80,0xbac75dbe,0xba9d1cb8,0xba723e5c,0xbad9b123,0xbb6f5a52,0xbb7c5569,0xbb62598d,0xbb10415e,0xba6d9f58,0xb9d4babb,0xba430437,0xbac4cc2e,0xbb0fc268, -0xbb2cdcc7,0xbb022e84,0xba947315,0x3a85cbe3,0x393ec709,0x3a2bee34,0x3a76a9d0,0x3aa7affb,0x3aab6c80,0xba45de15,0x3a5fb1b9,0x398427da,0xbad4cd7a,0x39fa26ae,0x3a033605,0x3a30e223,0xbb0d1a6d,0xbb576c29,0xbb596d97,0xbb9360ac,0xbb8b5a72,0xb9fbdb52,0xbb1583d7,0xbab3872f,0xba4aeb82, -0xb5e90b0f,0xbae6ff4a,0xbba8cf6e,0xbbad7f04,0xbba0c4b8,0xbb46ba7f,0xba48dd1c,0x39b05c93,0x38ebc717,0xbaa0c83b,0xbb0ea44b,0xbb4c10a2,0xbb329497,0xbabbc384,0x3b520b0b,0x3acf2845,0x3ad97384,0x3b664119,0x3b41383c,0x3b1a59fc,0xba54e513,0x3b072382,0x3ae4b90b,0xbb3405ad,0x37913fff, -0x3bad319e,0x3bb902b6,0xba914ab7,0xbb7ef9fd,0xbb7ff9de,0xbbe08c41,0xbbc40b54,0x39fbb47c,0xbb1ee6d8,0xbab77c07,0xba306dcf,0x39d7f2c6,0xbae55159,0xbc093485,0xbc137ea7,0xbc00f145,0xbb8508c7,0xb92b25e8,0x3abfd0d1,0x39f5006d,0xbacc8338,0xbb7b252f,0xbb8a0fd2,0xbb64132d,0xbab214a1, -0x3bb66565,0x3b92ff60,0x3bc8419f,0x3ba4e956,0x3bdf2518,0x3bcee0ae,0x3a186b0f,0x3bb8ae16,0x3b6242b0,0xbb0aff8c,0x3b467022,0x39bd1a62,0x3b0150ef,0xbb701e1f,0xbb9e4694,0xbb8de6ef,0xbbe3705e,0xbbda22c3,0xb9d84a41,0xbb4b30b5,0xba7c0a5e,0x3a9415d4,0x3b380dd1,0xba8f76ca,0xbc05266d, -0xbc1d1b8c,0xbc07df30,0xbb9b7a9a,0x3894dd44,0x3afb4c6d,0x3abf80c4,0xba7d12b5,0xbb18842a,0xbb833cd4,0xbb41536a,0x398b8b33,0x3bcee26d,0x3c0b838f,0x3c22e3cc,0x3c030ff3,0x3bdd8f47,0x3bc69d76,0x3a94a387,0x3be9f1ae,0x3bdb28ef,0xbb7a959f,0x396fea35,0x3cd9d625,0x3c541229,0x3b61c715, -0xbbb62f0e,0xbc808624,0xbab0ab40,0x3b1adba2,0xbbb99222,0x3b613685,0xbaabeee1,0xbc69b2ef,0xbc7024c7,0xbc509f99,0xbbde0714,0x3b04d036,0x3bac2dfd,0x3b2c0ac9,0x3b68991d,0x3b6c143d,0x3ba505b2,0x3bb28524,0x3b81a434,0x3b2dfcb6,0x3b60f961,0x3a9d1a1f,0x3aa9e323,0xba9786b4,0x3b549a20, -0x3c8fd6e8,0x3bb4b49b,0xba02af79,0xbae913df,0xbc750a2e,0xbc3c3144,0x3ba9b46b,0x3cbb72b8,0xbd01e509,0xbc8fa864,0xbc8b45ad,0xbb670d10,0x3c2b34c8,0x3b9727be,0x3941c1f8,0xbb2e4fa5,0xbc0ddbf6,0xbbc77ab1,0x3c2f81f6,0x3a386d0d,0xbae21154,0xb804595e,0x3ae7144e,0x3b5bb0bb,0x3a7fb00b, -0x39b3c0da,0x39647ee0,0x3a6ece33,0x3b32a919,0x3b5bb1f4,0x3b39afbb,0x3a70c9d1,0x3acca821,0x3ba7968a,0x3c046753,0x3c0a0eee,0x3b8e04f1,0x3b4518cb,0x3b29a506,0x3b964a34,0x3c1fa6c2,0x3c126949,0x3ba87990,0xbcbfd657,0x3bb0ca0b,0x3c3deff8,0x3c27055a,0x3bcaa1f0,0x3bc8334d,0x3c55f458, -0x3c2c9c4f,0xbbedd130,0xbbfc520d,0xbc0608df,0x3aaddf39,0x39f58d46,0x3b931793,0x3be46d1d,0x3bf99aab,0x3baea789,0xba7ba7f5,0xba1b9642,0xbaa6f0d4,0xbaaebb0f,0xba125df7,0x3aa0aa8d,0x3adcb7dd,0x3ae08177,0x3b755808,0x3b3ace00,0x3b84e190,0x3b57b77c,0x3ab3e4c0,0x3b8d7128,0x3ba6ac01, -0x3bf306e3,0x3bb1d897,0x3b63d815,0x3b5291e4,0x3ba0e9b9,0x3c526811,0x3c39b431,0x3bb249fb,0x3b25acf9,0xbb1bd7b6,0x3c43d155,0x3c5abdb9,0xbb8b9fbd,0x3b48f5da,0x3a375434,0xbae9df45,0x3b5d2aad,0x3bc91004,0x3c05f6df,0x3bd0305e,0x3b949a09,0xba285209,0xb9c76e1e,0xba8f1d3c,0xbae90aa1, -0xbaedae9a,0xba6623b3,0xbab88fdd,0x399779e7,0x3a8e1f49,0x3a7dc974,0x3965cf45,0x3a23197d,0x3b0fc192,0x3b68e667,0x3baa13a4,0x3c0120c8,0x3823c73f,0xba48d748,0x3b660c30,0x3c36ceff,0xbc77a310,0xbc2ad453,0xbbebb2a4,0xba0e65ed,0x3ba9bc50,0x3b34cea0,0x3b4921cf,0x3ba4bca0,0x3c4399c4, -0x3c599207,0x3c159ca7,0x3bc592d8,0x3ac7afbe,0x3ad1e277,0x3b0d186b,0x3b79605e,0x3b6279e7,0x3af1239e,0x39544c8a,0xb9b41839,0x39f9338c,0xb99ae574,0xbb3b1ef2,0xbb6e5d8d,0xbb3ad5e4,0xbaf71bb9,0xbad4b07d,0xba8d2d31,0xb82d059b,0xbac69fb8,0xbb16456d,0xbb146c15,0xba04a13a,0xb8bb025d, -0xba83f8b5,0xbc4012f9,0x3bee03d0,0x3c0c5658,0x3ba4b1a1,0x38f81ebe,0x39bcfad6,0x39ea5474,0x3ae9e42a,0x3b4a737f,0x36b24c07,0xbb0a9e73,0xbba47060,0xba76ca17,0x3ac9d444,0x3a7bdfe6,0x3ac4fd9a,0x3ae505da,0x3aea401c,0x3b5256e9,0x3b315609,0x3a3ceaba,0x394e129e,0x3889268b,0x3af5e348, -0xbab40fce,0xbb418c3c,0xbb576ca6,0xbba5dc70,0xbb99c7b8,0xbb00bfe8,0xba55921d,0x374af483,0x3aa10fc0,0x3ae462aa,0x3a5058b6,0x3b1fdee9,0x3b8c8b16,0xbc0261b7,0xbb903061,0xbb434511,0xba2cd515,0xba83c364,0x386ca6d3,0x39d04893,0x3abe0b65,0x39e7360a,0x3a87bc7f,0x3ac36fce,0x3ae9a637, -0x3aef2d3a,0x3b0c7806,0x383ef660,0xb910bdaf,0x3adbeb02,0x3ac863c0,0x3afbec14,0x3ad005e0,0x3b38a811,0x3aa51c43,0xba70b289,0xbb7ea789,0xbba57220,0xbbbf41dd,0xbba7dff7,0xbbd7cf7e,0xbc034c5d,0xbc203aa1,0xbc3a61ff,0xbc428f8a,0xbc714e57,0xbc714bb7,0xbc6a1aec,0xbc357d65,0xbb40b234, -0xba8f5cb9,0xba0808e3,0xba46e113,0xb8d696b0,0xb958fa8f,0xba565847,0xbafbeaf7,0xbb017432,0xbac8ead5,0xb998f33c,0x3a060473,0x3a07725a,0x3a3aa361,0x399132e5,0x392a4573,0x3aa1cd05,0x3abf9750,0x3b06790c,0x3b172964,0x3ae7508e,0x3a9baacd,0xb7f91e75,0xbb3bf798,0xbbc5b373,0xbc10cac4, -0xbc209cc1,0xbc268aeb,0xbc3c93db,0xbc34b116,0xbc36694d,0xbc3da64e,0xbc3634cf,0xbc270aa1,0xbbe71d4c,0xbb9b9bc2,0xbb59788e,0xbb186170,0xbb1bfb74,0xbb0e1eb6,0xbb05a448,0xbb147d5e,0xbb15278a,0xbb1dc1a0,0xbab25eba,0xba90f95f,0xba88af8d,0xbae7ef3d,0xbb055374,0xbb0d3b89,0xba9a3780, -0xba22f0c7,0xb942d908,0xb90bfbba,0x390e2e03,0x39d15ba4,0xba3232c7,0xba928b78,0xbaa9b1bd,0xbb5addde,0xbbbaee2a,0xbc0a774e,0xbc0bc38c,0xbc0d76a8,0xbc1a9af6,0xbc0b9294,0xbc0fb2ae,0xbc0bb864,0xbbbeb816,0xbb5a5c76,0xbb1f7b6e,0xbb4eb67b,0xbb9665cb,0xbb658c93,0xbb770afb,0xbb714fdc, -0xbb68b868,0xbb75c751,0xbb69e3f7,0xbb772796,0xbb784a2b,0xbb6909d5,0xbb446a53,0xbb1b020e,0xbae1cb1e,0xbac03b15,0xbb02988b,0xbb1d1330,0xbb3398a1,0xbb37ab20,0xbb3ff407,0xbb4e6dbd,0xbb578ad0,0xbb7a4325,0xbb8be962,0xbb8cddbe,0xbb63ae69,0xbb2b8f7f,0xbb3ee90c,0xbb1e4b1c,0xbb397fd0, -0xbb4dd7c0,0xbb2440ac,0xbb7867f8,0xbb8e111f,0xbbbe7f76,0xbbc65b4f,0xbb92c341,0xbb65de10,0xbb5aead6,0xbb632e58,0xbb5a2871,0xbb535b84,0xbb5639af,0xbb51c957,0xbb4de4fb,0xbb40b951,0xbb3f0713,0xbb46a3e3,0xbb4ea72d,0xbb5607a7,0xbb4e8522,0xbb43ac11,0xbb3a0f62,0xbb393476,0xbb361b6f, -0xbb32b2bf,0xbb3212d0,0xbb42136f,0xbb4df2aa,0xbb50a1e1,0xbb6239e6,0xbb81e5fb,0xbb8eaa9a,0xbb9a5e45,0xbb94c33b,0xbb945c6a,0xbb9898a8,0xbb923b79,0xbb8a2545,0xbb60e64f,0xbb439ee4,0xbb4e4710,0xbb612df6,0xbbbb8c31,0xbacb34cd,0xba8c3c60,0xba85490a,0xbaabbc9a,0xbaacf3c2,0xbaa4d383, -0xbab53b06,0xbaadee76,0xba75706d,0xba942a9c,0xba8d9f84,0xba4f3a52,0xba3d88a5,0xba711c23,0xbabc9440,0xbac0c1cb,0xbac4d4b4,0xbaab12bf,0xba8af183,0xba6b35ad,0xba478729,0xba848a2a,0xba98055b,0xbab2c6cb,0xbaaf09d2,0xba8f1ceb,0xb99ddc06,0xba2e8fcc,0xba28ce96,0xb9c51e9c,0xba0ba8b5, -0xba291f53,0xba8d49a7,0xba1a3e46,0xba4794c0,0xbac90be3,0xba89a71d,0x3a5f7777,0x3a0094f8,0xba9ae501,0xbb08cb84,0xbb1407ed,0xbb4a8e08,0xbb321fa1,0xba846f2f,0xbad327f0,0xbaa8669a,0xba5b8eb4,0xb8d96591,0xba4126f1,0xbb4006cd,0xbb5f9272,0xbb5d0152,0xbb19ab75,0xbab258ad,0xba6595d4, -0xba540b54,0xbad80ae1,0xbb149da0,0xbb3487ec,0xbb087673,0xbaa20aa5,0x3a67d0fb,0xb9cef31d,0x381c4744,0x3a8cf471,0x3a9893e0,0x3aa80418,0xba40663f,0x39f6e715,0xb89e82be,0xbb01cbc4,0x39ae00bb,0x38a2aaed,0xb9ac8bfa,0xbb15d08f,0xbb47bd79,0xbb372703,0xbb7f913f,0xbb7effea,0xba820014, -0xbb1795b9,0xba8f311b,0xb94c5b50,0x3ab81e7e,0xb9343654,0xbb86560c,0xbb9bd0bf,0xbba1894c,0xbb609223,0xbad5d9cd,0xba053bd6,0xb8364b4e,0xbabc0ff8,0xbb170ca5,0xbb5e78d9,0xbb38eb23,0xbad5fe16,0x3b45b17b,0x3a51f863,0x3a8fb9d6,0x3b694fc0,0x3b33550c,0x3b0dbffe,0xb9df20c3,0x3ae23480, -0x3a9645e0,0xbb634f15,0xb972ca8b,0x3b91e5b0,0x3b731920,0xbaa72fd8,0xbb751069,0xbb70cd89,0xbbc6ab59,0xbbafb097,0xba08549c,0xbb1cddfb,0xba33a3f3,0x395bfd66,0x3b37a63d,0x3a666d40,0xbbd27978,0xbbfe5922,0xbbfc73b4,0xbb93bec3,0xbad79bbf,0x38e34c89,0x39a2d28c,0xbae824d4,0xbb790d29, -0xbb8d2894,0xbb69e029,0xbb02656e,0x3bb6c93a,0x3b3c75d4,0x3b96d432,0x3bb06701,0x3be69dc4,0x3bd076b4,0x3a2f6ac5,0x3b9a9a96,0x3b233f67,0xbb4253bd,0x3b2b098e,0xb91784d9,0xb9303ae9,0xbb7ce17e,0xbb8c9f01,0xbb473215,0xbbb54f92,0xbbc898ab,0xbac16795,0xbb54844f,0xba004827,0x3b0d32a5, -0x3bb2f774,0x3aff6d78,0xbbd2a755,0xbc0c4caa,0xbc0bcf1a,0xbbb81b96,0xbadb5209,0x39bb7db1,0x3abe638c,0xba8eb417,0xbb16e2a2,0xbb852320,0xbb5d8727,0xba28ccba,0x3bccb8d4,0x3be56845,0x3c066601,0x3c0180de,0x3be5e7d8,0x3bd1b885,0x3ad10b02,0x3be40ccc,0x3bb7f3f2,0xbbb83f41,0xb95d62aa, -0x3cc5b0e1,0x3c2b79bd,0x3b27cd24,0xbbcb63c1,0xbc817c17,0xbb99b67d,0x39da1e35,0xbadb3308,0x3b8317b0,0x39b6c4b5,0xbc20ecb4,0xbc5b9dd3,0xbc4f0662,0xbbf37579,0x3a493b27,0x3b8557d0,0x3b1dc341,0x3b18ce85,0x3b1001c2,0x3b814e0b,0x3b6ebfbd,0x3b1bd535,0x3a7ddf97,0x3b77af4a,0x3adab5ee, -0xba283075,0xb9b63834,0x3b65a9ff,0x3c5c1291,0x3b8d93c4,0xbaabddb1,0xbb8feda4,0xbc864517,0xbc32d5bc,0x3bf2c0cb,0x3cb71b30,0xbcec4bbd,0xbc95c234,0xbc8c3c7a,0xbb5a31b4,0x3c82de8d,0x3ba0d978,0x39758416,0xb9814666,0xbbfe03e2,0xbbb76a23,0x3c224f43,0x3a8f36b9,0xba9c3b40,0xba3667ae, -0xb9afe45c,0x3a0f1e18,0xbaa2ec18,0xb9835b63,0x398e7e5d,0x3a390e7a,0x3b17797b,0x3b42da36,0x3b26afc4,0x3a267339,0x3ac98523,0x3bb77ea3,0x3be158cd,0x3bdc53df,0x3b3face3,0x3abb892b,0x3adb774e,0x3bb36341,0x3c4784a9,0x3c1a85e6,0xbb649643,0xbcb8f250,0x3b9f1346,0x3c5452ed,0x3bf037bc, -0x3add59e3,0x3b46da19,0x3c055514,0x3c061c13,0xba7e677b,0xbb8d35b4,0xbbc9fe6d,0x39daf03a,0x3a93384b,0x3b9bdc67,0x3bd8cc7d,0x3befbf01,0x3b971c04,0xba483169,0xba3e5815,0xba738893,0xba1fa9ee,0xba072127,0x3a908c79,0x3aa7b800,0x3b240582,0x3b83d91f,0x3b13a8dc,0x3b58b84a,0x3b0e9b00, -0x3a2170c7,0x3b7b6426,0x3ba151c8,0x3c0cdb61,0x3b80046e,0x394f2e93,0xba5ec88a,0x3b6d77a4,0x3c1cdbc5,0x3c1c42de,0x3b0decde,0xba715697,0xbbe1a82c,0x3be7b90a,0x3c1e927f,0xba9bb9b2,0x3bc41501,0x3b6c5ddd,0xbb1fdaea,0x3b96fa23,0x3bef6612,0x3c0f8259,0x3bc1ca0a,0x3b87568c,0xb9a31dee, -0xba7e264f,0xbad01c72,0xbb0db740,0xbafea89a,0xba831ac8,0xbae0aa07,0x3a235c7c,0x3a8f7f90,0x36500ed2,0xba0e58a1,0xb9140935,0x3abecff9,0x3b69fca2,0x3baf0a4c,0x3c0224aa,0xbb115af1,0xbb88ac8e,0x3ad59f69,0x3c013bcd,0xbc4e2bc2,0xbc2c82b1,0xbbe4d720,0xbac9eb6e,0x3b74de46,0xba2476db, -0xba8cedd3,0x3a78d734,0x3c2d25c8,0x3c5d7d2b,0x3c0f9c80,0x3c008802,0x3b8342b7,0x3b51f5d1,0x3afb9854,0x3b3888d1,0x3b19e849,0x3a48f7f6,0xba385457,0xbb080cc1,0xba01edfa,0xba98ca0d,0xbb6089fe,0xbb925f9c,0xbb68a904,0xbac23d14,0xbb316201,0xbb10725f,0xba06d2e4,0xbb1517f9,0xbb166289, -0xbac1c825,0x3a8dc024,0x3ad21d53,0xba4770d6,0xbc1d4c46,0x3c0a2521,0x3c269544,0x3c0fb765,0x3bbd8267,0x3b6d3588,0x3b8399e3,0x3bcb9ede,0x3c202cf5,0x3b3e6478,0xba1322e0,0xbb9a5335,0xbb3bb616,0x3978feb3,0x392da498,0x3a920c18,0x3ae67235,0x3b08693f,0x3b4e7dfd,0x3b3629ce,0x3a62fd8f, -0x3a1f2236,0x39c7eb49,0x3a88663d,0xbab650b0,0xbb4911bf,0xbb5dc8f2,0xbb98572a,0xbb638601,0xb815b226,0x39c08192,0x3a52b22a,0x3b21f9f1,0x3b29c8dd,0x3b28ab1d,0x3b92b8e3,0x3bbf12a3,0xbc0ec19f,0xbbaa340d,0xbb90b83a,0xbb0b24b1,0xbb0813da,0xba03c7c5,0xb95e2a99,0x3a99b2ed,0x3a963c8b, -0x3af8eabe,0x3b15cc54,0x3b31bbaf,0x3afb8cff,0x3acac27c,0x39cd35c0,0x39d7786f,0x3b2b3596,0x3b0a51c2,0x3b0defa2,0x3adbd646,0x3b325029,0x3a40e6df,0xbb2470fc,0xbb9c2cbc,0xbbad2f3c,0xbb9fc549,0xbb888bbd,0xbbbc5e41,0xbbeb0d3e,0xbc12cdab,0xbc271f5a,0xbc21f721,0xbc569a4b,0xbc5c473e, -0xbc60ed32,0xbc3e9545,0xbb66e8b0,0xba7be462,0xba2644d1,0xba1a68c8,0x392bbecc,0x3a23418b,0x3a6b531d,0x398557dd,0x398a9943,0x39f9f58d,0x3aacbd33,0x3ad786d7,0x3ab91d7c,0x3a604c19,0x3a783032,0x3a99d094,0x3b23b11d,0x3b17211d,0x3b2ee970,0x3b3dfa6b,0x3acd9b05,0x39f06bac,0xbadd6fa0, -0xbb6385fc,0xbbc55a52,0xbbf6304c,0xbc137d02,0xbc1699de,0xbc2be4a3,0xbc27084d,0xbc2a91dc,0xbc31891f,0xbc348fb9,0xbc2db5f0,0xbc017031,0xbbb9b1f1,0xbb249bb1,0xbad97427,0xbac816d1,0xba846521,0xba005f11,0xba23ba11,0xba1d9076,0xb9c19578,0x38bab766,0x388d6417,0x389d7d3d,0xba2f94f9, -0xba60463f,0xba891704,0xb92653b0,0x39b936cd,0x3a356ad5,0x3a331309,0x3a852b29,0x3a7e5a81,0xba301291,0xbac26173,0xbb175122,0xbb689616,0xbbaed890,0xbbee3d2a,0xbbf8b840,0xbbf4f910,0xbc0f64f7,0xbbffea30,0xbc0a3586,0xbc0800dc,0xbbbeb620,0xbb5b72e9,0xbb41ed42,0xbb3c94b7,0xbb687189, -0xbb1a698a,0xbb32afea,0xbb442e03,0xbb57c163,0xbb64885d,0xbb670a76,0xbb7b9d9f,0xbb724cc1,0xbb55d140,0xbb36714b,0xbb10f840,0xbae1150c,0xbac4176e,0xbaff809d,0xbb12e530,0xbb214c56,0xbb24cacc,0xbb29af44,0xbb2955d6,0xbb4413cb,0xbb4fab4f,0xbb64bb64,0xbb6ca6f0,0xbb4cb173,0xbb1ff25b, -0xbb275df0,0xbb02f44e,0xbb06c85f,0xbb0bbd10,0xbab58afd,0xbb09d7e6,0xbb3c23d1,0xbb8c46d2,0xbb8ee972,0xbb508085,0xbb30efde,0xbb13c237,0xbb1e9a88,0xbb149838,0xbb0cc3e1,0xbb0d8dbf,0xbb0bc316,0xbb09dd80,0xbb0249b5,0xbb06f052,0xbb0edb8e,0xbb156314,0xbb1afca3,0xbb14b60f,0xbb0b5f2d, -0xbb045785,0xbb03a5da,0xbb0093ba,0xbafdea4b,0xbaf64625,0xbb20da1c,0xbb3eb655,0xbb574b28,0xbb3c3a2d,0xbb669eb2,0xbb88147a,0xbb91310e,0xbb8b31ee,0xbb8b4efa,0xbb8f12ca,0xbb89b434,0xbb84adc0,0xbb49cf42,0xbb1cd5c7,0xbb42366b,0xbb3d3f66,0xbb8cf59e,0xbab8afd0,0xba7ef34d,0xba83961d, -0xba9d65fa,0xba97327e,0xba87d5a8,0xba9af19f,0xba9b979a,0xba7acd78,0xba882ce4,0xba78bd4e,0xba1e294b,0xba071886,0xba37d585,0xba9d3bfe,0xbaae8c53,0xbabaa913,0xbaa84675,0xba8f07d5,0xba73bd3c,0xba419971,0xba814376,0xba95a5cd,0xbab62441,0xbaa19259,0xba838de6,0xb9a0d67f,0xba379a7c, -0xba2d6ed8,0xb9a30f63,0xba0f1b1c,0xba22178e,0xba686a1d,0xba0dcefb,0xba3711ea,0xbac4174f,0xba81985d,0x3a1d6461,0x38fee263,0xba904afd,0xbaf671de,0xbb03e4fd,0xbb343142,0xbb21d652,0xbaad7a71,0xbabebdcc,0xba7181ed,0xb9bf9965,0x3a1198a1,0xb78c80b0,0xbb12dacf,0xbb3f6e31,0xbb4f0774, -0xbb1dc16f,0xbad9f9ac,0xba9eb863,0xba65a3e0,0xbad91976,0xbb10fb47,0xbb3555f9,0xbb026a63,0xba99f7e0,0x3a5b4add,0xba331708,0xb9860df8,0x3ab810b9,0x3a98c885,0x3a9f3bd0,0xb9f96dcf,0x398706e2,0xb92e17a1,0xbaf7e5ee,0x39b64647,0xb8888bcf,0xba570655,0xbb09ac56,0xbb2835bb,0xbb097915, -0xbb5328f5,0xbb62436d,0xbad16f25,0xbb0bfad8,0xba304e18,0x3a11d3b6,0x3b1b1499,0x3a819056,0xbb493df0,0xbb8800ec,0xbb9c24a0,0xbb7326ca,0xbb17491b,0xbaa7644f,0xb99e2b95,0xbacf38fc,0xbb1e6cea,0xbb6f3add,0xbb30e163,0xbacfd049,0x3b36c953,0x39cbe204,0x3a5daa69,0x3b7a6e26,0x3b26a25d, -0x3b06df87,0x398238b3,0x3acbbee5,0x3a56b372,0xbb5ef3ab,0xb94af2b5,0x3b75f0ae,0x3b138f4a,0xba8a5a29,0xbb594821,0xbb4ef5fa,0xbbad4cfc,0xbb9e474a,0xbaf0e070,0xbb0bc01e,0x393f3518,0x3aa3e3ab,0x3b93777a,0x3b3696fa,0xbb99e281,0xbbd4a5c6,0xbbef624f,0xbba1b857,0xbb3ec9f7,0xba9aa89c, -0xb83e9706,0xbb016245,0xbb74eecd,0xbb922b8f,0xbb5fe8d4,0xbb1517c0,0x3bb5b624,0x3ae1ec93,0x3b64fb72,0x3bcb5975,0x3bea8acd,0x3bce858c,0x3a898e35,0x3b7fc212,0x3af9a023,0xbb48101c,0x3b23de94,0xb9652da2,0xbab85c29,0xbb608ccc,0xbb5faa80,0xbac8bf8e,0xbb890e51,0xbbb45743,0xbb323eb9, -0xbb49c0c8,0x392136ef,0x3b573ee7,0x3be9afbf,0x3b880d31,0xbb9a84fe,0xbbf33046,0xbc09916f,0xbbcecaca,0xbb55d895,0xbaa9958f,0x3a78e8ee,0xba96bee5,0xbb1c6197,0xbb8732c1,0xbb61a63c,0xbaa5d7d1,0x3bca57cb,0x3bb9b3b8,0x3bd8c1b9,0x3c044a4b,0x3befebc9,0x3bd87e0b,0x3b1ea1f6,0x3bd67d5c, -0x3b962bfb,0xbbcb3ea2,0xb9284c67,0x3ca68607,0x3c00c8bb,0x3ab7de4b,0xbbcf32ea,0xbc736d07,0xbbe6bfaf,0xba8e7f08,0x3b237fa3,0x3b98876c,0x3b00db95,0xbb97b697,0xbc4b0aba,0xbc5052e2,0xbbe5b1e4,0xba080ad3,0x3b2ce7c7,0x3b11b82a,0x3ab0e5fc,0x3a7e0f9a,0x3b153750,0x3ad9fbeb,0x3a73b698, -0xb9fde0d3,0x3b83d5fa,0x3b137325,0xbb1a33cc,0x3a77083c,0x3b899d1d,0x3c0ead3e,0x3b6a68d2,0xbada8c27,0xbbd0b99c,0xbc84ae18,0xbc154284,0x3c17d8da,0x3cab3b0e,0xbccd26aa,0xbc8a474c,0xbc7e6bcd,0xbb1695e6,0x3ca9d235,0x3bc0a2dc,0x3acfeacc,0x3b0bc952,0xbbcfdd5a,0xbba47264,0x3bfc676d, -0x3ac8deaf,0xb9a8dc79,0xbaee37ef,0xbafd7f61,0xbac85602,0xbb1ea905,0xba2aa732,0x38ca828c,0x3a259fde,0x3ac10e5c,0x3b01b14e,0x3b121a60,0x3a2efe88,0x3af9a4b8,0x3bbb4efd,0x3bbcbc14,0x3ba30c0d,0x3aa9d596,0xb91f0b27,0x3aa4f3b2,0x3be60f61,0x3c653e30,0x3c108b37,0xbc33645a,0xbcacaf4a, -0x3b66bb32,0x3c7a393c,0x3b8b4f8b,0xbb2e4e93,0xb9530600,0x3a89eb66,0x3b5e822d,0x3be762c5,0xbac6dda8,0xbb92005d,0x399ea987,0x3ac023d7,0x3b8ef6a5,0x3bb6a7d8,0x3bd1a8be,0x3b751d9c,0x3863ceb2,0xba4f3f6e,0xba7a0bfb,0x38fa3f08,0xb9658d91,0x3a88d1a4,0x3a7923dc,0x3b4b19a5,0x3b855c1a, -0x3afa2457,0x3b20e5ce,0x3a7b1ad0,0xb915c6b3,0x3b598279,0x3b940e5c,0x3c0c1f3e,0x3b2ba2fc,0xbb32b456,0xbb88ecf5,0x3a821c9e,0x3bb989d5,0x3c0b1688,0xb9baad3b,0xbb7a7313,0xbc3197ba,0xba2eed2d,0x3b55c3c8,0x3bb2dba2,0x3bf45efd,0x3bac3ada,0xbad75ff0,0x3bb16dd5,0x3bfe3d49,0x3c05ad52, -0x3ba4f57f,0x3b604ef3,0x39bfdfba,0xbabd7bf1,0xbb003a41,0xbb06a948,0xbae7838d,0xba7bb23a,0xbaeb6b6d,0x3a590da3,0x3a7731c6,0xba165bc7,0xba97d8b3,0xba38947f,0x3a6d67a7,0x3b6aeda9,0x3bae6110,0x3bd753b9,0xbb7e471a,0xbbd71608,0xb9305184,0x3b77a785,0xbc13cd51,0xbc2d0255,0xbbceb00c, -0xbb1c1e15,0x3b267fb8,0xbb286afa,0xbb39bcb7,0xba3a7b1d,0x3c0f8f8c,0x3c4ddbda,0x3c0bbb8e,0x3c19afa9,0x3bd2f84f,0x3b99b55e,0x3af05751,0x3aa97edb,0x3a858e96,0xb9ea9547,0xbace5edd,0xbb54796e,0xbadb37cb,0xbb177019,0xbb711a79,0xbba27d96,0xbb83b4dc,0xbaaebf1e,0xbb53381c,0xbb3342e7, -0xba4d3bcc,0xbb24caf7,0xbae5637c,0xba228d01,0x3b25bd46,0x3b4ede41,0xba4b76ba,0xbbcdd85a,0x3c0c0263,0x3c32340d,0x3c45f65b,0x3c40aa80,0x3bfd403c,0x3bf4fafc,0x3c18560e,0x3c5d8597,0x3bc514f2,0x3afdbd5b,0xbb5f04d2,0xbb800ae0,0xbaa488ef,0xba7954c1,0x3a3b050c,0x3acd5fcc,0x3b008a46, -0x3b31d0bf,0x3b2d33ae,0x3a88d1ac,0x3a807554,0x3a157026,0xb993f541,0xbacb4952,0xbb463807,0xbb6876ab,0xbb6df4ee,0xbae7ac00,0x3ac29be6,0x3aa40b73,0x3a8cb40e,0x3b27416a,0x3b1e7cfe,0x3b3c8a62,0x3bafc70c,0x3bc1c138,0xbc199851,0xbbbbe828,0xbbbcbfe1,0xbb6cd5bb,0xbb26ba30,0xba4624b0, -0xb99c3893,0x3aa5df0a,0x3af9db38,0x3b33fb38,0x3b5226af,0x3b5ec3b6,0x3b13f069,0x3ab1c332,0x3a77abd7,0x3ab13959,0x3b41e06d,0x3b27e01c,0x3b1b8850,0x3af9d58a,0x3b02ae60,0xb94d6a30,0xbb6b8afa,0xbba6c76b,0xbbac08e0,0xbb89e2c9,0xbb6804ed,0xbba42ce4,0xbbc70da2,0xbc0100a0,0xbc0fd242, -0xbc01e5a0,0xbc31191c,0xbc3b1d90,0xbc520c4b,0xbc3f8135,0xbb93a5dc,0xbab37887,0xbaa148d7,0xba88a3d9,0xba0d1dc1,0x3a0ea60c,0x3adfd88d,0x3afee844,0x3b12e28d,0x3b186fac,0x3b3c0073,0x3b284897,0x3b154401,0x3ad0630f,0x3ae527c2,0x3b0cbc2f,0x3b553ba8,0x3b403187,0x3b45277d,0x3b56f41e, -0x3ab91fac,0xb986e6d1,0xbb43523c,0xbb770e00,0xbbb396c3,0xbbbdb37c,0xbbfc653d,0xbc0254e2,0xbc16d017,0xbc168046,0xbc1c879e,0xbc240863,0xbc2e0016,0xbc2f089b,0xbc10790f,0xbbddfba1,0xbb0b4696,0xbac33d7f,0xbaa36810,0xb9ef52be,0x39c68256,0x39df07fa,0x3a026443,0x3a7c8566,0x3a7c1726, -0x3a747325,0x3a92e85a,0x3a1c073a,0x3a01a17a,0x3956da77,0x3a5b5636,0x3aa0c555,0x3abd6512,0x3ab766b7,0x3ae25d7b,0x3ad0b4e4,0xb9ac7b33,0xbacfbdda,0xbb40e2a6,0xbb61dafe,0xbb951cf9,0xbbb5dd73,0xbbcd0af4,0xbbcc0391,0xbc03990e,0xbbebf976,0xbc04f072,0xbc05ce3f,0xbbc770e9,0xbb7d78d4, -0xbb71ce4d,0xbb3caba6,0xbb1d9fb1,0xba9515dc,0xbacbf062,0xbb0b97c6,0xbb364e25,0xbb44adb8,0xbb512cfb,0xbb65f6d9,0xbb53bc75,0xbb323368,0xbb1f2dcc,0xbb02f1ae,0xbad4edd1,0xbab00810,0xbad3baa7,0xbae30883,0xbaed3c81,0xbaed9c8f,0xbaf01411,0xbad2f0fa,0xbb0d6ae6,0xbb0816d8,0xbb1630fc, -0xbb273973,0xbb24cfdd,0xbb0f3a7f,0xbb0f745a,0xbad96075,0xbaba6785,0xbabfaa27,0xba456bdb,0xba987d64,0xbaf20eab,0xbb3f9238,0xbb3c1af1,0xbb07458f,0xbabe5da4,0xba83f629,0xba9be892,0xba861953,0xba69a4be,0xba633fff,0xba6bdfcc,0xba769482,0xba680a5b,0xba80dcc1,0xba873c9f,0xba8a3e96, -0xba902487,0xba8886a2,0xba79edb2,0xba689957,0xba604a17,0xba55ab28,0xba558146,0xba3e4a69,0xbab51688,0xbafc64db,0xbb222d5c,0xbae81a15,0xbb185dcc,0xbb451e65,0xbb542a1a,0xbb4d5cc4,0xbb52e067,0xbb5b5aa4,0xbb5361d0,0xbb51cbc1,0xbb103770,0xbac02fa2,0xbb082d38,0xbae45b25,0xbb0d0de9, -0xba99bf54,0xba4816e8,0xba5aa672,0xba7fccf9,0xba6d0ccd,0xba4bcbab,0xba746de4,0xba81f17c,0xba6f4dc0,0xba626a6e,0xba3f6807,0xb9c0ab28,0xb99cb9f2,0xb9f53ee2,0xba68f217,0xba924633,0xbaa4c4c3,0xba9a8ffa,0xba8782f3,0xba6a5bf0,0xba34030b,0xba7860b4,0xba9282dc,0xbab79dd9,0xba8a1460, -0xba651b2f,0xb9aa3f07,0xba35020b,0xba24791b,0xb9694888,0xba0c35d9,0xba1612d7,0xba300373,0xb9f04c50,0xba0f6b4a,0xbaabc206,0xba5c700d,0x39c65299,0xb80de2f8,0xba5eb9f7,0xbacb7a49,0xbae71112,0xbb202f1a,0xbb11bf9c,0xbacaa361,0xba9a641d,0xba0298fb,0x3885de9c,0x3a7f4119,0x3a00bdee, -0xbac20923,0xbb1a25de,0xbb37b4f9,0xbb197756,0xbaec7a6a,0xbab8708d,0xba739ec1,0xbadc476b,0xbb0d4571,0xbb351e8e,0xbaee1181,0xba80d510,0x3a48037f,0xba456baf,0xb9ac9b0b,0x3ae08f2c,0x3a984134,0x3a9311d5,0xb928f12b,0x39495885,0xb8998f2d,0xbacc715c,0x39c5de72,0x382faefc,0xba549d76, -0xbace194b,0xbaf62991,0xbabf0bab,0xbb2b1d80,0xbb49535c,0xbb08e4b0,0xbae727b8,0xb921ecc7,0x3a9d6b04,0x3b3c63a5,0x3ae797ce,0xbaf6a643,0xbb60190f,0xbb8f3b2a,0xbb7926ec,0xbb352fce,0xbafcf26e,0xba3d7424,0xbaf77ca7,0xbb2c129c,0xbb800356,0xbb1f96a9,0xbaafa0b2,0x3b1eb4f5,0x398d799a, -0x3a595349,0x3b847894,0x3b194f02,0x3b009cd8,0x3a79e4c8,0x3aca483b,0x3a4777c0,0xbb36bea0,0x3920fc55,0x3b4e6b69,0x3abae9d0,0xba004d01,0xbb2b596e,0xbb331a82,0xbb9c3f07,0xbb93de0d,0xbb428910,0xbad76515,0x3a84d50e,0x3b040d35,0x3bae0137,0x3b805df1,0xbb3263e0,0xbba7a172,0xbbd88659, -0xbba7e892,0xbb7ce8fd,0xbb16848a,0xba200ec0,0xbb1a8025,0xbb770c1c,0xbb9d03ee,0xbb45bff2,0xbb0f0c46,0x3baeb990,0x3a8d08ea,0x3b398014,0x3bea7138,0x3be7f063,0x3bc7a212,0x3ac77bae,0x3b5ba189,0x3ae66c1b,0xbb2eec26,0x3b1e1f3f,0x39941e50,0xbacec864,0xbb181a6d,0xbb0b40d4,0xb916139e, -0xbb4c755a,0xbba22015,0xbb74cc94,0xbb2aea86,0x3a66be7f,0x3b84bb37,0x3bfee8e7,0x3bb7e972,0xbb268fff,0xbbc673b0,0xbc009a5a,0xbbda57f7,0xbb95933f,0xbb419e7a,0xb919cbac,0xbad941ef,0xbb3549c8,0xbb8ebc17,0xbb530402,0xbac26f96,0x3bc4f5be,0x3b98391f,0x3baf46eb,0x3c09cf27,0x3bfb0d7a, -0x3bdb3a50,0x3b5d8dc1,0x3bc6753d,0x3b772e46,0xbbbb3352,0x39cc22d3,0x3c799bb5,0x3ba239ba,0x380e621e,0xbbd01890,0xbc5ec82a,0xbc1433cc,0xbb30a689,0x3bb97606,0x3bae5f10,0x3b6a235f,0x39b3ee0c,0xbc3ad5b3,0xbc51db57,0xbbdc0132,0xbab35a66,0x3ae1b779,0x3b159839,0x3a975dc8,0x39fd66a2, -0x3a680945,0xb86eaeef,0xb94b52fd,0xbab3c447,0x3b8387ad,0x3b31bb29,0xbb67ad30,0x3b2bae86,0x3babb510,0x3b931ece,0x3b424974,0xbb03cdb1,0xbbf56d64,0xbc6f88d5,0xbbd9b9ff,0x3c29b47c,0x3c94a164,0xbca6b0ac,0xbc62fb10,0xbc549373,0xba57f236,0x3cc3c0b9,0x3bf95af3,0x3b789ab7,0x3b5f1270, -0xbbad1296,0xbb9a562f,0x3baaaf18,0x3b2d6ccb,0x3aa35ec8,0xbb3609cb,0xbb48a2a1,0xbb49ff70,0xbb382345,0xba98b419,0xba2b5c1e,0xb8ca85f2,0x397596eb,0x3a205eaf,0x3afdfec9,0x3a4afc7e,0x3b1bfb36,0x3baf59f5,0x3b98b919,0x3b580e27,0xb9db01c0,0xbaa37100,0x3ab45cd9,0x3c0d3e22,0x3c63b457, -0x3be0a729,0xbc7b5015,0xbc9a442a,0x3af28bed,0x3c924c53,0x3abd6010,0xbbc44a18,0xbb602b41,0xbbb19026,0xbacb8739,0x3c6e79fc,0x39f77355,0xbb59035b,0x3a2ee52b,0x3afb0677,0x3b81e093,0x3b8f63c6,0x3ba3f5d3,0x3b2acd57,0x3a9e4d2b,0xba2d9c5d,0xba4abf88,0x3a0d4e9f,0x38ac35a6,0x3a879739, -0x3a7b2559,0x3b5a69fe,0x3b74639a,0x3ae1eff0,0x3acc323c,0xb960e566,0xba588594,0x3b3d2051,0x3b7de90d,0x3bf03d86,0x3aeeab43,0xbb97ff91,0xbbbf0d08,0xbb0e9762,0x3af5bc6e,0x3c02af84,0xbafbeeba,0xbbbeaab2,0xbc6617c5,0xbc022f23,0xbb4947c6,0x3c5bbfe8,0x3bf6c200,0x3bb20010,0x3a641143, -0x3bb76ee7,0x3bf19cdd,0x3bf2e4e4,0x3b8b1f62,0x3b2e9874,0x3a789bd9,0xbadbe7ba,0xbb06eda4,0xbab8ce8e,0xbaab1c74,0xba3b6bcb,0xbad29737,0x3a703c86,0x3a2b2a70,0xba4d6aec,0xbacf6991,0xba8f94a1,0x3a28153d,0x3b5a3e47,0x3b9d01b7,0x3b830b35,0xbb93d48a,0xbbf04cde,0xbab9354d,0xb987790d, -0xbbaa536c,0xbc2fe699,0xbbbd45f0,0xbb53d0b7,0x3ac95cb2,0xbb34d987,0xbb0d1a2b,0xba12b432,0x3be1e43b,0x3c322e19,0x3c0e0c6e,0x3c2c7013,0x3c0583f5,0x3bb9b407,0x3b0acafb,0xb9321a92,0xba2e36f5,0xbaea1a17,0xbb28af3f,0xbb7b41e7,0xbb378e4e,0xbb5fafc6,0xbb79c9b7,0xbba35ee7,0xbb84eb81, -0xbab3bd49,0xbb4cb646,0xbb32e001,0xba826811,0xbb1f2074,0xba8a8e05,0x384f6e61,0x3b573b79,0x3b824782,0xba1cf17d,0xbb28ec42,0x3bfb96a9,0x3c1e555e,0x3c62b0bd,0x3c836a7a,0x3c2de3b4,0x3c210bf5,0x3c2fe1b7,0x3c6b4e88,0x3c04f654,0x3b90c0b8,0xba71e23d,0xbb5912b4,0xbaf196c2,0xbb100414, -0x3899d667,0x3aae2d04,0x3b0bc333,0x3b16f25d,0x3b17e013,0x3aac49f6,0x3a8af66b,0x39ecf4f9,0xbac5f58d,0xbb059af5,0xbb46eb13,0xbb6b95ff,0xbb0c86f5,0x39168f81,0x3b1bbdd0,0x3ae15b61,0x3a6c537f,0x3aeb8059,0x3b09bdb7,0x3b2edab7,0x3bbf3871,0x3ba60ecc,0xbc1badc4,0xbbc67eae,0xbbc77ed6, -0xbb8270d2,0xbb1373ef,0xb9942d18,0x39376b64,0x3ab54ceb,0x3b15e72d,0x3b4cfc8a,0x3b75eb46,0x3b67ecef,0x3b2cd45c,0x3acdb847,0x3ae0fb79,0x3b12b054,0x3b424db9,0x3b3ab9ae,0x3b1e0a65,0x3b066ab9,0x3a7740d7,0xbab5b769,0xbb8e90a3,0xbb9f14a4,0xbb9d5d29,0xbb803573,0xbb514d6e,0xbb8fccd8, -0xbb9f04d1,0xbbd5d102,0xbbe52a51,0xbbbfe88c,0xbc022660,0xbc0f2080,0xbc3c84da,0xbc353ff6,0xbbb45eaa,0xbafbfef0,0xbae6f3a7,0xbac80ebc,0xbad5af14,0xb83e31ed,0x3ae2896f,0x3b3ed053,0x3b65c537,0x3b62eaba,0x3b70282d,0x3b420ec7,0x3b3569ba,0x3b188cd8,0x3b22a3b6,0x3b3d25d8,0x3b584ef8, -0x3b455e3b,0x3b34cb66,0x3b3decba,0x3a7d6419,0xba7c90bb,0xbb76830a,0xbb75d8b9,0xbb968ce2,0xbb8d7f66,0xbbce4d62,0xbbdc4bad,0xbc0016e9,0xbc042056,0xbc0ccb7b,0xbc16f9a1,0xbc201d91,0xbc2970e6,0xbc1cb891,0xbbfee11f,0xbb0bbbec,0xbad9e7cb,0xbaba8799,0xb9fedee0,0x3a1d11df,0x3a53dc69, -0x3a695d4a,0x3ab85404,0x3a9931d5,0x3ab05703,0x3aefd37c,0x3ad8a5c9,0x3ae118a2,0x3ac342ed,0x3adf26fc,0x3af5b9b9,0x3afd119a,0x3ae53dbd,0x3aeab04c,0x3addf1bc,0xb8a37127,0xbac312f8,0xbb440584,0xbb48dcf7,0xbb6e4753,0xbb7e30dc,0xbba036ab,0xbba6c43a,0xbbec2bb7,0xbbd90f7c,0xbc0035c0, -0xbc03f4e4,0xbbd71ad4,0xbb9925a1,0xbb92ab06,0xbb483d5d,0xbab46148,0xb9364199,0xba15c49d,0xbaa928a0,0xbb0e0c96,0xbb1d18fa,0xbb2b7ec8,0xbb3b01eb,0xbb239626,0xbb07471c,0xbb0253d0,0xbadef054,0xbab9d5ed,0xba8813e6,0xba87d02f,0xba785469,0xba608862,0xba378151,0xba0c566d,0xb975aaa0, -0xba75103e,0xba59b67f,0xba861c1e,0xbab25da8,0xbae25099,0xbae71236,0xbae49cf5,0xbaa61361,0xba683cad,0xba81ce66,0xb9ab00b2,0xba39b120,0xba914916,0xbadffa43,0xbadb1b33,0xbaa40c4d,0xb9f259d3,0xb95cf25e,0xb9c9c8f0,0xb964de17,0xb894b0b8,0xb7d51122,0xb9014a98,0xb97f4344,0xb95af0f2, -0xb9855d27,0xb9457392,0xb8fd75ee,0xb8f3f7b5,0xb8c8bc2e,0xb8b61c04,0xb88aff24,0xb8205d40,0xb8255a65,0xb89ac1d4,0x38480f69,0xb9f22d49,0xba683190,0xbab5dd07,0xba55ce11,0xba947c75,0xbad7eb5c,0xbaf3db8e,0xbaf58808,0xbb06bc9e,0xbb125196,0xbb0d3dff,0xbb13909f,0xbaba7851,0xba54a9c3, -0xba8fc0b1,0xba36f24d,0xba1113ed,0xba7989fb,0xba0df021,0xba283010,0xba408b56,0xba2fa8de,0xba157c4e,0xba43495d,0xba5b8ce4,0xba5e9c16,0xba35dbc5,0xba0b4d93,0xb94b75ea,0xb90991bf,0xb98e1507,0xba18a420,0xba6d7f55,0xba8e366b,0xba8b53dc,0xba7f557f,0xba632a44,0xba322c15,0xba7044cd, -0xba8ac48b,0xbaaee9af,0xba5fd520,0xba378d22,0xb999b97f,0xba1829d1,0xba03f78d,0xb8d5fd77,0xb9e4a466,0xb9ec7748,0xb9da7357,0xb9b15c72,0xb9d0a0a8,0xba81cdf2,0xba1fd689,0x39a336b8,0xb85737e2,0xba0ebade,0xba9daf5d,0xbac97d5e,0xbb162bfa,0xbb09de9f,0xbad97324,0xba6cd66a,0xb9229f2f, -0x399cecc7,0x3a91dd32,0x3a4b82ac,0xba3bd0b8,0xbaec113a,0xbb1ed5bc,0xbb10ac80,0xbaf8ee78,0xbad02217,0xba8a715f,0xbadd1da5,0xbb092c7c,0xbb31c37f,0xbacbcac4,0xba4104b9,0x3a25bbb8,0xba300761,0xb9766ba3,0x3af398d8,0x3a8eb8e7,0x3a7845e5,0x39331c1d,0x39818e89,0x3913cd3b,0xba8c1119, -0x39df8304,0x39b6e0cf,0xba0f9137,0xba64657f,0xba960ddf,0xba7a2e15,0xbb14fe3a,0xbb3ef144,0xbb1a2b4e,0xbaafbf09,0x3991ff3d,0x3ac361ba,0x3b460ce4,0x3b1423f6,0xba23c239,0xbb2ecafe,0xbb7df6de,0xbb759e8f,0xbb4c2a68,0xbb2772bb,0xbaaa2c2c,0xbb14d351,0xbb3aea15,0xbb8695e3,0xbb04a095, -0xba71e51d,0x3af79343,0x39b1c40a,0x3a5a06ff,0x3b82e6a6,0x3b0556bf,0x3af0ca22,0x3acf55f2,0x3ad1fa84,0x3a649f6c,0xbaef55fb,0x3a290d81,0x3b3409ec,0x3a931fec,0x398806b6,0xbae4c24c,0xbb17ca62,0xbb977bf3,0xbb94003d,0xbb6ff758,0xba8e505c,0x3ad5f95f,0x3b12992a,0x3baea102,0x3b90f848, -0xba07e2cd,0xbb76f740,0xbbbd88c0,0xbba53be9,0xbb973f74,0xbb5ba02a,0xbab3dab5,0xbb3bfcac,0xbb7b9288,0xbbab4e89,0xbb1b1084,0xbae13fbf,0x3b9d0c1d,0x3a662ddb,0x3b267a7f,0x3c00508f,0x3bdad08f,0x3bbb6621,0x3b0a5de8,0x3b4b1e94,0x3b019a30,0xbaecb373,0x3b18cdff,0x3a93c5d0,0xba8403fb, -0xba5b8505,0xba20794a,0x3a7e5141,0xbb2babe9,0xbb98f431,0xbb8bb210,0xbafea18e,0x3abea448,0x3b862b7b,0x3bfbe924,0x3bd8db72,0xb8783939,0xbb968be2,0xbbe6b1dd,0xbbdc3f53,0xbbb88ca9,0xbb96a0eb,0xbad43a34,0xbb2921dc,0xbb5e8321,0xbb9db8da,0xbb338370,0xbaa689bc,0x3bb8ccbd,0x3b806a32, -0x3b91ac1f,0x3c0eddab,0x3c01d9d3,0x3bdb8dc0,0x3b8e439a,0x3bba3a10,0x3b5927ea,0xbb8e3458,0x3ab14f4f,0x3c17c411,0x3aea82c8,0xbaf66c1a,0xbbe0ca8d,0xbc59b74d,0xbc2e0e44,0xbb8bc993,0x3bed4c08,0x3bb47faa,0x3b9a65a8,0x3b93f9a4,0xbc2613ee,0xbc4fd91a,0xbbe346dc,0xbae0c72d,0x3ab44c26, -0x3b1aecf7,0x3ad9a6d7,0x3a3a7399,0x3885ed65,0xba8f830a,0xba5dc122,0xbaafdfa8,0x3b72985b,0x3b3c9bfe,0xbb8715a0,0x3b9297f3,0x3bd1cc4a,0x3ab947e3,0x3b0e0302,0xbb30e564,0xbc03393e,0xbc46ba95,0xbb82d0a6,0x3c2f60af,0x3c602b67,0xbc77bae9,0xbc263069,0xbc1e2b3e,0x3a63eb31,0x3ccb3a64, -0x3c1bb9af,0x3bcee2fa,0x3b8ab4ef,0xbb862597,0xbb8d2477,0x3b3a3a3e,0x3b952b72,0x3b72eb08,0xbb79049c,0xbb7516fc,0xbb8db82a,0xbb53bfd6,0xbb005021,0xbaef6b95,0xbac898d0,0xbaaec78d,0xba6bc555,0x3ae0c1a1,0x3a542f7b,0x3b31eb3d,0x3b9856a8,0x3b6a2d91,0x3ae79487,0xbb068b3a,0xbad8474e, -0x3aeae1f4,0x3c193863,0x3c4288e6,0x3b86a36e,0xbc89af16,0xbc8197fe,0x39cb2ed8,0x3c99b333,0xbafaa9f4,0xbc08cd8e,0xbbbcba95,0xbc205dc6,0xbbac12bb,0x3c97be44,0x3ad5abaa,0xbb1424d5,0x3aad1087,0x3b238fa7,0x3b628159,0x3b38fc39,0x3b732084,0x3ada8367,0x3b12cc86,0xb9ad8063,0xb9a4af0c, -0x3a26d626,0x392a776a,0x3a6700f8,0x3a9f2cba,0x3b4e484b,0x3b48becf,0x3ad407cd,0x3a3312e0,0xbaa41db9,0xbaa45e18,0x3b1ac15f,0x3b3efcf8,0x3baa6f27,0x3ac66a03,0xbbadea43,0xbbbd21a2,0xbba81d8a,0xbaa9aff1,0x3bede4c0,0xbb65e616,0xbbe94734,0xbc7bb7d0,0xbc526deb,0xbbf70a1e,0x3c981e66, -0x3be0004f,0x3bad2346,0x3b83c9b0,0x3baa70b7,0x3bcc0b75,0x3bdd4d95,0x3b7eb21d,0x3b15f2c5,0x3aab5074,0xbad5b68e,0xbb01ab7f,0xba29b9c4,0xba605af2,0xba059849,0xbaad2edc,0x3a5d49c2,0x39a71120,0xba470085,0xbae54ea3,0xbaad06a6,0x3a280d45,0x3b2bd420,0x3b6afb3e,0x3a76d948,0xbb8ea0e1, -0xbbe0cb3c,0xbac331d7,0xbb76a33e,0xbb0df786,0xbc2b3a28,0xbb9faaa0,0xbb619435,0x3a401a92,0xbaa92b40,0x396f66f1,0x39e0f888,0x3ba79ec2,0x3c12a036,0x3c18de49,0x3c34d696,0x3c138f4e,0x3bc6a7e9,0x3b1a251d,0xbaad4d7b,0xbb1c5ae2,0xbb45bb4f,0xbb698b18,0xbb844fac,0xbb793878,0xbb8e6f04, -0xbb7f7f20,0xbb982897,0xbb72732b,0xbac5d29d,0xbb255c9f,0xbb1874d4,0xbaaf71f0,0xbb12fc39,0xb9f91d4a,0x3a3f052b,0x3b4ec3d0,0x3b80fd9f,0x392d7028,0x3a357ed0,0x3bb6bb6c,0x3bc6b8ae,0x3c4f366a,0x3c8aef69,0x3c391b22,0x3c31be2b,0x3c33bd70,0x3c60c6fc,0x3c15b019,0x3bcdf59d,0x3b14d428, -0xbaceccbe,0xbaca970c,0xbb2af621,0xb9b42c93,0x3ab0dc2f,0x3b23d2ca,0x3b075af6,0x3b055d41,0x3ade790d,0x3a83f5d5,0x39087465,0xbb2627e9,0xbb35ebeb,0xbb4c83c8,0xbb6546c4,0xba0df8b4,0x3af13bc0,0x3b33caad,0x3af3c13f,0x3a2189a5,0x3a7b572f,0x3b170bb7,0x3b377db2,0x3bb218e2,0x3b5f859e, -0xbc088350,0xbbcf12e8,0xbba3ed16,0xbb3542fc,0xba62745c,0x3a6afd28,0x3a8e6728,0x3acadcf0,0x3b191210,0x3b4a8620,0x3b7d7942,0x3b4fe5e7,0x3b3107fb,0x3af71756,0x3b1a3099,0x3b2a3d80,0x3b24fae7,0x3b372440,0x3b065501,0x3adaf591,0xb9b2c80f,0xbb2cced3,0xbb9cd237,0xbb8d10fa,0xbb85b1ec, -0xbb7c7986,0xbb4a4f9e,0xbb8011c9,0xbb6ac88f,0xbb9f8a31,0xbb9cd74f,0xbb6c3a4b,0xbb9fc916,0xbbbafa96,0xbc1cc79e,0xbc1558fa,0xbbc3a0da,0xbb2248b4,0xbb079ddb,0xbae6e04f,0xbb23bca1,0xba42bda9,0x3aa06a84,0x3b4c7eb7,0x3b7f1c61,0x3b75e9bf,0x3b7a0029,0x3b3e9674,0x3b3606f2,0x3b269af5, -0x3b3755b7,0x3b506484,0x3b43564c,0x3b3044ea,0x3b09eb25,0x3af5c652,0x398525a0,0xbaccc8b9,0xbb8344ab,0xbb6763a9,0xbb752609,0xbb68230b,0xbba942fb,0xbbb8e035,0xbbd09b88,0xbbdd9a80,0xbbf3596b,0xbc084e1e,0xbc0c5118,0xbc1d01b1,0xbc21e725,0xbc05ebd2,0xbb21fb01,0xbaf44758,0xbae7463a, -0xba5f4eba,0x399fa99c,0x3a1e473c,0x3a26a7cd,0x3a86dbaf,0x3a6f899b,0x3ac16527,0x3b180826,0x3b1a144a,0x3b29f812,0x3b2201e9,0x3b188f18,0x3b177b4d,0x3b103681,0x3af0e3bb,0x3ac44b1d,0x3abdc609,0x384584d4,0xba9dec48,0xbb26e48e,0xbb293fd7,0xbb40047a,0xbb38232b,0xbb7baf29,0xbb8c9e2a, -0xbbcd4bf0,0xbbc75657,0xbbf4422c,0xbc000bfd,0xbbe5cc97,0xbbb6b0e7,0xbbafb7c1,0xbb6545af,0xba12ea26,0x3987bcd1,0xb71f03ce,0xba1bd457,0xbabcb9df,0xbad08364,0xbad94f61,0xbae2971a,0xbabf9b7c,0xbab040f2,0xbac6ac67,0xbab0ca2e,0xba990aa9,0xba43110b,0xb9ffa6cf,0xb97cc542,0x37fd87a0, -0x39c36bf1,0x3a3c31e4,0x3a862fae,0x39b9fb0f,0x39734384,0xb7935e00,0xb9d43171,0xba829585,0xbab1cdb6,0xbab5d839,0xba82f8d0,0xba17b546,0xba4c9baf,0xb94cc2ac,0xba160aa8,0xba351e39,0xba2c8287,0xba356e5b,0xba387a87,0xb9389ef3,0xb906476d,0xb9819157,0xb8e530c1,0x383f492f,0x38b17fc6, -0xb88281bc,0xb96b79a2,0xb92c082a,0xb8a45482,0x38dcec63,0x39751c76,0x398fa61f,0x398710bc,0x394fb54b,0x393b4acf,0x392fdfc7,0x38f1e243,0x388b62d8,0x393de7dc,0xb8c09b5e,0xb993ae64,0xba129042,0xb9e32b96,0xba0297f7,0xba35c16e,0xba6677bd,0xba843143,0xbaa8ac8e,0xbac43c85,0xbabfce87, -0xbadd001a,0xba9db68e,0xba51ac93,0xba1f8fc4,0xb9a4639f,0xb90fb5a6,0xba346f05,0xb98fd536,0xb9d3552d,0xb9dcaf13,0xb9cb4159,0xb9ba0556,0xba132cc8,0xba2fbaa4,0xba3d36bc,0xba018192,0xb9a73a2c,0xb82f285c,0x38338333,0xb86089d8,0xb976816f,0xba29d78c,0xba607c19,0xba6aa6fb,0xba618997, -0xba4f4a3b,0xba27c5da,0xba57a025,0xba7357f5,0xbaa39e20,0xba1aa692,0xb9f95470,0xb994857c,0xb9f2db18,0xb9ca6bf0,0xb81b66e5,0xb9b14fc4,0xb9aa52f9,0xb9301b84,0xb9408a6e,0xb964c184,0xba2a5d24,0xb9b10941,0x39c79658,0x37db7f77,0xb936bb7d,0xba4b42b8,0xbaa5b4f7,0xbb0ec4e0,0xbb04298b, -0xbad52613,0xba1a21b0,0x393b5456,0x39e5fdaf,0x3a98697a,0x3a84bbf0,0x38dd8c4d,0xba9c1335,0xbaffcd17,0xbb01bded,0xbaf64010,0xbadb6cec,0xba980681,0xbad5609a,0xbafdf7c6,0xbb2576ba,0xba9adeee,0xb9dafb3b,0x39f2e12c,0xb9efd815,0xb81b5091,0x3aeb0246,0x3a747837,0x3a3b32ec,0x3a09c51c, -0x39b8a828,0x39cfe5e4,0xb9efacd4,0x3a1354d1,0x3a5990d2,0xb90d9a5c,0x387e23e0,0xb9964e77,0xba04d1c0,0xbb051c83,0xbb38b952,0xbb1a765a,0xba64fac0,0x3a30a01a,0x3acdd080,0x3b47e391,0x3b2fb61c,0x3a41c80b,0xbae8b8d9,0xbb517d7c,0xbb66b59d,0xbb55384f,0xbb433b7a,0xbaf088bb,0xbb27b26c, -0xbb3f699d,0xbb845dc6,0xbac25d97,0xb9d2874d,0x3aad788d,0x3a07a1c8,0x3a5964b9,0x3b6be26c,0x3ad59c18,0x3ad863b6,0x3b0b83ea,0x3ad5a56d,0x3a88ca0d,0xba38a056,0x3a9a2f42,0x3b2d88f7,0x3a7b1463,0x3a917c54,0xba42e129,0xbaf6f5b3,0xbb966398,0xbb987d9a,0xbb82414c,0xb9e866f6,0x3b0d618e, -0x3b0d4213,0x3ba60b30,0x3b9a160b,0x3af5236b,0xbb186e1b,0xbb9bbb10,0xbb9bf7f7,0xbba4d0c2,0xbb876ccb,0xbb0de94e,0xbb56d6fb,0xbb7535b2,0xbbb1eb97,0xbac35d62,0xba853d5d,0x3b8421ce,0x3a83a008,0x3b234c42,0x3c020f66,0x3bc16af2,0x3ba8c67a,0x3b379be6,0x3b42889c,0x3b194c01,0xba1ae6c2, -0x3b209dc6,0x3b0f327c,0xb8a45bc8,0x3a84d5bf,0x3a94e3b4,0x3aee314e,0xbb18b047,0xbb8ecf32,0xbb8d6abf,0xba992065,0x3afddb30,0x3b77d28e,0x3bf05293,0x3bf4acaf,0x3b308bd5,0xbb3bd3b3,0xbbc08ee1,0xbbd46cd5,0xbbcc15eb,0xbbbf6b9f,0xbb46f021,0xbb68567e,0xbb814dad,0xbbaac7c7,0xbb0767dc, -0xba4138dc,0x3ba62d37,0x3b626046,0x3b7e758f,0x3c112502,0x3c032ae2,0x3bd86144,0x3bad386a,0x3baf4c74,0x3b45cff5,0xbb23d73a,0x3b1da364,0x3b715fa3,0xbab4c5fb,0xbb833b31,0xbbfeffdb,0xbc5e5c16,0xbc426b4a,0xbbc10686,0x3bf5f6b1,0x3baafa27,0x3bab7135,0x3bfd87e1,0xbc09c5ed,0xbc48a43c, -0xbbfdd15f,0xbaf67050,0x3aafe99a,0x3b1c3fa2,0x3b215be8,0x3abb9dd9,0xb9053041,0xbaaa0419,0xba672e27,0xb9b3383c,0x3b546fed,0x3b362ef0,0xbb8bed2f,0x3bcd2224,0x3bf54bde,0xb9e8a85d,0x3a897e0b,0xbb799a37,0xbc066ba1,0xbc179e0a,0xbaa77a7c,0x3c29d7c2,0x3c10ecd3,0xbc254415,0xbbc5d937, -0xbba90be5,0x3b3df916,0x3cbe18bb,0x3c3b62c4,0x3c1201f7,0x3b93b69e,0xbb3c6a7b,0xbb6ff352,0x3a89488f,0x3bcd4037,0x3bcc04f9,0xbb8530d9,0xbb728e2e,0xbb9e2668,0xbb5a1840,0xbb21ea7a,0xbb334f7f,0xbb481f2b,0xbb342d2c,0xbb0a05df,0x3ac367b4,0x3a5349cd,0x3b396055,0x3b7bd66b,0x3b26b342, -0x39d58983,0xbb61f547,0xbaa69f5c,0x3b291c3e,0x3c118bdc,0x3c126451,0x3a820f7c,0xbc8aa59e,0xbc517bcb,0xba7b9eb8,0x3c8026a2,0xbbcc1cc6,0xbc20f645,0xbbd0327e,0xbc442bcd,0xbbfc3749,0x3c95ccc6,0x3b1bf894,0xba41c6ae,0x3b0687e8,0x3b4b1f37,0x3b41e755,0x3ab4061f,0x3b3a52e0,0x3ab562f1, -0x3b5762bd,0x39b3f656,0x39bd9d70,0x3a02b89f,0x390937d2,0x3a1c7578,0x3abfb5bb,0x3b2f9745,0x3b127ecb,0x3ac964cf,0xb8b71c13,0xbb078b4d,0xbaaa108e,0x3ae05996,0x3ae960d7,0x3b2c877d,0x3acee561,0xbba3e109,0xbba77f35,0xbbea61ce,0xbb7bcfb2,0x3b99a27c,0xbbc3e834,0xbc074206,0xbc5d6ec2, -0xbc7ca35f,0xbc289203,0x3c9f1dab,0x3bd2fbc5,0x3bc3a3af,0x3bdb6bf6,0x3b9d0701,0x3ba2ca85,0x3bc5586d,0x3b82e34d,0x3b27c744,0x3ad7174f,0xba8d77b5,0xbacf671f,0xb90b0b86,0xba14518d,0xb9fc5735,0xba8a76f6,0x3a1caf3b,0x378e71e9,0xba3ca6cd,0xbad96f7a,0xbab159fe,0x3a57e132,0x3ad09879, -0x3afdce35,0xbafecc47,0xbb71c6aa,0xbbb16d96,0xba2c157e,0xbbc5c60c,0xb8111978,0xbc05f27d,0xbb242d1c,0xbb09670c,0x3aa14060,0x3ac29e96,0x3b5397eb,0x3aa111c9,0x3b734d03,0x3bed9280,0x3c28a7d4,0x3c342cf2,0x3c16f463,0x3bc8a0f7,0x3b1be379,0xbaf05e4c,0xbb6ab6dc,0xbb7ab4c0,0xbb8c2ac3, -0xbb82b87e,0xbb93fd27,0xbba330a6,0xbb8428e6,0xbb84fb19,0xbb476758,0xbad4d139,0xbad60463,0xbad90090,0xbae8857a,0xbafde95f,0x37008522,0x3abcaded,0x3b28a642,0x3b652978,0x3ac987e6,0x3b39bc2f,0x3b1fb2ae,0x3a992635,0x3c087d15,0x3c646c50,0x3c20c207,0x3c2adc15,0x3c2ffa97,0x3c59d0af, -0x3c25e828,0x3c04b59a,0x3bb4e0b7,0x3a812a95,0xba0c067d,0xbae44429,0xb8895340,0x3ac85695,0x3b3ab3c5,0x3b03011d,0x3af7ed9b,0x3b020169,0x3a6142cb,0xb9c21fda,0xbb5f7152,0xbb6a265a,0xbb541143,0xbb532de2,0x3a399c5e,0x3b3f48f1,0x3b343332,0x3affbc20,0x3a22d74d,0x3a138d12,0x3b394c71, -0x3b4b64aa,0x3b88924d,0x3ab3d815,0xbbcd0783,0xbbbeddc0,0xbb2b6389,0xb9adb7db,0x3adcf680,0x3b23cd9a,0x3b13dbab,0x3aef28e5,0x3b1ce004,0x3b461f1f,0x3b7705ce,0x3b2fc4e5,0x3b26e3f7,0x3b0f13a4,0x3b2d5f6e,0x3b2af260,0x3af4f0a6,0x3b1d6b6b,0x3ab26ede,0x3a43f9f2,0xbae4e83f,0xbb72943f, -0xbb9a1267,0xbb762d97,0xbb607b41,0xbb79cd62,0xbb4643cb,0xbb60be12,0xbb16b337,0xbb42364a,0xbb193a6d,0xbaa0a903,0xbafaf777,0xbb2cc191,0xbbdaf580,0xbbc8e3e6,0xbbc08309,0xbb4ab258,0xbb170d22,0xbaea122f,0xbb39165b,0xba9775c6,0x3a3ddfe9,0x3b430c93,0x3b76cb19,0x3b656b49,0x3b6703f7, -0x3b24c325,0x3b19e169,0x3b14aa9a,0x3b2993e6,0x3b453924,0x3b2f81a9,0x3b1242d6,0x3aae056e,0x3a26bed9,0xb9faba0a,0xbb017be9,0xbb778a32,0xbb562227,0xbb528a6c,0xbb5d9fda,0xbb916730,0xbb9ae580,0xbba177af,0xbbaf3a9f,0xbbc7b25c,0xbbecab09,0xbbeb9907,0xbc0b454b,0xbc1e5b89,0xbc013907, -0xbb44ca64,0xbb055f80,0xbb0ad3a1,0xbaadf60e,0xb9a452f9,0x38f15803,0x38fb83d7,0x39c8212c,0x3a19de3c,0x3acd7f85,0x3b31d6de,0x3b327852,0x3b43d76a,0x3b37d3aa,0x3b257907,0x3b1ec18e,0x3b147de4,0x3adf24b3,0x3a8c9428,0x3a841f6e,0x3866f925,0xba72e3de,0xbb00bd8f,0xbb0fabeb,0xbb28999d, -0xbb224ec9,0xbb56e927,0xbb7e04b6,0xbbb0e0b3,0xbbb93b1d,0xbbe5d64d,0xbbf3b4bd,0xbbee69d1,0xbbd36f87,0xbbcf703e,0xbb88cbf7,0xb894de50,0x3980658c,0x392b8f17,0xb8219da5,0xba18a00b,0xba1d97a3,0xb9d18834,0xb98595d2,0xb9517300,0xba0c63b9,0xba77e7c3,0xba674ed8,0xba4e1d8f,0xb9d27100, -0xb8967be0,0x39277921,0x39f8b68c,0x3a6b425e,0x3aa6fe45,0x3ac8ca4e,0x3a8f1386,0x3a32eb84,0x39b821dc,0xb8bdccdb,0xba35a0c8,0xbaa4c6fa,0xbab5868c,0xba9131ba,0xba3f8e9f,0xba835afa,0xba071152,0xba5e2f13,0xba3d85f3,0x38929dd8,0x36a42252,0xb9c59482,0xba085399,0xba1071bd,0xba1a1cb5, -0xba038e05,0xb9b8aaeb,0xb9addbff,0xb9fc0797,0xba247999,0xba09fb81,0xb995dd31,0xb79a2fea,0x38ff1e13,0x39235051,0x38d9d766,0x37163432,0xb7b7c03c,0xb8933d8a,0xb9274291,0xb956d03e,0xb91bf38c,0xb960ed1b,0xb96a13ac,0xb994999e,0xba173e10,0xba04a43c,0xb9f07aae,0xba2068f0,0xba52ebe6, -0xba965359,0xbab2ff90,0xbab26ce4,0xbadde98f,0xbac9fd4e,0xbaabd44d,0xba60b346,0xba2c994a,0xba26794e,0xb9df0e74,0xb83a8c32,0xb90c56ab,0xb8ae74a8,0xb8cdde9c,0xb910b22d,0xb9d05497,0xba0430d4,0xba114b86,0xb99aaabc,0xb905b03f,0x38931de7,0x39553a94,0x392c2475,0x3904cabe,0xb9beaba2, -0xba1d2932,0xba3bf044,0xba3b039a,0xba31baef,0xba1538a8,0xba3b2cb8,0xba4d0b72,0xba92565e,0xb9ab7c67,0xb98d266b,0xb99516cb,0xb9bbd0af,0xb99b478f,0xb82f1fbb,0xb98d3119,0xb969d479,0x38065580,0xb8a2df3b,0xb8a50159,0xb9b75ae9,0xb9018325,0x39f96989,0x38d0fc8f,0x3930f09e,0xb9af205c, -0xba6b2e19,0xbb05d10e,0xbafd9661,0xbac548ce,0xb98bcc53,0x39fc188f,0x39fd48a8,0x3a975b74,0x3a9f7193,0x3a73d424,0xba0dd585,0xbab9a650,0xbae37f9d,0xbae63ef5,0xbad8b758,0xba9fb554,0xbac8e5a6,0xbadefe02,0xbb0e3ba7,0xba47eef2,0xb8a3763e,0x399b338c,0xb94a0857,0x392080e4,0x3ac0e02c, -0x3a29abf7,0x39d07516,0x3a503be8,0x39ca4c32,0x3a133be2,0x38e8a03d,0x3a3cfa3e,0x3aa40251,0x39b206f1,0x3a85278d,0x3a112566,0x35bf2dca,0xbaf0c373,0xbb31aa2b,0xbb0d1446,0xb9e4056b,0x3a7d6356,0x3ac11306,0x3b434024,0x3b45cffb,0x3b0bc003,0xba4c8417,0xbb1cba38,0xbb54c54d,0xbb50c813, -0xbb4e7014,0xbb13a620,0xbb3218a1,0xbb3777e2,0xbb6f74d4,0xba653ea5,0x391fcf05,0x3a568923,0x3a3e50b2,0x3a4a33ef,0x3b37d0c4,0x3a935890,0x3aaf207e,0x3b1faa9c,0x3ac61125,0x3a91945e,0x39861765,0x3ac9f1f9,0x3b2aa2a0,0x3a4271fe,0x3aebdb6e,0x396eb81c,0xba9e6d91,0xbb918736,0xbb9bb5c2, -0xbb856b90,0x397e8fad,0x3b29f474,0x3af09aa0,0x3b9864c8,0x3b9db788,0x3b8a8c24,0xba533476,0xbb693558,0xbb9241de,0xbba65ad6,0xbb94bb04,0xbb3b7308,0xbb658456,0xbb6009da,0xbba98660,0xb9ea0054,0xb9408b1a,0x3b548ecf,0x3aaa968d,0x3b262b6a,0x3bef0325,0x3b9c403f,0x3b8c7577,0x3b595f5d, -0x3b300adc,0x3b256d9d,0x3a1dac58,0x3b2cc915,0x3b472e88,0x3a80d09c,0x3b3a65c6,0x3b37d48a,0x3b30d460,0xbb0eee9b,0xbb809b56,0xbb814861,0xb9fe432a,0x3b10b906,0x3b54ce88,0x3bdf2067,0x3c041010,0x3bb478e0,0xba7681a7,0xbb937672,0xbbc9a5b8,0xbbd06591,0xbbd58103,0xbb88ab94,0xbb8c172a, -0xbb891f09,0xbbac7e55,0xbaa3c98d,0x37bfb289,0x3b91ace4,0x3b52f8f5,0x3b683044,0x3c0dbf50,0x3bff99f8,0x3bcdf90e,0x3bc750ae,0x3b9dd1e1,0x3b2da181,0xba3b3ab8,0x3b4a6f32,0xb9f3dc02,0xbb8cd684,0xbbc7eb6e,0xbc154bbb,0xbc624bed,0xbc4a7cf5,0xbbe75a36,0x3be54181,0x3ba8141e,0x3bbacc1a, -0x3c21ecda,0xbbda6edb,0xbc413a0a,0xbc0ef424,0xbb169941,0x3aab0d77,0x3b306955,0x3b5c8e01,0x3b1d1242,0x38d39fbb,0xba5723b2,0xb9bc57b2,0x3aa434eb,0x3b33c6a4,0x3b248552,0xbb8af8f0,0x3bfc5580,0x3c084928,0xbaad9f3c,0xb99aacc5,0xbbaa059d,0xbc092056,0xbbd121ae,0x3a9daec0,0x3c16d552, -0x3ba6de07,0xbbce3782,0xbaf18669,0x3786cb7e,0x3ba83423,0x3ca1c44a,0x3c50a2f2,0x3c35637a,0x3b9cff6e,0xbb065a07,0xbb5424a9,0x37c9ee18,0x3bf390a6,0x3c0857ec,0xbb472113,0xbb575c01,0xbba36c50,0xbb4ed397,0xbb2a4987,0xbb4a6af6,0xbb8a23f7,0xbb676df6,0xbb31470d,0x3a8b0537,0x3a327a9e, -0x3b2ed65e,0x3b4dcb32,0x3ad0c094,0xba42727d,0xbb8f6fe2,0xb9564549,0x3b6cb61a,0x3bfb8f5f,0x3bb57712,0xbb1b75b3,0xbc8354a4,0xbc31a8fe,0xbb0565b6,0x3c16fc3d,0xbc240ae1,0xbc27fea6,0xbbc46621,0xbc40647a,0xbc119e04,0x3c5405c2,0x3b4ea3be,0x3ad12ba1,0x3b1aee41,0x3b8317c2,0x3b3b7bed, -0x39877847,0x3b0a7973,0x3a9e80e9,0x3b824343,0x3a982c4e,0x3a90681c,0x374c19d3,0x38aa61ac,0x39a1bd47,0x3acb8d15,0x3b01c68d,0x3aa7f2de,0x3ab4f7aa,0xba38948a,0xbb24e5b9,0xba88bc91,0x3a90fb2f,0x3a3dad99,0x39b943c5,0x3ad5bc19,0xbb8ac1a3,0xbba0f0b3,0xbbf51365,0xbbab723f,0x39fd0871, -0xbc0c6f66,0xbc195cff,0xbc1f4184,0xbc80b864,0xbc3fcb60,0x3c70d06a,0x3bcec7d2,0x3bf0ba99,0x3c03dfaf,0x3b95842e,0x3b7bb32d,0x3ba994d1,0x3b870965,0x3b4b3938,0x3af76072,0xb92d3a1a,0xba804f02,0xb931f288,0xb9ff2d64,0xba23dc60,0xba591ccf,0x3959d0fb,0xb98640ec,0xba4e3c33,0xbab64a33, -0xba9e46fe,0x3a8257dc,0x39f4f7a2,0x39372fd5,0xbb88122d,0xbb356e32,0xbb60e025,0xb6b45af2,0xbbcac257,0x3ada53f9,0xbb7ef171,0x3a565ae5,0x3806d974,0x3b339fca,0x3b84f9ab,0x3bba1129,0x3b0c79eb,0x3b22ab05,0x3babe534,0x3c26e7b0,0x3c291f9b,0x3c12051d,0x3bcbfaab,0x3b0e800f,0xbaeb954e, -0xbb884f58,0xbb889991,0xbb992628,0xbb7f2b09,0xbb9f687f,0xbbabd60a,0xbb8a92ad,0xbb5b15fd,0xbb10beea,0xbacfe2d7,0xba43d0e5,0xba73ad42,0xbb0a57b6,0xbac0d48d,0x39c89b79,0x3b04af76,0x3afe57aa,0x3b466742,0x3b5ab57a,0x3b818e63,0xba45bc4c,0xbb7332f8,0x3af9861b,0x3bfe17d7,0x3bc94709, -0x3c10bd3f,0x3c25bcb8,0x3c518e7d,0x3c32cd10,0x3c225366,0x3c052caf,0x3b8477e7,0x3a962676,0xb9b9c4f2,0x3a7516c8,0x3aec1783,0x3b2e6749,0x3b0103d8,0x3ae6293e,0x3aee0bc0,0x39c6a50d,0xba970c63,0xbb839ce8,0xbb8bbbc5,0xbb5783c1,0xbb2bed43,0x3abe0958,0x3b59cde6,0x3b23b670,0x3b11ea0b, -0x3a854181,0x3a1b890a,0x3b5397a9,0x3b4e7b40,0x3b1d5683,0xb9cd259e,0xbb808ab0,0xbb7c0bf4,0x3a0b3860,0x3b23795e,0x3b95570f,0x3b8492d8,0x3b591d97,0x3b0b6e75,0x3b1931ef,0x3b32d8b9,0x3b59a474,0x3b0b8ea6,0x3b15e4bc,0x3b18e3a4,0x3b2bafb9,0x3b22bad4,0x3a983256,0x3af228c1,0x3a15694f, -0xb9e3ed38,0xbb41b3af,0xbb905a9f,0xbb894008,0xbb606c06,0xbb4a7c7f,0xbb71dcf4,0xbb39054a,0xbb34450a,0xba863750,0xba808712,0x38aa799c,0x3a91ed01,0x3a6bb95d,0x39ebd803,0xbb379b7c,0xbb3c20a6,0xbbb28299,0xbb6d6e7d,0xbb1bf312,0xbac462ed,0xbb11ea36,0xba689fcb,0x3a1fee52,0x3b30c9c1, -0x3b54ce4a,0x3b3938f2,0x3b2bded8,0x3adda16d,0x3ac6a6f7,0x3adf46d7,0x3b04c063,0x3b25cafe,0x3b17d4de,0x3ad64214,0x39f69041,0xba2569f3,0xba9b2166,0xbb15e3e6,0xbb5ef46c,0xbb49d558,0xbb44a00c,0xbb5ea41c,0xbb81e068,0xbb81d945,0xbb732140,0xbb8493f8,0xbb9cec6a,0xbbc3b782,0xbbbd51ad, -0xbbe952b1,0xbc0ea17f,0xbbe80b3a,0xbb6cd522,0xbb1e255f,0xbb202f17,0xbae40774,0xba68bbd7,0xb9bf5e8c,0xb995a549,0xb82fa95b,0x39d36157,0x3ac8fbe6,0x3b302eaa,0x3b307cf5,0x3b3ca1ed,0x3b2a5d2e,0x3b17ed8c,0x3b0f6670,0x3b0ddb10,0x3aaff7be,0x3a06ef9b,0x39a3dfe6,0xb96ede54,0xba6ff1d3, -0xbad73cda,0xbb017d0a,0xbb200e0d,0xbb25fe15,0xbb4bb74e,0xbb762cfc,0xbb9f7d0e,0xbbb1591c,0xbbd9ee60,0xbbe7671b,0xbbf080d8,0xbbeb682e,0xbbe9f2cf,0xbb9f4b45,0x383b8d7b,0xb8b4f55d,0xb83be5a7,0x39311b11,0x3811fecb,0x3910df4e,0x3a176ba0,0x3a68186b,0x3a513d69,0x394c027f,0xb993bb73, -0xb9960683,0xb952ae3e,0x391c8ffb,0x39b8b4f3,0x39c6c8c4,0x3a0a9f8b,0x3a6d4291,0x3a9c6957,0x3aaecb94,0x3a90bfac,0x3a047ce3,0x38e610e8,0xb9d417d2,0xba6f05d0,0xbac671c1,0xbae28307,0xbac6fb55,0xbaa1e586,0xbaca7aee,0xba943dfa,0xbac0b1cd,0xba971779,0x39ba6799,0x3998527d,0xb9ca3549, -0xba9e31e2,0xba9f506f,0xba96b1fc,0xba8f7b58,0xba78ff25,0xba75a7e2,0xba862e00,0xba8fca27,0xba8079ec,0xba2d2489,0xb9c5acd6,0xb9869967,0xb9856fd4,0xb9aba306,0xb9e3b028,0xb9e547ed,0xba01a9cf,0xba1f59fc,0xba2d586f,0xba30d50b,0xba286bd9,0xba19ec3c,0xba06d41d,0xba857dfc,0xba731847, -0xba4c4fed,0xba741d09,0xba94e8f1,0xbac56773,0xbae2a911,0xbae253ee,0xbb0ae662,0xbb0f71d6,0xbb06de42,0xbacdd9ce,0xbab9869f,0xbacac11c,0xb97c3580,0x38e3c483,0x383acab5,0x393a7e5c,0x38ee1430,0x37061c70,0xb999a0ac,0xb9c80fa7,0xb9d8a98d,0xb92229a1,0xb77c39f0,0x38b57c01,0x399465a9, -0x39a1935b,0x39d9c747,0xb904e0e8,0xb9c99ebe,0xba19932a,0xba1d1a62,0xba1a5efa,0xba0bd9b8,0xba1d153c,0xba1d45ed,0xba6351dc,0xb8cffb76,0xb8632f6b,0xb9591255,0xb94f9609,0xb934468e,0xb84e7b69,0xb92905ec,0xb8b89bfa,0x39678a13,0x377398d4,0xb75b18d9,0xb89e52f5,0x388c14b1,0x3a232de4, -0x38ff100a,0x39d1eabf,0x383da259,0xba048a0a,0xbaf05077,0xbaede96d,0xbab4827d,0xb7e1edbe,0x3a28ee10,0x39c12dd8,0x3a84a64c,0x3aa9090a,0x3ad2d721,0x383f8bf3,0xba6d82ee,0xbac7d565,0xbad3a843,0xbad3101e,0xbaa8e585,0xbab5d8bf,0xbaba07b4,0xbad9ea7d,0xb9a0b7f8,0x397a7c52,0x39464806, -0x38a72917,0x39a5d2fc,0x3a75fbc3,0x398ca738,0xb7ae1d66,0x3a6fdcf3,0x39b30f6a,0x3a286d9a,0x3a1f468e,0x3a5e56bf,0x3acb6a07,0x3a38a616,0x3ae7ea91,0x3aa09f7e,0x39fa96d3,0xbad2e411,0xbb217e17,0xbaf1c200,0xb8ad0499,0x3a8c8cce,0x3a959ce0,0x3b31bdb6,0x3b4d9a6b,0x3b5a3f56,0x39396563, -0xbaccb31e,0xbb4267af,0xbb44e9cd,0xbb511120,0xbb25c2d8,0xbb31c1c0,0xbb259ab2,0xbb4432e2,0xb95d0492,0x3a3a7b06,0x39eb7ef2,0x3a71f93c,0x3a194426,0x3ae06dc1,0x3a03ebac,0x3a6e1f81,0x3b1f3491,0x3aa0ccac,0x3a839d6e,0x3a7e224f,0x3ad920bc,0x3b243887,0x3a0ed4cd,0x3b10e856,0x3a90d3aa, -0xb9ab2525,0xbb8189d8,0xbb94aad1,0xbb83a638,0x3a5aca90,0x3b34f4f9,0x3aa16137,0x3b827cf4,0x3b979d7b,0x3bcbce50,0x3a283366,0xbb17131e,0xbb870aa0,0xbba02732,0xbb9a2129,0xbb5c6556,0xbb692bfb,0xbb428b62,0xbb916a25,0x3a2af452,0x3a451a5d,0x3b25f154,0x3ae13766,0x3b2785a9,0x3bc0c10f, -0x3b5c065d,0x3b4dfc52,0x3b61c9ed,0x3b1280d2,0x3b23b840,0x3ae5e3df,0x3b32503e,0x3b669244,0x3b0246a4,0x3b8c995c,0x3b87bec9,0x3b620616,0xbaf74f30,0xbb4f1fb1,0xbb57ac82,0x38702077,0x3b0fcd1f,0x3b1d9452,0x3bc45f7d,0x3c05c871,0x3c02305e,0x3a7ff1fa,0xbb45d60b,0xbbbbc7e0,0xbbcad858, -0xbbde1859,0xbba1f009,0xbb985870,0xbb868cb7,0xbb9ecd3e,0xb993007a,0x3a77c35e,0x3b7e296d,0x3b51127e,0x3b59fe04,0x3c007621,0x3becdc17,0x3bbaa23e,0x3bd5ad13,0x3b847701,0x3b09f7be,0x3a60a37c,0x3b587edd,0xbb580ca0,0xbbddea8a,0xbc0333d9,0xbc2b9dc1,0xbc5d36f6,0xbc48baaa,0xbbfccaf0, -0x3bcf6d3c,0x3baadb4c,0x3bcc322f,0x3c352f18,0xbba292a4,0xbc3631e1,0xbc1aa31b,0xbb4b309a,0x3a83f2a1,0x3b5657cb,0x3b92471a,0x3b739daf,0x3a411fe2,0x3988942d,0x3a2e1e5b,0x3b450300,0x3b0d240c,0x3b090f91,0xbb838f8b,0x3c0b0afd,0x3c0ec003,0xbabdd8c3,0xbac1e42f,0xbbd1526d,0xbc0cea28, -0xbb721b4d,0x3b51ab64,0x3bf83743,0x3b226229,0xbb61cd35,0x3b10bc2e,0x3b9df9fa,0x3bdca65b,0x3c75ae1d,0x3c53ec42,0x3c49a01e,0x3bb9c682,0xbacf2665,0xbb526f5a,0xb996ab0f,0x3c039fab,0x3c202f01,0xba9654dc,0xbb2ca894,0xbba19229,0xbb589d96,0xbb2cdbcc,0xbb4577d7,0xbb9b1eb0,0xbb686590, -0xbb30d63a,0x39c5cd42,0x39c68213,0x3b11ce2c,0x3b2a34bc,0x3a2d40c4,0xbae31e26,0xbb9bc29d,0x3a8945ed,0x3b8f6a51,0x3bc7cf82,0x3aeba8ce,0xbbbc4599,0xbc7040fc,0xbc1e50e0,0xbb1548a3,0x3a86a8a4,0xbc5188e3,0xbc205c2b,0xbbbe7452,0xbc15740b,0xbc04932b,0x3b96147e,0x3b8c1281,0x3b9255b7, -0x3adf1148,0x3b96a391,0x3b3a57d9,0xba017f86,0x3abfe61c,0x3a8b91a9,0x3b803332,0x3ae7087c,0x3acf6bcd,0xba56ebec,0xb7aa5d1f,0x38cd94c4,0x3ac7070f,0x3a951a92,0x399900be,0x3a850bd3,0xba91a667,0xbb256e91,0xba3d378b,0x3a32c018,0xb88991ba,0xbab14fb6,0x3acabc1e,0xbb50ba34,0xbbabefae, -0xbbcb4116,0xbbadb66a,0xbb8a9038,0xbc2bad61,0xbc203bfc,0xbbc20400,0xbc61d163,0xbc3c1d6a,0x3bccc1c6,0x3bcadd3c,0x3c0e8895,0x3bfc7f73,0x3b8a37eb,0x3b376fc6,0x3b90ef37,0x3b7f7e31,0x3b5c988a,0x3afbf5d4,0x3a3193a4,0xba0d213d,0xba61b988,0xba459c3b,0xba75d0a8,0xba227ae4,0xb977dd4c, -0xb9fd260b,0xba82bb65,0xba8295b3,0xba60fb10,0x3a7f6880,0xb9fc3419,0xbab60082,0xbbb2eca7,0xbaef901d,0xbaaaf33e,0x39b3cb11,0xbb956f27,0x3b560bfa,0x3ad8fdf6,0x3b9468d4,0x3b12c9a7,0x3b832b74,0x3bacc3cc,0x3bd8674a,0x3b3b033a,0x3a4cca7c,0x3b1fa1fc,0x3c109fef,0x3c190a59,0x3c0b2903, -0x3bd2ee7c,0x3b05bbdd,0xbab39fd8,0xbb90f66e,0xbb89fc6e,0xbb9d2e6e,0xbb814e24,0xbba23696,0xbbabc4f9,0xbb8fd06f,0xbb2cc86c,0xbab65aab,0xbaafe80e,0xb91cb80d,0xb9d227ac,0xbb0f8ad6,0xba6a2f1f,0x3a2cdb08,0x3b25d630,0x3aae6829,0x3b1db481,0x3baa028e,0x3b93567e,0xbb5ca1ef,0xbc03c561, -0xbba124ea,0x3a0c3a33,0x3aa199ff,0x3be6854c,0x3c1afbfc,0x3c3857d5,0x3c351bee,0x3c390839,0x3c240a49,0x3bdd4bde,0x3b44708f,0x3ab5773d,0x3b08855e,0x3b0d00ee,0x3b13b49c,0x3af73635,0x3ab0c36f,0x3a829db6,0xba07ffad,0xbb0ef804,0xbb8e9719,0xbb9ba83b,0xbb52aa70,0xbade1c64,0x3ae7a14a, -0x3b4fbbf3,0x3b0a0973,0x3b2ba14a,0x3acc5667,0x3a516bd0,0x3b52ffd9,0x3b3ba474,0x3a4e88fa,0xbacef1c8,0xbaab7388,0xba20e11f,0x3b7832ef,0x3ba4ddf4,0x3bdd5e37,0x3ba6d0bf,0x3b8558fa,0x3b22b209,0x3b08fe63,0x3b02c28e,0x3b20e98a,0x3aca6231,0x3afe2d63,0x3b0feb56,0x3b20ae23,0x3b1427ed, -0x3a029d50,0x3a9a2604,0xb965e03e,0xbacb6825,0xbb72da95,0xbb995298,0xbb65acce,0xbb56dbe9,0xbb483e82,0xbb67678b,0xbb25f55b,0xbaf781c0,0x3934a9df,0x3a6a39de,0x3b142083,0x3b5484de,0x3b65fefb,0x3b5dafdb,0x3aa51091,0x398391e4,0xbb99d16a,0xbb790fe6,0xbb10af3e,0xba6290a4,0xba3d4e83, -0x38528b14,0x3a627e17,0x3b128652,0x3b182586,0x3aeebb73,0x3aaa5144,0x3a1e5f75,0x3a0b77a5,0x3a762a97,0x3ab05695,0x3af6f70d,0x3ae2622d,0x3a5b5a70,0xb9fdb1fe,0xbaf1de32,0xbafbbd79,0xbb2c1b36,0xbb545326,0xbb487943,0xbb44f852,0xbb62a758,0xbb6ae6f7,0xbb5aa083,0xbb38f5d0,0xbb42036a, -0xbb6ab1f6,0xbb993ac8,0xbb8cd451,0xbbb34292,0xbbe6dcba,0xbbc12720,0xbb895933,0xbb4552c1,0xbb2e61c1,0xbaffd7b5,0xba947245,0xba2edb3f,0xba026931,0xb98537ea,0x399f457f,0x3aa7cafd,0x3b1073c6,0x3b1469fe,0x3b1a2d3f,0x3b080cc8,0x3ae64c1f,0x3ad22d16,0x3ae5ea2e,0x3a3c376e,0xb9939e57, -0xba25bd38,0xba65db2a,0xbaa93285,0xbaed687a,0xbb06147f,0xbb2368d7,0xbb356257,0xbb5120d3,0xbb804d3b,0xbb99360f,0xbbafabb3,0xbbd2659f,0xbbdc56da,0xbbed31da,0xbbf97a74,0xbbf92444,0xbbb0b161,0xb96a57b3,0xba378508,0xba203437,0xb8938ef1,0x39585d05,0x39f0dbf3,0x3a941ee4,0x3ad0ba59, -0x3ab978a6,0x3a4130c9,0x39a2eac6,0x397be542,0x39a50ac1,0x3a1df00c,0x3a23c19f,0x39cfc1b4,0x398fba87,0x3a0a01c0,0x3a35be12,0x3a30a5ab,0x3a2ea2cd,0xb80ce0e6,0xb9dec200,0xba883981,0xbabd015b,0xbafec5fa,0xbb123d51,0xbb0547d2,0xbaf3b726,0xbb128d4b,0xbafbb2fb,0xbb16b063,0xbafa12f4, -0x39172f00,0x38de5ed6,0xba581f5e,0xbaffc446,0xbafcc941,0xbae4806a,0xbadb3a39,0xbac7b627,0xbac5bbe8,0xbac5bee3,0xbac17397,0xbab46cdf,0xba8a697c,0xba54218a,0xba3c8f48,0xba42a857,0xba570dfc,0xba770b62,0xba70eb55,0xba7e85ec,0xba9034c7,0xba9a1e37,0xbaa6f22a,0xba9b67fe,0xba92f352, -0xba808e79,0xbaca809f,0xbabf3f60,0xbaaa90fc,0xbac0a55c,0xbadb013c,0xbb067c0c,0xbb140153,0xbb12629f,0xbb2daf9a,0xbb3aaa2d,0xbb36251a,0xbb1a7f95,0xbb10df7a,0xbb247165,0xb8c8006c,0x39539d15,0x392d20f1,0x39c58920,0x3993ddaf,0x39095faf,0xb941d995,0xb98618b0,0xb9999bb7,0xb806413b, -0x38920ce9,0x38738eb7,0x39a8b9c6,0x39da1cf1,0x3a2cf337,0x38caad8e,0xb93623bc,0xb9eb090d,0xb9fb89bb,0xba0205b8,0xb9ffa052,0xba02700c,0xb9eae231,0xba29d1e2,0x38bc65ea,0x38dff8ba,0xb9341f9d,0xb8e93300,0xb90bc001,0xb91d50fe,0xb91306db,0xb83118c9,0x399d0500,0x380eae3a,0x3537bc11, -0x38a551bb,0x392edc1d,0x3a2de9f1,0x38c7e345,0x3a14a911,0x39cea395,0xb8eb88a7,0xbac40eab,0xbace5fd6,0xbaa2de7e,0x39707b28,0x3a4dc0fa,0x3963e6e2,0x3a5f6fcb,0x3aab5251,0x3b0cf5b8,0x3a1c382e,0xb9c6db9f,0xbaa68242,0xbabb6b97,0xbac85439,0xbaace9e8,0xbaa71990,0xba974787,0xba8f53c7, -0x38e64c89,0x3a06bf3f,0x38f5a6af,0x399facf8,0x39c64afe,0x3988ffdf,0xb95378d1,0xb9f6f358,0x3a699953,0x3951670d,0x3a227008,0x3a822471,0x3a6a8f08,0x3ad99d51,0x3a68fcab,0x3b1735e3,0x3ae6e4e4,0x3a71b1c0,0xba9cb707,0xbb02ea5e,0xbacc2bde,0x3995f311,0x3a95e7f0,0x3a3efc6a,0x3b1ad51f, -0x3b4d021e,0x3b8d4be4,0x3a93a3dc,0xba2ec129,0xbb2702e8,0xbb30912b,0xbb4a78d5,0xbb2f0578,0xbb2e1530,0xbb0f9127,0xbb0b9f59,0x39d02d35,0x3a9b4f2c,0x3969f5e4,0x3a891606,0x39a68236,0x39e58e54,0xb95331e4,0x39bf5164,0x3b10d081,0x3a4aa32d,0x3a38dffd,0x3ac2da29,0x3ad000be,0x3b155a1d, -0x398346d0,0x3b1fbd5d,0x3afa18e7,0x3a1108d9,0xbb489d38,0xbb7f7d82,0xbb7fe730,0x3ac47bf6,0x3b3eb6bc,0x3a22eac3,0x3b5995c0,0x3b8cda90,0x3bfd6253,0x3b059320,0xba785004,0xbb6bbc75,0xbb934803,0xbb98a47d,0xbb70ae23,0xbb668608,0xbb219006,0xbb5834f6,0x3adb8230,0x3ad9c3f5,0x3b00d5cf, -0x3b0cc1f8,0x3b201697,0x3b7c2472,0x3aea4633,0x3aee4865,0x3b543896,0x3ad3baa9,0x3b14c5e5,0x3b380505,0x3b2edaea,0x3b6ff564,0x3b2c824b,0x3bacafe9,0x3ba77e5a,0x3b83e651,0xba97ebb2,0xbb06d687,0xbb2ec745,0x3a252b18,0x3b0ca51b,0x3ac2e71b,0x3ba54b1e,0x3c020e37,0x3c22626f,0x3b3dd36f, -0xbab356c9,0xbba3aa8d,0xbbbb1285,0xbbdb8b9d,0xbbb0abff,0xbb9e9da7,0xbb76bc2a,0xbb819709,0x3a3fe8de,0x3af607a2,0x3b5e0d48,0x3b59174c,0x3b4ee18c,0x3bcdf36a,0x3bcd9b1c,0x3b9ec917,0x3bd3a1a1,0x3b4862a7,0x3aac933e,0x3b101a07,0x3b4d5d17,0xbbb1c84d,0xbc0d7344,0xbc19039e,0xbc383cfa, -0xbc4c4916,0xbc3e80c2,0xbbfd1a14,0x3bc4e6eb,0x3baf1df9,0x3bdfea54,0x3c42b244,0xbb426f11,0xbc24e733,0xbc25c53a,0xbb8c99de,0x39b2b013,0x3b757fbc,0x3bb938fc,0x3bb50c69,0x3b14b37e,0x3af918dd,0x3b07b0cc,0x3b94e072,0x3ac2abb2,0x3ac567a5,0xbb6349a1,0x3c09fbf5,0x3c0bf8d4,0xba8c316f, -0xbb12642d,0xbbe62045,0xbc0f05ad,0xbaba11cf,0x3b95764b,0x3bc57b31,0x39f1b518,0xba4a5e28,0x3bbed6fb,0x3c0aa49b,0x3bed3358,0x3c1f7153,0x3c4e3cd4,0x3c53c0b4,0x3bd483b7,0xbaa28987,0xbb5e920c,0xba20afb9,0x3bfd3a8b,0x3c2a8077,0x3ac897e8,0xbadf3479,0xbb94f611,0xbb595ae9,0xbb285b99, -0xbb272003,0xbb938a59,0xbb404114,0xbb0f4704,0xb9d942d5,0xb87372c7,0x3accf53e,0x3b0f13ec,0xb98f9f76,0xbb2aff0c,0xbb98bc8e,0x3afdc613,0x3b93a24e,0x3b8c8ad3,0xbae7a109,0xbc0dde06,0xbc5b9685,0xbc0a7d16,0xbb092612,0xbc00dd3a,0xbc720c3e,0xbc116657,0xbbc565ac,0xbbbdaa1f,0xbbc6321a, -0xbb3f9a97,0x3bc35b88,0x3bf19843,0x3989a98e,0x3b978567,0x3b3536f7,0xba0983dc,0x3a6d7889,0x3a7c24e5,0x3b5f1029,0x3b088a05,0x3af17b89,0xbad5f6b8,0xb926bdcc,0x380c03cc,0x3ab986fa,0x39bbe0ee,0xba0c71b1,0x39f1bd88,0xbaaa8fd1,0xbb1018b8,0xba074f50,0x39b419f1,0xba165ecd,0xbb2646db, -0x3abf1e97,0xbafc7cc8,0xbbccb5a2,0xbb821756,0xbb9c4397,0xbc100d03,0xbc3b02e3,0xbc18afab,0xbb4ead5f,0xbc33e193,0xbc28a0ca,0xbaee5c1b,0x3bd50448,0x3c23384e,0x3bc67644,0x3b743321,0x3b06495b,0x3b76cbd9,0x3b6acb88,0x3b5b347a,0x3adc940b,0x3a98876e,0xb9b530e4,0xbaf3cc00,0xbaaef052, -0xbaade7d6,0xb9c0d615,0xba1975ff,0xba1d1201,0xbaad37cd,0xba09a040,0xb9bdbdfe,0x3a443c56,0xba945136,0xbb246794,0xbbc33ce9,0xba4f6a46,0x3a5a103d,0x37fe43d4,0xbb11e656,0x3baa1df8,0x3c03b0a2,0x3c0c719a,0x3b96803c,0x3b958069,0x3baecd8d,0x3bc7bc96,0x3b30b06f,0xbab0502a,0xba3e3d2d, -0x3be1c232,0x3c02a8c1,0x3c017054,0x3bd95ce1,0x3b142dad,0xb9e55e26,0xbb896983,0xbb826b70,0xbb98f390,0xbb86e233,0xbba077cc,0xbba77ec7,0xbb914fef,0xbb0a196e,0xba4ed8c5,0xba6aed52,0x386d0f5e,0xb94567cb,0xbb080c0b,0xb976dd96,0x3a7caa5e,0x3b44337a,0x3a558395,0x3ad43d66,0x3bd556fa, -0x3b9f6ea4,0xbbb69cfd,0xbc39b7c7,0xbc2bec44,0xbbb5f528,0xbb30986b,0x3bb7f087,0x3c117028,0x3c19cd9d,0x3c31b855,0x3c45d59c,0x3c367a13,0x3c0ca8fb,0x3b94b73e,0x3b703cfa,0x3b41888e,0x3b13178e,0x3af8dbba,0x3ad853cb,0x3a2cc674,0xb99da7a6,0xbae2e9e2,0xbb56d179,0xbb941080,0xbba3ac8e, -0xbb47f1a8,0xba2c195e,0x3adda0f2,0x3b2a0fc9,0x3adb4208,0x3b3d8172,0x3b00e146,0x3a8fb9f1,0x3b37f7b5,0x3b1ef279,0xb960f223,0xbb131df5,0x3acc0176,0x3b3c8424,0x3bdb0122,0x3be42cbd,0x3c02b533,0x3bb63cb2,0x3b93f1cc,0x3b3c09d6,0x3affbc11,0x3aac927a,0x3adc88d0,0x3a951269,0x3ac1e3f8, -0x3adf574d,0x3b08c797,0x3af91cb8,0x38af2ec8,0x3a08721f,0xba662e05,0xbb1fddf4,0xbb803db8,0xbb941e1f,0xbb3eb1a2,0xbb5375ec,0xbb501070,0xbb5e2b3c,0xbb0c8bbf,0xba78905c,0x3aa3e54e,0x3b26721a,0x3b85723b,0x3ba4ef10,0x3bb63b4b,0x3bbaf7dc,0x3b94ffe5,0x3b4e3c3f,0xbb6cda4a,0xbb6a1b38, -0xbae8bb42,0x373403fb,0x3a91bd93,0x3aa553a9,0x3aa9cb98,0x3ae41fdb,0x3aaec831,0x3a57e3d5,0x37b3058f,0xb9d5c948,0xb9a711db,0x391ce0e0,0x3a237b80,0x3a925db3,0x3a84fa16,0x3699c7fb,0xbab0320f,0xbb36f733,0xbb2e02b7,0xbb46c07b,0xbb5c5119,0xbb56c6b4,0xbb54e86d,0xbb71cc96,0xbb5a216e, -0xbb3825e6,0xbb0beece,0xbb02d83c,0xbb1de850,0xbb57ec80,0xbb38cf48,0xbb77113a,0xbbaa8ae9,0xbb92b9bd,0xbb994106,0xbb6345d6,0xbb2d6742,0xbb008bd9,0xba90e118,0xba4b9e14,0xba0439c4,0xb97fff94,0x3958c08e,0x3a570c43,0x3ab22fd3,0x3acdf036,0x3ad3986f,0x3ac145b3,0x3a8881ba,0x3a576f84, -0x3a810bd3,0xb8f821b3,0xba997364,0xbad3232b,0xbae5c6f2,0xbb00d08f,0xbb1e215a,0xbb225ae7,0xbb3a0785,0xbb54d066,0xbb651ff4,0xbb8a6aa3,0xbb99c85f,0xbbae6900,0xbbcaf0d9,0xbbcd8c17,0xbbe2af0a,0xbbfbcaae,0xbbfc8908,0xbbbb1604,0xba63adb2,0xbacb08a8,0xbab9c975,0xba2305de,0x37bb9f0d, -0x39da6bfa,0x3aa549b7,0x3af2d81c,0x3adaa2b6,0x3a8b5063,0x3a412033,0x3a1424a3,0x3a0f32f5,0x3a37e16a,0x3a113463,0x391d923b,0xb9469f8d,0xb8b8716f,0xb84acd04,0xb97b8d7f,0xb891f911,0xba4c5024,0xba902880,0xbae83dbf,0xbb0808c3,0xbb1d76cb,0xbb371ffb,0xbb2afc60,0xbb27ac80,0xbb48039e, -0xbb3831d0,0xbb5b3f6d,0xbb3f0039,0xba104e8f,0xba14df96,0xbacca5ae,0xbb27657f,0xbb22644e,0xbb10486c,0xbb09d407,0xbb0029b7,0xbafd2d45,0xbaf1713a,0xbadfdd33,0xbada979a,0xbab91b34,0xbaa1551a,0xba9830d5,0xba996852,0xbaa0ba02,0xbab26f52,0xbab047d9,0xbab82d31,0xbacaa622,0xbad70866, -0xbaecde4d,0xbadf016d,0xbadb9695,0xbac97cd2,0xbb05bef0,0xbb024c4b,0xbaf67114,0xbb07d13c,0xbb13513e,0xbb2bfc28,0xbb37bc4b,0xbb33c9c9,0xbb4d73d5,0xbb5b2b45,0xbb580a67,0xbb465f51,0xbb3bfa7f,0xbb56ea2f,0x38902465,0x39823bd2,0x3996ccd4,0x3a0e1b8e,0x39e70178,0x39995526,0xb7de9210, -0xb8ba0613,0xb92e5cb4,0x38f401b9,0x393dd3cb,0x384a597c,0x39c73270,0x3a0d1939,0x3a68a051,0x39aef5bc,0x3880c74e,0xb98a5470,0xb9a74c76,0xb9bff834,0xb9ceabfd,0xb9d372c0,0xb9a8605e,0xb9e67b2f,0x397ea2b6,0x395abaf8,0xb91e5c4d,0xb8922eee,0xb91748c6,0xb99735db,0xb93f36c1,0xb886935d, -0x39a15381,0xb74ae91b,0xb6c10958,0x393dd564,0x39495868,0x3a16492b,0x3881f3c3,0x3a3b363b,0x3a3fa406,0x39b6c1a7,0xba878534,0xba9e3056,0xba8ee741,0x3a0f0ada,0x3a823d21,0x390c320f,0x3a54fc59,0x3ab5d3ab,0x3b290a3c,0x3a93e611,0x393f1ba2,0xba71e5d2,0xba993ac8,0xbab3cb8e,0xbaa7751c, -0xba9ad9ef,0xba69f98b,0xb9f6b0f1,0x39f35749,0x3a414c07,0x38b54dfe,0x39f4348f,0x39b4257a,0xb9e05255,0xba3a8504,0xba6beddd,0x3a504e3c,0xb7c945f6,0x3a03817b,0x3aa8fb65,0x3a629768,0x3ac7f4ae,0x3a7c5c1a,0x3b2b6c34,0x3b0dab16,0x3ac0acb0,0xba15c6fd,0xbaae2d25,0xbaac6696,0x3a3d7215, -0x3aaae58f,0x39c831f6,0x3b0b0f73,0x3b4e4848,0x3ba5b897,0x3b06b530,0x398bb4d4,0xbaff8b99,0xbb1363c7,0xbb393454,0xbb30a19c,0xbb27dfcb,0xbaebf159,0xba91f582,0x3a6a4580,0x3ac79706,0x38daaa1a,0x3a8c3ea7,0x3745441a,0xba5af6b4,0xba7a9882,0xb99e47b7,0x3af30cb6,0x39450214,0x3990721a, -0x3afa97d5,0x3ab1b9a7,0x3aedceed,0xb900b107,0x3b258090,0x3b278d62,0x3accb04c,0xbaf6d79d,0xbb4152ed,0xbb77454c,0x3b1231a2,0x3b52adff,0x392077e0,0x3b40e220,0x3b85df33,0x3c0e6175,0x3b5c34f4,0x39f65019,0xbb3bc2f7,0xbb801ca4,0xbb8fa2d4,0xbb7d03bf,0xbb5e3ceb,0xbaf946b7,0xbaec912d, -0x3b261778,0x3b1f619e,0x3ac6ab77,0x3b22f1f8,0x3b0d52d9,0x3ac4f300,0x3923948d,0x39c50378,0x3b35cf24,0x3a4b508d,0x3aea6d28,0x3b707506,0x3b1fc8c2,0x3b5bf7e1,0x3b3c8be9,0x3bbaefd3,0x3bb92a87,0x3b9a4060,0x366a8998,0xba36e0fc,0xbb0c63df,0x3aaafb61,0x3b12a54c,0x3a3ea1cc,0x3b8b9dea, -0x3bfa0de4,0x3c38bbe5,0x3b9b4933,0x39b6a979,0xbb811469,0xbba1ae5c,0xbbce3d65,0xbbb871b3,0xbba0ef4b,0xbb4f0a27,0xbb269c37,0x3adba399,0x3b2e5719,0x3b438c8c,0x3b6564bc,0x3b43a874,0x3b87c9d3,0x3ba1e275,0x3b70ef5d,0x3bc09616,0x3af3c537,0x39b0efeb,0x3b5d0412,0x3b2b3381,0xbbe5ce34, -0xbc1f900f,0xbc24d1da,0xbc3a31f2,0xbc35240b,0xbc2c0697,0xbbec9d50,0x3bb7eba5,0x3baf8b92,0x3bf485a3,0x3c4c8cd4,0xba5ef42a,0xbc10a2e6,0xbc2f5162,0xbbbe9fe9,0xba373488,0x3b841be8,0x3bd9e471,0x3bf51a9c,0x3b9e2d77,0x3b82218b,0x3b65422c,0x3bb5bd45,0x3a4c18a0,0x3a540fd4,0xbb251d1b, -0x3bf68722,0x3bfdb659,0xba13513b,0xbb203439,0xbbe12a45,0xbc096d99,0x3969cdf2,0x3ba7ef7f,0x3b959cb4,0xbaa42654,0x3af15685,0x3c0e7df6,0x3c296676,0x3bd5fe51,0x3ba3d619,0x3c44e316,0x3c5ae2b2,0x3beef6fa,0xba39e371,0xbb6c8d9b,0xbaceb3b6,0x3bd44185,0x3c2685c4,0x3b9d827a,0xba20a3f9, -0xbb82ab1a,0xbb426cf3,0xbb1a0063,0xbaf0919d,0xbb6fb0ce,0xbaf1302d,0xbaa94c47,0xba97919f,0xba14514d,0x3a48d87e,0x3afac4c0,0xba8ca0ab,0xbb52f0be,0xbb87b872,0x3b130955,0x3b83cea7,0x3b224c0b,0xbb925b86,0xbc2dad3f,0xbc45ff8b,0xbbdd5f43,0xbb0585f9,0xbc836990,0xbc7e4f50,0xbbfcd8d3, -0xbbd227a4,0xbb563872,0xbb834c64,0xbc0a02e4,0x3bf31c52,0x3c1b829b,0xbab9393f,0x3b857cb0,0x3b1dcdf5,0xb80d0486,0x39b8f0fc,0x3a42ea47,0x3b304b6d,0x3b07c352,0x3afdfc68,0xbaff5f96,0xb90ebba0,0x393f8d26,0x3aa51151,0xb98645eb,0xba95cf5c,0xb92a9f50,0xbaac42e5,0xbad6c495,0xb9b2696d, -0xb75b4695,0xba67683c,0xbb4bf2e3,0x3ab06de5,0xba50916c,0xbbfc81da,0xbade0e7c,0xbb8d3c81,0xbc521408,0xbc3aa481,0xbc08ab16,0xbae80291,0xbc126d36,0xbc17a21d,0xbc0356ec,0x3bde15b3,0x3c30e59f,0x3b6eee47,0x3b44ddba,0x3abc45b4,0x3b4061f5,0x3b50d38f,0x3b4d160c,0x3ab4315c,0x3a9eadc6, -0xb9c5bbb5,0xbb2d5527,0xbaf93af4,0xbacf622a,0xb83b6c8a,0xba49a376,0xba214312,0xbad9859e,0xb8b6c87d,0x39198951,0x39cb11cc,0xbabcb12e,0xbb4a92ca,0xbbbe60ed,0x39e22953,0x3b321ed0,0xba8ac677,0xb90b0d79,0x3c00b86c,0x3c6d54ca,0x3c46307f,0x3bd1213e,0x3b8c1373,0x3b8ffa83,0x3b98d622, -0x3b20b832,0xbb422b3f,0xbb56f22f,0x3b92e537,0x3bd0e500,0x3beaa993,0x3be0f9e9,0x3b2a0a48,0x3a055673,0xbb60b393,0xbb667807,0xbb8db707,0xbb8c0cff,0xbb9bbc79,0xbb9f0e8e,0xbb8b2b1c,0xbae234b6,0xb9db10bc,0xb98e11bc,0xb84dccf3,0xb977a10c,0xbae78f25,0x39eeb282,0x3aaf36e1,0x3b555fbb, -0x3a077113,0x3a5f594c,0x3be1f6e7,0x3bb589bf,0xbbf42abe,0xbc572b84,0xbc67f696,0xbc1eb5af,0xbb9eb6ea,0x3b84b503,0x3bf8ccae,0x3bf5e0a1,0x3c2a6cdd,0x3c49f05c,0x3c359af8,0x3c1bb926,0x3bb4dd58,0x3bb6d502,0x3b780bf3,0x3b186b07,0x3ac2b420,0x3a8f9df1,0xb9a8655f,0xbae93720,0xbb431525, -0xbb8a6455,0xbb9b4cba,0xbba44e99,0xbb3d15c4,0x3917bcdc,0x3aa62300,0x3ae94817,0x3aa36ecc,0x3b3c6138,0x3b084738,0x3ab67002,0x3b0514f4,0x3af717bd,0xba2d29e4,0xbb2e15e7,0x3b8d71e1,0x3bbd5e4d,0x3c0d806f,0x3c01c7f1,0x3c0648af,0x3bb62366,0x3b9d30f9,0x3b5afb30,0x3b0dc51e,0x3a8a6ac4, -0x3a9d7cc9,0x3a6caae4,0x3a812b9a,0x3a8e28e1,0x3ac4a76e,0x3ab1be3d,0xb9802711,0xb8d50d8a,0xbaae9ceb,0xbb436a37,0xbb718b3f,0xbb834f50,0xbb275d50,0xbb517203,0xbb57f449,0xbb530751,0xbad18b16,0x36b3ed57,0x3b11a12c,0x3b7d3f4f,0x3baebd4e,0x3bcc3712,0x3bdc4e45,0x3be5ec1f,0x3bd7fd5e, -0x3bb60a3a,0xbb209f7f,0xbb4d6d96,0xbaac90f7,0x3a5d3bf3,0x3b30c772,0x3b178941,0x3ad8ac8c,0x3aa08df4,0x3a0f3b7c,0x389fcb5c,0xba6d1660,0xba9aee17,0xba83f2f8,0xba0ffbd7,0xb8e079fc,0x39a7382b,0x3995473f,0xba3ad2e3,0xbafc8089,0xbb568cec,0xbb50c0d4,0xbb5cb232,0xbb6ab583,0xbb6d2256, -0xbb6d71f1,0xbb832a9e,0xbb506c96,0xbb182b8f,0xbac20dd5,0xba9017b8,0xbaa89977,0xbaf6ba27,0xbac8af8b,0xbb14a82a,0xbb6bdca4,0xbb491279,0xbba08af6,0xbb6d8eb3,0xbb228d6e,0xbafabbe8,0xba897f6c,0xba5d55fc,0xb9e7b5cb,0xb90aeadf,0xb599d759,0x39352c5e,0x39925bdb,0x3a41c371,0x3a4fc2c6, -0x3a5b7a46,0x3995253d,0xb80ea67f,0x36bbdaee,0xba82d585,0xbaff2b6c,0xbb1c0008,0xbb284317,0xbb30c295,0xbb4db9c3,0xbb4b33af,0xbb5f3051,0xbb7f76b1,0xbb80ba2f,0xbb93dd7f,0xbb9c1520,0xbba89255,0xbbbe9da9,0xbbb75f24,0xbbcf1586,0xbbf1a618,0xbbf56703,0xbbbce27a,0xbaed343b,0xbb2a0fad, -0xbb1c818d,0xbab9beae,0xb9fee265,0xb8328500,0x3a60b825,0x3ac52fd9,0x3abd8580,0x3a89b38f,0x3a63065e,0x3a198dc3,0x39e8a13a,0x39f7c15c,0x39430ac8,0xb997ee22,0xba45d4be,0xba51a724,0xba686c7c,0xbaa18026,0xba7c4247,0xbad4b8b2,0xbaf3ad15,0xbb249551,0xbb311c88,0xbb3abd32,0xbb5bc465, -0xbb52ba74,0xbb573412,0xbb80743d,0xbb745d09,0xbb92c09c,0xbb840142,0xbace2d30,0xbacc74bf,0xbb22f529,0xbb40a8ae,0xbb37d544,0xbb237ff0,0xbb1c8b97,0xbb13c9ef,0xbb116612,0xbb05e6fb,0xbaf19062,0xbaf77c7f,0xbae48c17,0xbad5e10d,0xbacc6401,0xbac7792c,0xbac9b6b9,0xbadc2606,0xbadddf84, -0xbae86c71,0xbafb5246,0xbb0449ec,0xbb11c0ae,0xbb0bc75d,0xbb0d5ea7,0xbb05e152,0xbb20af8a,0xbb207083,0xbb1ca9f5,0xbb2ade15,0xbb332309,0xbb4a1f2d,0xbb538f39,0xbb4ce7f2,0xbb624e9e,0xbb6c35c1,0xbb69a30d,0xbb62c029,0xbb580686,0xbb77da08,0x399d57ab,0x39ab767e,0x39d335bb,0x3a331b7e, -0x3a1ce16f,0x3a05769e,0x394811a3,0x390b231b,0x34e9142b,0x39a621e4,0x39b69130,0x38c52033,0x39fcb644,0x3a345d42,0x3a8eac5e,0x3a1a7ba2,0x39af2a4c,0xb75981c2,0xb8d28ea2,0xb93c7a7d,0xb9802ff7,0xb96eb1aa,0xb8ef48ca,0xb91a7f81,0x39e026f9,0x39bd8333,0xb84d4247,0x380c9e61,0xb8bed2ff, -0xb9ae56a5,0xb928f970,0xb81efa21,0x39bfcfc5,0x373dd30a,0x3851f5d4,0x39bb2371,0x399366fb,0x39fdd49d,0x38a765a9,0x3a634f80,0x3a8d59dc,0x3a6c8f5d,0xb9fd5571,0xba3fa1a9,0xba622afc,0x3a75e819,0x3aabde55,0x394b2a6f,0x3a7affb6,0x3acf2512,0x3b3dd087,0x3ada6b0a,0x3a51d31d,0xb9e7d969, -0xba511c5f,0xba91470a,0xba964e0f,0xba8218d8,0xba10b346,0x396edf47,0x3a5a25f1,0x3a778988,0x390b7bd0,0x3a1d496b,0x39a27960,0xba7afb2d,0xba967942,0xbaa64136,0x3a3bbb1b,0xb9612d21,0x39cbf786,0x3ad2cd3a,0x3a508293,0x3aa8da73,0x3a7f20a1,0x3b30c1c2,0x3b207954,0x3b0d545e,0x3955dba3, -0xba05c2b2,0xba835fbe,0x3aa997c4,0x3ad6467d,0x39618447,0x3b07475f,0x3b551973,0x3bb47f20,0x3b41728e,0x3aa46d76,0xba92a0e6,0xbad628b6,0xbb1c5952,0xbb269a20,0xbb166951,0xbaa9f51b,0x37003764,0x3ab0cf25,0x3ae6606d,0x38b408a7,0x3a81b7fb,0xb9b6472f,0xbaefbc2e,0xbae0c4d5,0xba835ff7, -0x3ac09d9d,0xb9d1d346,0xb9131ff0,0x3b1c1c91,0x3a8847d4,0x3a95f37c,0xb9db9dec,0x3b2541fa,0x3b4cdae7,0x3b33d7d3,0xba166eae,0xbaef97d1,0xbb6408c0,0x3b473516,0x3b75ef4d,0xb6a0fb84,0x3b428626,0x3b86b737,0x3c153df8,0x3b982ec5,0x3b01108b,0xbaf07eb5,0xbb4a0cb7,0xbb7be66d,0xbb7ed76e, -0xbb4cd634,0xbaa6981a,0xb89325cc,0x3b50216b,0x3b4588c8,0x3a94db0e,0x3b2d92ea,0x3adc1725,0xba498943,0xbac26fa3,0xba91f87e,0x3b0e243f,0xb93541c6,0x3a94df4d,0x3b90b02e,0x3b01faae,0x3b30572f,0x3b3da169,0x3bb80907,0x3bbfe6e9,0x3bb71904,0x3abbb76c,0x3a5c18d4,0xbac64d14,0x3b11753a, -0x3b2b9fc9,0x398f59a7,0x3b7649f7,0x3bf032e0,0x3c4342bf,0x3bd3f7e6,0x3b0dc776,0xbb2212db,0xbb7bb400,0xbbb4a0d2,0xbbb7855e,0xbb99f286,0xbb1841c9,0xba2ab117,0x3b25890e,0x3b528012,0x3b2e2cf7,0x3b6a5026,0x3b315b85,0x3ae49cb6,0x3b541a0b,0x3b0de8dc,0x3ba128d8,0x3a03e342,0xba346e55, -0x3b94303c,0x3af5f407,0xbc06662e,0xbc259377,0xbc282478,0xbc32dc2a,0xbc177fe7,0xbc162773,0xbbd8c0bc,0x3b9e3d75,0x3bad3d28,0x3c07815e,0x3c566613,0x3aac9a71,0xbbef025d,0xbc326cd5,0xbbf0d623,0xbafeb851,0x3b880843,0x3befcec9,0x3c14f45f,0x3bfbeafa,0x3bcb7282,0x3b97b784,0x3bbde9b2, -0xb62ab19f,0x38e28e39,0xba9c31fa,0x3bc4b2ed,0x3bd05a16,0xb91d92a0,0xbb1006f6,0xbbc38d69,0xbbedf1c1,0x3aafb6c1,0x3ba4cc6c,0x3b4ab73b,0xbb38b88b,0x3b99c5c2,0x3c336c5b,0x3c263c66,0x3b98236c,0x3a8011b7,0x3c3b4ec9,0x3c63ba05,0x3c035d73,0x39110fe9,0xbb75f62b,0xbb501a9e,0x3b94ba4c, -0x3c150cc7,0x3c01f7bc,0x3a281a5c,0xbb4f69b7,0xbb1564f8,0xbb04e9e3,0xba8c1ca6,0xbb157d9c,0xba02c12b,0xb94ebbaa,0xbae0f03f,0xba80b4ad,0xb886923c,0x3adfade7,0xbad92677,0xbb64b3bc,0xbb601397,0x3b080417,0x3b522f78,0x3a5ad92b,0xbbce3c13,0xbc3c494a,0xbc2e8d66,0xbb8411aa,0xbb3c5cc4, -0xbcb497ac,0xbc6ae96a,0xbbc1fe25,0xbbd8ef35,0xbad4ebbe,0xbb1b37e2,0xbc3bdfea,0x3c02af91,0x3c2879b1,0xbb3f7bcb,0x3b41791b,0x3adaa7bf,0x3a20623e,0xb960c2ff,0x39f899cd,0x3b02244b,0x3aeed0e3,0x3af8ad63,0xbac3e132,0x396d37ac,0x3a103e2d,0x3a8debd9,0xba34f0a9,0xbaca60fd,0xba44eb64, -0xba9ea217,0xba7d48af,0xb8f468b7,0xb9c503a0,0xba886e10,0xbb3ba2a6,0x3a8af994,0xb9598e27,0xbc13375a,0xb9f2b878,0xbb9931e0,0xbc8056a9,0xbc222036,0xbbd91164,0xba99f4ed,0xbc00b572,0xbc11133e,0xbc43cd9f,0x3bd08657,0x3c2fc330,0x3a9e1032,0x3b1335ad,0x3a6bb7ac,0x3b00fa12,0x3b2d87e1, -0x3b318f3b,0x3aa363ff,0x3a8a43d4,0xb9f753ff,0xbb3cd02e,0xbb0a274f,0xbacb9b63,0x39ab244b,0xba587280,0xba1d00c1,0xbafb310d,0x398a998d,0x3a0b0c7d,0x38d49661,0xbac89d65,0xbb541e32,0xbba39427,0x3ad71f88,0x3b813618,0xbb22e08f,0x3a332a75,0x3c37628a,0x3ca5caa3,0x3c68abe7,0x3be2097a, -0x3b4d5ced,0x3b2f9010,0x3b3e69e6,0x3b21ef20,0xbb6e8ce3,0xbb9ef15c,0x3ab12691,0x3b9b3aa7,0x3bd4aa83,0x3be5e195,0x3b471ea0,0x3aa14541,0xbb14d10d,0xbb3d8383,0xbb793c9b,0xbb8a4a07,0xbb91c3ef,0xbb8f7e6d,0xbb7295e7,0xbaae7f56,0xb94270b2,0x39dd9d4b,0xb99a8207,0xb9e019f8,0xbaad135c, -0x3a89403c,0x3adb1190,0x3b4f1ccb,0x3a1a26b9,0x39ca5433,0x3bcd3680,0x3be101f3,0xbc134e25,0xbc5bcabf,0xbc7e0e81,0xbc3d7b77,0xbbb59267,0x3b0f79b7,0x3bb28978,0x3bb444fe,0x3c192de0,0x3c442dff,0x3c2d17c5,0x3c2067ad,0x3bc3d798,0x3bd9ce9e,0x3b8cf934,0x3b1b44b2,0x3a88b8f0,0x39a64fb9, -0xbac0e290,0xbb52fe2d,0xbb83f9fb,0xbb9f7bc5,0xbba65346,0xbb9da820,0xbb31fae3,0x3a0a7492,0x3a31911d,0x3a782348,0x3a597c41,0x3b24d526,0x3af85e6f,0x3ad75c32,0x3a8a0029,0x3a9fcca8,0xba4b147e,0xbb464216,0x3bd36982,0x3c007438,0x3c19db26,0x3c00387c,0x3bf7510c,0x3bad5659,0x3ba70561, -0x3b85fad3,0x3b3065e9,0x3a8d5f36,0x3a70e7c5,0x3a519f22,0x3a2a3677,0x3a25dbc3,0x3a713e93,0x3a4cd2b9,0xba1a0c5c,0xba33bb9c,0xbacf176a,0xbb4827cc,0xbb519439,0xbb58f6b9,0xbb18db86,0xbb4aff95,0xbb56813c,0xbb3de6f2,0xba5ebd4a,0x3a7ee08f,0x3b48004b,0x3b9d6bcf,0x3bc28958,0x3bd96dd0, -0x3be4d56b,0x3bf0128c,0x3bf645d9,0x3bea6ac7,0xbacac0ea,0xbb2dec35,0xba7744d8,0x3abaf55d,0x3b727307,0x3b3e8a9a,0x3aecbb8d,0x3a661d47,0x3908db4a,0xb94d691f,0xba9267cd,0xbabc5722,0xbaadf7a9,0xba85a742,0xba2d5f81,0xb9a56128,0xb9e279f8,0xbaa4d11a,0xbb110f1d,0xbb55ffc5,0xbb5b6763, -0xbb646a60,0xbb7471ff,0xbb7d503b,0xbb7ef309,0xbb85ed55,0xbb42fcd4,0xbae91985,0xba53d2b7,0xb9857341,0xb97154a7,0xba02cd08,0xb9f47691,0xba861a5a,0xbb14cf13,0xbafbe035,0xbb9c2159,0xbb6c13b7,0xbb1c1d5d,0xbb041c4a,0xbaa2f0b5,0xba85d0e0,0xb9ed9a9a,0xb8c70f99,0xb9a57819,0xba06263d, -0xba3f3d53,0xb89dd9d1,0x3730b1f7,0x3951c9ba,0xb9edc53d,0xba628aa3,0xba7f077b,0xbae7f569,0xbb26f14e,0xbb3f6b5d,0xbb4fdce7,0xbb57f156,0xbb74a2f5,0xbb6d4f97,0xbb7ead7d,0xbb8edb09,0xbb8b4c4c,0xbb95e2d8,0xbb9a7f61,0xbb9b0728,0xbbaa123e,0xbb9872cb,0xbbb10f8d,0xbbdba68c,0xbbe268af, -0xbbb34c64,0xbb40ee5a,0xbb72cfc6,0xbb5e26ea,0xbb188a6e,0xba9ed952,0xba6b210f,0xb89a25e8,0x3a0fb02e,0x3a2ea471,0x3a0d901f,0x3a02016f,0x392ba21a,0xb8729461,0xb8bce9e4,0xb9df0fb5,0xba64842d,0xbab514cd,0xbac95cf7,0xbade0de6,0xbb0be00b,0xbaf0bced,0xbb1d9bd6,0xbb27a403,0xbb4cb858, -0xbb51a1d8,0xbb5091f4,0xbb76e0ca,0xbb7339a4,0xbb801ab8,0xbb99e6ea,0xbb9668d6,0xbbb634b4,0xbba7e6e9,0xbb343145,0xbb3169e9,0xbb683a00,0xbb4869d7,0xbb40635f,0xbb2e5457,0xbb28dc36,0xbb214412,0xbb1d8455,0xbb0d405a,0xbafe767f,0xbb069135,0xbb047338,0xbb008ebb,0xbaf580a7,0xbae9c0e5, -0xbae74d64,0xbafb2314,0xbb012dd2,0xbb07ac88,0xbb108c1b,0xbb176489,0xbb25f220,0xbb1ff595,0xbb2322c2,0xbb1de7eb,0xbb30a291,0xbb321f01,0xbb31c301,0xbb41dcf1,0xbb460f51,0xbb59a2bb,0xbb5ffc50,0xbb563f66,0xbb6590ea,0xbb69feea,0xbb696b45,0xbb6b733c,0xbb5fae06,0xbb82f553,0x3a12db97, -0x39df6f5b,0x3a099f67,0x3a501fe0,0x3a41b8e8,0x3a3facba,0x39df0a8a,0x39c23cb5,0x394971fb,0x3a0c870d,0x3a0e1d80,0x394e20f7,0x3a1dddeb,0x3a5abf83,0x3aa23b7c,0x3a5b70e1,0x3a22b65d,0x39960b04,0x3922ad3e,0x382db39d,0xb849506e,0xb7c1989e,0x38c8115b,0x3921d367,0x3a1dfb20,0x3a032823, -0x3882106f,0x39054b9d,0xb8044494,0xb9a80271,0xb917d444,0xb7ebfe95,0x39dc97ce,0x3853e2c9,0x3912ed78,0x3a0f9465,0x39c1c223,0x39a08650,0x3913bacb,0x3a8b576e,0x3abcbf96,0x3abe6788,0x38a4ea93,0xb9622a87,0xba10d338,0x3aacdfc7,0x3ad87c65,0x39d68a90,0x3a9e7ed1,0x3aebecac,0x3b4882c5, -0x3b0ccf6e,0x3aba0efc,0x391dc225,0xb9b526e4,0xba474b72,0xba70a698,0xba4d380d,0xb95e1b78,0x3a632ba0,0x3a944b2f,0x3a902a8a,0x39541d28,0x3a28e8ec,0x39639ce3,0xbaabe92c,0xbac65fd7,0xbac8dc9f,0x3a2c1176,0xb9be68d6,0x39918eac,0x3af68d34,0x3a2b62cb,0x3a7dccab,0x3a7d39c5,0x3b2dcc81, -0x3b2dc629,0x3b38147c,0x3a7e83bb,0x39a07f52,0xba1dfeb2,0x3af42fd3,0x3b049690,0x3995ea49,0x3b081b33,0x3b59c3d0,0x3bb7f3f0,0x3b747704,0x3b1212bd,0xb892c17d,0xba6a7053,0xbaec3905,0xbb10ccaa,0xbaff1e11,0xba4c1314,0x3a874df9,0x3adf6c25,0x3af4f557,0x38d2f89b,0x3a49c8e7,0xba44b449, -0xbb236a55,0xbb1ef09d,0xbaddf01e,0x3a92fbc2,0xba70a1aa,0xba019137,0x3b385ee5,0x3a38f164,0x3995035c,0xba1c2a9b,0x3b2bff82,0x3b741567,0x3b7e0f37,0x3a302932,0xba373a0b,0xbb3f0727,0x3b72d16f,0x3b8cce71,0x39958417,0x3b519dbb,0x3b8998f1,0x3c12e5da,0x3bbc6c8a,0x3b60b2f1,0xba0131fe, -0xbb06e3f5,0xbb4a45ed,0xbb718b9e,0xbb37521d,0xba3911ce,0x3aceac1e,0x3b6856f2,0x3b5b3334,0x3a5b50dc,0x3b23fc22,0x3a7ea9d5,0xbb301b3a,0xbb466ecd,0xbb2671a1,0x3ace5d9f,0xba90ffa2,0x39e1d39e,0x3ba236fd,0x3aad496b,0x3af96dae,0x3b3545bf,0x3babb8ea,0x3bbedcda,0x3bd16e45,0x3b362e6e, -0x3b154347,0xba48787e,0x3b4c7e03,0x3b4b62c4,0x396a991e,0x3b5b45d9,0x3be06d5d,0x3c411ea7,0x3c01d43f,0x3b82506d,0xba151992,0xbb2488d9,0xbb912b75,0xbbaab82f,0xbb8ae9cf,0xbabd96ec,0x3ab2d573,0x3b53f803,0x3b66d964,0x3b1e69da,0x3b5ed1bf,0x3b11f9d8,0xba19a325,0x3aa68c30,0x39edf6b7, -0x3b767e15,0xba69afd6,0xbad9e0ce,0x3bb542b0,0x3a85a7f8,0xbc17beb9,0xbc218f2c,0xbc2165ac,0xbc216bab,0xbbea89a1,0xbc00b3ac,0xbbc9fce6,0x3b6cdb91,0x3bab404b,0x3c180932,0x3c615963,0x3b87c04d,0xbb99c6eb,0xbc282614,0xbc0940fc,0xbb53b657,0x3b773178,0x3bf30c75,0x3c23295b,0x3c200dcb, -0x3c0413cc,0x3bae8383,0x3ba9d186,0xba7ab69d,0xba22cf72,0x39963acb,0x3b892c9a,0x3b958032,0x38d3a8c3,0xbad93388,0xbb941b7f,0xbbb05c4d,0x3b15eee5,0x3b999404,0x3ae3d279,0xbb8c78c8,0x3bfb83ed,0x3c4cd9b6,0x3c076459,0x3b054c51,0xbb28e166,0x3c2e9554,0x3c6937c6,0x3c075b02,0x3a9512c3, -0xbb77a55d,0xbbacfd7a,0x3b0b6c7b,0x3bf042e5,0x3c28393f,0x3b070e24,0xbb03ec2c,0xbaa45df2,0xbad8aac9,0xb9e47d9a,0xba0d7dd4,0x3a55c10d,0x3a60419d,0xbafdf6d6,0xba9687db,0xba550a3c,0x3ab560ff,0xbb05315e,0xbb5e5550,0xbb3168e0,0x3ad1d292,0x3b119466,0xba2ff3ca,0xbbf9be81,0xbc3e2719, -0xbc15dfea,0xba03ff97,0xbba4ceca,0xbcccab3d,0xbc39e488,0xbb6041e2,0xbbdc1b5c,0xba3dd3d4,0xbaa86371,0xbc3b8eb9,0x3bed89ca,0x3c1aba79,0xbb6e9fa0,0x3acbad98,0x3a3b20e1,0x3aa89eb6,0xba4adb43,0x391813f7,0x3aaede93,0x3ac289ff,0x3af46284,0xb9d231e1,0x3a723a83,0x3a8c6978,0x3a618f90, -0xba79038c,0xbae572fe,0xbaa5d231,0xba89942f,0xb99d85b5,0x388dea07,0xba22ec12,0xba8c36c0,0xbaf39616,0x39b49b68,0xba10a219,0xbc1755e3,0xbabe479e,0xbbca1e3b,0xbc89b818,0xbbe9c677,0xbb827908,0xba641432,0xbbe933e2,0xbc102cbf,0xbc56d022,0x3b9bb22d,0x3c17ff47,0xb98542c4,0x3ac9c393, -0x39d1ccba,0x3a7b209d,0x3b047962,0x3b0acd73,0x3a9778b5,0x3a696fa2,0xb9d2b51f,0xbb265b4a,0xbaf36b62,0xbaa16569,0x3a2563d2,0xba5d00f6,0xba181fba,0xbb03e5d8,0x3a074bd1,0x3a415c48,0xb8877681,0xbaca21e5,0xbb4baaa2,0xbb6832a1,0x3b251137,0x3b8b3fef,0xbb5ad6ee,0xb9d45554,0x3c712eec, -0x3cc4fbd5,0x3c6bf95b,0x3bca2e66,0x3aac19e2,0x3a480c6c,0x3aa13137,0x3b0b141e,0xbb74f051,0xbbb7aa93,0xbaeb8a68,0x3b46fae5,0x3bbc5b81,0x3bdf0b03,0x3b655731,0x3ae67f82,0xba6bae64,0xbb0e98d0,0xbb509166,0xbb7fc1df,0xbb8105e3,0xbb70165f,0xbb3a2fdf,0xba5dac9d,0xb7c2d8a5,0x3a807b06, -0xba1241b2,0xba2654b9,0xba61fcdd,0x3ab449e3,0x3af0a6d2,0x3b3842fc,0x3a92df84,0x39de0488,0x3ba62bcf,0x3c0fa0a9,0xbc27aaf5,0xbc4c1137,0xbc6e1db0,0xbc386fd4,0xbbaede26,0x3a1f2bf6,0x3b5229d1,0x3b6a4851,0x3c01008c,0x3c370c42,0x3c2464c2,0x3c1e3090,0x3bc6db94,0x3bea5593,0x3b8c9278, -0x3b0e42a0,0x3a0cfcdc,0xba1c634a,0xbb2a92f7,0xbb8ff96d,0xbb9e87e7,0xbbabed60,0xbbb22ff2,0xbb909ae9,0xbb23000e,0x3a03cabd,0x38ba86f3,0x39424a67,0x39a3f84e,0x3aea664a,0x3ac02d3c,0x3aee1495,0x37f17d7c,0x39ddfcf2,0xba5f7936,0xbb659a06,0x3bf86e35,0x3c11a79f,0x3c12bf8a,0x3be2b4a9, -0x3bcfc3da,0x3ba86b92,0x3bb8df48,0x3ba850a2,0x3b660cfc,0x3abd5c17,0x3a82826c,0x3a8a4278,0x3a3beab7,0x39de25e5,0x3a1567a8,0x39bcb483,0xba710749,0xba8fc0d7,0xbad44c6d,0xbb31acc1,0xbb2b5b4a,0xbb2d4733,0xbb1084ba,0xbb3e3308,0xbb47eb33,0xbb1b5cb2,0x3840b2b9,0x3af950dd,0x3b6b8ae7, -0x3bab3e1b,0x3bbf40e0,0x3bcac741,0x3bd52bc8,0x3be14995,0x3bf396f4,0x3bfecea5,0xba7509b9,0xbb063c54,0xb9f42478,0x3aef81ea,0x3b85c152,0x3b484d67,0x3af2d502,0x3a6a8d48,0x39620c9f,0x390e2ee0,0xb9dea7b4,0xba7c9532,0xba88c0cf,0xba927299,0xba6e3286,0xba3dfe87,0xba9491a0,0xbad6c0b8, -0xbb168258,0xbb41b4f9,0xbb537090,0xbb604808,0xbb781c30,0xbb813c1e,0xbb7f4a3d,0xbb78d409,0xbb2919c8,0xba9621b0,0xb92ad2f4,0x3a0469e2,0x3a3adf63,0x3a3f94d1,0x39e83209,0x383c9cb7,0xba8b0fb0,0xba8a31ee,0xbb8c2160,0xbb5f2318,0xbb18c2b2,0xbb134f85,0xbad86bbc,0xbaaf0b72,0xba2bbf60, -0xb9a47998,0xba3e0b07,0xba8ed747,0xbabbd322,0xba3bdfb4,0xba1c38b0,0xb9959462,0xba8997c4,0xbacb29ea,0xbaeef7c0,0xbb1b7bcb,0xbb42ce68,0xbb5528ee,0xbb683a91,0xbb702001,0xbb85b2b3,0xbb7d24a4,0xbb85021c,0xbb90e3db,0xbb8c3893,0xbb8d4dd9,0xbb914eda,0xbb83e057,0xbb8c55cd,0xbb61674f, -0xbb873a7c,0xbbb7d47f,0xbbbd357e,0xbb98ce9a,0xbb8a5ee7,0xbb9a0253,0xbb8c222c,0xbb52778c,0xbb0526ef,0xbb00e4e7,0xbaa8728b,0xba471694,0xba068a79,0xb9d81472,0xb9b8c213,0xba2b966c,0xba6b4800,0xba7654b2,0xba9c987e,0xbac41559,0xbaff9152,0xbb0b7150,0xbb144e74,0xbb32a0ae,0xbb238840, -0xbb4151a7,0xbb46fbb6,0xbb64aa0f,0xbb650caa,0xbb5b33bf,0xbb8255ab,0xbb83bfd3,0xbb8edc78,0xbbad7fc2,0xbbac8e11,0xbbd5c495,0xbbc7a6f5,0xbb82ba02,0xbb8373f3,0xbb988689,0xbb40f7ae,0xbb3d71f2,0xbb326292,0xbb2f5a7a,0xbb28f347,0xbb244416,0xbb121120,0xbb06945c,0xbb0ecfb4,0xbb119132, -0xbb0f6946,0xbb086d3e,0xbafebdeb,0xbaf82746,0xbb06eac7,0xbb0dce93,0xbb157169,0xbb1d8011,0xbb24729f,0xbb32123f,0xbb2cd9fa,0xbb311043,0xbb2e7695,0xbb35e356,0xbb3841d2,0xbb3ab335,0xbb4c9256,0xbb4ce9a0,0xbb5bd9ee,0xbb5f7512,0xbb532171,0xbb5a1323,0xbb5741c8,0xbb58ccbe,0xbb6315b8, -0xbb560dc1,0xbb821ec3,0x3a4bc153,0x3a072a8a,0x3a22fca9,0x3a605d59,0x3a5a68f1,0x3a6c2470,0x3a2099a2,0x3a124339,0x39bb2db7,0x3a38e5a9,0x3a36258c,0x399f5d93,0x3a358313,0x3a74d33c,0x3aac5b2e,0x3a866f89,0x3a617243,0x3a154584,0x39c8fa0e,0x3979e0df,0x390a8c03,0x392aad54,0x39944280, -0x39ead9d3,0x3a3da4cf,0x3a1e93a8,0x394a7b9c,0x396c110d,0x3848e6e5,0xb9809d34,0xb8e09ee7,0xb66e5815,0x39ff23bb,0x38ced779,0x3966acb2,0x3a441b4e,0x39f0b52f,0x38f1577b,0x3964ecc2,0x3aa4b013,0x3ae42200,0x3af88499,0x3a159efe,0x3982ad31,0xb96abd58,0x3acb63f8,0x3af353e6,0x3a2a43c2, -0x3ab88d19,0x3afd4a47,0x3b493404,0x3b22fcf0,0x3afc97d0,0x3a453fed,0x38b625a5,0xb9dc07e0,0xba2ff155,0xba146cf8,0x38917882,0x3ab133eb,0x3aada452,0x3a995aa9,0x398be97c,0x3a170852,0x387861bc,0xbac3fc61,0xbae95860,0xbade7dfc,0x3a1f9b0b,0xb9f53ac5,0x392ef89c,0x3b060399,0x39f407b1, -0x3a333469,0x3a791dad,0x3b2578d2,0x3b348d25,0x3b578b6e,0x3ad08511,0x3a7dc8c9,0xb95bc7a2,0x3b124b5f,0x3b148323,0x39ea2439,0x3b052531,0x3b5624b2,0x3bb219cc,0x3b8c4f40,0x3b474c46,0x3a86f0eb,0xb93b2256,0xbaa073d5,0xbaeb4539,0xbac9b39d,0xb9a490ae,0x3aeab899,0x3afc8df6,0x3af50c6b, -0x38b8432f,0x39e5d4e9,0xba998542,0xbb3b29f3,0xbb45b822,0xbb1637da,0x3a5495d9,0xbaaceb17,0xba463756,0x3b4b16a5,0x39df5dfc,0xba1a3bd2,0xba2816cd,0x3b366243,0x3b8a1b12,0x3b9c04d2,0x3ae2fb2f,0x39a6c560,0xbb0dcd9f,0x3b813e17,0x3b9390c0,0x3a466614,0x3b58fb1e,0x3b87e52f,0x3c09de0a, -0x3bd50d48,0x3b9798d9,0x3a7ece28,0xba86d42b,0xbb172f91,0xbb591a30,0xbb1e9ce7,0xb992488e,0x3b3a5d91,0x3b6e3203,0x3b6100f1,0x3a1b3311,0x3b05b2ff,0x38b01043,0xbb8571c1,0xbb8e7878,0xbb75c9e4,0x3a88f21c,0xbafd2d4b,0xb98724d9,0x3ba80669,0x3a125f9d,0x3aa25947,0x3b259733,0x3b99c5e9, -0x3bb7ac34,0x3be1ec2a,0x3b7b9cfb,0x3b5c369e,0xb8667124,0x3b7230f7,0x3b5d486b,0x39b954f5,0x3b3ab1e7,0x3bc89fcf,0x3c34d566,0x3c12280e,0x3bb56bb9,0x3ac50874,0xba9a9cc5,0xbb592d04,0xbb9560bd,0xbb69c22f,0xba2bbbe8,0x3b49a3a9,0x3b74cae0,0x3b6c9978,0x3b15949f,0x3b409507,0x3ac68f7f, -0xbb290a9e,0xba40ef51,0xbaa2a50d,0x3b2631de,0xbb0dbc33,0xbb22dabf,0x3bc99a6b,0x398266f3,0xbc266dec,0xbc158f71,0xbc11bdc9,0xbc087563,0xbbaee93b,0xbbe24dbe,0xbbc81dbb,0x3ae6ff7b,0x3b9a0bbd,0x3c239e27,0x3c67a88d,0x3c004bef,0xba44e836,0xbc125174,0xbc0caf34,0xbb8fa921,0x3b2821f7, -0x3bd90a10,0x3c1fdc15,0x3c2cf6aa,0x3c13321e,0x3bb0cba0,0x3b79e049,0xbb0bad5a,0xbaba015d,0x3ad083ec,0x3b1da0f9,0x3b2823aa,0x38814900,0xba9433f9,0xbb3cb06a,0xbb427469,0x3b530bed,0x3b8cf1ff,0x3a0fde2c,0xbbb8df3f,0x3c2f0599,0x3c5476b1,0x3bafaa8a,0xba437681,0xbbb613ce,0x3c19ced5, -0x3c6065c6,0x3c01fd03,0x3b0bd6b9,0xbb6bf596,0xbbfb07ac,0xb988f1b3,0x3bae4dee,0x3c38c69f,0x3b64091a,0xba2ec824,0xb82c6c65,0xbaa5a9da,0xb8b9dbcc,0x3a9c7604,0x3afa5aba,0x3adf1af4,0xbaea6bbd,0xba8660f5,0xbab0cb09,0x3a6c5a6a,0xbb113e7d,0xbb4388bd,0xbb0b05ea,0x3a7cf862,0x3a8deffd, -0xbb0afc53,0xbc0c4d0f,0xbc36a45c,0xbbf921bc,0x3b642ec6,0xbc02e947,0xbcd1fea9,0xbbf8c05d,0xba4e5b4f,0xbbe64e81,0xb99a52a5,0xb9db3915,0xbc19c1a8,0x3bada9ad,0x3bec59f3,0xbb5e70cc,0x39056de2,0xb9e30784,0x3ac3f92d,0xbab216df,0xb980728f,0x3a384a0b,0x3a8fa80d,0x3af510c3,0x3a71d798, -0x3ae769fe,0x3ad4aa11,0x3a18bc02,0xba8a4e5d,0xbae9c53d,0xbae64561,0xba6a141b,0x395737e2,0x390bb084,0xba37325d,0xba7d6cf5,0xba1f51f2,0xba8a5806,0xbafb14a5,0xbc045bb8,0xbb91d4a5,0xbc0d2e2f,0xbc8c5da7,0xbb8b7d68,0xba851ee7,0xba72a7f3,0xbbc44701,0xbc05454a,0xbc4794e2,0x3b0a471c, -0x3bd99ac2,0xb99aecb8,0x3a4aae6f,0xb9840b8c,0xb9608925,0x3a9fb868,0x3ab5531d,0x3a873dbd,0x3a481b7b,0xb900572c,0xbae18f08,0xbaa45ea5,0xba3e730c,0x3a50a0a5,0xba62a55d,0xba1a0865,0xbb02319f,0x3a28a2fd,0x3a3eab3e,0xb9179721,0xbaca74be,0xbb35d260,0xbaf21b3a,0x3b3a29f9,0x3b700564, -0xbb46b20a,0xbb467b7b,0x3c91d3d4,0x3ccb5c6b,0x3c4fb988,0x3b991214,0xba070208,0xba6e5c20,0xb9c93f83,0x3abcf9e5,0xbb6106cd,0xbbb6d7f4,0xbb7b3ac3,0x3acb894f,0x3ba09f53,0x3bc9b628,0x3b72ef14,0x3b032052,0x39ff3a5a,0xbac534c3,0xbb295d72,0xbb5dbc83,0xbb567083,0xbb34982c,0xbae64dbe, -0xb99b4d54,0x38de0b8b,0x3aa5f290,0xba3d5227,0xba516c24,0xba0eaf77,0x3aaa6d55,0x3ae7a99b,0x3b215788,0x3b0882a4,0x3a8476db,0x3b7fc620,0x3c338e97,0xbc35fe6e,0xbc2eda8b,0xbc42b8f7,0xbc196df1,0xbb965f59,0xb9e85f2b,0x3ab6ca27,0x3afb99db,0x3bcdc0b2,0x3c249016,0x3c184484,0x3c17373b, -0x3bbee5cf,0x3be53f86,0x3b812b82,0x3aed0bfc,0x3855544e,0xbad2bddb,0xbb702e6a,0xbba9c671,0xbbb14afa,0xbbb36cab,0xbbbcb085,0xbb7e2a7b,0xbb0e5921,0x391fe87b,0xb9daba02,0xb9e854e8,0xb9b4c485,0x3a54a978,0x3a73d8a5,0x3af47bf8,0xba61b662,0xb9b3a8db,0xba7ef6f2,0xbb880451,0x3bfde7f7, -0x3c0e6583,0x3bf43034,0x3bb549dd,0x3ba79b3a,0x3ba6ea06,0x3bcc7b14,0x3bce4164,0x3b964430,0x3b153eb2,0x3ac18eff,0x3add1bc1,0x3aa112e1,0x3a095a71,0x3a05301e,0x39002ce4,0xba9c5308,0xbab0bb21,0xbacdcef0,0xbb0f242b,0xbb09fa63,0xbb0e9cc7,0xbb1106dc,0xbb2d430c,0xbb2dd329,0xbad927db, -0x3a75dbbf,0x3b2d0bc7,0x3b758563,0x3ba46b4b,0x3ba6967f,0x3ba7f77b,0x3bb48583,0x3bc02c4e,0x3bd389a0,0x3bf55a69,0xb9dccd25,0xbaa400b2,0x393f2166,0x3b0bfbea,0x3b831d85,0x3b3de432,0x3af86d61,0x3aa5c6d5,0x3a4a7f98,0x3a73d64a,0x3a54c04f,0xb722b2a4,0xb9b2c664,0xba5fb234,0xba69a840, -0xba7de573,0xbae3769a,0xbaf6851d,0xbb14f22f,0xbb28f882,0xbb43434b,0xbb559b2a,0xbb758cfc,0xbb7ce56d,0xbb6f7d97,0xbb560e6c,0xbb034239,0xb9de3b28,0x3a01eca0,0x3aa138f8,0x3ad35be4,0x3af29cef,0x3aace8ff,0x3a86e78d,0x392cfb6b,0xb9ac0287,0xbb5c645b,0xbb3e5209,0xbb0c580f,0xbb1c43dc, -0xbb068d7c,0xbadba2db,0xba86f572,0xba55e487,0xbaa0597e,0xbac6c0ab,0xbae95681,0xba93f0fc,0xba83b60d,0xba20eec8,0xbac0c2e5,0xbb05ee09,0xbb231efd,0xbb3717fd,0xbb546934,0xbb5d7f86,0xbb70a806,0xbb77407a,0xbb87c14b,0xbb7a68c8,0xbb815fe2,0xbb8a0783,0xbb831a5e,0xbb75b6c9,0xbb77c57c, -0xbb432401,0xbb468b4a,0xbaf9861c,0xbb203ad7,0xbb8256aa,0xbb8404bb,0xbb573959,0xbbb09e10,0xbbaeeb6a,0xbb9f1654,0xbb7e4da6,0xbb34188c,0xbb41cb0a,0xbb1e752a,0xbb04d530,0xbae03bde,0xbac2cec5,0xbab4143d,0xbacdcae3,0xbae67e4e,0xbae6fcb3,0xbaf74304,0xbb03385c,0xbb19f74a,0xbb23c9f2, -0xbb296eb1,0xbb47a931,0xbb3c399f,0xbb540bb1,0xbb56f7b0,0xbb6e4edb,0xbb6be2d1,0xbb5c0a58,0xbb837e0d,0xbb8893ee,0xbb974e47,0xbbb95beb,0xbbb93fcc,0xbbebb758,0xbbdd872d,0xbba7134c,0xbbac105f,0xbbb6d047,0xbb2d8821,0xbb30d971,0xbb300fe1,0xbb2fd16b,0xbb2b3d14,0xbb27269b,0xbb1705e3, -0xbb113934,0xbb169225,0xbb1a10b9,0xbb17378b,0xbb0f3441,0xbb03f62f,0xbafd22bc,0xbb0a05e1,0xbb13d198,0xbb1c79b5,0xbb23c758,0xbb2a30ef,0xbb366fc7,0xbb3176b6,0xbb35394e,0xbb333465,0xbb32d674,0xbb34f7c8,0xbb377c1a,0xbb491137,0xbb45a1c1,0xbb4f2271,0xbb4ff721,0xbb42665e,0xbb3f1421, -0xbb357f1d,0xbb3a8ebc,0xbb4a0501,0xbb3d5db6,0xbb793f05,0x3a807e2e,0x3a27975b,0x3a38f6d1,0x3a6d16ae,0x3a6fd37b,0x3a893904,0x3a4ae46d,0x3a3b93e8,0x3a069dc7,0x3a5b4e83,0x3a564543,0x39e56399,0x3a4c0a1b,0x3a8524fa,0x3ab21ade,0x3a9b474d,0x3a8ce372,0x3a5bdb80,0x3a1b52a1,0x39dbab13, -0x399bc7b0,0x39bdf642,0x39fa2220,0x3a338ff5,0x3a5adef1,0x3a39d96d,0x39a56083,0x39a5793a,0x390b0757,0xb90828ca,0xb8205f1a,0x384fa6e2,0x3a12e9d2,0x39449100,0x39a9200f,0x3a703d95,0x3a188c0b,0x379a7ee8,0x39ae702e,0x3abcccb4,0x3b02aafc,0x3b160013,0x3a8ac3c0,0x3a3a8137,0x3922d065, -0x3ad97e3e,0x3affb344,0x3a783f09,0x3ace7255,0x3b0466aa,0x3b45a3c6,0x3b33dab0,0x3b1ac25a,0x3aafebfb,0x3a01a831,0xb8c14ca6,0xb9db81a2,0xb99c0ee3,0x39b39c57,0x3adadad1,0x3abe3f71,0x3a9c14b9,0x39a0c9dd,0x39ea80fb,0xb8cffb33,0xbac3821e,0xbafafd88,0xbae9cc2f,0x3a15e7c7,0xba04f5e6, -0x38cfc973,0x3b0a1e9e,0x39aa9b2c,0x3a169139,0x3a768521,0x3b1bfc9d,0x3b3a005b,0x3b70e157,0x3b0bc9fe,0x3ac801f6,0x39577d02,0x3b1d491d,0x3b1a6dda,0x3a40548c,0x3b035f5d,0x3b51c0aa,0x3ba7e105,0x3b9a1869,0x3b758a45,0x3b09ef69,0x39ff8b23,0xba339e8d,0xbab253e1,0xba874763,0x39111a91, -0x3b14b9a3,0x3b065dc3,0x3aeb67cd,0x378a5431,0x3886d14c,0xbac9d914,0xbb3eb530,0xbb602b6b,0xbb324cd7,0x3a09b727,0xbacdd19b,0xba6d1941,0x3b50b746,0x3999b592,0xbaa11387,0xba1bb871,0x3b40eba7,0x3b96dcb2,0x3bb48b04,0x3b3485b6,0x3aad7331,0xba9bc5c5,0x3b7811c0,0x3b901c1e,0x3abe1813, -0x3b5cc652,0x3b85f077,0x3bfce5dd,0x3be6721a,0x3bb85894,0x3b20a2ac,0xb855930d,0xbacd76d6,0xbb39dcbe,0xbafbdbe3,0x390217ab,0x3b6d98d9,0x3b651878,0x3b58e82e,0x39a773f4,0x3ab15d6d,0xba66527c,0xbb9de721,0xbbb1ca6d,0xbb9a5484,0x3a1800ef,0xbb292121,0xba609396,0x3ba30cc3,0xb8edb4fb, -0x3a6119a5,0x3b0fef65,0x3b86f20a,0x3bb0a12e,0x3bebf120,0x3b9abdc7,0x3b87a5d2,0x3a26fa46,0x3b809af6,0x3b5ed982,0x3a3954ba,0x3b2223d2,0x3bb41a9d,0x3c2427a3,0x3c1e05f9,0x3be30396,0x3b68f93d,0x38bb4c0d,0xbb12f03c,0xbb774306,0xbb2e351a,0x38f1cc80,0x3b8c6235,0x3b8366d7,0x3b651ec6, -0x3b0ef4e9,0x3b136de8,0x3a1f8739,0xbb834b0e,0xbb2a10b4,0xbb3892c9,0x3ab6a678,0xbb5238d9,0xbb4a6358,0x3bcd4222,0xb97fa0cf,0xbc2be0d1,0xbc0045c7,0xbbf0779a,0xbbd24336,0xbb85851b,0xbbc841e5,0xbbc64729,0xb9fc0879,0x3b751732,0x3c26f76d,0x3c659ea9,0x3c3deb2e,0x3b689377,0xbbfb0cbb, -0xbc066490,0xbbacce16,0x3a287b1a,0x3ba2d6cb,0x3c09bb4b,0x3c2434de,0x3c0d9510,0x3b965721,0x3afd3142,0xbb6173d6,0xbb1188a5,0x3b2a9906,0x3a677aa9,0x3a1e006a,0xb993a23b,0xba698711,0xbaaae6d7,0xb95fb054,0x3b871720,0x3b8231c0,0xb98f8bcc,0xbbd7086e,0x3c5899d7,0x3c46ba36,0x3b1a7e00, -0xbb4a7ec2,0xbc01f0c9,0x3bf2df66,0x3c43bc55,0x3bee1b33,0x3b49a57c,0xbb56f675,0xbc2341bf,0xbb1fa78a,0x3b56c937,0x3c316e46,0x3b9fb4df,0x3a742c3d,0x3aa32eb7,0xba481dd0,0x38b72c0b,0x3b2e0d91,0x3b2f6dce,0x3b17df9a,0xbaaf0f6d,0xba254528,0xbace9103,0x39b0538a,0xbb14d701,0xbb1ecabc, -0xbadca0a0,0x39accd2a,0xb8dd9c10,0xbb69bc89,0xbc15ee31,0xbc297581,0xbbc79d4c,0x3bed7b9f,0xbc37a185,0xbcca3a2e,0xbb888179,0x3a98fa28,0xbbf13540,0x399e7d09,0x3a45428d,0xbbe55e30,0x3b2d7a74,0x3b90eef5,0xbb123325,0xba835b2a,0xbad05214,0x3a98f3c4,0xbaf252f9,0xba13c470,0x37ca9889, -0x3a36983e,0x3af70a5b,0x3b0c6de0,0x3b24748a,0x3b06572f,0x397bba23,0xba8b83a2,0xbadc58e1,0xbb0fa117,0xba4c497a,0x3a002384,0x390a28cc,0xba1cc29e,0xba5368f0,0x39c2584e,0xbb4a424b,0xbb7ed80b,0xbbb783ae,0xbc0702c5,0xbc386244,0xbc8cdc93,0xbb10de0b,0x3ab8f9a7,0xba385438,0xbb810309, -0xbbd07b7b,0xbc2ebf40,0xba5d19a8,0x3b740857,0x3a61eca0,0x39a14be6,0xba67bc45,0xbaa774cc,0x39a4bca7,0x3a08ecd2,0x3a57c2d9,0x3a354709,0x399c2344,0xba292fff,0xb9e5623a,0xb93e8240,0x3a52bc4f,0xba6e0808,0xba287499,0xbafc1779,0x3a215fe1,0x3a0d3ba1,0xb950a414,0xbac207ad,0xbb166029, -0xb963747c,0x3b28823d,0x3b20dd2d,0xbab33332,0xbbc3ec02,0x3ca2139a,0x3cb75ebf,0x3c1b67a3,0x3b3b8a73,0xba90bb77,0xbb0d7aec,0xbaf6fe3c,0x3a960296,0xbb22819c,0xbb9a7d22,0xbb9f60ba,0x39d53a7b,0x3b85a0e3,0x3bac5c1d,0x3b72babb,0x3b0d7607,0x3aec0e2a,0xba6165f1,0xbb03bd14,0xbb31284f, -0xbb23cca3,0xbae3fd75,0xba167cf3,0x398f0132,0x396c0371,0x3a9f616c,0xba458823,0xba64456c,0xb9d0d118,0x3a73c9a2,0x3ac1f627,0x3b195d48,0x3b51bb85,0x3b00f54c,0x3b550b41,0x3c56c9e4,0xbc3a3f8d,0xbc06e288,0xbc05566c,0xbbd4cdbe,0xbb627721,0xba67da72,0x3980e39d,0x3a557c09,0x3b9aae29, -0x3c0fb714,0x3c0e72c1,0x3c0ee91f,0x3bb0433d,0x3bcb5ffe,0x3b6724de,0x3ab9a62b,0xba03dd8e,0xbb281f2c,0xbb93a7f7,0xbbb580d3,0xbbbc167b,0xbbb75bdf,0xbbc2a104,0xbb57be66,0xbaeb8269,0xb9b6a390,0xba586969,0xba76b7f4,0xba89310a,0xb986d74f,0x39e5095e,0x3af335e7,0xbab8258b,0xba6961b8, -0xba9ff8b6,0xbb9e8bf4,0x3be58e61,0x3bee2cbe,0x3ba9910b,0x3b805a13,0x3b8938c8,0x3ba44b46,0x3bd95370,0x3bf3b2b9,0x3bbe8d61,0x3b62bc85,0x3b11b845,0x3b2badf4,0x3b0e0dd7,0x3a8b63b7,0x3a467bde,0x38cef295,0xbaaa5ce6,0xbabd689b,0xbac66308,0xbae507fd,0xbaef633e,0xbb00d80b,0xbb189bb2, -0xbb19c387,0xbb0bfbb4,0xba61d0d1,0x3adcc188,0x3b48f7c4,0x3b64d870,0x3b8c91e0,0x3b803aff,0x3b742bea,0x3b89835d,0x3b924fc4,0x3ba03aba,0x3bd5983e,0x38f48154,0xb9998415,0x3a81b51c,0x3b1e5faa,0x3b753cb3,0x3b3374cd,0x3b0f784a,0x3b08a63b,0x3ae6c72f,0x3b07e15b,0x3b14029b,0x3a9ae80f, -0x3a0dac82,0xb9ae259c,0xba2cc989,0xba8b6a5a,0xbb0a8cf7,0xbb010bf9,0xbb0e64cc,0xbb14183e,0xbb32c791,0xbb492b8a,0xbb6db231,0xbb6d5bdd,0xbb542fda,0xbb2c127a,0xbaadffcb,0x39b2c5eb,0x3a9f2947,0x3b007e7b,0x3b228daf,0x3b40ae36,0x3b0bfb0e,0x3afbd2f0,0x3ab1a3f7,0x39b734c5,0xbb06623a, -0xbb021260,0xbad250c4,0xbb0c0239,0xbb0b8020,0xbae96dca,0xbaad6737,0xbaa8b78a,0xbace9063,0xbadcdf26,0xbae9349e,0xbaaede8b,0xbaa82ed0,0xba6f7446,0xbae9895d,0xbb1b4555,0xbb3f4f09,0xbb46be91,0xbb5b47e5,0xbb5b02f5,0xbb6bb061,0xbb70fd58,0xbb8279fa,0xbb6a6aea,0xbb6f8e36,0xbb7cbadc, -0xbb640175,0xbb3e5c69,0xbb33b908,0xbad703c2,0xbabe1c67,0xb902f29c,0xb9f5febb,0xbaf8b25f,0xbaf78163,0xbac3b485,0xbbc7d08e,0xbbb37e4a,0xbba44888,0xbb8a5d31,0xbb544cea,0xbb6f4f45,0xbb548f56,0xbb45f569,0xbb30bc8f,0xbb1fe901,0xbb176337,0xbb1990b4,0xbb1d0db3,0xbb17f9d3,0xbb199728, -0xbb18e9cd,0xbb2a7cee,0xbb32c347,0xbb37acc4,0xbb567109,0xbb4b6690,0xbb5e70dc,0xbb5fa4e7,0xbb726901,0xbb6d4bf5,0xbb5b1c0d,0xbb8235bc,0xbb8a29a1,0xbb9a0427,0xbbbbab4b,0xbbba5c4b,0xbbf12e14,0xbbe295f8,0xbbbe633b,0xbbc70523,0xbbc51322,0xbb1489f6,0xbb20097e,0xbb298085,0xbb2bef04, -0xbb2a4246,0xbb28a194,0xbb1e073a,0xbb1f410e,0xbb1f38f4,0xbb207f3e,0xbb1bcd38,0xbb13eab0,0xbb08e501,0xbb022027,0xbb0d6403,0xbb185534,0xbb212a8b,0xbb272f04,0xbb2c1dfd,0xbb36e97f,0xbb2ff11c,0xbb3198cd,0xbb2e5dcf,0xbb2d0ba0,0xbb2dad16,0xbb2e551a,0xbb3d1385,0xbb35505b,0xbb38ddba, -0xbb36a402,0xbb28a8d3,0xbb1aaf4c,0xbb0c9935,0xbb16d607,0xbb26d04a,0xbb1ccaa6,0xbb718a59,0x3a954626,0x3a4642e1,0x3a4f264e,0x3a765180,0x3a7fe98b,0x3a98b704,0x3a6b9f6d,0x3a5a7e48,0x3a282906,0x3a70941f,0x3a6ba56c,0x3a18a471,0x3a5d496b,0x3a8b6bdb,0x3ab118a9,0x3aaaceb9,0x3aa3f9ab, -0x3a8b8869,0x3a48647a,0x3a148ce1,0x39e28d95,0x3a0ab130,0x3a24b8a6,0x3a5dfb4a,0x3a6db932,0x3a499d8f,0x39ce1c75,0x39c3cfa2,0x39548764,0xb625c52d,0x38077864,0x38cfe2f7,0x3a1d8a10,0x39874cb3,0x39d3de86,0x3a83f6ad,0x3a30d2d5,0xb7961ada,0x39e86375,0x3ace608f,0x3b0e6395,0x3b2d62a4, -0x3ac6f795,0x3a946345,0x3a09e0d9,0x3ad7f202,0x3afe11db,0x3aa7d488,0x3ae036e4,0x3b0693f8,0x3b3b1a4c,0x3b3e4d9f,0x3b30c35c,0x3af1ab5d,0x3a5bf697,0x394e9a0e,0xb93c5dc5,0xb77af008,0x3a1d9533,0x3aec917c,0x3ac2bbed,0x3a96942d,0x399204bc,0x398aa8f1,0xb98b8c4f,0xbab4bea7,0xbb010ce2, -0xbaf068fd,0x39fd2a5c,0xba085e19,0x3851c9a7,0x3b04cc02,0x39863cab,0x3a1689f7,0x3a81b230,0x3b1398a6,0x3b3e5230,0x3b83bc1c,0x3b29d051,0x3b0181af,0x3a180534,0x3b1bf592,0x3b1752ae,0x3a952406,0x3b02e208,0x3b4c5c1c,0x3b983dc4,0x3ba320ee,0x3b8d7ad0,0x3b475c80,0x3a8a7e89,0xb94fcadf, -0xba7cdc70,0xba047872,0x3a13779d,0x3b207f2d,0x3b07cb18,0x3ad8aceb,0xb934a4b1,0xb9ab564e,0xbaf11512,0xbb3426df,0xbb6fa968,0xbb456dd5,0x394558a0,0xbae05828,0xba81664f,0x3b43c3d8,0x3988549c,0xbad20316,0xb9fea8c9,0x3b489595,0x3b9f06e7,0x3bcc93db,0x3b739f16,0x3b139be2,0xb91e7593, -0x3b59b3ea,0x3b843019,0x3b187a10,0x3b61352e,0x3b84baf3,0x3bdee90e,0x3befc98e,0x3bd0f7b3,0x3b76683f,0x3a527559,0xba6af214,0xbb1758f9,0xbaaea77f,0x3a122ad6,0x3b7f1e8b,0x3b510fb0,0x3b44efdd,0xb85f7cbb,0x3a0722cb,0xbaf0ef67,0xbba3cbe9,0xbbce2a92,0xbbb41013,0x38acebd9,0xbb48bfa2, -0xbaad69f0,0x3b92d898,0xba11ed3d,0x3a47999c,0x3afbac2b,0x3b70d278,0x3bab5c23,0x3bf3f163,0x3bb28bde,0x3b987590,0x3a9f0245,0x3b7b2dbd,0x3b549299,0x3aab3d08,0x3b181a33,0x3ba5f998,0x3c0fcf79,0x3c25383e,0x3c04d4e2,0x3bb082d4,0x3aa07a08,0xba9e97fa,0xbb3ecf24,0xbad20a7d,0x3a6500c6, -0x3ba16e2c,0x3b853b6b,0x3b5236f8,0x3b0219e8,0x3ab3a481,0xb9eca037,0xbb9ae787,0xbb8b6f1e,0xbb8a4e47,0x39c22556,0xbb83fba6,0xbb641f42,0x3bbeb091,0xba09241c,0xbc236c84,0xbbc9d4e5,0xbba94187,0xbb8a4da9,0xbb5907ea,0xbbae8f76,0xbbbe8811,0xbb2d8468,0x3b2a2be5,0x3c1ee8c9,0x3c55bf2b, -0x3c693a39,0x3be1ec11,0xbbdfbd11,0xbbfbde8d,0xbbc48571,0xbada6b23,0x3b3026ed,0x3bc43bcc,0x3c031a89,0x3be20506,0x3b397e9a,0xb958ef06,0xbb9b72ba,0xbb40e957,0x3b5bd6b2,0xb98b784a,0xba84bed2,0xba575485,0xba7b910c,0x388e57b5,0x3b2acbbd,0x3ba5abf8,0x3b7d7f3b,0xba21f748,0xbbdb283a, -0x3c723918,0x3c29d874,0x389e533c,0xbb98cd94,0xbc1eb9e1,0x3b9cbc7d,0x3c18240a,0x3bcac579,0x3b7d935a,0xbb37aaff,0xbc404257,0xbb906336,0x3a9b452b,0x3c17142e,0x3bcbb0e3,0x3b39305d,0x3b21c3dd,0xb8caa5db,0x39a1ca80,0x3b75d708,0x3b4ba518,0x3b321fee,0xba3b2f86,0xb82addd5,0xbac3f98b, -0xb9a2f6b9,0xbb136c88,0xbaf1dbff,0xbab7efcc,0xb86dc288,0xba892ff1,0xbba16f86,0xbc1ccd78,0xbc1bc8bd,0xbb98bd0f,0x3c24afbe,0xbc6415f3,0xbcbaa5e5,0xbb14c7d7,0x3aeb6238,0xbbe540e8,0x3a64f79d,0x3acfb2a8,0xbba0af7b,0xb9837251,0x3adb9f14,0xb9c7fdc7,0xbae51a3c,0xbb293aea,0x39f7abc0, -0xbb0cac69,0xba3e344a,0xba48f63d,0x39a31a5b,0x3aeb253f,0x3b44a32c,0x3b40b37f,0x3b105c1e,0xb93e5d3d,0xba8a8c31,0xbacc001c,0xbb22e6e7,0xba3b379f,0x3a13d673,0x390195e8,0xb9cf2633,0xba2f2cd3,0x3a426fd7,0xbbadbf39,0xbbbeea5d,0xbb1935dc,0xbc3e65a1,0xbc5adff8,0xbc8df1d0,0xbacf7fd8, -0x3b308f3a,0x3a393f59,0xbac76d07,0xbb90d24b,0xbc169e4d,0xbb75d369,0x3a81f51e,0x3b368876,0x39a1ad66,0xbab5e859,0xbb09f7fe,0xba20d0d4,0xb9dcd2bc,0x39cc72fe,0x3a1a84c6,0x3a2adef4,0x39929f8e,0x39cacce8,0x3988e936,0x3a313950,0xba80f3e4,0xba4b2dfb,0xbaee31e6,0x39e70f21,0x3988b3cd, -0xb9542e26,0xbaaab79d,0xbaeaa043,0x3a91ec1a,0x3aeba136,0x3a8bca18,0x3ab17e11,0xbc07aa15,0x3ca4f243,0x3c8d4405,0x3bb93482,0x3a8668a7,0xb95d1e50,0xbb3b72c7,0xbb4126b1,0x3aa20a80,0xba930cf3,0xbb57ec99,0xbbac3d11,0xb9cbe905,0x3b5d5cdd,0x3b8bd69d,0x3b6b39fe,0x3b1f21f5,0x3b3f17d6, -0xb962997c,0xbabab138,0xbb013607,0xbadb75da,0xba37d9f7,0x3a0979c7,0x3a553e19,0x39ae6f62,0x3a571992,0xba2d97e3,0xba5bb1d0,0xb9adfaff,0x3a026429,0x3a9ac76e,0x3b28fa2b,0x3b83fef5,0x3b3933ed,0x3b6450f1,0x3c709b83,0xbc31ebd1,0xbbb18c15,0xbb89c577,0xbb5fd704,0xbb198127,0xba76efff, -0xb9a60ace,0x3991dd43,0x3b564303,0x3bf2f5fc,0x3c0954fd,0x3c05863f,0x3ba0719b,0x3bab74bd,0x3b4d62ce,0x3a892109,0xba9c595c,0xbb5be952,0xbba3f807,0xbbb3fff5,0xbbbf3e7f,0xbbb7f704,0xbbbfa524,0xbb31aae6,0xbab6e0a1,0xba4ed7dd,0xba935d90,0xbaa9eebc,0xbad7ab46,0xba94ab6e,0x389da58c, -0x3ae2b834,0xbac64a7b,0xba976bc7,0xbade381f,0xbbaf17cc,0x3bb2b4eb,0x3ba24d57,0x3b22b576,0x3b0aa0db,0x3b55a401,0x3ba05d83,0x3be12f3e,0x3c08d0cc,0x3be4a8cf,0x3b9c67ac,0x3b55eb88,0x3b7bdd74,0x3b613c00,0x3b03a5a6,0x3aaa810f,0x39a90f53,0xba970b83,0xbaaffc3d,0xbabe77e3,0xbacc5930, -0xbaf17f20,0xbb00bf4d,0xbb2271af,0xbb02cd42,0xbacabcd8,0xb8fbc042,0x3b0ee923,0x3b4d60d3,0x3b3ccf90,0x3b553a26,0x3b2bf90b,0x3b148ccf,0x3b3ac60b,0x3b430d51,0x3b504d67,0x3ba6565d,0x3a378c65,0x3a49ac53,0x3af24e47,0x3b3114fb,0x3b6a5f42,0x3b3d7637,0x3b3e1358,0x3b571042,0x3b466602, -0x3b5f769d,0x3b75cc90,0x3b20029b,0x3abd09da,0x398ee4d0,0xb9952093,0xba862174,0xbb120e87,0xbafba0bb,0xbb047b7f,0xbb0563b7,0xbb264dd2,0xbb3e4463,0xbb6120fd,0xbb541a49,0xbb2db1c1,0xbaf39017,0xba159e72,0x3a92ac3f,0x3b02886c,0x3b2d4ccb,0x3b5227e0,0x3b7b86c7,0x3b37e208,0x3b2f69ef, -0x3b1b9527,0x3a825a0e,0xb9fb1d0e,0xba2dbfda,0xba16aac9,0xbaa87c70,0xbacb2999,0xbaba66de,0xbaa8e031,0xbabcc7ea,0xbacc4366,0xbac554b0,0xbac03062,0xbaafeca7,0xbabfff1b,0xbaa34496,0xbb046776,0xbb272dc3,0xbb48c71d,0xbb49ec87,0xbb55407d,0xbb50f7b4,0xbb5d98ce,0xbb6217f2,0xbb717857, -0xbb51ce62,0xbb536f82,0xbb5b7aa1,0xbb34732b,0xbaf09481,0xbabc3dc0,0xb94e917f,0x3963fed9,0x3acf61f1,0x3abc9125,0x3989e83b,0x3993fc0e,0x39e28acb,0xbbcbd4a3,0xbba93897,0xbb9dc2bb,0xbb8cfd4a,0xbb696c79,0xbb82c986,0xbb70e8dd,0xbb6d46ac,0xbb5c1d2c,0xbb4cccc8,0xbb43a988,0xbb3a59da, -0xbb31fd95,0xbb272c17,0xbb250087,0xbb2232a8,0xbb326413,0xbb39ae62,0xbb3f80e6,0xbb5ec128,0xbb58000f,0xbb65c124,0xbb674da0,0xbb7752cd,0xbb71d423,0xbb6268a8,0xbb826053,0xbb8aef09,0xbb981d66,0xbbb3a50f,0xbbae6c0d,0xbbe10d86,0xbbd2a607,0xbbc1be9b,0xbbcd1535,0xbbc00636,0xbafdd244, -0xbb0dee1e,0xbb1e606b,0xbb21f419,0xbb24076e,0xbb2698b5,0xbb243b5e,0xbb2b9716,0xbb263b08,0xbb250776,0xbb1faafb,0xbb19e557,0xbb11d740,0xbb0b3b45,0xbb14f94a,0xbb1e67e8,0xbb25e682,0xbb29d414,0xbb2cc87e,0xbb347d66,0xbb2e1f7d,0xbb2f1e9b,0xbb2a8dca,0xbb2ab0d2,0xbb2ad84d,0xbb28c2dc, -0xbb326f53,0xbb2617ad,0xbb23dc33,0xbb1eec35,0xbb1177be,0xbaf595d6,0xbad6cc16,0xbaf13e61,0xbb0744ac,0xbb00ffc3,0xbb731fb2,0x3a9b5269,0x3a552f3a,0x3a55a48a,0x3a726ee5,0x3a80091e,0x3a9dc1a6,0x3a77c096,0x3a645eb6,0x3a34c9ce,0x3a6e83d0,0x3a6b9acd,0x3a31cdbf,0x3a5d1229,0x3a8762f4, -0x3aa3c903,0x3aade472,0x3aae1b3e,0x3a9b4204,0x3a5f2418,0x3a2887f1,0x3a020609,0x3a267d0b,0x3a3efaee,0x3a7c6b12,0x3a6e78d5,0x3a4e01c5,0x39ed942f,0x39e1628a,0x3996eaad,0x3918c577,0x39090530,0x392eaced,0x3a210c52,0x39a24d5a,0x39e00bbf,0x3a874376,0x3a41b085,0x3870ffcf,0x3a099a71, -0x3ad0d0d1,0x3b10b442,0x3b3babfd,0x3af3e12d,0x3aba6a4b,0x3a45fa17,0x3abf33ed,0x3ae6c47f,0x3ac991bd,0x3ae7536f,0x3b029a69,0x3b26d6e3,0x3b3e1da7,0x3b3aa12d,0x3b0cc514,0x3a8a748b,0x39cf4e46,0xb6ccb637,0x398645c1,0x3a52ce1d,0x3ae6628f,0x3abb404e,0x3a868a2a,0x39316f44,0x382736c9, -0xb9e680c9,0xbaa72995,0xbb015f42,0xbaf702be,0x39960371,0xba05927d,0x379a8699,0x3aea0ad7,0x39754a6b,0x3a2da177,0x3a8b0a64,0x3b097c04,0x3b3d3a37,0x3b8a036b,0x3b3df04f,0x3b1530ff,0x3a50f675,0x3b0cb694,0x3b08f0de,0x3ac8a945,0x3affe5aa,0x3b421ac5,0x3b823b21,0x3ba3e711,0x3b97aa8a, -0x3b71595f,0x3ac0695c,0x39523e43,0xba1fd090,0x3550cbb0,0x3a6dd881,0x3b186079,0x3b032bbf,0x3abf920a,0xba0365ae,0xba3778c4,0xbb0851f8,0xbb247951,0xbb75423e,0xbb4fae46,0xb9941bc4,0xbae5cc98,0xba84f173,0x3b236243,0x39873a33,0xbad726c2,0xb9860704,0x3b4412b6,0x3b9f3fc7,0x3bddf6f7, -0x3b9315d1,0x3b429cb0,0x3a286f80,0x3b25b9a0,0x3b5ca02c,0x3b4e7b82,0x3b63927c,0x3b826ac2,0x3bb947d7,0x3bedeb44,0x3bdccfee,0x3b99393c,0x3abd2c46,0xb9b34dfe,0xbae73e1a,0xba3dc344,0x3a751bb4,0x3b6f5eb8,0x3b34767d,0x3b2a1d00,0xba1b792b,0xb9bb4a28,0xbb3506e0,0xbb9faa90,0xbbe4c096, -0xbbc7b602,0xba1b6a02,0xbb5a1a74,0xbacff8ba,0x3b6d50e7,0xba4ad7a5,0x3a66dac5,0x3ae93a88,0x3b559354,0x3ba4fc92,0x3bf5f1cb,0x3bc287db,0x3ba17572,0x3ac98289,0x3b5f7cb4,0x3b3df550,0x3b02454d,0x3b177eab,0x3b9a37d6,0x3bef00aa,0x3c24dd99,0x3c10f30a,0x3bdd2b17,0x3b0cd769,0xb9702376, -0xbb025568,0xb9f56bf3,0x3ac5437d,0x3ba2d091,0x3b80654c,0x3b37d9ac,0x3ace92b3,0x39b57d5f,0xbac6b11e,0xbb9c8e72,0xbbb89125,0xbbb0b253,0xba2101d2,0xbb97208b,0xbb6d022e,0x3b9d8c45,0xba211a84,0xbc09311b,0xbb8d35c6,0xbb2213de,0xbaf687d2,0xbb3bce96,0xbb9345c6,0xbbb2a9e8,0xbb94060d, -0x3aa92319,0x3c09a6ec,0x3c385566,0x3c78a832,0x3c0f82cd,0xbbd09daa,0xbbefb557,0xbbdb52d8,0xbb8a22fc,0xb839500e,0x3b356967,0x3b95378c,0x3b8279f0,0x39dbb7e0,0xbb1a9ca8,0xbbbfaf05,0xbb6528e6,0x3b7e3b6a,0xba85b0db,0xbb084cc7,0xbab6366a,0xba98e953,0x3aa0bafe,0x3bac5c38,0x3bc70ffc, -0x3b85db40,0xba107f40,0xbbbb91ad,0x3c797a13,0x3c04b447,0xbaa55d53,0xbbb15402,0xbc2f1485,0x3af05d6e,0x3bcdff21,0x3ba2aa86,0x3b93b1b8,0xbb079172,0xbc4ee981,0xbbc5a6c4,0xba60d8fa,0x3bde2210,0x3beb4838,0x3b9addae,0x3b6bb22f,0x3a502ed5,0x3a42a557,0x3b94c5e6,0x3b56b231,0x3b3d4cfa, -0xb7e67d10,0x3a22c3de,0xba9ad677,0xba83c7dd,0xbb0fdd0b,0xbaab7747,0xba981f12,0xb8e20978,0xbad33b5a,0xbbc467b9,0xbc254542,0xbc10f998,0xbb4d6a3d,0x3c3e8a02,0xbc805e70,0xbca56c8a,0xbb1536a0,0x3a75fa1c,0xbbb0978b,0x3a88d4c2,0x3ab9010a,0xbb60ae18,0xbb468348,0xba54b86b,0x3acdb7c6, -0xbb0ffbba,0xbb5a57eb,0xba146a29,0xbb16b651,0xba4925bb,0xbad00eff,0xb7f82ada,0x3abfdbe6,0x3b5629c3,0x3b403e9c,0x3b02da76,0xba22f02b,0xba8e021a,0xbac00a6f,0xbb2a5dc5,0xba2e5879,0x3a0cdcb2,0x38a8b7fe,0xb8ecb2ea,0xba19f036,0x39d1b2de,0xbbee1f75,0xbbecd0d0,0x3a00ce45,0xbc5f631a, -0xbc6dfdd8,0xbc8ce51f,0xbb023bb7,0x3b3ab726,0x3b5f8e2d,0x3a47653f,0xbb3ceafe,0xbc03a7df,0xbbd3803f,0xbacc305c,0x3ba1726f,0x3a184cc5,0xbae1b9c7,0xbb395a75,0xbac371f9,0xbaacc8d4,0xb95abee3,0x39d397a9,0x3a44ca20,0x3a34c8ef,0x3a819ca3,0x3a07e821,0x39e506b2,0xba8dadbc,0xba81da4f, -0xbad84c84,0x393422a3,0x36751697,0xb93f911c,0xba840eba,0xbab1f714,0x3af62b0a,0x3a4df241,0xb8fb07b3,0x3b8281ba,0xbc1aaced,0x3c98f33a,0x3c2d38b2,0x3b19963b,0xb9001a46,0x3ac3545f,0xbb23f37f,0xbb3df5cc,0x3aa14f9a,0x393f0c9a,0xbadfd0a3,0xbba0a4dc,0xba5d5cf0,0x3b33c3e4,0x3b4db8cc, -0x3b5e30e0,0x3b3b83f8,0x3b75adcd,0x39e6efd5,0xba42146a,0xbaa274a7,0xba647623,0x39887a8c,0x3abb61dd,0x3aa68882,0x39e428c1,0x3948f666,0xba0c03bd,0xba35ce18,0xb96a8e03,0x396eddc3,0x3a88cb63,0x3b497268,0x3b8c7c4d,0x3b5393d5,0x3b953ef8,0x3c79a5a4,0xbc1b749e,0xbb249b46,0xba4e9b9d, -0xba34fc29,0xbacd2a39,0xba7f9709,0xba3dd15a,0xb88f65c0,0x3aff6b78,0x3bc25ac1,0x3c02842e,0x3bf3c723,0x3b941f09,0x3b91c035,0x3b30f59c,0x3a2595a2,0xbaf375f2,0xbb7d8db6,0xbba9850b,0xbbab59ea,0xbbba9014,0xbbb3bfb4,0xbbb0268a,0xbb0d3000,0xba81f2cf,0xba8425fa,0xbaa9800c,0xbac6f9bd, -0xbb0109ec,0xbad5ddda,0xb93d5b38,0x3aba3f8b,0xbaa22254,0xba92d533,0xbb13c0b8,0xbbb441d1,0x3b5da5be,0x3b0e05ca,0xb97748dc,0x3986b931,0x3b0cd03a,0x3b98a958,0x3be14c27,0x3c0dfda9,0x3c002d75,0x3bc75106,0x3b97a687,0x3bac154a,0x3b9dadb7,0x3b4c223a,0x3b0aa378,0x3a5bd8cb,0xba4a55d8, -0xba8a3a8b,0xbab624b5,0xbad5f939,0xbb08214c,0xbb08d110,0xbb26c7fc,0xbaceda71,0xba743f37,0x39ff4a8f,0x3b1a794d,0x3b3be5ad,0x3b021f1f,0x3b0bfd20,0x3ac3f47e,0x3a850941,0x3ad99a77,0x3ad399f5,0x3ad5725d,0x3b5c1aea,0x3aad8e10,0x3aeb6d6c,0x3b2638e4,0x3b3e8366,0x3b66e54e,0x3b58d1e8, -0x3b789900,0x3b91b553,0x3b8bafb9,0x3b993e25,0x3ba6e8fa,0x3b6a4a56,0x3b139f4a,0x3a5c45d3,0x392ae262,0xba65eaf5,0xbb0b99a3,0xbaeaa601,0xbaf704d5,0xbafde915,0xbb1d3e57,0xbb33a4b5,0xbb4f662b,0xbb30a1f0,0xbaf7d920,0xba77973d,0x3983f57c,0x3af124de,0x3b30c99f,0x3b4f081f,0x3b6f3a58, -0x3b8e0bd8,0x3b569107,0x3b55777e,0x3b4e7bf3,0x3ad01434,0x3a9a67a7,0x3a5e7203,0x3a56758b,0x38b137a2,0xb9ab5d19,0xba1b9dde,0xba584280,0xba924157,0xba9205d3,0xba83e1dc,0xba746102,0xba95d5dd,0xbac5cfbe,0xbac839f2,0xbb0d40d1,0xbb29a869,0xbb413fdd,0xbb417f63,0xbb443ee7,0xbb402877, -0xbb481b72,0xbb4ce48c,0xbb588b09,0xbb331eeb,0xbb2e9658,0xbb2f0879,0xbaf74292,0xba4028e7,0xb8afad53,0x3a8cd296,0x3adc0e8b,0x3b3e03f7,0x3b4058ef,0x3b0b8cfb,0x3b0ee7fa,0x3b103aeb,0xbbbd1876,0xbb9418ab,0xbb8d68c2,0xbb8762b6,0xbb7068d2,0xbb7e9175,0xbb6ce4fc,0xbb7084c5,0xbb6721b3, -0xbb5bb153,0xbb538e78,0xbb434a5b,0xbb3183bc,0xbb24688a,0xbb1f2876,0xbb1e1881,0xbb2f9600,0xbb353808,0xbb3c0f23,0xbb5a250e,0xbb5d920b,0xbb669b32,0xbb6b9bfb,0xbb7c58e2,0xbb7ba137,0xbb74c73b,0xbb84f7ba,0xbb8af009,0xbb9172af,0xbba1b229,0xbb974e6b,0xbbbbf819,0xbbaf9bb2,0xbbb085d7, -0xbbbd57a7,0xbbaa707c,0xbad3c4af,0xbaed4c5b,0xbb08f3c3,0xbb0b7a2c,0xbb11659f,0xbb18a889,0xbb1f0c41,0xbb299c4f,0xbb222921,0xbb2092b6,0xbb1cdb75,0xbb1acede,0xbb17822c,0xbb1320cb,0xbb1a27c8,0xbb2022bb,0xbb2503e7,0xbb268142,0xbb277b2c,0xbb2aad9e,0xbb28a1e0,0xbb2bd658,0xbb28c1c1, -0xbb265ff7,0xbb27f5b2,0xbb258ff6,0xbb2853cf,0xbb1837ac,0xbb1154f4,0xbb09c899,0xbafbb5b8,0xbac4e0a6,0xbaa7212f,0xbabeac3c,0xbadc5fae,0xbad1b33a,0xbb71939e,0x3a965151,0x3a5763f6,0x3a4fcf6f,0x3a646fa8,0x3a7430cb,0x3a9a17de,0x3a757998,0x3a603173,0x3a30c3e1,0x3a5cf5c8,0x3a5deb47, -0x3a429383,0x3a524750,0x3a7a1199,0x3a9063fb,0x3aa81add,0x3aae1528,0x3a9f46fa,0x3a66be97,0x3a3104fe,0x3a09279a,0x3a35061a,0x3a48f998,0x3a7ed848,0x3a63df94,0x3a46a31d,0x39e33a47,0x39e18dcc,0x39aed23c,0x39803d7a,0x395124cf,0x394f568b,0x3a0f12c3,0x39ae2f2c,0x39db0b8f,0x3a7715d5, -0x3a44fb25,0x393d6fb9,0x3a195148,0x3ac45127,0x3b0a5137,0x3b4051b1,0x3b0a85a7,0x3ad36da1,0x3a59ac13,0x3a97e90e,0x3ac2f220,0x3ae3a1c8,0x3ae92b58,0x3af91a02,0x3b10e9a9,0x3b3764a6,0x3b3b2058,0x3b153424,0x3a9bc797,0x3a0e9e65,0x391928bd,0x39f85bff,0x3a726f9c,0x3acab47e,0x3aa9f142, -0x3a6135dd,0xb804b5e6,0xb942f3da,0xba238ffe,0xbaa72cbf,0xbaff680c,0xbaf8c133,0xb7f36a14,0xb9f4c727,0x379c9f78,0x3ab72207,0x3972b3b5,0x3a4a85bb,0x3a916b3f,0x3af67097,0x3b352e26,0x3b8a1989,0x3b49ff8b,0x3b226a77,0x3a5b8372,0x3aeaf777,0x3ae89999,0x3afb6116,0x3af95ffc,0x3b36a754, -0x3b586db1,0x3b9ec703,0x3b9aa54f,0x3b83c594,0x3ae8a67b,0x3a165c2d,0xb984bb7f,0x39e0f375,0x3a952919,0x3b015ee6,0x3af2e97e,0x3aa2c7f7,0xba74db70,0xba84ca7d,0xbb0f2d68,0xbb1730aa,0xbb6ed4f6,0xbb50bfcb,0xba697386,0xbadd86a1,0xba804776,0x3ae59fbb,0x398bc41c,0xbabc0aba,0x3760e6e9, -0x3b2ff79f,0x3b96b771,0x3be58f0e,0x3ba70969,0x3b66e276,0x3a8c349b,0x3ace8daf,0x3b27887f,0x3b7ec80c,0x3b6723ed,0x3b8113d3,0x3b97bc46,0x3be5172e,0x3bde72d1,0x3baa0244,0x3afd6bc9,0x392cb2a5,0xba99958a,0xb9260c16,0x3a9e467a,0x3b44c12e,0x3b138440,0x3b0d68c0,0xbaa93946,0xba96e735, -0xbb6c4683,0xbb9c2863,0xbbf51b6a,0xbbd33f1a,0xbac0b519,0xbb5907bf,0xbad276a4,0x3b226e24,0xba576fa3,0x3a87221e,0x3ad99684,0x3b34d629,0x3b9aa523,0x3bee5b94,0x3bcb4b39,0x3ba48ed9,0x3acf0fb3,0x3b3716ed,0x3b21cd6a,0x3b325fdd,0x3b1e054e,0x3b90b9da,0x3bc1aa2b,0x3c1f0af3,0x3c162180, -0x3bf867f6,0x3b4027dd,0x3a47b453,0xba84dca7,0x3a17e8eb,0x3aff6d34,0x3b925d13,0x3b6d8101,0x3b1c596f,0x3a660df2,0xba384cae,0xbb1c6265,0xbb8fb6e1,0xbbd82329,0xbbcf3b11,0xbad6bc40,0xbba0ac88,0xbb633dfa,0x3b5bed2e,0xba1cdfc6,0xbbbdebba,0xbb10f2af,0x3a1ec6f9,0x3a0c72a2,0xbb25859d, -0xbb5667f4,0xbb95c565,0xbbbb85e4,0x38243d2e,0x3bd5d7b3,0x3c131850,0x3c715327,0x3c1aba43,0xbbc29f02,0xbbe7bf5b,0xbbf0584d,0xbbe0d18e,0xbb3f7a41,0xba3918d1,0x39c6a5ac,0x39f6d32c,0xbb0b6488,0xbb8d6461,0xbbd6749e,0xbb795b45,0x3b88eb20,0xbabe86d6,0xbb25d6e1,0xbadb8050,0xba9f66c6, -0x3b15b4b5,0x3bf55f6b,0x3bec0260,0x3b983108,0xb93aaf1a,0xbb7380fb,0x3c6bfcc9,0x3bbb08e2,0xbaedcb00,0xbbb4f556,0xbc347782,0xba99ee22,0x3b55d478,0x3b845bf1,0x3ba8df72,0xba827832,0xbc4c53e9,0xbbf034d5,0xbb3b80d5,0x3b8023b0,0x3bf6399a,0x3bcf5144,0x3b974ea5,0x3afdd315,0x3ac3166c, -0x3ba71ca8,0x3b537b12,0x3b38fd1f,0x3a20767b,0x3aa1b74a,0xba4acc84,0xbad643e4,0xbb0907a5,0xba5e47ae,0xba62e0db,0x363826f1,0xbaff2105,0xbbda9431,0xbc30c2d8,0xbc0939ba,0xbaae1c13,0x3c427e80,0xbc834064,0xbc8b024f,0xbb699f7f,0xba4859e0,0xbb364c74,0x3a92e5d8,0x3a515b3b,0xbb3bd757, -0xbbaaa841,0xbb2ff2b6,0x3b4bcc03,0xbb17d3a0,0xbb6faaf7,0xbade98f1,0xbb169642,0xba2ec846,0xbb16247c,0xb98e45be,0x3a727970,0x3b40b5de,0x3b233a20,0x3ac03c76,0xba83f5de,0xba99ff6a,0xbabddd2e,0xbb23ffe9,0xba1dd939,0x39fe1b53,0x383ed64f,0x391c45b4,0xba17d940,0xba00a721,0xbc0c33d1, -0xbbfd2567,0x3affbf8b,0xbc63ee2d,0xbc6a30ca,0xbc82e2c7,0xbb2b68ee,0x3b204766,0x3bdbe60f,0x3b4ec584,0xbaa10b68,0xbbf284eb,0xbc0cf395,0xbb787935,0x3bd7e70a,0x3a8a0a85,0xbad9dafe,0xbb5bd5b2,0xbb0d8de8,0xbb034bbb,0xba50b2e3,0x393c2d02,0x3a21a612,0x3a11c37b,0x3aa20137,0x3a143a59, -0x39192634,0xba9f28bf,0xbaa66a16,0xbab86c0d,0xb8e3ae20,0xb90564d1,0xb8dfc4e8,0xba2e5ccb,0xba8737a8,0x3af2186f,0xb90d71a4,0xba5e2231,0x3baf570f,0xbc18b68e,0x3c8041e5,0x3b800444,0x3947b854,0xb9703d3f,0x3b61f79a,0xba4cc8e5,0xbacbbc98,0x3a721c13,0x3a9c6749,0xb9b2abbf,0xbb8072bb, -0xba9c7e50,0x3b040098,0x3afea5b0,0x3b513a9b,0x3b613189,0x3b8cc30a,0x3a9973fb,0x3910f078,0xb9ea78a6,0xb90e94a2,0x3a8ba88a,0x3b0a912d,0x3ad45304,0x3a030df4,0xb9f1c756,0xb9e8cf72,0xba025cef,0xb8072481,0x39228138,0x3a8e3a40,0x3b63ef84,0x3b763f6a,0x3b3fe781,0x3bc31c7b,0x3c6f7d2b, -0xbbf16716,0x3954d813,0x3afd2b4c,0x3abee597,0xba951571,0xba993ea7,0xba9d540f,0xba1462b2,0x3a4c9c6b,0x3b8e7756,0x3bebb8da,0x3bd7a74e,0x3b8c9113,0x3b7c38eb,0x3b155c1b,0x394f12be,0xbb1e562b,0xbb856b42,0xbba5cdbd,0xbb9f808f,0xbbaf9767,0xbba914e0,0xbb938d4d,0xbad1865c,0xba1a0199, -0xba7e84a9,0xbaa9bff1,0xbacc9041,0xbaf8877b,0xbae04a82,0xb9b5be39,0x3a5e2d6b,0xba3b67bf,0xba549a97,0xbb2f428b,0xbbaa2af1,0x3a8f1742,0xba2ed0b8,0xbb2ce2c1,0xbabed49b,0x3a815d70,0x3b8772ce,0x3bd0be97,0x3c05d772,0x3c053c04,0x3be9d539,0x3bc4abe0,0x3bd6db6e,0x3bc55374,0x3b874fe8, -0x3b4adaed,0x3ad26e27,0xb951e147,0xba315851,0xbab0959d,0xbafc243e,0xbb1db1dd,0xbb1295a3,0xbb206196,0xba8f7315,0xb9a9aa70,0x3a791329,0x3b0fee61,0x3b1610de,0x3a807eb1,0x3a901f50,0x3a281415,0x38db4119,0x3a332f78,0x39ed8741,0x39be971c,0x3ad2ca5b,0x3afa4d77,0x3b2921f6,0x3b3d2c84, -0x3b40171b,0x3b657413,0x3b74f5d5,0x3b940f3e,0x3bab6857,0x3ba909a9,0x3bb6e668,0x3bc451a5,0x3b8f9de3,0x3b3b5f04,0x3aa72f1b,0x3a1ad24e,0xba34cab1,0xbafa053b,0xbad7f023,0xbaec5d3e,0xbb00fb7a,0xbb17d70c,0xbb283a74,0xbb38962e,0xbb055674,0xba868981,0x389b8f4c,0x3a8d7df8,0x3b1fb317, -0x3b521ac6,0x3b61dcf0,0x3b797d5d,0x3b918051,0x3b69fe0e,0x3b710584,0x3b6f9571,0x3b09a65b,0x3b2e5368,0x3b1649b0,0x3b163932,0x3ada663c,0x3aa1f869,0x3a10ebec,0x37c0bcbd,0xb9b2bd0e,0xb9bd5742,0xb9b6ac37,0xb9c0108e,0xba5b08b7,0xbabcd01f,0xbaddb190,0xbb0eba79,0xbb24d2f8,0xbb30dac8, -0xbb317bc1,0xbb2c2832,0xbb29221a,0xbb2d1f64,0xbb33abf6,0xbb3cc3ff,0xbb10fef0,0xbb029109,0xbaf1a2c3,0xba7ec114,0x399559d4,0x3a8ca1aa,0x3b043c3c,0x3b322de7,0x3b70ef51,0x3b7c6cd2,0x3b62f73d,0x3b6ba741,0x3b69f7e6,0xbba0e0ee,0xbb6f6722,0xbb699865,0xbb71c508,0xbb641cc6,0xbb5bcb51, -0xbb4c2767,0xbb513eda,0xbb50c71a,0xbb49cc88,0xbb4486b0,0xbb3449bf,0xbb1f6da8,0xbb1562d5,0xbb0dcad8,0xbb0fd62e,0xbb23fe2f,0xbb28f80b,0xbb32e88b,0xbb4e2d5c,0xbb597eab,0xbb5fa54c,0xbb68f0f3,0xbb7cd89f,0xbb8259e7,0xbb8481ab,0xbb878263,0xbb893492,0xbb86f121,0xbb8a27a0,0xbb77934f, -0xbb8c099f,0xbb8384ba,0xbb91e9fe,0xbb9e9d31,0xbb8aa852,0xbaa12a6f,0xbab0b163,0xbad0f781,0xbad16862,0xbae3c726,0xbaf8f750,0xbb099fde,0xbb145240,0xbb0f5fea,0xbb103eb8,0xbb104a63,0xbb129754,0xbb143e5e,0xbb1364ac,0xbb175697,0xbb19b125,0xbb1baab4,0xbb1a7af2,0xbb19548e,0xbb18d123, -0xbb19f738,0xbb20235f,0xbb2136cd,0xbb19182d,0xbb1c1c36,0xbb1d6bd9,0xbb18f960,0xbb05f139,0xbaf7d002,0xbae364af,0xbacf1c4b,0xba97b647,0xba7d8088,0xba8e231d,0xbaab82bb,0xba9d1cdc,0xbb63d717,0x3a880b69,0x3a484f2e,0x3a43ed61,0x3a4e346e,0x3a5e407e,0x3a8f5f71,0x3a67cd77,0x3a503fd1, -0x3a1c5738,0x3a3f8c8b,0x3a4730ec,0x3a4d3a7c,0x3a402dab,0x3a5cb24f,0x3a741add,0x3a9bb5fd,0x3aa5d473,0x3a99590e,0x3a6253c9,0x3a30d4e0,0x3a0b5252,0x3a30fb57,0x3a3cced1,0x3a679866,0x3a49f143,0x3a2d22c0,0x39b101c9,0x39c57b80,0x39ada9d5,0x398cd90e,0x396a63b8,0x393fe9a9,0x39caec96, -0x3999a0a9,0x39be5646,0x3a45a664,0x3a328c46,0x3984fe40,0x3a1c7ceb,0x3aabf0c3,0x3af97e46,0x3b3b9aa9,0x3b14a6fa,0x3adfa231,0x3a4813dd,0x3a55a109,0x3a99f037,0x3af743c8,0x3ae65dd5,0x3ae9f349,0x3af85da0,0x3b2bfe4c,0x3b34116b,0x3b136f97,0x3aa3a4aa,0x3a2b0a5d,0x399b96c4,0x3a1d2f81, -0x3a7649df,0x3a9fb295,0x3a8d71b0,0x3a286bec,0xb99f74ce,0xb9d5e0db,0xba58a0c2,0xbab837a7,0xbafbe567,0xbaf5a2c9,0xb9e7c4cf,0xb9d8fe3e,0x37da7847,0x3a6a70eb,0x395d503c,0x3a4e3f11,0x3a95493e,0x3ad36132,0x3b261d72,0x3b841704,0x3b4e098d,0x3b282820,0x3a31a9ef,0x3ab326c4,0x3abb263d, -0x3b173687,0x3af080d4,0x3b293feb,0x3b315d11,0x3b954487,0x3b97901c,0x3b857d47,0x3b021407,0x3a71f258,0x38f22a85,0x3a3c9610,0x3aa06e61,0x3ac113db,0x3ad272ba,0x3a81250c,0xbab9bfa8,0xbaa20b55,0xbb0c281a,0xbb13f500,0xbb5bf0f6,0xbb48b68f,0xbad14d41,0xbacd5de3,0xba6f5ffd,0x3a63deae, -0x39771cde,0xba9a757f,0x3984ad00,0x3b119b14,0x3b867c40,0x3be261f3,0x3bb4434d,0x3b7ecbea,0x3a9528b7,0x3a263eab,0x3ae3a3af,0x3b949d01,0x3b69d2c1,0x3b7e00b5,0x3b7bf922,0x3bd74fca,0x3bd804ac,0x3badf78b,0x3b156f6d,0x3a243e97,0xba0c1bc3,0x39a14a79,0x3ab08bda,0x3b091726,0x3adf75dd, -0x3ade94c0,0xbb08256a,0xbaf164eb,0xbb8e0253,0xbb9e0633,0xbbff7b57,0xbbd78d36,0xbb233087,0xbb48a192,0xbabb04ac,0x3a99e8c3,0xba4da831,0x3a88b7de,0x3aca6cc5,0x3b12f102,0x3b8b2f49,0x3bdc48fa,0x3bcd7933,0x3ba0995b,0x3aa7676e,0x3b06de76,0x3b05c0e1,0x3b664ed0,0x3b25c3a0,0x3b8694d2, -0x3b9c4c3a,0x3c154c80,0x3c15201a,0x3c00f413,0x3b690594,0x3ae0fa18,0xb79d2d6a,0x3ab8ce12,0x3b1027bd,0x3b68693a,0x3b523e20,0x3b02a0a8,0xb885292f,0xbacfe953,0xbb3fb442,0xbb79ece7,0xbbe60ea2,0xbbe0b1cd,0xbb35407f,0xbb9fee78,0xbb4ad645,0x3addcf6a,0xba1bfc9f,0xbb2f0d04,0x386038f8, -0x3b70af5e,0x3b39b394,0xbb06954d,0xbaf90ea7,0xbb57b937,0xbbc26202,0xba7b3c60,0x3b8e5360,0x3bd45fac,0x3c58fab5,0x3c16f597,0xbbb0035e,0xbbe21d9c,0xbc00afcc,0xbc187718,0xbbb94d56,0xbb829dcb,0xbb722181,0xbb48869a,0xbb90f4f7,0xbbc347c5,0xbbdc2279,0xbb79aacc,0x3b8b0ffe,0xbacc1fbd, -0xbb1bf831,0xbaca316d,0xba6e9906,0x3b5a303d,0x3c15b99d,0x3c08865e,0x3bb0b989,0x39ef4f13,0xba920778,0x3c4c4ed1,0x3b653d1d,0xbae51d11,0xbbaaceb1,0xbc3105ef,0xbb7ee386,0x39d77fbf,0x3b51fd17,0x3bb9b59c,0x39a041ec,0xbc398a86,0xbc084012,0xbb9bb610,0x3a98ad68,0x3bec5278,0x3bf3a75a, -0x3bb28dde,0x3b5210dd,0x3b214140,0x3bb219ec,0x3b45df19,0x3b25c293,0x3a8e79aa,0x3adbbc50,0xb9b5dc0e,0xbb0641d6,0xbb0238f2,0xba017c7f,0xba06e7e1,0x38803f9b,0xbb12f676,0xbbe27dc2,0xbc3aa9a6,0xbc027cda,0x3a3ab52f,0x3c32d00b,0xbc755e17,0xbc5dd6ae,0xbbb549e4,0xbb2e8ac8,0x3953633e, -0x3a966b79,0x398dfa13,0xbb0e9bb0,0xbbd05dca,0xbb79aac0,0x3b803059,0xbb0c64b4,0xbb63f4ee,0xbb307d59,0xbb0faf81,0xb9fcab63,0xbb35f613,0xb9cba46e,0x399c4bad,0x3b0f2d2c,0x3ae10544,0x3a3e3c20,0xbaac19a0,0xbaae9a96,0xbabebf0f,0xbb1209be,0xb9f981d2,0x39f7d369,0xb7e03113,0x39af69ba, -0xba225e49,0xbadadae8,0xbc0e81c1,0xbbed648c,0x3ae4c6ed,0xbc50406c,0xbc51abb2,0xbc5b0f8d,0xbb3f8dab,0x3b02f507,0x3c1dab7d,0x3bb2e841,0x3a4b1553,0xbbce5ee9,0xbc1f9618,0xbbb6d3a9,0x3becfe78,0x3ad15d8d,0xba9b7f1c,0xbb70ad4e,0xbb26161a,0xbb2055ee,0xbaaff9e1,0xb8b0be50,0x39a64c2f, -0x389453d5,0x3a94e46f,0x39f01f9a,0xb916161f,0xbab25c29,0xbac538a9,0xba918c52,0xb995293c,0xb8dd6d7c,0xb8ce1dd0,0xb9b4d75a,0xba52b6bc,0x3a87cef3,0xba4356d7,0xba8baad4,0x3b9ff8a5,0xbc08a864,0x3c3af342,0xba8746c1,0xb9a7694e,0x3a41d343,0x3ba0c6b2,0x3af4ca10,0x3a33ccf0,0x39d66857, -0x3af05bfa,0x3a136f31,0xbb30c423,0xbac9f0cf,0x3aa38b78,0x3a7360a2,0x3b47f27c,0x3b8127fe,0x3b92d3f1,0x3af80a5d,0x3a9494ba,0x39c48a35,0x3a05c395,0x3adbd3c7,0x3b27cc93,0x3af03500,0x3a09284f,0xba7ca77c,0xb9dd6b5d,0xb98fe3de,0x3935f423,0x394a8a30,0x3a98e751,0x3b628066,0x3b242bc6, -0x3afe0796,0x3be24e5f,0x3c4d715b,0xbb9cfdbf,0x3b18a8f1,0x3b71ce57,0x3b3805f2,0xba6ce7c0,0xbad78769,0xbaf8e982,0xbaa94839,0xb9d799be,0x3b25a36e,0x3bc72297,0x3bb16d4e,0x3b833432,0x3b593155,0x3af79fbb,0xb913b1a9,0xbb348e49,0xbb80e712,0xbb99c829,0xbb9246d0,0xbb9e8c72,0xbb96d095, -0xbb5aafa0,0xba882405,0xb955a205,0xba48d351,0xba9b5863,0xbab9c003,0xbabbb0e2,0xbac00772,0xb9e98380,0x389fdcb3,0xb8896614,0xb99da5bf,0xbb308cc1,0xbb8d3dd0,0xba957268,0xbb4e1559,0xbb90eba4,0xbb3c75ad,0xb942828e,0x3b48dad2,0x3ba7d4b6,0x3bdf68fc,0x3bfdba1d,0x3bfa7e81,0x3be638a9, -0x3bf51bb8,0x3be0dcaa,0x3ba1f5d3,0x3b82dd94,0x3b1b5710,0x39f1112b,0xb9d1ad4c,0xbab674fe,0xbb17bf17,0xbb33c432,0xbb18b416,0xbb109ea8,0xba1e5a84,0x395b6955,0x3aa7c9db,0x3ae3def3,0x3ac2327c,0x381855fa,0x3965bf9c,0x38879154,0xb9f14f79,0xb90df1c9,0xba0ce1d5,0xba289e53,0xb8971caa, -0x3b12bd6f,0x3b3b3387,0x3b30c4f4,0x3b2b0c96,0x3b58409f,0x3b7c76d4,0x3b9c0cad,0x3bb2d72c,0x3bb4b876,0x3bc25cb3,0x3bcd0155,0x3b9b1095,0x3b4ec202,0x3ac47f9b,0x3a6b5149,0xba0b87d0,0xbad63c96,0xbaca0612,0xbae87b70,0xbb0644b8,0xbb1540ef,0xbb1bd779,0xbb1f32c0,0xbab0c1f1,0xb9414c94, -0x3a8c16cc,0x3aef2259,0x3b3bf8d1,0x3b6496f1,0x3b65eb1a,0x3b717819,0x3b89b53e,0x3b70318d,0x3b7d935e,0x3b78188d,0x3b1c7a4c,0x3b749184,0x3b63f734,0x3b69dfdc,0x3b4bef3a,0x3b336c80,0x3aebba5c,0x3a90ecf7,0x3a3c48a0,0x3a04eeaf,0x3992898d,0x3844b562,0xba194561,0xbab428f7,0xbaecded1, -0xbb0d0611,0xbb1c9620,0xbb1e2984,0xbb1db4f6,0xbb0f23ec,0xbb0f35dd,0xbb10b4bc,0xbb19ddda,0xbb21f8f3,0xbadee338,0xbaa73244,0xba7206e9,0xb8a9fa8f,0x3a9909fd,0x3afe9265,0x3b29fcd7,0x3b55376f,0x3b7c3f44,0x3b85e5e1,0x3b870954,0x3b8e3773,0x3b8f1f82,0xbb763d0c,0xbb267696,0xbb283ec1, -0xbb414126,0xbb4379a0,0xbb284268,0xbb1ec9d3,0xbb21b778,0xbb28a679,0xbb253990,0xbb23d9af,0xbb19fede,0xbb0986ce,0xbb085d65,0xbaffc8d1,0xbb04f672,0xbb1c3474,0xbb2305be,0xbb31fd29,0xbb48fc6d,0xbb54370c,0xbb568715,0xbb6096cd,0xbb75e5ab,0xbb82d3b9,0xbb89a025,0xbb869c04,0xbb84feeb, -0xbb766814,0xbb65f8e5,0xbb43521f,0xbb3d570d,0xbb2f923c,0xbb5a7728,0xbb708a9f,0xbb4770ce,0xba617f2a,0xba5ff44e,0xba89cb0a,0xba8705f1,0xba9e4289,0xbab5278e,0xbad653bb,0xbae9641b,0xbaec706a,0xbaf80e05,0xbb015263,0xbb07ceb2,0xbb0d5301,0xbb1010ea,0xbb10d502,0xbb106875,0xbb0f9ca9, -0xbb0b3ce8,0xbb07d28e,0xbb057325,0xbb077ee4,0xbb0f18b5,0xbb129cc8,0xbb077d76,0xbb09a551,0xbb0e0664,0xbb04403c,0xbadf92b2,0xbac8751c,0xbab23b14,0xbaa359dc,0xba6679ba,0xba469449,0xba520d8c,0xba7d653e,0xba5bffdb,0xbb52bef1,0x3a65b5b0,0x3a2cd624,0x3a2d9188,0x3a30ecfe,0x3a3fe1f7, -0x3a7d1f17,0x3a4f8d14,0x3a3557fd,0x39f16443,0x3a18e29a,0x3a28a6b9,0x3a4cb4e8,0x3a25f227,0x3a37685c,0x3a41af74,0x3a89a0f6,0x3a968945,0x3a8b1d61,0x3a52a5e6,0x3a28329c,0x3a061d80,0x3a23d9c0,0x3a29a5da,0x3a4a760c,0x3a2742bd,0x3a0f2349,0x397b85e7,0x39afe65b,0x39af6e20,0x3987a157, -0x3985462a,0x39424531,0x3965a218,0x39832d30,0x3996fbb9,0x3a11156e,0x3a1b5c89,0x39a91f2a,0x3a18519d,0x3a8c41ad,0x3ad5c2a8,0x3b2edf4e,0x3b17678f,0x3ade4546,0x3a16a040,0x39fe40df,0x3a62fe20,0x3b000e1c,0x3addad60,0x3ad670d3,0x3acfa0b3,0x3b1df126,0x3b280b90,0x3b099c4e,0x3aa33c8a, -0x3a3ab1eb,0x39d95ce7,0x3a2f8bd4,0x3a65b65c,0x3a620346,0x3a587432,0x39cfaf32,0xba1a935a,0xba1bba61,0xba8298a6,0xbad2866f,0xbaf1894d,0xbaeed310,0xba687719,0xb9b174aa,0x3854b8d3,0x39c98760,0x3930affb,0x3a3d242a,0x3a95fe61,0x3aae6094,0x3b12813e,0x3b7209ec,0x3b4a1e87,0x3b25e737, -0x39b4d86f,0x3a74866b,0x3a8fcc3d,0x3b2b5b37,0x3adf9f16,0x3b175e9f,0x3b0cfcad,0x3b889e5a,0x3b904476,0x3b7f8496,0x3b0a4bc9,0x3a9e5f72,0x39fe3924,0x3a70a193,0x3a9b4698,0x3a7710e6,0x3aa86b2f,0x3a349b4d,0xbaf4928b,0xbab0ee30,0xbb01e019,0xbb1ac0f8,0xbb41df74,0xbb36eea4,0xbb170c51, -0xbab8299b,0xba56d802,0x37a5de91,0x390ff431,0xba6c1f6b,0x3a069f08,0x3adc6b7f,0x3b652638,0x3bd5ba39,0x3bb9b8db,0x3b847791,0x3a696cdd,0xb90a4d63,0x3a88144f,0x3ba39f54,0x3b67b018,0x3b7286ff,0x3b50ce2b,0x3bc79f9e,0x3bcd7487,0x3ba7a354,0x3b240b30,0x3a842694,0x38b29ccc,0x3a2cfd68, -0x3aaf1853,0x3a91bf4c,0x3a905ab5,0x3aa08d36,0xbb3b2eb3,0xbb1dd2a6,0xbb9f8e88,0xbba77156,0xbc007374,0xbbd4b8dc,0xbb6a8d67,0xbb2c50ae,0xba928221,0xb900a748,0xba438423,0x3a660335,0x3ac43d36,0x3ae3fbe9,0x3b7107fb,0x3bc1f9d1,0x3bc9877a,0x3b9644d0,0x3a340391,0x3aacbb69,0x3adc2b82, -0x3b8a009e,0x3b256c89,0x3b6d68da,0x3b754f8f,0x3c08d48f,0x3c0fb114,0x3bfcd299,0x3b83d9c1,0x3b26e07b,0x3a6e9b20,0x3b0590ec,0x3b14fafe,0x3b1dcced,0x3b30479e,0x3ad168a9,0xba92714d,0xbb0ee1a1,0xbb49c319,0xbb540e85,0xbbe1c184,0xbbe09b29,0xbb81796f,0xbb95d190,0xbb296637,0x38292415, -0xba2929f6,0x3a044650,0x3b1283df,0x3bce0102,0x3b9cfb61,0xbaa9cacb,0xba1b1b7d,0xbaf55214,0xbba9f6a6,0xbad568cf,0x3b0b20dd,0x3b81f1d3,0x3c3414f1,0x3c0741a3,0xbb947766,0xbbdc714a,0xbc0656c5,0xbc391da6,0xbc03df47,0xbbdd6a41,0xbbe5f1f8,0xbbc901a1,0xbbcd7344,0xbbec0ba4,0xbbcfd8fe, -0xbb61375a,0x3b84bf13,0xbaaf5bb3,0xbae8d662,0xba87a43a,0xb98e1abe,0x3b8cb218,0x3c236642,0x3c17ae0e,0x3bcab032,0x3aa8702b,0x3ac9f3e8,0x3c210ee7,0x3adb717d,0xbaa93892,0xbb99f550,0xbc28bc05,0xbbc54eb6,0xbb04f25c,0x3b17cf72,0x3bbf68f3,0x3acc6f78,0xbc1cf077,0xbc11f38d,0xbbcf652e, -0xba84cf22,0x3bcc7bfe,0x3bff736d,0x3bc7c795,0x3b92999b,0x3b65e0be,0x3bb418ba,0x3b349b12,0x3b08fb9f,0x3aafacda,0x3afc38ab,0x362d505c,0xbb146e3e,0xbaf7e10f,0xb97dd647,0xb97ebb4d,0xb7ad27e4,0xbb23ad1e,0xbbdb7835,0xbc3dda2c,0xbbf612a1,0x3b3b93b5,0x3c14f3c5,0xbc54b701,0xbc2a32c5, -0xbbff20e9,0xbb907d90,0x3b478d88,0x3a85b3ed,0xb87e0f5f,0xba47109f,0xbbd550ef,0xbb90bbdf,0x3b7ed317,0xbaebbbe5,0xbb3dd8fd,0xbb67aafd,0xbb0ce487,0xb9ce7a78,0xbb4723b5,0xb9d237a6,0xb993626e,0x3a9dac2b,0x3a5137f0,0xb888c68c,0xbac5ad83,0xbac4bf9b,0xbabee6f2,0xbaecf46d,0xb988ef26, -0x39e9a3c1,0xb86f42ef,0x39d203ba,0xba1d6f8a,0xbb34e934,0xbbf819ef,0xbbc2eb3c,0x39071ca9,0xbc2c332c,0xbc2d20a8,0xbc1d8d31,0xbb349a6c,0x3adc80b9,0x3c3ef56a,0x3bed8908,0x3b3d2f3b,0xbb878dc3,0xbc20db72,0xbbe27315,0x3bdeaefd,0x3b0b1d28,0xb9d762f2,0xbb7fed87,0xbb2c464a,0xbb2ed5ad, -0xbaf4b76d,0xb9d4d82c,0xb8b8ebe5,0xba066927,0x3a55d962,0x39953ba0,0xb9c1bc8e,0xbabf52b1,0xbad08953,0xba452e0b,0xb9a91fea,0x381544fb,0xb91fb9eb,0xb9083368,0xba29ad9e,0xb9443652,0xba68d667,0xba4fde93,0x3b31c630,0xbbe6edce,0x3bd64c1f,0xbb43f7c1,0x3a8fc3b4,0x3b2ffd90,0x3bb2e94e, -0x3b953fce,0x3b514f32,0x38ee99f3,0x3b096b3c,0x3a66e442,0xbae4f191,0xbb0059ab,0x3a063a3b,0x3972846e,0x3b3dac60,0x3b879030,0x3b8e4d21,0x3b2239fd,0x3b078964,0x3a9738cb,0x3a8a97ae,0x3b0951f3,0x3b38f2ac,0x3af9654d,0x39fd4ee5,0xba9c5fde,0xb9e2d31a,0xb86a4408,0x397f6cca,0x39633966, -0x3a938dc1,0x3b4330bc,0x3a77e134,0x3a239f0f,0x3bde7c94,0x3c115639,0xbb0b0696,0x3b6961d5,0x3b8f09a8,0x3b5d79f2,0xba40497b,0xbb1445fb,0xbb381b5f,0xbb106378,0xbad8c4d0,0x3a0f93b7,0x3b974757,0x3b7e911c,0x3b65f5f2,0x3b364c1f,0x3abb3500,0xb9d25be3,0xbb39beef,0xbb65e6e4,0xbb86fb57, -0xbb843e3d,0xbb873212,0xbb790abb,0xbb066a96,0xba045c0a,0x38dc5802,0xba00a317,0xba80fd72,0xba918f57,0xba3f1200,0xba884d82,0xb9e5562a,0xba2c02f1,0x39e0b1f0,0x398bd695,0xbb0b7cad,0xbb3deb3d,0xbb4399b3,0xbb9feb40,0xbbac5adb,0xbb77ee91,0xbab6314d,0x3ac09e6f,0x3b51a4ea,0x3b9c9d88, -0x3bdad283,0x3bf4e3bb,0x3bf4200e,0x3c010129,0x3bec930b,0x3bb225a4,0x3b94ec31,0x3b3b8d48,0x3a835fec,0xb9b6074c,0xbacc2278,0xbb2e9806,0xbb43edac,0xbb17bf4c,0xbaf13b04,0xb91595dc,0x3a272e58,0x3abb205a,0x3a8d4948,0x3a21a737,0xba38e51c,0xb9dd168f,0xb99f2fb5,0xba49ad75,0xba4aeb52, -0xbab16570,0xbabf6c89,0xbacd4159,0x3b0c27f4,0x3b216d07,0x3af7c401,0x3af40ce2,0x3b2ef28c,0x3b61b925,0x3b8f4aa4,0x3ba64d0b,0x3badd451,0x3bbc611d,0x3bc44a85,0x3b9924a9,0x3b4f7666,0x3ac7d6ac,0x3a863535,0xb9f1d1bb,0xbab86caf,0xbac4474c,0xbaea7732,0xbb096603,0xbb114be2,0xbb0d8a94, -0xbb04bfee,0xba3ca6e3,0x3a0a3dd4,0x3afb684e,0x3b1e750c,0x3b48d2df,0x3b66ba21,0x3b58258a,0x3b571c50,0x3b6d9885,0x3b62f635,0x3b73842f,0x3b63444b,0x3b17602d,0x3b8d484c,0x3b8a2c27,0x3b8ed48e,0x3b8623eb,0x3b7a92e7,0x3b3c924d,0x3b105aea,0x3af52398,0x3ab13b68,0x3a50d5b5,0x399d90a9, -0xb9e0f0b0,0xbaaf0189,0xbaf885e9,0xbb09a5af,0xbb12be55,0xbb0c7ab4,0xbb0972d7,0xbae24cf7,0xbaed12d8,0xbaea53e1,0xbb012e6d,0xbb091ae4,0xbaa0610c,0xba115ae4,0x3826388d,0x3a422c38,0x3af83927,0x3b2a263a,0x3b3b0648,0x3b5abd1f,0x3b631f81,0x3b725313,0x3b8718c0,0x3b90b32b,0x3b954372, -0xbb16dcff,0xba9e3967,0xbab2a807,0xbafdfc88,0xbb124230,0xbadf5e94,0xbae7c1df,0xbaebaa9f,0xbb011f68,0xbafe7c13,0xbb022753,0xbb023847,0xbaf72cfd,0xbb0783e8,0xbafd8155,0xbb0524e1,0xbb1e11fb,0xbb2788fa,0xbb3a997c,0xbb4bd9b7,0xbb5193fb,0xbb4bb905,0xbb505987,0xbb61fa48,0xbb76b669, -0xbb844b26,0xbb799d07,0xbb72ab16,0xbb573e0d,0xbb33cd6e,0xbb09feb6,0xbad1e42e,0xbaa9c1d3,0xbb04c930,0xbb15fbbc,0xbad3849d,0xba1771b6,0xb9e39079,0xba19d7bd,0xba15b589,0xba48536d,0xba6f678d,0xba983722,0xbaa858ab,0xbabc8702,0xbad52ef1,0xbaeb6a94,0xbaff7fe6,0xbb07b3d9,0xbb0d6a72, -0xbb0aff46,0xbb08e96f,0xbb05c5d6,0xbafc65d1,0xbaf1e731,0xbaebe5a8,0xbaee1cf9,0xbafc18f0,0xbb0280c2,0xbaec5b82,0xbae8d330,0xbaf37226,0xbadb2e40,0xbab3d340,0xba9c01cf,0xba8a637b,0xba84da8e,0xba424ec0,0xba2f3353,0xba28ae92,0xba3c7190,0xba17fc46,0xbb45e0e3,0x3a449389,0x3a14f46a, -0x3a21bab6,0x3a1c1212,0x3a28290d,0x3a5dfc91,0x3a3d119a,0x3a222f1b,0x39ba41ec,0x39f9b3da,0x3a1430b2,0x3a50bc67,0x3a12c76f,0x3a19df17,0x3a1a2c32,0x3a746a9c,0x3a88f4de,0x3a7cb8c1,0x3a4854fd,0x3a24efb7,0x3a083c03,0x3a14fcf0,0x3a107ea9,0x3a1f3d23,0x3a070343,0x39dafc6d,0x38d8eb78, -0x39844914,0x399591be,0x3935e574,0x396205b0,0x3911a601,0x37ce85a9,0x39550b84,0x39805b88,0x39ae7a0f,0x39fae00e,0x39a0c52e,0x3a1b7f61,0x3a619034,0x3ab520e2,0x3b1ec227,0x3b172cc5,0x3adadfa7,0x39d04b31,0x3987f00c,0x3a2dbb9a,0x3b050e1b,0x3ad9236e,0x3ac8143c,0x3ab1d73e,0x3b12acc3, -0x3b1d6de9,0x3aff703c,0x3aa55fd8,0x3a4f48ab,0x3a11d2e8,0x3a3075d9,0x3a481404,0x3a0be79e,0x3a121cc7,0x392bc7a1,0xba61509e,0xba38e323,0xba91535a,0xbaece199,0xbadbf532,0xbad80a11,0xbaab02bc,0xb987b9e1,0x38c492f0,0xb87bbfca,0x38d6414a,0x3a1a74a3,0x3a9d14a9,0x3a916f93,0x3aff02ec, -0x3b56a1cd,0x3b43aab4,0x3b23644d,0x389125a9,0x3a259b0f,0x3a6a4a28,0x3b3f7df3,0x3acf2d1e,0x3b0516c8,0x3ae01dce,0x3b780f78,0x3b8818eb,0x3b6ff02e,0x3b12124a,0x3ac2e239,0x3a5eb587,0x3a8204f1,0x3a882fbd,0x3a009545,0x3a6940b6,0x39b9750c,0xbb0f915d,0xbab2269c,0xbadf3fe3,0xbb28efb8, -0xbb250459,0xbb214033,0xbb3c24da,0xba9c8578,0xba34a9f7,0xba312a64,0x37f2777e,0xba37a0d5,0x3a48e362,0x3a9c30c7,0x3b3e9a4c,0x3bc2bc97,0x3bb98aa0,0x3b8641f0,0x3a18067e,0xba1db740,0x3a1d4ca9,0x3bb09113,0x3b65a2de,0x3b640bae,0x3b30cdaf,0x3bb9d525,0x3bc3134e,0x3b9df105,0x3b31d8b8, -0x3ab47621,0x3a30ed81,0x3a6551bc,0x3a9c313a,0x396db849,0x39f4e245,0x3a3958b1,0xbb6813a0,0xbb3a5fea,0xbba8276c,0xbbb825ec,0xbbf64999,0xbbc98eb9,0xbb981ec0,0xbb0b47b1,0xba473469,0xbaa2455e,0xba434dcd,0x3a1c4f98,0x3aca2a9f,0x3ab12a94,0x3b4b7bb9,0x3ba355ef,0x3bc25e90,0x3b8ceff5, -0x396035e2,0x3a4dc49d,0x3ac6fb01,0x3ba04d07,0x3b1f11c9,0x3b433b75,0x3b3a6632,0x3bf6f94d,0x3c07d62b,0x3bf0a949,0x3b90b926,0x3b561c45,0x3ae3c1d7,0x3b1a981c,0x3b0de14b,0x3aa211bf,0x3b05b501,0x3a95dfbd,0xbb08492c,0xbb18b992,0xbb375d10,0xbb305f10,0xbbcc743b,0xbbcd98d4,0xbba444a8, -0xbb84d79e,0xbb037ae4,0xbab41c50,0xba467bfb,0x3b523eb8,0x3b87f967,0x3c0852cc,0x3bd0b18f,0xb7baf283,0x3a1f41c0,0xba0ae4cb,0xbb73d677,0xbafc58b2,0x3942d07e,0x3ae6aa8f,0x3c0c46cd,0x3be9a385,0xbb43b7de,0xbbcd957b,0xbc06b9f1,0xbc4cee99,0xbc21a217,0xbc0fd61d,0xbc169bbf,0xbc0a9dec, -0xbbf6f320,0xbc0311e2,0xbbb28a87,0xbb2f40c6,0x3b6af883,0xba6edeca,0xba82df98,0xb9abe235,0x39fc865e,0x3ba3b645,0x3c2135fc,0x3c1f6343,0x3be1b6fa,0x3b0ac81e,0x3b7c89e9,0x3be55798,0x3a000a28,0xba107029,0xbb855af0,0xbc1e7a88,0xbbf1ab9d,0xbb738ead,0x3ae7badf,0x3bc07f4d,0x3b32d298, -0xbbf4bc4c,0xbc154541,0xbbf86a38,0xbb258303,0x3b9b124a,0x3bf19bd7,0x3bd50831,0x3bb7979c,0x3b93f546,0x3bac491c,0x3b1ee246,0x3acfd590,0x3ab46efd,0x3b000a3c,0x3982307d,0xbb176d69,0xbadde302,0x3759b311,0xb918b593,0xb92bf5a9,0xbb2e1343,0xbbc818e5,0xbc35dbf4,0xbbdfe78e,0x3b9cb0b3, -0x3be1f15e,0xbc2fe85c,0xbbfc46a7,0xbc1d3825,0xbbb521cb,0x3bb8a453,0x3a7e9ba7,0xb7b429b4,0x3a52e0d2,0xbbc441f7,0xbb97b957,0x3b5c2480,0xbaa1a84e,0xbafa6b2b,0xbb817d13,0xbb07ee4d,0xb9bdfd63,0xbb437295,0xb9acde30,0xba34f5af,0x3989224e,0xb8beea0c,0xba44ab13,0xbada0f02,0xbad13df1, -0xbab724a7,0xbaaba2e6,0x379808bd,0x39bef8e9,0xb905ba97,0x39ee3280,0xb9bebf21,0xbb5bf74a,0xbbb822e0,0xbb88e3b6,0xbb1a1beb,0xbc043126,0xbc08939a,0xbba76216,0xbb0dcaad,0x3ac39d6a,0x3c4f97b8,0x3c0a4e6d,0x3ba0f2a9,0xbaabe7b0,0xbc158408,0xbbfd4837,0x3bb9f810,0x3b34de37,0x3a451b6e, -0xbb771748,0xbb1d97a6,0xbb2c541f,0xbb0f857a,0xba3a23a2,0xb9e72a4a,0xba758d8f,0x39ef6724,0x39236e8f,0xba0931b6,0xbabcc945,0xbac04983,0xb9cb761b,0xb931bfd2,0x37f610b0,0xb8d2886b,0xb8beb9b9,0xb9e0eb49,0xbab47080,0xba0f1627,0xb9767f35,0xba1ff034,0xbbc692a1,0x3aebcbf2,0xbae12188, -0x3b7189b2,0x3b9d6a93,0x3b9f6e5d,0x3bdb714f,0x3bb6cd6a,0x3a2a8b58,0x3b136a0a,0x3a5880cd,0xba87cfe3,0xbb1ec7b2,0xb9332adb,0xb888457a,0x3b2f87d1,0x3b80a54a,0x3b82b026,0x3b3ea8ed,0x3b3d036e,0x3af5f10d,0x3ac96db1,0x3b1c7a70,0x3b4213e3,0x3aef59c3,0x39deef76,0xba99f7a4,0xb9c58077, -0x38fa649e,0x3817445c,0x390aea2f,0x3a73dfd6,0x3b0ec7b6,0xb9cdbcb5,0xba3490cc,0x3baf3d5e,0x3b849a8f,0x39b6a405,0x3b80993c,0x3b91076f,0x3b6f96c5,0xb9b42986,0xbb2e7f77,0xbb71af0a,0xbb50b1fc,0xbb38b361,0xbaaf0d76,0x3b4198a5,0x3b17a142,0x3b42f664,0x3b1634dd,0x3a8104dc,0xba02b69a, -0xbb2885c3,0xbb3caab8,0xbb5e95f7,0xbb62c611,0xbb53e1bc,0xbb3750fa,0xba507352,0xb74f48a4,0x39af663c,0xb96645a9,0xba3e6d90,0xba2bd48b,0xb4837289,0xba08ea07,0xb9b728e7,0xba9abd91,0x3a25b8d6,0x3a41448b,0xba7df39e,0xba84d36c,0xbb8a7108,0xbbb5c198,0xbba42eb7,0xbb83990a,0xbb2070ff, -0xb9908ad7,0x3a8e5c65,0x3b27c208,0x3baa877e,0x3bdc0ce8,0x3bed2f77,0x3bfbf8bb,0x3be84c48,0x3bb7860c,0x3b9b3bda,0x3b48a3ab,0x3aabe4a5,0xb9e78271,0xbae05c64,0xbb3b03d9,0xbb49d55c,0xbb0c036e,0xbab8243e,0x3987e4df,0x3a7847ec,0x3aad735e,0x39cacb42,0xb9057331,0xba951353,0xba506da4, -0xb9fce35d,0xba6939ed,0xbaa57429,0xbb029ffc,0xbb0924b1,0xbb304b3f,0x3aca56fb,0x3ac24c3e,0x3a399893,0x3a5cefea,0x3ad3f12b,0x3b269437,0x3b608128,0x3b88b491,0x3b98556f,0x3baa818a,0x3bb2e6cb,0x3b8fd270,0x3b467bd2,0x3ac1d135,0x3a87452a,0xb9e67770,0xbaa464d1,0xbac2cb3d,0xbaec6427, -0xbb080821,0xbb0ab2fe,0xbafb3f7b,0xbacc704b,0xb94f5a60,0x3a8c0407,0x3b2571a3,0x3b3480b4,0x3b438b31,0x3b570555,0x3b392884,0x3b2ae8f3,0x3b2feeee,0x3b3fb03c,0x3b50c30c,0x3b32a301,0x3aef9de0,0x3b8ea44e,0x3b9002b8,0x3b93b6a7,0x3b90371f,0x3b8ba376,0x3b6a2c89,0x3b4ab664,0x3b3d9cc7, -0x3b097d19,0x3aa464d5,0x3a17bc63,0xb977103d,0xba9e4936,0xbaf58c8d,0xbb00c1b9,0xbb0544f0,0xbaf4674c,0xbae9d5eb,0xbaa970a8,0xbac32efe,0xbab3c6ac,0xbaced214,0xbad8bca3,0xba4271a4,0x391b494a,0x3a8045c2,0x3abe7643,0x3b20ed95,0x3b44a64f,0x3b3ccbd5,0x3b4a632c,0x3b35ae8d,0x3b4096a8, -0x3b6bf374,0x3b823e63,0x3b8a32ae,0xba313464,0x394a6894,0xb88e21ed,0xba3da4eb,0xbaa45157,0xba536840,0xba95b0f5,0xba9b14e3,0xbab6b4a7,0xbab54f06,0xbac5550d,0xbad8cea4,0xbae0903e,0xbb09300b,0xbb000f8c,0xbb065061,0xbb1eeb27,0xbb2a3bd1,0xbb3eb08f,0xbb49add7,0xbb4b7b89,0xbb398ce3, -0xbb354a24,0xbb3d74a2,0xbb53bd62,0xbb64de77,0xbb4e32b2,0xbb43c1f4,0xbb263369,0xbae5a35c,0xba81c8b6,0xb9912374,0x3951fc06,0xba077ce4,0xba41bd87,0xb7dd3359,0xb9c48958,0xb8c1f08d,0xb95e3b96,0xb971dfc5,0xb9d69c89,0xba02a950,0xba34616e,0xba4d2a11,0xba8afa03,0xbaaf7abe,0xbacf8932, -0xbae929cc,0xbafcb332,0xbb0695a9,0xbb01ab6a,0xbafdc037,0xbaf472b5,0xbae0dd8e,0xbad4f65c,0xbacde2d6,0xbad05aa8,0xbaded4b5,0xbaecba4f,0xbac7670d,0xbabdf37e,0xbacb94d7,0xbab3c482,0xba91c339,0xba751870,0xba65c25c,0xba6f66c6,0xba403077,0xba2b96a3,0xba109196,0xba1f0828,0xb9e3d169, -0xbb35d7f1,0x3a1d6d8f,0x39ecb8ed,0x3a0dc606,0x3a028f67,0x3a0a4d67,0x3a356bf2,0x3a228018,0x3a08bbf4,0x397a0d9c,0x39bc00a8,0x39f7206f,0x3a4c4d55,0x39f03aa3,0x39eb1400,0x39e11d14,0x3a4e0630,0x3a6db23e,0x3a5ce6d7,0x3a363770,0x3a19bde6,0x3a01805d,0x39ffa9f4,0x39ee2601,0x3a01b2ba, -0x39c1eb0f,0x39972e19,0x37c01e57,0x395fbc3d,0x398a2899,0x38c6cba6,0x394a75cf,0x38feb289,0xb8f2aa3e,0x3934c45b,0x394e9038,0x39463087,0x39c5cb51,0x398e27dd,0x3a124414,0x3a29579d,0x3a92c792,0x3b087725,0x3b0f9133,0x3acba5b4,0x393a9e6a,0x3826ff94,0x39f2a67a,0x3b05723e,0x3acb6948, -0x3ab1ed44,0x3a93a8eb,0x3b049dbd,0x3b0f9bd2,0x3ae85945,0x3aa210ec,0x3a57b011,0x3a293c52,0x3a260e90,0x3a1f266e,0x3994bd3c,0x3993e2d2,0xb8b2ec47,0xba8b46e7,0xba4659c4,0xba95f065,0xbb002187,0xbabd5428,0xbab8c01e,0xbad5c06f,0xb9497aa4,0x38fee9dc,0xb9d0c994,0x36a0cbf3,0x39da89c7, -0x3a9c1c53,0x3a6b0608,0x3ad44deb,0x3b334331,0x3b34d9c4,0x3b1a368f,0xb948346f,0x39b57180,0x3a34a0e2,0x3b4d6f20,0x3aaf9093,0x3ad5ba5f,0x3aa966fd,0x3b594ff9,0x3b7922b0,0x3b5c90ea,0x3b14aa75,0x3ad9d71d,0x3a956565,0x3a7d7f97,0x3a5471d2,0x3921342f,0x39e57665,0xb795cbe2,0xbb1c4089, -0xbaab9251,0xbabaed14,0xbb3a113d,0xbb0a6c2d,0xbb0af8db,0xbb56b5cc,0xba7d2e06,0xba0ca211,0xba962d1e,0xb90336a2,0xba20e3f7,0x3a71944e,0x3a474326,0x3b1a4750,0x3ba8220e,0x3bb158f3,0x3b81180d,0x3936cb7d,0xba817329,0x3966f3a5,0x3bb78b9a,0x3b583ecf,0x3b49e63f,0x3b12842b,0x3ba96f9c, -0x3bb5abe9,0x3b924e25,0x3b3aa507,0x3ad7c0dd,0x3a9a00b4,0x3a77b577,0x3a6cc69b,0xb9e70397,0xb95efe44,0x3903bd4f,0xbb848b19,0xbb4a507f,0xbba60af0,0xbbc9b33b,0xbbdfa126,0xbbb709e6,0xbbb51fde,0xbad7b9b6,0xb9eb3e77,0xbb09c45e,0xba549fe0,0x396a23b8,0x3acf3576,0x3a869fb8,0x3b2375da, -0x3b7f22d6,0x3bb3c537,0x3b80e926,0xb92db6a2,0x3993e676,0x3aae91a8,0x3bb1596b,0x3b083ee9,0x3b05d05c,0x3b0101ac,0x3bd6d3b9,0x3bf833d9,0x3bdf81f4,0x3b97d560,0x3b763193,0x3b1d4f6f,0x3b1cf19a,0x3af4eada,0x3949ad9f,0x3aa672fb,0x3a1ee934,0xbb33c3c9,0xbb07b282,0xbb0fb578,0xbb06b9f5, -0xbbaad392,0xbbac373c,0xbbbc58f1,0xbb5e5820,0xbab8e729,0xbb1f5033,0xba7512db,0x3ba9775b,0x3bb704c5,0x3c1de877,0x3bf69301,0x3ad9c77c,0x3abeb002,0x39b2cbf3,0xbb0bd3d0,0xbb06776f,0xbab60747,0xb8fb3b1f,0x3bce7b31,0x3bcb9bcf,0xba318712,0xbbb2daff,0xbc023b03,0xbc5312db,0xbc3520b7, -0xbc2571fc,0xbc28862a,0xbc2201c2,0xbc0621aa,0xbc089062,0xbb851c24,0xbad47034,0x3b3e6661,0xb9deb402,0xb9827181,0x39a0f5c5,0x3a8dbb14,0x3bab0fb4,0x3c11625c,0x3c1c0bff,0x3bf207b2,0x3b4065ec,0x3bb66a02,0x3b901da7,0xb8742560,0x389df490,0xbb6a3bd2,0xbc1526d0,0xbc0676a0,0xbb9de4f3, -0x3ad3ca50,0x3bbbd48a,0x3b6f36b9,0xbbaac9e3,0xbc1586e7,0xbc0ea2c4,0xbb6931f9,0x3b3b8a19,0x3bccd559,0x3bd57312,0x3bced2a0,0x3baa65bf,0x3b9b8a27,0x3b04c7ec,0x3a890f86,0x3aa37e5f,0x3aea847a,0x39a67a1a,0xbb0e5bcb,0xbaac0238,0x3928281c,0xb9894c9b,0xb991fafe,0xbb284808,0xbbae29c2, -0xbc227b96,0xbbbee6b0,0x3bca3341,0x3b99ddcc,0xbc106c31,0xbbb885e4,0xbc2b504a,0xbbc0698f,0x3bf95801,0x3a697479,0x38e052d9,0x3af315df,0xbbad2b6a,0xbb985266,0x3b2174fb,0xba2c7ae9,0xba555040,0xbb82a2c7,0xbb059d2f,0xb9ffc4ca,0xbb31967a,0xb9a7a8ac,0xba82f0c0,0xb9f9ee51,0xba55d391, -0xbaa4da47,0xbae79c0f,0xbad0334d,0xbaa66f47,0xba4a7bee,0x39862793,0x3953869b,0xb8a748a7,0x39e91aeb,0x39306e4a,0xbb540bf2,0xbb679e45,0xbb208bc7,0xbb9b5696,0xbbc7349d,0xbbd770c4,0xb9afe37c,0xbabd7b88,0x3a928dbc,0x3c47780b,0x3c0e773c,0x3bcf3e01,0x3abc4e87,0xbc05235b,0xbc05ee68, -0x3b80cf4a,0x3b54f124,0x3b020e82,0xbb5cdf58,0xbb09ad33,0xbb269416,0xbb1a565d,0xba881305,0xba42474c,0xba8cdff8,0x39626a3e,0x3908f87e,0xba1d59dd,0xbaaa0687,0xba9c5ed8,0xb54fad0b,0xb8c3fc17,0xb78bf857,0x378fc6d3,0xb91f2837,0xb91f7e9f,0xbb09486c,0xb59f8230,0x399cbb3a,0xbb8b1d1a, -0xbbbc8cd3,0xbb108c9c,0x3b06d6fa,0x3bbd66de,0x3bb7f77d,0x3b21cdee,0x3bf23843,0x3bed4e65,0x3b0b2e89,0x3b2011c0,0x3a117c0b,0xba2688a1,0xbb4422f2,0xba799565,0xb944092c,0x3b1047e5,0x3b51a8d5,0x3b5ecb22,0x3b48cf69,0x3b6114ff,0x3b2440d7,0x3b01652f,0x3b29620a,0x3b4764e6,0x3ad15e2e, -0x39bc0bdd,0xba826532,0xb9361dc3,0x38857f78,0xb8c08be7,0xb823c081,0x3a1e3d0d,0x3aaa1f06,0xba91a931,0xbadb5381,0x3b22b2e2,0xbaa73b48,0x3b26878f,0x3b6d2d34,0x3b8496c4,0x3b77a4da,0x397bff87,0xbb32ce38,0xbb935ebb,0xbb8ea2da,0xbb823766,0xbb4a0c32,0x3a919e0d,0x3a51f18a,0x3b18e800, -0x3adb03c0,0x3a14a850,0xb9e687ac,0xbb027141,0xbb0bdfb3,0xbb2bf400,0xbb32d6c4,0xbb0e95a0,0xbad70b94,0x39bc17df,0x39fa64c2,0x3a0257c9,0x37266523,0xb9e124d2,0xb9248e83,0x39dc84aa,0xb8ed0218,0xb9301453,0xbab74064,0x3a01c849,0x3a8a30a0,0x3a2ab832,0x3aa28e20,0xbb995836,0xbbabc772, -0xbb84befa,0xbb7964a3,0xbb5809e0,0xbaff5e8b,0xba6a3aef,0x3a096706,0x3b68e184,0x3bb4147e,0x3bcf7e44,0x3bdfad42,0x3bd18725,0x3bafba1c,0x3b94a29f,0x3b3e0e27,0x3aa43e19,0xba355467,0xbaf1966b,0xbb386aad,0xbb41af13,0xbaf19a58,0xba7f995f,0x3a1359c6,0x3a90578f,0x3a82064d,0xb97ab072, -0xba25236c,0xba9f8bad,0xba696d29,0xba151a75,0xba80f2ee,0xbad262a4,0xbb1f69dc,0xbb285b87,0xbb60a3f9,0x3a16b6c9,0x391e3ca4,0xba2813f9,0xb9998c00,0x39930af8,0x3aa0710b,0x3b04ce2b,0x3b3acd8b,0x3b6e5629,0x3b8f20e7,0x3b9abf32,0x3b810ca8,0x3b36c4a4,0x3abaa6fe,0x3a80946f,0xb9e101f0, -0xba9a4de9,0xbac47793,0xbaef90b6,0xbb05bc7e,0xbaff85cb,0xbad19fdb,0xba82df9e,0x397c2f68,0x3ac000f2,0x3b3b37f9,0x3b380ee1,0x3b2d768f,0x3b347cc4,0x3b0d1bbf,0x3ae9563f,0x3acbafcb,0x3b0bd9b8,0x3b1b345b,0x3ae6a060,0x3a8dde62,0x3b80c4c4,0x3b814b99,0x3b816ebb,0x3b808fe9,0x3b7db85c, -0x3b70267a,0x3b659d92,0x3b64269e,0x3b270bf3,0x3acd70d7,0x3a6822ca,0x3693b2ab,0xba7c1806,0xbadda96d,0xbae11dfe,0xbae455ca,0xbaca93a7,0xbabf8ac5,0xba77742b,0xbaa578f1,0xba7d0224,0xba9436f2,0xba8dcd83,0xb94e8dd1,0x3a56af09,0x3af07688,0x3b064777,0x3b3a88c0,0x3b530f64,0x3b351f29, -0x3b302e5d,0x3b05a905,0x3b084213,0x3b3798dc,0x3b5030f8,0x3b622f77,0x3a69858a,0x3ab1da16,0x3a8b2e50,0x39f2f434,0xb954bf83,0xb57abc70,0xba1bcde8,0xba2d0cb1,0xba68385f,0xba6cd57f,0xba915d8b,0xbab191d1,0xbac8d84e,0xbb061c63,0xbafa0002,0xbb02b48e,0xbb19ad32,0xbb257745,0xbb37eeb3, -0xbb3d62bf,0xbb3b4aed,0xbb1deb9a,0xbb104e80,0xbb0bb04e,0xbb1e56e0,0xbb2ad714,0xbb0e7771,0xbb024efb,0xbacb29e3,0xba1c65fd,0x394ecf81,0x3a8a4fbf,0x3ad29863,0x3a81a690,0x3a5b1522,0x3ab7e750,0xb9749239,0x3901a36e,0x38250aa0,0xb81ed16c,0xb9390316,0xb941e2d9,0xb990f075,0xb9b1e38f, -0xba36e26d,0xba865973,0xbaab4ac3,0xbac7cb38,0xbaddb9dd,0xbaf19015,0xbae53dfb,0xbadf9569,0xbad4e78f,0xbac00655,0xbab55c65,0xbaaf067b,0xbab0c6d0,0xbabcf76a,0xbacd269f,0xba9ba8e2,0xba8d19c5,0xba99e9e9,0xba83fd32,0xba53d1b7,0xba28c770,0xba2c6ff2,0xba48ee93,0xba32c214,0xba2468be, -0xb9fd96a9,0xba059c68,0xb9a999a1,0xbb1e9baa,0x39fb2919,0x39bfbc90,0x39fdf8a3,0x39dab647,0x39e1dc2c,0x3a10a008,0x3a0b9c6c,0x39e8427a,0x3920f5eb,0x398bc85c,0x39cf83aa,0x3a486653,0x39be0fcd,0x39a7a600,0x399dec73,0x3a29dcd7,0x3a4afaa3,0x3a42cba2,0x3a253905,0x3a0dd175,0x39f45d1d, -0x39d6d3b6,0x39bd9b7d,0x39c87f9a,0x397e090d,0x392ce61b,0xb87f4fcf,0x391be9bc,0x3957a9b7,0xb712923e,0x390e0955,0x38a2c911,0xb97eff1f,0x391d35d1,0x393b0dcc,0x389b3ce9,0x3996325e,0x393a7014,0x3a09670d,0x39ff67e1,0x3a6e13ee,0x3ae446d7,0x3b06b41f,0x3abcaf30,0x371b4ad3,0xb905ec46, -0x399d5411,0x3b03b6e4,0x3ab68017,0x3a9713d6,0x3a75a321,0x3aec7627,0x3b01a0d6,0x3ad731d3,0x3a9dd23a,0x3a5a8267,0x3a39ef61,0x3a115821,0x39e4de60,0x39012a75,0x37a44d97,0xb9a22cc8,0xba989fae,0xba4235f3,0xba914cbf,0xbb02d5f1,0xba994cfe,0xba8f14cc,0xbaedc3e8,0xb90b5060,0x39122f81, -0xba215b77,0xb8ca0393,0x3986fd8f,0x3a9c5312,0x3a414ecf,0x3aaefb11,0x3b105861,0x3b2590c9,0x3b115585,0xb9b2a4a7,0x3903229b,0x3a06b99d,0x3b573d1a,0x3a858bab,0x3a97065d,0x3a74b078,0x3b38732d,0x3b5f4c19,0x3b4c72a5,0x3b13c8fa,0x3ae470f7,0x3ab00162,0x3a62d313,0x3a0db393,0xb7c38e2b, -0xb7fa1633,0xb9c71209,0xbb1e9580,0xbaa45c10,0xba999422,0xbb487ef2,0xbae2746a,0xbaec034f,0xbb640518,0xba3b4733,0xb9baa7c6,0xbab6c9ad,0xb97a0fa0,0xba22ada6,0x3a85a6cb,0x39fbeaab,0x3afb041e,0x3b8c0660,0x3ba73042,0x3b76487d,0xb90aa585,0xbaa42a6f,0xb8c5ece4,0x3bba3d30,0x3b3e92b9, -0x3b25bbe8,0x3aef2965,0x3b979724,0x3ba70676,0x3b895280,0x3b4045e5,0x3aed56b4,0x3acd9fc0,0x3a6c39e6,0x3a09b128,0xba556453,0xba672490,0xba0f9a0e,0xbb8b4ca2,0xbb4c47a9,0xbb9ac759,0xbbd5acb4,0xbbc14abc,0xbb9f671a,0xbbc6611e,0xbaa2e3f4,0xb949f007,0xbb2d871c,0xba6cf946,0xb89ffd3a, -0x3ad62227,0x3a548124,0x3afd4ab7,0x3b39be6c,0x3ba438a0,0x3b6e5608,0xb9a93153,0xb9048081,0x3a9520e0,0x3bbdc13e,0x3ac97a14,0x3a6d06ad,0x3a934c6e,0x3bb352bc,0x3bdc92e9,0x3bcf3aaa,0x3b99e833,0x3b82e143,0x3b3b91f2,0x3b103231,0x3ab9c47d,0xba1a7b61,0x39d319e7,0x3800b3d6,0xbb42b637, -0xbac89f28,0xbab58bee,0xbaa3b2f8,0xbb810743,0xbb82550d,0xbbc3896b,0xbb2dbdba,0xba5f75a4,0xbb4b509f,0xba909188,0x3bcd3782,0x3bd8aecc,0x3c2b7251,0x3c0ba567,0x3b7947d9,0x3b05511b,0x3a521dd5,0xba12d22a,0xbafcf306,0xbb1d56cf,0xbacb8a6b,0x3b97f9ad,0x3bc12b5f,0x3b15b42d,0xbb8710ef, -0xbbeeef52,0xbc4bfdde,0xbc3e2988,0xbc3046e0,0xbc2b9b32,0xbc2a7d67,0xbc06134a,0xbc06612d,0xbb1834ba,0xb9f08560,0x3b0a0394,0x36ba1374,0x39692b99,0x3a0c67e0,0x3aaa52b3,0x3b9ebb70,0x3bee48c8,0x3c0e74fc,0x3bf8dc88,0x3b775a79,0x3bd9dc0c,0x3b199650,0xb8b36cd6,0x39ffaa64,0xbb51b32b, -0xbc0a9d1c,0xbc0bd5e2,0xbbb378ae,0x3aee9dd4,0x3bb1a93e,0x3b8d598e,0xbb3d6b99,0xbc103020,0xbc1ba466,0xbb8a80e0,0x3a81244f,0x3b9ca265,0x3bce1258,0x3bd78955,0x3bb32686,0x3b84dac1,0x3ac57e80,0x39fe2861,0x3a86e4e1,0x3ac2e517,0x396c0e54,0xbaf57981,0xba56539d,0x38a9611a,0xb9bcab35, -0xb990661e,0xbb0f3e70,0xbb918441,0xbc063d9d,0xbb999e4f,0x3be19848,0x3b3550d1,0xbbef5b7c,0xbb74bb6f,0xbc20b2bf,0xbbac03cd,0x3c1435ff,0x3a914290,0x3a1e32a8,0x3b3aa1fb,0xbb91f849,0xbb9561c0,0x3ac89088,0x378f8246,0x39df181c,0xbb665454,0xbaf94efb,0xba2e583e,0xbb10caf4,0xb9a8d31e, -0xba95157a,0xba66b300,0xbaa35d51,0xbac95c63,0xbaeb7653,0xbab98313,0xba886198,0xb99a4697,0x39c1c032,0x38383647,0x389e6691,0x3958baaa,0x3a73abe8,0xbb1fcdc7,0xbaf4ae97,0xba8d5468,0xbbcd2b68,0xbb99b651,0xbbabd2c1,0x3b930059,0xb9dfec23,0x3a59cc48,0x3c2f97d7,0x3c08d7e2,0x3bef1829, -0x3b8a492e,0xbbdefce0,0xbc04cca3,0x3b014de7,0x3b743d76,0x3b59af43,0xbb21ed10,0xbad91556,0xbb1b8038,0xbb16923d,0xbaa71d12,0xba5eb58b,0xba6231ae,0x39638eb0,0x398c7086,0xba1e69a2,0xba872ba4,0xba5a62fb,0x39989a3e,0xb90688d0,0xb62b5474,0x38fa9288,0xb9913916,0x39098722,0xbb0baaf5, -0x39f29fc6,0x3a3e480d,0xbbef981b,0xbbc0a231,0xbba71236,0x3bec862d,0x3bd8b64c,0x3b9c8f2f,0xba691e79,0x3bcf7162,0x3bfc4224,0x3b93dd3a,0x3b424f52,0x3a081f98,0xb9e1aa69,0xbb5c6eae,0xbad2f867,0xb958e118,0x3acc7365,0x3b115de5,0x3b350a66,0x3b46e957,0x3b75ce2d,0x3b477c0e,0x3b1b125a, -0x3b3365f1,0x3b4600b4,0x3aa199ec,0x3986b258,0xba418834,0x382cacdc,0xb8e6f23a,0xb91056ef,0xb90e35ff,0x39a6db7e,0x3a08fe06,0xba98a5b3,0xbb0d9d79,0xbac9c892,0xbbcdf793,0x3b995f7d,0x3b58dba7,0x3b7f46f2,0x3b855791,0x3a999b15,0xbb0dafbc,0xbb9c7b24,0xbbaea4fa,0xbb9fceee,0xbb907fcf, -0xb9deb976,0xb9cbbeae,0x3ae642c6,0x3a96e23b,0x39d57750,0xb907fbac,0xba9b0d35,0xbaa7bb65,0xbae3ce4b,0xbae6bfda,0xba82190a,0xb9ce7093,0x3ab3242f,0x3a75714c,0x3a25eca5,0x392dedb1,0xb8fa9df9,0x3973f5fa,0x3a121e57,0x39175125,0x376124a9,0xbaa6dcb0,0x395a36fd,0x3aa27e43,0x3b262373, -0x3b7f37a7,0xbb9279b0,0xbb837713,0xbb2909f1,0xbb4e5b5d,0xbb6e9627,0xbb4db1d9,0xbb19120f,0xba7954d3,0x3b0a08e8,0x3b873a61,0x3ba21af6,0x3bb53650,0x3baf3066,0x3b9cd201,0x3b84bbf9,0x3b2263c1,0x3a7864fd,0xba80ec39,0xbaf5e1d5,0xbb285f97,0xbb2eaf12,0xbabeac07,0xba1a9a4e,0x3a3e6f15, -0x3a89c40c,0x3a0ccdff,0xba37d105,0xba5f9089,0xba8ee966,0xba53fd3f,0xba1902b5,0xba8b3138,0xbaede565,0xbb31a382,0xbb3be39f,0xbb75116b,0xba09f5c8,0xba990bd3,0xbae60746,0xbaa2df20,0xba82763f,0xb8f9868c,0x3a23ff8a,0x3ac8f96d,0x3b297aa5,0x3b64c1e1,0x3b81cba3,0x3b673279,0x3b2cdb8d, -0x3ac57748,0x3a883869,0xb99ca119,0xba88e2b6,0xbabcf6ca,0xbae9257f,0xbaffe88d,0xbae55176,0xbaa241cb,0xb9c9dc46,0x3a1b28e3,0x3ae210ba,0x3b3c85ad,0x3b29c2ea,0x3b0ae688,0x3b0950f4,0x3ab9a7ad,0x3a7812e8,0x39e23d03,0x3a9f0c9b,0x3abe750c,0x3a4ebb33,0x397efcad,0x3b4c23a4,0x3b47bafe, -0x3b3ddd0f,0x3b3c6f35,0x3b3abb47,0x3b550e5b,0x3b64071f,0x3b7250e3,0x3b378cc7,0x3af31712,0x3aad9881,0x39c7e6fc,0xba03e89f,0xbaa25832,0xbaa5db34,0xbaa71db7,0xba908cb9,0xba8adca1,0xba1d2edf,0xba8e67b9,0xba150218,0xba244f28,0xb9d411a7,0x39cf8835,0x3abc2ed2,0x3b2870a5,0x3b2611f4, -0x3b4b9a28,0x3b550467,0x3b29cb39,0x3b149ccf,0x3abcfc9e,0x3ab07cdf,0x3af88da6,0x3b108f9b,0x3b218f1e,0x3b091d2a,0x3b1302c2,0x3b01e248,0x3acdd240,0x3a6c82af,0x3a4d92db,0x36b42b73,0xb8ce0382,0xb9b63aa5,0xb9dc3748,0xba3a3adf,0xba8159b8,0xbaa21be8,0xbaee1276,0xbadca18c,0xbae6b84a, -0xbb074382,0xbb12d6a5,0xbb20997d,0xbb215313,0xbb20544e,0xbaf00f78,0xbac540bf,0xba9feabe,0xbab83933,0xbac490be,0xba890357,0xba6440bd,0xb9fec9e1,0x3a06886f,0x3a9fe34c,0x3b0a2780,0x3b2cf060,0x3b10fb78,0x3b0ad9f2,0x3b23b55a,0xb8be8434,0x39a25972,0x397c6c80,0x38d6d257,0x37a5c6ac, -0x38c71154,0x39009a25,0x38dc1935,0xb98e80f2,0xba1be0a7,0xba64e4b1,0xba8f8d6a,0xbaa690bc,0xbabb948a,0xbaaf3382,0xbaaa73a9,0xba9f7755,0xba8c2337,0xba854a08,0xba7e4297,0xba84427d,0xba90e1a2,0xbaa64340,0xba448aa8,0xba29976c,0xba458083,0xba1fa2a4,0xb9feb724,0xb9b5708e,0xb9db79ba, -0xba16ce98,0xba155119,0xba0b44de,0xb9bd5403,0xb9e61e8b,0xb972d871,0xbaef213c,0x399254d0,0x39734d4d,0x39b81e73,0x3990fcfc,0x398fffa2,0x39b79c14,0x39c63840,0x399ba156,0x372c42e8,0x38e937a5,0x39838680,0x3a306ac4,0x39543729,0x3908f03c,0x3904d351,0x39e83f65,0x3a15eb38,0x3a1afed8, -0x3a016c0a,0x39dbdcbb,0x39b77cf0,0x3996e100,0x3987302b,0x39abcf5e,0x389f84da,0x37f6c7b9,0xb8ba87a8,0x38f49ca3,0x393a16af,0xb88bb8bd,0x39043baa,0x38962078,0xb9a77522,0x38eb911c,0x38e9787b,0x37c0ae4b,0x3956dcdc,0x38d3d970,0x39dcf384,0x3996e1d4,0x3a2b197f,0x3aae4d8b,0x3aee3b52, -0x3aa0eb8d,0xb9638ed1,0xb9bce858,0x384b9ee9,0x3af17961,0x3a8e0e6a,0x3a584493,0x3a34706c,0x3ac20afb,0x3ad8d01f,0x3abf602a,0x3a8c841e,0x3a40fd55,0x3a26ec71,0x39e08d21,0x3973ccf5,0x37c1fc36,0xb985804f,0xba0fbebf,0xba99d1fa,0xba43d710,0xba8e2d0d,0xbb0383b8,0xba7b16e4,0xba5f3b05, -0xbaf363bc,0xb8c28d18,0x38d7a16f,0xba465ace,0xb9700ffc,0x38db0a7e,0x3a8d4ee7,0x3a093608,0x3a816b90,0x3ad244d4,0x3b0df78c,0x3affa144,0xba1088c1,0xb954850b,0x395f02a5,0x3b53e04c,0x3a11a5ad,0x3a0e85f1,0x3a08c176,0x3b0e853e,0x3b3be4af,0x3b393f96,0x3b09429b,0x3ad6121d,0x3ab06a3c, -0x3a359d88,0x3973ba6c,0xb8cdc648,0xba0014c2,0xba4a20af,0xbb18d513,0xbaa48afe,0xba879a3d,0xbb512048,0xbab59c99,0xbac52dd9,0xbb68a447,0xba0c1eee,0xb9653b62,0xbac0f780,0xb9c83595,0xba2bacc9,0x3a88107e,0x39596324,0x3ac3cfd0,0x3b5bdfd3,0x3b9855cd,0x3b6183db,0xb9f2f072,0xbad0200e, -0xba0917d5,0x3bb39c17,0x3b12e7a9,0x3ae9766b,0x3ab1b25b,0x3b800f12,0x3b92ceb3,0x3b7fbc51,0x3b3caa9c,0x3aea5908,0x3ae355bf,0x3a3fea39,0x389753ab,0xba71e2bd,0xbacf9cf4,0xbaa320b3,0xbb85899b,0xbb42d834,0xbb8a208e,0xbbd56011,0xbb9fb026,0xbb8513f9,0xbbc8156d,0xba6958e1,0xb8075f5e, -0xbb41b3c1,0xba887aa9,0xb9a74fa1,0x3accc8c7,0x3a0d17fc,0x3aab7b83,0x3ae629d3,0x3b8f14c0,0x3b50aee7,0xba094c73,0xba2ff928,0x3a3f419a,0x3bbf005b,0x3a4e4202,0xb9cbad54,0x39366463,0x3b88c65a,0x3bb98fba,0x3bbd48aa,0x3b93d9a5,0x3b7f3e74,0x3b43503a,0x3aeff37c,0x3a5eaf58,0xba8f31f8, -0xb9dfa506,0xba01d413,0xbb34f152,0xba6ec02b,0xb9f6c830,0xb98cfa53,0xbb2a1de6,0xbb2da9e2,0xbbb7b801,0xbafe8c25,0xb9d0a5f0,0xbb61e775,0xbaa407ee,0x3bd75864,0x3bea99ab,0x3c2fe2b0,0x3c17f2a0,0x3bc5a698,0x3b0d07b2,0x3a2bc702,0x3a01f079,0xbafd2cab,0xbb4e677a,0xbb34aa2b,0x3b6ea201, -0x3bcb6abc,0x3bb1d235,0xbb1e62fb,0xbbd1c0e4,0xbc3ad5ad,0xbc3e986b,0xbc325b74,0xbc245baf,0xbc2673f8,0xbbfbf96e,0xbbf862b3,0xba02b9e5,0x3a0bb2ed,0x3aa8b80f,0x39aebbb1,0x393e1f24,0x39bff759,0x3a8b2d23,0x3b8117ce,0x3bad3c5d,0x3bf20c2e,0x3bf26fd3,0x3b9750b1,0x3be304f6,0x3a6ad08c, -0x38c5fb5f,0x39f851e6,0xbb4e69d4,0xbc017e64,0xbc110bc0,0xbbce622d,0x3af27c54,0x3b977fd3,0x3b92893a,0xba453b03,0xbc07ff44,0xbc254be7,0xbba35ac4,0xba60ae4c,0x3b4abdc5,0x3bbb43d0,0x3bcddb96,0x3ba9234f,0x3b4cc524,0x3a699d70,0xb8ced1d1,0x3a54c3da,0x3a8e36b2,0x36a792af,0xbabc6630, -0xb9a87ba3,0xb88f5640,0xb95a747c,0xb9c3932b,0xbab17ac2,0xbb6689ab,0xbbcade95,0xbb6a97d3,0x3be0c7fb,0x3aa302b9,0xbbc008d7,0xbae608c5,0xbc059394,0xbb89c4a8,0x3c187b65,0x3aa61e7a,0x3a9654b6,0x3b6cb415,0xbb7406f9,0xbb95dc22,0x3a1ab1a0,0x39e49733,0x3ab12cc4,0xbb37595c,0xbaf103c9, -0xba85edea,0xbaea33a5,0xb9f406ae,0xba9fbc72,0xba87ac3f,0xbab0e6f7,0xbacf7089,0xbad8e3bf,0xba948c7e,0xba3ff864,0x38a28b48,0x398c2539,0xb861c769,0x395a4818,0xb871dd37,0x3a98d142,0xba87785b,0xba670a17,0xb9840c16,0xbbd780a1,0xbb78619d,0xbb7be5d4,0x3c0bea55,0x386f34eb,0x3894c1eb, -0x3c03883e,0x3bee7186,0x3bf7c82d,0x3bd9c9cb,0xbbaecbf1,0xbbfa097f,0xb96a444c,0x3b7bfb29,0x3b8bf61a,0xbaaea6ac,0xbab7137c,0xbb1c2b3d,0xbb13c898,0xbac5caa3,0xba5f9666,0xb9c51702,0x39f3d095,0x3a0e349a,0xba10b90e,0xba3b1614,0xb9e90aa5,0x39ba38a1,0xb920526f,0x38ad9ddd,0x38d60bbb, -0xb98082f9,0x392650ec,0xbacea4c4,0x3a29f406,0x3a622bcd,0xbc13d525,0xbbcc505c,0xbbda8b4c,0x3c35a517,0x3badd72e,0x3b08995e,0xbb9a4b32,0x3b5a259c,0x3bd0cd87,0x3be8b974,0x3b66362d,0x3a232cb8,0xba3a6955,0xbb74b095,0xbb1b1d1e,0xba1eacee,0x3a13102c,0x3a8373fc,0x3b027b7c,0x3b336e79, -0x3b7405d8,0x3b5dfa99,0x3b2eaa58,0x3b3724d4,0x3b389abd,0x3a49cbde,0x38b86c90,0xb9d9431a,0xb6f32485,0xb964f2fd,0xb8aa26cb,0xb9311a09,0x3970fd3f,0x37eab4ed,0xba634c8a,0xbb1c494c,0xbbc0cb87,0xbc2a06e1,0x3bdf226b,0x3b6ab421,0x3b71b71a,0x3b8392bd,0x3af14707,0xbab631fb,0xbb98031f, -0xbbc952bf,0xbbb7c6b4,0xbbb2c5ce,0xbae59da9,0xbac972a2,0x3a87a8e8,0x3a39ade2,0x39c01dbc,0x39853355,0xb9da840f,0xb9f880fd,0xba5aa0a3,0xba302dc2,0x39979bc7,0x3a6a0140,0x3b0c9489,0x3aaad095,0x3a3821e7,0x3978c772,0x39453296,0x39b93041,0x39eda9e8,0x39471b2f,0x38eb3551,0xba67ccc0, -0xb901adf9,0x3ab6dda6,0x3b907f85,0x3bda9078,0xbb700188,0xbb2ab818,0xbaa2d9dd,0xbb1f1dc7,0xbb6ebcfb,0xbb7d89e3,0xbb5478a3,0xbaf474f2,0x3a763d52,0x3b349411,0x3b571e67,0x3b7f95c8,0x3b7fc0c2,0x3b74fd49,0x3b4ec993,0x3ae35954,0x39cf6dbf,0xbaaa65b8,0xbaf77051,0xbb109fa9,0xbb12697c, -0xba8fea14,0xb986e0e6,0x3a46a1e1,0x3a58d5d2,0x38b2e6d6,0xba7dc953,0xba534415,0xba6211cc,0xba222681,0xba08c87d,0xba92b421,0xbaf8d262,0xbb3ac0a8,0xbb4ac2b8,0xbb75a28a,0xbac682a3,0xbb127381,0xbb297567,0xbb0282fc,0xbb0855a6,0xbaad419d,0xba2283b0,0x39a63146,0x3aca8404,0x3b2a7f3b, -0x3b51d762,0x3b4c831f,0x3b24aeb2,0x3ad713ee,0x3a94a1ae,0xb8db2a6d,0xba610d5e,0xbaab974c,0xbadb1b26,0xbaf04681,0xbac395f7,0xba5be0b9,0x3937a6c1,0x3a5e3a91,0x3aee6d61,0x3b27141e,0x3b0dde8b,0x3ac11d64,0x3ab6bb75,0x3a3fd90c,0x3980fbb9,0xb9ffcbe9,0x39b207bd,0x3a159254,0x35f23691, -0xba04ae87,0x3b0aef2e,0x3aef754d,0x3ac814f5,0x3ac1f701,0x3ab5793e,0x3b1b8422,0x3b42327e,0x3b6121b3,0x3b34014e,0x3b024720,0x3adfcc7f,0x3a4d50f0,0x389d7eb7,0xba17bdd8,0xba2c2ab2,0xba2f67ee,0xba178c9a,0xba1f0907,0xb98d607c,0xba6b5b8e,0xb94808fc,0xb8e67782,0x398e0502,0x3a77d4d1, -0x3afe6c3b,0x3b48c03d,0x3b3b43c0,0x3b4cb8bc,0x3b4f38d6,0x3b182176,0x3af800ac,0x3a7fb678,0x3a4a4af6,0x3a8b8400,0x3aa0387c,0x3ab6bc76,0x3b4001b4,0x3b360cfb,0x3b2a890a,0x3b20971f,0x3afb4faf,0x3ac50acb,0x3a2a5a4e,0x3a0240e9,0x396361ed,0x38940c84,0xb99599c4,0xba102c44,0xba5d943f, -0xbabab9e4,0xbaabf935,0xbab49b77,0xbad33fd8,0xbae7d080,0xbaf90dd0,0xbaf1b818,0xbaed8e21,0xba9140d1,0xba34fe34,0xb980e214,0xb9ac8f10,0xb9a6a3f1,0x38b2a18c,0x39550eee,0x3a0195c2,0x3ab6aefb,0x3af48704,0x3b33efc3,0x3b4fbef0,0x3b43a888,0x3b461a6a,0x3b4d5b3d,0x3872b572,0x39d94c8c, -0x39c027ec,0x393925b1,0x391a6983,0x3994dca2,0x39dee1ea,0x39f1ec3b,0x390840be,0xb91105a9,0xb9c53390,0xba17d387,0xba427da0,0xba698c72,0xba53a7fd,0xba4caedf,0xba37e583,0xba195ca7,0xba153074,0xba0d4ff0,0xba178251,0xba28f19a,0xba551b2d,0xb98539ef,0xb915f962,0xb968fdf3,0xb8d661f8, -0xb88fb86b,0x37f35978,0xb883b4cb,0xb980acaa,0xb9a8ccd3,0xb9b1fab0,0xb94e24cd,0xb990de08,0xb8aa9a18,0xba8e906a,0x39a73af5,0x397f7cde,0x39f330bd,0x39a91b5e,0x39a29a30,0x39b46ec1,0x39daf79a,0x39b7b1cf,0x38a810ae,0x39229b91,0x399bb28e,0x3a44b6ab,0x396f5bef,0x3906e15e,0x3913ab10, -0x39d448c7,0x3a0c586a,0x3a2042b5,0x3a07740c,0x39e6e449,0x39cf75ee,0x3960c190,0x3913cc8b,0x3923be8c,0x36f699de,0xb8f140ba,0xb96c14cc,0xb8716215,0xb792b84e,0xb9819ccc,0xb834b8ff,0xb894f2e7,0xb9f62060,0x380371b6,0x391a013a,0xb8f033be,0x38a4d3c6,0xb90b3f1c,0x3a0396ec,0x39c6c3ff, -0x3a3409a0,0x3a9d6c70,0x3af352a8,0x3aad26f1,0xb8af3b19,0xb9984eca,0x38ab800b,0x3af4bb56,0x3a7eeef8,0x3a3a29cd,0x3a2f856a,0x3aac2154,0x3ac3de77,0x3ac255f3,0x3a8fc625,0x3a4ec85f,0x3a3b4b23,0x398fd471,0x38c529a2,0xb7660a96,0xb9faf625,0xba28d943,0xba8d6ed5,0xba3a2020,0xba84e334, -0xbaeacabe,0xba42107c,0xba014bb2,0xbae58b59,0xb81c1d80,0x38d32a84,0xba53b28d,0xb9918c5f,0x3605fb5e,0x3aa215b0,0x3a230b8a,0x3a80ad94,0x3ab2fac5,0x3b0e401c,0x3b063024,0xb9a0bebc,0xb91b813c,0x397583c5,0x3b5b5064,0x39cd601f,0x3965d380,0x39ba4ee6,0x3aded0f0,0x3b204a77,0x3b336def, -0x3b0469bf,0x3ad3f997,0x3aa99849,0x39e98353,0xb7e45388,0xb79fdcf4,0xba6a191a,0xba920e84,0xbb06b28f,0xbaa6b154,0xba6fd067,0xbb58d6f3,0xba846796,0xbaa1867a,0xbb5b1fcd,0xb9a30226,0xb852184a,0xbabb7d7c,0xb99ea5b5,0xba40ae63,0x3a92f192,0x39d0e0cb,0x3ac49b09,0x3b3d8042,0x3b9740d1, -0x3b6ce5ca,0xb92a1893,0xbaba2b2c,0xba0e71ee,0x3bb12a25,0x3aed3400,0x3aab0784,0x3a95b472,0x3b56299e,0x3b804792,0x3b79fbb0,0x3b3d4201,0x3aed2971,0x3aea7f18,0x3a0b03e9,0xb9909c3a,0xba570132,0xbb0d4e0c,0xbaf54816,0xbb662fcc,0xbb368ee5,0xbb65d2d2,0xbbbd8bfb,0xbb79bd5a,0xbb53c99c, -0xbbb80fb8,0xba2dcdf5,0x38cb66e9,0xbb42f44f,0xba8bb679,0xb998efaf,0x3ad2af7f,0x3a3f4a6d,0x3a9387ff,0x3a9fd1a9,0x3b8a5abd,0x3b5751ea,0xb83ce9ed,0xba27f5fe,0x3a3d29f6,0x3bc3c835,0x39e656de,0xbaa02cee,0xba029fa4,0x3b43ad25,0x3b982339,0x3bb0d1db,0x3b8cbe8f,0x3b71c037,0x3b3a3352, -0x3aa5a190,0x398dfec4,0xbab06355,0xba94c3ad,0xba5cc311,0xbb12c7f5,0xb9679424,0x39514e94,0x39bc3e36,0xbaad85ff,0xbabf3f83,0xbb994a9e,0xbaaa5d0b,0xb6c9776c,0xbb601148,0xbaa918d2,0x3bcfbade,0x3bf56580,0x3c367cf6,0x3c295f43,0x3c0c7072,0x3b2dff98,0x3a62a8a1,0x3ada71ba,0xbab26694, -0xbb46e5d5,0xbb52a7aa,0x3b724603,0x3bf2a915,0x3c0fbf22,0xb879bb7b,0xbba0c28d,0xbc1bbf8b,0xbc3261b3,0xbc28fc47,0xbc12f2d9,0xbc18c35a,0xbbdd9948,0xbbd34119,0x3a92b1e1,0x3a9814e0,0x3a2c896a,0x39ae597c,0xb8af738d,0x3903a353,0x39f2c225,0x3b35685b,0x3b57a905,0x3bbfaa5b,0x3bde470b, -0x3ba7bc65,0x3be2fc04,0x3813e3d8,0x3a2646b5,0x3a3386fb,0xbb36ad30,0xbbdc34b8,0xbc0c07e0,0xbbd93985,0x3b126302,0x3b864d8e,0x3b9dc687,0x3ae61aa4,0xbbe90c70,0xbc2306b3,0xbbaff093,0xbb01e508,0x3afbad48,0x3bad1301,0x3bbe9ebd,0x3b9805b3,0x3b09419b,0x3928f1e6,0xba2599ef,0x3a34bd33, -0x3a274562,0xb981c5f7,0xba67d659,0xb84886e4,0xb85ac71c,0x379724bd,0xb9a9fcef,0xba3acd9d,0xbb14b515,0xbb8de6d8,0xbb21813e,0x3bcb3c4a,0x394ff8af,0xbb909a67,0x3a02084c,0xbba48595,0xbb109a0b,0x3c1b68be,0x3b12219f,0x3b2197b8,0x3b9bc0a2,0xbb1fc847,0xbb828d28,0x39b61c7f,0x3a9ccc43, -0x3b2ad356,0xba9465b5,0xba955d48,0xba6e89f5,0xba8416b2,0xb9bd01f9,0xba71199f,0xba5c6d8a,0xba97258b,0xbab3ab24,0xbab5e553,0xba4507b9,0xb9ca2520,0x3968b15d,0x38d723b9,0xb88594ea,0x386096d8,0x3721d391,0x3a21d40b,0x39563c85,0xb9bce41d,0x379b5c64,0xbbbd7317,0xbb4ef377,0xbb1689b0, -0x3c37c148,0x3a62dc18,0xb8f97f15,0x3bb80d58,0x3bd6ccfe,0x3c028d01,0x3c140c96,0xbb43f90b,0xbbc36e3a,0xbade6f02,0x3b8f3e70,0x3bb3f688,0x3a3a5d27,0xba342ef2,0xbb0598ca,0xbaec4b0f,0xbab66c95,0xb9d465ba,0x39eb407a,0x3a71714a,0x3a77b61e,0xb9db1488,0xb9ca6c21,0xb909f7ac,0x3954e45b, -0xb8ca92cf,0x38eb2e1d,0x38adadec,0xb8ff3823,0x37b13e06,0xba5f551d,0x3a05b2b6,0x3a3c7969,0xbc183838,0xbbc9076a,0xbbeaa701,0x3c51c2c0,0x3b4ad804,0xba52cef3,0xbbf40ce3,0xb91170cf,0x3b8eb81c,0x3c1ecbb8,0x3b9c588b,0x3ae4f76f,0xba304e0e,0xbb5aced2,0xbb254379,0xba670f2e,0xb921132b, -0x3960524a,0x3acb26ca,0x3b27e9df,0x3b728993,0x3b6fa1ea,0x3b3dd46c,0x3b3bbb79,0x3b1960e0,0x39a16fc4,0xb8151b27,0xb957d2f0,0xb85d7e00,0xb960bf70,0xb883466d,0xb9308515,0x3961c611,0xb8a5ef75,0xba1029f1,0xbb14eb85,0xbc1f8949,0xbc524d73,0x3c1712ed,0x3baa3915,0x3b91a9de,0x3b8a2fa6, -0x3b3a7d98,0xb8cdc62c,0xbb6ec1c0,0xbbc8df81,0xbbb65805,0xbbb763fe,0xbb07aa56,0xbaf3ec21,0x3a706c63,0x3a86e8f1,0x3a64acbf,0x3a7d420d,0x3a02473e,0x3a03b46d,0x39b0ec2d,0x3a3b3d51,0x3ac992f6,0x3b097f9a,0x3b2eb53f,0x3ac68ed1,0x3a342b59,0x398350a4,0x3994d825,0x39a6575a,0x39b24128, -0x391ce97a,0x39158869,0xb9f5e05e,0xb95f3410,0x3aca3c06,0x3bc53fe2,0x3c1e2d21,0xbb2ca665,0xba436f48,0x3993cd0b,0xbaaa19d9,0xbb3bcd30,0xbb6f00f1,0xbb501bcd,0xbaf07565,0x3a07d5a1,0x3afa16c5,0x3b035124,0x3b247ffd,0x3b2b0aa7,0x3b31f8d8,0x3b18d4f1,0x3a970df1,0x38251116,0xbaabbc15, -0xbaccb4e8,0xbae327c9,0xbaea825d,0xba130f20,0x383a0a45,0x3a43a5d0,0x3a192693,0xb9866118,0xba6b26a2,0xba21db38,0xba1d4446,0xb9dab7b2,0xb9bfb3d0,0xba83eac2,0xbaeb4883,0xbb330342,0xbb49e491,0xbb52a40c,0xbb0b1ed8,0xbb3042d0,0xbb26fa34,0xbb070fe9,0xbb19e3bd,0xbaea1023,0xba95dc19, -0xb99d7a8f,0x3a8009c5,0x3b0b003d,0x3b3c66e1,0x3b48c805,0x3b32a743,0x3b0ac0a0,0x3acad87c,0x39cf9ffd,0xb9c41496,0xba6798bf,0xbaa1c5ae,0xbabb7c40,0xba9d66d9,0xb9f99439,0x3a3fbf87,0x3a81b5af,0x3ae24676,0x3b0116da,0x3ac7773f,0x3a5865d7,0x3a4c2359,0x396fe1e8,0xb9684863,0xba8cc244, -0xb9ade81b,0xb8f7472a,0xba089ddf,0xba811967,0x3a85b686,0x3a48bb74,0x39da999b,0x39b33025,0x39463f46,0x3acf4fc5,0x3b201d1f,0x3b4bee52,0x3b3738fb,0x3b19a49b,0x3b1b8529,0x3ac56541,0x3a8445e4,0x39efdc2e,0x39998cf6,0x39794610,0x3959c328,0x389ab93d,0x39b2582b,0xba0f05e9,0x398091e6, -0x39ef01a1,0x3a785895,0x3abce811,0x3b174183,0x3b56b2b3,0x3b43ba7e,0x3b4bf06c,0x3b3b8875,0x3b0b00d3,0x3ac9fca6,0x3a3c18ff,0x39e882c0,0x39cf8570,0x39e455e3,0x3a0c6938,0x3b573c55,0x3b545b49,0x3b4d308a,0x3b54dae2,0x3b3f9104,0x3b198bf3,0x3ac9f88a,0x3ab2fd9f,0x3a871eba,0x3a5145e4, -0x39d237db,0x3944ac6d,0xb8f76168,0xba28436c,0xba12cc69,0xba21b26b,0xba42a33d,0xba6ac64e,0xba78085c,0xba5cc8d2,0xba8b9948,0xb965cb23,0x39621f98,0x3a561788,0x3a50a07b,0x3a7717e9,0x3a9f117a,0x3a9f30f0,0x3ab0c3d5,0x3b07b04f,0x3b1d7d90,0x3b3f93c6,0x3b5ae072,0x3b5b8cff,0x3b5e49d9, -0x3b68a703,0x39a12638,0x3a45a0c9,0x3a35e878,0x3a00d67c,0x3a04cd1c,0x3a32a5d6,0x3a6d6720,0x3a83c751,0x3a494765,0x3a1b03e1,0x39dae117,0x39819550,0x38e1738c,0xb78e9ddc,0x38385447,0x38737781,0x3905318c,0x395270e8,0x3931bb07,0x3980006d,0x37e7ff8d,0xb9100c73,0xb9d7c9e2,0x39bd598a, -0x39b39825,0x39353f10,0x3977f100,0x396770a4,0x3997900b,0x39152d25,0xb84dcbe9,0xb9069e21,0xb840b788,0x39217b34,0xb93b21c5,0x384df7b5,0x38cdaec1,0x398cd95e,0x39900a23,0x39af603f,0x3988d5c1,0x397de532,0x3979aea1,0x39b38afe,0x39943eb9,0x3801995b,0x38ac6c74,0x396b56f7,0x3a37e4ae, -0x3929186c,0x38154d41,0x384c73ac,0x39846427,0x39c715fd,0x3a073af8,0x39d9f8f6,0x39b7c2d8,0x39917784,0x398a4f14,0x398b856a,0x39b3d7b8,0x370fbf85,0xb767dd1b,0x37f0adac,0x38f31511,0x38c4071f,0xb8f84d05,0x3927ef97,0x3934b7b1,0xb963ec95,0x39693c22,0x395a2bdc,0x38ba9cf1,0x398b5b8e, -0x393902cd,0x3a0b5352,0x39b9eb04,0x3a22c947,0x3a80b47a,0x3ae559ad,0x3aa61606,0xb88071e4,0xb9ab6eb7,0xb730214c,0x3adfb260,0x3a432767,0x3a0148df,0x3a0524b8,0x3a800b00,0x3a96ec8a,0x3ab06d82,0x3a7c5c9a,0x3a32fb21,0x3a1105c1,0x39b759ef,0x38ccebfa,0x3909f435,0xba0062b5,0xba348db2, -0xba562b7e,0xba21abda,0xba427f5a,0xbaafa545,0xb9d244da,0xb9ad92fc,0xbabf4d81,0x3916378e,0x39594bdb,0xba245ad6,0xb94ed6a0,0x39744b23,0x3a97263a,0x3a17b882,0x3a677b7e,0x3a89f0c4,0x3b035b84,0x3aff2956,0xb9655eab,0xb98478c6,0x38e39acd,0x3b526fd5,0x395ed3ea,0xb8f77959,0x3861d695, -0x3a88450f,0x3aeda749,0x3b20d8d7,0x3ae5f1da,0x3ab09902,0x3a8eb045,0x39f094e0,0xb906eca6,0x3952e514,0xba92d0e4,0xbab37259,0xbacbb724,0xbaa9c5c6,0xba8eee8b,0xbb4d8eda,0xba41cc84,0xba5c2b96,0xbb3d7c7d,0xb8cebbbb,0x3918dcfe,0xba93d03e,0xb967c39f,0xb9ca6a27,0x3aa76d1f,0x39de1d60, -0x3ac0b9f6,0x3b1bba2b,0x3b902320,0x3b6bc940,0x389508b4,0xbab1d767,0xba2eeaa4,0x3ba3b40f,0x3aaddaad,0x3a598af0,0x3a4b42c7,0x3b1a8ae7,0x3b47aa63,0x3b66763f,0x3b2d1feb,0x3acf3769,0x3accc95d,0x39ce8d2e,0xba10ae33,0xba0ecb35,0xbb2cff1b,0xbb11c5a8,0xbb34ba15,0xbb21c8e9,0xbb277fb0, -0xbb8e42f5,0xbb3c19a3,0xbb1d269b,0xbb99ee49,0xb9ad72ec,0x39858b1f,0xbb357621,0xba82bee0,0xb8d0d7ea,0x3acffca1,0x3a2beab3,0x3a6e2b33,0x3a2e1863,0x3b7d6f1c,0x3b4b7e86,0x3969edab,0xba49a118,0x3a0731c8,0x3bbc86cb,0x396ebfdd,0xbaee77d6,0xbaa45e35,0x3acb4b30,0x3b5adb34,0x3b9c75ec, -0x3b773494,0x3b4ea321,0x3b19a4d6,0x3a6f71c7,0xb96b1b6f,0xbaa57702,0xbad0961c,0xba81530f,0xbacafd8b,0x39beabee,0x3956f302,0x39df05df,0xb93d7cf4,0xba29f01b,0xbb5d08fc,0xba4f401c,0x39998790,0xbb496013,0xba909802,0x3bc98c2e,0x3bf5082b,0x3c342ffd,0x3c35cb8e,0x3c2bb5dc,0x3b3c8a4f, -0x3a507132,0x3b0f1fce,0xba8c6293,0xbb40b051,0xbb69e39f,0x3b696f8c,0x3c06e02d,0x3c3ad50a,0x3b14e005,0xbb548cba,0xbbf265e2,0xbc1f3e78,0xbc1a1ecd,0xbbfc82b4,0xbc045e84,0xbbba1ba5,0xbb9cba61,0x3b105052,0x3abb82df,0x395b4565,0x3948e0cd,0xb9550b55,0x38b16ded,0xb9443e83,0x3ace70f3, -0x3ae267d5,0x3b870ddd,0x3bbee34b,0x3bb07560,0x3bd7c2ca,0xb89d5dda,0x3a99c03d,0x3a00e156,0xbb2d9179,0xbbba1190,0xbc0b1c87,0xbbef8f44,0x3b03d841,0x3b5267e9,0x3b9d33ac,0x3b82e619,0xbbb93eaf,0xbc1ae251,0xbbc33923,0xbb3bd83f,0x3a77b484,0x3b968583,0x3ba48233,0x3b72e5e6,0x3a84f45b, -0xb9ba72ba,0xba7bd44a,0x3a38b728,0x392eca3e,0xb9d42c36,0xb9d32110,0xb70f0300,0x370d47c9,0x38609498,0xb8866b4a,0xb9e14c8f,0xba86d300,0xbb2bd95c,0xbac0ceb1,0x3ba6cd4b,0xb965d221,0xbb18f908,0x3b345fed,0xbb095e7c,0xba329382,0x3c05729f,0x3b2d2125,0x3b5aa2fc,0x3bb2f17c,0xba9e0ac7, -0xbb53c3b6,0x38c0c62b,0x3ac643d0,0x3b518472,0x399ec1dc,0xba35f723,0xba82898f,0xba014987,0xb9cd7bf4,0xba407112,0xba03545d,0xba2dfcb0,0xba6fa4b9,0xba616687,0xb9d16e3c,0xb88413c8,0x39354255,0x3605265a,0xb7b2e0e8,0xb8526884,0x38726920,0x3902198d,0x3a3e91ad,0xb7461f00,0xb8c9fb46, -0xbb89e82c,0xbb0f98b7,0x3760303f,0x3c420f51,0x3984a05b,0xbaa8f620,0x3b108c6b,0x3ba58315,0x3bf26fcf,0x3c271c84,0xba2344b0,0xbb82b690,0xbb570bf9,0x3b8710ef,0x3bbba3c4,0x3b18c51b,0xb9f989b1,0xbb063439,0xbacda8ef,0xbaaf16a2,0xb8df2274,0x3ab2f67b,0x3ad235b5,0x3ab9559c,0xb96e9aa8, -0xb800a9ca,0xb517a135,0x38683f13,0xb776c20f,0x389bcad9,0x3863fbed,0xb7fc798b,0x369176a4,0xba08c54f,0x39cd8228,0x3999c8a1,0xbc037540,0xbbb26e63,0xbbd0f2d9,0x3c2696e5,0xba9fb590,0xbb99a0cb,0xbc239a9a,0xbb8db14b,0x3a91d856,0x3c2f61c7,0x3bbe4aff,0x3b461e39,0xba84dbc1,0xbb4ab54e, -0xbb4482d5,0xbaec9c4d,0xba98621a,0xba1f14ad,0x3a74f6d2,0x3b0d6aa2,0x3b5a3e0c,0x3b75bc65,0x3b4caf6a,0x3b3a269a,0x3aeae1f2,0xb80da2f5,0xb8bc88be,0xb8de560d,0xb8bffbc0,0xb907924a,0xb83bfedb,0xb8ba522a,0x38a54efc,0x37e64aa6,0xb995d865,0xbb09e347,0xbc40511c,0xbc5a227d,0x3c4359fb, -0x3c029aa9,0x3b8e5a38,0x3b6567d7,0x3b3a82a6,0x3a2acde2,0xbb2bd766,0xbbbe8558,0xbbaf352b,0xbbb8042e,0xbb22625a,0xbb15dc86,0x3a1a91a8,0x3a9e1b4d,0x3aa22875,0x3ac19db3,0x3a953e2e,0x3ab34851,0x3abbf31a,0x3b063be5,0x3b409050,0x3b5b83e7,0x3b419d1d,0x3ad716fe,0x3a1b17c3,0x39613632, -0x396e77cf,0x395a4f5a,0x394a7c1e,0x3898437c,0x38ae6cf6,0xb882d779,0xb94a1647,0x3afea8fd,0x3be8cfab,0x3c4652bb,0xba5f3dc8,0x39dc47b7,0x3a8c0ae2,0xb9e9feeb,0xbb073200,0xbb459833,0xbb301316,0xbac70ae5,0x39baeba8,0x3aab580f,0x3a7679d4,0x3a94db60,0x3a948c91,0x3aad0efe,0x3a9db2a0, -0x39d59f85,0xb9c4a602,0xba9f7e23,0xbaa24a4b,0xba90a1e8,0xba85f678,0xb868fcad,0x3a0ee103,0x3a451bc0,0x39de628a,0xb9b0cb1d,0xba312683,0xb9b52a70,0xb9b98ab0,0xb952954b,0xb90ad86d,0xba4344aa,0xbab40c61,0xbb10f213,0xbb287971,0xbb16926f,0xbb03f0e7,0xbb20144b,0xbb118b50,0xbaea41aa, -0xbb085dde,0xbae91678,0xbaa69da9,0xba37f279,0x3a093515,0x3adbbaf2,0x3b2792f6,0x3b403937,0x3b3aa041,0x3b22acdd,0x3af43b89,0x3a660357,0x390c0e01,0xb9b18c9c,0xba3ab75b,0xba6fedc6,0xba0d85ae,0x38fc52f3,0x3aada77b,0x3aa10473,0x3ace9b83,0x3aafb7c4,0x3a836696,0x39bf935e,0x39c57a2e, -0xb8079349,0xb9d221af,0xba9d4158,0xba2eaaa3,0xb9fbcc06,0xba237922,0xba8469e8,0x39b4e624,0xb949a14f,0xba0cd355,0xba0c669f,0xba4ef786,0x3a419631,0x3adf100a,0x3b218747,0x3b28cf9d,0x3b21dfe2,0x3b35abc0,0x3b0ba703,0x3afdf1ed,0x3ad5755b,0x3ab40cb1,0x3aa7bb15,0x3a8bc744,0x3a63f245, -0x3a7b9f96,0x38c64f92,0x3a6c5e0e,0x3a96d8d8,0x3ade5d1c,0x3b037a58,0x3b2eb2c6,0x3b5d4ee4,0x3b456b2a,0x3b3cf736,0x3b31221a,0x3af581d1,0x3ab9fe30,0x3a238b47,0x39b196bd,0x38b03f0c,0xb8c913a8,0xb91a4f32,0x3b71ffad,0x3b5927b8,0x3b5a5e52,0x3b6d8ee9,0x3b683128,0x3b40563c,0x3b156833, -0x3b0829cb,0x3ae63be1,0x3ac684d1,0x3a995826,0x3a898562,0x3a4b64f7,0x39d3cb1a,0x39d7ee04,0x39bc81c7,0x39bc0dae,0x3970dffa,0x3947229a,0x39bf41fb,0x393cec97,0x3a7b2dd2,0x3ab67c2c,0x3b02ac55,0x3b05f846,0x3b1468cb,0x3b20b4d6,0x3b1b7922,0x3b1875d5,0x3b39abd6,0x3b365e22,0x3b51d5bd, -0x3b65990d,0x3b6c62cc,0x3b7ad7d1,0x3b75a043,0x3a553b70,0x3a850e63,0x3a84f8c6,0x3a5787c2,0x3a61aec1,0x3a87a85d,0x3aaa5ebd,0x3abe20a8,0x3aaf7304,0x3aa5d51d,0x3a9974af,0x3a8af2b0,0x3a7f6ac4,0x3a6c711a,0x3a7491a8,0x3a74fa4c,0x3a805940,0x3a82d716,0x3a75539f,0x3a806a14,0x3a6655d3, -0x3a4b10db,0x39ef31b4,0x3a9b269a,0x3a9a2a51,0x3a7f3e78,0x3a835ee2,0x3a6f02ca,0x3a773c23,0x3a57638a,0x3a2b79dd,0x3a0cf88c,0x3a22eb20,0x3a3aa66f,0x39c8688d,0x3a23ef10,0x3ab6184f,0xb96c9e44,0xb8ad702c,0x36cf3ce1,0xb8992e59,0xb8d51cf8,0xb91fc370,0xb7a18f1c,0xb89d91ef,0xb9a0d98c, -0xb98da6d6,0xb90ce08e,0x39b887d3,0xb92ebccd,0xb9a4d56b,0xb9a573c5,0xb931a4c6,0xb8536d30,0x391ea254,0x38537be1,0x34c9f839,0xb8a70d04,0xb8ad12da,0xb7fa8afc,0x39826ad5,0xb9bcd867,0xb9add57f,0xb79716d3,0xb82e7dc0,0xb8eff086,0xb993fe88,0xb784ddec,0x381e5703,0xb9a53965,0xb8212d0b, -0xb9058d2d,0xb84b3d4e,0xb6f7505b,0xb8681a8b,0x393df952,0x36fefa8d,0x3955a069,0x39c50c9b,0x3aa18261,0x3a4f7916,0xb9df6176,0xba391378,0xb9fb7fb2,0x3a929ed0,0x3951f027,0xb80e5e03,0xb79c35f8,0x39916189,0x39d3f38d,0x3a5ce578,0x39fc7cb4,0x3989bcec,0x38b6005f,0x370f4a33,0xb9728607, -0xb84200a5,0xba619cda,0xba8a90d5,0xba5791c6,0xba6c8f2b,0xba6a6cc8,0xba9d2654,0xb9e8e100,0xb9d8cf2a,0xbabe69ef,0xb8be42d0,0xb8d3685d,0xba5e01ac,0xba006416,0xb8a89fda,0x3a3d07b9,0x3958896f,0x39c2bc27,0x39920a04,0x3aab3d85,0x3aacc8b2,0xba2333c8,0xba54a0bf,0xb9eac6d0,0x3b2548c0, -0xb98fbcac,0xba3eb91d,0xba26100a,0xb83750e9,0x3a442f4c,0x3ae70139,0x3a90e739,0x3a4e5d0e,0x3a00c0f9,0x38b19698,0xb9e8986b,0x39072b5b,0xbaccf68c,0xbae67309,0xbaa26ef2,0xbad22ea1,0xbace0935,0xbb4a0eeb,0xba63165a,0xba5a0b93,0xbb25e361,0xb96e231d,0xb82155df,0xbaa1b034,0xb9f8f6b9, -0xba03243d,0x3a8916bc,0x395540e1,0x3a8a20b6,0x3ab42423,0x3b6abf4d,0x3b43b187,0xb9298a85,0xbae20b8b,0xba9be852,0x3b8152a5,0x3a191fe2,0x38febecf,0x38630ced,0x3a7d5018,0x3ad857ad,0x3b374814,0x3b02e17d,0x3a8cb384,0x3a78638b,0x37e2e10d,0xba69bf4d,0xb9ce4884,0xbb470382,0xbb22c18e, -0xbb06ef9f,0xbb0b5d98,0xbae4fad8,0xbb37ff93,0xbb00a49a,0xbae56d57,0xbb72daff,0xb99a9656,0x3906f89d,0xbb30ec37,0xba9ead24,0xb987265c,0x3a8f3656,0x39b8c337,0x396ebd9c,0xb9e92a0a,0x3b35de2d,0x3b0be817,0xb955235a,0xbabcd473,0xb964fb92,0x3b9d75b0,0xb9633fc3,0xbb23aa01,0xbb1c2e3f, -0xb9cbf4a4,0x3ac5dc31,0x3b71dc7e,0x3b38d873,0x3b165065,0x3ac0df4b,0x39c7dc1c,0xba2f45e6,0xba8d382e,0xbaf000ea,0xba7954fe,0xba3a1d5e,0x3a18842e,0x38df4fdd,0x39fd5082,0x3951367f,0x37c85d64,0xbb09d2d0,0xb9f94eb1,0x39972574,0xbb347a64,0xba981d77,0x3bad4b55,0x3bd47940,0x3c28c439, -0x3c34017c,0x3c35a380,0x3b216187,0x3938ce8a,0x3ae28b4d,0xbadd5f5b,0xbb6c9b6c,0xbb8b252b,0x3b269b95,0x3c01aab3,0x3c4c9642,0x3b815c79,0xbafae378,0xbbbe5bb4,0xbc0f242a,0xbc0d96b3,0xbbdacb50,0xbbe5cd96,0xbb95616b,0xbb48b432,0x3b2a6040,0x3aa6902f,0xb8a09df2,0x383c65af,0xb928ed9d, -0xb7c8e537,0xb98b638e,0x39fd8006,0x3a2fa49b,0x3b1c797a,0x3b8eff96,0x3b99f7d6,0x3bb63787,0xba107bd0,0x3a90e4f6,0xb933f645,0xbb57ed87,0xbbb52c20,0xbc16d6a6,0xbc123a9e,0x39dd0777,0x3a8dee81,0x3b642fd0,0x3b9efaf1,0xbba91272,0xbc1e2ef4,0xbbf92754,0xbb8afcdb,0xb9a9bd0c,0x3b5e23d5, -0x3b71a24a,0x3b197db2,0xb9b490d9,0xba8b8ab7,0xbaac7963,0x3a17c5e5,0xb994d9b9,0xb9dde8a9,0xb8e577a0,0x381010c0,0x3828f8c2,0x384fab68,0x3882f9c2,0xb9206697,0xb9b6ce2b,0xbaa1bf80,0xba4b5f06,0x3b657fe5,0xba36b05c,0xba8341c1,0x3b88590a,0x3726be39,0xb82ccf18,0x3bc0b66e,0x3b1fcc3f, -0x3b61631d,0x3ba3fde8,0xba8c4442,0xbb6e9197,0xbab1d57c,0x39f0a2ef,0x3b25650d,0x3a897d4c,0xba3a5fc4,0xbac3a543,0xba0ba3ec,0xba4aed0e,0xba3f1555,0xb9df3c07,0xb9ecd675,0xba1e0872,0xba0419f0,0xb9319063,0x38aad46e,0x388518e6,0xb7ff7030,0xb7ac09ba,0xb8714229,0x377355da,0xb7b8a4d3, -0x39e81086,0x393a3339,0xb9b5b68a,0xbb510595,0xbabfa1c1,0x3aaa09c7,0x3c202924,0xba4b4ded,0xbb236dc4,0xba39fdca,0x3b61a111,0x3bcb64d9,0x3c17dbd1,0x3a5f0c87,0xbb3b872b,0xbbb57d1b,0x3b2ea1ba,0x3b9ca093,0x3b5e3147,0xba4c2ce4,0xbb2099aa,0xbaea38b6,0xbac91a31,0xb7c33973,0x3af50739, -0x3af1d395,0x3acbace7,0xb99ff399,0x394c0885,0xb89902cf,0x3835280d,0x374d4c38,0x382fb453,0x3823aed1,0x35880809,0x37b8fab1,0xb984ea98,0x39090eec,0xb8fefe83,0xbbdba936,0xbb902e39,0xbbcf93d0,0x3b8f3973,0xbbb52e7d,0xbc0022e9,0xbc346aa3,0xbc05e3f0,0xbb410afd,0x3c14cca2,0x3bbea4ab, -0x3b75a78f,0xbb037b56,0xbb608e6d,0xbb89a8fe,0xbb6deba0,0xbb31c114,0xbae3b1a5,0xb4162c0c,0x3ab115a7,0x3b274c63,0x3b517159,0x3b3cc354,0x3b1461f5,0x3a7a8cb7,0xb9a7c935,0xb8fb4a4a,0xb80e0530,0xb8a206f1,0xb86ec542,0xb83927b1,0xb7aa1446,0xb77877d7,0x38a0d155,0xb9278e92,0xbb06926f, -0xbc478553,0xbc49cc9e,0x3c5a8f18,0x3c28dc37,0x3b7f7d1d,0x3ad9fd43,0x3af35902,0x394b08c3,0xbb1faec1,0xbbc5f15b,0xbbc017ba,0xbbd1a074,0xbb663514,0xbb53d15f,0xb98a4b9e,0x3a691f65,0x3a95c934,0x3abe3afc,0x3aa5b217,0x3ada691e,0x3b065d97,0x3b35f473,0x3b70f47b,0x3b849400,0x3b30b8d3, -0x3abb70ee,0x39b8708d,0x38d2ce06,0x3934541a,0x38c3744e,0x38c53a64,0x38093eed,0x37bec2b4,0x39130390,0xb958fbb5,0x3b121092,0x3be18775,0x3c5c2050,0xb84f24bc,0x3a556138,0x3a81b7fd,0xb9afcc49,0xbaee0231,0xbb3e9489,0xbb3b094c,0xbb05e467,0xba3929df,0xb9168ebd,0xba529752,0xba65ba9c, -0xba6be03a,0xba442a39,0xb9cf841e,0xba34cfe7,0xba893547,0xbac5742a,0xbab779c9,0xba7c03fe,0xba2e0bff,0x371bd372,0x3a20b749,0x3a040c2c,0x39439d72,0xb9957575,0xb9e6c2b2,0xb8b75e98,0xb93d1fd1,0xb7397d32,0xb72993c2,0xb9f77279,0xba87e5ce,0xbae8fac0,0xbb0ff6c1,0xbadf9ad4,0xbb1458a2, -0xbb266643,0xbb1065f8,0xbaff7c0a,0xbb0936c9,0xbb0c5445,0xbaf5d654,0xbae56ae5,0xba36ea77,0x39bb7850,0x3aaedccb,0x3b0235c6,0x3b10aabb,0x3b0b649f,0x3acd068c,0x3a4ee310,0x390d8264,0xb9965948,0xba27f343,0xba68f316,0xb9a6241d,0x39c283bb,0x3aaefe3a,0x3a8cd94b,0x3a940b88,0x3a2311b2, -0x3a018522,0xb77058fb,0x3820bcec,0xb99a856b,0xba1a7f9c,0xbaa7a2cc,0xba945bf2,0xba83b718,0xba898f6d,0xbaaf53da,0xba4b98cf,0xbadd035d,0xbaf94bf7,0xbaeb730d,0xbb08a2e4,0xba335b4d,0x3973f9a8,0x3a812512,0x3ac88244,0x3ae673df,0x3b171209,0x3af78364,0x3b056664,0x3b056169,0x3ae2ab51, -0x3ad83e59,0x3aac500d,0x3a90b44a,0x3a8b6c8d,0x39b43377,0x3a83aabf,0x3ab309dd,0x3aeec0a0,0x3b06615a,0x3b2014c0,0x3b36ae4a,0x3b2375b1,0x3b00a2c5,0x3b063480,0x3a94924e,0x3a6e09db,0x3920fada,0xb951609e,0xba19efbd,0xba8ea2d0,0xbaab26cd,0x3b5ed34b,0x3b20eee6,0x3b286800,0x3b424ec1, -0x3b4cb9e0,0x3b26208a,0x3b09d7f9,0x3af33aed,0x3ad14aaa,0x3ab8bd09,0x3a9c51bb,0x3aa0a3b7,0x3a88e9fd,0x3a6452e0,0x3a58d0b2,0x3a4e957d,0x3a68738b,0x3a5117be,0x3a4b1085,0x3a79674d,0x3a893743,0x3ad28431,0x3b031f35,0x3b20c28c,0x3b2dc347,0x3b3f2040,0x3b42aa52,0x3b39b0d8,0x3b2e13dc, -0x3b3dfc9f,0x3b21a75d,0x3b425372,0x3b3fb8db,0x3b50dee4,0x3b6fdb5c,0x3b41e974,0x3a380abc,0x3a363219,0x3a4f316c,0x3a26295a,0x3a372907,0x3a5cc368,0x3a92bce8,0x3aaaf3d1,0x3aaf10b4,0x3ab26eaa,0x3aafe5fe,0x3aa97397,0x3aa5ef47,0x3aa4bd59,0x3aa52dd3,0x3aa4343e,0x3aa70687,0x3aa3f8d5, -0x3a9bee0e,0x3a990bd6,0x3a9497cb,0x3a980a65,0x3a92d626,0x3ab23892,0x3ababdeb,0x3ac28011,0x3ac51936,0x3ab0a2f3,0x3aafe568,0x3aa8a654,0x3a95daf6,0x3a797774,0x3a477d3b,0x3a372a6c,0x3a3a7b88,0x3a3c77e1,0x3ae8c1c0,0xb9b0a6a9,0xb8e21295,0xb58b146e,0xb8dff96c,0xb90918d1,0xb966fc8d, -0xb882d544,0xb8e7dfd3,0xb9a02ced,0xb9a3ebff,0xb953edd2,0x397de4be,0xb962831d,0xb9c74a62,0xb9d65968,0xb9aeafc0,0xb96ad7c8,0x3804b51e,0xb88b0315,0xb8e9708a,0xb93d5926,0xb95c9340,0xb946ce66,0xb7eeba25,0xb9eb2c95,0xb9fe8c36,0xb9752073,0xb9be82d1,0xb9f51ce0,0xba106940,0xb9b5fa2c, -0xb973ef9a,0xb9fa2de9,0xb9359fde,0xb93cbe69,0xb99f309e,0xb933bb63,0xb99afd21,0x393f6a42,0x382b485f,0x39437528,0x394f2e81,0x3a99ba10,0x3a55e9d6,0xb98184e0,0xba2ef608,0xba11f617,0x3a53f3a0,0x37d5c5f6,0xb93caa4e,0xb96675b7,0xb92f72f9,0xb89a7a7e,0x3a1d6d5b,0x398997d6,0x38b36fa0, -0xb909342b,0xb98350fc,0xb9dd7439,0xb93510a3,0xba8a8b98,0xba98902c,0xba4a5dc6,0xba8e4de6,0xba883ba9,0xba6ba576,0xb9d08701,0xb988d9c8,0xbaaa89d5,0xb9662955,0xb979fc3f,0xba6c82a7,0xba120bb0,0xb8c52a55,0x3a4a4ec7,0x39a4673e,0x39e5dc55,0x38fd3fb9,0x3aab85d3,0x3ab39b45,0xb9809ea7, -0xba469583,0xba0b34e8,0x3b054cc7,0xb9914926,0xba5f7e88,0xba7c9802,0xba5543c0,0xb89de283,0x3aab92f8,0x3a30074e,0x39ef2c38,0x38449acd,0xb960555d,0xba2e2511,0x3930c3cf,0xbaf62f31,0xbb00c019,0xba5abdef,0xbaf06fa3,0xbaebba87,0xbb399106,0xba6d08cb,0xba4275f9,0xbaf8b965,0xb9722048, -0xb90a4c99,0xba9ea045,0xb9bca139,0xb9cca6b0,0x3a8d2248,0x39f492d8,0x3a9401a6,0x3a8471ac,0x3b67ae70,0x3b534f6e,0x3a125b03,0xbabb5990,0xbaa4bb49,0x3b459fb1,0x39acf5c2,0xb8b1d20c,0xb9a71f2d,0xb982d6b7,0x39c51ba1,0x3b12e163,0x3ac147eb,0x3a32a53a,0x39b404fd,0xb99aa6e2,0xba94985f, -0xb9a57c93,0xbb4d4f3a,0xbb2491d6,0xbaad575e,0xbae2dff5,0xba85e33f,0xbaa501d2,0xba8b46e9,0xba989cbf,0xbb271d50,0xb989ccf8,0x37a6dad4,0xbb195b33,0xba983e55,0x37dc3e7b,0x3a8a88cd,0x3a248d3f,0x39b4d4fa,0xba2032f1,0x3b323a3a,0x3b13cc9a,0x3a1621a2,0xba9e01fb,0xb9d0c707,0x3b801530, -0xb8a84e1b,0xbb2255cc,0xbb4750d3,0xbb048462,0xb902d66f,0x3b34fe86,0x3b029877,0x3ac94da8,0x3a20640c,0xb938d2a1,0xba86332b,0xba5cb1b6,0xbaf1a0d8,0xba2a94a7,0xb92373fa,0x3a057116,0x3910680f,0x3a182f87,0x38bc2294,0x39f1f000,0xba83419a,0xb98e31e9,0x399e4749,0xbb0e97d6,0xba826f28, -0x3ba1a983,0x3bcd74ba,0x3c2a088d,0x3c3eafbe,0x3c4a1c39,0x3b5c898d,0x3a818f4f,0x3b1efacb,0xba8c6c56,0xbb4d2980,0xbb858f21,0x3b09a4a3,0x3c027a6a,0x3c5e38e5,0x3bcc2b9d,0x397dce59,0xbb71415b,0xbbebe8b7,0xbbf5e3c1,0xbbb62537,0xbbc517b9,0xbb5c1285,0xbabba5ba,0x3b20feaf,0x3a523e78, -0xb90c00f5,0xb82f8e68,0xb91fb09c,0xb9435f22,0xb9276686,0x3863d1af,0x38b82846,0x3a9972f4,0x3b449104,0x3b788e3e,0x3ba071f9,0xb99537db,0x3aeabd70,0x3a4f1142,0xbb06788b,0xbb7bc1dd,0xbc0ae8eb,0xbc142640,0x3845dcbc,0x39ef072f,0x3b60f6c2,0x3bd0406d,0xbb65b4aa,0xbc0b5978,0xbc038066, -0xbb912a09,0xba0804ea,0x3b3d3e12,0x3b3eb14d,0x3ac03ba5,0xbaa54ec8,0xbad35b7b,0xbab15724,0x39f9ae79,0xba0b0328,0xb9b7bc4a,0x3731c729,0x3877773f,0x387b2031,0x38e6bc8f,0x38171017,0xb66f376a,0xb8b83432,0xba048be0,0xb9129f17,0x3b1a8b95,0xba320d5c,0x3a5ab816,0x3bd606b6,0x3b5134bc, -0x3acbc7f5,0x3b87f628,0x3b413eed,0x3b8da2cc,0x3bb0c326,0x399cf1f3,0xbb2d5db5,0xbabb8b5f,0x3a0fa2af,0x3b3ff293,0x3b3e4adc,0x39f574a3,0xba598dcf,0x3976bb0b,0xb9df4f23,0xb967d14c,0xb89c58c6,0xb89342d6,0xb9901044,0xb94afcd8,0xb6dc894f,0x3938ce9a,0xb77ef84e,0xb7b53068,0xb8409b7c, -0xb883fc8d,0xb5a57413,0xb7b7cc63,0x38ddde71,0x39775049,0xb9a37f35,0xbb14d22d,0xba1367aa,0x3b4b279c,0x3bf120e4,0xba77e2d5,0xbb354a8a,0xbb59e8c5,0x3b243023,0x3bb49a01,0x3c0891f7,0x3b503ac4,0xba104ea1,0xbbc30166,0x3b1b5d1d,0x3b9c6800,0x3bb05f4c,0x38ea1db7,0xbae750d8,0xba9d8598, -0xba8a4cbb,0x39f3d3b7,0x3b1a19b6,0x3b0a7198,0x3abfe0f4,0xb9876d69,0x39696e23,0xb8c2263b,0x37e7f0ce,0x37a1b90e,0x3783f8fc,0x38162ec8,0xb72cd1e1,0x37c143ad,0xb8dfc4b5,0x388e0bab,0xb919b00f,0xbba8ffab,0xbb293f1b,0xbbb38700,0xbb4443da,0xbc0d8208,0xbc15dd39,0xbc39f55a,0xbc2f5cd3, -0xbbcc101d,0x3bdfaf69,0x3bd37247,0x3bb7ba53,0xbad06567,0xbb1d3fbb,0xbb83f05f,0xbb8c4c9a,0xbb464762,0xbaecb1dc,0xb997a34a,0x3a84f93d,0x3b057189,0x3b3133fb,0x3b2768bf,0x3ad81f6d,0x3928b895,0xb9c355d6,0xb728bdff,0xb7806f6a,0xb856871c,0x361ee369,0xb7dea536,0x38128702,0xb7d06ada, -0x38873f43,0xb7aab0db,0xbae0c004,0xbc30e61a,0xbc1c550f,0x3c722b8b,0x3c57df76,0x3b4f1c35,0xb9c8ad64,0x3a04fc23,0xba0779c2,0xbb03fe24,0xbba68de8,0xbbae87e1,0xbbc4d713,0xbb570e05,0xbb45f509,0xb7ce262a,0x3acb412b,0x3adf8dae,0x3afb5fb2,0x3af8142b,0x3b21e4ae,0x3b456a6d,0x3b6ee002, -0x3b88bf7a,0x3b87b555,0x3b12300c,0x3a832d82,0x380b5118,0x38b68b50,0x38747aee,0x37193847,0xb76dac8a,0xb725b6ae,0xb8b64abe,0x390e1883,0xb92b52d2,0x3b19bc26,0x3bcff34e,0x3c5bcf64,0x3a6ff6a6,0x3aa4e4fb,0x3a9c04af,0x3960b6c1,0xbaac0b36,0xbb152b66,0xbb22a092,0xbafe5fcc,0xba5be1a3, -0xb9fc3258,0xbaa1595f,0xbac682d0,0xbadd5d1a,0xbaf29348,0xba9b175c,0xba8d046f,0xba89c137,0xbaa5645c,0xba81b061,0xba372881,0xb9e7d31c,0x39cf239a,0x3a26db8d,0x39c993ee,0x3856dce8,0xb95ca7dc,0xb9113ed1,0x383ede67,0x3651dfa7,0x38b75ab2,0x3941966d,0xb8d29abe,0xba1878f4,0xba86cdca, -0xbabcb80d,0xba1b47f9,0xbb099156,0xbb06ecb3,0xbacecf11,0xbad3e5e8,0xbaca2497,0xbae86f30,0xbada26b9,0xbafc9fa4,0xba8d49a2,0xb9437c46,0x3a54030c,0x3ad6f2d9,0x3b07ee7e,0x3b0d3286,0x3ad7ec75,0x3a856895,0x39f11175,0x38bebd21,0xb91f60bc,0xb9ca0e95,0xb8c378c9,0x39f7d505,0x3aa7d26e, -0x3a42f869,0x3a25c446,0x38c1cdd6,0x37b63cb6,0xb984dba5,0xb8d5f3a2,0xb9d87ef0,0xba3e35da,0xbaa8a401,0xbab6c269,0xbab9de57,0xbabbb2f0,0xbad169ba,0xbb01fc25,0xbb2fc20e,0xbb2f1b5a,0xbb202a17,0xbb2f6781,0xbac0928e,0xba18c839,0x394d323d,0x3a85c3e6,0x3ac231ce,0x3b0cac21,0x3afe6fc2, -0x3b1951a0,0x3b2b05f1,0x3b136337,0x3b0bca12,0x3adc367f,0x3ac20221,0x3abd0ad2,0x3a3dd5c8,0x3a98d525,0x3ac2c2b9,0x3af1c7fb,0x3af428ea,0x3affb133,0x3b059af6,0x3ae20b4d,0x3a9db6b0,0x3a94178b,0x39ef1f39,0x3980f907,0xb9bc5183,0xba4351f2,0xbaaeeeea,0xbafffed3,0xbb0c91a5,0x3b22efc0, -0x3aec0655,0x3af9c775,0x3b195ffa,0x3b2fb134,0x3b0f7447,0x3b007124,0x3adecd91,0x3ac64889,0x3abb3693,0x3ab1cff5,0x3ac75f7d,0x3aba1c34,0x3ab74a47,0x3aae2ea8,0x3aaef2e6,0x3aca7b84,0x3ac0fbc7,0x3ac16c54,0x3ada0d55,0x3ac9ba25,0x3b075500,0x3b1adfc7,0x3b36d46d,0x3b437489,0x3b504a52, -0x3b4da637,0x3b409e0b,0x3b2e9dbd,0x3b317634,0x3b0f8b83,0x3b1da957,0x3b16d4fe,0x3b2918c6,0x3b3dbbab,0x3b1637b4,0x3a33fd9f,0x3a399eea,0x3a5403fa,0x3a42336e,0x3a5977ce,0x3a79743f,0x3aa15645,0x3abe43fd,0x3acfe71c,0x3adaa140,0x3ade1488,0x3addde07,0x3ae1a93e,0x3ae86d31,0x3ae63602, -0x3ae35157,0x3ae35e7f,0x3adcba9d,0x3ad3439d,0x3ad6c885,0x3ac03639,0x3ab4b11e,0x3a9ffde1,0x3ace7b0d,0x3ac571a0,0x3ac14c9a,0x3ac0046c,0x3aa9fd29,0x3aa76100,0x3a9f7d3b,0x3a8fe177,0x3a772970,0x3a609e84,0x3a5b9a3a,0x3a12ef20,0x3a1e2f35,0x3b1f0901,0xba0fb739,0xb989ac80,0xb9593667, -0xb9852212,0xb98f1f68,0xb9d323c7,0xb96c56a2,0xb987be60,0xb9d4454d,0xb9e41c01,0xb9b417ea,0x38309d58,0xb9a4ffea,0xba0123da,0xba151cb2,0xba15df17,0xb9fd85d2,0xb946276d,0xb990043e,0xb99dd544,0xb9c87fb3,0xb9b22ab4,0xb98fe1be,0xb7f7d4ef,0xba19d4dc,0xba1a8658,0xb95b684b,0xb9f1040d, -0xba0fbdfa,0xba094f21,0xb9c98686,0xb98d8853,0xb9de3938,0xb97b23eb,0xb9ab1c8d,0xb99ecd1c,0xb9628d8e,0xb9456642,0x38d23e01,0xb8813e49,0x38025e9c,0xb8f0e25c,0x3a713f26,0x3a2c30ce,0xb9448052,0xba30423f,0xba2e86c0,0x39ce2b41,0xb8fdf6c4,0xb995f44e,0xb9f34c55,0xba346df1,0xba2f16a2, -0x3956127b,0xb89e6690,0xb94f71f3,0xb9fdf143,0xb9e32621,0xba1a57aa,0xb982fa14,0xba9dae2e,0xbaa89b89,0xba1c470e,0xba9b67f3,0xba94ad65,0xba4fcf42,0xb9b05b12,0xb91553a0,0xba84f4e5,0xb99ec11f,0xb9c53d80,0xba6b78f4,0xba25cd3f,0xb8eb9ed8,0x39f9d5aa,0x39462cdd,0x39898b52,0xb9914c15, -0x3a81e608,0x3a94d0f7,0xb83904cc,0xba4435bc,0xba1a2708,0x3abe0920,0xb8e7423e,0xba50e133,0xbaa5f6fb,0xbad438f0,0xba84903f,0x3a2ac5c7,0x38f219d7,0x373d0d32,0xb9e9ac4e,0xb9e53478,0xba550fa2,0x391e659a,0xbb02152f,0xbb036a87,0xba0dea8e,0xbb05221e,0xbb048c43,0xbb0f4e31,0xba7c11ce, -0xba3ea38e,0xbaa663dc,0xb98f32be,0xb98afa57,0xba8d99a5,0xb9e8eb2a,0xb9217049,0x3a945ea9,0x39dc3778,0x3a83acbf,0x39d1fc9a,0x3b4b29c4,0x3b4acc64,0x3a924a5a,0xba8db365,0xba98f353,0x3b004c15,0x39cd4cc4,0x37f56699,0xba14eb76,0xbac48227,0xba898ee2,0x3abba5bc,0x3a4b64b5,0x39385abc, -0xb9c10a91,0xba2b4c57,0xbab21849,0xb97e3d2f,0xbb48deca,0xbb16b009,0xba3b9593,0xba9083fc,0xb9a2aa3f,0xba0d5495,0xb9931b57,0xba077233,0xbac9c0ae,0xb9549230,0xb89e40c7,0xbb00b084,0xba9c5a4e,0xb8c43948,0x3a3959ac,0x39e00dd6,0x38ba0f79,0xba9b70e4,0x3b0ab004,0x3af71846,0x3a8b878d, -0xba76befb,0xb9ecf656,0x3b42a18a,0x39e9eb37,0xbb024ed2,0xbb64fbe9,0xbb6e4709,0xbaf92ef7,0x3acad02e,0x3a82bc3f,0x3a36e06a,0xb998755f,0xba21fe17,0xba9b7af0,0xba239c61,0xbad51209,0xb8fefcbe,0x388955a6,0x39c068c7,0x3986a4b9,0x39a1eb6b,0x38b78189,0x39aee023,0xb907e359,0xb9368599, -0x39469ae3,0xbad94af6,0xba414ab9,0x3b979963,0x3bae801b,0x3c16d748,0x3c34f85e,0x3c483acd,0x3b64787e,0x3aab6083,0x3b29fbb5,0xba16a980,0xbb15d7b1,0xbb3fd0b0,0x3b16daaf,0x3c0acd73,0x3c6e5bb4,0x3c100242,0x3b2ccb1b,0xbad3a799,0xbbb86d81,0xbbd125e9,0xbb953449,0xbba29b2c,0xbb0ec1b2, -0xb897420b,0x3af53c05,0x3995ed2f,0xb8e2e5b4,0xb8cce4e5,0xb93cb96b,0xb8d4938d,0xb90be9bf,0xb84bbf6d,0xb81afe6c,0x399c0ec9,0x3ade5568,0x3b308557,0x3b6a2993,0xb6c7bbef,0x3ac39f26,0x39aa9fa1,0xbb0c0081,0xbb5e3a89,0xbc098e38,0xbc1ceb16,0xba9a98b4,0xb9a4c22d,0x3b5b6fe4,0x3bfaef05, -0xbadee126,0xbbe91b84,0xbc0a4b67,0xbb9fcb1c,0xba731aa4,0x3b0be80b,0x3b084968,0x3a387289,0xbaf6e5e8,0xbad70a68,0xba8682c7,0x399162fa,0xba01422d,0xb9827582,0x38418df2,0x38c6c923,0x389b515e,0x3887a816,0x38289e4a,0x37d3ee69,0x372c4db2,0xb97fadca,0x39879d64,0x3ac04e61,0xb9654628, -0x3b287105,0x3bf9ad09,0x3b7d7202,0x3ab90c33,0x3aaa2094,0x3b2bd6a7,0x3b911925,0x3b9f922e,0x3a9b8589,0xbafa45a7,0xbaf73341,0xb80484c7,0x3b251b9a,0x3b7bc8d0,0x3a96a078,0xba087d48,0x39f764d8,0xb9964224,0x38972254,0x39032f83,0x399a2191,0x3838b8db,0x38c70318,0x38034968,0x392a30e2, -0xb8370c19,0xb7e57869,0xb846e311,0xb81fdaee,0xb67a8f40,0xb7d8dbed,0x389b79a1,0x37bd5c8e,0xb8d0478f,0xbae3e63a,0x39343f2e,0x3b830dec,0x3b5482a9,0xbaff957a,0xbb509010,0xbbad38b0,0x3ae2e417,0x3b9a6d9e,0x3bcc99a4,0x3b978f0d,0x3a5d6f69,0xbbd69e03,0x3a722c93,0x3b66f6ec,0x3bc8b42d, -0x39d36581,0xbac3fd8f,0xbaa35f97,0xba804442,0x39dc2d41,0x3b1aede1,0x3b04ef6b,0x3a939876,0xb93038e8,0x392fcf2b,0xb909dd7a,0x382118bb,0x37478935,0x36ff2d0a,0x37af813a,0xb78844ee,0x379ed3da,0xb8d5fb1f,0x3894c8fc,0x39a67af7,0xbb7dc47b,0xbaa74753,0xbbbd0684,0xbc416144,0xbc2bac4e, -0xbc104650,0xbc264a5d,0xbc3b0af5,0xbc0d0a10,0x3b42dcd9,0x3bcb965a,0x3bdc584d,0xbaa6f74d,0xbb0438be,0xbb95e9cd,0xbbb24528,0xbb7c397b,0xbb1a9e40,0xba866f2e,0x3976469f,0x3a8e2365,0x3af5b2a2,0x3b01d778,0x3a6e287d,0xb9af4fe8,0xb9469cc2,0x380799fd,0x36f4f24b,0xb799b946,0x3794a00c, -0xb69a74be,0x37ef0d2e,0x37dfb278,0x3857a6dd,0x38bac953,0xba810d0a,0xbc0858bf,0xbbd1acb4,0x3c69f6b2,0x3c6ae2a2,0x3b027dcb,0xbb20de32,0xba8164ba,0xbab59ed9,0xbacc923c,0xbb762a5c,0xbb9a84e3,0xbbbebdfb,0xbb741848,0xbb5f4d12,0xb9fcb992,0x3ab5adc7,0x3abd6769,0x3ad90ef1,0x3afd00e0, -0x3b3af891,0x3b6cb983,0x3b87cc39,0x3b957b53,0x3b83047b,0x3adda35d,0x3a1294a0,0xb8c8d43b,0x37ebc87c,0xb61dfa8a,0xb7ab8ee2,0xb8640fb6,0xb68a9994,0xb91ebfe6,0x3882650a,0xb9cf0a4a,0x3b0c8204,0x3baa5afc,0x3c3ea34d,0x3acfac97,0x3aac3c4e,0x3ab44394,0x3a7955b4,0xb9f080b6,0xbab3d89b, -0xbafd7822,0xbaf33b60,0xba9a6c5d,0xba83905d,0xbadf3747,0xbb16d76b,0xbb2fc2c2,0xbb4eb980,0xbb154d3e,0xbae705f4,0xbaaf3b9a,0xba928cb9,0xba391828,0xb99628a0,0x38de9b29,0x3a3795ed,0x3a559a33,0x39a59a6f,0xb79280fb,0xb7330822,0xb6a0b0d7,0x38c42beb,0x385cad55,0x390c5a39,0x3933f2fa, -0x394594e2,0xb832276b,0xb96d8389,0xba2df019,0x3999eb3e,0xbad568a1,0xbaa97652,0xba4650b3,0xba87a51c,0xba32d557,0xba964423,0xbaa62eca,0xbaff4fbd,0xbaca0542,0xba84250d,0xb94d9eed,0x3a3e8c92,0x3aa85aef,0x3ac353d6,0x3a928f0e,0x3a3abd3b,0x39c5feee,0x396f609a,0x3934a722,0x38ac4e82, -0x39a5dc93,0x3a34775a,0x3a90f331,0x3a0a9bad,0x398fbca4,0xb9310c2a,0xb905edd4,0xb97479d1,0xb8faec89,0xb990ab63,0xba0fd5e8,0xba88e812,0xbab6258e,0xbac97d7a,0xbacaa886,0xbac43ceb,0xbb2e81b9,0xbb51d115,0xbb43285b,0xbb287336,0xbb2f6d75,0xbaecc4ec,0xba8b2039,0xb9abe58d,0x3a121b4e, -0x3a8c75f1,0x3ad23156,0x3ad7145d,0x3b0e7e48,0x3b2f49dd,0x3b1a792d,0x3b1330d4,0x3ae7fde9,0x3ad8a91e,0x3acbb19d,0x3a956349,0x3aae69ba,0x3ace62de,0x3ade6dd2,0x3acc3adc,0x3abb117c,0x3aa9a040,0x3a7cfdc1,0x39c7cbbc,0x39cb4772,0xb964d5c5,0xb9a9cc4b,0xba471f26,0xba8d0d71,0xbae7b369, -0xbb1d8e1b,0xbb2d507f,0x3af16450,0x3aa0224f,0x3ab51e66,0x3aec1154,0x3b14f1ef,0x3b0267fe,0x3b0298d9,0x3aea3bb3,0x3adecf71,0x3ae429e7,0x3af32170,0x3b0a5151,0x3b095bb2,0x3b101dc8,0x3b06c9eb,0x3b061e98,0x3b166789,0x3b11c359,0x3b0f9ea5,0x3b18b8da,0x3b0f6c48,0x3b26b312,0x3b3475c8, -0x3b4561ef,0x3b4c6e45,0x3b4eefe6,0x3b4dd258,0x3b3c496f,0x3b2a521c,0x3b2418b7,0x3af7dc43,0x3b046273,0x3ae6d15e,0x3b059dfa,0x3b16baf5,0x3addd5c7,0x3a62e3d0,0x3a5035c1,0x3a73c828,0x3a78eb83,0x3a8a430a,0x3a96a70d,0x3ab80135,0x3ad7ef0e,0x3af14516,0x3aff4e2e,0x3b02814b,0x3b04591d, -0x3b08e4b0,0x3b0fab15,0x3b0db80f,0x3b0c2f6b,0x3b0abead,0x3b059bf0,0x3b016fad,0x3b029bc0,0x3af12807,0x3ae620f5,0x3ad185ee,0x3af3df82,0x3aeab0c8,0x3ae89c75,0x3ae889b8,0x3acfbebd,0x3acafd94,0x3ac6ada6,0x3ab84304,0x3aa625b4,0x3a98fb33,0x3a90c8a3,0x3a51be86,0x3a54dbd2,0x3b4afdfc, -0xba541156,0xb9e08895,0xb9cc3975,0xb9dcd187,0xb9e22db4,0xba1c0a32,0xb9c9f585,0xb9d2b77b,0xba01096f,0xba13d509,0xba05eb7d,0xb9652b78,0xb9e83cc4,0xba23441b,0xba44d876,0xba57888e,0xba471e28,0xb9e9b6f1,0xba02de15,0xba03c6a6,0xba19967c,0xba05eae6,0xb9e129a0,0xb92efe24,0xba438aa0, -0xba491f43,0xb9b555fb,0xba2a1b87,0xba32ae4c,0xba13e21b,0xba024df2,0xb9d6cba7,0xba0201de,0xb9d4cd14,0xba03d4b6,0xb9eca4bd,0xb9c879cd,0xb9bda286,0xb8c0db65,0xb9609388,0xb9419931,0xba05e81d,0x3a24afb3,0x3a030360,0xb8b802c2,0xba2ff976,0xba50611d,0xb8d0dbae,0xb98a8f61,0xb9cc739d, -0xba444621,0xba9f24c5,0xbaa75318,0xb98b379d,0xb9e2b2e0,0xba0095a1,0xba5cbea9,0xba385051,0xba57f9fb,0xb9e5b9e3,0xbab5c9de,0xbab455d2,0xba0c694b,0xbab959b7,0xbabfd57e,0xba684b5e,0xba053010,0xb92c7090,0xba4e63c4,0xb9fc31eb,0xba211bbf,0xba833d9d,0xba4c6405,0xb997124f,0x395b995a, -0x38310576,0x38a8a5bb,0xba370e64,0x3a41860a,0x3a7fd2ee,0x399301e0,0xba38e58c,0xba3182e0,0x3a338b52,0x3809d2b0,0xba3aca59,0xbad048ab,0xbb1cf42b,0xbafee427,0xb9056e92,0xb9eae57e,0xb9d0a6bb,0xba71bea1,0xba3b23b6,0xba81d471,0x383cd8fe,0xbb06bbd7,0xbb032e19,0xb9e6c9cf,0xbb04d86a, -0xbaedb6dd,0xbaca7fdf,0xba45ee59,0xba2939b0,0xba40d374,0xb9ce9266,0xba063610,0xba9157be,0xba17581c,0xb967a238,0x3a8004dc,0x39db342c,0x3a508914,0xb9b5efd3,0x3b2c44e9,0x3b458b97,0x3aee87cf,0xba307a57,0xba8cfc9e,0x3a40f5d6,0x3a0bbf8a,0x3967d592,0xba601439,0xbb309732,0xbb212468, -0x39ed8675,0x388162f3,0xb99eea18,0xba895e0c,0xba8978f6,0xbac9e5bf,0xb9b69a19,0xbb36a729,0xbaf8667f,0xb937337f,0xba1c334c,0x38a8d667,0xb8c7e586,0x38a4e783,0xb94c428e,0xba231cee,0xb97520fe,0xb98318e2,0xbadc7816,0xba9eeb6a,0xb95d59dd,0x39b8c7e1,0x39cb44e9,0xb845d24f,0xbad9c952, -0x3adb660c,0x3ade7f15,0x3ae57877,0xba17b6fc,0xba112cfc,0x3ae52b45,0x3a7a5432,0xbab245cf,0xbb7c76e4,0xbba6bbd4,0xbb6e786f,0x3918fda7,0x37a878ac,0xb842cc22,0xba8c97fe,0xba852152,0xbaa0825d,0xb9fd99dc,0xba94ebe2,0x399ed314,0x38f718ae,0x397a5f9b,0x38b98307,0x37db3006,0xb76dae8b, -0x3937890c,0x38db0ef0,0xb837b26f,0x3773e813,0xbaa1b6fe,0xba36ab13,0x3b783ce7,0x3b937ddb,0x3c093191,0x3c2a6482,0x3c483e80,0x3b923fc2,0x3b27806e,0x3b5ac779,0x38cc0789,0xbacfc4a9,0xbafdcc7c,0x3b0c554f,0x3c0712c4,0x3c6a6034,0x3c2c0db9,0x3b968459,0xb8e34a7d,0xbb8d5c0b,0xbbb1ef0d, -0xbb7b3ff0,0xbb8313ec,0xbaa5537d,0x3a5efb4e,0x3a807e1d,0xb76cf101,0xb8d66c5b,0xb8afe437,0xb8850570,0xb6ad4b60,0xb3d22560,0xb8c9036c,0x362094d7,0xb8a722ef,0x3a35fbbe,0x3ac0f0f0,0x3b1c934b,0x386f2ab3,0x3aa6b11f,0x3a9c6749,0xba43c64a,0xbad456ee,0xbbeb75f5,0xbc178645,0xbb15caa9, -0xba8c7f6f,0x3b40a39c,0x3c01a78d,0xb9b6d125,0xbbbe4f8e,0xbc0e9fa0,0xbbb28920,0xbac77364,0x3aa80796,0x3ab48c3d,0x397105ec,0xbb0d5e28,0xbababe38,0xba2a3bea,0x388cd0d4,0xb9c2f6c0,0xb82f4605,0x38872470,0x3891e6f6,0x37ddc6a8,0x35135a4a,0x374c5da3,0x36e2a2d2,0x387dd463,0xb8dc79f8, -0x390c1304,0x3a829768,0x38987c17,0x3b6c9b82,0x3c1527a6,0x3bc2f977,0x3b1fc872,0x38bbedf8,0x3b47f781,0x3ba8a86a,0x3ba4569a,0x3b113d84,0xba9c4719,0xbb2d1219,0xba66da41,0x3aed105e,0x3b8ad5f5,0x3aee9764,0xb88387f9,0x3a592ef0,0x37ca02cc,0x39fab47e,0x398fe586,0x39e9bca5,0x392fa2f1, -0x392223f1,0x38060de8,0x38d643f7,0xb86f3ba9,0xb794ad89,0xb72fd3d8,0xb72c5e25,0x377ef00d,0xb81e189d,0x38aedf2c,0xb914254e,0x3947767f,0xbac0e328,0x3a19f1c3,0x3b951a68,0x3990c0e9,0xba8316c8,0xbb0a63fe,0xbbcbb10e,0x3b021ce9,0x3ba0f4f2,0x3b9c7831,0x3bcb2a67,0x3b185fda,0xbbcc331d, -0xb9428f86,0x3b1ddbb9,0x3bd8db6b,0x3a81dd7d,0xba5c26a3,0xba8e41a6,0xba3f699f,0x39c481a3,0x3b057cfb,0x3acb05e1,0x3a1f39b0,0xb8d18ecc,0x38895039,0xb8a75530,0x38083cb8,0xb6537e90,0x36b7f0c7,0xb753d6c2,0x378cd6bb,0xb861d3a3,0x38b0f90d,0xb998a78e,0x3a579453,0xbb3a1654,0xb86fb8ab, -0xbbc1e70b,0xbc93d187,0xbc26dd92,0xbbd78c6a,0xbc078303,0xbc27b031,0xbc18ff4c,0xba73bc67,0x3bc1c606,0x3c01f6d7,0x39638c5c,0xba6be0f9,0xbb903e03,0xbbbd4893,0xbb8cca83,0xbb389fd8,0xbad4c4b2,0xba0c373f,0x38a8f968,0x3a66e35e,0x3a96cb84,0x392b7072,0xba0f00fe,0x37b1d626,0x37d90fd6, -0x3754a821,0x3629de67,0x37c8a3db,0xb739d0e6,0x382a70d3,0xb69ecdd2,0x38bb77b0,0x37d87805,0xb93c0f59,0xbbb21906,0xbb5dceb3,0x3c53fa88,0x3c6c7653,0x3a78f996,0xbb80c3c5,0xbb1a5fee,0xbb15d7a4,0xbaaf3311,0xbb16f883,0xbb83575b,0xbbb1cc7b,0xbb7260b0,0xbb497621,0xb9b5d4e9,0x3accdb3b, -0x3acd2c3a,0x3adc5e70,0x3b0e320e,0x3b4d4df1,0x3b7f1ba3,0x3b8b858b,0x3b902235,0x3b5be0ce,0x3a8d1c0c,0x38d96904,0xb8a7bf84,0xb6c5b250,0xb84ce7ca,0xb73b9dcd,0xb8481874,0x37d38ecb,0xb92c825f,0x38b678f8,0xb9fe1ac3,0x3aba4e61,0x3b8bc420,0x3c127977,0x3b10a64a,0x3ade2457,0x3aefa4bb, -0x3afcefb5,0x3a0331f3,0xba03790c,0xbacd967d,0xbaff2727,0xbacd2f0e,0xbabae8cf,0xbaf21193,0xbb2be0a6,0xbb4668c5,0xbb7ab96c,0xbb35d404,0xbb031f68,0xbaadb830,0xba770083,0xb9f22bc1,0xb8090615,0x3a033ca5,0x3a68da6d,0x3a4f5ddb,0x39836dc7,0xb8604556,0x38cc790e,0x38b2627a,0x38794b78, -0x37befd82,0x38a5ea9b,0x38d4f328,0x3979a8b9,0x39276ea0,0x39dfacb6,0x3926ce36,0x3a912ba1,0xba574183,0xb9a0daa9,0x390a5c7e,0xb9cd9a70,0x38534332,0xba0d6e21,0xba54593e,0xbae7c52a,0xbadf88d4,0xbac8572b,0xba65b0c1,0x390167cc,0x3a4a761a,0x3a8a2bdd,0x3a5ded11,0x3a244ac0,0x39f2cea5, -0x39ecd5b5,0x3a139bee,0x3a1092cc,0x3a1d5ede,0x3a467946,0x3a5aa24f,0x399dd30f,0x37b145b1,0xb96c1128,0xb92eebfe,0xb91938ff,0xb7a0dc68,0xb9038102,0xb96a5eef,0xba2a735b,0xba85dc73,0xbab0d9e4,0xbab1b07c,0xba907a0b,0xbb42eb40,0xbb5beb76,0xbb450aaa,0xbb22df6c,0xbb23cab6,0xbaf56b62, -0xba9e3d00,0xb9f5d846,0x39da2b12,0x3a7a9219,0x3abb660c,0x3ac28358,0x3b07505e,0x3b2d555e,0x3b1c27f1,0x3b16b958,0x3af49278,0x3aee6562,0x3ae4b1a6,0x3ac5e851,0x3ab5d6a5,0x3ac2a218,0x3ab15a72,0x3a8ce45d,0x3a506c79,0x3a128879,0x39891a04,0xb95f574e,0xb976265c,0xba2a73f6,0xba4a767a, -0xba84c0c1,0xbaa6f15b,0xbafab828,0xbb1f4379,0xbb354cb9,0x3a972221,0x3a0f8568,0x3a4e13e6,0x3a9bb1e1,0x3ae6716d,0x3ad58fa5,0x3ae9e4d1,0x3ad50698,0x3ad43662,0x3ae83c3c,0x3b04ba50,0x3b1e19de,0x3b255d0a,0x3b34e1c7,0x3b28d0d5,0x3b25ff20,0x3b373fea,0x3b312268,0x3b2bdeee,0x3b331587, -0x3b2bc785,0x3b36f81c,0x3b3b6261,0x3b3fd2e8,0x3b3e2366,0x3b35151a,0x3b31f590,0x3b1a6f78,0x3b0b611f,0x3afa953a,0x3aafc213,0x3ab655b7,0x3a870d79,0x3aa8ac0c,0x3ac2fca0,0x3a6e145e,0x3a7e83ba,0x3a456492,0x3a71d736,0x3a849192,0x3a946761,0x3a9f57c0,0x3abf9977,0x3ae27473,0x3b00ad96, -0x3b08d889,0x3b0c5da0,0x3b0ed923,0x3b13f778,0x3b1cdcec,0x3b1968dc,0x3b17dfea,0x3b15807c,0x3b0f9ddf,0x3b0c020f,0x3b0c6e0f,0x3b05c286,0x3b02cf71,0x3afa8ce3,0x3b01d750,0x3affa08a,0x3b02b9d3,0x3b03a3a3,0x3af08884,0x3aea5832,0x3ae76bed,0x3ad84099,0x3ac62229,0x3ab35746,0x3aa4732b, -0x3a8e86a0,0x3a8450fa,0x3b5e5ba1,0xba8783ff,0xba162fec,0xba07c168,0xba0a0dc3,0xba09d904,0xba3cb1cb,0xba07c51e,0xba0b23ee,0xba14d248,0xba34135f,0xba31bccf,0xba02422f,0xba133739,0xba3e30d5,0xba6bad86,0xba85e98b,0xba81a27c,0xba34597d,0xba368926,0xba30b90b,0xba444d19,0xba310004, -0xba1b60de,0xb9ae0438,0xba6a4ed0,0xba77c710,0xba0209cf,0xba51aeca,0xba4e7f91,0xba1e3a44,0xba16f536,0xba04a7b7,0xba0c380e,0xba177e1c,0xba2e74b4,0xba1f5ab0,0xba10d97b,0xba0523f8,0xb93a0954,0xb9713d59,0xb9858c68,0xba42ddbb,0x39b3c4f4,0x399887c1,0xb8110e65,0xba43fb98,0xba83ed14, -0xba337fa8,0xb9e2e625,0xb9fc0a7e,0xba846278,0xbad68b28,0xbae9bcba,0xba4110c2,0xba474203,0xba4575f9,0xba976be4,0xba80fdd6,0xba89dcfb,0xba29a122,0xbac371a4,0xbab26294,0xba072142,0xbacf793f,0xbadca7b4,0xba78472f,0xba29ce25,0xb98df95c,0xba0f0ac8,0xba2138bc,0xba50fbbd,0xba8a3a1b, -0xba663987,0xb9cf950c,0x38a5875d,0x3902f540,0x38f87f0a,0xba63c485,0x39ff3f78,0x3a364f66,0x3a02dd4f,0xba567f13,0xba7767d5,0xb9a940cb,0x384ef1f4,0xba29a8f8,0xbaf67d40,0xbb44cade,0xbb32f8e7,0xba7a9369,0xba80d400,0xba4a1c31,0xbab05d6d,0xba7bc7a8,0xba91a312,0xb8becc24,0xbb032208, -0xbb00b346,0xb9e5ce67,0xbaedc8c3,0xbabcd56f,0xba7f24fd,0xba008e81,0xb9ecbbe5,0xb9991a4c,0xb9eff0f6,0xba32442e,0xba870f0f,0xba1afd21,0xb8b452ca,0x3a85566f,0x3a3dad7f,0x3a6bf01e,0xba3a24d9,0x3b0b5500,0x3b2f8949,0x3b16a897,0xba1a9324,0xbaad8a1f,0xba609999,0x39f13f6f,0x39aa4236, -0xba9c5892,0xbb6f46f5,0xbb6f17c3,0xba201f49,0xba291986,0xba44f988,0xbadd03c1,0xbab83040,0xbad8b7cb,0xba0b9424,0xbb1b78ba,0xba9ed564,0x393c6501,0xb8864c49,0x39c9d294,0x38accfe1,0x392da837,0xb8c422e1,0xb85018cf,0xb951d338,0xb9bbeb91,0xbaae091e,0xba8ce0ec,0xb9887a97,0x396f02ac, -0x3a2af403,0x39479592,0xbae00ad7,0x3a9b68de,0x3aa74401,0x3b0df52c,0xba19dfb6,0xba8d2db9,0x382062db,0x3a90288b,0xba5e78db,0xbb88179e,0xbbcb7898,0xbba83450,0xbab8811d,0xba79080e,0xba4630b8,0xbae62e24,0xbaa65650,0xba97d2c4,0xb9d820d9,0xba03483f,0x3a01b138,0xb6ce0621,0x36baf069, -0xb8ec4823,0xb7e0ab3b,0xb833eae1,0x380a89ec,0x381a337f,0x38932b66,0xb85f8777,0xba605185,0xb9e572d1,0x3b7039fb,0x3b929741,0x3bf6134a,0x3c1f650d,0x3c47e8d6,0x3bacd78b,0x3b69471c,0x3b7427cc,0x3a330d7e,0xba7290e6,0xbaa639d7,0x3acc81d0,0x3bef9e30,0x3c588674,0x3c40b5ae,0x3bd4594f, -0x3aabc4ed,0xbb3f6680,0xbb92992d,0xbb5a41d0,0xbb51e7e9,0xba1dc92b,0x3a9c35cf,0x391af0a8,0xb90bf663,0xb882c287,0x37d49185,0x38073a4d,0x37c3d22d,0x3766b236,0xb79e6184,0xb6d83807,0xb8acb847,0x39395d3d,0x3a4eb1da,0x3ac8a165,0x3a0e8d3d,0x3a92073a,0x3ae5cd19,0x39d4df29,0xb9db86a0, -0xbbc6ef62,0xbc0bfce5,0xbb3f6f08,0xbaa8f275,0x3b31a6c6,0x3bfad2c0,0x3a4dd5f0,0xbb92e827,0xbc0e6be3,0xbbca6c32,0xbb226dbf,0x38963e2e,0x3a0e87d5,0xb9335060,0xbb0a84d2,0xba78fc70,0xb99e55f3,0xb8c4ec6e,0xb90c554e,0x38a6cdb7,0x37f086e2,0xb73d3717,0xb764a2a5,0xb7743603,0x3679d50c, -0xb6d5df64,0x37c2525f,0x35fad8fa,0xb85f0fdd,0x3a1d3771,0x3a50ef1e,0x3ba79de7,0x3c234c5b,0x3bc15f52,0x3b01121a,0xbb01fe85,0x3b31733c,0x3bafbaa3,0x3ba99710,0x3b667d11,0x3816f396,0xbb401853,0xbaaae2d1,0x3aa48408,0x3b8decfd,0x3b2d183c,0x3a19e3cc,0x3aa0d6f7,0x39b51258,0x3a49bf23, -0x39a0fde0,0x39eb2d71,0x39324234,0x3907e11f,0x37103525,0xb6e31669,0xb7abfc93,0x36be51eb,0x377be65c,0xb6991743,0x376cfd80,0xb80707fe,0x38b91875,0xb93cc596,0x39a194c1,0xba747195,0x3a62e886,0x3b993cd7,0xbb2891e1,0xbac336d1,0xbb046d05,0xbbe9d7fe,0x3aef594a,0x3b9ce69c,0x3b4cdf28, -0x3bede732,0x3b69d876,0xbba89480,0xba881ba6,0x3ab159b9,0x3bdd3528,0x3af1bae1,0x3970fb68,0xba3b7465,0xb9c4d8c9,0x398fe0e1,0x3ab6a3f1,0x3a529aa4,0x38147842,0x36c0a5e4,0x370b7efc,0xb80e0efc,0x37c201dc,0xb79ec0a8,0x372a3975,0xb79909e5,0x38231f8e,0xb89a3e9c,0x39208e4a,0xb9d85d78, -0x3a413638,0xbabe1168,0x3948c5a0,0xbbd3231d,0xbcbf3d3c,0xbc1ffe96,0xbb954f7b,0xbbca3f41,0xbc0bc14e,0xbc1c7f15,0xbba1964f,0x3b9c36c9,0x3c068e7b,0x3b0ba4a1,0xb80247dc,0xbb8a315f,0xbbb9236d,0xbb940638,0xbb4f7180,0xbb0aa075,0xba9a6dbf,0xba440c90,0xb90aeb59,0x399b8259,0xb9dddd68, -0xb9e45f2b,0x3924fdea,0xb7e1e1f7,0x37f9222e,0xb3676b83,0x36f0e126,0xb78c376a,0x3706d557,0xb756a421,0x38461285,0x38cb0b3d,0xb8481557,0xbb2a3bfd,0xbac04cd3,0x3c194a03,0x3c41001e,0xba39a900,0xbbaa6075,0xbb84c9de,0xbb5e7b65,0xbab72aee,0xba86286b,0xbb579f37,0xbba6da58,0xbb865a5e, -0xbb4df7d1,0xba10159e,0x3aa443b4,0x3abd95c6,0x3ad7978f,0x3b258bd3,0x3b62278d,0x3b852097,0x3b87e60d,0x3b775ce2,0x3b26e647,0x3a00f7c5,0xb8eb0738,0xb7c045e3,0xb81a2b8a,0xb7988911,0x3756dd2b,0x33663c56,0x3868a568,0xb898bfb6,0x3885122b,0xb9cb0180,0x39ffda42,0x3b4f70f7,0x3bb0141f, -0x3b210094,0x3ac67285,0x3af9a5ad,0x3b22569f,0x3a76de23,0x379c8b26,0xbab46395,0xbb0485b9,0xbb0457b1,0xbaf2c1f5,0xbafe4367,0xbb3a2188,0xbb5144c8,0xbb8756f1,0xbb3cd617,0xbafcb4ad,0xba93e3c7,0xba21113d,0xb8a2516e,0x39c5f68b,0x3a664c4c,0x3a86b747,0x3a38981c,0x39147f9d,0xb5a3c70c, -0x38b1dcb9,0x380ac142,0xb7a08586,0xb8133aa2,0xb81560f9,0xb8393dad,0x394a9d87,0x38ec8501,0x3a261e3a,0x3a42d3b0,0x3ab5e817,0xb91ac301,0x39e05029,0x3a299669,0xb8aefeb7,0x399d3064,0xb97f3239,0xba12f70a,0xbad40004,0xbaf7fa88,0xbb08b9ca,0xbaddab1d,0xba30156d,0xb43f9049,0x39ad4ec8, -0x39c47f10,0x39b9151d,0x39bd3d36,0x3a0596f0,0x3a4e2ec0,0x3a73967a,0x3a61a2a6,0x3a46966a,0x3a083be1,0x3920aa9c,0xb90105c1,0xb9028bfb,0xb813ae00,0x38a9a807,0x38a42bec,0x3916e0fe,0x38c209ed,0xb9853c03,0xba030d1f,0xba806e55,0xba94bcf4,0xba34d9ae,0xbb4a1bf8,0xbb5f537d,0xbb44ed91, -0xbb1ec69e,0xbb1bbbc3,0xbb00eff2,0xbabaa00e,0xba3da76a,0x38c265f1,0x3a263118,0x3a83b86e,0x3a893085,0x3ace83a0,0x3b0fd38f,0x3b018d84,0x3afb2aa4,0x3ad0e554,0x3ada921a,0x3ac58fff,0x3ad90a51,0x3aae026e,0x3aa34deb,0x3a71b83f,0x3a159cd9,0x39681e21,0xb836356e,0xb98ef16a,0xba21534f, -0xba14ae83,0xba6957f3,0xba81bcc9,0xba90845d,0xbabf46e7,0xbb008736,0xbb1a5634,0xbb33c391,0x39c4959e,0xb910531e,0x3902e917,0x39f4d6c3,0x3a8a57e1,0x3a868a80,0x3aa8414c,0x3a969114,0x3a9d2f00,0x3ab9cc20,0x3ae855d0,0x3b13a1f4,0x3b236fe8,0x3b39423f,0x3b2f5e82,0x3b2c7f40,0x3b3b090d, -0x3b366632,0x3b316b3a,0x3b345e53,0x3b3390e1,0x3b2db777,0x3b29586e,0x3b2090c3,0x3b19fb22,0x3b0796d8,0x3b01fd87,0x3acc3279,0x3ab1bd5f,0x3a8dd32b,0x3a1cfca9,0x3a1f4162,0x3985f701,0x3a015d1f,0x3a188dde,0x37a42066,0x3a55775c,0x3a0358b3,0x3a311368,0x3a552dd1,0x3a769323,0x3a834fe3, -0x3a9f7d86,0x3ac0ae59,0x3ae256b9,0x3af3512f,0x3afa3cab,0x3afe5914,0x3b037782,0x3b0c87fc,0x3b08356a,0x3b072286,0x3b04aa64,0x3afe3be0,0x3afa55a9,0x3af7a096,0x3af836af,0x3afe0dc6,0x3b034145,0x3ae5fe3b,0x3aeba6c7,0x3affa5e2,0x3b014e83,0x3aef6ed2,0x3ae87494,0x3ae58c8f,0x3ad56a7a, -0x3ac1aa0b,0x3aa13d05,0x3a8c3e94,0x3a96f43c,0x3a7b8bd2,0x3b4bdde8,0xba954d9c,0xba2f9369,0xba2bf4fa,0xba1ed46b,0xba1b30cd,0xba528396,0xba1b3e7c,0xba17a161,0xba0bb233,0xba355c41,0xba3d9630,0xba2f28b4,0xba1a5cde,0xba3f6bb1,0xba75acfd,0xba8fba53,0xba902a7f,0xba5e5ad1,0xba550a26, -0xba49b736,0xba5936bd,0xba411cfd,0xba2b3482,0xb9f5a09b,0xba758470,0xba82feb1,0xba187fff,0xba5d9ed3,0xba4dea32,0xba17075b,0xba1e2d40,0xba103c0b,0xba05cd78,0xba2871f7,0xba406407,0xba328959,0xba2268f5,0xb9fb4a21,0xb9824638,0xb9a8984c,0xb9cbe674,0xba820c01,0x386da2e4,0x39201e56, -0x393d7d05,0xba243cbc,0xba82d467,0xba8c6857,0xb9f6d3db,0xb9ec9b4e,0xba911503,0xbaef54e7,0xbb062a7c,0xba8eaa3c,0xba80ce36,0xba7157d6,0xbaadaaee,0xba94eb0b,0xba99d138,0xba50c6f5,0xbabaf1d2,0xbaa40a2d,0xba1ea504,0xbada0e50,0xbaf1b06f,0xba84d98a,0xba3ce973,0xb9b28fce,0xb9ba359b, -0xba3553aa,0xba68f6b5,0xba8579ea,0xba713ec3,0xb9ec2a66,0xb98a955c,0xb7e44ee6,0xb87901d6,0xba988840,0x3957832b,0x3a06652b,0x3a7e02ef,0xba19b0cb,0xba612993,0xba8639cc,0x395d256a,0xb9d6eecd,0xbaf7bdb5,0xbb51dea1,0xbb4e3671,0xbad53060,0xbab47599,0xba874865,0xbad1c185,0xba909981, -0xba929263,0xb9447151,0xbaf6ab15,0xbaee273e,0xb9999442,0xbab02472,0xba3e1e95,0xb9dd91b3,0xb93135ea,0xb99253b6,0x38d76331,0xb9ecaea9,0xba4e1825,0xba68036b,0xba24d7b5,0x388ae85e,0x3a69675b,0x3a0b9b61,0x3a22de13,0xbaad9bcc,0x3ac06e0c,0x3b19fda3,0x3b462e07,0xb8b95391,0xba950dc2, -0xbb043249,0x3a0e7114,0x3a1151b1,0xbaa6b410,0xbb851c50,0xbb8d213c,0xbac562c1,0xba9e77b7,0xba8c80c5,0xbb0980d9,0xbad4bd33,0xbad72061,0xba47127c,0xbad90782,0xb9c95726,0x398fcd97,0x3912bfa8,0x39aad2fb,0x38f8c832,0x38a643ea,0xb75fdac7,0x38756e03,0xb8b02892,0xb9b96e9c,0xba8a5418, -0xba82cf81,0xba01a729,0xb943ef63,0x399805f7,0xb84c52d8,0xbb07726b,0x3a18b832,0x3a8a7d3d,0x3b4187f5,0xb7aa9276,0xba855098,0xba9e804b,0x3ab09210,0xb9264d5a,0xbb81105b,0xbbd646e8,0xbbc375d3,0xbb32c791,0xbae39c36,0xbaa915ab,0xbb0fb45f,0xbabee847,0xba85f88a,0xb9849c46,0xb7cf7c68, -0x39ca6287,0xb92dfb2e,0xb7d1d18a,0xb91d8b48,0xb85c66eb,0xb80a0e19,0x3787fc9b,0xb79e7864,0x3850703d,0x3864ecdc,0xba205ae1,0xb98b9f5f,0x3b4e5478,0x3b79207e,0x3bb80753,0x3bfe8bcd,0x3c341a2c,0x3bb3fd0d,0x3b892b8c,0x3b825d5e,0x3ad108cc,0x39b6d9b7,0x38d99a7d,0x3ace9e41,0x3bd57e14, -0x3c3f820f,0x3c4b5aaa,0x3c02c2ff,0x3b28dcde,0xbac7efcc,0xbb62b400,0xbb38b304,0xbb205b04,0xb70d0856,0x3a810fca,0xb95f0e96,0xb8dbfb61,0x3799b843,0x38373571,0x38601eb2,0x3816f0ae,0x3747b516,0xb5d7e7d3,0x360ffe16,0xb7cb8a11,0xb7f5c87c,0x39975545,0x3a46e3e4,0x3a0d5354,0x39948788, -0x3af1191d,0x3ab75ffe,0x3a738dc8,0xbb930146,0xbbec0193,0xbb58cc9b,0xba99ee45,0x3b341c65,0x3bf7ef91,0x3b1bd07a,0xbb1b65be,0xbbf28f27,0xbbc75602,0xbb4850b4,0xba7905af,0xb8c4c034,0xb9ae52cb,0xbadce465,0xb9f5133a,0xb82fccd7,0xb93741ef,0xb70f2d96,0x38e026b6,0xb7a7184e,0xb7fdc725, -0xb7bebddc,0xb7904531,0xb620aee3,0x36a79ac4,0xb78027ee,0x389b60ce,0xb8ee9b4e,0x39688194,0x3a92ffab,0x3baa3d17,0x3c221ad4,0x3bc89fce,0x3b07111a,0xbb152e32,0x3b25c150,0x3ba88c4d,0x3b960ddf,0x3b874249,0x3a8609cc,0xbb377289,0xbab01c9f,0x3a84c7d1,0x3b8dc703,0x3b6d3e2f,0x3ac9d38a, -0x3afe010a,0x3a791a0a,0x3aae56d7,0x3a05ccb0,0x39d2bbc5,0x390ff9ca,0x3835b6f6,0x3744c50b,0xb805de52,0x369bed66,0x375c163d,0x376e3120,0xb3d39ea5,0x36ec1bbd,0xb7c75fba,0x3877365c,0xb913ecf3,0x3997c974,0xba26e3d7,0x3a68294a,0x3b73d60d,0xbb83a094,0xba0eb9dc,0xba665a5d,0xbbcf74fc, -0x3b0082dd,0x3b9580d4,0x3ab971dc,0x3be548f6,0x3b7623ee,0xbb809bd5,0xbaf24fa8,0x39955d7f,0x3bca355c,0x3b2a7b40,0x3abb7077,0xb87065ad,0x394629a1,0x39c2e2ed,0x3a4c6a57,0x3905d8b3,0xb990d3f2,0x38d25b8c,0xb8585187,0x37ceb0aa,0xb648f7ec,0xb71445a8,0x372d0d63,0xb6d8af30,0x38077571, -0xb83dfed0,0x38f962d5,0xb9886611,0x39bc29bc,0xba13a06b,0x3945fdae,0xbbe60e47,0xbcc4624d,0xbbfcc3bd,0xbaf38c9f,0xbb670282,0xbbc230a7,0xbc0c689e,0xbc00995d,0x3b3a28f3,0x3bec0e96,0x3b6996d4,0x39df1add,0xbb83e070,0xbbaecff8,0xbb9b9ec1,0xbb6a7d68,0xbb298367,0xbae69a05,0xbabf0c4e, -0xba6221a2,0xb996b591,0xba332834,0xb907eb1a,0x38cf67fc,0xb789078c,0x36dec423,0xb6329d9b,0xb78ea325,0xb7963ebd,0xb7b537eb,0xb5f4697c,0xb7d0b89c,0x38b9f075,0x3867ce58,0xba4ce05f,0xb9ea45e1,0x3bacb73c,0x3bef8681,0xbac6485b,0xbba9463e,0xbb9ab5e8,0xbb72c237,0xbaacd3a0,0xb9297c82, -0xbb3587db,0xbb9d943b,0xbb90724d,0xbb563df5,0xba7152d6,0x3a232442,0x3a8b958b,0x3ab3826b,0x3b288a92,0x3b6540eb,0x3b8304cb,0x3b811adf,0x3b4c09b1,0x3af1b0ec,0x3840bd04,0xb91026ac,0x37483785,0xb7569a7d,0x3785b236,0x37fcdbdc,0x38879aa5,0x37d69889,0x382f1d07,0xb8243957,0x386e53c0, -0xba0cdf12,0x3b046f88,0x3b172891,0x3b1986f1,0x3aed4152,0x3b12a44a,0x3b485628,0x3ac15653,0x39f0c4e6,0xba995026,0xbaff8a50,0xbb16444f,0xbb0ea7cf,0xbb0651ef,0xbb412bf7,0xbb511bf0,0xbb895329,0xbb3c36b7,0xbaf40860,0xba93ea7e,0xb9b81318,0x398f2892,0x3a59ab02,0x3aa99649,0x3a8c352c, -0x3a14e2fd,0x389cb12a,0x380f12cc,0x364b8bc0,0xb806275e,0xb89d7879,0xb8dfd1fe,0xb8c1f3ac,0xb862f35a,0x37c111ee,0x38099b18,0x39cc5cbd,0x3a923dec,0x3aba37fb,0x39f21c9b,0x3a85a9ec,0x3a9599bd,0x3988efb3,0x39ef8827,0xb7dc66e2,0xb9bfaadf,0xbab5a34e,0xbaf7bb01,0xbb1d6a22,0xbb1616b1, -0xbab56c77,0xba55c8d0,0xba0c7ec9,0xb9728b74,0xb8d1afaf,0x38064c35,0x39a320f5,0x3a3ca654,0x3a801ecd,0x3a51eb08,0x3a0c37be,0x3934a6b7,0xb78718df,0xb91ac634,0x38603584,0x3894ec8a,0x3967bca2,0x395a0523,0x3974a157,0x3922cbd2,0x3873e016,0xb91f94e4,0xba011914,0xba690f37,0xb9ae338f, -0xbb42901d,0xbb48921d,0xbb2fa4d7,0xbb0ae510,0xbb040131,0xbaeaf3c1,0xbab78925,0xba5744fa,0xb903d7ac,0x39ce08e4,0x3a3744b2,0x3a1223cc,0x3a67a8c0,0x3aaee3b5,0x3a9cc92f,0x3a9835fd,0x3a86cee9,0x3a99a6a8,0x3a731a24,0x3ab19642,0x3a6e156c,0x3a4a3008,0x39c3c3c1,0x38100b15,0xb9923a75, -0xb9d14d10,0xba08bb13,0xba11d426,0xba0fb52c,0xba41cfa1,0xba6e91b8,0xba81d511,0xbab3d803,0xbaf813fd,0xbb051d10,0xbb1def8c,0xb99ed5a8,0xba061774,0xb99a1ad6,0xb7a63b9a,0x3a03de9e,0x3a09b64d,0x3a597565,0x3a40a2d4,0x3a4b8596,0x3a7a15ed,0x3aaa504c,0x3aee7453,0x3b0e4b17,0x3b25844f, -0x3b22b430,0x3b213733,0x3b2c840b,0x3b2c9c87,0x3b2d5ccf,0x3b2c7a9d,0x3b28d819,0x3b1697c9,0x3b0b6b0b,0x3af7bf44,0x3adf5f6d,0x3aac9fbd,0x3a978d70,0x3a2b596f,0x39fe5c8d,0x396bebae,0xb882e5ac,0xb9225aa3,0xb9c58962,0xb9068917,0xb98767f5,0xba144f16,0x3a13d577,0x39874e35,0x39cde3f2, -0x3a12001b,0x3a330f9c,0x3a3e63e7,0x3a6af356,0x3a91c2fc,0x3ab23776,0x3ac3c036,0x3aca1595,0x3aca8571,0x3accf9f6,0x3ada9d03,0x3ad1b804,0x3ad16bbf,0x3acd5294,0x3ac3b716,0x3ac1e1d7,0x3ac063cc,0x3ac6d6d6,0x3ad093b1,0x3adeb74d,0x3ab16dc7,0x3aba28c2,0x3ad065ce,0x3ad530db,0x3ac8bae0, -0x3ac2b768,0x3abbbe4a,0x3aa8d2f4,0x3a97a4cc,0x3a708ad0,0x3a4a55eb,0x3a70b491,0x3a39e3c5,0x3b255713,0xba997399,0xba3ee860,0xba34c48d,0xba25571c,0xba1f4ba0,0xba54a02c,0xba20b91f,0xba18f3f8,0xb9f93e4f,0xba307af4,0xba42dbd6,0xba50b520,0xba1af941,0xba36866e,0xba6ee59e,0xba8db6ee, -0xba924d8d,0xba7610e9,0xba61bf4c,0xba520777,0xba5a1b2a,0xba4a0726,0xba37c40b,0xba17541c,0xba765d26,0xba81a800,0xba1ea8e4,0xba5bc440,0xba5272d8,0xba1bcd63,0xba26792e,0xba176d97,0xba00205a,0xba3acb3f,0xba4dbd58,0xba421ab0,0xba395de1,0xba25d9b6,0xb9d77da0,0xb9c9a75e,0xb9fbb91c, -0xba937bbe,0xb9452d0d,0x376191cc,0x39ad4b35,0xba0e6b84,0xba81e1bf,0xbab43151,0xba041771,0xb9d30168,0xba90844d,0xbaec7a6a,0xbb087f62,0xbaad1489,0xba905788,0xba81877c,0xbaaf9f5c,0xba9d26b1,0xba9e1b3c,0xba636b54,0xbaab7be5,0xba9acb8a,0xba3eb735,0xbad4f775,0xbae05209,0xba650338, -0xba33b8c5,0xb9aacb99,0xb91c9e5e,0xba3b1b33,0xba746ff8,0xba837c96,0xba77f0be,0xba23414c,0xba0615db,0xb8dcf73c,0xb923da7c,0xbaa3fe03,0x36d00b50,0x39ae98c5,0x3aa72e6a,0xb9f40d1f,0xba5f4936,0xbad683b0,0x398dbccf,0xb94748e2,0xbae501de,0xbb48b95c,0xbb51ab63,0xbb09bf78,0xbad19c67, -0xba966ca3,0xbad89cd6,0xba94d0e1,0xba83b942,0xb99a5b05,0xbada6140,0xbab9f39d,0xb90e5830,0xba3efe32,0xb98415e0,0xb921ba14,0xb73cb0e1,0xb9161379,0x397d7b0d,0xb9d16a9b,0xba60f97d,0xba540776,0xba30a6b7,0xb90a619f,0x39ef0c09,0x39f0729c,0x39c3fe34,0xbad816d8,0x3a63e6b2,0x3af87dd9, -0x3b5e2744,0x3932257f,0xba89c050,0xbb412bc8,0x3a05a3e2,0x3a40ccad,0xba9cef1e,0xbb810860,0xbb8ffdc1,0xbb0e130d,0xbaccf74c,0xba9dbeb0,0xbb0ff80d,0xbad4a8cd,0xbac50bf5,0xba5ae725,0xba67c01b,0x3944e3c5,0x396cb070,0x38f0f361,0x395f47a3,0x38b8814a,0x388171f5,0xb6202622,0x365a6f17, -0x37d8e5ea,0xb98c7309,0xba703a0e,0xba6bceea,0xba3ba822,0xba2706a7,0x3973be06,0xb8ea15f0,0xbb02fa7f,0x391b673d,0x3a60b9f3,0x3b5bd4cc,0x39770e46,0xba92e7f5,0xbb170353,0x3ab2c302,0x39d8a8de,0xbb623466,0xbbca9b40,0xbbc828a5,0xbb72f0fe,0xbb13b227,0xbacf93be,0xbb146068,0xbac08980, -0xba4e0ac1,0xb85c58ec,0x38e3d874,0x38e1b0df,0xb942c88c,0xb7a09f94,0xb8fffa3e,0xb7d83778,0xb80f4029,0x36aec58a,0xb60eaf5c,0xb60ff8ec,0x394681cb,0xb9d7d765,0xb9872be8,0x3b2eba3a,0x3b6dc052,0x3b8fc2b8,0x3bcdda6e,0x3c25cd21,0x3bbc3984,0x3b9536b5,0x3b6d9de4,0x3b1ba0b1,0x3acf4286, -0x3a9e1c9a,0x3aeb0bb2,0x3bbf2583,0x3c253d98,0x3c4bcfc9,0x3c1226e4,0x3b75c646,0xb85a39bf,0xbb147132,0xbb0e0b5d,0xbadca5a3,0x39d158eb,0x39e6ae71,0xb9472382,0x37011d97,0x3846de8a,0x3806f087,0x3841715e,0x379b8caa,0x378a2aa8,0xb7078172,0x370c4b78,0xb813289b,0xb76f0e4d,0x3853df27, -0x39a96262,0x3a079210,0xb8a4b7fd,0x3b1ac738,0x3b2985dd,0x3b13b009,0xbb404548,0xbbb77dfb,0xbb59d997,0xba9b9f74,0x3b0e8764,0x3bcac984,0x3b42ad73,0xba7ddb50,0xbbca2ec0,0xbbc6c540,0xbb7a0014,0xbb0891a4,0xba4c3df4,0xb9fb9e01,0xba8d468c,0x3855bf0c,0x38af0c97,0xb942fd75,0x388a431d, -0x36b33e16,0xb7cc3df4,0xb7faa42a,0xb77679ab,0xb756779f,0x35d84e05,0xb68a5168,0x3752cfa7,0xb6ae7bd4,0x380ad569,0xb8e2cd8d,0x3a9039ea,0x3baf9187,0x3c1d7f7d,0x3bb54aa2,0x3ad21f52,0xbb43e545,0x3ae43627,0x3b8afc12,0x3b7c2dd3,0x3b867eec,0x3ab6f0a3,0xbb4c5c29,0xbaf8b6bd,0x3850160e, -0x3b50b382,0x3b69dfdf,0x3ae8de3f,0x3b0e17ff,0x3a9fbcd5,0x3acb57f7,0x3a2475b9,0x39d4583d,0x3882ebc9,0x3880e94e,0xb659c900,0xb7742458,0x3763bb4e,0x36e9992b,0x3709c2c3,0xb5ca7bd4,0x362aaa93,0xb795b6c4,0x380146b2,0xb8b89f7e,0x39407353,0xb9a697fa,0x3a3d69c8,0x3b3c1e91,0xbb8c918d, -0xba46af4c,0xba47e9cf,0xbbc4b4b2,0x3ac072be,0x3b7a0069,0x39c423f1,0x3bc54101,0x3b5bfc48,0xbb2a5b6e,0xbb297522,0xba74b388,0x3b97076a,0x3b2dd6c4,0x3b07e748,0x397e9a49,0x39ecdcc1,0x3963b24c,0x388f9a75,0xb9d5060d,0xb9b51800,0x39097319,0xb8b84126,0x38399389,0xb7842756,0x370bfa84, -0x36d3792a,0x36a6006f,0x3792a13a,0xb6cc716f,0x384ae9c3,0xb89f08f4,0x3885d37b,0xb90ea0db,0x391e2ebd,0xbbe11bf0,0xbcb8b252,0xbbc8c374,0xb9a64e85,0xbacc304f,0xbb63330b,0xbbdf4d4a,0xbc1311c9,0x3a86e13a,0x3bbeba89,0x3ba8fbd2,0x3a8c862f,0xbb61f656,0xbb9c3714,0xbb9c4724,0xbb7f0af5, -0xbb4c3829,0xbb1a34ff,0xbb0a7157,0xbacd00fd,0xba4a2c4b,0xba32e695,0x38eb1f84,0x36e20f5f,0x3692fbd3,0xb7ac7dd5,0xb7819be6,0xb7dac0a7,0xb768df86,0xb80eb6f6,0xb6dbfa52,0xb83cca76,0x381ac235,0x3828644c,0x3812970c,0x369858c8,0x3a96a867,0x3af953b8,0xbaef4555,0xbb851c28,0xbb9b22c7, -0xbb59fbfd,0xba80497d,0x3a0ce8da,0xbaf29e83,0xbb7c71b7,0xbb87f014,0xbb3c2154,0xba897aa9,0x3929cc72,0x3a5816ed,0x3a94ea09,0x3b2099da,0x3b51eecb,0x3b665fa7,0x3b5bb965,0x3b1c19c4,0x3a985213,0xb95ea1ba,0xb7b8c5cc,0xb7b94379,0x383d934e,0x3846ead4,0x38123e63,0x38a27e0b,0x374d8043, -0x38db1402,0xb897904a,0x3968086b,0xba27a54a,0x3a635248,0x388a6d91,0x3b0fb25d,0x3adadaa8,0x3b131347,0x3b4f8d45,0x3ad77b82,0x3a3aa6f1,0xba76e20c,0xbade2ef4,0xbb15c8c5,0xbb0d751b,0xbaecde8f,0xbb319f93,0xbb368a4a,0xbb7056cc,0xbb1c540b,0xbabce156,0xba728f44,0xb862adf3,0x3a181f6d, -0x3a9a33d5,0x3abc7325,0x3a825e54,0x39a5d6d3,0x38273496,0x382637e8,0xb8af4e35,0xb8fccbab,0xb8a9d70f,0xb8e3dfe3,0xb90221ea,0xb87304ad,0xb8fb87d0,0x37fc3c1f,0x38da5bbf,0x3a88b916,0x3aac131a,0x3a6c0bdb,0x3ab3b430,0x3ab1ae89,0x39fce1f9,0x39f4b824,0x38c422d6,0xb94afcc6,0xba865eaf, -0xbad703fc,0xbb1a0e47,0xbb220b00,0xbae25d9c,0xbaa8e75a,0xba868331,0xba0e7498,0xb9ae5a23,0xb92a26c3,0x392d92a2,0x3a2ac359,0x3a79662f,0x3a2dc138,0x39a9da4d,0xb64afc90,0xb8b9eab9,0xb8001caa,0x393b3383,0x3951f096,0x39671beb,0x396c65d0,0x396f5c35,0x395572b3,0x39612543,0x385a562b, -0xb92f18e2,0xba05f911,0xb81fa67f,0xbb27be31,0xbb271a52,0xbb10fb28,0xbade9d6e,0xbacb37e5,0xbabecf1f,0xba9e6524,0xba498ea3,0xb96df596,0x3979d290,0x39ff5cde,0x39402eaf,0x39a07e8e,0x3a103d89,0x39f74065,0x39ed29fd,0x3a03b315,0x3a36d4e5,0x39d53e73,0x3a81b22c,0x3a077b34,0x39bf7e37, -0x374b4f92,0xb99823aa,0xba0100bd,0xb9d2132f,0xb9df98ea,0xb9cf5182,0xb9c81d33,0xb9f2cf42,0xba15ec58,0xba2fed10,0xba8ace2a,0xbacfa460,0xbad49f50,0xbafd22dd,0xba281c58,0xba292688,0xba045e58,0xb9a44a4c,0x38bbc926,0x39094219,0x39e1701a,0x39c294e6,0x39cc32d4,0x3a02d4f6,0x3a4e62b4, -0x3aa92a75,0x3adf3a0b,0x3b05d56a,0x3b0bb162,0x3b0c8a47,0x3b14dd76,0x3b193a83,0x3b1f99eb,0x3b1d0852,0x3b160ac7,0x3af4578b,0x3ad12271,0x3aab1d22,0x3a887e40,0x3a0b38a0,0x39c1e8f8,0xb817d1d4,0xb90494b4,0xb9d2b582,0xba1b1326,0xba37c497,0xba503706,0xba06906e,0xba3bba18,0xba6469dc, -0x398bb341,0x359de188,0x38d7a049,0x398e0dec,0x39cc2050,0x39daf292,0x3a0d4feb,0x3a38ce13,0x3a72bd79,0x3a8aa353,0x3a9079f9,0x3a8dbaab,0x3a8a455a,0x3a91bed4,0x3a88cfb3,0x3a89ef72,0x3a872e9b,0x3a807396,0x3a80999a,0x3a8125c2,0x3a8b7320,0x3a99241d,0x3aac3704,0x3a6e818d,0x3a835a48, -0x3a9e2482,0x3aa416e1,0x3a960e6c,0x3a8e431e,0x3a88c64e,0x3a71b42c,0x3a54e993,0x3a15bed3,0x39e0436c,0x3a2176f3,0x39d5d70c,0x3ae78425,0xba8c7262,0xba2c3bcf,0xba2f41cb,0xba186a6d,0xba0f9398,0xba3d89f0,0xba133885,0xba0911c8,0xb9c3442e,0xba1c769d,0xba36adba,0xba5a7e29,0xba109986, -0xba22a12b,0xba58904b,0xba80fb6c,0xba888f36,0xba782396,0xba5b57b0,0xba47d36d,0xba491930,0xba3201af,0xba24a1cc,0xba21508a,0xba55e35b,0xba5a724c,0xba17e7c5,0xba50f6a3,0xba4a4140,0xba14d1f1,0xba1f5ebd,0xba0c3e90,0xb9d03687,0xba285537,0xba3862d3,0xba3a81ba,0xba2b8792,0xba1d9dba, -0xb9d75f65,0xb9aacee3,0xb9d68240,0xba83f79a,0xb99747ee,0xb845b334,0x39f92857,0xb9e219e8,0xba72168a,0xbac6d89c,0xba0af346,0xb9c005bc,0xba85e97a,0xbad32a72,0xbafc30e5,0xbab9e74c,0xba92c324,0xba7e3a9c,0xbaa1aa43,0xba8e4701,0xba8f8e76,0xba53c2d4,0xba927977,0xba918ba7,0xba41b0d2, -0xbab1d5a0,0xbab51d51,0xba2775db,0xba0a0053,0xb97eed7d,0x383c91b2,0xba2eb4c0,0xba5f8c78,0xba60bf05,0xba602727,0xba189857,0xba1e6f90,0xb89389b2,0xb8b7619d,0xba880778,0xb8686fd1,0x3971b575,0x3ac24390,0xb9b2b10a,0xba565d6d,0xbb059f8d,0x393e96aa,0xb8dbedb2,0xbace55b4,0xbb33a2f2, -0xbb44b2ab,0xbb1dc307,0xbadf7fdc,0xba9ea32b,0xbaca66bc,0xba80c188,0xba4acdfe,0xb9d4598e,0xbaac05a7,0xba39cf14,0x379eb056,0xb9172bc5,0x392808b3,0x38a8a527,0x389dd1db,0xb835d0fb,0x3980a995,0xb955409b,0xba440ca9,0xba2e497f,0xba0fc3c2,0xb85164f9,0x3980183a,0x3a0ac41b,0x39d3b6cb, -0xbab876b0,0x3a07005a,0x3ac2f5a1,0x3b676ee9,0x39ab2f8c,0xba82128f,0xbb6608b5,0x398533b7,0x3a2d6c0a,0xba95124f,0xbb6442b8,0xbb85a65d,0xbb2b7aca,0xbaeae2c6,0xbaa678ce,0xbb0821d6,0xbab88e9a,0xbaa96985,0xba3ac92a,0xb8e8fbfd,0x397c7bd7,0x38c04150,0x37a8326a,0xb7217965,0xb85cfa9e, -0xb72159f9,0xb75e06c3,0xb884216c,0x387a840a,0xb83f7055,0xba268015,0xba440708,0xba36f5e1,0xba53b532,0x3970613e,0x389d117e,0xbac2540c,0xb7b95fe0,0x3a4645df,0x3b666753,0x39cd6fd1,0xba9ca405,0xbb4a4952,0x3a86c170,0x3a1c8c25,0xbb450c63,0xbbb3cbfe,0xbbbe8baa,0xbb909791,0xbb2d4cf9, -0xbaefa507,0xbb0d8f54,0xbaa67207,0xba02787f,0x395adc42,0xb4e7d52e,0xb8920f41,0xb8a00bfc,0x3717bd8f,0xb696aa8b,0x37c6b94c,0x3704bbd0,0x36ff1845,0x382bafdc,0xb8802677,0x39088780,0xb8a08643,0xb91645ea,0x3b19bf55,0x3b5e9713,0x3b370c14,0x3b904cff,0x3c0919f2,0x3ba81339,0x3b87fd74, -0x3b32b32b,0x3b2d5198,0x3b127ba5,0x3abaa072,0x3ab4a258,0x3b8e02f7,0x3bfce281,0x3c371d5c,0x3c0f628d,0x3b8e16d8,0x3a90a7eb,0xba98791d,0xbac4223e,0xba6a8a87,0x39ec7ad3,0x3683b573,0xb8627c3a,0x388dacb3,0x37cd8dbe,0x3612a4f9,0xb5102fc2,0xb7370ec2,0xb5f0784a,0xb747f2df,0xb726206e, -0x36d192ed,0xb8805305,0x3831820e,0x38a3ba3c,0x39dd4fe4,0xba3be1c9,0x3ae93e8f,0x3b33466f,0x3b357945,0xbad8e2f4,0xbb8451b8,0xbb497189,0xba86a402,0x3ad80fe7,0x3b9b698b,0x3b47072e,0xb899b441,0xbba4b1d2,0xbbc6c05c,0xbb9a3d9d,0xbb5b85b6,0xbadcd451,0xba716a87,0xba2b8162,0x39a91ecb, -0x38b116c3,0xb912a173,0x38885bf9,0xb86c65f8,0xb61dd374,0xb70249b8,0x369fda05,0x3622f3f9,0x36bff3f5,0xb661f38f,0x37e5a463,0xb822694a,0x3900c6d4,0xb9a7b715,0x3a568e2c,0x3b994f75,0x3c064a3f,0x3b9784e0,0x3aa5ce63,0xbb34a873,0x3a994347,0x3b58a1c5,0x3b52041e,0x3b83c932,0x3affe2b2, -0xbb260f05,0xbae0e417,0xb998a839,0x3b1ae768,0x3b6a6667,0x3b03df56,0x3b21e4f1,0x3ab133e9,0x3ad10878,0x3a1bf41c,0x397847d9,0x378b850b,0x37ed742d,0xb4a64a3b,0x3751cbbd,0x369473d1,0xb51dfa4d,0xb5bfc256,0xb6d14617,0x368f51d8,0xb78ebe94,0x37c78a09,0xb88fb20e,0x38f345c7,0xb92a1bcf, -0x39926ce6,0x3ac657b5,0xbb84f0f9,0xba1633fe,0xb9ade5bf,0xbb920971,0x3aa1cb2a,0x3b51eb39,0x38215332,0x3ba1ef07,0x3b49bcd2,0xba5fe873,0xbb0fd453,0xba8d26d3,0x3b6a0dea,0x3b464b3c,0x3b42fe0a,0x3a8046da,0x3a73d46c,0x39acbfef,0xb9e82798,0xba490228,0xb95fe0c5,0x38bd7417,0xb88c89e6, -0x3824ac8e,0xb789aa19,0x37574028,0xb5d29372,0x364c68c0,0x36a090f7,0x35e305ba,0x37c1a271,0xb7667f58,0x37adbf9d,0xb89ef16f,0x380bef11,0xbbcf37dc,0xbc96eae0,0xbb970523,0x39cbf50d,0x39fb2a91,0xbaa5a6fb,0xbb9b6ad8,0xbc0d2f40,0xba135f4a,0x3b870c33,0x3bcdf6ab,0x3af552b8,0xbb12b3ed, -0xbb727112,0xbb86f075,0xbb6b0885,0xbb4e672f,0xbb1e02dd,0xbb12b362,0xbaf18fd2,0xba82b97c,0xb9d0d7bf,0x392fe957,0xb87056b0,0x378f1ffa,0xb7dbcfeb,0xb6c1f3bf,0xb711ca1f,0x35e5755d,0xb7446a40,0xb64e6c4b,0xb81a651f,0x37022831,0xb76ae181,0x385971d0,0x398b0a8f,0xbae05549,0xbb46f3ef, -0xba63825f,0xbad761c6,0xbb59f6fd,0xbb0abe12,0xb9cddcc0,0x3a469aa3,0xba9feacd,0xbb4c70c7,0xbb777b73,0xbb25bf01,0xba8cb2e5,0xb9397c92,0x3a469238,0x3a8cd138,0x3b1bb1af,0x3b3dcecd,0x3b485c9e,0x3b3db0f2,0x3adf17d4,0x3a1a265d,0xb96bfc66,0x38223f28,0xb70d1ad5,0x3844def3,0x37b412cb, -0x36da8a4e,0x378c3ea0,0xb72e5899,0x3877da84,0xb78b30f8,0x3914f208,0xb98071c8,0x39939b17,0xba898b95,0x3af8bc04,0x3adbc6df,0x3b087600,0x3b3e5f24,0x3adadfac,0x3a5300b2,0xba3ca595,0xbab00884,0xbb0b5f2c,0xbb0622c0,0xbacc5a18,0xbb1d6eb0,0xbb18f1eb,0xbb44afb2,0xbaeef8e5,0xba7cdcff, -0xba2648f2,0x39b23a78,0x3a7bb379,0x3ac2b5d3,0x3acf00de,0x3a6b0ccb,0x38e524ba,0x37bcc893,0xb7df1fd2,0xb87d968c,0xb8868e56,0xb779bc64,0xb6e40318,0xb81f46cd,0xb7388c2d,0xb907b869,0x37827fd9,0xb9206d14,0x3a1992b8,0x3a99cfa1,0x3a98e3c6,0x3ac8ca2e,0x3abb2c16,0x3a2255c9,0x39bf4d79, -0x38e78bab,0xb8c902a9,0xba34a4de,0xbaafecf4,0xbb0d6925,0xbb21d50a,0xbafac539,0xbad2645f,0xbab18d35,0xba49e4db,0xba0096aa,0xb9a20952,0x38475eea,0x3a0e9a3e,0x3a635a06,0x3a07bcee,0x3929bea3,0xb8471bcc,0xb84dcc10,0x3899d776,0x39076137,0x38c59ca5,0x385a14c2,0x372d665f,0x3861376a, -0x38d1952e,0x39219231,0x391b0e10,0x3650d2ee,0xb89087c4,0x3964f94b,0xbb04eaf8,0xbaf6acbd,0xbad4bf18,0xbaa2eea9,0xba9196aa,0xba8f5877,0xba816ca5,0xba39a2d1,0xb99a5109,0x39011135,0x39b0945d,0xb8c487e2,0xb928ed04,0xb90ce264,0xb92f95b6,0xb946e3f9,0xb72eeca4,0x395c348c,0xb91ae83e, -0x3a0f1679,0x39273e90,0x3825a35d,0xb9620ff8,0xb9e73159,0xb9accb2f,0xb96f2b19,0xb9505ea9,0xb851f54e,0xb767e70d,0xb86987f5,0xb979d417,0xb961354f,0xba13a3c7,0xba926080,0xba9769a8,0xbab5223e,0xba4abcbb,0xba24ad5e,0xba199e84,0xb9f0a46d,0xb9430a14,0xb9218102,0x38e6f672,0x38a5bb64, -0x3845dc54,0x386914ad,0x3980c77e,0x3a336c6d,0x3a91b8e8,0x3ab7f5ef,0x3ad39cc3,0x3adba131,0x3ae719e3,0x3af8c321,0x3b087c37,0x3b04a666,0x3af8070f,0x3ab39748,0x3a8b69e7,0x3a429e61,0x39bcfddf,0xb80b6aee,0xb8f6485c,0xb9f3aaaa,0xb9fee31f,0xba45b42f,0xba4a1130,0xba85a13e,0xba8afdea, -0xba43eaa2,0xba774f32,0xba75dc9f,0xb72b849f,0xb96130ed,0xb91a6c55,0x35d9e7a4,0x38d07b07,0x38eae8b2,0x393dae79,0x3997671a,0x39fa25d7,0x3a1f10f6,0x3a2a74a2,0x3a1fb193,0x3a0da534,0x3a0ecc8c,0x39fcf2e8,0x3a022f6d,0x39fdb251,0x39edadc8,0x39f4ea25,0x39fbe31a,0x3a1e29f1,0x3a3f001a, -0x3a6627d2,0x3a03a572,0x3a234308,0x3a445e45,0x3a447634,0x3a2efe7b,0x3a1bb25b,0x3a0fc489,0x39f2c75e,0x39d9d14e,0x398707a3,0x38f96921,0x3992ccdb,0x38c803a7,0x3a8207c1,0xba89db2a,0xba2fbdc9,0xba3992ed,0xba1c8ae2,0xba12de34,0xba3685df,0xba17ea82,0xba0e0a59,0xb9c42492,0xba1c553d, -0xba38c934,0xba662864,0xba14b867,0xba1dc2c3,0xba4cb938,0xba6e744c,0xba80b245,0xba7c1caa,0xba5caf08,0xba479bc5,0xba4169b1,0xba295ccf,0xba1f6505,0xba207e9d,0xba3e4570,0xba411bc0,0xba147bcf,0xba453b17,0xba3ea43d,0xba0a1bcd,0xba11ca50,0xb9fc2499,0xb9a50b99,0xba1d4229,0xba2fd9c6, -0xba2b1534,0xba25cae4,0xba14a599,0xba0dc652,0xb9e0c677,0xba035bde,0xba8329a4,0xba08dbeb,0xb990346a,0x39b8e8b0,0xba03b552,0xba80867c,0xbad601f6,0xba2e47e3,0xb9ed62d3,0xba824a70,0xbab855c0,0xbae19aab,0xbac09b93,0xba9731f9,0xba802958,0xba9211e0,0xba7b0fdf,0xba744325,0xba410043, -0xba859efb,0xba78a5f7,0xba2735a3,0xba826df6,0xba7568b1,0xb9d2e525,0xb9d269a6,0xb91c25ec,0x39058e8e,0xba16bd15,0xba546910,0xba3f31ff,0xba4c88cb,0xba1619d9,0xba5e4804,0xb97846a1,0xb983a6f6,0xba801b80,0xb99c1a59,0xb89510b0,0x3aa89968,0xb9eb5078,0xba736aa6,0xbb165efa,0xb871721e, -0xb930e5ae,0xbab7fd96,0xbb1757fc,0xbb2cb5d0,0xbb247982,0xbae4e66b,0xbaa39bdc,0xbab58a75,0xba53fd42,0xba14db01,0xba0f2ff4,0xba4915e7,0xb90d8b7e,0x390a328a,0x394a04c2,0x3936bfed,0x38f30818,0x38a66d09,0xb74bf7e4,0x388ea975,0xb806c1db,0xba0971ab,0xba1738f4,0xba028ce7,0xb8a9c7d5, -0xb940191d,0x395a559c,0x3897d6a7,0xbab5155a,0xb8a1d2b3,0x3a43a6d1,0x3b469a1e,0x386f62be,0xba9d9f11,0xbb7a1d2a,0xb970d128,0x39b984e2,0xba941a2f,0xbb3a9699,0xbb6456d7,0xbb363c3a,0xbafa96c8,0xbaa90208,0xbaea3fe3,0xba920a51,0xba7a2cae,0xb9ad1171,0x398abb1f,0x38d57b30,0xb86b29e7, -0xb8208ca3,0xb83a55f8,0xb82416b8,0xb7965fe8,0xb47f22d4,0xb7d63e57,0x381042d1,0x38afb036,0xb99c8006,0xba291d1f,0xba3a45d5,0xba97528a,0xb906681a,0xb90dd891,0xbaa02e91,0xb9d5e546,0x39b8a57c,0x3b453ccf,0x38e07d8b,0xbac0800a,0xbb6b477f,0x3a0077d8,0x3a099ba4,0xbb229960,0xbb922afb, -0xbba57a11,0xbb96e7dd,0xbb3892c4,0xbafcee99,0xbaf6da30,0xba86252e,0xb96267f9,0x396ea300,0xb8908d8f,0xb8908446,0x37fc0342,0x3764b7f5,0x37a96837,0x379669d6,0x3733c804,0xb62790d9,0x37bb54d2,0xb81b392e,0x37bbe03d,0x38ab02ec,0xb85f665c,0x3ae8bcdf,0x3b3018ac,0x3aba4cc0,0x3b2a03ab, -0x3bd13f5b,0x3b8ab107,0x3b5ec814,0x3acbcbff,0x3b2f0360,0x3b2baefd,0x3aad654e,0x3a35b28a,0x3b28349d,0x3babacce,0x3c1540b3,0x3bfeb603,0x3b91a19e,0x3af8cdfc,0xb9515a8d,0xba67a026,0xb98b2a1d,0x39953b48,0xb90897f2,0x382535b9,0x3823bded,0xb7430b31,0xb70f3e17,0xb707c46e,0xb7268fd2, -0xb683d36d,0xb6422f4f,0xb6e8cbdb,0x371a8e0a,0xb725c76e,0xb6adad22,0xb90f8bc2,0x3963e7c8,0xba8eaab0,0x3ad89f30,0x3b474dc3,0x3b6232fe,0xb9cbbf05,0xbb1e82a5,0xbb2e5812,0xba4f6d1f,0x3aa364b7,0x3b6b56fb,0x3b5755d5,0x3a891580,0xbb5db2f5,0xbbad21c1,0xbb9f7b27,0xbb83e34c,0xbb161862, -0xbaa9e946,0xb9df770d,0x3998a50e,0xb85e8939,0xb790f7b4,0x37a1204e,0xb82899aa,0x3756b0c9,0x369e5bcd,0x3698a6d1,0x36891cde,0x362192cd,0xb61dd5d6,0x37484e10,0xb7e303f1,0x3865f3e5,0xb8c175d8,0x395e0a82,0x3b711ec0,0x3bddccd8,0x3b815911,0x3a8db8a3,0xbb22fd9e,0x3a066fc7,0x3b0fbddd, -0x3b23eec6,0x3b68b004,0x3b0fce82,0xbaf5466f,0xbab55fa2,0xba056012,0x3ad19563,0x3b591be9,0x3b095fc3,0x3b3396cb,0x3abde5b0,0x3acf2928,0x3a13a709,0x38ded9cb,0x370b316c,0x37a61283,0xb6ddc33b,0x375e6992,0xb68e3c39,0xb643dc74,0xb61a40a8,0xb629bd60,0x3522b51e,0xb56c5729,0xb5237707, -0x36914001,0xb7b05254,0x38799439,0xb9950bc4,0x3a3ad67a,0xbb4d2981,0xba44d722,0xb9dd8abf,0xbb5bfc61,0x3a1b75b8,0x3b0ffacb,0x38e33652,0x3b65b2c1,0x3b17fd81,0x38d28c54,0xbb011265,0xbaaa8d14,0x3b121cab,0x3b3af721,0x3b5a07b2,0x3acba604,0x3aa81dbc,0x3a03f421,0xba2e543a,0xba3c7a10, -0xb8154703,0x37ebb7dc,0xb7cb5810,0x37858f44,0xb6fac6c2,0x36cdf09c,0xb62aca2e,0x35384773,0xb55ddca6,0xb60439fd,0x365c0cb2,0xb63f7c1c,0x37826f41,0xb599086f,0xb8b4f507,0xbba228e3,0xbc5fc908,0xbb7bc9b0,0xb7933200,0x3af3f345,0x3890a825,0xbb460d02,0xbbedab08,0xbaf963de,0x3b0c33dc, -0x3bcdc194,0x3b133f7c,0xba9d2a36,0xbb3cb586,0xbb64e47c,0xbb53e113,0xbb4f371a,0xbb19dad9,0xbb0d7b64,0xbaece323,0xba5676aa,0xb9034c86,0x38cd1835,0xb83d1938,0x36f818d6,0xb6fc9d6b,0x35e1a89e,0xb4ae9be0,0x3690a5fa,0xb3e96df7,0x36e01b7c,0xb70275a2,0x35a69eea,0xb7a4c03c,0xb84f9025, -0x3a220500,0xbb4d4f20,0xbbcdfac4,0x39d7d984,0x3a659b38,0xbabfc1d2,0xb9f5effe,0x3a0535f7,0x3a7421b2,0xba2d8eb7,0xbb1ac32b,0xbb4f2b8c,0xbb1a37a7,0xbaadd92a,0xba2b31f3,0x39e86540,0x3a49395c,0x3b037055,0x3b1ba0ec,0x3b23e432,0x3b1f76eb,0x3aa0e834,0x395eae7d,0xb9062f8c,0x38815107, -0xb70fa776,0x375d0ef8,0xb688d748,0xb58a8383,0xb6df404a,0xb73314be,0x36abe21b,0xb7e09829,0x3898fdf5,0xb8d736d2,0x3993ad2d,0xba944c8b,0x3ade8dd2,0x3aae3f88,0x3ac2e2f3,0x3b07f9af,0x3ab425b8,0x3a26721a,0xba28b62b,0xba8e06a4,0xbaf08786,0xbae870c9,0xbaa5d741,0xbb047dae,0xbaf70671, -0xbb175391,0xbaa58670,0xba0535fe,0xb9be946d,0x3a24f96c,0x3a97375f,0x3ad325d1,0x3ad19bde,0x3a2225f0,0xb8eacfd8,0x3809ffb6,0xb86b943e,0x3711090d,0xb59e284e,0x3637a612,0x37aae1da,0x36a480a0,0x37e87153,0xb7b4f338,0xb790e88c,0xb888c6e1,0x37bc7bf9,0x3a545862,0x3aa37d15,0x3acd2d73, -0x3aa88ff8,0x3a1d3685,0x3940b8ac,0x373f9445,0xb8cd79a9,0xb9e1c490,0xba877cbd,0xbaef7dd1,0xbb15accd,0xbaf8d790,0xbaddff3e,0xbabbcc82,0xba57e7d8,0xba032a43,0xb9ac22db,0xb7da0f1a,0x39cc806a,0x3a2866fe,0x39a147b6,0x38938694,0xb87ce1bd,0x38a1b7e2,0x388b68b9,0x371c1685,0xb79603ff, -0xb6bb8941,0xb8437add,0xb7c6f0d6,0xb829f79b,0xb760d143,0x3907649e,0x37c616b7,0x389eecb8,0x3a0687cc,0xbab7c19b,0xba98d434,0xba83d504,0xba4b1970,0xba3ccd5c,0xba435c27,0xba49b0e5,0xba2a0a58,0xb9cfe322,0xb89a004c,0x38b04087,0xb9ab2583,0xb9fb30f1,0xba17b8cd,0xba1f19c3,0xba2952f1, -0xb9d8fdf8,0xb96353e1,0xba2115e9,0x38a3c77b,0xb930b9b8,0xb9679fe8,0xb9aeb025,0xb9b4eda9,0xb8e227f9,0x34451c3c,0x3866e6a7,0x3881c64c,0x3917ee50,0x38f621f2,0x3902d667,0x38afc671,0xb90edbbb,0xba14daf3,0xba24126a,0xba65d736,0xba4465e2,0xba122422,0xba1dd197,0xba0ca720,0xb9c56200, -0xb9ba2727,0xb9164fdd,0xb913da30,0xb94e44b1,0xb98878e3,0xb933a6f3,0x3917a88a,0x3a043206,0x3a3c6824,0x3a837118,0x3a90b669,0x3a977089,0x3aae9bab,0x3acdbcd2,0x3ac3ddbc,0x3ab57355,0x3a60378a,0x3a0dc4c0,0x394ef922,0xb8ee456f,0xb9a06112,0xb9bb2b4b,0xba0e2d1f,0xba13adaa,0xba493ed5, -0xba373696,0xba7e3d03,0xba85c234,0xba58b613,0xba816436,0xba5c8484,0xb97e6b6b,0xb9b9cd0b,0xb9a2d8a1,0xb94949aa,0xb9016ce6,0xb902157d,0xb8d73830,0xb85feac7,0x38b1ac6f,0x394e7181,0x397a5a8d,0x394d28dc,0x38ed5ca2,0x38a3df62,0x37bab1e6,0x38058f0e,0x37b7b3e2,0x36dc723b,0x37e61a8b, -0x382c9b98,0x3935f094,0x399dd7dd,0x39f29deb,0x39321cfa,0x39867f20,0x399aa67e,0x3985616c,0x395a6701,0x390dab81,0x38aa9e8d,0x37d8abe9,0x367dd453,0xb84079ff,0xb8f23ab9,0xb7801a4a,0xb9391cae,0x39aa18d7,0xba6c1290,0xba16d3f6,0xba1ec92c,0xba0831f1,0xb9fd2154,0xba165056,0xba01470d, -0xb9eff52a,0xb99c01aa,0xba03ca2b,0xba1f5315,0xba4cdabf,0xba018fe5,0xba049ca7,0xba2a6979,0xba417e96,0xba5414d3,0xba5ce5bd,0xba3fda13,0xba2cdaed,0xba1de041,0xba110f75,0xba13d775,0xba244914,0xba1af2be,0xba32aee0,0xba26d520,0xba4fd9ce,0xba4ac54d,0xba1215c6,0xba1276ff,0xb9f3bb21, -0xb997a0e6,0xba0bfdfc,0xba0e007a,0xba2576ed,0xba1e547a,0xba28f07e,0xba1b02ae,0xb9e4a819,0xb9f93bea,0xba59f814,0xba0d0209,0xb9a33136,0x39a7e4f9,0xb9df4bd1,0xba5f69b4,0xbac0b813,0xba2af79f,0xb9e4022b,0xba5a404c,0xba8ae0ea,0xbab09c87,0xbaab29e8,0xba8712bb,0xba5f0db9,0xba60a720, -0xba4b7b11,0xba308c4a,0xba3ea836,0xba60f62b,0xba160611,0xb9c0e3de,0xb9f92b9a,0xb9d774ee,0xb90493a9,0xb97025e7,0xb8c4acf0,0x38daebfb,0xb9fe3ac2,0xba4a2b66,0xba27d832,0xba2f6ea8,0xba109a10,0xba65f352,0xb99c8e09,0xb994e8de,0xba447c17,0xb9a16005,0xb90edfb2,0x3a94804d,0xb9cc949e, -0xba59a922,0xbb0b0ccb,0xb943b0b0,0xb93c51e4,0xba93a174,0xbae1e320,0xbb061bf5,0xbb146b11,0xbace226c,0xba936a95,0xba8f16b0,0xba14afc1,0xb9e00315,0xba008204,0xb90ce849,0x3924e356,0x38ec2847,0x391f5db8,0x390617cc,0x3882371f,0x387fef28,0x37e4b898,0x37a0fa54,0x390d3cfd,0xb911350f, -0xba005643,0xb9d516e2,0xb993b0b8,0xba157337,0x37817e1a,0xb8dbd79b,0xba8c69ad,0xb9914963,0x39c0eb57,0x3b286102,0x381609e7,0xba8c4528,0xbb6202b3,0xb9fdef05,0x39178336,0xba76a0fe,0xbb02b94c,0xbb2aace3,0xbb25a122,0xbae83e70,0xba96fdc4,0xbaab2fa6,0xba46c871,0xba053378,0x38cf0c37, -0x39216e42,0xb8657f78,0xb88988ad,0xb80d1e12,0xb8816a7e,0xb8238df2,0xb7e147f1,0xb7289e5c,0xb7b97e05,0xb83172a9,0x3906e574,0x34b64dc2,0xb9fedd69,0xba221a40,0xbaa7b26c,0xb9858d46,0xb937f960,0xba4b4cfc,0xb9d979e7,0x39883d8c,0x3b26aa96,0x383a515d,0xbab2ab28,0xbb5ce6a1,0x38e993e4, -0x39d3e5f5,0xbaf84ba1,0xbb5414eb,0xbb8027a9,0xbb89eb16,0xbb2dbfa0,0xbaf01a47,0xbabd28b8,0xba384e54,0x3546a9f2,0x3844b39d,0xb8d0631b,0x3802c060,0x37dfba57,0x37a76cd8,0x37f6fd91,0x3798beeb,0x375cb200,0x36f7c0d5,0x372033e1,0x37ca2325,0xb8b0607b,0x38992512,0x3903bdb2,0x3a973f0e, -0x3b138ef0,0x3a35b120,0x3ac6eb0d,0x3b96ba26,0x3b572b2e,0x3b29fe57,0x3a0bdf54,0x3b2d2038,0x3b3b8071,0x3a9febd1,0x39d3657b,0x3abc0a02,0x3b64b39e,0x3be8034d,0x3bd65a62,0x3b930269,0x3b295ff1,0x3a3bda40,0xb922de4f,0x390073fc,0x38f677f6,0xb85ca309,0x3850bdaa,0xb784e08c,0xb760fbc1, -0xb719a975,0xb775971d,0xb7052d0b,0xb71d9a45,0xb487da8c,0xb73d110d,0x367eb969,0x3710e0fe,0xb69d8faf,0xb92346ef,0x36ad6aca,0xba670b5f,0x3aa37259,0x3b33eed1,0x3b5b18a7,0x39c7f9e3,0xba9af149,0xbb0c1681,0xba2ec226,0x3a47a278,0x3b22d877,0x3b4b2a7f,0x3ad30c53,0xbb086500,0xbb8b8361, -0xbb93fe5e,0xbb8a863d,0xbb2af47a,0xbacda6a7,0xb9c01cd6,0x390de9a2,0xb88bf5d8,0x376cbac2,0xb776a779,0x363a7bd5,0x37200d6c,0x37085606,0x36a10f52,0x36d8bf33,0xb54e2480,0x36e4db88,0xb6c5ef20,0x3797643e,0xb8144a75,0x38546daf,0xb831e0fc,0x3b1eba33,0x3ba7c0bc,0x3b3bba9a,0x3a589f69, -0xbb0c25a7,0xb8dd95d6,0x3a86b219,0x3ae1b75b,0x3b35847b,0x3b02f1eb,0xbaa36af1,0xba9b8cca,0xba43b6dd,0x3a61ba29,0x3b2ce527,0x3aec15b0,0x3b2a0b41,0x3aaf100a,0x3ab6e77c,0x39f6d860,0x37fc5ac3,0x3763d147,0xb6e6d79f,0x366a5ad1,0xb39cf425,0xb699a067,0xb6197f68,0xb692f77b,0x34d8b0f6, -0xb6a1d563,0x373acc9d,0xb802a2a2,0x388d7b9d,0xb91058ad,0x39859a11,0xba1637b3,0x39206d5b,0xbb1ccc5c,0xba5d2f71,0xb9d4a050,0xbaf8d3a3,0x37cbbb1c,0x3a9a38dc,0x39927305,0x3b139aeb,0x3ad64f31,0x3a4634be,0xbac09340,0xba9be277,0x3a9a51e1,0x3b1bf347,0x3b4f3d91,0x3af11597,0x3abaa46d, -0x3a29b600,0xba32e1d4,0xb9f76b3e,0x38ab8b98,0xb7fb5634,0x3789f50f,0xb6f67ba8,0x3692b0be,0xb5173e24,0x3488b415,0xb4bdff63,0xb5bf3e14,0xb605d2e1,0x3509ee5d,0xb676c7da,0x37c20f07,0xb6b22676,0xb8fc0dc0,0xbb542a90,0xbc1386b6,0xbb413d4e,0xb9d460d1,0x3b4a73af,0x3a55d027,0xbadd3883, -0xbbad73af,0xbb276d93,0x3a1a5a08,0x3bb6f19a,0x3b253d15,0xb8bd16de,0xbb0488c7,0xbb2b85fb,0xbb2a89db,0xbb3bca45,0xbb05ecd3,0xbaf12968,0xbaccfbf0,0xb9eed0fd,0x388fa607,0xb7b71d21,0xb369cd59,0xb64bd3a5,0x3694d74a,0x346e5ce8,0x36a3ecf7,0xb38c3258,0x37266816,0xb69e330b,0x37cae8f5, -0xb8231392,0x389950bb,0xb9925ff6,0x3a6d6bc8,0xbb4e4707,0xbbedf608,0x3b003eeb,0x3b4ea016,0x3a200282,0x3a9ad186,0x3aba9de6,0x3a910147,0xb9688c9d,0xbadd9290,0xbb230337,0xbb078185,0xbab39f60,0xba66376a,0x396b6c45,0x3a067013,0x3acad81a,0x3aea7f87,0x3af935ac,0x3b00ac1a,0x3a44dea7, -0xb8765714,0xb6fbd92b,0x3805b736,0xb6ea241d,0xb67087e3,0xb6efb185,0xb6966760,0xb7502039,0xb6b8d978,0xb77e79b5,0xb704d951,0xb6bb234e,0x37cb9d4f,0x37cd2e3d,0xb8278bfe,0x3abc4ca3,0x3a86cc7c,0x3a61fb63,0x3a915a50,0x3a672d47,0x3982a9aa,0xba32234c,0xba5f7d41,0xbabe01d1,0xbab582d9, -0xba6f1ac6,0xbac60728,0xbab0a71f,0xbacce8b5,0xba3e05e7,0xb8f5cdaf,0xb8fae518,0x3a4b08e7,0x3a9943db,0x3ac6b589,0x3abbc92f,0x396f4dfe,0xb8f0f44d,0xb726651a,0xb763364b,0x379d94fd,0x376085fc,0x375ec167,0x37975d7c,0x37caad80,0x3795a79d,0x37ee26c3,0x36f3a872,0xb80c1f54,0xb883200e, -0x390f9d1d,0x3aa0cee0,0x3abc2037,0x3a8ff3b2,0x3a06fa64,0x370cea25,0xb8cac777,0xb8f19709,0xb974f928,0xba4227bd,0xbabbeaf6,0xbaffb527,0xbade32bf,0xbacc1f42,0xbaa62251,0xba3f532d,0xb9e0c9e3,0xb99cd19e,0xb8a3ebf8,0x397f331f,0x39d0b30f,0x38e9a0ce,0xb78f7f57,0x3845bde5,0x38dc855f, -0xb7b6d7df,0xb79cd0a6,0xb80e62c3,0xb7f4a429,0xb82e2a4d,0xb837c9ce,0xb86298fa,0xb8544e4e,0xb80e0703,0x38a82c94,0x36c07d94,0x3a0cf0ee,0xba624b21,0xba0d27f3,0xb9f158f9,0xb9b33dac,0xb9abb47c,0xb9c9ad1d,0xba07b501,0xba0dc88b,0xb9e7a46a,0xb97307cc,0xb9111fbe,0xb9fb540e,0xba2dc511, -0xba599ee3,0xba63bea6,0xba7258f3,0xba36ee17,0xba0d47fe,0xba6fa979,0xb9a78ef4,0xb9d5b062,0xb9bd68e2,0xb9a3543c,0xb8e6dbbf,0x380215df,0x38728175,0x3885bcfe,0x3877c973,0x38902ded,0x38f0d52b,0x38e957af,0x39264810,0x38ee8f3d,0xb909b0f2,0xb94fa52c,0xb9dfcdff,0xba27d4e8,0xba02594c, -0xba1c67ca,0xba1bac1a,0xba0ea2ea,0xba07e26c,0xb9b84e19,0xb99defca,0xb9bf0fac,0xb9f2f981,0xb9ee8f4a,0xb98aadca,0xb4b7e81b,0x390bce5d,0x39e43a45,0x3a121c95,0x3a17a711,0x3a46e1ab,0x3a83c0cb,0x3a732167,0x3a5889ba,0x39bf4c85,0x38b58e1e,0xb9568401,0xb9900177,0xb970bedc,0xb98a9cb3, -0xb96efd18,0xb9b8acd0,0xb9dd9de3,0xb9aa0f1d,0xba282b3d,0xba444983,0xba469f1f,0xba6bacba,0xba38f38d,0xb9c0826b,0xb9d90f49,0xb9c6544b,0xb9956c42,0xb97a3719,0xb9802736,0xb98a96fd,0xb98ad94b,0xb93d7a2a,0xb8c6a065,0xb874b7d7,0xb8c97f7d,0xb9393576,0xb9762737,0xb9944f93,0xb993ddf6, -0xb9984276,0xb9995f1e,0xb98e1713,0xb986279c,0xb8f4e745,0xb608c91f,0x39138ef3,0xb881110b,0xb870a0cf,0xb8ca416e,0xb942f43f,0xb9625d35,0xb9881322,0xb9b2bb8b,0xb9aed729,0xb9a9d117,0xb9935ff4,0xb9887fcd,0xb9585247,0xb9ac0c96,0xb91a7600,0xba455b11,0xb9f6e457,0xba052280,0xb9e54ec3, -0xb9d40c44,0xb9eb7e3d,0xb9d9757c,0xb9cd6c32,0xb98974f8,0xb9e2f9e5,0xba08578a,0xba2d1956,0xb9e2cc46,0xb9e25f57,0xba0cb05b,0xba1a2791,0xba2a2332,0xba39a4f0,0xba221665,0xba1140a7,0xba00acee,0xb9e8335f,0xb9df0541,0xba06886b,0xb9f0181d,0xba0093c5,0xba01150b,0xba13eb11,0xba0b8841, -0xb9c9d6cf,0xb9caa029,0xb9a86ef2,0xb93e457f,0xb9e21dfc,0xb9ea40a5,0xb9fac652,0xb9fb41a6,0xba15b60b,0xba1a9336,0xb9d32ad2,0xb9d735dd,0xba200d8d,0xba06d668,0xb9ba7705,0x393affbb,0xb9de2575,0xba48bee1,0xbaa394b5,0xba295044,0xb9ec5dc2,0xba37880e,0xba4bb318,0xba84e1c3,0xba9016d1, -0xba672b1b,0xba3a5aac,0xba29c1b6,0xba03b3f4,0xb9eda5bb,0xba2dc14c,0xba0382de,0xb9881d82,0xb8fbedfc,0xb94f83e6,0xb9271c9f,0xb86f41f6,0xb8dc6f77,0xb84cfd7a,0x3876b19a,0xb941bc42,0xba061ae1,0xba1471ee,0xba03fdc6,0xb9d893e3,0xba51509b,0xb996cb44,0xb9807d06,0xb9ee3b88,0xb99a7327, -0xb9610c0d,0x3a51b0b3,0xb9df659b,0xba4cdc23,0xbaeb74c0,0xb9afc4f8,0xb98b65cb,0xba6c53a5,0xbaa234a7,0xbac5bd4b,0xbaf98424,0xbaae8519,0xba80212a,0xba4f6444,0xb99d915b,0xb99300be,0xb8f0e876,0x38f4321d,0x37f2cf76,0x386176c3,0x389ac2d9,0x38ad1a41,0x380d7ac8,0x380e4960,0x37be51ac, -0xb800b87e,0x3899e841,0x389c1b67,0xb91cc7d5,0xb9a23208,0xb9a7de39,0xba42bb2e,0xb889e06e,0xb91855a5,0xba2080f6,0xb9bd2ce9,0x377feb88,0x3af1154c,0xb938daf2,0xba8962ce,0xbb3b5dc6,0xba3cb9ca,0xb907226a,0xba536d6d,0xbaabf228,0xbaeee3d0,0xbb0ba48f,0xbac80ab1,0xba802ca9,0xba5d3450, -0xb9d9b923,0xb892342d,0x389bf41f,0xb881c9c3,0xb6ca569f,0xb803ed06,0xb7c3dd59,0xb80e5f5c,0xb787498e,0xb76704c5,0xb6c9de8d,0x36b2f1fd,0xb7ad1f88,0xb812393a,0x38c85de1,0xb952dfab,0xb999c0b3,0xba9c6776,0xb9822cec,0xb8c76f01,0xb981a2de,0xb9b2855c,0x39045409,0x3aeccdd0,0xb9430fe3, -0xbaab0969,0xbb3b2b91,0xb97e8dd4,0x390eba31,0xbab8ee4c,0xbb108d53,0xbb39d157,0xbb67fa65,0xbb173b1e,0xbad5a278,0xba83ad50,0xb9a8aa85,0x38492f87,0xb8105504,0x379a045a,0x374bcea1,0x372c2411,0x376bdc90,0x37810590,0x371290e2,0x36be95b2,0x36988e03,0xb6c51448,0x37ab7554,0xb34ee0b1, -0xb81f662f,0x38eaa3a5,0x3a264998,0x3ad0ef72,0xb81b25d1,0x39ff1ede,0x3b3544fe,0x3b09cd3a,0x3ad21e34,0xb9b7a729,0x3b127099,0x3b2f7d43,0x3a78a221,0x38f97538,0x3a1050f1,0x3b067687,0x3ba0edfe,0x3ba0fdfb,0x3b84adc4,0x3b334eb2,0x3a9f92f0,0x39db0015,0x3983e3c1,0xb85634d0,0x37c64213, -0xb710f5b1,0xb71733ef,0xb6aaa650,0xb6cffe57,0xb708a2d2,0xb664931e,0xb6b3be23,0x3581b691,0xb62f1045,0x36007c58,0xb7a43c6d,0x38abd884,0xb97dd71b,0xb90ad541,0xba2a08a6,0x3a5f3f2d,0x3b168ee8,0x3b42eb94,0x3a74a20a,0xb9536ebb,0xbad563a5,0xba057f20,0x39caeb48,0x3ac9e129,0x3b2ad4c5, -0x3ade6ea6,0xba9c8865,0xbb53ee74,0xbb7dfdf2,0xbb8513c0,0xbb2f78bc,0xbae458d6,0xb9f14825,0x37ef65b3,0xb8208bdd,0x37a6b356,0xb70c33d3,0x3744764d,0xb5800eb1,0x36e5be31,0x35c0da0f,0x36852503,0xb61d7046,0x36dc82cb,0xb747fc27,0x37b671dd,0xb80ebd2b,0x382c6b5b,0x36f64fb9,0x3a84649b, -0x3b689111,0x3af83abd,0x3a20a8e7,0xbae11b2a,0xb9fcab76,0x393affa1,0x3a875d98,0x3b023b4e,0x3add0cd4,0xba2b1558,0xba78b933,0xba669827,0x39679576,0x3ae66c73,0x3aa6db0f,0x3b0e88ba,0x3a8a4627,0x3a8f73a7,0x399b6662,0x3755322d,0xb4ef2827,0x365bef20,0xb6776e58,0xb5b2b5e1,0xb5e87e80, -0xb51812ab,0xb6658e9d,0x3617d383,0xb6b54a23,0x374dd2e7,0xb8051734,0x38956249,0xb917d2e1,0x399179c0,0xba0a2ab6,0x388a0b85,0xbae62c61,0xba767883,0xba03b717,0xba6f3445,0xba05b14b,0x396fc4f9,0x39adc529,0x3a997cd3,0x3a7a766a,0x3a64c444,0xba872006,0xba80c980,0x39c31728,0x3ade043f, -0x3b29266d,0x3af19fa0,0x3ab1e4f8,0x3a3928b4,0xba0edf42,0xb90d39b5,0x3827ee75,0xb7a0e8e9,0x374e3743,0xb6f4c42a,0x36500332,0xb5e55ca3,0xb41dde51,0xb54a778d,0xb60b4846,0xb46623d3,0xb6668047,0x36860de6,0x36cf24f5,0xb5a34168,0xb89fbe8e,0xbaa42ef0,0xbbb5580e,0xbb16182e,0xba634108, -0x3b623e22,0x3a8438d2,0xba557452,0xbb639f93,0xbb2ede74,0xba0856aa,0x3b8ab73c,0x3b22bbe3,0x3a46a234,0xba9e42cf,0xbae60778,0xbafcfa15,0xbb1b58c6,0xbad387d0,0xbab9725b,0xba9bbf1a,0xb8a9ee80,0x389312b1,0xb7dc58d0,0x372e849c,0xb5e15361,0x367053d8,0x3551652d,0x36b07997,0xb5fc0c07, -0x374ac416,0xb74294fe,0x380d6dcb,0xb876072b,0x38ece029,0xb982f1b2,0x3a23200d,0xbaeece13,0xbbcb2aa2,0x3b408862,0x3b8c9f13,0x3b0e889e,0x3b17eb94,0x3b08d350,0x3aa3a8c0,0x38fd29df,0xba8d10e6,0xbaec6ff6,0xbae9ec2b,0xbab5e4f9,0xba8030d5,0xb8090006,0x3966570f,0x3a857ece,0x3a9b6dba, -0x3aaaa81d,0x3ac25a80,0x39b47919,0xb959dfae,0x388d4c67,0xb7cf7eed,0x36854e7b,0xb700d35f,0xb6b9bd4d,0xb6a09926,0xb751348d,0x33d7a0ad,0xb7a95b75,0x3772c242,0xb84c70cf,0x38c5394b,0xb944f692,0x3a13672d,0x3a8d625a,0x3a2678d2,0x39380f31,0x3937a13f,0x39a09fde,0xb94ed028,0xba54f07f, -0xba589a93,0xba93212c,0xba832154,0xba17967b,0xba83c265,0xba687027,0xba79c3a9,0xb9bdf865,0x38e27f98,0x381e61d2,0x3a51efa1,0x3a87ff88,0x3aab09ed,0x3a87a487,0xb7fc4701,0xb81073f4,0x3753e5a9,0x36ca6a4c,0x36d83a59,0x3784efe4,0x3743af49,0x377a91f2,0x37a6017a,0x3714d0b3,0x37ac97f6, -0x3786e059,0xb6fe9838,0x389494c4,0xb9b961a1,0x3a8e87df,0x3aa21beb,0x3a5903db,0x39c21aa0,0xb918f7bb,0xb966e89a,0xb9552f13,0xb961f07c,0xba119cfc,0xba8ba9c5,0xbaca4103,0xbab7ab22,0xbaab3d5a,0xba851deb,0xba1be86d,0xb9a9007d,0xb96c2cd3,0xb89bbbea,0x39163f55,0x395bbe29,0xb50956bf, -0xb6f42378,0x38a8b89c,0xb82695c5,0xb6b52530,0xb791299c,0xb7cd41e9,0xb80af6d7,0xb7f992af,0xb8262705,0xb7f701c2,0xb80e7ddd,0xb816378a,0x371801c3,0xb8b59007,0x398c9cfd,0xb9dc90cc,0xb88ba5bf,0xb84185a7,0xb7298cdc,0xb7830021,0xb9023d9d,0xb9b3db05,0xba013659,0xba069bcc,0xb9daabd3, -0xb9ca572b,0xba164e0d,0xba3afb1c,0xba64149d,0xba6fa809,0xba7fc205,0xba5028c8,0xba343d1f,0xba7fe363,0xba0e3cc4,0xb9f79b6a,0xb9af361d,0xb89d3a7a,0x3843d71e,0x3801f20a,0x37fe4e10,0x3844b56e,0x38858890,0x38769c1b,0x38c39e33,0x3871bdcd,0x3895e443,0x38bf1b29,0x383a1d85,0x3829d465, -0xb83c710a,0xba0bcbfc,0xb9e2b06b,0xba15d243,0xba25d830,0xba31f2ec,0xba2966d9,0xba0989c6,0xb9e96211,0xb9fe458b,0xba1646a8,0xba1f8f96,0xba0dbcae,0xb9cd8492,0xb9ace955,0xb87c2dc9,0x388e346d,0x3899e44a,0x3975a7d2,0x39f01b4e,0x39c5523b,0x39a559bf,0xb7ec2c27,0xb97e03e8,0xb99081d1, -0xb929501d,0xb89adad6,0xb93a4a92,0xb8b7d653,0xb95bde87,0xb9577132,0xb9141af4,0xb9704742,0xb9b11385,0xb9ded0f5,0xba332d56,0xba13cb5d,0xb9d8d098,0xb9d7e5b1,0xb9c906b5,0xb9a36dc1,0xb9955374,0xb99ab932,0xb9b5b600,0xb9ca7ce0,0xb9b918ed,0xb99de509,0xb98edf6b,0xb9999738,0xb9b76d13, -0xb9d6dc64,0xb9ea4a4d,0xb9eedd19,0xb9f36831,0xb9f0b505,0xb9e70693,0xb9ddf5d5,0xb9a0eda9,0xb947b8ae,0xb8ae6e5a,0xb9858c83,0xb9929b67,0xb9959c58,0xb9b5d0c7,0xb9b8e974,0xb9c404f0,0xb9e1d731,0xb9de3af5,0xb9ef7dcf,0xb9e19732,0xb9bd192f,0xb9ab2b2d,0xb9cb8fc1,0xb9ee8dfe,0xba11d82f, -0xb9a95e44,0xb9b88cc0,0xb9a2bbfc,0xb99669f0,0xb99df20a,0xb99849b1,0xb990eaab,0xb9453be5,0xb9a22caf,0xb9c2732f,0xb9f32aa6,0xb9a405af,0xb9a13e6d,0xb9c3b0d5,0xb9d02390,0xb9e6aa0f,0xba026285,0xb9e4a444,0xb9cd3e99,0xb9af0ae3,0xb9a1ab30,0xb9a6d43e,0xba03d6f5,0xb9a788f9,0xb9b0fc13, -0xb9b9511b,0xb9c1c8fa,0xb9b7a4ca,0xb999009f,0xb995b00c,0xb9869627,0xb92dc33b,0xb9aa6a07,0xb9b580f4,0xb9e3013a,0xb9c0bc42,0xba015b7e,0xb9fc2454,0xb9ac657d,0xb9a2ac50,0xb9cf34d6,0xb9ce4be1,0xb99a3c41,0x38b927a9,0xb9a8a88f,0xba120937,0xba657fdd,0xba05517e,0xb9c05315,0xba00b8e5, -0xb9fbe382,0xba29dc93,0xba4b4e73,0xba253e79,0xba02950e,0xb9d2e4e8,0xb9a4eb3d,0xb9a8c19e,0xb9d015b0,0xb939d400,0xb7de5894,0x37ef4a43,0x378be612,0x37c25e76,0x37b50a3b,0x3807a7d3,0x355b88cc,0x3877747b,0xb86a35e2,0xb9280a6b,0xb9ca85f5,0xb9d58bc0,0xb9aaa27a,0xba1bfef2,0xb986c210, -0xb955acca,0xb981e309,0xb965e239,0xb9435834,0x3a038361,0xb9b1cbe5,0xba1910d5,0xbaa416de,0xb9acc45e,0xb982d04b,0xba1ed8c3,0xba451da0,0xba7648e4,0xbaae55ef,0xba761aac,0xba37a377,0xb9fd89c8,0xb93a37c6,0xb8aeff6d,0x38e6758d,0x3886c694,0x374fc1ff,0x3780f2db,0xb65b6be7,0x375369b8, -0x353a6668,0x36e4f7bd,0x36de81c5,0xb60fa3e1,0x3817570e,0x38a146aa,0x38a1d969,0xb8c06df5,0xb9893ab5,0xba4565fc,0xb91a7463,0xb944f11a,0xb9a01172,0xb9a50c11,0xb8fae72b,0x3a98a4a7,0xb9433026,0xba4ce93e,0xbaff9980,0xba307296,0xb96e1210,0xba117715,0xba36b575,0xba8b44dc,0xbac38017, -0xba8e315f,0xba2e6f06,0xb9ed58c5,0xb90dd937,0x3880125c,0xb7445037,0xb7caa4de,0xb63b6c73,0xb6ae0a93,0x360c3574,0xb6b9ad61,0xb6357474,0xb6594961,0xb5b5101f,0xb4fd9d71,0xb70faec9,0xb83752c3,0x37dbfff3,0x379a166f,0xb6ffbe1e,0xba7b88c2,0xb98b3485,0xb8fa3569,0xb7437660,0xb9730bcd, -0x3888d84c,0x3a939d09,0xb96ddb40,0xba80a6ed,0xbb027a08,0xb9b4f1de,0xb783ccd0,0xba690e54,0xbaa4d728,0xbae28ebf,0xbb2208b8,0xbad94f47,0xba9df02a,0xba16f22b,0xb8dadac1,0x380d0b91,0xb759ce3f,0x379eac2a,0x35a77726,0x36839f74,0xb3d3e78d,0x36535b37,0x35db96a8,0x36161bb2,0x356f4e2c, -0x36274bb6,0x36269242,0x37efbe71,0xb7ffe8c2,0x38af6094,0x392f95db,0x3a6eb81a,0xb949f4eb,0x38a43d99,0x3ac5416b,0x3aab5434,0x3a8399b4,0xba119baa,0x3ae5d08d,0x3b0cb033,0x3a2ffbac,0x369f734f,0x388db077,0x3a862a02,0x3b3d5660,0x3b4ebde2,0x3b507a92,0x3b1d1793,0x3aaf3acd,0x3a441bae, -0x386ad361,0xb708c2ed,0x37218334,0xb717ff80,0xb5dfbc80,0xb5916b42,0xb4a14ed5,0xb598be64,0xb57c04d2,0xb4a0b2e0,0xb5b3ae67,0x3590eaa4,0xb656fa01,0xb750854e,0x3755f8ff,0xb85c1c0d,0xb95f18c1,0xb97a8e1c,0x3a24a3ba,0x3adafd81,0x3b1416a7,0x3a8bf650,0x39ba20dd,0xba9120da,0xb9c2049b, -0x3915b56a,0x3a673ea8,0x3afabb04,0x3abc0bf2,0xba09d341,0xbb061294,0xbb32a255,0xbb4ac6ce,0xbb0fe31e,0xbac65c63,0xba0c1362,0x37afd419,0xb60d31fd,0x3612a101,0x35cd016c,0x36539f16,0x32b2b922,0x3563e4be,0x350c77fe,0x3521914c,0x34a5cb70,0x35227af8,0x35add051,0xb65ba7b1,0x379b0331, -0xb84168b0,0x38f1c5bf,0x390cb0f4,0x3b09e5c1,0x3a8fc525,0x39c8024a,0xba96c9c9,0xba12f809,0xb98b234b,0x3a169a79,0x3aa5b71a,0x3aa07196,0xb92faa59,0xba1ca794,0xba350b89,0xb6898980,0x3a8b14e8,0x3a576ac5,0x3ace64e3,0x3a4270b0,0x3a4e126d,0x3928daea,0xb5c58b74,0x3753b84a,0xb6e9e5f3, -0x3655383a,0xb592d9fe,0x3491d2f1,0x32d02fe4,0xb4fc451e,0x352803a6,0xb59091cf,0x3639bed1,0xb6f91835,0x3797a3cc,0xb8201479,0x38aadb5a,0xb919caf2,0x38ed7f7a,0xbaa559a9,0xba3e7b4c,0xb9c5de19,0xb8fd0234,0xba1bd47f,0xb94b09bd,0x39e2b4ce,0x3a0c9ac1,0x3a066a5e,0x3a4b7d4e,0xba09a26d, -0xba147824,0x38d03f08,0x3a9058cb,0x3aef486d,0x3ac9423a,0x3a94d658,0x3a307d74,0xb98cb206,0x378b0029,0x349f340f,0xb5e7fafa,0x35f927e1,0xb607c3a6,0x3573e152,0xb4a6c97e,0x3443148a,0x34db7bd6,0xb5548575,0x36014304,0xb6727fef,0x3702125d,0xb7097156,0x374f8685,0xb840d0e4,0x3943ce0a, -0xbb4192e5,0xbac4405d,0xba58adde,0x3b4b2e65,0x3a8b9399,0xb8c6c8d5,0xbaf598ee,0xbb0a7eb8,0xba6b7b1e,0x3b32fdef,0x3b0a116d,0x3a9958b5,0xb9f95c18,0xba73ec29,0xba9b5cce,0xbad0d1a9,0xba87cc3f,0xba6d84fd,0xba32ebb3,0x379f1403,0x37d7bb0e,0xb75c0b6d,0x3720410f,0xb50c709b,0x35e26ff5, -0x33570e9f,0x35b7064e,0xb597124d,0x365062ca,0xb689aac3,0x371e45e2,0xb78a9e01,0x380d2a72,0xb832149a,0x38accc2d,0xba0ff763,0xbb76aa85,0x3b48027b,0x3b87f049,0x3b382451,0x3b2e2d0b,0x3b147183,0x3ab5d6e5,0x39cfde41,0xba05d075,0xba92ef12,0xbaabfd75,0xba93b5ce,0xba60ce7c,0xb93e100b, -0x3795fdfb,0x3a15f148,0x3a378e7c,0x3a4d85d6,0x3a85ee13,0xb7ad6881,0xb853b073,0x37b46e28,0xb7af74df,0x369a790c,0xb691a8a0,0x34905ac9,0xb58053b7,0xb5d74c7c,0x360726ae,0xb6becb71,0x373d0421,0xb7cee58b,0x384065d8,0xb8fc49dc,0x398143e7,0x3a034dc8,0x39c7c824,0xb9803bf3,0xb9b6c93e, -0xb89acff5,0xb9d71216,0xba42e236,0xba2a3cbc,0xba4b6390,0xba2b131a,0xb9a71be5,0xba10d298,0xb9fa78b8,0xb9f9b9d2,0xb8ebf89d,0x39660aef,0x3918386d,0x3a3bfaf3,0x3a49f55f,0x3a88219f,0x39e15b06,0xb91b4dd9,0x38a61dc5,0xb75f8703,0x3795a7a3,0xb6837fc2,0x36b3261f,0x357e48d0,0x3655069f, -0x35179d50,0x36b2265b,0xb6af6f21,0x37bfd7c2,0xb7cde65f,0x38ce5652,0xb92c7543,0x3a26a010,0x3a8293c7,0x3a0b75fc,0x39828980,0xb953d742,0xb9769089,0xb95b340c,0xb9210e5b,0xb9c135be,0xba36cfb2,0xba8ad04e,0xba825ecf,0xba73ce11,0xba347267,0xb9d2ec2c,0xb9443972,0xb8ee3b24,0xb78e38c6, -0x38dcd1d0,0x38bd7755,0x37e44669,0x387175ea,0xb76fb0bc,0xb81db2de,0xb7098204,0xb6c06855,0x32976352,0xb6fb441b,0xb430798e,0xb6c3391f,0x35d013a5,0xb73606c2,0x36097590,0xb8737b30,0x3823b725,0xb916149f,0xb86dd9cc,0x3938f665,0x39558c81,0x394b2e48,0x39514358,0x38a43224,0xb91ce556, -0xb9b50bda,0xb9dda3d1,0xb9d5c0af,0xb9dc818f,0xba038bc9,0xba1ba783,0xba3ba1c9,0xba44fb2b,0xba52d9bd,0xba318b2a,0xba236291,0xba4eedd5,0xba0b49a1,0xb9d9515e,0xb8fdd426,0x38ba9ced,0x3865abd9,0x37cb2470,0x36c43fa2,0x354da814,0x371834fb,0xb67c9c2f,0x36ae9127,0x36fd3746,0x372299e6, -0x37c6f68d,0x38a95639,0x3852fe3e,0x38f2deca,0xb9e33e8d,0xb9a51821,0xb9e91441,0xba0bbcf3,0xba22df93,0xba179bcc,0xba01167b,0xb9d06adf,0xb9de7620,0xba017cba,0xba0f1f2c,0xba113c04,0xba01cce1,0xb9feba6c,0xb997f487,0xb9454db4,0xb94cf668,0xb8a3cf30,0x389b56eb,0x37a2c8d1,0xb8530ea5, -0xb989cbc2,0xb97638df,0xb8fb1b19,0xb7628331,0x36c19f83,0x364786fd,0x3684979e,0xb696593a,0x376116aa,0xb7952962,0x37bc4f82,0xb7da2f17,0xb8f4f621,0xb9c8de01,0xb9b65b4c,0xb9b0cded,0xb9a24bdb,0xb99b29ff,0xb97d0360,0xb96df2a1,0xb9772c70,0xb99b1880,0xb9b619cc,0xb9b6781a,0xb9a94fd3, -0xb9a00d3d,0xb9a51457,0xb9b7aa7d,0xb9d1ab8e,0xb9ded412,0xb9e57842,0xb9ea01f1,0xb9e5e9d1,0xb9df1eb1,0xb9d6f17b,0xb9a6a5bb,0xb988cf5e,0xb996026d,0xb9a28dd4,0xb9a445af,0xb9a619dc,0xb9ab19fb,0xb9b09ea2,0xb9b25bb5,0xb9b5f255,0xb9bc4ea7,0xb9bbe6c0,0xb9c27f63,0xb9aebc4f,0xb9c76473, -0xb9be3764,0xba0c9d8f,0xb9d53179,0xb97c0f1a,0xb98c95d1,0xb9802842,0xb970473d,0xb9696fbb,0xb9757ac9,0xb9743082,0xb9455f74,0xb98616ef,0xb997eb74,0xb9af8afd,0xb9869d57,0xb983f211,0xb994a634,0xb998ef96,0xb9a665b9,0xb9ba2650,0xb9a938f8,0xb999d996,0xb986b57f,0xb96336ba,0xb97356e0, -0xb9a93462,0xb8faa370,0xb8b3f4c4,0xb859af74,0xb865c513,0xb8476869,0xb815faca,0xb8008b21,0xb7d63f3f,0xb579a16c,0xb8a3474d,0xb8f9da00,0xb99baff4,0xb98f98b6,0xb9bd0576,0xb9d1bcd9,0xb9938bdf,0xb984563a,0xb9868606,0xb9ab53bd,0xb99b06fb,0xb8bb9809,0xb9a33d06,0xb9e90655,0xba1c49fc, -0xb9df3079,0xb9b453b3,0xb9c8e857,0xb9b3e4eb,0xb9e5bf6b,0xba0bc79e,0xb9ec1d9c,0xb9c0eafc,0xb99612d7,0xb94a4cf9,0xb8988239,0xb82ff2b7,0x387a05c1,0x37805518,0x37530a98,0x376cd91b,0x37350fdd,0xb702412a,0x371039d9,0xb7a68761,0x371a2951,0xb77f2cdf,0x3889c112,0xb78365be,0xb903a6fb, -0xb90af863,0xb9ef3fa0,0xb95fff43,0xb940d73d,0xb8f4afef,0xb95edc82,0xb970aad6,0x38f4bc9b,0xb9b38edb,0xb9f9c850,0xba534ffd,0xb9b98f60,0xb99b480e,0xb9e310a5,0xb9fd5ae4,0xba199c81,0xba5f9bff,0xba258d5e,0xba0295f1,0xb99db470,0xb7c29691,0x385dbc9b,0xb48c4c60,0xb79c8a5f,0xb76454e6, -0xb78155d6,0xb6f68244,0xb78bf094,0xb6f91087,0xb70dbdb4,0xb6de9d80,0xb6df4226,0xb793a9a4,0xb7ba1799,0xb737ad10,0x38c5b704,0x385f90eb,0xba3a2f96,0xb912d2a6,0xb94c6c0f,0xb8be818d,0xb99a9214,0xb9906f1e,0x39d8aeab,0xb9a8892a,0xba2a327b,0xba9d71a1,0xba245e0c,0xb9b9f101,0xb9ea786a, -0xb9e212ec,0xba24fd74,0xba7af0c7,0xba3daad5,0xb9f1fb83,0xb987034a,0x3869d3c5,0xb8101854,0xb79c475b,0xb5e1d36c,0x3634988e,0x3668b829,0x34712626,0x36bad38e,0x367a6967,0x35cec469,0x35df0968,0x35531e0c,0x33965062,0x3761ab19,0xb83548a7,0xb75ed28c,0x39216ef4,0xba262a63,0xb9684c1f, -0xb894d3cd,0x39039099,0xb93eb091,0xb8b34bab,0x39ccb0bd,0xb9b47c22,0xba45fedd,0xbaa2e2e5,0xb9e28ab5,0xb96a8230,0xba1371b4,0xba3b1ded,0xba81e873,0xbac76c64,0xba8d1614,0xba5a229d,0xb995138f,0x3839909a,0xb7128813,0x37114b6b,0xb46cf094,0xb65a5584,0xb5e9781c,0xb5aabaff,0xb64af8da, -0xb6037d8b,0xb60d91af,0x348e17f9,0xb69a63b6,0x36dd9796,0xb7cfb114,0x384a3874,0xb8caa23a,0x37e4dda5,0x39d79e9b,0xb9a1bc2c,0xb94dbeea,0x39d61adc,0x39eada9c,0x398d3ba7,0xba4135a4,0x3a5ee7f8,0x3a9c7a9f,0x398fad5b,0xb90a084d,0xb933d698,0x39ca83b7,0x3aab7f02,0x3ad0f449,0x3b0356ea, -0x3acce145,0x3a815151,0x3a1016e0,0xb8e646d4,0x372dd043,0xb7441d90,0xb49a7f3a,0xb3b6da8a,0x3570dea5,0x34b55a70,0x358804c8,0x359151fb,0xb51b0638,0x35d35c3c,0xb6505288,0x36cd98b4,0xb72da0d8,0x3798b67f,0xb8667422,0xb90e1b11,0xb8718bef,0x39c2cc11,0x3a7ceb6e,0x3ab33e92,0x3a5c5b41, -0x3a0040b7,0xba282262,0xb97088e7,0x36773330,0x39e33a57,0x3a9e9e6f,0x3a85fc45,0xb8d075f5,0xba879727,0xbacf87cb,0xbb055c78,0xbac69d0d,0xba961628,0xb9e4836c,0x38d4f56c,0xb80245fa,0x3750abd6,0xb6df7cb1,0x35e06619,0xb613d382,0xb42c5525,0xb54744a0,0xb5497dfb,0x331f1e6a,0xb5cb385b, -0x35e73278,0xb6e20d0f,0x3718ba5e,0xb7e393cc,0x38431a5c,0xb882d41c,0x3a5d38bf,0x3a0f97f4,0x390b3890,0xba333545,0xba0d33ae,0xb9fe66c8,0x38f7102d,0x3a04572f,0x3a1d8826,0x372fd258,0xb9d99828,0xba14a8dc,0xb971387a,0x39bbe88c,0x39a7c4ff,0x3a5d07bc,0x39c90fd8,0x39d22f6e,0x3801139f, -0x36588010,0xb7a9dc79,0x37116268,0xb6eba243,0x35eb0d07,0xb58ab7d7,0x35357172,0xb4c7b0b6,0x32f8fab7,0xb455f7f1,0xb523845c,0x3552b0cf,0xb5df6acd,0x363b7fc0,0xb6c0c217,0xb601c5ad,0x38da1fcd,0xba348304,0xba07d3b3,0xb99f6ee0,0xb89836c5,0xba2cef27,0xba059dbf,0x39660b39,0x3834a6d8, -0x38d6ae02,0x39c82655,0xb9c0363a,0xb9dbcfd5,0xb937e2be,0x39d98eef,0x3a6d0630,0x3a79e579,0x3a399d13,0x39e27c2a,0xb8735eb4,0x35e2b042,0xb70ec8dc,0x3657ebf1,0xb646460b,0x35c37116,0xb5728f84,0x328539e1,0xb52800fa,0x35392ae6,0xb5e224db,0x36222373,0xb6cbf503,0x373bc6a0,0xb7a32852, -0x38094e26,0xb848c4a6,0x39f46532,0xba8bf84c,0xba87c91b,0xba2c0d0f,0x3ae27042,0x3a26a643,0x38aabbc7,0xba5bdc45,0xbaaaeed1,0xba4b5d7e,0x3aa8fdba,0x3ab86b02,0x3a8893ba,0x3630c735,0xb9cee489,0xba2aacbd,0xba71ad1f,0xba1d01d4,0xba0a9225,0xb98e86f3,0x38491bff,0xb7977763,0x36078d37, -0xb5ce9538,0xb5cffd9c,0xb4f35792,0xb4b5a15b,0xb591fc77,0x34fcf211,0xb611f1b2,0x3624d9cf,0xb6d92f8a,0x3727a923,0xb7ccd39a,0x388722f9,0xb921370f,0xb6526a16,0xba9b3c0e,0x3b024f0c,0x3b35bb36,0x3b0d644e,0x3b019f1d,0x3ad87ad0,0x3a8dce58,0x39c1ca7b,0xb94f06f5,0xba30ea13,0xba6623de, -0xba5c95b9,0xba2e801a,0xb98a8b8d,0xb8e9f9b4,0x3969f620,0x399b8a12,0x39c5ef8d,0x39f0c24a,0xb91f2719,0x385772ab,0xb7a218b8,0x36dad701,0xb4bd7835,0x35433ed1,0x34f68a1e,0x34a2e6dd,0x35910f41,0xb4ddf92d,0x35c3b510,0xb5ed44c8,0x3681702b,0xb6f6a5fb,0x3676453f,0xb7b8adb7,0x39062c8b, -0x38fa5cd9,0xb9ec80c3,0xba14ffbb,0xb9b87668,0xba0bb6d2,0xba2ea4ac,0xba12b770,0xba077235,0xb9c703b4,0xb9291ae7,0xb97e3fe2,0xb95b2b23,0xb93bc733,0xb78c4036,0x3927960b,0x38ed6fc5,0x39ea19dd,0x39e136c4,0x3a2a1e13,0x38159f7d,0xb85d0db8,0x37d7ce14,0xb74d5ad1,0xb4dc2b50,0xb62854d2, -0xb603d92b,0xb6296aee,0xb602f841,0xb6731a0f,0xb49ea541,0xb6e59cf2,0x35db0a03,0xb71fe04a,0x37bb325b,0xb82edaa3,0x389a3daf,0x3a302f92,0x39582d85,0x38a577fe,0xb97a2596,0xb985b7e4,0xb98270a8,0xb956fb6c,0xb98e5072,0xb9d8dc7b,0xba1e308b,0xba1ad111,0xba1055c6,0xb9cdd09a,0xb978fc87, -0xb8c2950e,0xb83c9b46,0x36d6b7da,0x384aeadd,0x380dedb8,0x3726ab89,0xb713f91e,0xb7c19a0a,0x36e935b7,0x36887e0d,0x35edb243,0x3640f307,0x368e6e6f,0x3658fb69,0x366da749,0x366a7430,0x363e5674,0x3738a36f,0xb78d584d,0x37911562,0xb8f37df5,0x38aa5089,0x39767162,0x395324a3,0x39564165, -0x394daa4d,0x38c828cb,0xb8b75641,0xb98b018e,0xb9afd01d,0xb9b8e408,0xb9c07fcd,0xb9bf6db2,0xb9ce4fd1,0xb9edf3f6,0xb9faa8d4,0xba070202,0xb9e9c7cb,0xb9e66e60,0xba006914,0xb9e71139,0xb8d38c26,0x38bc7819,0xb6c193c8,0xb7429ab4,0xb770d465,0xb6be4424,0xb70a6dbd,0xb727b601,0xb68931e9, -0xb76f3f61,0xb6eb83d4,0xb793dbd2,0xb7973e6a,0xb6423a75,0x366d620a,0x386e7533,0xb9816c74,0xb9696bd1,0xb99f449a,0xb9cd5692,0xb9fce5aa,0xb9ecddde,0xb9d70895,0xb9b33464,0xb9b1ef07,0xb9c0ebc4,0xb9d31582,0xb9e33624,0xb9ddd74f,0xb9dfd3e2,0xb9a87212,0xb989df8c,0xb98e8496,0xb95fae23, -0xb8ff22e9,0xb93cb4bc,0xb9881aaa,0xb91e2030,0xb783def3,0x384a4920,0x369dac1b,0x369962de,0x37f04f79,0x36aadd70,0x37eadd64,0x3801958f,0x3788476c,0x38279de3,0x37cda2fb,0xb469a76f,0xb8716bbd,0xb8ae6ed8,0xb98725fb,0xb964bc78,0xb95e8395,0xb93eea6f,0xb938965a,0xb94041a6,0xb972f883, -0xb991b1a5,0xb998ba2c,0xb995332c,0xb98fdcc5,0xb98f08db,0xb995a3ed,0xb9a41fd2,0xb9ac7182,0xb9b2ced2,0xb9b7306e,0xb9b43691,0xb9b366a6,0xb9a5831f,0xb98f515e,0xb98de42b,0xb996d091,0xb8efae19,0xb8d23061,0xb8bf01cb,0xb8b1d983,0xb8c2f54a,0xb8c5b4df,0xb8be5301,0xb8d50d0f,0xb8ce64c3, -0xb8d032da,0xb8ebb7be,0xb9964499,0xb98fb50e,0xb9ebaacd,0x38501627,0x380e84a6,0x390ac46c,0x38582453,0x3861d7fe,0x384dbf56,0x3879ea60,0x388b9b8d,0x38a4159d,0x3884d76a,0x3872e7e6,0x384bce2a,0x387d9aa6,0x388284a0,0x38741c5e,0x38786f44,0x3875b894,0x384d700d,0x38666714,0x38375997, -0x38b303ec,0xb8393c2e,0xb92bfd4d,0xb99cec12,0x384c2a6a,0xb87352d0,0xb92648ad,0xb921eebc,0xb9208740,0xb9110148,0xb92298c2,0xb91cd322,0xb90c932f,0xb89ce0f8,0x388702a1,0xb98de187,0xb95b7e4e,0xb9c6603d,0x3793b678,0x388996e6,0x386e06ee,0x382aece3,0x388d139f,0x38c96843,0x39219520, -0x38e2e997,0x38b88475,0x384b48fd,0x388bf790,0x38ada449,0x38b6fb83,0x38d6ad36,0x38bd6338,0x387680b4,0x38699738,0x3892fa57,0x38f6d975,0xb920bfe6,0x37335d4b,0xb81b429a,0x358f9f71,0x386d2852,0xb7b988d1,0x37792ee6,0xb6b617e0,0x37758459,0x35acfbfd,0x38627b98,0x36afaff4,0xb7135a66, -0x3757daeb,0xb76e2e96,0xb7408b14,0xb8408283,0x38cf69e1,0x389e459c,0x38592807,0x3823e02b,0x38b0b935,0x38e4b5a6,0x39580677,0x38fec57e,0x38ca9262,0x380fb44c,0x38c5ee83,0x38e7ede3,0x38c1e956,0x38f2aa5f,0x38cbe667,0x385b24b6,0x381b7d65,0x38caac6c,0x36c1e95f,0xb8e7e432,0x37f17359, -0x37f36b6c,0x378a5fd7,0x36f8271a,0x38001131,0x37559238,0x388a2173,0x37bb7b13,0x3813b8e1,0x376e30a8,0x37c890bd,0x3814e5ef,0x3804da38,0xb797dd00,0x38fbebe8,0xb8a40df7,0xb90ecdb7,0x38f43684,0x37b12615,0x3811a4fa,0x387a9bbf,0x390c924a,0x39a80e4c,0x395138db,0x390c127d,0x3749a8c2, -0x38a4d3e9,0x38fd5c76,0x390cb72a,0x394600a7,0x391a4672,0x385d95a6,0x386b1859,0x38e11531,0x38797e0f,0x376275e6,0x3885b3bb,0x35a243df,0x380986f7,0x365060cb,0x3716835c,0xb5cd093e,0xb74f1485,0xb6f526ae,0xb511007a,0xb68fa411,0x3721d95b,0xb71184c3,0x36e15fe1,0x37cd1485,0x37e9866c, -0x38f1f63c,0xb7cedc77,0x38f1d9c9,0x37a2abea,0x380a9f20,0x3889d5c3,0x390aae43,0x399a2075,0x3935cac9,0x38d80979,0x3789081a,0x38f06495,0x392cdc0b,0x38f067c0,0x3925a94a,0x38f222a2,0x3731d0ce,0x364d1b73,0x38353b16,0x38667619,0xb8ee1b2d,0x3828b828,0xb701e89a,0x375a3bd7,0x361e7d9a, -0x36319783,0x36828fd2,0x37025edf,0x36d5929f,0x361b827a,0x36b44bca,0xb6176ccd,0x37323357,0x370051bf,0x37a4a0d9,0x37592294,0xb87ef57e,0x388e1597,0x3974fccd,0x394c5d12,0x399c8062,0x39bb482e,0x39c924cf,0x3956f53d,0x3a1012a9,0x3a153304,0x39bdd513,0x39879152,0x3934aad0,0x39350cac, -0x39a5646d,0x39c451b1,0x3a2a9911,0x3a0e73a8,0x3a01c78c,0x3968f56f,0xb87533f8,0x38b47a24,0xb7b0109e,0x37b9b3fc,0xb6c11f4a,0x36633a74,0xb617a248,0xb5d81969,0xb5e87f78,0x352b79dc,0xb5202136,0x368c3425,0xb62a06aa,0x377e367c,0xb833a3f6,0x38912c96,0xb79f5d47,0x3940925e,0x39919946, -0x398870fe,0x3992036e,0x3985c77b,0x3929001c,0xb91920b9,0xb77e60a7,0x386327a3,0x39052a63,0x397bda02,0x395f3b7b,0x37fcf90f,0xb88e2396,0xb8f35495,0xb8c977db,0xb918ac6f,0xb8950614,0xb8c02555,0xb7abed77,0x36e47fcb,0x35c3dc5c,0x372165d5,0x35e85ccb,0x365cb9cd,0x35b9c4ed,0x3606dca8, -0x355985e5,0x35ed33ed,0x34c8057f,0x368e725d,0xb6f6358e,0x379875fe,0xb581f36b,0x387cfd63,0xb8179149,0x39265ed0,0x391cab86,0x38d23fe2,0x386f1cb8,0x38d877da,0x392294e2,0x39ac2977,0x39ca6ad2,0x39b842e8,0x393e0774,0x3914a83b,0x38f3448d,0x394375b2,0x3992cca2,0x39694d8d,0x3987619f, -0x391bbb68,0x3944acd1,0x3889ee19,0x36a92701,0x37b237ad,0xb6b8dde4,0x37460997,0x35b19d2d,0x355698fe,0xb4e0ac87,0x35d59bee,0x351191d4,0x35cb3bf8,0xb3dd1b1b,0x365279fa,0xb508e97e,0x37479a87,0xb720a805,0x37b45954,0x36fd18df,0xb906aa53,0xb8363020,0x38b9e4db,0x39d479c0,0x3974f364, -0x39a2193f,0x39e21e9b,0x39a0ba4e,0x397c517f,0x396e7ab7,0x394eca29,0x39423f69,0x3972a7f1,0x39973a97,0x39a9c2dd,0x3993d3e5,0x395b83c5,0x39587359,0x38197866,0xb5ae9104,0x37b9f534,0x35d46094,0x36415821,0x35800805,0x338b09db,0x360480b9,0x35125630,0xb59da4d8,0x36242191,0x33913be5, -0x35d63b42,0xb4f643ba,0xb4307fa0,0x36d27cbc,0x369c7703,0x38315f5a,0xb88b15e7,0xb862641b,0x38da3203,0x3a5fb3b6,0x3a06750f,0x39a5a50c,0xb7a3ae2b,0xb978252d,0xb961c4ff,0x3973071a,0x39a001f3,0x399b3f67,0x3887ea11,0x380b3361,0x36a59ceb,0x3731b717,0x37fd2dab,0x36c9b878,0xb725ae95, -0x37c4dd5a,0x3714fa26,0x35ec3c0c,0x36c0f2f0,0x360c2187,0x35ec9e95,0x3581bbda,0x36147f56,0x34efdfe2,0x3513e60e,0x331b3ef3,0x3617471e,0x35151e0c,0x373bfdbe,0xb4bd0fa1,0xb744576d,0xb8dd61ac,0xb8d631b2,0x3a549592,0x3a6e05d3,0x3a597a42,0x3a4842d9,0x3a3d0e7e,0x3a196902,0x39b1361b, -0x393860b0,0x38499f6b,0xb8871aa2,0xb84f33af,0xb82f31eb,0xb7d0bf2d,0xb7f64786,0x383ac3e2,0x3761c7b4,0x38ba9093,0x38e748cc,0xb84f3242,0x37f6db08,0xb610a121,0x3619fe32,0xb6402efb,0x352b9be2,0xb611200b,0xb4c1b29b,0xb5adc483,0xb3c4df52,0xb40abe7b,0x3584a296,0x36368dc0,0xb60ead64, -0xb7a81e96,0x384e3b81,0xb90bd85a,0x38a1928c,0x37ff88a2,0xb81585ca,0x38970fb1,0x3841c5f9,0x38242a65,0x38bf2802,0xb70dd55a,0xb82424e7,0xb6ecdd6a,0x3750afd1,0x37da6529,0x37e9252a,0x3887c2a9,0x38ea9b5e,0x38f60bdd,0x3931f831,0x39159210,0x38cbf2d7,0xb7b4d99f,0x38281239,0xb6b50652, -0x3743b490,0x36a18222,0x3632c455,0x36ee6eb3,0x36b779ea,0x36b50b0f,0x368d041c,0x36889b5b,0x36f8a2f1,0xb66f476f,0x379e26f8,0xb5e4b5b3,0x3867ddd0,0xb8dea4f9,0x3912431d,0x39342b15,0x38d24859,0x38078824,0x38304730,0x3897efbd,0x390ab5c7,0x3882d17d,0x3727be1b,0xb86b578b,0xb85e9752, -0xb84749f3,0xb7b0e1d6,0x3735dc87,0x37f02791,0x38313a42,0x3866113c,0x3875c3fb,0x385954e0,0xb7f2673e,0xb7278d8a,0x3791304a,0xb5466a82,0xb5819080,0xb53075f8,0xb68189af,0xb71e7632,0xb66d083f,0xb5d127a6,0xb603fde6,0x360880cb,0x361579b0,0x376ae2e3,0xb79b2c14,0x380f6d96,0xb8267914, -0x391d38ee,0x38f354f6,0x3903954c,0x391afa27,0x390bac53,0x38c3eb02,0x386d6fb8,0x37eed237,0x3785fd6c,0xb626a9a0,0xb7b215d4,0xb84db8f8,0xb8b2a054,0xb8ab8cf4,0xb8b70d0e,0xb8834e45,0xb897a3e8,0xb821fd31,0xb8b4c40a,0x382e6948,0x375cf83c,0x367f5ea3,0x373be0f9,0x374fe925,0x375b2a1e, -0x36b081cf,0x3807edd6,0x36353d0a,0x37c32d9d,0x371cd7fd,0x37765825,0x37c8736e,0xb68edfc2,0x377b2d94,0x37eb87f2,0xb8fffa63,0x35741485,0xb6df0bbe,0xb75a2219,0xb80fd36e,0xb69db2b2,0x37b3e2f8,0x388729c4,0x38237ab2,0x370ea416,0xb79c9f6d,0xb8314353,0xb8697d65,0xb8a3be54,0xb86e06db, -0xb84b1e0a,0xb85a80bc,0xb843d6fc,0xb80cf5d1,0xb837fbc0,0xb8c3dac7,0x37eaf9fb,0x378e870c,0x37a04336,0xb4f1b444,0x36acfb5e,0xb6f52d88,0x3731811f,0xb7870d7a,0xb6815dd7,0x375193eb,0xb7e1ac60,0x3724c46f,0x36967e09,0xb805eb57,0x385f5624,0xb84b06b6,0x37e6d171,0x37442106,0x37bda14c, -0x37e7a44a,0x37f70b68,0x3782ee9d,0x370c0522,0xb409d384,0x35f10cc9,0x358fe6aa,0xb674b2e6,0xb73eae95,0xb7bcd1f9,0xb7c3e182,0xb7d4b736,0xb7d55fef,0xb7b6a14d,0xb7c8df58,0x35f90a3d,0xb878ca61,0xb90c7077,0xb94653e7,0x3829f394,0xb7c43984,0xb8a0458b,0xb8adaac4,0xb8988bb1,0xb88acac9, -0xb8994ce0,0xb887cfe6,0xb86adbe5,0xb763ed3b,0x382ad059,0xb936931d,0xb906f18d,0xb7a4f48e, +const uint32_t defaultHRIR_rom_AlphaL32[470 * 86] = { +0x3e8066b7,0x3d6b6818,0x3e9b1d76,0x3e6eb9f6,0x3e80f9a1,0x3e7fc18c,0x3e872602,0x3e89dc1c,0x3e8bfd52,0x3e879b23,0x3e84b0af,0x3e814fd4,0x3e7d129a,0x3e789b9a,0x3e7672bf,0x3e74293d,0x3e71fca2,0x3e70cc6c,0x3e6dc4f6,0x3e5e0778,0x3e8d7812,0x3d3ed63e,0xbd3edf1a,0xbe2f4824,0x3dc2aa83, +0xbd25c67f,0xbe208217,0xbe25cbab,0xbe20144f,0xbe03eb2f,0xbe21c0e0,0xbe2920f9,0xbe21eb2a,0xbd20e547,0x3e036d5d,0xbe231008,0xbd6c7998,0xbdafc7d5,0x3e88ca90,0x3e9511fa,0x3e95b010,0x3e9c8165,0x3eb08521,0x3eb9821a,0x3ebae5d7,0x3eb09cec,0x3ea5f616,0x3e9aa337,0x3e91d0b0,0x3e8c628e, +0x3e8a3da9,0x3e87695d,0x3e839cc8,0x3e833683,0x3e742754,0x3e790812,0x3e55b244,0xbd6373eb,0x3df04bdf,0x3dbe5205,0x3dad30a9,0x3d57c4d3,0x3ddfaa8d,0x3dfadb9c,0x3de1a54f,0x3d6bbfb7,0x3df7a8a4,0x3e2cd1e2,0x3dda7a9a,0x3dff2189,0x3d8722f0,0x3d6d82e4,0x3e45eb79,0x3d7b915d,0x3e6c7ef4, +0x3eb11802,0x3ea46d18,0x3eb4f88f,0x3eda7dc2,0x3eeb9896,0x3ef00e47,0x3edcb4f3,0x3ec877a9,0x3eb6c7e1,0x3ea61a3d,0x3e9a4b89,0x3e94e56c,0x3e8e8542,0x3e87360a,0x3e8694a2,0x3e654023,0x3e76c045,0x3e0a62a3,0x3d0a16bb,0x3d30f600,0x3d49a008,0x3d646c2f,0x39e8faf2,0x3d718e6c,0xbb857593, +0x3dcbf7b6,0xbca00739,0x3da4897d,0xbb863e7d,0x3d1adf88,0x3d26aa76,0x3d55c4b0,0x3cd473fe,0x3deaa24d,0x3c8d651d,0x3e633011,0x3eb88a9a,0x3eb42f74,0x3ed034a5,0x3f06dd52,0x3f15143a,0x3f16f6ef,0x3f055563,0x3ee7e7c8,0x3ec78e27,0x3eac94ca,0x3e9c4058,0x3e97995c,0x3e8e62c6,0x3e84ce8f, +0x3e83cb85,0x3e5ea884,0x3e53af3d,0x3de973c0,0xbc048f3c,0x3d87c41c,0xbc5690e4,0x3cc704c4,0x3cb97262,0x3ca46547,0x3bc30305,0xba0460d2,0x3d081064,0x3b9a75f3,0x3d055323,0x3d1480fb,0x3d312dd0,0x3cdb67de,0x3d253734,0x3dde5e87,0x3d7d5d30,0x3eb07b3d,0x3ef67b29,0x3ef1d5fc,0x3f008cb7, +0x3f0fd78b,0x3f1a55af,0x3f2149a3,0x3f23b537,0x3f1daa0b,0x3f07c88b,0x3f06710f,0x3ef7fd0d,0x3ed55b26,0x3ece9bdd,0x3ebb640b,0x3ea9e961,0x3e80869d,0x3e7875ef,0x3e0ad375,0xbc01c760,0x3d87824d,0x3ca33f6d,0x3c9a29a5,0xbb34429b,0x3bd9ba9a,0x3c028aa6,0x3c938261,0x3cdcc0fa,0x3c71b331, +0x3cf2a6ae,0x3c625d4e,0x3d7a24df,0x3cab8465,0x3d879f2a,0x3d8ba412,0xbc720628,0x3e57c661,0x3f04dd83,0x3efb1862,0x3f17204e,0x3f231071,0x3f279f82,0x3f201890,0x3f17ad80,0x3f0bcb50,0x3ef7a24c,0x3eeceed0,0x3eeb7f3b,0x3ef503b7,0x3ee63d86,0x3ed35c35,0x3ec9c5b0,0x3e96a713,0x3e90b00e, +0x3e088bca,0x3c5a8ae1,0x3d1e6570,0x3cb3026c,0x3d6b9135,0x3d3345cf,0x3c62038f,0x3c9ff4e9,0x3c484df1,0x3c1251a8,0x3c679b68,0x3c29eab7,0x3d4699cc,0x3cd10a29,0x3ddc9243,0x3d856a5a,0x3e06aed5,0xbd15bc1b,0x3e9003ef,0x3f41de0c,0x3f4c5a58,0x3f74e519,0x3f51c535,0x3f3e12e2,0x3f27a72b, +0x3f0e4542,0x3f086567,0x3f1daae0,0x3f30a24b,0x3f36cc47,0x3f30a1f5,0x3f17ce56,0x3ef90da9,0x3ec9a440,0x3e97a801,0x3e9cfcfe,0x3e025fec,0x3d663dbe,0x3d9fba4c,0x3c3726d8,0x3cf69635,0x3ce6d3d5,0x3c61b7ed,0x3c3e56ec,0x3c9d2142,0x3ce09430,0x3cbc9dfb,0x3c4e1308,0x3c274fa6,0xbd56dd86, +0x3da4f3a2,0xbd8601b2,0x3e0a6d38,0xbaf56263,0x3ef4ad4f,0x3f674a82,0x3f5689cd,0x3f566148,0x3f3a387a,0x3f2e18aa,0x3f1ffe20,0x3f242372,0x3f2539a6,0x3f21119b,0x3f1e2856,0x3f1691f6,0x3f0914d3,0x3ef7da13,0x3ed60895,0x3eb6a440,0x3e8fa95c,0x3e8fcd72,0x3e1b0613,0xbcf4d5b9,0x3d695bec, +0x3d37b250,0x3d156f6e,0x3d010032,0x3c595841,0x3d1470fa,0x3b186edd,0x3d416d07,0x3d026cbd,0x3c772f08,0x3d9a5eb0,0x3c630b40,0x3dfe53d1,0x3be5a3b0,0x3e097457,0x3dabfc72,0x3f07623f,0x3f474961,0x3f33e3f6,0x3f3204c2,0x3f16f9da,0x3f0c949a,0x3f0ef01b,0x3f060e8b,0x3f0d5766,0x3f1f2bcd, +0x3f14bcb5,0x3f080d8a,0x3ef27b5d,0x3ec3651e,0x3e9c3b31,0x3e87b7c5,0x3e6fdbff,0x3e88be13,0x3e3cbc18,0x3abad8ac,0x3dcefee4,0x3cad7ef0,0x3cb47c93,0x3d328723,0x3d1c4f2d,0x3ca7612c,0x3d24dea7,0xbc79506c,0x3cf344a3,0x3cf0e539,0x3d5bddbb,0x3d64178b,0x3d2ec65e,0x3cf25be8,0x3e6a7d72, +0xbdea8686,0x3eb295e7,0x3f03d73c,0x3ed6d07f,0x3edbab26,0x3ed77838,0x3eda89da,0x3edd34c9,0x3ec7664b,0x3eb13389,0x3ea8166f,0x3eb0f721,0x3eba14a4,0x3eb964c1,0x3eb46867,0x3ea3290d,0x3e8fe28e,0x3e7d7b97,0x3e908c06,0x3e057cd2,0x3a8931f3,0x3de42939,0x3c99986e,0x3d601e81,0x3d49c101, +0x3cea9bc5,0x3cc2fede,0x3bc78070,0x3db7f6e1,0x3d1dfc9f,0x3d172146,0x3d8269cd,0x3d1984b0,0x3d9adbf2,0x3d8eb093,0x3e212dcd,0x3de120f1,0x3e6cc823,0x3eb25260,0x3ea2f465,0x3ebdceed,0x3ec06589,0x3ec97fb9,0x3ecf3cd8,0x3ecbece9,0x3eca9fef,0x3ec5f322,0x3eb0c7ec,0x3e9abc11,0x3e806283, +0x3e74313f,0x3e5c9314,0x3e532d6c,0x3e3e5fd6,0x3e76fa36,0x3e24dbc8,0x3ce056e7,0x3d282d6d,0x3d2e1613,0x3d579fe2,0xbc7a2bd1,0x3d5a2b73,0xbcb1ba50,0x3de17315,0xbd422301,0x3d9c7c6b,0xbc6b6825,0x3d085fd3,0x3d3fd4c0,0x3d3ead8e,0x3cb8e5c5,0x3e0446d1,0xbe062617,0x3e7770be,0x3e8d0a0d, +0x3e89985f,0x3e94582f,0x3e97fa1d,0x3e9fbfb8,0x3ea79bd7,0x3e9d540e,0x3e93506b,0x3e8acf46,0x3e7f722e,0x3e6c3f43,0x3e4c0281,0x3e5034ab,0x3e4e782c,0x3e537829,0x3e4aab3c,0x3e5778bc,0x3e3fc463,0xbd8d884e,0x3e0055ef,0x3dd3b7ad,0x3dc96648,0x3d8316fe,0x3e0919e5,0x3e1d1234,0x3e01f22e, +0x3d8427ee,0x3e10c913,0x3e420124,0x3de684ca,0x3e071b9d,0x3d91597d,0x3d827016,0x3e3fbb2b,0x3d694f59,0x3eac6fab,0x3e83ba52,0x3e8d85d2,0x3e8ef9ff,0x3e915d57,0x3e934077,0x3e9762f6,0x3e917c53,0x3e8de23f,0x3e899945,0x3e86b34d,0x3e83fbd0,0x3e7fdb4c,0x3e81cf34,0x3e81730d,0x3e81a546, +0x3e8195b2,0x3e780980,0x3ea09d25,0x3d1a0e40,0xbd8be2d3,0xbe4dbb8f,0x3dc9df9e,0xbd79e4da,0xbe450e4c,0xbe4d6316,0xbe42e4f4,0xbe1f63e1,0xbe4400b4,0xbe48119a,0xbe3bb17c,0xbd7aa61d,0x3e045d52,0xbe3e57c4,0xbd9a3f39,0x3e9b4cf1,0x3eee9e16,0x3f030144,0x3ed73574,0x3ee16cfa,0x3ee8c036, +0x3eef1ab7,0x3ef48dac,0x3ef6e650,0x3ef98874,0x3ef2c530,0x3eeedef9,0x3eeb61bb,0x3ee8196f,0x3ee4a773,0x3ee08288,0x3eddbb0f,0x3edb06e7,0x3ed87778,0x3ed5f9e6,0x3ed0e1f3,0x3ecb0cb0,0x3ef64e1c,0x3eed28ce,0x3ea9fc2d,0x3ef07717,0x3eec3d3d,0x3eac30d8,0x3eb0d6a7,0x3eb0e123,0x3eb1bc59, +0x3eb99280,0x3ebddc5d,0x3ebfca61,0x3ef250a9,0x3ef5c522,0x3eb9c652,0x3efd16a3,0x3f016b8c,0x3f06021c,0x3f01b918,0x3f0e0082,0x3f15d17b,0x3f1fac39,0x3f2343cd,0x3f238f79,0x3f19d4b6,0x3f132abe,0x3f0e8560,0x3f09d3d1,0x3f04846f,0x3efd7419,0x3ef44372,0x3eec80a2,0x3ee55438,0x3ede3a7d, +0x3ecf727f,0x3ed8634d,0x3ecb1042,0x3ec43029,0x3eccf687,0x3eba1983,0x3eb592a3,0x3ebcdd2d,0x3eb9072f,0x3ec54244,0x3ec5f459,0x3ec48de5,0x3ebbc446,0x3ec35407,0x3ecf234c,0x3ed51acb,0x3ee2335a,0x3ee8f666,0x3f01c8a9,0x3f06d4bc,0x3f06160e,0x3f1e8c07,0x3f3092c8,0x3f45e774,0x3f4c0e61, +0x3f4e85c6,0x3f3da364,0x3f3065a4,0x3f26d964,0x3f1d4e80,0x3f14a1fa,0x3f099d6c,0x3f01742c,0x3ef304a3,0x3ee52432,0x3ed31727,0x3eba4751,0x3eb34066,0x3ead50a1,0x3e912b91,0x3e9310e0,0x3e85214d,0x3e6b409f,0x3e754d02,0x3e591c09,0x3e70f95c,0x3e77253c,0x3e6f5db5,0x3e82684d,0x3e8ff4a6, +0x3e9c31a8,0x3eaa226b,0x3ec0b5cc,0x3edede30,0x3eefcdfa,0x3f0e4750,0x3f0eb5f3,0x3f2e5173,0x3f4df71a,0x3f722f1a,0x3f7decfc,0x3f7b9345,0x3f5ac43e,0x3f43169d,0x3f34e6a7,0x3f28444e,0x3f1876ce,0x3f08792c,0x3ef8f443,0x3ee253cd,0x3ece61ec,0x3eb38470,0x3e9619b0,0x3e86cb8f,0x3e480e1f, +0x3e28cbda,0x3de4d2a0,0x3dca43fc,0x3d977921,0x3d69dafd,0x3d583134,0x3d28eb55,0x3d9151da,0x3d93e8c6,0x3dd33aab,0x3e133273,0x3e438e94,0x3e7fa87d,0x3e867527,0x3eb98a54,0x3f236f02,0x3f1c5950,0x3f31d7d7,0x3f61055e,0x3f82c178,0x3f85e09b,0x3f8c9572,0x3f94ef2e,0x3f9bf74b,0x3f97d0b2, +0x3f827fea,0x3f7d6850,0x3f724ae8,0x3f6cbab8,0x3f546c6a,0x3f4220db,0x3f32fe62,0x3f1acf75,0x3ef84e58,0x3ec3440b,0x3e89d64c,0x3e59a332,0x3e32b8c6,0x3dfd62f3,0x3dbcb2e9,0x3d86f625,0x3d86b548,0x3d982276,0x3ddd1a24,0x3dd8d7e1,0x3e11c04b,0x3e39c25f,0x3e6a2af2,0x3e99e8f9,0x3eb3cdb5, +0x3efe137b,0x3f30cea3,0x3f51e380,0x3f6b96dc,0x3f8d4c03,0x3f973ec2,0x3f9c7239,0x3fa38e9a,0x3fa9649a,0x3fb256d2,0x3faeb3d7,0x3fa13168,0x3f9e3754,0x3f935723,0x3f840c8c,0x3f652c8b,0x3f4602c7,0x3f2c3e51,0x3f189919,0x3f053a5b,0x3ee58da7,0x3ec20ac0,0x3e952ad8,0x3e749a8f,0x3e3042f7, +0x3e074d74,0x3dd26c18,0x3dbac4bd,0x3dbf58c1,0x3dbfb9ee,0x3df3eb92,0x3e07f77a,0x3e55a8b4,0x3e8301c5,0x3eb9c412,0x3ee4f470,0x3f14e020,0x3f51849f,0x3f8457eb,0x3f6af469,0x3f773163,0x3f55cec2,0x3f76a99b,0x3f8328ad,0x3f92e379,0x3fa036e8,0x3fa8ea7f,0x3fa47930,0x3f8eeb8c,0x3f73fcbe, +0x3f50a11b,0x3f399f73,0x3f2a4d1b,0x3f24c36e,0x3f0bdd75,0x3ee27b64,0x3ed62e7b,0x3eca4816,0x3ea27ac9,0x3e9bf55a,0x3e6ac309,0x3e4024a1,0x3e22ea67,0x3e02c6fe,0x3e0c3931,0x3e4c4945,0x3e0def24,0x3e22b5ef,0x3e49a5ea,0x3e904a8f,0x3ed40608,0x3f0cffe1,0x3f16bbfe,0x3f68a8e2,0x3f64523f, +0x3f1e6703,0x3f418864,0x3f230910,0x3f6293d6,0x3f895a6c,0x3fa58157,0x3fa0ab48,0x3f98df78,0x3f892c12,0x3f840abf,0x3f769c9f,0x3f5d33dd,0x3f4c3b14,0x3f33b647,0x3f0f2086,0x3efa57eb,0x3ed5ef06,0x3ee7353f,0x3ec929b7,0x3ebbb525,0x3eac1ffa,0x3e84fddb,0x3e64efcd,0x3e2d1e07,0x3e15f41e, +0x3e1ce506,0x3eae1e6b,0x3e517a68,0x3e330c07,0x3e6760d0,0x3e805c6c,0x3ebd480e,0x3ee1e498,0x3f136334,0x3f57aa05,0x3f4b30da,0x3f441d2e,0x3f738c8b,0x3f711f2c,0x3f8bc1af,0x3f93ee8d,0x3f9e1c4b,0x3f97043c,0x3f90ed0b,0x3f85eead,0x3f758348,0x3f5e72a0,0x3f4b37a1,0x3f2e42d5,0x3f1c56c2, +0x3f0baa15,0x3f18e263,0x3f140347,0x3f156e96,0x3ee453f4,0x3ee0880a,0x3ea8021d,0x3e961ae7,0x3e986a8c,0x3e6bee36,0x3e3674e2,0x3e58de7c,0x3e50a50b,0x3e7b9a3c,0x3e8ceb57,0x3eabef64,0x3ebc8b4f,0x3ec91528,0x3ef4a2fc,0x3f267553,0x3f59f2ec,0x3f5664c0,0x3f5d1638,0x3f781a06,0x3f7c0db8, +0x3f8b6a97,0x3f8fe73b,0x3f907abc,0x3f9291e8,0x3f9086fe,0x3f8a3f85,0x3f78535f,0x3f5b0bf3,0x3f40c99a,0x3f2a5932,0x3f1c60b5,0x3f15e3ce,0x3f2584a3,0x3f2a9400,0x3f17802c,0x3f035287,0x3f0103fc,0x3ee1e7c6,0x3ec40a17,0x3e984507,0x3e6e6f66,0x3e6975e4,0x3e55bf94,0x3eaac8a9,0x3e8edc61, +0x3e968840,0x3eaf13f6,0x3ec24ad4,0x3ef1d853,0x3f047b2a,0x3f2dc9c6,0x3f2d7d13,0x3f503603,0x3f5bec8f,0x3f69376c,0x3f74fbc2,0x3f7b452b,0x3f7f9247,0x3f82b19e,0x3f7a6dad,0x3f6fc079,0x3f65a251,0x3f5b3888,0x3f514345,0x3f43e20c,0x3f3eb0b1,0x3f37a250,0x3f2d5b93,0x3f25c688,0x3f22fd26, +0x3f1ba479,0x3f085b6f,0x3ef5ffd2,0x3ee5051a,0x3ed73f67,0x3ea72a7e,0x3ec8e6a2,0x3e94dd99,0x3ed5a974,0x3ea3a51b,0x3eb9d536,0x3ea44b3e,0x3eab8c2e,0x3ed3d229,0x3eef9489,0x3f0646bf,0x3f2204e8,0x3f0d625a,0x3f4b9ca8,0x3f434f5f,0x3f49d5e9,0x3f4d1a72,0x3f519fa1,0x3f5607ff,0x3f5cd835, +0x3f5873e4,0x3f5697ac,0x3f53ea82,0x3f500148,0x3f4bdc98,0x3f46ec28,0x3f415504,0x3f3b8fb6,0x3f36e36f,0x3f33bba2,0x3f2dcffc,0x3f2f0236,0x3eeb10f5,0x3f16d371,0x3f1d5d64,0x3f13b6e3,0x3f0b7efa,0x3f183ec9,0x3f1949a5,0x3f21d0d5,0x3f1644c9,0x3f21b884,0x3f1e1560,0x3f134a81,0x3f1dd2e0, +0x3f18096d,0x3f1fb510,0x3f358e7c,0x3f39caf2,0x3f3d7efd,0x3f363328,0x3f3b5f32,0x3f3b428b,0x3f3d38db,0x3f3e36e5,0x3f402988,0x3f3dc6ba,0x3f3c2f36,0x3f3a652e,0x3f391179,0x3f37ca16,0x3f36c0bb,0x3f35fcf8,0x3f3578ba,0x3f342766,0x3f3362bf,0x3f2e4fae,0x3f3629f8,0x3f335fd6,0x3f1f8fda, +0x3eb07469,0x3f37febf,0x3f20cbbe,0x3ec1a228,0x3ec45ad1,0x3ec240b9,0x3ecbdc83,0x3ec9ea3a,0x3ecdc26c,0x3ed0bddb,0x3f22977d,0x3f3f9c3e,0x3ec3e302,0x3f221f41,0x3f4afa25,0xbd4a6add,0x3d1c19f7,0xbdd0c11a,0xbd37a103,0xbd8b479b,0xbd87ffcc,0xbda0ca82,0xbdaa95fb,0xbdc35e76,0xbd99eff8, +0xbd85c2a1,0xbd62e56e,0xbd558982,0xbd4c2d23,0xbd4bfc23,0xbd58ae77,0xbd5aa2cb,0xbd586a6f,0xbd460f60,0xbce5b559,0xbd9d89f3,0x3d759b0a,0x3e2e2dcc,0x3edb825b,0x3babf80e,0x3e1a834f,0x3ecaa5f5,0x3ec85c14,0x3ec487da,0x3eb8d7a7,0x3ebd4fbf,0x3ebe95b0,0x3ebafdbe,0x3e15839d,0xbcf52bee, +0x3eceaa98,0x3e2a93bb,0x3e810f03,0xbdac1ea1,0xbd9ecab3,0xbdce0449,0xbdeb6134,0xbe1ef6c4,0xbe2ed5e8,0xbe405fb5,0xbe03525d,0xbdbabaf0,0xbd7d70dc,0xbd481bbc,0xbd33c758,0xbd4501e3,0xbd712b0b,0xbd757896,0xbd6cb2d1,0xbd1efbf0,0xbcc47ae4,0xbcadfea0,0x3e7598bd,0x3d8c5cf5,0x3d518bb5, +0x3db02ded,0x3de227ff,0x3cdcac46,0x3cc21102,0x3c453943,0x3d8222de,0x39f805bf,0xbcb22b1c,0x3d40edc0,0x3cf0451c,0x3dc8fdeb,0x3db7f7d5,0xbcc9102f,0x3d88daf8,0xbc5511f2,0xbdb77795,0xbdc82646,0xbe0fe33c,0xbe75d7a1,0xbe8a6fe0,0xbea2c987,0xbe487aa4,0xbde68746,0xbd7da812,0xbd1b6c05, +0xbd126dfe,0xbd33e94e,0xbd888641,0xbd91f442,0xbd8cd195,0xbcc5badc,0xbc2bb233,0x3d89b6cd,0x3e021237,0x3e1115ac,0x3dd8009f,0x3dbec8a9,0x3e0eba0b,0x3d8be20a,0x3e138dcf,0x3d286069,0x3e0a89dc,0x3d42502e,0x3dd93846,0x3d97287a,0x3dc8b55b,0x3dceee9b,0x3dd1a12b,0x3cc352d3,0x3e162f2a, +0x3d01f314,0xbd5d44af,0xbdd0e1de,0xbe4867ce,0xbebed527,0xbedfdf53,0xbef75a46,0xbe8336a4,0xbdd4475c,0xbc8083bb,0x3c716e9e,0x3ce14cbe,0xbb1316f7,0xbd35c65f,0xbd5e36f2,0xbd533726,0xb9a1ea6b,0x3d25363f,0x3dcab891,0x3e30cb93,0x3de1d412,0x3e185abb,0x3dc1b024,0x3d9dd02c,0x3d8af352, +0x3d89b64e,0x3d9a3ddb,0x3d51d1d2,0x3d74558b,0x3d35f9f2,0x3d732c54,0x3db6999a,0x3dd257b8,0x3de17de4,0x3d53172c,0xbcb40f14,0xbe696590,0xbe87b8a0,0xbe9b703d,0xbeb4e084,0xbeb8cac8,0xbec39894,0xbee558b2,0xbef2fb35,0xbed46076,0xbde0b0e7,0xbe5295b9,0xbe64b139,0xbe5b04e9,0xbe6e4858, +0xbe639c55,0xbe4dd5af,0xbdb02be8,0xbd064bb3,0x3da28b48,0x3e6684aa,0x3e1298b5,0x3dfbd66d,0x3dd6c858,0x3dcd7a9a,0x3da5ef86,0x3db056b8,0x3d94d8a6,0x3d581925,0x3d1e3a25,0x3cd8a5d1,0x3d5b7327,0x3cd37189,0x3d676760,0x3d353ba0,0x3d1298b3,0x3e78f2c0,0xbdf415f8,0xbf18e9ec,0xbf2143b1, +0xbf085f46,0xbee87ac1,0xbee741e8,0xbf07e353,0xbf09c7e1,0xbf029549,0xbec95663,0xbef88108,0xbf08c2b5,0xbf121e38,0xbef8bb7e,0xbec0aa80,0xbe92e856,0xbdd083e8,0xbd2fab53,0x3db361ae,0x3e3ebba8,0x3e11da70,0x3dd6aa03,0x3d5011d0,0x3d04acc8,0x3d312afc,0x3d1a8deb,0x3d8623bb,0x3e0518cb, +0x3dd695a1,0x3e0fcc61,0x3e17a6c8,0x3e337113,0x3dbc838c,0x3e370592,0x3d949422,0x3ddeae1f,0xbec8e353,0xbf11c036,0xbedd8e87,0xbe2ae05b,0xbdbbfe62,0xbd7b2c58,0xbe828e05,0xbe8d6328,0xbee13488,0xbf3084ab,0xbf465db4,0xbf433b06,0xbf2d362f,0xbf0f19af,0xbee4c74a,0xbebca73e,0xbe39c3f8, +0xbdb1c1c1,0x3d9d591a,0x3de073ff,0x3e08bb07,0x3e361b3f,0x3df1f628,0x3df1c095,0x3e237074,0x3e39e265,0x3e2ff987,0x3e61a601,0x3e0812b5,0x3e08bb0a,0x3e1f19ba,0x3e6c325e,0x3d892f7c,0x3e2ff5a7,0x3d567090,0xbb83e0ce,0xbe8e68f5,0xbdeb896e,0x3d1ae272,0x3f140ea2,0x3e85e8ae,0x3ca6f1a4, +0xbe8a31e6,0xbea5de10,0xbedb49e5,0xbeef8fcc,0xbf13b042,0xbf1b9f98,0xbf0b9075,0xbefac943,0xbebf5529,0xbe5fec76,0xbddc4fd2,0xbd4d3058,0x3d137181,0x3e7da2dd,0x3e38dac8,0x3e34b74c,0x3e2f4684,0x3e0e8d52,0x3e1bccc8,0x3d9e9b3e,0x3e1c5703,0x3e99b23f,0x3e2103d9,0x3e0cd4bb,0x3de38122, +0x3e3ff1e0,0x3dc09334,0x3e579b13,0x3dfc3791,0xbace7923,0xbe75f4db,0xbdf36b12,0xbd8c6b78,0x3da39388,0x3d902bd6,0x3d049b5b,0xbe4eb13f,0xbe85989c,0xbecdd59a,0xbefe4d0c,0xbefbc641,0xbee4558a,0xbec74132,0xbe7f8a7a,0xbe1a47c7,0xbdc271df,0xbdbda744,0xbdab95bc,0x3cfaf862,0x3e9d8c7b, +0x3e289386,0x3e7f9372,0x3e741f48,0x3e295471,0x3e3c3fde,0x3e39b62f,0x3e30dcc1,0x3e9f8cd0,0x3e3edead,0x3e287e40,0x3dd9d0e9,0x3df63ed4,0x3e247ac3,0x3e3cd196,0xbd7f56de,0x3e86b132,0xbd8b0be8,0xbe09ebfe,0xbc955876,0x3daa8801,0x3d1d6349,0xbc661a34,0xbdfb0817,0xbe4edfa9,0xbe71c613, +0xbe7dd60a,0xbe8b464a,0xbe7ede5e,0xbe4396ea,0xbe0d56a7,0xbda0cc1d,0xbd351d37,0xbc82ecc6,0xbdb1118f,0x3de945f0,0x3ea2491e,0x3e080827,0x3e74da75,0x3e3305be,0x3e47ca64,0x3e661b19,0x3e683ec8,0x3e89d542,0x3e06ddb3,0x3e7570db,0x3e62cabe,0x3e06519e,0x3e3f46e3,0x3e098ebd,0x3e3c9a4b, +0x3d48f562,0x3e99584a,0x3db2021e,0xbc343751,0x3d8baeef,0x3d83b4de,0xbc67c766,0xbd9c4c1b,0xbdf28b8a,0xbdfeacc2,0xbe07cb95,0xbe0ca0c4,0xbdb48720,0xbd42d534,0x3bc7e296,0x3cd9a837,0x3d8a6e09,0x3dcb512a,0x3dd53454,0x3bf62249,0x3dae9d6e,0x3e870af2,0x3e817471,0x3e762d50,0x3e657e2b, +0x3eb1618d,0x3e4a9ac7,0x3eb40b22,0x3de81c4c,0x3eae78e3,0x3e42112a,0x3eacd0bd,0x3e8e44fe,0x3e92d35b,0x3e98b9b3,0x3eb69390,0x3e6c18bc,0x3f28413a,0x3ccfaf0b,0x3d1217c7,0x3d29484f,0x3d057bc4,0x3d2711b9,0x3d332602,0x3d16c346,0x3d788cde,0x3da69be5,0x3dc77b61,0x3e014d74,0x3e1d364b, +0x3e4c2051,0x3e3aa03f,0x3e2cb31c,0x3e18562f,0x3e0b86ba,0x3de251ab,0x3dd36310,0x3f13f63c,0x3e4d9a75,0x3e381c59,0x3e4e67de,0x3e71fb72,0x3d99badc,0x3d845037,0x3d9b6cfb,0x3e4720c5,0x3d9edbd2,0x3d02944b,0x3e26b082,0x3e14a6c3,0x3e8e85be,0x3e92b0b1,0x3db9719c,0x3e6db8b0,0xbe092675, +0xbb4c76f7,0xbd0f2888,0xbd052e11,0xbd0380e2,0xbcfc88a4,0xbcff5f9c,0xbc7fff17,0xbb19bcce,0x3c5578e4,0x3cb1fc5a,0x3cefd123,0x3d309a99,0x3cc799aa,0x3c71577c,0x3ba45d91,0xbb354e12,0x3c7f6a54,0xbde36311,0x3e75a2fc,0x3ee0ee85,0x3f580f9e,0x3deedadf,0x3eccacdf,0x3f467add,0x3f48f0c5, +0x3f46757b,0x3f396a7c,0x3f44bb18,0x3f462ce6,0x3f40cf39,0x3ed1cf6e,0x3d942b22,0x3f534e86,0x3ef23caf,0xbd7c2e50,0x3dea5fec,0x3d3a52ea,0x3e239fd7,0x3dead300,0x3df87902,0x3de05d08,0x3dee513d,0x3debcb26,0x3de48135,0x3dc805e7,0x3db6aeb1,0x3dab49ca,0x3dabdc9e,0x3db0ac79,0x3dc01732, +0x3dc7efd3,0x3dd22711,0x3ddbfc7c,0x3de3cb1b,0x3dd7fe04,0x3e08b18e,0x3d0a8609,0xbcd37735,0xbdf37c53,0x3d7626d8,0xbca1d410,0xbde07041,0xbddd6112,0xbdd71374,0xbdbc67bb,0xbdde8dd8,0xbde9cea7,0xbde127eb,0xbcb2f4f4,0x3da61915,0xbdfc8ac4,0xbd0721ad,0xbd6fae37,0x3e22c7e6,0x3e225661, +0x3e1c2649,0x3e09adde,0x3e12c8d0,0x3e04cbfb,0x3df0a44f,0x3db3b7ee,0x3d9308ff,0x3d83d77f,0x3d83446d,0x3d9712b1,0x3dc5d8cd,0x3ddc2487,0x3df28f3a,0x3e02a773,0x3e087ae5,0x3e0b8f8c,0x3dfedea4,0xbc4ada87,0x3d902953,0x3d850f47,0x3d635bd1,0x3d316b14,0x3d9242b7,0x3daba994,0x3dabf5a8, +0x3d7551b6,0x3daf4bf9,0x3dd148ca,0x3d892714,0x3d8da442,0x3d06b1a2,0x3d17443d,0x3dfdca72,0x3de9999b,0x3e429841,0x3e74bb02,0x3e3e490a,0x3e1245c9,0x3e2d24ff,0x3e1dc6d7,0x3e06c04f,0x3d5ce182,0xba4a1511,0xbc65cd0a,0xbc822e39,0x3ac2f5eb,0x3d30a563,0x3d893762,0x3dc7564f,0x3df6ee7d, +0x3e0a9cda,0x3e17faab,0x3de22bd0,0x3d86b1b9,0x3d7464ec,0x3d5fb39e,0x3d8bc66c,0x3d41b5f2,0x3d73fb3b,0x3d40f313,0x3dcc810c,0x3d50dd4f,0x3da4a428,0x3d092591,0x3d78db90,0x3d3daa31,0x3d7a6cb7,0x3d711bb5,0x3e067db6,0x3de74a1b,0x3e4b6a56,0x3e83fa51,0x3e6436b6,0x3e215d6b,0x3e2c26f0, +0x3e08feb1,0x3de0fc77,0x3cd14830,0xbc856b7f,0xbcaa30a7,0xbbced3ee,0x3ca4969f,0x3db62b9f,0x3df405b2,0x3e15f7dd,0x3e2bf3b4,0x3e3a3204,0x3e36afdc,0x3e15e4b7,0x3dc6be16,0x3dba2f62,0x3d894b78,0x3da03d27,0x3da97822,0x3d86debe,0x3d902d7b,0x3d86fecc,0x3dc0a307,0x3d85c370,0x3d98b713, +0x3da90277,0x3d6cd87e,0x3d56d3d8,0x3dab2875,0x3e4343ee,0x3e980464,0x3f2d1c1b,0x3f2bb99c,0x3f09d27b,0x3ef4feb1,0x3eef63bc,0x3ebe6b3a,0x3e8825b3,0xbcae3d3e,0xbe74917e,0xbef92005,0xbed9bda7,0xbec90583,0xbebf55e5,0xbe8b5cbe,0xbe22c59d,0xbd48a142,0x3c2e9783,0x3d8d13b6,0x3d5e0419, +0x3cdfd2cf,0x3d851005,0x3da5af03,0x3d7368da,0x3d3487a1,0x3d416769,0x3d812036,0x3d96141c,0x3d94becd,0x3d8675c0,0x3dc76695,0x3df0f86a,0x3e64fb14,0x3e63f237,0x3e86f5d8,0x3e859bc6,0xbca58623,0x3ec4c75d,0x3f74d398,0x3f62735d,0x3f3242b4,0x3edd4ea5,0x3e7fe2a1,0x3e8145e5,0xbcdc4af7, +0xbe0f3cd0,0xbe6dfdac,0xbe1e890a,0xbd240437,0x3dfec6e5,0x3e5397c7,0x3e7085ea,0x3e72fa4b,0x3e385bae,0x3e359903,0x3dfbda14,0x3c30ba29,0x3cc1d850,0x3d18f61c,0x3da8595b,0x3dab90d6,0x3d1fc19a,0x3d86b59c,0x3d9348c6,0x3dea0778,0x3dd73dcb,0x3dcd6edb,0x3dd55e96,0x3d8a5e0e,0x3e153bbe, +0x3daa440c,0x3e4c2703,0x3e2482f6,0x3f24d5f5,0x3f5c069d,0x3f190419,0x3e64600c,0x3e6379ef,0x3e7e949c,0x3eac7b15,0x3e197741,0x3daf52e2,0x3e1dde68,0x3e9af1c4,0x3ec247b0,0x3ed122cb,0x3edadb48,0x3ede4c2d,0x3ed8abb8,0x3ec613f9,0x3ebea9d5,0x3e6bff93,0x3e29e47d,0x3e10388b,0x3d1927d7, +0x3d9a4a4b,0x3d73cdcb,0x3d06a184,0x3d964c4d,0x3dc800ca,0x3e2774ed,0x3dd9ce52,0x3db0ea2f,0x3db26c4c,0x3c887294,0x3e12234f,0x3cffc864,0x3e600970,0x3ea13fb2,0x3efe6ee9,0x3e30659c,0xbc3cc81f,0xbeb0c45d,0xbe0dda28,0xbda94cff,0xbd4f6d8d,0xbc5d4a18,0x3dbca1cb,0x3e4f8a47,0x3ea7e142, +0x3ec795bd,0x3ec9a8c2,0x3ebc3083,0x3eb31f8a,0x3ec46bcd,0x3ebdfc04,0x3ebe1a99,0x3e738359,0x3da0068e,0x3dd3a667,0x3da6fb7b,0x3db029bb,0x3db41d79,0x3dbe56ab,0x3db773d4,0x3dcd443f,0x3e1f2d20,0x3df959c3,0x3e056cba,0x3e209cf1,0x3dfc5b66,0x3e24129b,0x3dff5ba3,0x3e5671da,0x3e42572f, +0x3e1b23f9,0xbe0bd0cf,0xbe6b8421,0xbe9903b6,0xbeaca5e1,0xbeb9d7b9,0xbe906d1b,0xbe4b386e,0xbd160308,0x3e206378,0x3e892e79,0x3eb019c3,0x3ec1c38a,0x3ece7a20,0x3eca6423,0x3ed03dd5,0x3e822508,0x3e2e3851,0x3d2a0019,0xbd474efd,0x3a512eda,0x3c9af555,0x3bd1184c,0x3c3eb449,0x3d21bfb3, +0x3de0b616,0x3dd72fac,0x3dae1332,0x3d836d7f,0x3d81c5ae,0x3d37e12f,0x3dff12bc,0x3e24bdff,0x3e15055a,0x3e620b7e,0xbd8c7850,0xbdc2a411,0xbe4e3994,0xbe889903,0xbea86e03,0xbea613bc,0xbe9e399e,0xbe72af3c,0xbdcf85d6,0xbc7efdcc,0x3d7d7b95,0x3e2f6848,0x3e821ae7,0x3e98a179,0x3eafb800, +0x3ea97f64,0x3e9335cd,0x3de21fec,0x3d58bbd1,0xbd71aef8,0xbdc499e0,0xbce2ace7,0xbd99d998,0x3b024cd8,0x3d35c97d,0x3d8b35bc,0x3d9f4577,0x3d832d25,0xbc73e07f,0x3bdb5f27,0x3cbeaa78,0x3d952a32,0x39fa9c45,0xbccc6ea2,0xbc9d3e60,0xbd06ddb9,0xbe250e59,0xbe599f02,0xbe795de5,0xbe93a9b6, +0xbeb0ec14,0xbe8335b4,0xbe34182b,0xbde3c113,0xbc9d8155,0x3d91f27c,0x3e2a1ef0,0x3e37bea3,0x3e4e15ea,0x3e70f0e9,0x3e3a5314,0x3e078953,0x3dd66cf1,0x3d96135a,0x3d84dc12,0xbaedacd6,0xbd560016,0xbceac60e,0xbcb66a80,0xbc59e23d,0xbbe5eaa7,0xbc2331ea,0x3b896c44,0xbbf634f1,0xba39676c, +0x3c8c84b6,0x3c703bb0,0x3cdfa3ef,0x3aca0afc,0xbbb99de1,0xbd1b781a,0xbde8e031,0xbe4bfcac,0xbe815815,0xbe71e6ab,0xbe7ad9d4,0xbe8068ce,0xbe8828d7,0xbe93e492,0xbe9dcea9,0xbe9af19d,0xbe9a9a7d,0xbe966fa0,0xbe926b9e,0xbe8d19df,0xbe87ed99,0xbe7efda4,0xbe663fc5,0xbe549309,0xbe4a0160, +0xbe391110,0xbe317968,0xbe01b9a7,0xbe027a04,0xbe0c1e11,0xbe0204bf,0xbde736a5,0xbde9174e,0xbdeb45fa,0xbe09c96a,0xbe12c147,0xbe15bb0e,0xbe0aeb01,0xbe17b8d8,0xbe2a0c88,0xbe41a049,0xbe4593c6,0xbe52689c,0xbe83cbef,0xbe5a61da,0xbe5a80f8,0xbe5fe63b,0xbe5d231b,0xbe6339d1,0xbe64a567, +0xbe6a4e52,0xbe658bd3,0xbe63af1c,0xbe639219,0xbe5e3fb5,0xbe59e56c,0xbe56d9a1,0xbe5179ad,0xbe4fc1ff,0xbe4bb275,0xbe46d329,0xbe3ef18e,0xbe38c060,0xbe63733f,0xbe6ea930,0xbe292045,0xbe5bd9e6,0xbe6d1729,0xbe3b5a1c,0xbe40c2ff,0xbe3ededc,0xbe3db3b4,0xbe457844,0xbe4b216b,0xbe49f1c3, +0xbe78a0c1,0xbe6e045d,0xbe40fbfc,0xbe85018b,0xbe667d70,0x3e02a845,0x3e188447,0x3dca8d70,0x3df9b795,0x3df228d6,0x3dfb4d70,0x3dd9abba,0x3dd18759,0x3ddc8fb0,0x3deec704,0x3dfa3b4f,0x3dffc0f9,0x3e0327cd,0x3e05520e,0x3e052e2f,0x3e048834,0x3e020935,0x3dfd5ebd,0x3df06187,0x3deae901, +0x3dd2e295,0x3e0c335e,0x3e18973b,0x3e17b2f4,0x3e0619f6,0x3e168c07,0x3e152a36,0x3e1a59f5,0x3e1bbb75,0x3e1b31ab,0x3e1f4677,0x3e2290d4,0x3e2334d4,0x3e1a8dfd,0x3e030d98,0x3e2d9c2c,0x3e2ff4a9,0x3e6383b9,0x3dfb706a,0x3df8ebca,0x3df88da8,0x3df8d370,0x3db24c2f,0x3db24be9,0x3de2af97, +0x3e019b3d,0x3e0eed9e,0x3e12e1ed,0x3e1c7871,0x3e1ecf23,0x3e1caeb7,0x3e1e2e1e,0x3e1889d8,0x3e0e35ad,0x3dfe7d6e,0x3de54c35,0x3de476e1,0x3e18dfbe,0x3e01b9eb,0x3e05083e,0x3e0093ac,0x3e00cb81,0x3def42f5,0x3df78b32,0x3dff893c,0x3e098d41,0x3ded9d8c,0x3dd1a942,0x3dedc449,0x3dfce58c, +0x3e16ac81,0x3e2aa6eb,0x3e05aa38,0x3e42e6dd,0x3df7b745,0x3d96f146,0x3dd6b5ad,0x3df37257,0x3d5f234e,0x3d2170d5,0x3dbc86bc,0x3e026a4e,0x3e1aeffd,0x3e16458c,0x3e288617,0x3e39e98b,0x3e406143,0x3e478644,0x3e3d96d2,0x3e28e4a7,0x3e0ac3e2,0x3dda8a02,0x3dd61153,0x3e03ca89,0x3de5ab1c, +0x3df660e0,0x3de0ba83,0x3ddb1781,0x3dbdc4b9,0x3ddf76b4,0x3dd7d834,0x3dfef09a,0x3db6e2a6,0x3dd3015a,0x3dda2d05,0x3dfb2a2e,0x3e079a27,0x3e3986e0,0x3e214c87,0x3e45257f,0x3dcdbd2f,0x3c9ee695,0x3d48451b,0x3db37f38,0x3d15ce55,0x3d32798b,0x3dee9c15,0x3e094d40,0x3e0b0e34,0x3e00096f, +0x3e0e9e30,0x3e1bcbc3,0x3e23acef,0x3e3842dd,0x3e324f73,0x3e180b7b,0x3de8ab2e,0x3daed974,0x3d9ea224,0x3df12498,0x3ddd48f2,0x3db6c92a,0x3db97c56,0x3da9de72,0x3d829d49,0x3da0d58c,0x3d9ca5a4,0x3db1b147,0x3d5c4706,0x3d260ff6,0x3d6369a6,0x3db48a7e,0x3e10cabd,0x3e27f9a7,0x3dbcd0ed, +0x3ec445cb,0x3a9da1f5,0xbe243b19,0xbdaed9e6,0xbe418189,0xbeb57c40,0xbebb7339,0xbe70a920,0x3d349e39,0x3e7f14f9,0x3e94a718,0x3ea9236b,0x3ec25124,0x3ee2c945,0x3ee6cb7e,0x3ed5bcfd,0x3ebbee0d,0x3e87eed5,0x3e4ab69e,0x3e294414,0x3dfadbc2,0x3defa291,0x3dd4cd24,0x3dc21ed1,0x3da9a062, +0x3d466d2b,0x3d9a0282,0x3db215b8,0x3dd87c55,0x3ddcc6a1,0x3e019eef,0x3e36be9a,0x3dfb00d6,0x3e43e6c6,0x3e4ef6f4,0x3e93d904,0x3ee0f6d1,0x3c86d2ff,0xbf310850,0xbf2d7a7e,0xbf523b1e,0xbf0d82a8,0xbea797fa,0xbe0fe5c6,0x3e04470d,0x3e8de10f,0x3ec2813f,0x3ecf38b4,0x3ecb0cb1,0x3eb67010, +0x3e9b53b1,0x3e838557,0x3e61c6e5,0x3e2761ce,0x3e061f5b,0x3e20d9b7,0x3e3c2752,0x3e193de3,0x3e0a490e,0x3dca140a,0x3db0996a,0x3da8e4bf,0x3dd7bb2d,0x3dd5bbb3,0x3ddaab51,0x3dc137cb,0x3dcf5242,0x3d7ffb61,0x3e0d80c2,0x3d9bc939,0x3e30897d,0x3dc27f89,0x3df48683,0xbeff394a,0xbf9637ab, +0xbf815cfb,0xbf622b6e,0xbf4485ac,0xbf3e793b,0xbf2ac97c,0xbec53c79,0xbe397adc,0xbcc17401,0xbbc123fb,0x3d4eceac,0x3df47f90,0x3e0ce4ba,0x3e1823d0,0x3e18c31a,0x3e17d6fd,0x3dedd0e2,0x3e30326b,0x3e539139,0x3e2dd510,0x3e1f182b,0x3e03aa67,0x3dcf5f71,0x3d3f4967,0x3cf55f26,0x3d7ed8b0, +0x3e27557e,0x3de3daf9,0x3de14e0a,0x3dd4f3f5,0x3e59cf44,0x3d0a33a5,0x3e73bd6b,0xbdc23601,0xbea549ce,0xbf646063,0xbf4efc65,0xbf372cc4,0xbf1ad053,0xbf29ef84,0xbf20e28e,0xbf07088f,0xbeec2c4f,0xbed69532,0xbebcee14,0xbeb1aa6d,0xbe80a1d5,0xbde501d3,0x3d058cd2,0x3de9f201,0x3dbc0080, +0x3e0d7f78,0x3e03a4c8,0x3e2cd96c,0x3e341653,0x3dc88548,0x3dd1c5d2,0x3dd44ca1,0x3ddb4c61,0x3da9cd72,0x3e0ed637,0x3dec1dc7,0xbc2502a8,0x3d67b221,0x3d93604c,0xbcb804ff,0x3d8d3306,0xbd7db673,0x3c61d30d,0xbe4f86f3,0xbec8e628,0xbf0490c0,0xbef7ecf4,0xbef6733e,0xbee97f3b,0xbeae5510, +0xbe4eb617,0xbda9693f,0xbd09228e,0xbda11a9b,0xbe54c7be,0xbe6b3afc,0xbe613fc9,0xbe1e108e,0xbe09b497,0xbd7145cc,0x3ce27576,0x3e1fbf6c,0x3e35f37f,0x3e197661,0x3e07a4be,0x3df36705,0x3de31fb4,0x3daafae8,0x3dae1977,0x3d75aedc,0x3d9e0041,0x3d8117b5,0x3c85083e,0x3d3f3edd,0x3d04af83, +0x3b882801,0xbda302c1,0xbdeb4604,0xbe1cb0fd,0xbec0fcdc,0xbe18d1fb,0xbe88af44,0xbe819546,0xbe8a8f91,0xbe87eb64,0xbe3506bd,0xbdab576f,0xbba77fd4,0xbc9156c7,0x3c620590,0x3d26dc09,0x3b3d5d4f,0xbcdef120,0xbc87aff3,0xbd53d4da,0xbd4b0b41,0xbcd0776d,0x3d6bbc9f,0x3da60c77,0x3de53c8f, +0x3d9b7175,0x3d4ccfac,0x3d8d85d9,0x3ce265b4,0x3c8f48dc,0x3cf548a1,0x3cd5c66d,0x3cad5757,0x3cff8e8d,0x3cae70f0,0x3cee9154,0x3c8dd310,0x3c87f888,0xbcaec886,0xbd811192,0xbdeb79db,0xbe31ae06,0xbe0b09d1,0xbded0b5e,0xbe0a34c3,0xbe0afa94,0xbe0ff6a8,0xbe26f88f,0xbe3bc93d,0xbe571c13, +0xbe784ce9,0xbe8f16b6,0xbe8cad5e,0xbe890980,0xbe86d684,0xbe7203cc,0xbe55601c,0xbe4dcb61,0xbe2e7e72,0xbe26817d,0xbda65d59,0x3ba3e2af,0xbce9ef2a,0xbcb7da8d,0xbc029a19,0x3b99a676,0x3acfb0e4,0xbb8dcac1,0x3a74b548,0xbc3a7d07,0xbc828865,0xbd120b9d,0xbd0e758a,0xbda30756,0xbddd3e67, +0xbe1d1563,0xbe0f89d1,0xbe13395e,0xbc108e1f,0xbcb48ea1,0xbd038143,0xbd204234,0xbd3e3b79,0xbd41abb5,0xbd4b4c51,0xbd523a0b,0xbd4c1703,0xbd509156,0xbd636df6,0xbd7fba84,0xbd874925,0xbd8eb4e6,0xbd9ef85b,0xbda56e04,0xbd9107f7,0xbd88393a,0xbd949b93,0xbdf4a7ab,0xbd793cd3,0xbd35598a, +0xbd53048d,0xbd2905ab,0xba7d7672,0x3b807469,0x3b4ad259,0xbbeedd4c,0x3c443e7d,0x3ce37d79,0x3c152a90,0x3b5cae0b,0xbd00dbc6,0xbd3212d5,0xbbe5c19e,0xbd89cece,0x3d04bd04,0xbaaf04ad,0x3ac6a926,0xbb289242,0xbbda83be,0xbc42a74b,0xbc8a0804,0xbcc7548f,0xbd0334a1,0xbd1da69b,0xbd3cdb92, +0xbd59e02e,0xbd8107cf,0xbd5785a1,0xbd2cd9a5,0xbd0a5405,0xbd03b881,0xbcefee88,0xbc2ce16e,0xbda13617,0xbddc2e4e,0xbe3b296b,0xbd05e6c0,0xbdafbbf1,0xbe221d5e,0xbe2406a1,0xbe1fae5b,0xbe1b34ca,0xbe2021e0,0xbe248e39,0xbe1eb8a0,0xbdaab4e6,0xbc44dbc9,0xbe46b656,0xbde3b9ba,0x3c6e5aee, +0x3d0b05b9,0x3d254630,0xbc855a96,0xbbca3475,0xbc3dc3d6,0xbc271b20,0x3c499a1f,0x3ce97b15,0x3d36a19c,0x3d5e23f5,0x3d786cc2,0x3d80c233,0x3d620790,0x3d49c0b5,0x3d349272,0x3d25864a,0x3d172176,0x3d0d43d4,0x3cfe8839,0x3d0889bb,0x3cb541df,0x3d8b9799,0x3db5365c,0x3e033450,0x3d5f0888, +0x3daa88e1,0x3df42b35,0x3df81c0f,0x3df54d40,0x3de9f363,0x3de599b8,0x3de23155,0x3ddc7250,0x3da5b889,0x3d133914,0x3df40f7f,0x3d9349d8,0x3d602613,0xbd69201f,0xbd9052c7,0xbd8a151d,0xbd659d9c,0xb9dd9f0e,0x3d3b335d,0x3da9946e,0x3de86a23,0x3df8df1d,0x3de6ab10,0x3db8978a,0x3d9a9374, +0x3d863d02,0x3d655aab,0x3d4bfb40,0x3d3f04c6,0x3d1d467c,0x3d0f13f9,0x3d2c859b,0x3dc7a8d3,0x3d8366c3,0x3d87a6b4,0x3d82ccd9,0x3d91c97f,0x3d6641fa,0x3d73c001,0x3d7f04cf,0x3d94c9f8,0x3d5f258c,0x3d352c11,0x3d4a6211,0x3d0a8732,0x3d2362c9,0x3d35daea,0x3a7045d4,0xbd74b216,0xbe01f562, +0xbe3896c3,0xbe357a0b,0xbe2b6347,0xbd70c906,0x3d1d8e8b,0x3de1eebb,0x3e38689c,0x3e63e47f,0x3e6ca505,0x3e4a195f,0x3e1fd19e,0x3e011423,0x3dc2c846,0x3d94eaf7,0x3d75f0eb,0x3d30f630,0x3d204670,0x3d7b5913,0x3da023e4,0x3db94aed,0x3d9ec9df,0x3d85c73d,0x3d9beb10,0x3d71912a,0x3db47782, +0x3d89799c,0x3dc0d341,0x3d71080d,0x3d7b4fe7,0x3d36a345,0x3d077488,0x3cbe0829,0x3c18457d,0xbd37a622,0xbdb9a699,0xbe38728a,0xbe5ce42a,0xbe5cafd8,0xbe50c0dd,0xbd4e1b31,0x3db3ab56,0x3e49a85d,0x3e975fc5,0x3ea8d6ed,0x3e97e1d3,0x3e6c8215,0x3e3e582e,0x3e1a0a43,0x3de72973,0x3db4bd63, +0x3da4c184,0x3d5a8216,0x3d5e0f84,0x3d984406,0x3da9d489,0x3da20039,0x3dd16756,0x3d9b68ef,0x3d88b05b,0x3d7ce0d9,0x3d9d2c65,0x3da7877e,0x3da01035,0x3d609f0c,0x3d26d1fd,0x3cf9be64,0x3abf6013,0xbc2b89a2,0xbc4fb521,0xbd6eb74a,0xbec47c34,0xbeed6d11,0xbeed349a,0xbf095213,0xbef47dd5, +0xbe84a43a,0xbdd8a000,0xbc756756,0x3da3919e,0x3e44d7ab,0x3ee3a6a9,0x3edbba8a,0x3ec3dbee,0x3e93707d,0x3e3da9ba,0x3dde8ec2,0x3d835dc6,0x3d38e48a,0x3d2d8384,0x3dbd1091,0x3e1a45a4,0x3df4d8a4,0x3dd7653e,0x3dc3faa5,0x3db6f612,0x3d834cef,0x3db7a48d,0x3db1a300,0x3d9444d4,0x3d515d02, +0x3ca36a05,0xbb1cf98d,0xbd04fdf0,0xbdad762f,0xbe069c2f,0xbe618c72,0xbf03e467,0xbef7b81b,0xbdba6cd7,0xbd94b568,0x3df22c99,0xbd2a7fcb,0xbe5023cb,0xbeee6a39,0xbec5a678,0xbe925373,0xbe0c4473,0xbd91dff7,0x3bea2da1,0x3d86aafb,0x3dce6e1d,0x3e01918d,0x3e00f3ac,0x3e0ab498,0x3dedf660, +0x3dc9de45,0x3de532fd,0x3de31abb,0x3dad69cf,0x3da4a9ab,0x3d947c90,0x3d5707ac,0x3d93df28,0x3daa4fef,0x3ddde9b6,0x3d9be7a1,0x3d72df66,0x3d2a5fd9,0xbbf98293,0xbd88e638,0xbe2b2cb1,0xbe8e17d9,0xbef8d2ee,0xbdd7ea0f,0x3f217e7e,0x3f084641,0x3f02183b,0x3de0c2e8,0xbde8cc73,0xbe9e3ad3, +0xbed06e59,0xbebffe8d,0xbe9b1562,0xbe759896,0xbe4a2688,0xbe37a79e,0xbe2bbc29,0xbde7c991,0xbc12669a,0x3d0b1bff,0x3d76b383,0x3db6a9f5,0x3da1eb79,0x3d9e4a52,0x3de2580e,0x3dc46f11,0x3dc84173,0x3dafa9a9,0x3db552de,0x3db1f94c,0x3dc7bd3c,0x3d0366a6,0xbb04b1f2,0xbb38cbc7,0xbe04f3e7, +0xbde473d1,0xbea9b199,0xbe0cfe65,0xbd834dd7,0x3f0c92f9,0x3f16361b,0x3ebef686,0x3e0229d5,0x3e2a7267,0x3e46ae01,0x3e32ce9d,0x3de46e0c,0x3da79bf3,0x3cfca39d,0x3dc9149a,0x3db1adfe,0x3c253a14,0xbc69e803,0xbcd152e5,0xbbb3d48b,0xbd08eaf4,0xbd57ffd9,0x3bda24b2,0x3dadde0d,0x3d633627, +0x3d4e206b,0x3d2b89e1,0x3d0baa09,0x3d04ef5d,0x3db3f23d,0x3dc6dc00,0x3cf2917e,0x3dac3a83,0x3d5de32b,0x3d0fe36b,0xbd165410,0x3d0ee6e8,0xbde32022,0xbcd2f1dc,0x3e13892d,0x3ebc93a6,0x3eb095ab,0x3e8315de,0x3e57c67f,0x3e12fcd1,0x3da8964b,0x3d9f68b7,0x3d7deb40,0x3e0e7959,0x3e8ca9ae, +0x3e915743,0x3e81b08e,0x3e3c0712,0x3de26208,0x3c9c8092,0xbdbe22c5,0xbd9951eb,0xbd810157,0x3c7081d1,0x3dc4915c,0x3cea5f75,0x3d0153da,0x3d88c3a4,0x3d8527cc,0x3d778c05,0x3d719dc0,0x3d78b281,0x3d0aecdd,0x3c95a28f,0x3c6faa7e,0x3d84d859,0x3d37633e,0x3cc65791,0x3cb4fa06,0x3e8a001a, +0xbd4e9ebf,0x3e6396ba,0x3e67b37b,0x3e33cbec,0x3e353453,0x3d85a19a,0x3baf4549,0xbca795d1,0x3c0bd1f2,0xba3bced5,0xbbbd3da8,0x3c8a3c1a,0x3cc919e0,0xba8a0d12,0xbd3b20f4,0xbd8ad8e0,0xbdaae4fb,0xbd3d688f,0xbcbd3245,0xbc247477,0x3d0dc230,0x3d2698d3,0x3d47f80c,0x3d0ba758,0x3d248e16, +0x3d5d4f48,0x3cba798a,0x3c4d87d8,0x3d44633e,0x3d246a46,0x3cfe5667,0x3caed1a9,0x3cbdb3b5,0x3d495470,0x3c87836d,0x3d88afda,0x3dc437de,0x3ddd3257,0x3e0c8ad6,0x3e0a4818,0x3e1aa876,0x3dfe68d2,0x3de3d44c,0x3db39099,0x3da6c455,0x3da8c2c2,0x3db7cc8b,0x3d754050,0x3ce1b56f,0xbc129249, +0x3c03e326,0x3c590d9a,0x3ccf926e,0x3c984a16,0x3d73a6e2,0xbbb4b733,0xbda94d58,0xbce9399c,0xbc3fccca,0x3b972086,0xbc69b7be,0x3d1d00f6,0x3c07cb94,0x3d7fe33f,0x3c987d86,0x3d23c744,0x3c606449,0x3c9be2ce,0x3d28bd91,0x3d54ed47,0x3d91c795,0x3dcc211c,0x3d2341ce,0x3e0fe72a,0x3e0f83d1, +0x3e129928,0x3e18a855,0x3e1cc671,0x3e2258d7,0x3e29bc85,0x3e21fb37,0x3e14e366,0x3e0997c9,0x3dfae31d,0x3de82897,0x3db2aaaf,0x3dcbb31d,0x3ddb58f6,0x3df4fec7,0x3df46106,0x3e088e86,0x3e1095f2,0xba37ab69,0x3dbc23f6,0x3dc02454,0x3dd02f26,0x3dae6fac,0x3def4019,0x3de314a4,0x3de78099, +0x3dc7f299,0x3de55263,0x3ddd1221,0x3dc6ca01,0x3dccc1a7,0x3dbd0eae,0x3dbc47f8,0x3de68eed,0x3e0a5e12,0x3e143b71,0x3e036e08,0x3e0b7e16,0x3e0b9439,0x3e0ff99b,0x3e133416,0x3e17f159,0x3e17fe1d,0x3e1a747b,0x3e1b9510,0x3e1dd060,0x3e20bbad,0x3e23d632,0x3e2227e6,0x3e1d3d23,0x3e1967cd, +0x3e1a0c43,0x3e0ee8a0,0x3e2b8dbb,0x3de97593,0x3daa6b85,0xb969d2fd,0x3e02a1b0,0x3dba2fdb,0x3cf2e9e4,0x3cfac6dc,0x3d057cfd,0x3d26349f,0x3d1cc3ff,0x3d2dd830,0x3d37346d,0x3dc1720c,0x3e07073d,0x3d0cfbcd,0x3dcb57a7,0x3e197d97,0xbd244668,0xbce0d93f,0xbc4ecf0b,0xbc5d5fbc,0xbc1d88d8, +0xbc1cf977,0xbd0ed111,0xbd5898c0,0xbd996fac,0xbda2f852,0xbda563d8,0xbd99bfe6,0xbd84d2f8,0xbd693c6e,0xbd53b4bd,0xbd3fe360,0xbd32474c,0xbd2d715f,0xbd1bd71e,0xbd07d13c,0xbd24b0e6,0xbcffdc8b,0xbca47603,0x3cb148cb,0xbd171492,0xbca7ee28,0x3c93598c,0x3c9d6c73,0x3ca3506d,0x3c8a6edd, +0x3c947000,0x3c7f13a1,0x3c6a8ca9,0xbccaee19,0xbcf0bb40,0xbb494cf0,0xbce192e3,0xbd5a8481,0x3c5d4e68,0x3d3d1c0b,0x3d25922a,0x3d0f847b,0xbd028568,0xbdb66b72,0xbe1668e3,0xbe313ae4,0xbe2e3bbb,0xbe0d746e,0xbdd69036,0xbdaaedca,0xbd9b0e97,0xbd830acc,0xbd6664df,0xbd5f2d41,0xbd284146, +0xbd0f8ecc,0xbd09a272,0x3bcac87c,0xbca8af6d,0xbc9e0102,0xbc66f2f6,0xbbe7f8ab,0xbc7ac2db,0xbc030004,0xbbf7b541,0xba3458b8,0xbb8d1d7e,0xbba7bb7c,0xbb1ef024,0xbc7eac20,0xbc94a180,0xbcf9d7bc,0xbbf9224b,0x3a5e9640,0x3d2f5a2e,0x3e2858a7,0x3e097371,0x3dfd726d,0xbc56ec23,0xbe039449, +0xbe789ec4,0xbe9471b3,0xbe913dc6,0xbe714c5f,0xbe39a610,0xbe090f9b,0xbdf29a94,0xbdb7c87b,0xbd994df4,0xbd8fe40c,0xbd25a1e3,0xbd119d0a,0xbc5ee5a5,0x3ae1fb05,0xbaab280f,0xbc28e869,0xbb9f4431,0x3c6585e6,0x3a3951b5,0x3d083a3f,0x3cc530c8,0x3d2bdd73,0x3d1a4509,0x3d351ae1,0x3d2bd58d, +0x3bf83741,0x3a96c258,0xbb891061,0x3d0fc2f9,0x3cf890ab,0x3deea082,0x3e8a38a5,0x3e71adb1,0x3e53065e,0xbc6e05ae,0xbe4a422a,0xbec1aced,0xbee6fe6a,0xbed03571,0xbe8e5f7c,0xbe34f1d3,0xbdfde1a9,0xbdf039f5,0xbdc5b5a5,0xbd9d3ea0,0xbd9b0456,0xbd27619a,0xbd0b9967,0x3be0b0c5,0x3d6b9277, +0x3cb2adad,0x3d6f1fba,0x3d0aff61,0x3d1b83b7,0x3d081b13,0x3d71910a,0x3d9bb040,0x3d9a1ad0,0x3d8b0cf7,0x3d81dc69,0x3d8cc2cb,0x3c92970e,0xbbbf2242,0x3cda0576,0x3db78c02,0x3d44ae73,0x3e8cd91b,0x3eb5de23,0x3ebc65db,0x3eb8db28,0x3e2e2a95,0x3c6546e9,0xbe1880d0,0xbe8efdea,0xbeda71f9, +0xbf140d9c,0xbefe1e07,0xbed63541,0xbe96d35f,0xbe6e424a,0xbe33eed2,0xbe197fe9,0xbd784d56,0xbd2feb4f,0xbcf41235,0x3c077028,0xbcc50a9b,0x3c8c3a02,0x3cd5399a,0x3d4c6985,0x3d4d5600,0x3d84ebbb,0x3d7f6aaa,0x3d642d56,0x3d826458,0x3d9adf5d,0x3d99d466,0x3df08481,0x3de3d7cb,0x3daae193, +0x3c34452d,0x3db46b96,0x3e61d052,0x3dc66f16,0x3d33b10f,0xbe125ea9,0xbe1acc5b,0xbdad0448,0x3e003a39,0xbd8d463f,0xbe819ad1,0xbf030a8d,0xbef3cce1,0xbef97e48,0xbefa0fdc,0xbeca4ffd,0xbe992b97,0xbe59f989,0xbe164e98,0xbe08c0c5,0xbd7d931b,0x3cd775f5,0x3ce47659,0x3d58a08d,0x3d286fd8, +0x3d587d65,0x3d778413,0x3d9c0940,0x3da7ad98,0x3d9ee85f,0x3cfdfaa4,0xbb32cdf4,0xbd1ecbe6,0xbd6a8cd0,0xbd2a2b09,0xbce25adc,0x3d543adf,0x3e9aaf51,0x3d7b9068,0xbf1a94f9,0xbf1b0a6e,0xbf2e091c,0xbe1af26c,0x3e264f3b,0x3ef9accd,0x3efb2c80,0x3ecfa861,0x3e84b3a2,0x3e4cca8d,0x3de844c1, +0x3cc38127,0x3cdda582,0xbb8f5609,0xbd84263f,0xbdf81e00,0xbe35fc09,0xbe07d420,0xbdc6963b,0xbdb71644,0xbceb7479,0x3b0adde2,0x3d170ec2,0x3cdfd4c1,0x3dd001dc,0x3dc8598a,0x3cab6bea,0x3d872649,0x3d991a8c,0x3ce36dae,0x3dccaf41,0x3db58dc7,0x3e4cf0c2,0x3d2321c4,0x3d4912fb,0xbef1a38c, +0xbf0c72b7,0xbe9a87cf,0xbe1f92e3,0xbd15c16d,0x3d8aa42f,0x3e87f626,0x3ec5ee70,0x3efd77f4,0x3f16df96,0x3ef4c556,0x3ec7b4bd,0x3ea7d93b,0x3e77f15e,0x3e18429b,0x3d87bbb9,0x3d163f82,0xbc4a7efc,0xbde2669e,0xbd8f110e,0xbd8ae6c9,0xbd9f1ef7,0xbd5355ee,0xbd09d933,0xbcea86ef,0x3d51ac7f, +0x3dab49e5,0x3d10fb63,0x3d9b954f,0x3d8feeaf,0xbc9d3816,0x3d14f118,0xbd226fd9,0x3d2b52d1,0xbcfa6505,0xbc582715,0xbe1dcaef,0xbddc01d0,0xbd89eb15,0xbe20aadc,0xbdaaefe0,0x3aeffe0f,0x3dd7e1c8,0x3e649ed5,0x3e8a165f,0x3e7a1dc2,0x3e8c2e56,0x3e95989c,0x3e8e258e,0x3e8bb95d,0x3e711aa7, +0x3e461f77,0x3cdd77d4,0xbd6f8ef6,0xbdfde45f,0xbddd54fc,0xbd9c88cc,0xbce7a604,0xbca1741b,0x3b8b32a1,0x3d44133b,0x3d841280,0x3d8e1409,0x3dbdf5a6,0x3db32f88,0x3db3fc83,0x3d563489,0x3d3f8da5,0x3d0af92b,0x3d0ee030,0xbe18f217,0x3e1c7501,0xbdacbe63,0xbd9a5c87,0xbd173b6c,0xbda9c4f2, +0xbc7da13a,0xba43364d,0x3bb6929b,0x3b1317f8,0x3d24ba43,0x3da17750,0x3daa08d9,0x3dbfde68,0x3dfc28e6,0x3e1fb7f5,0x3e290f10,0x3e2f8bd4,0x3dbe0adc,0x3d8430c3,0x3d2e8ba8,0x3c88c75d,0x3d3b9658,0x3d14423a,0x3db282ad,0x3dc0e370,0x3d8eb74e,0x3da3ccf7,0x3d9b6e31,0x3d7009c8,0x3d056b1b, +0x3cb9f1c3,0x3cccdcb1,0x3d649c32,0x3d68f6f3,0x3da79e90,0x3d3c86f7,0x3c82d955,0xba18f520,0xbce76959,0xbc106db9,0xbc0889ea,0x3bea3bd0,0x3cbe37a6,0x3d4ecc49,0x3d73f451,0x3d8540a6,0x3d92f313,0x3de58a9d,0x3e1ceb60,0x3e491b3e,0x3e3b59ca,0x3e36b8b8,0x3e375763,0x3e4bc9e8,0x3e4ba1b2, +0x3e6177d1,0x3e57c6d5,0x3e4c1cac,0x3e41cf26,0x3e1afe4f,0x3e0558dd,0x3dc3a22e,0x3dc83207,0x3d420edb,0x3d9106c3,0x3d2ce37f,0x3d89653d,0x3d3a3385,0x3d1b9599,0x3cfde8d1,0x3cf98361,0x3a998c14,0x3e07b475,0xbbb80c7a,0xbc0e86be,0xbbb28c56,0xbc0f683b,0xbbfcac4d,0xbc2d5f08,0xbc85c56d, +0xbb13860b,0x3c730607,0x3ce5324a,0x3d366249,0x3d6c31e1,0x3dad1ade,0x3db3aca6,0x3dc40b4c,0x3dc260b0,0x3dbf0446,0x3da8d7fd,0x3dc0624b,0x3e291fcb,0x3db1c003,0x3d9cd7ca,0x3d8db57e,0x3d89d1e1,0x3ce5888f,0x3cc17641,0x3cdb4c03,0x3d295b62,0x3ca47dd1,0x3bdd9cf7,0x3cefb684,0x3cd2f181, +0x3d4e4821,0x3d69de9e,0x3cac7a52,0x3d339da3,0xbc8d67fe,0x3c49c1a0,0x3bbeca15,0x3bdcc478,0x3bc19459,0x3bc8e507,0x3b96c02f,0x3c478401,0x3c8b0b07,0x3cbf35ed,0x3ce171d0,0x3d00e79d,0x3d126590,0x3d02e56b,0x3cfcff9f,0x3cfff5bc,0x3d09d120,0x3d2073f6,0x3ca81f50,0x3dbe6344,0x3df87df3, +0x3e349121,0x3d575c56,0x3dc782fd,0x3e1ac02e,0x3e1de385,0x3e19c56b,0x3e10f47b,0x3e17179b,0x3e16d18d,0x3e107356,0x3daef76b,0x3cc1320d,0x3e1be4ba,0x3db93410,0x3c65b785,0xbcd8b56e,0x3a538c7b,0xbcd32b70,0xbc815d34,0xbcbd78ba,0xbcd66379,0xbd1210c0,0xbd1828b6,0xbd0646ec,0xbcfc3d4d, +0xbcf934dc,0xbd00fb82,0xbd025c5b,0xbd02c7bd,0xbcf8860a,0xbd058c80,0xbd056643,0xbd01c8c3,0xbd05c3c8,0xbd027b38,0xbd04f6f2,0xbcb438b8,0xbca6ea83,0xbcf3d480,0xbc87caca,0xbc6d381e,0xbcc1e065,0xbca26b58,0xbc949d0e,0xbc9ca00e,0xbc7efe5d,0xbc5d93ea,0xbc6f845e,0xbbc8efe2,0xbc0ef067, +0xbc1ac15f,0x3b8d9824,0x3d8c9770,0xbbc17054,0xbc95d254,0xbcae6749,0xbd0d1858,0xbd7b6e31,0xbd88c9e5,0xbd435e18,0xbd345041,0xbd243ba3,0xbd2ef864,0xbd340064,0xbd2a9662,0xbd0c91ae,0xbd1c1f5c,0xbd282d9a,0xbd2de8db,0xbd3caddf,0xbd423b8c,0xbd329e1b,0xbcfaaa29,0xbcf2ad94,0xbcbeb07c, +0xbc983d0b,0xbc51b397,0xbc0a92af,0xbb45a483,0x3b0236c7,0x3ad2ea5d,0x3b37ea47,0xbb31b67a,0xbb6c9db9,0x3bf545df,0x3c9c1a3d,0x3d066765,0x3c7952e9,0x3daea8a4,0x3ca0e958,0xbd5cf32e,0xbd21ab56,0xbd5fe1d6,0xbdd2f8b9,0xbdcb2481,0xbd7b7d9f,0xbd8985cc,0xbdac0065,0xbdcc7a70,0xbdd22be5, +0xbdc98f00,0xbd9e67d8,0xbda3363c,0xbd9738e3,0xbd88a26e,0xbd94b401,0xbd93f915,0xbd7cadcf,0xbd34e5a3,0xbd0a6442,0xbd01651d,0xbc87d070,0xbb32f6e2,0x3b1964f0,0x3c8ae951,0x3c8ecf1f,0x3cc0ec00,0x3cae7a22,0x3cef7169,0x3c928eb9,0x3d084d69,0x3d1a6509,0x3d904538,0x3d3e2aa0,0x3e28d368, +0x3d118164,0xbd956c1f,0xbcf61a66,0xbd310b0b,0xbdfb2c27,0xbe170a2f,0xbda391b5,0xbdbb3554,0xbddfd523,0xbe060d66,0xbe07a064,0xbde65847,0xbd8f8fe3,0xbd896849,0xbd8d992e,0xbd8865c2,0xbd9d7b93,0xbda7f9c2,0xbda7e650,0xbd1f01ad,0xbd185311,0xbc9ae322,0x3b069898,0x3c86937f,0x3c2bfb45, +0x3d2d4899,0x3d7c464c,0x3d6e66ab,0x3d4f4fec,0x3d3f066b,0x3d373352,0x3da20331,0x3dfd282a,0x3e00c07d,0x3db1f496,0xbd89bdf5,0xbebd751b,0xbeede34b,0xbee5513a,0xbeea8872,0xbe920c88,0xbe0df14f,0x3c35e72b,0xbd83b344,0xbdd0438f,0xbe319912,0xbe85f916,0xbe97aaa5,0xbea846ee,0xbe82ab93, +0xbe56316b,0xbe43f589,0xbe2c1bd0,0xbe1584dd,0xbdf97b1b,0xbd818ef6,0xbd2c9197,0xbc2243db,0xba5886ae,0x3cb62656,0x3d3379dc,0x3d652f28,0x3d73b609,0x3d603dc2,0x3d6f3fd6,0x3d3252b0,0x3cc88e33,0xbd7e11f9,0xbd95e3e7,0xbdd7d2e5,0xbd7531e9,0xbe0905b8,0xbeb81f02,0xbedb2fdb,0xbeaa6f9b, +0xbd82cdbe,0x3cd8f135,0x3da44016,0x3df68d3e,0x3e9e1cbe,0x3ef2880f,0x3f2c902f,0x3f0de863,0x3efa14f4,0x3ed89b03,0x3e980f38,0x3e26a5dd,0x3d3806a5,0xbd348814,0xbd7f40f3,0xbdaf1ff4,0xbe04f71f,0xbd926a61,0xbd388bfd,0xbbf54a3c,0x3cca977f,0x3d15d6ea,0x3d9a2eee,0x3da007b4,0x3d327504, +0x3d047aef,0x3c696f9b,0xbb93db5f,0x3cf6d6ca,0xbc2b14cc,0xbd007826,0xbe11c603,0xbedbb206,0xbeb5c0cd,0x3e98c9f9,0x3ee04686,0x3f2fd13d,0x3eae4c50,0x3e631b0d,0x3dcef0aa,0x3e6b8ff9,0x3eafcd2e,0x3ef5e842,0x3f069f73,0x3f150983,0x3f1ebddb,0x3f196be6,0x3f02943f,0x3eb7c40c,0x3e5bb8b6, +0x3e1fd6d5,0x3c13243d,0xbd979cf9,0xbda3e506,0xbe084c23,0xbdb346db,0xbd8ec2c3,0xbd61b288,0x3d254f20,0x3d8b094e,0xbc36a261,0x3d8ca219,0x3d3b9875,0xbcebfdd0,0xbd7b1950,0xbdd2aeeb,0xbe4d4931,0xbe26792b,0xbe369e37,0x3e61fcd5,0x3eea0133,0x3e9316cd,0x3e9a3833,0x3d8c17f4,0xbd14080d, +0xbe0f3ba8,0xbe00c4f9,0xbdf4f6f7,0xbe130d79,0xbcf51887,0x3d6abd4e,0x3dfdd009,0x3ddf1c8b,0x3df546a3,0x3e229cff,0x3df00d97,0x3de7fe74,0x3db0fb3e,0xbd29cc6c,0xbb637fdc,0x3c118f3f,0x3ca02d9a,0x3d2f64e8,0x3d0a544e,0x3d8faaf9,0x3d64c9e0,0xbd2e59f9,0x3ce95c96,0x3cafa649,0x3c3c0baa, +0xbca3abd5,0x3b09a08f,0xbd7f0605,0xbd4cb52e,0xbc040943,0x3d975b1f,0x3db1fa57,0x3dd28dcc,0x3e3ddb99,0x3b5ee64e,0xbdedc13a,0xbe73e92d,0xbe9f9944,0xbeb2f19a,0xbeafb2a7,0xbe9c30d6,0xbe893b17,0xbe4f18ba,0xbdfffb5a,0xbd549bf4,0x3c41b24e,0x3d801868,0x3dc2cbdc,0x3de4d3c7,0x3d2b3c58, +0x3d9ff27f,0x3d7baba0,0x3d04de8e,0x3cda27a2,0x3c4f22d9,0x3cf384ae,0x3cfd1b02,0x3d38f535,0x3d4eeb4b,0x3cbf9ff3,0xbc551696,0xbb54d42e,0xbc1e84d4,0xbd2882d0,0x3d5b1219,0xbd91e4cd,0x3d7156da,0x3d2c2ff3,0x3c1d421e,0x3bc8206b,0xbd1f628a,0xbd2fa510,0xbd5a84d9,0xbda2aeab,0xbdfdf205, +0xbe256da1,0xbe297cdc,0xbe2acde2,0xbe3484e4,0xbe1b36b7,0xbe018f05,0xbdbfafc9,0xbcfb22dc,0xbc91de80,0x3cae4af4,0x3d845142,0x3cab68bd,0x3d070290,0x3c9dae76,0x3c80b409,0x3cf27194,0x3d4cb456,0x3d6cfb4d,0x3cc82ac8,0x3d32d5d1,0x3d1774e9,0x3c59a906,0xbc954321,0xbcd5c165,0xbca0af4c, +0xbc21d9bc,0xbc4b9153,0xbcb65761,0xbced8c56,0xbd6a9cb1,0xbd9c2959,0xbd9f4c2a,0xbdbd2e7c,0xbde73783,0xbdced7f5,0xbdb85cfb,0xbdab0736,0xbdc19c0b,0xbdd98d48,0xbdf49e1f,0xbdcb69b2,0xbda30320,0xbd8ff6ab,0xbd9cd7a8,0xbde34c28,0xbd9a9a8c,0x3b4a944b,0xbcb4a6ae,0xbcd11700,0xbc8e3280, +0x3ca14f45,0xbc817b7e,0x3c50fbf3,0xbb36f273,0x3c62b89e,0x3c216823,0x3a6ce630,0x3b05c0cc,0x3bbae978,0x3c00ffdf,0x3c26925d,0x3bb8d892,0xbd6c6687,0xbd0e82ea,0xbce92488,0xbd005a33,0xbd048eb4,0xbd104b8a,0xbd06441e,0xbcfa8e8f,0xbd03b54e,0xbd17f7cd,0xbd1dae36,0xbd28f0d1,0xbd2569c3, +0xbd2b9c3a,0xbd3f8756,0xbd5cba05,0xbd665921,0xbd48bc9b,0xbd36d152,0xbd4b527c,0x3cad0732,0xbc802754,0xbc48bdac,0xbc73fa32,0xbacc92f9,0xbbbd1092,0xbbf0e79a,0xbc7aba4b,0xbc70a831,0xbcc72fcc,0xbcc37ed4,0xbd02f09e,0xbd06fb50,0xbd193348,0xbd407ddf,0xbd384701,0xbce6e176,0xbd069b6a, +0xbd1e0ed8,0xbd1cb613,0xbd1c194d,0xbd21fbb8,0xbd2c2633,0xbd3573d3,0xbd47aa4f,0xbd53f930,0xbd61c618,0xbd69d306,0xbd74ab7c,0xbd7e3bc2,0xbd6d1e89,0xbd5c1083,0xbd537ac0,0xbd592084,0xbd457e6a,0xbd7b6c0c,0xbd2ffe71,0xbcee89ca,0x3c0e4bf2,0xbd0f3ccf,0xbcb2e15f,0xba91d284,0xbbd3987a, +0xbc0526f1,0xbc5258c8,0xbc6ea7b4,0xbc8a360d,0xbc976efe,0xbd04e2c2,0xbd0f1c0b,0xbc674a5f,0xbced031f,0xbd3451a5,0x3ab9a68b,0xbd4c47df,0xbc3d971e,0xbcad8c49,0xbcb25c60,0xbceff9e1,0xbc017f4b,0x3b204709,0x3c5804cd,0x3c6270c5,0x3c8b87d7,0x3c982c2d,0x3ca9d08c,0x3caaf5fb,0x3cb0b2be, +0x3c9aef59,0x3c86e3bd,0x3c63119e,0x3c1e759e,0x3b9690bb,0x3c97150d,0xbd02309b,0xbd37dbcd,0xbd52c297,0xbccb6c7b,0xbd2f821f,0xbd3135a6,0xbd3748e2,0xbd30a2c9,0xbd281b29,0xbd358c00,0xbd3d9bb3,0xbd479cdb,0xbd2de1ce,0xbce64633,0xbd270679,0xbd572598,0xbd9a5059,0xbd964fe9,0xbd9655f6, +0xbdb42aa1,0xbdcb603d,0xbd298ccf,0xbc028f69,0x3c95f964,0x3cd08342,0x3cf74cdd,0x3cf2cff3,0x3d1f42bd,0x3d3898a6,0x3d4c6cf5,0x3d40a3b6,0x3d2ab2db,0x3d1710cb,0x3cc0e0ed,0x3cb95d14,0x3c61213a,0xbd45bf39,0xbc241528,0xbc97bf0f,0xbc8f7dbe,0xbc9d05a9,0xb9997df8,0xb98e349c,0xbb2eea14, +0xbc569895,0x3b4e5273,0x3c0a860c,0xbc61c60a,0xbcafd817,0xbd1b8469,0xbd1b5e0f,0xbd103afb,0xbdf124f7,0xbe069eb2,0xbdffecdf,0xbe152251,0xbe317997,0xbd3c02f3,0x3c53158c,0x3d8d5655,0x3d918279,0x3daefb80,0x3db90abb,0x3ddf96fe,0x3de70bab,0x3dee6e3f,0x3dd2e815,0x3db1fee5,0x3d93e852, +0x3d31cac7,0x3d2a7047,0x3c5c4a3a,0xbcdc70b0,0xbc8d0ac8,0xbc0dc271,0xbc73876f,0xbc93f28e,0x3c8b4cdf,0x3b506247,0x3c72837e,0xbb9ccd4e,0x3c9bfeac,0x3af21ff6,0xbca083ed,0xbcd0953e,0xbce44da1,0xbd59a285,0xbdacdc8f,0xbe3a3a66,0xbe6766a3,0xbe6251d4,0xbe990d3d,0xbeb57f71,0xbe21a298, +0xbd043225,0x3d5a2c3c,0x3d8668ae,0x3d6d9f2d,0x3d270c0c,0x3da16fcc,0x3dde9e95,0x3e08a591,0x3e054f0a,0x3dee3f0d,0x3dd0ec47,0x3d8d8b0a,0x3d88bc62,0x3d17516c,0xbd22b1af,0x3b59432e,0xbcde3b22,0xbbafece7,0x3ba9a972,0x3cd8a855,0x3d13c38a,0x3d4fe138,0x3d360063,0x3d5cd001,0x3d4be6c2, +0x3c02ac39,0xbcb3fd70,0xbd74fa28,0xbd93aea8,0xbdcb9bb1,0xbe4b3a00,0x3d4d2527,0x3e3db690,0x3e53a5fe,0x3eb51a0b,0x3ebd4ce9,0x3eab82c2,0x3e8689ea,0x3eb197a3,0x3ed9002d,0x3f05fed5,0x3f067e18,0x3efbbc23,0x3ee1df88,0x3ea9cf79,0x3e7f6d4a,0x3e4a9619,0x3dded9a1,0x3dab9248,0x3cb71203, +0xbd584433,0x3c556288,0xbaab766c,0x3c91bb57,0x3ce32cff,0x3d4508d2,0x3d821f20,0x3d701e85,0x3d083634,0x3cc1700a,0xbc67fa5d,0xbd84c464,0xbcd4cb12,0xbd665220,0xbd869451,0xbe0744d9,0xbdc265fe,0x3e3d8d6b,0x3f04de55,0x3ee871b0,0x3e9f834e,0x3e335da0,0x3df4d9ab,0x3d22d890,0x3cece365, +0x3d9481ab,0x3ddd4425,0x3e8dd085,0x3eb72b14,0x3ec942ee,0x3eadd881,0x3e8e9be5,0x3e425ac3,0x3e259d97,0x3e0d1520,0x3dc42c01,0x3d167068,0x39274e18,0x3bece013,0x3cbc98f8,0x3d1dcfc2,0x3ce865f7,0x3d6a37d0,0x3d80e5f1,0x3d21e5e7,0x3cdbf89d,0x3c7675a3,0x3c87517e,0xbcc5fb22,0xbb0003e3, +0xbd070d28,0x3d261b0d,0x3e9d4a88,0x3ed08e9e,0xbc80168d,0xbe58c88e,0xbed41a36,0xbe9ef63b,0xbe803072,0xbe278b0c,0xbe9d2274,0xbec4f0c8,0xbefa258d,0xbf010dd2,0xbefc4953,0xbed2b433,0xbec55bac,0xbe9b7e10,0xbe489917,0xbdc4af1d,0xbd88c8c0,0x3d363d52,0x3d960941,0x3d59ebe7,0x3d4062ea, +0x3c9bc08c,0x3c3385fb,0xbc80fa6f,0x3d02732d,0x3d48fbc4,0xbcb0e198,0x3d7162b9,0x3d4dab95,0xbad1c252,0x3b96534e,0x3d9d7477,0x3dbc2af8,0x3e116213,0x3e42a369,0xbd9468a4,0xbe97d9ed,0xbe5a83f3,0xbe9ea9e9,0xbe3790cf,0xbe263edc,0xbe15db73,0xbe65898d,0xbe914652,0xbea69f77,0xbec3b11d, +0xbed80afe,0xbedad530,0xbec3a45f,0xbea71a39,0xbe954a6f,0xbe72f351,0xbe4d0b2b,0xbd8d6c13,0x3d444073,0x3a8165af,0x3d0d691d,0x3c8325ad,0x3c9db185,0x3d198a0c,0x3d0f7ffe,0x3d31a2da,0xbc2e411a,0x3d4379d0,0x3d5df89b,0x3d2350cc,0x3d405e76,0x3cc2f236,0x3d39ce55,0x3da0af90,0xbd49d8e4, +0xbe01589e,0xbe0f98f5,0xbe11292e,0xbe2bf094,0xbd352393,0xbba698fb,0x3c5d4cfb,0x3ccf1c5e,0x3cc68426,0xba996cbf,0xbdcfaac6,0xbe2642cc,0xbe49beee,0xbe747902,0xbe751f6a,0xbe6d7575,0xbe2dc581,0xbe0b58d7,0xbdaa0aba,0x3d02d09e,0xbcf9a082,0xbcae92fe,0xbbcbe41f,0xbc8cddff,0xbc283bb9, +0xbbca7135,0x3bf02422,0x3c6f221c,0x3cca14d8,0x3cd4d1a8,0x3cbd91eb,0x3c570c0a,0x3bf2a156,0x3cc52294,0xbd9f3e41,0x3cb27b17,0xbd99f2dd,0xbd889678,0xbd3e61e4,0xbced46d0,0xbd0e31d8,0xbd6c8777,0xbd7932ae,0xbca911dd,0x3bc49a11,0x3c48999c,0xba880ee1,0xbc16b2e4,0xbc18971b,0xbcaa5479, +0xbd20b645,0xbdad058c,0xbde3dc39,0xbdfa69ca,0xbdd7295c,0xbdc7d389,0xbdc6b8b2,0xbd8dddec,0xbd8a8aef,0xbd187571,0xbc425ce0,0xbc35bb6b,0xbbd480c5,0xb9574e00,0x3c6adf30,0x3c9dd586,0x3c761055,0x3bb08f09,0xbc57c199,0xbcbbff22,0xbd03952f,0xbb5fbb8c,0x3be37c87,0xbbe9c20e,0xbc43dc46, +0xbcb53946,0xbccfb7aa,0xbc8404ba,0xbbb32e70,0xbcc142f6,0xbd154a7c,0xbd312a9f,0xbd16322c,0xbcf48212,0xbc8c3591,0xbd03a55e,0xbd33fe6e,0xbd3e5649,0xbd674bda,0xbd6be43e,0xbdb1a02a,0xbdc9e5cd,0xbd9dc5de,0xbd8f6852,0xbd5eb232,0xbd4157c4,0xbcfca013,0xbc7aaf20,0xba45708c,0x3cc8df99, +0x3c5809d2,0x3c8b30f3,0x3c742948,0x3c10ffd7,0x3b80dc46,0xbbaefc5c,0xbc0898b8,0xbc1fd33e,0xbcc924f5,0xbcda5e4a,0xbcaa2ea4,0xbc8fb3d2,0xbc619b1a,0xbc8a962e,0xbc8daae4,0xbcbd2527,0xbcd3753e,0xbcfdb1c7,0xbd0bf522,0xbd228630,0xbd35632c,0xbd3f95ed,0xbd46ddd9,0xbd596f84,0xbd6cd346, +0xbd6f576d,0xbd728d4b,0xbd6a6564,0xbd46f287,0xbd3ff4fd,0xbd27b19a,0xbd123506,0xbcf75d3b,0xbcf2d2fa,0xbcfa7a3b,0xbcd42dd3,0xbcc6fa8a,0xbc8cd8eb,0xbc605d45,0xbc682192,0xbc7b2a17,0xbc45c8ab,0xbc4bd608,0xbd0f6480,0xbce0dfdb,0xbcbf409b,0xbcc040c7,0xbcbc0cbe,0xbcb5b8fa,0xbca338b0, +0xbc8aabcb,0xbc8babd7,0xbc8cd939,0xbc90c547,0xbc9f5553,0xbcaa637a,0xbcb7c2db,0xbcc8c856,0xbcdb9a14,0xbce8a325,0xbcf4d69a,0xbd074146,0xbd0f04f5,0xbd319629,0xbd395018,0xbd2f5d70,0xbd15ed0a,0xbd262b87,0xbd07f520,0xbd0549fe,0xbd0359f2,0xbd090076,0xbd039999,0xbd0a2bf0,0xbd072f0a, +0xbceeab61,0xbcd65bde,0xbd187ab3,0xbd0f1a91,0xbcf58ddb,0x3dda55e3,0x3dbd81b4,0x3dec22d5,0x3dd97546,0x3df38514,0x3e0108d4,0x3e0008da,0x3dffe52a,0x3e04cfa5,0x3ded10d5,0x3dddb315,0x3dd05249,0x3dc86ed5,0x3dc3e7fa,0x3dbea440,0x3dc0cc01,0x3dbecc65,0x3db895be,0x3dbe0ec1,0x3db90d18, +0x3db9e834,0x3db8e534,0x3d929b24,0x3c7850a3,0x3dc006b9,0x3d93ef3b,0x3cbb054a,0x3cb146e6,0x3cb6c439,0x3cc5cd1c,0x3ce69bc5,0x3ce04678,0x3cc2fba1,0x3d8c8e80,0x3dce95bd,0x3becc364,0x3d8033b2,0x3c808c54,0x3e10faeb,0x3e1cca05,0x3e317722,0x3e4472cb,0x3e3e5547,0x3e3e864d,0x3e46cdcd, +0x3e292380,0x3e133caa,0x3df9dfa8,0x3dd0e594,0x3db17103,0x3d9cc8ea,0x3d9e7064,0x3d9e55e7,0x3d9273de,0x3da3c5d4,0x3d9da7c0,0x3da7317b,0x3d7deea1,0x3d91f1e7,0x3da1e101,0x3d8066d2,0x3d7957db,0x3dafd376,0x3da58c2f,0x3daf9600,0x3d98658f,0x3dba167a,0x3db855d7,0x3d8cf807,0x3da12245, +0x3d87a8c1,0x3d737370,0x3dad6464,0x3d82fc25,0x3e0f5747,0x3e67faba,0x3e7a9f7d,0x3e92104b,0x3e8886f1,0x3e848656,0x3e8d98b3,0x3e69ad29,0x3e4a9f06,0x3e26bc44,0x3e01ac46,0x3dda542a,0x3daff7c0,0x3da7123b,0x3d985aa4,0x3d6140db,0x3d8e5ece,0x3d72f6d7,0x3d6811de,0x3d8f37b2,0x3d3bc55e, +0x3d3bbd16,0x3d10dc3c,0x3d056201,0x3d805168,0x3d1dc8ea,0x3d5bc318,0x3d10f9cc,0x3d7ad258,0x3d56349c,0x3d09bc31,0x3d183007,0x3d045000,0x3d0916a1,0x3d9bac5e,0x3d28742d,0x3e436136,0x3e9d6185,0x3eb0d350,0x3ecf2903,0x3ebbdc1c,0x3ebbc1c7,0x3ec7837f,0x3ea610ab,0x3e8eef67,0x3e637c02, +0x3e0d2abd,0x3d9ae93c,0x3d043190,0x3cbfb9cf,0x3c6e8668,0xbc10af64,0x3c6e7323,0x3c17ff50,0x3cb6b3b0,0x3d4b638d,0x3cb48d08,0x3cc5ca43,0x3a6f90ef,0x3bf002a9,0x3d0ec4cd,0x3d00411d,0x3d11c9a5,0x3cecf78b,0x3d534c8e,0x3d39dafa,0x3c693000,0x3cc3e04e,0x3cad8887,0x3cef60f0,0x3d6604a9, +0x3e8b218e,0x3e959e09,0x3e80bc83,0x3e953048,0x3e6eee9a,0x3e277dbf,0x3e0a05d5,0x3dd322a5,0x3e0e7f41,0x3e14a456,0x3e033cb1,0x3e5d174c,0x3e712dae,0x3e617326,0x3e3c5142,0x3e20785f,0x3e07ec02,0x3de6168a,0x3d8d0c54,0x3dae7b3a,0x3da75295,0x3d02bc56,0x3d117747,0x3cc8e6b5,0x3d0b02e6, +0x3d2cdfe4,0x3d457588,0x3d30f7e0,0x3cad241e,0x3cce7eb3,0x3d36cecc,0x3d90445f,0x3da49c33,0x3dcc7923,0x3e10d51b,0x3e3f544a,0x3e3fa661,0xbb1f657b,0xbed0011b,0xbed96bec,0xbecc37f1,0xbe4efecd,0xbdbf1557,0xbca5016f,0xbd999164,0xbe49411b,0xbe966723,0xbeda4bc6,0xbef9cbb4,0xbef68ca4, +0xbee41a55,0xbec392bf,0xbea2300c,0xbe58d84d,0xbe1070ab,0xbcfc0b0d,0x3d9c0620,0x3d964f02,0x3d76f416,0x3cea9ca2,0x3ce1821b,0x3d378f54,0x3d3ceb32,0x3d676a61,0x3d163a81,0x3d2f6650,0x3d205030,0x3d030c25,0x3d481a9e,0x3d65f276,0x3dbc982e,0x3d805376,0xbdc4dff5,0xbe914ce7,0xbe28f757, +0x3c3394c3,0x3e641aeb,0x3d652671,0xbd79a66a,0xbe21c37b,0xbd5b3158,0xbc35da29,0x3d815214,0x3d373470,0x3c962874,0xbd3d8de9,0xbdf5bfa0,0xbe239e97,0xbe315754,0xbe1e35b9,0xbe0bda7f,0xbde4d1ba,0xbd7f905b,0xbc959853,0x3d0d09c8,0x3cf868f1,0x3d2bfbee,0x3d6573cc,0x3d8293ef,0x3d897223, +0xbbe5692c,0x3d9ca93c,0x3d96c938,0x3cacbc64,0x3d90b90f,0x3c9a92fe,0x3d29bfbb,0xbc8ea84f,0xbe1e1e5c,0xbd0a07f4,0x3dd191e6,0x3db6ab61,0x3e8a01e4,0x3dab17b6,0x3d428581,0xbc7a8002,0x3d81aba9,0x3ddd545a,0x3e1c788e,0x3e1031ad,0x3dee0917,0x3d6f2a11,0x3d68111c,0x3cdf2203,0xbbc37eec, +0xbcc991cc,0xbd15f50f,0xbda9a5e6,0xbdc0fdcf,0xbd7f0d3e,0xbdac93eb,0xbd6e90e7,0xbd015992,0xba583406,0x3bf83cc4,0x3c68d797,0xbc5af8ec,0x3cfd88bd,0x3d0bc8ae,0x3cb83b57,0x3c5a0223,0x3bfa39df,0xbba7baee,0xbd7325a0,0xbb934cae,0x3d0aa0fd,0x3dea8cfe,0x3dfe1840,0x3dfb71c0,0xbab33fbc, +0xbd1ad495,0xbd30d3ee,0xbd247170,0xbd1f889d,0xbcf9b37b,0x3d477b57,0x3dacf123,0x3d88a897,0x3d87e3d5,0x3d36fa87,0x3caa4d6c,0xbcdc8a88,0xbd027ed0,0xbd7e122c,0xbde170fc,0xbd8555df,0xbd5a156d,0xbcd06738,0x3b22aba2,0x3c94bbce,0xbbcd4031,0xbc45d60c,0xbb9dec19,0x3cc3d717,0x3d1bc0d8, +0x3d4e1944,0x3c91d14c,0xb9db3f74,0xbc7b4d4c,0x3d196b7e,0xbd6a779f,0x3d37f23e,0x3da5b4bf,0x3d73a8c2,0x3c289a4c,0xbbc88e48,0x3b5a7bc4,0x3c697515,0xbd0a1adc,0xbd40d9e8,0xbce0c40a,0xbc06adcc,0xbb394edd,0xbbbae00f,0xbd2f3a2d,0xbd596037,0xbd1f678b,0xbcadcf1a,0x3c119e97,0xbc575b1b, +0xbd2c8572,0x3beb6df8,0x3ba2e241,0x3b82764f,0xbbc3e82f,0xbae07bc4,0x3c3a841f,0x3c8b91f7,0x3c449740,0x3bea1926,0x3bc3335b,0x3c387238,0xbc056ba1,0xbc2f3aeb,0xbc6eb68b,0xbc80da04,0x3c13444d,0x3c08997d,0x3c94c5a3,0x3c8f4b7e,0x3ce0b6cc,0x3caf23ea,0x3b8c7099,0xbc74ea4b,0xbc6cfb25, +0xbc907eab,0xbccfe47c,0xbd15c04b,0xbd35aff2,0xbd525f12,0xbd42146d,0xbd4e7147,0xbd7fbbf4,0xbd2c8892,0xbc380e52,0x3b87120d,0xbc65eb6d,0xbbd8d139,0x3b9393d8,0x3c01fabc,0xba2d0b7b,0x3cbcf323,0xbabf5432,0x3c026729,0xbc4ea4d9,0x3b62c5ae,0x3a8a4404,0x3c3454f4,0x3c20cda3,0x3c007ef6, +0x3bbb4e49,0x3c680712,0xbd2a2222,0xbccb4bcb,0xbcc573f5,0xbcf04f74,0xbd00d86b,0xbd14d405,0xbd0e2b1b,0xbd120063,0xbd07ce05,0xbd073852,0xbd03910d,0xbd09a35b,0xbd156833,0xbd2d9ea5,0xbd15caef,0xbced2a71,0xbc9b871f,0xbc83d256,0xbc66d8c7,0xbc6df2f9,0xbd4c77f5,0xbcb929a5,0xbca68b47, +0xbc64a16a,0xbc9acf48,0xbc29669f,0xbc1538e6,0xbbdd08ab,0xbc6b1423,0xbc096bba,0xbc078c52,0xbc40c67f,0xbc7a4f09,0xbca4d606,0xbcce19fe,0xbccd956d,0xbc49cffe,0xbc4b8f69,0xbc8f1e2e,0xbc90d031,0xbc9ee143,0xbca29b76,0xbcb039f3,0xbcc0ca68,0xbcc3346a,0xbcc4aaf2,0xbcc17c6f,0xbcb69bc1, +0xbca3a083,0xbc96621a,0xbc7f3bfa,0xbc720c1f,0xbc5dab75,0xbc3bfa19,0xbc2344c8,0x3ae637a6,0xbc261414,0xbc80ef79,0xbd08071c,0xbc2b1f17,0xbc7f0a42,0xbcf25d40,0xbceb704c,0xbcddd602,0xbcb137f2,0xbcb7ede7,0xbca930bc,0xbc9283fd,0xbc664e9c,0xbc3610a2,0xbca1c5db,0xbc7cf561,0xbc7ed3dc, +0xbd0a65f8,0x3cdc81c1,0xbd1e9754,0xbc7dde5e,0xbcc28928,0xbc9ee6ef,0xbd269877,0xbd461030,0xbd5373ac,0xbd4f7124,0xbd4aebea,0xbd3cc131,0xbd3f782c,0xbd3e6517,0xbd3ba5d5,0xbd3ba99a,0xbd35eb3d,0xbd2c343b,0xbd216870,0xbd050d95,0xbd5476ba,0x3c2e8b93,0x3d465ca4,0x3df19c9b,0xbb7e4439, +0x3d410afc,0x3dec449d,0x3de7e3ef,0x3de1cfad,0x3dcdf944,0x3de22b77,0x3de518e4,0x3dd69441,0x3d496473,0xbbefd908,0x3df21917,0x3d843e33,0x3debf487,0xbbf2aef1,0xbc1a3915,0xbc46dbeb,0xbc07c1b9,0xbd694066,0xbd9b0bcc,0xbda36b6d,0xbda7d0c6,0xbd9bc651,0xbd79d51d,0xbd6a64fc,0xbd5cd92a, +0xbd5c01d2,0xbd68b690,0xbd61b8be,0xbd518e3c,0xbd31413d,0xbd2a1d3a,0xbd3520f3,0x3d47ef4b,0xbbc8a4e3,0xbb80a135,0x3c0a9c4e,0x3ca8d550,0x3ba03d59,0xb9a657ae,0xb9806ebe,0x3c5bd433,0xbaf17f58,0xbc53e015,0x3ad58848,0x3c0c0fe5,0x3d11280d,0x3d151fe9,0x3bcb149c,0x3dbf488d,0x3d4602cc, +0xbc2be053,0xbab6a24c,0x3c358819,0xbdb325b0,0xbdfaefcb,0xbe1104ff,0xbe1c0399,0xbe193030,0xbe04f77c,0xbe0114f7,0xbdfd9b36,0xbdefbe49,0xbde838fb,0xbdd3b445,0xbdb41f56,0xbd895e32,0xbd70d050,0xbd329a4a,0xbc089b2d,0x3b961d71,0xbb6df382,0x3ab16f3a,0x3cd422d7,0x3cb55561,0x3d200a78, +0x3bb7786c,0x3cfa52b3,0x3c8e440f,0x3d26f523,0x3c1826db,0x3d1072fa,0x3d3833fd,0x3d821e9f,0x3d5ad7b3,0x3e099571,0x3d67ca64,0xbcd0b8b2,0x3b47733d,0x3ce669b6,0xbdd5c1d1,0xbe2bf6bf,0xbe4601f4,0xbe4eef95,0xbe436b3f,0xbe0e2817,0xbddf5ebf,0xbdbc862d,0xbdbb2207,0xbdc59b92,0xbdb3e04d, +0xbd93ac8d,0xbd4a9c3f,0xbd35c1ee,0xbd4e702e,0xbba9ffcc,0xbcb012bf,0x3b6262e4,0xbc5aa9c2,0xbb76ca64,0x3ca7bdb9,0x3cc84154,0x3d0cba2e,0x3c1302f8,0x3d19e120,0x3cd87ce3,0xbb76891c,0x3d273729,0x3d96fb95,0x3d8768f3,0x3d7b7db6,0x3cd51cdd,0xbe30e65e,0xbe603895,0xbe6fb865,0xbe07afd8, +0xbdc14d2d,0xbd98a554,0xbdb8fc6e,0xbe2caf43,0xbe600bb6,0xbe8638dd,0xbecae65c,0xbee4c59a,0xbee3aea0,0xbec60808,0xbeaf998b,0xbea0a288,0xbe6da53f,0xbe2b45bc,0xbdcca0f2,0xbc5c320a,0xbcd34b1e,0xbc23ff01,0xbbc0123c,0x3c565ca8,0x3d2d212d,0x3cd1e771,0x3cf0f576,0x3d0660a8,0x3d3c9f9f, +0x3d0ba2de,0x3c596361,0xbc3921c9,0x3b380a5b,0x396838c4,0x3d8415bd,0xbe29e031,0xbdfd0915,0x3dda9449,0x3e3da17a,0x3e91075d,0x3e5934a7,0x3e21f09b,0x3d41c265,0x3dfa7d7e,0x3e0f1f21,0x3dab2e05,0x3d96ffa8,0x3cb180f7,0xbdadd850,0xbe0514a6,0xbe0875bc,0xbd7bbda3,0xbdcac736,0xbdd77db2, +0xbdccb8aa,0xbdceca20,0xbd67babb,0xbd26645b,0xbccc9586,0xbbc307bf,0x3cdab29f,0x3d10b331,0x3d4c2019,0x3d125a44,0x3d89cf4d,0x3d957f28,0x3d8c3bc2,0x3d252e80,0xbc1338aa,0xbd515173,0xbda22a23,0xbce01ff1,0x3df951fa,0x3e004922,0x3d0f80a5,0xbd88f99c,0x3db36435,0x3e0237ac,0x3cab169b, +0x3d709d10,0x3daa49e1,0x3d86e55f,0x3de5cae8,0x3de9552b,0x3db3b9e8,0x3df2d38e,0x3ddc5566,0x3db803cd,0x3d19e571,0x3cf55dd0,0xbbb8f643,0xbcb4c5d5,0xbcc281c9,0xbcf646d5,0xbc56e033,0x3c020ecc,0x3d71023e,0x3d4a68eb,0x3d337565,0x38feef42,0x3d271e19,0x3caca2f9,0x3b80f857,0xbcbcbcb5, +0xbcad0816,0xbd353af7,0xbcb39ae7,0x3db8842e,0x3d456160,0xbde3fc0d,0xbddce459,0xbdee34fb,0x3cb80808,0x3cd8d55b,0xbd198aec,0xbdba34ad,0xbe09e11e,0xbe005212,0xbdc8e85a,0xbd720d02,0xbc1dab42,0xbc6235ff,0xbb6b10ba,0x3c987a96,0x3c52179b,0x3c80f10e,0x3b7af8b1,0xbce84206,0xbb77dff0, +0x3c5a5c84,0x3c43a8f5,0x3cbd8653,0x3d15d0c9,0x3cb572da,0x3c2d43ed,0xbc798b8f,0x3c9a65a8,0x3d008369,0x3d5cf27e,0x3cde27c8,0x3c119aad,0x3c57c1ca,0x3d47164f,0x3c89a7d1,0xbc8cb0c7,0xbdd6667e,0xbd98d7b3,0x3cffd777,0x3d9de009,0x3d886b3d,0xbbae7774,0xbc8c3874,0xbc8e6a22,0x3c20a90e, +0xbd8f9580,0xbdc47ef4,0xbd85cdfd,0xbd7fab18,0xbd4c1c28,0xbc880671,0x3c7f21ff,0x3d0c91f4,0x3d5a3e9c,0x3ceb52df,0x3d1c3549,0x3c293dd8,0x3c6fb13d,0x3cbbe32e,0x3d0259aa,0x3cb760d0,0x3c901b98,0xbc619c00,0x3c01265a,0x3c16b78c,0x3be38a06,0x3c8ee5ed,0x3cd08c42,0x3cdd0d7e,0x3c283983, +0x3cd62f8f,0xbd3b528e,0xbd16477c,0x3c4e0ba0,0x3d851f02,0x3d5c3340,0x3c9a60e0,0xbd11cd02,0xbd19f1d8,0xbd5cf270,0xbd953710,0xbdadbc5a,0xbdbf3be2,0xbddbeb2e,0xbd921a9b,0xbd06833c,0x3c97175b,0x3d3c7451,0x3d45a535,0x3d0724cc,0x3d2001e0,0x3d0208c5,0x3c804e1d,0x3cb2d1f3,0x3c87ef56, +0x3c65bfbe,0x3be25e40,0x3bea79e6,0x3c9a7fd3,0x3c8ffcb0,0x3cb217d1,0x3c9147d3,0x3cd81f62,0x3ca5686e,0x3b82ee1b,0xbbb9669d,0x3d0be069,0x3d265027,0x3cc7df2c,0x3c903e6c,0x3c05c864,0xbc44d1ba,0xbcbc48bc,0xbd069bc9,0xbcdb1a42,0xbccba57a,0xbce1c803,0xbc750150,0xbbd85880,0xbbef2624, +0x3c2dbfc4,0x3cc9f0d9,0x3d264142,0x3d1ac30e,0x3d33ef01,0x3d3f29d6,0x3d0a5042,0x3cf22f29,0x3caf71ed,0x3cd6fe29,0x3cfb4378,0x3cee680e,0x3cf44ecb,0x3d0633a7,0x3cbf3205,0x3ce0046f,0x3ca7990d,0x3cc32b07,0x3c913a78,0x3c9516fc,0x3c72acb3,0x3cb72daf,0x3ab9371b,0x3d0a8c66,0x3ccd7675, +0x3c8f52a5,0x3c2c84fb,0x3b9d990b,0xbb1028e5,0xbc4180cb,0xbc4c2b7a,0xbc553e80,0xbc4056e6,0xbc3305e8,0xbc12c6e0,0xbbe29042,0xbb0362e8,0x3a5b50f3,0x3baccc82,0x3c4489c3,0x3c8f7851,0x3ccf5846,0x3c1e3b1a,0x3ca6bde6,0x3c8ec45a,0x3c3dc52a,0x3bfb9cf1,0x3c159d6e,0x3c5ec2bf,0x3c859193, +0x3c8a6120,0x3cca5fbc,0x3cec7906,0x3cce9105,0x3cdf99d1,0x3ca76f46,0x3c97a106,0x3cf5c19e,0x3b301beb,0x3cf79083,0x3ca2a6d1,0x3c97f4b1,0x3c8167fe,0x3c58521f,0x3c3489c4,0x3c078dfd,0x3c18a420,0x3c10faa5,0x3c033e5a,0x3bc4c22d,0x3b763790,0x3a478556,0x3b68ab47,0x3bc9ceab,0x3c04be89, +0x3c265456,0x3c31edc6,0x3c889e4d,0x3ac6ec51,0xbbf08669,0xbc9acb8d,0x3be7a08f,0xbbbc93b7,0xbc95ddb5,0xbc93d056,0xbc90608d,0xbc852b20,0xbc926bf7,0xbc91fc33,0xbc8091e4,0xbaa3e12b,0x3c843401,0xbcafa204,0xbbe0910d,0x3ca3218a,0xbd43371e,0xbd835a65,0xbd5438a1,0xbd5a70f3,0xbd66c81f, +0xbd6f5dd6,0xbd4a0541,0xbd3bde1d,0xbd42e8b8,0xbd236d29,0xbd1b478a,0xbd21f8ad,0xbd1f53ba,0xbd222909,0xbd2826e8,0xbd271380,0xbd257f63,0xbd1aef60,0xbd270b61,0xbd2a3d7d,0xbd0c575c,0xbd6d0700,0xbd82829c,0xbd706801,0xbd4b17f5,0xbd6be2b9,0xbd5727a3,0xbd5ea81d,0xbd60690d,0xbd604c3f, +0xbd6bd39b,0xbd6f784c,0xbd742bcf,0xbd70b723,0xbd62e66f,0xbd5c5d08,0xbd81b637,0xbd7f8b5c,0xbdcad3db,0xbdd5fab0,0xbddc04ec,0xbdd59ef8,0xbd94830b,0xbd7b383e,0xbd8b9b89,0xbd36e460,0xbd2718c4,0xbd4b027f,0xbd43d216,0xbd44b708,0xbd43b52e,0xbd308c4e,0xbd2453ac,0xbd096720,0xbd29f964, +0xbd22bef8,0xbd2017c5,0xbd7bc0a8,0xbd378662,0xbd3d8726,0xbd18fd14,0xbd0d9c69,0xbcdfb515,0xbceaa700,0xbd0113a5,0xbd119d58,0xbcf8d8e2,0xbcf49e11,0xbd2a1d56,0xbd4ad3ae,0xbd74e0f6,0xbd79beb2,0xbd809750,0xbda2fb29,0xbdd5aac3,0xbe02bbc9,0xbe07c6e0,0xbe12279e,0xbdb52617,0xbd91573f, +0xbdb1c7cc,0xbd0a5d75,0xbcd3ea4d,0xbd1b83ec,0xbd140490,0xbd1bb128,0xbd250d07,0xbd13c5e3,0xbd02b0e3,0xbc988764,0xbd14a359,0xbd0a1513,0xbd092a8a,0xbd53c3bb,0xbd2d3866,0xbd014dfc,0xbc89fda4,0xbc2cb071,0x3baa3d04,0xbbbe679d,0xbb381729,0xbc637828,0xbb226ff8,0xbc822490,0xbce1f95f, +0xbcfc70c2,0xbd1d1f0d,0xbd74fe2a,0xbd9e2cc8,0xbe06bfbb,0xbe56f41d,0xbe73107c,0xbe80d68c,0xbe801fb5,0xbe1735d8,0xbde8d283,0xbe053305,0xbd38b5f2,0xbcf0246f,0xbd87f429,0xbd8f323b,0xbd93f191,0xbd803135,0xbd27af91,0xbcd11f0a,0xbbfb3061,0xbd032a3a,0xbd0740e1,0xbd0694af,0xbd4901e6, +0xbd122bfd,0xbd0baba3,0xbc50a421,0x3b42b811,0x3cb09f3a,0x3cb678ac,0x3ccda98a,0x3c8e192b,0x3cfa7e40,0x3c86f440,0xbcb740e2,0xbd3d68ca,0xbd95020f,0xbdc73390,0xbdd196cd,0xbba131bd,0x3e5152ac,0x3e9f9762,0x3e8aea89,0x3df2efdb,0x3dc083d3,0x3cd18192,0xbd4db11e,0xbd9274e5,0xbdc76dc5, +0xbdc676a3,0xbd381194,0xbc76d6ef,0xbc9bc13d,0xbc8b4062,0xbcb276c6,0xbc479914,0xbc921c51,0xbc8252e0,0xbd7a5169,0xbd9f8c1c,0xbd1c2024,0xbcbd40d2,0xbc1ede92,0x3b16831f,0x3d1407ee,0x3c68108b,0x3c948041,0x3d0264c4,0x3c5f2bc8,0x3c2d5e1e,0x3cd80b36,0x3d5d9b0a,0x3d1fb492,0x3d394981, +0xbbfabc8c,0x3da43e7a,0x3e2c1ab3,0x3d94d1f0,0x3c1b59cc,0xbc2c94ff,0xbc023fcd,0xbb18dce9,0x3d2239e8,0xbd7ff94e,0xbd897904,0x3d5dfa8f,0x3d4e0101,0x3d879e51,0x3dcae47d,0x3de83d35,0x3dd97e5a,0x3d999155,0x3d0f592a,0x3c1a78cd,0xbd0671ce,0xbd81b5ba,0xbd838cf6,0xbd25d140,0xbc2eec7e, +0x3c260c2a,0x3d4450fe,0x3ce2323e,0x3cd795f5,0x3cc3499d,0x3d6adcd8,0x3d65a00e,0x3cd6bd93,0x3bfd0a5d,0x3d0791cf,0x3d2d9876,0x3d9f20cf,0x3d97591f,0x3c9cf46e,0xbc9063ba,0xbc9dc0f9,0xbd2d7c18,0xbd3228bb,0xbd3ddb25,0x39d21523,0xbd8db16a,0xbdc5b065,0xbd1d2fc1,0xbd7a1b76,0xbd26c78f, +0x3b68285b,0xbc531783,0xbc8b1bbf,0xbce36ba3,0x3d005e9b,0x3d468425,0x3d00467c,0x3d1c50be,0x3cf3a821,0x3c863075,0x3ba22df5,0x3c63df2b,0x3d8dbeb2,0x3c1b6b10,0x3aa55121,0x3b0617df,0x3d1202be,0x3d1cb65b,0x3d5dff43,0x3cca2462,0x3d1fb1b3,0x3d5480ea,0x3d89419f,0xbc809950,0x3d12bc58, +0x3df00a9f,0x3da21245,0x3ceb7d41,0x3d74039d,0x3daa012d,0x3dfc8bb4,0x3d895c77,0x3d0e7d7f,0x3ca1e9c6,0xbd11725d,0xbd2a72ca,0xbc3ef17f,0xbb8f92e2,0x3a467a45,0xbbb7c989,0xbbd067bb,0x3bf81212,0x3cef4b52,0x3cfc9973,0x3d1cf567,0x3d6eb743,0x3d111837,0x3d1af6bb,0x3da13ce1,0x3c5abdd3, +0xbaac0605,0xbbb7fd11,0x3b4bb40d,0x3c8a00ed,0x3d600a1d,0x3c7c3f57,0x3c88c711,0x3c81b922,0x3c0d653e,0x3c28a0f8,0x3d50ebff,0x3ca2e752,0xbcd62c78,0xbd33fba2,0x3c08ffb9,0x3cbb3d80,0x3cdd810d,0xbd25ba48,0xbda00f8b,0xbdc51dcd,0xbd4c83d6,0xbcf81d44,0xbd5180d4,0xbc8c047d,0x3b1ac7f6, +0x3cb13973,0x3d09ed20,0x3d06fd1d,0x3d02a136,0x3d01a2fd,0x3cb32c06,0x3cdfb6e7,0x3cba2a28,0x3cd143aa,0x3d103c58,0x3d2fb539,0x3d2f3fff,0x3cafbfb9,0x3cab77ac,0x3c8b4fd7,0x3cccc9b4,0x3cc64a71,0x3c9588ae,0x3bb19378,0x3c880b72,0xbd46a626,0xbd054617,0xbd10b341,0xbd12825b,0xbc82d803, +0xbc4d55cc,0x3be9acc5,0x3d0e2ab3,0x3b8b3f0b,0xbcbaccfa,0xbd4e78d6,0xbd1952a1,0xbc5dbe10,0x3c576d33,0x3d3c6e05,0x3d349616,0x3cf359f5,0x3bbbf1ca,0xbb17b3f3,0x3c724e49,0x3ceeec05,0x3cd62596,0x3d0e063a,0x3cf56635,0x3ccb49c6,0x3c671ac6,0x3c34da44,0x3c3dae47,0x3cc92e6b,0x3ccbdc04, +0x3cb49339,0x3c8a4de5,0x3cd99fc6,0x3cd05bc2,0x3c3082c3,0x39a8ef85,0xbc5911a9,0xbd033937,0xbc83f3fd,0xbb5b17f4,0x3be3eb5a,0x3c6ef9e7,0x3cb04e61,0x3cf8d502,0x3ce50446,0x3cff6a95,0x3d116c23,0x3cc29228,0x3c2c66f6,0x39c02de1,0x3b6e4dfe,0x3c4b0e8a,0x3ce4d31a,0x3cd7e657,0x3c87e896, +0x3c6b18c6,0x3cbcce70,0x3c355e9c,0x3b938f03,0x3be74bea,0x3c269526,0x3c949c2a,0x3cacb48e,0x3cd6ce00,0x3d127d4a,0x3c90909d,0x3c41179d,0xbb5e2777,0xbc004b17,0xbc6addd7,0xbc8a29ab,0xbc9b9ccf,0x3d4c0074,0x3cd3a068,0x3cdb0afe,0x3cfd2526,0x3d07f3d8,0x3d16a09f,0x3d21db6d,0x3d2edb4b, +0x3d32bcff,0x3d2fdf7e,0x3d2ca541,0x3d2e2b43,0x3d3a6f49,0x3d422d4c,0x3d3af76d,0x3d282a7f,0x3d0f68ef,0x3cff9640,0x3ceb8bca,0x3cdb160e,0x3cf60c98,0x3cf03939,0x3d12746e,0x3d1fd01f,0x3d21177d,0x3d3392c5,0x3d23be8a,0x3d193c98,0x3d0fe27c,0x3d04c64d,0x3cf110d4,0x3d06f384,0x3d03991b, +0x3d19033c,0x3d26c5e3,0x3cf36009,0x3d0e544a,0x3c5dc728,0x3ca48923,0x3ca4aa58,0x3cad0729,0x3cb575be,0x3cbed5fc,0x3cca9eb9,0x3cd54f5d,0x3ce57e87,0x3cf62318,0x3d0598aa,0x3d0c1876,0x3d1556e5,0x3d06eee3,0x3cfe0869,0x3cefa1cd,0x3ce3342d,0x3cd42f9a,0x3cb11739,0x3d0682a1,0x3d1d2cf2, +0x3d082f9c,0x3d0d599d,0x3d2a5ecf,0x3d1096c2,0x3d108c27,0x3d157c29,0x3d160b0b,0x3d201c6a,0x3d24f55e,0x3d23be68,0x3d1af6f0,0x3cde02d2,0x3d28f9b3,0x3d2823b1,0x3c99e2e2,0x3b9dc039,0xbbea4bec,0x3c43a62d,0xbae60c15,0x3a5e306f,0xb91c60b9,0x3a06fb97,0x39a29788,0xbb232ec8,0xba686c6f, +0xb903ce8f,0x3b2f2b5b,0x3addec59,0x3b16411b,0x3af50208,0x3bc49ce3,0x3bfe99f5,0x3c21ba2a,0x3bf7d11a,0x3ba73597,0x3c45584e,0xbb1b8997,0xbc480f68,0xbd17c788,0x3b91026c,0xbbee5cf8,0xbce83662,0xbcf99bc0,0xbcf69aec,0xbce007b8,0xbce2cc7c,0xbcf2fa3c,0xbd00db4e,0xbc748492,0x3b9105e1, +0xbd39a28e,0xbcb07e1c,0xbd7a737a,0x3c9562db,0x3c9709a2,0x3ca87775,0x3c98e2fa,0x3c2deca5,0x3b5f4b34,0xbbda03fe,0xbb724d74,0xbb37e1b3,0x3af6f702,0xbbd75835,0xbc0ada31,0xbc1260fe,0x3a263e81,0x3bd81236,0x3c6050e0,0x3c038fb6,0x3bfd0bdf,0x3c4706ce,0xbca4b42e,0xba3e0207,0x3a7d9af2, +0x3ad3b7d5,0x3abfd549,0x3c7333c1,0x3c076f86,0x3c009f45,0x3bdbb4b2,0x3c0025ee,0x3c0456d5,0xbb19a7ad,0xb99e098e,0xbc06fa1d,0xbc90c219,0xbc00b9a1,0xbcf8adf3,0x3bdad606,0x3cf4860c,0x3c40e928,0x3c045958,0xbc6ff33c,0xbca2ce2b,0xbd04dfcd,0xbcac540a,0xbc48aa89,0x3bce45a5,0x3b1fcb22, +0x3b62f1dd,0xba5a140f,0x3c896eb2,0x3cc407b8,0x3d0330ac,0x3c908e6a,0x3c7a6537,0x3c49990f,0xbb2e7c63,0xbb995513,0x3bc008cb,0x3c3b62e9,0x3c36f274,0x3d035d5e,0x3be5bea2,0x3c514bf9,0x3c2208b1,0x3c589fcd,0x3bb5c749,0xbb3362b3,0xbc14a1a3,0xbcad1c7d,0xbcc03940,0xbbb149ce,0xbd5663c7, +0x3d6ddde5,0x3ddba12e,0x3dcac3df,0x3dac5454,0x3cfa9047,0x3bb31711,0xbcd47b86,0xbc8d0507,0xbc6ac986,0x3b87988b,0xbc8bccb3,0xbcc40d4d,0xbcee55f2,0xbbad6245,0x3c1ec144,0x3ceaefba,0x3c0c9d95,0x3c2f6239,0x3c2af70c,0xbcca61dd,0xbb5863d7,0xbc2eae3d,0x3bd096c3,0x3c6c36ec,0x3d275c53, +0x3cc0c11d,0x3c9bccd9,0x3cbf8d1d,0x3ce2b808,0x3c4586e8,0xbc1a34b1,0xbbf9c207,0xbc9ea4f8,0xbc8f2e9b,0xbcb3ba55,0x3e6200b1,0x3deb1a30,0xbc199387,0xbd505118,0xbe202e23,0xbe3b47f9,0xbe3519f9,0xbe096cd9,0xbd31ccc0,0x3d3ef6e5,0x3e0f9a3d,0x3e25870c,0x3e2ebb72,0x3e2c7979,0x3e0ad825, +0x3df02b59,0x3dfb4d44,0x3d95a563,0x3d4e96db,0x3d05b3ea,0x39912d05,0x3c7d149d,0xbb405291,0x3c67d583,0x3c82a8c4,0x3cf69ab5,0x3c26473d,0x3c5e7bf2,0x3cfd42e6,0x3cfd5d6b,0x3d5c5940,0x3d99a83d,0x3d36af6d,0x3d663619,0x3db488b6,0x3e2c55d5,0x3d958a90,0x3bcfc9e5,0xbbb2625c,0x3d11d209, +0xbc44276c,0x3e01d2d0,0x3e09681a,0x3dc8f569,0x3d63efe0,0xbb344b59,0xbdae846a,0xbdd0b4f9,0xbdcd49bf,0xbde2104f,0xbd8ecacc,0xbd8fba69,0xbdc21320,0xbcdb0076,0x3c8e196b,0x3cbf7cd8,0x3d328f75,0x3d1c5abd,0x3cd69cda,0x3cd95abe,0x3cc59efb,0x3d5568ca,0x3d0db696,0x3cf55a11,0x3c53af9d, +0x3d48a3c2,0x3d46d360,0x3d2cdae7,0x3d8a9289,0x3d9ccc87,0x3da78271,0x3d3a82e8,0x3d10f584,0x3cc73849,0xbcb4b0a2,0xbbdc9bdd,0xbc74c762,0x3cd54dab,0x3d8ec79c,0x3e01c22f,0x3d95f859,0x3d23ddb2,0xbc80670c,0xbd4f5b1b,0xbdb69fd8,0xbe0d91e6,0xbdf0bad2,0xbdbb8aa6,0xbd480687,0xbd2b6176, +0xbd0d1048,0xbb2893c9,0x3b603783,0x3c3a7541,0x3caed737,0x3c605cca,0x3cfc9aa7,0x3dd586b4,0x39099d7d,0xbc9bc339,0x3c177a3d,0x3cd725c8,0x3d3c7aae,0x3dc98980,0x3d430c7a,0x3c2d1072,0x3d6e251e,0x3cf56186,0x3d49ad15,0xbbd6d8b5,0xbd3d1134,0xbd08be73,0xbdee8752,0xbd837e37,0xbd893bf8, +0xbda7e4e2,0xbda4443b,0xbdbbdf06,0xbdfc08e0,0xbd4dd512,0xbc3db7ea,0xbc13064a,0x3c66de43,0x3c5d2015,0xb8a73ef3,0xbb1880b2,0xbbd2c8f8,0x3bdb65bf,0x3ceb6187,0x3c61ecc7,0x398845ae,0x3c6d103b,0x3cd79871,0x3d91ee3a,0x3cd38274,0x3c741b5d,0x3cf91f49,0x3b035cad,0x3c57d05c,0x3d510723, +0x3d048606,0x3c97bcac,0x3cb1a707,0x3c8e5987,0x3c61dd9d,0xbc9ba9a9,0x3b81e74f,0xbb250745,0xbdabce56,0xbd0405f6,0xbcdd69a6,0xbd41713b,0xbd0c1529,0xbd1b6e69,0xbd4a4f41,0xbd3d5f51,0xbcd17722,0x3cd6d442,0x3c7088ff,0x3c172c10,0xbc7584c5,0xbcb2d8cb,0xbc596a8c,0xbbbcb354,0x3c47ffba, +0x3c46b521,0x3c8f6fd4,0x3ca8305c,0x3c48fccd,0x3c50ebe6,0x3c540706,0x3c386f11,0x3cc0709a,0x3c94b6dc,0x3c9b8444,0x3cc1fe5f,0x3c5d899b,0x3c917a9e,0x3ca3e5d6,0x3c63444e,0x3d0366f4,0x3c94104c,0xbcd63039,0xbd4bf883,0xbd3beaa1,0xbce93c33,0xbcc54bcf,0xbd0be6d6,0x3be9a761,0x3d043527, +0x3d45facc,0x3d02d082,0x3cc9da58,0x3d0c260a,0x3cef1e44,0x3cc2f714,0xbbe90e1c,0xbc5b17a0,0xbc652c27,0xbacf765a,0x3a94577d,0x3b6d8c9d,0x3b56ac06,0x3bf0569d,0x3c81a261,0x3cc1c7af,0x3ce0891e,0x3cf0ed62,0x3c8787bc,0x3d01becc,0x3d11cf22,0x3d0fe0b9,0x3ce9f022,0x3cda82bd,0x3cf43cea, +0x3d050e82,0xbc4deb1f,0xbbf895a3,0x3b6bfccd,0x3c292264,0x3c7fcca4,0x3bafbc7c,0xb9b2e704,0xbc4a13a5,0xbbb4df44,0xbb00ece2,0x3baf7c4e,0x3c6a85cf,0x3cc78737,0x3d0234e8,0x3cb0e406,0x3c5343d7,0x3b898fde,0x3ba1bc22,0xb99cd894,0xbb8af00c,0x3bf79b66,0x3c91911c,0x3cf15f78,0x3ce17ede, +0x3ce32722,0x3cd660eb,0x3cbb199c,0x3c4be21e,0x3c468c07,0x3bf9b176,0x3bc30280,0x3b775a1d,0x3b919464,0x3b7f1b1b,0x3b101b07,0xba53afce,0x3bd9ae4c,0x3bf0e8ea,0x3b46146b,0xbbb887f7,0xbc1b37ce,0xbc617beb,0xbc8f75a1,0xbcb225f7,0xbc9e96c5,0xbc8e0c1d,0xbc767fb3,0xbc5e3e0c,0xbc603b6c, +0xbc3d40de,0xbc3d715f,0xbc1c09e3,0xbc0af68a,0xbc149413,0xbc100449,0xbc090f0d,0x3c9c4d39,0x3c1a93cd,0x3c44e8a9,0x3c675f81,0x3cad3a43,0x3c966313,0x3c9ce4ee,0x3ca43081,0x3cc00f92,0x3cbcfa00,0x3ce45f8f,0x3cdc1dc9,0x3ccfb79a,0x3c9b9178,0x3c6427ba,0x3c743a8c,0xbba98473,0x3bd4a628, +0x3b5340aa,0x3b0d6d8b,0x39b142f7,0xba97a4d6,0xbb2352a2,0xbb9f31a1,0xbb8a26cc,0xbb93ad84,0xbb9d924d,0xbb9cc293,0xbb836d94,0xbb4557ce,0xbb2597f4,0xbb1f3e85,0xbb05c8bf,0xbac344ac,0x395e6821,0xbb3447c9,0xbb17a6da,0xba60ccfa,0x3c68eac6,0xbb4919ff,0xbac00d9a,0x3c6690f8,0x3c53cb6f, +0x3c326f34,0x3c0a3e8a,0x3bdb93cc,0x3b803513,0x3b4890e2,0xbb28bcc5,0xb9971d70,0x3b2465ed,0xbbbdb397,0x3b955bc2,0xb9a005eb,0x3b21f4d9,0xbc3de769,0xbb7fce32,0xbb832ba2,0xbb1a616e,0x3a95f2b0,0x3af5583b,0x397a6196,0x3b24cdfd,0x3b12adc1,0x3a08f51b,0xba7a6764,0xbb0ddb05,0xbb87256b, +0xbb0e1d2b,0xbacbb235,0xba8c4795,0x38d7e393,0x3a923f6b,0xbb0aa8f7,0x3bbf224c,0x3c0e7919,0x3c427e22,0x3b9ec4c5,0x3c1d4c2f,0x3c776aa4,0x3c4216bb,0x3c337f54,0x3c301916,0x3c2f4d0a,0x3c2a2c06,0x3c30e8d1,0x3c23f2f3,0x3b191887,0x3c7dff3e,0x3c26390c,0x3cf682c9,0xbcaf0a6b,0xbcfb445a, +0xbd04b3f1,0xbcfd82b8,0xbc8167a6,0xbba7d270,0xbb966ac8,0x3b49014a,0x3b956a3b,0x3b2f63b1,0x3b43c86b,0xb71f9205,0xbbe25000,0xbb7e6896,0xbb0203a0,0xba1420cf,0x3b3f700f,0x3b17d510,0x3ad3d976,0x3c6d458c,0x3be68598,0x3bb70a4b,0x3c23388f,0x3c4e3bf9,0x3c6e2388,0x3c0ecdff,0x3bbec306, +0x3bcdb065,0x3b461f41,0x3b8aba35,0x3c0a642a,0x3c18090d,0x3c3f0b61,0x3c92926e,0x3bbf6194,0x3c5f68ee,0xbcf8241b,0xbd8660f2,0xbd36d493,0xbd329136,0xbc05f728,0x3b99320e,0xbb26d6b7,0x3c8605a3,0x3c571ba0,0xba0bf7dd,0xbbe3f42b,0xbc7a6bdc,0xbcd3522a,0xbc692afb,0xbc13f8c2,0xbbb416d0, +0x3b91310f,0x3ba0cb6f,0x3bdf4ce7,0x3c8efba5,0x3c629d27,0x3bde54e1,0x3c827bad,0x3cbaf2de,0x3ce348ad,0x3c9654de,0x3c331020,0x3c3e37ef,0x3c0e0f46,0x3c3fd691,0x3c75b619,0x3c90cdc9,0x3c94f2a7,0x3cd63eb8,0x3ba403dd,0x3d303957,0xbda3b2e7,0xbe2a67fb,0xbe1cf8e0,0xbe1343ed,0xbd853eb9, +0xbcd68aa5,0xbcf047fe,0x3bc180dd,0x3ca82e5b,0x3c219685,0x3c3b050f,0xba7df939,0xbcd6b941,0xbc5189ff,0xbba087d0,0x3a42e7d2,0x3c59d91e,0x3bee1271,0x3c4b1fc9,0x3cb1b778,0x3c71ef51,0x3c6fef63,0x3c8691dd,0x3cbc84cc,0x3d377e05,0x3cc5daf0,0x3c683b17,0x3bfb39ee,0x3c6883c5,0x3c47fabb, +0x3c8a4939,0x3cd660d8,0x3d33246f,0x3d27eb14,0x3ccf3433,0xbd92c31a,0xbda9fd52,0xbd843e14,0xbcd9ab97,0x3dd458b9,0x3d869955,0x3d9b38a5,0x3e1036dd,0x3d59fe11,0x3bc62bbb,0xbcfad591,0xbd6d2afc,0xbd96d24a,0xbdb3266e,0xbd89fa96,0xbd6fcbf8,0xbd625fee,0xbcbde101,0x3b91b13b,0x3d33dd2d, +0x3d1a1f4a,0x3cb35576,0x3c082d8a,0x3c9c01a0,0x3cafe001,0x3d0d0ccc,0x3c58b3ef,0x3c9b3fc0,0x3d30b253,0x3d5369e0,0x3d1d3d19,0x3abf3964,0xbc7c8d22,0xbc6d9e79,0xbcb48819,0xbd290e42,0x3c7ba4a1,0x3cbd007e,0x3ddbae21,0x3dd8fbf6,0x3da311eb,0x3d9586c4,0x3d9799a7,0x3d7e7de8,0x3c2583f7, +0xbcccd379,0xbd9bdb0a,0xbdb4ce99,0xbdbf6afa,0xbda4180d,0xbd976944,0xbd37e40b,0x3bc1f381,0xbbc9ee32,0xbbd38219,0x3c5817aa,0x3cc5d10d,0x3cfa866d,0x3ca3a2a1,0x3cba0430,0x3cc8c954,0x3d5a4461,0x3cd6187d,0x3cadaed7,0x3c50c2bc,0x3d3d930e,0x3d448beb,0x3d2cb2cb,0x3d76bfdd,0x3d3deac2, +0x3ca2ae1d,0x3d09f145,0xbce1a57f,0xbc788535,0x3d3884c9,0xbcb626c7,0xbdf3d6f4,0xbdef8f0e,0xbdd0fb11,0xbd3303d0,0xbbca06e9,0x3ce9d8b8,0x3d3c2af0,0x3d9b6aa7,0x3d9e3444,0x3d713229,0x3cabea37,0xbc80038c,0xbd59ed9c,0xbcf8a67e,0xbc5fa9cd,0xbcc47c30,0xbc8775a8,0xbc39b0fa,0x3bd7d300, +0x3c3f8ce1,0x3cdb4a27,0x3dc10bb8,0x3c8724f1,0xbc1b4f63,0x3a972a70,0x3ba980c8,0x3cb8da29,0x3da0ee17,0xbb4a589a,0xbcb9b6d2,0xbd0ef9a8,0xbcc4bc06,0xbcb6678f,0x3bef579a,0x3c9d6a9c,0xbb9f0ed0,0xbc304114,0xbd7af516,0xbd9fdb8f,0xbd708bb4,0xbd98f6c8,0xbd2a044a,0x3cb7b06c,0x3d57990e, +0x3da2c7ee,0x3dcc8bf5,0x3db97fed,0x3d994e86,0x3d394d33,0x3d8eb86e,0x3d884b24,0x3cc56fb0,0x3ba57099,0x3bd90488,0x3b6f54b3,0x3c09ce5c,0x3c8ffca3,0x3d6d0bd8,0x3c877092,0x3bb8589f,0x3d0c6b5a,0x3c227546,0x3c1ed61e,0x3d0eb9a1,0x3c22af9d,0x3c1c1560,0xba18f7ca,0xbb8273b7,0x3ab4427a, +0x3b9549a5,0xbbf8412c,0xbcae9686,0xbd68aff7,0xbd8720bd,0xbd30ecfa,0x3c9904ac,0x3cdaf406,0x3cc3ba86,0x3c0f213e,0x3b99ef25,0x3b41ef56,0xbb2dd067,0x3c8efe79,0x3cf9918d,0x3d201714,0x3d0683c7,0x3c93e37a,0x3c44277c,0xbb7a8ffe,0x3bcfa5a3,0x3c543d7d,0x3c67f3fa,0x3c94e276,0x3c9c78ea, +0x3c9da636,0x3c6ec21a,0x3b7c54b0,0x3be83700,0x3c5b46d9,0x3cbcbe3d,0x3c4b33c3,0x3bde423d,0x3c09a5c4,0x3bf9db2d,0x3c097ef1,0x3c9f60e5,0x3c253b46,0xbb743105,0xbcedc3b8,0x3c2edcef,0x3c68ca0a,0x3b0d75db,0xbcc80114,0xbcc1fd38,0xba227798,0x3c392cc9,0x3bd5df0c,0xbc92a7e1,0xbc8cdd90, +0xbc1d02c5,0x3a6330db,0x3c4c8c45,0x3cc43134,0x3cce7c71,0x3c16760d,0x3c37df3c,0x3c741ad5,0x3c997d18,0x3c8d5e77,0x3c555494,0x3c409166,0x3c576d5c,0x3c507b41,0x3c9fa9c5,0x3c9337be,0x3c4a5b48,0x3c2f391d,0x3c3209be,0x3ca900e0,0x3c11a598,0xbbeebd8b,0xbcb8c0e1,0xbcb4ef7a,0xbc8a6365, +0xbc6eeda4,0xbba53435,0x3b513231,0x3c99212e,0x3c0a5365,0xbbdd2a1c,0xbcda4c74,0xbca4fff5,0xbc20308a,0x3b517318,0xba07e474,0xbbffb869,0xbca2f71f,0xbca78c5c,0xbc9a4428,0xbc5e8032,0xbbb4c396,0x3a4fd3a5,0x3bcba5a9,0x3c380f58,0x3c82ce95,0x3c917615,0x3c87460a,0x3c4152dc,0x3c1af15d, +0x3c239386,0x3c518c39,0x3c6fff84,0x3c74251f,0x3c3cf1e3,0x3c589b98,0x3ad0ba19,0x3cce9622,0x3cb5de25,0x3ca8ef15,0x3ca29a28,0x3c8d66f9,0x3c832bb0,0x3c714ee6,0x3c70348f,0x3c3c3cd4,0x3c6278b1,0x3c6225d1,0x3c5916da,0x3c0b1164,0x3bafcc29,0x3b4e4124,0x3b87a488,0x3bcf9dbc,0x3c1b3528, +0x3c3d4a38,0x3c1f500f,0xbbadfe9f,0x3bfd37d3,0x3c19eea5,0x3c22dc42,0x3c464c61,0x3c977cc5,0x3c885a89,0x3c93e296,0x3c9d2ea7,0x3c94748c,0x3c5bee31,0x3ca31f7e,0x3c6ee8ff,0x3c9cd394,0x3cb4d150,0x3c9c21f4,0x3cde557d,0x3cbbaf20,0x3cbaefbc,0x3cbcc950,0x3cc19969,0x3cc4999b,0x3cc32ca1, +0x3cc34cf4,0x3cb6c2b3,0x3ca44ba9,0x3c964f95,0x3c81b486,0x3c699eeb,0x3c414c1e,0x3c7a77f9,0x3c8dac28,0x3c979d32,0x3c991e1f,0x3c9a662a,0x3cbc36dd,0x3ca40013,0x3c8bd0fa,0x3bab2dc1,0x3cd7319d,0x3cb67e9b,0x3c59942e,0x3c72d087,0x3c85692a,0x3c88a29e,0x3c997f05,0x3ca8b2d4,0x3ca0eeca, +0x3cbc1bff,0x3ccb3e86,0x3c753c78,0x3cccbfc4,0x3d05a5e0,0xbc04be1a,0xbc5136da,0xbc1e2a5b,0xbc2d44f2,0xbc36ebad,0xbc42ebf7,0xbc4fc79f,0xbc47f9bf,0xbc2ffd9a,0xbc3c34c8,0xbc3fb4d4,0xbc4c4e99,0xbc335306,0xbc27ef0c,0xbc0ab513,0xbc141023,0xbc0d4f85,0xbc0f6729,0xbbf488fb,0xbbdeaefc, +0xbc05df50,0xbbc8adf9,0xbb88831a,0xbae8882d,0xbb5d8bbb,0xbaaa8e13,0x3b1c1339,0x3ab555f2,0x39a81caf,0xba8648d3,0xba5af84a,0xb930d997,0x3abb4112,0xbb78b867,0xbbd48d8d,0xbb8d4e18,0xbc369dca,0xbd123d1c,0xbcca7a24,0xbc412a13,0xbbe6c9d2,0xbb882557,0xbbcd7bf2,0xbc4d507a,0xbc46d579, +0xbc8236b0,0xbc854189,0xbc93963d,0xbc569882,0xbc0b483e,0xbb70392f,0xbba26daf,0xbbb6757c,0xbc0388c0,0xbb8b52f5,0xbb91d3f1,0xbc09b4f5,0xbb85081c,0xbbb0cb6f,0xbbc7f332,0x3b45c36d,0x3bb9fe09,0x3b6ca148,0x3b133101,0x3a344de9,0x3979a86a,0xba447e37,0xbabb9373,0x3af1941e,0xbb6b1e9c, +0xbc083fb1,0xbc82b6c1,0xbcb0d430,0xbd85d2b0,0xbd4e6a69,0xbccbf7a6,0xbd17fab3,0xbd0d86b6,0xbce3c88f,0xbd058d09,0xbceb5a97,0xbd1ede4e,0xbd31a74e,0xbd303ae5,0xbd10be55,0xbce5487b,0xbc897e23,0xbc990292,0xbc883ca0,0xbc7a18ed,0xbc0ad991,0xbb91e05e,0xbc071850,0xbbbcc264,0xba7007ea, +0xbbbe8f12,0x3c5db99a,0x3c9a03b1,0x3c650f25,0x3c7df193,0x3c3dd15e,0x3c0b98d4,0x3c0a8b7e,0x3c00982f,0x3c2805ba,0x3b5e4e5f,0xbc008b06,0xbcdf67d9,0xbd3397f4,0xbe0a9442,0xbdcf8854,0xbcfe15d8,0xbcc33954,0x3aa1a47d,0x3c7ce312,0xbc445aa1,0xbc8edeee,0xbd1ed999,0xbd34cbf2,0xbd4bd6de, +0xbd0c3808,0xbca0eb23,0xbb622bb9,0xbc16dcf9,0xbc0577af,0xbc1ed543,0x3b5a9432,0x3a9a5cac,0xbc2c951c,0x375e0665,0xbb6275be,0xbbb51ec0,0x3c8c825f,0x3cf2b7b5,0x3d0bb44c,0x3cc94149,0x3c840706,0x3c83937a,0x3ca5cea0,0x3c81431a,0x3c1027de,0xba4c3160,0xbcf1857f,0xbd499b2a,0xbdadd4a4, +0xbcb8f84f,0x3d5d29ec,0x3dc206bc,0x3ca93682,0xbdfcce2e,0xbe31473e,0xbe3d9f9a,0xbdf7236f,0xbe131ef1,0xbe284a29,0xbe3da5aa,0xbe263ab0,0xbe06a169,0xbdce9666,0xbd6747ac,0xbd47978b,0xbdabafae,0xbd3a9276,0xbcfe949f,0xbc2de858,0x3b0379cc,0xbb9d0694,0x3c242398,0x3c3f2d6f,0x3c7cbd17, +0x3d0903da,0x3cbe4d5e,0x3cae486d,0x3cc452ac,0x3c85bcfe,0x3c4e405e,0x3c2507e0,0xbb322265,0xbcdea12e,0xbcdc4bf2,0xbd50f933,0x3ddb193d,0x3e08a457,0x3e1eab2f,0x3dfac341,0x3d97c72c,0xbd6225b5,0xbdcab51b,0xbcb28d2f,0xbd044795,0x3c30271b,0x3d761a9e,0x3d830fd3,0x3d7c3054,0x3d721087, +0x3d7143e7,0x3d5ca7a4,0x3d038e24,0x3c077929,0xbc9e7631,0xbc4660ba,0xbc57f129,0xbc600b0a,0xbc118ee0,0x3be3f786,0x3c813dd3,0x3d283656,0x3c7a2cfe,0x3c1f3df3,0x3c8bed5c,0x3cf83f95,0x3cf531b0,0x3d3741c4,0x3d0c9788,0x3d62904b,0x3dacb153,0x3dd11a61,0x3d30f8c8,0x3d1c2792,0x3d30b477, +0x3d58791a,0x3d355e3d,0x3d13f53b,0x3cc8a800,0x3d881695,0x3d06f9d8,0x3bc2e281,0xbd514ceb,0xbd8723fd,0xbd7ee97d,0xbd34fb43,0xbc52e8ab,0xbbfc1e26,0xbcdf509f,0xbc634811,0xbb240fb1,0xbb6e468e,0x3c0d014e,0x3c63b0fb,0x3c9aac9d,0x3c53f7e3,0x3cb297a6,0x3d8b0ec0,0x3cce8278,0x3b672e0f, +0x3c3e026a,0x3b8da210,0x3cb75b27,0x3d95989c,0x3d0a7170,0x3d10813f,0x3c15fb52,0x3c8c6b5f,0x3cecfcaa,0x3bab2e3c,0x3c9256fa,0x3d1e329e,0x3d49a4ab,0xbb4e046e,0xbc6a2861,0x3cbfc240,0x3cee1d8b,0x3d1e71bb,0x3cfd6eaa,0x3cbe07f6,0x3bb098fa,0xbc8ecd3c,0xbc7a3a86,0xbbaccb1c,0x3bced4fb, +0x3c51ddd7,0x3c4fe4c3,0x3cb14e18,0x3cfaf09f,0x3cd001cf,0x3d0e98c0,0x3d2929ec,0x3d14190b,0x3d2daa75,0x3be5442c,0xbb817467,0x3cb11f74,0x3bf63592,0x3c7b82ba,0x3d075cbd,0x3cc1831f,0x3cf29870,0x3c959c7c,0x3ccd01fd,0x3b532340,0x3c227cec,0xb938bf46,0xbb7aeb18,0x3d15e1fc,0x3b60b53f, +0xbb31a0fb,0x3c0ea413,0x37a1cb6d,0x3be039e0,0x3cb6dafa,0x3c0da68d,0xbbaf7838,0xbc86a8c9,0xbbfed912,0xbc4d8f59,0xbcf27a02,0x3c1dc5a9,0x3c223f47,0xb8a0fad6,0x3c63ebf2,0x3b78010f,0x3ab6e03e,0x3c4f3bf8,0x3c8a4552,0x3cabfc27,0x3ccae6ef,0x3c92d21a,0x3c021763,0x3c530fe7,0x3ca1fab7, +0x3ceaeea4,0x3ca4c1c2,0x3c6d0433,0x3c164bfa,0x3b0494f3,0x3cb8cd2c,0x3be02211,0x3cba6dd2,0x3c81b1e9,0xbc5cc88c,0xbcf05ca1,0xbcb88403,0x3c86dd53,0x3bd4ec3f,0x3b646e8c,0xbb713bcd,0x3c1945eb,0x3c873d59,0x3cae13f9,0xbbcfe94f,0xbc71e5ae,0xba2fa763,0x3be44e05,0x3bc4363d,0x3be6b09b, +0x3c556afa,0x3bbf6ccb,0x3c1dda4d,0x3c7749e1,0x3c86fce7,0x3c162d5e,0x3bef4b91,0x3c1beaf7,0x3c3988dc,0x3b5b4499,0x3b3c7184,0x3c9dfd88,0x3c24748e,0x3c501f2d,0x3c7a8872,0x3cc0a80e,0x3c77ffab,0x3cd26dcf,0x3c60025f,0xbbf67746,0xbcbbf4a9,0xbc0e233a,0xb8a629e5,0x3c3865b4,0x3c090df7, +0x3c57bf4c,0x3c7fdd28,0x3bb5477a,0xbbeaaffa,0xbc8380fa,0xbc4b55fd,0xbc080281,0xbb346259,0xbab90d5e,0x3b82802b,0x3b3b2a59,0xbb475540,0x3b3a1571,0x3b1ea566,0x3b2b0756,0x3c06b8f0,0x3c1d60d9,0x3c543497,0x3bd1312e,0x3c2c7968,0x3c9b126b,0x3ce9d376,0x3d106187,0x3d0a17de,0x3d04d6fd, +0x3cf79bf6,0x3cc37798,0xbc04513a,0xbc5b230e,0xbbb9884f,0x3b5e8773,0x3c2cd648,0x3c712678,0x3c90123d,0x3caf90c8,0x3c73d826,0x3becedbb,0x3ac32bbb,0xbae1332f,0xbb05ad39,0xbbacc328,0xba23af58,0x3a929ba0,0x3b05e3d6,0x3b1d6df2,0x3afaf320,0x3b9b7da4,0x3c6b1323,0x3b6a098a,0x39f74bbc, +0x3a8692b4,0xb9a3b8a9,0xbbcc4f17,0xbc05fb27,0xbc187f5d,0xbc14d011,0xbc6c4f32,0xbc90db15,0xbc9f48fc,0xbc94e2f5,0xbc7ad07d,0xbc725e08,0xbc61a65b,0x3b8dbd96,0x399b7e65,0x3ba561c0,0x3bcf87b5,0x3c09c77c,0x3c20dcce,0x3c3fd8e1,0x3c76463e,0x3c5b5e78,0x3c5edc7a,0x3c5366b5,0x3c3f9fb1, +0x3c21d587,0x3c00f77d,0x3bd43db1,0x3ba96723,0x3b9c4668,0x3b9d5c73,0x3ba529f8,0x3b214780,0x3be8ef17,0x3c3a0be3,0x3cc5f6a0,0x3b5b3a81,0x3c1465ef,0x3cb915dd,0x3cadb3e3,0x3c9f4ad5,0x3c8e1ed6,0x3c8613ae,0x3c7b8555,0x3c59e4ae,0x3b9b9863,0xba4f9bd9,0x3c95b147,0x3be4c1c2,0x3c037cb1, +0xbc4ffbbf,0xbbdadc9f,0xbc071122,0xbc3049a8,0xbc3fa5f0,0xbc7bc8fc,0xbc919d7d,0xbca11743,0xbcc26c0c,0xbc834106,0xbc6e7f73,0xbc93b042,0xbc673859,0xbc515603,0xbc3ccc34,0xbc479efe,0xbc3f638c,0xbc27f1fe,0xbc30cbb7,0xbc2d3d79,0xbc22f68f,0xbc0c4e82,0xbbece377,0xbbaba7fb,0xbbc858d0, +0xbba46349,0xbb837911,0xbb68a651,0xbb6ef2e6,0xbb7de46d,0xbb8ac4a5,0xbb9a081e,0xbb7b9140,0xbbc5e3f6,0xbbc2132e,0xbbf6aec7,0xbbfe6e24,0xbc04f047,0x3bcf248e,0xba4a5f2e,0xbc14d817,0xbcd42f51,0xbd2a582d,0xbd3efd37,0xbd57ee02,0xbcf33aaf,0xbcc22a06,0xbd0b2320,0xbcd65a1d,0xbcc2880c, +0xbc92aa01,0xbc971e4b,0xbc85a0b9,0xbc3dae67,0xbc40f13f,0xbc27345b,0xbbdca0a3,0xbbff6d87,0xbbf93b87,0xbb9c9019,0xb933426c,0x3aecf536,0xbb0e1481,0xbab290c0,0xbb2304bf,0xba8763a6,0xbbb783de,0xbb8ba7e5,0x3ac6af16,0x3b77c593,0x3bab678c,0x3b4ca56d,0xbb0b0bac,0x3bbf82c6,0x3c93902b, +0x3ca77722,0x3c1deed8,0xbc5474db,0xbd6d08f6,0xbd893eb2,0xbdaf1888,0xbd13864a,0xbcad626e,0xbd298f17,0xbca9335f,0xbc805336,0xbc037d0d,0xbc557042,0xbc2d8231,0xbadf95af,0xbbdcce95,0xbbce3aa2,0xb911c9be,0xbbb44c15,0xbb2cb35b,0x3b9b9265,0x3c4c321f,0x3c68e32e,0x3bec086f,0x3c3c38dc, +0x3c0459d6,0x3c3bb1fe,0x3b446c37,0x3bad0de3,0x3c538196,0x3c390a21,0x3c0373fe,0x3c339ca1,0x3c054080,0x3d047029,0x3d9e006a,0x3da5a7aa,0x3d691545,0xbc8d0c25,0xbdd61164,0xbe045add,0xbe1580e6,0xbd82c0eb,0xbd0d15bf,0xbd80fc56,0xbd29e32c,0xbd0bbafe,0xbc8095f8,0xbcbc4a05,0xbc91ad65, +0xbacef162,0xbc185fcd,0xbb778f7c,0x3b9b4115,0xbbd108f0,0xb79c37f1,0x3b2542cd,0x3cc3fc8f,0x3cf2bd77,0x3ce88fa1,0x3cc1b6b0,0x3c8eead3,0x3cb1dbbc,0x3c53b0eb,0x3c410b99,0x3ce1f03b,0x3d0fa99e,0x3d0b33f0,0x3d33580c,0x3d14b2d7,0x3cc54d7a,0xbcbe0a8e,0xbd99e94a,0xbda1c2ed,0xbd6e32a0, +0xbd4e78e9,0xbcaca4f8,0xbca76f5b,0xbcd1377e,0xbc9b3798,0xbd08cb60,0xbc0be1f9,0xb98eee58,0x3caffb8a,0x3c45fad9,0x3ca4b3b9,0x3cf83bf8,0x3cf3ce93,0x3cb61693,0xbbe4628b,0xbc8b5d11,0xbb2aceb8,0x3be9bc07,0x3c93e695,0x3ca29cba,0x3cc586c4,0x3ced01b6,0x3cdc713a,0x3c8e49a6,0x3d137274, +0x3d1658f8,0x3c2dd632,0x3b0d3258,0x3b825073,0xba486b1e,0x3c84a8a0,0x3dc9bdb0,0x3d7e3808,0x3cde2fe4,0x3d57aaba,0x3dff91b6,0xbca80a9f,0xbdc2555f,0xbdb852d0,0xbd87dbb4,0xbd997a8f,0xbe076415,0xbdd234ba,0xbd960bcd,0xbd369e16,0xbcdcd031,0xbcd8bebd,0xbd2fa9ad,0xbc94a5d5,0xbc893822, +0xbd14c4b2,0xbce95179,0xbcac7a1e,0xbc66ab4a,0x3c06b752,0x3c745156,0x3ccd6d80,0x3ca0fe82,0x3c226fd7,0x3b78c10c,0x3c78f2f7,0x3cd322ef,0x3d800047,0x3d062496,0x3d0b1950,0x3d92c6e6,0x3d92f07a,0xbd3485eb,0xbd3e8c69,0xbd0ba7b5,0xbc09ea47,0x3d08dd1c,0x3cb4137e,0x3d9a30a1,0x3dacc3a5, +0x3db2648f,0x3d45172a,0xb92d8c14,0xbd15c9e8,0xbd9e0b9a,0xbdcda7d0,0xbdf30969,0xbdd91eb2,0xbd897d5c,0xbd8747d3,0xbd58bee6,0xbc4724d3,0xba487ae3,0x3ba52e5c,0xbbf70e12,0x3cfd0f25,0x3d17c570,0x3ce3138e,0x3c86d425,0x3a92ede6,0x3c869957,0xbb8f8639,0x3c7a8548,0x3d872203,0x3d7c3096, +0x3d1607b1,0xbbb5a736,0xbd0436b2,0xbbb7e43e,0x3b396b68,0xba839f98,0xbc744bd4,0xbcad9ce0,0xbc122f9b,0x3c806e80,0x3d44bb38,0x3dc64082,0x3e0b0624,0x3e13c610,0x3de84acc,0x3da4d021,0x3d82391f,0x3d15a3b5,0x3ca30c5b,0x3b00ecc7,0xbc5510fa,0xbca5080e,0xbc7f5b86,0xbbc29921,0xba94fa87, +0x3b1e3d5d,0x3cef6237,0x3cd03616,0x3c79d2e2,0x3c9841ee,0x3c7260dd,0x3cce7718,0x3c8f3b2a,0x3c954666,0x3c2753db,0x3c67d54f,0x3c99c65a,0x3c9d15ca,0x3bcc2633,0x3bddb567,0x3bd6c72f,0x3bbaa79f,0x39f7f495,0xbcaa10c0,0xbd132753,0xbccf6638,0x3c8b4508,0x3c3b3e2c,0x3cc4166f,0x3d292c4c, +0x3d845675,0x3d99e351,0x3d8744ba,0x3d1cc436,0x3cce0725,0x3c726a95,0xba58bd75,0xbbd00f64,0xbcadf16b,0xbc72e43e,0xbc7aa266,0xbbdc4c52,0xbb56f5b5,0x3b6181d7,0x3c8c0b6e,0x3c45bbb8,0x3c158d2a,0x3c294925,0x3c093538,0x3c918d4c,0x3d009a67,0x3cbf61cf,0x3c6a6c57,0x3baf0588,0x3b8b6573, +0x3ad13bbe,0xbb980183,0xbc886998,0xbc4aef73,0xbac10156,0xbb345506,0x3bbfd5e2,0x3ce60461,0x3d4dd67e,0x3d5f6c19,0x3d024b20,0x3cbe4a9a,0x3ca68011,0x3ce164db,0x3d3d75a5,0x3d302b96,0x3cce4145,0x3c64f21b,0x3b6b4d8c,0xbb8dac18,0x3b21e26b,0x3c157cf9,0x3c0eccb3,0x3bd26d06,0x3c5968ae, +0x3cea801c,0x3c8e7f3c,0x3c40ee73,0x3c183913,0x3bd7ab7a,0x3bc6e384,0x3b8437a9,0x3b659833,0x3b042c2a,0xbb4ffd5c,0xba8c16e0,0x3ca53bc7,0x3c672761,0x3c132754,0x3c29d370,0x3bc6a553,0x3c834df9,0x3cb5df89,0x3ccb0a50,0x3c78648c,0x3c153fc3,0x3bde3879,0x3c2242c9,0x3c47f16e,0x3c4ab490, +0x3bbfaeb5,0x3ade94ca,0x3a5534c4,0x3c3c52fb,0x3cb876a1,0x3cdc664d,0x3c9c1885,0x3c8f045a,0x3c809e51,0x3c3b9cdf,0x3b39a8c8,0xba9a3009,0x3ada6cd1,0x3c758ce3,0x3c5c0682,0x3c8dd6aa,0x3c7d240a,0x3c8be8bb,0x3c54f7c2,0x3c689baf,0x3c4cca75,0x3c5690ee,0xbb221037,0x3bb268dd,0x3c25fa6b, +0x3c80f421,0x3ca12299,0x3cca05e2,0x3ce795bc,0x3d125cb4,0x3d13e2a6,0x3d15a8e4,0x3d0a3f15,0x3ce02fe9,0x3ca7aac1,0x3c697fce,0x3c7df09f,0x3c893f9a,0x3c80e571,0x3c5dd992,0x3c53d2cc,0x3c406a85,0xbbcf5e61,0x3ba41a9f,0x3bca6a7c,0x3be984dc,0x3bc85268,0x3c41b2cc,0x3c15c6fa,0x3b88708c, +0xbb018933,0xbb25f670,0xbbcfd7e5,0xbc33cca2,0xbc066984,0xbbf4a0ed,0xbb884c87,0xbaa08201,0x3c45a807,0x3c522920,0x3c5a174d,0x3c6e1464,0x3c846da0,0x3c8b0d17,0x3c933d30,0x3c9cdce7,0x3c901d5f,0x3c8ab803,0x3c8c5edd,0x3c97d957,0x3ca44784,0x3ca4a926,0x3ca61d81,0x3ca1f928,0x3ca4f80c, +0x3ca54407,0x3c9cb27f,0x3cb2441a,0x3c887410,0x3c525a91,0x3b0ab58a,0x3c8c391b,0x3c50c9df,0x3b2e23f9,0x3aaf711f,0x3afab9be,0x3b4ab68b,0x3b19d61e,0x3b3239c4,0x3b2c0b4f,0x3c21d728,0x3c5c6774,0x3b3069bf,0x3c227749,0x3c89cdfb,0xbc6ae618,0xbc869df5,0xbc8e4ed3,0xbc7a945a,0xbc8f32de, +0xbcaa4a43,0xbc8fce85,0xbc8ae455,0xbcac5aec,0xbc68ff7e,0xbc5689c9,0xbc770bbb,0xbc751219,0xbc6b8f03,0xbc3fe8f3,0xbc4aa72d,0xbc48cd18,0xbc4e383b,0xbc43caed,0xbc417db4,0xbc37f305,0xbc5f4438,0xbc5725c5,0xbc251b1e,0xbc3eec7a,0xbc3bbf0b,0xbc2ad5d1,0xbc24b7bb,0xbc2124e2,0xbc233774, +0xbc35c820,0xbc2fa8b1,0xbc076994,0xbc31ee48,0xbc558efc,0xbbeef82e,0xbc500e23,0xbb4fb0c8,0xbcc4902d,0xbcc8774c,0xbcdbf6de,0xbd05df46,0xbcbe330a,0xbcb08f68,0xbd060301,0xbc93ab40,0xbc72c2c2,0xbc9ac3a9,0xbc929d87,0xbc845ffe,0xbc31a47a,0xbc56f3c1,0xbc606fad,0xbc7002c3,0xbc5a29f1, +0xbc402f79,0xbc1bb249,0xbc338ff8,0xbc1405df,0xbbee9133,0xbb90a0ae,0xbb2fa0e2,0xbbaa339e,0xbb69085d,0xbbbc77da,0xbc058bcc,0xbc19563d,0xbc06a607,0xbb0e5f1d,0xbb8046d5,0xbb81ae1d,0xba879d89,0xbc29dcb6,0xbc021cb1,0xbcd17da5,0xbd22a8b5,0xbd226b54,0xbd79adb4,0xbd1068e7,0xbceaf96a, +0xbd43a327,0xbcaa914d,0xbc864f03,0xbcc7371b,0xbcc9703e,0xbcaf0745,0xbc14a9f4,0xbc1fb175,0xbbf8b365,0xbc301fe1,0xbbc1dd75,0xbbb06202,0xbb436360,0xbbdd58d8,0xbb97e100,0xba0fb36a,0x3b9ccb7e,0x3bcecc90,0x3b3a2d6a,0x3c044d20,0x3bc44eec,0x3b3c989c,0xbb0a3c61,0xbaa02f05,0x3bfa83e6, +0x3baf92bc,0x3be220a8,0x3c20fede,0xbc39c09b,0x3cb9130b,0xbd176976,0xbd847dd9,0xbd8b1201,0xbdab737d,0xbd1e5e28,0xbccbde79,0xbd6e756d,0xbce6bcbf,0xbca2de66,0xbcebe803,0xbcdd20ce,0xbc96f10b,0xbbd33810,0xbbf94196,0xbc319443,0xbc805c82,0xbc06949c,0xbaf81e1e,0x3c13fba4,0x3abe7b72, +0x3be0a5bc,0x3c3978fe,0x3ca66d2c,0x3cd828d7,0x3ce8c183,0x3cd33061,0x3c922970,0x3c6d5858,0x3bf1f51b,0x3c1e16ca,0x3cc7e2a7,0x3cfbb6fa,0x3d17ff89,0x3d193fa9,0x3c8f1966,0xbdd5ea5a,0xbd9983cc,0xbdb564f7,0xbd7d6b24,0xbcae5c3a,0xbd7ab6ab,0xbd8bb2b6,0xbd92703a,0xbcc833ff,0xbc0971ff, +0x3ba2a127,0x3bcc4cdd,0x3bbe0460,0x3b367302,0x3b76231b,0x3c920b7e,0x3d0ee9a4,0x3c8d3fd3,0x3c250575,0x3c96b829,0x3bdb74a0,0x3bc9b3ab,0x3c0ed46b,0x3cc63aca,0x3ca9e136,0x3be48ed3,0x3ce5f04f,0x3cfc7c2d,0x3c944f83,0x3d10a1c2,0x3c8c1128,0xbcba2e72,0xbc1476bd,0xbc57c28c,0xbd105e0d, +0xbdb1216d,0x3d336e55,0x3d89a7cc,0x3d6f96ec,0xbbf571c0,0xbd9a7ffa,0xbdb31015,0xbda8cda1,0xbe0f2c9d,0xbd1c33c7,0x3c7cb0d2,0x3d12f1b2,0x3c33ad7d,0xbc664d54,0xbc82b900,0xbd4d9dd0,0xbd76e6b2,0xbd7898a6,0xbcf3137a,0xbbe4a988,0xbc22fbf5,0xbbe847a2,0x3b897985,0x3beed44e,0x3cea5d62, +0x3d04579c,0x3ce38bf5,0x3c4c79e4,0x39de268f,0x3bb71f57,0x3c1e6a76,0x3cbaddc3,0x3d4b838b,0x3cbce472,0x3c806336,0x3cd4ae72,0x3d2e1f77,0xbc64f804,0x3c77f65c,0x3c90d39c,0x3d79ce75,0x3e36ee77,0x3e03e5fa,0x3dc0c456,0x3d639079,0x3d3db540,0x3d2e90f3,0x3d090db5,0x3cc6dde8,0x3c4cbbcf, +0x3a53bdca,0xbbba2706,0xbba032dc,0xbc21a823,0xbcd80147,0xbd155e91,0xbd05298a,0xbd0054f4,0xbcab9871,0xbca92d38,0x3d039268,0x3cef4006,0xbca029be,0x3b8f8fc3,0xbb844bc1,0xb994d8ab,0xbc5939c7,0x3bc28401,0x3d1f6e11,0x3d39c052,0x3d5231a9,0xbb12c90d,0xbb7b6597,0x3cac23ba,0x3c50dae5, +0x3a7f8bf3,0x3a7a259d,0x3d1a27b4,0xbbf0fb87,0x3be62dc6,0x3d5fcf7b,0x3db13300,0x3db0ddc5,0x3d22b3c4,0x3d3a730c,0x3d1cb41d,0x3cc9032b,0xbc23fdb7,0xbcaef939,0xbc21bc39,0xbbd17e7f,0xbbb6586b,0xbc37fdbd,0xbca585ac,0xbc561574,0xbc855027,0x3cd99d08,0x3cf0f844,0xba06b1c9,0x3caabb77, +0x3c9dd12a,0x3cd04d68,0x3d093575,0x3d084296,0x3c1bb732,0x3bf70371,0x3c07e3a9,0x3b98dcd3,0x3ca09863,0x3b64406c,0x3bfc083c,0x3d066384,0x3d14cf33,0x3cea7842,0x3aa2cfee,0x3bba3a3a,0x3cbefe93,0x3d127d37,0x3d083acf,0x3b6ba762,0x3c6cf30d,0x3c846eff,0x3d2b5f82,0x3cd2b6d2,0x3cb60046, +0x3c8bbcec,0xbc44b95a,0xbc877995,0xbb2e0707,0xbab251fe,0x3c107ff8,0x3bdcc1f9,0x3b893d68,0x3b996bc6,0x3c07f6c6,0x3af80e59,0x3a2fed09,0x3c2d8b18,0x3bca953e,0x3c3f85ad,0x3c8f57a5,0x3cfd30e4,0x3cf7a5e8,0x3c6bc73d,0x3c0a6adc,0x3c2bac7d,0x3cc42f10,0x3cde5138,0x3c53df94,0x3b8fc6f1, +0xbcc03c19,0xbce3c38e,0xbc914d09,0xbb681413,0xba29aa99,0xbc4daa00,0xbc447f64,0xbc30ef5d,0xbc044d92,0xbbd33844,0xbbf313db,0xbc73d80d,0xba3fb111,0x3ba75445,0x3b6e708b,0x3b816941,0x3ae5405a,0x3b20f488,0x3b825e44,0x3bc2dcdb,0x3c837280,0x3c805424,0x3c328862,0xbb660dbf,0x3b95ce7c, +0x3bc3b809,0x3baed92e,0x3b12f789,0x3afd6f51,0xb77973bd,0x3c462173,0x3a823726,0x3b59d3b9,0xba9e3b41,0xbbe128ae,0xbbd03de1,0xbc256dc1,0xbc61a110,0xbcafc29e,0xbc23c443,0x3a47bdc4,0x3c5b800b,0x3ab474b9,0xbc31c7af,0xbcd19d73,0xbc3b76ed,0x3b13eb8a,0x3c42665a,0x3c3a6b82,0x3bcc18a8, +0x3c6adcaa,0x3c9d3b7d,0x3c5f36a3,0x3c2650a2,0x3c031d39,0x3c109f8d,0x3b9a5a24,0x3c56c74a,0x3c651175,0x3ccb03f8,0x3c7df196,0x3c3b95e6,0x3bb7c061,0x3c03ec57,0x3c16e201,0x3c35639c,0x3c0279f2,0x3b61aec3,0xbba74700,0xbb8216d5,0xbb8b0d0f,0xbbcad524,0xbbedf4d6,0xbbee3116,0xbc12adea, +0xbae7baf8,0x3b2c7975,0x3c281742,0x3c9a12dc,0x3cf9de3a,0x3d24fe14,0x3d122586,0x3cf09fab,0x3cd8b403,0x3cce6b42,0x3cc1be79,0x3cb08cf0,0x3cf9373c,0x3c84cd41,0x3c61ccf9,0x3c58a1e4,0x3c3c38a4,0x3ae0d3a8,0x3999eaed,0xb9746a0c,0x3b048004,0xba9416e3,0x3b1d0c67,0xba045b8c,0x3b43d563, +0x3aab26c5,0xbb210b7c,0xbb6b6862,0xbb47dcb2,0xbc70f83d,0xbc5539fb,0xbc61d38b,0xbc60e67e,0xbc6658f6,0xbc6d7b3d,0xbc811d74,0xbc5d1b26,0xbc44e68a,0xbc396783,0xbc215930,0xbc186c17,0xbbd01355,0xbbf94bfc,0xbbdf1346,0xbbf2200c,0xbc01ad8c,0xbc01f1b5,0xbc3da91a,0x3b174fee,0x3c2100fc, +0x3cc2cd54,0xbbc580a6,0x3ba9b3d4,0x3ca726ed,0x3ca001b9,0x3c8fa7a3,0x3c74fbc8,0x3c723d87,0x3c56a89b,0x3c58def8,0x3bb1479b,0xbbbc20d8,0x3c886c40,0x3b98d647,0xbcac16ed,0x3aae1f10,0xbc0ba7e3,0xba5af020,0xbb2c933a,0xba925677,0xbaba6f37,0xb9c96934,0xb9c9284f,0x3a53a26e,0xb86bfe2d, +0x3a667c55,0x3b87c6c5,0x3abd8ac8,0x3ac5e756,0x3b6fe647,0x3b13c2c1,0x3adb5b9a,0xb963a45c,0x3b17d099,0x3b071126,0x3afcf6b0,0xbb58b180,0xbbdf4fd5,0xbc66ff59,0x392530cf,0xbbb05661,0xbc525814,0xbc43453f,0xbc4279f1,0xbc4d6398,0xbc57d051,0xbc57af97,0xbc3a6d78,0xbbc51b60,0xbaa6264d, +0xbc5c2ad2,0xbc3acd00,0xbcc25c4f,0xbb95f51b,0x39951180,0x38e50120,0xbb4fa6ef,0xbb01990f,0xbaa1ae77,0x3b95faf9,0x3ab8f4ec,0x3b237229,0x3c1ad988,0x3a9ecb1c,0x3a841f9a,0x3be5944b,0x3b9b45fe,0x3b96d434,0x3994f04a,0x3be70b27,0x3bd1979f,0x3a8f11a6,0xbbbdbcfe,0xba20f04c,0x3b14010f, +0x3b7ed188,0x3b5980d3,0x3b1609d0,0x3ba27b72,0x3b757df9,0xbad8128f,0x3a548e44,0x3b1e6bcb,0x3b330598,0x3993cdf1,0xbb869152,0xbb8f5eea,0xbc36cfdc,0xbd2bf333,0xbd0b692b,0xbcc11136,0xbcaeee96,0xbc9b9950,0xbb68b481,0xbc070917,0x3abe4fdb,0xbc30aa45,0xbbae3405,0x3c3c640c,0xbb3162c1, +0xbb712671,0x3bfd4368,0x3ac7b043,0x3a606af5,0xbc111438,0x3bf014b8,0x3c0062e6,0xbadc61d1,0xb98d071d,0xba18fc5f,0x3b3cae8d,0x3c147264,0x3c096c0b,0x3ab8c9c3,0x3c0a3bf0,0x3c0fcef6,0xb7f1440c,0x3a103b77,0xbabad29c,0x3bc6c61b,0x39c452f8,0xbba90624,0xbc273315,0xbcf614b1,0xbd960a95, +0xbd27b33a,0xbc88a478,0xbcc10bf2,0xbcc96241,0xbbec3997,0xbb4d0417,0x3c86d386,0xbb759aaf,0xbb6df43a,0x3c8b6fa5,0xbc008ada,0xbc008a8c,0x3c13c49b,0x3bb84da3,0x3baa91a6,0xbc01bdd4,0x3c978bbe,0x3c9137d9,0x3b858aa6,0x3c19c279,0x3bcbc444,0x3c365cff,0x3ca7b049,0x3cd75d3e,0x3c974627, +0x3cddacad,0x3ca4b64a,0x3c4278c5,0x3c16d966,0x3bff72a9,0x3c704239,0x3be09d33,0xbc04cf23,0xbc4c9804,0xbd4edb9e,0xbd88c012,0xbcb94f70,0xbd0ba73a,0xbd0984df,0x3bec20bc,0xbae34590,0xbc976612,0xbd4c6500,0xbce991ca,0xbc91c79e,0x3ba1b82a,0xbca5374a,0xbd1446d2,0xbd20a8a0,0xbd248990, +0xbd154b2a,0xbd0dc5ee,0xbcf81420,0xbcf919ec,0xbc8e1908,0xba9f0a80,0xbbe24bc0,0xbbb6bed5,0x3c52f28a,0x3c76abd7,0xba9ae143,0x3cb2b774,0x3cd29be6,0x3bcffac8,0x3ca0f131,0x3bda862e,0xbc4b6be7,0xbb93098e,0xbc887355,0xbd1c0c8e,0xbd89f1df,0x3d7bc8a0,0x3d25f014,0xbae165a1,0xbcb1fb27, +0xbd52703f,0xbd112e75,0xbd241346,0xbd9baf12,0xbcab0d09,0xbc95e9df,0xbd2c4931,0xbcab9113,0xbc1db5dc,0xbb4cdae9,0xbb85a360,0x3be8696c,0x3c98f5b9,0xbb53fa56,0xbb810838,0x3c00258f,0x3a8fb4de,0x3c464cec,0x3c6df16f,0x3cc8fb5c,0x3cea7171,0x3cf50246,0x3c2bf09b,0xbbacf910,0x3bc75842, +0xbb504601,0x3c2adaed,0x3d101433,0x3c6f29d4,0x3b98f1c9,0x3a9fc7cd,0x3d130574,0xbc7e622b,0x3c9f6e18,0x3d8a2650,0x3dd7a6ca,0x3e032702,0x3de1a6f2,0x3d6749a7,0xbcab07dc,0xbc97d046,0xbcf1499d,0xbd22c592,0xbd5b045d,0xbd353df0,0xbbbc23d7,0xbb876a01,0xb97194c1,0x3a5332e4,0xbb3ea255, +0xbc182539,0xbc89dc7a,0xbc6d77ad,0xbbe25783,0xbc8072b8,0x3d19b7de,0x3cf59da8,0xbd043029,0x3b680bfd,0xb95669c5,0x38eb4265,0xbc0619ac,0x3b67a5ee,0x3c12e830,0x3d61db40,0x3d9012cc,0x3d21a2e4,0x3a9e40d4,0x3949a3bd,0x3c42e16b,0x3c993eea,0xbb482820,0xbd10410d,0xbc99e06a,0x3bae2729, +0x3c4e6e76,0x3d2f176b,0x3cf5007f,0xbbe20810,0xbcbe98c8,0xbd5b42fe,0xbd9b5908,0xbd9d6ffe,0xbd8c9c67,0xbd4692b2,0xbd363469,0xbd0765e1,0xbc56f699,0xbbad8557,0x3b9286bf,0x3bad7530,0x3d0581bf,0x3d078ec1,0x3b739653,0x3c9c286a,0x3c6b0756,0x3c4e04c2,0x3ce47f03,0x3d0bdba5,0x3c6aed39, +0x3cb996e2,0x3c8aabed,0xba8c41b8,0x3b0551d4,0x3c8e0750,0x3c086e94,0xb9b4da1c,0x3c10b9f1,0x3d08fa61,0x3cf763b8,0x3bc5fa8e,0xbd40d2eb,0xbbe863d0,0x3bdf3470,0xbb0742e3,0x3c1e9763,0x3c757b9d,0x3c706365,0x3c8ebd6c,0x3c5ba19f,0x3c63b354,0x3c021dc0,0x3bb5bbf6,0x3bdfdef4,0x3c131710, +0x3c803651,0x3c1dd721,0x3c6717aa,0x3c7b8a11,0x3c38619e,0xb92d9bec,0xbb49d382,0xb9871a03,0x3ae04964,0x3b952986,0x3b3ab3a4,0x3c904d8a,0x3cb1d608,0x3c43de2f,0x3c9af446,0x3c19f815,0x3c678fc8,0x3ccf23b4,0x3cdf603b,0x3c341fe6,0x3afca46f,0xbc101c61,0xbd09ee80,0xbc96ce15,0xbc4e4137, +0xbb3a3d91,0xbc18704c,0xbc40e69d,0xbbf84aab,0xbc8ae5ca,0xbc8ed15c,0xbc9cbadf,0xbc185f34,0xbb54e59c,0xbb05cb89,0xbb60c51b,0xbbb5b822,0x39858390,0x3ba9034a,0x3bb6a5da,0x3a317502,0x3bae0ac9,0x3bcd0aa1,0x3c3f7043,0x3c48d8c5,0x3c69c7e8,0x3c853907,0x3c830183,0x3c428442,0x3bdd1876, +0x3a7b0474,0x3c8aa3ca,0x3ca09f20,0x3c853b72,0x3c65af84,0x3c383232,0xb9e948cc,0xbc4fa5f1,0xbcd9eb15,0xbc95e5a4,0xbc5486f8,0xbba35b49,0xbb89f0a8,0xbb240374,0xba28669a,0xba714ea2,0xba563dbb,0xbac6ce41,0xbbe2e30f,0xbc64a5f9,0xbc9b2303,0xbbe183bc,0xbae66bf6,0x3bcbe15b,0x3ba88702, +0x3ba8966d,0x3bbe0314,0x3bb9b372,0x3bc6aa5b,0x3be46574,0x3bcfa072,0x3bd035fb,0x3bbcc7fc,0x3c00f3df,0x3c2ebba1,0x3c50c605,0x3c744fed,0xbae8deff,0x3bb039a4,0x38b89919,0xbbb34ab6,0xbc0f61d6,0xbc5b67ff,0xbc8196e6,0xbca81ce0,0xbc8bb738,0xbc7fc0b6,0xbc61f2c7,0xbc425266,0xbc2188ae, +0xbc09158b,0xbbd64954,0xbb986220,0xbae73f7a,0xba2c9b53,0x3ae55968,0x3b165fc1,0x3b33afbf,0xb9f6267a,0xbb82a1a1,0xbbf05e55,0xbc0198ad,0xbc0e7718,0xbb9968cd,0xbb464dfa,0xb9ca60f3,0x3b81eb39,0x3bf26148,0x3c49a8f3,0x3c18e017,0x3bf6a6b7,0x3bd4019a,0x3bea7d2a,0xbc4b01d3,0xbb56d3d0, +0xbbd6feb3,0xbbe69f21,0xbc0e40bb,0xbc1c91d2,0xbc2f519b,0xbc505a5e,0xbc3bf1ef,0xbc31d4a5,0xbc2452c5,0xbc136532,0xbc00b4dd,0xbbd109e0,0xbbd7a397,0xbbe22e69,0xbbf02ade,0xbbe737a0,0xbbd3d029,0xbbac8c59,0xbc765ecf,0xbc97866e,0xbca4906f,0xbc4f8585,0xbc9ea573,0xbcc30010,0xbcb006fc, +0xbca12950,0xbc93040f,0xbc8a07f1,0xbc81d44c,0xbc672cbf,0xbc66c8f2,0xbc041dc5,0xbc9c7201,0xbc855450,0xbc2cb66b,0xb9d576c0,0x3acda3cd,0x39e5cdb2,0x3b3fc06e,0x3b85908f,0x3b329db5,0x3a6a11b1,0xba1e3b93,0xba210654,0xbb52d1be,0xbb491933,0x39f36101,0xba1237c5,0xb9f59464,0xbb0b42be, +0xbabb0b97,0xbaca8d2c,0xbb08f1af,0xbac71653,0xbab045cb,0xbb67d871,0x3ae4dde4,0x3b8f66bb,0x3bd40b50,0x3b6ab6fc,0x3bada215,0x3b990458,0x3bccb013,0x3bc486e8,0x3b8ded8e,0x3bab1208,0x3bb21530,0x3be0327f,0x3b7830b8,0x3a383ef9,0x3b731c9c,0x3ac2cc74,0xbb33ffb5,0x3c004b70,0x3c20cb9d, +0x3c181362,0x3b533565,0xbab1bafc,0xbb96333a,0xbb763157,0xbc3ab36e,0xbc130143,0x3b6f86d0,0x3b211222,0x3a578f69,0xbbad8e8f,0xbb917d00,0xbb97f76f,0xbbb997c6,0xbb370de9,0xbb350eee,0xbbacc1c5,0x3b358de7,0x3ae148e1,0x3bc48ac6,0x3be768a0,0x3be0c798,0x3a858fa7,0x3b7b94b1,0x3b7b10a6, +0x3b23545a,0x3aad25f1,0x3af01e29,0x3bdbadf0,0x3b500ed4,0x3b23755f,0x3b0bb0e3,0xbaf8c6b9,0xbbcb7863,0x3c352dc8,0x3cf14917,0x3ce75830,0x3ca86b33,0x3c39ca1b,0x3b1814dd,0x3b9b4af5,0xbc818837,0xbc6b2556,0x3bf7700f,0x3b368dc8,0x3ba8b0e2,0xbb88d72d,0xbb7a961c,0xbbc734f3,0xbc0f4e1e, +0xbbd287f4,0xbbf2059d,0xbc37477e,0xbb4da8a2,0x3a1ef55c,0x3c21885a,0x3c35042d,0x3c32e119,0xba4d073d,0x3c122a13,0x3ba101fc,0x3b603592,0x3ac11478,0x3b77793d,0x3c569cb6,0x3ac57b37,0xbb301bb2,0xbaa9105a,0xbbb60f1d,0x3baee5bb,0x3d3343b5,0x3d644410,0x3d4a3805,0x3cdf72f2,0x3b6d8de0, +0xbb0e9498,0x3b8901da,0xbcd3df4a,0xbcb4e203,0x3cb7eb14,0x3c7f7c90,0x3c27de44,0xbbb98fe4,0xbc10f781,0xbc148061,0xbc5aece5,0xbbe8d52b,0xbc0ad318,0xbc8f642d,0xbaf361ce,0x3abd8059,0x3c434a66,0x3caac16c,0x3c9d740b,0x3b23dfa2,0x3ca9a240,0x3ca29362,0x3c154b47,0x3bd4a376,0x3bed3fea, +0x3cc5503b,0x3c25917c,0x3b522cb5,0x3c52b8e4,0x3b0f7b33,0xbc5a2a42,0xbd147cd1,0xbd82b30a,0xbd35ff66,0xbc9ca0e2,0x3ca9bcec,0x3b8e0dc8,0xbd60d57f,0xbd3500c1,0xbd33911b,0xbd0786e2,0xbcbc9cb3,0xbbe075ab,0x3bff91cf,0xba49d88c,0xbc40b093,0xbcc2f487,0xbc849808,0xbc7d73f8,0xbce622a1, +0xbcc88c00,0xbc880135,0xbc00d576,0x3b78bcb2,0x3c524197,0x3c39557c,0x3c972217,0x3c9e1d78,0x3c098d5f,0x3caf67f2,0x3c54e11e,0xbb81e174,0xbba634c1,0xbb404c14,0xbc6dbde4,0xbc2be651,0xbb83c91a,0xbbcf9199,0xbd2d4d2c,0xbd796029,0xbdcb7795,0xbd9ee1c4,0xbd867792,0xbda08a25,0xbdc96899, +0xbdc0a891,0xbcc4381f,0xbcff752e,0xbd0552a9,0xbd082999,0xbd3dffa4,0xbd04ae78,0x3c2a7f5c,0xb910f521,0xbb9d4e2e,0x3aa8799d,0xbb53f10d,0xba8f9eb3,0x3b73e927,0x3c895db6,0x3c9d1c6f,0x3c39886e,0x3c3b1cff,0x3b01c35a,0x3b7d9393,0xbb6d96d7,0x3c51eeb7,0x3d0ac308,0x3ca712f1,0x3b35421e, +0xbcbd756b,0xbc4151a9,0x3d3bbfd8,0x3d9f5d18,0x3db1dc07,0x3db8165d,0x3d86ce5d,0x3da55d0d,0x3d14765d,0xbd88817d,0xbd236df0,0xbd1cebf3,0xbd032f85,0xbccd78af,0xbca06f97,0xbc5ab8fb,0xbc4b4dd3,0xbc377310,0xbbe43caa,0xbc8b8cdd,0xbc8ee9d5,0xbc3975d2,0xbc3c8eb8,0xb89334ab,0x3bc70e19, +0x3d201506,0x3d05203c,0xbc7ecc9e,0x3c0ed4eb,0x3b8cb34d,0x3c00faf6,0x3afbe82a,0x3bdeb336,0xbc3e5a9c,0x3d3d70bf,0x3d92cbd3,0x3d7bf61d,0x3d54f253,0x3c472196,0x3b8d6b28,0x3ba99f12,0x3c89adab,0x3d0cb3a0,0x3d7309fe,0x3d6b5fda,0x3c3d349a,0x3d1082f6,0x3cb03572,0xbb4fa894,0xbd619bab, +0xbda69b6c,0xbda5d279,0xbd897ed7,0xbd5c4411,0xbd278302,0xbd11cf2f,0xbcee91d8,0xbc89d3eb,0xbb8e21ea,0x3c039a19,0x3bc94acb,0x3cd05f51,0x3cb02638,0xbc0c29ef,0x3c889f23,0x3c7c5c70,0xb9e7f79a,0x3c8ac70d,0x3ce4946f,0x3cd22f64,0x3cea4e79,0x3ca25416,0x3bc7ea7d,0x3c2c063e,0x3c20106d, +0x3ca9aa77,0x3cb2246d,0x3cd4218c,0x3cf07e37,0x3ca30398,0x3b5b5b1a,0xbce96b05,0x3a21c06a,0x3cddd4d4,0x3d9745a7,0x3d898e5f,0x3d72df01,0x3d117943,0x3ca033b5,0x3bbef309,0x3c559651,0x3c8ff115,0x3cb80048,0x3ca6c8d4,0x3c7ea5e3,0x3c6a363a,0x3c25889c,0x3cbb6368,0x3ccbe94e,0x3c8e8b6d, +0x3c0aca0d,0x3b8c9334,0x39e435a8,0x3be79661,0x3c02b153,0x3bd2c724,0x3c9a9c81,0x3cc4f578,0x3c9b8693,0x3c52c0b5,0x3c0afc9e,0x3bea373d,0x3c613b22,0x3cbd477d,0x3ce9d504,0x3cd3b42e,0x3c98f2fc,0x39deab37,0x3c0139eb,0x3c0a8c77,0x3c8ba812,0x3b233354,0xbc3979d3,0xbce9cff4,0xbcbad469, +0xbc3c23e4,0x3bdfc8bc,0xbb9588a3,0xbbe11b07,0xbbcccfdd,0xbbebc24f,0xb992a7c1,0x3b049a96,0x3c2e3224,0x3c5ba4bb,0x3c492fda,0x3c46b374,0x3c4e4d46,0x3c913ed0,0x3c8de753,0x3caaf670,0x3cc22a0f,0x3cb03aec,0x3c8ec53c,0x3c39c809,0x3c60737a,0x3c7494b8,0x3c9da20e,0x3c89da83,0x3c593b20, +0x3c2b5400,0x3c20cbe3,0x3c3a0948,0x3c5f6605,0x3c8c975c,0x3cb0290b,0x3ce41109,0x3cf5d242,0x3d08ab09,0x3d112dbc,0x3cdcd438,0x3c81b8ae,0x3bdb2d64,0x3c29103a,0x3ca31215,0x3c901d8b,0x3bee0d78,0x3c5e71ff,0x3c72f264,0x3c70e078,0x3c4476f5,0x3c77137c,0x3c30dd60,0x3c787d74,0x3c0d9c70, +0x3c2a81ca,0x3bc47e0a,0x3bd9210a,0x3bddacaf,0x3bf6ae4e,0x3bcf8b70,0x3c1c5567,0x3b8a8170,0x390d9bec,0xbabc5fa3,0xb9e86031,0xba013f71,0xb9f11644,0xba6f1f4a,0xbac3bbab,0xbabd13b1,0xbae8bda9,0xbb0d4cb3,0xba8f3936,0x390a2271,0x3b5f1ecb,0x3b90c0ab,0x3bf81c6b,0x3c0c78ba,0x3c0b438f, +0x3bd407d8,0x3c0808f5,0x3b6acf53,0x3bf730e5,0x3c068d47,0x3bfdbe97,0x3bd76808,0x3c1982b1,0x3c1fb993,0x3c1df8ef,0x3bf30968,0x3c286e6d,0x3c334e67,0x3c17eb5d,0x3bf9cfc3,0x3bae7e20,0x3bca70c6,0x3b9c9d13,0x3b975d74,0x3b81b032,0x3b9918d1,0x3b908e16,0x3b8966e9,0x3b838883,0x3b77ffac, +0x3b5dae90,0x3b8a141c,0x3ba6dfbc,0x3bc17596,0x3bd3f05e,0x3bdaba4b,0x3bda08e8,0x3bce335c,0x3bc1a243,0x3bc78bcf,0x3bcf5cc6,0x3bcb2926,0x3bf70379,0x3bf1c4a7,0x3b97beb2,0xbb7a1532,0x3bfcd6fc,0x3b9c9d1e,0xbb9ac90f,0xbb899e1a,0xbb5caeb6,0xbae91d5c,0xbb14d433,0xbae16316,0xba7d9864, +0x3b98420b,0x3be2c017,0xb9fb34b1,0x3b7246c7,0x3bf1a059,0xbb8a1c3c,0xbb84cb40,0xbb80787d,0xbb90eb71,0xbbb2f0ea,0xbb923863,0xbb9c1c07,0xbbade41a,0xbc01b364,0xbbea94bc,0xbbc97217,0xbb832ad9,0xbb42bd11,0xbb56969a,0xbbb9021f,0xbba32cd0,0xbb965b97,0xbb386cd9,0xbb7dd2a3,0xbb7fd51f, +0xbb1a1aca,0xbb65638b,0xbb44d316,0xb94c6e72,0xbb236c03,0xbb32eeeb,0xbb2d893c,0xbb016813,0xbb0ab6d7,0xbb360d48,0xbb38caf7,0xbb1a407a,0xb9331b95,0xbb694d1c,0xbba1dc4f,0xbb1f59ad,0xbb70ab0d,0xba4b3330,0xbc004766,0xbc15da82,0xbbcaabe4,0xbab020c1,0xba763cc9,0xbb877a1a,0xbc4e7b0e, +0xbc6148aa,0xbc46cc12,0xbbd4daef,0xbad56799,0xba91cf5a,0xbbf27c16,0xbbd31e59,0xbbd7c19a,0xbb21797b,0xbbe607be,0xbbb820f3,0xbb4777cb,0xbb85c22a,0x3a4dfd56,0x3b198b8d,0x3af5c9cc,0x3a5c033e,0xbaddcb7a,0xba9e3a22,0xbaeb1a07,0xbb35adbd,0xbb44b581,0xbaf1685c,0x3b3b6df2,0xbae9f138, +0xbb86f764,0xbbb43ae5,0xbbe84f61,0x3b6bdaab,0xba7b6583,0xbc71d411,0xbc28b6ae,0xbb676f32,0xbbf5961e,0xbc278043,0xbcc97b2a,0xbccbbba3,0xbc9a23df,0xbbd95636,0x3b1ad09b,0x3aba51fd,0xbc49fc63,0xbc0fdc79,0xbc055943,0x3ae7005e,0xbbd410af,0xbb86e203,0xbb337057,0xbb3c6d0c,0x3b8ba842, +0x3c30857f,0x3bf8ee36,0x3bb72368,0x3b5fb10f,0x3b81825f,0x3ac33b7c,0x386d14f9,0xba97a89f,0x39f6666b,0x3c3dba1b,0x3a2e970a,0xbb31fb02,0xbb36d0a4,0xbb718314,0x3bd24cc0,0xbc3f52c7,0xbcbce3d9,0xbb644bd5,0x3c823a33,0x3c0226ed,0xbba5898f,0xbcf700e0,0xbd10310d,0xbcddf9c7,0xbc1561ce, +0x3c18af65,0x3c097863,0xbc3ca0cf,0xbc03204e,0xbc0cb159,0x3b1aa280,0xbc753a90,0xbc1afbba,0xbba91e88,0xbc2400ae,0x3bbdc077,0x3c661ee7,0x3c8ec0bd,0x3c38c41e,0x3b01da92,0x3c6189c7,0x3c86bbf3,0x3bd223cb,0x3b8e3a59,0x3bb5c199,0x3cb685ed,0x3c0a5734,0x3b9d341d,0xb9d86a0f,0xbbcaf410, +0xbd179f52,0xbd5db51c,0xbd68a86e,0xbd7ee8c1,0xbdb269d6,0xbd1f19d6,0xbc8407cf,0xbc9053a2,0xbcee8fff,0xbd008c21,0xbc80c3cf,0xbc31ba8f,0x3affaa7e,0xbb0b45b4,0xbc7229c7,0xbc4aa8c7,0x3c7db71b,0x3c1125dc,0x3bb1c261,0xbbe691fa,0xbc09326b,0x3b5f9ac9,0x3c170fe4,0x3bee1ac0,0x3c61f6cb, +0x3cc81060,0x3c97eddc,0x3c74a12a,0x3c3389a5,0x3c7ef7b6,0x39e0499d,0xbbba14df,0xbc8d0448,0xbca6007c,0xbc9ff627,0xbcb51cba,0xbc8f49a9,0xbcc76a1c,0xbd94bb11,0xbd8f1951,0xbd0cc8cb,0xbbfbc44b,0xbb5f09f8,0xbc1d903b,0xbd2f5a24,0xbd2f3304,0xbb03b863,0xbcd23835,0xbd053dbe,0xbd067521, +0xbc9c6151,0xbc8dbd2d,0xbce1ec5f,0xbc914796,0xbc24330f,0xbc040af6,0xbbfd6755,0xbb84efcd,0x3c046727,0x3cbdeb05,0x3c9dd114,0xbba72069,0x3ae7d40d,0x39dcb23d,0x3b819405,0xbaf8782c,0x3be80af8,0x3b234d81,0x3ca39898,0x3c3fdc81,0xbc9ebb4a,0xbc993063,0x3d82f42a,0x3d9dc5e0,0x3dc73dd9, +0x3db99128,0x3d42545a,0x3d3fd524,0x3c5158bb,0xbd2aa8a0,0xbd2ef7ed,0xbd26a104,0x3b7ffa33,0xbc8523e5,0xbcb264ee,0xbcfc7a05,0xbd3537dd,0xbd244656,0xbc8f7a51,0xbc7de468,0xbc650bfe,0xbc1fb4ff,0xbc581e3b,0xbb35cb9a,0x3c1f1b1f,0x3cebf589,0x3cdb7ace,0xbab2b9a1,0x3c2d8b96,0x3b8e0f95, +0x3b7b4fe4,0x3bf9b941,0x3c6c1b6c,0xbb93a7aa,0x3d1662fb,0x3d615dda,0x3d95959a,0x3d89d684,0xbb9bc1a0,0xbc1cb68b,0xbc1b4d1f,0x3c284478,0x3cd4a0ce,0x3da386f8,0x3da30457,0x3d01e849,0x3c97a564,0xbbc2097d,0x3ae25698,0xbd0abe0c,0xbd3aa2ec,0xbd45bf01,0xbd62eaef,0xbd67c58d,0xbd3f915c, +0xbd116ad1,0xbcc942e2,0xbc8ff30d,0xbc01e89b,0xb99e2685,0x3bae6c8f,0x3c017ffd,0x3bb07771,0xbc36bf2c,0x3ba43d00,0x3c1b9d58,0x3b55379d,0x3c180e9f,0x3c9b02b8,0x3cfee143,0x3d0357c8,0x3cc0a62a,0x3c0e78b6,0x3aa16c61,0x3c81be4c,0x3c2a2e29,0x3ba76d29,0x3b6b14b2,0x3c4eaa20,0x3bff2edb, +0x3b8e1c7a,0x3bd930a1,0x3c6cb4a5,0x3ce90144,0x3d742179,0x3d179f8a,0x3cdc20d5,0x3c77848f,0x3ca7aa43,0x3cb4727a,0x3c8977fb,0x3c59c2fb,0x3c357f75,0x3c3806aa,0x3bd5339e,0x3bbdb1d7,0x3c6b5b09,0x3ce4670b,0x3cef2f99,0x3c69810b,0x3c763667,0x3c67bf0b,0x3c5de1ff,0x3c6d2c3b,0x3c2bdb64, +0x3c33be6d,0x3c997e4b,0x3cbff680,0x3cb58435,0x3c9c7a88,0x3bf86099,0x3bbf2774,0x3a582aab,0x3bd64df8,0x3ce6e4b5,0x3c513e56,0x3b60f47e,0x3b543905,0xbcd56e44,0xbcd35096,0x3ad3ec53,0x3b9dbb2d,0x3beaea24,0xba248990,0xbc3ad8db,0xbc41bb50,0x3c42d8a2,0x3c74a30e,0x3c7ea463,0x3c1bb534, +0x3bbdbbdb,0x3c43c870,0x3c4cf436,0x3be648c2,0x3bede3e8,0x3c6ee7b9,0x3c92387f,0x3c966537,0x3c69de0d,0x3cc64f2c,0x3cdfaaf2,0x3c8fb800,0x3cab468c,0x3c8419d9,0x3c1cdebe,0x3bb94843,0x3c4fc2fb,0x3c3bc654,0x3c3e4edf,0x3c64a97a,0x3c6bf0d6,0x3c0aa7d6,0x3b47ee68,0xbb414012,0xbb0af425, +0xbb86bb56,0xbc241493,0xba22df9c,0x3c08c80a,0x3c86130f,0x3cbdbf2c,0x3ce53ee3,0x3cfe9d30,0x3cdccf21,0x3ccf2217,0x3cdafacc,0x3ccb2eb3,0x3c9598fc,0x3c77c253,0x3c8abac4,0x3c8c37f8,0x3c872180,0x3c73ce1e,0x3c76e2f2,0x3c709148,0x3c371efe,0x3c11848e,0x3c065b67,0x3bcc1b7c,0x3bab4486, +0x3b72a8ce,0x3c11d3f8,0x3b241db3,0x3bf57f2c,0x3bbf22fa,0x3b2120ee,0x39630ed6,0xba867c32,0xbb1fa5df,0xbbac4479,0xbbdb865c,0xbc05a510,0xbc24f1a3,0xbc490d59,0xbc7fd3c9,0xbc93338a,0xbc938172,0xbc929eeb,0xbc8cc0c0,0xbc5ada3f,0xbc37f9b5,0xbc106a41,0x3b0b3a87,0x3b89d72a,0x3bff6a90, +0x3c25f403,0x3c6aa3e0,0x3c92e806,0x3c97f412,0x3c98d028,0x3c9b8855,0x3ca55890,0x3cb62aca,0x3cae34e8,0x3c9fa0e5,0x3c7808d9,0x3c3b2cbb,0x3c2f6b16,0x3bcced41,0x3c27ab4f,0x3c036268,0x3bf95cf2,0x3be362c3,0x3bc2419d,0x3baaffa6,0x3ba41d96,0x3b819c3e,0x3b4dce21,0x3b3ace2f,0x3ae5710a, +0x3a89c4e3,0xb98cf26f,0x3ab1e7c5,0x3b2ade65,0x3b6bb7db,0x3b74a0cb,0x3b90ea40,0x3b6f807d,0x3b9c1988,0x3bb08f35,0x3be9d36f,0x3c0b01d8,0x3c124b08,0x3c0f708b,0x3c0432ec,0x3c023a53,0x3bfc76c2,0x3bf1715e,0x3bd8fbe5,0x3beb256e,0x3c0c5437,0x3c28e5de,0x3ba2d0af,0x3bc2bd66,0x3c29af7d, +0xb9ac74ce,0xbb504b07,0xbb5333b4,0xbb3ab1c3,0xbae10ba4,0x3a969862,0x3a6e114f,0x3a6cb6a0,0x3ac69b8a,0xbae2695f,0xbb174ad8,0xba0b3ea7,0xba5d118c,0xba17ede3,0xb9b0faab,0xba75b14b,0xba45ca3f,0x3a06ef0c,0xb7182a05,0x396db68e,0x3b1cc9aa,0x3a680d8f,0x39489f85,0xbab0be7b,0x3a87cfe6, +0xb913b25a,0xbb0d9c81,0xbb40acc8,0xbb5191eb,0xbb5d155f,0xbb5bf636,0xbb3dfa68,0xba86e90c,0xbaa95f86,0xba69e198,0xbba009b2,0xbb5f6871,0xbc333978,0xbc284e64,0xbbee1259,0xbba4f88b,0xba17e130,0xba4ff4b2,0xba19683f,0xb924f184,0xbc1b5d06,0xbc2a0aeb,0xbb8f31ce,0xbb80d458,0xbb293ec4, +0xba6836e3,0xbad207d7,0xba0ecf21,0x3b7db6c6,0x3af7c3ed,0x3b545ec5,0x3bc96a83,0x3b1a3ba0,0x3bb6fb32,0x3bbd7a9f,0x3b849b4a,0x3b3326b6,0x3b8b38a0,0x3a78460c,0xb897781c,0xba4f8e76,0xb946aaa9,0x3a90464e,0x3b78109a,0x3a4c26f9,0xbb426bf1,0xbc04caa8,0xbc1c925a,0xbc943b66,0xbcaa0e68, +0xbca1b9d1,0xbc76e933,0x39a94276,0x3b909793,0x3be5403d,0x3c264665,0xbc278914,0xbc7f14cc,0xbbf01642,0xbc136069,0xbbbf23d0,0xbb8cb532,0xbbb48db7,0xbb6f5fde,0x3b78afdd,0x3aff22a0,0x3ba657a7,0x3c196ea7,0x3c1189f1,0x3c3e57d0,0x3c548f0f,0x3c1c3fc4,0x3bec87b1,0x3c45351c,0x3b712ec6, +0x3a81a6a4,0x380a9350,0xb9eee27f,0x3b023960,0x3c2684ea,0x3b154e92,0xbb8311cd,0xbc557786,0xbc782220,0xbd34f570,0xbd0dc047,0xbccc4867,0xbcba7994,0xbc007422,0x3a1d4665,0x3b9dd830,0x3bde929d,0xbcdd57b8,0xbd04de44,0xbc8d4184,0xbc843de8,0xbc59172b,0xbbb8ab0d,0xbbb5bc51,0xbada3de7, +0x3c36a952,0x3bfc7531,0x3c523744,0x3ca0251f,0x3c4510b9,0x3c889ffe,0x3ca073a7,0x3c70e7c1,0x3c30822d,0x3c4e4223,0x3c45095a,0x3c51b781,0x3b7d72d5,0x3b8ed5b8,0x3ba215f5,0x3c8b5af5,0x3b6cc3d7,0xbc1de6ad,0xbce24aee,0xbd27e757,0xbbe845da,0xbc9ff405,0xbd0e0dd6,0xbd090fdc,0xbcd53b1d, +0xbc8a6f0c,0xbc340b20,0xbb76ad62,0xbae21b76,0xbc3ca405,0xbd296add,0xbca54e63,0xbcc311ed,0xbcfb4355,0xbce3dbbf,0xbca71f6f,0x3906fc74,0xbba9499b,0xbb9e403c,0xbba43abe,0x3b8d290c,0x3c5efa00,0x3ca66333,0x3c4cb3ad,0x3c5dfa26,0x3ccf96f4,0x3c85a81e,0x3c22b045,0x3bcff2a1,0x3bb5462a, +0xb9fe341e,0x3ba1643e,0xbc4f1f4f,0xbc97cded,0xbc3448b9,0xbb8ef3c9,0xbd48d0d2,0xbd39085c,0xbd41ce54,0xbd259dc7,0xbcb239c2,0x3c656e7f,0x3c6bb6c7,0x3c2f5a7f,0xbd36854c,0xbd6e7a38,0xbd1694f2,0xbc1472d9,0x3be610c3,0xbbeda928,0x3b93eb84,0xba5a9705,0xbb8029ff,0xbbbde7e0,0xbb38aa68, +0xbadc05e0,0x3ac90188,0x3bd39b91,0x3c625b72,0x3cd982b7,0x3cbaa94f,0xbba7e502,0xbb49156a,0xbb771e69,0x3b792380,0xbc00aa4d,0xbb9262ec,0xbc2c3a5c,0x3c99a0be,0x3c8d34fd,0xbc236c19,0xbd08ed76,0x3dac6f95,0x3decbbc6,0x3daa149e,0x3d552fcf,0x3c84a476,0xbd4e5a60,0xbd81698b,0xbc9aa90e, +0xbd8460fb,0xbd5fe18d,0xbc3d3516,0xbb9a6c4f,0xbb891d91,0xbd055597,0xbd04484d,0xbd092be3,0xbcb44b5c,0xbb8028c3,0x3a81920a,0xbc2db3df,0xbc07151e,0x3a7c830a,0x3cbb086a,0x3c45e6e6,0x3bef9aca,0xbb6d7898,0x3b3b9e31,0x3abacb1c,0xba992a08,0x3b46249f,0x3c0314f0,0xbb7068b8,0x3cb23d34, +0x3d2abf30,0x3d906ce2,0x3d9a29aa,0xb9a50d05,0x39f131e0,0xbc1fe435,0x3c689e25,0x3d662d59,0x3da2affb,0x3d8d8eef,0x3d2bc0c4,0xbd069f5c,0xbd804332,0xbd30000e,0xbd2d7764,0xbcd2cf13,0xbceddfd2,0xbc9fe53e,0xbcbfa44d,0xbceb0bfe,0xbce6a345,0xbc91d122,0xbc126285,0xbbdea5a9,0x3b929ee2, +0x3cc2a2fe,0x3c305bc3,0x3c21ec85,0x3c0041cc,0x3abdd384,0x3b56a2ae,0x3c00196f,0x3af34176,0x3c1488ef,0x3cee451a,0x3d0b98ea,0x3d06a0b1,0x3cb0cdfd,0x3c678728,0x3c91c8da,0x3c8e6459,0x3c44854a,0xb99d74e0,0xbc72f4c1,0x3aaebba2,0x3c12be53,0x3d05b2fb,0x3c71a763,0x3c9aaf3c,0x3d232e58, +0x3cdaa17a,0x3c70d769,0xba98cf1c,0xbc01d622,0xbbb53a71,0x3b700c35,0x3b9de55b,0x3b9cef07,0x3c0fd576,0x3be6b183,0x3c3228b3,0x3c806080,0x3cc0cd16,0x3cbf9fbc,0x3c39e5cc,0x3c7c200c,0x3c966796,0x3cf34b46,0x3c909aa2,0x3c528ada,0x3c348c0b,0x3c7383b6,0x3c9ac48f,0x3cae6d98,0x3cb32b64, +0x3a2e2f34,0xbbc82367,0xbb7fa1fd,0xbaa72b31,0xbb27250b,0x3c3cc24c,0x3c5b6403,0x3bb5d9a8,0xbc425a0e,0xbc66f93a,0xbbbe2715,0x3c67395f,0x3d02c616,0x3d2a0980,0x3d358680,0x3d0e5ae5,0x3c706229,0x3c6668ff,0x3c6912b5,0x3c7f7523,0x3c9d3285,0x3ca315a2,0x3cac434d,0x3c3ee60a,0x3bc5cbcf, +0x3ba6b094,0x3c41832d,0x3c763309,0x3c95c4df,0x3ca30f16,0x3ca71e58,0x3c92e731,0x3cba43f0,0x3cae9726,0x3c8d2fb8,0x3bf174f5,0x3b5b7cad,0xba6d1359,0x3be1bff5,0x3c5eb097,0x3ca326bf,0x3c75788e,0x3c4d3135,0x3c5ec792,0x3c24c4ef,0x3b9b3ffa,0xbb798289,0xb91fa111,0x3b552a2d,0x3c29a67a, +0x3c16f273,0x3c32e726,0x3c5629b8,0x3c7d4a6e,0x3c6d7c80,0x3c7b999c,0x3c53310f,0x3bedc759,0x3b0c2928,0x3c2e8e4f,0x3c936806,0x3ccc1cb0,0x3c934fc1,0x3c3fe8e4,0x3bfae52b,0x3c00a2ec,0x3c19d521,0x3c245c9e,0x3c0f9a15,0x3bd66454,0x3bcda071,0x3ba9d8ed,0x3c96133e,0x3caafe8b,0x3c94846b, +0x3c748a1f,0x3c5bfb30,0x3c3e9b38,0x3c241298,0x3bf1079d,0x3b9b8d93,0x3b6e3f7e,0x3b1d178e,0x3b015756,0xb8b474b8,0xbb2b13c1,0xbb11eeb9,0xbade40d5,0xbaa9937a,0xbadf59dc,0xba6714d2,0xba8f08a6,0xbb09797e,0x3ba4354d,0x3bf184f0,0x3c2809cd,0x3c3c7b26,0x3c74d829,0x3c81030f,0x3c96cb12, +0x3ca4030d,0x3cab26af,0x3cae3804,0x3cc28644,0x3cb31838,0x3cb41d64,0x3ca8bb60,0x3ca69c33,0x3c6fc1df,0x3c82557e,0x3c6b2b28,0x3c62c512,0x3c4eb087,0x3c47b922,0x3c3faea4,0x3c397db0,0x3c40cb3d,0x3c4049dc,0x3c3d9df4,0x3c2a6af8,0x3c1db7b0,0x3c0b60a9,0x3c131fba,0x3c101cf2,0x3c0c668c, +0x3c0d4a13,0x3c0a1e4d,0x3c0b6575,0x3c0a2556,0x3c13f6f0,0x3c17e7ea,0x3c4444dc,0x3c4c5ed3,0x3c60852a,0x3c6387f6,0x3c645225,0x3c655ac3,0x3c6b25e7,0x3c6cd01f,0x3c6e7450,0x3c67f0cb,0x3c71d0b1,0x3c4eff2b,0x3c6ad1fd,0x3c5fdfa8,0x3a79eb76,0xba1c49bd,0xb9365d85,0xbb299c05,0xbb3178bc, +0xbb31552a,0xba2bd29c,0x39a651d4,0x3b0976a5,0xbac729d6,0xbae6ead0,0x3a9daf41,0xb9c19727,0xb909b33f,0x3982d3c2,0x3a88966b,0x3ac4d8c9,0x3b01a3f3,0x3ac9668c,0x3aea0ae0,0x3b22def5,0x3b4e3526,0x3b4cd38e,0x3b202ac9,0x3b3fd3a7,0x3b298569,0x3b22b5da,0x3a287651,0x3887a2a9,0xb9b242c2, +0x39a021b6,0x3a47b610,0x3b0852c4,0x3ae75661,0x3aac94ee,0xbb080751,0xba4d25a8,0xbc0a08e8,0xbb544ce6,0xbc0b5e05,0xbbfb7182,0xbb5c31dc,0x3b7ff4c0,0x3bbf8ca1,0x3c0701e8,0xbade3f1e,0xbb70bd17,0x3b747164,0xba88c72c,0xbab85c87,0xbacceedb,0x3844e8e3,0x3aa63973,0x3b30a0c5,0x3b4dc064, +0x3b8615de,0x3bdae22e,0x3c054757,0x3c01fdf8,0x3bf86709,0x3bd50a1c,0x3bb56d8d,0x3be05573,0x3adec95b,0x3913b05f,0xb6120427,0x3a5eb3b3,0x3b356048,0x3bb3fdb4,0x3b8d10c1,0x3aba7928,0xbbc434fa,0xbb8003b1,0xbc318b23,0xbbd57bf0,0xbc820786,0xbca1522a,0xbc923021,0xbbafab58,0xba68edfe, +0x3c0ad092,0xbc1883e5,0xbc4afb88,0x3b951762,0xbbd92e07,0xbb90082c,0xb97cf9ae,0x3b05aaac,0x3b7e28b7,0x3ba2f29b,0x3b6fd5cd,0x3ba67a6b,0x3c200456,0x3c5fecfd,0x3c66e017,0x3c5861b9,0x3c438b85,0x3c2decc3,0x3c618dd3,0x3b67ce3f,0xbaa2c84d,0xba7ac92c,0x39a57701,0x3b950dc1,0x3c3039d3, +0x3bd01f99,0x3a8c94dc,0xbc3dcac1,0xbbc4c4bf,0xbc9225bb,0xbbb5cb9e,0xbcac494f,0xbcc47208,0xbc260133,0x3c024102,0x3c74036e,0x3cc2c515,0xbbe4bddd,0xbc58f4a3,0x3c5ec07d,0xbb5f1fb2,0xbb9c38a5,0xb9653ad1,0xb9133e3e,0x3b10d5e6,0x3b9ed1a0,0x3c07b6bf,0x3c171ba5,0x3c719ac7,0x3cc19085, +0x3cae7d49,0x3cae7ce8,0x3c8ba502,0x3c70237c,0x3ca519a1,0x3c3963a3,0x3c1021b9,0x3a892dae,0x3b2cc1b6,0x3bc01d42,0x3c9ba1e0,0x3c3175aa,0x3a35f9f7,0xbc9552a4,0xbc631197,0x3c5d0ac4,0xbca9ea1e,0xbd14b9e1,0xbd3b009d,0xbd438ffc,0xbcda4e18,0xbc70ada1,0xbb5f4577,0x3c514572,0x3b725a0c, +0xbd22e40e,0xbd0bbad7,0xbcf3df38,0xbccb8a2f,0x3a8df4ce,0x3aaedd0f,0xbc9af677,0xbc918e9f,0xbc6f54c3,0xbbba72e8,0x39daf439,0x3bef2990,0x3c8104ee,0x3c147e26,0x3c2d9236,0x3cbb0315,0x3c36d6d3,0x3b8e3825,0x3b8cf5d4,0x3bc844e2,0x3b716e3e,0x3b99c98b,0xbbc296d2,0xbc0133a1,0xbc132903, +0x3c7d871c,0xbd3b4a03,0xbd470626,0xbd329540,0xbcb26b39,0xbc83ca50,0xb927df74,0x3bd11fce,0x3c72ad13,0xbd07dac7,0xbd331f1f,0xbd7ffdc6,0xbc63aa44,0x3af8cfa1,0x3b0231c4,0xba2b8be0,0xbb7f3929,0x3bfe161d,0x3bc46593,0x3b6bccc8,0x3b34d3e9,0x3c0a0d48,0x3c2cdb85,0x3c7983e2,0x3cb038b9, +0x3cb292ec,0x3b2126ab,0xba6dc8e0,0x3a894d8d,0x3b5ae60f,0xbadefc7e,0x399a868b,0xbc2965c7,0x3c7fb533,0x3c661b6f,0x3b2d6610,0xbd02ef31,0x3db8827a,0x3d9bdb96,0x3d52d163,0x3c557e12,0xbd10f8ca,0xbd99c640,0xbda1c881,0xbbfb1193,0xbd89793c,0xbd90cfb3,0xbd8a5c4a,0xbcf7ef88,0xbc966268, +0xbd0fd36a,0xbc40340f,0xbc125ec3,0xbc70f574,0xbc2759fd,0xbb777f19,0xbbf36f05,0xba8d9b53,0x3c34744d,0x3d240445,0xbac87974,0xbc290821,0xbb018b55,0xbb9e18af,0x3a700ed1,0xb9700eed,0xbaee11e2,0x3a925ae8,0xbb44c77a,0x3c38c0f0,0x3ce17a7b,0x3da38d37,0x3d9a2339,0x3c60dc50,0x3caa470b, +0x3cf050e5,0x3d413df5,0x3da0ca34,0x3d7be0cb,0x3d1ece8f,0x3d0ba759,0xbd62efca,0xbd8cee91,0xbd3d1cc8,0xbc479ed5,0x3b151e54,0xbc6df856,0xbc6a0742,0xbc9f8e52,0xbc68ac22,0xbc9d3fa2,0xbc90ecdc,0xbbea7181,0xbb7bd624,0x3b88c055,0x3d0cf26b,0x3c20b417,0x3bcae02c,0x3c4da9bb,0x3b3ba73d, +0x3b0e5965,0x3b41f7cd,0xbb8a3303,0x3a749146,0x3cb41dfd,0x3d08bd78,0x3d15297c,0x3d0a628b,0x3cad7db6,0x3c9f6e95,0x3cbf2167,0x3c8e941e,0x3c23dcfd,0xbb0bf34b,0x3c4cac28,0x3d1223c4,0x3d8b4049,0x3d335e0a,0x3cfd90e9,0x3c14b91c,0x3b9757cb,0xbbaa72ab,0xbcb7983e,0xbcfa72c5,0xbd0a7c87, +0xbcb97f18,0xbc85e151,0xbc31be66,0xbb4a0085,0x3bb4beed,0x3bf87b5c,0x3c873830,0x3c73c58c,0x3c711ad9,0x3c34f408,0x3c5a50d7,0x3c8a2641,0x3cef5b1b,0x3cc16aeb,0x3cac83a6,0x3c6a6595,0x3c672ac2,0x3c8d9bec,0x3cbb9c68,0x3ca92671,0xba9230ee,0xbb553a10,0xbc0b627a,0xbbe027ab,0xbad689e2, +0x3c4a4fa9,0x3c67043c,0x3c115a5e,0x3c74b2f9,0x3c62753f,0x3af82ca1,0x3cc7def1,0x3d231f0f,0x3d5761d3,0x3d57a487,0x3d3f538f,0x3ced7da4,0x3c955e50,0x3c4fae55,0x3c63c5a3,0x3c88237e,0x3c8886e9,0x3c854721,0x3c9a7586,0x3c82d23e,0x3c07164d,0x3bffcac2,0x3c32a929,0x3c999da8,0x3c3cea2b, +0x3c54a9ca,0x3c9e1ce6,0x3cae41cd,0x3ca363a3,0x3c8e2d7e,0x3bf50f73,0x3c134a9d,0x3c10b5c6,0x3c39d869,0x3c410b74,0x3c46ba21,0x3c519f74,0x3c88c174,0x3ca889bf,0x3c8cda7d,0x3c67f893,0x3c2a04b6,0x3ba5f705,0xbadd2bdd,0xbbb54e6a,0xbbaf55e7,0xbb303e4f,0x39e7407d,0xb8a3f8d9,0xbb8e37dc, +0xbb6fe081,0x3b2c321a,0xbac9bec7,0xbb5ca242,0x3b696774,0x3c494456,0x3ca3d3f9,0x3c8b58f3,0x3c3fa7aa,0x3c04e1aa,0x3c32306b,0x3c547ad6,0x3c79873e,0x3c48b393,0x3c361127,0x3c2b6db0,0x3c295667,0x3c8ff832,0x3c7861a4,0x3c6319b7,0x3c54f1ec,0x3c4e387f,0x3c422af5,0x3c23a620,0x3c15b33c, +0x3c0609d4,0x3c097982,0x3c192539,0x3c1c7dfe,0x3c33324a,0x3c3bd6dc,0x3c380b09,0x3c1f8090,0x3c0c6794,0x3bf20a7b,0x3be67bed,0x3bc6b124,0x3befe75f,0x3c13469d,0x3c3c30c1,0x3c491eb1,0x3c40602c,0x3c51f2c3,0x3c4f7d26,0x3c66aa56,0x3c6b8857,0x3c6db2b4,0x3c57d7ee,0x3c6fbae5,0x3c6d954b, +0x3c831713,0x3c8557eb,0x3c7a441b,0x3c4e96ac,0x3c4563e7,0x3c4298a9,0x3c3ae629,0x3c31e7ae,0x3c2cfe50,0x3c2ba497,0x3c24fefc,0x3c2ecf1e,0x3c2e7d02,0x3c287c7e,0x3c2a2012,0x3c26b27c,0x3c2522d4,0x3c1dc882,0x3c1ca150,0x3c1a4576,0x3c1bd360,0x3c1e3d53,0x3c190925,0x3c114df0,0x3c1ccf4d, +0x3c274167,0x3c258e14,0x3c323398,0x3c45f48c,0x3c469dda,0x3c49463a,0x3c4ce1ba,0x3c4d2f8a,0x3c535423,0x3c4d9243,0x3c328ecd,0x3c282e88,0x3c610803,0x3c4e5889,0x3c3e6cd7,0xb9a3f718,0xba5ce356,0x3a3df2b4,0xbb31b607,0xbb4d3011,0xba836b02,0xbabdfb9c,0xba30524d,0x3ae7af0a,0xb98aee7a, +0xba251c04,0xb93473b4,0xbad2649a,0xbb018ce7,0xbb0e7aae,0xba26ed7a,0xb8f89505,0xb91171fa,0xb98931b1,0x3931d3ec,0x3a85983c,0x3ae109f9,0x3b0ec9ae,0x3b322531,0x3ad4b86d,0x3ad10c92,0x3b2b03f2,0x3a35fe78,0x384b99be,0xb9ab1fea,0x3a27f933,0x3ab426c8,0x3b23893f,0x3a7dacc4,0x3864e0d1, +0xbaa49f54,0xb9fe909e,0xbb5e5a9f,0xb8d7315d,0xbc035271,0xbc0db4d4,0xbacfd82b,0xbb2b0d43,0xba5b38e5,0x3b6dff60,0xba9465c8,0xbb3bd348,0xbaa7b633,0xbb38a7a9,0xbb560fb3,0xbb8ec764,0xba9e3d6f,0xb9d0eee9,0xba5eceea,0xba60f3d0,0x3a012503,0x3b6204a7,0x3bcf6804,0x3be2124f,0x3bbfc58d, +0x3bc0ac8b,0x3b9f3daa,0x3b9175b8,0x3968a2b5,0xbabc8b4a,0xbac2b0e5,0x3914ece2,0x3afdd61d,0x3b959fe1,0x3b74c58a,0x3ac3e5cd,0xbbd35fe6,0xbb773684,0xbad77666,0x3b3b3d72,0xbc829184,0xbc954fa5,0xbb34c573,0xbbe3fc73,0xbb4a59f1,0x3c2bbcc0,0x3aea46d7,0xbab48655,0x3a6b05e8,0xbbdfbc50, +0xbc095b7e,0xbc0e02a1,0xba39ee2e,0x3aa23348,0x3ac4e43a,0xb965289f,0x3b24b1ac,0x3c027035,0x3c3bd1de,0x3c566fd4,0x3c3b1d48,0x3c39c629,0x3c283c12,0x3c1dc272,0x3aac8a98,0xbb2febf7,0xbb2de0d6,0x39c2aa00,0x3b985c9e,0x3c1744e0,0x3bd9a904,0x3b2071e3,0xbc0771e0,0xb841116b,0xbb785597, +0x3a81f976,0xbcdc0eb8,0xbcc8ac83,0x3b72259b,0xbbb0127d,0xb9bcc4bb,0x3c74b139,0xb8ef2731,0xbc0b89d1,0xb6777803,0xbb342436,0xbbd025e7,0xbc19b56c,0xbaf62278,0x3a9f7f23,0x3ab93d17,0x39288486,0x3b93ff8d,0x3c4c2c08,0x3c94eda0,0x3cbc6809,0x3ca93f25,0x3c94b150,0x3c701c8f,0x3ca59840, +0x3c0e5149,0x3b9f7f24,0xba1ebf49,0x3ae9fc61,0x3bfa9ba6,0x3c88f328,0x3c61bfe8,0x3c1591d1,0xbc6acaa9,0xbc017788,0x3c27a61e,0xbd44999a,0xbd0e141a,0xbd3ad8b6,0xbd793df5,0xbd1ad17a,0xbcb32e4a,0xbca7d3da,0x3cc7f97d,0x3cec3b5e,0xbc3c63c5,0xbce483e2,0xbcda72f6,0xbb6f59be,0x3c1c87a2, +0x3c0e3bec,0xbbfb0bbf,0xbb27326a,0x3ae62136,0x3b1a26a9,0x399e77bc,0x3ba20837,0x3c282a9c,0x3c08f70e,0x3c38368e,0x3ca3bcab,0x3bb9bf64,0x39b141c6,0x3bd8b470,0x39f0af27,0xbbb88371,0x3b3add62,0xbbb711c6,0xbc045f54,0xbc585b08,0x3c94a7b0,0xbd378094,0xbd3df9fd,0xbc50107e,0x3c77034c, +0x3d07a82c,0x3c02e418,0x3b42995c,0x3cb9cf3c,0xbb753d4b,0xbce77e14,0xbd383b59,0xbd1a0655,0xbcfe8d0e,0xbc6945cf,0xbc9f7213,0xbc58cf66,0xbae789e2,0xbaabd950,0xbb351d67,0xbb2c9591,0x3c09a34c,0x3c48ed5f,0x3cc1513a,0x3c526d65,0x3c2f62a3,0x3bb89d27,0x38c13f9c,0x3af6790a,0x3b153c9b, +0x38b51f6c,0x3ac7b154,0xbbe685cc,0x3bf5fb39,0x3bb68e0f,0x3b876266,0xbcf5422d,0x3d862ca0,0x3cc6729f,0xbc6da5b8,0xbd86d354,0xbdfdcc56,0xbdcd5dd9,0xbd9e75cf,0xbd33b571,0xbd0fe84d,0xbce18f67,0xbd2e25a3,0xbcecefb6,0xbca32d57,0xbbbdc491,0x3b56a1cd,0x396a45f5,0xbbe0a33a,0xbc1edd78, +0xbbdf110e,0xbb1ac4e2,0x3accdf9f,0x3c5e1ab5,0x3d28526d,0xbaa36a7a,0xbc26679c,0x3bc46450,0xbb986885,0x3b8c4fff,0x3b4d58fe,0xb9896757,0xb9c9ea24,0xbb1b1b8f,0xbb079f18,0x3c0c0d03,0x3d58d853,0x3d7297d4,0x3d061445,0x3d37b4c7,0x3da13f61,0x3db90233,0x3da65d88,0x3d57141f,0x3c8bed1a, +0xbc1debf0,0xbd247bf9,0xbd1e10f0,0xbd0cba9c,0x3bccc110,0x3c3a3367,0xbb18995f,0xbc618a36,0xbc8a6cf3,0xbc50da98,0xbc70a3df,0xbc895eda,0xbc5f0c85,0xbc65309a,0xbbb59e8f,0x3cd1215a,0x3b3631f7,0x3aa7eedc,0x3c0f9d73,0x39bd6c25,0x3a5e2891,0x38e83d19,0xbaa1e606,0x3b49e3fa,0x3c9fde42, +0x3cea3f77,0x3d1391d7,0x3d3a1d52,0x3d024a55,0x3c6f8a9c,0x3c2a4017,0x3c0244b4,0x3be72666,0x3b9cd729,0x3cf7df96,0x3d6703ae,0x3d9c8535,0x3d6526dc,0x3ccdc140,0xbcbe86c0,0xbcd4caba,0xbccfa0e2,0xbc639490,0xbc801d17,0xbca34571,0xbcf2024d,0xbcb9fe9e,0xbc747971,0xbc0db9b8,0xba3cff09, +0x3bf58f3c,0x3c96cd06,0x3c391450,0x3c0922a3,0x3bdaee7d,0x3c85f332,0x3ca68712,0x3cb088d4,0x3cbfb08c,0x3cc30a03,0x3ccd037c,0x3c9b1f46,0x3c8d8dd0,0x3cb5a017,0x3c80964f,0x3c2fb20b,0x3c27f028,0x3c2106bc,0x3c0a07c0,0x3c5d85ff,0x3c18bd1f,0x3c1d0cd7,0x3cd8a4d1,0x3cf13645,0x3d0cffe8, +0x3d1eacea,0x3d0bc094,0x3cff82ae,0x3d23e24a,0x3d0dc52e,0x3d1104df,0x3d104787,0x3cdf52c1,0x3ca5325a,0x3c787e8c,0x3c505a30,0x3c42c2d5,0x3c1afd70,0x3c877487,0x3c9ccf72,0x3c83bd17,0x3c2c4234,0x3c1982a5,0x3c0a5f6c,0x3bd5dce8,0x3c00dbc7,0x3c4a6a29,0x3c8c2fd8,0x3ca3d362,0x3cb3adc1, +0x3c925770,0x3bd3d754,0x3ae42009,0xb9044d5c,0xbab238a0,0xbacee79b,0x3b366ed2,0x3bd25046,0x3c003934,0x3bece697,0x3ba0128c,0x3adcbcf6,0xbb031434,0xbb951cb8,0xbc0554cf,0xbc1d3276,0xbc3aa6ba,0xbc4f9b03,0xbc3d5bf2,0xbc0300cf,0xbc15d67d,0xbbcaca88,0x3a6e01a9,0x3beb4190,0x3bde58ae, +0x3bfb590f,0x3c184734,0x3c3cea7b,0x3c3f4541,0x3c5d0a26,0x3c646087,0x3c666e10,0x3c6973f7,0x3c3f5363,0x3c19ec98,0x3c05d7cb,0x3be0b7f8,0x3c5aa6c9,0x3c5f40fd,0x3c5c186e,0x3c5f6fe2,0x3c428892,0x3c2fb247,0x3c11a5ee,0x3bf7ac14,0x3c0477cd,0x3c1c3455,0x3c39ee7a,0x3c449a0e,0x3c451e09, +0x3c3d79c6,0x3c4122ac,0x3c3d5eb1,0x3c32cd00,0x3c2637e8,0x3c159892,0x3c00fb35,0x3c096af9,0x3c1eb3ea,0x3c32d79e,0x3c3bd86d,0x3c54bbe0,0x3c677d44,0x3c55377b,0x3c4b54b8,0x3c4283f2,0x3c30baef,0x3c204abf,0x3c1850e7,0x3c2134fa,0x3c324c54,0x3c4b2eff,0x3c4abd2d,0x3c4c6a0d,0x3c6dc34a, +0x3c5e7c59,0x3c5327f0,0x3c541029,0x3c4dd3e4,0x3c4c2b07,0x3c492db7,0x3c460172,0x3c3a5702,0x3c2ea24e,0x3c2b2eb0,0x3c2e9563,0x3c3614ca,0x3c326ed1,0x3c32185c,0x3c35bd7a,0x3c362989,0x3c374f12,0x3c3deb76,0x3c31a0d0,0x3c2458d7,0x3c0f7859,0x3c4835f7,0x3c391368,0x3c36fc73,0x3c30eb45, +0x3c2de38c,0x3c272df1,0x3c25c486,0x3c253c94,0x3c1b8855,0x3c3231b4,0x3c4b9bea,0x3c1fb29e,0x3c3b5483,0x3c8df493,0xb994bf04,0x38add493,0x39e0a3d7,0xbafd37e2,0xbb1dacac,0xba295e13,0xbb334c3d,0xbb16ed6f,0x397c4a3d,0xb9fe0b80,0xba107078,0xba3b4047,0xbaa3f6ad,0xbacc4ded,0xbaf68337, +0xba9f563c,0xba80fa64,0xba8b2896,0xba12e9c2,0x386eaaf1,0x3a94f125,0x3adf2af9,0x3b0258f4,0x3af3699f,0x3aefde50,0x3abce77a,0x3a85a85b,0xb97aa5fd,0xba2f6fde,0xba7dc06b,0x386c802b,0x3a2e17fa,0x3aadc543,0x3aacbc13,0x3ab25526,0xbac10644,0xb8ad1591,0xbb2370d3,0xba9af900,0xbb9d85f8, +0xbba682fd,0xbad35bcb,0xbbe49684,0xbbbc66b1,0xb9bcd718,0xba0a695d,0xba4154b5,0xbb35635d,0xbb7005ea,0xbb8a98e8,0xbb8d6670,0xbaed80f9,0xba95014e,0xbadeb023,0xbaa7394b,0x39ba1fdb,0x3b823475,0x3bafce10,0x3bcd7e0a,0x3bc35750,0x3bb2964d,0x3b81d39c,0x3b2eeb3a,0xb8f2b782,0xbab3c804, +0xba9e20f9,0x39d29852,0x3b10ef5f,0x3b7c16d7,0x3b99754a,0x3b14c410,0xbbb7431c,0xbb3ce0f3,0xbba36150,0xba84571c,0xbc3be0e7,0xbc546a61,0xbb9d7e1f,0xbc958043,0xbc6cf822,0xbaed8cc8,0xbb128419,0xbae074af,0xbba821af,0xbbe0dcdb,0xbc174fe9,0xbc402e6b,0xbbd8f6be,0xbba2b4a7,0xbb802a70, +0xbb1cfa5b,0x3a9833e9,0x3c17593d,0x3c35b514,0x3c4c9e5f,0x3c43c586,0x3c33eb76,0x3c19999c,0x3bdd3f7a,0xb972c39f,0xbb4cab00,0xbb388567,0x38ee4939,0x3b9fedb6,0x3bf65ae1,0x3c0cde2b,0x3ba36a10,0xbbd941f2,0xbb678f3f,0xbc9a4e31,0xbc099119,0xbc5b0184,0xbc727116,0xbbb4c60d,0xbcb608aa, +0xbc9fcd81,0xbb967781,0xbb807eee,0xbb9984f7,0xbc3dc9ea,0xbc286cf2,0xbc5c8154,0xbc8d2503,0xbbeb4868,0xbb9f559d,0xbb9c5d00,0xbbaa1347,0x39893c25,0x3c796cc6,0x3c9d9ebb,0x3cc218eb,0x3cbbcac9,0x3c868ff9,0x3c4c5422,0x3c9026c1,0x3be68423,0x3b1968e9,0xba87b803,0x3b026313,0x3c0513ee, +0x3c610333,0x3c49f18b,0x3b9a6d47,0xbcbd71f7,0xbcb459f8,0x3c54494d,0xbd39eff1,0xbceafead,0xbd113a12,0xbd582438,0xbd179103,0xbcaedc2c,0xbc84ab44,0x3cacaa4c,0x3cc5dc47,0xbba1b633,0xbc6dca97,0xbcdb9d58,0xbced3f70,0xbc9f7f61,0xbc21c7cd,0xbab26b0c,0x3b7c91ac,0x3c10be21,0x3c4cbb49, +0x3c1cb738,0x3c144bec,0x3c2d229e,0x3c6d01d0,0x3c8241a2,0x3c7b1139,0x3b4be37d,0xbaa88168,0x3bc0e3b0,0xbc0cc28c,0xbbfe3c28,0x3c486792,0x3a44b8b7,0xbb00577c,0xbba40609,0x3cdfa6d9,0xbd097028,0xbd0e6d42,0xbb957064,0x3c2407ef,0x3c8a5a05,0xbb77a633,0xbca51f58,0xbccd11c8,0xbbdb8a1c, +0xbb43ab5a,0xbcb6c9b8,0xbd000578,0xbce63258,0xbbfde853,0x3b544d77,0x3be2e14a,0x3ad0812d,0xbb1235b7,0xbb416bd3,0xbb9ea9bc,0x3b4e8b66,0x3c4a9b59,0x3ce0e146,0x3bca33e8,0x394f0a49,0x3af1d617,0xba81ecef,0xba1df118,0xbb1bb701,0xbbcde73a,0xbbe6d8c6,0xbc24f7f0,0xbc276fc7,0xbb7cdea0, +0x3c5eca3a,0xbcaaa66f,0x3ce8a224,0xbcfe0261,0xbd9f25cb,0xbdc6d887,0xbdf34e0b,0xbd970b18,0xbd151aac,0xbd084e17,0xbb079467,0xbbc342e5,0xbd1fd55b,0xbcfbd548,0xbc8df430,0x3c894e54,0x3bf5eec2,0x3bcdfe29,0x3b224703,0x3bd33b24,0x3bfedf94,0x3b9f2f60,0x3c1fd8e1,0x3c6d4ae3,0x3cf52dfd, +0x3a41055d,0xbbf92866,0x3babd773,0xbb6c47a4,0x3b9075c4,0x3a4992fe,0x3aa12a9f,0x3ada3e63,0x3b60f31c,0xbb7a86fb,0xbb8dbf8f,0x3c9de571,0x3ce1268e,0x3d4cbec2,0x3d8ec1bf,0x3de5b534,0x3de5f94b,0x3d8f7b83,0x3d087c56,0xbb8f084d,0xbd312fd8,0xbc8cb92a,0xbc8149af,0xbd0e2e63,0xbcf9ed63, +0xbcba1de5,0x3bba9598,0xb9c4d18a,0xba5f6e11,0xbc543bf2,0xbc550e12,0xbc5df409,0xbc3b1bc2,0xbc09094c,0x3a1544da,0x3c9b8133,0x3ba04f88,0x3ba0dba1,0x3c2f6e5f,0xbb0653d4,0xba97f804,0xb8087e7e,0x3b90ef1f,0x3c07ca3c,0x3c8263d5,0x3cc9cff5,0x3d154cea,0x3d4be0f6,0x3d2f2e80,0x3c16a22a, +0x3b766af2,0xbaf9bf3a,0x3bd2d947,0x3cf0b340,0x3d5dc2b9,0x3d898f9a,0x3d786d2e,0x3d2d3ba6,0x3c2a81a4,0xbcc63987,0xbd3ce009,0xbd595127,0xbd076fdc,0xbcd97f82,0xbc79f314,0xbc9e6d63,0xbbe19d47,0xbaf209b4,0xbb3c8181,0x3ae9d2b3,0x3c1b5d11,0x3c9fc6f7,0x3c12df02,0x3b9b7bb0,0x3b482c95, +0x3c9735ca,0x3cbce8a1,0x3c87c1d7,0x3ca89020,0x3cc40dd5,0x3cfd618c,0x3cb359e0,0x3c922f62,0x3cb4bc22,0x3c5ac6e2,0x3cccccc1,0x3cc1a02d,0x3cd570c7,0x3cada589,0x3c0f46ea,0x3b93cc96,0x3c57bfa7,0x3d03774a,0x3d181136,0x3d39021c,0x3d4cec26,0x3d161aa9,0x3cd51600,0x3c905763,0x3c96aa9f, +0x3c877675,0x3c818bdb,0x3c87c80c,0x3c83403b,0x3c6c055e,0x3c4f0f26,0x3c231a8a,0x3c31a77e,0x3c592658,0x3c90b560,0x3c9ac8fe,0x3c6c9b05,0x3c04679f,0xba1a4b64,0x3b123021,0x3b8ea654,0x3c33d61f,0x3c549d0a,0x3c96c939,0x3ccabc96,0x3cddef2e,0x3b97769d,0x3926532f,0xbadc7fa1,0xbb844d46, +0xbb72fc7a,0x3aad752f,0x3b68eb2c,0x3ba3ea1c,0x3b99b43b,0x3b8ec4ba,0x3ba777d9,0x3b760dd6,0x3b8c8cff,0x3b5afb3b,0x3bb23df5,0x3bc23ab3,0x3be81cc7,0x3c0498c8,0x3c373c25,0x3c3552d7,0x3c15cf52,0x3c733c63,0x3c902825,0x3c51fa74,0x3c06429f,0x3b91bbda,0x3c000825,0x3c333ef3,0x3c7886d7, +0x3c8511a5,0x3c8dd86e,0x3c9147ce,0x3c88ac25,0x3c79f57e,0x3c70bf22,0x3c23f56b,0x3c4c7c35,0x3c589735,0x3c69e875,0x3c7ac4a9,0x3c778935,0x3c6d75be,0x3c69ca86,0x3c710ad9,0x3c66e61f,0x3c5d5cc5,0x3c502cd7,0x3c497d68,0x3c38ff1e,0x3c2832cc,0x3c1ab950,0x3c140c68,0x3c0eb6d7,0x3c095d2f, +0x3c07d827,0x3c02a103,0x3bd4c5f5,0x3bd9dfc3,0x3be11984,0x3c07af41,0x3c232809,0x3c2f3e8f,0x3c278bd7,0x3c17bebc,0x3c149c86,0x3c0375f4,0x3c083d1b,0x3c03c22f,0x3c17c6cd,0x3c226d9a,0x3c2d9d44,0x3c3500cc,0x3c747c9d,0x3c4f3529,0x3c51f8c2,0x3c52977c,0x3c586688,0x3c5de95e,0x3c62bded, +0x3c688b6e,0x3c59fdb7,0x3c5047ff,0x3c46a142,0x3c3cee04,0x3c37516b,0x3c33c823,0x3c38e0a8,0x3c3a5f80,0x3c3bbedf,0x3c3c9722,0x3c3a9afb,0x3c3e7603,0x3c554ecf,0x3c60ca48,0x3c676b99,0x3c59bcd2,0x3c6b433c,0x3c83836b,0x3c80cf2c,0x3c7ff291,0x3c7a3ca0,0x3c7aaf4c,0x3c7502de,0x3c6e29b3, +0x3c7107f5,0x3c5fb52f,0x3c759279,0x3c78c5ce,0x3c8122cb,0xba497472,0xba7b5e1f,0xba8aa90d,0xbb3cc5fc,0xbb4bc392,0xbafe3a39,0xbb0b2b44,0xbae4fcca,0xbaa69ee6,0xba41e25a,0xba074a03,0xba5c9715,0xb9e0a1bd,0xba3827e0,0xbadd571c,0xba9895bc,0xbaa18587,0xbad1d728,0xbaa0f534,0xba39b679, +0xb916a606,0x393b73a6,0x3a3d49bc,0x3ae1dc6e,0x3a8a51fe,0x3a2fcb88,0x389f558c,0xba65d612,0xba996917,0xbab9f6bd,0xb9c78b49,0x398a76b5,0x3a253d90,0x3a713b63,0x3a4ad7bc,0xbad06214,0xba395799,0xbacae70a,0xba83c3d4,0xbba4ee64,0xbbbe7371,0xbb400d32,0xbb80825e,0xbb80184e,0xbb58b130, +0xbb1970eb,0xbb1f5d22,0xbb5fa460,0xbad447d0,0xbae06d77,0xbb83ec11,0xbb23aff2,0xbb1818e9,0xbb2ec16d,0xbadec605,0xba0f9194,0x3afd2b6d,0x3b7cb75b,0x3b87e310,0x3ba17934,0x3ba40571,0x3b6a3b6d,0x3a9bd36e,0xba8b8fa0,0xbb176cef,0xbb0d0f8a,0x39237acd,0x3b116098,0x3b4add72,0x3bb05b87, +0x3b793b0e,0xbb72bfd6,0x38c21160,0xbae19ce3,0xba101ab2,0xbc3087a0,0xbc5f832f,0xbc11f799,0xbbfc5d19,0xbbc77957,0xbbc49736,0xba8142d8,0xba0aa7c9,0xbb610abf,0x39ccbe30,0xbad663ec,0xbbc7f751,0xbb839b2e,0xbb7f504b,0xbba93710,0xbb423366,0xba768b04,0x3bb48b68,0x3c004ddb,0x3c1e6bef, +0x3c30ba0f,0x3c3ec091,0x3c1dc21b,0x3b9a2c76,0xbaf309e9,0xbb9cae81,0xbb84cb77,0x3a702afe,0x3bc21e2e,0x3bd9fa11,0x3c2bfbb7,0x3c0265f4,0xbbb3b1c5,0x3a4306ab,0x3a946621,0x3c1fe7be,0xbbaf8d09,0xbc4b8241,0xbbc10376,0xbbb47228,0xbc033d34,0xbc1c39ee,0xbbb9acd4,0xbbe2b566,0xbc47a991, +0xbb995112,0xbb87a02f,0xbc226ec2,0xbbb52cf7,0xbbbaeeaa,0xbbc510b6,0xbb2b8d92,0x3ac9c1c9,0x3c458b63,0x3c8de169,0x3c9fd159,0x3ca736f0,0x3c85a24b,0x3c683621,0x3c80307c,0x3bab897a,0xba2fe75d,0xbb12852f,0x3ae6bca5,0x3c1c2ec2,0x3c6d3c20,0x3c831564,0x3c367a2d,0xbc38614b,0x3a8a98c3, +0xb9e2ad0b,0xbd2063c0,0xbd25c036,0xbd3511e3,0xbd301c2e,0xbd25e9a5,0xbce49a6a,0xbbda2b22,0x3bc2c385,0x3c7147d7,0x3c34077e,0x3b489615,0xbb9adfee,0xbccd0ea6,0xbc7d15e1,0xbc17d166,0xbb5bc248,0xbbc22300,0xbb8212aa,0x3b93bc6e,0x3c4bc11a,0x3c452a4d,0x3c3196d4,0x3ca275bc,0x3c9c53f9, +0x3c330752,0x3b0ea3f0,0xbb317fff,0x39f086cf,0xbc0828b4,0xbb8e6ce2,0x3c3e507f,0x3c1475b5,0x3bebb453,0xba1595c1,0x3c78ee4f,0xbce0e590,0xbd075703,0x3b8ffdd6,0x3c48ed42,0x3c0e46dc,0x3a7bb416,0xbb4f8b99,0xbc562fa4,0x3bfc04ad,0x3b8359b9,0xbcabefe7,0xbcbd8d64,0xbccc4d1b,0xbcc8bd7e, +0x3b2f9e1e,0x3c530252,0x3bcd6397,0x3bcc350c,0x3bdcd681,0x3b900820,0x3bbf5ccb,0x3c3f8f1e,0x3cc7fbd9,0x3b0ea2be,0xbb84374d,0xba42ce14,0xba7122f3,0x398552d5,0xbbd86f7f,0xbbedc536,0xbc26ae4c,0xbc99f576,0xbc992fb6,0xbbc2267d,0x3c863665,0xbc5dcc60,0xbc99916d,0xbd891948,0xbdd31597, +0xbddc9465,0xbd95fbae,0xbd50833a,0xbcc49b72,0xbcae38d5,0xbb1e2fde,0xbc0ad393,0xbcc16a82,0xbc879d15,0xbc4248c5,0xbb064adc,0x3b44bb43,0x3bd97732,0x3ae87ac4,0x3bc8a23b,0x3bbca316,0x3b917409,0x3c6fc2bf,0x3c7d5a48,0x3ca08ee2,0x3a670dc9,0xbba6b8ef,0x37c31e32,0xbbc45af5,0xba80d201, +0xbb87e355,0x3a37975c,0x3ad92c3e,0x3b947381,0xbbdd7893,0xbc723ce0,0xbc3e7b2e,0xbbf6e36d,0x3d9a59a7,0x3dc4a8d8,0x3dd1fda7,0x3da52a1a,0x3d2616c2,0xbc95633a,0xbd2ba114,0xbd19a405,0xbbb96c04,0xbbfc04b5,0xbd189d64,0xbd5cb38b,0xbd474b8f,0xbc7500ca,0x3b59d4f4,0x3c5158f3,0xbad1be95, +0x3b25a33c,0x3a9a88a1,0xbb8a81a0,0x3bb29bef,0x3c4211d6,0x3c6de584,0x3bddd65c,0x3ba2e004,0x3bd33955,0x38389b20,0x39de8479,0xb91926e9,0x3bb6255b,0x3c1670aa,0x3c124dd5,0x3cd0a958,0x3d2ca15d,0x3d621a4c,0x3d810638,0x3c4af262,0x3c0c46da,0x3bfc1e2f,0x3cbdbc3d,0x3d5979fd,0x3d7e5ecf, +0x3d7939ed,0x3d2cd220,0x3c731f84,0xbc2c29b5,0xbcc3a934,0xbd56ebb5,0xbd777f02,0xbd3f8709,0xbd2f3188,0xbcf81f88,0xbc84ecbc,0xbc1e25f4,0xbbcfe967,0xbb3230b8,0x3b749e77,0x3beda0e2,0x3c89c94c,0x3b9bdcf5,0x3b16497a,0x3ba2b639,0x3c635c7f,0x3c8d5948,0x3c54c7dc,0x3c8ed510,0x3caa0a26, +0x3cc70a00,0x3caafeae,0x3ca42faa,0x3ccc0b50,0x3c9bb7e8,0x3ccce4a6,0x3ca8bb00,0x3c9bf328,0x3c6cfe60,0x3bd7d27b,0x3c0f2ed5,0x3c7c9055,0x3ce8403e,0x3d2eac47,0x3d3d6221,0x3d2d09de,0x3d17b032,0x3cd47a54,0x3ba8883b,0x3c071cd0,0x3b016ecd,0xbc1722f2,0xbb834e81,0xb99792a1,0x3ba2400a, +0x3c0a85a9,0x3beb0cda,0x3c6b79bc,0x3c631198,0x3c7c0762,0x3c557b1c,0x3c2612f2,0x3bb5036e,0x3b66913a,0x3b8aa7d8,0x3bcea161,0x3c50058f,0x3c4559dc,0x3c7ce739,0x3cac9fb9,0x3cc36bdc,0x3c27a993,0x3c1cb779,0x3bf77481,0x3b903166,0x3aec83d2,0x3b63171d,0x3b326bba,0x39861cc4,0x3b84f48e, +0x3c1b39a0,0x3c8500e1,0x3c6626c6,0x3c63273e,0x3c581805,0x3c8c2d06,0x3ca63ea5,0x3cc618ad,0x3cb79f3f,0x3c97e6d3,0x3c77a7c5,0x3c89d383,0x3c9517b0,0x3c9927f9,0x3c748048,0x3c2f91ac,0x3c15a70d,0x3c2cfd96,0x3c69973e,0x3c6c778b,0x3c8e7ff4,0x3c94a4f8,0x3c9e5a7f,0x3c9a422c,0x3c99afa0, +0x3c9a4f78,0x3c6ca186,0x3c2e2caf,0x3c1557f6,0x3c22fd45,0x3c2ed2b3,0x3c3693f3,0x3c374081,0x3c46139f,0x3c59ae24,0x3c5219ca,0x3c3251af,0x3c1ace12,0x3bf801d3,0x3bce2b1f,0x3b8f3473,0x3bacbe20,0x3bc57ecf,0x3bfbeb96,0x3c0b9136,0x3c410e45,0x3c6236d5,0x3c0cf89d,0x3c0ae9e6,0x3bef48ed, +0x3c062d3d,0x3bfb3766,0x3bdd3730,0x3bd64599,0x3bc83daa,0x3bbba341,0x3bc72368,0x3bbf3b4c,0x3be9d1c1,0x3bf1c11d,0x3c07002e,0x3c097251,0x3c090d7d,0x3c0ee3d6,0x3bc6ca25,0x3be1c35a,0x3beaf7ec,0x3bf9d345,0x3c0297ab,0x3c04a805,0x3c08d4a6,0x3bf43d1c,0x3be89285,0x3bd84343,0x3bdaaed7, +0x3bd5b7ab,0x3bc04608,0x3bec5ad4,0x3c024f7c,0x3c0c1579,0x3c1eaf22,0x3c26286c,0x3c40be37,0x3c2883e6,0x3c33345e,0x3c464492,0x3c0c6dcd,0x3c16960a,0x3c382a08,0x3c3caf55,0x3c3fb964,0x3c47e5b1,0x3c48401a,0x3c4caec8,0x3c4ddd07,0x3c25204e,0x3c00e1a3,0x3c4bc0af,0x3c222952,0x3c00683a, +0x3a86ae4f,0x3999b03f,0x3ad71f96,0x3942e2b7,0x38369717,0x39415e2a,0xb9af32c7,0xb9692886,0x39d0564f,0x37c7fbb0,0x39cc35cd,0x3a96f5cd,0x3af27971,0x3ad7fe5d,0x381d7ebd,0x3a1facd7,0x3a063c1c,0x382403f7,0x3a0c1646,0x3a44a165,0x3a4ecf8a,0x3a348c04,0x3a65825b,0x3a7793c9,0x3b191f50, +0x3aadd065,0xba0f13c2,0xbab3c0ff,0xbad38c91,0xbadda55f,0xb9c44946,0x398e2883,0x392b0a7b,0x3ad1b366,0x3af078cc,0xbb04f7d2,0xb8eaa410,0x3aab87d1,0x3b5bfbc8,0xb970c9ed,0xbada7c7b,0x39054c87,0xbad601e7,0xbb00296c,0xb9fdead0,0xbb06cbe0,0xba85fcbc,0x3a7fad16,0x3b5ecf22,0x3b5c095a, +0xbaa27c07,0xb83e703c,0xba40f82b,0xbaf3c6f5,0xba04aeb1,0x39273bfb,0x3a23c61f,0x3b10e75d,0x3b79cb2e,0x3bb0b633,0x3bd123fb,0x3ba09258,0x3aa9296c,0xb9d97446,0xbac6be15,0xbaf29267,0x3b037a77,0x3b856e09,0x3b591ec6,0x3bcd01b9,0x3ba3e6cf,0xbaea0b06,0x3b391e96,0x3b46873f,0x3b61b2b5, +0xbaa603ec,0xbaedf87d,0x39f8c140,0xbbc9fb36,0xbbc99ad1,0xbb1761e3,0xbbafe1df,0xbb141353,0x3b29b4c4,0x3bf2221d,0x3bdbe7e0,0xbb583435,0xb983ef92,0xba78f853,0xbb75f6b2,0xba7da473,0xb8aeee9f,0x3ad9cf7e,0x3b9da6b4,0x3bdfde26,0x3c21f91b,0x3c4fc159,0x3c2e3b3f,0x3b1583cc,0xbb17c9f7, +0xbb977257,0xbba3bd71,0x3b3d25e4,0x3be89e01,0x3bb0da58,0x3c3253d8,0x3c118f34,0xbbb3a6aa,0x3b7e80e6,0x3c7a8fad,0x3c4694b3,0x3a702e51,0x38352741,0x3bccdc96,0xbbac2fa0,0xbbe49604,0xbb69db89,0xbc1550ea,0xbbbbcae1,0x3a20e155,0x3c1c4e3d,0x3c2e7fd8,0xbb916a41,0xbab62c21,0xbb560be9, +0xbbf518a2,0xbb225fe9,0xb973ce44,0x3b671c88,0x3c3ae8d7,0x3c69a8f5,0x3c8a55d9,0x3ca5aba1,0x3c93ead1,0x3c406128,0x3b240cb0,0xbb81bbd7,0xbb92e481,0x3b551133,0x3c53faff,0x3c61145c,0x3c9a980c,0x3c794aef,0xbbada0af,0x3c2d2247,0xbcd2bced,0xbd16c694,0xbccd1343,0xbcd34c46,0xbca7dff4, +0xbcc41ce7,0xbca74f84,0xbbb98cf6,0xbb9a077f,0x3bc986dc,0x3cbfd1d2,0x3c57f77d,0x3bb4fa5d,0xbb747f66,0x3b2190f8,0x3b77b00c,0x3a700ae5,0xbade1b16,0x3981e8f8,0x3b88bc69,0x3c0a39d0,0x3c2bed60,0x3bdf541a,0x3ca15237,0x3c9cd54b,0x3c10c2b5,0x3a87a62a,0xbb938f56,0xbb2bfc2f,0xbc19543f, +0xbbdf74e8,0x3b104185,0x3c26a9e0,0x3c31963e,0x3a40df20,0xbc12c79b,0xbc3e0388,0xbc299cdf,0x3b1ee502,0xbaadd935,0x3af455fb,0x3b5fe14f,0x3b7c02f0,0xbb8e3249,0x3bf62ba8,0x3bdf294a,0x3c021c0d,0xbc742f10,0xbca8cbe1,0xbcc58b9d,0xbc9fa29f,0xbc58e42f,0xbc0bb5c7,0xbb3f6db8,0x3a176eec, +0x3ba3ba63,0x3c3f33e9,0x3c64f96f,0x3c9a5af1,0x3a42ce8e,0xbb85de39,0x39e9dda0,0x3acd5ac8,0x3af47243,0xbc02be68,0xbbe44a31,0xbc106458,0xbc4fc542,0xbc332b9f,0xbbf03680,0x386799a1,0xbb8db54c,0xbd319fe6,0xbd97fdb8,0xbdbd6375,0xbda87510,0xbcf0ec2e,0xbd047ac7,0xbcf18aad,0xbcbc57a5, +0xbc2ca884,0xbbaba66c,0xba6b855b,0xbca92dc8,0xbcdc7468,0xbcc7bbab,0xbc142d11,0x3a25af99,0xba4ea9f9,0xbb52c6ee,0xbb23a7f8,0x3ad50573,0x3c2ca33b,0x3c1589fb,0x3b61c88c,0xbb388577,0xbb321124,0xbb19efeb,0xbbabf321,0xbb111069,0xbb665525,0x3aa1b9bc,0xba97f85f,0xbaf38834,0xbc16c8c7, +0xbc6f132e,0xbc9d2326,0xbcd5d486,0x3db275a3,0x3db67a9f,0x3d880e1f,0x3d0891fe,0x3c3a51eb,0xbd4fc29c,0xbd742fa3,0xbcb3aa0a,0xbcc15e2d,0xbcb23670,0xbc9a7cd8,0xbcf68d28,0xbd02fd00,0xbcdd6ebd,0xbc887ae6,0xbbfae53a,0xb9fad7c8,0x3bd14e38,0x3becb6fd,0xbaf08d3c,0x3c57d145,0x3c6dd868, +0x3be35ad3,0x3b7e8177,0x3a3bcdb8,0xba4a2bb2,0x3aa5d992,0x3b0b03f0,0xbab8cff3,0x3b373030,0x3be30f30,0x3b91cd53,0x3cc31aca,0x3d22b057,0x3d6ebd91,0x3d9070c9,0x3cbd3f9e,0x3cde9d86,0x3d2d51c8,0x3d62044c,0x3d9717ff,0x3d725aaa,0x3d182ae3,0x3bf86359,0xbca8c831,0xbd1bf205,0xbd497440, +0xbd191348,0xbd052a54,0xbd2000c5,0xbce09fbf,0xbcd4936a,0xbcafae03,0xbcd0a273,0xbcc4a735,0xbc5afde4,0x3ae2713c,0x3b7e29c8,0x3beeb348,0x39e98255,0x3aebfff5,0x3c33315b,0x3c0c6ecb,0x3c1981db,0x3c25acb6,0x3c80a0b0,0x3c9ec985,0x3caac5b8,0x3cafe046,0x3cbce0fd,0x3cd5286d,0x3cd96152, +0x3c9a1797,0x3c8224cf,0x3c378336,0x3c076bc1,0x3c17a204,0x3c7c102a,0x3cd2730c,0x3d137254,0x3d324437,0x3d2d3c88,0x3d0327ac,0x3cc83dfa,0x3c5637a3,0xbaf20d02,0xbc0997f7,0xbc44d7f8,0xbc85ecb3,0xbc3a57cc,0xbbd965a9,0xbaa05d29,0x3b7d47d5,0x3c180ff6,0x3c9d13bb,0x3c8fe6db,0x3c720f80, +0x3c11f090,0x3bd2284d,0x3bdd4f8c,0x3c336fc6,0x3c33d0db,0x3c36b6f1,0x3c2eb33f,0x3c3ee685,0x3c5a0943,0x3c6c3781,0x3c970b6a,0x3c8da6d9,0x3c95ac56,0x3c787e15,0x3c43fff6,0x3c04d254,0x3c17ae1a,0x3c001a19,0x3bb410d8,0x3c202651,0x3c81a16f,0x3cc34459,0x3cc5eade,0x3ccc1a5a,0x3ccd28ed, +0x3cc60d3f,0x3cbf5789,0x3cb2db5f,0x3ca6c64a,0x3c931190,0x3c72d0f3,0x3c760a96,0x3c7da405,0x3c7d2e73,0x3c761360,0x3c6ea507,0x3c7a9329,0x3c866e5b,0x3c9af3ef,0x3c982633,0x3c95df71,0x3c926d1f,0x3c9020d6,0x3c9653db,0x3ca1369a,0x3cac0049,0x3c9a7353,0x3bba094a,0x3b9b8a14,0x3bba90ea, +0x3bdbfd9d,0x3bf76338,0x3c0a6834,0x3c25709c,0x3c40bfae,0x3c5bdb82,0x3c59aa0b,0x3c570359,0x3c4c7091,0x3c4e4af6,0x3c4c082f,0x3c6bf8cb,0x3c84e55a,0x3c98ae54,0x3ca726f9,0x3cbdfed3,0x3cd0ee99,0x3c9259d0,0x3c9223d6,0x3c7f56d1,0x3c6543c9,0x3c2f1323,0x3c0c286f,0x3bf9b8ca,0x3bdbba45, +0x3bbd9be7,0x3bb9fb6d,0x3b9bce03,0x3b956ee3,0x3b987540,0x3b9f4172,0x3ba13d43,0x3b9e8ea7,0x3baac077,0x3b848e25,0x3b9d200c,0x3ba7b719,0x3bb6e8c8,0x3bb97daf,0x3bb60bed,0x3baf24cf,0x3ba904db,0x3bb0465d,0x3bba3b24,0x3bd4fef8,0x3be5d76a,0x3be8621d,0x3c060127,0x3c12f95f,0x3c1e3a83, +0x3c2d561a,0x3c3426a2,0x3c584b41,0x3c3466d0,0x3c271ec5,0x3c0bd6b6,0x3c063267,0x3bf8003c,0x3bcec3ba,0x3bd9bbd6,0x3bded050,0x3be74bba,0x3be66968,0x3beda2f1,0x3becef11,0x3bc3bc01,0x3ba11598,0x3be2302b,0x3bbaf9e8,0x3b94ebea,0x3b3a93c5,0x3b2f1276,0x3b2f2e5a,0x3b2831a7,0x3b1b593d, +0x3b1a1598,0x3a9c5e95,0x3a8e4cad,0x3b1025be,0x3a71b2a8,0x3aa6ce9c,0x3b0cf66b,0x3b76faab,0x3b7b3b7f,0x3b0ad540,0x3b12be8f,0x3af8eacd,0x3ab4177c,0x3b0996d4,0x3b145737,0x3b0683bb,0x3b1da7cc,0x3b2e5045,0x3b301a9a,0x3b808538,0x3b3a286a,0x3a263344,0x39b94625,0x3918d03d,0xb8cc34c9, +0x3acc084b,0x3b0dcb3b,0x3acbd5b0,0x3b54df05,0x3b6390b2,0xb956a3ce,0x3b0cdac3,0x3ba3ba2c,0x3b7aa930,0x3b4e1639,0x3b54cbad,0x3b9694d6,0x3b5b23fb,0x3b47e795,0x3ba31638,0x392d7008,0x39103a49,0x3ae3fadd,0x3bc07531,0x3bcecaa5,0x3ab986c4,0x3b056bea,0x3a8fc58c,0xb983697e,0x3a6b58c3, +0x3a9bb9ca,0x3a2cb4ba,0x3b0cac7b,0x3b942afd,0x3be26442,0x3bf0586e,0x3bc1b483,0x3ad19f7d,0x3a6aff00,0x396d93e9,0xb9cdb9e1,0x3b811f38,0x3bb3fc5c,0x3b7caca1,0x3bd7278f,0x3ba479e7,0xba80cbcb,0x3b8c7eea,0x3b8d366d,0x3a995df2,0x3af3aa8c,0x3b1daafa,0x3ac2efd4,0xbb0a3ce3,0xbb20f72c, +0x3ac52f9e,0xbbf517db,0xbb9c71c5,0xba701aa0,0x3c1f2c09,0x3c2672e0,0xbac1b742,0x39bbaa28,0xbacd7724,0xbb782aad,0xba11da92,0x3a2280a1,0xb9030bab,0x3b7c03b8,0x3bdf402c,0x3c3ee6df,0x3c4da97f,0x3c245a3a,0x38d069cc,0xbac279c2,0xbb3cf4d1,0xbba127e5,0x3b91fa28,0x3c02d38e,0x3b80f85f, +0x3c2b1e1b,0x3c18779d,0xbbb9c15d,0x3b6b5295,0x3c32b29d,0x3b3af7d6,0x3a6ff301,0x3b607cb8,0x3c0f742b,0x3c167e18,0x3c166de2,0x3c368d34,0xbb9c7c49,0xbbe7debf,0xbb9f8407,0x3c38eb11,0x3c66d670,0xbba442fc,0xb9a84bb3,0xbb1a8335,0xbbe92ecb,0xbb7d6263,0xbb4e9af1,0xbb627107,0x3b7f31d1, +0x3c313a7d,0x3c82d973,0x3cae5a97,0x3c95d855,0x3bd7a548,0x3a38687f,0xbba9cda4,0xbbd3138e,0x3bb1002a,0x3c730212,0x3c243304,0x3c9016b4,0x3c29d75d,0xbc3f5837,0x3ba3fbae,0xbd199f27,0xbcf00feb,0xbbba9ae5,0xbb7ecfec,0xbc9e9b4d,0xbd084787,0xbd15b859,0xbcca5ab4,0xbccd869b,0xbbaeefc2, +0x3cde53cf,0x3c70ee73,0x3becc5d8,0xba37c040,0xbc08ed67,0xbc0f1ef3,0xbb7e40fc,0xba25c6b5,0x3bb57f9d,0x3c5b7562,0x3c1fc186,0x3c4035d0,0x3c3c3165,0x3c95d695,0x3c857b60,0x3be1dfef,0x3a6ebc1a,0xbb8b6d1f,0xbb86e941,0xbc349db9,0xbc003e77,0x39c4bc45,0x3bf44bab,0x3c2dee85,0x3c1aeac9, +0xbc9b8e31,0x3c193f7f,0x3aa3acdf,0xbc7c263d,0xbc90e8e8,0x3b3de7e2,0x3c7fcf96,0x3c9f0aeb,0x3c4a14f8,0x3c30508c,0x3b8f30f7,0x3bc34a96,0xbc4a5f77,0xbc844a53,0xbc396908,0xbc5b4582,0xbc4d0a7b,0xbc5ae9d5,0xbc249af2,0xbbae8f0d,0x3ab54cd8,0x3c27b52f,0x3c3dfd62,0x3bdb265d,0xba84353e, +0xbb3606f6,0xba45663e,0x3b2a7101,0x3adb2439,0xbc06a041,0xbbeb797e,0xbc0212c0,0xbbc8b373,0xbc5f6ceb,0xbc9421bf,0xbc4998f4,0x3b83baeb,0xbd69c9ad,0xbd93d0a1,0xbd312ba8,0xbcb2f21b,0xbbd3c7d9,0xbc8b95c3,0xbd023247,0xbd10e850,0xbccf81ef,0xbc43379f,0x3b5a2170,0xbc59b03d,0xbcb7a846, +0xbcd9b890,0xbcc72b28,0xbc994c51,0xbc42e7fa,0xbc2a374f,0xbba7f832,0x3a3f7e51,0x3c468525,0x3bfddc84,0xbc14ff43,0xbb6f6567,0x3a820f3a,0xbac0b9b8,0xba15d7d0,0x3a2bd735,0xbaefe850,0x3b45ea4c,0xba9ec596,0xbba80052,0xbb786e50,0xbc25380f,0xbcada7f4,0xbd1ebbeb,0x3d97f8fc,0x3d4e899d, +0x3cc811a7,0xbc0f84d0,0xbd1f659f,0xbd48ea07,0xbd2561c7,0xbca211ac,0xbcdb8d3d,0xbcfa879e,0xbccfa5d3,0xbc89d187,0xbc828870,0xbcdc05a7,0xbc902f58,0xbc58804e,0xbb86ba9e,0xbb5875ca,0xba81a7a5,0xbbc9e941,0x3c6107d2,0x3c547123,0xbb9fba2a,0xba0e3657,0xbacf0acd,0xbb81566a,0xb9ef77e9, +0x3aa036b9,0xbb104ef7,0x3a28ff72,0x3b97df9e,0x3ab94c11,0x3c80c61e,0x3ced959a,0x3d5593aa,0x3d80fef9,0x3d1f8d52,0x3d4c8555,0x3d8dec50,0x3d9540d2,0x3d8e0fb3,0x3d38faa4,0x3c233023,0xbd04442d,0xbd20c34d,0xbd1df649,0xbd1b360d,0xbc57ba95,0xbc3c3564,0xbcffd798,0xbcb42439,0xbccd8527, +0xbd0242f7,0xbcf1d0f6,0xbcbd7f3d,0xbc8e2f88,0xbb77ef7a,0x3a9157c4,0x3aa635ed,0x3b19b5a4,0x3ba35d19,0x3c5c1151,0x3bac6320,0x3b3eb09e,0x3ba2ed01,0x3c578914,0x3c9ad3c6,0x3cb54304,0x3cc627a8,0x3cdaa886,0x3ce1cdff,0x3d10a054,0x3c720164,0x3c7b04e4,0x3c7bb87a,0x3c93adca,0x3cbabee7, +0x3d0a1094,0x3d2c095e,0x3d2d6d6b,0x3d16cc99,0x3ccf96b0,0x3c1899a8,0xb4cf3794,0xbc148174,0xbc914aec,0xbcd2e003,0xbcb9269e,0xbc13d27a,0xbc00cef4,0xbbc1afa4,0xbb38338a,0x3ba64f41,0x3c319575,0x3c6b96d6,0x3c62fef7,0x3c40cd58,0x3c216ab2,0x3c2b0f9e,0x3c5181da,0x3c709f26,0x3c8e79ab, +0x3c861558,0x3c52b7b8,0x3c587045,0x3c59ea9e,0x3c44b7d7,0x3c7cb01f,0x3c9b0fbc,0x3c9aa569,0x3c8ff7f1,0x3c888211,0x3c60923d,0x3c77a23c,0x3c81862d,0x3c962404,0x3cad990c,0x3cd8c66a,0x3d07c5c5,0x3d082e69,0x3d07dbcd,0x3d09eacb,0x3cfcc1b2,0x3cdedd70,0x3cbfe233,0x3caecd57,0x3cb15a3a, +0x3ca6ec7b,0x3c856c7e,0x3c7a9939,0x3c677556,0x3c678bfb,0x3c7b5cb9,0x3c6901c7,0x3c86f8e9,0x3c80f891,0x3c8edd91,0x3c66f308,0x3c5efa86,0x3c3b4334,0x3c6e9f51,0x3c9064c8,0x3ca8f0f2,0x3c9d38a1,0x3bb44775,0x3c064d3d,0x3c042b2b,0x3bfd52a3,0x3c02588d,0x3c09af32,0x3c127513,0x3c12a35f, +0x3c34ce28,0x3c419ff2,0x3c4ffea0,0x3c61c738,0x3c7cf8b1,0x3c8bb530,0x3c95ec6a,0x3ca2a2d6,0x3ca9b510,0x3cb92939,0x3cbb80d9,0x3cc9264d,0x3ccdb9a6,0x3cb537e6,0x3ca251c2,0x3c8ba4b3,0x3c70023f,0x3c45e21e,0x3c3266e2,0x3c1e08fd,0x3c169665,0x3c0a52b8,0x3c0ad06c,0x3be3f548,0x3bf3d345, +0x3bd1cbd1,0x3bd6b7cf,0x3bf73768,0x3b9ba2e8,0x3be8a2c0,0x3bdc47ca,0x3be75821,0x3beb99ae,0x3be24da6,0x3bd95686,0x3bc7695c,0x3bde0f2b,0x3bf5851a,0x3c07619a,0x3c18be57,0x3c271ded,0x3c37ea72,0x3c30e697,0x3c2e5660,0x3c2e5edb,0x3c27d7c7,0x3c240484,0x3c211554,0x3c1e4037,0x3c0eca1c, +0x3c05ab0c,0x3c01e542,0x3be48162,0x3bb2f2f1,0x3bb1936e,0x3bab7858,0x3b98a2fd,0x3b91d71d,0x3b820326,0x3b7af8f0,0x3b9780bf,0x3bbf69ca,0x3b51d115,0x3b834e1c,0x3bd4e669,0x3b33e073,0x3b21be32,0x3a8d3301,0x3b04a75e,0x3b1a6753,0x3b55c0e5,0x3b1cac4c,0x3b02406f,0x3b271169,0x3a871e69, +0x3a571eb0,0x3966b0cb,0x3b3f8ff5,0x3b66f0a9,0x3b4861ff,0x3b1bf065,0x3b03ba32,0x3adf7d46,0x3b0c2072,0x3b143453,0x3b0cd7ea,0x3b3b6ce1,0x3b643cf9,0x3b96d615,0x3b71fd58,0x3b4a16a8,0x3af39879,0x3b00678b,0x3af3c053,0x3ad0b1c1,0x3b45de22,0x3b628ec4,0x3b2b8359,0x3b6a34cc,0x3b5e2c00, +0x3a7e30dc,0x3b2e6aa1,0x3bb82f73,0x3af76aaa,0x3b3e49f0,0x3b63c6a6,0x3b9c0c89,0x3b6a74f8,0x3b454c53,0x3b9be931,0xb98a10be,0xbab28936,0xbb14e7f6,0x3b81c054,0x3bbffbce,0x3b8c0729,0x3b007816,0x3a204614,0x3a0060a7,0x3a9c95de,0x3ae4c492,0x3acb1777,0x3b42a392,0x3ba7f35b,0x3bff973b, +0x3bd4d0a7,0x3ba568da,0x3acb2018,0x3a7b5275,0x3a2c3f10,0x3a42abbf,0x3b84c3e4,0x3ba62007,0x3b63540c,0x3bb9a410,0x3b974bd9,0xb9b85a81,0x3b97ecc2,0x3b1f5c60,0xbb2f3416,0x3a311b0d,0x3b0003ab,0x3bb983ea,0x3b7dcb7f,0x3ac40411,0x3b6cdda4,0xbbc6892e,0xbbdd76d3,0xbc168512,0x3b9da825, +0x3c0a00e8,0x3bac760f,0x3ab5a039,0xbaa03950,0xbb02698b,0x38df2f1c,0x3ab7e249,0x39ec9a87,0x3b84520d,0x3c030601,0x3c5c449b,0x3c32d5c5,0x3bf489e8,0xb8aac6b4,0xbaa8e330,0xbaeb2c93,0xbb437964,0x3ba44181,0x3bec3108,0x3b2adc4f,0x3c164c51,0x3c0c5331,0xbbc47321,0x3b5f6c95,0x3c63ce2c, +0x3b64053f,0x3ba3ee99,0x3ba4ca1f,0x3c0699e7,0x3c2b2758,0x3bf4c32a,0x3c42cf6d,0xbb8e12f2,0xbc248f79,0xbc72b326,0x3b68bc54,0x3c384fe5,0x3be82581,0x399481b6,0xbb8445a6,0xbbab93e5,0xbb31dbae,0xba9714e6,0xbad32ed3,0x3b714cfb,0x3c33c10a,0x3c8f2e88,0x3c95c013,0x3c7c668e,0x3b84f98c, +0xba02dc0a,0xbbb66863,0xbbd69397,0x3bde2a4e,0x3c6cdf17,0x3c08997d,0x3c7fa446,0x3bf3d4d5,0xbc2ec14a,0x3c2da9b1,0xbd2d6377,0xbca44a0a,0xbbbf30c2,0x39013da4,0xbc32a3d6,0xbca2ce33,0xbcc7d15c,0xbc961592,0xbd051b9b,0xbcacab80,0x3c3cedf2,0x3bee3339,0x3bf64ced,0x3b5b9ae8,0xbc29ea66, +0xbc43d28b,0xbac63f22,0x3a9431be,0x3ba869b8,0x3c4807d0,0x3c27813f,0x3c566037,0x3ca583d3,0x3c84766c,0x3c3c4b4d,0x3b6cc668,0x3b0d1bf4,0xbb127e2c,0xbbb9469b,0xbc2668e2,0xbbe3cf1e,0x3aa05dd5,0x3bcda3fe,0x3c3fc460,0x3c9deaa3,0xbcd0525e,0x3c51ca61,0xbb9eaecd,0xbc685162,0xbc4c70a5, +0xbac020e3,0x3be731e9,0x3c070a22,0xba813114,0x3b0c4334,0x3ba67cab,0x3c46e7ff,0x3b21cc1c,0xbb66c967,0xbc6ae2e9,0xbc0e5df7,0xbbedf897,0xbc4bb431,0xbc18e023,0xbb885585,0x3a95f3d6,0x3c2ea044,0x3c10fe7e,0xbb5a4ad1,0xbb3c1281,0xbb0d3991,0xbb2a856d,0x3a2b9a4f,0x3941f930,0xbbf9115a, +0xbbb7eeb8,0xbc0d4d33,0xbc402462,0xbcc03a74,0xbcdd55b0,0xbcadab68,0x3bafacd2,0xbd3fafb0,0xbd1e5a83,0x3bcdc86f,0x3c755e20,0xbb84a88c,0xbc3d63a3,0xbcd13cb3,0xbd1bd234,0xbce29519,0xbcc713e3,0xbcc74779,0xbc57dbee,0xbc1560d8,0xbc9ea321,0xbca716a9,0xbcaf5566,0xbc93b455,0xbc52c2af, +0xbbd601ab,0xbb4082d7,0x3c46ca25,0x3c1b57fe,0xbc5105ac,0xbaaf5273,0x3babe4e7,0xb9370b8e,0x3ac6e876,0x3a832953,0xbaa1fa96,0x3b15f2cb,0xbb04347d,0xbb21deef,0x3a929801,0xbc092b2f,0xbcd12d55,0xbd150e46,0x3d45481d,0x3c30c3be,0xbccff46a,0xbd463d5d,0xbd947869,0xbd035099,0xbc9a1d6c, +0xbd0c6692,0xbc7649d6,0xbc45d9ad,0xbc6fba05,0xbc63da1b,0xbc8b3d90,0xbccd73e3,0xbc79db3a,0xbc3f0de5,0xbbf06dc6,0xbc4466a9,0xbbff44dd,0xbba41725,0x3c4682f8,0x3c442d21,0xbc161d8f,0xbb7f96aa,0xbb9de811,0xbbebdcea,0xbb205460,0xba8a4bb4,0xbb8416bb,0xbab1483b,0x3a860bba,0xbb80381f, +0x3b966ce4,0x3c7f0530,0x3d1d70a2,0x3d417d29,0x3d57a849,0x3d8c624e,0x3d98fac2,0x3d884db6,0x3d2d30e2,0x3c607bdb,0xbca9d170,0xbd5a6af3,0xbd22b17b,0xbce4e0ea,0xbc5a2601,0xbb8fadd7,0xbaae01c5,0xbbaf3d17,0xbc87311f,0xbcba7154,0xbcc0f78e,0xbcaa8192,0xbc69bb45,0xbc5a270d,0xbbe53714, +0xbb6e1be6,0xbb4f713f,0x3b63daea,0x3bcdd183,0x3c3675f8,0x3b7710a3,0xb9036b02,0x3a6a2b4e,0x3c212d0b,0x3c889af7,0x3cbd8f21,0x3cee87f7,0x3d044362,0x3d043b43,0x3d33a09a,0x3c8f7baf,0x3ca1ff5b,0x3ce55c24,0x3d150b89,0x3d4181e0,0x3d6cd62d,0x3d6c51c3,0x3d35973a,0x3ccc02cf,0x3b3af11b, +0xbc7978a9,0xbcfc2075,0xbd16c4a1,0xbd0decd6,0xbcf2c8d8,0xbcc01982,0xbc4a16d1,0xbc2ebfc0,0xbbed2d25,0xbb7093dc,0x3b90c1d5,0x3c043543,0x3bd9340f,0x3b9a1bae,0x3b8e4922,0x3be71e5d,0x3c56482e,0x3c8b84b7,0x3c8c2451,0x3c9df1a0,0x3c9f344e,0x3c951abf,0x3c8f5b2b,0x3c90214f,0x3c85af69, +0x3ca202f2,0x3c99c13f,0x3ca6e4df,0x3cb72eb8,0x3cb6e9a9,0x3cb064f8,0x3cbf578a,0x3cd2cf3d,0x3cfb746f,0x3d03f2b3,0x3d13b2fb,0x3d26918f,0x3d1ab40d,0x3d0c04ee,0x3cf734d6,0x3cdfffbf,0x3cc4ae52,0x3cae8f78,0x3cae6cbc,0x3caec82d,0x3cb5728e,0x3ca29766,0x3c8102b5,0x3c57cf1f,0x3c4f4acf, +0x3c533d04,0x3c263c1a,0x3c3b77f8,0x3c2637cb,0x3c2f4ba8,0x3c1741ee,0x3c0df348,0x3bfe9457,0x3c3c1710,0x3c75470c,0x3c94a9ca,0x3c928c4c,0x3c1d64b7,0x3c565f93,0x3c5b8bd2,0x3c688cb4,0x3c7e6d82,0x3c886d6b,0x3c8e95e9,0x3c918b1d,0x3c8a5435,0x3c8080e5,0x3c753c5b,0x3c762772,0x3c84487a, +0x3c91251e,0x3c8c4205,0x3c890647,0x3c7b8e83,0x3c6e9285,0x3c4b803a,0x3c415436,0x3c884825,0x3c7db95e,0x3c7d49f4,0x3c646448,0x3c6bdca3,0x3c6e30c4,0x3c694787,0x3c61053c,0x3c5fc289,0x3c5ca758,0x3c68e8a0,0x3c4ca44f,0x3c4ec1c6,0x3c35a966,0x3c3ea93b,0x3c5338d1,0x3c35778a,0x3c6d0654, +0x3c67eb42,0x3c6fb96a,0x3c713f60,0x3c715bec,0x3c720880,0x3c74f8bc,0x3c7c7f58,0x3c83710a,0x3c8702c4,0x3c8bebe2,0x3c8de487,0x3c91faf4,0x3c86f3b7,0x3c7f35b0,0x3c74836a,0x3c652d93,0x3c5d2773,0x3c4143db,0x3c32babe,0x3c1fc569,0x3c08a952,0x3c474263,0x3c26506b,0x3bf6f5da,0x3bf693ee, +0x3bf4c804,0x3bea6eb0,0x3be3ad95,0x3bd72a71,0x3bd87166,0x3c1d32a5,0x3c4cf9d2,0x3bc31e4e,0x3c1511a1,0x3c83a66f,0x3b1c835f,0x3ad3cf2e,0x394266df,0x3adc3cc2,0x3b0e511b,0x3b4b541a,0x3b21c3f7,0x3b0c07ac,0x3b0c9bdd,0x3a89a238,0x3a23166c,0xba3d9520,0x3ae6b848,0x3b25a2a3,0x3b6dad33, +0x3b0516ba,0x3ae873f1,0x3afc3f8e,0x3b10d28b,0x3b1c7c41,0x3b246ea8,0x3b4ebeca,0x3b6ce050,0x3b9bc504,0x3b53935c,0x3b307ebd,0x3af4c96d,0x3af38ab2,0x3af8b48d,0x3b0c716f,0x3b3d0a82,0x3b4a02ec,0x3b15a0e0,0x3b4b37ea,0x3b405a21,0x3a9788b2,0x3b04ec59,0x3b86e579,0xba1663db,0x3a55615f, +0x3b05f777,0x3b901688,0x3b864a9c,0x3b7997d9,0x3b74325b,0xb9b3eeba,0xbb351a90,0xbbb640f5,0xb989f109,0x3b3e249e,0x3bcb473c,0x3b00fe6e,0x3a464c59,0x3acb75eb,0x3b0d7117,0x3b43bde9,0x3b50599e,0x3b8c099a,0x3bc2598c,0x3c049582,0x3bb85973,0x3b86fbb7,0x3aeb6ca1,0x3a4f502b,0x3a3fd030, +0x3af20420,0x3b7564e3,0x3b8a6edd,0x3b348dd1,0x3b8c12c7,0x3b812823,0x3aaf0ce0,0x3b8837aa,0x3a3568dc,0xbb812555,0x395df230,0x3b5243d2,0x3c039b83,0x3baa1f70,0x3b916589,0x3b29286b,0xbb87849f,0xbbee8b61,0xbc5244e5,0xb947bca8,0x3b925694,0x3c297a6f,0x3af79361,0xb92ee9f3,0x3a61490e, +0x3b0c4784,0x3b7dc2eb,0x3b4d8e22,0x3bc67081,0x3c1fc860,0x3c671992,0x3c1ee8c5,0x3bb60640,0x3a5db0ce,0xbaa9ac17,0xba5a5509,0x39006ce5,0x3b9fefb8,0x3bbda1bc,0x3ad699e2,0x3bea6040,0x3bec328e,0xbb549d0b,0x3ad37fe8,0x3c6ecc1e,0xbaa771e2,0x39587401,0x3bb0193a,0x3c3aad72,0x3c3c8337, +0x3c237b58,0x3c18f8ad,0xbb28f168,0xbc548620,0xbcc0b0c3,0xbc05b4e8,0x3ba4df91,0x3c87958c,0x3b209c2e,0xbb1d6c25,0xba942f39,0x3aa55580,0x3b7a6d0c,0x3b42da75,0x3be2bab9,0x3c462b7e,0x3c9c631c,0x3c850258,0x3c567b05,0x3b7e2a77,0xbaf9b838,0xbbc7f681,0xbb9f4fe0,0x3bf6bd23,0x3c4fcc4a, +0x3bc10689,0x3c507e49,0x3bdd5a96,0xbb91183f,0x3c46cc22,0xbd35f2a7,0xbc478416,0xbb86c886,0xb9304b6e,0xbc090637,0xbc204c84,0xbc660d14,0xbc4eefe2,0xbd11f5b7,0xbce23164,0x3c6add43,0x3c436010,0x3c25c153,0x3bf2aad4,0x39efe680,0xba235b0a,0x3b57b60c,0x3bbe2ad6,0x3bc4cb65,0x3bc09c97, +0x3c05140b,0x3c503535,0x3cc2607e,0x3c5c8c24,0x3beb96b3,0x3a543825,0x3b3ee3d9,0xb9fa8199,0xbbd54e1c,0xbc0a0b62,0xbbb23c4b,0x3a5d33f7,0x3bb07d42,0x3c31b20c,0x3caa99b6,0xbd0221c3,0x3c771f7f,0xbb44a59a,0xbb97335a,0xbc2e0c94,0xbcbe92a1,0xbb7c98bc,0x399cd0b3,0xbc6676e7,0xbb011b90, +0x395dc77a,0xbbc3d0a5,0xb848c8fb,0x3ae9ef53,0xbc39432d,0xbbfc60b8,0xbc042daf,0xbc02613e,0xbbbf6728,0xb9c450ca,0x3b4c7785,0x3c34102b,0x3c00679f,0xbbe70311,0xbb288f9a,0xb874db8b,0xba94694c,0x39854277,0xbabce0cc,0xbbcfbdbf,0xbba09a13,0xbc1eaf8f,0xbc594af1,0xbcb0a122,0xbcc2d60a, +0xbcb196cc,0x3c15466b,0xbcc5ed96,0xbbcf2a67,0x3c9226ef,0x3cbe4fd7,0x3befcd05,0x3aa127b1,0xbc2487dc,0xbd005eff,0xbcc75506,0xbcc44324,0xbcb930a0,0xbbc8591a,0xbb764342,0xbc7e7a36,0xbc758cf6,0xbc82bb55,0xbc657222,0xbc477342,0xbbeed2f8,0xbb99f3ab,0x3be1a9c5,0x3be103d3,0xbc2fa558, +0xbaab5a32,0x3bb26f44,0x394e1edc,0x3835a158,0xb96aee17,0x3a243d0b,0x391cf30c,0xbb959eca,0xbb2dec4b,0x39e5428a,0xbbff6371,0xbc9869d7,0xbcc7c281,0x3c550c8b,0xbcc8c308,0xbd9d0f1f,0xbdadf4f5,0xbd93f323,0xbcfc847b,0xbc6c7b8a,0xbced3ef1,0xbc5a13f9,0xbc0ee9f7,0xbc0ab641,0xbc0f2fe4, +0xbc165f4e,0xbc3ea18b,0xbc0a9357,0xbc0f5426,0xbc10adcb,0xbc32fadc,0xbbb92e28,0x3ad8975f,0x3bf3fa14,0x3bd87ea1,0xbbef003e,0xbbba4cc4,0xbbc46866,0xbbf5386e,0xbaaa06af,0xbb0db685,0xbbe9235d,0xbb9f1d7b,0xbb9f2b71,0xbc55c987,0xbbee433b,0xba19abd6,0x3c9a04b0,0x3cad926b,0x3d83bb86, +0x3da332f3,0x3d8eb3d7,0x3d4ba5f7,0x3cb49c39,0xbc998106,0xbd2e1757,0xbd414a45,0xbcfcd97a,0xbcaf90d2,0xbc675703,0xbc82e92d,0xbc091663,0x3b8c3ddc,0xbb840565,0xbc150311,0xbbde3930,0xbc12fc8f,0xbc1007f9,0xbc0efcbf,0xbbd6c62c,0xbb9ee3d1,0xbbb48fb5,0x3aa8c137,0x3b77b000,0x3ba7b5d4, +0x3af9de09,0x3910821b,0x3afefaf2,0x3c0bbd99,0x3c829ed5,0x3cc95705,0x3d18cef4,0x3d2ba547,0x3d21c805,0x3d5bf0a6,0x3cc209d8,0x3cd425a5,0x3d0e0c46,0x3d30cfcb,0x3d5df311,0x3d71571e,0x3d51ce92,0x3cee9096,0x3b4aa48f,0xbc9136ed,0xbcedc4be,0xbd2e7596,0xbd37839c,0xbd172c5c,0xbcec9f5d, +0xbcbdf413,0xbca84f30,0xbc7f137d,0xbc129bf4,0xbb1b070e,0x3b9e7bcf,0x3bd17c60,0x3afac71c,0xbaba9518,0xba8bbb21,0x3b6e5538,0x3c4f6ae0,0x3c94a6e9,0x3ca19323,0x3ca20bc8,0x3ca2d797,0x3c96495e,0x3cb0e6dc,0x3cbf10bb,0x3cb22d58,0x3cd1025d,0x3cb627c5,0x3cdc3f1a,0x3d01b9f2,0x3d0a158b, +0x3d111362,0x3d1427e4,0x3d20a29a,0x3d3bd2f0,0x3d33d085,0x3d2d9ba4,0x3d273e60,0x3d0ea176,0x3ce49240,0x3c9e2613,0x3c80e6b4,0x3c4c4cdf,0x3c0e1daa,0x3c24dc54,0x3c122ff7,0x3c31f016,0x3c65afe0,0x3c342b2e,0x3c3a8fa8,0x3c4934c2,0x3c4c4de1,0x3c4a2d24,0x3c29164c,0x3c268369,0x3c0c605b, +0x3c179863,0x3c09e288,0x3c0e8f41,0x3c38f330,0x3c60a0f0,0x3c81eda0,0x3c9d1976,0x3c7477fc,0x3cadef0c,0x3cb5b1e7,0x3cbe9caf,0x3cd11503,0x3ce221a7,0x3cecf51f,0x3cf67da5,0x3ce03661,0x3cd2d2b4,0x3cc7272b,0x3cc04439,0x3cbf9866,0x3cc1bdf2,0x3caf9b11,0x3c9c479d,0x3c879ea3,0x3c67963b, +0x3c3b7b67,0x3c0d962a,0x3c28f248,0x3c45274e,0x3c5ad041,0x3c5b14cd,0x3c69eda1,0x3c821aae,0x3c899958,0x3c909f07,0x3c9128fb,0x3c9a6daa,0x3ca56a81,0x3c9ef0aa,0x3ca28444,0x3c980389,0x3c95b284,0x3ca737fa,0x3c99dee5,0x3cb657a1,0x3cb26386,0x3cb861ae,0x3cb958a1,0x3cbb75e4,0x3cbe3975, +0x3cc56729,0x3cc3bc3b,0x3cc3ef93,0x3cc27233,0x3cc18a33,0x3cbed80f,0x3cbecdc9,0x3cb4da7e,0x3cae2e36,0x3ca7a522,0x3c9e84e5,0x3c98286c,0x3c8c7de1,0x3c82b4a7,0x3c7a09ad,0x3c5bba72,0x3c8f2faa,0x3c84694d,0x3c68b858,0x3c66f946,0x3c654298,0x3c68e592,0x3c652ae3,0x3c6326cf,0x3c68af28, +0x3c8d0526,0x3ca37a01,0x3c6293b8,0x3c8aa4a9,0x3cc04df7,0x3b21c88a,0x3ab13b92,0x3a02afc9,0x3aba9e7b,0x3ae904f0,0x3af7329f,0x3b35a101,0x3b3c5e99,0x3b1a7d47,0x3acd515d,0x3a8de235,0x39b0430f,0x3ab1e1c3,0x3b060719,0x3b798e2c,0x3b135ce6,0x3b092434,0x3b1fcaf0,0x3b30859a,0x3b3c4007, +0x3b4c0c47,0x3b5bf31c,0x3b612575,0x3b85ae02,0x3b3e555d,0x3b12f6b4,0x3ac6faa2,0x3aba91c2,0x3ac61250,0x3b13cfb5,0x3b154461,0x3b14338b,0x3adc25ba,0x3b14dda2,0x3b266e7a,0x3ac330d7,0x3ae13fbf,0x3af5638b,0xbaab9934,0xb9fcfec7,0x39543b49,0x3a5c7f98,0x3b60d2b0,0x3b747503,0x3affd51a, +0xba092ce6,0xbb2417ae,0xbb6b699b,0xbb0c4857,0x398a5895,0x3bad1aa8,0x3b074527,0x3af69dbf,0x3b42c6d0,0x3b6caca0,0x3b93d813,0x3b9425b1,0x3baa6b28,0x3bd265d4,0x3bf2b9da,0x3baa3365,0x3b75dda4,0x3af90c0a,0x3a93de1d,0x3aa90e75,0x3b3f2472,0x3b64e784,0x3b65bd37,0x3b1d6b82,0x3b2e7024, +0x3b29c9d5,0x3b1ec3ee,0x3b4f55cf,0xba6fc627,0xbbf8f98f,0xbb5ee354,0xb9fcb63a,0x39c4eacb,0x3bc46442,0x3bf57545,0x3b1f4b87,0xbaebcb48,0xbbab2d1a,0xbc0c1a1a,0xbb6c9a03,0x38e44eea,0x3c1bf475,0x3b0909ad,0x3aada8db,0x3b5dcf0f,0x3b976e38,0x3bd0dcc2,0x3bb9f0ab,0x3c0a61c4,0x3c316b55, +0x3c577fe5,0x3c0c4d0f,0x3b9c733e,0x3aa62f75,0xba0d0687,0x3a6063a7,0x3b32a92b,0x3b954871,0x3b860efe,0x3ab12596,0x3b853471,0x3ba40365,0x3a18c9c4,0x3aa6b6c8,0x3b70a533,0xbc45eb1e,0xbc1afb5f,0xbb8049ec,0xbae51bfc,0x3bd3118c,0x3c0c3c17,0x3b1ee152,0xbb62566e,0xbc4eb49c,0xbc9bb7cd, +0xbc70a6bb,0xbb76f4a2,0x3c343f9e,0x3b0447c0,0x39b562a7,0x3b53d462,0x3bb08577,0x3c067b27,0x3bdfbcef,0x3c1b09f5,0x3c56d62a,0x3c9ed049,0x3c79d403,0x3c372ddb,0x3b5f95be,0xbb194658,0xbbaf2943,0xbb02be9f,0x3bebf64d,0x3c1fb40d,0x3b521e39,0x3bfc51c4,0x3b676991,0xba899d4c,0x3bd2163f, +0xbd0fce90,0xbb74ff4f,0xbb0a49ea,0xb9fb6ab4,0x39e666ee,0x3bed093e,0x3b83b4fc,0xbb4e4edd,0xbcb90321,0xbc7c70e9,0x3ccb1008,0x3c5e43b3,0x3c16e59e,0x3c0a2e77,0x3b749b5d,0x3b716149,0x3ba12d28,0x3bf4dd3d,0x3c0369cf,0x3b9b3bd9,0x3c11b2b2,0x3c673397,0x3caf9fda,0x3c3e07cc,0x3bb300c6, +0xba11923d,0x3b2282cd,0x3a771f1e,0xbbc00ead,0xbba3dbdc,0xbb17dfa3,0x39c01a70,0x3be5880d,0x3c2fcf82,0x3c8d2c13,0xbce953b3,0x3c79ddc2,0x3ae1dfc9,0xb99c1e1a,0xbc183d37,0xbcfd0a04,0xbc510ece,0xbc0bb5a3,0xbc979453,0xbc64c05e,0xbc80274c,0xbc6baa6a,0xbc2ef2ce,0xbbc6b228,0xb98da226, +0xbb92137d,0xbbe2957e,0xbb7ee533,0xbae632ca,0x3b6ca035,0x3bd46f2e,0x3bfc5a49,0x3ba83211,0xbba53cab,0x3884fc44,0x3b61f18d,0x3b00ac32,0x3aa9635e,0xbaced436,0xbb8bac01,0xbb885bca,0xbc01c788,0xbc03b1e6,0xbc861aa4,0xbc990e9f,0xbc65b095,0x3c277e73,0xbc49884e,0x3bd3ab46,0x3c893050, +0x3c95aa09,0x3c40e89c,0x3c0db1f8,0x3a181676,0xbc91a64f,0xbca8fe0f,0xbca15fc2,0xbc39d075,0xbbd25863,0xbbcc4e8e,0xbb771967,0xbc05ccae,0xbc0cedbf,0xbb905e02,0xbc0b77f0,0xbba9bf8b,0xb9d75a1b,0x3b7edb28,0x3b8d7c0f,0xbbc49d4b,0xbb0469df,0x3b44c4ba,0x3a6bd00b,0xba260be5,0xb961fe8a, +0x3ad77451,0xba3cdf92,0xbbd04b13,0xbc077b76,0xbb4c3821,0xbc1a9f8b,0xbc6dae50,0xbc901708,0xbcafed87,0xbd5938de,0xbdc8d624,0xbdbf027f,0xbd4945da,0xbd126378,0xbcaba820,0xbc1e31a4,0xbc6ec9ad,0xbc55ce04,0xbbdce086,0xbbdb1683,0xbb6e69fc,0xb60f84a9,0xbba98abd,0xbc00db22,0xbbc0d5cd, +0xbb96d2a7,0x39d439c5,0x3c11b2f6,0x3ae14cfa,0xba8a48c5,0xbbb448bf,0xbb8f03fe,0xbb5f1058,0xbb5d122c,0x3a427184,0xba95f15f,0xbbe94339,0xbbf82f88,0xbc22dd35,0xbc9d019a,0xbc8dfc0b,0xbc864a53,0xbb8e5820,0xbc06c24a,0x3d8a1243,0x3d922066,0x3d627ccb,0x3cec7ea7,0xbb421374,0xbd1fe8d7, +0xbd439f26,0xbce77470,0xbcba7e61,0xbc9e3f56,0xbc9f41e3,0xbcb7eaf0,0xbca53663,0xbc5815d9,0xbb8233b6,0xba0955b0,0xbb1437a0,0xbbaf1b83,0xbbc42c91,0xbb46a7d0,0x3a428e1e,0x3b185131,0xbbbf23aa,0x3841ba4c,0x3a57a50e,0xba6822fd,0xba6e6722,0x3a0e40ba,0x3ba7014f,0x3bf54fb9,0x3c6e6d86, +0x3cb9e540,0x3d2d0f43,0x3d4b70ea,0x3d3a8595,0x3d6c2c4c,0x3cf3a812,0x3cf8a90d,0x3d128b89,0x3d20baa2,0x3d2aef02,0x3d2689c0,0x3cc6335d,0xbbc59a6b,0xbcb43188,0xbcf0c106,0xbcef66c9,0xbd0868ff,0xbd02825d,0xbcd9c3d3,0xbce9368b,0xbccc5d2a,0xbcb39c2b,0xbc86cf64,0xbc341462,0xbb72e813, +0x3b0a3953,0x3b19debc,0x3748ecca,0xba54c663,0x3a7f2fb8,0x3bdbabf6,0x3c53faae,0x3c9178f4,0x3cae9425,0x3cae27bc,0x3caf29f2,0x3c9fe2e9,0x3cbd30e2,0x3ccd8511,0x3cc8fdd3,0x3cee5382,0x3cdc1bec,0x3d03263f,0x3d1f7745,0x3d3410e2,0x3d4c365b,0x3d43218e,0x3d495792,0x3d57d62a,0x3d34c2c4, +0x3d0b1616,0x3cc71ced,0x3ca3c8ea,0x3c78474f,0x3c2942f6,0x3be5ba23,0x3b683c9f,0xbab4d4c4,0xba871791,0xbaf84848,0xba98eaee,0x3b8dfdcb,0x3bcce638,0x3c2c89e8,0x3c4f1d41,0x3c659bef,0x3c81fb01,0x3c532465,0x3c50c18b,0x3c2a4e82,0x3c4987d2,0x3c44704e,0x3c577d28,0x3c826ec9,0x3c8ecffb, +0x3c9e4442,0x3cc37276,0x3cd2a173,0x3d02a76d,0x3d00a7ec,0x3cfdce5a,0x3d014100,0x3d022faf,0x3d002c2e,0x3d001b1b,0x3ceb46b7,0x3ce93b58,0x3cdefadd,0x3cda9908,0x3cd022d0,0x3cc30dad,0x3cb3e5a2,0x3ca5f0a6,0x3c9a451a,0x3c8ed7fb,0x3c81a248,0x3c59a903,0x3c504172,0x3c7030d3,0x3c7e0d32, +0x3c810caf,0x3c85493b,0x3c928db3,0x3ca2b140,0x3cb0bf68,0x3cb5fb71,0x3cc3f0ef,0x3ccf6deb,0x3cd02ad6,0x3cd7af5b,0x3cd8e1df,0x3cda19e7,0x3cf087fb,0x3cd18bb0,0x3ce9f53a,0x3ce09a26,0x3ce2707a,0x3cdf117e,0x3ce16182,0x3ce385c1,0x3ce70bad,0x3ce4e06a,0x3ce118ba,0x3cdd9cdb,0x3cd6162d, +0x3cd0e0ec,0x3cce85f0,0x3cc98392,0x3cc48816,0x3cbec90c,0x3cb629a6,0x3caf9a8b,0x3caa279d,0x3ca2112f,0x3c9e040d,0x3c911e7e,0x3cade28e,0x3ca7617e,0x3c997c83,0x3c9ae4ec,0x3c9cbb4b,0x3ca24795,0x3ca3667a,0x3ca699e5,0x3caba7de,0x3cbe39f7,0x3cd0d9c1,0x3cafe00b,0x3cc46009,0x3ce2b136, +0x3b3fada2,0x3af69068,0x3a98025c,0x3aba1e44,0x3ae6b401,0x3af5a748,0x3b4b47c8,0x3b4c911e,0x3b17f286,0x3af5a2cf,0x3ab292e2,0x3a49ab0a,0x3a8a69dc,0x3addc9a7,0x3b6fcae2,0x3b2d5717,0x3b3170df,0x3b49777e,0x3b5a211c,0x3b65a986,0x3b70ab39,0x3b8160bd,0x3b80012d,0x3b80f2de,0x3b4fef7d, +0x3b2a9bde,0x3af33798,0x3b009b9d,0x3b0a370e,0x3b4adfe9,0x3b22ef34,0x3b157f25,0x3b060a09,0x3b141d15,0x3b3c7e13,0x3b2ec5db,0x3b1c2cb2,0x3ac838f1,0x3a17c829,0x3a081820,0x3a329bcf,0x3985616f,0x3b74c5f1,0x3b81ae04,0x3ad115f2,0x3a2a8e13,0xba93a052,0xbb0bdd5e,0xbb3a6a1d,0xba9f2750, +0x3b8d90e5,0x3b0ee35e,0x3b310f9d,0x3b7b8e55,0x3b976d5f,0x3bb424b9,0x3bb4b71b,0x3bd2354b,0x3be70eb0,0x3be1a77c,0x3ba82cca,0x3b73c9c9,0x3b04b21c,0x3af8c396,0x3b1c05cc,0x3b9514cf,0x3b6a29c0,0x3b547d7e,0x3b3fe1b4,0x3b00a062,0x3b2195ce,0x3b9c8d7a,0x3b664b1e,0xbadc92c0,0xbbc8ffd8, +0xbb8c8ffa,0xbb795fb9,0xbb48a8c8,0x3bc23cb4,0x3bca3197,0x3a3c18b9,0xba829027,0xbb980ec7,0xbbfdb3bf,0xbbf02adb,0xbb880764,0x3beda75b,0x3b0c7a69,0x3b255f5d,0x3b9646fd,0x3bccb0e0,0x3c00f327,0x3bf573e1,0x3c2d6e1b,0x3c40167d,0x3c42b0a8,0x3c002ae5,0x3b984c80,0x3abce1d3,0x3a303128, +0x3b33b60e,0x3bc59bdf,0x3b92fc48,0x3b3f48d8,0x3b27f3cf,0x3b060ace,0x3b6d5e33,0x3bbf79f3,0x3b40b82b,0xba3b32dd,0xbbd28253,0xbbc362c2,0xbbe3d5bf,0xbc0be69c,0x3bb1e3bc,0x3bd12ae3,0xba4eda9d,0xba7d6c67,0xbc135ee2,0xbc74e481,0xbc903003,0xbc28accf,0x3bde1f81,0x3a857f6e,0x3ac7d7b3, +0x3b9a47d6,0x3bf73fba,0x3c299ad0,0x3c1968f6,0x3c48c518,0x3c709ed5,0x3c953bf0,0x3c5b6c6d,0x3c0ff21c,0x3b0f7366,0xbad77863,0xbb41d07f,0x3b081df9,0x3bd2e429,0x3be3e498,0x3b433090,0x3b3f4f21,0x3a47aa01,0x3bb4cb02,0x3bb0542c,0xbcc00e03,0xbbe42e0e,0xbbddf4b4,0x3a8a320d,0x3b3469d6, +0x3c569c9f,0x3c3156e4,0x3acbce19,0xbc818e08,0xbc57d1c9,0x3c8bb7ed,0x3b182807,0x39adb554,0x3c1ad9bc,0x3b050033,0x3ab0b7f2,0x3b64a70e,0x3bb6e158,0x3bfbbe8f,0x3c067b8e,0x3c5f3ac0,0x3c8a3e1a,0x3c962c03,0x3c348fa9,0x3bb364ec,0xba33c978,0x3b1ee6cb,0x3b1a1bfd,0xbb6d1c16,0xbacb5f73, +0x3a23fa52,0x3b0e6e8b,0x3c376eb2,0x3c5778b5,0x3c67c607,0xbc985aa4,0x3be8724c,0x3c4aab88,0x3c144307,0xbbae2229,0xbcf39c01,0xbce150a5,0xbcaf5e02,0xbc191e95,0xbc470da7,0xbc36d7fb,0xbbcb6d80,0xbc53d106,0xbc2d45b9,0xbac3de37,0xbb5acfbd,0xbb83ec31,0xbb5ffaba,0x3a31e967,0x3bb9dcbd, +0x3c272622,0x3bab6391,0x3b4f1f6d,0xba376733,0x3b16702d,0x3bac8aa4,0x3b257a88,0x3a165f58,0xbaf30287,0xbb101050,0xbb1daeca,0xbbbdce26,0xbbe740e7,0xbc68d581,0xbc80e6a8,0xbc2edfd6,0x3b227958,0x38034238,0x3c5c285f,0x3c2cc18e,0x3bf62303,0x3c4d017a,0x3c7b5513,0x3c2a64e4,0xbb0fbfe4, +0xbc6d5efb,0xbc83971d,0xbc24d47b,0xbbc6d608,0xbb0f5f94,0x3a99d6d7,0xb93ccd71,0xb8b73566,0x3b4b7e30,0xbab2dd33,0x3a5c21b5,0x3c112e2e,0x3b95f712,0x3b91a6e5,0xb98b112f,0x39920910,0x3b1378fc,0x3b1661b7,0x3a8f1218,0x39e16ee8,0x3a8509d3,0xbaf54a7c,0xbbf4ad8a,0xbc388a69,0xbbbd4cb7, +0xbc21fd50,0xbc9976d8,0xbc0eb29f,0xbd3b3025,0xbd878214,0xbd93c3df,0xbd7807ab,0xbce9e4af,0xbcf31688,0xbcc18c52,0xbbec8a83,0xbc58ca4e,0xbc0702cf,0x376b5051,0xbb5f20b3,0xbb94b00a,0xbbb66c0c,0xbbb390bf,0xbbcc8458,0xbbcdc216,0xbac876ca,0x3b455d31,0x3c441e8f,0xb905caa8,0xbb891dd7, +0xbb8bc140,0xbaf38f7b,0xb9911991,0xba3a34a6,0x3a8c4c1a,0xb95d9b17,0xbb7c8c59,0xbbf79103,0xbc32c4c6,0xbc8b8e99,0xbc98d812,0xbcbc62c6,0xbcc49651,0xbcfad953,0x3d669b75,0x3d3994d4,0x3cd10cc4,0x3a886e76,0xbd04d36e,0xbd293f95,0xbd12cd41,0xbc9daf08,0xbc9fe97a,0xbc9d43b9,0xbca73169, +0xbc7ce509,0xbc76b583,0xbca63dd7,0xbc4707ed,0xbb80d34e,0xbad5c2bb,0xbb8103af,0xba95de0d,0x3b88e08c,0x3b8ef50e,0x3ba0c2c1,0xbb75758c,0x3a8dab15,0x3a441bfd,0xbb6f1e30,0xbae7b111,0x39df81f6,0x3ba68b06,0x3b988f52,0x3c1ddcf5,0x3c785ec4,0x3d170c0f,0x3d41624f,0x3d3c4cf4,0x3d4e9c9d, +0x3d146e27,0x3d1683b7,0x3d1ca82f,0x3d0e0afe,0x3ce29a95,0x3c539ec3,0xbc0de4aa,0xbd02a3cf,0xbd070573,0xbcf634e1,0xbcd4d780,0xbcb782e1,0xbca44464,0xbc812681,0xbcc0861a,0xbcc7e637,0xbca02acc,0xbc8d8998,0xbc6954f4,0xbc073eaa,0xbb9cf9fa,0xbb4b8fae,0xba8fb699,0x3b4185a6,0x3bed092e, +0x3c5a3b39,0x3c6cfb62,0x3c89b6c1,0x3caa7262,0x3cba358a,0x3ccbc6e5,0x3cda8362,0x3cc3024b,0x3cc2e9ac,0x3cdecf03,0x3d07807d,0x3cfa38e6,0x3d0895b7,0x3d1b7f8b,0x3d2e5a67,0x3d4ae2a1,0x3d3c089e,0x3d3ab89a,0x3d36c4c4,0x3cf88594,0x3c70957f,0xba3949ed,0xba85d3bd,0xbb169f60,0xbb2852e4, +0xbb1481bd,0xbb13d6ac,0xbb78d185,0xbb5224ec,0xbb13353b,0xbb0af151,0x3a9b0e68,0x3baf8ce6,0x3c12f6f0,0x3c2e3ecf,0x3c4c6498,0x3c61ea6a,0x3c5fc70b,0x3c6a0567,0x3c64458c,0x3c898c01,0x3c90f173,0x3ca701f4,0x3cbd4422,0x3cc859d7,0x3cd1f37f,0x3ce9d9a9,0x3d07be37,0x3d0a574b,0x3d04b359, +0x3cffa96b,0x3cf4bdf9,0x3cec9a04,0x3ce004c7,0x3cde35a0,0x3cd63e14,0x3ce1db74,0x3cdd9567,0x3cda003d,0x3ccbd347,0x3cbb94b7,0x3caeffc8,0x3ca26f0f,0x3c97ffdd,0x3c8e989d,0x3c823b51,0x3c699a93,0x3c84a148,0x3c87578f,0x3c8ede37,0x3c95b242,0x3ca074e6,0x3caaa0a3,0x3cb9bc16,0x3cc6b976, +0x3ccfb9b1,0x3cd9ef46,0x3ce3e578,0x3ce70766,0x3ceeabe5,0x3cf4aab4,0x3cfc99ab,0x3d037a3f,0x3ce6a19c,0x3ce9fd0b,0x3ce56cd0,0x3ce33929,0x3cdfa880,0x3ce11cbe,0x3ce18ce1,0x3ce023e8,0x3cdea175,0x3cd9c635,0x3cd82b44,0x3cd06f7e,0x3ccc3ee6,0x3cc9c2d1,0x3cc4cdaf,0x3cc00d5d,0x3cbb0f60, +0x3cb46c6c,0x3caee920,0x3ca6262e,0x3cb177d1,0x3cb39620,0x3cb3b931,0x3cbb8263,0x3cbe1153,0x3cbae56b,0x3cbc3cb0,0x3cbe8929,0x3cc2a66a,0x3cc50dca,0x3cc90a46,0x3ccd48c1,0x3cd86c8d,0x3cde7f7b,0x3cdb9ef4,0x3ce2d2cf,0x3cec859c,0x3b74782d,0x3b2808a0,0x3aecd3da,0x3b178594,0x3b351b3f, +0x3b374a5c,0x3b834c9f,0x3b83ed35,0x3b52f00e,0x3b480e5c,0x3b1c77e9,0x3a8991dd,0x3aad1e0a,0x3af6d9ba,0x3b7ac1fa,0x3b5a6c4e,0x3b689f82,0x3b75de6f,0x3b842874,0x3b8b1f79,0x3b93e550,0x3b98d356,0x3b91f1f0,0x3b812c5f,0x3b777f4b,0x3b4e5133,0x3b0da416,0x3b22922e,0x3b34e110,0x3b8336eb, +0x3b383ffc,0x3b24a6c3,0x3b34e0f7,0x3b33bfca,0x3b6899dd,0x3b8aa323,0x3b4b1dc7,0x3b1d026c,0x3aaec307,0x3b06b744,0x3b0bbb81,0x3a7b501d,0x3b8dbfc2,0x3b9e6905,0x3b2d99f6,0x3b308ef7,0x39fa5cf2,0xbb350a45,0xbb4f1e76,0xbad024e9,0x3b858280,0x3b57f45d,0x3b87337c,0x3b9a7597,0x3bb8b4b7, +0x3bd1f890,0x3bd47f32,0x3bf15e9a,0x3bfefd6c,0x3bdcedf5,0x3bae4ef9,0x3b820996,0x3b22e46b,0x3b342a59,0x3b641d30,0x3bcf6821,0x3b864bee,0x3b6a2336,0x3b871619,0x3b08d2a4,0x3b5378dc,0x3c0b4538,0x3b9d785f,0x3a137095,0xbb41f7da,0xba8f8744,0x395979c1,0xb9a9d712,0x3bdf9364,0x3bf518d5, +0x3b21c51d,0x3b4fbbe7,0xbae044c6,0xbc174d6e,0xbc115e05,0xbbbd6deb,0x3bc0ff07,0x3b59c2a0,0x3b92bd74,0x3bb8e7c5,0x3bee8574,0x3c12e4d8,0x3c17c138,0x3c4520b0,0x3c4d3587,0x3c335121,0x3bfce77a,0x3b9b18d6,0x3b048110,0x3acbebd3,0x3b86a1e8,0x3c19add8,0x3b977a43,0x3b3b7e4c,0x3ba7746a, +0x3ae0aeab,0x3b667533,0x3c559ae1,0x3b9b2c41,0x3b896ef4,0x38fdc867,0x3a8ec6e6,0xba6ba031,0xbbd81208,0x3ba6e176,0x3bdb16d9,0x3a0bd69e,0x3b7c44fb,0xbb923816,0xbc8c5791,0xbc9aa580,0xbc4b7e68,0x3bc77926,0x3b71da0b,0x3ba939b1,0x3be6f002,0x3c226054,0x3c502401,0x3c46494b,0x3c79bdb7, +0x3c8772de,0x3c892738,0x3c461517,0x3bf1907d,0x3b04c38d,0xbaa1aff2,0xb9c7b87c,0x3bedf260,0x3bd28780,0x3ba8d47a,0x3b974635,0xb8fa35c9,0x3b12e36e,0x3c94f105,0x3c1ce60e,0xbc91858d,0xbc4506fc,0xbbe8640b,0x3b832cff,0x3c1ebe1c,0x3c7a3a71,0x3c57d4ab,0x3c376644,0xbbfa0f1b,0xbc2a6121, +0x3b65f84a,0xba93e62b,0xba5007c2,0x3bd5b53a,0x3ae8bfc6,0x3a682c23,0x3b38c971,0x3bb7f204,0x3c0288ce,0x3c0dd55e,0x3c9243af,0x3c9f7d7c,0x3c81c89e,0x3c2d4e2d,0x3bc3a95e,0x39d1f3b9,0x3b5759e7,0x3b4bc239,0xbb1ad2d2,0xb9bf209c,0x3b3d5a3c,0x3be55611,0x3c5fc460,0x3c403b36,0x3bc2d411, +0xbc55ecc1,0x3b657af9,0x3cfcb8bf,0x3c7cf017,0xbbaf703e,0xbcc5364e,0xbd175657,0xbcf8b361,0xba741b13,0xbba5d008,0xbb18686d,0xba8c7d94,0xbbf5fc9e,0xbc162fbd,0xbbdd285a,0xbb974ab3,0xbb1ce0cc,0x3af627b9,0x3b89589f,0x3bed0c17,0x3c45cd8e,0x3b8b6664,0x3b2c30cb,0x3b48d627,0x3b772c24, +0x3bb5185c,0x3af4d0ef,0xba4b314e,0xbb341506,0xba95294b,0xbac38993,0xbbaa89ed,0xbc0965a0,0xbc3cb604,0xbc2b6240,0xbbe5baca,0xbb8d0a91,0x3c175fc1,0x3c1d5fb6,0xbaaf96ad,0xba992393,0x3b9b74a3,0x3c8dbd8d,0x3c90c422,0x3bb0c724,0xbb895c9b,0xbbebc5fe,0xbbe1f927,0xbbca6461,0xbb4d5ece, +0xbb1f3f27,0x3ba741a5,0x3be5c2bf,0x3bcdddfc,0x3b8533b7,0x3bda7a48,0x3c8f5ad3,0x3ba5ce91,0x3b809f26,0x3b8a8861,0x3b4e5316,0x3b3fcbde,0x3b1a019a,0x3b0f9c7c,0x39c068d3,0x3a1c2b5a,0xbb5aacb6,0xbc002134,0xbc292e0e,0xbb99511a,0xbc1502aa,0xbca0cac9,0xb849ce1f,0xbd5d6c8d,0xbd671b9a, +0xbce69255,0xbc9c486d,0xbcd0449f,0xbcb81a04,0xbca801d0,0xbc7acfc3,0xbc0a3c5c,0xbaf342ee,0xba3cd39a,0xbbd42b83,0xbc28de73,0xbc62d885,0xbc4703ff,0xbbedd956,0xbb87f2b0,0x3aef718a,0x3bbe5a4b,0x3c592e1c,0xba2b3f1d,0xbb83bf29,0xbafbc3bb,0xba0351f3,0x3a9f359a,0x39ce9a47,0x3a89f4ac, +0xb8291a7b,0xba80e35f,0xbbcd22d6,0xbc18b1ce,0xbc51b04c,0xbc50776c,0xbcadf56e,0xbd0b33f8,0xbd2be451,0x3cfcc5e5,0x3c0a487a,0xbc8c0582,0xbcf64ea3,0xbd3a47ff,0xbcf2deb4,0xbc932ef1,0xbc7fc168,0xbc85e3e7,0xbc7c5986,0xbc322d57,0xbc18dfa0,0xbbea9638,0xbbebd604,0xbc52a4f0,0xbc3b6c5d, +0xbbba7738,0xbb98a263,0x396b5ae3,0x3bf5759f,0x3abc17ff,0x3a912105,0x3a52afab,0x3b3e06b0,0x3ae7281a,0xbb7af1eb,0xba10c289,0x3a7ea264,0x3af243ff,0x3a0d7b75,0x3b23465f,0x3b94f543,0x3cb4802b,0x3d064964,0x3d146185,0x3d004592,0x3d38d12a,0x3d3b9ff1,0x3d2c5e0c,0x3cfc3936,0x3c83a27b, +0xbc54df5b,0xbd01c2b2,0xbd1c82c0,0xbd05cf5d,0xbcdd7661,0xbcbbd0cf,0xbc9495fa,0xbc87e089,0xbc5bfdbf,0xbc828ef1,0xbc8d7e75,0xbc484d1c,0xbc768713,0xbc5d77c9,0xbc144675,0xbc1ec0cf,0xbbd8f0c2,0xbb7142c3,0x3b7926e5,0x3c28088f,0x3c88683a,0x3c7a23d0,0x3c8171d6,0x3c9cd8cb,0x3cc1e8d4, +0x3ce767e1,0x3d0b72e4,0x3cdec17f,0x3cdb1a57,0x3d0e8c62,0x3d2681d6,0x3cec34b5,0x3cf4821e,0x3cf7005c,0x3d011c70,0x3d1334c0,0x3cfeeacf,0x3cdf2995,0x3cab40f8,0x3c14dde9,0xbb51ea21,0xbc872521,0xbc7288aa,0xbc6a6df1,0xbc66c3a0,0xbc375b84,0xbc0bed03,0xbbcc8869,0xbb571e15,0xb96101aa, +0x3b0c571f,0x3b622a99,0x3bb1fdaa,0x3bcacecc,0x3bee551b,0x3c0ac9ae,0x3c0deae7,0x3c457c2d,0x3c7610c7,0x3c9163f4,0x3cab6cd3,0x3cb9f242,0x3cd5f3b3,0x3cdda445,0x3ce0adaf,0x3cdafba0,0x3ce5d3b8,0x3d042838,0x3cf0e79c,0x3ce3d1dd,0x3cd8f41b,0x3cc54ece,0x3cb7b9cd,0x3cab7917,0x3ca82ada, +0x3ca41f37,0x3ca915a8,0x3ca3d8ae,0x3c99a89d,0x3c8a90c6,0x3c809a3b,0x3c6bb408,0x3c51fa8d,0x3c346769,0x3c15aa2a,0x3bd9dc8f,0x3ba4df20,0x3c4533e8,0x3c3cf90d,0x3c63dc44,0x3c80e04d,0x3c9bde6a,0x3ca8f5c7,0x3cb63e76,0x3cc07b67,0x3cccfd83,0x3cd4589d,0x3cde1952,0x3ce90376,0x3ce9c900, +0x3ceec827,0x3cf5f67b,0x3cf28a54,0x3cdde36f,0x3cd55e4b,0x3cd44f22,0x3ccfded6,0x3ccdbf22,0x3cce4cb1,0x3ccd41d0,0x3ccaeba4,0x3cc52ae3,0x3cbea183,0x3cbb9a42,0x3cb48580,0x3caf204c,0x3ca8ac20,0x3ca37a05,0x3c9f2693,0x3c9beaa2,0x3c98d478,0x3c987cc5,0x3c89b1e6,0x3ca404e1,0x3cabd38a, +0x3cba4afd,0x3cb2d932,0x3cbbd3e7,0x3cc5daf0,0x3cc82ce7,0x3ccb027e,0x3cce1735,0x3cd28008,0x3cd6ee38,0x3cdb089c,0x3cdd0711,0x3cdab408,0x3ce24558,0x3ce0aea4,0x3cee5e3f,0x3b928910,0x3b537a8c,0x3b4267e6,0x3b53db07,0x3b6b9d7c,0x3b5db4be,0x3b9cc704,0x3b9ed28b,0x3b6a2add,0x3b860bb1, +0x3b62c972,0x3adcc66d,0x3afb7c6c,0x3b180c48,0x3b6e91b8,0x3b80d0ac,0x3b8bd748,0x3b8e1cf3,0x3b97063c,0x3b9f42b7,0x3badc40d,0x3ba9b3ba,0x3ba0e2a0,0x3b8d5e8e,0x3b8a315e,0x3b7138df,0x3b398912,0x3b4ff901,0x3b682549,0x3ba1ba37,0x3b635457,0x3b501e36,0x3b78bc4e,0x3b572c6e,0x3b8425f6, +0x3bc041ff,0x3b7891c3,0x3b523876,0x3b28995c,0x3b4dadf6,0x3b34da0a,0x3acd75a9,0x3b9cbe14,0x3bb167f3,0x3b204dec,0x3b904db0,0x3b20c9c6,0xbb0f27ba,0xbb2cce69,0xbadf116a,0x3b1b1552,0x3b7bdfed,0x3babc95a,0x3bb0d2dd,0x3bcaf421,0x3be37a20,0x3befdbef,0x3c024d53,0x3c062e28,0x3bd79c94, +0x3bb8b77e,0x3b932e71,0x3b50c855,0x3b6618e8,0x3b8b8b71,0x3bf277fc,0x3b97abf3,0x3b8479e3,0x3baddc6a,0x3b269579,0x3b83796b,0x3c35a3d6,0x3bc53dc1,0x3af8ac14,0xbacb9b8f,0x3a8b4a66,0x3b173c69,0x3a60e1a7,0x3bf9bae2,0x3c0e6234,0x3a848c15,0x3bc128ee,0x3abaa4a9,0xbc124b51,0xbc0f45d2, +0xbbd45916,0x3aceee60,0x3b647063,0x3bbaa052,0x3bccbb3b,0x3bf8657e,0x3c190f1a,0x3c2d34fd,0x3c4ff8a2,0x3c4f1e4d,0x3c20f34d,0x3bfb205e,0x3ba5d660,0x3b35b015,0x3b16184e,0x3b9c8829,0x3c365fe2,0x3b9c5730,0x3b610f0e,0x3bed8ee5,0x3afee01b,0x3b7ab090,0x3c8d69b0,0x3bc2c8ee,0x3b9cea16, +0xb96a17e7,0x3b07e33a,0xb8a21101,0xbba4a0b3,0x3b8e38d7,0x3bd1bf57,0xbb2242dd,0x3bc82117,0x3914c4ec,0xbc8b038e,0xbc9ce7da,0xbc76835f,0xbae4f450,0x3b5103ff,0x3bf2a668,0x3c0c24b7,0x3c27de78,0x3c52d993,0x3c5e62fe,0x3c8a4ef6,0x3c8d776d,0x3c7bd918,0x3c417fbe,0x3bf3eba0,0x3b4c2329, +0xba8e77b3,0x3ad23d81,0x3c4212b0,0x3bd7bbe7,0x3b8e7126,0x3be38554,0xbade6054,0x3b6d8ce5,0x3cd14f32,0x3c371d40,0xbc658939,0xbbfe1a64,0xba851877,0x3c0d30b3,0x3ca39904,0x3c925b55,0x3c7699ab,0x3c87a905,0x3a8de25b,0xbb8e916c,0xbb42fb77,0x3b2c0f1c,0x3b767b0d,0x3b914591,0x3b23a259, +0x3ac4af45,0x3b12bd22,0x3bcbfc58,0x3c26a236,0x3c22c729,0x3c9eac11,0x3ca9f308,0x3c61c87a,0x3c2b535b,0x3be7cd04,0x3b0e9726,0x3b8e97fd,0x3b5bfb0c,0xbb07b148,0xb861b252,0x3b9ca103,0x3c3cc5c7,0x3c73b705,0x3c0fdb6e,0xbb5a1e42,0xbc3d2d73,0x3b7e0498,0x3d232f72,0x3c256ba5,0xbc2caa55, +0xbc8cb309,0xbd16deec,0xbcf8fa99,0x3b34d5ff,0x372ff6b4,0x3b8397e0,0x3b90a7cc,0xba9752ba,0xbba69b78,0xbb9bdbfc,0xbbd1cee9,0xbb8d76b6,0x3b2dba9c,0x3b867916,0x3bd02608,0x3c310343,0x3b436ec3,0x3b0d7882,0x3bb9fe92,0x3ba0ef89,0x3bb4bd48,0x3b295586,0xba4b5ce7,0xbb290ba9,0xba7b4204, +0x379b1948,0xbb316399,0xbbd52107,0xbbcd99ae,0xbb8a3495,0xbb38772b,0xbbeb5d50,0x3b9facce,0xba8ec0c4,0xbbc05d1c,0xbaf22758,0xba60ce9f,0x3c7fd418,0x3c9998fe,0x3bcb0f6f,0x3b35d074,0xbb177469,0xbbe3acf9,0xbc2c670d,0xbbf2038d,0x3b1be089,0xba308f80,0x39748041,0x3b9d39c8,0x3bb7b47e, +0x3c1f5b3e,0x3cacc2d3,0x3bb7274d,0x3b4b85ce,0x3c09b10e,0x3ba58341,0x3b4299f4,0x3b088d5b,0x3b11dfad,0x36b81441,0x39c46944,0xbb92420e,0xbbf49a3e,0xbc07a89c,0xbbe52daf,0xbc4ee1ad,0xbc9a20a3,0xb9595ac5,0xbd432574,0xbce0baa1,0xb9c0daff,0x3a599338,0xbcb7f9cc,0xbca45652,0xbc99c230, +0xbc960900,0xbbb4b698,0xba0db715,0xba42f9f8,0xbbde79a0,0xbc1d5cd0,0xbbf673e4,0xbc55b62c,0xbc116542,0xbb5f52d7,0x3b36ef13,0x3bd75f99,0x3c4d4fa3,0x3a9d2dcb,0xbb2e4e35,0xb9822c55,0xb941bd40,0x3b071a9c,0x3b108203,0x3a297cfe,0xb989006f,0xb7a07483,0xbb823c3d,0xbbe0907b,0xbc0e8c2c, +0xbbfaa4aa,0xbc966911,0xbd0f0215,0xbd324099,0xb8cfb17d,0xbcfc54b4,0xbd62ac76,0xbd5823ac,0xbd28513d,0xbc945f1c,0xbbebdce8,0xbc16387f,0xbc0f4125,0xbc06c874,0xbb6ea728,0xbc307221,0xbc38c9a8,0xbb9b2b64,0xbbe76f7c,0xbc0a89cd,0xbc020ae9,0xbb0b2ed1,0x3a726d10,0x3bb1bb14,0xbb031b5a, +0xba9bd3f7,0x3bb06ed8,0x3b4c9e0d,0x3a9f8e4a,0xbb1c8304,0x3ac37d3e,0x3b2a1033,0xba1968d0,0xbb787822,0xbb9abd37,0xbbac4014,0x3b78fe9e,0x3c4add97,0x3ca3b18c,0x3c0af91d,0x3d521d29,0x3d49a24e,0x3d220cb3,0x3cb35474,0xba5816af,0xbcd9cc55,0xbd168c0b,0xbd0cf57e,0xbcd5cc14,0xbca4f796, +0xbc971123,0xbc3ede1a,0xbc1a33e6,0xbc1c7258,0xbc1cff4a,0xbc257f93,0xbc057d28,0xbc261bfc,0xbc0db2ea,0xbb952537,0xbc08d16d,0xbbe97419,0xbb9a2a9f,0x3b26be0e,0x3c0fd026,0x3c5eadce,0x3c6205db,0x3c70fdbe,0x3c8b40aa,0x3ccc0ca9,0x3cfa257e,0x3d0fb09f,0x3cfe8563,0x3d034e2a,0x3d27a8c7, +0x3d378157,0x3cd8d3f7,0x3cdb7ef1,0x3cb7d463,0x3ca7ad80,0x3ca6f6ef,0x3c581494,0x3b91b234,0xbbdd6fba,0xbc4b6dc1,0xbc951696,0xbccedb8b,0xbcbbe228,0xbcb0cecd,0xbcaa189b,0xbc9398cf,0xbc7e47e1,0xbc517e4c,0xbc16fee8,0xbbd9ee68,0xbb16fee0,0x3b0b1ed8,0x3b75e10e,0x3ba74d13,0x3bcd467b, +0x3be97f11,0x3c03a5dd,0x3c4b4110,0x3c881ef1,0x3cab9a73,0x3cbe42e7,0x3cd1d1ab,0x3cecaded,0x3ceb0ac3,0x3ceabb08,0x3ce4c281,0x3ce43cc8,0x3ce096b8,0x3cbb4c1b,0x3cb15723,0x3ca6981f,0x3c95dd65,0x3c87b11d,0x3c82b838,0x3c7e3c6d,0x3c6a11e1,0x3c5101ac,0x3c344740,0x3c0d399e,0x3bc7c16c, +0x3b83c731,0x3b6716eb,0x3b388d86,0x3aec7bf8,0x3a8132a6,0xb81e0d5a,0xbac39dcd,0x3b798570,0x3b7506ca,0x3bd69585,0x3c1b6a1a,0x3c55c1ac,0x3c6f09eb,0x3c84d7eb,0x3c91eafa,0x3ca4f71f,0x3cae56cd,0x3cbbf5a2,0x3cd1e935,0x3cce3d61,0x3cd242de,0x3ccfb21f,0x3cc3523a,0x3cbffb11,0x3ca0f6d8, +0x3ca52150,0x3ca0f580,0x3c9f61ed,0x3ca02106,0x3c9e4df0,0x3c9d7e25,0x3c942aaf,0x3c8d6a61,0x3c882cb9,0x3c80c2ab,0x3c745ff7,0x3c605a29,0x3c62407a,0x3c60980f,0x3c60ed9d,0x3c5f127a,0x3c6334a1,0x3c4f6436,0x3c876f1d,0x3c995248,0x3cb48331,0x3c9268df,0x3ca898f1,0x3cc72a5c,0x3ccb2fca, +0x3cce25e2,0x3cd09cba,0x3cd6e571,0x3cdb5d46,0x3ce0cd86,0x3ccf19dc,0x3cba463b,0x3ce16c7f,0x3cceafc2,0x3cbd7834,0x3babdd54,0x3b919465,0x3b8e1c3a,0x3b87109f,0x3b907d8e,0x3b86e394,0x3bb2cd42,0x3bb3c3d0,0x3b84ce46,0x3ba5a476,0x3b931a03,0x3b203316,0x3b30d39d,0x3b3d4f42,0x3b606fe6, +0x3b914374,0x3ba0dd21,0x3ba36154,0x3bacc3e0,0x3bb5d932,0x3bc833af,0x3bc2281a,0x3bb7e0a9,0x3b9e0776,0x3b9f0e42,0x3b9367ad,0x3b75bc5b,0x3b83ef8b,0x3b8fa2e9,0x3bb888bf,0x3b8c9e3f,0x3b8567ab,0x3b9d3981,0x3b88bbbf,0x3b9ca6f1,0x3be5bb9b,0x3b9fc776,0x3baba54c,0x3bb37aad,0x3b903912, +0x3b66317b,0x3b22dcc1,0x3bb6ab83,0x3bcef94b,0x3b3d2900,0x3bc7c668,0x3b8f6abb,0xba972734,0xbac58f3e,0xbab43bd3,0x3a317207,0x3b7ad24c,0x3bbb3931,0x3bc363f4,0x3bdc164b,0x3bf648cc,0x3c0c263f,0x3c0d6d64,0x3c0c2308,0x3bd96a0c,0x3bc3dbb4,0x3ba808f1,0x3b868d45,0x3b935f59,0x3ba97e16, +0x3c00246b,0x3bb07b30,0x3b9c2efa,0x3bc9372c,0x3b5b2515,0x3ba42346,0x3c4bbd38,0x3bfe58ab,0x3b8436d6,0x3b0d433d,0x3b2e4f3f,0x3b6f25fd,0x3b01afa5,0x3c07bbbe,0x3c10250b,0x3a77d547,0x3c01dfcd,0x3b8bddb1,0xbbe3d1ce,0xbbf3dc1e,0xbbdcc678,0xbb33fb0f,0x3b308fe5,0x3bc23124,0x3bd5800c, +0x3c0356a9,0x3c227b9d,0x3c42e3a7,0x3c55b178,0x3c4bed6f,0x3c0b7dad,0x3bf4f9e8,0x3bb62aaa,0x3b661446,0x3b55aa8c,0x3baa975d,0x3c3568ff,0x3ba3adf1,0x3b89a734,0x3c058cc0,0x3b2df2c6,0x3b991b13,0x3c998e2a,0x3bff9bf5,0x3bf72ef1,0x3bb37bbd,0x3b8a7a4d,0x37af7bcc,0xbb8d37a7,0x3ba16e27, +0x3c01bf09,0xbb1ba66e,0x3c0f987d,0x3b8140be,0xbc69c766,0xbc8b975b,0xbc8a6af5,0xbc1eba4b,0x3a003de5,0x3be4b9ff,0x3c0ea469,0x3c28a2b9,0x3c5248cf,0x3c76cb92,0x3c8f629c,0x3c8e67c9,0x3c5c62d1,0x3c3864dd,0x3c015f44,0x3b86435a,0xb9dd5650,0x3b499f57,0x3c69027f,0x3bd7b8b9,0x3b92f229, +0x3c0b323b,0xbace40ac,0x3ba01841,0x3cec7151,0x3c6ccc64,0xbc3c4e95,0xbb15d0aa,0x3add3850,0x3c52aee2,0x3cfc942c,0x3c942024,0x3c3a2718,0x3c38dc9a,0x3bf8b654,0x3b8e469e,0xbb364e77,0x3ba36a87,0x3bb5c4e8,0x3b72bb17,0x3b151c65,0x3a90c7c3,0x3ad49231,0x3b9cff98,0x3c277aa7,0x3c6b240e, +0x3c9bfbce,0x3c9c9324,0x3c4e6e23,0x3c3578aa,0x3c10de99,0x3b759220,0x3ba710d0,0x3b5bb0ba,0xbb06088e,0x39649818,0x3bd51ea5,0x3c6be958,0x3c86c8ba,0x3c009a3f,0xbc038253,0xbc46472e,0x3b68a407,0x3d2a3a14,0x3b90b541,0xbc72da36,0xbc80bae5,0xbcf22557,0xbca48bac,0x3c3b7ffb,0x3ba112fd, +0x3bb2237f,0x3c1f57d4,0x3bc06ba5,0x3ab7bb01,0xba9e2059,0xbb90b47a,0xbb8382d0,0xbad220dd,0x3b0128de,0x3b8fa16c,0x3c11b622,0x3b453cd1,0x3b590f95,0x3bf4bef2,0x3bc0a041,0x3ba73a94,0x3b80d660,0xb8b92859,0xbac6a0c0,0x39577758,0x3b5159d7,0x3a4fbac4,0xbb680bf5,0xbb2b8ee5,0xbb1d5058, +0xba0cd1a5,0xbc0c7a26,0xbb11cf38,0xbb9fd620,0xbb8b9acf,0x3a11efac,0x3a1bb05e,0x3c690834,0x3c70fded,0x3beacc23,0x3bb12c35,0x3aee0b40,0xb835dd73,0xbbd63edf,0xbbb2e09d,0x3b3f1b51,0xb90c6695,0xb88391c7,0x3ae40411,0x3bc85660,0x3c1b88ce,0x3c9b74ae,0x3bc11aec,0x3b1bedfa,0x3c182bea, +0x3bd5b20d,0x3b62c27d,0x3ae5305e,0x3b402c92,0x3a2323e2,0xb98c39d3,0xbba99b15,0xbbd823dc,0xbbbdbc63,0xbc3b51d1,0xbc7c1008,0xbc86efd8,0xbb6b5a9c,0xbd00f626,0x3982581f,0x3c1bbbb5,0x3b23332a,0xbc864793,0xbcae9e00,0xbc9e990a,0xbc5f13d6,0xbbf053db,0xbbaf0ca1,0xbb1e9814,0xbc08ce33, +0xbc1a84cb,0xbb56ce62,0xbb3c4b44,0xba876c9b,0xbb25de03,0x3b2df9c0,0x3b965691,0x3becc6ca,0x3b815253,0x3ac42bcc,0x3ac1ec74,0x3ac4cf46,0x3b574f39,0x3b888713,0x39330cbc,0xba27cf83,0x3a9a9449,0xba4443df,0xbb833ba5,0xbb835756,0xbbaa2d76,0xbc7ef384,0xbcf29889,0xbd16a94d,0xbcd64de6, +0xbd6e106c,0xbd8cedbf,0xbd631d4a,0xbce83da0,0xbc66a2bf,0xbbc55fdc,0xbba85754,0xbb5eb0be,0xbb720ca1,0xbb8bd23f,0xbc0248fc,0xbc31b855,0xbc01b05f,0xbc02ea83,0xbbdbeb33,0xbbaea7f9,0x3b6349d5,0x3bc037b0,0x3bb63563,0xbacea83e,0xba21b9a3,0x3bdee664,0x3b1b69e6,0x3a468f41,0xb8dfb8ca, +0x3b6049e2,0x3b6a7732,0xbb0b458d,0xbbfb4a5e,0xbc26b531,0xbc30da03,0xbc3055e1,0xbbb4e2e8,0x3b84564a,0xbc2f003e,0x3d3da296,0x3d1fe898,0x3cbb7ef5,0x3b7bd3de,0xbc9fccc6,0xbcfb06cf,0xbd0411eb,0xbce9a28c,0xbc9b1f74,0xbc63b1e4,0xbc6be731,0xbbf5e227,0xbb9b8562,0xbb943a6e,0xbbaa03b7, +0xbb9d50c1,0xbbe9c125,0xbbd310a8,0xbbb519f2,0xbb273cbb,0xbb948ea0,0xbb87b2c4,0xbacfadc4,0x3b40b94e,0x3be005bf,0x3c0537a2,0x3c2e71f1,0x3c594252,0x3c7dfc18,0x3ccab25a,0x3cf37918,0x3d029fd5,0x3cf85536,0x3d007745,0x3d1c7017,0x3d1d3a79,0x3cd43e6f,0x3ccca838,0x3c8c4e94,0x3c54368f, +0x3bff1565,0xbaa3fb7b,0xbc4c90c5,0xbccba295,0xbcd97955,0xbceab74b,0xbd01200f,0xbcec3696,0xbcd9a766,0xbcc55d9e,0xbcbb2242,0xbcb1aa89,0xbca7e48c,0xbc8af221,0xbc6d43f9,0xbc2d0bc6,0xbb8ce7f3,0x39453eb4,0x3b8f4b83,0x3bde1f51,0x3c136563,0x3c408468,0x3c764281,0x3c8e7747,0x3cad7e4e, +0x3cb730c1,0x3ccfe3a0,0x3ce6aafe,0x3ced8891,0x3cf85d55,0x3d0256ba,0x3cf059dc,0x3cad8447,0x3c7b5f86,0x3c61d4b4,0x3c411ceb,0x3c24b4a9,0x3c08dedf,0x3c040044,0x3be900c4,0x3bc99784,0x3b8ed44a,0x3b2d5bf4,0x3a223fca,0xbadfbb2b,0xbb85df04,0xbb47f89a,0xbb0b329a,0xbabde07b,0xba440530, +0x38f05675,0x3806c039,0x3adcd00b,0x3a0d1794,0x3ac12365,0x3b786c15,0x3bb10cbe,0x3bb0a41b,0x3bf603f3,0x3c233413,0x3c5937c0,0x3c7407ee,0x3c893ba2,0x3ca893a3,0x3c9ffebe,0x3ca2fc60,0x3c982330,0x3c86b109,0x3c6c6178,0x3c19bc8d,0x3c262f9d,0x3c1cc06d,0x3c15c288,0x3c112331,0x3c075e27, +0x3bff48c0,0x3be35284,0x3bcf70ff,0x3bbe016a,0x3ba49368,0x3b91632c,0x3b5ae26e,0x3b8a2ccc,0x3b9718fd,0x3ba8d673,0x3bb479b9,0x3bc5f285,0x3bc4e5e9,0x3c1d3ade,0x3c490a10,0x3c8995c4,0x3c1a2adc,0x3c54e80d,0x3c9365d3,0x3c9ad283,0x3c9edf15,0x3ca1cc33,0x3caa46a2,0x3cb06283,0x3cb8e8a4, +0x3c91480e,0x3c5c2de0,0x3cb45631,0x3c8ed291,0x3c2505b7,0x3bb83ebe,0x3baa6bfc,0x3ba3a5a0,0x3b9f33a9,0x3ba55b77,0x3b989a79,0x3bbcff3c,0x3bbbc641,0x3b937696,0x3bb07072,0x3b9fd757,0x3b4a6c11,0x3b534576,0x3b54b5bf,0x3b5bb710,0x3b969111,0x3ba88671,0x3bac7fb5,0x3bb6f3ad,0x3bc0f3e6, +0x3bd6ab44,0x3bcab460,0x3bbfd7b3,0x3ba72b57,0x3ba56968,0x3b9d5841,0x3b906d32,0x3b989184,0x3ba12c64,0x3bbd22b3,0x3b9d17a6,0x3b999a8f,0x3bacca78,0x3b96c2a0,0x3ba29f75,0x3bf250a4,0x3bb457b5,0x3bf169cf,0x3bdffe4c,0x3bb576d0,0x3b8f21b3,0x3b48fc68,0x3bbc223f,0x3bced4a9,0x3b560b63, +0x3bcff0be,0x3ba1b974,0xb98721d6,0xba12322c,0xba438b02,0x3965917a,0x3b7eedf9,0x3bbe9579,0x3bcb2b83,0x3be900b5,0x3c03bcf4,0x3c1db430,0x3c13b35a,0x3c0ad838,0x3bd4dfb0,0x3bbf13d0,0x3bac4f58,0x3b96576a,0x3bad9a16,0x3bc274d2,0x3bf53c47,0x3bc72d33,0x3baee907,0x3bc75e2b,0x3b70bccd, +0x3bb2a4bf,0x3c4ce5e7,0x3c126bc2,0x3bed7590,0x3bab0645,0x3bb1ad44,0x3bc23359,0x3b5a1e9d,0x3c0f16ee,0x3c0537d4,0x3b10be34,0x3bfcf8f0,0x3b968778,0xbb8bccfe,0xbbbc1002,0xbbc231d7,0xbb8889a5,0x3b0eda6d,0x3bc07ddc,0x3bd53853,0x3c0877d2,0x3c29058b,0x3c57977c,0x3c51324d,0x3c40a8c9, +0x3bef7432,0x3be07fa8,0x3bb52219,0x3b753d61,0x3b8dd9cd,0x3bbd022e,0x3c1f12c5,0x3bb60a40,0x3ba2b357,0x3c027342,0x3b44ca55,0x3b9e6121,0x3c94a545,0x3c196a68,0x3c5db63a,0x3c308272,0x3c07fc7d,0x3b0d5264,0xbb6f7ea4,0x3b966492,0x3bf91116,0xbaab761e,0x3c0343ec,0x3b93d338,0xbc2ae749, +0xbc605a97,0xbc81a9d6,0xbc3a557f,0x3925ed1e,0x3bdb0d60,0x3c0d2e1f,0x3c35979f,0x3c664c0d,0x3c93bdb1,0x3c9317d3,0x3c893217,0x3c33a85d,0x3c21ed63,0x3c02a1c3,0x3b9108b4,0x3a58e9d2,0x3b8f2812,0x3c719579,0x3be4bac1,0x3ba3394b,0x3c075939,0xbace1dda,0x3bc6dddd,0x3cf7aef6,0x3c9b762e, +0xbc301907,0xbad6a749,0x3b17643d,0x3c900dfa,0x3d1f759a,0x3ca343ca,0x3c163144,0x3ba729f9,0x3c384ea9,0x3c054ca9,0xbc010122,0x3bd9e224,0x3bff6e21,0x3a9a9049,0x3a93c356,0x3a6c28f3,0x3b222840,0x3b365012,0x3be48bd7,0x3c7bf49b,0x3c840548,0x3c74ea6d,0x3c447590,0x3c3e330f,0x3c28e345, +0x3b9770d4,0x3baea6ff,0x3b442dfc,0xbb2bb82e,0x3a512d5e,0x3c107722,0x3c8a7475,0x3c912313,0x3be4bf72,0xbc42ff9c,0xbc67ace8,0x3bbe7541,0x3d14ee18,0x3a3b147b,0xbc861e23,0xbc90429a,0xbcb2c66c,0xbc35a5b2,0x3c7899a3,0x3bc95678,0x3bab123a,0x3c5d18d9,0x3c16cd33,0x3ba398d5,0x3b92d6ec, +0x3a0755bd,0xba457dfc,0xba12ab16,0x3b6cf791,0x3bb187e0,0x3c0ebb66,0x3bc156d2,0x3bd19db8,0x3c0eb6dc,0x3bd60750,0x3b8b15ae,0x3b90c74b,0x3a575330,0xb801b137,0x3b2c74eb,0x3ba3964a,0x3afac755,0xbb1715f9,0xbba3dfe5,0xbb9b262f,0x3b4aa1ac,0xbbb269c7,0xbb876acf,0xbb96b893,0xbbd53de3, +0xbb151b95,0x39398ba6,0x3c0fbf2c,0x3c14e060,0x3c37b64c,0x3bf6f9c0,0x3b8a0ae7,0x3b7328e5,0xbbd7cebe,0xbbca70ae,0x3abc91af,0x3b0f9c23,0x3b81fa62,0x3b7543ab,0x3c0efcad,0x3c1e6bba,0x3c56e726,0x3bc5eec4,0x3b3ab6df,0x3c00ce32,0x3bfa2d09,0x3b8a2d0d,0x3ab5a0a6,0x3b87476c,0x3aee3e7b, +0xba5a71c2,0xbba4c319,0xbbb62fff,0xbb6738d2,0xbc52705f,0xbc636702,0xbc46e83f,0xbba356b6,0xbc82ae47,0x3bd83f4f,0x3bf4f1f9,0x3a5fd6ec,0xbc02ff19,0xbc746279,0xbc7fd330,0xbc282e72,0xbc137408,0xbbdd6447,0x3a226e7b,0xbbd5a102,0xbbde77f3,0x3af26d08,0x3b7ed206,0x3b96d1c7,0x3b327cd0, +0x3bd112fa,0x3bd8cec5,0x3b8fa55c,0x3bcb08dc,0x3bd50361,0x3ba4d926,0x3b9abf2f,0x3b98f9f1,0x3b9ec0a7,0x3a137b01,0xb98f867e,0x3b461561,0x3b02594f,0xba9cfa11,0x3aa24432,0xbb7960b5,0xbc4d36a5,0xbcad9561,0xbccf11f3,0xbd216945,0xbd80a5cc,0xbd5d91ec,0xbd2b37ad,0xbcbe061d,0xbc92aad7, +0xbc4ee6ab,0xbbe23d96,0xbb236261,0xbae58ee8,0xbbe33f24,0xbaed0338,0xbb457bbc,0xbbd77638,0xbbd51072,0xbb933cc3,0xbb100822,0x3b8fd9bb,0x3bef94f2,0x3bd39330,0x3ac4acbc,0x3ab26453,0x3bc1ae08,0x3b0b231d,0x3ae0ef49,0x3b1ebb8f,0x3b903064,0x3b321bac,0xbb84bff9,0xbc2b4470,0xbc5a0c2b, +0xbc506183,0xbca6b968,0xbc93acbd,0xbc06e281,0xbcba3b73,0x3ce83ef0,0x3c83a517,0xbb0e1f1d,0xbc6d9233,0xbcd74df4,0xbcd0e73f,0xbcaec30c,0xbc85f939,0xbc30e00d,0xbc17ab21,0xbc511b4a,0xbc0d0507,0xbbd7db20,0xbbb25336,0xbb9c3984,0xbb4d633f,0xbb50280a,0xbb135255,0xbb13388c,0xbb081bf7, +0xbb09e0a3,0xb9889505,0x3b5a007e,0x3ba7f53d,0x3bd64822,0x3bad454a,0x3bfe51ee,0x3c388673,0x3c5a8d51,0x3ca6af64,0x3cc5bd00,0x3cd369b3,0x3cc7ca15,0x3cbe711a,0x3ccd65a3,0x3cb94cba,0x3cc78b1e,0x3cb15b08,0x3c3e87c9,0x3baba83c,0xbb85957b,0xbc4e09ac,0xbcbb025b,0xbd0995e9,0xbd018649, +0xbcf85af5,0xbcf11cac,0xbce3018c,0xbcd6c86d,0xbcc89572,0xbcc01ebe,0xbcb8de3d,0xbcb02ef0,0xbc954286,0xbc6fbb93,0xbc3e9c18,0xbbfd56d5,0xbb129879,0x3b12ba0f,0x3bc1de27,0x3c218f03,0x3c61b7cd,0x3c8358c2,0x3c87f4d4,0x3c9b9154,0x3ca45114,0x3cbbe5f4,0x3ccf2b4a,0x3cdd9cec,0x3cf4ca9f, +0x3d07319c,0x3ce6a190,0x3c564846,0x3be91e5c,0x3ba98c0a,0x3b4cbebf,0x3ac90dc9,0xb8d9c386,0xba6b14b7,0xbb333931,0xbb550189,0xbba11974,0xbbc95d26,0xbbf3a4c3,0xbc0d6d94,0xbc26ef9f,0xbbfe9e97,0xbbb87a58,0xbb76da7b,0xbb06f0f7,0xb9dd7dcc,0x3a9354a1,0x3b05b29e,0x399ae499,0xb8391220, +0x3a5ac1f3,0x3a3f3d9a,0xb95298ba,0x3ae495f9,0x3b84306d,0x3be54931,0x3c0beda3,0x3c2072be,0x3c5a6ab4,0x3c3f0fc3,0x3c3e16e2,0x3c2aa7bd,0x3c05c994,0x3b8f6969,0x3a304f82,0x3a937f61,0x399fcd40,0xb9c132d6,0xba973c7f,0xbb04fb98,0xbb3cd27a,0xbb520912,0xbb63df03,0xbb77c0b7,0xbb8a46f1, +0xbb96fdb3,0xbbb58521,0xbb8fd5a6,0xbb744368,0xbb3ccc0a,0xbb0baa23,0xbab1be63,0xba506d06,0x3af2700a,0x3b6e8f76,0x3bed6115,0x3a98215f,0x3b7cb764,0x3beabfe2,0x3c06300b,0x3c1028bc,0x3c16d47a,0x3c267968,0x3c33bb9c,0x3c4420a5,0x3beb11fa,0x3b6de06d,0x3c38dbdc,0x3be5bc10,0xbab5c2d5, +0x3bb28a54,0x3bafc2a3,0x3ba0a7c1,0x3ba7ef1b,0x3baa5e0e,0x3b9e6b72,0x3bb0d96c,0x3babdf91,0x3b8f374c,0x3ba2ee40,0x3b95f4ac,0x3b512a1f,0x3b5956d5,0x3b57cb37,0x3b57627f,0x3b90a12d,0x3ba179e7,0x3ba5aec2,0x3bafe717,0x3bba9be2,0x3bcdc6c9,0x3bc52644,0x3bbf7d52,0x3bb0c289,0x3b9f5513, +0x3b9d20e1,0x3b9e90db,0x3baad8ab,0x3bb0d402,0x3bbcb24a,0x3bac8f91,0x3bab008b,0x3bb22655,0x3b99a74d,0x3b9869b9,0x3bef1394,0x3bba299d,0x3c05f637,0x3bcf49c6,0x3bc20ca7,0x3ba39859,0x3b83f465,0x3bb05672,0x3bbafa6e,0x3b72a4cc,0x3bba9745,0x3b917e29,0x38bc8c87,0xb79b1239,0xb94075aa, +0x39cbfeb4,0x3b6f9ac4,0x3baf018a,0x3bbe517f,0x3be0a36e,0x3c006e77,0x3c1e7f85,0x3c14c8b6,0x3c01b622,0x3bd2aa4b,0x3bb031d2,0x3ba2ece4,0x3b939a24,0x3bb9b023,0x3bd0e647,0x3be21011,0x3bd45942,0x3bb5fd67,0x3bb10e6f,0x3b6be48d,0x3bab858b,0x3c371e9f,0x3c0d24de,0x3c0c63f6,0x3bcb18bd, +0x3be4c3b0,0x3bfa2f46,0x3bb20ee6,0x3bf1a15c,0x3bc8cdee,0x3b25500b,0x3bc66cbc,0x3b5eec3a,0xbb6039c5,0xbb881ed8,0xbb9756ec,0xbb7fa6ac,0x3af6fd34,0x3bb0fca6,0x3bc482c2,0x3c02739a,0x3c1f8d79,0x3c5d23a3,0x3c441ce2,0x3c2d02c0,0x3be64f8f,0x3bc1fbc0,0x3ba3d600,0x3b5bd72e,0x3bae4e1d, +0x3bd069f9,0x3c0899c2,0x3bd32c63,0x3bbee3a2,0x3be348d3,0x3b3aa1be,0x3b88113a,0x3c7a9f23,0x3c11eb93,0x3c76c057,0x3c27fbb2,0x3c120619,0x3b8cdc33,0x39c51875,0x3b75c5d8,0x3bcbfbc9,0x3a74776c,0x3bcf02f4,0x3b51bea5,0xbc19360b,0xbc3e227d,0xbc628055,0xbc2fb522,0xb978bbbc,0x3bb40340, +0x3bf6a947,0x3c2c1aa5,0x3c65bbef,0x3ca4342a,0x3c943a5f,0x3c798eae,0x3c1dfaaf,0x3c0acc1f,0x3bf73353,0x3b7f0994,0x3b05ad8c,0x3bb382c5,0x3c66cb57,0x3c0156fd,0x3bb564d9,0x3bd939b6,0xbadd50ea,0x3bc2dd73,0x3cd9769a,0x3c99bb19,0xbc058ac9,0x3971df36,0x3bea7c23,0x3caf3108,0x3d261b8a, +0x3c90765a,0x3b9fcf8f,0x3a54a4bc,0x3c07c6a8,0x3bc9da4b,0xbc26b79b,0x3c4123cb,0x3c64fc78,0x3b057375,0x3b05d67c,0x3ae8e65c,0x3b8c0574,0x3b3a5afc,0x3b8a2a53,0x3c40571e,0x3c3b5eaa,0x3c283634,0x3c30f8d3,0x3c378b3b,0x3c342cf6,0x3bad6d6d,0x3ba60c40,0x3b2326a7,0xbb4e1966,0x3b1326b7, +0x3c3e2c29,0x3c99202c,0x3c88a0cc,0x3b8f2f86,0xbc8332b0,0xbc6adcdd,0x3c13b3d7,0x3ca8815b,0xbc0e9aa4,0xbca0ad27,0xbca53445,0xbc835497,0xbbbb8bd1,0x3c2ade6f,0x3bc49b61,0x3ba3ca0d,0x3bc0f0f1,0x3c194f76,0x3bfa7492,0x3b876a5b,0x3b2fd52b,0x3afefb33,0x3a2e3974,0x3bc342d6,0x3be9dad3, +0x3c0735d7,0x3c160a97,0x3c18090f,0x3c1eef7b,0x3be2eeb4,0x3b6f1ca1,0x3b90e975,0x3ae7e1ed,0x3ad9047c,0x3b9e5d34,0x3bad7342,0x3ac5e7a7,0xbb561171,0xbbe1e2c5,0xbb4e4dfa,0x3bd454a9,0x3b0c663d,0xbb55826f,0xbb720a10,0xbbf74107,0xbb8ceb57,0xbb28ae47,0x3b8e6185,0x3be89405,0x3c74d494, +0x3c3f0386,0x3bfbfc7f,0x3b8a232d,0xbb812c93,0xbb839677,0x3a0d1a1d,0x3b3e1563,0x3bb4f4c2,0x3ba0037b,0x3c3a2818,0x3c2fba1b,0x3bede268,0x3ba72f82,0x3b5be2fa,0x3bd15dee,0x3c045775,0x3b8ced57,0x3ac665ee,0x3b906c72,0x3b214509,0xb9e73caf,0xbb884827,0xbb83da3d,0xb95d399c,0xbc3c8609, +0xbc328a79,0xbbf0fabb,0xbb99fa6d,0xbbf88f37,0xbad76ba1,0x3b2ab70f,0x3b1a604f,0xbb5ec873,0xbb96eb14,0xbc0ac45b,0xbc4c926d,0xbc2b1f21,0xbbf46036,0xb9c178d2,0xb927cfc2,0x39acffce,0x3b2266c1,0x3bfdb9f5,0x3c0310c7,0x3bb3468c,0x3c1148a6,0x3c0e9767,0x3b9e7778,0x3c095d28,0x3c1aa690, +0x3c01e529,0x3bedc10f,0x3bb9fce8,0x3ba1a1a6,0x3ab05525,0x3a649318,0x3b894434,0x3b70e1e3,0x3a97c176,0x3bb28c81,0xbb873e71,0xbc2dc49d,0xbc576882,0xbc621a22,0xbd1d9b46,0xbd3a82cd,0xbcf15920,0xbccfe65e,0xbcc13c5c,0xbcb08743,0xbc94ce00,0xbc4cd33d,0xbae2924e,0x3abfbc92,0xbbd1e8f0, +0xba4c30af,0xba983f6c,0xbbad9ec3,0xbb4e0909,0xba721d8f,0x3b23fce3,0x3bc6bf24,0x3bf73a07,0x3bbb88a3,0x3b890089,0x3b70313c,0x3bbda167,0x3b46c822,0x3b51cccd,0x3b8ac8d1,0x3b7a735b,0x39e9d3fd,0xbbbf4bf9,0xbc3a1b0c,0xbc64c423,0xbc553717,0xbcbb4631,0xbcbd8ff0,0xbc87fecf,0xbce24828, +0x3bc65b8c,0xbbed514a,0xbcb12a66,0xbcc3ac20,0xbcab9efa,0xbc745b0c,0xbc02449c,0xba110007,0xbb9e1749,0xbc03d9f9,0xbc3af618,0xbc07ad47,0xbbe859a6,0xbbfb3ad4,0xbba24269,0xbb3d48d2,0x3b020491,0x3b05f01d,0x3ab0e09b,0xba823c8c,0xbabb082b,0x3a8994f8,0x3bcae1e2,0x3bc4d8de,0x3bd74ad5, +0x3bcbc61f,0x3bf128d8,0x3c1a6d27,0x3c117b59,0x3c468bd3,0x3c70a0fa,0x3c8637e3,0x3c8784be,0x3c5bed07,0x3c15ae9b,0x3bb39f32,0x3c9309cc,0x3c5717c2,0x3b538bbe,0xbb853887,0xbc7150f8,0xbca98218,0xbce2464d,0xbd0be8c0,0xbcee789c,0xbcc9ae96,0xbcad6412,0xbcaf7b38,0xbcaf907e,0xbcb2766d, +0xbca40e00,0xbc9a09b2,0xbc8de50d,0xbc65b3cb,0xbc1f95f4,0xbbda859a,0xbbb56dab,0xbaee2929,0x3a838c29,0x3b8e506a,0x3c0b7eea,0x3c427635,0x3c6b7995,0x3c7443b4,0x3c8f2b53,0x3c912c66,0x3ca01bc1,0x3caa50c5,0x3cb136c3,0x3cc79afb,0x3cdc7c45,0x3caba0d6,0x3bb8d0a8,0x3a8d9ca8,0xba802fbe, +0xbb2dd2ca,0xbb8892e4,0xbbb632d4,0xbbe2d5fc,0xbc1dfc88,0xbc257a21,0xbc42966e,0xbc4e4b55,0xbc5827e5,0xbc5a1490,0xbc623954,0xbc3c12d9,0xbc1a5896,0xbbfa5ba8,0xbbc3b14e,0xbb9ca800,0xbb3c5e9b,0x388b1866,0xbab8e287,0xbaaee1ad,0xba401446,0xba396a5d,0xbaaafd23,0xb954b99e,0x3a8739e2, +0x3b3e039e,0x3b73fd01,0x3b8f3620,0x3bd6ad7f,0x3ba4a732,0x3b911f88,0x3b78a66f,0x3af24a69,0xbb2c058e,0xbb95b345,0xbb9625c5,0xbbb57c01,0xbbcde175,0xbbf32caa,0xbc08ea9a,0xbc172de6,0xbc178c99,0xbc188402,0xbc1c359e,0xbc1f72b2,0xbc2444a6,0xbc2fd667,0xbc204ced,0xbc168127,0xbc0a08fb, +0xbbfca2d9,0xbbe2b433,0xbbdb92c6,0xbb8ac5be,0xbb448361,0xb9b2e018,0xbb8aa182,0xbb147fb5,0xb9b1a4b8,0x396d8c9a,0x3a26aba7,0x3a495fdc,0x3ab59ba1,0x3af5e3cc,0x3b2633b2,0xba06ffa7,0xbb2f676c,0x3afb6d64,0xba4608e3,0xbc04bbf6,0x3ba750a0,0x3ba6412b,0x3b9798b9,0x3ba67963,0x3ba70c88, +0x3b98113d,0x3ba35094,0x3b9da218,0x3b881b3d,0x3b93305b,0x3b88e7f6,0x3b4da8f3,0x3b5ac22e,0x3b5bb589,0x3b5de71d,0x3b8b15b5,0x3b985a2a,0x3b996f2b,0x3ba34565,0x3bac9be3,0x3bb8aa34,0x3bb5da48,0x3bb313de,0x3bad554a,0x3b940467,0x3b9271b7,0x3b96f0e3,0x3ba99e6a,0x3baed5a5,0x3baf408d, +0x3bac4786,0x3baa2ea8,0x3ba397ae,0x3b91d139,0x3b8d8fed,0x3bd3630b,0x3bad061e,0x3bf727c8,0x3bb8dd56,0x3bc49c1a,0x3bb1255a,0x3b8d271b,0x3ba02c60,0x3ba3fd4b,0x3b79b0f5,0x3ba01c04,0x3b8215d3,0x3a40d7e2,0x3a54236e,0x3a54aee0,0x3aa5cea9,0x3b7289a8,0x3b9fd54d,0x3ba62670,0x3bcb68d3, +0x3be70868,0x3c0d1b1a,0x3c0aa06f,0x3be9486e,0x3bd2e0df,0x3b9dbad9,0x3b91eea2,0x3b874be8,0x3bbebca2,0x3bd94328,0x3bcea121,0x3bd761a6,0x3bb432d0,0x3b91c337,0x3b612a99,0x3b977501,0x3c12fb3b,0x3bf36b45,0x3c00cb3a,0x3bbde629,0x3bf6ca83,0x3c0943db,0x3bb8702c,0x3bd6f398,0x3bb37806, +0x3b3146b1,0x3b99494d,0x3b30afc0,0xbb0b1d50,0xbb0b15fe,0xbb2900cf,0xbb15d43d,0x3b1421b8,0x3ba6230f,0x3ba5b95c,0x3bed7edd,0x3c0c2594,0x3c46919a,0x3c2e6c6e,0x3c15be6e,0x3befc412,0x3ba10b75,0x3b8bafc6,0x3b3020a8,0x3bc6c918,0x3be59462,0x3becea32,0x3be9aa4d,0x3bce84a4,0x3bae67fc, +0x3b30e6dd,0x3b693141,0x3c416b12,0x3bf16a09,0x3c52a5c9,0x3c00cf30,0x3c0a5ac3,0x3bc1993c,0x3affdf2e,0x3b516f9c,0x3ba0cd4c,0x3b054a37,0x3b99efd4,0x3b423125,0xbbd6886f,0xbc09726f,0xbc257818,0xbc0370c1,0x395c075e,0x3b8c6fbd,0x3bae9958,0x3c147276,0x3c4d9eb8,0x3c99e5b3,0x3c8bc0a7, +0x3c5be3a6,0x3c1db489,0x3bee9c22,0x3bd9010f,0x3b2749fd,0x3b4c9923,0x3bd737fc,0x3c4f3b0c,0x3c10721e,0x3bc3076f,0x3b955808,0xba925ea5,0x3ba8dcf4,0x3ca8f549,0x3c8027fc,0xbb5efab6,0x3b926396,0x3c43d3f1,0x3cb3cb60,0x3d176f62,0x3c830aff,0x3baf9512,0x3b39a43b,0x3b62a96d,0x3b0df954, +0xbbeb285b,0x3c85b59d,0x3c9ba0d2,0x3b97e290,0x3b9864fa,0x3b82d601,0x3bb707a6,0x3b6d23f5,0x3b377ad9,0x3bdbdd11,0x3bf37a47,0x3be66303,0x3c162e38,0x3c28c9e4,0x3c37ebe3,0x3bd3e216,0x3b9334c0,0x3af4d3c6,0xbb49db21,0x3b985259,0x3c6c1e94,0x3c9404d7,0x3c5a3a5a,0x3ac7f253,0xbc8c6304, +0xbc3b0d70,0x3c49cabe,0xb9ae2aec,0xbc78bc68,0xbc9635e1,0xbc9e47ef,0xbc5737ce,0xbbeac74c,0xbb9486e3,0x3b6324ce,0x3b95efd0,0xbb32be40,0x3c220214,0x3c2bffc8,0x3b713715,0x3b0c863f,0x3ad50daf,0x3aa9b58e,0x3c033758,0x3c120a07,0x3bd5eeff,0x3c20284f,0x3c241028,0x3c20aa54,0x3bfd2b4a, +0x3b86cb59,0x3b973176,0x3b11a358,0x3b43a1ff,0x3bde3dda,0x3bb591cc,0x3a77fe6f,0xbb9d130a,0xbb824e9b,0x3ae21985,0x3ba8dc3f,0x3c3c628c,0xbb3eb3bc,0xbb79f3d0,0xbbc9eabc,0xbb9f4dbf,0xbb839903,0x3af0c0ff,0x3bf06b63,0x3c8230d0,0x3c81b1d7,0x3c3ef5f0,0x3ba4088b,0x3b27a33f,0x38afbab3, +0xba91806b,0x3ba05f0e,0x3bf5e13f,0x3b990e87,0x3c439b3a,0x3c374123,0x3b83da4e,0x3b5eee85,0x3b319702,0x3b95fa06,0x3bf4e7af,0x3b74804a,0x3b0ec57e,0x3b78e36e,0x3b2000c3,0x39c78887,0xbb418a38,0xbb0513f8,0x3b085f85,0xbc324156,0xbbfd9efc,0xbac7e622,0xbb7d8238,0xbb4c65ab,0xbbf20a92, +0x3a362b4d,0x3b7e7d31,0xb987e820,0x3b44041a,0xbaedfbc8,0xbc54d358,0xbc30079b,0xbc1a974a,0xbbdb00a7,0x3a7ef58b,0x3b4726fc,0xb8add70a,0x3bfbbf20,0x3c144d02,0x3bf639eb,0x3c182ce6,0x3c0adb11,0x3bad8e83,0x3c193c1b,0x3c222977,0x3c107e9c,0x3c06644a,0x3bc20466,0x3ba7ed10,0x3af304b3, +0x3adb5daa,0x3b9044c1,0x3b87e553,0x3af98976,0x3bcb0023,0xbb891476,0xbc021e93,0xbbf349da,0xbb98db97,0xbceac327,0xbcb712ac,0xbc4046ac,0xbc5e0eed,0xbca6d665,0xbca3a280,0xbc950da9,0xbc65324b,0xba0c84d6,0x3b69341b,0xbb26d2bb,0xba877df7,0xbaaa7e2b,0xbaba6d38,0xbac9af7b,0x392414e1, +0x3b988ba2,0x3c05436f,0x3c027bea,0x3b77ee9b,0x3bbfb20b,0x3bafedb6,0x3bcba91f,0x3b856338,0x3b80ac13,0x3bac6b7f,0x3b0870b7,0xbb0b160a,0xbbe3f68f,0xbc2cf695,0xbc4adb71,0xbc4ab69d,0xbc9e0b37,0xbcb39d60,0xbcb38f2c,0xbcd94e5a,0xbc57a978,0xbcbab98a,0xbcf19936,0xbcc6e80d,0xbc59097a, +0xbb8a6bc3,0x3b07300c,0x3be2592a,0xbbbdb6f8,0xbc32f068,0xbc05c78b,0xbbe81195,0xbbbe63f2,0xbbae13b6,0xbb1126c7,0x398b8b69,0x3b94a774,0x3bb3b02f,0x3b9a4ab9,0x3a18f76f,0xba414c5e,0x3a580213,0x3bb7c6c2,0x3ba1f0b9,0x3bbea0eb,0x3bf370cf,0x3c090669,0x3c02f668,0x3b639bb5,0x3b68de0a, +0x3b9636cf,0x3ba6ecc8,0x3c11eda9,0x3bb9d883,0xbb3550ca,0xbc10e4d8,0x3bfee011,0x3af0c6b3,0xbba7d311,0xbc31b7a5,0xbc9e0f67,0xbcb3d987,0xbccba38d,0xbcd8c9e3,0xbcaf4f42,0xbc8bfc71,0xbc679e8a,0xbc7cfcb2,0xbc81f85c,0xbc8b3cd7,0xbc74eb44,0xbc5da174,0xbc427b1d,0xbc14e39a,0xbbba8d52, +0xbb2cdb7b,0xbafaff22,0xb9282800,0x3ab5b960,0x3b5ca09a,0x3bd1c33c,0x3c076db6,0x3c36c458,0x3c45b024,0x3c81c7ea,0x3c6a5f94,0x3c71e995,0x3c68aa33,0x3c5a8c83,0x3c709def,0x3c820005,0x3c27646c,0x3aa1a165,0xbad5ffd3,0xbb78c6a6,0xbbafedf0,0xbbe3aaf7,0xbc0b6cd2,0xbc2ceeee,0xbc63cf07, +0xbc6f99cf,0xbc84aad1,0xbc897695,0xbc8b8954,0xbc8c7621,0xbc90707d,0xbc812f1c,0xbc681597,0xbc4f6926,0xbc39c9fe,0xbc2b6a7d,0xbc1352fa,0xbba91ba6,0xbbabd3c0,0xbb865c63,0xbb3a01cd,0xbae3cd4a,0xbaa1ec5c,0xba42b9b1,0xb99dc09a,0x3a58792e,0x3a8b19f1,0x3ad643aa,0x3b3ac911,0x3aedbc86, +0x3a802285,0x3a1caf15,0xba83887f,0xbbc8f557,0xbbe35141,0xbbf2ec86,0xbc09c611,0xbc174491,0xbc2ae780,0xbc38c9c5,0xbc45ae00,0xbc44f51a,0xbc46a98f,0xbc4aaf6a,0xbc4edb69,0xbc52b740,0xbc5b0bf8,0xbc4ddc0a,0xbc459d35,0xbc3bbdb2,0xbc318492,0xbc24ac4a,0xbc233804,0xbc05e800,0xbbebf155, +0xbbacdc9e,0xbbeb25a3,0xbbbdc32e,0xbb8c0dc1,0xbb86f679,0xbb7de798,0xbb82eea8,0xbb66491c,0xbb594379,0xbb3a4b55,0xbb918db1,0xbbb84d6b,0xbb6fb8ad,0xbba1ca7f,0xbc380a87,0x3b9b08af,0x3b935f5b,0x3b8b48d6,0x3b9e267f,0x3b9d1804,0x3b876287,0x3b93974f,0x3b8fa0db,0x3b829175,0x3b848b7d, +0x3b7c8723,0x3b63577e,0x3b63c257,0x3b655b10,0x3b6a0d16,0x3b86febe,0x3b8ed52e,0x3b8c0ff1,0x3b935c4c,0x3b9975e0,0x3b9d22d8,0x3b9f3c0c,0x3b9f6b7a,0x3ba3fdb6,0x3b856875,0x3b83bb8a,0x3b881ec8,0x3ba16941,0x3ba63ce7,0x3b9eac8d,0x3ba2ee0a,0x3b9ecc1f,0x3b8d7227,0x3b8502d0,0x3b80488f, +0x3bb06109,0x3b966d1a,0x3bda0953,0x3ba58c4a,0x3bb764ba,0x3ba65bdb,0x3b673531,0x3b876dbc,0x3b88c43c,0x3b7a08ae,0x3b89dc2a,0x3b80fadc,0x3b25facc,0x3b0bb292,0x3b0f02d7,0x3b2388d3,0x3b8968d6,0x3b9d515c,0x3b9303e2,0x3baee754,0x3bc047b6,0x3bdfe971,0x3befdc82,0x3bcb3e67,0x3bcc08d6, +0x3b8a8cea,0x3b7f9660,0x3b72353b,0x3bc2148e,0x3bde0df4,0x3bbaf49a,0x3bcd7eda,0x3ba7ed02,0x3b5dadf9,0x3b4daee7,0x3b806fad,0x3bdeb889,0x3bcaba22,0x3bd22289,0x3ba3dcd9,0x3bf99ed4,0x3c012001,0x3b841c25,0x3bafc280,0x3b96e0e6,0x3b52545e,0x3b734a44,0x3b2d37b3,0x3aad5c4f,0x3a070ab3, +0x396b53a3,0x3999bf9a,0x3b577ea2,0x3ba4d5c5,0x3b8b21a4,0x3bc89f29,0x3bdb8e3e,0x3c1666d1,0x3c0ef822,0x3bf97e3f,0x3bf350e2,0x3b84d6b8,0x3b6d72da,0x3b0bad3d,0x3bdf85c4,0x3bfdd48c,0x3bcd5ffb,0x3bed7851,0x3bc80275,0x3b729877,0x3b262b28,0x3b432ee6,0x3c08758e,0x3bb8b611,0x3c31c7fe, +0x3bd26f61,0x3bfd3d71,0x3bb810ca,0x38815fdb,0x3ae7f643,0x3b370fe3,0x3b2fb90e,0x3b759c69,0x3b949614,0x398c9125,0xbb48190f,0xbb8cbbe9,0xbb60ef38,0x3b2d62ae,0x3b94ac8b,0x3b76f898,0x3be9c3df,0x3c1f40f6,0x3c6d9cd2,0x3c6eb044,0x3c3a1157,0x3c1dfe7f,0x3bc5f69b,0x3bafb6ff,0x3a50083e, +0x3b8b0e6a,0x3bff8771,0x3c320610,0x3c13a2c3,0x3bb88bc6,0x3b189b5b,0xba2a6918,0x3b7dac84,0x3c746a5d,0x3c4de69c,0xbb02a2bd,0x3bbd8d64,0x3c6b1120,0x3cacf4f6,0x3cfa862e,0x3c707c0c,0x3bef76a3,0x3bc973db,0xba8511c7,0xbb43f6ff,0xbbb4ffa1,0x3c7b60aa,0x3c97afbc,0x3baf51ea,0x3bc125ae, +0x3bc45990,0x3be5f7e2,0x3b9b2503,0x3b187df1,0x3b277be6,0x3b8cfbb1,0x3ba228c3,0x3c03e2c8,0x3c1a6d68,0x3c342f97,0x3c05e847,0x3b77f9ec,0x3a8c1b43,0xbb1b22d4,0x3bfccce2,0x3c88fc68,0x3c7d81aa,0x3c1d827b,0xb9810af9,0xbc76580a,0xbc24b9a2,0x3c81f44d,0xbc8cd4ab,0xbc777087,0xbc66cd0a, +0xbc885f7a,0xbc468c76,0xbc4df10b,0xbcaa1777,0x3af357fb,0x3bdd8a60,0xbbad76f7,0x3bf2a53d,0x3c1ab789,0x3bedbbac,0x3b85633f,0x3b05557e,0x3aabfdf4,0x3c0bc386,0x3c1e576e,0x3b928ef1,0x3c0898ce,0x3c126a3e,0x3c11d667,0x3c1764ef,0x3bb3343c,0x3b9cb943,0x3b146f1f,0x3b7b980d,0x3c100940, +0x3bb33c80,0x39e00909,0xbbad85f9,0x384e3698,0x3ba19832,0x3ab20e48,0x3ca42b4a,0xbb6b812b,0xbb8e3c21,0xbbb283db,0xbb8903be,0xba01a38b,0x39a5b886,0x3bd83ada,0x3c6cb2e0,0x3c7c1f1e,0x3c3de89c,0x3b9f4646,0x3bc0247f,0x3b02e5ce,0xba95e741,0x3b4cf1d5,0x3bc41c9e,0x3b7b95a7,0x3c257b8c, +0x3c1afd4e,0x3b042af1,0x3aed39a8,0x3a8c0672,0x3b19a3be,0x3bb8a51e,0x3b29bbc0,0x3b4f2681,0x3b5d7758,0x3b0a3ff9,0x3a998926,0xbaf38626,0xb7c15a16,0x3b534be7,0xbc06ebda,0xbb13cbc6,0x3b660a71,0xbb40d79b,0x3985d91e,0xbbba1fab,0x39b86d7e,0x3b4e3fa0,0x3b88f9db,0x3bc629f8,0x3adb8904, +0xbc1787c5,0xbc1a4166,0xbc20dedb,0xbc396a3d,0xbac40f13,0x3b39b9d5,0x3ae8acb8,0x3baa3541,0x3bd54e29,0x3bfab6ff,0x3c04c09a,0x3be3a621,0x3b94c921,0x3c0844d0,0x3c065c73,0x3bf87ef5,0x3c0548ca,0x3bb97528,0x3b967290,0x3afce400,0x3acf76d3,0x3b7d483a,0x3b5d68f7,0x3aa868a9,0x3b854f4a, +0xbb36c751,0xbb877e0f,0xbb7fa384,0x3aaec949,0xbc9c6eea,0xbc0a7c2c,0xbb94fbb3,0xbbee1c14,0xbc6172c4,0xbc768991,0xbc64dab1,0xbc23f904,0xbb0f69d1,0xb91ed749,0xbb499af3,0xb88c59c3,0x3ab3c416,0x3aad8610,0x3b1875c3,0x3b85b336,0x3bc48981,0x3c026dc7,0x3bda41d4,0x3af3ab54,0x3bcc9c61, +0x3bc4cd23,0x3bb1f5d9,0x3b89909b,0x3b7b4c1d,0x3bbf9ed8,0x39a308ae,0xbb803efb,0xbbe66cf9,0xbc0eb749,0xbc20aa6b,0xbc3ab146,0xbc7710f6,0xbc9e4b45,0xbccd31f3,0xbcc13065,0xbcc97f4e,0xbceaf99e,0xbcec7796,0xbcae5467,0xbc2694e8,0x398f20b9,0x3b635c25,0x3a0fa1ad,0xbc04c36b,0xbc22f195, +0xbb8d3674,0xbbb51afc,0xbb89add2,0xbaef0dbd,0xb89a0e50,0x3b35c8b3,0x3b8b3f38,0x3becf3bc,0x3be198fd,0x3b15811f,0x3ab95747,0x3ac4f37a,0x3b5f5f76,0x3b57a646,0x3b8e7af7,0x3bdc2aea,0x3bf8c10e,0x3bbaf1f1,0xba619a9f,0xbb3ee195,0xbb676667,0xbb89a0af,0x3ada9028,0xba29ab85,0xbc187110, +0xbc90d9bc,0xbaef3a00,0xbbe8e777,0xbc25bf98,0xbc4fb360,0xbc88851a,0xbc89cd04,0xbc857278,0xbc6eba18,0xbc44c39c,0xbc2f5441,0xbc1f65ee,0xbc2d4893,0xbc2ed087,0xbc39a526,0xbc1b38a5,0xbc02bfc8,0xbbd6535e,0xbbb7d929,0xbb8fa32d,0xbb2d0278,0xba9a04f4,0xb93ada62,0x3a7ef9da,0x3b173d5d, +0x3b8f70c8,0x3bb315ea,0x3c00a277,0x3c0ca929,0x3c4ff316,0x3c1e3d12,0x3c0fd7ef,0x3bd12b95,0x3b94d70d,0x3b91fc76,0x3b96dbdd,0x39070c4c,0xba6fe040,0xbb53596e,0xbba8e920,0xbbdefa40,0xbc0a28ca,0xbc262be0,0xbc4c3c57,0xbc7baa58,0xbc83ad28,0xbc88e346,0xbc8c86aa,0xbc8d987d,0xbc9109fe, +0xbc9911ac,0xbc8bfcd0,0xbc820f33,0xbc6bf674,0xbc569455,0xbc40f895,0xbc2f169d,0xbc137601,0xbbf22f1d,0xbbc21ff6,0xbb8d4303,0xbb3e577f,0xbad15a68,0xbaa67cf8,0xba8ad215,0xb98c9a50,0xb8cf0961,0x3a3ed27a,0x3ae60a4a,0x3a79326d,0x387dfb63,0xb9ee702f,0xbaff5486,0xbc004982,0xbc05b3de, +0xbc0fa50d,0xbc1d7a08,0xbc298bd6,0xbc387352,0xbc42ceed,0xbc4f0da2,0xbc4c93fe,0xbc4f9a30,0xbc52fef6,0xbc57eecc,0xbc5a1afd,0xbc5f2d86,0xbc52a2ea,0xbc4a8a1e,0xbc424b8c,0xbc3930b7,0xbc2f1697,0xbc265add,0xbc1fd3bc,0xbc162a02,0xbc055d94,0xbc0a5fd7,0xbbfd95b6,0xbbd62c4e,0xbbd493e4, +0xbbcc3ff7,0xbbd060d0,0xbbc099ea,0xbbbdd4e4,0xbbaf51a5,0xbbd0e1dc,0xbbe86bc9,0xbbcf8670,0xbbe718f1,0xbc4d2cfb,0x3b8b936c,0x3b838fb7,0x3b6fcaa2,0x3b907c2e,0x3b8ca67d,0x3b63cac6,0x3b7c6573,0x3b7ada49,0x3b74a5a6,0x3b6968c6,0x3b659fd1,0x3b7599b0,0x3b66b61d,0x3b68998d,0x3b6fb3d5, +0x3b809a99,0x3b82d239,0x3b7d4408,0x3b7ed144,0x3b820820,0x3b7af9d6,0x3b8bc475,0x3b918c63,0x3b9ecc33,0x3b73b3bd,0x3b7a939d,0x3b81b7a9,0x3ba15a58,0x3ba58f9c,0x3b962c1e,0x3b9d4620,0x3b96c071,0x3b80b805,0x3b7ae237,0x3b6777af,0x3b95ec37,0x3b86f3c9,0x3bb6b376,0x3b78cfe8,0x3b955e22, +0x3b8a56c3,0x3b21ae6a,0x3b4dfdf9,0x3b565f90,0x3b759c9d,0x3b6dfd5b,0x3b8108b6,0x3b8b3a8e,0x3b560f2c,0x3b55a634,0x3b61e322,0x3b9106db,0x3b979eb9,0x3b881c9f,0x3b8cd940,0x3b90bcb1,0x3ba00de1,0x3bc9360b,0x3bae80a3,0x3bc1e25c,0x3b7719d4,0x3b66fcd7,0x3b619965,0x3bc4aa25,0x3be0115f, +0x3babc8e8,0x3bbaad3f,0x3b95b2d4,0x3b2db5d5,0x3b3ebe64,0x3b60c92c,0x3ba728d7,0x3b9d306f,0x3b9e7329,0x3b84af9d,0x3be6014f,0x3bdab933,0x3b0891ae,0x3b66a3be,0x3b63ec78,0x3b7352d9,0x3b3c45d9,0x3b2ca9b3,0x3b954a74,0x3b2d73ba,0x3b30a702,0x3b341bb4,0x3b8eb73d,0x3ba2d87a,0x3b815593, +0x3b9615a1,0x3b909b5b,0x3bbd8591,0x3bd98cfe,0x3bcaf4f0,0x3bf18468,0x3b64f544,0x3b59e08f,0x3b081e79,0x3bfc7956,0x3c0a1014,0x3bbb6475,0x3be21d99,0x3bb6d634,0x3b341858,0x3b1a831d,0x3b140fdf,0x3baca07f,0x3b78b747,0x3bfac01e,0x3b7f972e,0x3bac1f23,0x3b7c399f,0xbb13a306,0xb9c97c6e, +0x3a527024,0x3b5c347c,0x3b50791c,0x3bc112ab,0x3bde5c2b,0x3afa9e3f,0x3a5ce94f,0x3a593993,0x3b99aa0f,0x3ba78166,0x3b6cf954,0x3b989d91,0x3bba82b1,0x3c100be9,0x3c36add2,0x3c176fb1,0x3c23b3c0,0x3ba93fe6,0x3b85479e,0xba0d9c29,0x3bb4f882,0x3c139c80,0x3c12096d,0x3c085df2,0x3b9c1f30, +0x3a1a5b45,0xb94a1fff,0x3b385175,0x3c23d03a,0x3c10cb2c,0xbb4e2a0d,0x3bc817bc,0x3c82d435,0x3ca026fa,0x3cc01b00,0x3c510cbb,0x3c0703b5,0x3c088d11,0xbb794ce1,0xbbf122de,0xbbf88aec,0x3c17ea66,0x3c6d8fc5,0x3bd94c17,0x3bc9f194,0x3bcbc6f1,0x3bf32a5c,0x3bb33e11,0x3b30cfa0,0x39d632e0, +0x3afd5508,0x3b52d99e,0x3becfbd4,0x3c0876dc,0x3c27159a,0x3c224908,0x3b4eca8a,0x39b464a9,0xba45e273,0x3c2ecb3b,0x3c91a43f,0x3c4398d5,0x3bd5e16b,0xbb0c6ce5,0xbc6e5c90,0xbc3be01e,0x3c980f35,0xbce27b6e,0xbc73074b,0xbc36dbab,0xbc4ece05,0xbc25685f,0xbc68078f,0xbcd780e8,0x3b27d43d, +0x3c1e6038,0xbbbe169f,0x3ba93aa9,0x3c01f161,0x3c115f01,0x3bd64c7d,0x3ba0d1b1,0x3b5e8144,0x3c0df434,0x3c1cb4be,0x3b788fb9,0x3bddd8c1,0x3bf50496,0x3bf29cc1,0x3c2e7299,0x3be31d94,0x3b9f318d,0x3b3948ab,0x3ba141bd,0x3c26845c,0x3bae8a1d,0x3a0fa14a,0xbb996514,0x3b222617,0x3be155b0, +0xb7cb30be,0x3cd67d64,0xbbc5f53a,0xbbcec632,0xbb46a397,0xb975bb10,0x3bb7fabd,0x3912bf49,0x3ba19e58,0x3c4443c1,0x3c56f323,0x3c32b64b,0x3b8c2d63,0x3bf2028e,0x3b5e18da,0xba032d40,0xb9302d4b,0x3b211eb7,0x3b456ed2,0x3bd7ee8d,0x3bb838ca,0xb90411b8,0x38d0f1e1,0xba80eb35,0xb9b7fd6f, +0x3b56afa2,0x3abd13db,0x3b6e073b,0x3b5b405e,0x3afac3a4,0x3b00ffe5,0xba12fd03,0x3aff0b82,0x3b8e7771,0xbb045bf8,0x3b4768e8,0x3b8f9168,0xbb917307,0x3b7cf5e6,0x3a703715,0x3aaf201f,0x3b1b5217,0x3c0f3818,0x3bcb1dca,0x3adf6077,0xbbba6b89,0xbc0ab037,0xbc1c9a2f,0xbc6ad18b,0xbb3a1825, +0x3b2ff7e2,0x3b3e5e4c,0x3b7faa78,0x3b9ab0c2,0x3bc1746a,0x3bc66ce8,0x3ba7ea1f,0x3b58bc63,0x3bbbec7d,0x3bb07059,0x3ba223c1,0x3beddecc,0x3baa81c2,0x3b6bc029,0x3aed9df0,0x3aa27fb9,0x3b4a9828,0x3afa8475,0x38988913,0x39b763e8,0xbad8766f,0xba80317d,0xba98955f,0x3b9dbb56,0xbc66d6a2, +0xbbb8f4fb,0xbb34da76,0xbb666626,0xbbec083a,0xbc23b6a5,0xbc0f05bc,0xbba2272b,0xbb929bc0,0xbb9ce9d8,0xbbc02264,0xba848ef1,0x3ae8e2d5,0x3acf3ed9,0x3ba0bda2,0x3beea615,0x3c0d7c2f,0x3bdafff1,0x3b9a6e33,0x3ae607ea,0x3bc3d81d,0x3bbcb781,0x3b549dde,0x3b71488b,0x3b5fb705,0x3bb717ce, +0xba5b89ff,0xbb96751f,0xbbbd1969,0xbbcac307,0xbbe8c567,0xbc27d736,0xbc59bc91,0xbc97096b,0xbcd8d51c,0xbcabb2e8,0xbcdaf95c,0xbcdd29e0,0xbcc2c02d,0xbc933667,0xbc2dafef,0xbb73c7a4,0xbb8b4994,0xbc3305dc,0xbc07fa36,0xbba98db0,0xbad74cfb,0xbb6a8ddd,0xbb4a13bd,0xba275518,0x3a5ff1ed, +0x3b4cf56d,0x3b9108ee,0x3bd8a249,0x3bdbb0a5,0x3b63dad8,0x3b6ee6f1,0x3b462dc6,0x3b0599a1,0x3b0d73c1,0x3b3a9487,0x3bac52cd,0x3b8fed33,0x3b03bd17,0xbb6fc170,0xbbe96628,0xbc0f1aed,0xbc1aaaa4,0xbb912a3f,0xbbb29ed4,0xbc2d9e99,0xbca12abf,0xbc120aad,0xbc5ba7d8,0xbc5cff4c,0xbc53b3be, +0xbc526324,0xbc2e8a1a,0xbbe7f721,0xbb5c9152,0xbb7b32b9,0xbbb0eb7b,0xbbc57136,0xbbbba8f2,0xbbaa5f21,0xbba8abb4,0xbb5ae620,0xbae7b9d3,0xb9d78e0b,0xbae6abcb,0xbb3b332a,0xbb81118c,0xbb2a4397,0xbad881ca,0xb9e94234,0x3a950407,0x3b35d71c,0x3b88541d,0x3bae00b7,0x3bb5edbc,0x3c0d81f3, +0x3ba4a7c2,0x3b557cce,0xb93d2351,0xbb19aab5,0xbb7106f8,0xbb9462fd,0xbc003822,0xbb16d2f4,0xbb91ba0e,0xbbc600f3,0xbbfd5adc,0xbc1b7996,0xbc381627,0xbc5fc463,0xbc802cfc,0xbc7e1858,0xbc7049ab,0xbc6bc707,0xbc6703da,0xbc68934c,0xbc725ebc,0xbc5fc802,0xbc51df8b,0xbc3b14b1,0xbc27d7c6, +0xbc0d166e,0xbbf799aa,0xbc0437b3,0xbbbdb1ba,0xbb9c019e,0xbb6f333e,0xbb2ccc3a,0xba8867b8,0xba75f45c,0xba72066c,0xba191ca9,0xb9bfe938,0x39c15f65,0x3aba6997,0x39e35de4,0xb9bf5b91,0xba698140,0xbb1b969d,0xbc067e77,0xbc001ae1,0xbc0a22c7,0xbc1450f7,0xbc1ca0b0,0xbc25f86b,0xbc2c65ba, +0xbc39a4ef,0xbc32d415,0xbc34c790,0xbc3517a2,0xbc368452,0xbc35251b,0xbc34b445,0xbc2bca4d,0xbc25e3e5,0xbc216174,0xbc1a0a93,0xbc14b58a,0xbc06dece,0xbc156d33,0xbc164469,0xbc1a3175,0xbbfe479e,0xbc03d6a6,0xbc0279a4,0xbc0059b5,0xbbf5209c,0xbbf445c1,0xbbe58401,0xbbe37ea5,0xbbd8505d, +0xbbe98f56,0xbbeb4978,0xbc006420,0xbc02085f,0xbc3533b3,0x3b70790e,0x3b5fe524,0x3b4917db,0x3b74a872,0x3b6886d3,0x3b2f358a,0x3b498713,0x3b4ea6f0,0x3b5c57eb,0x3b4947f4,0x3b4a358a,0x3b6c6c27,0x3b517e6a,0x3b54a3c8,0x3b61e5ec,0x3b688a0b,0x3b679525,0x3b61f3df,0x3b55b683,0x3b547680, +0x3b46eea9,0x3b69aea6,0x3b77c375,0x3b8f7c6f,0x3b52e2c6,0x3b622c1f,0x3b6cbe15,0x3b989b1c,0x3b9c5be0,0x3b87e993,0x3b8d6803,0x3b85514b,0x3b6215b8,0x3b60eddc,0x3b4e3b55,0x3b7767f2,0x3b6424cf,0x3b77f7fa,0x3b1f29e8,0x3b5f1c37,0x3b4f506b,0x3aa190e5,0x3af9c7f1,0x3b1337b8,0x3b64e433, +0x3b4dd5aa,0x3b70b040,0x3b9fbbcb,0x3b5dcf95,0x3b556bfa,0x3b6b1cd5,0x3b852574,0x3b86fef7,0x3b77c9ac,0x3b566729,0x3b4c9757,0x3b5782a6,0x3b9a564d,0x3b904b15,0x3bab51be,0x3b5840c4,0x3b50d87e,0x3b580f3f,0x3bc0e399,0x3bd7f860,0x3b9aed22,0x3ba32a61,0x3b83d3d5,0x3b16db73,0x3b37a483, +0x3b49e59c,0x3b7ca2be,0x3b5eff54,0x3b58f4f3,0x3b445299,0x3bb792ac,0x3b95f00c,0xb8bd5cb3,0x3ac99a72,0x3b0afca5,0x3b81b55f,0x3b259127,0x3b2fe3a7,0x3bc7524d,0x3b461f94,0x3b5d92eb,0x3b7f17c5,0x3b9bb0e9,0x3b9b19cf,0x3b82572a,0x3b538924,0x3b2ca951,0x3b4e4be3,0x3b97aea2,0x3ba01f46, +0x3bdb0af0,0x3b489c6f,0x3b54fbf9,0x3b254cb1,0x3c077f41,0x3c10cbdb,0x3bb33723,0x3bd30de9,0x3ba51d47,0x3b21c923,0x3b26b7ee,0x3b0803ab,0x3b5d9a1c,0x3b1e427e,0x3b56f722,0x3a8b0fa2,0x3b258078,0x3ac52ffb,0xbba08808,0xbb51eb31,0xbabe0352,0x3b713c8e,0x3b4a4862,0x3bcea44a,0x3c29fad0, +0x3b80daab,0x3b1c5373,0x3b229879,0x3b9d46c4,0x3ba2e4b8,0x3b6f6e81,0x3b1b6630,0x3b0b7658,0x3b77c978,0x3beefafa,0x3befbd65,0x3c2a9c33,0x3b9f395b,0x3b4d7f16,0xba4c3fb7,0x3bdce6b9,0x3c225809,0x3be33978,0x3bec29df,0x3b862ab9,0x37cafec0,0x3a4998c0,0x3b22c480,0x3bdc9f9a,0x3baaa82e, +0xbb04c9a4,0x3c0b515d,0x3c8131e3,0x3c8202d2,0x3c8dff1f,0x3c526aa6,0x3c2ab377,0x3c1c7a06,0xbb8a24d7,0xbc1a974d,0xbc25075d,0x3b224c93,0x3c2800b4,0x3c2f6145,0x3bfba840,0x3bd91bb1,0x3bf9932e,0x3bc2a88e,0x3b825768,0x3a070647,0x3a2d4c14,0x3b0e9e72,0x3bc9dc66,0x3bdf71d7,0x3c114307, +0x3c352a70,0x3b39403f,0x387b1bd3,0x3adb30f3,0x3c56692a,0x3c90862d,0x3c030738,0x3b9819e3,0xbb4c3bd6,0xbc7a1da7,0xbc373276,0x3c8c6092,0xbd089b09,0xbc51c40d,0xbbe33bdb,0xbc08e4eb,0xbc100949,0xbc43958c,0xbc9fdb11,0x3bab22d8,0x3c4072c4,0xbb847026,0x3ba033e8,0x3be81428,0x3c09de95, +0x3bf1cbf3,0x3bd732d1,0x3bd9955b,0x3c0b30c7,0x3c0bc2bb,0x3b88ed1d,0x3bbf0989,0x3bc45b3b,0x3bb4b55e,0x3c35f2c6,0x3c04f37d,0x3ba3d197,0x3b872431,0x3bd03f89,0x3c2e0112,0x3b9a3c3b,0x3a71c6ae,0xbb103a7f,0x3b8b1d44,0x3c057887,0xba1f087a,0x3ce0332c,0xbc0e66d4,0xbc0a2a64,0x3ae92c23, +0x3ba84749,0x3c2b1615,0x3adad172,0x3b72c792,0x3bfb7ccc,0x3c3e8d7f,0x3c453f70,0x3b8d714a,0x3c113dcf,0x3b83d428,0xbb316e26,0xbb2792fb,0xb9501a98,0x3b5cef47,0x3b686435,0x3b0cec8d,0xbae53dfc,0xbaa97d8d,0xbb2699ed,0xbb3d9641,0x3a35f00e,0x3a271db8,0x3b7fe83d,0x3b5ca6c4,0x3b048b41, +0x3b29f738,0x3aa1c2a9,0x3b58c295,0x3b6bab00,0x3b25adb4,0x3bb3c61d,0x3b13c8d8,0xbbdeeea0,0x3bef3c52,0x3beb02d9,0x3b66e6fe,0x3b5d0909,0x3c2e41cc,0x3bb34ef5,0x3a52268c,0xbb6e7f32,0xbbd232dc,0xbc023ed0,0xbc6c0289,0xbb8c2b9c,0x3aa2c579,0x3b1aaf25,0x3b11c16f,0x3b783672,0x3bc26e59, +0x3baae337,0x3b910d21,0x3b327bd7,0x3b4f3257,0x3b43ce7b,0x3b306490,0x3bc34faf,0x3b967fe2,0x3b344756,0x3af684e8,0x3aabccfa,0x3b19179d,0x3a3d3a1f,0xba4d1f7b,0xbb21ab8c,0xba8c5d8f,0x3a32ff8f,0x39aac639,0x3bcebf79,0xbc4e7c6a,0xbc032384,0xbb52101a,0xbafe3de2,0xbb900393,0xbbc797f6, +0xbb9e7584,0xbaa9cc07,0xbbd09de9,0xbbf10093,0xbbaad49c,0xbb3538ac,0xba5a34c9,0x3a6d2eb3,0x3b90e380,0x3bcd157c,0x3c041593,0x3b70eecd,0x3b0a7473,0x3b1e322c,0x3b9dbfd3,0x3b899146,0x3a6cd551,0x3b3fd774,0x3b36bd0b,0x3b87fa5a,0xbaadfcd6,0xbb8b7ea1,0xbb77814d,0xbb7c3a86,0xbbafd0e7, +0xbc1e3074,0xbc688773,0xbca299ef,0xbcddcf1a,0xbc9bafb6,0xbcba8aa0,0xbcae295e,0xbc8fa362,0xbc758fb1,0xbc3b3ad7,0xbc4270c4,0xbc63e872,0xbc84f76c,0xbc029b75,0xbb5712be,0xbb4bf44f,0xbb4c424b,0xbb16cff6,0xba244e84,0x3b042680,0x3b652ab6,0x3bd28caa,0x3bb32ec0,0x3bb056cc,0x3b8f909b, +0x3ba29360,0x3b90cff2,0x3ae5396d,0x3afcbe40,0x3aee1d59,0x3b7a6d78,0x39874c7f,0xbb1cd27e,0xbbc00332,0xbc1d1a05,0xbc3a831b,0xbc4182b9,0xbc053895,0xbbf4cba2,0xbc067bca,0xbc895092,0xbc743a1a,0xbc99ae2e,0xbc88ca36,0xbc65f7bb,0xbc348d8a,0xbbe4d341,0xbaf902a3,0x3b12f303,0x39d8f9e6, +0xbad0149f,0xbb257b24,0xbab4ffe5,0xb9fde8a2,0x3965716f,0x3b01ae8d,0x3b68dd8e,0x3bb0c575,0x3b2ef0c1,0x3a3ec325,0xbb1aff55,0xbb2c6d36,0xbaf0b80a,0xba978da6,0x3a393ac3,0x3b0b979d,0x3b87167e,0x3b809bed,0x3b61be69,0x3b9d58db,0x3ab12cef,0xba3f02ce,0xbb88a3cc,0xbbe468d0,0xbc1f72b9, +0xbc425ce7,0xbc6af254,0xbb6d7268,0xbbb9f7f1,0xbbd811c1,0xbc004b73,0xbc1923ce,0xbc2fa3f8,0xbc4ed645,0xbc5d8087,0xbc4e2965,0xbc349bb9,0xbc263af3,0xbc1b5323,0xbc1456e3,0xbc1275d9,0xbc0b1bb3,0xbc0503b6,0xbbeec095,0xbbd78d95,0xbbb051b2,0xbb9363c4,0xbbaa0d22,0xbb4623b7,0xbb13287e, +0xbadb59dd,0xba6b09f5,0x3a562cf6,0x39a436bc,0xb8fa9692,0xba02b3ac,0xba02417e,0xb988210f,0x39cb869e,0xba3d296b,0xbaacb5ed,0xbad9f874,0xbb471fa7,0xbbdd111f,0xbbc0ba69,0xbbce15cb,0xbbd8ec26,0xbbde3f4b,0xbbe5397f,0xbbe8dc6c,0xbbfd99c1,0xbbed44b4,0xbbec7343,0xbbe77d9d,0xbbe2a71e, +0xbbda9bb6,0xbbcfd7e4,0xbbca99a2,0xbbc74da8,0xbbc7ebe0,0xbbbfe3dd,0xbbbec7b3,0xbbab1b61,0xbbd394a0,0xbbe5237d,0xbc06a154,0xbba2c117,0xbbc32dc1,0xbbe4fc35,0xbbe2ab7c,0xbbd8197e,0xbbd61d48,0xbbce98d8,0xbbd0fd61,0xbbcffc1c,0xbbc91a1f,0xbbb5d806,0xbbf98b7a,0xbbe5143e,0xbbd80054, +0x3b442f0c,0x3b398e8f,0x3b2e3ad9,0x3b41fe5d,0x3b30bebc,0x3aef9795,0x3b12dc7b,0x3b1b6171,0x3b3402f5,0x3b22754b,0x3b278d38,0x3b568958,0x3b23420b,0x3b227786,0x3b325ffd,0x3b3c9169,0x3b3e8293,0x3b3ff8bb,0x3b2e8206,0x3b2ac276,0x3b1f6a16,0x3b3bf3e1,0x3b46c386,0x3b72552a,0x3b293a11, +0x3b44ac76,0x3b5811bd,0x3b8b8d40,0x3b8ec756,0x3b72e361,0x3b78442f,0x3b67ed77,0x3b467b94,0x3b46ab05,0x3b33b1b0,0x3b50d7c7,0x3b3c652f,0x3b1b108f,0x3af9c062,0x3b2556ac,0x3b0dc457,0x3922c3d8,0x3a370cc9,0x3a9cad2b,0x3b3dbb78,0x3b2b4d73,0x3b4d88cc,0x3b9e0db8,0x3b1668c6,0x3aed3aa7, +0x3b1d7fde,0x3b3f4126,0x3b552021,0x3b547c35,0x3b273aba,0x3b183a22,0x3b17243b,0x3b61f30b,0x3b5f5d58,0x3b837f45,0x3b342a6b,0x3b3d5e34,0x3b5549ef,0x3bb79e93,0x3bc8180f,0x3b8a45f7,0x3b8cb27e,0x3b685af6,0x3b0c4266,0x3b32facc,0x3b3ce516,0x3b4724bd,0x3b228930,0x3b27a8da,0x3b3c19c9, +0x3b8e1dae,0x3b26f5f3,0xbb0af75d,0xb98a0d70,0x3a057e90,0x3b5a1b7b,0x3b061ac1,0x3b1d57da,0x3bd6d5ee,0x3ac996b0,0x3ad4ea9c,0x3b2ecabb,0x3b757d12,0x3b7f9b96,0x3b77b21e,0x3b22e3ca,0x3aec2242,0x3af33d53,0x3b509beb,0x3b6fcb49,0x3ba27779,0x3b270ecd,0x3b5a0700,0x3b5a0080,0x3c0b7e66, +0x3c14af16,0x3bb3cd08,0x3bca80d2,0x3b9c4d11,0x3b29e44a,0x3b4beaa5,0x3b2055ac,0x3b267e3a,0x3b0256a4,0x3a25ca6d,0x3a0cde5a,0x3ad38d8e,0x38ad3568,0xbbe2edae,0xbbbdc075,0xbb6d93e5,0x3b51f182,0x3b3f4a3b,0x3bbb87d4,0x3c3d2338,0x3b1b4858,0xba16a657,0x38bea46c,0x3b185153,0x3b747b6a, +0x3b59235f,0x3aa8925b,0x39c18e20,0x3a5adddf,0x3b8536c4,0x3bb14993,0x3c1b5c3c,0x3b995977,0x3b3a2de9,0x393fb730,0x3bfed247,0x3c2ba155,0x3bb50051,0x3bc9b6a0,0x3b8045e2,0x39d4f649,0x3aee92dd,0x3b2abbb8,0x3b9e375c,0x3b465454,0x3af8e36e,0x3c2bd695,0x3c43caa0,0x3c26318d,0x3c4bfb4f, +0x3c605e07,0x3c4fdb47,0x3c0a8b1e,0xbb546e17,0xbc1bbc69,0xbc2f3165,0xbb6c712d,0x3bb54d7e,0x3c7bc737,0x3c20a67f,0x3bfcf8fc,0x3c024e83,0x3bd7058f,0x3bb3bf6c,0x3b18f0cd,0x3a9f3f9b,0x3b0df7a1,0x3ba09242,0x3baa0230,0x3bee87e6,0x3c387d01,0x3b34b681,0x39f717e2,0x3b9ac90f,0x3c748e40, +0x3c882915,0x3ba26370,0x3b850433,0xbb190315,0xbc646eb7,0xbbe3d28b,0x3c1af873,0xbd099ec1,0xbbe45673,0xba68f7a8,0xbbccea1d,0xbbfda4cd,0xbc146297,0xbc49a500,0x3beae449,0x3c4da66a,0xba7efd07,0x3b852a19,0x3bc12d5c,0x3c085368,0x3c0a439e,0x3c04348c,0x3c0a7cd3,0x3bea8fa1,0x3bd1395e, +0x3b86f7b6,0x3b9895da,0x3b917082,0x3b84b553,0x3c2c430c,0x3c0f64af,0x3ba4d7a7,0x3bb7f1c4,0x3bfd016b,0x3c2aa64a,0x3b553a4e,0x3a9ec208,0x3accfe8f,0x3bbbd33d,0x3c010b71,0xba4ff3c0,0x3cac7175,0xbc03229b,0xbbfa470c,0x3bc9c8c0,0x3c17e3e3,0x3c3b6a44,0x3b23d439,0x3ac2e70a,0x3af96c15, +0x3c0d1527,0x3c38c827,0x3bb7305e,0x3c079342,0x3b7198f5,0xbb150805,0xbb91d8b6,0xbb0803d9,0x3bb4631b,0x3ae28b64,0xb9e9293b,0xbb38b060,0xbb179abd,0xbb4feab3,0xbb80acb7,0xbaca72b4,0x39b93339,0x3b949c97,0x3b5ea9b7,0x3b133bee,0x3b3e3ce8,0x3b2bc23f,0x3b7434b8,0x3ad42772,0x3ba45044, +0x3bee6e00,0x3ac95bf6,0xbbbf7e28,0x3c08d056,0x3c1c106f,0x3bc2532f,0x3badc81b,0x3c028a0b,0x3b9f0a71,0x3b0ecd21,0xba6381c3,0xbb4b35e2,0xbb9f999a,0xbc29143e,0xbb9c4b98,0xba830eb2,0x3ac0115b,0xb9003b13,0x3ada2790,0x3bc3e01e,0x3ba00a30,0x3b979acd,0x3b4a06fa,0x3ace96e8,0x3a98ae6f, +0x3ac4278e,0x3b8bcfb5,0x3b6aafa0,0x3b126091,0x3b196f73,0x3aee267f,0x3ae60215,0x3a1b6469,0xb9e85e66,0xbb584496,0xba8dea5d,0x39dadd89,0xba0bc3d9,0x3bb6badd,0xbc55d6e5,0xbc16b7d3,0xbbbd1c6f,0xbb558983,0xbb03fbd8,0xbb3826ca,0xbb2cb29f,0xbab002c6,0xbc182367,0xbc1de5d7,0xbb8e0ead, +0xbb719629,0xbb028ed2,0xb954c7d8,0x3b6f0616,0x3b9ef83d,0x3ba7702d,0x3a58dc09,0xb90963e1,0x3b0dff93,0x3b2923b9,0x3b09a379,0x392eda2a,0x3b16e97a,0x3af27719,0x3aeb0065,0xbabb321c,0xbb505bf0,0xbb0a4b60,0xbb25f300,0xbba5e239,0xbc233348,0xbc82edd6,0xbcafe358,0xbcd502d0,0xbc95017a, +0xbc88a445,0xbc7b6033,0xbc52be17,0xbc58421d,0xbc5ab7ed,0xbc92d650,0xbc97fbc0,0xbc6d629c,0xbc146a31,0xbbb74499,0xbbac0496,0xbb6015e4,0xbaedddb5,0xba6b3ac3,0x3b0f35fb,0x3b705410,0x3be6492c,0x3b86bb8c,0x3b72c990,0x3b9cad60,0x3ba6ed03,0x3b9736b0,0x3aff6099,0x3b0d8107,0x3aa6d7aa, +0x3b074f65,0xbb64d7f7,0xbbd3bfac,0xbc03e45c,0xbc3385db,0xbc4c5121,0xbc53506e,0xbc26cf76,0xbc028706,0xbbb0273b,0xbc480303,0xbc98111c,0xbcabe9ca,0xbc940648,0xbc7979eb,0xbc3ba742,0xbbdb39fc,0xbafe9679,0x3af64b22,0x3a14afd4,0xb98606ee,0xba5ca75e,0x3a792d2b,0x3b1201a7,0x3b64c072, +0x3ba6a4e1,0x3bd3cc17,0x3c088f83,0x3bc080dc,0x3b91f030,0x3ae54f5c,0xb7399854,0xb92c7898,0xba3752cd,0x3a56477d,0x3b04abbe,0x3b81c1de,0x3b4bbd92,0x3ad75712,0x3ae73ebd,0xba9c6ec6,0xbb3cae63,0xbbb99d4b,0xbc161aad,0xbc565d69,0xbc85348a,0xbc931032,0xbba7a721,0xbbdd2910,0xbbdfb356, +0xbbeca214,0xbc024a8c,0xbc0c6b3c,0xbc191528,0xbc16624c,0xbc04ae3e,0xbbdb5bd6,0xbbbad850,0xbba30ac8,0xbb8e437f,0xbb76b816,0xbb8599e2,0xbb8c5ae2,0xbb895b0b,0xbb83fb55,0xbb6b7db5,0xbb570c63,0xbb66092f,0xbac4d49f,0xba2d1caf,0xb8cd5fd7,0x3a306771,0x3b124948,0x3a904c3c,0x39b231a9, +0xb9e8603f,0xba660739,0xba91e61f,0xba838974,0xbb02843b,0xbb1da376,0xbb3907c0,0xbb805441,0xbb8cc610,0xbb722c63,0xbb74bedb,0xbb74e071,0xbb6a918b,0xbb641c31,0xbb5c9160,0xbb6d06a4,0xbb54b1b0,0xbb4bc7c6,0xbb3ccf03,0xbb2d7898,0xbb1c982e,0xbb0156cb,0xbb07c1af,0xbb0a15d5,0xbb1522dc, +0xbb139977,0xbb1bc973,0xbb0db01d,0xbb4ae7f7,0xbb6aa87a,0xbb9b5f63,0xbae10646,0xbb28d287,0xbb5dddcf,0xbb6814b5,0xbb60cda9,0xbb6a37f6,0xbb6d998d,0xbb8145bb,0xbb8bbd8a,0xbb7a2e73,0xbb53abcb,0xbbb179b2,0xbb99caa6,0xbaf475bb,0x3b141a23,0x3b2140c8,0x3b1b9cf6,0x3b100dad,0x3aefdb54, +0x3a8f2dc8,0x3abd82dc,0x3ad3eb55,0x3b0ab15c,0x3af52656,0x3afdb291,0x3b302c96,0x3ac8126c,0x3ab5bed8,0x3ac8139d,0x3afc0b56,0x3b097a0c,0x3b169edf,0x3b08a0e7,0x3b068690,0x3af52438,0x3b177341,0x3b1d4b62,0x3b3c9a65,0x3b000920,0x3b289139,0x3b48c39f,0x3b7cb208,0x3b80f3d0,0x3b593a99, +0x3b5afe10,0x3b4c8d46,0x3b300490,0x3b301c4a,0x3b1977d4,0x3b30c3e6,0x3b22c4e8,0x3aebc573,0x3aff4aa8,0x3adb174e,0x3a8d077d,0xba30bfea,0xb9df00eb,0x39896939,0x3b114975,0x3b0b8642,0x3b20613f,0x3b87dd6f,0x3a22ee04,0xb9bc9927,0x3950b54f,0x3a92543c,0x3b03561b,0x3b2ae1cc,0x3b0f691b, +0x3b02d981,0x3ae59ea9,0x3b298020,0x3b1dd3dc,0x3b234a7a,0x3b0615f6,0x3b2726f1,0x3b597245,0x3babe072,0x3bb76c91,0x3b7db10d,0x3b76e992,0x3b4d29cc,0x3b03c748,0x3b33d6aa,0x3b3e53a7,0x3b25e0c3,0x3b0677ff,0x3b3abd2a,0x3b7faf2a,0x3b5b263d,0x3a636033,0xbb3b9cdf,0xbae1a312,0xba2bda1c, +0x3b36aa8c,0x3aedfdce,0x3af92cdc,0x3bbe73b3,0xba82e4f5,0xbad67412,0xba2da2a4,0x3ab8546b,0x3b1cc1b7,0x3b592aae,0x3b1744c2,0x3aebde58,0x3ac43b3f,0x3b23728c,0x3b2c37f8,0x3b2ef1e8,0x3af0a74e,0x3b597ec8,0x3b8c219f,0x3c0dcb71,0x3c16c03d,0x3bbda199,0x3bc76c9d,0x3b9d2d65,0x3b3ae292, +0x3b73ef83,0x3b3a18cb,0x3b0ee671,0x3b161a40,0xb93933d8,0x3ad541bc,0x3aaefd26,0xba71bf0b,0xbbee7afd,0xbc02309e,0xbbaa84cc,0x3b31475f,0x3b4407a2,0x3b96b54f,0x3c2cc3a4,0xba838ae0,0xbbbb7473,0xbba5ee3e,0xbb02ffa7,0x3abed7a4,0x3b46d53d,0x3aced6e4,0x3a127e6d,0xb862e417,0x3b0eea5b, +0x3b675dbd,0x3bde0c0e,0x3b875c12,0x3b458a94,0x3b01732a,0x3c11abc9,0x3c34f72f,0x3bac4d58,0x3bb85243,0x3b891973,0x3a9e5e77,0x3b46d8c9,0x3b64b400,0x3b7807c5,0x3b0e966d,0x3bdaef48,0x3c3d2a11,0x3bf2a4ac,0x3b9ccd6e,0x3c02d311,0x3c781d9d,0x3c765713,0x3bc25c18,0xba63e439,0xbbfdfc81, +0xbc31dc64,0xbc0aaf0b,0x3a916718,0x3c8fb9e9,0x3c33555d,0x3c0abf9c,0x3c04c5ba,0x3be1deef,0x3bd192fe,0x3b92f824,0x3b584442,0x3b5e9762,0x3b8e1b50,0x3b8351af,0x3bbb084c,0x3c2bf26a,0x3b30432e,0x3ac21bfb,0x3c03abb8,0x3c8040d5,0x3c70215f,0x3b7a68ef,0x3b5c349e,0xbb10c55b,0xbc3c172e, +0xba8d05f7,0xbb4efcc3,0xbcf269e7,0xbab5f051,0x3b8e594e,0xbbb71700,0xbbb5a95d,0xbbbc37ca,0xbc05634e,0x3be745cb,0x3c3ea36f,0x3b155bd2,0x3b3545a0,0x3b8a5142,0x3c0df516,0x3c1b6835,0x3c24c9bb,0x3c26da74,0x3bc8f297,0x3b91f11b,0x3b777bd8,0x3b46f710,0x3b411ed1,0x3b58cd20,0x3c1457e2, +0x3c0ca41a,0x3b9ece3c,0x3bebd660,0x3c152875,0x3c209784,0x3b181d52,0x3af76c87,0x3ba681b1,0x3bc3dddd,0x3bdc062e,0x3b39668e,0x3c0ff569,0xbb5a4e43,0xbb388f15,0x3c1aa16a,0x3c3a6c70,0x3c2c8d87,0x3acf4f81,0xbb1cb340,0xbb552f1d,0x3b081901,0x3bd2551c,0x3beaba74,0x3bdf5252,0x3b7c4060, +0x3783cd69,0xbb83280d,0xbb3c2e0f,0x3bbc749d,0x39753e30,0xbb0c3e0d,0xbb450134,0xbb3e0a44,0xbb3f6d9c,0xbb4fb784,0xbb32b12b,0x3a02da45,0x3baa9504,0x3b5ec81c,0x3b1f023d,0x3b438fb2,0x3b51018e,0x3b6238f2,0x39b34dd1,0x3bd7dabc,0x3c090df1,0x3b3498aa,0xbad8613c,0x3bcab06b,0x3c0b4dac, +0x3bdf9f42,0x3bd94bd3,0x3bcf37ec,0x3bcd1533,0x3bc993d2,0x3b95e4ae,0x39e86a30,0xbafedf67,0xbb9e0010,0xbb96465a,0xbb3e4acd,0xba8b6a94,0xba96b3cf,0x3a4b85b0,0x3bac09e9,0x3b9a5d0c,0x3b9de486,0x3b5f17a6,0x3a37cf31,0xb95c0919,0x3a7cd907,0x3b1b3304,0x3b161ef6,0x3b043e3d,0x3b510d3f, +0x3b36eb29,0x3ac3ac81,0x3ac23d5c,0x3a343703,0xbb5f0903,0xbb05bd0d,0xba974d1c,0xbb320383,0x3b378181,0xbc5c0b9e,0xbc035b99,0xbbecb65d,0xbb88540a,0x3a8a678f,0xb94bb1dd,0xbb1141d0,0xbb8d66f6,0xbc35ab49,0xbc2bd08b,0xbb8ed95b,0xbb83f226,0xbaadc2cd,0x3944f71c,0x3b440cb4,0x3b5f02df, +0x3b1b68f2,0xb8eb9ed6,0xba0a86e3,0x3b0126fe,0x3a6db695,0x3a2dcd2f,0x39b69a44,0x3ae09fff,0x3a409a62,0xba611378,0xbac1f985,0xbb077eac,0xbab6b5ea,0xbb190e6c,0xbbb9ebb8,0xbc2c0fa9,0xbc88191a,0xbcabe2e0,0xbcb34d47,0xbc8d5158,0xbc427547,0xbc3c80cb,0xbc2c3a27,0xbc4c6a4e,0xbc794f91, +0xbc8d21f4,0xbc8266a8,0xbc3beb8a,0xbc15ec12,0xbbdcb80e,0xbb978be9,0xbb5d3fac,0xbb05408d,0xba896e26,0x3af77299,0x3b68407f,0x3b8f92a9,0x3b1718c7,0x3b0f9f03,0x3b8c6f37,0x3b8e32a2,0x3b82ab51,0x3b15ecb9,0x3b22898f,0x3a78daba,0xb9babd00,0xbbd28305,0xbc17f071,0xbc1ca2b7,0xbc3c8356, +0xbc50e8c0,0xbc5d42ad,0xbc475fd4,0xbc183c3b,0xbba0448e,0xbc145fec,0xbc927695,0xbc9a1082,0xbc881080,0xbc770a49,0xbc52272e,0xbc1317bc,0xbbb8c6a8,0xbb2244ce,0xbb153f9b,0xbad822ef,0xba96a5e2,0x3ac7913a,0x3b6f023f,0x3bb48291,0x3bc06507,0x3bd15de0,0x3bef7971,0x3bcaea62,0x3bb3715d, +0x3b8ed1b0,0x3b2f44b6,0x3adc2bd7,0x3a12d458,0x3a861aa9,0x3ae33070,0x3b3eb80b,0x3af761bb,0xba36aea3,0xbaa320e5,0xbb56646c,0xbb74466f,0xbbadddaf,0xbc0eb9ee,0xbc4fdc34,0xbc8250c9,0xbc8b7f5e,0xbbd79ace,0xbc058ad5,0xbbf6c6c6,0xbbe50662,0xbbd81969,0xbbcf0250,0xbbc23c86,0xbba348c1, +0xbb837b22,0xbb3cbc06,0xbb034958,0xbaaf0858,0xba3d0160,0x398d6768,0xb9b95eff,0xba4c55f8,0xba960b8c,0xbaa7f42b,0xba9f2b7e,0xbab5db46,0xbb1534c9,0xba37f494,0xb8ec81e1,0x39bf231e,0x3a39f548,0x3acbdb07,0x393f8767,0xba0cc2c9,0xbaa11ec3,0xbb0383a3,0xbb28a6e6,0xbb2fb4a6,0xbb698fe8, +0xbb7a3445,0xbb9171b9,0xbbb25796,0xbb24e598,0xbb3fd305,0xbb213059,0xbb11afdc,0xbaf92215,0xbacf9861,0xbaac675a,0xba9f9cb0,0xba6f5c95,0xba2b958b,0xb9aa5d22,0x3620c7ef,0x399acdf4,0x3a38fef3,0x3a08a346,0x3a041248,0x39cb30ff,0x39967e44,0x38bef0b3,0x394c2b5c,0xb9e74e91,0xba2a3bf9, +0xbaa896eb,0x395d3f20,0xb8e6792a,0x37af0bf9,0xb9769d64,0xb9a2ae86,0xba2c7e35,0xba618cb2,0xbaae0202,0xbaf09cc7,0xbaf7ce06,0xbafd83b8,0xbb377f3a,0xbb2d9d74,0x39f7f70b,0x3ac08368,0x3b04cf59,0x3b0984bb,0x3ac1fecd,0x3a83fdec,0x39ac7e50,0x3a20fdfb,0x3a5445df,0x3ab74ba0,0x3a92f9be, +0x3a949bdf,0x3aefeb64,0x39f5e78c,0x395b19f7,0x394a1c8c,0x3a532d2b,0x3a975a0f,0x3ad270c3,0x3ac73153,0x3ac93f52,0x3aac370a,0x3ad534bc,0x3ad30479,0x3aedde82,0x3a9b3a70,0x3af4c311,0x3b2cb4cd,0x3b52757b,0x3b56d2df,0x3b3288a8,0x3b31577a,0x3b256aef,0x3b09585d,0x3b0adc1d,0x3aeff02e, +0x3b073384,0x3b025a6d,0x3ab9fd81,0x3b093e63,0x3a862da6,0x3914bc3d,0xbabd07c8,0xbab6c7e7,0xba3412ef,0x3aa9b215,0x3aac67ae,0x3ac1a7c2,0x3b40f47e,0xba7a5d31,0xbb193cf4,0xbb09f9a9,0xba758d83,0x39ebb6bf,0x3af1b5e9,0x3afb851b,0x3af7dd56,0x3aaf84d7,0x3aeef5d8,0x3ab54acd,0x3a61cefd, +0x3a9388dc,0x3b015aaa,0x3b573b9b,0x3b9aa278,0x3ba31f99,0x3b65c693,0x3b591e2d,0x3b31c651,0x3adae436,0x3b326f58,0x3b40e4c9,0x3b07d4a0,0x3aeaa37b,0x3b6ef429,0x3bab4d6a,0x3b30d582,0xb9c03615,0xbb65a3f9,0xbb454206,0xbafc7cce,0x3af8fdee,0x3a683757,0x3a3aded7,0x3b84e43e,0xbb651ae8, +0xbba1287d,0xbb938759,0xbad94041,0x39ad66d3,0x3b30c4e6,0x3b20a4bd,0x3b193e0c,0x3ac1f97d,0x3b07f194,0x3adb48fc,0x39b6ae9b,0x3a65976a,0x3b4135e1,0x3ba42a8e,0x3c0b5d45,0x3c146777,0x3bc5c3be,0x3bc4a3a2,0x3b9fbaac,0x3b36bcc7,0x3b8af1c6,0x3b5b0af1,0x3b0e0f1a,0x3b437f3a,0xb8e8df2d, +0x3b68b53e,0x3ab0e6c0,0xbae8748f,0xbbede795,0xbc1889c7,0xbbd5c1b6,0x3ac2aada,0x3b01ee2e,0x3b3c067b,0x3c07b91d,0xbb779eb1,0xbc252c30,0xbc29ad35,0xbbe56ed5,0xbaeafdb6,0x3b212841,0x3b1cd444,0x3af2d93e,0x398a55f5,0x3abdf8c0,0x3af39e90,0x3b4e0090,0x3b4935f3,0x3b582247,0x3b847c9c, +0x3c262460,0x3c40f84d,0x3bc34404,0x3bbb30ef,0x3b9ada14,0x3aef9d9e,0x3b9aea39,0x3baecf4f,0x3b670bc5,0x3b0b18b0,0x3c4430f9,0x3c600ebc,0x3b99b7a4,0x3aa4f4e1,0x3b852744,0x3c7b9a95,0x3c7b65c3,0x3b1835fa,0x3a39868c,0xbbdbc3cf,0xbc554e4c,0xbc542a10,0xbb5ac271,0x3c86ba79,0x3c369444, +0x3c137da9,0x3c060167,0x3bdc1ab5,0x3bd326be,0x3bc4bc21,0x3bb7ae13,0x3bac7d14,0x3ba07662,0x3b65d68e,0x3b8ce83a,0x3c15cee8,0x3b20a986,0x3b35c9f4,0x3c3a346b,0x3c78e8b5,0x3c45b089,0x3b7cf59b,0x3ae05dd4,0xbb644a0c,0xbc0c94c2,0x3b989268,0xbc8cdaf2,0xbccb9adb,0x3ad7da0f,0x3bf21703, +0xbba1cc79,0xbb1854e4,0xbb27a352,0xbbb5e382,0x3b96903f,0x3c0d4b2b,0x3bbc6254,0x3b22a3fb,0x3b2e80c7,0x3be77dff,0x3c1a5410,0x3c315f4b,0x3c2fad47,0x3bac2c55,0x3b42e9ba,0x3b64fd2b,0x3adddad4,0x3ae5e11e,0x3b3c43d8,0x3be0434b,0x3bf3c565,0x3b91c165,0x3c0d7340,0x3c2aba29,0x3c1301fb, +0x3b1dbac6,0x3b3e1c46,0x3bf4f334,0x3babfd30,0x3bcc9e3d,0x3c173a2e,0xbba572dd,0x3b854363,0x3b9c1232,0x3c5f7918,0x3c55b570,0x3c20d1ea,0x3a3f3040,0xbbbcb583,0xbbbc2cce,0xbbaf02fe,0xba1dee77,0x3bdc423e,0x3b8bd019,0x3b6ec1f1,0x39f509b3,0xbac28dd8,0xbabb6dbb,0x3b8b5668,0xba987ee9, +0xbb4d6c37,0xbb1d36c2,0xbb3a8395,0xbb0d3e7f,0xbac9e721,0xbb372274,0x3a68cd2a,0x3bb5ee63,0x3b5ef41b,0x3b285f86,0x3b3616de,0x3b6e2cc4,0x3b4bf3f5,0xb9eabc59,0x3bd69734,0x3c06ea28,0x3b96bd2d,0x3b8d8a8c,0x3b069a70,0x3ba8977f,0x3bae4796,0x3bcbcad6,0x3bcf4e25,0x3c0c75b3,0x3c2a6c5e, +0x3c423668,0x3b7e3b5f,0x39687e15,0x3a83c17e,0xbb868d50,0xbb86f33a,0xbb3761c6,0xba6f8620,0x3aa34658,0x3bb2638b,0x3bb4145b,0x3bb1b4b7,0x3b7585e9,0x39739b2f,0xba5bf922,0x3a6b18dd,0x3a2fcd19,0x3a66ada8,0x3acd5c05,0x3b7c5831,0x3b82c8a5,0x3ae2ea4d,0x3b2e66fb,0x3ad89fcf,0xbb5d078e, +0xbb42c571,0xbb1da986,0xbb91d855,0xba637040,0xbc4dc05b,0xbbd1faf3,0xbbc60145,0xbb446edc,0x3b2e54f5,0x39e31f92,0xbb70a139,0xbc107ad8,0xbc37f7aa,0xbc1cb608,0xbb83cf2f,0xbb6a7ad0,0xba964f71,0x3a5ea7b7,0x3afe9063,0x3acb18c5,0x397a040a,0xba51a38f,0xba242371,0x3ae5028a,0x398e1402, +0x38118343,0x398cf6af,0x3a8fc608,0xb82fcbd8,0xbb44dbee,0xbadaa2ed,0xbae13a5d,0xbae5903d,0xbb3bb422,0xbbcfc7c2,0xbc2b922c,0xbc7d2700,0xbc95faee,0xbc861f3a,0xbc79d8d6,0xbc1624ee,0xbc14de02,0xbc107f85,0xbc356503,0xbc6d7a9e,0xbc522393,0xbc2d7a63,0xbc13204c,0xbbca9c88,0xbba46105, +0xbb8eb828,0xbb5e643a,0xbb0c2016,0xb963ec90,0x3b0579a0,0x3b4259cf,0x3a9d57da,0x3a65706c,0x3aa6c27a,0x3b5eba14,0x3b6d6536,0x3b628f43,0x3b26d0db,0x3b249ef9,0x39cdbd37,0xbb3ff5e0,0xbc06957a,0xbc2adeeb,0xbc23bbc6,0xbc3c00dc,0xbc5316f9,0xbc69aa32,0xbc69fed5,0xbc42715e,0xbbf7cbb6, +0xbc07759e,0xbc68a261,0xbc6d973a,0xbc5d01be,0xbc5a311f,0xbc5310bd,0xbc2edb2f,0xbc143355,0xbbea1a38,0xbbc0bfbe,0xbb88a51e,0xbb2177da,0x3a68087e,0x3b75b2fa,0x3bd4f3cc,0x3ba8ac1d,0x3b9465cd,0x3b88ad65,0x3b8cc3f0,0x3b863353,0x3b87ed2d,0x3b69d5d4,0x3b408eed,0x3b24956b,0x3ab2a8eb, +0x3a918c41,0x3a6999b7,0xb96e70f0,0xbb705718,0xbb9e7575,0xbbb328fc,0xbb8ee4c5,0xbb8d3cc9,0xbbe0863e,0xbc1eeb90,0xbc450a37,0xbc56477d,0xbc0c80a0,0xbc257060,0xbc0f8836,0xbbf3f226,0xbbc57fd5,0xbb9ff8b1,0xbb64fb32,0xbaf535a9,0xba6d25d6,0x389f0e92,0x3a6528a4,0x3acb6ca2,0x3b0de5a9, +0x3b6299ef,0x3b44b550,0x3b3b0ce6,0x3b228455,0x3b163cf8,0x3b16e69a,0x3b06ec52,0x391b6e50,0x3a06ca67,0x39a3377b,0x3942d507,0xb98c1583,0xba0aa0af,0xbae9f023,0xbb197cda,0xbb3a8b7c,0xbb78f512,0xbb9bbc14,0xbba3a547,0xbbc22889,0xbbc9a88c,0xbbe1a3d1,0xbc012804,0xbb2e4d30,0xbb734818, +0xbb3a43ba,0xbb2030fd,0xbb03e623,0xbacc23ba,0xba9bba13,0xba5e1de4,0xba0938c3,0xb8fe31ea,0x39aa3d63,0x3a4be5e1,0x3a99898c,0x3ad3de4e,0x3ab8d926,0x3ab620ec,0x3ab1aa47,0x3aa33d49,0x3a8918c2,0x3a9f57d3,0x3a31d1d9,0x3a17cff2,0x39ae8f8b,0x39956a16,0x398cd537,0x3a70439b,0x3a38a342, +0x3a0e8a31,0x390f7627,0xb8f78573,0xba123a86,0xba8c7a51,0xbaec02af,0xbb1cef8b,0xbaf9cde8,0xbb210fa6,0x3942d1c3,0x3a2d1202,0x3acdb229,0x3ae56169,0x3a4e25b3,0x396733ce,0xb9ba3c6c,0xb96d3bef,0xb7b2360b,0x3a40ac57,0x39b03e8a,0x3996b38b,0x3a5da785,0xb9f24336,0xba52dda3,0xba8502b3, +0xb9a46b45,0x392cfb89,0x3a5f057b,0x3a72f017,0x3a838a85,0x3a39e216,0x3a6d63c2,0x3a5fd371,0x3a5f596d,0x39da3191,0x3a940daa,0x3b0e70e9,0x3b26c9fb,0x3b2b59ee,0x3b0b6aa3,0x3b0b3a49,0x3b00da63,0x3abd16d1,0x3accaa3c,0x3aa5ca49,0x3ac6e1f4,0x3ac9288a,0x3ab534af,0x3b15a6e2,0x39f5ee9c, +0xba2b0dec,0xbb0067fa,0xbb157c93,0xbada0c0c,0x3a0809a2,0x399a9880,0x39b4e8d1,0x3ab8c77b,0xbb081da5,0xbb6e60d6,0xbb806701,0xbb352e80,0xba93329b,0x3a7498a1,0x3acd9ab4,0x3ae1ddfb,0x3a735db1,0x3a96451d,0x39b2ef64,0xba034746,0x393976fd,0x3aa5ed17,0x3b48baf4,0x3b83dd1c,0x3b8b0b5e, +0x3b4a5bd2,0x3b3c0b44,0x3b152eec,0x3a8e1df7,0x3b279c98,0x3b3a3a1c,0x3acd7839,0x3acb6806,0x3b960786,0x3bd8f071,0x3b09cc52,0xbab5067b,0xbb7a4910,0xbb89a5b3,0xbb564b5e,0x3ab5793e,0xb9943767,0xba2365bb,0x3ae14896,0xbba66ee3,0xbbe74661,0xbbf8c6fd,0xbb9809e8,0xbafaa2be,0x3ae4dcf2, +0x3b28ae35,0x3b3b0564,0x3ac40eaf,0x3ac5fdc8,0x3a1d24bf,0xbac3124b,0xb9428adb,0x3b16888d,0x3baaaab7,0x3c02927e,0x3c0b27cd,0x3bc50403,0x3bc03433,0x3ba12e4a,0x3b13dcdc,0x3b95514d,0x3b7b762d,0x3b113660,0x3b72c32a,0x3ab2b4a8,0x3bc9713d,0x3ab2e8c1,0xbb231872,0xbbd95243,0xbc24d74f, +0xbbfc58c3,0x3a63eceb,0x39be73a8,0x3a601f34,0x3ba48dac,0xbbaa4742,0xbc467416,0xbc6393da,0xbc369f1d,0xbba9add6,0x3aa89ce3,0x3b4da86d,0x3b57bb83,0x3a5d89bd,0x3a8c1dbb,0x390bae3b,0xb9abdd7b,0x3ad66d30,0x3b5ba658,0x3bbb48f9,0x3c377fe8,0x3c4d27ab,0x3bdd7ec8,0x3bc55343,0x3baad696, +0x3b09454c,0x3bcbbea3,0x3be7d364,0x3b5d86a1,0x3b2b30c4,0x3c8a915d,0x3c78e5be,0x3b58f7c7,0xba605099,0xb906d49d,0x3c5abddb,0x3c5ed010,0xbaaeaf7f,0x3ac100e4,0xbbcec693,0xbc832938,0xbc8374e1,0xbbedd023,0x3c3dee38,0x3c227ccf,0x3c11ea81,0x3bfd17a1,0x3bca3622,0x3bbc49de,0x3bced8fa, +0x3beceea8,0x3bdd8eeb,0x3bbe1a7f,0x3b613911,0x3b4ed470,0x3bfb8321,0x3af9dd04,0x3b819b31,0x3c717ebc,0x3c658379,0x3c17b832,0x3b81c59b,0xba184807,0xbb9f4456,0xbb981d71,0x3c230fc6,0xbcee78f2,0xbca5c696,0x3af0382b,0x3c032ae2,0xbb423339,0x3ac327e0,0xb9a52d57,0xbbece768,0xba16b156, +0x3b83b5ce,0x3c09fc04,0x3b27a698,0x3ac7801f,0x3b93b89a,0x3c0ace03,0x3c2dd186,0x3c21ab86,0x3b81f9dc,0x3acb3ba9,0x3b51259b,0x3a8fbee2,0x3a9559f1,0x3b24e619,0x3b90c617,0x3bba24c3,0x3b7db463,0x3c1b088f,0x3c35c966,0x3c009925,0x3b311824,0x3b70e14b,0x3c03f79d,0x3ba16342,0x3bea8942, +0x3c7a5a0e,0xbc89df25,0x3c4c217d,0x3c61d002,0x3c8f3cac,0x3c69e97e,0x3c1c1497,0x3af40276,0xbbb5739b,0xbbc1d0a9,0xbc2083af,0xbbbddafe,0x3bc2b3fc,0x3b069db2,0x3b661ce6,0x3b08edcb,0x39dac6ee,0xba36a6b8,0x3b252943,0xbae1c01f,0xbb55191a,0xbad97761,0xbb0b5485,0xbaa8061d,0xb90d07cd, +0xbb130e07,0x3ab0aaa5,0x3bb54332,0x3b5edf7f,0x3b2e056c,0x3b1dafac,0x3b8ae991,0x3b5aa1c5,0xba12f64a,0x3bcda1cf,0x3c0427ce,0x3be35f67,0x3c2fd022,0xbb22a77e,0xb8ea243b,0x3b2f033d,0x3babfbd4,0x3bc9c75f,0x3c32e061,0x3c64f781,0x3c8e5903,0x3bccd72c,0x3ab433ef,0x3bbee5b8,0xbb7f4eef, +0xbbb494d6,0xbb41b90d,0x39427657,0x3b0aa9a2,0x3bb0c78a,0x3bc1a478,0x3bb79d20,0x3b8327b7,0x39a9c51e,0xba4d45f3,0x3a658cf1,0xb9cbcc2d,0xb95167d0,0x3a2be6fc,0x3b7f922c,0x3b9d462e,0x3b132cff,0x3b5bde3a,0x3b0525e5,0xbb331695,0xbb3b73b2,0xbb105d0d,0xbba4ed4f,0xbb78c99b,0xbc25525c, +0xbbab23bd,0xbb7e8e9b,0xbab54d22,0x3b036835,0xb9f9fce5,0xbbb6a13e,0xbc4dd2c6,0xbc29b1ca,0xbbf9dfa7,0xbb386af5,0xbae9e236,0xb9e7c494,0x3a8e3b4e,0x3a2a6cfe,0x381854a2,0xba815a59,0xba89f6d0,0xb9eed4f6,0x3aa24026,0x392eaf7e,0xb849928d,0x38155e98,0x3a2c9959,0xb9a9f603,0xbb8d185a, +0xbb1273fb,0xbb1d014f,0xbb3b9047,0xbb65d36d,0xbbcda404,0xbc17d285,0xbc4d9154,0xbc6a570c,0xbc4547a5,0xbc452f00,0xbbee815d,0xbbe417a9,0xbbe5b989,0xbc099cca,0xbc221bd3,0xbc09916f,0xbbd1f3bc,0xbbbda07f,0xbb534020,0xbb5db488,0xbb8e5ec3,0xbb3e5917,0xbaaf12c9,0x3aa3cb73,0x3b03d365, +0x3ad9dbbc,0xb9fd3209,0x3936f507,0x3a4d88e0,0x3b26fd3b,0x3b3b1c30,0x3b3ec202,0x3b43be89,0x3af2ff70,0xba526bea,0xbba3e540,0xbc0ff340,0xbc296014,0xbc23d1ba,0xbc3b6b37,0xbc5b2b87,0xbc7d4a46,0xbc80e38a,0xbc65131f,0xbc34a8c5,0xbc05cf5f,0xbc2c8f73,0xbc2dea1f,0xbc2721a9,0xbc2f7d83, +0xbc36007f,0xbc29d26a,0xbc242d10,0xbc187193,0xbbfc3de8,0xbbb53bfb,0xbb633976,0xb9dc156b,0x3b193a0d,0x3bb4791c,0x3b6f398d,0x3b2bdefb,0x3ac88b7e,0x3b1771eb,0x3b2a9da0,0x3b53b8a0,0x3b61034e,0x3b6ec9c5,0x3b88646a,0x3aaf564c,0xb8a66bb4,0xbb104b50,0xbb521712,0xbbe0a9e7,0xbc093367, +0xbbfe98c4,0xbbb8411d,0xbb8f3e15,0xbbbd2b33,0xbbe67241,0xbc05c0ff,0xbc18134b,0xbc29f054,0xbc340a0a,0xbc17b9f2,0xbbfa8c3d,0xbbbf2ab3,0xbb8864ca,0xbb1657d5,0xb9f39ddd,0x39ba29c3,0x3a8936e2,0x3ae0e27c,0x3b1c5f7d,0x3b44673b,0x3b8c3fc4,0x3b8633e6,0x3b8d4185,0x3b89f368,0x3b87da1f, +0x3b85ca20,0x3b85fa28,0x3b256591,0x3aad9cdb,0x39ce58a4,0xb9fb5b69,0xbab3f927,0xbb241bb9,0xbb66d1ab,0xbb84ca4a,0xbb93a101,0xbbb8b2f4,0xbbe40a44,0xbbf64230,0xbc093323,0xbc0d077a,0xbc169f99,0xbc20f425,0xbb6e3d2d,0xbb91779b,0xbb6b7546,0xbb4c70a6,0xbb2d69f6,0xbb1091ec,0xbaf01866, +0xbab0495a,0xba8fbd7d,0xba3178f5,0xb984b5eb,0x393633b3,0x3a104b39,0x3a777325,0x3a52a7f9,0x3a4d2f1c,0x3a522219,0x3a467d99,0x3a32ab4a,0x3a579530,0x3a055aba,0x39bc0eb1,0x3994c4d2,0xba152965,0xba166d1c,0xb88ccdee,0xb9825459,0xb9f6646f,0xba670ee1,0xba97a18e,0xbac5f113,0xbb0207c5, +0xbb38be07,0xbb5d8c97,0xbb35766e,0xbb5eb35a,0xba6a2092,0xb8612ec8,0x3a8d78c3,0x3aa8dfe0,0x39171dc3,0xb9fa28be,0xba6ef97c,0xba793578,0xba423ddf,0x394f9a2a,0xb9a896d0,0xb9d6f906,0xb835ac80,0xba8d15cc,0xbabbd8f5,0xbaf0d69a,0xba9aefc4,0xba30041d,0x38d265e3,0x39bebdc7,0x3a009f0a, +0x391fbc51,0x39710228,0x391178e7,0x360df14b,0xb9848a1d,0x39d1e2b6,0x3acd2361,0x3ae866a9,0x3af3e5d9,0x3abd16d1,0x3ac74d22,0x3ab40501,0x3a364fd2,0x3a83cf0b,0x3a3566cc,0x3a5c1715,0x3a8689df,0x3abc475d,0x3b0b0b31,0xb945e968,0xbab74313,0xbb1cc44f,0xbb45eb8f,0xbb1e9149,0x3866c1de, +0xba0c2783,0xba05f386,0x39236ca9,0xbb1c4e10,0xbb80b102,0xbb9de8c2,0xbb800a1f,0xbb19e36f,0xb8a6e897,0x3a960ee9,0x3abe0f5f,0x3a03025b,0x39d4c96f,0xba27f6f3,0xbababb15,0xba3e4731,0x39fb08a6,0x3b30970c,0x3b5184f6,0x3b6045ae,0x3b2b4ab3,0x3b1f960e,0x3af5b4d5,0x39d657b1,0x3b16dac6, +0x3b25d27c,0x3a552ba9,0x3a9c94eb,0x3ba5a593,0x3beb1804,0x3a9e68d2,0xbb158890,0xbb801d96,0xbba9fdff,0xbb8c369b,0x3a9c8bed,0xba9b9ad0,0xbac254b7,0xb99361bb,0xbbad1e39,0xbbf2e2ac,0xbc14117b,0xbbd6ed0d,0xbb6f7584,0x39f53822,0x3b236e38,0x3b4aa457,0x3ab67777,0x3a3e2e00,0xba1286f1, +0xbb272116,0xbaa3e37c,0x3ab27e92,0x3ba15185,0x3be4276e,0x3bf55732,0x3bb806b1,0x3bbacb83,0x3ba05946,0x3ac3d528,0x3b94cd2a,0x3b7d603b,0x3addd798,0x3b78efa0,0x3b3f158c,0x3beb3990,0x3a2a9641,0xbb4c180d,0xbbc4f832,0xbc298280,0xbc07c797,0x3a8b4f47,0xba6e831b,0xba054709,0x3b21683d, +0xbb986633,0xbc3857a3,0xbc708a85,0xbc572352,0xbbfaaf9a,0xb9f40195,0x3b64bb1a,0x3b8c3ed3,0x3a998497,0x39bf1c5f,0xbadb45a3,0xbb3c5d65,0xb7534fbb,0x3b3f55c7,0x3bdbc1c9,0x3c3ff9cb,0x3c538bbb,0x3bea502e,0x3bcdccc1,0x3bb77741,0x3b1361b3,0x3befd499,0x3c05b5e6,0x3b2a15e0,0x3b321a7e, +0x3ca42085,0x3c78f18c,0x3b38c5f4,0xbb1f0405,0xbba6d85d,0x3c2452ac,0x3c317750,0xbb934627,0x3adda8e5,0xbbb7bd01,0xbc922d4b,0xbc8b500b,0xbc1db308,0x3bac195e,0x3bfe4b1c,0x3c06cc75,0x3bd6a8b2,0x3bbbce4f,0x3baf76c8,0x3bc222b8,0x3c002c3c,0x3bf26dcb,0x3bc8b4b5,0x3b624e69,0x3b1358dc, +0x3bc8192c,0x3a8c1322,0x3b9c5723,0x3c90b31c,0x3c47b984,0x3bcffcc7,0x3b5df381,0xbb630bbd,0xbbd147e0,0xbaa78d05,0x3c66f92e,0xbd11047a,0xbc85f31e,0xbab88d70,0x3bc4a3e0,0x39eb46f7,0x3b96c0e5,0x3ac64e81,0xbc10c245,0xbbc79aa9,0xba683a5f,0x3c2b0b3d,0x3b33de67,0x3a4a1649,0x3b5c90e1, +0x3be79f89,0x3c19bd29,0x3c05fc58,0x3b3616e0,0x39d7405c,0x3b28ff9f,0x3a931f9a,0x3a9aa1b2,0x3b1f03ef,0x3b2a9047,0x3b882514,0x3b67fd5e,0x3c205521,0x3c339e56,0x3bd22abe,0x3b46df7b,0x3b81aa0f,0x3be08ad7,0x3bb07a8f,0x3c0d53eb,0x3c9569d8,0xbcc17079,0x3ca0940d,0x3cac1c4b,0x3c9d2ebf, +0x3c727b40,0x3c256e5c,0x3bbb4d1e,0xbac30026,0xbbc542f6,0xbc3abc41,0xbc0fc19a,0x3b85b37d,0x39a8235f,0x3b63a9c8,0x3ba4962f,0x3b4b9506,0x39e4526a,0xb97b491b,0xbb01e65b,0xbb450b4a,0xbad9a1e8,0xbab53961,0xba0dadc7,0x3a357d26,0xbab7974d,0x3aefce30,0x3ba87f3f,0x3b4de07f,0x3b2783c5, +0x3b0d1f70,0x3b9a8751,0x3b891258,0x3a63c5b2,0x3bd6677d,0x3bfb2045,0x3c111b88,0x3c8280db,0xbbe24dcb,0xbba88371,0xb9b2bc14,0x3b8547a3,0x3bc7074f,0x3c4e7eb7,0x3c855fc4,0x3c99e14a,0x3c12a94f,0x3b83a385,0x3c0b65d4,0xbb10912b,0xbba8b609,0xbb2fd0e0,0x3aca0418,0x3b5966ce,0x3b98fc9f, +0x3ba0c3a6,0x3b8abe31,0x3b61e4a2,0x3a2180de,0xba0e9933,0x390766be,0xba8b7ed9,0xba573b91,0xb9888885,0x3b573804,0x3b9b4ab7,0x3b2885e1,0x3b536324,0x3aeea846,0xbac67349,0xbb07715a,0xba879b99,0xbb82288d,0xbbbada01,0xbbe9c2db,0xbb55bcb1,0xbb0a36fb,0xba849eb2,0x39a85293,0xbac90d77, +0xbbcb91c7,0xbc55a957,0xbc0414e8,0xbba679c5,0xbafb8c1b,0xb836b651,0x3a8454e5,0x3ac9045c,0x39eb6def,0x378c0c9d,0xba53c3e9,0x36cf743b,0x3a2eabd1,0x3a81b2ab,0x39825e55,0x38f57724,0x399ed371,0x39456482,0xba49cc4b,0xbb99b2bc,0xbb5394e1,0xbb6f1054,0xbb847614,0xbb77926e,0xbbb05b4d, +0xbbe6e401,0xbc0f5935,0xbc27065b,0xbc1f895d,0xbc0ea101,0xbbb69adc,0xbbac592b,0xbb9e461a,0xbba381af,0xbb88de5a,0xbb8e7f70,0xbb3b85f5,0xbaf2e8ba,0xbafc9a9f,0xbb387646,0xbb521cbd,0xbad115d4,0x389125fb,0x3b1b6171,0x3aaace29,0x394c384f,0xbab2567f,0xb9244754,0x3a1920cc,0x3aee788d, +0x3b088383,0x3b19c1ce,0x3b5a226b,0x3a103555,0xbb202549,0xbbd3ac15,0xbc0d39aa,0xbc202479,0xbc2501ac,0xbc3d96f2,0xbc62b527,0xbc854453,0xbc87c967,0xbc78ae39,0xbc599669,0xbbf6bb3b,0xbbf83b9e,0xbbe90c56,0xbbe468a4,0xbc010648,0xbc0ae03a,0xbc10af64,0xbc1bb54f,0xbc206c2b,0xbbfe5876, +0xbbad2c71,0xbb4c1f3a,0xbab7f7e9,0x3995c363,0x3b2b9950,0x3adf6f3e,0x3aaa5ed0,0x3a230e08,0x3ac50c3a,0x3b074072,0x3b4504bd,0x3b552bb6,0x3b6fa70e,0x3b932ad6,0x39ed3690,0xbb061b29,0xbbc33166,0xbbd6c0cc,0xbc1b4950,0xbc3136ff,0xbc1d2a13,0xbbf3d61b,0xbbc19985,0xbbc21fb9,0xbbb82752, +0xbbb447fe,0xbbd46972,0xbc2e587a,0xbc1f34ee,0xbc0656e9,0xbbdec3a6,0xbbabdcb7,0xbb6e5124,0xbaf3f988,0xb9e51b72,0xb7b7993b,0x3885aa37,0x39b658d9,0x3a4916a1,0x3a9ffac1,0x3b04930e,0x3b071683,0x3b19ed2c,0x3b1f8729,0x3b26ffa8,0x3b21334f,0x3b31d064,0x3b223896,0x39e16286,0xba1de958, +0xbae359c3,0xbb1ffa18,0xbb755ae5,0xbb91f089,0xbba5576f,0xbbb57385,0xbbdb024e,0xbc028661,0xbc12b156,0xbc19ac3e,0xbc1e383b,0xbc23835e,0xbc2197a3,0xbb83d902,0xbb8d35eb,0xbb7a4301,0xbb5d2068,0xbb42ee54,0xbb2e8ae0,0xbb1c21a1,0xbaf33f0a,0xbaed3f5f,0xbac63fa0,0xbaa3c954,0xba81e81e, +0xba4bb00f,0xba137521,0xba17b05a,0xba0e7e37,0xb9f7286e,0xb9e95206,0xb9c47c5d,0xb9cb37fd,0xb99d911f,0xb9ee66a0,0xb9d6f6cd,0xbac6db06,0xbac3c195,0xbaa764a4,0xbac78171,0xbaeb820d,0xbb0ecae8,0xbb229166,0xbb35e9eb,0xbb4f6160,0xbb68aa4c,0xbb775b87,0xbb74598f,0xbb81f9d5,0xbaecd05f, +0xba2c3198,0x39f59586,0x3a3a7e67,0xb9e74d2f,0xba89173a,0xbaadb57b,0xbaca8bb0,0xbab140b2,0xb99cf9cd,0xba652d64,0xba7a64f0,0xba3d27f0,0xbab77218,0xbae14ced,0xbb1531df,0xbae6f674,0xbaad5a9c,0xba27adcf,0xb944d038,0xb7c6443c,0xb9b03cd5,0xb9e737da,0xba16f147,0xba3a12bf,0xba68beb9, +0xb9b6b8cd,0x3a66ef39,0x3a70a2db,0x3a863dce,0x3a3da0e7,0x3a66b286,0x3a43797a,0xb89d8959,0x39c41792,0x38b18ee1,0x37aff011,0x39ce5e58,0x3a8efd7e,0x3ac3968b,0xba5bafcf,0xbb02adde,0xbb2cf674,0xbb67a2fb,0xbb431e7c,0xb9b0f1b0,0xba985dfa,0xba89e9f1,0xba14a35b,0xbb02f9b6,0xbb5fab4e, +0xbba1893a,0xbb904ec1,0xbb51ff04,0xba9dc250,0x3a04f208,0x3a7dca3f,0xb721825e,0xb9cd5120,0xbac0c702,0xbb061d86,0xbaca7831,0xb9b42700,0x3b130653,0x3b129e0c,0x3b22957c,0x3b096e91,0x3b00f109,0x3ac11c96,0xb97dfe86,0x3afeb5c3,0x3b028c63,0xb993737d,0x3a165e10,0x3b981ee0,0x3bd111b1, +0x397fec5c,0xbb43cacb,0xbb74c71b,0xbbc2bb3a,0xbba7c087,0x3a507b50,0xbafa76fe,0xbaf8f432,0xbaacd3e5,0xbb8e7074,0xbbd06e02,0xbc13c94c,0xbbf0bc9e,0xbb9ef56b,0xba916c62,0x3afce0d4,0x3b39c264,0x3a89d544,0xb91b9dc2,0xbad4b199,0xbb47a278,0xbb125406,0x397405b1,0x3b91eb55,0x3bb4079f, +0x3bc6dd05,0x3ba329dd,0x3bb378cf,0x3b9b49c1,0x3a291000,0x3b892551,0x3b62c673,0x3a0f98cb,0x3b565d12,0x3b41e881,0x3bc822c9,0xb9e42bc7,0xbb66e99a,0xbba87662,0xbc24d52e,0xbc0a8be7,0x3a8d0b16,0xbae05227,0xba897cf2,0x3abf596a,0xbb191692,0xbc073f1b,0xbc5d1275,0xbc5a3451,0xbc1704e2, +0xbb347572,0x3b3ba154,0x3b8ca9bc,0x3a861085,0xba356f99,0xbb4f6560,0xbb8c518f,0xbad87bba,0x3b02fbb1,0x3be7bd57,0x3c3cc991,0x3c4f11e9,0x3bea2189,0x3bd3e7ee,0x3bc19ca6,0x3b13a3c9,0x3c063525,0x3c0cff97,0x3a7e8905,0x3af89571,0x3caf4c3d,0x3c712c53,0x3b239004,0xbb8a73fd,0xbc2049e4, +0x3bb3a342,0x3be51c86,0xbbe23d13,0x3aa7cec0,0xbb97cce0,0xbc8eabe2,0xbc883583,0xbc3550e5,0xb9d4cb4e,0x3bb1a5f3,0x3beb912d,0x3ba4d82c,0x3baa86aa,0x3ba859b6,0x3bb58512,0x3bf46435,0x3be3b10c,0x3bb29d7e,0x3b57bd10,0x3acc2f5c,0x3b90e408,0x3965de91,0x3ba75639,0x3c9d047c,0x3c23e574, +0x3b6ed91e,0x3b00cbbb,0xbbe2fbf0,0xbc089124,0x3a8b14d1,0x3c887f2d,0xbd15adde,0xbc7b0f69,0xbbdddf2a,0x3b30e944,0x3b8a5114,0x3bd1104a,0x3b32dcb4,0xbbfe5dc8,0xbc13dce6,0xbb8b83ab,0x3c3aa0f3,0x3b3cb786,0x39d40038,0x3b1d9dff,0x3bc223fc,0x3bfaf96c,0x3bad9256,0x3abc5f9f,0xb9ef59bf, +0x3ad8fd23,0x3ad37608,0x3afe90d4,0x3b32c82f,0x3ace7e7d,0x3b510d61,0x3b7707b9,0x3c2183f7,0x3c2969e0,0x3ba2b458,0x3b591769,0x3b7aa3c7,0x3bb0f85f,0x3bd9eac7,0x3c2307a1,0x3c89ef89,0xbcd3b236,0x3cc622a5,0x3ccd10ce,0x3ca1ca1c,0x3c700205,0x3c1b47f7,0x3c39a3fc,0x3b932ac8,0xbc093d4a, +0xbc3a1ea9,0xbc2349ac,0x399ca0fd,0xb8da397f,0x3b8d6159,0x3be5e926,0x3bcaf686,0x3b3f5622,0xbae09eae,0xbafca488,0xbb2d8b40,0xbb1dcec2,0xbac78782,0xb99b9fd6,0x3a60ffb7,0xb9bb1f60,0x3b18f335,0x3b911951,0x3b28fda9,0x3b11119d,0x3b09264a,0x3ba29460,0x3bac6335,0x3b70decf,0x3bd34919, +0x3bc9678f,0x3c144754,0x3c9c5405,0xbc2e940a,0xbc0817d8,0xbb7578cd,0x3ae9e86e,0x3bb8bc85,0x3c4121c9,0x3c7eb93a,0x3c819177,0x3c43bae2,0x3c03d464,0x3c118459,0x3a5d81df,0xbb32f32c,0xbaf71c60,0x3b2cb71e,0x3b8f7914,0x3b858c61,0x3b6740b2,0x3b1dc8c4,0x3b1b5e86,0x3a3d0abd,0xb9cf46f5, +0xba965ac3,0xbae7a924,0xbaa72107,0xba61da40,0x3b06ee81,0x3b714aae,0x3b183c7b,0x3b161717,0x3a86917b,0xb9cc7ac3,0xbac71ff9,0xb992933c,0xbb1b61eb,0xbbf03847,0xbb6fc351,0x3a0546c5,0xba7518a2,0xbadde82f,0xba16038f,0xbb179e71,0xbba58717,0xbc1b9dfe,0xbb996819,0xbb431dce,0xbb1211d3, +0x39cd09b2,0x3ad2cb0a,0x3ae6bc0c,0x3a4dbe25,0x3a20e8b7,0x39e5146e,0x3ad5508c,0x3af7e753,0x3a6cfcaf,0x397409f5,0x394c9065,0x3a8c1377,0xba10d5fc,0xbae2f740,0xbb8cfa00,0xbb8b81ef,0xbb99800c,0xbb933fc6,0xbb589f28,0xbb7c80a1,0xbb92597d,0xbba4dd4b,0xbbcdffcb,0xbbe392ce,0xbba241e1, +0xbbaf135e,0xbb915cfb,0xbb483194,0xbb0d632b,0xba2a7490,0xbab2e840,0xba03b7ef,0x3a0cda39,0xbace5bdd,0xbb0f3b45,0xbaa31d9c,0x38f6f0e0,0x3ac1d85b,0x3b464e22,0x39f59f74,0xba09d64c,0xbaa619eb,0x38867a47,0x3a7d4cca,0x3accfd7f,0x3b03e883,0x3b04c9cc,0x3b365194,0xba889bf8,0xbb80ad5e, +0xbbec254e,0xbc048c90,0xbc143a93,0xbc249667,0xbc3e560a,0xbc632b91,0xbc83e24e,0xbc8ba974,0xbc83e45e,0xbc6b40f0,0xbc00c428,0xbba027c1,0xbb84c0b2,0xbb8ab3c8,0xbbac19ec,0xbbc1abc1,0xbbd89387,0xbbfb15b5,0xbc09253c,0xbbd37e11,0xbb8e88aa,0xbb23c54c,0xbb0497c5,0xbab9f0d0,0xb98f88e3, +0xb90fa96c,0x396fa811,0x39bab195,0x3a901b4c,0x3ad6a56f,0x3b2e2cf9,0x3b2dea50,0x3b35407f,0x3b63c5e2,0xba800ecc,0xbb8be638,0xbc12ff48,0xbc18270b,0xbc34128d,0xbc43eeba,0xbc2ebd04,0xbc157de4,0xbc018a42,0xbbd4d4c8,0xbba0200b,0xbb6b2489,0xbb8bd92d,0xbc11e35d,0xbbe756ba,0xbbcc12c4, +0xbbb13b51,0xbb93e795,0xbb64cabe,0xbb168df8,0xbad00d34,0xbaab9f7c,0xbabfd5af,0xbab80762,0xba97823f,0xba5aadde,0xba07780a,0xb9fa31d6,0xb9d738b6,0xb9d3f7e3,0xb9acd2b2,0xb9ed0c6a,0xb98eefd7,0x398790c1,0xbad790f6,0xbb1c0c95,0xbb506df2,0xbb60388a,0xbb8f92c4,0xbb99b208,0xbbaac69d, +0xbbb93556,0xbbd53b3e,0xbbf0ac7d,0xbc0b5932,0xbc09e396,0xbc0f390d,0xbc11a5e4,0xbc064edb,0xbb82c3b7,0xbb84a152,0xbb80b299,0xbb6d634b,0xbb5e9bbb,0xbb562be4,0xbb4e6254,0xbb37ee16,0xbb393829,0xbb2c3d51,0xbb204e42,0xbb156913,0xbb0c86ad,0xbb01186a,0xbb01f91d,0xbafebd62,0xbaf7ade3, +0xbaf5332c,0xbae9729b,0xbafefd70,0xbacfb241,0xbad2c130,0xbaaed274,0xbb2ed378,0xbb232ccb,0xbb1508f0,0xbb26df39,0xbb376d73,0xbb4804df,0xbb59c35f,0xbb67e4cc,0xbb750b17,0xbb788a53,0xbb7e41e2,0xbb8098c8,0xbb823a36,0xbb4dcb0c,0xba8dce6c,0xb7a56147,0x390ece55,0xba6ddfed,0xbabc85a5, +0xbacf2821,0xbaf86a30,0xbae07221,0xba29df97,0xbaa1afb7,0xbaa98fa1,0xba942094,0xbabec9d1,0xbae121aa,0xbb1cd490,0xbb072912,0xbae5ef14,0xba9fd909,0xba3351cb,0xba021ed9,0xba385432,0xba6e1681,0xba8a31d2,0xba9a9168,0xbaad8528,0xba60be56,0x39c24ba0,0x394dd28a,0x39a4e87a,0x3957a4e8, +0x39cf8c88,0x398acff9,0xba2b57eb,0xb8d144e9,0xb9c5bab2,0xba2f606f,0xb8b19363,0x3a22b067,0x3a48a750,0xbab3daea,0xbb1d4a4d,0xbb331a97,0xbb71fa6a,0xbb52d196,0xba38f9f3,0xbad50121,0xbab18b56,0xba627581,0xbaa08238,0xbb216fdb,0xbb9513a8,0xbb918963,0xbb72ecb8,0xbb0a8984,0xb9945092, +0x399de145,0xb9de9c44,0xba81d33b,0xbb034204,0xbb1f03a8,0xbb09f3de,0xba7ffb19,0x3af6cc4d,0x3aa98896,0x3acc646e,0x3ae4caef,0x3ad00b4e,0x3a9a41f3,0xba2f909e,0x3acc56fa,0x3ab360b3,0xbab60ff1,0xb8ad129e,0x3b7ef8c4,0x3ba50a6e,0xba4f067c,0xbb6ad71e,0xbb646d54,0xbbc67c07,0xbbac710a, +0x39f75cb2,0xbb167bcf,0xbb00d272,0xbac87989,0xbb3239e5,0xbb93d77d,0xbc047e95,0xbbf01f3a,0xbbb764ce,0xbb222812,0x3a630d84,0x3b048da4,0x3a32522f,0xba56de7a,0xbb18000c,0xbb551d64,0xbb3ee241,0xba4267f7,0x3b875a20,0x3b7a7f56,0x3b91e42b,0x3b925188,0x3bab7113,0x3b944313,0xb8f4cb46, +0x3b6d8363,0x3b3ccb63,0xba4f9453,0x3b2f069c,0x3b19efba,0x3b9814b3,0xbade8cf3,0xbb83c342,0xbb8f35c1,0xbc140cbf,0xbc023090,0x3a165e60,0xbb1b6176,0xba9b6337,0x3abf9ca6,0x3a5847a9,0xbb8e90c7,0xbc3a961a,0xbc4c5591,0xbc24a2aa,0xbb9a87db,0x3ab158bb,0x3b59d231,0x3a4a2292,0xbad3e188, +0xbb81420d,0xbb9b290a,0xbb416b90,0x3a5ba53e,0x3be86c03,0x3c2c512d,0x3c3d38ef,0x3be3c37c,0x3bddde71,0x3bce25f8,0x3b1115f5,0x3c0dbda1,0x3c06514d,0xbaad3566,0x3a18718e,0x3cb2b94b,0x3c58dad6,0x3ae1f3aa,0xbbc609e2,0xbc52171a,0x3a9631c5,0x3b7bb417,0xbbe16fe2,0x3aceef69,0xbb510761, +0xbc7defa0,0xbc7ecb6a,0xbc3e4732,0xbb9488ff,0x3b506c8e,0x3bc01c16,0x3b6c0a63,0x3b8dbba4,0x3b974ad6,0x3bb0c4ef,0x3bd8713c,0x3bbbfd39,0x3b8559a5,0x3b4b7acd,0x3aa02485,0x3b393cad,0xb995aee8,0x3ba4b34c,0x3c991ffe,0x3bffc3f0,0x3abb634f,0xb93a9443,0xbc27a4c6,0xbc1faf76,0x3b5b295a, +0x3c96da76,0xbd0ecd5d,0xbc86fe3d,0xbc37ad60,0x3951b535,0x3c0630dd,0x3be3748b,0x3b262979,0xbbc62425,0xbc24008e,0xbbbde1fa,0x3c422535,0x3b2a5915,0xb9535005,0x3ad4f787,0x3b9ea7f0,0x3bc52e92,0x3b2e2a5f,0x3a12a5f4,0xba46ff4c,0x3a30eea5,0x3b07cb23,0x3b3ecf1f,0x3b465b44,0x3a85b58a, +0x3b2f3ed0,0x3b8f5844,0x3c1bda8f,0x3c1812f7,0x3b72f054,0x3b4dcd1e,0x3b64d3eb,0x3ba82b02,0x3c0dc23a,0x3c2e9504,0x3c3a2dd7,0xbcd35808,0x3cd4914c,0x3cd2beed,0x3c9b3f55,0x3c53d9d8,0x3bc0859f,0x3c82479a,0x3c34573f,0xbc20dc45,0xbc158998,0xbc16a70d,0xbb82341b,0x39e8822c,0x3bbea977, +0x3c09f33f,0x3c002d50,0x3b94e1ac,0xbaea138b,0xbac15d91,0xbaf673cd,0xbb337f12,0xbb077d01,0xb9fe26f5,0x3a2cb614,0x3a5eeea3,0x3b386f75,0x3b593909,0x3afc3bbf,0x3ae93172,0x3b0196ce,0x3bab2f5c,0x3bce43e2,0x3bdaf8b1,0x3bac9bfc,0x3b51e0e7,0x3bf55bad,0x3ca43120,0xbc56bc28,0xbc2113ea, +0xbbde9139,0xba638d18,0x3b992d49,0x3c0a0523,0x3c38c656,0x3c21c700,0x3c5cd795,0x3c3af58a,0x3c10c072,0x3b78e921,0x390ab8f2,0x39d7d0cd,0x3b44a6e0,0x3b93828e,0x3b68e0a9,0x3b261c24,0x3a81f478,0x3a8fb3ed,0x3a3dd792,0xb9af2997,0xbb18b0fa,0xbb2917fa,0xbae88ba9,0xba98a50f,0x39e97b6a, +0x3af7c58d,0x3ac51234,0x3a65e80a,0xb90eb706,0x3916e72f,0xbab944fa,0xb983beb6,0xba889d6a,0xbc10063f,0x39b157c5,0x3b984b70,0x3a73ffed,0xbab37a98,0xba2f9560,0xbb121872,0xbb2204ad,0xbb5db3a1,0xbadc38bc,0xbb0237d4,0xbb434360,0x390bde52,0x3ab30ce9,0x3a9b5c89,0x3a8968a6,0x3aa37c37, +0x3ad3d306,0x3b2e5d4f,0x3b204f6e,0x3a4cc468,0x393a8bfe,0x3909ca09,0x3ad03eea,0xbaa2c091,0xbb2f5473,0xbb6dc625,0xbb9efdff,0xbba29226,0xbb76cf2c,0xbb16011b,0xbb0d7b15,0xbb02440b,0xbad4db71,0xbb13afc6,0xbb2b0b09,0xba479ae6,0xbbd546a9,0xbb8a5519,0xbb17c680,0xba68ad00,0xb839ad03, +0x39251d7b,0x39f5c5bb,0x3a457c93,0xba9986f7,0xba887a98,0x39373c88,0x3aa07961,0x3b0c7be8,0x3b4fe433,0x3919dce5,0xba1ff37e,0xb94ed411,0x3a38d258,0x3ac91c15,0x3ae0b1d7,0x3b23e8df,0x3af534a1,0x3a9bb2bb,0xbb2628bc,0xbb9e473f,0xbbe8ef45,0xbbee9d71,0xbc065c9f,0xbc1f9fa1,0xbc3986f6, +0xbc59e11c,0xbc730f71,0xbc8a9658,0xbc88ef00,0xbc75f53f,0xbc1b4b43,0xbb396309,0xbb0058dc,0xbb10892f,0xbb386cd7,0xbb4cb494,0xbb7a6252,0xbb9c152b,0xbbb63e68,0xbb8b965b,0xbb47acac,0xbaecb40b,0xbafc83c1,0xbb019207,0xbad9ce89,0xba80b550,0xb97955f5,0x3980086b,0x3a49ce44,0x3aa4594c, +0x3b0555ae,0x3ad2dea5,0x3abed4bc,0x3af6955c,0xbb0f20c5,0xbbbd249e,0xbc275258,0xbc2e478f,0xbc3ac0ac,0xbc48bf66,0xbc35c0b3,0xbc28869d,0xbc1bb67c,0xbbe483d7,0xbb922f2e,0xbb162dc9,0xbb320d09,0xbbd3c55b,0xbba3fd4d,0xbb9b8843,0xbb91dfc8,0xbb874434,0xbb710829,0xbb4827e2,0xbb38935d, +0xbb20bb3a,0xbb1f9b78,0xbb19cb16,0xbb09be23,0xbae56fc8,0xbace85f8,0xbad91f3e,0xbaeed4a5,0xbafda221,0xbb03b158,0xbb0f6aa9,0xbb0fa210,0xbb02b90f,0xbb502667,0xbb7059f1,0xbb84743e,0xbb808c95,0xbb8f48ed,0xbb8cd600,0xbb95c980,0xbb9ed388,0xbbace4f3,0xbbb7c1d2,0xbbd7dbd1,0xbbd067dd, +0xbbdfcd55,0xbbe2a7e1,0xbbcaf146,0xbb85651c,0xbb850d44,0xbb8653df,0xbb8173eb,0xbb7e07f6,0xbb7ce34d,0xbb7d0689,0xbb762aba,0xbb73fd0b,0xbb6a4186,0xbb5e95a8,0xbb53fd11,0xbb4b5060,0xbb3c09ac,0xbb424245,0xbb4284f7,0xbb42e7fe,0xbb44445e,0xbb428786,0xbb4bbc09,0xbb3fb2c1,0xbb3f8584, +0xbb2fef45,0xbb73cf7c,0xbb6d0961,0xbb655f20,0xbb70ffaf,0xbb7a6048,0xbb7e1755,0xbb8451b5,0xbb870c5d,0xbb864f6c,0xbb833660,0xbb83c7e7,0xbb82bba4,0xbb83dff9,0xbb934f8e,0xbaa3c155,0xb9adc2d9,0xb9962344,0xba95bae8,0xbacf2dfb,0xbadb0dcb,0xbb011f5f,0xbaea30cd,0xba518748,0xbaae61b4, +0xbab1b74a,0xba9f97ac,0xbaa275d4,0xbabe3993,0xbb116b52,0xbb07d7ca,0xbaf9c890,0xbac28e79,0xba83521f,0xba564cf3,0xba5c1195,0xba99387a,0xbab25299,0xbaccf3c3,0xbac8475e,0xba98fbf7,0xb7d250ab,0xb9e82f02,0xb9a8e328,0xb922c338,0xb78ef06b,0xb924da77,0xba8de2b1,0xb9eca5c9,0xba2867e7, +0xbaa6e186,0xb9e15ceb,0x3943c1d7,0x38722d39,0xbad66963,0xbb239ea6,0xbb307513,0xbb659b12,0xbb4e7eea,0xba7d0f06,0xbaf04669,0xbab1cb67,0xba4a1bf5,0xb965b0c5,0xbaa8990a,0xbb7b80eb,0xbb878d1c,0xbb7c4dce,0xbb271ca5,0xba80ea05,0xb9a9d2e6,0xba19e79f,0xbab62423,0xbb12969f,0xbb2f5bb0, +0xbb1cd374,0xbab257c8,0x3ad90b2e,0x3a0a8180,0x3a562e5f,0x3ad45e4b,0x3ab3ce79,0x3a8b6d6e,0xba40c18d,0x3aa1e81f,0x3a491ab4,0xbb14c8b4,0xba0524bb,0x3b5088ca,0x3b5f67ea,0xbac3bf86,0xbb782a04,0xbb61df92,0xbbbb306c,0xbba25801,0x392437ff,0xbb157f91,0xbad5a29b,0xba9962e6,0xba3f2ccf, +0xbb190411,0xbbd9b981,0xbbdc3208,0xbbbf85d8,0xbb50e9d9,0xb9a72ec0,0x3a802323,0x39e71c48,0xbaa41b29,0xbb2e99d3,0xbb602a6e,0xbb543bb3,0xbabafe7a,0x3b837d45,0x3b147cc4,0x3b47fe58,0x3b8b7278,0x3ba4f31a,0x3b8c0a93,0xba055bcd,0x3b40a0d6,0x3b0de83a,0xbb0a0747,0x3b0e7d76,0x3ae5de9e, +0x3b35622b,0xbb224a15,0xbb877d1e,0xbb83dc10,0xbbf98e63,0xbbeaaef5,0xb9b55538,0xbb37e931,0xba6ce6b6,0x3afee93c,0x3b87fdd9,0xb9b7f55c,0xbc1256b0,0xbc34fafd,0xbc270baf,0xbbbd07b7,0xb9dab944,0x3afb9d5f,0x3a5a9e78,0xbb079e7e,0xbb8507b7,0xbb9b51ad,0xbb79b185,0xb99f166c,0x3be692c7, +0x3c116e66,0x3c20f1c8,0x3be1d026,0x3bede752,0x3bded23b,0x3b2104f6,0x3c0e3f59,0x3be477ba,0xbb786091,0xba1a62ba,0x3caca0fb,0x3c2eb448,0x3a72d33e,0xbbe7716e,0xbc5e7d6a,0xbb2612e9,0x3ac24a54,0xbb924fa8,0x3b193ca6,0xbacb19b5,0xbc4fa511,0xbc684b81,0xbc3cce8b,0xbbdc5a13,0x3ac549e8, +0x3b9969fb,0x3b2e5b8f,0x3b545c92,0x3b6e7acf,0x3ba4e8ff,0x3bafefb1,0x3b8adcd4,0x3b23bf26,0x3b4bc46c,0x3aa2f028,0x3aaca0ca,0xb98d830c,0x3b9d8dc7,0x3c860146,0x3bbf9ebe,0xb8e45080,0xbb366239,0xbc4e448a,0xbc2357bc,0x3bb01931,0x3c9d5e30,0xbd031c34,0xbc8e7526,0xbc5b0474,0xba6ba6ab, +0x3c4c3dae,0x3be74a12,0x3ae14687,0xbb7f8bff,0xbc276218,0xbbcfb98f,0x3c4345d2,0x3b292d37,0xb9e5045a,0x3ad57782,0x3b552475,0x3b7aba0a,0x3a0fb557,0x3916e1f9,0xb9f171c0,0x394c1d91,0x3b0a0a4f,0x3b5dd703,0x3b41b885,0x3a3fdfb6,0x3b215ba0,0x3ba28716,0x3c0cabe0,0x3bfd8561,0x3b27a72b, +0x3b14d1b6,0x3b3d9f50,0x3bc11433,0x3c351bee,0x3c2f99ca,0x3b5dd56a,0xbccd461b,0x3cc8f744,0x3cc9d933,0x3c85c5d6,0x3c0d53b4,0x39e9ebcd,0x3c7f492a,0x3c6aea6a,0xbbdf3289,0xbb94d791,0xbbd7795e,0xbbd69625,0x3aa370ef,0x3bea9969,0x3c1e218b,0x3c0ad955,0x3baa5b6f,0xbacbe1d3,0xbaa170ca, +0xbaab65e9,0xbb18cbb3,0xbb12857c,0xba35beea,0x39df8994,0x3b03ef8a,0x3b536503,0x3b0406b0,0x3aa683e2,0x3aaf709d,0x3acfd1a9,0x3bb45b62,0x3be7670f,0x3c0db67b,0x3b30991d,0xba52baae,0x3ba58b1d,0x3c9933b2,0xbc5f11f8,0xbc32db0e,0xbc0eb779,0xbb393b7b,0x3b404678,0x3b8a4158,0x3bb2e8da, +0x3b6ee6d5,0x3c580025,0x3c5d2623,0x3c11c9da,0x3bcec79a,0x3b3ae704,0x3b3c6abe,0x3b3f7e69,0x3b80b571,0x3b294c54,0x3ac1c63e,0xb99d366f,0xba31432a,0x3955b463,0xba225ff8,0xbb537470,0xbb605f03,0xbb1a6fe7,0xba9c5bac,0xba911c18,0xb7f546e3,0x3a06936b,0xb9d38fbf,0xba83ac8e,0x39bece6b, +0xba819070,0xb933f304,0xba11f3a3,0xbc197cf0,0x3b70a9a9,0x3bf8a6eb,0x3b8c5007,0x3ac97c10,0x3a7dc2f3,0xb95be6fa,0x3aadab4e,0x3b57dfac,0x3a795b2f,0xba99153c,0xbb61b71c,0xba47eff6,0x3a1963fa,0x39e3998f,0x3a83749c,0x3ae01495,0x3b21dcb0,0x3b4a034d,0x3b2b5e82,0x3a44b047,0x39c31787, +0x393c72d4,0x3abbc680,0xbacaa939,0xbb50390e,0xbb55dde2,0xbba12c15,0xbb90ecc3,0xbb0a5713,0xba9d2fb0,0xba445f27,0x38cf1b46,0x3a834966,0x3a9bc1c6,0x3aba8808,0x3b2b5ba7,0xbc030ea5,0xbb986de6,0xbb48c994,0xbabe90bc,0xba9c7165,0x392d5b25,0x39ce65dc,0x39b20a5c,0xba17b4b1,0x38ee5a2e, +0x3a76b030,0x3b095789,0x3b1e36f5,0x3b2f6056,0x39b038e1,0xb9a8f100,0x3aa61d49,0x3ab9ddea,0x3afbf7bc,0x3b00cc94,0x3b3dff53,0x3ad46e94,0xba5963ed,0xbb793d3f,0xbbabdb9d,0xbbcd9879,0xbbccddfc,0xbbf01cbb,0xbc1604e6,0xbc2f998e,0xbc48e93f,0xbc54b29e,0xbc84c557,0xbc899074,0xbc7d149b, +0xbc384334,0xbad94430,0xba0a19dc,0xba22681a,0xba34b108,0xb9f5ce4e,0xba8aec2c,0xbade0162,0xbb1b9f1b,0xbada3816,0xba9ba1e4,0xba089286,0xba77867f,0xbaaea74e,0xbacbf070,0xba0a1cec,0x39b7f013,0x3a759178,0x3a979398,0x3ad1fbe0,0x3b02ded0,0x3a5d5b26,0x39bcb553,0x39661604,0xbb3ff06b, +0xbbced56e,0xbc2323c9,0xbc2fb97e,0xbc334f25,0xbc434aa6,0xbc326ce4,0xbc2f3f89,0xbc2861f0,0xbbf0be7b,0xbb962c6b,0xbb15204c,0xbb0d8730,0xbba0f6f8,0xbb812a75,0xbb7e59bd,0xbb7b3d8c,0xbb763499,0xbb6a507f,0xbb550e8f,0xbb4e2a7d,0xbb35d28f,0xbb2a6893,0xbb1f621d,0xbb0fb388,0xbaeb35ee, +0xbad23953,0xbae9558a,0xbb05b3ee,0xbb0e259c,0xbb1438c7,0xbb1f68f3,0xbb1e5e4d,0xbb40450e,0xbb5dbc9d,0xbb7ae944,0xbb855bd5,0xbb7aa258,0xbb7dd57d,0xbb67836c,0xbb690d64,0xbb70c54f,0xbb768d35,0xbb788143,0xbb904462,0xbb902220,0xbba3d50c,0xbba70349,0xbb97183c,0xbb7ead7d,0xbb69691b, +0xbb723d82,0xbb6ec4a5,0xbb6f61d9,0xbb709a60,0xbb73a808,0xbb75244b,0xbb70f20d,0xbb6a5db2,0xbb6133a4,0xbb57bf22,0xbb51a50d,0xbb43ec72,0xbb4b0c32,0xbb4bda78,0xbb4df56c,0xbb4ff9bf,0xbb51c0c5,0xbb516d1b,0xbb6399d1,0xbb6f553d,0xbb7a90d4,0xbb80911c,0xbb89e846,0xbb93a10f,0xbb949180, +0xbb954eef,0xbb9193a1,0xbb92cd21,0xbb9123df,0xbb8ba61b,0xbb82a9e6,0xbb74b532,0xbb88b88b,0xbb82830d,0xbb972ad9,0xbaa2e6b0,0xba02af8e,0xba0e19ec,0xba9d74f5,0xbaca7c24,0xbacf01fa,0xbaf3e715,0xbadf27a5,0xba6e14cc,0xbaa87a74,0xbaa3181a,0xba8c77e9,0xba6d3e36,0xba8f2281,0xbafc4e36, +0xbafdbd13,0xbaf7c53b,0xbacc8c4b,0xba9a1f72,0xba831955,0xba62578c,0xbaa8ae19,0xbac3842e,0xbae5d621,0xbacdc8ca,0xbaa77ce4,0xb94e4a13,0xba55a3c7,0xba364874,0xb9796f47,0xb96b9cfb,0xb9c58125,0xba9dbdd1,0xba2c5fa2,0xba4624ab,0xbacff153,0xba1c1619,0xb90f30ed,0xba01db9a,0xbaddbe20, +0xbb1a9b5c,0xbb1c5cb5,0xbb4b543b,0xbb409557,0xbaa76602,0xbafa9431,0xba9e9955,0xb9d4ec63,0x3a3b1540,0xb95626c8,0xbb476b2c,0xbb72d4dd,0xbb799622,0xbb33d179,0xbaccb8f9,0xba61c23c,0xba2d1ef4,0xbaca4e25,0xbb15947f,0xbb3bec07,0xbb20c15a,0xbac4e63b,0x3ac1d827,0x376cd6ec,0x39ac9067, +0x3ade74d8,0x3aa5f0a0,0x3a88912d,0xb9f80354,0x3a814ab8,0x39a558e1,0xbb30c137,0xba313aee,0x3b258ae8,0x3af32365,0xbae1a67d,0xbb6a6b66,0xbb4baa5c,0xbba6d1f1,0xbb92fc1c,0xba06662b,0xbb0c908f,0xba8a34c0,0xb9bf3145,0x3a94a07f,0xb9b53d1d,0xbbac2171,0xbbc27f38,0xbbbf65be,0xbb6d6ce0, +0xbabcc78d,0xb90485fc,0x395377ec,0xbac6b875,0xbb38a239,0xbb6f055e,0xbb55c60d,0xbaea6f5d,0x3b819ea3,0x3a91ac2a,0x3b0923e7,0x3b91483d,0x3b9feb26,0x3b8464f3,0xb9cd2509,0x3b1504ba,0x3ac6d6e5,0xbb3db22e,0x3af7fcc9,0x3a9b7e9e,0x3a6559fb,0xbb2989dc,0xbb733cce,0xbb57751e,0xbbc58166, +0xbbd3252e,0xbaea4384,0xbb504b90,0xb9f8ab59,0x3b35b71b,0x3be1c6a0,0x3b47e364,0xbbda3756,0xbc1c104e,0xbc23aa77,0xbbd428db,0xbb13388c,0x39a3d96a,0x3a70654a,0xbb03d411,0xbb7b846e,0xbb9981bf,0xbb8ac39e,0xba9c6f73,0x3be42c34,0x3be8b68a,0x3c02be63,0x3becfa4f,0x3c014976,0x3bef3bdf, +0x3b45f6bb,0x3c08fed5,0x3bb3b478,0xbbb21982,0xba976317,0x3c9b6017,0x3bfc9ce5,0x38bc54c5,0xbbf02697,0xbc53efee,0xbbaf4a10,0xb8fa93ba,0xba8372a0,0x3b495719,0x393cd1f6,0xbc0d88f6,0xbc51399e,0xbc3abebd,0xbbf3bb5f,0x389f1c43,0x3b5d422a,0x3b08ed9c,0x3b086e0d,0x3b11368c,0x3b7e91ed, +0x3b73ee2d,0x3b2e0d9a,0x3a842ef8,0x3b58028d,0x3ac7eb79,0xb94a751c,0x39933cad,0x3b9b46c0,0x3c4fee0f,0x3b8bee4a,0xba780e32,0xbba96eb2,0xbc5fffdb,0xbc15e0f0,0x3be64119,0x3c99c0c7,0xbceaf3b3,0xbc879ba2,0xbc6101b1,0xba8b503a,0x3c8ac9ee,0x3befd8f2,0x3aa273fa,0xba3b402b,0xbc16914d, +0xbbc8eb33,0x3c2dc373,0x3b3ab3ba,0xb83b9698,0x3a8b264d,0x3aaeca2f,0x3a9e42b2,0xbaae2a16,0xb9a9456a,0xb8fb0632,0x39b7745c,0x3ae4cd59,0x3b4d8cf3,0x3b2ac598,0x3a4266cc,0x3b283f7a,0x3bb1346a,0x3bf267d1,0x3bc29186,0x3aa90ae8,0x3a66b36f,0x3b0dc887,0x3bed27aa,0x3c5e0178,0x3c286dd8, +0xbba6876e,0xbcc4a6b9,0x3caaba3a,0x3cc32034,0x3c4e1bc0,0x3b175369,0xbbbd1c06,0x3c0f5e97,0x3c42ea0d,0xba2b03cb,0x3983cb14,0xbb65db6b,0xbbe2ec76,0x3af811cf,0x3bf44c56,0x3c1bc50d,0x3c0be9c3,0x3bb5075b,0xba41b790,0xbaa40d5e,0xbaae7796,0xbad68acf,0xbaf48218,0xba32f3d8,0x3941f594, +0x3b3da1cd,0x3b6261a7,0x3a73b9fb,0x3a148cdb,0x3a5ba77f,0x3a8e5ccb,0x3bb90e77,0x3bf0cef4,0x3c12eb40,0xba2c105c,0xbba09564,0x3b12764e,0x3c787a84,0xbc4d8496,0xbc43e23d,0xbc1bc03e,0xbb826caf,0x3a430050,0x398c6054,0x39a51baa,0xb953cb3c,0x3c40c263,0x3c69e901,0x3c0a4cb6,0x3c09a293, +0x3bbc68df,0x3b95b8a8,0x3b21ca91,0x3b36170d,0x3acf0ff3,0x398b9712,0xbabae9c8,0xbb2197a2,0xba7e3420,0xbaafb2b7,0xbb75e607,0xbb872fe7,0xbb430693,0xba912d2f,0xbb13c032,0xbacad770,0xb99d7b7e,0xba9b723a,0xba93dce5,0x3a3e4156,0x37c0101b,0x399113a4,0xba5d5cfe,0xbc0c3ac9,0x3bc4b14a, +0x3c1911b1,0x3c06e393,0x3bcc47e4,0x3b9baafd,0x3b57e4e1,0x3baba9bf,0x3c10cbc2,0x3b6a27a1,0x3856639b,0xbb5e3ebb,0xbb0d5ee1,0xba7bc6e1,0xb9585056,0x3a536034,0x3ae31b29,0x3b258e07,0x3b492bbb,0x3b2f9ada,0x3a5534f8,0x3a5012bc,0x399b4660,0x3a1c5e21,0xbadb807c,0xbb5a17a2,0xbb567b21, +0xbb926e25,0xbb54e24f,0xb9807f93,0xb9716e10,0x39688bfe,0x3ab2d279,0x3b1e4373,0x3b538afd,0x3b6ed76d,0x3b96ea5e,0xbc1b8205,0xbbbf373d,0xbba4083c,0xbb5b9d7c,0xbb371b36,0xba4ed5a2,0xb978067a,0x39803a34,0x393d0cf4,0x3aab463c,0x3b0b6cdc,0x3b4ac85c,0x3b30817b,0x3b0349fb,0x3a23f2aa, +0x39b3fdfc,0x3b221dc5,0x3b08418a,0x3b115ce8,0x3b0ec5e1,0x3b3371d4,0x3a86bd88,0xbb22d440,0xbb9af98f,0xbbb1c2c6,0xbbaa3a30,0xbbad63b1,0xbbd5f7f1,0xbc06f8e1,0xbc210603,0xbc33c006,0xbc34b55a,0xbc73c7bf,0xbc8306ee,0xbc7a073d,0xbc4ce1d6,0xbaaaacf4,0x393eda81,0x396e0a80,0x3a19a053, +0x3a90c151,0x3a5d3d5c,0x3a48aa26,0x3a16ffd4,0x3a4d6204,0x3a4dd7ca,0x3a89045c,0x39f3ab3b,0x37e15185,0xb9d84804,0x3a2f53d5,0x3abf44c7,0x3b0b5c0d,0x3b0a0465,0x3b221fcd,0x3b2f7a6e,0x3a2af386,0xb9f1c405,0xbabf9239,0xbb5dd3a6,0xbbc7a212,0xbc0c6cc3,0xbc208b68,0xbc212008,0xbc358d33, +0xbc27e7ad,0xbc2b9f2c,0xbc2a87c2,0xbbfea32d,0xbbaf8d17,0xbb63a5a5,0xbb257818,0xbb7c4eab,0xbb4462d9,0xbb479e47,0xbb4bf2fd,0xbb4ef167,0xbb4d0edf,0xbb493054,0xbb499991,0xbb32d807,0xbb20f9d5,0xbb11a552,0xbb004994,0xbaceaccd,0xbab50abb,0xbacb8969,0xbae890a0,0xbaf67eb1,0xbaf86ddb, +0xbb03e6b0,0xbaf44a3c,0xbb378336,0xbb378167,0xbb57d77a,0xbb6b8057,0xbb627f06,0xbb5aa4f7,0xbb3e82c2,0xbb37be6f,0xbb3bfb51,0xbb35b0c5,0xbb31bb75,0xbb42ad33,0xbb4cac88,0xbb6c7bc4,0xbb6fda0b,0xbb5b9750,0xbb4280a5,0xbb149bd0,0xbb258ce6,0xbb278cdc,0xbb2d1090,0xbb317ab9,0xbb3664e3, +0xbb3dd419,0xbb37c5f3,0xbb338b2a,0xbb2d997e,0xbb26d3d9,0xbb233bee,0xbb190e3b,0xbb1dd8b1,0xbb1d6601,0xbb1e919e,0xbb1f79ed,0xbb21fa85,0xbb19f334,0xbb4406f3,0xbb5b5b52,0xbb7e460a,0xbb516e25,0xbb79a1cf,0xbb9329df,0xbb90a30e,0xbb8f1add,0xbb881cd2,0xbb871bdb,0xbb830ff0,0xbb7a1d0b, +0xbb5ea5d7,0xbb3aee0b,0xbb768a9b,0xbb564153,0xbb5b9a02,0xba942b6e,0xba03c0d5,0xba2d1851,0xba941016,0xbab5720f,0xbab465db,0xbad7f96c,0xbac8ea9b,0xba8250b8,0xba957e8a,0xba8682ee,0xba527d73,0xba168ae3,0xba468bf9,0xbad102a5,0xbae21c8a,0xbae824b8,0xbaca7592,0xbaa18e47,0xba8b8ea9, +0xba5ee94c,0xbaa5fe8d,0xbabe4954,0xbae7f053,0xbabea25a,0xba9ab274,0xb94c56df,0xba6fb397,0xba4e9e79,0xb8b674dc,0xb976fb1b,0xb9cde8c0,0xba87d9db,0xba2c366e,0xba35957a,0xbacc3d2b,0xba11ecc8,0xb96cddd4,0xba3cbafb,0xbac8b5b5,0xbb062201,0xbafebc3d,0xbb2c540e,0xbb2ec860,0xbad3951e, +0xbaeffb2c,0xba737fe2,0x38c2d508,0x3ab3db08,0x3a19e26b,0xbb133a47,0xbb521242,0xbb6d570b,0xbb3a467f,0xbb01c5cf,0xbaaaabce,0xba4b0f92,0xbace5445,0xbb142be3,0xbb431419,0xbb18b511,0xbabbea9b,0x3aac4866,0xb97e850e,0x38e46720,0x3afda99d,0x3aa0d4f8,0x3a87fbe7,0xb78a7fac,0x3a60443d, +0x38e07f94,0xbb27a240,0xba1f342e,0x3b05ad39,0x3a4bc154,0xbad24252,0xbb4a54c7,0xbb2640dd,0xbb900a9b,0xbb829fb3,0xbab63463,0xbaef0ad4,0xb9a9c157,0x3a198f4f,0x3b242ce9,0x3a9385ae,0xbb836910,0xbba7471c,0xbbb89ffa,0xbb82c152,0xbb19df13,0xba93bb01,0xb9110c32,0xbae80752,0xbb41a766, +0xbb8032d5,0xbb495471,0xbaf21b74,0x3b7ce53b,0x39e3691e,0x3acb17d4,0x3ba2574e,0x3b9934ab,0x3b7a5f84,0x38e5fca0,0x3aefcd53,0x3a9d4102,0xbb4000c7,0x3af070fc,0x3a875b4f,0xb90d4536,0xbb0df702,0xbb44f2bb,0xbb190111,0xbb967608,0xbbc0b318,0xbb61fb15,0xbb562a26,0x38fdaac8,0x3b748406, +0x3c0ca9f6,0x3bb38669,0xbb939444,0xbc0259ee,0xbc1af04b,0xbbe8235b,0xbb80c43c,0xbab411ae,0x3a0efa23,0xbafa188f,0xbb6ec451,0xbb989875,0xbb8d0af1,0xbae895a9,0x3be12c5a,0x3bb533e0,0x3bd0688e,0x3c02cfc5,0x3c0b99ee,0x3bf98492,0x3b74d10c,0x3bfe57f9,0x3b891d71,0xbbc20d69,0xba8d7495, +0x3c821b30,0x3b9abf70,0xba3d8548,0xbbe55a4b,0xbc3b4a5a,0xbbec1c62,0xba8e28db,0x3b25979f,0x3b80a712,0x3afa1963,0xbb867d05,0xbc3c4a47,0xbc3a3efa,0xbbeea3c0,0xbaa15480,0x3afbcfd0,0x3ad95913,0x3a9af709,0x3a72c8ca,0x3b150d54,0x3af31f44,0x3a9134b0,0xb995c59a,0x3b6454dd,0x3b000372, +0xbac8ca92,0x3aaa5915,0x3ba273c9,0x3c0b0a67,0x3b4b00b4,0xbaacd765,0xbbdc5ac9,0xbc5b33c0,0xbbf24a8c,0x3c0b2d2c,0x3c8f2f0d,0xbcc8dec5,0xbc5f43ac,0xbc50f003,0xba224bc3,0x3caa31c5,0x3c05b655,0x3acbb97b,0x3b390819,0xbbfee5ed,0xbbbeb867,0x3c043db3,0x3b45c96e,0x3a216ad1,0x389a354a, +0xb9937952,0xba4533a7,0xbb10190c,0xba2d314c,0xb8cf03dc,0x3a12bdaf,0x3a8968ac,0x3b15e9a9,0x3b138a23,0x3a7f3ff5,0x3b3d5b60,0x3bb787c8,0x3bc9af63,0x3b861928,0xb92c6db6,0xb9fca6c8,0x3aee8be9,0x3c11ba40,0x3c7ba9c9,0x3c101e6d,0xbc4ac6fe,0xbcb62b98,0x3c801545,0x3cc0a20c,0x3c0f7ba3, +0xbb81efa0,0xbc42f042,0xbb1672c5,0x3bb5a307,0x3c02d0ba,0x3b7ee2eb,0xba9ff870,0xbbb2cef1,0x3b0ddb6d,0x3bdc2c4e,0x3c06ba91,0x3bfdc437,0x3bb062da,0x3a143d70,0xba9ad86c,0xbac1fbbe,0xba429557,0xba7b562d,0xb989be78,0x38ce3afe,0x3b5f4587,0x3b5c1af1,0x399f9a60,0xb92e8a5a,0x3985eedd, +0x3a355c03,0x3bb85090,0x3be58ce7,0x3bf8a2f6,0xbb703a09,0xbc008c85,0xb9c955d8,0x3c202d28,0xbc2a21e4,0xbc4bb79f,0xbc1acb2a,0xbb948808,0xba9893d2,0xbb31038f,0xbb48f5fc,0xba37b895,0x3c1e1368,0x3c5d31ce,0x3c05d053,0x3c260d1b,0x3c0a1fb0,0x3bc1a359,0x3b093575,0x3a9e433c,0x3a0337b6, +0xba84aad0,0xbb1b2afa,0xbb6e1f7e,0xbb172e5c,0xbb164a18,0xbb819deb,0xbb92aa54,0xbb5f19df,0xba955c28,0xbb3bceac,0xbb204072,0xba5856c9,0xbac0c22b,0xba34042a,0x3a790ef1,0x3aa1dffc,0x3a74ab02,0xba994753,0xbbd8540f,0x3bef0c96,0x3c263346,0x3c3e3cee,0x3c350243,0x3c1c212b,0x3bea005c, +0x3c06d4b4,0x3c426adf,0x3bcafbdb,0x3b0e5730,0xbb1b51c2,0xbb37f04e,0xbb23f0ac,0xba8c4449,0x3a1bec86,0x3ac8dac2,0x3b089804,0x3b317924,0x3b23b9d7,0x3a7c057f,0x3a8fc4ea,0x39672c5d,0xba196339,0xbafc2c94,0xbb5a5738,0xbb5d4849,0xbb640c58,0xbad69dd8,0x3aa77e82,0x3a0194d3,0x3a3a5835, +0x3ad94d8e,0x3b305288,0x3b7ff5fa,0x3b997ceb,0x3bb3a4ec,0xbc30c467,0xbbdc1920,0xbbddf039,0xbbad75e1,0xbb886728,0xbae73916,0xba185768,0x3a133c76,0x3a97d347,0x3b1e562a,0x3b57b9d7,0x3b766847,0x3b491c0e,0x3af2b411,0x3a9a34d9,0x3ab9f797,0x3b4a9da5,0x3b2a914f,0x3b24835b,0x3b1d292a, +0x3b04b0c3,0x3860966e,0xbb6d2f19,0xbba678a3,0xbbadd1c9,0xbb8ec8fe,0xbb9737db,0xbbbf201a,0xbbe78bc2,0xbc0d8494,0xbc1b1386,0xbc13b954,0xbc4fc2b2,0xbc68fd82,0xbc6f764f,0xbc5a64f7,0xbacd6eb9,0x38a6abef,0x398a43ae,0x3a72c8cf,0x3ac611cf,0x3adc1603,0x3b0c79bf,0x3b27ae07,0x3b28c263, +0x3b1eff60,0x3b2664a8,0x3af74f3d,0x3ac5aba8,0x3a905542,0x3af1d1d8,0x3b193e71,0x3b3e5949,0x3b37225a,0x3b410af2,0x3b52d6e8,0x3a49a488,0xba886b80,0xbb37f857,0xbb691743,0xbbadbf05,0xbbd3c907,0xbc057a86,0xbc08f0dd,0xbc239596,0xbc1b7d3c,0xbc24c8a3,0xbc29d7cf,0xbc0773dd,0xbbcfad62, +0xbba11a1a,0xbb52c8b9,0xbb3977b2,0xbb07bbb5,0xbb123fb1,0xbb1a77e3,0xbb20dc90,0xbb26bc30,0xbb31c8dd,0xbb3b703e,0xbb299366,0xbb152d3d,0xbb018243,0xbad5af14,0xbaa80eed,0xba9111a0,0xba99964c,0xbaa583fd,0xbaaaba12,0xbaa1f054,0xbaa5f063,0xba872c85,0xbb0c0870,0xbb000a41,0xbb206f50, +0xbb385484,0xbb402ee5,0xbb38ebb3,0xbb221ef0,0xbb190251,0xbb2051ca,0xbb16001a,0xbb1435a7,0xbb1ab6ff,0xbb201104,0xbb2ffb8b,0xbb2c04d2,0xbb1e84f0,0xbace9d6f,0xba51428b,0xba934bee,0xbaa1d838,0xbab68a02,0xbac65d28,0xbad31834,0xbae9fda4,0xbad6bb46,0xbacf41f6,0xbac90c1e,0xbac15d39, +0xbabb302a,0xbaa9ab9e,0xbaadbcac,0xbaaa77ed,0xbaa96bdb,0xbaa75593,0xbaa9aaf3,0xba9164d2,0xbaeed104,0xbb104015,0xbb3ceaf8,0xbafd31c7,0xbb29f176,0xbb61e21c,0xbb5bd3b4,0xbb58d9f7,0xbb49f5df,0xbb48a7a2,0xbb40abaf,0xbb396739,0xbb17ad27,0xbaddabfb,0xbb2b3d53,0xbb00e00b,0xbace5f3b, +0xba750551,0xb9ecb759,0xba2333f1,0xba79331b,0xba954f92,0xba967d4b,0xbab6b813,0xbaace448,0xba855787,0xba6fbb5c,0xba40b6e7,0xba00cfc0,0xb991df21,0xb9efbfb2,0xba9bfad1,0xbabbdaff,0xbacaad6d,0xbabadda2,0xba9a2bc4,0xba86edcd,0xba4c0e10,0xba9ea264,0xbab829de,0xbae98d6d,0xbaa4c694, +0xba872039,0xb95d640f,0xba7303c6,0xba4dfcdb,0x38acbe7a,0xb97cca9e,0xb9d3ea74,0xba59ec5f,0xba19eabe,0xba0a37ca,0xbab72c50,0xba01f295,0xb91335b5,0xba202aa8,0xba92b209,0xbaccfc80,0xbac42ea6,0xbb0f1b75,0xbb1c9096,0xbaf071b9,0xbacd3f25,0xba0e268e,0x3a0f1880,0x3ae4c0d4,0x3a949f82, +0xbab0e0c7,0xbb2acfd7,0xbb56986a,0xbb3853c6,0xbb11b752,0xbad69903,0xba7c43f1,0xbadf3eeb,0xbb14739e,0xbb48526d,0xbb0800ca,0xbaa03f37,0x3a90b15a,0xb998f5f0,0x389e9960,0x3b0c3001,0x3a9dc092,0x3a891231,0x39f0bbaf,0x3a5f7ef4,0x38fcf3c6,0xbb058448,0xb99cf802,0x3adaf7f1,0x3960aa4e, +0xba9abac2,0xbb1cda5c,0xbb07526d,0xbb7bf59f,0xbb6cee95,0xbb0db148,0xbab23622,0x39e315da,0x3ab0fba7,0x3b561fcd,0x3b065bf0,0xbb2927c5,0xbb87f989,0xbba8b334,0xbb870e2d,0xbb434dff,0xbafefd3b,0xba1dee7e,0xbb0beea0,0xbb4fb7ea,0xbb8b6d50,0xbb304a80,0xbad6c01e,0x3b6b31e7,0x39370ceb, +0x3ab3b6aa,0x3bb4006b,0x3b8ee14b,0x3b680cf5,0x3a3af02c,0x3ad7a0f9,0x3a9d8380,0xbb22d7a0,0x3af0aa70,0x3abab5d9,0xb8c38226,0xba8f7014,0xbaf8af7e,0xbaba2915,0xbb67bb86,0xbbb3c483,0xbb9aa21b,0xbb423f8f,0x3a487e64,0x3b8cb048,0x3c15508c,0x3be6b759,0xbaff9548,0xbbcc1763,0xbc0d140f, +0xbbf2a5df,0xbbae8c4d,0xbb481a6d,0xb9dd3674,0xbb128291,0xbb747725,0xbb9f1953,0xbb84f465,0xbafb95e9,0x3bdacbce,0x3b8d72c1,0x3ba772bc,0x3c1211b1,0x3c14af6d,0x3bfe4312,0x3b91d318,0x3be9bd1c,0x3b58577c,0xbbb28c7d,0xb9e5b587,0x3c427261,0x3acba234,0xbaca172c,0xbbd5c9ed,0xbc21cb5a, +0xbc0e1833,0xbb078014,0x3ba5510f,0x3b9aae79,0x3b6acfd0,0x3988eef3,0xbc26d2ed,0xbc39f895,0xbbe974b7,0xbb042b86,0x3a87a668,0x3acffcfa,0x3a7a2753,0x399af8ef,0x3a68fa9c,0x3934894d,0xb926ff69,0xba9053e8,0x3b6546d0,0x3b18c73b,0xbb20b216,0x3b306116,0x3bb44f1e,0x3b99e063,0x3b0eaed6, +0xbad996bd,0xbbf0d64d,0xbc451d53,0xbbabcf71,0x3c1994fc,0x3c772385,0xbca113dc,0xbc17ee31,0xbc33df3f,0x395d835f,0x3cbe9d19,0x3c1f74f1,0x3b30c8e4,0x3bad9987,0xbbdad75d,0xbbbadbc9,0x3bab759b,0x3b7d6b3d,0x3b05dfb8,0xba5ac29b,0xbadc4957,0xbb19f9cf,0xbb1adb77,0xba92e3b1,0xba2faa02, +0x33e9b045,0xb8be9b0e,0x3a865313,0x3b024fb5,0x3a9a820a,0x3b4ee888,0x3bafc7f2,0x3b9e1ae5,0x3b154aa8,0xbadd02e6,0xbab2762b,0x3b0553d8,0x3c2790b8,0x3c7a98bb,0x3bcb79a8,0xbc8786ee,0xbca0bd7d,0x3c22e0de,0x3cc0114f,0x3bb4a19a,0xbc1289fe,0xbc8db97d,0xbc580a57,0xbac552ba,0x3c896bef, +0x3bc9877f,0x37945431,0xbb2e09f3,0x3b0aae65,0x3bb1b94a,0x3bdf2ca2,0x3bd5adf6,0x3b9ded97,0x3b0376c0,0xba42a334,0xba9c4736,0x39cda84a,0x39669c2f,0x3a01afb3,0x39bad5d4,0x3b66641c,0x3b3c3b83,0x38b776e9,0xba5bb7b9,0xb9a89c00,0x3a022ca3,0x3bae695c,0x3bc0e4cf,0x3b9fcaa4,0xbbadde46, +0xbc101fa2,0xbb0b7098,0x3b780d4a,0xbbfaff92,0xbc4c8ee3,0xbc1405dd,0xbb9c516b,0xbb2cc0c0,0xbb784245,0xbb83223f,0x3a972127,0x3beda507,0x3c3e5724,0x3c0d29f1,0x3c377180,0x3c24cec8,0x3bdee310,0x3b113e8d,0xb9800f25,0xba748793,0xbb207ee8,0xbb5a924e,0xbb888b5b,0xbb62f0cb,0xbb52b105, +0xbb8304f6,0xbb8f7355,0xbb61cd1a,0xbaa2e138,0xbb3f8241,0xbb34e447,0xba975150,0xbac9c160,0xb9123499,0x3a5da888,0x3b034f55,0x3ab14b97,0xba9eb038,0xbb836378,0x3bf283ff,0x3c13233c,0x3c595816,0x3c6b32dc,0x3c54f5aa,0x3c253bee,0x3c2246d5,0x3c4a0faa,0x3c00acfa,0x3b8e9fc5,0xb995fbaa, +0xbb073efe,0xbb3dc305,0xbb07e5e3,0x39072d6a,0x3aa8b04c,0x3b00221e,0x3b1898cc,0x3b0dd5af,0x3a9dd702,0x3a8e9578,0xb8d83a55,0xbadc31a3,0xbb1de413,0xbb5bb11f,0xbb5cfdf2,0xbb07540c,0x392a1ce1,0x3b111c98,0x3a6cde90,0x3a4c764f,0x3aa9294c,0x3b26a1e6,0x3b859957,0x3baa8395,0x3bb4bc4d, +0xbc399103,0xbbe660fe,0xbbed3775,0xbbc1fac8,0xbb984640,0xbb0537cc,0xb9ef9f0e,0x3a80e617,0x3af3b50e,0x3b40a8db,0x3b7901a7,0x3b73c241,0x3b5443ab,0x3b086d6f,0x3b029a59,0x3b1faa92,0x3b56486f,0x3b3e5957,0x3b295708,0x3b1d09b0,0x3a83c162,0xba972a97,0xbb90afc1,0xbb9e77d1,0xbb9bc672, +0xbb80cba4,0xbb8ad4fe,0xbbab962d,0xbbbd0f27,0xbbe9341d,0xbbf94ce7,0xbbe07f5d,0xbc1e5a45,0xbc3df23b,0xbc5c509e,0xbc5aa7f4,0xbb1525ff,0xba0bc6d9,0xb991f9aa,0x39fd03e8,0x3a81eed1,0x3ac461d6,0x3b1b365a,0x3b5af1a5,0x3b6120ff,0x3b5b0e50,0x3b5ef18a,0x3b3d41fe,0x3b2e2f42,0x3b218ee4, +0x3b330c14,0x3b3a766a,0x3b464d63,0x3b369085,0x3b288b22,0x3b37188b,0x3a1f7055,0xbabc0951,0xbb653114,0xbb633fa8,0xbb8d5916,0xbb92a45c,0xbbcfcc95,0xbbe1a01a,0xbc0f6177,0xbc0e9ae3,0xbc1d597b,0xbc289a7d,0xbc0fc995,0xbbf0dd6a,0xbbd00b54,0xbb85bdb9,0xbaff4b4d,0xbaab73e6,0xbac88674, +0xbad8b6cb,0xbae1dabb,0xbaf514ba,0xbb0f744a,0xbb22e94e,0xbb18301c,0xbb02ad1d,0xbad34950,0xba99c870,0xba5614d2,0xba194879,0xba0e5388,0xb9f9205b,0xb9c4966d,0xb977e20a,0xb9145630,0x38f59f44,0xba8e7bc5,0xba7b8cda,0xbabb0d71,0xbaeec28d,0xbb12786b,0xbb141bf4,0xbb08793b,0xbb00a4cb, +0xbb0c34a0,0xbb03bae1,0xbb074712,0xbb0e53fd,0xbb077c8f,0xbb06ab94,0xbafa7161,0xbae7f66c,0xb9dc8a1c,0x393c51eb,0xb9130953,0xb9a08f76,0xba082a73,0xba30d738,0xba49c3ae,0xba787d78,0xba41c6bc,0xba31d3b6,0xba2e060c,0xba27c2cd,0xba1b9904,0xb9f8301a,0xb9edf006,0xb9d6ce3f,0xb9c8a776, +0xb9ad8273,0xb9a67384,0xb8b6d488,0xba2ce767,0xba73fc5f,0xbac7be75,0xba521ab4,0xbaa8c2ac,0xbb05864f,0xbb02d618,0xbb031e6e,0xbaf07756,0xbaf50c1c,0xbaeaa35e,0xbae91268,0xbaab3e8d,0xba580881,0xbaadb111,0xba493a61,0xb9ade0d3,0xba45eb1c,0xb9c84c19,0xba0f1dc0,0xba45dcad,0xba6ec302, +0xba7d2d42,0xba9f2c99,0xba98ea9f,0xba836bac,0xba395cec,0xb9fd9a84,0xb98c5892,0xb8b3dcba,0xb9809260,0xba4e98de,0xba9707f3,0xbaacb23c,0xbaa8254b,0xba91c454,0xba8286d2,0xba44cfe0,0xba961cf3,0xbaaba8a5,0xbadf5812,0xba86eea5,0xba57ce33,0xb94343d1,0xba4ecd0c,0xba269913,0x398a6550, +0xb93977d3,0xb9b47f9b,0xba127615,0xb9efdb2b,0xb9bc1737,0xba8e2cd5,0xb9cb7460,0x3914bfd6,0xb9aef186,0xba1f492d,0xba88c376,0xba92eb5f,0xbafc76c9,0xbb1385de,0xbafcab07,0xbaa579d5,0xb9635c50,0x3a498926,0x3af2bfff,0x3abffc2b,0xb9eac408,0xbb03cd6c,0xbb3cac21,0xbb319eb0,0xbb1d954f, +0xbb008c72,0xbaa57db7,0xbaf423ac,0xbb161d59,0xbb4b6978,0xbae0165a,0xba6ad0a3,0x3a51eb4d,0xb977946c,0x38d67196,0x3b0d1c29,0x3a8f735a,0x3a836cdb,0x3a67a03a,0x3a6f1c68,0x3996fa1e,0xbaa9e669,0x39045cda,0x3aba920f,0x372b4e3f,0xba1ba0a0,0xbad82f13,0xbadd2ca8,0xbb6d411b,0xbb65f9b9, +0xbb2c80b1,0xba686623,0x3a87dee2,0x3adb4cbd,0x3b64928d,0x3b26c2f1,0xba83565e,0xbb50fc5d,0xbb94dda0,0xbb847305,0xbb639ad3,0xbb315727,0xba9e445f,0xbb26d0fa,0xbb5c20e5,0xbb95c1f0,0xbb0a590c,0xba9b7d7a,0x3b481f0b,0x397b204c,0x3ab2f57a,0x3bbb20a3,0x3b7b5a70,0x3b4f4997,0x3aaec941, +0x3ad56201,0x3ab8d820,0xbadc7cf8,0x3af0b693,0x3b13dfc0,0x3a2762f5,0x39c4d7f2,0xb9fa522e,0xba06f74e,0xbb47c00d,0xbbb1a83d,0xbbafc0ba,0xbb1c894f,0x3aa133c2,0x3b87abdc,0x3c0eb6b8,0x3c0281bb,0x3a68aedd,0xbb92a511,0xbbf94cca,0xbbf26063,0xbbd4c978,0xbb9b44db,0xbaecd1e8,0xbb42ff58, +0xbb866ae9,0xbbaf1b7e,0xbb64c563,0xbad046b3,0x3bcc1ef4,0x3b62f49c,0x3b8b9011,0x3c1f0ba0,0x3c1a685c,0x3bff2a46,0x3baba87c,0x3bda739f,0x3b42406e,0xbb85ecfa,0x3a2fc14b,0x3be71b91,0xbad7a95b,0xbb317a00,0xbbd5986a,0xbc1b0575,0xbc20f4ea,0xbb4862c4,0x3bcc221f,0x3ba5bc5e,0x3b9d2251, +0x3b7f65e6,0xbc0ce1d3,0xbc34cdf3,0xbbeea279,0xbb14e003,0x3a3dc707,0x3ad0bf08,0x3aa89a0e,0x39a1d3ef,0xb79ddafe,0xba7b3604,0xba73ee71,0xba95f2b0,0x3b55e55b,0x3b22550a,0xbb3d281d,0x3b8b9f0a,0x3bcd3adf,0x3af51e63,0x3aa9c8c4,0xbb1677ea,0xbbf46114,0xbc24b33f,0xbb476891,0x3c1c7875, +0x3c39eefc,0xbc6a5341,0xbb9b17c2,0xbc0d146e,0x3ab159f5,0x3cc3cdc3,0x3c3b3f19,0x3b920f63,0x3be03993,0xbbb209e7,0xbbb19781,0x3b2aad72,0x3bb6086a,0x3b8b7f85,0xbaffc8c0,0xbb3921ea,0xbb727698,0xbb2c44a6,0xbaee3e31,0xbad962dd,0xbaadcaa7,0xbad33fb5,0xb9edec20,0x3aee28b5,0x3aa27765, +0x3b51c12b,0x3b9cad78,0x3b6263cd,0x3a11746b,0xbb4a914b,0xbad6e642,0x3b27c2ea,0x3c2bcf8a,0x3c5adbb4,0x3b4f05fa,0xbc90b175,0xbc863473,0x3b98c68d,0x3cb2d7e3,0x3ab8d5e0,0xbc50ef16,0xbca75321,0xbcac13c9,0xbbf01451,0x3cb0eab7,0x3be6dd18,0x3a88f610,0x3a1d4315,0x3add632e,0x3b6bebfb, +0x3baff397,0x3bb7985f,0x3b936f8a,0x3b57433e,0x38885c3b,0xba051512,0x3ac3a989,0x3aa0bbd6,0x3a9941db,0x3a487d2b,0x3b524e38,0x3b0c55ff,0x39032822,0xbab32a42,0xba52169e,0x3a1c0281,0x3b943507,0x3b830239,0x3ad0be73,0xbbb38817,0xbc02fdee,0xbb23aff9,0xbae5d0c8,0xbba8f0ec,0xbc3e9798, +0xbbffabc6,0xbb8864e7,0xbb5af1a7,0xbb3bd02e,0xbb324724,0x3b5fb5fb,0x3ba4f0d1,0x3c1b4fdd,0x3c1dabe9,0x3c3bc9c0,0x3c2cb5f4,0x3bebba7a,0x3b201c3e,0xbab18b4f,0xbb20ca7f,0xbb79c6de,0xbb8c2050,0xbb8e93f7,0xbb8f89f0,0xbb836dff,0xbb827b52,0xbb81657a,0xbb4c6f1f,0xbab3621b,0xbb2325a6, +0xbb2ab96c,0xbac088a6,0xbad7006f,0x396caa3e,0x3a2b0f4e,0x3afc7e3b,0x3aa6ed36,0xba0e7fe7,0xbac4b58f,0x3bc3db60,0x3bb3cd9b,0x3c45c800,0x3c729446,0x3c63f4cd,0x3c3eed87,0x3c2d1ef4,0x3c3dec53,0x3c0c73aa,0x3bc383f8,0x3b268aa4,0xb9ed2968,0xbb0b766a,0xbb18dedf,0xb934369a,0x3aa67c7d, +0x3b079936,0x3b074f2a,0x3af9c596,0x3acb5dc0,0x3a77c541,0xba15e2c3,0xbb2b3fa7,0xbb4889a6,0xbb5f47bf,0xbb53e16b,0xba13318e,0x3ae67246,0x3b2ad5a9,0x3a8fa88f,0x3a445865,0x3a76caa4,0x3b34c68e,0x3b8f9c23,0x3ba21442,0x3b955103,0xbc2704f5,0xbbe1e712,0xbbc691c1,0xbb980281,0xbb6db679, +0xbab012c9,0x38ca0b1d,0x3ab8078f,0x3b10d010,0x3b3edddc,0x3b704400,0x3b49ebdf,0x3b3f2f88,0x3b110255,0x3b2a9042,0x3b39ecfb,0x3b420917,0x3b37dbc3,0x3b0eda62,0x3ae8d22a,0xb98ceb73,0xbb1d79b4,0xbb9f63a1,0xbb8a9f92,0xbb8199b5,0xbb7bae11,0xbb86dc3e,0xbb9b5854,0xbb8f9751,0xbbab34a6, +0xbbaeb8e8,0xbb95b6fd,0xbbd0026f,0xbc0a8e68,0xbc3c3245,0xbc3e4e8f,0xbb5358f6,0xbaae1d0c,0xba928af6,0xba058840,0xb9062d28,0x3a12718b,0x3ad6ecea,0x3b4059e3,0x3b5acda7,0x3b66ca97,0x3b75755a,0x3b5fd852,0x3b572f20,0x3b543def,0x3b4efc93,0x3b45ae23,0x3b3b72b9,0x3b1cada5,0x3aedbfb3, +0x3ae745fd,0x3931fd56,0xbad0f9f2,0xbb65f00c,0xbb553067,0xbb67ec57,0xbb581937,0xbba0cb16,0xbbb9dbb4,0xbbf333e7,0xbc00c870,0xbc139e97,0xbc243e97,0xbc151904,0xbc06d994,0xbbfc35e5,0xbba7ba60,0xba9fe6ad,0xba49a41f,0xba79bdfd,0xba7ad659,0xba72933c,0xba8976e9,0xbab6bdf5,0xbae5b6f2, +0xbae10075,0xbabebf30,0xba8d78c2,0xba2866db,0xb9904855,0x37f8ba9c,0x39221c6b,0x39b0040b,0x3a12c459,0x3a4485ce,0x3a7a297e,0x3aa0afe7,0x3926f46d,0xb7118bca,0xb9f749bb,0xba6ae932,0xbac7616c,0xbaedb23b,0xbaeea3e3,0xbae6bbdb,0xbafcc640,0xbaf9109c,0xbb054a5e,0xbb0dc184,0xbaf4a6b3, +0xbad1c289,0xbab7d93b,0xbaaaf2dc,0x373b4610,0x399feef6,0x38b71dc4,0xb8af9e2d,0xb997ed84,0xb9da579a,0xb9f0c98e,0xba126a33,0xb9b536cf,0xb99883bb,0xb99eecaa,0xb99cf96d,0xb98e308f,0xb946fb01,0xb90544fe,0xb88a7a41,0xb7cd2e02,0x387e3a12,0x38dd135b,0x39ae416d,0x366b86bc,0xb8e91d98, +0xb9e0a972,0xb997a695,0xba04d2e7,0xba723ee6,0xba7803d5,0xba868270,0xba807293,0xba8bd2e7,0xba88c545,0xba95213d,0xba61164f,0xba27349f,0xba00724f,0xb9548107,0xb8b201c7,0xba0e258a,0xb96dc66a,0xb9d8c5bf,0xba03f261,0xba29348f,0xba4a0dbf,0xba8901a6,0xba856f2b,0xba6dba30,0xb9f740bf, +0xb969ab33,0xb8a739ab,0x38bb2cd0,0xb805c3d1,0xb9b2a1ae,0xba5812c8,0xba87a6ff,0xba8e25a2,0xba8160aa,0xba6f112d,0xba365ed0,0xba82f947,0xba93d6f6,0xbad00e17,0xba3af697,0xba11bc0b,0xb94f3a70,0xba2008fd,0xb9f0de8e,0x39af161b,0xb9127208,0xb9962b36,0xb9907a33,0xb992fefe,0xb9216ea5, +0xba3e3462,0xb95ad4c5,0x3a0cb0a8,0x3853b0c9,0x38522e93,0xb9cc6122,0xba3c245b,0xbae14d7f,0xbb0bccf2,0xbaf29475,0xba6d333e,0x38cd3ad3,0x3a62b242,0x3af6e2e8,0x3ae5c237,0x3a069654,0xbaacfe81,0xbb1a2155,0xbb22ed89,0xbb1fab23,0xbb0dc82c,0xbac6357a,0xbb012d40,0xbb10e6dd,0xbb42a3ce, +0xbaa30594,0xb9fe294f,0x3a045692,0xb8a5c097,0x394a8fd4,0x3b012df1,0x3a743737,0x3a700a00,0x3aa7b01d,0x3a80dcc1,0x3a056724,0xb9eb56f5,0x3a1dc6b2,0x3abb06ba,0xb7a267b4,0x391a7d3c,0xba5ce37c,0xbab3b0b2,0xbb66e989,0xbb665cc0,0xbb38116b,0xb9c7948b,0x3accac82,0x3ae301bf,0x3b657f8a, +0x3b3da139,0x3a3f4880,0xbb0af3a8,0xbb75d527,0xbb7888d3,0xbb732ac7,0xbb543587,0xbaed4de0,0xbb38d6a2,0xbb5a67f7,0xbb961c9b,0xbab0b561,0xba1ad07f,0x3b1c5497,0x3a05363d,0x3ab8fecf,0x3bb10eba,0x3b4959f2,0x3b2df275,0x3aff840a,0x3ad3d5a4,0x3adbc7b8,0xba2647f6,0x3afdd133,0x3b57a485, +0x3ac59334,0x3b0d634e,0x3aa3c38b,0x39d5ad9e,0xbb343836,0xbbb01a35,0xbbb24920,0xbad6ee87,0x3ad62c2c,0x3b6e527f,0x3c02ebd2,0x3c0df965,0x3b819627,0xbb24260c,0xbbcf1b0d,0xbbe7f0f0,0xbbeb5ea4,0xbbc6e166,0xbb52356f,0xbb774490,0xbb923f73,0xbbbe2f96,0xbb2f0fd1,0xba6ef6f7,0x3bb602fe, +0x3b409336,0x3b764aa0,0x3c26062b,0x3c1a9ffd,0x3bfb9c9b,0x3bc82b3b,0x3bcbdbb5,0x3b417ec1,0xbb11a34b,0x3b03a280,0x3b22973f,0xbb8a5f3b,0xbb84d615,0xbbe1f876,0xbc237337,0xbc2f46bb,0xbb878274,0x3bd05d68,0x3ba34833,0x3bb03c4b,0x3bdd7a64,0xbbdb4b10,0xbc2a99ba,0xbc00070c,0xbb1779d8, +0x3a3f4bf4,0x3acf5940,0x3af96d51,0x3a5bbd14,0xb9b0a246,0xbab4e44f,0xba85e325,0xb9b7ae4c,0x3b3e69df,0x3b1d2d2a,0xbb42a8bb,0x3bbd8ac5,0x3be81c46,0x38be02ba,0x39af6274,0xbb56627e,0xbbf1d81e,0xbbff114b,0xba667bc9,0x3c15c03b,0x3beecfb1,0xbc156734,0xba4fc27e,0xbba9aeaf,0x3b477438, +0x3cb8d7a5,0x3c55c01e,0x3bd95a7a,0x3bec96bc,0xbb89d659,0xbb9eabb5,0x3a2312df,0x3be7b70f,0x3bd4b49b,0xbb1f7a0d,0xbb562509,0xbb8c5da5,0xbb29f696,0xbb118f2c,0xbb21210d,0xbb376029,0xbb4036f6,0xbae0f81f,0x3ad2b953,0x3a9c6561,0x3b463143,0x3b85b926,0x3b0c3172,0xba870536,0xbb898c2c, +0xbaa1cc4e,0x3b5ae674,0x3c1d40c9,0x3c2b0923,0xb7d18824,0xbc8f5d34,0xbc59d6b7,0xb8c53ebf,0x3c80aa20,0xbb9f9a8c,0xbc82bdd8,0xbca4565c,0xbcd03813,0xbc428cff,0x3caf9349,0x3bf5bc2a,0x3b385a18,0x3b63fb1f,0x3ab73bca,0x3af81ca3,0x3b81590b,0x3ba8aef6,0x3b9be2bb,0x3b90e0ca,0x3aa6889a, +0x39ea65ab,0x3b1107b9,0x3af21b73,0x3ac82e3f,0x3a91b5a7,0x3b2a669e,0x3aad5fbc,0x39569c0e,0xbae02a07,0xba8da037,0x3a81e6e0,0x3b5398ef,0x3adbe1d7,0xbad4cac0,0xbb974740,0xbbc572dc,0xbafc2aa6,0xbbb9dd10,0xbb428b42,0xbc116bc1,0xbba1fd7d,0xbb02e438,0xbb04f9be,0xb9a54624,0xb9af40d3, +0x3b96c688,0x3b5f01b7,0x3bffb921,0x3c2eb898,0x3c367357,0x3c27dbe2,0x3bea8536,0x3b2baa00,0xbaeb1e05,0xbb659bcd,0xbb98a41b,0xbb9fa4d1,0xbb8e17af,0xbba2bff2,0xbb95f85e,0xbb829f67,0xbb5ab3ef,0xbb249679,0xbac27455,0xbae1b9bd,0xbb0960aa,0xbae93956,0xbadf42be,0x39dee4e1,0x3a00b8fd, +0x3ab4b31f,0x3a8b1947,0x3a628f58,0x39a1e3d2,0x3b56639c,0x3a87bd07,0x3c0658be,0x3c4488cc,0x3c49d2d8,0x3c3efbc4,0x3c3174c4,0x3c375334,0x3c19f41e,0x3bf43fc5,0x3bb8d130,0x3ae77242,0xb9fd2f9e,0xbab83571,0x38aa3fc1,0x3ab9c763,0x3b11da9d,0x3afc9182,0x3ae4af77,0x3aee8a17,0x3a387c12, +0xba95898e,0xbb60721c,0xbb74d616,0xbb62b738,0xbb3d6f2f,0x3a20bce7,0x3b365e1f,0x3b2aac72,0x3aad78e6,0x3a80db36,0x3a862ef6,0x3b569832,0x3b973de5,0x3b829dd8,0x3b3fff8c,0xbc0072e6,0xbbc5897b,0xbb6825ed,0xbaf16ebe,0xba88a4da,0x3928ff4a,0x3a7a550a,0x3aee3672,0x3b1e2210,0x3b31b6b4, +0x3b4fc10d,0x3b12f066,0x3b15de0b,0x3b0ef268,0x3b36587d,0x3b35f6ba,0x3b1ec5c7,0x3b1a8574,0x3aba20ed,0x3a20331e,0xbada3e21,0xbb62a0bd,0xbb9c379d,0xbb6bc387,0xbb581b9a,0xbb7cf552,0xbb84c520,0xbb89a99e,0xbb3fb966,0xbb4b6dc1,0xbb3a1bb2,0xbb1181a6,0xbb4dd7c6,0xbba6a0fe,0xbc0af91e, +0xbc0987fc,0xbb8999af,0xbb15fdd6,0xbb0f109f,0xbaecb852,0xbac57a7c,0xba1e7d1e,0x3a2364db,0x3b0497ae,0x3b34c54b,0x3b551a3d,0x3b744ffd,0x3b6286b6,0x3b5754e0,0x3b51fb34,0x3b43bc4a,0x3b396837,0x3b2fd90a,0x3afebe16,0x3a8afa58,0x3a359136,0xb97d02e9,0xbacbb347,0xbb499f9b,0xbb45a65a, +0xbb4d0527,0xbb424d8c,0xbb8469df,0xbb9caaf6,0xbbc925ca,0xbbe56db9,0xbc072927,0xbc1b2ecc,0xbc1597ca,0xbc11c532,0xbc120905,0xbbcba778,0xba3cb69c,0xb9ce488c,0xb9e7f11a,0xb97191a4,0xb8920af2,0xb9006700,0xb9d04ccf,0xba2e268a,0xba424785,0xba1bdcdb,0xb99e5c87,0x37a90166,0x39ad26ec, +0x3a1b94cf,0x3a3f9a75,0x3a662c68,0x3a8d1900,0x3aa1b2ae,0x3abec19d,0x3adc582c,0x3a83ee5b,0x39f9fede,0x37b245b9,0xb9e85664,0xba948463,0xbadef170,0xbaf23bcc,0xbaf72cf5,0xbb032a10,0xbb0854c3,0xbb140425,0xbb1b1eda,0xbaf8f932,0xbab3a009,0xba8de9e0,0xba82d1fd,0xb983d433,0xb96500b4, +0xb9974405,0xb9d6c1e7,0xba0b5f46,0xba129bd4,0xba02ed10,0xb9f169f4,0xb9a70b6f,0xb99ba98a,0xb9b582af,0xb9ba7ce6,0xb9b885f4,0xb9a43627,0xb983a979,0xb948fc2e,0xb91dda45,0xb862f793,0x36af4333,0x39279d78,0x387fc796,0x382fa098,0xb7ddca6c,0xb9dc3cde,0xb9e878b6,0xba15c054,0xba2569da, +0xba4a4927,0xba5d7e90,0xba7b4c78,0xba816039,0xba9a2e92,0xba8ba82d,0xba88eb21,0xb9e59155,0xb9be228e,0xba11dde9,0xb9aa856a,0xb8ac9bfd,0xb983841f,0xb9813ee9,0xb9c63b96,0xba0f837a,0xba66eb12,0xba652706,0xba4707ba,0xb978683c,0x37a7f816,0x38751aae,0x397a391c,0x39357f3b,0x38f94a93, +0xb9f6d365,0xba3d57d6,0xba65f8ee,0xba565192,0xba4dc3f2,0xba205e58,0xba5d32e6,0xba73dbe2,0xbab7e3f5,0xb9cca239,0xb9a34d40,0xb9718e6d,0xb9e5099a,0xb9a47b44,0x398a8f6c,0xb932705a,0xb98ed8db,0xb83d80b7,0xb92fcdb6,0xb6bf8b08,0xb9c9174d,0xb86943d5,0x3a6884e3,0x39e6f542,0x3a3f14be, +0x3997d0be,0xb981086e,0xbac864f0,0xbb03834e,0xbad89f2e,0xba0effc2,0x39bd1c6f,0x3a5c35de,0x3af4949e,0x3b0398a5,0x3ac31518,0xba1179db,0xbae33719,0xbb121e96,0xbb193a40,0xbb113d42,0xbadc5e34,0xbb03f6a3,0xbb048c5e,0xbb2d1926,0xba3fc693,0xb85836cb,0x39857c7f,0x38f37eee,0x398e9b6d, +0x3acb67bf,0x3a334106,0x3a437d0d,0x3ac97e28,0x3a7e31de,0x3a2ad4c7,0x398e66df,0x3a80ba24,0x3ac1fe2b,0x37416e5c,0x3a566261,0xb8c31ccb,0xba724c46,0xbb5ee49e,0xbb65a535,0xbb35222e,0x38f075bc,0x3b01cd0f,0x3ad01f03,0x3b5c466a,0x3b4c8074,0x3b2288c1,0xba7d76ed,0xbb38857d,0xbb661537, +0xbb708674,0xbb6334de,0xbb17b260,0xbb4024a7,0xbb493f98,0xbb88ea6e,0xb9f32b78,0x386fcad7,0x3ae39b35,0x3a5f1ea5,0x3ab8f35b,0x3b92cd4d,0x3b0921e7,0x3afe2062,0x3b18e9b9,0x3abbe873,0x3ae89d01,0x39b5ef51,0x3b03774c,0x3b853000,0x3b150735,0x3b7ceafb,0x3b443cfd,0x3acb9ba6,0xbb229e92, +0xbbaad909,0xbba87beb,0xba6873a3,0x3af9ec76,0x3b3d5334,0x3beaaf9c,0x3c15b1e6,0x3be55a03,0xb9b83a46,0xbb9e5f12,0xbbdbe9cd,0xbbf2645a,0xbbe0acfb,0xbb8ff22f,0xbb8fb732,0xbb9640c3,0xbbc123e9,0xbad8d5bc,0x37665d6e,0x3b9e1fe0,0x3b311afb,0x3b63ec78,0x3c238cc6,0x3c13a8a2,0x3bf03d4d, +0x3bdf1dd1,0x3bb6f0fd,0x3b3dd326,0xb9d9f97c,0x3b4b66d4,0xba7c497b,0xbbc28406,0xbbb5e50a,0xbbfce335,0xbc2efabb,0xbc344dca,0xbba0c1ca,0x3bc7e54b,0x3ba22796,0x3bbcd0ad,0x3c1042f2,0xbba1b512,0xbc2185c1,0xbc08f26d,0xbb27706b,0x3a4b261f,0x3af64059,0x3b2fe609,0x3ade33e2,0xb95fc102, +0xba9a3e24,0xb9fb0057,0x3a7a7244,0x3b2546d3,0x3b0d598a,0xbb3eb1ce,0x3be570e5,0x3bfed42e,0xba569a4d,0xba342a92,0xbb930e00,0xbbf0449c,0xbbb55df2,0x3a80f2bb,0x3c059f10,0x3b80f6b1,0xbbaba90c,0x3b13c0fd,0xba4ba670,0x3bab948f,0x3ca074f8,0x3c66731d,0x3c0fb42d,0x3bdc5343,0xbb501644, +0xbb8dca05,0xba29b07c,0x3c05fc65,0x3c0b4d7e,0xbae736c9,0xbb547062,0xbb958d23,0xbb1d576a,0xbb16649d,0xbb3788dd,0xbb82cb9a,0xbb6ae8cd,0xbb2091d0,0x3a97135e,0x3a78a1b4,0x3b2acbd6,0x3b6145d5,0x3a773287,0xbb1b064d,0xbb9d21da,0xb94836a8,0x3b8d6474,0x3c04d93a,0x3be4004a,0xbb553086, +0xbc8887c5,0xbc357666,0xbb673dfd,0x3bc56822,0xbc3dff77,0xbc95ee29,0xbc8f22ce,0xbcd42112,0xbc77a74d,0x3c745df8,0x3bff7e87,0x3bb97b07,0x3baf266b,0x3ada53b6,0x3a4b852e,0x3b24633b,0x3b9a0e68,0x3ba5cd3f,0x3ba787be,0x3b2ac9ec,0x3abd247e,0x3b0e0191,0x3b028111,0x3acafe2c,0x3ab05be9, +0x3aeb96c5,0x39e88a6f,0x390deb07,0xbaf142b1,0xba8f413b,0x3abf2af6,0x3addab92,0xba1d4c79,0xbb88fe61,0xbb542897,0xbb6fe802,0xbad18626,0xbbe11a15,0xba4fc10d,0xbb928f46,0xba8e0118,0x3a5dddce,0x3a449caa,0x3b1c7424,0x3b01b4d4,0x3b95b401,0x3b0d80a4,0x3bc2db0c,0x3c2b1953,0x3c25980f, +0x3c19c5c9,0x3be5d784,0x3b2d7eea,0xbad9cff1,0xbb80decd,0xbba10193,0xbba6b827,0xbb8ca9e5,0xbba7e92f,0xbb9ef50a,0xbb83a4ef,0xbb2e62a8,0xbae3d79d,0xbac5e578,0xba6affdc,0xbabf301e,0xbb035627,0xbad7362e,0x39ef3092,0x39bdbaf9,0x3a4d1c40,0x3a8aa0c1,0x3b2b72d7,0x3ad4e975,0x39a40990, +0xbb496a91,0x3b2ba35b,0x3bd4743e,0x3c081d6f,0x3c2669fc,0x3c2f540a,0x3c34f02e,0x3c273c04,0x3c108fb8,0x3c07077c,0x3b8f687b,0x3aecb624,0x381addb6,0x3a6b1fec,0x3ad9cf6b,0x3afdfa0d,0x3aef1972,0x3acd0c31,0x3adb2792,0x391f28df,0xbaf6d811,0xbb836d4e,0xbb8cac0e,0xbb611b78,0xbb11405d, +0x3aad6349,0x3b50c875,0x3b1b9e36,0x3ae63533,0x3accbe36,0x3abcae9a,0x3b726429,0x3b9140a0,0x3b328dcf,0x3aa1065a,0xbba5b2e0,0xbb80b86b,0xb960c7d7,0x3ad58e4b,0x3b1a43b4,0x3b0943a2,0x3af11f55,0x3b055768,0x3b1543e3,0x3b12fef4,0x3b16048d,0x3aa663d9,0x3ac66708,0x3b0222f9,0x3b2bfd2f, +0x3b26716b,0x3ae84ca0,0x3ae39e6b,0x3a0fae7f,0xba424643,0xbb3b139c,0xbb873bd4,0xbb8a8dff,0xbb52a825,0xbb45cf3c,0xbb7babca,0xbb7b174d,0xbb60df7a,0xbabf5167,0xba821907,0xb9d022ef,0x38cf9153,0xb8d2b38c,0xbac7e337,0xbb916f67,0xbb977b37,0xbba6a919,0xbb62e4ac,0xbb563720,0xbb3dfe74, +0xbb1d010f,0xbaae0724,0xb7ba1c6c,0x3aa9c886,0x3b08083c,0x3b2b2c76,0x3b491103,0x3b3bdb49,0x3b2e0150,0x3b25bd27,0x3b17bc6c,0x3b183f80,0x3b1e6ba2,0x3ab76018,0x398d278b,0xb9c63e34,0xba3720f0,0xbad1d674,0xbb2e25f1,0xbb387d32,0xbb3f8a58,0xbb422876,0xbb6b9989,0xbb8a3c33,0xbbaa5656, +0xbbcecf5d,0xbbf60f03,0xbc0f972b,0xbc11e8b9,0xbc176b24,0xbc1e6504,0xbbe74033,0xba0a010a,0xb998b248,0xb92236d7,0x396e128c,0x39f40aab,0x39ffb31d,0x39b13f43,0x398f0948,0x394ea465,0x39a81d9a,0x3a149239,0x3a4c8d92,0x3a84dc8c,0x3a9ce198,0x3aa1768c,0x3a9bcdb4,0x3aa05949,0x3aa328bb, +0x3ab44430,0x3abdb0b6,0x3a94e8d6,0x39d0a652,0xb8450330,0xba0b5605,0xba9c6b48,0xbafaf0cb,0xbb0c09e6,0xbb144349,0xbb198eb5,0xbb22edf8,0xbb2fcdae,0xbb364993,0xbb0d7406,0xbabb3753,0xba8aa68f,0xba7c6406,0xba762a2d,0xba89e321,0xba80e346,0xba84ec4f,0xba838512,0xba6a037f,0xba3b8dfd, +0xba0d5a49,0xba026809,0xba08612f,0xba1bd4e2,0xba2037e5,0xba21b8c9,0xba199d6d,0xba16ef86,0xba0d2b3f,0xba09e491,0xb9e9afbb,0xb9d0460a,0xb9adb251,0xb9acab4c,0xb9b3c061,0xb991bc30,0xba790bc0,0xba6dd8d3,0xba68c342,0xba7d81b7,0xba957ca3,0xbaa913fc,0xbab9cf99,0xbac292d9,0xbae3c84e, +0xbae077e7,0xbae990ff,0xba7cfbf0,0xba83ab3a,0xbaadfdd8,0xb93c8ddf,0x381e5d67,0xb928c74b,0xb86e5dc4,0xb937dde2,0xb9bbf87d,0xba44864f,0xba48837b,0xba26efd4,0xb8a414e7,0x392bf655,0x38af22e9,0x3999f7c8,0x399940c1,0x3a00079b,0xb93a02f3,0xb9f0e4fc,0xba3daac3,0xba31dbbe,0xba3242ad, +0xba172026,0xba335495,0xba336d5d,0xba8b43e6,0xb8d0c828,0xb84dd847,0xb9342479,0xb94bf67c,0xb9054d9f,0x391f2faf,0xb9374b3d,0xb96e80d3,0x39319c4f,0xb8a916b4,0x388b877c,0xb7b5665a,0x38df5638,0x3a9b20b7,0x3a39c2fc,0x3aa40b7e,0x3a5d56dd,0x393e7094,0xbaac6cd9,0xbaee87e7,0xbabad5a4, +0xb988fd82,0x39fff7e5,0x3a23c5cb,0x3addd647,0x3b09ef79,0x3b16ed07,0x392ad521,0xba922c86,0xbb02b7e2,0xbb105c31,0xbb116ff6,0xbaee0cb8,0xbaff7d1a,0xbae9fa29,0xbb0d1666,0xb95db7c9,0x39ca41f3,0x389be657,0x3999c359,0x39974567,0x3a75e45f,0x39abb798,0x39f62e0c,0x3ad152b2,0x3a5b7409, +0x3a33a838,0x3a51052c,0x3a9ac89c,0x3ac00f8b,0x386de6f6,0x3aa77a9d,0x3a0db43b,0xb9c29518,0xbb4b7a4b,0xbb589aae,0xbb295668,0x3a04c76b,0x3b0cb11a,0x3a9d4ab2,0x3b442058,0x3b4c129f,0x3b82917c,0x39018800,0xbaf32a01,0xbb528867,0xbb6250a8,0xbb668372,0xbb2d1f88,0xbb3dd058,0xbb2d3447, +0xbb5fa698,0x39eb2516,0x3a428a68,0x3a9cc4cc,0x3a9ebf43,0x3aa76921,0x3b477ad4,0x3a79d50a,0x3a89419b,0x3b1a527d,0x3a8ba240,0x3adab06c,0x3a9d6c6b,0x3b00299c,0x3b926804,0x3b3a1cef,0x3ba9585a,0x3b92fb84,0x3b322814,0xbaff5507,0xbb974469,0xbb97c456,0xb970dcc1,0x3afe6667,0x3aea4064, +0x3bc6c7b1,0x3c1543a8,0x3c1c970e,0x3ae965f1,0xbb529a7e,0xbbcd0220,0xbbeffa59,0xbbee8f4f,0xbbacc978,0xbb9c36ff,0xbb9290bf,0xbbb324f8,0xb9ea233b,0x3a930630,0x3b8827ef,0x3b340be7,0x3b598c6d,0x3c13a3aa,0x3c04e2c4,0x3bdaa77b,0x3be857cd,0x3b9b7472,0x3b30508e,0x3a9d6155,0x3b767e51, +0xbb5bf98f,0xbbe3cb5b,0xbbe656c6,0xbc0e6fd5,0xbc33d67d,0xbc328417,0xbbb1f531,0x3bc3746e,0x3ba0feaa,0x3bc5a9c9,0x3c26084c,0xbb5a2c53,0xbc1681e6,0xbc0d0459,0xbb4fb8c1,0x3a1aa85c,0x3b1ee276,0x3b72f60d,0x3b415bc4,0x39cb6502,0xb9bb76df,0x3a1dc670,0x3b1d4442,0x3b07d04a,0x3ae50037, +0xbb2e9cc8,0x3bfa57a0,0x3c052068,0xba85f8e5,0xbac7960e,0xbbb76769,0xbbf0e7ce,0xbb66920c,0x3b1af5eb,0x3be0d3a6,0x3ab48ae9,0xbb145a41,0x3b94e893,0x3b694062,0x3be4378d,0x3c788bc6,0x3c67cd70,0x3c2c5412,0x3bca9643,0xbb1071ab,0xbb824516,0xbab461b4,0x3c0f2359,0x3c23e048,0xb9a6e664, +0xbb372f68,0xbb966770,0xbb2e286f,0xbb1cf23d,0xbb3858f8,0xbb98b21e,0xbb642076,0xbb2bf1c0,0x39e4ed99,0x39f4e453,0x3b009ded,0x3b3b2178,0xb93c9aa0,0xbb6135f6,0xbb9fb418,0x3a878fba,0x3ba737ec,0x3bce9d5b,0x3b4e5f7d,0xbbcf45d6,0xbc801a8a,0xbc18e5fc,0xbbadaf1e,0xbba8c53c,0xbc8e5fcd, +0xbc9cd922,0xbc6b8ce1,0xbcb7041e,0xbc81f7bd,0x3b92da2b,0x3c06063f,0x3c14521e,0x3bb525ad,0x3aeaedb3,0xb89c0857,0x3a9de7c2,0x3b827a3d,0x3ba50fd6,0x3ba9fddb,0x3b6ddd39,0x3b078384,0x3aa24b71,0x3acd6bb5,0x3aa76c47,0x3ac7dbb3,0x3a7d09c0,0xb9dd290b,0xb94e092f,0xbadcd915,0xba4487a9, +0x3ae206fc,0x39a28dd1,0xbb1dde30,0xbbbdf3bc,0xbae12e8c,0xba9eb6fb,0xbad53b59,0xbbba51f4,0x3acc99a3,0x3a70bec3,0x3b54ff0f,0x3b716604,0x3b5ab102,0x3b810cc5,0x3b553731,0x3b5ccf5d,0x3a1c75be,0x3b57630f,0x3c10f911,0x3c1002ed,0x3c0a00e6,0x3be3f9dc,0x3b2bd34f,0xbaa5b9ff,0xbb84ec69, +0xbb9db145,0xbba568f1,0xbb8fbaa2,0xbba3592f,0xbba1051d,0xbb83e055,0xbb0648d2,0xba7f77e1,0xbab594ad,0xb99b4d13,0xba71be53,0xbb078b22,0xbabc4a11,0x39bd706a,0x39ce3af5,0x3958776e,0x3a8e2806,0x3b8e1cb8,0x3b31b4b0,0xbb111ea7,0xbbd49503,0xbb55c446,0x380c7710,0x3b3c8515,0x3c045171, +0x3c295142,0x3c285376,0x3c2af7b8,0x3c1f8826,0x3c25d543,0x3bdaea1f,0x3b885636,0x3ae57cb8,0x3af92eb7,0x3b04a5bc,0x3ac7e1a9,0x3adaee1d,0x3a96c820,0x3a6fc407,0xba48a0cb,0xbb36d0ca,0xbb8e647c,0xbb983453,0xbb57d5d3,0xbaa4d89e,0x3ad31e7a,0x3b47b5cb,0x3b083a66,0x3b159685,0x3b126ac9, +0x3afbe01e,0x3b76716f,0x3b7afdd7,0x3ad4b2a5,0xb8f835e5,0xbafccb9d,0xba4250c3,0x3b561af6,0x3ba27f9d,0x3bb42947,0x3b7e1198,0x3b2b279b,0x3b0c031f,0x3aeeb818,0x3ab6bfdc,0x3a8b96bc,0x398da37b,0x3a384a8e,0x3ac77376,0x3b171184,0x3b0fd139,0x3a8d4e60,0x3a826526,0xb9a874e7,0xbafc63d3, +0xbb6b000d,0xbb8dfb4f,0xbb6793b0,0xbb4944c6,0xbb488b28,0xbb7aee82,0xbb60f151,0xbb1fe8d4,0xb8ea25bb,0x3a715e4a,0x3aee95f1,0x3b135698,0x3b32f05a,0x3b01297b,0xb914c257,0xba7152f3,0xbbbc9a0b,0xbb9742ca,0xbb861af8,0xbb5fd53c,0xbb19746a,0xbaae1740,0xb9657e2d,0x3a3853b4,0x3aa4e6a7, +0x3adada52,0x3afa6c5b,0x3af0b31d,0x3adae814,0x3ace1b00,0x3ab80523,0x3acda519,0x3af47fff,0x3a2603bd,0xba2dfeef,0xbac8a703,0xbab6db91,0xbb02c5c1,0xbb2df8bc,0xbb39da9b,0xbb3ae810,0xbb4a70c5,0xbb5e963b,0xbb82844b,0xbb98fd7d,0xbbbeae80,0xbbe07323,0xbc029e24,0xbc099641,0xbc152f08, +0xbc1e9944,0xbbf38aa0,0xba34e59b,0xba16d330,0xb963d166,0x397dc6ad,0x3a03857d,0x3a23571c,0x3a3a74de,0x3a7d105a,0x3a7b41af,0x3a8c4c08,0x3aa4d4f2,0x3ab27329,0x3ac2dc1d,0x3ad01831,0x3abd4e05,0x3a99ecd2,0x3a8511ce,0x3a62f6f8,0x3a5e80ae,0x3a3f40b8,0x3a428735,0xb89f19a7,0xba01fc48, +0xba80ccb0,0xbaccfc10,0xbb17c9b8,0xbb29d2e7,0xbb356fb6,0xbb3928ba,0xbb478330,0xbb570ce4,0xbb5dad4d,0xbb2fbe7d,0xbaf0516e,0xbaba8e4a,0xbaaaf539,0xbae78be9,0xbb00b18b,0xbae87c32,0xbadd34c6,0xbac74f32,0xbaa4c4b9,0xba80b6c0,0xba34beb6,0xba489bce,0xba575aa1,0xba6b779c,0xba70b317, +0xba7295f9,0xba6922ee,0xba78ad1a,0xba79d2f7,0xba826a32,0xba7abd1a,0xba76381e,0xba7fd908,0xba6f8385,0xba7765c5,0xba54cded,0xbad1abe1,0xbac9e9a7,0xbabe9993,0xbacac53d,0xbae3d4e3,0xbafe4c55,0xbb0794f7,0xbb0d62d1,0xbb212451,0xbb225596,0xbb29971c,0xbade9b50,0xbaeb8719,0xbb0b0adb, +0xb8860f53,0x38ee186d,0xb8d3cc0e,0x38cf1225,0x36b35dd3,0xb9381f0f,0xba1a8724,0xba240c69,0xba09f9e1,0x388f6989,0x399390f8,0x388ebe5f,0x39a7aa03,0x39c5ee41,0x3a4f9876,0x38bbcf56,0xb95bcb97,0xba14ce80,0xba0cee69,0xba15d7b0,0xba09f1a4,0xba0e4ef7,0xb9fcb1ee,0xba44dfe4,0x391b7c65, +0x391cdb41,0xb9214f11,0xb831da84,0xb853e1b0,0xb8ca1501,0xb990364f,0xb992b37a,0x39827f8f,0xb88e948c,0x38c4793a,0x39640b91,0x39502e8b,0x3aaa11e4,0x3a586b52,0x3ad3604d,0x3aaa327b,0x3a183449,0xba811e30,0xbac541a1,0xba9e9044,0x37e0e648,0x3a1b8c45,0x39b0cfc7,0x3abec4e1,0x3b0ab263, +0x3b42afe1,0x3a63d07b,0xb9ec46a2,0xbadb781b,0xbb026e12,0xbb0d56bc,0xbaf88c46,0xbaf915c4,0xbac93950,0xbacb46ec,0x3985c13a,0x3a460847,0xb79b929d,0x39e3ffc2,0x39802d99,0x3957f4f1,0xb8dddce0,0x39041870,0x3ac5da4f,0x3a18de5a,0x3a14e279,0x3a979659,0x3aa12154,0x3ab10a18,0x37fc37c0, +0x3ad1c29f,0x3a9187cb,0x39479b85,0xbb240215,0xbb3765c7,0xbb1bf120,0x3a79455e,0x3b14b451,0x3a4cd8e8,0x3b2a2b14,0x3b44279a,0x3ba98523,0x3a999344,0xba5ae604,0xbb367e5e,0xbb4a046e,0xbb5e677a,0xbb364b80,0xbb35ccc7,0xbb0d14f2,0xbb1b945a,0x3aa59bc7,0x3ab25248,0x3a5337af,0x3ac276bb, +0x3a83650a,0x3aa6c37a,0xb98890db,0x3827d551,0x3b0aef7e,0x3a0a09ac,0x3ab4e0bd,0x3afcdc08,0x3aeaf096,0x3b933153,0x3b42f00a,0x3bc48490,0x3bb8c36d,0x3b748553,0xba82cbee,0xbb6a4ce1,0xbb87bebc,0x39f3e81b,0x3b027e1a,0x3a234fb7,0x3ba07528,0x3c0f5c06,0x3c3d206b,0x3b8044c2,0xbab2d92f, +0xbbb36161,0xbbe336fd,0xbbf32a1e,0xbbc22a86,0xbba5f392,0xbb889237,0xbb94523d,0x3a5a4ba4,0x3b12c3f2,0x3b6aebcf,0x3b451cdd,0x3b506e37,0x3bea3a35,0x3bdd8bf1,0x3bbaea9b,0x3be0e315,0x3b7254fb,0x3b137ead,0x3b291914,0x3b84115c,0xbba8310f,0xbbef8a08,0xbc046b2c,0xbc17b4e8,0xbc2dbf9c, +0xbc288225,0xbbb35f1c,0x3bc8cefa,0x3ba0a8b4,0x3bce8b58,0x3c36fffb,0xbacb290d,0xbc073919,0xbc103070,0xbb88a0fe,0x38641cae,0x3b3d9b98,0x3b9ec3d4,0x3b9aa2ec,0x3af66ea4,0x3a8a5d34,0x3b073e8f,0x3b729af0,0x3ac8a503,0x3a985e39,0xbb0dea1c,0x3bf738e0,0x3c02f639,0xba43a095,0xbb021d89, +0xbbccfc60,0xbbef9edb,0xbaf78696,0x3b533853,0x3bbaa835,0xba427559,0x3a129db8,0x3bc81f2b,0x3be2887e,0x3bf9269d,0x3c251001,0x3c5f7238,0x3c41b012,0x3bb884bd,0xbaa9ada1,0xbb7760bf,0xbb102d39,0x3c080018,0x3c2f8525,0x3b013ef9,0xbaf8c5b5,0xbb89e970,0xbb38ce6a,0xbb1e7e10,0xbb24b094, +0xbb99523b,0xbb367669,0xbb172963,0xb9d1978b,0xb91bdb15,0x3a9b758f,0x3b17ffab,0xbaa179ea,0xbb8bee18,0xbb9689a4,0x3af89d50,0x3bae237a,0x3b8d800d,0xb9f1910a,0xbc118fa6,0xbc734f19,0xbbf26030,0xbbd15091,0xbc885e4e,0xbcb2b21a,0xbc9860ef,0xbc3fa706,0xbc8d6655,0xbc705abe,0xbb9f065a, +0x3c19298b,0x3c4c6549,0x3b91f11b,0x3adeb645,0xba17c7c3,0x399a07af,0x3b4b3a16,0x3b96b397,0x3b99d0da,0x3b85e11f,0x3b16c4da,0xb8c7690e,0x3a4367d4,0x3a66651a,0x3ae1aea8,0x39af69cc,0xba8ebc52,0xba40a3bf,0xbaa608c4,0xb8ee1a77,0x3adc4555,0xba4487da,0xbb68c9cf,0xbbd6b7ad,0xb8ff48a5, +0x3a9c9b29,0xbb135b26,0xbb64337a,0x3b8d4363,0x3be4b09c,0x3c02b816,0x3bd1d6a3,0x3ba166ee,0x3b8e32d5,0x3b588b02,0x3aaf9596,0xbaad654e,0x39aa45ac,0x3bd491ad,0x3bed2775,0x3bf2a62c,0x3be0fe02,0x3b3b638e,0xb9e4d9d2,0xbb78f7ae,0xbb91ca5b,0xbb9db185,0xbb950917,0xbb9d6720,0xbb9fcdc5, +0xbb80f207,0xbad3a0d0,0xb9cd83a9,0xba90f93a,0xb7c7fe02,0xba230bfc,0xbb038ac5,0xba8ac466,0x39a97e2c,0x3a24192c,0xb96adbfa,0x3a89a480,0x3bb37c91,0x3b71363c,0xbb8af1f9,0xbc1100bd,0xbc03682c,0xbbae7498,0xbad72a24,0x3bcc686e,0x3c20ae2d,0x3c16c96b,0x3c27f5c5,0x3c260a14,0x3c389881, +0x3c0652ea,0x3bc60602,0x3b7de926,0x3b34d008,0x3b0ff033,0x3aa5698c,0x3ab6c21f,0x3a03bd0a,0xb9a61736,0xbafaf169,0xbb72185c,0xbb942d57,0xbb9cce8d,0xbb49ad97,0xb97e9c66,0x3ac6e71b,0x3b22c091,0x3ae7af27,0x3b2f48e8,0x3b32dd73,0x3b1bcd3f,0x3b6079b3,0x3b46a46a,0x3a806ea2,0xba870d25, +0x3ab9f160,0x3b29023b,0x3bcf0d5e,0x3bf883c7,0x3bfcba58,0x3ba82529,0x3b51e73b,0x3b13b483,0x3abf2319,0x3a34a050,0x38a318bf,0xb9e01c9c,0xb890b75f,0x3a3dda3c,0x3ae5747b,0x3add8461,0x3a1476ba,0x399e82ba,0xba87c489,0xbb34d1f0,0xbb78733c,0xbb87108d,0xbb40708a,0xbb48c8c5,0xbb55c225, +0xbb7c6433,0xbb3d2279,0xbaae7601,0x3a90e031,0x3b281dc3,0x3b72d114,0x3b8625d9,0x3ba40aa0,0x3b9e5e0d,0x3b60700a,0x3b24327a,0xbbc65fec,0xbbadc91a,0xbb8fa2d0,0xbb595872,0xbad22657,0xba50d3b8,0xb8a8df7f,0x39979709,0x39db8d27,0x3a1d0c21,0x3a14039b,0x3a31c163,0x3a354cc3,0x3a407346, +0x3a0da766,0x3a3604ab,0x3a897117,0xb9883c84,0xbacb4776,0xbb27abd5,0xbb168ce2,0xbb311c58,0xbb4be772,0xbb51d87d,0xbb4a38c0,0xbb640fe1,0xbb62b2dc,0xbb8128ef,0xbb8f3ae1,0xbbae7301,0xbbc84cb8,0xbbe3563c,0xbbf709be,0xbc0ad2ed,0xbc1560d4,0xbbf09836,0xbaa43ecd,0xba9b2cec,0xba206d3e, +0xb9013930,0x391720aa,0x39cabdc3,0x3a4b93ef,0x3ab6a42e,0x3abf47d3,0x3aca34a6,0x3ad63e11,0x3ad2d71c,0x3acdf4f8,0x3ace6f79,0x3aa338e0,0x3a54621a,0x39f78853,0x3942bbea,0x3800036b,0xb96feacb,0xb78744f7,0xba4e0fd1,0xba99b162,0xbad70f77,0xbb0ae0d8,0xbb3816d8,0xbb4d31b2,0xbb5ba282, +0xbb5fc3df,0xbb731fe1,0xbb82f48c,0xbb8797c9,0xbb60cd0e,0xbb27ccf2,0xbb0bf0cd,0xbaffc7d9,0xbb24cd3e,0xbb334df5,0xbb213841,0xbb13d5a3,0xbaff9cad,0xbacc8d52,0xbaa1b2af,0xba642e59,0xba89f3f2,0xba93937a,0xba9bcefd,0xba9e2951,0xba9e6677,0xba99ad15,0xbaa92b28,0xbab00690,0xbabc35e3, +0xbabeb366,0xbac35448,0xbad48d93,0xbac9106c,0xbad139cd,0xbabfc17a,0xbb105287,0xbb0e9500,0xbb09215a,0xbb106cce,0xbb1d9aaa,0xbb2cef0d,0xbb359350,0xbb3c3ce5,0xbb523896,0xbb50fb9e,0xbb5616c6,0xbb21744d,0xbb2732e1,0xbb33ec47,0x389b9b71,0x390da5c6,0xb72be47f,0x39856879,0x3951de66, +0x3881d5ff,0xb9bf1668,0xb9de43af,0xb9d29a91,0x39856077,0x39e49f4d,0x38a84387,0x39ce79b9,0x3a0349d4,0x3a8b182a,0x39c03288,0x38869412,0xb9bc11d6,0xb9ba19e5,0xb9dd3680,0xb9da5de1,0xb9dd1351,0xb9ab33fe,0xb9f14364,0x39b57b59,0x398e9d24,0xb91ec7cd,0x380da26c,0xb8775cb7,0xb9d09541, +0xb9e56989,0xb9ce5b12,0x398269a4,0xb90315b7,0x38bbb918,0x39c7c8fd,0x39628e2b,0x3a9e92ca,0x3a611ee6,0x3af1486f,0x3adb2d3c,0x3a89510c,0xba051af9,0xba899c05,0xba82daaf,0x39c2a9d4,0x3a4bb963,0x38fa0f05,0x3aad30d6,0x3b0e48de,0x3b6594fa,0x3acd6c38,0x39865d15,0xbaa00a84,0xbadad700, +0xbb026f49,0xbaf8e89c,0xbaf3c8f2,0xbaa41be8,0xba5fbc7d,0x3a2ceacf,0x3a86a96e,0xb8134b9e,0x3a0b9e81,0x39222980,0xba08baee,0xba196ad5,0xb99008be,0x3aae4d46,0x3974451e,0x39b36af7,0x3abba7f9,0x3a97d1ea,0x3a8b4c12,0xb83d311f,0x3aeb24ca,0x3acecc00,0x3a690159,0xbad74944,0xbb05e0bf, +0xbb0f75a1,0x3ac1c7f7,0x3b23d535,0x39eaa5ed,0x3b1c0b11,0x3b41afb5,0x3bc4bb5a,0x3b0e59c1,0x3969b7a7,0xbb0f2c15,0xbb2851fb,0xbb49c9ec,0xbb36f63c,0xbb2880e4,0xbad52ff4,0xba94a095,0x3afa7ffb,0x3af0971c,0x3a0b40ec,0x3ad1db83,0x3a21c3ac,0xba15c343,0xbac0ac15,0xba8703ce,0x3ae2c90f, +0xb92120af,0x3a70954f,0x3b25ea7d,0x3ac4db63,0x3b83fa84,0x3b344b9a,0x3bceff14,0x3bd1943e,0x3b9d693a,0x39a82fda,0xbb11af1f,0xbb727ee3,0x3aa27916,0x3b11838e,0xb99eb7e1,0x3b8367ae,0x3c08f0df,0x3c5266db,0x3bc33fd0,0x3a22c277,0xbb8f09ce,0xbbcba337,0xbbed9f53,0xbbd32f4f,0xbbae121a, +0xbb6d9f9c,0xbb461098,0x3b06fb40,0x3b50d8d8,0x3b4b85d7,0x3b5c7fad,0x3b4529af,0x3b981214,0x3ba3d44b,0x3b8ee668,0x3bc827ce,0x3b1d1025,0x3ac905a2,0x3b7570e4,0x3b7f8729,0xbbd30290,0xbbe91aa2,0xbc0f231a,0xbc1a2ecf,0xbc1f9514,0xbc16984a,0xbba55a06,0x3bc8290f,0x3b9f4833,0x3bd98b3b, +0x3c42e395,0x3987b0d3,0xbbecf88c,0xbc124493,0xbbb3a668,0xba5bcb6d,0x3b53c7a6,0x3bbf3fac,0x3bdac220,0x3b8d2e5a,0x3b41ce5e,0x3b68f91b,0x3b9687dd,0x3a6c8b04,0x39fe877d,0xbab29cc6,0x3bdd1a1b,0x3bef219c,0xb9b51add,0xbb031719,0xbbcba35d,0xbbe2c5d2,0xba3a5024,0x3b650ff6,0x3b96d230, +0xbb29662a,0x3b5834bb,0x3be6682f,0x3c10d760,0x3be64492,0x3bafdd4f,0x3c527892,0x3c51d633,0x3bb290b4,0xb9a810ab,0xbb752062,0xbb66c1ea,0x3bdf9ba6,0x3c2d4deb,0x3ba22271,0xba3dbf14,0xbb6ea740,0xbb2de22b,0xbb16d77d,0xbb022b3c,0xbb863b38,0xbadc10ed,0xbad0ca6a,0xba9e1da2,0xba4da378, +0x39bac7b0,0x3af565f8,0xbb077037,0xbb9a3504,0xbb81fe2d,0x3b0e50f2,0x3b9ee17d,0x3b1f6879,0xbb57bde8,0xbc2cd60d,0xbc65735b,0xbba14e07,0xbbfc853b,0xbcdd3f8e,0xbcc64e54,0xbc89f5f0,0xbc208baa,0xbc5702b8,0xbc577b4d,0xbc419766,0x3c29043a,0x3c7514ab,0x3b3bc89e,0x3ab46f54,0xba86c18b, +0xba02444b,0x3b07fa14,0x3b7be7f2,0x3b7d64ae,0x3b7eb476,0x3b10e2a3,0xba90be65,0xb70315b4,0x3a19af04,0x3af9a3f6,0xb84f0614,0xbac5608e,0xbab24140,0xba434aca,0x3a23e9f1,0x3ab9b98d,0xbac0a48b,0xbb84235a,0xbbd5f365,0x3ab71d74,0x3b4ee20d,0xbb6c4932,0xbad43598,0x3bf9184a,0x3c53eadc, +0x3c4687c6,0x3c055612,0x3bab3fe4,0x3b6a1ed1,0x3b1f9253,0xb9c64a05,0xbb341964,0xbb08b2ec,0x3b6b5f3d,0x3bb4a6c1,0x3bd1d3d2,0x3bdcab87,0x3b4fd724,0x39ec4e78,0xbb49a80d,0xbb7ce1e5,0xbb90e338,0xbb97988a,0xbb985d1b,0xbb99cfd1,0xbb6cfd5d,0xbaa8c7ca,0xb6a90300,0xba2b212e,0xb7ae18ac, +0xba126b5b,0xbaeb1ed6,0xba04e9af,0x39dd2b89,0x3a693451,0xb99b191d,0x3a8cd6fd,0x3bbbcd6a,0x3b9e51a7,0xbbb844d7,0xbc21af34,0xbc35a329,0xbc10e901,0xbb8db54b,0x3b8e14f5,0x3c0b7d99,0x3c036d26,0x3c216148,0x3c264b4d,0x3c391469,0x3c11c02d,0x3bec19a7,0x3bba4d3c,0x3b6b5cfa,0x3b18892f, +0x3a817758,0x3a5e2247,0xb9cdceea,0xbae5a03e,0xbb47e68e,0xbb9131a0,0xbb9b1ff9,0xbb9babab,0xbb3c0590,0x3a03a0c6,0x3a92a79f,0x3adbfef8,0x3abf9942,0x3b356e0a,0x3b3df523,0x3b309e0a,0x3b30bf35,0x3b08e5e4,0x3a327d5b,0xbad8e9f3,0x3b92a69a,0x3ba974d7,0x3c0808a7,0x3c13d2c6,0x3c0f1434, +0x3bbe3ea2,0x3b72e19e,0x3b2117fe,0x3abfac50,0x39f61263,0xb9d34899,0xba4d5c7a,0xba3b22a2,0xb91e14a8,0x3a7d7db9,0x3a85c2d7,0x39003d0b,0xb9991897,0xbac24de7,0xbb4dedd0,0xbb68a562,0xbb6c2b10,0xbb27028f,0xbb4b9968,0xbb622156,0xbb77b19d,0xbb0facfa,0xb94745a9,0x3b11fc87,0x3b7d995d, +0x3ba62775,0x3bb07e46,0x3bd100b4,0x3bd8a54e,0x3bbd1e6f,0x3bacd385,0xbbc20869,0xbbb174a1,0xbb89ceba,0xbb3922e5,0xba3196b3,0xb9122008,0x39041a27,0xb7351567,0xb9af57f8,0xb9e097d7,0xba359924,0xb9d0621a,0xb939b101,0x384100bc,0xb95f65fe,0xb9315ab7,0x390971f4,0xba8e52d4,0xbb0fbf4e, +0xbb51343b,0xbb4b02ba,0xbb603ad0,0xbb731c1b,0xbb741b8b,0xbb6a0115,0xbb84894c,0xbb737c1e,0xbb807f32,0xbb864f14,0xbb99380d,0xbba99c7a,0xbbb77343,0xbbd041dc,0xbbf41f50,0xbc06b56b,0xbbe0fe7e,0xbb07e803,0xbb049246,0xbaac29ed,0xba5b3fb0,0xba12dd75,0xb951478c,0x39f4de01,0x3ab49784, +0x3ac49bcc,0x3acdf591,0x3ace67b7,0x3abecd09,0x3aa811e9,0x3a9ea1a7,0x3a3f6941,0x394f0f61,0xb9937084,0xba28a4a0,0xba6c8ca3,0xbaa0b893,0xba76f121,0xbad1a1db,0xbb005697,0xbb1c5a4a,0xbb354f89,0xbb5b5724,0xbb718c80,0xbb818d65,0xbb8506cc,0xbb902698,0xbb9adba4,0xbba12255,0xbb8b802a, +0xbb615ffb,0xbb45acbc,0xbb355226,0xbb4c5311,0xbb5989b7,0xbb43eee9,0xbb30cef4,0xbb17381d,0xbaf31a3a,0xbac8cbba,0xba97ae7e,0xbab5f072,0xbabe6012,0xbac278b4,0xbac3867d,0xbac249df,0xbabcbc76,0xbad1baee,0xbadd53fb,0xbaedbde2,0xbaf8485b,0xbb0264e0,0xbb0fff8d,0xbb0b1a9e,0xbb10ef19, +0xbb097a8c,0xbb317380,0xbb32d957,0xbb2f271d,0xbb37f583,0xbb4546df,0xbb54c915,0xbb5e0998,0xbb6520ad,0xbb7c17cd,0xbb75db64,0xbb767c3e,0xbb4c208a,0xbb4fef58,0xbb4d9cdc,0x3987b950,0x395c70e3,0x38e08edf,0x39deb7d1,0x39dcab9d,0x39c2db86,0xb89d39e9,0xb92655d3,0xb9750416,0x3a02859c, +0x3a2c162a,0x3931b998,0x3a11aebb,0x3a35b8b9,0x3aaa0f73,0x3a2ff1ec,0x39c84611,0xb893f701,0xb8e5fb5f,0xb95c2c0d,0xb985880a,0xb961ee5b,0xb8ad30a4,0xb89ad03c,0x3a15c8ae,0x39ebd534,0xb8653958,0x392b5446,0xb6cb9960,0xba15c921,0xba04d58e,0xb9dd3cdb,0x39a47ebd,0xb8ccd294,0x39146533, +0x3a213993,0x399e7bb9,0x3a8ae541,0x3a642a06,0x3b000aac,0x3b01d477,0x3ad2bd47,0x38b454df,0xb9f4f5f1,0xba38f3f6,0x3a572a59,0x3a8e6887,0x383feacf,0x3aafa7b8,0x3b169596,0x3b7ce106,0x3b134a6c,0x3a84e9fd,0xba1de954,0xba9e3ba6,0xbadd4e26,0xbae6de42,0xbadc1030,0xba671a50,0xb860f8d1, +0x3a89c712,0x3aa4f9c1,0x380efd9e,0x3a1bbd4b,0x38827776,0xba8acef8,0xba896d8e,0xba3452d0,0x3a95582d,0xb8e819fe,0x390e74b8,0x3ae55b39,0x3a850c33,0x3a2e752a,0xb8cf4ee5,0x3af31e6a,0x3b01f171,0x3ae62b8c,0xba27b52d,0xba969521,0xbafbee40,0x3b0a4641,0x3b3f862f,0x39b49f4d,0x3b20b517, +0x3b4b2653,0x3bd3a984,0x3b4e5326,0x3ab01263,0xbab02804,0xbaf665bd,0xbb28c011,0xbb2dcb22,0xbb128177,0xba866043,0x3952c3be,0x3b1cc75a,0x3b0eaac4,0x39af08d2,0x3aca2259,0x38e955fa,0xbb0d110a,0xbb2b4d05,0xbb074dfa,0x3aaa6bf7,0xba5b7820,0x39cd4568,0x3b4b331a,0x3a926416,0x3b4e5173, +0x3b1d5f69,0x3bcbd780,0x3be09ee0,0x3bc54cc1,0x3af0ba38,0xba28fd6e,0xbb477181,0x3b110aec,0x3b320010,0xba599f0b,0x3b656596,0x3c037d86,0x3c5b16f5,0x3c00c89f,0x3b34044e,0xbb39ced7,0xbba74288,0xbbdae1d2,0xbbdb10d4,0xbbafa377,0xbb3a4ae2,0xba833632,0x3b501328,0x3b7d23d8,0x3b306832, +0x3b6d2043,0x3b324afb,0x3af5d327,0x3b3cfdde,0x3b2ae3f1,0x3ba2dacd,0x3a6a7787,0x3a2c2512,0x3b9f2fc8,0x3b5d8c0c,0xbbef776c,0xbbd86a0d,0xbc1528a3,0xbc1712bd,0xbc09161f,0xbc01750c,0xbb93e321,0x3bb50d78,0x3b9ec747,0x3bece129,0x3c4cedd5,0x3b099df0,0xbbc478fc,0xbc10106b,0xbbde7bc5, +0xbafc7c10,0x3b629b02,0x3bd6c90f,0x3c084990,0x3be5c818,0x3ba6da31,0x3b9bf25c,0x3b9f391a,0x393d25bb,0xb945f486,0xb98f3482,0x3bb2157d,0x3bc682ba,0xb859a009,0xbad7f209,0xbbb31bec,0xbbc1c043,0x39100983,0x3b59b744,0x3b60eeb3,0xbb857604,0x3bc9e634,0x3bfd4005,0x3c161f63,0x3bac0e41, +0x3aa29573,0x3c454ddb,0x3c60f4e7,0x3bbdf125,0x3a41f1b9,0xbb7cb072,0xbbaf06e7,0x3b92bd57,0x3c1cd096,0x3c00ab74,0x3a2b1a3c,0xbb3829c2,0xbb0eaa93,0xbb0a9ec9,0xbab59a47,0xbb3f4125,0xb9c4d13b,0xba289984,0xbaedf964,0xbaa6409e,0xb9e0e240,0x3ac0e0e7,0xbb2cd084,0xbb99e50b,0xbb4ef73a, +0x3b012640,0x3b812ec6,0x3a5bb62a,0xbbae864c,0xbc3a5006,0xbc5179e8,0xbae6ac5d,0xbc297aa9,0xbd0da96d,0xbcbfe4b9,0xbc594fa5,0xbc049bd8,0xbc283885,0xbc44ae5d,0xbc83c1b9,0x3c25f021,0x3c8138ac,0x3ac0460a,0x3a71bad1,0xbacd9a42,0xbaa560cc,0x3a65c032,0x3b39ffe5,0x3b46d9a2,0x3b586cf0, +0x3afec0df,0xbab18c60,0xb99da927,0x3a0c1fed,0x3b035027,0xb998d959,0xbae284c1,0xbafdea9e,0xb96edad9,0x3aa7a559,0x3a953f5b,0xbafb3988,0xbb82b9a1,0xbbb78212,0x3b288f0f,0x3b8a68e8,0xbbab8774,0xbace6d84,0x3c382e4f,0x3c94581f,0x3c7244db,0x3c07302c,0x3b8e25f1,0x3af3fd87,0x3a8ba510, +0xbab0e3aa,0xbb5b8c63,0xbb72f6d9,0x394c07f0,0x3b7a3928,0x3bb7eee9,0x3bd5f511,0x3b678b97,0x3a9baee1,0xbb00d2b8,0xbb49c241,0xbb7d8331,0xbb915a63,0xbb8fc82b,0xbb8aa29f,0xbb4212e2,0xba757de5,0x39804d25,0xb8bcca92,0xb929bd2c,0xba2f291c,0xbabc3d94,0x38889a21,0x3a12eb7e,0x3a88c8bc, +0x389573ca,0x3aa695ad,0x3ba84a5e,0x3bd0cb14,0xbbcfa00c,0xbc1d8e34,0xbc48a2e2,0xbc29c2a8,0xbbb39a83,0x3b1475fe,0x3bd2b2cf,0x3bd87b4e,0x3c1296cc,0x3c1fe80b,0x3c2ebe10,0x3c13b765,0x3bfc30ca,0x3bdcc1fa,0x3b87af34,0x3b1abb8f,0x3a34687d,0x38d67191,0xbabd03d1,0xbb4f2a24,0xbb8342a8, +0xbba11eee,0xbba447b0,0xbb947fe4,0xbb2e4d3f,0x3a57b961,0x3a1aadfd,0x3a623895,0x3a969575,0x3b24a573,0x3b32efeb,0x3b388286,0x3ae40177,0x3a8dff14,0x3a00925e,0xbb08a084,0x3bd98f49,0x3bdf9ef5,0x3c142d75,0x3c16ab9b,0x3c0de12a,0x3bc541c1,0x3b8aa420,0x3b45755d,0x3af2bc10,0x3a23fae1, +0xb9ccf9cf,0xba542379,0xba87d33e,0xba47fa09,0x398478b4,0x39cf4a81,0xb9bad8cb,0xba51d104,0xbad839ba,0xbb444a4f,0xbb44491f,0xbb3f4d9c,0xbb1588cd,0xbb4aedb5,0xbb635919,0xbb6215f9,0xbaac6ef1,0x3a7a0dbb,0x3b51a3c4,0x3b9c6071,0x3bbdf0f6,0x3bc28b66,0x3bded6a4,0x3beef46c,0x3be559db, +0x3be49e85,0xbbb2363f,0xbba84708,0xbb7968ea,0xbb14bd44,0xb7fa4438,0x399283db,0x394ad1f5,0xb9696809,0xba5b2269,0xba8c0d89,0xbab6c756,0xba876ac1,0xba401354,0xb9e71c5b,0xba4ab008,0xba660c00,0xba42fbc8,0xbae1be03,0xbb291976,0xbb60a0ad,0xbb6a4d45,0xbb8033cc,0xbb88d7b6,0xbb86c06b, +0xbb82bf26,0xbb900698,0xbb803e9f,0xbb756479,0xbb731c83,0xbb79ce7b,0xbb824b6c,0xbb812fe7,0xbb9f4589,0xbbc7c86b,0xbbe6b713,0xbbc61043,0xbb43be31,0xbb43c072,0xbb135a68,0xbaee9c4b,0xbac9e9bc,0xba8d59d6,0xb9770f54,0x3a52e677,0x3a763723,0x3a80babb,0x3a705b68,0x3a4b58b9,0x3a15c32b, +0x3a04026d,0xb8413bac,0xba1aa868,0xba91f63f,0xbac3de2e,0xbaeccfbe,0xbb0c4f46,0xbaf4810a,0xbb1b4c2a,0xbb2f91a3,0xbb46bc25,0xbb59e054,0xbb759a98,0xbb85e8b0,0xbb905fa8,0xbb9714ac,0xbba33bea,0xbbaffeb8,0xbbb83cd1,0xbba59dc4,0xbb8d983b,0xbb806d9f,0xbb6e3f06,0xbb6701bf,0xbb7328da, +0xbb5bc803,0xbb460835,0xbb2b3b63,0xbb0ed621,0xbafa72cf,0xbace3498,0xbae92b38,0xbaebce39,0xbae9b0a8,0xbae83b64,0xbae5fd47,0xbadf67c8,0xbaf7a317,0xbb031ee6,0xbb0c97cb,0xbb15084d,0xbb1e1a6d,0xbb2ebcc6,0xbb2a23c5,0xbb2f97e1,0xbb2a8613,0xbb46b4a6,0xbb4921c0,0xbb48f37b,0xbb537206, +0xbb6055a6,0xbb6e059b,0xbb77cb68,0xbb7ec0a5,0xbb8ad4ef,0xbb851d01,0xbb83e280,0xbb68d6c1,0xbb6ab9b2,0xbb5797cb,0x39f46017,0x399ac81b,0x39876703,0x3a1f5663,0x3a2cc132,0x3a371003,0x397a37ee,0x390c06e7,0xb7ef39ba,0x3a45dd9b,0x3a6c8dab,0x39b46fd2,0x3a49d131,0x3a6f8501,0x3ac161c5, +0x3a7e9670,0x3a3b3570,0x39918c23,0x393551bf,0x381efdb9,0xb8432b65,0x36db2480,0x391e282b,0x399feaa5,0x3a49901a,0x3a1dd752,0x3855065f,0x398765ad,0x380a76ea,0xba2abe99,0xba110bee,0xb9e5221c,0x39c9d496,0xb824bced,0x396a6fe3,0x3a5cc452,0x39c5b91b,0x3a54d556,0x3a663c31,0x3b0333ba, +0x3b117a02,0x3b0bdfd5,0x3a32cb78,0x3917d9d5,0xb9ad159e,0x3aa7ed49,0x3abb72ef,0x390b1002,0x3ab99336,0x3b1cf432,0x3b828f6e,0x3b3a0696,0x3ae7a214,0x39289bfb,0xba253a85,0xbaa58c16,0xbac1b9fb,0xbaba5062,0xba000088,0x3a38691f,0x3ab50990,0x3aba5b1f,0x390f22a7,0x3a185f51,0xb88d1615, +0xbab75da5,0xbabff89c,0xba8c38e5,0x3a7b754c,0xb9d64f5b,0xb83ec47e,0x3b05f387,0x3a5801d4,0x3955afe0,0xb8e9390c,0x3afe26b3,0x3b1dc76c,0x3b2b3d2f,0x39b77f4a,0xb987a099,0xbac7ee18,0x3b2fe230,0x3b5db389,0x3a1979f4,0x3b302e65,0x3b58b389,0x3bd58b77,0x3b837b60,0x3b2022d5,0xb989b773, +0xba8c5d12,0xbafdd548,0xbb1a3325,0xbaf58f3b,0xb9f78a3f,0x3ab57b7d,0x3b2ddd9f,0x3b19045b,0x393abd47,0x3aa3cac2,0xba0453f3,0xbb59d854,0xbb6d6c80,0xbb445643,0x3a73e0a6,0xbab9fe76,0xb8edde23,0x3b697f6d,0x3a2e0ba5,0x3b048b38,0x3b075742,0x3bc29fe3,0x3be884b5,0x3be8d99e,0x3b52ec84, +0x3a71e51b,0xbb08de4d,0x3b4cd6af,0x3b546ab5,0xba613627,0x3b4b2637,0x3bf4e003,0x3c560bfb,0x3c19f6ac,0x3b9f545b,0xba58e3c5,0xbb6e9e8a,0xbbbb0f85,0xbbd40f01,0xbba98672,0xbb026ad6,0x3a98c70a,0x3b864e35,0x3b8ba10b,0x3b1b9b75,0x3b6ae530,0x3b109029,0xba496d39,0x3a12cde1,0x3a20ad12, +0x3b6f7412,0xba31b4f4,0xb996df1f,0x3bbe2e63,0x3b274cbb,0xbc00d969,0xbbc3babc,0xbc13cc6e,0xbc0c58fa,0xbbd92066,0xbbd8aa94,0xbb872dde,0x3b8bd891,0x3ba116e5,0x3c052ae9,0x3c56207c,0x3b94adb5,0xbb7b3797,0xbc0363e6,0xbbf92bfe,0xbb47516e,0x3b56b5bf,0x3bdd25ba,0x3c1712eb,0x3c13d17a, +0x3be27978,0x3bb3ffa9,0x3b90019a,0xba3925f4,0xba6c42ed,0x3a6fc724,0x3b7ddb84,0x3b914656,0x389b7067,0xba8e9e35,0xbb89c877,0xbb8dabb6,0x3a77726e,0x3b48435f,0x3b1511ab,0xbba99fe9,0x3c11125b,0x3c086201,0x3c04e847,0x3b2e7c6d,0xbb277e1b,0x3c34377e,0x3c696b3a,0x3bd2089a,0x3adc70da, +0xbb85c988,0xbbf5c1c7,0x3ac4c06e,0x3bfd7d49,0x3c24988d,0x3b0b9aee,0xbada52ca,0xbab18de6,0xbaf342e5,0xba58cb6e,0xbaa746ab,0x3a7105a1,0x39b7aab1,0xbb06b9f0,0xbaba5db8,0xba8aff01,0x3a7bcdbf,0xbb41f39b,0xbb8ba4ec,0xbb1b5cf0,0x3ac4769c,0x3b386f02,0xba0ad2f7,0xbbe348df,0xbc3f4a33, +0xbc360ceb,0x3ad2bf73,0xbc6fd5dc,0xbd1c3c8c,0xbca05ec6,0xbc01b18f,0xbbcf2c94,0xbc073546,0xbc34ddb6,0xbc89b240,0x3c093947,0x3c6d319b,0x3a9aa109,0x3a1b7a49,0xbb05db3f,0xbaf12110,0xb9c973f5,0x3ad1e342,0x3b0d3472,0x3b2aff04,0x3ae69b60,0xba618f84,0xb83e4980,0x3a409b3d,0x3af690c0, +0xba065366,0xbaeb2976,0xbb191748,0x396b4e33,0x3ae08631,0x3a65caef,0xbb0a6346,0xbb6a68d9,0xbb790d52,0x3b487426,0x3b87088c,0xbbcd05cd,0xbb8cb6c1,0x3c711b9e,0x3cb0ac58,0x3c7cf6f2,0x3be5ef43,0x3b2c2463,0xb8ad21e8,0xb9d7e71e,0xbb04ee3c,0xbb6fc33d,0xbb9cc416,0xbb3fec0d,0x3b0bb378, +0x3b9d011a,0x3bc59b6a,0x3b7d71f7,0x3aed65ed,0xba2b15f6,0xbb0eaf16,0xbb50154b,0xbb814806,0xbb809ba6,0xbb62c9d5,0xbb058914,0xba062496,0x39d07e3d,0x39dbab27,0xb9b71b6e,0xba57f84f,0xba85b2f5,0x39ed209a,0x3a1f19a3,0x3a9607bd,0x3a640232,0x3ae1e513,0x3b8c0e87,0x3c06ade6,0xbbd74ffb, +0xbc0b7993,0xbc3dd3ea,0xbc23e1db,0xbbba8e90,0x3a1a9e6e,0x3b8c339f,0x3ba48814,0x3bfd011a,0x3c15557d,0x3c20c90a,0x3c0fb1fe,0x3bfd270e,0x3bece61e,0x3b8aab5f,0x3b0b6596,0x39aa0df3,0xba455b73,0xbb230e7a,0xbb8d4a3d,0xbb9b755a,0xbbaa3688,0xbbacdf02,0xbb876eeb,0xbb1d16c2,0x3a41cee6, +0x3894e101,0x390f2198,0x3a39b6c1,0x3af7ecd7,0x3b146d26,0x3b33b674,0x3a3e110d,0x38cc2b31,0x392aa16d,0xbb21f78a,0x3bf90cc7,0x3bf763a6,0x3c0e5efc,0x3c0991bd,0x3c007861,0x3bc7e5ee,0x3ba33893,0x3b85c9da,0x3b2eafae,0x3a9d893e,0x3981f9f2,0xb996d878,0xba5151db,0xba83b1cf,0xb9182e6a, +0xb729736d,0xba566611,0xba92bde9,0xbacd48e6,0xbb1ff487,0xbb1762f1,0xbb14214f,0xbb0ad777,0xbb450877,0xbb556d02,0xbb396e27,0xb998d147,0x3b054b41,0x3b7d2136,0x3ba8f7d9,0x3bbe551e,0x3bba2311,0x3bd285f8,0x3be8082c,0x3becdfae,0x3bf48dce,0xbb95d148,0xbb919932,0xbb4cebf8,0xbaddee6c, +0x397d9497,0x39b0d71e,0x38519db1,0xb9cda30f,0xba84323c,0xba9623bd,0xbaaa41cd,0xba877620,0xba4e04e8,0xba115d86,0xba887c85,0xbab5055c,0xbac967eb,0xbb105842,0xbb380404,0xbb6129b7,0xbb773f3d,0xbb87cffd,0xbb917764,0xbb8b0928,0xbb86dd58,0xbb8dbdce,0xbb7c3816,0xbb59cea3,0xbb4e10e0, +0xbb31d7f4,0xbb266ebb,0xbb060a75,0xbb4829d7,0xbb8e8596,0xbbb057fc,0xbb9b301f,0xbb81c710,0xbb81783a,0xbb56ff71,0xbb3faf14,0xbb2bcbfe,0xbb088270,0xba9dae2d,0xb97aaff1,0xb90bdc91,0xb91cbbe0,0xb9867349,0xb9b86191,0xba0013ed,0xb9f2fbcd,0xba7c6d08,0xbab73c68,0xbaf263d8,0xbb0edef7, +0xbb21f517,0xbb34c9f6,0xbb2a35e7,0xbb3e0fee,0xbb4e3c8e,0xbb5f9006,0xbb6ef939,0xbb7f4e0f,0xbb8ac5f3,0xbb96b984,0xbba20b84,0xbbaf0e98,0xbbbe02e6,0xbbc97da2,0xbbba7593,0xbba73630,0xbb9c098b,0xbb91a809,0xbb7582d7,0xbb7df7fb,0xbb67cdc1,0xbb5268b6,0xbb3af8a2,0xbb24b1e5,0xbb186448, +0xbb067265,0xbb0eab57,0xbb0ba78c,0xbb0755dd,0xbb04d3cf,0xbb035cc3,0xbb000a97,0xbb0c33af,0xbb14103a,0xbb1d9a97,0xbb2791ff,0xbb320169,0xbb421a66,0xbb3f8581,0xbb445af0,0xbb430b9d,0xbb4f8bed,0xbb52e834,0xbb565dec,0xbb62b9bc,0xbb6ef3f5,0xbb79b5fc,0xbb8229dc,0xbb859304,0xbb908216, +0xbb87f837,0xbb851435,0xbb7af234,0xbb7a5773,0xbb54a932,0x3a26fb37,0x39bd9de7,0x39d16c94,0x3a481b4f,0x3a6157cf,0x3a7e16e5,0x3a050f1c,0x39c94aec,0x392b2991,0x3a75ed3a,0x3a8d5b3f,0x3a092e56,0x3a788911,0x3a8e95cf,0x3ace74ea,0x3a9da217,0x3a818520,0x3a20aa61,0x39dc3bc2,0x3985c4b8, +0x3910ff92,0x39489bd7,0x39b36b17,0x3a2a604d,0x3a68d631,0x3a394e50,0x39386f3d,0x39aeafda,0x38a066b0,0xba226c34,0xba0fe3a6,0xb9d5da4f,0x39fba598,0x38041fd1,0x39952b11,0x3a8a69d3,0x39e2da21,0x3a14de36,0x3a661436,0x3b02abc1,0x3b1aa2f7,0x3b2539f0,0x3a996f2b,0x3a2ecdb5,0x383785fe, +0x3ad1bb1c,0x3ad8d2c1,0x398d561c,0x3abb56bb,0x3b1ba320,0x3b7f78f5,0x3b54cc39,0x3b1cd64f,0x3a76efd8,0xb871a034,0xba570c8d,0xba95d6ed,0xba907cf2,0xb907eea0,0x3aa89331,0x3ad3bd53,0x3ac5971a,0x395ff38e,0x39f8fbf5,0xb98535ab,0xbaceb05a,0xbaeca321,0xbab6d0b1,0x3a4c1bc4,0xba2af9e0, +0xb946380b,0x3b12adaf,0x3a24c9a9,0xb95fd28c,0xb89d7634,0x3b055ce7,0x3b3528fd,0x3b582089,0x3a9c6c38,0x3a01d6da,0xba8d66ea,0x3b423a3b,0x3b6c00e7,0x3a797b79,0x3b3b8eaa,0x3b606837,0x3bcdcf4b,0x3b97db94,0x3b5b9169,0x3a6a09a4,0xb9a3485b,0xbaae82e4,0xbb01ae8c,0xbac6015a,0xb83da143, +0x3b11ca82,0x3b3021c4,0x3b17f349,0x3763b612,0x3a47a3b3,0xba990212,0xbb8466df,0xbb90c138,0xbb74990c,0x3a2649bf,0xbaf1a81d,0xba103ea2,0x3b78d09c,0x395e950f,0x3a725451,0x3ae7cf93,0x3bb548e4,0x3be865a0,0x3c006e4a,0x3b8d1f3a,0x3b156e0a,0xba82b1f1,0x3b707323,0x3b64044d,0xba281aec, +0x3b257b47,0x3bd69efa,0x3c45fce3,0x3c29b1a1,0x3bda613d,0x3ab83d0f,0xbb06cf6b,0xbb95c5eb,0xbbc07c1d,0xbb9a4967,0xba9b48f7,0x3b4761df,0x3b9b9c03,0x3b90aef1,0x3b0e81c3,0x3b51a6e5,0x3abbf8f9,0xbb4320cf,0xbadf7f8e,0xbab12ff5,0x3b175373,0xbb0dea79,0xba9f51f7,0x3bd06259,0x3ad43c6e, +0xbc048b49,0xbbae3eb3,0xbc0a5f9f,0xbbf622df,0xbba4a6d9,0xbbb94e5d,0xbb889789,0x3b10e601,0x3b97545b,0x3c10f376,0x3c59ab5e,0x3bfe6d3d,0xb9eca453,0xbbdacd5f,0xbbfae1b8,0xbb843eeb,0x3b1c3432,0x3bc7e98b,0x3c1478c6,0x3c216855,0x3c019d79,0x3bb63bf4,0x3b5639b0,0xbaeb4172,0xbade933f, +0x3b008071,0x3b1834e9,0x3b2bd879,0xb899f6e8,0xba1e0c89,0xbb35902b,0xbb189d93,0x3af42eaa,0x3b3ccfdd,0x3a91a824,0xbbc18de6,0x3c391bf6,0x3c0a94e9,0x3bc75d30,0xb92ad936,0xbbc1d379,0x3c1a19e1,0x3c61fdf4,0x3be285bd,0x3b208a5d,0xbb8bc9d1,0xbc1f05c9,0xbac553aa,0x3bb2b280,0x3c3332d0, +0x3b6515ee,0xb9b548d0,0xb9a4d098,0xbac83513,0xb9e305f6,0x39e67c5d,0x3b03f614,0x3aa3fd5e,0xbaf80a83,0xba9bf285,0xbabcd1d9,0x399b0bcd,0xbb475104,0xbb66fa07,0xbae1fcf6,0x3a6dd7fc,0x3acbf41e,0xbaef54b3,0xbc084598,0xbc3f0f26,0xbc13bfbd,0x3ba0e223,0xbca39012,0xbd1e3289,0xbc695c54, +0xbb084f86,0xbba31c65,0xbbcf2f0d,0xbc1a57b1,0xbc74b402,0x3ba98a00,0x3c39fc86,0x3b0c272a,0x398b1275,0xbb2e3029,0xbb23bf22,0xbadeca3c,0x39792510,0x3a9ef861,0x3afaa8fe,0x3ae39e2b,0x38fc3a7d,0x3a18cfde,0x3a8a7b25,0x3ac3099d,0xba48e683,0xbae5eba2,0xbb29b0e4,0x3a090472,0x3aee07f7, +0x3a2256f8,0xbb07240a,0xbb3c6aa0,0xbadc3ea2,0x3b2640e0,0x3b3a84b6,0xbbc82475,0xbc1676b4,0x3c8e8f3e,0x3cb66f11,0x3c63e444,0x3ba510d3,0x3a497b98,0xbadea1fb,0xbae5be00,0xbb22b0e0,0xbb79aadc,0xbbad0fa1,0xbb9ba6ee,0x3a2f5782,0x3b7bdbf3,0x3ba90efc,0x3b805296,0x3b0f5fb5,0x3a2f67be, +0xbaa94782,0xbb1f2937,0xbb52bcfd,0xbb561215,0xbb20c6cf,0xba77bbc2,0xb8151ca4,0x39f9e016,0x3a43446f,0xb9fb1a68,0xba7ab29a,0xba32c864,0x3a01cb20,0x3a07080e,0x3aabe7a8,0x3b0642cd,0x3b2111a9,0x3b74ff08,0x3c26bbc2,0xbbd3c771,0xbbe66996,0xbc1d5ba4,0xbc083378,0xbbab6ef2,0xba05a3f0, +0x3b1e5d67,0x3b616748,0x3bd28f16,0x3c07d462,0x3c0f95ac,0x3c07e1ac,0x3bf26b51,0x3be834bb,0x3b82dbc4,0x3ae24955,0xb82b3706,0xbadec79d,0xbb658657,0xbba6d56c,0xbbacc66d,0xbbaf7cb5,0xbbb3502d,0xbb6c889c,0xbb06bf46,0x39b34efd,0xb9c12f00,0xb9efe569,0x38a49bf7,0x3a83678b,0x3ad353a6, +0x3b24b31f,0xb93105e0,0xba39f266,0xb9aef96f,0xbb3ee293,0x3bf56575,0x3bedf88e,0x3bf1a1d5,0x3be51c88,0x3bde0744,0x3bc7dab6,0x3bbf0577,0x3bb414a7,0x3b7f4fd2,0x3b1465cd,0x3ab32cb1,0x3a38c7e0,0xb7c6f0f7,0xba4faff2,0xb934bb81,0xb94e1352,0xba9c29d3,0xbaa595ae,0xbab401c0,0xbae7308f, +0xbae056ba,0xbaec73c5,0xbb09b563,0xbb3b8f97,0xbb3a7f42,0xbb029cde,0x3a4220e2,0x3b3e4ddd,0x3b86e45f,0x3ba28770,0x3ba91634,0x3b9e52ef,0x3bb347e1,0x3bc9e2b1,0x3bd79dbd,0x3be1b22f,0xbb5476e8,0xbb55ff07,0xbb07ffae,0xba85ceeb,0x3988aad9,0x39119e8f,0xb97b3b54,0xba136ef8,0xba775baa, +0xba580293,0xba2c86b3,0xba2054c2,0xba080003,0xb9da3e7b,0xba91dee3,0xbae1142a,0xbb0fb8b1,0xbb26d57f,0xbb3ff0ce,0xbb5a65f2,0xbb766f24,0xbb874423,0xbb91d0d4,0xbb870ab7,0xbb81b0ca,0xbb82aad7,0xbb64bede,0xbb2c211f,0xbb14b1de,0xbaab2be2,0xba546d8e,0x38d1431a,0xba6e5b0d,0xbb0d3d19, +0xbb4ef6d6,0xbb3e314e,0xbb9c3683,0xbb983c26,0xbb876650,0xbb7cf6cc,0xbb66a915,0xbb41c5a7,0xbb0ec034,0xbabf8503,0xbab6244a,0xbabf7053,0xbacc628e,0xbacbfb36,0xbacc7d0a,0xbab729e4,0xbae8e0d7,0xbb063905,0xbb1c3cc7,0xbb2ca60c,0xbb3c2d35,0xbb4a9b79,0xbb45eee4,0xbb4fa6be,0xbb5c01e0, +0xbb67e641,0xbb7496c0,0xbb7d0848,0xbb890b93,0xbb95bde3,0xbba4a818,0xbbb2059e,0xbbc19367,0xbbcfdea5,0xbbc44cbb,0xbbb71285,0xbbaf4ab0,0xbba3475f,0xbb76cb09,0xbb78e3ba,0xbb674f35,0xbb552234,0xbb44c524,0xbb379886,0xbb30e108,0xbb23eb32,0xbb24b03a,0xbb1d0b26,0xbb15e4ff,0xbb1111c6, +0xbb0ec1d4,0xbb0ac527,0xbb16572a,0xbb1e2976,0xbb26d185,0xbb314ffc,0xbb3c34b4,0xbb4aef9b,0xbb49a2d3,0xbb4cf35d,0xbb4d452b,0xbb4f1a38,0xbb523ef0,0xbb55db0d,0xbb630e91,0xbb6e3bfb,0xbb75c297,0xbb804bfa,0xbb8379c4,0xbb8d164b,0xbb82c0d8,0xbb7dd280,0xbb7ec9bc,0xbb7c52bc,0xbb4af0f9, +0x3a4fd7a6,0x39fa430a,0x3a0d24b1,0x3a6df5c1,0x3a887a0a,0x3a9f870e,0x3a47886d,0x3a231116,0x39c1c153,0x3a8be368,0x3a9d45bc,0x3a3e4bbf,0x3a904f54,0x3aa128b6,0x3ad62991,0x3ab6ce4d,0x3aa0e180,0x3a74b0b2,0x3a284e6d,0x39eb86d8,0x399c8eaf,0x39cd1b42,0x3a0ccab1,0x3a6ee438,0x3a81934c, +0x3a52f773,0x39983491,0x39cae605,0x39038dba,0xba033308,0xb9ffa0ea,0xb9ac7fb8,0x3a19eaad,0x391c2cde,0x39c34b26,0x3a9fe5a3,0x3a0ac0c9,0x39e6ac9f,0x3a6a30a8,0x3b00a9a7,0x3b20d91d,0x3b39bc9a,0x3ad3678a,0x3a94fda2,0x39dfc433,0x3ae95a49,0x3ae7e5b6,0x3a02b37a,0x3abd6486,0x3b18b887, +0x3b73d44b,0x3b691e24,0x3b406b7d,0x3adeed07,0x3a0112ec,0xb9c8e727,0xba4c0b3e,0xba372037,0x397a0141,0x3adeb0ff,0x3ae8eea6,0x3aca0bb8,0x3988d7d5,0x39acd9bf,0xb9e077ea,0xbacdaa71,0xbb03c6cb,0xbad4b5bf,0x3a1ec34b,0xba53e9a6,0xb98c96be,0x3b17a685,0x3a05eec2,0xb9db29c9,0x36ef6462, +0x3b0c171c,0x3b4a0c1a,0x3b7f3946,0x3b01e455,0x3a9bcbf3,0xba08ec4d,0x3b424fcc,0x3b6a31af,0x3abfb234,0x3b444657,0x3b66427c,0x3bc194db,0x3ba700ab,0x3b86e4dd,0x3b056514,0x39bf3de9,0xba527f3a,0xbad1961d,0xba8e49fe,0x39abb270,0x3b2ff4e0,0x3b27dc49,0x3b0e62c0,0xb9634d40,0x393220e0, +0xbaeb38f3,0xbb8c5ed1,0xbba32762,0xbb8af83a,0x39cb5fe7,0xbb09277b,0xba645988,0x3b781431,0xb8ced5b1,0x38916e83,0x3ac01120,0x3ba56b17,0x3be48fb6,0x3c08ffee,0x3bacd4a2,0x3b64c9a0,0x393a424a,0x3b7b3a6e,0x3b61ec5c,0xb8dcaf8c,0x3b057337,0x3bb99a87,0x3c324200,0x3c33dde4,0x3c06bed1, +0x3b70f3b9,0xb9e90fb1,0xbb5c6d85,0xbba3d6d1,0xbb7e079f,0xb9b0593a,0x3b90d525,0x3ba6f546,0x3b8e0e33,0x3b035b7c,0x3b24b80a,0x39f672c3,0xbb93d5ca,0xbb73e714,0xbb4e9830,0x3a8a1e08,0xbb622d03,0xbb05547d,0x3bd2c832,0x3a4fb713,0xbbfc581e,0xbb921c0d,0xbbec41c3,0xbbc55f38,0xbb7d1992, +0xbba0b677,0xbb8ef551,0xb983e344,0x3b80d6a3,0x3c15c1a9,0x3c542cd7,0x3c3503ec,0x3b58540c,0xbbb34955,0xbbeaef59,0xbb9de3c4,0x3a5f5334,0x3b983c87,0x3bff4c60,0x3c1a9d4d,0x3bfeca95,0x3b9b95e1,0x3adb2046,0xbb443ebe,0xbb23bce2,0x3b362f6c,0x3a7f585a,0x3a572e08,0xba033b16,0xb9de774f, +0xbab696a4,0xb84fc190,0x3b3c7b5d,0x3b3a8cd5,0x392448b6,0xbbc67e45,0x3c554821,0x3bff2ef1,0x3b7226f5,0xbb2e1460,0xbc0f2c8f,0x3be8e42e,0x3c485aea,0x3be8b4b6,0x3b4bf6ab,0xbb8e7067,0xbc3e8aac,0xbb8a954f,0x3b444f9e,0x3c2a7f06,0x3b9c4cf1,0x3aa34e58,0x3a5a3e64,0xba87f90d,0xb8ede594, +0x3b00b7bc,0x3b379a32,0x3b03fe5a,0xbab5dae6,0xba25a0d4,0xbac623c0,0xb9ddaaa9,0xbb411521,0xbb2f3856,0xbaa011f5,0x39bbd204,0x3982771d,0xbb50dabd,0xbc1bd0eb,0xbc3b4fbd,0xbbdafa31,0x3bf8d18f,0xbccd6fe6,0xbd1703f2,0xbc1527c9,0x3b2c67c2,0xbb7a5a4b,0xbb66f00b,0xbbd9d459,0xbc4d0a2c, +0x3a955834,0x3bf67b82,0x3b8985f7,0x3987f35f,0xbb53152d,0xbb4cd071,0xbb41a2f9,0xba9e2eaf,0x39303fea,0x3aa0f07e,0x3aebadee,0x3aa3e3b8,0x3aad8af7,0x3aad1ee6,0x3a5dba5b,0xba8e62fa,0xbadb6c6b,0xbb32cf2e,0x3a20552b,0x3ad483a0,0x39c97cf6,0xbae815dd,0xbb04d202,0x3954d64a,0x3a87a2c5, +0x3a57fa39,0xbb961d9a,0xbc6da222,0x3c9a9447,0x3ca36f95,0x3c2cf604,0x3b3d50af,0x3812aa6e,0xbb352b45,0xbb394dab,0xbb1cbc87,0xbb5d08d3,0xbba44dc1,0xbbb24af2,0xb9e3c9f5,0x3b3fb35e,0x3b8804a9,0x3b74d0c3,0x3b1fd1d0,0x3afc2e22,0xb9dc0049,0xbad89f8a,0xbb1718cb,0xbb1e482c,0xbaad0f0b, +0x3954162a,0x39efa881,0x3a03573a,0x3a4f72ec,0xba0aee9d,0xba8481f7,0xb9f51d82,0x39952bd7,0x39a81146,0x3add40af,0x3b5bdafe,0x3b5b57f6,0x3b7fdf02,0x3c467b95,0xbbc6d474,0xbbac76ca,0xbbda6e3a,0xbbbf5bae,0xbb88aa9d,0xba88c1e5,0x3a873ca9,0x3b14676a,0x3baa176a,0x3bf358e4,0x3c00bfdf, +0x3bff2185,0x3be0552b,0x3bd02ca8,0x3b6e9e47,0x3aacc359,0xb9f91013,0xbb2abea9,0xbb8e1435,0xbbb3663a,0xbbb77adf,0xbbb17296,0xbbb58a10,0xbb47555e,0xbad96c55,0xb9436746,0xba3a2dbf,0xba70b83d,0xba2eb6a2,0x3753eef1,0x3a726d8a,0x3b12815a,0xba46352d,0xba9e216b,0xba81de01,0xbb5ce9f5, +0x3bd43f00,0x3bc40b37,0x3bae48b9,0x3bac2241,0x3bbc3f79,0x3bc3f1e2,0x3bd70480,0x3be627fc,0x3bb044dc,0x3b705836,0x3b3189c7,0x3b0422e2,0x3a9ff10a,0xb75b55f6,0x393fa180,0xb91b8c4d,0xbab32a30,0xbaa2f547,0xba9b1369,0xbaa31c1c,0xbab565b0,0xbad6c8da,0xbb10b3da,0xbb2eb513,0xbb1745ad, +0xba8d12f3,0x3ad3c6e4,0x3b61030f,0x3b81cea1,0x3b8d554d,0x3b8588a2,0x3b6f5cd9,0x3b87d086,0x3b9b97ca,0x3bae60da,0x3bb840c8,0xbac5eb37,0xbad252f0,0xba1d7e23,0xb8e61769,0x39b8423a,0x38556d0e,0xb9a0b73c,0xb9e24900,0xba0ba20a,0xb92587ed,0x3992082b,0x36333bf9,0xb947d072,0xb99969fb, +0xba943adf,0xbafa9cf6,0xbb2c3fcf,0xbb322636,0xbb3fa461,0xbb4dbe6c,0xbb6a4be3,0xbb7fb301,0xbb8a97d3,0xbb784032,0xbb6bc591,0xbb653108,0xbb3d29fe,0xbad928a1,0xba88ba17,0x39b9331d,0x3a952e2b,0x3b1ce6ef,0x3ab817be,0x3998c1e7,0xba25e7e8,0xba4570a7,0xbba75680,0xbb9e699e,0xbb953b77, +0xbb8f0b48,0xbb8368c6,0xbb658920,0xbb4175a2,0xbb295ce6,0xbb261355,0xbb2ce2f7,0xbb2fcb58,0xbb277c4d,0xbb1c6d91,0xbb08da17,0xbb19ed6a,0xbb22e160,0xbb326880,0xbb3f1c68,0xbb4c4bdc,0xbb57fba8,0xbb543eb8,0xbb589232,0xbb616d97,0xbb6883c0,0xbb725723,0xbb778ada,0xbb83b690,0xbb8f5a0e, +0xbb9f1d28,0xbbaac5af,0xbbb81b90,0xbbc6cfd4,0xbbbd89fa,0xbbb630b6,0xbbb2432a,0xbba48f24,0xbb6b6b29,0xbb68b82c,0xbb5dd0d2,0xbb511ece,0xbb49c791,0xbb4648b5,0xbb444c4f,0xbb3ca45f,0xbb35e2fe,0xbb2a988f,0xbb21b145,0xbb1ad484,0xbb17bc5d,0xbb12553b,0xbb1d7711,0xbb24ff13,0xbb2c89f2, +0xbb36cf8f,0xbb414078,0xbb4f3c07,0xbb4bd690,0xbb4c614a,0xbb4b99bd,0xbb4bf39d,0xbb4cb74a,0xbb4e9608,0xbb5a53f7,0xbb635c5d,0xbb66cf6f,0xbb6ff5e8,0xbb749bbe,0xbb8124ec,0xbb6d2e37,0xbb66bf9e,0xbb739208,0xbb705b71,0xbb452072,0x3a7017fd,0x3a1bb535,0x3a306569,0x3a85f0ac,0x3a9b8ecc, +0x3abc5894,0x3a8097d3,0x3a591d7d,0x3a131f51,0x3a94a0b6,0x3aa4e1a1,0x3a73cf33,0x3a9e64fb,0x3aac6c55,0x3ad4427b,0x3ac88c30,0x3ab95c43,0x3a9d26f9,0x3a566bd8,0x3a1db80a,0x39de0fd4,0x3a11c9c7,0x3a337014,0x3a8b8c36,0x3a882168,0x3a5e5d4f,0x39b79917,0x39cffa6b,0x3920fad6,0xb9b3db1b, +0xb9da5b86,0xb98485ce,0x3a2a2721,0x3980f182,0x39ea6bf7,0x3aa97f8f,0x3a2087ca,0x39ca1e15,0x3a729dc3,0x3afa741b,0x3b23932b,0x3b4b6150,0x3b0365e6,0x3ac94f97,0x3a496086,0x3aef3ed7,0x3aea5afa,0x3a57143e,0x3ac2327a,0x3b151a44,0x3b6171bb,0x3b76e838,0x3b5d6beb,0x3b1ac140,0x3a8043bd, +0x37f55da6,0xb9dc31fd,0xb98a93bb,0x3a1dd28a,0x3afb2bda,0x3af2fa07,0x3ac5b80b,0x396e0548,0x391b1036,0xba1b3353,0xbabde33b,0xbb0a8b7c,0xbae9467c,0x39c9b2f3,0xba6dcc58,0xb9a900fa,0x3b10137c,0x39ee196d,0xb9e11e34,0x391a0a12,0x3b1317ed,0x3b5b5e72,0x3b9297b8,0x3b307cf5,0x3aec1394, +0x38714790,0x3b33a03a,0x3b5a5218,0x3b080ab0,0x3b49c605,0x3b6861c0,0x3bae23d5,0x3baff355,0x3b9a408a,0x3b46392d,0x3a6fbe42,0xb9bf38f8,0xbaa7349a,0xba2b39f6,0x3a2cffc5,0x3b34cc7f,0x3b181fe4,0x3afbac7d,0xba128ae5,0xb9f080ff,0xbb199d55,0xbb88662c,0xbbaf1e35,0xbb9660ef,0x38bb4fe9, +0xbb10d33c,0xba8e3d9a,0x3b64e049,0xb97f7abf,0xba00d7d3,0x3aa37520,0x3b947820,0x3bddbfd1,0x3c10cfa2,0x3bc9a506,0x3b939b7f,0x3aa53a28,0x3b7098da,0x3b548231,0x3a51b195,0x3af3d2c5,0x3ba4bf40,0x3c1c0483,0x3c38de0c,0x3c1b8b16,0x3bbc8ef1,0x3a8de036,0xbb09a543,0xbb7f8af9,0xbb31cfeb, +0x3a1a7283,0x3bab47d2,0x3ba89201,0x3b846eec,0x3ae34058,0x3acd2687,0xba26149a,0xbbacfafe,0xbbb3007d,0xbb9c17fa,0xb908cf43,0xbb9368bb,0xbb321b56,0x3bc34ccd,0x39082e34,0xbbd9150d,0xbb5ac830,0xbbaab732,0xbb865035,0xbb4f1d85,0xbb8b4606,0xbb92c608,0xbb2b2bda,0x3b473174,0x3c106c55, +0x3c40e312,0x3c596fc9,0x3bcc9f6b,0xbb9cb354,0xbbd6ece1,0xbbb3b1fa,0xba8a077f,0x3b2b2982,0x3bb4a411,0x3bf95606,0x3bcfad95,0x3b457b63,0xb946e3e9,0xbb88c75d,0xbb516ac5,0x3b5d6187,0xb873134e,0xba3a5dd7,0xba8ca701,0xba0ec5a6,0xb92a2cc6,0x3b18e392,0x3b81d47d,0x3b45ee54,0xb9cded40, +0xbbb4d24c,0x3c5f94c8,0x3bd46823,0x3ac0ae6b,0xbb955fe0,0xbc3171c8,0x3b89d089,0x3c201ab8,0x3bdde9c3,0x3b6dfad3,0xbb88fd0d,0xbc53080a,0xbbd73a10,0x3a024efa,0x3c101068,0x3bc4c490,0x3b506022,0x3b010c43,0xb9a9f1a6,0x39a62343,0x3b54501f,0x3b582407,0x3b2b433e,0xba3187f1,0x3900fe5a, +0xbaac2e2c,0xba99c9db,0xbb331ce9,0xbaf398cd,0xba65ca18,0x388c4253,0xba6093f4,0xbb963552,0xbc2d418a,0xbc364f24,0xbb8fc426,0x3c17bfe6,0xbceb17ba,0xbd0aaacf,0xbbbd075c,0x3ba721ab,0xbaff32fa,0xb9e725a7,0xbb7f25ce,0xbc28ef5c,0xbb4c131e,0x3b72acb4,0x3be415e0,0x3a37b201,0xbb686c7c, +0xbb6c3c15,0xbb84bd6b,0xbb2f0ac5,0xba8bb47d,0x3a0210b1,0x3ae0a8b6,0x3b0722bc,0x3af50e62,0x3ab07789,0x37b3f4e6,0xbac337ea,0xbad75f02,0xbb30c1dc,0x3a07b868,0x3aa13928,0x3973f802,0xbab3a662,0xbaa7f36d,0x3abdd131,0xba8060c1,0xbaa38c5b,0xbafd2897,0xbc994b43,0x3c99b26b,0x3c76a9dc, +0x3bcdfc58,0x3a83c5c4,0x3a6b0344,0xbb4db1c0,0xbb67595e,0xbaf9abb4,0xbb24eb23,0xbb8955c3,0xbbb13814,0xba96072c,0x3b0b4f15,0x3b4ccb87,0x3b608772,0x3b319cea,0x3b427706,0x39dcf4bf,0xba66b636,0xbab5106d,0xbab97b4f,0xb94104c4,0x3aa4cc33,0x3a739eed,0x39f8787f,0x3a0b7c64,0xba0676e1, +0xba7d03aa,0xb99d64ba,0x383f2ced,0x39570bb6,0x3b19cc61,0x3b8dd3dd,0x3b84c39d,0x3ba158df,0x3c5fd5ae,0xbbb0e855,0xbb5ca8fe,0xbb61f3f7,0xbb584b00,0xbb45b1e8,0xbaa40ead,0x3945b971,0x3ad099bc,0x3b84d72b,0x3bd67aa7,0x3becea2d,0x3beec578,0x3bcccf17,0x3bb29b51,0x3b577458,0x3a7f6bab, +0xba853ee4,0xbb5b0ff3,0xbb9ea4cf,0xbbb3dc7d,0xbbbbe8e3,0xbbaf6ddc,0xbbb0b9a7,0xbb22bcd7,0xbaa1a94d,0xba2eb5b8,0xba761fc8,0xbaa35c72,0xbab49c8b,0xba57bd95,0x39b41c1d,0x3af8f4cc,0xba7d668a,0xbab7e211,0xbae84439,0xbb76813c,0x3b9bbcda,0x3b827609,0x3b37a7c2,0x3b56fc9a,0x3b969e9e, +0x3bbee3d2,0x3bebab8b,0x3c092f99,0x3bdfba14,0x3ba9ee45,0x3b8b783c,0x3b6b12cd,0x3b36e791,0x3aa0bd70,0x3a6440c1,0x3921bd21,0xbaa5ed38,0xba88f4ab,0xba872da0,0xba865bd5,0xbab5fd84,0xbae323f9,0xbb1acfe5,0xbb1c6eef,0xbadd775f,0xb94ef256,0x3b11cb71,0x3b6a37f3,0x3b630f49,0x3b5ef0cb, +0x3b3a6546,0x3b1d06cd,0x3b35d764,0x3b5360d3,0x3b7bd6f9,0x3b82fa2e,0x39ee89d8,0x39e34c1f,0x3aa4f5fc,0x3a9d81e4,0x3a72a653,0x39e66a6a,0x3905ec10,0x393bfb15,0x3994bc2d,0x3a50492c,0x3aaf26ca,0x3a2a7d3a,0x3885633c,0xb9b802d4,0xba9aa0eb,0xbb0270aa,0xbb38137b,0xbb32a3d8,0xbb36e03d, +0xbb3c6176,0xbb564d6b,0xbb67dfe1,0xbb7cd183,0xbb56be20,0xbb477846,0xbb36afcc,0xbb050c40,0xb9ed584b,0x39e7bdbd,0x3b059574,0x3b43894a,0x3b9090d4,0x3b638a32,0x3b28808d,0x3ae7907e,0x3ab7c48d,0xbba0613a,0xbb936050,0xbb927fdd,0xbb8f576b,0xbb84722d,0xbb6fc623,0xbb5e4452,0xbb5dacc1, +0xbb5b04d8,0xbb623f9a,0xbb5fcbd6,0xbb5070cd,0xbb3abff4,0xbb21275f,0xbb2c3bf3,0xbb3034f3,0xbb3a93f7,0xbb459a0d,0xbb51cd4c,0xbb5d1dba,0xbb5cdec4,0xbb5c4614,0xbb63626a,0xbb676a5a,0xbb701297,0xbb75f880,0xbb7b529d,0xbb859e42,0xbb929f10,0xbb9933c4,0xbba0a6cd,0xbbabdb81,0xbba42ade, +0xbba22958,0xbba1d207,0xbb937a62,0xbb5ad7f1,0xbb522f95,0xbb4ef23e,0xbb4882ca,0xbb49f1b0,0xbb4e3004,0xbb4f568f,0xbb4c5f62,0xbb40c8de,0xbb347ac8,0xbb2bf4b5,0xbb244a43,0xbb21257a,0xbb1a9243,0xbb24e17f,0xbb2b9be1,0xbb31f96a,0xbb3b0410,0xbb43f666,0xbb4f828a,0xbb4d5b42,0xbb4ced21, +0xbb4adf4e,0xbb4cd02c,0xbb4cd185,0xbb4d642f,0xbb54957d,0xbb59e6b8,0xbb580f90,0xbb5d3a94,0xbb5e9403,0xbb63a70b,0xbb518588,0xbb4c9b57,0xbb628b55,0xbb5fabcb,0xbb46a98a,0x3a7838df,0x3a324375,0x3a435e7b,0x3a8b03b4,0x3aa28851,0x3acbcf28,0x3a90e918,0x3a767565,0x3a2be264,0x3a8dfef6, +0x3a9d5456,0x3a8a766e,0x3a9ff408,0x3aaa694b,0x3ac2f17b,0x3acb396e,0x3ac27a03,0x3aaeb282,0x3a69af8d,0x3a2e9005,0x39f217e1,0x3a2b5287,0x3a4d09f4,0x3a9730c6,0x3a844339,0x3a5dd31f,0x39cc53a4,0x39d57ead,0x394a2634,0xb92a2fae,0xb9a64f95,0xb926aa82,0x3a2fa33e,0x39a71487,0x39f743fd, +0x3aab0c3d,0x3a335cfb,0x39da7ae0,0x3a73a1c4,0x3ae9cbb7,0x3b1f05ab,0x3b5438c6,0x3b151d42,0x3aeb1aa9,0x3a7c6a69,0x3addc858,0x3ada0ed8,0x3a936a94,0x3ac29ab6,0x3b0d8118,0x3b45a64c,0x3b784b2b,0x3b6cebaa,0x3b379173,0x3aaec20a,0x39c1f40e,0xb8e28ee6,0x39388efc,0x3a6ada65,0x3afa9b5a, +0x3aefcf62,0x3ab844eb,0x38968f83,0xb8a2c1a6,0xba456e01,0xbaabdc99,0xbb0cbe01,0xbaf81f77,0x3861d9f5,0xba7d57cb,0xb9bcd259,0x3af350b0,0x39cfb8cf,0xb98bee72,0x39c295b5,0x3b14d919,0x3b63837e,0x3b9fd876,0x3b5382b2,0x3b13cf6c,0x39f01f56,0x3b1382dc,0x3b39ecdd,0x3b2b2957,0x3b48ae32, +0x3b632554,0x3b92bd65,0x3baf9c63,0x3ba3a5b5,0x3b711c27,0x3aa71536,0xb8612e70,0xba843e38,0xb98d2573,0x3a6d285e,0x3b2181ed,0x3b02d4a1,0x3ad402d6,0xba887323,0xba87e2d7,0xbb394a50,0xbb80256a,0xbbb5f250,0xbb9c9276,0xb9c5df3b,0xbb0f7c32,0xba993b9d,0x3b3f08be,0xb98362d0,0xba41d90d, +0x3a93916b,0x3b7d6559,0x3bd027b7,0x3c153fa8,0x3bdf5804,0x3baaea87,0x3b0394e6,0x3b4fa2c7,0x3b39c5b3,0x3af270f0,0x3afea217,0x3b95c121,0x3c02c829,0x3c364fe7,0x3c281ba8,0x3bf0ba13,0x3b1cdd12,0xba595282,0xbb2b4062,0xbaaf2bd8,0x3abe4d33,0x3bb13425,0x3ba12b3e,0x3b6b80d1,0x3aa29c05, +0x39e0501b,0xbae76a82,0xbbb0636a,0xbbe1b168,0xbbc8f54c,0xbab13900,0xbbabfc49,0xbb511353,0x3ba01a39,0xb9cd3db2,0xbb9b1981,0xbb029eaa,0xbb263a10,0xbaf11f00,0xbb3870d7,0xbb6d3ed8,0xbb91bd32,0xbb972605,0x3afd5137,0x3bfe89ee,0x3c212238,0x3c641494,0x3c011283,0xbb954c14,0xbbc7f08d, +0xbbca0bc3,0xbb52e826,0x393ecdbe,0x3b22ac4c,0x3b91a530,0x3b785d86,0x3a2a2e00,0xbb09d175,0xbba942d7,0xbb71c2d1,0x3b76d12f,0xba450153,0xbae98f1d,0xbace8457,0xba53926e,0x3a713dff,0x3b984ffd,0x3ba69d54,0x3b619f00,0xb9f929e1,0xbb874b51,0x3c578c38,0x3b9c8bce,0xb9e67e8e,0xbbbf7c96, +0xbc426534,0x3a86efa0,0x3bdf78b9,0x3bc77707,0x3b853256,0xbb6ba090,0xbc58c577,0xbc08ad11,0xbaf282f9,0x3bd18d62,0x3be2957e,0x3ba9556a,0x3b492966,0x3a2e6571,0x3a815095,0x3b8d44d5,0x3b6a80e7,0x3b439a50,0x390daf99,0x3a6e49d6,0xba771809,0xbaf93668,0xbb20dd5b,0xba94eefa,0xba226dcb, +0x38d92f3d,0xbacfb246,0xbbbfe6c9,0xbc3e9089,0xbc31cd11,0xbb13c058,0x3c2231fe,0xbcf68722,0xbcf515b8,0xbb973bb1,0x3ba75163,0x3a883340,0x3b082e71,0xbb126be8,0xbc0e6138,0xbbe9a622,0x384a19ed,0x3c1c7e15,0x3aae4436,0xbb6c6236,0xbb84f541,0xbba12c8a,0xbb832f30,0xbb1c9cc0,0xb9a4d738, +0x3aa3e175,0x3b09173b,0x3b00894d,0x3a8780d5,0xba62dc13,0xbafef7a7,0xbade7b31,0xbb23245f,0x39add397,0x3a4e224a,0x38dc7db2,0xba77aa25,0xba502d64,0x3aed0712,0xbb3dc258,0xbb3cd309,0x3a26b5cc,0xbcabaf73,0x3c8b3e0b,0x3c0f567a,0x3b22b397,0x38972ef5,0x3b3867b0,0xbb180b26,0xbb544339, +0xbac1a42a,0xbad9c5ca,0xbb4e5e23,0xbb97bbc9,0xbac1acf5,0x3ab6ca72,0x3b030137,0x3b45d448,0x3b482383,0x3b7423fe,0x3a9f892f,0xb8a7cdc6,0xba0e88ff,0xb9bd7f38,0x3a5e21f4,0x3b09eb62,0x3aae1a24,0x39d85cbf,0x386558fe,0xb9ff7c22,0xba51a686,0xb8cde2c7,0xb802284c,0x398e9a16,0x3b4c7b9b, +0x3b998cf2,0x3b8ddfe3,0x3bd4d515,0x3c6bd787,0xbb9054e5,0xbac7412b,0xba0a191d,0xba9460e4,0xbb114e2c,0xbabe1a25,0xb9d3de78,0x3a883c88,0x3b443ca3,0x3bb6215e,0x3bd872d0,0x3bdc59b9,0x3bbbe1e1,0x3b9a08c7,0x3b3f0653,0x3a2a7c1a,0xbac7e98d,0xbb78a057,0xbba4196d,0xbbace46c,0xbbb9bc67, +0xbba882d8,0xbba1baa1,0xbaff82ee,0xba5444c1,0xba7774ad,0xba8ac1d7,0xbabe943c,0xbaf2ac9a,0xbaad841e,0xb8c82322,0x3ac079b4,0xba5c9235,0xbab1df7b,0xbb21533c,0xbb820ee4,0x3b2c953d,0x3ad2fe46,0x390c94ef,0x3a9dd258,0x3b561c7d,0x3bb6dae7,0x3bf704c5,0x3c1518ec,0x3c01fe26,0x3bda18e4, +0x3bc42b4c,0x3bacceeb,0x3b90d59a,0x3b2bdde6,0x3aeef9f5,0x3a3ff47f,0xba70f305,0xba3a31cb,0xba76ef31,0xba928c29,0xbad78db0,0xbb016ae2,0xbb20a6bb,0xbb02e1e0,0xba87d5ad,0x3a119850,0x3b252e47,0x3b5b9155,0x3b2fb2df,0x3b1d7960,0x3ae3b1b6,0x3aa82359,0x3ad16eb4,0x3af4d667,0x3b1e1df9, +0x3b1373db,0x3b201241,0x3b278622,0x3b524421,0x3b357354,0x3b01d812,0x3aa88897,0x3a8114a1,0x3a934e15,0x3aad8e4e,0x3aece297,0x3b16b16e,0x3a9e654e,0x39811ab7,0xba0cde04,0xbaa4b507,0xbb0245c5,0xbb363ac8,0xbb2baeb2,0xbb29d9d9,0xbb296634,0xbb3ca624,0xbb4a998a,0xbb5e7a7a,0xbb2b8740, +0xbb14ecb8,0xbaecec9e,0xba7a335a,0x3a5469ba,0x3afe256c,0x3b612cd7,0x3b8f3021,0x3bbc0d9a,0x3ba26aa2,0x3b8e8523,0x3b75db5e,0x3b588577,0xbb89741e,0xbb771d9d,0xbb80f6ff,0xbb800456,0xbb6c4708,0xbb5c4a4a,0xbb5a9ceb,0xbb6af83f,0xbb6aa7e2,0xbb721c87,0xbb6bdb8e,0xbb5a30d5,0xbb3f9199, +0xbb25701b,0xbb2b92c1,0xbb2d869d,0xbb33dd4a,0xbb3dc7db,0xbb4934bf,0xbb553059,0xbb5d8d61,0xbb58a83f,0xbb60a90d,0xbb65fcba,0xbb7112fa,0xbb7afe61,0xbb71dbba,0xbb759132,0xbb815b04,0xbb802b28,0xbb7d58ab,0xbb8236b3,0xbb79ebaf,0xbb7eb914,0xbb818750,0xbb699f5d,0xbb4329bf,0xbb33a8de, +0xbb36c8ae,0xbb35e975,0xbb3ddb8b,0xbb4620b9,0xbb487e8a,0xbb486521,0xbb3caeaa,0xbb32d70d,0xbb2d7dbc,0xbb270710,0xbb2512b7,0xbb1f3c68,0xbb279e18,0xbb2ccfe8,0xbb31b103,0xbb38a64b,0xbb3f66af,0xbb465395,0xbb4a68ae,0xbb4c3e0f,0xbb4cd35a,0xbb4c295a,0xbb4f02bf,0xbb525993,0xbb51b3f4, +0xbb519c63,0xbb4a04ed,0xbb491e41,0xbb462777,0xbb412494,0xbb333135,0xbb2df757,0xbb4d535f,0xbb48fdb4,0xbb449f34,0x3a6f0085,0x3a41e99d,0x3a4aca1f,0x3a880406,0x3a9f7e61,0x3acf39ce,0x3a985871,0x3a818d6a,0x3a2e4291,0x3a7aa71b,0x3a8c455e,0x3a93f252,0x3a99e7fd,0x3aa0d836,0x3aab2efb, +0x3ac3b6e2,0x3ac00fcc,0x3ab1b633,0x3a6b27ca,0x3a30daa7,0x39f12fa9,0x3a3703c7,0x3a5582c7,0x3a9220d5,0x3a74f035,0x3a513b49,0x39b44c06,0x39bf9407,0x393960b3,0xb89434ae,0xb9868cc5,0xb8da7d84,0x3a1992ec,0x39bf2da8,0x39fc3b41,0x3a9c6341,0x3a3de13c,0x39f620ac,0x3a69579c,0x3acd57d6, +0x3b136322,0x3b536de5,0x3b203621,0x3afe1c08,0x3a829112,0x3abcda8a,0x3abeb6f8,0x3ab93a9d,0x3ac1f2ae,0x3b04c902,0x3b28cecc,0x3b7106c5,0x3b713694,0x3b467386,0x3ad12908,0x3a30e72a,0x3947ce58,0x3a10a264,0x3a8fafb7,0x3ae3057c,0x3ae14327,0x3aa38c20,0xb93edcee,0xb99bd090,0xba61991c, +0xba9eeb52,0xbb08ab10,0xbafdc3e8,0xb9c89293,0xba7e2fe2,0xb9c5a866,0x3aacf79a,0x39abf194,0x333a8025,0x3a2620c4,0x3b0e85e2,0x3b606922,0x3ba55fcd,0x3b6dc4f3,0x3b2b7413,0x3a26a18f,0x3ad4e3aa,0x3b11358f,0x3b498b91,0x3b45191e,0x3b5bdec7,0x3b70bd1b,0x3ba92aa0,0x3ba4da42,0x3b8305dc, +0x3ac6a703,0x39609de3,0xba403f68,0x383ce685,0x3a880679,0x3af9aeef,0x3ad5b354,0x3aab88d5,0xbad40409,0xbac3df64,0xbb5225bb,0xbb75d847,0xbbb794cf,0xbb9c70bf,0xba869c01,0xbb042e82,0xba8fec76,0x3b0a8608,0xb925c885,0xba595861,0x3a75ad18,0x3b429f87,0x3bba2ba5,0x3c141a27,0x3bed7d14, +0x3bb88397,0x3b15b27a,0x3b212642,0x3b19dacc,0x3b41219e,0x3b121608,0x3b8cbcc1,0x3bd8ea8b,0x3c2ed9a7,0x3c2d664b,0x3c0967fa,0x3b66b053,0x39f5449b,0xba9f85f1,0x3847c3ca,0x3b0c54a3,0x3ba3cc49,0x3b931063,0x3b4a8430,0x39ef25a9,0xba442b31,0xbb35eaea,0xbba80a9b,0xbc01f4e7,0xbbecbc5e, +0xbb2db970,0xbbb869cd,0xbb5df00d,0x3b581cd1,0xba55ba51,0xbb0e2dc5,0xb9941db8,0x3a249e2c,0x3a1f4fe6,0xbb2c336e,0xbb30fcdb,0xbb7eee52,0xbbbead4c,0x3a554a8d,0x3bca84cb,0x3bf69997,0x3c59ca88,0x3c0a54b0,0xbb91a50b,0xbbbe585f,0xbbe085db,0xbbb4bcc7,0xbb1a790c,0xba478f77,0x3a1bf534, +0x3a2a0bf0,0xbaf293c1,0xbb7d0fb9,0xbbbdafab,0xbb7f5e16,0x3b80825b,0xba976f38,0xbb15d16c,0xbadfe114,0xba6c95a6,0x3afa5c94,0x3bda4636,0x3bcb9c21,0x3b86747a,0xb8993e3c,0xbb03b6b7,0x3c3d3776,0x3b3cc6b9,0xbb0535eb,0xbbd786c1,0xbc43a7a1,0xbb0b9253,0x3b74297f,0x3bae882f,0x3b973757, +0xbb20f55e,0xbc4ec63b,0xbc1d0220,0xbb845278,0x3b697375,0x3bee1855,0x3be24208,0x3b8733a6,0x3afd7032,0x3afe72a5,0x3baa450c,0x3b710d59,0x3b4a4207,0x3a70d472,0x3acf761e,0xba0f1819,0xbb228bef,0xbb0bf15e,0xba12ce1f,0xb9d09a56,0x39848143,0xbb04f4b4,0xbbe0f61e,0xbc4fc9d4,0xbc2c7c4e, +0xb9a2a46c,0x3c1c8e43,0xbceb6fcc,0xbccbcb16,0xbb9ed129,0x3b6a2340,0x3b997278,0x3b8d14c8,0xba91f250,0xbc01ee0f,0xbc2a0165,0xbb4ad432,0x3c36fe67,0x3b0d0188,0xbb4b1a13,0xbb8dcb8a,0xbbb10fc5,0xbba38af2,0xbb6b1e28,0xba96ad83,0x39df40fa,0x3aa7c6a0,0x3ac8c447,0x39df4476,0xbadb3ac7, +0xbb1e81f7,0xbaf14566,0xbb0abcac,0x391a0893,0x39e490a9,0x38145bc5,0xba11a5b8,0xba15353f,0x3aac64ac,0xbb88209d,0xbb74c165,0x3b0077b8,0xbcaba182,0x3c651df9,0x3b29c80f,0xb7b53599,0x399ffac3,0x3ba886ed,0xb86796a0,0xbad53269,0xbaaa8219,0xba807bd8,0xbb108809,0xbb5d414f,0xbad71987, +0x3a27991b,0x3a5c9200,0x3b2b3447,0x3b63840f,0x3b8a72e9,0x3b04c61c,0x3a5b3fb5,0x398a513b,0x3a22e931,0x3adbbc94,0x3b3110e9,0x3ad2f80a,0x39a33e03,0xb9f3a150,0xba01400f,0xba126cc7,0x39232ef1,0x383e907b,0x39ffbadd,0x3b6a9e59,0x3b8aff02,0x3b83001b,0x3c01ffd8,0x3c671f99,0xbb4ee40a, +0x392bb890,0x3af6cd19,0x3a183afa,0xbaecded9,0xbae5a9b0,0xba806aba,0x39a119bc,0x3b024ee7,0x3b91aff3,0x3bbe8542,0x3bc69d56,0x3bacaa5f,0x3b8686c2,0x3b295f73,0x39c1a0e7,0xbaff4e3a,0xbb80b944,0xbb9f88f9,0xbba1c435,0xbbb157fa,0xbb9b2573,0xbb878414,0xbab82fa6,0xb9cf8366,0xba811fb0, +0xba8b0d52,0xbac5ee37,0xbafe4937,0xbabd2349,0xb9bfd86c,0x3a67034d,0xba0b4ca8,0xba93f34e,0xbb3a950e,0xbb7ce130,0x39e47213,0xba57726a,0xbb1acfa3,0xba4b86f5,0x3af97e23,0x3ba4e555,0x3bee3424,0x3c12338c,0x3c0a4071,0x3bff788a,0x3bf708b7,0x3bde27a0,0x3bbf2bf1,0x3b7ea166,0x3b3d8930, +0x3ac7a7eb,0xb9c489fc,0xb9b0c686,0xba7996f0,0xbac1c242,0xbb05bf8c,0xbb139d40,0xbb1d8565,0xbac51bbf,0xb9ca9623,0x3a9762cf,0x3b23a31c,0x3b372e93,0x3ae421b3,0x3abd5d37,0x3a65ca40,0x39ee18de,0x3a3a8b71,0x3a4f265c,0x3a968e52,0x3a2131d0,0x3b896a7a,0x3b90825f,0x3ba01746,0x3b8b7eb7, +0x3b54044a,0x3b1b05fc,0x3b0691f0,0x3b0f0918,0x3b187bb6,0x3b2b5686,0x3b3f75c4,0x3acaa779,0x39aecc59,0xba4947fc,0xbab0f20a,0xbb00aeae,0xbb2dce1e,0xbb212fca,0xbb1a834a,0xbb15c23b,0xbb20ba85,0xbb2ad3e9,0xbb3cf7a9,0xbaf5884a,0xbab042a9,0xba2173a5,0x3979179b,0x3b033f95,0x3b51d625, +0x3b905205,0x3ba9ad32,0x3bcef15c,0x3bbdab3f,0x3bb4b5a6,0x3ba9cd83,0x3b9c5ce2,0xbb53dde2,0xbb3816c5,0xbb481736,0xbb47e002,0xbb35f34e,0xbb2dd70b,0xbb368db6,0xbb4e8b31,0xbb533f61,0xbb5bdd39,0xbb55ab6e,0xbb478f46,0xbb2f6f92,0xbb1a338e,0xbb1cc8d7,0xbb1ecbe8,0xbb234a6e,0xbb2cef09, +0xbb38d482,0xbb458100,0xbb54613d,0xbb4ede79,0xbb58a21b,0xbb626a4b,0xbb71f64d,0xbb805de6,0xbb69ec36,0xbb60c198,0xbb5e8482,0xbb4b8e38,0xbb37545d,0xbb2ab80f,0xbb26a6fa,0xbb2fffcc,0xbb367b45,0xbb22ec7c,0xbb2074d7,0xbb0c38e2,0xbb13e8bc,0xbb172543,0xbb228f9d,0xbb2b4b00,0xbb2d5b19, +0xbb2e21eb,0xbb26a70c,0xbb21f348,0xbb21b3ff,0xbb1e58d2,0xbb1ed687,0xbb1c0707,0xbb21e786,0xbb25684b,0xbb28b3c1,0xbb2d66ce,0xbb31e919,0xbb34d3ea,0xbb3cba5e,0xbb41cbb1,0xbb48195e,0xbb41a9c3,0xbb4829e3,0xbb53a2cf,0xbb49acdb,0xbb432165,0xbb35f2f1,0xbb2e527b,0xbb266792,0xbb182e04, +0xbb0f3c4b,0xbb091f68,0xbb2ecfa0,0xbb275d47,0xbb3897a7,0x3a58dfcb,0x3a3f0286,0x3a4aaea4,0x3a7c4ffc,0x3a943f62,0x3ac81a04,0x3a982fe8,0x3a80ddc0,0x3a1ccb8c,0x3a4de99f,0x3a6c244f,0x3a985a2f,0x3a8e9211,0x3a9249a6,0x3a91495e,0x3ab5010a,0x3ab4d44d,0x3aa8ccbd,0x3a5fa9c7,0x3a294dc2, +0x39eb9728,0x3a2df237,0x3a446740,0x3a7b7702,0x3a50f7f4,0x3a307b32,0x395bfd73,0x3987380b,0x38b4b597,0xb8e00bba,0xb98bb228,0xb8f4564c,0x39c94f99,0x39b52ac5,0x39ee2930,0x3a7d38b0,0x3a33c993,0x39ec4fdc,0x3a52fc47,0x3aa853aa,0x3b01eae4,0x3b49b283,0x3b24b134,0x3b0153dd,0x3a6319ea, +0x3a927fd4,0x3a9efc69,0x3adda45a,0x3abfe05c,0x3af5e8dd,0x3b0e36ef,0x3b636f4e,0x3b6c348c,0x3b48a1e9,0x3ae8459e,0x3a777f7d,0x39f941fe,0x3a535203,0x3a9a8cff,0x3aba24e9,0x3ac6a851,0x3a866093,0xba0393a0,0xb9fa5b49,0xba6ccbbd,0xba9d8e9b,0xbafc5d9d,0xbaf7c4a7,0xba6a9100,0xba763224, +0xb9cdd6be,0x3a2b4abe,0x396a5317,0x3970c1a4,0x3a69ad82,0x3b02248a,0x3b525baf,0x3ba2cecd,0x3b7e5325,0x3b3b8508,0x3a1aab13,0x3a804076,0x3ace529d,0x3b646675,0x3b3ed170,0x3b51bd41,0x3b44d61b,0x3b9e7776,0x3b9f9b40,0x3b835591,0x3ad97404,0x39f410cf,0xb9da6db3,0x39885e2c,0x3a87c32f, +0x3a9d1d69,0x3a9fdfc6,0x3a80e991,0xbb117f1a,0xbaf0b94e,0xbb63ea88,0xbb79db78,0xbbb4d95f,0xbb972c37,0xbaed8a18,0xbae4e4d6,0xba721b71,0x3a9bc5ed,0xb83eba60,0xba74da79,0x3a344d2f,0x3b00f23a,0x3b9cfd85,0x3c0ca0b8,0x3bf3a26c,0x3bbbc5cd,0x3b06b542,0x3ad6ef84,0x3af7ed37,0x3b84f42d, +0x3b2b1089,0x3b865a5a,0x3bb5ecf4,0x3c24134e,0x3c2c647a,0x3c112172,0x3b90eb07,0x3ae09278,0x3940dc81,0x3aa57aa9,0x3b2b8167,0x3b8756e1,0x3b7f40d2,0x3b28874d,0xba16af3d,0xbaea22fe,0xbb67e0ad,0xbb9c7133,0xbc0b8572,0xbc01d56e,0xbb83f1dd,0xbbb881ca,0xbb5a06e1,0x3ab8879c,0xba9e05f8, +0x3a2bfc9c,0x3ae377c8,0x3b7ce449,0x3b43c984,0xbb1b8854,0xbad8cffd,0xbb402b8f,0xbbc4c85c,0xb90242d4,0x3b8c4768,0x3ba7ed53,0x3c3fd05a,0x3c05a47d,0xbb8ab372,0xbbb864c0,0xbbf47806,0xbbfbd48a,0xbb9bcf37,0xbb77faed,0xbb50c3dc,0xbb26f0cf,0xbb872517,0xbbaf4e6b,0xbbc2feea,0xbb76fbd7, +0x3b7c96d7,0xbaa3c062,0xbb105c17,0xbab3f569,0xba227a74,0x3b3d5747,0x3c06707c,0x3becb765,0x3b9f8433,0x3a4a185b,0x39e21a38,0x3c14db55,0x3a82457f,0xbb54c290,0xbbe03f04,0xbc38cc6c,0xbba0cb91,0x3a471d03,0x3b925331,0x3ba84de6,0xba68a561,0xbc36fd38,0xbc291af1,0xbbc2f177,0x3a580d53, +0x3be6cbf6,0x3c05c2ad,0x3ba60e54,0x3b5bb3e5,0x3b498416,0x3bbf639b,0x3b6d0195,0x3b3f554c,0x3ac831fe,0x3b04549b,0xb93c8e2c,0xbb36c01a,0xbaf3626f,0xb9262874,0xb95b2fbf,0x399219ed,0xbb1cc17f,0xbbf4d947,0xbc5a67eb,0xbc2416b3,0x3ab44434,0x3c098e2d,0xbccc841f,0xbc9da062,0xbbbe9796, +0x3aba0a50,0x3c05bc8e,0x3bc7f2d2,0x38a33b2e,0xbbdbb9c6,0xbc4760a4,0xbbb40401,0x3c39e6b5,0x3b491e45,0xbb0376bc,0xbb8ff3ae,0xbbb423ef,0xbbb62f0d,0xbb944e07,0xbafe1a7f,0xba1b2005,0xb8bd9b21,0x3a34eec1,0xb9b14e26,0xbb172898,0xbb3a2801,0xbb021f84,0xbad87ee7,0x38c1605c,0x39834711, +0xb8ac77c9,0xb9560936,0xba01950a,0x393b2462,0xbb8f63ae,0xbb73c340,0x3ac8fd4b,0xbc9c36a1,0x3c24f9a3,0xbaebac13,0xba190014,0x3ad5a281,0x3be560f5,0x3b4dc159,0x3a79dd26,0xba91b01a,0xba0233d6,0xbacadcd6,0xbb09474c,0xbae48aa8,0xb866c1a9,0xb90a00c9,0x3b16e013,0x3b78e7e3,0x3b8f0bc3, +0x3b34bfc1,0x3aeb92cb,0x3a886073,0x3abf040d,0x3b13ed38,0x3b46d8ca,0x3ae551f7,0x39592d6c,0xba64e358,0xba08decf,0xb9939e4a,0x39b6bff6,0x392fee9d,0x3a363230,0x3b615952,0x3b45e8a2,0x3b46a3d0,0x3c0ab352,0x3c4af65e,0xbae7cfac,0x3ac60bd2,0x3b659f19,0x3ae2a8ec,0xbad6b665,0xbb124554, +0xbae399d2,0xba311730,0x3a594254,0x3b49e0be,0x3b9e2781,0x3ba8a51b,0x3b98b2fa,0x3b6b74ca,0x3b16b64b,0x394b752b,0xbb0dcff2,0xbb74bb75,0xbb9235cb,0xbb944e3c,0xbba24a64,0xbb865c16,0xbb495ffb,0xba60779f,0xb7a22c4a,0xba5ee9fa,0xba837326,0xbab7c996,0xbad3738a,0xbaa3a4ff,0xba0425b5, +0x3945793a,0xb9118946,0xba485878,0xbb33911d,0xbb5a25b8,0xbad31608,0xbb482ae7,0xbb9005c8,0xbb245fc9,0x3a0b2643,0x3b7f420c,0x3bc8c308,0x3bff0b81,0x3c05ecbc,0x3c08638d,0x3c0c387e,0x3c005cd1,0x3be034b8,0x3b9f7ac5,0x3b7a6d90,0x3b157541,0x3970b70f,0xb8ef8f99,0xba91c9b1,0xbb019db4, +0xbb22ad19,0xbb232901,0xbb126985,0xba7ff5d6,0x393f144b,0x3acf53ff,0x3b0f57a2,0x3b01eef1,0x3a4ea9e8,0x3a1d321c,0x398d2aa7,0xb8b4bfaf,0x3881d64e,0xb873c126,0x3836d791,0xba5eabe6,0x3baff9eb,0x3bb80a63,0x3bc0f73a,0x3bac44d3,0x3b8c3f5b,0x3b5d91c6,0x3b4a7b63,0x3b4f9e1e,0x3b4b1715, +0x3b486c8e,0x3b4917cf,0x3acde314,0x3985d5d7,0xba88615b,0xbabe34ff,0xbafc7e41,0xbb216d46,0xbb12d1bb,0xbb06ca6f,0xbafec76d,0xbb04d710,0xbb0b222d,0xbb1c0025,0xba967050,0xb9d15754,0x3a24f056,0x3ab945ea,0x3b4778ba,0x3b879f63,0x3ba19079,0x3bb14245,0x3bcb059d,0x3bc30904,0x3bc42bd4, +0x3bc0ecd5,0x3bb7127f,0xbb0acb55,0xbacf055d,0xbaef7713,0xbaf3d434,0xbada9d7d,0xbadb79b5,0xbafb9144,0xbb174ef5,0xbb2360a9,0xbb2e758a,0xbb2c7c1a,0xbb273bcf,0xbb185721,0xbb0d541d,0xbb0e10ec,0xbb113d92,0xbb15907d,0xbb200156,0xbb2d6ffc,0xbb3ab1ff,0xbb48ebbc,0xbb446ea9,0xbb4e09eb, +0xbb5a1939,0xbb6c87fd,0xbb7cffe4,0xbb5e496a,0xbb4ccb06,0xbb3e914b,0xbb1e5d11,0xbafa038e,0xbac2d7ec,0xbac042f7,0xbad0c2a8,0xbad9989e,0xbab58467,0xbaf1b50f,0xbac07a8d,0xbada19cc,0xbae66781,0xbaff614d,0xbb074cd5,0xbb091a7e,0xbb0a7758,0xbb0984dd,0xbb0b465b,0xbb10d015,0xbb11bda7, +0xbb156e82,0xbb173591,0xbb1a6475,0xbb1c8c94,0xbb1e6f10,0xbb210583,0xbb2347de,0xbb23ffc7,0xbb2b214c,0xbb314b78,0xbb39ee47,0xbb30d619,0xbb386b51,0xbb4b03dd,0xbb3a0bcc,0xbb2dfc7d,0xbb1ce4c6,0xbb109aa8,0xbb0509dc,0xbae10a6e,0xbad8b5ca,0xbac997a6,0xbb095bb9,0xbb0048ac,0xbb2a6e34, +0x3a37429a,0x3a31e207,0x3a3ec593,0x3a5d7fb6,0x3a825c72,0x3ab78a34,0x3a9033c5,0x3a714889,0x39f12056,0x3a1ad9c8,0x3a3a1ae4,0x3a956b7f,0x3a7cdcd6,0x3a7f59e5,0x3a6b2fbb,0x3aa0fb4a,0x3aa2e2da,0x3a9642b7,0x3a48a962,0x3a18e3ea,0x39d7a482,0x3a1bb142,0x3a2caac5,0x3a4e9b98,0x3a24e5e4, +0x3a0cdc34,0x389e82a0,0x392a822e,0xb648f878,0xb955f8a1,0xb98e6b4a,0xb9000a10,0x3924b1c7,0x39a759d4,0x39d65d85,0x3a3f5db7,0x3a2578af,0x39d0447a,0x3a357c36,0x3a7f6234,0x3ada62ab,0x3b387244,0x3b21fba9,0x3af89065,0x3a1d4b7b,0x3a4a13a7,0x3a7d201c,0x3af8148f,0x3ab7c0fc,0x3adbd30f, +0x3ae7f07c,0x3b50d253,0x3b601586,0x3b4046f9,0x3af43ac0,0x3a96829a,0x3a3d5a10,0x3a80737c,0x3a96ca25,0x3a8b684e,0x3aa2d361,0x3a4632df,0xba5a44ee,0xba1c8e28,0xba64b543,0xbaa36b1a,0xbadc6266,0xbae5fcca,0xbab8010c,0xba6697dc,0xb9cc0ef5,0xb72d380a,0x38914560,0x39cb45c1,0x3a960ce4, +0x3ae382ec,0x3b3d6f45,0x3b991c80,0x3b820b19,0x3b421e79,0x39af736d,0x39d95c40,0x3a83d429,0x3b767315,0x3b33e47c,0x3b426222,0x3b1e7ed9,0x3b91b6cf,0x3b96b15e,0x3b777fd7,0x3ae24158,0x3a30b662,0xb898a542,0x39d26406,0x3a70edc7,0x3a0024bf,0x3a48318e,0x3a296c66,0xbb3570e4,0xbb073a8f, +0xbb6ef300,0xbb870557,0xbbae568a,0xbb8db490,0xbb2db41c,0xbababc1a,0xba33baa9,0x399a2ba8,0x38035f5c,0xba8b0d03,0x39f853a8,0x3a82f914,0x3b79b608,0x3bffd6e7,0x3bf12e2e,0x3bb553db,0x3aba4b33,0x3a5eeea8,0x3ac91e94,0x3ba3f292,0x3b3e7f84,0x3b780ec3,0x3b96563d,0x3c171bf8,0x3c270f30, +0x3c10c871,0x3ba6d793,0x3b369893,0x3abebb9a,0x3b11c81f,0x3b3b4294,0x3b458468,0x3b4ea913,0x3b0444e4,0xbae202b8,0xbb281ae2,0xbb81c49f,0xbb92decf,0xbc0c5c6a,0xbc0501da,0xbbb0a3c0,0xbbad978b,0xbb48bba6,0xba0ce7e6,0xbad0e6a3,0x3b59dbfa,0x3b76cd89,0x3bda800a,0x3ba4d86b,0xbaf99ae3, +0xba2248f5,0xbaec8ef9,0xbbadaf6f,0xba55b82f,0x3b181fdd,0x3b3729dc,0x3c1aa0cf,0x3bebdf99,0xbb7647fd,0xbbb39f9b,0xbc01ba0a,0xbc1b895f,0xbbe04510,0xbbceaedd,0xbbce34e3,0xbbae8105,0xbbc3a2c9,0xbbd48990,0xbbb7f18e,0xbb55b6a0,0x3b696e85,0xba881d71,0xbad67dd9,0xba2f54a1,0x37fe923f, +0x3b79bbdd,0x3c1404d5,0x3c024078,0x3bb7faa1,0x3afbe6b4,0x3b35a377,0x3bcb2fc7,0xba33197d,0xbb8546e9,0xbbdded84,0xbc2760ed,0xbbe77771,0xbaeeb85e,0x3b676177,0x3bb0ad91,0x3a3b5d33,0xbc17f960,0xbc2cfb08,0xbbf24567,0xbab8f3d6,0x3bc9d00d,0x3c0d784d,0x3bbff35b,0x3b9cd7b5,0x3b8a909b, +0x3bc95b2a,0x3b617ab3,0x3b285dda,0x3af741ff,0x3b0fb9ce,0x38832f13,0xbb3acead,0xbad5ce3a,0x3851307b,0xb90d90e7,0x38ba534a,0xbb30711f,0xbbf78d61,0xbc58f6db,0xbc17928a,0x3b358fc1,0x3bda844e,0xbca1eee3,0xbc625c07,0xbbecee4d,0xba64bb58,0x3c33dc38,0x3bebfc50,0x3ab2f24c,0xbb8d9ea0, +0xbc4b99b2,0xbbebd465,0x3c268e39,0x3b80de4d,0xba16724f,0xbb91e4be,0xbbae2470,0xbbbc8b37,0xbbaa9da1,0xbb2d6565,0xbad46fd3,0xbad43279,0xb9af44d7,0xba8f8107,0xbb311585,0xbb4c27cd,0xbb04c869,0xba92139c,0x39436a11,0x395741a3,0xb91e822f,0x38ae6465,0xb9d6dc3e,0xba96e54f,0xbb664969, +0xbb41a7f7,0xb9de3ab0,0xbc82b72d,0x3bbba0b8,0xbb53d35d,0x3a8a7004,0x3b7bc611,0x3c012396,0x3bcd6d4b,0x3b7b4aae,0xba00253b,0xb947cd74,0xbaa93d39,0xba9e0a3c,0xbaf2ec91,0xba1e44c5,0xba543f3c,0x3b078120,0x3b7d5c7f,0x3b880a1d,0x3b577c77,0x3b2cdc62,0x3ae51da8,0x3b0aecb0,0x3b2adde2, +0x3b4f6a97,0x3ae5e50b,0x38ee0d77,0xba89d732,0xba0bb774,0xb7d45a60,0x39bb65c8,0x392ff866,0x3a448f93,0x3b33ddb3,0x3abc5602,0x3ae087a5,0x3bf993d0,0x3c13785e,0xb9c4210c,0x3b1afe9f,0x3b8a69ef,0x3b1acaa6,0xbace3177,0xbb36360f,0xbb2fe621,0xbaf0d080,0xba047a53,0x3ac30bba,0x3b682b96, +0x3b7ecdf5,0x3b779d1a,0x3b4b73fc,0x3afd858e,0x38442785,0xbb0ba0d5,0xbb56aa25,0xbb7ce01f,0xbb856670,0xbb8c5cf9,0xbb55bdac,0xbaf81e58,0xb9b0e66b,0x39883364,0xba256504,0xba6968b1,0xba93ff02,0xba83157c,0xba610192,0xba012be4,0xb9e8e733,0x39113c2a,0xb9b918e4,0xbb06d011,0xbb1b9a4a, +0xbb5542f5,0xbb9ce460,0xbbb88c98,0xbb77e5b3,0xba6ba36c,0x3b0d5b1a,0x3b8863c5,0x3bbe5fcf,0x3bea89c0,0x3c054570,0x3c11af40,0x3c085382,0x3bf0dec0,0x3bb27bac,0x3b8f25cb,0x3b34386f,0x3a302fc0,0xb9232b54,0xbab9ecba,0xbb20ad8d,0xbb3ad735,0xbb2b5453,0xbafebe13,0xb9f0a3af,0x3a2718ac, +0x3ae9abf8,0x3ad9028a,0x3a8ada8b,0xb83c1d32,0xb8a6a95c,0xb914a1aa,0xb9db2690,0xb9cb6b6f,0xba3fe5bd,0xba76fc4e,0xbb08fd73,0x3bbb7b8f,0x3bc04734,0x3bc11832,0x3bb226c1,0x3b9ae503,0x3b83cac2,0x3b7c5620,0x3b80df04,0x3b6a909f,0x3b5048ce,0x3b3c3a79,0x3ab411bb,0x389c4459,0xbaa863ef, +0xbac754ad,0xbaf48a69,0xbb1341a7,0xbb0196d9,0xbae1e24f,0xbace4b73,0xbad1d4fa,0xbadb22d5,0xbafcba00,0xba0b87a1,0x39e63474,0x3ae924ad,0x3b205dcf,0x3b79b0ff,0x3b9aa5df,0x3ba35d60,0x3ba684c0,0x3bb146b5,0x3bb19849,0x3bbb2ef3,0x3bbdce90,0x3bb7897c,0xba4ab9c4,0xb8b3f1ea,0xb9aeb988, +0xb9ed00ae,0xb9e246ea,0xba1e9222,0xba7bad24,0xbab0494f,0xbad9fd77,0xbaf78255,0xbb00e8bb,0xbb076599,0xbb05e295,0xbb08f64f,0xbb0857c8,0xbb0c14e3,0xbb104aa3,0xbb1b7235,0xbb29a386,0xbb36fde1,0xbb3fd7c9,0xbb38d9e3,0xbb3dee9e,0xbb46c5a5,0xbb584fe7,0xbb654635,0xbb452003,0xbb2f40f2, +0xbb194209,0xbae1af30,0xba8bd162,0xba12b383,0xb9fcc6d9,0xba116c50,0xba0a9181,0xb958e2d0,0xbaa34bbb,0xba5d0565,0xba92d5a4,0xbaa3b2db,0xbabc1bda,0xbac9527e,0xbaced074,0xbad5252a,0xbae0554d,0xbaf08258,0xbb03421e,0xbb08bcb8,0xbb0faeae,0xbb16a417,0xbb16eaa2,0xbb180c92,0xbb189481, +0xbb192e14,0xbb192626,0xbb18a420,0xbb1beb21,0xbb1fdf29,0xbb2731dc,0xbb1d2d2a,0xbb2204eb,0xbb375d6d,0xbb236e45,0xbb145e35,0xbb0276f8,0xbae896f5,0xbacf58a4,0xbaa00ece,0xba98bbcc,0xba86abb2,0xbac45c57,0xbab04b3b,0xbb203628,0x3a1e27e8,0x3a22785f,0x3a3b973f,0x3a44886d,0x3a666042, +0x3aa5b538,0x3a8948ce,0x3a64c5fd,0x39b4ce41,0x39ed6cdb,0x3a1781d0,0x3a9555f6,0x3a66a7d4,0x3a655f77,0x3a43decb,0x3a91ab84,0x3a94a120,0x3a863609,0x3a3a1281,0x3a10669b,0x39da6af9,0x3a08ebad,0x3a0df66a,0x3a1504a7,0x39fb8d9f,0x39ca3bd1,0xb8e03cda,0x378d2477,0xb91a54f1,0xb9cf5d43, +0xb9ae5d77,0xb94014ec,0xb9034fa2,0x399296dd,0x39cedefc,0x39f1aedb,0x3a0f1579,0x3991ff09,0x3a264c6a,0x3a3e28da,0x3ab579a6,0x3b24516e,0x3b1d51d4,0x3aee7c3d,0x39c1668a,0x3a08aafc,0x3a54c8ea,0x3b094056,0x3ab126a7,0x3ac2b045,0x3abd6d1b,0x3b3ea6b4,0x3b52f7b8,0x3b35b876,0x3aff0a59, +0x3aafd3d2,0x3a7c88d0,0x3a8809db,0x3a89a8b8,0x3a443c14,0x3a712c92,0x39ef00f8,0xba8d283a,0xba1bff15,0xba3ed242,0xbaa902c9,0xbaadbddb,0xbac23695,0xbaeafff1,0xba48dcec,0xb9bc4f5f,0xba1234a1,0xb8a0e353,0x39f31fb8,0x3ab78c68,0x3ac57578,0x3b27c263,0x3b8ae9b4,0x3b81ccdd,0x3b45cf46, +0x38c130ac,0x3874c5d9,0x3a277c77,0x3b83afa0,0x3b2a6850,0x3b339c01,0x3b02a66d,0x3b86ab9a,0x3b8e0c51,0x3b64ed00,0x3aee3c25,0x3a6ef495,0x399a598e,0x39f3e320,0x3a3a6a10,0xb8cc6b1f,0x3995a11d,0x3991d956,0xbb51e85a,0xbb121f0b,0xbb7185a2,0xbb980be4,0xbba4d798,0xbb82dec9,0xbb61fe0e, +0xba8ea435,0xb9d9baf2,0xb9ed2c15,0x38809955,0xbaa1a17a,0x39b052df,0x39669d98,0x3b3d405d,0x3bdfb4fc,0x3be904a0,0x3bacac0d,0x3a5185b9,0x39983891,0x3ab7e31e,0x3bbff84e,0x3b4bf6c6,0x3b598d59,0x3b7362cb,0x3c09810e,0x3c1f8aa9,0x3c0c226f,0x3bb7fefc,0x3b721178,0x3b25faa2,0x3b38c439, +0x3b3ae335,0x3af123c6,0x3b1425ae,0x3ab35953,0xbb360d69,0xbb409245,0xbb81c0a5,0xbb8b39b4,0xbc039421,0xbbfcc485,0xbbd65d18,0xbb9b0990,0xbb2f7c66,0xbb14abec,0xbafe8e51,0x3bb37518,0x3bb92a87,0x3c10fee2,0x3bda52c5,0xba82f754,0x39cc2d76,0xba346ef2,0xbb7d6249,0xba99df1e,0x3a1fb9ff, +0x3a586093,0x3be695b3,0x3bc78b5d,0xbb2bb046,0xbba77280,0xbc04081f,0xbc2e3aea,0xbc09e5c9,0xbc04cbc0,0xbc092591,0xbbf355d4,0xbbee0de4,0xbbec6f05,0xbb9da184,0xbb1b6cb6,0x3b483b0e,0xba216543,0xba559dcd,0x395900e2,0x3a56140a,0x3b92f54f,0x3c1325c2,0x3c074983,0x3bcc7928,0x3b4e9d1c, +0x3b99b5d2,0x3b5ad4a1,0xbaf91106,0xbb8e8efd,0xbbd15e86,0xbc13801c,0xbc09c222,0xbb6d67ce,0x3b392f3f,0x3bb520ef,0x3b12467c,0xbbea66fe,0xbc29fe93,0xbc09f92f,0xbb479fb9,0x3b9aab9b,0x3c075d97,0x3bd23973,0x3bc695b4,0x3bacd745,0x3bc715dc,0x3b4d70f7,0x3b0b1d3c,0x3b017d15,0x3b0a2233, +0x3925c455,0xbb324fd7,0xbab1e969,0x39356d19,0xb98617e5,0xb94d4886,0xbb393831,0xbbe87872,0xbc49ca4d,0xbc057e4a,0x3b73d47f,0x3b9c0dbe,0xbc6d6da8,0xbc139d84,0xbc0afe2e,0xbb2da38c,0x3c57b8a3,0x3c010e6d,0x3b301fd5,0xbaca6591,0xbc3f602d,0xbc075798,0x3c062566,0x3ba052df,0x3aa82602, +0xbb88fd10,0xbb9bf0fc,0xbbb3b215,0xbbb2a18b,0xbb505cfd,0xbb20a8f6,0xbb3ce87c,0xbaa6f841,0xbadbe50b,0xbb3ee71e,0xbb4eb2f5,0xbaf66df3,0xba152673,0x39cd9c4d,0x38e9b8f5,0xb8ce3380,0x39a692fa,0xb8e9cf17,0xbb0e317c,0xbafd8fd7,0xbae5c4bf,0xbb5ba78b,0xbc4e611f,0x3ac6c58b,0xbaca9528, +0x3b835006,0x3bc4600f,0x3bf3e62f,0x3c0d26ff,0x3bd84f1a,0x3a81c37e,0x3957376e,0xbaa3a8c3,0xba226ddc,0xbaff276a,0xba7fccab,0xba8b86ff,0x3af45916,0x3b6bf032,0x3b736403,0x3b6d4a84,0x3b5a2fc7,0x3b1d4c93,0x3b2a7fba,0x3b3815bc,0x3b4fefa3,0x3ad7760a,0x388b4257,0xba84da4e,0xb9e3c00d, +0x38f722d1,0x3916318d,0xb7aa9d78,0x3a222d01,0x3ae1d420,0x38549847,0x39a48f05,0x3baeb4be,0x3b8bc87f,0x3a7da3f9,0x3b39fda2,0x3b90bbec,0x3b3dfcaf,0xbaaa381d,0xbb47bdaa,0xbb69410d,0xbb4357b8,0xbaefd9a7,0xb8fa626b,0x3b088038,0x3b261d46,0x3b3840d2,0x3b2e8d96,0x3acacb4d,0xb6dfc3ce, +0xbaeb69c0,0xbb2cb2ef,0xbb4c2f2f,0xbb63d35b,0xbb5f7c79,0xbb133821,0xba41170f,0x3904887e,0x39ebd2df,0xb9d3aa4d,0xba3ba702,0xba36541f,0xb9ac7775,0xb9c24b9a,0xb9bf67c2,0xba66942c,0x3951d0a5,0x37775158,0xba661f8a,0xba7a6963,0xbb8f02ed,0xbbbb9613,0xbbbf77ef,0xbb907076,0xbb112957, +0x3934f471,0x3af33266,0x3b640028,0x3bb9755e,0x3bf03af6,0x3c0c2408,0x3c068167,0x3bf138d6,0x3bb8f9ef,0x3b950c0d,0x3b3f7c8c,0x3a60d2e2,0xb9c0c6fc,0xbae11bf8,0xbb354683,0xbb491c53,0xbb291577,0xbacd680b,0x36e15b69,0x3a7a0215,0x3ae0d21f,0x3a8587c4,0x3953ce58,0xba21c378,0xba0dfa7e, +0xb9cced72,0xba26500d,0xba3c733d,0xbaa66d3f,0xbae9b48b,0xbb44bb6d,0x3ba9fd3a,0x3ba86dff,0x3ba1afac,0x3b9b89a5,0x3b904d29,0x3b8645f1,0x3b87a8ee,0x3b8d1b43,0x3b76a81d,0x3b4d62bd,0x3b2d5a72,0x3a9d45e3,0xb8075fcc,0xbab4efd3,0xbac4ebf9,0xbae6131b,0xbb0413ca,0xbadf1012,0xbab8d4d1, +0xbaa33756,0xba9d2496,0xbaa3b67b,0xbac08ab0,0xb7cef671,0x3a9178b7,0x3b31b060,0x3b50e97a,0x3b88e058,0x3b9e1489,0x3b95881e,0x3b8b1ec2,0x3b85b5db,0x3b8d548a,0x3b9ca378,0x3ba2ff18,0x3b9f1b22,0x3a3578a3,0x3ac02c83,0x3a9dd706,0x3a801918,0x3a4eb5bb,0x39edfd17,0x3745e379,0xb9b76a55, +0xba536659,0xba91ba99,0xbaad09a5,0xbad0e56e,0xbae88da1,0xbb05ca96,0xbb0376f3,0xbb06ef64,0xbb0aae6b,0xbb15f453,0xbb2359df,0xbb301c1a,0xbb349e42,0xbb24edb1,0xbb21cf0a,0xbb239f50,0xbb30f4f4,0xbb34bb07,0xbb1659d3,0xbafab751,0xbac5cf2e,0xba56531a,0xb885623e,0x39e1d480,0x3a186e11, +0x3a0b315f,0x3a2ef969,0x3a88687a,0xba34d317,0xb9985ead,0xba23c7c7,0xba49c5fc,0xba750504,0xba86bb85,0xba8fcad4,0xba9aa134,0xbab05f49,0xbaca3a88,0xbae8e9ec,0xbafbd730,0xbb07b85c,0xbb1373b1,0xbb113b4c,0xbb11bd0a,0xbb112380,0xbb102549,0xbb0e77b8,0xbb0c7d69,0xbb0dc3cf,0xbb0fbc55, +0xbb176945,0xbb04be10,0xbb07a0b7,0xbb1e9910,0xbb0ac1a7,0xbaf59fec,0xbad41c56,0xbab83f60,0xbaa06a41,0xba5f23da,0xba3c3209,0xba09b3dd,0xba7fa5ea,0xba4d8014,0xbb12bd56,0x39ff1c08,0x3a0b252b,0x3a2cf183,0x3a25fde2,0x3a4135ce,0x3a8cd2b1,0x3a77dea0,0x3a4c4fd7,0x39572624,0x39a0fc54, +0x39e60e94,0x3a90b851,0x3a48ad95,0x3a44a18d,0x3a1ccdef,0x3a7e64e2,0x3a830380,0x3a688beb,0x3a25da75,0x3a026e51,0x39ce7914,0x39e1e855,0x39e05700,0x39dfe0f2,0x39a50d6b,0x39780167,0xb96cc521,0xb892d48c,0xb9727552,0xba11562d,0xb9b45d60,0xb952c2b9,0xb9b774cb,0x39791c77,0x39ba6af8, +0x3991cae8,0x39efd58c,0x39180b1f,0x3a0fe16f,0x3a00b654,0x3a8ee9db,0x3b0a34ec,0x3b11ccff,0x3adaa68b,0x3907a46b,0x39914feb,0x3a29f254,0x3b110533,0x3a9e3318,0x3a9d629e,0x3a92762b,0x3b279caa,0x3b405041,0x3b27aea4,0x3affc932,0x3abdcd19,0x3a92fdfd,0x3a85f188,0x3a650b07,0x39ff5539, +0x3a10cc7c,0x390ac867,0xbaa1daf2,0xba0ed2c9,0xba137115,0xbaae19db,0xba7cb59e,0xba988cd9,0xbb056f31,0xba25e2b7,0xb9a24d5a,0xba779d13,0xb9814510,0x39e5d401,0x3acb570b,0x3aa680b3,0x3b105f60,0x3b6e4e68,0x3b777d8b,0x3b3f253c,0xb9424b36,0xb9831659,0x39a61d14,0x3b887f7b,0x3b198543, +0x3b1d9a64,0x3ad3f695,0x3b73e13c,0x3b8311ee,0x3b50ced8,0x3af4ebc8,0x3a8eb612,0x3a239ac2,0x39eca66c,0x39e15690,0xba008c53,0xb966e9c4,0xb90e9bce,0xbb65b318,0xbb1843c0,0xbb6c22dc,0xbbab011c,0xbb98099b,0xbb6e1b97,0xbb87eefd,0xba4f2b72,0xb934a666,0xba82bb3f,0x37a02cee,0xbabfa02a, +0x394ed708,0xb9be3c98,0x3b043b3d,0x3bb7aa58,0x3bd802c5,0x3b9f633e,0x394f5b9d,0xb9721410,0x3aa4a894,0x3bd3a699,0x3b4600a1,0x3b2605bf,0x3b36dcfb,0x3bf1b005,0x3c141794,0x3c043e21,0x3bc18ab8,0x3b8da8e5,0x3b5be027,0x3b47180d,0x3b29a108,0x3a4aec86,0x3aa177a7,0x3a20b1f0,0xbb66ea6a, +0xbb3d3c29,0xbb687f3b,0xbb7f09fd,0xbbe523a6,0xbbdea1b8,0xbbed5669,0xbb83f26c,0xbb12d372,0xbb6c71b0,0xbb1523b0,0x3be41b6c,0x3be9e640,0x3c2797ae,0x3c002205,0x399bf4e8,0x3a940e2f,0x38147030,0xbb13a27b,0xbab3a406,0xba5385eb,0xba488095,0x3b9dc49f,0x3ba8ab40,0xba461faf,0xbb914554, +0xbc012198,0xbc3529c2,0xbc1ad6b4,0xbc177cdd,0xbc1b0698,0xbc0ebd63,0xbc027cd7,0xbbf634f3,0xbb6a6c03,0xba9e4b95,0x3b1cba85,0xb8e41f18,0x37d5acf7,0x3a79e6f2,0x3abfcd77,0x3b9a6548,0x3c05008c,0x3c036b91,0x3bdb4dde,0x3b8cc7f0,0x3bc68899,0x3a59d733,0xbb2c7212,0xbb8d3e7f,0xbbc315bb, +0xbc02372d,0xbc169181,0xbb9c860a,0x3b1c812c,0x3bb3da64,0x3b647d53,0xbba2b508,0xbc23f7a3,0xbc180399,0xbb8b18c9,0x3b3d2747,0x3be91fe6,0x3bd78ba7,0x3be11d3a,0x3bc2c3b3,0x3bb96bf6,0x3b301a1e,0x3ad34719,0x3af0b994,0x3aec2b1e,0x38a91bb9,0xbb1e84b5,0xba77196b,0x38e83799,0xba044df8, +0xb9eba963,0xbb2e433e,0xbbcb1cc4,0xbc2f9247,0xbbdccf2a,0x3b8a3dce,0x3b3b2625,0xbc2644ea,0xbba458d5,0xbc13f037,0xbb66628b,0x3c6cf694,0x3c04ff62,0x3b6d49f5,0x3a323ed0,0xbc2de4a3,0xbc11df94,0x3bb820e3,0x3bba464d,0x3b53f148,0xbb6c550d,0xbb842693,0xbba2ba6d,0xbbae47d9,0xbb6a626e, +0xbb48525e,0xbb6eddd8,0xbafcb559,0xbb0430f7,0xbb413edb,0xbb40c05b,0xbacc224f,0xb826bc26,0x39f1730f,0x3851a837,0x38d8d9c4,0x39ef0ac0,0x39eafe52,0xbb2450e3,0xb99f7cc2,0xba19d946,0xbbcd4ec9,0xbc1f9ce3,0xbb08ae98,0x3b25b4e1,0x3bd5dfd1,0x3bd59c8d,0x3ba14818,0x3c163035,0x3c0cd7de, +0x3b558185,0x3a5139c5,0xbaacb36e,0xb9d63e71,0xbb0dcfe3,0xbab3a915,0xba923b3e,0x3abfb946,0x3b3be305,0x3b4725f6,0x3b6e903c,0x3b75ac4f,0x3b421fbb,0x3b422203,0x3b3f809c,0x3b4bcb34,0x3aba0123,0x381e2068,0xba5226fe,0xb986e572,0x388d373a,0xb8411a71,0xb999b08d,0x39a7ea83,0x3a37224d, +0xba410bd2,0xba7018f2,0x3ae19b1a,0xbaa13bb7,0x3b1944bc,0x3b435114,0x3b87a7fe,0x3b5a0497,0xba5643d9,0xbb423c66,0xbb8d730d,0xbb884647,0xbb4f2e01,0xbade66c9,0x39f9046d,0x3a95fa29,0x3ae543a6,0x3b091015,0x3a92eb01,0x37cc8700,0xba9d3ed4,0xbafa61eb,0xbb195034,0xbb326bff,0xbb1a1f85, +0xba93b7ec,0x39b28ab7,0x3a1337e8,0x3a152b84,0xb9607435,0xb9ec03b2,0xb96e222c,0x39181db8,0x38014fe3,0xb90f2faf,0xba8a7067,0x3831d02d,0x39a9ebbc,0x3a209c6c,0x3a66cf7b,0xbb9e6b28,0xbbbfb3d6,0xbbac5004,0xbb937d74,0xbb579256,0xbaea46ab,0xb9d93666,0x3a9d1c1b,0x3b818f03,0x3bc6376d, +0x3bf5df77,0x3bf33125,0x3bdf2968,0x3bb20551,0x3b8ecc8f,0x3b341e5c,0x3a30eea5,0xba4214e7,0xbb019889,0xbb3bc674,0xbb49c782,0xbb1da578,0xba996d96,0x39c13279,0x3a91b29a,0x3ab79ac2,0x39bc5536,0xb9f04ce8,0xba6ebea5,0xba4b63d9,0xba150be7,0xba635c49,0xba8375bb,0xbadeda10,0xbb2023be, +0xbb6c1209,0x3b80fe87,0x3b6d870b,0x3b5349bc,0x3b58d2e2,0x3b579719,0x3b64876f,0x3b7875c9,0x3b8674c0,0x3b69089e,0x3b3f4db8,0x3b20e7b9,0x3a944208,0x36c591df,0xbaa496d6,0xbab0ced7,0xbacac0e2,0xbae34dae,0xbaba33f5,0xba9a2ef7,0xba8a4578,0xba5ab0e3,0xba5185ee,0xba6a3852,0x39e7d97d, +0x3ad787d0,0x3b5d7781,0x3b6bf45d,0x3b8756df,0x3b92b26d,0x3b78a851,0x3b4f04f3,0x3b2841e3,0x3b40d61a,0x3b62ee8e,0x3b72c29a,0x3b6a3018,0x3b072311,0x3b314817,0x3b1f55ae,0x3b0a3c4f,0x3ae3b2d1,0x3aaad0bf,0x3a57e347,0x3a03d565,0xb8738a07,0xb9ea2a18,0xba4a011d,0xba999da0,0xbac47cc3, +0xbafd5675,0xbaf55fc9,0xbafb3b22,0xbb00b9be,0xbb0b9698,0xbb16790f,0xbb228c59,0xbb211fcc,0xbb081dc6,0xbaf5d586,0xbae5ade9,0xbaf1fc79,0xbae1d227,0xbaabe92e,0xba68d924,0xb9e7fe9b,0x397c8cf6,0x3a826e4b,0x3abed089,0x3ad35aed,0x3acda888,0x3ae8df3d,0x3b0aeec6,0xb968543a,0x38d8b629, +0xb96804ff,0xb9be24dc,0xba0055fb,0xba19762a,0xba3310ed,0xba4f71fd,0xba8369ac,0xbaa1cf6a,0xbac4ee44,0xbadcaeca,0xbaf3d180,0xbb08c5fc,0xbb051974,0xbb057617,0xbb043f7c,0xbb025ca9,0xbaffbfe8,0xbafa4809,0xbaf98906,0xbaf78691,0xbb02dc2a,0xbacdebcc,0xbacdc939,0xbaf69f32,0xbad394ff, +0xbab5f736,0xba9a0436,0xba7fa40b,0xba542e54,0xb9f13bb9,0xb994dbd1,0xb8a702d2,0xb9eee7f1,0xb9901a32,0xbafe02c2,0x39cce214,0x39ea94f5,0x3a2066ae,0x3a0c7bed,0x3a22656a,0x3a6a712f,0x3a5f2db6,0x3a360a0d,0x38c998d1,0x394a229c,0x39ab7a0d,0x3a8c5081,0x3a2aae97,0x3a252fe3,0x3a009ef1, +0x3a5d30a2,0x3a66837f,0x3a4e6949,0x3a15143a,0x39ec3fe9,0x39c58572,0x39b6304a,0x39a7aed7,0x39a12534,0x3933effe,0x38b53f93,0xb9aed09e,0xb9263be9,0xb9a5748e,0xba38f3f1,0xb9be07c2,0xb970578b,0xba10a3a0,0x3948f268,0x39ad5276,0x3900c194,0x39c04217,0xb19d2d7a,0x3a00df6f,0x39a6d2ce, +0x3a5cb6f1,0x3ae075f5,0x3b0568b8,0x3ac8d468,0xb8126c47,0x38b279ba,0x3a044696,0x3b154474,0x3a820176,0x3a5ff12c,0x3a57875b,0x3b0e6ea1,0x3b2b4fa0,0x3b1b19fe,0x3afaa6dc,0x3ac2bd39,0x3a9f28f9,0x3a743479,0x3a2e75d6,0x39a5d174,0x3935f483,0xb93322fc,0xbaa47a07,0xb9f2b475,0xb9c733a4, +0xbaab965d,0xba1c0e34,0xba547229,0xbb08f83b,0xb9f272ac,0xb98068dc,0xba97531b,0xb9c3978d,0x39c09375,0x3ad7d5a6,0x3a8ffa4a,0x3afa05b1,0x3b462b0e,0x3b695c44,0x3b36aafe,0xb9c3256c,0xb9f71770,0x386b87f8,0x3b8b1020,0x3b01f376,0x3b02451e,0x3aad2260,0x3b59bb28,0x3b6f14e7,0x3b42b969, +0x3af8d83f,0x3a9d3328,0x3a6aa389,0x39c9fcbf,0x38fa18b5,0xba286122,0xba398808,0xba1e7383,0xbb6d08ef,0xbb1b463b,0xbb60a3e2,0xbbbb507a,0xbb88ca7b,0xbb55b783,0xbb98ab42,0xba0e1506,0x38519878,0xbaad585e,0xb84260db,0xbad8860a,0x38fb5962,0xba3a597b,0x3aa6852a,0x3b8dec85,0x3bc51b03, +0x3b945c40,0xb948a75d,0xba2cb221,0x3a8e8ed3,0x3bdf73e8,0x3b2c201c,0x3abf9bb6,0x3aeee212,0x3bcb7e4b,0x3c05f804,0x3bf80f91,0x3bc49f9e,0x3b9892fe,0x3b7fb6a5,0x3b405a98,0x3b0ad4f6,0xb875ddf8,0x3907ce29,0xb95544a8,0xbb7972f0,0xbb232795,0xbb37bc87,0xbb564132,0xbbb6b67e,0xbbb3e351, +0xbbefd78c,0xbb555ca2,0xbaec4556,0xbb930595,0xbb24d8d4,0x3bfdb7cb,0x3c068a1c,0x3c3448c1,0x3c0f6fb1,0x3b08d147,0x3adb8f60,0x39c7d668,0xba2ad364,0xbaaedb10,0xbae34131,0xbaf6adf8,0x3b505f4b,0x3b9ba5e8,0x3ae4bad0,0xbb57f046,0xbbeecb4c,0xbc305f83,0xbc22f62b,0xbc208c00,0xbc1f3957, +0xbc1687df,0xbc03d1eb,0xbbf10819,0xbb064693,0x37d5488e,0x3ad9ac16,0x39c3dab7,0x3a1e0007,0x3aa9ce60,0x3ae16773,0x3b8ef42c,0x3bd910e2,0x3beff643,0x3be28672,0x3bae3449,0x3be0e8bc,0xba91e215,0xbb3c3b3e,0xbb825e19,0xbbb42812,0xbbe67859,0xbc1a9401,0xbbb03350,0x3b17d4d4,0x3bacbd32, +0x3b902810,0xbb341d19,0xbc18d2d7,0xbc2111de,0xbba6ade6,0x3a81a8e3,0x3bb5af76,0x3bd42cab,0x3beb9676,0x3bca259a,0x3ba3aa9e,0x3b08bd24,0x3a89c498,0x3acae045,0x3ab323a8,0xb8f152b1,0xbb01e569,0xba02f097,0xb915778d,0xba303675,0xba182348,0xbb08b9b2,0xbba4a1fb,0xbc0f1a6e,0xbbacc8c7, +0x3b8c13db,0x3a9ce9d4,0xbbe1c016,0xbaae4256,0xbc05ad2e,0xbb47d5c6,0x3c789d6e,0x3c0adbc4,0x3b9762c4,0x3b323dae,0xbc1863cb,0xbc15a393,0x3b400b06,0x3bd105bf,0x3bac555b,0xbb2260b6,0xbb4a188b,0xbb8b8f18,0xbb9def84,0xbb752337,0xbb583bc9,0xbb771ad2,0xbb0aeb91,0xbb04d627,0xbb381939, +0xbb2114ea,0xba8ef815,0x39bbf04a,0x39c32f00,0x388e6ac7,0x39b0d946,0x39a8297e,0x3a8ba8ba,0xbb072cf6,0x3a612c0a,0x39b12f5e,0xbc076bb3,0xbbf4474b,0xbb9bc5d5,0x3c008e32,0x3bfde9bd,0x3ba9a00b,0x3a9627e6,0x3bfad223,0x3c187da3,0x3bcbcd0d,0x3aeeacc0,0xba8fa410,0xb9d276ed,0xbb13a57f, +0xbad253c9,0xba7fa694,0x3a7687f5,0x3afa0e53,0x3b1879e4,0x3b62613c,0x3b81663a,0x3b60da4b,0x3b51c101,0x3b442a4c,0x3b40ed39,0x3a8e7625,0xb78e97fd,0xba08db5b,0xb9070d52,0xb8e289ab,0xb93bef30,0xb9dfbbd7,0x381d8b79,0xb8d1ac6e,0xba64d9d0,0xbae513e7,0xbb3419f2,0xbbd9e72b,0x3b810b8d, +0x3b595361,0x3b8166fe,0x3b7afcfe,0x388d837e,0xbb1789b2,0xbb967a26,0xbba4787d,0xbb8acd3f,0xbb40811e,0xba626eb5,0xb78b5370,0x3a526c1c,0x3acc4a84,0x3a629680,0x397c68d6,0xb9e0b7dd,0xba90bc39,0xbac12376,0xbae4e281,0xba975096,0x387cc077,0x3aa92638,0x3a7794ef,0x3a2b7bf9,0xb89db38b, +0xb9032d72,0x392f9fca,0x39c2401f,0x399b0729,0x38dcd3fa,0xba7921af,0xb932e848,0x3a1c84b0,0x3b0ea1ed,0x3b549e42,0xbb9cf81d,0xbba8b04e,0xbb82beb7,0xbb8373b9,0xbb7aa312,0xbb54f315,0xbb0c9f8e,0xba1975a3,0x3b1f3fac,0x3b966ff3,0x3bc31bca,0x3bcb19b4,0x3bc1568d,0x3ba0b10f,0x3b8038cb, +0x3b1951b7,0x398d3b95,0xba9605fc,0xbb0b11c5,0xbb34f8eb,0xbb3f925d,0xbb0b64cd,0xba520369,0x3a198189,0x3a8c424b,0x3a6e75af,0xb96be1c7,0xba65be4f,0xba81d014,0xba5ffbed,0xba37efd7,0xba91757b,0xbaa7f656,0xbb05d51a,0xbb3c1351,0xbb7ef5ee,0x3b17a2e1,0x3ae40b07,0x3aa01ac4,0x3ac4f8fe, +0x3ade1173,0x3b1f0661,0x3b46b7a6,0x3b698051,0x3b4f2b03,0x3b320e60,0x3b200d29,0x3aac0280,0x39ae3c64,0xba49ac83,0xba7111f2,0xba92e023,0xbaaa3699,0xba8b3dbd,0xba7618d8,0xba7bbae5,0xba099b61,0xb9acb91e,0xb9722bd5,0x3a684fe4,0x3b06635d,0x3b7523bb,0x3b714d3e,0x3b770c40,0x3b7b1a1c, +0x3b3e2a9c,0x3b076951,0x3a9b695f,0x3ad3c37c,0x3b083be2,0x3b1588dd,0x3b08ff8c,0x3b45321e,0x3b65cbf0,0x3b555c09,0x3b3d1e8c,0x3b1dcf21,0x3b00b65f,0x3ac4efd3,0x3aa351e8,0x3a245a3f,0x392c1223,0xb98349c3,0xba3f807a,0xba957d01,0xbadb3937,0xbad13895,0xbad5809f,0xbada1442,0xbaedebd3, +0xbafc21c5,0xbb09b999,0xbb0635c2,0xbac39cd1,0xba95c260,0xba637f9b,0xba593c6e,0xb9ff00e0,0xb925368d,0x398ab04b,0x3a3095b7,0x3aa69a7d,0x3afbfaa5,0x3b17ff08,0x3b1e033f,0x3b1a2562,0x3b294db4,0x3b3c0733,0x39380456,0x39e92ea9,0x392a9361,0x385a2875,0xb7bdc2a1,0xb9022af5,0xb9792fa2, +0xb9b73614,0xba16c15b,0xba52e248,0xba8c95ea,0xbaa58a61,0xbabdd0d5,0xbade5196,0xbad59f4f,0xbad6b097,0xbad40b23,0xbacfcfc6,0xbacb381f,0xbac35003,0xbac6d300,0xbac2ab60,0xbad51422,0xba81a055,0xba815ae5,0xbaa5c234,0xba8c21f6,0xba67b0a6,0xba3d7de2,0xba10e4c5,0xb9d8c8c2,0xb90424d1, +0x38b630e8,0x39a8dc0a,0xb824d3fa,0x3911c522,0xbabbf114,0x396d4321,0x39a89387,0x39f8e394,0x39c64e49,0x39e728c3,0x3a2a2949,0x3a3257c6,0x3a0ab543,0xb89e6b32,0x37313ec7,0x3917ae1a,0x3a78754b,0x39ecac1e,0x39e1f8ad,0x39b079f8,0x3a288caa,0x3a338510,0x3a27abec,0x39e2c448,0x39ad3f79, +0x3989cdec,0x396a1812,0x395bbbdc,0x398d5911,0xb793ac1c,0xb88efcef,0xb9b6cf71,0xb9449455,0xb9b1709e,0xba499318,0xb9a988da,0xb9561496,0xba29d50f,0x390b81ea,0x39797200,0x3845ea3a,0x398d6010,0xb8f58b0f,0x39c1bbe9,0x38e7388b,0x3a0d7e38,0x3aa20a55,0x3ae33988,0x3aaa479d,0xb984172a, +0xb9464e54,0x3983dc18,0x3b0e81b5,0x3a25424a,0x39c7cd7d,0x39f25a8a,0x3ad9a5c5,0x3b0d85bb,0x3b09e973,0x3ae39f0c,0x3ab307b9,0x3a94916f,0x3a4e1119,0x39d19cdb,0x393fff50,0xb95afbe4,0xb9f85728,0xbaa156fc,0xb9f5dd45,0xb9a17ae5,0xbaac10b2,0xb9b944ef,0xba112842,0xbb06b9b2,0xb9b13123, +0xb959ba41,0xbaa36583,0xba089c26,0x3980821b,0x3ad2effe,0x3a63c4bd,0x3acea9c0,0x3b1ad5d6,0x3b52bd0d,0x3b2434ca,0xba230f5f,0xba4dcf71,0xb9a34aaa,0x3b86c601,0x3abd517d,0x3abb8cd5,0x3a82358a,0x3b36fdf4,0x3b4f5bf8,0x3b34618b,0x3aedc821,0x3a96fa1e,0x3a821aef,0x3981bd37,0xb95e7920, +0xba20292d,0xbaa03dec,0xba93b8b5,0xbb64a662,0xbb1b24f3,0xbb54804a,0xbbc34209,0xbb6fc78e,0xbb3b4ba3,0xbba08827,0xb9c82739,0x3945ac55,0xbac35f2e,0xb92e644a,0xbae5fc5a,0x37878d3e,0xba81099b,0x3a0d28d5,0x3b43cdba,0x3bacf4ab,0x3b86a347,0xba11be1f,0xba9beb8f,0x3a39c211,0x3bdd9197, +0x3af67c21,0x39056d40,0x3a3ae757,0x3b9cfc58,0x3be6a143,0x3be4947c,0x3bbe7cb4,0x3b9752a1,0x3b8489e6,0x3b2838b4,0x3ac2d409,0xba249659,0xba771c4a,0xba770c6d,0xbb6bd650,0xbaf8c6e9,0xbaefa066,0xbb196f28,0xbb83bfaa,0xbb84695c,0xbbdc29b5,0xbb232292,0xbab81bcf,0xbba1d2ae,0xbb305575, +0x3c006009,0x3c0e07e1,0x3c365dbd,0x3c198e78,0x3b84e177,0x3aee6de4,0x38eecd6e,0x39d5b4f0,0xbabb3051,0xbb210f53,0xbb34655d,0x3b107877,0x3ba25f3b,0x3b917cef,0xbaf2aa1a,0xbbd20156,0xbc22ae95,0xbc240538,0xbc222054,0xbc19befa,0xbc13314c,0xbbfaa5fe,0xbbdcd36f,0xb9e2e4f1,0x3a876edc, +0x3a7f8223,0x3a3c4a15,0x3a3172e5,0x3a9e25b1,0x3ac7af89,0x3b6a9fd7,0x3b9b3cab,0x3bccc052,0x3bdf57c5,0x3bc7a03d,0x3be6fba4,0xbb1ab4c0,0xbb31fc88,0xbb6e7abc,0xbbabb2d0,0xbbd53a0d,0xbc1e324c,0xbbc52759,0x3b0b6f5a,0x3b95d595,0x3b9a097e,0xba37d8f6,0xbc0c1017,0xbc28e758,0xbbc3f495, +0xba757644,0x3b728dae,0x3bc39f55,0x3be202c6,0x3bbe38fa,0x3b843ff3,0x3ab32e5d,0x39eb9306,0x3aa12abf,0x3a6038a7,0xb9c9ff5e,0xbab881c1,0xb9767672,0xb9c74ee9,0xba13ed12,0xba3c8d93,0xbaa49006,0xbb6b7147,0xbbd9e27d,0xbb822d0d,0x3b80dab3,0xb93dca10,0xbb894b57,0x3b0e98cd,0xbbd3250e, +0xbb055ada,0x3c6f3899,0x3c0eb9d6,0x3bb5e17d,0x3b91615a,0xbc01283a,0xbc14b658,0x3972da64,0x3bd723ec,0x3bdfd52f,0xba823fe8,0xbb108780,0xbb71e4f9,0xbb8c27df,0xbb786c21,0xbb563944,0xbb5ae65b,0xbaf0b669,0xbae29189,0xbb20d0fc,0xbaed2204,0xba0db906,0x3a0714ff,0x396d7023,0x392c5598, +0x39dac184,0x3937345b,0x3a9b797f,0xba8842e9,0x3ab1523c,0x3a5d1add,0xbc0f4bbe,0xbbb945cd,0xbbcf87f1,0x3c444d1f,0x3bd6ba36,0x3af16e7a,0xbb5d072f,0x3b837e98,0x3c05bfe0,0x3c158c63,0x3b422401,0xba342028,0xba5e80d5,0xbb1ffc1c,0xbb00bbe1,0xba907b70,0x3866df72,0x3a3865d3,0x3ac46ee4, +0x3b445f31,0x3b7b4422,0x3b72d9ef,0x3b5b27af,0x3b43b448,0x3b2a18dc,0x3a2c5464,0xb8e0de81,0xb99131e5,0xb91a6214,0xb962d0c9,0xb95ac22b,0xb9d5e307,0xb8e5353b,0xb9ffaa1d,0xba32f950,0xbb15b556,0xbbec658a,0xbc383a5f,0x3bbe870a,0x3b8086e6,0x3b703153,0x3b7e07cf,0x3a53bfcf,0xbacbcec7, +0xbb957b84,0xbbb8d395,0xbba8b42c,0xbb81fd6e,0xbb073c8f,0xba9bc95d,0xb9648787,0x3a822880,0x3a2d0014,0x3a00b1fe,0x39883aec,0xb9c03938,0xba23f049,0xba2c02d6,0x3918ba92,0x3a9f9244,0x3b060cac,0x3aa13e9b,0x3a2e6807,0x384241f8,0x3925068d,0x39b35293,0x39d11225,0x39b97038,0x399e9142, +0xba28bc53,0xb9bbd4d0,0x3a6176f9,0x3b6c7921,0x3bbe5683,0xbb8c6958,0xbb85eeef,0xbb2d28ea,0xbb57094b,0xbb808953,0xbb8754e3,0xbb53828a,0xbae921b5,0x3a9f7f2a,0x3b4e076c,0x3b88ccd6,0x3b98c1df,0x3b9722b5,0x3b81a456,0x3b4ab25f,0x3ad6627d,0xb9a91f14,0xbaca6efb,0xbb10bc61,0xbb26874a, +0xbb2c537d,0xbaee69d1,0xb9f597af,0x3a2e7037,0x3a61fb42,0x39b18868,0xba289649,0xba869504,0xba796980,0xba51326c,0xba4adb95,0xbaaba136,0xbac76abd,0xbb172203,0xbb4d1c11,0xbb811d33,0x3a2700fa,0xb93aea42,0xba45b81d,0xb9c7a0ad,0xb90ac357,0x3a8a88b7,0x3afbf374,0x3b2eec6e,0x3b2532b5, +0x3b1e4d30,0x3b2055cd,0x3ad23aa7,0x3a5d9fb9,0xb71d553f,0xb98dccaa,0xba08acad,0xba42b19c,0xba29f16e,0xba3812a9,0xba6d0344,0xb9848613,0x390044b7,0x39d6f675,0x3aa1e975,0x3b170495,0x3b72ccdf,0x3b622585,0x3b4d2d49,0x3b48459b,0x3b03eb18,0x3a97cc04,0x3900e2cc,0x3a083812,0x3a609321, +0x3a82b319,0x3a2e11e8,0x3b68b981,0x3b78d75a,0x3b6b68dd,0x3b546810,0x3b3413ca,0x3b1bc552,0x3b023bfd,0x3aede079,0x3a9d7142,0x3a34bf25,0x39639412,0xb997f2b5,0xba3e41e2,0xbaa7ecac,0xba9defbb,0xbaa04489,0xbaa33820,0xbab33ef1,0xbab927ad,0xbacf2c2f,0xbabf99e7,0xba54f979,0xb9b3daa7, +0x386721f9,0x396b201f,0x3a451aed,0x3a7d6f45,0x3aad4fc2,0x3ad79924,0x3b05d173,0x3b23b4bb,0x3b37ed2a,0x3b38c03e,0x3b3589f6,0x3b444014,0x3b50f38a,0x3a05df78,0x3a31ff6b,0x3a002c40,0x39dc9730,0x39d3a6dc,0x399cbed7,0x3942cd56,0x38bfc838,0xb90033eb,0xb9a609c8,0xba109065,0xba3dfeae, +0xba6bddba,0xba95cf9c,0xba8cc7ee,0xba8e3936,0xba8c0186,0xba88850c,0xba85496f,0xba7b0a0d,0xba80b117,0xba70a61d,0xba89e4c6,0xb9b39345,0xb9a43e1f,0xba033d3b,0xb9d5cdfa,0xb9946dca,0xb94ebf73,0xb8738a06,0x3831e3a3,0x3973bb2c,0x39ddc922,0x3a24d7f9,0x39c8d1cb,0x3a078ed1,0xba588e0b, +0x3990835b,0x3985e58f,0x3a1a3a94,0x39e05e33,0x3a011c22,0x3a25632f,0x3a4109a8,0x3a1bed4f,0x37188ab2,0x388b3b3c,0x3946485d,0x3a853e3d,0x39eeb1ea,0x39e26679,0x39ccb508,0x3a24b78e,0x3a30a020,0x3a362a52,0x39fc572e,0x39c5ffca,0x39ba3c06,0x39165fde,0x388026d3,0x38aabc9c,0xb8f3b6c1, +0xb986d54b,0xb9fac1d4,0xb9c1da83,0xba023e67,0xba6a1d77,0xb9e32499,0xb9af1694,0xba5946b6,0x380d1cf8,0x3981aa9d,0xb92e9e33,0x38f6ca51,0xb993b84a,0x3a000f25,0x395631c4,0x3a0da491,0x3a8a901d,0x3ae2fd41,0x3ab67137,0xb8c58a07,0xb90de150,0x3991a578,0x3b135c39,0x3a054990,0x3921f746, +0x39af7a0f,0x3aabf67b,0x3af1c00d,0x3b05045f,0x3adcb778,0x3ab21e7a,0x3a921642,0x3a0ef4ac,0x39786ac4,0x393d7b4d,0xb9f89928,0xba35a7bb,0xba870944,0xb9e16d0f,0xb982dd45,0xbaa84bbc,0xb8b36f8d,0xb9674279,0xbaf1d910,0xb90a7930,0xb90c4b2e,0xba9c561b,0xb9eed63f,0x394d039c,0x3ae035eb, +0x3a834add,0x3ad3b9e0,0x3b0a3812,0x3b55738c,0x3b2c72eb,0xb9b4c5d5,0xba2dc1ce,0xb9a042a5,0x3b884177,0x3a9ad9d5,0x3a95f01d,0x3a714aa1,0x3b1d4473,0x3b3734bf,0x3b34dc59,0x3af07d5b,0x3a9deb3b,0x3a87036b,0x38e3c32b,0xb9f558bb,0xb9d4f6c9,0xbada3c4a,0xbad72ddf,0xbb49f52a,0xbb1b294a, +0xbb3ef966,0xbbbdb995,0xbb47cfc2,0xbb20cb44,0xbb9b33f2,0xb98362f9,0x39a230de,0xbac68719,0xb94055b3,0xbae0f4e6,0x390b89d2,0xba4582a8,0x39a446e5,0x3b0d619b,0x3ba52ce0,0x3b8c7c28,0xb9355abb,0xba9610c6,0x3a38ab3e,0x3bdcc6cb,0x3ab642d4,0xba604d7e,0xb9103b39,0x3b5fe591,0x3bbfc69d, +0x3bd4c25c,0x3bb5e47a,0x3b915c60,0x3b7d69ee,0x3b03dc5d,0x3a5e8486,0xba7d4b00,0xbaf04610,0xbabfd83f,0xbb448aca,0xba9dfe01,0xba7aa440,0xbaac855a,0xbb24d2fe,0xbb2d2d87,0xbbb5c4dc,0xbae571f4,0xba88cd55,0xbba19fcc,0xbb2ccecb,0x3bf641b1,0x3c11ada6,0x3c391f41,0x3c27c481,0x3bd32687, +0x3b198251,0x39315ae2,0x3ace5d29,0xba7a0dfb,0xbb1aac45,0xbb3c2d15,0x3b1648bf,0x3bc607df,0x3bf18f7b,0x3948741f,0xbba00ba7,0xbc080f39,0xbc1a07a4,0xbc192f69,0xbc0b2cce,0xbc07cf4a,0xbbe06385,0xbbb876c8,0x3a800c67,0x3ad9d8c3,0x39f69537,0x3a4adb16,0x39f2d8e6,0x3a7583a8,0x3a70de8f, +0x3b29bb06,0x3b3e4d20,0x3ba315af,0x3bcfc563,0x3bd4b191,0x3be2f86c,0xbb47d29e,0xbb06a8ab,0xbb321918,0xbb953b53,0xbbb61b46,0xbc16af69,0xbbc6c8fb,0x3b19ed53,0x3b868c50,0x3ba671c8,0x3ae08a4c,0xbbeaf6f0,0xbc2661c1,0xbbd10001,0xbb0ccfb5,0x3b1ae052,0x3bb6c21c,0x3bd1f773,0x3bab07ad, +0x3b41152d,0x3a167385,0xb8d41744,0x3a7db1fd,0x39b72891,0xba1c49a4,0xba58dfde,0xb91e502e,0xb9cc9959,0xb9c5e90d,0xba22d92d,0xba38030f,0xbb0151fe,0xbb9ad81e,0xbb374c7b,0x3b5637a1,0xba8d4393,0xbaee8925,0x3bb2ef48,0xbb5a58cd,0x38da16c9,0x3c64e202,0x3c1f6d5c,0x3beacb44,0x3bd19b09, +0xbbba0b97,0xbc031912,0xbad1353c,0x3be4091d,0x3c0d262c,0x3ad0144f,0xba4253a4,0xbb33a27f,0xbb581290,0xbb5d7d60,0xbb2d3e4b,0xbb1845fb,0xba94cd2d,0xba9043ee,0xbafdfdef,0xba8b63bf,0xb868bc6b,0x39e0db36,0x390e6a08,0x394d0865,0x39a7f411,0x39296b6a,0x3a41e5b4,0xb889d3ed,0x3aa54d7f, +0x3a700a81,0xbc0102ab,0xbb81f810,0xbbe48661,0x3c609558,0x3b88b22c,0xbade7b7a,0xbbe2c786,0xb9150cf4,0x3bcbdca7,0x3c41d7b0,0x3b9ffe49,0x3a54faab,0xba6d9ef6,0xbb0070f9,0xbae9e255,0xba81165e,0xba1307c4,0xb8bd80db,0x3a87f73c,0x3b2e300d,0x3b766dd8,0x3b80f86b,0x3b59f9dc,0x3b40ac1c, +0x3b0672e2,0x3974eef2,0xb94c7a8d,0xb931839d,0xb92fa556,0xb9722994,0xb950b3fc,0xb9a8c772,0xb8dc3717,0xba008077,0xb9ed3d61,0xbb21fce5,0xbc311d40,0xbc6844fc,0x3c04a261,0x3bba46a8,0x3b8c0983,0x3b874d60,0x3afed590,0xb9af527d,0xbb76460c,0xbbb2b41a,0xbbad4f3f,0xbb87a4c9,0xbb19fe3f, +0xbacf5d2d,0xba0f7ced,0x3a8a23f3,0x3a7b4ce6,0x3a8c03ef,0x3a8c0b5e,0x3a0b3b52,0x39f7e0e5,0x3a2cbeb2,0x3ab9c30e,0x3b1b7f40,0x3b261b90,0x3ab43433,0x3a28bbf9,0x39001ee8,0x3997508d,0x39c3f3f1,0x39c02a58,0x399709a8,0x39c4f3ce,0xb9964d2a,0xb9c1f54d,0x3aa08014,0x3b99f4e7,0x3c0e3cee, +0xbb6c7c41,0xbb24c6b2,0xba7af509,0xbb06667b,0xbb4fa751,0xbb817c96,0xbb531418,0xbb00a509,0x3a412f52,0x3b0fad34,0x3b353d1e,0x3b599c2e,0x3b5fc76e,0x3b480453,0x3b19e48f,0x3a8eb715,0xba2db1ec,0xbad2dd8b,0xbafdf294,0xbb0c9957,0xbb145f4a,0xbab58f63,0xb90b6116,0x3a33ce7a,0x3a1f9058, +0xb8f56c45,0xba524084,0xba822d1b,0xba528755,0xba2a002c,0xba344e38,0xbaa7a636,0xbacff260,0xbb198c5a,0xbb4ae1e9,0xbb66ba3f,0xba38554d,0xbacd321c,0xbb024b75,0xbad6d0e5,0xbab5b1db,0x387be6fb,0x3a8bed7e,0x3afca2f6,0x3b0a4de8,0x3b1f13ec,0x3b3974d4,0x3b16c77c,0x3aea7fa0,0x3a9c6417, +0x3a4b11cd,0x39d62b9e,0x38bf81fa,0xb6756899,0xb93f8e89,0xba26c414,0x37ee2bf7,0x3a0fdd38,0x3a8137de,0x3ac5abc4,0x3b16febf,0x3b57051d,0x3b3bf090,0x3b1f8a38,0x3b10c725,0x3aa9833a,0x39eac633,0xba10111d,0xb9840f23,0xb8609e5f,0xb7024d01,0xb9d61706,0x3b65c7a2,0x3b79e177,0x3b71f249, +0x3b5fb856,0x3b45084c,0x3b35c0fd,0x3b251d54,0x3b21282b,0x3afb0d33,0x3ab5c553,0x3a6a828b,0x39d192de,0xb7ada956,0xba104107,0xb9fcd087,0xb9fc0dd2,0xb9ff30e9,0xba1765e9,0xba11b9e9,0xba3f38f2,0xba59502a,0x385ddc23,0x3a1625a1,0x3a870b68,0x3aaa1909,0x3b063199,0x3b0c2b2f,0x3b18a5ea, +0x3b1ff345,0x3b2eae4f,0x3b401171,0x3b46bc64,0x3b44c12b,0x3b3d54bf,0x3b4a0bcd,0x3b56f329,0x3a65e586,0x3a99bbcb,0x3a863617,0x3a85d8f3,0x3a8abe8f,0x3a7ce4ca,0x3a640b53,0x3a5541d4,0x3a23578a,0x39fc6d45,0x399dd826,0x392e1687,0x379a6739,0xb94ffa9b,0xb90c03c5,0xb91be2e4,0xb9113664, +0xb9024232,0xb9057189,0xb6ceaca9,0xb98eaad2,0xb9a012c1,0xba17df46,0x39ea7120,0x39a7b66d,0x3899eca5,0x38473b87,0x38fa5d9e,0x392b453e,0x3970304f,0x399017db,0x39bf1dd6,0x3a2f7b7d,0x3a8591de,0x3a12e47d,0x3a4c7c8c,0x393272db,0x3959603f,0x39c30fea,0x39f9efa0,0x39c69f42,0x39e10d8a, +0x3a06735b,0x3a2eeca3,0x3a0b5fdb,0xb7bd9a0b,0x368a4685,0x38f00154,0x3a75d2f2,0x39b5ef5f,0x39a8086d,0x39a67221,0x39fc7f89,0x3a0aa2d2,0x3a23b219,0x39d2110d,0x39a3a531,0x3971115d,0x397ec645,0x3973f5f1,0x39b07a41,0xb8d6bf2d,0xb900ae88,0xb9257fce,0xb8edb633,0xb93efb27,0xba0b1e8c, +0xb8c6a3d7,0xb79222de,0xba049121,0x397fe7d4,0x399c4ae6,0x38884844,0x39a35fb5,0xb6e9c149,0x3a00b7f2,0x393ae029,0x39e9364b,0x3a4ccbef,0x3ace84c3,0x3aad17db,0xb892d77f,0xb9626150,0x392bfba0,0x3b0afc99,0x39a7cfa4,0xb8fa913b,0x38a30f97,0x3a4f660c,0x3aaf08ff,0x3ae8816c,0x3abd8fdf, +0x3a963efe,0x3a71c42b,0x3a1a6ae1,0x390d8b3d,0x399e2984,0xba2117c7,0xba51f267,0xba462662,0xba000b09,0xb9ca4a09,0xbaa22579,0x388c35a1,0xb80f4469,0xbacccd94,0x3845033e,0x38431874,0xba74ed7a,0xb9c90a8b,0x39bda09f,0x3ae02cc2,0x3a796d5e,0x3acec4d2,0x3aeb91ca,0x3b4c74a4,0x3b27793e, +0xb94c8815,0xba3263bc,0xb9ddb0a9,0x3b807bb9,0x3a62d147,0x3a5399ca,0x3a3459dc,0x3ae9fb53,0x3b0f9724,0x3b295c3d,0x3ad99a28,0x3a8604d2,0x3a69199d,0x38d6cf12,0xba116e46,0xb8aeb0a5,0xbb050f9c,0xbb00a854,0xbb213743,0xbb1440d6,0xbb218b84,0xbb9f8976,0xbb202c74,0xbafc719b,0xbb86eb46, +0xb89357cd,0x39e5d36f,0xbaaf3778,0xb8e47dfb,0xbaad0c7d,0x3982d862,0xba272420,0x389e1a38,0x3aabd79c,0x3b96e055,0x3b8afd46,0x38c58850,0xba9e6e99,0x3a078415,0x3bcf22b8,0x3a7d2e2c,0xbad4d7cd,0xba8b1dec,0x3ae6b3c4,0x3b8cb2a4,0x3bbb1b9c,0x3ba17294,0x3b7d56a4,0x3b59205d,0x3ac7d37c, +0x39858095,0xba83e467,0xbb1e8cde,0xbadeff04,0xbb0f3964,0xba12cadc,0xba046c20,0xba32b4c4,0xba9c020a,0xbac955cb,0xbb85ae87,0xba8f4205,0xba223496,0xbb938d84,0xbb1f7487,0x3beb51bc,0x3c0a513a,0x3c332519,0x3c3087cd,0x3c0916c8,0x3b28c9e9,0xb8b6e929,0x3b0696a8,0xba4af847,0xbb18a910, +0xbb3fe397,0x3b15f60e,0x3be0287e,0x3c1e19aa,0x3b105d31,0xbb4fc948,0xbbd47cd5,0xbc0a0c18,0xbc0bffc7,0xbbf1a1d7,0xbbeb6d32,0xbbbf0307,0xbb85a709,0x3aff83ff,0x3af6af6f,0x391cf7c0,0x3a286c38,0x3946f002,0x3a2a195c,0x39af2304,0x3ac7e10c,0x3ad02583,0x3b66f4f5,0x3bb6156e,0x3bd1c03e, +0x3bda29f5,0xbb368555,0xba857a79,0xbb055d7d,0xbb852722,0xbba4196c,0xbc132112,0xbbd2fd0a,0x3b0655a5,0x3b588f81,0x3ba6e0b4,0x3b802e47,0xbbb67673,0xbc1f2430,0xbbe1b01b,0xbb4e6b4c,0x3a9abfc2,0x3b9feab9,0x3bb59dd7,0x3b89f424,0x3ae9af27,0xb8450461,0xb9f49759,0x3a5e3b92,0xb90eff29, +0xba33272e,0xb9bd4a81,0xb92dd477,0xb97bd458,0xb97f5d7f,0xb9a92957,0xba074e5d,0xba394f14,0xbb3f4baf,0xbaf44adc,0x3b24ce64,0xbac1e850,0x3a803de1,0x3c058c08,0xba3d2eca,0x3abad41e,0x3c3e59cd,0x3c22aa50,0x3c05dab4,0x3bfb9b81,0xbb5c3a21,0xbbd72fc9,0xbb5a4060,0x3bd292c9,0x3c180726, +0x3b7a6eef,0x3970cfda,0xbb125710,0xbb2719ba,0xbb4342c8,0xbb06aeca,0xba85e69b,0xb9045fa1,0xb99578a6,0xba9f4fcd,0xb9b51206,0x3983187a,0x3983265d,0x38da08b4,0x392fcdf5,0x39316b07,0x39316a13,0x39a5e657,0x3977a73c,0x3a8830a1,0x3a24e478,0xbbbdf282,0xbb0b44a4,0xbbd69e19,0x3c3b74c9, +0xba4b350b,0xbbcb43e7,0xbc290836,0xbba3fc1d,0x3b3c4053,0x3c50c659,0x3bd5f297,0x3b22631c,0xbaadca84,0xbaec5455,0xbb07a5eb,0xbac41047,0xbac93700,0xba7f0eb5,0x39d867fd,0x3b09b885,0x3b5a3641,0x3b81cacf,0x3b6142b5,0x3b3aab88,0x3abb6431,0xb8bf8c66,0xb982db1a,0xb9123d17,0xb92325e7, +0xb94114d7,0xb91bf027,0xb94c2bc5,0xb8e8bd25,0xb9a9d54d,0xb9856b04,0xbb243084,0xbc4d3ff8,0xbc74ea27,0x3c304172,0x3bf9ed75,0x3b8bc1b3,0x3b5c774b,0x3b0dbb6a,0x39a2b6f7,0xbb427132,0xbba5fe1c,0xbbab7f90,0xbb8a446f,0xbb32f871,0xbb07a254,0xba8175a5,0x3a6f1589,0x3a93654f,0x3ac10dbd, +0x3ad0c079,0x3aac9075,0x3ac003c0,0x3b012d4a,0x3b37e3da,0x3b602528,0x3b3af237,0x3abd0f9c,0x3a1507da,0x391fa5c6,0x399263a6,0x39a699cc,0x39932df0,0x3944fcae,0x39935e17,0x3883b5a8,0xb95bf816,0x3ae3032e,0x3bb2ecb3,0x3c36e1ca,0xbb10e2bb,0xba8d031b,0x3909d170,0xba7576c5,0xbb0f3a44, +0xbb513f5d,0xbb2cdb56,0xbae2d29d,0x3a106d75,0x3ac686dd,0x3ad6593d,0x3b032a62,0x3b04eb46,0x3aec88ee,0x3aaa3791,0x39c30ad8,0xba82c683,0xbac91880,0xbad4e39c,0xbad24d71,0xbace2756,0xba537dac,0x39cf6903,0x3a44d6b5,0x39dea9c0,0xb9b4a45c,0xba3f63e4,0xba4bf049,0xba1bcb15,0xb9e28836, +0xb9efbd24,0xba885cc5,0xbab2ef8b,0xbb01958a,0xbb29b758,0xbb2fb2fe,0xbac05777,0xbb1adb13,0xbb2f8de4,0xbb181ddd,0xbb0bc6f1,0xba35a788,0x398a8005,0x3a8d2583,0x3ace2836,0x3b13bd0a,0x3b43ef04,0x3b3ad089,0x3b2f884f,0x3b1fa5c0,0x3af5c1c9,0x3ab75c0f,0x3a7b263b,0x3a3a69e1,0x39bff177, +0xb93b212e,0x3a162ded,0x3a9195ce,0x3ad3cf16,0x3aec7db7,0x3b1548ef,0x3b3023a9,0x3b1505a8,0x3ae1ff50,0x3acfd3eb,0x3a455aa2,0x38e52ca5,0xba4e9131,0xba252a76,0xba1ade50,0xba1c0d2c,0xba8dd2dc,0x3b682033,0x3b6187f0,0x3b5c0c06,0x3b523cb7,0x3b3f8719,0x3b3ac5b6,0x3b344303,0x3b371108, +0x3b1e919d,0x3b01513c,0x3acb2538,0x3a971a92,0x3a582d1b,0x39e7a936,0x39f94cb4,0x3a01b5f2,0x3a00cff5,0x39e65bcd,0x39fb6776,0x39b06305,0x398f452d,0x3a8df509,0x3ad5bd9a,0x3b08fe32,0x3b213ce1,0x3b55593f,0x3b51623b,0x3b541868,0x3b52a770,0x3b4f5464,0x3b4ffc53,0x3b4d5776,0x3b48c9bc, +0x3b42ac45,0x3b4d4b0c,0x3b4e4314,0x3ac5a68b,0x3ac78c75,0x3ac7eb98,0x3accbc5f,0x3ad67df9,0x3accf2da,0x3ac3f61d,0x3ac0fcc7,0x3aaf33d3,0x3aa63287,0x3a996d68,0x3a90392c,0x3a83c130,0x3a5ef9c2,0x3a6a4a66,0x3a650328,0x3a647702,0x3a63d3b2,0x3a5de133,0x3a744562,0x3a587f46,0x3a554083, +0x3a0082ce,0x3abd91b8,0x3ab2368c,0x3a965ade,0x3a87eb50,0x3a898bc1,0x3a84f123,0x3a8a9a0e,0x3a8a7f05,0x3a8964da,0x3ab2afe3,0x3acfac97,0x3aa111bd,0x3ac068f7,0x3a9bf391,0xb94bd158,0xb7965b72,0x38e48816,0x37a62b0d,0x384a8ea2,0x38860ab1,0x3988413c,0x390ae90e,0xb9c77142,0xb9c85c19, +0xb994889c,0x3a03d40e,0xb8907977,0xb8ca9f9b,0xb8a52ebe,0x371dd521,0x387516e1,0x3976d40d,0x3745d137,0xb862f907,0xb92919eb,0xb90e0770,0xb8bd428b,0x398000a8,0xba083d1e,0xb9fc0367,0xb938beaf,0xb96f9731,0xb97eb22b,0xb9fd9a45,0xb916d0ce,0xb8ec75f3,0xba13225c,0xb88af98c,0xb8e5ed37, +0xb8bb2022,0xb819abb6,0xb97c5b05,0x38ed12f2,0xb92f28d2,0xb7eb240a,0x38cd42a6,0x3a7e7d30,0x3a50bf44,0xb9f1c51d,0xba3344ac,0xb9b1043b,0x3ac82fd7,0xb937ae49,0xba2ed3a5,0xba0acbbe,0xb8e29e49,0x39e1002e,0x3a954009,0x3a5dd580,0x3a243b0e,0x39bd9379,0x3973a1a2,0xb97b58b1,0x38af297f, +0xba866c41,0xba9aeae2,0xba45017c,0xba785727,0xba79c59f,0xbac994a6,0xb97d918e,0xb95cccc9,0xbac9822e,0xb92745f7,0xb9372b1f,0xba8d565e,0xba25de84,0x389265ad,0x3aacd228,0x3a214848,0x3a9366a8,0x3a84a310,0x3b1eeac1,0x3afd0d80,0xba0bcfdc,0xba975d13,0xba7b0c73,0x3b4ab9d5,0x39817129, +0x392e7e1f,0x386046d8,0x3a3a0756,0x3a92059b,0x3b03456b,0x3a904f3a,0x3a137d2a,0x39bc0f0c,0xb95cba22,0xba526ad4,0xb7118de5,0xbb233ffa,0xbb19c903,0xbafff86a,0xbb134adb,0xbb101d25,0xbb7bfa78,0xbafeb8dc,0xbad79d69,0xbb63927a,0xb93fb1fc,0x39673d28,0xbac119f5,0xb9d9a2a2,0xbaa6d284, +0x37d313ab,0xba4526b9,0xba0ae6c5,0xb7b06b83,0x3b6316fe,0x3b62a5b4,0xb9699175,0xbae10b0d,0xb91aeb2f,0x3baa714a,0x39b3066c,0xbb1d2c97,0xbb12f8a4,0xb9bdcdd9,0x3b0ec581,0x3b924cea,0x3b7dfedd,0x3b43047b,0x3b1aaa69,0x3a67246a,0xb99e328f,0xba763f29,0xbb310b1e,0xbadcbf5c,0xbaa2df6f, +0xb957543a,0xb924b755,0xb9102fcb,0xb9e146b9,0xba2e66fa,0xbb2d20e6,0xba315a04,0xb9ee7450,0xbb835433,0xbb1bbff9,0x3bc74109,0x3beafdd8,0x3c23b20f,0x3c2b689d,0x3c14a1d5,0x3b0c91b3,0xba7071e8,0x3ac7474e,0xbac41a85,0xbb47242c,0xbb5cf4f0,0x3ac4b28b,0x3bd7dce7,0x3c2b5cc5,0x3b699456, +0xbaee3646,0xbba8c4e9,0xbbfbb984,0xbc0145b0,0xbbd5158e,0xbbccffaf,0xbb9bc1ff,0xbb24fe23,0x3b171d61,0x3adad013,0xb7180393,0x39e25c9d,0x380c6058,0x39992ba4,0x3913745b,0x3a2167aa,0x3a37844a,0x3b085459,0x3b8ae133,0x3bb2b3d6,0x3bbb3c94,0xbb3756df,0xba065d51,0xbaf96d70,0xbb8f4fb8, +0xbbb091a6,0xbc1ca556,0xbbfda58f,0x39db482a,0x3aa150db,0x3b71c7b4,0x3b984ba5,0xbba58094,0xbc255fe1,0xbc08e53c,0xbb97fdee,0xb9986e53,0x3b6e6e18,0x3b87fcd0,0x3b364a99,0x39b577aa,0xba663b20,0xba64f697,0x3a175508,0xba0c5853,0xba21ecd6,0xb9206cc8,0xb90dab9e,0xb8d791a4,0xb901a436, +0xb8ff749c,0xb997a524,0xb94a9e25,0xbabab21f,0xba9dac2c,0x3ab7dbc8,0xbafc9319,0x3b38230b,0x3c1549e2,0x3a9ffb4f,0x3afd122a,0x3c0e83ba,0x3c1dc419,0x3c0c4fd1,0x3bf7eff2,0xbb002e13,0xbbc79741,0xbbc36f45,0x3b91ce9d,0x3c0cf18d,0x3bb4e368,0x3a45b9c5,0xbb0df88c,0xbb180ecd,0xbb38d3cb, +0xbacf7e02,0xb77959f6,0x3a0bb162,0x398fec11,0xba3ea552,0x3916dd88,0x398dc1f1,0x390c933f,0x38a5d8be,0x38caa757,0x38ab2720,0x38bba135,0x3921f4ae,0x38e79d4b,0x3a2e1474,0x39706548,0xbb8997a1,0xba3e83ea,0xbbdfa707,0x3bb29fd2,0xbbbb2370,0xbc1de780,0xbc4377be,0xbc16d82e,0xbaaa1a23, +0x3c3253c2,0x3be7b305,0x3b6baa63,0xbb18b2ca,0xbb1a6d26,0xbb4ee618,0xbb3aad16,0xbb47f657,0xbb0e7652,0xba09a4a1,0x3a9c0afa,0x3b256ba0,0x3b5db0be,0x3b48a660,0x3b15e64e,0x3a0b7907,0xb9b1adf9,0xb98e837c,0xb8aa292a,0xb8ef108b,0xb8ff6568,0xb8c52d80,0xb8d051a0,0xb8c57155,0xb91e9422, +0xb9347b3e,0xbb22b92e,0xbc4fa0b3,0xbc658440,0x3c4a24e3,0x3c16e31b,0x3b7dad61,0x3acbbb48,0x3ab5c6a5,0xb980fb91,0xbb47553a,0xbbaeee61,0xbbc08bf1,0xbba53e77,0xbb73ab7d,0xbb495cf3,0xbaf7a957,0x39656523,0x3a5a2aef,0x3ab433a1,0x3ad2da43,0x3acbade4,0x3b0068ae,0x3b2ebc57,0x3b6bfa3b, +0x3b7a998d,0x3b2c4907,0x3aa0c843,0x39aae110,0x38efa0d7,0x396db2c7,0x395f495e,0x393bba56,0x38f5c433,0x393b97bb,0x393d28ec,0xb8c22c1f,0x3b04884a,0x3bac3ef1,0x3c4a6fa0,0xbade89fe,0xb9cfaa4f,0x39d91593,0xba104069,0xbadf74ea,0xbb3bc286,0xbb2acdaf,0xbb122a71,0xba0a3d2c,0xb823d59f, +0xb978ca3d,0x37d07b9d,0x383cce7c,0xb8a6cd49,0xb96a0388,0xba36b418,0xbad05707,0xbaf00885,0xbae7cfc1,0xbacacbe2,0xbaa81e78,0xba175a88,0x3a08415f,0x3a059b85,0x3934a270,0xb9df25de,0xba0cd895,0xb9efb265,0xb9c4f60e,0xb9652481,0xb98d697f,0xba47af0e,0xba9b1ab2,0xbae01e1c,0xbb103ff1, +0xbb0bf8f6,0xbb1ebfcc,0xbb5d62a7,0xbb663d38,0xbb50466f,0xbb4501af,0xbaefa1a4,0xba8d3fd1,0xb9f38a27,0x3996a0fa,0x3aa230fd,0x3b119d64,0x3b23c7d1,0x3b317fe7,0x3b3c6488,0x3b13019b,0x3adf1dd8,0x3a9d248e,0x3a632248,0x39e51fcf,0xb90c76d3,0x3a259148,0x3a99169b,0x3adea5a0,0x3ad18de6, +0x3aefa544,0x3adea0f9,0x3abe5f45,0x3a4867f2,0x3a57602d,0x3885f052,0xb9af2832,0xba949592,0xba9df8fe,0xbab47c27,0xbac4832c,0xbb07f259,0x3b376939,0x3b06d8f1,0x3b0956df,0x3b06a3d3,0x3afad504,0x3b01cae0,0x3b056a49,0x3b0d64f1,0x3b041062,0x3ae1a930,0x3abbe819,0x3a9bd33a,0x3a832b39, +0x3a59dfbd,0x3a5cf8f8,0x3a6d3b57,0x3a728844,0x3a6f4842,0x3a802be4,0x3a5fab44,0x3a8c9bbd,0x3acfa55b,0x3b05ba4f,0x3b24d8d8,0x3b41e1b4,0x3b6a25af,0x3b5d7703,0x3b5472a1,0x3b4eccde,0x3b3a766e,0x3b2e187a,0x3b296f07,0x3b1f96e2,0x3b1c4782,0x3b206255,0x3b0e7aa7,0x3ab9227a,0x3a9bb54b, +0x3ab1c6eb,0x3ab7b0cb,0x3ac513fa,0x3abf9ea0,0x3abae9b7,0x3abb9754,0x3ab3a40d,0x3ab532de,0x3ab5137d,0x3ab65d56,0x3ab312a6,0x3aa9b98d,0x3aabdc68,0x3aa8593d,0x3aa69a93,0x3aa44b9e,0x3aa20ffa,0x3aa389d8,0x3aa535ac,0x3ab042c9,0x3ab370b7,0x3adb1b5a,0x3ae21361,0x3afa4403,0x3ae4e69f, +0x3ae0c1bd,0x3ad2083a,0x3ad4bba0,0x3acecc00,0x3ac1cdfa,0x3abe60cf,0x3ab7f65d,0x3ad5c760,0x3ac8871f,0x3ac1b39e,0xb9907e8f,0xb8f12fa4,0x38c1b5a9,0xb7b8f69c,0x377275eb,0xb80b74ea,0x3962afa9,0x38de44a6,0xb9b2af2a,0xb9d82cce,0xb9b7110b,0x39b0df57,0xb9271e0e,0xb9490616,0xb93fadcf, +0xb93c1c06,0xb90db338,0x38ff1007,0xb8ccd4e6,0xb92ad96b,0xb9890bd1,0xb9905b96,0xb99736bf,0xb8a0a0d4,0xba233662,0xba2f72c6,0xb9c83b62,0xba0d2bed,0xba04ebe0,0xba1c0b0b,0xb9b8988c,0xb9bcaa2f,0xba3f82d0,0xb9603900,0xb93ff97c,0xb9db23e1,0xb96d74bc,0xb9c3f3d7,0x392279e6,0xb8c2a1a1, +0xb7a02bd9,0xb8a42163,0x3a6cebc4,0x3a563ee9,0xb9883da7,0xba2de7eb,0xb9e33fb1,0x3a9c36bb,0xb98495ea,0xba4d990e,0xba519666,0xba3a33ca,0xb9614efd,0x3a4679cc,0x3a03a114,0x39b5edcc,0x385c2df6,0xb8ddd3ef,0xb9de53d6,0x387106f6,0xbaa68039,0xbabc0828,0xba155b3d,0xbaa5dd5d,0xbaad3843, +0xbad0c0de,0xb9c469cf,0xb944e66d,0xbaa7d407,0xb956c13f,0xb994143b,0xba87567a,0xba109448,0x38e7a080,0x3aac2273,0x3a467c23,0x3a9e9688,0x3a5a4e1d,0x3b2140ce,0x3b0833a2,0x35fbc7d6,0xba808012,0xba83aaa3,0x3b200a5b,0x38e2e2ca,0xb6a25387,0xb976b65c,0xb8f855b8,0x397b3872,0x3ad65321, +0x3a3f1aa0,0x39949f55,0xb8c068d0,0xb9e4b1af,0xba81a791,0x385d78a4,0xbb332821,0xbb25a105,0xbab29784,0xbb0c719a,0xbaf2e599,0xbb344b7b,0xbab141c7,0xbaaabb79,0xbb284359,0xb95b5a80,0x387016f3,0xbabb4dba,0xb9df0ceb,0xba7b0f2e,0x394c763f,0xb9c5c94f,0xb9f4771d,0xba0953a7,0x3b569776, +0x3b6f5d14,0x3a1ccaa9,0xbaba8b21,0xb9c58ab1,0x3b862da9,0x3976ee74,0xbb250b23,0xbb43e3a5,0xbb14a7d3,0x390e059b,0x3b586ccd,0x3b3d4c5b,0x3b0bd289,0x3ab5a0c7,0x397560c7,0xba46bbef,0xba602333,0xbb2e5107,0xbab49f40,0xb9ebc00e,0xb863b102,0x394f4540,0x39eceb38,0xb89cea75,0xb8a6a07c, +0xbab20be7,0xb9c1a276,0xb99412d1,0xbb55a299,0xbb03ed3a,0x3bb82f21,0x3bd83eca,0x3c21f6ba,0x3c33f6f0,0x3c2c4586,0x3b45c3fe,0xb996daea,0x3b0f416d,0xba82a9e5,0xbb2a9d44,0xbb487118,0x3aae435e,0x3bdd1776,0x3c39d799,0x3bb5615e,0x39a78462,0xbb561c83,0xbbd1d9c6,0xbbe0fff7,0xbbb5a595, +0xbbb198db,0xbb6ae62a,0xba893b6e,0x3b0ec5ae,0x3a975781,0xb83eabc5,0x3974b409,0xb8f05370,0xb8791e2d,0xb7415593,0x398954d0,0x394d1a92,0x3a8673d6,0x3b43643a,0x3b9167d9,0x3ba1def4,0xbb120f17,0x3a70f181,0xb920bc5f,0xbb35d3c2,0xbb8a1aa9,0xbc0e6ffe,0xbbfbc828,0x371b1a7c,0x3a2b51d7, +0x3b6be88d,0x3bc8768e,0xbb5b62a1,0xbc13ba16,0xbc0afcec,0xbb9ee100,0xba20cde4,0x3b4d3d1d,0x3b5aacf1,0x3af6b9f8,0xba24fc2e,0xbab5b85c,0xba816405,0x39c7ae85,0xba3a77d7,0xb9e3c235,0xb8989f36,0xb89a35e9,0x36fbf349,0x38069107,0xb789fd02,0xb90a4836,0xb87b2866,0xba1033e9,0xba0d78f4, +0x3a3142f6,0xbad23c88,0x3ba65b3c,0x3c2ff4ca,0x3b7f0069,0x3b3c17b6,0x3bbb13e3,0x3c1d0113,0x3c1aa5e6,0x3c0225d1,0x3a024e6f,0xbb8bed8b,0xbbdef91d,0x3b6abf31,0x3c0f1b3d,0x3c0587ff,0x3b1dee4f,0xba853841,0xbaa437a7,0xbaf85bc8,0xba29c423,0x3a8cbe71,0x3aa375c1,0x3a3f873a,0xb998c0e3, +0x39c23e78,0x39691d3f,0x388a73e5,0x38440854,0x3799c2aa,0xb6ddf425,0x374305d2,0x38ab3dcb,0x36ad4728,0x39c896d6,0x3919cc0b,0xbb3e240d,0x3a409b41,0xbbcdf604,0xbaf40897,0xbc1ba75e,0xbc35e838,0xbc4fe032,0xbc436c00,0xbb9a8113,0x3c07eaae,0x3c04e830,0x3bbed12b,0xbaf2ea07,0xbaceea18, +0xbb42debc,0xbb492ae4,0xbb58e3f4,0xbb14f482,0xba4b8914,0x3a475fda,0x3b01170a,0x3b3b2413,0x3b27e9f9,0x3ad0508c,0xb93fb92c,0xb9ccb1b3,0xb925b59a,0xb850df4b,0xb89fd061,0xb81bc3a9,0xb763e96e,0xb76b315b,0xb855b5c9,0xb898f090,0xb804166a,0xbb06fe75,0xbc35c55f,0xbc35b3f0,0x3c60bee2, +0x3c329328,0x3b5c2698,0xb9b9a23c,0x3931315b,0xba85845d,0xbb3ab068,0xbb968670,0xbbb172d5,0xbb99c335,0xbb629ead,0xbb39e526,0xbad45094,0x3a0d30a8,0x3aa38d51,0x3aec932d,0x3b0b12c3,0x3b156316,0x3b398a08,0x3b6183bf,0x3b857b56,0x3b7e84be,0x3b0d0425,0x3a5dd663,0x38a6fd68,0x38ef054e, +0x39074887,0x38b2ceda,0x3815f033,0x37afae42,0x381b94dc,0x39246e79,0xb788ce21,0x3b10e5aa,0x3b9d6179,0x3c4f2885,0xba5e1552,0x3a15bf6d,0x3a81042b,0x3981cd9e,0xba5f8870,0xbafed036,0xbb019e8b,0xbb0557d8,0xba42fa67,0xba09c5c4,0xba6472fc,0xba3ad257,0xba5a91d3,0xba903b93,0xba83a5aa, +0xba9151c3,0xbac831b8,0xbad078f5,0xbab2a61b,0xbaa1d006,0xba80b08d,0xb92550a5,0x3a1dd3ac,0x39c20b38,0x378facb3,0xb9b560b9,0xb989f115,0xb937f4ba,0xb899f193,0xb681c869,0xb74f755c,0xb99da5b8,0xba4c469d,0xba8f7a9d,0xbac661af,0xba93df3f,0xbb496f96,0xbb749105,0xbb6afc0d,0xbb5a1619, +0xbb4c3e60,0xbb0ceb8d,0xbaca80e4,0xba8f8fb6,0xb970ffab,0x3a543fca,0x3af67071,0x3b213303,0x3b431910,0x3b630c72,0x3b374679,0x3b0e5ab1,0x3ad067eb,0x3aa0533e,0x3a629e74,0x398ea244,0x3a3c8fdc,0x3a966609,0x3acbe019,0x3a9fca9f,0x3a94e488,0x3a4d57cf,0x3a1067be,0x384fa2ee,0x38b70be0, +0xb9fb5d52,0xba5c60bc,0xbac1af22,0xbae3c8f6,0xbb095596,0xbb1bd7be,0xbb385bfb,0x3ac0f77f,0x3a5b3029,0x3a80a99e,0x3a8c1f37,0x3a8ed258,0x3aa5c368,0x3abf0ae2,0x3adb8d89,0x3ae4160d,0x3ad50eae,0x3ac3ff43,0x3ab5ecf0,0x3aac49c2,0x3aad19b8,0x3aab3820,0x3ab8cadd,0x3abf0efc,0x3ac2a904, +0x3acd17fa,0x3ac249f5,0x3abd382f,0x3b03cc15,0x3b1c3f5b,0x3b34e166,0x3b4c8955,0x3b6b1307,0x3b57b312,0x3b45ce8f,0x3b3636a9,0x3b1dc25c,0x3b0c48c2,0x3b002c49,0x3ae73a2c,0x3ad606dd,0x3ad2d29a,0x3aa8aa7d,0x3aad3a29,0x3a9eb537,0x3ab6a5ee,0x3ac15b59,0x3ad0ee92,0x3ad17116,0x3ad1a2ee, +0x3ad57ebd,0x3ad508e1,0x3add93ff,0x3ae66741,0x3af0674c,0x3af5635d,0x3af5b1be,0x3af6a8a4,0x3af3c07c,0x3af1bfe5,0x3aeea24a,0x3aea5dbc,0x3af24f73,0x3adc179b,0x3ad58660,0x3ac28480,0x3b00b3e8,0x3af606c0,0x3b014e63,0x3aeb5177,0x3ae44897,0x3ad46056,0x3acf9a7b,0x3ac3691a,0x3ab01d1d, +0x3ab63bc0,0x3abaeff7,0x3aad5a94,0x3aae3455,0x3b04bff0,0xb9f03bbd,0xb973eaca,0xb8dca0c8,0xb92c4a61,0xb91614ed,0xb981b803,0x382070c5,0xb845c67a,0xb9d52e47,0xba088cd8,0xb9fc2c5c,0x38965d34,0xb99634fc,0xb9a9277c,0xb9bc89ba,0xb9ed391e,0xb9dffbdf,0xb8e85ffc,0xb9a2ffcb,0xb9bc13bb, +0xba025b23,0xb9da663d,0xb9c8cfb2,0xb899afc1,0xba4e0220,0xba4c9f4e,0xb992787a,0xba0f0463,0xba02ccd4,0xb9f512f2,0xb9941fa3,0xb99ca1f7,0xba1ab943,0xb99b7afc,0xb9bdf821,0xb9d545e9,0xb99aedec,0xb99a9aa0,0x362328cc,0xb9453b74,0xb94114bd,0xb9e11505,0x3a1e1c99,0x3a23038f,0xb94f9090, +0xba37d664,0xba130560,0x3a415285,0xb99022e9,0xba5860eb,0xba8ff3f7,0xbab49891,0xba7f1bd3,0x395aad8c,0x380e8044,0xb81d84e5,0xb9bc2f50,0xb99eeab0,0xba21c57d,0xb7de1fda,0xbabc8332,0xbacca5c1,0xb9ee0159,0xbad2dd08,0xbadead98,0xbaca2562,0xba0fea6b,0xb993a0bd,0xba80254b,0xb99ba17c, +0xb9cbf18e,0xba7fb41e,0xba218a47,0x3899e9a3,0x3a92fd3c,0x3a23ddb1,0x3a8a3f7a,0x39d3f5eb,0x3b0c5896,0x3afaa158,0x39bdd765,0xba543b79,0xba78c0bf,0x3ae017f3,0x396b1d7d,0x388725cf,0xb9ed4581,0xba8096ff,0xba46eb91,0x3a89893e,0x39646aa4,0xb8e8b353,0xba1f68d8,0xba3303fc,0xba92e38b, +0x38967c9f,0xbb37871d,0xbb240cac,0xba5ee5cc,0xbaf70d11,0xbac2a825,0xbae0ee58,0xba60cc21,0xba6bcf48,0xbadb7b53,0xb9741868,0xb8eb3c64,0xbaa8bf09,0xba0c2201,0xba3528fc,0x393cbba1,0xb9a33d1e,0xba2de9ab,0xbaa819b1,0x3b29d022,0x3b5cc7c9,0x3a9ce9a0,0xba8b0ac0,0xba0482e7,0x3b3998d9, +0x39e410fb,0xbb0f531b,0xbb6897a7,0xbb88dbe3,0xbb097b11,0x3aedc519,0x3adef617,0x3a9af6f0,0x39b2b4b5,0xb9c55e19,0xba8ecffb,0xba3eb154,0xbb1a03c8,0xba548553,0x37110773,0x392fe3cb,0x3a05d024,0x39eb6243,0x395bf1e4,0x390d7088,0xb9cb562a,0xb94a042a,0xb941c0dc,0xbb21f24c,0xbae29ff4, +0x3ba07dfd,0x3ba5ca3a,0x3c0dbe97,0x3c291faa,0x3c2e49d1,0x3b4d4328,0xb8dc35b0,0x3b17215a,0xba1fc956,0xbaf10b11,0xbae9b2b4,0x3af5ffc9,0x3bf04fdf,0x3c487d7d,0x3bfd67d5,0x3b3107e6,0xbabb9668,0xbba71020,0xbbbfe989,0xbb9864e7,0xbb92b2bc,0xbb1b17b5,0x38ebb022,0x3add46f1,0x3a1c93e0, +0xb87bd408,0x36663668,0xb9641b15,0xb9214b21,0xb8f51d3d,0x383433f1,0x388ad0fd,0x39906a09,0x3ae90f0a,0x3b4783eb,0x3b7d956c,0xbaa35d55,0x3acf8ef3,0xb91c3427,0xbb2f5bcd,0xbb8d4394,0xbc0c4cb7,0xbc0561e7,0xbaaa19ec,0xb8ceb2c9,0x3b62c736,0x3bedfc22,0xbadaaa72,0xbc000be7,0xbc0f0a2c, +0xbbafdaef,0xbaa19b36,0x3b1723d1,0x3b2233d9,0x3a8f092a,0xbaab5006,0xbab82856,0xba46d076,0x3934eaee,0xba25b771,0xb98f6f57,0xb7a09592,0x37ab6596,0x38ad5b55,0x38ab6cc9,0x38702cf0,0xb7ed1077,0x372714db,0xb9987e20,0xb9081752,0x39bda866,0xba95bd7c,0x3bdbee57,0x3c2be074,0x3b906c89, +0x3b10e616,0x3b0ac707,0x3c0f1456,0x3c1ddd19,0x3bf1f3e9,0x3b15c131,0xbb483c33,0xbc033189,0x3ad235b3,0x3bf5be46,0x3c1aeeed,0x3b612df9,0xb98cac54,0xba534c32,0xbaad641d,0xb9134656,0x3ae03a3c,0x3ad14094,0x3a6ad374,0x38964318,0x39bd6860,0x38ea399c,0x37f8b785,0xb74b1b9e,0xb824f23d, +0xb84405cd,0xb830a4e7,0x37536af3,0xb7ae03a5,0x392f889c,0x39d621ea,0xbb0ca908,0x3ab89e48,0xbbdbcc2f,0xbc3269ec,0xbc43f307,0xbc2e7ad3,0xbc3eccd1,0xbc4e449c,0xbbeebf35,0x3b8573fa,0x3c035b3f,0x3beb7c76,0xbac2a353,0xbacda0a1,0xbb6eff53,0xbb819b5b,0xbb850a52,0xbb395cdb,0xbac6e5e3, +0xb8de49a1,0x3a70f303,0x3afbc7cb,0x3afcb0cb,0x3a4e21cf,0xba1dee30,0xb98144d8,0xb8a6e6a2,0xb73ffa5d,0xb700a441,0x38001f1a,0x38279f40,0x382e2cc4,0x38127761,0xb81c78bc,0x388c8214,0xba9fe871,0xbc0c4f68,0xbbfac31b,0x3c59eb31,0x3c35c055,0x3b1fd6ee,0xbb1299e7,0xba95d1f3,0xbaf3a6b1, +0xbb26f5fa,0xbb6e39bf,0xbb9dbdfb,0xbb961917,0xbb754f4a,0xbb4f7aa9,0xbaff492d,0x39173291,0x3a6807c2,0x3ac85eaa,0x3b07b9c0,0x3b2aeb8c,0x3b5b17e8,0x3b80b0a6,0x3b91892c,0x3b6e401d,0x3ad6e1f3,0x39fabb2a,0xb86a9a41,0x389cf21b,0x365393e3,0xb7fd5c97,0xb8795e4b,0xb89e4c44,0xb8b47e6e, +0x386b38d8,0xb933a882,0x3b02eef9,0x3b830fb5,0x3c3411b5,0xb60c4739,0x3aad5806,0x3ac97bac,0x3a9b8206,0x399a8092,0xba4fb5fc,0xbaa06e53,0xbaec1197,0xba99e187,0xba9d32c6,0xbacf9887,0xbad3cd7a,0xbafc7380,0xbb19e20a,0xbb08585a,0xbaeda4f8,0xbae1746a,0xbabbe40b,0xba88bdc4,0xba4cf9e5, +0xb9c9b7f0,0x39b06148,0x3a55dfca,0x39a21ee4,0xb7ccc42b,0xb906e9a5,0xb7bd5a5e,0x38bec29a,0x38ece687,0x39605f02,0x39510478,0x38e9dfbf,0xb97e960e,0xb9c815b6,0xba43f7a9,0xb919fb22,0xbb53a46f,0xbb69eaec,0xbb52750d,0xbb44ea76,0xbb3101e1,0xbb07fc50,0xbae15acc,0xbac73d23,0xba4dd5e3, +0x38688705,0x3a73218e,0x3adf9ee7,0x3b1fb80d,0x3b4e31cd,0x3b2ad9f8,0x3b072560,0x3ac8a862,0x3aa62651,0x3a85bf1f,0x3a2a7c10,0x3a694447,0x3a8fd3ed,0x3aa6e44f,0x3a54766e,0x3a198694,0x38d77774,0xb7f09ac4,0xb9e51285,0xb9b74eb4,0xba4a1764,0xba85cbee,0xbacbad74,0xbb003982,0xbb20005f, +0xbb373819,0xbb4a2820,0x3a046e3a,0xb9226823,0x38e3ae09,0x39b9127e,0x3a0d6174,0x3a55ade0,0x3a96af4b,0x3ac2b4e7,0x3ae14df7,0x3aeb31f5,0x3aee85d5,0x3af10401,0x3af35cf4,0x3b03dbb0,0x3afe161e,0x3b04d1ef,0x3b06991a,0x3b088fac,0x3b0afd05,0x3b06e9fa,0x3b01ce1a,0x3b1c09a6,0x3b2b826d, +0x3b389413,0x3b465901,0x3b522577,0x3b3a0ee3,0x3b238280,0x3b11c09a,0x3aea85a0,0x3ac10938,0x3aad3cca,0x3a928e68,0x3a843d47,0x3a6b8dea,0x3a03a0eb,0x3abd7271,0x3aa812fb,0x3ac67609,0x3ad35f11,0x3ae44773,0x3aec918c,0x3af245d9,0x3afa068e,0x3aff440f,0x3b0640be,0x3b0e1694,0x3b161dde, +0x3b1bef0e,0x3b20728b,0x3b1f6207,0x3b1dd1da,0x3b1c30e4,0x3b19a80b,0x3b16f43e,0x3b18d858,0x3b0f0735,0x3b09e476,0x3b009eb4,0x3b16e9fe,0x3b120d83,0x3b1b94f6,0x3b11bcd8,0x3b0d29e4,0x3b03e288,0x3b0033ce,0x3af086c2,0x3ad69ae1,0x3ad19391,0x3acdce7e,0x3abe6629,0x3abf3b30,0x3b276dcc, +0xba2f6a59,0xb9de0d3e,0xb9a2ed5b,0xb9b5d3f7,0xb9af6ee7,0xba04f97c,0xb9265bfe,0xb9546db5,0xb9eea3d6,0xba272632,0xba26ba76,0xb987894e,0xb9e40af0,0xb9f818ea,0xba16fb5e,0xba450da1,0xba43b722,0xb9cfc7e4,0xba0f84f4,0xba174cc2,0xba416ce8,0xba2215cf,0xba16ba93,0xb97e27b7,0xba7fb1d6, +0xba7b1ddd,0xb9b7927c,0xba3d971d,0xba2f9d57,0xba06516d,0xb9d7b918,0xb9d99614,0xba1c4795,0xb9f7b9fa,0xba15d612,0xba16bc75,0xba008d7f,0xb9eb9d2a,0xb9570308,0xb9abf42f,0xb9c6fd6e,0xba545465,0x39a52235,0x39eb6ab5,0xb8a59b9e,0xba3df7a6,0xba3b3b00,0x392d0ba9,0xb9a383f5,0xba5df063, +0xbab8bab2,0xbb040cf5,0xbae17212,0xb9d750fc,0xb9e5215c,0xb9d655cd,0xba471ebf,0xba193acb,0xba5c2f40,0xb93e1046,0xbad2b844,0xbae15c6b,0xba0058a0,0xbafc2874,0xbb05cfb3,0xbac9382b,0xba34d5b5,0xb9d0214b,0xba43d430,0xb9fbabfb,0xba23ae11,0xba8754c1,0xba401d56,0xb8b8e437,0x3a5f1392, +0x3a05e38e,0x3a5e71ed,0xb9018775,0x3af24627,0x3af08554,0x3a65f26e,0xba1aecd3,0xba6e2adc,0x3a520cd1,0x39bdc952,0x3924346a,0xba40300d,0xbaf232c0,0xbae91c27,0x399e89c0,0xb9a67bca,0xb9fcfecc,0xba929837,0xba804cb0,0xbaa63204,0xb8800c29,0xbb334358,0xbb1766fb,0xb9e290d2,0xbac40cc0, +0xba6b271a,0xba52f411,0xb9e02b3e,0xba0c500a,0xba5a9a3e,0xb9a0fb02,0xb9c6279f,0xbaa5ddcc,0xba38078d,0xba28ce0d,0x38c1a05f,0xb952e28a,0xba522b24,0xbb06a7c4,0x3afc80b3,0x3b4c3e76,0x3aff700c,0xba2040d0,0xba2cbca2,0x3ab0cacd,0x3a362c7e,0xbad7045f,0xbb81bcdd,0xbbbfbc09,0xbb8a2137, +0x393ba460,0x3a0ef652,0x39b0e58d,0xba1a5902,0xba74c7f0,0xbaabbecc,0xba28f1d5,0xbaebdc56,0xb967632e,0x39606463,0x399af3b9,0x39dd1fc0,0x3998254e,0x39250852,0x392dd775,0x37b1202f,0xb861b52c,0xb9403fcb,0xbaf31e81,0xbabee6af,0x3b7af82d,0x3b812d39,0x3bfd818a,0x3c1e4d8c,0x3c323681, +0x3b850a66,0x3a872e7e,0x3b437fd7,0xb870fcee,0xba9ddabc,0xba42d99b,0x3b0868a7,0x3bed81fe,0x3c4589d0,0x3c1624f1,0x3b962724,0xb8fbfa7e,0xbb83b0ea,0xbba3d811,0xbb82aea5,0xbb6c9dc5,0xbab34f38,0x3a6176cc,0x3a7fe91a,0x395b9ae5,0xb8c852e2,0xb8dedfc4,0xb9431726,0xb910b634,0xb8928f48, +0xb890a376,0x37e0f88e,0xb85c41ab,0x3a46dc8a,0x3aebc829,0x3b2cbd0d,0xba531a22,0x3b0cf2c6,0x3aa621c4,0xba7d4e1c,0xbb333b0e,0xbbedb7e7,0xbc003f4a,0xbb1f318e,0xba60563c,0x3b431c61,0x3befa112,0xba072b97,0xbbdb16d2,0xbc113f93,0xbbc32197,0xbb00d0ce,0x3abdaaa8,0x3ae85783,0x3a23b5f4, +0xbad31a67,0xba9b682e,0xb9f96c9b,0xb809bf46,0xb9fdf93c,0xb8c1f8a0,0x3811b6b7,0x3876d916,0x38c044b4,0x388e1716,0x388029c9,0xb64118d5,0x38b8a295,0xb9226111,0xb89373e0,0x3974c9fd,0xba0a927f,0x3bfe6680,0x3c3324b0,0x3bcec4c3,0x3b2ec162,0xb995f897,0x3c09d450,0x3c2b46cc,0x3bf9d103, +0x3b8ce9cb,0xbae1ce38,0xbc0fe6c9,0xb9afded2,0x3bc37991,0x3c25121b,0x3b95b446,0x3a665341,0xb928fbe6,0xba11abec,0x39c74b6e,0x3b03162e,0x3ac61fda,0x3a44fdf6,0x39473398,0x39641042,0x386556e4,0xb79f284e,0xb821c87b,0xb85f79c9,0xb86cff8d,0xb810b955,0xb84ad755,0x371d9575,0xb8d9b4b3, +0x3a3de6bc,0xbaf44f08,0x3ae20a9c,0xbbde8b7b,0xbc8ea502,0xbc42bec8,0xbc0579bd,0xbc1fd022,0xbc374e61,0xbc0547c4,0xb63dd46f,0x3bff2786,0x3c0e0d30,0x38bd7532,0xba51306f,0xbb6e49bf,0xbb886bd3,0xbb901d05,0xbb540247,0xbb0a9f11,0xba6f96d7,0xb91b35a3,0x3a58416f,0x3a83dc34,0x36abee2a, +0xba39b02a,0xb855a68b,0xb7ddea64,0x37b05a7b,0x380a4a04,0x388011ae,0x385f3496,0x389b33f8,0x38188221,0x38a97ca0,0xb7b4db75,0xb954103b,0xbbb9cc02,0xbb8c8ac6,0x3c416778,0x3c2e0f7f,0x3ace9aeb,0xbb637343,0xbb1aa783,0xbb2e1760,0xbb1bd649,0xbb2d1f0e,0xbb873940,0xbb8b9e02,0xbb66164b, +0xbb388af8,0xbad04af6,0x3952b6ed,0x3a6ad7fe,0x3ac6a8fc,0x3b10b21d,0x3b39703b,0x3b68831d,0x3b842568,0x3b8bf54e,0x3b425d69,0x3a8698f3,0x38e73b32,0xb895ac24,0x374980cc,0xb8a2daf3,0xb8a9d13c,0xb8f0a45a,0xb8c6b2d3,0xb939b0ed,0x37c362b9,0xb9cb0860,0x3ab18eb0,0x3b5b257e,0x3c0e08b5, +0x3a83c20c,0x3b182a26,0x3b14b48d,0x3b13c8c4,0x3abcecf4,0x39710802,0xba3cab24,0xbae197ce,0xbad79c08,0xbae83281,0xbb079f1d,0xbb0a474e,0xbb21e0a2,0xbb468c3b,0xbb27f654,0xbb05d28c,0xbad44953,0xba9f01d2,0xba3eb341,0xb9df9c9b,0x38fb560d,0x3a3a2e84,0x3a5ebf7c,0x398436e6,0xb74da69d, +0x3888bf3c,0x3909a815,0x3957d4d5,0x395674b3,0x398dfc4d,0x3998d9e6,0x399ffea7,0x39046d03,0x398ec4c3,0x37c6d81c,0x3a4f3e81,0xbb40c33a,0xbb4802b5,0xbb2c0419,0xbb2627f6,0xbb123b02,0xbaec4ff2,0xbacb6fb2,0xbac26d13,0xba657587,0xb9820260,0x39de2fe8,0x3aa3d293,0x3b06e662,0x3b3ba0c6, +0x3b2091b1,0x3b028796,0x3acc016c,0x3ab779dc,0x3aaa97a6,0x3a8b43fd,0x3a73a4fd,0x3a6f25f0,0x3a5edb61,0x39c265d3,0x38b823b2,0xb9aa13b7,0xb9cb41a2,0xba1e2f57,0xba013734,0xba44c962,0xba791267,0xbaab11eb,0xbae7bc88,0xbb182e6a,0xbb2fec39,0xbb39bf29,0xb9c9161e,0xba89f76f,0xba3031ba, +0xb98f4164,0x386f1f46,0x39cc8a15,0x3a523214,0x3aa075df,0x3ace1675,0x3aed1901,0x3b019513,0x3b0a3aee,0x3b1113a7,0x3b22a98f,0x3b1baab3,0x3b20ec42,0x3b21b6be,0x3b228c11,0x3b2232f7,0x3b2056eb,0x3b18ed20,0x3b252dd2,0x3b271526,0x3b26b735,0x3b2698bd,0x3b1f5f72,0x3b057aad,0x3ad7f1c4, +0x3aae849e,0x3a725abd,0x3a1e318e,0x39fa61f1,0x3998a0d2,0x3981e8e3,0x38cbce83,0xb9b49e5d,0x3ac01b9b,0x3a99de9f,0x3abe9932,0x3acc1c84,0x3addf216,0x3aed5a2c,0x3af88d43,0x3b01bc44,0x3b0715e5,0x3b0f823d,0x3b19afd8,0x3b244f28,0x3b2d3309,0x3b36010d,0x3b330711,0x3b30c5a0,0x3b2e4901, +0x3b2b43fe,0x3b281115,0x3b27885e,0x3b22e361,0x3b1e755d,0x3b1aa4a5,0x3b204eaa,0x3b1f0bb7,0x3b2bd874,0x3b23fd07,0x3b1eb050,0x3b15e825,0x3b0fefac,0x3b06dd62,0x3af021f7,0x3adcddef,0x3acaef74,0x3acf4f21,0x3ac6c86a,0x3b3543b2,0xba5d6937,0xba1b51c1,0xb9ea2f66,0xb9ec3107,0xb9e85042, +0xba3135cb,0xb9ac0ec5,0xb9b9610b,0xba02e4c3,0xba472153,0xba5255ba,0xba22558a,0xba172413,0xba1d884c,0xba497d30,0xba8308e1,0xba84f1c1,0xba2fc950,0xba457ecf,0xba48bff0,0xba74c469,0xba599ea0,0xba4f3dae,0xb9efadab,0xba955631,0xba90ce49,0xb9e43153,0xba6548dc,0xba5faa78,0xba21a004, +0xba10c2f8,0xba09e2ca,0xba19253a,0xba2c594f,0xba4785b2,0xba459f7c,0xba31ed5a,0xba179d5c,0xb99d38e6,0xb9a38acf,0xb9da0f06,0xba84fc31,0x3813b1e9,0x395bb15b,0xb7b3a240,0xba5cec9b,0xba7e5382,0xba0bfed7,0xb9cc9aef,0xba5d4df9,0xbadaded1,0xbb242a3c,0xbb194563,0xba87d368,0xba6618aa, +0xba42ce02,0xba91e0a7,0xba6137e9,0xba8550bd,0xb9b45f13,0xbadb78e8,0xbaed98a9,0xba1cd020,0xbb0b3482,0xbb0c8968,0xbaae7e34,0xba3e3598,0xb9e9f111,0xb9faf954,0xba1f53de,0xba4f4f90,0xba85fc83,0xba516b5f,0xb8ef65d6,0x3a428488,0x3a317c21,0x3a6f0bc4,0xb9b52592,0x3ac9fe32,0x3ad00719, +0x3aa2ca5f,0xba1bcd99,0xba91686a,0xb9ddca56,0x39a8a0f3,0x3939d553,0xba896d9c,0xbb279bb5,0xbb2d3856,0xba07df86,0xba5a9a0c,0xba584de5,0xbad01e05,0xbaa47635,0xbab43494,0xb98723ee,0xbb251a8e,0xbaf9e6e5,0xb916b654,0xba6726fb,0xb9ba6fae,0xb99a6b88,0xb8f1c8a8,0xb980dbc6,0xb95d19fe, +0xb9a6ef51,0xba1243d2,0xba93de9e,0xba32dd6d,0xb9f3d9e3,0x396449dd,0x3967d334,0xba15402b,0xbb1ab54a,0x3a9f9ed5,0x3b281eec,0x3b1d590b,0xba14c79b,0xbaa62594,0xba1aef04,0x3a2d5a4b,0xba972349,0xbb8c72f1,0xbbe99325,0xbbc56b01,0xbace2dc6,0xba2146b8,0xb9f35a0d,0xbabb04fa,0xbab153d9, +0xbab67d6d,0xba1e066f,0xba910cda,0x397a87d4,0x394c2ffb,0x398a3fa7,0x399306be,0x3915d3c7,0x38cde4f9,0x38999afc,0x3890e61d,0x3854e47f,0xb91495e5,0xbaa71b20,0xba902d4b,0x3b5bb28a,0x3b5ede58,0x3be450fa,0x3c14f6ca,0x3c363ec4,0x3ba06efb,0x3b026e49,0x3b5ae287,0x39cc1d81,0xba2d0067, +0xb8f29237,0x3aeca62f,0x3bd46b96,0x3c3659e9,0x3c26b047,0x3bcf5361,0x3a8cdd76,0xbb3c3f2d,0xbb87bb73,0xbb654423,0xbb3c78ac,0xba20dbab,0x3a8b43ba,0x39c70856,0x38725251,0xb9178c99,0xb8d4a622,0xb91934d9,0xb89bcc98,0xb85ef039,0xb81fa69b,0xb8051b2c,0xb82cadd1,0x39626409,0x3a7b530e, +0x3af6cafc,0x39bb6b56,0x3b391a71,0x3afe7a60,0x393090c8,0xbaf70213,0xbbcaa73b,0xbbed7f80,0xbb449717,0xba7bbeea,0x3b3a81a2,0x3be4dde4,0x3a126486,0xbbb05abd,0xbc0f02b4,0xbbd8c5a0,0xbb45abf9,0x398a2ef0,0x3a73d9b0,0x3967fc02,0xbacf6044,0xba3da8de,0xb94db137,0xb93d9f96,0xb986b973, +0xb70790d3,0x38659854,0x388b3227,0x38985608,0x383c9cee,0x3831a60a,0x373b9eae,0x386e1549,0xb7a0475f,0xb90e2342,0x39777a12,0x398c0ef9,0x3c0c8c14,0x3c2cb02c,0x3bc01b08,0x3ab559ed,0xbb593866,0x3bea61f0,0x3c2c7763,0x3bf99d9a,0x3bcbbbeb,0xb8ad38dc,0xbc0d1806,0xbae3cd0e,0x3b940cfa, +0x3c26499c,0x3bc2477e,0x3b253425,0x3a38c3fc,0x399587ad,0x3a474469,0x3af3ff8e,0x3a8ef11b,0x39de7267,0x3953695c,0x38d3247a,0xb6d34f8b,0xb8049e39,0xb8573d77,0xb83e788d,0xb84f04d4,0xb7a57651,0xb88f44ba,0x38502aa0,0xb97974f7,0x3a27fafa,0xba9a80ef,0x3ac801c6,0xbbea9d86,0xbcbac8ba, +0xbc3ecadc,0xbbbc292e,0xbbf5be66,0xbc15ec4b,0xbc0ab342,0xbb886e40,0x3bd6c4da,0x3c170db6,0x3b0849f3,0xb917a1e4,0xbb6c926d,0xbb84128c,0xbb91daa9,0xbb643d9a,0xbb2a395c,0xbacf937b,0xba8ba61d,0xb99c0cfc,0x3692d682,0xba1e9f7e,0xba07fa2c,0x3899a1a4,0xb7aa6977,0x3865bead,0x384634e8, +0x3889f274,0x3841cf62,0x389e8ae1,0x37c9931f,0x3902551b,0xb86d847e,0x397e6ec9,0xbb3a2415,0xbb02b778,0x3c07b037,0x3bfe17b0,0x377de9dc,0xbb95dece,0xbb7e6ffa,0xbb6e3c75,0xbb1f2a7a,0xbaebc0aa,0xbb6226c8,0xbb853453,0xbb6d4fcd,0xbb399e79,0xbace05e9,0xb867c915,0x3a389bd5,0x3abfbfd3, +0x3b21d752,0x3b4a7cf9,0x3b722f17,0x3b809903,0x3b726999,0x3b10e8a7,0x39fc656a,0xb8862528,0xb84d18f0,0xb882bd28,0xb8cc7cc7,0xb8cd50e0,0xb8e5d236,0xb8c3d9a2,0xb9268e6f,0xb7f99933,0xb9baf23f,0x39d5a558,0x3b29eb81,0x3bab6dab,0x3af0b808,0x3b3b7da3,0x3b2c52be,0x3b3ab699,0x3b02241c, +0x3a5b61e0,0xb9e640e7,0xbad4b609,0xbb0bab4e,0xbb16dfc2,0xbb24063a,0xbb23d80b,0xbb398e6b,0xbb5fd71f,0xbb2f86c9,0xbb0159b5,0xbab22d89,0xba61f764,0xb99e8713,0x38cd50b5,0x3a2188bb,0x3a81ee53,0x3a48ba2b,0x39412332,0x3881eb41,0x39332a66,0x393b6b4a,0x39692caf,0x394e2a9c,0x397cf175, +0x39804217,0x39a47dbc,0x39929d45,0x3a1acd23,0x3a1f8263,0x3aaf6a4f,0xbb2a05de,0xbb29b0c0,0xbb107527,0xbb12a20c,0xbb01bb62,0xbadb704c,0xbac3b008,0xbac54891,0xba8a68a7,0xba342f96,0xb992c24c,0x39fb4e83,0x3aa4ab28,0x3b05cfe1,0x3aeb8e7d,0x3ac4dd29,0x3aa01dd4,0x3aa0fca1,0x3aa0c008, +0x3aa68c6d,0x3a7a21eb,0x3a31d51c,0x39f05e73,0x377e4527,0xb983c3b7,0xba00beb7,0xb9e569b9,0xba088b46,0xb9db8da2,0xba05ae0e,0xba260e21,0xba6a4b48,0xbab6b5f5,0xbb01bf5b,0xbb1e8db1,0xbb21a66b,0xba9a7878,0xbaec98a7,0xbab0c951,0xba644ac3,0xb9f5d029,0xb91612fc,0x399065eb,0x3a3c6b22, +0x3a9476a4,0x3ac3f93c,0x3ae9fda6,0x3b03e50a,0x3b0ff13c,0x3b2817c0,0x3b204930,0x3b24600b,0x3b23fb08,0x3b248e0a,0x3b220274,0x3b22943e,0x3b21a301,0x3b16edb8,0x3b0c88ce,0x3b018a0f,0x3aef6db8,0x3abea216,0x3a8ab61b,0x3a322b12,0x39cd8b07,0x360189ce,0xb99f3066,0xb9cbc0a8,0xba10783d, +0xba0eed75,0xba39d232,0xba9633c1,0x3a9a0bb3,0x3a59127c,0x3a924b40,0x3a9daf69,0x3aae7252,0x3ac175e6,0x3acf58ca,0x3ada6ce9,0x3ae83ebb,0x3af99df1,0x3b078d0b,0x3b131e67,0x3b1d7456,0x3b2891b9,0x3b250411,0x3b235c75,0x3b214762,0x3b1e9f7a,0x3b1ca068,0x3b18c603,0x3b1c2e1f,0x3b1bae0f, +0x3b239895,0x3b0dbf5c,0x3b134cbe,0x3b267308,0x3b203a04,0x3b197685,0x3b104e07,0x3b096171,0x3b00138b,0x3ae17f5c,0x3abe1c5f,0x3a9ccbc1,0x3ac25233,0x3aa87a97,0x3b242d15,0xba72db60,0xba2e4fd8,0xba179a28,0xba0c11ff,0xba0d9c2c,0xba562a7d,0xb9ed57ee,0xb9e17a58,0xb9de7661,0xba442f5d, +0xba59a057,0xba5def48,0xba1fd44e,0xba23da80,0xba5e6a43,0xba91a9cc,0xba96b12b,0xba60efaa,0xba646ffc,0xba646c3c,0xba86ba3b,0xba6fab06,0xba68da3f,0xba248709,0xba959559,0xba8ff6ac,0xba08f097,0xba84ccc9,0xba85f3d7,0xba38e0eb,0xba2fabc0,0xba201dc5,0xba0f43f9,0xba3f3f19,0xba5b46e2, +0xba5ac040,0xba441999,0xba198fac,0xb9eea89d,0xb9d3f4e0,0xba0bd425,0xbaa25cbf,0xb96998c1,0x388cb935,0x397179e5,0xba392454,0xba7dfec1,0xba84fff1,0xb9b45359,0xba384cc1,0xbae0940c,0xbb2f9afc,0xbb2e6955,0xbac66980,0xba9c8a9c,0xba7f8e96,0xbaac46a6,0xba864cda,0xba8c638f,0xb9eb1a80, +0xbada1af3,0xbaf1fd7e,0xba33181e,0xbb02503b,0xbafa0bdd,0xba8791e1,0xba1f8654,0xb9cade71,0xb945c56b,0xba3158f1,0xba6af833,0xba73e0ea,0xba59616d,0xb917cdea,0x39e6bff1,0x39f8fd37,0x3a2900fa,0xba4ef66a,0x3a913e06,0x3ab52a90,0x3af24714,0xb979f9c6,0xba71aeb7,0xbaa79447,0x39edceca, +0x39b8dc64,0xba922be7,0xbb3aede7,0xbb4bd3cb,0xba9e357a,0xbaa09292,0xba8b2833,0xbaf54f0d,0xbab835e1,0xbab4e882,0xb9ef0a62,0xbb075456,0xbaa70cf7,0x38f9ffd6,0xb9c1d11d,0x38f99b28,0x37f71616,0x384baaa0,0xb8c1fb5f,0x38f9d0f9,0xb97a8cbb,0xba26e4f6,0xba7f830c,0xba35acf9,0xb9cc7c49, +0x366f4d82,0x38c9e819,0xba408c78,0xbb3bde0a,0x39dffb58,0x3b0c05ef,0x3b53b699,0x37e3d4ad,0xbaaee2b3,0xbb089ca8,0x3a3990aa,0xba06ea57,0xbb879a3e,0xbbf7aa76,0xbbe7c113,0xbb479ccf,0xbacf672a,0xba8df9ca,0xbb03e69e,0xbad77cd0,0xbab0f9b3,0xba06719c,0xb9e1bfbf,0x39ea4fb8,0x3839bcc3, +0x391dd04c,0x383f6a9f,0xb79fb5c0,0x379c99c5,0x37db56aa,0xb7bf494d,0x38b1fe20,0xb70b00a6,0xba5baa61,0xba64b28e,0x3b28254f,0x3b1aa4d7,0x3ba8f532,0x3bed3827,0x3c263d17,0x3ba82170,0x3b32d338,0x3b6e0806,0x3a9e6984,0x3a00d398,0x3a9ab5e8,0x3b08525c,0x3bc07566,0x3c228bed,0x3c2f39bc, +0x3bfb9235,0x3b0b0396,0xbae11e65,0xbb542420,0xbb442cda,0xbb0ea802,0x37298653,0x3a6bb4ef,0x3779dcf2,0xb84c45e0,0xb8d802bb,0xb82660b2,0xb83f6d7d,0x37187e21,0xb784e912,0xb6c0c869,0xb730cc5c,0xb7d12fe3,0x363026c7,0x39af938e,0x3a9c2542,0x3a4b88b3,0x3b2590f0,0x3b1739cd,0x3aabe752, +0xb9d98052,0xbb95d1aa,0xbbc9786c,0xbb62ff69,0xba5f88e8,0x3b3fa16e,0x3bdf1b8c,0x3b0819ec,0xbb528e4a,0xbbf0d2b8,0xbbd16211,0xbb6c35f0,0xba2f4007,0x39a0a774,0x38e9ae4d,0xba97c204,0xb97fad7f,0x36d0b1cd,0xb98c2601,0xb8c970f9,0x3885834f,0x382892cf,0x38152b40,0x37b8f592,0x3683477d, +0x37520689,0x36eab98c,0x378591e2,0x38509f3f,0xb8ceb845,0x38c96fab,0x3a2d9b9e,0x3c01bc36,0x3c1ef64c,0x3bc7a0ea,0x3a9af1c6,0xbb8b289d,0x3bc1e556,0x3c20f9e7,0x3bde3277,0x3be207bc,0x3a73516f,0xbc0248c7,0xbb39b978,0x3b44c676,0x3c1abe61,0x3be84a6a,0x3b8ec9ca,0x3af92c48,0x3ab88bd1, +0x3ab2bc51,0x3ae11664,0x3a269237,0x392dd6a5,0x393422b1,0x379cd6d3,0xb7f4e49d,0xb81302ed,0xb800770a,0xb79b82c9,0xb78ed5ff,0xb65dae78,0xb84081f4,0x383a10c4,0xb950c16c,0x39d12b26,0xba4268c7,0x3a900921,0xbbf3cf95,0xbcc2d334,0xbc187d58,0xbb2b8791,0xbb956fea,0xbbcbad19,0xbbf9aa43, +0xbbedcbd7,0x3b8e75b4,0x3c080ed0,0x3b69fc8e,0x39312e35,0xbb6b1e1c,0xbb7e59ae,0xbb92dfc5,0xbb742d08,0xbb4219a0,0xbb0cd4b4,0xbaeeb553,0xba98c8fc,0xba49f590,0xba5b0033,0xb946611f,0x38912b18,0x37b7d166,0x38584ed3,0x38265591,0x380cfbe5,0x37afc517,0x380ca873,0x37ed33e0,0x38844f1b, +0x37f3ed20,0x392f5dd0,0xba73b8a2,0xba3c5795,0x3b879d74,0x3b83ca0c,0xba81c207,0xbb9137b7,0xbb915bb6,0xbb7a2098,0xbb136172,0xba9f1319,0xbb41ee41,0xbb816ccf,0xbb7288d5,0xbb3f6915,0xbadf5811,0xba077fd7,0x398aa1e7,0x3a96b0f9,0x3b1c5d67,0x3b4b6f3f,0x3b6e7b80,0x3b77527a,0x3b4e1162, +0x3acc794e,0x38cd4ec8,0xb9059951,0xb83e1d15,0xb8bd30ba,0xb89ec35e,0xb8802501,0xb847130e,0xb869a1c9,0xb8a93e93,0xb8ce7fab,0xb8b0cddf,0xb9c5c010,0x3ade483d,0x3b197bc4,0x3b1a091f,0x3b6661bc,0x3b4e263c,0x3b5d1af7,0x3b1eba27,0x3aa0c291,0xb98ee8e2,0xbabb8472,0xbb1b9788,0xbb2d687e, +0xbb3b8928,0xbb351a27,0xbb45196e,0xbb6a93f3,0xbb2d68b7,0xbaf64969,0xbaa49bb1,0xba18b0f2,0x388ad105,0x3a1f796a,0x3a8bd0cf,0x3a94446d,0x3a246c00,0x391dd67e,0x390bbb3c,0x3947a7fe,0x39230237,0x39059619,0x38bcebfd,0x38ef0b99,0x392e64c7,0x3961954b,0x39819f1c,0x3a09eafc,0x3a76640f, +0x3ad28a38,0xbb086094,0xbb032dbb,0xbadd49fc,0xbaeea765,0xbad52607,0xbaba8793,0xbaab165f,0xbab771f6,0xba8f96f8,0xba7568f6,0xba462462,0xb984d201,0x399bef22,0x3a5e3da5,0x3a5202e5,0x3a365d8c,0x3a1cf404,0x3a381e25,0x3a4793b5,0x3a7f6455,0x3a12bf12,0x39472d42,0xb816e65a,0xb9b0fbfa, +0xb9faa860,0xb9e2b047,0xb9b7b926,0xb97eaf0f,0xb925f2c1,0xb94787dd,0xb9adb3f8,0xb9e99e67,0xba75e43a,0xbabd60bc,0xbb00de83,0xbafc805e,0xbae4d815,0xbb075dcf,0xbad122da,0xba92d5f6,0xba3b3e76,0xb9e76abb,0xb891bea4,0x39b4ae61,0x3a403d3c,0x3a91acf1,0x3abcbe48,0x3add14f7,0x3af896bc, +0x3b13dcc9,0x3b0ea7eb,0x3b1287ca,0x3b1387c3,0x3b15b8f9,0x3b150424,0x3b1924d8,0x3b14b245,0x3afb665a,0x3ad58887,0x3ab0da9e,0x3a8d3fd1,0x3a1fed31,0x3990412d,0xb82e1029,0xb9a262fa,0xba1b3a3a,0xba602541,0xba80a8d5,0xba923c74,0xba93aebf,0xbaa52463,0xbace0743,0x3a52c1ca,0x3a0575ea, +0x3a3ec8e0,0x3a528a7c,0x3a6ef127,0x3a8b4d13,0x3a99b5cc,0x3aa4011d,0x3ab1003f,0x3abffe4a,0x3ad26fbf,0x3ae8066c,0x3afc2e10,0x3b094172,0x3b06c7d3,0x3b065362,0x3b0533f3,0x3b03ad48,0x3b02b975,0x3afe6ae9,0x3b03ac7f,0x3b042d5f,0x3b0e7e02,0x3ae0fd2f,0x3aeeec2b,0x3b075850,0x3b0112ba, +0x3af1656b,0x3ae00988,0x3acf1d88,0x3abe38e0,0x3aa459b2,0x3a867089,0x3a50b00c,0x3a8c83f2,0x3a67a32a,0x3b041c71,0xba7706a3,0xba46f50b,0xba296bc4,0xba176f52,0xba18892a,0xba64bd12,0xba0a08e5,0xb9f73179,0xb9b16856,0xba3b71f3,0xba5928c0,0xba841466,0xba2088c2,0xba1f4881,0xba5fbfaf, +0xba91aaab,0xba992d21,0xba7d1258,0xba6ec6d5,0xba6bedca,0xba8520f9,0xba7d2d61,0xba7d8989,0xba4644a8,0xba8f22bb,0xba8c6dbe,0xba21c9ad,0xba91be8b,0xba9254a9,0xba46b6c1,0xba411b6b,0xba2eab34,0xba02d32d,0xba52bfee,0xba6892ca,0xba6d71db,0xba5e0c6e,0xba3f204a,0xba1e7a25,0xb9ec294b, +0xba1b722e,0xbaac8333,0xb9d563ae,0xb86398be,0x39d6857b,0xba21c39b,0xba81910b,0xbaba38b7,0xb9ac1cf8,0xba10c5ae,0xbad5237c,0xbb298b1f,0xbb30f9b7,0xbaef8b84,0xbab48cb6,0xba8e1787,0xbab2a0d2,0xba903fb5,0xba854201,0xba0b9843,0xbad1806b,0xbae6f0f8,0xba34aa5c,0xbad710cd,0xbac4152c, +0xba410f4e,0xb9f8b32e,0xb99242d7,0x3850b89d,0xba314b1e,0xba7ce7c2,0xba652ff9,0xba5e191c,0xb9a7ad16,0x38605322,0x39c4a58a,0x39e87914,0xba833bea,0x3a41ab9b,0x3a91c430,0x3b112245,0xb8549dad,0xba5711ee,0xbb022712,0x39fe7ddf,0x3a04ae85,0xba8849c5,0xbb34766f,0xbb4ebcd5,0xbadf8e22, +0xbabba531,0xba949c29,0xbaf999ab,0xbab6b18f,0xbaa69e5b,0xba1b729f,0xbabda419,0xba1b70af,0x3965c830,0x389f788a,0x39972c7f,0x390e6584,0x38fc2c11,0xb7d08cfd,0x392899d4,0xb91eb243,0xba27b469,0xba6f2758,0xba3a6cbc,0xba13834b,0xb9b50418,0x38c2e2d7,0xba4c5c10,0xbb44c528,0xb95b43ea, +0x3ada1b40,0x3b6fa6b6,0x39a080a8,0xbac7af11,0xbb5ad0d5,0x3a19bc90,0x37af6ece,0xbb7338cf,0xbbec796c,0xbbef4235,0xbb873089,0xbb14f9b4,0xbabe2920,0xbb11f2ff,0xbadec841,0xba95c14c,0xb9b6b6f0,0x3814e717,0x39c34c61,0xb879d998,0xb70d2966,0xb88a9f83,0xb851f96b,0xb7cec82c,0xb6a1fd23, +0xb8395fc7,0x38aecaba,0x3907fc58,0xba0e8acb,0xba3f09ea,0x3afcd778,0x3b060779,0x3b845fec,0x3bc22c76,0x3c1c6e16,0x3bb2adb7,0x3b57be5d,0x3b5dd29f,0x3af8fcbd,0x3acdb0c0,0x3b0ef5c0,0x3b21e843,0x3baf1e56,0x3c0ead70,0x3c2fb901,0x3c0befd7,0x3b4b51e1,0xb9e99fe7,0xbb0c3c79,0xbb1886ca, +0xbabffb7e,0x39db5d84,0x39f2a95e,0xb8ac6c96,0xb8e16898,0xb7c945ef,0x37a1e369,0x3764ae2e,0x37d42afa,0x36db0ad7,0x368a4c4d,0x3775f1ba,0xb8844949,0x381f6477,0x38202253,0x3a3ba10d,0x3a93c419,0x3b22543c,0x3b3cef5a,0x3b2462c0,0x3a65db43,0xbb4951fa,0xbba09b84,0xbb662869,0xba6b4eea, +0x3b1881bb,0x3bae49e2,0x3b2304de,0xbaf14b34,0xbbcc90d9,0xbbd0df4d,0xbb91d40e,0xbae91469,0xb9e345b0,0xb8585158,0xba1b990d,0x39866770,0x38a35890,0xb9820b1d,0x3829b336,0x38608dce,0x37955f58,0xb698ef1b,0xb6a2cefa,0xb73b660f,0x35314be9,0xb7116533,0x3747ace8,0x37872a00,0x3741245f, +0xb887f698,0x3a3cdba1,0x3bed3bcb,0x3c116600,0x3ba4a006,0x38ba997f,0xbbb6cef0,0x3b7c1816,0x3c056174,0x3bbd99b7,0x3bdbd3c1,0x3ab0883c,0xbbec92e4,0xbb836c2d,0x3a71f9e2,0x3bf094bc,0x3be63d32,0x3bada2bc,0x3b296dc5,0x3b08f1bd,0x3acf1913,0x3ab27feb,0x39849271,0xb609972e,0x392b0228, +0xb870068d,0xb7ded00a,0xb7c3cf97,0xb62b7a96,0x328d8356,0xb44bffe2,0x36da4831,0xb783f542,0x37dc2203,0xb8ec1a2d,0x392f49ef,0xb9c5f53c,0x3a43c071,0xbbe8361d,0xbcb749fe,0xbbf8ae43,0xba55845c,0xbb1e8736,0xbb67357a,0xbbc7e654,0xbc0b6c4a,0x3b0bfeec,0x3be0c01d,0x3ba8c2eb,0x3a362c17, +0xbb53b685,0xbb704db4,0xbb901758,0xbb80ec6c,0xbb5ef4b1,0xbb320d49,0xbb2435ce,0xbb01b5a7,0xbaa8da84,0xba4b459a,0x38a75c15,0x37ba53df,0x38452f58,0x37e844a0,0x377449b0,0x36c44a24,0x368bd99a,0xb4aa14db,0x371a8ea4,0x376598e3,0x38709329,0x387b98b6,0xb89ef5eb,0xb802d7b0,0x390de6ac, +0xb9e9a2a7,0xbacd664a,0xbb5cb1aa,0xbb8c9793,0xbb590448,0xbae20efb,0xba1ccb25,0xbb07721e,0xbb53ad8d,0xbb5238bf,0xbb288bf8,0xbac297f0,0xba3c8c81,0x37b044e0,0x3a6e654d,0x3b0dafe8,0x3b3781fe,0x3b51aebd,0x3b5578c6,0x3b213d52,0x3a73fac1,0xb92088a9,0xb89fe17e,0xb891327d,0xb881c625, +0xb7ca37a3,0xb7afa109,0xb6233e3d,0xb77b9f0d,0x3762d8be,0xb8cd60a2,0x381c737b,0xb9f883b6,0x3a58743d,0x38cd5812,0x3b3220fc,0x3b7014e8,0x3b53a7e9,0x3b5d5b40,0x3b1c6604,0x3aad1448,0xb940eb0d,0xba9676c9,0xbb18782d,0xbb2c0ddf,0xbb38da9b,0xbb2e9229,0xbb362a4d,0xbb508ac0,0xbb0c0357, +0xbab8c3ea,0xba71f0d7,0xb9711623,0x39e0bff1,0x3a8694d8,0x3aa9295f,0x3a924a72,0x39d0b805,0x390beae8,0x39379423,0x38e1095e,0x3859e80b,0x3807df0e,0x373ad9fc,0xb6bec26b,0x37c3a6d5,0x386324ce,0x39776ad6,0x397c9b18,0x3a7502b0,0x3ad9fc59,0xbacc8f8f,0xbabcc2b9,0xba9ed6f0,0xbab18096, +0xba9feda8,0xba8f7fb3,0xba83d277,0xba915c65,0xba769fb8,0xba777c44,0xba77736d,0xba37b9fd,0xb9cd37ee,0xb8d638a3,0xb7abd573,0x37699478,0x3886cccc,0x3977a6f1,0x39b4ab96,0x3a24a9ea,0x3928c425,0xb92397d9,0xb9972766,0xb9f5fa5a,0xb9e70fde,0xb93ac880,0xb8aa0802,0xb79941d4,0x381bc059, +0x38b7fb4a,0x378fd82e,0xb808002e,0xb9fe169b,0xba674784,0xbab2df65,0xbab5344d,0xbaf06933,0xbb0080d0,0xbaca5950,0xba94e8ca,0xba4c348f,0xba15a9f0,0xb993add5,0x3869e38c,0x39c75c1f,0x3a3d4838,0x3a87bd01,0x3aa6681f,0x3ac14cf2,0x3aea4806,0x3ae90e8d,0x3af2ec64,0x3af98a38,0x3b008640, +0x3b0212fb,0x3b0a0110,0x3b023f0e,0x3ac3c689,0x3a924d02,0x3a4ccf10,0x39e23870,0xb81417c2,0xb9905a13,0xb9f60b8c,0xba2f3013,0xba668e3d,0xba8de38a,0xba9fd5b5,0xbaaecc55,0xbab320ff,0xbac1a0b6,0xbad6cd75,0x39d5cbc0,0x3947e065,0x39b5f59a,0x39d50c9c,0x3a009901,0x3a244aeb,0x3a3ef139, +0x3a50cdc1,0x3a66e838,0x3a7e8d8c,0x3a8db8b8,0x3a9fcc4e,0x3ab172c4,0x3ac505cf,0x3ac2c492,0x3ac3ecab,0x3ac3d99a,0x3ac3e55d,0x3ac45632,0x3abff603,0x3ac930d1,0x3acbef56,0x3ae2de82,0x3a9dc195,0x3aacbd17,0x3ac56e81,0x3ab85ad7,0x3aa55734,0x3a94e18c,0x3a8493f1,0x3a6b8db8,0x3a43f450, +0x3a15ecf0,0x39c75968,0x3a2de293,0x39f8e49c,0x3ab744ed,0xba63a59d,0xba34215f,0xba278240,0xba0bf167,0xba0b6f74,0xba50ef5d,0xba076742,0xb9eb61d5,0xb9695ff1,0xba2527ae,0xba498a5e,0xba8b52f6,0xba191a7b,0xba12e21b,0xba50a7ca,0xba856db9,0xba8e4270,0xba811c52,0xba651544,0xba5ebaad, +0xba734192,0xba619f97,0xba671e1b,0xba45cd35,0xba6db4e1,0xba784ad1,0xba320776,0xba9367d4,0xba93d640,0xba42fca6,0xba396695,0xba2035d9,0xb9c3fcc3,0xba3ef47d,0xba4cda55,0xba5f0798,0xba4bd727,0xba32d6c5,0xba1db869,0xb9c5b1ef,0xb9ffd7d2,0xba956f34,0xb9e722d5,0xb8bb74f9,0x3a1547be, +0xba024fe3,0xba77de3c,0xbad7c71f,0xb9b4990f,0xb9e93668,0xbac00679,0xbb17540e,0xbb251ecc,0xbb02183f,0xbabe72bd,0xba92bf0a,0xbaa8070b,0xba81e308,0xba5e76e3,0xba16e236,0xbac1e55b,0xbac1ca05,0xba058be2,0xba89e7d0,0xba63dd22,0xb9c15382,0xb985f27a,0xb920bff3,0x396f160b,0xba17f592, +0xba762881,0xba3fb3ac,0xba420976,0xb99375cc,0xb91ff522,0x39c542e7,0x39db3757,0xba5cd564,0x3a0268be,0x3a6257c1,0x3b1cddf3,0x3887375a,0xba47f2aa,0xbb220b4d,0x399afd69,0x39e844c1,0xba82f61d,0xbb221713,0xbb412060,0xbb077dd9,0xbacafd51,0xba98c89e,0xbae5ed71,0xba9c8a92,0xba8c13d2, +0xba214662,0xba340c48,0xb7cc8ba5,0x395eb282,0x3924172c,0x3994aee5,0x38e00bea,0x38d1da63,0xb72137e2,0x38b6d886,0x371e5b27,0xb9cbec0e,0xba44113d,0xba196ca5,0xb9f6155b,0xb9e810be,0x39807a2a,0xb9e67824,0xbb1f3ef5,0xb9e410c3,0x3aaf2380,0x3b7c9adf,0x39fb0729,0xbad52f60,0xbb86c79f, +0x3986930a,0x397b99f9,0xbb5392ff,0xbbd10292,0xbbe26739,0xbb9e6591,0xbb36e87c,0xbae54426,0xbb121723,0xbac78c7c,0xba5bc2e6,0xb903ce60,0x396cca97,0x38c63f97,0xb8c27bf5,0xb8598d0b,0xb8de1934,0xb88163b4,0xb8027974,0xb643884e,0xb8339407,0x374511d6,0x3940b641,0xb933b171,0xba0c9549, +0x3acaccb6,0x3ad97a6d,0x3b2869d3,0x3b88b820,0x3c036ac1,0x3ba0e242,0x3b4d3b3e,0x3b2918c1,0x3b0b6c03,0x3b07478b,0x3b11aa9d,0x3b074ca2,0x3b83c83a,0x3bdb20ca,0x3c1c9a67,0x3c07cbd1,0x3b65628d,0x3a0bab0c,0xba9965be,0xbad36abd,0xba433a45,0x3a05c6ca,0x39072ea9,0xb8edaa5a,0xb847d35c, +0x3809dcd1,0x37f4b732,0x38387604,0x3808bc53,0x377e1744,0x3604209e,0x37df3cda,0xb802cdd7,0xb84bc278,0xb4c1f5eb,0x39f39065,0x3aa3e3a2,0x3aee8806,0x3b1a1c7a,0x3b2e05f2,0x3aca131c,0xbaed9dce,0xbb6d40c1,0xbb538b41,0xba3fb770,0x3af2e7a8,0x3b82e4cf,0x3b296b8e,0xba555080,0xbba6d484, +0xbbcd6f4a,0xbbadfd69,0xbb42947d,0xbabac207,0xba0bb6cc,0xb9923f5d,0x39e5ed59,0x380c530f,0xb92c302d,0x38b274b3,0x378578f3,0xb6c9ba60,0xb795cf06,0xb7a253be,0xb7a83c90,0xb6b7d07a,0xb73f3b61,0x35ba9ebe,0xb625982f,0x389338e5,0xb905604d,0x39bbfdc0,0x3bb65714,0x3bebe1b5,0x3b8819fb, +0xb90da3b5,0xbba9dd33,0x3b17e85e,0x3bd17e2e,0x3ba0ea84,0x3bce001f,0x3b0317ab,0xbbb0ef20,0xbb7d67b2,0xb81d1123,0x3bba27f2,0x3be74a37,0x3bcd561b,0x3b656389,0x3b34ff20,0x3aecb4ab,0x3a807bb0,0xb8e443f7,0xb7be0de2,0x38b751f9,0xb889d738,0xb6ab760d,0xb6aca32d,0x3732f4a7,0x3747e3ab, +0x37476d22,0x374d7655,0xb60a1b7f,0x37f8fb5e,0xb883a1ad,0x38c58642,0xb98ef55b,0x399a1a20,0xbbd0002b,0xbc9813d0,0xbbbdc640,0x387d494c,0xb9886bbe,0xba9d3ef6,0xbb8b6024,0xbc065ca0,0x3951bac0,0x3ba79417,0x3bce599a,0x3ad213d6,0xbb091d90,0xbb3cb0d1,0xbb6f5222,0xbb65f8ed,0xbb55ed6d, +0xbb334573,0xbb2acf5b,0xbb18e006,0xbacd3469,0xb9eaad92,0x3918cf80,0xb607d860,0x382b4da2,0xb5685463,0xb5d76748,0xb75daba7,0xb76fef58,0xb77b3121,0xb7136656,0xb78bbdba,0x37e0f1ce,0x37b25b96,0x38993356,0x398d9195,0xbb2f2328,0xbb837867,0xba8d5997,0xba9ac14a,0xbb367759,0xbb059dab, +0xba81412c,0xb99b7617,0xbac57026,0xbb31aaa8,0xbb340d89,0xbb1476f6,0xbaa7783f,0xba51d772,0xb70d2829,0x3a5eaba3,0x3b01f9f1,0x3b24c651,0x3b383a6b,0x3b3a3924,0x3af0c724,0x39eced00,0xb9715a39,0xb80480d6,0xb8639b2e,0xb72df140,0x363ed1ca,0x378c1a05,0x3803a6da,0x37939c50,0x382d79c0, +0xb7944d54,0x3890c7e0,0xb9939b0a,0x3983683f,0xba723b02,0x3b344e65,0x3b6a27ee,0x3b44e9ac,0x3b40e783,0x3b054118,0x3a972ca4,0xb928be71,0xba59cfe9,0xbb091d4d,0xbb2060a0,0xbb2e7029,0xbb2279a3,0xbb21fc16,0xbb2e9688,0xbad18f2e,0xba72b420,0xba0ac4e6,0x39503ef7,0x3a57822a,0x3ab7c853, +0x3ac0327b,0x3a883b97,0x39691668,0x390948a8,0x38bc0687,0x37b38c23,0xb68ad396,0xb829eb9d,0xb868467d,0xb88ad55a,0xb8148dce,0xb8bbbd00,0x38d46bce,0x38322fe2,0x3a234bde,0x3aca19b0,0xba85b375,0xba5dda91,0xba3bda2c,0xba648f8f,0xba5e64ea,0xba4ec08e,0xba41b5ad,0xba5ed91f,0xba4cf337, +0xba65b9a3,0xba82814e,0xba801d9a,0xba6a499c,0xba610bf6,0xba339a17,0xba0fed9c,0xb9d71998,0xb960e35e,0xb8dabde0,0x3963df92,0xb933bd63,0xb9c57939,0xb9c1b601,0xb9d05284,0xb93c1b9f,0xb6a7aa2e,0x37fda714,0x38f5b0af,0x391111b5,0x394019d6,0x390a1b0a,0x397dadd1,0xb8992c66,0xb9c6bc45, +0xba3642ed,0xba51fa27,0xbadd35b1,0xbad74af2,0xbaacbf82,0xba85eb20,0xba449313,0xba1ee13d,0xb9d5fe8b,0xb92da549,0x38a42997,0x39b4a6d4,0x3a1e25a9,0x3a4feb2d,0x3a7d7bb1,0x3a9d74a2,0x3aa4adf9,0x3ab0486a,0x3abbb903,0x3ac6d994,0x3ace5a74,0x3ae346bd,0x3ad4e2cc,0x3a87973d,0x3a27c6c1, +0x39904f15,0xb8292534,0xb9a8a8d6,0xb9de5d16,0xba039ce0,0xba26ca7c,0xba47a881,0xba754ae2,0xba90ccdb,0xbaa5b740,0xbab007d7,0xbac0c984,0xbac44e6b,0x38939f31,0xb8a05595,0x37358995,0x386e749a,0x38f359db,0x3963a7fb,0x399a9fd8,0x39b40920,0x39d1f320,0x39f1288d,0x3a0bfa23,0x3a26a4e3, +0x3a41fa7f,0x3a5fcd4a,0x3a6242ed,0x3a68f067,0x3a6d294c,0x3a72e0dd,0x3a792877,0x3a7514f5,0x3a866d05,0x3a8ad9c7,0x3aa0b6d8,0x3a3a06d6,0x3a500e3d,0x3a62f9db,0x3a43730e,0x3a1a7766,0x39fa823d,0x39c1a59b,0x399b4bcf,0x39532ca1,0x39009f15,0x36addeab,0x398b6077,0x38ef09f8,0x3a48233f, +0xba5f4c9a,0xba3704a4,0xba37ce4d,0xba154630,0xba1533c2,0xba4e4628,0xba1a362a,0xba086691,0xb97f1d71,0xba27477e,0xba4c1403,0xba9213bb,0xba240d26,0xba1988a1,0xba4d5bdb,0xba7889ba,0xba852dd1,0xba846657,0xba6489ef,0xba5b15b9,0xba625172,0xba53effb,0xba55f940,0xba3b478b,0xba5928be, +0xba6b18f1,0xba3b587f,0xba886a25,0xba8108c3,0xba2960b1,0xba249af6,0xba0a45f0,0xb981ee61,0xba344cba,0xba44f80d,0xba45d9e2,0xba43e10b,0xba273a2f,0xba3eb99b,0xb9f1062f,0xba11420b,0xba8de4dd,0xba1dee8b,0xb9941810,0x39ef2a82,0xba115c2e,0xba83df3a,0xbaeaf078,0xb9f3813c,0xb9eaae97, +0xbaac2b65,0xbb008a6d,0xbb11bfe3,0xbb04147e,0xbac39f2b,0xba95ffda,0xba9ae0aa,0xba60f145,0xba336d8b,0xba32b0aa,0xba9e44b6,0xba873a83,0xb996916a,0xba119932,0xb9fedac3,0xb941252d,0xb9184e93,0xb8b66145,0x39559432,0xb9e2f1f0,0xba5c2394,0xba2ee418,0xba2f4cfe,0xb9ab02d6,0xba04a317, +0x38e06593,0x38ff3296,0xba5f7bc8,0x38713d5a,0x39c0ba1a,0x3b08aea8,0xb8f552d9,0xba699101,0xbb34f91a,0xb8900111,0x395735f6,0xba80a443,0xbb075760,0xbb26e4cc,0xbb112ad5,0xbad15c88,0xba987000,0xbac58171,0xba780ccb,0xba59ee9c,0xb9eeb968,0xb8d59965,0x393fbb0c,0x392fd680,0x392fb3c9, +0x39587ac5,0x38bd5551,0x38a05fd1,0x3676bac0,0x36b1f9f7,0x38aa9417,0xb90b5e9f,0xba096e2e,0xba0aa7ab,0xb9f38fd0,0xba53b73e,0xb827ef9f,0xba0ee54a,0xbb0c4102,0xba65e29d,0x3a30eb51,0x3b5a6c02,0x392ff894,0xbafd3622,0xbb94c84b,0xb97b8a78,0x39598f8d,0xbb2f5ac1,0xbba8d84e,0xbbc2eeb6, +0xbba2ba3d,0xbb47060e,0xbaf70e80,0xbb04591b,0xba9e9a9d,0xb9f790cc,0x3866b68c,0x38f63576,0xb85b5022,0xb89a3582,0xb89f002e,0xb8acdd1d,0xb83b4d6d,0xb7f6a32c,0xb646da70,0xb6cce7eb,0xb7d35dab,0x38e9eab5,0x387da92f,0xb9b6a32a,0x3a88b0cc,0x3a913c16,0x3aa5e40f,0x3b234bf0,0x3bce5f18, +0x3b86a192,0x3b2ff844,0x3ac89cf6,0x3b0e30c5,0x3b195a31,0x3b010eda,0x3ab43e55,0x3b226888,0x3b957822,0x3bfde03e,0x3beea3a4,0x3b66af30,0x3aa1ae57,0xb9a179bb,0xba7b6dc5,0xb95377eb,0x39c1f017,0xb8100324,0xb8268c25,0x36f8fa0b,0x3829714f,0x3811c810,0x38217018,0x37c47527,0x37792ada, +0x35d97201,0x372a2e60,0xb69865d0,0xb7d0f718,0xb851e0a8,0x39409a24,0x3a7fa2c0,0x3aa474a7,0x3b1707f5,0x3b48edd3,0x3b1c9077,0xba05be35,0xbb1533df,0xbb33dcf8,0xba06fd55,0x3ac8a858,0x3b47fac8,0x3b417f9b,0x3a0624cc,0xbb5eb649,0xbbafc9d7,0xbbaf3529,0xbb67b715,0xbb090aab,0xba76dc7b, +0xb929da6d,0x39af05dc,0xb8b957df,0xb810a8d3,0x384e9252,0xb75480da,0xb77ce0ac,0xb7b0cca5,0xb79de8cf,0xb7823ab1,0xb70d82e9,0xb6eefe2f,0xb684ea78,0xb65e005d,0x378e1e02,0x384acfcc,0xb90b8a9d,0x3b82d1e2,0x3bbf36da,0x3b558d0c,0xb9d73234,0xbb9f2f54,0x3a2e7a8c,0x3b8eed6a,0x3b838d5f, +0x3bae5245,0x3b0d322c,0xbb7d46c3,0xbb720d95,0xba813580,0x3b793f02,0x3bd0c120,0x3bd4bbfa,0x3b882a00,0x3b529379,0x3b01f2d8,0x3a48af9b,0xb93ec089,0x382a42cc,0x37a46779,0xb818cf20,0x3700741d,0x36f5cb57,0x37777672,0x3763727d,0x375a377b,0x374397af,0x36f69cdd,0x37879233,0xb76e7bd8, +0x37e452be,0xb89bca2b,0xb95a7ef6,0xbb9e7dc0,0xbc6413eb,0xbb9f5c03,0xb985663b,0x3a92c9e5,0x39341bab,0xbb3674fc,0xbbe0f47f,0xbac0e5d1,0x3b4205c4,0x3bcca4a3,0x3b071eea,0xba9198eb,0xbb1970de,0xbb44e61d,0xbb493770,0xbb494645,0xbb2b574c,0xbb210352,0xbb17b92b,0xbab55dba,0xb8d0e81c, +0x38c9b6f7,0xb637809f,0x37462b2e,0xb7573291,0xb75aaf7c,0xb7926092,0xb797acbe,0xb7a48dae,0xb78b30ae,0xb7cfba8c,0x370486af,0xb78de606,0x383a59a9,0x3a179c81,0xbb8109d9,0xbbcb06ed,0xb925bf92,0x3a8735ed,0xba505bdc,0xb9b7eb03,0x3854b389,0x38935abd,0xba80980c,0xbb0c0a8c,0xbb0d8292, +0xbb09138a,0xbaada2b7,0xba87213a,0xb9649086,0x3a14d81f,0x3ac70665,0x3b0600ef,0x3b180ce0,0x3b1f9c66,0x3aba1dcd,0x38ca66d0,0xb93feee3,0x37717897,0xb7f9d63d,0x37cfa257,0x379fd5a1,0x37ff4cc8,0x38185c35,0x380a4d83,0x3845f17b,0x37c2e01e,0x384c9076,0xb8c55223,0x392d2f39,0xba7ec9bf, +0x3b2a2f29,0x3b44ead4,0x3b139bf3,0x3b017431,0x3aaec687,0x3a36cf2c,0xb9a33a09,0xba2b1438,0xbae1fd97,0xbb070771,0xbb17421b,0xbb0d8af5,0xbb081f5b,0xbb078897,0xba887c29,0xb9e15026,0xb8fd6f35,0x3a0d62c7,0x3a87a38e,0x3ac9b768,0x3abf1e05,0x3a4f453c,0x382b14cc,0x38ecb3a4,0xb4fbcd9e, +0xb7f3c1f4,0xb843a2d6,0xb8807d88,0xb89adfbf,0xb8a79fe8,0xb8a3d760,0xb8d4768b,0xb7829777,0xb6baa18e,0x38ffc171,0x3a98aca4,0xba0416f6,0xb973c8fd,0xb9644899,0xb9c5b51d,0xb9fe9962,0xba05b4d5,0xba0337e5,0xba1ed63f,0xba2ca520,0xba58290b,0xba8774ce,0xba91abd3,0xba961ddf,0xbaa36c29, +0xba899f8e,0xba659eca,0xba36a149,0xba0e0233,0xb9f6c83d,0xb95a7f64,0xb9ef3bee,0xb9f8daa4,0xb9ac0d94,0xb93d4ebd,0x379be817,0x38b5aafe,0x38db5596,0x391b1fd2,0x39382884,0x3942d176,0x39456908,0x396df923,0x392b5062,0xb872865e,0xb9294707,0xb97834b0,0xbab43e65,0xbaa390db,0xba88f50b, +0xba628801,0xba34edbb,0xba1a5c56,0xb9fb0d6f,0xb9ade085,0xb92f5009,0x3788f780,0x394f9213,0x39abca44,0x39ea6b2a,0x3a1c4f40,0x3a33e6f9,0x3a4b120f,0x3a659e12,0x3a7eadb9,0x3a89a22d,0x3aa0554c,0x3a98d38c,0x3a14a13d,0x395bc1f5,0xb8c7ae86,0xb986a258,0xb9a64461,0xb9b85686,0xb9dda1c4, +0xb9fc77c7,0xba0dd1f2,0xba1140a9,0xba40e01b,0xba6f6900,0xba8c3534,0xbaa14b8f,0xbaa044b7,0xb951bc8b,0xb98a36ab,0xb96e20c4,0xb949d7b8,0xb9212eb4,0xb8c845a3,0xb83c8ad8,0xb775c337,0x3750a7e3,0x382ba70e,0x38a9d042,0x39137fc7,0x395929c9,0x3990886b,0x399fa888,0x39b1b981,0x39bf4af2, +0x39d17ed9,0x39e407a6,0x39e1812c,0x3a06d490,0x3a11f6b5,0x3a388d60,0x398af002,0x399529b2,0x39851e4f,0x3922509c,0x38645c64,0xb80b5925,0xb906aa9d,0xb969cea2,0xb98936a2,0xb988d6db,0xb9974b2b,0xb8ca1491,0xb93d06f8,0x396ddc24,0xba3ff6ba,0xba2b329a,0xba293a87,0xba095b0b,0xba066de5, +0xba2ec4ab,0xba0cc3f1,0xb9f8b76f,0xb948e1f1,0xba0eef02,0xba30f102,0xba8290a2,0xba14ca5c,0xba08bbde,0xba2fc458,0xba4a0815,0xba5a07d8,0xba6a88ea,0xba46bafc,0xba3cd8bc,0xba355cd3,0xba3378ce,0xba377bae,0xba3d1a8a,0xba40eebc,0xba5ea054,0xba3eddef,0xba743732,0xba6303c8,0xba1cc02d, +0xba19eeae,0xba00e03d,0xb9734b36,0xba299120,0xba2eae96,0xba3afc88,0xba370ce3,0xba25e95c,0xba3fb230,0xb9ef7b2c,0xba06790d,0xba65c1b3,0xba15a797,0xb99d7aa8,0x39d2bd5a,0xb9fe1ee8,0xba6c5fda,0xbad86706,0xba00f803,0xb9d7a09e,0xba8d17fe,0xbac4640f,0xbae70598,0xbaec9249,0xbab29971, +0xba87edbc,0xba79e00a,0xba325932,0xba06b88b,0xba3c7143,0xba4b8d07,0xba01e828,0xb82732c9,0xb90f4172,0xb8de065b,0x35e8b6c2,0xb6b84ab0,0xb7b83651,0x393259cf,0xb97d1671,0xba2c5568,0xba275d17,0xba124930,0xb9d0ab9e,0xba412b1a,0xb8712173,0xb83b5243,0xba2d3f5c,0xb8de63d5,0x3908219e, +0x3aea9cd0,0xb900e1ac,0xba4f6a60,0xbb2649d4,0xb98fbad5,0x38697dbb,0xba5896ac,0xbac2cdf3,0xbafc4371,0xbb04c1e8,0xbabd1f5a,0xba8671ae,0xba92bf98,0xba262d61,0xba10bf0f,0xb90b7779,0x394c57aa,0x3924e816,0x38944a2f,0x3884faed,0x387e04fb,0x3723df01,0x37c642b1,0x363a4464,0xb7e32cf2, +0x38e01189,0x38f06700,0xb97ac286,0xb9f69ced,0xb9fd8fc5,0xba888f64,0xb95010c9,0xba02eb4d,0xbace0d00,0xba652607,0x39c8d2a7,0x3b390529,0x38944ee2,0xbaee695c,0xbb899a19,0xba109342,0x38ca400c,0xbb07d221,0xbb761a24,0xbb97b96d,0xbb947d56,0xbb4120a6,0xbaf1515e,0xbad30207,0xba52d11b, +0xb911cde4,0x38ce0321,0xb84c2fee,0xb8a14acd,0xb818b433,0xb804d4ec,0xb7ef526f,0xb7371bca,0xb7447b76,0x339da332,0x366cd37e,0xb850aa3f,0xb7da98fb,0x3916aa80,0xb9018b0b,0x3a23c5b1,0x3a7466bc,0x3a1b5c01,0x3ac16e3e,0x3b9932d9,0x3b53b385,0x3b0b9a68,0x3a1b92a0,0x3b0d5423,0x3b249dd7, +0x3adeff07,0x3a82ea57,0x3ac3d3da,0x3b48dd08,0x3bc50ea5,0x3bc87a87,0x3b68032b,0x3af601a7,0x3a0743fd,0xb97a997e,0x38f756fc,0x39411002,0xb8842aea,0x3788195f,0x380f14a8,0x37ad526f,0x378194ac,0x37685105,0x36fd3822,0x36b06bed,0x361f77b5,0xb5c7c99f,0x37f1808b,0xb7380cad,0xb88488e4, +0x38b22cd8,0x3a1981f4,0x3a86a3dc,0x3aecad94,0x3b352436,0x3b1e7385,0x3975e499,0xbaa8cbbe,0xbb107b7c,0xba00220d,0x3a805c87,0x3b094850,0x3b37362f,0x3a99e066,0xbb0a50a6,0xbb8dfe69,0xbba25b42,0xbb77d6b4,0xbb258d27,0xbaac9362,0xb96d95a6,0x390bc239,0xb8c9b5f1,0x37adbbc1,0xb5adf1d4, +0xb7a61fff,0xb72b2219,0xb71a6d05,0xb7031f3d,0xb6929813,0xb6d89c39,0x3635d556,0xb7863332,0x37730bb8,0xb8773874,0x3918c6a4,0xb995ea29,0x3b1a6bcf,0x3b86fef4,0x3b1169c1,0xba014ff3,0xbb82ba18,0xba224823,0x3b1a03e1,0x3b42986b,0x3b85e023,0x3b03127d,0xbb205eca,0xbb573725,0xbad1273a, +0x3b0cdd69,0x3ba6ebd0,0x3bbf79e0,0x3b8a0f26,0x3b53dcaa,0x3b00c2d3,0x3a1f2d23,0xb8f74620,0x38aee9d7,0xb8409178,0x37463fd0,0x36cdb780,0x3729a02e,0x36c57b09,0x36d5b938,0x36baef47,0x369d051b,0x36d92314,0x36a417cc,0x379881da,0xb79700d3,0x38a945b7,0xb9f8bcab,0xbb497f54,0xbc1ae71f, +0xbb7cf31d,0xba196e2e,0x3b18e038,0x3a6526a5,0xbae02a54,0xbba2f9c4,0xbb19e80e,0x3aa2b38a,0x3bb6539a,0x3b218bc2,0xb72a8ea8,0xbadd72cf,0xbb0ff2d8,0xbb1ecbd5,0xbb2c94a8,0xbb1447fb,0xbb07237d,0xbb049487,0xba7c28f7,0x391600a6,0xb4c34220,0x36ea6fef,0xb7546d0f,0xb704bd2e,0xb719d791, +0xb6fa0078,0xb71d32b0,0xb702673f,0xb76aaab1,0xb6f9a148,0xb818010a,0x3841a1d5,0xb94077ff,0x3a555089,0xbb72df03,0xbbd373a5,0x3a96ad17,0x3b41eddc,0x3aaaea58,0x3aa3f217,0x3a87ca31,0x39efa382,0xba141922,0xbad60ed6,0xbad7f87f,0xbaf0ae4e,0xbaa49727,0xba8e9481,0xb99b842b,0x39b902f5, +0x3a87a608,0x3ac825ab,0x3ae94ebd,0x3b0258f3,0x3a7eabb4,0xb923c925,0xb882729f,0x3778b667,0x36cadde4,0x37ac721d,0x37485e07,0x378679fe,0x37811971,0x37a4d524,0x37a81f12,0x38104c5c,0x37e70407,0x37ec2b1a,0xb61e188f,0xb8c026c5,0x3b0bda4a,0x3b166e15,0x3ab1d30d,0x3a62da4f,0x39ec9831, +0x38265396,0xba170ba2,0xba16f2ef,0xbaab487b,0xbacbdbe9,0xbaeb0eb3,0xbadbe731,0xbacc33b7,0xbab6c8f2,0xba0b1907,0xb7c40a97,0x394e913d,0x3a3edf26,0x3a8c2921,0x3abf7989,0x3aa67c8a,0x39df028c,0x361b8359,0x37c9278f,0xb8388619,0xb7dbdb65,0xb800f342,0xb7ecfff4,0xb811d4cf,0xb8183eab, +0xb84b82ed,0xb873dce8,0xb8a9a79d,0xb80aca8a,0xb8cd8805,0x3a02e095,0xb84e9b49,0x3988c667,0x3969a401,0x38b87d83,0xb8cf3ca2,0xb94fc3e7,0xb9817639,0xb9c2da65,0xba0d29f8,0xba460f73,0xba853966,0xba925f1e,0xba9c8f44,0xbaaf9dad,0xba98d576,0xba841d5c,0xba5d4ea0,0xba42049c,0xba359901, +0xba0aca81,0xba2195d6,0xb9ebcc48,0xb91bf5b8,0x381ab946,0x38897b37,0x388f2fc0,0x38729c44,0x388355f7,0x3894c233,0x38a12a13,0x38d39521,0x3903da02,0x39368fff,0x391352a5,0x38a8fb5d,0x391bb61e,0xba89fc93,0xba6f43db,0xba56950b,0xba423e81,0xba2ad674,0xba182264,0xba0b47a6,0xb9edd351, +0xb9b6a316,0xb975e359,0xb90681f1,0xb87d0762,0xb67f02a2,0x3882706b,0x3925eea3,0x3979f857,0x39b22f0b,0x39e0e4cd,0x3a064797,0x3a30b006,0x3a2a68de,0x390dccae,0xb90b99f5,0xb9874ad3,0xb967b5db,0xb92432aa,0xb90c203c,0xb92d5328,0xb935353a,0xb950af3c,0xb93d72b6,0xb9a60290,0xb9f4e59b, +0xba3a3c00,0xba64cd10,0xba6e02c5,0xb9b3bcf8,0xb9c237dd,0xb9bf0515,0xb9b10917,0xb9a5479e,0xb999ecb8,0xb98c94f6,0xb98533e8,0xb984f682,0xb98371f2,0xb977b9c3,0xb95cc345,0xb9371c8e,0xb915d56b,0xb8d9b9e9,0xb8911caa,0xb82f3642,0xb644d03e,0x380f7316,0x381f08df,0x390078c7,0x392fb34f, +0x398d85d1,0xb8b1c28a,0xb8ee0f92,0xb933cf57,0xb9820a49,0xb9a2e6a8,0xb9c19445,0xb9e2e32c,0xba025570,0xba05caa2,0xba00ea39,0xb9f3980f,0xb9aeabf2,0xb9b92099,0xb921dd46,0xba1dc477,0xba0f21a7,0xba13faeb,0xb9ec48c7,0xb9e2f694,0xba0781bc,0xb9f355ef,0xb9dd5205,0xb93ca3a5,0xb9f57204, +0xba16701b,0xba596058,0xba043431,0xb9f16211,0xba11a5af,0xba1dc96e,0xba2a394d,0xba4333f7,0xba24382c,0xba19c40a,0xba0db6d1,0xba067463,0xba0357a5,0xba2df082,0xba1c5995,0xba209049,0xba093911,0xba23e318,0xba15e285,0xb9d25bd4,0xb9d2411c,0xb9ae7ef2,0xb90673c3,0xb9fc801f,0xba10739d, +0xba1e14e0,0xba0f0798,0xba06efc9,0xba293024,0xb9cbf764,0xb9d49869,0xba1e963a,0xb9ff877b,0xb9a035f5,0x39892380,0xb9f01768,0xba5172a5,0xbab5dff8,0xba054077,0xb9d32c4c,0xba5f3466,0xba8dcab4,0xbaab8319,0xbac391cd,0xba976d6a,0xba66f1c6,0xba3b4c84,0xb9e6644d,0xb9c9bfd8,0xba037238, +0xb9831015,0xb8d5c7e5,0x3874ca99,0x37007e15,0x37a286d6,0x381eb3c0,0x37f2d0bf,0x3770b79a,0x389fd4e4,0xb80dae13,0xb9950643,0xb9f0a00e,0xb9ebbea9,0xb9c20a1b,0xba4bfaf1,0xb903c928,0xb8cbe1ad,0xb9bfae7a,0xb941b2ae,0xb89a441a,0x3aaa3959,0xb974ad8e,0xba44f526,0xbb0a85b3,0xb9f04f00, +0xb90a9503,0xba357bf7,0xba8355ce,0xbab13b8d,0xbadeafbb,0xba9d777b,0xba5ee199,0xba402f61,0xb9b30139,0xb935fcc1,0x38bbb174,0x38ec97eb,0x382f26b6,0x36929791,0x378bae03,0x37a7433c,0x366b69ad,0x36783ce4,0x362f3884,0xb7e78932,0x38022809,0x38c89f62,0x3817c4e4,0xb96f185d,0xb99b198e, +0xba847b73,0xb9432144,0xb9959fc9,0xba5bda0c,0xba361c2b,0x391a4396,0x3b0775fb,0xb92edfca,0xbadd0519,0xbb64be56,0xba49c83f,0xb8d925df,0xbac8d1e8,0xbb249f8a,0xbb595f4a,0xbb768f32,0xbb29718e,0xbad7ca17,0xba95911c,0xb9c8a05c,0x38222590,0xb739c880,0xb86b8e26,0xb7848897,0xb6b7533b, +0xb725180d,0xb736da48,0xb6084d18,0xb6784982,0x353843de,0x37282a39,0xb73a9cd4,0xb84dc985,0x37b1f1cb,0x381113b5,0x39c38281,0x3a1e16d2,0xb879c7ce,0x3a0901ab,0x3b42ab6e,0x3b0c9212,0x3ab76a6d,0xb9629adf,0x3af366cb,0x3b18ab7e,0x3aabf621,0x3a204e13,0x3a34ef05,0x3aed646e,0x3b8828e0, +0x3b96de3b,0x3b50ebb9,0x3b0897cf,0x3a82e6e0,0x39ab0978,0x3983d502,0xb76374a2,0x34d6d2b3,0x37e24e04,0x3721dd20,0x3634a05d,0x36c10a5a,0x36a403b3,0x3628a997,0x35882e2c,0x35dfaa29,0xb6e82966,0x374a79d4,0x37773217,0x375c76df,0xb8c222dd,0x39217809,0x3a48d2d5,0x3ab0f0e4,0x3b1a6684, +0x3b1484b1,0x3a57761c,0xb9d7bee8,0xbad5fd61,0xb9c9ecc0,0x3a1a66b0,0x3aaf92c6,0x3b1bea96,0x3ab4dc69,0xba9e9e5d,0xbb5792dc,0xbb8a8c6f,0xbb6ecb68,0xbb2e4cad,0xbacd07d4,0xb9de3f2e,0xb7372d01,0xb8523ff8,0x37e11536,0xb7b06a0a,0xb63aa336,0xb6505062,0xb6322773,0xb674d0b2,0xb54a558a, +0xb6872315,0x369f8b1b,0xb737be5e,0x37acf6c9,0xb887d898,0x38e90f6e,0xb932bae1,0x3a80c852,0x3b2bf33a,0x3aaf087e,0xba0b79dc,0xbb4905fa,0xbab917a1,0x3a4fcadd,0x3b0492d4,0x3b3ceaa5,0x3ade58eb,0xbaacc224,0xbb302929,0xbaef6eca,0x3a61b64a,0x3b6a6d26,0x3b98015d,0x3b79257c,0x3b3d534d, +0x3ae8d746,0x3a00fe1d,0x37752516,0x380724e5,0xb7cce778,0x37a23247,0xb54bf0e9,0x368c2e37,0x35edc35c,0x36502237,0x3629cc51,0x35e37d73,0x366624e1,0xb66aa2f5,0x3798c580,0xb801e11b,0x3902c770,0xb9bccfc2,0xba946796,0xbbc46b29,0xbb4cd02b,0xba7adfe0,0x3b358cd8,0x3a877de6,0xba851986, +0xbb54441f,0xbb2cb97e,0xb89e1564,0x3b8a26fb,0x3b2415e5,0x3a5df0f1,0xba860a22,0xbabafd84,0xbae523c6,0xbb0529b2,0xbae75306,0xbaca4505,0xbacab831,0xb9e8c358,0x391acaeb,0xb811f5b0,0x3683af04,0xb71cbdff,0xb58aad49,0xb6a0bd0c,0xb653a2b4,0xb6c5821f,0xb593ea09,0xb736161a,0x374cf11a, +0xb83a7be5,0x38a74713,0xb975986a,0x3a17b424,0xbb0e15b4,0xbbaaf110,0x3b0ec35d,0x3b80656f,0x3b3b7454,0x3b1d83db,0x3aed6f03,0x3a5a96d7,0xb9228145,0xba91064e,0xba96b1a9,0xbacb6a1c,0xba9af141,0xba88f9b1,0xb9c5983f,0x38e4e34b,0x3a0deae0,0x3a83c2ed,0x3aa1dd62,0x3ac78e57,0x3a0b8559, +0xb9664c39,0x38404996,0x35ae7acd,0x3737d25c,0x369b14fd,0x36e35ca2,0x370e5761,0x36e3112b,0x37521517,0xb427de81,0x37d50ea8,0xb7c2be44,0x38c8d479,0xb9063a6c,0x39df468c,0x3ac0edb8,0x3ac0c5c2,0x39e4bc60,0xb910140d,0xb9b35f3c,0xba1a3355,0xba6664cc,0xba33ad3e,0xba8132f1,0xba8c80aa, +0xbaa0a34b,0xba9933db,0xba8c21f9,0xba5c92b7,0xb951d911,0x395e82ba,0x39cbca4a,0x3a4fa4f0,0x3a7e8309,0x3aa3bf2e,0x3a6da433,0x38c7476a,0xb7746281,0xb7e27f99,0xb7486661,0xb74cb99c,0xb7555039,0xb780503c,0xb797a83b,0xb7810445,0xb7adb364,0xb6f3d116,0xb8315012,0xb73a1ad0,0xb8c51684, +0xb8c1ad08,0x39980f18,0x3a241f24,0x3a0edd4c,0x39e8bb39,0x3968f6ea,0x384e8fb4,0xb891b74b,0xb97bc772,0xb9f57f58,0xba38e4f4,0xba7f3725,0xba870cf8,0xba8da8cd,0xba9c72ca,0xba8a85ef,0xba753770,0xba53f2c2,0xba44c685,0xba39fa48,0xba2763c1,0xba175776,0xb9838889,0x387f3624,0x385f1d97, +0x38015e9f,0x37a53fbf,0x37c7067a,0x37f00277,0x380b0a18,0x38050017,0x3800f0a4,0x37f1881d,0x387247d9,0x38de87ae,0x38c15819,0x398792b8,0xba4a27a4,0xba27fb28,0xba25b683,0xba27861f,0xba21eecd,0xba17e5b2,0xba171e61,0xba1181fd,0xba00871c,0xb9dec6ed,0xb9c48f6b,0xb9b893c0,0xb9b5d53f, +0xb9b325e3,0xb9879e02,0xb9499e36,0xb8d5213e,0xb7ead95e,0x385e12ac,0x393b9fc3,0x39488317,0xb92c035f,0xb97aba26,0xb91e72ad,0xb87a0e1c,0xb79f588a,0xb797eb66,0xb7ac25cd,0xb7a98bf7,0xb7b674c9,0xb7b7efe4,0xb80604b4,0xb8ba6173,0xb9a27428,0xb9f3c6cb,0xba0b9f47,0xb9d6f291,0xb9cccc18, +0xb9d7e497,0xb9cf1448,0xb9cc17ee,0xb9cf0da8,0xb9ccc086,0xb9cdbfa6,0xb9d61d98,0xb9ddf7cf,0xb9dfcb6e,0xb9e04b85,0xb9da0d1a,0xb9d7c49c,0xb9c218ae,0xb9b23db0,0xb9a54be5,0xb9927422,0xb9819f6c,0xb9770021,0xb9305059,0xb8fa1bdd,0xb8c3ee47,0xb9a4a9cd,0xb9a56aff,0xb9b25a37,0xb9c8168d, +0xb9d8028c,0xb9e8f66a,0xb9f7ed09,0xba049dfa,0xba0830c7,0xba086ac0,0xba034247,0xb9fc1f99,0xb9ef32be,0xb9cba19d,0xb9ea8e52,0xb9d8b3ba,0xb9e4e2d8,0xb9b7a3e4,0xb9acf4e1,0xb9bdfb14,0xb9b9fe77,0xb9ad6eea,0xb92447bf,0xb9bb0529,0xb9e1526c,0xba1d163b,0xb9ced687,0xb9bda834,0xb9d79167, +0xb9dddf9f,0xb9ee4422,0xba0ed465,0xb9f03356,0xb9dfb057,0xb9c57470,0xb9b87377,0xb9c7f30c,0xba1e7463,0xb9d156f0,0xb9cb006e,0xb9a57b84,0xb9b83004,0xb9ab91c4,0xb9853ab2,0xb987d746,0xb96c107d,0xb8f10c72,0xb9adf5f3,0xb9d1e6ae,0xba0abafd,0xb9e2ec86,0xb9db1971,0xba03e40b,0xb9ab0886, +0xb9a6714e,0xb9ce0423,0xb9c60ef4,0xb98d6ff1,0x38f9146b,0xb9c5786d,0xba2095f8,0xba82e08c,0xb9e64212,0xb9b5c2b3,0xba1d412b,0xba368629,0xba6126fc,0xba8bed89,0xba5f348a,0xba2b62fb,0xb9f65b23,0xb99abdcc,0xb9723771,0xb94a1b31,0x37b0459f,0x38a7c23c,0x38dc5049,0x38ad3535,0x38b704b0, +0x38a41888,0x38a1dc83,0x3868d4d4,0x38978c55,0x387ce87c,0xb7234bd8,0xb952c03a,0xb9a39c8b,0xb99b2035,0xba378e38,0xb93c44d3,0xb918d0fa,0xb93a720b,0xb94b3e26,0xb928a66b,0x3a513449,0xb97e6ce9,0xba1aa12b,0xbac22731,0xb9f97887,0xb968eb44,0xba054fc5,0xba1b4e30,0xba59629a,0xba9f9d63, +0xba60d236,0xba1db7fb,0xb9dc9e50,0xb910d4cb,0x38052271,0x38a0e0af,0x38042ef7,0xb7a60760,0xb7e685f0,0xb7dfcb51,0xb7d33e23,0xb7eb4101,0xb7b15564,0xb7922274,0xb7c0eb90,0xb6eaaee5,0x37f21020,0x38d7bfbe,0xb75d3a88,0xb893cb4f,0xba6b5d5b,0xb98a9cef,0xb981c21c,0xb9d7ae6b,0xba089447, +0xb7fd7aa7,0x3aa5ab9b,0xb98d0b31,0xbaaaabf8,0xbb20a8d9,0xba43a7f4,0xb96a9e60,0xba82f69b,0xbabdea16,0xbb06f6b2,0xbb2f2e4c,0xbafc719c,0xbaa516f0,0xba324df4,0xb8f3fe06,0x383d436d,0xb82b7d8e,0xb73ac102,0x36874cbc,0x375092e9,0x373d05e7,0x3733e583,0x373e9da1,0x3716f330,0x3701ff9b, +0x372bf751,0x355e470c,0xb78ff7d8,0xb8246a43,0x38865b2b,0x3895a348,0x39a65af2,0xb9703210,0x38d6f298,0x3add9407,0x3aafa570,0x3a6e38d9,0xb9f9c7d2,0x3abb6ad0,0x3aef6765,0x3a620127,0x39a3cac1,0x394a82c6,0x3a6a8145,0x3b1e8ca8,0x3b4228fa,0x3b2434c5,0x3af41183,0x3a92a2d7,0x3a1e236f, +0x38bd8a82,0xb7afaf6b,0x379cc1d1,0x36acacf0,0xb5da536f,0xb6bbf73d,0xb6b7be20,0xb6aaf624,0xb6b55643,0xb688bab6,0xb6984cf3,0xb64a0ade,0xb676b593,0x376038a3,0xb64179e1,0x36599d93,0xb9012f48,0x3a1fff8e,0x3a78f1e0,0x3adea8d9,0x3ae7a5c8,0x3a7aac2c,0x38b86405,0xba8fcc71,0xb9a92440, +0x398e0bb1,0x3a546642,0x3ae84907,0x3aa23d16,0xba0a0be5,0xbb09a107,0xbb446b66,0xbb3ae82e,0xbb13e25f,0xbabed2db,0xba109a82,0xb7abe764,0x3713bb1c,0xb6b5db82,0xb6c62430,0x35f08975,0x362c4e54,0x36503fc1,0x3638a3fb,0x364ca6cb,0x3608b6d9,0x36565428,0x3502f20d,0x366b0f23,0xb7186067, +0xb706bb86,0x3810bc31,0x390eecb7,0x3aadf915,0x3a34fe06,0xb9e831bb,0xbb04572a,0xbacf23ba,0xb9345def,0x3aa09629,0x3ae94c84,0x3aa06fef,0xba057b11,0xbaf58585,0xbaca2750,0x39447198,0x3b0e4f9c,0x3b4e303f,0x3b3cde83,0x3b11688f,0x3ab9d138,0x39db00d2,0x378b73df,0xb5c0c827,0xb69d07f2, +0x3714c652,0xb67ef106,0xb5193cf6,0xb63f0613,0xb5f9dcf1,0xb6173f09,0xb60c857b,0xb5a4bdfa,0xb681c347,0x36ce41b3,0xb7727e51,0x386552cc,0xb8f8e8ed,0x3913523c,0xbb5d92b4,0xbb0faa59,0xba6ac689,0x3b2264ce,0x3a80db44,0xb9dea0eb,0xbae3cb58,0xbb0f5dd9,0xba28c051,0x3b3239b8,0x3b0d5c26, +0x3aa46829,0xb9c30b4d,0xba3e315c,0xba8a553d,0xbaa9d521,0xba95ad22,0xba7e86a5,0xba739891,0xb8d867aa,0x389d777d,0xb8029f56,0x36b020e6,0xb5f421a7,0x36676407,0x361077eb,0x364a60bc,0x3611ecd9,0x367e940a,0xb4b06610,0x37121d25,0xb76c866a,0x37eeeaf4,0xb88fec7b,0x38cc72f8,0xba150599, +0xbb450013,0x3b1f3dd4,0x3b707632,0x3b583060,0x3b2f4c45,0x3b051d73,0x3a8dfd9a,0x39350bd5,0xba22b7fe,0xba3f0d49,0xba95405f,0xba795175,0xba6489b6,0xb9c6bace,0xb8550c41,0x3957fe44,0x3a1b58fa,0x3a44f745,0x3a89d704,0x38b81b82,0xb8d2b2e7,0x3852fce5,0xb74938c3,0x36a6f290,0xb6f51fb7, +0xb65cce0b,0xb6a68aff,0xb6b415c2,0xb6609c85,0xb6f6beb5,0x36139caf,0xb789a4d8,0x3838252f,0xb8b7b51a,0x398494db,0x3a1efb0a,0x3a4a55d8,0xb95433e6,0xba32cd9e,0xba488ca4,0xba67fbe9,0xba76f883,0xba2f2378,0xba396855,0xba31a672,0xba3f2d8f,0xba373502,0xba23d415,0xb9dc7457,0xb6fd1b65, +0x399a4f4e,0x39e5a7ed,0x3a3a6a9e,0x3a419f55,0x3a7c6984,0x39e3ac6a,0xb8949aac,0x3722774b,0xb7d9152a,0x37504460,0x36c264b8,0x37367ae0,0x3714dd6e,0x373a486b,0x371b2d8b,0x3722eca9,0x37085fe2,0x371eb474,0xb811d17c,0x3804be71,0xb95a343d,0x39b7adfc,0x3a47644b,0x3a2375ce,0x3a184a4c, +0x39c4c0a8,0x394f68f7,0x384e26df,0xb90392eb,0xb9b60677,0xba125851,0xba4e10a4,0xba52f21b,0xba57d847,0xba68528c,0xba4f03c5,0xba392190,0xba21e40f,0xba1a8c81,0xba100ff6,0xba0f977d,0xb9c7f629,0x379f31d4,0x3888b4b2,0x3713570b,0xb76c6be0,0xb7d00eae,0xb7b087f2,0xb7c93aaf,0xb7d70b9b, +0xb7cae0ac,0xb7a48a9b,0xb7e5e86f,0xb73d8f11,0x37c4628f,0x38aa0b46,0x387b7f2b,0xb9e85634,0xb9db9516,0xb9e0a21e,0xb9f8d7af,0xb9fe4c2f,0xb9f5d818,0xb9fd6c6f,0xba00152b,0xb9ee9aa0,0xb9de2f6f,0xb9d7a454,0xb9da115e,0xb9e71640,0xb9f68b5b,0xb9d9da9e,0xb9c3c39b,0xb9a2997e,0xb98a2a43, +0xb9530fe9,0xb8f8e32b,0xb91244ba,0xb983cc88,0xb8e20510,0x35b4fa41,0x3897d520,0x38a42100,0x3890ab84,0x389ceea2,0x3896eb7b,0x38a2a5d3,0x3892f532,0x38c5126b,0x389e96ae,0xb78ef521,0xb92db978,0xb9452894,0xb9ca2092,0xb9a615a1,0xb9b6ddd6,0xb9b39a3d,0xb9b4dbc1,0xb9bd9287,0xb9c09d6e, +0xb9c4e81c,0xb9d07776,0xb9dbd9af,0xb9e20fb1,0xb9e99be7,0xb9eab213,0xb9efa8a1,0xb9dea8aa,0xb9d3ee1d,0xb9cb3fb7,0xb9bd7f0b,0xb9b433a9,0xb9aaf760,0xb990ff47,0xb9936fe6,0xb9ab11b3,0xb9b36630,0xb9a3944e,0xb99b0aca,0xb9a2d4a2,0xb9a65953,0xb9ab37bb,0xb9aef3e7,0xb9b5557f,0xb9b6618f, +0xb9c23ff8,0xb9c9c0e2,0xb9f9e1eb,0xb9e67ffd,0xb9e4b271,0xb9a25898,0xb99b8946,0xb99caccf,0xb987e433,0xb978bed9,0xb978e698,0xb9870605,0xb983a4d4,0xb9231c59,0xb98b83f2,0xb9a0318b,0xb9cc8d1c,0xb998d3e0,0xb98ea930,0xb996d1f3,0xb995483f,0xb99d643f,0xb9bcaa13,0xb9a26c6c,0xb9987be8, +0xb982f6fc,0xb9776406,0xb98ac500,0xb9c9b760,0xb8316401,0xb886669f,0xb86ee8eb,0xb88edad7,0xb8789122,0xb82a3378,0xb82cd5b6,0xb809deeb,0x3543d7dd,0xb87db798,0xb8751b26,0xb9b5d477,0xb9a741bd,0xb9a6c014,0xb9bccacb,0xb972312a,0xb96971c4,0xb960a40c,0xb98b8c5a,0xb96ef399,0xb7e98653, +0xb99ed918,0xb9e3b2b9,0xba23ca49,0xb9b920c8,0xb99919b6,0xb9cdcb3a,0xb9db2033,0xba053adf,0xba2c0888,0xba101ee4,0xb9e0cc42,0xb9983c24,0xb9334737,0x381067dd,0x3852e7f7,0x38873be1,0xb58bfc88,0x37e96c96,0x37b25fb5,0x37adb80f,0x372d5a78,0x37376029,0x35b2d83b,0x3674dc0f,0x368b9960, +0x3882883d,0x3876a9ae,0x35d125e4,0x3639f085,0xba175f85,0xb9173a08,0xb91995ff,0xb852260c,0xb93d4688,0xb957f636,0x39a003c1,0xb9884b34,0xb9e9f844,0xba67b643,0xb9dcd4cb,0xb98be17f,0xb9b90949,0xb9b165ff,0xb9f225ed,0xba421dd6,0xba0bd3a0,0xb9c872b9,0xb973f45b,0x3839ecc9,0x37b59e87, +0xb7c89402,0xb7d1d47d,0xb7026a16,0xb7179ee8,0xb7103007,0xb6badaa3,0xb647c49d,0xb6740869,0xb5c93bbf,0xb5c456b0,0xb71ce071,0xb7ca567c,0xb8256ca5,0x38911650,0x39069427,0xba2242bc,0xb9552408,0xb8fd3ea0,0xb89fcc82,0xb9a14a69,0xb9082e9c,0x3a0b7243,0xb9a72f5e,0xba699a7d,0xbabd2c8c, +0xba23e469,0xb9a26077,0xba1bbaa1,0xba4155c2,0xba9022c9,0xbace8677,0xba9d7ae2,0xba571e3d,0xb9ac197d,0x37f0357d,0xb76d4e08,0x3611ce7d,0x3751ee53,0x36b58867,0x368bae70,0x3684e499,0x36345562,0x3604216d,0x35d36a04,0x35a85c0c,0x357e65d2,0x36d07ee2,0x371c0316,0x3782a4b1,0xb8820d17, +0x37ac9759,0x39180bee,0xb97dd964,0xb8daa5ba,0x3a220495,0x3a116db8,0x39ba7856,0xba1bd7f8,0x3a47196c,0x3a8a43d9,0x39e2d52a,0x38cfabba,0xb8145a29,0x39bb18b6,0x3a904e0d,0x3ac8a0a0,0x3ad2aea6,0x3aa65b80,0x3a62a50d,0x3a04119c,0xb8374936,0xb5cc4b99,0x364432f4,0xb6e3a621,0xb6325bb3, +0xb616f7ab,0xb5f69bc3,0xb5c90a20,0xb588cc88,0xb5862456,0xb4e6e2ea,0xb5d03c74,0xb56dc49f,0xb736e1c8,0x3777c986,0xb809234f,0xb90fd6c2,0x39bbc6f0,0x3a19573a,0x3a81cc36,0x3a920d1b,0x3a503c11,0x399947d8,0xba1eb0c8,0xb961be86,0x38c5737e,0x39efae33,0x3a955c3a,0x3a717c84,0xb8beea6e, +0xba88e08e,0xbaded2f5,0xbaef29a1,0xbac81890,0xba8ebf26,0xb9eed083,0x387dbbb3,0xb7774012,0x36be990a,0xb3db60a0,0x366216e9,0x35020089,0x35c7b07f,0x354d5f0b,0x3557c5db,0x353a8d12,0x34dab654,0x35c0249b,0xb4fced89,0x371a930f,0xb79597e3,0x383b8b5c,0xb7dd20ed,0x39e105df,0x398b8b08, +0xb99ba82d,0xba93f3f1,0xbaa555a2,0xba0e67ad,0x3a159066,0x3a576862,0x3a2732e3,0xb916519f,0xba9b205b,0xba97b0d8,0xb96e4c68,0x3a706368,0x3ad427a6,0x3ae05d16,0x3ab11b49,0x3a688068,0x39921ddb,0x361d847e,0xb7960fb6,0x3722196d,0xb6bc2dde,0xb3863ab0,0xb5de6615,0xb547a1a6,0xb59077c7, +0xb52a2f9d,0xb5930379,0xb4aadb93,0xb60d9415,0x358f24a7,0xb700d008,0x3758ddd3,0xb7772980,0x39ac5b75,0xbab1bbdb,0xbab5cdf2,0xba25fc3d,0x3ac05b2d,0x3a262171,0xb902c886,0xba43c98e,0xbab45ea3,0xba2de5cb,0x3aab2cee,0x3abcab92,0x3a91b519,0x3830566d,0xb98f775b,0xba0e1aa3,0xba2f217c, +0xba2215c8,0xba0806c1,0xb9c902e8,0x37dd4d39,0x3671a308,0xb693af85,0x36859251,0x35c13524,0x35ce1433,0x35d3c1aa,0x35a55fe3,0x35d8a054,0x355adfd9,0x3644257c,0xb59e51c3,0x370d01cd,0xb74cebc1,0x38211af0,0xb8ccce77,0x38543487,0xba5352c7,0x3ae636f5,0x3b231205,0x3b267aca,0x3b074ace, +0x3ad24a83,0x3a7ef10f,0x39a09abb,0xb9846259,0xb9dd3e82,0xba3c0938,0xba2ce75e,0xba1de53f,0xb9a82716,0xb9118e17,0xb59325a1,0x3981ff28,0x39ba6548,0x3a06b52c,0xb8aa5a98,0x370367e2,0x360acdd2,0xb6cd1af7,0xb61bd5ab,0xb652a1f1,0xb63213f7,0xb63d1624,0xb618f66d,0xb663802c,0xb6103fc4, +0xb6bdd8ce,0x354c99f3,0xb74c00d8,0x375eab00,0xb7a136a0,0x388d3049,0x39867642,0xb9f1c64b,0xba48ffe0,0xba54b412,0xba627872,0xba5676d4,0xba18e29d,0xb9f938b2,0xb9c39522,0xb9b60965,0xb9ab7e82,0xb9935541,0xb9184357,0x38791d24,0x397271ef,0x39ad90b5,0x39f25a77,0x39ead4b6,0x3a1575c9, +0x38322623,0xb82bbb4b,0x3720db94,0x36f51e8a,0x36d7369b,0x36bdaf90,0x36ca1921,0x36b1c473,0x36bc48f2,0x36b445fc,0x3706555c,0x36a900f7,0x3741cf2e,0xb588d62a,0x37fb7973,0xb8a0bb0d,0x38e47428,0x3a29b13d,0x39fb225a,0x39f94445,0x39a9e958,0x39477d44,0x3877d207,0xb8b58fbe,0xb974a19c, +0xb9c211d6,0xba056456,0xba03d30f,0xba0258eb,0xba06fb10,0xb9f0ac10,0xb9d87a7d,0xb9bc33d9,0xb9b84654,0xb9a6c430,0xb9bc3eaa,0xb85fe17a,0x3889bbe3,0xb7fb0d31,0xb78824c1,0xb74b5d30,0xb75a8350,0xb75c7f37,0xb74a4d70,0xb7457d8c,0xb75e2705,0xb77c1441,0xb790f0e5,0xb70a4e29,0xb7e084d6, +0xb6c03ede,0xb7899886,0xb91f51a7,0xb9629fc0,0xb9884fa7,0xb99a5997,0xb9a87e93,0xb9a93ca3,0xb9b481f6,0xb9be01bd,0xb9b4dc3d,0xb9ad8abb,0xb9ad9e5a,0xb9b1befe,0xb9be604d,0xb9cdc134,0xb9c169b4,0xb9b8c507,0xb9a8678e,0xb9a0e56b,0xb988ba8f,0xb988469b,0xb96f008b,0xb7201734,0x3866f1e8, +0x385b2f5d,0x37838aaf,0x381abb09,0x38051da7,0x3815beec,0x381916a3,0x3821626a,0x382164de,0x3834eb1b,0x379a4ac0,0x385b6fd1,0x381e83b8,0x381d802d,0xb99ce003,0xb96b3074,0xb97a8759,0xb9806c66,0xb983e321,0xb98c4608,0xb990d9cc,0xb9965153,0xb99eaff2,0xb9a7b5d9,0xb9ad7bb6,0xb9b54b16, +0xb9b88a0e,0xb9bd9d8a,0xb9b4bff2,0xb9affcb4,0xb9abef84,0xb9a536b7,0xb9a310c4,0xb9943593,0xb99fb7c2,0xb9a40266,0xb9a69fef,0xb885dc7d,0xb8a5f063,0xb89d98b7,0xb8a8e9e0,0xb8a8ffe0,0xb8adb3b7,0xb8ae9aaf,0xb8b3f29c,0xb8ac7891,0xb8afe09f,0xb867ae5f,0xb9aa94e3,0xb9a096be,0xb9b9c503, +0xb85c74c1,0xb8afb100,0xb82467c7,0xb8473650,0xb8284c89,0xb8267a63,0xb8368c24,0xb82e2af9,0xb7b5311c,0xb8354480,0xb855f350,0xb88bee89,0xb853abb6,0xb843f029,0xb8484f3b,0xb83c2bac,0xb846ce27,0xb87d3a17,0xb85572ac,0xb8529232,0xb7f9c9ea,0xb87f4e20,0xb8aa4695,0xb8edb9ea,0x3708d8b9, +0x355c44d2,0x380f7d97,0x38091424,0x37fdb600,0x37ee67d7,0x37e72514,0x37e7bcbf,0x37e18f99,0xb4347a32,0x3700b1bc,0xb8e2bd83,0xb8c5f5dc,0xb8b358f7,0xb89641f7,0xb8169b47,0xb82f95c6,0xb8195d05,0xb84bfa08,0xb825a0ef,0x360109d6,0xb84fa8a0,0xb89c9e15,0xb8e60491,0xb886a0e6,0xb854f2fa, +0xb883e49f,0xb8805081,0xb8a3dc95,0xb8eadcc5,0xb8cbc86d,0xb8989bc6,0xb834716c,0xb884b318,0x37f0cbd9,0x37f6e43e,0x372874b4,0x368c7721,0xb677d91d,0xb6ebc24d,0xb67f1ce9,0xb5f7dbde,0xb60244f3,0xb66b8de6,0x35d818e9,0xb50540cb,0x370a4056,0x380c10c8,0x37f6bbfd,0x37c6ea6d,0xb8f69cad, +0xb7bb610e,0xb7eede90,0xb5898277,0xb809a10b,0xb8144efb,0x3895f77b,0xb80cce3e,0xb891418a,0xb91cc33b,0xb8a3d5d8,0xb8469078,0xb858460f,0xb80cf426,0xb8679f4b,0xb8fa8723,0xb8af6346,0xb8661000,0xb7ef1c77,0xb60907e5,0x35d6365c,0xb70df879,0x361659ad,0x363b60f8,0x364d8cab,0x36591103, +0x35eee2f8,0x35620ba6,0x35ca762e,0x35dbcccf,0x35a5225a,0x367a9741,0x357ba20c,0xb60e93e2,0xb7197ddc,0x37d4ad8f,0xb8ea4968,0xb8372f66,0xb7e30edb,0xb734fa81,0xb895315e,0xb81a1550,0x38d8f656,0xb85af501,0xb926af00,0xb986f670,0xb90171db,0xb873a94e,0xb8b3cef3,0xb8b6d5aa,0xb9290f83, +0xb98fe7bb,0xb96cb318,0xb9190276,0xb83e50b3,0xb6b97f1e,0x37172512,0x361ebc43,0x36504040,0xb61a83c3,0xb578d512,0xb5b4dbbd,0xb54fc239,0xb50d754b,0xb53ec231,0xb5177d42,0xb573b6b4,0xb58ebcb4,0xb5e69988,0x3724c752,0xb5d870f2,0xb717562e,0x375cc4d1,0xb78cec70,0xb764978d,0x38fedd36, +0x39190ab7,0x3904ae98,0xb8afd3b9,0x396464d6,0x399206ed,0x391127d7,0x3880d83b,0x37485f7b,0x38943390,0x394a04f4,0x399e523a,0x39d5fe54,0x39ad8f90,0x3991e0c0,0x38f5fa29,0xb812eb2e,0x378f7906,0xb70b4d40,0x35a52c59,0xb489ef8b,0x35999d50,0x34a946b4,0x3518e2a8,0x344b441f,0x350bd2cf, +0x32c425bb,0x3590e6ae,0xb51d89c0,0x362f9354,0xb73ec3e4,0x37ab3f92,0xb832fed9,0x389d7321,0x3928ac87,0x395841e3,0x3981435e,0x395d6681,0x38df0b1f,0xb9057faa,0xb847bd82,0x3722d4d2,0x38b0ef0e,0x397ba013,0x395df6b2,0x3754b9ff,0xb932ec64,0xb9a41585,0xb9bb98e2,0xb9ab0c38,0xb97f9808, +0xb8e50052,0x37c2cfb9,0xb53bb68b,0x32589d1c,0x35c2ec4e,0xb56f3f39,0xb43d9bcb,0xb4fbd261,0xb44ab733,0xb4b403dc,0xb388a430,0xb530289d,0x3510644e,0xb623f7a8,0x36a2d998,0xb71fb629,0x37d1b243,0x35442598,0x37a87cb8,0x37f9c566,0xb8701520,0xb9452dfc,0xb98b2816,0xb8f73850,0x392c8f60, +0x395943b4,0x393662a1,0x38181007,0xb95803c0,0xb96abcbc,0xb84144fb,0x39353a8a,0x39a651c3,0x39bb5ca7,0x39971171,0x395e5b8e,0x38866788,0xb79e9216,0x36b03e34,0xb62e1ba0,0x34318339,0x33df2e8d,0x350e57e0,0x348569a1,0x34b363d3,0x347d972a,0x34ab47c5,0x34a8d173,0x34e3b247,0x34fec6a9, +0xb524f743,0x34ca20b8,0xb62ce7d5,0x3855cd5b,0xb935632c,0xb99478f7,0xb8e50104,0x39c3bc68,0x3953207e,0x38267357,0xb8c1d864,0xb99aa79f,0xb93d2d15,0x396f17dd,0x39b1182a,0x39a1ee27,0x38a548c4,0xb6eb5db8,0xb899bde4,0xb8bb346c,0xb8ca794e,0xb8a3adf0,0xb85038b2,0x36b9ace6,0x3680b3ff, +0xb5893a65,0x35f2d1d2,0xb5b02950,0xb4590b55,0xb53417db,0xb4d621ad,0xb4eae9ea,0xb51ec58c,0xb4cdf6ff,0xb5a4ce28,0x35159c29,0xb62c4146,0x37318c0a,0xb78311d5,0x36c416f5,0x37232f55,0x39f30ce1,0x3a1c1031,0x3a2e2926,0x3a0fe9a1,0x39ec0e7e,0x39a504ba,0x39110b67,0xb6a3d977,0xb893542a, +0xb911bcbe,0xb90fe56c,0xb9070385,0xb8a31c12,0xb83b6c9d,0xb71d8e18,0x38003af8,0x388f48c9,0x389a57a4,0xb8038488,0x376ccc25,0xb724e9a4,0x3625a30c,0xb41406c8,0x35d97b71,0x353b5b8e,0x358bfa2b,0x35503dff,0x35906fae,0x359c616c,0x35c3cd29,0x35a0e39f,0xb446dc35,0xb6c4be31,0xb2827af2, +0xb7df05b1,0x368757d8,0xb8f8ffcc,0xb959384e,0xb95acf04,0xb95f402d,0xb940fe83,0xb8f8160c,0xb8cd6491,0xb897169b,0xb877e86d,0xb8479b20,0xb811cb54,0xb6d4dd76,0x380b7c98,0x3890aada,0x38c7267c,0x38ed162e,0x38e6eec2,0x38e441e7,0xb8163da9,0x3775a1d2,0x3608b551,0x35ea5cdf,0xb64fdf74, +0xb5e9636e,0xb6166a8b,0xb5f484e9,0xb5f691fd,0xb607cbc0,0xb646d98d,0xb60fcd13,0xb693a140,0x365d0e4e,0xb696522d,0x37f06d37,0xb83bee32,0x39318f3e,0x390c7bb8,0x39073c72,0x38cdf8c7,0x388a93a9,0x380e14d1,0x34f44fbd,0xb817a504,0xb891ef8d,0xb8da53f4,0xb8d50701,0xb8cfa23b,0xb8d3f6bd, +0xb8b9e2d5,0xb8a74caa,0xb88df3ec,0xb88c45b2,0xb86969d5,0xb88fcdd4,0x37ca1aac,0xb7116cbb,0xb743271f,0x35b975ea,0x3681b261,0x36a8f879,0x369bf030,0x36985123,0x36806ec1,0x36ab8fc2,0x36cebbd8,0x36e86dc2,0x36a5441c,0x36b2dc41,0xb708d548,0x372b405e,0xb7d96d63,0xb7ade6ac,0xb855d8c9, +0xb85523e9,0xb876e698,0xb8734368,0xb8826e1d,0xb88a32d6,0xb88a6243,0xb88af50b,0xb892df5e,0xb89f1bc4,0xb8b4950d,0xb8cd47d0,0xb8c67b92,0xb8c3104b,0xb8b78ec8,0xb8b84853,0xb89dc932,0xb8bff899,0xb879db5d,0x383ce6ce,0x37caf7c0,0xb533793a,0xb71d62e8,0xb73ac5a6,0xb773dd52,0xb75ea16b, +0xb76fd338,0xb76d3ba5,0xb78a4c0c,0xb74af8d4,0xb729a903,0xb549edd4,0x37f08637,0x37e81b31,0xb89715a9,0xb8356279,0xb83bf248,0xb8419375,0xb84b03bd,0xb858ae64,0xb8619d70,0xb8675a21,0xb87e51ad,0xb88a5378,0xb892c0a7,0xb89d5235,0xb8a32dd6,0xb8ab6d84,0xb8a3fe25,0xb8a17554,0xb89ec5a2, +0xb89acaff,0xb89bac5f,0xb87d5e2e,0xb8d2a09e,0xb8bc01f4,0xb8cf307e,0x380947a0,0x37992239,0x381b73ae,0x381b062d,0x3817a3c7,0x381869b8,0x38172838,0x38191877,0x3813ea20,0x37ad8b28,0x38049fc9,0xb8b6c6f0,0xb896fb40,0xb89d04be, }; -const uint32_t orange53_rom_AlphaR32[578 * 86] = { -0x3e8ea109,0x3e55ac9d,0x3e8db542,0x3de19678,0xbd1ed16c,0xbdcac0a2,0x3df7b283,0xbad2c51b,0xbe09d494,0xbe10f4f6,0xbe080027,0xbdd3769d,0xbde123d0,0xbe14ab4d,0xbde470d3,0xbc5abf72,0x3dafd495,0xbdf03ce6,0xbcfc625f,0x3d93f399,0x3e786b29,0x3e4cd8b4,0x3e54cca2,0x3e548e04,0x3e5c24e4, -0x3e5da6d7,0x3e5a117b,0x3e5ab53d,0x3e5e3cbe,0x3e5e9d28,0x3e6ceadb,0x3e695073,0x3e76b99f,0x3e6f42bb,0x3e6cd5ad,0x3e63401f,0x3e602f99,0x3e9123b2,0x3e85e3e5,0xbde7a289,0x3e10529e,0xbc0a7ea5,0x3dcdd85d,0x3d97259a,0x3d69256c,0x3e0ee267,0x3d2e18bc,0x3d2d5ffe,0x3d00620c,0x3dbf913e, -0x3d47542f,0xbd861f57,0x3dd8eed6,0x3cd45c1f,0x3da996af,0xbc0cd600,0x3e5a09f3,0x3e759346,0x3e72da2d,0x3e8047f4,0x3e779264,0x3e76bdbc,0x3e894b23,0x3e8d0b1b,0x3e930915,0x3e92beda,0x3ea313b5,0x3e9b4420,0x3ead3f19,0x3eaa8da6,0x3ea7cd33,0x3e992a44,0x3e8be7b2,0x3eab7db9,0x3e7aa3df, -0x3cae8726,0x3e3886d1,0x3d12e3c4,0x3d9c276f,0xbc04591c,0x3de4e28a,0xbb273ca1,0x3e07f937,0xbd1436d6,0x3e229d26,0x3cfea3ad,0x3d6ae979,0x3d114030,0x3da06442,0x3da0308e,0x3d1f3a41,0x3d40432d,0x3e20a61e,0x3e85b976,0x3e6a3746,0x3e8af222,0x3e8713e7,0x3e8e10cb,0x3e92bea7,0x3e934cb8, -0x3e9e0dc5,0x3eabb8e1,0x3ebd6b1d,0x3ed05f33,0x3ee050b1,0x3eda5c7e,0x3ecb5e6c,0x3eac6088,0x3ea3e09d,0x3eb8b873,0x3e60c251,0xbd16d8eb,0x3d868198,0x3cae654d,0x3cf226eb,0x3cbfa2b8,0x3d111f31,0x3d3cd702,0x3d05ccb6,0x3c6c7d4f,0x3d39ad77,0xbc6711bc,0x3d81cba4,0xbc104711,0x3d21b7e0, -0x3d40fa0a,0x3ced65f9,0x3cdd8d04,0x3db08856,0x3e74382b,0x3e507fed,0x3e85e6c1,0x3e843ccc,0x3e8f9572,0x3e95c2d9,0x3e9df475,0x3ea8976f,0x3ebfaf54,0x3ed39604,0x3eeb45bb,0x3f038b7c,0x3f019861,0x3eed6e4d,0x3ec4552b,0x3ea21d37,0x3ec02030,0x3e8890e3,0x3aae4a60,0x3dd51a7f,0x3d77341f, -0x3d5b5c8e,0x3ca6145f,0x3c78190e,0x3baffe62,0x3aefe6c5,0x3d1e6640,0x3c9ac93a,0x3c34fc50,0xbacc7a80,0x3c99b8a3,0x3cd3301b,0x3b1ed80a,0x3dc8b8f2,0xbd4c745b,0x3e03b24e,0x3e5f184f,0x3e67bed4,0x3e8d4216,0x3e8d3b36,0x3e98b936,0x3ea0e2e8,0x3ea70cda,0x3ebc52ce,0x3ed07af7,0x3efce455, -0x3f0dcca4,0x3f1cd097,0x3f1b7bc3,0x3f0c38f8,0x3ed4cf83,0x3ec039c5,0x3edcab5f,0x3ef9aa36,0x3db4845b,0x3d5373e5,0x3da31b58,0x3b5ded85,0x3dce7e68,0x3cab28f3,0x3d457650,0x3cd43193,0x3cacc8f8,0xbbce27b2,0x3c61c5c4,0x3c795ba7,0x3c361ab7,0x3d01856a,0xbc92d66f,0x3d8c278a,0x3d28ca59, -0x3e26ddb6,0x3e7451ea,0x3e84b25c,0x3eac01f0,0x3ebb0982,0x3ed80fd3,0x3ed8a9cb,0x3f01d944,0x3f07582d,0x3f096cd9,0x3f1be64b,0x3f2221a6,0x3f23150c,0x3f179d33,0x3f130ab4,0x3f04670d,0x3f013790,0x3f0ce14e,0x3e1ec18c,0xbe49989e,0x3e558e97,0xbcd028cc,0x3dba9cec,0x3d21a3fb,0xbcce00f2, -0x3d23693f,0x3ae6a5d7,0x3c253bb5,0x3cae8557,0x3c9cf719,0x3c8b8dd8,0x3c4610e0,0x3d862d03,0x3ce77900,0x3d95450e,0xbce56cd2,0x3db1b67b,0x3e947771,0x3e9065dd,0x3ec536d0,0x3eccafe3,0x3ede94c3,0x3ee36905,0x3ee21154,0x3ef024bc,0x3f002b89,0x3f115804,0x3f1cc766,0x3f21ef92,0x3f28821b, -0x3f1b9962,0x3f0e3cc8,0x3ef3efa0,0x3f273fa3,0x3e615f69,0x3e322353,0x3dc639c7,0x3d405368,0x3d979d81,0x3d0ce8b6,0x3cb48028,0x3c16f0c2,0x3c6ecbd1,0x3cd2c258,0x3c7d6a9d,0x3c3ac9a4,0x3d07786d,0x3c533ef7,0x3cf9f9d0,0x3cdca61b,0x3d143ac8,0x3d585cb5,0x3e46cde6,0x3e960227,0x3e9c14e7, -0x3ecd9995,0x3ef1003f,0x3f0bb00e,0x3f214e00,0x3f213791,0x3f17a886,0x3f0caf0e,0x3f0a2811,0x3f11f025,0x3f227d3d,0x3f382291,0x3f420190,0x3f5b8244,0x3f26fd8f,0x3f551734,0x3ed3a718,0xbe139a15,0x3e83e25a,0xbc2fa9e1,0x3cbcad43,0x3b67c9c2,0x3d2a1830,0x3cba62b7,0x3d556ede,0x3ce1ab29, -0x3ca9effb,0x3b76c0a1,0x3cdcc48b,0x3d527e2e,0x3cca3511,0x3d33f806,0x3da78323,0x3c58bd42,0x3d38f622,0x3e9d80f4,0x3e90f193,0x3ec116ae,0x3ef22bd4,0x3f123c37,0x3f255a12,0x3f31bf3b,0x3f314c04,0x3f270525,0x3f175cf5,0x3f184643,0x3f279eb7,0x3f3ca10a,0x3f5020b1,0x3f739ff5,0x3f5d313d, -0x3f67ea87,0x3ed4c761,0x3dfe8ba2,0x3e1d7bea,0xbbd49560,0x3e2512e8,0x3d0128d2,0xbcdf653d,0x3cbdc949,0x3cd4131c,0x3ce6d624,0x3d089bff,0x3c4c96a1,0x3d4032bd,0x3cc8e076,0x3c85d7c5,0x3cf21364,0x3db3b8f0,0x3cc47e7d,0x3e8377eb,0x3e888997,0x3e92ead8,0x3eb46ca9,0x3ec80439,0x3ee8df9c, -0x3f05a1e1,0x3f0fdd32,0x3f19609a,0x3f1d9f93,0x3f21cd3e,0x3f255f2e,0x3f1a3dfa,0x3f2d2eea,0x3f2a7434,0x3f4eed89,0x3f4a1796,0x3f5b4288,0x3ee4a5fb,0xbddf2a2b,0x3e632c1f,0x3da2cb6d,0x3d3edb9a,0x3d6ae07a,0x3e125734,0x3c3c3311,0x3d391430,0xba461930,0x3d06df05,0x3cb10c66,0x3d650960, -0x3c597167,0x3cf732e2,0x3d6645c3,0x3c9f906d,0x3d485e47,0x3d013a74,0x3e93fe29,0x3e63cbe6,0x3e81808a,0x3e9fe593,0x3ec44c53,0x3ef4ad9e,0x3f0bbfee,0x3f162d3c,0x3f246e99,0x3f0b883b,0x3f03612e,0x3f112b43,0x3f0eb6bc,0x3f193239,0x3f39aed5,0x3f2d50e0,0x3f08a61b,0x3eee221b,0x3d994387, -0x3dc63b5c,0x3d44d681,0xbb96540c,0x3d5ccaae,0x3ab85081,0x3d8a321a,0xbd65cbdd,0x3de54ed9,0xbbc3583a,0x3d40846c,0x3ce37307,0x3d0286f7,0x3d27112a,0x3dc4de3b,0x3e0abdc0,0xbd646685,0x3e799fad,0x3e94ef22,0x3e749a3c,0x3e9a54a5,0x3ea3e082,0x3ebbdabf,0x3ec4c640,0x3ec74df8,0x3ec5d8c3, -0x3ec174dd,0x3ec3af29,0x3edddf25,0x3ee8ed48,0x3eea7a76,0x3ee6e78d,0x3ef256b2,0x3efe8d51,0x3effe348,0x3d117eba,0x3e271444,0x3ddb0049,0x3d91d241,0x3e483842,0x3d077763,0x3d80c89c,0x3c3e6ed5,0x3db672e7,0x3baabe2a,0x3da91102,0xbc9fa108,0x3d8b4fe3,0x3d02efc4,0x3d4efa59,0xbc674533, -0x3cff6543,0x3dd55179,0x3c86a11f,0x3e946201,0x3e462537,0x3e76b35d,0x3e826d37,0x3e955c65,0x3e9990db,0x3ea7a29a,0x3eae669b,0x3eb2fa4a,0x3ebc09cc,0x3ec6c15a,0x3ed28dee,0x3ed13ee1,0x3ec3c1b1,0x3eceef69,0x3e9b464b,0x3e9c4fdf,0x3e9dee43,0xbd19c607,0x3e181b44,0x3c77a857,0xbd24b05a, -0x3c43e2fc,0x3dac1b30,0x3d20e495,0x3dbb0d8c,0xbd5ec88b,0x3e238329,0x3d24c441,0x3dc94b48,0xbcdf7fcb,0x3d8f2d1d,0x3dab27be,0x3db95a71,0xbd2722b2,0x3e243b57,0x3e7c7be0,0x3e35b6b4,0x3e565cb1,0x3e43fbeb,0x3e55850d,0x3e620703,0x3e8f504d,0x3ea41741,0x3ebe5d50,0x3ebd302f,0x3ec210d5, -0x3ec32375,0x3ebba78c,0x3eb214ac,0x3eb54cdb,0x3e97d575,0x3e817f88,0x3e9728e9,0xbdcb94f1,0x3e413170,0x3e0abfe4,0x3dfdcd24,0x3e43735c,0x3d148387,0x3e3ca01a,0x3d1e20b4,0x3d49d804,0x3ba2e1e0,0x3dc38c43,0x3d83a68b,0x3daf8cb8,0x3d8e2156,0xbd28c3f7,0x3df8312a,0xbdcd7a05,0x3e6b2a65, -0x3e59a101,0x3e630406,0x3e662b35,0x3e6b1ab3,0x3e691105,0x3e57e803,0x3e735de2,0x3e6c14b6,0x3e78e48c,0x3e8c3fac,0x3e9032d5,0x3ea30b29,0x3ea0fd55,0x3e8a1db5,0x3e8be25a,0x3e949d80,0x3e77ab27,0x3e91d496,0x3da6046e,0xbdaae3d1,0xbe129a95,0x3dd2216f,0xbd02050f,0xbe2e3782,0xbe4c8ac0, -0xbe1bfa45,0xbdf749ee,0xbe0a6596,0xbe2eded5,0xbe318c64,0xbc5fbd0c,0x3e035bfb,0xbdea2abf,0xbd03acb2,0x3dd4a60e,0x3e903222,0x3e69c207,0x3e6ee80a,0x3e6d49b9,0x3e6c4d26,0x3e6b106d,0x3e693d02,0x3e76412e,0x3e7cde15,0x3e841bbe,0x3e873975,0x3e849d89,0x3e8926e2,0x3e86520c,0x3e822e35, -0x3e83438b,0x3e7ff0b4,0x3ea96df9,0x3f177013,0x3ec54e68,0x3eb821a8,0x3ee644f2,0x3edb9c63,0x3ea694c6,0x3ecfee15,0x3ed0a676,0x3eae22b1,0x3ea48b15,0x3e9e9125,0x3e9949a0,0x3e974830,0x3e92fa8d,0x3e99f7bf,0x3ecb883b,0x3ed1bb2d,0x3e93855b,0x3ecba62a,0x3ed1fafe,0x3eaedc62,0x3eb5bbe4, -0x3eba6e80,0x3eb917f4,0x3ec0b965,0x3ec3e9d0,0x3ec25bff,0x3ec44711,0x3ec8237a,0x3ec6e25f,0x3ed17858,0x3ecb7bed,0x3ed77b59,0x3ed12b4c,0x3ed30adc,0x3ed01928,0x3ec8e1a9,0x3ef7eca2,0x3f01d77a,0x3f047cc9,0x3edcd083,0x3eda2841,0x3ed75f21,0x3ee41848,0x3ec88ba0,0x3eb87d36,0x3ed563c9, -0x3ec6fc74,0x3ec9d6a2,0x3ec8c3ea,0x3ec7a2b5,0x3eb0a518,0x3ed74a13,0x3ecbaefc,0x3ecce1ad,0x3ed9ee0c,0x3ee12af7,0x3ed32cff,0x3ee152f0,0x3ee2cbf6,0x3ee1a5c8,0x3ede85f5,0x3ef878d7,0x3f042fad,0x3f086ef6,0x3f03e758,0x3f11aba6,0x3f06fb5e,0x3f185c3c,0x3f16aefd,0x3f170532,0x3f0e61da, -0x3f036a14,0x3f071d09,0x3f0b1cf0,0x3f06edfb,0x3ee7efba,0x3ed34066,0x3ec67bfb,0x3eb3ba00,0x3ea5b507,0x3e9987cc,0x3e93e50c,0x3e9bca9d,0x3e9f174f,0x3e810bf6,0x3e9a6ef3,0x3e91ed78,0x3e99bbc0,0x3eadd811,0x3ea2993e,0x3ec5fdd7,0x3ebeac01,0x3ec4e631,0x3edc7807,0x3ee94aa4,0x3ef55864, -0x3f0134dc,0x3f095422,0x3f0d5e7a,0x3f183219,0x3f2071fc,0x3f27ef2d,0x3f344a82,0x3f430e40,0x3f3e333f,0x3f3a30a1,0x3f2b75f8,0x3f1eb4bc,0x3f02b18c,0x3f08759e,0x3efa14ad,0x3ec7b7f6,0x3eacc5de,0x3e8c3f63,0x3e6ebca1,0x3e7e8ecb,0x3e3f79f4,0x3e2a3eb1,0x3e24a5c2,0x3e208059,0x3e25a4f2, -0x3e2b21ed,0x3e2a4473,0x3e42f8b8,0x3e70b038,0x3e5eda07,0x3e91c313,0x3e9d6c5f,0x3eb1e74b,0x3ebd3c7f,0x3edbe74a,0x3eea8862,0x3efbba9f,0x3f066dce,0x3f1684e1,0x3f1d9945,0x3f29140b,0x3f36b5c4,0x3f44968e,0x3f5e05d9,0x3f5c75c8,0x3f553310,0x3f34f8bb,0x3f2068cc,0x3f1a28dc,0x3f0f504b, -0x3f001332,0x3ec3eaa4,0x3e979bbe,0x3e7ed2ee,0x3e4defe0,0x3e10d86e,0x3dc6d6b0,0x3d9c1e32,0x3d91dce0,0x3d42c82e,0x3d1da532,0x3d32fd02,0x3d8b9b27,0x3db3728b,0x3e05f9f2,0x3e2fb49b,0x3e5029d2,0x3e9155dc,0x3ea11c29,0x3eca0614,0x3ee4e165,0x3ef9ead5,0x3f0dda5c,0x3f19564b,0x3f278eac, -0x3f3a121a,0x3f451bc6,0x3f584acb,0x3f6e86a4,0x3f864952,0x3f857718,0x3f809dae,0x3f5f2f02,0x3f3b8997,0x3f3252bf,0x3f1c84ff,0x3f2b6211,0x3ef2a155,0x3eb8f63c,0x3e95e38e,0x3e774337,0x3e430329,0x3e17fc74,0x3ddf8a4f,0x3df2e002,0x3d6e5f75,0x3dac3e05,0x3d9c3c0e,0x3dd128da,0x3e18fa29, -0x3e19d9e1,0x3e56ea96,0x3e9e8b3d,0x3ebf1d02,0x3f00e6a2,0x3f1b7f8f,0x3f375554,0x3f449e78,0x3f507014,0x3f70d9fa,0x3f757fc0,0x3f7f388d,0x3f83abf1,0x3f992b8e,0x3f9b8ca2,0x3f951c86,0x3f8998b5,0x3f84972f,0x3f8042db,0x3f5f4400,0x3f63482d,0x3f449090,0x3f2976d0,0x3f0a5616,0x3edb5e26, -0x3eb7c0ca,0x3e81280b,0x3e286b39,0x3e1c919d,0x3dd587d0,0x3db9f6c0,0x3dc5664f,0x3d9abdb2,0x3dbe3777,0x3dedb6b7,0x3e24e5f5,0x3e73a77f,0x3e951b5f,0x3eabad6b,0x3edb9d0a,0x3f03f980,0x3f18bce0,0x3f291dc1,0x3f4a26ee,0x3f6131b7,0x3f83168c,0x3f8bc20d,0x3f9b6797,0x3f9c27ad,0x3fac27d2, -0x3fb06f44,0x3faa8914,0x3fa47e6e,0x3f9c6dc1,0x3f99bbe3,0x3f8a0abc,0x3f7e634a,0x3f71b565,0x3f506c31,0x3f1b2b7d,0x3f0eb570,0x3ecca58c,0x3e9883cd,0x3e5c4147,0x3e138560,0x3e07f7c8,0x3e1f0f67,0x3dff8137,0x3dfaf28c,0x3e11942f,0x3e28daba,0x3e50a708,0x3e89db7b,0x3ea58cff,0x3ecb0909, -0x3ee1e05d,0x3ef8865c,0x3f154c5a,0x3f2acaa5,0x3f3920b7,0x3f47f675,0x3f702b7a,0x3f871ed9,0x3f954d10,0x3fa9ab46,0x3fafe03b,0x3fab4f03,0x3f9a45dc,0x3f8f8838,0x3f87d205,0x3f77a4be,0x3f85e42c,0x3f4b1fcd,0x3f7aed48,0x3f5701fc,0x3f1d484e,0x3f05fc69,0x3ec5a959,0x3e98827a,0x3e5f0047, -0x3e3504f5,0x3e4066e6,0x3e8f61c8,0x3e12ec2a,0x3df9decc,0x3e34c4c9,0x3e60ac03,0x3e810e92,0x3eb7262e,0x3e9b8e5f,0x3ebdbe4d,0x3ee63bb1,0x3ed85aec,0x3f01585f,0x3f2108ad,0x3f2a42d2,0x3f403874,0x3f4c3616,0x3f748f9a,0x3f89e007,0x3f9a00f3,0x3fa37c62,0x3f9e5a0e,0x3f9a0ab7,0x3f83cc74, -0x3f6ea55a,0x3f441fa3,0x3f5cd61f,0x3f229f51,0x3f6ac06b,0x3f68e804,0x3f070ebe,0x3f095411,0x3ea965c5,0x3e9ea06c,0x3e23bd2b,0x3e5ef345,0x3e4125fe,0x3ea39acf,0x3e4fa900,0x3e00cdf6,0x3e5bd4a8,0x3e6a68c1,0x3e81b3be,0x3e9b465f,0x3ed29e57,0x3ee183bc,0x3ee4baaf,0x3eeb06f2,0x3f03bde8, -0x3f0d1984,0x3f32b927,0x3f4d97bc,0x3f613f54,0x3f760499,0x3f85a916,0x3f885f5b,0x3f9a19b0,0x3fa4034e,0x3fa65900,0x3f8e41d7,0x3f6b1469,0x3f28196d,0x3f4f169e,0x3f391732,0x3f54d6e9,0x3f73d961,0x3f17dd22,0x3efcd7d7,0x3ebb7037,0x3ecf7a70,0x3eb91415,0x3e8be148,0x3e87eb1d,0x3e68456f, -0x3e5316e9,0x3e43c855,0x3e70e0cf,0x3e8d7aeb,0x3e98d159,0x3ec7902c,0x3ebf11ee,0x3efd0a99,0x3f0878a1,0x3f17de03,0x3f19781d,0x3f0a463b,0x3f202d19,0x3f2ab50c,0x3f4939fb,0x3f5df42f,0x3f75a0a8,0x3f85739b,0x3f9197ca,0x3f953803,0x3f9e6fb3,0x3f94571a,0x3f8d2920,0x3f75d0d3,0x3f78b62b, -0x3f5ea118,0x3f4e3205,0x3f4f7c2d,0x3f27b8a3,0x3f08c423,0x3ee93ebc,0x3ebf3b49,0x3e9b5519,0x3e9f7c75,0x3e384ec3,0x3eb658f1,0x3e41d0a5,0x3e7001c2,0x3e78883e,0x3e8d716b,0x3ec0d4a4,0x3ee2659d,0x3f053c7a,0x3eea57f6,0x3f202db5,0x3f2a4450,0x3f22ebe2,0x3f13f707,0x3f1d1350,0x3f2f81a0, -0x3f47a2d9,0x3f5cfaac,0x3f7ef524,0x3f8d9bdd,0x3f92c7e6,0x3f97b0f5,0x3f94838b,0x3f939ffd,0x3f8bd825,0x3f7b842f,0x3f78d12c,0x3f5f9fe1,0x3f567d8d,0x3f4a7025,0x3f261431,0x3f06ea17,0x3ef9cb95,0x3ed667c6,0x3eac530b,0x3eaca3af,0x3eb569d9,0x3e9d456b,0x3eabb76b,0x3e828798,0x3eb37f9e, -0x3eac939c,0x3eb62292,0x3ed563fa,0x3ef727a3,0x3f1884e3,0x3f0e7814,0x3f2a6459,0x3f1ed60a,0x3f2a79c1,0x3f2c046d,0x3f3517b7,0x3f417d1f,0x3f52fc11,0x3f62c6d4,0x3f756070,0x3f829241,0x3f84dd74,0x3f88c821,0x3f8859f8,0x3f850051,0x3f7d6dcc,0x3f707ad2,0x3f54a23d,0x3f4b95e5,0x3f21c63c, -0x3f28ef57,0x3f127132,0x3ef21e4f,0x3ee189fe,0x3edd847d,0x3ecdbd21,0x3edd48a1,0x3ec33ba6,0x3f0e3433,0x3ebf400c,0x3f0027b7,0x3ebc8535,0x3f0032f6,0x3efabc3d,0x3f08f9ad,0x3ee0bd56,0x3f27c39e,0x3f25d40d,0x3f2c9c49,0x3f307fee,0x3f38570d,0x3f434c6b,0x3f4aff32,0x3f54061c,0x3f5b6c0d, -0x3f60ad6a,0x3f65cb2a,0x3f6f2527,0x3f78de59,0x3f6bd2e3,0x3f6b87d6,0x3f69d2cb,0x3f5bb810,0x3f406aa0,0x3f4d3d00,0x3f1cd032,0x3f31a1e4,0x3f2ded76,0x3f3184d1,0x3f3b8e4f,0x3f0c3fe6,0x3f2ac65e,0x3f19d11a,0x3f16e925,0x3f0ecffa,0x3f1d0dbf,0x3f125d6e,0x3f21a47d,0x3f25ffc0,0x3f07c4c4, -0x3f326d05,0x3ef49697,0x3f37e174,0x3f2f74d3,0x3f3cd0ee,0x3f3cfae1,0x3f428613,0x3f3f250f,0x3f39417b,0x3f4b948c,0x3f46ddcb,0x3f4e378b,0x3f58ca8f,0x3f4e2199,0x3f58c365,0x3f5ae3e5,0x3f410220,0x3f45b841,0x3f4e6218,0x3f1edccf,0x3f24965b,0x3f26c0a6,0x3f07fdf1,0x3eadeef1,0x3f22b3e6, -0x3f0ed0b6,0x3eb5413d,0x3ea41d08,0x3ead0da6,0x3eb37ed6,0x3eaf9eb0,0x3ea476c2,0x3ea5b648,0x3f12285e,0x3f2431ee,0x3ea7e258,0x3f0e01fe,0x3f27efae,0x3f1c315e,0x3f183bb3,0x3f1c5971,0x3f1ca97f,0x3f1f314b,0x3f2017de,0x3f1e2ac9,0x3f22ad9a,0x3f1fad9b,0x3f227998,0x3f242566,0x3f233b19, -0x3f279689,0x3f26a7e9,0x3f21f8fb,0x3f254003,0x3f252aae,0x3f7a646e,0xbcf8234c,0xbd553190,0xbdcbda9c,0xbcbcfa06,0x3e0a8043,0x3e9bd38f,0xbcc94f54,0x3dd034a3,0x3e9c51b1,0x3ea43483,0x3ea83ef5,0x3e9bec42,0x3e9e6dc2,0x3eb5d571,0x3ea136d8,0x3ddbd7b3,0x3b8851e4,0x3eacbbdb,0x3e163560, -0x3cf70e43,0xbd8638d2,0xbd0f90f1,0xbd437293,0xbd530083,0xbd5c910d,0xbd5b3bf5,0xbd4d8c67,0xbd4fb165,0xbd55325e,0xbd5bb9d1,0xbd86a4d9,0xbd9178e5,0xbdb161ea,0xbd9d68b8,0xbd9b51b3,0xbd93878c,0xbd903f8a,0xbd6351db,0xbdbb6310,0x3e8c7756,0x3d38d79e,0x3e3f12ba,0x3d78602d,0x3d938816, -0x3e038e54,0x3cd76927,0x3dcb0ca6,0x3dffc005,0x3dd5555f,0x3d880c3b,0x3e0274d2,0x3e7d6b61,0x3d819125,0x3e165b42,0x3dd4cce0,0x3e2e62f8,0xbd1ccb0c,0xbccb7e65,0xbd181487,0xbd5d4531,0xbd4c9848,0xbd41329e,0xbd3bfd47,0xbd2c2225,0xbd3e4ef9,0xbd680f7b,0xbd9d1c2d,0xbdbef68c,0xbe1aaa7a, -0xbe09a943,0xbdf83176,0xbdaad375,0xbd851764,0xbddcf54f,0xbd1fcff1,0x3df9f168,0xbcbac17a,0x3dd0e664,0x3da3d9a4,0x3e0fae9d,0x3cccddaf,0x3dfdf14a,0x3bad6de2,0x3e081943,0xbceb4d89,0x3e02b98e,0x3d5690f4,0x3deb8fa7,0x3d936c20,0x3d908b4f,0x3e19b5e0,0x3de62cb5,0x3d7848c3,0xbd1747a3, -0xbcccca28,0xbd994abd,0xbd8d221a,0xbd917012,0xbd558cc8,0xbd2f2562,0xbd57b993,0xbd817234,0xbdf74c52,0xbe3bcd42,0xbe901c8f,0xbe75bc30,0xbe62e73f,0xbe1e5393,0xbe02dba4,0xbd6c8363,0x3a980874,0x3e1acd83,0x3da980fd,0x3dcb1f9a,0x3df53bce,0x3e05ffa9,0x3ce2c7cc,0x3d4a03a9,0x3d80a580, -0x3deaa90b,0x3da82fdb,0x3df56ea7,0x3d8562d6,0x3e07d1ce,0x3de1d358,0x3dd48ba3,0x3e1cfd1b,0x3e0c0bb6,0x3dceb243,0x3bb48a7c,0xbb925e33,0xbd6d94ba,0xbd7308f0,0xbd571e3f,0xbc9a29f7,0xbbd9b89e,0xbaac9c80,0xbd4aa3f3,0xbdbac50c,0xbe4dc4c3,0xbebec90d,0xbea30b15,0xbe8e5987,0xbe05b6e6, -0xbd742158,0xbdcb20af,0x3c87dc72,0x3e25c2a3,0x3d85dec7,0x3d974ca0,0x3dc0d9cd,0x3dd553c1,0x3da4428c,0x3d9c3634,0x3d549f2e,0x3d11aa0d,0x3d50f6ef,0x3d66d4d0,0x3d9e8390,0x3d93e9cb,0x3db9aecb,0x3dfe1547,0x3dbffd42,0x3e5840d0,0x3dcbc5c8,0x3cdefe83,0xbc546f5c,0xbd98f635,0xbdb0fc5c, -0xbd89f778,0xbd2deca7,0xbb96f8de,0xbcbd299e,0xbc9741fb,0xbe266c0f,0xbe9957ee,0xbf05b030,0xbee6ce41,0xbed1b482,0xbe75ad33,0xbe1c74eb,0xbe56e3aa,0xbecbedca,0xbdc05191,0x3d8df079,0x3ce9610e,0x3da7a0a3,0xbc6a35a3,0x3d66e9d8,0x3a8a578b,0x3d1e85b5,0x3d70a0c5,0x3dd0352d,0x3dc70acc, -0x3d9e99b2,0x3dcebd94,0x3dc00e98,0x3e2da7bd,0x3e12d283,0x3e2e2cfa,0x3d797a00,0xbceb58e4,0xbdc0ba48,0xbe54f194,0xbe5869a6,0xbe8881aa,0xbe5a2248,0xbe7332a9,0xbe5dcc4d,0xbdf06f50,0xbed89352,0xbeea7a42,0xbedc360b,0xbeb4a1d2,0xbeb045bc,0xbeb4270a,0xbea000a4,0xbf160092,0x3b06b4df, -0x3ee533fe,0x3ce76e17,0x3e8347f2,0x3da06628,0x3e25d202,0x3e468ec4,0x3dd3ad55,0x3ddb05dc,0x3df4caa4,0x3d51009c,0x3ced5266,0x3d1e7b8c,0x3d7761db,0x3d21e9e7,0x3dc33185,0x3de40ffc,0x3e7f6ece,0x3e11ca66,0xbd67d2f5,0xbdb32162,0xbe8872c1,0xbeac8e5d,0xbee5e4c4,0xbefcf257,0xbef3a281, -0xbedae49e,0xbeae7a81,0xbf00e7c1,0xbf0ce04c,0xbf0e39b9,0xbef5e382,0xbeec0eff,0xbf035987,0xbf109fc3,0xbf2ab687,0xbe694f54,0xbdc3eb28,0x3d8fa7cf,0x3d9ef22f,0x3db39d9e,0x3e1cf6f4,0x3e16e34e,0x3e1700a6,0x3df02932,0x3e364b93,0x3e065405,0x3e0ade61,0x3dd2fb7f,0x3dc30557,0x3ddf16ba, -0x3e1055c4,0x3e1b2f54,0x3df5429d,0x3d02873f,0xbd82be2a,0xbe1f6b9c,0xbeb71828,0xbeddcebb,0xbf096f74,0xbf2b7f27,0xbf335421,0xbf2adac4,0xbf1429eb,0xbef4f150,0xbebff456,0xbeb36c53,0xbe4bfa7b,0xbe6adaec,0xbec3727b,0xbf07d8fd,0xbeb9b3f2,0xbee268a7,0x3e62aecd,0xbd9ab924,0x3e048499, -0x3e231f2d,0x3e2063d1,0x3e0620fc,0x3dff840b,0x3df989ff,0x3e8a8f7f,0x3e29d934,0x3e282c68,0x3e17e35c,0x3debe803,0x3e08fde9,0x3e1ce779,0x3e2929ae,0x3e507b90,0x3dd07cfe,0xbd98c699,0xbe214586,0xbea1c8df,0xbed94a7d,0xbf0cf8ea,0xbf1f2c26,0xbf3aced2,0xbf3998b8,0xbf2613ea,0xbeeb07ba, -0xbe895e13,0xbe8903b7,0x3c54fff8,0x3d6a51a2,0x3e09c268,0xbe6a8503,0xbdc46cab,0xbe5f4e1d,0xbdbf8dac,0x3e257829,0x3e1c7211,0x3dd1d7df,0x3e1abe17,0x3e6958d5,0x3e076c02,0x3e2c7713,0x3ea9b1fb,0x3de4affd,0x3de0e045,0x3df87588,0x3e1bfb99,0x3e531c0a,0x3e66e342,0x3e0d2f98,0x3e3f689d, -0xbc57ccdc,0xbd640d6e,0xbdc97243,0xbe487b75,0xbeab2370,0xbee5046d,0xbf0688dd,0xbf129ece,0xbf0e9d07,0xbed7999c,0xbedd31b0,0xbea4cde2,0xbe8a72a2,0x3ca7632f,0x3e7da689,0x3f13ff5d,0x3c8f9134,0xbe30cb18,0xbe4bf78a,0x3d1b3b9c,0x3c1d11ed,0x3e0b94c2,0x3e3d47b8,0x3dbc2fa2,0x3cb7112c, -0x3e3c808c,0x3e2b1da0,0x3e94eafb,0x3e42d3ee,0x3e4e79e4,0x3e1b2c0e,0x3e61ba7a,0x3e6902eb,0x3e30b033,0x3e9b0395,0x3e5d5e39,0x3e661e03,0xbdee199c,0xbdaa94dd,0xbdb63c5e,0xbe1db1fd,0xbe778269,0xbec7d4e4,0xbee0e3fc,0xbefd6306,0xbf042640,0xbecb1995,0xbe803019,0xbe51efac,0x3cfa73bb, -0x3d7504de,0x3d688e5c,0xbd704655,0xbdf796ed,0xbe09f2a0,0x3e0edfdf,0x3e0a824b,0x3e3491d8,0x3e5e0c37,0x3e286dec,0x3e51d64e,0x3e31bdec,0x3ebb63f6,0x3de15305,0x3e8586fb,0x3e38c156,0x3e660eea,0x3e5e928a,0x3e47a1ef,0x3e164239,0x3dbf587b,0x3ede16e8,0xbd283a1a,0xbdbfabbc,0xbbd1f04c, -0xbda1d7cc,0xbdbe9451,0xbe30e6b8,0xbe747dcc,0xbe9c059c,0xbea77703,0xbe97ad6a,0xbe8cbabd,0xbe6d4792,0xbe0c381e,0xbbcf0b7b,0x3d920664,0x3dc8f372,0xbd12ebb3,0xbe1841ce,0x3e870865,0x3dc5a057,0x3e4b4bc4,0x3e81f1f2,0x3d9d94ad,0x3e786c92,0x3e56e391,0x3e8fad24,0x3e2e6374,0x3e8a25c7, -0x3e3ac495,0x3eadc1d3,0x3e2f0b4e,0x3e7c22c2,0x3e76c79d,0x3ea041c9,0x3e7927cf,0x3e0e4c64,0x3e96ddc1,0xbdb1581f,0x3d8f6267,0x3d159ca3,0x3c6d3b79,0xbd196921,0xbd828695,0xbdd79f17,0xbe1582ba,0xbe23e36b,0xbe254500,0xbe19ffff,0xbde938d0,0xbd733249,0xbb40b1f5,0x3d59174b,0x3d9e9595, -0x3c939653,0x3c694acd,0x3f000b37,0x3e44e379,0x3ebf7043,0x3eda3319,0x3eb7a77f,0x3e4d2628,0x3e80d025,0x3e2f942e,0x3eb224e4,0x39164309,0x3e884461,0x3dcb5fb5,0x3ec9888f,0x3e497ed3,0x3e5848e8,0x3e52300d,0x3eea0980,0x3da56b18,0x3d290751,0x3e045cf1,0x3df869cd,0x3dfa0247,0x3dcb0608, -0x3da624e2,0x3beec429,0xbc7fa81b,0xbda70eae,0xbd8af773,0xbd886ec7,0xbd95e872,0xbd2dd634,0x3c506616,0x3d48d87c,0x3d945dfe,0x3d466799,0xbdae15b1,0x3f1aba5b,0x3ddea8a0,0x3df6a4ab,0x3e41f90e,0x3b7927d1,0x3eb4f111,0x3da33c86,0x3e9ac5f1,0x3e96ad34,0x3eb5713e,0x3e481aae,0x3e85984f, -0x3e3cffab,0x3e4de7dc,0x3efd2b8c,0x3e213a6e,0x3f1d7996,0x3d810627,0x3dc01e03,0x3de52b85,0x3df45a7c,0x3e14927f,0x3e209d8d,0x3e2b2ca7,0x3e297a73,0x3e0cfccd,0x3df828a4,0x3dde0d99,0x3d8fa01d,0x3d5110ca,0x3d3fd1b1,0x3cfa4deb,0x3c940d63,0x3c0b5428,0xbd03cadb,0xbdd6fe5f,0x3e1ce8ba, -0x3ee614d1,0x3f2c0912,0x3db49720,0x3ea2366f,0x3f2bd8d6,0x3f393749,0x3f269501,0x3f1a9915,0x3f2086df,0x3f2fd738,0x3f307b46,0x3e8d4573,0x3d1c9e36,0x3f239ac5,0x3ea99855,0x3d8861df,0xbddbad5c,0xbcdc6433,0xbcdf2290,0xbcc6c65d,0xbc9504b4,0xbc766639,0xbc4f54f7,0xbc7e1eb4,0xbd04cb79, -0xbd104380,0xbd3b512c,0xbd56695e,0xbd775819,0xbd692ba2,0xbd54dd21,0xbd3a7367,0xbd2e0cc2,0x3b4b0100,0x3dfeb4e0,0x3dd10390,0x3e11046b,0x3d8fcea2,0xbccfdd77,0xbda9141e,0x3d92c4a6,0xbb3bca77,0xbdbc1db7,0xbdc9668e,0xbdc45439,0xbd9d1e76,0xbda4cfb0,0xbdcddb19,0xbda7dbc8,0xbbced157, -0x3d58374f,0xbdb28e8c,0xbcaa8083,0x3d28d74a,0x3de948bf,0x3dc4da74,0x3dcaaeb7,0x3dc527d5,0x3dc3c3fa,0x3dbb8553,0x3db19ffe,0x3da7cd4b,0x3da127c5,0x3d9d92cc,0x3dad4737,0x3db36983,0x3dc8fd17,0x3dce257b,0x3ddc1a2b,0x3ddd20ab,0x3de1bfdc,0x3e19ca47,0x3e243387,0xbd8f234e,0x3db021a3, -0xbc7c7c77,0x3d582a79,0x3d25dfa7,0x3cd6c76a,0x3d98424e,0x3d0d78ab,0x3d07ad14,0x3d103b1e,0x3d752449,0x3ce37c1c,0xbd00c770,0x3d7eadd6,0x3c9fdf94,0x3d3f9438,0x3c733c72,0x3e009ce0,0x3e047ad0,0x3e02c0f2,0x3df57e28,0x3ddadabe,0x3dc7d624,0x3dc6e41c,0x3d9d82ad,0x3d9603c9,0x3d97604f, -0x3da2e5f3,0x3dacbb6d,0x3df81048,0x3e01b08d,0x3e0594c1,0x3de934ea,0x3e02b49c,0x3e56cd96,0x3e2da5f4,0x3d3a4c2d,0x3e119e86,0x3d54598a,0x3d7b0a33,0x3c1bff49,0x3db9f5f4,0x3cc1668a,0x3dc9c1cf,0x3d149adc,0x3df6e8e1,0x3d4d1208,0x3d701abc,0x3d5ddaea,0x3d91ab31,0x3d8569b3,0x3d3bb575, -0x3d5a639b,0x3dda5c8f,0x3e1d65d1,0x3e077c9e,0x3e072680,0x3de204cf,0x3dafcaee,0x3d8ca74c,0x3d0d8ba6,0x3c8d5366,0x3c55fc7b,0x3d0bcc8e,0x3d90029b,0x3dff09be,0x3e126d3c,0x3e2daef0,0x3e26208f,0x3e427141,0x3e816118,0x3e542b1c,0x3d9cee26,0x3e08e6c8,0x3d70e75e,0x3d471ce7,0x3d1dc0e4, -0x3d9965b4,0x3d900f2f,0x3d8a8f3f,0x3d8f960e,0x3da78510,0x3d6099f0,0x3d8afc3c,0x3d5db091,0x3d8efb72,0x3d81b3cb,0x3d90c444,0x3db26c0c,0x3dec0938,0x3e2492b4,0x3e1c5375,0x3e0527ed,0x3ddb8a6e,0x3dae01dc,0x3d586ecb,0xba2b0d63,0xbc9df954,0xbbcea951,0xbcaaaca6,0x3d2857d9,0x3e06433b, -0x3e165bdc,0x3e250a90,0x3deeb6ca,0x3e322b89,0x3ea4b650,0x3e7834fe,0x3de31edf,0x3e32d8ab,0x3e0e71bd,0x3dbfe5bb,0x3d720376,0x3daf25e2,0x3d5d9925,0x3d870da8,0x3dcba0b7,0x3d955209,0x3d8f782e,0x3d7416de,0x3da39142,0x3da771fc,0x3d8d9b20,0x3db9ae0d,0x3d996ccf,0x3e116ef1,0x3e2a8247, -0x3e22182e,0x3e233909,0x3dfdcae1,0x3d82c79c,0x3d2d402d,0xbceb00b8,0xbd60295c,0xbdc5e0aa,0xbd1619f5,0x3c85c8b1,0x3dfbcfbb,0x3e229f58,0x3e60831e,0x3e5da5b4,0x3e95cf03,0x3f1a6491,0x3f6293c2,0x3ea9c4a1,0x3e841545,0x3e8a714f,0x3e44597d,0x3e8a13c1,0x3dc3d466,0x3e05c4a9,0x3d94c59c, -0x3d8af15a,0x3d85a7e8,0x3d8b307e,0x3d3c683f,0x3d5a59bf,0x3d5cfddd,0x3da1215b,0x3d94b4da,0x3d2c7963,0x3d8d818b,0x3d599e71,0x3cd33387,0xbd8ad75f,0xbe4a0e66,0xbe581c58,0xbecdc3fd,0xbeca5ca2,0xbedf8972,0xbef742ac,0xbe7aa3bc,0xbcc814d9,0x3e937765,0x3ec5b976,0x3efa9355,0x3ef307d1, -0x3f12e505,0x3f75109c,0x3e96bf8f,0xbe6d4034,0x3e8fe4fc,0x3b9fd68e,0x3e2fe8dc,0x3da0f516,0x3daff1c3,0x3ddafdc6,0x3da9df85,0x3de6b2bb,0x3d98b1c5,0x3d776871,0x3d523a94,0x3d7d39ce,0x3db48db9,0x3d1f5138,0x3d345438,0xbc968eea,0x3dbea6c1,0x3e2efb79,0x3e1e49e2,0x3e547c8e,0x3e3238a8, -0x3e135c2a,0x3d20bf57,0xbd96a403,0xbe46605b,0xbe8d958c,0xbe06c03e,0xbd11dfd7,0x3e64db6c,0x3e78f77c,0x3ed2e20f,0x3f255b8a,0x3f4d3638,0x3f784e51,0x3efd9685,0x3e9bfd56,0x3e5fb702,0x3de9b4ba,0x3e031670,0x3d9b7ccd,0x3db3d434,0x3dc0156f,0x3de7bbe7,0x3e12ec53,0x3dade3e0,0x3d90f5b5, -0x3ce096cd,0x3d92138a,0x3d91737f,0x3d630a67,0x3d9540f4,0x3e0202ed,0x3e5cc5d4,0x3e911008,0x3e9a68e4,0x3eb15217,0x3eb2b6ac,0x3eb49d14,0x3e93262c,0x3e614288,0x3dc906de,0xbc811f5b,0xbd1a1c31,0x3d8e49de,0x3ec38099,0x3e84ee30,0x3ec32667,0x3efad51a,0x3f45b25a,0x3f1033b7,0x3f393dca, -0x3dd53c4e,0x3ea0f97d,0x3e032807,0x3dd07f86,0x3db8e397,0x3dd5af2f,0x3dddd6d2,0x3ddbd399,0x3e2dec10,0x3dd2f4de,0x3da2e51d,0x3d69d929,0x3d8af0b7,0x3d9b4063,0x3d57670e,0x3e17bb64,0x3e012f47,0x3e588855,0x3ec9bfc2,0x3ed1663d,0x3ed82bb0,0x3edf4230,0x3ee0666e,0x3ed8b86c,0x3eda2724, -0x3eaad1e6,0x3e777e26,0x3df5c56c,0x3dfa39a9,0x3e49001a,0x3db3345b,0x3d94ed4c,0xbdcf8412,0x3eb3c3b8,0x3dac046e,0x3ec5565f,0x3eafd82e,0x3e36b13c,0x3e15156d,0x3e13d398,0x3e192f67,0x3e02c7ee,0x3e043a85,0x3decc816,0x3e19fa08,0x3dbba932,0x3dc15a86,0x3dbb0140,0x3db51ad2,0x3d975965, -0x3d94a701,0x3dc5db4e,0x3d993b33,0x3e81dba7,0x3ea61d31,0x3eb5e2e8,0x3ec388b2,0x3ea8baa4,0x3eb365e5,0x3eca373b,0x3ebc35a4,0x3e9f3b53,0x3e28e4a6,0x3d6b9954,0xbd8d7d71,0xbdd3c0bf,0xbdf51761,0xbe371141,0xbea54203,0xbd4f60fd,0xbdc7d9fa,0x3e228b50,0x3e574279,0x3e37cadf,0x3e1b4563, -0x3e1d3204,0x3e047fd2,0x3d3948d7,0x3d83dc75,0x3d74365a,0x3d92139b,0x3de42fea,0x3dcf66d4,0x3d21e11a,0x3b49ba2f,0x3bbaf4b5,0x3cb9983d,0xbccaf949,0xbd0498a6,0xbcd3b3a0,0x3e44f9b9,0x3e7c95b1,0x3ed12d3e,0x3ecf6a4a,0x3ed11569,0x3ec25c73,0x3eb5cbca,0x3e89d55b,0x3e40a4b4,0xbd36f974, -0xbe2bc9ce,0xbe8b6234,0xbebb2f27,0xbeaa806b,0xbeaafc51,0xbe620ebb,0xbe4b33fb,0xbd74d329,0xbcc53bfc,0xbc74405a,0x3c1b62fd,0xbbde89cf,0x3c93f590,0x3d92de75,0x3cfa021a,0x3d2a6498,0xbbdd062d,0x3da5a25d,0x3db03457,0x3d6e3cd9,0x3d4ce7ff,0xba2a52d0,0xbd2f4061,0xbc6e635e,0xbddb17be, -0x3bd6ca2f,0x3d84be2c,0x3e04e3be,0x3ea90f7a,0x3eac5455,0x3ebbbd94,0x3e9ec07c,0x3e83214f,0x3e4522d2,0x3d7b28b2,0xbcb8b592,0xbdf31b7b,0xbe82575a,0xbea3ca31,0xbea84c3f,0xbe9f9257,0xbe843c09,0xbe6d7fe5,0xbe35c5c2,0xbdeb7321,0xbda487a2,0xbc84290b,0xbbf53ba1,0x3bef97eb,0x3d5aadcd, -0x3be801e7,0x3bc7426b,0xb94fcfd4,0x3c4ef7fd,0x3d0ec667,0x3cae5839,0x3c62db5b,0x3c2b9f42,0xbd52d6b9,0xbd050f01,0xbd4cce11,0xbdb77c15,0x3daf8638,0x3dc53dfe,0x3e31700a,0x3e65594b,0x3e85f633,0x3e8da4ce,0x3e7cd776,0x3e465730,0x3e0de72e,0x3d25d890,0xbd24f05b,0xbe231379,0xbe712a62, -0xbe9641ab,0xbeb7cee8,0xbe940b25,0xbe789654,0xbe68c534,0xbe45afda,0xbe17f02c,0xbdd37a98,0xbd644db5,0xbd4721f2,0xbd24dce6,0xbcb94b15,0xbcbd4562,0xbd10d343,0xbd6c35ef,0xbd00dcd5,0xbd5cf543,0xbd364eff,0xbd78cc80,0xbd2bdffd,0xbd893792,0xbd5af0ce,0xbd51d522,0xbc3acd9b,0xbd039937, -0xbae1c2c1,0xbaf01bbb,0x3d019cc1,0x3d8a1202,0x3d19085d,0x3cd22fb5,0x3d091636,0xbd501c1a,0xbddb6864,0xbe2ebfc4,0xbe441d53,0xbe7cedb3,0xbea0286a,0xbe8a0027,0xbe71e61f,0xbe78733f,0xbe6732bd,0xbe5b9140,0xbe6c4114,0xbe74ae82,0xbe5ee15e,0xbe2f1d86,0xbe3c5f21,0xbe41012e,0xbe36cf43, -0xbe279a23,0xbe19a4cf,0xbe10b4c2,0xbe1c8675,0xbe331b10,0xbe27600c,0xbe3ca2ea,0xbe2ec9a9,0xbe52765a,0xbe61005b,0xbe6b185e,0xbe7e7346,0xbe870640,0xbe935d97,0xbea1f568,0xbea6a0d8,0xbeb112e5,0xbeb1c05b,0xbeb49641,0xbea7155d,0xbeaa9eba,0xbea198f0,0xbe85b072,0xbe7313e5,0xbe7df368, -0xbe38e41b,0xbe3d1091,0xbe66a8bf,0xbe5dc779,0xbe1c8ea5,0xbe400638,0xbe4f3233,0xbe2f903f,0xbe2832fe,0xbe20e8e9,0xbe1e7280,0xbe22e930,0xbe271e93,0xbe276117,0xbe516380,0xbe3d514f,0xbe0d086a,0xbe4e4482,0xbe45c130,0xbe108c36,0xbe14d74e,0xbe1ba6cc,0xbe1c6e7f,0xbe1d2b69,0xbe199936, -0xbe146ceb,0xbe15169d,0xbe137804,0xbe18d392,0xbe1ce556,0xbe26c4fb,0xbe2e8d95,0xbe319664,0xbe360488,0xbe3ff31d,0xbe427219,0xbe93acdf,0x3e297981,0x3dd9d218,0x3da7741c,0x3de8feb9,0x3e12b883,0x3e0c7d1f,0x3dd9466c,0x3dff2d1d,0x3e0ec2b4,0x3e0d1e5f,0x3e0bbb61,0x3e052648,0x3e02cf7b, -0x3e0505d6,0x3e00c421,0x3dfd8203,0x3de91cb1,0x3dfed854,0x3e043df4,0x3deb434e,0x3db5b55d,0x3dc821b1,0x3dcd5501,0x3dd28987,0x3de0d214,0x3de68b5f,0x3de1cd24,0x3de1e22c,0x3de4569c,0x3ddb3337,0x3dd96736,0x3dc52783,0x3dbc0e4c,0x3dac324e,0x3dace470,0x3dc18776,0x3dc6a119,0x3df1ed6b, -0x3df37021,0x3e6f6fbe,0x3e0e5fc0,0x3e38e0b9,0x3e115d3c,0x3e10801a,0x3e0a6157,0x3dd23dc3,0x3e0b98ec,0x3e0e4057,0x3e0920ba,0x3e03fd59,0x3e0767e1,0x3e0c60cb,0x3e0aa866,0x3e0ca341,0x3e060705,0x3e137aa1,0x3dee0482,0x3dedf89b,0x3e0252d7,0x3e0e1904,0x3e0e0d0d,0x3e0c1c6d,0x3e19da06, -0x3e1db542,0x3e170731,0x3e04cd71,0x3e1247a5,0x3dfb1982,0x3def2e1d,0x3dce7597,0x3de96129,0x3e148884,0x3e076c5a,0x3dcd19ec,0x3e0837a3,0x3e49aca4,0x3e0b6ca0,0x3e2d1752,0x3e09392f,0x3e0c88d9,0x3dc86224,0x3df6d04d,0x3dc59227,0x3e07a97c,0x3de45672,0x3debdb4e,0x3dd81fa9,0x3deb811a, -0x3de6ae6a,0x3e0052ca,0x3df9a87e,0x3e0c4e2e,0x3dd88080,0x3dd88957,0x3e06ce23,0x3e1cf5a5,0x3e2fa58d,0x3e39314d,0x3e362792,0x3e2dca04,0x3e2d206b,0x3e2066ed,0x3e16c41d,0x3e022c6d,0x3dc36d8a,0x3d6110c6,0x3d4343f9,0x3dce7166,0x3dd5bd04,0x3d0e11ea,0x3dc575b9,0x3e79f840,0x3e135c33, -0x3e4efc04,0x3e133a80,0x3de2c10f,0x3dbd03f0,0x3d67252a,0x3da2def8,0x3de0413c,0x3dc2a07e,0x3dcbf106,0x3d9e99e9,0x3dcb8ac3,0x3dd1cb3d,0x3de7fd27,0x3dd5051f,0x3dfc5467,0x3dd0aa75,0x3dd2fa54,0x3e025e5b,0x3e29c880,0x3e3ce3e9,0x3e4331d9,0x3e36e810,0x3e307fc2,0x3e14999e,0x3df4332e, -0x3e1ab3da,0x3e043295,0x3dd25589,0x3d4e2393,0x3d8d5039,0x3e09af95,0x3dce9265,0x3c66a2f6,0x3dddfd98,0x3e75fc14,0x3e13a5a4,0x3e02cb52,0x3df6675d,0x3dee70b1,0x3d981465,0x3d9016de,0x3d61bc1a,0x3dab55d3,0x3d9e8f1c,0x3da02b18,0x3d7e220c,0x3dac1ea0,0x3daf4650,0x3dc10f57,0x3ddcc222, -0x3e001447,0x3db03576,0x3dbe4f15,0x3e067ae9,0x3e3043ff,0x3e4ba822,0x3e63488a,0x3e467646,0x3e3b44f1,0x3e2f1217,0x3e2a097a,0x3e1902bf,0x3e0411a4,0x3dad8b2c,0xbbca923a,0xbd27b155,0x3d54a03f,0x3c40c5d9,0xbdf1c466,0xbe950b55,0x3ec71ac8,0x3e8db7c2,0x3e6234b0,0x3e5f19d8,0x3d9f6aca, -0x3e44d525,0x3de7fa57,0x3ddb8201,0x3df77a39,0x3da7376e,0x3da0a998,0x3d46e1b2,0x3da6cfa0,0x3ddbf3ba,0x3dc61ac0,0x3e019555,0x3e0727a0,0x3e254457,0x3e5f84b9,0x3e87befb,0x3ec5a3eb,0x3ee15830,0x3edc5b45,0x3eed7181,0x3ec4a404,0x3eae1b74,0x3e8f847a,0x3e80c031,0x3d027283,0xbe8c41da, -0xbec8a25e,0xbec7302c,0xbe62db8d,0xbe0c479e,0xbf2147d7,0x3e2b5e46,0x3f404642,0x3c4174f4,0x3e9417ab,0x3db066f0,0x3e1a6964,0x3de1932f,0x3daffbb9,0x3dd27268,0x3db475a4,0x3de54a07,0x3dd90629,0x3d9a68ef,0x3dbcf4ce,0x3db8f04f,0x3e02401b,0x3e0b41d2,0x3e2fe54c,0x3e2a0b1d,0x3e015e25, -0x3e310e54,0x3e694129,0x3e8b66be,0x3ea30950,0x3eb94bd5,0x3ec46185,0x3ec52cc2,0x3ec1f88d,0x3e8d5083,0x3e18c505,0xbdb4eb82,0xbe941755,0xbee92027,0xbf2f26b7,0xbf05e32f,0xbf853582,0xbe41682c,0xbd2bc307,0x3c430102,0x3e1ba3b5,0x3d9dfc5e,0x3e04c29c,0x3dbd4ba3,0x3deee4d2,0x3dd54ca4, -0x3e278beb,0x3d8f9490,0x3d695c58,0x3d766a43,0x3dc2c945,0x3df9d8b8,0x3e1e7ec1,0x3e3ec18b,0x3e51f01b,0x3e191a92,0x3e0fb11f,0x3e263130,0x3e40cc33,0x3e5df7b3,0x3e55ce24,0x3e8354ff,0x3e52b3ea,0x3e543da4,0x3e2d2961,0x3ce2b765,0xbe3c9035,0xbf02fb73,0xbf1c89aa,0xbf4435d4,0xbf75289e, -0xbf6d2096,0xbf845923,0xbf5c52c6,0x3df13023,0xbea83643,0x3da2c7ad,0x3d90c94b,0x3de681ff,0x3d9af35b,0x3dafc4a8,0x3da7a988,0x3dbc726d,0x3daba104,0x3d8afd88,0x3d653e5f,0x3ddfadfc,0x3dfc926f,0x3e0b329c,0x3e0402b6,0x3e5393dd,0x3e473875,0x3ddf61ac,0x3e0b6d16,0x3dfc42f1,0x3debf11e, -0x3d912e9c,0x3b193d8b,0xbdcc0d52,0xbe28c8fa,0xbe654d3a,0xbe99d79e,0xbeef9ec7,0xbf269918,0xbf304028,0xbf3cbd2d,0xbf339b99,0xbf6f1201,0xbf3b2a21,0xbf3e2d30,0xbee2a613,0xbe4fca52,0xbd27d274,0xbd8acb43,0x3c374ab9,0x3d3ac8b0,0x3d4765eb,0x3d8b6d3f,0xbcc31ec3,0x3de09d57,0x3e17233e, -0x3da2fc7d,0x3dd86134,0x3dce878f,0x3dcd15d7,0x3dda2f42,0x3e1f705c,0x3e118940,0x3e211a92,0x3e147f68,0x3d9e97fd,0x3de86605,0x3c80c235,0xbde5fff5,0xbe751b9a,0xbea4d9f2,0xbeb13094,0xbeb7b95a,0xbed06eb7,0xbedb83f9,0xbf1a7cf4,0xbf1762e6,0xbf1f3602,0xbf2c28ca,0xbf07b7a9,0xbf04357e, -0xbeb1a016,0xbe94e281,0xbe428486,0xbdde48cc,0xbdc7fa62,0xbc46b9c5,0x3d08d10e,0x3d44b362,0x3cb0a48c,0x3d6ffb69,0x3d6a66e1,0x3d7c0a3e,0x3da59891,0x3d9dbb84,0x3dfb57ac,0x3ddea14d,0x3e1078eb,0x3e1d3637,0x3e246ace,0x3e1d16e3,0x3cee7e6f,0xbd98f057,0xbe232c81,0xbe1e67ae,0xbe7a6a05, -0xbe654ac5,0xbe7c8a16,0xbd68dc0d,0xbd5de4a9,0xbdc114bb,0xbe4389a9,0xbeae9d73,0xbee02fc4,0xbef307c7,0xbe949e3c,0xbe9adcaf,0xbe62d780,0xbdf9ee1f,0xbd882971,0xbb4d0b33,0x3b6dbc73,0x3d192e64,0x3ce808b2,0x3cfae5cd,0x3c98bccb,0x3d355af7,0x3d1bbbc7,0x3d2d3c14,0x3cb7d87e,0x3d337bca, -0x3d9b28d7,0x3d847f92,0x3daf87b1,0x3de4acf8,0x3dfe1b2a,0x3da3ea27,0xbc2b0fec,0xbcf40991,0xbd3215f7,0xbbf199eb,0xbcd6c431,0xbcb91d99,0x3cb02541,0x3c244a77,0xbd06dc44,0xbc18d20a,0xbdf704c5,0xbe61525b,0xbea48924,0xbea0ba0b,0xbe2a0e34,0xbe4483a7,0xbe404376,0xbe07e6d9,0xbe265d70, -0xbdb054d0,0xbd4f5382,0xbc8679f3,0xbcaaf281,0x37c4ebeb,0x3c39fb70,0xbb6d077c,0x395d6362,0x3c1b0047,0x3c6a3d0d,0x3b20001f,0x3c86c7eb,0x3c2f309a,0x3cb432ea,0x3d1fac1e,0xbdc8631e,0xbdb726cb,0xbe125fbd,0xbe170543,0xbe41687f,0xbe4249be,0xbe52ad46,0xbe3cbd80,0xbe20aed5,0xbe0f0dcf, -0xbe0b74aa,0xbdd551cc,0xbdeb5ad9,0xbe097fb6,0xbe3316db,0xbe3b498a,0xbd9c58bc,0xbdb5d024,0xbe0d6d38,0xbdbeab39,0xbdd7f227,0xbdb24593,0xbd91a277,0xbc63b108,0xbc42f8dc,0xbc3212b2,0xbc6a98f5,0x3c4d9dd3,0x3b3cd621,0x3ab7f332,0xbcb70a2a,0xbc6cc7be,0xbd2902ee,0xbd37b51f,0xbd486956, -0xbdbe8f4d,0xbe16019a,0xbe03e083,0xbe3413bb,0xbe351ed4,0xbe4b77b1,0xbe51f96d,0xbe485f07,0xbe5ee9c0,0xbe6dc106,0xbe406da5,0xbe343a1e,0xbe1e2f46,0xbe17ac69,0xbdf91fdd,0xbdd2b378,0xbdc16691,0xbc762119,0x3cd4a61e,0xbe1cb1ed,0xbc948eaf,0xbc987ebf,0xbcd7bc66,0x3cf11acc,0xbd18fa16, -0x3bb34088,0xbd16b89e,0xbd2c142e,0xbd47eb69,0xbd14b214,0xbd1afd14,0xbd32b547,0xbd6f0574,0xbdb4c33b,0xbd7d857d,0xbdf09ef7,0xbd5aaf61,0xbce08264,0xbd764758,0xbd3b9b1d,0xbd5cadf6,0xbd2df1ca,0xbc4f3705,0xbd3e9737,0xba8f2a78,0xbaba54ce,0xbc8e3209,0xbc0496e1,0xbc62baa2,0xbc6d081c, -0xbc4201a4,0xbcab76e3,0xbc97b06a,0x3b177a21,0x3cc1e4a1,0xbd255b68,0xbdd41f1c,0xbe20c895,0xbc73cfb7,0xbd88da1a,0xbe10ea3d,0xbe19675a,0xbe099b95,0xbe019677,0xbe03d328,0xbe0ca40d,0xbe0eeb79,0xbd70ad5c,0xbc769ac6,0xbe143adb,0xbdab273c,0xbd3031fc,0xbc10f455,0xbccb5347,0xbce90cc7, -0xbd03ee37,0xbd2b7253,0xbd4242c4,0xbd4ede17,0xbd6df04d,0xbd420c55,0xbd50d3d0,0xbd342dba,0xbcde06b6,0xbcd85010,0xbc976264,0xbbfe0ae9,0xbaa7248f,0x3b7c5219,0x3a2aba7b,0x3d505b69,0xbba486a1,0xbc95ac28,0x3c9d4c94,0x3d78b687,0x3dbd0c3f,0x3cf0aaa5,0x3d80a09f,0x3dbcd6c8,0x3dc132d5, -0x3dc62ed4,0x3dc5316b,0x3dc5e862,0x3dd91e6b,0x3dc87e76,0x3d88df18,0x3d436735,0x3dd18860,0x3d982c5f,0x3d56c297,0x3c992bbc,0x3cde4e52,0x3cd9ea0b,0x3ce43095,0x3cf96fbf,0x3d04e5a0,0x3d06c84f,0x3d0c9e43,0x3d149b47,0x3d2554af,0x3d282976,0x3d1e11d6,0x3d11b4dc,0x3cd04ccb,0x3c5d1e90, -0xbb903fdb,0xbbd21c4f,0xbd3c77b6,0xbd0105b0,0x3da1a0f0,0x3cc8f9fa,0x3d995d89,0x3d201b24,0x3d63e39b,0x3d812cb4,0x3d5606c6,0x3d96b8d9,0x3da293b7,0x3da376bf,0x3d88319f,0x3d9bb392,0x3dc5933a,0x3d7b8050,0x3dadab15,0x3d94a859,0x3db1f970,0x3d1f428d,0x3d0b46f6,0x3d12f048,0x3d2dfa0a, -0x3d38ea17,0x3d4bfe1d,0x3d83a0a5,0x3d9dbb79,0x3dc3b32f,0x3de48be4,0x3df114cd,0x3dd58490,0x3d93b241,0x3d1a8603,0x39139aa7,0xbd2a2d25,0xbd46d3cf,0xbe13e08d,0xbde833f9,0xbcccc9de,0xbd0788c8,0x3ca6f948,0x3cc99338,0x3d3366b7,0x3d362cab,0x3d843862,0x3d546c6b,0x3dc11da1,0x3d572095, -0x3da82fa1,0x3d7a1992,0x3d96b7bb,0x3d7ca9a4,0x3d901f28,0x3db190bc,0x3d92b396,0x3d78b972,0x3d0600e6,0x3d3ff6c7,0x3d6007bc,0x3d84fa6a,0x3d9f7e7f,0x3dc74fbe,0x3decfd73,0x3e0be2f7,0x3e2ce629,0x3e29f607,0x3e15a6bd,0x3dd02a96,0x3d328775,0xbcecad3c,0xbe02230f,0xbe0a00a2,0xbe40c90c, -0xbe030a87,0xbd541ca6,0xbd12edbd,0xb97767e5,0x3c8ab00e,0x3d3ba3f7,0x3c9272f4,0x3d6c2ecb,0x3d5ff9e2,0x3db87d11,0x3d9fcc22,0x3db30bd2,0x3d69bdd6,0x3d9b16ed,0x3d8f4236,0x3da458ef,0x3dc59206,0x3da2f998,0x3d89d067,0x3d3cf82f,0x3d23e0a3,0x3d8baf71,0x3d9e96e3,0x3dd49632,0x3e127c6b, -0x3e395161,0x3e749e15,0x3e8fd4c8,0x3e929c7a,0x3e74a488,0x3e14a89e,0x3d62c932,0xbd8aca8f,0xbe36950f,0xbe46b62a,0xbe8c559b,0xbe809f7e,0xbe0f128d,0xbdb44b0b,0xbd0c504d,0xbcbf35b2,0xbb910481,0x3cc7456c,0x3d2b8fed,0x3d5a3594,0x3d9cf583,0x3d9fc4e1,0x3d9d136e,0x3d85867c,0x3d8d6132, -0x3da5a1b2,0x3dc434ae,0x3d9c902b,0x3dd02894,0x3d9c5859,0x3d713693,0x3d72cf50,0x3daab7db,0x3dc18da2,0x3e0c6fde,0x3e2a3ca5,0x3e5776e3,0x3e7b5d93,0x3e98c9ce,0x3e9f83ef,0x3e8a85cb,0x3e25fd02,0x3d94f270,0xbd93c5c0,0xbe84dda8,0xbe8ae570,0xbedb6307,0xbeab30eb,0xbedc4280,0xbe35fd2d, -0xbe220da1,0xbd8b682f,0xbd026da9,0xbb187339,0x3c46d3b0,0x3d552822,0x3d9466f6,0x3dc50827,0x3db899cd,0x3d8378f9,0x3dc3437d,0x3da70881,0x3e00e3c0,0x3ded28ff,0x3e0c5a00,0x3db5d7a6,0x3d269e7c,0x3d24a6e6,0x3d802a82,0x3dd2d74e,0x3e18f2d7,0x3e901476,0x3ec25c1f,0x3ed6c0e0,0x3ee45271, -0x3e32e167,0x3d9c2531,0xbc91e40c,0xbde80234,0xbe85bf98,0xbed1fc03,0xbf045baa,0xbe352082,0xbf08a4df,0xbf1c4d05,0xbe631c58,0xbe2b375e,0xbda1aaa2,0xbcb0a5cb,0x3d6f7a95,0x3d6a96a4,0x3da176e0,0x3dd1f484,0x3da670f8,0x3d9fb6e4,0x3d39ff6a,0x3d981198,0x3da9afc0,0x3da36007,0x3ddc95c9, -0x3e055006,0x3dde1a53,0x3dd95f68,0x3e0568c8,0x3df77496,0x3e226d91,0x3e156926,0x3e0369b7,0x3db79350,0x3cd60ff3,0xbc663ad6,0xbe626453,0xbe9a4d9a,0xbec6e6c6,0xbe305d8a,0xbdb3fcdd,0xbce70149,0xbe442d5c,0x3eb4e836,0xbeb1af9a,0xbeb86344,0xbe72b6ed,0xbe8a459a,0xbdd5dc72,0xbd9178e8, -0x3b661ed2,0x3c7692f5,0x3d126cc4,0x3deb97b4,0x3da52873,0x3dac8942,0x3d9d4a71,0x3dc68c96,0x3dbacad3,0x3ddd3f64,0x3dc06265,0x3db92ed9,0x3da15e93,0x3dbb3c44,0x3d9c4d3e,0x3d25a294,0xbd1a1cb2,0xbdd1117b,0xbdd299db,0xbe2a7705,0xbe6508ff,0xbe9b3458,0xbeb490f4,0xbeda3530,0xbeeb5f90, -0xbe23ab50,0x3ceb52c7,0x3ee3e788,0x3e9f763c,0x3f271094,0x3ea06fe6,0xbeed7902,0x3da87d73,0xbe5d2cca,0xbdd0a61a,0xbd9af4e3,0x3a35b647,0x3cab4df0,0x3d428021,0x3d8a2380,0x3db4bccb,0x3dc34f87,0x3d84f2f3,0x3d928a6e,0x3d92ef3a,0x3db30266,0x3d872cc8,0x3dbbd23e,0x3da95bdb,0x3c7b4253, -0xbbb68c79,0xb9c84e22,0xbdba45ec,0xbdeafb3f,0xbddd21d9,0xbdb4f4a3,0xbd8e1f17,0xbe3aa2d2,0xbe4d68ef,0xbe6b8c1c,0xbdbd51ae,0xba488d2c,0x3e03a4b7,0x3ec29ed6,0x3f03d750,0x3f05bbf7,0x3edf706b,0x3d9c71df,0x3c8bc888,0xbdb3ac44,0x3d7d4a16,0xbc54629d,0xba13a30f,0x3d7ddb0d,0x3dadff21, -0x3cb72962,0x3dcfd8eb,0x3db6f4ae,0x3c1c301f,0x3d20b108,0x3d554f69,0x3d515fdc,0x3d24028a,0x3d7964fd,0xbcd54264,0xbd6513e4,0xbd34a84e,0xbc960720,0xbc93cf1f,0x3c898815,0x3cfe554e,0x3dded2f9,0x3de30f97,0x3d9895f8,0x3de4e007,0x3e1c3eb3,0x3e2e2c11,0x3e4ccece,0x3e17232f,0x3dc37382, -0x3eb0479c,0x3ed93579,0x3ea5a3d0,0x3ce06e2e,0x3e4a2d3c,0x3d72e855,0x3ccc5703,0x3d5f38e4,0x3dcc1d63,0xbafbc35f,0x3c565389,0x3d3afb9a,0x3d59b08f,0x3d6b5f5f,0x3d8d4e4a,0x3da2a01f,0x3d8d7b6f,0x3b06f10a,0x3d954377,0x3d9f46f2,0x3d95af51,0xbd8ba5d4,0xbd8101cb,0xbdc0e81c,0x3cf2620f, -0x3e044f37,0x3e26bfdb,0x3e9091fc,0x3e8eee51,0x3e981164,0x3deea374,0x3cdc00c6,0x3d9573cb,0x3d944965,0x3e136cd4,0x3e74912d,0x3e7204b8,0x3e7013bc,0x3e8aa312,0x3d8310af,0x3cef5d92,0x3c5616c0,0xbc1dce24,0x3d31f72e,0xbbdf9e11,0x3d3d6c65,0x3cbaa01f,0x3d743a55,0x3c7d8270,0x3d230c60, -0x3d3ea3da,0x3d2e377a,0x3d1e3cd6,0x3d433e07,0x3d108c4a,0x3d5b4be5,0xbc8b1471,0xbd221e13,0xbd4b2f09,0xbdd50594,0xbd85d612,0xbd556d82,0x3c4a12f3,0x3d3d4620,0x3d2cf778,0x3c9f9e6f,0x3ca6c160,0x3d24453a,0xbb1393ad,0x3ce396cb,0x3d962ecd,0x3e3ca047,0x3e48f44a,0x3e541e3d,0x3d53aaa6, -0x3e036b08,0x3d9ae0fa,0x3dc18bf4,0x3dd98c53,0x3d0fe153,0x3cb47f90,0x3ce20037,0x3d22f631,0x3cb82157,0x3d2e703f,0x3b811f05,0x3d708e84,0x3c0937bb,0x3c8199ad,0xba8da4da,0xbcb374aa,0xbc08ac79,0xbd33bcc8,0x3d3c7c07,0xbc85fc04,0x3ac7b918,0xbc8ea811,0x3c23bc5b,0x3c9e5220,0x3d19d6e3, -0x3d66325f,0x3d553827,0x3d353633,0x3d29b2dd,0x3cd7e180,0x3d5fc15c,0x3db4f22f,0x3e2983d7,0x3e052528,0x3e0737fa,0x3e111674,0x3ce688f6,0x3dcbbcaa,0x3d798f86,0x3cc786ef,0x3d30d6f8,0x3d4bd8f3,0x3d15f6c8,0x3d78446f,0x3d130fa2,0x3dca534d,0x3d152a4c,0x3da16db8,0x3b7cfdde,0x3ce4fe6e, -0x3c582b63,0x3cca303c,0xbdd5c695,0x3cea1a42,0x3dbc2be7,0x3d2b4b95,0x3d5d4d7d,0x3d093721,0x3c927a6d,0xbc6cb5e4,0x3d0c7086,0x3d86dd68,0x3dd84ba6,0x3dd24393,0x3df35440,0x3e02cb00,0x3e1659da,0x3e14a9d3,0x3e1f8d8b,0x3e095e55,0x3e0c98e6,0x3e1a2759,0x3dbc29bc,0x3e0459c9,0x3e05fcf1, -0x3e0b0366,0x3e0987e6,0x3db78d7a,0x3dfa2b32,0x3dcb8f51,0x3dc53e60,0x3dae5692,0x3de4b728,0x3dcdafad,0x3deee6e2,0x3e03ba12,0x3d5fcba4,0x3e0af223,0x3ce6caf4,0x3e3737fe,0x3e1300c3,0x3e1b396a,0x3e170da0,0x3e1774b0,0x3e193f4c,0x3e0ed4f4,0x3e28456e,0x3e193f70,0x3e166641,0x3e27d04e, -0x3e1f4c0e,0x3e284249,0x3e218ac1,0x3e09f78d,0x3e12846c,0x3e1d83ac,0x3de8fd6a,0x3df894b1,0x3de5b544,0x3d925138,0x3cd0feba,0x3dcebf0e,0x3da62cb5,0x3d13729f,0x3ce2bc11,0x3d034db5,0x3d185476,0x3d07a54d,0x3cb6142b,0x3ca95162,0x3dad5c3c,0x3de85a07,0x3c11846f,0x3d94e281,0x3decdb54, -0x3e06a818,0x3df00fcf,0x3dff1917,0x3dfc9e11,0x3dffab4e,0x3df9f403,0x3df0cae2,0x3dfac3c2,0x3df91f89,0x3e041534,0x3e04e82b,0x3dffb3c5,0x3e064ba0,0x3e04d2fd,0x3dfbea1c,0x3df891b9,0x3df29e68,0x3e36ac1d,0xbd471f41,0xbc7fb397,0xbb83b596,0xbc413e2b,0xbcc4e8ef,0xbb8c8568,0xbcd1d317, -0xbcb9e8f6,0x3be00a31,0x3c2827e1,0x3c714f5c,0x3c5fff1e,0x3c6bc4d6,0x3ca006ab,0x3c4f89c8,0xbc9d0e5e,0xbcfb3adb,0x3c812782,0xbc865c40,0xbcef9a47,0xbd0f7e32,0xbcf9d9c9,0xbd0c380e,0xbd16c07d,0xbd22aa30,0xbd2f6a29,0xbd385b5e,0xbd488943,0xbd6657db,0xbd7f272a,0xbd8a2449,0xbd7f38ba, -0xbd73c4ed,0xbd2ef88c,0xbce595e0,0xbc0b3047,0xbc302ff6,0x3cf404b4,0xbc2d3c04,0xbd94a9e1,0xbbdd4dc7,0xbce6c49c,0xbc8aa0c0,0xbca4d8ee,0x3bc51fa7,0xbabf6196,0x3aa1e00d,0xba9057b5,0xbb552de5,0xbc391263,0xbc261135,0x3b863bd2,0xbccb5446,0xbc3ddd8a,0xbca48f7b,0xbbd0153e,0xbd116df9, -0xbd0a46ad,0xbd1ef400,0xbd4809fb,0xbd44916d,0xbd4d0739,0xbd875e33,0xbd99694e,0xbdb9992f,0xbddef285,0xbe12ee27,0xbe14138c,0xbe02c8f1,0xbda60128,0xbd1b5e99,0x3c42868e,0x3caf4184,0x3deb4b40,0x3d31f33c,0xbbea2d5c,0x3ca30001,0xbc67dd99,0xbc03e578,0xbbf3ed20,0x3c770c5b,0x3cd166cd, -0x3c7c2fa5,0x3cf607e9,0x3b7355d0,0x3cbb4242,0xbb4d1d4d,0x3bbc1085,0xbc0d23fa,0xbc68edbf,0xbafa2699,0xbc0d3cca,0xbca0005f,0xbd212780,0xbd2f0b01,0xbd8b0b9c,0xbd927423,0xbdb2072e,0xbddc1d9c,0xbdee0069,0xbe24403c,0xbe55eb3e,0xbe7bc93c,0xbe79a480,0xbe53492d,0xbde0c016,0xbc97c888, -0x3dd03922,0x3dcaeffc,0x3e5e1056,0x3d5ca513,0xbd36dfc0,0x3d5bcd2f,0x3ac4f431,0x3af6fe27,0x3b37cbd9,0x3d961c66,0x3d5f6fbd,0x3d78ec3c,0x3d5a92b0,0x3d43c1bc,0x3d2f8302,0x3bf74298,0x3cbc1be8,0x3c1d9e2e,0x3ace1dcd,0x3c7c4d39,0x3c87f76a,0x3bb2841f,0xbd1b2222,0xbd03eb58,0xbd92160a, -0xbd91b237,0xbdaae1eb,0xbde5c9e9,0xbdfffbb6,0xbe2f2972,0xbe6d212f,0xbea96837,0xbeb397d0,0xbe9ab126,0xbe248329,0xbc6cd941,0x3e0e767d,0x3e2a5399,0x3e9810e0,0x3e2a1fec,0x3d00b7b5,0x3d9523ab,0x3d194d34,0x3c222850,0x3c0e0051,0x3d9198d1,0x3d5c3f90,0x3d88014a,0x3d99f8f2,0x3d9451b0, -0x3d81fc3b,0x3d32079a,0x3d3fce93,0x3d23f867,0x3d4dff1d,0x3bf6f82f,0x3da28b8c,0x3aa43aba,0xbd2273f1,0xbd41605a,0xbdb383fd,0xbdca86ad,0xbe02205b,0xbe24162f,0xbe2fedbc,0xbe7113bf,0xbeb194e2,0xbedf4442,0xbee9477b,0xbeb4fae8,0xbe3f3d85,0x3c1aa04a,0x3e815a70,0x3e905ce4,0x3e9855ec, -0x3e90ca70,0x3db5913f,0xbcaab78e,0x3de49660,0x3dcf75c7,0x3e108932,0x3d76b13e,0x3dc69b61,0x3d7f51df,0x3d5a2151,0x3d901f9a,0x3d7a4d3c,0x3d42246e,0x3d2a7c28,0x3c2a984f,0x3d1b1807,0xbd01163c,0xbd061308,0xbd26a88a,0xbd3e8907,0xbd837b8b,0xbe1f5599,0xbe2bb8f0,0xbe692d35,0xbe8dc1b6, -0xbed3fa5c,0xbef496e5,0xbf0cfb07,0xbec98166,0xbe80aeaa,0xbe074c21,0x3d1cd7ba,0x3e395221,0x3e9213b0,0x3eb3a928,0x3e3b7268,0x3e5831fe,0x3d4d201f,0x3d3f8482,0xbd7cc2d4,0xbc5519ba,0xbd40a96a,0xbcba5b60,0x3a90d135,0x3cfea7ad,0x3da98434,0x3d95e073,0x3d9aec0e,0x3d66d246,0x3d8b0604, -0x3d12b90d,0x3d577efe,0x3c4bf7c3,0x3d81d34d,0xbcee8897,0xbdef6b54,0xbdffb030,0xbe51a351,0xbe9a5074,0xbec2e652,0xbef8986c,0xbf00a3ea,0xbf0029e9,0xbf179584,0xbe9d7c61,0xbe1e2201,0x3d276dfd,0xbdedd0e1,0xbdf59d97,0x3cb28041,0x3e0b286a,0xbea29ca7,0x3e37e797,0x3e40b9a5,0x3da0c52f, -0x3e0c4d8e,0x3d41e20a,0x3d181148,0x3c3a22a6,0x3d34e6c6,0x3d7269ab,0x3d2e05d2,0x3dbce3cf,0x3dc73fd1,0x3d06d9b7,0x3d73bbfc,0x3cde7e36,0xbbc49982,0xbd0714fa,0xbd84cf61,0xbe05eb63,0xbe3661b0,0xbe18c2f6,0xbe061152,0xbe09d583,0xbe114239,0xbe54d954,0xbdecf773,0xbd9cd208,0xbd2f980c, -0x3e1a10b3,0x3e93289c,0x3ed604b8,0x3da7ec5c,0xbdeb1760,0xbf1389f5,0xbec21125,0xbf2550c3,0xbe8014bf,0x3e95a744,0xbdd58748,0x3e0a85f4,0x3d7ab205,0x3d9fa2cb,0x3c326233,0x3d9fe14c,0x3d8c7622,0x3cb24e37,0x3dbaaa2a,0x3dbb85d5,0xbb80e161,0xbba2a3a1,0xbc87bc73,0xbd84ca7a,0xbdb24b39, -0xbd969050,0xbdf379e1,0xbdda25f9,0xbd38140c,0xbc992898,0x3da4d7ba,0x3e115874,0x3e2fbf8f,0x3e80b0fc,0x3ea13710,0x3eeac790,0x3eed8bc8,0x3f01cc2c,0x3ed2c77a,0x3de6492c,0xbdd17149,0xbf088358,0xbf08125c,0xbee910fb,0xbeb890cb,0xbd218d04,0xbd8b12ab,0x3d5cd38f,0xbd5a8efa,0x3cf1b8b6, -0x3cabbd4c,0x3d845d63,0x3da3f1c3,0x3d4d924e,0x3d94c59d,0x3d54d829,0xbccdfaa8,0xbcd5219a,0xbd55ef6c,0xbd813eef,0xbd957441,0xbdb3948d,0xbde4501c,0xbccbf803,0x3d3241b9,0x3dc627a5,0x3e1cb677,0x3e7dd0b1,0x3eaba4b4,0x3ec1286f,0x3ee886cb,0x3f10c27a,0x3ee127f1,0x3eb46c13,0x3e5bd08a, -0x3d9aaab4,0xbd0dc15f,0xbdc6eda3,0xbe6d0519,0xbe400f91,0xbdcf1108,0x3db81ab2,0xbdb68404,0x3b1a6582,0x3ce3281b,0x3d284fdd,0x3ceb5fe4,0x3dc0e927,0x3dad3b54,0x3dc31e47,0x3d8d792e,0x3d9345fa,0x3d5ac6cf,0x3bdec4cf,0xbc703609,0xbc76a680,0xbdacb851,0xbddac2e0,0xbde6b326,0xbd55e303, -0x3c898c6e,0x3e45a780,0x3e6ed737,0x3e8cf5ef,0x3e8378ef,0x3e99ae92,0x3e895749,0x3e70d8d9,0x3e907cb9,0x3e7c07e2,0x3dea908d,0xbbb3bc72,0xbdadb7cb,0xbe42e753,0xbd80d716,0xbd88916c,0xbe057fd4,0x3d53261c,0x3d807dab,0x3da4d319,0x3dd1d724,0x3d35b130,0x3d4aa654,0x3cc5a3aa,0x3d2db9df, -0x3d6b246f,0x3d93bbeb,0x3d95afe8,0x3d80606a,0x3da4c85b,0x3d7de564,0x3cc864b2,0x3cd0444a,0xbc9416ef,0x3c578539,0x3d061bfd,0x3daa33e1,0x3e41570f,0x3e36ea31,0x3e3e1535,0x3e1f1c9d,0x3df47c07,0x3defb530,0x3df1d60f,0x3d8b87da,0x3cc7173d,0x3c5c5e5e,0xba4ad3dc,0xbca40eaa,0xbdc235fe, -0xbd528b49,0xbd9def8f,0x3d82400c,0xb9418134,0x3d037e2d,0x3cbbd752,0xbc7b2df1,0x3d379eea,0x3d097d7f,0x3d3f92a3,0x3d2467f5,0x3d918d4b,0x3d8f121d,0x3dcef8b2,0x3dabbcb6,0x3df906a6,0x3dfc8757,0x3e1173e9,0x3e179431,0x3e0b33cd,0x3e18c6d9,0x3e24bd1b,0x3e24f236,0x3e292417,0x3e283f76, -0x3e276bba,0x3e2297c0,0x3e093a17,0x3dc8e0e2,0x3d8f4c71,0x3d6a6a5f,0x3d2e2269,0x3d224623,0x3c791e4f,0x3a4d843b,0xbd13950c,0x3a972cff,0xbcb1522f,0xbcda3b54,0x3dba095b,0x3c28b08b,0x3d59ec39,0x3d972799,0x3d5d233e,0x3d0fd312,0x3d4c690e,0x3d16fe4b,0x3d722c2a,0x3cab539e,0x3d8dd79d, -0x3d840193,0x3df505ec,0x3e0694c4,0x3e293f1c,0x3e2ba77e,0x3e7108e6,0x3e51125e,0x3e283272,0x3e2f31f3,0x3e29510e,0x3e2bf6fd,0x3e30b83b,0x3e3ae1be,0x3dfec876,0x3dc20300,0x3d5df80c,0x3d408a5b,0x3d1bda4f,0x3cd0ac48,0x3c34780e,0x3b90815b,0xbc1ebc2d,0xbc2894af,0x3c02b1a1,0xbc9205db, -0x3ddff9d3,0x3ca6ac6d,0x3cbee4f0,0x3cfe2d73,0x3ba7c567,0x3d80a956,0x3c86ffa6,0x3d7d7eda,0x3d8b9988,0x3d9eb204,0x3d464409,0x3d65a9c5,0x3d59b803,0x3d6f482b,0x3dd43861,0x3d798177,0x3e032115,0x3d4eef90,0x3d3bea87,0x3d883377,0x3d6e3e7a,0x3d744831,0x3d408b00,0x3d07c5be,0x3d27c20d, -0x3ce01539,0x3cde9e25,0x3c589519,0xbbc347cc,0xbc855238,0xbc131f36,0xbbf79648,0xbb495b2f,0xbabf162f,0x3b813d20,0xbc27d9ab,0x3d11ec92,0x3db9e52d,0x3e03b5c6,0x3cef9024,0x3d8e02c3,0x3e037c08,0x3e0eba56,0x3e00e0a6,0x3deea413,0x3df957fc,0x3e0ad25f,0x3e0d236b,0x3d9b778f,0x3d251c0b, -0x3e183908,0x3dddc183,0x3d8c08f5,0x3cda64fd,0x3d17ff81,0x3d0700c2,0x3d019fe4,0x3d0ade66,0x3d12d529,0x3d10cb4b,0x3d084153,0x3cb82c1d,0x3c924c41,0x3c7449ad,0x3c41471b,0x3bf74652,0x3be07ced,0x3b9da1e8,0x3b9ecdd0,0x3b570739,0x3cfdbd28,0xbd03b812,0xbca139c9,0xbd0fcac5,0xbc8b13c3, -0x38d96ef0,0xbc4c36e5,0xbc2da434,0xbc09def4,0xbc53a902,0xbc4fab28,0xbc753b36,0xbc897e5f,0xbc8c6218,0xbc99e3dd,0xbca4b3f5,0xbc4408de,0xbc5bc0e6,0xbcc79bbc,0xbc93818a,0xbca03be1,0xbce2ac40,0xbcdee5cf,0xbce01f33,0xbcd28eb0,0xbcdb1101,0xbcd790e3,0xbcbe5554,0xbcb4163b,0xbc9bd720, -0xbc92a1f0,0xbc980f18,0xbcb2b5f2,0xbcd5b964,0xbcfc172d,0xbd09bb73,0xbd03e082,0xbcdf4c5c,0xbc44e62d,0x3c397778,0x3d95b906,0x3bca34a4,0x3cccfee0,0x3c07b889,0x3b467af4,0xbbe8879d,0xbc0c95b1,0xbb10de03,0xbbf6ae6e,0xbb585feb,0xbc02d35f,0xbc7fd727,0xbc895919,0xbcb7710e,0xbcdf845d, -0xbcec9583,0xbce14ce9,0xbd20d7d4,0xbd2fe93f,0xbd2e2670,0xbd26d679,0xbd21005e,0xbd174544,0xbd1c3f6f,0xbd445c8f,0xbd611f01,0xbd6b60f8,0xbd5328aa,0xbd4356b1,0xbd3e686a,0xbd6d7fe0,0xbd447099,0xbc85637e,0xbb37ad05,0xbd485d46,0xbbe55c6c,0x3d7c5006,0x3ce45fdb,0x3d50ddfe,0x3cee8861, -0x3d091588,0x3b29a6fe,0x3ca05ffe,0x3c450be7,0x3c9564ae,0x3c3c2ecb,0x3c02ce93,0x3ac2bdd6,0xbb924728,0xbc74dcb2,0xbcce875d,0xbcfcb7cf,0xbd2d57ca,0xbd6581e2,0xbd812a87,0xbd81d4ab,0xbd65a42c,0xbd6eb975,0xbd757346,0xbd5de18e,0xbd87cad1,0xbd7411fe,0xbd67c341,0xbd3e70f3,0xbd4b6414, -0xbd5cc2bc,0xbdb01887,0xbdbeced4,0xbd8d5c0a,0xbd4f4082,0xbd6048b3,0x3d68c731,0x3e368054,0x3d8b64f6,0x3de4132b,0x3d916b63,0x3d590d62,0x3d07ba8d,0x3d0461af,0x3d174701,0x3d0967da,0x3d01cb85,0x3cef19b6,0x3a83e005,0x3ac479dc,0xbc59cd9b,0xbd145523,0xbd06de94,0xbd2db7e1,0xbd82f6d4, -0xbda4f1a0,0xbd908f06,0xbd931109,0xbd9be40f,0xbda159cf,0xbdab51aa,0xbdf707f8,0xbe12f07a,0xbe15f8b6,0xbdf1cc04,0xbdbf0a2b,0xbd94342c,0xbdf3d7eb,0xbdd9b4bc,0xbc6bc64b,0xbb43b628,0xbe1390f8,0xbd4c236b,0x3e123456,0x3d9f094e,0x3da862b6,0x3db53bf3,0x3da72425,0x3d31ecff,0x3d65719e, -0x3d4b3920,0x3d808052,0x3d854853,0x3d42321a,0x3ca62d90,0x3cbf196d,0x3c405340,0xbc7dce93,0xbd1e2f21,0xbd35a89e,0xbdc03398,0xbdb4e0f4,0xbdc85f25,0xbda31d01,0xbda93832,0xbde08411,0xbdb516b5,0xbe050dec,0xbdfa7dc7,0xbdd2ef83,0xbdb4eb11,0xbd987893,0xbd7d0524,0xbe1ada99,0xbe232bb5, -0xbe08d49d,0xbdedaee9,0xbec7a8f8,0xbee517a8,0xbdc1ee58,0xbd4dc3a9,0xbe005bad,0xbd65347e,0xbdcc64f9,0x3d26772b,0x3ce61b9e,0x3d7a335f,0x3d509c4f,0x3d7381fd,0x3d6396ca,0x3d1b3421,0x3c871b72,0xbc5815d8,0xbc5a0516,0xbd3e88c2,0xbd82115a,0xbdeaa493,0xbe1c2008,0xbe17bb84,0xbe45f304, -0xbe5d6c99,0xbe2f8f88,0xbead1b54,0xbe9246da,0xbe8fc8f3,0xbe344a94,0xbdd421ef,0xbda6cc1b,0x3c952041,0xbe14f4bc,0xbe8bf05a,0xbec080b2,0xbee2c6c4,0xbef306a6,0xbe9765ad,0xbcd14e18,0xbe1c2f56,0x3cef3cbe,0xbca26527,0x3d1477d9,0x3bff7cb3,0x3c3e258e,0x3d285b0a,0x3d3f3d4b,0x3d9cbd59, -0x3d944289,0x3d42ff04,0x3d15d677,0x3b3291a9,0xbcd8d8ad,0xbd6fc9ea,0xbdf81efc,0xbddd9686,0xbda3d15f,0xbda5406e,0xbb2d2327,0x3d804fc1,0x3e29069c,0x3e8aa06e,0x3eba1664,0x3ed41d55,0x3f12bdc9,0x3ece37ff,0x3e8b3e42,0x3dc0fb21,0x3d59e486,0xbd576358,0xbe6177e1,0xbec0bb79,0xbd45221e, -0xbed36fdc,0xbeb03d3a,0xbe3ff9b8,0xbe2ec9ee,0xbd99ba3d,0xbd229718,0xbce84327,0x3d2c885d,0x3d5c6848,0x3c591b28,0x3d9507dc,0x3d66c367,0xbcf36ed5,0xbd4f812d,0xbd62381e,0xbdf4144a,0xbdc4c70f,0xbddd9146,0xbb6fe2dd,0x3d832781,0x3e01c94d,0x3e825c05,0x3ed4c58d,0x3f1040be,0x3f173244, -0x3f1d3903,0x3f13be9e,0x3f205d5a,0x3ec887bd,0x3e90a981,0x3de822ee,0x3e399ea3,0x3e8049b7,0x3efbba54,0x3e17de23,0x3ee4961b,0xbd810b1d,0xbec6da71,0xbd348004,0xbe209e8f,0xbd893896,0xbd44c2f9,0xbcb6c0b8,0x3d20acc4,0x3d779d6d,0xbd2305b3,0x3d8d973a,0x3d458739,0xbcebd1db,0xbcbebcb7, -0xbd52c3c6,0xbdabebed,0xbd09ae23,0xbd9a91d7,0x3cd94f92,0x3e14a24e,0x3e524bc1,0x3e911d55,0x3ec5cdd6,0x3edc2576,0x3ed9a118,0x3ec57316,0x3e8f2745,0x3e759b92,0x3e33702c,0x3dd34d65,0x3c97991d,0x3e17d7ac,0x3e87c759,0x3f179a56,0x3ee0aee8,0x3ec46e68,0x3e132f1c,0xbdacfe31,0x3b8a2ce2, -0xbd9599cb,0x3ca3086a,0xbcabc023,0x3c26802b,0x3c83274e,0x3cdf02e0,0xbcd634ff,0x3d361cb9,0x3d927a49,0x3d616c71,0x3d3e5b86,0x3ca9b4a0,0x3ccc26db,0x3c28f797,0x3b96ccd3,0x3de1a05e,0x3dcff7d9,0x3dcb00f3,0x3e058623,0x3d684774,0x3ce3286d,0x3d8e4120,0xbb89d683,0xbd83ce33,0xbe65ff37, -0xbe2455c5,0xbe44d754,0xbe265fae,0xbd91013d,0x3c8b13c3,0x3e882562,0x3e513800,0x3e0a105e,0x3d3a0ee6,0xbdc5785d,0x3a924ab4,0xbcae8f64,0xbb1afeb8,0x3b38e371,0xbc9e130b,0x3cf4b4d3,0x3d535989,0x3d2ad46a,0x3d0002e9,0x3ca3adb4,0xbb009f97,0x3cb1c3bd,0x3cc7467a,0x3d74494d,0x3d864e81, -0x3d51e78f,0x3d83118d,0x3dd37a9d,0x3d82fd3d,0x3c3d537f,0xbd18038b,0xbdf680d2,0xbe272810,0xbe9711c1,0xbe988a40,0xbea9d7e3,0xbeb5923f,0xbe906dc0,0xbe7417b0,0xbdc988cd,0x3c696276,0x3e4fb416,0x3de36019,0x3d3519e2,0x3da57f1e,0xbc2f2802,0xbc8ae887,0xbcc0cc10,0xbd4bf462,0xbc65f589, -0x3c0ae010,0x3d0e18ad,0x3d75a1bd,0x3c9b2d23,0x3d89f6df,0x3d41e181,0x3d0acd4e,0x3cd1d1c7,0x3d0a35ff,0x3c83b7c3,0x3cf1576c,0x3d9ee340,0x3d0fc83e,0x3c45203c,0xbc805b99,0xbda57c82,0xbdf13771,0xbe13ac1c,0xbe39cd23,0xbe288398,0xbe32e24d,0xbe3bcbf9,0xbe189400,0xbdeb8754,0xbd9633da, -0xbd704b28,0xbd22a1ac,0x3d1324c8,0x3cf3388f,0x3c2665bd,0xbd1cf3ee,0x3a3132ac,0xbb3ff524,0x3c7db1c2,0x3c8ff866,0xbb9e57d4,0x3c207a64,0x3c695346,0x3c9fd122,0x3cb042f9,0x3bfddb65,0x3cef6c66,0xbc42c3aa,0x3c3ac47c,0x3b7c5cd1,0x3c2a4b17,0x3c2957fa,0xbbd9c1ee,0x3b71f9e1,0xbdd89ac6, -0xbd6a41c0,0xbdaa2967,0xbdd3489a,0xbe065422,0xbe238368,0xbe1af7a6,0xbe103bba,0xbe06c061,0xbdf1d1fc,0xbdc99e28,0xbdc54542,0xbd8dc839,0xbd6c71f6,0xbd519ba2,0xbd3d2341,0xbcfbd805,0xbc7a37ec,0xbd652a5e,0xbc874c11,0xbc99aed1,0xbc90ea18,0xbbc13c6a,0xbc481425,0xbbe3b259,0xbba21e36, -0x3c1edd5e,0xbc2fbf0e,0x3c33e8bb,0xbcaacd79,0x3c9fef0d,0xbc93ff68,0xbcd23be7,0xbd15fdf9,0x3cbdc7bf,0xbd90398d,0xbdb71532,0xbd7acfe1,0xbd883363,0xbd7ea377,0xbd901972,0xbd987f25,0xbd700c44,0xbd5588cd,0xbd2a926b,0xbd5c2eb1,0xbd8eb2a6,0xbda85fce,0xbd9e2e5f,0xbd969b4c,0xbd879fe6, -0xbd436762,0xbd0f6e2d,0xbd06588c,0xbd1b698c,0xbd024f48,0xbd114647,0xbd1e7bab,0xbd2347d3,0xbcf83bfb,0xbcd4308a,0xbcc44a77,0xbca9fdf6,0xbc4ace78,0xbc54285d,0x3b1390b7,0xbc47d60d,0xbcc62083,0x3c913ff3,0xbcd993d8,0x3cdb88f1,0xbd5a8437,0xbd0f8f50,0xbd5b1e9d,0xbd633f33,0xbd73b1be, -0xbd639c94,0xbd49c5c2,0xbd83d47a,0xbd7bf5d8,0xbd80babd,0xbd629d39,0xbd12efd4,0xbceca9c7,0xbced8ceb,0xbca0eb21,0xbcd0a00a,0xbd00948f,0xbd0620ed,0xbd037d95,0xbd0553ef,0xbcf6d1ed,0xbc70db39,0xbcfafe82,0xbcdec131,0xbc8b95a9,0xbc7f9d41,0xbc585eb9,0xbc3b052a,0xbc16f9f8,0xbbe10168, -0xbbb19e30,0xbccbcb30,0xbd0e23b6,0xbb9b7f29,0xbd0bbc6d,0xbd598652,0xbd577860,0xbd3d8da5,0xbd40a039,0xbd35f330,0xbd3b9098,0xbd418d40,0xbd3f6e13,0xbd3812e9,0xbd1e74de,0xbd1aa6a2,0xbd2074cf,0xbd287a8d,0xbd3248be,0xbd319e73,0xbd224df1,0xbd20ab85,0xbd165dd3,0xbd531137,0xbbab3ac2, -0xbc3258c1,0xbb68f7f6,0xbd1df7fc,0xbd38306d,0xbd06f5aa,0xbcb1c1f9,0xbd093dc1,0xbd310e23,0xbd212f37,0xbd15fde5,0xbd072f19,0xbd07c2ec,0xbd1baf55,0xbd0d53d3,0xbd084eae,0xbcafa034,0xbd22c4ee,0xbd15b8e3,0xbca91d49,0x3c910bef,0x3c0767b5,0x3c38f246,0x3c63dae0,0x3c8eb266,0x3ca3c0d0, -0x3ca9161a,0x3c959324,0x3c8f474d,0x3c7f6320,0x3c766ca2,0x3c376a94,0x3c233cb0,0x3b7b1670,0x3a1bfa99,0xbc1965cc,0xbc03a72f,0xbd7b4f58,0xbd84d0af,0xbd871fe9,0xbce72baa,0xbd13a0bd,0xbcfc39a5,0xbcd54120,0xbca94f1f,0x3a10582f,0xbc697cd5,0xbc9b3fb5,0xbc98839e,0xbc17552f,0xbc5f2172, -0xbd15a609,0xbc957a50,0xbce39d33,0xbc958dc6,0xbd2e9791,0x3bcce3dc,0x3c4bbd88,0x3c4f0c47,0x3ccbf295,0x3cd166e2,0x3cd7d364,0x3d0db90c,0x3d145255,0x3d04b7c3,0x3cb9d6a4,0x3ccf5955,0x3ca966a2,0x3c9ad725,0xbbbee648,0xbd29f19c,0xbdc6b20b,0xbdaeb84b,0xbdc3d4e1,0xbddb14de,0xbddb93da, -0xbd8ad479,0xbd3be266,0xbd1375ef,0xbd1035da,0xbc50fd1d,0xbac39406,0x3c8e6ffe,0xbc51f426,0x3c7b7110,0x3aef4822,0x3bba6e08,0xbc80133a,0xbc6813b7,0xbc509412,0xbca441e9,0xbcbee726,0x3c89df51,0x3d2f4eee,0x3d295bde,0x3d856326,0x3d9a58fd,0x3dbbe4ea,0x3dcc04fc,0x3db30f78,0x3dadfd97, -0x3d8de778,0x3d8918d9,0x3d5a52be,0x3d411a5f,0x3b459d1f,0xbd029d88,0xbdf9fbcc,0xbddb5ce2,0xbe2f11b7,0xbe3aaf62,0xbe0d9c60,0xbd9d68a3,0xbd9aea59,0xbd059c59,0xbc0b856e,0xbca64093,0x3cc778f8,0x3d022fee,0x3c6e443b,0x3cbea4a9,0x3c58643c,0x3cd0b137,0xbc5e2210,0xbc5dfabb,0xbb7edf58, -0xbc991912,0xbce32d6f,0x3aec3e6a,0x3d52d34f,0x3d180db7,0x3da1200f,0x3db98052,0x3dc79125,0x3de6e2b2,0x3dd8ee99,0x3dc4ba37,0x3d8343ac,0x3d9ea989,0x3d82663a,0x3d98066f,0xbc58c747,0xbdcc4961,0xbe937f39,0xbe7180c1,0xbe220d0e,0xbe4ba9ff,0xbe4c59b6,0xbdf74b60,0xbd53ae9a,0xbd4d306b, -0xbd016080,0x3b55a719,0x3d3dbd5b,0x3d4feb66,0x3d422e91,0x3d665cb1,0x3d3b4714,0x3cd0307b,0x3c27f601,0xbb76beeb,0xbca34712,0x3c749bb3,0xbd76eb90,0x3d3400cf,0x3da7ea44,0x3dba72bb,0x3df93010,0x3e1bd266,0x3e3f9407,0x3e4a57f3,0x3e33cc7b,0x3e109d73,0x3defcc01,0x3de9868a,0x3dd74cd6, -0x3da5c959,0x3c4d67f1,0xbd8be84f,0xbe714703,0xbe5a3eeb,0x3de7a7fc,0x3e57ddd4,0xbe52fcf8,0xbde116eb,0xbda6c795,0xbd90ce92,0xbbdebb36,0xbd98c331,0xbc740c89,0x3cbcf472,0x3cdebdc6,0x3d7e1387,0x3d72fa6f,0x3d4b7bf8,0x3d07f402,0x3ca51c4a,0xbc793bb5,0x3cb82d5a,0xbcc16e7b,0x3cdb6db3, -0x3da58173,0x3dc50e52,0x3e48f2dc,0x3e6a8fa1,0x3e90b513,0x3ed45971,0x3ef14878,0x3f05edd9,0x3efd5e30,0x3eca2268,0x3eb0b134,0x3e8379f1,0x3eabed7c,0x3eb851d7,0x3e97914a,0x3e5b94c5,0x3f011ccb,0x3d62bbf4,0xbe860dfb,0x3d612bff,0xbdc3e3a9,0x3a839f85,0xbd0328dd,0x3b193475,0x3c991d05, -0x3cd7fb87,0x3d44f02c,0x3d75b066,0x3d82bf6b,0x3d0f02f2,0x3cd135f7,0x3cfb2d90,0x3a5849e0,0x3ba3ae72,0xbb75bff1,0x3da17425,0x3e0d309f,0x3e2a2269,0x3e5044da,0x3eab4a2c,0x3ec40082,0x3ef0de43,0x3ecc18d8,0x3eb5eefe,0x3e4d6154,0x3e18fdc9,0x3dccce9c,0x3da189c0,0x3e2f60ac,0x3e7c339e, -0x3ec348e6,0x3ed9e3af,0x3e903fa7,0x3eab83c9,0x3e7bb0f5,0x3def338e,0x3d909fc4,0x3d0b64ac,0x3bf09be0,0x3b06f9e0,0x3d01b27d,0x3d4c36c1,0xbb517d38,0x3d6737b5,0x3d282e0e,0x3b00b0e1,0x3cb40be7,0x3c53ecea,0x3d39a139,0x3d26275f,0x3d90b84f,0x3d7db608,0x3cee81e3,0x3c54db4e,0xbd479c6c, -0xbdabbac3,0xbe12f49a,0xbdcf712a,0xbe4dfc2d,0xbe4a0533,0xbe90708c,0xbe5339c9,0xbe5207ca,0xbd944cdb,0xbe0a2319,0xbe2b6daa,0xbe2bdda8,0x3d3567d2,0xbe5528f7,0x3e6cd929,0x3e94680a,0x3de02d4f,0x3ded48e1,0x3d46bcd8,0x3d3da21e,0x3c6226bf,0x3d72c689,0x3d84c44f,0xbcada448,0x3d4209db, -0x3d1ac9df,0x3ad5f821,0x3c8f844f,0x3c434460,0x3d45af8b,0x3c9dcae4,0x3d878334,0x3ccd13a1,0xbe0961e0,0xbe36fb7c,0xbe704bfc,0xbeb4fbff,0xbedcd1aa,0xbee7a392,0xbf03b762,0xbef04c50,0xbefe9500,0xbebf2192,0xbe9aefe4,0xbe2428ff,0xbe7030ff,0xbe954cc9,0xbedb6c26,0xbe874306,0xbe8700df, -0xbd8f2a01,0x3dd1793d,0x3c8916f7,0x3d357df0,0xb98fc013,0x3d4e49f1,0x3cd7d754,0x3d4a7905,0x3d1d0734,0xbbd1cd03,0x3d06f2c0,0x3d13fc9f,0x3cb6ee6f,0x3c8d5a23,0x3ccc3a2f,0x3cedcba0,0xbb853f6b,0x3c59fb22,0xbddde210,0xbe3edcb8,0xbe6f3bdd,0xbe991451,0xbe93691f,0xbead08b5,0xbecdc998, -0xbebc37fb,0xbeada585,0xbe7c1f51,0xbe6a298c,0xbe38322c,0xbe027c0d,0xbe199f46,0xbe069355,0xbe92fe30,0xbe1ecb71,0xbe26bc81,0xbdc702e4,0x3d01800d,0xbd4c79af,0x3cd14fc3,0x3bacaf97,0x3c128c09,0x3d078d98,0x3cd4d2d8,0x3ccb79ba,0x3c98dceb,0x3bcfb0b5,0xbc1fbde5,0xbc3ccef3,0xbc47e51c, -0xbb8e7a6f,0xbd482351,0x3bf06501,0x3c0a3ec3,0xbc2fbcfc,0xbe15f073,0xbe1e2a70,0xbe6856bf,0xbe7e6394,0xbe7d5b60,0xbe491e11,0xbe2360b5,0xbdd5e406,0xbc4d9014,0x3cf95b8c,0x3c200e23,0x3ccecb26,0xbbcb296c,0xbd4e88fa,0xbe324548,0xbe1cf079,0xbd9c0c1e,0xbdd1b2e4,0xbd0911f0,0xbca64964, -0xbcc408e5,0x3bd17961,0x3a513055,0x3ca3388d,0x3c8b3f6a,0x3ca45e06,0xbbb4ef9b,0xbb00c3e6,0xbbf4e13b,0xbc3b6b57,0xbcfbe5e5,0xbd809987,0xbd650cf6,0xbdc52257,0xbd8785cc,0xbe011a71,0xbe0ea6e6,0xbe001909,0xbdf74e45,0xbd901c88,0xbd64bef3,0xbd34d133,0xbd38a239,0xbccc7669,0xbb94ad41, -0x3a3a9aca,0xbcb8849d,0xbd826186,0xbd6343bd,0xbd114ce6,0xbd490ade,0xbd866a6a,0xbd1da009,0x3c91f2fb,0xbcb535c0,0xbc89257b,0xbcc6be25,0xbc9030c7,0x3c3777c1,0x3c6582d7,0x3ca097f5,0x3c6bfb02,0x3c9c5c63,0xbb2aec93,0xbc9622eb,0xbcbcd5bd,0xbd43dc09,0xbd5de8dd,0xbd97aacf,0xbdc0b882, -0xbdd688fe,0xbdbdbbf8,0xbd91a97e,0xbd8d090d,0xbd56fb59,0xbd0360f7,0xbcad7edf,0xbb75e64f,0xbbf0649f,0xbbf863de,0xba33162d,0xbb9020e7,0xbc7a8e1d,0xbc9113da,0xbd0be0eb,0xbd032212,0xbcbf330b,0xbc57c39a,0xbc4d29b1,0xbc430080,0x3c8bedf6,0xbab2d2aa,0x3b2d218f,0x3c25b466,0x3b43a6a9, -0x3bbcb2f0,0x3bf3526d,0x38864ffd,0x3c5880db,0xbc4ee171,0xbc8bdd69,0xbcf00263,0xbd2a63b8,0xbd64a432,0xbd8102d2,0xbd808f42,0xbdaca4bc,0xbdace8d5,0xbd74494f,0xbd8498e6,0xbd5d4c5f,0xbd540c04,0xbd23c502,0xbd038518,0xbd403369,0xbd53f392,0xbd81da6e,0xbd4bd035,0xbd096730,0xbc4f494f, -0xbc5008e7,0xbc854036,0xbcbf9482,0xbc7d936c,0xbcd50e4c,0xbcf9d629,0xbd06006b,0xbd04f946,0xbcf1a0d2,0xbcee52ab,0xbcb47300,0xbcbf69c4,0xbce254c9,0xbcfa0df6,0xbd16cfa8,0xbd0dc405,0xbd106da5,0xbd1094c5,0xbd17debc,0xbd0ff5d3,0xbd356330,0xbd46e709,0xbd4ccd3f,0xbd42dcd4,0xbd501913, -0xbd42200f,0xbd34a854,0xbd250bf9,0xbd252554,0xbd24b8f2,0xbcdad049,0xbc7a0fab,0xbbe98340,0xbbdd6dfb,0xbc4a43ac,0xbc831109,0xbca852f3,0xbc9264e2,0xbc8c1a1b,0xbcbece4c,0xbca48036,0xbca24500,0xbcb91e3e,0xbcbc89d8,0xbcd7fb60,0xbc94714e,0xbcb9b4a6,0xbcdc5325,0xbcd9d910,0xbccf41c7, -0xbccaf4d2,0xbccada5f,0xbccc285b,0xbcd54f88,0xbd0f498c,0xbd0b8ff6,0xbd1798c8,0xbd1c2cf2,0xbd158af9,0xbcfaec1b,0xbce16b96,0xbcd3710d,0xbccc2c6d,0xbcbfff2d,0xbcaa412b,0xbc9c1086,0xbcabac57,0xbcc816d7,0xbcd49f55,0xbccce5b9,0xbca4b4ac,0xbc838449,0xbc88d357,0xbc99f364,0xbcaa06cc, -0xbca948e0,0xbd267baf,0x3e060a8b,0x3db8661b,0x3ddac554,0x3dd4c547,0x3d70026f,0x3c95f251,0x3db528f0,0x3d877feb,0x3cd510c8,0x3cc3d729,0x3cbb0d1f,0x3cb927bf,0x3cb5fdeb,0x3c79a638,0x3cce1b5e,0x3d86aecc,0x3da92672,0x3c8e1424,0x3d7c5546,0x3da21892,0x3d9d880c,0x3d9ca4cf,0x3d9dcf4a, -0x3d971c74,0x3d9e87dd,0x3d9e8847,0x3d985e7c,0x3d9cba40,0x3da07700,0x3da42a5f,0x3db2d47d,0x3dbba0a0,0x3dd5343d,0x3dcac3eb,0x3dc6ebf8,0x3dc6005a,0x3dc0e78e,0x3e12fced,0x3e00d1d2,0x3b25acf6,0x3d9199b5,0x3d289462,0x3d916d2e,0x3d979bbd,0x3d7489d8,0x3da2592f,0x3da5dc93,0x3d852743, -0x3d92192e,0x3d9f1e7a,0x3d985dff,0x3d1f204d,0x3d9d3db0,0x3d87ee99,0x3d904b6e,0x3d966281,0x3dbf9a2a,0x3db6697e,0x3dc2de4e,0x3db574fc,0x3dba4019,0x3dbaccac,0x3dca5bf7,0x3dd73fd7,0x3df12fa8,0x3e0565f9,0x3e19b493,0x3e22847e,0x3e3e99a6,0x3e36916b,0x3e405df5,0x3e461b2d,0x3e2c59e7, -0x3e45209a,0x3e1dd5ad,0x3d8c72f7,0x3dbbfeae,0x3d380b1e,0x3d724904,0x3d350090,0x3d661086,0x3d70a0d3,0x3d9a81ce,0x3d4a837c,0x3da22db4,0x3d492b6d,0x3d97ae41,0x3d450b1e,0x3d4927d5,0x3d7ce724,0x3d4ee4d9,0x3d9d1a3b,0x3d691c79,0x3d7f0788,0x3d824817,0x3d555ace,0x3d8235fe,0x3d854f2c, -0x3d857078,0x3dab9b48,0x3dcb6515,0x3e06c61b,0x3e22abf5,0x3e4592d0,0x3e71ee97,0x3e632cff,0x3e5ad39a,0x3e6a3e88,0x3e547a08,0x3e899628,0x3e10a7ed,0xbc06a50e,0x3d3708cf,0x3cf8f0a3,0x3c43603c,0x3bfc7582,0x3d08b2a3,0x3d546885,0x3d685c9f,0x3cdb08ef,0x3d1e3e87,0x3d128a65,0x3d57900a, -0x3c910efc,0x3c9a5581,0x3d1c8cd5,0x3d0e4def,0x3d6a843c,0x3d5c110e,0x3d3f14da,0x3d849a7c,0x3d427a44,0x3d8ae621,0x3da6dd1a,0x3db810a0,0x3dfa6c24,0x3e1ffb70,0x3e5791a6,0x3e804442,0x3e9302d2,0x3eaa7d02,0x3ea6c16d,0x3eab3f5a,0x3ebea803,0x3e9a6ba6,0x3e9a6e29,0x3e7e21ad,0x3da0603d, -0x3d9fe9ff,0x3d3fa135,0x3d1bd80c,0x3cfee9df,0x3ca7442b,0x3d1a252a,0x3d50d7c2,0x3cfaa9b0,0x3d288493,0x3d0ca0a6,0x3d0ab684,0x3c47ff74,0xb98dc8f6,0x3ce11982,0x3ca398e4,0x3d8cdd46,0x3ccf1e1c,0xba62f932,0x3c05ce5d,0xbc1b0be8,0x3b222d0a,0x3d03673b,0x3c8cfe97,0x3d87ced6,0x3df9b2f9, -0x3e3e4409,0x3e8008d8,0x3e96a738,0x3eb16794,0x3eaf60d7,0x3e9e54d1,0x3eb7bbe4,0x3ea46e18,0x3e866b85,0x3e316bd1,0x3e9fc6bd,0x3e163c93,0x3e2e6d09,0x3dbdd408,0x3db2432e,0x3d9067b1,0x3d6c1632,0x3cdd3ff4,0x3c6b7a5f,0x3d473c02,0x3d39f25d,0x3d3cc864,0x3d09d1ec,0x3cce7775,0x3d26c387, -0x3cca01dc,0x3d8e03d7,0x3d97606b,0x3db4afae,0x3ddce371,0x3e1af8a5,0x3e45e854,0x3e182d5d,0x3e851761,0x3e8670e0,0x3e74ba68,0x3e0c79cb,0x3e1d0b94,0x3e1b1eac,0x3dc00dc8,0x3e17fd6d,0x3e35eccc,0x3e759789,0x3e9fb8d9,0xbea4acf9,0x3df0fdf1,0x3e91a41c,0x3d758cec,0x3dda43a4,0x3d593dcf, -0x3d6eb6f2,0x3c89c4c6,0x3d10f52a,0x3d02f1ec,0x3d3512c4,0x3d4715d7,0x3d3c5426,0x3d1620d9,0x3cfaf60b,0x3caafc91,0x3d5eb4a3,0x3d80d226,0x3dc6373e,0xba19c25e,0xbdf426ed,0xbe2b2a34,0xbe866b8b,0xbea66935,0xbeb66364,0xbed405cd,0xbed2f657,0xbeb31f84,0xbe7de60c,0xbe24f421,0xbd6a6441, -0x3cb01a17,0xbd930155,0xbe2959df,0xbeb0a857,0xbea868fc,0xbea728ad,0xbe24c36e,0xbd23efe4,0x3bf97538,0x3d87e026,0x3d448a17,0x3d86c337,0x3ce084e3,0x3d9346ae,0x3d94e678,0x3b696455,0x3d934dae,0x3d7b260f,0x3d6a18dc,0x3d49fba8,0x3d1269ea,0x3d51af2a,0x3ce0cc54,0xbbfaee15,0xbdaa8972, -0xbe14cdb8,0xbe408310,0xbe7166f3,0xbe878956,0xbe86707f,0xbe6e6486,0xbe3f8633,0xbe266b8b,0xbdd399f7,0xbdacd945,0xbd5ec096,0xbdfdfa58,0xbd7186ef,0xbd3ab402,0xbc69d741,0xbe2f7b0e,0xbbee5c49,0xbe7c2071,0xbe11962d,0xbd66bad3,0xbc835606,0x3c8c566d,0x3cfe62fb,0x3c8ee0a7,0x3d724a38, -0x3d8582af,0xbc803755,0x3d55c4b6,0x3d245637,0x3d1c1320,0x3c1e00eb,0xbb90a516,0xbc6c9bef,0xbd313c42,0xbda00e2e,0xbe00cd31,0xbdc0a15a,0xbdcbef7d,0xbde0e641,0xbd978dbe,0xbd0160bc,0x3cda6d4e,0x3db4a5f8,0x3df2cb63,0x3e10c0a9,0x3d38aff0,0xbc60020e,0xbe1135ef,0xbcb3f612,0x3d81af8c, -0x3ea15d19,0x3d80703e,0x3de33387,0xbbc434f4,0xbdb9f964,0xbca38b2b,0xbbadf791,0x3ca8cb29,0x3c1636b6,0x3d0fe06b,0x3cdc78e2,0x3cc435f3,0xbc08a56e,0x3b55b7b8,0x3ab86201,0x3b1026ec,0xbd0bcaf6,0xbd7b7fc0,0xbdb546a0,0xbd7aebfc,0xbdb032bb,0xbd55958a,0xbd1955f9,0xbc8da41c,0x3c238873, -0x3cfadcef,0x3d6e466d,0x3d58c8f7,0x3dcbc23e,0x3de286ee,0x3df3540e,0x3dabc377,0x3d8b78bd,0x3c469551,0x3d765f76,0x3d8d5fcf,0x3e7133bf,0x3d8cef85,0x3df6d70e,0xba8882fa,0xbd8af038,0x3c865d7a,0xbc329310,0x3a7f49b7,0x3cb7a37c,0x3d3eff8f,0x3d2d5643,0x3ce4f7e6,0xbc0f4a30,0xbc643121, -0xbb5edbb0,0x3cdd2ae5,0xbaba7346,0xbcbf6c64,0xbcfd6b13,0xbdbaa306,0xbdc5d18c,0xbdd48db5,0xbce8335d,0xbd1ecfd1,0x3caf3d8c,0x3d35fc76,0x3d94d527,0x3d7ceef6,0x3dc387c6,0x3d5c17be,0xbce21e12,0xbd3689c8,0xbd4cb763,0xbd88045d,0xbd4e7fb1,0xbb70e1b8,0x3e0a5330,0x3e031cbc,0x3db05837, -0x3d7d69bd,0xbc174751,0xbcf8c293,0xbc366438,0xbcde9f13,0xbabd6f34,0x3c348654,0x3c38ba9f,0x3c09e54a,0x3c27abf1,0x3c8bd363,0x3c3432a4,0xba92358d,0xbc3032e4,0xbba93ef3,0x3bb22717,0x3b00604b,0xbd9ab014,0x3b0589a2,0x3c096304,0xbcbcd639,0xbcbd5168,0xbd34be63,0xbd180bd6,0x3b71ad5a, -0x3c50b236,0x3a881abd,0xbc75826b,0xbd2684b2,0xbcb8bf57,0x3cada541,0x3bb0f19f,0xbb9a9e61,0x3cb4ee7c,0x3d9032a7,0x3d5f8fcb,0xbc7dd7b2,0x3c075111,0x37839bb3,0x3be3adbc,0x3ca7c078,0x3b0bdfb1,0x3c5d148c,0x3b7debe7,0x3ba5feb0,0xbb012a0f,0x3c2dd634,0x3b11d7be,0x3c9d2634,0x3aeca8c7, -0x3b1f70fa,0x389c8d28,0xbb3028cd,0x3add6fa7,0xbcdff532,0x3af9ab3d,0xbd1e3506,0xbd659883,0xbd47df86,0xbd18c492,0xbcd4cc3c,0xbcf3cc77,0xbcfb034c,0xbd24633d,0xbd295a81,0xbcef8691,0xbc56bf37,0x3a9a43c4,0x3c2bf6c3,0x3cc60369,0x3cf4c597,0xba166242,0x3c005667,0xbcb1911b,0xb9c8cca0, -0xbc06a773,0xbc4368ed,0xbaaab8e5,0x3b8d9b7f,0xbb6f60fb,0x38eb5251,0xbca05e23,0x3c177fd2,0xbbd028e5,0x3c943fe8,0xbc3d45f6,0x3b9e76f1,0xbba313d1,0xbc1c1b8f,0xbd1cb43f,0xbb46736e,0xbc4dc059,0xbd090db7,0xbd41ac5c,0xbd4cd1a6,0xbd696def,0xbd8511a5,0xbd3c154d,0xbd0d4bed,0xbc782eca, -0xbc421b17,0xbc3f7256,0xbc9af83a,0xbbaf54bf,0x3b787783,0x3c4f248e,0xbb37e923,0xbce0b5ad,0xbccdc41f,0xbd02f249,0xbcadf4a9,0xbca23e88,0xbc86c612,0xbc75aec7,0xbc834743,0xbc1bcb6c,0xbc7817ca,0xbc66ad96,0xbc9f098e,0xbc64e25d,0xbcb8785b,0xbc99b4f2,0xbc928bec,0xbd1d70e9,0xbc7ae4df, -0xbd4af05c,0xbc23ff33,0xbc4adc31,0xbc5a984d,0xbc4dbc3f,0xbc95ae38,0xbc9c7b85,0xbc9a5e4b,0xbce3fe4e,0xbd0b9155,0xbd285945,0xbd3b6355,0xbd2a5b2f,0xbd234fed,0xbd221fad,0xbd2adb9a,0xbd1ffc9d,0xbcf42f80,0xbc4313bf,0xbc1dbfc5,0xbc331e4d,0xbc6cf0e3,0xbc890fbf,0xbc25207a,0xbc309780, -0xbc8139cb,0xbca08289,0xbca08820,0xbc9d96c3,0xbcb36a5c,0xbccee5f2,0xbccbc00d,0xbc0c1149,0xbb852f99,0xbcbcf2f4,0xbc356516,0xba8ce057,0x3766fa25,0xbc0b6ac8,0xbc39fd6b,0xbc6d33ef,0xbc898af5,0xbc9c88de,0xbcabb363,0xbca439fc,0xbc810ea1,0xbc5cca55,0xbc3f5e6e,0xbc5d646d,0xbc7a3fab, -0xbc5b80ff,0xbc34253c,0xbc31c894,0xbc494033,0xbca1a3c5,0xbcfb0c6d,0xbcafc916,0xbd418971,0xbb86b5a8,0x3d4e6691,0x3db0e636,0xbc17d141,0x3d0819fd,0x3db81abd,0x3dc5831b,0x3dc71f0b,0x3dae32d2,0x3db3ccd7,0x3dd0efe7,0x3dba2e7b,0x3d089754,0xbb5028f8,0x3dbbf6f8,0x3d258edd,0x3a1d3215, -0xbd34bfe0,0xbd004a4f,0xbd0dae00,0xbd111fb7,0xbd1e8186,0xbd20e5d1,0xbd154bf0,0xbd10688b,0xbd0c4531,0xbd079f8b,0xbd113bd5,0xbd170c04,0xbd1f48ef,0xbd1a2fd5,0xbd07f64a,0xbcb563ed,0xbcd1bae2,0xbbc0266b,0x3adcdf97,0x3e02180a,0x3cad3cbc,0x3d8312ab,0x3cb310e5,0x3caf5453,0x3cc69a8c, -0xba814557,0x3ce5c647,0x3ce21a71,0x3cdcf238,0x3c514a7d,0x3d08ef76,0x3d851652,0x3b30069a,0x3cda9b36,0x3c2e1951,0x3d0b3418,0xbd35f2d2,0xbd1ff8c9,0xbd2c28cf,0xbd53346e,0xbd50417b,0xbd536b3e,0xbd708d7d,0xbd7c875f,0xbd870558,0xbd8ee99b,0xbda6e08b,0xbdaf67ca,0xbda55c0a,0xbd9ab746, -0xbd6d012d,0xbc282c10,0xbbff0b6c,0xbc9a6a08,0x3c38c4cb,0x3dabbcbb,0x3cc721c4,0x3d4bbea1,0x3d0f184b,0x3d57b26b,0xbbe19a25,0x3d3861b6,0x3a571c7c,0x3d179cd7,0xbc5de7f2,0x3d024fff,0x3c9797b3,0x3ca40dae,0x394848d1,0xbbe0ea37,0x3c3bb8bb,0xbbf69b19,0xbd14e480,0xbd70a249,0xbd617ab5, -0xbd956226,0xbda52338,0xbdb5c9f3,0xbdad9be4,0xbdae6195,0xbdafee14,0xbdb50d62,0xbdd4cbd9,0xbde1dcd8,0xbdde207e,0xbdc2df9c,0xbd8b4d47,0x3a88bd1f,0xbc4b8c09,0xbc058f27,0x3dadd693,0x3e2568ba,0x3d96665a,0x3d9cd2e7,0x3d722414,0x3d2e847c,0xbba97698,0x3cb28d84,0x3ce61b32,0x3c9b1993, -0x3cb893ae,0x3d10068d,0x3ca74e71,0x3c935b09,0xba1d2c7a,0xbc3ad8f6,0x3b9f0029,0xbbfac3a5,0xbd1b2d2b,0xbd6ac808,0xbd6bb1f4,0xbdb74a34,0xbdd09be2,0xbde2db0b,0xbdf3522f,0xbe05a0c3,0xbe0df763,0xbe1da300,0xbe3ebba9,0xbe475571,0xbe327505,0xbe2056b2,0xbdda831d,0x3cb625b3,0x3c512eb9, -0xbd84af81,0xbc8203c2,0x3df11845,0x3d7605bb,0x3d40f473,0x3d748176,0x3d41807d,0x3bc7fecd,0x3d28c47c,0x3d2e108e,0x3c295aea,0x3cfc6cd9,0x3cc1ecbc,0x3cccd056,0xbb9901ad,0xbc3e6a89,0xbbaf2be3,0xbcf7c8fb,0xbb002fde,0xbd7fe159,0xbd75c81a,0xbd9aa5a3,0xbdc8439a,0xbdf4331c,0xbe16f643, -0xbe01fcc6,0xbe033eef,0xbe0b091b,0xbe11c028,0xbe42d9f6,0xbe454586,0xbe2e8cd7,0xbe2463c1,0xbdc53f13,0x3c1fae05,0xbd023052,0xbe48a15d,0xbe069776,0xbc23f18c,0x3db9cadc,0xbc9d5a43,0x3c10cc4a,0xbce21b01,0x3c6a35eb,0x3cb02e19,0x3d4ba69d,0x3ce2b929,0x3d165b9d,0x3cc220d9,0x3d39bd1f, -0x3c5fbc98,0xbc62e274,0x3ba8fd6a,0xbcef460b,0xbd0022b8,0xbdc0bc54,0xbe370bde,0xbe614ac4,0xbea7afab,0xbeb063e1,0xbeaf0146,0xbee787f4,0xbee5aa02,0xbec97d6a,0xbe7cbb01,0xbe4fa580,0xbe2c4b49,0xbda801b2,0xbd9679af,0xbdb8a748,0xbdf7d649,0xbe71f2d2,0x3d3cba39,0xbe20e15d,0xbe11261b, -0xbd6c6e7a,0xbc97bfa4,0xbb738073,0x3d1a2076,0x3da609bb,0x3d886075,0x3d837801,0x3d1c88c1,0x3d317e5c,0x3d03ecb0,0x3cc71c0a,0xb9762da7,0xbcbe152e,0xbd133952,0xbd5e71d6,0xbda2e620,0xbdd21917,0xbdec2711,0xbe00c22e,0xbdcaa0b0,0xbe4516e4,0xbe4fe127,0xbe18a78a,0xbd78361a,0xbcd9f2c0, -0xbb1c1ef8,0x3d8ae364,0x3d8402af,0x3c098e53,0x3deae44b,0x3e1eda8f,0x3e73e185,0x3de7875e,0x3e1e9364,0x3b5250b2,0xbdb38d86,0xbd40cc86,0xbd94eedc,0xbccced35,0xbbce4358,0x3c9749e7,0x3d2d1230,0x3d6c582c,0x3c3582ee,0x3d5c7469,0x3d3cadb2,0x3d4d9ed1,0xb9c442e4,0xbc88e2a1,0xbd303eda, -0xbd500381,0xbd6b3e00,0xbd2b2d92,0xbcdff9a3,0xbc6cdbcb,0x3d310280,0x3d008ccb,0x3d6783ba,0x3d15d92d,0x3ded2c58,0x3e1d0a1c,0x3e0b052c,0x3e17304f,0x3e027991,0x3d3d2c2c,0x3e2ebd64,0x3e2478b8,0x3da7e36a,0x3dfc64d1,0x3bcb635a,0x3e249e6c,0x3d329ec0,0x3cf00e98,0x3bf6f5cb,0xbc27dba1, -0x3aa223e9,0x3cb74143,0x3c866a80,0x3ceae4f1,0xbc51e35f,0x3d06a821,0x3d18f70d,0x3d630508,0x3c84fc66,0xbadc5d27,0xbc13ef84,0x3a5a3273,0xbca3e6f4,0x3a09675f,0x3cfff2cb,0x3d1d6920,0x3d79bc38,0x3d974db1,0x3da21385,0x3d453cf1,0x3d110de1,0xbb8cff81,0xbd436761,0xbd12f0d0,0xbd17c226, -0xbc8149c5,0x3d8feb2b,0x3d535f68,0xbe1ce3e9,0xbd011476,0xbdf9a115,0x3c6b3d9f,0x3d3b2095,0x3cd5769d,0x3bf78a96,0x3bceed20,0x3cdaa9a5,0x3d6ccad5,0x3cf73187,0x3c9c1125,0xbc2eac4d,0x3bcd3fb5,0x3c8d0296,0x3d2d45cf,0x3cb9bb20,0x3bc37f0d,0x3c469c08,0xbb81c669,0xbc799782,0x3c2497dd, -0x3c8dfa96,0x3c0b20b1,0x3c72fef8,0xbcaa46d6,0xbd08d2dd,0xbc9c1580,0xbd79c3ba,0xbda4a0a7,0xbdc5e7ed,0xbdd11b32,0xbd9413c8,0xbc93c83a,0x3d0ed178,0x3d4951f8,0xbd8af711,0xbdbbfd96,0xbdca86a5,0x3c1102c7,0x3d6c353f,0x3ce2e9a5,0x3cb697d8,0x3cd49caf,0x3c752b47,0x3ac84aef,0x3bf9376c, -0x3c1690b0,0xbc85bba2,0x3cb9b749,0x3cfecd2c,0x3cf9f420,0x3ca6ddf7,0x3c913b2a,0x3c58602a,0x3d109b16,0x3d1cdbc3,0x3d1d460a,0x3d1c1aee,0x3c8b6f1e,0xbcd1e266,0xbd469e7f,0xbd76da0c,0xbd6ccc40,0xbdd6b1a1,0xbd9a6183,0x3be637de,0xbcc10607,0xbca8cdd4,0xbc3bfa0a,0x3d89a100,0x3d861a81, -0x3c8336bb,0xbda3af54,0xbd49b21c,0xbd825c8e,0xbba627a6,0x3bc0a799,0x3b420aca,0x3cdeb48e,0x3cd7413e,0x3c9ef15c,0x3cba4832,0x3c371cc7,0x3c904801,0x3b138b70,0x3bc4e5e9,0x3c95baee,0x3c8336fa,0x3cb3bf40,0x3c8548ed,0x3d0d030b,0x3d140593,0x3d296ae5,0x3d416c25,0x3d2cf248,0x3cab84d7, -0xbd0cf614,0xbd896210,0xbdd84340,0xbdc090aa,0xbdaffc87,0xbd9423dc,0xbd59a102,0xbd28c104,0xbcffc051,0x3cd122e3,0x3d83b039,0x3d8bcbd9,0x39fb9e1c,0xbbcf0118,0x3d2816e9,0x3c920529,0x3c4023e3,0x3bff475f,0x3c43a423,0x3cb6133a,0x3ca57716,0x3c9f9f92,0x3cd5a4ae,0x3cad3a3e,0x3cc4b885, -0x3cb9582f,0x3cb3cb37,0x3cd2a506,0x3cc3a7cf,0x3c8e9b44,0x3cfbdf32,0x3d15e9b9,0x3d0f6c32,0x3d3bf1f9,0x3d1b6fe1,0x3ce3169f,0xbbacf2b5,0xbcf3f2f8,0xbd63fd20,0xbd3261fb,0xbd22ddb0,0xbd1854c3,0xbcd69573,0xbcd0af9f,0xbcf713cc,0xbb6126f6,0x3c80a819,0x3ce24648,0x3cbb731e,0x3ce71ed7, -0x3d03de88,0x3d1016ad,0x3cf3b22f,0x3c943dd0,0x3cba1653,0x3c963f87,0x3cde689b,0x3cceea98,0x3cd2d48d,0x3cb9c97c,0x3cf94f79,0x3cdc04bb,0x3cabee77,0x3cb44c6d,0x3cd47e3a,0x3cb76f7f,0x3ceff880,0x3ccf768b,0x3d405ee0,0x3d1e3c2c,0x3d0c836b,0x3d163aa9,0x3cf81dd9,0x3cc67c1f,0x3c2c2971, -0x3b21fdad,0xbc4de9ff,0xbcea87d1,0xbce610c9,0xbceaf042,0xbcf58205,0xbcc52787,0xbc7a2ff5,0x3afbebab,0x3c8be06d,0x3cbbeb22,0x3d144276,0xbc1c7728,0x3c8c70dc,0x3c95bbbc,0x3c8e8cbf,0x3cf2fd11,0x3c489779,0x3cb96149,0x3c2c079f,0x3c006fdc,0x3b1d2abf,0x3b5bcf4e,0x3afc8d4b,0x3b85991b, -0x3b98b099,0x3b7c0b33,0x3c5b81bf,0x3a0ef26c,0x3c76506d,0x3c0eb4a1,0x3b75cdaa,0xbbdaa7d1,0xbc5e9145,0xbc930bdc,0xbca606b3,0xbc6ca88c,0xbbbcf386,0x3ad5fd46,0x3a4cd797,0x3ae2e650,0xb976b7c4,0x3c0a644b,0x3c91a432,0x3c97f568,0x3c980147,0x3c9327ee,0x3cd24082,0x3c117970,0xbb9a2b94, -0xbc7c8ec6,0x3c6077fa,0x39cf3917,0xbc6f4334,0xbc90ec98,0xbc69001a,0xbc47d421,0xbc437b15,0xbc5c2823,0xbc72938d,0xba42f8d1,0x3c280c73,0xbc48d4ff,0xbb6f50b5,0x3bfbe250,0x3c96fe8b,0x3c73efbe,0x3c6ed7cb,0x3c81c7a6,0x3c849633,0x3c7011dc,0x3c41aba0,0x3c266af0,0x3c019dd0,0x3ba55905, -0x3b943712,0x3bd8d30c,0x3bb9500c,0x3be38c75,0x3c147033,0x3c3d5f78,0x3c84eaac,0x3cab72f4,0xbd80bd1d,0xbd327896,0xbd37b4ce,0xbd7975a5,0xbd67658b,0xbd414a34,0xbd40d470,0xbd515019,0xbd59b5f3,0xbd4e0e82,0xbd4b5f68,0xbd418dcc,0xbd3dbf9c,0xbd428642,0xbd3c2777,0xbd49cdf3,0xbd35335d, -0xbd48c9b2,0xbd5f9f6e,0xbd44ec5e,0xbcf7c992,0xbd0ee787,0xbd0ce178,0xbd0227e1,0xbd0d60d3,0xbd129a09,0xbd145d62,0xbd11e4ce,0xbd14ebaa,0xbd17155f,0xbd19482c,0xbd10f210,0xbd2263e6,0xbd152c32,0xbd1bca67,0xbd32cf9c,0xbd335062,0xbdba5688,0xbdb08027,0xbd561540,0xbd5e65d8,0xbd6ca60d, -0xbd65e834,0xbd508cff,0xbd4538bf,0xbd0d4a46,0xbd3232a3,0xbd26bfc4,0xbd23c25e,0xbd126138,0xbd174c98,0xbd33f1ce,0xbd2dfe6b,0xbd50a638,0xbd4a92bf,0xbd6d4301,0xbd25d39d,0xbd2c3c26,0xbd364d23,0xbd183085,0xbd2986fe,0xbd2728fa,0xbd39d276,0xbd38fe95,0xbd32a1b2,0xbd1fcb5e,0xbd177639, -0xbd1704ec,0xbd850278,0xbd798f26,0xbd9872b6,0xbdcce5b0,0xbdc979a7,0xbdedc0f4,0xbdd848c8,0xbda8d3e0,0xbda57b2f,0xbd702d4c,0xbd54f726,0xbd33deab,0xbcf629bc,0xbcc6789a,0xbc275923,0xbcceb443,0xbc53a399,0xbc6dc962,0xbc3652bb,0xbca83cae,0xbcc452c9,0xbd1d2dd3,0xbd34b6ad,0xbd661dca, -0xbd15cd82,0xbd0adc06,0xbd1b3427,0xbcb5d703,0xbd0a0000,0xbd1d2ac9,0xbd3be8e0,0xbd32cc14,0xbd33a908,0xbd508ed2,0xbd1adc4a,0xbd32613e,0xbd9c15dd,0xbd84b227,0xbd950a96,0xbdf41f1e,0xbdf4b064,0xbe322280,0xbe19f6ad,0xbd9c660a,0xbd8706c2,0xbdaaccb6,0xbd2da0e1,0xbc98d8b0,0xbd0be654, -0x3a0c6949,0x3beff7cd,0x3aa56a3c,0x3c0726f0,0x3b81ba1c,0x3c8ea5d8,0xbb949bfc,0xbc5686c4,0xbcf06d38,0xbd25184f,0xbd3a78a2,0xbd0d6db1,0xbd0ba6d1,0xbd18d6c6,0xbc920604,0xbd0a3e6a,0xbd1ec6ef,0xbd40b5be,0xbd46e28c,0xbd3dbf25,0xbd1bd0d7,0xbcbcb505,0xbd002b35,0xbde5b45d,0xbdc35811, -0xbdfc7c57,0xbe50293d,0xbe3fa0a1,0xbe28918d,0xbe221875,0xbdff06f2,0xbdde6296,0xbd8fc1e1,0xbd7b05dd,0xbd19bea5,0xbcab5d24,0x3caf38c4,0x3d075465,0x3c983328,0x3ce0f3f9,0x3cc35186,0x3ca7e879,0x3ac28485,0xbc47c076,0xbd0a997b,0xbd18dcad,0xbd812953,0xbd1cfcc8,0xbce52b16,0xbcecd749, -0x3819c878,0xbc74feff,0xbd1e6d48,0xbd5cbb11,0xbd84b923,0xbd75d510,0xbd9c99f5,0xbd07f55f,0xbd3ef249,0xbde0d85e,0xbdbe58d4,0xbdcf466e,0xbe44579a,0xbe40a567,0x3e907a4e,0x3e60df2f,0x3c60b0a7,0x3c650bc9,0x3d32b7b1,0x3d13b1b7,0x3d8ae30d,0x3cc96163,0x3c2c5605,0x3bc08034,0x3d0d0a57, -0x3c863e59,0x3c3e2c7e,0x3d2317cc,0x3b4ba717,0xbbe026c0,0xbcf237c0,0xbcda131c,0xbd8294d4,0xbd643f29,0xbc9e32b7,0xbc669b29,0xbcd23961,0xbd26e68a,0xbb0be26a,0xbd08da6e,0xbcbc26f9,0xbd9337dc,0xbddd8c15,0xbdecee7c,0xbdaf41cf,0xbd9224ac,0x3c22b763,0x3dbbb6e9,0x3da6754c,0x3e962d20, -0x3df22d67,0x3e29a812,0x3c2abeff,0x3d8c5ea6,0x3c0ca50d,0x3d0475a6,0x3c0c1356,0x3c3fa6a3,0x3d7383c1,0x3d55183a,0x3cea4af1,0x3ce03e43,0x3cd9a9dc,0x3d48c4dd,0x3baceaf3,0xbbd89075,0xbd2feead,0xbd79ceac,0xbdb13c61,0xbd3fddfa,0x3bacfd46,0x3cdec763,0x3da4007d,0x3dc013c9,0x3de81ac0, -0x3db166bb,0x3db13415,0x3d82dc7b,0x3daefb1e,0xbd388a4a,0xbd0965d6,0x3d7331b3,0x3ccb2702,0x3ce42daa,0x3cc7caa4,0x3d3437d2,0x3bf9969a,0x3dabd24d,0x3e02de13,0x3da03600,0x3da03b0f,0x3d1d8903,0x3d03c4ae,0x3d549823,0x3d21f29e,0x3d4cead1,0x3b939c39,0x3c548a0c,0x3c59340a,0x3d841814, -0x3b5c2056,0xbb93540f,0xbb37ebbd,0xbbd944a3,0x3c0f831d,0x3c074d4a,0x3d1efd6a,0x3cfe4cfc,0x3b7b64cd,0x3cd70d8f,0x3cf9f8a1,0x3d0ba666,0xbc823bae,0xbd645e63,0xbd58241c,0xbe025c8f,0xbdf43410,0xbc6ba6b0,0xbd8ef164,0xbd85610f,0xbd326bba,0xbce9b11d,0x3d276355,0xbc03d005,0x3c729da1, -0x3d29342c,0x3d096ada,0x3c8247ec,0x3cc818f8,0x3d74e4e7,0x3d0118a9,0x3cc98c1d,0xbb2c7764,0x3ac3dc47,0x3c146b76,0x3da77ea5,0x3ce78469,0x3c9011e0,0x3d19ce45,0x3d03f68a,0x3d1453fe,0x3d05633f,0x3d0e018d,0x3c96f513,0xbc8b2e3f,0xbc601cd7,0xbc9847c6,0x39df94d0,0xbd079786,0xbd2dd1a1, -0x3ca5ede5,0xbc2d9176,0x3cb7abb8,0x3d98d025,0x3d196bb3,0x3c3ad8d3,0xbb0664aa,0x3ce40f5f,0x3de57ae5,0x3d43c003,0x3c0fbca2,0x3c8daf78,0x3c935529,0x3cceba1f,0x3ca593ac,0x3d17ddcd,0x3c86749e,0x3b1b1e1e,0xbb6b7292,0x3ba14a6f,0x3c913525,0x3d98c713,0x3d087470,0x3d13973e,0x3d59f4b8, -0x3d2c5850,0x3cf95f78,0x3ceb32e2,0x3c026932,0xbc0f1f10,0xbb64eb8b,0x3b6ee9bd,0xbb542d22,0xbc8ce69c,0xbd3a8da5,0xbd388c91,0xbc8c2957,0x399f04f6,0x3cffe442,0x3dc209cd,0x3d5722ce,0x3d4541c9,0x3c1e0c69,0x3d715081,0x3c928d77,0x3d1d9825,0xbc7f74bc,0x3bddd0d0,0x3c0ffe75,0x3c5c64bf, -0x3cc28a5d,0x3d0316d6,0x3c8da086,0x3cc1dbdf,0x3ccd4917,0x3d3d5a58,0x3d195bb8,0x3d126a4d,0x3cd8d955,0x3cb0a1cb,0x3ce2f2c2,0x3ca42b5c,0x3d00999a,0x3d1d8ff4,0x3d135b92,0x3d2c093a,0x3cf1e794,0x3b60a4e3,0xbc99b45f,0xbd3e8c9d,0xbcd41cba,0xbd2cc0e5,0xbdae32c2,0xbd912195,0xbd0152b6, -0x3d1256ee,0x3cf1a536,0x3c8a7fec,0xbd22dab3,0xbcb60e46,0xbcddda46,0xbc3e4c32,0xbca7ea5a,0xbb6878eb,0x3c5d78d7,0x3cbe8fdf,0x3d004ea4,0x3c68f7db,0x3cbb44a0,0x3ca672b2,0x3cb63ac3,0x3c5ab46e,0x3c8a202d,0x3c944d1e,0x3cd0aada,0x3cfc1183,0x3d05d590,0x3cda83a0,0x3d056322,0x3c1d9847, -0xbb67c289,0x3b18a9d3,0x3c9fd645,0x3d14e462,0x3d194362,0xb84e5687,0xbcb9f124,0xbd3c1ae9,0xbd78c3f7,0xbd08260c,0x3a9c211b,0x3d0874f8,0x3c2fdbdc,0xbc185e90,0xbcb21479,0xbd0c67b6,0xbcba38b9,0xbd545a85,0xbcc0ac1f,0xbc646ccd,0xbbb45133,0x3b699362,0x3b1ff100,0x3bb33da5,0x3c8f971b, -0x3caee3a3,0x3d0cfa82,0x3cab4bc4,0x3c82cf77,0x3c7cfc89,0x3c879a65,0x3c888505,0x3c6759a5,0x3c94132a,0x3cc1993d,0x3cd42480,0x3c59a972,0x3cd14be6,0x3d118c47,0x3cfd70fe,0x3cca62ea,0x3c2d0c90,0x3c03d29f,0x3b1b6413,0x3a2b3326,0x3b853d88,0x3c5f0bba,0x3cdace93,0x3bfcff16,0xbb3d1d0b, -0xbafd160e,0xbcb1b144,0x38142aa3,0xbbb9646f,0x3bb50abf,0xbbbc4d02,0xba574661,0xbb60fc45,0x3b4eb351,0x3b9b1dd9,0x3c501183,0x3cb812b7,0x3d0bcdbb,0x3d00b180,0x3cd58c32,0x3cf9c12a,0x3c89c010,0x3c569611,0x3c47ac9c,0x3c643b9e,0x3cc61dbb,0x3c73240b,0x3c784ea1,0x3cb85529,0x3cb40570, -0x3c50c104,0x3bfc5b7d,0x3c01b58e,0x3c8ea258,0x3d08a54f,0x3d460895,0x3d30570a,0x3d293e02,0x3d1f5607,0x3d137a92,0x3cf6b89b,0x3c97839d,0x3c4a6607,0x3cef1b3d,0x3cb0844b,0x3d65af76,0x3d23fda3,0x3d377955,0x3d4b55ff,0x3d2426f5,0x3d34a2af,0x3d19c196,0x3d1fb8ff,0x3d137c95,0x3d206395, -0x3d321d3d,0x3d395da2,0x3d438344,0x3d3c150d,0x3d290cc3,0x3d21900b,0x3d0a0608,0x3d00957b,0x3d0f16b5,0x3d1da8a3,0x3d352131,0x3d588f62,0x3d6af0d3,0x3d68f86d,0x3d578a4e,0x3d21016c,0x3cfa75e9,0x3d115ab6,0x3d07df0c,0x3d14da46,0x3d096f10,0x3cdfd2bc,0x3cfa51a5,0x3d005121,0x3c6b0b4f, -0x3c30deb1,0x3cc941a1,0x3cf5c8d9,0x3ce16094,0x3c837328,0x3ccb8cfe,0x3cf589ac,0x3d00a1b7,0x3cfb1edc,0x3cf8bcab,0x3cef3b4d,0x3cda22db,0x3cd68e5b,0x3d0004e4,0x3cd23f39,0x3cc00fab,0x3cf19ed8,0x3ccf5832,0x3c73e362,0x3c8c97e5,0x3c99a3be,0x3c94fae4,0x3c928589,0x3c979120,0x3cab9407, -0x3cc00d02,0x3ccc6238,0x3ce9579a,0x3cdf0ae9,0x3cb73e7c,0x3cb47ff0,0x3cac1281,0x3c96d72c,0x3c8c6945,0x3c7db696,0x3cd4f8a3,0x3b31585e,0x3b6a949e,0x3c978cf3,0x3c1cba17,0xbc7b4d0c,0xbcfe120c,0x3bd2c9c2,0xbc0506ea,0xbcd46a7f,0xbcd50674,0xbccb5cff,0xbcba3ff8,0xbcc40031,0xbce71ba6, -0xbcbeb56f,0xbbadd3a2,0x3b38e2be,0xbcf147de,0xbc2b7b55,0x39e9500d,0x3c290ac2,0x3ba46bb4,0x3bbb84f3,0x3bdb44b7,0x3bbab5e7,0x3b94a1cd,0x3acf9ba3,0x3adb01ea,0x3b1efc1b,0x3b953fae,0x3b92f047,0x3b4b7233,0x3adab0ed,0x3b83a2e3,0x3bbe75c5,0x3bcc030c,0x3bbe2bff,0x3bb90e16,0x3ba4a859, -0xbd925396,0xbc7384ed,0xbd047d91,0xbc0e8e39,0xbc19b738,0xbc1d9a86,0x3b25c5bb,0xba89c09d,0xbb42a58e,0xbb283bf3,0x3b38d30a,0x3b811d50,0xbc405fd2,0x3b6201a8,0xbc0737c8,0xbbafbe93,0xbc7be0c5,0x3c39e151,0x3be8879e,0x3c1ceb58,0x3c86dd0c,0x3c1491bb,0x3b51bff1,0xbb78e20e,0xbb53996e, -0xbb5a057e,0xbb2f61b2,0xbbf4438b,0xbc2546f7,0xbc1ba5f1,0xbb134b00,0xba5baaba,0x3b626240,0x3bbcbaef,0x3d0754fb,0x3caba9a0,0xbcdefa1d,0x3b24a5c5,0xbc979c49,0xbbdc065a,0xbc499882,0x3af772c2,0x3a6e5649,0x3c4446d0,0x3c11fd94,0x3c860989,0x3bad94a3,0x3cbd9e08,0x3bf9aced,0x3c0facb8, -0x3b83df64,0xbbd362d3,0x3a528e7e,0x3c25bf24,0x3c6b6faa,0x3c28a7e5,0x3cb16363,0x3c4cacbb,0x3c0a01fd,0xbbd6d557,0xbba8dd27,0xbb3d6443,0x3c0fd661,0xba5eae52,0xbbe9a72c,0xbc8efdac,0xbbb97a12,0x3bcdf919,0x3cbbe663,0x3cbfb054,0x3d4ae687,0x3c4998ea,0xbdaa3bc8,0xbd0afda6,0xbcb7c35e, -0xbd0b3c83,0xbcc5f084,0x39b73a31,0x3c3f402e,0x3c99f7e6,0x3c47a294,0x3c48c175,0x3c4781cb,0x3d294144,0x3c517972,0x3c139ea5,0x3c00ad54,0xbc396529,0xbc3109fe,0x3bd8fbd8,0x3c821b4e,0x3c882b23,0x3d25e497,0x3cbb3454,0x3c39b0fb,0xbc20a066,0xb9fa9c11,0xbb1b113a,0xba6be32f,0xbcb66893, -0xbcff488a,0xbd177962,0xbca0b8c0,0xbc5d5910,0x3cc20d9f,0x3d0cadca,0x3dd48280,0x3dbc2353,0xbc98585c,0x3c68d615,0xbc1b70b8,0x3af613f6,0xbb8babe4,0xba88a3a3,0x3c2f0f10,0x3d096db7,0x3cd0f4ca,0x3cbaf48f,0x3cc82d87,0x3d0e4dd3,0x3c662bae,0x3b901531,0xbbb8cd31,0x3bdabe9a,0xbcef63a1, -0x3c7a0045,0x3c7a38cc,0x3c3ec42c,0x3d037267,0x3c773005,0x3c982a0f,0xbc1af315,0xbb926d64,0xbac0f105,0x3cde7ad7,0x39d2fce4,0xbc4372b6,0xbd080d07,0xbc2f96f5,0x3cbd76e7,0x3d76b235,0x3db6b768,0xbbaf5467,0x3d81102f,0x3e79e925,0x3e113547,0x3de68a18,0x3d5bcfef,0x3d397137,0x3da737fa, -0x3d7bdbc0,0x3d09df43,0x3cddc59e,0x3c0b71a7,0x3bdee518,0x3d14f92b,0x3c74dd7d,0x3ca226b7,0xbc510917,0x3c6f8781,0x3c6399bc,0x3d03d63c,0x3d755c5b,0x3d8c9f43,0x3e0f86ab,0x3e040cbf,0x3dce4054,0x3e37557b,0x3e30de35,0x3e3089eb,0x3e0bb027,0x3d3590eb,0xbd5fa43f,0xbe064950,0xbe460bac, -0xbe4ad18a,0xbe0d7d5e,0xbd692e06,0xbc8f6421,0x3d01cb5b,0x3e0bca82,0x3d44eafa,0x3dae9b71,0x3d883a84,0x3d96dd56,0x3ce27d5c,0x3d404de4,0x3d3275e8,0x3c893562,0x3d0f5d3c,0x3d0cb73d,0x3d342a8e,0x3cbddb62,0x3ce40454,0x3cc9c89a,0x3d1a2bc9,0x3cff967b,0x3cab6014,0x3c96f51d,0xbc789460, -0xbd9fa6ed,0xbd055d7e,0xbcea04ab,0xbd7d9b3b,0xbd94e56d,0xbd6ea8dd,0xbd967d8c,0x3c8eb226,0x3d3cdd77,0x3d5e735f,0x3dc5cb01,0x3dc49cc3,0xbd7b2f9d,0x3c6c07f4,0x3b235db4,0x3cf21cb0,0x3c2f270d,0x3d39329b,0x3d8d4a74,0x3d3e8f2b,0x3d59dc77,0x3db66f00,0x3d52438e,0x3d2585aa,0x3bca35ce, -0xba074377,0x3bf4642b,0x3dc41c4a,0x3cb6701f,0x3c860d23,0x3cb5a261,0x3ce886d2,0x3ca49478,0x3c225fba,0xbbf7ae55,0xbd03329f,0xbd814e69,0xbdc6da22,0xbdf3e09e,0xbe12f405,0xbdd9976e,0xbda8e668,0xbcf65c75,0x3c5eee97,0x3d80b2ac,0x3e1a5fbe,0x3dc765e7,0x3db6435a,0x3b781a16,0x3d1fd8e8, -0xbd5d3ff6,0x3c25cc69,0x3d5ce7a0,0x3bde8ae5,0x3cde0421,0x3c879317,0x3cc1710f,0x3dbe6ecb,0x3cdc5c32,0x3c66e438,0x3c92f11e,0xbbf74932,0x3bf4b178,0x3dcc2487,0x3cfdae4b,0x3c82a8d8,0x3c65f087,0x3bb710c5,0x3c16ce1e,0xb92f1c37,0xbd091d9c,0xbd1317fd,0xbcf6957e,0xbd5e006a,0xbd803268, -0xbdb4ba22,0xbd3e0c26,0xbd147c10,0xbd403066,0xbaef9c86,0x3cdfc256,0x3d4ae85a,0x3c57b98a,0xbcc2f22d,0xbd98065c,0xbd29478a,0xbd0116e3,0x3b47f136,0x3d038aa0,0x3c78ad50,0x3cf5d8c8,0x3ca59f70,0x3d174f2c,0x3d3e664d,0x3c8132a0,0x3b5be4f7,0x3d05a1f0,0x3c9c0453,0x3cdd70c5,0x3d61c423, -0x3cb90324,0x3c821087,0x3a8cbf61,0x3c6a56ab,0x3cd1639d,0x3bd1aa23,0xbb435919,0x3bd68d16,0x3a9886f2,0x3cac05fb,0x3ca1b325,0xbb1b7d58,0xbc9f2c94,0xbd6f286d,0xbe08075e,0xbdc3bd37,0xbdbb5f5b,0xbdc21eee,0xbd86f06e,0xbd550cde,0xbde9d2a5,0xbbcee84f,0xbc1f7ac9,0xbc9b5953,0x3cdefad2, -0x3ca8ef9d,0x3c144bab,0x3c5ff93c,0x3c183671,0x3cb38b42,0x3ca2afdb,0x3c8dc858,0x3cae930d,0x3c13c46f,0x3c29e2da,0x3c8b4915,0x3c7bccfc,0x3cb80c75,0x3c62f0a8,0x3c98b226,0x3ba680fa,0x3af65d77,0xbc8dcd35,0xbced5285,0xbc9713f2,0x3bd1831f,0x3c48d0ad,0x3cdc515c,0xbcbfa5de,0xbd23dbea, -0xbd277c8a,0xbce38ec5,0xbca567d5,0xbd13363a,0xbcc727b4,0xbd025884,0xbdbb4bfd,0xbbe5afc5,0xbcb9bbf4,0x3ca1bad5,0x3cb31bd6,0x3d096753,0x3d0d4433,0x3d054afb,0x3ce706b7,0x3d21f581,0x3d05c355,0x3d106b7b,0x3c83270a,0x3d00c2bd,0x3cd29b83,0x3cb338f8,0x3c7caa80,0x3c0b7a22,0x3b37f2e3, -0x3b2b6adf,0x3b9aca94,0xbb8190e5,0xbc5fdfa8,0xbc13fdcc,0xbc11b1f4,0x3cd5320f,0x3ce8496a,0x3d05886b,0x3c73ae95,0x3c95ef03,0x3ce46b81,0x3c83083a,0xbc121d9b,0xbd3a66cd,0xbceef645,0xbd049991,0xbd57dde5,0xbd2da148,0xbc03d461,0xbb3f4d11,0x3b706682,0x3c5c9faa,0x3c0724d9,0x3bcdae58, -0x3c4782c2,0x3c656e70,0x3c8c4ab6,0x3c81eb08,0x3c654878,0x3c8f2d82,0x3cc89c23,0x3ccf0ac7,0x3caa1268,0x3ca13f90,0x3cb66cb2,0x3c6095a2,0x3b5494ec,0xba42b6ef,0xbc063908,0xbb2980dd,0xba67dbcb,0x3c76887c,0x3cd66e07,0x3d0bbdd2,0x3cdd91b7,0x3cc48420,0x3cf97e83,0x3ca2b847,0x3bd2e98c, -0xbc685e0a,0xbb8f2f8c,0xbbfcb71f,0xbbe0294c,0xbc7bb54c,0x3bdbf39f,0xbb397a61,0xbbcb9f88,0x3b1dfb1d,0x3bdc4ccf,0x3c21728e,0x3c20a064,0x3c37aebb,0x3c4dd6c7,0x3c270e97,0x3c8dab20,0x3c496fc6,0x3cbf31d1,0x3cb0b2e6,0x3cfd78e3,0x3cce424f,0x3cd71d18,0x3c574eb7,0x3c628b60,0xbbf1031e, -0xba9b37e3,0xb9fe99a9,0x3b0947dc,0x3bc9083f,0x3c2eff8f,0x3c9b207d,0x3c4d74b3,0x3b950f14,0xbc0f7487,0xbc61ee4b,0xbc816033,0xbc9350c9,0xbc08dc5d,0x3b199d60,0x3c6006fb,0x3c123f5e,0x39b1dc24,0x3c26a3c8,0x3b68c0ae,0x3c79727f,0x3c6a0ae5,0x3c80e368,0x3cc14502,0x3cc9cb41,0x3ce00af8, -0x3cbb349e,0x3caf0022,0x3cb5487a,0x3c862eda,0x3c920527,0x3c27ff97,0x3bca4bbd,0x3c7b6c00,0x3b14cd2a,0x3ca55eab,0xbbb79db2,0xbc23aa93,0xbc0ec13f,0xbc33050d,0xbc387c88,0xbc60d6a1,0xbc94e90f,0xbc8f1857,0xbc870c15,0xbc16cc88,0xbc431e9e,0xbc4e8818,0xbc91d3ed,0xbc6cd62f,0xbc88b4ef, -0xbc755192,0xbc0dafae,0x3b8f3f74,0x3b8babc9,0xbb9e0e28,0xbbd8a9c2,0x3a043168,0xbb15e0fd,0xbba2e7e0,0xbab0a71d,0xba24c661,0x3b468792,0x3bb44ccc,0x3bf4613b,0x3c3b81f0,0x3c59f8d0,0xbb0f19e8,0xbb62404b,0x3c4dafce,0xbb03d991,0xbbeb2b81,0xbaa4bd46,0x3b020060,0x3ab7b59f,0x3ab0bfac, -0x3aa6b3d3,0x3ac5463a,0x3af45764,0x3b0bced7,0xb99c893a,0xbb6d9a02,0xbb8b2a38,0xbb2e3ee2,0xbb2b9273,0x39b8e098,0x3b2dc227,0x3bb0b26f,0x3bc1b5c2,0x3b82d5c4,0x3a6332e5,0xbb5b7e3b,0xbc5b79b0,0xbb9e85f3,0x3c15f536,0x3c34c087,0x3a0ac56f,0x3bdf1176,0x3c1cd31c,0x3c1252e9,0x3c175898, -0x3c12b160,0x3c0f9472,0x3c283eb9,0x3c3ad597,0x3be60f20,0x3b7bf147,0x3c1604a9,0x3bebd091,0x3b831371,0xbafb2bf2,0x39e47da2,0x39278b50,0xba1144a3,0xbaa3d24f,0xbae30f32,0xbb200418,0xba567755,0xba10e7c0,0xba257add,0xba921278,0xba07584e,0xbaa187c8,0xba317d8d,0xbb1b71db,0xbb9a7d59, -0xbb95aca3,0xbcc1715c,0xbc41a453,0x3d0df1a6,0x3b119f6c,0x3c9d5f36,0x3c1e5936,0x3c2fa815,0x3bf6974b,0x3b795cc6,0x3bb20a7c,0x3bd3f8e3,0x3be5b6bb,0x3c06aaea,0x3c7c0adf,0x3c6e827a,0x3c0a0ba0,0x3bf0eaf2,0x3be03ebd,0x3c30674d,0x3aad5f51,0x3b0288b4,0x3ad1d7b5,0xbaf9bf80,0xbaf8a541, -0xbb5d7b07,0xbbf78fcc,0xbb2137f4,0x3a8c649b,0x3b8acbda,0x3c078a4f,0x3c0f6cc3,0xbaba088a,0x3a3f9c15,0xbb9e7640,0xbc8d4dbf,0xbca61af1,0xbd4874c5,0xbcfdc8f9,0x3c453a54,0x3bb4b2a3,0x3cad59fc,0x3c55d15f,0x3c9148cc,0x3c42f31a,0x3c42bb7c,0x3ba8c6fb,0x3c3529cd,0x3bfb20b5,0x3c7e726a, -0x3cb35d64,0x3c91453c,0x3c5cbca7,0x3bbd2d35,0x3c54f9cd,0x3c7370d6,0x3ba2de55,0x3b490130,0x3baace09,0xbb16ec79,0xbbb51393,0xbc209167,0xbc89c2da,0xbbdef3b5,0xbb27db02,0xbacc1d9d,0x3b679197,0x3b90b358,0xbba3a7f7,0xbb60acad,0xbc957849,0xbd301512,0xbd318bf9,0xbde18d06,0xbd2e3370, -0x3d6ce394,0x3c3801d2,0x3d22a96d,0x3cf59575,0x3cc13bb5,0x3c60e183,0x3c228459,0x3c25bc16,0x3c2cbc7a,0x3c4d2d9d,0x3ca621ff,0x3d17afad,0x3ccc2ce2,0x3c8db391,0x3c04a67d,0x3c752437,0x3c92eec4,0x3c34c74d,0x3bb5acc8,0x3bd2970b,0xbbd7d922,0xbc094ce7,0xbc657968,0xbcebb7a1,0xbc4d98a4, -0x3a351231,0x3c019a08,0x3cc35645,0x3cc7998d,0xbc224b46,0xb9db868f,0xbcad3bfa,0xbda1966e,0xbda5b360,0xbe203e35,0xbdd22f6c,0x3d0e54b0,0x3cc70d70,0x3d05becd,0x3ce672ea,0x3d0075ad,0x3c55d1d5,0x3cab9f09,0x3caf14fd,0x3c27e680,0x3c826464,0x3cbbd0e4,0x3d2e120f,0x3caa09eb,0x3c7ed60d, -0x3c53cb18,0x3c71f2c3,0x3cef157b,0x3c87013a,0x3be03b1b,0x3c65ce46,0xbb040ed7,0xbc1c4763,0xbcae484c,0xbd0b320d,0xbc3fae69,0xbb3c8ece,0xbb6fa652,0x3c131b89,0x3b254372,0xbcb3b9a7,0xbc80308b,0xbd56c22a,0xbdeb0cde,0xbe119ec8,0xbd8470d1,0xbd82f960,0xbdc4411a,0xbcc22d81,0xbd0fa516, -0xbc11fe04,0xbce47e56,0x3bf2542a,0x3d002d60,0x3d4a500f,0x3d37fb1c,0x3c7bdca1,0x3c60de9e,0x3d1b53ea,0x3cbf966a,0x3cae4f91,0x3c3ae89c,0x3c9d2609,0x3cfe8544,0x3d34f9a7,0xba68ab0c,0xbceba9c9,0xbd84fb5a,0xbd836f9d,0xbd83623d,0xbdb365f0,0xbd879b32,0xbd3a6ed6,0xbc93cee8,0x3c817851, -0x3d913a41,0x3e26f407,0x3da6fea2,0x3d80b33c,0x3dbd7e38,0xbd0ac9d5,0x3db31863,0x3b060432,0x3a52547c,0x3cd2d5c0,0x3cce0757,0x3d2bec84,0x3d6e4cb6,0x3d1c8954,0x3d4b0eb3,0x3d5139fe,0x3c816f27,0x3cd2d5ff,0x3cca05be,0x3d36119a,0x3cb1e40c,0x3c9648e1,0x3c646817,0x3cf2f65d,0x3d076fca, -0x3ca8c692,0x3b83294c,0x3a980478,0x3c355271,0xbd25089a,0xbd92516d,0xbdaf9244,0xbdd0ecbd,0xbddca00f,0xbdb986e8,0xbd3ad282,0xbc400603,0x3d5dcc9b,0x3d8bdf77,0x3dabb8a7,0x3de43171,0x3dcadb87,0x3d8ea8a9,0xbb49565b,0xba83646b,0x38b0dba3,0xbcc07c0f,0x3b56575c,0x3c6ae9e0,0x3d8b4fc5, -0x3ceb9315,0x3cab0d06,0x3b5251da,0x3b0d5a68,0x3c953a86,0x3db5739c,0x3d0286bc,0x3ca913e0,0x3c9ac342,0x3b86ce20,0xbb4ae030,0xbc327241,0xbcbeed11,0xbd167838,0xbd35ca82,0xbd21474d,0xbcf49831,0x3bb6c8f1,0x3c98d223,0x3d0c8769,0x3c113d57,0x3d2513a9,0x3d08815f,0x3cf00c69,0xbca3ceae, -0xbd4ca5ed,0xbd988c4c,0x3ca3f7ff,0x3d1e861a,0xbbb99a52,0xbd0e79a9,0xbc440894,0xbcade5b1,0xbc5d24d5,0xbb80212f,0x3d9658ec,0x3c7b67dd,0x3b13e1b0,0x3c73d6d9,0xbbd14f02,0x3c704d40,0x3daa6611,0x3c703aba,0x3ba05f51,0xba3db72a,0xbc01a14d,0xbc414e6a,0xbc4c7bd6,0x3cce6d4c,0x3c87f267, -0xbc6221e9,0x3d08a500,0x3d802d0d,0x3db12362,0x3da38524,0x3d85a54d,0x3d0a0eae,0xbc808501,0xbd8850dd,0xbda1a92c,0xbe05bb96,0xbde88724,0xbd96ab7f,0xbc785ce1,0x3c3f0596,0x3b2c2621,0xbc122dde,0x3b716559,0xba316e64,0x3c60b4d7,0x3c33a415,0x3cd34309,0x3c34706f,0x3c34183c,0x3d13a5ca, -0x3be6b0f1,0x3c986caf,0x3d4c42b5,0x3cbb57fd,0x3c29714d,0x3c18f533,0x3c35cd07,0x3c45f413,0x3d0063dc,0x3d7c4f23,0x3d85a464,0x3d4637c0,0x3d831229,0x3d9f4ad8,0x3da6ea64,0x3d8f6396,0x3d427939,0x3cec5fea,0xbcd02cdc,0xbd36c510,0xbcd337bf,0xbd51f5d7,0xbd5165b6,0xbc876c19,0xbc305020, -0xbb9a9f34,0x3b52d880,0xbc18d078,0x3bc1ca5b,0x3be30d82,0x3bf1ed52,0x3c38b334,0x3ce7b2ba,0x3c50d7fe,0x3be69ba8,0xbad9ec35,0x3c81c30b,0x3cb36fb4,0x3ca786c8,0x3c6f8c87,0x3c3b4d07,0x3c64855d,0xba43be8c,0xbb74b5ff,0xbaf0c5e5,0x3c801ca5,0x3cea3205,0x3d223d05,0x3d05efe6,0x3cb53936, -0xbb672fb4,0xbb12673b,0x396d8466,0xba0516f2,0x3caa7a2e,0x3c5f723d,0x3c1e8331,0xbd683da5,0xbd95affe,0xbd62f6da,0xbcae3f99,0x3c321d9c,0x3ca3349e,0x3c53b055,0x3c10b943,0x3ca70413,0x3c09c868,0x3c502e07,0x3c4e73d4,0x3c82af0c,0x3cc22c4c,0x3c59231c,0x3c510435,0x3c3016ac,0x3c59dcc9, -0x3c950ff4,0x3c9aab74,0x3c7f12a0,0x3c6280f2,0x3c13fe8f,0x3d0645cb,0x3d02ee7c,0x3ca7c93d,0x3c204d1e,0xbaa11ceb,0xbc3f76cd,0xbc4556cf,0x3c920844,0x3ca2e802,0x3c37546a,0xbc69370d,0xbc735a6b,0x3bc1aa46,0x3c2e5b6b,0x3b942663,0xbd14cf3e,0xbb35d899,0xbc4f7875,0xbc1c4732,0xb9e265f8, -0x3b577a34,0x3c8ccf7a,0x3c3dbc1c,0x3c4239dd,0x3c5eb4c2,0x3c8a4cea,0x3c374f1f,0x3c27726c,0x3c424053,0x3c854a4a,0x3c811b4e,0x3c8e11d9,0x3c6f3ffd,0x3c217739,0x3b3ddd10,0xbb0b4b3f,0xbb3b8468,0xbc09f8e8,0xbc72daea,0xbc7bbddb,0xbc5de09e,0xbc3cc475,0xbc4b62aa,0xbc811110,0xbc97ac07, -0xbcdde47a,0xbc9a6737,0xbba49777,0x3c45d5b6,0x3c12a77a,0x3b0bf46d,0xbcaa63fb,0xbc8e712a,0xbbce8aed,0xbc3b9925,0x3b09494c,0x3bdd51f0,0x3c76ceca,0x3c63e7ff,0x3c9055c2,0x3c8527fe,0x3c39454c,0x3c54ca26,0x3c495164,0x3c6146f1,0x3c791fde,0x3c949c8b,0x3c4a764c,0x3c327419,0x3bba7a18, -0x3bb07f6c,0xbbca30db,0xbbc21778,0xbbd866d4,0xbbbdb1fa,0xbc1570b7,0xba9f7937,0x3ba647a5,0x3c6f6709,0x3b94c85f,0xbb22a8cf,0xbc0f2c4a,0x3bbae9be,0x3c35114f,0x3c967114,0x3b8af8b8,0xbac7bade,0xbb074519,0xbb12b55e,0x3cd0bc02,0x3cebfe44,0x3cffb463,0x3cb3eeb6,0x3ca76cc2,0x3cb62064, -0x3c5644f2,0x3cacdd6f,0x3c66615b,0x3cb15735,0x3ca54a6a,0x3ca0b8dd,0x3c9129b1,0x3c94b3f4,0x3c8b75cf,0x3c75846c,0x3bf2e642,0x3c36df77,0xbb4d7d6c,0x3c6ccec3,0x3c80ae0a,0x3c2f8d5d,0x3c1f8ab7,0x3bbd2434,0x3ac74f7b,0xba7fd48f,0x3b8a6906,0x3c483c1f,0x3c7a5f29,0x3c6435a8,0x3c4fff77, -0x3c8a7b37,0x3cac03ee,0x3cba9ab7,0x3cae58d4,0x3cbad498,0x3c9a554d,0x3c9255c8,0x3cb3af8e,0x3cac6398,0x3c592148,0x3cb3b172,0x3cb2b1e0,0x3ca0b8f3,0x3ca8f83e,0x3c88f6e3,0x3c75573e,0x3c70f9d9,0x3c5fbfd3,0x3c48a8b5,0x3cae35d8,0x3cc95cc7,0x3bebc1c9,0x3c94b2cb,0x3cbd721e,0x3cab8019, -0x3c90f8b1,0x3c965dec,0x3c9740b2,0x3c952113,0x3c9713aa,0x3c8fa5a2,0x3c8ddf5d,0x3c8b034a,0x3c90ce7c,0x3ca2052c,0x3cb0f394,0x3cb57d6e,0x3ca70c82,0x3ca15043,0x3ca89937,0x3ca6bbc5,0x3d214d27,0xbc2a1c74,0xbb9a466c,0xbb4d4877,0xbbc1754c,0xbbfa6191,0xbb1caef4,0xbb9a27aa,0xbb758508, -0x381e2798,0xba1bd835,0xbaa2a307,0xbad57bbf,0xba1f4f8b,0x3a887978,0x3a910b2e,0xbb041a52,0xbb6d6904,0xbaedb48d,0xbb82841c,0xbbb5200f,0xbbdc1c9c,0xbbb92212,0xbbbea0be,0xbbcf5cc2,0xbbc1e7e7,0xbbb44daa,0xbb9eff02,0xbbcc4642,0xbbeefafb,0xbc0c4f71,0xbc0c11ea,0xbc047874,0xbc064cf5, -0xbc0e4951,0xbbd55234,0xbb0fa5a0,0xbb1aadb1,0xbc901b92,0xbcf25de6,0xbd150cec,0xbc9c522e,0xbc811f5c,0xbc0e5a26,0xbb54264b,0x3b06cff7,0xba84c67b,0xba6981a6,0x394ad532,0x3aaeb7c3,0x3a739b76,0x3b482d4a,0x3bc3c352,0x3a924c1b,0xbba853bd,0xbb917c1b,0xbb91d39d,0xbc14b31e,0xbbbd3211, -0xbbde923f,0xbc23d3e5,0xbc192307,0xbc263663,0xbc1f60e3,0xbc580cfe,0xbc8628ac,0xbc95a3a6,0xbc91bb53,0xbc82dc2d,0xbc59d024,0xbc691929,0xbc7ae61b,0xbca5d30d,0xbcbe0999,0xbc38fc1c,0xbd04b644,0xbd380228,0xbd001234,0xbc967256,0xbbe33b79,0xba87fc1c,0x3be7d3bc,0x3b39d750,0x3b921655, -0x3b9799bb,0x3bade330,0x3c2bc7a3,0x3c244eb1,0x3c488c4d,0x3c0bff22,0xbbc5e7e8,0xbb3c20fa,0xbbef8547,0xbbe909cc,0xbb9469c3,0xbb8df9ba,0xbc3a71ae,0xbc036c63,0xbbfcd51b,0xbbcc1ca7,0xbc7cd423,0xbcb00252,0xbcfb2d4f,0xbced9b4e,0xbce23c97,0xbca5fac8,0xbcbd942c,0xbc3e794c,0xbbc60e6d, -0xbc16124f,0xbd11c285,0xbdaf4088,0xbde4617d,0xbd79e80d,0xbd3ba33c,0xbc881e8b,0x3baf71fd,0x3c19d272,0x3c5eea58,0x3c550413,0x3c4bd899,0x3c86ff5e,0x3c9ca658,0x3cb78817,0x3cca9688,0x3c929679,0xbbd7a1f9,0x3a687ae1,0xbb7c57a5,0xbc18d591,0xbb1b3f37,0xbbe3d198,0xbc7f70fd,0xbc900d11, -0xbcb5bf35,0xbc92bc2b,0xbd06f3e1,0xbd2ce5f0,0xbd4b49bb,0xbd475dac,0xbd2dda57,0xbce17213,0xbce45adb,0xbca31feb,0xbd3e9a13,0xbd65d6b3,0xbb938ed8,0xbd886bf7,0xbdfde009,0xbda578e7,0xbd197224,0xbcd39a9b,0xbb8c5a6b,0x3bcf1720,0x3c70ca9a,0x3cb5b433,0x3c87cac0,0x3c858d1e,0x3cc0f1ea, -0x3d0e813c,0x3ce635ad,0x3c868ab2,0xbbf81eb5,0xbb96ddf4,0x3b3debcb,0xbc2bc6ec,0xbb85c33d,0x3a958852,0xbc8fbc28,0xbc283bc1,0xbc6dd2be,0xbc172da5,0xbce84ed3,0xbd35e5fc,0xbd813550,0xbd71c94e,0xbd53993e,0xbcd0d9df,0xbd0d4cc9,0xba9db505,0x3bb4b7fc,0xbb80f3dd,0x3db2fbde,0x3d47241c, -0xbb328031,0xbd6c69a6,0xbcd77607,0xbcdb0a40,0x3b119ab2,0x3c4b70d9,0x3c6f46de,0x3c574b02,0x3cce5295,0x3ca30597,0x3cd5f120,0x3d09484e,0x3c7a6eef,0x3c27bdfa,0x3c89a941,0xbba7146d,0xbbd32ed7,0xbc360e83,0xbd025e40,0xbd32d792,0xbdb51955,0xbd31cebf,0xbd4f2b72,0xbdcca742,0xbe0e3e73, -0xbe298267,0xbe441b6d,0xbe1be6f9,0xbe187a84,0xbdfc949c,0xbe45f05d,0xbe347708,0xbdff0b9d,0x3c4638b1,0x3e1c3f25,0x3deba4a3,0x3d9216c2,0x3db266e3,0x3d79d13e,0x3d27ad1b,0x3ce9f63d,0x3cdc1836,0x3d02e76e,0x3cfe2e38,0x3ca29954,0x3c61cfaa,0x3c42ff06,0x3d244c3a,0x3c831878,0x3bf675b1, -0xbc1815cd,0xbc6020a8,0xbbae616f,0xbbd74a59,0xbcc7b074,0xb9cde1ea,0x3c8cc943,0x3cfcb576,0x3ceca071,0x3d082499,0x3d22d5b2,0x3d0eeeb3,0x3d02bd45,0xbcae0e19,0xbd542ade,0xbcee5347,0xbde771b1,0xbda1156a,0x3d3b7e72,0x3dd8316a,0x3dd0a244,0x3da999b8,0x3da585ba,0x3d660d1d,0x3d428c7b, -0x3d313f9d,0x3d27a9f2,0x3d90d833,0x3cb2e6dc,0x3c649679,0x3c38c946,0x3bc12c99,0x3cb0449f,0x3d7d217f,0x3c94f45e,0x3c3a5875,0x3ba33406,0x3a7f8105,0xbbcc1337,0xbc5c59a3,0xbbf63278,0xbb4f34e4,0xbb722d5a,0x3d193151,0x3d069758,0x3c836dc2,0xbba64494,0xbc37446e,0x3b16ab8b,0x3c5aa853, -0x3c430517,0x3ca9e8ae,0xbd01283e,0x3c3ea168,0x3d7b20b4,0x3db31c39,0x3ca296a0,0x3c2ae20c,0x3cee51fb,0x3c4d613d,0x3c2ad0e5,0x3d0463f6,0x3cfe1037,0x3d84c62d,0x3cabb6dc,0x3b4997fd,0x3c9c7f89,0xb970f9f2,0x3c8bbf28,0x3d7b15d2,0x3cd7f0e3,0x3cd072db,0x3ce1bd68,0x3cc7994c,0x3caa8226, -0x3c745517,0x3b84eae8,0xbc005340,0xbca8975f,0xbcdefb61,0xbd1fa824,0xbd73f563,0xbd717a1e,0xbd49e6e6,0xbd32b4c1,0x3c2f3dfc,0x3d0e0171,0x3d923eb6,0x3c961140,0x3d02af5a,0x3d07c480,0x3d23b690,0x3cb0012b,0x3c66fef6,0x3cdd3ba1,0x3c9aa73d,0x3ccd8486,0x3cad72b3,0x3cdcef65,0x3cb391a4, -0x3c820247,0x3c0df88b,0x3c9f26ad,0xb99c9da3,0x3c27c7ac,0x3d02d79d,0x3d1767bd,0x3d262d2c,0x3cee39ee,0x3ca8d3d9,0x3cbd8442,0x3c49c6ea,0x3c5db7e9,0x3c63881e,0x3c3c7dba,0x3bf0593c,0x3bbfaa53,0xba83f6ef,0x3cbd851f,0x3d1831f3,0x3d4be47a,0x3d32a899,0x3cb6f271,0x3bef33bf,0xbcb58719, -0xbc7dd6e9,0x3d6d2585,0x3d177c58,0xbb04c308,0x3c16e565,0x3b910428,0x3b3a49f5,0x3bf3923c,0x3c72b215,0x3cae5aa6,0x3d0d33de,0x3caf6a6a,0x3c64c300,0x3be1cbd3,0x3c98237d,0x3ccb93f1,0x3cbf2552,0x3c886db1,0x3c3859f8,0xba6f4603,0x3c27a3d4,0x3c48dc88,0x3c24ce5c,0x3bf0138b,0x3c3eb868, -0xbd2497bc,0xbc9f1567,0xbc8c27fe,0xbce740b5,0xbc6d6eca,0x39c7a654,0x3c88a5c9,0x3aa5e123,0x3bb9727a,0x3c7457d1,0x3baae48c,0x3bf6364c,0x3d0f628b,0xbc0109ed,0x3ca28b65,0x3b8fc55d,0x3ca2c024,0x3ca8247c,0x3c7167df,0x3c6b7bb9,0x3bf100dd,0x3c976fba,0x3b5b8441,0x3aa952d5,0x3c52fcab, -0x3c15de9c,0x3bfe15d4,0x3c36959a,0x3c99088a,0x3c88389d,0x3bf635cb,0x3b86771c,0x3c82a936,0x3b0f1268,0x3bd2f278,0x3c2cba34,0xbb1621ad,0xbbcba6c6,0xbab80cda,0x3cc9274f,0x3c81a574,0x3c2ec576,0xbb5edb05,0x3b71933e,0x3a43fb5a,0x3c57a82a,0xbcd50707,0xbcdc9832,0xbb8d0e87,0x3c8017e4, -0x3ca2468b,0x3ca7fda6,0x3ca74844,0x3ccdeab8,0x3cc8582e,0x3ccf5676,0x3ce9aa55,0x3cf67cd1,0x3caddb61,0x3c6f3199,0x3c3423b9,0x3c21dd8b,0x3c605e10,0x3c1ab3aa,0x3c2149c0,0x3c173717,0x3b96cfeb,0x3b84258a,0x3b665ee6,0x3bd05876,0x3bac14a8,0xbab695c8,0xbb29c999,0xbc98c063,0xbc834981, -0xbb00a030,0x3b3a27c9,0x3c4ef734,0x3c65f654,0x3c78270a,0x3c29b17e,0x3c8d2fec,0xbc15fca6,0xbc929ef9,0xbcc0d4ac,0x3adf5e1f,0x3b62daff,0x3c701da8,0x3b251c42,0x3c4f03d5,0x3c8fe3b8,0x3ca134bf,0x3c9f31b7,0x3c95afa1,0x3c78fcc5,0x3c03dfca,0x3ba15f10,0xbb344ffe,0x3bb21449,0x3a6e3c59, -0x3bd2d6b4,0xb9fe574a,0x3ad0a78a,0x3b2b176f,0xb98fcaf9,0x3af9dc66,0x3b483e3d,0x3a1e087f,0xb90e6fc3,0x3aa5a2b5,0xbb2db584,0xbc9073d6,0xbc284e62,0xbb922c52,0x3ba8f07e,0x3ba04159,0x3bf8807a,0x3c3d2c89,0x3bf618f0,0x3ad6e4cc,0xbc46f66d,0xbbdb97ba,0xbb4d7e9d,0xbc6f3ac2,0xbb5373a9, -0xbc5ec4ae,0xbca72a6d,0xbcad10b7,0xbcd0b5b5,0xbc994b21,0xbca24d7f,0xbc213db9,0xbb8ec702,0xba588ce3,0xbb6ae859,0x3a0717d8,0xb9d2a11c,0x3b509767,0x3c1b8314,0x3b6f8315,0x3c9cad0d,0x3bd127ab,0x3b0908fd,0x3b5a8f9d,0x3ace5b14,0xbae87987,0xbac4cb47,0x3a90730d,0x3be25532,0x3bec5dce, -0x3c15b77d,0x3c70f18d,0x3c98e7e3,0x3cc8bf73,0x3c95ffa9,0x3c64e77a,0x3c676fbb,0x3c115a74,0x3ba3728a,0x3b4610b9,0x3ba06ccd,0x3c319caf,0x3ca82d79,0x3bd80184,0x3c2749e8,0x3c998dd5,0x3ca4b8bf,0x3c93beb2,0x3c88cd10,0x3c934490,0x3cab86b1,0x3cb30386,0x3be5c559,0x3addfd97,0x3ca26135, -0x3c134819,0x3b15c755,0x3acb1d02,0x3b916a50,0x3b93761f,0x3bac1600,0x3be9b03d,0x3be5d498,0x3bad9e45,0x3bc783b8,0x3be40edb,0x3c09ab57,0x3c10f502,0x3c07878b,0x3c213eaf,0x3c0dadd4,0x3bdfb67b,0x3b9ce8ad,0x3b5f2a8d,0x3c357c97,0xbc7dffd8,0xbc34b5ba,0xbbbd5c6d,0xbacddbb3,0xbb8c8947, -0xbb967171,0xbb827ae2,0xbb96115f,0xbb5be2f6,0xbb8cbbf8,0xbb867e94,0xbb7e7bfd,0xbb7bf62c,0xbb597a80,0xbb8b0113,0xbba81583,0xbbcbac8d,0xbbb0a8d6,0xbbddd64d,0xbc03b9f3,0xbc1669d7,0xbc1b4e1a,0xbc22989b,0xbc202c04,0xbc377ff1,0xbc425ff7,0xbc416497,0xbc577737,0xbc71a253,0xbc882bea, -0xbc79c2b0,0xbc6ee531,0xbca5bcbc,0xbc8fa245,0xbc8f6818,0xbc8b2594,0xbc5c2344,0xbadc1bf0,0xb90b70d6,0xbc933614,0xbc1ad688,0xbbb19c12,0xbad86e70,0xbb07b713,0xbab7f541,0xbbb388b3,0xbbaa59bf,0xbb3491d3,0xbb30e9b8,0xbb5765de,0xbb551552,0x3adc9116,0xbb0eb691,0xbb9a437f,0xbbfa116b, -0xbc019e08,0xbbea858d,0xbc2c1c0d,0xbc33c476,0xbc1fceca,0xbc569e47,0xbc5e7b1a,0xbc5b0cb7,0xbc8ca73a,0xbc9bfba2,0xbcc140d6,0xbc96e5ef,0xbca80928,0xbd2c0114,0xbd11b70d,0xbcf5985c,0xbc8825ad,0xbb302ac0,0x3bdb7476,0x3c8549dd,0x3c1f9f80,0x3c2d4c30,0x3c3c6dac,0x3c41a590,0x3c36c3b2, -0x3c0c1b28,0x3b25c0b7,0xbad86dd0,0x3bef8d7e,0x3b19a9f7,0x3be4fac7,0x3b653ee4,0x3c0cbb5b,0x3bd5f14c,0x39470dae,0xbb9915b3,0xbbe2e99e,0xbb661ea0,0xbc04ffca,0xbc22728e,0xbc024fa5,0xbc6bca4e,0xbc8d975e,0xbc81e30c,0xbcbf882a,0xbce67ae1,0xbd380af5,0xbcd8c5f7,0xbd177a1f,0xbd9c9da0, -0xbd7db845,0xbd68d3e2,0xbce2fcee,0xbbb5d7d6,0x3d40c222,0x3d211eb7,0xbbc2a5f8,0x3b14a2a1,0x3cb1f84a,0x3c2150a6,0x3c5a70c6,0x3ca9a5c1,0x3beef6c0,0x3c067a7e,0x3c766012,0x3c5b76ab,0x3c860943,0x3c6f19e0,0x3cb54010,0x3c91178d,0x3bd60c03,0xbad21151,0xbb8a6234,0x3b44e4c3,0xbba25427, -0xbbc98190,0x3ae94d73,0xbc511b91,0xbc7d0ff3,0xbbde2e95,0xbc8f77d5,0xbcb1942d,0xbd2bad33,0xbcba5270,0xbd30abf6,0xbdd9f017,0xbdae32a4,0xbd9399d3,0xbaf66960,0x3d144c9a,0x3d8450ef,0x3d99888f,0x3d2722ef,0x3d4221f1,0x3d361c3b,0x3d16acbe,0x3cfd111e,0x3ce833d0,0x3c489b96,0x3c8b9f3a, -0x3cba32b9,0x3c8d8a63,0x3ccc6355,0x3cf5a35d,0x3cef2519,0x3cbfa10d,0x3b4c958d,0xb8108825,0xbc35618e,0x3b2ffac6,0xbaaa10c3,0xbbd4edd2,0x3aea0840,0xbc46c71a,0xbc82966c,0xbc4d6051,0xbcfb6c19,0xbd1d8a1a,0xbd96a901,0xbcfcb974,0xbd73b8bf,0xbe11722a,0xbdfb13f5,0xbddbb70b,0xbcda7a97, -0x3d35c627,0xbd9dbea4,0xbd439e55,0x3c972f89,0xbb4a3d5b,0x39bff9a9,0x3a935e83,0x3b81d2aa,0x3c280470,0x3d289c58,0x3d1e474c,0x3c6b0370,0x3cdd73c1,0x3cf8fed0,0x3ca94cb6,0x3ca4d79b,0x3c9cac17,0x3b4c9b05,0x3a12378e,0xbc5e9046,0xbbc9f1ce,0x3cc7d4b1,0x3ce5d947,0x3cfabee0,0x3c508420, -0x3b1f4317,0x3c6db51e,0xbc35781e,0xbc98e003,0xbce7012e,0xbcd5f67c,0xbce3c73b,0xbc4a2f84,0xbc37e120,0xbd54c202,0xbd5d6671,0xbdbc0671,0x3cdfcbae,0x3d90ca87,0x3e01884e,0x3d8bd56f,0x3d9c6298,0x3cd332d8,0x3ced1d2e,0x3d52cbea,0x3cc46258,0x3c9512a6,0x3ba4601c,0x3c76acfc,0x3c9dafe1, -0x3cf940ba,0x3c58e7cd,0x3c2ff3f2,0xbbc59c27,0xbcb012ed,0xbce92279,0xbd10b865,0xbc55dbd0,0xbc011b0b,0xbcfeb143,0xbc123215,0x3b5f784c,0xbcbe4afc,0xbd0fbc0c,0xbd96c4fa,0xbde6928b,0xbd62a427,0xbd5d9790,0xbdc458f0,0xbdbfedbb,0xbcd5bed3,0x3de17091,0x3d4a95fc,0xbce8719a,0xbb7a5f42, -0xbc95421b,0x3b92ef72,0x3c877352,0x3d18122d,0x3d4a5a0b,0x3d951cc0,0x3ca9b5ce,0x3afc2722,0x3c3a9d98,0x3b51bafc,0x3c77da65,0x3cce4f2d,0x3cdb0230,0x3c95489b,0xbc825f4d,0xbb50d544,0xbc3eff9a,0xbcbe7289,0xbd0cba86,0xbd508221,0xbd76cbdf,0xbdbdab35,0xbdd99fd4,0xbdcee704,0xbdd57b0c, -0xbdbf1f9a,0xbdb02bda,0xbcc98a41,0x3c27bd65,0x3c734246,0x3ba218f0,0x3bcc0c94,0x3d7ad957,0x3ba78ecc,0xbc6a1b9a,0xbd03037b,0xbcf2774c,0xbca4b707,0xbbea7d8b,0x3d195ddb,0x3d2994f0,0x3d3b43e8,0x3c5c7682,0xba63ca6d,0x3cbc7a3d,0x3b5b3fde,0x3cabe250,0x3ca59e14,0x3d152d11,0x3d1a9cef, -0xbb1d5b78,0x3b88c2ca,0x3adf15c7,0xbc2e657e,0xbd3c0f1a,0xbd53eaa4,0xbd24dccd,0xbd78666e,0xbd771917,0xbd02a53e,0xbb8986b8,0x3d1d7d2d,0x3db99dd7,0x3dda2e8c,0x3e00de80,0x3db14106,0x3d94c5c8,0x3ceba03e,0x3c674139,0xbadad6d0,0xbb2e8a23,0x3b82c713,0x3b2e5396,0x3c2368ee,0x3ca7706b, -0x3c8239e3,0x3c1c56d4,0x3c577c26,0x3cac93be,0x3ca67bc3,0x3cb99eb4,0x3c94858e,0x3c99218c,0x3c148bdf,0x3ca48851,0x3cc0ef4e,0x39c49663,0xbbaafe8a,0xbc67e78c,0xbc8d14fa,0xbc87a647,0xbb541596,0x3ba469ce,0x3cfb79f3,0x3d4112dd,0x3d90beef,0x3da1c136,0x3dd3d065,0x3dfcad0c,0x3ddc1980, -0x3d92a672,0x3ce56329,0xba8bd710,0xbd00f0cf,0xbcd10f13,0xbcb3ac95,0x3bbfcf3c,0x3bd79358,0x3b0701c0,0x3ab4434f,0x3b9aab35,0x3c8958eb,0x3cd61b61,0x3d098781,0x3c78a4cf,0x3beed53d,0x3c1fd43d,0x3bf00ca6,0x3c21cc20,0x3ca717f4,0x3bbbc2a0,0xbaa90495,0xbbb75373,0xbc65e44e,0xbc761597, -0xbc7b9f6d,0xbc02c543,0xbb87298a,0x3c93d479,0x3cadd0e8,0x3d085ac7,0x3d73a2b5,0x3da30f53,0x3d83b0da,0x3d3b6114,0x3cd0c8c9,0x3c98c21e,0x3cd75dd3,0xbc96fbd9,0xbcd423a4,0xbca4718f,0x3bdc2161,0xbc7b7797,0xbb09b538,0x3b27f66f,0x3b5cf9d4,0xbb4950e9,0x3b29a454,0x3b8951e1,0x3bbd40f8, -0x3c0c5aa1,0x3c0672a3,0x3c2ad74e,0x3c57dd42,0x3c972a5d,0x3ceba254,0x3c3ace43,0x3b983aca,0x3bdde30c,0x3ba362ea,0xbb024130,0xbc272b25,0x3a17fbd8,0x3c331287,0x3cb58f6f,0x3d2d5646,0x3d4a877d,0x3d0bd11e,0x3ce68275,0x3cfd41b2,0x3d25fad6,0x3d69622f,0x3d45d8df,0x3cc152d2,0xbb0aa248, -0xbc6bc19f,0xbb85cda9,0xbc5c6075,0xbb91c303,0x3c25cd1c,0x3c01d6b6,0x3be12f89,0x3bd51e3e,0x3c1cec73,0x3c452c37,0x3c716426,0x3c2fd7fa,0x3c5a7aec,0x3c33a55f,0x3c4fb49f,0x3be742e8,0x3c2e07cc,0x3c0bac9b,0x3c0f9021,0x3c5e8143,0x3c6d6e4e,0x3c7a1e9f,0x3c523174,0x3c981b71,0x3c7a28e6, -0x3c4e81de,0x3cab7b23,0x3cb4e40b,0x3ca38d7d,0x3c84ab91,0x3c42950f,0x3bdf3a9a,0x3c972d1f,0x3ccb47b8,0x3cd43976,0x3c947a39,0x3c35081a,0x3b1a15fe,0x3afe09eb,0x3c4d8083,0x3c4a36d0,0x3c949380,0x3c0f93c5,0x3c09bf54,0x3c01a3ed,0x3bb96ab2,0x3bd17641,0x3c051f78,0x3c5887ba,0x3c0eb51c, -0x3c6c4909,0x3b3a0816,0x3b60973c,0x3a8dc826,0x3c3adea1,0x3c515fc1,0x3c718754,0x3c4e8087,0x3cb70f46,0x3c9451d0,0x3c07581b,0x3a6bfb21,0xb9ce5c98,0x3b33e33e,0x3c240d29,0x3c49ca42,0x3c899e3c,0x3cb125a5,0x3cc269cb,0x3cc7b7cc,0x3cf98779,0x3cc5e1f4,0x3cacb9f1,0x3c348049,0x3c7fbd60, -0x3c081658,0x3b9445bf,0xbb46b2b2,0xbb05db8e,0xbb670987,0xbbd7b012,0xbba649fe,0xbc2aa4ba,0xbbd7763e,0xbbc9f1c5,0xbb5fbc55,0xba64fa3b,0x3c1ac3b8,0x3c483a68,0x3c2c6ac6,0x3bf300ad,0xba686d64,0x3bea5194,0xbc2b140c,0x3c400af9,0x3c73119a,0x3ca0de98,0x3cc67225,0x3cd16ba2,0x3cbc3996, -0x3c94e339,0x3cce3e03,0x3cdb36eb,0x3ce538f9,0x3cff482c,0x3d01090c,0x3d052d52,0x3ce00d85,0x3cb0a77d,0x3c9fccf0,0x3c67c9e6,0x3c5b7d44,0x3c5f7e4d,0x3c62e38e,0x3c3492b3,0x3bc71b4a,0x3c7bea2e,0x3c483a04,0x3bb29fcc,0x3bae26dd,0x3bb69a94,0x3bbbd673,0x3b8b8d1b,0x39fbc55a,0x398a2ef8, -0x3c5050c7,0x3c9283e7,0x3bbc4995,0x3c6c4e38,0x3ca61615,0x3caa9da6,0x3c87028f,0x3c7e958e,0x3c5fb828,0x3c597db9,0x3c6e2aee,0x3c79bbd2,0x3c79356c,0x3c6b0809,0x3c721b00,0x3c6dadb0,0x3c687288,0x3c7a9ebc,0x3c751820,0x3c633d0a,0x3c633c37,0x3c656d1a,0x3caadfe8,0xbc948b10,0xbc5135e1, -0xbc8a0b7b,0xbc9a015c,0xbc3d5fbe,0xbbff863f,0xbc42dcd7,0xbc25241a,0xbbf1173d,0xbc0f5c9f,0xbc1d1be4,0xbc13b9d2,0xbc117aaa,0xbc0fe4bd,0xbc1561bf,0xbc1f6d61,0xbc26433b,0xbc0fadd1,0xbc364ce7,0xbc3adcec,0xbc20f285,0xbc30ee6a,0xbc3970f9,0xbc3d9e5c,0xbc3cc2c3,0xbc37136f,0xbc24ffa6, -0xbc35c392,0xbc349d36,0xbc362985,0xbc37ee69,0xbc4b2dd9,0xbc92d229,0xbc6d80cd,0xbc6c4b32,0xbc8263fa,0xbc623da1,0xbcba6c0b,0xbc9d701e,0x3ac80de9,0xbc3588f0,0xbadf808b,0xbbb1ae2d,0xbbd0e082,0xbbae7620,0xbc301586,0xbc2dcd23,0xbc0e9873,0xbbe88ee5,0xbbd380b2,0xbc03c424,0xbbb1c2ed, -0xbbff3d2d,0xbc0fc506,0xbc33a342,0xbc4f9cc1,0xbc2dd085,0xbc373c8d,0xbc410578,0xbc4e221d,0xbc3fb037,0xbc40417c,0xbc418fee,0xbc94409f,0xbca9e814,0xbcaaa7b9,0xbc82dec8,0xbc6c7fae,0xbce718e4,0xbc9d3877,0xbcb87906,0xbd02cbc5,0xbccb0edc,0xbd024b92,0xbce56e12,0xbc74689c,0xbc46eb8d, -0x3b94c134,0xba503658,0x3b8419fb,0x3b868185,0xbaec992d,0xbbaed737,0xbb133734,0x39fb8b42,0x3b82d44b,0xb77e5e8b,0x3b752955,0x3ab4e7f7,0xbb4ebdc6,0xbbb06c77,0xbc077038,0xbbb4810e,0xbc135a59,0xbc36f641,0xbc6824a1,0xbc4c1071,0xbc475ed1,0xbc16f386,0xbc91fb9c,0xbc9525ea,0xbc99d2bb, -0xbc6c7f98,0xbcaf03e3,0xbd382acc,0xbcdcc9b1,0xbd009b83,0xbd3f7eac,0xbd0e3a81,0xbd5c0fc4,0xbcd7f042,0x3cd19a3d,0x3a979de9,0x3cb753da,0x3cbc7b69,0x3c8a6a9e,0x3c3ca34f,0xba64cba9,0x3b287e07,0x3c056bef,0x3c403c5f,0x3c778c87,0x3c2ed40e,0x3c57acd5,0x3c2c4ed5,0x3b5f40cb,0xba97380c, -0xbb851d82,0x3ad35a1b,0xbb65cd0c,0xbb519e42,0xbc2166d8,0xbbac65d4,0xbc05e1f1,0xbc02d637,0xbcbc8fe1,0xbcf012ea,0xbd0a5574,0xbc9602b6,0xbcbaf078,0xbd439a01,0xbcd97ee8,0xbd0a8cb3,0xbd98f775,0xbd4a7b94,0xbd81773c,0xbd5fc13b,0x3c47cf48,0x3c258a46,0x3cfda478,0x3cd5d0a4,0x3d003bd5, -0x3cc41a2f,0x3c7430e8,0x3c29fa81,0x3c852aed,0x3c97bf6c,0x3cd7dc70,0x3cfcc4ea,0x3ce63778,0x3cb69b09,0x3c3f5a3a,0x3bfeb883,0x3b03cc25,0x3c39fb52,0xba63e9f3,0xbbec6214,0xbc64f934,0xbc3ab289,0xbbe91cea,0xbba78c29,0xbc81fc1c,0xbcbfd2fb,0xbc80059f,0xbc9b1ac3,0xbcd59186,0xbd9443f8, -0xbce837a2,0xbd4097af,0xbdac98f0,0xbd89f03c,0xbdb93648,0xbd8689f3,0xbdf434ac,0xbda87156,0xbd4322fd,0xbc107e65,0xbc518756,0xbccbdac4,0x3c558802,0x3d11e6dd,0x3c847e05,0x3d03638d,0x3cf6d169,0xba84e369,0x3cb0d7eb,0x3cc3d309,0x3c0ae411,0x3bcbd59a,0x3c0be696,0x3c912cdc,0x3c278a5d, -0x3c6242b1,0x3d2ce76d,0x3cb86ce5,0x3a646138,0x3b99c1da,0x3c32bf0a,0x3c5386e5,0xbb2415df,0xbbdebd83,0xbcd538b1,0xbd7d66a1,0xbd83c7be,0xbd621a08,0x3b2105d7,0xbd923588,0x3d32298d,0x3d490f25,0x3ce7a7fe,0x3d081ec5,0x3cf80ad2,0x3c5634fc,0x3c61e7fe,0x3d455446,0x3cb711c5,0x3c894cd2, -0x3c01cc01,0x3bddde5b,0x3c6895ad,0x3d0a4691,0x3ce51def,0x3ce38e78,0x3c12d29b,0x3b8c42ee,0xbbce42fe,0xbc01bbb1,0x39c333b5,0xbcae3357,0xbd578e04,0xbd52ee5c,0xbd4428dc,0xbc5e1426,0xbcc50556,0x3bda8735,0x3d01a193,0x3c6736b3,0xbd02b566,0xbe1a560d,0xbdb2a880,0xbdeac8c7,0xbdc3fc16, -0xbc0d7a1f,0x3d059643,0x3d05dba3,0x3b8d9f99,0x3c09bd35,0x3a38858c,0x3d0e69f3,0x3d1e4cd1,0x3d366467,0x3c160da3,0xbc2a24e7,0x3b130d2e,0xbbdf97a6,0x3bd80432,0xbbb75a93,0x3d03b5c7,0x3d065521,0xbc0f1427,0xbbf588d2,0xbcc46088,0xbcade844,0xbcfa9808,0xbcf980f1,0xbcfbced0,0xbcdb2413, -0xbcbc3b0f,0xbb1ad877,0x3bd0317d,0x3cb17e6b,0x3d282d62,0x3cb0dc20,0x3c62b21f,0xbce98c33,0x3d23a0b8,0x3d9a73bb,0x3dcf3b1e,0x3cf68647,0x3c398a03,0x3c90058b,0x3982453c,0x3c5deb8e,0x3c02103d,0x3d206c22,0x3d1e3fa1,0x3ccdc69e,0x3c895fd9,0x3a583031,0x3c5a1245,0x3b2f8454,0x3c704d17, -0xbcab976c,0x3cec593e,0x3d03459a,0xbcd376a1,0xbcacec61,0xbd06dcc2,0xbcd94792,0xbccc821d,0xbc6f2eed,0xbbfd3ec7,0xbbd36b86,0xbb88d75c,0x3ba7216f,0x3cb61094,0x3d0fbd14,0x3d1f786c,0x3d713166,0x3d91c022,0x3d9bd3ab,0x3d7b59cb,0x3db74987,0x3e1fe337,0x3d31f678,0x3bcf9259,0x3c1c7bee, -0x3c88925b,0x3c46e7b9,0x3aa7e132,0x3ba1f08b,0x3b7ff01b,0x3c1b9fef,0x3d0845c2,0x3d0ffec6,0x3cb83b5e,0x3c9feb1e,0x3c9feb59,0x3b8419ae,0x3ce5c444,0x3cca1829,0xbc304688,0xbbb11d22,0xbc34f0fe,0xbbf7755f,0xbbcd365e,0xbbc72591,0xbc1267a1,0xbc9cdfaf,0xbbc9ee13,0x3d0020ab,0x3d14130e, -0x3d2176f4,0x3d0791ae,0x3da5f2bb,0x3dadfad9,0x3d097de0,0x3c0f38d5,0xbccc3660,0x3ca7d25e,0xbbc5a84b,0x3d07a497,0x3c015213,0x3b679561,0x3c36c97f,0x3c938950,0x3d050337,0x3d13234a,0x3c8e5da4,0x3c200697,0x3b433bbb,0x3c38f461,0xba68c196,0xb9db96e8,0x3beda529,0x3a7b43b2,0x3b2e4c19, -0x3bdb3ef0,0x3b8be181,0xbaa84ea4,0xbbe1045c,0xbc8e1a1f,0xbc88a033,0x3cb2425c,0x3cc06ed5,0x3cd11ce7,0x3d1180b5,0x3c662a53,0x3c5dbe22,0x3ba64519,0x3d032614,0x3d1558f6,0x3ce9708d,0x3c139638,0x3c0a1279,0x3d1b583a,0x3d296148,0x3cf2300b,0x3cbcd877,0x3c407c41,0x3c177a89,0xba5dd920, -0x3b4813e1,0x3b64ab24,0x3bbb6616,0x3c05025b,0x3be13420,0xbb25b75f,0x3c33604f,0x3c779e0c,0x3c83e0a8,0x3c0b46bc,0x3be783b2,0x3b550a16,0x3b6b9ae2,0x3b5ba439,0x3b1e4421,0x3be8eff6,0x3a4b0ae2,0xbc43b5da,0xbba5be85,0xbb10b111,0x3b937cf7,0xb945ed77,0xbbbe2499,0xbc15d00c,0x3bab266e, -0x3ac8c871,0xbc565132,0xbcdd6129,0xbce93a98,0x3b93ca95,0x3c501494,0x3c4503da,0x3bde1003,0x3c00b81d,0x3c1be41a,0x3c146ad9,0x3c245fbe,0x3bf78e30,0x3bc2408a,0x3c1561ea,0x3c2678fa,0x3c5b8529,0x3c45f9f9,0x3c5921d3,0x3be4e605,0x3b9788fd,0x3b476eea,0x3be08278,0x3c12b104,0x3c294692, -0x3c488ac0,0xbb03c7f8,0x3b49beeb,0xba977f3e,0xbb305171,0xbc214367,0xbce066d7,0xbc8c28bb,0xbc2bb607,0x3a8cb135,0xba95f8bb,0xbbdfec82,0xbca25d63,0xbc84350c,0xbc1a29a5,0x3b36a0ae,0x3aae01f5,0xbb966ef6,0x3a22a925,0xba82fbd5,0x3b615922,0x3bea2a24,0x3b910928,0x3b9d6fad,0x3b3cd272, -0x3c247f79,0x3c221c09,0x3cc65581,0x3bed97bb,0x3c26da56,0x3b637e42,0x3c7d06a0,0x3c4376f0,0x3c5eb118,0x3c78129f,0x3cd8dc2c,0x3cb3310f,0x3c897096,0x3cabada5,0x3cb1d671,0x3c5d4211,0x3b210203,0xbac597e1,0x3c0f0079,0x3c595422,0x3c8f2e0e,0x3ae4d1f4,0xbc09e115,0xbc9c87ab,0xbc56c5af, -0xbc52dd40,0xbc3b66f5,0xbc006bac,0xbba01907,0xbc040261,0x3b8ace95,0xbaec2694,0xba520b9b,0x3a8068d5,0x3b7c8066,0x3b4a3109,0x3b788981,0x3a0d3080,0xba725454,0x3b819c93,0x3b2100b3,0x3ba5db0d,0x3ba549fe,0x3c0c1866,0x3ca17094,0x3c4fff9e,0x3cd369b9,0x3c3c06f3,0x3c6919fa,0x3c818c03, -0x3c8c178f,0x3cc37cc9,0x3d043516,0x3d1e6da2,0x3cab1aef,0x3c2f46cd,0x392215fe,0xb9ca4d5c,0xbad29ffe,0xbbf4b10c,0xbbe50cc0,0xbb8772e7,0xbb809bcc,0xbb9407da,0xbc6324c3,0xbc6bfbae,0xbbbe8514,0x3b3b4119,0x3c404bc6,0xbbd81b8d,0x3a94e9b9,0x3c15328a,0x3c1a4d90,0x3c484643,0x3c5ac01c, -0x3c664792,0x3c85cdc9,0x3c8fcac8,0x3a844789,0xbc0c5cfe,0x3c7ad1fd,0x3b98d628,0xbb8927ca,0xbc4a9aa4,0xbc227761,0xbc1e9786,0xbc205b6b,0xbc45b0c1,0xbc6e044e,0xbc60acd3,0xbc59d388,0xbc30fd97,0xbc2d204f,0xbc5408ef,0xbc78d71c,0xbc8bf0a7,0xbc83f507,0xbc7d0759,0xbc8151cf,0xbc7af070, -0xbcb27294,0x39752aae,0x3b21d989,0x3b9e7c68,0xbb028092,0xbc07ed42,0xbc2171fa,0xb9e8694c,0xbb8c284a,0xbc1f6389,0xbc320845,0xbc397212,0xbc2e840a,0xbc225001,0xbc2ea704,0xbc20cb02,0xbb7087a5,0x39775051,0xbc32dcee,0xbbbb1d58,0xbb07be2c,0x3adff6df,0x3afa46bc,0x3b13252b,0x3a6ee2d6, -0x3b07cf0a,0x3b1d1f86,0x3b49f982,0x3afe9a0b,0x3b0bad9a,0x3b772e52,0x3b2cbda7,0x3ae79f87,0x3ae7d418,0x389bb702,0xb9c38620,0x3a323915,0x3b24053f,0xbbf6cf45,0xbc56cb76,0xbcd6f5b2,0xbc427c9c,0xbc0285e6,0xbb7bc4f9,0xbaf3147c,0xba9c37d6,0xba5e3fc0,0xbb6c3649,0xbb63a14a,0xb7cfafbf, -0x3a9347a5,0xbb21488c,0xbb834f4b,0x3b1ddb69,0xbb338ce5,0xbb30e0b7,0xbb93f890,0x3aba8372,0x3baeff89,0x3ba9c32e,0xba950086,0x3b2605c9,0x3b62ace3,0x3bce3889,0x3970f6c1,0x3a0fd91c,0x3bd28bff,0xb9985907,0xbb21719c,0x3b09a24f,0xba809be3,0xb7d21b61,0xbb96fadc,0xbbd59b06,0xbba4145e, -0xbc3ee8ca,0xbce7e976,0xbca2d99f,0xbbd014dc,0xbb805561,0xbad6b919,0x3bde96cd,0xba82d5ba,0x3b049a8b,0xbb1e21f4,0x3c01ca44,0x3bd25554,0x3b5019c1,0x3bf06651,0x3bff48f2,0x3b871637,0xbaf9699f,0xb9eb7d0a,0xbafada15,0x3c04da3e,0x3bf72d0e,0xbb676e36,0x3b6c4ead,0x3b58cc95,0x3bfef0c3, -0xb9e991d9,0xb8cb510d,0x3c4923dc,0x3a1d2e8c,0xbafcf740,0x3b709797,0xbb9ecdbd,0xbbc62f2e,0xbc2b6b6c,0xbbb6fd39,0xbd028c08,0xbd60178c,0xbd85cf8b,0xbd27f882,0xbc6be7e1,0xbbcb51fe,0x3b8e05ba,0x3bef6d19,0x3b0387bc,0x3b1a8994,0x3ba50026,0x3c54c452,0x3c7f0bab,0x3b9e05cf,0x3c6c0f1b, -0x3c54f5a7,0x3baacb16,0x3ac40032,0x3b29656f,0x3a61b261,0x3c2e3f0b,0x3c49bbed,0xbc41a35d,0x3b134e56,0x3ae8594f,0x3c129850,0xbc065de6,0xbbc6f35f,0x3c52361f,0xbc00f947,0xbc5ada4a,0x3be3d23e,0xbbeea618,0x3ad76221,0xbcc018b8,0xbd053cfb,0xbc1b26bc,0xbcd0c828,0xbd86bc85,0xbd4feeff, -0xbc3bb39a,0xbc1a742f,0x3bde86d6,0x3c3f5daa,0x3c0e4a04,0x3c34d258,0x3c560b98,0x3ca47e73,0x3ce66207,0x3caaf5cc,0x3ce4834f,0x3ca8ab0e,0x3c2bf8a9,0x3bb36571,0x3c377f71,0x3b60355f,0x3c3130c7,0x3c62c939,0xbc43a6c5,0x3afe768a,0xb9c99e21,0x3b9afcab,0xbc0986a5,0xbc0bb243,0x3c854f2a, -0xbba108d4,0xbbf76568,0x3c1998f4,0xbc11b237,0xbc7bb026,0xbcdf9521,0xbca1d0d4,0xbd0f649a,0xbcce89f6,0xbd8e2c0d,0xbd9e8359,0xbd16759f,0xbc70744e,0xbac878f9,0xbc7b21d9,0x3bde8617,0x3ca81dad,0x3b547f2c,0x3ceb688a,0x3cb4ed3a,0xbc0bd671,0x3c6b9d6f,0x3c53d00f,0xbbad4d99,0xbc32dbce, -0xbbb47803,0xbcaacb51,0xbd064d85,0xbcf06f1e,0xbd08f492,0xbd1b9cbc,0xbd192c59,0xbd38dedc,0xbd2c0cac,0xbccaa2f8,0x3c07a2f3,0xbc8c3eff,0xbcbf5e2f,0xbd4a7a1c,0xbc0d39a0,0x3c103412,0x3ce07a80,0xbd271eb3,0xbbf2c53d,0x3d108812,0x3d61ad85,0x3d00fc5f,0xbbf6e218,0xbad13587,0x3ba6532d, -0x3d029ad1,0x3c2a0943,0x3aacd632,0x3bf60996,0xb9e44be8,0x3c2abf16,0x3d11b33c,0x3cd127c1,0x3cafa6ef,0x3c89156f,0x3c44d03a,0x3b8f2659,0x3c12a54d,0xbba357ad,0xbc2921c0,0x3c204e3a,0x3a9963ef,0xbc20d776,0xba7e80be,0xbb8b9f05,0xbc56f973,0xbd28c930,0xbcce7be0,0xbce4d323,0xbda72d77, -0xbd4949d5,0xbd65a3b2,0xbd8e06b7,0xbcdaf0ca,0x3d1b9876,0x3cf03ab6,0x3bcc1e86,0x3bf7b0aa,0x3cd1a0bc,0x3d43e493,0x3d3f41e3,0x3c7ddf9b,0x3bbddfdc,0xbc3c46b2,0x3b9cde59,0xbbd2a1f5,0x3c044e47,0xbc6542b7,0x3d0493d1,0x3d08eafa,0xbbf838df,0xbb216edc,0xbc47e3a4,0xbc137754,0xbc141571, -0x3af03388,0x3c3a3741,0x3c0a03e2,0xbb498ead,0xbc445e6c,0xbd2721c9,0xbd37bbac,0xbd2b9358,0xbc6c6951,0xbc2062a3,0xbd2a35bb,0x3d168363,0x3d9954ce,0x3db2f89f,0x3d85175c,0x3d71250c,0x3c939222,0xbc2a8f84,0x3b9109eb,0x3cdffda9,0x3d4bfe72,0x3d3e79ce,0x3ba654dd,0x3c876d5b,0x3b7fa056, -0x3bc9c350,0x3ba85b3f,0x3c2ff4cb,0xbce24d2b,0x3d090dfd,0x3d1df6c2,0xbc222df5,0xb93a8e86,0xbc46e35d,0xbc65a904,0xbc95871f,0xbca91823,0xbcafb066,0xbcd8c6bd,0xbcf47088,0xbc9a88d2,0xbd384ee1,0xbd228613,0xbd02286e,0xbc9e409d,0xbbc0311e,0xbc6d52e7,0x3d141787,0x3d825c2d,0x3da1a86c, -0x3d88a475,0x3c18dd14,0x3bdb91e5,0x3be044ac,0x3b120fc1,0xbb79a658,0x3c7ce889,0x3c90d9a2,0x3c9076eb,0x3cfba16c,0x3cef9d10,0x3c1ea91f,0x3c67fafd,0x3c89b1d7,0x3c468207,0x3cf4fac7,0x3d006aaa,0x3bfa2fe6,0x3be970d0,0xbb27e920,0xbc2c2944,0xbcec553d,0xbd269da3,0xbd2b8fa4,0xbd7f9c81, -0xbd936f39,0xbda07055,0xbd4bcedf,0xbc961f02,0xbb386bca,0x3d220097,0x3d4ecd4b,0x3c345ffd,0x3bd1e593,0xbcab8c77,0xbd1cbff1,0xbc2a76f8,0x3c100433,0x3c1960ac,0x3c8ddc9c,0x3ca33d07,0x3c804dd1,0x3cb93a07,0x3c9b85e4,0x38f7527f,0x3b74d456,0xba3a386d,0xb9ee3cc0,0xbb634710,0xbb136e08, -0x3c141ccc,0x3c58d570,0x3c64629f,0x3c07d1ff,0x3c69decf,0x3c1d3f93,0x3b479043,0x3bd4d538,0x3c195b0d,0x3c89a1b6,0x3c860ed8,0x3ccb89fe,0x3c9ba97f,0x3cb70a09,0x3c071c57,0xbb841094,0xbb01e3ce,0xbc565fa1,0xbd602044,0x3be39118,0x3d08450e,0x3d296f5d,0x3c474814,0x3ca0c924,0x3c3c775c, -0x3c150bf9,0x3b2df41d,0x3b91556b,0x3c4b472f,0x3c897151,0x3c78ea5a,0x3c7969ce,0x3c3a4ef5,0x3c257a16,0x3ba7b0cb,0x3bba4f43,0x3b5a4631,0x3be4d886,0x3bdce5b0,0x3b2b1ead,0xbb1b2aa5,0xb940a3b1,0x3af7f75a,0xbb4fc1be,0xbc277b5a,0xbc7d603a,0xbca64e60,0xbca71cae,0xbc2be204,0xbc59c5e7, -0xbbfd4cc4,0x3a3c66e7,0xbbdd58eb,0xbc1e0baf,0xbcfce293,0xbbbf54b7,0x3aec1720,0x3c1963be,0x3cab6493,0x3caff491,0x3caf1b18,0x3c60809a,0x3c216b84,0x3c5bdcc7,0x3c4afaba,0x3c36b4da,0x3c1e8c27,0x3c0efb8e,0x3c0244af,0x3c26dc3f,0x3be9933d,0x3baf099a,0x3b567384,0x3bbc840c,0x3baa84f3, -0x3b8e5067,0xbb9e7a08,0xbc159224,0xbc5074dd,0xbc1e8bf7,0xbbc3af33,0xbc062eab,0xbaf5d8bf,0xbabc763e,0x3ac9986d,0xbb3d9d39,0xbbac45d9,0xbbc5a6d8,0xbc85f038,0xbcb71f21,0xbd0c9cab,0xbc481ffe,0x3b846686,0x3c748c1d,0x3cd6065f,0x3c11164e,0x3c730ea1,0x3c3f28f6,0x3c64a17c,0x3c20ea79, -0x3c191013,0x3c009c53,0x3bf13c15,0x3be9e0c2,0x3bcbf8e1,0x3b8b5148,0x3b202c50,0x3b4ff11f,0x3ab0ce05,0x38f391bd,0x3aaf189c,0x3b9001e2,0xba149664,0x399d8bbd,0xbc4e485c,0xbc17a4a3,0xbbabd38f,0xba3556a7,0xbba51b14,0xbbcccb45,0xbbef481f,0xbbde18f0,0xbbe15612,0xbbe4afdf,0xbc4a613a, -0xbc74125e,0xbcba7d4c,0xbc5423ce,0xbc005e32,0x3b45290b,0x3b1186d5,0xbaac7ea8,0x3b16010e,0xbc02995e,0xb8e9b181,0x3a90baae,0x3b8a29a6,0x3bb5ab92,0x3bef6c44,0x3b063fcd,0xbad90689,0xbba8a41a,0xbc0692ba,0xbc2b1ffa,0xbc71e072,0xbc3c40ca,0xbc444215,0xbc23c130,0xbbdf7e5c,0xba94efbb, -0x3b2209de,0x3b3f387f,0xbacb81d2,0xbb549eea,0xbb570e34,0xbb7888ba,0xbba8a2ed,0xbc175449,0xbc4b81b2,0xbc7510c4,0xbc8c294b,0xbc964d0d,0xbca81027,0xbc81b11d,0xbc4089b5,0xbc17c6c0,0xbb9ae1d0,0xbbc6bc59,0xbb48f4ad,0xbc1b7d23,0xbc68e3b2,0xbc885d1c,0xbc11db8e,0xbc5e1138,0xbc6c22ab, -0xbc703044,0xbc76abf9,0xbc8001d4,0xbc88777c,0xbc93a9f1,0xbca08838,0xbc7d44ca,0xbc22374f,0xbc802117,0xbc8279d7,0xbc5efbc7,0xbbc8c9f7,0xbbf19660,0xbbe9aebd,0xbbe238a5,0xbbef21d8,0xbbf09c7b,0xbbdc6211,0xbbdf83f1,0xbbdea67b,0xbbe951bf,0xbbf257e5,0xbc01d798,0xbc13dfcf,0xbc0a31b0, -0xbbf768cc,0xbbee9d8e,0xbbe40d2f,0xbc7d2f94,0x39bbf1df,0xbab651d4,0x39d67f6c,0x3b8d4ccb,0x3b3fec28,0x3b5cfc7f,0x3a910775,0x3b5f03bb,0x3bbeb3da,0x3b9c829e,0x3b93be9b,0x3b757516,0x3b96f7dc,0x3bb0fd9a,0x3b81e11b,0x3b85496d,0x3b38a9e4,0x3ba054e1,0x3b7182d8,0x3a99260b,0xbb2af505, -0xba8336d7,0xba882ffb,0xbae6ae86,0xbaffe07b,0xbb13791a,0xbb31a2bc,0xbac81eb7,0xbaa1079f,0xba55f276,0xbb82ff07,0xbb93d93c,0xbb609dea,0xbb553b9a,0xbb6c6761,0xbb679839,0xbaed7c71,0x3c65433d,0x3bd164f5,0xbc05eee7,0xbb78842c,0x3ae774d0,0x39d107b6,0x3b1f30c7,0x3bcc5b0b,0x3ab5e4a3, -0x3b26b265,0x3b1bb0ff,0x3b91a621,0x3b5c4e69,0x3aeb10b6,0x3bfe9f8f,0x3bc3d30e,0x3bc4b5c7,0x3b0414d9,0x3b009788,0xbb9b1f1d,0xbb3fcf49,0xbb3ddbfe,0xbb977e20,0xbb25311c,0xbaac66f1,0xbb2c31fe,0x3b03eac0,0x3b300927,0x3b8b97ff,0xbb95cf5c,0xbb80340e,0x3b09b8fe,0x3ab98637,0x3bde6286, -0x3c499bf6,0x3c90bb72,0x3c4b9273,0x3c1b3f2a,0x3ae9d877,0xb955fa68,0xb925982b,0x3ab0d313,0x3b7ce691,0x3c29d28d,0x3b932ec0,0x3a51ee3c,0x3b845c34,0x3b67587c,0x3be8701d,0x3a8e8d7a,0x3c13f29b,0x3c13cbca,0x3c0c9fdf,0x3aea3cab,0xba70f0b2,0xbc0e251d,0xbb9f78b7,0xbb8510d6,0xbbfc0a5d, -0xbbd503f5,0xbbda3080,0xbbf11249,0x3afd7ba9,0x39a9ed08,0x3ba665fb,0xbc90ace6,0xbc9b5f89,0xbba2a630,0xbba3b52b,0xbb710ed3,0x3b15782f,0x3c329c8a,0x3d544c6e,0x3cd9bb68,0xbc9862ba,0xbc2426a2,0x3b826b83,0xbb3556f7,0x3ae3e49b,0x3c9180d2,0x3b4f904f,0x3b74e825,0x3b92bcce,0x3c2857fd, -0x3c5f2fbd,0xbaf8a05c,0x3c7997fc,0x3c6e4908,0x3c352d03,0x39a41212,0xbb65ebdd,0xbc564e84,0xbc176cd9,0xbc03c2ce,0xbc3fbfd5,0xbbd17efa,0xbaeb8bd7,0xbadee364,0x3c32239c,0x3c2977bb,0x3c82a60c,0xbc30bf24,0xbc37b867,0x3c305d77,0x3c210ff3,0x3cafbfc0,0x3d2856f4,0x3d4dc203,0x3cfe3316, -0x3d0e4fde,0x3beec615,0x3b85caf9,0x3c33966e,0x3b1b91df,0x3c08bbb8,0x3cc7090a,0x3c073df6,0x3c09a9ef,0x3c2fa099,0x3ca2ba67,0x3cbe53e3,0x3b992827,0x3ca95739,0x3ca0ed1e,0x3c197d69,0xba8b168c,0xbaddd371,0xbc9f3a44,0xbc08a445,0xbbc2b3a2,0xbc3f2c59,0xbc21f9e0,0xbc4362bf,0xbc166f20, -0x3b9d59b2,0x3beb62b6,0x3c81269b,0xbd14e900,0xbd1802be,0xbc0dbee5,0xbbc79cf7,0xbc265065,0x3c01d2ba,0x3cf97e12,0xbd5d7484,0xbd009caa,0xbc7f1cf0,0xbc9183cf,0xbc4ccfe9,0xbaf5d733,0xbb1c60d1,0xbc16d28f,0x3c531c52,0x3cc315a2,0x3bb52aa0,0x3cabf15f,0x3c81c5ce,0x3c26e463,0x3c258422, -0x3ba8cd47,0xbc0d003f,0xbc906f7d,0xbce44d8d,0xbce98b8a,0xbc8ceb22,0xbc880bf3,0xbd09a4bc,0xbc523bef,0x3b7c2006,0x3c420a32,0xbac49dcc,0xbc9ec9a9,0xbcef279e,0xbd1d0baf,0xbd07b9cb,0xbd7d4f4e,0x3c8edc95,0x3d08fe91,0xbc71f977,0xbd12b932,0xbd5a30fc,0xbc387ff2,0xbba7ea34,0xbbd65e5e, -0xbce859bd,0xb9e9ca7e,0x3c220667,0x3d1f93d9,0x3c427259,0xba855b8b,0x3b802484,0x3bb940f3,0x3c531965,0x3c857628,0x3c9793b2,0x3c654009,0x3b72419c,0xbaf4d29c,0xbb33769f,0xba537540,0xbbccd292,0x39a54691,0x3c8e2a20,0xbcf996ce,0xbd3346e2,0xbd0e3f6d,0xbd084883,0xbd3775cb,0xbcd87887, -0xbdd1503c,0xbdcf1942,0xbd85c67f,0xbd87d9d9,0xbda3ce08,0xbdc69d0f,0xbd84982f,0x3d0e4e00,0x3d374fb4,0x3cf350b1,0x3ca9df41,0x3d07527c,0x3d462b1c,0x3d3373f9,0xbb4c7966,0x3c2aa04b,0xbb0e9d89,0x3c115d36,0x3a8bb8e7,0x3c141c2b,0xbc136ba4,0x3ce90835,0x3cf95230,0x3b5597e3,0xbb16691a, -0xbc3b8825,0xbbe0b951,0xbc49f440,0xbc516a39,0xbc0d3afb,0xbcc12651,0xbc9ca4cf,0xbc846b21,0xbc44e156,0xbc6e1bfa,0xbc9448f4,0xbd61941b,0xbd770846,0xbdb911aa,0x3b900f06,0x3cae4f6d,0x3c18b6f1,0x3d0f3fb4,0x3d901745,0x3d6f0b4a,0x3d29b9e0,0x3d3802f7,0x3d3e92cb,0x3d4a35fd,0x3d2ebca1, -0xbb169a96,0x3c806984,0x3beb0794,0x3b9a1703,0x3c0cda71,0x3c648ecd,0xbc7d78cc,0x3cf9d0a8,0x3d1959a5,0x3c0f6fff,0x3ba5dcf0,0xbbfeca69,0xbc58a11a,0xbcb97cf5,0xbca876fe,0xbc6755aa,0xbca3e85f,0xbd08b672,0xbd2a2715,0xbd5d1397,0xbd4e2cdf,0xbd229207,0xbc996f7a,0xbc188b08,0xbd229399, -0x3d626f9b,0x3db3d65d,0x3d8a81bc,0x3d99ae56,0xbbb371c1,0xbb5e6761,0x3b884df2,0x3be75c67,0x3aa97ceb,0x3ca4c1d4,0x3ccada55,0x3ce1a302,0x3ccd411f,0x3c9d225e,0xbb2beb26,0x3c7816ea,0x3c8847d9,0xbc04dc89,0x3ca82d76,0x3cd295a3,0x3b803bec,0x3bf09b4f,0xbb49eef4,0xbc50c495,0xbcc37f68, -0xbd098a18,0xbd2aca9a,0xbd5a761c,0xbd7c860b,0xbd863a4e,0xbd71a095,0xbcf4ba15,0x3cb39581,0x3ced9557,0x3d11c257,0x3c444976,0x3d499e7c,0x3d3edcd7,0x3cf0d490,0x3b86d2fa,0x3d0c7b17,0x3ccbc5d8,0x3c82295d,0x3c5b76a2,0x3cce988a,0x3cc92f2e,0x3c9e8859,0x3b9c1ef6,0x3bd02062,0x3bcbaaf3, -0x3ad70c22,0x3b7d4ae2,0x3befe552,0x3c98cc9e,0x3cd701be,0x3cbf7861,0x3c3c6649,0x3c908225,0x3c992cde,0x3ca3baea,0x3cca6c7e,0x3cb49ba7,0x3c9ed348,0x3c33a3e9,0x3cc4cb03,0x3d108baa,0x3d82ece2,0x3d812d72,0x3d9022e5,0x3cb5d308,0xba20b8ff,0xbd091966,0x3b99b1a7,0x3cbf89aa,0x3d0031b5, -0x3d06e43a,0x3c2d4f71,0x3ba4a058,0x3c0314c4,0x3c36aff7,0x3c1a33e7,0x3c90ce48,0x3cb0efb1,0x3cbfa919,0x3cb1ded5,0x3c6748cc,0x3c841339,0x3c376754,0x3c57989d,0x3c60fabe,0x3c5fef31,0x3c37bc11,0x3b2ea69d,0xbab42954,0xbc077620,0xbb61b2b0,0xbc0306c1,0xbbedf62c,0x3bcf2d27,0xbc8e95ba, -0xbcbee375,0xbce4d3a5,0xbc2d7e70,0x3bd0a8c8,0x3cb1d3b5,0x3c2ad1f3,0x3c14cad0,0xbaa606f8,0x3c929b19,0x3cc71d93,0x3ced7fda,0x3c9fe1f6,0x3ca188b9,0x3c871f56,0x3c64ef50,0x3c5b15c9,0x3c433bbb,0x3c5dabba,0x3c58e20e,0x3c590ede,0x3c327dea,0x3c634550,0x3c526b14,0x3c6ea0ac,0x3c31f2bd, -0x3c6569db,0x3c646ff0,0x3c5dfd3e,0x3c291f29,0x3c20c0b3,0x3bf40107,0x3b8c6c9b,0x3c822b35,0x3bd406d4,0x3c0f17c6,0x3c2314b9,0x3c3eb1f1,0x3c891295,0x3cbf4482,0x3cdacbd7,0x3cf63f42,0x3ca08ff6,0x3c538d6a,0x3be1336a,0x3c6e7361,0x3c981d7b,0x3c9e618f,0x3cb1cc87,0x3c03954f,0x3c5fff21, -0x3c33e00d,0x3bd6f7e7,0x3b4fb79c,0x3b7be4b0,0x3b8bf47e,0x3be36e32,0x3be4fcc4,0x3c26e3a7,0x3bc5d575,0x3c7bd1e3,0x3c29dcc1,0x3c76ba43,0x3c038684,0x3c52f555,0x3c42d4c7,0x3c40c7ee,0x3b35916e,0x3c60946e,0x3c6416ed,0x3c09be56,0x3bb19a4e,0x3c461595,0x3caaf0d5,0x3cd378db,0x3c9af84d, -0x3c78a849,0x3c52f041,0x3c3b1acc,0x3c461c4c,0x3c331463,0x3be758bf,0x3b4ec609,0x3b7e8669,0x3bb83ccd,0xb8deb9f8,0xbad7a33f,0x3b55b53e,0x3ba2b563,0x3be5c427,0x3c0cbc27,0x3c263ed9,0x3c031a98,0x3c2916cc,0x3bd29936,0x3bc8c0c9,0x3b866d50,0x3bd4daa6,0x3b9e1a0d,0x3bf3012c,0x3bf1dfcc, -0x3b47eb52,0x3c171160,0x3b8c1644,0x3c15cc36,0x3bd01073,0x3c1dd5b4,0x3c2b1b89,0x3bfaec48,0x3b0b9952,0xba4f0801,0x3afb72ab,0x3aa86931,0x3ab8c505,0xba0bd601,0xbb5fa7c2,0xbb8718a1,0xbaae3e4f,0x3afcd2c1,0x3b028377,0x3aba236c,0x3ba3fd04,0x3bad4040,0x3ba94d67,0x3b4151a3,0xba967914, -0x3b9cb7a7,0x3b4da72b,0xbb00d01d,0xbb3ebd49,0xbb042bf1,0xbac87253,0xbb1123a3,0xbb776638,0xbb8a15fc,0x3bac1414,0x3bf9cd76,0xbb12cfea,0x3b851bcc,0x3be1742e,0x3bb830fb,0x3bb0fbf1,0x3b983805,0x3b823bed,0x3bab2bda,0x3be4441c,0x3be96312,0x3bde9700,0x3bafc3a4,0x3ba37310,0x3bb0e216, -0x3bbe8b07,0x3bbef5ba,0x3b9bc84a,0x3b801712,0x3b6b4729,0x3b853ef1,0x3c0b549b,0xbba6d94c,0xbbad897b,0xbbe71fd4,0xbc09ba1e,0xbbac532a,0xbb6d3ba1,0xbba05d6a,0xbb6ab19c,0xba80037a,0xbb062475,0xbb1d05ae,0xbb1f0641,0xbb0672ad,0xbb0960ad,0xbb25bf36,0xbb2cfe50,0xbb20bd04,0xba124479, -0xbb2b5c78,0xbb36e0ce,0xbb03843c,0xbb70557d,0xbb7d31d7,0xbb46cf0c,0xbb863612,0xbb8c76fe,0xbb8fc89d,0xbb5e04c7,0xbb677555,0xbb7be67c,0xbb9d2256,0xbba4053a,0xbba399f5,0xbb3ea8d3,0xbb441b7a,0xbb8d8ef2,0xbbb4b396,0xbbabc4aa,0xb915f5ed,0x3bd659a2,0xbb223ee6,0xbb08bd19,0xbb42b534, -0xbaf4f614,0x3b1d5234,0xbb17f5fe,0xbb5a55ca,0xbb393a62,0xbb05195e,0xba8cd23b,0xbb0ec3e5,0x3983e87d,0x39d5fc6d,0x3abfdecd,0xb9c6b32f,0xbb9184b1,0xbb66adfd,0xbb9d041d,0xbba3a94f,0xbaf0023c,0xbbac2027,0xbbba0aa5,0xbc018462,0xba8ba8ea,0xba25d383,0xbba76895,0xbc30af0a,0xbc640f42, -0xbc62c41e,0xbbf4ae0f,0xbb939443,0xbad4c8bd,0xbb6731cd,0xbc807485,0xbc2dd40e,0xbbeb85d1,0xbc2118cc,0xbbdc422f,0xbba7deab,0xba269a8c,0x3bedd64e,0xb818a6ca,0xbaf44dc1,0xbab4844a,0xb9786549,0x3a98f714,0x3a222b2a,0x3b71211e,0x3bae53d6,0x3bf5fd10,0x3b329c7d,0xbaef1cfe,0xbb1d2840, -0xbba71ce9,0xbc0a8fe0,0xba5e3066,0xbc03c34d,0xbbf4c1b1,0xbc25622d,0xb92c6778,0xbac14b15,0xbbf1ca2d,0xbc80dbf1,0xbc98d34b,0xbc8b8c0b,0xbb9a6de9,0xbb0087ff,0xbb822e1d,0xbc3e56bc,0xbc5fc515,0x3bb5c944,0x3cad90bd,0x3b506b71,0x3aa9d794,0x3b348af7,0x3b9642da,0x3c8e59ce,0x3a444ec0, -0x3aaa7466,0x3b386963,0x3bd5557b,0x3c103363,0x3b7dbf72,0x3c074b93,0x3c2f34e4,0x3c59f50d,0x3b8b2075,0xbbb20912,0xbbbd7fc4,0xbba33c6b,0xbc039590,0x3b9be44d,0xbc0eff4a,0xbc09e132,0xbc591ffc,0x3bcc3204,0x3bedd863,0xbbcf664a,0xbcc1d707,0xbcff4945,0xbd02ae2b,0xbc5b2a72,0xbbc8dcf0, -0x3bdd1bb7,0xbb2f2fe4,0xbd16585a,0xbce96384,0xbb0d6bd5,0xbc677c30,0xbbc9af09,0xba347bae,0x3bd1b4af,0x3ca208a7,0x3bdf84df,0x3bab9c0c,0x3bf59f84,0x3c8c784f,0x3c804a31,0x3b0a8801,0x3c57dc25,0x3c90cff1,0x3c6ccaea,0x3bd519dd,0xbc54eee4,0xbb96673a,0xbbe3f436,0xbc8367ae,0x3b2f9ba3, -0xbc342b9d,0xbc05a448,0xbc4c9836,0x3bb56903,0x3bd29024,0xbc04704f,0xbcdce8ae,0xbd0a3728,0xbcc432b7,0xbb5877b9,0x3bccb8e6,0xbaaf7186,0xbc8bd098,0xbd1f2e58,0xbd33fb35,0xbd286767,0xbc6dcdc4,0xbca363e3,0xbc9c11ed,0xbc94f650,0xbc046494,0xbb094a20,0x3c8b78a0,0x3c1af5b1,0x3c850a0d, -0x3c87d120,0x3ce3ecb5,0x3c39d5c0,0x3c0a80f8,0x3bb71281,0x3b84fe99,0xbb5a0ee1,0xbc1c5e58,0x3bd27113,0x3c108a3d,0x3c9c7f1d,0xbc263f93,0xbc83d6ed,0x3b3cdf4b,0x3bb14d3f,0xbc4b5485,0xbcb08150,0xbd10880a,0xbd06b158,0xbcb887b7,0xbca3ede7,0xbd1ec18b,0xbd9fd67e,0xbd67acf5,0xbdb3d1c2, -0xbced826c,0xbcd3da0b,0xbca7264c,0xbcd44a76,0x3c260780,0x3c26c687,0x3c37d332,0x3ba7daf2,0x3976f4c7,0x3bcdca18,0x3b30f4a4,0x3b9ffe17,0xba979e96,0x3c98fa80,0x3cae0d10,0x3c2346c7,0xbb4242f8,0xbc12da8d,0xbbf90a72,0xbbe6b130,0xbc54212b,0xbcd8c1da,0xbca0b3f0,0xbca71cae,0xbd11aadd, -0xbd0559f7,0xbcb3e22c,0x3bd2d54d,0xbd0a9956,0xbd1e0d17,0xbae8fc5c,0xbb4723ce,0xbc83801c,0xbd495a34,0xbda04b65,0x3d08104e,0x3d13af1e,0x3d1668dc,0x3cef33a0,0x3d27986c,0x3d24641d,0x3d08fb4e,0xbc09f9e9,0x3c4586c8,0x3b1fc75c,0x3b6fc00a,0x39f23752,0x3bfb9298,0xbbbb958a,0x3cd39058, -0x3ce1e153,0x3bedc588,0xbae740f0,0xbc5c29d9,0xbc081d64,0xbc6b815e,0xbc8bb30e,0xbc809efc,0xbcdbc100,0xbce72730,0xbcbb3f15,0xbca21a18,0xbcc91afe,0xbc161c30,0xbd621fd9,0xbd4fdbf7,0xbd25b537,0x3bb31551,0x3cce62dd,0x3cd1ee44,0x3d1066c5,0x3d94dfb5,0x3d5d41df,0x3d400901,0x3d334048, -0x3d53c931,0x3d27c216,0x3d15b986,0x3be80155,0x3c95713f,0x3c15d730,0x3b8471a4,0x3bfa5197,0x3c13d29d,0xbb4c1228,0x3c9bc0a7,0x3cbab103,0x3c20eefb,0xbb54b70c,0xbc30d048,0xbc459a32,0xbc852c8e,0xbccb8d5b,0xbce60244,0xbd63fe86,0xbd71dda6,0xbd39d88b,0xbd1053cb,0xbc956237,0x3c76a440, -0xbc8b2757,0xbc529c96,0xbc94d67e,0x3d3276c0,0x3d8180b6,0x3d1c8bce,0x3d965bdf,0xbcc6b33a,0xbc92e0c2,0xbc285f9f,0x3b2f6139,0x3b8c93ae,0x3ccdf648,0x3ced5072,0x3d080fb1,0x3c8b0792,0x3c27bf90,0x3b63eb4e,0x3c2461b3,0x3bd1d254,0xbc141f6a,0x3bc3227c,0x3c0d4308,0x3bdc0158,0x3a8fac02, -0xbbd17f9a,0xbc86d09f,0xbca175f3,0xbcfca80e,0xbd2a4d51,0xbd2a7e83,0xbd1f2139,0xbd10a76d,0xbd0b6259,0xbcf6b6de,0x3b1d18de,0xbc423718,0x3c988006,0x3d0b808c,0x3d97107f,0x3d9994c9,0x3cd0c170,0xbad64e46,0x3c9d5d5f,0x3c81e451,0x3cba413e,0x3c93be03,0x3cd95dfa,0x3cbb5bc1,0x3c8eab41, -0x3c0c81c3,0x3c1a4a6d,0x3c766041,0x3c8339b0,0x3c62d602,0x3c7978a1,0x3c612590,0x3d0711ea,0x3cf1d9fa,0x3c722091,0x3bbd6d8b,0x3be7eca4,0x3c82d788,0x3c402546,0x3c83f136,0x3cadeae6,0x3cc5f01a,0x3c9eccd4,0x3c1a9bc4,0x3cf641b9,0x3d1bb73b,0x3d8a2acf,0x3d037523,0x3c5e701f,0x3aae3fe9, -0x3add363a,0x3bb02063,0x3c190fab,0x3c22a2a3,0xbb35c3d2,0x3ae0f35f,0x3b938cb7,0x3c06eb34,0x3c181312,0x3c906efc,0x3cc0ce98,0x3c97ad62,0x3ce254a6,0x3cb75182,0x3c65177c,0x3c8f39e5,0x3c977599,0x3c518e87,0x3c112921,0x3bf5239d,0x3c671a8b,0x3c316913,0x3b36febd,0x3bd2a2a6,0x3c3f9e18, -0x3c239baf,0x3c069762,0xbc781cda,0xbc23e62d,0x3abfa752,0x3bf63c1d,0x3bc7bc3e,0x3be3b75e,0xbcab9035,0xbc9d2015,0x3c05c043,0x3bf5eb5f,0x3c838b8c,0x3cf0b602,0x3aa7868b,0x3c1a24cb,0x3c695911,0x3c405acb,0x3c0d66fa,0x3bf8a7e5,0x3c16f7e0,0x3c30ebac,0x3c31f888,0x3c72d44b,0x3c8a7178, -0x3c685f4a,0x3c872421,0x3c7e6195,0x3c8994ae,0x3c639b33,0x3c698bc9,0x3c68c960,0x3c8a8614,0x3c9f677f,0x3cbc3fd4,0x3cd14cbf,0x3cdba96a,0x3cf4db9b,0x3c980aa3,0x3c45a88e,0x3c402de0,0x3c20f061,0x3b8f6035,0xbbb7f55c,0xbc571db1,0xbc60df4c,0xbb637607,0xba228ba0,0x3be6c5be,0x3ca372da, -0x3c7239e9,0x3c14e2d2,0x3c04cdfb,0x3c1c6dd0,0x3c097ca9,0x3b9a0a7a,0x3bd7e068,0x3c114704,0x3c57b8d9,0x3c4f95f7,0x3c52deac,0x3c8b3db5,0x3c866580,0x3c83ed80,0x3c89738c,0x3c884a06,0x3c772e12,0x3c54fe40,0x3c569e05,0x3c9f8be8,0x3c6d8005,0x3c3bcdab,0x3c31b306,0x3c3233a4,0x3c41bde6, -0x3c378935,0x3ba712e2,0xba6ca03b,0xbbec181b,0xbc3f42e0,0xbb6f9bc0,0xb8e14708,0xbb4e9165,0x3b8618c2,0x3bf79a1a,0x3c084758,0x3c13a6ad,0x3bc80f71,0x3c240f21,0x3b2a1250,0x3c3b5027,0x3c77fcc2,0x3c8cf6a5,0x3cb37610,0x3c9d7f6f,0x3cb8ffd3,0x3c9725ab,0x3c85d3ce,0x3c880f39,0x3c8daa35, -0x3c8bef22,0x3c50b71f,0x3c0b72ba,0x3c0b02fa,0x3ad78b91,0x397c8cd6,0xbc1d8aa4,0xbc39aabc,0xbc407985,0xbc7707e3,0xbc94bba0,0xbc9dec68,0xbc94cb6e,0xbc5a2f77,0xbc0f3dd2,0xbbb08dde,0xbc0577d4,0xbc01ecea,0xbb87e9da,0xbb5f3be5,0xbb462999,0x3aae501d,0x3b5824fb,0x3bf45c66,0x3c0aaba4, -0x3bc4324b,0x3b887bab,0x3b45cccb,0x3bdd3edc,0x3bb68070,0x3b82e9b0,0x3b498654,0x3ba2b5b7,0x3bce6c73,0x3bcc3257,0x3bbfa3db,0x3bd96a3b,0x3bfef575,0x3bfd7068,0x3bdda979,0x3bc3b2f0,0x3bb8f239,0x3bdc6953,0x3be8d02f,0x3bd1eddc,0x3bdb1ec6,0x3be5ea08,0x3bc8ed8d,0x3b881714,0x3b6ea939, -0x3b54db5b,0x3b5edca4,0x3bb0f29a,0x3bd1c3d3,0x3bd6f05e,0x3beb51b5,0x3bf04495,0x3becf3c6,0x3bf89143,0x3c4ee4b1,0xba042361,0xbb056160,0xbb41abe0,0xbb6c32b0,0xbb765666,0xbb879d3f,0xba4c49f4,0xba9986bd,0xbadbfe31,0xbb39ba3b,0xbb4d0213,0xbb3cc9a8,0xbb35ea82,0xbb4b0b27,0xbb030d80, -0xb9682a60,0x3a254395,0xbaad6489,0xb8a59973,0x3a567d7f,0x3afcc3ee,0x3a01f0ae,0x39df01b5,0x3a4e5ed0,0xb94edc42,0xb9e3b705,0x36083483,0xb9e976bf,0xba8561cd,0xbaa189f8,0xbb3663f5,0xbb2461c9,0xba3a5943,0xba4b3a6d,0xba5b7c86,0xb9e9c18b,0xbab573d7,0xbbca7c8d,0xbbe30fda,0xbbda9a53, -0xbbb72224,0xbbd30e9f,0xbb1bb922,0x39b64afb,0x3b5e80bd,0x3a84a03b,0xba5f4e46,0xbab71a80,0xba2ba7b1,0x3a920b5c,0x3b25430c,0x3a20d629,0x3b52b859,0x3b7e3552,0x3b802ed3,0x3ae07cfa,0x3b96c127,0x3add77da,0x3a2424c3,0x3ae88ebd,0xba852a9b,0xbaeae4d6,0xbacc7d80,0xbaea73ce,0xbb24fa5f, -0xbaa8a157,0xbbccc6ab,0xbb8efa04,0x3b66a335,0x3b2165fa,0x3b14f3f7,0x3b235095,0xbb7caf3a,0xbc6adea0,0xbc94ea1e,0xbc8d5157,0xbc78a739,0xbc3e3e3e,0xbb5947c4,0x3a4cc833,0x3be415cd,0x39520083,0xb9c3a980,0xba24b7bd,0x3a1e3b08,0x3ab2ebfe,0x3c04d2dd,0x3bbb6337,0x3bf90b73,0x3c28e50c, -0x3c0ab58b,0x3bffe0ff,0x3c0824a6,0x3ba91963,0x3b1f5285,0x3ba5e447,0xbadd9f58,0xbb2fa7e0,0xbaff454e,0xbb8db820,0xbbfa689b,0xbc0013a3,0xbc868966,0xbc53e55c,0x3b1ee7c7,0x3ab2fdec,0xba236895,0xbb459599,0xbc32cfc2,0xbcb113bb,0xbcc62297,0xbcceb42b,0xbcaa0b17,0xbc9a91b5,0xbbd017f5, -0x3b231783,0x3c78ebc2,0x3b8b6a29,0x3ac64d60,0x3af12e24,0x3b9308c8,0x3c03c1e6,0x3c6c473f,0x3c02c1c0,0x3c3a9583,0x3c8617c8,0x3c5f4971,0x3c23d082,0x3c405bf5,0x3c01755e,0x3b49f05c,0x3bc34324,0xbb8086a0,0xbbf79fd2,0xbbd90f8f,0xbc176649,0xbc3ef287,0xbc001907,0xbc9d2d61,0xbc453b91, -0x3c4dc9ce,0x3c269308,0x3bb01c35,0x3b385196,0xbc996714,0xbcf77dee,0xbd1bfb2d,0xbd30de27,0xbd2a0e73,0xbcdd2157,0xbc18c885,0x3aea3f5f,0x3c6b1679,0x3b4218d4,0x3b8eba31,0x3b8cf3f9,0x3c61b60f,0x3c523816,0x3c3d31c1,0x3c52b82a,0x3c7d1600,0x3ca6012a,0x3c8f8ca9,0x3c25363a,0x3c9995df, -0x3c3319ec,0x3bd0315d,0x3c0ff4ac,0xbb54fc5c,0xbbc2e774,0xbbc2ea99,0xbc516262,0xbc8d6ec9,0xbcafbfef,0xbd0f6392,0xbce3d160,0x3ba03f7e,0x3b7f1924,0xba30a529,0xbc7a8e54,0xbcd6d594,0xbcd7c8de,0xba05e2b2,0xbbc9e6d3,0xbb4e8610,0xbc0fd39d,0xbca30733,0xbc5bac69,0x3b90f30a,0x39f8a6ca, -0x3bd36494,0x3b9e5328,0x3c31d687,0x3c781bbb,0x3ce91446,0x3c2f9d43,0x3c3be0d7,0x3ca987c0,0x3c3a9c75,0x3bb6e386,0xbbf6ffa1,0xbb652c15,0xbbb4a195,0x3ba9fa42,0xbcb01c30,0xbcffc87a,0xbd0f2d7c,0xbcf3a902,0xbca7c3bf,0xbd34d6b2,0xbc2aa20a,0xbb0ce0c1,0xbc090f66,0xbc8e183c,0xbcc066d8, -0xbcb2a9aa,0xbcf2a0cc,0xbd7256b6,0xbd6ae9c3,0xbd717449,0xbce09087,0xbc9a8a30,0x3c782189,0x3c67a293,0xbbbad7dc,0xbbb475ab,0xbbeaa233,0x3bdaa4c3,0xbb0e70b1,0x39d1c365,0xba8acdf0,0x3cc926bf,0x3cd8db4c,0x3c7b82e0,0x3c2e60c7,0x3b38ffb2,0xbad28140,0xbb63269e,0xbc1aece4,0xbc094390, -0x3acf2ef5,0x3b3cdb06,0xbae86cfd,0x3c042244,0xbc02e12e,0xbd14fa5f,0xbd4d7631,0xbd100b8d,0x3c9a4087,0x3cd7df11,0x3cd23d46,0xbcf14f0a,0xbd3c4f62,0x3d29448a,0x3d7006e8,0x3d3758d6,0x3cceff61,0x3d3a2cec,0x3d0360ec,0x3cbc08c1,0xbc5a07dc,0x3bc7f4ef,0xbb155bcb,0xb6e58641,0xbb454622, -0x3ac52d97,0xbc0bb4d0,0x3c6037b1,0x3c9c3285,0x3c81e600,0x3aaba360,0xbc018d6b,0xbbb251c0,0x3a2707c5,0x397acc85,0xbc1bf11c,0xbcafc56b,0xbcb2635b,0xbd01fbb1,0xbbe9a73e,0xbc72b145,0xbc9c7dd1,0xbd7e6b10,0xbd8848ae,0xbc64dc2e,0xbd659302,0xbd380b15,0x3c021ef4,0x3ca88c19,0x3d5be2bb, -0x3da5fcd4,0x3d7b7730,0x3d75d95a,0x3d6b67a1,0x3d10befa,0x3cd8cb49,0x3c1b7051,0x3c10691e,0x3b0dea1d,0x3b1faa67,0x3b7f7066,0x3b0e69d9,0x3b2e7820,0x3bc728e6,0x3c3baca4,0x3ceef029,0x3b078d6b,0xbbc7df67,0xbc4be206,0xbbcb2bbc,0xbc9c99da,0xbce5bc37,0xbd0cb379,0xbcdba3b8,0xbce02f8b, -0x39d9c5a1,0xbc2d1cf0,0xbc9698c9,0xbd629c86,0xbd558486,0x3c423c11,0xbbfe4022,0xbbeb0901,0x3d03d723,0x3d29d1e7,0xbc77cfe5,0xbc20f67f,0xbc15d7d8,0x3c5b31d7,0x3c80b21f,0x3d08d064,0x3d01498a,0x3d02a1b1,0x3c0e7346,0x3ba16626,0x3c342369,0x3b8b7383,0x3b55f03e,0x3c24d793,0x3c44c859, -0x3c30f7f4,0x3cb083ea,0x3b973bcc,0xbb87ca55,0xbba249d8,0xbc614899,0xbcc0a817,0xbcb32164,0xbc8d1837,0xbc823a02,0xbcf85472,0xbcedd0fd,0xbd3a7ecc,0xbd133bd9,0xbd6a4229,0xbcdeb40f,0x3d20cc87,0x3d81645d,0x3daa1fa9,0x3d459476,0x3c1bff2e,0x3cafd385,0x3cbb37ac,0x3cd34f4a,0x3cb72294, -0x3cc52cfd,0x3c95e139,0x3c4a1856,0x3c1aa1e8,0x3c400195,0x3c8f88b0,0x3cfdaf8b,0x3ca0acc2,0x3c65bbbe,0x3c24553a,0x3ccda3f4,0x3cd332f3,0x3c811985,0x3c378b6d,0x3bf75aa9,0x3bf851f6,0x3ba1eb2f,0x3b9a62d7,0x3b7593a5,0xbc04f290,0xbc0f1cf5,0xbac6b297,0x3cb3e4d0,0x3d06b489,0x3d39bff6, -0x3cb83b4a,0x3c6016d1,0x3d0e6a4a,0x3b98d627,0xbb8c75cd,0xbc96ebce,0x3acc633d,0xbbb540bd,0xbbf49e28,0xba7707a0,0x3c0c217b,0x3c90d057,0x3cb61430,0x3ccd629a,0x3c97d9e9,0x3caa7f15,0x3ca9e268,0x3ca02dfc,0x3c794962,0x3c4d366a,0x3b92c871,0x3bf1b05f,0x3c3d9508,0x3caf1254,0x3c9d5d8d, -0x3c933938,0x3c6ebefa,0x3c3b0da2,0x3c3f776a,0x3c57d088,0x3cf7075f,0x3d211427,0x3d175e7f,0x3ce0ff88,0x3c3c0954,0xbbe1e591,0xbc5cd6ea,0xbc2c6dfd,0x3c031a4d,0x3c95c4be,0x3c9111d5,0xbb473dde,0xbb234a96,0x3bbabd77,0xb9f01046,0x3bab9873,0x3bcb7104,0x3c3a4d2a,0x3c3d79d0,0x3c431d5f, -0x3c417d93,0x3c574052,0x3c48a1a4,0x3c41ca5d,0x3c56647f,0x3c7d613d,0x3c92f6aa,0x3c5d8abd,0x3c51a4af,0x3c147f83,0x3c522725,0x3c7fe7ad,0x3c8cffd7,0x3c85ae75,0x3c8f7ea2,0x3c5b05c4,0x3cb863cf,0x3cbfb7e3,0x3cbc62eb,0x3c7f6692,0x3c0db9e6,0x3a31e5af,0x3a84a976,0x3b6af346,0x3c27619a, -0x3c04af2d,0x3bdc8feb,0x3c20637b,0x3c1018d9,0x3c1b3032,0x3b645ed1,0x3be147e7,0x3c1ad73b,0x3c1c62af,0x3c26c19a,0x3c58e2a3,0x3c7ab8b1,0x3c558d9e,0x3c36b04b,0x3c27ee6f,0x3c604aaf,0x3c90980b,0x3cb57d84,0x3c80255c,0x3c26c17e,0x3ae5e621,0x3bc0c898,0x3bfba607,0x3c1f7019,0x3c0fdeb8, -0x3c0aaf88,0x3c102b86,0x3b6ca688,0x3b1f426a,0x3ba33280,0xba163624,0xbb5be95b,0xbbd3c9ce,0x3af7c1dd,0x3bf9a2fc,0x3c48b423,0x3c74e3f5,0x3c9c4e00,0x3cb7080f,0x3c5a858c,0x3ca7bac1,0x3cc97a0c,0x3ca6830d,0x3cb40f56,0x3cb98171,0x3cc6b117,0x3cb60af0,0x3cbdecb3,0x3cb2aae2,0x3cb7db72, -0x3cae7709,0x3c9eabad,0x3c77e7d0,0x3c6104da,0x3c3c8104,0x3c379089,0x3c290674,0x3bd21423,0xbb23789d,0xba90b2bd,0xb9e0a99e,0xba4a71a6,0xba8983d0,0x3a6765b6,0x3a6b73bd,0xba9e0028,0x3b7c9b9c,0x3bfa2573,0x3c1a86d0,0x3c0b36ce,0x3bd24559,0x3be1968c,0x3c0df4ba,0x3bb9d8e8,0x3c162539, -0x3c834dc3,0x3c291b84,0x3c345aa6,0x3c336747,0x3c276254,0x3c0e7dd5,0x3c27845e,0x3c2d70df,0x3c3aa3ef,0x3c37fdf5,0x3c2eb206,0x3c2d6064,0x3c35319d,0x3c495d98,0x3c5008d8,0x3c36a08c,0x3c269463,0x3bf7cf20,0x3c0d4039,0x3c22fa6d,0x3c212889,0x3c18efd6,0x3c1f0eca,0x3c1da900,0x3c135978, -0x3c1308c6,0x3c165026,0x3c0ea1d0,0x3c02c732,0x3c090a28,0x3c1ad645,0x3c2b7b4d,0x3c386a01,0x3c488294,0x3c4b0235,0x3c55072f,0x3c42b913,0x3c8b53ab,0x3a948038,0xbb190cbe,0xb9db0501,0x398278f2,0xba482bf2,0xbada84b8,0x3a86384c,0x3abef451,0x3abbb3cd,0x39edf519,0x39404dce,0xb8f6f89b, -0x391a25c4,0x3a19a763,0x3afdb35e,0x3b08cc9c,0x3b1a548a,0x3af48fbf,0x3b234a5a,0x3b1fd8d8,0x3afba001,0x3accd556,0x3aa71f44,0x3aa63a4b,0x3a6c4e9f,0x39d9acfc,0xb8ff88ba,0x38de1372,0x392a5e7d,0x3a869397,0x399e7f8b,0x3a357579,0x3b68358b,0x3b308998,0x3b264e88,0x3a0ea126,0xbaa581da, -0xbbb1ab3d,0xba653398,0xbbf0d052,0xbb1eed71,0xbb86427d,0x3aa9fbe2,0x3b659b0f,0x3b9e31b0,0x3b298ce1,0x3a78bfe7,0xb9c5ab33,0x395ba781,0x3ad27d02,0x3bb7f705,0x3b86a6a7,0x3bb272a5,0x3bc75392,0x3bcde5ca,0x3bd8c01c,0x3bb50287,0x3b4fe8b6,0x3b27d4e4,0x3b4bd42e,0x3afa30b8,0x3a993bbd, -0x36822f33,0xbac71e81,0xba9da0fe,0x3b292194,0xbba832d7,0xbbcfe71f,0x3b41bc4e,0xb956a347,0xbb43e66b,0xbbf72f44,0xbbf34291,0xbc6d1f3f,0xbbfc3206,0xbc1c5562,0xbbae33aa,0xbc2fdaef,0x3af886f3,0x3bb541f7,0x3c09ac9c,0x3b5720fb,0x399d8a3c,0xb921e4d0,0xba55cac6,0x3b1f468c,0x3c323c45, -0x3c10cace,0x3c231da6,0x3c387395,0x3c3c06e8,0x3c3e6bec,0x3c0ceb64,0x3ba01c8e,0x3b785b4e,0x3b72a3a5,0x3b0639d5,0x39091c23,0xbafe9554,0xbb1ddf09,0xbb80a140,0x3b87dad4,0xbbce8aad,0xbb1dd79c,0x3c570ad4,0x3bc4783e,0x3bb520e5,0xbbe12c01,0xbc671513,0xbc7a2e9b,0xbb076847,0xbc8fcc08, -0xbc13e8df,0xbc5852d0,0x38ada356,0x3bd4989a,0x3c7ead0e,0x3bb32316,0x3aa44ebf,0xb9db39f0,0x3aa76dd1,0x3bd932d5,0x3c905bb3,0x3c3d227f,0x3c67421d,0x3c856652,0x3c91ceb4,0x3c8b7f0a,0x3c50481e,0x3bcb7f74,0x3ba1731f,0x3ba8bba8,0x3b76707c,0x3b2fa797,0x39acf575,0xbbc5849d,0xbbec264e, -0x3c1fe9a6,0xbc867de1,0xbc57a2b3,0x3c12a0f6,0xbb597ffe,0xbc18ce0b,0xbcc18d5c,0xbcb4fb67,0xbd015d44,0xbc0daac5,0xbca235b8,0xbc4708ba,0xbca45da4,0x3ab5d1a2,0x3c10df51,0x3c933729,0x3b982a33,0x3b609747,0x3ad04191,0x3c204811,0x3c476b32,0x3c9f38c0,0x3c82a340,0x3c8c4e96,0x3ca1e0ed, -0x3c9d02d8,0x3cb9a9a8,0x3c420f9c,0x3be5f800,0x3bc202f5,0x3b9877d3,0x3b2bf8d8,0xba5bf896,0xba4f300e,0xbbb2894d,0xbbd3615f,0x3c02ca64,0xbc478575,0xbb8ff26e,0x3cec9275,0x3c63b495,0x3c83d26e,0xbc225b7b,0xbcea256d,0xbcc93b95,0xbc507937,0x3ca4b63f,0x3c88e98c,0xbbc3b150,0xbc10fd1f, -0xbc054fb4,0x3b898c49,0x3b534ef0,0x3bdd2e89,0x3b41b70f,0x3b8ddf97,0x3c141129,0x3ccfa799,0x3be49d20,0x3bf68c98,0x3c9c3327,0x3bce2aa7,0xbabbc40a,0xbbaa2d4a,0xbc8a04e7,0xbc920a7f,0xbcd47365,0xbb34f6b7,0x3ad4b9d6,0xbd08bf37,0xbd0dea9e,0xbd140293,0xbd2b49fa,0x3bf4f491,0x3c5b0bda, -0xbbed296f,0xbcb0f0a9,0xbd0ed327,0xbd514f2e,0xbd2c110a,0xbd6ee4bd,0xbd62b3e1,0xbd5b81aa,0xbcf446b7,0xbb9a97ac,0x3c52408f,0x3c7762c9,0xbbc48b45,0x3a71e127,0xba978459,0x3b938258,0x3b217bbc,0x3b3491e9,0x3b915289,0x3cceee61,0x3cbe74af,0x3c2ce9cd,0x3c4f45bc,0x3c06fec4,0x3b207dc1, -0x3afe31fe,0x3bb0b48d,0x3c52c2d1,0x3a2a932c,0x3bbd568e,0x3c2dd875,0x3bad8eda,0xbc70e183,0xbd70ab28,0xbd276cf7,0xbcfbda07,0x3c7e47cf,0x3c34124d,0x3c3518c3,0xbc9ecd1a,0xbd050451,0x3cd3df4c,0x3d0497e3,0x3d54d468,0x3cf7a073,0x3d66634f,0x3cb171ef,0x3c3500f7,0xbc395255,0x3b167cd9, -0xbb2f7d19,0x3aa0e6b0,0xba40ee5c,0xbb862bd5,0xbad5acd6,0x39b1365c,0x3bf7bed4,0x3d0698e2,0x3c1dd180,0x3b21739c,0xbb7eda8b,0xb9858bd5,0xbbad1a30,0xbc475c87,0xbc639b05,0xbc629cae,0xbd083a45,0xbc97e9e5,0xbcbf4570,0xbd90f140,0xbd53eeee,0xbd5d3ad4,0x3c0ba258,0xbd6fbe4a,0xbd7b3346, -0xbd07da83,0x3bbb152d,0x3d37e541,0x3d5a5739,0x3d89a34d,0x3d60bb3a,0x3d840a6b,0x3cf2fc2f,0x3c96217b,0x3c1b2690,0x39fd5571,0xbb2dcf00,0x3a935797,0x3b16d8d0,0xbab3dd69,0x3b8df03a,0xbbc5dec6,0xb916e8ce,0x3d2b234d,0x3bfa01df,0xbb035d8b,0xbbedafc3,0xbc2e2b58,0xbc612bfd,0xbc43cbb3, -0xbbeaa2c9,0xbb8494c7,0xbcbc4089,0xbba4f984,0xbcbb6a64,0xbd811d41,0xbd9ab471,0xbd9a44a4,0x3bf34052,0xbd32fe80,0xbd0e42f3,0x3a916442,0x3cafe126,0x3cd7d4d6,0x3cab098a,0x3be9e420,0x3cb486ae,0x3ceb0315,0x3d149280,0x3d04f7ce,0x3cbcfb40,0x3b3169ad,0xba2b5a47,0x3be0d4bb,0x3b1343e4, -0x3bb58744,0x3c3a35f5,0x3c22e969,0x3c4f7373,0x3d02ef6d,0x3b6967a1,0xbb61dc16,0xbbf94eed,0xbc7a94a6,0xbcaa43cf,0xbc8b5e7f,0xbcd248cb,0xbcb4151a,0xbc94c82d,0x398a2dee,0xbc209eb5,0xbd11e0e1,0xbd5a2a0b,0xbd198048,0x3d30d140,0x3d40d2f5,0x3d8fc950,0x3d9e2241,0x3d474bd1,0x3c91b1c6, -0x3cc090ab,0x3cc255bb,0x3ca36ef9,0x3cc953f7,0x3c860823,0x3c41b7b2,0x3c605593,0x3cace435,0x3cd1ca4b,0x3ce91a94,0x3c9ef0ec,0x3c36b6e6,0x3c38f421,0x3c7537bc,0x3c5eea80,0x3c865e1b,0x3c11c95a,0x3b8fe1de,0xb9bbdc8f,0xbc39611b,0xbc651c8c,0xbcc01056,0xbd0c5779,0xbce7f598,0xbcb0a20d, -0xbb9b2419,0x3bbda379,0x3be6d55c,0x3d0b05db,0x3d158e00,0x3d8c8944,0x3cee6284,0x3ba67852,0xbc13a81f,0x3c01a883,0xbbc97e89,0xb988892f,0xb8fc4a89,0x3c088681,0x3c9b6efd,0x3cad47ac,0x3cba2e83,0x3ca61a47,0x3c5da207,0x3c5006ff,0x3c9fa22c,0x3c3aef0e,0x3c03f2be,0x3c074354,0x3c828ec5, -0x3ca1e673,0x3c841116,0x3c85a535,0x3c8ab6f1,0x3c1f1256,0x3c03af2e,0x3c3e28e8,0x3cc6bb9f,0x3d183a5e,0x3d29e390,0x3d368db3,0x3d0cb015,0x3cb0b12d,0xb9d7322d,0x3c6b8a33,0x3c978b23,0x3c77d3e0,0x3cadf2e6,0x3ca48baf,0x3b008318,0xbaeb7c88,0x3b834d2b,0x3b7d1773,0x3be77de9,0x3c2cef5e, -0x3c4ee08b,0x3c5928eb,0x3c685006,0x3c885834,0x3c5345a0,0x3c4128d9,0x3c5da8ae,0x3c339520,0x3c632c39,0x3c8091c4,0x3c6182b6,0x3c28af3f,0x3b31ca35,0x3bbd50c1,0x3bfe2cc4,0x3c04b9e9,0x3b9a1e55,0x3c1b5a53,0x3c2e20f2,0x3c9fd7ed,0x3c9a3f01,0x3c9899a7,0x3c7c63b1,0x3c61fe75,0x3c1e9176, -0x3c876e41,0x3c96afc5,0x3c87aa64,0x3c5b7b34,0x3bd3ef9a,0x3b4f8bf2,0x3adf2858,0x3c5ce34b,0x3c350419,0x3c2729fe,0x3c3c206b,0x3c3f848b,0x3c56de73,0x3c662073,0x3c760bb7,0x3c57dd39,0x3c3d7989,0x3beb75c2,0x3c540466,0x3c838045,0x3c8f4f7d,0x3c333a1c,0x3b9cd2fd,0x39ad3588,0x39c9a1d1, -0x3ac750bb,0xbb32c069,0xbb93893f,0x3a42aede,0x3abfd18b,0xbb78c3cf,0xbbe43e38,0xbbcf0422,0xbab8d2e4,0x3b486a38,0x3c1b7474,0x3c20d9b2,0x3c45a5f4,0x3c8ce828,0x3c7ed3e9,0x3c87ece4,0x3c858731,0x3c6d8f11,0x3c567176,0x3c75eb90,0x3c9cb974,0x3c84a41a,0x3c7989df,0x3c82fd57,0x3c5154b5, -0x3c6f9fab,0x3c54545b,0x3c817fd4,0x3c8ab0a7,0x3c705082,0x3c42f6ee,0x3c4e05aa,0x3c5820f0,0x3c624229,0x3c682b92,0x3c4b8d7f,0x3c2a43ff,0x3c28d45c,0x3c49ae11,0x3c29e98d,0x3c3aae9b,0x3c751bcd,0x3c926689,0x3c9f6b2b,0x3c83404c,0x3c607071,0x3c2ad69a,0x3c328ed8,0x3c209aad,0x3c0574f1, -0x3c1a6a05,0x3bf3a07e,0x3c15efdb,0x3c42852b,0x3c26c904,0x3c1edf59,0x3c1fe81a,0x3c232c10,0x3c2cb620,0x3c06bd16,0x3c12db8a,0x3c35f9b0,0x3c39d0b3,0x3c245a1b,0x3c1a35e3,0x3c253b13,0x3c33e07b,0x3c2d41bb,0x3c0dac03,0x3bfbf279,0x3bef631e,0x3be32051,0x3bde1c7f,0x3bd70443,0x3bd645bc, -0x3beb311e,0x3be664cb,0x3bbc9201,0x3ba3a18a,0x3bad0612,0x3bb98c69,0x3beed53d,0x3c096565,0x3c0e5c7c,0x3c103ad6,0x3c1bc60e,0x3c282627,0x3c254a89,0x3c3249cb,0x3c30b6d0,0x3c6ed4c5,0xb9730bbb,0xbb0a7f4b,0xba57579e,0xbb184031,0xbaecfcaa,0xbadf8356,0xb9900e07,0x3a22ee17,0x3aea2172, -0x3a890984,0x3a0471d6,0xb9905ae8,0x39038db1,0x3a69700f,0x3af6f089,0x3a90feb0,0x3a943a13,0x3b02ecab,0x3ad73e90,0x3a8d3806,0x39e407dc,0xb902b428,0xba105107,0xba19ec1d,0xb9dbb8aa,0xba395e1c,0xbacf969c,0xbaa9f4c3,0xbabdb952,0xba87ef13,0xbaa7b4b3,0xba25523d,0x3a49dd72,0xb9ea8595, -0xba0b867f,0xb93169cb,0xbaeff62a,0xbbc82418,0x3b271a95,0x39e2c290,0xb91a2117,0xbb5dfc01,0x3ac9c88c,0x3b3cb9a8,0x3b864b65,0x3ae02278,0x39a057c6,0xba954bbd,0xba8749d4,0xb8387863,0x3b821f5c,0x3b8fa4a5,0x3b9565d4,0x3ba3c650,0x3bb1d6a5,0x3ba7a5ce,0x3b4fa220,0x3a415293,0xb995319b, -0x39d5d04e,0x3860ab39,0xba55a026,0xbb6c2cac,0xbb685323,0xbb10ea9f,0x3a90bd1f,0xba779a6b,0x386a9883,0x3b7f453c,0xba82893d,0xbb689cc0,0xbb2acd5e,0xbc0c22c2,0xbc52c3ea,0xbac4b561,0xbbd624be,0xbba35bda,0xbc1bb312,0x3ae80cb7,0x3bc0352d,0x3be8e36f,0x3b68166b,0x394355a9,0xbb10e9ed, -0xbb221deb,0x3a9169f9,0x3befe254,0x3c02949a,0x3c167572,0x3c1657ca,0x3c2d3bc4,0x3c1061f1,0x3bbe50c4,0x3a80a541,0xba6e4e80,0xba01a09e,0xb972eb1b,0xbae095b4,0xbbeb2ddb,0xbbbc5263,0xbbbda614,0xbb1e2524,0xbb884333,0xb97fa82f,0x3be9e87e,0xbb05fb72,0xbb5ce915,0xba25e65e,0xbc53b9cf, -0xbc9be08c,0x3be44766,0x3b82c917,0x3b4f8b07,0xbc16eb4f,0x3babbcd2,0x3c0dcab0,0x3c55a16e,0x3bb06b66,0x3a8db355,0xbadd837f,0xba238fd6,0x3b65f094,0x3c6ee7ae,0x3c490081,0x3c6ac1cb,0x3c785928,0x3c924c0a,0x3c6acf3f,0x3c34a28c,0x3b78bd98,0x39cc705b,0x3b3f9390,0x3aeae977,0x3a1aea9a, -0xbc14a25c,0xbc048d97,0xbb9d031d,0x3ba4ab25,0xbaa74ffe,0x3b2fefa2,0x3c4e9e3b,0xbb165179,0xbc1c820c,0xbb8d80e7,0xbcc17085,0xbd0a4c8c,0xbc012c75,0xbc1e124b,0xbc2a8b04,0xbc8d272b,0x3c0d2f59,0x3c53b592,0x3c73efa6,0x3beaf797,0x3add9527,0xb63890bf,0x3bb520a7,0x3c175b25,0x3ca1f904, -0x3c74b5de,0x3c8c970f,0x3c9ac607,0x3cac3fe5,0x3c7d11d9,0x3c2defe7,0x3b8956b1,0xba95d775,0x3aae4708,0x399da094,0xbb1d1374,0xbc303221,0xbc18804c,0xbc0a2732,0xbbb543a3,0xbc1150a6,0x39e63a8a,0x3c6edeaa,0xbb845ee2,0xbbc52bac,0x3bcd2dcd,0xbce0f402,0xbcd6309e,0xbd33cc55,0x3c8b41be, -0x3cc91c28,0xbc5dcef0,0xbc0f6f9d,0xbc145d0d,0x3b5f3127,0xbc079352,0xb9dabfdf,0x3bebbfa6,0xb972bd4f,0x3b87894b,0x3cb57c79,0x3c166004,0x3c0f106a,0x3c43b3ba,0x3bc448b4,0x391f2957,0x3b5795ad,0x3a367fec,0xbac52a18,0xbc30cc07,0x3c407939,0x3c23afa6,0x3afcd974,0xbcd0e387,0xbcbad8a2, -0xbc0e7e68,0x3d0e1d7a,0x3ce9c6f1,0xbce8506e,0xbcb2ec6a,0xbd394beb,0xbd996989,0xbd478438,0xbcae1181,0xbd5c8358,0xbd5117fd,0xbcf7badf,0x3a5e96a1,0x3bac07b0,0x3c0e1d87,0xbb871c08,0x3b1e9f50,0x3a782096,0x3b3efc60,0x3afaa9f5,0x3b1427ac,0x3baf32c3,0x3c5de5f4,0x3c545109,0x3c927868, -0x3c306ab7,0x3bfcc6fc,0xbafb37b0,0xbac99133,0xb9a6b8c0,0xb9abece9,0xbc72f03d,0xbc9e5cbf,0xbc9f89a5,0xbd10a557,0xbd27a908,0xbd44d9a2,0xbce17341,0xbad9bcba,0x3cdc60b4,0x3b6f3c4b,0x3c9bb671,0x3d399309,0x3c1c4ef1,0xbc1a3dbf,0xba760b24,0x3d08ca47,0x3cca2498,0x3d0b3abc,0x3bd1102c, -0xbb432c15,0xbbd86035,0xba9634de,0xbad4ca8a,0x3b4a1708,0x3b459b8a,0xbb3fc506,0x3bf82536,0xbaf629cd,0x3b9deeee,0x3d1f330d,0x3c75896d,0x3bc78ff4,0xbb4f0ee2,0xbba6580d,0xbbe7fa73,0xbb9e3076,0xbb192978,0xba44b213,0xba918821,0xbc92b7bb,0xbcc79b84,0xbd1e480f,0xbca02ec9,0xbcc2e768, -0xbc9123bb,0xbd696493,0xbd9f3abe,0xbdbc175e,0xbd2abd23,0x3c6c51d4,0x3ce5a0c4,0x3d6a3b41,0x3d422561,0x3d4f3370,0x3ca3fe5b,0x3c084433,0x3c0bc01b,0x3a59a89e,0x3a80b98a,0x3b180f35,0x3b5629f4,0xbb6c5a69,0x3be9f7cc,0xbc0da00a,0xbb2f83f3,0x3d130d9a,0x3b9e9e9b,0xbb8ff795,0xbbe8192a, -0xbc388e40,0xbc4e4006,0xbc2aba54,0xbbea8133,0xbbb6c509,0xbc4296d4,0xbc9530c0,0xbcb7a768,0xbd5040be,0xbd08ee7e,0xbd309087,0xbd12e504,0xbd372a00,0xbd4ca01d,0xbd71e126,0xbc2d3640,0x3da247da,0x3d429d54,0x3cda2e4f,0x3cfea1f5,0x3d2d48c3,0x3d0cf8ac,0x3cfbfb9d,0x3c9b24dc,0x3bbe814b, -0x3a18a8cf,0x3b2c2269,0x3b236906,0x3b616114,0x3c1d0aec,0x3b9f9930,0x3baf51fe,0x3ccf0c00,0xbb982ec7,0xbc4b71fe,0xbc6406af,0xbc75af80,0xbc844c00,0xbc6598df,0xbc837ab6,0xbc5aa03a,0x3b3872ee,0x3c8aad73,0x3c466664,0xbccb5f16,0xbce99fca,0xbcdf7366,0x3beaf13d,0x3cd83fb4,0x3d750ecb, -0x3db0ccd7,0x3dbf7dc4,0xbb31b95b,0x3bd653b3,0x3c8a9814,0x3c733025,0x3cb0e9e6,0x3c867364,0x3c88bd3a,0x3cdca275,0x3cbdb9a8,0x3cdb0c26,0x3ca7d74d,0x3cbc9cbf,0x3c80bed5,0x3ba2a578,0x3c09b570,0x3c21ef68,0x3c9c555f,0x3bf42a46,0xba7bb096,0xbc0e1288,0xbc7dcd9e,0xbcb04333,0xbd0ad81b, -0xbcaffbc2,0xbc96fd00,0xbc7fafb1,0xbd0e3eaa,0xbcfef17c,0xbd0965fa,0x3cf7faf0,0x3d505ed7,0x3d9c0894,0x3d5d1e84,0x3ccb50ea,0xbb8da1f4,0xb90e8b3d,0x3c7b6b26,0x3c60abc3,0x3c5334cf,0x3c874553,0x3cca77da,0x3cab282c,0x3c9d06f9,0x3c6928ba,0x3c12352c,0x3c0f3313,0x3c12d7d4,0x3c20bfb4, -0x3c2b526b,0x3c8319c6,0x3c9792a6,0x3c887a0d,0x3c248978,0x3c439573,0x3c37453c,0x3c5125a1,0x3c7dd113,0x3c9e60c7,0x3d03ef4c,0x3cede216,0x3cecc95e,0x3d13d34e,0x3cf13941,0x3d03d1df,0x3d15d917,0x3d071c99,0x3d012f14,0x3d0b1122,0x3c8c650c,0x3c965f01,0x3ca40b86,0x3c88a41d,0x3a8006d4, -0x3a58842c,0x3c1770ac,0x3c403003,0x3c4af67f,0x3c511b4c,0x3c56fef2,0x3c6391fb,0x3c4760a5,0x3c37f2e3,0x3c4ddfcf,0x3c34a8eb,0x3c4954fa,0x3c4a203f,0x3c4df7b7,0x3c31bd2a,0x3bff763c,0x3b8d737c,0x3b6dba62,0x3a70615a,0x3bb65fcd,0x3b70548b,0x3b6e375e,0x3c1fb15c,0x3c0c80c7,0x3c305de5, -0x3bde8856,0x3be4ce27,0x3c5f526f,0x3c8e1ceb,0x3c91196b,0x3c854108,0x3bba2c52,0xba113c3d,0xbabbe26c,0xbbd683cd,0x3bc25065,0x3be0451b,0x3c081346,0x3bedd720,0x3c19f10a,0x3c1af95e,0x3c3844f3,0x3c4c4da0,0x3c549381,0x3c5592dc,0x3c55105f,0x3c3cd14e,0x3c38a7a1,0x3c1f2bfd,0x3c08c13d, -0x3bdb332c,0x3c01bd37,0x3b6a8165,0xbbed4479,0xbbdd5446,0xbbb897d3,0xbb9d7c4b,0xbbf4263a,0xbc15a4e9,0xbc1ad1dc,0xbbe46555,0x3a2f086b,0x3b698e71,0x3b9308a7,0x3b9c7a2c,0x3b8694aa,0x3bb2b460,0x3bfc587f,0x3c11a6cd,0x3baa237a,0x3c0b215b,0x3c5cb779,0x3c6d0c78,0x3c6a88f0,0x3c666de5, -0x3c47b96b,0x3c40f012,0x3c215c35,0x3c17af56,0x3c17f6ad,0x3c2f042c,0x3c3fd84d,0x3c54113f,0x3c60e705,0x3c7f9322,0x3c73071f,0x3c605d90,0x3c37bf14,0x3c48eea8,0x3c6c7498,0x3c66b4b2,0x3c722731,0x3c5dd74e,0x3c877ffc,0x3c90b44b,0x3c9ac39c,0x3ca7201f,0x3c642093,0x3c571146,0x3c4c84f4, -0x3c459805,0x3c48e06a,0x3c318d6a,0x3c243a59,0x3c116aed,0x3c3b3f82,0x3c484dab,0x3c4926ba,0x3c4cd46c,0x3c327cde,0x3c1b1f97,0x3c0a1a5b,0x3c36ce24,0x3c272391,0x3c18be11,0x3c209963,0x3c1d0a2d,0x3c1946f4,0x3c195029,0x3c17ea91,0x3c1479db,0x3c1524a3,0x3c2476e4,0x3c00ef91,0x3c0197bf, -0x3c00ebac,0x3c0098f5,0x3c04d2cf,0x3c04e47e,0x3becec15,0x3bd2fe25,0x3bd13a1d,0x3be9b23a,0x3bfca265,0x3c185602,0x3c15e50f,0x3c17e344,0x3c2093c6,0x3c279edd,0x3c40b907,0x3c42c88f,0x3c4927d0,0x3c4bca8a,0x3cadbb33,0xb9af8632,0xba90fa11,0xb9c7ea2f,0xba155e78,0xba1f9b02,0xbac2d31c, -0x3a3e11a9,0x3a75ff72,0x3a752bfd,0x39b268e9,0xb8f57e92,0xba44e9d8,0xb9e5a253,0xb827785f,0x3a09fb18,0x3a683be3,0x3aa8d3d3,0x3aaa3109,0x3abe4260,0x3a86d1c6,0x39f9b5e7,0xb74adb49,0xb9cd4a07,0xba27d1d0,0xba0335ce,0xba318fef,0xba9ed72d,0xba967223,0xba830968,0xb9feaf98,0xb61dafbf, -0x3847229f,0x398c0ca3,0xba9b36a5,0xba7f4a9e,0x39dc65a3,0xba67177d,0xbb93ba97,0x3a481806,0xba19aa6e,0xbaa7ad0f,0xbb6d5d1c,0x3b263798,0x3b6cd3e6,0x3b4b87b3,0x3b092e64,0x3a0f2b87,0xbaa921e1,0xba9138d8,0xb9bde850,0x3b28cebc,0x3b710d73,0x3b8edaa1,0x3b9e42b9,0x3b9eae42,0x3b9ae37b, -0x3b73c3da,0x39b3580b,0xbaa1e18e,0xbae79755,0xbad6bbd1,0xbb122ccc,0xbb7dca10,0xbb666c85,0xbb3c7ef5,0xbb100b72,0xbad67b4e,0xbab6a85f,0xb89f6dae,0xbbc048fb,0xbbffd955,0xbb3a4da3,0xbbd7f659,0xbc00754d,0xbb43cd97,0xbba2456d,0xbb892a87,0xbbef8d62,0x3b74ac32,0x3be7a754,0x3bc9f153, -0x3b562026,0xb8d98d2f,0xbaf3a137,0xbb31044e,0x3841d9cf,0x3b934b82,0x3bdacae7,0x3c0f4f95,0x3c1eaa53,0x3c23285d,0x3c00128e,0x3bd91a0e,0x39ee23d9,0xbae2f6d9,0xbb3d9842,0xbb3d29c4,0xbb7ff9b8,0xbc085ba1,0xbbf0d7bb,0xbbb5f2ae,0xbb8d9384,0x38d724b7,0xb9b3d803,0xbab4f166,0xbc1ea846, -0xbc2d5f7e,0xbaed8a69,0xbbec875e,0xbc5e1f08,0xba97aba7,0xbc078d8b,0xbc03a230,0xbc4387ae,0x3ba0e014,0x3c25015f,0x3c272dfe,0x3be4f4e4,0x3a9b0302,0xbb195a1b,0xbad2ef6d,0x3ae80c22,0x3c430c0f,0x3c3d77a9,0x3c601e57,0x3c8037ce,0x3c8fd829,0x3c76f89f,0x3c54b4b4,0x3ac2a407,0xbb705221, -0xbb89151e,0xbbb2d095,0xbbfd159b,0xbc710303,0xbc2efef6,0xbc074626,0xbbfcb45a,0xbb8ba631,0xbba5d6c6,0xbaf535f7,0xbc9b1d51,0xbccca6c5,0xbc087832,0xbc967e95,0xbc7191c5,0xbc60d740,0xbca655a0,0xbca489e0,0xbcb92e71,0x3bb20fa5,0x3c2e0d3d,0x3c50bd8a,0x3bca51c5,0x3a0cf97b,0xba02af24, -0x3b317aa1,0x3bf290c6,0x3c8c2c10,0x3c4beba1,0x3c810a7f,0x3cbb0f73,0x3cb5b354,0x3c8faec2,0x3c691c7e,0xb98abb7b,0xbb922b9b,0xbbc874c7,0xbbd0be92,0xbc16d725,0xbc9fa636,0xbc7de8dc,0xbc3c2559,0xbc326c7b,0x37be63c6,0xba8e34ce,0xbb9c29c3,0xbca915c3,0xbcaa0adf,0xbb6283e7,0xbc6f212e, -0xbd06d5c3,0xbd2ffaa4,0x3c90cba8,0x3d034f33,0xbbe8391d,0xbb22c57f,0x3a1c3022,0x3c4c84a3,0xbc05c680,0xbc2c2292,0x3bee2f64,0xbb051cd1,0x3b21cfd2,0x3c82947e,0x3c7ac3be,0x3c8504dc,0x3c091655,0x3c181e88,0x3c261536,0x3c5ee566,0x3c4345e4,0x3ba325b8,0x3b437bb8,0xbbbb1ab2,0xbc931f20, -0xbcd0d2ff,0xbce80a55,0xbc58216b,0xbbff8fc5,0x3cd0aa38,0x3cc0cbcb,0xbc96b0f5,0xbcac4ef6,0xbd317f98,0xbd820ea2,0xbd269e79,0x397764ce,0xbd2221d6,0xbd161977,0xbcb8ea75,0x3c6e431e,0xbb5c3cbd,0xbc1eb519,0xbba5a28f,0xbbf1c2b4,0xbba43d91,0xbaa3ee53,0xba789caa,0xb8722953,0x3b3b2a81, -0x3b7c7c28,0x3bd37991,0x3cd476d5,0x3c539424,0x3b7d8014,0xbbaad24b,0xbb6ea9c3,0xbbc1f570,0xbb86e58d,0xba578524,0xbbbef38f,0xbc8a8f50,0xbcd66695,0xbcde2006,0xbc935c2b,0x399bcc00,0xbb8c9a55,0xbcc466ee,0xbc9ceed2,0x3b900058,0x3cd8c2bf,0x3c2b614f,0xbd665c85,0xbd019b32,0x3c27b709, -0x3c42c180,0x3c622136,0xbbaa269b,0xbc1efb87,0xba38e0bd,0xbb66ce92,0xbb361418,0xbac2f29c,0x3b375aa2,0xbb106635,0x3b8ec567,0xbb9e93f7,0x3b3495b3,0x3cf880c2,0x3c525efa,0x3c08c505,0x3b822db7,0x3bc349e8,0x3c05ff36,0x3bfdbf95,0x3c7f0c96,0x3c5f9142,0x3c4d2b71,0xbcbd362f,0xbcfff16e, -0xbd16a1ba,0xbb30df0e,0xbb3a2191,0xbcda2654,0xbd16a62c,0xbd6ef4f0,0xbdbaa054,0xbd8b41f5,0xbc74a0b6,0xb9444e4b,0x3d09e7d7,0x3ce6a47a,0x3cf3b747,0x3c57bfd1,0x3bbe44e7,0x3c157039,0x3b90a9b1,0x3b90c590,0x3a6ecd08,0x3b321100,0xbb85a40a,0x3bf3a791,0xbb99431b,0x3ae0a7f2,0x3cd84696, -0x3c33ffc8,0x3b53138b,0xbb5cb743,0xbac40573,0xbb91f46b,0xbc0695b8,0xbb838ac0,0xbb59631c,0x3c5261ba,0xbcaa3fc9,0xbce9e39e,0xbd22fa6c,0xbc282425,0xbc184f04,0xbd2aabe7,0xbca7f03c,0xbd16b4d7,0xbd7d543c,0xbcb181c2,0x3deb509c,0x3d98c5c3,0x3d4edfca,0x3d3063c2,0x3d4ab7e0,0x3d0b31ea, -0x3ce2652f,0x3c9639e3,0x3c2f47f0,0x3ba0480d,0x3adf2a8a,0x3aa6e4df,0x3ac5df88,0x3c41514c,0x3be557cb,0x3bb9918c,0x3c95dd85,0x39e99d47,0xbbddd8a6,0xbc168268,0xbc3ecd07,0xbc36f840,0xbc345a2f,0x3b596204,0xb9a4bdd5,0x3af47882,0xbcd5def2,0xbcff0164,0xbd07d3ae,0xbc2d2cc3,0xbbf83b95, -0xbceb2e43,0x3b980a28,0x3d2416ed,0x3da2c6ff,0x3dedf8b2,0xbc9e1c39,0xbb5c986a,0x3b7c2643,0x3c247618,0x3c9f1c8a,0x3c8e9b0a,0x3ca6fef8,0x3d01dc0d,0x3cbe3ee2,0x3cc26d00,0x3c83de8e,0x3cd1cfd5,0x3c8a9f12,0x3a73f91a,0x3b866c69,0x3c0b49da,0x3ca92f32,0x3c1a5f14,0x3b2f17f6,0xbbb4a012, -0xbad139bd,0xbbe0c12f,0xbcbfdbf0,0xbc98454f,0xbd049c54,0xbce8a2d3,0xbd6f34bf,0xbd3cca0b,0xbce80340,0x3c4fefac,0x3d1f3bc7,0x3d800af5,0x3d8bb4fa,0x3d534b00,0x3cc59f5a,0xbb977df4,0x3cfb9ff9,0x3ce00d9b,0x3ce4d6bc,0x3ce13193,0x3ce4d06c,0x3c9e65c2,0x3c6fa42d,0x3c5d15ca,0x3bc67dad, -0x3b6b7c6f,0x3997585f,0x3c1503b8,0x3c7784b3,0x3c95aa53,0x3c8b6f19,0x3c55ac73,0x3c3cef98,0x3c27b8a6,0x3c337eef,0x3c6b39a4,0x3c5d9688,0x3c60e2b1,0x3c5a69ac,0x3c68037a,0x3c8549ed,0x3c35f604,0x3c8f7e0b,0x3cebbf7e,0x3d2f0c0a,0x3d2cc04c,0x3d179906,0x3d11ab79,0x3c98f792,0x3c635af2, -0x3c85e690,0x3cfed972,0x3ba87848,0x3b7f1280,0x3c4896cc,0x3c808257,0x3c87f4dc,0x3c83472a,0x3c7ad4ea,0x3c76e54c,0x3c56e9f0,0x3c3a0082,0x3c20c124,0x3c2bbb7e,0x3c308eb9,0x3c2da2de,0x3c472994,0x3c4fcbde,0x3c7bca13,0x3c5067b1,0x3c391e16,0x3c259751,0x3c5fd0ce,0x3c3592b4,0x3c1bc6b4, -0x3c22c990,0x3c1abdb0,0x3bf6f7fd,0x3c399ec5,0x3c62ff73,0x3cb7b557,0x3cacc6f6,0x3c9526be,0x3c96689c,0x3c0ad5a2,0xb9589efd,0xbb7d2fdd,0xbb80467e,0x3b99033c,0x3bb37e2d,0x3bb9ca92,0x3c1f1b38,0x3c6bafd6,0x3c5c5f94,0x3c708f3f,0x3c7898e0,0x3c772dbd,0x3c60366d,0x3c719686,0x3c1a913a, -0x3bfcc2e9,0x3ba689e6,0x3c0dcce7,0x3c36b3a8,0x3c77bbe3,0x3c5670e2,0x3c0360be,0x3c2ce5ac,0x3c356c13,0x3c0b8f4c,0x3c00512e,0x3bd27da9,0x3bd1aeb6,0x3bd6c73a,0x3bf8106d,0x3bf4bd97,0x3ba107da,0x3ba719ac,0x3b8cf38f,0x3b905848,0x3b8d7c3f,0x3bd79791,0x3b919af1,0x3bb9d318,0x3c713eb2, -0x3c662b4c,0x3c7e8fa7,0x3c52e5e0,0x3c2b01be,0x3c26aa98,0x3c16164f,0x3c08a64e,0x3c0a429b,0x3c161aa5,0x3c1ca7f5,0x3c3e155b,0x3c55219d,0x3c693c3a,0x3c3a7df6,0x3c18ba00,0x3bd8af6c,0x3bd4ec2b,0x3bdb17c5,0x3c062f00,0x3bf94ab4,0x3c121a72,0x3c1e544e,0x3c28138b,0x3c2b4618,0x3c24f0ce, -0x3c32578f,0x3c466a93,0x3c79e392,0x3c8978de,0x3c95dd04,0x3ca1d62c,0x3c94f8f3,0x3c789ade,0x3c796151,0x3c7d04c8,0x3c3086f6,0x3c2cd6cb,0x3c48e910,0x3c55144d,0x3c5c92a2,0x3c540767,0x3c628a7e,0x3c6836be,0x3c6b12aa,0x3c6c7afb,0x3c695a82,0x3c631010,0x3c5ad3bf,0x3c5c71f2,0x3c4a188e, -0x3c487bd1,0x3c676f90,0x3c5f2cd6,0x3c4d11ca,0x3c38c0f0,0x3c34ba07,0x3c31b294,0x3c2951a8,0x3c26e15c,0x3c24f398,0x3c2455a9,0x3c2c291f,0x3c27b1c3,0x3c1cfb22,0x3c183e35,0x3c1ae9e0,0x3c1c793b,0x3c28a099,0x3c304586,0x3c3746ae,0x3c34e93e,0x3ca530d6,0xba80e092,0xbadb1cf3,0xba3f7842, -0xb98337cc,0xb9aa332c,0xba91b437,0x39e64b01,0x3a19ecd4,0x398e82f1,0xb962745e,0xba2a9c5e,0xba901291,0xba38150a,0xb9f5ff6f,0xb9984e75,0x38d55fa2,0x3a139585,0x3a91d0b0,0x39de5952,0xb8d76dc1,0xb9b58be0,0xba06b329,0xba550a31,0xba8a2ea1,0xba832c5d,0xba9fedef,0xbad9e037,0xba8c8a6a, -0xba8a0b68,0xbaa3b16d,0xba83d388,0xba5f39b3,0xba9d6ac4,0xbac2b616,0xbab44351,0xba201bac,0xbaaf8c96,0xbbb20002,0xba8db48b,0xbb1e087e,0xba81bc78,0xbb549920,0x3b4672b9,0x3b815d2e,0x3b1efd59,0x3b262ea1,0x39e52a1a,0xbb0c8de9,0xbb16333c,0xbabcfc61,0x3ab3dbb2,0x3b5a4f47,0x3b822c8a, -0x3b851a19,0x3b4d13ef,0x3b460734,0x3ac922cd,0xba4821a3,0xbb00f9da,0xbb384e23,0xbb04b065,0xbad58afe,0xbb2c1f66,0xba4fdc31,0xb9105b3e,0xbaaa586b,0xba906a0b,0xbaa3a945,0xbb24825c,0xbb3afe81,0xbb83f262,0xbb8de187,0xbbf35f04,0xbbe07818,0xbac7a376,0xba1eb008,0x3aeb6798,0xbba82f73, -0x3bda0938,0x3c0c8f4b,0x3baa62a7,0x3b532742,0xb8b728e6,0xbb3c1df2,0xbb7748a9,0xba86b919,0x3b214fa0,0x3bcebc58,0x3c0f90c0,0x3c0b8deb,0x3bf40395,0x3ba7ea49,0x3b819383,0xba58084f,0xbb0422e2,0xbb74a6c4,0xbb538140,0xbb710c55,0xbbcf34bc,0xbb0b9141,0xbaf53b3a,0xbba0ca40,0xbb0dbfed, -0xbb09eb73,0xbba41666,0xbbbf1479,0xbbb2cf83,0xbb8cf3d5,0xbc053e5f,0xbc42db32,0x3b8943e3,0xbb691bf5,0xbad355cc,0xbbf1d77e,0x3c09bef5,0x3c540457,0x3c2162ff,0x3c17cf04,0x3b1824d3,0xbb734f6b,0xbb86f0b5,0xb9da50e0,0x3c2338aa,0x3c506e35,0x3c6edcf7,0x3c60153f,0x3c6d42eb,0x3c462950, -0x3c12f52a,0xb9d83216,0xbb5b2084,0xbbd34776,0xbb9a55ac,0xbb95a7cc,0xbbd5b220,0xbae99697,0x39f32d4d,0xbb8c6469,0xbb1584c9,0xbb0ed5a9,0xbbfa6af7,0xbbc8ba77,0xbc0c5128,0xbc419690,0xbc8eeb9c,0xbbd06356,0x3bd25d14,0xbad34c99,0x3b8ef3b4,0xbc3073a4,0x3c530675,0x3c574388,0x3c6ce27b, -0x3be24f96,0xb9c3b361,0xbafa7ca3,0xb99388c3,0x3bcc7cd8,0x3c758edd,0x3c6523b3,0x3c85e9cd,0x3ca52363,0x3c958e8c,0x3c8844a6,0x3c376d18,0x3a77c645,0xbb13c5d0,0xbbcc2b92,0xbba5f97b,0xbbe4457f,0xbc4dde68,0xbba803b6,0xbb92b5c6,0xbc5a258b,0xbb6cea40,0xbb66c929,0xbc1e3765,0xbc250004, -0xbbe6c272,0xbba6dd1c,0xbc4e797b,0xbd4d8545,0xbd29db6f,0xb9df0746,0x3c852d30,0xbb46c49f,0x3be6b87d,0x3c1c9e14,0x3c41eb3e,0xbb959b05,0xbc1a4c37,0x3ab43f18,0xbb7abb33,0x3a96dc6c,0x3c2b9eb8,0x3c9a0878,0x3cafd232,0x3c1233bd,0x3c510a0c,0x3c5540bd,0x3b9d57a9,0xbb6ab8f9,0xbbcae688, -0xba9e0682,0xbc45d03a,0xbc62d19c,0xbcdeb04c,0xbb888214,0x3aa80287,0x3c5e6ba0,0x3c57fd6e,0x3b41cb73,0xbbc38330,0xbd00cd76,0xbd400fda,0xbd433ef7,0xbd566786,0x3c47a599,0xbd0021e8,0xbcbc093f,0xbc737bea,0x3cb255a3,0xbba31a23,0xbc669cfa,0xbc7873fb,0xbc1468de,0xbbc6f4db,0xbbbe7a4a, -0x3a3e0e43,0x3a169319,0x3ac9f55a,0x3a3e0382,0x3b836653,0x3cc569a4,0x3c494f25,0x3bad4291,0x3b454cfa,0x3ba80101,0x3b6848b0,0x3b3bad55,0x3c3c35e6,0x3b70f83d,0xbcca8e34,0xbca56e58,0xbc8638f1,0xbc976736,0x3c27fc03,0x3c5425d2,0xbc4c8db0,0xbb1671dd,0x3baf170a,0x3c3782b1,0x3c79cbb6, -0xbd93acfa,0xbd746723,0xbcd7611f,0xbbfc9229,0xbbfa5503,0xbc41697c,0xbc7940cb,0xbb36f3b3,0xbb99ba97,0xbb562d8f,0xbbd23955,0xba42c47b,0xbb9fe13e,0xbaa365ba,0xbbe0544c,0x394aa394,0x3cb6f39d,0x3c567b68,0x3c56f65b,0x3bce632a,0x3be2bd49,0x3c003cea,0x3bbfa129,0x3bfa3485,0x3a473a7c, -0xbc66c365,0xbc9718e2,0xbca94d27,0xbcc27e81,0xbbf75652,0xbb4d9ff8,0xbc95f9e6,0xbca6a824,0xbd189ef3,0xbd6c4235,0xbd9b734f,0xbd0eb47e,0xbbcbdbd2,0x3c5772bb,0x3c8a4e97,0x3c6c3d5a,0x3bec61ce,0x3b8be483,0x3befe46f,0x3ba59bbb,0x3b90ecd3,0xbb0bdb3e,0xb9a6c51b,0xbb637993,0x3b33a5ac, -0xba0f9d0c,0x3b7e911f,0x3c8a33d4,0x3c809686,0x3c2f36fa,0xb941499e,0x3b3e5809,0x3b955100,0xbb38f66e,0x3c2b16ec,0x3bd49256,0xbafd1e5a,0xbcb36775,0xbcf97881,0xbcee663b,0xbbccc784,0xba90517e,0xbcdfe1a8,0xbcdde377,0xbd231b8b,0xbd131ec0,0xbd2b84ee,0x3dde10da,0x3dca79e9,0x3d9d3d1b, -0x3d77c23c,0x3d6865fd,0x3d22b1ed,0x3ce99993,0x3c4780a6,0x3c30eeb9,0x3bb6a6db,0x3aa39042,0x3b163e18,0x3b3d45c9,0x3bb4da6f,0x3bb48704,0x3bd159c0,0x3c71ff6f,0x3c27b029,0x3bc67f6b,0xbb7a3411,0xb8876a2f,0x3b0e74fd,0xbb18b615,0x3beef1af,0xbbd99d3c,0xbcb4cc25,0xbd5f04e9,0xbd5733fb, -0xbd23d706,0xbbb24eee,0xbb5f8608,0xbcef9f84,0xbd04877a,0xbc2e51a8,0x3d487611,0x3db64d94,0xbc41e09d,0x3a648706,0x3b4cb5be,0x3c830754,0x3ca67cbd,0x3c9ccc2a,0x3ca10a30,0x3cc3bc12,0x3caadedc,0x3ca3da48,0x3c5a882d,0x3c99c576,0x3c40a3f2,0x3baa021b,0x3affd998,0x3b9ce6d7,0x3c89e85e, -0x3bfe929b,0x3b68aad9,0xbb157921,0xbbb77c89,0xbc295614,0xbc8feee3,0xbd024c3f,0xbd335e74,0xbd220b9f,0xbd7f87ac,0xbd4ed647,0xbcc44d82,0xbc22ad39,0x3c4dcdf5,0x3d3b8eb9,0x3d844ec2,0x3d800bf7,0x3d5e2490,0x3c57e6c6,0x3cce8632,0x3cda6bff,0x3cf6b946,0x3cdcece6,0x3cd2755b,0x3c8c17cb, -0x3c5fbe14,0x3c66d3cd,0x3bfd9757,0x3b4e5888,0x3b657766,0x3bcc3adb,0x3c3c357d,0x3c420997,0x3c721c51,0x3c4b211f,0x3c6aad7e,0x3bdd903b,0x3c016905,0x3b62ae88,0xbb28dae9,0xbb5f1e90,0xbc4bd483,0x39c77bcc,0x3b8a3c58,0xbb6ac19b,0x3c4e733d,0x3ccc6486,0x3cfd351e,0x3d27f1e2,0x3d1e5619, -0x3cf0492f,0x3c8cee0a,0x3c74b3e3,0x3c5c57b1,0x3cd307ce,0x3bbc0a96,0x3c1614e8,0x3c46b842,0x3c81d9b3,0x3c84d41a,0x3c88581c,0x3c8466f2,0x3c8c02aa,0x3c68d56f,0x3c614c14,0x3c3dba9f,0x3c3e8822,0x3c200f2a,0x3c2ff9a1,0x3c4bc1ce,0x3c6d07a8,0x3c95aaa9,0x3c61f12e,0x3c5269eb,0x3c399f7a, -0x3c331d3c,0x3c476fd1,0x3c37e43e,0x3c20282e,0x3c351c7d,0x3c15051f,0x3c9dd83d,0x3cce80fe,0x3cf190f9,0x3cd092c1,0x3c9e9c8e,0x3c69845c,0x3c3a65dc,0x3bde20e5,0x3a1f795e,0x3a65b76f,0x3c45dfad,0x3c4ad9eb,0x3c380498,0x3c6432ed,0x3c9167c7,0x3c896c61,0x3c863cff,0x3c80e0d5,0x3c6ccea1, -0x3c64cc6f,0x3c37fd04,0x3c420ec3,0x3c1d0839,0x3c0ed57f,0x3c26bb9a,0x3c549789,0x3c75dab2,0x3c83ab0b,0x3c8c12f8,0x3c7bdc2c,0x3c97b1b2,0x3c935ebe,0x3cbb32d9,0x3ca6279f,0x3c984325,0x3c6d62ef,0x3c3fb3e6,0x3c2150a9,0x3c3be9ad,0x3bf37045,0x3b791e93,0x3a5842ac,0x3aa69a21,0x3b8963f7, -0x3bcae1e8,0x3c26784d,0x3bcd404d,0x3bb6a113,0x3c27e4b0,0x3bdb2144,0x3b9d94ed,0x3bc3c6ce,0x3ba0b895,0x3bec3110,0x3bb1b41d,0x3bdc807d,0x3be72604,0x3bd7f6e5,0x3be9f957,0x3beeb840,0x3be67298,0x3be92f13,0x3be20835,0x3bea92d2,0x3b9cc912,0x3c4c8d21,0x3c11273a,0x3be9d80d,0x3b14f834, -0x3a943272,0xb7fa6f41,0xbb12f2d5,0x3bb1852d,0x3bfc92a7,0x3c2628bc,0x3c499292,0x3c821c20,0x3c8fede4,0x3c83d17a,0x3c5748c0,0x3c29fb7e,0x3c08d4d0,0x3bed3bc0,0x3bd2ba4c,0x3c019e20,0x3c1e6730,0x3c40dd92,0x3c08d2b0,0x3c1e90ac,0x3c46c117,0x3c45b055,0x3c39a8f2,0x3c331279,0x3c30a5a3, -0x3c2c0a45,0x3c2851b6,0x3c08697e,0x3c0442e1,0x3c3b19e8,0x3c3058e2,0x3c295c8a,0x3c2feef6,0x3c183238,0x3c234e49,0x3c2c3d4c,0x3c2ae8de,0x3c1bd3ec,0x3c0001ed,0x3be74d2d,0x3bb6ea07,0x3ba3c646,0x3b92351d,0x3b858b7e,0x3b7136f8,0x3b87cc39,0x3ba795ce,0x3bcbffa8,0x3be6d74e,0x3c2b7985, -0x3a97f818,0x39f29bfe,0x3ac87cfa,0x3a0f2cab,0xb83fb2ab,0xba9b01f6,0x3ac20b26,0x3a9d16a8,0xb7e75fab,0xb92e2ac1,0xba2d961d,0xbab3c1a5,0xba7c933c,0xba60aaa5,0xba2346e9,0x3a5399f8,0x3ae2160a,0x3a3b15a4,0x3a3b2d3b,0x39fe3d23,0x39f17e67,0x3a0cf927,0x39ca59cc,0x38012f5c,0x399c5446, -0x39c5eb9a,0x389ec274,0x3a6f796a,0x3a8588b6,0x3a5c4224,0x3a200c10,0x39a9808d,0x3a03fcf4,0x391b984b,0x3967e1dc,0x39cd46a3,0x39201052,0xba176bef,0x3b1fd7e1,0x3a6230e4,0x3add7d92,0xbb168e0d,0x3b85dac1,0x3ba16ffa,0x3b2b39ba,0x3b814564,0x3aeafa8b,0xbad2cbf5,0xbaf4405b,0xba77a1e7, -0x3aa71bc4,0x3b84ccb9,0x3bae6485,0x3b85ecd3,0x3b33472e,0x3b0c66b2,0x3a9c790f,0x3a2574c5,0x38aa6f8e,0xba87f352,0x38e2605f,0x3a04b049,0xba3d7b7d,0x3b6b4474,0x3b81e897,0x3a9ff6c1,0xba530eda,0xbb034d7b,0xb99c5533,0xbadb9855,0xbb003f8c,0xb907a83d,0xba98812b,0x38a723f8,0x3b74561f, -0x3ae38c58,0x3b75c8e0,0xbb70f32a,0x3bf40df8,0x3c15d70f,0x3b8f4f31,0x3b9b862f,0x3b0085f1,0xbb754aca,0xbb3da127,0xba889235,0x3ab6386c,0x3bf3ac35,0x3c235396,0x3c09414e,0x3bbe10ce,0x3b49f10b,0x3a098492,0xb981c563,0xba948e9a,0xbb562b1a,0xbac5e020,0xba336439,0xbb378f9b,0x3b9c21c5, -0x3b9362f9,0x3ad3edbf,0xbab7dd0c,0xbb68bc4b,0xbabebc42,0xbb8b22c5,0xbb5a3488,0x3a2e3181,0xbb03d5f3,0xbb115f1a,0x3bc5a805,0x3c06fe5d,0x3bd796fa,0xbbd795b0,0x3c3b32d2,0x3c69b948,0x3c0ee078,0x3c33a71f,0x3b896056,0xbb9fe623,0xbbaffa6e,0xbaff0699,0x3bcd751b,0x3c768526,0x3c85e472, -0x3c462f9f,0x3c1fd726,0x3bfc29e9,0x3b7b424a,0xb9ac221d,0xba69a208,0xbba9071a,0xba83debf,0x39ab6a30,0xbb7aac1b,0x3c1ecc3f,0x3c1fc36a,0x3b374d07,0xbb88ee00,0xbbf9d078,0xbb3dd1dc,0xbbe9a552,0xbbf9c5fa,0x3ae0aadd,0xbac38573,0x3a1c8c0a,0x3c08401e,0x3c2606da,0x3c12bfcc,0xbb9aeb78, -0x3c80a8f3,0x3c91e80f,0x3c4cbbf1,0x3c2c7031,0x3a54b974,0xbb96d2c6,0xbb5f7008,0x3b70bdba,0x3c3d0775,0x3c9175ab,0x3ca56d37,0x3c85e8e1,0x3c614f95,0x3c45bc86,0x3b424391,0xb9b55e71,0xbb27f054,0xbbe12605,0xbb60384a,0xbb0bf151,0xbbafedea,0x3c19b767,0x3c1d4036,0x3b1f50de,0xbb7c7226, -0xbc0e1e7c,0xbb6e2881,0xbc1022e8,0xbbd32a2d,0x3bca0511,0xbac85255,0xbd068645,0xbd2dfb81,0xbcda43ed,0xbbeecdb3,0xba9bd09a,0x3c31fe90,0x3c15b5d5,0x3b3e05d2,0xbc03b8a7,0xbc2f5400,0xba7d7b5c,0xbbced361,0x39008a19,0x3c0af1a4,0x3c99dc88,0x3cad5e07,0x3ba4fef9,0x3c3c7796,0x3bf4badd, -0x3ba0b3c8,0xb994a12e,0xbaf7c721,0x3a522842,0x3b9faa6a,0x3b63b677,0xbb30d6dd,0x3bc51372,0x3c4a0a24,0x3ccd36d3,0x3bbd72d4,0xbba9082d,0xbba9f600,0xbcb0d6d1,0xbccfbe19,0xbccf12d3,0xbd04d198,0x3c48b488,0xbbd146db,0xbc2a4aef,0xbc05a29e,0x3bb929b3,0xbbab19ec,0xbbb72fbe,0xbc4ff42a, -0xbbdbbe45,0xbbbaa744,0xbc058fd2,0x3b11d2a9,0x3b41d007,0x3af82846,0x39b95092,0x3b1888db,0x3ca1edc0,0x3c4dc053,0x3c3eb801,0x3ba6873b,0x3a904dd5,0xbadf488f,0xbbe012ba,0xbc645f1c,0xbc8f33b8,0xbcc0cd35,0xbc888888,0xbc362b9c,0x3c1f390d,0x3bb0f62d,0x3bca416c,0xbb7e0460,0x39b43d15, -0x3b36cc64,0x3bc205d6,0x3bdf0ceb,0xbd8b6a4f,0xbd6ec07b,0xbd204982,0xbc5a2da9,0xbca5ca35,0xbc3e03e7,0xbc5fb263,0xbbae573b,0xbbd31c9d,0xbb2f4128,0xbbcb67a7,0xba1822b3,0xbb8231cc,0xbac5015b,0xbbaf5671,0xbade9883,0x3c12e66a,0x3c3df923,0x3c499b09,0x3b12cb34,0xbaf5bef1,0xbb92d88b, -0xbb8efab6,0xbb8036f3,0xbc2b0840,0xbcbbfb87,0xbcb813d4,0xbc9242eb,0x3b9bafbc,0x3b028956,0xba8515db,0xbc877245,0xbc4bf8d8,0xbca02b98,0xbcdc02af,0xbd88f4d3,0xbd14a384,0xbc34cd75,0x3b0122b9,0x3bc73835,0x3c81b0a7,0x3b91fa78,0x3b360993,0x3a88eb96,0x3b3f2682,0x3b77ace4,0xbafd63b2, -0xba7fb6cd,0xbb0a8066,0xbafadc1a,0x3705406d,0xba047080,0x3ad54e0a,0x3c355e64,0x3c2ad28c,0x3a7cf773,0x3a8008ee,0x3b188104,0xba3ab9c7,0xba963d2a,0xbc5548fe,0xbce98745,0xbd001571,0xbcec35e0,0xbc1e1b6e,0xbc605579,0xbc9ebf35,0xbcc62ebc,0xbd3d9b01,0xbd3093b8,0xbc160d30,0xbd1fdd57, -0x3d981da1,0x3dc05a20,0x3db9c4a3,0x3d886955,0x3d6c6ec4,0x3d1bb0fe,0x3ce0af87,0x3bdec22a,0x3c0d1c2c,0x3b3a5514,0xba29be81,0x3b5dda94,0x3b3fb0bc,0xba088cbf,0x3a82061b,0x3b899a73,0x3c197af0,0x3c51a5e2,0x3c532d19,0xbbba3a77,0x3b5b462f,0x3b432860,0xbb5e66d3,0xbc3419e6,0xbc99f28b, -0xbcd3f29f,0xbcf53e0c,0xbcdf7730,0xbcbde8a3,0xbca6a938,0xbcbb8698,0xbc64af63,0xbd439629,0xbd217f35,0x3c916d54,0x3d2be09c,0x3cecaf45,0x3caaef48,0x3c399498,0x3cd340cd,0x3cb0c772,0x3cb8a775,0x3ca286f6,0x3cb368f1,0x3c9da6b1,0x3c943f21,0x3c312243,0x3c21b1b1,0x3bedd6dd,0x3c509e84, -0x3ab5f636,0xb92c7336,0x3bb3d5fa,0x3b9f4978,0x3a6001a2,0xbc276a9d,0xbcc1fcea,0xbcdb675a,0xbcb6d663,0xbcd64ee7,0xbce0934f,0xbd194457,0xbd1039ac,0xbd15ea7d,0xbd54d1f5,0xbd2274a1,0xbcbc0b91,0x3bc3cdfc,0x3d1dee53,0x3d7774b0,0x3da5e674,0x3d51b8c2,0x3c9bcb8d,0x3cc57d17,0x3cdbc2df, -0x3cb7aa93,0x3c9d41db,0x3c7def96,0x3c5a2434,0x3c35c1d4,0x3c429623,0x3c0e291a,0x3c176320,0x3bd0de06,0x3bd8c9d1,0x3c0beba0,0x3c5af411,0x3c7f8fbb,0x3c93e80f,0x3bfe415a,0x3b3be00a,0xbb8f1e8b,0xbc2097ce,0xbc3b5f81,0xbc9c698c,0xbc4e29a6,0xbc3a9b65,0xbbf59071,0x3ba8bb1c,0x3c80ace3, -0x3cad9881,0x3d0d63a5,0x3d16093c,0x3d0e5581,0x3cc92864,0x3c910776,0x3c71266d,0x3c969ae1,0x3c185788,0x3c6082eb,0x3c54f818,0x3c848065,0x3c77de7d,0x3c87e8a1,0x3c84bb8c,0x3c80d201,0x3c86a52c,0x3c8d0c12,0x3c8fa00a,0x3c78997d,0x3c52c5c4,0x3c4ce390,0x3c73532a,0x3c83141d,0x3c8c1b25, -0x3c54ad95,0x3c3bf487,0x3c059452,0x3bf3e12a,0x3bc8d004,0x3bd18e59,0x3bc3cfcb,0x3c1a76fd,0x3c6dffbe,0x3cae4d1c,0x3cd5b5cd,0x3cea327f,0x3cd3c9f3,0x3cb02075,0x3c93f311,0x3c9617b3,0x3c828d21,0x3c15a93c,0x3c0188bd,0x3c75a6d5,0x3c8b290f,0x3c8432e5,0x3c85ca18,0x3c9ae14b,0x3c86a709, -0x3c7304e3,0x3c592e86,0x3c5678cd,0x3c6622d5,0x3c64ee4c,0x3c7b03f4,0x3c65f967,0x3c65f8a9,0x3c581c4e,0x3c7859cb,0x3c746933,0x3c8b9ede,0x3c893c6d,0x3c9e7eed,0x3cbb3ba1,0x3cb72d3a,0x3cd37712,0x3cde6f0f,0x3ce36951,0x3ccccda4,0x3cb7a0f6,0x3ca7687b,0x3ca90e53,0x3c778942,0x3c2b8433, -0x3bbd2d60,0x3b8dcba7,0x3bab67ca,0x3bdc9555,0x3c463784,0x3aebc8ff,0x397de709,0x3b5b69ed,0x3a98f27e,0xb9f9c63c,0x3b00641e,0x3b05147f,0x3b89a814,0x3b85d05f,0x3ba57047,0x3baab8d6,0x3ba8e946,0x3bcc16bc,0x3bde83de,0x3c1fe3ff,0x3c453d5d,0x3c63b50c,0x3c8ed55c,0x3c7581e4,0x3cc20fed, -0x3c995bd0,0x3c8cd4d1,0x3c4627ed,0x3c1d211a,0x3bdf1cab,0x3b945c28,0x3c176ae4,0x3c15b08d,0x3c204538,0x3c32c454,0x3c4af92d,0x3c543bbe,0x3c4eb7b3,0x3c369452,0x3c04ad4a,0x3ba0aaf0,0x3bc00331,0x3bb3f8f7,0x3bca5586,0x3be4f9bd,0x3bfefa0c,0x3bcac10d,0x3bcb900b,0x3beb9cd0,0x3be465df, -0x3bd933df,0x3bd7dde4,0x3bd834f4,0x3bcc4f7c,0x3bbdd557,0x3bd8026b,0x3be3f66c,0x3bd8e953,0x3bfe8b43,0x3c10147d,0x3c1f89f6,0x3c0b288d,0x3c186b7b,0x3c2314f2,0x3c2700f0,0x3c1c61a5,0x3c016032,0x3bf008ad,0x3bc0f2bd,0x3bad2cb0,0x3b910d4c,0x3b6679ad,0x3b2b125a,0x3b2433dd,0x3b474ee5, -0x3b83ccdf,0x3bac4ec5,0x3bc6b48a,0x3b604d55,0x3b272d86,0x3b32f462,0x3b37c0bc,0x3b0b0bc2,0x39949cc1,0x3b2a3430,0x3b219bad,0x3ab4b38d,0x3ad11b60,0x3a9189a1,0x37fcb6e0,0x39f35984,0x3a126a99,0x3a1bba4b,0x3b139f4f,0x3b4d9bf5,0x3b0ba3f0,0x3b10f731,0x3b01488a,0x3ad8be08,0x3aed3b8a, -0x3ae8c853,0x3ab5076a,0x3ae8d999,0x3b06113f,0x3b00c29d,0x3b2cfcdb,0x3b2c9690,0x3b0f9e2a,0x3b0f56fb,0x3b005e01,0x3b443421,0x3b0da9f5,0x3b1ef671,0x3b41f672,0x3b206fd4,0x3b2041a1,0x3b2c47be,0x3b6c4709,0x3b425744,0xba880267,0x3bb0457f,0x3bc3d8e2,0x3b569dce,0x3baa4213,0x3b6f9e79, -0xb820d465,0x37f3f4b5,0x3a3b13f8,0x3ad4d38f,0x3bac15cd,0x3bd6c47e,0x3bc07f4b,0x3b8117b0,0x3b2c02cd,0x3ace3c7e,0x3b01176f,0x3ad0f65a,0x39276089,0x3ab3d59c,0x3aff61a4,0x3abcc074,0x3bdb9cdb,0x3bd48418,0x3a9ff3a3,0xba309217,0xbb0d8b90,0x3b178f10,0x3a0bc120,0x3a0aa9f9,0x3b1b0365, -0x3b2110ab,0x3b5072e5,0x3b6bd117,0x3bbc2fbc,0x3b927f55,0xbb5ce497,0x3bd88084,0x3c10ff12,0x3b7f2f32,0x3bca94dc,0x3b7b8c4f,0xbb47dbfc,0xbaa12030,0xb9594d75,0x3a1cd50f,0x3bfd911f,0x3c252714,0x3c2331fa,0x3bbdab71,0x3b3b7785,0xb9fec65e,0x39ed60ab,0xb96e69ef,0xbb1b816a,0xb9d46d24, -0x3aa4a104,0xb9006a1a,0x3bfe4dda,0x3bdbc2da,0x3a51e9d7,0xba87e2a5,0xbb07143d,0x3baf33b3,0x3adb0ec1,0x3b41018f,0x3b9ce164,0x3b4f5c35,0x3931ccdb,0xb9912c11,0x3bad45f8,0x3b77f76d,0xbc124419,0x3c3bb3a2,0x3c64c9af,0x3bbcac8f,0x3c447c20,0x3bbdbd05,0xbbbe5ae0,0xbb8895c8,0xbae3e35a, -0x3b0b40d3,0x3c70317d,0x3c85e6d7,0x3c5e8fe7,0x3c06ace5,0x3b92e78b,0xb9dc44de,0xb994a0a7,0xbab926a8,0xbba95da6,0xbaff148c,0xb8149304,0xbb5e63ad,0x3c5e7978,0x3c4bab54,0xbb38a5d1,0xbbfb7ab1,0xbc2755c2,0x3b181a75,0xbae2be22,0xbae1e199,0x3a948e7b,0x3b297c6c,0x3acf4228,0x3aee9f5e, -0x3bfb156f,0x3b468a94,0xbc2f066c,0x3c1f2d93,0x3c83f37a,0x3c13756d,0x3c4adf68,0x3b2e3090,0xbbdb31ed,0xbb9fb4b3,0x3ab429d7,0x3be19e13,0x3c9366aa,0x3cae4566,0x3c804fce,0x3c386505,0x3b9f52a6,0xbb30e99b,0xbb52300d,0xbb74a3fd,0xbbfd00a9,0xbb700ebc,0xba64d561,0xbbb3bd6b,0x3c4b3be2, -0x3c2dd9b3,0xbb1c3db1,0xbba5d91c,0xbbcbf6c9,0x3c39c698,0x3b9742f7,0x3c120184,0x3bebdbed,0x3b4f16b0,0xbc111cbb,0xbd17ca42,0xbd249038,0xbca16693,0x3c330da6,0x3c2f9993,0x3c076b30,0xb942cf3c,0xbc08f616,0xbc42f5c0,0xbb1e2ee8,0xbbb86223,0x3a87c213,0x3be1639d,0x3c861a85,0x3c988f23, -0x3c28893b,0x3c482bc0,0x3c19b693,0x3c79a3da,0x3bdc58dc,0xba4cc9e4,0xbb3ed5f1,0xbbf27b09,0xbc1d5776,0x3a0cdfcf,0x3c04b51c,0x3c8141ff,0x3cfb01c5,0xbbb87e6b,0xbcdd7898,0xbcd7ca76,0xbd26a432,0xbd11553f,0xbca0578a,0xbbd3f580,0xbbe1f0e3,0x3beef383,0x3c497f34,0xba359042,0xbbcec179, -0xbc76d7ca,0xbc4e8a5a,0xbb79d62e,0xbbfb868f,0xbbd62c9d,0xbc12df28,0x3a8d83d3,0x3b2e4fad,0xba0db70f,0xb981d328,0x3a9b1437,0x3c158bd5,0x3c393d72,0x3c2706af,0x3af053e3,0xbb919e63,0xbc1b1eda,0xbc4a6a3a,0xbc488d15,0xbc64740b,0xbc2fd73c,0xbc51a65a,0xbc35477e,0x3b99949b,0x3ab51485, -0x3bbf1e62,0x3c21db80,0x3c584f51,0x3c2c1ce3,0x3a6440c9,0xbc42c27b,0xbd302e03,0xbd53c591,0xbd321db2,0xbc8e9708,0xbcdccf3b,0xbc481c5c,0xbc1d9f16,0xbb9f4073,0xbbb43729,0xb94d9ec1,0xbbabd894,0x3b196727,0x3a0987b3,0xb9a1a40d,0xba2ba7d7,0xbb3d58ae,0xbb7055da,0x3c1910d4,0x3c56a332, -0x3ab5eab9,0xbb9e71a7,0xbc23100d,0xbc554cb3,0xbc795a6f,0xbc9550af,0xbc9c8b38,0xbc9af502,0xbc1809c1,0x3c12e9f6,0xba96de1e,0xbc034b4a,0xbc7f8e35,0xbbd981f0,0xbb7ec309,0xba69c2f5,0xbcdbb927,0xbc68fb99,0xbcc2b8bd,0xbc321764,0xbba4c716,0x3c4edfe1,0x3b8497d5,0x3b8a3498,0xbb875481, -0x3b01fba4,0x3b51bf62,0xbac841de,0x3917a697,0xba54cc96,0xbb5bb9f0,0x3a782c59,0xbb5b6b28,0xbc275f35,0x3c1af53d,0x3c3c41aa,0xbb1d43d3,0xbb70aa88,0xbc0ae98d,0xbc08b395,0xbc98b4fa,0xbccf8c10,0xbcefdf00,0xbcc0d81b,0xbc90dcdd,0xbc29568f,0xbcb56074,0xbd082d13,0xbd13d904,0xbd33f1fa, -0xbd08b13c,0xbc8bd1e4,0xbc5b5888,0x3cf9e8e9,0x3d6f3c95,0x3da7b028,0x3d75dab7,0x3d517432,0x3ced79a8,0x3c9b93e5,0x3bb4b01f,0x3bdb8d14,0x3a781d25,0xbab3316d,0x3ad057c8,0x3abce105,0xbb18031d,0xba5e20a6,0x3a831fa5,0xbb24f0b9,0x3c421cc7,0x3c5722c5,0xbc13e3c9,0xbb816394,0xbbbe525e, -0xbbe39dce,0xbc64d25e,0xbc845f24,0xbcd712f8,0xbc557a6c,0xbc75e099,0xbce46a6d,0xbceba0e9,0xbcd86667,0xbc46125b,0xbcfac537,0xbd0f9afc,0xbcefdf64,0x38654628,0x3d85d6f8,0x3d4224c0,0x3cd97353,0x3d179940,0x3cbe946c,0x3cda8edc,0x3cbe42aa,0x3cbd2212,0x3c95f61b,0x3c78c7ff,0x3ba33265, -0x3b372c3d,0x3b99acf2,0x3c7070ed,0x3ba9dad8,0x3a96815a,0x383cdbe7,0x3a99dd06,0xbbb024fe,0xbc831c1b,0xbcb8f1cb,0xbcf5d0fb,0xbd0b8290,0xbcc62183,0xbcb1881e,0xbcef76a3,0xbc48ba8a,0xbc46125b,0xbd1abb30,0xbd243a5b,0xbd25ee91,0xbd1a43b0,0x3c0986ba,0x3d365474,0x3d9ec2e7,0x3d95bc27, -0x3cb911d4,0x3cc581e8,0x3ccb128b,0x3ca124bd,0x3c8488db,0x3c788c0d,0x3c748b49,0x3c56655c,0x3c8806ee,0x3c81f370,0x3c3f56d8,0x3c378063,0x3c12fd1d,0x3c200d67,0x3c2f59ae,0x3c547ab3,0x3c445c54,0x3c1b9ffb,0x3b8cf90f,0xbbbdef04,0xbc136d02,0xbc288513,0xbc6300c9,0xbcc38577,0xbce22c0c, -0xbcba3200,0xbc4fd9c1,0xbb58d428,0x3a194d33,0x3c8c8492,0x3ce4d369,0x3d11a798,0x3d1ba165,0x3d06a9de,0x3cca6d0f,0x3cc55639,0x3c8062f6,0x3c6fd1b8,0x3c5bbbb6,0x3c77358b,0x3c797e0c,0x3c8486f0,0x3c6e54d1,0x3c52eda0,0x3c82262b,0x3c87329d,0x3c9556e5,0x3c818c4d,0x3c805110,0x3c478248, -0x3c68c9c9,0x3c6aea36,0x3c687c0b,0x3c5abd7f,0x3c3ba65c,0x3c1b10a0,0x3c286fba,0x3c08f788,0x3c4511c3,0x3baa1ff5,0x3c040d9d,0x3c7811a5,0x3c9a200f,0x3cb3b256,0x3cd8961f,0x3cdc59ab,0x3cda4dcc,0x3ceda740,0x3cec455c,0x3cdf9746,0x3ca68a4e,0x3c9e2b52,0x3c72e4f4,0x3c90127e,0x3c8e95e5, -0x3c8e432b,0x3c997866,0x3c6ce820,0x3c4655f6,0x3c13a16a,0x3c3192a9,0x3c399caf,0x3c711759,0x3c4f3695,0x3c69ce90,0x3c5c9558,0x3c79b2d8,0x3c7dfbd0,0x3c859fed,0x3c958607,0x3caf9d5b,0x3cc942b5,0x3cd192ba,0x3cc489e7,0x3cc9f44c,0x3cfe0884,0x3d0eb0cc,0x3d04baf8,0x3cf45c56,0x3cf366b6, -0x3ce74624,0x3cb56e40,0x3c94e6a8,0x3c61665b,0x3c1e9839,0x3bfbc476,0x3c07d8ca,0x3c45be84,0x3bd0548a,0x3bad9c88,0x3b21ef8f,0x3b60fed7,0x3b01f0e3,0x3b967103,0x3bd5e0f4,0x3bdc75c9,0x3c077891,0x3bf9b406,0x3bf4930f,0x3c13ba75,0x3c1fe50f,0x3c32f0e5,0x3c592e7b,0x3c720986,0x3c99143b, -0x3ca1eeb0,0x3caf7623,0x3ca55e0f,0x3c8ae3fd,0x3c9d3c83,0x3c8797b5,0x3c5d544d,0x3c20ce9a,0x3bfedf3c,0x3c326d8c,0x3beabbc4,0x3bfaabce,0x3c0da16f,0x3c081ea9,0x3c0cb7e1,0x3c2bee95,0x3c41256d,0x3c28765c,0x3c0a7cc7,0x3bd42079,0x3bf01fa0,0x3bc60eca,0x3baa1fd5,0x3b94f1bd,0x3bcdbc23, -0x3b8fc6b0,0x3b4a1fed,0x3b40aec5,0x3b776e09,0x3b8c179b,0x3b8e3546,0x3b8ee504,0x3b8f1904,0x3bb15895,0x3bc88fd6,0x3bbf436d,0x3bc509e4,0x3bdc4b9e,0x3c0433d5,0x3c0c07d3,0x3c0f321b,0x3c1be2d5,0x3c377233,0x3c421fca,0x3c355c84,0x3c38c37a,0x3c1e40b1,0x3c154d25,0x3c012ce6,0x3bd0e4af, -0x3ba9ba92,0x3b93140d,0x3b910a39,0x3b9ef220,0x3bbcddd4,0x3bfdb61c,0x3b60c788,0x3b10ff8e,0x3add5d83,0x3b3b9583,0x3b3d72a0,0x3ac12391,0x3b26c52c,0x3b2ae1ff,0x3b18cc5a,0x3b36be55,0x3b1eb537,0x3ab0ae17,0x3ae6353d,0x3afc4370,0x3ad9a77c,0x3b208198,0x3b41f242,0x3b6c08c7,0x3b3f02c4, -0x3b1fd9b2,0x3b02e869,0x3afd19a6,0x3af2e87c,0x3aca37ac,0x3ad71733,0x3af98804,0x3b20d4e8,0x3b2aa120,0x3b1ec1f5,0x3a9cb2a4,0x3ac69ee2,0x3ac3e3bd,0x3b27e9b7,0x3afddb75,0x3afb9eca,0x3b22e5a2,0x3b12d5fe,0x3af4557a,0x3a0cac55,0x3b614f90,0x3b3de099,0xba7a38fd,0x3bab9f34,0x3bb9738e, -0x3b526d7e,0x3ba0825b,0x3b858df2,0x3aadbfdf,0x3a73db1a,0x3a920346,0x3ae57376,0x3ba517c2,0x3bc4c5f8,0x3be5fc7e,0x3b9ba7a6,0x3b422e1d,0x3ad21a67,0x3b058f35,0x3ae473b9,0x3a3f1417,0x3ac5735f,0x3b2a149a,0x3b815a6e,0x3bc472f8,0x3b7f675d,0xbb3bfbc7,0xbac6da86,0xba7abf85,0x3b5d438e, -0x3b1f2a66,0x3b6bff5e,0x3ba31361,0x3b356ae6,0x3b228104,0x39dd97f8,0x3bc5482c,0x3b9b0409,0xbb1acce0,0x3bb9c4bb,0x3bf7e73a,0x3b3acf2d,0x3bc2f6cb,0x3b8a1231,0xbac4e13e,0xba49fe37,0xb832bd93,0x3a079704,0x3bc5cb32,0x3c0b9a51,0x3c3c11f4,0x3bd3d65c,0x3b7bed41,0x3a86b881,0x3ac01b12, -0x39c96f56,0xba72a96e,0xba342250,0x3a9c89d5,0x3b9f4bcb,0x3be01ac9,0x3b8b73de,0xbb98d04c,0xbb604928,0xbb39d23f,0x3badc5bf,0x3b17ed60,0x3b65936f,0x3b945b0c,0x3b50801e,0x3a83c7e9,0xbb1df7f0,0x3b3c86cf,0x3ba2bf30,0xbc1f0a34,0x3c273ce4,0x3c536311,0x3b8a63df,0x3c332976,0x3bd786ec, -0xbb8c96e6,0xbb4a0b0d,0xbafae185,0x3a8da42f,0x3c3b9878,0x3c6c4cd0,0x3c7c7337,0x3c1972e8,0x3b85f99f,0xba5ba9da,0x3a4d826b,0xba571c8f,0xbb5f9b66,0xbb0ad30d,0x3ab3d9ce,0x3bcfdeb9,0x3c2ddbce,0x3ba41f15,0xbc6dc19e,0xbc159cf3,0xbbeceba1,0x3bab4c61,0x3b60df10,0x3bcf1b8d,0x3c084fa6, -0x3b1a7c21,0x3b99f1d2,0x3b38abf9,0x3c38c2d5,0x3c11595c,0xbc0feb7e,0x3bf08ccd,0x3c597ef2,0x3bf907b1,0x3c4cfcaf,0x3b8484ca,0xbbeec820,0xbbb5b31c,0x38b3f60d,0x3b87ac2e,0x3c76cbdb,0x3c95cb55,0x3c8de2b5,0x3c3bde93,0x3b977ae7,0xb91cfacf,0xba357e0b,0xbb24b8c6,0xbbb07d0f,0xbb985cf5, -0xba6288b7,0x3bb7f27a,0x3c21c39a,0x3b8428f0,0xbc241845,0xbc1ef93f,0xbbf1d331,0x3c2dba73,0x3b64cb7b,0x3c01b8ba,0x3b8a84a8,0x3b8f4441,0xbbca5a3c,0xbcc5c234,0xbd40db21,0xbce7faba,0x3cbc30b4,0x3c301602,0x3c058a96,0x3a096aa5,0xbbf34f5e,0xbc3089b2,0xbb84bd89,0xbb2ea242,0x3b3f29c0, -0x3b545ffc,0x3c48b62d,0x3c78be6f,0x3cafb7a5,0x3c564a0b,0x3c285113,0x3c53e870,0x3bb3b542,0x3a153ec3,0xba974dc7,0xbc691e82,0xbc312b57,0x3b75a935,0x3c12f0bc,0x3c023da7,0x3c3279bc,0xbcbec483,0xbd0edd12,0xbc985ecb,0xbcde1692,0xbca7ce28,0xbc13969e,0x3a2cbae2,0xbc4b21bf,0xbad7b143, -0x3c8854e0,0x3ae4c77f,0xbc6ea20b,0xbcb83335,0xbcb70b43,0xbc0a56e6,0xbc0f441a,0xbbaa69e7,0xbc10565f,0xba3721e7,0x39971b23,0xbb16da0f,0xbac4b4c0,0xb9a8b459,0xb98a0fb8,0x3c162bea,0x3c232d02,0x3b181df1,0xbb329a27,0xbbf0f3ab,0xbc299c89,0xbb96e82e,0xbbc6ca15,0xbc4c01c1,0xbb25df1b, -0x39f6b322,0x3c57d49d,0x3b1f1e1a,0xb9ec4d44,0xbb3a3ca8,0x3bd09b57,0x3b5ffeed,0xbb70f855,0xbc4cdadf,0xbb7e2069,0xbd0050dd,0xbd0dbfde,0xbc8935b5,0xbd0172b4,0xbc782163,0xbc23a655,0xbb8599f4,0xbbc0e0d1,0x39d17e5f,0xbb880fb7,0x3b262424,0x3acc8422,0xb9e59ac7,0x3b6d21f2,0xbae267ac, -0xbc1a5745,0x3c20f0af,0x3c622aec,0xbabc26d3,0xbbc1cba2,0xbc4a05eb,0xbc8df0ee,0xbc9c8d68,0xbc9b6c81,0xbc789e2d,0xbbea96d0,0xbb1d768a,0xbc1b9ddd,0xbc488792,0xbc83410a,0xbcb67e87,0xbc23855f,0xbb92cd39,0x3b657c14,0x3bd81c6f,0xbb08c5a7,0xbc64b4d4,0xbc4d6b59,0xbbd8765e,0x3b8097c0, -0x3a805e56,0x3b9904f5,0xbbaa4299,0xb91c0d21,0x3a812de1,0xbb23bee8,0xba2c4f47,0xba3f4d17,0xbb5877f8,0x3af99a45,0xbb61a958,0xbc540b77,0x3c212f6b,0x3c2f15c1,0xbb9acc84,0xbbc9686a,0xbc497839,0xbc5b0672,0xbc853399,0xbc9003bb,0xbcb4d913,0xbc686b67,0xbc4a0254,0xbcdcbd83,0xbcb1a8f9, -0xbcda8313,0xbd2f02b1,0xbce61289,0xbcb3f4b0,0xbcf33d72,0xbbcd2679,0xbc95ff40,0x3c94620d,0x3d66ef6e,0x3d3c0b89,0x3d1fea98,0x3c979a20,0x3be6a048,0x3b1f8869,0x3b5ef53e,0xba1cf995,0xbb3cbb7a,0xba7c3439,0xb96f4cce,0xbbd11ea6,0xbb813e2d,0xbb20a3dc,0xbbf2480f,0x3c26299f,0x3c33b95a, -0xbbbb4544,0xbc31f6e8,0xbc61c919,0xbc0c99c3,0xbc77b137,0xbc7bf7de,0xbcc75312,0xbc81cc52,0xbc73a285,0xbc3f9852,0xbc40b52c,0xbc8572d5,0xbcf76a5a,0xbc70d476,0xbca28453,0xbd81cd24,0xbd19d018,0x3d9f499f,0x3d92be93,0x3d30ec36,0x3d441c3e,0x3ce38cb1,0x3d03affc,0x3cf232b1,0x3cc2af2d, -0x3c7f75e1,0x3c398b25,0x3a3d0f09,0xba9b5e3d,0x3b7d9609,0x3c4a9da6,0x3bfbfa87,0x3b54b0ad,0xbb83149a,0xbb68ec4e,0xbc0be09b,0xbc570bfc,0xbc4de8cc,0xbca51848,0xbcc6d1f2,0xbcab3d8f,0xbc6eb8a2,0xbb6c851a,0x3ac0e950,0xbb3cfb93,0xbc3ffbf2,0xbcf99251,0xbd1e23e1,0xbd6accf4,0xbcc4f487, -0x3c354b14,0x3d44fae0,0x3d8c8a7e,0x3d056217,0x3cd80a8b,0x3cdd5b07,0x3cbc45e6,0x3ca59b78,0x3c9bfa76,0x3c9d97bc,0x3c91cdae,0x3c9f3f6f,0x3c91a1ae,0x3c67007a,0x3c77328b,0x3c3e1a7c,0x3bba1e06,0x3b868cf0,0x3b858c84,0x3b862550,0x3bd1d523,0x3b694ab0,0xbbc6d968,0xbc1f7c71,0xbc4e42fe, -0xbc858f13,0xbccc6660,0xbcf57727,0xbd104972,0xbd19beb0,0xbcfdf700,0xbc91bc04,0xbb43c54b,0x3c890df6,0x3d068482,0x3d4c094c,0x3d53edc4,0x3d345a86,0x3d138966,0x3cdba3f5,0x3c9608c3,0x3c8c0d43,0x3c8b2892,0x3c85886f,0x3c8b4274,0x3c6cbc18,0x3c593637,0x3c621944,0x3c66a9a8,0x3c6b410c, -0x3c5ffa88,0x3c5ba26c,0x3c16ec61,0x3c241f8f,0x3c2b3efd,0x3c3a589b,0x3c5cb9f3,0x3c4792c2,0x3c37b45e,0x3c2261f0,0x3c0e14b7,0x3c1d22b7,0x3b370a79,0x3ba1784e,0x3ba00d08,0x3c1d4575,0x3c54cf08,0x3ca8d632,0x3cc2f87e,0x3cf29411,0x3d17c4d6,0x3d268eaf,0x3d295fd5,0x3d11ff43,0x3d05bd30, -0x3c8c2136,0x3c9c14cd,0x3c871820,0x3c8dbc48,0x3c8c5b71,0x3c51f797,0x3c2768cd,0x3bef37d0,0x3c0e36ca,0x3c151579,0x3c2bcff3,0x3c25ae9c,0x3c3c54b1,0x3c352dbd,0x3c5e4e5b,0x3c5aeb13,0x3c6d70fe,0x3c7ccffb,0x3cc01fe1,0x3cb12f91,0x3cadb70e,0x3ca69c9e,0x3cae6b3d,0x3cdfe7c1,0x3d01f0d7, -0x3d03ad3d,0x3d0381e9,0x3d1124be,0x3d15c5a3,0x3cff9d80,0x3ceae62a,0x3cd83df4,0x3ca0fe6a,0x3c795361,0x3c70189d,0x3c7cce22,0x3c6d5a02,0x3c4e79b2,0x3c0ff00d,0x3c2fcbf5,0x3c16b791,0x3c43f53a,0x3c6c1c77,0x3c600446,0x3c804ead,0x3c5e5df7,0x3c5c4352,0x3c67546f,0x3c69d415,0x3c6e871f, -0x3c67620a,0x3c58b0dc,0x3c7c6d7c,0x3c5c197c,0x3c522341,0x3c0b5298,0x3c0d60d3,0x3c5af439,0x3c550a3e,0x3c4c4e98,0x3c2e6765,0x3c0afbec,0x3c440f4b,0x3be67ce5,0x3c14f5d9,0x3c47c4c3,0x3c543b80,0x3c83e1f1,0x3c966678,0x3ca52255,0x3c9bc298,0x3c8e98e1,0x3c480193,0x3c586e29,0x3c36b104, -0x3c107b2c,0x3bd1a565,0x3c38e0e9,0x3c04794b,0x3b97801a,0x3b8dc05f,0x3bb3d276,0x3bc4d7a6,0x3bc35473,0x3bc3818e,0x3bcb7dba,0x3c11b94b,0x3c2e37e5,0x3bf5ee05,0x3c109645,0x3c2848c6,0x3c523bc9,0x3c5fbdf2,0x3c615e0a,0x3c6faf25,0x3c872d15,0x3c8fb285,0x3c9164be,0x3c9ce376,0x3c93a50f, -0x3c93d590,0x3c8b8205,0x3c73fd04,0x3c658e3b,0x3c488073,0x3c3a77d4,0x3c35d5bc,0x3c3d1353,0x3c9b8ecd,0x3b4722c8,0x3a9ca18b,0x39bf2b98,0x3ae22283,0x3b1f74a7,0x3ae2c80a,0x3b1304af,0x3b10dd83,0x3b06e580,0x3b261c15,0x3b16bb66,0x3ad60205,0x3ae1f85c,0x3aec46c0,0x3ad729f7,0x3b0d135d, -0x3b2b5345,0x3b72f78c,0x3b45ee28,0x3b2f0037,0x3b145f26,0x3b052016,0x3af5c1bf,0x3acfcdeb,0x3abc4b88,0x3ae05c77,0x3b36f3d1,0x3afb4f43,0x3ab4379e,0x3902761b,0x3a59af84,0x3a97c83a,0x3b072d95,0x3afdc428,0x3ae0f188,0x3ad3ff7e,0x3aa0bfac,0x3abf6e94,0xb961d6af,0x3b3d14f4,0x3b13236e, -0xb8bb105a,0x3b92def7,0x3b945a07,0x3b2b6f7d,0x3b82acb3,0x3b7ad505,0x3b1ee911,0x3a8db72d,0x3a7e66d1,0x3afcad94,0x3b83a755,0x3bab7494,0x3bebc4e3,0x3bae070c,0x3b789e0a,0x3b350b17,0x3b3803e6,0x3b1dec38,0x3add40d2,0x3ac836f2,0x3b1e08ef,0x3bb461de,0x3b610504,0x3a3c0d56,0xbb945e4e, -0xbaf7283f,0xb95f958b,0x3b37275f,0x3b4eefd1,0x3b8b8b6a,0x3bc03479,0x3b6a2ee3,0xb843b5d1,0xbb3718b4,0x3b549ee2,0x3b6f04e0,0x39d7e69d,0x3b96bfc3,0x3bc295a7,0x3af438b3,0x3ba4663f,0x3b854a36,0x39f0a549,0xb930754b,0xb8d10736,0x3a9525a5,0x3b9b7374,0x3bf634f3,0x3c459a4b,0x3c006168, -0x3bbfdedf,0x3b659d7b,0x3b676f1c,0x3b08e815,0x3a710027,0x3860c922,0x3ae2804f,0x3c0dd09f,0x3b5d2755,0xba33fcea,0xbc16341d,0xbba6e2b1,0xbb210b34,0x3b81f38b,0x3b88cf9e,0x3b8b85b1,0x3b8b30ce,0x3aa1175c,0x3a452a38,0xbb2e4c1a,0x3b81204b,0x3b8076ad,0xbbb9d474,0x3c122679,0x3c2a9d9e, -0x3b3d356e,0x3c1258c2,0x3bd639e8,0xba755cf9,0xbb2a2bb4,0xbb1f5382,0x3afa135b,0x3c1006e1,0x3c526ad1,0x3c8569d0,0x3c37485e,0x3bcbe34c,0x3b16949e,0x3b87fb86,0x3af52f00,0x3a02afa2,0xba1d01a2,0x3b03302e,0x3c5e0eb5,0x3ba39e54,0xbb140e3f,0xbc998946,0xbc266c26,0xbb8fae68,0x3b7cb72a, -0x3bde7c04,0x3bf97a5a,0x3c610a43,0x3bc76564,0xbab57c13,0xbb837383,0x3c4062bb,0x3c2377f2,0xbb4c146c,0x3bdc1e83,0x3c391050,0x3bad664b,0x3c3a38c8,0x3baa39b5,0xbbcf1891,0xbbc860ef,0xba926462,0x3b6ad29e,0x3c50505e,0x3c85be47,0x3c9b1a5b,0x3c46be0d,0x3bf840be,0x3b7312ac,0x3b89c96d, -0x3ab31715,0xbaaa86ec,0xbb37932e,0x3b2b5551,0x3c78f0bb,0x3ba6ee2e,0xbbb1d3a1,0xbc9e7ce9,0xbc44ba67,0xbbb6ec9d,0x3bf1a477,0x3c01bc24,0x3c1a5753,0x3b957e2d,0x3b45c68c,0xbae93d5d,0xbc3c05ea,0xbd4a7f6a,0xbd0cbd36,0x3cce2d56,0x3c1a1039,0x3bc6e1a6,0x3a560825,0xbbc6faf3,0xbc1151a3, -0xbba41ab5,0xb98ea5ef,0x3b5e8e45,0x386313a2,0x3c03ce62,0x3c3c67da,0x3cd8144f,0x3c46ff97,0x3c04cb65,0x3ba89dbe,0x3bc3a5b8,0x3bb9b57b,0x3b83c6b1,0xb89a56ab,0xba92b62e,0x3bef0f86,0x3c31c319,0x3c2a17c9,0x3c703f78,0xbd09c01c,0xbd239232,0xbc419fc8,0xbc8dfaf8,0xbc15aaff,0xbba0ecc5, -0x3b218e73,0xbbf01d4b,0xbb8cf182,0x3c80455a,0x3bbcdbed,0xbc98a24b,0xbc994dd9,0xbc95f5e8,0xbc464291,0xbc121d33,0xbb9584ba,0xbbfeca75,0xbb047d8a,0x3a074fe7,0xba2966f4,0xb8a47ebb,0x3891071a,0xbb66b91b,0x3c0be49d,0x3c330d96,0x3b8e43ca,0x3a873630,0xbb77d1c0,0xbbe9bf15,0xbbe37623, -0xbb9e1e16,0xbbfbfd28,0x3b26f6af,0x3b07fccf,0x39ebc4d7,0x3b4b1377,0xba897cf7,0xbc666e87,0x3a9f68b0,0xbbe0fce7,0xbcd08f02,0xbc4d2c82,0x3c53e957,0xbbe51641,0xbc81aa4e,0xbc17b549,0xbcb56ca3,0xbc6e80f2,0xbc235ec5,0xbbae26d0,0xbbeb3733,0xba5f427c,0xbb001e49,0x3a3a1eab,0xb94c1d1a, -0xb9158f4a,0x3b846c15,0xbaa8818e,0xbc281a24,0x3c01d290,0x3c192ee1,0xbb2c4eb3,0xbb999b28,0xbc2ffea7,0xbc2c0298,0xbc5b5999,0xbc6c7e27,0xbc6520ac,0xbb204350,0xbb8625a7,0xbcbe2f27,0xbca49ba0,0xbca44d4a,0xbcd57e0e,0xbb81c517,0x3a9a8940,0x3b6a6efb,0x3c856a30,0xbc88422b,0xbc09f659, -0xbc2545a2,0xbc137cd5,0xbafac33f,0xbb8bb8a0,0x38524908,0xbc014c14,0xbb92a9bc,0xbb06faff,0xbb382d51,0xbaac3dac,0xba860025,0xbb18cc95,0x3ad5466b,0xbb6ee846,0xbc1a0adf,0x3bbd5b28,0x3be3f846,0xbb5be564,0xbbc486c5,0xbc40d339,0xbc58a35a,0xbc636c1a,0xbc4208cc,0xbc625774,0xbba3a341, -0xbb83d859,0xbc555726,0xbc7e04ad,0xbc92e59c,0xbd07cfbc,0xbc549151,0xbc427edf,0xbca31bbe,0xbc85d230,0xbd84f34f,0xbc801574,0x3cb16c22,0x3cc6f982,0x3cb75be8,0x3bd5ea9b,0xbb955722,0xbba4bba2,0xbafa7be8,0xbb552d83,0xbbc6d5a4,0xbace98f7,0xb848b24a,0xbbe72143,0xbbbcf9d0,0xbbb44c1e, -0xbbd48071,0x3b9cbe91,0x3bbc5c27,0x3b025d8d,0xbc07f7ce,0xbc332fa5,0xbbf40fc4,0xbc16fd6a,0xbbf3ac61,0xbc42c43b,0xbc3561df,0xbc5b6c24,0xbc54ecbb,0xbc49f58a,0xbc92eca1,0xbce9ca98,0xbc8359da,0xbcc3ebe2,0xbd87334a,0xbd969ba7,0x3d9d675c,0x3db0d8b3,0x3d72bb53,0x3d72b39d,0x3d0bb333, -0x3d29d5cc,0x3d1e5d5c,0x3ccffa58,0x3c6cb493,0x3c1fa1ed,0x3b24a0e8,0xbabe8e06,0x3b0ae5c4,0x3bd2cf59,0x3bad0603,0x3b0d8688,0xbbb47f16,0xbbb1a164,0xbbe289b8,0xbc182f20,0xbbf0ac95,0xbc11d618,0xbbc78f7d,0xbc046430,0xbae728ef,0x3bb8218a,0xbbc3f337,0xbc607a64,0xbc161d67,0xbcaaaee5, -0xbcdbe157,0xbd454e04,0xbd371240,0xbcac5d79,0x3cd7ef1d,0x3d5a88d8,0x3d148e43,0x3cf2f272,0x3cf930a4,0x3ce9fec2,0x3cd4c485,0x3cd0b544,0x3cc347e3,0x3c916f61,0x3ca3c466,0x3c8f73da,0x3c8a9aef,0x3c88a358,0x3c3f91d8,0x3ad692fc,0xbad129d4,0xbb0a7346,0xb8ec512b,0x3ba48313,0x3b552a0c, -0xbb882e33,0xbc218c73,0xbc7fef9c,0xbcae1d6f,0xbcbb2b48,0xbce58927,0xbd105a89,0xbd361346,0xbd306f45,0xbcfbb06b,0xbcba02df,0xbb4a7709,0x3c8b7396,0x3d27c957,0x3d45b127,0x3d42b802,0x3d1810eb,0x3d19a771,0x3cda9e26,0x3cc8eb36,0x3cacabfe,0x3c8ee31e,0x3c96143a,0x3c825108,0x3c64cddf, -0x3c5f2f8c,0x3c6f0c3f,0x3c5dd540,0x3c5a787d,0x3c3de062,0x3c1f98b2,0x3bf90952,0x3bf41f6c,0x3c0c6d8e,0x3c23755f,0x3c19d2c5,0x3bdcbcfb,0x3a90e12a,0x39fe4c7d,0xbac4396a,0xbb468298,0xba9057d9,0xbb71418c,0x3adff919,0x3baeb951,0x3c6ff060,0x3c9d1be5,0x3cee8b96,0x3d262561,0x3d3b3413, -0x3d47a3b4,0x3d435a13,0x3d34d77a,0x3ccc9387,0x3cc920ae,0x3c983f9d,0x3ca0aeb0,0x3c86135d,0x3c5953e7,0x3c3b24bd,0x3c2d2f7a,0x3c267087,0x3c2e43bd,0x3c18fbf0,0x3c50665d,0x3c448ce8,0x3c5d4eb9,0x3c5c9632,0x3c5d1062,0x3c4b00f6,0x3c2f99d5,0x3c7a91da,0x3c361355,0x3c3267d6,0x3c3e09e9, -0x3c49cf32,0x3c8e8bbd,0x3cb4c1be,0x3cd4f968,0x3cfe9a9d,0x3d1ac08b,0x3d2916d2,0x3d25f43e,0x3d2b9a05,0x3d2e02f4,0x3d0f8b00,0x3cf2abf4,0x3ce6c00c,0x3cce4e66,0x3cc5b56b,0x3cba98da,0x3c86271d,0x3ca904df,0x3ca14997,0x3cb168f5,0x3cc4331b,0x3caf22a7,0x3cbf9bdd,0x3ca4e67f,0x3c9f9316, -0x3c960142,0x3c914a50,0x3c88ce60,0x3c754f26,0x3c62c026,0x3c67ca58,0x3c58d2a9,0x3c1e770d,0x3c205551,0x3c495fe0,0x3c876b0e,0x3c941871,0x3ca2bfd8,0x3ca16ffa,0x3c925c12,0x3ca33cff,0x3c7c0263,0x3c9095ea,0x3cb0871e,0x3cacb73f,0x3cd6bd42,0x3ce4e3df,0x3ce1da5e,0x3ce07f26,0x3cdd9a6f, -0x3c9384b7,0x3c9ad693,0x3c8abaf1,0x3c6ab10b,0x3c43a6f2,0x3c86fd08,0x3c630413,0x3c2e698c,0x3c25115d,0x3c37c01c,0x3c429dda,0x3c436e8e,0x3c46d0b6,0x3c4fab16,0x3c74efc9,0x3c83df03,0x3c5115b1,0x3c690cf3,0x3c7c7fdb,0x3c89f7f4,0x3c8bcb43,0x3c901e0e,0x3c95a901,0x3c9f31eb,0x3ca66ace, -0x3cad1575,0x3cc11a88,0x3cbf67d8,0x3cc70836,0x3cc62b3e,0x3cb8794a,0x3cb9985a,0x3ca7410b,0x3c9a4d47,0x3c964bde,0x3c945e09,0x3cea1cca,0x3b4a847a,0x3aa5c2e8,0x3a6bb40f,0x3ac53a13,0x3aecec67,0x3ad5bcb9,0x3afb4d8e,0x3ade7b91,0x3acd7184,0x3afc2f73,0x3af15b23,0x3ad9546f,0x3ab8afb3, -0x3ab05f3d,0x3ab1a834,0x3af8ba54,0x3b1edf27,0x3b50b4aa,0x3b387030,0x3b34932f,0x3b2d5b30,0x3b1fc007,0x3b1559f7,0x3b0437b4,0x3aecabe7,0x3af973c6,0x3b355ce2,0x3ace601b,0x3a972e31,0x3a1d2d75,0x3a46421f,0x3a836775,0x3acddce8,0x3af9a8ae,0x3ad7b755,0x3a7dd171,0x3a959b67,0x38e3dc79, -0xbaa4baf8,0x3ab529b3,0x3b157d71,0x3abb1d2c,0x3b624ea3,0x3b44374e,0x3b0de771,0x3b4e4c09,0x3b5f472a,0x3b56c0a5,0x3ab56365,0x3aa4e9ab,0x3afdd5a2,0x3b52930b,0x3b9a0f62,0x3bd87ebe,0x3bb9259b,0x3b9a1b7c,0x3b840bd6,0x3b81b848,0x3b65a04c,0x3b39ca38,0x3b092652,0x3b20d4e5,0x3bb182e6, -0x3ab705b0,0xba440602,0xbb1bc037,0xba42c3c2,0x3a920c84,0x3b3a8852,0x3b95c97d,0x3b946fa4,0x3b24a091,0x3aee3887,0xbb0fce1e,0xbb8c873e,0x3a588f77,0x3b201f19,0x3b232ff3,0x3b32de2a,0x3b5a36a6,0x3aef51f5,0x3b78e9bd,0x3b82fc0b,0x3b115cca,0x3aa285cb,0x39c39316,0x3aba2398,0x3b90bad7, -0x3be41744,0x3c34518b,0x3c0e9afa,0x3bf267ce,0x3bb0f86b,0x3bbc1a43,0x3b8ae008,0x3b480cb1,0x3ada4b98,0x3b02c33b,0x3bee1254,0xb9a39d6b,0xbb6af343,0xbbcb6217,0xbba7aaf9,0xbb198da9,0x3ad0a316,0x3b9973b9,0x3b5b19b8,0xba750e22,0xbac12d10,0xbbbab978,0xbc2d35df,0x38a7b47e,0x3b1594bc, -0xba7826fc,0x3bd04e24,0x3bd47fc2,0x3ab52d81,0x3bd6208c,0x3bc015d9,0x3b080cba,0xba99a29b,0xbafc00f3,0x3b098654,0x3beaf045,0x3c398411,0x3c80f1aa,0x3c4b1eec,0x3c163e14,0x3bbb50aa,0x3bf045f0,0x3ba27428,0x3b750d83,0x3a94705e,0x3ae09f27,0x3c3e83ee,0xba9e8204,0xbbdb2198,0xbc5a5066, -0xbbe17d9a,0xbab0eef2,0x3b4a8e77,0x3c274781,0x3c09ac8a,0x3b0affe4,0x392946a8,0xbc1f686a,0xbc44d2d7,0x3ae58ff8,0x3b84bf48,0xba075343,0x3b57949e,0x3bf5d040,0x3b3be28c,0x3c14ba32,0x3bb10b27,0xbb6a6e0a,0xbbac6741,0xbaef69ac,0x3b49ce3e,0x3c33ed09,0x3c7ed408,0x3c9d9c30,0x3c541cb1, -0x3c177986,0x3be43401,0x3c05570f,0x3bb0c1fd,0x3b467382,0x38f3c55e,0x3b3e9648,0x3c290bbb,0xbb3b80ec,0xbc4708ef,0xbc7ad482,0xbc563890,0xbbbd0070,0xb909c343,0x3c04f03b,0x3b91605f,0xbbaaf276,0xbbb1e733,0x3a59aad9,0xbb0f817d,0xbd1b039a,0xbcfb51d1,0x3cabf43d,0x3c2ab3c1,0x3c03d687, -0xb98fcd85,0xbb1c970c,0xbba0410f,0xbba1554e,0x3ab5f2b5,0x3b3ea11f,0xbaa9809f,0x3bc995ad,0x3c1b23ee,0x3cbe9bb1,0x3c641841,0x3c1e5fa7,0x3b816575,0x3c126277,0x3bec764f,0x3bb8c31d,0x3b9dc30d,0x3afe3c1b,0x3bf437b5,0x3c263225,0x3c54e640,0x3ce9afcc,0xbc9d9048,0xbcc87456,0xbb4344bc, -0x3b9534d8,0x3c2a172e,0x3b5f1ccb,0x3b2ac34d,0xbb9fc76a,0xbabba236,0x3c6b769f,0x3bf22a9d,0xbc533520,0xbc77dcd4,0xbc682e99,0xbbe0738c,0xbbf0193c,0xbb881dbd,0xbbbd1dd5,0xbaf76efc,0x3ac8745f,0x3ae485f2,0x3b52460c,0x3b36d703,0xbac5f9ac,0x3bde4d04,0x3c067389,0x3bd96327,0x3b81294f, -0xb9e3d3a5,0xbb578068,0xbbb0f0eb,0xbb18d499,0x3b4ce99f,0xbb733d8c,0xbc002e65,0xbc3c2fc3,0xbc561ab7,0xbc496bd3,0xbc6eaa90,0xbbfcd17a,0xbc7765d0,0xbd05e9a4,0xbc4d4de3,0x3c861d96,0x3be5d658,0xbbc88719,0xbba8315b,0xbc6973e8,0xbc5216df,0xbc0ac6eb,0xbc025b62,0xbbdafd0c,0xba47e9ef, -0xb7cbe3df,0x3936b730,0xb9a3044d,0x3af71784,0x3b5d57e4,0xbaac8e7e,0xbbe139bd,0x3b95cb54,0x3bac47ea,0x3b2b9d8b,0xba8f42be,0xbbc93a4e,0xbb61ff22,0xbc052e1e,0xbc0cc5bb,0xbba9e0ff,0xbbf95f17,0xbbfdeb91,0xbc5a0cbe,0xbca72327,0xbcacfd0e,0xbcc194b1,0x39afea92,0x3bd0114f,0x3b05e8e6, -0x3c88b56c,0xbcdd19d4,0xbc752d6c,0xbc72fb8a,0xbc846ca1,0xbc4890c3,0xbc2ddfd8,0xbc022695,0xbc63f931,0xbc032a99,0xbb7ce619,0xbb323d47,0xb9e3d85a,0xba2419fd,0xba557115,0x3a44ee85,0xbb4b8a7d,0xbb99e650,0x3b08b448,0x3b737830,0x3a838407,0xbb6c468f,0xbbf984a3,0xbba8cfcd,0xbc06f105, -0xbbc4a28a,0x3a26f1c8,0xbb941bf7,0xbbcadb32,0xbc05fe71,0xbc85c3fd,0xbc75da30,0xbc48adde,0xbc0486e2,0xbc077309,0xbc1a925d,0xbccf4cc5,0xbdac86ef,0xbd302dac,0xbc432a48,0xb9f3d435,0x3b443c7f,0xbbcb20d6,0xbc4f3fd8,0xbc324bf7,0xbbd03c3f,0xbbb826ac,0xbbb15bcd,0xba3a1771,0x3a95f221, -0xbb3cb877,0xbb6002b0,0xbb9d14c9,0xbbc2af1f,0xbac00b84,0x3a8489be,0x3c2c625c,0xbaaaf6b4,0xbb8432d4,0xbbbb98fc,0xbc0279f7,0xbbd4fd85,0xbb946a54,0xbbd8175e,0xbc23db02,0xbc15ed38,0xbc7e6c5d,0xbc9ef75e,0xbc602d0b,0xbccc1804,0xbd1083a2,0xbd36c968,0xbdaa8709,0x3d802af0,0x3da2a576, -0x3d89a67f,0x3d842f49,0x3d223772,0x3d48cd68,0x3d34f12e,0x3cb71e66,0x3c5ebe34,0x3c072daf,0x3bbc5837,0xba5b4ca2,0xba108691,0xb980b7fe,0x3abb05c3,0x3aa893b7,0xbbb014e8,0x3b109c17,0x3a952930,0xbbb023be,0xbbb4b8ab,0xbbce6200,0xba8913fe,0x3ad12427,0xba9bf15a,0xbc291b33,0xbca78a3a, -0xbcb3e34d,0xbc8cc36a,0xbc9afc84,0xbc929ea8,0xbcd1b913,0xbd441a8a,0xbd1ec278,0xbb2dcfb2,0x3d07e2d0,0x3d0d833b,0x3cfaefa8,0x3d0345a4,0x3cfff641,0x3ce81e76,0x3ce7c630,0x3cc98270,0x3c990815,0x3ca9ea4a,0x3c989c3e,0x3c998479,0x3c87961b,0x3c37ff79,0x3b9f9222,0xba3a096b,0xbace50a1, -0xbac9265d,0x3b176a63,0x3b0d4d5f,0xbb53253f,0xbc206e1e,0xbc78ab9e,0xbcae4c74,0xbcc4abf4,0xbcebbbcd,0xbce12dd8,0xbd01aab7,0xbd07d9b4,0xbcf0f39b,0xbd04de61,0xbccbf367,0xbc74b23c,0x3c6a5344,0x3ce61cb0,0x3d0aad9b,0x3cfd3b7e,0x3d30ddf1,0x3d08a28e,0x3d0377ce,0x3cde2a10,0x3caec6be, -0x3cae4c66,0x3ca129c2,0x3c8c4edc,0x3c886ba6,0x3c8b3646,0x3c77e53d,0x3c69482c,0x3c54f1cf,0x3c58450b,0x3c1aad05,0x3bf1ab42,0x3be533a9,0x3b95a614,0x3b1e2119,0xbaefa304,0xbbf7074c,0xbbffdee4,0xbc0cf412,0xbc008327,0xbbbbdce3,0xbb983321,0xbb601bf0,0xbb193c60,0x3b4c4eba,0x3c0db585, -0x3ca52120,0x3cfd39ec,0x3d29179b,0x3d4268ec,0x3d5194b5,0x3d455dad,0x3d085417,0x3cf4e1d0,0x3cc35a1f,0x3cc7a647,0x3ca9d581,0x3c92d2f1,0x3c87be95,0x3c82d1d7,0x3c6b1f70,0x3c6a4a23,0x3c43bf37,0x3c872fc3,0x3c77a99b,0x3c861a59,0x3c74d12f,0x3c739e06,0x3c4de96d,0x3c189700,0x3befcc62, -0x3b7f43c8,0x3ba743f9,0x3bbe936e,0x3bb492b2,0x3c20972b,0x3c65746d,0x3c91b9f6,0x3cb95a8c,0x3ce743ed,0x3cf39bc5,0x3d1372cb,0x3d32151c,0x3d4ad626,0x3d39d621,0x3d2dce8d,0x3d32daa2,0x3d1356d3,0x3d06a55e,0x3d0b6f25,0x3ce689ee,0x3cfde4e7,0x3cef66f0,0x3cf95af7,0x3cfa30d8,0x3ce316e5, -0x3ced8dbc,0x3cd44c79,0x3cc9e46a,0x3cb64ec3,0x3cabf46f,0x3c9f1866,0x3c911fc6,0x3c888c28,0x3c8714fb,0x3c8cd9c5,0x3c70ea6e,0x3c8bab6f,0x3c97d115,0x3cad58ce,0x3cbbde66,0x3cc66e57,0x3cc1d60c,0x3cb485b2,0x3cc596dd,0x3cb20f80,0x3cc408fa,0x3cd7ad96,0x3cb6399f,0x3cd34323,0x3cec9339, -0x3cdbb40b,0x3cef1521,0x3d070ca8,0x3cb685d3,0x3cbd4ff8,0x3cb042eb,0x3c9ca215,0x3c8cac57,0x3ca69a34,0x3c97d9b3,0x3c86d1fd,0x3c7f9f4e,0x3c84404f,0x3c87b6e6,0x3c8792e4,0x3c87534b,0x3c88af88,0x3c99695d,0x3ca04f86,0x3c8862b2,0x3c8ebea1,0x3c92c91f,0x3c967808,0x3c9764c2,0x3c9cff88, -0x3c9fd5ba,0x3ca6d3f8,0x3cad859b,0x3cb2d687,0x3cc5c83d,0x3cc5c0f6,0x3cd0d379,0x3cd8a907,0x3cd78a1f,0x3ce3291c,0x3cd5e665,0x3cc67120,0x3cc6169e,0x3cbf5f2f,0x3d0b7f2e,0x3b6d7a1d,0x3affc588,0x3af5797e,0x3b13dc56,0x3b0dcd88,0x3b1b8e28,0x3b17f053,0x3af8c404,0x3af04cd5,0x3b019391, -0x3b072a85,0x3b16e97a,0x3aefd81a,0x3ae195e0,0x3ad761d0,0x3b12094b,0x3b306a37,0x3b4c12c4,0x3b513913,0x3b530f07,0x3b49f194,0x3b3fa719,0x3b3390d9,0x3b23b0f5,0x3b158622,0x3b0ee529,0x3b301e4c,0x3aced9ee,0x3abc4576,0x3aace6a6,0x3abe16a6,0x3acbb670,0x3af536dc,0x3b17909e,0x3b070b3c, -0x3ac6957a,0x3afe39b4,0xb9548407,0xba0324e1,0x3a4f9578,0x3b555858,0x3b77fe22,0x3b4fecd5,0x3b196dc8,0x3b349bb9,0x3b3fbbb7,0x3b66ba40,0x3b9a5f60,0x3b255b16,0x3b05d400,0x3b11ee6b,0x3b5444da,0x3b9a6a20,0x3bcd3ceb,0x3bcc6d7b,0x3bbe4341,0x3ba25a46,0x3ba0eb95,0x3b94bc79,0x3b76660a, -0x3b3ac1c0,0x3b34f201,0x3ba0334c,0xb905d5e5,0xbb07401f,0xbb0d2018,0xb9aaa64e,0x3aafddec,0x3b0ea7ba,0x3b91d869,0x3b9c7d7e,0x3abb1822,0x39ae8a22,0xba8e5a20,0xbb0193e9,0x3a518993,0x3b45776e,0x3bce0930,0x3b18f674,0x3ad029c8,0x3b3973db,0x3b4470f8,0x3b86f15e,0x3b9b47cb,0x3b2d17cd, -0x3aab14ec,0x3acad910,0x3b8f397d,0x3bd8a7c0,0x3c2275f6,0x3c1b325e,0x3c12e8d0,0x3be0a5f9,0x3be508b4,0x3bb25793,0x3b8802e1,0x3b2ab8a8,0x3ae3806b,0x3bb12a9f,0xbb52d776,0xbba64faa,0xbb8980c3,0xbb586851,0xba3bdba7,0x3a52cbc9,0x3b91eb6d,0x3b5db79d,0xbb20ab27,0xba90fbbc,0xbbd8c05f, -0xbc0c06b4,0xbb52fe36,0x3b75289d,0x3bb0d193,0x3b800c4c,0x3b48e2fa,0x3b1eb801,0x3b93a528,0x3bae5322,0x3bc11bf1,0x3a984af7,0xba228f4c,0x3aec9c9b,0x3bc9c537,0x3c24e452,0x3c6c4a4f,0x3c603d9c,0x3c42bc39,0x3c0305fc,0x3c13e5c9,0x3be988b4,0x3ba1f3c0,0x3b18a04f,0x3af7f92c,0x3c1098bf, -0xbbdbc965,0xbc3ce569,0xbc53a759,0xbbc64c46,0xba5ae887,0x39f79222,0x3c002c09,0x3c0c2667,0xbb7d5962,0xbbc94cf7,0xbbaf192f,0xbbbd4529,0xbb2b95a0,0x3b5741a3,0x3ba61810,0x3a918257,0x3b56adfa,0x3b3499df,0x3bdc9f2f,0x3ba908ed,0x39cb4413,0xbb4a6bf1,0xbace5d4a,0x3afbeb53,0x3c0f5d8a, -0x3c5fb51e,0x3c94ef1f,0x3c6c9d5a,0x3c3ddf37,0x3c201cc9,0x3c23a920,0x3be4a3a4,0x3b957054,0x3aace998,0x3a90f604,0x3bc6266a,0xbc20de94,0xbc809ffb,0xbc2a3c0c,0xbc1bdc74,0xbb1d4fdb,0xbb091516,0x3bd285d3,0x3b4da989,0xbc247651,0xbbd20057,0xbbc3331b,0xbba70683,0xbcbb6f9d,0xbca71373, -0x3c89f618,0x3c6221eb,0x3c552b81,0x3a9d11d8,0x3a896f79,0xbabaee99,0xbb3c5117,0x3b51130d,0x3b51bfee,0xbaa29a32,0x3bc7f91e,0x3c19459e,0x3c9ca807,0x3c901c34,0x3c78a831,0x3bfa3bf8,0x3c060df3,0x3ba8fb86,0x3b661664,0x3a84dded,0x3ae3a9f5,0x3c1d84cb,0x3acd8735,0x3b146223,0x3c9c5bef, -0xbc80e86f,0xbc83913a,0x3aae776e,0x3c6a81a9,0x3c8f02fe,0x3bc48539,0x3b340c71,0x3b740e61,0x3bb92e6e,0x3b53bacf,0x3ac4eeda,0xbc147ea4,0xbc528e28,0xbc5304a9,0xbba50887,0xbbb10c06,0xbb205c42,0xbb58148d,0xbb14eca9,0x39d15e9a,0x3aeac8d0,0x3ba76445,0x3b931451,0x3afded96,0x3ba2f977, -0x3bb58920,0x3c26588f,0x3bc38fd5,0x3b1af1c7,0xbb22d1c7,0xbb369d29,0xbad96764,0xb6952579,0xbc1df096,0xbc489fc4,0xbb8c0a4a,0xbc315edb,0xbc4e11ae,0xbbd74c8d,0xbcb422e3,0xbcf31f63,0xbcfb8808,0xbc01f259,0x3c87e3b9,0x3ca499c6,0x3b3a8d43,0xbb2f0481,0xbc725ab4,0xbc425ac7,0xbbf52b97, -0xbc177a24,0xbbccd6a4,0xba6537ef,0x3a266009,0x39b8b105,0x3a93ac32,0x3b53f89a,0x3b78e88f,0x3a1c5453,0xba5c7683,0x3b8b2af9,0x3baf7941,0x3c274a3f,0x3b2bd559,0xbac5ed02,0x39fc8b9c,0xbb3f8b34,0xbb15650f,0xba423c5f,0xbbb2e7b2,0xbbe34f8c,0xbc18b253,0xbc637e15,0xbc6732e3,0xbbfff6e1, -0x3b58f7e2,0x3bdb4cbc,0x3aec59b4,0x3c1de676,0xbcbdcffa,0xbcadbe75,0xbc8457db,0xbc8d8540,0xbcca12f8,0xbc53b1a7,0xbc34e373,0xbc8109fd,0xbc1b0cfe,0xbb9cf1a4,0xbb1b7b92,0x39a2dd42,0x39b963a2,0x3a11ee26,0x3a5d6275,0xb9ac961a,0xba589684,0x3aa33baf,0x3b43c0fa,0x3c0e0056,0x3ad94171, -0xb9d8d03b,0x3a4d74c1,0xba246536,0xba1d297a,0x3a2ea008,0xbb5fe01f,0xbba8a67b,0xbbe1148f,0xbc63ee4c,0xbc4ce9e0,0xbaf32ceb,0xbb3bda8b,0x3915cde4,0xbaeaa7b9,0xbcb391a4,0xbd78cbc7,0xbd686c38,0xbd16ab51,0xbcad9366,0xbc5914c8,0xbc5a36df,0xbc57763c,0xbc2a48cc,0xbbe97667,0xbbc697d6, -0xbaab22db,0xb9b55550,0x3ab9e5cf,0xb9c95b64,0x38670949,0xbb0671dd,0xbba8f980,0xbb7195c3,0xba117c0e,0x3c5a3c94,0x3a96fce9,0xbb044474,0xbc05f944,0xbc069072,0xbc0e4048,0xbc18e5c1,0xbbd071f8,0xbbb62395,0xba74649f,0xbc27c91c,0xbc85b2fa,0xbc458a90,0xbcdd30ef,0xbd0c5ce5,0xbce186e0, -0xbd632db9,0x3cecd3c5,0x3d55100b,0x3d77e776,0x3d6c337d,0x3d2575a8,0x3d3e05cc,0x3d2053f6,0x3c53b6ad,0x3c1f739d,0x3b99dfa6,0x3ba270da,0xba3d06e2,0xba4682e0,0xbb823d6a,0x3a44fca6,0x3af042e3,0xbb448a39,0x3bbc7925,0x3b9ec852,0x3b05df1f,0xb99018a3,0xbb8ca068,0x3a7ad3ed,0xbaf68c3a, -0xbc241694,0xbc996bf3,0xbc75a9be,0xbc80e00a,0xbca7ed0f,0xbca3e39c,0xbc815277,0xbc832237,0xbd0b4c43,0xbd1ce05f,0xbd13c68e,0x3b98d42b,0x3d0e7c5d,0x3d07e3f3,0x3d0a7aa8,0x3d057274,0x3cf166a3,0x3cdb68df,0x3cbf5426,0x3ccb0d8a,0x3cb8e333,0x3ca55ed9,0x3c974473,0x3c7fbcac,0x3c4119e8, -0x3c3f6399,0x3baafb91,0x3b15e36c,0xbb1a56b3,0xbb3c6904,0xbb59114f,0xbbc0b794,0xbc49e004,0xbc83d201,0xbc9e0d99,0xbcc25f1e,0xbcc986d4,0xbc8b9b7b,0xbc9c48b2,0xbcb25b1e,0xbcc58b0a,0xbcfdfe64,0xbd08b2f9,0xbd161ed5,0xbc76947f,0x3b014b80,0x3c9c3c38,0x3cd0ed66,0x3d2d6b0e,0x3d17e451, -0x3d1b0ba1,0x3d092176,0x3ce02ea4,0x3cccd1ed,0x3ccb3765,0x3cc6f8a4,0x3cb1e535,0x3ca3241b,0x3c8a06e6,0x3c70bac4,0x3c67be79,0x3c6a51bd,0x3c32b06b,0x3bf144ea,0x3bb72266,0x3af2fb48,0xbb0efe90,0xbbbf161b,0xbc0e9e2f,0xbc1a6b86,0xbc184f5e,0xbc340a6e,0xbc2ad1c9,0xbc06b65a,0xbc31452b, -0xbc38f63e,0xbc55f1ea,0xbb90e793,0x3bd83b51,0x3c76fb17,0x3ccfb01d,0x3d0c95bf,0x3d37fb1e,0x3d2fb5ce,0x3d0ac3f8,0x3d00430f,0x3ce5d8f0,0x3cdfe670,0x3cd73c93,0x3ccaf7f5,0x3cbf4f60,0x3cb18ab8,0x3c9fb649,0x3c98dca9,0x3c84f77a,0x3c967c43,0x3c876acd,0x3c7a0f16,0x3c72fcd6,0x3c61451b, -0x3c45e062,0x3c1d4b7e,0x3bd448b4,0x3b8a48f3,0x3baa51b8,0x3b93afb4,0x3b6081d3,0x3bb4024a,0x3bd340f7,0x3bd439af,0x3c07f3fe,0x3c308eab,0x3c3248f3,0x3cb66edc,0x3d08a017,0x3d33b16c,0x3d3535b4,0x3d320112,0x3d36cbea,0x3d188b91,0x3d080af7,0x3d0e5245,0x3d11688a,0x3d0c73e1,0x3d02086e, -0x3d05d9b9,0x3d010d36,0x3cfa6be2,0x3cfc7cd3,0x3ceadca7,0x3ce19a9e,0x3cd1b206,0x3cc87b56,0x3cc3cb70,0x3cb2932a,0x3ca4bb4d,0x3ca53e5b,0x3c9c848d,0x3c9a7728,0x3c90779c,0x3c9577bf,0x3cae602b,0x3cbe5045,0x3cc75b05,0x3ccb5a6a,0x3ccd68a8,0x3ce51f13,0x3ce3b7c2,0x3ce81d93,0x3ce7729e, -0x3cb0bcfb,0x3cb25b42,0x3cc6a168,0x3cb06954,0x3cd65438,0x3d01aecb,0x3cbd98d8,0x3cbf1da9,0x3cbd7d30,0x3cb5ece3,0x3cafe84e,0x3cb68818,0x3cb07269,0x3ca7e306,0x3ca1843c,0x3ca34d5e,0x3ca45203,0x3ca3af60,0x3ca1be60,0x3ca0278b,0x3ca55e9f,0x3ca62b6f,0x3ca106cd,0x3c9edd0a,0x3c999eca, -0x3c93077d,0x3c9853b0,0x3c9abd25,0x3c9a7f25,0x3ca024e1,0x3ca3756e,0x3ca3402f,0x3cac5d95,0x3caaf86d,0x3cb77156,0x3cc47405,0x3cced82d,0x3ce21093,0x3cdf66b3,0x3ccfe28d,0x3cd02c85,0x3cc7b69b,0x3d124cc7,0x3b985280,0x3b2165a1,0x3b09cdfb,0x3b2541b5,0x3b2af6eb,0x3b6002e1,0x3b3f0f22, -0x3b1c54a9,0x3b15cec1,0x3b0ab9f7,0x3b18b69c,0x3b475421,0x3b17d806,0x3b07c9b3,0x3afb1d36,0x3b2fe170,0x3b513567,0x3b4e31d0,0x3b6e88d2,0x3b7937c1,0x3b725527,0x3b691c86,0x3b5db202,0x3b4b01a3,0x3b45feaa,0x3b3883d1,0x3b41a977,0x3afbe3d7,0x3ae49f0e,0x3ac634c4,0x3b0846fa,0x3b1d136c, -0x3b29accf,0x3b4346ee,0x3b2ae212,0x3afaddef,0x3b202070,0x3ac144c1,0x3a79f940,0x3b0c7a0a,0x3b99603e,0x3bf03cf4,0x3b71348b,0x3b2b48cc,0x3b865c8d,0x3b5e2138,0x3b85fc88,0x3bcb2ebc,0x3b7159a6,0x3b407664,0x3b355a17,0x3b624231,0x3ba7aba6,0x3bcde94c,0x3be3453a,0x3bde7e55,0x3bc75cf7, -0x3bbe8ef6,0x3baf5096,0x3b977365,0x3b826a38,0x3b6a8b15,0x3b9cce3a,0xba0f7fbd,0xbb18176a,0xbb08bfb4,0x3ababe0d,0x3b5fbfe0,0x3b5625c7,0x3bb44228,0x3bc08357,0x3b3d6869,0x3b1b1da3,0x3a89f21d,0xba203f15,0x3add7f62,0x3b8fbf05,0x3c3ccae9,0x3b469b82,0x3a8fdca0,0x3b988858,0x3b39e9e2, -0x3b91e989,0x3bf38709,0x3b751813,0x3b07d3b5,0x3b0193bf,0x3b93b178,0x3bd8b1fc,0x3c161cfe,0x3c2716cf,0x3c252978,0x3c042746,0x3c02a3b4,0x3bd8072a,0x3ba9c462,0x3b8b0c59,0x3b367b50,0x3b95b00e,0xbb8b2add,0xbbbfabd4,0xbbc17358,0xba9456ce,0x3b16c609,0x3b12d8cd,0x3bb1909b,0x3b771b51, -0xbab51490,0x3a8c31de,0xbae6c34f,0xbb41fd70,0x3ab0b335,0x3bd9587f,0x3c81579e,0x3b71457b,0x3aed3662,0x3bb0b08b,0x3b827cd5,0x3bac6124,0x3c25a676,0x3b4597d8,0x39c13c6a,0x3b1194b5,0x3bba3a93,0x3c1db5c2,0x3c5aa55f,0x3c757d4b,0x3c641bb8,0x3c2c01c3,0x3c2c4432,0x3c0b276e,0x3bd00749, -0x3ba45dd1,0x3b80c5d6,0x3bf4961d,0xbc0e3cbc,0xbc5c1bbb,0xbc666566,0xbb1b8491,0x3b866a79,0x3b083879,0x3c177e9a,0x3c192fa0,0xb92bf8cd,0xb95336f4,0x3aa95cdc,0xba832188,0x3a998eb6,0x3bca0070,0x3c827f41,0x3b0be35e,0x3a261419,0x3b888f44,0x3ba256ca,0x3bacee83,0x3bab6bf9,0xba647e3a, -0xbaafa35e,0x3ae4611e,0x3bf29434,0x3c465caa,0x3c87e0a7,0x3c8677d7,0x3c6ecd02,0x3c4b0942,0x3c492855,0x3c16a8c7,0x3be2d049,0x3b8f8333,0x3b3831a3,0x3baa62b5,0xbc44d9c9,0xbc8bdd34,0xbc6dc7d6,0xbb9f7eec,0x3b421f99,0xb84bf94d,0x3bdfd576,0x3b1d9210,0xbc036c14,0xba84c465,0xbbea5781, -0xbc317861,0xbc6f79a7,0xbc500f37,0x3be27f46,0x3c5399a2,0x3c760c3b,0x3bdb99a3,0x3b72fdef,0xb9fd1d0c,0xbac5efe0,0x3b884531,0x3b8dee77,0xb759d02b,0x3bd7e539,0x3c1a76b2,0x3c84a15a,0x3ca8bdcd,0x3c9f4571,0x3bf915bd,0x3c000702,0x3bb5883c,0x3b15f7f9,0x3a4cff2e,0x3b323388,0x3be00607, -0x3a2eeece,0xba0842fa,0x3b92cc51,0xbc4d469c,0xbc04f588,0x3c418d1c,0x3c883b79,0x3c9f1465,0x3c504598,0x3bbee033,0x3c2df846,0x3cbc1802,0xbba50282,0xbbbbcafe,0xbbd335ba,0xbc00a0e7,0xbc1aee9d,0xbbdafea2,0xbb96f7eb,0xbada59ef,0xbae4e0ce,0xbb49cc95,0xba8064db,0x3aba9c6a,0x3bb2bdb4, -0x3bb03ff0,0x3b9d17b2,0x3b90287d,0x3bab9201,0x3c4b4737,0x3c02951a,0x3baa4abb,0x3b17b401,0xbb37d3b6,0xbb8b8f0e,0xbbb25272,0xbc167e28,0xbc04c9c9,0xbab96edd,0xbab3dcf2,0xbba199af,0x3a809d85,0xbcf31952,0xbd1945ea,0xbcbfd01f,0xbbdf7fff,0x3c1e9da2,0x3cdd167e,0x3c3ec3e9,0x3a5ead0a, -0xbc3f55a3,0xbc28fb6e,0xbbc1e3aa,0xbc0ff69d,0xbbc1f127,0xbab52636,0x3a2d02eb,0xb99dd685,0x3ad232f6,0x3b349a78,0x3b96375c,0x3b394955,0x3b8a3812,0x3b7ee154,0x3badb738,0x3c7a46d4,0x3bc4c160,0x3b62e439,0x3b970a93,0x3b652f3e,0x3b1d4bc3,0xbb82df8f,0xbb88eec3,0xbb9331b4,0xbb946a4b, -0xbbe03a3c,0xbbb2a0eb,0x3b344762,0x3b38e37a,0x3b587598,0xbb1562d4,0x3ac1d6ca,0xbc7b2a07,0xbcd28598,0xbc79ba46,0xbc86a4f3,0xbd00396f,0xbc39b35c,0xbc0d84e4,0xbc595736,0xbc1eeeea,0xbbbb2318,0xbac02ae9,0x39aab1de,0x3a9283cb,0x3a618e7e,0x3acc5b49,0x3b0eb5bb,0x3b2159d0,0x3a80f0dc, -0x3b57ddff,0x3c86f31c,0x3bed0a82,0x3b9e8817,0x3b22c9ad,0x3b55c69c,0xb856f645,0xbbd0b659,0xbbd6cf1c,0xbbff8d19,0xbba9aa0f,0xbba4c13d,0xbb509704,0xbacfa2d1,0x3bca028f,0x3be1c98a,0xbbe3e0cb,0xbc438a66,0xbcbebb6c,0xbd45e73f,0xbd4218aa,0xbd032474,0xbcb45a04,0xbc6131ef,0xbc1519ff, -0xbbffa8d8,0xbbc76ed3,0xbba62fe1,0x3ab86d5e,0xb9e5866a,0x3aafbba6,0x3a9397fe,0x3acffe50,0xb99c335b,0xbb3244f6,0xbb64387b,0xbb039a04,0x3c51d68b,0x3b56eb08,0x39e84fd8,0xbbc2e5d1,0xbc1da681,0xbc6eb3c1,0xbc66c715,0xbc276dce,0xbbc805d5,0xbaa35743,0xbb8c66c7,0xbc3f7456,0xbc9d8d83, -0xbcc61183,0xbceb3eb1,0xbcdb77eb,0xbc9f0500,0xbc8c73ed,0x3c2d28d3,0x3d18fb2d,0x3d154517,0x3d005599,0x3d0107ca,0x3cc3df91,0x3a954253,0x3b570149,0xb995249b,0x3ab39d04,0x38a96a70,0x3a83dc74,0xbbae71f5,0x3b00dda3,0x3b524ea8,0x3af1a138,0x3afe6109,0x3b01bbc7,0x3c0023e7,0x3a884ef9, -0xbb8f6b97,0xbb9a659f,0xbc32cb65,0xbc3ceaba,0xbbf1acb7,0xbbc5f19f,0xbc2901fb,0xbc2e47ca,0xbc8735ac,0xbc5bd254,0xbc56b096,0xbc69af80,0xbccc442e,0xbd4cf218,0xbceb7220,0x3d111fac,0x3d1d9e9a,0x3d1cfdd5,0x3d17331b,0x3d0de7ff,0x3ce1cbf7,0x3ccabf56,0x3cfa86b6,0x3cc857ae,0x3ca99918, -0x3c89f8f5,0x3c69fef5,0x3c5135d2,0x3c786d0b,0x3c13d47a,0x3b593a4b,0xbb8352f8,0xbbdcf736,0xbc0f09c6,0xbbe6ae51,0xbc432305,0xbc656af1,0xbc3f4d6c,0xbc8bc0c8,0xbc88a18a,0xbc53f149,0xbc7643a9,0xbc927716,0xbca36276,0xbcd86aec,0xbd038dd6,0xbd21781a,0xbd0b3ece,0xbca523d1,0x3c0c728e, -0x3caefd5f,0x3d194040,0x3d1a13b3,0x3d239dac,0x3d17c43a,0x3d034837,0x3ce5b43f,0x3ce9a9f9,0x3cf93534,0x3cd57849,0x3cb9b4e2,0x3c96bb9e,0x3c767cbf,0x3c57aafb,0x3c44e148,0x3c1839b0,0x3bba542d,0x3b3c664b,0x3a996dc7,0xbb221afb,0xbb5dc094,0xbbd1b7e1,0xbc0ad619,0xbc183cc4,0xbc4fb88f, -0xbc5b59e1,0xbc655cc0,0xbc83957f,0xbc88f0fd,0xbcb345b1,0xbc663019,0xbbf283c9,0xbb27c53b,0x3b8312f4,0x3c66ea07,0x3cfa4d58,0x3d01d817,0x3ce2eb3a,0x3ce47d39,0x3cd87ffb,0x3ccfaac0,0x3cd52aae,0x3cddd6c1,0x3cdc900f,0x3cd1c4b3,0x3cbd19e5,0x3cb30ad7,0x3ca14a88,0x3c95f7c1,0x3c7c4204, -0x3c3f56a8,0x3c49a425,0x3c205efe,0x3c159f13,0x3befd84f,0x3c045330,0x3b89f9b4,0x3b50c1db,0x3ae79180,0xb92fc91b,0xba6cd3e6,0xbb65540b,0xbbb56f98,0xbba677b6,0xbb946bcf,0xbb758b41,0x3bd8afe7,0x3c829ddf,0x3cc81ed9,0x3cf860cb,0x3d069179,0x3d0b746a,0x3cf57a55,0x3ceb3ea7,0x3cf66baa, -0x3d0dca3d,0x3d04fe27,0x3cf9e040,0x3cfd7d6e,0x3cef9362,0x3cf9dfd3,0x3cee0399,0x3ce3e995,0x3cda60dc,0x3cd027c9,0x3cc8f26f,0x3cc86865,0x3caf18ae,0x3c984aa2,0x3c988047,0x3c6131d4,0x3c6d6fa1,0x3bfdde9d,0x3c125e7d,0x3c4e844c,0x3c765d18,0x3c8b6619,0x3ca044b7,0x3cb1e769,0x3cc30bcf, -0x3cced159,0x3ccb168d,0x3cc55291,0x3c9e8bcd,0x3c9ba712,0x3ca01360,0x3c8415b2,0x3cafce7f,0x3cda37b9,0x3cb499e3,0x3cb2e034,0x3cb6b5bd,0x3cb62940,0x3cb71f64,0x3cb8a431,0x3cb9e6b5,0x3cb9e028,0x3cb593c0,0x3cb453cd,0x3cb25f83,0x3cb058f2,0x3caced2b,0x3ca9ab2d,0x3ca0ae0c,0x3c9b9177, -0x3ca60460,0x3c9c8139,0x3c9210b2,0x3c88eef7,0x3c9123fe,0x3c8e8caa,0x3c8aa40d,0x3c8a6299,0x3c8790af,0x3c84189e,0x3c872588,0x3c89e57c,0x3c96539c,0x3ca4a6e4,0x3cb1fe9d,0x3cc56f68,0x3cccb465,0x3cc34c0c,0x3cc3dc1a,0x3cbc4154,0x3d136f18,0x3bb66d9f,0x3b4ef4d8,0x3b4c3667,0x3b4caedd, -0x3b4f2be6,0x3b96276a,0x3b5e7032,0x3b402e4c,0x3b4a1677,0x3b2e1e4d,0x3b3f545c,0x3b7ff30d,0x3b44e9e9,0x3b2eb412,0x3b24d447,0x3b4fec79,0x3b6c09b5,0x3b660735,0x3b84a606,0x3b8a68af,0x3b8c90cc,0x3b869d64,0x3b80af07,0x3b6f5738,0x3b73717f,0x3b5ee5e8,0x3b446b1b,0x3b1c431d,0x3b19eb18, -0x3b09ecfd,0x3b417ac0,0x3b559498,0x3b46363b,0x3b6bdc30,0x3b56d7bb,0x3b24c0e3,0x3b4686a0,0x3b2e2722,0x3b013a7b,0x3b42764e,0x3bc0940e,0x3c249954,0x3b86d011,0x3b4a6fbc,0x3bb04488,0x3b816c8c,0x3b9c0463,0x3be6ee88,0x3b9147ed,0x3b73a47c,0x3b635f21,0x3b8066d6,0x3bb4ac2d,0x3bced03b, -0x3bf161b4,0x3bf56105,0x3be70779,0x3bd1fe34,0x3bbea4f2,0x3bacc331,0x3b9c757e,0x3b7cfa94,0x3b63db36,0xba164c9a,0xbaf7de69,0xbad02842,0x3b52193e,0x3b9ec64a,0x3b490b9b,0x3bd01da0,0x3bd4717a,0x3b5391de,0x3b5de1c7,0x3b2f1955,0x3a920808,0x3b292590,0x3bba2718,0x3c70a2d8,0x3b814e96, -0x3aa9c3d6,0x3bd1652d,0x3b53e0c5,0x3b9a1b65,0x3c147b20,0x3b918c39,0x3b3844e6,0x3b304457,0x3ba34fd4,0x3bdc4596,0x3c0894ec,0x3c2c700e,0x3c2b339f,0x3c143264,0x3c08fa77,0x3be89cc6,0x3bc1e5fe,0x3bb24a6f,0x3b52599c,0x3abf673a,0xbb9a5ede,0xbbac0a65,0xbbb213af,0x3adc7fc0,0x3b98ac87, -0x3ac6fee4,0x3bc9dd79,0x3b8ef2b8,0x38bd2675,0x3b05bc58,0x3986663f,0xbb4592d4,0x3b4639d6,0x3c066b04,0x3cb1783f,0x3b7cdd2c,0x3aad301e,0x3bfe4790,0x3b88d333,0x3bb3a22c,0x3c501cca,0x3b82d78b,0x3a8c685d,0x3b45c89e,0x3bbe860d,0x3c1b617f,0x3c462ef2,0x3c7a247f,0x3c759508,0x3c48cf6d, -0x3c31f9c1,0x3c0d8e25,0x3beaaee1,0x3bd57f26,0x3b7f4fe0,0x3a9affd9,0xbc2451a9,0xbc63efdc,0xbc6774c3,0x3a9c3bd8,0x3bdc4559,0xb9f4e7b5,0x3c289e28,0x3c1e06c5,0x3901a29b,0x3b150b58,0x3b348096,0x3977215a,0x3b176224,0x3be2723e,0x3cb8c3a1,0x3b3da5b0,0xb9e21eb2,0x3bdcbe7e,0x3b8875fd, -0x3bb1452e,0x3c1f08ec,0x3a7d6092,0xbaa04eba,0x3b4592f0,0x3bf9138f,0x3c407524,0x3c762b70,0x3c8e15dd,0x3c865e41,0x3c5eb88d,0x3c4d2b52,0x3c1e794b,0x3c093d42,0x3bd1d1e7,0x3b157363,0xbadbd388,0xbc61f669,0xbc8919ce,0xbc6c365a,0x395d1ca5,0x3bcde0cc,0xbaf82263,0x3be37a5d,0x3b0f3b43, -0xbb853f6a,0xb9668366,0xba43e2eb,0xbc14e39e,0xbc2e8e00,0xbc2585b9,0xbb89ba14,0x3c2800b0,0x3c7cfc3d,0x3c3f60cc,0x3bba680b,0xb9c54fdb,0xbaa34744,0x3b860da6,0x3bb94779,0x3ad62099,0x3bf900be,0x3c1ead83,0x3c655e0a,0x3cb4d5f0,0x3ca5944d,0x3c16e64a,0x3c29be8c,0x3bcf7f7b,0x3aca121f, -0x3ae6d82e,0x3b63b581,0x3ba208bb,0x3badda40,0x3b7a860f,0xbb86277e,0xbbc12951,0x39942a56,0x3c90242b,0x3c8fd2e4,0x3cacae03,0x3cac87e1,0x3c2c36a9,0x3bd4d915,0x3d13e9f9,0xbbad2100,0xbc171535,0xbb596700,0xbb1b76b4,0xbb50d4a7,0xbbb4c137,0xbaf8f6f5,0xb990ac7f,0xbabcaa4c,0xbb1e5392, -0xba66f8ec,0x3b2e5430,0x3bbad6e5,0x3bcc4a33,0x3bd07f2a,0x3b85ac50,0x3ba5d3db,0x3c3c502c,0x3be70886,0x3b98025f,0x3b4b73ff,0xbb903e39,0xbbd07c75,0xbb8ffd57,0xbbbb1195,0xbaa22764,0x3b71af73,0x3bbf51d6,0x3a6cb148,0x3b8c1404,0xbce51a2c,0xbd0ffc60,0xbc624f74,0xbc21835a,0x3b1d7aa8, -0x3cb14ded,0x3c1c8c58,0xb95da49e,0xbc0e8a1a,0xbc2a1052,0xbbcb8773,0xbbde1cc4,0xbb91b46b,0xbad70888,0x3a16734f,0xba8449b7,0x3ad8a209,0x3b221643,0x3b90be3f,0x3b8f2f4b,0x3c0e9275,0x3b429472,0x3b8fa202,0x3c873268,0x3c01d6b3,0x3ba3e73f,0x3b7fc20d,0xba29c8c6,0xbad3f240,0x3a1cfdbb, -0xbbaf7a41,0xbbbc18a6,0xbb119ff7,0xbb36cbdd,0x3a24af3e,0x3bc61d4a,0x3a9b115a,0x38c06521,0xbbb93933,0xbb3bf74a,0xbbde2ea2,0xbcb6b1db,0xbc8ae4af,0xbc910fdb,0xbd02d47c,0xbc575f15,0xbc1b5e41,0xbc1b11f0,0xbc18575b,0xbbc206f4,0xba52c640,0x3905220f,0x3aad224c,0x3ab69ee9,0x3b0a61a1, -0x3b68e05b,0x3bb1c1b5,0x3a8777e6,0x3ba0595a,0x3ca0c153,0x3c19a27d,0x3bae2cb3,0x3afc6ff8,0xbb5f02dc,0xbbc103ed,0xba48012c,0xbc23a401,0xbc2b9e8e,0xbbb71ba1,0xba45bb0e,0x3b40a0d6,0xbb7846a4,0x3c262012,0x3c1351fa,0xbc190b6e,0xbb1bf4b5,0xbb68d728,0xbcbaaba3,0xbd37b844,0xbd0c93b1, -0xbcc8db79,0xbc5667cb,0xbbbae58f,0xbbc4ce4c,0xbb9104c2,0xbb35cc1b,0x3ac078d9,0xb9f57155,0x3a3feeed,0x3b5fb104,0x3b01384a,0x384b4164,0xba8052a7,0xbb039224,0xba52a873,0x3c287cd9,0x3ba8d6b5,0x3ada5e23,0xbba3efe1,0xbc0e9b16,0xbc57eabe,0xbc016e39,0xbc115c29,0xbbc924ae,0xb9e45dc9, -0xbb339174,0xbc05a717,0xbca38e28,0xbcbb4cd4,0xbcdaf346,0xbcd078d9,0xbb93e996,0xbd64fbcf,0xbd0c5c0d,0x3beda2df,0x3c25893c,0x3c86f4cb,0x3c33dbe8,0x3b897dff,0xbc088423,0xbb861493,0xbbbd81ca,0xb9fed41c,0x3b057d90,0x3b4b6a02,0xbb895dbb,0x3aba21a2,0x3b5e8f8a,0x3bda2655,0xba8ec75b, -0xbaa1d05d,0x3bda9d2b,0x3a778fd4,0xbad40d2d,0xbc066716,0xbc0f9335,0xbbe17205,0xbb9c8813,0xbc3d4087,0xbc444eed,0xbb5efd4f,0xbc0cb9f8,0xbbe0a67c,0xbc0025be,0xbb3b892f,0xbc52cb43,0xbd31440e,0xbd577680,0x3ced640c,0x3d2018d7,0x3d2540ad,0x3d210562,0x3d1bf585,0x3cf74cba,0x3cdb48fc, -0x3cfaec8a,0x3cd53aa7,0x3cb18731,0x3c6b906d,0x3c53981a,0x3c47d5af,0x3c4a515e,0x3c07cd11,0x3b05ef63,0xbb82fbfd,0xbbe3e15a,0xbc0c30cc,0xbb674b8c,0xbbe5552d,0xbc146cc9,0xbbf30e15,0xbc217c6b,0xbc20d9a0,0xbc16c300,0xbc0b2b89,0xbc40fd77,0xbc801576,0xbc96a832,0xbccdb155,0xbd05a3fb, -0xbd176644,0xbcfa446d,0xbbd85f26,0x3c4e6a8b,0x3cf61915,0x3d1866e2,0x3d2026b0,0x3d1cd660,0x3d113691,0x3cf85ede,0x3cfcd5b2,0x3d029380,0x3ce7db61,0x3cc79357,0x3ca0f2ea,0x3c845382,0x3c4d6093,0x3c245ab1,0x3bf86cce,0x3b98e29f,0x3aea9162,0xb8cce722,0xbb1a9a83,0xbb3270d4,0xbc0b9ef4, -0xbc21d4ac,0xbc4430ce,0xbc59b574,0xbc6e4ee4,0xbc82399d,0xbc8fe9ca,0xbc9a533f,0xbccc72ad,0xbca32286,0xbc96ea8d,0xbc9824b6,0xbc44f48f,0xbb038c6f,0x3c5528ee,0x3ca996a5,0x3caf2d79,0x3cc49786,0x3cc4082d,0x3cc17d24,0x3ccf4758,0x3cded686,0x3ce4524b,0x3cdf530f,0x3cc65b41,0x3cb85184, -0x3cad21e1,0x3c8c56c3,0x3c64abf6,0x3c242997,0x3c230171,0x3be39141,0x3bc82195,0x3b65e031,0x3b82dae0,0xbb041cea,0xbb8ff59c,0xbbb47dc8,0xbc09fbc7,0xbc2d490f,0xbc633796,0xbc7b53a5,0xbc721159,0xbc755191,0xbc66a43c,0xbc01ce8a,0xbb28f6ce,0x3afecc7c,0x3c3921da,0x3c934e33,0x3cb5cf39, -0x3cad0b48,0x3cb36a96,0x3cb8a9d9,0x3cf0a148,0x3cd7cc49,0x3cd1f823,0x3cd5a4b5,0x3cc7071f,0x3cdee477,0x3cc4da22,0x3cbf63b8,0x3cb0879c,0x3ca77558,0x3c9999d4,0x3c94882b,0x3c71f2b5,0x3c4b4b2c,0x3c3ebbea,0x3bcefd51,0x3bd87607,0x3b03293a,0x3b6d8736,0x3ba36196,0x3bdebdf6,0x3c0aa66b, -0x3c3036a7,0x3c4c1c07,0x3c695fba,0x3c8be9ab,0x3c918219,0x3c9799da,0x3c91da18,0x3c97b839,0x3c8ff1fb,0x3c57d09b,0x3c86770c,0x3ca66ae0,0x3c8de7eb,0x3c89a70f,0x3c9d9bbf,0x3cab55fd,0x3cb85429,0x3ca01419,0x3cb072d2,0x3cc38612,0x3cc03079,0x3cbbf70f,0x3cb85a4d,0x3cb618e0,0x3cb4be36, -0x3cb22efa,0x3c92c7b5,0x3c814614,0x3ca3853d,0x3c9096a4,0x3c7a1d1c,0x3c53f022,0x3c58cf2a,0x3c5481fb,0x3c4ab031,0x3c3f00ac,0x3c337ba6,0x3c2aa1a6,0x3c2d4e3c,0x3c387ddf,0x3c48a112,0x3c5bd72e,0x3c6f2c23,0x3c856e7d,0x3c914718,0x3c922459,0x3c96cbc0,0x3c92a90a,0x3cf0cbcd,0x3bd628d7, -0x3b82c4a4,0x3b942ee7,0x3b965f4c,0x3b8be154,0x3bb491d9,0x3b852ea3,0x3b74c27e,0x3b82c979,0x3b640b78,0x3b72f88b,0x3b97ee40,0x3b766648,0x3b60dc17,0x3b5aae76,0x3b800326,0x3b8a3197,0x3b8426e4,0x3b9a06d4,0x3ba0e6ac,0x3ba3f589,0x3b9923fd,0x3b912dd5,0x3b890f5c,0x3b8c643e,0x3b7ec41c, -0x3b48b826,0x3b41c6fa,0x3b469c53,0x3b319e8d,0x3b789cf1,0x3b864d61,0x3b6c7f52,0x3b8d09b4,0x3b8536a5,0x3b57eecc,0x3b74dd91,0x3b73eb1f,0x3b7bc6c0,0x3b827f38,0x3be64700,0x3c3c82cd,0x3b9ebb67,0x3b7f2cf1,0x3bcc5b71,0x3b94c450,0x3bb497e6,0x3bf089da,0x3baaca6d,0x3b97ad50,0x3b8e67ac, -0x3b96f5c1,0x3bc24400,0x3bd1d629,0x3bfe623f,0x3c051d71,0x3c0493cb,0x3be9e637,0x3bd6945a,0x3bc3588e,0x3bad57ba,0x3b7a3fe5,0x3b045ce7,0xb9826b55,0xba6daa29,0xba0f013c,0x3ba27267,0x3bc933de,0x3b5a7388,0x3bdfc14b,0x3be3031b,0x3b7bb299,0x3b86e011,0x3b8b4ca8,0x3baa609d,0x3bb92dfd, -0x3c037637,0x3c8246ca,0x3ba7ccab,0x3b0e8278,0x3befe09b,0x3b87ce28,0x3baab157,0x3c1ac14f,0x3ba9d200,0x3b7aedd7,0x3b6e48ee,0x3bb744e6,0x3bdd7ec6,0x3bfc32aa,0x3c2f3d18,0x3c3269f9,0x3c2cf93f,0x3c0f4d47,0x3bf25c89,0x3bcdfad2,0x3bba7396,0x3b3c2808,0xbac96368,0xbb97dac1,0xbb78e681, -0xbb856367,0x3b88b119,0x3bde3649,0x3af2a395,0x3be8046f,0x3bb40499,0x3ac530c9,0x3b4e3376,0x3afbb85e,0x3a29d109,0x3b7737ea,0x3c238c44,0x3cc4029d,0x3b9609c6,0x3ad3c2c4,0x3c0edeb9,0x3b91e323,0x3bb62ea7,0x3c5546a5,0x3b967619,0x3b049257,0x3b6b60c1,0x3bcce3ff,0x3c14dd0c,0x3c28039d, -0x3c75f23b,0x3c7aac9e,0x3c5df143,0x3c3b905f,0x3c16865e,0x3bf57ede,0x3bd48aea,0x3b185a09,0xbbac51c3,0xbc340d66,0xbc504277,0xbc3e0443,0x3b9763ad,0x3c0ebf9b,0xba54288e,0x3c22e581,0x3c1ef064,0x3a09b8da,0x3b541b6d,0x3ba6b450,0x3befb4fd,0x3bba7856,0x3c25c6db,0x3cd11b28,0x3b7e775b, -0xb7c9fafe,0x3c13df69,0x3b9244c0,0x3bb91240,0x3c4a83c3,0x3b1b77f7,0xba2816b1,0x3b909733,0x3c064c7c,0x3c3b1760,0x3c57ff41,0x3c8f9e2e,0x3c8d447b,0x3c7765ac,0x3c47d707,0x3c16caf8,0x3c075546,0x3bc2876b,0xb8f98336,0xbc09d142,0xbc740cd7,0xbc690ade,0xbc428fdf,0x3b819d80,0x3c1c72a2, -0xbabfed7c,0x3c0e3c2e,0x3b748ef1,0xbadd01ce,0x3969e45e,0x3ad3250d,0xbbb46509,0xbc0fa730,0xbc31b99d,0xbc22e589,0x3c1e06bc,0x3c873af0,0x3c6b4f4c,0x3bf2c56c,0xb9d36128,0xbacff2e3,0x3b7b9063,0x3bdbfd6e,0x3b33e59e,0x3c1b9850,0x3c28f224,0x3c52c34f,0x3ca4a3f9,0x3c9cdae9,0x3c7161d5, -0x3c2e72c2,0x3ba4a018,0x3ab27e9c,0x3abb05fc,0x3b4008fd,0x3b96720b,0x3bd64cd4,0x3bcc02a6,0xbb9321f0,0x3ba1ecbe,0x3beaf34a,0x3c328717,0x3c495d8f,0x3ca3a47f,0x3d0027e0,0x3c6f71f4,0x3ac9a9bb,0x3d2b91bc,0xbb9585a5,0xbc2eabbf,0xba91fea9,0xba83de3b,0x3a5855dc,0xbb05ffa5,0x3ab4587f, -0x3b44ba44,0xb93454e4,0xba8d7636,0xba0cd2c8,0x3b9b3a82,0x3bb2e527,0x3be59e95,0x3bfe46dc,0x3ba9ddd2,0x3baf94df,0x3c1ce80e,0x3ba075f3,0x3b206648,0xba9a4d29,0xbb85e09c,0xbb92ce25,0xbae7c4e2,0xb9211d86,0x3bbb6bd2,0x3c099984,0x3bc7a223,0x3ba211d2,0x3c530e31,0xbc900b38,0xbcdea640, -0xbc271e19,0xbc4bdb93,0x392596be,0x3c84d8eb,0x3b83b53b,0xbb460ea0,0xbbe21ae4,0xbc3a8127,0xbc0a98fc,0xbb8a9ddf,0xbb2f3a4b,0xbac352ef,0x3a00b2c3,0xb9d25dd3,0x3b278597,0x3b147216,0x3b8d0ed9,0x3bc2dd24,0x3c2118b5,0x3b377562,0x3b8c0db2,0x3c7a0519,0x3bf95ca9,0x3b980e41,0x3a30c006, -0xba6978dc,0xba91a592,0x3b396f83,0xbaff6afa,0xbabf8494,0x3bb12896,0x3b0a9a31,0x3bbc921b,0x3c131191,0x3ab1c204,0x3a2fe86d,0xbbb66023,0xbb85d84b,0xba2daea5,0xbc359e25,0xbc804d19,0xbc888d44,0xbcdcc90b,0xbc6fee3f,0xbc3c5e48,0xbbb4ea01,0xbc03a603,0xbbab794e,0xb97dc2f3,0x3973310d, -0x3af6306e,0x3af7313d,0x3b5e53a5,0x3ba0ae8d,0x3bd67f0d,0x3af226af,0x3bc210f6,0x3c80e0b9,0x3c00fcc8,0x3babf77c,0x39a7e5e1,0xba631fc5,0xbaf951a3,0x39a2bd87,0xbc032f12,0xbc044dac,0xbb1da700,0xba6693a9,0x3b0aaf8d,0xba76abd8,0x3bdcc4f5,0x3c03dce2,0xbb974fa6,0x3af73bf6,0x3ad82473, -0x380169e7,0xbd05453d,0xbcfaa5ef,0xbcb6b3ae,0xbc5b3ed9,0xbb853530,0xbb728db6,0xbb193372,0x394a5b99,0x3af94f82,0xba266d4b,0x38c72884,0x3baebf2c,0x3b342fd4,0x3ab86029,0x3a5e188c,0x3b0abfa5,0x3b3645c9,0x3bafad00,0x3babc766,0x3b0ee574,0xbb6d5737,0xba5d14d4,0xbb664a8f,0xbb701a69, -0xbc1689fb,0xbc0524ea,0xbae72d01,0xbbc526d4,0xbc099554,0xbc6c6946,0xbcbb13fd,0xbce762ed,0xbca0a18a,0xbbb1e77e,0xbd8cb26f,0xbd84f844,0xbca203b2,0xbc44cd54,0x3b28f55f,0xbbc5241c,0xbc3de618,0xbc536aa2,0xbc240d5a,0xbc2f9f0c,0xbadf12a2,0x3b5753f8,0x3ba227e2,0xba9af31f,0x3a1eba45, -0x3b2bdaa7,0x3c02b8c2,0xbaba5762,0xba88f722,0x3bc059a4,0x3baa4794,0x3b80ca4e,0xbbaf5022,0xbbfd7177,0xbc10e423,0xbc0574d6,0xbc3cee23,0xbc0955e7,0xbbab70ec,0xbb5b7304,0xbb256b29,0xbba0051f,0xbb13fdf1,0xbc1ecd45,0xbce2d520,0xbd612447,0x3c3b7d51,0x3ce71b95,0x3d0938e2,0x3d07bbf3, -0x3d0830ca,0x3ce395ab,0x3cc7df23,0x3ce1fb77,0x3ccc0722,0x3cb756cb,0x3c4cd2c2,0x3c3d7a17,0x3c1b6b06,0x3beaf7ff,0x3bd4de9c,0x3b10d4ed,0xba1d8c28,0xbb6433d1,0xbb95013d,0xba93cba2,0xbb40c53d,0xbba1fd91,0xbbc89343,0xbb7c0eda,0xbba8bddc,0xbb8bee83,0xbb6ec16d,0xbbe956ee,0xbc492089, -0xbc3de351,0xbc909dcf,0xbccd2eb4,0xbd01d0f9,0xbd041d87,0xbcbdbae7,0xbb5e0554,0x3c9698a7,0x3d0938f4,0x3d0a5dd8,0x3d117be1,0x3d15dc4a,0x3cf500d4,0x3cfd1e8c,0x3cf227d9,0x3ce03c55,0x3cbd1f63,0x3c9e6cad,0x3c858d8d,0x3c5952ee,0x3c262e49,0x3c009cba,0x3bb419e8,0x3b16ac99,0xbae675a3, -0xbb978d20,0xbbdfb637,0xbc48fafc,0xbc59afb3,0xbc855582,0xbc73afcf,0xbc866fa7,0xbc83e582,0xbca1684e,0xbcae5885,0xbcd9308b,0xbcc07a11,0xbcc8b022,0xbce44533,0xbcab4b7c,0xbc49844f,0xbb37c6ab,0x3c217cf6,0x3c8c0b31,0x3cabb9ce,0x3cc2ed7e,0x3cc38ae0,0x3cde0c1c,0x3ce496b3,0x3cdfc0b6, -0x3cd21d63,0x3cba8745,0x3ca7dbaf,0x3ca257cc,0x3c71c2a4,0x3c579fc5,0x3c228112,0x3c0ee6e4,0x3bbfefe8,0x3b741061,0x3a0f4a8b,0xbb3b4452,0xbbfd916e,0xbc2a5120,0xbc3c6794,0xbc7d016e,0xbc8df91a,0xbca095d5,0xbca7304f,0xbca6d741,0xbcb195be,0xbcb6f077,0xbc99598e,0xbc8617a1,0xbc66be6d, -0xbb8fd325,0x3b914985,0x3c3cfb7a,0x3c6199eb,0x3c41a0e2,0x3c4c35f3,0x3ca7328d,0x3c81f5eb,0x3c80836b,0x3c8ddb0c,0x3c824e25,0x3cacf83e,0x3c844188,0x3c83d6fa,0x3c5d4a1c,0x3c44dea3,0x3c1181f5,0x3beefac3,0x3bb586aa,0x3ba3e3f7,0x3bae5911,0x3b28394f,0x3b98478c,0x3b5cb68a,0x3b823165, -0x3b2f2faa,0x3b670395,0x3b559cd7,0x3b597dd1,0x3b6914f5,0x3b98505b,0x3c08445a,0x3c1a9e29,0x3c26f296,0x3c38e921,0x3c38e945,0x3c2be065,0x3bdefb0e,0x3bfef345,0x3c2ad5e6,0x3c12f2d9,0x3c09d0b0,0x3c43249b,0x3c7ad6ca,0x3c9733dc,0x3c458331,0x3c76ddbf,0x3ca18084,0x3c9dcdbf,0x3c958c57, -0x3c90121a,0x3c8de3bf,0x3c8eb122,0x3c8b2bd7,0x3c3d3314,0x3c0b0bb3,0x3c7524d2,0x3c37dc7e,0x3c02bb77,0x3ba13669,0x3b954cee,0x3b888505,0x3b5b4707,0x3b234972,0x3b062c10,0x3aca3396,0x3ab1a9f5,0x3af0d60d,0x3b083795,0x3b2adcfa,0x3b7077ec,0x3b956500,0x3bd04248,0x3bf71336,0x3c10a25f, -0x3c148455,0x3c626ca1,0x3be65ebc,0x3b908a8d,0x3b9fabef,0x3ba6900e,0x3b9ee861,0x3bc0adb2,0x3b8b785d,0x3b8546bd,0x3b90408e,0x3b84a776,0x3b8ab6b4,0x3ba011a4,0x3b8ac3ad,0x3b831f11,0x3b801602,0x3b88adb7,0x3b90e086,0x3b8ec427,0x3ba30fbf,0x3bab3318,0x3bb3506d,0x3ba44bee,0x3b9a653c, -0x3b9197e9,0x3b948348,0x3b8741eb,0x3b508d1e,0x3b56ffed,0x3b590d61,0x3b44bb97,0x3b8609f4,0x3b8f21b0,0x3b7c0766,0x3b930d83,0x3b8f284e,0x3b71d8a1,0x3b86e6b3,0x3ba5dc20,0x3bacece1,0x3bc217b8,0x3c00d56b,0x3c3f58f4,0x3ba81194,0x3b8dc20f,0x3bd148f4,0x3ba3ee83,0x3bc31c09,0x3be728fc, -0x3bbc3c92,0x3bade360,0x3b9e88b4,0x3ba08552,0x3bc155c8,0x3bcc0d76,0x3bfddeec,0x3c0834d4,0x3c0f4827,0x3bf785ac,0x3be23539,0x3bc9fd6e,0x3bb0d10d,0x3b70a204,0x3ab8531b,0x398fbd9a,0x391f14bd,0x3a50a57c,0x3bb3b2f4,0x3bd17eba,0x3b85e634,0x3be1d170,0x3be82a59,0x3b93b732,0x3ba89be6, -0x3bc27bba,0x3bef88bc,0x3c07990e,0x3c1d3aca,0x3c7e7559,0x3bb3798b,0x3b277cb4,0x3be80e3f,0x3ba2ef59,0x3bc64daa,0x3c0d22dc,0x3bc47b80,0x3b9e3d77,0x3b85aaf1,0x3bb7670b,0x3bcdca61,0x3be983a2,0x3c290e84,0x3c3401a7,0x3c4670ea,0x3c1718f0,0x3bff4900,0x3bd2af28,0x3bbb62ee,0x3b406189, -0xbb163dbb,0xbb7a8aff,0xbb2c722b,0xbb398b4f,0x3b972ae6,0x3bdfca6e,0x3b132f8b,0x3bdf8984,0x3bc1e212,0x3b1fb88f,0x3b97cc0a,0x3bb9f540,0x3ba3cb7e,0x3c091b09,0x3c4d3cb1,0x3cc2fab2,0x3ba69ca2,0x3b067e4a,0x3c09cfec,0x3ba1fe15,0x3bc046d9,0x3c42431a,0x3baf3728,0x3b510844,0x3b717ad3, -0x3bce3ced,0x3c069abf,0x3c0864e0,0x3c686390,0x3c7609ed,0x3c75c5fb,0x3c45d6c4,0x3c1d1642,0x3bf1a68f,0x3bce8337,0x3ab5634f,0xbbf43ed9,0xbc255c22,0xbc27a4de,0xbbee5ba5,0x3ba21973,0x3c08104c,0x3a95d987,0x3c13d5bf,0x3c1f190d,0x3aea79fc,0x3bbd51b5,0x3c0f0b9b,0x3c4582dd,0x3c39b86a, -0x3c6a20d1,0x3cdddf25,0x3b9767c6,0x38944c39,0x3c1bb33c,0x3bab2b55,0x3bcce435,0x3c59892d,0x3b6473ad,0x39fec894,0x3ba3fb52,0x3c08ae64,0x3c289a27,0x3c33208a,0x3c89f5b0,0x3c905608,0x3c947b75,0x3c57098d,0x3c20b209,0x3c06072e,0x3bbf36b6,0xb9034857,0xbc17fcc9,0xbc5dbc3d,0xbc37c412, -0xbc18f6f0,0x3b8b7250,0x3c10411c,0xbab5d0bb,0x3c05e6fd,0x3b866f76,0xb984536e,0x3b329231,0x3aaa6682,0xbbabd78c,0xbc1bb129,0xbc510f49,0xbc7690a0,0x3c1665b2,0x3c90a8c8,0x3c8625a7,0x3c211ea8,0x3918f8d2,0xbb2e6d3a,0x3b668e54,0x3be5e57b,0x3b59912a,0x3c39c7f8,0x3c30193f,0x3c4cf32b, -0x3c7860d6,0x3c80f1af,0x3c836770,0x3bd991b6,0x3b3e6bf9,0x3b23adf4,0x3a62d4b1,0x3ad663b9,0x3a568cb8,0x3c0bd38c,0x3c07279e,0xbc2d4058,0x3c2d8c7f,0x3c446440,0x3b88e3af,0x3c27f4bc,0x3cab8ddf,0x3d208342,0x3c9bd118,0xb98898a9,0x3d1d1c5a,0x3914ca76,0xbc0b90a8,0x3b2c9997,0xbb706d3a, -0xba9d2dc1,0x3a01379b,0x3b24345e,0x3b9d4174,0x3b134c03,0x39244b80,0xb8228f99,0x3bb97987,0x3b955c11,0x3bed58cf,0x3c146cbc,0x3c0076ee,0x3bf7d681,0x3c19cd8a,0x3bbff05e,0x3b787331,0xb9823316,0xba63b911,0x395e9add,0x3b855c57,0x3b8241a2,0x3c0e1d43,0x3c46c4ba,0x3b859d97,0x3ba29c2e, -0x3c7e0880,0xbc2045d2,0xbc986169,0xbc271c75,0xbc48f51c,0xbb875f62,0x3c3e7a5b,0x3aef22cf,0xbb51346f,0xbb710232,0xbc3c6a59,0xbc35c25d,0xbb2cbf3e,0xbb06e444,0xba84c49a,0x3a878271,0x3a8e6702,0x3b7a6de2,0x3b093570,0x3b9059d8,0x3bfb7785,0x3c0e74d9,0x3b86a402,0x3bb97e4b,0x3c4427e1, -0x3c016e8d,0x3bd8fed4,0x3b03b1f0,0x3b1bf257,0x3aa4530f,0x3b43d898,0xbab16d01,0xba124a47,0x3c13aaaf,0x3bb4cf18,0x3c1974bc,0x3c5630cf,0x3ac81046,0xba9a0f3f,0xbbfc741d,0xbbfdd16f,0xbabe65f9,0xbb87af64,0xbc2708a4,0xbc47b8c2,0xbc9c4e29,0xbc4ebdc2,0xbc2b736a,0xbae1fcfd,0xbbc5553a, -0xbb88a51f,0x394ec9b2,0x3a54dd45,0x3b3ce1be,0x3af4c08b,0x3b9498cd,0x3bce38ec,0x3be2f51a,0x3b6d1195,0x3bcb27d2,0x3c242689,0x3c0f567a,0x3c0ac616,0x3b7fe6d9,0x3b9430bd,0x3b3f8989,0x3aaac99d,0xbbed2ff7,0xbc02aef0,0x3aa75561,0xba9035f4,0x3a527615,0x3b6b6a63,0x3b0d6a78,0x3ba6cf94, -0xb8ea87fa,0x39d710c9,0xb92d9e7b,0x3b259f73,0xbc9ec1a6,0xbcc0eca6,0xbc8eddab,0xbc5da768,0xbb78f1a2,0xb9fa34c7,0xb9d7c23e,0x3b250296,0x3b602816,0xb9a7ce91,0x39edbb4c,0x3bbeb201,0x3b8c8102,0x3b90f1d5,0x3b983fc4,0x3bddc52a,0x3bc98ab8,0x3b6e5f3c,0x3bf41eea,0x3bb43887,0x3acdd734, -0x3b76af36,0x3b3a08b1,0x3ab216b6,0xbbcaacde,0xbbba00d8,0x3a8f648e,0xbbd4678b,0xbc1016fd,0xbc385344,0xbc94c49b,0xbcae5b32,0xbc4158a1,0xbbcffe58,0xbd58a10d,0xbd8cbf83,0xbd106d3c,0xbccdafef,0xbbf930e2,0xbc8e67e3,0xbcaf3866,0xbc6772b9,0xbc59d470,0xbc6499b1,0xbb835598,0x3b23292f, -0x3bbdf319,0x3b0aa8ca,0x3a9f3cdc,0x3b0c164e,0x3bd5b7b2,0x39869a61,0x3adcf57c,0x3bce102d,0x3bd1aae8,0x3b9b3445,0xbb0b6f21,0xbbb50217,0xbbec6e5f,0xbc04eed3,0xbb47751f,0xbb025429,0xbc14b9e7,0xba703c02,0xbb1b66bf,0xbbf01cf8,0xbc2fae88,0xbc7d02d0,0xbcb4bbd7,0xbd2730d4,0xbc2941bc, -0x3be06c00,0x3c8bc2b1,0x3c98b4eb,0x3c9c4e65,0x3c9bff74,0x3c90ca02,0x3cb76036,0x3ca009bc,0x3c9d67e3,0x3c2ccb11,0x3c20bf3e,0x3bd6d758,0x3b9e9483,0x3bc8c114,0x3b90bb1e,0x3b886f25,0x39e18a23,0xbab359a2,0xb9cd44f2,0x39c0edb8,0xba83dc25,0xbaea98a0,0xbac47be3,0xbb7b533d,0xbb73fac2, -0xbb8e4bd4,0xbbec8e1e,0xbc335223,0xbbe9e54c,0xbc269674,0xbc5aa78b,0xbcae4ce3,0xbcd5624e,0xbce5c289,0xbc94bf6a,0x3b855f8d,0x3cc5d0e5,0x3cbf2b62,0x3ce0cbe7,0x3d02a4be,0x3cd3feeb,0x3ce27341,0x3cccef4c,0x3cbee38c,0x3c9de79b,0x3c8bbc22,0x3c7467c2,0x3c5b8d9e,0x3c28c367,0x3c093841, -0x3bc88e4c,0x3b19235f,0xbb02a031,0xbbb728a5,0xbc04c427,0xbc2d5cad,0xbc518f7c,0xbc7f0cbe,0xbc7f179c,0xbc8fd9b1,0xbc90f06e,0xbca7ce6b,0xbcab3016,0xbcc4e2e3,0xbcb73bbb,0xbcc53cbe,0xbce8c713,0xbcbcb0f6,0xbc9147e2,0xbc611f33,0xbac60e7a,0x3c45f9cd,0x3c8a283f,0x3cb925c5,0x3cb56f92, -0x3cdd39b9,0x3cd91815,0x3cc6f956,0x3cb26e61,0x3ca27e92,0x3c904379,0x3c8addb8,0x3c48a98b,0x3c447b70,0x3c19fdc5,0x3bedc1c4,0x3b9366a2,0x3ab1380c,0xba830cd0,0xbbc64786,0xbc04dccf,0xbc33ed7b,0xbc4f81de,0xbc894d1b,0xbc95e5f6,0xbca5c787,0xbcb0bf1a,0xbcb0a243,0xbcbdefc7,0xbcc29ccd, -0xbcbf116b,0xbcc50a33,0xbcc64a13,0xbc81a8ea,0xbbe367d4,0x398559e7,0x3bd43a0c,0x3ad255a3,0x3b1bb41d,0x3c1a8773,0x3b8953ae,0x3b5ca08b,0x3bcef447,0x3bb5f42c,0x3c432927,0x3bdbbf19,0x3bf1f4bd,0x3ba9b65f,0x3b82254e,0x3a8b7972,0xba045483,0xb9b95dab,0x398767e7,0x3aeac787,0x3a83998d, -0x3b8c9a62,0x3b46148b,0x3b0ed281,0xb97c16d5,0xba12fcc4,0xbb292a25,0xbb86ec5b,0xbb9f15cd,0xbb9db9aa,0xbae221f7,0xba84e80e,0xb9d236d8,0x3b0f9d91,0x3aceb54d,0x3ac9eed0,0xb9000297,0xb9adfff2,0x3a21431a,0x3adf10a7,0x3ac3ed7c,0x3b89517d,0x3bf8452a,0x3c2c1789,0x3b9488ed,0x3bd58bd1, -0x3c322deb,0x3c2c97fc,0x3c18d48e,0x3c0b62e5,0x3c05a99a,0x3c03e477,0x3bf23a28,0x3b666d1d,0x3a896ae4,0x3bc0fdf5,0x3b2a86c5,0x38a56a21,0xbb1682d9,0xbb2fce2a,0xbb58168a,0xbb86ac41,0xbb9c2d09,0xbba36627,0xbbb24e5e,0xbbbf11e8,0xbbb146e5,0xbbb8c12e,0xbbbbb8d1,0xbba9f506,0xbbaad90a, -0xbb5bc97f,0xbacfadcc,0x37f53e91,0x3a913454,0xba37ff1f,0x3be0d079,0x3b8f59cb,0x3b907591,0x3b9d3e86,0x3ba2d951,0x3bc0a951,0x3b84dffa,0x3b867630,0x3b955334,0x3b931153,0x3b983dc2,0x3ba17c7e,0x3b96717f,0x3b9303ac,0x3b8b7e21,0x3b8819e1,0x3b8c631d,0x3b970589,0x3ba48b85,0x3ba6f6d0, -0x3bac7594,0x3b9fcea4,0x3b95a35e,0x3b8c4fcc,0x3b8e4905,0x3b82e466,0x3b4f9070,0x3b568353,0x3b53d7c1,0x3b410736,0x3b7f5a38,0x3b876c65,0x3b795548,0x3b8bd95a,0x3b8cb310,0x3b7e1395,0x3b87c9aa,0x3bbddf50,0x3bb5d8cf,0x3bedfc98,0x3bfa5b34,0x3c2db678,0x3b9c8338,0x3b8d4c29,0x3bc342fa, -0x3babaebe,0x3bcd922b,0x3bd90c85,0x3bc765d2,0x3bb7b70e,0x3ba03340,0x3b9f4514,0x3bb4c712,0x3bc9932a,0x3bef6201,0x3c06216b,0x3c0e3b96,0x3beebc8c,0x3bd7c294,0x3bbccff9,0x3ba503a5,0x3b5eff31,0x3ab04fec,0x3a394e4c,0x3a4f78f6,0x3aab3240,0x3ba0e7ab,0x3bb7b4ec,0x3b8ab37d,0x3bc31fef, -0x3bce0dad,0x3ba5f0bf,0x3bbc6b4d,0x3bd7932a,0x3be37eee,0x3c0f88f3,0x3c160156,0x3c5bd61b,0x3ba5a35d,0x3b290711,0x3bc62ebb,0x3bba4083,0x3bde345a,0x3bf9ea9c,0x3bd79126,0x3bb73af9,0x3b7f696a,0x3ba857ae,0x3bb4f3ee,0x3be6a5f5,0x3c1b030b,0x3c2d9f93,0x3c4aae48,0x3c116010,0x3bf85364, -0x3bc44922,0x3bacdb9f,0x3b39d260,0xbafcfa05,0xbb366d8e,0xbaecf3a4,0xbb2332dd,0x3b7efa36,0x3bbc9c8d,0x3b32ab39,0x3bbda8ae,0x3bb73831,0x3b8a8158,0x3bbe435e,0x3bf9afd4,0x3bd380b6,0x3c334870,0x3c49e4f2,0x3ca4ef0d,0x3b92f039,0x3afe254a,0x3be959ed,0x3bbacc3c,0x3bdf3e9d,0x3c2aef41, -0x3bca822f,0x3b8d7e60,0x3b4e204b,0x3bbe9d74,0x3be6d125,0x3bfb5fd9,0x3c502406,0x3c697e21,0x3c82ed14,0x3c3bee86,0x3c13f268,0x3bd62059,0x3bb5b636,0x3a42dd6b,0xbbec5c87,0xbc0ad454,0xbc01e3cd,0xbbb9194f,0x3b585760,0x3bd18108,0x3b130163,0x3bd5b5c3,0x3bf817d4,0x3b957db1,0x3bfcb701, -0x3c17bbc1,0x3c311fae,0x3c5798d5,0x3c6e83d9,0x3cc2a433,0x3b90e29a,0xb932320d,0x3c08ac24,0x3bc5a929,0x3bef66cd,0x3c5343df,0x3b904663,0x3ad40f6e,0x3b964366,0x3c044b91,0x3c12981e,0x3c1f7d89,0x3c76b213,0x3c91455f,0x3ca301c8,0x3c53a77d,0x3c1d625d,0x3bf0d1f4,0x3baa43b0,0xb75f7c24, -0xbc094a73,0xbc364552,0xbc175b74,0xbc1a0609,0x3b5718d7,0x3bda99e2,0x391967a6,0x3bd35e71,0x3b839141,0x3b6fc333,0x3bb141e7,0x3bcd1a29,0xbb27a16f,0xbc0f2d09,0xbc5a229e,0xbca23557,0x3bd116e4,0x3c87daa6,0x3c944623,0x3c4f601b,0x3ae31acc,0xbb6755b1,0x3b4a0b4e,0x3bd3931f,0x3b88d785, -0x3c4688fb,0x3c2b21f5,0x3c3a7b12,0x3c228eed,0x3c2b601b,0x3c3fe5e4,0x3b606d0e,0x3b34efbc,0x3b8eadf6,0x3a949d1f,0x3b13d88f,0x3aaac223,0x3c7bbd8d,0x3c662f97,0xbc4fb01a,0x3c098fb8,0x3c137541,0x3a92b78e,0x3bad513e,0x3c9227ee,0x3d25d01d,0x3cb7027b,0xbbd8196e,0x3cbf6d83,0x3be4e263, -0xbab8c681,0x3bb8f671,0xbb2a47cd,0xbb444a0d,0x39161536,0x3b26e287,0x3bade88b,0x3b8b6112,0x3acdaa65,0x3a6655bb,0x3bb690eb,0x3b843d08,0x3be9dea7,0x3c26cd72,0x3c2372a1,0x3c2a8cc7,0x3c198a35,0x3bef5c2c,0x3bc4f1e2,0x3aa8c8d0,0x3b379d3f,0x3b3c765d,0x3b8a0880,0x3bd10c32,0x3c12b291, -0x3b9cf961,0x3b8a24a5,0x3b924767,0x3c04edca,0xbba55c4b,0xbc4b0854,0xbc424bad,0xbc64b7b3,0xbc294e24,0x3b998ced,0x3aced77c,0xba921def,0xba22cee6,0xbc10a1e2,0xbc36633b,0xbaa452ad,0xbac7add6,0xba260cca,0x3b11c9b3,0x3b0ee6d0,0x3b8b492b,0x3b1d93bb,0x3b88f66a,0x3c0ee310,0x3bf23198, -0x3bb75c8a,0x3bc63423,0x3bf14d32,0x3c1289a3,0x3c12f0dd,0x3b27f6db,0x3b50b814,0x3ac77b46,0x3b1ededd,0x3ae50c6c,0x3a93b271,0x3bbbf9b5,0x3be90f02,0x3c467d8e,0x3c83a02e,0x3b21cf34,0xbb52b92e,0xbc35b2ee,0xbc35b894,0xbb0ce96e,0xbb27a9f7,0xbbb685b6,0xbbe6ef4b,0xbc315b2f,0xbc2b7cb5, -0xbc12159b,0x3b2e0a43,0xbb786fef,0xbb2b2ee8,0x3a5a628a,0x3ac730f2,0x3b5a79fd,0x3b038619,0x3b9d8577,0x3beb7e9b,0x3be235d6,0x3ba02b40,0x3bc788da,0x3bdbbe7e,0x3c2c4a43,0x3c39002d,0x3bca5f81,0x3bfaaa68,0x3bbfb017,0x3a2e1315,0xbb800af2,0xbb864468,0x3b491d17,0x3aade3d6,0x3b30ee61, -0x3b914a4f,0x3b055122,0x3b942399,0x39424767,0x399c21b2,0xbb46abcd,0xbbf299e6,0xbc39d05c,0xbc7b3ec7,0xbc574f1b,0xbc51f715,0xbba27d70,0x3b32de55,0x3a73bd2c,0x3b770a08,0x3b872edc,0x3a14ca84,0x3aa498ee,0x3bbfa9e2,0x3bbbeb6b,0x3be687f1,0x3c02cc09,0x3c1ad7d9,0x3c0e6241,0x3b8a8f4f, -0x3c1236f6,0x3bffff50,0x3b94c5c7,0x3bd02b33,0x3bd864f1,0x3af6a9c3,0x3aa8d4c6,0x39bc0c9a,0xba914261,0xbbeb0a25,0xbc2999b0,0xbc524e5a,0xbc2f27dc,0xbc218527,0xbbfe010d,0xbb4088dc,0xbce036ac,0xbd42d742,0xbd1831b8,0xbcf62f8b,0xbc692383,0xbcb39a3b,0xbcc1ec2b,0xbc6236e6,0xbc63370d, -0xbc706f6a,0xbbc40a98,0xb6359adb,0x3ba5cf91,0x3b85ecd0,0x3b2b86bd,0x3b374e4d,0x3bba74c8,0x3b38617e,0x3b89dc59,0x3bba9f7b,0x3be33479,0x3bd11319,0x3b239a46,0xbab6562f,0xbb6e5c73,0xbbe7966e,0xbb018745,0xba89b861,0xbc002fff,0x3b4ec133,0xba862d97,0xbc62955a,0xbc925970,0xbcaad702, -0xbcbf63c1,0xbcc77b08,0xbcccd802,0xbc54c4f3,0xbaab68b5,0x3b4d48e1,0x3b48bbb1,0x3c17c2cd,0x3c2e2ebc,0x3c637066,0x3c36923c,0x3c430226,0x3bdb7c1b,0x3c03ee1b,0x3bc443f7,0x3bca448b,0x3bcf3916,0x3bbb7870,0x3be726af,0x3adc1286,0xb99bd641,0x3994991b,0x3b58b116,0x3b45f5c7,0x3b759e8f, -0xba9fc69b,0xbb51a735,0xbbb43cf3,0xbb92cb45,0xbbd6a52f,0xbc2a6334,0xbbd2810e,0xbbae20bf,0x3a11124f,0xbc116802,0xbc7b897a,0xbcb1d84a,0xbcc9de07,0xbc0de079,0x3c238a81,0x3c20e30d,0x3c786cf3,0x3cb25a2a,0x3c9b2514,0x3cae41ba,0x3c978083,0x3c8b4a99,0x3c6a6442,0x3c67ca86,0x3c556587, -0x3c4e3b98,0x3c1b760d,0x3bfad1cf,0x3bb007b4,0x3b2011f6,0xba986aae,0xbb8403b5,0xbba2388d,0xbbbb4647,0xbc0afdfa,0xbc35f5b9,0xbc5d361e,0xbc804fd9,0xbc8ff9a8,0xbc8e291f,0xbc89a893,0xbc904cf8,0xbc919a02,0xbca0bca3,0xbcb210b4,0xbca8bb61,0xbc9b0c94,0xbc9a58a0,0xbc336f59,0x3b938be3, -0x3c22397d,0x3c8d60cb,0x3c85365c,0x3cb13f99,0x3caa249d,0x3c97910e,0x3c8ab57b,0x3c8a2c45,0x3c786962,0x3c7ead94,0x3c24bd2e,0x3c248eb3,0x3bf299ea,0x3bb87a8e,0x3b4071f4,0xb70c8bf7,0xbaaad976,0xbb94c4e8,0xbbb9217d,0xbc1356b1,0xbc37192d,0xbc738c6d,0xbc83d719,0xbc9365bd,0xbca24e8d, -0xbc9de2cc,0xbca4d66e,0xbca0bcfd,0xbcb36851,0xbccdbaf5,0xbce746b2,0xbcb70650,0xbc7eab42,0xbc2cf2ab,0xbaccacb5,0xbb8b55b5,0xbb72bc93,0x3a56afdc,0xbb5d4a03,0xbb94010c,0xbaaca778,0xbaa674d4,0x3b673179,0xba12ff29,0x39a0931f,0xba73c89e,0xba427cdd,0xbb095653,0xbb2eac47,0xbb21967d, -0xbb191ab4,0xba681d13,0xbb14b198,0x3a477bb1,0xbb448e31,0xbb7fd2c3,0xbbbc85dc,0xbbd225ff,0xbc0d2230,0xbc254bec,0xbc312a3b,0xbc3f52e0,0xbc239d9a,0xbc1f8a16,0xbc158d78,0xbbac16c0,0xbba80345,0xbb93b061,0xbb70eb54,0xbb8abc1e,0xbba0b7ba,0xbb597ee7,0xbb4240dd,0xbaac21cb,0x3aa39006, -0x3b4bb46e,0xba2681be,0x3949dcd6,0x3b460fdb,0x3b45e94f,0x3b10c156,0x3ac057cf,0x3a84d5be,0x3a24e424,0x38d5d737,0xbb0d7205,0xbb8128e3,0xba86eb0d,0xbb5c8f6c,0xbba7c616,0xbbdfb71d,0xbbe09175,0xbbfa2572,0xbc072ebb,0xbc0e7e0d,0xbc114605,0xbc164be3,0xbc1b36c0,0xbc12a691,0xbc18084b, -0xbc1ebcd0,0xbc2195bd,0xbc2fbaa5,0xbc17d51d,0xbbf3619b,0xbbc5ee19,0xbb92b62e,0xbc1c70a6,0x3bd30322,0x3b8a5cbc,0x3b84b9be,0x3b92a2ff,0x3b9801f8,0x3baaaafe,0x3b74a75c,0x3b7d16b2,0x3b8ac4a3,0x3b920730,0x3b973a52,0x3b96de36,0x3b93072c,0x3b905ba7,0x3b854e4b,0x3b7f6703,0x3b83e8ff, -0x3b93b7d4,0x3b9b1531,0x3b991dba,0x3b992855,0x3b9298d0,0x3b8a870f,0x3b81485d,0x3b84daa5,0x3b7b82f7,0x3b554f39,0x3b586916,0x3b50abfb,0x3b3b6fcd,0x3b6afa4f,0x3b751215,0x3b68488e,0x3b7e2320,0x3b83ec19,0x3b7bef7d,0x3b85e7be,0x3bc59b59,0x3bab01f8,0x3be0586a,0x3bd89941,0x3c10a69b, -0x3b8ede44,0x3b85ea0c,0x3ba7dcb8,0x3ba8b11a,0x3bce99c0,0x3bc7dc22,0x3bcadd8a,0x3bbad636,0x3b9479c2,0x3b8ebf45,0x3ba244d9,0x3bc70d35,0x3bd8117f,0x3bf973c2,0x3c01e8b7,0x3bda7afe,0x3bc589d6,0x3ba91242,0x3b9b109c,0x3b5f6266,0x3af01526,0x3ab2f500,0x3abcd069,0x3ae1eaa2,0x3b8f896b, -0x3ba200f1,0x3b8dea14,0x3bb18c1f,0x3bb92f12,0x3b9ff2d4,0x3bc0ba41,0x3bdb822b,0x3bc8f8b6,0x3c038178,0x3c0071e4,0x3c28c73a,0x3b8d7397,0x3b2bcdb5,0x3b969432,0x3bc6bf86,0x3beb7fb4,0x3bdd96a3,0x3be9bb40,0x3bc5b9c4,0x3b604ec2,0x3b945f18,0x3b9ceb56,0x3bed9a21,0x3c08da3c,0x3c1cbba2, -0x3c31560e,0x3bfff9ea,0x3be0c79e,0x3ba645ca,0x3b9de4ab,0x3b49959c,0xb9ea68f4,0xba85b102,0xb9dc0386,0xbabc8f87,0x3b59a782,0x3b941616,0x3b34f03a,0x3ba235a7,0x3ba83d26,0x3b9eeed0,0x3bd7d39f,0x3c06bb73,0x3bbfbf42,0x3c1ee71a,0x3c22b82c,0x3c80d964,0x3b7b46aa,0x3ae9e0a8,0x3baf12c2, -0x3bc8a7bd,0x3bfbde9a,0x3c137e41,0x3be6912a,0x3badc756,0x3b0df443,0x3ba1df9e,0x3bbba511,0x3c017f31,0x3c341152,0x3c52b9e0,0x3c7718e1,0x3c24cd24,0x3c05a62c,0x3ba691e4,0x3ba6bbea,0x3a975252,0xbbab76f8,0xbbc4852c,0xbba99886,0xbb67494f,0x3b28ad29,0x3ba587f2,0x3b50e29e,0x3bbff9fb, -0x3bd4b5e7,0x3b9a27a3,0x3c0b25d2,0x3c142ae2,0x3c06f84a,0x3c49104d,0x3c53548a,0x3c9250c2,0x3b807bee,0x3980081d,0x3bd14e79,0x3bdbb965,0x3c0d3754,0x3c3f5b28,0x3bb1fa18,0x3b2b7671,0x3b5c4546,0x3bf4fce7,0x3c0119c9,0x3c1fa48e,0x3c548198,0x3c898aa0,0x3c950e0d,0x3c3936f6,0x3c0bd5ed, -0x3bb3361d,0x3b8b5a7e,0x3a190c9a,0xbbb7d0b1,0xbbe53e33,0xbbbf0e3a,0xbbea86e9,0x3b45b5b6,0x3b9157fd,0x398c58c5,0x3ba6f24e,0x3b782a3c,0x3ba69128,0x3bf961c7,0x3c327507,0x3b51b05e,0xbbb74e14,0xbc406df7,0xbca2e352,0x3b23df7b,0x3c52e4a4,0x3c90bf1f,0x3c7ed22f,0x3b898c54,0xbb79d7c3, -0x3b1f02c2,0x3bb131b5,0x3bc4598f,0x3c44407b,0x3c1ff150,0x3c190d4e,0x3bd45f4c,0x3bc6450b,0x3bc8b109,0x3b09b43e,0x3b64b6cf,0x3bb4d253,0x3b6e0498,0x3ba64150,0x3b81eb42,0x3ca86fff,0x3c9500b9,0xbc0a2f86,0x3b613e4b,0x3b7fa373,0x3bb7de9d,0x3bb34871,0x3c827fcf,0x3d14e02e,0x3cb75e98, -0xbc2a166f,0x3b27768e,0x3c64f80c,0x3c10076e,0x3b619b7e,0x3b0f9e47,0xb9a1de8e,0xbadb6487,0x3b1fbaf2,0x3bc730d9,0x3bcba5b3,0x3b39fcce,0x3ac9a47d,0x3bb01303,0x3b99aa11,0x3bfd0e07,0x3c2cd958,0x3c281bb3,0x3c36cae9,0x3bfcd7bd,0x3c0d3822,0x3c027fdc,0x3b1252cb,0x3b19dd7e,0x3b10a7c0, -0x3b8aee75,0x3c10e66e,0x3c2b9274,0xbb83d4ab,0x3b8a5596,0x3b055873,0xbc07837c,0xbbb92b8e,0xbc169ec4,0xbc3d988e,0xbc4c845e,0xbc52b4e2,0xbb924f06,0x3af0e168,0x3ae9d788,0x3ac7a5c6,0xbba0ea26,0xbc1f7309,0xba4d5838,0xb9f511f1,0xb9a96ecc,0x3b5afc2e,0x3b2399c4,0x3b7d49c8,0x3b580bde, -0x3b764ed1,0x3c0f8da1,0x3bb9d23f,0x3bb3a32e,0x3b94e67c,0x3b8122d2,0x3c242be4,0x3c2599d0,0x3b1fe6cf,0x3b968a7b,0x3b3f0125,0x3af97435,0x3badbcd1,0x3ba1274b,0x3b60ea35,0x3c1012ef,0x3c65ab81,0x3c4ae2ed,0x3aec2deb,0xbb9d2aca,0xbc3ffbf2,0xbc3c1bfe,0xba7ea493,0xbafce346,0xbb54e228, -0xbb47cfd7,0xbb3340a2,0xbc0735d5,0xbc05376a,0x3ba1809a,0xbaf48f54,0xba857709,0x3ada29bc,0x3af51abf,0x3b47d06e,0x3b25a3dd,0x3b8fa826,0x3bebf215,0x3bc22ba4,0x3b9e1f89,0x3bb4cdb2,0x3bb7f91c,0x3c2ec4be,0x3c434897,0x3bd729c4,0x3c17a197,0x3bf1baf5,0xbb26f329,0x3a3aba96,0x3aa3e0e6, -0x3b15d165,0x3b71dab0,0x3bb3daf9,0x3b9ee199,0x3b8d442a,0x3ba186e5,0xb94d6354,0x3a1b59b9,0xbb48da6e,0xbc562b1f,0xbbcad4d4,0xbbfb2c40,0xbc2dbea2,0xbc26bdf1,0xbba92af4,0x3b61c602,0x3a7232b7,0x3b7a87cb,0x3b6d4556,0x3a904196,0x3aea2747,0x3bc12bf7,0x3bcd5fb4,0x3c0385df,0x3c18acbb, -0x3c207f30,0x3c1b9003,0x3b893219,0x3c0b4425,0x3c087803,0x3be8f706,0x3beb6966,0x3bdb1dfc,0x39bb07d6,0x3b5178a6,0x39f72ba2,0xbbfa668d,0xbc150b8c,0xbc338678,0xbc565cf3,0xbb82b4f0,0xba5a3678,0xbb885dc2,0x395a69b8,0xbc258f40,0xbca9ca2c,0xbceecc66,0xbce9d67f,0xbc98998d,0xbca91fae, -0xbca4e373,0xbc4d0a39,0xbc472bf3,0xbc590bd0,0xbbdfcd3e,0xbb3ff028,0x3b4e65b4,0x3ba79f2c,0x3b603e88,0x3b7d1349,0x3bb428f9,0x3ba2c944,0x3bc1f402,0x3b867dd3,0x3bfb8db6,0x3c0ca439,0x3b8f1da3,0xb911d6b9,0xbb0beb3a,0xbb35a567,0xbb1a46bc,0xba838df4,0xbb3b7c5d,0x3bb4b0fb,0x3a693198, -0xbc7b6d72,0xbc994a43,0xbca7c26a,0xbcabab10,0xbc4f45bf,0xbcefcd3b,0xbcca16ad,0xbc856292,0xbc1e7f26,0xbc04896a,0x3b19d296,0x3ba36558,0x3b65e6b3,0x3b21a16b,0x3b7a3ae9,0x3af13e38,0x3bd97428,0x3be53ed2,0x3bf13da5,0x3bc1d307,0x3ba3b503,0x3bd9fc41,0x3ac2f337,0x3994ecf0,0x3a957f6a, -0x3bc1feb6,0x3bcf87a0,0x3bc432e5,0x3aaf88ea,0xba277bc5,0xbb554fb6,0xbb6c5caa,0xbbb3de0b,0xbbfb4fa4,0xbc1c4036,0xbbd001ee,0x3bcdfc95,0x3a24f7b0,0xbb9084fb,0xbc59a4d7,0xbcbfaa43,0xbc860c29,0xbb8cd8e8,0xbb628462,0x3b10040b,0x3c256cf8,0x3c26241c,0x3c516aab,0x3c26f3a4,0x3c1f0afb, -0x3c11bfa3,0x3c327c4a,0x3c2cbad8,0x3c3315b1,0x3bfef3f5,0x3bc97d33,0x3b87d190,0x3b335fb8,0x38a43408,0xbad8a7e7,0xbaba51c0,0xbacda20f,0xbb716178,0xbbcef905,0xbc0d88a0,0xbc33816b,0xbc624b96,0xbc558604,0xbc51eb82,0xbc385010,0xbc650ee0,0xbc72ce7d,0xbc556794,0xbc71ea82,0xbc81ca40, -0xbc9b0ddc,0xbc817335,0xbb2dba11,0x3ae143f2,0x3c14464d,0x3c0a0ed1,0x3c53d0bc,0x3c4e9c54,0x3c39a71c,0x3c3beaef,0x3c5ab22e,0x3c494e06,0x3c6e5841,0x3bf78d34,0x3bf48707,0x3b9bb6ac,0x3b7a0eeb,0x3ad826db,0xb9e95f8a,0xbad42688,0xbb2e147b,0xbba064a0,0xbc05610f,0xbc23f9fb,0xbc5075db, -0xbc6844d7,0xbc7ff552,0xbc8e3dc2,0xbc8469ad,0xbc861068,0xbc829c85,0xbc918651,0xbcabd302,0xbcccb07f,0xbcb54c38,0xbc959347,0xbc7e7716,0xbbf35a91,0xbbc0fd6d,0xbbaae5c0,0xbb5184c0,0xbbb7908f,0xbbccd2e1,0xbb6984bb,0xbb47b9d8,0xba21f2fd,0xbb75b6b4,0xbb5cf359,0xbb89da7f,0xbb35744e, -0xbb41039a,0xbb3bdaba,0xbb7862b7,0xbba02daa,0xbb9bdcd0,0xbbe92d90,0xbbc2e853,0xbc2559fd,0xbc2a0d6c,0xbc42bbfb,0xbc4de6ba,0xbc6a2fb9,0xbc7ca97b,0xbc846a23,0xbc8d7f98,0xbc8453dc,0xbc7c517d,0xbc7a28fa,0xbc3ab4bc,0xbc28323d,0xbc0f197c,0xbbc0a686,0xbbc795a7,0xbbe1dee5,0xbbd0577e, -0xbbb6b5bb,0xbb962855,0xbb42db31,0xbb09bd9b,0xbb7fdf1d,0xbb6b962a,0xbaf47b27,0xbad075d9,0xbaf70d95,0xbb227b54,0xbb48feed,0xbb6f1007,0xbb8124ac,0xbbb0ada5,0xbbd39cb4,0xbba1be80,0xbbd11c36,0xbbf4f798,0xbc0bc0c1,0xbc0d094d,0xbc1a2d78,0xbc21f29c,0xbc288a12,0xbc2b3e29,0xbc2d1947, -0xbc2e800b,0xbc267fce,0xbc2d0f3e,0xbc31053f,0xbc36a3e1,0xbc4a57c9,0xbc3cc641,0xbc23ef33,0xbc149971,0xbbf925c3,0xbc61fab6,0x3bc34f7b,0x3b7fe78f,0x3b7356d2,0x3b85faab,0x3b87f896,0x3b8fc484,0x3b5a7466,0x3b6306f9,0x3b708e17,0x3b87bd12,0x3b8ee997,0x3b895f00,0x3b8a2153,0x3b86b573, -0x3b732959,0x3b67e428,0x3b70bdd7,0x3b8beffe,0x3b8b6a02,0x3b85e6b4,0x3b8220e0,0x3b81e479,0x3b7a3707,0x3b6ce505,0x3b7ba565,0x3b76d747,0x3b5d2abe,0x3b5aba64,0x3b5108b3,0x3b452ed6,0x3b5c2220,0x3b5bc845,0x3b55e34f,0x3b62ef02,0x3b6eacb2,0x3b644b0d,0x3b797e6f,0x3bc1406c,0x3b9b7c1d, -0x3bbfd4c9,0x3baf3a54,0x3be33af3,0x3b81542a,0x3b776160,0x3b8a1b7b,0x3b9d8d10,0x3bc3a62f,0x3bb61750,0x3bca8625,0x3bbd939f,0x3b842f65,0x3b74f296,0x3b8eb054,0x3bbe07c9,0x3bbcb720,0x3bd9b692,0x3bd602b5,0x3bbacfed,0x3bad0750,0x3b973b65,0x3b93a237,0x3b6b8d7e,0x3b2f2ccf,0x3b1c5664, -0x3b275d89,0x3b49d597,0x3b878360,0x3b8f7722,0x3b93398b,0x3b9eb086,0x3ba0e287,0x3b854aa0,0x3bb60eb6,0x3bcc7175,0x3baeac4d,0x3be6f429,0x3bd63811,0x3bedef13,0x3b62e583,0x3b23d830,0x3b46c605,0x3bc0bd6e,0x3be8e94d,0x3bc2c505,0x3bfc53df,0x3bd16146,0x3b43f5bc,0x3b825380,0x3b879732, -0x3bed8ffc,0x3be900a9,0x3c0252e1,0x3c04d43e,0x3bcb9bc1,0x3bbd7843,0x3b8dbf66,0x3b9fd228,0x3b84f9b0,0x3ad6ff62,0x3aa7c48c,0x3aba7b33,0x3aafb096,0x3b5b417a,0x3b6b41e4,0x3b3597c8,0x3b80078a,0x3b8a5f7a,0x3b6fd667,0x3bcc7504,0x3c0b5019,0x3ba77e15,0x3bf81739,0x3beab10c,0x3c3bc356, -0x3b509cca,0x3ade934a,0x3b6dec44,0x3bbe56f8,0x3c00e3c8,0x3bf9d5b8,0x3c031bae,0x3bd1a4f1,0x3a927b94,0x3b822379,0x3b93d783,0x3c0389a0,0x3c1560bb,0x3c2ee525,0x3c43820e,0x3bfe756f,0x3bdf9ee4,0x3b842bb7,0x3ba8079f,0x3b21d755,0xbaf2a898,0xbb09bf20,0xba9bfcc8,0x3ace9022,0x3b3a1eb0, -0x3b8b26f3,0x3b8ec7aa,0x3b9d2437,0x3ba4c44e,0x3b38222f,0x3c009cc8,0x3c0abd5b,0x3bce7fd8,0x3c3820f4,0x3c3ad3c2,0x3c48aaaf,0x3b3cf0c3,0x3a169b3a,0x3b8025ac,0x3bdd70c5,0x3c198984,0x3c266847,0x3bda2780,0x3b6a1ba4,0x3ae16faa,0x3bd75620,0x3be00a46,0x3c1fc8a9,0x3c30fc48,0x3c6c8691, -0x3c5e4fd0,0x3c0d7143,0x3be20f8c,0x3b8235a0,0x3b970ba3,0x3b5400a5,0xbaa75d1f,0xbad28228,0xbaa11df3,0xbaa084be,0x3b85bebe,0x3b40a682,0x391ac7a9,0x3b4aee3d,0x3b241996,0x3b35b5c6,0x3bfd0f3b,0x3c5378c0,0x3bca534a,0xbbb387f3,0xbc3fe2d8,0xbc847035,0xb8e60783,0x3c10ca54,0x3c798c7c, -0x3c9273cb,0x3bf11ea0,0xbb611677,0x3abb90aa,0x3b8c3563,0x3c0cc54b,0x3c375d89,0x3c12adc3,0x3c02f3c8,0x3b8d8a73,0x3b35b8ce,0x3b050ed3,0x3b052f59,0x3b9b2c59,0x3bf4d8a4,0x3bc9dd48,0x3bc59eec,0x3b876a24,0x3ca17ca6,0x3c874759,0xbbbb1cb4,0xbb1bad96,0xba7132d9,0x3c2d914b,0x3bfa117a, -0x3c7159cb,0x3cf52f78,0x3cae4447,0xbc0bc277,0xbc7b433c,0x3ca18ccb,0x3c95da02,0xba994e7f,0x3bb0228d,0x3b499331,0xbb36ca35,0x3b1cbd77,0x3bd89261,0x3c082ced,0x3b77c61a,0x3ae52997,0x3ba72f30,0x3bcaab45,0x3c18ee6e,0x3c1f87aa,0x3c151d67,0x3c203ecd,0x3ba604b3,0x3c10b277,0x3c04fa9c, -0x3aee0161,0x3b1c16e5,0x3b7ad471,0x3c0ac68b,0x3c0be4dd,0x3c0d0f4d,0xbbe2a362,0x3baffbda,0x3a296327,0xbcc2d40c,0xbc25c3ef,0xbc09933a,0xbc2a06ce,0xbc0f900f,0xbc4da30f,0xbc427c7c,0x3b0d7899,0x3b9bc9e4,0x3b334f08,0xb895b0e2,0xbbdab17e,0xb9da08e2,0x3a05011a,0xb90dd07b,0x3b9334bb, -0x3b197d33,0x3b64b986,0x3b914001,0x3b540ae0,0x3c044e27,0x3b7596da,0x3b826dc8,0x3b2e1fba,0x3b04e599,0x3c222fe8,0x3c20a92f,0x3b2ddb0e,0x3b9d4464,0x3b49d167,0x3b0f50b9,0x3bb1f999,0x3bc4043d,0x3b3044f9,0x3c2a06b3,0x3c5e3067,0x3b80991d,0xba2b0f99,0xbbba414b,0xbc073c1b,0xbc25b96d, -0xba46debd,0xb964cc34,0xbb2359e1,0xba2e7056,0x3b39cede,0xbb6ff2b7,0xbba4d4a5,0x3bae80ed,0xb93299d9,0xb88bf612,0x3b132dc2,0x3adf42e5,0x3b35eb76,0x3b428575,0x3b6260e0,0x3bc75173,0x3b78650f,0x3b591b45,0x3b9132bd,0x3b853c5f,0x3c089ace,0x3c18f5db,0x3bb3a410,0x3bcb577a,0x3b95aaa7, -0xbac51152,0x3b45724d,0x3b2709da,0x39a16286,0x3b3a7608,0x3ba942c2,0x3bf3489d,0x3b98b3fa,0x3b88bfcf,0x3b6f9b7c,0x3a797ddf,0xbb0209cc,0xbc2fdea9,0xbb12e4c7,0xbb0856fa,0xbc125181,0xbbd5fb02,0xbb8a619a,0x3a954d07,0xb8b41c70,0x3b34875b,0x3b293ebd,0x3a6e8647,0x3af30bb2,0x3ba3431c, -0x3bcc523d,0x3c052a04,0x3c09abf0,0x3c053c06,0x3c07c162,0x3b61c719,0x3bf478be,0x3c00b681,0x3c03343e,0x3bc7e8a1,0x3bad2b64,0x3b144f82,0x3b170f7a,0xbae95bff,0xbc4841a7,0xbc13dc27,0xbc1bb1e8,0xbc3085db,0x38ebddd0,0x3b6f231d,0x3a02bf42,0x39126cb5,0xbb79a96b,0xbbb6f765,0xbca0ee4f, -0xbccd7e46,0xbcb0aa94,0xbc9542c9,0xbc813851,0xbc32330d,0xbc19c0e7,0xbc2d5c44,0xbbd7ee18,0xbb9fbf6c,0x3a98639b,0x3bc3d54c,0x3b586200,0x3b81dea6,0x3b8e92b3,0x3bc3ec33,0x3bcfd169,0x3b0b275c,0x3bcdbd38,0x3c04bb62,0x3bb7638a,0x3b76b5f4,0x3b04d9b0,0x38b78e44,0x3a9b07e1,0xb7f8fcb4, -0xbb44f9ea,0x3a4d0067,0xba85965c,0xbc1e0e80,0xbc73e4ae,0xbc82e249,0xbc653265,0xbbcd6060,0xbcdd8a15,0xbce4ba78,0xbcca0a22,0xbc93cc84,0xbc5be08d,0xbb3e5f82,0xb9dc9738,0xbba1c0fa,0xbb9287dd,0xbb1de7e6,0xbb048fe4,0x3b95018e,0x3bd4ac4f,0x3bd6e3e8,0x3b9af21f,0x3b6de8a2,0x3b8f10c4, -0x3b10014d,0x3b07d29d,0x3b15c227,0x3bf549e9,0x3bffb852,0x3baa68f4,0x3b78304f,0x3a95a801,0xb7c5fd72,0xbb236404,0xbb889cb7,0xbb8e701e,0xbc16d1da,0xbc08fa0c,0xba626f2e,0x3b20e1c7,0x3a019539,0xbc24ccbb,0xbca1d3f0,0xbc994f5f,0xbc65121c,0xbc50eb61,0xbbfb3518,0x394d24ac,0x3aabc896, -0x3b7db44c,0x3ae92ce3,0x3b36c3b4,0x3b7085f7,0x3bef6c22,0x3bec52b9,0x3c078391,0x3bbf8fbf,0x3b8eccc6,0x3b3860b1,0x3afeb7c1,0x3a18d0f5,0xb91566e5,0xb902e62b,0x39ab9d95,0xb9dba7d8,0xbb18859a,0xbb7a0d02,0xbbcd19d4,0xbc0ba1ec,0xbc1221bb,0xbc1667af,0xbbdda5ab,0xbc2253e0,0xbc1cb09a, -0xbbfbf313,0xbc0cd211,0xbc33b006,0xbc7e7820,0xbc855e4a,0xbbe269ad,0xbb9c5d3d,0x3aa22ba7,0x3aa09aca,0x3b8a8b6d,0x3b9f1f31,0x3b970750,0x3bc1aeaf,0x3c12f33f,0x3c0d81ad,0x3c464bd7,0x3ba56f64,0x3ba4d94a,0x3b375640,0x3b00d817,0x39f81a30,0xbaa7237e,0xbb2765d1,0xbb6d9a60,0xbbc16194, -0xbc01524b,0xbc0f3452,0xbc21110a,0xbc3866e9,0xbc46af91,0xbc655b57,0xbc4ba229,0xbc4e40bf,0xbc54678c,0xbc5759b2,0xbc6dc10b,0xbc86be1a,0xbc877be8,0xbc7e1a68,0xbc69e5d7,0xbc1cd97d,0xbbd3c575,0xbbb6703c,0xbb9117eb,0xbbacee40,0xbba4c5ae,0xbb452a42,0xbb1bda31,0xbab179ca,0xbb85059c, -0xbb913ae3,0xbbb12fa2,0xbb74207e,0xbb67af8f,0xbb612d3f,0xbba0d0ad,0xbbd231aa,0xbbf438f4,0xbc155d61,0xbc251412,0xbc3c16a7,0xbc3e3782,0xbc5fdd3e,0xbc71d6bd,0xbc860453,0xbc8e4b4f,0xbc93c201,0xbc9acde0,0xbc925ca1,0xbc883f0c,0xbc8b6f28,0xbc713156,0xbc65f198,0xbc415389,0xbc052751, -0xbc017f51,0xbc02ae8d,0xbc01cf0a,0xbbeaf89e,0xbbd7a2ba,0xbbba4b82,0xbbadfd15,0xbbcbd4ef,0xbbc3595d,0xbb989062,0xbb8c3547,0xbb8a6340,0xbb983828,0xbbacecff,0xbbc2e48a,0xbbc9ee04,0xbbe76035,0xbbf35f81,0xbbe9690a,0xbbff138e,0xbc05f764,0xbc0d5d09,0xbc147a61,0xbc1cc9b7,0xbc203fda, -0xbc252874,0xbc283fe5,0xbc2a323b,0xbc2a4d1f,0xbc24e940,0xbc2c9b9c,0xbc2cd594,0xbc2ce9b7,0xbc3ad997,0xbc36e6db,0xbc28d67b,0xbc20bcc2,0xbc109860,0xbc7f4d45,0x3bb10380,0x3b5b6b5a,0x3b44ecae,0x3b670a49,0x3b761fda,0x3b7aa81a,0x3b45a3a3,0x3b52429d,0x3b59752d,0x3b7f216b,0x3b88c337, -0x3b81a44c,0x3b86719a,0x3b83986d,0x3b68a934,0x3b5c252b,0x3b5d72aa,0x3b870175,0x3b8022b7,0x3b6b17b1,0x3b52dc5f,0x3b5e7941,0x3b5c7808,0x3b589fd6,0x3b6878a8,0x3b68cf40,0x3b590733,0x3b52d12e,0x3b498d81,0x3b4a2140,0x3b4c79df,0x3b436f00,0x3b43776c,0x3b441f0e,0x3b4d5408,0x3b40f707, -0x3b57d3b7,0x3bb1fcbf,0x3b862799,0x3baa24dc,0x3b88bce1,0x3bace152,0x3b67c125,0x3b68578b,0x3b6d158d,0x3b8fd7b5,0x3bb58bb3,0x3ba9640f,0x3bcd0238,0x3bc170fc,0x3b743a8b,0x3b5e419e,0x3b7ef745,0x3bb43f5c,0x3ba38255,0x3bb86081,0x3b9f2bd4,0x3b905acf,0x3b8bf1c6,0x3b87dcea,0x3b89bc6d, -0x3b758b09,0x3b638c22,0x3b5770a5,0x3b69d523,0x3b9036c1,0x3b7f8775,0x3b72b2c1,0x3b9132b2,0x3b8551a3,0x3b80480c,0x3b4b6010,0x3ba31400,0x3ba14d78,0x3b79091a,0x3bb3b960,0x3ba02e07,0x3ba20bf1,0x3b34a692,0x3b1bbfc7,0x3b03ed6c,0x3bb0c26a,0x3bd6c05a,0x3bb2f4e3,0x3c042cdd,0x3bdeec18, -0x3b410cf0,0x3b7152bf,0x3b70bf7e,0x3be7de67,0x3bc3726c,0x3bcc88f6,0x3babf4dc,0x3b8dead2,0x3b94941a,0x3b86894c,0x3ba09f9e,0x3b9bbb77,0x3b5a2fe5,0x3b4bdd81,0x3b3a8fcb,0x3b813691,0x3b611aaf,0x3b4373e3,0x3b412f2a,0x3b3826ec,0x3b3c5020,0x3b04a708,0x3ba5742e,0x3c027fd0,0x3b8c0021, -0x3bb77e31,0x3b9025d4,0x3bf2c205,0x3b1bf3ef,0x3ad4dc09,0x3b2dfe99,0x3ba721ac,0x3bf5bc03,0x3bd62e9e,0x3c12b2cb,0x3bfc05a4,0x3a13bc1c,0x3b54dfac,0x3b725eee,0x3c060d52,0x3beee3d8,0x3c045ea0,0x3bf9d03e,0x3b9c53c0,0x3b999daa,0x3b74ca48,0x3ba79092,0x3b81998a,0x3ad022d1,0x3ad76c19, -0x3b19bfc8,0x3bd2ed53,0x3b487840,0x3b5dcf79,0x3ba7fedf,0x3b612a45,0x3b3a31da,0x3a3dfee1,0x3bd6d678,0x3bbbefba,0x3b5781c2,0x3c08bc14,0x3c0e0690,0x3bf59245,0x3b020a76,0x3a2aca01,0x3ad4db99,0x3bc8e128,0x3c15f1c4,0x3c0aabd9,0x3c012a47,0x3b9924d2,0x39f4a9c9,0x3bb48632,0x3bc54196, -0x3c24e154,0x3c0df2fd,0x3c384c0f,0x3c00cc8a,0x3bad5200,0x3ba20c84,0x3b7d3cb1,0x3baf306f,0x3bb15362,0x3b1b90e8,0x3b257def,0x3b1ed28c,0x3b8945cf,0x3ba2a7a4,0x3b0fab36,0x3a73eba9,0x3a8c58ed,0x39c70e7e,0xb9545509,0x3bbf06a4,0x3c75c015,0x3bf58c01,0xbbf0da27,0xbc672d26,0xbc739037, -0xbb1430ba,0x3bc1c9e0,0x3c438c85,0x3c9b6470,0x3c2c2d7b,0xbaf7e37d,0x39b73b7a,0x3b59a249,0x3c363aef,0x3c219853,0x3bfe2370,0x3bece974,0x3b1f130a,0x3a0d6937,0x38a64312,0x3b3222c7,0x3baff9a2,0x3c0605c6,0x3bcaa3da,0x3bbdc727,0x3bb07105,0x3c7c6b17,0x3c217094,0xbbeeb48b,0xbbe864fa, -0xbb864175,0x3c52e5d8,0x3c13c407,0x3c5a5685,0x3cbe02bf,0x3ca6a970,0xbc0146e1,0xbcd55b51,0x3cc09024,0x3cce5130,0xbb4104cf,0x3bdee100,0x3b8890c4,0xbb457e0c,0x3b291181,0x3bdf8521,0x3c1ff7aa,0x3ba2a087,0x3b1bdc1f,0x3ba15f50,0x3bfd9b95,0x3c3248fa,0x3c075ded,0x3bfee24b,0x3c017e09, -0x3b7947ca,0x3c0e2b75,0x3c050723,0x3b59fcc2,0x3bb613a1,0x3bd9184a,0x3c2c939b,0x3bf0bf01,0x3bc5ea94,0xbbf6b98b,0x3bee7404,0x3abbde45,0xbce3e9dd,0xbc436d75,0xbbf6a77b,0xbc0ac77f,0xbbf3ea4c,0xbc2cdda7,0xbc930f56,0x3a68ba3c,0x3ba84cc2,0x3b114de7,0x3b962fa6,0xbac21b55,0x3a70b67e, -0x3ae95a2e,0x3a06023e,0x3bb3c256,0x3b207034,0x3b6ad560,0x3ba1f012,0x3b3b198b,0x3be72935,0x3ab78d58,0x3b07b6a8,0x3a8e824e,0x3a6b4638,0x3bfd7f0e,0x3c03862d,0x3b5d05ae,0x3b6f0f71,0x3ae5deb5,0x3b0fe97c,0x3bb928e1,0x3bd2790a,0x3ab66c5b,0x3c41fdac,0x3c4a524b,0xbaeca34c,0xbadc11da, -0xbb8c7cb5,0xbb178341,0xbbbf9481,0x3a69cc07,0x3ad7e19b,0xbb3c17b8,0xba2b3e97,0x3b8ccb93,0x3a82b50e,0xba09f424,0x3b941e3c,0x3aa176c4,0x3a1279cc,0x3b2cc25c,0x3ac16fa9,0x3b34f6d1,0x3b43ee73,0x3b27355a,0x3b8c28df,0x3a64660a,0x3a8e0fde,0x3b1e9e6d,0x3ade4866,0x3b9d8146,0x3bb5bff5, -0x3b867411,0x3b2b01e4,0x3abebcf5,0x39ce5182,0x3b7bd4fa,0x3b42a09c,0xba5be0c3,0x3b0d4493,0x3b7029a8,0x3c15fbc0,0x3b2b8cb2,0x3b363a22,0x3c142eb3,0x3b38501e,0xba23215d,0xbb6f7505,0x3ac9c2f2,0x3ac4d6e7,0xbbdd74fb,0xbb6b1f6b,0xbb78bed2,0xbb144d66,0xbab6bbf0,0x3a90340a,0x3ae08261, -0x3a2869dc,0x3acc4565,0x3b71d886,0x3bbf0355,0x3bf59189,0x3bc266b7,0x3bb1d95c,0x3bc0cfc7,0x3b418590,0x3bc0a4a2,0x3bd82c84,0x3bdd11c5,0x3bb47ce9,0x3b975f03,0x3b2fd797,0x3b05ef0d,0xbb323a80,0xbc8476c1,0xbc0c9f42,0xbc0b8e02,0xbc0f9c11,0x3aa20d14,0x3b9d2617,0x3bae8d7e,0xb5dab899, -0xbb107ba8,0xbb719a66,0xbc6893ab,0xbcb5c29a,0xbcbfd505,0xbc90935f,0xbc5e5bce,0xbc1c91be,0xbbd0e709,0xbbea476f,0xbbaba93e,0xbbaf6f04,0xb948a816,0x3bc12ca1,0x3b3dcd66,0x3b6063c2,0x3afe5467,0x3bc88bd8,0x3bc17f46,0x3ac34dc5,0x3b8c81c0,0x3bcd31eb,0x3c0d268b,0x3be55843,0x3ba086e5, -0x3a652e0f,0x3af8ae86,0xba8db870,0xbba5d3f7,0xbba160c0,0xbb6dee1c,0xbb313274,0xbc1dd54d,0xbc307f6e,0xbbe20243,0xbb2a37a8,0xbcb12a98,0xbcce110b,0xbccf542b,0xbca6207c,0xbc5f13b8,0xbbeac2f6,0xbbb1d34d,0xbc1d3f65,0xbc12a1f9,0xbbd62bdc,0xbb8c0ead,0x3a9bad1e,0x3b72505e,0x3baa0ed3, -0x3b583650,0x3b2dcf3a,0x3b2dde19,0x3b6c711c,0x3b87fd2b,0x3b711e35,0x3be552d9,0x3be5d9cd,0x3bae04ef,0x3b812124,0x3addf0bf,0x39b047f2,0xbb055c7f,0xbb3732fd,0xbb2496b4,0xbbaf98d9,0xbc0aed70,0xbc4ae1ad,0xbb89fcd4,0xbb40d55e,0xbc260cd7,0xbc861249,0xbc96f72b,0xbc99b6b0,0xbc8c85d6, -0xbc5895be,0xbbcc27a8,0xbbb42b62,0xbb52ec90,0xbb8e08c0,0xbb18ae6a,0xba1bbc78,0x3b7dfe8e,0x3b6d7058,0x3ba582e0,0x3b933806,0x3b336e27,0x3ae067b8,0x3a02a40e,0x39828b20,0x393dae2d,0xba3bffd9,0x3a9c2417,0x3ae73d28,0x3addd862,0x39d55c9b,0xbacd5ded,0xbb740f1c,0xbb9879b2,0xbbab5c39, -0xbb69df01,0xbba7527e,0xbb90f51a,0xbba746ce,0xbbc00a43,0xbc0eba37,0xbc4ee450,0xbc7b99f3,0xbc241542,0xbc1d7869,0xbb9c5cfe,0xbb9c8a8c,0xbb47c151,0xbaa74724,0xba105a3f,0x3aa528eb,0x3b97651a,0x3ba4cf1b,0x3c0d78e2,0x3b606d73,0x3b6bf588,0x3b1fc969,0x3a5e5c24,0xb94b5a77,0xbb025c2e, -0xbb4f7e82,0xbbadb277,0xbbbe61e6,0xbbb5a19e,0xbbaa4e5d,0xbb8d5dbe,0xbbc020e2,0xbbdd5c74,0xbc0ba585,0xbbf77656,0xbc04828b,0xbc16c7c8,0xbc0df1ed,0xbc079b7b,0xbbf7e0bd,0xbc1b4d1d,0xbc3619ed,0xbc42d302,0xbc2c781d,0xbbd1aed3,0xbbb1fc5d,0xbb9c0bc4,0xbb8c606b,0xbb58a657,0xbb080cb3, -0xbadd16aa,0xba8bcc26,0xbb61581a,0xbb84f985,0xbba703cc,0xbb784246,0xbb5f5c77,0xbb5c384c,0xbb8f3007,0xbbb2edc6,0xbbe0057c,0xbbdf748b,0xbc0d134d,0xbc01ddc6,0xbc0eefa1,0xbc357abe,0xbc4e8bfc,0xbc627d62,0xbc6c0824,0xbc73f477,0xbc8150ab,0xbc7b67cc,0xbc6ea26a,0xbc7ec16c,0xbc7eca5a, -0xbc87fd70,0xbc68adab,0xbc29a7a5,0xbc1605d2,0xbc088ece,0xbbfdd222,0xbbe9c2b4,0xbbecb63a,0xbbe92f4c,0xbbee5a72,0xbbe4f0e6,0xbbe33f2b,0xbbc978b6,0xbbbb6657,0xbbb60fb6,0xbbbe88cc,0xbbd07789,0xbbe843eb,0xbbf1dac8,0xbbeb80a5,0xbbdf0152,0xbc073089,0xbc0434ab,0xbbfc1e5f,0xbbf384a2, -0xbbffadb5,0xbc00c91d,0xbbfea746,0xbc022036,0xbc060f97,0xbc07b4fe,0xbc08d847,0xbc07398a,0xbc0f122d,0xbc0e6d46,0xbc08e189,0xbc0cf695,0xbc0d1dbc,0xbc0c2dbf,0xbc0c8575,0xbc06b512,0xbc66e5c2,0x3b9914af,0x3b32c375,0x3b1a3b2f,0x3b3a0957,0x3b4c08c6,0x3b52562c,0x3b2f5cc9,0x3b39ad7e, -0x3b3cd24d,0x3b5ec944,0x3b720f03,0x3b685ee8,0x3b77e3cf,0x3b73749a,0x3b548586,0x3b460b27,0x3b413a55,0x3b73d59a,0x3b5b26e7,0x3b45d2d4,0x3b2ae574,0x3b38dbc6,0x3b3bfc9e,0x3b40b098,0x3b4c22bd,0x3b4d43fd,0x3b43f688,0x3b3a604b,0x3b32fbef,0x3b3c81e6,0x3b33ef78,0x3b28faf8,0x3b2f7e0f, -0x3b221b17,0x3b25163a,0x3b18fdd7,0x3b32560f,0x3b9485a5,0x3b552ac8,0x3b8483b0,0x3b507c30,0x3b829f73,0x3b534211,0x3b5a8f64,0x3b51f41a,0x3b813489,0x3ba25fa9,0x3b9a4265,0x3bc6fdf4,0x3bbd8ea8,0x3b63808e,0x3b455e0b,0x3b5c3bc7,0x3b9f94f3,0x3b881b2d,0x3b904109,0x3b5e5f94,0x3b517c76, -0x3b5763e0,0x3b739d91,0x3b7648d9,0x3b6a03c2,0x3b702a4a,0x3b58b6cd,0x3b6d0cc2,0x3b9cd2f0,0x3b6afce9,0x3b4e9064,0x3b83ef7c,0x3b485355,0x3b341b38,0x3af78300,0x3b7eeb3d,0x3b620f23,0x3b12f063,0x3b62d66f,0x3b58afbe,0x3b653fd9,0x3b210b6b,0x3b1f54fe,0x3ae13ed2,0x3b9ca413,0x3bbf9ad1, -0x3ba7a3c3,0x3c048108,0x3be5a156,0x3b4f63c3,0x3b664110,0x3b57b6ac,0x3bcf230a,0x3b9ee51f,0x3b92c0eb,0x3b4d3055,0x3b3933b9,0x3b5daf68,0x3b8388f0,0x3b94d4a2,0x3b96cee9,0x3b7dc0e5,0x3b5d155e,0x3b455916,0x3ba91315,0x3b567bbb,0x3b2e0177,0x3b4ea092,0x3ad7cada,0x3aa264a6,0x3997d22c, -0x3b679cfe,0x3bcf4968,0x3b47c9c3,0x3b593778,0x3b16ac08,0x3b9a19f9,0x3b0df2c2,0x3b01d63f,0x3b20e089,0x3b95b54c,0x3be49d40,0x3bbbedef,0x3c1de929,0x3c0dc76c,0x3a5ec410,0x3b3ac1a0,0x3b51e67e,0x3c00d5a5,0x3bba83e5,0x3bb2aa61,0x3b766ff1,0x3b1a1a96,0x3b308b08,0x3b77ea3e,0x3b9dc141, -0x3b97817b,0x3b56903f,0x3b42e6c1,0x3b5ecea9,0x3c0f648a,0x3b583232,0x3b46d414,0x3ba72cda,0x3ad66900,0x3a0c6701,0xbaed46d8,0x3b854218,0x3b3de8ee,0x3a32e9a4,0x3b8c8822,0x3bb50a26,0x3b946e85,0x3aef10d3,0x3a91d3a9,0x3a09af81,0x3bae3e48,0x3c0831fa,0x3bdc8e80,0x3c1151da,0x3bbf28ad, -0x392db0c6,0x3b9559e3,0x3bb9f4a4,0x3c2a93a6,0x3bdcc928,0x3bf76134,0x3b52413c,0x3b2864b3,0x3b4d0bc7,0x3b887ab2,0x3baf9ff0,0x3bb837d0,0x3b734341,0x3b57e764,0x3b65e8dd,0x3bf1444a,0x3ba67bf3,0x3b0b8b15,0x3b10bc82,0xba898366,0xbb1bf285,0xbb4f7fff,0x3b5e02b1,0x3c7953ba,0x3c27b093, -0xbbce6f48,0xbc707d92,0xbc7c1bea,0xbb6702a0,0x3b910018,0x3c045b26,0x3c9c8614,0x3c58b93d,0x3a357a6b,0xb9a8655a,0x3b316363,0x3c519647,0x3c05bc61,0x3bc6c96e,0x3bc8c8c0,0x3abebffd,0xb9aa59d6,0x39a9c49e,0x3b85b927,0x3bba4e2d,0x3c029050,0x3bd3d6c2,0x3be67973,0x3c29fef1,0x3c3334bf, -0x3b2f19b5,0xbc215db9,0xbc1cf9d7,0xbb958583,0x3c5408b1,0x3c43cfc7,0x3c6abdb8,0x3c8d82bf,0x3c8c3d94,0xbbe0ad85,0xbcfd60a8,0x3cbd1c23,0x3ce415a9,0xbb70643f,0x3c01b727,0x3b9f508b,0xbadbfdc5,0x3b2aef0a,0x3bcae471,0x3c2b990e,0x3bd17ee9,0x3b767cbd,0x3b9fd808,0x3c125f3a,0x3c3c4ad1, -0x3bd45cac,0x3bcf6df4,0x3bd464d2,0x3b8635c0,0x3c043a07,0x3c087f5b,0x3bd616c0,0x3bf663b5,0x3bf7db8c,0x3c28773b,0x3bca1a97,0x3ba39676,0xbbc00a41,0x3c19bafb,0x3b81ebe6,0xbca439fb,0xbc2cc624,0xbbf44928,0xbbc78928,0xbbac4b90,0xbbb91435,0xbcb9a38b,0xbb1130a8,0x3b3614ec,0x39dcb52d, -0x3bd9f939,0x3b252093,0x3af62bd5,0x3b3eb29b,0x3ad994e3,0x3bc20e0b,0x3b466e89,0x3b83adf6,0x3ba91d61,0x3b3321cc,0x3bb2b593,0xba82b3e8,0x3a177eb3,0x39844d01,0x398743da,0x3b9f993f,0x3bbd6334,0x3b998304,0x3b13ba6e,0x3a89c61b,0x3a6e919a,0x3bc752cd,0x3bf537ba,0x3abce920,0x3c5407f0, -0x3c3e3c6d,0xbb1c077e,0xba764585,0xbadf792b,0x3b49fe67,0x39325e45,0x3b908169,0x3b53b4f0,0xbb307b19,0xbaa57dd3,0x3b543767,0x3b5f2a69,0x3b229c8b,0x3af24d9a,0x3b0e4218,0x3aba7df9,0x3b389c12,0x3ad44039,0x3b36c4cb,0x3b4b191f,0x3af13ffc,0x3b0bbc27,0xbad3459b,0xba5f6c3d,0x399a2963, -0x381ddbc1,0x3b2464be,0x3b560f18,0x3b9235af,0x39975b6b,0xbab0a8bc,0xbaeb9f83,0x3b62c239,0x3b725235,0xba11627c,0x3b8772d1,0x3b805000,0x3bcf46b7,0x3a96a7c2,0x3b1f720f,0x3c4d4820,0x3bc03c3c,0x3a979691,0x3b326767,0x3b93089f,0x3b4f044f,0xbbaaf141,0xbb15f4d9,0xbb7d5fad,0xbb8b7f2f, -0xbb0feadb,0xb9741d71,0x3a90a651,0x3a56eba0,0x3ab444e9,0x3b2464f9,0x3ba8c117,0x3bd1a2cc,0x3b6da8cd,0x3b526d01,0x3b6b0279,0x3b4502f1,0x3b99ad7d,0x3bbcb78f,0x3bd39bf1,0x3ba10855,0x3b576b97,0x3b2c6193,0x3a1d1f56,0xbb8e8b07,0xbc898e06,0xbbffa5d0,0xbbe2f023,0xbbce3b1d,0x3a7a8a90, -0x3b8e887a,0x3bf470b2,0x3abdc5a9,0xbb2341b3,0xbbf412a7,0xbc48b3b9,0xbca371f1,0xbccaf62d,0xbc9d5348,0xbc68a7c2,0xbc17903e,0xbb92c6ef,0xbb83cbfd,0xbb59dd55,0xbb96b5eb,0xba55ed05,0x3b91aaf9,0x3b1ba36c,0x3b2df0df,0xb9a45fe8,0x3b97f327,0x3b9250e0,0x3b0474c0,0x3af1aafd,0x3b49f3d7, -0x3c037cf5,0x3bc4eaa1,0x3b8ab5f2,0x3a2a4032,0xba808791,0xbb2e4b97,0xbb5dde72,0xbc01090e,0xbbb9388c,0x3a96099b,0xbbb245ef,0xbbcb3e94,0xbb88be7d,0xbaa3d157,0xbc8029f9,0xbc9e5bbf,0xbcac7530,0xbc91a210,0xbc2affeb,0xbc1832a8,0xbc0dd798,0xbc3f6ad2,0xbc378e75,0xbc11cf96,0xbbc104af, -0xbb3953c1,0xb81e5374,0x3b7a38c1,0x3b0ddfd0,0x3b20c9d6,0x3b043d96,0x3b9ab4e3,0x3bafae04,0x3b9e82a3,0x3baaaaa4,0x3bb55e43,0x3be3a157,0x3b6e3a3f,0x3b2296e3,0xba0b20f5,0xbb045dea,0xbb410115,0xbb8ee18f,0xbb817ff8,0xbc06c137,0xbc8b095c,0xbc5472d1,0xbc2fb878,0xbc299c50,0xbc5db702, -0xbc905d29,0xbcabf5b1,0xbc9a1f09,0xbc8280af,0xbc25b84e,0xbc20e40b,0xbbfefb9a,0xbbfcecf0,0xbbb2ccbb,0xbb6b7261,0x3a4d918d,0x39f0b1ee,0x3b148651,0x3b7e3482,0x3aee570b,0x3ab04f36,0xb9befdc2,0x3a31a889,0x3a61569f,0xb93ff15b,0x3b44f130,0x3b80bc1b,0x3bc3d956,0x3b7f3e1b,0x3b26d502, -0xb837e00c,0xba888976,0xbb085f99,0xbb0b34c6,0xbb0a030b,0xbaffc324,0xbb8022cd,0xbbd7ff62,0xbc1d7928,0xbc3d00c4,0xbc78766f,0xbc55a0ca,0xbc66d14c,0xbc26ca9b,0xbc251fd5,0xbc176abc,0xbbccd347,0xbb8ef619,0xbaf478f5,0x3a91b68b,0x3b0643ef,0x3bade545,0x3b2e92c5,0x3b592c03,0x3b5c645d, -0x3a800004,0x38ed6746,0xbad4caea,0xbb23ceaf,0xbb9e3180,0xbb6228ad,0xbac496ea,0xba4c8bdd,0x3ab17c0e,0xb9d269c1,0xbabfe4f2,0xbb36d912,0xbb37bee2,0xbb6bc55b,0xbba0f835,0xbb9c2400,0xbb80671a,0xbb1ad69a,0xbb943eba,0xbbf9c680,0xbc2c8eb4,0xbc3fb805,0xbbb6846c,0xbb9e3501,0xbb9308f3, -0xbb4f9f4c,0xbae68fe9,0xbad1916c,0xbad0f13c,0xbab52b51,0xbb3cc85d,0xbb4f5031,0xbb7ce6c7,0xbb3860d3,0xbb0b1a44,0xbadac880,0xbb0ed1c2,0xbb40d69a,0xbb8caf36,0xbb62cfaa,0xbbaa7f24,0xbb9bf879,0xbbc757d2,0xbbf92993,0xbc134e1b,0xbc19d449,0xbc18322b,0xbc1c5c6a,0xbc2a9d8b,0xbc30d885, -0xbc2ea39a,0xbc424b91,0xbc571962,0xbc780060,0xbc5e9b22,0xbc2d40d5,0xbc0d012d,0xbbf35c42,0xbbbf89a8,0xbbb541f4,0xbbc81f32,0xbbda2c5d,0xbbf069f5,0xbbbbbac6,0xbbbfeeef,0xbbbdf11a,0xbbad4bae,0xbba5fb2d,0xbba71df2,0xbbb16e61,0xbbc649d6,0xbbcfa709,0xbba8cb96,0xbb8d32c4,0xbbea44b5, -0xbbceac94,0xbbb27fbd,0xbb99e193,0xbb97dff9,0xbb90fdc6,0xbb892325,0xbb8ad875,0xbb92d072,0xbb92b2ef,0xbb9653c4,0xbb992692,0xbba6156e,0xbba6a406,0xbb9bff91,0xbb97d784,0xbb98d878,0xbba8c750,0xbbb9e8f7,0xbbc1f2a5,0xbc112fb5,0x3b7a9ea9,0x3b0beb12,0x3b00b029,0x3b14dcf7,0x3b238cba, -0x3b30ffbb,0x3b15fa5b,0x3b2015b2,0x3b22d372,0x3b3e3396,0x3b4f6875,0x3b4b234f,0x3b5d2627,0x3b5aaee0,0x3b3f539a,0x3b2aa67e,0x3b1d43c8,0x3b4f3324,0x3b3093ff,0x3b1fca55,0x3b0b0f40,0x3b168693,0x3b1a90f9,0x3b2295b8,0x3b26ce27,0x3b23d579,0x3b1809ce,0x3b0d9e94,0x3b0c3177,0x3b25fcc9, -0x3b16598d,0x3b0ba34b,0x3b14ca60,0x3afd338a,0x3af8c881,0x3ae2ba09,0x3b0b4b31,0x3b6ad6a5,0x3b36a079,0x3b4344b3,0x3b26261c,0x3b4fc0c2,0x3b4613e2,0x3b500bbc,0x3b3e8dfd,0x3b68feba,0x3b8fd73b,0x3b8c544d,0x3bba28a4,0x3bb3664b,0x3b5a4822,0x3b337729,0x3b325b79,0x3b79891d,0x3b551bc7, -0x3b58ff14,0x3b1ed660,0x3b1c4a41,0x3b287bdc,0x3b50a6c7,0x3b44fa9a,0x3b31e4d1,0x3b316aba,0x3b0a5ce3,0x3b2bcd2a,0x3b96702e,0x3b46f77a,0x3b216397,0x3b4e6055,0x3af25981,0x3ac77fe0,0x3a32f50e,0x3b2f6fd9,0x3b20f413,0x3af498fd,0x3b0d39c6,0x3b24005f,0x3b32f5aa,0x3b2783c8,0x3b306337, -0x3aefa782,0x3b8c5877,0x3bad16ca,0x3b9f761c,0x3c01305c,0x3be6869e,0x3b681399,0x3b5ef44d,0x3b385365,0x3b9abb7b,0x3b757d56,0x3b4a3d45,0x3b09249f,0x3b06d5bb,0x3b2f49cb,0x3b6f9a61,0x3b71ef86,0x3b5e40a1,0x3b25a175,0x3ad271dc,0x3adcf10b,0x3bb4b187,0x3b39f5c5,0x3b18ead1,0x3b3c2e6c, -0x3a03749f,0xb97335c8,0xba99e9a0,0x3b0f57df,0x3ba3c08e,0x3b410449,0x3b03e89d,0x3ac771ac,0x3b585c1c,0x3b25b51f,0x3b382e6f,0x3b2b2264,0x3b945942,0x3bd8fe0c,0x3bb12eed,0x3c260dca,0x3c16a070,0x3afd2c66,0x3b3ab2f8,0x3b352eba,0x3bcd0544,0x3b8ae911,0x3b6415b2,0x3ac9552e,0x3aa352db, -0x3adb7756,0x3b6e16b2,0x3b744d91,0x3b57ec09,0x3aea3d72,0x3a79ec31,0x3ae70dd9,0x3c1923d0,0x3b420805,0x3b1de1bd,0x3b821231,0xba2762cf,0xbad0c601,0xbb88ec7b,0x3af143dd,0x3af35e66,0x39ee876a,0x3aeeb439,0x3b7079e6,0x3b4e10ff,0x3b09afbe,0x3af63e50,0x3a1d06b9,0x3b9f65c5,0x3bf0396d, -0x3bb6d7b3,0x3c1da455,0x3be0d0d4,0x3a6b6c4f,0x3b8380f8,0x3bb293f0,0x3c1b9e42,0x3ba17757,0x3b90e0ae,0x3a41781e,0x3aa7e542,0x3b165589,0x3b822d9f,0x3b90dabd,0x3b6e415b,0x3ad07c0b,0x390a8f49,0x3ac98a7e,0x3c0e9033,0x3b94c930,0x3b136b6c,0x3b3657fa,0xbb36f3ce,0xbb9acdae,0xbbafb307, -0x3ad47d6e,0x3c3809bb,0x3c48106b,0xbaeba9c9,0xbc2ca991,0xbc67df7c,0xbb3edca4,0x3b822007,0x3ba033c9,0x3c949fc6,0x3c7c6e2b,0x3b82a87c,0xb98fe487,0x3b1ec1d2,0x3c5819dd,0x3bd125e6,0x3b8cbb4a,0x3b9a829e,0x3ae718a8,0x3a3696df,0x3b13e603,0x3bbbe7db,0x3bcc902c,0x3c052ef9,0x3c00e580, -0x3c0cf002,0x3c86b56d,0x3bb790b7,0xbb770c73,0xbc2c3811,0xbc23fb67,0xbb64e2ba,0x3c2a68a4,0x3c702789,0x3c80aeb1,0x3c50f091,0x3c391bf5,0xbb32b19b,0xbcf90a9c,0x3c825959,0x3cbfebdc,0xbb799e00,0x3c0374d5,0x3bc1b491,0x3aaf7942,0x3b2c2a4f,0x3b9b4c40,0x3c2dca17,0x3bfef52c,0x3bb0d1ae, -0x3b9bd124,0x3c1b1a3e,0x3c353890,0x3ba3eeaf,0x3b9b3eaa,0x3ba7f5e9,0x3b8c4b0b,0x3bd06717,0x3bf3f2ca,0x3c060402,0x3c14dc05,0x3c0b28b0,0x3c220b74,0x3ba050b9,0x3b7e9ecb,0xbb465a50,0x3c2db0cd,0x3bc7d76d,0xbc4b03de,0xbc03a979,0xbbe4d659,0xbbbfe0bc,0xba824844,0x399a768c,0xbcbb99a2, -0xbba8540f,0xb8cc02fe,0x3a1eef1f,0x3be65c40,0x3b9b242d,0x3b0f6bb6,0x3b53a999,0x3b0feab3,0x3bc3147f,0x3b701357,0x3b948cd9,0x3bb08e33,0x3b41a961,0x3b66db51,0xbb092615,0xb97237b3,0xba08921d,0xb98cdde8,0x3b0f2210,0x3b808766,0x3bdad48f,0x3ae91589,0x3a92e157,0x3adc1aa3,0x3bb0b75d, -0x3bd03bd5,0x3b53b82a,0x3c47933e,0x3c1a5bcb,0xbb446f28,0xba90935d,0xb9475c35,0x3bc08852,0x3bb6cf2e,0x3bfb68b6,0x3ba12173,0xba17914f,0xb98970e9,0x3aea77ca,0x3ba6f152,0x3b96b0ec,0xba6d26a2,0x3b3e61d7,0x3b1d1b79,0x3b34e357,0x3b075df8,0x3b3f41d3,0x3b7794dd,0x3aa218da,0x37fea935, -0xbb2996f2,0xbb0876bc,0xba98cb4e,0xba624434,0x3a98f45a,0x3b082239,0x3bc9163e,0xbb191226,0xbb92c431,0xbb0c8fa1,0x3b20e058,0x3b71e0ca,0x3ad3d66a,0x3baeb7cc,0x3b787029,0x3adf0fbe,0x39e9cd85,0x3b080f94,0x3c387f11,0x3c0d5ad2,0x3b3a2fdd,0x3ba4e3a0,0x3b963904,0x3b2abdf9,0xbbb48e06, -0xbb441280,0xbb9bc8eb,0xbb902d68,0xbb0471fe,0xba0b5b74,0x3a2dba87,0x3ab9bb7c,0x3acb2d5f,0x3ac424e6,0x3b83fb95,0x3ba01fad,0x3b1960b6,0x3ac9dec7,0x3b058a0a,0x3b6edf79,0x3b8fe4e0,0x3baa5463,0x3bbb8ff4,0x3b57c551,0x3adc37db,0x3afc2003,0xbadc864f,0xbbaf3db2,0xbc50da4c,0xbbbf8c3c, -0xbb8c41ea,0xbb1313d0,0x3b21cf87,0x3b8b301f,0x3bb4cdc9,0x3b67149f,0xbba1d12d,0xbc14342a,0xbc47d69b,0xbc9c57ab,0xbcc58ee9,0xbca91bca,0xbc804442,0xbc221bfa,0xbb882b45,0xbb108adf,0xbae59606,0xbb47a6b0,0xba77a927,0x3b059b43,0x3ad1f565,0x3b01ce32,0xba35fc3d,0x3b167168,0x3b0459a1, -0x3afa806b,0xb979664d,0x399eda7c,0x3ba5532c,0x3b97086b,0x3b4df85b,0xb958328d,0xbafa1400,0xbb5a82cf,0xbb12bfe7,0xbc28af51,0xbc1088d8,0xb91e3ee6,0xbb4d0453,0xbb30c1f2,0xbad42c5c,0xbb48e6c4,0xbc3d030b,0xbc64757a,0xbc7ee0ac,0xbc5bbb3a,0xbbe8078f,0xbc259a34,0xbc2fd328,0xbc4ee516, -0xbc470de9,0xbc268b8f,0xbbf8a285,0xbbd6dea4,0xbb65d510,0x3affd840,0x3ac160bb,0x3b28a470,0x3b032444,0x3b97b09d,0x3bab658f,0x3ba454d1,0x3b4ae3f5,0x3b7de458,0x3bdfe3c5,0x3b5da0b8,0x3b232c7b,0xba9b5f5e,0xbb0ba63e,0xbb748a19,0xbbc9cce4,0xbbcdef91,0xbc176985,0xbc69f8b8,0xbc8b7aa9, -0xbc84f2bf,0xbc408e96,0xbc41b85a,0xbc867e90,0xbca81b12,0xbc9551a1,0xbc8600db,0xbc45db15,0xbc413dbc,0xbc24bd79,0xbc15b372,0xbbe4c3d5,0xbbb42766,0xbaf64c34,0xbb0b0b80,0x3968943d,0x3b47dbd8,0x3abdb4e2,0x3ac5474b,0xb8ed4fdc,0x3af00c7a,0x3b1c4f69,0x3b15a8d5,0x3b9b443c,0x3bb122ce, -0x3c075a22,0x3bbf1032,0x3b940f17,0x3afc1a09,0x3a85bf4f,0xb9ea8b6f,0xbb19f4fa,0xbb190dd2,0xbb40057e,0xbb864076,0xbc1044e9,0xbc411692,0xbc4e094d,0xbc7d4692,0xbc6d997d,0xbc864057,0xbc67c5fb,0xbc59635c,0xbc586b0c,0xbc1a7183,0xbbd2f3dd,0xbb523a1b,0xba86cf77,0xb9883672,0x3b324877, -0x3ad2b1d8,0x3b4ef16b,0x3b76113b,0x3ac62f40,0x3a2324d3,0xba454572,0xba67cc00,0xbaf77b63,0xb7750de9,0x3b02d6b1,0x3b16a86c,0x3b8bfe71,0x3b3da54e,0x3b13fc15,0x3abf9db6,0x39d728e7,0xba28ad37,0xbaf39b94,0xbb0b98c1,0xbae5de3e,0xba89d3bd,0xbb43f8e7,0xbbcf9b23,0xbc285bb6,0xbc4dd677, -0xbb9bc329,0xbb8fcada,0xbb87c0be,0xbb1fa547,0xba39c8eb,0xbac618b9,0xbaed2420,0xbb083242,0xbb265957,0xbb0c3002,0xbb1795a5,0xbaa7561d,0xba2ae6c9,0x39eeb32d,0xb82970e8,0xba330ea5,0xbafb14e4,0xbadaccd2,0xbb6fe72e,0xbb6fe0d4,0xbb96fbaf,0xbb9e7640,0xbbb4fa71,0xbbac028f,0xbb9d3ad0, -0xbb9b6a72,0xbba9636e,0xbbc1f95c,0xbbcb29c9,0xbbef095f,0xbc0e1a2f,0xbc27a9c4,0xbc228462,0xbc0871e4,0xbbd79e58,0xbbbe692c,0xbb63e90d,0xbb698eea,0xbb855dfc,0xbb9b958f,0xbbb1c8fb,0xbb68e56b,0xbb5ed026,0xbb676a90,0xbb431c1b,0xbb332f4f,0xbb2951f0,0xbb281b21,0xbb39609c,0xbb41dc45, -0xbb0a08f8,0xbabb3a74,0xbb824e32,0xbb470382,0xbb0d5bfb,0xbab52af4,0xba9a3b5e,0xba80d5c1,0xba519c23,0xba48dfe0,0xba72c3fd,0xba69d180,0xba8850c0,0xbaa3ba11,0xbabfdc21,0xbac2981b,0xbab7f863,0xbaa426cb,0xbab0fa4e,0xbb022e7e,0xbb33d6ef,0xbb587c3e,0xbb45d9e9,0x3b3f418c,0x3ac7f341, -0x3ad2f01d,0x3aee7207,0x3b070ca1,0x3b16cdd2,0x3b004507,0x3b0b175e,0x3b0dd653,0x3b23b650,0x3b318982,0x3b30a91f,0x3b4261b8,0x3b42a4c5,0x3b2caea2,0x3b0f9f40,0x3af0b818,0x3b226e77,0x3b0a8812,0x3afdc901,0x3ad69a3e,0x3aee3c8e,0x3af46df0,0x3b0020db,0x3af0d5ed,0x3adbbbde,0x3ab3f009, -0x3aa93826,0x3ab722e4,0x3b05c817,0x3ae786e0,0x3ad6899b,0x3aea2ac6,0x3ab36123,0x3aa3318b,0x3a8baaff,0x3abbc6d3,0x3b2de9b6,0x3b39fe4b,0x3b2e5b33,0x3b1233fe,0x3b2715a1,0x3b382a4a,0x3b47c779,0x3b2d1f6f,0x3b519834,0x3b813ec2,0x3b814f8d,0x3bacccd5,0x3ba6a6bd,0x3b5865e6,0x3b24fc72, -0x3b02a64f,0x3b249f72,0x3b1c8b12,0x3b27b644,0x3aef036a,0x3afeadc9,0x3b098bd3,0x3b237ed0,0x3afe4b50,0x3aa44d87,0x3a3dc2ad,0x3961331b,0x3a8751f8,0x3b7a138a,0x3b18ede2,0x3af69732,0x3b193010,0x3a4ece9e,0x39e30415,0xb87e995a,0x3acbae8c,0x3ad78322,0x3b198a77,0x3ae7642b,0x3b192893, -0x3b1f7ba6,0x3b40c529,0x3b49c0da,0x3b04300d,0x3b83a246,0x3ba0e635,0x3b9fc8af,0x3bf90258,0x3be52762,0x3b844eec,0x3b504615,0x3b098ede,0x3b2dedc3,0x3b314728,0x3b15fd06,0x3ae25c83,0x3b011983,0x3b22204b,0x3b4dcd89,0x3b16e658,0x3aa59f8d,0xb9aa755c,0xbaa5ba3c,0xb9c8f799,0x3ba2a0c2, -0x3b1237cb,0x3b0a7d3e,0x3b2059dd,0xb9c67303,0xbac4f4ab,0xbb0a30be,0x3a5df60d,0x3b83b9ca,0x3b8dd9f6,0x3b1bf052,0x3aeec40c,0x3b21355d,0x3b413afd,0x3b7494e0,0x3b423de4,0x3b9d5420,0x3bd5c2f7,0x3bb8cd48,0x3c2d0d80,0x3c1dde70,0x3b614a3d,0x3b44d383,0x3b0c35db,0x3b71f6ab,0x3b42f887, -0x3b2481e5,0x3a51eda0,0x3ab3031f,0x3ad01414,0x3b53d59b,0x3af1431d,0x394c3ede,0xbb1dc454,0xbb446d51,0xbaaf10a4,0x3c05f4dd,0x3b1a102e,0x3b0a773a,0x3b4ba316,0xbb15fdb9,0xbb5f49bd,0xbb942939,0x39527cf6,0x3aae8006,0x3aca4c8e,0x3a2f1534,0x3b3f38be,0x3b3b8895,0x3b47ca39,0x3b34105f, -0x3ab2812c,0x3ba0bdb3,0x3bdcf86d,0x3bb6290a,0x3c2acb9c,0x3c02402b,0x3b1a12da,0x3b7dd37d,0x3b9f0284,0x3be6a8bb,0x3b5b4e03,0x3b294c49,0x39957aaf,0x3ac6dcaa,0x3b306e69,0x3b76236f,0x3b2b27cc,0xb81a1fb4,0xbb3a4fd5,0xbba231ba,0xbafcef21,0x3c075b63,0x3b6844f3,0x3b311cc5,0x3b3cf810, -0xbb7978cf,0xbbd9d7aa,0xbbcb470b,0x36809767,0x3bd315fd,0x3c5b0ebe,0x3b85e94c,0xbb73ded8,0xbc4ea0fc,0xbb2336f5,0x3b51d45e,0x3b6e28c5,0x3c81317a,0x3c857b3d,0x3bf94b9d,0x39d5e0b6,0x3b0e569b,0x3c4a7f89,0x3b9b6f06,0x3b47f81f,0x3b8271f9,0x3b5a07c5,0x3b526d01,0x3b90c1ed,0x3bdde6e9, -0x3bd5b0a7,0x3c08a673,0x3c0f787c,0x3c18b1fe,0x3ca01764,0x3a5ff5b7,0xbc0fa378,0xbc302244,0xbc069c3b,0xba5db317,0x3bd2200c,0x3c8d85be,0x3c8eae49,0x3c0d87e4,0x3bbefada,0x3a99bbbb,0xbcd31b93,0x3b30055d,0x3c4e0d86,0x3a24ae24,0x3bda86e1,0x3bbf4635,0x3b9e23ab,0x3b4e5021,0x3b7d6232, -0x3c287cff,0x3c17e2e3,0x3be9cd68,0x3b92c4b4,0x3c16705f,0x3c1fe201,0x3b8795a7,0x3b5bcabb,0x3b729cbf,0x3b89163e,0x3b9ca200,0x3bd76c8f,0x3c1cd1b9,0x3c3655e6,0x3c1d026d,0x3c1b389e,0x3b38d090,0x3b18b0b8,0xb89a06f6,0x3c21addd,0x3bd6d9eb,0xbbf6e80a,0xbb9b920f,0xbba07c07,0xbbdd29f9, -0x3b49448f,0x3b9e9685,0xbc96c0a8,0xbbd2c01d,0xbb3a462c,0x3b5d1947,0x3bdf6167,0x3bc20925,0x3b22ead9,0x3b499899,0x3b147f00,0x3bbb8d64,0x3b8da47e,0x3ba2cf6d,0x3bb19ac3,0x3b56d137,0x3af33893,0xbad817bf,0xb9ff7e86,0xbac7201e,0xb9a6c0d0,0x3987e1db,0x3b28d743,0x3bfa03f6,0x3b0ac867, -0x3af7e0e5,0x3b77af14,0x3ba34ef4,0x3b9f34bc,0x3bb24a74,0x3c139ea1,0x3b943db8,0xbbaa4c55,0xbb1b3b86,0x38eeac7c,0x3bdce802,0x3c1540ee,0x3c270dbb,0x3bf70aea,0x3b43a429,0x3b1d773c,0x3a38baa3,0x3bc73d4f,0x3bb086d8,0xbb0f1339,0x3b5a6916,0x3b535d1f,0x3b2e79fa,0x3b2b0ea5,0x3b5601ec, -0x3b97eaac,0x3a4a3bf3,0xbab469b4,0xbb089a8c,0xbb20988c,0xbaef9370,0xba8db729,0x39804ba3,0x3a8d8ccf,0x3bc1e302,0xbb5c3a7d,0xbb9d56fd,0xbac128c6,0x3ae48097,0x3b36c75e,0x3b87df3f,0x3b47f67b,0x3a461954,0xb9d4932e,0xba60b012,0x3aa4d56b,0x3c16fe44,0x3c22651a,0x3b4d2f22,0x3b7d55f8, -0x3ac7b227,0xb8c41977,0xbbd81fe5,0xbb9a1d1c,0xbbc9ed72,0xbb893cab,0xbaa05f2f,0x39474649,0x39d3ad8e,0x3b1e986c,0x3b0a9aa1,0x3a306f8f,0x3b2a541c,0x3b472665,0x3ad76d58,0x393edeec,0x3a8df909,0x3b82822f,0x3b9571d8,0x3ba29d05,0x3b96cfd4,0x3b236af7,0x3a4343fa,0xba26a530,0xbb5718ec, -0xbbaeac5c,0xbbe2cacb,0xbb4b9147,0xba415279,0x3b6aa0dd,0x3bdcaced,0x3bd8f443,0x3b992a95,0x3ba6fa31,0xbbcc4fa1,0xbbee4e34,0xbc451fbd,0xbc95c616,0xbca34901,0xbca30dc0,0xbc82173c,0xbc2d7005,0xbb9cebf0,0xbaf06ca5,0xba8efc9c,0xbacd6c8e,0xba84dade,0xba1b2d88,0x3a2e66ea,0x3ab7ff64, -0xb92352ef,0x3a324182,0x39dd7d4b,0x3ae86f8a,0xba225154,0xba143d8e,0x3b1da221,0x3b4856b3,0x3b216e51,0x39da5db8,0xba608e57,0xbb6aaf4f,0xbb3912ed,0xbc3c252b,0xbc38eb7d,0xbb926fe6,0xbb57c487,0xba3d257f,0x3ae52420,0xbb906d1a,0xbc1f962e,0xbc31d7b7,0xbc3e46ea,0xbc27ccd3,0xbbc8fd03, -0xbc3a8287,0xbc54375c,0xbc57dc85,0xbc4bd65f,0xbc2f21c5,0xbc1038b9,0xbc1542f6,0xbbcda10b,0xba2b5261,0x3a850d3d,0x3b2c3308,0x3b0d4fbd,0x3b7a944b,0x3b876ad3,0x3b8b248a,0x3ad6c93d,0x3b098f5e,0x3b7a7601,0x3b55bde8,0x3b07bb5b,0xbabb27f1,0xbb3045b6,0xbb85d348,0xbba3253e,0xbbeaa30f, -0xbc11546c,0xbc2d5a19,0xbc64f1ad,0xbc71b831,0xbc58063e,0xbc3374db,0xbc6c0d50,0xbc8ebffa,0xbc7cc2f2,0xbc6d0e49,0xbc435eeb,0xbc40044d,0xbc2b6ac9,0xbc1723c7,0xbbf5d852,0xbbdfa204,0xbb8bda25,0xbb8e30a5,0xbac9ccb6,0x3abea63d,0x3a99aeea,0x3aed4e53,0x3a71b1f6,0x3b2ebd5d,0x3b6c3f28, -0x3b8462d4,0x3b9661de,0x3ba3b40e,0x3bdd4b52,0x3bbaf1d0,0x3b998fe4,0x3b4f8867,0x3b06b392,0x39209482,0xbb37740d,0xbb82f307,0xbbb347e3,0xbbd660a0,0xbc2bf842,0xbc55a9c9,0xbc6d50b9,0xbc76efaa,0xbc64a4f9,0xbc7ec288,0xbc73cfb3,0xbc5a9d6d,0xbc5afa1b,0xbc20a907,0xbbd4a15c,0xbb5aa1f4, -0xbb16c73d,0xbb1e1e2a,0xb90d985b,0xba1daf8b,0x3b01379e,0x3b2f0a63,0x3ab31a2e,0x3a4bfc35,0x399c1d23,0x3a47f786,0x3a81ecdc,0x3b217ac3,0x3b698e99,0x3b5f5426,0x3b90f12a,0x3b813f6d,0x3b880467,0x3b90e104,0x3b1407fa,0x3a44e4c5,0xba58254f,0xbac6aedf,0xbb02b85e,0xbb254c51,0xbb97c776, -0xbbf46a68,0xbc2c85e6,0xbc4d4475,0xbba8dd3e,0xbbb2644b,0xbb8f0fb6,0xbb53bbca,0xbac4cbb2,0xbb2c3e84,0xbb4effe4,0xbb5108d2,0xbb4caaf6,0xbaedb798,0xbac51683,0xba1713e9,0xba0b5fc3,0x3a5d6837,0x3a07616b,0x399f08c1,0xba28cd02,0xba4298a3,0xbb37163c,0xbaeffe25,0xbb078c5c,0xbada31a4, -0xbae6e9ad,0xbaa67c50,0xba87b82b,0xba82a8b8,0xba8b87eb,0xbae6c8dd,0xbb13e603,0xbb50c96c,0xbb8f6ddc,0xbbac6bbf,0xbbbbcd8f,0xbbadee2b,0xbba18dea,0xbba7c6dd,0xbb0ad3c3,0xbb29e12c,0xbb236b47,0xbb30d7e5,0xbb3b882b,0xbb00797c,0xbaa31aed,0xba6d03af,0xb9db3067,0xb9c5b6fd,0xb98203ed, -0x382b91bf,0x397daec3,0x397f5747,0x37e88307,0x3984b562,0xba68623f,0xb9680f1e,0x39ce9be1,0x3a5bd6e8,0x3a53a61b,0x3a788348,0x3a87ff3a,0x3a8cbed1,0x3a89d0ae,0x3a91431b,0x3a6419f5,0x3a02979e,0x39b0acd6,0x397e0bef,0x38ddaa19,0x38687701,0xb9848336,0xba46ccd4,0xbab66a3d,0xbaf95f24, -0x3911c58b,0x3afb1663,0x3a768977,0x3aa55692,0x3aa843cf,0x3ac4d6d0,0x3ae89968,0x3aca59a1,0x3ad5e6bc,0x3ad7c446,0x3b002cb0,0x3b0ba115,0x3b0dfbf6,0x3b1d3296,0x3b1f0e3c,0x3b0fbc0c,0x3acc885a,0x3a950537,0x3ad1704f,0x3ab73f17,0x3aae7fd8,0x3a9509b7,0x3aaccb2a,0x3aae88b4,0x3ab1f890, -0x3a8558ae,0x3a44e75a,0x39c56b0b,0x39d4d0a1,0x3a210c27,0x3ab70ed4,0x3a9493a9,0x3a894092,0x3a9d857c,0x3a468adf,0x3a1adbab,0x39cf047f,0x3a463962,0x3af72b56,0x3b40cb3b,0x3b2351d9,0x3b0905b4,0x3afe0faa,0x3b278853,0x3b37f439,0x3b0d84ee,0x3b35b266,0x3b6090e3,0x3b637057,0x3b991667, -0x3b93172d,0x3b4dfa49,0x3b048731,0x3a8fb77b,0x3a8c8620,0x3ac177ea,0x3af1e5a6,0x3ab076ad,0x3ae41f7f,0x3aeab410,0x3ae1d329,0x3a2d4b09,0xb9f2c9ee,0xbac6679b,0xbad98aa8,0xba20199b,0x3b268c8e,0x3aa81520,0x3a845609,0x3ab7e769,0xb998b1a6,0xba26c5ee,0xba53be0b,0x3a19a537,0x3a930529, -0x3b478a93,0x3adf4891,0x3b1d2593,0x3b198e33,0x3b608fc1,0x3b5f648e,0x3af92384,0x3b7a2520,0x3b981f8a,0x3ba0e0ee,0x3bea88e0,0x3bdc5b6c,0x3b8f3cd6,0x3b2c6194,0x3a93caf0,0x3a0997f7,0x3ad98dd9,0x3addbf6e,0x3acd9a28,0x3b116595,0x3b1c7813,0x3b1f4813,0x39eee3e1,0xbaa8dab1,0xbb5f0ee5, -0xbb817a1b,0xbb15ea54,0x3b6d1e8c,0x3aa0d5a6,0x3ab17193,0x3ad22ae7,0xbaaea6b2,0xbb2534bc,0xbb3ed6c0,0xb9669fc2,0x3b604f8c,0x3bc9f535,0x3b6683a8,0x3b35f6f7,0x3b0dab14,0x3b728e22,0x3b9c40cd,0x3b48f63e,0x3ba8317b,0x3bd7fa7a,0x3bc74e68,0x3c311c48,0x3c21dc4a,0x3ba0e407,0x3b40b25c, -0x3aa061e1,0x3a69e9e2,0x3af0235a,0x3b09193a,0x3a5fa1dc,0x3b14a521,0x3b0baafc,0x3b2db0ba,0xba3d5f5f,0xbb77c06e,0xbbeab57d,0xbbe07f22,0xbb8d12a1,0x3bbd974b,0x3a7910fa,0x3a6cc921,0x3afde5b0,0xbb81ad6c,0xbba1a29c,0xbb9b7f9d,0xba80469e,0x3a97fbb2,0x3b6bf0a4,0x39107241,0x3b305a16, -0x3b60d462,0x3b9f145b,0x3b7cc283,0x3b0a255c,0x3bab5a56,0x3bdac70d,0x3bd59a7d,0x3c3aa685,0x3c16c9ec,0x3b834609,0x3b7e53eb,0x3b77e78a,0x3b77909c,0x3b0ba21e,0x3af62955,0x3a65c165,0x3b231849,0x3b59a54f,0x3b55b19a,0xb9152706,0xbb926467,0xbbf5aa12,0xbc186576,0xbb9accf4,0x3bd925c8, -0x3afc9801,0x3b083360,0x3b053536,0xbb9bf06b,0xbc002ff6,0xbbd92c47,0xbab17943,0x3b748247,0x3c80a40b,0x3c31bb6e,0x3b5fda1b,0xbc3632f0,0xbb66624d,0x3ac77c48,0x3b6eb252,0x3c4f0402,0x3c81e208,0x3c3732dd,0x3ac50ff2,0x3ae3c5e2,0x3c318931,0x3b5fb170,0x3b23ee61,0x3b95dfce,0x3bb315ee, -0x3bbdba97,0x3bc35460,0x3be22409,0x3bd0ee88,0x3c09bd0f,0x3c1a11eb,0x3c1b0466,0x3c9a286d,0xbb7622dc,0xbc5942c6,0xbc5e0b92,0xbbdfe48b,0x3a6b2086,0x3ab5bbcc,0x3c907d9d,0x3c91483b,0x3ba6aead,0x3b1294aa,0x3b368e7e,0xbca79b60,0xbc4edc22,0xba0c5618,0x3c0bab52,0x3bb3695b,0x3b9d149d, -0x3bf75042,0x3b81cc33,0x3b782964,0x3c20c7ed,0x3c2e677e,0x3c0ea938,0x3b81c08c,0x3c02a205,0x3bfbebce,0x3b6b129f,0x3b14d7ed,0x3b2c10ba,0x3b820f2b,0x3b648b35,0x3bbc3880,0x3c260154,0x3c40c983,0x3c1ad5de,0x3bed3701,0x3a2b0c8d,0x3ab1150f,0x3b64ecbe,0x3bdf653a,0x3b9c0475,0xbb83badb, -0xbae4c65e,0xbb07e52c,0xbbf3affe,0x3bb5bcbe,0x3c11017a,0xbc3c3e1a,0xbbbad14d,0xbb98b122,0x3be177ce,0x3bd03e33,0x3bc616e3,0x3b1f707c,0x3b466071,0x3b3613fd,0x3ba81f8c,0x3ba62d82,0x3bae8c58,0x3bac707a,0x3b5cdeaa,0x3a2ebd33,0xba01d775,0xb99c6a55,0xbb060b0a,0x394a9164,0xba7d4cf9, -0x3aad9ee1,0x3bdeb623,0x3b5bed9f,0x3b5e4a6b,0x3b7c1bc6,0x3b97d49b,0x3b5e6e12,0x3bc8b696,0x3b7ae3ac,0xbadb0048,0xbbeb8e5a,0xbb5ecd3d,0x3a7fee22,0x3bfabbca,0x3c3dbd50,0x3c533083,0x3c2f335b,0x3bf15862,0x3bc408e2,0x3a2d8d2a,0x3bc86944,0x3b989ecd,0xbb24b8dd,0x3b62e694,0x3b7e6f56, -0x3b2ab552,0x3b497b56,0x3b6a7ea4,0x3ba3db70,0x3a0091e3,0xbaf76428,0xba6149a4,0xbb0f3d41,0xbaf9fcb7,0xba360495,0xb98840e7,0x3a1ac7d7,0x3b9ae955,0xbae24f6a,0xbb3b39a5,0xbaf020aa,0x3a2c85ea,0x3a9306a9,0x3bb25644,0xba8bbb92,0xbb4c17ab,0x3aa39625,0xbb0596a2,0x3a25ac29,0x3c02ebbb, -0x3c283f1b,0x3aaa905f,0x39f2897d,0xbb517fe9,0xbb79b469,0xbbf2f6c4,0xbbc0dc0a,0xbbdb29c6,0xbb903eed,0xb9e77e87,0x3aa994c9,0x3a1f472c,0x3b660381,0x3b2ed371,0xb986f6e1,0x3a8c78aa,0x3a98c218,0x3aab2bb3,0xb9f2552c,0x3a1f3765,0x3b8c2f34,0x3bacdd19,0x3bb9d4df,0x3b9b0e25,0x3b18be02, -0x3a03a25a,0xbb0d6814,0xbb825e1d,0xbb9bd19f,0xb9fbe8aa,0xba28ffbe,0x3b4c3052,0x3c23f4f5,0x3c363599,0x3c207627,0x3bb7c16d,0x3ba5c525,0xbb9aebbc,0xbba1f6c5,0xbc2be9a4,0xbc846b3e,0xbc6519e2,0xbc8bf0d7,0xbc6da8cf,0xbc296e91,0xbbb67746,0xbb212dee,0xbad09d8d,0xba90ff6c,0xbaaca13e, -0xbb2f2425,0x3832f1f3,0x3a65cb78,0x38fd1d9c,0xb9048727,0xb8cbe39a,0x3acddc77,0xba782fb5,0xbab43842,0x38f1a71e,0x3aa16b5d,0x3ac3e0d0,0x3a997bbb,0xba35db3e,0xbb50d3aa,0xbb5121ea,0xbc33d19d,0xbc4524dd,0xbc2332d0,0xbbb1ffaa,0xba84ded6,0x3b4797cb,0xbb59adf7,0xbc0a9a15,0xbc148652, -0xbc1d3391,0xbc18e217,0xbc0c68fb,0xbc5d2326,0xbc7777bd,0xbc652f6c,0xbc4ded96,0xbc2dad16,0xbc1453f9,0xbc247c4c,0xbc030234,0xbb54a0f2,0x39bc41e7,0x3b1f261c,0x3b0e5743,0x3b55f960,0x3b581d50,0x3b5a0da9,0x3a9c8ef5,0x3a81ed82,0x3a5aead0,0x3b3a0ac7,0x3b064950,0xba4f2c15,0xbb3f0205, -0xbb85bf87,0xbb8593cd,0xbba6ab38,0xbbb4f1ba,0xbc00d990,0xbc0b684d,0xbc230b60,0xbc492f6b,0xbc1b5c3e,0xbc3f0d8c,0xbc5a1979,0xbc404f60,0xbc3bf17f,0xbc2bb15c,0xbc2b5a5e,0xbc21f2d5,0xbc1016b4,0xbc018801,0xbc044fba,0xbbdc597a,0xbbd03471,0xbb588344,0xba543951,0x3a2de387,0x3b069a57, -0x3b1ed870,0x3b49ff41,0x3b7373ef,0x3b754377,0x3b38b260,0x3b431a18,0x3b52bc91,0x3b84117b,0x3b86be7a,0x3b8e98eb,0x3b0f2849,0xb9a399c9,0xbb838261,0xbbacb905,0xbbeb6ff4,0xbc18837b,0xbc3367a1,0xbc4d475d,0xbc6cfdac,0xbc582e6d,0xbc499e81,0xbc590197,0xbc58f494,0xbc3d012d,0xbc3214db, -0xbc08dc14,0xbbb9eda4,0xbb5eedb9,0xbb6b9473,0xbb9a1c87,0xbb72f9a0,0xbb685314,0xb9a05a83,0x39e6c0b9,0x3a235f49,0x3a745c63,0x3af6fb73,0x3b1345eb,0x3b2ccdc8,0x3b6b5c0d,0x3b8073a0,0x3b6a440f,0x3b736a1d,0x3b8465a9,0x3b998ecd,0x3bc5ae83,0x3b4295c2,0x3a9f7e4e,0xba50ddbd,0xbb0ad040, -0xbb5f5282,0xbb92004b,0xbbd4ebd0,0xbc0c0963,0xbc28e78b,0xbc3d4eb4,0xbbdd0815,0xbc00d197,0xbbc9541d,0xbbc0f788,0xbb98de16,0xbbb540dc,0xbbc40317,0xbbaa7d4b,0xbba02857,0xbb3136ec,0xbafbf137,0xbaa1047b,0xbade3862,0xb9f857ab,0xb9879637,0x390b15e4,0xb95bca97,0x39973715,0xba2b0413, -0x3abe44e2,0x3ac58c8b,0x3afc460d,0x3b068d2d,0x3b208d7e,0x3b185abd,0x3b0adf91,0x3b071be2,0x3ab7b56e,0x3a242fb7,0xb7fc0c38,0xba879985,0xbaeee8f8,0xbb424abf,0xbb5d4efe,0xbb92ec80,0xbbbc6c0d,0xbb0baf56,0xbb3ae848,0xbb1ab284,0xbaffeefd,0xbabc5ee9,0xbad61867,0xba306a38,0x393aaa65, -0x39faaa1a,0x393e73e1,0x39211b68,0x3a126b76,0x3a8a80a6,0x3a925108,0x39a13907,0x39ace21f,0x3a0d1de4,0x3a4fe487,0x3a8aa104,0x3aa0d302,0x3a8167a6,0x3a920d07,0x3a967129,0x3a96baee,0x3aa17480,0x3aad2eed,0x3a825fef,0x3a0514dd,0x39a863b5,0x37a629f8,0xb983f9a7,0xb9eaa56d,0xba654118, -0xba9bd3da,0xbad6113e,0xbb01a722,0x38124aee,0x3a6bf5a8,0x39c1d961,0x3a5f01fa,0x3a3d854f,0x3a80647b,0x3aa4e905,0x3a894d44,0x3a93f955,0x3a8e3d80,0x3abd9c6b,0x3ad4019a,0x3adabc0a,0x3af1f966,0x3af8e6b9,0x3ae44722,0x3a6fffb6,0x39eac487,0x3a510921,0x3a40111c,0x3a386c04,0x3a18a6c8, -0x3a4ad37d,0x3a432af5,0x3a388d64,0x3935e804,0xb9210d63,0xba092234,0xb9c62ec2,0xb8f77109,0x3a297253,0x39d5e15d,0x39c424d1,0x3a1900a9,0x38c294fc,0xb88ef0bb,0xb954a63e,0x38f1f77f,0x3a9d8f31,0x3b48c129,0x3b278c3b,0x3b011f52,0x3abd9412,0x3b13c225,0x3b236444,0x3ac3a737,0x3b18fb04, -0x3b3f0d69,0x3b3cae9c,0x3b81cbb3,0x3b735bae,0x3b392cb3,0x3aba05a1,0x39372250,0xb93e3d35,0x3a0976e2,0x3a9697b6,0x3a6b4184,0x3acb1320,0x3ac2153d,0x3a5c8948,0xba2d25c1,0xbb07279d,0xbb5e7793,0xbb430bfb,0xbaf25967,0x3a8e5cbf,0x392a795d,0x391c9370,0x3a3cd9ed,0xbaae775d,0xbada2013, -0xbab673f0,0xb99797e2,0x3a296537,0x3b779d70,0x3afae0ad,0x3b204237,0x3b0bd2f5,0x3b7555fa,0x3b6b8f40,0x3aaf897a,0x3b6ef849,0x3b8db703,0x3b9f7dde,0x3bd237dd,0x3bcad285,0x3b8ede17,0x3af5fd2a,0x38be01ac,0xba98315e,0x3a187b99,0x3a8975f7,0x3ab6676d,0x3b1a55d2,0x3b0f40b5,0x3abb81ca, -0xbabf07bd,0xbb6c54fc,0xbbbf0e0f,0xbbb952fd,0xbb675843,0x3ae05955,0xb7a3eeb0,0x394b131b,0x3a68a738,0xbb1dd9d8,0xbb5fea66,0xbb5c01da,0xba8e236e,0x3b401a82,0x3c08d367,0x3bac2f24,0x3b856a09,0x3b0b6ef5,0x3b94ac6a,0x3bb9d28c,0x3b3194a7,0x3bb205ba,0x3bdc02f0,0x3bcdbc31,0x3c2fa82c, -0x3c1fe498,0x3bbe3708,0x3b29e795,0x38b94db8,0xbac1567a,0x3a07fb90,0x3ad4a90c,0x3a98b167,0x3b52bb52,0x3b375af3,0x3ad7318e,0xbb6296e7,0xbbf69202,0xbc30372d,0xbc15f5e6,0xbbc64e18,0x3b34a227,0xba0adda7,0xb9ea32e5,0x3ac82ef4,0xbbb49066,0xbbcc2190,0xbb976b39,0xbb0019d4,0x3a7f01df, -0x3bc60608,0x3a7bdf6a,0x3b3bb49d,0x3b81713e,0x3bd6162c,0x3b9f67f5,0x3b1d9ea7,0x3bb4dd22,0x3bdd1c05,0x3bf9df40,0x3c49ec8f,0x3c29348e,0x3baecd50,0x3b74caae,0x3b1e0b50,0x3a282aca,0x3a626081,0x3ad1fa9f,0x3ac7f315,0x3b5fb874,0x3b75a22b,0x3b096384,0xbb4ac679,0xbc077df7,0xbc32f3a7, -0xbc3ba154,0xbbc89728,0x3b79a62d,0xb7d5d003,0x3a1224b1,0x3aa460f7,0xbbbfff0e,0xbc0cd681,0xbbd29b59,0xbb224656,0x3b39fe08,0x3c8e19d0,0x3c8eff2d,0x3c283395,0xbc044e45,0xbba1f563,0xba6b5de1,0x3b7e0dbd,0x3c1888d2,0x3c6f00d4,0x3c722fdb,0x3b2b9d4e,0x3a7c2f77,0x3c166aed,0x3b2042a4, -0x3b1bf5d9,0x3bbb815b,0x3be97363,0x3bf71fc8,0x3bccbf1d,0x3bcd945d,0x3bbf8c90,0x3c036425,0x3c19d3c2,0x3c08bbe9,0x3c63f7d9,0xbc0292b9,0xbc868073,0xbc8d9dad,0xbbc7605f,0x3af68a9c,0xbb3fb286,0x3c80b3a8,0x3c7fedbb,0x3a97da08,0x391b9059,0x3aec6547,0xbc838fbb,0xbcd5d541,0xbc4b306e, -0x3c82f769,0x3bbe3bde,0x3b89f6eb,0x3c0b29dd,0x3b931d0b,0x3b7ae79f,0x3c160000,0x3c399d6b,0x3c1db85c,0x3b54e7c6,0x3bc9f247,0x3bae4731,0x3b5178d9,0x3ad11bad,0x3b08fcf4,0x3b6f1cec,0x3b0d0e08,0x3b94ca8e,0x3c1aaacd,0x3c3abf35,0x3c097dda,0x3b7cd0ce,0xba11572e,0x3a5d007b,0x3bd19960, -0x3b1de125,0x39bbc5d6,0xbbaca9e8,0x39cc660e,0x3a898faa,0xbbddc1ec,0x3bc11744,0x3c3eb139,0xbb36db13,0xbb4cc955,0xbb96b142,0x3c2b325d,0x3bd3e474,0x3bc71c8c,0x3b111e58,0x3b57ab27,0x3b6ae6c4,0x3b8a6bd0,0x3bb7f378,0x3bb4fed8,0x3ba36d51,0x3b507988,0xb8a0a2da,0x3a03dd3e,0x39399e24, -0xbad27ed6,0x3a284c94,0xbad24da1,0x39a30fa4,0x3bab9e2b,0x3b7a18ae,0x3b846b02,0x3b890177,0x3b8232b4,0x3afcc11c,0x3bd29d94,0xbabcee86,0xbbe1121e,0xbc141be0,0xbb306603,0x3b4a520d,0x3c1a76a4,0x3c547f68,0x3c71fa3b,0x3c5b2cff,0x3c3ec8e8,0x3c1c4525,0x3ac51dff,0x3bcdff03,0x3b8c737e, -0xbaf35d8e,0x3b735c2e,0x3b8dff3f,0x3b2ae591,0x3b584551,0x3b6c7a4e,0x3b9b0659,0x39e7bf84,0xbae4ef8f,0x3916ae47,0xbad64c3e,0xbac73506,0xb8b13280,0xb9845d9c,0x3a27ef9e,0x3b67196e,0xba1c7af3,0xba87995d,0xba03d50d,0xb882e2c6,0x37ea3144,0x3bcce707,0xbb809270,0xbba1a190,0x3b7c5946, -0xb9b3ecd6,0x3b05070e,0x3bdb204d,0x3c282b0c,0xba9b8d60,0xbb9277bc,0xbbfbdfed,0xbbd9d92f,0xbbec61ab,0xbbb45db6,0xbbbfcb81,0xbb92843b,0xb8454172,0x3b0245ba,0x3a904bfa,0x3b8497bd,0x3b388910,0xbab29b9f,0xb8e0c8e5,0xb8fbb5ce,0x3a88caad,0xb9cf42e4,0x3a38e947,0x3b91a8a7,0x3bb266c2, -0x3bc37807,0x3b99006f,0x3b327f17,0x3a8fa00b,0xbb21e434,0xbba7b919,0xbb958a70,0x3ba628b4,0x3a092f8d,0x3bb8a5e3,0x3c7136a2,0x3c64b72c,0x3c489eb4,0x3bd905b1,0x3b903811,0xbb144c1d,0xbb599d94,0xbbf34586,0xbc4f7bfa,0xbc1a6475,0xbc567d53,0xbc3c64d6,0xbc0d67ca,0xbbb8dca7,0xbb56177c, -0xbb4102b7,0xbaf9304a,0xbb0992fb,0xbb81b417,0xb8a5a618,0x3a125617,0x390b4d8c,0xb9a1cd80,0xb9337893,0x3a81143d,0xba65b319,0xbae02942,0xba9e1263,0xb97db4a6,0x396dae4a,0x3ab9664e,0x391fa30f,0xbab00aa4,0xbb28aace,0xbc13d7d3,0xbc36c47a,0xbc6ded3d,0xbbf20aeb,0xbb19e2b1,0x3aac70e4, -0xbacc6fd3,0xbbdf97af,0xbbf5b9b2,0xbc03fb88,0xbc142556,0xbc4487d4,0xbc757ff3,0xbc8548ab,0xbc79361c,0xbc538d52,0xbc2ab2d2,0xbc11a451,0xbc1fd2dc,0xbc0bf491,0xbba9b453,0xba4d56b4,0x3ad9eebb,0x3b1d3884,0x3b2fbdfb,0x3b300624,0x3b2a42b2,0x3a95367f,0x3a1d4ba5,0xba226db3,0x3adff8ae, -0x3afa8d95,0x3a1bf96c,0xbb091ffe,0xbb5b5832,0xbb692add,0xbb546161,0xbb29198e,0xbb9b6879,0xbb952787,0xbbbc1485,0xbbfd1b6b,0xbbe7fca9,0xbc0fb0c6,0xbc1e2d8a,0xbc0a0555,0xbc111254,0xbc14227f,0xbc17319a,0xbc1bb747,0xbc13eb25,0xbc11afc7,0xbc1aea7a,0xbc161b99,0xbc06d1fb,0xbba9a5de, -0xbb6abdb0,0xb9ed2fc0,0x3aeba961,0x3b7c9fc0,0x3b573022,0x3b47d734,0x3b323df4,0x3aa34e3f,0x3a8ce0e0,0x3a11c5a2,0x3b0927b3,0x3b45f59d,0x3b92b1c8,0x3ac83750,0xba8bdf2b,0xbb9f002f,0xbbb5ae2e,0xbbf2db59,0xbc20819b,0xbc289a38,0xbc30e507,0xbc3e1971,0xbc296914,0xbc27a03d,0xbc32f3a8, -0xbc395dcb,0xbc1e9818,0xbc0a78ba,0xbbed1a78,0xbbb98bd9,0xbb921002,0xbbaf1f0f,0xbbe40e86,0xbbe7b166,0xbbd30547,0xbb4cdacf,0xbb240814,0xba089e82,0x3a3f6dd0,0x3b4da114,0x3b4a6391,0x3b6ae137,0x3b7bd270,0x3b703e4b,0x3b5347ad,0x3b338e4d,0x3b6124ab,0x3b809b5a,0x3bad7c2b,0x3b09d59d, -0x3a0e3527,0xbaa5cda3,0xbb362940,0xbb8e358c,0xbbb29c6a,0xbbddcd73,0xbc05881b,0xbc17d927,0xbc213169,0xbc00b8b8,0xbc16c9b9,0xbc06f4c5,0xbc0862af,0xbc0107d1,0xbc0b8de4,0xbc0db0fb,0xbbf6fe63,0xbbe161aa,0xbb8b45c4,0xbb45f561,0xbb1f96c9,0xbb4208bc,0xbb000cfd,0xbab00b9f,0xba360395, -0xb98d6525,0x3a255f03,0x3acc9364,0x3b4f9a0b,0x3b4c6baf,0x3b63c095,0x3b6ed80f,0x3b7512fe,0x3b5fffd3,0x3b516d18,0x3b441b8f,0x3b1cfc31,0x3ab90b59,0x3a8174d3,0x39ac0035,0xb9caaa8d,0xbb062256,0xbb3b0e66,0xbb94e000,0xbbd2d11e,0xbb269ed9,0xbb56299c,0xbb3fb764,0xbb1810cc,0xbaca6015, -0xbafb4a90,0xba9fbf83,0xb9db3198,0xb98bd35e,0xba498136,0xba73d1cc,0xba09660f,0x3883346b,0x39355c1f,0xb9ffb858,0xb9d5207c,0x39fe0680,0x39f02df4,0x39d8d6dc,0x3a033a11,0x3999f3b0,0x399b4100,0x397ceeb9,0x396eeac7,0x39a8e46c,0x39b9acb8,0x37a7a74b,0xb9c67ba3,0xba05a346,0xba65b92e, -0xba9758b5,0xbab01501,0xbae05c4a,0xbaf72195,0xbb12ed4f,0xbb204ffa,0xbaa17a1b,0x3583dd03,0xb936ce72,0x39bb11f4,0x3931b5b3,0x39f760f0,0x3a27ba54,0x3a0fb821,0x3a279678,0x39e9d3f0,0x3a69ec54,0x3a8d5be8,0x3a9274cf,0x3aa24ee7,0x3aa9c9de,0x3a9e72d7,0x399f8c0f,0xb916c5b3,0x38a9b420, -0x38f674af,0x39064acb,0x3896d2e0,0x398a05e0,0x39514aa2,0x388b9aa6,0xba0df09f,0xba61533f,0xba97aa68,0xba6b9b76,0xba229d6c,0xb670c270,0xb9600ae0,0xb95e41b0,0x388fdfc0,0xba00dd99,0xba2ea110,0xba436be0,0xb9fd77f8,0x3a01fc25,0x3b40cef3,0x3b2ad664,0x3ad6f0e6,0x3a4faf6c,0x3aed69df, -0x3b09a869,0x3a474aab,0x3b009b54,0x3b1eafe5,0x3b0fe7d2,0x3b4e84d9,0x3b3847a5,0x3b1827e3,0x3a305dbf,0xba34f93b,0xba8fa19d,0xb9d071f0,0x39ceb6e5,0x39f607be,0x3aa80ec3,0x3a9032cf,0xb8e357ec,0xbadfed8a,0xbb4c4ced,0xbb91ea43,0xbb5faee2,0xbb1c5911,0xb92ad3dd,0xba31dfa7,0xba00712e, -0x399411a4,0xbb0c844a,0xbb233917,0xbaea2030,0xba84c371,0xb8e1765b,0x3b7cc3c8,0x3b048e01,0x3b0eb935,0x3ab5d8bf,0x3b711d30,0x3b6a79ac,0x3a0fb89f,0x3b602571,0x3b81b789,0x3b97e364,0x3bb11984,0x3bae8e13,0x3b853833,0x3a7f5255,0xba6f4187,0xbb0f2490,0xba041063,0x39aa45d8,0x3a8f9ab5, -0x3b16eb92,0x3af3d950,0x394ffbc4,0xbb411033,0xbba54f29,0xbbe4106f,0xbbc17109,0xbb6fefca,0x39312b4a,0xba73e80f,0xba537e2f,0x3a0a27ff,0xbb556586,0xbb8940a4,0xbb74ef77,0xbaffdb12,0x3b07394d,0x3c1acd0f,0x3bd9d30d,0x3b97a80e,0x3ad81200,0x3b9f3ea2,0x3bc804e1,0x3b143843,0x3bbb73e3, -0x3bdfa7ea,0x3bc529d2,0x3c2624ef,0x3c15393e,0x3bc4b54c,0x3aef9bb7,0xba9a1a6f,0xbb409483,0xba7e0734,0x3a58bc63,0x3aaf3211,0x3b7833f0,0x3b4e5327,0x39295f56,0xbbb3649c,0xbc1faebc,0xbc473b20,0xbc168051,0xbbc6e3d7,0x3913958c,0xbab0cef3,0xbab17154,0x3acf985c,0xbbd43434,0xbbebdb8f, -0xbb89db33,0xbb30509e,0x37cd4ce2,0x3bdad14a,0x3b08d99a,0x3b377916,0x3b61c8cb,0x3bf7f2d0,0x3bba0268,0x3b18d91a,0x3bb8e4f3,0x3bdc7dfa,0x3c084ce6,0x3c532b71,0x3c342afc,0x3bc8e269,0x3b54a327,0x3a5ce08b,0xbadfc8c3,0xba1a224d,0x3a8b48ec,0x3af3b4d9,0x3b831d36,0x3b7f68a7,0x39a81f21, -0xbbae83f0,0xbc28c4bc,0xbc455218,0xbc320d25,0xbbb5848c,0x3adeaaa1,0xbab721bc,0xba674f70,0x3a930b10,0xbbd9c68a,0xbc14d4e7,0xbbd13f43,0xbb66ec54,0x3b55848b,0x3c8f44f5,0x3cb32ae8,0x3c80dbd1,0xbb9e7554,0xbbd99193,0xbb865838,0x3b6eefd6,0x3bc3dc18,0x3c4ddd51,0x3c9317cd,0x3b5dbe43, -0xb8f1f6a9,0x3bf11022,0x3addaf14,0x3b2026ac,0x3bcec71e,0x3c0030e0,0x3c05c0ce,0x3bbcd03c,0x3bc1cae9,0x3bb19ce8,0x3be01c96,0x3c0ddb96,0x3bd67466,0x3be7b5f6,0xbc2ce0f6,0xbc8f2eb3,0xbca17fe6,0xbba70402,0x3b20f953,0xbbcc938c,0x3c5080ef,0x3c47671e,0xbb755b1d,0xba9cc396,0xbb16d63b, -0xbc55991f,0xbd0b44af,0xbca38413,0x3ca37ceb,0x3bdf7845,0x3b90ac90,0x3bf10e6d,0x3b93c42f,0x3b828d0c,0x3c055f5f,0x3c38c315,0x3c236a96,0x3b3b0550,0x3b9419cf,0x3b629dd2,0x3b448fb4,0x3abfaf33,0x3b032bc9,0x3b4d864b,0x3a96529c,0x3b5cd825,0x3c04592a,0x3c2502aa,0x3be1f38a,0x3aed02dd, -0xba69ab9a,0x3a4910cc,0x3c0c227d,0xbb081f5f,0xbb98de94,0xbbec8d0c,0x3b01083c,0x3b52c143,0xbb8e0087,0x3b71d217,0x3c435980,0x3ba3c3e4,0x3a6b34a9,0xbb2e96da,0x3c4a1f6a,0x3be2f70a,0x3bd3e454,0x3b2c347e,0x3b787190,0x3b8abf0e,0x3b5544aa,0x3bbaf08f,0x3bb08888,0x3b9828e7,0x3b453835, -0xb9b562ef,0x3aaf8791,0x3a432d27,0xba4cbcb9,0x3977e6ec,0xbafa8846,0xb9c737d5,0x3b2cbec7,0x3b82c7b1,0x3b9cc707,0x3bbca34a,0x3b4815e0,0x3a301112,0x3bd07846,0xbbbe4327,0xbc285108,0xbc1de5d9,0x39b95967,0x3bd6c0a5,0x3c40218f,0x3c56cf32,0x3c6fe27c,0x3c6e4c63,0x3c697a5e,0x3c42896d, -0x3b3f61fc,0x3bd07123,0x3b9025ec,0x39819891,0x3b8967ce,0x3b920601,0x3b309df3,0x3b4bad85,0x3b527a94,0x3b84be12,0x3a24c447,0xbaac4ecd,0x39b987d6,0xba95afc9,0xba9028d9,0xb86156ab,0xb9f5eb79,0x39ce2714,0x3aa876b6,0x3a9f1b7f,0x3ae8716b,0x3b02007d,0x398cc8d4,0xb875b434,0x3ba73997, -0xbb94da1c,0xbb8f36f2,0x3b70f406,0x3b8a8c95,0x3bc0efc3,0x3bcaa274,0x3c215a50,0xbb6712f1,0xbc0de734,0xbc3b163f,0xbc06c375,0xbbbc15f7,0xbb8141fa,0xbb8d20f4,0xbb8116b0,0xb918b141,0x3af9d78d,0x3ab4f361,0x3b71b48c,0x3b1c1736,0xbb0ed00c,0xba6f3550,0xba79e42f,0x396eed25,0xb8c1675b, -0x3a7b1ba8,0x3b79b904,0x3b85964d,0x3ba199bd,0x3b8eea36,0x3b589005,0x3adc61dc,0xbb25788a,0xbb9f5972,0xbb3e9e42,0x3c0d41a0,0x3b4cf916,0x3c08cabf,0x3c8786f2,0x3c779eaf,0x3c57fe0c,0x3bf46708,0x3b5f9467,0xb91fc2bb,0xbaa92712,0xbb8a353a,0xbc12ac26,0xbbecbe70,0xbc159bce,0xbbfcb0d1, -0xbbc28350,0xbb9e6734,0xbb6cd6cc,0xbb8cbf5a,0xbb5d1663,0xbb5b8b11,0xbb8f5fa0,0xb9c4fe51,0x39576f08,0x3a08a7fb,0xb912ca7c,0xb8017260,0x3a3d4c96,0x39e6c073,0xb9f5dfe8,0xba880172,0xb7f2c2c4,0x39ba2673,0x3ae16f06,0x3af58c94,0x39ab187c,0xbb177a4a,0xbbcee8d7,0xbc0efa94,0xbc80358f, -0xbbf8a282,0xbb4fad56,0xbac0242a,0xba964fd4,0xbb9cb84d,0xbbca2639,0xbbd8999e,0xbc04ebd3,0xbc69c55c,0xbc7e16e2,0xbc888502,0xbc8168bd,0xbc57ae01,0xbc2b3405,0xbc103598,0xbc14518b,0xbc07ec12,0xbbd1c9a6,0xbb150159,0x39b2871e,0x3b2ef409,0x3b052bac,0x3b03e4d9,0x3af5d273,0x3a820b79, -0x39ca5942,0xbabf9f64,0x39dd76fb,0x3a90d4ec,0x3aff3ae7,0xba030e0f,0xbaf28ab4,0xbb129334,0xbb1d430d,0xba9e0230,0xba5e0190,0xbac52379,0xbb1f3263,0xbb164ab2,0xbb8a7afe,0xbbbb327b,0xbbd3665e,0xbbb6b9a1,0xbbdf72b0,0xbc0203b2,0xbc0d73fc,0xbc206747,0xbc2541ae,0xbc273cf2,0xbc2e4b16, -0xbc3476ef,0xbc1f8962,0xbbeafe35,0xbbd60bd3,0xbb119844,0x3a46b87c,0x3b915c0d,0x3b57324d,0x3b265f41,0x3b1a9591,0x3a786ea8,0x39ef33f0,0xb95ed849,0x3a35d1e4,0x3acb695c,0x3b4cffaa,0x3a25e34f,0xba9fc46a,0xbb83d402,0xbba7194d,0xbbe44e21,0xbc0bda54,0xbc0ced63,0xbc05e0f9,0xbbf93882, -0xbbe82024,0xbbfdf08b,0xbc06e216,0xbc1ae81e,0xbc008443,0xbbd8b6b4,0xbbda1e82,0xbbce9025,0xbbcc32ed,0xbbe8cc30,0xbc0cd16d,0xbc16efac,0xbc0b3c65,0xbbc0887d,0xbbb6a188,0xbb0f2684,0xb9b20eac,0x3b4632d9,0x3b2b4eaf,0x3b6f61ed,0x3b52b7b2,0x3b2e2ec5,0x3b0db9d9,0x3abe0b5b,0x3afbf912, -0x3aecce4c,0x3b0af494,0x38a90d20,0xba5d018c,0xbad44bb3,0xbb471b33,0xbb9509e7,0xbbc8cefe,0xbbd05981,0xbbe61fa8,0xbbfa7450,0xbbfb3ec4,0xbbf041e7,0xbc070d03,0xbc10e511,0xbc0f71d4,0xbc143268,0xbc1f8a4c,0xbc196192,0xbc0f3d26,0xbbf814a5,0xbbb0b5e7,0xbb824f34,0xbb5e7bbc,0xbb69bcd6, -0xbb35d079,0xbb15d37e,0xbaf87f04,0xba951a32,0xba032f73,0x3ad24624,0x3adeaf2e,0x3ac89268,0x3af049c7,0x3af86b2a,0x3ae54809,0x3acff207,0x3ade0fd3,0x3aafc501,0x3a777279,0x38953648,0xb8ee1854,0xb89a1995,0xb927e340,0xbaf2d5ef,0xbb2ce22f,0xbb88b940,0xbbc59dab,0xbb34f0d0,0xbb569132, -0xbb5237fc,0xbb34e546,0xbb090f03,0xbb097cb6,0xbaf2909d,0xbad423b7,0xbad15033,0xbb01c6ee,0xbb0bc1eb,0xbaed8709,0xbaabd513,0xba91d6b1,0xbab3e8eb,0xbaa19390,0xb8ef9951,0xb98b25e2,0xba07a1c7,0xb9f7a46e,0xba0a98b7,0xba2f7ed4,0xba4b490c,0xba58152d,0xba5f4853,0xba794ce2,0xba9d3c5a, -0xbaac0070,0xbaae3b3d,0xbacccf08,0xbaf00ff6,0xbb050f64,0xbb16dc08,0xbb188837,0xbb2ba922,0xbb318f33,0xbb17d60d,0xba4a9a8e,0xba309ef4,0xb916b0b9,0xb9c9ce98,0xb8df970b,0xb8b88b55,0x37b753ef,0x38eab7ed,0xb9617524,0x39a0be67,0x3a06800e,0x3a0e8a15,0x3a1d06ae,0x3a28d748,0x3a29a7f0, -0xb99d7510,0xba36565c,0xba088810,0xb9fa8844,0xb9dc0e67,0xb9bd7bae,0xb9642f03,0xb9a64a86,0xba113061,0xba912c77,0xbab13510,0xbac922f1,0xba9a7f5c,0xba6d2915,0xb9ff3b3e,0xba33205d,0xba308abd,0xb9b7bccb,0xba7e34ef,0xba99119a,0xba9bb2c5,0xba82e5f9,0xb92f4345,0x3b198908,0x3b0eba74, -0x3a8daa64,0xb8e1855f,0x3aa45e9c,0x3acfa8a5,0x386942b2,0x3ad5a9e5,0x3af7bde2,0x3ac3c446,0x3b0fc083,0x3aeb77a1,0x3adffbcc,0xb942cf4a,0xbac1c503,0xbae63573,0xba9f9ec5,0xb9ddec59,0xb7c687ad,0x3a5cfa22,0x3a0f8c43,0xba921886,0xbb2123e2,0xbb6d48a4,0xbb9b594e,0xbb4e6908,0xbb1775e7, -0xba819d5d,0xbaa69ffd,0xba8ce5ba,0xb955bcc0,0xbb3789c5,0xbb4a6857,0xbb01efac,0xbac7e697,0xba75dce9,0x3b49fca0,0x3ad6c832,0x3ac32ea4,0x38883365,0x3b523bcc,0x3b5a6052,0xb992ce0d,0x3b4851d0,0x3b698169,0x3b89f5b6,0x3b88a854,0x3b87f212,0x3b6ef307,0xb71b239f,0xbaee1f2a,0xbb342499, -0xbabe7757,0xb9d3169d,0x3a243dab,0x3af984e6,0x3a99858c,0xbaa66728,0xbb82dcae,0xbbb8c2aa,0xbbe4b425,0xbba3ebcb,0xbb3ba248,0xba1b2ede,0xbab91ac1,0xbac77600,0x39545820,0xbb8033db,0xbb9c75fc,0xbb7f76b4,0xbb31bf54,0x3a938040,0x3c0d9f28,0x3bd6a1b4,0x3b8bbac0,0x3a13d2de,0x3b9ae77f, -0x3bc76390,0x3ae67556,0x3bc36708,0x3be03d94,0x3bb3af03,0x3c12ff7e,0x3c009bb9,0x3bbdeca2,0x3a346565,0xbb1d0f4d,0xbb6bd756,0xbb1a496e,0xb95c58de,0x3a95805a,0x3b6ed6e6,0x3b357b04,0xbadf17e0,0xbbdd7c42,0xbc2b1d4e,0xbc4028b7,0xbbf4d7bb,0xbb9851e9,0xba9dc674,0xbad91859,0xbb084d60, -0x3a9d43c4,0xbbea6f50,0xbbfe5a55,0xbb656bef,0xbb4dc672,0xbab8aaf8,0x3bb2aa17,0x3b0aa889,0x3b044f22,0x3ae77089,0x3c02ea7a,0x3bd14514,0x3afdbd46,0x3bb8895f,0x3bd975e7,0x3c0b2215,0x3c5170c2,0x3c354c81,0x3bd1f48c,0x3b1c6b89,0xba4b9323,0xbb49cc10,0xbaf30786,0x393d451c,0x3ae5ad3f, -0x3b7b3271,0x3b4f49f8,0xbb04e9d3,0xbbe1761e,0xbc312243,0xbc3bcaa1,0xbc07c0c2,0xbb551e89,0x3a92e00d,0xbafac2af,0xbaf0f723,0x3a949e01,0xbbece020,0xbc174440,0xbbc898cc,0xbb9123c9,0x3b87fc79,0x3c8c2d2d,0x3cc45c77,0x3c9bbe1f,0xbb038725,0xbc12d337,0xbc025490,0x3b2e8d18,0x3b4405ba, -0x3c26a92d,0x3ca1006f,0x3b71ee1e,0xba961b31,0x3bae352d,0x3a906c55,0x3b271f54,0x3bbd5ca8,0x3bef02ad,0x3bfb8e3e,0x3baf2044,0x3bb978ee,0x3ba299c8,0x3baf4073,0x3bf9d64f,0x3b98b824,0x3a532f06,0xbc46fc7e,0xbc8cdd7e,0xbca0ef37,0xbb813bde,0x3b13dda5,0xbc12fe28,0x3c0e1579,0x3bf7b8d8, -0xbc0c0960,0xbb2fee89,0xbc0b9501,0xbc5410d6,0xbd14202b,0xbcbc2798,0x3c9e3945,0x3bfeae6f,0x3bb2665a,0x3baf1533,0x3b8acfef,0x3b8657a8,0x3be34649,0x3c305fb0,0x3c23f5b2,0x3b4aab2a,0x3b5d2367,0x3b11517a,0x3b470936,0x3b04af18,0x3b1e0572,0x3b1cd9a6,0x39c51b7e,0x3b0629ad,0x3bb247f8, -0x3c02cbd9,0x3bb4dc7c,0x39b8f59e,0xba5b5a25,0x3a370853,0x3c226804,0xbba99e2d,0xbbf6e4aa,0xbbcede08,0x3b25c737,0x3b6da362,0xba4604a8,0x366d32d1,0x3c3552e3,0x3c1d2eb6,0x3b9b1e24,0xb9369015,0x3c350c7e,0x3be45ba8,0x3be08e06,0x3b83865f,0x3b8ce7dc,0x3b972b42,0x3b2081cb,0x3bb1c1a4, -0x3ba355cb,0x3b8cc761,0x3b462f4c,0xb8ca9a7a,0x3b01b909,0x3a9a65a8,0xba023caa,0xba5c78b4,0xbb049783,0xba616e1d,0x3a085dce,0x3ba20ba9,0x3bcb35de,0x3bd1b0a0,0x3b3bc31c,0x3a03bb9b,0x3b978c99,0xbc06d736,0xbc3e9295,0xbc2bb9c7,0x3b9adc48,0x3c3898ed,0x3c48b94c,0x3c506fa7,0x3c53901a, -0x3c6e8a20,0x3c75b2c9,0x3c4e7429,0x3b817bf3,0x3bac43a7,0x3b79f95e,0x3b5ee969,0x3b9825cc,0x3b8b0b0c,0x3b31cf37,0x3b1d6080,0x3b1dec08,0x3b4cf77c,0x3a6bc394,0xba554f15,0xb96da153,0xba806ff4,0xbaa9b997,0xba3b7964,0xba579aaa,0x393f0bff,0xb8acca34,0x3b764343,0x3b9a4896,0x3b86bf92, -0x3af95fd6,0x3a9b8790,0x3ad6d1fd,0xbb685502,0xbb26e327,0xb956ee72,0x3c17b074,0x3c2b0ac7,0x3ba2ab3c,0x3c0edc06,0xbbbe0312,0xbc2dcbaa,0xbc67439b,0xbc18dd4f,0xbb81c4ad,0xbb1c0c19,0xbb3f4da3,0xbb57ca2f,0xba4d194e,0x3a8fef18,0x3a91af32,0x3b251ec7,0x3aaf84cd,0xbb21f4f7,0xbad2820f, -0xbaeb2c9f,0xba678a91,0x38fb5f3e,0x3a918fe6,0x3b31d611,0x3b187f5e,0x3b6c1c55,0x3b8b1c1f,0x3b7a057f,0x3b03c0f7,0xbb0a150f,0xbb3c0c96,0x383fbde2,0x3c1f4e26,0x3becc037,0x3c3bb764,0x3c730f40,0x3c5d61cc,0x3c36bf05,0x3c0147ad,0x3aa9b09f,0x3aa073fa,0x3b1b31ed,0xba5a5a44,0xbb9f2bcf, -0xbb978ad4,0xbbb429c2,0xbb86fa0b,0xbb4527ec,0xbb57e62a,0xbb498d11,0xbb9b9ecf,0xbb96ca52,0xbb9698aa,0xbb8272e1,0xbaac67fb,0xb9fe8f40,0x3aaa37fb,0xb8563099,0xb85481c1,0x3a447d6f,0x3af3f142,0x3abfda9c,0x39982048,0x3a463d97,0x3a916d84,0x3afaf509,0x3b25caa4,0x3a1f2b43,0xbb51d5d9, -0xbb887454,0xbbb2632c,0xbc4702df,0xbbb9aee9,0xbb596ffb,0xbb424a59,0xbafacab2,0xbb4f816e,0xbbabc5d6,0xbbd267ff,0xbc00e020,0xbc77e4f3,0xbc814223,0xbc87d4ce,0xbc7b9208,0xbc554cf0,0xbc2c370c,0xbc0dd5ae,0xbc07c751,0xbbfa3ad4,0xbbe2be2b,0xbb6f97dc,0xba969697,0x3b0ee64b,0x3ae1363b, -0x3afd302d,0x3abd951a,0x3aa04356,0x39fa1c8a,0xbaaf57e1,0xb98321bb,0x38d5d4f4,0x3b331a91,0x3a8c3b7e,0xb91308fa,0xb9d189f4,0xbac18b27,0xba00bd14,0x3ad239c0,0x3975da73,0xb9cbc6c2,0x3a5f7206,0xbb04776a,0xbb4de15f,0xbb788a2b,0xbb6fa55f,0xbbb85a0e,0xbbe7d681,0xbc0c71f5,0xbc2a9ec0, -0xbc3691ed,0xbc37e79a,0xbc391068,0xbc43c262,0xbc2be7ae,0xbc10557f,0xbc0d8cb9,0xbb8711d5,0xba523ccc,0x3b797cb0,0x3b3a5302,0x3b138518,0x3b1a57a1,0x3aa2aece,0x3a21bb5e,0xb8349eea,0xb81cc5b0,0x39a0571e,0x3ad83a2a,0x378ba057,0xba7f40f8,0xbb29f1df,0xbb8cd03b,0xbbc32472,0xbbd35998, -0xbbc89f1f,0xbbaa0491,0xbb8f90bf,0xbb83dc67,0xbbb0cd8a,0xbbb1a586,0xbbe70055,0xbbbadde2,0xbb9dc682,0xbbbe2fef,0xbbd7a8ac,0xbbfd7600,0xbc07929d,0xbc18ac6e,0xbc25373b,0xbc19ed6a,0xbc01d23f,0xbbfe4f1d,0xbb81b7b6,0xbaf6d527,0x3adc6208,0x3a880e2c,0x3b1e35b3,0x3ae4de03,0x3a8a9f12, -0x3a2a22de,0x387be11a,0x38806e71,0xba141cca,0xba9ec5b3,0xbaed9dc6,0xbb0aafc1,0xbb02b0ee,0xbb4033df,0xbb84496b,0xbbc00eae,0xbbb3dbc4,0xbbbbedc5,0xbbc1e4ca,0xbbb86f8b,0xbbbb6094,0xbbc624d9,0xbbfa59b7,0xbbf6df8b,0xbc07171c,0xbc123bef,0xbc04fc94,0xbc02ce79,0xbbd710cf,0xbbb1f854, -0xbb8a7ac3,0xbb789b1d,0xbb6c1557,0xbb5383e4,0xbb50b821,0xbb53fdb4,0xbb3253a9,0xbb200cef,0xb9bdef53,0xba94faf6,0xba8e9399,0xba603b62,0xba4936d0,0xba566c8f,0xba124d7f,0x377c757f,0xba189ce5,0xba5d7d8f,0xbad8999b,0xbafc2f2c,0xbad8a66d,0xbab6ccb2,0xbb21c5d9,0xbb33da97,0xbb73a7dc, -0xbba2715a,0xbb50a38c,0xbb5e1ddb,0xbb5c19bc,0xbb43ebf7,0xbb1e6906,0xbb1e6f13,0xbb203639,0xbb2f79fd,0xbb38e31c,0xbb408e75,0xbb4523fc,0xbb3a1529,0xbb255ef4,0xbb13b93c,0xbb197593,0xbb13be48,0xba75924a,0xbaa2d8f4,0xbad3166b,0xbad8339e,0xbad35cd0,0xbae8b5d3,0xbaf35473,0xbaff8a60, -0xbb091b7a,0xbb124286,0xbb2072eb,0xbb19e872,0xbb1703c7,0xbb1b1f26,0xbb281ea5,0xbb3866e8,0xbb44da60,0xbb408576,0xbb4ec2c3,0xbb50b8d4,0xbb7b9434,0xbaac4510,0xba88f9c7,0xba17006a,0xba49239a,0xba0e35bd,0xba3cb1e4,0xb9cf3508,0xb98a4041,0xba340049,0xb90a04e4,0x38b15a07,0x38fd011c, -0x38af6d31,0x38f32d2d,0x3975c9cd,0xba3712cd,0xba8c094e,0xba73a752,0xba65b063,0xba4f56a5,0xba301520,0xba216ad6,0xba425a3f,0xba86871a,0xbac264de,0xbad649ec,0xbade304a,0xbaa5f639,0xba84949c,0xba4e6bba,0xba8155fa,0xba822268,0xba30fa71,0xbaa99f7c,0xbac3c5b6,0xbabf480d,0xbaaed78f, -0xba42a2a1,0x3ad257be,0x3ad03bea,0x3a0d9cc4,0xba778fbd,0x3a401e3c,0x3a8db30a,0xb9fccf64,0x3ab49aea,0x3ac1580b,0x3a845383,0x3aa77dd2,0x3a5aaaf4,0x3aa0ff40,0xba646cb4,0xbb0480e6,0xbb0d0d2c,0xbae6b693,0xba8987b6,0xb9e5ac63,0x39769bc9,0xb9207496,0xbafde35f,0xbb3ed9f7,0xbb71cb9e, -0xbb92edf5,0xbb1ef32e,0xbaea1f1e,0xbab41cb0,0xbad20b03,0xbac095dc,0xba11234a,0xbb472033,0xbb58735d,0xbb088830,0xbafa83bf,0xbae0da75,0x3b04dba6,0x3a9493a4,0x3a42ea83,0xbab826e3,0x3b25dae4,0x3b430c67,0xba6316c5,0x3b31e7a1,0x3b5259aa,0x3b7d2c53,0x3b3c287c,0x3b3c44f4,0x3b5abdd5, -0xba50512d,0xbb1f3937,0xbb48cf67,0xbb065fc1,0xba746278,0x39696ab6,0x3a956879,0x3948ad29,0xbb22ff6e,0xbb9809fa,0xbbb91dd8,0xbbcfb558,0xbb661b8f,0xbad1b4e9,0xba46bddc,0xbad18bcf,0xbb027152,0xb925f52e,0xbb87e055,0xbba11bb5,0xbb7b7123,0xbb559dfb,0x37baacb9,0x3bebff6e,0x3bba6b3b, -0x3b6de4a2,0xba5d3504,0x3b8c1703,0x3bba7523,0x3a96b91a,0x3bcb3d69,0x3bdf9320,0x3ba5b71b,0x3bf0b22e,0x3bc94bff,0x3bb69b41,0xb9f6eeff,0xbb5732b1,0xbb76b47d,0xbb53c49d,0xba8e2e90,0x3a561acd,0x3b3442c1,0x3aced3af,0xbb5883e8,0xbbf54ff3,0xbc25755e,0xbc277eb5,0xbb9c4cf1,0xbb1912ef, -0xbac297fc,0xbad46b21,0xbb22d65f,0x3a4e83b6,0xbbe2a322,0xbbf5d262,0xbb43e40a,0xbb6f492e,0xbb475f72,0x3b7d801e,0x3ad908f8,0x3a620d56,0xba3d337a,0x3bfabfc4,0x3be17d5d,0x3ac287a0,0x3bbaaebb,0x3bda0367,0x3c075ff3,0x3c4161d7,0x3c29c950,0x3bd29bfe,0x3aac0b5b,0xbb0a70f7,0xbb6da5d5, -0xbb274ef2,0xba20403f,0x3ac96ebd,0x3b3e4041,0x3adb6fe9,0xbb85c0d8,0xbc00f39d,0xbc2aceaf,0xbc24dbda,0xbba0c376,0xb9752dc5,0x3ac53e42,0xbb02a8ca,0xbb238db6,0x3a41071b,0xbbeaedfb,0xbc0f769f,0xbbb65161,0xbbac6e92,0x3b945def,0x3c808117,0x3ccb68b0,0x3cabe701,0x3aad69e1,0xbc33f275, -0xbc3de1fa,0x3a5d3f67,0x3a226d0a,0x3c01406a,0x3c9d9a68,0x3b72eed9,0xbad7a9cc,0x3b562223,0x3a6c8b94,0x3b36dd3f,0x3b8f4992,0x3bc0112b,0x3bd7ed6c,0x3bad79b4,0x3ba5cb78,0x3b88800c,0x3b846e1e,0x3bd06c68,0x3b3c1a88,0xbb7b6d4e,0xbc4f4925,0xbc845e0a,0xbc937770,0xbb190b3c,0x3b307af3, -0xbc159984,0x3bb41808,0x3b4bfdbd,0xbc457536,0xbb8f6e75,0xbc621399,0xbc794298,0xbd0f357c,0xbcbf73ad,0x3c6b91dc,0x3c0ba147,0x3bedaf46,0x3b871f7c,0x3b7c8fb5,0x3b73fc48,0x3bbc92a6,0x3c1fa932,0x3c1c9ead,0x3b78104b,0x3b2bfe99,0x3aaf23eb,0x3b48dd82,0x3b3cf731,0x3b40842d,0x3ac26547, -0x36d41c84,0x3a8ace10,0x3b369d55,0x3bbfff04,0x3b87d4fd,0xba25aedb,0xba8cd164,0x397b8b8f,0x3c36ea9f,0xbbdb96fe,0xbc0e7766,0xbb8c98aa,0x3ac8cdfe,0x3b444884,0x3b83d118,0xbb425c06,0x3c23137c,0x3c369889,0x3bef73ab,0x3ade9c43,0x3bea5af5,0x3bc25777,0x3bde19f9,0x3bc572dd,0x3b9b8d7c, -0x3b9e094b,0x3ae39e19,0x3ba0368c,0x3b92b032,0x3b781087,0x3b54730a,0x3a134c17,0x3b123778,0x3aa66960,0xba3f874a,0xbaccf7fa,0xbace432c,0xba56cfa1,0xb9d118a4,0x3bb757df,0x3be68d38,0x3bd562e0,0x3b5545b7,0x3a8f277a,0x3af87201,0xbc08c3dd,0xbc2da1ac,0xbc318b37,0x3c1538a1,0x3c79ffd7, -0x3c1f2d46,0x3c3eaf73,0x3c216476,0x3c5806b2,0x3c6877dd,0x3c3fc3df,0x3b87a837,0x3b32b450,0x3b0ebfbd,0x3bceecc3,0x3ba188f6,0x3b831aa8,0x3b1bbb75,0x3abadf14,0x3ab4183e,0x3aff2749,0x3a8dba0a,0xb9934bef,0xba7b138c,0xba8633b2,0xbad8cca4,0xba9fe7ff,0xba687eec,0x3907f4ff,0xb9d899b4, -0x3b9fbf82,0x3bc54302,0x3bd1eafa,0x3b8198d8,0x3b4134ae,0xbb007136,0xbaddcaef,0x385fed87,0xbb823da2,0x3c575f61,0x3c5d0934,0x3ae317b0,0x3bda2582,0xbbeeb56f,0xbc2d1e9b,0xbc79d58e,0xbc2503e5,0xbb1425f6,0xbaa97468,0xbaf1e558,0xbb406d50,0xbae31712,0xb95a9b0f,0x39ed81f7,0x3a60783f, -0xb8c409d5,0xbb161718,0xbb1642a8,0xbb334411,0xbaf8ff63,0x3912396a,0x3a9a7759,0x3aab531f,0x3a930ffb,0x3b31e2bb,0x3b83f1cd,0x3b81464b,0x3b01af70,0xb984a220,0xba05eb86,0x3b3c6a67,0x3c25fdcf,0x3c2d610e,0x3c5764e1,0x3c240188,0x3c11d4ce,0x3bd80188,0x3bfdd3dc,0xba86d259,0x3b3f44d1, -0x3bc9221e,0x3b3dda4f,0xb98b8a14,0xba3de33d,0xbaf3b759,0xba6448e0,0xb9cfd219,0xbac4cacb,0xbaf35661,0xbb80f721,0xbba2b71e,0xbbae9e52,0xbb5b96a1,0xbb1870c6,0xba987a81,0x3aed83fa,0xb8cb6a3a,0xb920f8ca,0x3a4e3ed4,0x3b214d03,0x3b2fc0e5,0x3ac190fa,0x3ab7914d,0x3ac93a94,0x3ac194f6, -0x3b0e358f,0x397ae859,0xbb8e9ec4,0xbb4ea253,0xbb2b973c,0xbbaad53d,0xbb111b09,0xbb18f2dc,0xbb50d815,0xbad54d5d,0xbb1b3704,0xbb93e69b,0xbbeea613,0xbc11af31,0xbc77f23b,0xbc801a32,0xbc828ed7,0xbc63958a,0xbc4b70c2,0xbc2836f4,0xbc077df2,0xbbf436d7,0xbbdd16f2,0xbbd9fef7,0xbb955b91, -0xbb226cb5,0x3a329e29,0x3adc9edb,0x3b1d8f5d,0x3abbe91c,0x3ad7dbb4,0x3a71b649,0xb8e55f6a,0xb9ceac7f,0xb9932794,0x3b3ac775,0x3aeb2e07,0x3a74a7cd,0x3a5c2bc3,0xb978d09d,0x39297979,0x3af31c2a,0x3a214e6c,0x3987d07f,0x3a8b2a88,0xba8a9aed,0xbac0ba0d,0xbb04eaf4,0xbb3bd92b,0xbbaaf326, -0xbbdbf94a,0xbc0fd418,0xbc318f41,0xbc3cee9d,0xbc3e8430,0xbc3a8435,0xbc46d05d,0xbc2b7f8f,0xbc1c0dc4,0xbc17ba30,0xbbb10b1b,0xbb110e02,0x3b17dadc,0x3b075333,0x3b00062d,0x3b10646b,0x3aca7e06,0x3a643869,0x39bdf9c9,0xb92dec6a,0xb93fccae,0x3a5f31c9,0xb8f963b0,0xba0c85f0,0xbabbce8d, -0xbb4b9ba6,0xbb892f67,0xbb8bd9e4,0xbb536870,0xbb166d22,0xbb070722,0xbad91108,0xbb700f04,0xbb664a05,0xbb9abb56,0xbb7deef6,0xbb500cdb,0xbb9966ef,0xbbd04896,0xbc0c0da5,0xbc0f7ee1,0xbc18250f,0xbc257339,0xbc176fb1,0xbc0f957e,0xbc09e7c8,0xbba6c012,0xbb45b6de,0x38e9d586,0xba02f034, -0x3a21fe96,0x3a04b76b,0xb7eb278d,0xb99964be,0xba2c7834,0xba6e02b6,0xbae0f004,0xbb34b561,0xbb22df33,0xbb20fd1c,0xbafe5943,0xbb1aec04,0xbb429a7b,0xbb914e8c,0xbb85b468,0xbb884061,0xbb8026b3,0xbb7d2692,0xbb90efd3,0xbb9141f7,0xbbbfbd92,0xbbc5a654,0xbbe1cb0c,0xbbeaccb2,0xbbc607b4, -0xbbbe1b19,0xbb95dd58,0xbb928f41,0xbb733cf8,0xbb6ca7fd,0xbb594b2e,0xbb6366a0,0xbb7669b6,0xbb861fc2,0xbb86599f,0xbb751bf1,0xbb2069a5,0xbb40d88b,0xbb2cd874,0xbb24737e,0xbb15570b,0xbb0e5b3f,0xbacefc02,0xba33a754,0xbace3683,0xbaf1e597,0xbb324abb,0xbb5226ad,0xbb4ea5c8,0xbb47faae, -0xbb5ed701,0xbb53707a,0xbb771047,0xbb8c3f19,0xbb6fcc54,0xbb71ed1a,0xbb6df382,0xbb562737,0xbb37d178,0xbb3e7bae,0xbb50571b,0xbb73012d,0xbb8319a6,0xbb801ec6,0xbb805f1d,0xbb7f8856,0xbb778cd0,0xbb6710f8,0xbb5d5a49,0xbb51bffd,0xbb0d4da0,0xbb1e5483,0xbb2d7413,0xbb2c563d,0xbb2b3709, -0xbb32ab71,0xbb353698,0xbb3b8c8c,0xbb46bf67,0xbb4d0bf5,0xbb5b514e,0xbb4f4995,0xbb4b838c,0xbb49763b,0xbb4f3fa8,0xbb5f1cf0,0xbb68e73b,0xbb636e09,0xbb6c4cd1,0xbb6f9465,0xbbb2eb24,0xbaca551f,0xba9edb45,0xba605743,0xba7cb79c,0xba5c0401,0xbaa1c93f,0xba23e89b,0xba022059,0xba83d8fc, -0xb9ffe1c5,0xb99464fd,0xb9536a93,0xb9be53c5,0xb9bbd447,0xb8b67206,0xba73192b,0xbaa34204,0xbaa5398b,0xba950d3e,0xba7ff46d,0xba497c83,0xba5c2767,0xba7f091c,0xbaa1de65,0xbad4869e,0xbadd9a3b,0xbad60eb9,0xba96acf1,0xba7172e9,0xba61613f,0xba8ca8b5,0xba920bc7,0xba5c15d9,0xbab66b2e, -0xbacaa0bb,0xbac25097,0xbab93af3,0xba8a53c1,0x3a724100,0x3a876358,0x3933eb51,0xbad86859,0x398db4ab,0x3a25b5d3,0xba483c50,0x3aa21c22,0x3a9f2932,0x3a558b63,0x3a09cf86,0x38a2f6e5,0x3a70dff9,0xbab21fc9,0xbb161213,0xbb1d4811,0xbb0488dc,0xbabea215,0xba2809f0,0xb9b579e8,0xba4ecf64, -0xbb193de5,0xbb45d6b8,0xbb5eb68f,0xbb7c7153,0xbaba1b48,0xba738f0b,0xbaadc90e,0xbad0a75b,0xbacdbd2f,0xba3ec748,0xbb408250,0xbb54fc60,0xbb114c6c,0xbb08d453,0xbb0e16a4,0x3a5798bb,0x3a36f7d5,0x395774de,0xbb303568,0x3aec5a23,0x3b271b37,0xba7aca57,0x3b1f388e,0x3b438f8c,0x3b702eec, -0x3aeed4b4,0x3ae10ef5,0x3b4f4319,0xbaa9fac2,0xbb32ee61,0xbb59c90b,0xbb19bdd1,0xbaa49703,0x38437aea,0x399c2376,0xba492638,0xbb4a856d,0xbba026b5,0xbbac46e1,0xbbadae84,0xbae86ab5,0xb8ff4c51,0xba0302d4,0xbabe34f2,0xbb0e499b,0xba09198b,0xbb842fa6,0xbb95c7b0,0xbb6b92d5,0xbb5d1b1e, -0xba488698,0x3bb0793d,0x3b9c68f4,0x3b44141c,0xbb1b0c2c,0x3b62165a,0x3ba28587,0x3a46ce39,0x3bd2a38e,0x3be0c34a,0x3ba3b23f,0x3bb9af2d,0x3b8d338c,0x3bb41ffb,0xbabc1fc7,0xbb755349,0xbb7923a3,0xbb69d00d,0xbad4153e,0x3a1c84f9,0x3ac74088,0x3862a79e,0xbb87597e,0xbbf9e90b,0xbc13bdf6, -0xbc064e91,0xbae571aa,0x39c70613,0xba8bbdf9,0xba9c88a8,0xbb225332,0x39b1e9ac,0xbbcd22ca,0xbbe16075,0xbb51b693,0xbb7e4420,0xbb84055b,0x3ae87a9a,0x3a9f0cea,0xb919e163,0xbb6655f5,0x3bda5644,0x3bea5d76,0x3ab3e532,0x3bc1b4c7,0x3bdfc9bb,0x3c022604,0x3c2609db,0x3c12e020,0x3bd2a003, -0x395a0862,0xbb45c63a,0xbb780ca6,0xbb32a73d,0xba8dde1e,0x3ace614d,0x3ad90eff,0xb75863a7,0xbbab408d,0xbc087530,0xbc1be6ae,0xbc0743a0,0xbabc1d58,0x3b3e3710,0x3b10a001,0xbad1451e,0xbb3bdc50,0xb893f158,0xbbdccf0d,0xbbf7e3e7,0xbb9f6f2d,0xbbaef75e,0x3b8e9fd1,0x3c5a75d0,0x3cc65906, -0x3cb224d4,0x3b9d9f93,0xbc421c85,0xbc687eeb,0xbad88b0e,0xba729b3d,0x3bc4ec72,0x3c89a9df,0x3b71c28c,0xbab78142,0x3a9df73d,0x3a98ddda,0x3b52e2f2,0x3b2dba0f,0x3b87c733,0x3ba98eca,0x3ba6735c,0x3b824780,0x3b4ecfe5,0x3b527206,0x3bae1573,0x3ad55ca4,0xbbcfd0b9,0xbc4ae363,0xbc7314c3, -0xbc798bf8,0xba2a5405,0x3b62ac12,0xbbce7f84,0x3b3f8537,0xba9457e5,0xbc5dc0d2,0xbbbaf70a,0xbc85c491,0xbc8f8d2f,0xbd047b74,0xbcba1a22,0x3bce5d3d,0x3c151d1f,0x3c1cc421,0x3b7f045c,0x3b5351b4,0x3b2ec3a0,0x3b952fea,0x3c069f4a,0x3c0bb29c,0x3b953310,0x3b0b3085,0x3a44d3e4,0x3b3993c3, -0x3b5a627f,0x3b42d18b,0x3a55163b,0x38c8ea25,0x39d9ca2e,0x3a23955c,0x3b5876c1,0x3b13807a,0xba3c7e3a,0xba960b7d,0x3906d2fa,0x3c45bda3,0xbbe95f8e,0xbc15dc4a,0xbb11c450,0x39ab20dd,0x3b4431e3,0x3c1cdeb0,0xbb83ad78,0x3c05b89c,0x3c3dcd0a,0x3bfef2ec,0x3b12b249,0x3b1c7b51,0x3b7f9299, -0x3bc26915,0x3bffb08e,0x3ba361a5,0x3b9c0759,0x3a7e6072,0x3b84f840,0x3b7aef98,0x3b4ab944,0x3b69dc95,0x3ab317a0,0x3b09bfd4,0x3a91ddd6,0xba6f6b08,0xbab0bde0,0xba7e8042,0xba24c3a4,0xba61f20b,0x3bb37fe9,0x3bec12cc,0x3be2a4f7,0x3b81b572,0x3af7f22f,0xb8d50108,0xbbe5e775,0xbbfb5e38, -0xbbfcad96,0x3c2fee6e,0x3c79c8aa,0x3bbc172d,0x3c0dea6e,0x3bca8208,0x3c35a8cd,0x3c4410ef,0x3c1a5272,0x3b608fb8,0xba303561,0xb95b43a8,0x3c0221e9,0x3ba796f7,0x3b816389,0x3ad5a6af,0x3a10b70e,0x39ae8f2d,0x3a4b24ce,0x3a965574,0x393f7f11,0xbabaa9c0,0xba95c543,0xbaf25b30,0xbad3eca9, -0xba95c6d2,0xb978e161,0xba357df2,0x3ba17d25,0x3bcfc0fa,0x3c09cb87,0x3bbb4f20,0x3b927458,0xbb7757fc,0x3a82cafb,0x3b5f54e6,0xbb8bbdfa,0x3c621915,0x3c50b328,0xbb2b41e9,0x3b5cfdd3,0xbbfafa2f,0xbc29175e,0xbc6a3ba3,0xbc1f7cea,0xbab07bd0,0xb8e53674,0xb9d67d5e,0xbb2bd64e,0xbb18e568, -0xbac17600,0xb94dae42,0xba4e0576,0xbac893eb,0xbae92c6a,0xbb4551ab,0xbb71aac1,0xbb361caa,0xb983bc6a,0x3a423347,0xba1081cd,0x39475a9e,0x3aeda8a8,0x3b584574,0x3b6b1293,0x3ae8b5a4,0x3af4781f,0x3aed6900,0x3bad38e3,0x3c268bdd,0x3c4cd24d,0x3c52ad94,0x3b8f3054,0x3b5cd46e,0x3affe902, -0x3bd46cc3,0xbb15020e,0x3bc0e9d4,0x3c0f240a,0x3bb8ad76,0x3b5d6588,0x3b313135,0x3a8b0067,0x3ac0a2ee,0x3ad52396,0xb829e64c,0xba075fcd,0xbb0d8906,0xbb90d439,0xbbb0e4a3,0xbb519980,0xbb38de56,0xbab7e22f,0x3ad9d729,0x37fd8d3e,0x37a967b9,0x3a67d816,0x3b29a8af,0x3b4e71e8,0x3b175fe1, -0x3aee318d,0x3ab3aa55,0x3a7c524e,0x3a91c03d,0xba49a8db,0xbba0c223,0xbb09cdfc,0x38033cb6,0x3b32b596,0x3b12255f,0x39f62146,0xba8f5253,0x3aa3f939,0xbb320aea,0xbb91aad2,0xbc06a6e5,0xbc2748e1,0xbc71d2b1,0xbc7581b0,0xbc7220e7,0xbc4353bb,0xbc3b92e7,0xbc202458,0xbbfa4d17,0xbbd86495, -0xbbbb37dc,0xbbbc4fad,0xbba55714,0xbb6d9add,0xbaa1cc3b,0x3acf400b,0x3b3991ec,0x3ad10f28,0x3afa5015,0x3ac21839,0x3abf0a5e,0xb9636ca7,0x379ffce6,0x3b1ac95a,0x3b04d8b8,0x3ae38c01,0x3ab081c9,0x3a4f9b6f,0x3a3d364f,0x3ab5774b,0x3995f655,0xb910725a,0xb9a06d66,0xbab54ee8,0xba3e74cd, -0xba7f5c06,0xbb3ad4cc,0xbbb2513b,0xbbed04b7,0xbc166d4b,0xbc345edc,0xbc36af2d,0xbc39cff6,0xbc32a93e,0xbc3faf8a,0xbc211e76,0xbc194dc7,0xbc0e104b,0xbbc1dd45,0xbb504d89,0x3a045008,0x3aa89857,0x3ae2a241,0x3b13e376,0x3b09fa0e,0x3abb2ef1,0x3aac5fd3,0x39bd5df2,0x39193959,0x3a06cf34, -0x39b304bb,0x39c94e40,0xb94ca709,0xbab85cd2,0xbafcf34d,0xbb048387,0xba3be199,0xb94da572,0xba0454a1,0xb99a27f9,0xbb17d093,0xbb1cfe9d,0xbb58a3de,0xbb3dbb45,0xbb2485ed,0xbb81f8ea,0xbbc662b0,0xbc0ec720,0xbc0eca5f,0xbc0f76b0,0xbc1da556,0xbc0a29a0,0xbc0c1fa6,0xbc01fcc1,0xbbb13aa9, -0xbb67428e,0xba9586a2,0xbaad12e1,0xba057e95,0x39bf649c,0x38919ba7,0xb8e76c81,0xb9907637,0xba1622e7,0xbab22d0b,0xbb21b279,0xbafef68a,0xbaefaef4,0xba8e6ca6,0xbaa3ec03,0xbac49c95,0xbb1e478a,0xbb15f8f9,0xbb157a6d,0xbaf29176,0xbb1667e9,0xbb6cef20,0xbb61cf6b,0xbb97f38b,0xbb9be86c, -0xbbb68492,0xbbaf6883,0xbb85de54,0xbb610db1,0xbb2c8ae4,0xbb4fbf65,0xbb37e907,0xbb492c4d,0xbb3aa16b,0xbb5f2881,0xbb746f57,0xbb84f7d0,0xbb90a7d1,0xbb755918,0xbb59481e,0xbb4df01a,0xbb3d70b3,0xbb3b3580,0xbb2bd477,0xbb24f483,0xbaf526e2,0xba7a2100,0xbaeecaa8,0xbb0848f6,0xbb426c97, -0xbb6554fe,0xbb6dc7e4,0xbb73ed9d,0xbb71a9c2,0xbb6362f7,0xbb780bc3,0xbb7a0e51,0xbb5f8058,0xbb5d82f7,0xbb67440f,0xbb5ccda1,0xbb51e85f,0xbb413f60,0xbb697faf,0xbb8fa85a,0xbb9ad77d,0xbb950297,0xbb949945,0xbb96a015,0xbb96ddbf,0xbb91569e,0xbb7c3815,0xbb5f1fe8,0xbb51a609,0xbb4b7149, -0xbb428194,0xbb31a81a,0xbb341a1e,0xbb387139,0xbb38f17f,0xbb3d1b63,0xbb4738e4,0xbb4c04e0,0xbb5947d4,0xbb4c8bd7,0xbb4735ff,0xbb4217f4,0xbb431810,0xbb4e18b0,0xbb55f3d3,0xbb51c270,0xbb55f7b1,0xbb5be04b,0xbbbb2328,0xbacb64a6,0xbaa20a81,0xba81c0a9,0xba86d65c,0xba7f0c17,0xbac22780, -0xba39d026,0xba1a8b9d,0xba8bc95d,0xba2b5b03,0xb9f8e6da,0xb9a52d06,0xba1d7b48,0xba222333,0xb9727dfd,0xba832e38,0xbaa90800,0xbababeba,0xbaa3bf27,0xba893efa,0xba49d520,0xba764ef8,0xba8c9ddf,0xbaa8e037,0xbad47de8,0xbad44007,0xbabe8ca1,0xba77300b,0xba43aa0b,0xba4e0bae,0xba8677b3, -0xba918258,0xba7228d2,0xbaaf5ded,0xbab84547,0xbaaa874b,0xbaadecc5,0xba96c581,0x39c86049,0x3a1ff94c,0x382acc95,0xbb04603b,0xb85a6673,0x3991f372,0xba3d5356,0x3a9a77f0,0x3a920b64,0x3a6f3e10,0x382fb6c2,0xb9d6203f,0x3a460e46,0xbacd5bb3,0xbb189e9d,0xbb26771a,0xbb08b0c9,0xbad3cf45, -0xba421fbf,0xba598e70,0xbaaab211,0xbb247691,0xbb4097cb,0xbb42ec7b,0xbb4ddadd,0xb9effdac,0xb7e1a38c,0xba78d20c,0xbab48ccd,0xbace381a,0xba801bff,0xbb31d2f0,0xbb47ff03,0xbb1068c2,0xbb08b243,0xbb147ebe,0xb983e4f0,0x39b0c6a5,0xb8b53ed2,0xbb5ceb94,0x3a9bd44c,0x3b0c0e65,0xba14e86b, -0x3b105dd4,0x3b39bf2b,0x3b70b4ad,0x3a95d86f,0x3a6a3aae,0x3b44a203,0xbac78102,0xbb36866e,0xbb6be9b3,0xbb213ced,0xbabd6ebf,0xb8c196a3,0xba0cd953,0xbad585ba,0xbb5fd64f,0xbba1d4c3,0xbb9b8744,0xbb8a3a93,0xb9471d42,0x3a9b4003,0x38301b30,0xba94db69,0xbb0fed67,0xba8c111b,0xbb7556cb, -0xbb7eecc3,0xbb3fd7ef,0xbb4c1f29,0xba856e8e,0x3b68a668,0x3b7d501f,0x3b2e0573,0xbb5a3449,0x3b29713b,0x3b858da0,0x3a51327d,0x3bd8765d,0x3be4e4c8,0x3bb20f39,0x3b8cf024,0x3b33a228,0x3bb38423,0xbb075d7e,0xbb79e72d,0xbb7fcee0,0xbb6a555c,0xbaeffa90,0x39d861dd,0x3917fa66,0xbac0fd9d, -0xbb9895b4,0xbbf47892,0xbbfd6d55,0xbbcefe62,0x3a6b2533,0x3b3aac3b,0xb7393781,0xba1a98be,0xbb1dd222,0xba1d8d9f,0xbbb6db9d,0xbbc98d75,0xbb5739f4,0xbb73a5df,0xbb8a2e85,0xb9af1ba9,0x3a3295f3,0xba387205,0xbbb77956,0x3bb30623,0x3beb1a89,0x3ade0548,0x3bca45ab,0x3be9adac,0x3c0043df, -0x3c07cc10,0x3bf16bfc,0x3bd2796a,0xba35e08f,0xbb639888,0xbb7f8602,0xbb3062b8,0xba9d3133,0x3aca0292,0x395fbfae,0xbae60360,0xbbc4c0e4,0xbc0b85fa,0xbc0b3a27,0xbbd59ff9,0x3ad3fddd,0x3bb3fed9,0x3b448cf8,0xba75c8f8,0xbb492508,0xbaaa6a1b,0xbbcb5d89,0xbbbf127c,0xbb64bd9e,0xbb98a8b6, -0x3b691dbc,0x3c2efa50,0x3cb4e572,0x3cad57dc,0x3c036d40,0xbc3bbc49,0xbc7c8384,0xbb87cc90,0xbada6ec2,0x3b97609c,0x3c53f525,0x3b7effb1,0xba04762c,0xba6ad80d,0x3ae3c226,0x3b7286ce,0x3a822605,0x3b21b546,0x3b61a917,0x3b836445,0x3b1ea793,0x3b0604ac,0x3b33ed01,0x3b884924,0x3a0c971d, -0xbbe8bcf4,0xbc4925c3,0xbc5edd02,0xbc2e347c,0x3a58ebb1,0x3b82b776,0xbb03d426,0x3a566269,0xbba2155f,0xbc629b62,0xbbd88052,0xbc875aee,0xbc952cef,0xbcf010aa,0xbcb12545,0xbb35fb99,0x3c185236,0x3c46b06d,0x3b8f7efe,0x3b24f8ba,0x3a976fbd,0x3b4c0c87,0x3bd42405,0x3beff2eb,0x3baabeda, -0x3b01936e,0x3a0e0906,0x3b1edb43,0x3b468744,0x3b1d089d,0x3a297cc9,0x395d2933,0xb974bed5,0xbaab0ec4,0x39e805da,0x37ea630e,0xba99a72f,0xba18f667,0x3a0456cc,0x3c369083,0xbbd326eb,0xbc06e6ee,0x396896c4,0x3881eef0,0x3b8edfaf,0x3c7d0aff,0xbb636ba5,0x3bbb799a,0x3c4f9f5e,0x3bdafe4f, -0x3ab1bdba,0xbb11527a,0x3ad2993d,0x3b992038,0x3c0cfbe3,0x3ba18e3a,0x3b8f0530,0x3932b5aa,0x3b43e437,0x3b44d2ad,0x3b22eb40,0x3b7c6611,0x3b09fcbd,0x3ae57d3b,0x3a63854a,0xba3666dc,0xba1993ea,0xba5c3b43,0xba28f22e,0xba69200f,0x3ba0adf2,0x3be34c1b,0x3bd3eb96,0x3b88a26e,0x3b2119a4, -0xba606268,0xbbae1af4,0xbb9052d8,0xbab8b902,0x3c05dd91,0x3c249752,0x3abb3968,0x3b7383c2,0x3b39c99e,0x3c1b43de,0x3c110b05,0x3bc86468,0x3b00ba60,0xbb874617,0xbb333157,0x3c054077,0x3bab4031,0x3b84d296,0x3a4ee218,0xb8c00ad5,0xba140ac0,0xb8d4ff79,0x3a8a960c,0x3a0225e2,0xbadd72c5, -0xbaa2d41e,0xbafd71c5,0xbb0628b8,0xbad563ae,0xba4ac871,0xba090d2a,0x3b966949,0x3bc943af,0x3c1122cd,0x3be499c5,0x3bb51dd4,0xbb845f85,0x3b70c36c,0x3bd00400,0xbaa4476b,0x3c267b8b,0x3beab370,0xbbe9c8bd,0xba2b6a1f,0xbbefe46f,0xbc2d9858,0xbc416c87,0xbc017b7b,0xbaa405f4,0x3ab2889d, -0x3ab9a1be,0xbaf11071,0xbb1449fe,0xbb1684c9,0xba2571c1,0xbb015ec9,0xbb2cf697,0xbaa87eac,0xbb738af6,0xbb93b257,0xbb5b5c75,0xba90ac34,0xb9ad2717,0xbb127ffc,0xba2fac05,0x3a353120,0x3b1b5643,0x3b28ec33,0x3ab8ed7f,0x3b63dd80,0x3b8ef6ce,0x3bed6eec,0x3c1b2be1,0x3c572f7e,0x3c398740, -0x3a10c106,0xba6948c4,0xbaa9a990,0x3b8e78df,0xbb25ca11,0x3c1a86a1,0x3c2a034f,0x3bec670a,0x3bab81f2,0x3b8e18e9,0x3b25f5b0,0x3b1e99d6,0x3b2d57cb,0x3a6c1fe2,0x3a36f7f0,0xb9581dd0,0xbb4e97c9,0xbb9e5ab0,0xbb632f78,0xbb3c987c,0xbab79571,0x3a400b3d,0x39a85899,0x39f7e371,0x3a851dfa, -0x3b2b470e,0x3b52175b,0x3b14e843,0x3aee6a7b,0x3a81e5fd,0x3a095569,0xba692ed5,0xbb140fd3,0xbb9c961e,0xb9faf382,0x3b3d4d46,0x3c1ac06c,0x3bcef1e0,0x3b8bd7c8,0x3b70eb91,0x3bc28e68,0xbb83cd23,0xbbaaa6c7,0xbc14e6b1,0xbc345252,0xbc63d0f8,0xbc60183f,0xbc55ed82,0xbc22dab4,0xbc27c9b6, -0xbc1463c5,0xbbdd6d41,0xbbbf5941,0xbb9c4d10,0xbb9b2860,0xbbaefeb4,0xbb93b6a1,0xbb35396e,0x3a8fa017,0x3b3391bd,0x3ae4f1bf,0x3b080eec,0x3b04424b,0x3b28ecbd,0x39b6013b,0x39e68c13,0x3ad7fe2b,0x3b0fbf56,0x3b2bac90,0x3b1047fc,0x3ae31b7c,0x3aa98cf2,0x3a98d558,0xb927eaf9,0xba65d7a7, -0xbaebd56c,0xbb2f1071,0xba844e3b,0xba465545,0xbb62ff9e,0xbbca8480,0xbc084658,0xbc1d7eec,0xbc34aaab,0xbc29e6d5,0xbc2d3794,0xbc242306,0xbc2f23b8,0xbc0f92d3,0xbc0c1a77,0xbbee1c4e,0xbbc00cae,0xbb785f17,0xbaaa1d8f,0x3a008459,0x3acaac58,0x3b330baa,0x3b3ab59f,0x3b14fe87,0x3b258b5b, -0x3aa04890,0x3a688fa4,0x3a4822d4,0x3aa2c2e0,0x3ace67d9,0x3ab8ac4a,0x3a0e4ef2,0x39a244ac,0x39715cd0,0x3a599836,0x3a2b2838,0x37fa44ac,0xb8cc43b8,0xbab653bf,0xbae2b672,0xbb281025,0xbb2ea9c2,0xbb3c0f95,0xbb82e619,0xbbc3f7a0,0xbc0ce4c0,0xbc0abaa5,0xbc0474bd,0xbc13815a,0xbbf059b9, -0xbbfae960,0xbbdd1381,0xbba8b670,0xbb707e53,0xbb0f82fb,0xbad5f9fc,0xba2afb88,0x3a845c46,0x3a5a3017,0x3a2cd66d,0x3a273248,0x39cad78c,0xb9602bf5,0xbaa08900,0xba4bbb58,0xba35a6a8,0xb6a2a807,0xb8807319,0xb883d762,0xb9f3d571,0xba1a2b61,0xba25d110,0xb9dab064,0xba96a270,0xbb2f85c5, -0xbb1721be,0xbb690aef,0xbb645584,0xbb87e11f,0xbb73e380,0xbb2ed5eb,0xbae8745d,0xbab78ddf,0xbb0c1b8f,0xbb02bb0f,0xbb26e215,0xbb20554c,0xbb4fe80b,0xbb5944a4,0xbb5e83f3,0xbb7494b4,0xbb416f53,0xbb4d7dad,0xbb26af41,0xbb246cee,0xbb22ea79,0xbb1c761e,0xbb1b120c,0xbaf6fd2e,0xba99a131, -0xbaeac2d5,0xbb052ac0,0xbb334739,0xbb54c6ac,0xbb65d648,0xbb77bb71,0xbb66a757,0xbb5a3e2a,0xbb5ac147,0xbb47ce38,0xbb1ba12d,0xbb15b6c9,0xbb306a02,0xbb387627,0xbb450252,0xbb1ad5df,0xbb52bcda,0xbb898895,0xbb924e03,0xbb8c8207,0xbb8bc485,0xbb8d76f1,0xbb8ea076,0xbb8b7c41,0xbb5c28dd, -0xbb3568ec,0xbb587b15,0xbb3b3143,0xbb1d1a31,0xbaf819c5,0xbb015d13,0xbb0430a5,0xbb037682,0xbb04ede5,0xbb0d0e60,0xbb121349,0xbb1c9cc7,0xbb1353e9,0xbb0f186e,0xbb08eae0,0xbb06c22b,0xbb0c2ccc,0xbb0f68d9,0xbb0e086c,0xbb0f3550,0xbb159a46,0xbb8cada9,0xbab95d10,0xba952694,0xba82365d, -0xba773274,0xba6f3ac9,0xbabd703f,0xba2a827f,0xba0af774,0xba69b882,0xba25bdfa,0xba021a89,0xb97ef231,0xba25b74b,0xba2faae2,0xb97d9941,0xba70303c,0xba9d1291,0xbabd5dad,0xbaa013c9,0xba86615d,0xba46c8ed,0xba7b013e,0xba8d7de3,0xbaa4ccdb,0xbac80d40,0xbac00202,0xba9f41a3,0xba3e1aa1, -0xba11aeb2,0xba234e21,0xba692ecb,0xba859b89,0xba7b1060,0xba9cae0f,0xba985fec,0xba854279,0xba948cde,0xba8d0ac0,0x388bc508,0x39cfe90a,0x38b67a0e,0xbafd1ca6,0xb91bb7c3,0x38e7a0d2,0xb9e8702a,0x3a93907e,0x3a94f352,0x3a9f38d4,0xb91f6114,0xba25eb13,0x3a36624f,0xbac7385a,0xbb0f7535, -0xbb28b74f,0xbb064da0,0xbad28f3b,0xba5140d2,0xba9a56c5,0xbad91e6d,0xbb29ad10,0xbb342d02,0xbb24e9c3,0xbb208746,0x398b713b,0x3a347e9c,0xb9e58c3c,0xba852fa5,0xbabd64cd,0xbaa67e8c,0xbb20a5b1,0xbb36f7e3,0xbb07a0d4,0xbafd601b,0xbb05ba9c,0xba5bc31e,0x3949a672,0xb8dcb821,0xbb57a9ea, -0x3a5e65f4,0x3af5660a,0x38eb0b0b,0x3b063645,0x3b2f853d,0x3b801594,0x3a51f91b,0x39e80438,0x3b3724b3,0xbac4aa07,0xbb2d9b09,0xbb7ca0b1,0xbb262019,0xbada2434,0xb9ba11dc,0xbaaa4de5,0xbb1694ff,0xbb6eb247,0xbb9d17e5,0xbb887169,0xbb4eea43,0x3a7e7be4,0x3b0894fc,0x3a3cf610,0xba32ddfe, -0xbb04d632,0xbae02a55,0xbb5d4aa0,0xbb4a89cf,0xbb06ae76,0xbb2a4802,0xba701b59,0x3b1369d0,0x3b512336,0x3b2ce236,0xbb62d87e,0x3b076fa7,0x3b5892a3,0x3a9800e4,0x3bd88d15,0x3be7f6d2,0x3bce2e9e,0x3b5a178a,0x3ad63747,0x3bb21113,0xbb19a5a0,0xbb6d569f,0xbb8631e7,0xbb66a7cb,0xbb0173de, -0x38cda575,0xba9a707e,0xbb3625c6,0xbba8ec52,0xbbe76f88,0xbbd2e16c,0xbb9848f8,0x3b37f7f6,0x3b972a0f,0x3a9f9021,0x39383417,0xbb0be3ce,0xbaecd950,0xbba38d8e,0xbbb49c9c,0xbb4ddac4,0xbb588912,0xbb761c7d,0xbac8080d,0x39e609d5,0xba408b3b,0xbbd2e806,0x3b8cff29,0x3be394cd,0x3b1ab946, -0x3bd07791,0x3bf4cbe9,0x3c0373d0,0x3bd87717,0x3bc1dce0,0x3bd17989,0xbaaaaf43,0xbb681c19,0xbb83e2e4,0xbb3618a7,0xbaad0072,0x3a816aff,0xbaade9a2,0xbb59e4ba,0xbbd95381,0xbc08a99b,0xbbf172bb,0xbb9c6387,0x3b7de65a,0x3be8e24d,0x3b7c6fc7,0xb8e58455,0xbb418077,0xbb32688a,0xbbba16d9, -0xbb833dbd,0xbaee527e,0xbb6c03b8,0x3b1cae1d,0x3c0119e4,0x3c9b0cd1,0x3ca0bf7c,0x3c317495,0xbc209a50,0xbc7768a7,0xbbc60777,0xbafc8969,0x3b701efb,0x3c0b2342,0x3b91f6ed,0x3a689b47,0xbb33a543,0x3b1c7439,0x3b842167,0xb9e9d470,0x3a7f607b,0x3acc5348,0x3b1cdf2f,0x3a877a00,0x3a99a0e0, -0x3b1a6eac,0x3b34852c,0xba1b6876,0xbbdf8ac9,0xbc4b13da,0xbc4dcd9b,0xbba956cf,0x3b10cd32,0x3b974da0,0x3b23aa5f,0xba4c1832,0xbc02a9bb,0xbc597d44,0xbbe5b921,0xbc76f0b3,0xbc897efb,0xbcd04d6d,0xbca30041,0xbc30954d,0x3c09c906,0x3c65bd66,0x3bba750f,0x3b0d91e9,0xb99cdf88,0x3abc2d79, -0x3b9a7ff6,0x3bca4baf,0x3bb5724c,0x3b10d5ab,0x3a238308,0x3b060fc8,0x3b077495,0x3ab0ae39,0x3a2506a6,0x38a9e9ba,0xba323e1d,0xbb147d57,0xbad5b04f,0xbae7d57d,0xbb01ba0c,0x397acc4a,0x3a81480f,0x3c0d72e6,0xbbb6e1a9,0xbbe09502,0x3b2bbcf1,0x3a70f2db,0x3be46acf,0x3ca8da57,0xbb030836, -0x3b5a50dd,0x3c7129ea,0x3b9a468f,0xba24c56a,0xbbc2b777,0xba02de5c,0x3b634733,0x3c057500,0x3b994782,0x3b7d6963,0xba22fd8e,0x3aeed050,0x3b07dc7e,0x3b0b281b,0x3b81614a,0x3b2d7f58,0x3ac5faad,0x3a35e000,0xb8b57c88,0x3914940e,0xba83856f,0xba2674cb,0xb9951624,0x3b86d857,0x3bc7d508, -0x3bafd925,0x3b78fcea,0x3b2962c4,0xba35ac5f,0xbb7d2cd4,0xbae788aa,0x3be3db6f,0x3b489d99,0x3aed6b93,0xbb36a78f,0xbac7031e,0x39a67ed7,0x3c0ad8fc,0x3ba99845,0x3b0f2f60,0x39ed583b,0xbbd8f84a,0xbb96e532,0x3be1c30a,0x3ba6df53,0x3b87a7ff,0x392a39b2,0xba0bea76,0xbaa8638f,0xba198500, -0x3a493abb,0x3a3a6eae,0xbae6715a,0xba91233f,0xbae0ff58,0xbb06c40c,0xbb0172f6,0xba9f7793,0x3887d1d5,0x3b7bfd4f,0x3bb1667b,0x3c05c401,0x3bf585f3,0x3bc7b79d,0xbb32d55d,0x3ba66b1e,0x3c00f531,0x3ba977f9,0x3b79a702,0xbac402a0,0xbc3771ab,0xbb8b2c28,0xbbd7b69c,0xbc2fc0f8,0xbc083e50, -0xbba40fa6,0xbaa6afa5,0x3b3423de,0x3b4716e8,0xba5d63de,0xbae15a06,0xbb29c467,0xba6119f7,0xbb2663a0,0xbb521d50,0xba8f1dd5,0xbb87b8a7,0xbba336cc,0xbb6e9f7c,0xbb10d0c7,0xbadcea76,0xbb58928b,0xbaca7574,0xba1456ca,0x3a9a927c,0x3a915fe0,0x3aab46fd,0x3ba07ed9,0x3be1e360,0x3c11e524, -0x3c121935,0x3c4ce2cc,0x3c17ffea,0xba47daff,0xbb43faa2,0xbb3457d1,0x3b101732,0xbb15e65c,0x3c4c52b6,0x3c366a47,0x3bfc2103,0x3bb5db69,0x3ba4a8c9,0x3b33017c,0x3b10ac6c,0x3b2740ab,0x3aa7471c,0x3ad2c36f,0x3aad25dd,0xbab34e77,0xbb731c31,0xbb73eee1,0xbb38f38a,0xbac9acad,0xba11bf59, -0x39e7e5bc,0x3a6dec73,0x3a9e05e3,0x3b1f5db8,0x3b3f8b53,0x3ae4d908,0x3ad56ca0,0x3a1a8ad7,0xb9942f88,0xbb4423b0,0xbb41c42f,0xbb6c9821,0x3b0aa55b,0x3bbf7528,0x3c5bc0c4,0x3c13eb35,0x3c00fdad,0x3c1e7c9d,0x3c304143,0xbbaa34ad,0xbbbbee08,0xbc1f9534,0xbc3a0217,0xbc51baa2,0xbc3ff5eb, -0xbc2d9681,0xbc030b21,0xbc10132d,0xbc038b7f,0xbbba7c51,0xbba8f7d6,0xbb863602,0xbb84cb80,0xbbaf19f2,0xbb9fff3a,0xbb78a40b,0x3935890a,0x3b061bc3,0x3afd046e,0x3b139f82,0x3b209007,0x3b492d5c,0x3aacaca7,0x3a8942a0,0x3ab10a10,0x3b25d0c4,0x3b59eb2c,0x3b4f6fdb,0x3b2b7e87,0x3b01eada, -0x3aa26eed,0xb8802b10,0xba9c40bf,0xbb3a6f52,0xbb8117e8,0xbae2ff8c,0xba99f902,0xbb91fd2d,0xbbe847bc,0xbc192ee9,0xbc1ec2f1,0xbc30687e,0xbc1c434b,0xbc1e3eaf,0xbc1357ed,0xbc1965c2,0xbbf5fc59,0xbbef9cd8,0xbbb54d08,0xbbae6f47,0xbb84870c,0xbb344015,0xb9b5487e,0x3aaaa221,0x3b52ad21, -0x3b52871c,0x3b3dd6a0,0x3b526f7f,0x3b0894ec,0x3ae3bbf3,0x3ac92b5f,0x3b113e00,0x3b26f802,0x3b40207a,0x3b1b1322,0x3b135675,0x3b0348ad,0x3ac39f09,0x3a10053f,0xb9917cb3,0xba23b5ab,0xba87c353,0xbac98041,0xbb1147bc,0xbb336ba7,0xbb661e59,0xbb933e60,0xbbcace7e,0xbc0bae00,0xbc072c84, -0xbbf50d93,0xbc08c81c,0xbbc8a4a2,0xbbcfde1f,0xbba7a6a8,0xbb92b53a,0xbb6484ed,0xbb3d2179,0xbad80c09,0xb986e1ee,0x3ad850d4,0x3abb6f0a,0x3aaf52aa,0x3aba26ab,0x3aa11d54,0x3a715fa3,0x39557140,0x3a0de6df,0x3a2413cc,0x3a84e4cf,0x3a5890a2,0x3a611e9b,0x3a5735b6,0x3a0ec760,0x39e4bc67, -0x39945bd1,0xba1c092b,0xbad51f38,0xba90cb99,0xbb192e93,0xbb19bd1e,0xbb398d17,0xbb1af5b8,0xbad91f25,0xba627693,0xba376d82,0xbab9a17a,0xbab0e0c7,0xbb074a5e,0xbb086bd5,0xbb352d0f,0xbb2d3054,0xbb1ced70,0xbb263ea8,0xbaf22cc4,0xbb1dfc0d,0xbace7b82,0xbadcefb4,0xbadf47d4,0xbaea637d, -0xbaf060c7,0xbad45992,0xbaa45c0c,0xbad9fb66,0xbb01e1be,0xbb1a3941,0xbb350fe8,0xbb470307,0xbb6326a5,0xbb4b4757,0xbb4170e4,0xbb2cb468,0xbb0a4099,0xba960ee4,0xba85bf45,0xbabd2685,0xbadcb98c,0xbb0b00b7,0xbabef267,0xbb192506,0xbb5a76fa,0xbb641581,0xbb58ace4,0xbb5450b3,0xbb52acc6, -0xbb50f142,0xbb4bdae6,0xbb0d0642,0xbad7e931,0xbb237f51,0xbaf38881,0xbaa786c4,0xba41ab21,0xba6395aa,0xba67ca9d,0xba60bdbf,0xba618eb5,0xba784a96,0xba843a73,0xba8f8f93,0xba8637f1,0xba878472,0xba818298,0xba7bcde4,0xba82021a,0xba752705,0xba76eb53,0xba759eb8,0xba876378,0xbb0c78a6, -0xba9ad771,0xba74861a,0xba5cd137,0xba464283,0xba4a4f6f,0xbaa6503c,0xba046fb9,0xb9e2a877,0xba34d9ee,0xba1a6b15,0xba027d26,0xb91774dd,0xba1ee527,0xba31a50d,0xb98b8b21,0xba51d91d,0xba88a256,0xbabd7280,0xba9bf0c4,0xba81732a,0xba3b93dd,0xba6eae03,0xba83c885,0xba963eb0,0xbaafb109, -0xbaa12fd1,0xba6d8759,0xba00dfb4,0xb9b5a754,0xb9d5f95b,0xba32659c,0xba5ec4fc,0xba721db9,0xba82fbb0,0xba641277,0xba3656c6,0xba619420,0xba56e669,0xb7d77b29,0x397b1557,0x394a92d6,0xbad1c57d,0xb881a2c7,0x38d2e47a,0xb8f029d5,0x3a891a1e,0x3a980778,0x3ac55031,0xb92e7a30,0xba2af5a1, -0x3a24788c,0xbab11047,0xbafc08ab,0xbb2adabc,0xbb03e026,0xbad275b5,0xba5e153b,0xbab53110,0xbaf0958f,0xbb25a465,0xbb1fcc43,0xbb029350,0xbad9e976,0x3a4456b6,0x3a949d6f,0x37fdc8d9,0xba169779,0xba9a041a,0xbac1e2de,0xbb107518,0xbb27271c,0xbafd6c20,0xbad8c044,0xbac44991,0xba72f835, -0x399055a1,0x3932e271,0xbb300d6b,0x3a50cfaa,0x3ae4675f,0x3a5b019c,0x3afbb367,0x3b227b46,0x3b872252,0x3a40358c,0x3992499b,0x3b20ea54,0xbaaa1ce2,0xbb19f5e5,0xbb86af98,0xbb307fe1,0xbb044acf,0xba4e0843,0xbafea577,0xbb346d7c,0xbb71f24e,0xbb90872c,0xbb6263ed,0xbafd447b,0x3ae4d4ba, -0x3b29362e,0x3aa94b3e,0xb91a0cd1,0xbadb9711,0xbb11f1cf,0xbb479917,0xbb1b7454,0xbaa34d18,0xbaf50573,0xb9e3aa0b,0x3ace8bde,0x3b2f4f95,0x3b2b9ddc,0xbb476c03,0x3afb2aef,0x3b3a01db,0x3ad46360,0x3bd11446,0x3be71a16,0x3beca251,0x3b351a40,0x3a86f7e3,0x3bab4b00,0xbb11fdb1,0xbb517e73, -0xbb921723,0xbb6b1150,0xbb1655ca,0xb9e41be3,0xbb18a5d5,0xbb76526b,0xbbb0b89f,0xbbd1106f,0xbba55771,0xbb31845a,0x3b80bc5f,0x3bb2d8dc,0x3b09e68f,0x3a7c18c2,0xbadb261a,0xbb37ddb3,0xbb97e33f,0xbba7d437,0xbb48dff6,0xbb2cfa0c,0xbb29daa0,0xbad8276b,0x3a32bd41,0xb94086ff,0xbbc999c2, -0x3b5ee657,0x3bd6ab33,0x3b50cc5d,0x3bd47857,0x3c0006f9,0x3c09fd09,0x3bacb3ac,0x3b9c0559,0x3bccb73f,0xbac60a55,0xbb58b1d0,0xbb8cb90c,0xbb4d20e9,0xbaf42872,0xb92f5f02,0xbb3d4197,0xbb977836,0xbbe2a172,0xbbfec956,0xbbc49b6e,0xbb2a17b2,0x3bb1453c,0x3bfc9fa2,0x3b8f8d70,0x3a448dbf, -0xbb249c4f,0xbb7da846,0xbbac9512,0xbb23db3b,0xb983f198,0xbb0b52dc,0x3a7f0686,0x3b9c1430,0x3c70105a,0x3c8a52ac,0x3c4df84a,0xbbf29b96,0xbc5d565b,0xbbe9c180,0xbb10dcbb,0x3b3d3ab0,0x3b93eed0,0x3baf6983,0x3b2ead09,0xbb8346ed,0x3b3d85e8,0x3b859b27,0xbab365b1,0xb90bfcd5,0xb89b02c2, -0x3a8619b1,0x39e0c45e,0x3a87d0af,0x3b136b8b,0x3af2b93d,0xbab01da1,0xbbd90bf8,0xbc4d7669,0xbc3c295a,0x38ceeb74,0x3b6b9594,0x3bacfd49,0x3bc28936,0xbb220dfd,0xbc2d4645,0xbc4ca885,0xbbef18c8,0xbc4f0d65,0xbc615799,0xbcaa500b,0xbc8fa00e,0xbc803d94,0x3bccfb76,0x3c640da5,0x3bf0a1c4, -0x3b1124ba,0xbaa4e474,0xb9a25a12,0x3b45f19c,0x3ba4a926,0x3baf950b,0x3b284b78,0x3a432555,0x3ae40200,0x3a33e795,0xb8ccdd3c,0xb78b8dab,0xba1ffdf7,0xba9f3a0a,0xbb22988a,0xbb4e9c57,0xbb4a5189,0xbb2c319e,0x3ada20e1,0x3b0aefb0,0x3bbed3c6,0xbba4708d,0xbbbfc0e3,0x3b802fbd,0x3b2f9cb3, -0x3c2875a3,0x3cc616db,0xb91ae719,0x3aa266a6,0x3c8ca3f3,0x3b20efa9,0xbb45010f,0xbbfd8b09,0xbb022626,0x3b28bc88,0x3bd75552,0x3b888c4c,0x3b5e4356,0xbaabcaa5,0x3a32e4e4,0x3a914f46,0x3afb0b4b,0x3b7123ce,0x3b3af3ad,0x3ad47d45,0x3a1b708b,0x3a16d477,0x3a0c4395,0xba811b9b,0xb9eb44b5, -0x3a373426,0x3b4532ed,0x3b9c5731,0x3b883d76,0x3b604a00,0x3b34929b,0xb6ef1f12,0xbb3bfc08,0x39133478,0x3c723fcd,0xbb122f11,0xbbc9c8cb,0xbbd8942a,0xbbbe3a5d,0xba9fce17,0x3c01c554,0x3ad6cf21,0xbabe9ac4,0xba2e12e4,0xbbf78870,0xbbaddcf1,0x3b908e45,0x3b9177b6,0x3b7edbef,0xb906fdac, -0xba53d1de,0xbae96835,0xba3b5ed6,0x39b561fc,0x3a5a0b80,0xbacece62,0xba390558,0xba9bc876,0xbac8d3ab,0xbb08c1e1,0xbac8310b,0x3a2dfa83,0x3b42898a,0x3b9a2068,0x3bf134d6,0x3be9b70f,0x3bc82880,0x39402e7c,0x3ba7739e,0x3c024573,0x3c534127,0xbb1e5fbb,0xbc1cbabf,0xbc70b74c,0xbbdff7da, -0xbbc63561,0xbc329968,0xbb986bc3,0xbaec8f04,0xba8322ce,0x3b69e706,0x3b7bd453,0xb7c38406,0xba89a61b,0xbb2671e8,0xba89fefa,0xbb27b003,0xbb4f13c4,0xba91dd00,0xbb86d0bd,0xbba2c1d1,0xbb7ca70f,0xbb571ad1,0xbb465f78,0xbb793ff4,0xbb22d627,0xbafdf2d4,0xb9def0c3,0xb9a057ba,0x3ad6f1ee, -0x3bbd4a19,0x3c0e453e,0x3c24d365,0x3c121eee,0x3c339115,0x3be97e19,0xb97dc634,0xbb34d3c6,0xbb177243,0x39ae7832,0xbb059893,0x3c643370,0x3c22d350,0x3bebb1c3,0x3ba1ecc8,0x3badb90b,0x3b299908,0x3ae41f18,0x3ae4dd08,0x3a94890a,0x3b088557,0x3b12a8f1,0x3a27bad5,0xbb122c6c,0xbb74dbfd, -0xbb3d0034,0xbb03ac8b,0xbad7b7e9,0x3988b64a,0x3a92e6d2,0x3aba95d5,0x3b0a8ad8,0x3b27c2de,0x3adffb62,0x3ab9e8fe,0xb888255c,0xbaae0adb,0xbb79f9c9,0xbb13a535,0xba9fac9c,0x3b98cb29,0x3bfe2187,0x3c6e33b3,0x3c2721fa,0x3c287ccd,0x3c672e07,0x3c66de34,0xbbb010db,0xbbc57850,0xbc1fa882, -0xbc36b024,0xbc395d0d,0xbc15ebc5,0xbbf56dc6,0xbbc40bca,0xbbe47bb1,0xbbdb994e,0xbb955af1,0xbb94ca9c,0xbb71d602,0xbb766237,0xbba078d2,0xbb9a9dab,0xbb947457,0xba86f2c7,0x3a818c6a,0x3b0357c7,0x3b14e9e1,0x3b301d95,0x3b53b9c0,0x3b0e1e66,0x3af553bc,0x3ac0dc1e,0x3b3979a6,0x3b681698, -0x3b7389f6,0x3b4636a1,0x3b1932ae,0x3aab6f2b,0x3a0d24fa,0xba2fc52f,0xbb47ead3,0xbb87e141,0xbb160254,0xbaf5c9e0,0xbbaf5916,0xbbff3a87,0xbc25b4b9,0xbc195157,0xbc26398e,0xbc0e1f90,0xbc0da8cd,0xbc00ecb9,0xbc0170ce,0xbbcf2498,0xbbc4514f,0xbb87170a,0xbb9319e2,0xbb813ff1,0xbb7011d0, -0xba9a6bbe,0x3a4f6a36,0x3b460daa,0x3b3cd2f6,0x3b43d12a,0x3b527761,0x3b35f87c,0x3b2447f3,0x3b160996,0x3b3b0b02,0x3b434092,0x3b71c003,0x3b650060,0x3b637e91,0x3b45c9f4,0x3abe3c37,0xb8d972d2,0xba801e75,0xbaa5188a,0xba98b130,0xbad710ec,0xbb160c2c,0xbb47a472,0xbb8bb986,0xbbabdf96, -0xbbd89c3c,0xbc0b034f,0xbc03dd3b,0xbbe2d2a3,0xbbf89718,0xbba37258,0xbba2b394,0xbb6a7a64,0xbb6e58c3,0xbb47df04,0xbb45216c,0xbabd7b5e,0x369e4bf4,0x3ae552be,0x3acd4db3,0x3adf6f0b,0x3afd5b1b,0x3af0ce37,0x3af62dee,0x3ad82bdc,0x3ae0d796,0x3ae430a0,0x3ade30f5,0x3aa66723,0x3a9569fd, -0x3aa665b0,0x3a7c59a0,0x3a5c85c8,0x39b3b6a9,0xba20b770,0xba390f5a,0xb9388bf3,0xbaa34162,0xbaba70a2,0xbae01700,0xbaa6abdd,0xba60b5e9,0xb9d5f3c0,0xb97b4e4e,0xba66c299,0xba5653aa,0xbaccc064,0xbadae014,0xbb0dd0a6,0xbaeb499d,0xbaa911a4,0xbaa132ac,0xba27a54e,0xbaa283fe,0xb973b5ce, -0xb9d92ee2,0xba1e5f71,0xba62c5de,0xba826f57,0xba90fcc6,0xba97c059,0xbabacf07,0xbaefd4d4,0xbaf80ef2,0xbb0cec0f,0xbb18a628,0xbb3a2100,0xbb2428a0,0xbb1e5fbd,0xbaf75415,0xba9f8e67,0xb9b3cf1a,0xb9562926,0xb9f787ae,0xba30917b,0xba95e342,0xba5d03f9,0xbacd5908,0xbb1cd2e2,0xbb1e8c74, -0xbb11b9cb,0xbb08a13a,0xbb006ffd,0xbaef9fb3,0xbae3e62f,0xba80bed4,0xba348a3e,0xbab7c263,0xba56d6d9,0xb9adec5d,0x384c37d1,0xb8f3cf97,0xb8bbf782,0xb839a8f6,0xb7f84b6c,0xb862ef1e,0xb896662b,0xb8b7e2d5,0xb8cbd437,0xb949bb63,0xb97b5b63,0xb98b5275,0xb99916d4,0xb90d55d0,0xb90f07d7, -0xb9088357,0xb976c634,0xba0d4451,0xba7c4511,0xba3ad105,0xba2c071b,0xba0e64fe,0xba11831b,0xba7ad5f6,0xb9babae7,0xb9a1cbb5,0xb9e62296,0xb9f8652e,0xb9dae477,0xb75d2c92,0xb9fea9f2,0xba16b54b,0xb984a7b6,0xba2ad95c,0xba639f25,0xbab33820,0xba9288f2,0xba7a2efe,0xba3a90a8,0xba652242, -0xba7512dd,0xba86af5c,0xba96c329,0xba830d05,0xba1e7f56,0xb99b3f15,0xb93a93e4,0xb97fd7ef,0xba0326d6,0xba343810,0xba623f88,0xba5e6581,0xba2b39cf,0xb9ea3720,0xba21afa7,0xba02f6e3,0xb7932ed5,0x395fde18,0x39a5a442,0xba91c5d3,0x3908bcc2,0x39479933,0x396977aa,0x3a6ec397,0x3a9234ec, -0x3ad83266,0xb8a2ee5f,0xba1073da,0x3a0424cc,0xba858f0a,0xbacc64b8,0xbb2b77b4,0xbb00ec0e,0xbad30e4c,0xba8050eb,0xbacde7e0,0xbb004036,0xbb1c3b1d,0xbb0a3d60,0xbac31453,0xba602339,0x3a82b206,0x3aa7c965,0x399a7425,0xb9553a44,0xba68e537,0xbad055ff,0xbb0903bf,0xbb1efded,0xbaead0ce, -0xbaad82ec,0xba5518be,0xba36014a,0x3a11361f,0x3a1f35e3,0xbae36755,0x3a75160d,0x3ae0c29c,0x3ac10edd,0x3aeb61dd,0x3b0b544a,0x3b865cb2,0x3a40ea97,0x39a6ecae,0x3afe8ec8,0xba76e3e6,0xbafa6b16,0xbb8cb6f4,0xbb3bd360,0xbb1e19b9,0xbab36700,0xbb2797b2,0xbb4c0c6f,0xbb6cb156,0xbb807050, -0xbb326aad,0xba26c9c4,0x3b121b83,0x3b348567,0x3ac7b3ba,0x39971b71,0xbaa75b7e,0xbb23d29e,0xbb3e3d15,0xbb012dc7,0xba256ce9,0xba91cacd,0x398fbe6e,0x3aae16d3,0x3b1aef8c,0x3b28c011,0xbb0b6d6d,0x3b0850d0,0x3b30502a,0x3b100c19,0x3bc23ca3,0x3bde8232,0x3c00540c,0x3b2385c7,0x3a623df5, -0x3b99d4e9,0xbadea4ba,0xbb2531ab,0xbba0f877,0xbb74bafa,0xbb3498bf,0xba9b9429,0xbb5fb51a,0xbb947870,0xbbaeba9c,0xbbb6d171,0xbb71f225,0xba08a154,0x3b908284,0x3bb3c964,0x3b1b3ffd,0x3acfd4d5,0xba9914ce,0xbb5e5553,0xbb975e7d,0xbba625f2,0xbb3c1590,0xbaebe68d,0xba844417,0xba89ca69, -0x3ab1de8c,0x3a56ed3f,0xbba06b94,0x3b4194e5,0x3bc9f3ff,0x3b853f96,0x3bd764db,0x3c03edb1,0x3c105ad8,0x3b8e199c,0x3b8099cc,0x3bc07a5e,0xbaaa998e,0xbb37b0e6,0xbb9b43d0,0xbb70809e,0xbb36d63d,0xbadbcda8,0xbb91d8d4,0xbbbafa08,0xbbe1b9b8,0xbbe4c534,0xbb93ee95,0xb9093581,0x3bd483e9, -0x3bf81d1f,0x3b8b1f2d,0x3ab84491,0xbaf3f16c,0xbb910025,0xbba91389,0xbadc991c,0x3a7f47b8,0xb9f7b663,0xba8091dd,0x3aaf888d,0x3c18fdcf,0x3c501780,0x3c56dda7,0xbb9ba2d7,0xbc35e377,0xbbfa9472,0xbb3ce1b6,0x3b01e24d,0x3ad4ae55,0x3bd2c3f8,0x3b963b4c,0xbb979e30,0x3b4bc075,0x3b76a66e, -0xbabb40d9,0xba3d0cfe,0xba8bc3ab,0x39353926,0x3a1be7da,0x3ac8ccb0,0x3b10b23c,0x3ac7c329,0xbad7eba5,0xbbe23593,0xbc4be3f4,0xbc25bd13,0x3b94d3be,0x3b94ff52,0x3bb35d38,0x3bfa07fa,0xbb86402c,0xbc4dba86,0xbc4ceba5,0xbc0307c2,0xbc1b5621,0xbc2388bc,0xbc7e0eeb,0xbc70d75e,0xbc8e01c9, -0x3b63ce86,0x3c421cd6,0x3c082ebd,0x3b2357c8,0xbacaed0b,0xbaff8a4a,0x3abd950c,0x3b8007f9,0x3b9cdc5d,0x3b3751e0,0x3a4d58c4,0x3ac8bc91,0xba5e3337,0xbaeda923,0xbab3bd53,0xbae03a82,0xbb02d9d6,0xbb3594d3,0xbb8e95ce,0xbb819dbc,0xbb5852e7,0x3b7c25ad,0x3b84c932,0x3b4f3dbe,0xbb8f603f, -0xbb9a2939,0x3b9d4b65,0x3ba0e3bd,0x3c599139,0x3ccfa8c7,0x3af3579a,0xbab4975c,0x3c948e99,0x39e9e62f,0xbbad3246,0xbbf9c667,0xbb2f5e14,0x3b0766e8,0x3b8c8543,0x3b554727,0x3b35b583,0xbadfb4b9,0xb9b924ad,0x39385257,0x3aeab898,0x3b49bc87,0x3b316821,0x3afa2c84,0x39d90116,0x3a71f58b, -0x3a1d0b13,0xba3d54d9,0xb8742383,0x3aced63c,0x3b08fe94,0x3b678db4,0x3b2d9742,0x3b41ee30,0x3b42c360,0x3a817f3a,0xbafff4de,0x3aa677a0,0x3c9c2b66,0xbbcab687,0xbc43c237,0xbc13c514,0xbc15aa6b,0xbb3432c0,0x3bdd1614,0xbaa3e978,0xbb913ba9,0xba543d59,0xbbec3096,0xbba6c691,0x3ab33591, -0x3b4f7a40,0x3b4b7819,0xb8e61974,0xba74d5a9,0xbb01aef1,0xba29c1b9,0xb88102ce,0x3a4d8a47,0xbaac8351,0xb9add1b6,0xba2acd68,0xba5a3e17,0xbb05cde5,0xbad41abd,0x3a8d7434,0x3b22587c,0x3b903aa7,0x3bd90be5,0x3bc55a27,0x3bb6b483,0x3b6fb0d9,0x3ba11e42,0x3bedcac4,0x3c920a67,0xbbdb231b, -0xbc74cd2d,0xbc85637b,0xbc0bbd98,0xbba91bc8,0xbc2a9436,0xbaf30866,0x3a7fd019,0xb8c0f930,0x3b6d974c,0x3b709229,0x3a447022,0xb9edd158,0xbb1a7bd6,0xbab66df7,0xbb100e76,0xbb2975d9,0xbaa54f45,0xbb725730,0xbb9548cd,0xbb848773,0xbb894667,0xbb89e7a3,0xbb81af51,0xbb5c401e,0xbb51a1cd, -0xbb08a4fe,0xbac0ae10,0x3b00c7ef,0x3bc7f132,0x3c1b8bdb,0x3c2c8309,0x3c1c8878,0x3c140ceb,0x3ba5bba1,0x3a8c6729,0xba505608,0xb90fcf33,0xba8e2463,0xbab39566,0x3c4b00d9,0x3bce8a8d,0x3bb2c3c4,0x3b62c5a6,0x3b9d8157,0x3b36c322,0x3aed1263,0x3a79aa48,0x3a509e45,0x3b110dca,0x3b2e065b, -0x3b1dd082,0xba4858ee,0xbb66dccf,0xbb4891a9,0xbb338636,0xbb24032c,0xb8dd4471,0x3a9f5b06,0x3ae28ab4,0x3af56052,0x3b14f67e,0x3b0566a1,0x3ac109ff,0xb9f5586c,0xbae3761e,0xbb500881,0xba38a426,0x3b02ec66,0x3bd56170,0x3c0d66a0,0x3c66eea9,0x3c29fdc9,0x3c3820ea,0x3c7f0cf9,0x3c6e0c50, -0xbb8b0bad,0xbbccf112,0xbc0a2bf7,0xbc1cb55e,0xbc1756a2,0xbbcb15e3,0xbb89cd45,0xbb79b7ed,0xbb9a9b15,0xbba4fb2e,0xbb5f6af6,0xbb839fc3,0xbb6602b4,0xbb73d0a3,0xbb87dfd7,0xbb8a4620,0xbba304e8,0xbb17600f,0xb99fc718,0x3acde82e,0x3af7a08d,0x3b282e0f,0x3b41245d,0x3b212525,0x3b278838, -0x3ae07b6c,0x3b32b54b,0x3b560171,0x3b7a57a8,0x3b456e85,0x3b1cebc5,0x3abcb3c3,0x3abd64c7,0x3a2be393,0xbb013ce9,0xbb390953,0xbb252277,0xbb2a7377,0xbbbaf1ca,0xbc0093eb,0xbc2a5113,0xbc0f01d6,0xbc16a400,0xbbfbfc28,0xbbf379ea,0xbbd7b732,0xbbd03947,0xbbae9d60,0xbba1ec32,0xbb610143, -0xbb72de5d,0xbb6e532e,0xbb8273b6,0xbaf5af08,0x3808db2d,0x3b0c5589,0x3b0be36c,0x3b2fe041,0x3b3bf352,0x3b477a02,0x3b3adbe8,0x3b2779b8,0x3b43b895,0x3b42b099,0x3b789a6c,0x3b78e115,0x3b7a6522,0x3b52bfb5,0x3a85b5be,0xba5efd73,0xbacef400,0xbade964a,0xbac5783d,0xbae7efd5,0xbb30049c, -0xbb6df21d,0xbba83d5d,0xbbc4de79,0xbbe549bb,0xbc084a90,0xbbfe11a4,0xbbd16477,0xbbdc2c8a,0xbb8820e7,0xbb7f37ea,0xbb2dd3c7,0xbb3e3359,0xbb287f42,0xbb2b3c61,0xba8e0a28,0x38d5ace2,0x3abff1d9,0x3abd4de1,0x3af045dc,0x3b128e54,0x3b131c7d,0x3b289943,0x3b346165,0x3b25f794,0x3b237411, -0x3b0cb9af,0x3abb1751,0x3a7b9476,0x3a7d19f7,0x3a37aa44,0x3a2719bb,0xb8801ab9,0xba77515e,0xb8f8decd,0x3964da7a,0xb9ee3a8c,0xba3571fd,0xba47fc1c,0xba004183,0xb9b6a717,0xb999379a,0xb8b37ea8,0xba1daa5c,0xba088bff,0xba9c5bc4,0xbab470f6,0xbad30dce,0xba88f086,0xb9ced3e9,0xb903ec39, -0x39b01ad2,0x38f6f064,0x3a84335c,0x3a4737d1,0x39d15a9c,0x371ad07c,0xb96d0e79,0xba240dfd,0xba878148,0xba97318d,0xbacd7bc0,0xbab8dee7,0xbabbe63b,0xbab1c3ed,0xbae5a8fe,0xbad17921,0xbad36a4e,0xba932d88,0xba066d73,0xb966c615,0xb8dbe7ba,0xb95640a2,0xb9a430de,0xba27e01b,0xba6b9dc0, -0xbaaf84ee,0xbaf05799,0xbae33280,0xbac79446,0xbaad1e44,0xba8f7da0,0xba5c8635,0xba42b3bd,0xb9d56f8a,0xb9b50914,0xba167aa7,0xb97b8d22,0x376bdba8,0x39476c5e,0x384492d9,0x38d37841,0x39255a2b,0x39588228,0x3985e9af,0x3994dc80,0x39a8b06f,0x397e1509,0x38c72d04,0xb8724c4d,0xb93c8cbb, -0xb9824618,0xb8619495,0xb78c9dc8,0xb7df3499,0xb917949d,0xb8eceb8f,0xba377a1b,0xb9ddbd79,0xb9d86e53,0xb9905ebf,0xb99bbcc1,0xba23db34,0xb93d5799,0xb927b39d,0xb944c726,0xb9b93a07,0xb9b39cb9,0x38683abe,0xb9be48f4,0xb9f2baf5,0xb9881989,0xb9f07b3e,0xba24a3cd,0xbaa58bed,0xba804667, -0xba5ec8a6,0xba2f6ea2,0xba4f73b2,0xba551ece,0xba611c0d,0xba6cc7bc,0xba3cbfe6,0xb98b1e08,0xb8a7d0f9,0x36829a6e,0xb8bb2a5c,0xb9a280e7,0xba024b1c,0xba3fe9c4,0xba345141,0xb9ef057f,0xb95e2f68,0xb9b1ee5c,0xb8ea9a3f,0x38660d1d,0x39ab2df5,0x3a064f28,0xba0303ab,0x39bcb91f,0x39ad1c0a, -0x3a160ee6,0x3a3df2ae,0x3a82713b,0x3ad0755a,0x38a1eda6,0xb9b1bd5c,0x39bcc81b,0xba1f8cd0,0xba8e2ddb,0xbb233eb5,0xbaef3af2,0xbacda0a8,0xba8ebd58,0xbada6f4d,0xbb0032ef,0xbb0c6472,0xbadef87b,0xba73b487,0x37b1143a,0x3a9c27f9,0x3aad8055,0x39ebf1bb,0x39292d29,0xba0fb862,0xbacd3de5, -0xbb045125,0xbb16bde8,0xbacd3716,0xba684d67,0x38ad66ad,0xb982bcf9,0x3a80c5ec,0x3a8fb72d,0xba25080e,0x3a94585c,0x3add9348,0x3b048935,0x3ad44b45,0x3ad685fb,0x3b753dd1,0x3a4b459f,0x39f8b69b,0x3ab60e03,0xb9fc4b7d,0xbab00f7e,0xbb896f56,0xbb3da029,0xbb2e1663,0xbafa3ab8,0xbb42b89f, -0xbb5592e6,0xbb5c8abd,0xbb544afa,0xbaf303d7,0x3a48dfc1,0x3b2c98f8,0x3b39b32d,0x3acce4b3,0x3a31801f,0xba5a3782,0xbb23c75e,0xbb372f3e,0xbae13682,0xb90ccfaf,0xb98204c2,0x3a8e17fc,0x3a955c3f,0x3b1ba916,0x3b31d7f4,0xba5efb17,0x3b1ca942,0x3b2d4132,0x3b3ec4ec,0x3bab8000,0x3bcb6bd5, -0x3c00916f,0x3b1cdf7c,0x3a86b6c8,0x3b80d34f,0xba6e079d,0xbad55be5,0xbba78a82,0xbb763ddc,0xbb4e23e1,0xbb03c4dd,0xbb89c0a3,0xbba2c9bc,0xbba5e7f3,0xbb95c9de,0xbb1302df,0x3af4c03f,0x3b98bb5e,0x3baaccba,0x3b146a97,0x3b0ca63c,0xba1da677,0xbb6d4b90,0xbb9b95df,0xbba650b6,0xbb25cc02, -0xba533935,0x3a8a0aed,0xb904f773,0x3b14b19d,0x3afdc128,0xbb4ad59e,0x3b35fe90,0x3bbd24b0,0x3ba1f5c7,0x3bd8a79c,0x3c04655e,0x3c13e7da,0x3b77a7a4,0x3b5def0d,0x3bad72d1,0xba4c3bc9,0xbb09c7bf,0xbba6bf5e,0xbb85ba3f,0xbb73c669,0xbb4b6af2,0xbbb90411,0xbbce9050,0xbbd73164,0xbbbfb960, -0xbb35d00d,0x3b28f88b,0x3bf298ce,0x3beb5d20,0x3b791379,0x3aff07e8,0xba8ff47b,0xbb90a2dd,0xbba5a11d,0xba9ee0f2,0x3af0d787,0x3ab0cf04,0xbb5d5448,0xbb02a5ae,0x3b8abc8c,0x3c05c0e1,0x3c4fa39c,0xbb04cd2b,0xbc098e19,0xbc00127e,0xbb83a986,0x3a5336c7,0xb8f0fdcc,0x3bf62742,0x3bd1829b, -0xbb9cc87f,0x3b4a9966,0x3b53c516,0xba08f99f,0xba32da06,0xbaa594d4,0xb89fcffb,0x3aac4180,0x3b15926e,0x3b0dc856,0x3ac03bb8,0xbae5a9b4,0xbbfd5211,0xbc450371,0xbc085f44,0x3c03bdd9,0x3ba0bab3,0x3bab14f2,0x3c00fa11,0xbbbcf0e7,0xbc64f7b2,0xbc53a00f,0xbc131ed7,0xbbac2711,0xbbbc7901, -0xbc285d60,0xbc44f988,0xbc8f15a0,0x3a01dce5,0x3c10e712,0x3c052edf,0x3b490193,0xba8e4938,0xbb5a67c1,0x37c46a90,0x3b3c4d50,0x3b8532b4,0x3b38e6a2,0x3a4d5c63,0x3aae9674,0xbb077c13,0xbb5678b8,0xbb3c1dd7,0xbb26311a,0xbb2307a9,0xbb373ec2,0xbb9d1758,0xbb85b2fc,0xbb5930cd,0x3bc84885, -0x3bbea65f,0x3a909773,0xbb66c995,0xbb649b97,0x3ba81c73,0x3bf2d447,0x3c80ae35,0x3cc323bf,0x3b883be3,0xbb9f36b5,0x3c778510,0xbaaa3062,0xbbe05a74,0xbbdd89a5,0xbb33e9a9,0x3af4b5e6,0x3ae497a3,0x3b0925c4,0x3b01e2dd,0xbadd6521,0xba9d9955,0xba2a0999,0x3addf32e,0x3b174a59,0x3b188def, -0x3b096213,0x3948a5ef,0x3a86d626,0x39ea0b81,0xb98a306e,0x3a30fac7,0x3b227dc0,0x3aeee254,0x3b32afd4,0x3aa8c7ce,0x3b26998b,0x3b51035f,0x3b0751f4,0xba2a1955,0x3b02711f,0x3c9c64fa,0xbc0f48ad,0xbc7ac4df,0xbc15b5db,0xbc3ea51d,0xbbac7580,0x3b61ae43,0xbb63eaa8,0xbbcd0261,0xb932530e, -0xbbbf7349,0xbb8b5f31,0xbacd9459,0x3ac82cfb,0x3afd6ca4,0x390d3613,0xba69c8d5,0xbaf5f3c5,0xba206216,0xb9c54d65,0x3a178293,0xba8c7c82,0xb941fa93,0xb9afb9d9,0xb991d9db,0xbadcfc06,0xba9b7ec6,0x3abf329e,0x3b2f00cc,0x3b948f2a,0x3bbdeb12,0x3b9e6db3,0x3ba4f71a,0x3bd90418,0x3bb67367, -0x3be0d65b,0x3c97cd4c,0xbc174acf,0xbc90a9e4,0xbc6ea3e5,0xbc2102bc,0xbb377a5d,0xbc000d51,0x3887d2af,0x3b370dda,0x3abc4c8e,0x3b5747b7,0x3b443846,0x3ac40f6a,0x38b3ec67,0xbb04d6d6,0xbaed4acb,0xbad2474e,0xbaddfb64,0xbab77062,0xbb449d49,0xbb7fd804,0xbb8c33ac,0xbb9d0086,0xbba48b1e, -0xbb80a3ca,0xbb824ffb,0xbb841600,0xbb52b092,0xbb064df0,0x3b0aece5,0x3bc86d1f,0x3c1c4025,0x3c2b0bcb,0x3c2c174b,0x3bf01fc9,0x3b6251ed,0x3b078f17,0x3af9d1b2,0x3b5978c9,0xba6e4962,0x3a199088,0x3bfd08d8,0x3ab6c7b5,0x3b1f2395,0x3ac822e7,0x3b68f91f,0x3b4c090d,0x3b14e097,0x3a280271, -0x3a356e29,0x3b1588b5,0x3b323390,0x3b65b3d4,0x39a492de,0xbb498e30,0xbb5768c6,0xbb67bcd5,0xbb5256f6,0xba252908,0x3a972605,0x3b0369c1,0x3ae5d24d,0x3b0c5213,0x3b1d69b6,0x3ad96d46,0xb91f7f9d,0xba8d7f17,0xbab6283e,0x3abe8047,0x3bb0a22f,0x3c069fc1,0x3c1c719f,0x3c610d76,0x3c285fdc, -0x3c2d6b66,0x3c66b8aa,0x3c3bdd06,0xbb012e84,0xbbbcb41f,0xbbca2455,0xbbdc3a26,0xbbcf9d14,0xbb4df394,0xba8f5b01,0xbac66291,0xbb1191dd,0xbb4aff92,0xbb135a37,0xbb640538,0xbb5dfd3a,0xbb726eb9,0xbb62bdf9,0xbb710c25,0xbba1b68f,0xbb6064d0,0xbadcd291,0x3a1c76c9,0x3a9b8bf0,0x3b0b9668, -0x3b1dea9a,0x3b1eb204,0x3b3b90d1,0x3b0254dc,0x3b1b9a38,0x3b3b248e,0x3b72fb15,0x3b42b5d1,0x3b21715a,0x3ae1d6d2,0x3b226f9e,0x3b247d74,0x39e66050,0xb970074b,0xbb29aa70,0xbb5a617f,0xbbb86731,0xbbf00def,0xbc242e70,0xbc00c3c5,0xbc035e30,0xbbd63107,0xbbc616f6,0xbbaace4b,0xbb9e5a38, -0xbb9336de,0xbb8b9b12,0xbb5a70a3,0xbb539e91,0xbb5962c0,0xbb75a978,0xbb185461,0xba49cb6a,0x3a833a4f,0x3aaba272,0x3b1319f5,0x3b253af7,0x3b3c480f,0x3b2d9c0b,0x3b17d184,0x3b2d4551,0x3b2a8356,0x3b634c57,0x3b69b939,0x3b6fec84,0x3b469459,0x3a34282e,0xbaa8225c,0xbaed2fb7,0xbb01f7ab, -0xbafaa0f1,0xbaf97603,0xbb512192,0xbb902c97,0xbbc95c6f,0xbbdb8911,0xbbecabc0,0xbc02b898,0xbbf1ae5c,0xbbc28260,0xbbc1dbfc,0xbb723cac,0xbb59ea06,0xbb1e1ae7,0xbb21610e,0xbb11bb71,0xbb062d54,0xba4bdcd3,0x393286bf,0x3a78c93e,0x3a92f9b1,0x3ae17483,0x3b18a3ae,0x3b1a3465,0x3b375a02, -0x3b4cea37,0x3b3ca838,0x3b3e3f32,0x3b249fc8,0x3aca3fe1,0x3a3632c8,0x39dd4359,0x391d84c0,0x39043685,0xba3ba939,0xbab09d70,0x392ab4ea,0x393eba55,0xb8d9f39d,0xb9418afd,0x37732d32,0xb8d2bb11,0xb98c2d7c,0xba23c10a,0xb9ce8df1,0xba49a7ec,0xba343adc,0xbaa15b11,0xbaba9453,0xbabce1d3, -0xba475074,0xb8b3e0b9,0x39c18383,0x3a2d39f8,0x3a80f2c1,0x3ac694c0,0x3aa71db4,0x3a6444cf,0x39ec9961,0x3966bffb,0xb98578f2,0xba4b44eb,0xba490dd4,0xba930eba,0xba5e5e7a,0xba1ab293,0xb93dad9a,0xb99fa481,0xb9e80a77,0xba14b1b8,0xb9ad8002,0x3496fc1b,0xba1a8456,0xba078652,0xba0e28bb, -0xba2c63fb,0xba612e1b,0xbac49d37,0xbad7b4ef,0xbaf10168,0xbad4fb56,0xbaba4923,0xba9ae70a,0xba69ba8c,0xba1337da,0xb9f2bb47,0xb9f70bf0,0xba10b1bf,0xb9a1e396,0xb958d681,0xb9318839,0xb91076b4,0xb960cf9a,0xb91e21b5,0xb8b12d55,0xb71bea01,0x38aa0b13,0x3911c3ee,0x395fd357,0x38eae297, -0xb81cb398,0xb98e2e61,0xba00be07,0xba214154,0xb9f1b289,0xb9c94b94,0xb9e14710,0xba11e77a,0xba1decec,0xb9e4c187,0xb8e567b8,0xb912a92d,0xb8432ebc,0xb8ce1e3c,0xb9accbd6,0xb8423a86,0xb8825910,0x3788c1f7,0xb98697e7,0xb99b561c,0x38388e64,0xb989d474,0xb9bdf913,0xb98ff6fe,0xb995edde, -0xb9cd06ad,0xba919959,0xba57c837,0xba3e306b,0xba19d75b,0xba308637,0xba2d5fbb,0xba3223e1,0xba2493fb,0xb9d8b4c7,0x38b4e8cc,0x390fc9ba,0x393ab3c1,0x3815b6fc,0xb912ac15,0xb9a0a5ee,0xba112cc2,0xba0ada24,0xb99a8c78,0x3647fabd,0xb8855cf7,0x3981aa19,0x38ec5255,0x39f4b016,0x3a3bb87d, -0x389d163d,0x3a041d11,0x39cfce86,0x3a59fb71,0x39edaf34,0x3a43111d,0x3aa8e358,0x394f2abc,0xb8af9fe6,0x39694f38,0xb947962b,0xba12afa6,0xbb109da0,0xbad1de07,0xbac5283b,0xba9a27fa,0xbad87e74,0xbaf2271b,0xbaf6fe1c,0xbaa297c8,0xb9b0c368,0x3a6dc174,0x3ab0e3e5,0x3aa9b0fd,0x3a02d762, -0x3a00e8fa,0xb951da81,0xbac087a8,0xbb0032e8,0xbb0adfee,0xba9e1d7b,0xb9dd6771,0x3a83a301,0x398b8f2b,0x3ab00bca,0x3abca3af,0x39a900ae,0x3a9f2152,0x3ac7ee49,0x3b18f6a6,0x3aacf052,0x3a878bb6,0x3b43414e,0x3a4ee4f0,0x3a2dac40,0x3a678b67,0x377a6ce4,0xba37db32,0xbb7683bf,0xbb33b31a, -0xbb33803d,0xbb17a6d3,0xbb4d8ae4,0xbb515c19,0xbb4967a1,0xbb1f4bad,0xba684d9e,0x3b0fe9d2,0x3b4160b4,0x3b39ded3,0x3abd03d2,0x3a7ba836,0xb9d59fb9,0xbb14f3a9,0xbb2e30aa,0xbaccc9fd,0x39bf9e74,0x3a19b942,0x3ae22932,0x3a66765a,0x3b20f2b8,0x3b3e36e2,0x39c75cc5,0x3b271f09,0x3b204924, -0x3b63789d,0x3b8a4dc6,0x3bacb76b,0x3be94234,0x3b18e89b,0x3ab4bd26,0x3b4de064,0x3770ec9e,0xba1504ad,0xbb9f27e0,0xbb69cb57,0xbb5d5f67,0xbb35ddbc,0xbb96b803,0xbba5366b,0xbb9cf1f5,0xbb5e8b1e,0xba3aeaa9,0x3b8ad3f6,0x3b9bae96,0x3b9be50e,0x3af5d880,0x3b2c4cfc,0xb7712f42,0xbb700b4d, -0xbb9e767d,0xbba0d04b,0xbaf058b2,0x3938de35,0x3b4eeaa2,0x3a6e7483,0x3b42ee69,0x3b32b476,0xbaac647d,0x3b277e7d,0x3ba97c9c,0x3bb92c3c,0x3bd4670d,0x3bffa34f,0x3c117be1,0x3b63ab2d,0x3b4b4114,0x3b980bfc,0xb806f6bc,0xbaa52a7d,0xbba7300e,0xbb882562,0xbb8ff6d7,0xbb8a86c5,0xbbce6e71, -0xbbd28b4b,0xbbc9eeb2,0xbb93bba8,0xba65ff1f,0x3baed835,0x3c040b25,0x3bda0ab9,0x3b506580,0x3b13e798,0xb9cfa576,0xbb8041da,0xbb9e32ce,0xba856b49,0x3b2dfa0f,0x3b457b20,0xbbc56c71,0xbb9dfb3a,0x39cbbe0f,0x3b96249e,0x3c388287,0x3a01fd7a,0xbbbc586d,0xbc01af89,0xbbb388a9,0xba085644, -0xba7f2b44,0x3c0a0fcc,0x3c0007d3,0xbb9b4f4b,0x3b3f1dca,0x3b2b6933,0x3a862113,0xb8ac8170,0xba584b6f,0x38b41fec,0x3b191a9a,0x3b4be6a8,0x3b1fb261,0x3ab42058,0xbb0485b1,0xbc0eacb7,0xbc3dee1d,0xbbd6634a,0x3c2ac1ad,0x3bab8843,0x3ba8fa41,0x3bee3a32,0xbbe40c14,0xbc6c2fcc,0xbc57655b, -0xbc277711,0xb9ad78c2,0xbac5cb4b,0xbbd22872,0xbc29871a,0xbc878f14,0xbb2fbb52,0x3bb02c38,0x3bec086b,0x3b7e22f4,0x36afb4a9,0xbb8aa641,0xba9bcf12,0x3afbc6f1,0x3b5f7cf5,0x3b2a3a56,0x3a2d8376,0x3a6f0fea,0xbb303b21,0xbb82d32f,0xbb84cc5f,0xbb38bb20,0xbb29feca,0xbb28c4ce,0xbba0ab59, -0xbb7a1104,0xbb0ff5f6,0x3c043a2d,0x3be67cd4,0xb8c5dd94,0xbb41f8dc,0xbb2afbee,0x3bb1527a,0x3c1e1045,0x3c8a753f,0x3ca64c23,0x3bd6a145,0xbc01fc29,0x3c0e54de,0xbb1f137d,0xbbe2b5ea,0xbbcad4d1,0xbb28fc10,0x3adf43f8,0xb9fe1e45,0x3a80aad7,0x3a9e1e02,0xbaaf5978,0xbae5ecab,0xbaa8257d, -0x3ac6582d,0x3ab6118f,0x3ae5751b,0x3b071687,0x37bebb6d,0x3a801b15,0xb8219152,0x3996b382,0x3ac97ac2,0x3b491ba4,0x3ad8945d,0x3b08f399,0x398c9586,0x3b26496e,0x3b754e88,0x3b32567f,0x3aaf79f2,0x3b31c19d,0x3c668dee,0xbc21d7bc,0xbc81a8b7,0xbc021311,0xbc539498,0xbc052476,0xba96e413, -0xbb97cd73,0xbbcaeba2,0x39c836c5,0xbb800d0c,0xbb4bc66c,0xbb7b15bb,0xb92bdd03,0x3a2568fb,0x39d67f27,0xba3c756c,0xbaccbeb1,0xba3ae391,0xba1f048f,0x397c80c8,0xba5d4b67,0xb99a69cf,0xb993d8b5,0xb949e639,0xba927eab,0xb9bba1a0,0x3ae26d9a,0x3b4e3b23,0x3b97f0cd,0x3b9f29db,0x3b7a6f30, -0x3b9911a3,0x3c06f862,0x3be25c2f,0x3bdb4245,0x3c614068,0xbc2b3ded,0xbc90f61e,0xbc322f0b,0xbc3150bb,0x3a1460a5,0xbb5c41c7,0x3ad05ea3,0x3b7a6b1b,0x3b58952d,0x3b40f1ae,0x3b13f640,0x3b0703de,0x3a0ad7af,0xbac8f483,0xbb0a59c3,0xba80b8cc,0xba4cfe38,0xbab6aeeb,0xbb0d0857,0xbb4e7bc5, -0xbb94c261,0xbba52c40,0xbbaf5664,0xbb804a63,0xbb8d1b99,0xbb8fd6d2,0xbb73cbee,0xbb07eee0,0x3b071ff4,0x3bca4fc6,0x3c1408b0,0x3c1f9d43,0x3c29cacf,0x3bafbfbf,0x3b0f934c,0x3b3f3745,0x3b897b50,0x3bcf065b,0x3a2c010e,0x3b448060,0x3a86ce90,0xbb6081a4,0xba5bfe88,0xb940e71f,0x3af7f659, -0x3b4d244b,0x3b30a8ff,0x3a40a5a2,0x3a8168f9,0x3b24496a,0x3b260388,0x3b7db3ba,0x3a73b819,0xbb153f24,0xbb62d288,0xbb8a3e6b,0xbb716705,0xbab85474,0x3a2e6997,0x3afd35a4,0x3ad3328a,0x3b0978ef,0x3b0e09f3,0x3afcbc87,0x3a60a701,0x372c42be,0x3a99588d,0x3b840bcc,0x3c05e723,0x3c212ed6, -0x3c2a06aa,0x3c57a043,0x3c23ae72,0x3c0dbc21,0x3c1f0a1a,0x3bb61a66,0x3a73e680,0xbb7a2485,0xbb6cfdd6,0xbb635650,0xbb252270,0xb7f6bd80,0x3aebcc82,0x3a4765c0,0x3983fe35,0xba8d8ccc,0xba8c2cc2,0xbb343577,0xbb4e66a7,0xbb6b976f,0xbb4add26,0xbb5aa1d4,0xbb92c267,0xbb88fc2d,0xbb3af408, -0xba2acd64,0x39cdd072,0x3acea9e7,0x3ae58020,0x3b1603b9,0x3b386944,0x3b0dc665,0x3b01a3fb,0x3b1a37d3,0x3b5523ad,0x3b33999b,0x3b1d362a,0x3b074a77,0x3b57fb9d,0x3b8dedf3,0x3b5cd4b7,0x3b39485a,0xbb1f1ace,0xbb81218e,0xbbad1367,0xbbd13e67,0xbc10a717,0xbbdb6b51,0xbbdb9581,0xbbad74df, -0xbb99f735,0xbb81c85d,0xbb698427,0xbb7729f2,0xbb78782f,0xbb5d7f1c,0xbb474155,0xbb4bd9cd,0xbb57f5f4,0xbb2c4861,0xbac9a754,0xb946d952,0x39e8a96c,0x3ad976fc,0x3b096b18,0x3b1e35d8,0x3b086dc4,0x3ae36a9b,0x3af2bdad,0x3ae73db1,0x3b27897b,0x3b3c843d,0x3b4cfeec,0x3b31ce4c,0x3a45c270, -0xba8262ac,0xbaad33e7,0xbb01108c,0xbb18da16,0xbb1483b8,0xbb743cdb,0xbba85b29,0xbbe72f79,0xbbed2771,0xbbef0f85,0xbbf8d702,0xbbe71519,0xbbb9858e,0xbbb1e028,0xbb682d9a,0xbb4f39f5,0xbb236362,0xbb15675e,0xbb063f7a,0xbae1dafe,0xba4c3db1,0x36e73d2a,0x393ed83f,0x3a159e07,0x3ab30825, -0x3b126ef1,0x3b0d373f,0x3b262216,0x3b3b66eb,0x3b34371d,0x3b3c2779,0x3b237dfc,0x3aca4295,0x3a0c1953,0x388aabea,0xb99d93c3,0xb9d12e8f,0xbaa16d3d,0xbada4715,0x38c3ba03,0xb9280ae5,0xb9441b61,0xb7d7e425,0x39f118a1,0xb91828f8,0xba15c513,0xbaabc5e0,0xba85725f,0xbaa8168d,0xba9e42ac, -0xbad5d428,0xbae972ef,0xbade7672,0xba847ac3,0xb9c576ea,0x395aa1f6,0x39cbd58d,0x3a8de29f,0x3aad215a,0x3a9d76fc,0x3a6064d2,0x3a061a57,0x39f04b7e,0x3938da59,0xb94349f7,0xb94f3217,0xb9f6d0e6,0xb963c2d6,0x3947da9d,0x3a40d14d,0x3a5ca23f,0x39e85fe3,0x398a5769,0x391af091,0x39011746, -0xba9a2775,0xba99e227,0xba9e8e39,0xbab8400e,0xbac9f851,0xbb192623,0xbb13b742,0xbb147b6d,0xbb021ebf,0xbaebe306,0xbac9b880,0xbaa10db9,0xba653118,0xba48bed6,0xba711fb5,0xba87dd91,0xba0fc693,0xba17f529,0xba29c6b2,0xba2de03c,0xba30770a,0xba1b8811,0xba0617fe,0xb9e90f56,0xb9bfb96c, -0xb9965b79,0xb9527575,0xb993e467,0xb9d1cf69,0xba2c962e,0xba6e69ef,0xba8ac9dd,0xba8467e2,0xba73f53d,0xba85d138,0xba977dc8,0xbac5bd33,0xb9827f46,0x390c39c5,0x3844c017,0x38f3da19,0x389d7d92,0xb85436c4,0x3796d234,0x371d5759,0x395ea637,0xb9065306,0xb95c9fb6,0x37b18bd9,0xb9081bce, -0xb94ff900,0xb9641eb8,0xb8d718e7,0xb93d4f3d,0xba5e74d6,0xba238bf5,0xba1deee7,0xba0f4311,0xba18e19b,0xba0f4347,0xba0fd1ee,0xb9cf209e,0xb9231abc,0x39bfb1bc,0x39938918,0x398fa78d,0x389b47b8,0xb83d35be,0xb9343069,0xb9d1544c,0xb9d7f316,0xb959e7c0,0x3905eff2,0x390636cf,0x3a0032e1, -0x38d3aab6,0x3a26c5af,0x3a5f468e,0x3a15cafb,0x3a1270dc,0x39c1dc6e,0x3a7742b7,0x38c6fb4d,0x39cba3da,0x3a507803,0x398c57d0,0x3928c018,0x3913105b,0x39905dd6,0xb8313c4e,0xbae6e722,0xbaafcd70,0xbab5a0d8,0xbaa49198,0xbad30d0c,0xbae04d77,0xbad90206,0xba533b18,0x3946e630,0x3ad8114c, -0x3ab42849,0x3a92a9be,0x39c63306,0x3a31eacb,0x387642ec,0xbab3ef9d,0xbaf29594,0xbaf33201,0xba4e3f0f,0xb6a21f35,0x3ae205bf,0x3a37d736,0x3acf2990,0x3acc6cf5,0x3a89a0e4,0x3a92e3b3,0x3aa030c9,0x3b180f79,0x3a6fd653,0x39a2535a,0x3afa8c77,0x3a346bba,0x3a6031bd,0x3a014678,0x3a0b7500, -0xb82e1def,0xbb4847d4,0xbb1febdb,0xbb31123d,0xbb2925eb,0xbb503cd1,0xbb45eb07,0xbb3630a2,0xbad14242,0x383a8fc1,0x3b606bbd,0x3b47fd0e,0x3b2de3ca,0x3a906e39,0x3a8ac9f5,0xb88a3713,0xbafc8a2f,0xbb1cb1ce,0xbab7bb3c,0x3a4de8c4,0x3aa25ad3,0x3b08d4ef,0x3a20ddc9,0x3b20f5b2,0x3b4347dd, -0x3ac6a8d2,0x3b24d470,0x3b070665,0x3b6fc7c3,0x3b3ff889,0x3b8418e1,0x3bb91c44,0x3b119097,0x3af10fae,0x3b200e98,0x3a86b580,0x3a15d3d2,0xbb882794,0xbb51bb7f,0xbb61ca07,0xbb59155d,0xbb9bca9c,0xbb9f47b5,0xbb928d9d,0xbb0d8264,0x3a4363f0,0x3bcca1e1,0x3b951b99,0x3b843aa8,0x3a9a2f44, -0x3b3a697c,0x39ff6b7e,0xbb6bc3ec,0xbb967477,0xbb8eb7ad,0xba5d95f6,0x3a8f0b18,0x3b9ffac2,0x3af1b086,0x3b5ec824,0x3b48c24e,0x398baafb,0x3b0ec4f1,0x3b8d7d0d,0x3bc4dbc0,0x3bc72500,0x3bea87f7,0x3c04bbaa,0x3b588ed7,0x3b48885e,0x3b83d476,0x3a67a55f,0xb98886a8,0xbb99dde6,0xbb8126f5, -0xbb9ad8d9,0xbba3ad44,0xbbd71f1e,0xbbcd242e,0xbbb97e49,0xbb483436,0x3a8074a6,0x3bfd195c,0x3c0698c5,0x3bbfdad8,0x3b16592e,0x3b14c024,0x39405030,0xbb4c0ac9,0xbb89e999,0xba529c82,0x3b596526,0x3b8c7daa,0xbc0be123,0xbbe9c96d,0xbb175973,0x3b073796,0x3c18d88c,0x3b26fd4f,0xbb5975dc, -0xbc03dc35,0xbbdeadeb,0xbad4c0a7,0xba996b6e,0x3c1349b0,0x3c0ba777,0xbb91571e,0x3b268e4d,0x3af66b43,0x3b378215,0x3a8681fe,0x39379a6a,0x3a332b9c,0x3b76963a,0x3b86e36f,0x3b441d2f,0x3a85a372,0xbb2b9b43,0xbc1a570a,0xbc33441e,0xbb9da9a4,0x3c407b44,0x3bb9c538,0x3bab5e56,0x3bd535e6, -0xbbfb3b0b,0xbc65f9d5,0xbc51b93e,0xbc3a87ab,0x3b8d17ad,0x3b2676d7,0xbb693dbe,0xbc190eba,0xbc781bb8,0xbbbfacea,0x3ad1c58c,0x3bc0677f,0x3b9348d5,0x3aa0888b,0xbb958bc0,0xbb133034,0x3a7dba13,0x3b3cdde6,0x3b0bbd10,0x39c4d736,0x39634231,0xbb334c35,0xbb7c648f,0xbb974ea0,0xbb328cc4, -0xbb2a8648,0xbb2f9ee3,0xbb9e26fc,0xbb55fb4f,0xb9bf51b3,0x3c1ba13b,0x3bfae6fe,0xb9f8b465,0xbb3b6811,0xbb06de70,0x3bcd3a6a,0x3c360c64,0x3c87273c,0x3c7ca5da,0x3c05aae8,0xbc281e07,0x3a095d4f,0xbb2d9a85,0xbbb2c956,0xbbc7e760,0xbb116830,0x3abeb7a7,0xbb0c5e0e,0x39039562,0x3a248f86, -0xba66c845,0xbafd9882,0xbad958a8,0x3a92ef9f,0x39cbcee1,0x3a87466e,0x3af665c2,0xb80f4b70,0x3a3c42d8,0xba62c99c,0x3a342c6e,0x3b0c3e67,0x3b448c0e,0x3ac0fbbe,0x3ac9f8c4,0xb9caf2e0,0x3b2a8b70,0x3b860245,0x3b19f485,0x3b799145,0x3b784239,0x3bc66f3f,0xbc124fe4,0xbc5b9f7a,0xbbdfae4d, -0xbc53f94d,0xbc2b65cb,0xbbc34f4e,0xbb95da45,0xbb975760,0x3a492f07,0xbaeb4c93,0xbafee57c,0xbbaa175b,0xbad42540,0xba019166,0x3a08367b,0xb9cfbf3c,0xba921482,0xba7b29ef,0xba490572,0xb9200286,0xba1ca214,0xba314fae,0xba166df0,0xba4317e1,0xba37f503,0x39e4fd1e,0x3ae62f46,0x3b5cf090, -0x3b8f1303,0x3b84889f,0x3b3cd0e2,0x3b8a3924,0x3c03f1f7,0x3c074f79,0x3bd40127,0x3bae13ef,0xbc24744b,0xbc788424,0xbbebbedf,0xbc329a5c,0x3b904389,0x3b10abec,0x3b49bf02,0x3b901942,0x3ba7c7cc,0x3b232788,0x3acc6eb7,0x3b256c7a,0x3a608bbf,0xba7863bf,0xbb0b98a9,0xba148f5e,0xb9023a4d, -0xba9d6cba,0xbaaf2caf,0xbb1f9902,0xbb9b2491,0xbba511dc,0xbbade937,0xbb861fc8,0xbb8fa861,0xbb914583,0xbb80717f,0xbade2a8a,0x3b068664,0x3bcf99e1,0x3c0a5ec0,0x3c0f86f5,0x3c137edb,0x3b2c570f,0x3a0b6a9f,0x3b5e93c8,0x3ba7cc97,0x3bf77f4b,0x3b170f33,0x3ba8c1b9,0xbbc458ba,0xbbfbc037, -0xbb6a334e,0xbaaa3ab6,0x39c4f25e,0x3b379798,0x3b368411,0x3a7942cf,0x3ac21da6,0x3b386828,0x3b10ba20,0x3b6de0df,0x3a96f3ad,0xba9c57e7,0xbb64cb5c,0xbb998f88,0xbb809576,0xbb1e1ea8,0xb9a928e2,0x3aa79ef2,0x3a9c4b2b,0x3b038185,0x3ae573ac,0x3b14f023,0x3b02ffd4,0x3abf0ca2,0x3b77fd8a, -0x3bcee435,0x3c26a909,0x3c346ba3,0x3c2e5d74,0x3c3c0af0,0x3c2016db,0x3bd7a900,0x3b6c8da5,0xba9b0336,0x3b7eb980,0xba293ed3,0xba57b80e,0xb9af6f74,0x3ac4e714,0x3b42fcac,0x3b8f5e56,0x3b3c8742,0x3b218c25,0x3a5bd98e,0x38230a42,0xbaeeb68b,0xbb383224,0xbb638513,0xbb45c8dd,0xbb50bf72, -0xbb7d0d77,0xbb92f234,0xbb6960aa,0xbaf166b8,0xb9cf0584,0x3a766e49,0x3a8e159f,0x3b07fa53,0x3b2b8b12,0x3b06d174,0x3acee19f,0x3ae92af4,0x3b1cba27,0x3b0b4834,0x3b0b137a,0x3b22ecf5,0x3b76c423,0x3bb645f0,0x3bbe2938,0x3bb79c0e,0xbb041713,0xbb8754fd,0xbb97b94a,0xbba7816a,0xbbe60c1b, -0xbbad42f6,0xbbab2cc0,0xbb84a26c,0xbb62fb0d,0xbb3efbd5,0xbb2cdc19,0xbb516091,0xbb5e4f72,0xbb6540f5,0xbb48ea25,0xbb4a990d,0xbb462eaa,0xbb406fe1,0xbb16dbbb,0xbab11351,0xba0299ec,0x3a654ae3,0x3ac0a5df,0x3aea2dca,0x3ab83a54,0x3a7b661e,0x3a5fd3ce,0x3a2b963a,0x3aa285e2,0x3aee0fa9, -0x3b10866d,0x3b114766,0x3a9a12a6,0x37d25b6c,0xb8d1a1c2,0xbaca8a87,0xbb2ebcb8,0xbb3c3895,0xbb8a9942,0xbbba8fa6,0xbbf884a4,0xbbf51407,0xbbec702e,0xbbecb7ac,0xbbdfeadf,0xbbb7156e,0xbbacaaa0,0xbb6fd9e8,0xbb54ba21,0xbb336263,0xbb168349,0xbb0d5eb8,0xbaf5ecd2,0xba9f340b,0xba0f4044, -0xba5702fc,0xb974f216,0x3a40b561,0x3aee1765,0x3ad44e8b,0x3af5cccc,0x3b121bd7,0x3b11cd55,0x3b1e0f07,0x3b061483,0x3aaf2b6d,0x39de0570,0xb8ec2b5f,0xba156bd7,0xba491954,0xbab03826,0xbae9aece,0xb9b9d7ca,0xba4a4075,0xba22da73,0xb9a8626c,0x39c161ea,0xba2a497f,0xbaa38d42,0xbb104e33, -0xbaf08238,0xbafef906,0xbaf21327,0xbb0e0853,0xbb16d422,0xbb0d649b,0xbacbd40b,0xba7d698e,0xb9913aa8,0xb945c784,0x3a3dcafb,0x3a2dca61,0x3a3b4645,0x39f5b00c,0x398d9c38,0x39f69fd0,0x39ff8b7f,0x39bfe4f0,0x399c8273,0x3918f4d4,0x39ad737e,0x3a4c6af4,0x3aa90d61,0x3ace452d,0x3a779db2, -0x3a35dbb9,0x392686f5,0xb9666ea0,0xbae8f132,0xbaf75d77,0xbaff8cfd,0xbb0fb075,0xbb15e442,0xbb4bfb97,0xbb3c10a1,0xbb36ac36,0xbb2288e4,0xbb194c40,0xbb089397,0xbae7cf65,0xbab77d60,0xbaa74368,0xbac1085d,0xbad1733c,0xba86a427,0xba933423,0xbaa1a03b,0xbaa57c53,0xba9c531b,0xba8ea5e9, -0xba81866a,0xba779846,0xba693154,0xba4cb990,0xba38183c,0xba463f83,0xba59e486,0xba8bdfa3,0xbaa8e153,0xbabad1fe,0xbac6ce0e,0xbabef302,0xbacf4b64,0xbae1e156,0xbb21b0d6,0xb8d41dc5,0x39a82246,0x393b9ab5,0x39623fd3,0x392b9265,0x38e7e5dc,0x3805c290,0x3776b3f5,0x399ac6b0,0xb8ba2df5, -0xb95aa54f,0xb8df73eb,0xb8ab7381,0xb8e21146,0xb94c7925,0x38070563,0xb6591c28,0xba21d358,0xb9f1997f,0xba0200f0,0xba03378a,0xba00c6cd,0xb9e00515,0xb9d80c62,0xb92f6fd0,0x38b6fd1e,0x3a1ddc0c,0x39ccd8bf,0x39ab60e1,0x38911cf5,0x37c380e1,0xb860807c,0xb98c5dc4,0xb996fb9c,0xb8ff3caa, -0x3968e86b,0x39909479,0x3a2ca615,0x381fa016,0x3a3733b4,0x3a6e3ec4,0x3a78d5df,0x3a0848d3,0x397d339d,0x3a6ead71,0xb9a3c3d6,0xb8765be9,0x392b8076,0x39840ab5,0x39ba0015,0x38c0b196,0x3a2d3236,0x39d7ddb0,0xbaa257f6,0xba8f7154,0xbaa8b339,0xbaa84a7e,0xbac7e1d1,0xbac8cc72,0xbab4d7ed, -0xb9ba501b,0x3a32448b,0x3b136131,0x3ab04379,0x3a71b63e,0x396c595e,0x3a5c419e,0x39ac4f1b,0xbaa62232,0xbad401dd,0xbac05fb1,0xb9b69bb5,0x39cbd49a,0x3b128865,0x3a7bee6b,0x3ad5c881,0x3ac3ccc0,0x3ad0115d,0x3a59e507,0x3a44a36c,0x3b095aff,0x39cd5add,0xb9fc47dc,0x3a270f14,0x3a027377, -0x3a80bd42,0x397d751c,0x3a8131db,0x3a12467d,0xbb0d1ab6,0xbb087cb0,0xbb2b6d92,0xbb32c0a1,0xbb49fc70,0xbb31aa19,0xbb1a68f4,0xba36edca,0x3a7e185f,0x3b910620,0x3b4697b0,0x3b1c507c,0x3a30bfc2,0x3a93e422,0x3997d437,0xbad191f0,0xbafbbebd,0xba8b4cc5,0x3a97b5ef,0x3ae54fb0,0x3b14cb10, -0x397e2c37,0x3b16f1b3,0x3b3f4ef7,0x3b262a05,0x3b15deb1,0x3ac33e22,0x3b6637c8,0x3ac34bc9,0x3b28491f,0x3b6b5701,0x3b02c461,0x3b15b150,0x3af94e4b,0x3b020778,0x3ad6bfdf,0xbb486fef,0xbb34cd9d,0xbb605cc6,0xbb6dba44,0xbb99afd8,0xbb92bf8b,0xbb81efd7,0xba558b2c,0x3b0d5394,0x3bff02c2, -0x3b89f7c1,0x3b59a998,0x3a04312f,0x3b459a93,0x3a8e5225,0xbb651473,0xbb8034dc,0xbb5d2597,0x392a26bd,0x3afeef27,0x3bc7980b,0x3b1e5b31,0x3b675a5a,0x3b4509c2,0x3ad42f00,0x3ace67bb,0x3b5479bb,0x3bc0e459,0x3baffc6c,0x3bc9b355,0x3bd6c105,0x3b50575a,0x3b52c5f7,0x3b6371b4,0x3aef4380, -0x3a4e9222,0xbb7d0ba6,0xbb646be9,0xbb9f5d05,0xbbb35083,0xbbd54026,0xbbbd5e57,0xbb9f619b,0xbaba6778,0x3b389fab,0x3c1dfd4f,0x3c039149,0x3ba1f604,0x3aaa7f08,0x3b14d910,0x3a4d008a,0xbb1d3c85,0xbb4eae92,0xb96e4ace,0x3b7affd3,0x3ba9706a,0xbc2a3b68,0xbc113915,0xbb8ec222,0x38c5c56b, -0x3bf7ac60,0x3b80d270,0xbaa9db8f,0xbc0411a7,0xbbf6d732,0xbb1559d2,0xba6fe772,0x3c13cc20,0x3c08adfd,0xbb7627d9,0x3afc75cb,0x3a89b7af,0x3b9119af,0x3b2383b7,0x3adfd791,0x3b11b312,0x3bbb39cb,0x3baab6eb,0x3b640b5c,0x3994be41,0xbb69000c,0xbc254179,0xbc228d5a,0xbb388190,0x3c4f7f38, -0x3bcb0274,0x3baf84e1,0x3bc8c2f5,0xbbfe01dc,0xbc5590f4,0xbc40fe31,0xbc42f293,0x3c0108d5,0x3bca3bf1,0xba5d23ad,0xbc073a2b,0xbc6421f8,0xbc0bb2c5,0xbafc46b6,0x3b8926a1,0x3b95bce6,0x3b073b53,0xbb91cae1,0xbb4ee8c6,0xb7528d95,0x3b217871,0x3ac1bfb4,0xb72a0935,0xba20f2de,0xbb14db72, -0xbb461acf,0xbb92b8f6,0xbb160171,0xbb23649b,0xbb3173b0,0xbb912127,0xbb1d14d5,0x3b0b112d,0x3c2757d8,0x3bf1c77a,0xba59391a,0xbb4500d5,0xbad73dd6,0x3be688bd,0x3c44d269,0x3c7b56b9,0x3c24abc4,0x3c0c10e4,0xbc45949b,0xbc08dfa4,0xbb25fac7,0xbb489c63,0xbbd99c54,0xbad7307a,0x3aa2ae48, -0xbb538026,0xb9f03f6a,0x3933f9cd,0xba089d2f,0xbaeef1ac,0xbae8834a,0x3a101914,0xba019b15,0x39aba0b0,0x3ada42c2,0x3824d78c,0x39acc561,0xbad73a23,0x3a80d98b,0x3b1e3912,0x3b29dfd6,0x3aa938a5,0x3a8e6fe9,0xb9b6ed46,0x3b2a6845,0x3b80dd1c,0x3a960f88,0x3bcec5ec,0x3bb294ca,0xbaa3152a, -0xbbdba4f2,0xbc223693,0xbbcc67e6,0xbc473b8e,0xbc427d23,0xbc2a6a77,0xbb818875,0xbb271c22,0x3a1f7a3b,0x399ef9c2,0xba3b6fdb,0xbbbc6ec8,0xbb2b50a6,0xbaa7e712,0x39dfb3dd,0x381da29d,0xba20a3bd,0xbaa88974,0xba588133,0xb9ee01c0,0xb9925cbf,0xba9b48a6,0xba9b5c2e,0xbad9740c,0xba075b2e, -0x3a6d4a05,0x3ac7ba29,0x3b5a5091,0x3b820c6c,0x3b5d145b,0x3b11cd38,0x3b6c072d,0x3bd73261,0x3c1b6bcd,0x3bd96463,0xbb2f4d93,0xbc0eef2a,0xbc4001d0,0xbb928419,0xbc238c97,0x3c0d884a,0x3c0ad1b5,0x3ba30728,0x3b9d959e,0x3bd0dad4,0x3af4f475,0x3a7f857e,0x3b420827,0x3a9a809f,0xb99c24c2, -0xbafee3e2,0xb9f5c304,0x3928b56b,0xba53c001,0xba4407f0,0xbafba2f9,0xbb9d0c57,0xbba11588,0xbba74ead,0xbb8e61ea,0xbb8ace0a,0xbb8973e3,0xbb709317,0xba537a0b,0x3b1ae594,0x3bd4c0bc,0x3bfc7563,0x3bf49f06,0x3be5d8c2,0xb9c80f22,0xbacdd9a3,0x3b45aff4,0x3b9a66ef,0x3bf0da3e,0x3b5bda3b, -0x3bea7b83,0xbc3f057c,0xbc330cb4,0xbbc01063,0xbaf50667,0xba271a8d,0x3b18f1da,0x3b25b238,0x3a9f25fb,0x3af5dd94,0x3b43e971,0x3af0c5d2,0x3b4027a4,0x3a87ad7f,0xb8d23c8d,0xbb5db0b3,0xbba0c26b,0xbb842df5,0xbb63974b,0xbad67be8,0x38a281d4,0x3a0654bb,0x3ae58775,0x3ac1155f,0x3b1a0490, -0x3b3e4986,0x3b62ed53,0x3bc0c82c,0x3c0083ea,0x3c39fd74,0x3c3e6f1d,0x3c2d9f24,0x3c1af705,0x3c1c593a,0x3ba48a0d,0xbac1697e,0xbbdc81ee,0x3bd359af,0x3b35a44d,0x3b10f582,0x3b27c405,0x3b9e4095,0x3bb08a4a,0x3bcdc1c6,0x3b9a5f52,0x3b8c95af,0x3b250964,0x3a8a9cb3,0xba556617,0xbb1bd84b, -0xbb5c17f3,0xbb4a8b2b,0xbb4ddf82,0xbb58e5fb,0xbb8e77f0,0xbb765117,0xbb32e5c3,0xba8a78db,0x39a67d8e,0x3a22263c,0x3ae1fb91,0x3b11ac6b,0x3ad01a29,0x3a939121,0x3aaff56f,0x3ad6dbd3,0x3acfdd15,0x3afbb765,0x3b417789,0x3b8271cf,0x3bc82e2f,0x3beeb0c5,0x3bfd85d6,0xbab370ef,0xbb7cefc3, -0xbb6f6e34,0xbb6e7260,0xbba92881,0xbb79f7b4,0xbb702f61,0xbb34f43e,0xbb157cd7,0xbb003982,0xbafecc63,0xbb30e934,0xbb4b49de,0xbb785862,0xbb5a5f41,0xbb58ab68,0xbb4ad138,0xbb5747c0,0xbb4371c0,0xbb1a923b,0xbaac36ef,0x385ff67f,0x3a4b1a65,0x3a855ef0,0x3a38ca26,0x394fad2b,0xb87b6c20, -0xb9c011ad,0xb81c4efd,0x3a41d8f8,0x3aa22458,0x3aded861,0x3ae0001e,0x3ab18d45,0x3aba348b,0xba4ec398,0xbb35a65b,0xbb5c25bb,0xbb982c51,0xbbc52d18,0xbbfcb06b,0xbbf23ee9,0xbbe34ba2,0xbbdbc634,0xbbd75b51,0xbbb5f56a,0xbbada7e2,0xbb80ce50,0xbb68db68,0xbb51771b,0xbb2b720e,0xbb2b94c0, -0xbb212fe8,0xbb0129fb,0xbabe2ce9,0xbaed7171,0xba924dda,0xb8e31b30,0x3a878021,0x3a64d07f,0x3a8e81db,0x3acab38a,0x3ac35e25,0x3ad98be3,0x3aa74b4a,0x3a75177f,0x399bde64,0xb8d62398,0xba228821,0xba7913b7,0xba9a9613,0xbae10354,0xba905037,0xbad1e439,0xbab10803,0xba804c62,0xb9810d0f, -0xbacbfc21,0xbb112692,0xbb5775fb,0xbb36d9a6,0xbb32bf6f,0xbb27d848,0xbb364d1f,0xbb3c8526,0xbb2fea38,0xbb0fc498,0xbad77e80,0xba778dfb,0xba6b8896,0x38887e6a,0xb97c23dc,0xb814f000,0xb92007be,0xb93cba1c,0x3956988d,0x39f05801,0x3a0e133d,0x3a0b7d99,0x3a14c561,0x3a3ae1a4,0x3a940f77, -0x3ac5a3a3,0x3af4a827,0x3a8a800d,0x3a4680cc,0xb928e3f6,0xba611f63,0xbb11b67e,0xbb20392a,0xbb282941,0xbb3a9919,0xbb3f1de1,0xbb6e0688,0xbb5a4d54,0xbb55cf0a,0xbb42bd81,0xbb3d4bac,0xbb2e30a8,0xbb1a23b5,0xbb022138,0xbaf22f8e,0xbb03b8cf,0xbb0a6345,0xbad1790a,0xbade0064,0xbae9794e, -0xbaec35d6,0xbad94c44,0xbac9892f,0xbaba15d1,0xbab4bf62,0xbaada532,0xba9c38d4,0xba96830d,0xba9dbab4,0xbaa36355,0xbabbd1e7,0xbace2e75,0xbad924e0,0xbaf5fe84,0xbaf2f8ca,0xbb0345a8,0xbb0be23e,0xbb541a51,0x3889ede3,0x39fc6f2b,0x39a14f8c,0x3986213c,0x393a43ad,0x396256e4,0x37cf377c, -0xb801509f,0x399ef7db,0xb8f54bc8,0xb98b6a8e,0xb991ab02,0xb8b5f154,0xb885878f,0xb93be2c0,0x38f04cb7,0x391298ee,0xb9d0d5d9,0xb9acf7e9,0xb9cf9340,0xb9d2a9ed,0xb9bdf16a,0xb98c98e3,0xb97073c7,0x38ae7c9e,0x39b3776f,0x3a580889,0x3a071c1e,0x39cec385,0x38a5ce6a,0x38fba78e,0x38be0e62, -0xb90b0820,0xb8fc131f,0x37955adc,0x39b9e8ae,0x39db45e7,0x3a50ade0,0xb7a278ec,0x3a26b4bc,0x3a6d36be,0x3aa2f2f4,0x39d2d17c,0x37d090b1,0x3a534140,0xba3be03c,0xba101d89,0xb9fa660f,0x392e0445,0x39fe6ca4,0x38abf252,0x3a76315c,0x3a50c68f,0xba2b792a,0xba5bd5dd,0xba9e75d1,0xbaa4c260, -0xbab243bc,0xbaa74b4b,0xba845947,0x390b9f8b,0x3a979b87,0x3b323c4e,0x3ab601f3,0x3a600e0e,0x3919cb7a,0x3a8c3053,0x3a2b0d31,0xba9583b4,0xbaa494f8,0xba7de59c,0x392bbffc,0x3a47ec2b,0x3b268c51,0x3a8d57ed,0x3abe01ec,0x3aa5a4c1,0x3b049c0e,0x39d0093e,0x3907e825,0x3ae5bebb,0xb98f9a2b, -0xbaa7c0c8,0xba2fb6c9,0x3981e150,0x3a854f58,0x38ca8ecf,0x3aacf677,0x3a8ae494,0xba8fead2,0xbadcd01f,0xbb21821b,0xbb349d82,0xbb393ffe,0xbb1426c4,0xbae66a0d,0x397885bf,0x3af5c944,0x3ba9b429,0x3b477773,0x3b1094b3,0x399e2738,0x3aa94e87,0x3a3a2561,0xbaac863b,0xbaa553a0,0xba02b2eb, -0x3ad66283,0x3b0b22d6,0x3b17d953,0xb93eff29,0x3af9525e,0x3b2f767c,0x3b5dbac5,0x3aee5991,0x3a38031c,0x3b4a139d,0xb72b3438,0x3a78fe7e,0x3aa548f5,0x3ad8c774,0x3b2a1c7a,0x3ac476b4,0x3b34bffd,0x3b261933,0xbad2d3b7,0xbb13730a,0xbb5a1f2c,0xbb7b20ad,0xbb8f9679,0xbb80379b,0xbb542f38, -0x3a1ac53d,0x3b6563e0,0x3c0f9fa4,0x3b82bb95,0x3b3e7091,0x37e5e964,0x3b5915d2,0x3ae98d6b,0xbb5e016c,0xbb3f4f2c,0xbb0aedaf,0x3aa9383b,0x3b2da987,0x3bd9ecbf,0x3b2c5a3b,0x3b53296b,0x3b2ac49f,0x3b35ff2b,0x3a436a63,0x3b0110b7,0x3bacb387,0x3b8cb197,0x3b9d494b,0x3b9007c1,0x3b47516a, -0x3b63fd40,0x3b439550,0x3b2caf0d,0x3ae76fb2,0xbb26471c,0xbb364bfe,0xbb9f81b8,0xbbbbd7c3,0xbbc96bbe,0xbba3acfc,0xbb76f698,0x399c3766,0x3b953f93,0x3c33ae5e,0x3bfe5d34,0x3b89abf0,0x39da0445,0x3b1f9caa,0x3abf19b8,0xbaefdc72,0xbae97388,0x3a4d4fdb,0x3b927449,0x3bb7dacd,0xbc3bf6a6, -0xbc2169a6,0xbbc12f29,0xbad290b8,0x3bc2aa56,0x3b947db4,0x3911dc1e,0xbbfa1fb0,0xbbf2ea4a,0xbb1e56fa,0xba0c0712,0x3c099a11,0x3befdbe6,0xbb2d342a,0x3a9687a5,0x395073d2,0x3bb64f4d,0x3b81ae56,0x3b6f72a3,0x3b9d9ec2,0x3c0006a9,0x3bc952d5,0x3b7891b7,0xba60252d,0xbb9c9403,0xbc2e99d7, -0xbc0f376d,0xba3bd88e,0x3c5a5cb3,0x3bdd9347,0x3bb0ef63,0x3bb9494f,0xbbeeeda5,0xbc3d854c,0xbc2a4c91,0xbc407a3f,0x3c20a90f,0x3c13dbe5,0x3af12d4c,0xbbd90b49,0xbc506362,0xbc285823,0xbb94d152,0x3b1ca624,0x3b852f00,0x3b1962e9,0xbb815abc,0xbb7557a4,0xba67f21a,0x3b0e9102,0x3a38a1b8, -0xb9e5141a,0xbaba8ffe,0xbab76b81,0xbae26dd4,0xbb74fcec,0xbad57ba9,0xbb12e864,0xbb1ebd63,0xbb7cff7e,0xbab2ce16,0x3ba80e80,0x3c264f3e,0x3bca9898,0xbaf1b35f,0xbb5247ea,0xba8a4c4c,0x3c005c2f,0x3c4fa7cb,0x3c65bd88,0x3bac0acc,0x3bf9a33d,0xbc53e148,0xbc87353a,0xbb3119ab,0xba103dbb, -0xbbfaa933,0xba8d3296,0x3a8cbfee,0xbb72059e,0xba572f1b,0xb98d8226,0xb953a9c8,0xbac4a3c5,0xbadbf049,0xb8b10cc6,0xba9b1000,0xb98c4ff3,0x3abdd99a,0x398c741a,0x39063914,0xbaf98c15,0x3a9ce5c2,0x3b186006,0x3b0668a1,0x3a800fc3,0x3a2ad0cf,0x39373e67,0x3b17fb74,0x3b541df7,0xb9ba0a12, -0x3c04a98d,0x3be1f3bc,0xbbda4989,0xbb92a210,0xbbe60bcd,0xbbc5f02e,0xbc307fcd,0xbc48c822,0xbc66a66a,0xbb603a35,0xba53515e,0xb9684b31,0x3b0a6079,0x3a20e028,0xbbb8ec85,0xbb4a3b2c,0xbada2967,0x395dea89,0x39f49508,0xb9392e22,0xbad1ede0,0xba50d1ca,0xba1c70e1,0x38d9c926,0xbac9f973, -0xbaec1b36,0xbb2001cb,0xba0bd08a,0x3a7cb4e3,0x3aa252f1,0x3b4b1f52,0x3b623956,0x3b28e789,0x3add1ec3,0x3b33f922,0x3b8efb4a,0x3c27ca8e,0x3bde5ec7,0xbc0f5fa9,0xbbfbdb52,0xbc17ab05,0xbb436a40,0xbc0ba6c3,0x3c4ac8a4,0x3c7154ad,0x3bfa36cf,0x3bb1db02,0x3bdbe823,0x3aa33fbb,0x3a216dab, -0x3b5429a8,0x3ac66ec4,0x39c678ce,0xbace7e45,0xba214d28,0x39097993,0xb962158c,0xb9d159a1,0xbacd90d2,0xbb967fd5,0xbb994cdf,0xbb9f1a4b,0xbb939f3a,0xbb805fa8,0xbb73727d,0xbb409c2d,0x3905d40e,0x3b36f281,0x3bdab042,0x3be09979,0x3bc3d63d,0x3b92e9cf,0xbb340030,0xbb4d04a3,0x3b2674fd, -0x3b61af34,0x3bc4f0c2,0x3b66fb8f,0x3c084993,0xbc79b1f8,0xbc51d781,0xbbf938d4,0xbb111bf8,0xba9ba88f,0x3ae22b05,0x3affc326,0x3abb645d,0x3b04015c,0x3b3c5b46,0x3ac010ad,0x3b01ae6e,0x3a2db643,0x3a2785e1,0xbb530f33,0xbba0841b,0xbb8a11bc,0xbb8fcd8f,0xbb423306,0xbab7e2a3,0xb9df827d, -0x3a9a3cc6,0x3a979cb7,0x3b1e98aa,0x3b77ba4f,0x3ba9b5c8,0x3bec0272,0x3c0ca517,0x3c399b12,0x3c40db8a,0x3c291eef,0x3bf41e61,0x3c0a89d9,0x3b5f28ef,0xbb92de50,0xbc28fc65,0x3c03fc66,0x3bb92db7,0x3ba6005b,0x3ba3ff39,0x3be47d59,0x3bdef11e,0x3bec9ab3,0x3bc489d4,0x3bb5e085,0x3b7c4ce9, -0x3b03b6f6,0x393b4065,0xbaede108,0xbb4f8dd3,0xbb50a56e,0xbb4d8b1b,0xbb40bfa9,0xbb7d6d1b,0xbb680d4b,0xbb51d47b,0xbac6bc24,0xb992a138,0x39592c40,0x3a9d7724,0x3ad0ad64,0x3a80d5ad,0x3a31ed6a,0x3a8aa7cd,0x3a9be7ce,0x3abba361,0x3b06dcc0,0x3b63b08a,0x3b8821ed,0x3bc7f52b,0x3bfcaf7e, -0x3c1058ac,0xba46efe6,0xbb594480,0xbb2dbb15,0xbb138bcb,0xbb6e4144,0xbb236219,0xbb110e1f,0xbac44d70,0xba98a86e,0xba8748b2,0xbaadcedf,0xbb0f94f6,0xbb3f05e6,0xbb86e67e,0xbb740d22,0xbb6e1ac2,0xbb5b6098,0xbb681e4f,0xbb5f3543,0xbb448c22,0xbaef498a,0xba2c8cc6,0x38c57584,0x395d7147, -0x361251b5,0xb9f57397,0xba56a3a4,0xba95e406,0xba7ff804,0xb8ab0dcf,0x39fae6ca,0x3a9c1566,0x3b07c22b,0x3b24ebb5,0x3b329159,0x3865852a,0xbb31fbe8,0xbb69cc24,0xbb9c6508,0xbbc661b3,0xbbf5003a,0xbbe4b6dd,0xbbd165af,0xbbc23744,0xbbc8a202,0xbbb099c4,0xbbaf8ea2,0xbb89da6d,0xbb831ffc, -0xbb786064,0xbb4fac2e,0xbb553248,0xbb4fe99b,0xbb35e600,0xbb1b7fc1,0xbb2734f1,0xbaf9052f,0xba8239c0,0x382e2916,0x381a23f4,0x3994c770,0x3a5ee017,0x3a30d592,0x3a448c44,0x39a08f6f,0x39b50327,0x3871822d,0xb7cbf88c,0xba150d1c,0xba8ca4a3,0xba8487b1,0xbad5903e,0xbb079698,0xbb2bbb94, -0xbb168fb5,0xbaf92ed9,0xbaa05e80,0xbb3076f0,0xbb5abfd2,0xbb91a217,0xbb7943ba,0xbb6994dd,0xbb582b6e,0xbb60882f,0xbb6095f4,0xbb530af0,0xbb3a5189,0xbb190692,0xbae2544d,0xbada5a27,0xba4be943,0xba9f7731,0xba687ee1,0xba63488d,0xba410b01,0xb98a8d47,0x3909fca4,0x39c7b6f0,0x39eabe8a, -0x3a32416d,0x3a538708,0x3a91ae00,0x3aa89f47,0x3acbc81d,0x3a2a5d29,0x39ce2140,0xba49de3b,0xbae01d9f,0xbb234518,0xbb368270,0xbb42f416,0xbb568402,0xbb595f81,0xbb7cec96,0xbb69c2e4,0xbb69bc65,0xbb5a043e,0xbb5905be,0xbb4ca1ef,0xbb3aa11f,0xbb248b14,0xbb1a8ee3,0xbb20f32a,0xbb253ca4, -0xbb0aba99,0xbb0faf19,0xbb1227f4,0xbb120f46,0xbb055a0b,0xbafad5f4,0xbae977b0,0xbae281d2,0xbad9753b,0xbac61fc9,0xbac77dd6,0xbad17019,0xbad6a6b1,0xbae7c733,0xbaeb28b0,0xbaec1519,0xbb09d941,0xbb0b8474,0xbb16c0be,0xbb1d41ab,0xbb7525f5,0x399d4f77,0x3a23a00a,0x39df994a,0x39aa8848, -0x39835a06,0x39cb2387,0x38977c31,0xb6be882b,0x39bd89f3,0xb8c99ecc,0xb988f59b,0xb9b8162b,0xb8077765,0x383aadd7,0xb8a54c8d,0x39862757,0x39aa6d78,0xb8d52f40,0xb8fb578c,0xb963391e,0xb981452a,0xb939311f,0xb860de89,0x379041c9,0x39c24c22,0x3a21b84e,0x3a863ca9,0x3a2f5f1b,0x3a02fad2, -0x390e1844,0x398fba7a,0x39961cba,0x3827f33b,0x38d7b54b,0x3968583b,0x3a0e2f58,0x3a138c4b,0x3a73c2a6,0xb743c9f5,0x3a174547,0x3a637b8c,0x3acd9057,0x399be2b0,0xb926b25b,0x3a3c6622,0xba8ac4de,0xba7e0be8,0xba7b718e,0x38d09e02,0x3a17c473,0x391c7bc0,0x3a9c87bb,0x3a97a3d2,0x3800ea0f, -0xba044c14,0xba878bf0,0xba94ebb0,0xba8f1703,0xba6c7c6c,0xba03c3ec,0x3a324f28,0x3ad660c6,0x3b487868,0x3acc273b,0x3a81733a,0x3968679d,0x3ab8a1b4,0x3a88f1d2,0xba75450d,0xba4e6473,0xb9cc47a2,0x3a499d9d,0x3a963364,0x3b2bfc8a,0x3a92e892,0x3a976491,0x3a76d901,0x3b22f114,0xb8384566, -0xba005658,0x3ab62d2f,0xba81c9c1,0xbb06c287,0xbae0fc37,0xb89f0f39,0x3a7bb080,0x3863746e,0x3ace4881,0x3ac395fb,0x3854588e,0xba9b9a4d,0xbb0df12c,0xbb29da21,0xbb1d15d1,0xbad6afe4,0xba7689aa,0x3aa0f12f,0x3b34a6e8,0x3bb85ee6,0x3b4e4fae,0x3b0f0a98,0x38c4be57,0x3ad566e7,0x3aa5a1d5, -0xba7d4d02,0xb9f1448a,0x39767ea4,0x3b13dc5a,0x3b1be7ee,0x3b16370b,0xba042fb5,0x3aa946c9,0x3b11e2ab,0x3b8830f8,0x3a9c8b9c,0xb94a2d6d,0x3b22617b,0xbac5c03d,0xba425513,0xba7dff46,0x3a981772,0x3b309e07,0x3a9929c2,0x3b58cbe0,0x3b537d82,0x3867812b,0xbad32eb8,0xbb4a86e3,0xbb7f5581, -0xbb794f6b,0xbb4b91b2,0xbb0f429a,0x3b079bfa,0x3b9d7b98,0x3c16be32,0x3b83c343,0x3b3ecd4f,0xb8934bc9,0x3b7a1de4,0x3b29c131,0xbb4cfa95,0xbae5346d,0xba46be0d,0x3b2963fa,0x3b576849,0x3bd75553,0x3b2b4aa9,0x3b2a0d55,0x3affe5ff,0x3b80bb2e,0xb95436d4,0x3a106380,0x3b8da0ab,0x3b38727c, -0x3b4b2986,0x3aff98cb,0x3b3641d5,0x3b7041c5,0x3b294a58,0x3b530b1a,0x3b2d2c4b,0xba498faf,0xbafb69da,0xbb97501b,0xbbba1df0,0xbbb20751,0xbb7f0a8a,0xbb151685,0x3b0b8fe1,0x3bcab194,0x3c3dbd82,0x3bf5cd35,0x3b74d00a,0xb961db05,0x3b3dcbff,0x3b1a096b,0xba99eb7c,0xb95b5544,0x3b087b86, -0x3badf257,0x3bbb075b,0xbc40e7db,0xbc266667,0xbbe847e2,0xbb4c759a,0x3b8def4b,0x3b94027d,0x3a955139,0xbbd5f21d,0xbbd34be6,0xbb0bb2d9,0xb9748b3c,0x3be9ddc2,0x3bbb2844,0xba985f09,0x39a98e11,0xba31dced,0x3bc36ed2,0x3ba73e23,0x3bbd90ea,0x3bfbcedb,0x3c1c058a,0x3bdef7a3,0x3b810fb6, -0xbb113797,0xbbc57173,0xbc319a79,0xbbeea286,0x3aba71be,0x3c651a20,0x3bf6348e,0x3bb09a0b,0x3b9b88f5,0xbbdb7bef,0xbc233ffe,0xbc0ce0b2,0xbc34f2a2,0x3c20b5de,0x3c370c24,0x3ba1802e,0xbb849d1c,0xbc3a17d8,0xbc36734d,0xbbce98e2,0x3a4e02b8,0x3b51cbbc,0x3b0d86e3,0xbb55c317,0xbb8139fc, -0xbad22358,0x3aff608c,0xb8b80d26,0xba4a8775,0xbb064554,0xb9a728c6,0xb986555b,0xbb208b44,0xba6f9192,0xbaf96ca5,0xbaefaf4f,0xbb468017,0xb90ee08d,0x3c02584c,0x3c1897bc,0x3b8dd08e,0xbb67ffda,0xbb5bd734,0xb936d1d2,0x3c0cf1cd,0x3c5b3760,0x3c521cd4,0x3a992b02,0x3bb0f50f,0xbc48a26a, -0xbcb716cb,0xbb84ce22,0x3a7549e4,0xbc0bf220,0xba5c4660,0x3a547bb3,0xbb5c9e5d,0xba83cfc6,0xba31cf20,0x38f80f90,0xba899ad9,0xbabacd84,0xba347b26,0xbada3f36,0xba39b3b0,0x3aa16844,0x3a2c2a5e,0x39bd78fb,0xbab8bc27,0x3aacf6e7,0x3b015964,0x3acd56b4,0x3a192e76,0x394e268a,0x3a598191, -0x3ad8c246,0x3b04d1cf,0xbae754f0,0x3c0ec0af,0x3bf43a54,0xbc1eb15a,0xbb3242d5,0xbba20b27,0xbbbe010a,0xbc09293a,0xbc34d976,0xbc85b5a5,0xbb748677,0xb95dbad7,0xbab773ee,0x3b54fd6f,0x3af0945a,0xbb9e23b2,0xbb4e1d4a,0xbaeafb3d,0x38609af2,0x3a453f9c,0x3925c435,0xbaf00b8b,0xba3fba9a, -0xba2394ae,0x3a041377,0xbacc2334,0xbb0860b7,0xbb324ec6,0xba1cecf9,0x3a594c13,0x3a96ac8f,0x3b2d5323,0x3b35dbd0,0x3adabb4e,0x3a9d6ce4,0x3af1f78d,0x3b0b80bc,0x3c25b04f,0x3bce6fd4,0xbc4db963,0xbbf2297b,0xbc0280bf,0xbb0e6aec,0xbbcf1f48,0x3c70b644,0x3ca56690,0x3c33ddea,0x3bd37b88, -0x3bc98e44,0x3a61bf98,0x3a256f2f,0x3b4ed195,0x3ae8e89b,0x3a7b21be,0xba8dedaa,0xba62b1c9,0xb87b1598,0x39ed13fd,0xb94857a7,0xbaa05075,0xbb839599,0xbb8a8e52,0xbb93804d,0xbb90251a,0xbb62f6d6,0xbb48656a,0xbaf3990b,0x3a698597,0x3b5a2d7c,0x3bddce48,0x3bc8623c,0x3b93226a,0x3a9db015, -0xbb881e61,0xbb734766,0x3b18a8f6,0x3af5e363,0x3b7bedaf,0x3b3726a9,0x3c029e02,0xbc85a9a4,0xbc5a3e1a,0xbc0edf4c,0xbb24d31d,0xbac0926a,0x3a7d89bc,0x3a9c38d5,0x3acf56a5,0x3af73f89,0x3b1eb609,0x3a8de444,0x3a844638,0x39520e2e,0x3a694cde,0xbb45c7ff,0xbb99061e,0xbb93c36c,0xbba4f5a0, -0xbb855243,0xbb3f4af0,0xbac4827d,0x39c4bbb4,0x3a539747,0x3b20891d,0x3b8e7438,0x3bc96fa5,0x3bff5d74,0x3c10146f,0x3c30c316,0x3c3a7b05,0x3c1a60a8,0x3bafd759,0x3bd1052e,0x3acb4cd2,0xbbbcea9a,0xbc3f1ec1,0x3c0b8560,0x3bfe6037,0x3bebc502,0x3bd8e0fb,0x3c03704d,0x3bec3666,0x3bed03b2, -0x3bd53e9a,0x3bc900c8,0x3b9ce6af,0x3b3978f2,0x3a98d5c5,0xba8c13ed,0xbb3699e1,0xbb4f80f7,0xbb49602d,0xbb2fced4,0xbb51b322,0xbb4888fd,0xbb50adb8,0xbae79f80,0xba5be374,0xb97abd3c,0x3a2d2b2e,0x3a7b6981,0x3a0c001f,0x39d4b7ce,0x3a6bd3d6,0x3a799118,0x3ac79331,0x3b25024c,0x3b8aca3c, -0x3b92038f,0x3bbd2b41,0x3bed92ef,0x3c0e60bf,0xb9a1fbfd,0xbb31cfc9,0xbafa0c0d,0xba9aea9b,0xbb1dd613,0xbab0bdad,0xba702290,0xb9a178d9,0xb8fb8b5f,0xb91c1818,0xba3b0c46,0xbad13f49,0xbb2f64a2,0xbb8892e7,0xbb824e06,0xbb7de8d4,0xbb6966c1,0xbb6ae494,0xbb640b30,0xbb4e66b4,0xbb063cce, -0xba9d33ac,0xba124b4d,0xb9e3d454,0xba081571,0xba6d9fcf,0xba9d36c5,0xbab63eb1,0xba9ed852,0xb9d3d376,0x38b6974a,0x3a6762bc,0x3b0d69de,0x3b50b03b,0x3b63f938,0x3a4b429a,0xbb313e1a,0xbb6ba65a,0xbb94fe7d,0xbbbc1549,0xbbe16430,0xbbcd17d1,0xbbb5b30f,0xbb9eb995,0xbbb106f8,0xbba344bf, -0xbbacb843,0xbb8c690a,0xbb8e7e83,0xbb88ed16,0xbb70bf62,0xbb7683c5,0xbb767a8b,0xbb60016a,0xbb49c53e,0xbb474fc6,0xbb25b1c4,0xbae8c5b3,0xba78a06e,0xba4ed4f3,0xb9f9d602,0x3938ca28,0xb8ca2530,0xb90c0d4a,0xba1e1887,0xb99fdf8b,0xb994d5d9,0xb8175c89,0xba164bf5,0xbaa6858d,0xba929d27, -0xbae3e5fc,0xbb4b6cd2,0xbb72dfa2,0xbb5be3ca,0xbb44c53f,0xbb1cab16,0xbb7e623d,0xbb93131b,0xbbb5d572,0xbb9c5ba2,0xbb8d9891,0xbb80cced,0xbb819eb5,0xbb79c486,0xbb6d90f6,0xbb5c1909,0xbb3f1937,0xbb21e132,0xbb1b34f4,0xbad772a6,0xbb0a606b,0xbadeb1fd,0xbad16763,0xbab1e153,0xba668105, -0xb9ea35ff,0xb8f73919,0xb80f542d,0x39a5e0d0,0x39ddced2,0x3a13f949,0x3a10150d,0x3a24df76,0xb990723e,0xb9c4f24c,0xbaceb5d0,0xbb2d57fe,0xbb2c0606,0xbb3ff3b2,0xbb4cf826,0xbb5ebf66,0xbb613ef7,0xbb787059,0xbb668da7,0xbb6b7166,0xbb608371,0xbb6519e1,0xbb5c8fa8,0xbb4e2a4d,0xbb3bd51c, -0xbb30a031,0xbb309b8a,0xbb33ff0e,0xbb2337c1,0xbb25ea4c,0xbb262ec3,0xbb26a967,0xbb1870e7,0xbb10e057,0xbb07a73b,0xbb034ac9,0xbafa5cbf,0xbae4c064,0xbaec609e,0xbaf8e7e8,0xbb004056,0xbb05c8a9,0xbb00fb62,0xbafaf06b,0xbb12b85e,0xbb175647,0xbb249db6,0xbb288441,0xbb81b9a6,0x3a138557, -0x3a40ceed,0x3a0ef932,0x39d40f69,0x39a8fa09,0x3a13a4f4,0x3918f524,0x383020b8,0x39d9cec7,0xb8b68f38,0xb98677d9,0xb9bd79a4,0x37cdf9d9,0x3914339a,0x3817cf7f,0x39cd9654,0x3a04cba6,0x395046e2,0x38ba4307,0xb721b15a,0xb82995ad,0x3843b85c,0x394c5b53,0x39a2107d,0x3a2fd387,0x3a67b4cd, -0x3a9a6b3e,0x3a573bd6,0x3a214f23,0x397546ef,0x39f0a9b1,0x3a03c964,0x397553af,0x39b34472,0x39e9ed04,0x3a40be68,0x3a34dd4a,0x3a91984b,0x388cc102,0x39e7232e,0x3a4c4539,0x3af4063e,0x395efb65,0xb99b807b,0x3a29d046,0xbaad3dc4,0xbaad232f,0xbaa7070f,0xb4c68d7f,0x3a1ba120,0x3970f487, -0x3ab1eab8,0x3abc22c5,0x3a310302,0xb92f7484,0xba599a5d,0xba739713,0xba42fbe3,0xb9e6bc4b,0x3901087d,0x3aa189f5,0x3b06d545,0x3b5370a5,0x3ae683cf,0x3aa25338,0x39f7156b,0x3ae75e72,0x3ab965d6,0xba27ef3f,0xb99130e2,0x39499932,0x3ab372e1,0x3acb4aee,0x3b28d431,0x3a9154f7,0x3a4c44cf, -0x3a1b7428,0x3b3cd5c5,0xb9e7ac05,0xba898a48,0x3a8ddf5c,0xbae02ad8,0xbb33f76c,0xbb203872,0xb9f48462,0x3a47cd2d,0x3866384a,0x3ae179b8,0x3aed8fa8,0x3a8ed047,0xba33e234,0xbaebdb40,0xbb11fdb2,0xbaee9325,0xba695f74,0x38a5c8c9,0x3b10d27e,0x3b679b02,0x3bbb5e82,0x3b53b58f,0x3b102f50, -0x38dea485,0x3b0467d8,0x3aeedfbf,0xba0d79eb,0x39b0e8f1,0x3a7ed54e,0x3b3a7e02,0x3b269704,0x3b1e5595,0xba2dea87,0x3a03e543,0x3acbb788,0x3b9cd48c,0x3a094120,0xba8a8e4a,0x3af22e1d,0xbb3e5cab,0xbb1d9ae0,0xbb397068,0x39f8689d,0x3b22854f,0x3a6d2e37,0x3b6ab4e4,0x3b6f07d2,0x3ad31d4f, -0xba807374,0xbb36c4b6,0xbb767027,0xbb457e5c,0xbb0a0bae,0xba4dcb46,0x3b64d469,0x3bc236e1,0x3c147112,0x3b872289,0x3b4e63d4,0x39ba4a5b,0x3b8cfa7e,0x3b57fb54,0xbb2b6828,0xba154237,0x3a088114,0x3b7ac675,0x3b81b77a,0x3bc6b989,0x3b2205b3,0x3aec7f2f,0x3a984fa6,0x3ba30f01,0xba9bd3b8, -0xba6effe8,0x3b540963,0x3a8bfb1f,0x3a968a67,0xb9e862d7,0x3b173269,0x3b6c3e66,0x3b166859,0x3b69a1ad,0x3b5cfd6c,0x3a91da15,0xba8e3b00,0xbb88366a,0xbbab609f,0xbb9074db,0xbb270cc6,0xb9ba48ab,0x3b81e56d,0x3bf7ddf2,0x3c3b8c65,0x3be7309e,0x3b5b6f96,0xba00a935,0x3b627cea,0x3b527869, -0xb9d85b7d,0x3aa93885,0x3b59728a,0x3bc72a48,0x3bb73712,0xbc36f2f2,0xbc216ab1,0xbc04fb0c,0xbb935fb3,0x3b3a270e,0x3b8d2d1a,0x3b06755e,0xbb9d62b7,0xbb9f62d6,0xbacf3eb1,0xb85d83b5,0x3bb000d4,0x3b7db354,0x39dee9cb,0xba14659c,0xbad98372,0x3bb3cf5d,0x3bbd5ea2,0x3bf8b543,0x3c200a03, -0x3c2a63fc,0x3be40c03,0x3b6b5ad4,0xbb6d5a0c,0xbbe0342b,0xbc2762c0,0xbb9c1774,0x3b8a02a0,0x3c708b17,0x3c0b0364,0x3bb098ae,0x3b5d6814,0xbbccaaee,0xbc0a4a0c,0xbbd629a5,0xbc1fc388,0x3c0683ea,0x3c4cf2b2,0x3c06287b,0xba469baf,0xbc21b377,0xbc3a7bbc,0xbbf936eb,0xba1fd0a4,0x3b0cb3ae, -0x3ada3c00,0xbb29b304,0xbb74e27d,0xbb0da900,0x3ad3b732,0xba50ec69,0xba6700b1,0xbb16500c,0x3a3ee556,0x3a8f82b7,0xba486143,0xb99f481b,0xbac80c05,0xba75ef90,0xbaf3cbf1,0x3aa90306,0x3c243a8d,0x3bfdbda7,0x3b05ae2e,0xbbbd6121,0xbb5e0fc3,0x3a5be870,0x3c11fcbd,0x3c62e374,0x3c3d7bea, -0xbb201830,0x3b1c43c8,0xbc24bbcc,0xbccbfb72,0xbbe1c26f,0x39be5c1a,0xbc0d1ce3,0xba9d8c61,0x392659b1,0xbb16aa8c,0xba896783,0xba7526f1,0x39b604c0,0xba0f6069,0xba8e2917,0xbaa2524b,0xbafc4623,0xba807850,0x3a7db07a,0x3a9759bc,0x3a8942c6,0xb99c4bfb,0x3abc7162,0x3ac8c2f7,0x3a973f8b, -0x38f48d77,0xb98b6892,0x3ac2566c,0x3a4f23bc,0x3a14d7e3,0xbb21b25c,0x3c01b79b,0x3bddf915,0xbc1f4ebe,0xbad52b76,0xbb6a94e2,0xbbb62176,0xbba372f3,0xbc0912f9,0xbc89f4f6,0xbba9e3e0,0xbaa3b94c,0xbb08bf6b,0x3b62340e,0x3b2e5210,0xbb5c3bfd,0xbb41ed2d,0xbaee8962,0xb8029a9e,0x3a5e808f, -0x39cde914,0xbaf98bff,0xba2d6309,0xba237ed6,0x3a4fb059,0xbaa00fcc,0xbafa8e12,0xbb202651,0xba01a037,0x3a2f4014,0x3a9423a3,0x3b030e5b,0x3b03d6d3,0x3a3cc811,0x3a42cd70,0x3a813162,0x3a61b3c6,0x3c0e9943,0x3b9818ed,0xbc5ee2f8,0xbbf6bcec,0xbbe9c8f8,0xbad79921,0xbb52e233,0x3c7616cf, -0x3cc2e12b,0x3c6d8695,0x3bfede95,0x3ba95473,0x3a681c23,0x3a959533,0x3b365de3,0x3af647e8,0x3aa7aae4,0xba1b1b21,0xba8cba4f,0xb99bbfb0,0x3a7faf3d,0xb829a649,0xba512893,0xbb4b7564,0xbb680537,0xbb82d219,0xbb82fe4f,0xbb3fa052,0xbb169f72,0xba1dc4ba,0x3ac4c9b4,0x3b7d0ac1,0x3bd642ca, -0x3bae66ae,0x3b4528b8,0xbb0ac86a,0xbb9e2dc1,0xbb76c2a8,0x3af3e7f0,0x39cc8d20,0x3ac5b1f9,0x3aad18a5,0x3bceb803,0xbc74bb4a,0xbc50d98b,0xbc188639,0xbb3febfa,0xbad7f7af,0x38deb45e,0x39b31f5f,0x3adcceae,0x3ac678f8,0x3ad37c16,0x3a17b022,0x38f4d88e,0xb95f4615,0x3a3c0edd,0xbb33e3fd, -0xbb8b5770,0xbb9ec836,0xbbb2252c,0xbba0adab,0xbb8a6ee4,0xbb265584,0xba119a3a,0x39c71f85,0x3b1200c3,0x3b90699a,0x3bd82b5a,0x3c0110a5,0x3c0e1c1f,0x3c26f587,0x3c2decda,0x3c03bfd6,0x3b5f3126,0x3b86001d,0x3863aae9,0xbbc44e5d,0xbc326d9a,0x3c019249,0x3c12a904,0x3c07669f,0x3bea57df, -0x3c03f078,0x3bdeb9a3,0x3bd5e5be,0x3bca04bb,0x3bc46d1f,0x3baa90ea,0x3b5c5b57,0x3b0aa347,0xb93e0895,0xbb102f51,0xbb4241ca,0xbb3f7b44,0xbb23cf32,0xbb270a52,0xbb22921c,0xbb3470f6,0xbaec8a10,0xbaa12729,0xba2fca5c,0x3990dd3a,0x3a12ff06,0x39a7e856,0x3a0964d1,0x3a8f0f2b,0x3a8ea696, -0x3afac4ee,0x3b577c34,0x3bad11f2,0x3ba62c85,0x3bb4b09e,0x3bccacee,0x3bf998cc,0x393f4175,0xbb073bdb,0xbab3a613,0xb9c865e4,0xbaa86aec,0xb97de497,0x3987c7b9,0x3a3fe7dd,0x3a5315d9,0x3a2af947,0xb90d5881,0xba71bc23,0xbb13f94e,0xbb7b606c,0xbb815064,0xbb814c27,0xbb7243d4,0xbb63b5bc, -0xbb58640b,0xbb423771,0xbb0977a1,0xbacf48b2,0xba9a3d31,0xba62c420,0xba3feba3,0xba79abe0,0xba803140,0xba6b1cfc,0xba0da401,0xb8bc5f63,0x393c75fd,0x3a7996f8,0x3b0b8cbe,0x3b5be83a,0x3b6ff63f,0x3ab66b74,0xbb314229,0xbb5fe3ed,0xbb82d740,0xbba1b929,0xbbbcf69e,0xbba9e101,0xbb8f8816, -0xbb636db9,0xbb8f82e7,0xbb8c4fe9,0xbba106c8,0xbb851700,0xbb8ffc97,0xbb892d57,0xbb8017e5,0xbb8245fc,0xbb86a2da,0xbb7830de,0xbb68c3cc,0xbb58dabb,0xbb422ecb,0xbb1c324d,0xbaed6b71,0xbac23a14,0xba8c0e7c,0xb9a7ccf1,0xba332bc1,0xba582796,0xbaa228e7,0xba66e94a,0xba383db8,0xb9971a11, -0xba4be08d,0xbacdbc70,0xbabffe08,0xbb03ec92,0xbb84e7a7,0xbb99ade0,0xbb92ef3b,0xbb8946f5,0xbb7020bb,0xbba4756f,0xbbb4ba11,0xbbd55a91,0xbbb642b7,0xbba1182e,0xbb8fbcd4,0xbb8ca0ac,0xbb82a0c9,0xbb7a61a2,0xbb6f18e6,0xbb565a77,0xbb459b98,0xbb39e604,0xbb194244,0xbb315704,0xbb159a06, -0xbb0f8f5b,0xbafb7317,0xbac95f6b,0xba9cf564,0xba702a5d,0xba606aca,0xb9fde410,0xb9d7e1b0,0xb9ebe343,0xba11ec56,0xba2eeb17,0xbac1c7b2,0xbab4304f,0xbb210eff,0xbb672a36,0xbb2d7f0c,0xbb3d9edd,0xbb4863ee,0xbb57032e,0xbb5a2996,0xbb62b139,0xbb543487,0xbb5efa50,0xbb5a2c61,0xbb63b9d4, -0xbb5f29f6,0xbb5538c6,0xbb4767fb,0xbb3b35a9,0xbb34b2a5,0xbb372dcf,0xbb339b51,0xbb336ad0,0xbb3166e6,0xbb32e45b,0xbb252c42,0xbb1e329b,0xbb14d051,0xbb0f882f,0xbb073537,0xbaf69abd,0xbb019a9d,0xbb08ca6b,0xbb0e87ff,0xbb12116e,0xbb09e43e,0xbb05a9d8,0xbb18b848,0xbb1e215e,0xbb2ceb87, -0xbb2e45e8,0xbb811bcd,0x3a4d09b6,0x3a5142af,0x3a26a3b9,0x39f8d56d,0x39cf2d7c,0x3a42385c,0x3958a3ea,0x38cd5ee0,0x39fd0feb,0xb872ce8c,0xb96a56dc,0xb99d51ab,0x38c7dc84,0x397ea2e4,0x39314e38,0x3a038294,0x3a274f07,0x39fdcf92,0x398f18d7,0x393690c0,0x391cd776,0x3981bc7b,0x39d9b7ee, -0x3a1904e3,0x3a7164d4,0x3a8eb639,0x3aa5a1d1,0x3a72c88d,0x3a36477f,0x39ab3ff2,0x3a1f947d,0x3a306b0c,0x39d0480a,0x3a0af2b9,0x3a2329ac,0x3a65e46c,0x3a4a6e35,0x3aa97b4a,0x39372453,0x39935a9d,0x3a29a134,0x3b072355,0x390dc3c7,0xb9d048f4,0x3a19dd65,0xbac4bd59,0xbacffc74,0xbabae64f, -0xb91741fa,0x3a05ab46,0x3998238c,0x3abd2e35,0x3ad15044,0x3a99bb0d,0x38fce632,0xba217661,0xba39144a,0xb9d5d12f,0x368dc4eb,0x3a47592a,0x3add03a1,0x3b19a8b0,0x3b539634,0x3af609e3,0x3abd6539,0x3a45bf15,0x3b018cf1,0x3ad525d0,0xb9a788c4,0x394925e9,0x3a372613,0x3af3eda9,0x3af82377, -0x3b2026d1,0x3a8c0d33,0x39eea5fc,0x399d62ef,0x3b4bd0ad,0xba4641ba,0xbac26795,0x3a582e01,0xbb197765,0xbb57412a,0xbb3c4a5d,0xba6c335d,0x39eb5604,0x3812fb49,0x3ae6a3f3,0x3b0291df,0x3af2dad0,0xb9824d55,0xbab5a4a0,0xbae9bd2d,0xbaa2b750,0xb92f216a,0x3a953362,0x3b46fd7e,0x3b864fcf, -0x3bb4e6ea,0x3b515f99,0x3b0bd9a1,0x395b20ca,0x3b146772,0x3b0f6622,0xb905aefd,0x3a80b10c,0x3acca65f,0x3b561ed3,0x3b2ad763,0x3b2c045e,0xba311dfd,0xb99c32c6,0x3a47fcbd,0x3ba75fec,0xb90d62f6,0xbaecbeb8,0x3aa324e5,0xbb851f8c,0xbb7f0580,0xbb87ec0d,0xb9b8a94e,0x3b00235d,0x3a3345c3, -0x3b6c112c,0x3b778f00,0x3b36cc9a,0xb9efb959,0xbb1f9ced,0xbb618a57,0xbb116a74,0xba90ad98,0x3a492f8f,0x3b97f3fd,0x3bdaec68,0x3c0b4cd5,0x3b85cedb,0x3b5817ef,0x3a819003,0x3b91bc02,0x3b6ce578,0xbaff8865,0x3a0212c9,0x3ad4419c,0x3b9dc1fd,0x3b93dbcd,0x3bad4a4a,0x3b13dde3,0x3a8e0444, -0x39e8cbc3,0x3bb9a220,0xbb0987a9,0xbb1283a6,0x3b0b502f,0xba37f73b,0xba5c5755,0xbb24873c,0x3ad02eca,0x3b538788,0x3b0bd0d9,0x3b71c02d,0x3b7e75f5,0x3b31ea92,0xb9ca41db,0xbb663194,0xbb940ffb,0xbb5a0993,0xba9cbd70,0x3ae192ac,0x3bb5f9ec,0x3c0ba088,0x3c2fa7f5,0x3bd03197,0x3b3a6f3d, -0xba16fd35,0x3b77fd6f,0x3b7442cc,0x39a36d97,0x3b22ca19,0x3b8b1fb8,0x3bd71cc0,0x3bae5811,0xbc1fede0,0xbc15f574,0xbc11c462,0xbbbb9062,0x3ac0c23f,0x3b86ccd3,0x3b43d8d9,0xbb2cdbb4,0xbb482305,0xba8de689,0xb8ce9a13,0x3b5a9b2f,0x3b09e637,0x3aedccf6,0xbacbf662,0xbb35b19e,0x3b8a6a42, -0x3bbd9589,0x3c0ba8f0,0x3c2d55b3,0x3c258f49,0x3bce3802,0x3b1ec0ac,0xbba070e2,0xbbe45b1b,0xbc11c685,0xba6ad7fa,0x3c00ef93,0x3c76bf0f,0x3c16ac24,0x3ba164a9,0x3aaee19a,0xbbca6788,0xbbee9126,0xbb9b80a8,0xbc041603,0x3bb69fd0,0x3c50e1d5,0x3c3c7b67,0x3b3d8551,0xbc075728,0xbc36bb91, -0xbc0c5c70,0xbaf62b49,0x3a758bd2,0x3a82a23d,0xbb05939e,0xbb535ecb,0xbb243de3,0x3a931b7e,0xbaab28dd,0xba41f0a4,0xbb0ac80d,0x3ace7c72,0x3b0c2127,0x3a7a1ce1,0x385f73aa,0xba96e4c3,0x38de905a,0xb9fc3bd9,0x3b335b4e,0x3c323559,0x3bbd7ac8,0xb94c8cf7,0xbc082282,0xbb53f453,0x3af19872, -0x3c0dcf2c,0x3c5c21e4,0x3c20cff4,0xbbb2ae7b,0xba523353,0xbbec6a74,0xbcccb942,0xbc2d3595,0xbb01fbe6,0xbbf7772a,0xbb14c099,0xba9901d8,0xba81ed3a,0xba7762b9,0xba825bfb,0x39da96a5,0xb907919f,0xba4599a4,0xbae98e89,0xbb0187d1,0xba8d4df6,0x3a2486c9,0x3ad8464a,0x3b016d26,0x3a8564a9, -0x3aca5b75,0x3a8ad6b1,0x3a44538f,0xb9d6440f,0xba4e60e2,0x3ada3c12,0xb981cc70,0xba718828,0xbb14971a,0x3bc1d465,0x3ba238b4,0xbc009f27,0xba4a7acd,0xbb1edcf8,0xbbbdf3a0,0xbab068b2,0xbbb079e2,0xbc8921de,0xbbf8bf84,0xbb68b0d4,0xbae19c14,0x3b34f64d,0x3b3f1335,0xbada5a19,0xbb2a27c5, -0xbaecb55d,0xb8b5bc0a,0x3a40a3ac,0x3a062ea6,0xbaf49b49,0xba228416,0xba29daaf,0x3a6f5ff8,0xba2cb396,0xbab499c8,0xbadfd1fb,0xb93969cc,0x3a087fe4,0x3a904768,0x3a9dcc89,0x3a8dc66c,0xb9cc5f4c,0x38d042c2,0x38e521ff,0x3a7e3e74,0x3bcb6fac,0x3b0024f4,0xbc4df999,0xbbea539e,0xbbc4977c, -0xbac16a39,0x38f889f4,0x3c59f83b,0x3cc92766,0x3c8fbc8d,0x3c17a213,0x3b8bbe97,0x3ab20f5d,0x3b0b44ae,0x3b1c1e14,0x3ae941dc,0x3a9da7a0,0xb989fd96,0xba9c9ba2,0xb9f44a2f,0x3a9edc7f,0x38c9089c,0xb99e1fca,0xbb00863c,0xbb2eba33,0xbb5be180,0xbb5d9ff8,0xbb1df51b,0xbace1383,0x3a290070, -0x3af29fd9,0x3b8738c0,0x3bc0dbd5,0x3b915f7c,0x3ae3c3e3,0xbb8d9adf,0xbb9e6dd9,0xbb63d04e,0x3a990160,0xba819f5d,0xba0e5d3f,0xb9827eb4,0x3b827488,0xbc41fb9f,0xbc3b289c,0xbc1b1a28,0xbb66d4a6,0xbae5d3e5,0xba2ab740,0xb9f1df06,0x3ae08209,0x3a83c983,0x3a1903a2,0xb8bb5f93,0xba2610e3, -0xba09b04c,0x39782563,0xbb1c8394,0xbb735227,0xbba91e0a,0xbbba5d69,0xbbb3ffb0,0xbba86689,0xbb664bf7,0xbacfeaf4,0xb7d6a20d,0x3af01b5a,0x3b873648,0x3bd20164,0x3bf83f1b,0x3c083249,0x3c19dde1,0x3c1d1187,0x3bd47ac5,0x3ae51282,0x3b0baf4e,0xba5fc062,0xbbb4ecfd,0xbc0dcd7d,0x3bd0f3d3, -0x3c1277c5,0x3c080586,0x3bdbbcb3,0x3bea4a7e,0x3bbcdbaa,0x3bae9b29,0x3baa94dc,0x3ba9fa01,0x3ba35770,0x3b66634a,0x3b3c9bd4,0x3a3a991b,0xbabf5ecd,0xbb29099a,0xbb31fa8c,0xbb1f0476,0xbb091929,0xbb0138c8,0xbb0e09ae,0xbae54f90,0xbac007c8,0xba882aff,0x38a70e54,0x39f01064,0x39dc5c9a, -0x3a8ac74f,0x3ada1f56,0x3ad48e51,0x3b31a0d6,0x3b8e0536,0x3bd30cb6,0x3bbd2f5b,0x3bae522a,0x3bab1a99,0x3bc3a834,0x3a4b00e5,0xbaa5cab1,0xba632264,0x39977527,0xb909f414,0x3a699143,0x3ab757cc,0x3adffe27,0x3adc1aa2,0x3ab9c0e8,0x39ee49f0,0xb94e7aa5,0xbadb02eb,0xbb569685,0xbb70ad4f, -0xbb7c564b,0xbb748a4d,0xbb58554c,0xbb47565b,0xbb2d9483,0xbb081aa4,0xbaeee467,0xbadec4d1,0xba925bf7,0xba382ee1,0xba2888fe,0xb9acc36d,0x3896608c,0x3a346607,0x3a3ee6b7,0x3a3c83f6,0x3ab3955e,0x3b0b2b12,0x3b5116cc,0x3b62000f,0x3aff2e6b,0xbb2566ee,0xbb3f07c5,0xbb474214,0xbb6a8654, -0xbb853479,0xbb6ed044,0xbb38b2c6,0xbae95a88,0xbb43e6a4,0xbb53f77d,0xbb87a27b,0xbb68a3fa,0xbb871b46,0xbb81b612,0xbb7c42d0,0xbb802dde,0xbb889835,0xbb7d75fd,0xbb75c042,0xbb5e34db,0xbb525a5a,0xbb376831,0xbb2314fd,0xbb02503b,0xbac19a09,0xba2b8b5b,0xba8bd853,0xbaa5ead3,0xbacaf280, -0xbaaea872,0xba9ad1de,0xba4f102d,0xba99e906,0xbaf5ad25,0xbaf0a643,0xbb10f83d,0xbb9a8472,0xbbae765b,0xbbb2c5e3,0xbbab297e,0xbb9e3079,0xbbc204de,0xbbccdd1b,0xbbea6197,0xbbc6a4da,0xbbad5c16,0xbb9890f2,0xbb915541,0xbb82fb5b,0xbb7b7287,0xbb7535ce,0xbb5fde0f,0xbb58c5a6,0xbb4a2d7e, -0xbb3431d8,0xbb46dc7a,0xbb2c5041,0xbb28d5fc,0xbb17690d,0xbb07c724,0xbaf60cb4,0xbadd756e,0xbadf8641,0xbab8a465,0xbab79c82,0xbad0d4b9,0xbadc3058,0xbaff47b6,0xbb2a943e,0xbb17cc20,0xbb51cc48,0xbb88c1da,0xbb28b596,0xbb318fcf,0xbb37d03e,0xbb40e490,0xbb44038d,0xbb3eaf72,0xbb341d92, -0xbb43957b,0xbb45e2e4,0xbb5316d7,0xbb52a268,0xbb4d9798,0xbb44b0f9,0xbb38e21e,0xbb30591f,0xbb32dbc0,0xbb37f276,0xbb36ca87,0xbb3456a5,0xbb371d46,0xbb2a6619,0xbb246a2a,0xbb1b3a30,0xbb1518c3,0xbb0ad119,0xbafca517,0xbb06c92e,0xbb0e1a0c,0xbb160ef2,0xbb1975db,0xbb11c3d1,0xbb109ee5, -0xbb1e5bc7,0xbb2165e8,0xbb2fcff1,0xbb2e53a3,0xbb77d153,0x3a8155ed,0x3a5ea3f7,0x3a3af1f4,0x3a1a2b83,0x3a057752,0x3a688304,0x39987a88,0x39463ceb,0x3a131666,0x3629c4c0,0xb9248e29,0xb947113a,0x39310cd6,0x39afa76f,0x399a0f42,0x3a2158a8,0x3a48bad0,0x3a3a6833,0x39f14c08,0x39c2409c, -0x39a8aef8,0x39e31a20,0x3a21dc4b,0x3a5d4344,0x3a96204d,0x3aa5977e,0x3aacb95d,0x3a849fbf,0x3a490fe9,0x39e551a2,0x3a412c66,0x3a5446b1,0x3a0ff841,0x3a343532,0x3a498f80,0x3a82a8a0,0x3a5dae9a,0x3abfdc2e,0x39a9c1dd,0x39548e5e,0x3a0f1d8e,0x3b0d5f2d,0x38c67ae2,0xb9e16b31,0x3a0c0127, -0xbad16e18,0xbae23ba5,0xbab7cb4c,0xb98d0076,0x39c3e33f,0x39aa38f7,0x3ac03776,0x3adc7c06,0x3ac6f17a,0x39d43217,0xb9b56001,0xb9f4c2f0,0xb8c00002,0x39de992c,0x3ab5ac96,0x3b07cb3a,0x3b2766e6,0x3b4f039f,0x3b004581,0x3ad5895c,0x3a8fb2e3,0x3b075991,0x3adeed83,0x38701be2,0x3a2efd15, -0x3a9d3f43,0x3b17112c,0x3b0ea123,0x3b166163,0x3a870eb8,0x39a821ad,0x3923d91f,0x3b4df240,0xba79de3c,0xbae4c502,0x3a1b3bde,0xbb37c4e0,0xbb6ddeec,0xbb4398f9,0xbaaaeb46,0x38b62e7a,0xb7f2be84,0x3ae22080,0x3b07a47f,0x3b188aea,0x392dfca1,0xba676051,0xbaadb2d5,0xba366a76,0x3a047c23, -0x3b0e158c,0x3b76a8e3,0x3b94f1b2,0x3baa005f,0x3b4e725f,0x3b072ced,0x39eb8c35,0x3b1a2f96,0x3b1ae244,0x399d77ee,0x3ac80f7d,0x3b06f3e6,0x3b6bc23b,0x3b2e9967,0x3b3a2e3d,0xba1b02a3,0xba66cf5d,0x38865994,0x3ba6d704,0xba3ac186,0xbb1cf591,0x3a36780b,0xbba2ea8e,0xbba7fd2b,0xbb9e83d1, -0xbaa0d598,0x3a9f94b1,0x39daaa03,0x3b5fc172,0x3b702294,0x3b65abc0,0x386376d8,0xbb004540,0xbb44c2d3,0xbac24b30,0xb9214465,0x3b19eeaa,0x3bb6a58f,0x3bebcd83,0x3bff7fd4,0x3b840530,0x3b5fb0d9,0x3af220b5,0x3b8c350d,0x3b69f7f2,0xba8fc1b1,0x3aca843b,0x3b31a84d,0x3bb96d0f,0x3ba1f16d, -0x3b923734,0x3b00d494,0x3a20fed6,0xb83e150b,0x3bc1581e,0xbb38ef8c,0xbb58e2c8,0x3a937e67,0xbb1a407a,0xbb3034db,0xbb836eac,0x3a2dfd74,0x3b29eb83,0x3b04bc29,0x3b6cdf02,0x3b87f5d2,0x3b7cb10f,0x398451da,0xbb2ce296,0xbb71394c,0xbb14a906,0x38dd87c8,0x3b774549,0x3be4aaff,0x3c17770e, -0x3c1f94ff,0x3bbbdb14,0x3b1ff069,0xb9d15305,0x3b7bacc3,0x3b7ebb39,0x3a84b029,0x3b61b1dd,0x3ba1dbf3,0x3be16444,0x3ba6ddf9,0xbbfabc3e,0xbc025880,0xbc14b400,0xbbd49e2a,0x39dae54f,0x3b8269ff,0x3b8053a4,0xb954def5,0xbaa9a1a9,0xba6b3aea,0xb9d537c2,0x3aa9546d,0x3a1d4780,0x3b3e7c77, -0xbb285a7a,0xbb80c336,0x3b1dfd5d,0x3b9f6e23,0x3c06fe3a,0x3c2528fd,0x3c0c8639,0x3b9e1436,0x3a10406e,0xbbc2a64e,0xbbd88c97,0xbbfa2e5d,0x3b5c93c2,0x3c3dd22b,0x3c7402d8,0x3c1ae090,0x3b83999a,0xba929444,0xbbc7d56c,0xbbcb9deb,0xbb66d38c,0xbbc61c69,0x3b343a0f,0x3c403553,0x3c6a9a3d, -0x3bcd84fd,0xbbd7deb1,0xbc2d68d3,0xbc16ccb1,0xbb4a25ac,0xb9b75ec4,0x39a9dcb5,0xbad4b69b,0xbb29ab23,0xbb2e0a1e,0x3a0ec592,0xbac73663,0xb9c3877f,0xbad055a2,0x3b103434,0x3b37a07b,0x3b1fb4a4,0x3987c93e,0xba30d672,0x3a9c3edb,0x3a997a44,0x3b8999bb,0x3c29cdb4,0x3b6feb4f,0xbb0fd567, -0xbc3019cf,0xbb41f7f4,0x3b38361b,0x3c03d9a9,0x3c41c979,0x3becac16,0xbc004da7,0xbb63fd09,0xbb97c995,0xbcc09116,0xbc6a0990,0xbba8895a,0xbbaf7b0f,0xbb79b108,0xbb4da772,0x37a73be1,0xba486898,0xba5c114d,0x39c62a94,0x3914c448,0xba08bc4c,0xbb149e46,0xbaf45c63,0xba89d473,0x394696f1, -0x3b0466b7,0x3b3a3645,0x3b1098bb,0x3ad4bd1e,0x3a1a2921,0x399f6b79,0xba66df0d,0xbaa4ade1,0x3aacd00d,0xbaa782ec,0xbb0bce9c,0xba9ab4d0,0x3b60d577,0x3b220561,0xbbbd86e0,0x39ee31f2,0xba39f229,0xbbd04e50,0x3acbbce1,0xbb4e20a2,0xbc872be4,0xbc27e398,0xbbc42eed,0xb8f4eebe,0x3ac52a6e, -0x3b2c3fa3,0xb89127bb,0xbb0a08af,0xbadef850,0xb926eece,0x3a00bfc8,0x39ffaece,0xbaec38d4,0xba244c83,0xba3b9b66,0x3a63533d,0xb82f4b84,0xba226080,0xba366f03,0x39976a1c,0x39d6653b,0x3a83c430,0x3993ae6c,0x38480876,0xbab6f576,0xba0b709d,0xb9ef35eb,0x3b159d94,0x3b631922,0xba8835a9, -0xbc332b5f,0xbbbc76b6,0xbb806fed,0xba86801a,0x3b33ec2e,0x3c2478ad,0x3cb5a9f1,0x3c9fd69e,0x3c309a8b,0x3b7a7ea1,0x3b0dc010,0x3b58bc1d,0x3b0fc31d,0x3ac46b61,0x3a5ced4a,0xb8f25c6b,0xbaa000d0,0xba08fd9f,0x3a904777,0x3973be51,0x396c1fdf,0xba3bee39,0xbadda7cd,0xbb2a454d,0xbb2bf02c, -0xbafc3304,0xba6265f8,0x3aec8ad5,0x3b0c048e,0x3b88b764,0x3ba3d4e5,0x3b6abcc5,0x3a4e81a7,0xbbb4cbd4,0xbb85af13,0xbb2603ff,0x3a647ad7,0xbb0df879,0xbb112b94,0xba21e02a,0x3ad1bd6e,0xbbfd089c,0xbc1899cc,0xbc173807,0xbb88fac6,0xbaf4a2fc,0xba931bba,0xba84a9da,0x3ae32730,0x3a02a55d, -0xba03ba9b,0xba56dce0,0xbaa1d4b5,0xba428114,0xb9b6e0fd,0xbb018a63,0xbb4d4336,0xbbaff22d,0xbbbe651f,0xbbbf7a5f,0xbbb7ba23,0xbb8c251c,0xbb289597,0xba01bbec,0x3ab74b8c,0x3b74d9ab,0x3bb82d76,0x3be6bb10,0x3c0141f2,0x3c0f8097,0x3c0a3611,0x3ba1b752,0x3a2a94a4,0x3a4ce323,0xba92ccc2, -0xbb947138,0xbbb89aed,0x3b89fdf6,0x3bfb216a,0x3bf30e83,0x3bb6c7e5,0x3bb73f5d,0x3b8ca429,0x3b7cba98,0x3b7ecec4,0x3b81cb8b,0x3b8aeb31,0x3b565cdc,0x3b59bdd0,0x3ac1278c,0xba318cf3,0xbb07a00b,0xbb2235b2,0xbb1f95f8,0xbafaa988,0xbade7549,0xbade2409,0xbadccf48,0xbac9cb07,0xbaa3628e, -0x38e17920,0x3a2ff890,0x3a801d9e,0x3b02d77d,0x3b2742ed,0x3b1d31ed,0x3b7accee,0x3bb5ad22,0x3bf8d685,0x3bcd955c,0x3ba5b33c,0x3b9275a1,0x3b862939,0x3ac01190,0xb9a7e3a2,0xb9947873,0x3a6e897b,0x3a860e2e,0x3b02c40f,0x3b21bb59,0x3b2ff446,0x3b24f6aa,0x3b0eb44e,0x3a90d9cd,0x3a0ddd28, -0xba849a9c,0xbb2a7c5a,0xbb536604,0xbb6ca0d2,0xbb6fcba7,0xbb4cbab4,0xbb387e12,0xbb195010,0xbb0381c5,0xbafa17fa,0xbb04b5dc,0xba9b285b,0xba03f518,0xb8eeb3d8,0x3a06cba3,0x3aa4c229,0x3b0cd17d,0x3afb86ab,0x3adb495f,0x3b1212d2,0x3b1d47f8,0x3b45eb07,0x3b4ced2b,0x3b208002,0xbaff865b, -0xbb025e87,0xbae203ce,0xbaed1fb2,0xbb01862a,0xbae0f75d,0xba737d73,0x3913c0b1,0xbaa75de4,0xbaf577e6,0xbb4121af,0xbb35552f,0xbb6befaf,0xbb6c7284,0xbb6b2f96,0xbb6f52a0,0xbb831699,0xbb745b6d,0xbb71162a,0xbb5a6df1,0xbb57f1f6,0xbb461fc9,0xbb3fe8e7,0xbb1865f4,0xbaea585e,0xba8063d0, -0xbaac0855,0xbac20b81,0xbacac8dd,0xbaca6f96,0xbac478b7,0xbaa230f9,0xbac57028,0xbafe983b,0xbaf9e533,0xbb04a82e,0xbba28546,0xbbb2e470,0xbbc35be5,0xbbbe05fa,0xbbb5d7ad,0xbbcfe52a,0xbbd52842,0xbbef0405,0xbbca7c2f,0xbbb0fa2b,0xbb9bdad2,0xbb91ff65,0xbb811097,0xbb79e59b,0xbb762e8c, -0xbb63e5d8,0xbb62a13c,0xbb556b84,0xbb455ec1,0xbb564840,0xbb3b65e7,0xbb3901d4,0xbb2764f5,0xbb1f16a4,0xbb182ad6,0xbb0ec9bd,0xbb19daf0,0xbb10159e,0xbb16be38,0xbb2a910b,0xbb2acbc9,0xbb429874,0xbb5f9415,0xbb449e65,0xbb70e670,0xbb92b289,0xbb20a2c2,0xbb213b3a,0xbb209cf5,0xbb22bd75, -0xbb24d79a,0xbb1571ed,0xbb0d1a77,0xbb1e8c54,0xbb289b19,0xbb3847cc,0xbb3c2c8f,0xbb3c8b92,0xbb3971f9,0xbb2fffa6,0xbb28c1a1,0xbb2cefb0,0xbb32b174,0xbb322101,0xbb3181ac,0xbb374703,0xbb2beaf9,0xbb279773,0xbb1f6029,0xbb1950ce,0xbb0ea82c,0xbb024961,0xbb0c099e,0xbb11905a,0xbb1aa5c0, -0xbb1edd15,0xbb1a3522,0xbb1e9819,0xbb2595a8,0xbb23c2a5,0xbb2ef3f0,0xbb2a2236,0xbb70c9db,0x3a963887,0x3a691fe4,0x3a4e7614,0x3a37cae2,0x3a1e5b53,0x3a7bdc0b,0x39bbd8b8,0x39886308,0x3a1f1556,0x387c701b,0xb8b314d6,0xb8771590,0x396e246d,0x39cd68fc,0x39c3eabf,0x3a348782,0x3a600908, -0x3a623923,0x3a1ef9c7,0x3a0d3278,0x39f511c6,0x3a1a677a,0x3a4d7f1e,0x3a8b371c,0x3aae4752,0x3ab6eaf5,0x3aad4994,0x3a8b33dc,0x3a56392a,0x3a114689,0x3a5a0ac1,0x3a6be4c2,0x3a2f91c7,0x3a530c54,0x3a663de3,0x3a8f5c97,0x3a6d6839,0x3aced934,0x39f96467,0x393279e4,0x39ff43c8,0x3b09c652, -0x389647e0,0xb9e43ffa,0x39e174aa,0xbad91917,0xbaeab218,0xbaa79eff,0xb9cffdd4,0x394f9261,0x39969292,0x3ab8a9b1,0x3adc74b9,0x3adc660b,0x3a2fc23a,0xb885fc18,0xb9864e47,0x393e818b,0x3a4c0d06,0x3afbdf3b,0x3b1ae5ef,0x3b2edd70,0x3b43268f,0x3b0257e4,0x3ae9d868,0x3ac09ec5,0x3b05721b, -0x3ad7e441,0x39e2ac3b,0x3a914aeb,0x3ada21ea,0x3b31bb7e,0x3b1ad137,0x3b0f0650,0x3a866a22,0x39ab6dc4,0x39092257,0x3b3e4e5a,0xba8d0b50,0xbaf7e774,0x39a01ca8,0xbb4cce1e,0xbb79d682,0xbb3bcb09,0xbad79e94,0xb99f74a3,0xb9509b77,0x3ad3962f,0x3b06a2fc,0x3b240a82,0x3a102737,0xb9bc36f2, -0xba6a7ab0,0xb950e39b,0x3a8df314,0x3b48980d,0x3b8ee3cb,0x3b9f2711,0x3b9995b0,0x3b4a8541,0x3b030503,0x3a57bde9,0x3b16cf41,0x3b1aba7f,0x3a316dbd,0x3b00d04f,0x3b222261,0x3b7f1c94,0x3b326afd,0x3b43de16,0xb9e0319a,0xba9f93e9,0xb9e46f43,0x3b9a3d3c,0xba993ce1,0xbb39610c,0x3901bb0b, -0xbbbb87b1,0xbbc88d82,0xbba312b7,0xbb09476f,0x39ba03fb,0x381198e8,0x3b482b59,0x3b5c7179,0x3b74206b,0x3a1aa33d,0xbab662ac,0xbb25a90a,0xba57939d,0x3a2ecffb,0x3b76610f,0x3bcd3c32,0x3bf41a83,0x3be160e1,0x3b82ef15,0x3b683977,0x3b3c650f,0x3b7ca260,0x3b542280,0xb94aec2b,0x3b249dc7, -0x3b757076,0x3bd42c5d,0x3baa6652,0x3b784485,0x3ae7cfe3,0x39cc2c17,0xb9aab9cf,0x3bb8154a,0xbb5c275a,0xbb87ee40,0x3981eee6,0xbb7afc59,0xbb8e9ae1,0xbb9cf9b0,0xb9ddad23,0x3ae2d184,0x3aefc50e,0x3b5c937f,0x3b893c9f,0x3b92ec27,0x3a636b01,0xbad25d02,0xbb35a9d6,0xbaa0553e,0x3aa88db1, -0x3bb74016,0x3c061c89,0x3c1ee88e,0x3c0bdd33,0x3bad4c98,0x3b142897,0x38bc4cbe,0x3b714875,0x3b750727,0x3acd2bdb,0x3b890ea2,0x3bb308ce,0x3bea6f7b,0x3ba25f3d,0xbba4e3bc,0xbbcfa25c,0xbc0aa31d,0xbbd5bbca,0xb93611db,0x3b84c6a1,0x3b9febf7,0x3b14edca,0x398ed458,0xba86a081,0xba6aa37d, -0xb9e96a16,0xba0cd4f3,0x3b757f20,0xbb64ff85,0xbba45cb0,0x3991b48e,0x3b41ada7,0x3bd7f6a3,0x3c04595d,0x3bc28547,0x3b34b1ae,0xbadc9597,0xbbe0be97,0xbbc9aa6b,0xbbdf1d97,0x3bdc47d0,0x3c67a0c2,0x3c62e332,0x3c1493f2,0x3b3cf2a7,0xbb60c424,0xbbbf5c90,0xbba8f1c6,0xbb39386d,0xbb777496, -0x3a089727,0x3c216772,0x3c831ffa,0x3c108a12,0xbba2283e,0xbc230eef,0xbc1e8e86,0xbb88d2b0,0xbabd8d57,0xb8c46a68,0xbab2107f,0xbaffa4dd,0xbb2d909a,0xb9141f7a,0xbabba194,0x392437a2,0xba5e29a6,0x3b2bf885,0x3b4ca96a,0x3b6ad30c,0x3a03b30d,0xb8177ad0,0x3b0f374b,0x3b4dbcaf,0x3bb8c574, -0x3c0f2953,0x3abfc6e0,0xbb828968,0xbc4ee3ca,0xbb265e9e,0x3b703c36,0x3be43e7d,0x3c189775,0x3b83414c,0xbc1d8dfc,0xbbab7a4d,0xbb55e1e4,0xbcae5e85,0xbc8c560c,0xbc04975f,0xbb20d227,0xbbadc8eb,0xbbaf3353,0x39cb3712,0xba1aceff,0xba11d638,0x399df4a5,0x39861082,0xb9d393bd,0xbb2a6fff, -0xbae04b5f,0xba823b24,0xb9b5730d,0x3b0bf32b,0x3b5b95ff,0x3b45bfec,0x3ad1d7ac,0x39137814,0xb982837e,0xba9db08f,0xbacd6e1d,0x3a2073e8,0xbb0d3588,0xbb41b52e,0x3a164112,0x3a843efe,0xb983a71c,0xbb85397b,0x3ab7d84e,0x3a76d985,0xbbcce119,0x3b363586,0xbb1705c9,0xbc8734fd,0xbc4b8796, -0xbc000e7a,0x3b1e4283,0x39211890,0x3afa7ce2,0x3a9d9188,0xbad35b1d,0xbac268f4,0xb9411aa0,0x39596853,0x39ac94bc,0xbae09a38,0xba38c3c6,0xba585422,0x3a31deb5,0x39ef7c76,0x392f15dd,0x394b1831,0x3a37d1f7,0x398b9bb7,0x3a372cd8,0xba39d5dd,0xba847ae2,0xbb0e73c3,0xba84fa51,0xba181dac, -0x3b8f897e,0x3a6d9a24,0xbb81db20,0xbc18fa28,0xbb88c666,0xbab694c6,0x3a1864fe,0x3b832824,0x3bc7ba70,0x3c8c529a,0x3ca2adf1,0x3c44e601,0x3b87705e,0x3b3f2fd9,0x3b89eb85,0x3b1d01e3,0x3aa18cf9,0x39e31920,0xb88418ea,0xba967363,0xb9f98613,0x3a2afff5,0x39ba673e,0x3a3e62a8,0x39f1666e, -0xba3a7230,0xbae4a35b,0xbaf1ba13,0xbabba98a,0xb923d558,0x3b34d9c4,0x3b26175c,0x3b85dab8,0x3b841833,0x3b3b1013,0x394f590b,0xbbc71787,0xbb3807af,0xba99c266,0x3a7dbbbf,0xbb3ffa20,0xbb58e314,0x39f1f791,0xb9e52c9e,0xbb6c5748,0xbbd833de,0xbc0c6c46,0xbb9a12c4,0xbb0a2ea7,0xbaa5c19d, -0xba9df1e7,0x3ad8772b,0x38b2be71,0xbab2364a,0xbabf036a,0xbad9306c,0xba645447,0xba585c55,0xbacaa999,0xbb279d83,0xbbaf7da2,0xbbbdec7d,0xbbc325c2,0xbbb9a2e2,0xbb9a1830,0xbb5e6aa4,0xba901303,0x3a813b03,0x3b59aa2a,0x3b98fbe7,0x3bd2e94a,0x3bf2edf8,0x3c0a0836,0x3bebbcef,0x3b6304fa, -0x3914c983,0x37d5ed49,0xba8889ba,0xbb636b34,0xbb2bfe0d,0x3ae13702,0x3bb186f0,0x3bbc0df8,0x3b84dbcb,0x3b797477,0x3b31e0ab,0x3b1ef6bd,0x3b229fb0,0x3b2cad60,0x3b505b96,0x3b3046cd,0x3b5dbca5,0x3b038029,0x381aa02c,0xbac334c2,0xbb0f4035,0xbb1ff496,0xbb01c517,0xbae34914,0xbac11fd5, -0xbad3791d,0xbab81757,0xba9defde,0x39caa6f9,0x3a9b8d52,0x3b0090b1,0x3b55c15b,0x3b75046f,0x3b626642,0x3ba64de2,0x3bdbccb6,0x3c0b6ba6,0x3bd89ee1,0x3b9ca759,0x3b7098c2,0x3b0c3059,0x3b0df6ea,0x3a3e302d,0x39c7bafa,0x3ac0c33c,0x3b072f08,0x3b424295,0x3b5aaa2b,0x3b654a78,0x3b52717e, -0x3b3c4a8e,0x3aee1974,0x3aa78014,0xb99f2f4b,0xbaeb8f78,0xbb2b4694,0xbb53223a,0xbb65eb7c,0xbb42ff3d,0xbb2d8516,0xbb0a95b3,0xbaf7aa31,0xbaf39db7,0xbb0a7e35,0xba8def91,0xb9538a03,0x39efe402,0x3ab5765c,0x3b22d360,0x3b70e3b2,0x3b5832fb,0x3b3e3584,0x3b625514,0x3b4bb8bd,0x3b4d7f73, -0x3b417ece,0x3b3df755,0xba5d3fa5,0xba2ce293,0xb93b3153,0x38eebe44,0x391476cb,0x398ddef0,0x3a7b268a,0x3b0064be,0x3a00c644,0xb9c46ecc,0xbac053fe,0xbae84fc3,0xbb3beae6,0xbb4c9423,0xbb518973,0xbb5554eb,0xbb723b29,0xbb61a1e2,0xbb60921a,0xbb4f6fee,0xbb52b92d,0xbb482fc3,0xbb4a680c, -0xbb24393f,0xbb06c31d,0xbab4142b,0xbabe381e,0xbac35072,0xbaa3e736,0xbab90407,0xbabe7704,0xbab2d47c,0xbac65c23,0xbac90848,0xbaaed60e,0xba9ede8a,0xbb9f124e,0xbba89133,0xbbc26f66,0xbbbda7cf,0xbbb92320,0xbbc90b29,0xbbc92eff,0xbbdeb266,0xbbbf6e8e,0xbbab4f61,0xbb9aadfc,0xbb913042, -0xbb807b74,0xbb7ff751,0xbb7a29d9,0xbb694a81,0xbb6b12c3,0xbb5f450a,0xbb55c974,0xbb5f0541,0xbb42d1cd,0xbb40bb69,0xbb2e8b13,0xbb299f85,0xbb226512,0xbb171424,0xbb3059d9,0xbb3105f4,0xbb412d78,0xbb599869,0xbb537584,0xbb6c0002,0xbb7976a7,0xbb5f04a8,0xbb80b738,0xbb93b271,0xbb15048c, -0xbb0f4b38,0xbb0ae074,0xbb0874e7,0xbb096b4e,0xbae657ef,0xbada6806,0xbafb31d3,0xbb0e8e16,0xbb1ed7da,0xbb267aaf,0xbb2c66ad,0xbb2fb6fa,0xbb2abcf5,0xbb25d637,0xbb2a98f8,0xbb2e3196,0xbb2e3050,0xbb2e0af4,0xbb348214,0xbb2c5ce4,0xbb2a2347,0xbb23c12f,0xbb1f8312,0xbb16d3ab,0xbb0b8404, -0xbb1540c6,0xbb1688f1,0xbb1ea86b,0xbb22b325,0xbb21166b,0xbb2ae6f5,0xbb2b5f61,0xbb2341e3,0xbb27bca4,0xbb1f7f3f,0xbb731f1e,0x3a9c58be,0x3a680476,0x3a52f312,0x3a48cff2,0x3a306bb8,0x3a7f8d05,0x39c3a079,0x399ec54c,0x3a2475f6,0x390ea1ab,0x37a15fbe,0x38d48cca,0x399d3cf0,0x39eba6f4, -0x39e0ed9a,0x3a3cd22a,0x3a659b69,0x3a7d8046,0x3a3a3b23,0x3a293351,0x3a0d1505,0x3a30c2a9,0x3a639fed,0x3a9a3261,0x3ab8f2be,0x3abb1448,0x3aa1a3e5,0x3a875009,0x3a523fe8,0x3a232f34,0x3a5ee39d,0x3a6c8a08,0x3a39bb01,0x3a5d6caa,0x3a6f341b,0x3a92d9de,0x3a6f2794,0x3acdbd7a,0x3a189fa8, -0x396bdb5a,0x39e6b899,0x3af7271a,0x3882d52b,0xb9df02b6,0x39699a47,0xbadf823c,0xbaee8e96,0xba98aee7,0xba10334f,0xb7761ea4,0x3929b86f,0x3aab716d,0x3acfbd4e,0x3ad96c28,0x3a63910c,0x3958debe,0xb8e1ffdc,0x39be5879,0x3a82d705,0x3b1398f2,0x3b22fb9d,0x3b2c6cac,0x3b2d5df1,0x3afd42f3, -0x3af32249,0x3ae5c43e,0x3af0a923,0x3ab90cc6,0x3a303b1f,0x3aba44a8,0x3b02df80,0x3b42935f,0x3b1c1057,0x3b0706f2,0x3a8a42ea,0x39e62370,0x3920ae71,0x3b1bd819,0xba946e86,0xbafb564d,0xb909b2f1,0xbb57b8f6,0xbb7d02cc,0xbb2cf0d5,0xbafbd3f8,0xba32fa49,0xba041824,0x3abd49aa,0x3afe92c3, -0x3b1b999f,0x3a62b4e0,0x38f14f5a,0xba044860,0x395a864d,0x3ac5cc46,0x3b700bc7,0x3b99d495,0x3ba13255,0x3b82c1f9,0x3b41a619,0x3af89d67,0x3a9e26b3,0x3b08516a,0x3b0ca5ef,0x3a6881fc,0x3b137c2e,0x3b34a77b,0x3b84c28a,0x3b322e4e,0x3b3f3aee,0xb92b654c,0xbaa3157a,0xba3a790a,0x3b80e637, -0xbabcb56b,0xbb48e430,0xba1eb5e1,0xbbcedc13,0xbbe22106,0xbb9e8499,0xbb40aa1d,0xba086998,0xba0af857,0x3b2ae7ac,0x3b3fb1b0,0x3b62084c,0x3a8b9aac,0xba502e81,0xbb04487d,0xb9954525,0x3aa6ba72,0x3b9bf777,0x3bd7895d,0x3bf0f8fd,0x3bbba59b,0x3b80d3a1,0x3b6e3beb,0x3b79df66,0x3b4df3ed, -0x3b2905ea,0x39fb42e5,0x3b55c087,0x3b9586bf,0x3be74de7,0x3ba9d90e,0x3b536d4c,0x3ade996f,0x39d5c8c4,0xb9ecb76b,0x3b9c5acf,0xbb6fd345,0xbb9bc6bf,0xba1d48fa,0xbba611e9,0xbbbc1975,0xbb9f2256,0xbac6f3a6,0x3a34c01f,0x3abb4312,0x3b448da7,0x3b83d49d,0x3b956935,0x3ab249d2,0xba03514d, -0xbaee2b66,0xb95cd275,0x3b14e7be,0x3be2c522,0x3c129f96,0x3c1ee606,0x3be859e3,0x3ba0bfa3,0x3b124ae0,0x3a45e1ca,0x3b57d5f5,0x3b56c321,0x3af17766,0x3b99183a,0x3bbe2b58,0x3bee1b03,0x3b9d56fe,0xbb0a5a7d,0xbb92cbb8,0xbbe0ae30,0xbbb52829,0xb9ac147a,0x3b90c6d4,0x3bc21d97,0x3b96da6d, -0x3ad4c3dc,0xbaa9dba1,0xbaba63ba,0xbad8e7c3,0xbaaa8dae,0x3b8ef3ee,0xbb8a73af,0xbbc03721,0xbafe82fe,0x39c754cc,0x3b795232,0x3b97cb97,0x3b22e514,0x3986bc00,0xbb87a9da,0xbbfe5c4e,0xbbbf9aa3,0xbbd0c435,0x3c0d7b3d,0x3c752d3d,0x3c43bfc1,0x3c01d403,0x3aca0a5c,0xbbaf6371,0xbbb2f5ed, -0xbb8747e4,0xbb223395,0xbab4c39b,0xba66a9ae,0x3bf71f73,0x3c86d602,0x3c28d13c,0xbb526e71,0xbc1af14b,0xbc278523,0xbba3c9ff,0xbb0ee992,0xb9339865,0xba938cdf,0xbab330c7,0xbb2439cc,0xba6e26c2,0xba903f55,0x3a3e4b71,0xb61cf53d,0x3b38c295,0x3b5239c6,0x3b91ad0b,0x3a716a49,0x3a565914, -0x3b495e08,0x3ba7fc1a,0x3bdbe658,0x3bceeb97,0xba2e41a9,0xbbb2f230,0xbc5e90ef,0xbaf3a0a3,0x3b901a09,0x3bb98a9d,0x3bd313db,0x3a351e91,0xbc2f5724,0xbbc439a4,0xbb5ed800,0xbc992d62,0xbc987107,0xbc24d1a0,0x3919858a,0xbbd1f742,0xbbf08e28,0x364e1ac6,0xb9ef8f9c,0xb94e7539,0x39499eea, -0x39956725,0xb9c29697,0xbb333f0d,0xbacf63bb,0xba7b6b78,0xba6d7232,0x3afc2bd1,0x3b59cf48,0x3b53bb42,0x3ab5bc60,0xb97d9456,0xba640f5e,0xbab41541,0xbae8517b,0xb9dfa926,0xbb3a0da0,0xbb5f0776,0x3b1bd9b0,0xba93d5cd,0xbb3c5ad7,0xbb4068cd,0x3ab5d0ad,0x3ae52661,0xbb9b4e20,0x3b062e7d, -0xbb285cff,0xbc857aa8,0xbc60441f,0xbc0e0de9,0x3b9d5f6c,0xba68d907,0x3a84b778,0x3af84198,0xbaa05d21,0xba9716d2,0xb9358274,0xb7b51e63,0x38c33488,0xbacf60c9,0xba61b249,0xba7d38e0,0x39c8c786,0x3a3df329,0x3a47383f,0x3a199a70,0x3a64f585,0x388cafb7,0x395d05aa,0xbad3e1a0,0xbb02a861, -0xbb3ae501,0xbaae6c44,0xb9cc5631,0x3bd8942c,0xbabe5ecf,0xbbda1966,0xbc04e706,0xbb3b8e32,0x3a8df714,0x3b6128a2,0x3b810945,0x3b30acac,0x3c2b1bf7,0x3c96c89a,0x3c4e5ad5,0x3ba731ed,0x3b5896f9,0x3b937a94,0x3b42c57a,0x3a8f4819,0x394d09f4,0x3791b2ff,0xba7d9cf0,0xb9d2836f,0xb6564b1f, -0x39f48324,0x3a9697a1,0x3abfce86,0x393ce166,0xba60260e,0xba8f9a37,0xba5fbb9b,0x3a122097,0x3b61a547,0x3b48c9f3,0x3b7d5a2c,0x3b41785a,0x3b10d715,0xb8a38a3d,0xbbbf7605,0xbab7b258,0x38f76859,0x3a833887,0xbb31bff4,0xbb4f4b58,0x3b138001,0xbab85f32,0xb9766f97,0xbb65db6c,0xbbf25518, -0xbba0c47e,0xbb1dc01a,0xba91190e,0xba88bcc0,0x3ab18bee,0xb96ea9c9,0xbaee549a,0xbaee4f81,0xbaf95472,0xba713c80,0xba882745,0xba938ebe,0xbb039ba2,0xbba44798,0xbbb7830f,0xbbbf14da,0xbbb2cf96,0xbb9def0b,0xbb80e54f,0xbadb2c78,0x3a0c9bbe,0x3b3a0b50,0x3b800300,0x3bc0a1c2,0x3bdfe138, -0x3c02d6c0,0x3bbeade8,0x3b09b658,0xb933ebae,0xba054fc8,0xba8738b9,0xbb2f20cd,0xb91d6e81,0xba49820a,0x3b29a592,0x3b685049,0x3b1abd4e,0x3b0b4d48,0x3aaa1ca0,0x3aa0ba71,0x3aa42620,0x3ac3c19b,0x3b04db0a,0x3af2ba6e,0x3b4992ae,0x3b13af7b,0x3a200ca9,0xba68a8c3,0xbaee7a72,0xbb19f604, -0xbb0fd172,0xbb034743,0xbac9aab9,0xbac7ea01,0xba8c4a97,0xba7482b8,0x3a78f446,0x3b0240cf,0x3b4cbbb4,0x3b9817c1,0x3ba789e5,0x3b9e4aab,0x3bcef6c1,0x3bf878ca,0x3c1051d5,0x3bdb70f8,0x3b92cffe,0x3b2ba6ed,0x398e1fd5,0x3b2f43bd,0x3ae93b1e,0x3a8fd64a,0x3afeaee1,0x3b3e0332,0x3b70ee2b, -0x3b8034d8,0x3b81632e,0x3b6de313,0x3b5d0963,0x3b21ebca,0x3afd94ea,0x39e49b5f,0xba60c18a,0xbaf0f4c0,0xbb2f3495,0xbb56a84f,0xbb3933bc,0xbb2522e0,0xbb02a05d,0xbaebb202,0xbae2d347,0xbb03be12,0xba5fce14,0x391d474c,0x3a7be31f,0x3b0e4009,0x3b69a891,0x3ba5f8d0,0x3b9695b0,0x3b8697a7, -0x3b97a630,0x3b828e33,0x3b63786c,0x3b40d74a,0x3b51d032,0x3a292894,0x3a5d2adc,0x3aba7013,0x3afa3299,0x3b03d9ef,0x3b02bdfc,0x3b2443e4,0x3b5a782f,0x3b031230,0x3a806129,0x3865b479,0xba43155f,0xbb023483,0xbb2323cd,0xbb306e95,0xbb34913c,0xbb590ce5,0xbb485fca,0xbb47693e,0xbb3dee3f, -0xbb43cb59,0xbb3e877e,0xbb44612c,0xbb25f403,0xbb134dd3,0xbae43cec,0xbabdd4f9,0xbaa9a265,0xba3ee5c1,0xba78ba35,0xba8281a4,0xba86f76c,0xba8c1f16,0xba26184c,0xb903699c,0x391783b2,0xbb921b0c,0xbb93454f,0xbbb09d21,0xbbac139e,0xbba9acfd,0xbbae8ebe,0xbbaad928,0xbbba537c,0xbba710fa, -0xbb9c40fd,0xbb94dc31,0xbb8ed8fb,0xbb82711e,0xbb87ec24,0xbb812540,0xbb6ef9e7,0xbb7036b0,0xbb62f483,0xbb601d1f,0xbb5ad771,0xbb3e2c18,0xbb3cbd3b,0xbb2abb85,0xbb265646,0xbb1b105d,0xbb0ba29c,0xbb3229ec,0xbb390f37,0xbb503501,0xbb68fbd1,0xbb5d707f,0xbb711022,0xbb7181e4,0xbb622ad0, -0xbb803ffe,0xbb8c2320,0xbafffe6f,0xbaf009d7,0xbae8860b,0xbae193f2,0xbae6f9d4,0xbaaead78,0xbaab1d11,0xbac6f67e,0xbaf1680e,0xbb0851de,0xbb12cf35,0xbb1d67ff,0xbb2692dd,0xbb27e63a,0xbb230aeb,0xbb265ba2,0xbb2b9f70,0xbb293071,0xbb26a1d6,0xbb2a602b,0xbb26ecc8,0xbb26cc37,0xbb22bd0e, -0xbb21bda4,0xbb1cb34e,0xbb134353,0xbb1b4c37,0xbb16a511,0xbb1c0d59,0xbb1df827,0xbb1d2963,0xbb29298c,0xbb24e533,0xbb175dec,0xbb12f36f,0xbb07e55c,0xbb7258b6,0x3a975c99,0x3a5e1ba4,0x3a4c4b2d,0x3a4e83af,0x3a35fe6b,0x3a66e4bf,0x39bd43b6,0x39a3b905,0x3a140e5a,0x39390238,0x38d1e06d, -0x395e459b,0x39afae04,0x39eb8466,0x39d3c94d,0x3a390f0f,0x3a5f6216,0x3a7d70cd,0x3a458cdb,0x3a3809ba,0x3a14ac6c,0x3a3b3ca1,0x3a6b5ccc,0x3a9dd881,0x3ab8fc51,0x3ab5b63b,0x3a8fc1f8,0x3a7a27a3,0x3a44b64a,0x3a2da474,0x3a56d84c,0x3a5da9ed,0x3a333044,0x3a5ac6c0,0x3a6ac1b3,0x3a8ec0b1, -0x3a665e94,0x3abcf850,0x3a2a823f,0x39a753a5,0x39cfa961,0x3ac55f23,0x38b10635,0xb9c99f5a,0xb8ccf4b3,0xbae1c816,0xbaef730b,0xba96f888,0xba3eb964,0xb96b6495,0xb84bf891,0x3a972dbb,0x3ab9f2a7,0x3ac12c2b,0x3a8011f1,0x39e0d279,0x3803c43b,0x3a027a9f,0x3a93c967,0x3b1cf358,0x3b22e5e6, -0x3b246208,0x3b161130,0x3af1b8b3,0x3af63f61,0x3b008c1a,0x3ac9ab19,0x3a8b82ad,0x3a4725e5,0x3ad5f277,0x3b11de32,0x3b491ded,0x3b137897,0x3af71ba0,0x3a8da1c3,0x3a17d068,0x3943bbce,0x3ad45f87,0xba91d580,0xbaeec3b4,0xba3e3b8a,0xbb580d0d,0xbb759929,0xbb1f3431,0xbb06dd3d,0xba83d435, -0xba6f2b90,0x3aa22fc9,0x3ae66df3,0x3b040b2b,0x3a8d1189,0x3a046708,0xb9026454,0x3a1a355a,0x3af0d23e,0x3b823357,0x3b9d5952,0x3b9d2c33,0x3b582574,0x3b3760ef,0x3aebcb48,0x3ad22397,0x3ae7c6c6,0x3aec7682,0x3a705f55,0x3b1f5f3d,0x3b404d97,0x3b84497f,0x3b2c080e,0x3b2938dc,0x38f1dc79, -0xba894476,0xba518cfe,0x3b3a244c,0xbac2727d,0xbb47a5ed,0xbac5ab34,0xbbda73ed,0xbbf48bec,0xbb9b2fde,0xbb72bfe7,0xbaa9b653,0xbaa50aaa,0x3b0d27a9,0x3b1e0004,0x3b36e773,0x3ab8619c,0xb972e52e,0xbabd39ce,0x395d0115,0x3ae251c0,0x3bae93f1,0x3bd83835,0x3be707a3,0x3b99c002,0x3b7ff00f, -0x3b745d39,0x3b97425f,0x3b16d916,0x3ae5f995,0x3a53c631,0x3b7b7696,0x3baa565b,0x3befa876,0x3b9fcf8e,0x3b2ee18d,0x3ad3dd3d,0x3a04644e,0xba069803,0x3b621c92,0xbb6f6b92,0xbba6dcca,0xbac35352,0xbbc6e226,0xbbdd6c8e,0xbb91524b,0xbb1e2a97,0xb9d07847,0x3a4164aa,0x3b2b1317,0x3b73430b, -0x3b873326,0x3ade25fd,0x3a0970b3,0xba5b4276,0x3a56d991,0x3b4cb565,0x3bfc99ff,0x3c184ccc,0x3c1971a3,0x3bbc7271,0x3b9639ad,0x3b189544,0x3acc1e9d,0x3b372e63,0x3b2ce6e8,0x3aee27c3,0x3ba2b8d9,0x3bc3ff63,0x3be8ac98,0x3b9478ae,0x3a7e3477,0xbb161b2d,0xbb8f2c1d,0xbb67cd05,0xb89ddd9d, -0x3ba549f8,0x3be7b12f,0x3bd723ac,0x3b3ab5a7,0xbab430d9,0xbaddaec6,0xbb148bf4,0xbae5a21c,0x3b9b354c,0xbb98a936,0xbbcebf0c,0xbb83a8a3,0xbb183857,0x39e86f74,0x39ec1ed4,0xba9b3f29,0xbb1c752a,0xbbdb7d30,0xbc0d0843,0xbbb97ae0,0xbbc430ee,0x3c19e798,0x3c6bdef3,0x3c1c7f05,0x3bcbc2b6, -0x396827b2,0xbbd5e1af,0xbb957a51,0xbb36e0ae,0xbb138f7b,0x3a8ee5de,0xbace0728,0x3ba93579,0x3c7e5f18,0x3c2ddfe2,0xbaa8a565,0xbc14094f,0xbc32b2fe,0xbbb546dd,0xbb2c81a8,0xb8cd060c,0xba59d5e6,0xba64c7f9,0xbb137831,0xbad55b27,0xba3089e9,0x3aa1c2c7,0x3a542b6b,0x3b35f252,0x3b4c957c, -0x3ba67b8d,0x3ad2102e,0x3afad3a4,0x3b7e3f78,0x3bdef54f,0x3beb0d13,0x3b638506,0xbb31be86,0xbbda5e86,0xbc5c05f3,0xba58f36f,0x3ba8d740,0x3b96d03a,0x3b6634f2,0xbb22273e,0xbc36e9dd,0xbbc4151d,0xbb943888,0xbc80d577,0xbc9677de,0xbc2f4d53,0x3ad9de76,0xbbe13af3,0xbc0e877c,0xba7abb6d, -0xb9ccc557,0x39014b18,0x38e9600d,0x39956bf3,0xb9be7d94,0xbb2d0da1,0xbac83983,0xba81ff59,0xbab74ccb,0x3aba501c,0x3b34e668,0x3b3b6f8e,0x3a865b8f,0xba05c299,0xbabad890,0xbab248d2,0xbaf3856b,0xbacbfc87,0xbb4f3fea,0xbb5e580f,0x3b729af0,0xbb2d9f32,0xbba1a890,0xbb2bd921,0x3a7a34ff, -0x3b088038,0xbb09623c,0x390c4825,0xbb4ecba4,0xbc76023e,0xbc5eaeb1,0xbc0a95d8,0x3bc374ff,0xbab60f93,0x39687a36,0x3aebd424,0xba7d2490,0xba4dd831,0xb8bbc92b,0xb906b790,0xb918275c,0xbab5e42a,0xba8d7ab5,0xba95c2d1,0x385d6e53,0x3a40e9f1,0x3a8466f7,0x39e684d9,0x3a565807,0xb8fe169a, -0xb9a3d26b,0xbb14d7df,0xbb324739,0xbb5b137c,0xbaa530a4,0x38a01021,0x3c06b332,0xbb64ea50,0xbc1011e7,0xbbf522a9,0xbaa91d7b,0x3b743fa1,0x3be050e5,0x3b5344e7,0x3a03b871,0x3b6dfbc1,0x3c7cd775,0x3c49c55d,0x3bcc2887,0x3b4a9937,0x3b812c93,0x3b69a06d,0x3a8df31f,0x3926951a,0x3927ed23, -0xba3b4469,0xb9c1e9ff,0xba28ed55,0x3a09d1aa,0x3ac10720,0x3b131841,0x3a70159e,0x34bbc9e1,0xb99d0511,0xb8c40546,0x3aaedc21,0x3b7dcb9f,0x3b71cfd6,0x3b6b1b8f,0x3af15b8e,0x3ac47f0f,0xb9953d1a,0xbba13764,0xb9644ede,0x3a8f5bc5,0x3a4ca8a5,0xbaa97de3,0xbac0eb2c,0x3b898a7f,0xba8fcb38, -0x3b13ff97,0xb9cdf4d2,0xbbbcb781,0xbb98985c,0xbb2ab61e,0xba39c249,0xba2626af,0x3a462056,0xb9e03211,0xbaf28091,0xbaead61d,0xbafbc0f6,0xba679f71,0xba81cbed,0xba3a9f0d,0xbabf0f1b,0xbb8d33e1,0xbba99158,0xbbb482fe,0xbba7eb63,0xbb9930e8,0xbb884030,0xbb0d7d13,0x38b51be3,0x3b1a8724, -0x3b5b655b,0x3bafb25f,0x3bc99aca,0x3beb4d05,0x3b8e2ae2,0x3a69113d,0xba2b3cbf,0xba8af499,0xbaa26a17,0xbb0fdeb0,0x3adc9acc,0xbb41aeeb,0xb9c72805,0x3a99bd59,0x3a3d29e6,0x3a370d5c,0x391a78e7,0x399c9760,0x39b1f381,0x3a25e2dd,0x3a7d05fb,0x3a75979a,0x3b1f0884,0x3b106843,0x3a8924b5, -0xb99c63c1,0xbab38497,0xbb0a3fb9,0xbb200ac3,0xbb1c0663,0xbaf01e42,0xbabcaf7b,0xba24dcef,0xb9f39078,0x3ae5c845,0x3b427cfe,0x3b89aecd,0x3bc03ecb,0x3bd173ed,0x3bcb77b9,0x3bef3478,0x3c0219dd,0x3c07b64c,0x3bcdb1b7,0x3b828598,0x3abdd107,0xbaafd19f,0x3b3b474e,0x3b2bdc9d,0x3ae83add, -0x3b173ce7,0x3b650c49,0x3b86fae0,0x3b8a441e,0x3b8495fc,0x3b77d61f,0x3b6d405b,0x3b40e029,0x3b218256,0x3a978236,0x392807a6,0xba7c13df,0xbb032f89,0xbb4202bf,0xbb2dac6c,0xbb1f4f68,0xbb02ae87,0xbae8aded,0xbad095ed,0xbaebc49e,0xba166123,0x39f8f7a0,0x3aacf6e8,0x3b34bf57,0x3b8d3f1e, -0x3bc5032f,0x3bb4a04c,0x3ba36c72,0x3bb0fe01,0x3b983399,0x3b779d89,0x3b453806,0x3b556aaa,0x3b115f61,0x3b149c34,0x3b399021,0x3b5a3aaa,0x3b606c3c,0x3b549062,0x3b67890c,0x3b86b611,0x3b46d964,0x3b041f36,0x3ab2466b,0x39538076,0xba893a3a,0xbae1cadf,0xbb09e626,0xbb0fe47e,0xbb3d3916, -0xbb2bf9cf,0xbb28b1ea,0xbb26a1b0,0xbb2deb1b,0xbb2d4566,0xbb353940,0xbb208508,0xbb18d5e4,0xbb0216ff,0xbaaf252d,0xba820cef,0xb92b2c3b,0xb9a2e497,0xb9819737,0xb98da618,0xb94fc92b,0x3a1d6164,0x3ab97c30,0x3ae2d47b,0xbb79db32,0xbb6d417e,0xbb92bc73,0xbb8f4877,0xbb8e7d42,0xbb88eb03, -0xbb840fca,0xbb8bf41d,0xbb88bfb5,0xbb87734c,0xbb8b22a5,0xbb8a7807,0xbb8476e5,0xbb903b98,0xbb840768,0xbb703ac2,0xbb6e0bc5,0xbb5e95f4,0xbb5f3d39,0xbb4f8562,0xbb338d3a,0xbb30b46b,0xbb1e4c24,0xbb1885e4,0xbb083b60,0xbae92326,0xbb224a2c,0xbb28c500,0xbb4153b8,0xbb5625c8,0xbb47c1bc, -0xbb5316e0,0xbb4bc567,0xbb4e4e2f,0xbb6aa0e6,0xbb76bb60,0xbac147ce,0xbab3556b,0xbab15f7b,0xbaac581e,0xbab99d64,0xba7725ec,0xba80da60,0xba9498a8,0xbac0f035,0xbadf271c,0xbaf84433,0xbb09fefb,0xbb1857ca,0xbb209a9f,0xbb175c50,0xbb192c4f,0xbb237465,0xbb1c1ba6,0xbb16a23b,0xbb185f3b, -0xbb18ae75,0xbb1abb0f,0xbb1964e8,0xbb1bd546,0xbb1a8d5f,0xbb134503,0xbb18762a,0xbb0de7e3,0xbb0faf64,0xbb0dc1d6,0xbb0aed2c,0xbb146ee3,0xbb0d69a9,0xbafacd0d,0xbae13ad9,0xbac79ed3,0xbb653b3c,0x3a8916bf,0x3a4c5048,0x3a3fac0e,0x3a423f28,0x3a265370,0x3a357b39,0x39a301f2,0x398a6202, -0x39d601cf,0x39312a01,0x39163d5c,0x39801a9a,0x39aa10f3,0x39ce7d7c,0x399f78f3,0x3a22c0c7,0x3a48a3be,0x3a647a0c,0x3a3aaa02,0x3a348850,0x3a16e5a8,0x3a3c906b,0x3a678b3e,0x3a97e9ad,0x3ab06108,0x3aa921a7,0x3a755724,0x3a5d2b55,0x3a3154fd,0x3a3359a2,0x3a45bb45,0x3a42a32e,0x3a1c2046, -0x3a4d174b,0x3a5c2a54,0x3a84a28b,0x3a549b7b,0x3aa072ef,0x3a2dca6f,0x39bd6d5f,0x39ae2ce8,0x3a833536,0x38f290de,0xb9b41ffa,0xba054c87,0xbadfe51f,0xbaf15f89,0xbaa60483,0xba75ae21,0xb9e179c7,0xb9abbc28,0x3a74fed0,0x3a9ae888,0x3a98c0b7,0x3a807047,0x3a129d66,0x3931add8,0x3a1d42de, -0x3a9a980f,0x3b1b5551,0x3b1c5600,0x3b18979b,0x3b0057c1,0x3ae295a7,0x3af330f1,0x3b0a05bf,0x3a9d8526,0x3a320314,0x3a39a6f7,0x3ae47a54,0x3b1992fc,0x3b458ebd,0x3b02e022,0x3adac3ff,0x3a8e3fd0,0x3a26dd5c,0x393c1826,0x3a3f8c15,0xba89a3a1,0xbad94b96,0xbabc28c3,0xbb4e4a6a,0xbb62a379, -0xbb1a9bae,0xbb059ad0,0xbaa26f7b,0xbab46d4b,0x3a80e8f8,0x3ac35fee,0x3ac553dd,0x3a97419b,0x3a49dfb5,0x3986b4e3,0x3a76dd4b,0x3b07c846,0x3b8367f3,0x3b9a8525,0x3b9482fb,0x3b3019e6,0x3b2aebb5,0x3adf1828,0x3b045101,0x3abb288e,0x3ab59d4f,0x3a427ed6,0x3b23ab0d,0x3b451ab2,0x3b7c8527, -0x3b1f80c7,0x3b07dd57,0x39bba7dc,0xba57a1a0,0xba50432a,0x3acc945b,0xbab061f9,0xbb381539,0xbb268e15,0xbbde3cd9,0xbc005364,0xbb9dc27d,0xbb8e9cf5,0xbafe8e59,0xbb088925,0x3adea772,0x3af1404a,0x3af98366,0x3acdf199,0x3973adf4,0xba54def7,0x3a301f4a,0x3b05a6c2,0x3bb36406,0x3bd17089, -0x3bd86c64,0x3b7ecf38,0x3b7d5ef4,0x3b782018,0x3bacd8b6,0x3ac04676,0x3a70605b,0x3a55061e,0x3b89d807,0x3bb7c51c,0x3bec3d9c,0x3b8d9095,0x3b0d3fb3,0x3aca5062,0x3a04b1cb,0xba1c662b,0x3af1b978,0xbb5d54a1,0xbba8227d,0xbb23bf69,0xbbdb5f4c,0xbbeee5ac,0xbb78c702,0xbb42460b,0xbaacc9b4, -0xb9580acc,0x3b12f250,0x3b56e43c,0x3b57f14a,0x3af749dd,0x3ab14ca2,0x391207cc,0x3aed646a,0x3b7a1145,0x3c024fb9,0x3c17de84,0x3c10064a,0x3b98a8cb,0x3b8b008b,0x3b21754c,0x3b232110,0x3b15ea22,0x3af8d70e,0x3ab887dc,0x3ba520c5,0x3bc4d48c,0x3bd95335,0x3b86872c,0x3b7d99d0,0x38c089eb, -0xbab8a455,0xba7efb82,0x3a11dd0b,0x3bbddc9a,0x3c05fced,0x3c03a87a,0x3b83f457,0xba897cc9,0xbacb812a,0xbb16a2cd,0xbaf33266,0x3b9e5647,0xbb9a6749,0xbbcd67b6,0xbbbe6806,0xbb9bd4f0,0xbb410a4c,0xbb6e2dfb,0xbb96cac0,0xbba0f450,0xbc149c9b,0xbc186e4e,0xbbb58179,0xbbb3639a,0x3c177cf7, -0x3c51a7ba,0x3be2e517,0x3b89add7,0xba622cc6,0xbbd87982,0xbb5746f7,0xbab4e4b5,0xbafc4187,0x3b60ef09,0xbadd901f,0x3b46911e,0x3c5b6cc1,0x3c219318,0x3a44a94b,0xbc0cac8e,0xbc3ac600,0xbbbc74f5,0xbb42cfd7,0xb8d032ef,0xb9fb5ffc,0xb9f66f2f,0xbb022b83,0xbb0b96aa,0xb97286a4,0x3acec4bb, -0x3abc24db,0x3b249d1c,0x3b3fa0fa,0x3bb3ab44,0x3b220703,0x3b4d4dfc,0x3b94ffd2,0x3c0281bb,0x3be5b242,0x3a401570,0xbb962994,0xbbf97ceb,0xbc484b07,0x39e92246,0x3bbd1db2,0x3b6b4510,0x3a3e639d,0xbba8976e,0xbc35d0ca,0xbbb3bcdb,0xbbc88a3d,0xbc5043ad,0xbc87de16,0xbc270871,0x3aed2ae0, -0xbbd956df,0xbc127d2d,0xbb11653e,0xb9c8dafc,0x39b59111,0x37ce7dff,0x3993f4ae,0xb99aa993,0xbb1a6716,0xbac5235f,0xba90339f,0xbae92acb,0x3a3ef16f,0x3aeae1db,0x3b086089,0x3a2005b7,0xba2831c8,0xbaeebd2a,0xba9ef7c0,0xbaf3834f,0xbb26f197,0xbb47cae8,0xbb41deca,0x3b8aab0a,0xbb6271ee, -0xbbc52c85,0xbb0b14fa,0x3a12f2a8,0x3b07f413,0x3a81ba01,0xbb0f8eff,0xbb64322d,0xbc4c1c46,0xbc482e2a,0xbbf84319,0x3baf2f6b,0xbab00e96,0xb993f7bb,0x3a7e3f6e,0xba536a91,0xb9eac358,0xb88f06f4,0xb8c2c021,0xb9950ee4,0xba94e9b6,0xbaa538fe,0xbaadc5f6,0xb988e124,0x3a136233,0x3a7157c9, -0xb88bffe3,0x3a1ce4ff,0xb99eb08b,0xba5c83bc,0xbb2dfdce,0xbb4bb311,0xbb6e3445,0xba4d02f7,0x3a32fcc8,0x3c0e44e8,0xbba85570,0xbc22a991,0xbbd1c7e1,0x3a365a6c,0x3bcd62ea,0x3c210a60,0x3b20f642,0x374df1fb,0xbac71001,0x3c37d25c,0x3c302703,0x3be057e7,0x3b115537,0x3b2a340e,0x3b74efdf, -0x3a8df7bb,0x3972eee7,0x399fcfe7,0xb9da1b4f,0xb9d49a68,0xba8f5747,0x3a09f6fa,0x3adbb05e,0x3b35d5d1,0x3ac04597,0x3a4b877b,0x3a099026,0x3a4c308c,0x3b09333a,0x3b823037,0x3b89f2d8,0x3b5a1cee,0x3a73029d,0x3a4ccec2,0xba0a429f,0xbb715cd6,0x3a0c47e8,0x3adb13f2,0x39de69bc,0x3a7bd6c3, -0x3aa962b6,0x3bb60a7c,0x39c202a5,0x3b70c679,0x3b10bb1f,0xbb762d89,0xbb7a94ed,0xbb23ff7c,0xb91b8061,0xb89d1b1d,0xb7f8f94b,0xba0d197c,0xbacc17e8,0xbab444e9,0xbae10f74,0xba50c6c2,0xba4e830d,0xb9a31b0b,0xba6e1698,0xbb59d179,0xbb935213,0xbba3a3df,0xbb9b1230,0xbb8cdfa7,0xbb84b14e, -0xbb1f3f9d,0xb9817480,0x3afa4438,0x3b3dcfd7,0x3b993253,0x3baaf007,0x3bc4debb,0x3b2b605b,0xb9b0431d,0xbab43892,0xbaf154da,0xbae48627,0xbaf77794,0x3b35ccaa,0xbb9666e7,0xbb467302,0xba90dfe2,0xba4db384,0xb9f411a5,0xba483414,0xb9e415bd,0xb985e858,0x384f8030,0x38a558a9,0x38b19fee, -0x3ac73eb4,0x3af65e83,0x3ab0f837,0x395deb8d,0xba6a863e,0xbae58ef5,0xbb2c922b,0xbb355e2b,0xbb11b0b5,0xbabb4e97,0xb98efc3f,0x38c4d19c,0x3b26b2ea,0x3b7df469,0x3ba63520,0x3bdcbc63,0x3bef11ea,0x3becd0f7,0x3bfdec3e,0x3bf91d23,0x3be20606,0x3ba8a04a,0x3b45e43f,0x394c2180,0xbb2a5bd2, -0x3b26a31b,0x3b429371,0x3b0df9b9,0x3b1fb25a,0x3b73bc6c,0x3b8a90ad,0x3b8b3ef5,0x3b7a75f9,0x3b703398,0x3b6de7a9,0x3b5230e2,0x3b3a2902,0x3aea4c93,0x3a933292,0xb8ea8c16,0xbaa9a39a,0xbb2a95e5,0xbb2027c4,0xbb1b20fa,0xbb07653a,0xbaeae163,0xbac33ff4,0xbaca7015,0xb9ad29f9,0x3a348aad, -0x3ac14122,0x3b46bf01,0x3b96c1cf,0x3bcf3543,0x3bbfd380,0x3baf6535,0x3bb7d201,0x3b9baf96,0x3b74e2e5,0x3b40a7d2,0x3b3e6e9b,0x3b6ad249,0x3b6061b0,0x3b7b6d2e,0x3b89534e,0x3b896dd8,0x3b7dab29,0x3b806705,0x3b8b2664,0x3b67ef14,0x3b2f4c43,0x3b1a62d8,0x3a84a071,0xb8fcb60c,0xba635a30, -0xbac2df48,0xbad79e6f,0xbb222486,0xbb105dbd,0xbb08514e,0xbb0ce673,0xbb142bea,0xbb191c06,0xbb231765,0xbb186a95,0xbb1a2011,0xbb0d4540,0xbaa21045,0xba44c84f,0x3987ac3d,0x39a467ca,0x3a1c0a76,0x3a42d59d,0x3a7bd8b5,0x3afeaa71,0x3b3d2fe9,0x3b50d36e,0xbb3d679a,0xbb23a49e,0xbb5a1cfb, -0xbb551e8e,0xbb592df3,0xbb40c74b,0xbb39ed18,0xbb4029a8,0xbb56fdd0,0xbb65463c,0xbb8002b9,0xbb83d97e,0xbb8315cd,0xbb92c51f,0xbb829198,0xbb6b3f8b,0xbb65b38e,0xbb583edd,0xbb5bab8a,0xbb4a8a47,0xbb309070,0xbb29ed55,0xbb161692,0xbb0e239d,0xbaf22fd3,0xbac338cc,0xbb0de976,0xbb0d07f8, -0xbb217c05,0xbb2fbb90,0xbb20fba3,0xbb24368e,0xbb193353,0xbb2c4d70,0xbb40b866,0xbb413849,0xba7d2cf4,0xba653b73,0xba75ad61,0xba75a098,0xba8d4ac9,0xba2b3495,0xba45377e,0xba572bb4,0xba92edf2,0xbaad62cd,0xbac6b889,0xbae5876c,0xbb050f39,0xbb1285e3,0xbb0543a2,0xbb075ea6,0xbb140fcb, -0xbb0a466b,0xbb03bc8d,0xbb050f5c,0xbb076608,0xbb0bc143,0xbb0d6df0,0xbb12c3be,0xbb149d74,0xbb0fa279,0xbb11fe21,0xbb02d529,0xbb00d779,0xbaf404e1,0xbae587fb,0xbaeb64e6,0xbad8d06a,0xbabaad0f,0xba95db6f,0xba76d640,0xbb5485a1,0x3a67db90,0x3a33afaa,0x3a29b563,0x3a2a2102,0x3a10ae9b, -0x3a0180dd,0x39804bdc,0x395b9a74,0x397e03ed,0x39399b4a,0x394e5849,0x3979928e,0x39a78e39,0x39b978e0,0x3952b4d3,0x3a079e1f,0x3a29454f,0x3a45a561,0x3a290494,0x3a26aba8,0x3a0f9fc1,0x3a346fc5,0x3a58acf2,0x3a89d11e,0x3aa0778b,0x3a967ce6,0x3a450b53,0x3a389241,0x3a176c38,0x3a2fe255, -0x3a2ba60b,0x3a1db673,0x39ebed95,0x3a34bb71,0x3a44431d,0x3a6a7b04,0x3a3aaa4c,0x3a7a6509,0x3a258c44,0x39d0198f,0x397e5f45,0x39fe7974,0x39246ebb,0xb9990939,0xba77c405,0xbad97082,0xbaedb680,0xbabdda60,0xba93b669,0xba213d49,0xba206bfd,0x3a38c040,0x3a6b82b6,0x3a59ac3b,0x3a6caaa5, -0x3a277cfd,0x399bb515,0x3a2d2f75,0x3a98d3c7,0x3b1143e4,0x3b11a8a7,0x3b0a9a20,0x3ad6d006,0x3ace66be,0x3ae86e84,0x3b0d6611,0x3a651d88,0x39a8c1a3,0x3a0cf2b1,0x3ae4ee1b,0x3b197179,0x3b391893,0x3adba617,0x3abbb6bc,0x3a8ee1c1,0x3a1f9038,0x38d5fa4a,0xb90189e1,0xba790c0a,0xbabbeb64, -0xbb0e0544,0xbb39c26f,0xbb492d22,0xbb1f6c86,0xbaf9b5d1,0xbab154a0,0xbaeec236,0x3a34afea,0x3a969145,0x3a7c6159,0x3a92369e,0x3a734d9d,0x3a225457,0x3aa0e8bf,0x3b1194e7,0x3b7ae6f7,0x3b9319ec,0x3b887ca0,0x3b0afdd2,0x3b19b638,0x3acda998,0x3b1ac31d,0x3a90c337,0x3a79cb15,0x39ccfcf8, -0x3b2007f4,0x3b42f205,0x3b674732,0x3b0eba8e,0x3ac24252,0x3a1c328f,0xba1b6fc6,0xba495149,0x3991187e,0xba8e4e7d,0xbb1e2dcb,0xbb6e5f08,0xbbdaadbc,0xbc01b890,0xbba7d411,0xbb9de9f4,0xbb201007,0xbb3de5c8,0x3aa2b1f5,0x3a9eea7d,0x3a7d0205,0x3acd9e84,0x3a1cc625,0xb92b13b0,0x3a8acc70, -0x3b129273,0x3bad2d6a,0x3bc712ae,0x3bc82c79,0x3b520f2d,0x3b74365c,0x3b7542d9,0x3bbaadd5,0x3a48f64d,0x3963d707,0x3a0dfa1b,0x3b8e8c78,0x3bbccf53,0x3bde7ac4,0x3b6ecded,0x3ae19942,0x3ac7a896,0x39d3c64d,0xba4256b8,0x393d36bb,0xbb3e48a5,0xbb9fc8a0,0xbb6b6deb,0xbbde175a,0xbbee945e, -0xbb4e57b8,0xbb4b40f7,0xbaff9d47,0xbaa7ced4,0x3af49667,0x3b33c1fa,0x3b133af3,0x3afc3f66,0x3b016baa,0x3a87dbfb,0x3b2e4653,0x3b8e7b76,0x3bfe242b,0x3c12f5a1,0x3c03c7de,0x3b717abf,0x3b74357c,0x3b23d916,0x3b5ca10e,0x3af206cd,0x3a99d58c,0x3a31eabf,0x3ba09bf2,0x3bc0dbb0,0x3bc24efe, -0x3b6a4e5c,0x3bcbf363,0x3b17b1b3,0x3acc939d,0x3ada9a20,0x3abc7419,0x3bd635c4,0x3c1420c1,0x3c10982c,0x3ba58389,0xb9b63437,0xba88794e,0xbaf57d5d,0xbad27745,0x3b971d81,0xbb8d1fcc,0xbbbc07e4,0xbbebdc38,0xbbdb7c84,0xbbc19a6a,0xbbe415b6,0xbbf446a2,0xbbe9b61b,0xbc348b2c,0xbc1fe9da, -0xbbb170ee,0xbb99f1ef,0x3c091991,0x3c2b3350,0x3b8bdb64,0x3b0ba318,0xbad50f01,0xbbb8f1e2,0xbaf889f8,0xb8c83fe3,0xbab029cc,0x3bb17490,0xbabd21a3,0x3ab29f13,0x3c2cd847,0x3c07db08,0x3b3a5c11,0xbc038edb,0xbc3b0261,0xbbb8b22c,0xbb51ef61,0xb98159d1,0xb9593f9b,0xb9345344,0xbae65948, -0xbb1d2f22,0x38fb156a,0x3ae4a140,0x3aebaa89,0x3b0975bb,0x3b30e634,0x3bb78ab2,0x3b5eda5b,0x3b8e8b74,0x3ba6cf59,0x3c08c3d8,0x3bca0491,0xbabeb39c,0xbbc74e2c,0xbc06e2b5,0xbc29ea97,0x3adbbe5c,0x3bc58a15,0x3b244817,0xbadb4368,0xbbe7853b,0xbc2f84fa,0xbb9b6322,0xbc00fbfd,0xbc24def5, -0xbc632eb0,0xbc11f088,0x3a3e8415,0xbbbc5144,0xbc01d15a,0xbb5d0ef8,0xb9b503c7,0x39e21d90,0xb7aff050,0x3990623a,0xb912c47b,0xbafbb35d,0xbac198d8,0xbaa24a70,0xbb0446bc,0xb6da2df7,0x3a2b0b8d,0x3a8f3854,0x3974b19a,0xba296aa4,0xbb073986,0xba90b437,0xbafb833b,0xbb5dd4c4,0xbb29bdd8, -0xbb140198,0x3b800ca0,0xbb789dbc,0xbbc974f0,0xba65ad7a,0x399a4c0f,0x3adc5843,0x3b823c97,0xbb9355a4,0xbb5c98d8,0xbc111384,0xbc250ad4,0xbbd4dcd1,0x3b4852b7,0xba566338,0xb9d6e5aa,0xb95cd00c,0xba34a6db,0xb95fcafd,0xb8fd40aa,0x3770acdb,0xb994458d,0xba553fec,0xbaab9248,0xbabed15c, -0xba00f590,0x39a24391,0x3a217a12,0xba3067bb,0x398dab29,0xba0652fb,0xbab5c365,0xbb378da3,0xbb4fec4b,0xbb7cda03,0xb6d5f892,0x3aacaec5,0x3c02af22,0xbbd18ce7,0xbc23f3fb,0xbb8b4bcc,0x3b37e220,0x3c06c5e2,0x3c42cb6a,0x3af231d2,0x3ac2553f,0xbb6db9fa,0x3bcfd945,0x3bf9c6c6,0x3bd402cc, -0x3a775676,0x3a7287f0,0x3b5c7cb9,0x3a8057ea,0x398d859c,0x399ae5a2,0xb8b3a200,0xb9fe0226,0xbaa33fd5,0x39edd0ee,0x3ae4c293,0x3b4b06f7,0x3af174b8,0x3abd1e17,0x3aaa7db7,0x3ad16ee0,0x3b315502,0x3b77b803,0x3b900daf,0x3b479c80,0x39a9ce2e,0x38f43880,0xba65bcc6,0xbb2dbc00,0x3a43063b, -0x3af40a8f,0x39a86c8e,0x3b60bc98,0x3b886e55,0x3bc2ded5,0x3b37405d,0x3b81821f,0x3b7bee78,0xbad0756f,0xbb1e8620,0xbb001418,0x39e13682,0x39c321f9,0xba45cf1e,0xba0935be,0xba8ee451,0xba3928b7,0xbaaea7a6,0xba284be9,0xba0c0def,0x37a6df49,0xb9cbb594,0xbb10e1c1,0xbb6ac46a,0xbb8c5455, -0xbb8cc58e,0xbb751cf7,0xbb6ff0f6,0xbb1f5b43,0xba0088b2,0x3ab89c43,0x3b229417,0x3b72a30f,0x3b819f31,0x3b924f72,0x3a3c7e44,0xbad1b3df,0xbb15ffa0,0xbb3a7a65,0xbb1b8b75,0xbad3793f,0x3b516e49,0xbbafb347,0xbba11c66,0xbb42c555,0xbb08ef89,0xbab6cedb,0xbabd92be,0xba804c10,0xba21b233, -0xb9a878c8,0xba116fe9,0xba1c58a0,0x3a0fc77a,0x3aadefd8,0x3abf7e47,0x3a222344,0xb9e04ea3,0xbaab9406,0xbb306809,0xbb4849a6,0xbb28de7c,0xbac8d68f,0xb90d7cb0,0x3a0d8034,0x3b47c6be,0x3b9175ae,0x3bb7ba42,0x3be9e0cc,0x3bfb5391,0x3bfa737b,0x3bf6cc98,0x3bd7b233,0x3b9e012e,0x3b5c50b8, -0x3acd7b0c,0xba96b516,0xbb5b003f,0x3ada34a3,0x3b2d4bf1,0x3b0994cd,0x3b11f621,0x3b635039,0x3b7f5fbb,0x3b80b36a,0x3b569766,0x3b55dee7,0x3b5c77bd,0x3b556488,0x3b441403,0x3b150111,0x3afce6a4,0x3a1dde9f,0xba27c1d7,0xbb11c59d,0xbb10666a,0xbb154689,0xbb0a6839,0xbaf0d66f,0xbabe08be, -0xbaaea95a,0xb9519fd0,0x3a44a455,0x3abe4a2a,0x3b45e65e,0x3b937902,0x3bc7c0b3,0x3bb9299c,0x3ba99f87,0x3baab163,0x3b88bca5,0x3b4f0664,0x3b22ae87,0x3b083151,0x3b9192cd,0x3b8759aa,0x3b8edc50,0x3b916128,0x3b8dd495,0x3b7f5c71,0x3b71f2eb,0x3b78dde3,0x3b6af3f3,0x3b44763e,0x3b4bbeb6, -0x3adb2196,0x3a43abd5,0x37bfb8f7,0xba627ab5,0xba94688a,0xbb08f93c,0xbaed981c,0xbad16f53,0xbae8a4fb,0xbaf5f346,0xbb0594c0,0xbb11a376,0xbb0f46d6,0xbb17fd8e,0xbb148ab0,0xba9a17be,0xba1e59c6,0x3a082123,0x3a5af542,0x3ab6b2f8,0x3aeeb55a,0x3b0e9157,0x3b4c016c,0x3b80d228,0x3b88cc28, -0xbade6d83,0xba96e7b1,0xbafcfb36,0xbaf60ca8,0xbb064482,0xbad144bf,0xbac97b84,0xbad9f45c,0xbb177ebf,0xbb37d434,0xbb6175b0,0xbb6d107e,0xbb72112e,0xbb89b0ef,0xbb71b61a,0xbb5aa73e,0xbb55855a,0xbb4f9ca0,0xbb5b047b,0xbb4d4cab,0xbb3667fb,0xbb2c6474,0xbb17d970,0xbb0efbd3,0xbaee49ae, -0xbabaac0f,0xbb00b53d,0xbae7df99,0xbb00bcce,0xbb078a9a,0xbaf4fb90,0xbaf0362c,0xbad37920,0xbb04dbb9,0xbb080509,0xbaf41ef9,0xba12680e,0xb9ee4943,0xba1b0771,0xba29c043,0xba56d05c,0xba013f68,0xba28ca26,0xba304f0d,0xba6aeb5f,0xba845a52,0xba9866eb,0xbab73d9d,0xbae002d5,0xbaff460c, -0xbae1b279,0xbaead613,0xbb02eb5d,0xbaf194c4,0xbae5d7e6,0xbaeb4280,0xbaf22764,0xbafee210,0xbb03c15b,0xbb0b1578,0xbb0f2a04,0xbb0c987e,0xbb0cbd40,0xbaf53c8b,0xbaea8c04,0xbad2928e,0xbab87cea,0xbaacb363,0xba959fa2,0xba7ec8d0,0xba2db78f,0xb9fce074,0xbb47e46d,0x3a46b5d0,0x3a228dd9, -0x3a1e828d,0x3a12db3b,0x39e8ee86,0x3991d840,0x395d9f1a,0x3927dab6,0x38382509,0x39110e0d,0x39412ae2,0x391b0a04,0x398bd164,0x398cc89e,0x388bfaba,0x39d1293a,0x3a0b7953,0x3a1a3367,0x3a0fbecd,0x3a171fac,0x3a0f465a,0x3a30de1a,0x3a4ebd73,0x3a7a5ea2,0x3a923e0c,0x3a868513,0x3a1f6355, -0x3a1c2386,0x3a05ceeb,0x3a326257,0x3a1a9704,0x3a028af2,0x39b0e28e,0x3a23fe1a,0x3a32fc73,0x3a4ed182,0x3a26f230,0x3a3decb7,0x3a24feb5,0x39c30260,0x391f9cc3,0x37ac5144,0x39609b50,0xb96e1061,0xbab0dae9,0xbac65cc0,0xbade3d84,0xbad6daa2,0xbaa38f34,0xba4011e0,0xba627171,0x39e14781, -0x3a1f41db,0x3a09fad7,0x3a4c7eb7,0x3a2c85af,0x39eea438,0x3a43bbe5,0x3a9a0ff2,0x3b06f2da,0x3b08c2a7,0x3aff1ba7,0x3ab85b4f,0x3abea90a,0x3ae0b490,0x3b10fa7a,0x3a2c08ad,0x38a95374,0x39c4d440,0x3ae26264,0x3b1692af,0x3b28b307,0x3ab56a3f,0x3aa3abaf,0x3a9618f6,0x3a034cb2,0xb5f48373, -0xba555c3e,0xba53bb41,0xba9a0069,0xbb350c75,0xbb212d22,0xbb2c279a,0xbb2c24ad,0xbad848b6,0xbab1fa37,0xbb0d21ec,0x39bb577c,0x3a455e51,0x3a02c221,0x3a7f3500,0x3a8050c4,0x3a7d2c1b,0x3ac54a10,0x3b1a8f0c,0x3b6b3c16,0x3b8a7af4,0x3b78a003,0x3adb606f,0x3b07e58e,0x3abf2848,0x3b314f18, -0x3a6e64b3,0x3a29f8bc,0x38ce9382,0x3b1c4e3d,0x3b3e9229,0x3b4d422c,0x3afcab21,0x3a76c258,0x3a599702,0xb9e29c39,0xba495e8c,0xba5e2422,0xba4bb88e,0xbaff368c,0xbb9a9964,0xbbcdc78d,0xbbfa75c8,0xbbb8dc46,0xbba45dd9,0xbb37c25d,0xbb6c6780,0x3a41ca15,0x3a0ea83e,0x390ec256,0x3ab83fb4, -0x3a5a4d47,0x39efa3ed,0x3abd3158,0x3b1f387b,0x3ba350fb,0x3bbd21ce,0x3bba2d18,0x3b2fb404,0x3b68ca39,0x3b7123fa,0x3bc59c4e,0x39ae11de,0xb9634072,0x397e3074,0x3b8fb30f,0x3bbbf294,0x3bc9f629,0x3b4418cd,0x3abc0569,0x3ace3f1b,0x39463de3,0xba70fd28,0xbaaa2ff6,0xbb178e30,0xbb902b7b, -0xbb96243f,0xbbce5bde,0xbbdb61f7,0xbb26a218,0xbb371e9e,0xbb0d5618,0xbb14dae1,0x3ab8ed44,0x3b081a29,0x3a989aed,0x3aed859f,0x3b168610,0x3af06bae,0x3b5d6590,0x3b9cd209,0x3bf1240c,0x3c0b7e5b,0x3bed5075,0x3b3ae9db,0x3b4809ae,0x3b21963b,0x3b8aaf07,0x3ad43afa,0x3a2dc199,0x389f2f14, -0x3b9b5f79,0x3bba8850,0x3ba6bb77,0x3b4701fb,0x3c0204c1,0x3b8c4742,0x3b868fba,0x3b80f75d,0x3b1df74a,0x3be9c226,0x3c1b0bf9,0x3c0fc3fb,0x3bbc4f73,0x39f7258f,0xb9a80e41,0xbaa22a44,0xba90a555,0x3b84d7a1,0xbb5fabf3,0xbb9bb78d,0xbc0536f8,0xbc037f66,0xbc058412,0xbc15d8c7,0xbc1baf68, -0xbc10898a,0xbc4868b4,0xbc208200,0xbba4f119,0xbb53c225,0x3befc5e9,0x3c022c78,0x3afc0973,0x39a7256b,0xbb049b42,0xbb80482b,0xba237cbf,0x3a8c1c73,0xb98a8de6,0x3be5ea3e,0xba67f6e8,0x39aa66cb,0x3bf4dc89,0x3bd17882,0x3b97a59d,0xbbebbe47,0xbc303a72,0xbbaca1bb,0xbb559557,0xb9ff93e1, -0xb8b236c5,0x38ee7656,0xbac1e226,0xbb208b91,0x39a8ecb7,0x3ae15f80,0x3af97721,0x3ad4c0b0,0x3b1e4c8a,0x3bb0fecc,0x3b8cd147,0x3bb1d887,0x3bb36022,0x3c0178a7,0x3b9c5f49,0xbb437f51,0xbbed0438,0xbc0b481d,0xbc052235,0x3b39c007,0x3bc87777,0x3ae94f58,0xbb5a52bc,0xbc05ce21,0xbc26be69, -0xbb8003b5,0xbc169e5b,0xbc006618,0xbc34c3c0,0xbbf230db,0xba9c7e99,0xbb8f060b,0xbbc5da80,0xbb82ae92,0xb8f47c2f,0x3a03183f,0xb8f22f2c,0x398aa731,0x38d08c65,0xbab93a7f,0xbab4dcb9,0xbaadd377,0xbb0f003f,0xba293f35,0xb9e2ac9c,0x392f9353,0xb79f6459,0xba0ea5d2,0xbb070e55,0xba832d7c, -0xbafcf8bd,0xbb79f370,0xbae500ff,0xbaa93ddd,0x3b496f1e,0xbb7863cd,0xbbb8ccd8,0x3a140cbd,0x39b6b04c,0x3aab2ee6,0x3bdc5fb4,0xbbc97aa5,0xbb39b0c0,0xbb94a883,0xbc017beb,0xbbbc13c5,0xb9c1b0b5,0xb8f4a8df,0xb93d4df5,0xbaa9f661,0xb9fc540f,0xb930a6f2,0xb885b7b5,0xb79ce71d,0xb8ca785f, -0xb9f5bce5,0xba999e53,0xbac09d8d,0xba288ac4,0x38f9bbd2,0x3989a78d,0xba92ed87,0xb7f8a309,0xba349f58,0xbae826cc,0xbb2fc055,0xbb3c89a1,0xbb757af3,0x3a989a4b,0x3b08a316,0x3bd68ff6,0xbbebafdb,0xbc188cfa,0xbabacf04,0x3b9dccb3,0x3c1b9681,0x3c545380,0x3ab9a64e,0x3b87e571,0xbb1ec2e2, -0x3acf138f,0x3b5433f8,0x3ba14660,0xb9d5c25c,0xba0184a4,0x3b265c2d,0x3a473897,0x3952d986,0x381926e0,0x390bb4a2,0xb9f182d4,0xba9874e8,0x39bf0654,0x3adbd9c5,0x3b571987,0x3b0a0801,0x3b02bdc0,0x3b055f6b,0x3b184178,0x3b4ee3ce,0x3b5f4090,0x3b88813d,0x3b321dfb,0x38f93e5f,0xb9ff7a35, -0xbaa9fd59,0xbaee8719,0x3a1e8cf8,0x3b00e834,0x3a8304e4,0x3bbcedb4,0x3bd409d5,0x3ba8eb04,0x3bad623f,0x3b6e3a68,0x3b930331,0x3a0059e9,0xb9f64a7b,0xba7d5c65,0x3a67f9fb,0x3a106073,0xbaa224d1,0xb9d9f604,0xba109ed6,0x370eb07d,0xba4f59a6,0xb9ecbd73,0xb993073c,0x398d2e3c,0x38b5e851, -0xba90d57b,0xbb234e54,0xbb5c34fc,0xbb75da8d,0xbb472bcf,0xbb49e3ba,0xbb08f78e,0xba149f1c,0x3a76a314,0x3b0a4cef,0x3b302cd4,0x3b2dabbc,0x3b323c5d,0xba902b65,0xbb35f280,0xbb56a5ea,0xbb7908c5,0xbb349b08,0xba8ecd21,0x3b60384b,0xbba75b1e,0xbbba7fc2,0xbb887c92,0xbb4a0879,0xbb086a32, -0xbafe8b14,0xbab1ff5a,0xba5485c9,0xba02c7f9,0xba6d31c5,0xba854238,0xb992e2ce,0x3a375fca,0x3aae1b6e,0x3a6cd00f,0xb6d6dbff,0xba56bae0,0xbb285d7a,0xbb51505e,0xbb33d651,0xbad5318b,0xb926fd87,0x3a4bfc88,0x3b54bf0f,0x3b984c4d,0x3bbddd56,0x3be73193,0x3bf4d490,0x3bf33752,0x3bdc96a6, -0x3ba8eed3,0x3b27ffd0,0x3ab43fa4,0xb84e2f7f,0xbb1b26da,0xbb62788a,0x39faddd9,0x3adb0b48,0x3acb192f,0x3adc8093,0x3b3679af,0x3b4ef8f8,0x3b53b9bf,0x3b1cc59a,0x3b2960c8,0x3b3955f1,0x3b4977ff,0x3b3c3273,0x3b24d9b3,0x3b23658e,0x3a94fc17,0xb8aba706,0xbaed157a,0xbafc5617,0xbb0af038, -0xbb0b3d1d,0xbaf4e5e2,0xbabd2a0b,0xba9c0bbc,0xb91b5468,0x3a3e8e24,0x3ab41a0d,0x3b3beb41,0x3b8989b8,0x3bb743ed,0x3ba6c846,0x3b95b0d3,0x3b8c6c26,0x3b475910,0x3b0a90bc,0x3ad43a71,0x3a755aa2,0x3b97e124,0x3b8ce65d,0x3b8e6593,0x3b8797a6,0x3b8129b3,0x3b61aa25,0x3b476f85,0x3b45ae1c, -0x3b587a3b,0x3b479b9f,0x3b69b362,0x3b0f39fb,0x3ac626e2,0x3a6cbafb,0xb9855684,0xba221cca,0xbad881c6,0xbab8ad25,0xba98b402,0xbabbf9eb,0xbac64ef5,0xbae49093,0xbafed2b8,0xbb02b119,0xbb0f156c,0xbb12a5df,0xba880234,0xb9d5c758,0x3a4e022b,0x3aa99321,0x3b08a28b,0x3b3524a5,0x3b513fe0, -0x3b7db6a2,0x3b8d9aa8,0x3b92d9b3,0xb9b60929,0x39851314,0xb9d6c985,0xb9a70803,0xba164e53,0xb8bf3584,0xb82d1f3f,0xb9aa30aa,0xba90eb35,0xbaf72b67,0xbb2fc094,0xbb3d3d81,0xbb46a524,0xbb66e995,0xbb49cd07,0xbb3a57fe,0xbb3bc625,0xbb3d5caf,0xbb57a09f,0xbb4b2010,0xbb3844bd,0xbb2ca5b2, -0xbb18e6ad,0xbb106c89,0xbaf06543,0xbabc4d19,0xbaeb9f75,0xbabb8da0,0xbac3ea85,0xbac0f323,0xbaab1347,0xba9de583,0xba7654a4,0xbaaeceab,0xba870ae7,0xba19eed5,0xb98447e4,0xb8e5e452,0xb9a4db15,0xb9f69ea4,0xba3628ce,0xb9d7bd62,0xba23c9cd,0xba3326f6,0xba58bf6e,0xba55a1c8,0xba6b37a2, -0xba922c8c,0xbabb9c35,0xbadab09b,0xbab84d09,0xbac2b4c0,0xbaeb3120,0xbad3d9c0,0xbac662b1,0xbacd73ed,0xbad60f3a,0xbae4f463,0xbaf0dc59,0xbb00b767,0xbb05fb9a,0xbb055d3b,0xbb036d54,0xbadf01f3,0xbaced3b4,0xbaae7233,0xba8a4805,0xba5a4d81,0xba26f05e,0xba12a3c8,0xb9958f21,0xb924326a, -0xbb37fb9a,0x3a1fd4e8,0x3a0b9f3c,0x3a0bb7a4,0x39e970bc,0x39b2dac8,0x3910876d,0x3934831a,0x3902cf1c,0xb8d73cbc,0x3906376b,0x3945b428,0x3875c12b,0x3977804a,0x396fcd63,0xb75d735a,0x39927a40,0x39cfc311,0x39f87e41,0x39ed32d2,0x3a0054d2,0x3a0598a7,0x3a248827,0x3a3c247f,0x3a5a5db1, -0x3a7e9c4e,0x3a64fb88,0x39eeff15,0x39f2701b,0x39daa775,0x3a2d85ec,0x3a048349,0x39c83043,0x39622321,0x3a0c99a9,0x3a1965d1,0x3a292cfa,0x3a0bc767,0x3a0345b3,0x3a161d84,0x39ac2067,0x38296835,0xb9ad1736,0x3980e0a4,0xb939b8ac,0xbad8f0e7,0xbaaaade7,0xbac684eb,0xbae88e65,0xbaa76308, -0xba5210e2,0xba8950a2,0x3924fd76,0x399c16f4,0x399a41f0,0x3a21734e,0x3a25d48c,0x3a14d6db,0x3a4f25c2,0x3a96c6eb,0x3af62a1c,0x3afabab7,0x3ae46528,0x3a99cfc9,0x3aa63dfa,0x3acea6e8,0x3b0fd24e,0x39e8d2bf,0xb918a06a,0x392fa61d,0x3ad37557,0x3b0cfc98,0x3b11d588,0x3a8f80c8,0x3a8a2290, -0x3a97a08e,0x39b15dd2,0xb9232c20,0xbaa817fb,0xba28efea,0xba6af562,0xbb527c5e,0xbb086e92,0xbb0fb97a,0xbb3cc046,0xbab8ecec,0xbaa9edf7,0xbb1b2876,0xb762f6dd,0x399d6bb1,0x392277a0,0x3a4502f5,0x3a7337f7,0x3aa16365,0x3adbf85b,0x3b1d8fc8,0x3b57bdb3,0x3b7c89ba,0x3b5a7d75,0x3aa4927f, -0x3adc63ba,0x3aa3427f,0x3b41aed8,0x3a3b1a65,0x39bb0b71,0xb937cbd6,0x3b122712,0x3b317e16,0x3b2b307d,0x3ad5c2e3,0x39fad644,0x3a799318,0xb9c43f29,0xba57dc26,0xbae1476a,0xba034243,0xbac4e127,0xbbb7ff0f,0xbbb8603c,0xbbe6e308,0xbbc98733,0xbb9ff447,0xbb42c1f5,0xbb8708bb,0x39359f55, -0xb92ad34d,0xb9fdd434,0x3a8f5810,0x3a73d555,0x3a82da63,0x3ae26705,0x3b280f4e,0x3b97b32c,0x3bb0312a,0x3ba9d68a,0x3b0e64d0,0x3b51df5e,0x3b60ffe0,0x3bc9fded,0xb8202597,0xba1a3c2f,0xb90d539a,0x3b89d6e1,0x3bb34272,0x3badfafd,0x3b1ca299,0x3a9fb9f5,0x3ad1cce8,0xb8db6a39,0xba95c282, -0xbb1ff66d,0xbadc6fd1,0xbb75bb69,0xbbad5441,0xbbaff724,0xbbba1a24,0xbaf7af5e,0xbb0e2d14,0xbaffa158,0xbb421fbf,0x3a5cc489,0x3aa92bd0,0x395610cb,0x3ac8aa37,0x3b183fc7,0x3b22b9e2,0x3b7c0545,0x3ba46c00,0x3bdf9636,0x3bffe9a2,0x3bcdf02a,0x3b06acba,0x3b091c97,0x3b0f358f,0x3ba1c6af, -0x3ab4fccd,0x393de0de,0xb9cf09c5,0x3b91555e,0x3bacf4ad,0x3b84fa22,0x3b20743d,0x3c12f80a,0x3bbb1ff9,0x3bc41a92,0x3bb8609a,0x3b5c58d0,0x3bf6c608,0x3c1740c2,0x3c02bc91,0x3bc1b2c9,0x3a945340,0x39ab46ad,0xba0d0afc,0xba0ec167,0x3b55172c,0xbb0d0284,0xbb59a8c5,0xbc0ca3c7,0xbc0e7928, -0xbc1bf50b,0xbc281e72,0xbc3103cb,0xbc22e2d7,0xbc4f4981,0xbc1a3d31,0xbb8e9167,0xba836812,0x3bd3258a,0x3bb92b08,0xb8c34e97,0xba97cea2,0xbb136360,0xbb0841a8,0x391ed3f7,0x3afa35fc,0x3aa44aa4,0x3c064e84,0xb9c45689,0xb8c4169e,0x3b983b3e,0x3b91475b,0x3bc11304,0xbbc5d3b4,0xbc1b6c12, -0xbb9a8090,0xbb493107,0xba346f98,0xb9212460,0x395c211c,0xba84a665,0xbb18400e,0x39b1d514,0x3ac70f2b,0x3aec0dec,0x3a9174e9,0x3b064dd7,0x3ba1458e,0x3ba07607,0x3bc79e6d,0x3bb5aec2,0x3bdbe312,0x3b44d7ed,0xbb83c851,0xbc0747fb,0xbc0ceaac,0xbbbb552f,0x3b75f252,0x3bc4fe04,0x3ac30a59, -0xbb905803,0xbc108839,0xbc1e90e9,0xbb57d1f7,0xbc1f4772,0xbbc7519a,0xbc0f38d0,0xbbc9faec,0xbb50385d,0xbb3df0d1,0xbb81316f,0xbb7cdd99,0x39d5eeb9,0x39faec64,0xb87e4f68,0x38c4690b,0x39a1e98e,0xba63186a,0xba9ef7f3,0xbaaeebe5,0xbb141c87,0xba94c903,0xbaa9cae2,0xba1027a2,0xb972fd19, -0xb9ffcef8,0xbaf954a4,0xba858e2c,0xbb00846d,0xbb7e1f1f,0xba4f16aa,0xb9a84ddf,0x3af89237,0xbb6f6ccd,0xbba31faf,0x3acdff8f,0x39f17954,0x3a872f9a,0x3c110489,0xbbdf4bb9,0xbb0d2888,0x386153d6,0xbbc9ceb4,0xbbb6ada4,0xbb87191d,0x39e9dc6a,0x393f8df6,0xbaf88e0b,0xb942b51b,0xb9637f63, -0x38aa61ac,0xb7b79679,0xb764d685,0xb8b268e4,0xba6f7013,0xbab0cf0e,0xba39ad47,0x385a6afa,0x3811181e,0xbaa70148,0xb9a0f7ff,0xba6bee92,0xbb045136,0xbb257741,0xbb22c7a5,0xbb5de67e,0x3b1d3534,0x3b32aa71,0x3b92be85,0xbbfaa7a3,0xbc07c22d,0x3aae2266,0x3bca4b96,0x3c1f5dc5,0x3c4ed948, -0x3a620a2f,0x3bcf2aee,0x3ab736d2,0xbb2482f6,0xbaef1e3f,0x3b0aeba6,0xbacb7706,0xbaa2b87d,0x3ac5ea27,0x39f50f58,0x37e62c13,0xb907490e,0x38940d25,0xb994457b,0xba7415f5,0x398efb9c,0x3abfe0f3,0x3b5d7ea1,0x3b16903e,0x3b20ad0f,0x3b2f1cb9,0x3b38cf40,0x3b5987ab,0x3b3967c6,0x3b6094bb, -0x3b0e2ced,0x388e3ddd,0xba9bdf52,0xbaf57eeb,0xbaa5e785,0x3988ccff,0x3b0dafab,0x3b2475ef,0x3bf2efe4,0x3bee286a,0x3b269612,0x3bce6498,0x3b446ddf,0x3b8c0085,0x3b26355c,0x3afc8f1a,0x39b4b285,0x3a9b6370,0x39d53146,0xbab69fda,0xb9573dc1,0xb917af3a,0x39dc462a,0xb96c93fa,0xb95e07a8, -0xb88b7856,0x39eb714b,0x3a1019ee,0xb88fa463,0xbaa8dbad,0xbb13d0fe,0xbb47493d,0xbb16f8e3,0xbb1cf1f8,0xbabac527,0xba015d35,0x3a046d49,0x3ad16ab4,0x3ad8d7de,0x3ab04639,0x3a56f366,0xbb37c0af,0xbb80d85a,0xbb918267,0xbb989be0,0xbb362e46,0xb9b056bf,0x3b68fa2e,0xbb88a2b9,0xbbb1ce28, -0xbb96f331,0xbb73e2ed,0xbb2706e2,0xbb12fe75,0xbad35b1d,0xba7eaf82,0xba1b1131,0xba7a583e,0xba905c57,0xba5c7f65,0x38d9f0c2,0x3a80ade3,0x3a887c74,0x39ae80e5,0xb9c1cdb2,0xbb16904c,0xbb4c3c7b,0xbb305d6e,0xbadf6c69,0xb9bd8098,0x3a3199ba,0x3b497663,0x3b924c76,0x3bb628ee,0x3bd1a47b, -0x3bd89c99,0x3bd5026e,0x3bb3103a,0x3b68beaf,0x39ffc01a,0xba073222,0xbad982bd,0xbb5b97c3,0xbb52ac18,0xba5bf3bf,0x39a99552,0x3a2218c1,0x3a6f9c32,0x3af1d56b,0x3b0aee54,0x3b156cf9,0x3aafb730,0x3ae7b760,0x3b08a0a7,0x3b2b50dd,0x3b23a276,0x3b249621,0x3b360458,0x3ac7d6b4,0x39c8216e, -0xbaa86e85,0xbace6e66,0xbaf8b4df,0xbb0a36e5,0xbafaa3a8,0xbabf42c6,0xba938244,0xb90a56dd,0x3a30770b,0x3aab1e5f,0x3b2c3b57,0x3b75d31b,0x3b9f99ab,0x3b8b984a,0x3b6bfa60,0x3b40fb81,0x3ac5d1de,0x3a3f9bc8,0x39e4b803,0xb9a6adff,0x3b8618b9,0x3b7cf60a,0x3b7d4af4,0x3b5f617f,0x3b52847c, -0x3b343d18,0x3b13c4a5,0x3b0f079f,0x3b3b47f0,0x3b404cc9,0x3b78f572,0x3b2707e4,0x3b0d1364,0x3ae014ae,0x39bddcbd,0xb8651b17,0xba8d8d04,0xba7a6aa3,0xba4932fe,0xba9bb88e,0xba9d08ef,0xbabd3a8f,0xbad46f40,0xbae1884b,0xbafacd8f,0xbb044ae5,0xba5020e2,0xb917864d,0x3a89fb7f,0x3ad17c9f, -0x3b2324ef,0x3b579861,0x3b72ff5d,0x3b8255c4,0x3b7e9919,0x3b82d4c4,0x3a68c5d1,0x3ab8b269,0x3a85e726,0x3a948c68,0x3a60d166,0x3ab26f8d,0x3ab5b0c5,0x3a858831,0x393becc5,0xba4ead71,0xbadb62f3,0xbaf5ef9f,0xbb078d66,0xbb23c25d,0xbb1084b0,0xbb0cd140,0xbb17c7c8,0xbb215101,0xbb48e6b3, -0xbb3ef7f8,0xbb308af0,0xbb25b1fa,0xbb142465,0xbb0c6273,0xbaeb5193,0xbabb37a8,0xbad444c5,0xba96f2db,0xba904f93,0xba7a39e9,0xba541d31,0xba2e1524,0xb9c654d4,0xba243a43,0x37ef3b3c,0x3a261f36,0xb88899f5,0x38ebc96d,0xb8e221e9,0xb9ab2ea3,0xba16d7b5,0xb9c1915b,0xba1c349c,0xba2a9236, -0xba3a2c3d,0xba1a4547,0xba1d19c5,0xba4e0e42,0xba8e29dd,0xbaaa9d2a,0xba8990a9,0xba945f21,0xbac95d1b,0xbab22b0c,0xbaa5b524,0xbaae9e1c,0xbab6dd9a,0xbac544fc,0xbad1f35e,0xbae2745c,0xbaed73a3,0xbaee7d03,0xbae6eab2,0xbabe5aea,0xbaaaf903,0xba86b9d3,0xba3b9eaf,0xb9d17cb2,0xb959d14f, -0xb97540b1,0xb8557eb2,0x37226940,0xbb20a512,0x3a004a20,0x39eed6ca,0x39fa5f46,0x39b9984b,0x3982fc9f,0x37e79ffd,0x3927c285,0x38d8855b,0xb97b5be0,0x38c08656,0x3925db65,0xb8724501,0x3931847d,0x39222404,0xb8bf90c2,0x39310b4d,0x3991aa7e,0x39be91f0,0x39bb10ab,0x39d3c319,0x39f5c246, -0x3a16de5f,0x3a29db82,0x3a3f808b,0x3a5a1dc8,0x3a3f0519,0x39aecf56,0x39b1ec21,0x39ad8cfc,0x3a29fe42,0x39e570b6,0x3998337f,0x3906534d,0x39f2cf45,0x3a02b93e,0x3a060977,0x39e7d07d,0x39b2ea4c,0x3a0ba3bd,0x398047fd,0xb8808c11,0xba14264d,0x3987f8cb,0xb9021c72,0xbaee0c0f,0xba86fbc6, -0xbaa8893d,0xbaedefc5,0xba9eb010,0xba4e7ab5,0xba93c2b6,0xb90e3816,0xb648d198,0x3920eea7,0x39e6f231,0x3a16305e,0x3a2e0b66,0x3a551427,0x3a93a04a,0x3ae4ddb4,0x3ae44df7,0x3ac9c54b,0x3a80c269,0x3a889aa5,0x3ab51857,0x3b0c76e1,0x398dbf7c,0xb9a4d6b9,0x36b3960c,0x3ac484b0,0x3b03193c, -0x3af65606,0x3a640d42,0x3a6bf610,0x3a9880c5,0x3937d1b3,0xb990c314,0xbac79d69,0xb9ed04e4,0xba210745,0xbb63144c,0xbae269d6,0xbae661e6,0xbb4ba12a,0xba9d18cd,0xbaa3927e,0xbb1e8e0b,0xb9c4d8c4,0xb92383cb,0xb7dfceb4,0x39ffdf89,0x3a534d85,0x3ab79359,0x3ae67baf,0x3b1c3dc6,0x3b4740ec, -0x3b612df6,0x3b3a2458,0x3a6c23e5,0x3a9eb744,0x3a7b86de,0x3b4dfb68,0x3a0f515f,0x39086e42,0xb9af1458,0x3b08a439,0x3b22f171,0x3b090b06,0x3ab2c455,0x3940e579,0x3a88f72d,0xb9cc6b27,0xba6d4209,0xbb160964,0xb98ad1b5,0xba94f66b,0xbbc8a7e4,0xbb9e77c0,0xbbcbf732,0xbbd43b63,0xbb92ba1c, -0xbb40d51e,0xbb8dc0ba,0xba000134,0xba634087,0xba5617de,0x3a334126,0x3a71377f,0x3abcfc2f,0x3af93d42,0x3b2ebc7d,0x3b8f3cf3,0x3ba1d3a9,0x3b9834d4,0x3adffa96,0x3b30c8ab,0x3b445e71,0x3bc9a6eb,0xb9b0f3b4,0xba5f944c,0xb9d6d434,0x3b833ef4,0x3ba947d8,0x3b91027e,0x3afbc3d9,0x3a8dda9b, -0x3ad588af,0xb9c59e08,0xbaac6b77,0xbb50cb1d,0xba8cb8f7,0xbb44689f,0xbbb4fa52,0xbb8841f1,0xbb8e29a0,0xba91e114,0xbab0d00f,0xbabf3262,0xbb525e02,0x39617d83,0x39debe4d,0xba0612ad,0x3a92107f,0x3b0a3469,0x3b40d298,0x3b84a043,0x3ba60908,0x3bcf641e,0x3be42106,0x3babcbfd,0x3aaa23bb, -0x3a74e5b6,0x3adf5856,0x3bb41459,0x3a9689a4,0xb95deec0,0xba1e8535,0x3b885459,0x3b9da32e,0x3b4617e6,0x3af8d29c,0x3c1d3a66,0x3bdce2c4,0x3be91e6b,0x3bda3a8a,0x3b8d3ceb,0x3bfaa275,0x3c09c381,0x3bd7f498,0x3bb22a0a,0x3ab1346d,0x3a233f00,0xb82f1ed6,0xb8046a62,0x3b178c7e,0xba4608aa, -0xbad3e25c,0xbc0bb729,0xbc0e575e,0xbc23bb31,0xbc2ba871,0xbc3b131d,0xbc2bb3f2,0xbc4972ff,0xbc0be964,0xbb532a76,0x3af709ff,0x3bc94dc8,0x3b82f4c4,0xbada8c36,0xbb09590c,0xbb1128c4,0xb99f2200,0x3a02d121,0x3b2673a1,0x3b56ab7a,0x3c174639,0x3812e156,0xb8977f09,0x3b1528e8,0x3b3257f7, -0x3bd52f50,0xbb9bbecc,0xbbfe7b68,0xbb856928,0xbb284b13,0xba48d854,0xb985daa1,0x38f41412,0xba01f9c7,0xbb04c26d,0x3957e51c,0x3a9dce38,0x3acd3ca3,0x3a17df8f,0x3ac92ab1,0x3b8b021c,0x3ba7be21,0x3bcf3c93,0x3bb2234c,0x3ba84be9,0x3a9f958f,0xbb98f3ac,0xbc136910,0xbc0922fc,0xbb52e892, -0x3b9017bd,0x3bbb5ccf,0x3ad2cc40,0xbba49a22,0xbc15c6a4,0xbc14b98e,0xbb3f807d,0xbc135497,0xbb8ed91c,0xbbe33b67,0xbbab6adb,0xbb9651da,0xbad8481f,0xbb1005dc,0xbb455a85,0x3a937ea0,0x394a88f8,0x3903c059,0xb8bd323f,0x39ab3cc1,0xb9b7a69b,0xba7da5e4,0xba9c5ac0,0xbb11bc8b,0xbab9783d, -0xbae996cf,0xba726ed4,0xb9b4fc80,0xb9e48def,0xbacbde45,0xba8c6473,0xbaf6374f,0xbb623674,0x39aa4f67,0x3a37fccf,0x3a3aac7d,0xbb622ce3,0xbb89dcbd,0x3b263280,0x3a73c6ef,0x3ab04584,0x3c29f03f,0xbbcb89cf,0xba954a43,0x3b9e6fc0,0xbba017db,0xbbba0b97,0xbbf05192,0x3a57687e,0x39f6f29e, -0xbaf08fb3,0x3905ff14,0xb9bdf5b2,0x396f1427,0xb8488d51,0xb78fd749,0x395ce1b2,0xba1bd3bb,0xba8f12e4,0xba37953e,0x3936cc9d,0x3840d358,0xba8c805d,0xb9dfe58c,0xba890e9c,0xbb066787,0xbb16cf95,0xbafff56e,0xbb25ba76,0x3b73f2f9,0x3b5d4237,0x3b0f3d5d,0xbbf956b9,0xbbe262ab,0x3b87c085, -0x3be5f266,0x3c182931,0x3c3b7de1,0x39efd111,0x3beca9c7,0x3bd8b59b,0xbbb2d1b9,0xbbdd5909,0xbad99510,0xbb11ff0a,0xbaa8ae8d,0x3a0ef4df,0x397d3ccc,0xb791087a,0xb98100ca,0xb802c585,0xb8bcd6be,0xba2b18a5,0x39298bf6,0x3a92e30c,0x3b5b5de7,0x3b218a66,0x3b3794a1,0x3b53a38f,0x3b4cb22f, -0x3b577084,0x3b122b34,0x3b20283f,0x3ac3db6f,0x38d8bcdd,0xbae87b97,0xbb178bb2,0xba6576ea,0x3921e77f,0x3b33f2ab,0x3b9dab1a,0x3c01c116,0x3bc98e70,0xba831dcf,0x3bb2dddd,0x3b36aa88,0x3b80a76e,0x3b978e85,0x3b9dde06,0x3aee5bd6,0x3ab419fa,0x38f85ddd,0xba9e40be,0x36147c65,0x38ed2b05, -0x3a07cc0a,0x39700c90,0x380f9b10,0x38a5f9fe,0x3a1c687c,0x3a8080ac,0x3a62107f,0xb7ce1335,0xba834e1a,0xbb0b66df,0xbabf9bfc,0xbad1fe29,0xba1056eb,0xb9357539,0x39a881da,0x3a98340b,0x3a565f80,0x39947253,0xba423a1a,0xbb86b293,0xbb9e5f8e,0xbbb0879e,0xbba2a085,0xbb0c3d82,0x3a50732a, -0x3b7cb767,0xbb31833e,0xbb899178,0xbb8f0247,0xbb833539,0xbb377620,0xbb1f3e5c,0xbae6d881,0xba90d8b0,0xba20e39e,0xba598671,0xba8126cf,0xba8f8e28,0xb9bae548,0x3a09edeb,0x3a810241,0x3a0d648e,0x375016d9,0xbafb4d19,0xbb3c75c9,0xbb1d7b76,0xbade7db5,0xba24bc1d,0x39bdd065,0x3b2cd02c, -0x3b832380,0x3ba2e92a,0x3bafc228,0x3baee10f,0x3ba6bcbf,0x3b849d0b,0x3b0cbbe6,0xba86231c,0xbafc4aed,0xbb3d9ee1,0xbb77751d,0xbb2b7341,0xbaf76d68,0xba8b995e,0xb9d51d80,0x38d80904,0x3a6e36f7,0x3a88b689,0x3aa26a6d,0x39a0d827,0x3a794765,0x3aaa8c06,0x3b03fc3d,0x3affbd0b,0x3b1526b1, -0x3b33cbfd,0x3ae5eba5,0x3a486a0b,0xba3792c6,0xba9938f4,0xbad47c8a,0xbb082bf6,0xbaf56890,0xbab8ac17,0xba838a8b,0xb7a9e9a6,0x3a446ed9,0x3ab6dc83,0x3b230410,0x3b5ca9fa,0x3b869a00,0x3b5fab7c,0x3b295044,0x3ad28ec1,0x38859b9f,0xba14b0b9,0xba43256e,0xbab477a0,0x3b46a228,0x3b441b74, -0x3b443bf8,0x3b203b7c,0x3b14f03c,0x3b00123f,0x3ac7e340,0x3ac41885,0x3b1cdbb5,0x3b33a7c2,0x3b7910c0,0x3b378d46,0x3b2e863a,0x3b1e5d8c,0x3a7ab55f,0x3a0e95a5,0xb9d2768a,0xb9eb87b8,0xb9e497d9,0xba808e6b,0xba5e8fc0,0xba8c072c,0xba990c7e,0xbaa7664b,0xbab96da2,0xbac40cda,0xb9b69d62, -0x3991428f,0x3ababec9,0x3af47b24,0x3b31a5a8,0x3b63db6a,0x3b7519dc,0x3b66638f,0x3b390c3f,0x3b3fcbc2,0x3afdb647,0x3b156433,0x3b093272,0x3b15ba04,0x3b05c8de,0x3b244831,0x3b21f382,0x3b083abc,0x3aa883dc,0x39972dac,0xba177636,0xba44475d,0xba79129e,0xbaa549e3,0xba9695c1,0xbaa9cb4d, -0xbad768a3,0xbaf37f45,0xbb2eac24,0xbb22e9b6,0xbb19c9ff,0xbb10e065,0xbb02bd70,0xbaf76156,0xbad0b132,0xbaaa5ed0,0xbaad3bed,0xba5aab30,0xba37408a,0xb9e39939,0xb997908e,0xb8b04d27,0x39552cdb,0x393c8a80,0x3a8f07af,0x3ae4c381,0x38be1ada,0x399fb515,0x38a06d79,0xb95d28c9,0xb9fce164, -0xb99643aa,0xba0444ca,0xba11e130,0xba0dab49,0xb9b72264,0xb99d7d06,0xb9e7eaa1,0xba37dbc6,0xba67d2b7,0xba2638c0,0xba3083ad,0xbaa03e26,0xba8698a8,0xba705fbe,0xba7dc508,0xba868094,0xba91e92d,0xba9d5e27,0xbaac1bfd,0xbab612d0,0xbab838cc,0xbaad87bf,0xba878b9a,0xba6559af,0xba1e875d, -0xb9a21869,0x38395e41,0x394a0fdf,0x388cb34a,0x39055d79,0x38f6e459,0xbaf2d749,0x39989d03,0x39a6a36d,0x39b6c3f6,0x3969367d,0x39294131,0xb7bb31d1,0x38cf0ba2,0x3886679d,0xb9a568e9,0x38be4944,0x392eb086,0xb90121ec,0x390e0950,0x38fdae28,0xb8f5dd85,0x384592ac,0x38ffaf4b,0x39a11209, -0x39851759,0x398dc4e0,0x39b0efd0,0x39e93cfa,0x3a0403ed,0x3a1669ea,0x3a22cfe3,0x3a06ab0b,0x392beeb3,0x3921e440,0x393bbb61,0x3a132f66,0x399c9c82,0x390f4576,0xb78ad04c,0x39a7fcb4,0x39b25d4a,0x39a32ffc,0x3996fccd,0x391c5025,0x39d936cd,0x3926b4b9,0xb94fc7fe,0xba390ad1,0x3959f36d, -0xb8e53667,0xbaf2886e,0xba576917,0xba909290,0xbaef00fb,0xba9a542f,0xba52a5ce,0xba934f6e,0xb9d6ea55,0xb9ae2e50,0x388f9acc,0x39712e9a,0x39f426c6,0x3a25b26d,0x3a3e3f7e,0x3a846785,0x3acd650d,0x3ac11604,0x3aa2c0a1,0x3a40225f,0x3a35c5f7,0x3a880be6,0x3afffb4a,0x36e3a5f2,0xba0e637d, -0xb96191f8,0x3aa9668d,0x3ae63822,0x3ac01080,0x3a2084b0,0x3a314f70,0x3a8ceb6e,0x37924351,0xb9dcbc8d,0xbad2463d,0xb99eb498,0xb9cb03c6,0xbb6a43e9,0xbab59d21,0xbab6c557,0xbb54b9fa,0xba8dc752,0xbaa35ce8,0xbb1a7037,0xba47905b,0xba21dfe9,0xb8d7dcd6,0x3946bf4f,0x3a1d3e09,0x3ab2d509, -0x3ad80b8c,0x3b10745a,0x3b3353eb,0x3b3c3418,0x3b10dc8e,0x3a020a90,0x3a2028df,0x3a0a63e8,0x3b4d2f05,0x3983ea08,0xb951fe04,0xba1001be,0x3aed4254,0x3b0b2c1e,0x3ac40797,0x3a869662,0xb8a5c343,0x3a879a60,0xb9e68f1d,0xba869fc8,0xbb2a7723,0xb8fc7248,0xba57a286,0xbbcab9b0,0xbb82fc6d, -0xbbaca7d8,0xbbd28f07,0xbb811cfe,0xbb34e824,0xbb8763cd,0xba9c222b,0xbacf8be2,0xba6eb6c3,0x395d0d3a,0x3a4edaf5,0x3adc3aba,0x3af57e1a,0x3b2d706c,0x3b86cd81,0x3b8dc481,0x3b80c676,0x3a9b7b26,0x3b023bbf,0x3b1640df,0x3bbfc5b4,0xba44197e,0xba9ceb2e,0xba3de1af,0x3b70e5dd,0x3b9b4535, -0x3b65475d,0x3ac1bf10,0x3a604e3c,0x3ac9ddad,0xba16010e,0xbabf0471,0xbb6ba49f,0xba10adf6,0xbb128c39,0xbbaadfdd,0xbb391b17,0xbb40b091,0xb93e0698,0xb9d88c37,0xba637591,0xbb4560c2,0xb9c006b3,0xb9dbff37,0xba7b80d2,0x3a17dd9b,0x3adfd7f7,0x3b485d84,0x3b8007e9,0x3b9ea248,0x3bbdb73d, -0x3bc068be,0x3b837235,0x39e6cdb1,0xb9c99879,0x3a81e209,0x3bbb0406,0x3a3ac151,0xba431c92,0xba59b36b,0x3b740868,0x3b8750ae,0x3aff41af,0x3aa7e6f8,0x3c20b845,0x3beb50e6,0x3bf48d14,0x3be41f61,0x3ba8a8b1,0x3bf23806,0x3be90dec,0x3b9e2446,0x3b8f9115,0x3a927490,0x39efa372,0xb7a1549a, -0x39bbc821,0x3ab34ca8,0x39eedc1e,0x38e105af,0xbc02514a,0xbc058a18,0xbc1f688a,0xbc24b1e3,0xbc3bfe15,0xbc2ce1d1,0xbc39c2b6,0xbbf067c5,0xbaecfc68,0x3ba2dae5,0x3bd3c1fa,0x3b47462f,0xbb457304,0xbb36d843,0xbb155941,0x3a682934,0x397eaf16,0x3b3600a9,0x3bb14c19,0x3c2409e7,0x38a1adf4, -0x392a87cd,0x3a22ff82,0x3aa9fc11,0x3bd4a0f8,0xbb670910,0xbbbf9891,0xbb57b37b,0xbad7ab5e,0xba659164,0xb8bb47c2,0xb87bbbd7,0xb8ee33a7,0xbac94106,0xb878b8fe,0x3a58ca95,0x3aab6480,0x36e22ac4,0x3a6aefbf,0x3b59d129,0x3b9d66ec,0x3bc516c7,0x3ba44e36,0x3b59c8da,0xba0e2970,0xbbaf9e4f, -0xbc1d7779,0xbc0271b2,0xba675af9,0x3b93ec15,0x3ba15c85,0x3ad06d31,0xbbbddf9c,0xbc1dd4e9,0xbc0bb794,0xbb42adc8,0xbbf438e8,0xbb1c0e3e,0xbbb0afb3,0xbb952c55,0xbba63372,0xba57be7a,0xba8ed75b,0xbacb7152,0x3aa421b4,0xb7fe45f6,0x3962e06b,0xb8ea10dc,0x39519939,0x379c3831,0xba26d4e9, -0xba7ce7c5,0xbb02f2b3,0xbac2685f,0xbaf386f8,0xba8c2007,0xb9f4bbe4,0xba09b8f9,0xbaa9b0f3,0xbaaab6cb,0xbaf46119,0xbb37f6f2,0x3a980f27,0x3ab651d4,0xb9def343,0xbb5ff298,0xbb67e7cc,0x3b543544,0x3ac0a40a,0x3afd61df,0x3c2d9b27,0xbba1212c,0xba1844b8,0x3c10df75,0xbb68e752,0xbbbfe74e, -0xbc185bac,0x3a7870db,0x3a02d5fe,0xba9f2ed7,0x392c36a6,0xb9b5a3fb,0x396650ff,0xb736df43,0xb7bbf47d,0x399cb1a4,0xb98ab921,0xba4cb92e,0xba222e77,0x39e51d47,0x39ad242f,0xba1628da,0xb9f4a7b6,0xbaa0c5cb,0xbb08e34c,0xbb15118b,0xbad457ff,0xbab9c1fb,0x3b9813d0,0x3b6f93ec,0xb9a77424, -0xbbeb5b7a,0xbbaf81f8,0x3bd96191,0x3be83db2,0x3c03eb3c,0x3c14bfd5,0xb9cb1376,0x3bc00ef0,0x3c3186ec,0xbbea84b6,0xbc328623,0xbbba0afc,0xbb2636cc,0xba7ef159,0xb8b50976,0x394359c5,0xb8079144,0xb94ef03c,0xb8c44961,0xb8ff6544,0xb9b83acc,0x371268fb,0x3a33aa83,0x3b4a0f56,0x3b2870ae, -0x3b462586,0x3b693b33,0x3b4ceddf,0x3b4322b6,0x3ac6a7b4,0x3aa2265a,0x39fef26d,0xb9818dd6,0xbb215360,0xbb3736c9,0xba7c2878,0x39575d76,0x3b5f0863,0x3bec060d,0x3bdbdf5f,0x3b3f7c17,0xbba11ce0,0x3b2a4cb3,0x3b3600ab,0x3b8009a4,0x3be1956f,0x3c015ad5,0x3b53d449,0x3ac51b11,0xb94dbf42, -0xba518eb9,0x391b0259,0x391cd1c0,0x39d32e80,0x39c2e4f6,0x399bfb3a,0x390fd37b,0x3a322eed,0x3aac8f9b,0x3ad4169c,0x3aa1d693,0x39b2beaa,0xba8634af,0xba23c662,0xba5c5595,0x39872e4a,0x39659892,0x39821e80,0x3a4ac3a1,0xb860b123,0xba532e53,0xbb08158b,0xbba8d24b,0xbbb63364,0xbbc947e6, -0xbb9e7e3c,0xbaa78faf,0x3ad79fc4,0x3b78fc82,0xbab105cc,0xbb313569,0xbb6f54d4,0xbb81fd4f,0xbb40ff58,0xbb228372,0xbaefb5eb,0xba9adeca,0xba14a75e,0xba2025fe,0xba4cec6c,0xba899776,0xba29edad,0x38a5c3a5,0x3a49d2cf,0x3a214bde,0x39984063,0xbac7eff3,0xbb223ef1,0xbb05f5dd,0xbadc4881, -0xba764459,0xb93652b1,0x3af5a278,0x3b4d6994,0x3b7fec91,0x3b80778e,0x3b750e80,0x3b5e9fc1,0x3b2c5322,0x3a848933,0xbb00b916,0xbb3bc20f,0xbb76ce91,0xbb77f2e7,0xbb05c97c,0xbb2f28c4,0xbb1006f7,0xbaadd58d,0xba201865,0x38e1c671,0x38023c6c,0x399538f6,0xba0abda0,0x39895c94,0x3a1c50d8, -0x3ab38b06,0x3aa94f74,0x3af4c801,0x3b1b3ca5,0x3aec8fae,0x3a883b6d,0xb8f6968a,0xba435e35,0xbaad8a3c,0xbb00d513,0xbae90560,0xbaa8bc4e,0xba593cfd,0x390bfa53,0x3a6603e9,0x3acb89bb,0x3b1bda3f,0x3b44a17b,0x3b5a46b0,0x3b288f02,0x3acc81f1,0x39c0eb0a,0xba93591e,0xbad354f5,0xbaeee4bb, -0xbb0ee58d,0x3ad76176,0x3aecd146,0x3aff4101,0x3ab785af,0x3aaea042,0x3aa10c35,0x3a774a5b,0x3a7c39e3,0x3b00cde4,0x3b210a51,0x3b6da801,0x3b3abc11,0x3b43f5ec,0x3b3c305c,0x3ac3b490,0x3a8d68f8,0x39915ef7,0x386bd72d,0xb8f117a8,0xba4e2d64,0xba00bf04,0xba28add0,0xba25b438,0xba36c3eb, -0xba409aab,0xba40bc69,0x3959881b,0x3a40d8e6,0x3ae3509d,0x3b018957,0x3b2d7459,0x3b5373dd,0x3b532e9c,0x3b25f142,0x3aaeeaad,0x3ac53386,0x3b300621,0x3b37058c,0x3b394f90,0x3b44c1a4,0x3b381586,0x3b4f8860,0x3b4652a6,0x3b311644,0x3b0321a3,0x3a995109,0x39e4bdd8,0x39b5d2f2,0x392021b3, -0x3821c5ea,0xb84ed0d0,0xb9bf497c,0xba5837c5,0xba933a0d,0xbb040c36,0xbaf46b7a,0xbaed695c,0xbadf9120,0xbaccd7e7,0xbac0d57b,0xbaa471ec,0xba8bf892,0xba715993,0xb9f50586,0xb98d0066,0x38bcca89,0x3981d37f,0x3a0a0964,0x3a5194bf,0x3a867aa2,0x3b051659,0x3b2a9a2a,0x39494867,0x39d943c6, -0x3979a9dc,0xb830e4cb,0xb9970152,0xb92786eb,0xb9a1cc5f,0xb9a1e27d,0xb963263b,0xb701a679,0x3895eab2,0xb716871e,0xb94f137f,0xb9af3694,0xb9253bed,0xb93a1c37,0xba464e76,0xba170f9f,0xba0021e5,0xba0d2d79,0xba172643,0xba2501a9,0xba361cb9,0xba4d039a,0xba5cd3be,0xba628f2b,0xba4a162f, -0xba0bacd0,0xb9c867ed,0xb9200d9e,0x38ada4b9,0x39d73f72,0x39fcadee,0x39945eb3,0x3968bd22,0x3926e6ae,0xba91a374,0x39acfbbb,0x39bac82f,0x39ec3c69,0x39586b13,0x384c08dc,0xb92237e6,0x3910e636,0x37908b92,0xb9fac738,0xb83df983,0x37ce64c8,0xb99bc5cb,0xb82b1ebb,0xb88c5521,0xb970cc3c, -0xb8b23ad6,0x3854c03d,0x391c0805,0x39014ecc,0x39500bdb,0x39c94fbc,0x39f0d545,0x3a0782fc,0x3a1a5eea,0x3a1722eb,0x39f60561,0x393d320e,0x39224a82,0x3960356d,0x3a28f098,0x39b87bf1,0x393c6f7d,0x38622a42,0x39c3bcb4,0x39c45333,0x399e1cf5,0x39a93dcf,0x3983ae3e,0x3a0ae5a4,0xb809ab35, -0xb95623c6,0xba4e3411,0x395dafb5,0xb845579e,0xbae359e1,0xba10090c,0xba6a8a26,0xbadc8e7f,0xba8d5ae9,0xba441101,0xba83d142,0xba3c4d1c,0xba1072d2,0x3836c403,0x38cd35c2,0x39ab1dba,0x3a394bce,0x3a4f1abe,0x3a8a780d,0x3ad05598,0x3ab206a4,0x3a90d581,0x3a38834a,0x3a159b20,0x3a6f2bc3, -0x3aff2546,0x37f7ea65,0xb9f5c779,0xb8b167e9,0x3ab5afe3,0x3aecc817,0x3ab0b7fd,0x3a29df6a,0x3a4b5f82,0x3a98fdb9,0xb88c85e6,0xb9be2002,0xbac9ebb0,0xb90060ef,0xb96444cf,0xbb5cf48b,0xba8d35ff,0xba7f9b53,0xbb5a1358,0xba7a3b0a,0xbaa79aab,0xbb094c60,0xba8f1776,0xba7bea16,0xb78385b0, -0xb88834ac,0x39d4b8aa,0x3aa7dee2,0x3ad67ef4,0x3b0a05af,0x3b2ccb43,0x3b1f68b4,0x3ae46437,0x39b42f8b,0x39969fa2,0x39c86d23,0x3b579173,0x39914d5a,0xb916fd71,0xb99f34d7,0x3afa6ab2,0x3b09c124,0x3aa3a94f,0x3a862eec,0x3906c214,0x3a9b9661,0xba06d705,0xba8cec47,0xbb2e489a,0xb6936a69, -0xba173b05,0xbbbb3b01,0xbb4ef207,0xbb8b182e,0xbbbded5b,0xbb55e3d5,0xbb25d285,0xbb69612f,0xbaf29ba9,0xbb10cdac,0xba4d18d9,0xb968d7f7,0x3a1dd2f5,0x3ae66bff,0x3af83fb6,0x3b300cd3,0x3b8544cb,0x3b769241,0x3b57fb77,0x3a70dcde,0x3ac9c0cc,0x3aefb128,0x3bb9da66,0xba4429d8,0xba88ed37, -0xb9d724f0,0x3b7b871d,0x3b9bdf66,0x3b47d3cf,0x3ac0ad09,0x3a836212,0x3ad3bc2d,0xba2913a7,0xbab88351,0xbb6d888b,0xb90d2f32,0xbac6f089,0xbb8fcf87,0xbacf7996,0xbad40426,0x3a1f8754,0x39975c43,0xb94fbd17,0xbb23aad8,0xba46304d,0xba950102,0xba951a40,0x38bc8c69,0x3a9676ef,0x3b3e735a, -0x3b70a46e,0x3b9595dc,0x3bb1ba98,0x3b9da813,0x3b3e7ec8,0xb9128a76,0xbaa4e47b,0x3a2d1e89,0x3bc51d01,0x3a360cb2,0xba39d02a,0xb9bbcf86,0x3b7c37c3,0x3b801d3c,0x3ab69cca,0x3a92b31c,0x3c27305e,0x3bf98a2b,0x3bf0b40f,0x3be063c7,0x3bbc7f6d,0x3bdbcd32,0x3bb860c9,0x3b46f427,0x3b48bbef, -0x39d516a7,0x395dfd63,0xb9578437,0x39c67479,0x3a288931,0x3aa41af3,0x3ad0055d,0xbbe08bc5,0xbbebdc39,0xbc117f8d,0xbc13871d,0xbc310251,0xbc225aa3,0xbc1c132a,0xbbb361c3,0x395ca3e9,0x3c07bd23,0x3bfb3ddc,0x3b4e5bcd,0xbb6bcf5a,0xbb2d7a1b,0xbae5538b,0x3b0bcaf5,0x39bbcc85,0x3b622aec, -0x3c013394,0x3c364748,0x39e6fc2c,0x3a21bb29,0xba2c29b0,0x39f3aee0,0x3bbc92c1,0xbb185a0a,0xbb8546f2,0xbb10d3db,0xba65166b,0xba36e68c,0x39169e52,0xb8d6850d,0x38b0ad52,0xba71581e,0xb9b1ad54,0x39e436ea,0x3a925393,0xb9f9fe83,0x390372d4,0x3b1450c3,0x3b8d48e5,0x3bb5f627,0x3b9b7f9c, -0x3b045307,0xbacfef1b,0xbbb98639,0xbc1c84e1,0xbbe0be1b,0x3af077d6,0x3b9d3a23,0x3b9002ed,0x3b00af52,0xbbc6d3f7,0xbc1e2bba,0xbbefbb1c,0xbb361149,0xbb97397c,0xb8ba99e4,0xbb73d01d,0xbb7cd3d9,0xbb97e7a9,0xb9e01049,0xba06c61a,0xb90c6e59,0x3a4b814f,0xb7878c00,0x389ef2cd,0xb8acdd50, -0x386096f0,0x391fca6b,0xb995c90b,0xba2d465a,0xbad189a6,0xbaabdaa2,0xbacb6bba,0xba5b1fe8,0xb98bad94,0xb9c4bdcd,0xba30d338,0xba8cc7f2,0xbaa0496c,0xbaa172ec,0x3b1a3d1d,0x3b18e08d,0xba53b1d7,0xbb397770,0xbb17b9a6,0x3b8c030e,0x3b3764ff,0x3b6a6184,0x3c2e4c91,0xbb22e855,0x39c505ed, -0x3c3e2e29,0xbb127eac,0xbbb35986,0xbc20dd96,0x3a431785,0x39befc96,0xba124dc6,0xb8934c1d,0xb91ee629,0x3912cae3,0x381c7051,0x36f574c7,0x393247ff,0xb751b129,0xb9e1096e,0xb9ff314e,0x3a644740,0x3a53c174,0x39572295,0xb8a859af,0xba8e8eda,0xbae07d32,0xbaf7f049,0xba5f56fa,0x3a209368, -0x3bbeb2c9,0x3b8d6123,0xbb0752bf,0xbbb698ba,0xbb3f11dc,0x3c156dc6,0x3bed601d,0x3beb0ae9,0x3be4c679,0xba1e67e5,0x3b685be5,0x3c505c0e,0xbbf73ce4,0xbc5b6770,0xbc14f06b,0xbb1b1ffe,0xba3136da,0xb947b3ad,0x395ef8f8,0xb8a5c3f3,0xb9176a1e,0xb8e31f76,0xb92d1a20,0xb925f6af,0xb8e10e70, -0x397c890c,0x3b26f907,0x3b300676,0x3b4bafa7,0x3b803150,0x3b4f3393,0x3b35eb29,0x3a96f108,0x39e8a6c7,0xb97de4f3,0xb9f04e61,0xbb27ba29,0xbb264ca9,0xba432bd0,0x3aab7839,0x3b9db218,0x3c1c0b5f,0x3b9fcc3c,0xba7613fe,0xbbfa162f,0xba213e05,0x3b8210df,0x3bad3df6,0x3c16340d,0x3c36f5e2, -0x3b8eee97,0x3ae2460d,0xb9a6db0c,0xb9c97399,0x393d47db,0x390800b8,0x399a26ee,0x39aed958,0x39b8e915,0x391f39d8,0x3a300a3d,0x3ac74bb7,0x3b0e19b7,0x3b1f7489,0x3ade2659,0x39644e82,0x3a0344dc,0x38dbf4b0,0x3a989bf6,0x3a78efa5,0x3a3a9a24,0x3a8f7ff3,0xb954497f,0xba96106a,0xbb1cb9d4, -0xbbaddc6d,0xbbb4a58a,0xbbc66deb,0xbb7bd457,0x39050151,0x3b35cf1c,0x3b82b576,0x39698ce4,0xba4d67f0,0xbb28927d,0xbb62066f,0xbb3be840,0xbb1c74a7,0xbadc5684,0xba8e9a34,0xb9cd204d,0xb9d8254c,0xba120cb4,0xba547d8d,0xba2fb733,0xb9600fac,0x3a0ab35b,0x3a1f818d,0x3a1b6875,0xba8472c8, -0xbb074fa9,0xbabd998c,0xbab03899,0xba7f8a86,0xb9f8b1a6,0x3aa4f62f,0x3b19fb75,0x3b3c11f2,0x3b2ad7ff,0x3b1d3b08,0x3b096f2c,0x3ae4f24d,0x3a200c43,0xbaff0b40,0xbb3c6cf6,0xbb765c10,0xbb410001,0xba8df7b7,0xbb27154f,0xbb39f453,0xbae65c8d,0xba840968,0xb9cd3683,0xba167408,0xb9e89290, -0xba85e225,0xb95c3b9c,0x38f98110,0x3a4f4964,0x3a323b40,0x3aa8cef9,0x3aea6c66,0x3adb7e37,0x3aa1b7db,0x39cc1f38,0xb9a5486a,0xba69bfc6,0xbae56113,0xbaaa8bbf,0xba689c15,0xb9b493fb,0x3a17920c,0x3aaebe31,0x3b06a83a,0x3b2b8a6d,0x3b441216,0x3b41fbe6,0x3b0cf5f9,0x3a82c59d,0xb995125a, -0xbac611d9,0xbaf1eed5,0xbb0c4fa1,0xbb170642,0x3a053f77,0x3a55c7ea,0x3a51a04a,0x3a0d662f,0x3a01a16c,0x3a172c8b,0x3a091d53,0x3a2e5b6e,0x3ad25ad1,0x3b0f0837,0x3b537284,0x3b3c2641,0x3b4b293d,0x3b4d6414,0x3af596d0,0x3acc985f,0x3a7a9cde,0x3a1fff3b,0x391a9c0e,0xb9c18ac3,0x391b0bd8, -0x372795a3,0x392eb7b7,0x393d0461,0x399a274a,0x39ddc7be,0x3a921e7a,0x3ac7c169,0x3b18e206,0x3b172e93,0x3b313539,0x3b41837d,0x3b2dad99,0x3ad18fa6,0x390bd639,0x39b32162,0x3b584de5,0x3b538a67,0x3b4be458,0x3b63eec4,0x3b581568,0x3b643b2e,0x3b59d5d6,0x3b3fcb9a,0x3b2783d2,0x3af39a71, -0x3aaefdfd,0x3aad9a23,0x3aa7bbdc,0x3ab08e81,0x3a8e28a0,0x3a28b833,0x37c940f7,0xb9298362,0xbaa919c5,0xba5d1585,0xba69aa5f,0xba4f3308,0xba3e8075,0xba2b964c,0xba0e766e,0xba02864c,0xb93ac21d,0x3937ae6f,0x39da0dd2,0x3a5ecfd5,0x3a85adc9,0x3ab778c3,0x3ad748c3,0x3b057a89,0x3b42165b, -0x3b5cc4e8,0x3a09ca69,0x3a475d49,0x39fdfe64,0x38b616d4,0xb93f4af6,0x391fbc06,0xb8373a98,0xb925ca13,0xb84219a5,0x394d0845,0x39a921e3,0x39966a11,0x39100547,0x38765b2d,0x39af2b8f,0x39faa074,0xb9b02fc1,0xb8a2d396,0x390773fd,0x39790002,0x3932dde8,0x3928447b,0x39008272,0x3892a88a, -0x380688c3,0x36d48000,0x38e6bde1,0x3990081f,0x39d6201f,0x3a176e62,0x3a3b7f97,0x3a7edb0b,0x3a774962,0x3a3750b7,0x3a0f59a1,0x39ec1a66,0x38a24cca,0x3992e3ab,0x399b2fe9,0x39b01dee,0x398d3f4e,0x396d6012,0x383a5949,0x394d2df3,0x394117af,0xb962227e,0x394dffa3,0x3967b91c,0xb92d7537, -0x38983deb,0x38ee1f4d,0x37b72e34,0x37c0822c,0x388a5149,0x39adebcb,0x3985c128,0x3974b3dc,0x397e3767,0x39baf50f,0x39d5dd56,0x39ff43c4,0x39d5eb6a,0x399fc544,0x38bb6204,0x3880063c,0x391fe077,0x3a1e678e,0x39954d71,0x38e171c1,0x36aa0d7a,0x399f4724,0x3999bb38,0x39497f2a,0x3983b778, -0x397658c4,0x3a0b3664,0x39755406,0xb9293f3c,0xba197169,0x3990f3ae,0x38fcc44c,0xbabca5dd,0xb9b5d289,0xba10142c,0xbaa4ec24,0xba4d6df1,0xba31c7f6,0xba408a22,0xba3daf85,0xba293c97,0x395f01b5,0x38afa673,0x39da8ee9,0x3a249e5a,0x3a32f641,0x3a79637c,0x3abe1d82,0x3a8d2ebb,0x3a553ce1, -0x3a09ba81,0x39bcbdea,0x3a325f3a,0x3ae5ee1a,0xb899a8cd,0xba01e06b,0xb8812834,0x3aaf577b,0x3ae0426e,0x3a943846,0x3a1c339c,0x3a35e6d2,0x3a9827bc,0x392155f1,0xb990528a,0xbaa514d2,0x38b78802,0x388ae714,0xbb41ff86,0xba2f54e9,0xba429550,0xbb4cc05d,0xba94fb59,0xbaa8da8a,0xbad3c642, -0xbaadaf1f,0xbaa11faa,0x3952ff97,0xb9287718,0x39ba8305,0x3a86d05d,0x3ab2ce04,0x3aed8c3d,0x3b1917c4,0x3aea2ace,0x3a8efa4d,0x3869ba7c,0xb85602a6,0x39590495,0x3b51c613,0x392076a6,0xb97e2d4e,0xb96057f3,0x3aedc9bb,0x3afaa662,0x3a73717e,0x3a73a55d,0x3945ae6a,0x3aa8836f,0xb96ff626, -0xba7b202d,0xbb1fa822,0x39269fcf,0xb9a0e7bb,0xbb9c09b7,0xbb1becd4,0xbb4ded23,0xbb904d3b,0xbb1d26cf,0xbb104cfd,0xbb37a1f8,0xbb118b13,0xbb2fb9f3,0xba07cfd3,0xb9fee6a9,0x3a03790d,0x3ad64203,0x3ad69751,0x3b23c1a1,0x3b797ea6,0x3b3e4249,0x3b1c0f27,0x3a06264b,0x3a8c97d8,0x3aaddbc5, -0x3ba8f10d,0xba5e5dd1,0xba83dab3,0xb93ba5fa,0x3b79a491,0x3b967768,0x3b265079,0x3abbe850,0x3a763673,0x3acc973b,0xb9aa1d1f,0xbaa2778d,0xbb596219,0x39615fcf,0xba65b792,0xbb53152a,0xba1e65a5,0xba1c6e9a,0x3a3259bb,0x398775e7,0x39d8f0f9,0xbae981d0,0xba74cd76,0xbad45d42,0xba84fc2e, -0xb9ccf393,0x3a474e14,0x3b1d9c16,0x3b4ad98f,0x3b824668,0x3b9d266f,0x3b629c20,0x3acf3eba,0xba595238,0xbaf830fc,0x39e32ae4,0x3bc2fc3b,0x39f9c660,0xba588fb4,0xb8c71695,0x3b731c76,0x3b62d9d7,0x3a5cd791,0x3a6b98b6,0x3c281928,0x3bed9b09,0x3be9312d,0x3bd792ef,0x3bc0fcda,0x3bbbfe87, -0x3b811041,0x3adb1aed,0x3ad60d0b,0xb928c6ea,0x395cb8b1,0xb9a9c46b,0x39865c24,0x38d3c460,0x3ad37182,0x3b258258,0xbba936ac,0xbbc6359a,0xbbfa9d3f,0xbbfde55e,0xbc208e78,0xbc118a4e,0xbbf507c8,0xbb600252,0x3b0c09d6,0x3c3306a7,0x3c0add63,0x3b4b093f,0xbb84bd93,0xbb26c25e,0xbabfffb5, -0x3b2f367d,0x39774103,0x3b7b2ee6,0x3c1f99ce,0x3c4293e2,0x39b649b4,0x3aa7848b,0xba3913e9,0xb76f3a40,0x3b9da9c5,0xbaaa8849,0xbb2443e2,0xba8531fb,0xb9ffcfca,0xb98b4132,0x38cc65d3,0xb76cea35,0x38bbba2f,0xb9bc2bf3,0xba03db63,0x3707c341,0x3a8aef4a,0xba5b0877,0xb9e8fdc9,0x3a9c4327, -0x3b601bb4,0x3b9c9636,0x3b89d352,0x3a72783d,0xbb1d44b9,0xbbc8ea91,0xbc16658d,0xbbb38a0a,0x3b8bf626,0x3b9a52bc,0x3b65d7d3,0x3ae28365,0xbbdbf789,0xbc228e1e,0xbbcb99f5,0xbb38c40a,0xbb02bf3c,0x3b1b0f87,0xbae6407d,0xbb3a3a02,0xbb64bfe0,0xb9d9a303,0xb876d130,0x39b639a3,0x3989308c, -0x3827c389,0xb783717c,0xb82c12ea,0xb80e3dce,0x391209ec,0x35493a86,0xb9b117e8,0xba840e2e,0xba61c7d6,0xba73d341,0xba0a3526,0xb955a4ba,0xb9bf47aa,0xb99c257c,0xba8ae9db,0xba5c5465,0x38e6dd03,0x3b3f31f4,0x3b31b48a,0xba9036ce,0xbb0e48b6,0xba959f0c,0x3b9f3c59,0x3b717667,0x3b9aea6c, -0x3c143faa,0xb9f34434,0xb76b3ff4,0x3c46fe60,0xb8d5a2c2,0xbb945149,0xbc10276e,0x39c36189,0x39889c87,0xb985649a,0xb89f3db5,0xb8246fa8,0x3887911b,0x38432463,0x3864422c,0x3782c383,0x38a6315a,0xb8935af7,0xb9862127,0x3aaf8656,0x3ac9ef33,0x3aa00685,0x391681a3,0xba88cc5f,0xbac80a60, -0xbaf74aa6,0xba1ebea6,0x3b140e02,0x3bc4463e,0x3b88c3b7,0xbb7c1c19,0xbb707528,0xb9ed9a67,0x3c2a58d3,0x3bd2b70b,0x3bb3aa5e,0x3b78c4c8,0xbaecab94,0xba8c9d38,0x3c30e889,0xbbe0e2de,0xbc643aa9,0xbc3006b1,0xbb0abf4a,0xb9e1ba28,0x372a6210,0x383c3209,0xb7f56615,0xb8af94b2,0xb8a853ed, -0xb92c6f8d,0xb875d66b,0xb91757a4,0xb8b25d18,0x3af973c5,0x3b32a694,0x3b550635,0x3b7e7645,0x3b3df215,0x3b1958c6,0x3a1fe4ef,0xb9c75c47,0xbaa5a302,0xbaaf59d5,0xbb439e22,0xbb20fdb9,0xba7a08b6,0x3b2b7cf6,0x3bc4c147,0x3c287297,0x3af065f9,0xbbb44f16,0xbc252eea,0xbb9e2d25,0x3b94123e, -0x3bf3db0e,0x3c44da47,0x3c641cd5,0x3ba4eaeb,0x3b0a46f0,0xb9806f16,0xb85eea84,0x38ecab06,0x3842b2b2,0x393f621b,0x3961b6e4,0x39a317b7,0x38bf794d,0x3a1ce8b5,0x3ad3817d,0x3b2704f2,0x3b6d16ea,0x3b4b9769,0x3ae059dc,0x3ac43cc4,0x3a80caab,0x3ae87020,0x3ac298a6,0x3a887f62,0x3aa5f31e, -0xba0001bd,0xbad57ebe,0xbb36b10f,0xbbaefaa5,0xbbad0b3f,0xbbb9efbc,0xbb39a7a9,0x3a7d3034,0x3b3ab5cd,0x3b5465cb,0x3a8d5a60,0x3a1454d9,0xba94f076,0xbb1b9e73,0xbb16517f,0xbaef92c3,0xbaacc365,0xba4ea775,0xb919eb76,0xb958d095,0xb9b3aa3f,0xba00e7ea,0xba099cb7,0xb9950687,0x39c9d5bd, -0x3a30a84f,0x3a735ae2,0xb9d4a3c9,0xbaa8415e,0xba6e4129,0xba849eee,0xba6e5663,0xba59d6cc,0x39fa6942,0x3aa4d41a,0x3abe65d2,0x3a9150a6,0x3a8cacfd,0x3a85ce39,0x3a92b9d8,0x39ea1905,0xbad503c8,0xbb22e0be,0xbb5bdd6a,0xbb048d4f,0xb9f13202,0xbb13d785,0xbb28479f,0xbad586f2,0xba849d97, -0xba1771b5,0xba7e4399,0xba48dd4c,0xba93b560,0xb9cb0c3f,0xb9029a76,0x39d7b358,0x397a87ca,0x3a595d83,0x3a9b8cbd,0x3ac65c4a,0x3ab92dde,0x3a8b3c55,0x399ded81,0xb9854193,0xba974926,0xba52dea1,0xb9c44a1b,0x393450d4,0x3a826469,0x3adefd59,0x3b212d3a,0x3b34fbb0,0x3b3e5b23,0x3b29d0d3, -0x3ae6cd97,0x3a0d20cb,0xba3c1dbe,0xbac02a98,0xbacea9f2,0xbb040ff1,0xbaff4ba9,0xb9f1054c,0xb91379d8,0x38b950b7,0xb8cbda5e,0x37ca9a0e,0x399df2c3,0x39d188a5,0x3a119a47,0x3abc55b8,0x3afb9f93,0x3b411ae5,0x3b31f2e1,0x3b4afff9,0x3b53a629,0x3b19dd07,0x3b09aeac,0x3adc18bd,0x3aa7ad5a, -0x3a4272e8,0x39887645,0x3a554634,0x3a5169a5,0x3a873d0c,0x3a9ca111,0x3ac00f1d,0x3ae25888,0x3b03a7e6,0x3b109674,0x3b309419,0x3b1e7ef4,0x3b24619e,0x3b1bd0cb,0x3aef1129,0x3a220719,0xba5ade01,0xba16fec1,0x3b687eb2,0x3b589f7c,0x3b68a0cc,0x3b7269a1,0x3b6dca3c,0x3b715e2a,0x3b635ce0, -0x3b4f0b92,0x3b433158,0x3b2cab8d,0x3b19b002,0x3b21e6d6,0x3b22a70d,0x3b3213fd,0x3b178345,0x3aefc3a1,0x3aa3822b,0x3a8882e6,0xb6dd490f,0x39b9044b,0x39724f10,0x39bb48ea,0x39b59a1e,0x39ce4e8a,0x39c647ed,0x3999e417,0x3a4254cb,0x3a78130e,0x3a9a2458,0x3ad044a8,0x3aded786,0x3b0a56ee, -0x3b18a3ab,0x3b38aa90,0x3b66c6ad,0x3b731187,0x3a62811f,0x3a85834a,0x3a79d454,0x3a2f7195,0x39d3ead3,0x3a387af3,0x3a277e5f,0x3a0b495d,0x3a2ec898,0x3a619d4d,0x3a7ea2d7,0x3a81788b,0x3a6ff35e,0x3a6d6a27,0x3a96802a,0x3aa67790,0x3a078971,0x3a55214f,0x3a7f76f8,0x3a7e0705,0x3a76928d, -0x3a7de682,0x3a7ba775,0x3a7a7499,0x3a792590,0x3a719c48,0x3a8469ac,0x3a8bd359,0x3a983bd8,0x3aa474ac,0x3aa8dc59,0x3abc8469,0x3aac76ce,0x3a8b8e89,0x3a631b59,0x3a49943d,0x3ab3efd4,0xb9608214,0xb82108d5,0x37314eea,0xb8ac923d,0xb86a6801,0xb8c1627d,0xb906c62d,0xb8a54934,0xb9a1128e, -0x3851d3f9,0x381cae10,0xb9ab7237,0xb90c0459,0xb81b5765,0xb8062512,0xb99319ad,0xb99cc647,0x396f8c42,0xb7e8e541,0xb8f52147,0xb8f1752c,0xb521c4ba,0x380ea120,0x38f9721e,0xb8229e83,0xb9135d7a,0xb98f5e7b,0xb998c00d,0xb9384849,0x398d7fe3,0xb89b4e63,0xb97b4d24,0xb9ae79a3,0xb85def46, -0xb8a509ac,0xb9552848,0xb8c86c30,0xb8aa9028,0x39289659,0xb868c16a,0xb9ee8f44,0xba4b4e5a,0xb8415253,0xb9225140,0xbabd0999,0xb9da52ff,0xba14ce02,0xba971410,0xba6c7a31,0xba7811bd,0xba4ccd32,0xba89a2b9,0xba8b8b5c,0x379a3e10,0xb9849529,0x38a4daa6,0x3921a2f3,0x398a41ed,0x3a00d6ae, -0x3a76a2eb,0x39de6718,0x393a0bb0,0xb750e6d1,0xb924e1da,0x39015514,0x3a96a72c,0xba1102fb,0xba5f3d3c,0xb9d99a66,0x3a66bcfa,0x3a9c271f,0x3a09ad3a,0x3946f073,0x399c06df,0x3a429922,0xb8ee0c9d,0xba071cdd,0xbab2fbaf,0xb8b6a65a,0xb820602a,0xbb2a69be,0xba2f2ad7,0xba690bd0,0xbb47b5f0, -0xbad4c057,0xbad1f222,0xbaac9bbc,0xbae00a42,0xbadc41ab,0x390f78c1,0xb9f36f6d,0xb83bca4e,0x39df9117,0x3a525ece,0x3a949963,0x3ad5f7d7,0x3a38b56f,0x37a906da,0xba24763a,0xba2c1511,0xb99374d5,0x3b26f877,0xb9d56f27,0xba4fcfb0,0xba222920,0x3a9be924,0x3a9d1439,0x3916d5b5,0x39da561b, -0x382599cf,0x3a84b084,0xb9d74a23,0xba98022a,0xbb1cbc8d,0x38553785,0xb9961a29,0xbb791582,0xbae3ea25,0xbb06f1e9,0xbb3d8ecd,0xbadc9770,0xbaf79e10,0xbb071c3b,0xbb25605b,0xbb49adcb,0xb9cd0213,0xba571059,0x3911f706,0x3a8be8f7,0x3a8f4126,0x3afabf9d,0x3b4c6ffd,0x3ac78c8a,0x3a80422c, -0xb976a189,0x39bd2fd6,0x3a17b4ea,0x3b83fdf2,0xbab0c8c4,0xbab88237,0xb9e47c7d,0x3b50a2f0,0x3b79d8cc,0x3acd4990,0x3a8263e5,0x3a1128c4,0x3a93ca23,0xb9d9a1e4,0xbaa4bc2c,0xbb471ba9,0x3980a4af,0xb9f6f02f,0xbb026592,0x38c0f45c,0xb968c792,0x3a297af6,0x3955abd8,0x3a011a25,0xba794317, -0xba6dcbf5,0xbaf3bae2,0xba59ce26,0xba52888f,0x39670570,0x3ac73cf0,0x3b122695,0x3b417d56,0x3b72067d,0x3acf2e55,0xb97bab5f,0xbafb9d5e,0xbb2ae2a3,0xb841cf26,0x3ba7b150,0xb99121b6,0xbac1aa34,0xba0a307e,0x3b37cdb6,0x3b149496,0xb98c6a60,0x398366c3,0x3c1f356e,0x3bcc4d13,0x3bc5a331, -0x3bb87cce,0x3ba82a7e,0x3b8c5e56,0x3b1517de,0x3a1dcf31,0x39e3cf70,0xb8f7492b,0x383e5d11,0xb98fa3c4,0x3930c93a,0xb938fe32,0x3abee621,0x3b36939f,0xbb5d8b0b,0xbb9f48a2,0xbbd951c9,0xbbdc1a1a,0xbc12a987,0xbc04176b,0xbbc2330e,0xbae452c7,0x3b6000eb,0x3c458930,0x3c054c47,0x3b0e1cb5, -0xbb9cd7a3,0xbb531b93,0xbb05f641,0x3b0ff6cc,0xb9cae928,0x3b697e88,0x3c28d107,0x3c40ae96,0xb982a5c5,0x3aa2050d,0xba8d0361,0xba044352,0x3b5b16ce,0xba30182d,0xba9c4990,0xb991ca26,0xb92df366,0xb7a5d2f5,0x38328752,0x38776761,0x38231772,0xb8e64b25,0xb9f3b879,0xb9d5084f,0x3a5b2eb7, -0xba9d9ae2,0xba9e8da4,0xb92b013b,0x3b0b0d99,0x3b63fd16,0x3b4e094b,0xb9f090db,0xbb718473,0xbbfadb62,0xbc1bbd6c,0xbba58659,0x3badb894,0x3b574f40,0x3ab57d11,0x38dfbaaf,0xbc07e2f4,0xbc33559b,0xbbc41677,0xbb6bb712,0xb92cb79f,0x3b7d6c3d,0xba01639d,0xbb0b6e1c,0xbb383c21,0xba0d6ea9, -0x3916cfa5,0x395a4c9f,0x3812535d,0x378656cb,0xb7eff60f,0xb842e4f0,0xb7f02e1f,0x3899a66f,0x38b3a6da,0xb8deb8f5,0xba1ce53a,0xba1a82eb,0xba171deb,0xb9f32f47,0xb9c090e3,0xba38c7ab,0xb9f5cf58,0xbabda5ae,0xba74afee,0x3a3f1607,0x3b12a0bd,0x3adc59a7,0xbb27f4dd,0xbb2f826f,0xba8abc8d, -0x3b8b09a8,0x3b7b35b7,0x3baa0398,0x3bd4dde8,0x3a1a1f14,0xba4ac082,0x3c2403a9,0x3a8ae149,0xbb5dece3,0xbbf6e39c,0xb85d98da,0x38facb81,0xb9268cf2,0x373ba302,0xb72fad5c,0x380adcee,0x381b79df,0x3830bbe6,0xb6078732,0xb7635489,0x390e8328,0xb99f1775,0x3ac11577,0x3af84012,0x3ae1b9b8, -0x39370555,0xbaa676a2,0xbaeb0176,0xbb145dc0,0xba607f33,0x3b5c9f9d,0x3ba28f54,0x3b3997ca,0xbbcdef2c,0xbb2b3495,0x3a8fd639,0x3c1d78ac,0x3ba4b6c3,0x3b75cb66,0x3a794fa3,0xbb455ead,0xbbb6e561,0x3ba604c0,0xbbdabb26,0xbc5359b4,0xbc34c375,0xbafa13c3,0xb9a03a22,0x39239094,0xb890a219, -0x374619a5,0xb8623ed7,0xb82f09d8,0xb8f2ae7d,0x370ade75,0xb91a68fc,0xb9a841fb,0x3a807ee0,0x3b11ed0f,0x3b3c9261,0x3b58c225,0x3b11631e,0x3ac4adab,0xb980c9c6,0xbaca0675,0xbb3ac8b2,0xbb4b8dcb,0xbb86d46c,0xbb44f132,0xbaedbe64,0x3b5e1028,0x3bc9726b,0x3c0ad1df,0xbb04f1f9,0xbc1e9389, -0xbc330ab6,0xbc080d2d,0x3b9a781d,0x3c1c5686,0x3c5c0a5b,0x3c7abb8f,0x3b979e3d,0x3b1ba5b0,0xb9761050,0x38e6d63a,0x384b34d1,0x3729e243,0x38c08c61,0x38c99139,0x396ae642,0xb6aef9da,0x39ab0320,0x3ab4bfc8,0x3b18e2fa,0x3b898f7e,0x3b7cd147,0x3b2c0c6e,0x3b023ec2,0x3aad4543,0x3af226c3, -0x3ac2ca68,0x3a722ca7,0x3a725905,0xbaa5e93b,0xbb2ffa49,0xbb76fabd,0xbbc96469,0xbbbd8d29,0xbbbfb27e,0xbb30584f,0x3a1401f2,0x3af0e1fc,0x3ab79905,0x3a8e67ff,0x3a8694c2,0xba12409d,0xbacbefde,0xbaf5210d,0xbab7fc4e,0xba846853,0xba04da90,0x34901b30,0xb7953da7,0xb9305395,0xb93f46f6, -0xb9af4503,0xb98597f5,0x39589c68,0x39f7fb6b,0x3a5fe116,0xb9525544,0xba61dab0,0xba6f2c3f,0xba980b22,0xbaa22b48,0xbabcead2,0xba2b1d42,0xb9a3e153,0xba23b9a7,0xba753e93,0xba6564c6,0xba4a4126,0xb9b9cb1e,0xba21413c,0xbb0c72e2,0xbb338627,0xbb5fcc66,0xbad7c3c5,0xba0bcc0c,0xbb141219, -0xbb2e003c,0xbaf56962,0xbab98f74,0xba8d3d37,0xbac8ad38,0xba9fa28a,0xba9fa9d8,0xba172fc8,0xb9cb5037,0x3895af2c,0xb90e959c,0x39ce5e4e,0x39f8282d,0x3a875b3a,0x3a9c70b2,0x3aa4a037,0x39f1f428,0xb90ab78a,0xba7b5475,0xba4a0530,0xb9ab9a33,0x3931dbd7,0x3a5e3179,0x3abdcd7a,0x3b0b9b0a, -0x3b0c94bc,0x3b02b2cc,0x3ab0da64,0x3a0062db,0xba313b69,0xbaeb192e,0xbafaf93b,0xbae40cd0,0xbb0f26ca,0xbb04ca89,0xbaf2ac97,0xbad223fd,0xba8da1e8,0xba9b9e2c,0xba6759d5,0xb9b16002,0xb88a4a02,0x38a6f26a,0x3a625ac1,0x3aa1bc3a,0x3b0f49b1,0x3af4d213,0x3b274044,0x3b2acb97,0x3b1a61d3, -0x3b075de2,0x3af25f98,0x3ab8662f,0x3a80f126,0x39cd6294,0x3a802223,0x3a854ac9,0x3aa91c41,0x3acb1bb5,0x3afa78fc,0x3b13bfe7,0x3b070f91,0x3b042aea,0x3b0df16e,0x3adc8c55,0x3ac0e0c6,0x3a7b8fee,0x3997842d,0xba6fb673,0xbb099448,0xbaf34831,0x3b38edd2,0x3b1d8408,0x3b51b37b,0x3b491c2a, -0x3b4ce943,0x3b4a4621,0x3b374dc5,0x3b3b4431,0x3b307000,0x3b3338c1,0x3b3032b3,0x3b41f2df,0x3b41c16f,0x3b5b6f99,0x3b3757dd,0x3b15cffa,0x3b017118,0x3acf92ae,0x3a7c8bc1,0x3a7b9de5,0x3a53dbfa,0x3a73c45a,0x3a619da5,0x3a63c3c5,0x3a4322bd,0x3a121711,0x3a8769e9,0x3a8c0193,0x3a9df5ad, -0x3ac46e23,0x3ac91001,0x3af818a0,0x3b07e82c,0x3b2ce43a,0x3b46519e,0x3b430462,0x3a33715d,0x3a3900be,0x3a4f5d4a,0x3a4af58d,0x3a4fd334,0x3a2d2c14,0x3a5345ef,0x3a824a70,0x3a9a36d3,0x3aa9cd1c,0x3ab2bdb9,0x3aba8394,0x3abd58c4,0x3ac32011,0x3ab0e5f8,0x3ab53d68,0x3a99d863,0x3a990a39, -0x3a9897ae,0x3a98d696,0x3a9b6aa8,0x3aa11809,0x3aa2f0d3,0x3aa75f55,0x3aaaaed6,0x3aa79282,0x3aadcd94,0x3aa7defa,0x3aae7898,0x3ab0c26f,0x3aa867ad,0x3aabc4ea,0x3a9146dc,0x3a682e23,0x3a2ec675,0x3a16ebf8,0x3ae8a2ba,0xb9ac95ac,0xb8ad99c9,0xb6fc958f,0xb903a5fc,0xb94d61ef,0xb9b11403, -0xb94002d4,0xb941319f,0xb9fcd668,0xb9693451,0xb9966384,0xba1bcbbe,0xb9f36be9,0xb9c3d4fd,0xb964ed09,0xb9d93d0b,0xb9cdb78a,0xb81c1bb4,0xb9533d8a,0xb97ac3fe,0xb9614507,0xb8f9732f,0xb8b5b7e6,0xb56aa0e0,0xb96fc08b,0xb9a93c88,0xb9c2102c,0xb9bcff23,0xb968392c,0x393d60fc,0xb91092f5, -0xb9944d66,0xb9ad508f,0xb8beff14,0xb8ffc1c8,0xb98b5da6,0xb9016ec1,0xb7dd3c2c,0x395ae10d,0xb988d129,0xba048c05,0xba6324ed,0xb93d2454,0xb9824dc5,0xbaa9d620,0xb9aefc70,0xb9fe2e55,0xba77cb0e,0xba7a7339,0xba8eb8d2,0xba3ed46a,0xbab776fa,0xbaa408bc,0xb8b3e5f6,0xb9e5a33e,0xb92fe36b, -0xb86581d2,0x38b078d6,0x399960f9,0x3a3197d3,0x379dcd6d,0xb94fb568,0xb97b9d59,0xb98e5a83,0xb81a308d,0x3a522284,0xba273df8,0xba5081cc,0xb9752525,0x3a6e166e,0x3a95153b,0x39b13c3e,0x3931b86c,0x39cb72fb,0x3a3ed974,0xb8f0fb19,0xb9d8ba64,0xbaab33a7,0xb9318746,0xb9059d9f,0xbaff5e8b, -0xba2098a4,0xba665289,0xbb3623a2,0xbaf39ed5,0xbaf3e627,0xba679c17,0xbafa1e1b,0xbafdc2c8,0x3931b447,0xba33b183,0xb99fcf8a,0xb8161529,0x39f8f410,0x3a328c68,0x3a9a3aa4,0xb901022d,0xba43aad3,0xba789539,0xba4ebb06,0xb99c0506,0x3b09fb3a,0xba008493,0xba401e08,0xb97d8c45,0x3aa483cd, -0x3a9b0f00,0x36089519,0x3a00cb48,0x39af5ced,0x3a9509ce,0xb9a6adff,0xba938627,0xbb0aea0c,0xb8040bb8,0xb98984fe,0xbb2aa547,0xba97a0aa,0xba8f2c9f,0xbab7e19d,0xba868ca5,0xbaca20f7,0xbaacfe1d,0xbb291367,0xbb52ed66,0xb992328a,0xba921771,0xb93bdc83,0x39f9a531,0x3a330c80,0x3abb6a70, -0x3b28b879,0x398ccb39,0xb97b2785,0xba23a186,0x3914ec55,0x39a27740,0x3b459917,0xbab574e9,0xba95cb18,0x399a0090,0x3b5e331f,0x3b79a651,0x3a98fe59,0x3a89eeb8,0x3a4625be,0x3a8ec316,0xb9721235,0xba82a70b,0xbb21e3e2,0x398dea37,0xb96c8a9f,0xba71854d,0x39f4c4e0,0xb863b4be,0x3a31c1cd, -0x398b9c85,0x39b0697d,0xb98f3185,0xba257341,0xbaf05c71,0xba23f053,0xba8e753c,0xb9b19957,0x3a2b2c69,0x3ac13ea3,0x3b0782b5,0x3b339907,0xb8cec037,0xbae747d0,0xbb27b343,0xbb2c6be4,0x38813e11,0x3b8d3a68,0xb9ee157f,0xbaa2747d,0x3984d169,0x3b42454d,0x3b0db42e,0xb9d78a73,0x39d411e2, -0x3c2211c8,0x3bca584f,0x3bba4d41,0x3b9d4ce6,0x3b8c4b98,0x3b3e495c,0x3a904a0a,0x37986376,0x37ec21d8,0xb8c7f6a1,0xb90c38c1,0xb984826f,0x38d3c36d,0xb9713ab7,0x3a71c029,0x3b253e21,0xbaddd465,0xbb6ca103,0xbbb912ee,0xbbb7c4c8,0xbbfda558,0xbbdaf351,0xbb7a36b0,0x3a367b93,0x3baf1c08, -0x3c58772d,0x3c05acae,0x3aee369a,0xbb9849a6,0xbb350114,0xbab8834a,0x3b3dde17,0x39e3c1cf,0x3b947294,0x3c3c026e,0x3c4af0fc,0x3a5642ab,0x3aeb0b5e,0xba8e7a84,0xb999526f,0x3b0b80c6,0xb8ba6637,0xb9da8cad,0xb7b8be90,0xb79468e1,0x38266660,0x38bcdf8a,0x38aa98c9,0x382abcf5,0xb7e86eca, -0xb9a43e5e,0xba1fad5a,0x3a2a0499,0xbaa10a6b,0xbae8bfc1,0xba959728,0x3ab053b2,0x3b3282d6,0x3b35d49f,0xba41de6e,0xbb77a084,0xbc031210,0xbc0a5494,0xbb634d4c,0x3be300cc,0x3b4fe717,0x3a4698c5,0xb9956294,0xbc0a1904,0xbc298957,0xbb87fa2e,0xbb224976,0x3b361d12,0x3bcf76ed,0x3ac608d3, -0xba7e3f81,0xbb09df21,0xb9c19d04,0x3924ed84,0x38355b61,0xb6d147bd,0xb6dc5ae0,0xb820d5c0,0xb8767a5c,0xb7801d8b,0x376f47ad,0x39233daf,0x37ac8da3,0xb95a2c39,0xb9839145,0xb83bf0a4,0xb8d6872b,0xb80e3661,0xb9a88c0b,0x39390a3c,0xba377591,0x391ccda8,0x3b23b8b5,0x3b2b7723,0x3ae6436a, -0xbb2b0816,0xbae9bf1b,0x398b557a,0x3b945656,0x3b9a3a11,0x3bca4954,0x3b8fdacd,0x3b23f6ba,0xba4166da,0x3bfda2c5,0x3b28d9f9,0xbaca6be8,0xbbc23116,0xb8e70648,0x38f0f75b,0xb8d535a4,0x3810267c,0xb775f9ce,0x3782e482,0x37d6f382,0x37b0ce49,0xb5ad11a9,0xb8850786,0x3966acec,0xb990e391, -0x3ab96c99,0x3b0db0b9,0x3b1394e9,0x3a1648ae,0xba5ac048,0xbaa4c226,0xbac9eebb,0x38bbe31e,0x3bb1251b,0x3b9fb8b5,0x3b2bf737,0xbbe0cb8f,0xb9b2a56d,0x3b637dc2,0x3c0fccd9,0x3b8a2050,0x3b2ee8a9,0xbae2e045,0xbb55018a,0xbc12eef2,0xbb09dfc7,0xbbb918b0,0xbc263339,0xbc1bcfb5,0xbac78b06, -0xb824c19c,0x38af23de,0xb811315f,0x37fd6654,0xb6e52c49,0xb72351d1,0xb86241f9,0x371e9675,0xb7a6278a,0xb9c66bcd,0x3929cf9b,0x3ad7734e,0x3b210d7a,0x3b3791df,0x3af0548d,0x3a92ad14,0xb9e817f9,0xbadc0587,0xbb5419ad,0xbb721d59,0xbb7f3160,0xbb0ced87,0xbaac5aa0,0x3bae61c8,0x3be19117, -0x3bc83c5a,0xbba8b5a7,0xbc4c3a0f,0xbc357398,0xbc22b1b7,0x3b9759e3,0x3c454f43,0x3c726bb8,0x3c7c175a,0x3b82cf77,0x3b242d09,0xb9404916,0x3906b366,0xb8ae769c,0xb7bf9733,0xb7359622,0xb589411e,0x38a93d9a,0x381b2163,0x37da9513,0x3a795f01,0x3b007227,0x3b8a5748,0x3b8fec2d,0x3b6030a2, -0x3b3df8a6,0x3b0d3616,0x3b1cbebf,0x3b0374d2,0x3ac007b3,0x3acbbf95,0xba7ce00c,0xbb27772f,0xbb660f4c,0xbbbd43b2,0xbbab3de5,0xbba04ec4,0xbb171d5e,0xb8db9a04,0x39a9f15b,0xba130b16,0x3ab082c5,0x3acce3f9,0x3958c913,0xb9c09077,0xba9074ce,0xba47c293,0xba12a865,0xb8ebb91d,0x39490cb5, -0x38a39228,0x37fe496f,0x36c70e90,0xb8855294,0xb9350c8b,0x38858d07,0x39ba1d8b,0x3a5b1fea,0x3958aa85,0xba1f32b2,0xba0e733b,0xba4b29b9,0xba8a5fc3,0xbab0c28a,0xba8f689d,0xba8bfa2d,0xbae1aff5,0xbae41068,0xbabfb933,0xbaa107aa,0xba366dc9,0xba4969b0,0xbb03a560,0xbb1f0ecb,0xbb3ecdab, -0xba80c44c,0xb921e65a,0xbad488b8,0xbb1372c1,0xbace345c,0xbad0222b,0xbac87904,0xbae57b0b,0xbac1ae74,0xba9da58a,0xba3cd7ae,0xb9f0ac9a,0xb8eeda10,0xb996b3ed,0xb7c6cafb,0x3724ee1b,0x3a0fff3d,0x3a5fa6ae,0x3a99db30,0x3a2043a1,0x3941953d,0xba272ec0,0xb9664751,0x37eb90eb,0x3a054874, -0x3a8798e7,0x3acd4afd,0x3b0e9f9f,0x3b04837d,0x3adafe40,0x3a4ecbc8,0xb7e3d6eb,0xba88a63d,0xbb033cd4,0xbacfcc9e,0xbaa247ba,0xbae88f1b,0xbad47643,0xbb2cdfe1,0xbb28f1fc,0xbb173501,0xbb05d7ee,0xbaea7757,0xba95f8a9,0xba3809fd,0xb9db3aeb,0x39513b82,0x3a061eb1,0x3a9d7df9,0x3a94523c, -0x3ae6800e,0x3afafb98,0x3afc2275,0x3af2f03c,0x3af42e8c,0x3ac3b6a3,0x3a82352c,0x3a593843,0x3ab5f478,0x3ab6cba4,0x3ada92df,0x3b0432f5,0x3b226500,0x3b3ec4bb,0x3b193125,0x3b08fca2,0x3b0307a2,0x3ab6309a,0x3a7e54f2,0x3962c5bd,0xba19d334,0xbae83461,0xbb2d8481,0xbb2599e7,0x3b0b940b, -0x3ae5c089,0x3b184af0,0x3b1ec8b3,0x3b2a394a,0x3b201e09,0x3b16ee5e,0x3b1809ca,0x3b1cef9d,0x3b285922,0x3b31ed4b,0x3b467a0a,0x3b4d0df2,0x3b6877c7,0x3b4bf834,0x3b2cc51a,0x3b1722ef,0x3b0b352f,0x3abf6ddb,0x3adcbb76,0x3ac16e8f,0x3ad33632,0x3ac43a23,0x3abecd59,0x3a9ff85f,0x3a765896, -0x3abbd3be,0x3aadd077,0x3ab2d8b9,0x3ac6c979,0x3abe0313,0x3ae39658,0x3af7e725,0x3b201331,0x3b262d75,0x3b16c731,0x3a48ba51,0x3a3ba227,0x3a3bcb70,0x3a2967a3,0x3a29e25c,0x3a4d4ea8,0x3a67e096,0x3a799bd0,0x3a9298b4,0x3aa08b4b,0x3aa91d28,0x3ab29717,0x3ab99957,0x3ac2d57f,0x3abe28b4, -0x3ad418f2,0x3aa64e38,0x3ab39f5d,0x3ac46137,0x3ad589d9,0x3ad3fab0,0x3adb2e87,0x3adeb2b2,0x3ae71d55,0x3aede262,0x3aeacd13,0x3aeb8fc8,0x3adaf8d1,0x3add2cdb,0x3ad99979,0x3ac8d101,0x3ac0af7b,0x3a9d7d56,0x3a829409,0x3a4b825d,0x3a34fb9a,0x3b1ee6fa,0xba0e1dcb,0xb96d046e,0xb94b0dea, -0xb984f5ff,0xb9814f49,0xb9b1d85b,0xb9ab9cc3,0xb988620a,0xb9deafe4,0xb98a2cd6,0xb9b1f855,0xba138a9f,0xba0d28ec,0xb9f32a32,0xb94f232d,0xba04b7c1,0xba0aabd9,0xb8304711,0xb9936ab1,0xb9c28d58,0xb9db2a95,0xb9a5573c,0xb99b9b71,0xb9679646,0xba04f169,0xba188b34,0xba0becf5,0xb9fa7db8, -0xb9a7ecc6,0x360e8504,0xb992c973,0xb9d4f50c,0xb9e0db3a,0xb97ddd8d,0xb995b74c,0xb9e9082d,0xb98cc7f3,0xb8e1c7be,0x38989ddb,0xb9683a4e,0xba1d0a81,0xba5c07e1,0xb9b35509,0xb9b6a45f,0xba8477c9,0xb9715396,0xb9c6c87a,0xba5fd23c,0xba869f15,0xba974ac1,0xba1c76c0,0xbac3e5a9,0xbabc10a7, -0xb92cc69a,0xba1e9c65,0xb9b9cfa6,0xb9cf30c0,0xb9558e86,0xb7f36d1b,0x398588e3,0xba013e4f,0xba292ca6,0xba080755,0xb9aecb25,0xb92354ca,0x39b95e11,0xba44c7a3,0xba4acf02,0xb9317f98,0x3a45e6c3,0x3a685d13,0x373a2282,0x37b44156,0x396a7a0b,0x3a093291,0xb8d58813,0xb9fea39b,0xba9bc62f, -0xb99400bd,0xb92aa5b1,0xbaae3912,0xba21ebc3,0xba77c56e,0xbb0cc584,0xbb080530,0xbb07568a,0xba13feee,0xbb007719,0xbb063afb,0x391c2d43,0xba5a5cb5,0xba0f91a5,0xba0ae77f,0x37dde5e5,0x38ee7c0e,0x3a07afe6,0xba8b3330,0xbacab3a5,0xbaa20f68,0xba42dcfa,0xb9251bc8,0x3acc1567,0xba0fe538, -0xba3b727e,0xb832eff6,0x3a88795b,0x3a602e85,0xb9ca962e,0x39a9630a,0x39bb48fa,0x3a8c4288,0xb948c93b,0xba919f51,0xbae5931b,0xb8ec9fd4,0xb96c9747,0xbacc5380,0xba08b7f1,0xb97a6dbf,0xba24af79,0xb9b443d8,0xba89ea76,0xba331455,0xbb1bdb42,0xbb4e31e5,0xb954afab,0xbaae5bcb,0xba0f3374, -0xb956879f,0x391e1aa0,0x3a4a7aaf,0x3ae720d6,0xba937149,0xbac4d57e,0xba6a09dd,0x39784473,0x39c1aaa1,0x3af84e32,0xbaa56bcf,0xba5cfcad,0x3a60edfd,0x3b5381c8,0x3b5e6b41,0x3a0ecf52,0x3a6b2feb,0x3a0cc508,0x3a4bf4d7,0xb8a9f9e9,0xba51eab1,0xbafea703,0x39509575,0xb90147e0,0xb8463676, -0x39967431,0x38e1a470,0x39c11809,0x398b89be,0x397b8e0a,0x384ceeab,0xb91d45fe,0xbacf5faa,0xb9ea0932,0xbaa1202c,0xba4db481,0xb98a86a3,0x3a2a6bb5,0x3a86d617,0x3ac1724f,0xbafcc983,0xbb5418c6,0xbb4524db,0xbb0dfbf3,0x3a089fba,0x3b605db6,0xba03fc40,0xba7a0e26,0x3a43180e,0x3b2d380c, -0x3ac6cc78,0xba73f794,0x393269d7,0x3c13255b,0x3b9d7635,0x3ba2f008,0x3b71d151,0x3b42df9b,0x3adb0c67,0x3983d431,0xb8a1b742,0xb82f42da,0xb909a6db,0xb8a576d5,0xb951d641,0x369e89a0,0xb931c62c,0x39a7484e,0x3af34056,0xb9906ef0,0xbb1a8f16,0xbb97a717,0xbb97094c,0xbbd634b2,0xbbad465c, -0xbae3f8cf,0x3b60ea6b,0x3bf345dd,0x3c6ad31d,0x3c0c645b,0x3b0e5891,0xbb624702,0xbb02ec3f,0xba646704,0x3b478907,0x3a5071a3,0x3b987861,0x3c390fe9,0x3c3f4f98,0x39a0351a,0x3ae33e26,0xb959c617,0xb8f28f55,0x3abefbf5,0x39391b9c,0xb96c48dd,0x383b13e5,0x378af385,0x38a4e746,0x3855fce8, -0x3899f4b2,0x3880ce0e,0xb6c6206d,0xb8f85dc3,0xba150577,0x39d7ab57,0xba7944a9,0xbaeab44d,0xbaeaa17e,0x3a2bca15,0x3afccdf3,0x3b0b0221,0xbaa1e814,0xbb872816,0xbc083fc7,0xbbea68b7,0xbae5c3bc,0x3c085867,0x3b4776b5,0x36b8a325,0xbacbdd10,0xbc132ff5,0xbc280df8,0xbb699616,0xbb2857b2, -0x3b5d4cf5,0x3bf85206,0x3b3c19da,0xb982f49b,0xbad9f649,0xb84dd687,0x3818fd91,0x380c89e0,0xb79f15bf,0xb754eb79,0xb7c60490,0xb8538a38,0xb74ad9ed,0xb728b609,0x38c52902,0x38c636d7,0x3891d7a2,0x38a2bf75,0x39cfaf5b,0x3898d271,0x38d93a53,0xb9190294,0x399ff378,0xb9971f54,0x3a3c3042, -0x3b5deff5,0x3b0e0612,0x3a9938e9,0xbb45dff6,0xba97c665,0x3a950692,0x3b7ead60,0x3b9ddbfa,0x3bc3eb03,0x3a9ffb3e,0x3b21b5c4,0xbac12eac,0x3b58f195,0x3b641812,0xb9ce4b0d,0xbb923491,0x3983b923,0x3789111f,0xb8847879,0x377ec994,0xb718ad36,0x354f9493,0x379d2426,0xb5c7fd9b,0x37a6fb5d, -0xb8c9a671,0x39361850,0xb93741ea,0x3a8c935f,0x3b0cde71,0x3b194675,0x39f360a9,0xba5530e5,0xbaae1cae,0xbaa2dd0b,0x39e5adaa,0x3bcc1868,0x3b659f57,0x3aac461e,0xbbfb8e04,0x3a89fd89,0x3ba1c71a,0x3bdcec86,0x3b61094a,0x3aeffafc,0xbb810291,0xbb6e837e,0xbc341195,0xbc327b56,0xbbbdd9c6, -0xbbe321de,0xbbea4e92,0xba6d7b41,0x38945322,0x387f6282,0x37e27791,0x37c4e3d5,0x375c2689,0x35f8609a,0xb61d62c3,0x3731859a,0x37ecaa62,0xb943d2a2,0xb9bba96f,0x3a7540c0,0x3af5e860,0x3af49bb6,0x3a850127,0x399b59ac,0xba91bc85,0xbb16753b,0xbb871362,0xbb9eb7a3,0xbb8fc59a,0xbb022dbd, -0xba67a347,0x3bd4cb39,0x3bdb0c27,0x3b14c770,0xbbf3b818,0xbc584bb7,0xbc1f4c53,0xbc1face6,0x3b7a830c,0x3c5677d3,0x3c6ac747,0x3c5b0e72,0x3b48fc32,0x3b123243,0xb9a55674,0x3795c734,0xb902ccda,0xb82255e9,0xb828dce3,0xb7f12a80,0xb79aa52f,0x381bbfe8,0xb8f935c8,0x3a039290,0x3ac5556d, -0x3b82c282,0x3b9b4f78,0x3b860901,0x3b5eed25,0x3b2ac13f,0x3b1a47fe,0x3ae9c3cc,0x3a9d00ce,0x3ab3dacc,0xbab022c7,0xbb466ae8,0xbb805a38,0xbbb80016,0xbb96676b,0xbb6d2cdf,0xbaf6ec56,0xba7ee007,0xbaa4df6e,0xbb271ae6,0x3ad318e1,0x3ad99371,0x3a38aece,0x3a343410,0xb9b1aec3,0xb7af8179, -0xb8c09338,0x3957cd38,0x39363db4,0x3934eb3a,0x3872a1c6,0x38c9b38d,0x37dacf40,0xb7042f58,0x37504c65,0x39a98267,0x3a661c98,0x3a254851,0x367cce18,0xb97929f8,0xba02413b,0xba808d44,0xbacb2c21,0xbaf0390e,0xbb0d83ba,0xbb45a555,0xbb3122a8,0xbb11b3bf,0xbae2eea7,0xba9fa248,0xba949cd1, -0xbaf66054,0xbafcb792,0xbb05e6c9,0xb8241bde,0x39ee255c,0xba5566e5,0xbac37dfb,0xba910b90,0xbac1bb6e,0xbae4fc29,0xbae6148d,0xbabe98d1,0xba7dbf30,0xba08ba3a,0xb99a3a5d,0xb916c107,0xb965d7f1,0xb8bf5aba,0xb95b9bf7,0x3961ccfa,0x3a13fb56,0x3a8f443b,0x3a5091ca,0x3a0c1abf,0xb872195c, -0x38905ac4,0x392606e6,0x39e3d40c,0x3a3e3f88,0x3a8b530b,0x3ac51392,0x3aa07251,0x3a44b149,0xb9769133,0xba5de09b,0xbac290c5,0xbb068b39,0xba8fb0f7,0xba100076,0xba8466f9,0xba7dbb41,0xbb416572,0xbb4b253c,0xbb418f6e,0xbb25e08e,0xbb12d528,0xbad15d4b,0xba8f8484,0xba52861b,0xb9dc1f37, -0xb9317307,0x39cdbb7c,0x39b0faa2,0x3a7c3b98,0x3a97bd68,0x3ac467f4,0x3ac7d60e,0x3adfc325,0x3ac85aba,0x3a97b262,0x3a9d1642,0x3acf167a,0x3ad1a5a5,0x3ae70463,0x3b0bfcf6,0x3b28283d,0x3b43a8a9,0x3b0d4b37,0x3ae919ba,0x3ac3a08e,0x3a80e21b,0x3a06ebbe,0xb98c9a2a,0xba91e6f2,0xbb0c3746, -0xbb2b96e9,0xbb2f0471,0x3acb6876,0x3a9a49c8,0x3ae2c423,0x3aef9257,0x3b069a2a,0x3af58c63,0x3aea1909,0x3afd60e3,0x3b08f0c1,0x3b1ed35b,0x3b2dd81f,0x3b44fdc0,0x3b4bbb36,0x3b65b60b,0x3b51accc,0x3b3dbd4b,0x3b340c08,0x3b2ac46f,0x3b0e544c,0x3b19c09d,0x3b0de375,0x3b188960,0x3b12cd0d, -0x3b108106,0x3aff9b49,0x3adb8fa1,0x3b0b4dee,0x3afc9ec9,0x3af0e697,0x3af0e149,0x3ad49908,0x3aee8cee,0x3af96ea1,0x3b183aed,0x3b0abac0,0x3ae2e280,0x3a76a4bc,0x3a520502,0x3a5d4ade,0x3a5e7a58,0x3a6aa47d,0x3a898723,0x3a9bac71,0x3aa79081,0x3abbf6ea,0x3ac46ce2,0x3acbaee9,0x3ad70adc, -0x3ae3e87d,0x3af026e5,0x3ae2c406,0x3af4b443,0x3ad57799,0x3ae29da2,0x3af27031,0x3b023b4c,0x3b022d7f,0x3b063533,0x3b0843be,0x3b0d8722,0x3b11d4d9,0x3b105a01,0x3b0e054b,0x3b021a64,0x3b025861,0x3afe564c,0x3aea746e,0x3adb903a,0x3ab332a6,0x3a9baabe,0x3a81d582,0x3a6f145f,0x3b4aead7, -0xba53204f,0xb9d353f6,0xb9c9797f,0xb9dee967,0xb9d48bac,0xb9f8f2f0,0xba01d954,0xb9da03d3,0xba03fffa,0xb9d5beac,0xb9edfbfb,0xba1d0912,0xba325f8f,0xba2d68b5,0xb9af0f29,0xba314a14,0xba36b5b2,0xb93ca857,0xb9e73d54,0xba0da8ff,0xba21df53,0xba090e17,0xba0880ba,0xb9f82df7,0xba51ee21, -0xba5ff12f,0xba3ce902,0xba20b1f6,0xb9ec7e7e,0xb973e6d0,0xb9ebb7b5,0xba0cc998,0xba072cd3,0xb9cada81,0xb9e63462,0xba23edeb,0xb9df9c88,0xb969f05f,0xb8cd35e2,0xb9d20105,0xba453779,0xba7b7573,0xba1c30f0,0xba0b536d,0xba4c1ae3,0xb98e30f5,0xba0d15b8,0xba765354,0xbaaca7f3,0xbaadc67b, -0xba13cc67,0xbad6cdf5,0xbad460ac,0xb9b79d6b,0xba58a81e,0xba24cbdd,0xba452666,0xba0309e1,0xb9c4d2bc,0xb9826654,0xba8622b5,0xba8ffa11,0xba5ab17e,0xb9ccd6ac,0xb98e4dd9,0xb92b9cc0,0xba679605,0xba426ea3,0xb87b9614,0x3a1c9060,0x3a1a34a7,0xb9d84769,0xb94af587,0x38202dd4,0x39710101, -0xb98f51e1,0xba1f1a2f,0xba9a9ea1,0xba049d46,0xb9ae92b8,0xba4eac29,0xba18c539,0xba36b0de,0xbacb339a,0xbaf8e15b,0xbb09b1dc,0xb9e33db3,0xbb0074da,0xbb08f6fb,0x37e4334c,0xba853e1f,0xba54ed50,0xba836dfc,0xb9c9c36e,0xb9ef0663,0xb9833d0e,0xbb02f06f,0xbb1830fe,0xbacb4ff3,0xba2f5604, -0xb836622a,0x3a55a70a,0xba277784,0xba2e6005,0x398faf66,0x3a6c296d,0x3a1ff36e,0xba4b699f,0x391a80cf,0x39e2c494,0x3a7a47d1,0xb98ae4ce,0xba9750d1,0xbacba6eb,0xb997b1c3,0xb96b64b8,0xba23e529,0xb8f185dc,0xb7cd59b5,0xb89d11a1,0x390fbd0e,0xba142cd1,0xb911c298,0xbb01b82a,0xbb3d74d0, -0xb98d8518,0xbac68e35,0xba7be190,0xba676c7e,0xb9b44bd0,0x38bef331,0x3a45cca6,0xbb23b0e5,0xbb3132e0,0xba9aeba0,0x39d3c77d,0x3a076c89,0x3a288e91,0xba962650,0xb9ff03ba,0x3ad1674a,0x3b4a9651,0x3b3fd6f4,0xb9874afb,0x3a2dc37c,0x39d424f1,0x39cb0e50,0xb96c8672,0xba368856,0xbabebd72, -0x3809235f,0xb7b0bde3,0x38f2b023,0x38c099f3,0x387674b3,0x380fa555,0x3864ae22,0x39244d8c,0x39146814,0x39b114ba,0xba8dca9f,0xb9b98317,0xbaa633ad,0xba98915a,0xba8b183b,0xb88d3d5e,0x3777570b,0x381ba556,0xbb721c9d,0xbb966cea,0xbb5e1458,0xbacb9d81,0x3a7db9c3,0x3b0f57ba,0xba18c467, -0xba182c60,0x3abac649,0x3b222e9e,0x3a8eb1d1,0xbab4dd1d,0x38beb613,0x3c069415,0x3b90151e,0x3b80856d,0x3b20c11f,0x3ae1b784,0x3a344515,0xb8cbae9c,0xb7046cf5,0xb878a285,0xb7d27df4,0xb70f4851,0xb85af4c4,0xb808a092,0xb8ececbb,0xb87669cc,0x3a5fbdc9,0x3a4049fd,0xbab65985,0xbb72e49a, -0xbb7e4f65,0xbbb5656e,0xbb86cfeb,0xb9725ac2,0x3bb7c7fe,0x3c104b0b,0x3c690aea,0x3c072401,0x3b0d2a9c,0xbb1bd80a,0xbab4c307,0xb92398d2,0x3b791f13,0x3b0a46d3,0x3bb6024e,0x3c3866ef,0x3c32ed10,0x3aa333b0,0x3aa9ae6a,0xb9c3e7e0,0x39a5f99e,0x3a6c72bf,0x38881fe6,0xb8d6370c,0x38b9f7d5, -0xb76dbbd8,0x38189419,0xb6168f47,0x37ca89f7,0x381349b1,0x3805111b,0x3885de1a,0xb9d32c79,0x39293b66,0xba1eae2c,0xbacb2de9,0xbb0ad115,0x398cdc8b,0x3aa2d4d6,0x3ab64699,0xbaf8e8df,0xbb97bf58,0xbc0b7542,0xbbc2177b,0xb9f9c4b0,0x3c0cee39,0x3b2a954a,0xba43ba0a,0xbb316ad0,0xbc0e8f56, -0xbc122160,0xbad27a12,0xba9c1262,0x3baee723,0x3c1433e9,0x3b89344e,0x39ae60e8,0xbab718e6,0x39452024,0xb8c2c91d,0x38923a93,0xb801a95d,0x376518c7,0xb70ac88d,0xb7657046,0xb4fc637a,0xb8367de2,0x38714e2e,0x38530174,0x3918d305,0x394aee4b,0x3a1d81ac,0x3977c702,0x39af59f2,0x396715ac, -0x3a06cd9d,0x399825be,0x3aaa93db,0x3b767801,0x3abc27da,0x3993f7be,0xbb7213b1,0xba104e47,0x3b0d2b83,0x3b809cc3,0x3bb3bbf2,0x3bd19957,0xb9d01895,0x3b692b0f,0xb9ee45eb,0x3a20e275,0x3b756e24,0x3a368bdf,0xbb4ed2c9,0x3a39f752,0xb9348047,0x37963727,0xb7f2e024,0x36d2128a,0xb73b55d2, -0x370b38f0,0xb74fe5ae,0x37cc73a0,0xb853a9fc,0x385b4371,0xb8cd93d2,0x3a113538,0x3adc1a24,0x3b0960d8,0x39b4ab88,0xba219939,0xba9edcb6,0xba0fab7c,0x3a921448,0x3bdd2404,0x3b159a1b,0x39a83959,0xbbf62675,0x3b240bfb,0x3bd4abb7,0x3baf32cc,0x3b6fcf8f,0x3b0429d1,0xbbaa003f,0xbb21051b, -0xbc305b80,0xbc8f9a81,0xbbb8d410,0xbb78f27b,0xbb9375a9,0xb90d35e7,0x372851c7,0x38fb2ba3,0xb62af761,0x37dd3fd0,0x35d856da,0x3735f30a,0x3765aaad,0x372df65c,0x3781a8af,0x38076062,0xba13e93b,0x395a2801,0x3a8a3ea6,0x3a4eafb1,0x3911b06e,0xba07dc75,0xbad55d6e,0xbb39f428,0xbb9720af, -0xbba9d236,0xbb8883e3,0xba8fc780,0x3a38ade0,0x3bfdf92c,0x3bd1611f,0xbaca00dd,0xbc050822,0xbc4378a9,0xbbfdd7c8,0xbbf8c29d,0x3b3eef85,0x3c5a9520,0x3c511c56,0x3c29fabc,0x3b256516,0x3ab9bb2d,0xb9f4d83d,0x382ea2c6,0xb91083f1,0xb68fe71b,0xb7e9e026,0xb74924f1,0xb855230c,0x37064f61, -0xb8935e73,0x3891e91b,0x3a763b17,0x3b57815f,0x3b94212c,0x3b8e9419,0x3b6d00f1,0x3b41e1dc,0x3b238364,0x3af19d6f,0x3aad00c7,0x3ac4a550,0xba87ff53,0xbb3a07a7,0xbb78fd60,0xbbac5431,0xbb7d1ca6,0xbb12f1fc,0xbadf3d7e,0xbaf85419,0xbb353e74,0xbb7f00fe,0x3b0a9c46,0x3b018958,0x3aab4a67, -0x3ac84811,0x39d0c5ff,0x3a17f0ac,0x39122d3f,0x3988c608,0x38d3b2e0,0x38e930f6,0xb60a7835,0x3894744e,0x38448102,0x389aa012,0xb7e4d452,0x398dbc12,0x3a50b45f,0x3a6e969c,0x39f78732,0xb7ffd020,0xb99b441f,0xba652166,0xbabc67f0,0xbb0ae2e4,0xbb2dd38f,0xbb70b3d1,0xbb481d6f,0xbb233e1b, -0xbafdb051,0xbad62d79,0xbac9c4aa,0xbafc89f6,0xbaccb070,0xba94e1bf,0x3a80fd91,0x3aaf0210,0x38b5b329,0xb9fb6347,0xb9a3db00,0xba87f156,0xbacfdc11,0xbabc31e3,0xba934cff,0xba121393,0xb97ce035,0xb8cd00b0,0xb7453fce,0xb8d7fcfb,0xb8ed9b08,0xb950e7ec,0xb7842516,0x3999036f,0x3a5ae8c3, -0x3a59ff47,0x3a4f0a23,0x39d97d65,0x3a0311bb,0x39c7abde,0x3a071072,0x3a24de56,0x3a56ee17,0x3a8a3b75,0x3a3f1749,0x3919ed00,0xba70337e,0xbab2caa8,0xbad44a41,0xbaf84f98,0xba21b5dd,0x37f1d105,0xb9a7745c,0xb993b535,0xbb448649,0xbb564ae2,0xbb5490b8,0xbb2e782f,0xbb1726b4,0xbae886ec, -0xbaabb68b,0xba899ff5,0xba63e665,0xba207171,0xb991681a,0xb980d25d,0x3981ea4d,0x39e24429,0x3a73cc79,0x3a87cfc1,0x3ab2cf14,0x3ab78f56,0x3a9c9c4a,0x3aca290d,0x3aea85c6,0x3ae89ae0,0x3af4e290,0x3b0ff784,0x3b29128d,0x3b42b004,0x3b04a55c,0x3ad625ec,0x3aaa5a12,0x3a5e69e3,0x39bc7fcd, -0xb9d345af,0xbaa689d0,0xbb0f9103,0xbb1e794b,0xbb29ef6c,0x3a6cf4cd,0x3a06c1e3,0x3a923e50,0x3a8bda8b,0x3aa56ea1,0x3a8f49b4,0x3a898407,0x3aacdf63,0x3ac290b1,0x3af8a994,0x3b0f2a3b,0x3b2559ff,0x3b2eda5d,0x3b47886e,0x3b3efe8b,0x3b39e7bf,0x3b3dde92,0x3b3b0a98,0x3b2dc095,0x3b34fa7f, -0x3b29e079,0x3b373091,0x3b330254,0x3b327e6c,0x3b216dc1,0x3b0ea5a6,0x3b27eff4,0x3b11cd8b,0x3b02f37e,0x3af6e5b8,0x3aca9d84,0x3ad9df53,0x3add0a38,0x3b02568b,0x3ad0e75b,0x3a901ece,0x3a7ffdd2,0x3a45a0c8,0x3a69f3e6,0x3a86a3eb,0x3a99a2e0,0x3a9dd1a5,0x3ab50614,0x3ac83b60,0x3add19fe, -0x3ae23840,0x3ae93d49,0x3af5af73,0x3b023fa1,0x3b084881,0x3af83ad7,0x3b005bc3,0x3afc2a90,0x3aff7aff,0x3b04dbfa,0x3b0ba4f4,0x3b0c94de,0x3b10c8cc,0x3b12ca08,0x3b18b25f,0x3b1dca66,0x3b1d1845,0x3b197116,0x3b0ba57c,0x3b0c424c,0x3b083774,0x3af8b1aa,0x3ae61f0a,0x3aba6cbc,0x3aa39e09, -0x3a8b73f7,0x3a812414,0x3b5ec40b,0xba8786af,0xba06bcba,0xba0564e7,0xba160958,0xba14b2ac,0xba22d7f7,0xba2a8eef,0xba1739b6,0xba0d7d83,0xba053d7b,0xba0dcf17,0xba237b10,0xba4d9a51,0xba5658f2,0xb9fe0c6f,0xba5fb278,0xba620525,0xb9b596dd,0xba205ac9,0xba37f6dd,0xba4a4eb7,0xba373b33, -0xba3bd34d,0xba39df77,0xba88b8d1,0xba8c6647,0xba65066f,0xba3cd516,0xba158812,0xb9fba753,0xba22367c,0xba2d6ae8,0xba1a7489,0xba082c3b,0xba13577d,0xba40aeba,0xba088615,0xb95a8ad1,0xb947505b,0xba119476,0xba5e0b34,0xba86aeae,0xba4f05aa,0xba2f463b,0xba0ea287,0xb9c33104,0xba2b6a83, -0xba8397d7,0xbacbd39a,0xbabda81a,0xba15090c,0xbad87983,0xbadeb791,0xba1350e7,0xba87519d,0xba70b3ac,0xba8d56a5,0xba48119b,0xba368d29,0xba45398e,0xbac0fa20,0xbac04e8e,0xba92cd1f,0xb9e4a1c4,0xb9d9578b,0xba4b6eee,0xba8fdd9d,0xba4f65f3,0x36340561,0x39c9048f,0x399d4da7,0xba336453, -0xb98a64dd,0x38bdf030,0x38e54a4a,0xb9bc93fa,0xba235c60,0xba8c81ea,0xba2afa07,0xb9eb7fa4,0xb9a8330a,0xb9d0483a,0xb9f17b99,0xba7f73ba,0xbac474ea,0xbafe3817,0xb9cf36f8,0xbafafff4,0xbb03e7e7,0xb9051ce9,0xba95d02a,0xba87add8,0xbab9c372,0xba470abc,0xba831946,0xba8a8e64,0xbb36a78a, -0xbb400468,0xbaf0ad0b,0xba210980,0xb84f8f8f,0xb933c9a0,0xba6d31e3,0xba49d755,0x39fc80f5,0x3a2a751a,0x39c1ade1,0xba6d1ec3,0x39488abf,0x3a4eec55,0x3a7f68ce,0xb940a8cd,0xba84550f,0xbaa6a5dc,0xb9d2507f,0xb93dc63a,0xb832297c,0xb89c6728,0x38c069e5,0x39030d0e,0x39d2ed2d,0x383eb373, -0x392c6550,0xbaab5646,0xbb218638,0xb9d4ddd9,0xbad700ab,0xbab0d161,0xbac81e4c,0xba540815,0xba176d1c,0xb9bf2279,0xbb6f2c45,0xbb70b625,0xbac5ad7f,0x39fac55c,0x39e85023,0xba7f6470,0xbab28a0a,0xb9eee7ea,0x3b0aa970,0x3b30a432,0x3b1e5bfc,0xba36a190,0x3a4296a0,0x3a28aff3,0x39a0e8c9, -0xb92a6ce9,0xb9efbb75,0xba83b666,0xb7a01ac4,0x38870a0d,0x38021903,0x37e65ae0,0xb7c9c3c3,0xb85e5181,0xb8ee8105,0xb7aca706,0x38452d52,0x3a090ad9,0xba03878e,0xb9a8cc85,0xba9da4b7,0xbab55115,0xbae6f5a9,0xba42b742,0xba83440f,0xbac80b7c,0xbbaabfb6,0xbbb91e47,0xbb74588a,0xba89c305, -0x3a8bc249,0x39e71523,0xba8e0edb,0xba17a60b,0x3af3a0db,0x3b054080,0x3a26f8d7,0xbab416af,0x39cab0eb,0x3bf521b9,0x3b89956f,0x3b65ed41,0x3ad80ac4,0x3a723ed8,0x391ed6bd,0xb88b78f9,0xb7810e19,0xb7498956,0x36d9f70e,0x37c5b9a6,0x38059fde,0x38181756,0xb8b67f0b,0xb8fc5930,0x391c4daa, -0x3a910af9,0xba2ffbc4,0xbb426b1b,0xbb5d8757,0xbb94609b,0xbb3b7da0,0x3a995ea8,0x3bfac44c,0x3c21284c,0x3c596311,0x3becefd7,0x3adf08d1,0xbad2e4f7,0xba53af98,0x39f1db26,0x3b88ea25,0x3b50268e,0x3bcd395e,0x3c369781,0x3c2529c8,0x3ae4c8c3,0x3aa653f7,0x3a091aa5,0x3a5fffed,0x3a1f3e35, -0xb828da08,0x36e959fc,0x37d15875,0xb671ccd6,0x35da88a0,0xb7452a7d,0xb78031a3,0xb786dacd,0x38150a18,0x38acfbe8,0xb93a4961,0xb81a12b0,0xb9972365,0xba87c9ce,0xbb0a1c4e,0xb8937b3d,0x39e170b7,0x39ae3aec,0xbb3ff50a,0xbbadf2d4,0xbc0a9302,0xbb9877d4,0x3a208832,0x3c07c198,0x3b1f3d2e, -0xba7d2404,0xbb5b8cf8,0xbc0485a7,0xbbf74519,0xb970cbca,0x37d4e024,0x3baea0fc,0x3c24f48a,0x3bae3913,0x3a3d58d8,0xba65d821,0x3909b9c8,0xb8f0c717,0x3892b9fc,0xb7f86160,0x37943cfd,0xb6e09b5d,0x376ddafb,0x3713f5b9,0xb7f04b63,0xb53ff999,0x37b74c9e,0x38f8b876,0x393bb253,0x3a21d4d5, -0x39954a67,0x39fe501b,0x3a1b00fe,0x3a43b0da,0x3a8cafee,0x3b066828,0x3b7c3dda,0x3a6b0dee,0xb971eb04,0xbb7b7767,0x3a067b8a,0x3b6138fa,0x3b85a270,0x3bb8d5f6,0x3bbeabef,0xbb37eb23,0x3b453224,0xba5f2cec,0xbb23707d,0x3b7e5e5b,0x3a4e6b51,0xbad85e4e,0x3a7009a4,0xb9911ed0,0x38a1c73b, -0xb8470d21,0x37d7dce8,0xb72f64f4,0x368ebecc,0xb7517832,0x378b84ea,0xb774b05f,0xb7c25822,0xb6005f16,0x376f7646,0x3a717903,0x3ac3079a,0x39351af6,0xb99ab923,0xba70e248,0x3a1672d7,0x3b0a0bae,0x3be0c32c,0x3a992bcf,0xb9fed781,0xbbd3e0fc,0x3b71b3e2,0x3bf5a451,0x3b7257d7,0x3b705fa8, -0x3aee3027,0xbbd50228,0xbb1875b1,0xbc29b723,0xbcbb7f29,0xbbc8d59f,0xbae8a255,0xbb071d2b,0x39743763,0xb7ef6307,0x38f7f43d,0xb81c3379,0x370f4a71,0xb77c897f,0x3709b7f0,0xb655c16b,0x37d085ac,0xb7fa48da,0x39175505,0xb9e8cbc4,0xb9c8ed07,0x394f2d58,0xb97b0ed0,0xba1829e3,0xba9d7411, -0xbb04f627,0xbb5765ea,0xbba02fd8,0xbba660fb,0xbb817f8d,0xb9c97d6f,0x3b2d33a5,0x3c04a7c0,0x3ba9bf8a,0xbbaf7c48,0xbc0923a2,0xbc22d874,0xbbb7e4b8,0xbbb31069,0x3a86204c,0x3c3216ba,0x3c178103,0x3bcf7cf6,0x3b03cfff,0x396e4c02,0xb9aa7f11,0x37559d79,0xb8173066,0x3800d2bc,0x36e8e3f4, -0x3793c57e,0xb73e5b68,0xb7f74736,0x34918d10,0xb90dc3e6,0x39df6f74,0x3b209c24,0x3b7efd80,0x3b8c12b1,0x3b7635a2,0x3b59ccc0,0x3b349bcf,0x3af09e70,0x3a9b92ab,0x3a9cdaa7,0xba95f0b6,0xbb4409e8,0xbb868dc5,0xbba2193f,0xbb4d30f3,0xba8bad50,0xbaeab26b,0xbb48068e,0xbb95ba75,0xbba4fe0c, -0x3b141468,0x3aeaacc0,0x3ac2cc2a,0x3af941cd,0x3a6538d0,0x3a6e4651,0x38bfce96,0x3960a148,0xb87b71e1,0xb6285696,0xb873e417,0xb7949577,0xb63178f4,0x38832d99,0x37a86582,0x393ece51,0x3a2895a7,0x3a911a62,0x3a68a6e0,0x39b5f8a5,0x38245929,0xba25bcdb,0xba91078a,0xbb09a181,0xbb34c074, -0xbb8224e3,0xbb5203cb,0xbb2f3fcc,0xbb0933e5,0xbb06292e,0xbb04647a,0xbaffd4aa,0xbab32a8b,0xba09ff78,0x3abd6a87,0x3aef2607,0x3a170042,0x39a51154,0x3961bc2f,0xba2a1d9b,0xbab86104,0xba906e26,0xba2c7254,0xb92647c2,0x3862b3dc,0x38d4f503,0x39072a7e,0x38a6b84b,0xb7066345,0xb895d902, -0xb9146648,0x38cd5c43,0x3a167a7b,0x3a57787a,0x3a80160e,0x3a6afd5f,0x3a39286c,0x39f9d8a8,0x39c55a74,0x39cb1b22,0x39b752a8,0x399bf6ae,0xb7df5d2d,0xba2ef21c,0xbadff7c9,0xbafd7ae0,0xbaea2ed4,0xbae4d48d,0xb9bea93f,0x397f7421,0xb89522d2,0x388610c6,0xbb44a39a,0xbb5b127f,0xbb566993, -0xbb2d5f97,0xbb11b751,0xbaeb90d2,0xbabe13b7,0xba94fc04,0xba8a3b58,0xba58a1c7,0xba1c7e88,0xba27b890,0xb98b9b9f,0xb93181f7,0x39d3a724,0x3a0881f3,0x3a768a46,0x3a91ff66,0x3a9edccf,0x3ad6f3cc,0x3ad3d70e,0x3ad7f266,0x3ad34102,0x3af037fd,0x3b0a2f9e,0x3b21a6bd,0x3ac8630d,0x3a9aedf9, -0x3a649d82,0x3a071228,0x37f7a3b9,0xba2c2636,0xbac35d51,0xbb12f137,0xbb15c695,0xbb25b555,0x3955ee85,0xb935208a,0x39bb6215,0x394c7028,0x39b45d05,0x395706b7,0x3984ec10,0x3a0f6d93,0x3a2f61f3,0x3a906c3b,0x3ab690ea,0x3ae32969,0x3afba03a,0x3b153efe,0x3b16b41b,0x3b1c0415,0x3b308766, -0x3b2e72bf,0x3b3af5c1,0x3b34d3ff,0x3b2e6b70,0x3b394339,0x3b376e9b,0x3b38c48c,0x3b292cfe,0x3b182402,0x3b25879c,0x3b09d83a,0x3ae49872,0x3ac86e61,0x3a965dd4,0x3a9b7dc6,0x3a99f9d4,0x3ab65520,0x3a696363,0x39bd4ea7,0x3a4796d9,0x3a038768,0x3a383353,0x3a7f2e05,0x3aa2f266,0x3a889fa4, -0x3aa40836,0x3ac482e2,0x3adb7d46,0x3adf7fcf,0x3ae6e95a,0x3af33bd3,0x3b00e39e,0x3b06731a,0x3ae42383,0x3adecb65,0x3b02f578,0x3af5698b,0x3af15b5a,0x3af79ad0,0x3afbacbc,0x3b010e57,0x3b02463d,0x3b06e3d4,0x3b0be4d7,0x3b0c7f7f,0x3b0826c8,0x3af77a6f,0x3af9f0b4,0x3af1b875,0x3ad93c9b, -0x3ac42b1b,0x3a9a4b98,0x3a87432c,0x3a64b3dd,0x3a50bc74,0x3b4ca4d7,0xba95bf8b,0xba1bee8b,0xba25f77a,0xba2d5f01,0xba25ae13,0xba346fb4,0xba3a9c26,0xba25d825,0xba068fb6,0xba10fc1b,0xba196d2d,0xba18f481,0xba449a10,0xba58c785,0xba13c850,0xba7266da,0xba72a1b5,0xb9fbde87,0xba32bf0d, -0xba460945,0xba5bdc8a,0xba50ae40,0xba595dd4,0xba61ac48,0xba97eac8,0xba97661e,0xba709551,0xba3f3c1c,0xba1c289a,0xba238a0d,0xba2fbff0,0xba3020c8,0xba1093f6,0xba15d822,0xba23e9e0,0xba53699e,0xba1abe3d,0xb98e7dc4,0xb99bfd0b,0xba0f7d9d,0xba67f23d,0xba8369af,0xba6cab7d,0xba423dfc, -0xb9bb3332,0xb9e2eabc,0xba36390b,0xba892ccb,0xbaefe2d8,0xbad27c97,0xba278280,0xbacc1cfa,0xbad193b1,0xba3b5d0a,0xba93f833,0xba8f0d64,0xbaa5ecd1,0xba74ac42,0xba70ded3,0xba948db3,0xbae0e21a,0xbad57efa,0xbaa15454,0xb9c1980f,0xb9e0b680,0xba9b75f7,0xba8e1ec5,0xba272974,0x3969a7b2, -0x39744106,0x3789ed72,0xba7d7978,0xb9cc7eb9,0xb8e7b096,0xb9281011,0xb9de8c1a,0xba2d79b6,0xba6f9887,0xba3f0467,0xb9f5dc03,0x38c89192,0xb97a9e7e,0xb94172e0,0xb9e7a5b2,0xba314b25,0xbab50f12,0xb98b42c7,0xbae6e853,0xbaf37131,0xb97ce9fd,0xba98542b,0xba93abb2,0xbad8e2bd,0xba85be7e, -0xbab7be8b,0xbade3081,0xbb51d68b,0xbb4d79fe,0xbaf14980,0xb9cdf633,0x38d71de1,0xba615cc7,0xba57c03b,0xba0c37d1,0x3a770d58,0x3a026e7b,0x38dd625d,0xba996051,0x375a5e8f,0x3a3110da,0x3a472b74,0xb880869e,0xba6f165b,0xba86b4de,0xb9e0c14c,0xb8918f20,0x38797fc5,0xb7e76d72,0x38c3373c, -0x38c04ca5,0x39cdd716,0x392fccd8,0x3988ebf4,0xb9f7592a,0xbae40ba9,0xba16dcbb,0xbad790c3,0xbad3cb20,0xbb0177a5,0xba9545f9,0xba9267b1,0xbaaee5cb,0xbb8c2bc0,0xbb860e69,0xbacc42bb,0x3a31711e,0x3a07c9dd,0xbb0db514,0xba94aae7,0xb792eaba,0x3b3e1cad,0x3b177f77,0x3ae246d4,0xbab18235, -0x39ec52a2,0x3990f536,0xb94cae10,0xb96948b5,0xb9bb032d,0xba2de3cf,0x38cde552,0x380cadf2,0xb7406e1f,0x373b9594,0xb7db1f16,0xb88e267a,0xb92ce6aa,0xb803a677,0xb91c8ddf,0x39bc87c3,0x36c82c45,0xb984630c,0xba87df92,0xbac6e32e,0xbb10d2b1,0xbaa21ac8,0xbaef7b6c,0xbb39535b,0xbbc65cea, -0xbbc3c7bd,0xbb6a14aa,0xb9b90d21,0x3aa74221,0xba610938,0xba83867c,0x3533a546,0x3b3012b3,0x3ae3233a,0x38f22f74,0xbae24e66,0x39256d81,0x3bbb7668,0x3b68d6ef,0x3b31a3fd,0x3a81c46a,0x39999dc6,0xb867f975,0xb7d070b1,0x35f5fb91,0xb646f0ca,0x3727cd1b,0x380740c7,0x3876cffb,0x38332291, -0x37241939,0xb89cd6ea,0xb939531e,0x3a836eb1,0xb8a26a90,0xbb12d26a,0xbb3d9ab0,0xbb6371f8,0xbad04797,0x3b1de2f1,0x3c16cb9e,0x3c2aeafc,0x3c422ab6,0x3bd0647d,0x3aefc080,0xb8dd485b,0x39bbef0a,0x3ab8b47d,0x3b903485,0x3b7f839e,0x3bcd9b4a,0x3c24210e,0x3c01ad36,0x3af3f815,0x39de614c, -0x3a22002c,0x3a8c2f51,0x3989cc52,0xb8b0a575,0x388ea92c,0xb79a4042,0x372a63e0,0xb71f3593,0xb74e18cc,0xb7ee33d6,0xb7bb4ee2,0xb7230fec,0x38aecd15,0xb8796042,0xb942939e,0xb7b38503,0xba08054e,0xbae16b6a,0xb92a7db7,0xb949f4dd,0xba0b18ce,0xbb6871cf,0xbbab9cc9,0xbbea4884,0xbb289910, -0x3b0cd510,0x3c0516d5,0x3b2712c3,0xba63786b,0xbb74f76c,0xbbe03ca2,0xbbb7f739,0x3aa2d2f9,0x3a8f4998,0x3bb4eb05,0x3c23d362,0x3bb2ccb4,0x3a3fce01,0xba0f3955,0x38fdb9fc,0xb8b8a31b,0x3834a704,0xb7b25f1e,0x371f5d5b,0xb679b01b,0x3795974e,0x3708b17c,0xb68fe7e3,0xb77d7e80,0x37e64b8c, -0x388ef476,0x38f98d72,0x3a13e8e1,0x3a0b2345,0x3a6a5b2b,0x3aa38c47,0x3aa869c0,0x3b0c3611,0x3b44fbb4,0x3b7e9201,0x3a2ff007,0xb9c9b4f0,0xbb68363c,0x3aafe276,0x3b84e93f,0x3b688691,0x3baf4958,0x3ba893d1,0xbb5a757f,0x3b440711,0x38884681,0xbb7b5b55,0x3b3ac39f,0x3a277055,0xba1a43d8, -0x3a01f12e,0xb9280e90,0x388ce5d4,0xb7dd56ca,0x37b6f01b,0x3647b9b6,0x35ab557e,0x350c0870,0xb512c23e,0x37ad5f80,0xb898fdd2,0x38aa4cb8,0xb98574ff,0x39408f3c,0x3a794269,0x39384da0,0x3975f521,0xb9b1ce71,0x3aece515,0x3b43ad92,0x3bccc935,0x3862e1f6,0xbaa5ffaf,0xbbac3182,0x3b7caa0f, -0x3bea4edc,0x3b005a06,0x3b6e2e30,0x3afbf517,0xbbc5c167,0xba90b9d8,0xbc057e15,0xbcc555d7,0xbbd32fd8,0xba187e31,0xba190378,0x385c0443,0x37c721cd,0x36d3ee3f,0xb7bc9ad0,0xb747739a,0xb7d3e4d2,0xb6897efa,0xb788d711,0x36f5f396,0xb7aa1603,0x38f38318,0xb905a034,0xba297257,0xb9d664c8, -0xba8524f4,0xba98b6df,0xbaefbcaa,0xbb1d7fd1,0xbb77db32,0xbba859b1,0xbb9e9ef8,0xbb758343,0xb82bb65e,0x3b86494b,0x3be95a05,0x3b4d1eb4,0xbc044709,0xbbf6bf6a,0xbbe490eb,0xbb44eafa,0xbb2b3d28,0xb982341b,0x3be376ec,0x3b9f24b3,0x3b367793,0x3ab68ca3,0xb9b0689a,0xb7ee5156,0x36303dcf, -0x3827f3fb,0x37edbe4e,0x384d4497,0x3822b01e,0x37ce0ead,0xb6ce0c6a,0x37933e8a,0xb925f879,0x384281ef,0x3ae1c898,0x3b56a388,0x3b865685,0x3b71368c,0x3b615db3,0x3b2ea835,0x3acd861e,0x3a4dfb53,0x3a1aef39,0xbaba0686,0xbb500d27,0xbb8e4ffb,0xbb994788,0xbb2b2a37,0xb9958c1e,0xbaddc55f, -0xbb60d210,0xbbad3253,0xbba058eb,0x3b2c7ae0,0x3afc7c8b,0x3ad1e2d4,0x3af75e47,0x3a925fac,0x3a072d11,0x37eabc7d,0x37ce37a3,0xb8c238ea,0xb892d910,0xb8ddfd34,0xb8c20086,0xb7ffb1b1,0xb7b35d68,0x386bc536,0x38e3824d,0x39f93747,0x3a9cfb02,0x3aa9a7cf,0x3a49bd0d,0x39b00674,0xb9efb739, -0xba7c4614,0xbb07dd76,0xbb34798d,0xbb842828,0xbb50d9bf,0xbb351711,0xbb135de8,0xbb1a0d63,0xbb17ea11,0xbaf14d05,0xba97a718,0x38332e77,0x3afe7239,0x3b1e5dd2,0x3a901ae2,0x3a761505,0x3a3e7d08,0xb99527b8,0xba8ae92a,0xba11bd02,0xb986cdf2,0x38db339a,0x396196d1,0x3925dd81,0x395f626d, -0x39495801,0x38ae0cdc,0x38be78f9,0xb92b7c15,0xb89671f8,0x3969d8e1,0x3a168576,0x3a69bf8c,0x3a86587d,0x3a23b70b,0x39a4677e,0x364e75ed,0xb7dbb032,0xb98a47dc,0xba201c4b,0xba567f1b,0xbab6fe36,0xbb159111,0xbb149745,0xbae86018,0xbac5b844,0xb941b758,0x39b08d3e,0x391e651f,0x39c6cc72, -0xbb2fee37,0xbb464096,0xbb494ca3,0xbb1996bc,0xbb026d52,0xbae64ee3,0xbab92212,0xba827e25,0xba795335,0xba31624e,0xb9f71c8b,0xba23cf4a,0xba04634b,0xb9fea80c,0xb8e898b5,0xb70b1537,0x39cf2cf5,0x3a22c596,0x3a4a7673,0x3aabadb4,0x3a937ad1,0x3a9c3332,0x3a8b6ef2,0x3a9184fc,0x3aa249b8, -0x3ac640c9,0x3a5c6d86,0x3a30ccfa,0x3a1153c4,0x398a34f2,0xb9470eed,0xba46f5ea,0xbabf4bf9,0xbb038553,0xbafcd738,0xbb10cdc3,0xb9773672,0xba09ac78,0xb99f486c,0xb9dbbe54,0xb99aa2c1,0xb9d92782,0xb9a3f3fa,0xb941d36e,0xb85ef6be,0x3986c078,0x39fd913f,0x3a58e8a7,0x3a92bd66,0x3abda7eb, -0x3ad6ad10,0x3af005e8,0x3b12602c,0x3b17cade,0x3b342c1f,0x3b2c5a1c,0x3b27c774,0x3b2ae082,0x3b29d91f,0x3b2bbf6f,0x3b1e65af,0x3b0eb9f5,0x3b0ef5b4,0x3ae12223,0x3aa760f5,0x3a8aef7e,0x3a443093,0x3a48f962,0x3a3d2f39,0x3a603dd5,0x39b6ca1f,0xb9081002,0x3a004bd5,0x398522ce,0x39e773fd, -0x3a3b255b,0x3a80ebcc,0x3a42b530,0x3a733fd7,0x3a979291,0x3aae7d1d,0x3ab6b09f,0x3ac19af2,0x3acb4cd0,0x3ad3d4dc,0x3adbf562,0x3ab5227a,0x3aab34b3,0x3adda2de,0x3ac6fecf,0x3abd5c60,0x3ac11efd,0x3ac48bf2,0x3ac9d4b4,0x3aca4237,0x3acebd81,0x3ad6b71a,0x3ada511e,0x3ad3f7d3,0x3ac40515, -0x3ac984d6,0x3ac206e3,0x3aa997a5,0x3a94fbda,0x3a61f50a,0x3a45cdac,0x3a231ebc,0x3a0f17f5,0x3b2604c9,0xba9a44d5,0xba24c1a8,0xba30c7cd,0xba3f0cbd,0xba3b4446,0xba426841,0xba46722b,0xba350b12,0xba010a6d,0xba18a881,0xba2273e9,0xba1d56c9,0xba477090,0xba50379b,0xba188d67,0xba75e155, -0xba785f4f,0xba19ce09,0xba40defe,0xba4c453b,0xba5843e6,0xba5898e6,0xba655180,0xba775093,0xba99976a,0xba953fd5,0xba6aa9ae,0xba372397,0xba1ce746,0xba4004a6,0xba3708d3,0xba2c457b,0xba006bb6,0xba18350b,0xba2573bc,0xba51107a,0xba1e0b19,0xb9a3a931,0xb9e98903,0xba35c407,0xba6d1402, -0xba824976,0xba799b62,0xba4836f3,0xb9206b22,0xb9d5a38b,0xba2cc070,0xba6d04cc,0xbade9b6b,0xbad81d36,0xba40dd98,0xbabf6de5,0xbabb5250,0xba53845c,0xba950432,0xba9b05a2,0xbaacf14e,0xba830128,0xba8898c9,0xbab51c68,0xbae78e19,0xbad3a88d,0xbaa122f5,0xb99cc2a0,0xb9e7e9f1,0xbac3bbed, -0xba8c40c9,0xba0b873c,0x39c49f1e,0x38a0f44c,0xb96f3c63,0xba95a0b2,0xba003b7b,0xb954a6cd,0xb9e52c3e,0xba1ab23c,0xba370310,0xba58ae00,0xba4d3691,0xb9ede1d4,0x3983f2c5,0xb900e40e,0xb7bedd39,0xb92bcfa0,0xb962afc2,0xba330319,0xb9108cdc,0xbab68aec,0xbad2ef82,0xb9b4fc4c,0xba8b944f, -0xba8f4c78,0xbadc8aa1,0xba94efd8,0xbad6341f,0xbb0bfc67,0xbb553526,0xbb4487b6,0xbadd9e06,0xb94149bb,0x392353db,0xbac233c4,0xba571936,0xb9d653c0,0x3aa2c7e0,0x39b34be6,0xb88833e4,0xba9ee1d6,0xb8ac7ebd,0x3a27810a,0x39b50370,0xb97d6d78,0xba5ef865,0xba6d6147,0xb9ba312d,0x380bed53, -0x377f70e5,0xb79a036d,0x38969e75,0x38b78779,0x396a56c1,0x398c2a52,0x39203805,0x3912678a,0xba7ace97,0xba25c724,0xbac7b197,0xbadba760,0xbb0b45eb,0xbaa6db51,0xbabea949,0xbb07bd9c,0xbb8e60f4,0xbb827a4b,0xbabe4c84,0x3a5741bd,0x3a00b118,0xbb4a03e6,0xba855ed5,0x393a0382,0x3b5a1710, -0x3aed12af,0x3a8d952b,0xbae5ec46,0x3949f43e,0x3937415c,0xba245501,0xb9f559ba,0xb9abaada,0xb9d37aec,0x39435f8c,0xb70da58e,0xb6262e0e,0x373111db,0xb82b9c47,0xb8262e70,0xb9048e6d,0xb88db280,0xb935be06,0x39118d96,0x3950a37a,0xb8e38c3f,0xba496a10,0xbabe3c19,0xbb166fb9,0xbac44db4, -0xbb1c18e1,0xbb771e67,0xbbcb647b,0xbbb8ddf4,0xbb4def81,0x398435b9,0x3aa3bb57,0xbb06b907,0xba8e8c05,0x398ff4fc,0x3b4e2b56,0x3ab849c4,0xb94e3be7,0xbada6f81,0x390a1f3a,0x3b926b36,0x3b6c5c53,0x3b087d3a,0x3a0de2d3,0xb62fb6bf,0x377945a7,0xb83f0160,0x3777421f,0xb74a81d8,0x37abe1f8, -0x3766c944,0x385be170,0x383860f3,0x38435c6a,0xb79b3cd4,0xb978127b,0x3a0a107f,0x39b5389c,0xbac84a5a,0xbb143666,0xbb119088,0xb9784fd5,0x3b68d6ed,0x3c269e74,0x3c2b90c4,0x3c2952dd,0x3bb6baec,0x3b0e7ee3,0x3a9556fb,0x3ac2fd4d,0x3b1171d7,0x3b824b3a,0x3b8f02a7,0x3bce52c0,0x3c167534, -0x3bcd4e00,0x3b1bf089,0xb68b1668,0x3a1cf83f,0x3a8b28ea,0xb8c94c43,0x37e4771f,0x36875d56,0x375b0a69,0xb5ddbdc2,0xb68ba9e3,0xb71b6af1,0xb7a9cfeb,0xb7f99274,0xb78c9952,0x37876fce,0x387cbb30,0xb95f5319,0x38a2f41c,0x383925ce,0xba9231c5,0xb99525e8,0xba5e8148,0xbac94735,0xbb8dbd39, -0xbbad403d,0xbbc13a43,0xba9d9fcb,0x3b31d185,0x3bd8d096,0x3b075693,0xba6f75e1,0xbb725e5c,0xbbb02a06,0xbb6cf313,0x3b2f3d4e,0x3b1b7e5c,0x3ba4f4bf,0x3c20b025,0x3bb5094e,0x3a1e2f41,0xb980546b,0x38b62c7c,0xb8888814,0x37a3630f,0xb78f8464,0x36760ca9,0xb69f28e7,0x3761a4b1,0x36aa12f7, -0x36d93666,0xb750b90e,0xb7663ce6,0x38b1b8cc,0x38055a84,0x3a0cc63f,0x3a2cb4d5,0x3a875c4a,0x3ac9d261,0x3ab790d0,0x3b1fef26,0x3b4318d8,0x3b391b19,0xb987612d,0xba8d1840,0xbb71abc1,0x3acee033,0x3b8422c3,0x3b42aa99,0x3b8f5e8f,0x3b71185e,0xbb8848c0,0x3b18f74e,0xb9486a61,0xbb8ca7f5, -0x3b09df6d,0x39de7138,0xb96f4b26,0x392b80dd,0xb843c686,0x381997f3,0xb5ffe1ea,0x377ec79d,0x37455f8c,0xb5de9067,0x37716918,0xb74a93fb,0x381e915e,0xb8c1982b,0x3909e555,0xb9a0d277,0xb9c55f8f,0x3993a008,0xb81166cf,0x39f1c1c3,0xb8a9f3de,0x3b202423,0x3b4c9734,0x3b98821a,0xba9e482c, -0xbb01ed7a,0xbb7ee775,0x3b607957,0x3bc885ac,0x3a57272d,0x3b4e469d,0x3ab3ec4c,0xbbc51fd3,0xba7fb908,0xbbd348d9,0xbcb9fe48,0xbbcee8cd,0xb78fbaa3,0x38a261d0,0xb88cf1c0,0x381fb737,0xb862dd8a,0xb757988f,0xb7e496d7,0xb7c9dec0,0xb733134d,0xb7ecc9a0,0xb7674d34,0xb44b026b,0x37fdfae2, -0x38ddad1f,0xba27d117,0xba623dcc,0xbae464b6,0xbae40b86,0xbb20cb77,0xbb3bb25a,0xbb8821a6,0xbba7da3b,0xbb8fdce8,0xbb508a80,0x39fecd51,0x3bbbc100,0x3bbbc5c9,0x3a9ca13a,0xbc13dea3,0xbbc50a5c,0xbb85804d,0xba9928e4,0xba4f1c0c,0xba96b668,0x3af30b82,0x3a3f9798,0x38460736,0x3a5d9e90, -0xb9f99e18,0x3913e6d8,0xb7abdc55,0x38b87603,0x380ded7e,0x386ecafb,0x382e22dd,0x3861e66c,0x37f3853a,0xb733063b,0xb85a03ac,0xb9476016,0x3a867e51,0x3b25dc9b,0x3b6906cb,0x3b526648,0x3b517875,0x3b1f00f0,0x3aaddaf6,0x3a0c4447,0x38f46524,0xbaac8712,0xbb3d6479,0xbb8304cc,0xbb7659c5, -0xbae1a54b,0x39c722cb,0xbaaae503,0xbb4d14e3,0xbba9e896,0xbb787791,0x3b2ec4f2,0x3ae2ed8e,0x3ad48797,0x3ae181db,0x3a807e5c,0x38ae7576,0x3853a8b1,0xb8f4e871,0xb8b178dd,0xb9149081,0xb8b96f68,0xb8f45804,0xb8911a95,0xb8aaa98b,0x38404474,0x38b12f80,0x396501ec,0x3a969898,0x3abea8bb, -0x3a913bc2,0x3a16f169,0xb9779294,0xba22f9d5,0xbadc224b,0xbb155bf7,0xbb66635e,0xbb374882,0xbb249de9,0xbb05a1e0,0xbb176ef4,0xbb178ad4,0xbacf1574,0xba719a7b,0x39df8014,0x3b0437c5,0x3b28e863,0x3aaa9ab8,0x3aaf661e,0x3a82b130,0x36301591,0xba21066a,0xb94f0eaf,0x375dad03,0x396e0789, -0x396d5317,0x3966992b,0x3949e1de,0x39560593,0x392e871a,0x393c5ba0,0xb89ea578,0xb8d99ec9,0xb71ba5b7,0x39b7efad,0x3a3e9cd0,0x3a854d0a,0x3a1827c9,0x395a498d,0xb97e60d2,0xb964fd30,0xba19ed06,0xba95ddb4,0xbaa3fc13,0xbae67aa8,0xbb1fb00e,0xbb127ade,0xbac8c7eb,0xba93a55d,0xb845f4ca, -0x39ae1b4a,0x3984408c,0x3a18a7e0,0xbb10d24e,0xbb264a1e,0xbb2875bd,0xbaf72940,0xbad4ed0d,0xbac1575e,0xba95122d,0xba29318f,0xba0d5f21,0xb9dcfcc4,0xb99af4ba,0xb9f1dde4,0xb9e03a69,0xb9faa0d5,0xb9ca717d,0xb9a53ce3,0x37d62b1c,0x397a265b,0x39b1dcb6,0x3a75d082,0x3a2bbe9a,0x3a431140, -0x3a124a3a,0x39e03f71,0x39e2d7e9,0x3a2789c9,0x398bfac7,0x399540a8,0x39ad6dc4,0x38dfbbee,0xb99551d7,0xba3c4bb7,0xbaa46ae2,0xbad27236,0xbac2c9e0,0xbae8930a,0xb9ee839c,0xba2adb1f,0xba2e2d8b,0xba4592f0,0xba28185c,0xba4db58d,0xba351da2,0xba3d418c,0xba28a5f3,0xb9bdc003,0xb9187928, -0x3906b197,0x39bbd977,0x3a2a87d6,0x3a807ba1,0x3aa48c05,0x3ade9212,0x3af6a43a,0x3b23db42,0x3b1cd3af,0x3b183ecb,0x3b13efaa,0x3b12ff04,0x3b14fd7a,0x3b0920b2,0x3af39ca4,0x3addb392,0x3aa10008,0x3a4b3fc2,0x3a1bf7a8,0x39c7b8a2,0x39cfb8bf,0x39aec168,0x39d275fa,0xb81c055a,0xb9d96cbf, -0x394ace13,0xb5c690a1,0x39264050,0x39d93d4c,0x3a2e2f8e,0x39d01d83,0x3a16ed14,0x3a52aa61,0x3a7e7a67,0x3a8550dd,0x3a8d20e3,0x3a96e865,0x3aa16e89,0x3aa6bea8,0x3a7ef015,0x3a630e3e,0x3aaab64e,0x3a8f717f,0x3a80e423,0x3a819e1e,0x3a842fdd,0x3a87ea10,0x3a85d6cc,0x3a857257,0x3a8b6289, -0x3a914f48,0x3a8ec915,0x3a880daa,0x3a8f8d1e,0x3a88e122,0x3a639ba4,0x3a3e4371,0x3a063d58,0x39e7f4b5,0x39b148b1,0x398920d6,0x3ae8a117,0xba8d82bd,0xba18f90d,0xba2a488d,0xba2bda85,0xba2b6b9b,0xba3adbec,0xba33be7a,0xba23ab46,0xb9d1abc5,0xba0c8e53,0xba1b2611,0xba173a66,0xba44f167, -0xba4d82e8,0xba10cf42,0xba4ace8a,0xba5656f3,0xba235f4c,0xba2f175b,0xba332145,0xba45626f,0xba4e1f1b,0xba5e431d,0xba77bcfa,0xba8e8dc3,0xba879120,0xba54fb91,0xba23b97f,0xba11f08d,0xba46b06e,0xba2d2f33,0xba195edd,0xb9c88002,0xba0985dc,0xba1537fb,0xba38dce5,0xba0f3c91,0xb9818b32, -0xb9e99c25,0xba2ba637,0xba557eca,0xba5ffe5b,0xba6047be,0xba33a924,0x380d0999,0xb9a244b3,0xba06f7cd,0xba30e32f,0xbaaa76dc,0xbaaf6aed,0xba41f8b3,0xbab981a6,0xba9e880a,0xba46e1df,0xba84547c,0xba8e35af,0xbaa04f5b,0xba8077ce,0xba8b9f6a,0xbac2a0c9,0xbad81d28,0xbabe8ef3,0xba94b5dc, -0xb9883d28,0xb9f34fb6,0xbad5fc45,0xba81deb2,0xb9d465f0,0x3a07a8c0,0xb60c34f7,0xb9a72485,0xba88beab,0xb9d5f3ae,0xb93887aa,0xba095d24,0xba0f0bb4,0xba187040,0xba2ec0b6,0xba3ac201,0xb992ef23,0x398f154a,0xb84ad0e3,0x38d288b0,0x38afb139,0x391cc108,0xb92c5254,0x388e6bf6,0xba4246de, -0xbaa25115,0xb9eb71e3,0xba5eb955,0xba6ea5c7,0xbaccc8d7,0xba9d2c3b,0xbae65101,0xbb1da4c2,0xbb484d28,0xbb2fc2b3,0xbac70990,0xb8e117f0,0x38a3cdfa,0xbaf8bcd2,0xba50b43e,0xb994549b,0x3abd9398,0x3988b604,0xb8df657d,0xba814158,0xb80090c1,0x3a3a4430,0x3911e831,0xb944fb45,0xba3252f9, -0xba2f990a,0xb8327929,0x388c98ca,0xb8868bc5,0xb7cfdda7,0xb6d4d955,0xb88005d8,0xb7c7b068,0x389b0d48,0x37855886,0x39b8f9fa,0xb95e5453,0xba01615b,0xbaace1aa,0xbac3a4be,0xbb05043e,0xbab0a14e,0xbad99bc7,0xbb2a09a3,0xbb83c73a,0xbb67e847,0xbab0b076,0x3a3c2d35,0x397477f6,0xbb6e4546, -0xba744734,0x39984cab,0x3b660605,0x3ab4ba45,0x3a30af7c,0xbac84a86,0x39859ec9,0x392812ab,0xba502577,0xb9d5bd6f,0xb97909e3,0xb883d51c,0x38c7daa1,0xb8460bb3,0x381248cc,0x3703237c,0x37581ec6,0x37fb9c7c,0xb6a1fa72,0xb677f3fa,0xb8a47014,0xb89f0d7e,0x3839d7b3,0x390d6fe3,0xb9fb419c, -0xba9dbca3,0xbb1059e9,0xbae21ca6,0xbb389891,0xbb90641b,0xbbc1962c,0xbba493f5,0xbb3478e7,0x39f18002,0x3a6e8e55,0xbb3f8a82,0xba984d44,0x39e55d89,0x3b5d3151,0x3a99177e,0xb9894fdc,0xba9d5bab,0x399da38d,0x3b448e35,0x3b52e3c7,0x3adefcc3,0x39b0b96b,0xb80833e4,0xb79239ba,0xb7113d11, -0xb6153746,0xb7657272,0xb6282ec2,0xb754250c,0x35011b4f,0x36a18c74,0x37f31bcb,0x383f4285,0xb8766d60,0x38079fc3,0x39e5cbad,0xba546ad1,0xbacf5cf4,0xba8e55ef,0x3a5a1967,0x3b85b24b,0x3c228333,0x3c1a61a4,0x3c02beb6,0x3b8541c6,0x3ae9563a,0x3abf5719,0x3b09477e,0x3b26272a,0x3b42d038, -0x3b84b2b4,0x3bb2f7d5,0x3bf959e7,0x3b8b2fc6,0x3aeee161,0xba1bd1a5,0x3a338a87,0x3a239fdc,0xb96b7992,0x38a4f582,0xb7ab89f8,0x37da57df,0xb625315d,0x371237c4,0x3648f1da,0x36391d49,0xb68b0284,0xb71e6a82,0xb805285b,0x385571f7,0xb8f89ab0,0x3888df42,0x39aa6e40,0xba35cae5,0xba39f233, -0xbae242a5,0xbb2eb770,0xbbab3206,0xbbb0a507,0xbb9be4d5,0xb99e0a5f,0x3b369453,0x3ba55f97,0x3ad2295e,0xba5398ef,0xbb5c83be,0xbb802085,0xbb028d58,0x3b51bf9b,0x3b298410,0x3b879eaf,0x3c0a72d2,0x3b9b040b,0x3919fcf7,0xb89e4215,0x3805d827,0xb81e3a21,0x370f29d9,0xb75311d5,0x360a2c4f, -0xb6c15cbc,0xb5825aaf,0xb5b2b3de,0x364b5914,0x3740f485,0xb7543f3d,0x38498511,0xb8359f7c,0x39bbfe48,0x3a2f0708,0x3a85ba9b,0x3adbf239,0x3ad3822f,0x3b31468d,0x3b47fdd4,0x3b0714d7,0xba0b2096,0xba8cc2a4,0xbb3f262c,0x3b02f9e5,0x3b81e17b,0x3b22fe70,0x3b5d3d18,0x3b215bda,0xbb7e9575, -0x3af4bf1d,0xb8ad9338,0xbb87080e,0x3a5d467a,0x395ff81a,0xb962a072,0x39063e3a,0xb7d0e4eb,0x37fc253b,0xb62f897d,0x36f85814,0x36464b07,0x350c4ec5,0x37411d92,0xb728d312,0x37d11dea,0xb85cd145,0x386ececa,0xb8eb0fc1,0xba531c7b,0xb978b21a,0x37bc1cd9,0x3a74d9de,0x3a199855,0x3b5a67e5, -0x3b6b4237,0x3b67afdc,0xbaadc624,0xbadc73cf,0xbafe9a91,0x3b4aba44,0x3ba31804,0x39d1a147,0x3b34479c,0x3a9533ef,0xbb97e74d,0xba08bea3,0xbb9affa9,0xbc9ac1aa,0xbbb8fd3a,0x39a8afaf,0x38b1fe6e,0xb86317b5,0x3708fdb6,0xb83c573d,0xb629cce5,0xb73b7c8f,0xb6501bd4,0xb6c5976d,0xb74a5db1, -0xb796811f,0x37013634,0xb77c82eb,0x390ab0c4,0xb9b68c6b,0xba90b307,0xbb00a360,0xbaef68fd,0xbb2679b3,0xbb38228c,0xbb80281e,0xbb921831,0xbb5eecb2,0xbb030537,0x3aa8b73d,0x3bdee7b2,0x3b847148,0xba09936c,0xbc0ba882,0xbb893a01,0xbac71751,0x3a3af35f,0x3928ba26,0xba46e44f,0xbb2d9248, -0xbb19c281,0xbaae0af3,0x3a196ee0,0xb9b2a6bb,0x3928bebd,0xb719082f,0x3850d9c9,0x368accef,0x377d180e,0x36e3cf63,0x37f552dc,0x37f04830,0x34ddbf14,0x36e45198,0xb9622d99,0x39f2e9ce,0x3af7f1fe,0x3b4390d7,0x3b3803fc,0x3b3f3e3d,0x3b11599a,0x3aa4bb8b,0x39fa103e,0xb9610a93,0xbaa064b0, -0xbb29daa1,0xbb6a5b71,0xbb479689,0xba94e19f,0x3a20dd68,0xba2dfef1,0xbb016a37,0xbb6805c4,0xbac0a950,0x3b246e45,0x3ad3b5bd,0x3ad2d4aa,0x3ac104e3,0x39ee6400,0xb8e6a2c0,0x37dda0ae,0xb90e548a,0xb746fa95,0xb877d989,0xb6c33328,0xb7d8f5e1,0xb83d719b,0xb83feb0e,0xb846056b,0x38a1c0d3, -0x373a1918,0x3a88e212,0x3acc8a0e,0x3ac15c2f,0x3a6af98e,0x38ce5905,0xb95aef7a,0xba9f792e,0xbae2a5e9,0xbb3bb712,0xbb19674e,0xbb10cfd8,0xbaec2dbb,0xbb0e4e9a,0xbb0cd772,0xbaa212a1,0xba35f84d,0x3a222395,0x3afa7d7e,0x3b1ecc3d,0x3ab43cd0,0x3ac97862,0x3a96994e,0x39909e1e,0xb8e2dc99, -0xb5e60b7f,0x38ebde6b,0x392ee124,0x38be626e,0x38955e1e,0x37ec9b27,0x380aec62,0x38d7b694,0x38dd38c9,0x385008f7,0xb795ff04,0xb8d2198b,0x395af82b,0x3a15d7b6,0x3a7444d9,0x39fc3231,0x38fe9272,0xb9e15b92,0xb9b9a72c,0xba560649,0xbac54ecc,0xbac9243a,0xbaffa79f,0xbb1e55a5,0xbb0710fc, -0xbaa3a080,0xba49b9c4,0x379a41e9,0x39839f35,0x398996ae,0x3a319e77,0xbad385fb,0xbaf7f64b,0xbb016db7,0xbab25e05,0xba9d8b54,0xba87da6b,0xba27f648,0xb92e1aab,0xb97ef934,0xb8825928,0xb89a2062,0xb81727cf,0xb9623cc2,0xb99e84b7,0xb9b5992d,0xb9e45108,0xb95513e0,0xb898deff,0xb8303daf, -0x3a0322e2,0x3920abce,0x3993b006,0x388393a1,0xb946f259,0xb9902738,0xb906e331,0xb947bf57,0xb7382a17,0x39369316,0xb68a0dcf,0xb9b30b16,0xba2dfc3e,0xba85e060,0xba9c5c8a,0xba8d66b3,0xbaaa06c1,0xba0df016,0xba238e6c,0xba56495e,0xba5f7048,0xba453d5f,0xba80d048,0xba7a8eaa,0xba85e9a8, -0xba5abe6e,0xba2bde63,0xba02be40,0xb9b3483b,0xb920acbb,0x38b56712,0x39b49c6f,0x3a352fe1,0x3a970fbc,0x3ab5d595,0x3b0c5546,0x3b0359ec,0x3afe8918,0x3ae7a5f1,0x3ae50bf4,0x3ae6f764,0x3ad210f0,0x3ab53c36,0x3a8d55cf,0x3a2bc36a,0x398184e1,0x390ec2f4,0x386cc457,0x38c30318,0x37e1e611, -0x38711644,0xb9915c0f,0xba0efdc1,0xb897335a,0xb963c483,0xb8c87528,0x38d65e3d,0x39a28098,0x38b6dccc,0x398a0b36,0x39d24923,0x39fab525,0x3a064905,0x3a189c93,0x3a2bea0e,0x3a423137,0x3a4d953a,0x3a1a5148,0x39f4351b,0x3a63d323,0x3a2bcfa1,0x3a070323,0x39ff53eb,0x3a03f5e6,0x3a07b80d, -0x39ff9277,0x39ee0c5a,0x39fd7895,0x3a0db7e7,0x3a11c769,0x3a16bed4,0x3a27c914,0x3a1badb8,0x39e25535,0x39a0cf7b,0x3928ef10,0x3909c513,0x3870ce0b,0xb7056033,0x3a8307f3,0xba8b065e,0xba1d982a,0xba348471,0xba2e12da,0xba2630cb,0xba2ac9ca,0xba2b8178,0xba18447d,0xb9a56ee7,0xb9fbc8a1, -0xba0ed672,0xba0c73f4,0xba39ce28,0xba45bd76,0xba0df546,0xba30094d,0xba3d0b33,0xba20450a,0xba269318,0xba286abd,0xba3b4dc8,0xba4c6171,0xba5e9138,0xba7a0be0,0xba84e601,0xba793a06,0xba49b495,0xba1f5804,0xba157a07,0xba51684b,0xba316b2c,0xba19cf5d,0xb9c770d8,0xba0eeef2,0xba174a11, -0xba302b0e,0xba129005,0xb9b536b8,0xba191c5b,0xba25276b,0xba4472ba,0xba3dc120,0xba557b69,0xba1e565a,0x38f6d1c1,0xb96094d7,0xb9c7e220,0xb9ea0928,0xba5a9e39,0xba7695f8,0xba2c3f04,0xbaa1bf36,0xba8d994d,0xba3f5bb3,0xba61d9b8,0xba804510,0xba9490bd,0xba818430,0xba91e291,0xbac8e7b9, -0xbac4dce4,0xbaa95271,0xba8dbb51,0xb9bae525,0xba1eb4a2,0xbae40702,0xba87d6d3,0xb9f62d50,0x39cea143,0xb980c092,0xba101bb7,0xba8adbc6,0xba02fbef,0xb9b4cc3d,0xba46bcb3,0xba0dedb4,0xba0905b0,0xba1672b6,0xba01b6a0,0xb8dc5dc8,0x38e8a6dd,0xb7698d51,0x38d3dcd6,0x38ec856b,0x3922da92, -0x390afd54,0x3958a5da,0xb94a3219,0xba3961e8,0xba0ce017,0xba249979,0xba3b87e1,0xbab4fa03,0xbaa233af,0xbaed0e03,0xbb223081,0xbb3015cc,0xbb13ece4,0xbab189af,0xb93861e6,0xb915244d,0xbb0e1618,0xba6f7d1b,0xb9cfcc79,0x3aa3a178,0xb80ad4fa,0xb9a5bcc5,0xba6e5f9b,0xb9585b67,0x39ce28c5, -0xb99c3786,0xb9563b79,0xba1819e6,0xb9b7838f,0x38b92700,0x384ff140,0xb822cfdb,0xb7082de5,0xb7a7084e,0xb83d9bdd,0xb810ca02,0xb86471b0,0xb882e86e,0x39378d96,0x392c5f69,0xb94786d9,0xba88ca8d,0xba9e9c52,0xbae9a7c3,0xbab32947,0xbae945cf,0xbb390850,0xbb60d10f,0xbb3eafc9,0xbaa80c3a, -0x39c4accc,0xb982c0e2,0xbb813ad7,0xba92224f,0xb719b0b1,0x3b47b0c5,0x3a2446e0,0x37898698,0xbac79b5e,0xb856cfcf,0xb955e972,0xba9b8cee,0xb9df2ae7,0xb90d1cec,0x38a98176,0x37598d3c,0xb7f16535,0x379f6582,0x35ff6400,0x37584352,0x37c2ee41,0x37760090,0x37b7a704,0x37a7b93a,0xb8847b7a, -0xb8946bec,0x39458780,0xb8f44fa1,0xba716faf,0xbafdf11f,0xbaed8d82,0xbb451b74,0xbb948047,0xbba80772,0xbb86af78,0xbb168757,0x39dd02c5,0x39c1dc86,0xbb63422a,0xbabe5002,0x39260bb9,0x3b406dd0,0x3a1d16a4,0xba096aab,0xba83dd7e,0x3883d2eb,0x3ad3c388,0x3b2f6818,0x3a93031a,0x38c932b7, -0xb8ba18f5,0x37c08471,0xb6c1330b,0x35d45e04,0xb6f0be99,0xb6730ca3,0xb724a062,0xb6d8b825,0xb73fbbe7,0xb68020ee,0x37aabc1f,0x387d91f8,0xb917a5de,0x39834f8b,0xb9644b24,0xba79bce2,0xb8db5d42,0x3acf4829,0x3b880a23,0x3c0f5396,0x3bfcf76c,0x3bb35220,0x3b17dfb8,0x3a8fd3a5,0x3abac186, -0x3b209296,0x3b2a7d64,0x3add54a0,0x3b5dd87d,0x3b8e89e1,0x3bbe6983,0x3b1a5500,0x3ae1b591,0xba8baf66,0x39d4717e,0x3906ae69,0xb8311397,0x380e7f93,0xb7532bcb,0x36da2e42,0x3468b101,0x368c9677,0x366204ca,0x368c8412,0x36b9fd1d,0x369f78a4,0xb7bca377,0x37227cb6,0x36b9b0f2,0xb82c06ea, -0x39974c76,0xb9f392eb,0xba8d9dfa,0xbb17421f,0xbb56557d,0xbbaef3af,0xbb9c47f9,0xbb4cfb69,0x3a5a5ebb,0x3b474e3f,0x3b782899,0x3aa8ace8,0xba24aefb,0xbb3bd489,0xbb1d4073,0xb9cb18f2,0x3b7dda45,0x3b413007,0x3b676e92,0x3be6dcd9,0x3b74d48f,0xb9e96ded,0x39232a6c,0xb877bd74,0x378845f2, -0xb705763b,0x35e85144,0xb58c240e,0xb5985909,0xb6625bcb,0xb5b43cf8,0xb69c39b3,0x375a6c34,0xb799e8ca,0x38376c97,0xb88f01d9,0x3966f145,0x3a2abc99,0x3a83216d,0x3ae594f5,0x3af4d15a,0x3b3461ae,0x3b3d182c,0x3ab42a8f,0xba3371dd,0xba767133,0xbb07588e,0x3b0afedf,0x3b6530ac,0x3b035aeb, -0x3b10149d,0x3a9a4cee,0xbb6681e0,0x3ac9a5b8,0xb9ba5877,0xbb53e60a,0x39299d4d,0x382c6497,0xb913fe67,0x38cba888,0xb7c7572c,0x3771acc0,0xb6daffc8,0x35a541cc,0xb57403e9,0x351c4543,0x362c6f6c,0xb5bfe430,0x369ca303,0xb65ca6fe,0xb7962a9f,0x3884cd5e,0xba4ed075,0xb9f80cb7,0x39301a0a, -0x3aa6ceaa,0x3a95b780,0x3b6df8b6,0x3b617939,0x3b0cfad7,0xbac85635,0xbacb4a07,0xba49d9a5,0x3b162aa1,0x3b65be28,0x39b69e69,0x3b0096ab,0x39fbfdc5,0xbb6f8372,0xba20b13c,0xbb7d04dc,0xbc679570,0xbb8ed505,0x3a33284c,0x36ea3fc1,0xb88d41c8,0x37766527,0xb7a9ecf2,0x37609871,0xb6230a7e, -0x367e8179,0xb5e8228e,0x3550f64f,0xb6c54325,0x34ede0af,0xb7af95af,0x38933c7b,0xb7c9428b,0xba7e5769,0xbaf8d8d9,0xbae32209,0xbb23900c,0xbb357f20,0xbb6a343c,0xbb789b1a,0xbb300ca3,0xba81a513,0x3add6e23,0x3bdcf9dd,0x3b077d25,0xbb018070,0xbbe76960,0xbb334fff,0x38ccb6ae,0x3afcc63b, -0x370a1cc5,0x3908656e,0xbbbb7549,0xbb755ebb,0xbabf5295,0x3a060ad5,0xb93fbe63,0x38cc4e6d,0xb7fac645,0x3650a93c,0xb707df11,0xb6122ddc,0xb63e9430,0xb5622032,0x373e102e,0x351c000b,0x383026b9,0xb9135fd4,0x37b9ccfa,0x3ac0c7e1,0x3b22d7a9,0x3b16a0df,0x3b1fcc9e,0x3ae09189,0x3a739136, -0x39441ca4,0xba2c907d,0xbab7561f,0xbb1ed1f8,0xbb423237,0xbb176035,0xba24c68b,0x3a5aeb69,0x399c247c,0xb9bdf3ae,0xbab2f629,0x3a6508b8,0x3af6d40d,0x3aa07de0,0x3aca79bc,0x3a8b6b39,0xb8a556b2,0xb7b28be4,0xb7f85670,0xb7834519,0x37cb84dc,0x36b3e67f,0x372a380d,0x372f508e,0xb72127da, -0x3753c4a8,0xb8bfd669,0x38b12541,0xb911b9c5,0x3a4ab91b,0x3aca4501,0x3ad3225b,0x3a88f0e8,0x39baeaea,0x3919cfbd,0xba4508bd,0xba9a6421,0xbb1077f0,0xbaf83ec2,0xbaf2e8b4,0xbac2f359,0xbaf4135e,0xbaf3200d,0xba82a409,0xba225611,0x3a087893,0x3ac02d8e,0x3ae3919d,0x3a9ee32f,0x3ad438c8, -0x3a95aec5,0x3a102e09,0xb6502725,0x3840b4b4,0x38f8c96f,0xb6b85731,0xb82d3931,0xb7a6a8b6,0xb7c3b3ac,0xb7a154a6,0x36097f27,0x36c0fa3e,0x38bbc383,0x38910709,0xb8fcb085,0x38b373a3,0x39b40e36,0x3a3e3135,0x39b3f7ff,0x388c0d09,0xb9fc9c0a,0xb9bf3d39,0xba640f45,0xbad0a3ba,0xbad15715, -0xbafde77a,0xbb11c01e,0xbae63e58,0xba7ce435,0xb9fe36c8,0xb7a865f7,0x38aca682,0x393f868e,0x3a26131b,0xba80dcba,0xba9cf560,0xbaabbf9d,0xba6055c4,0xba2c65be,0xba065a96,0xb93ff580,0x38c253d4,0x38c9d1c0,0x38f533b9,0x388a0b3e,0x38ee18ac,0x37c0221e,0xb53cd317,0xb923dcd3,0xb9b2ad59, -0xb9a364d8,0xb99fd918,0xb9be0298,0x37d2508d,0xb99cc921,0xb90bc3ac,0xb9ab73a8,0xba25afaf,0xba41ba08,0xba2211a4,0xba042ce9,0xb98a1df8,0xb888975b,0xb9396931,0xb9e00f3e,0xba208bef,0xba4f8d52,0xba52c216,0xba3d7e7b,0xba53ea91,0xba159cf8,0xba0f4981,0xba549851,0xba51cac6,0xba4adc74, -0xba85ebc3,0xba734039,0xba741afc,0xba49bdb0,0xba35d866,0xba19b102,0xba03ab21,0xb9cfa8b6,0xb990ebef,0xb91cad62,0x392b359b,0x3a207c03,0x3a6168cb,0x3ad73633,0x3ac0f09e,0x3aba5cb1,0x3a99d47d,0x3a9688c4,0x3a965819,0x3a83c33f,0x3a5330a6,0x39f1ccc3,0x3911f0b3,0xb92776cd,0xb95381a8, -0xb93aaa28,0xb91071e4,0xb9585987,0xb957430d,0xb9de87fb,0xba1ded56,0xb984abe0,0xb9bb1d61,0xb99d05d1,0xb929cfeb,0x36f93eab,0xb907ebb9,0xb828271a,0xb7c6fb04,0x37244c6e,0x388ac2dd,0x3908f248,0x39488585,0x3989063f,0x39aad06e,0x3980dfbc,0x3913e916,0x39ee5a4c,0x3979d9e8,0x38b34d67, -0x38462693,0x388914fd,0x3894f605,0x381aeeec,0xb72a06ac,0x374f6d90,0x38a0b17d,0x38f010cd,0x3934cff1,0x396eda92,0x3942e011,0x386bb06f,0xb82430aa,0xb8f2abb1,0xb8edab5b,0xb9236077,0xb952553d,0x39ad7e0f,0xba6ef4c7,0xba09ddd1,0xba1bfe02,0xba1686a9,0xba1bfd64,0xba2548b1,0xba0b4a24, -0xba04fb51,0xb996d165,0xb9f05c73,0xba10eaec,0xba13b33c,0xba4324f0,0xba537f06,0xba21562d,0xba21680f,0xba1417f8,0xba20a6df,0xba17f62c,0xba0cf066,0xba16b6b6,0xba2fc3d6,0xba410cab,0xba5a1aa2,0xba586902,0xba487f2f,0xba276d60,0xba060ef7,0xba01e294,0xba3a2e9a,0xba19eb2b,0xba01a654, -0xb99d74c7,0xb9f21ec4,0xb9fdbc39,0xba0f6eaf,0xb9fb2e11,0xb9bfdd51,0xba1fc952,0xba329612,0xba2ba49c,0xba241f78,0xba4a0241,0xba0576fe,0x38d04943,0xb9243d54,0xb95002d0,0xb94bab64,0xb9958eeb,0xb9cc3f7f,0xb9ce39e5,0xba64bcc4,0xba75e1c5,0xba3b7a67,0xba29aa76,0xba518585,0xba6b477f, -0xba61c627,0xba8346f0,0xbab1b2e2,0xba9cb1f3,0xba82b38b,0xba69ffae,0xb9bce33a,0xba1e5d23,0xbacbdf09,0xba6ad518,0xb9ce8794,0x39ba6b85,0xb99a2719,0xba134845,0xba6b168d,0xb9fa8d29,0xb9c75d42,0xba59c807,0xba0aba80,0xb9d403f7,0xba02594a,0xb920b891,0x38da0640,0x38512f5e,0x375f3a8f, -0x38b185ba,0x3863aef2,0x38b27f06,0x38ea3eaa,0x391ac6b2,0x3932f057,0xb8b86c0b,0xb9f08373,0xb9e95ba3,0xb9f44a58,0xba8c36dc,0xba923f5e,0xbad710d7,0xbb10f1a0,0xbb09209c,0xbadbd0ac,0xba8e1540,0xb944c305,0xb982fda5,0xbb0487ef,0xba57ee68,0xb9b2f3c4,0x3a90129c,0xb8d17439,0xb99f8e36, -0xba315c66,0xb983d223,0x392cb6ee,0xba2926ee,0xb9b1374c,0xba054325,0x37251b35,0x390b87f2,0xb7d4a8fa,0xb8182ab1,0xb6fcb154,0xb8150a5a,0xb81433f0,0xb8335583,0xb86e45f3,0xb8623fd1,0xb89f71ab,0x38d147e9,0x38f99245,0xba227986,0xba607b1e,0xbaaf417c,0xbaa027c2,0xbad84d50,0xbb2a839c, -0xbb27fdd2,0xbb070866,0xba89700e,0x3918dc4a,0xba035950,0xbb68e801,0xba806427,0xb8489bbf,0x3b2aa75d,0x39883147,0xb97580e1,0xba9f3e26,0xb94ff060,0xb9b064b8,0xbaa94b80,0xb9de61e9,0x388cb415,0x3895cd7b,0xb88fad46,0x374d3777,0x378286d5,0x361936a8,0x37bbb41f,0x3793a6b2,0x37bd5ef0, -0x37a36754,0x3818e384,0x37f89b95,0xb8984c26,0x3828c5c7,0x3889cafa,0xba0f3002,0xbac664f4,0xbae01582,0xbb3af836,0xbb85d66b,0xbb829964,0xbb438832,0xbae6e8ce,0x39aebf55,0x36b78020,0xbb584a6c,0xbab1fbe1,0x38da3e47,0x3b24d373,0x39c9b903,0xb9e7066e,0xba2129df,0xb737f37f,0x3a631d41, -0x3b1476d4,0x3a318e58,0xb626277f,0xb852bc3e,0x37e7fcf4,0xb70e34f1,0xb68f4f70,0xb66602b8,0xb729e316,0xb6b3047c,0xb7441a74,0xb701315c,0xb78e70c3,0xb74e70f0,0x38276894,0xb84954ff,0x3899b484,0x3906c837,0xb96765a1,0x3a592f56,0x3b12f12b,0x3b892e1b,0x3bf0a0a4,0x3bc569b7,0x3b70df0a, -0x3a9fda58,0x3a48fb36,0x3ab12ff5,0x3b30594f,0x3b2a6ea8,0x3a16fc22,0x3b2d133a,0x3b550cda,0x3b88e1cf,0x3aa58839,0x3aac6343,0xba66feac,0x3890b8ac,0xb81a1897,0x381899d9,0xb805795d,0x37aed976,0xb781a5d1,0x371fc150,0x35c311a5,0x369a9e89,0x3680f6b3,0x36d260fc,0x36ddb3bd,0x37052e28, -0xb795fcda,0x37bed40e,0xb8755227,0x39042fb7,0xb9cb4b5f,0xbab42ab6,0xbb2a0d8d,0xbb649e7a,0xbba160b5,0xbb7e7766,0xbaf2ff23,0x3abbcc56,0x3b3cb543,0x3b2a97f4,0x3a5a535e,0xba12d6f6,0xbb140dee,0xbaa301c3,0x3a21c845,0x3b732917,0x3b310dd1,0x3b271bef,0x3bb265ee,0x3b1c95a0,0xba414533, -0x399b4efe,0xb8fce880,0x3872b4cc,0xb7c70c62,0x373a9e69,0xb6c93db5,0x360bce94,0xb6858f9b,0xb441643f,0xb69ad1a5,0x357beda4,0xb58dd92d,0x371e716e,0xb7ae6acb,0x390d44fb,0x3a10df8a,0x3a642a23,0x3acf2a18,0x3aed1b1f,0x3b1a6714,0x3b17e494,0x3a38c708,0xba63357e,0xba6ef83f,0xbaab5c3e, -0x3af3c25a,0x3b326766,0x3ab9a1aa,0x3a833a84,0x386e03a2,0xbb432935,0x3a933fe4,0xba09b7c5,0xbb296c5b,0xb981e3fa,0xb80b6e16,0xb8c7cb15,0x389d85c6,0xb7e79453,0x37096154,0xb6f712d6,0x356e3708,0xb66c4cef,0x35e160aa,0xb677c646,0x36c66368,0xb72cd9f7,0x37d728ae,0xb86d5694,0x38ee67d4, -0xba1174de,0xba0ad398,0x39a92555,0x3ab838f0,0x3abe4974,0x3b5e734b,0x3b3fc2cd,0x3a8dcb4b,0xbab55f2a,0xba98f2fd,0x3906b891,0x3acec7dd,0x3b12aa6d,0x39dcee61,0x3a8f54ac,0xb8a60012,0xbb12d300,0xba1cb2ee,0xbb3da16e,0xbc1b4599,0xbb307d29,0x3a90d9c7,0xb99ac438,0x38d20ad4,0xb814e2e6, -0x37e61b7f,0xb5041aba,0x36ecec8a,0x366d935f,0x3630ae73,0x36857f94,0x365522d3,0xb605d597,0xb4e8f848,0xb7c7b8e4,0x38fcc393,0xba22717b,0xbad3e355,0xbabd88b1,0xbb0fad3a,0xbb21c65d,0xbb3f446f,0xbb3bdfd9,0xbafa8c47,0x38b8cd97,0x3b05950d,0x3bc3930d,0x3a08c681,0xbb304dfe,0xbba60026, -0xbad4c722,0x3a831a7f,0x3b46cdfa,0xb94b49a8,0x3ac2de0e,0xbbd96fb0,0xbb765bae,0xb9d0fe0f,0x3945ae5e,0xb84d9725,0x37b319a5,0xb7d12678,0xb76bdc50,0xb723f25e,0xb71dde4c,0xb701d84d,0xb721fb7f,0xb6557470,0xb61612de,0x373a06c6,0x37b14912,0xb945f940,0x3a805139,0x3b02931e,0x3ae47a75, -0x3af605df,0x3a9c0f9e,0x3a2a04e2,0x372ad8da,0xba61ebb3,0xbab8898e,0xbb0b314e,0xbb17b900,0xbad974f5,0xb976f53f,0x3a8be08b,0x3aa68c84,0x3aa5f2f5,0x3a84c4be,0x3b419644,0x3a9d6cfa,0x3a6b9da3,0x3ab6fc17,0x39e1112d,0xb912a925,0xb6e3f739,0xb6c90121,0x382e87b3,0x37b600de,0x38056d29, -0x3770f79e,0x37cd3233,0x36f70405,0x37bbbefb,0xb7dfa402,0x3808929a,0xb9143759,0x39b933b0,0x3ab151a8,0x3ac9365e,0x3a8831c0,0x3a06034f,0x39cfc1b1,0xb9ad7a65,0xba2b9a51,0xbac2e528,0xbab1b7c4,0xbab43fc7,0xba8fa22a,0xbabcd19f,0xbabf5c72,0xba5050aa,0xba2aa9c8,0x393d5dbf,0x3a5b0150, -0x3a728dc8,0x3a83e6f7,0x3ac6c932,0x3a8cf0ff,0x3a0b8bcd,0xb85e62c6,0x3904a4f1,0xb83cf9f0,0xb867f484,0xb89152a0,0xb82cc199,0xb832850d,0xb8075f12,0xb81a5175,0xb791f285,0xb7a73f49,0x38adfcf5,0x37931990,0x3570a30e,0x39170d82,0x39f11106,0x396818de,0x378723ad,0xb9eff4e4,0xb9a0ec0b, -0xba4ac1b7,0xbaba381d,0xbabe0648,0xbae2aeb3,0xbaf877bc,0xbab5b99b,0xba365ee8,0xb98a5186,0xb8a799d2,0xb8a9ff9d,0x38c8c95d,0x3a0a45a6,0xb9de9ce2,0xba183934,0xba46bef4,0xb9cf9cd4,0xb96f7e28,0xb8f444fd,0x38ea01fd,0x391b6dd2,0x3921f845,0x38b9957d,0x38a4b559,0x38a952b6,0x388f2188, -0x38b80db9,0x380dc7ed,0xb8b21dac,0xb99b9ec8,0xb9dad634,0xba1ab67e,0xb9beb5b8,0xba2356e2,0xb9ef37f7,0xba1f8dab,0xba6dae38,0xba82cdf6,0xba68b4c0,0xba3349fa,0xb9e38cf1,0xb98acf0f,0xb9a1dc96,0xb9f0dc0b,0xba07576d,0xba0a4c54,0xb9d60d63,0xb9bc8353,0xb9bb5589,0xba1a82fa,0xb9fd97ce, -0xba3a6ff1,0xba37fbb8,0xba363ca4,0xba66910b,0xba30e4c0,0xba1c2a5d,0xb9cf4f7d,0xb9e85682,0xb9c47f10,0xb9ac4bb7,0xb98a723e,0xb985d4fd,0xb9b50976,0xb9554d2a,0x38f9cd1b,0x39c4a51d,0x3a8af1b2,0x3a6d6e01,0x3a632954,0x3a1cf008,0x3a1732ea,0x3a13fbe0,0x39e9f48b,0x399189fe,0xb8385ef3, -0xb98794dc,0xb9e50b0f,0xb9dfe2bc,0xb9b1daa2,0xb9a155a4,0xb9ca1138,0xb9e36409,0xba0f2380,0xba26d31e,0xb9afe75e,0xb9d9af8d,0xb9d0872b,0xb9a1b393,0xb94b44fd,0xb98d43f8,0xb990861c,0xb9ba1c1b,0xb9c665f2,0xb9a08be8,0xb986c31d,0xb96bcff2,0xb94445c0,0xb8d8b6df,0xb84f3f00,0xb8a7e5a2, -0x390d804b,0xb8592ab8,0xb94c08df,0xb984ba15,0xb976eccb,0xb976f647,0xb98cfdd2,0xb9a6a0b9,0xb99ce71a,0xb976919a,0xb9421bda,0xb8e6170a,0xb89048f1,0xb8d8e01b,0xb94db876,0xb986536d,0xb98e5a97,0xb98198ed,0xb98908d0,0xb9986c4b,0xb911ed59,0xba470da9,0xb9e9539b,0xba03f457,0xb9f7a70a, -0xb9f95d08,0xb9fd3fca,0xb9e690cb,0xb9d7fc77,0xb9374854,0xb9a657e7,0xb9c9678f,0xb9cb5418,0xba075a79,0xba15d35d,0xba0035c5,0xba035440,0xb9f964f9,0xba036bfa,0xb9df43cd,0xb9ddc00a,0xb9f571e8,0xba13179e,0xba230e18,0xba37179a,0xba2bbde0,0xba1e82b6,0xba09fe9d,0xb9e525e9,0xb9e38408, -0xba1e7ec0,0xba049c17,0xb9df5728,0xb98a2794,0xb9cfe2c7,0xb9d38ea0,0xb9df7824,0xb9d23be2,0xb9b6be82,0xba1be860,0xba1bac50,0xb9fcd9a8,0xba147871,0xb9fa5cf4,0xb9759fe8,0x3879919d,0xb8a292ad,0xb8be1f4d,0xb8b63fe4,0xb8c4ee7c,0xb91dca56,0xb903f385,0xb9b95044,0xba093ea4,0xba2bcf77, -0xb9ecfbb0,0xba0bf26e,0xba34ca7b,0xba3ce728,0xba61da38,0xba947a60,0xba70551f,0xba456efd,0xba40b7b0,0xb9d24713,0xba206fb6,0xbaab96fe,0xba513fc3,0xb9d1bb2d,0x395993bf,0xb9b57142,0xba0c0fc7,0xba304d33,0xb9d8776a,0xb9b37d31,0xba4ce731,0xb9ce878a,0xb9aaf2ca,0xb92bac72,0x38ab3c2f, -0x3879ab5e,0xb70d6109,0x3758bd9e,0x382d67e1,0x3806f85c,0x3865561f,0x3879d737,0x386f612a,0x38480faa,0x393676da,0xb8d2306d,0xb9999b19,0xb9684b41,0xba48a7ac,0xba7e8b9d,0xbab77105,0xbaf21fda,0xbacac32c,0xba9d0899,0xba63b827,0xb98df7a3,0xb9c6d0b0,0xbae1ecef,0xba4c689d,0xb9c9d615, -0x3a4a1b3d,0xb94305c4,0xb9906265,0xb9cb71c7,0xb96e9c74,0x3800d9f4,0xba4a007b,0xb9bbc269,0xb941c83e,0x38ea14ea,0xb82a5c61,0xb76582ed,0xb57b94db,0xb68b0d4f,0xb795d7b7,0xb75d9da0,0xb7c5a489,0xb803f6d3,0xb7d9e328,0xb75ef7d7,0xb8b1f5d3,0x38f9ce66,0xb90883e8,0xba03d65d,0xba652e22, -0xba8875cc,0xbab9c25b,0xbb110c96,0xbaeb4a76,0xbab4457a,0xba651e8f,0xb91773b8,0xba3ee23b,0xbb40cd0f,0xba7c5892,0xb9863348,0x3af6267b,0xb88f5a83,0xb9bbbe6f,0xba425377,0xb94ed990,0xb9ac5c77,0xba9a71cf,0xb94d856e,0x388da52f,0xb8042328,0x363c7e94,0x3768d9ed,0xb611baa8,0x36237613, -0x37179e20,0x370c2a4a,0x3736a7e4,0x3758b232,0x3763ce16,0x3785b0ae,0x37bddd57,0xb80d4a50,0x3818dffc,0xb9162be2,0xba8d9a8d,0xbac7b1c7,0xbb23c8a6,0xbb5ec71d,0xbb3e31e2,0xbb055c6b,0xbaade91c,0x38d4b52e,0xb9b1622b,0xbb38403a,0xbaac166c,0xb9085808,0x3aed90f8,0x391eba94,0xb99d7d66, -0xb9197c98,0x37e1ff79,0x3906a452,0x3acbfac7,0x39beaf66,0xb90b7171,0x3839a82f,0xb7066dc4,0xb69db981,0x356f1176,0xb54c03b2,0xb6b39b48,0xb5e662b2,0xb6d20049,0xb6a5c956,0xb6e1426f,0xb6ed4d0d,0xb78ccb44,0x37fbc847,0xb88420af,0x39727ed8,0x39bf7aa1,0x3aade1b9,0x3b1db688,0x3b778157, -0x3bb581a5,0x3b883758,0x3b0f6637,0x39bda2d0,0x39e69f7a,0x3a8e2132,0x3b25313f,0x3b119db7,0xb9c8e08f,0x3add29a6,0x3b010bdc,0x3b243e51,0x397e7149,0x3a741fd8,0xba34357d,0xb8b7919f,0xb8764ca8,0x3876c0a8,0xb81b5d4d,0x37d6bda3,0xb7af52a8,0x37173161,0xb6115fc5,0x364fb047,0x354360d8, -0x36a98c87,0xb4b432bc,0x372cebee,0xb722b786,0x37bfbafe,0xb813e14a,0x37609139,0xb9f396a1,0xbacedc87,0xbb2d2437,0xbb5f4b1f,0xbb89b034,0xbb442524,0xba822716,0x3acbd45f,0x3b1eb62a,0x3ad0b13b,0x39fffba5,0xb9ed5861,0xbadca591,0xb99fbd90,0x3aa95828,0x3b565e60,0x3b15aa98,0x3addfee8, -0x3b7b4d09,0x3a80b266,0xba0395a4,0x39647645,0xb8b9db82,0x3835265a,0xb78a7c54,0x37177295,0xb69b5d92,0x362bae35,0xb62524a7,0x3506273b,0xb6103bb9,0x3584a47f,0xb6bcd3f0,0x37450a9b,0xb80ba94a,0x38d62f82,0x39bcb442,0x3a2c578f,0x3aa159d5,0x3ac91c59,0x3ade582f,0x3aca4bf6,0x390835e1, -0xba7a0c3b,0xba558460,0xba1fd38e,0x3ac6af7b,0x3aff7a28,0x3a687db0,0x390a58fa,0xba30e9f4,0xbb196457,0x3a463db2,0xba394897,0xbafd81aa,0xb975bf93,0x38badfae,0xb88fe208,0x383c9052,0xb7a6bdd1,0x3641eda9,0xb6aca5d0,0x348f72cf,0xb6733c72,0x35131d8d,0xb67a8d1b,0x365a64f4,0xb70ba8ce, -0x37783090,0xb7d43c5d,0x388d067f,0xb96d0a18,0xb9e85943,0x39e00c82,0x3aae34e2,0x3ac733a6,0x3b32bec6,0x3b0ca6a9,0x39956687,0xba9692e8,0xba585260,0x39efde3f,0x3a687390,0x3a970ed4,0x39ce31dc,0x39855d2c,0xba1bd1d2,0xbaa4ef00,0xba2f6aa4,0xbb14ec65,0xbbc00162,0xba76dc04,0x3a367019, -0xb99bab42,0x3929b8af,0xb85db974,0x382d568d,0xb7349516,0x371faf49,0x3603d6c8,0x366794d4,0x368e9696,0x36561901,0x33b03083,0x36eb501a,0xb816c469,0x3897baf8,0xb957f4fd,0xba9ffc19,0xba8dcc48,0xbae52bd1,0xbb03d530,0xbb0f25bc,0xbafdc4b2,0xba9a0b94,0x3a6c65de,0x3b08cabb,0x3b94b7b4, -0xba16a26b,0xbb3911cd,0xbb5540e0,0xba6c8ad8,0x3aa4753b,0x3b595af9,0xba0d3e8a,0x3b2636a8,0xbbbbcf12,0xbb0f7ac4,0x39e5a972,0xb941109d,0x389c40f6,0xb8424d8b,0x36a57b01,0xb7a2fb14,0xb6934323,0xb7317acc,0xb6f4128d,0xb70b5adc,0xb718fcbf,0x36937128,0xb7ef75c1,0x38e52b72,0xb95440a5, -0x3a03dd0b,0x3ac71c30,0x3a9b842c,0x3aa91bd6,0x3a28d5e2,0x39a7910d,0xb945361c,0xba769800,0xbab8f579,0xbaedce02,0xbadca611,0xba8b6cd3,0x38a271d0,0x3aa47acd,0x3b023aea,0x3b1cadd9,0x3b364372,0x3b80f88a,0x39e7558f,0x3a031cdf,0x3a86f55e,0xb9053ca0,0xb5bc8dec,0x37e84011,0x36f02526, -0x37e8a687,0x377f542a,0x37d61acd,0x3763e718,0x37a72e9e,0x373aa8cc,0x375b017d,0x37079699,0x37a4907f,0xb89ad250,0x3741fe7f,0x3a7fa5d2,0x3aad3c57,0x3a6d43fe,0x3a166a62,0x3a03ab73,0xb87e6216,0xb9a263ba,0xba6eaf4c,0xba6906cf,0xba6f6781,0xba38ec32,0xba86afc1,0xba93de86,0xba4fd2b0, -0xba4ce668,0xb97edf9b,0x39327139,0x38f43a79,0x3a3ceb0d,0x3ab0e0be,0x3a7ca3b8,0x39346ec4,0xb89bf1ac,0x36f4adae,0xb8690a6b,0xb7b6e8fb,0xb86feabf,0xb8013929,0xb81cc5a4,0xb7feb398,0xb802de2c,0xb7abab92,0xb7a75a2b,0xb7a891ba,0x389c5c22,0xb6c4c60a,0x37703d50,0x3981f437,0x391ce7fe, -0x36959d9e,0xb9c12529,0xb973521b,0xba23e07a,0xba95951b,0xba9dedfb,0xbabaf1e0,0xbac4eb2a,0xba8895eb,0xba0afbe6,0xb970669e,0xb9567221,0xb97d50e6,0xb6e11f20,0x39c7199d,0xb641f97f,0xb8f99a5a,0xb9b7ad82,0x37a0d8b6,0x37784111,0x38425b91,0x38c7cddb,0x38797042,0x38ec76ac,0x3884ab20, -0x38b011b8,0x388c9247,0x388bb218,0x385769a7,0x385a998f,0x383d50e0,0xb868f7a6,0xb9b77f4d,0xba21ba48,0xba16ea5b,0xba438576,0xba214ff6,0xba3b1250,0xba7ba0e6,0xba853597,0xba71ee37,0xba3fc892,0xba0fbf86,0xb9f7f864,0xb9f20f8e,0xba085681,0xb9fb6716,0xb9b38342,0xb8fc829c,0xb888df00, -0xb760b252,0xba1a0fac,0xb9d6c1c4,0xba1bddff,0xba1b0116,0xba0b913a,0xba079040,0xb96b83fd,0xb982f998,0xb934c60f,0xb9809c8a,0xb96504f8,0xb94b938f,0xb923409a,0xb90933c8,0xb931c0dc,0xb995c1dc,0xb9733315,0xb805895c,0x39fd998f,0x39bec48a,0x39b59b67,0x38c67310,0x389978a4,0x38499490, -0xb8431af2,0xb938edc5,0xb9df4b97,0xba0a90f2,0xba1a5dfa,0xba12d73f,0xb9ef70ef,0xb9f082d2,0xba0b530b,0xba21bc63,0xba289cc7,0xba2b95b4,0xb9b8a7fe,0xb9d9af15,0xb9dfbd75,0xb9bdc2a9,0xb9a5b305,0xb9c3d38c,0xb9df47e8,0xb9f66f79,0xb9ef7c8b,0xb9d10924,0xb9c1dc7f,0xb9bb180b,0xb9b4f572, -0xb9a7f16c,0xb992f42a,0xb97e0d23,0xb8b27701,0xb9656f2d,0xb9bc8703,0xb9ddf181,0xb9d7fb86,0xb9d954fc,0xb9e6881a,0xb9fb8997,0xb9f3215e,0xb9d64830,0xb9be782d,0xb99b8dc2,0xb9929f7f,0xb9a098a8,0xb9baae07,0xb9c88259,0xb9b6afbb,0xb9a229e9,0xb99c4c78,0xb9a403ee,0xb9ec51e3,0xba12d7a5, -0xb9a63322,0xb9b815ff,0xb9ad9632,0xb9bcaf6a,0xb9e41916,0xb9b42b44,0xb9ab1e0f,0xb92d23ee,0xb9846fa8,0xb995d0ed,0xb9972682,0xb9b84d7d,0xb9c3b80b,0xb9b3ea93,0xb9c51eba,0xb9bbe478,0xba02ba9f,0xb9a99c88,0xb998420a,0xb9a51703,0xb9cee023,0xb9e66b1f,0xba0074d8,0xb9e6486f,0xb9d4550c, -0xb9bf7809,0xb9a3515d,0xb9a4bd6e,0xb9dfe6e3,0xb9bdea5f,0xb99f67d3,0xb945b28b,0xb992d7f7,0xb992e41b,0xb994d6d2,0xb9945563,0xb99a32a7,0xb9f83e30,0xba029ebb,0xb9c2e5a4,0xb9d1df09,0xb8f3b2b7,0xb7e90ac5,0x3866b6a9,0xb475fa3b,0x38079837,0x37d5b981,0x37924cf5,0x371d4683,0x38587e00, -0xb883779c,0xb90cfc5e,0xb9cb002e,0xb9a28ab3,0xb9b20ee5,0xb9e832a0,0xba0496d0,0xba21a1e8,0xba503b29,0xba1c63d4,0xb9fc0ccb,0xba04b3db,0xb9b24800,0xba003fee,0xba6ed04d,0xba17c3bd,0xb9a06c6e,0x38e531c1,0xb997f361,0xb9d68c98,0xb9e87345,0xb9a5160a,0xb99634e6,0xba1dde75,0xb9a1e3b7, -0xb8ee7c88,0x38a4e8e0,0x38aa4aa0,0x37e8dded,0xb4249c36,0x36602854,0x36e5dfd5,0xb653da34,0x3774d610,0xb62f7479,0x374cc4a5,0x37da3398,0x38ba92e4,0x38c533ea,0xb8b9d4a3,0xb8f848de,0xb9ec97b6,0xba36ec7d,0xba824ef5,0xbaa83172,0xba7d989d,0xba3dcc41,0xba191ced,0xb983e85e,0xb9ba57c8, -0xba9e3af0,0xba19697b,0xb9a1ac63,0x39fb98d3,0xb92f6a75,0xb94ce8d4,0xb94f0e47,0xb94ad114,0xb8c724f0,0xba43d44f,0xb9953a25,0x37dc7962,0x37c27de9,0xb85ca5bd,0xb69a8333,0x3303c22d,0xb4c32c3b,0xb65abd2f,0xb5da6667,0xb6cef228,0x348e82af,0xb5caac44,0xb7adb9e0,0xb7e00cec,0xb78f47f9, -0x38737e76,0xb956fa88,0xba0280a7,0xba39f549,0xba83a35e,0xbacc8407,0xba8938b8,0xba438ee3,0xba1af54e,0xb9815949,0xba310c50,0xbb03554e,0xba3c6e40,0xb983221b,0x3a9d37d1,0xb938ca88,0xb9ae7a4a,0xb9d291e8,0xb962f8e8,0xb9ad08cc,0xba782395,0x38242346,0x388620d9,0xb7953e0b,0x37b9f94b, -0x35976f0d,0x361c5581,0xb4b2a719,0x365c4c80,0x35a98caf,0x365fbffc,0xb38cac96,0x369f6afa,0x36d1ae4c,0x37b0c41d,0xb6d7a312,0x37a7e439,0x3803af0a,0xba201954,0xba958caa,0xbaecb381,0xbb1a4a78,0xbae94f4d,0xba981a7b,0xba5c9acc,0xb7ee964d,0xb9d96baf,0xbb0111c4,0xba8201cc,0xb93cdd33, -0x3a9531e6,0x383d0f7e,0xb931c0f1,0x384c0a61,0xb828d26a,0xb8c9394b,0x3a74d11d,0xb76b8d42,0xb69a4563,0xb6864574,0xb6d4ffb8,0xb685b78f,0x35f55c0c,0xb5482f9c,0xb517cf77,0xb52c73fa,0xb598bc0b,0xb3d629a1,0xb5fbca8a,0xb6139a74,0xb76d010d,0x3727e1b1,0xb6dc7b38,0xb640cec0,0x3a36ed51, -0x3abb3f7a,0x3b0bc736,0x3b42fd19,0x3b6a8e5a,0x3b1f9a7d,0x3a90a100,0xb8881690,0x397820bc,0x3a4af377,0x3b050a7a,0x3ae58f08,0xba1e7125,0x3a8efb01,0x3a974ef1,0x3ab14812,0xb8d3bbd3,0x3a35067b,0xb9a35f8f,0xb8b09924,0x3897985c,0xb7bf791f,0x371ebc7a,0xb4c56c95,0xb3e039fb,0x3501c6b9, -0x35410dae,0x34f2f86f,0x3513ddff,0x34f73875,0x35161b54,0x366055b8,0x363fa35e,0x355ba0e4,0x36c671e8,0x37e06a6b,0xba0d4a56,0xbab5e5a7,0xbb0d351a,0xbb2b34ca,0xbb414708,0xbafab851,0xb9c709d5,0x3ab0012a,0x3ae91fc6,0x3a6cd6fd,0x396dcdcf,0xb9b67f1f,0xba93d4f3,0x3982f61f,0x3abaa02d, -0x3b21868a,0x3adc9738,0x3a83b0cf,0x3b1517f7,0x38ffa661,0xb8e36878,0x38354b97,0xb772d741,0x36e10f98,0xb5f668bc,0x3592055b,0xb50162ee,0x34973b86,0xb40882f1,0x343458e1,0xb4269283,0xb5454926,0x3482c3f1,0x34beacd6,0xb72aacdf,0x3810ae03,0x395f7bb4,0x39f54fe0,0x3a5e1674,0x3a94c48c, -0x3a8f647f,0x3a75d42f,0xb8475ae8,0xba3f9dbd,0xba12023e,0xb8b8431d,0x3a8cd392,0x3aa24cfd,0x3a0a11fc,0xb9a1889a,0xba70dbff,0xbac72b4f,0x39d219fe,0xba17f3b6,0xbab28ca4,0xb8aad5ef,0x3869f4f5,0xb739f279,0xb35a6ea9,0xb4ee8353,0xb58b3081,0x351d681b,0x33c9373b,0xb494ddbc,0x35342c6c, -0xb5895541,0x361ecc7d,0xb67205be,0x370a986f,0xb7740716,0x3820da5a,0xb846d24b,0xb95af750,0x39f63cdc,0x3a90dfd1,0x3aab806c,0x3af96711,0x3ab9efc7,0x3809701c,0xba341b61,0xb9d74f10,0x3a10377a,0x39eb19ce,0x3a08613c,0x39e8be21,0xb8f97cfe,0xba26f1e5,0xb9da205c,0xba00a1e0,0xbac5c365, -0xbb51257c,0x398fb472,0xb7e552d2,0xb7769ed1,0x38071367,0xb71d2625,0x3714e222,0xb66f07b7,0x3606a9dc,0xb402ae9d,0x35669e8b,0x344e9039,0x35a9b540,0xb5b81519,0x36d8e17c,0xb7690c7f,0x3734725d,0x3807b503,0xba3d248b,0xba2ccdf3,0xba9526d3,0xbaadc4df,0xbab17a0c,0xba88e444,0xb9feeb1e, -0x3aa75552,0x3af00425,0x3b409046,0xba756725,0xbb132af9,0xbaddf405,0xb981a306,0x3aa9eeeb,0x3b416984,0xba04eee1,0x3b3c1fa6,0xbb69e666,0xb9f08951,0x39917edb,0xb91bd038,0x38487e16,0xb7d10ee3,0x3716aacc,0xb68e83d4,0x35896079,0xb5b39484,0xb56c38c0,0x34fad5b8,0xb68b2eed,0x36ec4b57, -0xb7abd6b7,0x38369217,0xb841fa9a,0x37b1f10f,0x3a8cf56c,0x3a3b0388,0x3a50dd84,0x398b8530,0x38a85e18,0xb990dc22,0xba54944e,0xba983a0f,0xbaac265e,0xba89d75f,0xba0663a4,0x39b2c6ab,0x3ab8babb,0x3b1102be,0x3b315242,0x3b62beb7,0x3b749579,0xb8b94166,0x39a2515a,0x39b7ecba,0xb91f9b13, -0x389feb37,0xb7981a94,0x37b36731,0xb6957ced,0x369f5d02,0x3587aab5,0x36637026,0x352c2912,0x368ad691,0xb65d5379,0x378df646,0xb7baa30e,0x387eff8c,0xb91cece7,0x39eccb46,0x3a874d4c,0x3a2c1a2f,0x3a115034,0x3a000ec2,0x38dcbe43,0xb8a6c056,0xb9f05b0e,0xb9f77f74,0xba0301fd,0xb9ce0f05, -0xba2c812b,0xba4ad8fb,0xba2696d9,0xba3b097d,0xb9e4652a,0xb98044bd,0xb9ab0cc7,0x39dbf0ea,0x3a958ac2,0x3a09dd16,0xb9096416,0x38863c6f,0xb877c318,0x362dfad5,0xb702f7a3,0xb40f47e8,0xb697a4e9,0xb607b40a,0xb67c33d0,0xb5c01d9b,0xb69881d0,0xb665c729,0xb7c2e844,0xb70310f8,0x3814426e, -0xb7c0148c,0x39036b94,0x390299c1,0x38108b69,0xb96504c4,0xb9077f37,0xb9dbff84,0xba4b8cca,0xba5f51b7,0xba843abc,0xba87a54c,0xba350d23,0xb9baeb7b,0xb9254ec1,0xb97554ff,0xb98f6778,0xb86a8aff,0x398d2977,0x3982314a,0x38e7cb29,0x36381d9f,0x38dfa787,0x37a28354,0x389c84d7,0x3710c1d5, -0x3723ea60,0x372533db,0x35f27ab8,0x361fbc4b,0x35f6f223,0x36621709,0x36d9ca13,0x372b8f33,0x3819d3f7,0x38649748,0xb83b9976,0xba065611,0xba0fb524,0xba2897ce,0xba1424f4,0xba22607c,0xba4fefca,0xba56e041,0xba45b5cc,0xba1f5364,0xba007b8a,0xb9f85e44,0xb9e08067,0xb9ded42d,0xb9b258fb, -0xb9149efe,0x38cdf735,0x39197c93,0x394b04e8,0xb9f8a56b,0xb9950c25,0xb9f4378c,0xb9ba6692,0xb95f2d0e,0xb91c383d,0x38275cd4,0xb6f98513,0x3693ad10,0x33d364ae,0x36302e4c,0x36a0bf9e,0x371d9654,0x369ab2e7,0x3809581a,0xb8f15903,0xb986802c,0xb99aea82,0x37edcd73,0x37862513,0x34963b18, -0xb93e1f3b,0xb94cb346,0xb9638f21,0xb991d792,0xb9bc8647,0xba07e152,0xba0e10df,0xba0afe8a,0xba015e6c,0xb9d1d621,0xb9d8d87d,0xb9fc7caa,0xba1a97ea,0xba14a0ba,0xba0ceda9,0xb9902fc7,0xb9a3e6ff,0xb9b5cd6c,0xb9b944aa,0xb9c69b51,0xb9b9ca68,0xb9b914a0,0xb9c00087,0xb9b91add,0xb9b55842, -0xb9b17282,0xb9ae7ccd,0xb9aa8a9b,0xb9a8a683,0xb9a2afd4,0xb9992b45,0xb98e53a4,0xb9864c8c,0xb9aec6b7,0xb9d8648b,0xb9d47855,0xb9d58c6e,0xb9de1294,0xb9ebf3a3,0xb9e53f06,0xb9cfd696,0xb9bdab0f,0xb9a39907,0xb9a16684,0xb9aa0d17,0xb9b42ddf,0xb9b5249e,0xb9992301,0xb984d1d4,0xb972d976, -0xb979df61,0xba0e9487,0xb9d72f43,0xb981d42b,0xb98df69a,0xb9804698,0xb98a99f2,0xb9978860,0xb90267a6,0xb8923a21,0xb605699d,0xb7d26764,0xb7fe1fa5,0xb80ad9ab,0xb853d1aa,0xb8636d45,0xb849ede2,0xb8aaf72f,0xb8da2ac5,0xb9a76c0e,0xb975c501,0xb95ce1b1,0xb98190d2,0xb99ab18c,0xb9aa3616, -0xb9b79ef5,0xb9a58062,0xb99bc069,0xb991b6da,0xb9850da7,0xb98714b4,0xb9a4d0a8,0xb995a8fa,0xb983c112,0xb9453012,0xb975a05b,0xb96dce8d,0xb95dc68b,0xb96bad59,0xb98b2229,0xb9ccad28,0xb9bb44b6,0xb9117f1d,0xb6add341,0x382aec47,0xb60b8bc0,0x37039e54,0xb73629e8,0x3651c28c,0x360a88bf, -0xb6963ce2,0x35546e45,0x37f0d341,0xb76a13ef,0x388442c1,0xb7c89ee7,0xb898abc4,0xb9560db1,0xb9a1426a,0xb9c2fbfc,0xb9e87787,0xba0de23a,0xb9d6e515,0xb9b59453,0xb9ca6d11,0xb9af5854,0xb9dcb20a,0xba209917,0xb9ef59d2,0xb99ee8fb,0xb89e7947,0xb99979c1,0xb9b1b7a6,0xb997755b,0xb9871c00, -0xb95e7a99,0xb9fc3cab,0xb8eebd2e,0x38c7afc5,0xb7699d15,0xb7b5d9ce,0xb7996fa2,0xb725a7b2,0xb68d93c1,0xb735ee9a,0xb6e8e9a1,0xb727e23d,0xb6b0ef5b,0xb7929899,0xb74e0ad2,0xb7d4cb89,0xb6fdfc0e,0x387c61f0,0xb718f7e5,0xb993d104,0xba027d9e,0xba2f7e4c,0xba57b413,0xba1e0ae3,0xb9f42f1d, -0xb9dda5b9,0xb99a6668,0xb9bf2324,0xba4d1ea5,0xb9fa9789,0xb9ab4ef2,0x38d881f9,0xb968db02,0xb946d10f,0xb8ae898b,0xb94025b2,0xb90e05ad,0xba359255,0x382ac89f,0xb799d5b2,0xb8040647,0x3735d8d7,0x363a2039,0xb4cc73b1,0x35b8b75a,0x3633030a,0x368507ff,0x361de7a1,0x35f573a1,0x35981012, -0x3704e2ba,0x36310fa7,0xb7be1a53,0xb7d6b47e,0x37f4d259,0xb98fedea,0xba00bf9e,0xba2f8dfd,0xba8368bb,0xba229a67,0xb9f33820,0xb9efe526,0xb9c53383,0xba23c400,0xbaa1fca9,0xba1f150f,0xb9bc003d,0x39e41109,0xb99fa29d,0xb9a76d6c,0xb922c055,0xb94dbd50,0xb98cf572,0xba180a75,0x3948a277, -0xb8c85953,0x380c104f,0xb785578f,0x364782e0,0xb644da45,0x3511e642,0xb66445b7,0xb60ab2e4,0xb5ef5775,0xb585dc29,0xb63eb3bf,0xb64fa6c4,0xb6a72548,0x3789b677,0xb8033202,0x38a48627,0xb9945e62,0xba55bcd0,0xba9887fc,0xbabe796e,0xba861617,0xba2edcf3,0xba0f5e42,0xb96689dc,0xb9fb2ea5, -0xbaa05686,0xba49ce49,0xb9a73d35,0x39d78bca,0xb90a9793,0xb8f648b3,0x39167b4b,0xb7d7840f,0xb970d565,0x39aa653a,0xb80416b4,0xb77ec1bc,0x36bd38db,0xb6751c7a,0x360c5917,0xb6183f0d,0x34ccc343,0x34a0bf8b,0x3548698c,0x34d1fc32,0x347e3b3c,0x355ab911,0x34df7f45,0x354884c4,0xb77375d0, -0x37b3927b,0xb908481e,0x3a12b7cf,0x3a8761ac,0x3ab71da6,0x3af64e83,0x3af12c2f,0x3a8ca180,0x39e0b6cc,0xb988668e,0x379ae38b,0x39af4de4,0x3a937e7e,0x3a6281c4,0xba51129e,0x39b05ccb,0x39a7ddd8,0x39b9b398,0xb9a15237,0x39c9f444,0xb7fead35,0xb84d666a,0xb6079c67,0xb6a3ea9d,0xb5cf5a91, -0xb629a1ed,0x35d07431,0xb58fb8aa,0xb504f5cd,0xb5158a7a,0xb509c1c6,0x3484f256,0xb5c620e3,0x350b17ec,0xb6ebad74,0x378080c7,0xb82383b2,0x38ee87cd,0xb9e3c4e8,0xba8c5d85,0xbac21d69,0xbae52bad,0xbadf8eee,0xba814538,0xb682ff61,0x3a7e1bdf,0x3a937141,0x39e68f18,0x3883a56b,0xb973101f, -0xba2745f2,0x39d63971,0x3a91bb62,0x3ac158ea,0x3a814de6,0x3a0353ea,0x3a72f084,0xb9115027,0x38289d99,0xb7bcc451,0x371fe029,0xb6651b88,0x349b802c,0xb5407de9,0xb4575a3a,0xb2fd24fa,0xb521534d,0x3367aac6,0xb5938148,0x35cee38d,0xb6a02ff5,0x36b0c3b4,0xb78130e4,0xb6d1f4a9,0x383e9afd, -0x3967b25e,0x39e138d8,0x3a1eb973,0x39edeef6,0x39a16835,0xb971f275,0xba1a81a2,0xb9dd5b3e,0x38b15d4a,0x3a04058f,0x3a00a72c,0x390ada51,0xba0890cb,0xba660d92,0xba610e3d,0x38f9ed8e,0xb9e09585,0xba44fcb4,0x38b2f548,0xb80b3914,0x38071811,0xb7c454c4,0x36e4f1f9,0xb639c77d,0x35b98310, -0xb5895654,0x3509eddb,0xb5268d37,0x350b1546,0xb54718f0,0x358d6396,0xb6889bd7,0x36206dfc,0xb709c060,0x35be70f8,0xb7950766,0x39a4483b,0x3a31c988,0x3a5a364d,0x3a71a2e7,0x3a18fa97,0xb9574ff3,0xba04cf43,0xb99d1996,0x398ee379,0x388656d6,0x382a5822,0x3950eaa9,0xb9dd2cba,0xba361f0d, -0xb985cb9e,0xb9c57845,0xba85e7cd,0xbaa0b2c9,0x3a198535,0xb96d132e,0x38ad7147,0xb82f86a2,0x3768972b,0xb7255457,0x365094a5,0xb609a4c6,0x3380c846,0xb59c65eb,0xb5020071,0xb5d97f94,0x345708a3,0xb6413a93,0x3711eef9,0xb7ca9de5,0x389bf3d7,0xb9a454a4,0xb9c8d1f6,0xba2bfa9c,0xba48905d, -0xba3f6554,0xb9e55b1a,0xb83338bc,0x3a917270,0x3aa19133,0x3ab95a52,0xba528cd3,0xbab5507a,0xba3f4334,0xb874c442,0x3a514b99,0x3ad3d350,0xb9ee42eb,0x3afa4992,0xba8c8bb9,0xb68f586b,0xb73409e8,0x37c364c7,0xb75f937d,0x36d513f7,0xb61be719,0x361bea25,0xb4c8ce7d,0x35a284ab,0x34bd740d, -0x35d3d4dc,0x3298e3e4,0x35adb5e1,0xb53e1938,0xb6dd5d7c,0x374ce7ce,0xb900889c,0x3a0da3e8,0x39ac97ab,0x39c20938,0x37b9a75a,0xb8b1df61,0xb9a009ab,0xba22ab81,0xba6250ba,0xba63cffe,0xba28ff23,0xb956d1bb,0x39aa897c,0x3a908d39,0x3ad66ddd,0x3b0303bf,0x3b2dc305,0x3b21df67,0xb9c183c9, -0x38916e25,0x38c730da,0xb8601ffb,0x3765ee08,0xb6fcac88,0x35a931f2,0xb6c581cb,0xb5d299f2,0xb687b056,0xb6161a99,0xb6736c62,0xb61471e1,0xb64feb60,0xb5aec677,0xb6fe3b75,0x37824db5,0xb7dd844c,0xb71be16f,0x3a25af42,0x39bb8fab,0x39b7583d,0x39a73dff,0x38d22a95,0xb604355a,0xb93f7cfd, -0xb951c473,0xb96914c4,0xb94839b9,0xb9c71cb9,0xba05dfb3,0xba12881f,0xba28a949,0xba0e8fbc,0xb9ffafe6,0xba0d0e25,0x390c701f,0x3a49d7ab,0x376d0886,0xb8941586,0x37b5e085,0xb78e88cc,0x37305fdc,0x35f13dff,0x36bd6199,0x3638b7fe,0x36940074,0x36972ef5,0x36920a41,0x368f24fd,0x35b7a4e3, -0x3703f6af,0xb7d4f76b,0xb68c520f,0x37528c31,0x383f8a09,0x38a01aa3,0x380428f5,0xb8de7a01,0xb891e4e2,0xb97b91d6,0xb9e526f6,0xba03b676,0xba1bfd85,0xba1b9680,0xb9d91679,0xb98c2135,0xb956aa66,0xb992815c,0xb99a8452,0xb905fc1c,0x38df9a1f,0x396ea85b,0x394b3166,0x38d59b92,0x3825a9f5, -0xb786282b,0xb728651d,0xb744767b,0xb78486de,0xb770fc4b,0xb7188b75,0xb709ce79,0xb7577aa4,0xb73d32a7,0xb761f4c9,0xb79dbe29,0xb52c0b4e,0xb7519264,0x38e078b2,0xb92b67de,0xb9e77643,0xb9ddf261,0xb9d493d5,0xb9d8030c,0xba054a9c,0xba05c662,0xb9f78a25,0xb9d4050c,0xb9bd54d0,0xb9cda62e, -0xb9bb7f18,0xb9b03566,0xb98bc00f,0xb8a10042,0x38fb5a6b,0x3922c904,0x3953ba52,0xb9aa2d55,0xb956c243,0xb989924b,0xb8c0b530,0x37c7425e,0x37ff993f,0x36fb0cd9,0x38348b24,0x37d9c66e,0x380eabc6,0x38030b6f,0x37fcf4a8,0x37b00bf0,0x37ffcce6,0x3650cef2,0x38610a54,0xb8049a37,0xb908a9b7, -0xb97f9de4,0xb93d6380,0xb9224fd8,0xb98f8f19,0xb98e90f2,0xb99669fa,0xb9a51678,0xb9b934ee,0xb9e37735,0xb9ded66a,0xb9cd95e6,0xb9c39463,0xb9a8b4f0,0xb9b97f47,0xb9cefd0c,0xb9fa9406,0xb9e37e8d,0xb9ca73fd,0xb95546ca,0xb9676e03,0xb9870d81,0xb98ebcdb,0xb9932431,0xb8eaca93,0xb8d2019c, -0xb8cb91e0,0xb8c7b5e7,0xb8c7598f,0xb8c5b106,0xb8bc3cab,0xb8b3ca7a,0xb8a9717e,0xb8cfb7e8,0xb8f51a82,0xb9952a3e,0xb98d732e,0xb98be65a,0xb9a81089,0xb9ad7abf,0xb9ac1350,0xb9af0fb0,0xb9b53b0f,0xb9affe02,0xb9a29a3e,0xb9999b65,0xb98d0150,0xb9901fbb,0xb9956afc,0xb995f129,0xb99207cf, -0xb96e730c,0xb9501f63,0xb939653a,0xb93d0d58,0xb9eeb9d3,0x38423195,0x383ebb0d,0x38f7a9bf,0xb68aa8cd,0xb9452adb,0xb98e3a8e,0x38805876,0xb87e5dd3,0xb9129560,0xb918d73d,0xb91fd2ba,0xb914edf5,0xb918c987,0xb92c5502,0xb91427c0,0xb8887d5e,0x38302d8d,0xb996b9f4,0xb93c72b8,0xb7d04d05, -0x38d4e101,0x3848a7a3,0x3863181c,0x3853f4c6,0x3883b838,0x38868314,0x387918dd,0x3882c7d4,0x388053f6,0x38549eb3,0x387981b8,0x3885111d,0x38a4f086,0x3889ef03,0x3882113d,0x3855d005,0x387178e2,0x38835414,0x3897b9f7,0xb99da572,0x38190171,0xb8281ccf,0x380eec05,0x37d92d6c,0x33918df1, -0x37b3094d,0x37798378,0xb6272414,0x37bd7e4b,0x37d2e4fa,0xb5a558d2,0xb89e283b,0x3835704b,0xb773f86d,0x376112bf,0xb913d57f,0x38970931,0x388f75aa,0x386d2fd7,0x38721a2b,0x38a70509,0x38bdf2a5,0x38b4eac2,0x38b19415,0x3898193b,0x3842f802,0x38b374ab,0x38e4eb96,0x3921e56a,0x38c54fae, -0x388c9630,0x382b5a55,0x384f06d3,0x38d2cfc2,0x36e9314d,0xb83cf4c8,0x38cc8204,0xb746f47d,0x3803d2f1,0xb4a87918,0x381d9513,0x370e395e,0x3826e6cc,0x37926848,0x386f8edf,0x36847aec,0x382faa1d,0x378635ea,0x382ed10e,0x37c07dae,0x37b78c0f,0xb80b6964,0x3805898c,0x38ca1771,0x3814d58d, -0x3877477c,0x38c6bb35,0x38f605de,0x38cbbcf6,0x38e2444f,0x38bfe16c,0x3816beaf,0x38c7e7ae,0x3906f618,0x395496f4,0x38efe208,0x38af2559,0x38382b2e,0x385d41cf,0x38ccdfa6,0xb836c8fc,0xb8197aa7,0x36282166,0x37bbbf72,0x36c382e4,0xb642eee3,0x37785bb3,0xb68a138a,0xb65415a3,0xb710b807, -0xb6ce2e50,0x34ef96b1,0x370b5c74,0xb6786e95,0x378e7074,0x378d3395,0x381ca234,0xb7e85862,0xb78daef1,0x38fe625d,0x382ef050,0x38590eba,0x3916932c,0x3942ec1b,0x39053c8d,0x39007aec,0x38a226b5,0x37465a78,0x390dfbdc,0x394340d2,0x39ad7b8b,0x39027d6f,0x387c5ef9,0x37e36927,0x3787e1fb, -0x389ed9dd,0x37505304,0x37f22137,0x3835af51,0x37889f3d,0x36fe6fca,0x369a49cd,0xb5333821,0x36022bdd,0x36c2bc5f,0x36f85f78,0x36a1a0d5,0x362627d8,0x36ad6f53,0x368c4e71,0x3774d953,0xb703540c,0x3871c236,0xb8269d3f,0x37c9b0c5,0x38940156,0xb75f8c02,0x38094e15,0x38d4cbec,0x392c082c, -0x390274dd,0x3929c458,0x38e968e3,0x36990ac1,0x38ea25b4,0x3940458e,0x3994a29b,0x39137d85,0x3889670d,0x383afc46,0x38382592,0x392c7d07,0x3984074b,0xb85af5f9,0x37339587,0xb681af49,0x34cb76ff,0x36b24076,0x35d35187,0x361c8689,0xb54e2582,0xb5ce5e2c,0xb5726a08,0xb58ade97,0x35dd2d97, -0xb648fb17,0x376776cd,0xb78d75d5,0x388554dc,0xb8096b3c,0x39842b7d,0x3a067ed1,0x3a04e06e,0x3a23f792,0x39de9abb,0x3996ae32,0x3937aebe,0x39312acf,0x398f8c0b,0x39c84578,0x3a0f343a,0x3a0e95e2,0x396287ed,0x39cd7bbe,0x39b7c010,0x3986a85f,0x394f8a71,0x39930256,0x3910bc84,0xb8e36112, -0x38fc40a4,0xb81ad7ae,0x38031758,0xb7290be8,0x36c96f51,0xb5d098e2,0x365072cc,0x35277b48,0x36034625,0x33ed6c31,0x362b5a18,0x361fb4f2,0x37578220,0x36c3cd73,0x37699fb2,0xb781a4b3,0xb8fda146,0xb86c5496,0xb90debff,0xb85a55b8,0xb911eaf6,0xb8606903,0x3819c3d1,0x39512a50,0x3975660a, -0x38fcf1dd,0x38929a1f,0xb76aa9a1,0xb921b81d,0x391c3332,0x39992e57,0x399efedb,0x398fd7f1,0x392295cd,0x39158284,0xb75df01d,0x383e3532,0xb6c8a226,0x374e73a1,0xb69b73db,0x36a40c11,0xb5948571,0x36146417,0xb4683f7c,0x35ee76d9,0x357df182,0x352c99da,0x362a11f7,0x369fb533,0xb59b9e02, -0x37b7c783,0x3724ad83,0x38c6d63d,0x39205ca9,0x391f8911,0x39652146,0x39829a87,0x398c7256,0x39344fda,0x39076209,0x39020955,0x395e191d,0x39a35ace,0x39c96485,0x39a172e9,0x3920e931,0x38323c2d,0x38121980,0x38a421e9,0xb82fbee0,0xb8d3232f,0xb753beda,0xb5eeda92,0x36edb192,0xb6b4d7ea, -0x36851e65,0x33867923,0x35d82c32,0x35a2e642,0x3525a30e,0x35cc84f3,0xb4192389,0x35d2f7c5,0xb5807ae7,0x3725dca4,0xb3db096e,0x37e0d85a,0xb74368a7,0x3790297f,0x393d6fb5,0x39608939,0x398532df,0x39b1684f,0x39ab2a73,0x395ff7c7,0x39463c8e,0x3938b147,0x398315d3,0x395bfed6,0x3998bbbc, -0x39e5d706,0x39a4f8ab,0x398943f1,0x39b79fa0,0x38ac15d8,0xb83ae2db,0xb91f7e5b,0x38ae1079,0xb7cefade,0x376ca5d2,0x372837d8,0x3512d2f4,0x33434eef,0x35dfea51,0x35734906,0xb4186cf3,0x35f013ca,0x3589ff48,0x365244c7,0x3590227d,0x35a21f4a,0x34238011,0x3742885c,0x36293410,0x377fe522, -0x37fe63e2,0x378a2ac2,0x381d8517,0xb7411df5,0x37417575,0x389e452b,0x39a19dbd,0x399d72c7,0x397559bb,0xb953e075,0xb987968e,0x379cc328,0x399789c9,0x3a0efeaa,0x3a58f2bd,0x392d24d3,0x3a4dc82c,0xb76835a1,0xb9420ee5,0x389b76f2,0xb82848ae,0x374a8064,0xb591b9fc,0x369a34f1,0xb62d3556, -0x35752b04,0xb5811397,0xb49b0756,0xb600ad4a,0x35b5a4fa,0xb573966c,0x36d35e40,0xb68669df,0x37e44345,0xb7870172,0x38480c1e,0x38c738cf,0x37e4ecd7,0x362a9948,0xb7cbe376,0xb8106980,0xb80dcfda,0xb8adbde5,0xb84d2337,0x38439d3e,0x393428b4,0x39a8f8e1,0x3a19ba56,0x3a3a676d,0x3a4c5338, -0x3a7d9942,0x3a56306c,0x38621202,0x38425df2,0xb8161f2a,0x37ada538,0x3436e3a9,0x366f9595,0xb4183fc7,0x368b2e23,0x36a56660,0x36742a3d,0x36d7a25c,0x36d58e5f,0x36b3708b,0x36b9addf,0x3582ed5d,0x37287c7c,0xb606c648,0x380ee3e8,0xb86c3779,0x3914e33e,0x3909e13a,0x391802cd,0x3924a119, -0x38cfb782,0x38929b1e,0x3809fc94,0x37f3d17d,0x378ce302,0xb7567090,0xb7edd26d,0xb71db575,0x38c5d0cd,0x3845ecad,0x382c0ffc,0x37f171c0,0xb7021774,0x393eb7b5,0x38bafebe,0xb892c971,0x3842120a,0xb66178b5,0x381a2c66,0x365858be,0x3693b22f,0xb6050dca,0x351d3317,0xb6c8868d,0xb6be43d6, -0xb6fa092e,0xb598f7e3,0x363eaef1,0x36d4bab5,0x34b15333,0x37214a92,0x3707dccd,0xb775ea6e,0x38a7ab94,0x3860c749,0x380b3cab,0x3816ec50,0x36c941a0,0xb810849c,0xb82567f8,0xb865ab24,0xb864b6fd,0x36a92835,0x3881f5fd,0x390b87b5,0x388b50a9,0x38042a7a,0x389ca25e,0x389f1128,0x38fc1c70, -0x392f85f0,0xb854c128,0x37ef6561,0xb710236e,0xb72ef34a,0x35e6bf3e,0x379c062f,0x377f93a5,0x37664a23,0x371e2a5b,0x38036fd9,0x3712dab3,0x37ec3f96,0xb71a0cda,0x37554197,0xb6352a21,0x37812912,0xb77e7b1d,0xb863e58a,0xb817cf12,0xb8852d50,0xb870c152,0xb8b72a6e,0xb8bac6b0,0xb8bb2ef6, -0xb84b7825,0xb7ac9fc1,0xb6e2d373,0x378a4a10,0x37f99e33,0x38763c20,0x38c66459,0x390fd38e,0x390e21fe,0x3908f27f,0xb7aed24b,0x3581c47e,0xb8ffa804,0x3811b390,0x37364f29,0x37e405c4,0x3804a395,0xb7bd1d08,0x3703f70a,0xb73d8410,0xb788df41,0xb787351f,0x35fa0787,0xb705ce81,0x37aa4c28, -0x380152b4,0xb71c3437,0x38a0e67f,0xb90878d0,0xb83a4334,0xb82f1879,0xb868987c,0xb861146f,0xb8623a54,0xb8641727,0xb88013db,0xb876ec68,0xb8343035,0xb7972e57,0x37033eb3,0x3822b2e0,0x387825dc,0x37f58a8e,0xb795b504,0xb79f7437,0xb71051bb,0x37895fd4,0x37f6fdb6,0xb830d54c,0xb9088e54, -0xb93f76e6,0x383fe253,0xb78c9bbb,0xb8825c0b,0xb891f7ac,0xb88bb4d1,0xb8880768,0xb8979525,0xb8b19537,0xb8bdfb00,0xb78d63da,0x385b731f,0xb94c5547,0xb90477f5,0xb825a0b7,0xb6436ed6,0xb7a008fe,0xb7a3ec30,0xb7b7b10a,0xb7d2e436,0xb7d339fe,0xb7b9a23d,0xb755e39c,0xb634a8c1,0x35956288, -0x361f6ae6,0x35db1191,0x37136eb0,0x37982a30,0x37c777d9,0x37f2c125,0x37c975ca,0xb7b60e85, +const uint32_t defaultHRIR_rom_AlphaR32[470 * 86] = { +0x3e8065c3,0x3e6ef862,0x3e9c117d,0x3d6fefdf,0xbd6f840b,0xbe245973,0x3e022d81,0xbd2167b3,0xbe211338,0xbe2839d2,0xbe21fc71,0xbe049f6d,0xbe2067a7,0xbe25efd4,0xbe202ffd,0xbd25123e,0x3dc1efdc,0xbe2ea55d,0xbd3924e1,0x3d415830,0x3e8d91aa,0x3e5e148b,0x3e6db67d,0x3e70d2c7,0x3e71faf2, +0x3e742a24,0x3e767460,0x3e789e68,0x3e7d14ea,0x3e814fd9,0x3e84afa1,0x3e879b3b,0x3e8bffa0,0x3e89dc0c,0x3e871fb7,0x3e7fe418,0x3e80d105,0x3e955dbf,0x3e8602f6,0xbdb41e6d,0x3e47b547,0x3d78dbd8,0x3d8d8a54,0x3dff4f7f,0x3dd6cbd4,0x3e2a712f,0x3df98017,0x3d723363,0x3de2e600,0x3dfba89d, +0x3dde6511,0x3d5457e0,0x3db00e5f,0x3dbb73b5,0x3de8956c,0xbd66c649,0x3e54f09e,0x3e791bbc,0x3e743d87,0x3e832dbc,0x3e83a2b0,0x3e876621,0x3e8a3e52,0x3e8c5e71,0x3e91cf6b,0x3e9aa2ef,0x3ea5faa1,0x3eb09ae8,0x3ebae53b,0x3eb97981,0x3eb0a1fa,0x3e9c5594,0x3e95e166,0x3eaf0a9e,0x3e78672c, +0x3d80d7ea,0x3de6e42f,0x3cad7122,0x3d404dda,0x3d26ff97,0x3d25eab0,0xb625670d,0x3d9fd366,0xbcb16f0f,0x3dc9c00e,0xbb91fc43,0x3d7324db,0x3b3b7491,0x3d56ebcd,0x3d523589,0x3d4e1a21,0x3d099ec6,0x3e0c9517,0x3e75e3a0,0x3e658021,0x3e868d80,0x3e873369,0x3e8e8957,0x3e94e2d6,0x3e9a53d0, +0x3ea61b0d,0x3eb6c836,0x3ec86fee,0x3edcb7a7,0x3ef012e9,0x3eeb9c0c,0x3eda6e87,0x3eb4e46f,0x3ea4f89d,0x3ec19ceb,0x3e428976,0x3cb52432,0x3dd72e5d,0x3d62d37c,0x3d10529b,0x3d3b2b85,0x3ce8fd33,0x3cda17ef,0x3c39df54,0x3d11d620,0x3b524a66,0x3b99f01b,0x3cb74290,0x3c6923bd,0x3d08b12d, +0xbc8a2c94,0x3d4babe8,0xbba0814f,0x3ddb5618,0x3e57c156,0x3e5c92ea,0x3e84515a,0x3e8492bc,0x3e8e7cc0,0x3e978bed,0x3e9c3c72,0x3eac8282,0x3ec7a9f6,0x3ee7d52d,0x3f056a80,0x3f16c700,0x3f155eec,0x3f065e7e,0x3ed26069,0x3eafaa5a,0x3f03775a,0x3e91af84,0x3d82af5a,0x3da48683,0x3cc5b7d7, +0x3ba51a89,0x3d439b45,0x3c9a2fe1,0x3cb4f27c,0x3c91083b,0x3ca0a0f7,0x3c9c923d,0x3c0b429c,0xbb72ea9e,0x3c021995,0x3cf42974,0x3c1f567d,0x3d6d2275,0x3c5c183e,0x3df3715d,0x3e801376,0x3e7db7fe,0x3eaaae92,0x3ebb0ac0,0x3ecebdae,0x3ed567a3,0x3ef804e9,0x3f0674e8,0x3f07bd54,0x3f1da07e, +0x3f23ca8f,0x3f210ab6,0x3f1ab5e3,0x3f0f1808,0x3f023a4c,0x3eea48d6,0x3f067392,0x3e4e2930,0xbbb8773b,0x3dd7ee78,0x3de8c36e,0x3d61cbe1,0x3d9f79ce,0x3cb7a6b2,0x3cdf3c0a,0xba82da31,0x3c78d616,0x3c58c047,0x3c32c54c,0x3ccfc36c,0x3d0066ed,0x3d1a6393,0x3c2c99d6,0x3d65dacc,0xbb18e9ce, +0x3e09983a,0x3e91809c,0x3e960fb6,0x3eca264c,0x3ed32d12,0x3ee65a30,0x3ef4e2f2,0x3eeb83ac,0x3eecde62,0x3ef7acab,0x3f0bcaa8,0x3f17c181,0x3f1ff78a,0x3f27da67,0x3f22c01c,0x3f17ba6c,0x3ef908f5,0x3f44bdc2,0x3e8b2396,0xbdbf5a5f,0x3de8db1a,0xbd3fdf54,0x3dae7ab7,0xbd193fbc,0x3d201d5b, +0x3b8d4cc5,0x3d29df7a,0x3c9a659e,0x3c36c917,0x3cacfd9d,0x3cb6763f,0x3ce3a84a,0x3d82a966,0x3c8c5ab7,0x3d998c76,0x3d028b7b,0x3e01a9f2,0x3e9d5820,0x3e97882c,0x3ec9a904,0x3ef8fb8a,0x3f17dc21,0x3f308451,0x3f36dffe,0x3f309f9f,0x3f1db901,0x3f084ae1,0x3f0e463b,0x3f27993e,0x3f3e4b18, +0x3f5136f6,0x3f75ec5d,0x3f4a81a3,0x3f72211d,0x3ecaf79c,0xbb9dbe5a,0x3e6ab743,0xbc372e54,0x3dec7f5e,0x3d29a709,0x3cffc775,0x3b12f0ae,0x3d0513b3,0x3d22109a,0x3cd96964,0x3c6f8c56,0x3b1d1031,0x3d0aebd5,0x3cbd5b25,0x3cd88ed3,0x3dbbe74c,0xbce09e5c,0x3e186f0c,0x3e915f60,0x3e8ebaf2, +0x3eb710a1,0x3ed5d35b,0x3ef7f89c,0x3f0908ff,0x3f169b43,0x3f1e2992,0x3f210e31,0x3f253b7d,0x3f242a29,0x3f1ff7d3,0x3f2e6efe,0x3f393f7d,0x3f5891db,0x3f5195c5,0x3f48fc36,0x3f057524,0x3c88b5e7,0x3db92868,0x3e0426a2,0x3c40b3a9,0x3dbb1f8c,0x3db2f15a,0x3c151bf8,0x3cf56bdc,0x3a56ebbf, +0x3cccd88e,0x3d11d826,0x3ced451a,0x3ce5ced1,0x3c8499e0,0x3d5a9ad8,0x3d8962c3,0xbcf9fe12,0x3e2fb123,0x3e8b8d2b,0x3e6e13d4,0x3e87e361,0x3e9c2adb,0x3ec36f02,0x3ef2657a,0x3f08130e,0x3f14bf9f,0x3f1f2a41,0x3f0d5840,0x3f06170c,0x3f0ee615,0x3f0ca974,0x3f168d99,0x3f32b9d5,0x3f32b272, +0x3f00e3ee,0x3ebe6232,0xbc9ecba2,0x3d95b9c5,0x3c7b6152,0x3bf2199e,0x3d71eeff,0x3cee9a7a,0x3d70baf6,0x3d30b49d,0x3da6249d,0x3c3b9000,0x3c9bf39d,0x3d106ddf,0x3d604d19,0x3d693f42,0x3daf8c34,0x3d9b4dfa,0x3cf6a0bd,0x3e19a4e4,0x3e8c58c8,0x3e80356d,0x3e8f4964,0x3ea35fd2,0x3eb4564d, +0x3eb965ab,0x3eba17d3,0x3eb0f3c8,0x3ea81da3,0x3eb12bc9,0x3ec75f9f,0x3edd3de7,0x3eda6d6c,0x3ed7d39e,0x3edac08c,0x3ed92cbd,0x3eb54624,0x3e5b3505,0x3d9c85dd,0x3e254f25,0x3d699fb5,0x3d9490c6,0x3d3dfd9b,0x3d244a9e,0xbc86fd01,0x3d95a250,0xbd367345,0x3de0684e,0xbcacc494,0x3d4e59d4, +0xbc8468ff,0x3d39a0f9,0x3c984c6a,0x3d47de30,0x3c9d7424,0x3e19ea16,0x3e79b070,0x3e3e130f,0x3e532614,0x3e5ca9c1,0x3e7421ac,0x3e806864,0x3e9aba0b,0x3eb0c53f,0x3ec5fc9d,0x3eca9d2f,0x3ecbe9e8,0x3ecf4354,0x3ec977d2,0x3ec0673b,0x3ebded84,0x3ea23e32,0x3e8bd959,0x3e8200b3,0xbdecaf4f, +0x3e2f9d11,0x3d225a67,0x3d677c45,0x3e042a7c,0x3de288de,0x3e41c8a1,0x3e129920,0x3d82280a,0x3e018140,0x3e1d5709,0x3e0a8510,0x3d8441cb,0x3dd6ebc3,0x3dead08b,0x3dff1049,0xbd869b75,0x3e463dac,0x3e56ee89,0x3e4a4368,0x3e53b006,0x3e4e5d2a,0x3e503eca,0x3e4bfcc2,0x3e6c40d1,0x3e7f74a6, +0x3e8ac8c4,0x3e935227,0x3e9d568c,0x3ea796ec,0x3e9fc971,0x3e97e5ff,0x3e947c7f,0x3e898b74,0x3e83d5be,0x3ea9adfc,0x3d54c4c3,0xbd8eb9c9,0xbe3384d8,0x3e0abcc9,0xbd72cf50,0xbe3b2b81,0xbe47d2e4,0xbe44847d,0xbe1f3b94,0xbe428b35,0xbe4da6fd,0xbe4576de,0xbd7bfe81,0x3dc350d9,0xbe51b871, +0xbd8d818b,0x3d152a05,0x3e9f67a5,0x3e77c8a0,0x3e81bf8f,0x3e8199b1,0x3e81759a,0x3e81cfc6,0x3e7fdba1,0x3e83fc0c,0x3e86b35c,0x3e899be9,0x3e8de1cd,0x3e917c1b,0x3e976359,0x3e933f79,0x3e9164ce,0x3e8edf6d,0x3e8dbe3b,0x3e9b4c11,0x3eee9e61,0x3ee16fd2,0x3ed73bfd,0x3f031958,0x3efcd5c9, +0x3eb939e6,0x3ef5a55a,0x3ef279dc,0x3ebffd41,0x3ebdf966,0x3eb9725b,0x3eb1960e,0x3eb0c909,0x3eb0d1b6,0x3eac5428,0x3eec360f,0x3ef02caf,0x3ea9f619,0x3eed5478,0x3ef65df3,0x3ecb29cd,0x3ed0ee4d,0x3ed5f1c7,0x3ed87975,0x3edb0693,0x3eddba94,0x3ee081ce,0x3ee4a6c4,0x3ee818c1,0x3eeb6112, +0x3eeedbb5,0x3ef2c527,0x3ef98bd9,0x3ef6e4c4,0x3ef48d06,0x3eef1732,0x3ee8c183,0x3f01a7b9,0x3f060eda,0x3f011c34,0x3ee97bf3,0x3ee3cd81,0x3ed515c3,0x3ecee8ac,0x3ec2d045,0x3ebb72df,0x3ec4f2af,0x3ec6388a,0x3ec58408,0x3eb90f06,0x3ebc91ee,0x3eb57a5f,0x3ebafc6e,0x3eccf7ed,0x3ec3a84b, +0x3ecb1dc4,0x3ed7f656,0x3ecf6d98,0x3ede49af,0x3ee54c83,0x3eec8436,0x3ef4422e,0x3efd7741,0x3f04847b,0x3f09d504,0x3f0e85a0,0x3f132e72,0x3f19d54c,0x3f238988,0x3f2346f1,0x3f1fad6a,0x3f15d1df,0x3f0e073b,0x3f064ffa,0x3f06a50a,0x3f025dff,0x3ede5978,0x3ebd48d6,0x3eab068e,0x3e9c0293, +0x3e910dad,0x3e82f145,0x3e6db753,0x3e76c61f,0x3e6fbd14,0x3e59678a,0x3e75be18,0x3e6c6cc7,0x3e834651,0x3e931fa3,0x3e9251d5,0x3eacc574,0x3eb45e99,0x3eb9fdc9,0x3ed32464,0x3ee52293,0x3ef30333,0x3f017534,0x3f099a1a,0x3f14a2d6,0x3f1d4c2c,0x3f26d89e,0x3f30611e,0x3f3da198,0x3f4e9155, +0x3f4c09e5,0x3f45df03,0x3f30a100,0x3f1e6942,0x3f0e3e38,0x3f0e47f6,0x3eee0c29,0x3eb928f3,0x3e908df9,0x3e7640aa,0x3e489172,0x3e0c2cfc,0x3dcfdcc4,0x3d9bfb3a,0x3d8fb18b,0x3d3a3036,0x3d4da7e6,0x3d704cb4,0x3d8d07c3,0x3ddd7b8f,0x3de50f7f,0x3e2287eb,0x3e4c35d2,0x3e836a1e,0x3e97ac07, +0x3eb2caba,0x3ecebd89,0x3ee227b7,0x3ef90735,0x3f087a48,0x3f1879a1,0x3f284205,0x3f34f5bf,0x3f431055,0x3f5ac8d6,0x3f7b7a5e,0x3f7df07b,0x3f725367,0x3f4dba7a,0x3f2eb8c6,0x3f302d7f,0x3f201388,0x3f25e853,0x3eeca8a4,0x3eafd375,0x3e916868,0x3e73135e,0x3e379a5b,0x3e123e5c,0x3dd89349, +0x3dd5c6c7,0x3d9951f7,0x3d857ec9,0x3d6d709e,0x3dc353a3,0x3e069f23,0x3e1f594c,0x3e5b9072,0x3e933157,0x3ebc5be8,0x3efb6964,0x3f1a17f4,0x3f335985,0x3f41f93b,0x3f547ff3,0x3f6ca8a7,0x3f724a5b,0x3f7d67f0,0x3f82715f,0x3f97d6cb,0x3f9bf202,0x3f94f875,0x3f8c8e29,0x3f85e5c6,0x3f82a7f3, +0x3f61a3fb,0x3f6f42c4,0x3f495fe1,0x3f3424d3,0x3f0ee426,0x3ef9a4b0,0x3eb31f2e,0x3e880b49,0x3e46b6de,0x3e11ca66,0x3dd3fd91,0x3dcc84ba,0x3dbe8bdf,0x3db5b019,0x3ddfe279,0x3e029bb3,0x3e289aba,0x3e77072d,0x3e9adb96,0x3eb85dc0,0x3ee1ea00,0x3f063f84,0x3f181e75,0x3f2c6f00,0x3f45ea85, +0x3f653770,0x3f840a84,0x3f935a3f,0x3f9e3a6c,0x3fa13332,0x3faeb7d7,0x3fb251fc,0x3fa9689e,0x3fa398e2,0x3f9c4937,0x3f9798d5,0x3f8c8154,0x3f6ddfcb,0x3f8138fa,0x3f51a631,0x3f152d81,0x3f09f0a7,0x3edb4369,0x3e8f7079,0x3e625c79,0x3e182586,0x3e2c10a6,0x3e433eb8,0x3e03d9a8,0x3e0bd75c, +0x3e27191b,0x3e3b30b4,0x3e815ae5,0x3e98b875,0x3ea2133e,0x3ec5d713,0x3ed313f7,0x3ee422d1,0x3f0b7e5e,0x3f24f353,0x3f2a38b2,0x3f39a2d7,0x3f50b0a0,0x3f73f2c6,0x3f8eebc5,0x3fa47402,0x3fa8eaf4,0x3fa0383b,0x3f92df72,0x3f833234,0x3f76643d,0x3f566ad5,0x3f75d065,0x3f1b40de,0x3f696d80, +0x3f6a937c,0x3f11d07e,0x3ee5e72d,0x3ebf3b22,0x3e89555d,0x3e5c1426,0x3e26839f,0x3e43726b,0x3ea7c5f4,0x3e37b1a3,0x3e024c82,0x3e2c86fe,0x3e6a5ece,0x3e7e9fdd,0x3ea835b9,0x3ec6ad44,0x3ecffadc,0x3edf628c,0x3ed9ac32,0x3ef8d1b9,0x3f0f6390,0x3f339a37,0x3f4c4298,0x3f5d3dc5,0x3f769a49, +0x3f840bd3,0x3f892cbf,0x3f98e0eb,0x3fa0ae5b,0x3fa56e4f,0x3f895033,0x3f62cd2f,0x3f22751f,0x3f42f211,0x3f41449e,0x3f4fddb2,0x3f6376dc,0x3f24d7de,0x3efce90e,0x3eca1298,0x3eb0ad83,0x3eb0c3eb,0x3e8431c2,0x3e8025b1,0x3e6884c0,0x3e468439,0x3e484def,0x3e6174fe,0x3e882abb,0x3e9522c4, +0x3eb74a39,0x3ecae442,0x3ee0d203,0x3f139a98,0x3f14835e,0x3f18ca09,0x3f0b7ee4,0x3f1c6cd7,0x3f2e33d1,0x3f4b442d,0x3f5e66b7,0x3f75835b,0x3f85ec4a,0x3f90edfe,0x3f97051f,0x3f9e1766,0x3f93df42,0x3f8be446,0x3f707ec8,0x3f74eb35,0x3f5d98cf,0x3f54b3df,0x3f50bdb1,0x3f2b6cdf,0x3eff2c67, +0x3eee110b,0x3ec9be78,0x3ea59c72,0x3e9dd3c1,0x3e91e884,0x3ea494dc,0x3e5f475c,0x3e601e5d,0x3e7efabe,0x3e9bd793,0x3ec2d750,0x3eedd6a0,0x3ef95ff2,0x3f05f43f,0x3f1c9e56,0x3f2851cc,0x3f266502,0x3f157109,0x3f1c912c,0x3f2a40cd,0x3f40de1a,0x3f5b0333,0x3f785930,0x3f8a3d52,0x3f9089f0, +0x3f929013,0x3f907b6a,0x3f8fe7c7,0x3f8b712b,0x3f7c08aa,0x3f78008b,0x3f5bb2d9,0x3f5142d6,0x3f31353e,0x3f23efd6,0x3f08753f,0x3ef0cda4,0x3ed248aa,0x3eada14e,0x3ea33805,0x3eb8911e,0x3ea52d7e,0x3ed5336f,0x3e955bfa,0x3ec5e652,0x3ea5a0d9,0x3ed68990,0x3ee0c41e,0x3ef8c60b,0x3f075f15, +0x3f19792f,0x3f23854a,0x3f25bcab,0x3f2d5ce2,0x3f37a807,0x3f3eacdd,0x3f43e116,0x3f51419f,0x3f5b3b25,0x3f659b9e,0x3f6fc361,0x3f7a6f46,0x3f82b178,0x3f7f9175,0x3f7b3e6b,0x3f7501d3,0x3f693a34,0x3f436a68,0x3f4acd2d,0x3f0b5a99,0x3f340951,0x3f1e7566,0x3f17ada2,0x3f1e045e,0x3f12f94d, +0x3f1e2c21,0x3f22045a,0x3f1606d8,0x3f21b54c,0x3f19660f,0x3f19014a,0x3f0bfa20,0x3f143629,0x3f1e45bc,0x3f1662dd,0x3eec110a,0x3f302c2e,0x3f2dbf8f,0x3f33a04b,0x3f36ee01,0x3f3b88e5,0x3f4157e8,0x3f46eccb,0x3f4bdd27,0x3f50006e,0x3f53ee64,0x3f569614,0x3f587263,0x3f5cd842,0x3f560902, +0x3f51a31c,0x3f4d158b,0x3f49daad,0x3f363039,0x3f3de28c,0x3f3a97c4,0x3f22dd68,0x3ec4e885,0x3f3fc5ed,0x3f2294b3,0x3ed0dcb0,0x3ecdc593,0x3ec9bd45,0x3ecbf552,0x3ec26e57,0x3ec42580,0x3ec1146f,0x3f209279,0x3f37b6a2,0x3eafeb27,0x3f1f9d96,0x3f332e53,0x3f35bdfa,0x3f2e4082,0x3f337475, +0x3f342409,0x3f357a0e,0x3f35fcfd,0x3f36c017,0x3f37ca50,0x3f391184,0x3f3a640e,0x3f3c2fc2,0x3f3dc7a4,0x3f4029bb,0x3f3e3651,0x3f3d37f4,0x3f3b4528,0x3f3b5958,0x3f4af98c,0xbd4a668d,0xbd3883af,0xbdd47c37,0x3d162b28,0x3e2bee51,0x3ecfdd11,0xbcead0e2,0x3e154543,0x3eba89f2,0x3ebe36e4, +0x3ebd6fc3,0x3eb90ac4,0x3ec49349,0x3ec86c09,0x3eca8deb,0x3e1a59ac,0x3bb5d9a7,0x3edb4aba,0x3e2d23dd,0x3d73ad41,0xbd9e28f4,0xbce67316,0xbd45bccf,0xbd588046,0xbd5a9ac4,0xbd58af5b,0xbd4bff77,0xbd4c3bc8,0xbd558c92,0xbd62dd56,0xbd85a936,0xbd99ec19,0xbdc3795a,0xbdaa9d74,0xbda0b9cc, +0xbd883335,0xbd8abe60,0xbd9f7ba7,0xbda21ff9,0x3e82d352,0xbce27b21,0x3dabe3c0,0x3dc3ac51,0x3cf491a0,0x3d495a43,0xbca2b2ca,0xb9f73a5a,0x3d8079ad,0x3c435ef2,0x3cbf54c7,0x3cdef2a5,0x3de3c656,0x3dadc79e,0x3d555243,0x3d922739,0x3e761a59,0xbca50f3c,0xbcc4dedf,0xbd1f7c65,0xbd6c73c4, +0xbd75aa1a,0xbd710faf,0xbd451859,0xbd338d97,0xbd4829e4,0xbd7d7944,0xbdbafdd0,0xbe03541d,0xbe404271,0xbe2ec299,0xbe1f22b6,0xbdeace05,0xbdcece1b,0xbdb1a1b2,0xbcbb6e55,0x3d7f5030,0x3ce2da40,0x3de8951d,0x3dd4ad43,0x3dc864d7,0x3d8fa736,0x3dd2c6c4,0x3d4b55fe,0x3e0b77e9,0x3d29950f, +0x3e13dcd8,0x3d8c3765,0x3e0c6e07,0x3dc4551f,0x3dd58800,0x3e0b57ce,0x3e02b9d6,0x3d83c0cd,0xbc1bc672,0xbcc7ea9c,0xbd8c9b83,0xbd91f0e3,0xbd889958,0xbd33a873,0xbd12ec75,0xbd1b48a4,0xbd7d7e5f,0xbde62c66,0xbe487615,0xbea2e75e,0xbe8a765c,0xbe75b61e,0xbe0fe42e,0xbdc94e16,0xbd8b5dd0, +0x3d759da1,0x3e17f51d,0x3d543bb2,0x3d9e3b4c,0x3dd4bc29,0x3dac1769,0x3d911644,0x3d457d3f,0x3d5ec393,0x3d4f05c9,0x3d96faba,0x3d8ba4b8,0x3d850ce9,0x3dacfb86,0x3db31a21,0x3e199fe9,0x3dfe0360,0x3e2c83a5,0x3ddcb3fb,0x3d122268,0x3b065f9d,0xbd587e1d,0xbd5bc9fe,0xbd36cc12,0xbb0e9f1e, +0x3ce1bd0e,0x3c75f519,0xbc86a865,0xbdd3a1ea,0xbe836793,0xbef6cee3,0xbee05493,0xbebe19bd,0xbe4b8d06,0xbdc371de,0xbe953255,0xbe39afac,0xbd05b0d0,0x3d843699,0x3dbc3f5a,0x3daf7aae,0x3cced851,0x3d56ca1b,0x3cfacf0a,0x3d179e89,0x3d6edff3,0x3d92ff4d,0x3daf2bc2,0x3db6a41f,0x3dbaf370, +0x3dc14993,0x3e0c46d1,0x3e181d14,0x3e4ab001,0x3dd04195,0xbd2fd8ea,0xbda6d399,0xbe503b78,0xbe6289eb,0xbe6eb673,0xbe5b1c24,0xbe64aed4,0xbe52bb9e,0xbdde7987,0xbed46ec2,0xbef30baf,0xbee51254,0xbec439dd,0xbeb73f40,0xbeb8050d,0xbe94e994,0xbf205c18,0xbd739770,0x3e5f118f,0x3e07e27f, +0x3daae663,0x3e203359,0x3dfd98dd,0x3e367c01,0x3dfd6cd4,0x3df41fe8,0x3dfcae41,0x3d8438cb,0x3d39d775,0x3cfd8874,0x3d3c17b9,0x3d8ae7be,0x3dee5346,0x3def82cc,0x3e5c115c,0x3dc193ea,0xbd468e63,0xbdcab370,0xbe93bad7,0xbec03dec,0xbef90238,0xbf11ef0a,0xbf08d23c,0xbef8758e,0xbec978dd, +0xbf029d07,0xbf09d509,0xbf07cab4,0xbee7e684,0xbee68044,0xbf0a52ee,0xbf1d5f25,0xbf1a26d9,0xbeacc3ac,0x3e309dd7,0x3d8f3126,0x3e2a4055,0x3d466352,0x3e5aa579,0x3e012c88,0x3e105f57,0x3deaeb91,0x3e684849,0x3e385041,0x3e309b25,0x3e1bd72b,0x3df809f4,0x3d99a021,0x3e349fc5,0x3e0dba73, +0x3e0d673b,0x3dae7fd6,0xbdbaeeac,0xbe378268,0xbebd5e54,0xbee45f77,0xbf0f3e1f,0xbf2d0f70,0xbf435a15,0xbf465daf,0xbf30893c,0xbee0ea84,0xbe8d6556,0xbe8273a4,0xbd7f5ef2,0xbdb2b3f9,0xbe33d232,0xbed4adfc,0xbe100876,0xbe66aacf,0xbbc9d2fe,0x3d3b3043,0x3e6783b3,0x3db4b577,0x3e25c225, +0x3e102047,0x3e19d63b,0x3e25a7f3,0x3e9d79dd,0x3e05d2cf,0x3dc55056,0x3e249c95,0x3e07a54f,0x3e428609,0x3e4a83f9,0x3e093832,0x3e6acd41,0x3d5c9db0,0xbd77518e,0xbdd1d012,0xbe625c40,0xbebebe5d,0xbefb1c69,0xbf0b6fb8,0xbf1bb878,0xbf13b99c,0xbeef851b,0xbedb5c55,0xbea5f0ae,0xbe89f2f3, +0x3ca104b2,0x3e875088,0x3f128703,0x3d4f0ea4,0xbde36ca5,0xbe8319bf,0x3b34f3ab,0x3d68aa89,0x3db8b479,0x3e398bac,0x3df31d8e,0x3d95272e,0x3e479ad3,0x3e3a7720,0x3e9633de,0x3e4123a0,0x3e2a3c18,0x3e45d95c,0x3e4b4d9d,0x3e7ce703,0x3e4928d0,0x3e6ba109,0x3eb3029b,0x3d4f6543,0xbdbb01ad, +0xbdb923a1,0xbdc29f33,0xbe1a44b6,0xbe7f9794,0xbec71d74,0xbee45ece,0xbefbd3a8,0xbefe3147,0xbecdea66,0xbe858733,0xbe4f1ac6,0x3d08ec12,0x3d912707,0x3da4b4d5,0xbd9257b5,0xbe00baa7,0xbdaac742,0x3e5b9f03,0x3e180aa8,0x3e7a1c23,0x3e4f1bc0,0x3e1cdb2b,0x3e30fafa,0x3e44fb50,0x3e6ef246, +0x3e1104df,0x3e86cc2a,0x3e6f9b5d,0x3e59758a,0x3e3d47f8,0x3e359861,0x3e144bc7,0x3e426bb5,0x3e8c99c6,0x3d952df1,0xbd8d2403,0xbcb8fd81,0xbd297d80,0xbda30f9b,0xbe0ce258,0xbe43c655,0xbe7ee1f0,0xbe8b558c,0xbe7dd17a,0xbe71dd2d,0xbe4ea09d,0xbdfbe8f4,0xbc5d412d,0x3d19fb0c,0x3dae38ed, +0xbcb5fa32,0xbc7ee9ea,0x3dcabf21,0x3ea0a6e5,0x3e4184a5,0x3ea35c61,0x3e8c158b,0x3e94c386,0x3e8a4a5a,0x3eae64a0,0x3e46bcd3,0x3eacfa4c,0x3de8aec9,0x3eb36156,0x3e5078d7,0x3eb23dab,0x3e6e18e0,0x3e8bf11e,0x3e747239,0x3e8d933a,0x3dd7c0fd,0x3b2805c1,0x3dd654c3,0x3dcb75aa,0x3d8a09f5, +0x3cdab8c3,0x3bc57ab1,0xbd4281a7,0xbdb47b41,0xbe0c9e6a,0xbe07cf22,0xbdfebc9e,0xbdf2662a,0xbd9c6a36,0xbc67234b,0x3d830d7c,0x3d8e4ac1,0x3d1930b5,0x3c8c2913,0x3f2706a3,0x3de782c3,0x3e9ffe0e,0x3e95732f,0x3e1607c0,0x3e28a824,0x3d02d2ef,0x3d99c231,0x3e47fa22,0x3d9cff78,0x3d83f432, +0x3d93d722,0x3e710bb2,0x3e45cab7,0x3e28c3ab,0x3e507650,0x3f12844c,0x3dbbfc4a,0x3de3feca,0x3e0c57d9,0x3e17e5fb,0x3e2ceb36,0x3e3a8ad2,0x3e4c27df,0x3e1d2d97,0x3e0147db,0x3dc77ae4,0x3da6a4d1,0x3d788d6b,0x3d16bd73,0x3d33050a,0x3d27a23c,0x3d04b733,0x3d296792,0xbb5409c7,0xbe05a9fe, +0x3e6e9243,0x3eedbe82,0x3f505ee6,0x3d8839b4,0x3ed11b00,0x3f40b707,0x3f461df9,0x3f44ed39,0x3f396754,0x3f46537b,0x3f4906e9,0x3f46b46e,0x3ecd102c,0x3df77361,0x3f595517,0x3ee133eb,0x3e77beb6,0xbddabe54,0x3c83d81a,0xbb5c75bf,0x3ba9b5c2,0x3c70b698,0x3cc7880d,0x3d309ff9,0x3cefd43c, +0x3cb20ee7,0x3c55641b,0xbb1a5ba2,0xbc800b5e,0xbcff5878,0xbcfc8b42,0xbd03c02b,0xbd049203,0xbd107863,0xbd7c1ec8,0x3dea6175,0x3deae939,0x3e24ee00,0x3d3e73ff,0xbd0b1360,0xbe00671e,0x3da255d0,0xbcb51c4b,0xbddfa3d7,0xbde88ddd,0xbddf0809,0xbdbd22d3,0xbdd73ff0,0xbddd7d80,0xbde049e7, +0xbca0a671,0x3d767047,0xbdf32649,0xbcd17dcf,0x3d0b1b5d,0x3e08cece,0x3dd816e0,0x3de3c275,0x3ddbfcde,0x3dd22544,0x3dc7f139,0x3dc01c2f,0x3db0b46b,0x3dabdf0d,0x3dab48ac,0x3db6a2a5,0x3dc7fedc,0x3de48584,0x3debce1c,0x3dee3990,0x3de094be,0x3df81c2e,0x3e231177,0x3e1f1462,0xbd78abb0, +0x3e0106aa,0x3d2bbf5d,0x3d18aa73,0x3d8e7474,0x3d859a96,0x3dcdfcca,0x3db115ed,0x3d78575c,0x3dac3ae5,0x3dac013c,0x3d91f12e,0x3d2fc2ff,0x3d6305e0,0x3d844d9d,0x3d8edc99,0xbc4e2ddb,0x3dfe2786,0x3e0b8174,0x3e0882b8,0x3e02a4db,0x3df29702,0x3ddc1cab,0x3dc5d10c,0x3d96f9d9,0x3d8342f0, +0x3d83d623,0x3d93280c,0x3db3bd51,0x3df0a6c8,0x3e04bbdd,0x3e12f117,0x3e097751,0x3e1c399d,0x3e714785,0x3e4a8927,0x3dee0776,0x3e04656a,0x3d4c0481,0x3d5ea357,0x3d3b5823,0x3d824e51,0x3d14b7b0,0x3da06918,0x3d4d588a,0x3dcc016e,0x3d3ff547,0x3d749407,0x3d45039b,0x3d8bc11e,0x3d61f583, +0x3d79499f,0x3d86afda,0x3de3e337,0x3e17d9a7,0x3e0aa9cd,0x3df6e2a0,0x3dc74f8f,0x3d894510,0x3d30b3fa,0x3ace92c9,0xbc822bdc,0xbc6607e8,0xba5cae55,0x3d5cd1fb,0x3e06c6e0,0x3e1dc794,0x3e2d28e2,0x3e11f38f,0x3e3f8f5f,0x3e8b0371,0x3e34f1f4,0x3dedb25b,0x3e3efda9,0x3de172ce,0x3d80b9a1, +0x3d7d674d,0x3d97f29b,0x3d9061b5,0x3d904732,0x3dc2b752,0x3d88a35d,0x3d907a39,0x3d87508d,0x3da5159c,0x3da0d27f,0x3d87060f,0x3db488dc,0x3dc89e8e,0x3e133a7f,0x3e37bdb8,0x3e399a53,0x3e2c48a9,0x3e15d37c,0x3df42478,0x3db5e72b,0x3ca414c2,0xbbd5ac29,0xbca6b1b3,0xbc87e1c6,0x3cd3acf2, +0x3ddfd70a,0x3e0a0274,0x3e2a3d1c,0x3e254d0d,0x3e5c61af,0x3f35b976,0x3f19a97a,0x3e98323a,0x3e86928e,0x3e4fbdb0,0x3e4305c3,0x3e5a48bf,0x3dfbe07d,0x3db79a0a,0x3d8c0047,0x3d8ae49a,0x3d99363e,0x3d81afa6,0x3d3ad85e,0x3d47aa5a,0x3d7a6d54,0x3da9cce7,0x3d82bcef,0x3cdd7f1c,0x3d57cb34, +0x3d8f1fab,0x3c220534,0xbd4636ad,0xbe22fc06,0xbe8b623c,0xbebf133c,0xbec9153f,0xbed9c2f5,0xbef941b0,0xbe74c6ee,0xbca883dc,0x3e8745c0,0x3ebf880e,0x3eed7cdb,0x3ef928d8,0x3f0541db,0x3f7b5ce5,0x3eae2f9f,0xbb9ebfb1,0x3e0f043f,0x3e21d98d,0x3dcdf99c,0x3de35eff,0x3dafe5c1,0x3de333a1, +0x3dcc4a72,0x3dea37bc,0x3d931e2f,0x3d791666,0x3d353b72,0x3d9f7384,0x3d97f9c6,0x3cf89400,0x3cffa670,0x3ba8408a,0x3df71a80,0x3e3756f6,0x3e37561e,0x3e73bef9,0x3e701c6a,0x3e53dd6d,0x3dfdfc49,0xbd2402ce,0xbe1ed696,0xbe6dac6e,0xbe0f8e76,0xbcd6ab0e,0x3e809452,0x3e80cd48,0x3edb0a4b, +0x3f34595a,0x3f5e84e2,0x3f6453f2,0x3f159922,0x3dd657a1,0x3e6ba00b,0x3d19ac9f,0x3e16c3d7,0x3cf8e32c,0x3dbb232a,0x3db31701,0x3dd3e1d8,0x3e2be80e,0x3dcbca7e,0x3d98f3fd,0x3d057dec,0x3d768736,0x3db862f6,0x3d20fc41,0x3e110d16,0x3e18f4e8,0x3e6534a6,0x3ec09e02,0x3ec50001,0x3ed94c13, +0x3eddf937,0x3edb13e7,0x3ed0e80c,0x3ec27bc5,0x3e9aee01,0x3e1e0aa9,0x3dae89bb,0x3e19b485,0x3eac2753,0x3e7fd248,0x3e5f8b37,0x3e6c5732,0x3f14e5c8,0x3e404463,0x3eee93d1,0x3e9ef4cb,0x3e72345c,0x3de4fbc5,0x3e32cd9e,0x3e049c09,0x3e210611,0x3df6bc3b,0x3e05bcc2,0x3e1f3733,0x3dbd953b, +0x3dba635e,0x3db4bf9b,0x3db5185b,0x3da6a04b,0x3d9d9112,0x3deb049b,0x3da9f5ec,0x3e69e977,0x3ec09dfa,0x3ebc8f7a,0x3ec52d03,0x3eb2bc8e,0x3ebc6efe,0x3ec96013,0x3ec7c90b,0x3ea7f4f6,0x3e4f6dc4,0x3dbcc0d5,0xbc5e687d,0xbd4ea109,0xbda871b9,0xbe0f9569,0xbeaed778,0xbc9f7221,0xbe1386ef, +0x3e2c21c9,0x3e5337f2,0x3e482d41,0x3e280524,0x3e1fa4c8,0x3de52c3a,0x3d5016f6,0x3d826420,0x3d859e76,0x3d9734fe,0x3de6d183,0x3dd5a6dc,0x3d36bd55,0x3c9146de,0x3ba23ce9,0x3cbd279d,0xbb4be57a,0xbd814037,0x3d124869,0x3e316e26,0x3e816be8,0x3ed0f0b2,0x3eca123d,0x3eceb001,0x3ec18823, +0x3eb03c70,0x3e893d08,0x3e203c37,0xbd151da6,0xbe4b6bb5,0xbe9009f0,0xbeba441d,0xbeac9ccd,0xbe9986e9,0xbe682eb3,0xbe4e3f60,0xbdc9bb13,0xbd942204,0xbd4dc3e4,0xbca1e228,0xbceae619,0x3bca7802,0x3d915707,0x3cb0f1e8,0x3b18407e,0xbc0c9ed2,0x3d715fac,0x3da6d8bd,0x3d770754,0x3d3ac178, +0x37926774,0xbd5f9a0e,0xbd25fea0,0xbda9b18c,0xbd53c439,0x3d4c3a2f,0x3de46f60,0x3e933870,0x3ea97494,0x3eafc871,0x3e988557,0x3e822c90,0x3e2f71db,0x3d7d50cb,0xbc7e1f73,0xbdd01152,0xbe721e1f,0xbe9e6f19,0xbea5ee63,0xbea8ae63,0xbe8849d2,0xbe78e483,0xbe58cff0,0xbe222829,0xbdd8eb85, +0xbd14b3df,0xbba68282,0x381dec55,0x3ce15e94,0x3c7ecb1b,0x3c946901,0xbb07a274,0xbbe2f6a3,0x3b8bbbd0,0xbc0214ca,0xbbc5c1f8,0xbc741fda,0xbcec9219,0xbcd6094d,0xbd662193,0xbbc3b63e,0x3d8706e9,0x3d95ad3c,0x3dd60eeb,0x3e079dd9,0x3e3a469f,0x3e7104c9,0x3e4e0bd4,0x3e37b449,0x3e2a2b51, +0x3d91f397,0xbc9d1bc6,0xbde41a52,0xbe33fe54,0xbe833b60,0xbeb0d293,0xbe93ddf9,0xbe723060,0xbe818e4c,0xbe4e4371,0xbe56d43e,0xbe474855,0xbe41a307,0xbe297365,0xbe17acbe,0xbe0b82b9,0xbe160d20,0xbe1251d7,0xbe09be49,0xbdec27e7,0xbdeb0d89,0xbde8ebaf,0xbe005412,0xbe091977,0xbe02af3b, +0xbdffc345,0xbe2ee835,0xbe394e7d,0xbe4a195e,0xbe546735,0xbe664a6d,0xbe7efb42,0xbe87f14f,0xbe8d1813,0xbe926899,0xbe9672e1,0xbe9a9cdf,0xbe9af132,0xbe9dc6c9,0xbe93e60b,0xbe882d3e,0xbe806df1,0xbe7aafaf,0xbe5a6a62,0xbe5a2728,0xbe833fde,0xbe84236f,0xbe4016d3,0xbe6e0a5a,0xbe78d44b, +0xbe49f901,0xbe4ae8ac,0xbe455f42,0xbe3dcfc8,0xbe3ef026,0xbe4087ce,0xbe3aee6f,0xbe6cc9cc,0xbe5ca5a0,0xbe2a2506,0xbe6ef217,0xbe64217c,0xbe39bc8e,0xbe3f0736,0xbe46b9ae,0xbe4bc3dc,0xbe4fc1a6,0xbe51778d,0xbe56d827,0xbe59e619,0xbe5e41bb,0xbe638f9a,0xbe63ac4f,0xbe658d88,0xbe6a52b3, +0xbe64a60d,0xbe633315,0xbe5d2508,0xbe5fed31,0xbe667e10,0x3e02a6c5,0x3df9d3b8,0x3dc84fc8,0x3e17e9d0,0x3e310c48,0x3e2f76bf,0x3e0500e2,0x3e1b0b5a,0x3e2285f5,0x3e21ed26,0x3e1f5c28,0x3e1b6f05,0x3e1bb88f,0x3e1a50fe,0x3e152b66,0x3e16775c,0x3e05e60f,0x3e17a852,0x3e18c325,0x3e0c3bde, +0x3dd2b71e,0x3deacee2,0x3df067d3,0x3dfd5f00,0x3e0208e0,0x3e0488bf,0x3e052de7,0x3e05521a,0x3e032592,0x3dffbb05,0x3dfa39e6,0x3deec9fa,0x3ddc929e,0x3dd18e19,0x3dd9d399,0x3dfb10b4,0x3df27bff,0x3df6d478,0x3e0118af,0x3e64b50c,0x3e032391,0x3e269cf8,0x3e11af0c,0x3dfb4f0f,0x3df0f151, +0x3dd4f037,0x3decb49f,0x3e0907ba,0x3dffbd76,0x3df7a171,0x3def4e63,0x3e00e7f0,0x3e011e74,0x3e052b34,0x3e013ac2,0x3e18d453,0x3de4ebae,0x3de58768,0x3dfe62fa,0x3e0e3bcb,0x3e188883,0x3e1e2e98,0x3e1cb053,0x3e1ecf67,0x3e1c7dac,0x3e12ebe3,0x3e0eee64,0x3e019b69,0x3de29f79,0x3db2541a, +0x3db1df5d,0x3df933c7,0x3df8b01d,0x3d9f0ab1,0x3de8e5b3,0x3e423d91,0x3e2488f0,0x3e3ff7a0,0x3e104f5d,0x3dfc80f3,0x3dd55cec,0x3dcd2f28,0x3db972cb,0x3e001e16,0x3dd760dc,0x3ddf857d,0x3dbd722a,0x3ddb222f,0x3ddeb7d5,0x3df5d1e6,0x3de78898,0x3e03dd3c,0x3dd52a6d,0x3dda3e65,0x3e0ae13d, +0x3e28d027,0x3e3da081,0x3e478132,0x3e406024,0x3e39e84a,0x3e287fa2,0x3e16322d,0x3e1aebd5,0x3e027155,0x3dbc7cfb,0x3d21eac0,0x3d5f1acc,0x3df46fa1,0x3dd3577d,0x3bab9b38,0x3df4fe14,0x3e401413,0x3dbdf72c,0x3e15ed68,0x3dfefe38,0x3daf9efb,0x3d7c8691,0x3d3938be,0x3d4ebc3f,0x3daff85f, +0x3d9deef7,0x3d9ff01f,0x3d847835,0x3da86969,0x3dbe4f9e,0x3db8376c,0x3dd9b77b,0x3def4e67,0x3da2122c,0x3dae780e,0x3de88b3a,0x3e182c2a,0x3e3238f7,0x3e385041,0x3e23af6b,0x3e1bcdc2,0x3e0eab6b,0x3e002fc1,0x3e0b488e,0x3e08e9df,0x3defedfa,0x3d2cf8eb,0x3d1e0177,0x3daab392,0x3d6a7f1e, +0xbe54f036,0x3dc2b3a3,0x3ec77742,0x3e89423b,0x3e8977e7,0x3e5e1ff8,0x3e1069dd,0x3e2f7b2f,0x3e0845a4,0x3dd7987d,0x3ddc6ad0,0x3db1a43d,0x3d9a2508,0x3d38b23c,0x3da8c571,0x3dc8083f,0x3dc68d53,0x3de87989,0x3e09991a,0x3e21c3cb,0x3e4d8af0,0x3e876d8e,0x3ebc38eb,0x3ed59ad2,0x3ee6e147, +0x3ee2ad04,0x3ec2483a,0x3ea93726,0x3e9438a2,0x3e7f9cf9,0x3d30bd59,0xbe6e6c18,0xbebcddfe,0xbeb38b2e,0xbe4acab4,0xbd83f1d5,0xbf36a901,0x3d49533f,0x3ed9c37d,0x3e157de9,0x3dc4a5ad,0x3e0aafbc,0x3dac29ac,0x3db06732,0x3db5e9d0,0x3dd0f627,0x3dd6bc4c,0x3dd44ab7,0x3ddaeaa6,0x3da97940, +0x3db4803d,0x3dcc3511,0x3e0c6a5c,0x3e1e18bd,0x3e351cad,0x3e21e0b8,0x3e063ce7,0x3e275e08,0x3e61dd00,0x3e837e17,0x3e9b5bcd,0x3eb662d7,0x3ecb140b,0x3ecf507c,0x3ec27e84,0x3e8e0e65,0x3e03784b,0xbe0e7a0f,0xbea8ab53,0xbf0c767d,0xbf5429f1,0xbf29f852,0xbf9b5cf3,0xbedc837f,0x3e54a29b, +0xbdb35bc2,0x3e64d250,0x3ccf3806,0x3e4bae9b,0x3dad6f0c,0x3de9520c,0x3dd021b2,0x3e29efcc,0x3d81720d,0x3cf1f792,0x3d3b7a33,0x3dcc6303,0x3e01488b,0x3e1e7f94,0x3e288318,0x3e5dc0f5,0x3e33a601,0x3de8e0b1,0x3e1903a2,0x3e185af0,0x3e184d58,0x3e0cdc50,0x3df4534b,0x3d4e8f3f,0xbbbfd10b, +0xbcc3c9bc,0xbe3910c7,0xbec55dc4,0xbf2a90e6,0xbf3ef4e1,0xbf43452a,0xbf64bb3d,0xbf7d74a6,0xbf5986db,0xbf4f2dc5,0xbe9f2782,0xbe939a62,0x3d046f39,0xbd8b8340,0x3d16b725,0x3aa5ca12,0x3db6b9a4,0x3d5abcd4,0xb98aaa25,0x3dd7f554,0x3e14b421,0x3dabdc84,0x3de03a61,0x3dd4596b,0x3dd46836, +0x3dc5ce7b,0x3e362dac,0x3e316dc7,0x3e016aab,0x3e0e6044,0x3dbb6bfe,0x3dea2f8b,0x3d0538eb,0xbde49fd0,0xbe80c40c,0xbeb1c2c8,0xbebcdb52,0xbed69785,0xbeec342e,0xbf070104,0xbf213166,0xbf28f000,0xbf1cfd6f,0xbf325cbe,0xbef362c7,0xbf0ada35,0xbec9e119,0xbe8de1d2,0xbe6429f3,0xbdc72914, +0xbd955741,0xbc106e53,0x3d1934d8,0x3d3b8283,0x3c328eed,0x3d8778a5,0x3d998ced,0x3d71bc83,0x3d9f8a96,0x3da9b0fc,0x3dee6226,0x3de0ab8a,0x3e03bbe3,0x3e19131f,0x3e358b2e,0x3e1ff02d,0x3cdeb330,0xbd70251d,0xbe09f0b7,0xbe1dc8da,0xbe6183b8,0xbe6b70b5,0xbe54b2e9,0xbda16c6f,0xbd08f3b2, +0xbdaa693f,0xbe4e9c94,0xbeae2f5a,0xbee9730e,0xbef77c38,0xbe808225,0xbe86fda3,0xbe2229da,0xbdc111ce,0xbd25800c,0xbbb2dd7a,0x3b90a5cd,0x3cf631a2,0x3ccfbb82,0x3cbe1ad2,0x3d08eb32,0x3c9f5bfb,0x3cd4d431,0x3cffde31,0x3ca1deec,0x3cd192f9,0x3d944393,0x3d4abf90,0x3d9d25c5,0x3de9ddf6, +0x3da4304c,0x3d6d3ec3,0xbcd40e17,0xbd4a4a7a,0xbd54362a,0xbc87a1ae,0xbcdf894b,0x3b3be9bd,0x3d270ae9,0x3c61a2a8,0xbc8f7005,0xbbb7dc60,0xbdaa8af0,0xbe359c3a,0xbe8753a4,0xbe8b8f96,0xbdf077d9,0xbe0a7628,0xbe2f56e9,0xbe1b1aa2,0xbe286e6a,0xbdea3297,0xbd9db193,0xbd1b0285,0xbd124e39, +0xbc83202f,0xbc4e7abe,0x3ac411b6,0xbb851713,0x3a46d4f4,0x3b871295,0xbbf81185,0xbcc18e64,0xbce9406a,0x3b97b518,0xbda83160,0xbe265502,0xbe2e7abb,0xbe4db31a,0xbe556326,0xbe720336,0xbe86d3dd,0xbe890737,0xbe8ca7dc,0xbe8f2373,0xbe784c26,0xbe57245b,0xbe3ba6b0,0xbe27032a,0xbe0fe12c, +0xbe0b556f,0xbe094be3,0xbcad3306,0xbc1dad56,0xbe1385c9,0xb9cdd4af,0xbd142c00,0xbce577c9,0x3b42ee95,0x3c2499b5,0x3ce7c566,0x3c4418c4,0xbbda74ad,0x3b3e8784,0x3b74d21a,0xb9f22cc1,0xbd2807f8,0xbd531358,0xbd333a1c,0xbd78de6e,0xbdf4306a,0xbd93a785,0xbd8835b8,0xbd912a0c,0xbda57c1d, +0xbd9efc79,0xbd8eb237,0xbd874e81,0xbd7fca31,0xbd637c9d,0xbd505561,0xbd4c048c,0xbd5243c8,0xbd4b7606,0xbd41cd21,0xbd3e0240,0xbd2029e6,0xbd049ead,0xbad0cbbb,0x3d064854,0xbd8a4fa2,0xbde93f96,0xbe49f8f8,0xbc5cd2af,0xbdab01c0,0xbe1ef02e,0xbe24d939,0xbe20313c,0xbe1b6663,0xbe1fa97c, +0xbe23f7bf,0xbe224e76,0xbdaff166,0xbd06249c,0xbe3b54d6,0xbddc5b60,0xbda16f38,0xbc2fb3e0,0xbcf0431d,0xbd03980b,0xbd0a4e89,0xbd2cdb0e,0xbd578c42,0xbd8108db,0xbd59dce6,0xbd3cdf5b,0xbd1dc2b8,0xbd03454e,0xbcc750cc,0xbc89f425,0xbc427afc,0xbbdbe5a0,0xbb2604d0,0x3ac572b0,0x3c6eb69e, +0x3d0b0b0b,0xbbcf0f57,0xbc8abd97,0x3d211b76,0x3d928063,0x3df4d008,0x3d136d16,0x3da539ed,0x3ddcae7d,0x3de2c84b,0x3de5ed54,0x3dea011e,0x3df55d82,0x3df82c8a,0x3df3ea43,0x3daa6f5e,0x3d5fc201,0x3e03010d,0x3db41c2d,0x3d8b3e2f,0x3cb580de,0x3d08929d,0x3cfe7c6f,0x3d0d3a89,0x3d1722da, +0x3d2582be,0x3d348f00,0x3d49c1e4,0x3d6214c4,0x3d80c438,0x3d788504,0x3d5e37de,0x3d36a415,0x3ce97b82,0x3c4946ad,0xbc275a90,0xbc3c515a,0xbd8fde97,0xbd62af55,0x3d69a6d6,0x3b05cc96,0x3d300b7f,0x3d24230b,0x3d0ceb8d,0x3d491277,0x3d327536,0x3d5db8e8,0x3d94be8c,0x3d7ea231,0x3d736fe3, +0x3d6730db,0x3d9264f8,0x3d81801d,0x3d8882ef,0x3d8667d0,0x3dc80d4d,0x3d2c716a,0x3d0edd27,0x3d1d6791,0x3d3f0e81,0x3d4bf452,0x3d656357,0x3d863ced,0x3d9a95c4,0x3db88099,0x3de6a887,0x3df8bf84,0x3de85a6e,0x3da988ca,0x3d3b456b,0xb9dbb591,0xbd6534b7,0xbd8a99b0,0xbe387895,0xbe0507b8, +0xbd80d424,0xbd4288ab,0x3c55942f,0x3cb39f65,0x3d04cf04,0x3d3870a9,0x3d7fa0cf,0x3d730c13,0x3dc0b4ed,0x3d8a0491,0x3db46dec,0x3d713d6d,0x3d99f873,0x3d88c71d,0x3d9d7ee4,0x3db3b547,0x3da05782,0x3d7aae83,0x3d212f10,0x3d305974,0x3d761eea,0x3d94e320,0x3dc2c682,0x3e01148b,0x3e1fcd67, +0x3e4a2dd0,0x3e6caac8,0x3e63fb9a,0x3e3867f2,0x3de21bc5,0x3d1d3a46,0xbd709096,0xbe2b97bb,0xbe3529de,0xbe5fc216,0xbe2f013f,0xbdb207b4,0xbd4d16fc,0xbcce4b6b,0xbb92ff28,0x3ab8d1ab,0x3cf60455,0x3d1f52b4,0x3d5dc0d1,0x3da0d108,0x3da553cf,0x3d9eeb83,0x3d78323a,0x3d8ff982,0x3d92cedf, +0x3dd43656,0x3dadf79b,0x3da8b7d7,0x3d994d00,0x3d5b3aaa,0x3d5cbe7a,0x3da42fe5,0x3db51215,0x3de6f7e7,0x3e1a2383,0x3e3e409c,0x3e6c8d3b,0x3e97a73f,0x3ea8eb18,0x3e976d77,0x3e49671f,0x3db3fdff,0xbd4de42d,0xbe50dea3,0xbe5c0415,0xbeea4969,0xbef3914f,0xbecb9530,0xbe526429,0xbe099546, +0xbd9336b6,0xbd2f7f6c,0x3afd816b,0x3ca7a317,0x3d55a27a,0x3d9724fe,0x3db0c1ba,0x3db6560e,0x3d881a5b,0x3db03263,0x3dba2859,0x3de01fd6,0x3e013730,0x3e0e2c7a,0x3dcd49bc,0x3d20b915,0x3d3ed20f,0x3d81ddbd,0x3ddf19fe,0x3e3da5b3,0x3e934e42,0x3ec401ff,0x3edbbfc8,0x3ee40a30,0x3e44922e, +0x3da3d8eb,0xbc7d411f,0xbdd80b2b,0xbe848c3e,0xbef4605a,0xbf09b76c,0xbdbeb739,0xbef32538,0xbf043680,0xbe7e4085,0xbe2fc87e,0xbda16a51,0xbbf8a049,0x3d2ece17,0x3d665a1f,0x3d9f3f33,0x3dddaf48,0x3dab26b0,0x3d9766fe,0x3d50eaf1,0x3d9d372a,0x3dac896f,0x3db46605,0x3dd398b5,0x3df2fa4f, +0x3dc70903,0x3dedaa8b,0x3e0ad79b,0x3e00f1d1,0x3e01871b,0x3dceae84,0x3d8608c9,0x3bf09de7,0xbd91c1e1,0xbe0c8f26,0xbe924010,0xbec5a76d,0xbeee1808,0xbe4fc249,0xbd2be595,0x3df36b42,0xbd955299,0x3f28bd87,0xbe1664e1,0xbf0dda47,0xbe313c40,0xbea27d10,0xbdd7c3d8,0xbdfe1e58,0x3a3589c8, +0xbab67eb4,0x3d05cca6,0x3dc5b229,0x3daf58be,0x3db13f42,0x3dae288a,0x3dc07440,0x3daf40af,0x3de05542,0x3da228ed,0x3db250be,0x3db3f3dc,0x3d7905d3,0x3d08df53,0xbc0a0df8,0xbde82a5a,0xbe2bab0d,0xbe37ae1e,0xbe4a1cc3,0xbe75aeae,0xbe9af05e,0xbec031f7,0xbed08ece,0xbe9e079b,0xbde6d265, +0x3dd8abb8,0x3f0418c0,0x3f044bd7,0x3f23efc9,0x3ee1a3c7,0xbdb18cfa,0x3dca88dd,0xbe0bd783,0x3d0a3fed,0xbc5aea89,0x3c71f6b0,0x3d4d6aa7,0x3daadc22,0x3ccbcb78,0x3dd6ca71,0x3db0e022,0x3d1e13af,0x3d10810c,0x3d489985,0x3d69388a,0x3d28d1f0,0x3da65b68,0x3c038bcc,0xbd5c89f8,0xbd060c79, +0xbbb71193,0xbcd0b1ce,0xbc6a0c29,0x3c24c7db,0x3db2235d,0x3dc96bae,0x3cfb3c94,0x3da7c2e7,0x3de4c577,0x3e32784e,0x3e481d1a,0x3e258592,0x3e0d1342,0x3eb2ad9e,0x3eade68d,0x3ec6d31e,0x3df5826e,0x3df3248b,0x3dece391,0x3bc82fb1,0x3d487c20,0x3da40871,0x3ba31960,0x3c9d7855,0x3d26e1dd, +0x3d692b37,0x3d73e51b,0x3d77699c,0x3d948402,0x3d87ed60,0x3c769125,0x3d422a74,0x3de8f4c8,0x3ca3bc35,0xbd865561,0xbd973289,0xbdbf985a,0x3c9dcc31,0x3de29065,0x3e3ba347,0x3e81d4d1,0x3e91700d,0x3e8ca8d2,0x3e0e88fc,0x3d7e21f6,0x3d9f8c0f,0x3da8d8ab,0x3e120b90,0x3e58d7c8,0x3e830a76, +0x3e6032ab,0x3e6b6b8d,0xbbc5df84,0x3c8f10cb,0xbcaa7b1c,0x3c265107,0x3d257907,0x3b9ce0d7,0x3d1dd7cf,0x3d2343e2,0x3d3717c7,0x3c6a5fe4,0x3cb3735b,0x3d63ea31,0x3d0feb3b,0x3d244c1a,0x3d26c780,0x3d332519,0x3cca677b,0xbc8655cb,0xbca8834a,0xbd413259,0xbdaa644a,0xbd8af9d5,0xbd3afb28, +0xba920aab,0x3cc9e7ea,0x3c8abc15,0xbbc04603,0xba2f9a82,0x3c085928,0xbca36c2e,0x3b9dcd6d,0x3d873a03,0x3e333efa,0x3e37f15e,0x3e10a15a,0x3dcd15d3,0x3da58384,0x3df8a47e,0x3dbd2c84,0x3d89ea7c,0x3d1dadf2,0x3cb63c44,0x3c5852e7,0x3d2006dc,0x3ca4ae93,0x3d7ec6ef,0x3c041e3f,0x3d1db950, +0xbc595c5e,0x3b6448d0,0xbc16e15c,0xbcea3561,0xbda1cca4,0xbb19533f,0x3d70ca45,0x3c98dee8,0x3cd03b1b,0x3c5826cd,0x3c044047,0xbc12602d,0x3ce16555,0x3d751ca1,0x3db7e60a,0x3da8c99f,0x3da6c618,0x3db35dc3,0x3de3e736,0x3dfe5ea7,0x3e1b10ba,0x3e08d333,0x3e0db9a2,0x3e15d7ff,0x3d3d3c40, +0x3dcf2aba,0x3d9e436a,0x3dabd67c,0x3dcbf484,0x3dc56ffa,0x3ddc5df8,0x3de6768c,0x3dc68f63,0x3de75fd2,0x3de39b6a,0x3dee9f35,0x3dadf520,0x3dd05e02,0x3dbe2b92,0x3dbb0b8c,0xbb2ebc1a,0x3e0ea3f0,0x3e08acc7,0x3df498f5,0x3df4cc81,0x3ddb6ad5,0x3dcbabe1,0x3db2a5c9,0x3de83382,0x3dfaeab2, +0x3e09907e,0x3e14de25,0x3e21ffd1,0x3e29c1d6,0x3e2263e2,0x3e1ca075,0x3e18c57b,0x3e12cc1b,0x3e03bc87,0x3e11a57b,0x3e0884ca,0x3dd42a3f,0x3d27963e,0x3e0aa8f7,0x3dc2d23c,0x3d3781c5,0x3d2ea0d8,0x3d1c447a,0x3d26f16e,0x3d05d958,0x3cfa1635,0x3cf3fdad,0x3dba4ef3,0x3e02bafe,0x388e8c64, +0x3dab3adf,0x3deb1536,0x3e2c5620,0x3e0efdc6,0x3e19f95f,0x3e19733c,0x3e1d3e59,0x3e222a18,0x3e23d988,0x3e20bb94,0x3e1dd134,0x3e1b9a14,0x3e1a7899,0x3e17feb2,0x3e17f00b,0x3e1333ce,0x3e100d22,0x3e0b74d4,0x3e0bb0ca,0x3e1974cc,0xbd2448f7,0xbc59e8ff,0xbc34014a,0xbcd3cc3e,0xbce0c04c, +0xbb7c919e,0xbcf658cb,0xbccaa027,0x3c6dba74,0x3c7ecc72,0x3c941ba9,0x3c8b4986,0x3ca43c30,0x3c9db89e,0x3c91cd1e,0xbca83e20,0xbd15a556,0x3cafcca4,0xbcaa4047,0xbd016e35,0xbd253da3,0xbd07ea33,0xbd1bb3d2,0xbd2d7b7a,0xbd32432d,0xbd3fe254,0xbd53b494,0xbd694cbd,0xbd84da92,0xbd99c025, +0xbda56b6b,0xbda3069d,0xbd9976e1,0xbd5899cb,0xbd0edb6d,0xbc1b7449,0xbc215a26,0x3d3e448f,0x3c14b7d5,0xbd68bc64,0xbc00d877,0xbce95dc6,0xbc870fd9,0xbc819334,0xbb3b756b,0xbba61020,0xbb8888be,0xba7edbf6,0xbbffabc7,0xbc0469cb,0xbc74d1e1,0xbbdbd0f7,0xbc79ad82,0xbc9abd72,0xbc98e288, +0x3bdcf442,0xbd07c4c2,0xbd0fbff4,0xbd28744c,0xbd5f0dc0,0xbd667af3,0xbd83041c,0xbd9b1564,0xbdaad673,0xbdd67b9e,0xbe0d7738,0xbe2e3177,0xbe31301e,0xbe165692,0xbdb68909,0xbd021a7a,0x3d0e7b10,0x3d26ed9d,0x3e25ba5e,0x3d540491,0x3ba889a2,0x3d148b1e,0xbc06b764,0xbaad3c42,0x3c0619aa, +0x3d2ea7a3,0x3d34ca70,0x3d192e8a,0x3d2dbf55,0x3cc8fbbf,0x3d081328,0x3a0531d0,0x3c50a3cb,0xbb1d92c1,0xbc320b87,0xbba2fc00,0x3ac76230,0xbc728da4,0xbd0fc76e,0xbd261ff7,0xbd8fd26d,0xbd994920,0xbdb7d5bb,0xbdf286b2,0xbe09252c,0xbe39b854,0xbe7142e4,0xbe91459a,0xbe947481,0xbe78c529, +0xbe037d1e,0xbc57a4ee,0x3dfd6c81,0x3e0a03c3,0x3e906ab0,0x3dbcf157,0x3ce003dc,0x3da96944,0x3d2223f0,0xbb2da2d8,0x3c8d82d1,0x3d88f266,0x3d8284b2,0x3d8b5c9c,0x3d9968bb,0x3d981d8f,0x3d76ae55,0x3d027d74,0x3d2ec525,0x3ce210f7,0x3d71adc7,0x3cf9c1c6,0x3d67f1ec,0x3c2b2af9,0xbd13d870, +0xbd2346aa,0xbd9c0bfa,0xbd9cd554,0xbdc5c60e,0xbdf05f14,0xbdfd7951,0xbe34d7c3,0xbe8e5e96,0xbed04851,0xbee6f5b3,0xbec1a48a,0xbe49cec4,0xbc815853,0x3e55b8d8,0x3e6bd135,0x3ebed04a,0x3e7844bc,0x3d634175,0x3c5558a4,0x3d82288b,0x3dbeddfc,0x3df73223,0x3d98da11,0x3d9498f7,0x3d8271b9, +0x3d66afac,0x3d80876e,0x3d83fdff,0x3d64d347,0x3d36bb97,0x3ca35fb5,0x3cf560f7,0xbcc0e262,0xbbf08588,0xbca7cfd7,0xbd4165be,0xbd715806,0xbe1a5c74,0xbe339834,0xbe6e5656,0xbe96f2d0,0xbed634e5,0xbefe349d,0xbf13ff72,0xbeda7f6d,0xbe8eef54,0xbe18930b,0x3c757b31,0x3e2bef1d,0x3ebb2948, +0x3eb7bad3,0x3de2459a,0x3e46554b,0x3dbef849,0xbb679f4d,0x3b2a4073,0xbd442fd8,0xbd37d77d,0xbd2c00a2,0x3a52e3b4,0x3d0f6d93,0x3d9c09b5,0x3da478ff,0x3da1bbcd,0x3d563c24,0x3d77bb41,0x3d48cff6,0x3d673fff,0x3c9a5b9c,0x3d271824,0xbd735021,0xbe0b0e20,0xbe15245f,0xbe5a6576,0xbe990754, +0xbeca7146,0xbef9c9e9,0xbef9932d,0xbef3db66,0xbf0304e7,0xbe81b156,0xbd8c7967,0x3dfdd452,0xbdac24cb,0xbe1c8943,0xbe0f3688,0x3d19053d,0xbf1e7421,0x3da009fd,0x3eafdbc5,0x3da1307c,0x3e439e3d,0x3daf19cc,0x3dc969a9,0x3ca96bd5,0x3d985adb,0x3d6e65b8,0x3cd4572a,0x3dcbfaae,0x3dcc8f10, +0x3ccdefbf,0x3d2bdef8,0xbc8e0104,0xbcd7665c,0xbdbb57cf,0xbdb0d4e0,0xbe02b3bb,0xbe38ee18,0xbdf50ace,0xbd85522c,0xbb853c2b,0x3cdbf4a7,0x3cc5aa00,0x3de818f8,0x3e4ce312,0x3e84b378,0x3ecfaba8,0x3efb4a94,0x3ef94142,0x3e25db3c,0xbe1889e7,0xbf2f3adb,0xbf18bae9,0xbf184a3d,0xbec1282a, +0x3d93bece,0xbe0e9775,0x3d8088fd,0xbd119bc3,0x3ca2bdb2,0xba87b04b,0x3d98bf07,0x3d9ce9c5,0x3d243cd9,0x3d97dd82,0x3d628daa,0xbceae2cb,0xbd208210,0xbd3b33f8,0xbda0b85b,0xbd9dc9dd,0xbd932c30,0xbdd3a5cb,0xbc7e9afa,0x3d1b34f3,0x3d8667bc,0x3e187a5a,0x3e77eaf0,0x3ea7c6fb,0x3ec7b5fe, +0x3ef4cf09,0x3f16da30,0x3efd8191,0x3ec5e5c5,0x3e87f7b0,0x3d880788,0xbd064590,0xbe288100,0xbe9031a1,0xbdd75b88,0xbe2cef2c,0x3c714bcd,0xbcb0365b,0xbd1d0a76,0x3d436483,0x3d1a8baa,0x3d27a12d,0x3db6e02e,0x3db666c9,0x3db426c1,0x3d926640,0x3d8314ee,0x3d3f8798,0x3c2c5277,0xbca4402b, +0xbccd4981,0xbd906ad4,0xbde4e24c,0xbdff09d9,0xbd6e99ee,0x3cdf5479,0x3e467df9,0x3e70f976,0x3e8bc922,0x3e8e0a8c,0x3e95ad9d,0x3e8c3772,0x3e7a12ae,0x3e8a17d9,0x3e6461b7,0x3dd85601,0x3abcea5c,0xbda94ddc,0xbe21ccf6,0xbd885f25,0xbd8d88bb,0xbdba383a,0x3de287a4,0x3da6e6f1,0x3dda7cc6, +0x3db9a2e4,0x3d31f1a9,0x3d1b6a55,0x3c935697,0x3d0973c0,0x3d7458f4,0x3d9df3ae,0x3da441a1,0x3d8e0144,0x3dbea3f0,0x3dabbe91,0x3d3b9585,0x3d19defe,0x3ca96fbc,0x3d37b8d2,0x3d827243,0x3dbec010,0x3e2f99a1,0x3e2901e9,0x3e1fc34b,0x3dfc15df,0x3dbfcfb5,0x3daa044d,0x3da16073,0x3d24d7bb, +0x3b1bd545,0x3badf64a,0xb9ce941d,0xbc8449ef,0xbda66610,0xbd25a3be,0xbd01d262,0x3bcc1bbe,0x3cfb6f73,0xbc621890,0x3c7f1553,0x3c9211ef,0x3d21a346,0x3d2f758c,0x3d897e9c,0x3d2f1749,0x3d8f1477,0x3d3fd5fc,0x3dc80388,0x3dc3ada9,0x3e065cb5,0x3e1b7218,0x3e3ed689,0x3e4e5082,0x3e56eaf1, +0x3e60074d,0x3e4bf865,0x3e4bb2d0,0x3e374586,0x3e36c06d,0x3e3b54db,0x3e491ff9,0x3e1ced08,0x3de594da,0x3d92e5c3,0x3d8535c1,0x3d73ee02,0x3d4ee612,0x3cbe38d3,0x3beb45f2,0xbc0e47f2,0xbbf7a850,0xbbeada24,0xbc2f7383,0x3e00ed78,0x3ce96cdd,0x3d8aae93,0x3d6b38f8,0x3cd94320,0x3cf4cfe1, +0x3bebc83b,0x3ca16eab,0x3d2b9230,0x3cde6e16,0x3cc21382,0x3ce522c7,0x3d887304,0x3d8de90e,0x3d9f1fe9,0x3db07126,0x3e295592,0x3dc22232,0x3da8b6ae,0x3dbefd7b,0x3dc28180,0x3dc40478,0x3db3b037,0x3dad1846,0x3d6c2ba9,0x3d365a30,0x3ce55ee6,0x3c734e02,0xbb13da5c,0xbc85b5a9,0xbc2e286f, +0xbbf901cf,0xbc10eed2,0xbbb8d277,0x3c454e91,0xbc75f63b,0x3d3c2486,0x3db3b751,0x3e170551,0x3ca94ba6,0x3dad770b,0x3e1051f8,0x3e169d45,0x3e172ab9,0x3e10c6ef,0x3e19937a,0x3e1dd548,0x3e1acf91,0x3dc80346,0x3d56e980,0x3e344178,0x3df8abe6,0x3dbe4bce,0x3ca586bc,0x3d2043c3,0x3d09e84c, +0x3cffb4da,0x3cfcf542,0x3d02e139,0x3d1260ee,0x3d00e682,0x3ce16b9a,0x3cbf17b3,0x3c8af414,0x3c476c1c,0x3b96b44c,0x3bc91878,0x3bbfb65e,0x3be047ff,0x3bb9a7c1,0x3c660a72,0xbcd8b2f0,0xbc824e46,0xbcdf9f77,0xba02258b,0x3b914f86,0xbc0a8434,0xbbf30d09,0xbbbd96d7,0xbc76d548,0xbc626f65, +0xbc7d798d,0xbc9b9ef8,0xbc947169,0xbca278a6,0xbcc2486a,0xbc6acc9e,0xbc855e29,0xbcf3e3aa,0xbca7dbde,0xbcb4722d,0xbd057816,0xbd02bee2,0xbd05a587,0xbd01d4d7,0xbd056652,0xbd05882f,0xbcf8756b,0xbd02bb6e,0xbd026016,0xbd010063,0xbcf9454e,0xbcfc3f9f,0xbd064520,0xbd181ad4,0xbd11decb, +0xbcd73b31,0xbcbba45d,0xbc9aac0c,0xbada57a5,0x3d92426d,0x3c742e09,0x3cfb2886,0x3c8043e6,0x3be22d97,0xbb231d10,0xbb03f3f9,0x3b21ad56,0x3ab3fb77,0x3aff43f9,0xbb46051b,0xbc08684e,0xbc55a018,0xbc9f70e7,0xbcbda665,0xbcefd2d8,0xbcfbb035,0xbd30c4cf,0xbd41fd84,0xbd3cef70,0xbd2dbc02, +0xbd283bd0,0xbd1c2346,0xbd0ca581,0xbd2ab887,0xbd33f5e0,0xbd2ee685,0xbd243261,0xbd3441dc,0xbd437e3d,0xbd88bd3d,0xbd7c312a,0xbd0c16ef,0xbcb03ad6,0xbd50005a,0x3c345e2d,0x3da80308,0x3d3e5c1c,0x3d976813,0x3d3300b0,0x3d0a7101,0x3c8375c1,0x3ce5d63f,0x3cb52645,0x3cc28632,0x3c8ff931, +0x3c8a77aa,0x3b117f6b,0xbb2d63e1,0xbc7210d2,0xbd030624,0xbd0d8949,0xbd323216,0xbd80beec,0xbd93846d,0xbd94c588,0xbd88aecb,0xbd973429,0xbda331ad,0xbd9e5906,0xbdc97234,0xbdd230a7,0xbdcc979e,0xbdabfd85,0xbd899079,0xbd7b5cc0,0xbdcb1ee5,0xbdd2b734,0xbd5f606e,0xbd254e28,0xbdafa093, +0x3d6c906d,0x3e2a5213,0x3db9d065,0x3decdd53,0x3de36281,0x3d9f979b,0x3d4985ca,0x3d46c1c9,0x3d468d13,0x3d6f30fd,0x3d7948ee,0x3d2f9b16,0x3c270e33,0x3c8ce7cb,0xbb2a776d,0xbc91c7c3,0xbd0ed84c,0xbd2a15e4,0xbda02b6e,0xbdab3886,0xbd9bf5a6,0xbd890ad2,0xbd8d4365,0xbd8998dc,0xbd8faac2, +0xbde68459,0xbe07afa6,0xbe05c448,0xbddfe531,0xbdbb97a4,0xbda2bd4b,0xbe17e2f9,0xbdf8a57b,0xbd3d3268,0xbcc1b16b,0xbefb201e,0xbea40701,0xbd885212,0xbd9db79b,0xbd8d247b,0xbd46e861,0xbd5d5496,0x3ca3f9b4,0x3d49f540,0x3d661d3f,0x3d6877e2,0x3d6ef07b,0x3d67f0cf,0x3d31f78b,0x3cc715dd, +0xb9b7b230,0xbbdfb41a,0xbd305392,0xbd86796c,0xbdf1fb33,0xbe176c93,0xbe2b38f0,0xbe446b96,0xbe55ec2c,0xbe82cfe9,0xbea7ecb2,0xbe97d950,0xbe85ebeb,0xbe324ce1,0xbdcfc71e,0xbd83b34c,0x3c32a090,0xbe0f24c1,0xbe90a9a9,0xbeed83ee,0xbedef99d,0xbee3300f,0xbeaa3a89,0xbe0d1ab9,0xbdb307d4, +0xbd89a582,0xba8272ca,0x3c3f8c81,0x3ac15898,0x3c14a01d,0x3d0a8d22,0x3d3007df,0x3da11e14,0x3d9a9f9f,0x3d146d53,0x3ca64a14,0xbbea2f91,0xbd46d659,0xbd96d764,0xbe00545a,0xbdaebe82,0xbd7ec10e,0xbd33bc11,0x3d36ff07,0x3e26b507,0x3e98168e,0x3ed86e8b,0x3efa1867,0x3f0dee81,0x3f2c975c, +0x3ef28b91,0x3e9df536,0x3df82114,0x3da2c3cd,0x3ce9f01c,0xbd8b7c70,0xbea6016a,0x3e9c04ec,0xbeb59e12,0xbee82250,0xbe498acd,0xbe476c52,0xbdce02ea,0xbd7f8d1f,0xbce00374,0x3d46fcc9,0x3d883eb1,0xbc363fc0,0x3d8cfb87,0x3d20702f,0xbd6a1dfa,0xbd8534e4,0xbda25dfc,0xbe07509e,0xbd9a0019, +0xbdbde3b7,0x3bab57fd,0x3e22c58e,0x3e5a680a,0x3eb80992,0x3f027ad6,0x3f1984ae,0x3f1e9ab5,0x3f151c58,0x3f06a47e,0x3ef5c99f,0x3eafe59f,0x3e6b7a21,0x3dcfc552,0x3e6366e0,0x3ead9a29,0x3f307bc9,0x3eddde2a,0x3efcf674,0x3e122708,0xbe4df7b6,0x3d0e7071,0xbd9ca4aa,0xbb57d1d0,0xbc1a287d, +0x3aac3954,0x3ca75447,0x3d00a65f,0xbd2e646a,0x3d5ca1f8,0x3d95cfde,0x3d0169ec,0x3d285275,0x3c352ff4,0x3bd1a839,0x3c2cd2f3,0xbd0f8a24,0x3d9e51d9,0x3df0aad9,0x3dec1e4d,0x3e23bcfb,0x3df43cb1,0x3ddfc83a,0x3dfcc618,0x3d6bab90,0xbcf55bcf,0xbe12f41c,0xbdf50e03,0xbe00d34c,0xbe0f1fd4, +0xbd1058d4,0x3d85d8cc,0x3e9db44a,0x3e8af619,0x3daf587b,0x3db132bc,0xbce1f6f4,0xbd07d026,0x3b2d481c,0xbc8c06a6,0x3b235e35,0xbc4d2ca6,0x3cec60e6,0x3d434d6f,0x3d2ce08c,0x3d10b756,0x3cc1904b,0x3c99f5d0,0x3cb0fabc,0x3d0f84b7,0x3d8879d4,0x3d817a26,0x3cf01bb9,0x3ddd62ca,0x3dc76225, +0x3d7b9d13,0x3c49687b,0xbd557b00,0xbdffe7ad,0xbe4ee5dd,0xbe894c86,0xbe9c3c82,0xbeafb8da,0xbeb2ef7f,0xbe9f8ada,0xbe73cfa7,0xbded3802,0x3b2801fa,0x3e3f1cb1,0x3dd01bd3,0x3d1b5b67,0x3d7bf647,0xbd3c9bfb,0xbcc56fbb,0xbcd78f9e,0xbd25417e,0xbc59c785,0x3c105249,0x3d1c0c1b,0x3d2af897, +0x3ce35294,0x3d5c3c4d,0x3d5a0ffc,0x3cca707d,0x3c9c1b98,0x3c8371f2,0x3c3bf158,0x3d0c1b3c,0x3d86e19d,0x3cb49f6b,0xbc93fcff,0xbcfb59ab,0xbdbfa88b,0xbe018da3,0xbe1b4171,0xbe34651c,0xbe2ad75b,0xbe298688,0xbe254e3d,0xbdfe0d1f,0xbda2d397,0xbd5a4c23,0xbd30695e,0xbd1d4cb0,0x3ba17fc5, +0x3c45ca76,0xbcdabc20,0xbcd314d2,0xbcaf99f5,0x3c3e3c85,0x3c6fe1b0,0x3c59bb47,0x3ba8a65f,0x3b3dd663,0x3a90b92b,0x3c222e76,0x3c5af77d,0xbb08d912,0x3c4cb196,0xbc6e67d8,0x3c97e170,0xbc6f3472,0xbc917aa5,0xbcd1bd56,0x3aa28467,0xbd9a4cfe,0xbde38b72,0xbd9c99d1,0xbd900f0a,0xbda2f9a1, +0xbdcb67bd,0xbdf4b889,0xbdd9820b,0xbdc1a0cb,0xbdaafc14,0xbdb85fd5,0xbdced370,0xbde72a1a,0xbdbd36fe,0xbd9f62f3,0xbd9ba2e9,0xbd6e4b18,0xbcf1eda8,0xbd036120,0xbd5b34e7,0xbd430402,0xbd4f202c,0xbd246aaa,0xbd087ff2,0xbd03995f,0xbcc5d551,0xbcc62a59,0xbc6fb2e1,0xbc7d05db,0xbbf78a70, +0xbbc96e74,0xba98b496,0xbc8b6c64,0xbc82e800,0xbc6e2d7e,0x3cb953c9,0xbd4b9f26,0xbd36a9b5,0xbd48e7e8,0xbd66532a,0xbd5cbc94,0xbd3f8896,0xbd2b83e4,0xbd257004,0xbd28efe3,0xbd1dc2ef,0xbd17f516,0xbd03b618,0xbcfac32d,0xbd061b0b,0xbd108e11,0xbd04561e,0xbcff467c,0xbd1d19ee,0xbd0b9a20, +0xbcf245c2,0xbce66922,0xbc4bbb3a,0xbd0aa8c0,0xbd039914,0xbc972089,0xbc8954f4,0xbc6f4837,0xbc52730c,0xbc04b3b9,0xbbce952f,0xba8b1ff7,0xbcb2fca7,0xbd0b2f31,0x3c234c9a,0xbceff636,0xbd32b431,0xbd7b9e82,0xbd456354,0xbd591f17,0xbd5372d9,0xbd5c0fa3,0xbd6d1d92,0xbd7e40d4,0xbd74aa29, +0xbd69cede,0xbd61bb69,0xbd53f818,0xbd47a5d0,0xbd356d13,0xbd2c2dff,0xbd21d884,0xbd1c6516,0xbd1c635c,0xbd3459fa,0x3ab9d7d8,0xbcaf4268,0xbc3ae665,0xbd4ba1da,0xbd580a68,0xbd299761,0xbcef03c7,0xbd3027c4,0xbd47b6f0,0xbd3db155,0xbd355ffd,0xbd27c4ce,0xbd304f37,0xbd3740ec,0xbd310ac6, +0xbd2fb899,0xbccd56aa,0xbd519d74,0xbd3503d6,0xbd006cc4,0x3c993031,0x3b985ec2,0x3c1d8d94,0x3c635dac,0x3c86d8c4,0x3c9af57c,0x3cb0c4e6,0x3caafa23,0x3ca9d4fa,0x3c984176,0x3c8b87bc,0x3c629a40,0x3c585056,0x3b20e7a6,0xbc023838,0xbcef9d7d,0xbcb23e5a,0xbd94beca,0xbd973fad,0xbd9b42c3, +0xbd0d7107,0xbd172462,0xbd0f45c7,0xbca7faf3,0xbc61077e,0x3c0c0701,0x3b45becf,0xbc5944d2,0xbb3d1b73,0xb98c7cb7,0xb9b20437,0xbc9d755c,0xbc895404,0xbc9c94ae,0xbc430539,0xbd48756e,0x3c53ca8a,0x3cb9a461,0x3cc1a576,0x3d16d19d,0x3d2ad4f1,0x3d409004,0x3d4c5b12,0x3d388fb0,0x3d1f45a0, +0x3cf28983,0x3cf762ee,0x3cd05148,0x3c9595b9,0xbc02e1f9,0xbd293ca5,0xbdcb59f6,0xbdb4c37f,0xbe01b050,0xbe05fd01,0xbdeef8fe,0xbdb02ff3,0xbd5c02d5,0xbd0b3ebf,0xbcd53d53,0xbca39318,0x3aeb41b2,0x3c9d744b,0xbb9433a4,0x3c78381a,0x3b527917,0x3c8a8087,0xbc907129,0xbc85f581,0xbc029bb2, +0xbc5d38fd,0xbcdaefbb,0x3c7cfe24,0x3d27ebcd,0x3d325142,0x3d93e1ff,0x3db1f765,0x3dd2ef9c,0x3dee8133,0x3de711d4,0x3ddf9144,0x3db9274f,0x3daef25f,0x3d9184cb,0x3d8da153,0x3c51ec9f,0xbd3bc0db,0xbe31dbe2,0xbe141adb,0xbe5f7623,0xbe65abab,0xbe3d80f8,0xbdc3a1e7,0xbd950931,0xbd320971, +0xbcbfead4,0x3c23176c,0x3d4a1c1e,0x3d5cd972,0x3d32a4e4,0x3d4e0185,0x3d121055,0x3cdf5830,0x3b66e7b4,0xbb0955e7,0xbce0adcd,0xbbc5c93d,0xbd1ba2b8,0x3cfdc0ff,0x3d8eee48,0x3d8a9d87,0x3dd25a2d,0x3ded87bc,0x3e058250,0x3e086cf1,0x3ddec660,0x3da14c6b,0x3d2730f9,0x3d6d55c0,0x3d86d1f2, +0x3d57bd51,0xbd020c15,0xbe224b96,0xbeb4c59d,0xbe9a5a8a,0x3e58637f,0xbb2031ad,0xbe501615,0xbdd9e512,0xbdcd2293,0xbd945788,0xbd12a08d,0xbd7e81f9,0xbc8858ac,0x3cc1b5ad,0x3d0e8a9c,0x3d6f9452,0x3d822f27,0x3d3c40f1,0x3cef2019,0x3c9d2c70,0xbbd1e514,0x3c25e885,0xbd16c4d4,0x3c33c12a, +0x3db6ce0b,0x3dd9ff34,0x3e4bbd47,0x3e7ede92,0x3ea9fe61,0x3ee1ada8,0x3efbe0e8,0x3f067fc8,0x3f0604f1,0x3ed8f458,0x3eb1aeaa,0x3e866a54,0x3eac2ab9,0x3ebc2f4a,0x3eb7b07a,0x3e48107e,0x3f09778e,0x3e2055bb,0xbdbbcfbc,0xbc7993db,0x3c0438f5,0xbcd70a2c,0x3a949a3d,0x3bf869b0,0x3ca78040, +0x3ce0bf11,0x3d1f2d36,0x3d821575,0x3d655c00,0x3d091202,0x3d16c12e,0x3ca6a528,0x3b577c91,0x3c422fd3,0x3c8edc97,0x3dbde67a,0x3e0f619b,0x3e247c15,0x3e42b580,0x3e8e74ad,0x3eae04e9,0x3ec8e3c3,0x3eb76416,0x3e8de0f3,0x3ddd2251,0x3d946889,0x3ced96e6,0x3d21ecb7,0x3df6ae7c,0x3e30c9fe, +0x3ea22d3e,0x3ee31275,0xbc2682ac,0x3ec65ee2,0x3e9afb3b,0x3e302fad,0x3dc2bcbf,0x3d9cac8a,0x3c463704,0x3ab3bdeb,0x3d4614b8,0x3d6db04b,0xbca720cd,0x3d486593,0x3cf6e24e,0xbc559192,0x3b4249e1,0x3cc97a73,0x3d38baf5,0x3d4b1bd6,0x3dae6eea,0x3d379e7d,0xbd8a7f0e,0xbdc3b70a,0xbe48e1e7, +0xbe9b66a0,0xbec56afe,0xbed2a4d1,0xbefc6085,0xbf011a41,0xbefa1c63,0xbec4ecbf,0xbe9d0647,0xbe2808d0,0xbe802e20,0xbe9f140e,0xbed3eb50,0xbe5a043f,0xbea3d952,0xbcad178f,0x3e55a962,0x3c916840,0x3d585477,0x3cf2f243,0x3d307407,0x3d2bbfc9,0x3d517cff,0x3d4b7e50,0xbc4b8e27,0x3d2ae728, +0x3d2269f9,0x3d199e25,0x3cca6294,0x3ca67e47,0x3d27e71c,0xbc1fd422,0x3d25d667,0xbd7fe705,0xbe50a2ad,0xbe70efa6,0xbe95d76b,0xbea6d258,0xbec3d821,0xbeda8ed8,0xbed8305e,0xbec3bae7,0xbea698fa,0xbe91501a,0xbe658abd,0xbe15d0b1,0xbe26daa4,0xbe35e2fe,0xbea0a64c,0xbe50d5f9,0xbe0f81eb, +0xbe08f64c,0xbd0ceb58,0xbc586c3e,0xbba4174e,0x3c284448,0x3c2f57e1,0x3cd9f0e7,0x3cc580f7,0x3cceee5b,0x3c668793,0x3c104fb2,0xbc0039e2,0xbc37176e,0xbc1b096b,0xbbdac2c4,0xbd1b86c4,0xbc35dfb0,0x3d5a3d54,0xbd9b314b,0xbe0ef684,0xbe2c8504,0xbe6e1471,0xbe74d24a,0xbe74aab0,0xbe498e16, +0xbe266410,0xbdcfc1c7,0xba8627ca,0x3cc67af7,0x3cce9c3e,0x3c5d987e,0xbbacd4cf,0xbd326f7c,0xbe2cf9e8,0xbe0fdceb,0xbd817a18,0xbda033ad,0x3b057245,0xbc9663e8,0xbc8d9be9,0xbab4c731,0x3a7cd3bd,0x3c8bf83c,0x3c8ebb17,0x3c67987b,0x391b5b01,0xbbf08d63,0xbc2e1b46,0xbc4a74be,0xbd260709, +0xbd8272ee,0xbd8c0b19,0xbdbefdb5,0xbddcf6ce,0xbdebb35c,0xbdf1dc3b,0xbde6cbff,0xbdabe0cc,0xbd219e23,0xbca96dd8,0xbc1a8a71,0xbc1636b6,0xba83dc42,0x3c46be27,0x3bc67c5a,0xbca9114e,0xbd79025b,0xbd6c3c06,0xbd0fc9ff,0xbce6304e,0xbd464288,0xbc12dcd3,0x3c261dbe,0x3b66acea,0xbc63a24e, +0xbc18d3d8,0xba02b157,0x3c1bcbb8,0x3c73ed93,0x3c8ce98d,0x3c5ba48e,0x3cc81d2a,0xb9fc9cb9,0xbc7d0b60,0xbcf82cfd,0xbd3da139,0xbd63b066,0xbd912859,0xbda07c9d,0xbdc11d57,0xbda88877,0xbd6ffc2e,0xbd673ec5,0xbd3dfddf,0xbd3443e5,0xbd038284,0xbc8c13d1,0xbcf48a3e,0xbd162648,0xbd314751, +0xbd152527,0xbcc118dc,0xbbb4eee8,0xbc83b743,0xbccf6e7c,0xbcb68eae,0xbc392625,0xbcd3b610,0xbcdc773a,0xbc54193a,0xbc22a396,0xbc1217b1,0xbc563ffd,0xbc65de02,0xbc646c13,0xbc8cfbf4,0xbcc7fb72,0xbcd43f8a,0xbcfb326a,0xbcf2b529,0xbcfa9267,0xbd13a1b2,0xbd259ba3,0xbd3cc43e,0xbd45306b, +0xbd743eb3,0xbd7cf485,0xbd6ec0c6,0xbd6bf136,0xbd59e75e,0xbd46aaa2,0xbd3faa00,0xbd356d1a,0xbd2286e8,0xbd0bfa52,0xbcfd84e9,0xbcd3ad62,0xbcbd43c1,0xbc8d6827,0xbc8ae5ba,0xbc60ed96,0xbc90358f,0xbcaaf8a9,0xbcc0855c,0xbcd86759,0xbd0b1b49,0xbd12692a,0xbd1e8a12,0xbcddb598,0xbcf0187e, +0xbd06acc0,0xbd0a1b0e,0xbd037861,0xbd08e302,0xbd034d78,0xbd052c0d,0xbd074828,0xbd25beb2,0xbd16a156,0xbd30ef5e,0xbd3982f6,0xbd2db78a,0xbd0ae663,0xbd06d92d,0xbcf5ebf7,0xbce8557e,0xbcdba40f,0xbcc8c86d,0xbcb7b4e9,0xbcaa60c8,0xbc9f551b,0xbc90d413,0xbc8cc1fe,0xbc8ba22a,0xbc8ab86f, +0xbca32761,0xbcb5df3f,0xbcbb8943,0xbcc0e114,0xbcf58f99,0x3dda5394,0x3dda319e,0x3deeee4b,0x3dbf8e18,0x3d7ff1d5,0x3bde146c,0x3dce670b,0x3d8d14a1,0x3cc4c4a7,0x3ce1441e,0x3ce65efa,0x3cc5e198,0x3cb758b9,0x3cb1cb2b,0x3cbb12ee,0x3d93d847,0x3dbff05c,0x3c760f3c,0x3d92042d,0x3db86dae, +0x3db9bc5f,0x3db90d6a,0x3dbe17ab,0x3db8994e,0x3dbecf3c,0x3dc0c91c,0x3dbe9fec,0x3dc3e7d5,0x3dc87422,0x3dd0531b,0x3dddb422,0x3ded1530,0x3e04d6ad,0x3dffe864,0x3e0008fb,0x3e01185e,0x3df308c4,0x3e1c8608,0x3e0d0bbe,0x3c60b4b6,0x3dadb65e,0x3d78f48d,0x3d87afe0,0x3d9ffae1,0x3d8bf9fa, +0x3db7b0c5,0x3dba6168,0x3d9849cb,0x3daf43d4,0x3da5425b,0x3dafc520,0x3d79daa5,0x3d8097e9,0x3da26b45,0x3d936d96,0x3d7ff1f0,0x3da79925,0x3d9d9c0c,0x3da3b65e,0x3d926d77,0x3d9e4ee2,0x3d9e796a,0x3d9cd4b4,0x3db17367,0x3dd0d840,0x3df9dec7,0x3e133d27,0x3e291f18,0x3e46c19c,0x3e3e767f, +0x3e3e70c4,0x3e442dbc,0x3e320074,0x3e6691b9,0x3e17b80a,0x3d8684dc,0x3d9d0a31,0x3cf78aa8,0x3d07722c,0x3d1a559b,0x3d0d910c,0x3d581918,0x3d799bdd,0x3d118168,0x3d5cc2ea,0x3d1ea1f3,0x3d807cd4,0x3d0472d7,0x3d102805,0x3d3a8324,0x3d369343,0x3d8dd342,0x3d6696ac,0x3d7365d1,0x3d8e62b1, +0x3d616672,0x3d9861fe,0x3da70691,0x3dafdfb7,0x3dda5319,0x3e01b62c,0x3e26c087,0x3e4a9a4b,0x3e69b2aa,0x3e8da219,0x3e849564,0x3e887037,0x3e92327a,0x3e7a7ba2,0x3ea26f58,0x3e2a6ffd,0x3d30c570,0x3d508ac7,0x3d24ff79,0x3c862a59,0x3ccbb8fd,0x3c350185,0x3d3947e8,0x3d54119f,0x3cec5f32, +0x3d0f00b8,0x3cfed9ec,0x3d0ce8fd,0x3c01bc9a,0x3ab62673,0x3cc970e8,0x3cca0a0b,0x3d506f17,0x3cbdc1f6,0x3c112c19,0x3c70a775,0xbc13856f,0x3c6f4247,0x3cbf8381,0x3d04ef34,0x3d9ac210,0x3e0d2811,0x3e63570b,0x3e8ef765,0x3ea624ef,0x3ec74324,0x3ebbee36,0x3ebb7fe7,0x3ecff923,0x3eaed997, +0x3e7eba48,0x3e998ea8,0x3e8e9ac0,0x3e2e41c4,0x3e0e51b4,0x3dc0f5bd,0x3dacaab6,0x3d90b9b9,0x3d30c998,0x3cd64ca8,0x3ca911a9,0x3d329d3e,0x3d446117,0x3d3981a6,0x3d0217fa,0x3cbe5583,0x3d09aea5,0x3d0b5df8,0x3da10f40,0x3daf1858,0x3d8bf837,0x3de6ec48,0x3e07c023,0x3e208f4e,0x3e3c5ad3, +0x3e610b7c,0x3e7179b2,0x3e5d2def,0x3e0383e0,0x3e14875f,0x3e0e5429,0x3dd3c32b,0x3e09e14c,0x3e2789fa,0x3e6eb6c9,0x3e9586c2,0xbed556b4,0x3c5a7725,0x3e448bf6,0x3da9be85,0x3dac4c36,0x3d8d9906,0x3d3471e0,0x3d01ce8d,0x3d1d57a6,0x3d252d89,0x3d1739c7,0x3d654e47,0x3d414ff8,0x3d2a40ca, +0x3cee1a76,0x3d03077b,0x3d86a671,0x3d8b0000,0x3dac15ca,0xbce11ec8,0xbe12583e,0xbe57f55c,0xbea27ef2,0xbec3696e,0xbee43def,0xbef6403b,0xbef9fc05,0xbeda68a1,0xbe966634,0xbe492b49,0xbd996815,0xbca699b4,0xbdc014a2,0xbe4d7400,0xbecdcbc9,0xbed633fb,0xbe32c811,0xbe85002a,0xbda775c1, +0xbd1638d2,0x3d079d4d,0x3c9a540b,0x3d814568,0x3cbbe84b,0x3d9be67e,0x3d9f0505,0xbbe4eff5,0x3d88e3ea,0x3d84dcf6,0x3d680874,0x3d3bc607,0x3cbedc9b,0x3d0ad379,0xbc94b9e5,0xbd7b8071,0xbddf5fb6,0xbe0d61e9,0xbe1d5672,0xbe31e6c4,0xbe235194,0xbdf62147,0xbd3d67e6,0x3c9626cc,0x3d3799a8, +0x3d8183b8,0xbc37fab7,0xbd5ca9a9,0xbe20f307,0xbd7b4cef,0x3d6832ab,0x3e6265ee,0x3c7387f0,0x3deb522c,0xbd7e6d5a,0xbe26f446,0xbca1370a,0xbc04dbd5,0x3b5ad7fd,0x3c84b30b,0x3ca17eec,0x3d0dfe30,0x3cf4ce41,0xbc54b8d3,0x3c5ac14c,0x3bca2fda,0xbaecae4f,0xbd0dc7df,0xbd6588cc,0xbdb303c1, +0xbd77f558,0xbdbbb252,0xbdaa8d66,0xbd13070a,0xbccd6817,0xbbbfd99d,0x3cde90d4,0x3d682d1a,0x3d6fa905,0x3dee197d,0x3e105314,0x3e1c513e,0x3dddb0ca,0x3d8178d0,0xbc75ce20,0x3d430bff,0x3da9cfe0,0x3e8ad5e5,0x3dadc8f1,0x3deaecf5,0x3d190ffb,0xbca21cd7,0xbc870c70,0x3c2438a5,0xbb7aad56, +0x3caa2734,0x3d440683,0x3d25e59b,0x3cc13c37,0xbbc7c8da,0xbc39f8f5,0xbbb343b8,0x3c8f7c8a,0xbad80992,0xbce167f2,0xbd30383a,0xbd95221e,0xbdfcc598,0xbd883c4e,0xbcf5c42f,0xbce078f9,0x3cabe8b5,0x3d36b382,0x3d8808ce,0x3d8847c5,0x3dad52cc,0x3d482e57,0xbcfb03fd,0xbd1f7e9c,0xbd24881b, +0xbd3127d2,0xbd1a50ed,0xbaeb48e8,0x3dfcda0b,0x3dfc08e5,0x3d9f8aa6,0x3d4780a6,0xbd1c44ba,0xbcf07352,0xbcb13c7c,0xbcb8fa9b,0xbb7c3431,0x3c127a3f,0x3be44067,0x3be3b7ef,0x3c41923f,0x3c958993,0x3c22e358,0x39a74957,0xbb960158,0x3b2a172d,0x3c8dff8c,0xbbaa45b1,0xbd070943,0xbb899bc2, +0x3ba7c7ae,0xbca26d85,0xbd222b07,0xbd5863a2,0xbd2f8714,0xbbbc4c3e,0xbb3743bd,0xbc06d6d9,0xbce04681,0xbd41039a,0xbd09fa23,0x3c690bd7,0x3b54c81b,0xbbc25942,0x3c1fb574,0x3d794e76,0x3ca182da,0x3ba3c3c3,0x3b110f67,0x3ca008c5,0x3c2a0279,0x3c4b41e4,0x3c161d49,0x3c37f54c,0x3a8d0d64, +0x3b619c87,0xbc4e748c,0x3bf843c7,0xba89357c,0x3cb511e8,0xba4f3ab4,0x3be9ed07,0x3a29ae52,0xbb44805f,0xbc8aa934,0xb93b10da,0xbc2747e1,0xbd2ce439,0xbd7fb6e3,0xbd4e436a,0xbd42371b,0xbd523045,0xbd35beda,0xbd15d647,0xbccfa89b,0xbc90e601,0xbc6da87c,0xbc743daf,0x3b8c32a6,0x3caf3cf5, +0x3ce16188,0x3c8ba606,0xbccaec87,0xbcb78be3,0xbd1d2b77,0xbce1ca52,0xbceab7b2,0xbcb86905,0xbc7ca320,0xbc3edba6,0xbc09636f,0xbc09476a,0xbc6a290e,0xbbd9608a,0xbc164439,0xbc21eb1b,0xbc9a4aaf,0xbc54f822,0xbc9a47a5,0xbcc2e00b,0xbd471023,0xbc45bc15,0xbc697597,0xbc8554ad,0xbc9ae311, +0xbced8c1d,0xbd15b83a,0xbd2db41f,0xbd1562bc,0xbd099638,0xbd03a371,0xbd0711b9,0xbd07afaf,0xbd1219c7,0xbd0e1d39,0xbd150712,0xbd0090cc,0xbcf02007,0xbc8e3cc0,0xbc5cd2e0,0xbc5b15ed,0xbc6fa35c,0xbc94b36b,0xbc262f1f,0xbc6348ba,0xbc932069,0xbca8d996,0xbcb7dd2b,0xbcb18c5f,0xbcddf81c, +0xbcebbd45,0xbcf3676c,0xbc8036b6,0xbc330d7c,0xbd09b306,0xbc7eb12a,0xbc2dc2d3,0x3a5a8a7b,0xbc251184,0xbc39d9f5,0xbc5e2942,0xbc71eca6,0xbc7f35fa,0xbc965c52,0xbca3a2a3,0xbcb6a432,0xbcc17433,0xbcc4cc4a,0xbcc34ce6,0xbcc0c1c1,0xbcb037f2,0xbca27588,0xbc9f5240,0xbc901878,0xbc7ecc04, +0xbd0a60f9,0xbc80b5a7,0xbd23d188,0x3cd53012,0x3d84a736,0x3df359e5,0xbbdd32a6,0x3d496359,0x3dd5d085,0x3de47acc,0x3de233a3,0x3dce32e4,0x3de1e2cf,0x3de7e699,0x3dec1023,0x3d414ce3,0xbb68c1f1,0x3df17259,0x3d44955d,0x3c2af2d5,0xbd54f170,0xbd0525a5,0xbd214775,0xbd2c4499,0xbd35ea82, +0xbd3ba93f,0xbd3ba71c,0xbd3e6a97,0xbd3f7fa5,0xbd3cc136,0xbd4af089,0xbd4f7f22,0xbd538669,0xbd460865,0xbd2676c4,0xbc9f7dfe,0xbcc0e769,0xbc1cdd39,0xbb786d0a,0x3defa05d,0x3bbb3167,0x3d0f54c3,0x3d0b3e14,0x3c0dcbe3,0x3b2393cb,0xbc47fb55,0xbb02ba87,0x3c581ee1,0xb9a8228e,0xb9b7e541, +0x3ba74bed,0x3ca8eade,0x3bf58092,0xbb76c480,0xbba03096,0x3d48fabb,0xbd33643a,0xbd2a5975,0xbd31707a,0xbd51668f,0xbd61c653,0xbd68b418,0xbd5c068a,0xbd5ccd15,0xbd6a558c,0xbd79d7a4,0xbd9bc72a,0xbda7bfa2,0xbda35e4d,0xbd9affa4,0xbd69e2f6,0xbc042c86,0xbc4bdb9f,0xbc0a02f8,0x3d2736c8, +0x3dbbac0d,0x3d5c208e,0x3d8757c5,0x3d41eb41,0x3d0f4744,0x3c012b27,0x3d2226c0,0x3c9265d2,0x3cfbf7b7,0x3bbe3a62,0x3d1ff0e4,0x3cb3bc4c,0x3cd12112,0x3b533573,0xbb74f3b4,0x3b07b3d2,0xbc051ae3,0xbd375942,0xbd6ee35b,0xbd89a2cc,0xbdb40f7b,0xbdd3bd72,0xbde8327f,0xbdefbb35,0xbdfda510, +0xbe011b36,0xbe04f6e2,0xbe192af9,0xbe1c0d3e,0xbe111544,0xbdfaf3eb,0xbdb2d163,0x3c350d37,0xbaebae9b,0xbd112664,0x3d9d6263,0x3e091389,0x3d82219f,0x3d6f6ea5,0x3d8eac02,0x3d273289,0xb8c0d62f,0x3ce48287,0x3d1311dd,0x3c17e978,0x3d08b171,0x3ccd5a6a,0x3ca5113c,0xbb06f18f,0xbc905fdf, +0x3b3badc0,0xbc76a0b0,0xbbe2ac24,0xbd40171e,0xbd3e2b34,0xbd4668ad,0xbd94b88e,0xbdb346ce,0xbdc5eeea,0xbdbb0fcc,0xbdbc7af2,0xbddf38e0,0xbe0e2fcf,0xbe4376d2,0xbe4f252f,0xbe456ede,0xbe2ca0fc,0xbdd41113,0x3cd56b83,0x3bfb34d9,0xbe6b07bc,0xbe1d08e4,0x3cb94086,0x3d877edb,0x3c865b48, +0x3c5a6be1,0xbc3b3400,0x3c3f270c,0x3d16ada0,0x3d39eb2b,0x3d067e89,0x3cede482,0x3cd2ced9,0x3d333aab,0x3c4d828a,0xbc03b7fc,0xb9f61dcf,0xbcbf51ab,0xbce095ac,0xbdb653a0,0xbe301370,0xbe6b9471,0xbea13773,0xbeaf5678,0xbec63999,0xbee35c38,0xbee501be,0xbecafae9,0xbe862fa9,0xbe5ff46a, +0xbe2c9f34,0xbdb9252c,0xbd99931e,0xbdbf094e,0xbe0a3afc,0xbe6a372d,0x3dde009e,0xbdff5d4e,0xbe3170bb,0xbd91076e,0xbd83b324,0xbbc9b383,0x3d02bb8c,0x3d955cdb,0x3d8fca8a,0x3d8ae226,0x3d11b8f6,0x3d50fb00,0x3d0efc4c,0x3cd3008c,0xbbd1c9b4,0xbcbc8c63,0xbd29cddc,0xbd861e14,0xbdb52da7, +0xbdcdef42,0xbdd851b5,0xbdca0ffa,0xbd7b807d,0xbe0854bd,0xbe053e80,0xbdad70ee,0x3cb20373,0x3d9784ae,0x3daac1aa,0x3e0f2826,0x3dfa0c3c,0x3d436b01,0x3e2221a8,0x3e594a25,0x3e912dad,0x3e3ca2a9,0x3e07d3ba,0x3dd73d79,0xbd1b1ceb,0xbc6fc465,0xbd209b0c,0xbcb5558c,0xbca39753,0x3ae45589, +0x3cb1d95f,0x3d236612,0xba4074ed,0x3d361af3,0x3d4c8e01,0x3d6f7cec,0x3c2e2063,0xbc4ed99a,0xbce38572,0xbca207a5,0xbcf616e7,0xbc03b54e,0x3d0173f0,0x3d16c052,0x3db8d611,0x3ddbe10c,0x3df3131b,0x3db3aaa2,0x3de985f7,0x3de6129d,0x3d86a29f,0x3daac29d,0x3d70ca66,0x3cabe8ce,0x3e02824e, +0x3db2e850,0xbd86b54e,0x3d034f58,0xbded694a,0x3d75068e,0x3dbbea3c,0x3cfb0a80,0x3c6be8af,0x3c30751c,0x3cc9d751,0x3d676602,0x3d099adb,0x3c90b919,0xbc531c71,0x3c20ef9b,0x3cb313b2,0x3d0cc5a4,0x3cb9d329,0x3c0ddd95,0x3c23f470,0x3b128597,0xbcddabbb,0x3b09ed4e,0x3c8855e7,0x3c4a0076, +0x3c9b4ba3,0xbb741522,0xbc60bd20,0xbc20a11a,0xbd71d621,0xbdc907a9,0xbe004a54,0xbe09fca9,0xbdba4fcc,0xbd193307,0x3cd90b6e,0x3cbb4eeb,0xbdef8e50,0xbdd98ab0,0xbdd6418f,0xbc981120,0x3cdc1e46,0x3d23bbd5,0x3c4677e8,0x3ce766bd,0x3c82a862,0x3bcf4f71,0x3c160ddc,0x3c056ebe,0xbc543ae7, +0x3c722e1c,0x3cd704b9,0x3cf2c7df,0x3cac8f7f,0x3c6fbbc7,0x3c697db9,0x3d02c140,0x3cdb389a,0x3d53ac5f,0x3d0f7f08,0x3c7bc7ab,0xbc888e04,0xbd4bf7c0,0xbd7ff6cf,0xbd857b93,0xbdc4fb71,0xbd8ff840,0x3c232cd5,0xbc8e2dfe,0xbc8c55c8,0xbba2e8e1,0x3d881150,0x3d9e6233,0x3cfc294b,0xbd975e54, +0xbd0e4466,0xbd485ad6,0x3c522048,0x3b8db1f4,0x3be77bb0,0x3cc59d91,0x3cca125f,0x3ca20239,0x3cad2091,0x3c944d47,0x3c991b5f,0x3bea60d0,0x3bc7f925,0x3c767c41,0x3c8c49ad,0x3cb45a8c,0x3c8e7d97,0x3d055865,0x3d265ffe,0x3d0d4ea0,0x3d4312db,0x3d3cf6fd,0x3c97390d,0xbd065153,0xbd924835, +0xbddb75c1,0xbdbf549c,0xbdadaf1f,0xbd95491f,0xbd5cf877,0xbd1a240d,0xbd119c99,0x3c9afbf7,0x3d5c01f9,0x3d85b488,0x3c4056fb,0x3cbfc584,0x3d307ff1,0x3d1f60d9,0x3c98454e,0x3c4d3c9c,0x3c89fbd2,0x3c92bc01,0x3cbf1c8d,0x3ca7a3a0,0x3cdf970e,0x3cbe856a,0x3d071525,0x3cf5710a,0x3ceb9dcc, +0x3cf90540,0x3cd522b7,0x3ca8a083,0x3ceef6a8,0x3d074698,0x3d3c8e83,0x3d3489a9,0x3d1ae408,0x3d260e65,0x3cc9f947,0x3c2de6b9,0xbbf1af0d,0xbbd86bbd,0xbc74d8ba,0xbce1c5a1,0xbccb62f8,0xbcdadbeb,0xbd06c2b9,0xbcbc61b6,0xbc455a9a,0x3c054190,0x3c926005,0x3cd0cfa2,0x3d035284,0xba55b4a7, +0x3d01b8bc,0x3ca63884,0x3cad1a9c,0x3ce06c98,0x3ccfeb78,0x3ced0ff1,0x3cca706f,0x3c8ac6ab,0x3c84679b,0x3c5e0a52,0x3c188c6c,0x3c00957a,0x3c414f53,0x3c928a17,0x3ca94e5c,0x3c2588a7,0x3cd25681,0x3c8f3f79,0x3c43d285,0x3badda2d,0x3a5a8cd9,0xbb032e07,0xbbe15640,0xbc12a0dc,0xbc3326e6, +0xbc405ca7,0xbc55a0f1,0xbc4c7197,0xbc41284c,0xbb0fd6a3,0x3b9efb38,0x3c2bb41c,0x3c8f54f1,0x3ca237d3,0x3cfdd6d2,0x3b60a828,0xbbf1831b,0xbcb65be2,0x3c81a7d0,0xbaae5cd6,0xbc80fe05,0xbc924d18,0xbc92814e,0xbc853c3b,0xbc8ff451,0xbc93bac1,0xbc966aaa,0xbbbf18e7,0x3be3d538,0xbc9c44ed, +0xbbf5ccc4,0x3aae44d0,0x3c876a2d,0x3c31c133,0x3c26ad2c,0x3c04931c,0x3bc9bc6a,0x3b686cdc,0x3a43df5f,0x3b75d00a,0x3bc4d25f,0x3c03447a,0x3c1122ad,0x3c18b8c3,0x3c0773ed,0x3c346996,0x3c580e5d,0x3c81af3d,0x3c976e2f,0x3ca3282a,0xbd43336f,0xbd5b2206,0xbd5544fd,0xbd83f828,0xbd822f7d, +0xbd5d7499,0xbd64fa5f,0xbd71c6cb,0xbd73cc00,0xbd6f4c92,0xbd6bedc8,0xbd605ce1,0xbd605280,0xbd5ea6dd,0xbd570a65,0xbd6bc07a,0xbd4b6746,0xbd705830,0xbd821976,0xbd6c71cc,0xbd0c27f1,0xbd2a4b32,0xbd2719e4,0xbd1af3da,0xbd2584b8,0xbd271381,0xbd28289d,0xbd2226a6,0xbd1f562d,0xbd2203be, +0xbd1b407d,0xbd2363e0,0xbd42f8ac,0xbd3be72d,0xbd4a1c0b,0xbd6f5f4c,0xbd668ee1,0xbdd52a59,0xbdc96e93,0xbd7d2d9f,0xbd7e76fd,0xbd787128,0xbd6ee4ae,0xbd48d94f,0xbd2b49a8,0xbcf4f1ee,0xbcf8927f,0xbd115ee7,0xbd016a13,0xbcea9c94,0xbcdff3e4,0xbd0e4273,0xbd180821,0xbd3d83bf,0xbd39bfcd, +0xbd7ce516,0xbd209e12,0xbd227d62,0xbd29efeb,0xbd0955e2,0xbd244bd9,0xbd30908c,0xbd43afdd,0xbd44c033,0xbd43d314,0xbd4ae310,0xbd272933,0xbd36ff8c,0xbd8b886c,0xbd7b1b7d,0xbd947dfa,0xbdd572d5,0xbddc8166,0xbe032a53,0xbdd8edc0,0xbda3cc65,0xbda1723a,0xbd73bd13,0xbd29ed32,0xbcff4c65, +0xbcde5476,0xbc82239d,0xbb2392a8,0xbc65955c,0xbb2cecd9,0xbbbe2704,0x3ba84b13,0xbc25adcf,0xbc8deff1,0xbd019a0c,0xbd292503,0xbd526049,0xbd080c66,0xbd0adda3,0xbd14688a,0xbc991680,0xbd02a4f9,0xbd13c6a9,0xbd251472,0xbd1ba2fe,0xbd13f96a,0xbd1bc109,0xbcd3c593,0xbd0a3cc5,0xbdb1dcd3, +0xbd918407,0xbdb500fa,0xbe126a39,0xbe07505d,0xbe7455d4,0xbe502a4c,0xbe083fc3,0xbdc76980,0xbdccd0ac,0xbd82e141,0xbd40036e,0xbcbc4823,0x3c87b2bc,0x3cfae156,0x3c8f4f97,0x3ccb6caa,0x3cb49789,0x3cb50d14,0x3ace4a3b,0xbc3cb826,0xbd0ac7e4,0xbd1a5236,0xbd4c4566,0xbd089655,0xbd053207, +0xbd043a6e,0xbbf2c6a3,0xbcd1f64f,0xbd2786a9,0xbd802e85,0xbd9403e7,0xbd8f39aa,0xbd87c5b7,0xbcef6254,0xbd38bc40,0xbe0528da,0xbde876af,0xbe174d1e,0xbe800181,0xbe80db69,0x3ea5c011,0x3e3750b1,0xbbfce8b7,0x3aa1efbe,0x3cf36025,0x3d03221f,0x3d4fde66,0x3ce5bd13,0x3c1498a0,0x3c5cbe1e, +0x3d05e8b8,0x3c8ff446,0x3c73430c,0x3d10db42,0x3b7f9e09,0xbbfccde9,0xbcd2c7ae,0xbd266892,0xbd92ed1c,0xbd85cea4,0xbc667c77,0xbc998eb3,0xbc4077b6,0xbcb41d7e,0xbc8a7d41,0xbc9c09ee,0xbc753fe0,0xbd377f85,0xbdc72bf4,0xbdc774e0,0xbd926c2d,0xbd4daaec,0x3cd656f6,0x3dbeaf83,0x3df7e818, +0x3e87fc84,0x3d9ff84b,0x3e21e2d6,0x3db1e88f,0x3d6c5be7,0x3d81c088,0x3c93fc69,0x3cba324e,0x3ca88a5c,0x3d707206,0x3d6f432d,0x3cc35481,0x3ce0d8fd,0x3cd66672,0x3d4eaf86,0x3c0d1a48,0xbc6aa129,0xbd331c7f,0xbd68d414,0xbd92a70d,0xbd08d3cc,0x3c26d073,0x3d0dd601,0x3d9a113f,0x3dd937a2, +0x3de8750f,0x3dca95e4,0x3d87a3e0,0x3d4da4e5,0x3d5f16be,0xbd89b03a,0xbd7ef62c,0x3d205b97,0xbb0b0cf8,0xbc102765,0xbc15be2e,0x3be0497b,0xbca092a5,0x3ccc41cc,0x3d92b9db,0x3d86d024,0x3d5c9742,0x3d244300,0x3cd943c9,0x3d7153ce,0x3d1756b9,0x3d11407f,0x3a7974c1,0x3aca8395,0x3c196c44, +0x3d907148,0x3c42996f,0x3c2dc3b6,0x3c7e88f0,0x3ce7b004,0x3d18fc43,0x3d00385c,0x3d468df4,0x3cff6bb7,0xbce43ba0,0xbc8b1f06,0xbc527c15,0x3b6192fb,0xbd26c3a1,0xbd7a91e2,0xbd1d46d7,0xbdc62d82,0xbd8d5d0a,0xb79a92c7,0xbd3cdcf4,0xbd328de8,0xbd2d6431,0xbc9a9e2e,0x3df8796d,0x3cd5f543, +0xbc7b100c,0x3c9f5faf,0x3c5176bf,0x3c87d079,0x3c9a7094,0x3d523115,0x3c7a6b55,0x3b6b112e,0xbbcafd81,0xb83daf4c,0x3c63bab2,0x3da044ce,0x3d1f2dcc,0x3d0c1089,0x3d71c72f,0x3d1f0b60,0x3d00f272,0x3ce1afe7,0x3c0681d0,0xbbd56293,0xbbb692bb,0x3a43f3aa,0xbb8f8e2c,0xbc3f5e79,0xbd2adfd9, +0xbd120e20,0x3ca3cd00,0x3d0e180f,0x3d89ef6c,0x3dfb70fe,0x3daabfda,0x3d72df7a,0x3cf0f7fa,0x3d9e75a6,0x3ca486af,0x3d54a205,0x3b81d2e0,0xba5a10b1,0x3c8f09b6,0x3c7a4a13,0x3ccdb83d,0x3cd7687f,0x3c88efa9,0x3ca89e99,0x3cc11760,0x3d2e1e3a,0x3d2a2595,0x3d16aacf,0x3cc5cd1f,0x3cbfad39, +0x3ce35d98,0x3cadcd1f,0x3d08ad28,0x3d060e7d,0x3d05ebc0,0x3d099d78,0x3cb251dd,0x3b178e93,0xbc8c1b86,0xbd50ce28,0xbcf77efe,0xbd4c263a,0xbdc557ab,0xbda05256,0xbd24dbdf,0x3cd87a08,0x3cbf0335,0x3c0985f4,0xbd33758b,0xbcd86e4e,0xbd156855,0xbcfd0396,0xbd21b0f5,0xbc12295a,0x3bb8ddc3, +0x3cb0f771,0x3cea7bcc,0x3c6c61cb,0x3cbcd93e,0x3ccca0fa,0x3cc0fb2b,0x3c479396,0x3c3c2473,0x3c5e7bbe,0x3cce35e1,0x3cf3b9d1,0x3cfee039,0x3ce86b14,0x3ce03b3e,0x3c59edfd,0xbadea83d,0x3bb6535c,0x3cf4780f,0x3d345581,0x3d3c8f69,0x3c56e83f,0xbc5e410f,0xbd199099,0xbd4e0267,0xbcbb06a8, +0x3b8d5f03,0x3d0da916,0x3be8f055,0xbc4cd9bf,0xbc84af05,0xbd10282e,0xbc7da45c,0xbd096ae4,0xbc858a81,0xbc7a59cd,0xbc61a7a7,0xbc53733f,0xbc0578db,0xbb38dbb1,0x3c4001f6,0x3c8f7e43,0x3d14428d,0x3cd50e80,0x3cab2e71,0x3c9612cd,0x3c23b025,0x3bf3afc4,0x3bbc1787,0x3c2ca118,0x3cc164cb, +0x3c774ecf,0x3c86734d,0x3cd7d8fd,0x3ce4b1a5,0x3c4b0b05,0x3b6e96b5,0x39bfee24,0x3c2cec11,0x3cc28372,0x3d118377,0x3cff304b,0x3ce4ddd5,0x3cf950fd,0x3cb05252,0x3c6f3392,0x3be57755,0xbb687b7a,0x3cd8d47a,0x3cdccbd3,0x3d516c62,0x3ce430fa,0x3d1df914,0x3d15b240,0x3d038010,0x3d0632c9, +0x3cf0af2d,0x3d04fb4e,0x3d0f1487,0x3d19902f,0x3d242913,0x3d3354bb,0x3d216367,0x3d1e7faf,0x3d101e6b,0x3cf1067d,0x3cf3fbb5,0x3cd7878f,0x3cebcedb,0x3cffefc0,0x3d0f647f,0x3d282ff6,0x3d3af3a2,0x3d422a63,0x3d3a5f1f,0x3d2e2bcf,0x3d2c923c,0x3d2ff276,0x3d32c4e1,0x3d2eb9f1,0x3d21d96c, +0x3d1686ad,0x3d080918,0x3cfd51ee,0x3ca4d79f,0x3c55b63c,0x3d0cb68b,0x3d2adc70,0x3d2cd82a,0x3ce11533,0x3d1b341d,0x3d23f0a8,0x3d25163d,0x3d201dcd,0x3d16445e,0x3d156c72,0x3d1067c8,0x3d109958,0x3d2a5b0d,0x3d0df850,0x3d08f925,0x3d1d4984,0x3d06e354,0x3cb2710d,0x3cd4560a,0x3ce2fd73, +0x3cefa76b,0x3cfe0896,0x3d06f080,0x3d155afe,0x3d0c1e3e,0x3d059c6d,0x3cf632a1,0x3ce57371,0x3cd54e24,0x3ccab5c7,0x3cbee245,0x3cb58d52,0x3cacde63,0x3ca4f55e,0x3c99d913,0x3b9d86eb,0xbabf6ba7,0x3c53bb5a,0xbbd0d945,0xbcafcfab,0xbd3a514d,0x3b9314a8,0xbc709001,0xbd00662e,0xbcf2a1bd, +0xbce2dd23,0xbce019d4,0xbcf68670,0xbcf967ac,0xbce79ab5,0xbbf039c6,0x3b89f1fa,0xbd173df1,0xbc41acfd,0xbb0fa936,0x3c46a0cc,0x3ba7f821,0x3bf70cfa,0x3c21cf9e,0x3bfe9b76,0x3bc49685,0x3af4490e,0x3b164f97,0x3adf04d6,0x3b2f59b1,0xb8f8f6cf,0xba686941,0xbb23482c,0x399bb126,0x3a0779b2, +0xb8e444ba,0x3a302094,0x3c949338,0x3c7d7d7b,0xbd8048b8,0xbc0606f6,0xbc8b72c4,0xbc0baadc,0xba62c2de,0xbb268f58,0x3c02334e,0x3c010032,0x3bdc1b44,0x3c006e9e,0x3c0682d0,0x3c70de00,0x3ac18617,0x3b15f94f,0x3a2f8079,0xbaeb5286,0xbca688e3,0x3c426a78,0x3bfd902c,0x3c04412b,0x3c602108, +0x3bd85c60,0x3a25dcf4,0xbc11ffb7,0xbc0ada80,0xbbd7ef8a,0x3af6c3d2,0xbb38a9ff,0xbb729730,0xbbd91d2b,0x3b5eae35,0x3c2f4def,0x3c973245,0x3cabfc20,0x3cee0096,0x3c4f3a40,0xbcef0331,0xbb85c77c,0xbccff200,0xbca49f79,0xbc091707,0xbb1f212c,0x3bbdf61c,0x3c566dd1,0x3c226125,0x3c509de6, +0x3beb5946,0x3d03b009,0x3c3b6903,0x3c24e207,0x3bcdaed6,0xbb29438b,0xbb35df78,0x3c568151,0x3c75d63b,0x3c911434,0x3d030502,0x3cc41b16,0x3c896d65,0xba66219e,0x3b635076,0x3b2160a8,0x3bceba89,0xbc4895f3,0xbcac109e,0xbd0538cd,0xbca24100,0xbc72f049,0x3c08cf62,0x3c3ced81,0x3dea267b, +0x3d221f0a,0xbd4cd223,0xbce4bb32,0xbc28ffcd,0xbcc3369c,0xbc02f132,0xbc2a37dc,0x3c3e68ad,0x3ce45966,0x3cbf3144,0x3c9e1486,0x3cbade93,0x3d292303,0x3c558762,0x3c1f7a3b,0xbc367fbc,0xbc0c036c,0xbcbfae04,0x3c019bea,0x3c45f5c2,0x3c01870b,0x3cee3d28,0x3c1b9884,0xbbab1207,0xbced96d0, +0xbcc44dd5,0xbc8be9bb,0x3b83ecad,0xbc6ab45e,0xbc8d4db5,0xbcd40cbd,0x3bb85407,0x3cf82a15,0x3dae393e,0x3dc57f12,0xbc785a36,0x3e038e8a,0x3e689bbe,0x3e207dd4,0x3dbe4e9d,0x3d646c06,0x3d48f81f,0x3d969414,0x3d5ad601,0x3d0417cc,0x3cef657c,0x3c69239c,0x3c23ea89,0x3cf233cf,0x3c833ae4, +0x3c80f45f,0xbbf05d14,0x3c672a1d,0x3c0ffc01,0x3cdb482c,0x3d59798d,0x3d936ce2,0x3dfcac9a,0x3defa221,0x3e0afffb,0x3e2c35eb,0x3e2ed97e,0x3e257db1,0x3e0fdf2b,0x3d3ef752,0xbd3226ac,0xbe090e65,0xbe35899f,0xbe3b1c26,0xbe20f267,0xbd478171,0xbc1ee7bb,0x3c5887c6,0x3d90abbc,0x3d5d9478, +0x3d976ce7,0x3daf7661,0x3d7bd65c,0x3d346d8b,0x3d42a914,0x3d446f94,0x3c5daf17,0x3cf3fc7b,0x3d0ce299,0x3d58e4cf,0x3cc711a9,0x3cd147eb,0x3cde1c98,0x3d2e2198,0x3d1600ed,0x3cbd87fe,0x3c91d006,0xbcdde04b,0xbdc2528b,0xbd8fc249,0xbd8ed4b1,0xbde1a8b3,0xbdcd627f,0xbdd0b89b,0xbdaec247, +0xbb36683a,0x3d64214c,0x3dc87dc0,0x3e098eff,0x3e02998f,0xbc567a86,0x3d1a663d,0xbcb7ec9b,0x3cbff786,0x3d2d29ab,0x3d01a192,0x3d5a43c3,0x3c2b6891,0x3d38ffe3,0x3dc8fe04,0x3d3f3106,0x3cdac60b,0x3c105d6d,0xbc9b53f8,0x38284021,0x3dd8483d,0x3cee2971,0x3c551990,0x3ca71ab4,0x3c17c43d, +0x3c021919,0xbaf58baa,0xbd0f55f0,0xbd2a43eb,0xbd4801db,0xbdbb61f9,0xbdf0f8c8,0xbe0d516e,0xbdb6cd76,0xbd4f1392,0xbc803b63,0x3d24069e,0x3d965423,0x3e015be6,0x3d8ece42,0x3cd6fd4f,0xbc7c0e0e,0xbbc6cb31,0xbd50e188,0x3b7546df,0x3d4af4df,0x3c04f873,0x3cc8dd41,0x3c98d3d3,0x3cedd057, +0x3d5ed5d9,0x3c6fa7c5,0x3a676636,0x3cf5a249,0x3c7fa7eb,0x3cce9b88,0x3d939a90,0x3cd640b7,0x3c823009,0x3ac7b7f9,0x3c36cb57,0x3ce12394,0x3bfe8d91,0xbbe44c7c,0xbb067129,0xb974f381,0x3c5dc578,0x3c66cc8d,0xbc128585,0xbc3c7379,0xbd4d9460,0xbdfc3c04,0xbdbbdd53,0xbda45b54,0xbda7e477, +0xbd896d3c,0xbd82ab95,0xbdf02657,0xbd00cd6c,0x3b6ab823,0xbca2c48f,0x3c8e5ef0,0x3cc61e56,0x3c42fb52,0x3ca63c16,0x3c4c71e3,0x3cb99037,0x3c9fa258,0x3c926f30,0x3cbbe1e8,0x3c51fd78,0x3c370330,0x3c63cb43,0x3c702688,0x3caaefc0,0x3c69f8cd,0x3c804aec,0x3c714668,0xbb9d154a,0xbc605531, +0xbcb13fac,0xbc7684be,0x3c173125,0x3c719528,0x3cd4d623,0xbcd18ffd,0xbd3dd840,0xbd49d56c,0xbd1b4e71,0xbd0c3fa9,0xbd40bff5,0xbcde1c92,0xbd0324db,0xbdac4c51,0xbb145005,0xbcd2b349,0x3c9535e3,0x3ce8f343,0x3d108748,0x3d05d204,0x3cf50e72,0x3cdf882c,0x3d13feeb,0x3d1045ba,0x3d01a18a, +0x3c899cff,0x3ced1837,0x3ce1e43f,0x3cc1440f,0x3c72c6a8,0x3bfc1da9,0x3b23deb4,0x3b931d4d,0x38b76109,0xbb3d83af,0xbc5bfdbf,0xbc5d8fef,0xbbe89067,0x3cc2ab7b,0x3cef74b1,0x3d0bf34b,0x3cc9ed45,0x3d02c797,0x3d45c0ce,0x3d044b15,0x3be87e75,0xbd0b8928,0xbcc54b58,0xbce93386,0xbd3bacdd, +0xbd4c8d9f,0x3b58288d,0xbbee6785,0xbc3a234b,0xbb05ca13,0x3a230c11,0x3b291818,0x3b983cdc,0x3b6dafc2,0x3bc26b8e,0x3bfb62cc,0x3c4520b3,0x3c4e0fe2,0x3cbafd1e,0x3cd6fff2,0x3ce5ce16,0x3ce1b312,0x3cf35454,0x3c8f3be0,0x3c02306b,0xbb703148,0xb9e67272,0x3ba16417,0x3b8a9ee9,0x3c533b01, +0x3cb0d426,0x3d02493c,0x3cc77ce5,0x3c6ae84a,0x3bae9350,0xbafe1113,0xbbb467f9,0xbc4ab870,0xb9b597f4,0x3baf8b14,0x3c7f7224,0x3c2a53ea,0x3b50de43,0x3be732bb,0x3bc8b7fc,0x3c7ebb29,0x3c75b957,0x3ca17e9e,0x3ccff742,0x3cdc2468,0x3ce4be09,0x3cbcce14,0x3cc043c8,0x3ca3ce0f,0x3c9cc8a9, +0x3c95d7da,0x3cabfeeb,0x3c65eec1,0x3c43aab2,0x3c1c2069,0x3c9a9ab3,0xbc0e456e,0xbc0fa4ac,0xbc1404eb,0xbc0b6203,0xbc1bff05,0xbc3d6b51,0xbc3d6043,0xbc60472e,0xbc5e64a2,0xbc76387b,0xbc8e31dc,0xbc9ea99c,0xbcb1f979,0xbc8f6b37,0xbc615349,0xbc1b49b8,0xbbb8d2f1,0x3b50476c,0x3bd94c4e, +0xbba47f40,0xbbc5ae94,0x3b05ab8c,0xba1a2308,0xbb2c37b1,0x3b494672,0x3b7f345b,0x3bdb9285,0x3c0a3c53,0x3c329749,0x3c540101,0x3c671756,0xbab8e66e,0xbb45ad5c,0x3c69294c,0xba64b8fd,0xbb125efe,0xbb2c7306,0x396ada36,0xbac5cc3b,0xbb0542e7,0xbb1f30a5,0xbb25a806,0xbb45358a,0xbb83573c, +0xbb9cb8a3,0xbb9dbf1a,0xbb937ae6,0xbb8a0b62,0xbb9f6e90,0xbb239962,0xba984800,0x39b50245,0x3b0c746e,0x3b956574,0xb99ea73d,0xbb864d59,0xbc4e53ee,0x3ae8b83d,0x3c286751,0x3c831455,0x3b36c9e0,0x3c24d95f,0x3c2fd0de,0x3c2a3368,0x3c2ff871,0x3c30cd3a,0x3c338a7a,0x3c41f341,0x3c7743d9, +0x3c1d4a27,0x3b9eaa54,0x3c40e0f7,0x3c0b85cb,0x3bbba02a,0xbb0c3338,0x3a92ff0b,0x38df06e8,0xba8c8b5a,0xbacbacb0,0xbb0e4c1d,0xbb8761ae,0xbb0e3535,0xba7b7656,0x3a07db27,0x3b12f1cb,0x3b24fe6c,0x396cd79e,0x3af3a933,0x3a95f22e,0xbb1e3a10,0xbb7b561f,0xbcfbc27c,0xbc978cbf,0x3d00d036, +0x3bb5ee0b,0x3c890a59,0x3c2bb3ca,0x3c18fa52,0x3c0bc3cf,0x3b8ba2f4,0x3b3eae71,0x3bca4a35,0x3bbee8cf,0x3c0f0a69,0x3c6e740d,0x3c4e5aba,0x3c230683,0x3bbdc8b9,0x3bf56663,0x3c70d106,0x3adae50e,0x3b162c16,0x3b3f3b94,0xba13aafa,0xbb02169d,0xbb7e3d01,0xbbe1bd64,0x3556dd28,0x3b4418a5, +0x3b304a80,0x3b94df7d,0x3b493430,0xbb962965,0xbba590f2,0xbc81eea9,0xbcfc0121,0xbd05de13,0xbd833531,0xbd14e231,0x3c4b6ee9,0x3ba5fe16,0x3ce709bf,0x3ca6166c,0x3c8ce970,0x3c774f5b,0x3c3cb0bc,0x3c12753d,0x3c4070e1,0x3c32ec4c,0x3c96201b,0x3ce314ee,0x3cbac2b1,0x3c82c2f7,0x3bd52e43, +0x3c558d07,0x3c8cb040,0x3bdbd2de,0x3ba33440,0x3b9096bf,0xbbb3bdd0,0xbc1416bb,0xbc69128e,0xbcd39afa,0xbc7aa235,0xbbe411fb,0xba13651d,0x3c579e9a,0x3c85d6d8,0xbb26b09f,0x3b959473,0xbc053d39,0xbd32c554,0xbd37cd7a,0xbe32a70b,0xbd8117ce,0x3d2c7a06,0x3cdeb322,0x3d10a8c0,0x3d20b90f, +0x3ce4c72c,0x3c8389ca,0x3c555990,0x3c5b5a7e,0x3bf613b4,0x3c67d9b2,0x3cc69bf4,0x3d378d42,0x3cbd302b,0x3c85fae3,0x3c7824f9,0x3c8689b4,0x3cb63bbc,0x3c4e89ca,0x3be7619f,0x3c5b6844,0x3a3215fe,0xbb9ec29c,0xbc52695b,0xbcd5d9ca,0xba80e44d,0x3c3bed4a,0x3c213ac7,0x3ca8cb32,0x3bc02cd6, +0xbcee7fec,0xbcd86c9f,0xbd838eb8,0xbe14f680,0xbe193dd6,0xbd8f9394,0xbd945b41,0xbd9f2376,0xbd19cb3b,0xbc111b9f,0xbbdb43bc,0xbc7d2518,0x3a603b16,0x3d276361,0x3d4e9067,0x3d342d21,0x3c99d1f1,0x3c5713fa,0x3d0da32d,0x3cae6a07,0x3c985866,0x3c03757b,0x3cbfc8d6,0x3d0e1ee2,0x3d37fddf, +0x3b8424e9,0xbcbc182b,0xbd633936,0xbd6f7329,0xbd8a2a5e,0xbdb2b78f,0xbd9704e7,0xbd6d20d0,0xbcfb5517,0x3bc4ce37,0x3d5a4647,0x3e0fcfce,0x3d9ab0be,0x3d879033,0x3dd18c48,0xbcc111c1,0x3ddd46e6,0x3ca9dd89,0x3c632d56,0x3d1fe0ba,0x3c38552b,0x3d3cd109,0x3d6568fb,0x3d3717d1,0x3d3d22f7, +0x3d420165,0x3c492f09,0x3cadfb98,0x3cdd0b50,0x3d587e45,0x3cc6ae9d,0x3cc27297,0x3cad8f5c,0x3cdeec37,0x3ce57649,0x3c57c6f8,0xbbd85aff,0xbbc7c143,0x3bc7118b,0xbd37e8fb,0xbd9777f8,0xbda4093e,0xbdbf81df,0xbdb4e0be,0xbd9bc92d,0xbcccde56,0x3c26f529,0x3d7df2ff,0x3d97c01a,0x3d958dbb, +0x3da32b74,0x3dd86fd3,0x3d3923d2,0xbc626bdd,0xbd02deb6,0xbcd4563a,0xbcff73fd,0xbcba8bfe,0xbac555e8,0x3d9bfbee,0x3cbd0806,0x3b81bdac,0x3ac5f474,0xbc138656,0x3c7f26d3,0x3dc01dd3,0x3ce57016,0x3c37bb45,0x3bee0e6b,0xbc2c41ce,0xbc9106ec,0xbcc3595a,0xbc6018ef,0xbcf8ea8b,0xbd5a5b98, +0xbc7ff9f8,0x3cac49bc,0x3d70b716,0x3d9e6653,0x3d9b6d30,0x3d3c5233,0x3ce99f15,0xbbcbb942,0xbd32fee2,0xbdd10f91,0xbdf02e31,0xbdf2db6e,0xbcbc0e81,0x3cb57d7a,0x3a54fca7,0xbcbd30db,0x3b055b2b,0xbb263b94,0x3c0e3cb7,0x3c293850,0x3d0e2d6b,0x3c23777a,0x3c2dc6e5,0x3d0be079,0x3b9fc327, +0x3c901dc1,0x3d706ecc,0x3c8a2694,0x3bf02c18,0x3b42de68,0x3c057f79,0x3baa34c0,0x3cc1aa73,0x3d88c7d3,0x3d8e42de,0x3d393d9f,0x3d993af2,0x3db9a7d2,0x3dcc2808,0x3da2f215,0x3d57b3d1,0x3cb79722,0xbd2a09e4,0xbd98e81b,0xbd706587,0xbd9fd4c8,0xbd7c64cb,0xbc26707f,0xbbc84b5d,0xbbee706b, +0x3ba135de,0x39805bb8,0x3b686c9a,0x3c3d3595,0x3bd142d2,0x3c56bbe5,0x3cbe0dde,0x3c5e6808,0x3bee3583,0x3b50735b,0x3c682e4e,0x3ca4f6ed,0x3c95c74f,0x3c8b63a2,0x3c6402a7,0x3c69b8eb,0x3ba6fbd7,0xbbd8d3ee,0x3c345c72,0x3c978456,0x3d05eab9,0x3d20b2be,0x3cf92780,0x3c8f1721,0xbb2a726c, +0x3b40e710,0x3b9a35fe,0x3c0e098b,0x3cc3bce4,0x3cdae07c,0x3c9832ad,0xbd3124fa,0xbd8797be,0xbd67851f,0xbcb1c929,0x3c219cb7,0x3c9ed3cd,0x3c233c39,0x3bf6be0a,0x3ca06f97,0x3c1f3a11,0x3c2f5c3a,0x3c53f7f3,0x3c8c3913,0x3c9c1fb1,0x3c57de09,0x3c53a915,0x3c42ffea,0x3c4f5d6f,0x3c91b3a1, +0x3c9a0bb1,0x3c7eda01,0x3c243bd7,0x3c300d14,0x3cdb4844,0x3cbec39c,0x3c5013a2,0x3a448e6c,0xbc1c4ff6,0xbc8d1eb4,0xbc923f4a,0x3bd6c559,0x3c39b967,0xba15d851,0xbcc253e3,0xbcc7b982,0x3b0c6335,0x3c69e5a2,0x3c300fa2,0xbcee3b79,0xbb6d8e75,0xbcb3b5ab,0xbcb9da81,0xbbffa798,0x3b0f507b, +0x3c61cec7,0x3c45da8b,0x3c738ec2,0x3c6dde80,0x3c53e15c,0x3c2605df,0x3c194d18,0x3c417d8d,0x3c8765cc,0x3c922220,0x3c81b6fd,0x3c3533fa,0x3bc65a70,0x3a98aa5d,0xbbc8401f,0xbc6a1b3b,0xbc98e651,0xbca786fc,0xbca2fc4f,0xbbff5e03,0xba086de1,0x3b5050e8,0xbc206f5c,0xbca532eb,0xbcda5003, +0xbbdde96d,0x3c09e5a1,0x3c99385d,0x3b4ef457,0xbba60837,0xbc6ebc14,0xbc8ab901,0x3ca8451b,0x3cb6ecc1,0x3cd05350,0x3c99b37e,0x3cb1865e,0x3c9a53a4,0x3c6ed2c8,0x3ca399e8,0x3c5b3c0e,0x3c93e5af,0x3c9d6729,0x3c940710,0x3c881eac,0x3c9745d9,0x3c474174,0x3c252d35,0x3c1a9373,0x3bf8ff90, +0xbba3a3b5,0x3c25eada,0x3c3cdc16,0x3c1a92a0,0x3bd00bd4,0x3b875179,0x3b4e74ee,0x3bb01ac7,0x3c0b4193,0x3c594fbc,0x3c622ca0,0x3c62cd24,0x3c3c82af,0x3c7028c1,0x3c719f8e,0x3c8344a7,0x3c8d7079,0x3ca2a61c,0x3cbb1eeb,0x3cbb2f05,0x3cddd88d,0x3ccda007,0x3c783d72,0x3ccc419d,0x3cbc377e, +0x3ca0c665,0x3ca8c3bd,0x3c99ad37,0x3c889b6a,0x3c8554ea,0x3c730623,0x3c59b65a,0x3cb64a2f,0x3cd6b17c,0x3bab0a16,0x3c8bff79,0x3ca30322,0x3cbaeed7,0x3c9a459b,0x3c994f66,0x3c9794c0,0x3c8db06c,0x3c7a7617,0x3c413a7c,0x3c6987b1,0x3c81aa28,0x3c964b22,0x3ca4385f,0x3cb6b3fe,0x3cc34ac8, +0x3cc31e7d,0x3cc48f78,0x3cc18dbd,0x3cbcd78e,0x3d05a5fc,0xbc04c111,0xbc2c5ec2,0xbc15175b,0xbc4b587b,0xbc37d8da,0xbb928409,0xbbdbafae,0xbb7e1070,0x3ac132ae,0xb92c98b5,0xba5ae989,0xba8807cb,0x39a00f73,0x3ab39e9e,0x3b1b98e4,0xbaa9669e,0xbb5acca5,0xbaeaade7,0xbb8acffa,0xbbca1f33, +0xbc0670ae,0xbbdedcf6,0xbbf42cc0,0xbc0f7566,0xbc0d4fd0,0xbc140bd5,0xbc0aa2db,0xbc27e834,0xbc3347d1,0xbc4c27f4,0xbc3fafe0,0xbc3c3ff8,0xbc2ff4d7,0xbc47e9e6,0xbc4fe0bb,0xbc425e94,0xbc384b21,0xbc3e1d59,0xbcd738f9,0xbd1568b5,0xbcae3fbd,0xbc8110f4,0xbbfa86ac,0xbb657ea6,0x3ae488ee, +0xbababe5f,0xba48a9d3,0x3991a7b1,0x3a3b3d0e,0x3b15c6fa,0x3b6d0472,0x3bb9dfb3,0x3b3ed66b,0xbbc7b9f2,0xbba98251,0xbb83ab82,0xbc07a1c9,0xbb927838,0xbb8bd4d9,0xbc036197,0xbbb687a8,0xbba260cb,0xbb71118d,0xbc0b5277,0xbc56a0a4,0xbc93cbe7,0xbc853cc9,0xbc823674,0xbc46be17,0xbc4db750, +0xbbcc5f56,0xbb8a998c,0xbbe3dbe1,0xbcd47ed1,0xbd41e003,0xbd83a317,0xbd36adac,0xbcdec703,0xbc1978d8,0x3b6b76a5,0x3c28651a,0x3c013e7b,0x3c0acdc7,0x3c0aab97,0x3c3d4d23,0x3c7cabc2,0x3c65297e,0x3c9a0318,0x3c5fe856,0xbbbad980,0xbabd7b34,0xbbb9395a,0xbc0cce09,0xbb8d1952,0xbc0b75f2, +0xbc79e804,0xbc884b99,0xbc9905b0,0xbc894dc8,0xbce5425c,0xbd10c02b,0xbd300e17,0xbd31ad7d,0xbd1ed774,0xbceb6c7e,0xbd05787e,0xbce3b221,0xbd0dc349,0xbd16dee7,0xbcdd66c3,0xbdde2ac0,0xbe0c828d,0xbda9a7aa,0xbd4e055e,0xbcccab13,0xbb1a278e,0x3c1a9df9,0x3c7a9432,0x3ca747db,0x3c82c59f, +0x3c853e35,0x3cca34cb,0x3d0bca51,0x3cf1b48b,0x3c8ccccf,0xbbce8c15,0xbaefb0d3,0xba24c93d,0xbc1ad9e2,0x3a0ced64,0x3b6eef77,0xbc21599b,0xbc041137,0xbc1744ea,0xbb65381b,0xbca0d3f3,0xbd0c579c,0xbd4bd86f,0xbd3518fe,0xbd1ebc8d,0xbc8f97f0,0xbc410e4e,0x3c750dbc,0x3b0ee81a,0xbcd3076f, +0x3dcea108,0x3d2a6987,0xbc9ce86b,0xbd47867b,0xbd0c690a,0xbcf16e00,0xbb569def,0x3c2d6570,0x3c3e5cc4,0x3c88d9af,0x3cc90fa3,0x3cad4ce5,0x3cbe9845,0x3d0b5c95,0x3c7fba73,0x3c38aa0a,0x3c45e73e,0xbb86fb0f,0xbb1156f1,0xbbea03b9,0xbd05a771,0xbd37e9b8,0xbdacb0e3,0xbd470178,0xbd6764e5, +0xbdce9ccb,0xbe0699dc,0xbe264466,0xbe3d7fb9,0xbe284fd2,0xbe12fb5e,0xbdf7b481,0xbe3d68c4,0xbe3230c6,0xbdf94ce8,0x3c8c8dd8,0x3e212077,0x3e045a7c,0x3ddf10a8,0x3db7a289,0x3dc36d68,0x3d49d36a,0x3d1db695,0x3d311aa3,0x3cf8ef7f,0x3d02791e,0x3c8df406,0x3c17adb8,0x3c82209c,0x3d25c99d, +0x3c78c014,0x3bee03c2,0xbc0d9043,0xbc82f0d0,0xbc25549b,0xbc458d66,0xbca0b8f5,0x3c0bbdbd,0x3d034d1e,0x3d5ce61f,0x3d711dd0,0x3d72445d,0x3d7bfa87,0x3d82f6f4,0x3d763edf,0x3c2ec7ab,0xbd041fdf,0xbcb36fbf,0xbdcac50e,0xbd652a37,0x3d99c71d,0x3df7926b,0x3d320257,0x3d1531fa,0x3d3639ee, +0x3cabd24f,0x3c05005c,0x3d1612b4,0x3d143b37,0x3d971815,0x3cb98e69,0x3b617570,0x3c33c60f,0x3b7c6781,0x3ccb8334,0x3d879805,0x3cc08458,0x3c514916,0x3c967440,0x3c80d7f6,0x3bf22534,0xbb83f663,0xbb12b23b,0xbc654f21,0xbcdfcb6b,0xbbfc940e,0xbc52c90d,0xbd34db70,0xbd7f1475,0xbd8735b3, +0xbd5154f4,0x3bc39421,0x3d07439d,0x3d879c44,0x3cc8e576,0x3d137143,0x3d35e811,0x3d579b41,0x3c840a97,0x3c1442c4,0x3cf41a8c,0x3ca60e63,0x3c9e2cc6,0x3cf9f625,0x3cc6a17d,0x3d07621e,0x3c7c77b8,0x3c015fbb,0x3cb2e540,0xbb71173d,0x3be702d5,0x3d348167,0x3d16331c,0x3d2ba4c7,0x3d10943a, +0x3cc90e1b,0x3cf85d16,0x3cb33131,0x3c4c37eb,0x3c53dc41,0x3bcfd9f2,0xbbabffa8,0xbc7aae46,0xbc8e7cea,0x3bb1111a,0x3cbe5675,0x3cfd6778,0x3d1e6277,0x3cee054d,0x3cbfcb88,0xbc6c4c50,0xbb4eb579,0x3d48c0a7,0x3d20ee09,0xb952fc4d,0x3c1ad312,0x3b5dd361,0x3bb37ddf,0x3bec897b,0x3c620b3e, +0x3ca2d6dc,0x3cf00c15,0x3c9d9234,0x3c5177f4,0x3c03a6c6,0x3c948071,0x3cc5d07a,0x3cac6bf4,0x3c8d51b6,0x3c4bf4d4,0xba066661,0x3bade328,0x3c88bbe9,0x3a548e01,0x3c1a7948,0x3c1fa0c0,0xbcf480bc,0xbc4c82cb,0xbbffe267,0xbc85f539,0xbbb09c6d,0x3c0d8d00,0x3cb6f816,0x3be0562d,0x3887f504, +0x3c0dc795,0xbb31b578,0x3b624ead,0x3d156ac2,0xbb6d071e,0x3cba5515,0x3be94c95,0x3cb1723b,0x3cc3eb4e,0x3c8d7d0a,0x3c68cd0b,0x3c203671,0x3c9a1710,0x3b511200,0x3b6265d8,0x3c37ffe2,0x3c1ce480,0x3bec40f0,0x3c1b90df,0x3c857819,0x3c77253c,0x3c05ebe2,0x3be94900,0x3c3743ba,0x3bbbb0ad, +0x3bd5c690,0x3bde12d1,0xba1ada31,0xbc71e8bd,0xbbcfbfe8,0x3cad62d4,0x3c8789d5,0x3c19877a,0xbb72879c,0x3b63aedb,0x3bd5e8f6,0x3c859553,0xbcb88792,0xbcf0fc4f,0xbc5b7b87,0x3c80a1c1,0x3c5f793c,0x3cd21785,0x3c7d7ee9,0x3cc1337f,0x3cf04fe0,0x3d01c6b9,0x3d0a7a99,0x3d1124c8,0x3ce94215, +0x3c9aab18,0x3c2cce9d,0x3bd15033,0x3c542dc4,0x3c1c1d37,0x3c0657d9,0x3b36a6b7,0x3b3dfb66,0x3b254f1f,0xbb1c023a,0x3b65bb4b,0x3b7b494e,0xbab78e35,0xbb33e76e,0xbc085e4e,0xbc4b2063,0xbc83495b,0xbbeaeb43,0x3bb4e3b0,0x3c801149,0x3c57d0e8,0x3c091bfa,0x3c3954fc,0xb87010dd,0xbc0dd548, +0xbcbc1db0,0xbbf4835c,0xbbb89ec0,0xbc5b65d4,0xbc06c818,0xbc5eb5a9,0xbc696f70,0xbc737c6b,0xbc950542,0xbca02c78,0xbc90b161,0xbc6bcf89,0xbc14e92b,0xbc18a1d7,0xbc05d103,0xbbcb29bc,0xb994fbd9,0x3a63e6bc,0x398de79d,0x3b6ddd73,0x3c659304,0x3b8ed651,0x3afe6403,0x3b1f144b,0x3b04fd03, +0x3a946d5e,0xba25e09c,0xbbad375e,0xbb058432,0xbae0673b,0x3ac1f7af,0x3becd1e1,0x3c73b6f8,0x3caf5401,0x3c8fe730,0x3c711164,0x3c2cdc99,0x3b5ca89c,0x3ba50a1a,0x39a50d7b,0x3b8f31b8,0x3be216d5,0x3c93d2bf,0xba7ff96a,0x3b9b3f2f,0x3c5a984a,0x3c7b8345,0x3c85f894,0x3c8e208d,0x3c9f52bd, +0x3cadaa1c,0x3cb8f485,0x3c144b7a,0x3b5fe724,0x3cc67bac,0x3c3a512a,0x3bed134f,0x3b2b4500,0x3ba5a1f7,0x3b9cc47d,0x3b9c6d9b,0x3ba94c24,0x3bd4521c,0x3c010e6b,0x3c21d326,0x3c3f9878,0x3c53732d,0x3c5ee57d,0x3c5b7291,0x3c7674f2,0x3c40023a,0x3c20e1e9,0x3c09d409,0x3bcfc4c4,0x3c037c66, +0xbc500408,0xbc2e3d37,0xbc031a67,0xbbd3dd2d,0xbbfd77cf,0xbbfa4819,0xbbc245b3,0xbbc27e15,0xbb7814ee,0xbb98de89,0xbb8a56f1,0xbb7d43ef,0xbb6fac40,0xbb695459,0xbb828e63,0xbba3e801,0xbbc996bb,0xbbab2ba0,0xbbea5ff1,0xbc0b775c,0xbc228207,0xbc2d387d,0xbc30f006,0xbc27f58a,0xbc3f690e, +0xbc479275,0xbc3cb8f6,0xbc514873,0xbc6742d5,0xbc93b477,0xbc6e3be0,0xbc8334d3,0xbcc28a06,0xbca122c2,0xbc918673,0xbc7ba8b0,0xbc4066e0,0xba82a263,0x3bb838ec,0xbc0aaa57,0xbb1994ad,0x3b6a7549,0x3ba7e303,0x3b6a4423,0x3ab77576,0xbb8eafad,0xbbb7f11e,0xba8bd238,0xbb209955,0xbaaf4be7, +0xbb11b9b0,0x3ae3f4c1,0xb831bdc6,0xbb9da15f,0xbbfffb9e,0xbc0117ea,0xbbdf702c,0xbc26e86e,0xbc40b625,0xbc3d9ed2,0xbc8596c0,0xbc972aa8,0xbc92bf85,0xbcc29327,0xbcd651c2,0xbd0b14e1,0xbcc26f62,0xbcf3637b,0xbd57b549,0xbd3f069c,0xbd2a523b,0xbcd4b76f,0xbc1261a8,0x3ca775be,0x3ca174ce, +0x3bbdf8ea,0x3c14fc3f,0x3c1d1004,0x3c0dfbee,0x3c3a4ef3,0x3c583be7,0x3bb0e05b,0x3b45b748,0x3c3cc044,0x3c02fd04,0x3c3bee80,0x3bed7e54,0x3c6c1c6e,0x3c479352,0x3b9d33c5,0xbb1338cf,0xbbb28310,0x3887c3db,0xbbd13425,0xbbdc5e68,0xbae2c34c,0xbc2d78d6,0xbc556769,0xbc032079,0xbc804ccc, +0xbca935ee,0xbd29af34,0xbcad2ac9,0xbd135259,0xbdaf5c83,0xbd891f6f,0xbd6d3919,0xbc5289bc,0x3c1b61be,0x3da9e698,0x3d90e684,0x3d0fbb08,0x3d030c13,0x3d489dca,0x3cfc7773,0x3d13e751,0x3cd8068d,0x3c4146c1,0x3c4ffc65,0x3cb1e3b4,0x3c904f10,0x3cc16744,0x3ce911c4,0x3ced6044,0x3cc9d99b, +0x3b210046,0xba7109a7,0xbbcfcc46,0x3b88c590,0xbb603b1f,0xbc1ae3b5,0xbabde02e,0xbc922c96,0xbcbbfcb5,0xbc813257,0xbd0ba998,0xbd29ed7c,0xbd80d18f,0xbd0ca5d1,0xbd82de3f,0xbe153ebe,0xbe046b99,0xbdd64d78,0xbc8ae2a9,0x3d65f9f0,0xbda1896e,0xbc6ec11f,0x3cbeeafa,0x3c39d30e,0x3a9a8aa0, +0x3b279e61,0x3b38aac7,0x3c260100,0x3d187e6b,0x3d15d5c4,0x3c880337,0x3cdc79f8,0x3cee3d43,0x3cc9530d,0x3ca853f7,0x3c9cfe22,0x3bafdbe5,0xbb70480c,0xbc743120,0xbc0803d8,0x3cba5f5f,0x3cf13404,0x3cfa1049,0x3ca401df,0x3c46bf67,0x3caf90cb,0xb9a3460a,0xbc0beb25,0xbd09add1,0xbc9ab510, +0xbcd20e51,0xbca6ac4d,0xbcae302e,0xbd4d3089,0xbd710299,0xbd9e6fb3,0x3cc60e7f,0x3d88ce1c,0x3dc86b7f,0x3da7e1b5,0x3d8417da,0x3d267a27,0x3ced5d07,0x3d839f3d,0x3cc950e7,0x3c759abb,0x3b826751,0x3c251948,0x3ca24bf0,0x3ccd65eb,0x3c6c89f1,0x3be0e463,0xbc5c28e7,0xbca23f4f,0xbcf2c7f1, +0xbd1256f1,0xbc8a4a0c,0xbc94bbfd,0xbd300641,0xbcd8c839,0xbcdc978d,0xbd36e874,0xbd95fbfa,0xbdd22e15,0xbe075ce0,0xbd994c34,0xbd8818f8,0xbdb7c07f,0xbdc32864,0xbca67d37,0x3dfdf839,0x3d5ec3c1,0xbd10945f,0xbd32417d,0xbd2b4309,0xbd13a18a,0xbbdcfe1c,0x3d125edc,0x3d75c0bc,0x3d839966, +0x3c810d1d,0xbb84bbe9,0x3c82e45b,0x3ae91e44,0x3c7c0661,0x3cd7c7b3,0x3d180da3,0x3cf75e28,0xbbe52310,0x3b499916,0x3b118901,0xbc4770d1,0xbd5994f6,0xbd86f137,0xbd897fbc,0xbdd904c4,0xbdf328da,0xbdcd6ed8,0xbd9e2a52,0xbd15da09,0xb9395d3e,0x3d452de6,0x3db2353e,0x3dace937,0x3d99e95b, +0x3cb534e8,0x3d07a44a,0xbbfe43c2,0xb9f4a0a4,0x3aaacca3,0xbbd46483,0x3c165388,0x3ca0a96f,0x3c983c79,0x3c4cf5fd,0x3c3aba92,0x3c9a0ff0,0x3c8a78ab,0x3ccd07c0,0x3c7d5551,0x3c9619b3,0x3c8b751a,0x3cd1ad97,0x3cf6b34b,0x3b31de6f,0xbb662948,0xbbbf275e,0xbc6d9d07,0xbca89e64,0xbc5171bc, +0x3af04733,0x3ca3716e,0x3d15913e,0x3d823048,0x3da4c380,0x3de84a25,0x3e13c4d0,0x3e0b0f16,0x3dc62e0d,0x3d4507f5,0x3c7ff811,0xbc134c09,0xbcacef23,0xbc774eae,0x3bbf90ed,0x3bdbc318,0x3beb3e1e,0x3b21c3f5,0x3bb8a8f0,0x3c6e4c0f,0x3cc11873,0x3cfe3cb4,0x3c91dc36,0x3c087bf4,0x3c2d13ad, +0x3c1b863b,0x3c3653a7,0x3c90f104,0x3b88e3d9,0xbb436610,0xbbdd21b4,0xbc6501ce,0xbc77be1f,0xbcabc416,0xbbd5ce5d,0xba413d90,0x3c71864c,0x3cce3281,0x3d1cddd5,0x3d86fff0,0x3d9a1f0c,0x3d847a97,0x3d29137b,0x3cc429a9,0x3c3b4601,0x3c8ae6e2,0xbcd018fd,0xbd13be9c,0xbca8d6f3,0x39963f4c, +0xbc86f4d3,0xbba93ffd,0x3aa2867c,0x3a667694,0xbb1fd1c4,0x3b2307ee,0x3b37525b,0x3bb39a57,0x3bb06266,0x3bdea346,0x3c122296,0x3c458b1b,0x3c8e0fcc,0x3cebd6ec,0x3c58b33c,0x3bc3f50a,0x3c114857,0x3c09c773,0x3b273145,0xbb911c4c,0x3b6f4bf9,0x3c64da41,0x3cce417f,0x3d302041,0x3d3d7cb2, +0x3ce1b5c6,0x3ca63238,0x3cbe1562,0x3d02469d,0x3d5f863f,0x3d4db92d,0x3ce66132,0x3bbe90d5,0xbb3773d3,0xbabcf0c0,0xbc4b58fd,0x3c12344a,0x3c6bbea6,0x3ca5a12d,0x3c4a1a3a,0x3c43ad50,0x3c678674,0x3c563af3,0x3c88afa7,0x3c7dcde1,0x3c8e18ee,0x3c5d7d49,0x3c7469ae,0x3ad9547f,0xbaa2eb50, +0x3b3b66c1,0x3c3e3bf2,0x3c80f51f,0x3c90e861,0x3c9c677f,0x3cdc76f9,0x3cb86bc3,0x3c3c2ba5,0x3a568b11,0x3adf0856,0x3bbf7fb3,0x3c4a81d3,0x3c482504,0x3c227325,0x3bde8493,0x3c155d7c,0x3c78aa05,0x3ccae3b8,0x3cb60839,0x3c8377ec,0x3bc67d5f,0x3c29b25a,0x3c2618b4,0x3bad30e0,0xbb215a11, +0xba5277da,0xbb77e66d,0xbbf38200,0xbc062d14,0xbc311c37,0xbbce65fa,0xbb290bbc,0xbb03b27d,0x3b8926c9,0x3c161b67,0x3c423e91,0x3bc7a172,0x3be6e753,0x3bc85005,0x3ba08257,0xbbd0dde0,0x3c407283,0x3c53d5d6,0x3c5df282,0x3c80e03f,0x3c893aef,0x3c7e0326,0x3c699572,0x3ca79f56,0x3ce01fb4, +0x3d0a3816,0x3d159f1e,0x3d13da50,0x3d1263e8,0x3ce780d0,0x3cc9eea2,0x3ca11df2,0x3c811a62,0x3c5a395a,0x3c531e95,0x3c455f7f,0x3c1fb857,0x3b25d96c,0x3c5bf6d9,0x3c2190a8,0x3b287cc3,0x3b3041c8,0x3b1b221a,0x3b4b81d8,0x3af9fdb0,0x3aaddb53,0x3b2d6080,0x3c50f238,0x3c8c7807,0x3b0d1853, +0x3c5302be,0x3c88a4e8,0x3cb2443c,0x3c9caf9f,0x3ca54026,0x3ca4f8d9,0x3ca1fab6,0x3ca61925,0x3ca4a573,0x3ca44b08,0x3c97e00a,0x3c8c65bf,0x3c8ac20c,0x3c90229e,0x3c9cda30,0x3c9343b9,0x3c8b1728,0x3c846fe9,0x3c6de693,0x3c89cf45,0xbc6ae23b,0xbc7c4e7d,0xbc921942,0xbc89279b,0xbc4f32e8, +0xbbe7ef15,0xbc5219b2,0xbc323b1e,0xbc0993f9,0xbc30e3d8,0xbc352723,0xbc22797d,0xbc21287a,0xbc24a795,0xbc2a8324,0xbc3b6298,0xbc3eda55,0xbc24ef3b,0xbc56b667,0xbc5f0ca2,0xbc37e9a7,0xbc417a31,0xbc43ca5c,0xbc4e2816,0xbc48c921,0xbc4aa6bc,0xbc3fe0f3,0xbc6b84fd,0xbc75087d,0xbc76feb1, +0xbc566e77,0xbc68f751,0xbcac75ea,0xbc8afc60,0xbc8fd89e,0xbcaa82ea,0xbc8e7658,0xbcc8683f,0xbcb976a9,0xbb2bbb8f,0xbc2ae5db,0xbacd9cc2,0xbb92f72e,0xbb7aa3ba,0xbaf546b3,0xbc038102,0xbc1b5fcc,0xbc073761,0xbbbbf73f,0xbb69ba75,0xbbabdaf7,0xbb32b830,0xbb91332b,0xbbeea710,0xbc1575d5, +0xbc33c5a8,0xbc1bedb4,0xbc402544,0xbc5a2fbd,0xbc703138,0xbc607639,0xbc56f3c4,0xbc31bd10,0xbc846acf,0xbc92ab14,0xbc9ad01d,0xbc730232,0xbc93b125,0xbd05eb43,0xbcb032e7,0xbcbe62a9,0xbd057adc,0xbcdd6334,0xbd1fb716,0xbce9f1ed,0xbc063afa,0xbc3e367c,0x3c330578,0x3bfc6aa1,0x3ba9bf10, +0x3bead00d,0xbacc04f5,0xbaf20ec2,0x3b45f163,0x3bc33400,0x3c04643a,0x3b414bad,0x3bd01773,0x3b9f40a1,0xba223c75,0xbb90b526,0xbbde9ef3,0xbb3f6f07,0xbbb15230,0xbbc1664c,0xbc2fe3fd,0xbbf88fd7,0xbc1fbed4,0xbc14761c,0xbcaefa18,0xbcc958e4,0xbcc72482,0xbc862be7,0xbcaa8b2f,0xbd43c831, +0xbceb8640,0xbd105d5f,0xbd79dc49,0xbd22a0d1,0xbd8cfcf8,0xbce5f39a,0x3ca98875,0x3ca209dd,0x3d0a3954,0x3d13afbf,0x3cfc6106,0x3cd1ae91,0x3c26dd6b,0x3bdf055b,0x3c690b87,0x3c92b89a,0x3cd3baf8,0x3ce59125,0x3cd91aa7,0x3ca3509b,0x3c407981,0x3bc961c5,0x3ade77ae,0x3c101a58,0xbae54236, +0xbc07eb6b,0xbc80693c,0xbc31f07c,0xbbf8b00d,0xbbd4297c,0xbc971b06,0xbcdd2639,0xbcec6065,0xbca2496d,0xbce72d54,0xbd6db357,0xbcccb9b6,0xbd1c8293,0xbdad2250,0xbd877197,0xbdba1707,0xbd913288,0xbdd8db51,0xbdad3248,0xbcf97e3d,0xbc19d83e,0xbc1d7c15,0xbcb92530,0x3c935cf7,0x3d0e8032, +0x3c9c3a89,0x3cf957b2,0x3ce752ea,0x3c0465b5,0x3caa54d3,0x3cc43fb5,0x3c0df93a,0x3bd14aa7,0x3bff5196,0x3c8e40a3,0x3c2cfc1d,0x3c8bcf03,0x3d0fb2be,0x3c91982a,0x3b78034c,0x3b34694b,0x3bbffff3,0x3bcd98b6,0x3ba3583f,0xbc08a41e,0xbcc9812c,0xbd91d93a,0xbd8c4f02,0xbd79b35f,0xbcb36bdc, +0xbd77e9d3,0x3d73c301,0x3d859c5e,0x3d2e915e,0x3d321b2e,0x3cbcae9d,0x3c82127a,0x3cad1af8,0x3d50c892,0x3cb341d1,0x3c33207c,0x3b9facc4,0x3a42bad6,0x3c505285,0x3ce0bccb,0x3d02f62d,0x3ce5de82,0x3bda5a75,0x3bb96737,0xbc0fe54e,0xbc28e017,0xbbde5add,0xbcf44e7e,0xbd78d1fa,0xbd76e9c1, +0xbd4d917a,0xbc834d1b,0xbc66f886,0x3c3346e6,0x3d12cd94,0x3c7de81d,0xbd1cf564,0xbe0ea8b9,0xbda8ede4,0xbdb2f1f5,0xbd9a2841,0xbc03d061,0x3c9a7095,0x3c54a3bd,0xbc7e5307,0xbb6310d6,0xb99484a0,0x3d539a66,0x3d3de83b,0x3d174197,0x3bc2fa2b,0xbc6ba367,0x39b0b527,0xbb6a59dc,0x3b6b42f4, +0xbca460ce,0x3cf26e83,0x3d069088,0xbca5f324,0xbcb22fc7,0xbd00bf91,0xbd035953,0xbd15f202,0xbcd73eb3,0xbc21cc22,0xbb9f798f,0xbbbab4b6,0x3a5b9bf6,0x3c4cc532,0x3cc7134e,0x3d08eee4,0x3d2ed7bc,0x3d3d968c,0x3d640ac6,0x3dc0b566,0x3e03c333,0x3e372310,0x3d780f74,0x3a8e0a5e,0x3c52590c, +0x3caf8d36,0x3c9dab98,0x3b4fee5e,0x3c0efcc2,0x3c060915,0x3c26a96c,0x3d091659,0x3d0b33cf,0x3ccf701a,0x3c973afb,0x3cb363eb,0xba6c3790,0x3cefb2a8,0x3cce98ec,0xbc881f85,0xbc3ff62c,0xbca4a0b4,0xbc3d0a82,0xbbb2bb61,0xbbd3d42a,0xbc21e6d1,0xbcaefcf8,0xbc23cf70,0x3cc88bb7,0x3d1ce8b5, +0x3d3a9ee8,0x3d228d7f,0x3db0ed64,0x3db11c0e,0x3d5f9f4d,0x3be4ea6a,0xbbf3d669,0x3d1a50b3,0x3a784b50,0x3d0554c9,0x3c01a314,0x3b1fe334,0x3be83931,0x3c80972b,0x3cf55e62,0x3cf70e55,0x3c866ee5,0x3c3e9f02,0x3bc5a334,0x3c216727,0x3abe9b4c,0x3a626d89,0x3c17d8a3,0x3b88955d,0x3b902149, +0x3c01abe8,0x3bea4c59,0xbb25eaa7,0xbb4701a9,0xbc855f4d,0xbc45429f,0x3c8c825a,0x3cb5b4e5,0x3cd31985,0x3d2ac3cb,0x3c848294,0x3c6c4c18,0x3b6a6989,0x3d085f66,0x3d126541,0x3cbf6cd4,0x3bb76096,0x3a99d8d7,0x3ceaae44,0x3d14ee8f,0x3cdc389e,0x3cc954b8,0x3c42e59b,0x3c2e634d,0xba5f78a1, +0x3a75ac7c,0x3b4a3d72,0x3ba8be7a,0x3bd5517c,0x3b8f306f,0xbb3d3cd4,0x3c284b92,0x3c86df3e,0x3c74ad8b,0x3bccdc4f,0x3b825cfe,0x3b0067ab,0x3b1a9cdb,0x3b96b274,0x3b81785c,0x3ba28a8c,0xba3af6c6,0xbc745cef,0xbbf3633c,0xbbd2b3fe,0xbc04662a,0xbc30d216,0xbc448300,0xbc4dbe3a,0xba244653, +0xbb692b57,0xbc9122b3,0xbce400fb,0xbcc05461,0x3b8f2b4c,0x3c553121,0xba903499,0x3b418636,0x39f6c35c,0x3c0b77ed,0x3c3e87bc,0x3c1c5cdb,0x3c007593,0x3bb59e9b,0x3c39cad6,0x3c7d44b9,0x3cc9d238,0x3c663cfc,0x3c54cbbb,0x3ba45bc8,0x3c1074c5,0x3c02d6f0,0x3c28e427,0x3c5ba760,0x3c9a955a, +0x3c689d21,0x3bcd511f,0x3c3a9f0b,0x3c427aa5,0x3b14788e,0xbc3b988f,0xbcd194e6,0xbc31d87d,0x3ab523ad,0x3c5b57f6,0x3a4b67d5,0xbc238ad3,0xbcafd81b,0xbc616d66,0xbc25395a,0xbbd05ab5,0xbbe1ad6c,0xbb833fe2,0xbb9f60dc,0x3b722db5,0xbb7d332c,0xbb3a9065,0x3a948680,0x3b48b28f,0xb9df5088, +0x3b1fba9d,0xba8cc3a2,0x3b0808eb,0xb9657bc0,0x399abec9,0x3ad0cf1b,0x3c3bba40,0x3c58a82c,0x3c60d213,0x3c85b9b2,0x3cfada39,0x3cb14468,0x3cc1a628,0x3cce4fd4,0x3cd8af1c,0x3cf0973a,0x3d122871,0x3d24fd7e,0x3cf9df19,0x3c9a1031,0x3c282b2f,0x3b2bbec6,0xbae8e8cd,0xbc129d07,0xbbee6154, +0xbbee4796,0xbbca909d,0xbb8b55b9,0xbc553b3c,0xbc72a054,0xbb4d727e,0x3b9c0a99,0x3c89d0ef,0xbbb9bf8c,0x3bb09eec,0x3c583ee6,0x3c565cbb,0x3c71d1db,0x3c74a7d4,0x3c8f88df,0x3ca01d97,0x3ca77693,0x3baa5995,0xbbc55212,0x3cc2e6ce,0x3c204af9,0x3b11ed52,0xbc3e52ca,0xbc01ec39,0xbc0191b0, +0xbbf213c1,0xbbdf0a96,0xbbf94fc7,0xbbd015e6,0xbc186a9f,0xbc215a4b,0xbc396bcf,0xbc44d2b7,0xbc5d0ad6,0xbc811f33,0xbc6d7189,0xbc664a0c,0xbc60f647,0xbc61aa8e,0xbcac16c9,0x3aae0ce6,0xbb2ae03b,0xba1d8450,0xbc098a5a,0xbc3b312b,0xbc5cb71c,0xbab336c0,0xbbc6b591,0xbc3996a9,0xbc572315, +0xbc57a302,0xbc4d21d0,0xbc4243c8,0xbc438714,0xbc52f1e8,0xbbb0f50b,0x39436799,0xbc66ba15,0xbbe099dc,0xbb5b6cf6,0x3afb7106,0x3b07eb6b,0x3b187d7e,0xb95f28bf,0x3adbb0b1,0x3b13c052,0x3b701c98,0x3ac6c7db,0x3abe5740,0x3b87b5c3,0x3a651853,0xb8720fb4,0x3a55abc3,0xb9c4f6e1,0xb9caab38, +0xbab82242,0xba96a30d,0x39c0935a,0xbbac108d,0xbcc47d8c,0xbc34c514,0xbb902346,0xbb784b1c,0x39c1313e,0x3b29e33f,0x3b1a8cf1,0x3a4e26f1,0xbadc263f,0x3b72b420,0x3ba40194,0x3b1b2d73,0x3b5d2717,0x3b7a4482,0x3b0fdbcb,0xba01d38b,0xbbbaf38c,0x3a9392e4,0x3bd02892,0x3be69a70,0x398da71b, +0x3b96b46b,0x3b9b541b,0x3be55185,0x3a8250c9,0x3a9cb71b,0x3c1aee23,0x3b2420e4,0x3ab96c90,0x3b95764d,0xbaa50c2e,0xbb008768,0xbb522224,0x390e029a,0xbcc4edcc,0xbd05e327,0xbd2a9d80,0xbcf8d77e,0xbc22b9b9,0xbbc11ffc,0x39b70a5c,0x3bcde5de,0xbab15988,0x3a1a55ce,0x36f889be,0x3c1170e9, +0x3c088833,0x3aab60c1,0x3c07af88,0x3c160009,0x3b47d791,0xba5c9acc,0xb9c00289,0xbae72f33,0x3c0227c4,0x3befb99d,0xbc106405,0x3a5ef5b9,0x3ac7be9f,0x3bfda8f3,0xbb6fd763,0xbb2f9226,0x3c3c4def,0xbbae6f1b,0xbc30d2f0,0x3ac2996f,0xbc068dee,0xbb686f1d,0xbc9bcd9a,0xbcadb07a,0xbc744491, +0xbd347130,0xbd9738cf,0xbd4a7455,0xbc604afe,0xbbc0a8cc,0x3bd450dd,0x3c6b11b7,0x3bfba541,0x3c16494f,0x3c412e47,0x3ca27655,0x3ce01fd0,0x3c9853b5,0x3cd94cec,0x3ca7407f,0x3c2c4809,0x3be257bb,0x3c1c9084,0x3b8afc45,0x3c8eec18,0x3c985d05,0xbc04287a,0x3bac5fd2,0x3bb792ea,0x3c1387a3, +0xbc01485e,0xbc013e0e,0x3c8b24bf,0xbb70b7b9,0xbb731d6c,0x3c85c36e,0xbb4949a0,0xbbf39a30,0xbcc5c429,0xbcc8bdde,0xbd010b52,0xbce425cf,0xbd880ff7,0xbd869b1e,0xbd27ec67,0xbc8bb6fc,0xbbac43bc,0xbc435274,0x3bcf17ed,0x3ca1544d,0x3bde084f,0x3cd2be3f,0x3cb21f97,0xba4bfc63,0x3c6e27f4, +0x3c446ae6,0xbb677d25,0xbbc1cda7,0xbb7f0205,0xbc7803ac,0xbd00403c,0xbcf4ff22,0xbd0e66fd,0xbd14fd72,0xbd24bcde,0xbd205d9b,0xbd147651,0xbca5a1c4,0x3ba7277f,0xbc920181,0xbce99ef5,0xbd4bda68,0xbc968697,0xbaf59c20,0x3bf9f344,0xbd0dc842,0xbb27b037,0x3d2e9b39,0x3d801a51,0x3d12f253, +0x3a955c1c,0x3bb6c0e6,0x3c75e3bd,0x3d10983a,0x3c267a7a,0xbb08b1bb,0x3bc30a94,0xbbb5fa7c,0x3c2f6cbb,0x3cf25ec7,0x3ce98681,0x3cd2ea40,0x3c65ffc7,0x3c3497cd,0x3b0bdfd1,0x3bf236af,0xbb7cba49,0xbb519ec3,0x3c9964a9,0x3be81a47,0xbb8579f9,0xbb4e666d,0xbc1d59a1,0xbcab8345,0xbd2c9f53, +0xbc955a23,0xbcabd75e,0xbd9b389f,0xbd244640,0xbd10bb09,0xbd52e9e4,0xbcafea2f,0x3d89a454,0x3ca181c8,0xbc829832,0x3a42fe84,0x3d210f9d,0x3d8feb45,0x3d5fda13,0x3bf76cd0,0x3b83a255,0xbc163d2d,0x3993e0ff,0xb929c663,0x3b7a1329,0xbd057b7a,0x3cf6c79f,0x3d1a33db,0xbc7cf784,0xbbc395c5, +0xbc81a56b,0xbc8cba82,0xbc13db35,0xbb460e50,0x3a600cf5,0xb984bb7b,0xbb870880,0xbbbd892d,0xbd358226,0xbd5b5614,0xbd226b89,0xbcf17dd4,0xbc9893ea,0xbca92d22,0x3d67428c,0x3de1f1e2,0x3e03020e,0x3dd8110d,0x3c9b9172,0x3c395d3e,0xb8e3c44a,0x3b1d6734,0xb9b2d617,0x3c88f4aa,0x3cbf20e5, +0x3c66e4aa,0x3d0e1588,0x3ce8d3de,0x3c576f4c,0x3c5d2298,0x3c9d1511,0x3b6ae7e7,0x3d09e51b,0x3d055e19,0x3babdf55,0x3baa46e4,0xbba6a10a,0xbc54ee3c,0xbd079bda,0xbd360dbe,0xbd469338,0xbd8c92eb,0xbd9d85df,0xbd9b1b37,0xbd5b6799,0xbcbe8187,0xbbe382af,0x3cf59451,0x3d2ed77f,0x3c4fea53, +0x3bab1e3c,0xbc9a11d3,0xbd0febf5,0xbb55bbee,0xb99706d6,0x3c09c8b7,0x3c921aa1,0x3c9cfeb8,0x3c3eba41,0x3cb1266a,0x3c92d006,0x3b1c61ef,0x3b9da109,0x3abedc8e,0xba5fc4ab,0xbb46b6f2,0x39a28c05,0x3c316c8a,0x3c6717dd,0x3c6111de,0x3c27ebe1,0x3c7324a0,0x3c0a61ef,0x3bd99032,0x3bba45fa, +0x3c019020,0x3c644283,0x3c5b7855,0x3c8ecb00,0x3c701b76,0x3c75b730,0x3c1f19c9,0xbb08ad56,0x3be08314,0xbbed52ad,0xbd3f6596,0x3bc3f5ca,0x3cf7d282,0x3d08e5b4,0x3c112860,0x3cd044f7,0x3c5fcf2b,0x3c0c73b1,0x3ae8efe8,0x3bc7059a,0x3c361f31,0x3c85b3c4,0x3c822c0b,0x3c6f2b92,0x3c4b96db, +0x3c44dc80,0x3bc76a59,0x3ba8713c,0x3a73458a,0x3bb87ac1,0x3bc22ad8,0xb7ec3551,0xbba42491,0xbb5ed0d8,0xbb134c98,0xbb4f3267,0xbc198315,0xbc9cb71f,0xbc8ee0dc,0xbc8ad67c,0xbbf8fb00,0xbc411690,0xbc188d2d,0xbb3b3086,0xbc4dbbce,0xbc971b88,0xbd097c70,0xbc10cb98,0x3afe9bd7,0x3c346d1f, +0x3cde9e71,0x3c84e098,0x3ca2ab6b,0x3c8d286c,0x3c702ac1,0x3c5527cb,0x3c342ff0,0x3c00039d,0x3bbf7920,0x3bcde256,0x3bcc024d,0x3bdfb41e,0x3bc8e3a0,0x3bbb7264,0x3bbbea21,0x3ba5712d,0x3b9fdbfa,0x3bcbbe1f,0xbafc28de,0xbbe2d07f,0xbc9a5ef3,0xbc65011a,0xbbe24873,0xbac5c52f,0xba5659a4, +0xba718a1b,0xba25cb2d,0xbb23bc5f,0xbb89a21c,0xbba3c53e,0xbc54a0e0,0xbc95dc1f,0xbcda43c0,0xbc4f80a2,0xb9ec629a,0x3c383712,0x3c6613ba,0x38c55ad9,0x3bab0662,0xbafbeb17,0x3bed206d,0x3bcfa0c0,0x3bf06980,0x3c18bb31,0x3c496094,0x3bf31765,0x3b848acf,0xb9a2c0cd,0xbb4827fd,0xbb9a5a18, +0xbc0e06c2,0xbc0038e7,0xbbec243c,0xbb8103fe,0xb9ce219e,0x3b358bde,0x3b136545,0x3ae547f6,0xba2db664,0xbae84440,0xbb985975,0xbbd64ef2,0xbc092a65,0xbc219a58,0xbc4264fb,0xbc61cc40,0xbc7fb638,0xbc8bb144,0xbca7f3ef,0xbc8195b4,0xbc5b5f27,0xbc0f7613,0xbbb3634d,0xbbd6c0d0,0xbb528da1, +0xbc4a32aa,0xbc8566cf,0xbc9c0d8b,0xbc02e57c,0xbc667d9d,0xbc672bb2,0xbc81e366,0xbc8a5126,0xbc934015,0xbca11aae,0xbcafee51,0xbcc31555,0xbc9ef9d4,0xbc504ee6,0xbca4d475,0xbc97c037,0xbc768db0,0xbbac191e,0xbbd3a745,0xbbe733ab,0xbbf00f69,0xbbe22e09,0xbbd7a062,0xbbd0f9e6,0xbc00aaef, +0xbc1360c6,0xbc246122,0xbc31da09,0xbc3bfd10,0xbc5074c2,0xbc2f5aa9,0xbc1c923d,0xbc0e3523,0xbbe6b4d5,0xbc2cb6df,0xb9d592d3,0x3b433f07,0x3a2007c3,0x3ade13a4,0x3ac11073,0x3b6ddf09,0x3a2d03fb,0x3b7a2cb9,0x3be107aa,0x3bb1f7b6,0x3baab4b7,0x3b8e5953,0x3bc51d5c,0x3bcbfc49,0x3b971dec, +0x3bac6266,0x3b6b28a9,0x3bd458c2,0x3b8f7309,0x3ae2f7d5,0xbb69ec07,0xbab1b4b9,0xbac5fc47,0xbb090282,0xbaca912e,0xbabb21b3,0xbb0b6868,0xb9f721c0,0xba136e58,0x39edf753,0xbb49d8e6,0xbb531520,0xba1ec9ff,0xba1d3337,0x3a6a134e,0x3b3342d2,0x3b8498ea,0x3c1ffdeb,0x3bf04815,0xbb4307a5, +0xbaf9424b,0x3b1ac9e7,0x3b291039,0x3b4ab1f1,0x3bd9dc3b,0x3af13972,0x3ab11b8d,0x3b2196ff,0x3b776cfa,0x3b7f209e,0x3a97729f,0x3be3df96,0x3be67fd8,0x3bc3bf30,0x3ae2a867,0x3b362af5,0xbba96f0b,0xbb34865e,0xbb384bc0,0xbbb9607d,0xbb980d4f,0xbb9163e8,0xbbad69ad,0x3a599baf,0x3b21a3ea, +0x3b710cfa,0xbc12a646,0xbc3a8989,0xbb778cc3,0xbb96b256,0xbaafa4e2,0x3b50729e,0x3c192edb,0x3cefd5a6,0x3c475d82,0xbbc7747f,0xbbb01861,0xbaeefcd6,0xbb33699d,0x3ad403c8,0x3c584605,0x3b75f90e,0x3abb9e1e,0x3b619b3f,0x3ba51d49,0x3c106be8,0xba82572a,0x3c303f7a,0x3c35e671,0x3c229882, +0x3a0bc790,0xbb4978ca,0xbc3b5016,0xbbf06c45,0xbbd25bb6,0xbc0f5f27,0xbbc71c00,0xbb7ae494,0xbb890bd2,0x3ba83c29,0x3b35d8bf,0x3bf65608,0xbc6b73ac,0xbc81a9d6,0x3b9c7c79,0x3b19c2db,0x3c395b22,0x3ca8c73f,0x3ce74771,0x3d6a335d,0x3d24c2ad,0x3bc68108,0x3a8fc384,0x3c6fc447,0x3b3f0897, +0x3c24bcf1,0x3cc2d4bc,0x3bf07452,0x3bd4d3af,0x3c16a02e,0x3c9f555a,0x3cac2b87,0x3b3e8a9c,0x3ca02afa,0x3caa3c4a,0x3c3e712d,0x3af39a6d,0xbb15b442,0xbc88cb07,0xbc107a46,0xbbe46c8e,0xbc5bfbb0,0xbc13effe,0xbc113902,0xbbb8917d,0x3c282372,0x3c8006f1,0x3cb817f3,0xbcb5551f,0xbcd3bb15, +0x3b858c0d,0xbb0d2828,0x3b664af6,0x3ce1734c,0x3d47a86c,0xbd836363,0xbd10f8d1,0xbc44507a,0xbc4e5843,0xbc83af92,0xbb733f4e,0xbb8cfeda,0xbb885274,0x3c579298,0x3cae0a93,0x3c066dc7,0x3c9f20d1,0x3c9549b0,0x3c3105b2,0x3c4887da,0x3b57e2e2,0xbbee4c90,0xbc8f0f3f,0xbccaa513,0xbce39932, +0xbc8069cf,0xbc841b2a,0xbcc3e18b,0xbc406471,0xba451ce7,0x3bfc81f4,0xbbe05cb1,0xbcbc8da6,0xbd080edc,0xbd336dc1,0xbd35104d,0xbd603ab2,0x3b91c555,0x3cab399e,0xbc9df437,0xbd34f00a,0xbd30b5da,0xbb8f2402,0xbbaf371d,0xbc09d321,0xbcbf84ea,0x3b5c4da3,0x3ca14d1d,0x3d0a916a,0x3c56e4ec, +0xbb836dbb,0x3b83f3e1,0x3ae96189,0x3c42c33a,0x3c378320,0x3ca2c232,0x3c8e3ce6,0x3b645569,0xbabd001b,0xbb1c7364,0x3aa65027,0xbb9cd3fd,0xb905c5c9,0x3c2cd821,0xbd04c419,0xbd3dfadc,0xbd08401b,0xbd053739,0xbcff4f2f,0xbcc3c85f,0xbdc0bf31,0xbdc9640a,0xbda0901d,0xbd8683f7,0xbd9e9498, +0xbdcbe3f9,0xbd77c720,0x3db36ce5,0x3d9b70c4,0x3d35e92d,0x3d4ee2dc,0x3d7ea76c,0x3d928166,0x3d3b1539,0xbc390ce4,0x3bcca501,0x3b1ca020,0x3bfe64eb,0x3b8dc673,0x3c0b8e46,0xbc80bf52,0x3d007361,0x3d1d3bf8,0x3bcf52ff,0xb971b5d2,0xbc39d4dd,0xbc3aa7b4,0xbc8eac45,0xbc8b91b5,0xbbe426f1, +0xbc379167,0xbc4b62ee,0xbc5ab15b,0xbca08fe4,0xbccd91fb,0xbd034af2,0xbd1ccb32,0xbd23aeef,0xbd87e8c8,0x3d14c8c9,0x3da5a8a0,0x3d86ddd9,0x3db77f24,0x3bad7a4e,0x3b8e6a86,0x3c4c5466,0x3c2926c2,0x3bc4335f,0x3ca231c4,0x3ced8e1a,0x3cccf5e9,0x3ce4cb77,0x3c8ad081,0xb93e2fe7,0x3c7a2ec7, +0x3c8972b9,0xbbfc8da6,0x3cb55cbb,0x3cd2863e,0x3bcf2dab,0x3bf9a2fe,0xbb84fbac,0xbc8adbb8,0xbcedafaf,0xbd11eaf9,0xbd275ee1,0xbd5c3cb5,0xbd8991a1,0xbda59906,0xbda6d08c,0xbd61ca50,0xbb4ea3de,0x3cb06fea,0x3d103675,0x3c3f5074,0x3d6b769d,0x3d735966,0x3d0cb4f8,0x3c88ec51,0x3cb1dfa6, +0x3ca893ae,0x3c23ff70,0x3c5500fc,0x3ca25edf,0x3cc30f97,0x3c9a3347,0x3bf3a59a,0x3be358ae,0x3bf53d8d,0x3a3e5dd0,0x3b6b337d,0x3c18bb86,0x3c894811,0x3cc9f1b1,0x3cba5b83,0x3c2829b4,0x3c6d000f,0x3c818352,0x3ca38548,0x3cb8f304,0x3c8f6360,0x3c557538,0x3bbf8284,0x3c9ff247,0x3d11b380, +0x3d72ec1e,0x3d89a8f1,0x3d974b48,0x3cddf89f,0x3a19c7d6,0xbce81428,0x3b5b5f4d,0x3ca3acc6,0x3cefeb31,0x3cd4d50a,0x3c6048e3,0x3bf0903f,0x3c0fce97,0x3c4c8791,0x3c35d63f,0x3c8ea3bc,0x3cb0f423,0x3cbd565a,0x3cafaa27,0x3c8f19e3,0x3c8d579c,0x3c5a9175,0x3c3c79ee,0x3c56db10,0x3c5a3a26, +0x3c2ae299,0x3b573335,0xba8eb5f2,0xbbe4fb37,0xbbc195ff,0xbbe487b3,0xbb9372bc,0x3bdfd75a,0xbc3bd739,0xbcbb1399,0xbce934f2,0xbc39da61,0x3b253a52,0x3c8b3431,0x3c0adee0,0x3c00b01d,0x3a01bb8f,0x3c98d973,0x3cd40253,0x3ce99b94,0x3cbd8204,0x3c8a02ef,0x3c9cb162,0x3c73b2a0,0x3c243b6f, +0x3bd60caa,0x3bf54c64,0x3bdf731e,0x3bdcfba4,0x3bc1f125,0x3c29f990,0x3c0f3c80,0x3c75b3af,0x3c326a69,0x3c72e5ff,0x3c44b670,0x3c70f261,0x3c6bd220,0x3c61f12a,0x3bed59ff,0x3c8ebd69,0x3ca3436b,0x3c28ded3,0x3bdac438,0x3c81b90d,0x3cdcd969,0x3d111676,0x3d08a576,0x3cf5db0e,0x3ce3fa41, +0x3cb031fe,0x3c8c9967,0x3c5f0490,0x3c39efaf,0x3c20a45d,0x3c2b6647,0x3c592a21,0xbabcabfd,0x395a7294,0x3b8a4f7a,0x3b944d2f,0x3bc5abe0,0x3baf1431,0x3bf8779d,0x3c172f87,0x3c3380b8,0x3c287e0d,0x3bf271e1,0x3c1eb540,0x3c1fe54e,0x3c1b3a23,0x3bd79bbe,0x3bff142a,0x3c09a740,0x3bf5512f, +0x3b6a263f,0x3c098ee9,0x3bd42685,0x3c0b4157,0x3c0ca37e,0x3bf81364,0x3b90caac,0x3b5fd602,0x390f7bf8,0xba8f8f5b,0xbb0cabb4,0xbae90915,0xbabcd757,0xbac2378a,0xba6d437b,0xb9ef5681,0xba010c66,0xb9ea0036,0x3b98f657,0x3b80c019,0x3b97d53a,0x3b787a37,0xb9d8b54c,0x3be2ce37,0x3b98be22, +0xba79c212,0xbae0fe49,0xbb14bd81,0xbae93a70,0xbb5d2a22,0xbb8a4617,0xbb9bcdb3,0x3b9c523a,0x3bfbdedc,0xbb7dd67b,0x3b97dce8,0x3bf1f94c,0x3bf5f8fa,0x3bcade38,0x3bcf6be6,0x3bc76b02,0x3bc1a0db,0x3bce2b7a,0x3bd9e663,0x3bdaa7c9,0x3bd3f0da,0x3bc1576c,0x3ba6dfbd,0x3b8a0adc,0x3b5d64bc, +0x3b77c34d,0x3b837db4,0x3b895fd8,0x3b90a7a1,0x3bf1a0d7,0xbb8a18e1,0xbb92f793,0xbb88dd0b,0xbb8aef38,0xbb707cc1,0xbb1a46fe,0xbb9f5b97,0xbb693715,0xb95c370f,0xbb1b92e7,0xbb376f73,0xbb34595e,0xbb095e1a,0xbb00c747,0xbb2d9656,0xbb337f4a,0xbb254072,0xb92d1fa6,0xbb3ee5b5,0xbb612b12, +0xbb184fd4,0xbb7ff77d,0xbb7e7b91,0xbb387c9b,0xbb966829,0xbba32e64,0xbbb91f15,0xbb5706ea,0xbb42f1bd,0xbb831d58,0xbbc9832b,0xbbeabcb0,0xbc01c746,0xbbadf42a,0xbb9c15e9,0xbb92a4e6,0xbbb1999f,0xbc156765,0xbbe8c744,0xb9d73641,0xbbe8321d,0xbbba7967,0xbb8d2c52,0xbae84225,0x3b4127de, +0xbae9a0d7,0xbb490565,0xbb38e001,0xbaf1e1f4,0xbaa14812,0xbadc3f36,0x3a5ca91b,0x3affe723,0x3b1686d1,0x3a0cc7f5,0xbb8984b8,0xbb4cf5f3,0xbbb75516,0xbbe58662,0xbb214b2c,0xbbd7a215,0xbbd32907,0xbbf23923,0xba8fcdb5,0xbad44e2d,0xbbd515ec,0xbc46bc52,0xbc6114e7,0xbc4e63dd,0xbb86fd15, +0xba7ba736,0xbaa9c85a,0xbbcd486a,0xbc6cce96,0xbb2394fb,0x3b5710b5,0xbb7a85a5,0xbb1d1c17,0xbb1f234c,0x3a25d3c8,0x3c3b9594,0x39b56ed3,0xba84f60e,0x38dbe282,0x3acfea11,0x3b82a90d,0x3b5d6e97,0x3bb7a973,0x3bf51f53,0x3c306706,0x3b9c2425,0xbb36f250,0xbb25cced,0xbb8a5c81,0xbbd38c03, +0x3ae3d835,0xbc054903,0xbc0fe05f,0xbc4a2b89,0x3ab72c56,0x3b19bdac,0xbbd8c5e6,0xbc9a2bd7,0xbccbe400,0xbcc986d4,0xbc27f335,0xbbf4a3c7,0xbb699a03,0xbc291cdd,0xbccc99e5,0xbbecfeb1,0x3bc59d32,0xbbab7bcb,0xbae0c589,0x3b907e1f,0x3c09d9bd,0x3cb91c3c,0x3bbe6267,0x3b839c55,0x3bd0625e, +0x3c84d7f7,0x3c60b5c8,0x3b077c9b,0x3c3874d3,0x3c8f783c,0x3c6c3692,0x3b923ca8,0xbc22f2ca,0xbbbd6a15,0xbc141ed5,0xbc783632,0x3b23d4b6,0xbc0dbb9c,0xbc02a9bf,0xbc3c6629,0x3c0a32a8,0x3c196ce4,0xbc165f12,0xbcddebae,0xbd103ffb,0xbcf651d5,0xbba789aa,0x3c04a048,0x3c7ea9bf,0xbb2d10d7, +0xbd6b1d20,0xbd5b7216,0xbd1b7f2a,0xbcafecd8,0xbc9613c0,0xbc9c3662,0xbc894b76,0xbbbc4b89,0x3a76b427,0x3c7b0978,0x3c3a54df,0x3c7151a0,0x3c988df1,0x3cc5d5d2,0x3c616538,0x3bfd9019,0x3be8bc78,0x3b22505a,0xbbb557df,0xbc112c58,0x3bca5563,0x3c0b9470,0x3c80d2f3,0xbc4c02d9,0xbc716d82, +0xbb11410e,0x3b05974c,0xbc310f46,0xbc804a3a,0xbd00b1e7,0xbcee5cb0,0xbc910fc3,0xbc83931c,0xbd1e335a,0xbdb2f856,0xbd7d462b,0xbd950105,0xbcc281df,0xbc8c5f9e,0xbc947f1d,0xbca4b2dd,0x3c3cc58c,0x3c9debb0,0x3b56acc9,0x3bd0efe7,0xba8f3dff,0x3b76f303,0x3a465152,0x3aff2112,0xbbac9c79, +0x3ca0286d,0x3cbbd94b,0x3c01185c,0xbb35f8a6,0xbc164dc9,0xbbfb8484,0xbc24ada4,0xbc918f40,0xbce24072,0xbc8dc847,0xbc9c6bde,0xbd0633b6,0xbd057351,0xbcd29801,0xbb03d38e,0xbd2f6387,0xbd2f14bb,0xbc1ea84d,0xbb5c65d0,0xbbf95650,0xbd0d37c7,0xbd8ebd3e,0x3dc6a143,0x3d9e9e36,0x3d833219, +0x3d8937ad,0x3d9556bd,0x3d627a57,0x3d126fbc,0xbbaa3ead,0x3c697102,0x3bf29244,0x3b6e862c,0x3b8f8a0d,0x3c287c55,0xba8a4bf8,0x3cd7693d,0x3cea9828,0x3c230cba,0xbb5d24f9,0xbc50b246,0xbc1fb905,0xbc663395,0xbc7cf06f,0xbc8f61e5,0xbd242dc3,0xbd355b19,0xbcfc295a,0xbcb28dd5,0xbc8516b1, +0x3b8143ba,0xbd26b8db,0xbd2ef05e,0xbd2a5034,0x3c51ee82,0x3d404598,0x3d41f1e9,0x3db9c7d3,0xbc1e5011,0xbc1742f3,0xbb8cca00,0x3aaf6425,0x3c18fd86,0x3cbb06d7,0x3d04fba2,0x3d00625e,0x3ca26244,0x3c0bcbfe,0x3b6c0e94,0x3c1f7fc9,0x3bb18d65,0xbc43060f,0x3baa1113,0x3c0310ff,0x3ba79d50, +0x380708fa,0xbc0a6ba3,0xbc8ef015,0xbcc97aaa,0xbd117395,0xbd3fa1cd,0xbd67abc4,0xbd6311b5,0xbd457ae2,0xbd3aef7e,0xbd0aec75,0x3ae28da9,0xbbc2bc61,0x3c97bd13,0x3d01dee5,0x3da340e2,0x3da3eb5f,0x3cd36ad7,0x3c2b1f8b,0x3ba3a7e2,0x3c2fb23c,0x3c7cf137,0x3c93f741,0x3cb6a1d8,0x3cc10a2d, +0x3c99821a,0x3c2c8ac7,0x3c2cb024,0x3c6e778e,0x3c6d378b,0x3c5a8a18,0x3c7aa85c,0x3c6c0779,0x3cf27224,0x3ce44c2a,0x3c7107e0,0x3bb77396,0x3be7871d,0x3c3bbbc5,0x3c32d375,0x3c5b4f1d,0x3c890408,0x3cb4a4b6,0x3ca76e7c,0x3c78bd89,0x3cdc0323,0x3d17a455,0x3d74626b,0x3ce8e053,0x3c6cf475, +0x3bda23b8,0x3b8d18dc,0x3bff1daa,0x3c4e0748,0x3b702a47,0x3a80178c,0x3bb2f332,0x3bebf9d0,0x3be7d4cb,0x3c162409,0x3c82c649,0x3ca9fb48,0x3c945d17,0x3cddc8c7,0x3cc76224,0x3c650087,0x3c965cdb,0x3c95a8c0,0x3c630dde,0x3bfa36cf,0x3bcbe6b3,0x3c6b9bbd,0x3c2e2683,0x3bc68c85,0x3c22aea8, +0x3c7b3c54,0x3c75ce33,0x3c4314c8,0xbc417fa6,0xbc3b082b,0xba271f1d,0x3beb4f30,0x3b9e1f95,0x3ad0ee7d,0xbcd398af,0xbcd54b3b,0x3b511580,0x3b6142c2,0x3c50f777,0x3ce6fe9f,0x3bd5842d,0x3c3d73a0,0x3c3eec49,0x3c5110a0,0x3c09a154,0x3b75c856,0x3bb0aa4e,0x3bcc1450,0x3c037253,0x3c11ca45, +0x3c36c13b,0x3c725c3d,0x3c76c210,0x3c722451,0x3c8891c1,0x3c8c934e,0x3c8b7c01,0x3c6e7e80,0x3c986e62,0x3ccb3712,0x3cd91efc,0x3ccfb84f,0x3cdcb4c1,0x3cfe7968,0x3ce5383f,0x3cbdc817,0x3c861946,0x3c08b7a2,0xba2520c5,0xbc23cfe8,0xbb874212,0xbb0c1794,0xbb3fb512,0x3b481483,0x3c0ab70d, +0x3c6bfb1f,0x3c6493cb,0x3bbf9342,0x3bf1cad4,0x3b23abec,0x3c3347d3,0x3c3b7ff9,0x3c7631a4,0x3c9fbb97,0x3caee24b,0x3cb6544e,0x3ca54e26,0x3c9b1b5b,0x3c98dc96,0x3c983670,0x3c9262eb,0x3c694453,0x3c268fe0,0x3c035940,0x3b8661e8,0x3b08e200,0xbc0e6af4,0xbc383a05,0xbc5af3ff,0xbc8ca21e, +0xbc929c7e,0xbc9385b9,0xbc933763,0xbc7fc6b4,0xbc490011,0xbc250f93,0xbc056b06,0xbbdb2877,0xbbaca54d,0xbb1fee82,0xba869098,0x395e6e33,0x3b21f1d9,0x3c036e1e,0x3c2859d6,0x3bcca9c8,0x3bc025f1,0x3ba23361,0x3c2997c3,0x3c0c46cf,0x3bea2806,0x3bd87ee3,0x3bf1a640,0x3bfd046d,0x3c02358e, +0x3c0413a7,0x3c0fcb26,0x3c12f18c,0x3c0a79eb,0x3be7c04e,0x3bb12623,0x3b9ca7af,0x3b6cf15c,0x3b90bdb6,0x3b75035d,0x3b6b5558,0x3b2ac80a,0x3ab20aaf,0xb98cb1af,0x3a899379,0x3ae55fe6,0x3b3ae458,0x3b4d673b,0x3b8174ca,0x3ba43c07,0x3bab142a,0x3bc245c6,0x3be3700b,0x3bf91b6b,0x3c29b095, +0xb9ac9b5c,0xbb3aa396,0xbb514c24,0xbb509cfb,0xbb61a838,0xbba1115a,0xba746a68,0xbaab8189,0xba85b996,0xbb3cc884,0xbb5ab3a6,0xbb5c3322,0xbb500996,0xbb3e85d7,0xbb0c38bb,0xb925eb6f,0x3a83d91f,0xbaac278f,0x397effd4,0x3a6d35bd,0x3b1e64a1,0x397ce66f,0xb792557a,0x3a06fde6,0xba45c16a, +0xba759cbc,0xb9b083db,0xba17ecd6,0xba5d4f57,0xba0bde1d,0xbb17de81,0xbae300be,0x3ac74662,0x3a6d6151,0x3a6d792b,0x3a97255c,0xbae19d28,0xbbed3176,0xbc29e7a2,0xbc32cb09,0xbc1b32fb,0xbc03e4f1,0xbb3b06c3,0x3a52f0c8,0x3b76c901,0x3a8b1d2d,0xb975cb01,0xba567499,0xb9029a80,0x3a6414fe, +0x3b899947,0x3b354b89,0x3b87b14e,0x3bbaa825,0x3bb2270b,0x3b1a3bc6,0x3bc67f68,0x3b5324d8,0x3afaa276,0x3b7d57ee,0xba0df72a,0xbad2544a,0xba687a25,0xbb294c46,0xbb80b6f1,0xbb8f1604,0xbc29ba84,0xbc1b2e4d,0xb934854c,0xba1aaa5d,0xba4e3411,0xba19d5e3,0xbba50d21,0xbca2a85a,0xbca83f96, +0xbc94e91e,0xbc7a4499,0xbc566826,0xbb8a606d,0x3b149318,0x3c26e0a1,0x3b062b9f,0xb9cc255d,0x389a1e20,0x3a8bc3a5,0x3b7984d8,0x3c4674a3,0x3beb474b,0x3c1954a3,0x3c567e48,0x3c439a7c,0x3c0f7aa5,0x3c1d7be2,0x3ba525e0,0x3afdbd0e,0x3b78e500,0xbb6fa9bc,0xbbb46b2e,0xbb8cae0e,0xbbbf1146, +0xbc137a99,0xbbf03e54,0xbc7f68cb,0xbc27dc61,0x3c26cd49,0x3be53381,0x3b9099e9,0x39a355fb,0xbc7617ee,0xbcc931fb,0xbd0fde89,0xbd33d5e9,0xbd271aa8,0xbce148e8,0xbc14f885,0x3b6ac12b,0x3c8b1066,0x3b9eef72,0x3b8c2dca,0x3b753f60,0x3c4fb18a,0x3c409ef8,0x3c4b9883,0x3c31c822,0x3c76a3e9, +0x3c9fe2f9,0x3c8088f5,0x3c5055fa,0x3c98ce31,0x3c582909,0x3bf7d75e,0x3c37e344,0xbadedc59,0xbbb52d23,0xbbb94760,0xbc58ebd2,0xbc844ce3,0xbc8cf17a,0xbd051066,0xbcdd1169,0x3bdbf053,0x3b9f15b0,0x3a0f0736,0xbbfd3eb8,0xbcbc621a,0xbd09d636,0xbcb1b405,0xbbe120c7,0xbb75547e,0xbc53f23f, +0xbc9c25d8,0xbc552248,0x3ba6d2a2,0xba1b5768,0x3bb6b56d,0x3bd93169,0x3c22c5b9,0x3c85ebbe,0x3cd36470,0x3c55d245,0x3c49cab3,0x3ca40ba8,0x3c6446d8,0x3b95ab00,0xbbaa185c,0xbb993eeb,0xbbac34a9,0x398dacfe,0xbca77202,0xbce3c414,0xbcfb53c9,0xbcc2ea08,0xbca53ec6,0xbd29996a,0xbc3cc14b, +0xbadedd36,0xbb7cd3f3,0xbc32b299,0xbc8ae3d8,0xbcd42e96,0xbd0a6bb5,0xbd423615,0xbd367be3,0xbd49c2db,0xbd081314,0xbc0b7e3b,0x3c85e770,0x3c9e459c,0xbc2c4b39,0xbb9b7229,0xbbf362d8,0x3b6f3a08,0xbb7376a5,0xbb4e4e10,0xbbb328d8,0x3cc0882f,0x3cdca4ae,0x3c5a17dc,0x3be5328c,0x3a547e32, +0xbad5f791,0xbb3a35f1,0xbbbe0806,0xbb809f1c,0xba5ca63c,0x3b9421fb,0xbbed00e3,0x3be82d38,0xbc1345ec,0xbd168746,0xbd6ea580,0xbd36206a,0x3c2b7a6f,0x3c6e1b2f,0x3c65745e,0xbcb1f071,0xbd25ca2f,0x3dab43a1,0x3dea40c5,0x3daa9997,0x3d98e0e3,0x3d90ceec,0x3d2b48a9,0x3cae0a79,0xbb973314, +0x3c0f3d34,0x3b149003,0xba928456,0x3ad3a502,0x3b2f65a2,0xbb5fab51,0x3be2c697,0x3c47dedd,0x3cbb3d26,0x3a5e57ac,0xbc0e1c4e,0xbc2cd310,0x3a7f883d,0xbb818bfe,0xbcb41c4a,0xbd0926b3,0xbd0454c8,0xbd053593,0xbb87a519,0xbb97f3f5,0xbc3e6a5f,0xbd5ff901,0xbd84248c,0xbc9c4bc2,0xbd81715e, +0xbd4f25f6,0x3c85f7f0,0x3d5427a9,0xbc140016,0xba2a979d,0xba20f454,0x3c77a351,0x3cb096bb,0x3d073686,0x3d0a1397,0x3cf4d63a,0x3c24d2cd,0x3abaae92,0x3c061660,0x3b3d5720,0x3ad53f59,0x3bfda2c4,0x3c16ecd7,0x3c232b03,0x3cc2c1e2,0x3bb42c4b,0xbbdf3694,0xbc167728,0xbc90ea31,0xbce6ff61, +0xbceb0cca,0xbcbfaff9,0xbc9ff3ea,0xbced7f19,0xbcd2da72,0xbd2d7c48,0xbd2fcd9d,0xbd806c14,0xbd062905,0x3d2ada6e,0x3d8dfc5e,0x3da2b961,0x3d668073,0x3c64dc42,0x3c4522d2,0x3c8dc7f2,0x3c918534,0x3cb2b31e,0x3cb067a8,0x3c9bb02b,0x3c704027,0x3c3624b3,0x3c4b1ca1,0x3c9313bb,0x3cf5361b, +0x3c95783e,0x3c7c8a18,0x3c3491bc,0x3cc70978,0x3cc442f0,0x3c7d0d3e,0x3c26e3fe,0x3bd7a6ef,0x3c10c6a0,0x3b9cd72b,0x3b9df403,0x3b735d6b,0xbbb58279,0xbc01d623,0xba98a9ea,0x3c710ef7,0x3cdaa492,0x3d232fdf,0x3c9a5beb,0x3c73030c,0x3d04ef61,0x3c1389c8,0x3aa8e140,0xbc724cb1,0xb9c53f7d, +0xbb802898,0xbbc7ca1c,0x3a27c966,0x3be71e13,0x3c876d2b,0x3cad0b89,0x3cbbe125,0x3c910335,0x3ca6b14b,0x3ca105a9,0x3c96e181,0x3c705002,0x3c44df2f,0x3ba2e7c4,0x3bb85c55,0x3c40670e,0x3cac92bf,0x3ca43634,0x3c9dbae6,0x3c80b388,0x3c6805a7,0x3c66b7b0,0x3c701322,0x3d0e4e85,0x3d35a027, +0x3d29d3fe,0x3d02e188,0x3c66fe88,0xbbbd06db,0xbc676fb3,0xbc420f56,0x3bb545ac,0x3c5bf744,0x3c3d08fc,0xbb277464,0xbaa56e28,0x3be1c1ef,0xba6db383,0x3b5ca982,0x3baff3c4,0x3bd820ea,0x3bd9a6f2,0x3c0e847a,0x3c25f529,0x3c1a149e,0x3c017bd6,0x3bfb1c81,0x3c41ab6f,0x3c92e9e6,0x3ccc8c75, +0x3c94c6ae,0x3c2e51bc,0x3b09265e,0x3bec750e,0x3c528789,0x3c7adcf1,0x3c6dbedc,0x3c7d4ec3,0x3c563e0d,0x3c32f81e,0x3c16dfa6,0x3c29e40b,0x3b551439,0xb928ff6d,0xbb789038,0x3b9aedcf,0x3c249c88,0x3c5eebbe,0x3c4cf0f0,0x3c7557f3,0x3ca32498,0x3c5ea970,0x3c9484eb,0x3cab037d,0x3c95eb93, +0x3ca59594,0x3ca72fcb,0x3cb3930c,0x3cb342bd,0x3cc22d2d,0x3cae1184,0x3cab0a0d,0x3ca3cc4f,0x3c966fe1,0x3c8118a3,0x3c744687,0x3c3b0768,0x3c27f5b3,0x3bf2a2b4,0x3ba4f342,0xbb07a868,0xba8bf927,0xba680e72,0xbadfe135,0xbaa9da03,0xbade7dfa,0xbb11ea12,0xbb2b8334,0xb8b4e1f3,0x3b01a653, +0x3b1c6f9e,0x3b6eba83,0x3b9bc15f,0x3bf0ec7a,0x3c243184,0x3c3eb2a1,0x3c5bffb6,0x3c748c15,0x3c6b2a89,0x3c8252ff,0x3c6ff4e4,0x3c6bbe8c,0x3c503f47,0x3c725334,0x3c67eb87,0x3c6ea96d,0x3c6cf975,0x3c6b3672,0x3c659928,0x3c648b01,0x3c638da9,0x3c60ca2f,0x3c4ce6f4,0x3c445e96,0x3c17abda, +0x3c13ca3f,0x3c09f3d4,0x3c0b401a,0x3c0a1e8d,0x3c0d546f,0x3c0c6af3,0x3c101f95,0x3c1322f3,0x3c0b6a49,0x3c1db870,0x3c2a67c0,0x3c3dac0e,0x3c403f8a,0x3c40c06a,0x3c398009,0x3c3fa51f,0x3c47aed6,0x3c4eae39,0x3c62c579,0x3c5fdd4d,0x3a79d7a2,0xbb28584f,0xb89684af,0xba094d26,0xba4da83b, +0xbb095d3e,0x3aaba4d7,0x3ae8c139,0x3b085748,0x3a48a1fb,0x39a35902,0xb9ac76c6,0x38bec49d,0x3a2dcffd,0x3b227609,0x3b2889ad,0x3b3f1c2f,0x3b1f71e3,0x3b4bf882,0x3b4d44bf,0x3b221bc9,0x3ae9bc97,0x3ac996b9,0x3b01915c,0x3ac4da7f,0x3a88a237,0x39838c59,0xb905c966,0xb9c0c42d,0x3a9cc25d, +0xbae8abf4,0xbac7c397,0x3b09fb55,0x39a642bd,0xba2cf3ea,0xbb310274,0xbb33049c,0xbc0b440d,0xbb67d23b,0xbc0c344f,0xbb80370f,0xbbc22a3d,0x3abc4800,0x3b8beda1,0x3bb454a6,0x3b349037,0x3a5b5719,0xb7b2e28b,0x389c8bc2,0x3ad8a790,0x3be0a87b,0x3bb6a2f8,0x3bd5d7fe,0x3bf915ba,0x3c028e8e, +0x3c05b8f0,0x3bdbfcc0,0x3b860f35,0x3b4da8d3,0x3b30d0cb,0x3aa6352c,0x3841822d,0xbacd3886,0xbab98959,0xba895d6e,0x3b757256,0xbb6eebfb,0xbadc9233,0x3c069e1c,0x3bbf8ee6,0x3b809c8e,0xbb5dbe2e,0xbbf9ca67,0xbc8362f0,0xbbc0173c,0xbc303e8b,0xbbc1cdb4,0xbc408f3d,0x3a8dd759,0x3bd1fee7, +0x3c2fc2eb,0x3b95d777,0x39af63c8,0xba75c522,0xba935a4e,0x3b6c5b7f,0x3c615562,0x3c2cee65,0x3c42d2c8,0x3c582267,0x3c65ada0,0x3c5f930f,0x3c1ec627,0x3ba73129,0x3b6f4250,0x3ba2f6f3,0x3b7df93b,0x3b05e330,0xb97b5bce,0xbb8f8b6f,0xbbd8e132,0x3b94557a,0xbc4b7137,0xbc18f32b,0x3c0ba8f4, +0xba6b4c30,0xbbb09b65,0xbc91fd68,0xbca17551,0xbca4c75b,0xbbf5657d,0xbc8f6ebb,0xbc6c4927,0xbc8fbc17,0x39fe313b,0x3c30f6e5,0x3c9bcbb1,0x3bbfb78a,0x3b29fdeb,0x3a86f647,0x3c0b9f57,0x3c378fba,0x3ca5106c,0x3c72356e,0x3c8cc04a,0x3cadfe64,0x3cb0559b,0x3cc14e18,0x3c755e17,0x3c153177, +0x3c08ca77,0x3b9de2ec,0x3b126816,0xb9260b36,0xb963cef7,0xbb9d3bb6,0xbb607f0e,0x3c5f4549,0xbc59b9e9,0xbbe2c213,0x3cc18ef9,0x3c7560e0,0x3c01ae67,0xbc23f6e2,0xbcc6feee,0xbd131d52,0xbcae8ed2,0x3c6c9c41,0x3c748282,0xbc1c3a79,0xbc088907,0xbbc2577e,0x3b9c0585,0x3b7503a5,0x3bc9207f, +0x3b8bdb7e,0x3b92d21b,0x3c35b7f6,0x3cbf4aa2,0x3c251803,0x3c0cef29,0x3c85c587,0x3bf512bb,0x38cb31aa,0xbbb26e30,0xbc70e9c3,0xbc90e70c,0xbc9bc2e1,0x3ab10f65,0x3a8ca8d5,0xbccadf4c,0xbcf419dc,0xbd0bbc3e,0xbd230a53,0x3b71757c,0x3c50a6ed,0xbb5f4a54,0xbc70501d,0xbcdaa751,0xbd433600, +0xbd3bd23a,0xbd33a623,0xbd45d055,0xbd3b89b0,0xbd053421,0x3b624a6b,0x3c6d5c2b,0x3c75b248,0xbc25bb6e,0x393c6fcd,0xbb0f42df,0x3b5c02cc,0x3a773a4a,0xba68d7d2,0x3b0f93ec,0x3cb7b2b1,0x3cb918b3,0x3c702d3c,0x3c2d32fd,0x3c0692e4,0x3b2cc73d,0x3b6ea4ed,0x3bc3a551,0x3bffc9b5,0xbb7fe60e, +0xba26582a,0x3af8f755,0x3b020a73,0xbc62b847,0xbd80105d,0xbd330ca0,0xbd077daa,0x3c6f9636,0x3bd2dd8f,0xb917c98a,0xbc844841,0xbcb10e3f,0x3d4ffe09,0x3d9eac74,0x3dbaad5e,0x3d98f395,0x3da21f4c,0x3ce2789d,0x3c2686d0,0xbb52c286,0x3aaae465,0xbad5bfb8,0xb93e0e0c,0x3a800ce2,0xbba32f7e, +0xbabefc02,0xbc354660,0xbaf5b50b,0x3d22aa99,0x3c36a227,0xba8e360f,0xbbf46465,0xbb75f74f,0xbc281304,0xbc70ce6b,0xbc12bb03,0xbc3fd88c,0xbd0fbf94,0xbc95d05e,0xbcf79fb5,0xbd8a591d,0xbd90ff83,0xbd8953e8,0xbc01be69,0xbda1dad3,0xbd9a0769,0xbd10fe4e,0x3c585113,0x3cf3511f,0x3ca347a8, +0x3c5918af,0x3cb5c374,0x3d0c0899,0x3d1453a5,0x3d076538,0x3cb6ea9e,0x3a841c55,0xbb8440d1,0x3b3c8403,0x3afed2c9,0x3b3a7612,0x3c52b657,0x3bcd8b7c,0x3c22b814,0x3d0db88c,0x3b77e250,0xbb868718,0xbbe847b2,0xbc915246,0xbc9ccf15,0xbc68806a,0xbc9f9189,0xbc69fecf,0xbc6e280a,0x3b199f5b, +0xbc46a9df,0xbd3d2fe9,0xbd8d024f,0xbd624389,0x3d0a7898,0x3d1f4e92,0x3d7ba0b3,0x3da0e61f,0x3d40e2a0,0x3c8f400f,0x3cbf1cbb,0x3c9e6de8,0x3ca4e4e4,0x3cbc90f8,0x3c8e0246,0x3c6a23c9,0x3c728769,0x3ca99a5b,0x3cc320f1,0x3ceba8ff,0x3c8cdce3,0x3c58fd98,0x3c34d8a6,0x3c7c373b,0x3c7ae60f, +0x3c81c417,0x3c0824e6,0x3bd42639,0xbb344d5b,0xbc3417e5,0xbc85a50f,0xbcb9408d,0xbd0a80fb,0xbcfa6adb,0xbcb78a8e,0xbba9f10e,0x3b978b94,0x3c14c804,0x3cfd2959,0x3d338b20,0x3d8acade,0x3d126208,0x3c4c08ec,0xbb096956,0x3c22b59f,0xbc0cacae,0xbb4c7b5d,0xba35b0c6,0x3bedd14c,0x3c8eaa7c, +0x3ca3d60b,0x3cacd688,0x3c9df469,0x3c52b8b7,0x3c3a2cd8,0x3c9ac2a9,0x3c32c159,0x3bf7eaff,0x3c0cee5c,0x3c7c59fd,0x3c9c3bf8,0x3c76a443,0x3c8e3bf6,0x3c83227c,0x3c5b4cea,0x3c53574f,0x3c94fdfe,0x3ced4d22,0x3d3f4d4f,0x3d57b632,0x3d57277b,0x3d233c6b,0x3cc7d296,0x3afa5dc8,0x3c62a3ca, +0x3c74f61d,0x3c1190da,0x3c676418,0x3c4aa3ca,0xbad9c3d3,0xbbde3d16,0x3c3a603e,0x3c0f44ec,0x3c108e1d,0x3c2a8ae9,0x3c2b3fc2,0x3c35c518,0x3c49b90c,0x3c79f6c9,0x3c55353d,0x3c335fe1,0x3c043552,0x3c3fb9b7,0x3c8bce7a,0x3ca353cb,0x3c4b69e6,0x3b6ee658,0xbb43141e,0xbadd3eda,0x3b37efac, +0xbb5ec442,0xbb907f18,0xb8a96ae3,0x39f22694,0xbb306815,0xbbaf55ca,0xbbb4c199,0xbadd9461,0x3ba5a683,0x3c2a5a11,0x3c67f3c0,0x3c8cd8f3,0x3ca87a69,0x3c88a8cc,0x3c518773,0x3c46c6dc,0x3c40c33a,0x3c62e8e6,0x3c795f71,0x3c90a82c,0x3c79e460,0x3c855118,0x3c83268f,0x3c6d1347,0x3c6f5cc9, +0x3c576030,0x3c6d196c,0x3c6bc108,0x3c669a6d,0x3c4f35ea,0x3c520816,0x3c3fa5ce,0x3c474cd2,0x3c396943,0x3c139447,0x3bed335b,0x3bc1cfbd,0x3be6fa28,0x3bf279d7,0x3c0c2b50,0x3c1f84ae,0x3c3804b3,0x3c3bb472,0x3c333621,0x3c1c914a,0x3c18ebcc,0x3c096c49,0x3c060c43,0x3c15c55c,0x3c23c5b2, +0x3c423452,0x3c4e41c1,0x3c55005f,0x3c429c34,0x3c44f5e8,0x3c4e1a2a,0x3c4e6229,0x3c611856,0x3c282b75,0x3c32bb1a,0x3c4dc34c,0x3c538b9f,0x3c4d6415,0x3c4cdd1c,0x3c4949ec,0x3c46b114,0x3c4602b8,0x3c327658,0x3c267fe4,0x3c282e5f,0x3c1d001b,0x3c11d38a,0x3c19f045,0x3c1e5154,0x3c1bb1a6, +0x3c1a5a85,0x3c1ca53b,0x3c1dcc2e,0x3c252f98,0x3c26b1cb,0x3c2a1d01,0x3c2892d5,0x3c2e889d,0x3c2ece5d,0x3c24f73e,0x3c2b98c9,0x3c2cfa55,0x3c31e0ba,0x3c3aeaac,0x3c3e6a6d,0xb9a40b86,0xbb32fbc3,0x3a350215,0xba5cbadd,0xb9f57c5b,0xbaa33301,0x38a7dc83,0x3a7f53e8,0x3b224c8d,0x3ab36c62, +0x3a2a7ed7,0xb9a64fa6,0x3881e201,0x3a3624b6,0x3b2a6f77,0x3ad1822e,0x3ad603e5,0x3b3353f1,0x3b104dd5,0x3ae26afa,0x3a85aeb2,0x392e32ff,0xb98aa28d,0xb9122ff3,0xb8f92152,0xba272928,0xbb0ea11c,0xbb01986d,0xbad239d9,0xb935fb5b,0xba2658e0,0xb98b9014,0x3ae8752b,0xba2eaf9e,0xbabd6eca, +0xba83cdd3,0xbb4d4a21,0xbc02ef72,0x3702c8a7,0xbb5ffc82,0xbb79cdb6,0xbbd3aba5,0x3aba05a2,0x3b741c61,0x3b97395f,0x3affb2fa,0x38eb87c9,0xbac41b55,0xbac1d527,0x3969d640,0x3b925974,0x3b9ebbc6,0x3bc01427,0x3bbe7aa0,0x3be022b1,0x3bcece55,0x3b61c89d,0x3a03e6bd,0xba5fa370,0xba5e4915, +0xb9d0885c,0xba9e1929,0xbb8e8fd9,0xbb55f8ae,0xbb38e03d,0xbaa75e0c,0xbb3b309e,0xba93b97f,0x3b6cdb56,0xba5e1db1,0xbb2bd8b2,0xbacee699,0xbc0d8e46,0xbc825197,0x3b2a2dc5,0xbac934f9,0xb5ca806b,0xbc0793c2,0x3b2a644b,0x3bd9b150,0x3c16036a,0x3b974a62,0x39e4b5e6,0xbb2e3ba3,0xbb2a502f, +0x3aab51b8,0x3c1ce618,0x3c28e0ee,0x3c3a17d1,0x3c3c1586,0x3c5829ce,0x3c3c15fe,0x3c02a567,0x3b23219e,0xb96845ed,0x3ac42ba5,0x3aa215f8,0xba39d2dc,0xbc0e3ad4,0xbc095eae,0xbbdf9277,0x3a6a89ac,0xbab5d92b,0x3ae8a549,0x3c2c4c23,0xbb49697c,0xbbe37824,0xbb347e6c,0xbc95b8c9,0xbcde842a, +0x3aea3bb8,0xbb8c1422,0xbc01080e,0xbc6a6c49,0x3c0f92ed,0x3c623e12,0x3c8a1532,0x3bfda0c5,0x3ad72f63,0xba16131b,0x3b9884fa,0x3c0eecfc,0x3ca682b4,0x3c6e32ae,0x3c949262,0x3ca840ba,0x3cba8956,0x3c94c6b2,0x3c4bb48b,0x3b95ebf6,0x3922737c,0x3abbdcfb,0x3a9f98cb,0xbaf72f80,0xbc19166e, +0xbbd067b8,0xbb33ecc3,0xb7cb24d6,0xbc0b9850,0xb8c701cf,0x3c739027,0xb9d48a63,0xbbafa135,0x3b6b5c66,0xbcc685b9,0xbd0fa5f1,0xbd423910,0x3c32e03d,0x3c9527df,0xbc51ccb0,0xbc047114,0xbbb279e6,0x3b40e90b,0xbbb05adf,0x39836d52,0x3bdd41a8,0x398831ab,0x3bbca5e0,0x3ca6ed61,0x3c38da4a, +0x3c0d3f73,0x3c28313e,0x3b9f41ed,0x3a30ff18,0x3afe9cda,0x3afbb20b,0xbb2a7ceb,0xbbfd0507,0x3c0e3940,0x3c1cad46,0xbb700db5,0xbcdad1e7,0xbce51edd,0xbc3b0dba,0x3cec20ed,0x3cc76b37,0xbca6cb33,0xbcb34014,0xbd1a8974,0xbd79858a,0xbd3a6d29,0xbc50aa91,0xbd3e6c27,0xbd39473a,0xbcf5933b, +0x3b6e04f0,0x3bd552fd,0x3bc743bc,0xbbd8e510,0x3a9b7652,0x3a30ac74,0x3b1479bf,0x3af29ec2,0x399e937e,0x3baad891,0x3c2e0c4c,0x3c5a89d6,0x3cbe776f,0x3c4d2e60,0x3c07d5f3,0xbb1ff0b6,0xbb388fb4,0xbaaa871f,0xbae0ea0e,0xbc58ea4e,0xbc9f62fa,0xbc69d89a,0xbcfe87a1,0xbd1a2193,0xbd3833d5, +0xbce77a8b,0xbb722dd7,0x3cb8a960,0x3b40925d,0x3c01f3bf,0x3d07a549,0x3c77f832,0xbc76bc56,0x3ccfc142,0x3d88885f,0x3d720d9a,0x3d5545f1,0x3c0ba2cc,0xbb272b02,0xbaebb29e,0xba2a4a42,0xb9a7de28,0x3b4a5df4,0x3b8aa9eb,0xbb9ab050,0x3bd0e62a,0xbc21e612,0xbabdcc81,0x3d267b15,0x3c611561, +0x3abb8a8d,0xbb1969d6,0xbbe02217,0xbc1e63ee,0xbbe182ce,0x39611b77,0x3b57f107,0xbbbed71d,0xbca328c5,0xbced1f17,0xbd2e1d40,0xbce1c830,0xbd0ffd2a,0xbd33d7ed,0xbd9e7faf,0xbdcd6035,0xbdfdd928,0xbd8690ef,0x3da1874a,0x3d358dc7,0x3d03705b,0x3d04b118,0x3d3b38d4,0x3d128ded,0x3ce83c1c, +0x3c9cab34,0x3b1f8811,0xba34e80c,0xb90e8974,0x3a81493d,0x39aa900b,0x3c0ce624,0x3a793487,0x3b4c165f,0x3cd0b12b,0xbbbca4db,0xbc67197b,0xbc5aba5c,0xbc8a27c0,0xbc6f9755,0xbc50f31e,0xbc8a558e,0xbc61647f,0xbb1bee06,0x3c3ba0c5,0x3bce8c76,0xbd0cc6a2,0xbd1e064a,0xbd2455e5,0xbc1df1ff, +0x3c8bff7e,0x3d56e3e7,0x3da67b0c,0x3db8c77b,0x3c03c486,0x3c28f7ec,0x3c768ac0,0x3c8403c1,0x3cb46f46,0x3c8f03f0,0x3c9c28f7,0x3cd35136,0x3cc27289,0x3cbf0e91,0x3cadafcf,0x3ca68221,0x3c87667c,0x3be042b9,0x3c11ed4c,0x3c3961c6,0x3c95a400,0x3bf5bb4d,0xba75da22,0xbc0d07f0,0xbc751bbc, +0xbcb9af7e,0xbcf2e3b0,0xbca31108,0xbc801a95,0xbc63ef39,0xbccfcfe4,0xbcd51060,0xbcbea561,0x3ccd99e3,0x3d6535cc,0x3d9c2b79,0x3d6736d1,0x3cf7c1d8,0x3b9dd9aa,0x3be57acc,0x3c1ef491,0x3c2bbabf,0x3c372d2b,0x3c8420a4,0x3cb12c3d,0x3ca29ae2,0x3c8b5186,0x3c49d560,0x3bfc39b4,0x3bd3f151, +0x3c09db42,0x3c1f8547,0x3c27b565,0x3c848f77,0x3c9bdb83,0x3c85be7b,0x3c1f40d3,0x3c41d11c,0x3c5332f2,0x3c78bc27,0x3ca52faa,0x3cdf82f5,0x3d103ddf,0x3d1110a7,0x3d0dc310,0x3d23c994,0x3cff7ee2,0x3d0bb3f0,0x3d1eca4d,0x3d0cfb0e,0x3cf16f78,0x3cd87907,0x3c1cddf6,0x3c1842bf,0x3c5d687d, +0x3c0adc44,0xb890f293,0x3acf7f31,0x3bd0f074,0x3bf6d803,0x3c0a5079,0x3c1aadce,0x3c4036fa,0x3c69e3b3,0x3c6705a4,0x3c651779,0x3c5cfbee,0x3c3d354b,0x3c3e1954,0x3c182027,0x3bfcb5b8,0x3be0d34d,0x3be8b06d,0x3a69b758,0xbbcc893c,0xbc1637f4,0xbc02f128,0xbc3d87b1,0xbc4f8b2a,0xbc3ab9a3, +0xbc1d2b95,0xbc052b0d,0xbb94fe02,0xbb02b57c,0x3ada50fd,0x3ba0232e,0x3beca2dc,0x3c005e4a,0x3bd291e9,0x3b3759b5,0xbacef0ac,0xbab43781,0x3c5bc5eb,0x3c60eaf5,0x3c5a9acd,0x3c45076b,0x3c47b1b7,0x3c31c49f,0x3c20b39e,0x3c17f9a1,0x3c20084e,0x3c304187,0x3c42b618,0x3c4c380a,0x3c54e74e, +0x3c6755c9,0x3c545508,0x3c3b4977,0x3c335617,0x3c1f1bc0,0x3c09d613,0x3c014359,0x3c15974f,0x3c2648cb,0x3c32cb40,0x3c3d6553,0x3c411d98,0x3c3d639f,0x3c450cd9,0x3c4494ef,0x3c3a15da,0x3c1c3ad4,0x3c04803e,0x3bf78ad8,0x3c118bbc,0x3c2f8e33,0x3c429542,0x3c5f6d8c,0x3c5e7bb5,0x3c6d203d, +0x3c4cb4c9,0x3c3d701f,0x3c2158b6,0x3c4bf459,0x3c325f0c,0x3c1bb31b,0x3c255a2f,0x3c25f270,0x3c271288,0x3c2d9e0c,0x3c30f179,0x3c371cd0,0x3c3941c2,0x3c486235,0x3c0f5775,0x3c24203c,0x3c3176bb,0x3c3dcd7d,0x3c374ac0,0x3c3626bf,0x3c35bc22,0x3c321794,0x3c3271d1,0x3c361dfa,0x3c2e9ee8, +0x3c2b2e9d,0x3c2e954d,0x3c3a5140,0x3c46016b,0x3c4933ea,0x3c4c38e8,0x3c4de1da,0x3c5409ed,0x3c533913,0x3c8df35d,0xb994b1e4,0xbafcf145,0x39e185d7,0x38846519,0xb8d64440,0xbac3bdb6,0x3aad80b3,0x3aab3b59,0x3aaf76a3,0x3a309da4,0x38857747,0xba7b2386,0xba2c46ef,0xb97adc1f,0x3a856d1b, +0x3abe675a,0x3af0e07f,0x3af2e01d,0x3b01f339,0x3adf3c8f,0x3a958210,0x38627b7e,0xba13a52b,0xba8b13bb,0xba80e8ea,0xba9f7551,0xbaf6da93,0xbacc7bf7,0xbaa40a8f,0xba3b9e76,0xba10acf6,0xb9fdd356,0x397efcf9,0xbb1686d0,0xbb32f769,0xba292dd0,0xbb1dff87,0xbb9d7848,0xba9d6da9,0xbb1f93bb, +0xbb3a2e6e,0xbbb61578,0x3b1b7f32,0x3b9a1690,0x3b79b217,0x3b0ffdc6,0x39c89bba,0xbaa0ad22,0xbab8268e,0xb8ecf6bf,0x3b2f9878,0x3b80b4c2,0x3bb20b92,0x3bc3ba15,0x3bcdf0df,0x3bafce52,0x3b81b404,0x39c0715b,0xbaa6acdb,0xbadee162,0xba95218c,0xbaed60a2,0xbb8d27b4,0xbb8a87ea,0xbb6fef3b, +0xbb352c4d,0xba40a36d,0xba0abfb9,0xb9bf4624,0xbbbce80d,0xbbe4f521,0xbad39e59,0xbba626db,0xbc3c4f60,0xba7786e5,0xbba7839b,0xbb6afb8c,0xbbda9556,0x3b9cf7ee,0x3c0c9c33,0x3bf8a5a1,0x3ba01187,0x391ddf3b,0xbb36ea0c,0xbb489af2,0xb979a005,0x3bdc4bd1,0x3c1ac2ff,0x3c3447ba,0x3c43656e, +0x3c4c4a83,0x3c35a732,0x3c17eb69,0x3a941dbe,0xbb1cf58f,0xbb80283c,0xbba2a80d,0xbbd8ef5d,0xbc406eba,0xbc175101,0xbbe0f8ed,0xbba848b6,0xbae14414,0xbb125e7a,0xbaecc74d,0xbc6c8ec3,0xbc955606,0xbb9d90f5,0xbc54875b,0xbc58c343,0xbc0d2f87,0xbc9764ef,0xbcb406d3,0xbcbc9d15,0x3ba9ec42, +0x3c4a233c,0x3c5df4c6,0x3c060b3e,0x3afb28c3,0xba912754,0x3b115b4c,0x3be68d06,0x3c90e511,0x3c4925dd,0x3c864061,0x3cbc5466,0x3cc27093,0x3c9d8b3e,0x3c78440b,0x39b30a59,0xbbaa8810,0xbb9c3b91,0xbb9f69d0,0xbbeb8a3c,0xbc8cd452,0xbc5c9d37,0xbc283e79,0xbc3da0bd,0xbb98e47d,0xbb805008, +0xbb97283e,0xbca02026,0xbcb68a2d,0xbbb38398,0xbc7311ba,0xbce8d0f0,0xbd3bf163,0x3c50ed9d,0x3ce088d8,0xbbbf493e,0xbb3e22e8,0x3a07a25e,0x3c4e7581,0xbc03ade4,0xbc0d28d3,0x3bcb6360,0xbabb7c99,0x3b56ec7a,0x3c7fa1c4,0x3c840e10,0x3c75622f,0x3c242121,0x3c135672,0x3c2624f4,0x3c43cff9, +0x3c142b68,0x3b767d8d,0xbaabab71,0xbc21edfb,0xbc9fadb6,0xbcec9e08,0xbcdc118b,0xbc6dec5b,0xbba30319,0x3cc60c38,0x3cac0f99,0xbc83d5f0,0xbcaeec48,0xbd1791ed,0xbd57cffb,0xbd11fec1,0xbb95316e,0xbd0fed01,0xbd07eab0,0xbcb27c62,0x3c6b060a,0xbb5fbaac,0xbc347e35,0xbc1f379d,0xbbeba90e, +0xbbb72070,0xbb263487,0xba1fb90f,0xba585c92,0x3ac901a1,0xb8440eae,0x3bcc81ca,0x3ce1c1f0,0x3c4a71a1,0x3b48a204,0xbb9af3d8,0xbb415036,0xbb127301,0x3ad2fed4,0x3be28106,0x3b547d44,0xbbfd7530,0xbce69b67,0xbd00396a,0xbcb683c8,0xbb42ea0b,0xbbdce873,0xbccc4c64,0xbca5c099,0xbb79db31, +0x3c8a63a5,0x3c23e953,0xbda093ee,0xbcf12e52,0x3cf6bc98,0x3cdf8400,0x3c951d73,0xbb8aead7,0xbb8bedca,0x3b576685,0x3ac4b8d8,0x3a49eee0,0x3a762e82,0x3b93d8d6,0xbb7567ff,0x3ba3a4af,0xbbe519ba,0x3a3706e8,0x3cf0301b,0x3c789e24,0x3c122cb5,0x3b9ea1bb,0x3bff20ae,0x3bd2e395,0x3b2158df, +0x3bcdc716,0x3bf6dc1f,0x3c888349,0xbc8df3fb,0xbcfc40cd,0xbd1fc147,0xbbc1b28b,0xbb0a6337,0xbd08122a,0xbd153553,0xbd96d809,0xbdf39020,0xbdc6386b,0x3de60b9c,0x3d8d3e08,0x3d4a9b23,0x3d353383,0x3d4cbd46,0x3d13f176,0x3ccb20d0,0x3c85a792,0x3c05d9c3,0x3b97720b,0xb8165573,0xbab7205d, +0xbaec7288,0x3c31e3e1,0x3b98ff34,0x3ba52cd2,0x3c9b0913,0x3a4a64e3,0xbc083f3e,0xbc3de96a,0xbc5c4566,0xbc554c37,0xbc54b100,0xba5eff22,0xb9b99d55,0x3bb8178f,0xbcba3337,0xbcfa5f98,0xbd0e1a20,0xbc8140c7,0xbc8d4c6e,0xbd304596,0xbb90c8ae,0x3d086e88,0x3d8f9945,0x3de59fb0,0xbae9ff52, +0x3b74c173,0x3c1139e1,0x3c48aab7,0x3cb701fe,0x3c931c11,0x3cb23562,0x3cfac9fd,0x3cc54e05,0x3ca74bb3,0x3c85ecef,0x3cbe9a50,0x3c94b654,0x3b4fb20e,0x3ba070d9,0x3c135915,0x3c9f700a,0x3c193020,0x3adb3b86,0xbb47422c,0xbaeb2911,0xbbe28171,0xbc9ef1b5,0xbc799fc3,0xbcd9aab4,0xbd074d2f, +0xbd599cd3,0xbd3d2e05,0xbcc5cbf0,0x3c2a64c1,0x3d2d5ba1,0x3d77e3e2,0x3d89b75a,0x3d5de15e,0x3cf0bae9,0x3bd22e05,0x3cd44b30,0x3cc365ea,0x3cd0661c,0x3cdadbf3,0x3ccba3d0,0x3c96fd7c,0x3c562391,0x3c338edb,0x3b90edc3,0x3b0e6f1f,0xba008260,0x3c04be4b,0x3c6e076c,0x3c99e31a,0x3c91483b, +0x3c56432d,0x3c355116,0x3c21b64b,0x3c5046d3,0x3c6f19f9,0x3c829c90,0x3c87ec45,0x3c81c28a,0x3c877592,0x3c969ae3,0x3c90990a,0x3cd505eb,0x3d16279b,0x3d4cddd1,0x3d38f9f0,0x3d1822ef,0x3d035922,0x3c577f67,0x3b92d67b,0x3c0f337d,0x3cadf2a7,0xbad51c73,0x37f30111,0x3b922be0,0x3c263404, +0x3c70703c,0x3c79603d,0x3c886f2e,0x3c91463b,0x3c8da032,0x3c852b17,0x3c77edd0,0x3c32b339,0x3bffa0d9,0x3b927000,0x3c064462,0x3c5297bd,0x3c8faa0b,0x3c735b67,0x3c15669c,0x3c340a3f,0x3c378bdf,0x3c049e11,0x3be7a48f,0x3bc241dc,0x3bb241e3,0x3b5a4b07,0x3b8c7891,0x3b767752,0x3ba6c593, +0x3b8f2460,0x3b9981c1,0x3ba45ea8,0x3b697801,0x3aaf363c,0xbb73092b,0xbb8488d4,0x3c69912a,0x3c59ed7e,0x3c4dc410,0x3c3418d2,0x3c2d850c,0x3c22e706,0x3c18019c,0x3c03da78,0x3c086c94,0x3c0376b5,0x3c14ec0b,0x3c1825f7,0x3c279be2,0x3c2f2359,0x3c230001,0x3c0789ff,0x3be1d3d1,0x3bda0dc0, +0x3bd55082,0x3c0347c7,0x3c07cf03,0x3c094d62,0x3c0ed959,0x3c140e29,0x3c1aba71,0x3c284b53,0x3c3903b4,0x3c49757a,0x3c506299,0x3c5d4e9c,0x3c66e4c8,0x3c70f029,0x3c69adad,0x3c6d55c6,0x3c7792d4,0x3c7ab3c1,0x3c5202c8,0x3c4eaaa9,0x3c740aa3,0x3c790070,0x3c75acaf,0x3c5f8234,0x3c70ec7d, +0x3c6e1b3d,0x3c74f347,0x3c7aa636,0x3c7a1bf8,0x3c7fc6e3,0x3c80cb10,0x3c8387fa,0x3c6b5921,0x3c59c059,0x3c67521d,0x3c60b667,0x3c552bff,0x3c3e3c11,0x3c3a9211,0x3c3c9e9c,0x3c3bb35c,0x3c3a5c0c,0x3c38df04,0x3c33bed2,0x3c374fd6,0x3c3cec70,0x3c468e55,0x3c50478c,0x3c5a02e9,0x3c689469, +0x3c62cc33,0x3c5df4a6,0x3c586241,0x3c52a9f8,0x3c812357,0xba4979ab,0xbb3b95a0,0xba83322f,0xba707c8a,0xba3916ad,0xbad30d0a,0x3a46ecbd,0x3a713cbf,0x3a23d71a,0x398ef91d,0xb9c2445d,0xbab89b91,0xba971306,0xba657b49,0x3890db9c,0x3a302c94,0x3a895e46,0x3adda8ff,0x3a3502ef,0x39324b07, +0xb9165a01,0xba3a13c2,0xbaa0d245,0xbad1b98b,0xbaa1657e,0xba989bdb,0xbadd6ef7,0xba386d59,0xb9e08e7b,0xba5bbfd7,0xba069ef1,0xba41ca7d,0xbaa6b4f8,0xbae534f0,0xbb0b2431,0xbafdebd8,0xbb4cbdfe,0xbba5855d,0xba99ffc7,0xbad370cd,0x389267f6,0xbb6e7244,0x3b7b31b5,0x3bb016e5,0x3b4c77c4, +0x3b0f9c36,0x390d39ce,0xbb0e311a,0xbb1acc28,0xba8b55a9,0x3a9ea1e1,0x3b697daf,0x3ba49529,0x3ba3cb55,0x3b8a9d67,0x3b7d2bf2,0x3afdb084,0xba0f209f,0xbadf093c,0xbb2ee46f,0xbb183fb8,0xbb23a55a,0xbb83ddc2,0xbae02c93,0xbad42472,0xbb603006,0xbb1fa404,0xbb198a79,0xbb587bad,0xbb801142, +0xbb8053e6,0xbb411079,0xbbbd316f,0xbc3191e6,0xb91ffd67,0xbae36519,0x3a6472fd,0xbbb98218,0x3c022e10,0x3c2c2588,0x3bd851bc,0x3bc3b8d4,0x3a786f08,0xbb843ffa,0xbb9968bd,0xbaf451d0,0x3b98a118,0x3c1e6abb,0x3c3e130a,0x3c2f3d58,0x3c1bb43d,0x3c00bff7,0x3bb3a0a3,0xba73d310,0xbb427dc6, +0xbba8f423,0xbb7f3d68,0xbb839776,0xbbc8182d,0xbad687b1,0x39ca4e11,0xbb60144a,0xba0a303d,0xba809bfa,0xbbc4e0bc,0xbbc76067,0xbbfccf57,0xbc119527,0xbc600794,0xbb9d4885,0x3c09cf24,0x3adafaf8,0x39cc9b77,0xbc2d2c7b,0x3c33dc36,0x3c83dd94,0x3c6df9ef,0x3c1b87db,0x3add4467,0xbb1464f2, +0xba6c4800,0x3bac2aff,0x3c815c9e,0x3c657f4b,0x3c86f239,0x3ca7e363,0x3ca390e9,0x3c8c58b5,0x3c47db59,0x3abf1340,0xbb2843e2,0xbbc68aa9,0xbbba706f,0xbbb580ac,0xbc2241ab,0xbb87a80b,0xbb990eef,0xbc47e2e1,0xbbe28261,0xbbb9bbd4,0xbc1c1f08,0xbc02efa5,0xbbb51f05,0xbbbf0519,0xbc4e4ae0, +0xbd2670e2,0xbd1d870d,0xbaa7c083,0x3c792fc1,0xba035a3b,0x3bd7627c,0x3c0caa02,0x3c415bc3,0xbb91dd7a,0xbc071c99,0x3a2069ea,0xbb2fffe3,0x3b11c132,0x3c352f8e,0x3c9c2701,0x3ca3f2e1,0x3c2f0787,0x3c47650e,0x3c49ef9e,0x3b9e2fc1,0xbb85e419,0xbbbfe569,0xbb5b6011,0xbc1783bd,0xbc7dbb9a, +0xbccc2115,0xbb9b49ed,0x3b4b536c,0x3c341b5d,0x3c71a303,0x3bc237c0,0xbbd9a9c0,0xbce51786,0xbd26121a,0xbd3008b9,0xbd34f771,0x3b8919ab,0xbd07612a,0xbcdf9d1c,0xbc4fc37b,0x3c7e8330,0xbba4f43b,0xbc971a5d,0xbc97be80,0xbc28cae0,0xbbea924c,0xbbdb50ff,0x395f40e9,0xba6e90a3,0xba4ecfa6, +0xbb81cfc4,0x3b1654d0,0x3cc9b39b,0x3c3fc955,0x3bb92f65,0x3b89b706,0x3bde97fa,0x3bcbd78f,0x3bccddec,0x3c52ff23,0x3b2e7f5e,0xbcc818ef,0xbcccaa98,0xbcbd95cb,0xbcac3398,0x3b83f1df,0x3bfa5d47,0xbc5496eb,0xbb5120a0,0x3a82d9f0,0x3c0d6343,0x3c4a33e7,0xbdd38a77,0xbd877197,0xbc933287, +0xbc07da5c,0xbc4865d6,0xbc72ddde,0xbbe752b2,0x3b79eefa,0x3ae2e869,0x39dd1168,0xbb83503c,0xba6943ce,0xbbc843e3,0xb96d38ee,0xbba43730,0x3a00745f,0x3c9c52b8,0x3c818337,0x3c6af7f4,0x3b9440c2,0x3bbd0c25,0x3bc813e1,0x3ae8de1b,0x3bd98e83,0x3b44aac5,0xbb0688da,0xbc426d4a,0xbc87b9d8, +0xbcc11746,0xbc0a2bc1,0xbb1f5097,0xbcadfbdb,0xbcc4be76,0xbd50532a,0xbd96208e,0xbddc3808,0x3dd2bb58,0x3dc29e88,0x3d99c438,0x3d850aa6,0x3d62a5a7,0x3d2c6791,0x3cd021f9,0x3c1e91a6,0x3c1f03e6,0x3bb22ccd,0x37606280,0x3916346c,0x395bf670,0x3be2dbe0,0x3ba4979e,0x3be6ca96,0x3c723a97, +0x3c3f6593,0x3bba0d4f,0xbb9606aa,0x3aa81dfc,0x3b238396,0xbad80879,0x3c5154e7,0x3b5a05ae,0xbc74e9d8,0xbd478e45,0xbd5d03c2,0xbd188a7b,0xbbfbe804,0xbbbb91fb,0xbd18fb79,0xbd2c1492,0xbc964455,0x3d2690d2,0x3da4b2ed,0x3bff3449,0x3c0dfda6,0x3c405eee,0x3c8de43f,0x3ccf22cf,0x3ca436b4, +0x3caa1826,0x3cc2d0cc,0x3cab078a,0x3c8df1f3,0x3c52b604,0x3c906b8e,0x3c5bb00f,0x3b9e8d02,0x3b2ba17c,0x3b9ab729,0x3c845a9a,0x3bf3f732,0x3b73eec8,0xbb28a2eb,0xbbd06239,0xbc1e9644,0xbc84655e,0xbcf82818,0xbd2f46b7,0xbd3f5c35,0xbd77d248,0xbd572ddd,0xbcc33cd3,0xbc2c7171,0x3c73abb1, +0x3d2c71cd,0x3d798ef9,0x3d7e86a5,0x3d597358,0x3cbdc7c2,0x3c9ba44a,0x3ca87096,0x3ccea769,0x3cc8c22c,0x3cafc7f2,0x3c7e3648,0x3c45b04d,0x3c534c1a,0x3bd1e867,0x3b8e0013,0x3b72e858,0x3ba7aa07,0x3c2af252,0x3c52eaef,0x3c7a3ad2,0x3c65a883,0x3c6d2a31,0x3bf86a7d,0x3c04a3d2,0x3b960dbf, +0xb9162b03,0xbb85694c,0xbc16f662,0x3b009cb8,0x3c0717e5,0x3baa0219,0x3cd499e9,0x3d17d4a1,0x3d2cea02,0x3d3d6c80,0x3d2ead51,0x3ce83b48,0x3c7c604b,0x3c0ef71b,0x3bd79ecc,0x3c6d1ee9,0x3bf81b41,0x3c1cd92e,0x3c25c5f8,0x3c6845a7,0x3c98803d,0x3c995b87,0x3c9a1680,0x3c9da318,0x3c947706, +0x3c8e1081,0x3c6b6b5b,0x3c6b9629,0x3c2be74a,0x3c165cab,0x3c306099,0x3c7388fd,0x3c988cce,0x3c93cf38,0x3c8b0ee2,0x3c7a6203,0x3c979fec,0x3cb7ae65,0x3cc6254d,0x3ca642d3,0x3c8c2be2,0x3c57cab4,0x3c62ec83,0x3c661563,0x3c84eb43,0x3c1b7188,0x3b84fc62,0x39873c71,0x3b32b218,0x3b637293, +0x3aecfcb9,0x3b9013dc,0x3c22c9ac,0x3c155968,0x3c2f6db7,0x3c0ba460,0x3c0bbce1,0x3c078e38,0x3bf25a7e,0x3beb5823,0x3bbfbcdd,0x3bc8479b,0x3bbc6ca2,0x3bc6cb63,0x3bd6ab73,0x3bdcb276,0x3bfa5c19,0x3c069fe1,0x3bf14f60,0x3c0c1805,0x3c0bb387,0x3c609fa2,0x3c411d62,0x3c0ba1b6,0x3bfbb6be, +0x3bc57746,0x3bacca42,0x3b8f8d7d,0x3bce7710,0x3bf81cae,0x3c1aec7a,0x3c32300b,0x3c520d92,0x3c59aaa8,0x3c4608bf,0x3c373278,0x3c368d0c,0x3c2ed53a,0x3be1ecd4,0x3bc6b3ea,0x3c0e5293,0x3c211265,0x3c4ac7b3,0x3c00903b,0x3c24f6bd,0x3c4d96ed,0x3c4c872b,0x3c480405,0x3c47ca86,0x3c3fe441, +0x3c3cb852,0x3c383dff,0x3c16bad4,0x3c0c451d,0x3c45c4ee,0x3c32d4ec,0x3c28f85b,0x3c415f7c,0x3c263bbd,0x3c1ea043,0x3c0c1f97,0x3c025276,0x3bec4f87,0x3bc021d6,0x3bd596a4,0x3bda9c27,0x3bd82daf,0x3be8a7f2,0x3bf44d09,0x3c08d5a0,0x3c04ac0c,0x3c029d49,0x3bf9d62a,0x3beafbab,0x3c006a41, +0x3a86b66e,0x393d29c3,0x3ad5dbf6,0x399b3c2f,0xb8e7dfc8,0xbb048786,0x3af31c51,0x3ad107e2,0x39142bf0,0x398cf663,0xb9c0eeb2,0xbadcaf3e,0xbad23512,0xbab4a59c,0xba1288b0,0x3aad014b,0x3b189355,0x3a71900b,0x3a5f26c4,0x3a311743,0x3a4ca694,0x3a43aa6a,0x3a0d0139,0x3827e264,0x3a066930, +0x3a1f7928,0x381173d7,0x3ad76d8e,0x3af21ffc,0x3a9709f8,0x39cbcc2a,0x37c002fa,0x39d0deba,0xb9680f6a,0xb9ae51cd,0x393f6731,0x38359424,0xb96f0de6,0x3b5e8360,0x3aa8678f,0x3b3987fc,0xbaebb897,0x3ba20bdc,0x3bcd7475,0x3b5d0172,0x3b8565f1,0x3b02689e,0xbaf3deef,0xbacb64c6,0xb9cd7e58, +0x3aad4c72,0x3ba0d51a,0x3bd1e203,0x3bb22a7e,0x3b7e3ef5,0x3b11eee7,0x3a2b0cda,0x392b710c,0xba06f68b,0xbaf3e516,0xba41a128,0xb837217f,0xbaa1a602,0x3b5ca93e,0x3b5f47a0,0x3a7ed07a,0xba85c21e,0xbb06a38e,0xb9ffe7b3,0xbb00358d,0xbad6c1fc,0x3909cadf,0xbad9f32c,0xbaa1af13,0x3b5ab1e4, +0x3b4c117f,0x3b7bcb1c,0xbbb2bb2c,0x3c132af8,0x3c31fb30,0x3bad46be,0x3be8ec73,0x3b3f1e98,0xbba3b302,0xbb94d16f,0xbb1b1902,0x3b11f3e2,0x3c2e5a8f,0x3c4ec4fe,0x3c216eec,0x3bdae0b1,0x3b9e6608,0x3acf5f64,0xb88bd00a,0xba7c9866,0xbb759dd0,0xba786d53,0xb9847746,0xbb58f0a2,0x3bdb7791, +0x3bf1abbe,0x3b2a3d2d,0xbb143657,0xbbaffb39,0xbb16f0f7,0xbbc996e3,0xbbc9c105,0x39f9ec9b,0xbaf17824,0x3a422519,0x3c4c02b6,0x3c759971,0x3c304c3a,0xbbb1dd01,0x3c7674ad,0x3c9acc1d,0x3c651ad5,0x3c53c318,0x3b50b818,0xbb929fc5,0xbb887c09,0x3b2c0b59,0x3c429c9c,0x3c9315ad,0x3ca7b494, +0x3c897684,0x3c71a0e4,0x3c373bbe,0x3b7b3f2e,0xb9c4514a,0xbb1eaf17,0xbbf6a875,0xbb54d6fe,0xbab7d89b,0xbb906708,0x3c2ed430,0x3c1cdb33,0x3a1c9675,0xbbbc1046,0xbc157117,0xbb69ee3a,0xbbe510f8,0xbbabbd03,0x3bcb14e3,0x393946fa,0xbccf7472,0xbd13f557,0xbcd67aea,0xbc0fae0e,0x3a9a22fc, +0x3c2f9711,0x3c24b9bf,0x3b0daa68,0xbbdd64ba,0xbc1b271a,0xbb23b63a,0xbb91d2b4,0x3a849b94,0x3c13f109,0x3c9b60f7,0x3ca0d661,0x3be52754,0x3c2c24f0,0x3c05be1c,0x3b8d60d7,0x394a7b5e,0xbad6ad36,0x3a6592ca,0x3b791a2f,0x3b203174,0xbb7176ba,0x3bb44dd3,0x3c581e67,0x3cbfc131,0x3bc9d40a, +0xbb996391,0xbbba3759,0xbca78b6c,0xbcc45f02,0xbca7e306,0xbcd2d625,0x3b3e1b29,0xbc3be27a,0xbc3b6502,0xbb9a4f34,0xba1a6d84,0xbbd7d338,0xbc34a1f5,0xbc4f2d64,0xbc1075eb,0xbbdeebc1,0xbc02fcaa,0x3ae359a5,0x3ad7f6a5,0x39a4bb34,0xbb7fdf74,0x3a7caac0,0x3c9dfeed,0x3c620f06,0x3c405093, +0x3ba35478,0x3a1224f5,0xbb3ea4ce,0xbc0bee1a,0xbc58ad92,0xbc9fd2fa,0xbcc5289e,0xbca916b6,0xbc74415e,0x3c0258ba,0x3bdf2d34,0x3bf597cb,0xbb8cd12c,0x3b7cda94,0x3b6019b7,0x3afa49a8,0xbac2adbb,0xbdbd6b34,0xbd9789d5,0xbd30fa0f,0xbcd38a78,0xbc9f073a,0xbc7146dd,0xbc1289f0,0xbb086215, +0xba902b29,0x3a893687,0xbb6042db,0xbb1433ee,0xbbab8922,0xbb1952f8,0xbb2edcbf,0xbb75516d,0x3b486753,0x3c1a95dc,0x3c2da861,0x3ae2ebf9,0xbb24f721,0xbb50f0de,0xba51907f,0x3a283438,0xbc148a5c,0xbcc7268b,0xbcdcdefc,0xbca94bde,0xba6f9d71,0xbbab8964,0xbc2d0241,0xbcbbf8ec,0xbcf1bf0e, +0xbd047ca3,0xbcf1262f,0xbda84b08,0x3d877473,0x3db786d5,0x3db3c96f,0x3d912b49,0x3d6e5898,0x3d23aae1,0x3cbe3bd1,0x3b997117,0x3bee56e0,0x3b3fd25f,0xbabe0ec5,0x3b025afb,0x3ab4f1b5,0xba28f518,0x3a33903e,0x3b931654,0x3bee711b,0x3c62f5e1,0x3c5888ca,0xbafde56f,0x3bec49bf,0x3bd0c53e, +0xb9fc2f40,0xbbfac6a6,0xbc889815,0xbcdd35db,0xbd031eb1,0xbcf6a1da,0xbc9a52cc,0xbcb2300c,0xbcc178c6,0xbcb3a394,0xbd74cb35,0xbd50410e,0x3c3a8132,0x3d08f6d2,0x3d2d7525,0x3cddb88a,0x3cb5642c,0x3ccd34e2,0x3cd87ddd,0x3cbb633c,0x3cb0bec3,0x3cac6645,0x3c9cec61,0x3c802f17,0x3c2259b4, +0x3c1ebfc9,0x3c090546,0x3c3003f3,0x3afc8052,0x3985103f,0x3bda5b09,0x3b927eca,0x3b101e8a,0xbc5695aa,0xbcc55cdb,0xbcd02e93,0xbcaf7b05,0xbcd493d1,0xbce0af37,0xbd1fd42a,0xbd051c76,0xbd18eff0,0xbd499dff,0xbd1be9cd,0xbca8b18a,0x3bf88e3c,0x3d185ed5,0x3d727ba9,0x3d970f1b,0x3d62188f, +0x3c374327,0x3c82e4ca,0x3c9dce65,0x3c9c0946,0x3c74efa6,0x3c5afb85,0x3c3e0c37,0x3c2e8df0,0x3c3975e1,0x3c36d5cf,0x3c345ed9,0x3bda0e1f,0x3bd31f86,0x3c136444,0x3c70e435,0x3c90e3c8,0x3c9b6d06,0x3c17d025,0x3b63b583,0xbabfacc2,0xbbd6b1d0,0xbc3a8dfa,0xbc86610d,0xbc44958a,0xbc09c6b6, +0xbaf06524,0x3c562cf4,0x3cc86630,0x3d0319ef,0x3d2d4be8,0x3d323da5,0x3d1358dc,0x3cd26275,0x3c7c010a,0x3c1786ae,0x3c078ba0,0x3c789315,0x3c953891,0x3c8bf373,0x3c9817d2,0x3ca9d67b,0x3ca0d9ff,0x3c96930d,0x3c8ff99b,0x3c922f01,0x3c953b32,0x3c97d0fb,0x3c9b41f1,0x3c865a36,0x3c7a2712, +0x3c6ebd34,0x3c75c1d3,0x3c7e740f,0x3c7e3c28,0x3c78bdfd,0x3c74b35d,0x3c92e145,0x3ca6c52c,0x3cb30dd9,0x3cbf5369,0x3cc60f0e,0x3ccd2333,0x3ccc11b3,0x3cc5e61c,0x3cc333f7,0x3c81ae03,0x3c204312,0x3bb45c58,0x3c002d0d,0x3c17b38f,0x3c04dc9f,0x3c43f887,0x3bba8875,0x3b9ce23b,0x3bbe3728, +0x3ba4915a,0x3ba67fdb,0x3ba07da7,0x3b97f599,0x3b95c4bc,0x3b9c4c7e,0x3bbb680f,0x3bbe78ef,0x3bdb358f,0x3bf9d091,0x3c0c5aa8,0x3c2f2893,0x3c653ca5,0x3c7ebe8a,0x3c91d152,0x3c9196c6,0x3cd05acc,0x3cbe08e0,0x3ca72ca6,0x3c989384,0x3c84e25a,0x3c6bfc14,0x3c4c0df5,0x3c4e5662,0x3c4c7816, +0x3c571a08,0x3c599751,0x3c5bc309,0x3c40ab51,0x3c2563ff,0x3c0a63ae,0x3bf75c67,0x3bdbfb2a,0x3b9d1867,0x3b83e53e,0x3ba8f113,0x3bb85954,0x3bdffa3e,0x3ba06c09,0x3bc3dde4,0x3becd83c,0x3bed653c,0x3be5dc2f,0x3be6ee85,0x3bdeee6d,0x3bd9bc7d,0x3bce9ca3,0x3bf7e146,0x3c064156,0x3c0c0cc3, +0x3c2779e0,0x3c3503d5,0x3c58c522,0x3c342e57,0x3c2d4eaf,0x3c1e4ca4,0x3c12ff70,0x3c05fe55,0x3be85bcf,0x3be5ce23,0x3bd4f403,0x3bba2a32,0x3bb05430,0x3ba91c8f,0x3baf34d7,0x3bb61639,0x3bb981cf,0x3bb6e92e,0x3ba7bc60,0x3b94ef35,0x3b3a9819,0x3b27fcd9,0x3b2de41e,0x3b2d8927,0x3b0c5499, +0xb955c2d3,0x3b63666e,0x3b548761,0x3acb1a28,0x3b0d4993,0x3acba5c2,0xb8cad552,0x391930f5,0x39b566a6,0x3a23c461,0x3b39fc5b,0x3b808b04,0x3b301531,0x3b2e6314,0x3b1d9d36,0x3b06228e,0x3b141d27,0x3b09c192,0x3ab43f7a,0x3af8f820,0x3b12b133,0x3b0a9a64,0x3b7acf1f,0x3b76c008,0x3b0d3531, +0x3aa6bafe,0x3a717195,0x3b10510d,0x3a8e6cf6,0x3a9c5e82,0x3b19ffec,0x3b1b6da2,0x3b4e1769,0x3b7de1bd,0x3ba58429,0x3b8d1fb1,0xba821600,0x3ba4f287,0x3bd74ee6,0x3b7daca8,0x3bb496de,0x3b813d4c,0xb9cdc769,0x396763a1,0x3a7072a3,0x3ad433fd,0x3bc1e698,0x3bf04327,0x3be27014,0x3b94213c, +0x3b0c711e,0x3a31903c,0x3a9c8514,0x3a696f33,0xb98452ba,0x3a8f95e6,0x3b0581f4,0x3aba922f,0x3bcf3f54,0x3bc0d22c,0x3ae251f6,0x391376fe,0x392fd664,0x3ba2d0cf,0x3b47e493,0x3b5b09d7,0x3b96b1a6,0x3b54b9c2,0x3af5fe5b,0x3a8d828a,0x3b8a9197,0x3b68903a,0xbbb8681e,0x3c179455,0x3c2b7795, +0x3b7f4fd7,0x3c026c8d,0x3b91f551,0xbba13f96,0xbb3b9647,0xbac84325,0x389fd216,0x3c24265a,0x3c4dbcbc,0x3c3ee087,0x3bdf0f31,0x3b7d5ffb,0xb9333594,0x3a2275ac,0xba0f6428,0xbb77f540,0xbacd4504,0x39bb8308,0xbac38dc7,0x3c2622c4,0x3c1ecac6,0xba69bf41,0xbb9ca61b,0xbbf52fcf,0x3ac7519e, +0xbb212ce8,0xbb09ffa0,0x3ac28b89,0x3b1d3358,0x3a584396,0x3b4933f4,0x3c351ab9,0x3ba8743d,0xbc42418b,0x3c2df887,0x3c8e8a4e,0x3c2711ae,0x3c731642,0x3bb0ec97,0xbbd37998,0xbbabeb38,0x3a585d61,0x3bd7e0b6,0x3c962c77,0x3cae5db3,0x3c82d2a6,0x3c321099,0x3b783d21,0xbb5784c0,0xbb51f7cb, +0xbb7ce2aa,0xbbe9d84b,0xbb1a1fdc,0xb9ab7808,0xbba347c9,0x3c6779c4,0x3c399189,0xbba00ed0,0xbbe86096,0xbb9c7c32,0x3c3602d7,0x3c16911e,0x3c167ed0,0x3c0f36ad,0x3b64003f,0xbbbcc04f,0xbcefadde,0xbd1b7f20,0xbc9a7884,0x3c17b387,0x3c293bb6,0x3bffd00a,0x39b1dcd1,0xbc01fbe7,0xbc34b5c3, +0xbb85353f,0xbb8a6906,0x3a6ce2c9,0x3becaa26,0x3c848586,0x3c93f69b,0x3c36b26b,0x3c3d9d21,0x3c227955,0x3c56bc34,0x3bb91d93,0xba2b8b6a,0xbb7ec040,0xbc0ef8bb,0xbc091ff1,0xba329265,0x3bec674d,0x3c70e387,0x3cde8ced,0xbbaf47bc,0xbccd3192,0xbccaa9d3,0xbd15c411,0xbd08772c,0xbc9e4167, +0xbb81639e,0xbc76d1e4,0x3a3ccdee,0x3c1f20bf,0x3b64affe,0xbc4c57d6,0xbc8caf1c,0xbc73686f,0xbbbc3fa5,0xbc030fec,0xbbe7b3b2,0xbc07ad52,0x3ad106fb,0x3b30d7b2,0xba67b1d1,0xbb39897a,0xba474487,0x3bec7d43,0x3c3acae1,0x3c28b768,0x3aba1f91,0xbbae565e,0xbc2481ca,0xbc5b4efb,0xbc4cd1f2, +0xbc5b72f3,0xbc395ffa,0xbc8490c5,0xbc4ae783,0x3bc3d71e,0x3b8ed162,0x3c302d83,0x3c4a6113,0x3c9f288f,0x3c7fea96,0x3b3f089d,0xbc916eeb,0xbd317e7c,0xbd93d2eb,0xbd6a8519,0xbd1c3a5a,0xbcb0c345,0xbc28cd09,0xbb61fcf1,0xbbadb39e,0xbaa12a09,0x3b4231af,0xbadfb430,0x3a2e7775,0xba15274b, +0xbacd530e,0x3a9483ee,0xbb8d38d1,0xbc1896bd,0x3c03f08e,0x3c458462,0x3a44d5b4,0xbba8964c,0xbc29c58f,0xbc4326b5,0xbc993a5f,0xbcc74e2d,0xbcd95743,0xbcb7d7e9,0xbc59939a,0x3b593e08,0xbc4331f6,0xbccf93c6,0xbd10ba9c,0xbd0240f1,0xbc8b7418,0xbbd4bbfd,0xbcb298bc,0x3cc2acdf,0x3d5426f6, +0x3d9a0856,0x3d7fc98d,0x3d551d12,0x3ceef174,0x3c73feaf,0x3adf781b,0x3b9cd0a1,0x3a4210b4,0xbb137c5c,0x3a7a277c,0xb94a65e3,0xbb809de8,0xbaca81cc,0xb8d5fe5d,0xbb984ccf,0x3c4da13c,0x3c622662,0xbbc762e6,0xba871210,0xbb587d37,0xbb85cc16,0xbc587739,0xbc9046c5,0xbcdbcc44,0xbc827704, +0xbc8985d6,0xbccfc9b2,0xbcfa6bab,0xbcdbba56,0xbca206f0,0xbd25c700,0xbd48f392,0xbd1fb687,0xbc0b70ca,0x3d8dd031,0x3d4bb828,0x3d1c440a,0x3d0a98f9,0x3ce77b90,0x3cd9799f,0x3cc860de,0x3cb63ccc,0x3c9b2d28,0x3c565558,0x3b99b6af,0x3b529b38,0x3ba68704,0x3c5dbf9f,0x3b9c85ba,0x3b0f0ae6, +0x3a74370f,0x3adb360d,0xbb6cad84,0xbc8e4dd8,0xbcbd7111,0xbcf19136,0xbd028528,0xbccd6316,0xbcb43eee,0xbcff6ff9,0xbc3b72b2,0xbc5676bc,0xbd1b7438,0xbd1dd706,0xbd20da7b,0xbd03c196,0x3c236cfd,0x3d392a34,0x3d8dffc9,0x3d954938,0x3c7bb5ac,0x3c7d5a6b,0x3c7cd5c7,0x3c7c5569,0x3c41ae57, +0x3c518fec,0x3c5c7572,0x3c4b9038,0x3c87d8be,0x3c8ebf6c,0x3c714250,0x3c52ed24,0x3c2b3813,0x3c20969c,0x3c42f557,0x3c624398,0x3c5b4ceb,0x3c3419c6,0x3ba1757e,0xbb36f1fa,0xbbc1e4a5,0xbc009e21,0xbc13f151,0xbcb902db,0xbcd30503,0xbc9128c5,0xbc14d551,0x34d5f676,0x3c18850a,0x3ccfaa64, +0x3d16c52c,0x3d2d3f10,0x3d2c1287,0x3d0a2191,0x3cbaabc8,0x3c93bf65,0x3c8ffd02,0x3c99d6fd,0x3c98f2bd,0x3c9d0cdd,0x3ca9f488,0x3c91ee0a,0x3c6e21b4,0x3c3d4de5,0x3c5e6a4d,0x3c663ca1,0x3c8ec20d,0x3c808de9,0x3c86feda,0x3c69464d,0x3c7a3a9b,0x3c690790,0x3c6dec06,0x3c7ad5c5,0x3c859329, +0x3ca7110a,0x3cb147b0,0x3caecd7b,0x3cbfe192,0x3cded599,0x3cfcc947,0x3d09e717,0x3d07e0ee,0x3d083070,0x3d07c64f,0x3cd8c89a,0x3cadac12,0x3c964254,0x3c81834d,0x3c777fef,0x3c609d9f,0x3c887cc3,0x3c04319f,0x3c0780a5,0x3bb8c6fa,0x3bf81aed,0x3bd3dba6,0x3bceb215,0x3bf34371,0x3be26789, +0x3c0ad897,0x3c0ad1e5,0x3c16cde0,0x3c1e7e0c,0x3c3261df,0x3c45d45d,0x3c709b46,0x3c8afc41,0x3ca0a55b,0x3cb4d400,0x3ccdbcf5,0x3cc90924,0x3cbb8abe,0x3cb92a74,0x3ca9b5eb,0x3ca2a581,0x3c95eac6,0x3c8bb6a0,0x3c7cf110,0x3c61bfd9,0x3c4ffe3c,0x3c4197b0,0x3c34b1d8,0x3c1283eb,0x3c12763d, +0x3c09c0a3,0x3c025889,0x3bfd4dae,0x3bdc2c51,0x3be784ab,0x3b99ea0a,0x3b82dbea,0x3b543b69,0x3bc09ef5,0x3b9809d3,0x3b7be219,0x3b821702,0x3b91755f,0x3b9859c7,0x3bab26f6,0x3bb19349,0x3bb2e0b1,0x3be42ec5,0x3c028b75,0x3c06e8a9,0x3c0f4b8c,0x3c1e3cba,0x3c212788,0x3c24032c,0x3c27d3f7, +0x3c2e5ecf,0x3c2e5537,0x3c30e6e4,0x3c37eae2,0x3c272094,0x3c18c1ca,0x3c07626b,0x3bf58f89,0x3bde29c3,0x3bc781a8,0x3bd9578b,0x3be2421d,0x3beb9547,0x3be763ea,0x3bd4e40b,0x3b33e083,0x3b04dec5,0x3a8e56b5,0x3b223536,0x3b2e5f57,0x3a7a0520,0x3b5d1932,0x3b6a36b9,0x3b2b8ba4,0x3b621157, +0x3b456b6a,0x3acfe8cd,0x3af3975d,0x3b007547,0x3af345ad,0x3b49ee65,0x3b724254,0x3b972b51,0x3b64a58a,0x3b3b9456,0x3b0cfd2a,0x3b145428,0x3b0c2875,0x3adfadac,0x3b03bd45,0x3b1bf93f,0x3b48746a,0x3b66b8af,0x3b3f6b38,0x396e01a4,0x3a577e86,0x3a872776,0x3b275093,0x3b02594b,0x3b1caba3, +0x3b55cc21,0x3b1a3d25,0x3b3e1c69,0x3af3a9ab,0x3bb7f9a4,0x3b97a996,0xb9a305fd,0x3b98c0bd,0x3bb946e5,0x3b638873,0x3ba6abb9,0x3b852cc5,0x3a46b39c,0x3a2c3fc6,0x3a7b4da3,0x3acb6e97,0x3ba5bc6a,0x3bd4727c,0x3bfeda4e,0x3ba76f62,0x3b428306,0x3aca2290,0x3ae44737,0x3a9c94b0,0x39fe4234, +0x3a2063ff,0x3b006d70,0x3b8be4dc,0x3bc03afd,0x3b820d8c,0xbb163b15,0xbab28b88,0xb98a6a6b,0x3b9b937b,0x3b45223e,0x3b6a849e,0x3b9bf2f8,0x3b642c36,0x3a2cad95,0xbb2a397e,0x3b1dc658,0x3b621c87,0xbbc6f35e,0x3c0aeff8,0x3c170482,0x3b2969fb,0x3beb9b80,0x3ba3c43f,0xbb45330f,0xbaea1976, +0xbaaa25ff,0xb89451de,0x3bf382cc,0x3c334a27,0x3c5cb202,0x3c039569,0x3b840632,0x39f75e4c,0x3ab80dc1,0x38df93fa,0xbb01cf84,0xbaa0731d,0x3ab5956e,0x3bacc2f9,0x3c09cec7,0x3b9d03c7,0xbc15f8ce,0xbbdd914b,0xbbc67c05,0x3b6e1b4f,0x3ac42260,0x3b7dceb6,0x3bb9939d,0x3affe965,0x3ba84034, +0x3b519440,0x3c670ebb,0x3c2a88eb,0xbc2b72a6,0x3bfb1d3b,0x3c7c8806,0x3c0ace24,0x3c6c58a0,0x3bdf0090,0xbbd5949c,0xbbb793ec,0xb9e64388,0x3b81ff49,0x3c7e86ba,0x3c94f2cd,0x3c8f3ab4,0x3c31d67e,0x3b761bf0,0xbade8839,0xba93a02f,0xbb32bf69,0xbbac055c,0xbb84585a,0x399b1163,0x3be6f7a2, +0x3c390c75,0x3b696896,0xbc72a11d,0xbc250184,0xbb8de344,0x3c41fbad,0x3bf54bbc,0x3c2ace5f,0x3c071360,0x3ba2f8f6,0xbbc179c0,0xbca3bae1,0xbd2f4705,0xbccf79c8,0x3c9bb853,0x3c3adccf,0x3bd6d4de,0x3a90c1e9,0xbbe2dc27,0xbc264bc0,0xbbb9ca8e,0xbb11687e,0x3b0e0aeb,0x3b812199,0x3c3a7918, +0x3c81ad78,0x3ca35664,0x3c547ef6,0x3c26e639,0x3c49406d,0x3ba7959f,0x3a95b374,0xbac4854a,0xbc43b881,0xbc29f466,0x3b59ce83,0x3bf6c26f,0x3bee516e,0x3c3d6000,0xbcacb639,0xbd04d788,0xbc96b339,0xbcc7b80b,0xbca2fe96,0xbc3267d3,0x38e7aa60,0xbc66e442,0xbb9c801b,0x3c54e097,0x3ba993eb, +0xbcafa169,0xbcd93deb,0xbcc2f934,0xbc39a160,0xbc102ab2,0xbbb7e404,0xbbfaff26,0x39598b61,0x3a26ac68,0xbb3008c8,0xbb0d6cd1,0xbb2b4740,0xbb4b4512,0x3c108992,0x3c2f6350,0x3a943a98,0xbb88612b,0xbc189023,0xbc4c5df9,0xbbed9c29,0xbc0e88a5,0xbc6a22d5,0xbb673b18,0x3b229186,0x3c469f81, +0x3ba6127f,0x3b0aaacf,0xba76a3fe,0x3c076114,0x3be78d09,0xbabe14b9,0xbc4ce851,0x3bd84f3d,0xbd2257ef,0xbd43b8ac,0xbd118619,0xbcd05551,0xbc0f801e,0x3a9cbfed,0xbb46ee61,0xbaf83fbe,0x3b0af8a5,0xba99d052,0x3a907d2b,0x3ac3561f,0xb9a8a02a,0x3babfbdb,0xbadf9fc9,0xbc4f3c7a,0x3c1b4e11, +0x3c49d5e9,0xbb40c0de,0xbbd5ff2a,0xbc52aa85,0xbc93d49b,0xbcaf43fa,0xbca724f5,0xbc9eac7d,0xbc150707,0xbc5744ca,0xbcc761c1,0xbcc6d24b,0xbce2a7fe,0xbd1b9ec4,0xbcd14c0d,0xbc3d5b3b,0xbb8328f5,0x3c72a458,0xbcd4f72a,0x3c48d4f7,0x3d4960d0,0x3d3d4c9b,0x3d1b6767,0x3c82303e,0x3b686d18, +0xbb50ca10,0x3ac77491,0xbac13026,0xbb7b1f48,0xbaba3e3d,0xbb0e1f3d,0xbbebfea0,0xbb99532e,0xbb71d21f,0xbc13d041,0x3c40e045,0x3c47c324,0xbba5b702,0xbbfe0ba7,0xbc4482f4,0xbbef5fe5,0xbc3f31f9,0xbc79da6f,0xbccd223b,0xbc8b2de0,0xbc63649c,0xbc703cb9,0xbc4582c9,0xbc7735f9,0xbd0bfeba, +0xbc9a2732,0xbd02d1f8,0xbd94b9a9,0xbd453462,0x3d98bc38,0x3d8c1abf,0x3d5562df,0x3d2e19c0,0x3d08cc3d,0x3d037a24,0x3cf1e26c,0x3cbdd324,0x3c890e19,0x3c2135bd,0x3a3d5d04,0xb5d5f40f,0x3b6b20be,0x3c3ba986,0x3bd5280a,0x3b617d2a,0xbb6cd60a,0xbb438cbd,0xbbe6b598,0xbc5b9ab3,0xbc6900f5, +0xbcaaaf00,0xbcc12165,0xbcba699b,0xbc872f1a,0xbbb0769e,0xbaab6cc1,0xbb8efb54,0xbc5a66e9,0xbce4accc,0xbd22d3f7,0xbd59bd8f,0xbcaa257e,0x3c611e3a,0x3d2d0158,0x3d886642,0x3ce5339c,0x3ca36fe7,0x3c95c16c,0x3c9beceb,0x3c7f7054,0x3c87b76b,0x3c927145,0x3c91af33,0x3ca07149,0x3c9daab0, +0x3c8c9fd4,0x3c8b39ca,0x3c5a4a34,0x3bd722fa,0x3b926d2d,0x3b93cca4,0x3bbee29b,0x3c079cf7,0x3b90776a,0xbb6f6225,0xbbed3110,0xbc2ed40a,0xbc4966ce,0xbcc024f2,0xbcf2d6e7,0xbd0dc118,0xbd16e59a,0xbcfc537a,0xbc795a78,0x3b3aa416,0x3ccc021e,0x3d356595,0x3d6c71f1,0x3d6cf65f,0x3d417682, +0x3d15131d,0x3cb74ccf,0x3ca5d2fb,0x3c979ce5,0x3c94ded5,0x3c983804,0x3c7bfb3a,0x3c3b22d6,0x3c010a84,0x3c0dca24,0x3c16cf72,0x3c2f686b,0x3c25aa89,0x3c3ac124,0x3c28d24a,0x3c53014e,0x3c513cbf,0x3c5d4848,0x3c80b113,0x3ca257e1,0x3cb57dec,0x3caebea3,0x3cae6f02,0x3cae6c66,0x3cc4afea, +0x3ce00047,0x3cf71709,0x3d0c110f,0x3d1abf08,0x3d269556,0x3d13b168,0x3d03f8e2,0x3cfb9243,0x3cd2b9c2,0x3cbf37b8,0x3cb06ae4,0x3cb6e604,0x3c5b7ce8,0x3c57f26c,0x3c1f5363,0x3c50d5ce,0x3c39d087,0x3c32036d,0x3c4e79f7,0x3c4c1815,0x3c68be2e,0x3c5cfea5,0x3c5fb1a3,0x3c617b9a,0x3c695a1d, +0x3c6d10ff,0x3c6ba611,0x3c62f400,0x3c7a6e43,0x3c7d9539,0x3c8884e0,0x3c4143eb,0x3c4b86bd,0x3c6e995a,0x3c7baf32,0x3c89081a,0x3c8c4435,0x3c91317a,0x3c843db6,0x3c7609e2,0x3c752f56,0x3c80823a,0x3c8a4a5e,0x3c917d40,0x3c8ea0d4,0x3c887ec7,0x3c7e70d4,0x3c688118,0x3c67df3a,0x3c6c5309, +0x3c34d951,0x3c1601ac,0x3bc75601,0x3c4e7739,0x3c1d8e6a,0x3bd8b6a6,0x3bd75a11,0x3be37995,0x3bea608b,0x3bf46d2a,0x3bf6aeb6,0x3bf7a6b1,0x3c268981,0x3c47f39d,0x3c09b54d,0x3c1ffef9,0x3c328601,0x3c414388,0x3c5d2a43,0x3c65279e,0x3c7479cb,0x3c7f32e5,0x3c86f25f,0x3c91f805,0x3c8de84b, +0x3c8bf2d4,0x3c870642,0x3c83719d,0x3c7c8917,0x3c75029c,0x3c720193,0x3c714f68,0x3c713b27,0x3c6fc71b,0x3c83a4a6,0x3b1c8705,0x3adb1df9,0x391c7152,0x3ad1e6b7,0x3b059861,0x3a96b8f0,0x3b3fc49f,0x3b4af43a,0x3b147684,0x3b48bf4a,0x3b3c6e60,0x3b0be7aa,0x3af83e86,0x3af37a6d,0x3af48a5e, +0x3b306cd8,0x3b53d7d9,0x3b9bfc5c,0x3b6cf022,0x3b4ecc1c,0x3b24b680,0x3b1ca681,0x3b10cc72,0x3afc5c7c,0x3ae865bc,0x3b0530a4,0x3b6df6eb,0x3b25a58e,0x3ae6950b,0xba3bd56d,0x3a239f20,0x3a89c66b,0x3b0cbced,0x3b0bfd8b,0x3b21aeea,0x3b4b368b,0x3b0eb513,0x3a562d54,0xb9f7545c,0x3b87eb46, +0x3b86f88e,0x3ab21fdd,0x3b81e859,0x3b8bf6d3,0x3b37e5cf,0x3b8bbe69,0x3b767299,0x3af4e26a,0x3a40f917,0x3a501483,0x3aeb9e0b,0x3b872c9b,0x3bb7fea2,0x3c045156,0x3bc24b4b,0x3b8c10fa,0x3b4f77ca,0x3b43715a,0x3b0d927d,0x3acaf1af,0x3a46d3d3,0x3b00d350,0x3bcadeeb,0x3b3e1fb2,0xb986cfd5, +0xbbb6d9f2,0xbb35360f,0xb9b55f8b,0x3b73c4bf,0x3b79d9ab,0x3b864cbe,0x3b9049d4,0x3b05367b,0x398289a2,0xbb87c73c,0x3a2a7f72,0x3ade4b75,0xbb57fa76,0x3beabbb4,0x3beb844a,0x3ac8402e,0x3bbc2988,0x3b9f50dc,0x38ae3c53,0xba59af73,0xbaab73f5,0x3a600bb4,0x3bb5552b,0x3c1f4dcc,0x3c67783f, +0x3c1fe432,0x3bc61360,0x3b4fa908,0x3b7dd5d2,0x3b0c1799,0x3a6363e5,0xb9330db3,0x3af7b2a7,0x3c29e277,0x3b9246e0,0xb9542313,0xbc51d684,0xbbee8e4b,0xbb876216,0x3b2a0c8a,0x3b911107,0x3baa2640,0x3c0384b9,0x3b525275,0xb692a199,0xba480def,0x3c700d18,0x3c432e6d,0xbb8ccf72,0x3be152b7, +0x3c4dc82e,0x3bcbfd7a,0x3c4f8e6f,0x3bf7cb53,0xbb9d1749,0xbbc8d16c,0xbaf1cf0d,0x3b79c355,0x3c57fd2f,0x3c845de6,0x3c9c3b6c,0x3c4576d3,0x3be4f8f0,0x3b3b51fa,0x3b7c9073,0x3aa3f21b,0xba953b6d,0xbb1d8e84,0x3b21d082,0x3c86f180,0x3ba61320,0xbc060069,0xbcc06667,0xbc54fa31,0xbb28b39c, +0x3c18681f,0x3c23d906,0x3c3cb867,0x3c3a3111,0x3bb2c39b,0xbb8508d3,0xbc4ba4ad,0xbd36efee,0xbd00f73d,0x3caabfa6,0x3c316bfd,0x3bafc07f,0x3a35ac50,0xbbb20d02,0xbc0983d3,0xbbd71b15,0xb9fbdf0e,0x3b3ff939,0x3a80485c,0x3be934a2,0x3c58e9ef,0x3cc2c3d5,0x3c4eb233,0x3c03bdb8,0x3bc5f798, +0x3bc2a230,0x3bbea1a3,0x3b577bd8,0xba226b02,0x39f27bd0,0x3bf1beb2,0x3c25e4d7,0x3c436bf3,0x3c6adb7a,0xbce2454b,0xbd11a1db,0xbc508e18,0xbc65971a,0xbc209b48,0xbc08b491,0xb95ca9c1,0xbb8fb111,0xbb55d9b0,0x3c78ddd8,0x3c0843e7,0xbcaf54a7,0xbcc68f24,0xbcaa5273,0xbc5a2350,0xbc1e14fd, +0xbba35f42,0xbbcf6fdf,0xbab5deee,0x390640e8,0xba9581db,0x36519cd0,0xbb2a791c,0xbbe6d4dc,0x3c014555,0x3c35e75a,0x3b4802d0,0xb9b8b6ee,0xbbbf480a,0xbc029953,0xbc041906,0xbbfca926,0xbc389a91,0x3aec5c65,0xb75f2f43,0xbbc4a239,0x396296c7,0xbb0361d1,0xbc656ff3,0x39b7e972,0xbb7ad15f, +0xbcbe1d90,0xbc3075d3,0x3c93b353,0xbbe63dfc,0xbcca2490,0xbcbe618c,0xbc944c39,0xbc057a6a,0x39e455a9,0xbb626583,0xbb8eab1f,0xb7828a66,0x3a1fca10,0xb97e4376,0x391995ea,0x3968afcb,0x3bb3043d,0xbab54e20,0xbc2b2e56,0x3bd8423c,0x3bee00b4,0xbb9d443c,0xbbed10f4,0xbc47c6d5,0xbc655c8a, +0xbc82be5d,0xbc758c80,0xbc7e91f8,0xbb74c42b,0xbbc7371a,0xbcb94d2e,0xbcc405cb,0xbcc76a78,0xbd00212b,0xbc24c955,0x3aa42ca3,0x3befa72e,0x3cbdc1b2,0xbd9e7360,0xbcbb0044,0x3c6427e9,0x3ca012d0,0x3c934b8a,0xb905094a,0xbc0ba860,0xbc46df3c,0xbb861dcf,0xbba95a56,0xbbdf2d4f,0xbb158777, +0xbaa3ef00,0xbbfda43f,0xbbc67a7c,0xbbb93df3,0xbbed7ea2,0x3bd4d82d,0x3bfa2621,0x3ac6f6b6,0xbbb6962d,0xbc3359d9,0xbc10549f,0xbc0f87e6,0xbc0a7264,0xbc3e6d06,0xbc163cec,0xbc0f031d,0xbc0b0bdb,0xbc0eb9d3,0xbc5aa08e,0xbceccceb,0xbc6bfd0f,0xbcfb19ff,0xbd945f6f,0xbdad2376,0x3d8e7938, +0x3da2fa6b,0x3d83534e,0x3d582051,0x3d267bb8,0x3d2b0a6f,0x3d19b314,0x3cc9b822,0x3c819d5f,0x3c0cbf97,0x3b027b48,0x38f4af1a,0x3adcc22f,0x3bb72757,0x3b872da7,0x3aad083d,0xbbb9b2a9,0xbb9a59b1,0xbbe74650,0xbc0fd016,0xbc0f46a9,0xbc1348a7,0xbbddbccc,0xbc151acd,0xbb83abfd,0x3b8a667d, +0xbc094ff0,0xbc83294b,0xbc670179,0xbcaf837a,0xbcfd1f4d,0xbd40c061,0xbd2e84db,0xbc99b298,0x3cb45cfe,0x3d4be403,0x3d0e0abe,0x3cd52274,0x3cc629d5,0x3ccb0f3f,0x3cac33c3,0x3cb7cf1f,0x3cb3697c,0x3c94a9c0,0x3ca3b42a,0x3ca24a78,0x3ca16771,0x3c943a1b,0x3c51ed44,0x3b5860fe,0xba8fcf84, +0xbac2ee66,0x3ad212e3,0x3bd50635,0x3ba34c59,0xbb17abb5,0xbc12f576,0xbc7f0296,0xbca830f7,0xbcbdfc72,0xbceca6b7,0xbd170a91,0xbd379da1,0xbd2e95ba,0xbceda350,0xbc91535f,0x3b4b3555,0x3cee3e37,0x3d5200ee,0x3d717c77,0x3d5defdb,0x3d30c71d,0x3d01c089,0x3cdb7dae,0x3cb4d116,0x3c9f7cee, +0x3c855124,0x3c66a3a1,0x3c3807fe,0x3c0f145a,0x3c09dfbf,0x3c170ba5,0x3c0cc2a0,0x3c26834f,0x3c28a816,0x3c4c07dd,0x3c4cdeca,0x3c49e978,0x3c3ca628,0x3c33a28d,0x3c648c93,0x3c31866d,0x3c124acb,0x3c24db75,0x3c0e003f,0x3c4c55aa,0x3c80e4bd,0x3c9e0e75,0x3ce4ab1d,0x3d0eabe9,0x3d2744ed, +0x3d2d942b,0x3d33d022,0x3d3bde47,0x3d2090a7,0x3d141501,0x3d1113dd,0x3d0a18f9,0x3cb5afb7,0x3cae7e58,0x3c758f2d,0x3ca5ed7c,0x3c936bab,0x3c96572f,0x3ca27901,0x3c9ef075,0x3ca55b31,0x3c9a9380,0x3c91110b,0x3c90a71e,0x3c899b16,0x3c81a9ff,0x3c697072,0x3c5a8247,0x3c59bf44,0x3c455096, +0x3c29a6c3,0x3c0ddc58,0x3c3b71fd,0x3c6794f8,0x3c87a64f,0x3c9c45cc,0x3caf9e73,0x3cc1c755,0x3cbf8c87,0x3cc035e0,0x3cc71d17,0x3cd2dd80,0x3ce03604,0x3cf67504,0x3ced07af,0x3ce23822,0x3cd11786,0x3cbe94cd,0x3cb25e41,0x3cb6185a,0x3c99b8b0,0x3c8b2a10,0x3c648f69,0x3ca429c6,0x3c8d222b, +0x3c68a337,0x3c63313f,0x3c6518c8,0x3c68eec7,0x3c653d89,0x3c670946,0x3c69060f,0x3c8489ff,0x3c8f55b0,0x3c5c1b9c,0x3c7a0524,0x3c82907b,0x3c8c6d1e,0x3c982986,0x3c9e858f,0x3ca7a303,0x3cae2e8e,0x3cb4d8f3,0x3cbecbae,0x3cbedc4c,0x3cc19150,0x3cc27676,0x3cc3ec09,0x3cc3bc89,0x3cc56968, +0x3cbe32e6,0x3cbb6d20,0x3cb95689,0x3cb867aa,0x3cc04c92,0x3b21cba1,0x3ab99dff,0x39f8bec6,0x3ab02b38,0x3ae37b04,0x3ac32a9b,0x3b251212,0x3b13e90c,0x3ada8a50,0x3b131b8f,0x3b145801,0x3b12e62d,0x3ac47a28,0x3ab99709,0x3ac693fc,0x3b1340e5,0x3b3efda3,0x3b86054a,0x3b61afbb,0x3b5c6998, +0x3b4c689e,0x3b3c53c8,0x3b307790,0x3b1fd039,0x3b09188d,0x3b137614,0x3b79d0e2,0x3b062a7d,0x3ab20301,0x39b2d203,0x3a8e2543,0x3acd710e,0x3b1a843a,0x3b3c3603,0x3b357211,0x3af713ce,0x3ae9961c,0xb9f84914,0xbaa2f2fd,0x3af81288,0x3b4c1999,0x3b1ebba3,0x3b2d9a74,0x3b2ffa96,0x3b1f7ab7, +0x3b6811e4,0x3b66d815,0x3b413329,0x3aacabc4,0x3a9613dd,0x3af9caa5,0x3b7569c2,0x3ba94a49,0x3bf216e8,0x3bd1aac5,0x3baa0377,0x3b939c30,0x3b93d932,0x3b6cc439,0x3b42ac11,0x3af6ed34,0x3b07121e,0x3bacc366,0x3987cb47,0xbb0c4c5b,0xbb6c3d7b,0xbb2449f4,0xba09bc38,0x3aff7dd0,0x3b74ef5d, +0x3b612376,0x3a5d7d61,0x39494622,0xbb5e285c,0xbbfd4ed6,0xba774b6f,0x3ab23ea0,0x3a1b15b8,0x3ba02219,0x3b84e38c,0x3aa84c6d,0x3b84b9c5,0x3b93cb83,0x3b2f97bf,0x3a553b28,0xba14b647,0x3aa609e1,0x3b9c5b51,0x3c0d4dd1,0x3c57b84a,0x3c323d32,0x3c0a775f,0x3bbb367f,0x3bd08362,0x3b978491, +0x3b5de002,0x3aad3ff3,0x3b0930e8,0x3c1c47eb,0x38f0b095,0xbb6ca48f,0xbc0bcfbf,0xbbab0fd5,0xbaeb7a54,0x3b1fc543,0x3bf4faa0,0x3bc42ed8,0x39c2a212,0xb9f86382,0xbc1d3bd6,0xbc3f9c3e,0x3b71fb06,0x3bcc5e76,0xba90d1bd,0x3b7c7ddb,0x3bf9f937,0x3b60bdf0,0x3c1f8361,0x3bef04f9,0xbafbb5d7, +0xbbac6205,0xbb146d5f,0x3b5d42c7,0x3c383ef0,0x3c76aadf,0x3c9f1ef8,0x3c54454b,0x3c1b9d31,0x3bdbc7db,0x3c0774e2,0x3baf89d4,0x3b54ba6b,0x39b1ea6d,0x3b051c62,0x3c333d23,0xbb763762,0xbc710f38,0xbc9b94ac,0xbc4f13d1,0xbb621f0c,0x3b1d8b46,0x3c0cb5eb,0x3bd3de24,0xbae82248,0xbb7d7032, +0xbafac756,0xbb8bc43a,0xbd0f2b3d,0xbce6cf0a,0x3c8cce99,0x3c2e8e7e,0x3bda7332,0x39cc8480,0xbb200dd6,0xbba0b9f8,0xbbc5e8b6,0x3a7588b0,0x3b2268e5,0xba0fdca3,0x3bb49ca8,0x3c3db7bd,0x3cb12e20,0x3c64a8d6,0x3c17956c,0x3b94a78e,0x3c04c706,0x3bf33b9f,0x3ba1a36f,0x3b70e58c,0x3b74ee29, +0x3c0a40ed,0x3c16c9a4,0x3c5ddc9b,0x3ccb7b47,0xbc7ce224,0xbcb86dfc,0xbb52f497,0x3b857f8c,0x3bed13e1,0x39f1517e,0xba1148a8,0xb920923c,0x3ad13cad,0x3c78e898,0x3c1d6c44,0xbc642b53,0xbc9a12d9,0xbc8229fc,0xbc0572a2,0xbbfefd08,0xbb916b83,0xbb89c799,0xbac93896,0x3a9dd49d,0x3b05ccaa, +0x3b5c48d9,0xb9380248,0xbba8d426,0x3ba93ec7,0x3bfe300b,0x3bd20e86,0x3b7039c8,0xbae96427,0xbb7e5f93,0xbbe2b9e1,0xbb91d7ab,0xb99f95ab,0xbbc64ecd,0xbc2f0a6d,0xbc6bc114,0xbc803188,0xbc64e405,0xbc9767ea,0xbc0b150d,0xbc50c896,0xbcfca23e,0xbc1a4a4e,0x3c8965e4,0x3bc9a6db,0xbc492316, +0xbc867769,0xbc6a3914,0xbc20ae7b,0xbb502013,0xbc0fe9e6,0xbbccf50d,0xba2375f9,0x3ad48de0,0xb9b53674,0xba021fc3,0x3a837f93,0x3b45e547,0xbadbee39,0xbbbe9759,0x3b86d52e,0x3b82c63a,0xba152f73,0xbba6d04a,0xbc0bf5ae,0xbb8f6c64,0xbc0d25ae,0xbc05942e,0xbb78814e,0xbbcbf7e7,0xbbd28398, +0xbc39b204,0xbca16be8,0xbca90aa9,0xbc91419a,0x3a15e9a6,0x3c0e4afa,0x3c402fe6,0x3c95e7b6,0xbdca1b09,0xbd52dfe9,0xbcac91e4,0xbc27e57d,0xbba08f49,0xbc846643,0xbc93271a,0xbc98fc45,0xbc1b48cf,0xbc012b41,0xbbe516ab,0xba8626cb,0x3a3187f1,0xbb6dbe68,0xbb63f2a9,0xbb94a3cf,0xbbb59e30, +0xba7ca0c2,0x3af84763,0x3c0f1a33,0x3a021beb,0xbb97d0de,0xbbc04a74,0xbc00fe19,0xbba94909,0xb8078402,0xbb6e39a6,0xbbdb6b3b,0xbbdca12d,0xbc55eee4,0xbc6e7d39,0xbc1f343b,0xbcab9146,0xbd11fea4,0xbd4a0d99,0xbdbe2425,0x3d62068e,0x3d9209a6,0x3d8b3dbf,0x3d6ebe30,0x3d3adc83,0x3d4c37ec, +0x3d2bf4b4,0x3cb6c8c9,0x3c71282f,0x3bf2969c,0x3bac4433,0x3a0ab8f2,0xba8af00f,0xba1695a9,0x3a57df5b,0x38a6c08c,0xbbbb5495,0x3b069486,0x3988112d,0xbb4c1e98,0xbbc1d4e8,0xbbaf79ac,0xbb144f4f,0xba097643,0xbb825335,0xbc5796b4,0xbca56cfb,0xbcb81822,0xbc9f2bdd,0xbc9e406f,0xbcbaa0a3, +0xbce71533,0xbd441595,0xbd20321b,0xbb41a4ad,0x3cecab9d,0x3d12c2e8,0x3cf86ffc,0x3cf2b3dc,0x3cea0e02,0x3cc6cdac,0x3ccb8c94,0x3cbf6dc8,0x3c9e6664,0x3cb0c7ad,0x3cae6a02,0x3cae0a14,0x3c9193ce,0x3c522302,0x3be11ad2,0x3a4ff75a,0xba0f28cf,0xb92e8227,0x3b2fa50a,0x3b1229e2,0xbb766723, +0xbc33a8e1,0xbc86d7ac,0xbcb3c3a8,0xbccc4d1b,0xbce9421a,0xbcd9d574,0xbd028b0d,0xbd087912,0xbcef461d,0xbcf0d912,0xbcb432f0,0xbbc4f0df,0x3cc690a9,0x3d26aee5,0x3d2af534,0x3d209cd2,0x3d1f63fc,0x3d0331e8,0x3cdcbb89,0x3cc51ac4,0x3c9fab7c,0x3c8f6fa6,0x3c81deb4,0x3c57ffe2,0x3c43e755, +0x3c492ab6,0x3c2aaba9,0x3c51046f,0x3c538738,0x3c81ab6d,0x3c66078c,0x3c4e1063,0x3c2cd253,0x3bc93051,0x3b8bbaa0,0xba96150b,0xbaf94dfb,0xba870d66,0xbab3c18b,0x3b681c3b,0x3be5cd6e,0x3c294f7f,0x3c7865d1,0x3ca3cd69,0x3cc724fc,0x3d0b0daf,0x3d34bf6b,0x3d57cbd1,0x3d494248,0x3d43101c, +0x3d4c3435,0x3d341a15,0x3d00b061,0x3d02a021,0x3cd22dde,0x3cef949d,0x3cd92912,0x3cd88f3d,0x3cd7df49,0x3cd02638,0x3ccf7c4a,0x3cc40ca9,0x3cb5e6b9,0x3cb09e5f,0x3ca2a518,0x3c92a2dc,0x3c854f23,0x3c813689,0x3c7e3ed3,0x3c711e3e,0x3c50fa5b,0x3c598c72,0x3c81a3d4,0x3c8ed9a0,0x3c9a3bfb, +0x3ca5f0a7,0x3cb3e3ed,0x3cc30888,0x3cd01a3c,0x3cda950f,0x3cdef572,0x3ce9474f,0x3ceb4eb7,0x3d0021ae,0x3d00391c,0x3d023a93,0x3d0141d0,0x3cfdc8dc,0x3ce094d1,0x3ce9fd90,0x3cd1c13f,0x3cc4c62f,0x3cb047d6,0x3cd0fd89,0x3cbe2f66,0x3caba265,0x3ca697db,0x3ca35d3e,0x3ca24e3e,0x3c9ccab5, +0x3c9ae81e,0x3c9977f6,0x3ca7582a,0x3cadd7f2,0x3c91094e,0x3c9dd6dc,0x3ca1eb77,0x3caa2728,0x3caf9ce8,0x3cb628e4,0x3cbecc1b,0x3cc48913,0x3cc98421,0x3cce888b,0x3cd0e44b,0x3cd618b7,0x3cdd9e87,0x3ce1141b,0x3ce4dbd1,0x3ce705bc,0x3ce37af2,0x3ce15877,0x3cdf10b5,0x3ce27130,0x3ce2b0db, +0x3b3fabac,0x3aba93bc,0x3a9b3e21,0x3afabf9a,0x3b1d9de2,0x3b2e1979,0x3b3ab023,0x3b13b276,0x3b066437,0x3b153e8d,0x3b220ed2,0x3b49c470,0x3b094112,0x3b001839,0x3af2d864,0x3b2b02aa,0x3b50c200,0x3b81597f,0x3b8065b0,0x3b81addb,0x3b70f4ad,0x3b65b802,0x3b5a1af5,0x3b497f23,0x3b3167c8, +0x3b2d6b1f,0x3b7005f9,0x3ade36a9,0x3a8aacb5,0x3a4a6f12,0x3ab2d35a,0x3af5cc16,0x3b17f18f,0x3b4c61bf,0x3b4b19d5,0x3af5dae4,0x3ae638a8,0x3a090694,0x3a05d69e,0x3ac0109f,0x3b624148,0x3b9d7975,0x3b264b26,0x3b012003,0x3b3f0b90,0x3b54f357,0x3b6c458e,0x3b96463c,0x3b1e5a73,0x3afadf1e, +0x3b0516de,0x3b732af1,0x3ba6fbf7,0x3be105be,0x3be5f38f,0x3bd1abb6,0x3bb44d0b,0x3bb42904,0x3b976fc3,0x3b7b7719,0x3b312fc0,0x3b0ebd73,0x3b8d47cd,0xbaa017fa,0xbb3aaa15,0xbb0c4bab,0xba94147c,0x3a29d1d2,0x3ad11596,0x3b81dfbc,0x3b7557c3,0x398230dc,0x3a345732,0xbb8ddc9c,0xbbc445d6, +0xbad44c15,0x3b491c39,0x3bbd8746,0x3b653add,0x3b061529,0x3b28ffde,0x3b3f210a,0x3b91250b,0x3bc3f60e,0x3b2fc175,0x3a29cdce,0x3abc94e7,0x3b983100,0x3c0189c1,0x3c42b6fd,0x3c415976,0x3c2d8f31,0x3bf684b5,0x3c00c53c,0x3bccdaed,0x3b96456f,0x3b253fe4,0x3b0c8ed2,0x3bee3096,0xbb87b93a, +0xbbeff29c,0xbbfd7317,0xbb97e908,0xba821797,0x3a3c67ab,0x3bc9e07f,0x3bc1c636,0xbb48376b,0xbb7913bb,0xbbbd2e85,0xbbdf6fea,0xba40a064,0x3ba4ef0a,0x3bba88a7,0x3a854316,0x3b3e1a63,0x3b426aac,0x3be2af9b,0x3bd7087d,0x3b0d2cb8,0xbb393eb9,0xbacfd40b,0x3b0d38b4,0x3c114dd5,0x3c57040b, +0x3c960e45,0x3c6cb455,0x3c496cea,0x3c17a67d,0x3c2a91cd,0x3bf6137c,0x3b9ad9a1,0x3ac6a339,0x3a871790,0x3bdc8b6f,0xbc28b2f0,0xbc907059,0xbc74a668,0xbc1397ab,0xba7c1be9,0xba52999a,0x3bd22bc7,0x3bb238e7,0xbc0b912c,0xbbe66107,0xbbd94531,0xbbed40df,0xbcbcc53e,0xbc97b385,0x3c6725f8, +0x3c576c04,0x3c3219fc,0x3b15db96,0x3a072303,0xbac0b377,0xbb781f3d,0x3b192b67,0x3b1d4bf6,0xba458f73,0x3bb601a2,0x3c349fbf,0x3c978001,0x3c891f3c,0x3c674c4d,0x3c018c07,0x3bffe4ca,0x3bb5149a,0x3b660cab,0x3aafa4e6,0x3b058113,0x3c1a881e,0x39a39cdd,0x3b150ffd,0x3c8c35aa,0xbc5868f7, +0xbc81193b,0x3ac4d143,0x3c325e88,0x3c56d83c,0x3b354c7b,0x3a83d95c,0x3c15a4d3,0x3c4a142e,0x3bd9fa2f,0x3b330268,0xbc3561af,0xbc8066e3,0xbc636325,0xbbea82de,0xbbbb75a6,0xbb2e2dbb,0xbb0c4858,0xbaed4d22,0x3a1412a2,0x3b29ef90,0x3ba704c8,0x3b0c556b,0xba5fdf7e,0x3b53342d,0x3ba6ff12, +0x3c25dd79,0x3bbc148b,0x3a286848,0xbb5fafb9,0xbb842412,0xbb5a5d2f,0xbac6a279,0xbc2d5df5,0xbc543376,0xbbcb26b5,0xbc371260,0xbc46b5de,0xbc19fc95,0xbcaf53a5,0xbce19ffe,0xbcf32177,0xbbb171f5,0x3c2f7ad0,0x3c54f02f,0x38962fe8,0xbc012619,0xbc97310d,0xbc272147,0xbbb6fbd9,0xbc3ae760, +0xbbf32c87,0xbae4362e,0x3a806ac0,0x39c33ec1,0x3a95ff17,0x3b170c65,0x3b155ede,0x3a36383d,0xb92d68d9,0x3b8f867a,0x3b97522c,0x3c0e5c00,0x3a740119,0xbab555c8,0x3b4ce3e0,0xb8c0f367,0xb93836b9,0x3a989f7f,0xbb0efa48,0xbbc72606,0xbc248560,0xbc83c95c,0xbc6d557e,0xbb0ed523,0x3c2aa362, +0x3c7b8c70,0x3c4cf632,0x3bf51db5,0xbd948b7e,0xbd859bde,0xbd3c52f5,0xbd05bf30,0xbcc61dd5,0xbcbb97de,0xbc973b57,0xbc8a27dc,0xbc32d282,0xbbfaaa8d,0xbb7d9a8b,0xb8f2ce27,0x3a84ecc9,0xba5496ab,0xb975e71d,0xbb07e4a7,0xbb8f26bd,0xbb87f009,0xb9458308,0x3c431f8b,0x3b48bc0d,0xbaca056a, +0xbbce5c5f,0xbbcc643e,0xbbb3c253,0xbbb626a0,0xbb952f31,0xbb5f9476,0x37b0f23d,0xbc071cfa,0xbc585b1a,0xbbeef310,0xbcc1952e,0xbcf2fc5c,0xbcea9489,0xbd77206d,0x3cd059bf,0x3d399801,0x3d6c2e5c,0x3d5a4218,0x3d36c5b2,0x3d438f2c,0x3d144d91,0x3c69af1a,0x3c27f157,0x3b90b684,0x3ba6cb84, +0x3a01887f,0xbaec0d40,0xbb68a2f5,0x39db79b9,0x3a98ada1,0xbb66a792,0x3ba2c6e3,0x3b93f490,0x3b83ca23,0xba8a8501,0xbb81cc9d,0xbad2a6b0,0xbb80f63d,0xbc4726d0,0xbca5e3b6,0xbc7697aa,0xbc7c8aa3,0xbca75daf,0xbc9d3283,0xbca0012b,0xbc9d9b26,0xbd130fa7,0xbd296669,0xbd04c572,0x3a883b28, +0x3d1cdf5d,0x3d1637e9,0x3d11c131,0x3d0473dd,0x3cde06f4,0x3cc43e77,0x3cc55144,0x3cd98fe1,0x3ccd316e,0x3cba2e07,0x3caa6873,0x3c8a3235,0x3c697cb5,0x3c6012c6,0x3be89b77,0x3b540192,0xbacf453d,0xbb329e6c,0xbb9f95d8,0xbc09bf85,0xbc67fedb,0xbc8dbfa4,0xbca03eba,0xbcc7e51d,0xbcc07d61, +0xbc8172d9,0xbca43fe6,0xbcb794bb,0xbcd4b6b6,0xbcf63aad,0xbd0714a7,0xbd025df8,0xbc0dd11c,0x3c53bf44,0x3ce2b839,0x3d0de7cf,0x3d1b6694,0x3d08d638,0x3cfcadfb,0x3cec35a1,0x3cd2d617,0x3cc76e06,0x3cbc813e,0x3ca72c46,0x3c909a62,0x3c89874b,0x3c642131,0x3c6a14b9,0x3c6080c5,0x3c604320, +0x3c4c25e0,0x3c2d89b9,0x3c150a0c,0x3bac4405,0x3a9a7dac,0xbb05c0e4,0xbb1510a6,0xbb51e013,0xbb784c72,0xbb13fa63,0xbb146198,0xbb278469,0xbb165766,0xba86218b,0xba3846c7,0x3c707f85,0x3cf884ee,0x3d36aa55,0x3d3ab1c7,0x3d3c05b5,0x3d4ade22,0x3d2e6657,0x3d04bf8a,0x3d0a209c,0x3d07049a, +0x3d02c3d2,0x3cfc03fe,0x3cf531b0,0x3cef192e,0x3ce70885,0x3ce400ba,0x3cd9fb02,0x3ccfc5b9,0x3cc6a4c9,0x3cb9a89c,0x3caaf6a1,0x3ca0b751,0x3c95b0c0,0x3c8e8471,0x3c879f89,0x3c84b6b9,0x3c68eeec,0x3c824961,0x3c8e9dc8,0x3c97f398,0x3ca27147,0x3caefbad,0x3cbb86d4,0x3ccbcca0,0x3cda0264, +0x3cdd900b,0x3ce1e0c3,0x3cd6461d,0x3cde4fba,0x3ce0112e,0x3cec9e43,0x3cf4bf26,0x3cffa305,0x3ce56744,0x3cea360d,0x3ce73a44,0x3ce36edc,0x3cdbde74,0x3cde4f98,0x3cd83e86,0x3ccd4091,0x3cc90505,0x3cc50655,0x3cc2a2f3,0x3cbe9371,0x3cbc3d9b,0x3cbac87c,0x3cbdef8b,0x3cbb8bf9,0x3cb3cea1, +0x3cb38517,0x3cb16f07,0x3ca6415f,0x3caeebd5,0x3cb46818,0x3cbb13ef,0x3cc00dbb,0x3cc4cfb7,0x3cc9c868,0x3ccc41f6,0x3cd06f8d,0x3cd82d1d,0x3cd9c4bc,0x3cde9c18,0x3ce01aa1,0x3ce186b0,0x3ce11aab,0x3cdfa9ae,0x3ce3383d,0x3cec84f5,0x3b7475cb,0x3b17ac57,0x3aedcf85,0x3b293d19,0x3b4c96a7, +0x3b8aad43,0x3b67b754,0x3b33d94b,0x3b35a8e4,0x3b24f0bf,0x3b378dfe,0x3b82be50,0x3b34275a,0x3b223e7e,0x3b0d971d,0x3b4e8518,0x3b77e311,0x3b8160a4,0x3b922014,0x3b98ff38,0x3b940f56,0x3b8b2dd5,0x3b842370,0x3b75e814,0x3b68995f,0x3b5a79b7,0x3b7af7d7,0x3af74cca,0x3aad69cf,0x3a8a0397, +0x3b1caaff,0x3b482f25,0x3b52e22b,0x3b83d460,0x3b8338e0,0x3b375395,0x3b351608,0x3b0690a4,0x3aabff61,0x3b1ad562,0x3b9b619b,0x3c0b54c2,0x3b55b099,0x3b088d84,0x3b861d96,0x3b6954b1,0x3b873f22,0x3bd0668f,0x3b65e58e,0x3b34d0f1,0x3b22fcc9,0x3b81e38f,0x3badbcca,0x3bdc9bbf,0x3bfe7484, +0x3bf11d9e,0x3bd3ffab,0x3bd1edc3,0x3bb8bf9b,0x3b9a6535,0x3b87403e,0x3b57de42,0x3b85413b,0xbad12a43,0xbb4f697b,0xbb35821a,0x39f76ee9,0x3b303fbb,0x3b2dc0d1,0x3b9e9f42,0x3b8df862,0x3a7a95bc,0x3b0bca44,0xba90dec2,0xbb3e7e03,0x3a195765,0x3b9f96c6,0x3c552341,0x3b636c45,0x3ae0af71, +0x3ba93871,0x3b3cf4f2,0x3b95ad8e,0x3c190223,0x3b851257,0x3aca30a7,0x3b048aef,0x3b9b0440,0x3bfe4570,0x3c334e22,0x3c4de151,0x3c451636,0x3c185d46,0x3c12c3e0,0x3bee98de,0x3bb8f4fc,0x3b92afa1,0x3b59c3da,0x3bc17664,0xbbbd1322,0xbc113cb7,0xbc172e50,0xbadf7517,0x3b503096,0x3b218742, +0x3bf4c58a,0x3bdf32ce,0xb9a7ba20,0x395dcaaa,0x3a99751f,0xb892a508,0x3b8b8b52,0x3c169455,0x3c961d2e,0x3b14397c,0xb86cfeeb,0x3b923070,0x3ba7d742,0x3bd68c20,0x3bf04922,0xb99141e3,0xba9e1d14,0x3b03ce2f,0x3bf30b84,0x3c43c483,0x3c89a9d5,0x3c864f73,0x3c7a95ff,0x3c4452e1,0x3c510504, +0x3c21e7fc,0x3be753cc,0x3ba8f6e6,0x3b72abde,0x3bc61f05,0xbc4b97fa,0xbc9af046,0xbc8c261b,0xbb927376,0x3b7c66c4,0x3a0b12e4,0x3bdbfe04,0x3ba75246,0xbbd7c801,0xba76fe81,0xbbe3393d,0xbc4997df,0xbc8f5534,0xbc556c69,0x3bcfb287,0x3c448de2,0x3c5bd63b,0x3be83844,0x3b34dc30,0xb9a0b35d, +0xbb203640,0x3b4b1e0a,0x3b54bf59,0x39806d7c,0x3bc54734,0x3c2d9ae2,0x3c82b0ff,0x3c9f054b,0x3c94f4ef,0x3c0b70f3,0x3c038f7d,0x3bb700f1,0x3b39463a,0x3a6713ec,0x3ae9c7af,0x3bd4b7b4,0xba50b1f0,0xba972b1e,0x3b67e920,0xbc2abaa7,0xbbf8603d,0x3c363486,0x3c589d83,0x3c79fb91,0x3c1f5a88, +0x3b80d5c3,0x3c7fe2a1,0x3cfa7e33,0x3b4ba612,0xbb8d788a,0xbbee1394,0xbc2f98d7,0xbc3444c6,0xbc0c4374,0xbba61462,0xbad24e58,0xba90ab91,0xbb32704a,0xba509b9e,0x3afea78d,0x3bb284bd,0x3b704a2b,0x3b3fff28,0x3b2d89f4,0x3b8828a1,0x3c450039,0x3bee5c49,0x3b88a703,0x3af7cdf9,0xbb1cfa45, +0xbb978803,0xbbdc438c,0xbc167f0d,0xbbf68d35,0xba8b0b02,0xbb198bbc,0xbba5119c,0xba853da8,0xbcf8e059,0xbd17ae01,0xbcc49789,0xbbb33079,0xbaa1d660,0x3c1a5f12,0x3c1db368,0x3a20f05b,0xbc9e376c,0xbc178e84,0xbb9716f2,0xbc28b8bb,0xbc00283b,0xbb557774,0x3a110ac2,0x39c79f43,0x3b1084fc, +0x3b1a2952,0x3b3cf0ee,0x3b634ca0,0x3b8ded46,0x3b7e9548,0x3ba790d7,0x3c8e2a93,0x3bdd01f6,0x3b84e18e,0x3bcdf511,0x3be5df63,0x3ba6efc5,0xbb1dc69f,0xbb4e01be,0xbbca758d,0xbbe18995,0xbbec185a,0xbb890b26,0x3bb0b18f,0x3c90ff97,0x3c8dd06b,0x3b9bc3ec,0xba9c219c,0xbce7bded,0xbd662eb5, +0xbd613204,0xbd32ea25,0xbd0b59a2,0xbcac7b0b,0xbc4ec137,0xbc4ba2d0,0xbc1bd66f,0xbbcbadd1,0xba84320a,0xb7b0e197,0x3a842f99,0x39a5062e,0x3aa9e663,0xba351788,0xbb065894,0xbb820799,0xba5abd3a,0x3c58e3d6,0x3bbf3704,0x3aeed77e,0xbb889ac4,0xbbed932c,0xbc473b13,0xbc623713,0xbc292fbf, +0xbbd45072,0xba3d1167,0xbaf36a65,0xbc0a320b,0xbc7b221b,0xbca7f7cb,0xbcb818af,0xbcd04bb9,0xbc9c3eab,0xbc8c1e96,0x3c0b2cc8,0x3d052bef,0x3d121951,0x3d0a5cd0,0x3d09a4de,0x3cadee13,0x3b6165e8,0x3b56761b,0x39839cba,0x3aeb480c,0x3a8007fd,0xb9f16afd,0xbb7e6287,0x3acfbe25,0x3b457b1c, +0x3a8b0329,0x3a98eaf4,0x3ae4dae1,0x3bf3996a,0x3980e51c,0xbb9906a5,0xbbb9a9be,0xbc3b865b,0xbc528eda,0xbbecb2a1,0xbbea186c,0xbc18b626,0xbc324a28,0xbc7c3626,0xbc85eb1e,0xbc7f8c99,0xbc93440f,0xbcf2bd86,0xbd3a5041,0xbcf6268e,0x3d2c7a67,0x3d3b4a1b,0x3d34ca05,0x3d22e685,0x3d0e7c21, +0x3cdc68e7,0x3ce04d69,0x3d0c4d35,0x3ce77161,0x3cc1f383,0x3c9d2761,0x3c81b2bd,0x3c790a3d,0x3c89399a,0x3c2861c4,0x3b78fee4,0xbb81c584,0xbbd4f5f3,0xbc1f192d,0xbc152ee3,0xbc5cda3c,0xbc76b102,0xbc47e35a,0xbc8d91e8,0xbc827e75,0xbc5c3ba8,0xbc87d368,0xbc949fe2,0xbcbbbdfa,0xbcdd761e, +0xbd05e40d,0xbd1c3c47,0xbd01ed0e,0xbc555fd5,0x3c83d29d,0x3cfbf177,0x3cf6dcf4,0x3cf52e91,0x3cefcff3,0x3ce896fc,0x3cdbc8ed,0x3cdfc712,0x3cdcfa87,0x3cd54a36,0x3cb9d319,0x3cab81b6,0x3c912e81,0x3c75f9aa,0x3c45b828,0x3c0d6517,0x3c0a64c9,0x3bef2ce1,0x3bcde879,0x3bb12946,0x3b61849a, +0x3b0e334a,0xb96e51e7,0xbb57324a,0xbbccc891,0xbc0bebe2,0xbc375caf,0xbc66b166,0xbc6a6da9,0xbc729150,0xbc871c4c,0xbb51fb09,0x3c14e736,0x3cab1017,0x3cdf467e,0x3cff08b4,0x3d132ed3,0x3d0128c9,0x3ce3e6a7,0x3cf048ef,0x3d031fec,0x3cf0d5da,0x3cf56453,0x3cef473f,0x3cea423b,0x3ce95f15, +0x3cde3424,0x3cd44dd5,0x3ccd1a79,0x3cc0813c,0x3cb6364f,0x3ca91717,0x3c9c010f,0x3c80b0fb,0x3c631df6,0x3c3d0ac8,0x3c455763,0x3ba46c69,0x3bd9f7aa,0x3c15b9e2,0x3c3473ce,0x3c51ff29,0x3c6bb0d3,0x3c8095ce,0x3c8a901e,0x3c99aab5,0x3ca3d29a,0x3ca91437,0x3ca423c9,0x3ca83f8e,0x3cab6cc2, +0x3cb7a8a9,0x3cc54f40,0x3cd8ec34,0x3cd44b4c,0x3cd5b32b,0x3cdeb789,0x3ce16c10,0x3ce287f9,0x3cda86c2,0x3cdccdbc,0x3cdae3fa,0x3cd6e1b4,0x3cd281c1,0x3cce0e39,0x3ccaff8d,0x3cc82dda,0x3cc5ce1c,0x3cbbc739,0x3cb2ef4e,0x3cba6ca4,0x3cabd655,0x3ca3fe57,0x3c89ba2c,0x3c987d55,0x3c98d00d, +0x3c9be89a,0x3c9f2590,0x3ca37b23,0x3ca8ae0c,0x3caf20cc,0x3cb48559,0x3cbb9ce9,0x3cbea2ee,0x3cc52750,0x3ccae5d7,0x3ccd45b7,0x3cce5364,0x3ccdc21a,0x3ccfde0d,0x3cee5d3f,0x3b92885e,0x3b53e759,0x3b42b81a,0x3b53f3e1,0x3b796571,0x3bc098e4,0x3b8409bd,0x3b570cdf,0x3b7960bf,0x3b5086f4, +0x3b62dfda,0x3ba174c5,0x3b679dbd,0x3b4fb0ed,0x3b399912,0x3b716aac,0x3b8a471a,0x3b8d5eaf,0x3ba0d638,0x3ba9b5d6,0x3badd0ef,0x3b9f4533,0x3b97015b,0x3b8e1dc6,0x3b8bd636,0x3b80d10d,0x3b6ea8df,0x3b1838a7,0x3afbc1ef,0x3add2827,0x3b630aca,0x3b861e47,0x3b6a00ce,0x3b9eb4eb,0x3b9cb53c, +0x3b5db84e,0x3b6b9d9a,0x3b4dc5e7,0x3b27ac20,0x3b5168a2,0x3bc44579,0x3c352fc0,0x3b83d407,0x3b2725a7,0x3bacf65a,0x3b83f4d1,0x3b986363,0x3bf2f67d,0x3b8c3fb8,0x3b66a67a,0x3b50a3ff,0x3b92fc1e,0x3bb87662,0x3bd7ab31,0x3c063870,0x3c025038,0x3befb0a7,0x3be37de9,0x3bcafed3,0x3bb0cf7f, +0x3babcd74,0x3b7bdf9e,0x3b1ae85e,0xbadff15b,0xbb2d16b6,0xbb0f8372,0x3b204e7d,0x3b901c08,0x3b20c7e0,0x3bb1a568,0x3b9cecc7,0x3acd5698,0x3b34c916,0x3a89edb9,0xbac78b9e,0x3af9d93d,0x3bc46abd,0x3c8dd052,0x3b797d24,0x3afb9f1f,0x3bef5d28,0x3b62b94c,0x3b9ad970,0x3c361dc2,0x3b9b2bb6, +0x3b1588a1,0x3b35d21c,0x3ba61233,0x3bfbb7ed,0x3c20cded,0x3c4f2486,0x3c4fde2e,0x3c2d6dce,0x3c18fb61,0x3bf8638d,0x3bccbaf7,0x3bba9bd6,0x3b646d4a,0x3acf66e1,0xbbd3fb43,0xbc0f2785,0xbc123828,0x3abb8f5a,0x3bc17d72,0x3a82bd48,0x3c0e3881,0x3bf969e3,0x3a6124a3,0x3b179ad3,0x3b0a8822, +0xb99f9401,0x3b9d7ac2,0x3c353eca,0x3cd06ca4,0x3b6e50ef,0xbacff235,0x3bddee0b,0x3b8dcef8,0x3bdb10ac,0x3c42a6cd,0x3adea5a7,0xba8d9251,0x3b4c754d,0x3bf3c498,0x3c407d79,0x3c7c8c93,0x3c8d3b1d,0x3c8a9474,0x3c5da274,0x3c5341ac,0x3c27b6fb,0x3c0c4142,0x3bf28994,0x3b514ad8,0xbae6475c, +0xbc76c7d1,0xbc9d259e,0xbc8acc08,0x391b4eb7,0x3bc7fba8,0xbb20d39d,0x3bd277a6,0x3b8ecb39,0xbba48ada,0xb8d2dd9d,0xba691cae,0xbc02cc92,0xbc670bdc,0xbc3ae7ab,0xbb3d8250,0x3c12abd4,0x3c6fe553,0x3c3e5891,0x3b978048,0xb74a31f0,0xbb0a80dc,0x3b5c2653,0x3b8d207b,0x3b004032,0x3bea0346, +0x3c2cb4bd,0x3c6287ad,0x3caa9715,0x3c9f35cf,0x3c218ea7,0x3c2722b8,0x3bcb8189,0x3b11f20f,0x3ac50131,0x3b23b6e5,0x3b90e593,0x3b775047,0x3b2c9d92,0xbb43e948,0xbb8ea4cb,0x3a9182c8,0x3c87366b,0x3c76eefe,0x3c921bfe,0x3ca3ef45,0x3c0c01bc,0x3c26d03d,0x3d22e55b,0x3b71a78b,0xbbed67c8, +0xbb47218b,0xbb8f3bd0,0xbbbdd933,0xbbdd3d9a,0xbb21e9fd,0xb96bc909,0xba754656,0xbb28ea93,0xba58146d,0x3b30df7d,0x3bb34b65,0x3b9cac1e,0x3bb7282b,0x3b0a3eaf,0x3b454441,0x3c3178c7,0x3bd001ae,0x3b867d49,0x3b2e9a2e,0xbb8d628e,0xbbd20ebf,0xbb9b408c,0xbba71350,0xba98edf2,0x3b9124e4, +0x3b831bd5,0x37f0a995,0x3b2fcab6,0xbcf94d96,0xbd17300e,0xbc8c698e,0xbc2cf2ba,0xbbc01a52,0xba872d81,0x3bb198c5,0x39748c8d,0xbc993b6a,0xbc506aa0,0xbbeaf9e8,0xbc029190,0xbbf71d4d,0xbb8bdf72,0x39c22a92,0xb7a7569d,0x3b159cf8,0x3b09fc0d,0x3b413e48,0x3bae2b53,0x3c0a483f,0x3b4af3d0, +0x3bb63542,0x3cac650e,0x3c1fb5c1,0x3bb7ea6f,0x3b9d0fda,0x3979894f,0xba3161d7,0x3b1b02a3,0xbbf26ed0,0xbc2cbe68,0xbbe32b95,0xbb17814b,0x3b3680f8,0x3bcaf1cf,0x3c99e2fb,0x3c800ea2,0xba5ece23,0xbaf3fe76,0xb96bed9e,0xbce40deb,0xbd4852a1,0xbd36af6a,0xbd0e76a8,0xbc94c475,0xbc00bd0f, +0xbc092e17,0xbbecd5bf,0xbb7f1d94,0xb8b722ea,0xb96c0068,0x3a1d11d7,0x3b0a9e82,0x3b075909,0xb9a67111,0xb9a5781a,0xbb26d0d8,0x3a8faf74,0x3c4e0d8b,0x3bd6c298,0x3b376696,0xbb6026f0,0xbc113b39,0xbc55d570,0xbbf64cf7,0xbc1d7d63,0xbbdecc90,0xba422925,0xba0e9e52,0xbbb4e653,0xbc95f352, +0xbc99b2b6,0xbca46c44,0xbcb7958c,0x3a378192,0xbd628626,0xbcfb3923,0x3abe50ad,0x3c54d369,0x3c8bc153,0x3c58cb40,0x3b503856,0xbbc9d33e,0xbb82a01a,0xbb840161,0xba18d9e0,0x3b258bed,0x3ad5f314,0xbb25b2a4,0x3aaa86f0,0x3b519720,0x3bb5a182,0xbaafc99f,0xbafcb730,0x3bb297d9,0x3a6b637b, +0xbb0aa74b,0xbc025b15,0xbc0a7350,0xbbe7697c,0xbb9baf70,0xbc390aa5,0xbc30ccd7,0xbb6d4b9b,0xbc06d516,0xbc0f2d69,0xbc1656fb,0xbbeb0c81,0xbc941732,0xbd28679b,0xbd57fa58,0x3d224c7f,0x3d48ca44,0x3d4c789a,0x3d379c27,0x3d29b708,0x3d05b092,0x3cfd5988,0x3d11de36,0x3cf84f2f,0x3ccc4a99, +0x3c8b9828,0x3c70779c,0x3c63a2ef,0x3c5bf35d,0x3c1179ef,0x3b1c10a0,0xbb90082a,0xbbeeea55,0xbc078b80,0xbb930688,0xbc0e1764,0xbc25db28,0xbc053ef2,0xbc25867e,0xbc1cf85b,0xbc1c7dcb,0xbc19fb50,0xbc3ec33a,0xbc9714fb,0xbca4ef2f,0xbcd5ebd4,0xbd0cbefa,0xbd16bf72,0xbcda200b,0xba50b3e3, +0x3cb2ecc3,0x3cb78a66,0x3cdce984,0x3cdd5602,0x3ce411d9,0x3ce2ebf9,0x3ce8a6fc,0x3ceae902,0x3ceb72cd,0x3cd1fb99,0x3cbe6abb,0x3cab614f,0x3c88243b,0x3c4ae4c7,0x3c0460a5,0x3be95c5e,0x3bcdf62d,0x3ba43a1f,0x3b782682,0x3b0a2409,0xbb197077,0xbbd9a625,0xbc171681,0xbc519c02,0xbc7e495a, +0xbc939867,0xbcaa1860,0xbcb0d90b,0xbcbbec34,0xbccece34,0xbc951336,0xbc4b6444,0xbbde028b,0x3b9251f6,0x3c585b3c,0x3ca6ebe3,0x3ca7cecc,0x3cb177da,0x3cba289e,0x3cde3fe6,0x3cc33054,0x3cd0e8e6,0x3cd3686c,0x3cce9f82,0x3cd26946,0x3cbc0acb,0x3cae3744,0x3ca51282,0x3c91f716,0x3c84df99, +0x3c6ec7a8,0x3c5594f8,0x3c1b8036,0x3bd7d129,0x3b74b8dc,0x3b79c4cf,0xbac0d38c,0xb822b867,0x3a816aa2,0x3aed16bc,0x3b3897c4,0x3b6711b4,0x3b83c942,0x3bc7da70,0x3c0d43ba,0x3c34373e,0x3c50f62a,0x3c6a170d,0x3c7e5912,0x3c82a46e,0x3c879dbf,0x3c95da00,0x3ca692cb,0x3ca52070,0x3ca18350, +0x3cc0d74e,0x3ccecfd4,0x3ce0e988,0x3cb9cce2,0x3ccedcb7,0x3ce0a3c2,0x3cdb4c96,0x3cd6ef87,0x3cd095ae,0x3cce1ced,0x3ccb305e,0x3cc734c9,0x3ca8a5ae,0x3c925d65,0x3cb46b46,0x3c994e35,0x3c876c33,0x3c4f4530,0x3c632ec9,0x3c5f1192,0x3c60e5d1,0x3c6095f5,0x3c624147,0x3c605925,0x3c745ab7, +0x3c80c100,0x3c882fde,0x3c8d6d75,0x3c94284f,0x3c9d7ab2,0x3c9e54a1,0x3ca028ac,0x3c9f66ef,0x3ca0f00e,0x3cbd7843,0x3babdc6a,0x3b8737cc,0x3b8eea81,0x3b92228d,0x3b9fe01f,0x3be5da5c,0x3b9c952d,0x3b88ac37,0x3b9d759c,0x3b859f05,0x3b8c9959,0x3bb87f03,0x3b8f7711,0x3b83d38c,0x3b75cd5b, +0x3b939b12,0x3b9f4cfd,0x3b9de0aa,0x3bb77921,0x3bc20279,0x3bc83738,0x3bb5d806,0x3bacbe8f,0x3ba360f5,0x3ba0dea9,0x3b913e56,0x3b60674c,0x3b3d6706,0x3b30f2ad,0x3b2057ab,0x3b933888,0x3ba5b506,0x3b84b4f8,0x3bb3a3db,0x3bb2ba93,0x3b86ec1b,0x3b905d51,0x3b9045b8,0x3bb12ec1,0x3baa8b15, +0x3bfe45c6,0x3c4b838b,0x3ba461e4,0x3b5b9ae7,0x3bc89622,0x3b9ba398,0x3bb0b52f,0x3c001cf6,0x3baa095b,0x3b938e02,0x3b867c33,0x3ba7ab49,0x3bc319ce,0x3bd9daf5,0x3c0ca242,0x3c0d91e0,0x3c0c1ee6,0x3bf650b2,0x3bdc222b,0x3bc36580,0x3bbb356f,0x3b7ae45a,0x3a3212bb,0xbab4c753,0xbac6176a, +0xba97a4d6,0x3b8f341e,0x3bc79648,0x3b3dc381,0x3bcf3207,0x3bb6ead4,0x3b22904b,0x3b66a3f1,0x3b2bffb2,0x3b16c7e6,0x3b855bd1,0x3bffa8dd,0x3c99cb97,0x3b989c96,0x3b2cda8a,0x3c062402,0x3b8a933d,0x3ba2f4bf,0x3c35970a,0x3ba967d2,0x3b557070,0x3b664a07,0x3bb67b2b,0x3bf6a52d,0x3c0afe51, +0x3c4b291f,0x3c557794,0x3c42fa3d,0x3c226d71,0x3c0350cd,0x3bd57af7,0x3bc235c1,0x3b3089d6,0xbb3468b7,0xbbdc7cb9,0xbbf3a926,0xbbe3b71a,0x3b8bffc3,0x3c020d6c,0x3a7307d4,0x3c10068c,0x3c0780d6,0x3b020731,0x3b6f58cf,0x3b906603,0x3ba66d41,0x3bf730a4,0x3c6c77b2,0x3cebe78a,0x3ba0d048, +0xbac58ce3,0x3c096647,0x3b91ee2f,0x3bd970de,0x3c68ee32,0x3b4eece6,0xb9dc7100,0x3b85ee58,0x3c018e9c,0x3c35e0ac,0x3c5e07f3,0x3c8ef3d9,0x3c8fc5f8,0x3c766171,0x3c528f2c,0x3c289494,0x3c0eb82b,0x3be4ac52,0x39ff315c,0xbc1e6a7c,0xbc8a95a4,0xbc8bbf34,0xbc697b70,0x3b81f547,0x3c0f8152, +0xbb19cef7,0x3c02162e,0x3ba1fa41,0xbb8c9854,0xb853e429,0x3ae945cd,0xbb1d6539,0xbc3d80c9,0xbc460ddf,0xbc00de3d,0x3c018f6c,0x3c85c45e,0x3c6dcb46,0x3bd0e46e,0x398c35e5,0xbb05f953,0x3b5bc742,0x3ba64ffc,0x3b69c3dc,0x3c125f32,0x3c37609d,0x3c4e5b4f,0x3c9e4b86,0x3c9a6740,0x3c6a8b25, +0x3c27d5dc,0x3b9cff72,0x3ad24c03,0x3a919233,0x3b150c2c,0x3b72208b,0x3bb64d25,0x3ba3f873,0xbb37d606,0x3b8e4ace,0x3bf84684,0x3c3913d1,0x3c39ec22,0x3c93cd47,0x3cfcda8c,0x3c51ee0f,0x3b91f7d3,0x3d2a5bc3,0x3b61d123,0xbc0cd90e,0xb9f89135,0xbb1fed2b,0xbb2bc2fc,0xbb728175,0x3a7b137e, +0x3b3ccfe2,0x39537280,0xbac77f71,0xb8f99e6c,0x3b83bbb5,0x3ba44955,0x3bbd3bfa,0x3bf25e7d,0x3b583a0b,0x3b465ac8,0x3c12b44b,0x3b8ebb67,0x3b021883,0xbad3e803,0xbb8337b7,0xbb90e3b5,0xba9d5736,0x3ab71878,0x3bc04d2e,0x3c1f84a0,0x3bb1eddd,0x3ba20cf7,0x3c3a03e8,0xbca4cc12,0xbcf298f3, +0xbc80a825,0xbc725d03,0xbb899528,0xbba181b1,0xbb05b9ac,0xbb64beb7,0xbc86e4b1,0xbc7bc4e0,0xbc3d90e7,0xbbb17cfb,0xbbdbc6c3,0xbb9ff980,0xb981afd5,0x3a0f9d00,0x3b45575a,0x3ae58734,0x3b65d6b1,0x3bdc9a91,0x3c189800,0x3b1a8d18,0x3bbdd640,0x3c9c0b53,0x3c1ace04,0x3bc9714c,0x3ae04fdd, +0xb84d9289,0xb912bf68,0x3b3e9d4d,0xbbb34e50,0xbbd6fabb,0xb7ec27f7,0x3aec4d05,0x3bb166a0,0x3bea8c73,0x3c71a6c7,0x3c692af1,0x3a225aaa,0x3a02e3d8,0x3c200f0a,0xb9b8d531,0xbd04a224,0xbd1865df,0xbcf01d7f,0xbc7ca69f,0xbbabdaef,0xbb81f549,0xbb90f482,0xba3a0025,0x3a89088f,0xba0aa2e4, +0x388f45bd,0x3b8778fb,0x3b55eded,0x3ab67dec,0x3ab76089,0x3ae2c1f4,0x3b81aa30,0x3bf159b1,0x3b9418fc,0x3b2fa07c,0xbb27b6da,0xba85d8f3,0xbb3ca330,0xbb56e2eb,0xbc1ab542,0xbc09076a,0xbb1dcb2b,0xbbaf2127,0xbbf03809,0xbc5f01af,0xbc9eb441,0xbcaef7d9,0xbc85b414,0x3b1920b4,0xbd8cd0ef, +0xbd6d8f4f,0xbcce8a0a,0xbbed4139,0x3aba8cfc,0xbba21ca1,0xbc37f568,0xbc398dea,0xbc1cfaf4,0xbbff990a,0xbb0c12b1,0x3b6aa325,0x3b6536b4,0xb984c69f,0x3a4d1e97,0x3b19ff53,0x3be157fc,0xba65af63,0xbaec6945,0x3bb58d32,0x3bbfd8e6,0x3b635ec1,0xbbaf9ab3,0xbbdb7bc4,0xbc030897,0xbc0198e4, +0xbc31e739,0xbc027332,0xbb8ba7fc,0xbb7267c8,0xbb5e98c8,0xbba9295e,0xbbc43d20,0xbc66481e,0xbce857bd,0xbd630214,0x3cbca1ea,0x3d1e6f0d,0x3d372ab4,0x3d231a5f,0x3d2189be,0x3d0616e8,0x3cf42abc,0x3d055e53,0x3cefc4c8,0x3cca89d9,0x3c7ef3b3,0x3c57b314,0x3c3029eb,0x3c02dc14,0x3be2d26a, +0x3b3ad605,0xba7faa8f,0xbb90584e,0xbb90df43,0xbb20981e,0xbbb664c7,0xbbd25126,0xbbea8d73,0xbb9d104e,0xbbaa0abb,0xbb948632,0xbb9b2aaa,0xbbf5aab3,0xbc6be938,0xbc63900b,0xbc9b3023,0xbce9552d,0xbd043339,0xbcfb4082,0xbc9f8ff8,0x3b776453,0x3c8bba68,0x3ccee2b7,0x3cd8d4a1,0x3ceb9e29, +0x3cfed310,0x3cf3e559,0x3cedee3f,0x3ce5935c,0x3cd04dd2,0x3cb795fb,0x3cad4947,0x3c8ea852,0x3c75f183,0x3c41121f,0x3c1379cc,0x3bdd13b7,0x3b887559,0x397aefdc,0xbb8d4bd2,0xbc2dfd71,0xbc6d0ecb,0xbc8afa52,0xbca7d633,0xbcb1ac2c,0xbcbb228d,0xbcc5569b,0xbcd9b000,0xbcec3ee3,0xbd011ceb, +0xbceab40c,0xbcd975db,0xbccbbe72,0xbc4c5b5b,0xbaa2bbed,0x3bfef54a,0x3c548a02,0x3c62476b,0x3c7819b0,0x3cab6cb7,0x3c8917bf,0x3c9c1aa1,0x3ca57c3d,0x3ca05045,0x3ca8d941,0x3c894135,0x3c73863d,0x3c59541e,0x3c2323fc,0x3bf60e3e,0x3bb0438c,0x3bb0a2d5,0x3b7b3e17,0x3acddef1,0x3a0c6782, +0x3adc965c,0x3886dbb2,0x38ee81ce,0xba447af8,0xbabe1e27,0xbb0b3c97,0xbb47f5f1,0xbb85eaa9,0xbadf7054,0x3a22db77,0x3b2d3e0a,0x3b8ebfe0,0x3bc99cad,0x3be92f67,0x3c03e626,0x3c08cd2f,0x3c24a441,0x3c41202d,0x3c262e3d,0x3c1b320d,0x3c6db66d,0x3c8ded3f,0x3cb29cae,0x3c5a0d67,0x3c910248, +0x3cb8dae4,0x3cb057fa,0x3caa5ad5,0x3ca1ce16,0x3c9edc93,0x3c9ad4d4,0x3c936e9f,0x3c54fad0,0x3c19cc16,0x3c894f0f,0x3c48eeb6,0x3c1d3e24,0x3bc489c1,0x3bc5dc38,0x3bb486fd,0x3ba8d856,0x3b971a0f,0x3b8a2bd1,0x3b5ae391,0x3b915aa7,0x3ba48a12,0x3bbe05cb,0x3bcf79e1,0x3be34b1d,0x3bff3b62, +0x3c0764ee,0x3c1129e8,0x3c15cf7e,0x3c1ca67c,0x3c25098b,0x3bb83e1a,0x3b9f4641,0x3ba427b5,0x3baaa266,0x3bb43f74,0x3bf2a01d,0x3ba2eb44,0x3b96ba27,0x3bacd63c,0x3b99bef6,0x3b9d2c08,0x3bbd3323,0x3ba10e7c,0x3b988172,0x3b90729c,0x3b9d877a,0x3ba5c07a,0x3ba70316,0x3bbf4021,0x3bca7bb3, +0x3bd6bcce,0x3bc0fcd0,0x3bb6ed63,0x3bac80d7,0x3ba88a80,0x3b968a97,0x3b5ba845,0x3b54c971,0x3b536089,0x3b4a78a7,0x3b9fe8cd,0x3bb07c23,0x3b936214,0x3bbbadb2,0x3bbceebf,0x3b98a04a,0x3ba54c29,0x3bb592c1,0x3bde8e56,0x3bf0e6fa,0x3c12b3db,0x3c4c6482,0x3bb2020a,0x3b711508,0x3bc74034, +0x3bae85bd,0x3bc723a5,0x3bf4f5a0,0x3bc2e1de,0x3badadb0,0x3b964556,0x3bac0e38,0x3bbe0cb5,0x3bd54492,0x3c0b9d29,0x3c13e7f6,0x3c1d9a46,0x3c03b515,0x3be91443,0x3bcb2566,0x3bbe8d23,0x3b7f04da,0x39690027,0xba447a44,0xba13365c,0xb987742a,0x3ba19d71,0x3bcfcc3f,0x3b568957,0x3bceff17, +0x3bbc56bd,0x3b48cfad,0x3b8f326f,0x3bb0e6d9,0x3badcceb,0x3bee5f4e,0x3c189c26,0x3c953a1d,0x3b9f1eab,0x3b4431f4,0x3c028578,0x3ba372ef,0x3bb5c647,0x3c1f66b3,0x3bbc0826,0x3b8ddaf1,0x3b75ad8d,0x3bb51de8,0x3be2aad4,0x3beeab62,0x3c3f5911,0x3c50eb82,0x3c57cdb1,0x3c290b6f,0x3c0865c7, +0x3bd54af1,0x3bc08297,0x3b0ed689,0xbb88cfc3,0xbbc1ed06,0xbbbbdfa8,0xbb8bd142,0x3b9687f0,0x3bfd42c8,0x3b0fbf9d,0x3c052419,0x3c0ee3c7,0x3b5a5752,0x3bc25fb4,0x3c0991b1,0x3c2d2e1e,0x3c5c8c3b,0x3c9cbcd6,0x3cf5f4c4,0x3bc63816,0xbacbea80,0x3c0717a6,0x3ba23084,0x3be5827e,0x3c714f2c, +0x3b9132d8,0x3a599c61,0x3b900354,0x3c035d02,0x3c1ee09f,0x3c34e3a3,0x3c8a67fa,0x3c938b81,0x3c935407,0x3c667d58,0x3c35a466,0x3c0d1cb0,0x3bdb19d2,0x391fce02,0xbc39e8b1,0xbc81dc91,0xbc608e1d,0xbc2ab5f6,0x3b94b08e,0x3c0328ce,0xbaa844a5,0x3bf96aa9,0x3b971f34,0xbb6f2080,0x3b0a8b87, +0x3b1bc6b5,0xbae3f5cb,0xbc2f2b9c,0xbc690a7f,0xbc3f7654,0x3bead961,0x3c90f5ad,0x3c8b434c,0x3c0e865b,0x3a603e46,0xbb2b016f,0x3b4460ae,0x3bae797e,0x3b939eca,0x3c2a01dd,0x3c3f0fe7,0x3c4566fb,0x3c78e97f,0x3c808563,0x3c7eba9a,0x3be2e20a,0x3b38bffd,0x3b21093e,0x3a6e6c09,0x3a9355c8, +0x3a9ad42e,0x3c0032a1,0x3bdb0143,0xbc01ad72,0x3c057a41,0x3c379121,0x3ba9907c,0x3c159723,0x3ca30a13,0x3d1f7f63,0x3c9011c7,0x3a332caf,0x3d15939a,0x3bbf8bea,0xbbc0562d,0x3b665220,0xbba5b690,0xbba6d449,0xbb2061bd,0x3b05a2e9,0x3b9d6ab3,0x3b2bf22f,0xb860fabc,0x3a54465d,0x3b926b4e, +0x3b884286,0x3bd4e71e,0x3c0cd217,0x3bd32cbe,0x3bc14dc3,0x3c0f04fd,0x3bb08744,0x3b6e0ea1,0xba195010,0xba42c049,0x3a06a80e,0x3b927616,0x3ba35e91,0x3c16aff0,0x3c5d6334,0x3baae4c0,0x3bca749f,0x3c772b96,0xbc35fe87,0xbcb30a8f,0xbc904f8c,0xbc85bf4b,0xbbd4de9a,0xbb971e6f,0xbb8a9bb7, +0xbba556ac,0xbc45ff6a,0xbc61ec56,0xbc515c9b,0xbb4b883a,0xbbba6990,0xbb9c7800,0xba5921fe,0x3ae782d5,0x3b88eb8f,0x3ab5a3e3,0x3b8b7f12,0x3c00076d,0x3c01a4b7,0x3b37d582,0x3bc18124,0x3c58ba13,0x3c1d98b7,0x3c0f5574,0x3b7430dc,0x3b823a73,0x3b0f53e1,0x3abd7812,0xbbcad9a7,0xbbd890e5, +0x3b73db92,0x3b89482b,0x3bf769a1,0x3c371b30,0x3c15718c,0x3c0fe54e,0x393c12b3,0xbb15bfe2,0x3bf82163,0x3bd10277,0xbc83e233,0xbcd079c2,0xbcaa7c44,0xbc4c6b27,0xbb74e55e,0x3a8a59ea,0xbada723a,0x3b074578,0x3b3bf743,0xb9236393,0x39e8f280,0x3b9f4d6b,0x3b985ef6,0x3b96a26d,0x3ba12380, +0x3bde8071,0x3bccf1bd,0x3b911ab4,0x3bd7bbf8,0x3bd14635,0x3b3168dd,0x3b96f865,0x3b7ed959,0x3af0a622,0xbbdf0e1e,0xbbd63f0f,0x3a27fbc0,0xbbdd7833,0xbc135539,0xbc28092f,0xbc801b9c,0xbc75062f,0xbc025e66,0x3a4ef1aa,0xbd5d4474,0xbd80bf4b,0xbd20d9be,0xbca998de,0xbc264419,0xbc918b3e, +0xbca84e79,0xbc5580b1,0xbc522b39,0xbc2ba1ef,0xbb87a6f3,0x3b3999c9,0x3b8f7514,0x3b17fed7,0x3acee533,0x3b07f314,0x3bc58a7c,0x3a892c53,0x3aa5618d,0x3bd32a9d,0x3bef6fdd,0x3b8f9ee3,0xbb1091d4,0xbb930eee,0xbbd530ec,0xbbd719be,0xbb44804a,0xbaeaaf0b,0xbbe40264,0xbae57582,0xbb23d451, +0xbbe30bb0,0xbc4e9079,0xbc92b002,0xbcbde8d1,0xbd2b51ee,0xbb023d4d,0x3c80a99b,0x3cddad57,0x3ccb9308,0x3cdb9457,0x3ccc405c,0x3cc18b8e,0x3cda4bd2,0x3cc0354a,0x3ca605b3,0x3c5b3f88,0x3c37a86c,0x3bfdb8ed,0x3baedee5,0x3bd7df86,0x3ba7002c,0x3b799943,0xb9e870b6,0xbb022430,0xbb021286, +0xbb15d974,0xbb1214e5,0xbb518fb4,0xbb4cfc1f,0xbb9c475d,0xbbb2812c,0xbbd7e0c8,0xbc0d0099,0xbc510787,0xbc1788c8,0xbc30d896,0xbc85ea5f,0xbcaed3eb,0xbcd10aeb,0xbcd71647,0xbc6ea3ad,0x3c3d0cb1,0x3cb39474,0x3ccae303,0x3cdf230b,0x3d030dcc,0x3cef7008,0x3cde71f4,0x3ccdf33a,0x3cbc9955, +0x3ca51054,0x3c9b6923,0x3c881b50,0x3c8370ff,0x3c614691,0x3c2179ec,0x3bc0bdd3,0x3b075806,0xbb1077ff,0xbbfe1f8b,0xbc3f73b2,0xbc6f848a,0xbc954772,0xbcb02335,0xbcb8de72,0xbcc01f1f,0xbcc89027,0xbcd6c7db,0xbce30476,0xbcf11ba3,0xbcf85b1d,0xbd01855a,0xbd0999dd,0xbcbaf76e,0xbc4dfb6e, +0xbb85b117,0x3bac4202,0x3baab50b,0x3be2dd3e,0x3c53b8a4,0x3c0dea3b,0x3c35be4e,0x3c44282d,0x3c3f7151,0x3c5adf2b,0x3c205549,0x3c0afe9e,0x3be5562b,0x3b83fdc1,0x3ae3ba0a,0xb9437924,0x3a3fc426,0x3a64a6f0,0x3824ae72,0x399c9c1a,0x3b062a26,0x3a97303f,0xb9de8d27,0xbb0714af,0xbb76f25a, +0xbbb880ac,0xbbfe9c05,0xbc26f4e6,0xbc0d6dd0,0xbbf39d57,0xbbc960ce,0xbba12081,0xbb5505d1,0xbb331b71,0xba6be412,0xb8d99cb8,0x3ac87a6a,0x3b4d0008,0x3a932a2b,0x3a459be7,0x3b909e0d,0x3bdf528b,0x3c340d34,0x3b635cae,0x3bea1061,0x3c441942,0x3c33b381,0x3c26c8a1,0x3c16e75e,0x3c102aec, +0x3c063629,0x3bea9b2b,0x3b7c8445,0x3a958657,0x3bec69ad,0x3b6e07f8,0x3af20ecb,0xba533aac,0xbab1ffac,0xbb0b9176,0xbb3ccbf7,0xbb744384,0xbb8fd88b,0xbbb584eb,0xbb970053,0xbb8a4c9d,0xbb77c315,0xbb63db6d,0xbb520fae,0xbb3cdd6c,0xbb04f3fd,0xba9743ec,0xb9bfb5f6,0x399b9123,0xbab5908d, +0x3bb28a6c,0x3ba7d83a,0x3ba09639,0x3baf733e,0x3bb9ee84,0x3bef9aca,0x3b990835,0x3b99a00b,0x3bb1fc08,0x3baafe72,0x3bac9fc1,0x3bbcc7b1,0x3bb0baea,0x3baac04e,0x3b9e80ec,0x3b9d3087,0x3b9fa860,0x3bb0b89a,0x3bbefc3f,0x3bc4e5e2,0x3bcdc855,0x3bbaa31f,0x3bafe4d9,0x3ba5af4a,0x3ba17edd, +0x3b909b34,0x3b575714,0x3b57de10,0x3b596ba1,0x3b512ef9,0x3b95ff17,0x3ba2f89f,0x3b8f2a71,0x3babd343,0x3bb0cf32,0x3b9e6b7b,0x3baa68fd,0x3bc25030,0x3bcf7732,0x3c063559,0x3c0da588,0x3c364ed5,0x3baa2102,0x3b6c2f0b,0x3bb1816c,0x3bb5e92c,0x3bd450c4,0x3be1c4a5,0x3bd13c0e,0x3bb9e092, +0x3b93aed6,0x3ba2f947,0x3baf3f08,0x3bd2b146,0x3c02685a,0x3c150149,0x3c1e7ee9,0x3c00622d,0x3be0b1a6,0x3bbe4c0f,0x3baef5a0,0x3b6fb259,0x39cd54bd,0xb9441b5b,0xb7b41d7c,0x38bced51,0x3b91702b,0x3bba7666,0x3b72f6a5,0x3bbb1018,0x3bb06d56,0x3b83ffd3,0x3ba367ed,0x3be47c22,0x3bca61ee, +0x3c0c713d,0x3c1076f4,0x3c7c83e6,0x3b89c785,0x3b3a8f52,0x3be241d5,0x3bbf4e22,0x3bd2ec6f,0x3c08eb07,0x3bcfb008,0x3bae08d4,0x3b5bf05c,0x3ba359f8,0x3bc3da4e,0x3be664ba,0x3c2bb23c,0x3c43e78c,0x3c5d19c1,0x3c1faf12,0x3c0259da,0x3bc49ffa,0x3bb10333,0x3af6efcb,0xbb800d19,0xbb9713e0, +0xbb87f9a3,0xbb605605,0x3b5ed632,0x3bc6ae99,0x3b24a73a,0x3bc8bae1,0x3bf1773e,0x3bb1f5e1,0x3bfa853d,0x3c1182f5,0x3c2a13d0,0x3c74c2c6,0x3c9c507a,0x3cd66ef1,0x3bc1b1c7,0xbae2b1fa,0x3bdc5ff9,0x3bb4253d,0x3c01caf1,0x3c668514,0x3bb4d9bb,0x3b07588c,0x3b7d8ef5,0x3bf95868,0x3c08773f, +0x3c1dbb47,0x3c7c814e,0x3c946d95,0x3ca43044,0x3c657065,0x3c2c68b6,0x3bf63017,0x3bb42d79,0xb97fe4da,0xbc2f557c,0xbc62e462,0xbc3e5042,0xbc18f729,0x3b531da0,0x3bcebf0e,0x3a78f567,0x3bcc0b52,0x3b76f4a0,0x39c23cf4,0x3b8ce2a7,0x3beda346,0xb7e25e0a,0xbc045516,0xbc6c37e6,0xbc80dc3b, +0x3b97ff87,0x3c893879,0x3c993174,0x3c3cb97c,0x3b14fb0a,0xbb4d9614,0x3b236148,0x3ba5e4e6,0x3baa00be,0x3c346571,0x3c372085,0x3c342be5,0x3c2af207,0x3c33339a,0x3c458aa2,0x3b8655f2,0x3b3e7570,0x3b8b8532,0x3aea41e6,0x3b057f7f,0x3b0611ba,0x3c65b2d4,0x3c421351,0xbc27c791,0x3bcab39f, +0x3c06fc0d,0x3a6ad2c6,0x3b9e2d9b,0x3c9034a3,0x3d26269c,0x3caf2592,0xbc10c4b3,0x3cab6d79,0x3c172092,0x3ab6bbf8,0x3be4f8aa,0xbb736827,0xbbd8d851,0xbb63b559,0x3adb91c9,0x3ba7ca7f,0x3b9e5196,0x3ad6c0c6,0x3ae6c66d,0x3b927e10,0x3b6efd16,0x3be26c9d,0x3c1d9718,0x3c17e0ac,0x3c17dcc2, +0x3c074198,0x3be888e4,0x3bc3d011,0x3a2648db,0x3b0018dc,0x3b2fc919,0x3b87163a,0x3bfa960a,0x3c196fe8,0x3bc138d2,0x3ba3d735,0x3bc525fc,0x3c29fcca,0xbbbbcb3c,0xbc835126,0xbca574f7,0xbca00429,0xbbf96954,0xbb6b1bb1,0xbb6178b0,0xbb9db20a,0xbbeda7bc,0xbc304e58,0xbc3adfe7,0x390afe30, +0xbb878f8e,0xbb812d6b,0xb9e90c99,0x3b209a18,0x3b90d62f,0x3ac4855d,0x3b8d310c,0x3c05463f,0x3bd339a3,0x3b5946bd,0x3ba570d8,0x3bf0f745,0x3c2f0ed6,0x3c3a2d6e,0x3b9fc31a,0x3bb51113,0x3b3de89a,0x3a0f1934,0xbb83e275,0xbb8199b1,0x3b8a23c2,0x3bfb9133,0x3c3f534e,0x3c73e0a1,0x3be95e90, +0x3b8ed7ad,0xbb2a3e2e,0xbb8b78b3,0x3b2e4d80,0xbae8edfb,0xbbf0d814,0xbc5f5d60,0xbc53bd25,0xbc2d4a76,0xbb853be0,0x3bace82d,0x3a4bea65,0x3b75286f,0x3b84cb69,0x3a728e39,0x3aabd442,0x3ba21677,0x3bb9e5d6,0x3beb3f30,0x3c007b84,0x3c1d268d,0x3c0a5f18,0x3b9dc2a9,0x3c0e7a89,0x3c112aef, +0x3bb3058e,0x3c031315,0x3bfdbcdc,0x3b228d25,0x39aab6d1,0xb926757c,0xb9bdc02e,0xbbf44e37,0xbc2b2c35,0xbc4c00f9,0xbc0af3ec,0xbb9757da,0xbb5d42bd,0x3b1774e8,0xbcf0d554,0xbd3af82b,0xbd1f8530,0xbcddc4c1,0xbc8f90bd,0xbcbe323e,0xbcba67e5,0xbc56ae1b,0xbc601fd9,0xbc388565,0xbbc3d4d5, +0x3a24b5e9,0x3b72247a,0x3b8a480c,0x3b46412b,0x3b463106,0x3bc2630c,0x3b6171f1,0x3b851a00,0x3bbbf126,0x3bf6f24c,0x3bc66988,0x3b249784,0xba72b087,0xbb4e3be1,0xbbad237d,0xba9756aa,0xba487f1d,0xbbd28473,0x3ac0553f,0xbae4c182,0xbc4cc874,0xbc94c61a,0xbcb0a307,0xbcc0fd13,0xbcd06307, +0xbcb0064e,0xbbf4f952,0x3baf1689,0x3bfa6bf1,0x3c2dd5e8,0x3c71c9e8,0x3c811e84,0x3c8dc78b,0x3c63df16,0x3c44c160,0x3c116d31,0x3c1b077f,0x3bee373c,0x3bd0401c,0x3bd87b5c,0x3bc3814d,0x3bce1578,0x3a82ae18,0xbaaf77b0,0xba731726,0x3aac9737,0x3b062b3b,0x3b033688,0xbb3d87af,0xbba24c86, +0xbbfaf371,0xbbe85c9a,0xbc079f4c,0xbc3aebaf,0xbc03d1a7,0xbb9da39e,0xba1a6319,0xbc0222d5,0xbc7484a1,0xbcab81a2,0xbcc3ee33,0x3b4ebcb5,0x3c5a1788,0x3c947928,0x3ca45dda,0x3cd538fa,0x3cc3a0b6,0x3cb22712,0x3ca8dc71,0x3ca107bc,0x3c921ee0,0x3c8f1e21,0x3c742151,0x3c6be7c3,0x3c419f1a, +0x3c0b3129,0x3b8e93cc,0x3a7e58e2,0xbaec978a,0xbbb67c5e,0xbbdb9f9b,0xbc1f65ec,0xbc65b246,0xbc8df6f0,0xbc9a0807,0xbca40cf3,0xbcb27e84,0xbcaf9146,0xbcaf80ed,0xbcad5d58,0xbcc9b585,0xbcee7ce1,0xbd0bdc0c,0xbce24401,0xbca980c7,0xbc7158db,0xbb84edaa,0xba78978a,0x3a7a8a16,0x3bb7a998, +0x3b196cad,0x3b8fb8e6,0x3b9a1da4,0x3ba4e1d3,0x3bd8100b,0x3b8ea099,0x3b6f15ae,0x3b3dced3,0x3a87b472,0xb95d537c,0xbaa7c08e,0xba360394,0xba3fe53b,0xbaad1cad,0xbab8df21,0x38ae3b4d,0xbb3b129f,0xbb9cc5d2,0xbbc3bb14,0xbbfa330a,0xbc1a5772,0xbc3c12f4,0xbc623107,0xbc5a1002,0xbc582319, +0xbc4e5276,0xbc428dec,0xbc2579bd,0xbc1e13bb,0xbbe2ea25,0xbbb62500,0xbb88ad88,0xbb2d73e5,0xbb964197,0xbb940c37,0xbb2c88d7,0xba79f2ec,0x3ad9e1f7,0xbb376261,0xba0c737f,0x3b25c8eb,0x3af60b5c,0x3ab9199b,0x3a4b008f,0x3a2624c0,0x396e1060,0xb9b61077,0xbb14ebb0,0xbb8ab56f,0xb9b4faf8, +0xbb44aea7,0xbb8aff44,0xbbdbd544,0xbbe2b66d,0xbbfc9f7d,0xbc0a1176,0xbc168467,0xbc204e7d,0xbc2fdab2,0xbc2448ee,0xbc1f7509,0xbc1c3520,0xbc18880b,0xbc178d27,0xbc1726e3,0xbc08e744,0xbbf333fb,0xbbcdd2fa,0xbbb5b788,0xbc04b62a,0x3ba75194,0x3ba66673,0x3b977f39,0x3ba5e6f9,0x3baca2a6, +0x3bd39b2e,0x3b8e03b2,0x3b91bf59,0x3ba341df,0x3ba9f717,0x3bac4f73,0x3baf5c15,0x3baebc11,0x3ba9792e,0x3b96ccbd,0x3b927139,0x3b945061,0x3bad4857,0x3bb29a95,0x3bb596ef,0x3bb8945c,0x3bac9897,0x3ba34b26,0x3b99700d,0x3b985e7e,0x3b8b109f,0x3b5dde29,0x3b5bc482,0x3b5ad133,0x3b4dae8c, +0x3b88f140,0x3b933996,0x3b8812c7,0x3b9d996d,0x3ba34882,0x3b98108d,0x3ba71a7d,0x3bc4cf6e,0x3bb9222d,0x3bf7be7c,0x3bf4b54c,0x3c1292d9,0x3b9671b9,0x3b61697a,0x3b92ab4c,0x3bb49a33,0x3bd75a79,0x3bce4bea,0x3bd992fa,0x3bbf0f16,0x3b878b9e,0x3b92226d,0x3b9cd455,0x3bd2ef4a,0x3bea9f97, +0x3c0ad26d,0x3c0d40df,0x3be6fc20,0x3bcb6239,0x3ba623b5,0x3b9fc804,0x3b72a09c,0x3aa60c78,0x3a53f09d,0x3a539182,0x3a40ce39,0x3b82065e,0x3ba00047,0x3b79e5ab,0x3ba40e6c,0x3ba03a0e,0x3b8d36a1,0x3bb0ef22,0x3bf6a5e4,0x3bbd06a2,0x3c00bed1,0x3bee3947,0x3c4293c1,0x3b6b5312,0x3b31738f, +0x3bac6fa6,0x3bce44d8,0x3be98188,0x3bed92ad,0x3be4f555,0x3bc63ec0,0x3b2fc65e,0x3b8aef6c,0x3ba2d912,0x3befd922,0x3c146824,0x3c2e61a7,0x3c4627d4,0x3c0c5459,0x3bed5d4b,0x3ba5d4c6,0x3ba62d1a,0x3b1413de,0xbb1628ab,0xbb28947d,0xbb0ade4c,0xbb0b304f,0x3b30b7f7,0x3b997cf7,0x3b30dd3b, +0x3bb36130,0x3bd6e231,0x3bb849d1,0x3c097287,0x3c09b06c,0x3c03086a,0x3c51020d,0x3c82c670,0x3ca6cd5c,0x3ba98b84,0xba9efc74,0x3b9b975c,0x3bc20ffa,0x3c10ccc8,0x3c4eddc1,0x3bd84086,0x3b4f9e69,0x3b2694cf,0x3bdbb13b,0x3bea2f46,0x3c1d4a5b,0x3c5f3a1f,0x3c8b8332,0x3c9a88c7,0x3c4cd0f3, +0x3c14e7bf,0x3badec71,0x3b8caacf,0x395566cc,0xbc032542,0xbc25caab,0xbc0998d7,0xbbd61c5d,0x3b42de21,0x3b99b690,0x3b0600af,0x3ba0f382,0x3b52120a,0x3affd229,0x3bc19317,0x3c452b81,0x3b8aaa82,0xbb5c1204,0xbc3da94b,0xbc8c1af7,0x3ad4f60f,0x3c5d1af1,0x3c935574,0x3c6b639e,0x3b98b880, +0xbb49f5bf,0x3af6a657,0x3b92ad67,0x3bcfe786,0x3c379fa9,0x3c281abc,0x3c1955d8,0x3be92810,0x3be6f670,0x3be50f3c,0x3b2fefdf,0x3b70eeb7,0x3bb692d0,0x3b831f92,0x3b98492c,0x3b981e63,0x3c9c0664,0x3c863906,0xbbed36be,0x3b100062,0x3b610421,0x3b3c515e,0x3bae45b8,0x3c82c6f4,0x3d177e24, +0x3cb3ad3a,0xbc7b96c8,0x37becb49,0x3c4f0907,0x3c304cba,0x3bb8b994,0x3aa59c22,0xbb6cf596,0xbba2e1ef,0x3a9097cf,0x3bafc579,0x3bdd895a,0x3b444461,0x3b115b10,0x3b9972e4,0x3b88d410,0x3bfb5513,0x3c2103cb,0x3c226983,0x3c235dd7,0x3bd61c2b,0x3c1166d6,0x3c03533b,0x3aa6a4a5,0x3ad5f761, +0x3b0c8cc9,0x3b70a633,0x3c2c495c,0x3c2268ae,0xbb33561d,0x3b96630e,0x3b621960,0xbb93d833,0xbbeaeeab,0xbc56c0fe,0xbc9ea207,0xbc957a79,0xbbccb678,0xbb6da341,0xbb4b5d47,0xbb839606,0xbabe8bf9,0xbbf92395,0xbc2fc441,0x3b0e2a0f,0xbb0a36a2,0xbb379314,0x39d2753f,0x3b206dd0,0x3b785dd2, +0x3b0cefbd,0x3b73d5e4,0x3bf2dcb3,0x3b970ba6,0x3b30e0e9,0x3b60366a,0x3b850635,0x3c36e067,0x3c43660c,0x3b98bd68,0x3bf5ecad,0x3ba04834,0xba8f869b,0x38a65259,0x3b27ea8d,0x3ba39ef8,0x3c3f0c92,0x3c81c792,0x3c81d1ca,0x3bf0a6af,0x3af2621b,0xbb8479b5,0xbb9d983d,0x3a569b7a,0xbbfc6e7f, +0xbb3d953c,0xbb88d019,0xbbf169e7,0xbc00e62c,0xbb834e1d,0x3bc91478,0x3aea347f,0x3b87d9d6,0x3b8dbffd,0x3ad7d097,0x3afa497d,0x3ba8f932,0x3bc151fc,0x3c066dbe,0x3c103d99,0x3c21b9f5,0x3c1a20de,0x3bad1fd0,0x3c0ac768,0x3c180b7e,0x3bf67497,0x3c1440d8,0x3bfbb14f,0xb8830010,0x3b47931e, +0x3a8189db,0xbbdb2945,0xbc1a8639,0xbc3033f8,0xbc5417ee,0xbaecd998,0x3b445d1c,0xb9745924,0x3b79b757,0xbc3fe692,0xbcb71745,0xbcf01e3e,0xbcdce957,0xbcb552ac,0xbcb5cb83,0xbc9d34d9,0xbc49b2b2,0xbc49d70f,0xbc2a3d4d,0xbbe84e97,0xbaff4441,0x3afadf26,0x3bad8156,0x3b7d75db,0x3b85de1c, +0x3bcc8e5a,0x3bae5925,0x3bbe08e6,0x3b7a4ceb,0x3c020f0c,0x3c0525da,0x3b98b6d0,0x39236b5e,0xbaca1aa3,0xbaba02e7,0xbaab4c26,0xba87cc8d,0xbb26fd65,0x3b697537,0xba10efb6,0xbc64dac9,0xbc951cc0,0xbca3be21,0xbca69fe0,0xbc5edae1,0xbcf1075e,0xbcbbbe8c,0xbc5b6aff,0xbbeb2167,0xbaeec40b, +0x3bd9cef9,0x3c076bae,0x3bc2c53b,0x3b7ed457,0x3b61e681,0x3b63b8b9,0x3c034736,0x3c087669,0x3bf51d0f,0x3bbf66f2,0x3ba0264a,0x3bb29a86,0x3a4c9adf,0xba36e601,0x3a2bfcb5,0x3b99082f,0x3bb3baab,0x3b95596b,0x39894ffd,0xbb1136ba,0xbbadb55c,0xbbbe61de,0xbbe810b3,0xbc05b666,0xbc331a4e, +0xbbbd07e3,0x3be077e9,0x3b089068,0xbb8a4d76,0xbc5915de,0xbcc6e43a,0xbba926b8,0x3afdf46f,0x3bfee166,0x3c1c5aee,0x3c79fce2,0x3c6b3fa4,0x3c5bff0a,0x3c65b8b8,0x3c73b252,0x3c6c1c5d,0x3c81bfe6,0x3c458d2b,0x3c36f9d5,0x3c071849,0x3bd15c66,0x3b5ebe26,0x3abeeb4a,0xb90a34f3,0xbafdda61, +0xbb2ecea2,0xbbba2c00,0xbc14d9c9,0xbc42a474,0xbc5d9dc8,0xbc74e9f6,0xbc8b4734,0xbc81f8da,0xbc7d025e,0xbc6798c5,0xbc8c097b,0xbcaf5cc3,0xbcd89d51,0xbccbad09,0xbcb3e16a,0xbc9e0d28,0xbc31b994,0xbb77c03b,0xbade62f4,0x3aa7656f,0xba23c849,0x3a848e80,0x3a97b116,0x3aeed781,0x3b3e2aea, +0x3ad3955e,0x3a81fad7,0x3a5759dd,0xb99ab590,0xba4407ba,0xbaa08cf0,0xbae2dd84,0xbb3b6e02,0xbb87b3cf,0xbbac7667,0xbba8ac7a,0xbc130f40,0xbc2b7a24,0xbc39d2ce,0xbc4f5322,0xbc6813e7,0xbc812ef8,0xbc906b29,0xbc8c7457,0xbc8b8845,0xbc897797,0xbc849edc,0xbc6f913a,0xbc63f6f6,0xbc2ceead, +0xbc0b5dad,0xbbe3bcce,0xbbafbd22,0xbbf2f6d5,0xbbe28e27,0xbbca0189,0xbba6d925,0xbb7b7f81,0xbbbaec5a,0xbb921edf,0xbb3b0608,0xbb591f91,0xbb649b56,0xbb82bbc1,0xbb7e1b17,0xbb86f0eb,0xbb8c2f0a,0xbbbdd975,0xbbead735,0xbbac5210,0xbbebac20,0xbc05fde8,0xbc23532c,0xbc24ab55,0xbc3181b5, +0xbc3bc5e7,0xbc45a084,0xbc4ddd80,0xbc5b10a3,0xbc52bab4,0xbc4edc6e,0xbc4ab140,0xbc46b506,0xbc44f7cf,0xbc45a23c,0xbc38c87c,0xbc2aee33,0xbc1741f1,0xbc09da4a,0xbc38065e,0x3b9b09fa,0x3b9e1fdd,0x3b8b31ae,0x3b931dc4,0x3b961a1e,0x3bb08142,0x3b80b156,0x3b84efea,0x3b8cf95c,0x3b9e6392, +0x3ba2eb5b,0x3b9ec8c3,0x3ba61e5e,0x3ba146be,0x3b87ffd4,0x3b83b3bb,0x3b85a2da,0x3ba3e52d,0x3b9ef8b8,0x3b9ef723,0x3b9cf7cb,0x3b996973,0x3b936973,0x3b8c10e0,0x3b8ed8f9,0x3b86fb09,0x3b6a058b,0x3b656870,0x3b63ccb2,0x3b634f91,0x3b7c8d65,0x3b849025,0x3b828c6a,0x3b8f9a7b,0x3b939194, +0x3b876056,0x3b9d29c1,0x3bb769ae,0x3ba5dd93,0x3bda6232,0x3bcbcc8e,0x3bde3b6d,0x3b7ef102,0x3b4de590,0x3b601cd9,0x3ba8d00c,0x3bcd7d63,0x3bba9da2,0x3bde6c4d,0x3bc25ff6,0x3b729439,0x3b8010e3,0x3b89cf69,0x3bcc33c1,0x3bcc86f6,0x3bf034c2,0x3be079d7,0x3bc04680,0x3baecd15,0x3b9304f2, +0x3b9d430b,0x3b89727a,0x3b239fb3,0x3b0edb8c,0x3b0b9317,0x3b2617b1,0x3b80f179,0x3b89d009,0x3b7a2126,0x3b88d498,0x3b8773a1,0x3b675678,0x3ba62808,0x3bf9e6ef,0x3ba2cedf,0x3bd26c53,0x3bb60534,0x3c093bc5,0x3b457382,0x3b26c478,0x3b6db6e4,0x3bc6f266,0x3bed6ac1,0x3bce09d8,0x3bfd1bd2, +0x3bdf057f,0x3b0b95c5,0x3b6bb67b,0x3b865f27,0x3bf33dc4,0x3bf6d6a1,0x3c0f0ed0,0x3c15a96a,0x3bdbffaa,0x3bc89249,0x3b8b3704,0x3ba4e393,0x3b576ed7,0x3997e50e,0x3970802d,0x3a07ed5e,0x3aace2b3,0x3b2d54ed,0x3b736dda,0x3b522c2a,0x3b96c370,0x3bafbe8c,0x3b83fe73,0x3c013f16,0x3bfaf5aa, +0x3bd714bd,0x3c2fdc6a,0x3c527036,0x3c713544,0x3b7e2b86,0xba450967,0x3b2780ba,0x3bb8bc08,0x3c13cb46,0x3c318a62,0x3c006f2e,0x3b8c7871,0x3a4aa754,0x3bb29e71,0x3bc22ef5,0x3c1dacb6,0x3c3d970e,0x3c6d8d93,0x3c6ffe7d,0x3c1e0a4b,0x3beadeab,0x3b7563e6,0x3b94f213,0x3b2cf553,0xbb5ffba4, +0xbb8d4c84,0xbb486ec6,0x398f6d6a,0x3b94a70f,0x3b756231,0x3b302647,0x3b376395,0x3ae8f3fb,0x386b9cf4,0x3bb87570,0x3c6a87da,0x3bbed256,0xbb0407e0,0xbc272f46,0xbc765e9e,0xb9349241,0x3c2075e8,0x3c7b961e,0x3c88dd8b,0x3bfce04a,0xbb1db9c3,0x3a90b846,0x3b75b330,0x3c044e1b,0x3c3398ae, +0x3c1985a8,0x3c05c159,0x3ba432ab,0x3b828800,0x3b36a3c8,0x3b11bced,0x3b9cc68f,0x3be59f5b,0x3bc49573,0x3bc1098e,0x3bafc0d9,0x3c98074e,0x3c7c3fff,0xbbb68c08,0xbb425089,0xba85a2e9,0x3bc94207,0x3bee89af,0x3c7029bf,0x3cfa7ec8,0x3cad2b16,0xbc79d72f,0xbc8b41e3,0x3c8470d1,0x3ca0058d, +0x3adec7a2,0x3b94e65d,0x399ef79a,0xbbb1ef9f,0x3a189cb0,0x3bae5cab,0x3c0fcc77,0x3b7c5b2e,0x3b14c079,0x3b9eac2b,0x3bb5d088,0x3c165384,0x3c137911,0x3c10374a,0x3c0c0ea2,0x3b9301d9,0x3c1dbdd1,0x3c0bbe9b,0x3aa93eb2,0x3b05b776,0x3b8579ed,0x3bed026b,0x3c1af6f5,0x3bf34ca3,0xbbadea6e, +0x3bde5e13,0x3aedae96,0xbca946bb,0xbc4e2617,0xbc45ed83,0xbc88ab2b,0xbc65d2d2,0xbbb3d2e8,0xbb8958f0,0xbb723d94,0xbb486017,0x3b67dc95,0xbb0af829,0xbc003682,0x3b516fde,0xb8a413f8,0xbae76d77,0x3a9cf6d6,0x3b0a2fe5,0x3b5c97cb,0x3b4d8276,0x3b28c0dd,0x3bb37bcc,0x3b19f3b1,0x3a8add91, +0x3af88996,0x3b0521f0,0x3c1aa372,0x3c25435b,0x3b7b2596,0x3bc41a5d,0x3b4cebb2,0xba940cda,0x3b030b63,0x3bc07075,0x3b9ec213,0x3c3e1216,0x3c7c0a35,0x3c6c5c8e,0x3bd7ccf6,0x39a68429,0xba05751f,0xbb87e7d3,0x3a02fe77,0xbbc6383e,0x39a6656f,0x3aef1b05,0xbb7fc163,0xbb850877,0xbb2b5785, +0x3b863193,0x3aad2488,0x3b5ace46,0x3b7b7bf8,0x3aca7488,0x3b035b24,0x3b989434,0x3bb8334f,0x3c06b1d7,0x3bfa494e,0x3c037f13,0x3c091967,0x3b959293,0x3be32368,0x3c04b5b7,0x3bfb2756,0x3bd528e5,0x3baa3e57,0x3ae8dd21,0x3b3a39ac,0xbac2b267,0xbc397644,0xbc20d149,0xbc1a5bc5,0xbc170a43, +0x3ade0043,0x3bc661a8,0x3b89c496,0x3b4976be,0xbb951be1,0xbc093d60,0xbc9ff912,0xbcc5aa51,0xbccd038a,0xbca01772,0xbc778f95,0xbc38cc44,0xbc21f11c,0xbc0bdc19,0xbbe860ad,0xbb79a16a,0x3937ee5e,0x3bc1560c,0x3b7e81e4,0x3b8992aa,0x3bae7223,0x3bc88ebf,0x3bcbb744,0x3af8731f,0x3bd951eb, +0x3c026dac,0x3bc479ea,0x3b85be9e,0x3b184e07,0x3aae6b75,0x3ab400bc,0xb8836a69,0xbb4a1d7f,0xb91979fd,0xbb100386,0xbc23c3e7,0xbc65135a,0xbc76bfd8,0xbc61339d,0xbbeed9f6,0xbcec666a,0xbceb4658,0xbcc904f1,0xbc8aa1a8,0xbc1072a0,0x38dac5b6,0x3aa04368,0xbb6c5d7d,0xbb833ec3,0xbb460865, +0xba55a7a3,0x3bb83a63,0x3bf9c365,0x3bdb0fb0,0x3b8e8eed,0x3b549527,0x3b538ec0,0x3abbd7a1,0x3ab96036,0x3b1a081b,0x3be05634,0x3bed1b5b,0x3b8b0e52,0x3b35f9d6,0xb8a017e1,0xbaee92ff,0xbb89e394,0xbbb54837,0xbb8cfaf3,0xbc231fe7,0xbc048c0b,0x3a073a94,0x3b652a16,0x399a3b31,0xbc26d8e2, +0xbcae29b1,0xbc25e313,0xbbe7fa4b,0xbaf82a79,0xb937c825,0x3b8c00c1,0x3b899c43,0x3b96b7a5,0x3bccfe9e,0x3c112322,0x3c1f8df4,0x3c4fd777,0x3c0d03b1,0x3c00aadf,0x3bb34eed,0x3b8f8914,0x3b192c6d,0x3a8a62d5,0xb9109d37,0xba9aa579,0xbb2ead67,0xbb8f4f58,0xbbb7bcb2,0xbbd652ac,0xbc02bec2, +0xbc1b37cd,0xbc39a8e3,0xbc2ec4f9,0xbc2d3f7c,0xbc1f75e3,0xbc2f641e,0xbc44d969,0xbc6e885b,0xbc858958,0xbc89dffd,0xbc887dc3,0xbc4fcab1,0xbba8d550,0xbb544687,0xba619911,0xbae7ff11,0xb970567f,0x394cffeb,0x3a7c6726,0x3aeacfad,0x3a3a57f1,0xb91c442a,0xb98f9685,0xba8bb4cc,0xbaa73e1f, +0xbad19ef8,0xbb3e8cd1,0xbb8dfc22,0xbbc3b2fe,0xbbf318f3,0xbc13663d,0xbc2ee255,0xbc4103a0,0xbc56a397,0xbc6bf52a,0xbc820fc9,0xbc8bfc8b,0xbc99111f,0xbc910d39,0xbc8d9a9b,0xbc8c81ec,0xbc88d9d1,0xbc83a944,0xbc7bbdc1,0xbc4c2737,0xbc26146d,0xbc0a2d0f,0xbbdeda43,0xbc0fa303,0xbc05a6d1, +0xbc00b8a7,0xbbe99867,0xbbd2bd2f,0xbbea43ac,0xbbd168ef,0xbbaf918d,0xbbbdbe06,0xbbbffe8f,0xbbd02b0e,0xbbcc359f,0xbbd47ac8,0xbbd6274a,0xbbfd86ca,0xbc0a3364,0xbc050cb5,0xbc15f625,0xbc1fd917,0xbc266e36,0xbc2f1647,0xbc392a0c,0xbc424bd7,0xbc4a8a8a,0xbc52a3ac,0xbc5f2e11,0xbc5a190a, +0xbc57edc5,0xbc5303d6,0xbc4fa410,0xbc4c9681,0xbc4f0978,0xbc42d663,0xbc387d09,0xbc298cee,0xbc1d81e5,0xbc4d2ad6,0x3b8b94aa,0x3b906b2e,0x3b6efc40,0x3b832c5a,0x3b86d7bf,0x3b963e8a,0x3b6876fb,0x3b7ad7c3,0x3b804351,0x3b965609,0x3b9d42b5,0x3b964435,0x3ba5709a,0x3ba14d31,0x3b81b01d, +0x3b7a6f88,0x3b73fa8b,0x3b9eb72e,0x3b912da4,0x3b8b8116,0x3b7a8d71,0x3b81f5ce,0x3b7eed10,0x3b7d40cc,0x3b82d4e7,0x3b8097af,0x3b6fabb4,0x3b68a5f3,0x3b66bd5a,0x3b75816c,0x3b659519,0x3b696858,0x3b74a24f,0x3b7ad5d2,0x3b7c5f2c,0x3b63bf64,0x3b8cc5d8,0x3b955248,0x3b7b3382,0x3bb75eb8, +0x3b9da2b5,0x3ba650d5,0x3b5e50ca,0x3b3eda16,0x3b2ff6b0,0x3b96a42d,0x3bbaa72f,0x3bab79bb,0x3be0772b,0x3bc4c307,0x3b617ae9,0x3b67be15,0x3b761f61,0x3bc1fdb1,0x3baf996b,0x3bc988e1,0x3ba0bef0,0x3b90c5ef,0x3b8cbad2,0x3b8826db,0x3b9790e7,0x3b910f9a,0x3b61f8f8,0x3b5585ba,0x3b55f004, +0x3b8b5ca9,0x3b810ba1,0x3b6e03db,0x3b759a33,0x3b56785f,0x3b4df1a5,0x3b21e8ce,0x3b8a0d1d,0x3be6c225,0x3b81ec6d,0x3b9e342e,0x3b75dea3,0x3bae7489,0x3b17bebc,0x3b1ab910,0x3b2fed43,0x3bb58c3e,0x3be22c11,0x3bbc04e1,0x3c09a90d,0x3bfc4a8f,0x3b08e908,0x3b57ce1b,0x3b6702ab,0x3bf1a27a, +0x3bc88cf4,0x3bd9d486,0x3bbbbfed,0x3b9109a5,0x3b960f01,0x3b8157d3,0x3ba2ea81,0x3b8eaca9,0x3b33eb74,0x3b30e28f,0x3b2db83b,0x3b950eca,0x3b2cc7a5,0x3b3c28f1,0x3b7369ad,0x3b63ac85,0x3b66caa5,0x3b084073,0x3bdaef37,0x3ba7d476,0x3b88aab4,0x3bf811e2,0x3c13b00c,0x3c20bc07,0x3b338ed7, +0xb981c2f5,0x3a49c3b7,0x3b9d1de6,0x3c08553e,0x3c117b34,0x3c147080,0x3bb5b4ab,0xba1b0f82,0x3b8870ba,0x3ba6f018,0x3c22f897,0x3c1ae7e7,0x3c3533d8,0x3c12f560,0x3bb7cba7,0x3b99cee7,0x3b6b9ee7,0x3ba7bcae,0x3b997c08,0x3a5ca80c,0x3a59107b,0x3afa2ea7,0x3bde6a80,0x3bc0ebb6,0x3b50731f, +0x3b5c5965,0x3a5342c1,0xb9c66952,0xbb147826,0x3b7e7e49,0x3c827001,0x3bca33ea,0xbb552a90,0xbc3c604b,0xbc6b2a5a,0xbb006019,0x3bd8d6ce,0x3c41b751,0x3c91cfc0,0x3c2eb0ca,0xba5a8979,0x39d12582,0x3b4b83d3,0x3c21f985,0x3c25d835,0x3c06cd6c,0x3bf0bf6e,0x3b55810d,0x3adc4835,0x3a18e991, +0x3b2b6c8b,0x3bb46f93,0x3bf31262,0x3bcbe819,0x3bc9ec33,0x3bd968c0,0x3c6e188f,0x3c188900,0xbbf99c91,0xbbf0918f,0xbb78aec8,0x3c07f29a,0x3c06c257,0x3c50de95,0x3cc00aee,0x3ca0645e,0xbc74e23f,0xbce1a12f,0x3c9a6e25,0x3cd489e6,0x3865d1bb,0x3bd8412b,0x3b2b68f3,0xbb9afe8b,0x3a29a6b3, +0x3baafec0,0x3c26ddd1,0x3ba0e483,0x3b39727f,0x3b9fc7df,0x3be63a82,0x3c2e9a94,0x3bf6d095,0x3bf0fe77,0x3be2bece,0x3b77ccd6,0x3c1c6f24,0x3c0dcb7b,0x3b5d8f6f,0x3ba0e0bc,0x3bd67307,0x3c110463,0x3c021b54,0x3ba9a36a,0xbbbe8b8f,0x3c1ede81,0x3b24543a,0xbcd67083,0xbc685029,0xbc24db6b, +0xbc4f32a2,0xbc365295,0xbb48837d,0xbbcb387d,0xbbc482fe,0xbb942c7a,0x3b8e13e9,0x3b4ffd20,0xbad9c5eb,0x3b8b630c,0x3afb8e01,0xb9fdac0c,0x3b0143bd,0x3af81bcf,0x3b5b8f60,0x3b6d88c3,0x3abc1fb6,0x3b460127,0xb9c11859,0xba8142a5,0x39677024,0xb8cbf7d0,0x3bb75499,0x3bd7b5f5,0x3b4581f9, +0x3b211bf2,0xb930588d,0xba0123b4,0x3b5e7fce,0x3bf25fe1,0x3b8bb032,0x3c32e0b8,0x3c56aede,0x3c4446c4,0x3ba0a7d6,0x39071980,0x3bb7e11f,0xb960741f,0x3ac22572,0x3a1bb015,0x3b77d038,0x3babee8b,0xba9ad88f,0xba7a00f3,0xbad42d1b,0x39e7fcce,0x3929c203,0x3af165fe,0x3b4afa9b,0x3aa2d3db, +0x3af1b947,0x3b701c2d,0x3ba8cd7b,0x3bf30c97,0x3ba56806,0x3ba872e1,0x3bbd06ae,0x3b5b8944,0x3ba73b0a,0x3bc67719,0x3bc1a62f,0x3b9a900c,0x3b7fe006,0x3b3dcb0f,0x3b30a376,0xbb3994fe,0xbc6ae20b,0xbc1c8c62,0xbc0ab618,0xbbba19cd,0x3ae19b89,0x3bcb1729,0x3c0f856f,0x3b17d4fe,0xbb36bd9f, +0xbbb56cb1,0xbc6a828e,0xbcaf9933,0xbcd82b02,0xbc976c35,0xbc5b9db3,0xbc26a5bf,0xbbec5883,0xbbc61d22,0xbbbc5c87,0xbb956214,0xba71fefb,0x3bba4376,0x3b66227c,0x3b6ef7c8,0x3b47479f,0x3bc4522a,0x3bc39f28,0x3ae57543,0x3b9a547f,0x3bdafe59,0x3c0daf3f,0x3bee869c,0x3ba0c70f,0x3ad0100a, +0x3ae9b71c,0xba838277,0xbbc06a89,0xbb9cb662,0xbb92a568,0xbba224bd,0xbc0f4a83,0xbc23f0b8,0xbbebc1b0,0xbb66cb27,0xbcc30650,0xbcdce778,0xbcd93f4b,0xbca14960,0xbc2c3fe6,0xbba4383b,0xbb98d371,0xbc154f70,0xbc133870,0xbbecf7c9,0xbb6aff48,0x3af39857,0x3b917c57,0x3baa524b,0x3b393522, +0x3b0c9ccd,0x3b00f50c,0x3b40bc76,0x3b6e5288,0x3b676ba7,0x3bdace89,0x3bd8b777,0x3b90cbaf,0x3b4d13be,0x3a5f5de3,0xba26a272,0xbb4aa008,0xbb6adebe,0xbad6ce01,0xbba9a62b,0xbc0800a6,0xbc32dfb9,0xbb8aab69,0xbb722256,0xbc2e01aa,0xbc92fd1e,0xbc5cc532,0xbc5c15c3,0xbc13740a,0xbc000cfe, +0xbb96d5f0,0xbb7aee19,0xbb17e410,0xb984aa29,0x3b588d7a,0x3ba67bcd,0x3c0d678e,0x3bb76667,0x3bae1585,0x3b88d3ea,0x3b36d399,0x3a961d16,0xb9d44770,0xbad3ced0,0xbb2a060b,0xbb81bc12,0xbb3ac81c,0xbae64355,0xb9d6fcce,0xbae7a1a9,0xbb5ae773,0xbba8ad10,0xbbaa4619,0xbbbb8ba5,0xbbc59f91, +0xbbb0db3d,0xbb7b2f51,0xbb5cd500,0xbbe850cf,0xbc2eadea,0xbc5254c6,0xbc53d1ef,0xbbc63548,0xbb9107a0,0xbb1404ad,0xbb1b5a8c,0xba5bcfe6,0xb9981680,0x39e977e7,0x3abd2c8c,0x39bab0d5,0xb9d0b4ed,0xba1b1532,0xba76dd80,0xba784806,0xba894d67,0xbb2d69e6,0xbb6fbdcf,0xbb9ccde9,0xbbbe6a85, +0xbc043fd6,0xbbf7490a,0xbc0d1b56,0xbc27e4c1,0xbc3b164f,0xbc51e1ea,0xbc5fc77c,0xbc725f01,0xbc689b6b,0xbc670a62,0xbc6bba79,0xbc704b99,0xbc7e19a3,0xbc80270b,0xbc5fa7f1,0xbc380422,0xbc1b7852,0xbbfd4ed5,0xbc0a1db6,0xbc0045f9,0xbc06bbc1,0xbc0223cc,0xbc00c2f7,0xbbec3396,0xbbe9f2e6, +0xbbd87498,0xbbe36554,0xbbe52147,0xbbf40d4c,0xbbf4eff7,0xbc00440c,0xbc026d75,0xbc03c759,0xbbfe1eef,0xbc1a0726,0xbc161dd0,0xbc156904,0xbc06ec51,0xbc14b69e,0xbc1a04bc,0xbc216049,0xbc25e34b,0xbc2bca80,0xbc34b3f4,0xbc3521af,0xbc3682b4,0xbc351bd4,0xbc34c7fc,0xbc32d391,0xbc39aaca, +0xbc2c7188,0xbc25ffc0,0xbc1ca409,0xbc144f07,0xbc35334a,0x3b707b00,0x3b749022,0x3b486656,0x3b5f4e78,0x3b640eb1,0x3b77b35b,0x3b4eb02c,0x3b60e47e,0x3b6188e8,0x3b851339,0x3b8d6ad8,0x3b87f2bf,0x3b9c4317,0x3b98acaf,0x3b6ce29b,0x3b620c22,0x3b530214,0x3b8f5d80,0x3b77282d,0x3b695912, +0x3b46a42d,0x3b544f46,0x3b55c634,0x3b61ec96,0x3b6796d5,0x3b688422,0x3b61dbce,0x3b54afff,0x3b518559,0x3b6c47a7,0x3b4a2396,0x3b4946b3,0x3b5c5e4c,0x3b4eaec5,0x3b498628,0x3b2f307b,0x3b68bbb9,0x3b5f0ae5,0x3b211dd5,0x3b7928ab,0x3b5f353b,0x3b7c00b9,0x3b48ade4,0x3b37c064,0x3b183241, +0x3b8462a3,0x3ba319fe,0x3b9ac474,0x3bd85157,0x3bc0b1af,0x3b5777b0,0x3b519227,0x3b57a51f,0x3bab8cb9,0x3b9130af,0x3b9a7982,0x3b5882a7,0x3b4cc6af,0x3b563c36,0x3b77eb0f,0x3b86f50f,0x3b852df4,0x3b6b379e,0x3b554fec,0x3b5daa08,0x3b9fee4f,0x3b70bd54,0x3b4de30c,0x3b64c976,0x3b133286, +0x3af99f42,0x3aa1e49d,0x3b4ece2f,0x3bb80bad,0x3b403811,0x3b57b0d1,0x3b1dab21,0x3b5ea3e7,0x3b0a24db,0x3b268dfb,0x3b1f73df,0x3ba450e2,0x3bd32cce,0x3bb397d9,0x3c106dac,0x3c07a54a,0x3b26e53e,0x3b52e558,0x3b4a206f,0x3bdadd19,0x3b9e2916,0x3b9825a2,0x3b4b9956,0x3b2d1685,0x3b538aae, +0x3b82425b,0x3b9b2d16,0x3b9ba32c,0x3b7ee4e9,0x3b5dbc73,0x3b467b10,0x3bc6fbc6,0x3b300eaf,0x3b255ca9,0x3b81d99d,0x3b0ae2c2,0x3aca2246,0xb8c89d56,0x3b963bf0,0x3b202739,0x3aa38bf7,0x3b56e9a4,0x3bac044f,0x3bdb28d3,0x3b1e93c0,0x3a4872ae,0x38f29d61,0x3b86f5d5,0x3bebf0ce,0x3be2716f, +0x3c23246b,0x3bdcaa10,0xba61c357,0x3b543333,0x3b9d5856,0x3c2a4f07,0x3bf580a1,0x3bebcdbc,0x3b80a643,0x3b078c24,0x3b1d2055,0x3b6ed764,0x3ba2fcd2,0x3b9d2dcc,0x3b2379d0,0x3b1b86b8,0x3b80baf6,0x3c29fc65,0x3bce5614,0x3b4a6d64,0x3b70e30c,0xbabdb95f,0xbb5249de,0xbba07966,0x3ac63fec, +0x3c819690,0x3c091ff4,0xbb0b45ed,0xbc361fa9,0xbc79b55f,0xbb4765ee,0x3b97df76,0x3c01a449,0x3c90e44b,0x3c5668e7,0x3acc49c8,0x3901c848,0x3b35f9c3,0x3c363fa3,0x3c0f86f1,0x3bdae565,0x3bcedc75,0x3b0e93a3,0x3a164ed4,0x3a13f05b,0x3b8173cb,0x3bc302da,0x3bf9bb4c,0x3bd90ee5,0x3bfbdd34, +0x3c2f00e9,0x3c285d46,0x3b2348db,0xbc254cb7,0xbc1a7025,0xbb8978e7,0x3c1b9d31,0x3c2ad325,0x3c52495b,0x3c8e106f,0x3c81e13b,0xbc5346d4,0xbd082d68,0x3c8e1098,0x3ce18962,0xba439cf5,0x3c04b8e8,0x3b8ecb41,0xbb11b766,0x3a7c5c40,0x3b99273a,0x3c2ecfd1,0x3bcf5e0a,0x3b87040c,0x3ba30f48, +0x3c06c2b1,0x3c3753f4,0x3bb7e43e,0x3bc0acbe,0x3bc17e9c,0x3b87e77d,0x3c0bd902,0x3c0aead5,0x3bd9ae25,0x3bd7121a,0x3bf1f73d,0x3c09ad8e,0x3be85caa,0x3ba085ed,0xbb84d9e4,0x3c40d627,0x3ba99348,0xbc9efb9b,0xbc43e564,0xbc0fd1f8,0xbc08f6a7,0xbbe2fc35,0x3ae6716a,0xbc09c7c8,0xbc0d080d, +0xbbe34280,0x3b11ab31,0x3bb522f8,0x3b305ef7,0x3b6679c8,0x3b57cac6,0x3aa7abbe,0x3b28f345,0x3b024196,0x3b5e39bb,0x3b810b84,0x3a1dcea1,0x39e01c36,0xbb3e279c,0xbb253e4a,0xba9bbb3d,0xbae223fe,0x3b0baf1f,0x3b67eb06,0x3b5df2f9,0xb95334b0,0xbb27b5f8,0xbb309d99,0x3b840eef,0x3c118ad9, +0x3b8cd522,0x3c458fa2,0x3c3e3ecd,0x3bfc15d4,0x3b70aae7,0x3ad86a66,0x3c2b3bd0,0x3ba8387a,0x3b6dfdd9,0x3be4b657,0x3beb8bb2,0x3bd8fd17,0x39949eb6,0x3a372e1e,0xba8f4700,0xbb1eef44,0xba4095f9,0x3a30bcb5,0x3b19c39f,0x3ab2c4b2,0x3af22b36,0x3b37bcd4,0x3b950f87,0x3bc82932,0x3b35b31f, +0x3b35dc74,0x3b4df189,0x3b33c0dc,0x3b90cc6e,0x3baacd9f,0x3bc2a3be,0x3b77f75c,0x3b11e67f,0x3b1a48fd,0x3aa3d395,0xbb8c049d,0xbc6c152d,0xbc023d0f,0xbbd24c05,0xbb6e920a,0x3a553a8e,0x3bb3243b,0x3c2e7269,0x3b5b203f,0xbb5440f2,0xbc02122e,0xbc5007ef,0xbc9e5763,0xbcdd4b72,0xbca22fc2, +0xbc6a59b8,0xbc1e4c1d,0xbbb13563,0xbb77578c,0xbb73e885,0xbb8be9d6,0xbab4007a,0x3b8c9281,0x3b3eaee0,0x3b3d6f74,0x3a40bf6c,0x3b92160f,0x3ba193cf,0x3b1d20e5,0x3b0b0753,0x3b710a36,0x3c047236,0x3bcccde6,0x3b91087d,0x3a6ce525,0xba5a105d,0xbb3547b9,0xbbaabb4a,0xbbf0e67d,0xbbd04581, +0xbaabc4eb,0xbb9ed513,0xbbc80b97,0xbb8fc088,0xbafeeb34,0xbc9010c3,0xbcad737d,0xbcb83dcd,0xbc8d3f3d,0xbc08882d,0xbbefd610,0xbc06765f,0xbc3eed6e,0xbc3c55c0,0xbc1e9ba4,0xbbbd922a,0xbb2683d2,0x39a2e155,0x3b74dc4c,0x3ae901df,0x3afe560a,0x3ae6dfe7,0x3b8e3790,0x3ba18fb2,0x3b9059dc, +0x3bb010ea,0x3bb31d43,0x3bd305d4,0x3b64d9f6,0x3b042dc5,0xba22e390,0xbb170055,0xbb4c4e63,0xbb4c0bcc,0xbb56f56a,0xbc02c3ac,0xbc84c2a3,0xbc63e247,0xbc424715,0xbc3b6d57,0xbc7523b6,0xbc8898c1,0xbc9a3234,0xbc75a607,0xbc67c815,0xbc4121ec,0xbc205414,0xbbe43e82,0xbb89fd99,0xba385dae, +0x3ab5e21a,0x3b9d311c,0x3b648ce5,0x3b80a3b8,0x3b87e846,0x3b0d2df2,0x3a375fb2,0xba9722af,0xbaece960,0xbb2b759c,0xbb1b8c83,0x3a3f35dd,0x3b2f006e,0x3bb0928b,0x3b68f201,0x3b01acfd,0x39634e2c,0xb9fda6e5,0xbab4c636,0xbb259f60,0xbacf61a0,0x39dafe68,0x3b124e06,0xbaf97787,0xbbe4df49, +0xbc34890b,0xbc6613a0,0xbbd85d65,0xbbb889fe,0xbb6b6847,0xbb4d7f7c,0xbae0eecb,0xbaa9b590,0xba3ab31f,0x39d3109d,0xb98cb6a6,0xba073ebb,0xba048f38,0xb90ff4d3,0x399fdb50,0x3a52de72,0xba6ed6f3,0xbadb0b61,0xbb136447,0xbb472f70,0xbbaa57f5,0xbb9348a9,0xbbb0514c,0xbbd79066,0xbbeea7fc, +0xbc0503d9,0xbc0b1c0e,0xbc127130,0xbc14582d,0xbc1b5654,0xbc26370a,0xbc34ac27,0xbc4e316f,0xbc5d6be4,0xbc4ec901,0xbc2fa443,0xbc191db7,0xbc004c4f,0xbbce1048,0xbbc153f1,0xbbdd45ce,0xbbe3f69a,0xbbf8c10a,0xbbb606d0,0xbbc958c1,0xbbd019e5,0xbbd0e913,0xbbce5d0b,0xbbd5ee1f,0xbbd7e884, +0xbbe27fe4,0xbbe4cf60,0xbbc3001f,0xbba2bf67,0xbc069941,0xbbe4ef61,0xbbd374f0,0xbbab205b,0xbbbeca73,0xbbbfe3b5,0xbbc7f359,0xbbc74f3a,0xbbca9923,0xbbcfdab4,0xbbda9a70,0xbbe2a592,0xbbe77dcf,0xbbec6584,0xbbed3e90,0xbbfda85f,0xbbe8e85f,0xbbe53994,0xbbde4726,0xbbd8ddff,0xbbd8019e, +0x3b44301b,0x3b420d06,0x3b2e21d1,0x3b397141,0x3b3c5088,0x3b50a036,0x3b33910a,0x3b46aabc,0x3b466672,0x3b67d66d,0x3b783ea6,0x3b72b176,0x3b8eab1b,0x3b8bb81d,0x3b58627b,0x3b44b860,0x3b295efa,0x3b71f062,0x3b462881,0x3b3bd727,0x3b1f540f,0x3b2aa09a,0x3b2e854e,0x3b3ff040,0x3b3e81c2, +0x3b3c88e1,0x3b324fb0,0x3b2285b9,0x3b234e23,0x3b565918,0x3b2778fa,0x3b227701,0x3b341107,0x3b1b7341,0x3b12e185,0x3aefa1ef,0x3b30d550,0x3b253234,0x3afa3336,0x3b1b6b75,0x3b228680,0x3b47da10,0x3b3d1447,0x3b32fa75,0x3b0c738d,0x3b689209,0x3b8cb5c1,0x3b8a7192,0x3bc87932,0x3bb72a78, +0x3b5456f1,0x3b3dbbd7,0x3b335f9e,0x3b840231,0x3b610816,0x3b61ca1f,0x3b178fa6,0x3b187a4a,0x3b27234b,0x3b54a1e6,0x3b5513c2,0x3b3f54ce,0x3b1dad61,0x3aecff62,0x3b162df3,0x3b9e51f7,0x3b4d9301,0x3b2b5817,0x3b3d91b9,0x3a9c643a,0x3a36c182,0x3922ec86,0x3b0d84cc,0x3b8e3182,0x3b3bd64f, +0x3b26cac8,0x3b02ddea,0x3b24c530,0x3b206cdf,0x3b4bc5a0,0x3b29a553,0x3b9c224a,0x3bca7774,0x3bb3a6fe,0x3c14494f,0x3c0bdd64,0x3b5c33b7,0x3b5846d0,0x3b2954f7,0x3ba1886f,0x3b6c8daf,0x3b51dcc2,0x3af0751e,0x3aec0d79,0x3b22fb31,0x3b776700,0x3b7fc1bd,0x3b755d8c,0x3b2e75c1,0x3ad53691, +0x3acaab61,0x3bd661eb,0x3b1d9682,0x3b05e0bf,0x3b5a7d57,0x3a05f201,0xb9880adb,0xbb0b2ac7,0x3b27823a,0x3ad3160e,0x3a0f5cdf,0x3a2f59bf,0x3b441011,0x3ba0f778,0x3b294991,0x3af09890,0x39d70391,0x3b807c29,0x3bc9ed6a,0x3bb508af,0x3c2c8af9,0x3bfdaade,0x389a69fb,0x3b41512a,0x3b95d4a1, +0x3c1c55bb,0x3bb58c20,0x3b8247d0,0x3a71c2b8,0x39b3281c,0x3aaa0227,0x3b595806,0x3b746701,0x3b183371,0x38e746af,0xba1a0707,0x3b1aea4a,0x3c3d1a10,0x3bbb2fc5,0x3b3f8b88,0x3b513c23,0xbb6da150,0xbbbe338c,0xbbe276ce,0x387a3c28,0x3c44dab3,0x3c2997ac,0x3af4bb3d,0xbbe247bd,0xbc68050c, +0xbb1b657b,0x3b84bcda,0x3ba095d3,0x3c889bb1,0x3c749c5f,0x3b9631ec,0x3a0a7f87,0x3b32b122,0x3c3a84cf,0x3beb5cfd,0x3ba52e9f,0x3ba6a6c2,0x3b09997b,0x3aa93416,0x3b14a23d,0x3bb479d7,0x3bd6b374,0x3c026ccf,0x3bfcce89,0x3c20da5e,0x3c7af373,0x3bb58500,0xbb6d55a3,0xbc2f1ac6,0xbc1bb94c, +0xbb52f8ec,0x3c09cb4b,0x3c503c23,0x3c606ae7,0x3c4c1490,0x3c25e778,0xbbe6f512,0xbd0931d4,0x3c1b081c,0x3cb23fd1,0xba85dc83,0x3c01b86d,0x3bbda7a8,0x3ac8766d,0x3aa1ac87,0x3b5604e8,0x3c2bbc18,0x3bfbd869,0x3bb7b56f,0x3ba2c596,0x3c10febb,0x3c2e6056,0x3b85a054,0x3b8e9988,0x3b9a03b5, +0x3b86a6fc,0x3bd177cc,0x3bea287c,0x3c0ab1e8,0x3c041572,0x3c0a5d1e,0x3c0845ff,0x3bc16f17,0x3b855985,0xba80cfa9,0x3c4de922,0x3be9a731,0xbc486181,0xbc14b0b8,0xbbfdb6f6,0xbbcc7abf,0xba6e65e0,0x3bca8190,0xbbfdeca3,0xbc019c44,0xbbc73f71,0x3ad06ea2,0x3bee6295,0x3ba6bc7e,0x3ad48088, +0x3b732ac1,0x3b2c132f,0x3b3cafc7,0x3b10a0ab,0x3b610509,0x3b96e346,0x3997cc79,0xbae524af,0xbb8055cb,0xbb4e978d,0xbb11b9d7,0xbb378128,0xb9eec0c3,0x3ae1ba52,0x3bb569a5,0xbb0874f3,0xbb91e824,0xbb1491c0,0x3b71d0cc,0x3c07d2a4,0x3bb6a87a,0x3c392433,0x3c0cd273,0x3afd3975,0x3abfa5c5, +0x3b228cf9,0x3c3bc0aa,0x3c176bee,0x3bc3773b,0x3c1be173,0x3c0734f1,0x3bba4fad,0xba1f6ae5,0x39dea2b5,0xba95dede,0xbb58d167,0xb9f70564,0x3a1aa80b,0x3ae646e8,0x3af8c9b6,0x3b1411b8,0x3b1435d1,0x3b693fe3,0x3b8f1b4b,0x3aca10ef,0x3a85f9a3,0x3ac80bf5,0x3b49eb25,0x3b97a6f5,0x3b9fd249, +0x3bc44827,0x3ad994ee,0xb8fc73f4,0x3abf2fea,0xba828627,0xbb9c4d3d,0xbc2917ad,0xbb9fb0fb,0xbb4b7576,0xba659507,0x3b0f72ef,0x3b9f00de,0x3c029a59,0x3bad7b6b,0xbbbd4623,0xbc1733e3,0xbc54eaea,0xbc9625a4,0xbcd4067b,0xbcaf5225,0xbc835354,0xbc24104e,0xbba4ceb9,0xbb25312b,0xbb079ab9, +0xbb5245e3,0xbabf86eb,0x3b00e508,0x3b01e1af,0x3b16b4c8,0x38b6c752,0x3b156a68,0x3b34066c,0x3b0e12c8,0xb9028266,0x3a5a02a6,0x3ba7fefb,0x3b9eb37b,0x3b6f4982,0xb9539e5d,0xbb02a118,0xbb71a94e,0xbb8df572,0xbc1de37c,0xbc17d89f,0xbab2b322,0xbb2cc066,0xbb38c0cc,0xbb03ac80,0xbb55b9dc, +0xbc5370cb,0xbc79ceff,0xbc86de56,0xbc50fe2f,0xbbb613ce,0xbc01eea1,0xbc271d9c,0xbc521c68,0xbc4d0697,0xbc349cc6,0xbc02cc35,0xbbd7a359,0xbb5fd4fe,0x3afcbd73,0x3aa153d6,0x3b0e2eed,0x3b015814,0x3b96c778,0x3ba560dc,0x3b9bc8a6,0x3b73c9b2,0x3b868b89,0x3be6fc72,0x3b6fef06,0x3b0f45d6, +0xba69f9f8,0xbaedc8d9,0xbb600880,0xbbac0506,0xbbb748f2,0xbc148960,0xbc6d2e17,0xbc9811a1,0xbc92e590,0xbc5aba05,0xbc580d66,0xbc93dfd4,0xbcac6bbc,0xbc988cc3,0xbc914031,0xbc844a1a,0xbc569368,0xbc162118,0xbbba56bf,0xbb3be9eb,0xba99bd3c,0x3ae6c7f2,0x3adb3233,0x3b4b3eeb,0x3b8332d4, +0x3b069ede,0x3a545bb0,0xba3992bd,0xb929147e,0x3716d1c8,0x3ae6f4f6,0x3b91ce28,0x3bc07734,0x3c0870bc,0x3bd3d110,0x3ba6a7d6,0x3b6497a1,0x3b11f9b6,0x3a7915ff,0xba5c8f63,0xb983f4e5,0x3a1591ef,0x3af5b98d,0xbafe190c,0xbbdb1254,0xbc3bad12,0xbc798487,0xbbdfe78d,0xbbdbcfb9,0xbba7260c, +0xbb841c59,0xbb3e2729,0xbb1d8676,0xbb021a10,0xba82640c,0xba927de3,0xba689df2,0xb9eb4833,0x39acc631,0x3a8fb5f0,0x3b10dbd7,0x3a2b43ea,0xb8c7083e,0xba2bb81c,0xbac521bb,0xbb66c812,0xbb578cd8,0xbb6b6c0c,0xbb83e984,0xbb893ea4,0xbb8c5735,0xbb859c5c,0xbb76a264,0xbb8e3f92,0xbba30931, +0xbbbadc9a,0xbbdb7599,0xbc04b59c,0xbc165b56,0xbc191c79,0xbc0c787a,0xbc024412,0xbbecae0d,0xbb74c2e6,0xbb7343b8,0xbb8cc6a1,0xbb9865f6,0xbbb052fe,0xbb537d01,0xbb7a7875,0xbb8bd17c,0xbb813b42,0xbb6d5a07,0xbb69f5bf,0xbb609a19,0xbb67d111,0xbb5d4ff1,0xbb284b1e,0xbae10e5c,0xbb9b7286, +0xbb6a942e,0xbb4a9bf8,0xbb0d788f,0xbb1bc8b0,0xbb13ad38,0xbb15360c,0xbb0a1af9,0xbb07bff3,0xbb015d14,0xbb1c9bee,0xbb2d7931,0xbb3cc7ca,0xbb4bb041,0xbb54a56b,0xbb6d0c3c,0xbb5c8540,0xbb6407b3,0xbb6a9afb,0xbb74c28f,0xbaf47d85,0x3b141a77,0x3b102547,0x3b1bb7df,0x3b215516,0x3b22c118, +0x3b307637,0x3b194df6,0x3b304ee8,0x3b303e91,0x3b4caddf,0x3b5adfd6,0x3b58c770,0x3b80cf40,0x3b7d1fdc,0x3b492d89,0x3b28c926,0x3b003e85,0x3b3c1253,0x3b1c9d8c,0x3b17799c,0x3af553b7,0x3b06729b,0x3b089bbd,0x3b169536,0x3b0977ae,0x3afbf4c6,0x3ac7e538,0x3ab5dd80,0x3ac83304,0x3b2ff17c, +0x3afd82f1,0x3af52dbf,0x3b0ac4af,0x3ad4222c,0x3abd9a02,0x3a8f423b,0x3aefe8ad,0x3adad775,0x3afe88c6,0x3aebd2db,0x3b0632e3,0x3b26e73a,0x3b3e92be,0x3b335f8f,0x3b0343ce,0x3b4cd8e3,0x3b773544,0x3b7ea5ab,0x3bb7e06b,0x3bab4a1e,0x3b5850c5,0x3b27255b,0x3b050231,0x3b24d4e0,0x3b1f8d75, +0x3b291b56,0x3ae56b7d,0x3b031041,0x3b0f60af,0x3b2b0a2e,0x3b034fa5,0x3a927f51,0x3954e828,0xb9bd961f,0x3a21bfaa,0x3b88317d,0x3b206ff5,0x3b0b8ec9,0x3b111631,0x39876487,0xb9dfc705,0xba3108b6,0x3a8cd54d,0x3b5aef87,0x3b8068f0,0x3b39fa0e,0x3b176d4b,0x3b0c4bef,0x3b3a48ca,0x3b7474ae, +0x3b3bcb9e,0x3b9d6f25,0x3bc71e99,0x3bbd01f0,0x3c164a57,0x3c0e49a3,0x3b8d62b3,0x3b582018,0x3af70e50,0x3b2ba1be,0x3b295dfc,0x3b24ad89,0x3ac3e4ef,0x3aeb41da,0x3b176ea2,0x3b58c746,0x3b1ce4b2,0x3ab819d6,0xba2fa609,0xbad62074,0xba818b95,0x3bbde631,0x3af9a25d,0x3aed847c,0x3b371a7a, +0xba2a91ec,0xbae11f65,0xbb3bb112,0x3a651935,0x3ab2c28f,0x3acda082,0xb8fefbb2,0x3b096ff4,0x3b805c20,0x3b6200ed,0x3b46f384,0x3a996677,0x3b88ac05,0x3bb94ab1,0x3bad0bbb,0x3c36101f,0x3c10d4a0,0x3af2670b,0x3b4cfbec,0x3b81f3da,0x3be2a978,0x3b6d3380,0x3b0a990f,0xb7dfd1fb,0x3a1272a6, +0x3ace5a3b,0x3b47b6a3,0x3abe4a9b,0xbb032170,0xbba50d92,0xbbbbf2c7,0xba846426,0x3c2cb5b5,0x3b967d63,0x3b4466e3,0x3b305378,0xbbaab8b8,0xbc027745,0xbbedef4b,0xba7a2143,0x3bf520f8,0x3c3afa82,0x3bda7f1c,0xba89c145,0xbc40197e,0xbb10ce24,0x3b60e081,0x3b76b6c3,0x3c7163b7,0x3c802359, +0x3c01835a,0x3ac6ed93,0x3b300e8f,0x3c2e7cf5,0x3bb8bb5f,0x3b7d976c,0x3b922ee4,0x3b575d91,0x3b642286,0x3b8ee6fa,0x3bd3275f,0x3be12bf3,0x3c04f091,0x3c0a9e94,0x3c3397ee,0x3c8f2fb4,0x3a90b3fe,0xbc0b3816,0xbc319476,0xbbfe34b9,0xba60e895,0x3bc1b856,0x3c76d625,0x3c787377,0x3c02badb, +0x3b9caed6,0xbac0a2f5,0xbcf160d6,0xbb58f98c,0x3c202cd7,0x3b2dbebe,0x3bdb3083,0x3bc1f802,0x3ba65f3c,0x3af84cef,0x3b17a015,0x3c21c13d,0x3c146b63,0x3bebc067,0x3b9b8df2,0x3c0db5f4,0x3c173efa,0x3b57fb3f,0x3b3e40c7,0x3b479669,0x3b77a961,0x3b924c5e,0x3bc8b56d,0x3c2728ca,0x3c249f01, +0x3c1b8953,0x3c0dee69,0x3b8a6e47,0x3b3507f9,0x3b1538e9,0x3c3ed787,0x3be66d4f,0xbc047c8e,0xbbbcbb2d,0xbbb5e4a2,0xbbb659cc,0x3b8d03cb,0x3c1bceaa,0xbb475a3d,0xbb572b0f,0xbaffb27b,0x3b396320,0x3c09aa94,0x3bd6e56f,0x39c0d03e,0x3b615be3,0x3b52bc29,0x3b41d7fa,0x3b1cbfcd,0x3b60f6df, +0x3bace4df,0x39e5bb01,0xbb3c369d,0xbb501230,0xbb3e0d53,0xbb3a8b42,0xbb44d765,0xbb0c3980,0x3971c80b,0x3bbd9a2c,0xbb3caabd,0xbb833730,0x3795d491,0x3b7c16a3,0x3bdf8fd4,0x3bea5fae,0x3bd2b0f1,0x3b074ecc,0xbb5340d8,0xbb1dc40c,0x3acca4a5,0x3c2d058c,0x3c39a7b5,0x3bdf4460,0x3c0cc4aa, +0x3bc92d20,0x3b38dfef,0xbb359088,0xba9e85af,0xbb0a4280,0xbb6013b2,0x3a296ef3,0x3ac1660f,0x3ac2e321,0x3b3c44f8,0x3b4aca29,0x3b06476c,0x3b15cf46,0x3b20820e,0x3a844cbf,0xb995ec4a,0x3a2db76b,0x3b5f58a5,0x3b9dda76,0x3b9a1a9e,0x3bac7e89,0x3a4a499c,0xba968502,0xba8b9ad6,0xbb3e1e8b, +0xbb963f40,0xbb9df663,0xbaff2eaf,0x39e93b17,0x3b954e21,0x3bc9dca2,0x3bcd1d38,0x3bcf3b62,0x3bd9443b,0xbbec96d2,0xbc043f4f,0xbc5a78c0,0xbc8f94f9,0xbcb0c093,0xbcaba09f,0xbc87db32,0xbc2cab9d,0xbbb7d9d8,0xbb1a79ef,0xbab42ff7,0xbb08b3fd,0xbac638aa,0xba376868,0x3a65744f,0x3ae134c9, +0x398bf173,0x3a4a279c,0x3a815e1b,0x3b01532e,0xba08ee8c,0xb8e3d55b,0x3b1bfd38,0x3b5ead2a,0x3b443fbf,0x3944dc75,0xbaadc9b0,0xbb83f1c7,0xbb8ee07c,0xbc2bd8fb,0xbc356ece,0xbb8dbe6c,0xbb10d73d,0xb94c05e0,0x3a89dbed,0xbb88048f,0xbc2c9f42,0xbc3b6591,0xbc3fe68a,0xbc1a51e3,0xbba2c4f9, +0xbc1748b6,0xbc47d764,0xbc5cd01d,0xbc5135ea,0xbc3d232b,0xbc1bbfbd,0xbc19813f,0xbbcf0f72,0xba0d578e,0x3a709024,0x3b22a586,0x3b1733d9,0x3b837546,0x3b8ce125,0x3b8b06b9,0x3b110e4c,0x3b16d78f,0x3b8fc3c6,0x3b681cd0,0x3af7833f,0xba8922c6,0xbb053f52,0xbb5d470c,0xbb97765e,0xbbdcc8a6, +0xbc15fce4,0xbc3bdae4,0xbc827e25,0xbc8d3293,0xbc794403,0xbc4c6291,0xbc87fa95,0xbc9a69fd,0xbc92d54f,0xbc8a4cde,0xbc81e84a,0xbc504023,0xbc0ea5cd,0xbbae094a,0xbb73f803,0xbb55ddeb,0xbaa362f3,0xba31d859,0x3af51564,0x3b42ad32,0x3ae7186d,0x3a857433,0x3a10d017,0x3adaa627,0x3b30683e, +0x3b8f6eff,0x3bb33dce,0x3bcade27,0x3bef6f5c,0x3bd15ecd,0x3bc0658f,0x3bb478b6,0x3b6f0356,0x3ac7891b,0xba96b5fc,0xbad7f305,0xbb152656,0xbb2251f4,0xbbb89f15,0xbc130675,0xbc522cd2,0xbc7708c6,0xbbf6e47d,0xbc05119a,0xbbd72eea,0xbbb4c3f5,0xbb92ae7a,0xbb797f9c,0xbb697b01,0xbb2face0, +0xbb28c36f,0xbb03b556,0xbaa1b0ca,0xba0dc6b5,0x393f638b,0x3ac80ebc,0x3a343f04,0x39c0340c,0xb8e00b24,0xba368f45,0xbb15d2fc,0xbab741f5,0xba9ef263,0xbaa7b087,0xba95ffa0,0xba4c4fbc,0xb9b95e5b,0x398db597,0xba3cfd42,0xbaaf0212,0xbb0347e8,0xbb3ccc5c,0xbb83814c,0xbba349ac,0xbbc25277, +0xbbcf17eb,0xbbd81238,0xbbe5142f,0xbb213641,0xbb4099ab,0xbb24f4f2,0xbb2be4b9,0xbb365604,0xbafdce93,0xbaf811a6,0xbaf08b80,0xbaadf3d8,0xba613b71,0xba2bd0e9,0xb9a26967,0xb973ca3d,0x3803f313,0xb8d26a5f,0x395d60a3,0xbaa8fcdb,0xba2aa00b,0xb9e56fae,0x39509a3e,0x38befd94,0x3995f17e, +0x39cb1f19,0x3a0412df,0x3a08a1c5,0x3a38f4f1,0x399ac836,0x361d4b0e,0xb9aa538a,0xba2b7859,0xba6f47e2,0xba9f93b1,0xbaac42c7,0xbacf75b5,0xbaf92994,0xbb1198fd,0x39f7e3b7,0x3ac083e6,0x3ac235df,0x3b09eb95,0x3b0518a3,0x3b023dfa,0x3b06b755,0x3aef806c,0x3b0b2739,0x3b099e52,0x3b2582c8, +0x3b3125bc,0x3b31fc14,0x3b56828e,0x3b52e2d6,0x3b2d2109,0x3af55b32,0x3a9bae8e,0x3aeca875,0x3ad18932,0x3ad5507f,0x3aac93de,0x3ac934f2,0x3ac722ec,0x3ad257d2,0x3a975158,0x3a52fced,0x394863d4,0x395bdae0,0x39f661ac,0x3aef68ef,0x3a94620e,0x3a92fe66,0x3ab778ce,0x3a54cfaf,0x3a213a50, +0x39ad03e8,0x3a83e544,0x3a8633dd,0x3b0800b8,0x3ab9367f,0x3aea8a35,0x3b094b4d,0x3b414fc7,0x3b31a37f,0x3ad9ccd8,0x3b3181e6,0x3b5996e5,0x3b66fbd7,0x3ba3997c,0x3b9a0a3d,0x3b562021,0x3b0121f4,0x3a913c84,0x3a68f51f,0x3ab8e9db,0x3aee27ed,0x3aaec780,0x3af81a2c,0x3afb7a9c,0x3af214f4, +0x39ebafe6,0xba753ce5,0xbb09a9be,0xbb195553,0xba7b8986,0x3b41aaf2,0x3ac1df91,0x3aac7d9f,0x3aa9424f,0xba35707c,0xbab6f918,0xbabd55fc,0x39154ada,0x3b2fee5d,0x3bacca5d,0x3b6e93c8,0x3b449871,0x3b0ab11e,0x3b5ad7a7,0x3b8b9aef,0x3b3776f0,0x3ba00388,0x3bc42add,0x3bc4efec,0x3c13ed32, +0x3c0bdfe7,0x3ba55e37,0x3b40339d,0x3a73616a,0x3996febf,0x3ad5ca39,0x3b08f222,0x3ac2f83f,0x3b18eaee,0x3b20dff9,0x3b3049b9,0x39ae54cc,0xbad96e6e,0xbb93d497,0xbba1180c,0xbb646f8a,0x3b844db3,0x3a3b5d7c,0x3a67386d,0x3af9e73b,0xbafb82d5,0xbb4501e2,0xbb65a6eb,0xb9bca3ed,0x3aba8ed0, +0x3b5fc395,0xb8562dbb,0x3b059e67,0x3b71c1ae,0x3badfef1,0x3b99b2f4,0x3aed1970,0x3b9a19d5,0x3bbca8e6,0x3bc45eba,0x3c421eca,0x3c253c04,0x3b807e76,0x3b5efd82,0x3b3d3769,0x3b59bc2d,0x3afcbded,0x3ab84c9a,0x39860d5a,0x3af473ad,0x3b1bf1f7,0x3b22890d,0xbaebc084,0xbbe58439,0xbc292cae, +0xbc256a45,0xbb77efb4,0x3c07a937,0x3b3bef65,0x3b026ee8,0x3ac05ce5,0xbbd6106a,0xbc18e247,0xbbed2475,0xbaeecfd1,0x3b9deca6,0x3c5c6b38,0x3c43ed74,0x3b9a08a9,0xbc11d22d,0xbb65db48,0x3af3bd13,0x3b78299a,0x3c47425b,0x3c785179,0x3c3843c6,0x3b3730cf,0x3b219336,0x3c186714,0x3b8b82b3, +0x3b5e813e,0x3ba17f6d,0x3ba90f28,0x3bbe24a6,0x3bc0aca4,0x3bd4d103,0x3bdb6038,0x3c063302,0x3c135514,0x3c36db6a,0x3c8629e2,0xbb5b9014,0xbc54d373,0xbc5501d6,0xbbdc2481,0x3a3890da,0x3b18bb89,0x3c7bf634,0x3c7c224b,0x3b84e0e0,0x3aa38cfd,0x3acc250a,0xbcca3d1d,0xbc8ea14f,0xbb86f5d4, +0x3c16869e,0x3bc84072,0x3bab0d3a,0x3bf47c88,0x3b3ebd93,0x3b1cce16,0x3c1427cb,0x3c29ea01,0x3c0dc7af,0x3b8de5dd,0x3bf49aef,0x3be72444,0x3b3a4a61,0x3ae53b7a,0x3ada9d55,0x3b658e70,0x3b43a832,0x3bac22c0,0x3c2ffc0c,0x3c31379e,0x3c1a6fe9,0x3be79e1a,0x3b2e6e73,0x3b221b7b,0x3bbc8979, +0x3c0d75f3,0x3b962d4c,0xbbb4b58a,0xbb284e70,0xbb18c8a7,0xbba0f888,0x3bf085e5,0x3c611af1,0x3b92ce5f,0x3b8352c3,0x3b838771,0x3b99836e,0x3c07e715,0x3bd48ded,0xb9d49a15,0x3b4af101,0x3b713184,0x3b34b9b2,0x3b2729d9,0x3b5f670c,0x3bb74f16,0x3a61f344,0xbb3dbfa8,0xbacda1e1,0xbb0b5a12, +0xbb3aa2ed,0xbb1dbc8c,0xbb4cc8f0,0xba987b40,0x3b8c39ea,0xbabc2cce,0xbac31445,0x39f9dbfa,0x3b6e38d8,0x3b8bdda9,0x3bdc1fad,0xba1f6666,0xbbaf37d0,0xbbbb8c9a,0xbbbcf8e0,0x3a39421a,0x3c215dee,0x3c54c4f9,0x3bad60a3,0x3bac88c4,0x3b0a1789,0xba5c7918,0xbb927dfd,0xbb2424b4,0xbb401cc6, +0xbb6369b7,0x3ad44559,0x3b2dd8a1,0x3ae0687c,0x3b847775,0x3b78c254,0x3ad40497,0x3a671e7b,0x3a4074f8,0x3a75a8e4,0xba5fbdfe,0x39567e5d,0x3b7578f0,0x3bb1aea8,0x3bb3bec8,0x3bb2e9a8,0x3aa2b128,0xba6fa1ea,0xbb36e99f,0xbb8703c1,0xbb8691c0,0x3a844e4e,0x3965474a,0x3b7f04da,0x3c41a580, +0x3c2a89d1,0x3c0c6803,0x3bcf587c,0x3bcbda4c,0xbbc6476a,0xbbd2f029,0xbc4d9bf4,0xbc80d779,0xbc8272b3,0xbc968d0c,0xbc7b064b,0xbc2adb40,0xbbce5ae2,0xbb3d584c,0xbae68985,0xbadf3369,0xbae0ad14,0xbb3dc802,0x388c9eb1,0x3a8ee7df,0x3948bc02,0x38a40a43,0x399b5a34,0x3ae6a5c7,0xba23f2e2, +0xba5054ae,0x397ad572,0x3acac256,0x3aff09c1,0x3a5cb10d,0xba964b0a,0xbb6aa7e1,0xbb83d19f,0xbc1cc85c,0xbc37e3ae,0xbc105622,0xbb701a3a,0x39e77af1,0x3b2d941c,0xbb432df2,0xbc10b944,0xbc141e0b,0xbc134283,0xbc0a97a6,0xbbf571f4,0xbc41d8ac,0xbc6ac616,0xbc698d8d,0xbc539e66,0xbc3c3bcd, +0xbc232681,0xbc2be19c,0xbc04dc4a,0xbb4b7f81,0x39cb968e,0x3b232727,0x3b295ce9,0x3b64401e,0x3b6b4960,0x3b5c118c,0x3aa9326d,0x3a64d19e,0x3a9cde9d,0x3b425026,0x3b059ae5,0xb9667942,0xbb0c1b39,0xbb5e89e1,0xbb8e9f6d,0xbba454fa,0xbbcac351,0xbc12fda9,0xbc2da015,0xbc52252b,0xbc6d7a1f, +0xbc3568e4,0xbc5ce126,0xbc6e2260,0xbc699ba9,0xbc552a18,0xbc45695c,0xbc1f3de2,0xbbe000a8,0xbb8d1d71,0xbb8ea40b,0xbbb32477,0xbb9e7922,0xbb6fe893,0xb981beba,0x3a787e96,0x3a943eab,0x3ab2d09a,0x3b23bbc9,0x3b3f9ee6,0x3b6adc1d,0x3b887bc0,0x3b8609f5,0x3b8cb9ef,0x3b88c271,0x3b94659f, +0x3ba8a799,0x3bd4f9ff,0x3b75bbe4,0x3a681194,0xbb217129,0xbb88a4ac,0xbbc0b24d,0xbbea31d7,0xbc1426cf,0xbc2ed780,0xbc53112e,0xbc5a2f02,0xbc0f957d,0xbc250b11,0xbc0c19c1,0xbc0198a3,0xbbe1758e,0xbbc93be6,0xbbc2633e,0xbba3cddb,0xbb9bd279,0xbb78f370,0xbb3ab895,0xbb196096,0xbae99b75, +0xba11842d,0xb9956959,0x39436784,0x39a746de,0x3a08c78e,0x39127dc9,0x3b0648f2,0x3b16fcec,0x3b165323,0x3b226c26,0x3b3b0ad8,0x3b44b9c9,0x3b62938d,0x3b0ddf3f,0x3acb6a5c,0x3a650d14,0x389e1fd1,0xba6d4443,0xbaf515fa,0xbb650e8d,0xbba00088,0xbbc57ce5,0xbbf3fd10,0xbb3a44a5,0xbb73f6b9, +0xbb2ec528,0xbb209f0b,0xbaf9d1d1,0xbb1d431d,0xbaebc9eb,0xba8c1c2e,0xba12100e,0xb8f7064d,0x3910b8ff,0x3a0e2892,0x3a38f5c7,0x3a72afd8,0x39912f8a,0x3995776b,0x39acb589,0x3a1726bc,0x3a32a0a8,0x3a9fda18,0x3a891a58,0x3aa327d6,0x3ab1ba06,0x3ab62605,0x3ab8d62d,0x3ad3e326,0x3a998f3f, +0x3a4be9c5,0x39aa59a5,0xb8fd9a49,0xba093425,0xba5e29e0,0xba9bae89,0xbacc1522,0xbb03e918,0xbb201e90,0x3942cab4,0x3a2d135a,0x3a4e7fdd,0x3ae675ac,0x3ace6bb4,0x3ac8ab0a,0x3ac5afd1,0x3aa5582b,0x3acd44a7,0x3abd8089,0x3b00d053,0x3b0b0807,0x3b0afc00,0x3b2b2062,0x3b272991,0x3b0ec369, +0x3a94b758,0x39dcea63,0x3a5d064b,0x3a5c8600,0x3a6d50e2,0x3a3a8837,0x3a839391,0x3a72f05a,0x3a5ecafb,0x392c9ec2,0xb9a4be3f,0xba85398f,0xba52ca30,0xb9f1f452,0x3a5cba18,0x3995b754,0x39b042b8,0x3a412373,0xb79c67dd,0xb96be8c8,0xb9b9ae96,0x3965a116,0x39f6cc1f,0x3b141231,0x3ab3df4a, +0x3acc352c,0x3ad0bb97,0x3b3ab745,0x3b26bb10,0x3a8d5a54,0x3b154426,0x3b3c784e,0x3b4b5520,0x3b8b64c1,0x3b83576f,0x3b47e624,0x3aa53ffc,0x3922eec0,0xb9f8f617,0x39c36b07,0x3a95bb6e,0x3a722acb,0x3ae1dec5,0x3acd72c3,0x3a75709c,0xba932e02,0xbb351eb3,0xbb803fc9,0xbb6e69b8,0xbb0855f6, +0x3aba0a9e,0x39b63156,0x399b0b30,0x3a06e47c,0xbadae6ba,0xbb15a125,0xbb00947f,0xba2a78eb,0x3b08af54,0x3bdaad7b,0x3b96368a,0x3b72c25f,0x3b0de870,0x3b7adebe,0x3b962b38,0x3b1439ce,0x3ba12b76,0x3bbfd454,0x3bc44e9b,0x3c0acf86,0x3c030316,0x3bab9c23,0x3b15cf2a,0xb905c6c2,0xbaca7ed9, +0x3a10028d,0x3ac7c4ea,0x3ac4acad,0x3b3af5c4,0x3b28f72c,0x3ae3d593,0xbafa7557,0xbb9810fe,0xbbf912dc,0xbbe74040,0xbba62d9c,0x3adf3ffa,0xba236fbc,0xb9964761,0x3ab69a39,0xbb55a93d,0xbb897e4c,0xbb7a3e75,0xbab47861,0x3abdb3e0,0x3bc48f5d,0x3ab56780,0x3b2924db,0x3b66f4be,0x3be80874, +0x3bc98e22,0x3b097ce7,0x3baa899d,0x3bc66e1a,0x3bdea7ab,0x3c4dec6e,0x3c36c833,0x3bb7e308,0x3b61a082,0x3abd7034,0xb928c242,0x396a43c8,0x3a86c0f0,0x3a5d0da6,0x3b57e5b7,0x3b4cbb82,0x3aab78a2,0xbba9d682,0xbc36ad67,0xbc631912,0xbc46a41b,0xbbaa528e,0x3ba46e46,0x3a60a937,0x39c365d3, +0x3a5e062e,0xbbfcc80f,0xbc253864,0xbbd89b10,0xbb2601b6,0x3b601336,0x3c75e9e3,0x3c8b07a9,0x3c2341cc,0xbba46282,0xbba0db0c,0xb9c4cdfb,0x3b7de4ec,0x3c199af2,0x3c646bbb,0x3c6ff7f5,0x3b81ef18,0x3afd097e,0x3c006fa6,0x3b4d9901,0x3b5bc3ab,0x3bbe4fe2,0x3bdba2db,0x3bf092e3,0x3bcd1dfa, +0x3bbd052d,0x3bc9e8f9,0x3bfd58ff,0x3c11c870,0x3c22b6ce,0x3c3d0246,0xbbee4a60,0xbc83c153,0xbc830e74,0xbbcf2219,0x3abedeac,0xbaab165e,0x3c5f5d1a,0x3c5b7071,0xb9178767,0xba60cfa3,0x3ae67cd2,0xbca4968d,0xbcf0865f,0xbc845cef,0x3c7bbd82,0x3be558f3,0x3ba1ca85,0x3c03587c,0x3b71a54d, +0x3b32ba17,0x3c018c28,0x3c3522c1,0x3c1b946d,0x3b76396a,0x3bb9e795,0x3b972e52,0x3b22531b,0x3a9624dd,0x3a8cd636,0x3b51b97f,0x3acc4338,0x3b823146,0x3c21e41c,0x3c2db61c,0x3c0add51,0x3b94160e,0x3ac6cade,0x3b271926,0x3c0a1b6b,0x3b83f767,0xba17c107,0xbbebd071,0xb9a74aef,0x3ac35e8b, +0xbb40f748,0x3c027526,0x3c9014de,0x3c5d58be,0x3c499b92,0x3c2b84c2,0x3be559f8,0x3c052614,0x3bccfbef,0xb9e1da03,0x3b58eb60,0x3b8b3db3,0x3b1ce22b,0x3b2ed967,0x3b5d0863,0x3bb578e8,0x3ab2ecae,0xbb17dc47,0xb9340cba,0xbaa33b3c,0xbb0dacb6,0xbada9489,0xbb5452db,0xbae19cd6,0x3b2664ea, +0xba37a8e2,0x39d87cf8,0x3b097b49,0x3b65764d,0x3b0654ca,0x3bc2d066,0xbbbe6adb,0xbc208085,0xbbc19c39,0xbbb568ea,0x3af18fc3,0x3c1c9573,0x3c68f9f8,0x3b2bf60b,0x37d0e5e5,0xbb184e8c,0xbb74c985,0xbba330e8,0xbb186945,0xbb2f2171,0xbb42251e,0x3b015852,0x3b5e67ec,0x3b1114bd,0x3b9ccd0c, +0x3b80b0b8,0x3a393480,0xb954f222,0xb9b47f49,0x3a6e947a,0xba4d04bc,0x39a39319,0x3b831286,0x3bb788b8,0x3bc155ad,0x3bb14ef9,0x3b0a6a25,0x3940ed7c,0xbb40f453,0xbbb4f0ca,0xbb7fe91b,0x3bbf3f88,0x3ab34405,0x3bcd8f76,0x3c8df094,0x3c652188,0x3c32d282,0x3bc9bf3b,0x3bac3f6d,0xbb801cbe, +0xbbaadcb7,0xbc26f73f,0xbc4f33bb,0xbc3d58ab,0xbc6d5e44,0xbc4a4ec4,0xbc15692b,0xbbcdbf0e,0xbb66b790,0xbb3e5d59,0xbb1901da,0xbb17bcbf,0xbb8afeb7,0xb985e973,0x3a2ad351,0xb6abe4b4,0xb84df059,0x393ada64,0x3aa44f09,0xb9efb292,0xba897570,0xba820341,0x38152df5,0x3a2b4e7c,0x3a8cc67d, +0xb9e629cb,0xbaea1ce2,0xbb387e30,0xbbfa0b48,0xbc29c74d,0xbc4d60e0,0xbbb66e2c,0xb9f26e9f,0x3b025e37,0xbab2104e,0xbbe60cac,0xbbe2fd1a,0xbbe7608b,0xbc08ad32,0xbc331c83,0xbc6598b3,0xbc81364c,0xbc7dae61,0xbc5bccd6,0xbc3b94c4,0xbc235b90,0xbc29f211,0xbc0e6a4f,0xbba8c64d,0xba4afc89, +0x3aeaec72,0x3b4563c1,0x3b418ff6,0x3b399b35,0x3b24448d,0x3a523196,0x39328aa4,0xb9fd9657,0x3ad9a292,0x3b04177a,0x3aa2bcc9,0xbaaee944,0xbb3e9078,0xbb8e46e9,0xbb5d6507,0xbb538e19,0xbbbd56e4,0xbbd24425,0xbc098b5c,0xbc2222cd,0xbc0998f0,0xbc26fcf4,0xbc2e73e4,0xbc2dc2a7,0xbc172345, +0xbc062fa7,0xbbe64304,0xbbbc8109,0xbb8edb74,0xbbb7e064,0xbbfea237,0xbc093584,0xbbe0c630,0xbb5340e6,0xbb0d5958,0xb895a5f8,0x3ab17aff,0x3b8836ad,0x3b6d6515,0x3b61bcf6,0x3b54d49a,0x3b2a58da,0x3b1764f6,0x3ac8c99a,0x3b2bdb21,0x3b6f2e16,0x3bb48f97,0x3b194778,0xb9dc2022,0xbb6317da, +0xbbb54820,0xbbfc2f24,0xbc187f95,0xbc241fcd,0xbc29d21b,0xbc35fd07,0xbc2f82fd,0xbc17cade,0xbc339fc1,0xbc296b87,0xbc214461,0xbc1689c7,0xbc0d04ab,0xbc0968c3,0xbbf687dc,0xbbe434c2,0xbbb8ae4a,0xbb93a9c4,0xbb849769,0xbb669d54,0xbb25619a,0xbab57ebb,0xb9fef271,0x39cfcdf2,0x3aaf1366, +0x3b25096e,0x3b85aa63,0x3b85d084,0x3b87e3ae,0x3b89e979,0x3b8d42e7,0x3b8634e6,0x3b8c346e,0x3b445c37,0x3b1c5e67,0x3ae0b6fa,0x3a8939d2,0x39ba01db,0xb9f307d8,0xbb166937,0xbb886ad8,0xbbbf2970,0xbbfa8ffa,0xbb6b717c,0xbb91d584,0xbb6ee559,0xbb5e79da,0xbb356d94,0xbb5d9675,0xbb386c2f, +0xbb01c240,0xbac5bc92,0xba979abb,0xba670720,0xb9f7e1aa,0xb9822d33,0xb87e7cf1,0xba14c845,0xba147f19,0x399405f5,0x39ba1fbb,0x3a05cd25,0x3a588db2,0x3a32be73,0x3a4657ca,0x3a523b77,0x3a4d300a,0x3a52a9a6,0x3a779432,0x3a106019,0x3936570e,0xb984731f,0xba316c4f,0xba8fbfa3,0xbab05130, +0xbaf00fed,0xbb108afc,0xbb2d6ddc,0xbb4c6169,0xba6a21ff,0xb8612a6c,0x3916ce44,0x3aa924ea,0x3a8d97d6,0x3a861e83,0x3a5b1008,0x3a35f0cd,0x3a84871e,0x3a36b012,0x3ab3b724,0x3ac70a07,0x3abcb8b7,0x3af3d887,0x3ae908ec,0x3acd7789,0x39d47d0d,0xb9809d72,0xb68dd077,0x3904a9b0,0x396f74b5, +0x3921747f,0x3a00ce73,0x39bf161d,0x38d0dd77,0xba301b33,0xba9afeb7,0xbaf10546,0xbabbde74,0xba8d1063,0xb840dc35,0xb9d7ef4f,0xb9a898b9,0x3951f1a3,0xba41704e,0xba78caa0,0xba6ed0e4,0xb9fa94f6,0xb943974a,0x3b0aa4f0,0x3abbfb5f,0x3a9d7e15,0x3a581c40,0x3b25787a,0x3b15e6ff,0x39d51bd3, +0x3af68604,0x3b1fcd72,0x3b2bbe64,0x3b606cb9,0x3b50aa56,0x3b3029e9,0x39f8136e,0xba451cdd,0xbab8425d,0xba1fb552,0x39d3f498,0x3a0274fd,0x3abdd9b4,0x3a95bcb5,0xb8a0eaeb,0xbb19df8f,0xbb800517,0xbb9dc7b4,0xbb80adbd,0xbb1c69c5,0x392ab81b,0xba052bd1,0xba0bea82,0x384f09ae,0xbb1f0a1e, +0xbb4624ce,0xbb1cd941,0xbab71706,0x3a9d6198,0x3beb8697,0x3ba5bd91,0x3b78555a,0x3adae537,0x3b7e036a,0x3b95af2e,0x3ac3fd33,0x3b9fff56,0x3bbab2cd,0x3bb79f07,0x3bf534d3,0x3be4ceab,0x3ba1e927,0x3ab168c6,0xba9badeb,0xbb29dc79,0xba20723f,0x3a4115be,0x3ab65744,0x3b4ade64,0x3b23c626, +0x39f1b55a,0xbb6f68a2,0xbbd6eeef,0xbc1431bf,0xbbf2e5e8,0xbbacfc5f,0xb9991408,0xbac2966d,0xba9c17e2,0x3a9df655,0xbb8bdda3,0xbba9c91b,0xbb801c75,0xbb157b91,0x3a325621,0x3bea1fe9,0x3b3e816f,0x3b332355,0x3b2e05f4,0x3c056142,0x3bed69f9,0x3b143451,0x3bb7fad8,0x3bcdeb2f,0x3beb50ea, +0x3c538af0,0x3c3f9c47,0x3bd91923,0x3b448846,0xb955f550,0xbb343a69,0xbacdaece,0x39ab1eef,0x3a9b2f9f,0x3b8be585,0x3b63e896,0xb9ead596,0xbbfac580,0xbc573479,0xbc702549,0xbc387538,0xbb985218,0x3b213fd2,0xba048139,0xba6bf3d5,0x3a87c9c0,0xbc080fde,0xbc29d8c8,0xbbc49ffe,0xbb4d1213, +0x3b3cf134,0x3c772c3c,0x3ca513e7,0x3c66a8f5,0xbac50cf5,0xbbd0c1b3,0xbb539e8a,0x3b583ef5,0x3bd3f320,0x3c4648d6,0x3c905e0c,0x3b9c4515,0x3a90b33e,0x3bcdaf3a,0x3b13496b,0x3b5dfb07,0x3bc9dde0,0x3bf2a9d9,0x3c002a76,0x3bc2818a,0x3baf51d0,0x3bbbd7f0,0x3bd6ba9c,0x3c06b47c,0x3bfe964a, +0x3baaf8fa,0xbc1de708,0xbc8b8420,0xbc9227d8,0xbbb7f061,0x3adaa82e,0xbb9206ed,0x3c31fa07,0x3c2522f1,0xbba79cba,0xbb1e6aff,0xbabdad23,0xbc85633d,0xbd11d9d7,0xbcbf72f2,0x3c962917,0x3c0c44e2,0x3baf5380,0x3bdff187,0x3b81601d,0x3b4b670e,0x3bd31fca,0x3c334914,0x3c20a025,0x3b624ca5, +0x3b8749fb,0x3b340483,0x3b1bfe3a,0x3a9bf231,0x3a91b512,0x3b297791,0x39d966e3,0x3b36deae,0x3c062080,0x3c19ac73,0x3be7b545,0x3b5d2773,0x3a479e66,0x3b332448,0x3c2b3a67,0xba679a5c,0xbbc7893e,0xbc104fce,0x3ac6b48c,0x3b972367,0x39eed1c6,0x3bc3ac5c,0x3c9dae7a,0x3caad876,0x3c9f2454, +0x3c817721,0x3c10f189,0x3bfc8861,0x3bd5e9cd,0x3a8e2543,0x3b87cca6,0x3b993a45,0x3b0d11fc,0x3b2a547e,0x3b4a989c,0x3ba80632,0x3af40616,0xbabdd115,0x3a2dce71,0xba08e1be,0xbab77bba,0xbad935e5,0xbb44fb0e,0xbb01ad6f,0xb977ec6f,0x39e3b893,0x3b4b7efa,0x3ba47ffb,0x3b633dd3,0x39a3ad25, +0x3b85f2a2,0xbc1015bf,0xbc3aa98d,0xbbc52658,0xbac1b8fe,0x3bbb3173,0x3c25a7c8,0x3c71f6a4,0xb9c9bbe6,0xbba50c74,0xbbdc8929,0xbbb94962,0xbb7d6f8f,0xba97de99,0xbaf3922d,0xbae901d1,0x3ae4b736,0x3b58ae20,0x3b26726a,0x3b987b7e,0x3b5e7ec2,0xb97873c4,0xba55e792,0xba87bd38,0x3929487f, +0xba12dc3c,0x3a2331d9,0x3b62beb5,0x3b8a75df,0x3ba0b665,0x3b995995,0x3b594727,0x3ac9b30a,0xbb2ed0ee,0xbba93ec9,0xbb1176e7,0x3c0b9b51,0x3b8366eb,0x3c13052a,0x3c997ee9,0x3c857bfc,0x3c4e8d83,0x3bc6d9a5,0x3b85a30a,0xbb0afcf8,0xbb5621c1,0xbbeecdbf,0xbc186216,0xbc183923,0xbc2a6459, +0xbc0c346d,0xbbdfabfc,0xbbb2b711,0xbb76ec4e,0xbb862f02,0xbb6a3341,0xbb596c0b,0xbb991fcf,0xba35ba9e,0x395a483e,0x3997b81a,0x38dd4ffa,0x3981e980,0x3a825559,0x3a2e373a,0x36e74625,0xba560c33,0x37995793,0x39ec03bc,0x3ac7f38c,0x3a850d52,0xb82f6fa0,0xbafbee6e,0xbba69cea,0xbc04415f, +0xbc551a3e,0xbbcb7607,0xbac7371b,0x39a17a0b,0xba824f96,0xbb9eb27b,0xbbab0e10,0xbbafc1e1,0xbbfadecf,0xbc5969c4,0xbc796f7d,0xbc87f3b9,0xbc85ee12,0xbc62b4d1,0xbc3dcced,0xbc24a5d3,0xbc2076fa,0xbc0bfe84,0xbbd76522,0xbb1da545,0x39ed4940,0x3b57ca80,0x3b1c21c0,0x3b07e156,0x3aeb84ef, +0x3a1baf0c,0xb926465b,0xbab2c6d3,0x394c13e5,0x3aab4af0,0x3b1aa345,0x389573f4,0xbad16be2,0xbb51fd27,0xbb382dd1,0xbafcd80e,0xbaf2b99c,0xbb3c1689,0xbb8e85b5,0xbb88e86e,0xbba36cb3,0xbbe41f43,0xbbea2115,0xbbfab469,0xbbd2f397,0xbbb4164c,0xbbb7a3b2,0xbbc18a43,0xbbc0b76b,0xbbf3a69a, +0xbc1d34c8,0xbc31360b,0xbc1b6747,0xbbd7339b,0xbbc221a3,0xbb060013,0x39ffa08b,0x3b93e16d,0x3b6eaab5,0x3b5564cd,0x3b45a59f,0x3b0716e4,0x3ac501e9,0x3a23a82c,0x3aaa4c0d,0x3adf5e2e,0x3b2bdce4,0x399610a5,0xbab809f8,0xbb4bf7ea,0xbbad47c3,0xbbfe5582,0xbc206dd8,0xbc1ba701,0xbc10ac1f, +0xbc0addfc,0xbc010c28,0xbc066711,0xbc1ecc6a,0xbc2dc4c8,0xbc21db0e,0xbc23af5f,0xbc1e56ee,0xbc19e52a,0xbc12ec89,0xbc029a2a,0xbbdaf0ef,0xbbb5792b,0xbba51c9c,0xbb91da54,0xbb7635b3,0xbb208048,0xbae5c507,0xba21670e,0x39e4b317,0x3b222af0,0x3b31760e,0x3b213c4e,0x3b27071c,0x3b1f716a, +0x3b19f1c5,0x3b071589,0x3b0470cf,0x3a9fe65b,0x3a49212c,0x39b5abef,0x3888c6aa,0xb7b40d30,0xb9e53fec,0xbaf42ea8,0xbb6e6136,0xbbabdad3,0xbbdec727,0xbb7a3ec0,0xbb8d9391,0xbb843c44,0xbb81dcd3,0xbb73f625,0xbb7723b6,0xbb6845e0,0xbb4f0156,0xbb35c632,0xbb229920,0xbb0ecfa9,0xbaebe347, +0xbac7845d,0xbaa6dbe7,0xbac31546,0xbac5e53b,0xb9d43a02,0xb9ef1aa2,0xb99d9b68,0xb9ca2bd9,0xb9c4649e,0xb9e96d1a,0xb9f6edf0,0xba0e7f1d,0xba17a6cf,0xba134393,0xba4b99c3,0xba81e571,0xbaa3bc3b,0xbac64d33,0xbaed4a20,0xbaf33754,0xbb1c179a,0xbb2e82b6,0xbb42f1fe,0xbb5d11fd,0xbaecd268, +0xba2c333e,0xb9e8033b,0x3a39df37,0x39f41e2e,0x39cd1d49,0x37b64097,0x38be0798,0x39c6d73b,0xb89ec5b1,0x3a4294bb,0x3a668da0,0x3a3df57f,0x3a86b57d,0x3a71c964,0x3a66f54d,0xb9b4a8b6,0xba6692be,0xba3aa136,0xba191783,0xb9e81fd4,0xb9b018f7,0xb7be991e,0xb943773d,0xba27c84a,0xbaad62ad, +0xbae700e0,0xbb1545e8,0xbae16397,0xbab77c32,0xba3d9fae,0xba7ad194,0xba6531b1,0xb99bb884,0xbab0d4ae,0xbaca5143,0xbaadac27,0xba891dd0,0xba5b04e5,0x3ac4728a,0x3a8fa090,0x3a181ce6,0xb99431c3,0x3b01a2a6,0x3afceeae,0xb97ba3ad,0x3ac25881,0x3b00e1a5,0x3b0959b3,0x3b2202d4,0x3b11e964, +0x3b130466,0xb9b6aa90,0xbacddbee,0xbb059b14,0xbabdeba2,0xb9cd516c,0xb7095fbe,0x3a7d11a0,0x3a0405f8,0xba9d82f2,0xbb51fc11,0xbb904bba,0xbba16da8,0xbb5f9243,0xbb02f80f,0xba138215,0xba898418,0xba984034,0xb9b4244c,0xbb4398aa,0xbb67e895,0xbb2cf85b,0xbb02a97b,0x397e56dc,0x3bd096a4, +0x3b980d93,0x3b5563ff,0x3a109642,0x3b641d9e,0x3b89fe8b,0x3a278745,0x3b9ab545,0x3bb3b3df,0x3ba30d77,0x3bc7750b,0x3bb47b1b,0x3b921ea4,0x396e37c8,0xbb0e95cc,0xbb48f54c,0xbad9aca3,0xb913e304,0x3a88dcb7,0x3b3a3543,0x3afda1a2,0xba91fd3d,0xbb9ef35f,0xbbf0ba8c,0xbc13e434,0xbbd07dbb, +0xbb8e6e2a,0xbaada585,0xbaf956c4,0xbafae0e5,0x3a5375e9,0xbba766fe,0xbbc27d88,0xbb74d2b3,0xbb43d742,0xb9e8f5a1,0x3bc9c9af,0x3b405b5c,0x3aff3050,0x3a7973ac,0x3c0c8e94,0x3c04eac0,0x3b157a9d,0x3bc2bd1a,0x3bd2f5bf,0x3beaf2eb,0x3c4e1ddc,0x3c3cba72,0x3be612c9,0x3b06f3aa,0xbaee1347, +0xbb8a2091,0xbb4a717c,0xba3c8164,0x3a898805,0x3b8bfa43,0x3b3af7c8,0xbb33cc0e,0xbc1704cf,0xbc5a47da,0xbc5cc20b,0xbc074744,0xbb18a82d,0x3abf11e4,0xba8930df,0xbadf418b,0x3a8981df,0xbc0adcd2,0xbc2521e1,0xbba85b5f,0xbb6698ef,0x3b25d942,0x3c702825,0x3cb043f6,0x3c887b0e,0x3a7cc626, +0xbc07ca7e,0xbbdb0eee,0x3af62e18,0x3b75dc95,0x3c2270e9,0x3c9d3b25,0x3ba6fa84,0x398a039c,0x3b95cd19,0x3acd961d,0x3b54c2f4,0x3bb55b3c,0x3be574db,0x3bf19c3b,0x3bb72485,0x3ba7a9ea,0x3baac6b4,0x3ba4b972,0x3beb7be5,0x3bb1c374,0xb9db7055,0xbc3583aa,0xbc88552b,0xbc8eb4c2,0xbb97d57b, +0x3aa4b82c,0xbbe0e501,0x3be5fd49,0x3bb545b8,0xbc20b761,0xbb89fc4c,0xbbdee364,0xbc7a3e04,0xbd1634dd,0xbcd3f5c0,0x3c89d006,0x3c24a017,0x3bd75022,0x3bb1132b,0x3b790808,0x3b603699,0x3ba286bc,0x3c29596c,0x3c218074,0x3b73ad30,0x3b4f1eee,0x3ada2dc5,0x3b2f9c5c,0x3affef72,0x3ad3dcf6, +0x3ada31fd,0xb9efffc5,0x3abe617f,0x3bad9502,0x3bfaf360,0x3bc22cad,0x3b1e2a46,0x39cde925,0x3b3bfbd7,0x3c3ad294,0xbb8b9f46,0xbc13c0bc,0xbbfddc75,0x3b334102,0x3bd1adad,0x3b8a070c,0x3b30c119,0x3ca1df69,0x3cccdb4f,0x3cc4e846,0x3c9c1514,0x3c12b976,0x3bc9d985,0x3bd1a756,0x3b80d6cc, +0x3baad1a3,0x3b9fe531,0x3b09ffa5,0x3b14cd9d,0x3b252617,0x3b904436,0x3b1ab890,0xb9ca646c,0x3a5e1550,0xb99c6583,0xbac6ab71,0xbb1cbfc8,0xbb2e2a13,0xbafbe1a8,0xbae20a35,0x3b3f6c0b,0x3bcb0426,0x3be58acf,0x3b8d5ee6,0xb8e91bb2,0x39a0b7dd,0xbc238621,0xbc3a1f13,0xbc08eb9c,0x3b93b3ff, +0x3c39fde9,0x3c1b2112,0x3c700011,0xbb7670aa,0xbc079d61,0xbc2bebde,0xbbec8988,0xbb147b42,0xb9d93134,0xbab5fa3f,0xba1cf7a7,0x3a800280,0x3b1bdee9,0x3b17af38,0x3b68b534,0x3b116c4f,0xba62ecc8,0xbaa3dc7a,0xbae5c479,0xba91e84d,0xb9df8bb9,0x3a3f6c66,0x3b1cb836,0x3b1d282f,0x3b679916, +0x3b85bae7,0x3b8f72d7,0x3b2c8b9a,0xbaf4e021,0xbb33ea8a,0x3a5abd7a,0x3c11a423,0x3c03cf6e,0x3c43e827,0x3c815f9b,0x3c7ee73e,0x3c415184,0x3bb86e8c,0x3aeb141b,0xba72fd3f,0x3a00eab8,0xbb7cc5e5,0xbbbb09de,0xbbd18a95,0xbbd36b43,0xbb9f2e69,0xbb89c508,0xbb8316b6,0xbb561362,0xbb9436b5, +0xbb984537,0xbb8d1047,0xbb8dfee3,0xbad6dddf,0xba056436,0x3a88ac5c,0x395989d2,0x39688c3e,0x3a6dd3c2,0x3af72c6f,0x3ad51c9f,0x39e1dcf7,0x3a217630,0x3a4db289,0x3ae603fa,0x3ad37d91,0x39ce889d,0xbb1235ff,0xbb4346c0,0xbb99c1da,0xbc1b2bf2,0xbba590b1,0xbb17214e,0xba17faf6,0xbadca2e6, +0xbb48ebfb,0xbb9079fe,0xbba8d922,0xbbff0136,0xbc6dafcf,0xbc84c308,0xbc8b8035,0xbc85266d,0xbc623309,0xbc3e781d,0xbc248430,0xbc142fc9,0xbc03ec4f,0xbbee01df,0xbb7ffb3b,0xba93bdfb,0x3b2d49df,0x3b06c071,0x3b03a2d6,0x3acd573a,0x3a7ced53,0x388ba669,0xbaa74603,0xba093ce7,0x39f6be50, +0x3b458d1d,0x3ac23b6a,0x38f51335,0xbaa31a96,0xbb0f1bd4,0xbace323f,0x3a0b68e4,0xba04b39e,0xbab314a3,0xba2a640a,0xbb0d63aa,0xbb8a7e4d,0xbb856d83,0xbba2f8e6,0xbb8c89d8,0xbb67706f,0xbb9e6e86,0xbbd4899c,0xbc00c9cb,0xbc158dba,0xbc2ed9c2,0xbc43e2a1,0xbc3436ba,0xbc184739,0xbc12b72d, +0xbb8bf29b,0xba755c99,0x3b67c132,0x3b35008e,0x3b2db0b8,0x3b2e4055,0x3ad68e66,0x3a902124,0x39bc6f11,0x396eff9c,0xb9100166,0xb98d3c02,0xbab9f51c,0xbb04a657,0xbb23a53d,0xbb8eaa0e,0xbbd38841,0xbc091b51,0xbbfb052b,0xbbd88f29,0xbbc1ab1b,0xbbac1a03,0xbbcc3122,0xbbe6c474,0xbc111ab3, +0xbc061c17,0xbc122bb3,0xbc0fbacb,0xbc0a1bad,0xbc0badc2,0xbbf0cc79,0xbbd50f1e,0xbbb93d85,0xbbaa961c,0xbb99a0c6,0xbb8fcb32,0xbb6074d8,0xbb521cea,0xbb1e45d5,0xbad7f3da,0x39898357,0xb98f66c9,0xb9ecd25d,0xb9ad0a94,0xb9d4d480,0xb9d7272d,0xb9fa442c,0xba080bb9,0xba5abed1,0xba97753f, +0xbab823b1,0xbabf83f3,0xbaab7b8e,0xbad03bfb,0xbb16a2e0,0xbb64d1ef,0xbb93e6d4,0xbbb13fcf,0xbb80aa9e,0xbb84ec3c,0xbb835d3d,0xbb826444,0xbb80316a,0xbb7d63a6,0xbb7805f5,0xbb7497ed,0xbb67b74b,0xbb59e016,0xbb480cc0,0xbb378fe2,0xbb26e5e1,0xbb14e9ea,0xbb22f7d9,0xbb2e199f,0xbaad176b, +0xbad25ca8,0xbacfe9a2,0xbafef9c6,0xbae9722f,0xbaf52b70,0xbaf799ff,0xbafebb2f,0xbb01f5bf,0xbb010b64,0xbb0c82e4,0xbb156988,0xbb204bce,0xbb2c4c3b,0xbb3940af,0xbb37e4ea,0xbb4e589a,0xbb5627d7,0xbb5e9d56,0xbb6d5882,0xbb4dccaa,0xba8dcfd5,0xba6e3d87,0x390b46b2,0xb7c9961c,0xb8b690ac, +0xba2ecb5a,0xb9c2bd13,0xb8ca3abc,0xba2ba000,0x39897e0a,0x39cfea69,0x395c23f6,0x39a8bd75,0x39524667,0x39c14a85,0xba601274,0xbaac83e4,0xba9a6c74,0xba8abe64,0xba6e8529,0xba38860f,0xba01de75,0xba32ed3b,0xba9fdc92,0xbae5f2dd,0xbb072cb7,0xbb1ce6fb,0xbae14ae9,0xbabee388,0xba94448b, +0xbaa9be77,0xbaa1b6bd,0xba2949a3,0xbae00fd7,0xbaf83254,0xbacf24e4,0xbabc8b08,0xbab399e3,0x3a4b1c88,0x3a24c1ff,0xb89cb7bf,0xbab6eac4,0x3ab1b80e,0x3acb354e,0xba2ed40b,0x3a9b428b,0x3acf83d9,0x3ae3df13,0x3ac9da65,0x3aa8517d,0x3af78187,0xba80742b,0xbb0b657d,0xbb1f1266,0xbb027f1a, +0xba81a821,0xb9dcb27e,0x399c2f96,0xb9963734,0xbb0a7a47,0xbb72eb22,0xbb9187d4,0xbb94fb97,0xbb2141df,0xbaa048d0,0xba61e4d0,0xbab12904,0xbad4dd28,0xba3a7bda,0xbb533e4d,0xbb723eb3,0xbb3316aa,0xbb1d4109,0xba4e8bcb,0x3ba4569a,0x3b7eb275,0x3b2dabc7,0xba4b3810,0x3b3dd52b,0x3b6ea9b1, +0xb8ffdd13,0x3b93b826,0x3babe68e,0x3b9265ae,0x3b932e46,0x3b7b1a8e,0x3b873033,0xba4314ae,0xbb3bea88,0xbb55519e,0xbb195d55,0xba562855,0x3a2f9f29,0x3b051653,0x3a6462ea,0xbb224866,0xbbb766a9,0xbbf019f4,0xbc0495b4,0xbb93f667,0xbb326df6,0xbac8c976,0xbb010ced,0xbb16abc9,0x39fce196, +0xbbac2103,0xbbc64215,0xbb64737a,0xbb6b06aa,0xbae1aa89,0x3b9a6bb5,0x3b17f786,0x3a2cb5c8,0xbab57027,0x3c0637e3,0x3c0cba8a,0x3b1280b6,0x3bcf7628,0x3bdc27c1,0x3be4811e,0x3c3b63af,0x3c2c7916,0x3be7ca63,0x3a65c4ae,0xbb498f67,0xbb9a76cf,0xbb7ff190,0xbad5263d,0x3a51a559,0x3b5847a8, +0x3ab066af,0xbb9a6bc3,0xbc249957,0xbc4c6b02,0xbc3a559c,0xbb8e74f6,0x3a5b2edb,0x3abf33c4,0xba9b3122,0xbb1af648,0x3a101b39,0xbc027e47,0xbc144a48,0xbb8f4671,0xbb833fae,0x3ae134fc,0x3c59332b,0x3cb39498,0x3c96e039,0x3b571a9c,0xbc1f5cfb,0xbc24662c,0xb983c511,0x3ac6147c,0x3bfd3732, +0x3c99df45,0x3ba3fec1,0xb976215c,0x3b40bab9,0x3aa24cb1,0x3b4a1d7d,0x3b8916ea,0x3bbe904b,0x3bd3e816,0x3bb31a42,0x3b964e78,0x3b8e236d,0x3b6b8edf,0x3bc01f35,0x3b505679,0xbb946003,0xbc3e7d2b,0xbc7eef2e,0xbc7e0cc4,0xbb50e521,0x3acc1628,0xbbe03854,0x3b7d145e,0x3a9c4866,0xbc528ed3, +0xbbc53a9f,0xbc381f66,0xbc86ba0a,0xbd0f1d2e,0xbcd4347b,0x3c3790a1,0x3c3361cb,0x3c0bc004,0x3ba945ca,0x3b61ef87,0x3b5823b3,0x3b705f90,0x3c184827,0x3c1bd137,0x3b8e4dc5,0x3b2d9348,0x3a8ce5ab,0x3b440776,0x3b3dcbe5,0x3b0a098c,0x3a32d5a7,0xba480472,0x3a166c8a,0x3b2dbfba,0x3bc53b33, +0x3b9ea3a0,0x3ad616ee,0xb962efaf,0x3b298f86,0x3c425245,0xbbbe21a5,0xbc23db13,0xbbc5e534,0x3b2645b4,0x3be40c43,0x3c05dee1,0x39678519,0x3c9af500,0x3cd36f2d,0x3cd40d56,0x3ca442cd,0x3bf04454,0x3b506e50,0x3ba86eae,0x3be302b0,0x3bccb72e,0x3ba744be,0x3b031249,0x3af0f3cb,0x3af3433f, +0x3b57162b,0x3b39c6e2,0x3a56578c,0x3a2e51ba,0xb9fdce38,0xbb06e2f1,0xbb3323d2,0xbaf7402b,0xbac0e75c,0xbaec2ebf,0x3b94f1e8,0x3c003ec8,0x3c09ac08,0x3bbeec24,0x39e690f0,0xbb81ea9b,0xbc16beb0,0xbc15ac62,0xbc2035fd,0x3c34b203,0x3c82a9d8,0x3bbf92f1,0x3c543dde,0xbbde70fb,0xbc217905, +0xbc54c6a9,0xbc0d3ccd,0xba7a00ab,0xb9c488a5,0xbaae8bee,0xb689a897,0xb91a818f,0x3a79fc0a,0x3ac856e0,0x3ae61676,0x3a20063e,0xba9ac0b1,0xbae3315a,0xbb280ee0,0xbb160004,0xb9c7e78d,0x3a4155c6,0x3a92d202,0x3a80a177,0x3b26a1fc,0x3b68fa74,0x3b93802e,0x3b44931f,0x39dd032f,0x38fc4868, +0x3b785df3,0x3c10c60e,0x3c3b09cc,0x3c5cc5b3,0x3c21efad,0x3c38cc6b,0x3c0a4398,0x3b98c2e3,0xba60a9cc,0x3a789279,0x3b97db3f,0x3938ce2d,0xbac854f5,0xbb06f451,0xbb1b2676,0xbac36782,0xbae2ec98,0xbb18947c,0xbb1306bc,0xbb7677e8,0xbba300dc,0xbb9ef2e6,0xbb70f6a8,0xbb2ac07a,0xba9e058a, +0x3ac94ac6,0x39374776,0x3922b886,0x3a4f0b07,0x3b1fb42a,0x3b2e3e40,0x3ad38ebe,0x3aa39a54,0x3a896160,0x3a9b23f4,0x3ab3d4e6,0x3910c083,0xbb435c0b,0xbb0234e7,0xbadced32,0xbb5d2d74,0xbb225b4a,0xbb122b89,0xba2fee66,0xbab315c5,0xbb184614,0xbb8a0162,0xbbd0d02c,0xbc17f6b0,0xbc78c7e6, +0xbc8a1f08,0xbc8a2021,0xbc7672c8,0xbc582ee1,0xbc3976c3,0xbc1feaac,0xbc05e22a,0xbbeeb1c8,0xbbe8ddfb,0xbb9e4373,0xbb28d325,0x3a7d3af1,0x3afaa843,0x3b239d05,0x3ae25382,0x3ac863d5,0x3a399f09,0xb954da4b,0xba1f78e7,0x391b6df9,0x3b4f2eee,0x3b0ca441,0x3aa06991,0x39361e21,0xba888aa9, +0xba9936aa,0x3a43ca8d,0x39f7643c,0x3925e1d7,0xb83631c3,0xba69692e,0xbb1044c9,0xbb00d281,0xbb3e39d5,0xbb366a59,0xbb12524a,0xbb8ffa0a,0xbbe4749a,0xbc1abffe,0xbc28b7e6,0xbc35f344,0xbc48a5d4,0xbc3aebb3,0xbc2e4e64,0xbc27498e,0xbbbd4e8f,0xbb0ce19b,0x3b011c0b,0x3abec79c,0x3ad1df58, +0x3b05415e,0x3aa451f9,0x3a49ee20,0x3980e7f1,0xb979d3d0,0xba80b833,0xbad9424c,0xbb019451,0xbafc9916,0xbaec8259,0xbb47db12,0xbb8ba2bf,0xbbb628e4,0xbb9c1bed,0xbb7a6f5d,0xbb4cb5e0,0xbb3858ac,0xbb9ba277,0xbba3b7af,0xbbd24679,0xbbc9d8ea,0xbbe3a098,0xbbe1151c,0xbbd0d4cc,0xbbd8a5fc, +0xbbb7d4e1,0xbbac9e80,0xbb9ede68,0xbb95a504,0xbb8cc7b1,0xbb8f4f4a,0xbb807b76,0xbb854dea,0xbb736d80,0xbb50a825,0xbb02468b,0xbb0f9b50,0xbb0f64f4,0xbb03ba1e,0xbafdbdc0,0xbaeece27,0xbad9299c,0xbacecbe4,0xbae5787c,0xbb09b8fd,0xbb19d582,0xbb1f7b6a,0xbb20ab2c,0xbb38a77d,0xbb482526, +0xbb70fe10,0xbb874496,0xbb91e5ba,0xbb864853,0xbb853981,0xbb860259,0xbb8444b1,0xbb8264b7,0xbb834180,0xbb82eba6,0xbb860fa1,0xbb86f5a8,0xbb846a2d,0xbb7e2213,0xbb7a7394,0xbb710cc6,0xbb656373,0xbb6d031b,0xbb7305d6,0xbb2ec522,0xbb3f2997,0xbb3fe0af,0xbb4bc5d3,0xbb4286b8,0xbb4440bf, +0xbb42e285,0xbb42852e,0xbb423dd5,0xbb3bfd32,0xbb4b4c8e,0xbb53fd72,0xbb5e9424,0xbb6a4dde,0xbb7403be,0xbb76244a,0xbb7d05dc,0xbb7ce6fa,0xbb7e0826,0xbb816ffb,0xbb935055,0xbaa3c28c,0xba95de9e,0xb998d2f8,0xb9b0e116,0xb9e228e1,0xbaa6906c,0xba27a2f6,0xb9ebea06,0xba8dd8a2,0xb9251994, +0xb7830619,0xb91d3c15,0xb9a45958,0xb9e6452a,0xb7e9a6e1,0xba98c69c,0xbac77fd8,0xbaccb525,0xbab29d00,0xba996564,0xba5c3f11,0xba560bda,0xba8329e3,0xbac28cf5,0xbaf9c8e7,0xbb07da7b,0xbb117d6e,0xbabe747f,0xbaa29e24,0xba9fa881,0xbab1dd87,0xbaae6eb1,0xba510dad,0xbae9e231,0xbb01074f, +0xbadb11fe,0xbacf2c65,0xbad6663f,0x3896003d,0x3950d70f,0xba03dd25,0xbb1545b0,0x3a479fff,0x3aa17711,0xba4118d8,0x3a8bbdb7,0x3ab31cb8,0x3ad3325d,0x3a500645,0x3a089c31,0x3ada1437,0xbab2baa3,0xbb1de1ba,0xbb2f967f,0xbb122d4c,0xbab5e5d7,0xba192cd5,0xb9ab73c1,0xba814335,0xbb27198b, +0xbb7c4cb5,0xbb878cc1,0xbb7b540c,0xbaa81562,0xb9626afa,0xba49fd29,0xbab17341,0xbaf01a2c,0xba7e4e6e,0xbb4ed371,0xbb65d782,0xbb306c04,0xbb2392fe,0xbac2ddbc,0x3b5d8722,0x3b4fa981,0x3b0d9100,0xbb08d40e,0x3b0e31bb,0x3b4114f5,0xba045682,0x3b8bbb66,0x3ba57ad8,0x3b8b9833,0x3b4b1c9e, +0x3b14d720,0x3b832102,0xbabae322,0xbb522e8c,0xbb5ff3ed,0xbb2f530b,0xbaa43d6a,0x39e380b8,0x3a8110eb,0xb9a56c28,0xbb50ec84,0xbbbf8b27,0xbbdc29e5,0xbbd9e3b2,0xbb195f3b,0xba40bd2c,0xba994e7e,0xbad61afe,0xbb15ac60,0x392d3506,0xbba21953,0xbbbb0008,0xbb61dde7,0xbb7878b8,0xbb24a41b, +0x3b3ab549,0x3ae56d1b,0xba0b591d,0xbb7c9796,0x3be4f821,0x3c0dc605,0x3b207324,0x3bdff541,0x3bebea42,0x3be27737,0x3c1ecca7,0x3c11b1c3,0x3be6a532,0xb995e346,0xbb7f25f6,0xbb9b3e33,0xbb84832f,0xbb07282d,0x3a5e4ea2,0x3af962d4,0xb9dd4f99,0xbbbd0de3,0xbc26fcea,0xbc35116e,0xbc1220fe, +0xb9b3a957,0x3b887b8b,0x3afe6f95,0xba6cba0d,0xbb379b61,0xb9bed239,0xbbeb33ee,0xbbf9e211,0xbb841103,0xbb86b8f3,0x3a67ace7,0x3c30562a,0x3cad1dab,0x3c9d84b0,0x3bae89ce,0xbc23b274,0xbc4c67ee,0xbb39084c,0xb8756b65,0x3bbdea08,0x3c87179f,0x3b9c6ac2,0xb95f3f64,0x3ab7b150,0x3aa60158, +0x3b4bd8f3,0x3b2b03b1,0x3b8da57b,0x3baac919,0x3ba79036,0x3b6c57cb,0x3b5551ff,0x3b2dde45,0x3b9978fa,0x3ac4bd7e,0xbbdbd7c6,0xbc3d0896,0xbc68621d,0xbc4fc71a,0xbacaad28,0x3b181e4a,0xbb917ca3,0x3ac424c8,0xbb23a848,0xbc5eed3e,0xbbe66a48,0xbc5b065f,0xbc8ea5ff,0xbd0344e8,0xbccdb783, +0x3b4b2e3e,0x3c365a77,0x3c32f309,0x3bc30e40,0x3b38cd27,0x3b21ed86,0x3b23e4db,0x3bfe6007,0x3c0c9c6e,0x3ba1d4d2,0x3b1fdcca,0x3a46319f,0x3b40d636,0x3b5ae524,0x3b0ddadb,0x39460abc,0xb9f1be4c,0x392089ea,0x3a0d28d4,0x3b7ae214,0x3b551e92,0x3ad5e24f,0xb9ed0bc9,0x3b284e5d,0x3c43739e, +0xbbd02039,0xbc27314d,0xbb7f9702,0x3ae0f12a,0x3be7935f,0x3c4bed7b,0xba64bac5,0x3c856927,0x3ccada56,0x3cc90ffa,0x3c994624,0x3ba0421a,0xba603a0c,0x3b248be6,0x3c10f2a2,0x3be66d3d,0x3baf9b0f,0x3ad25986,0x3ab6a540,0x3a9d41bc,0x3b021d26,0x3b5424f3,0x3b01893b,0x39e87925,0xba340efe, +0xbb126c96,0xbb199872,0xbaab2786,0xbaa146af,0xbace2b73,0x3baa6bc1,0x3c0af476,0x3c1dc38a,0x3beb1d45,0x3aa35cb6,0xbbd64a61,0xbbd76b83,0xbb952e4c,0xbbddeb5b,0x3c6b4e05,0x3c80174f,0x39d84c17,0x3c0dcbe6,0xbc0e97ea,0xbc339773,0xbc5db853,0xbc160280,0xba05d586,0xb98abf20,0xba6999d8, +0x396ef015,0xba842a02,0xb9b16175,0x3a114186,0xb903d5fa,0xba807661,0xba9e7133,0xbb1776f4,0xbb5eccc1,0xbb50c3ed,0xba30ce61,0x396a282e,0xba27399f,0xb9a63a57,0x3ac30be6,0x3b291c20,0x3b80b949,0x3b3f8366,0x3b3c8239,0x3b3a4f38,0x3bce8edd,0x3c11bdff,0x3c5d45a8,0x3c57c079,0x3b713fa9, +0x3bb2b048,0x3b8aaa50,0x3b3f8791,0xbb388e33,0x3b8cd4ef,0x3bf88734,0x3b682810,0x3b04f58c,0x3aee3c80,0x3a933997,0x3a8dd845,0x39a473b2,0xba6f4c87,0xba9858de,0xbb08220c,0xbb92acfd,0xbb9feabb,0xbb587cda,0xbb4dda28,0xbac928ae,0x3ab273a8,0x397728ce,0x39adfdd8,0x3a474b20,0x3b2ac1db, +0x3b49ebfb,0x3b22005c,0x3ae004bd,0x3a8363c0,0x39e4e4b5,0x3a1ac938,0xba4676b6,0xbb61d2e6,0xba98c32f,0x3a79d8ae,0x3b56f2e8,0x3aace63c,0xb9646d6b,0x3a7f03af,0x3ac8ea91,0xbb4907d5,0xbb9882bd,0xbc01c1d5,0xbc3529dd,0xbc7f5fc2,0xbc8ae5c4,0xbc842437,0xbc58155f,0xbc46de0c,0xbc2f4765, +0xbc16969c,0xbbee9787,0xbbcdc638,0xbbcc75e6,0xbbac183d,0xbb79bf08,0xba89b795,0x3adb6626,0x3b3e2ace,0x3b018026,0x3afb7f5f,0x3ab9fafd,0x3aa6666f,0xb9a91e28,0x39b10db5,0x3b2ecdfb,0x3b1e5cbc,0x3b095b8a,0x3a7658e4,0x38e9a753,0xba1707dc,0x39af794d,0x39d28829,0x392fa8e1,0xba9c57c0, +0xbabefe2f,0xba21b8b4,0xba0a22da,0xbadf81d4,0xbb11b7f8,0xbb11cd80,0xbb93e9d8,0xbbf0d124,0xbc277cc7,0xbc2f89a2,0xbc32b35f,0xbc4329f5,0xbc337b71,0xbc2fb121,0xbc233f7e,0xbbcf14e8,0xbb3e6374,0x399f9329,0x39ba3c03,0x3a5a6a82,0x3b02cf16,0x3ad1ed62,0x3a97a3ec,0x3a75430d,0x39b7d0ff, +0xba0a14f3,0xbacb85b6,0xbaaeb061,0xba77b79a,0xba083e99,0xba9bc24a,0xbada5e5b,0xbb1b80ea,0xbade6387,0xba8b2280,0xb9f5d078,0xba3462a4,0xbb7e8132,0xbb81155b,0xbb9fef8e,0xbb9612dc,0xbba7dd46,0xbba5178f,0xbb908275,0xbb90f34f,0xbb7873de,0xbb75d982,0xbb70d70c,0xbb68db40,0xbb676aa8, +0xbb7da740,0xbb7a4571,0xbb860a03,0xbb7dc304,0xbb5e1424,0xbb3fae9f,0xbb1e5495,0xbb1f6546,0xbb143b15,0xbb0e1d06,0xbb05adfa,0xbae96478,0xbad26d4c,0xbaeb394a,0xbb0facf9,0xbb1f6c43,0xbb2a5ac9,0xbb35c95b,0xbb4e34fd,0xbb54f7c5,0xbb6a3c37,0xbb7635ed,0xbb7b4707,0xbb7228bc,0xbb6990b2, +0xbb7f8f58,0xbb82dc48,0xbb886bd7,0xbb73b345,0xbb8263d3,0xbb8b7261,0xbb9117af,0xbb92ed29,0xbb919b22,0xbb9552bc,0xbb9499bc,0xbb93ad6d,0xbb89f4af,0xbb803d27,0xbb7982c9,0xbb6f0c6c,0xbb63d604,0xbb517a1d,0xbb51bea5,0xbb4ffa4a,0xbb4df7cd,0xbb4bdd1e,0xbb4b0765,0xbb43e2ff,0xbb51a2fd, +0xbb57c063,0xbb613136,0xbb6a62fd,0xbb70f51d,0xbb75224f,0xbb73af76,0xbb70a2db,0xbb6f61df,0xbb6ebf81,0xbb972b7f,0xbaa2e73d,0xba9d86fd,0xba0f59d8,0xba03e45e,0xba1c1857,0xbacfe123,0xba467e88,0xba2c5f02,0xba9d783b,0xb9c4949d,0xb969f921,0xb9748f44,0xba344a37,0xba550172,0xb951537e, +0xbaa765c4,0xbacd4636,0xbae5a590,0xbac3b670,0xbaa8dfdd,0xba6296b4,0xba82ff9a,0xba9a0139,0xbacc88be,0xbaf7c1e8,0xbafdc1db,0xbafc7465,0xba8f6c76,0xba6da7b9,0xba8c7d94,0xbaa33307,0xbaa88cec,0xba6dc6ef,0xbadef17c,0xbaf3c000,0xbacf09e0,0xbaca7c42,0xbaddeb54,0xb9fd03f3,0xb9042be6, +0xba315d31,0xbb30e378,0x39a7b652,0x3a814c9d,0xb9fb2cdb,0x3a883efc,0x3aa54963,0x3add6a28,0x39a1927a,0x37251bb6,0x3ac2eaa0,0xbac5274c,0xbb216771,0xbb3c24af,0xbb154c22,0xbac9f3a5,0xba2c4bf8,0xba627ae1,0xbaccf189,0xbb33d5f7,0xbb799764,0xbb72d4a2,0xbb473ea3,0xb950ea3d,0x3a3c2c99, +0xb9d52d84,0xba9e586c,0xbafa60d0,0xbaa7ced9,0xbb40ce35,0xbb4b860f,0xbb1c5385,0xbb1a87d1,0xbae08bb6,0x3aefdb42,0x3b2499a6,0x3af7ff1c,0xbb3d4f85,0x3ac57d58,0x3b14fc86,0xb9c62641,0x3b84553f,0x3ba064a5,0x3b916c43,0x3b0bed1c,0x3a91e4e9,0x3b81306d,0xbaea1565,0xbb54a06d,0xbb6ea78d, +0xbb392aba,0xbac71ef6,0x394c1e75,0xb8fae97b,0xbabca0b8,0xbb6d5706,0xbbbf6c9d,0xbbc27618,0xbbac49b7,0xb9b90177,0x3a939692,0xb9be0033,0xba8a9385,0xbb0cba0d,0xba04f930,0xbb92d0f0,0xbba6abf9,0xbb4ba208,0xbb6acaf8,0xbb2bb2c3,0x3a757506,0x3a9dcef6,0xba9680fb,0xbbb2cd12,0x3bb4d157, +0x3c08fedf,0x3b437265,0x3bf00780,0x3c005e25,0x3bed7af8,0x3c00dd3b,0x3be93f59,0x3be4be4e,0xba9c7210,0xbb8c2641,0xbb99e198,0xbb7ab356,0xbb02fb93,0x3a73a024,0x399b50d0,0xbb132955,0xbbd45877,0xbc23951b,0xbc1c2852,0xbbd9d6cf,0x3b48b679,0x3be260b9,0x3b35664f,0xb9f8ebc4,0xbb502371, +0xbaeb80c4,0xbbd38c75,0xbbc5b847,0xbb57ef1a,0xbb71b1b0,0x37f9b02c,0x3c00a001,0x3c9ba7cb,0x3c9a1e98,0x3be47c3f,0xbc170066,0xbc5f9b4d,0xbba97e48,0xba73aa37,0x3b8b6374,0x3c524c9f,0x3b99d88c,0x39b0e2f4,0xb91a295c,0x3acbe66a,0x3b58d1d1,0x3a924762,0x3b335f7f,0x3b68421d,0x3b82e296, +0x3b0e5cb9,0x3b09c5d4,0x3b0879de,0x3b5d7ceb,0x38910a12,0xbbf30af5,0xbc3b0bfc,0xbc5158f3,0xbc0d9f48,0x393fdc32,0x3b48ba22,0xba826d72,0xb8e89681,0xbbae80cc,0xbc5443a2,0xbbef3580,0xbc60572a,0xbc88653c,0xbceb18c0,0xbcc4f792,0xbbb0a081,0x3c2f8695,0x3c5c2013,0x3bef5982,0x3b07e2e4, +0x3a8e6759,0x3aa18d27,0x3bc395e0,0x3bf20f6f,0x3bb106ad,0x3b27029e,0x3a3f13c7,0x3b2af2c3,0x3b48bbe0,0x3af01c22,0x39ade3f4,0xb8f94487,0xb9a67184,0xbaafbe91,0x3a9eb853,0x3aaea8d6,0x3a8b5711,0xb8696c31,0x3b3a0d93,0x3c2dec1f,0xbbc96ece,0xbc1655fa,0xba3dae02,0x3aa1bbcd,0x3befa370, +0x3c8ab3c2,0xba88b4ee,0x3c4dca14,0x3cc3edaa,0x3cab2657,0x3c790211,0x3b07ac0d,0xbba270b3,0xba5dee8f,0x3c14dc4f,0x3bf0a8a9,0x3bb46c7b,0x3a8f16db,0x3a68161a,0x3a04be12,0x3a6f2081,0x3b62633c,0x3b3bc15a,0x395c6593,0xba2f761a,0xbaf5e58d,0xbad8e022,0xbaad79ca,0xbaa3dff7,0xba45d490, +0x3bb515cb,0x3c0c0752,0x3c1b63b0,0x3bf4e300,0x3af8525a,0xbbe2b36f,0xbb6581f4,0x39815519,0xba2743ae,0x3c433d7e,0x3c10057d,0xbbbddd47,0x3b1877b5,0xbc1baa16,0xbc44a8df,0xbc4cd087,0xbc08ab16,0xba567561,0x39668b4b,0x38ffa8fb,0x3a228fcb,0xba948825,0xba950dbd,0xb987a049,0xbad0689c, +0xbb0f8047,0xba919b8d,0xbb40c19f,0xbb8664bc,0xbb73c6da,0xbab6f198,0xba7a7b06,0xbb1ecb0a,0xbabd8806,0x39904f4a,0x3ace8de8,0x3b361e50,0x3b21e048,0x3b959ce3,0x3bbc5596,0x3c099bc3,0x3c0a34f3,0x3c6a08a2,0x3c407a2a,0xb928b212,0x39a0f51a,0x398f6ef9,0x3a41970f,0xbb82442e,0x3c0712d4, +0x3c191552,0x3bc1ba5d,0x3b8c6308,0x3b7aa5a2,0x3b521398,0x3b2098b4,0x3ac4f261,0x38aca2ab,0xb95a2caa,0xb94f0d9e,0xbb5a39c1,0xbb900b24,0xbb5925d3,0xbb58662e,0xbadc085c,0x3a0503e2,0x39c322f5,0x3a466544,0x3a57a206,0x3b2f1808,0x3b490646,0x3b25e1ce,0x3ae2f0aa,0x3a531e3d,0xb9534d8d, +0xba7bce22,0xbb0d4723,0xbb5e3d60,0x386026c1,0x3b6a9bc3,0x3c10503e,0x3bab839d,0x3b5705cc,0x3b9bffcc,0x3bcbe798,0xbba3fada,0xbbbf8caa,0xbc1b32d9,0xbc4a5ac0,0xbc7bc25d,0xbc8485f9,0xbc724ab6,0xbc378cd6,0xbc31a6f4,0xbc207c2c,0xbc079cc6,0xbbd4617f,0xbbae829d,0xbba8e318,0xbbb2256a, +0xbb9a5b1a,0xbb2f020a,0x3a8f876d,0x3b33c8c6,0x3b0eba4b,0x3b117f25,0x3b0828ee,0x3b2279f1,0x39b36cd1,0x3a242c1e,0x3b02fcd4,0x3b30b433,0x3b4aed5b,0x3b0b52de,0x3aaae04f,0x394005b9,0x397c98eb,0xb96ea15d,0xba4e6252,0xbb370efb,0xbb5bc229,0x396decdd,0x3944f330,0xbaad202b,0xbb29095b, +0xbb60bc94,0xbbad30b5,0xbbfedc4e,0xbc29de3e,0xbc2bf67a,0xbc283c71,0xbc357094,0xbc2143ad,0xbc20829a,0xbc0c8ba1,0xbbc7e258,0xbb5d11b6,0xbab6abd9,0xb9f8a3f1,0x3a27e471,0x3b2fac5d,0x3b2206ae,0x3b0a0b76,0x3b0b38d3,0x3abf3f58,0x3a2f675e,0xb9d77e18,0x37d865ab,0x39f31e6f,0x3a890b3b, +0x3a4df1df,0x3a4d17ed,0x3a175c2a,0x3a47c301,0x3a5ce17f,0x3a90bed6,0x3a19cac7,0xbb47aa3f,0xbb449255,0xbb7b4f4d,0xbb59eda4,0xbb716fee,0xbb6f0701,0xbb4d3bf0,0xbb4389e4,0xbb317bcf,0xbb34e3db,0xbb3bfdc3,0xbb37a366,0xbb3e672b,0xbb5a75af,0xbb621229,0xbb6c60ff,0xbb5a02bc,0xbb377816, +0xbb36e9b9,0xbaf4745d,0xbb03e1ff,0xbaf864e5,0xbaf660a2,0xbae883b7,0xbacb97a0,0xbab52075,0xbace9d40,0xbb003e89,0xbb11a5c5,0xbb20f867,0xbb32d24f,0xbb499efa,0xbb49152a,0xbb4cfbf5,0xbb4ef2d9,0xbb4bf45c,0xbb2580db,0xbb1493ea,0xbb42fb3f,0xbb56c64c,0xbb75f4d5,0xbb39f068,0xbb5e3110, +0xbb79e633,0xbb831150,0xbb8740f2,0xbb88270f,0xbb8f1b05,0xbb90ab48,0xbb933631,0xbb79c68e,0xbb50fb0a,0xbb7d8167,0xbb5b3e90,0xbb4445c1,0xbb19f58d,0xbb21f683,0xbb1f7e5a,0xbb1e9670,0xbb1d690c,0xbb1dd512,0xbb190a6d,0xbb233e4d,0xbb26d7f1,0xbb2d9a0f,0xbb338c79,0xbb37c6c1,0xbb3dd44d, +0xbb366e0f,0xbb31831a,0xbb2d102b,0xbb278d58,0xbb5b9b02,0xba942b16,0xba940c35,0xba2dbcfb,0xba0445dd,0xba11e877,0xbacc7e79,0xba36a205,0xba2c63aa,0xba876f6a,0xb9cc735d,0xb9759197,0xb8aeee58,0xba4d2e99,0xba6f6ccb,0xb94f6ca7,0xba9ab99f,0xbabe53f2,0xbae7efd4,0xbabe9f5c,0xbaa6496a, +0xba5f4b31,0xba8b83aa,0xbaa174e6,0xbaca6fd3,0xbae81e7a,0xbae220fa,0xbad1298f,0xba472f72,0xba170111,0xba527d88,0xba868f97,0xba9594d9,0xba8243ec,0xbac8ccc2,0xbad7da00,0xbab46e6a,0xbab57b71,0xbac9024b,0xba3aee19,0xb967e797,0xba1f951a,0xbb2755cb,0x38f5b048,0x3a60d31d,0xb7d6d2be, +0x3a875162,0x3aa05351,0x3afcd3af,0x38c478d5,0xb98007ff,0x3aad5539,0xbabbec4c,0xbb19179b,0xbb431fd4,0xbb13b328,0xbacdcffa,0xba49de06,0xbaaaed63,0xbb01da4f,0xbb3a502e,0xbb6d5b81,0xbb521147,0xbb130fd4,0x3a1b5d40,0x3ab474ac,0x38c1079a,0xba734376,0xbaefc3a8,0xbad3b9df,0xbb2ee793, +0xbb2c7c10,0xbafeaff2,0xbb0602ad,0xbad13ab5,0x3a484a7a,0x3b052e7e,0x3af10ce4,0xbb4089d7,0x3a9b1642,0x3aef01ee,0x3907b80d,0x3b7a8cca,0x3b99931f,0x3ba277e5,0x3acf27ba,0x39e2d69c,0x3b7bfea7,0xbaf1f3d3,0xbb48bb72,0xbb80144b,0xbb429dea,0xbae8730a,0xb91c0e25,0xba92e031,0xbb19e50e, +0xbb82ad30,0xbbb8a644,0xbba73f4d,0xbb838d2c,0x3a9268f1,0x3b239ce2,0x3a1a548a,0xb9aa7f4b,0xbaef55cc,0xbab5ffc8,0xbb828593,0xbb8fede1,0xbb26325b,0xbb4abd7d,0xbb0f6cc7,0xb8e54486,0x3a899299,0xba8fb004,0xbbc14f0c,0x3b8a3afa,0x3bff1cbc,0x3b70f526,0x3bfa096e,0x3c0ad18f,0x3c03049d, +0x3bcda5be,0x3bb5b026,0x3be209ba,0xbae94ab9,0xbb8d9044,0xbb9929e9,0xbb6c7ed3,0xbaf953eb,0x3a1579d9,0xbab6c1e2,0xbb808434,0xbbe87d84,0xbc1ad547,0xbc0271ef,0xbb933f32,0x3bb409c2,0x3c0cff4c,0x3b740870,0x38fbd206,0xbb5628f7,0xbb61ee3b,0xbbc1011d,0xbb96982b,0xbb1970e6,0xbb439ffa, +0xba50452c,0x3ba07989,0x3c824fa1,0x3c8f662f,0x3c0a36f6,0xbbf56008,0xbc5bd55a,0xbbdb5eee,0xbaad46a6,0x3b4c0407,0x3c0d2469,0x3ba0fafc,0x3ab051dc,0xbac7a5b1,0x3b01b833,0x3b649e7b,0xb9399921,0x3a9aa996,0x3ada0801,0x3b1d5e9d,0x3a65588c,0x3a9e1587,0x3ad8b0fe,0x3afc678f,0xbaa26571, +0xbbedef8a,0xbc3aa4cb,0xbc3c81d2,0xbb8666a4,0x3afa2a74,0x3b80983a,0x3b2502b1,0xba8daaff,0xbbebb74b,0xbc3b8275,0xbbe4873b,0xbc4f97bc,0xbc621450,0xbcc8c8fe,0xbcb6aa31,0xbc4e6e9b,0x3c160fa9,0x3c793e54,0x3c1317e4,0x3ae0e68f,0xb9a02b2d,0xb95c873f,0x3b8716f6,0x3bc977c6,0x3bb76f71, +0x3b3c8118,0x3a79a7c7,0x3b13eecb,0x3b0fb0a8,0x3a97d11c,0x3a0cfb25,0xb8cfd0c5,0xba2c66c5,0xbb10c65f,0xba4446a3,0xb99483bf,0x38a214a9,0x3a202e66,0x3b4578c4,0x3c045b70,0xbbbf4b08,0xbbfe50e3,0x3b37c64f,0x3acaf6ea,0x3c055c7e,0x3caa318a,0xba1fb3bf,0x3c0fa574,0x3cc13090,0x3c8098fd, +0x3c20fabb,0xba0b41a1,0xbc0125b1,0xbb788089,0x3bf80cbc,0x3be6abdd,0x3bb479d4,0x3a33314e,0x399b133e,0xb95dba57,0x399c16bb,0x3b5c20a9,0x3b5e1656,0x38fcb777,0xb9768382,0xba80d245,0xba481952,0xbac039bf,0xba9a93b2,0x3a113df3,0x3bb06b23,0x3bfdf995,0x3c066582,0x3bdcad4b,0x3b0dfdfb, +0xbbb29ca2,0xba9faa0e,0x3b7f5da8,0x3c02592f,0x3bb60445,0xbb15dde5,0xbc42ff55,0xbb81ea6c,0xbc1ab585,0xbc4c95fb,0xbc29ef3d,0xbbd18efa,0xba97aed2,0x3a6ec8e3,0x3aa913a2,0x3a70428a,0xba2c2346,0xbabf20ec,0xba4c715a,0xbb205d03,0xbb3b8432,0xba940ccf,0xbb5e962c,0xbb9230ab,0xbb80c37e, +0xbb19b2f3,0xbb16fec5,0xbb6c100d,0xbb1c2589,0xba83de08,0x3a02c650,0x3a9e3fee,0x3b09581e,0x3bc16cc3,0x3c0a36ec,0x3c261e40,0x3c05b370,0x3c5d488d,0x3c1de619,0xba307ddc,0xbb494f97,0xbb314844,0xba983967,0xbb949650,0x3c3e497c,0x3c265a2d,0x3bedf1f4,0x3bae1d27,0x3b9c5c5b,0x3b80142b, +0x3b319d40,0x3ae082a1,0x3a1e7781,0x3a02fe69,0x3aadc122,0xbae3a611,0xbb5d27a6,0xbb60fa0e,0xbb586802,0xbafcf89b,0xba328b1c,0x39a61224,0x3a8e5116,0x3a7e29ef,0x3b2352e1,0x3b314327,0x3b08e4fa,0x3ac8b2e3,0x3a1b898e,0xba8b6493,0xbb2452d3,0xbb38251f,0xbb1b2d46,0x3b0e6905,0x3bcb3099, +0x3c41e9a1,0x3c06c582,0x3be97f50,0x3c1c5613,0x3c34c411,0xbbddc78d,0xbbdc87db,0xbc310000,0xbc587c87,0xbc712c2f,0xbc6cdd9c,0xbc4de0f5,0xbc163d8c,0xbc18e28d,0xbc0ce6b7,0xbbe8a5e5,0xbbbdb12b,0xbb983eb2,0xbb8d91a4,0xbbae7cbb,0xbba4fa1c,0xbb779893,0x390cca59,0x3b04726e,0x3b1c30a3, +0x3b250a24,0x3b2a5b59,0x3b4ae979,0x3ab9e1e1,0x3a9a2c94,0x3af29b7a,0x3b494ffa,0x3b76a62d,0x3b57949f,0x3b1e3273,0x3a983a11,0x3a128609,0xba16716e,0xbae7133b,0xbb8866dd,0xbbad72ee,0x39896174,0x38b7f1e5,0xbacdbc80,0xbb55814c,0xbb9f5f4e,0xbbccb805,0xbc07abac,0xbc295846,0xbc252a78, +0xbc1bd9c9,0xbc2381fe,0xbc090c1a,0xbc057955,0xbbd3ef72,0xbbaded3d,0xbb69195e,0xbb347138,0xba8b08fa,0x3a4791ce,0x3b536dd8,0x3b40d8e0,0x3b372a9e,0x3b3e416c,0x3b193b19,0x3af1df8e,0x3a9057df,0x3ac5768c,0x3af72dde,0x3b265486,0x3b1f117e,0x3b28aefe,0x3b27bfad,0x3b0c4aca,0x3adbf9f0, +0x3ac6123b,0x3a72a972,0xbb123a25,0xbb081391,0xbb3918ab,0xbb1d5b8f,0xbb2e1901,0xbb3319f8,0xbb207a18,0xbb1b2bd3,0xbb13d61a,0xbb152025,0xbb204467,0xbb18f22e,0xbb21f8ac,0xbb38d88a,0xbb3fcac0,0xbb38c343,0xbb220444,0xbaff71fd,0xbb0b9213,0xba87c50f,0xbaa5df43,0xbaa1dfd8,0xbaaaaa51, +0xbaa579b4,0xba99a14c,0xba910e6b,0xbaa7f2e7,0xbad59794,0xbb0176de,0xbb153253,0xbb298f14,0xbb3b7304,0xbb31b364,0xbb26afbc,0xbb20ddb1,0xbb1a6e6e,0xba934126,0xba50c6f4,0xbacf1479,0xbb012b04,0xbb2a68ec,0xbadb482a,0xbb1741a9,0xbb3959bc,0xbb40c056,0xbb48f987,0xbb4a0f30,0xbb58d92d, +0xbb5be4fe,0xbb61efe8,0xbb2a174f,0xbafca8c9,0xbb3c66b0,0xbb104283,0xbaef34db,0xba913f17,0xbaa99ea5,0xbaa7630b,0xbaa97064,0xbaaa7b79,0xbaadb881,0xbaa9ad2c,0xbabb3a54,0xbac1681b,0xbac91505,0xbacf40f6,0xbad6ba64,0xbae9ff65,0xbad32643,0xbac6683e,0xbab68987,0xbaa1e360,0xbace618a, +0xba75036d,0xba78f4d6,0xba231305,0xb9ec5788,0xba020244,0xbab79a47,0xba0b6e27,0xba1a0f84,0xba58e379,0xb9d22248,0xb97b71e2,0x38b24933,0xba4d3477,0xba731f64,0xb96055de,0xba8747de,0xbaa4c445,0xbae9d983,0xbab8a717,0xba9ef9fe,0xba4c84be,0xba86f541,0xba9a1678,0xbabad5e5,0xbacaa6bf, +0xbabbdc2c,0xba9c19f1,0xb9f0f30a,0xb992c518,0xba00c97d,0xba40b5b7,0xba6febfb,0xba8561e1,0xbaacd856,0xbab69d11,0xba9684c2,0xba956417,0xba931f2c,0xba205fa9,0xb914b651,0xb99d5625,0xbb04f8e1,0x3909ba69,0x3a601edb,0x39eae8ff,0x3a882bd9,0x3a9d5877,0x3b0bd911,0x388d26c6,0xb99834d4, +0x3a91a983,0xba9ffe4a,0xbb0804ea,0xbb480b68,0xbb13c9a6,0xbadeaf22,0xba7ad785,0xbad6aed6,0xbb11c8b0,0xbb386044,0xbb569da6,0xbb2ad0be,0xbab0a417,0x3a9556d3,0x3ae55356,0x3a0ed853,0xba0e2ae5,0xbacd06f8,0xbaf0578e,0xbb1c9eb2,0xbb0f3c76,0xbac42b9c,0xbacca56e,0xba99deaf,0x3962ae6b, +0x3adb0679,0x3af151d6,0xbb23ef76,0x3a9b9085,0x3ad68b22,0x3a41193d,0x3b687ae2,0x3b8f26ed,0x3bb423f2,0x3ab5f41f,0x393317d2,0x3b6a4e38,0xbad6d0a3,0xbb30652d,0xbb8b82a9,0xbb511753,0xbb0c0d75,0xba215a66,0xbafe5636,0xbb435c41,0xbb86f66e,0xbba8b89c,0xbb87f2eb,0xbb2954f2,0x3b05cb0a, +0x3b5598cd,0x3ab1615d,0x39e301d5,0xbab277a1,0xbb0dd39b,0xbb6cce2b,0xbb7bc984,0xbb073f27,0xbb1d4541,0xba905d30,0xb8ec4106,0x3abc5dc3,0xb9f471e9,0xbbb0dde7,0x3b5999ab,0x3beaea33,0x3b8f9204,0x3bfe6b7b,0x3c140ebb,0x3c123c5e,0x3ba5d74e,0x3b8de378,0x3bdbdf11,0xbafcd5b5,0xbb8479f2, +0xbb9f84f9,0xbb70c54e,0xbb12f033,0xb9c9ae0f,0xbb498b07,0xbbae2d60,0xbbf31538,0xbc0cf7d9,0xbbcc401b,0xbafed10e,0x3be74506,0x3c15a37b,0x3b8c610b,0x3a487afd,0xbb42572b,0xbb9a5187,0xbbb4022a,0xbb67f0ab,0xbabab959,0xbaf6e57e,0xbad538ee,0x3ae72780,0x3c428f22,0x3c7712cb,0x3c190be3, +0xbbaedec6,0xbc46234b,0xbbef6fcd,0xbad8aab0,0x3b10946f,0x3b9ced74,0x3bb304dd,0x3b32278f,0xbb21fb0f,0x3b199c61,0x3b6488d7,0xba84eacd,0xb8e7a6af,0x36c45964,0x3a826320,0x398342cd,0x3a7f60dd,0x3acfd166,0x3a882ca1,0xbb04baee,0xbbe8b9cc,0xbc3a7465,0xbc2722d0,0x398f1604,0x3b6a9770, +0x3b9ac56f,0x3ba4a754,0xbb0796d1,0xbc0e0d81,0xbc21f092,0xbbd4ff6a,0xbc321096,0xbc1b8fa2,0xbca0c3d4,0xbca1bf03,0xbc87f0b6,0x3bd1c4b2,0x3c77963a,0x3c2948fc,0x3afa5610,0xbaa12e63,0xbae08381,0x3b16e06b,0x3b9e3f12,0x3baf6b7d,0x3b4e937a,0x3a996321,0x3b028f10,0x3a723dee,0x38036686, +0xb704b835,0xba311a25,0xba9299c1,0xbb1b3ba5,0xbb19ca8e,0xbadca71f,0xba593dd4,0x3b06182b,0x3b7d8ffa,0x3bab8f42,0xbbbb64a5,0xbbda2251,0x3bacb890,0x3b30a0cb,0x3c1ef7ff,0x3cbeab18,0x39611477,0x3bb5e930,0x3cc04cf2,0x3c238fee,0x3b7bf876,0xbb11a981,0xbc10323b,0xbbaee185,0x3b9af203, +0x3bc3ab62,0x3bab2fa6,0x39f995e8,0xb995a8ab,0xba633de7,0x38b7c685,0x3b3cb94f,0x3b65cda4,0x39c0a83d,0x3a0b53e6,0x3947732e,0x39bfd478,0xba99f068,0xba41d50f,0x3b030ed2,0x3b9def72,0x3bd5d84a,0x3bdeaa7b,0x3bb21077,0x3b0aa880,0xbb2d87ff,0x3736a42a,0x3bca3119,0x3c88d288,0xbac4f797, +0xbc586df1,0xbc8d9628,0xbc12d47b,0xbc1418ba,0xbc4d1a02,0xbbfae654,0xbb7cec07,0xba9eaabf,0x3ab1c29c,0x3b02abb5,0x3a60e86a,0xb87a775d,0xbacc5a18,0xba906e11,0xbb33c7b6,0xbb422406,0xbaa0b430,0xbb62f72c,0xbb8f62c8,0xbb823faa,0xbb5594b6,0xbb6314ed,0xbb87fb8f,0xbb5b0dde,0xbb204363, +0xba74a970,0xb9802f83,0x3b116940,0x3bde9717,0x3c24f9f3,0x3c378eaa,0x3c0d0f77,0x3c3e60cd,0x3beda361,0x3a980825,0xbb8333b1,0xbb791bcd,0xbb2c3732,0xbb9c64ba,0x3c592d29,0x3c137c72,0x3bf38a8b,0x3bb2b1df,0x3bad0b00,0x3b8563f1,0x3b296eef,0x3aabef6c,0x3a335cb1,0x3a6ae6e3,0x3b13dd18, +0x386b0f41,0xbafe484e,0xbb61f44f,0xbb597c43,0xbb1dfd6a,0xbae8066e,0xb6db29d4,0x3a8efee8,0x3a9e8954,0x3b0da5f2,0x3b1857a1,0x3b006423,0x3aa88c35,0x3905205e,0xbb074912,0xbb3e3b5b,0xbb0770a6,0xb994da87,0x3b8e9e9d,0x3c00b72a,0x3c49b02f,0x3c223dd8,0x3c25057a,0x3c55255c,0x3c6af92a, +0xbbed05ca,0xbbe6ec5a,0xbc39b2bf,0xbc5b34ef,0xbc5eadf3,0xbc430896,0xbc1bfe5f,0xbbe624ff,0xbbf41096,0xbbe8015f,0xbbbdc75c,0xbbaa81d2,0xbb8ba1dc,0xbb7f8241,0xbb9cb16c,0xbb9c7445,0xbb94c5fa,0xba8ba89c,0x3a8193f0,0x3b1b1530,0x3b2a46db,0x3b3df234,0x3b56a06e,0x3b1f96be,0x3b02927c, +0x3b0882e5,0x3b545dd1,0x3b73f661,0x3b78dbda,0x3b409e99,0x3af4201d,0x3a80a873,0xb9ed4be6,0xbb052e98,0xbb984835,0xbbc1ed53,0xb9921905,0xba0a6f8c,0xbb14be9e,0xbb8535c9,0xbbcd27b0,0xbbed1580,0xbc101052,0xbc2817ea,0xbc1dcd56,0xbc0f0275,0xbc0f58ff,0xbbe1c0bf,0xbbcfda22,0xbb92b789, +0xbb8d6c6b,0xbb63cfac,0xbb62b2f8,0xbabf3c8a,0x3a1f0ebf,0x3b381a37,0x3b284176,0x3b369e1d,0x3b46396e,0x3b3a7414,0x3b3313ad,0x3b2182ff,0x3b2e1d36,0x3b3d3ad8,0x3b5ed899,0x3b5b2063,0x3b610cee,0x3b5afd40,0x3b1b1acd,0x3ac45299,0x3a81f7e3,0x39fc24d4,0xbac88f22,0xbaabd6ba,0xbaffc2c3, +0xbae9bf61,0xbb0109ca,0xbb0aa8b7,0xbb07f31c,0xbb0eb158,0xbb06d3c0,0xbb02b661,0xbb0c172f,0xbb00a0f0,0xbb084a72,0xbb141f0e,0xbb122cfb,0xbaeeea84,0xbabcff41,0xba7976a6,0xba8e1002,0x38e47aab,0xb913a204,0xb977363f,0xb9c47af3,0xb9f8fd25,0xba0e661e,0xba192a42,0xba55ed1f,0xba99bc2b, +0xbad328a0,0xbb02b337,0xbb182b49,0xbb22ea8d,0xbb0f6813,0xbaf5098e,0xbae1db7f,0xbad8968e,0xb912c5f0,0x393d9de6,0xb9dbd0d5,0xba4720a1,0xbaaa6f2c,0xba51c52e,0xbaaa48a3,0xbae91032,0xbaeadad6,0xbaf5cc9a,0xbaf0b52f,0xbb031b8c,0xbb02e796,0xbb058a3e,0xbaa901eb,0xba51a415,0xbac7342a, +0xba7463db,0xba2d4aa1,0xb8b151ae,0xb9a62bd9,0xb9adc6d7,0xb9c8a910,0xb9d6d4d3,0xb9ede466,0xb9f84215,0xba1ba696,0xba27cfc3,0xba2e1c43,0xba31cfc1,0xba41c449,0xba787fe2,0xba49d17f,0xba30dea9,0xba082d53,0xb9a0b949,0xb9adf3c7,0xba45e8f2,0xba45827d,0xba0ea698,0xb9c6faab,0xb9cb4a3e, +0xba8e9f3c,0xb9be6b3a,0xb9efe928,0xba1142e8,0xb9b28e9d,0xb937e254,0x398ba8f6,0xba2660c4,0xba4f4e74,0xb9460a90,0xba58575d,0xba87407b,0xbadfd9b5,0xbaac162e,0xba9664df,0xba455335,0xba829f57,0xba91b4af,0xbaa81dfe,0xbaacad3a,0xba970325,0xba4eb785,0xb9818ad2,0xb8b707cb,0xb98c3e2d, +0xb9fd6cdd,0xba398b91,0xba838489,0xba98e569,0xba9f10d9,0xba7d3c30,0xba6ef037,0xba2050ef,0xb9b0fbf0,0x390ee756,0x390207dc,0xbaa8ab31,0x399bf4bf,0x3a6fa2ba,0x3a644194,0x3a826a3b,0x3a8f0a69,0x3b0cbddd,0x38d1c61b,0xb972caa7,0x3a53b415,0xba69edee,0xbadf44af,0xbb4ae47e,0xbb158c98, +0xbaf3b92f,0xbaa4b5e1,0xbb0081ec,0xbb1da23c,0xbb31aa9e,0xbb3caf9c,0xbb03d2d8,0xb9ea7be0,0x3ac09676,0x3af34009,0x3a4942ed,0xb9642e33,0xbaa5470f,0xbafc668e,0xbb138f1e,0xbafcb987,0xba92e8cd,0xba88684a,0xba19f022,0x37996ea8,0x3abb519e,0x3af1ed85,0xbadf3f5b,0x3ab78209,0x3ad41bcc, +0x3ab25470,0x3b4fd8bf,0x3b7bcfac,0x3bbb5a26,0x3ab39330,0x3973ba40,0x3b473d19,0xba9b9d31,0xbb0b419e,0xbb960384,0xbb5d581f,0xbb26c815,0xbaa028f6,0xbb312479,0xbb63ae2c,0xbb845c4d,0xbb94e2f4,0xbb50efbb,0xba835a2a,0x3b2640c9,0x3b641eb9,0x3adbb027,0x3a87f493,0xba68cba4,0xbb2cccf2, +0xbb65db6c,0xbb6d14e8,0xbadd0c35,0xbad8fa25,0x39c4ce6a,0x3a1cdabe,0x3b149e44,0x3a2354c9,0xbb839b41,0x3b42279e,0x3bdbfbc2,0x3ba91a58,0x3bff1301,0x3c19dc95,0x3c1f22a3,0x3b8af48b,0x3b63ebb5,0x3bcd5ea4,0xbad25587,0xbb61af18,0xbbaf4c3d,0xbb849206,0xbb442943,0xbae6e15b,0xbb9bf31e, +0xbbd45b07,0xbbf2d107,0xbbf91868,0xbb92c0eb,0x3a685dd7,0x3c02c7ee,0x3c0efe1e,0x3b875a1c,0x3aa168a6,0xbb1cac73,0xbbaf4124,0xbbb1e43a,0xbb480095,0xba07780c,0xb9f5876a,0xbb37b818,0xbab9a242,0x3be6b623,0x3c39fde2,0x3c1c83bf,0xbb4c9fb8,0xbc25ff5c,0xbbf2cdf7,0xbb1468c5,0x3aad567b, +0x3afcff6c,0x3bcc2651,0x3b8be5e8,0xbb3f80d4,0x3b223edb,0x3b546193,0xba90d492,0xba7182f0,0xba8c252d,0x3860d3be,0x398f8719,0x3aaa50dc,0x3ad0ea78,0x3a3e9b36,0xbb15732f,0xbbedcefd,0xbc35571e,0xbc0d3c80,0x3b8044f7,0x3b9ce632,0x3ba5e2d6,0x3bcb4992,0xbb48b872,0xbc21015a,0xbc1b2051, +0xbbd4d34e,0xbc0b481b,0xbba22a6b,0xbc699ac2,0xbc87aa3d,0xbc903165,0x3b53f01e,0x3c57ac81,0x3c2dd09d,0x3b1e5d6e,0xbacb66db,0xbb4b3d14,0x3a160764,0x3b6360a6,0x3b9c06e8,0x3b51f480,0x3aa3760a,0x3aeeaeeb,0xba0c832d,0xbac4a551,0xbaac902a,0xbadac1a5,0xbaedf6be,0xbb2c601b,0xbb724fde, +0xbb3965ff,0xbafe8402,0x3b8be4e0,0x3bb66b30,0x3b2a87c1,0xbbb1ffab,0xbbb14673,0x3bdf319c,0x3b922414,0x3c3ac741,0x3cc3d904,0x3ab257a7,0x3abcd5de,0x3cb32e45,0x3b9abb51,0xbadd8918,0xbb266121,0xbc02c2f5,0xbbb2417f,0x3ab2716c,0x3b873acc,0x3b914d84,0x3a14deb1,0xba4937ab,0xbab531f2, +0x390770a4,0x3b0d79e0,0x3b5183aa,0x3a483837,0x3a9d6523,0x3a9e6ca4,0x3ac09895,0xba00d99c,0x38929dd6,0x3b572435,0x3b936ecb,0x3bb7b316,0x3bafa669,0x3b6c239c,0x3adce755,0x3a1f88c0,0x3a870f24,0x3be7c273,0x3cb01cbd,0xbbf049c9,0xbcac70ac,0xbca71e7c,0xbc51382c,0xbc0026af,0xbc3e9a67, +0xbba9bb8a,0xbac0f6cf,0xba09d944,0x3aa984f8,0x3af6d5ec,0x3a2e6527,0x39af575c,0xbadad517,0xbab9ecaf,0xbb294ff1,0xbb2752d9,0xbab0f475,0xbb4ef276,0xbb816fe3,0xbb81ac13,0xbb84d077,0xbb8fb85c,0xbb8e4510,0xbb8c3ae0,0xbb798b5e,0xbb20f4c3,0xbab175f7,0x3b20451d,0x3beb5f5b,0x3c2ce83a, +0x3c3be84a,0x3c1d9afe,0x3c1b4ad6,0x3ba54004,0x3b5efc26,0xbb3220ce,0xbb3cd11d,0xbb5a6143,0xbb8857d1,0x3c458754,0x3bb464d8,0x3bc78090,0x3b98ca15,0x3ba37bd6,0x3b8eba9d,0x3b386af1,0x3a80bb5d,0x3a25ba1e,0x3a8e234c,0x3b2cfa76,0x3ada4ff6,0xb9eb28e1,0xbb591bd9,0xbb5d04b6,0xbb48afff, +0xbb30b571,0xb9fc20eb,0x3a7aac37,0x3acbe525,0x3af9c825,0x3b0713a2,0x3b07da50,0x3aa65f45,0xb936d7a9,0xbb181b93,0xbb0bee60,0xb9ee3602,0x3b26a5b6,0x3bc377ba,0x3c0c73f4,0x3c3daee9,0x3c2d237e,0x3c3ecb76,0x3c641987,0x3c7260c8,0xbbc67d5b,0xbbe25866,0xbc2736ee,0xbc420793,0xbc3f3317, +0xbc10274f,0xbbcac332,0xbb9c6229,0xbba87eed,0xbbaa1653,0xbb8fe17b,0xbb9ac859,0xbb8749c1,0xbb7a332f,0xbb828262,0xbb88b244,0xbba1b91d,0xbb180e0a,0xb99cfc3c,0x3ae2e196,0x3b10332a,0x3b3734cf,0x3b427f3c,0x3b39c732,0x3b2a8df5,0x3b112479,0x3b3f283d,0x3b4a03c6,0x3b702b10,0x3b3ee368, +0x3b10ff69,0x3ab7fde5,0x38cd49b9,0xbab0247d,0xbb6db082,0xbb97f863,0xba923835,0xbaae294c,0xbb51fa26,0xbba4b912,0xbbf8299c,0xbc04d628,0xbc155e24,0xbc23a42e,0xbc142589,0xbc013d73,0xbbf335ac,0xbbb9e1de,0xbba0e603,0xbb582529,0xbb67e509,0xbb55fe77,0xbb64cdfc,0xbad461ae,0x39399321, +0x3aea12aa,0x3aed07ef,0x3b1cc311,0x3b3b5e18,0x3b45ad17,0x3b4f046b,0x3b542bb9,0x3b572d5e,0x3b5fdcef,0x3b755a79,0x3b66d7a2,0x3b5ab9c5,0x3b405c36,0x3ad6dbd7,0x3a1276ee,0xb905ff0f,0xba05fac4,0xba7a1093,0xba4992d7,0xbaa22a8a,0xbab21f75,0xbac2ee8c,0xbada5282,0xbaf5c8b8,0xbb0e3c61, +0xbb04c678,0xbaf6afed,0xbafc7489,0xbae6d3ff,0xbaee427d,0xbaedcbe9,0xbac70d59,0xba6a3773,0xb9f963f0,0x35cafc23,0x39249251,0x3a9f2799,0x3a7a5826,0x3a44b512,0x3a12c872,0x39b0268b,0x3921d6e7,0x37fd7c39,0xb9903f7d,0xba286c6c,0xba8d578f,0xbabec77a,0xbae0f37a,0xbae5b400,0xbab6b79b, +0xba897a3c,0xba728a6c,0xba7aaee9,0x38b793e8,0x39a03254,0x37a48663,0xb93b2ba4,0xb9ed855d,0xba203f17,0xba5efaeb,0xba950c5e,0xba8902cf,0xba8cb61c,0xba80b904,0xba867419,0xba7842e4,0xba723804,0xba0522fb,0xb997bef5,0xb9e09d78,0xb8eed164,0x368c94f0,0x39b075e5,0x38de92c1,0x387bd1b7, +0xb7cc8c04,0xb88a8320,0xb9052ff2,0xb9471aa7,0xb98e2ecf,0xb99cf71e,0xb99f140b,0xb9987eb6,0xb9b53808,0xba126cb5,0xb9f0c86c,0xb9da4b3f,0xb997f8c0,0xb8af8ecc,0xb8b27bc8,0xba0e23cf,0xba03980a,0xb9d7df07,0xb96abff2,0xb959e374,0xba3ee655,0xb92554ec,0xb992fdd3,0xb98e717e,0xb994d27f, +0xb9106796,0x39b0cf6d,0xb9f11048,0xba20d073,0xb95199ff,0xba127241,0xba3c2e66,0xbad094bd,0xba94019d,0xba831d67,0xba36cabe,0xba6f4e23,0xba81595b,0xba8e1df8,0xba87a469,0xba57fb35,0xb9b28ec7,0xb80b091a,0x38b8b0e9,0xb8a6529f,0xb968ef76,0xb9f78bce,0xba6dfc15,0xba856972,0xba88e403, +0xba4a1c1d,0xba294fcd,0x3842197e,0x3844a297,0x3a0afb04,0x3a1cd9b9,0xb9e7440d,0x3a07626f,0x3a811e53,0x3aa62fc1,0x3a6ec689,0x3a731f8b,0x3b00a03b,0x394c40e9,0xb897a2c3,0x3a05db5f,0xb9fbf7b7,0xbaa16309,0xbb421896,0xbb10b3a1,0xbb0112a6,0xbac59981,0xbb0dafe0,0xbb1fb05e,0xbb22fad0, +0xbb1a211a,0xbaad151d,0x3a06531d,0x3ae63269,0x3af748ff,0x3a625045,0x38ca18d5,0xba6ce85c,0xbaf2352e,0xbb0bd8cd,0xbae197c5,0xba3c0c7e,0xb9cb6fc0,0x3920e807,0xb74a7f4e,0x3abbfc0f,0x3aff4f31,0xba2b350b,0x3adaeff0,0x3ad2828c,0x3b0164a6,0x3b2e38fa,0x3b49e670,0x3bb17917,0x3ab882f8, +0x3a02cd9b,0x3b1b8022,0xba1add6d,0xbab41f55,0xbb9663b8,0xbb5aed23,0xbb38c1ed,0xbaeebdc0,0xbb542d73,0xbb733efc,0xbb785e1e,0xbb75e1a3,0xbb0ae62a,0x3a400a6e,0x3b3d38f7,0x3b6523f0,0x3ae37239,0x3accd94f,0xb9c7fe36,0xbb3878a5,0xbb663837,0xbb66b2b3,0xbab3b49b,0xba5deecf,0x3b0d614f, +0x3ac0c569,0x3b5829ea,0x3b003a5d,0xbb0d4963,0x3b40c3fb,0x3bcd6c23,0x3bc5d619,0x3bfb9cbe,0x3c1a09aa,0x3c25f44d,0x3b76738e,0x3b41923b,0x3bb75672,0xba751b5e,0xbb29f27a,0xbbbe4ead,0xbb9128c6,0xbb7875e2,0xbb4fcccc,0xbbc74f59,0xbbeb0009,0xbbe851e2,0xbbcef206,0xbb243a98,0x3b814538, +0x3c0e3ad7,0x3c032231,0x3b6db290,0x3ad694c8,0xbad743e7,0xbbb1b0b3,0xbbb058ba,0xbb349bbc,0x39d681a0,0x3aa45043,0xbb875be5,0xbb846323,0x3b21e95a,0x3bef38ab,0x3c16156f,0xba724781,0xbc010361,0xbbf039c6,0xbb530f29,0x39b8d64c,0x3908ffd7,0x3be723e3,0x3bbd56bf,0xbb44f901,0x3b1c2f45, +0x3b3cc31e,0xb9c56d7a,0xba88fb29,0xbab90627,0xb9a4004b,0x3a5746c1,0x3af9c440,0x3acfdf0c,0x3a3fbbfe,0xbb180858,0xbbff1907,0xbc2b239c,0xbbdbfffc,0x3bde35ef,0x3bafe841,0x3ba376e1,0x3bcf7749,0xbb87c405,0xbc2f6849,0xbc2376e0,0xbbe18b25,0xbba6f251,0xba7b35be,0xbc150755,0xbc5c47e2, +0xbc8eacd9,0x375b3081,0x3c279f48,0x3c1f5a81,0x3b517af0,0xba9d180f,0xbb89a314,0xba854fac,0x3b0dc6aa,0x3b84c28e,0x3b46c3e7,0x3aa02e1c,0x3ad3e983,0xbae64ce6,0xbb3c568d,0xbb3634b1,0xbb21ceff,0xbb118bb0,0xbb29c6a4,0xbb8c53d6,0xbb56737f,0xbb1ead5b,0x3bd55105,0x3be85f0d,0x3a20f77c, +0xbb9ef03d,0xbb891eb1,0x3beb8f99,0x3bd9a544,0x3c5572b4,0x3cb8d400,0x3b4897ff,0xbba04ea2,0x3c81c0cd,0xb6bf6f47,0xbbb9a18b,0xbafbce87,0xbbc4e588,0xbb94cbd0,0xbaf6751d,0x3aef25c8,0x3b4f6c9e,0x3a7d2b1d,0xba89c39e,0xbae12f71,0x395ba561,0x3ab0fdee,0x3b28d42d,0x3a8fa96e,0x3acaef48, +0x3af245b8,0x3b101081,0x39eff669,0x3aa7412b,0x3b90ee8b,0x3b9bdeb8,0x3ba8bbba,0x3b814377,0x3af7a710,0x3ab6760d,0x3b647c4e,0x3b37561d,0x3bf69eb2,0x3caec3d2,0xbc42d4ab,0xbcd0a5c2,0xbca42ca4,0xbc82b28c,0xbba2631e,0xbc11ba18,0xbb45c822,0x398a8176,0x3a6c4528,0x3a8da859,0x3ab09b10, +0x3a007ba7,0x3a0d2ff1,0xbae3e4df,0xbae4cc36,0xbb07d4fd,0xbaeaafab,0xbac02196,0xbb282a73,0xbb5aa144,0xbb81b2ed,0xbb9750cf,0xbba31dc2,0xbb8e1b04,0xbb9f9b1c,0xbb988617,0xbb65f7a8,0xbaeae7f2,0x3b2bc68b,0x3bea2e68,0x3c28096e,0x3c368c24,0x3c2eb458,0x3bff956c,0x3b5ff5dc,0x3b961c5f, +0xb9ab58a3,0xb9abb0d2,0xbb04785d,0xbb02efd3,0x3c063285,0x3a889596,0x3b5edb91,0x3b4c3cf8,0x3b838463,0x3b9648c5,0x3b5955a0,0x3a8fa1a5,0x3a5b194a,0x3aacda7c,0x3b2c7657,0x3b31f124,0x3a368909,0xbb42abfc,0xbb6090ab,0xbb7522a7,0xbb64d936,0xba8b652f,0x3a41bb88,0x3aef4971,0x3ae4c5f9, +0x3afc3a41,0x3b12325e,0x3ab9adcb,0x38a49fe6,0xbab6ac7e,0xba00925d,0x3ae7174b,0x3bb8dfc3,0x3bf42815,0x3c19f42e,0x3c37262c,0x3c31897f,0x3c3eed97,0x3c49ece4,0x3c4459fd,0xbb68b8ca,0xbbc5696a,0xbc005228,0xbc0f0f4a,0xbc0f558f,0xbbb23256,0xbb42b68c,0xbb2043b5,0xbb2caf48,0xbb49821c, +0xbb3ff09b,0xbb896a90,0xbb84df90,0xbb7bd9bc,0xbb5935df,0xbb69945d,0xbb9c86de,0xbb5e95b5,0xbadfff1c,0x3a11ffe3,0x3abd354c,0x3b19bbb8,0x3b1f326e,0x3b35ccbd,0x3b36572b,0x3b0f1b3a,0x3b15c068,0x3b12f1bf,0x3b4fb608,0x3b31c40c,0x3b1e47dc,0x3aee5839,0x3a7a2cda,0x39275898,0xba889ad4, +0xbaf119a2,0xbb0ea283,0xbb16a4ec,0xbb890453,0xbbc71ae9,0xbc0f4aa6,0xbc0fa839,0xbc15e287,0xbc1a7e32,0xbc07b773,0xbbe65fa0,0xbbc9235b,0xbb9ca8c2,0xbb848c9d,0xbb426d69,0xbb4cf763,0xbb4637e4,0xbb49dd76,0xbace9e88,0xb96bd434,0x3a3bf6e2,0x3a8a3a80,0x3afef431,0x3b2fcda0,0x3b3967dd, +0x3b43c3e6,0x3b51e692,0x3b575e65,0x3b62942a,0x3b743335,0x3b5525a0,0x3b34b481,0x3b049288,0x3a237680,0xba1e4a5f,0xbac57f03,0xbaece5cd,0xb9e95a2f,0xb9cb1b87,0xba4185a3,0xba8d8b8b,0xba9c973a,0xbabcec9a,0xbafa13ee,0xbb1bbc6c,0xbb138045,0xbb0714a6,0xbb030afa,0xbaf74c4a,0xbaf1d52a, +0xbadee385,0xba94605e,0xb9e69233,0x37e06842,0x39ff4183,0x3a82d874,0x3ada8c46,0x3abed684,0x3aa1c5ff,0x3a8d0fa6,0x3a6638e7,0x3a3f8bda,0x3a1bbbd1,0x39acfc97,0x37a5a02b,0xb99dd765,0xba1becea,0xba423018,0xba2e171f,0xb9d06751,0xb900fa12,0xb89133d1,0xb971c3de,0xb99711e2,0xb966c839, +0xb97d33a3,0xb9abbb93,0xb9cc2885,0xba84ff72,0xba8a97d5,0xba9a05a2,0xba8196e3,0xba7d291a,0xba5dfede,0xba4a23c3,0xba25b08b,0xba15d0aa,0xb9e8c299,0xb9dcd730,0xb7f72cea,0x3822c095,0x388652ac,0x392d2b0b,0x36c9cc48,0xb8651700,0xb91d9f25,0xb948efe1,0xb983a055,0xb9a44193,0xb9b86e40, +0xb9ba66cb,0xb9b5a51f,0xb99ba1c4,0xb9a70b57,0xb9f16ff1,0xba02e13c,0xba128a13,0xba0b68fa,0xb9d67a4b,0xba11f170,0xb9aa83b4,0xb9809741,0xb9829e40,0xb8a701c6,0xb864f920,0xb9c9eab9,0xb70b7257,0xb93037aa,0xb83731cd,0xb98eea5d,0xb92fc692,0x398d346d,0xb9a4cd24,0xb9e6bd14,0xb97312fe, +0xb9a51c7c,0xb9d03ffd,0xbab84ba9,0xba735956,0xba5d1cd9,0xba20a460,0xba4dfd67,0xba564e92,0xba65e247,0xba3d560b,0xb9f68945,0x38fae9bb,0x3934db69,0x39795c3f,0x38782b22,0x37b11e5e,0xb978c30f,0xba47512b,0xba65136f,0xba66aa7a,0xba0f8dae,0xb9c6495e,0x3a3e39a1,0x39e5150c,0x3a66ded9, +0x3a80528c,0x3990cf6f,0x3a2c3548,0x3a7ed8cd,0x3ac8b8d3,0x3a4400f1,0x3a31a364,0x3ac9b187,0x39903b69,0x39015553,0x39877afa,0xb84347e6,0xba3ab549,0xbb2cb601,0xbb04ea21,0xbb03fad7,0xbadc0824,0xbb111dfa,0xbb193a69,0xbb12319e,0xbae32f9f,0xba11bd65,0x3ac2bd9c,0x3b03b94a,0x3af4df4f, +0x3a5bad6f,0x39bbef9f,0xba0edc92,0xbad82f43,0xbb0395a5,0xbac8b90b,0xb980b659,0x39982258,0x3a57aebc,0x37978ab5,0x3ac31811,0x3b0401b0,0x39b00ad6,0x3ae809a9,0x3abab1f4,0x3b19e5b2,0x3afd4bd3,0x3b09efdb,0x3b937c60,0x3ab7e5bd,0x3a5cc929,0x3ae23dd3,0x387421ef,0xba0425f7,0xbb890d74, +0xbb48b884,0xbb4010c2,0xbb180cde,0xbb6355a5,0xbb7093f1,0xbb65e730,0xbb38938d,0xba7d4043,0x3b22ed21,0x3b4c3695,0x3b5c03d0,0x3ad0a298,0x3b01efe5,0x38f0e225,0xbb359b1e,0xbb6575a7,0xbb5e9f73,0xba72a8dc,0xb8c5aab5,0x3b7cd8e8,0x3b133999,0x3b851828,0x3b492300,0xb9c56200,0x3b3d5e1b, +0x3bb8248f,0x3bddbcb4,0x3bf0a15e,0x3c12ee64,0x3c233b31,0x3b64ed6f,0x3b31d018,0x3b9f7240,0xb7a7afce,0xbac9a3dd,0xbbc19559,0xbb9650da,0xbb902efa,0xbb8f4105,0xbbe0ca5f,0xbbf227ad,0xbbdc3bd2,0xbb9e446f,0xb9b798e8,0x3be4bf58,0x3c15ed0d,0x3beaf545,0x3b3cc412,0x3afa7231,0xba6940f7, +0xbba7d78e,0xbbab1cda,0xbb232f0f,0x3acc5003,0x3b4425ac,0xbbb77531,0xbbbebe7e,0xba7c50c7,0x3b8115cf,0x3c0646d4,0x3a8105e8,0xbbb88df5,0xbbeeb1c4,0xbb913b04,0xba31a609,0xba4f2a1c,0x3bfdf57c,0x3be4d027,0xbb403ad6,0x3b0b3488,0x3b23bb7b,0x3a6651cb,0xba0b6553,0xba92dca4,0xb97a557a, +0x3ade984d,0x3b2f5b8e,0x3af74b0f,0x3a4b125e,0xbb27f0ad,0xbc086c4d,0xbc220979,0xbba2656c,0x3c10b180,0x3bbc7170,0x3ba260d2,0x3bc6fae5,0xbba10f79,0xbc3480b9,0xbc2ee755,0xbbfcd4ff,0xba3e4fc2,0x3b0cc804,0xbbabeb91,0xbc36e7f8,0xbc87cf65,0xbb541db0,0x3bdcb42c,0x3c06d971,0x3b894c52, +0xb9550bf4,0xbb9d46bd,0xbb1a581d,0x3a800505,0x3b5ec2a3,0x3b2bc650,0x3a8300c0,0x3a98cd04,0xbb20285f,0xbb6b7311,0xbb821c1d,0xbb380fbf,0xbb169327,0xbb1ce344,0xbb958e39,0xbb54bb3f,0xbae5c7e9,0x3c0bac88,0x3c06675f,0xba2d2a91,0xbb8df279,0xbb4ef950,0x3bdb7a3d,0x3c0ff059,0x3c665d48, +0x3ca06428,0x3bac4bfa,0xbc3ef4dc,0x3bcbb1a0,0xbb62cab2,0xbbe334d2,0xbacd1b35,0xbb6f2e87,0xbb4e81a1,0xbb907aae,0xb9f46f39,0x3ad9f4c8,0x3abd7cef,0xba8ccd4d,0xbaf1c7e0,0x390e6d93,0x39fbd750,0x3ae6cc61,0x3aacf55b,0x3acc0265,0x3b03fb33,0x3b0e01e7,0x3abd4162,0x3b2b1f2d,0x3ba7a6b8, +0x3ba5c631,0x3b9a1111,0x3b24a1aa,0x3a49781e,0x3ad99833,0x3baf4cd3,0x3bb93b45,0x3c000b18,0x3c733456,0xbc7812e3,0xbcd485f3,0xbc8f0bbb,0xbc95bb3d,0xba8c3540,0xbb94cfce,0xba5d520f,0x3acf8817,0x3b2e3930,0x3a8c5786,0x3a48f369,0x39b7ea49,0x3a116247,0xbadcb4c6,0xbb026ca7,0xbabbf270, +0xba7a8874,0xbac3d388,0xbaec318d,0xbb2e5716,0xbb82aff0,0xbba022ab,0xbba895bf,0xbb8cd6b3,0xbba6a315,0xbba0dada,0xbb8123db,0xbad9755e,0x3b2d8901,0x3be5871c,0x3c19e506,0x3c25a5ea,0x3c2b1efe,0x3bc2a70d,0x3b0e6433,0x3b950a0a,0x3b0257d2,0x3b1bf2ff,0x3a46839d,0x3a5bbda2,0x3b2b8b08, +0xbb495b47,0x39d2e78d,0x3ab65bfe,0x3b34fae7,0x3b908f3f,0x3b73fcf3,0x3ac71f1d,0x3ab84dda,0x3ae6d20c,0x3b1d7bb7,0x3b4dac5c,0x3ab51d79,0xbb16dc7c,0xbb5fb4d8,0xbb8cd934,0xbb84dc1c,0xbaeeefbb,0x3963570b,0x3adcb357,0x3accb0e7,0x3aeef981,0x3afe7314,0x3ad9ca2a,0x3a6a7bf2,0x3849df6e, +0x3aebef41,0x3b8f58dc,0x3c070b49,0x3c10837b,0x3c274342,0x3c34c485,0x3c2f7ab4,0x3c267272,0x3c0826df,0x3bd436ce,0xb977d3a4,0xbb7f9e05,0xbba3beb9,0xbba3dd1a,0xbb9c8b5e,0xbaf79dd0,0x389d0a51,0xb902dae7,0xb95060f0,0xba7e03a4,0xbac00d1f,0xbb606cbb,0xbb7afa6c,0xbb7a831a,0xbb45f090, +0xbb52163a,0xbb898444,0xbb861ad0,0xbb3e9650,0xba50caec,0x3a15a806,0x3ae20e83,0x3ae8e1c0,0x3b2650e7,0x3b2bf7a3,0x3b024756,0x3ac60a3e,0x3aa64124,0x3b1609fd,0x3b130961,0x3b155ec7,0x3b056985,0x3af0e1cb,0x3b092000,0x3b1a3598,0x3ad651ad,0xbb557c5b,0xbb645f6f,0xbba6c504,0xbbe213ef, +0xbc1b18df,0xbc152b81,0xbc123ef8,0xbc0ee7fe,0xbbf71a50,0xbbcfb0bd,0xbbaa4068,0xbb8a437d,0xbb6be665,0xbb427b7d,0xbb3fa33d,0xbb38c075,0xbb2f363e,0xbad3b8e1,0xba310d03,0xb9b96637,0x398a6e68,0x3ab79835,0x3b1e6d81,0x3b183e1b,0x3b17c44a,0x3b25aba4,0x3b2e13b6,0x3b3bedcb,0x3b48f590, +0x3b2b3a73,0x3b07ff7b,0x3aa9bd0e,0xb7b44985,0xbaaddd76,0xbb1d03fc,0xbb3e1906,0xb926c5b6,0xb991342a,0xba0c0061,0xba8a5a22,0xba9bf27d,0xbac5617b,0xbb0de94c,0xbb36e2da,0xbb2f5ab9,0xbb21c3aa,0xbb1985d6,0xbb144a62,0xbb0bd03b,0xbafa9af1,0xba9c3e67,0xba0a8cc5,0xb819cf1f,0x39d45d58, +0x3a933726,0x3abbd816,0x3ab45397,0x3aa33577,0x3aa043db,0x3a9bd1ac,0x3aa1701d,0x3a9cefef,0x3a84c7a1,0x3a4c6639,0x3a14cbf9,0x39a7e802,0x394eb910,0x398f21df,0x39b10724,0x39ff3a3a,0x39f45de7,0x396d4b5d,0xba80d018,0xba8a942d,0xba7480ca,0xba7d017f,0xba6e28d4,0xbae533db,0xbadf743c, +0xbae3a5a2,0xbac2bc56,0xbabaa9c9,0xbaa943ae,0xba956c64,0xba7dde04,0xba690861,0xba6dfe27,0xba797487,0xb993fb2b,0xb9b4ec62,0xb9aa0e9c,0xb9aab3a6,0xb9cfdbfe,0xb9e9e1cc,0xba09ccf2,0xba0d2474,0xba16eb0a,0xba199df1,0xba21a429,0xba2026c2,0xba1be0cd,0xba0856f2,0xba02608f,0xba0d5a2a, +0xba3b7afe,0xba69e928,0xba838cca,0xba84cb27,0xbaae0886,0xb93c8c9b,0xb869e38b,0xb928071e,0x38255a66,0x38e15c79,0xb7bcc538,0x3887cc27,0xb8ab4dd5,0x39300392,0xb971dd6a,0xb933b351,0x3926bb78,0xb90577e8,0xb94f28ab,0xb9350d83,0xb85f00c1,0xb8e21ad0,0xba8b8495,0xba3233cb,0xba32edfc, +0xba17460b,0xba3278dc,0xba31ddb6,0xba3d8acb,0xb9f0e4c5,0xb9394517,0x3a0060f5,0x399941e6,0x3999bab2,0x38b156ba,0x392d77a0,0xb8a44c24,0xba273ef4,0xba486fbb,0xba444664,0xb9bc0d79,0xb93781ba,0x3aa3a326,0x3a398ff1,0x3a9a8e0d,0x3a9a7634,0x3a51a5a8,0x3a34a265,0x3a5c4f4a,0x3ad18175, +0x39fb4f23,0x39a6e545,0x3a7117d2,0x3998b860,0x399d44cf,0x38a0dff4,0x39cd65fb,0xb944f581,0xbb0ce40c,0xbaeba552,0xbaffbfcb,0xbaedeead,0xbb114b6f,0xbb105b13,0xbb02d147,0xba92213a,0x39298ac5,0x3b16a9b2,0x3b09f90d,0x3ade05aa,0x3a2312e0,0x39fe75fb,0xb9890a1d,0xbaba5a04,0xbaeeadf5, +0xbaacc43e,0x393f6b78,0x3a5d2aae,0x3aa84437,0x386deb67,0x3ac1096c,0x3b007b1e,0x3a9cc0cf,0x3ada263e,0x3a8a97d3,0x3b1a7311,0x3a86c8cc,0x3a7eb12e,0x3b496a77,0x3aa63fd5,0x3a9dc700,0x3a9ba410,0x3a42c47b,0x39d14152,0xbb5f973f,0xbb2bd57b,0xbb3db12a,0xbb2d32d4,0xbb66c2e7,0xbb6254a3, +0xbb525520,0xbaf3449d,0x390242c5,0x3b82da29,0x3b4be80d,0x3b43f657,0x3a9de2fa,0x3b0cde65,0x3a0518d1,0xbb29db94,0xbb58696c,0xbb4b2fa8,0xb9c3bd7a,0x3a0de29c,0x3ba8fdc9,0x3b39df44,0x3b920701,0x3b757907,0x3a9f2791,0x3b3090a5,0x3b9c25ef,0x3be82fbc,0x3bdb95de,0x3c03edb6,0x3c1309cf, +0x3b5add88,0x3b3468f8,0x3b896ee4,0x3a8e1013,0xb9a041f1,0xbbb3fd45,0xbb938390,0xbb9cabb2,0xbbac751b,0xbbee7352,0xbbefda7b,0xbbcd4bd8,0xbb528134,0x3ae9ddc0,0x3c1c29f5,0x3c15772b,0x3bc6e444,0x3ae95d4c,0x3afef65c,0xb974a4a2,0xbb9718e4,0xbb978853,0xbb004148,0x3b328de7,0x3b92eaff, +0xbbe75e8a,0xbbe1316c,0xbb5bdc87,0x3ab2e615,0x3be2dd86,0x3b1cb5a8,0xbb6c769c,0xbbef9504,0xbbb5c9cd,0xbac714eb,0xba83239f,0x3c04c05a,0x3bf949fd,0xbb2f2b04,0x3ade00b2,0x3b05e6c3,0x3b1707b9,0x3a09de8c,0xb96df67e,0x39a8b081,0x3b42abe5,0x3b71d3cd,0x3b1fac37,0x3a1a2a05,0xbb502637, +0xbc0c7eff,0xbc16f846,0xbb5b7783,0x3c26800e,0x3bc547be,0x3ba14702,0x3bc27c2b,0xbbb24e84,0xbc32c59f,0xbc33b93b,0xbc0e751d,0x3b6af1e5,0x3b929b60,0xbb15c3e2,0xbc1a14cd,0xbc7ee370,0xbbcecd8b,0x3b3f7918,0x3bd26239,0x3ba3db4d,0x3a83fcb5,0xbb9ffd52,0xbb60a3a1,0xb90c4d08,0x3b384928, +0x3b01f2e1,0x3a0dce13,0x39eaac63,0xbb28fe73,0xbb68768b,0xbb981073,0xbb38a6ec,0xbb1d4ffb,0xbb2da8f4,0xbb966ef2,0xbb376bc6,0xb9a30f1c,0x3c24458d,0x3c0f9729,0xbab69b24,0xbb825cf3,0xbb0fba45,0x3bc9f44c,0x3c2c9dc7,0x3c67ed68,0x3c785856,0x3be4dfc8,0xbc8f0d3c,0xbba18bbc,0xbbac18e1, +0xbbbd7125,0xbacf098c,0xba9eb6e6,0xbad506bf,0xbbc3cb42,0xbb172885,0x399ddb92,0x3ae21905,0xba41da22,0xbade1d8a,0xb955bb4b,0xb9c8a4a3,0x3a70343a,0x3ac460ca,0x3aa62cd4,0x3ad442e0,0x3aa49e77,0x3b06c73b,0x3b6e2a99,0x3baa209d,0x3ba50806,0x3b827932,0x3a9ed148,0xb8af6fb8,0x3aea69d2, +0x3bb52e1d,0x3c146a90,0x3c06135d,0x3b921ae9,0xbc8232fd,0xbcb744b9,0xbc6b90f3,0xbc9c8a1f,0x3b5791e6,0x3a52cfa4,0x3ac5a0f8,0x3b30face,0x3b8ee158,0x3a90095b,0x394df7b4,0x39c5c93e,0x39e06691,0xbac08a2c,0xbb07e322,0xba6d13cc,0xb9ad7178,0xbab3dbe1,0xba874834,0xbb062851,0xbb82eb0e, +0xbba2304f,0xbba46951,0xbb8fc8b9,0xbba56e14,0xbb9d7762,0xbb8549fb,0xbaa53c8a,0x3b2bd21a,0x3be3a81c,0x3c0a1351,0x3c1007a7,0x3c10ff45,0x3b56f17b,0x3a1e9604,0x3b5beee4,0x3b55a230,0x3b80f1bf,0x3b5b0f6c,0x3b708552,0xbb558f92,0xbbd48450,0xbb0d7c46,0xb79ed87f,0x3adb7ba1,0x3b7a64d4, +0x3b76d7e0,0x3b021004,0x3b0a0233,0x3b15cd2c,0x3b09d838,0x3b461c28,0x3ad74ccc,0xbaaf7556,0xbb5760c3,0xbb985e8a,0xbb8f37c2,0xbb337630,0xba3057a7,0x3a758a8e,0x3a958d7a,0x3adb268f,0x3ac7c911,0x3b04b68e,0x3af8eda9,0x3ae6ac75,0x3b883dc3,0x3bdae8ac,0x3c25d779,0x3c1f7faf,0x3c2b0505, +0x3c2831c5,0x3c298b23,0x3c04771d,0x3b3c5c80,0x37ff60fd,0x3b542a3d,0xba373879,0xbaf05433,0xbaaa766f,0xb9f2ded5,0x3ad7278b,0x3b3daa3e,0x3b0629ab,0x3b02c378,0x3a7675bc,0xb8f7a608,0xbb1f8b18,0xbb607677,0xbb7a02d1,0xbb47f052,0xbb49a1c3,0xbb651cf0,0xbb8d96c6,0xbb6eeba8,0xbb019427, +0xb99deb85,0x3a8101db,0x3a8dc422,0x3b0fb577,0x3b170d22,0x3ac7ac59,0x3a377c01,0x398ca8e3,0x3a8bb832,0x3ab6bbb9,0x3aeeda59,0x3b0bf9bc,0x3b2afc00,0x3b7de9b5,0x3bb416f9,0x3ba2c9e9,0xbb85a6cd,0xbb9843cb,0xbbbd33bf,0xbbee5f2d,0xbc1b771a,0xbc13284c,0xbc09eca6,0xbc020182,0xbbe15b4d, +0xbbbf7582,0xbb98de7c,0xbb829384,0xbb5eebfc,0xbb4acfad,0xbb3b2565,0xbb39e1a2,0xbb2f04cb,0xbb03225a,0xbab3599c,0xbac5a40b,0xba2f24aa,0x3a266566,0x3af48b87,0x3acda1bb,0x3ab812f4,0x3acdff19,0x3adb1627,0x3af0d7ef,0x3afa4c74,0x3adaf7e3,0x3aa4e7ff,0x3a3863c4,0xb964646e,0xbaade734, +0xbb1972cc,0xbb5ffb0f,0xb9695838,0xba11ae6b,0xba34caae,0xbab6e38d,0xbacb0d4e,0xbaf9800f,0xbb301494,0xbb5e343b,0xbb56ac57,0xbb467d79,0xbb392c32,0xbb356c01,0xbb2996c8,0xbb179038,0xbaccbda7,0xba809031,0xb9ff5014,0xb899ee66,0x3a3e7dc4,0x3a3bb6c4,0x3a5e936d,0x3a630bc6,0x3a84fadf, +0x3a99efcf,0x3abd48dd,0x3ad021c6,0x3ac2c294,0x3ab25df4,0x3aa4e22a,0x3a8c3af2,0x3a7b30c4,0x3a7d0462,0x3a3a4b42,0x3a230e0a,0x3a03b21b,0x397ce7c9,0xbae86781,0xbb0130e8,0xbae71c6b,0xbae68c11,0xbad7869f,0xbb279aa9,0xbb21e8e1,0xbb211637,0xbb0d7356,0xbb07f35d,0xbafe7039,0xbae3cc41, +0xbacaf782,0xbabec900,0xbac9ffb7,0xbad1d59e,0xba55afba,0xba778660,0xba6dec0e,0xba7e5eeb,0xba760595,0xba7ad175,0xba825e3b,0xba79cbcf,0xba78a934,0xba691ff4,0xba727e70,0xba709eae,0xba6b77ac,0xba574aa4,0xba488bcd,0xba34b4bd,0xba80aa15,0xbaa4b526,0xbac758c7,0xbadd0d10,0xbb0b0fe0, +0xb8860ff5,0x38d0b5ba,0xb8d59105,0x38eea4e5,0x39511e32,0x396349f2,0x38c0ad29,0xb8927452,0x3980321e,0xb995f0b3,0xb98dfab2,0xb8b69a7c,0xb8501a71,0xb83c8a24,0xb921ff05,0x391832f2,0x3912b8de,0xba44dfca,0xb9f8ebf6,0xba0da623,0xba09fe18,0xba160c66,0xba0cf375,0xba14a5cb,0xb95bcfce, +0x38bd84f7,0x3a500eb0,0x39c637d8,0x39a79b05,0x38918fd4,0x39947ca9,0x388fa687,0xba0a5436,0xba2405ce,0xba1a50d4,0xb93853a3,0x36cf59b5,0x3ad2fd24,0x3a595619,0x3aa9e2e0,0x3aa0d9b8,0x3a97c6f5,0x3a161494,0x3a19e8f7,0x3ac6f308,0x391669d3,0xb8f7a93e,0x393fc08e,0x39807d3f,0x39e6e96f, +0xb78bf399,0x3a47c801,0x399297f5,0xbacb7c4a,0xbacbbce9,0xbaf98662,0xbaf89c9e,0xbb0d2c59,0xbb026d48,0xbadbb5ae,0xb9ec0f31,0x3a637377,0x3b425af8,0x3b0aa727,0x3abedadb,0x39af1d59,0x3a1aa343,0x37db3aed,0xba9e03d2,0xbac55897,0xba816e52,0x3a188976,0x3aa9f1f5,0x3ad2c19a,0x37b03078, +0x3ab1a209,0x3aeb475f,0x3afcb86c,0x3ab3c8c6,0x3a08867c,0x3b0a3a66,0x370e9710,0xb9767e44,0x3aab9a9a,0x3a82a2ed,0x3ac1bb09,0x3a51289d,0x3ab256da,0x3a9ecff2,0xbb1b0a18,0xbb0af306,0xbb35aa19,0xbb362154,0xbb5ec548,0xbb49fbfa,0xbb364822,0xba5b144f,0x3a99a6c7,0x3ba9de24,0x3b441b1e, +0x3b2a177b,0x3a4e2c9e,0x3b14ebcc,0x3a79d8ab,0xbb1c863c,0xbb373fb5,0xbb23bc56,0x3944af65,0x3a91d2b9,0x3bc3c42a,0x3b44996e,0x3b92b57a,0x3b84082e,0x3b28a95d,0x3b152a9e,0x3b727a71,0x3be1effc,0x3bbc70e7,0x3bdb1fa5,0x3be87b45,0x3b517464,0x3b4535cc,0x3b6d6366,0x3b1053c5,0x3a809fc2, +0xbb95a885,0xbb8a5dcf,0xbba656b4,0xbbc227de,0xbbf2d6e7,0xbbe336b6,0xbbb3a05b,0xbab2de19,0x3b807306,0x3c3c9c1c,0x3c0f8656,0x3ba06c53,0x3a220ce6,0x3b02c760,0x39f19e1f,0xbb87064f,0xbb6ac145,0xba83c69f,0x3b74dd0b,0x3bb8be94,0xbc04ab36,0xbbee0f07,0xbba87142,0xba47b3c7,0x3bbcc663, +0x3b54fea1,0xbb003a8f,0xbbeed4ef,0xbbcbda9a,0xbb0203bb,0xba3d57ae,0x3c02a347,0x3bf5dddd,0xbb0dab6c,0x3a8f8d0d,0x3ac42e49,0x3b6c7225,0x3b020645,0x3aa35685,0x3ae75be8,0x3b9bfcef,0x3b9ddef1,0x3b3eab4f,0x3855d1be,0xbb88cdf8,0xbc0faecd,0xbc079d14,0xbacd7985,0x3c377a9f,0x3bce2d46, +0x3ba10317,0x3bc7c0a5,0xbbb3c2aa,0xbc28d20f,0xbc2d9a16,0xbc17c336,0x3be2c6eb,0x3bc695a4,0x3a0f0c17,0xbbf52e06,0xbc721c85,0xbc117771,0xba28bc10,0x3b908e2d,0x3babbe54,0x3af5a3bf,0xbb9700ad,0xbb8bb05e,0xba9abd9c,0x3b1572b5,0x3a9e0a00,0xb8816b81,0xb9cec550,0xbb1250d8,0xbb3e157a, +0xbb98e69d,0xbb248fab,0xbb1f1aa5,0xbb385415,0xbb89f93e,0xbaf8f681,0x3b013414,0x3c2fe9ca,0x3c086d01,0xbb11605f,0xbb778a0d,0xbaa8f7f7,0x3bb8195c,0x3c420493,0x3c5fc1ac,0x3c24cf5f,0x3bf9b005,0xbcb3838b,0xbc867598,0xbbcfbfbe,0xbb6a81fb,0xbb105301,0x3a9ae479,0xb805a675,0xbbda9e32, +0xbb647ac5,0xba460d8a,0x3ade089f,0xb8e91e59,0xbaa81b7a,0xba440d87,0xba8a1c84,0x39967703,0x3ade25e4,0x3a6189f4,0x3a53a8f8,0xb88f9a68,0x3b158d3d,0x3b85fa2d,0x3b99f32a,0x3b96a9e6,0x3b4b420e,0x399d76bd,0xba19d834,0x3ade7d44,0x3b91db77,0x3c4cb874,0x3c18fbd0,0xbb9e4af2,0xbc70c69c, +0xbc8d7b45,0xbc3fd995,0xbc9800a4,0x3c03d535,0x3bdf4791,0x3b8b1012,0x3b748f1a,0x3bb2e999,0x3a8c32d5,0xb960dfa8,0x3a1e54d4,0x39b80fe8,0xba8c8933,0xbb04c196,0xba20fd74,0xb800eeb0,0xba9044c2,0xb9e3b83a,0xbad31588,0xbb80195b,0xbba0a370,0xbb9eb4d6,0xbb94fb80,0xbb9dc83c,0xbb9188cf, +0xbb79d5ad,0xb9e2cf70,0x3b3b6528,0x3be0ab4f,0x3bf2bd17,0x3bed26cb,0x3bd495f0,0x39a69b14,0xbaad3322,0x3aaf1988,0x3b58982d,0x3b8e29e8,0x3ba19f18,0x3bd1183c,0xbc033d5f,0xbc1105e6,0xbb8a3f58,0xba833c2a,0x3a87e16d,0x3b46e631,0x3b5f365e,0x3b1e8d6d,0x3b2d4081,0x3b2f0b53,0x3ae9d63f, +0x3b22adb6,0x3ac7452b,0xb99dc421,0xbb49ff05,0xbb9d0df4,0xbb94af3e,0xbb6f93ec,0xbaee4c1e,0xb996cf3a,0x39ffcc8f,0x3ab73821,0x3aa4fcb0,0x3b100d54,0x3b34c17a,0x3b7e2052,0x3bc60040,0x3c065118,0x3c389f3c,0x3c2606d1,0x3c2806bc,0x3c16b84b,0x3c20f67e,0x3bcce09e,0xbad7d8b8,0xbbae808f, +0x3bcdf0d7,0x3b2c544b,0x3ac9322d,0x3b0c349e,0x3b5127e7,0x3b96729a,0x3ba85d1a,0x3b80dfba,0x3b7bee33,0x3b2965c1,0x3a8ffd4f,0xbaadea3a,0xbb3c5e17,0xbb7bfec3,0xbb54c2b5,0xbb49845e,0xbb3e5699,0xbb87517f,0xbb7c10b3,0xbb376996,0xba85e166,0x399a4aa2,0x3a1567a1,0x3add47fc,0x3ae576af, +0x3a3e5f52,0xb895cd69,0xb9e12816,0x38a58a20,0x3a345336,0x3abf30da,0x3b13895c,0x3b51b21f,0x3ba8111a,0x3bfc9e7b,0x3bf8e07f,0xbb8f2197,0xbbaef518,0xbbc7408e,0xbbebbbe4,0xbc12f8be,0xbc09682e,0xbbf7983e,0xbbe259bb,0xbbc906ee,0xbbaf216f,0xbb8f1cd1,0xbb813c5c,0xbb630889,0xbb64542f, +0xbb4a840d,0xbb51c7c5,0xbb4cad4b,0xbb30edd7,0xbb14e6b3,0xbb2681b7,0xbacba873,0xb987ad92,0x3a896f79,0x3a36084c,0x3a0db658,0x3a403505,0x3a3599f0,0x3a31f850,0x3a13fe9e,0x3a1d4825,0x39dbd2d2,0x39981e4d,0xb8a61255,0xba507191,0xbad218c9,0xbb598848,0xba21ec9f,0xba982a61,0xbaa39988, +0xbb054bcc,0xbb126f87,0xbb2af80f,0xbb610072,0xbb87d105,0xbb82cb42,0xbb724059,0xbb5fc7c2,0xbb5b9683,0xbb4cfb71,0xbb37e5ed,0xbb0ac0e7,0xbad6e8fd,0xba98f024,0xba4e94b1,0xb8019482,0xb97b2696,0x38002764,0x3942fb22,0x39f75733,0x3a546434,0x3aa336eb,0x3ace7b4b,0x3acde135,0x3ad2c592, +0x3ad63912,0x3aca2159,0x3abf3641,0x3ab68f17,0x3a4b5ed7,0x39ca20ca,0x3917cf72,0xb9021155,0xbb212f1a,0xbb33e47a,0xbb24b498,0xbb250526,0xbb1ea1d5,0xbb54b22a,0xbb50b2b7,0xbb522998,0xbb3c4d30,0xbb35e39a,0xbb2cfedb,0xbb1d9a76,0xbb108340,0xbb0936b8,0xbb0e9f66,0xbb106244,0xbac00255, +0xbad112b3,0xbac849c5,0xbad3f2f6,0xbac33f94,0xbabebae9,0xbabc2e5a,0xbab003e1,0xbaa92a6a,0xba99ad5f,0xba9e5df3,0xba9e1fe7,0xba9bc8ec,0xba93899e,0xba89e8c4,0xba64196f,0xbaa1a395,0xbacc7cf0,0xbaffa7b0,0xbb13c050,0xbb33f03c,0x389b9381,0x3985a7a2,0xb74829cb,0x390d57d1,0x396413b3, +0x39c7b11b,0x38b8078b,0xb9059019,0x397da9c3,0xb9d30def,0xb9e310b2,0xb9caf8e3,0xb86dde15,0x3805a4b1,0xb91f8842,0x398c2f7d,0x39b178df,0xb9efbfa0,0xb9a5deb2,0xb9db5401,0xb9da70bd,0xb9dd9837,0xb9ba227f,0xb9bbb40c,0x38868e1c,0x39c0a5ac,0x3a8b5ae8,0x3a038659,0x39ce8b46,0x38ab98e8, +0x39e5b45d,0x39858a80,0xb9d36c47,0xb9de5e69,0xb9bec31b,0x388163bc,0x3953087b,0x3af0f6af,0x3a62a72a,0x3a9e8902,0x3a97665c,0x3abb9742,0x39b64350,0x39786fd7,0x3ab02ee9,0xb9831b38,0xba1d1600,0xba0f8a44,0x391f3523,0x3a0cbc7f,0xb80a73d9,0x3a8794db,0x3a331164,0xba61f2e7,0xbaa79b31, +0xbaf4573f,0xbaf9087f,0xbb0243bf,0xbadad7f0,0xbaa04f65,0x39869682,0x3acd3bce,0x3b6537aa,0x3b0e2f2f,0x3aad35b8,0x38f24ab5,0x3a4aa9e0,0x39c20467,0xba823940,0xba899c91,0xba05a146,0x3a8981a0,0x3adad27f,0x3aec2e93,0xb87a16e8,0x3a8bdb7e,0x3ac5301b,0x3b263aa4,0x3a6d31bf,0xb923a583, +0x3adfeb96,0xba8cb779,0xbabcb7a0,0xba0b0a68,0x3a21d6a6,0x3ad1555c,0x3a091102,0x3af090ab,0x3af3cbc0,0xba921d47,0xbacf2908,0xbb286c22,0xbb36aa48,0xbb4a3834,0xbb283f50,0xbb0ef428,0x39691d7d,0x3b0e6253,0x3bc51b70,0x3b41ba6f,0x3b1c05b2,0x39ed8591,0x3b241621,0x3ac233bd,0xbb101eef, +0xbb05ca6a,0xbad6d413,0x3a6836d8,0x3acf374d,0x3bcdfdfd,0x3b374d6d,0x3b833bf1,0x3b8007fc,0x3b7371d2,0x3acf3ea6,0x3b1bdcec,0x3bca41e1,0x3b9106a7,0x3ba10b05,0x3b95eedb,0x3b456ef6,0x3b5c63d2,0x3b4e17e6,0x3b4e6949,0x3b10bf4c,0xbb4a3191,0xbb73406c,0xbbae3da9,0xbbd36947,0xbbed2528, +0xbbcbbd70,0xbb8f3f70,0x3a226531,0x3bc37768,0x3c51d82e,0x3c091258,0x3b8344f9,0xb9a03157,0x3b11cecb,0x3aa1beee,0xbb70e748,0xbb120b95,0x39a584f2,0x3b9d88ca,0x3bd19da1,0xbc0f2457,0xbbe89ac2,0xbbd349f1,0xbb2a7475,0x3b998160,0x3b671970,0xba451989,0xbbe29f46,0xbbcb4723,0xbb02c6b4, +0xb9a489f9,0x3beea75d,0x3bdb955b,0xbab1ec66,0x39d94ec1,0x3a644ad7,0x3b942e8d,0x3b647040,0x3b503373,0x3b8846ae,0x3bdca192,0x3bbe2401,0x3b550b11,0xba5cf3f3,0xbbb3cacd,0xbc11c909,0xbbed9766,0x397fa746,0x3c435795,0x3bd93aaa,0x3b9fb0fc,0x3bc714d3,0xbba5c011,0xbc16eef1,0xbc1f6b3d, +0xbc1a4545,0x3c10dee8,0x3be50cb0,0x3b588099,0xbba5edbb,0xbc641047,0xbc2d6592,0xbb5ed77f,0x3b234654,0x3b9db1e7,0x3b0d284b,0xbb828979,0xbb9a0ed2,0xbb0440f1,0x3af1ffed,0x39c38f3b,0xba37f98c,0xba9ea6d7,0xbac53aca,0xbaef22a9,0xbb860087,0xbb01a454,0xbb17a22c,0xbb2d72e8,0xbb6ed578, +0xba3d57fb,0x3ba1b688,0x3c2dad04,0x3be04b82,0xbb67dbe4,0xbb755837,0xb9a7aa02,0x3bb24f2b,0x3c5232b7,0x3c52e84f,0x3baf5608,0x3be69b63,0xbcc728d2,0xbcdb78a3,0xbbfa5c20,0xbadc5c01,0xbb69ae52,0x3b4d8ac5,0x3ac06068,0xbbd7bf6e,0xbb8353d7,0xbac07902,0x3abc049a,0x3a225d34,0xba47be4c, +0xbab443ee,0xbac1b8bb,0xb8a86af7,0x3af63e20,0x3a15d230,0x38107330,0xba8d73ae,0x3b0fa557,0x3b7ec089,0x3b7da814,0x3b7bcc37,0x3b081638,0xba00fb96,0xba876eee,0x3ab47f44,0x3b3b6041,0x3c759962,0x3c28ad5e,0xbc40ada4,0xbc57d71b,0xbc56ec62,0xbc20d313,0xbc89992e,0x3c47e79e,0x3c50ce67, +0x3bf68947,0x3ba1f1d0,0x3bb99b16,0x3a902e2f,0xb98cb7ee,0x3a656e39,0x39dc14ce,0xba050c71,0xbaee9fe6,0xba10f2a2,0xb7306555,0xba2c0c0f,0xb80c93f8,0xbaa8af60,0xbb6c0eab,0xbb99c9c0,0xbb99c89c,0xbb977dd0,0xbb90fadf,0xbb7c6d35,0xbb4a7f85,0x39edee4e,0x3b4fe5e0,0x3bdc502f,0x3bd1ea02, +0x3bb4a65a,0x3b6b51bd,0xbb092600,0xbb346459,0xb9c447b4,0x3b1f45d0,0x3b6a0be1,0x3bab8b8e,0x3c04d5ff,0xbc355b2a,0xbc21bfdd,0xbbb89d08,0xbada01ce,0x3a3b26ee,0x3b0a4143,0x3b2e1e2e,0x3b315218,0x3b3bc936,0x3b34994f,0x3ac0c906,0x3ade009d,0x3a8ffb21,0x39fa90ea,0xbb3ce07a,0xbb9c1939, +0xbb9b481c,0xbb90a459,0xbb429b7e,0xbae175b7,0xb9d6de77,0x3a5f5bf2,0x3a80f4bf,0x3b18a644,0x3b6b64e8,0x3bba3bd6,0x3bec1f32,0x3c11b93f,0x3c392128,0x3c264dfc,0x3c217316,0x3c03689d,0x3c0bc622,0x3b8e96af,0xbb8dea0c,0xbc10e828,0x3c0780fb,0x3bab0890,0x3b9627bf,0x3ba36b98,0x3bb8f977, +0x3bd46532,0x3bd3c45a,0x3bad465d,0x3ba90a9f,0x3b7f30af,0x3b114334,0xb93e4773,0xbb0f0ea5,0xbb778b8f,0xbb612c77,0xbb4c2364,0xbb24cb13,0xbb6dca86,0xbb6b4230,0xbb4f688d,0xbac163ed,0xb99b834a,0x39033161,0x3a8590ba,0x3a7d80e1,0xb91b8fa7,0xba3b90ff,0xba4dc7a2,0xb9d2dd70,0x39f51811, +0x3abfa115,0x3b20e0a0,0x3b72aa9a,0x3bbe2e04,0x3c0f0510,0x3c13ffac,0xbb8958bd,0xbbb28773,0xbbc2e8f6,0xbbdd4405,0xbc0546f2,0xbbf2bd7e,0xbbd0a422,0xbbb6dd2a,0xbbaa184d,0xbb99c946,0xbb863252,0xbb809cf2,0xbb73be02,0xbb84a114,0xbb6a4260,0xbb7428d0,0xbb73db73,0xbb5fa1b2,0xbb49c0c6, +0xbb508c0d,0xbb0fcfab,0xba8e3f27,0x39091ffa,0xb931295e,0xb95f5207,0x383cc34c,0xb938e3e6,0xb9d01dd8,0xba35709d,0xb9e01b83,0xb9aee4fe,0xb71f0345,0x390589d1,0xb910c871,0xba317440,0xbb394ed8,0xbaacd5e1,0xbb033383,0xbb0776c2,0xbb395254,0xbb49ada9,0xbb62e21c,0xbb8b83ff,0xbba14402, +0xbb9ab9b6,0xbb8fd07d,0xbb8506a6,0xbb81828e,0xbb7160d8,0xbb5b32fa,0xbb353432,0xbb1c352a,0xbb000304,0xbad24393,0xba7a005f,0xbaa18c29,0xba6c9df0,0xba289e9e,0xb993785a,0x394f028f,0x3a3f6b2c,0x3a9eafdb,0x3aa806cb,0x3abec04f,0x3ace55c0,0x3acde04f,0x3ac48508,0x3ab47c1f,0x39f4726c, +0xb95261c8,0xba12b930,0xba5b7259,0xbb43e768,0xbb5a12f4,0xbb4c5260,0xbb4e6203,0xbb4a5ba0,0xbb75cbef,0xbb75be90,0xbb7c0f5e,0xbb65332c,0xbb5e46da,0xbb54d7f3,0xbb454b3a,0xbb380844,0xbb2f3735,0xbb32e34f,0xbb3189b2,0xbb099396,0xbb10ce0b,0xbb0aca8d,0xbb0fcf48,0xbb025e0e,0xbaf84b6c, +0xbaedbb29,0xbadd521c,0xbad1bb82,0xbabcbf1a,0xbac245c6,0xbac37f13,0xbac26ee4,0xbabe5538,0xbab5e441,0xba97a230,0xbac8bd56,0xbaf30bf2,0xbb173d1e,0xbb30bbc2,0xbb4d9f2b,0x3987b5fa,0x39ded482,0x38dbe26e,0x395c088b,0x399f8bbb,0x3a2134e5,0x39123325,0xb8d26c2e,0x39a035f6,0xb9e2e06c, +0xba03c35c,0xba12cff5,0xb60fa8f8,0x392a4746,0xb86a0d87,0x39e97b9b,0x3a143916,0xb89005c4,0xb8957b83,0xb95e541b,0xb9858c59,0xb95cb42c,0xb8e62210,0xb8927a9b,0x39c8484e,0x3a3028b3,0x3aaa516c,0x3a35fd9f,0x3a11c19b,0x39339a21,0x3a2cb214,0x3a02a649,0xb976d5f1,0xb926d6b1,0xb89c42df, +0x39c2ba98,0x39dd50ac,0x3affcf6e,0x3a6620be,0x3a8addd5,0x3a84740e,0x3ae5394a,0x39158bbc,0xb8dfa8cd,0x3a97a1f3,0xba2c9dcf,0xba8b426b,0xba8e53ad,0x3865fed0,0x3a1c5f60,0x381ce5aa,0x3aa5e269,0x3a8c5374,0xb88d6523,0xba6eca10,0xbadc9608,0xbae70eed,0xbadd065f,0xba9e3a2c,0xba1e758e, +0x3a84f648,0x3b13337f,0x3b7c8642,0x3b167581,0x3aafa2bb,0x382eb3da,0x3a8dd0e9,0x3a56b6e6,0xba378fcb,0xb9f4a460,0x38b0edb8,0x3ad2f04e,0x3b01a2b6,0x3af438b2,0xb8f62144,0x3a2fd22a,0x3a92e538,0x3b4ba500,0x39c48eaf,0xba5bb7a5,0x3aa6e479,0xbb0ab822,0xbb29322d,0xbb0a60b3,0x38fcc9f4, +0x3ac9dbed,0x39a9d03e,0x3b0e9b83,0x3b19e161,0x396faaba,0xba7f7467,0xbb1289a5,0xbb2d6225,0xbb292a2f,0xbaf63ec1,0xbaafb8dd,0x3ab0035a,0x3b4e5ae8,0x3bd405cc,0x3b4b3ef0,0x3b20b639,0x39b7bcda,0x3b3fcdc3,0x3b0a8c02,0xbafd629d,0xba96830c,0xba27021b,0x3ae5cda6,0x3b02258f,0x3bcaa1a8, +0x3b215503,0x3b4c5842,0x3b5e3971,0x3b9ddff0,0x3a3c10c3,0x3a635b2a,0x3ba560e5,0x3b303b6d,0x3b36fdc6,0x3aece76d,0x3b3133bc,0x3b6cf36c,0x3b330adb,0x3b7b0249,0x3b58c669,0xba8d9ea7,0xbb40c5af,0xbbaf84f9,0xbbdb8bcd,0xbbda54ae,0xbba76abb,0xbb3a2ac5,0x3b33e0d5,0x3c00e513,0x3c5a8d4b, +0x3c0396de,0x3b65081c,0xba5a0f95,0x3b32529c,0x3b1095e7,0xbb45b73a,0xba2a35c6,0x3af0738f,0x3bc5567f,0x3be0c521,0xbc151c69,0xbbd8023f,0xbbefe365,0xbb85f066,0x3b671fed,0x3b5b5008,0x38f3d2bd,0xbbc20554,0xbbb38775,0xbad68f73,0xb776ec0c,0x3bc64c18,0x3bb08c05,0xb98906c9,0xb987f2a5, +0x391a001e,0x3b9e69a0,0x3b9a5d40,0x3bad8444,0x3be0fdca,0x3c093ab7,0x3bd5af5f,0x3b63f355,0xbafd13d1,0xbbde9b16,0xbc0f9d1b,0xbbc4ee6f,0x3b08d653,0x3c4d5755,0x3beca437,0x3b9f31de,0x3bb4197e,0xbb944b73,0xbc01c6c3,0xbc08f555,0xbc171aec,0x3c16503c,0x3bfb466d,0x3bcb3723,0xbafff241, +0xbc4fee57,0xbc3b3db1,0xbbb0a5f6,0x3a657955,0x3b80e092,0x3b00477c,0xbb4ffc54,0xbb99da2e,0xbb29e73d,0x3abe9f93,0xb9d95ccd,0xba9cfb28,0xbaf0296e,0xba12ab2b,0xba084a85,0xbb3f8382,0xbab3c796,0xbb0b73ea,0xbb0e5256,0xbb385eef,0x3a2c48ab,0x3c003fc0,0x3c1d257b,0x3b9330d6,0xbbaf7971, +0xbb7cfcfc,0x3a4156c1,0x3bbdbf25,0x3c615975,0x3c45ce90,0x3aa0b853,0x3bac1b93,0xbcc0a0fd,0xbd0cfe59,0xbc27abbf,0xbacebffa,0xbbaafd28,0x3b89d223,0x3b2a45a6,0xbbb70050,0xbb831076,0xbaf9bd9b,0x3a96fe52,0x3aa6201d,0xb980113d,0xbaffdb5a,0xbae023aa,0xb99f8bdd,0x3b01cd79,0x3a0bfa3e, +0xb99999f9,0xbaaf6136,0x3afd0d0c,0x3b584a4c,0x3b472721,0x3b39d658,0x3a6685ba,0xbaa4f337,0xbacdf74e,0x3a723167,0x3abf2e86,0x3c818955,0x3c258559,0xbc83246d,0xbc44fad1,0xbc2807a8,0xbc04d353,0xbc58d7ae,0x3c73ad87,0x3c92d772,0x3c369547,0x3bd5beb2,0x3ba533fd,0x3aa9e3b0,0x38f1cc4e, +0x3a88b32c,0x3a0c7253,0x38993ab2,0xbabf6c9d,0xba2e3984,0xb916b24b,0xb8c888d4,0x396e3925,0xba77291d,0xbb4232b5,0xbb89b8ca,0xbb9122c6,0xbb9160c2,0xbb7d83e6,0xbb497a07,0xbb016c49,0x3a9bde8a,0x3b67ae1f,0x3bd58d1b,0x3bb81489,0x3b7a542c,0x39489f7e,0xbb7356b5,0xbb5c2690,0xbaafdd76, +0x3a8a7fea,0x3af3a257,0x3b8e8235,0x3c06a4ad,0xbc485323,0xbc1d8ff6,0xbbd05454,0xbb097e46,0x39f969f9,0x3a92a6b8,0x3add310c,0x3b36a7c0,0x3b34c3d8,0x3b234143,0x3a960d97,0x3a698c05,0x3a117774,0x3a59f419,0xbb2fd83f,0xbb950ff8,0xbba3de68,0xbba15635,0xbb813067,0xbb4d4c89,0xbabf240c, +0x38e0a04c,0x3a336fba,0x3b1ace41,0x3b87bef4,0x3bdc9013,0x3bfc3f11,0x3c13ac4b,0x3c2ed2b7,0x3c1fefa6,0x3c12a8ed,0x3bd87e76,0x3bd328ef,0x3b154e6c,0xbbb3d025,0xbc29b67f,0x3c13c2bd,0x3be0cb9a,0x3bdbc6d4,0x3bdf8a6a,0x3be44068,0x3bee38e3,0x3bdfe06a,0x3bc1ced0,0x3bbed028,0x3b9d4886, +0x3b5097f2,0x3a7f2fca,0xbaac7a90,0xbb619e77,0xbb62b3b3,0xbb4af891,0xbb1353df,0xbb417875,0xbb45bd00,0xbb44b24a,0xbad8359e,0xba521ca2,0xb9ba41d1,0x39cee719,0x39845c06,0xba475287,0xba87f584,0xba5471d6,0xb9cd03c5,0x3a2357b9,0x3af2a0c4,0x3b4536a9,0x3b8a8ebb,0x3bc53818,0x3c0dd3d9, +0x3c16ce8b,0xbb78bf41,0xbba901b2,0xbbb2d2f7,0xbbc415f5,0xbbe5c20a,0xbbc7adbd,0xbb9f7be5,0xbb811aba,0xbb82790d,0xbb7a94f4,0xbb72eda9,0xbb75cf6e,0xbb804a3a,0xbb902555,0xbb82d8dc,0xbb86dd14,0xbb89388a,0xbb7f9ad7,0xbb698b03,0xbb607460,0xbb290eb6,0xbae1b94d,0xba430b80,0xba65fce9, +0xba4ab112,0xb9e799cb,0xba3ff729,0xba875fdd,0xbab6a0eb,0xba8beebb,0xba5ae316,0xb967d050,0x394bf203,0x3992f66b,0xb7f67e92,0xbb14da8b,0xbb139710,0xbb42d84e,0xbb435a5b,0xbb70477c,0xbb8125fb,0xbb8da384,0xbba589e7,0xbbb83bc6,0xbbafe8da,0xbba30aa5,0xbb970fa2,0xbb904af3,0xbb85d9ba, +0xbb7577cb,0xbb59c423,0xbb4681a1,0xbb2f3eec,0xbb1baeff,0xbaf57baf,0xbb0c70bc,0xbaecdeb3,0xbac3e04b,0xba91f370,0xba1ab03d,0xb840db16,0x3a041df4,0x3a15baf0,0x3a4b44cb,0x3a7024cd,0x3a80a5c9,0x3a76089f,0x3a52a9e6,0xb977be4a,0xba8d71bc,0xbac9de15,0xbaeeb170,0xbb5bc22e,0xbb73832b, +0xbb671083,0xbb69fadb,0xbb682e24,0xbb83d8ff,0xbb852427,0xbb8ad7fe,0xbb7ed2d5,0xbb77ed46,0xbb6e14cb,0xbb6061e5,0xbb53821d,0xbb49015b,0xbb492eb6,0xbb46d298,0xbb2a9e3a,0xbb2f7524,0xbb29eef9,0xbb2eaa09,0xbb1e1752,0xbb1507a4,0xbb0c97ee,0xbb031e33,0xbaf7a4bc,0xbadf6bc8,0xbae5fca3, +0xbae83580,0xbae9a49e,0xbaebc3e5,0xbae91fee,0xbace282b,0xbafa6793,0xbb0ed18c,0xbb2b3ecd,0xbb45fa9f,0xbb57985c,0x39f45bd9,0x3a1f5bf6,0x398660ec,0x399aa8b8,0x39c6c314,0x3a5cbe4a,0x39680312,0xb831084a,0x39c55f20,0xb9eae259,0xba1022ee,0xba27d9c1,0x3821d734,0x39877b88,0x384e096b, +0x3a1cd7ac,0x3a489fb9,0x39a30f01,0x3928cd12,0x372089e9,0xb841ac02,0x381e4297,0x39352041,0x3991da2f,0x3a3b37ec,0x3a7ec605,0x3ac19cae,0x3a6fca81,0x3a49eb2c,0x39b55f5f,0x3a6d2b92,0x3a4604b4,0xb7fe08b3,0x390b5a73,0x397a8ec5,0x3a3700a7,0x3a2d0db2,0x3b031940,0x3a67feab,0x3a54a972, +0x3a56eaee,0x3b05de25,0xb81f38bc,0xb9d3f6ed,0x3a801ef7,0xba884b53,0xbac1a7b9,0xbabab031,0xb8a6aa7b,0x3a185ca9,0x39141922,0x3abb2651,0x3ab6bc22,0x3a3451a8,0xba06d5a6,0xbababe3e,0xbac20d08,0xbaa55ea1,0xba251ea7,0x3926b8d7,0x3ae7abc5,0x3b39f288,0x3b826799,0x3b1cd19f,0x3ab985dc, +0x3906d3f2,0x3abada86,0x3aa7aa6e,0xb9aa4033,0x3918d956,0x3a327941,0x3b0bf750,0x3b114ae8,0x3aff1e20,0xb906ae70,0x395c4713,0x3a2eb295,0x3b6a056a,0xb90a3c7a,0xbaba2f64,0x3a6c91f9,0xbb47dba1,0xbb6b5fd4,0xbb576908,0xb9fe8210,0x3aa3d71f,0x392ed77e,0x3b18e852,0x3b2bcdf0,0x3ab95feb, +0xb9dfdacb,0xbaf5ca25,0xbb19a594,0xbafe86da,0xba8c4b7e,0xb988387c,0x3b201d12,0x3b837f26,0x3bd5db3b,0x3b58d660,0x3b3034bb,0x3a1aff0e,0x3b5df977,0x3b3030fc,0xbac96a01,0xb9879158,0x39b87798,0x3b2b146d,0x3b1df845,0x3bc1780f,0x3b0b373f,0x3b024b98,0x3b28514b,0x3bbcbbbe,0xb96934f4, +0xba385703,0x3b747392,0x3a37eb7e,0x39f61caa,0xba59aa27,0x3b0dd048,0x3b6abb0c,0x3b1e0bc4,0x3b8ae0ab,0x3b898d82,0x3a8e31c6,0xbb085df2,0xbba9291e,0xbbd4d941,0xbbba7a0f,0xbb6ef238,0xba59e3d1,0x3b9f3f76,0x3c1a1047,0x3c559458,0x3bf4fdd5,0x3b4ac186,0xba617a39,0x3b54c759,0x3b4c5197, +0xbb072049,0x3a70d43e,0x3b52ecf2,0x3be8d854,0x3be8b08c,0xbc13aa13,0xbbc394a0,0xbc0130b7,0xbba9e4c6,0x3b1aa94a,0x3b48f700,0x3a72772c,0xbb8df4d9,0xbb8ad038,0xba8ca405,0x38f21dd7,0x3b915cac,0x3b7b2252,0x3a774317,0xba7d52cb,0xba44b648,0x3b912a4d,0x3bb34b2d,0x3be763e4,0x3c120e36, +0x3c17c7fc,0x3bdc3c3e,0x3b57f582,0xbb478fbc,0xbbf94961,0xbc02f9e2,0xbb7bc081,0x3b94728f,0x3c5675d8,0x3c0517df,0x3ba16fbb,0x3b8b2e60,0xbb8797e2,0xbbd93a45,0xbbd8f21b,0xbc0c5741,0x3c055d69,0x3c070d0a,0x3c124968,0x3ab51e9f,0xbc343729,0xbc4078ba,0xbbe46d59,0xba042941,0x3b38b0d4, +0x3ac41ff3,0xbb1c5fb1,0xbb8bbb83,0xbb3f8441,0x3a782145,0xba89de96,0xbab35be3,0xbb08a485,0x39da046a,0x3a521a18,0xbaa97d2f,0xba53fdc0,0xbaf4a3e6,0xbab1187a,0xbadab93f,0x3b0c0fb5,0x3c23ff8c,0x3bfe0b58,0x3ac57f6f,0xbbf60cf9,0xbb85f3d4,0x3adc1712,0x3bd1c1b4,0x3c69dab4,0x3c34baeb, +0xbb282886,0x3b2df375,0xbca0e9bd,0xbd1be383,0xbc6d760f,0xbb8abafe,0xbbcd4c3c,0x3b870346,0x3b4579eb,0xbb7433fe,0xbb6ca143,0xbb09982a,0x3a6867e5,0x3adf0ef0,0x395b29a8,0xbb1a0811,0xbaea05d1,0xba04e4be,0x3af448e5,0x3a44c5da,0xb89c69a9,0xba6067a9,0x3ae61a4f,0x3b2aa9b4,0x3b0d8a93, +0x3ad17792,0xb9c77800,0xbaf0dee4,0xbb05f412,0x3a1bf4a2,0x3a997409,0x3c6dcca0,0x3c08d20d,0xbc8911be,0xbc351ceb,0xbc070c9a,0xbbcf4b04,0xbc019ab1,0x3c7e1296,0x3caf9c62,0x3c6f8e09,0x3c092307,0x3b89377c,0x3ae40111,0x3a7511fe,0x3a96c1c8,0x3a14414a,0x39f64231,0xba879d07,0xba5913a2, +0xb9ab40b0,0x39d9d33b,0x39cd04bf,0xba09fd7e,0xbb06b0c1,0xbb5f9889,0xbb81b025,0xbb818565,0xbb4fd15a,0xbb0e9d69,0xba2bfd12,0x3aed51e9,0x3b7da6e8,0x3bc52fed,0x3b9d39f8,0x3b0bf084,0xbb4045b6,0xbb9ce0d5,0xbb70893d,0xbb044178,0xb9de0dd5,0xb8b50ec7,0x3b2ccb70,0x3be5148b,0xbc3d89dc, +0xbc0b8432,0xbbd81cbe,0xbb222beb,0x38e5c5c9,0x390bbb26,0x3a315f07,0x3b2faa7d,0x3b19e4ed,0x3af44e49,0x3a331050,0x39399e87,0x37e5c83d,0x3a4a820c,0xbb1f940a,0xbb88070a,0xbbabe22f,0xbbab091f,0xbb9a0d74,0xbb8ca9e4,0xbb23cf99,0xba445333,0x39a83427,0x3b0b6bc4,0x3b8ac682,0x3bec92af, +0x3bfd3e98,0x3c0fa509,0x3c20e2d0,0x3c155ff6,0x3bfd20f9,0x3ba49577,0x3b8c82e0,0x3a1d27df,0xbbbac390,0xbc23cca2,0x3c0e1b82,0x3bf8259b,0x3bfa0053,0x3bf37a50,0x3bee329a,0x3be9f0d9,0x3bd21515,0x3bbb8d39,0x3bbd54dc,0x3ba9cbcb,0x3b7c0f38,0x3b07449f,0xb99febae,0xbb383cef,0xbb5531c8, +0xbb445992,0xbb094d9b,0xbb161a30,0xbb17cee0,0xbb1f8d6e,0xbacde527,0xba928c17,0xba5690cd,0xb72a5032,0xb9189ab8,0xba834f9c,0xba516c39,0xb9972332,0x398165cf,0x3a9d2d36,0x3b2ea410,0x3b85a1f8,0x3ba33057,0x3bc7e449,0x3c006f30,0x3c09a676,0xbb4c920a,0xbb91fba7,0xbb962838,0xbb9ad43b, +0xbbb0eefd,0xbb8f5705,0xbb48460f,0xbb06bdc9,0xbb262ebe,0xbb322a5b,0xbb4dff54,0xbb5a68bb,0xbb7c163c,0xbb8df242,0xbb86f474,0xbb8b3c36,0xbb91c24f,0xbb876e27,0xbb76fc4a,0xbb6156d2,0xbb37e9b6,0xbb105a8a,0xbac967cc,0xbab4fcac,0xba888173,0xba119fc7,0xba4e04f8,0xba876fd1,0xbaaa149b, +0xba960b24,0xba841a85,0xb9cca0a5,0x3853c2d4,0x39b0f89c,0x397de14c,0xbade049e,0xbb571cef,0xbb813eb9,0xbb819e80,0xbb91c6bb,0xbb9bb505,0xbba6befb,0xbbba51f9,0xbbc95e92,0xbbbdfd98,0xbbaf061c,0xbba1fea3,0xbb969aad,0xbb8ac001,0xbb7f204c,0xbb6ed17c,0xbb5f47b0,0xbb4dfa0b,0xbb3e6b96, +0xbb2a6892,0xbb34b58d,0xbb21fd25,0xbb0ee20f,0xbaf2612a,0xbab74270,0xba7c60f1,0xb9f2bc11,0xba000ba7,0xb9b87ecf,0xb986e6cd,0xb91d31e3,0xb90c71b4,0xb97bc742,0xba9dbb92,0xbb088635,0xbb2bc953,0xbb3fb7b7,0xbb67cb6a,0xbb7e2447,0xbb759df1,0xbb7a5148,0xbb7b33b2,0xbb854444,0xbb880ebe, +0xbb908b57,0xbb859962,0xbb822bea,0xbb79c6ba,0xbb6f0850,0xbb62c68b,0xbb566db1,0xbb52fce4,0xbb4fad5a,0xbb431f86,0xbb443dcb,0xbb3f6e4a,0xbb421f05,0xbb320149,0xbb278fd3,0xbb1d9b2c,0xbb140f93,0xbb0c3547,0xbb000db5,0xbb035e50,0xbb04d1ca,0xbb075045,0xbb0ba428,0xbb0ea6f5,0xbb066c08, +0xbb1860bf,0xbb24b0d8,0xbb3afa62,0xbb526115,0xbb54a852,0x3a26f898,0x3a481ba9,0x39d0ac59,0x39bd6cca,0x39e3b301,0x3a8a7ba6,0x399435f7,0x37f0411d,0x39f78fc7,0xb9db02a9,0xba0f2f3a,0xba1fd7c1,0x38ae9d8f,0x39af5c0e,0x39363720,0x3a388f94,0x3a689b43,0x3a2c0d27,0x39b7bd80,0x394af9a7, +0x3911617f,0x3985d475,0x39dc0f93,0x3a20be2c,0x3a81864d,0x3a9db566,0x3acea697,0x3a8eb8d9,0x3a78a9f0,0x3a0997d6,0x3a8da23d,0x3a7614dc,0x39297297,0x39c8f0a8,0x3a051d0b,0x3a7e0acb,0x3a61979b,0x3b029c1f,0x3a676215,0x3a14cd8a,0x3a240f19,0x3b127707,0xb93f65f1,0xba29c4bb,0x3a507826, +0xbab346b7,0xbaee0be1,0xbad18cad,0xb98d9e67,0x39f7b572,0x39662dd9,0x3ac636b5,0x3ad46d01,0x3aa67595,0xb91de72b,0xba90c0bf,0xba96227a,0xba56f6b5,0xb86d7fa3,0x3a76a460,0x3b1cda00,0x3b54bbd1,0x3b7f379c,0x3b1b7dd2,0x3abb3f65,0x398b810d,0x3ad84b8a,0x3ad17734,0x384cb3af,0x3a2f11c6, +0x3a9952f6,0x3b254dc5,0x3b1a7960,0x3b05b633,0xb8b9b664,0xb95a0ed5,0x395de229,0x3b799ca8,0xba14b0ec,0xbaf1f7df,0x3a1fc539,0xbb77d29f,0xbb8fd9a5,0xbb83680a,0xba955c6d,0x3a485c28,0x35c99aa7,0x3b17c8ba,0x3b2f1ba6,0x3b13b2be,0xb70fa5ec,0xbac670c9,0xbb012aab,0xbaaee933,0xb9a3bf61, +0x3a6a8bfd,0x3b5b8c41,0x3b97df92,0x3bce0edf,0x3b6096fc,0x3b3b9c44,0x3a7ac8ef,0x3b6c3b73,0x3b428a35,0xba8ecbc8,0x3a01d6ee,0x3a9c9276,0x3b57fd9e,0x3b3558be,0x3bb45747,0x3aee5b41,0x3a69c62a,0x3ad75854,0x3bce9cf4,0xba974aa2,0xbb0f2848,0x3b1b9273,0xbaa5f3c3,0xbaea0a4a,0xbb4675fe, +0x3ab39e0b,0x3b518432,0x3b1092aa,0x3b9056fb,0x3b9d6e40,0x3b428b82,0xbaa58d57,0xbb999f8e,0xbbc164b3,0xbb9547ac,0xbb06fa4b,0x3ab8005f,0x3bda4dfa,0x3c29c596,0x3c459dda,0x3bd6a09d,0x3b2512c7,0xba282991,0x3b6469ad,0x3b6fe8b5,0xba7eeb15,0x3b1530fa,0x3b8d29df,0x3c006ce8,0x3be885ba, +0xbc0a1e44,0xbbaea259,0xbc04f29c,0xbbc19569,0x3a9bdc7e,0x3b3d33f2,0x3af13b40,0xbb18a930,0xbb384599,0xba1af6a1,0xb7c79d52,0x3b2c7ed8,0x3b163482,0x3b035696,0xbae5aadf,0xbaf28dba,0x3b5cbc00,0x3bb69d8c,0x3c028a9d,0x3c20c196,0x3c14bc79,0x3bc75e26,0x3b1d10b7,0xbb844c8f,0xbbfb0086, +0xbbda0a18,0xb9ecc1d9,0x3bfe769b,0x3c59ddf0,0x3c10ede2,0x3b978a46,0x3b106141,0xbb890409,0xbbb9c396,0xbba48938,0xbbf61a0f,0x3bc8762a,0x3c095186,0x3c3ab2db,0x3b98eaef,0xbc119e13,0xbc407b35,0xbc0878a1,0xbaed0007,0x3acd5518,0x3a71cc93,0xbae493da,0xbb67499a,0xbb458641,0x399510b8, +0xbabc4f57,0xba97e2de,0xbafd3556,0x3aa89e59,0x3aff5f1a,0x39d9c09c,0xb9d99dbb,0xbac8d84f,0xb9a42dab,0xb9b661b9,0x3b659d7a,0x3c328119,0x3bb3202f,0xbac57a19,0xbc1f1540,0xbb8bebdc,0x3b20751c,0x3be21208,0x3c627507,0x3c1a9923,0xbbc2128b,0xb9374f97,0xbc6a5b9b,0xbd1e096b,0xbca24c82, +0xbc14eb5a,0xbbc89789,0x3b3bc784,0x3b1e4e92,0xbacee8da,0xbb3fbdaa,0xbb06e516,0x3a24bdad,0x3aed397e,0x3a04f5af,0xbb2abfcd,0xbae5d649,0xba445f09,0x3ac2484a,0x3a8e1dfe,0x3a0a6ab3,0x38f25832,0x3ae427d2,0x3af9b7ba,0x3a9fa252,0x39757e45,0xbade4d66,0xbb239936,0xbb2e4e01,0x398ba271, +0x3b0b8a4a,0x3c3a73ad,0x3ba8e703,0xbc73a502,0xbc1a887f,0xbbcefe92,0xbba2fd14,0xbb08fbed,0x3c64570d,0x3cb62470,0x3c8e20ad,0x3c284f96,0x3b71d606,0x3b20ed57,0x3b0c0581,0x3aac468b,0x39f40854,0x3a099a3c,0xba3399c7,0xba7f027c,0xb9ee1577,0x3a43d619,0x39fbb20c,0xb8732493,0xba7fd488, +0xbb1cfa47,0xbb579ca2,0xbb538adf,0xbb1eb1fc,0xbaa9736d,0x3a3013ec,0x3b0f3977,0x3b8070e3,0x3ba8abbd,0x3b7c603c,0x3a309f1c,0xbb9bd4ee,0xbbad16b2,0xbb7a7242,0xbb21f3a1,0xbae77ef0,0xbadefbd1,0x3a4a9862,0x3ba4cfe3,0xbc1d1b63,0xbbe6c77f,0xbbd45a98,0xbb3c9d93,0xb9da4f30,0xba33925f, +0xb952fe90,0x3b1f744b,0x3ae2fde1,0x3a7e79c2,0x38106c8c,0xb9d57da4,0xb9dad508,0x39cd0c0c,0xbb0a0a98,0xbb6d91d4,0xbbb1df7a,0xbbb09181,0xbbabece4,0xbba6858d,0xbb65e370,0xbade6877,0xb8364312,0x3ae23c1f,0x3b82fe69,0x3be7cc90,0x3bf28c27,0x3c07d6ff,0x3c0facd5,0x3c07df91,0x3bd2a349, +0x3b619a2b,0x3b1ead23,0xba03ce43,0xbbaba234,0xbc081b70,0x3bf18186,0x3bee33a1,0x3bf4d7c3,0x3be3ea7f,0x3bdadacf,0x3bcddb4a,0x3bb1a8aa,0x3ba11f3f,0x3ba6d717,0x3ba323ac,0x3b867ade,0x3b40894b,0x3a3bb0ef,0xbb00b9e7,0xbb3ab537,0xbb3a1aab,0xbb096cc9,0xbaeeaa47,0xbae013d8,0xbae5f616, +0xbab4b952,0xbaa54451,0xba9c73b9,0xb94da530,0xb93542b2,0xba4ec78d,0xb7c6c333,0x3a38d3cf,0x3ab2efb3,0x3b143d45,0x3b7f4c81,0x3bb3e2a0,0x3bbf0b26,0x3bc7dbd1,0x3bde03a3,0x3be520a0,0xbb080410,0xbb55fd9b,0xbb544b24,0xbb401f65,0xbb529889,0xbb1052bd,0xba6d8311,0x38aaa242,0xba51c8f7, +0xbaaaf73e,0xbb14c47e,0xbb2cc9c8,0xbb646855,0xbb82f420,0xbb81c617,0xbb874eae,0xbb91ef50,0xbb87018f,0xbb767fd8,0xbb5aa64b,0xbb3fd894,0xbb26d8f7,0xbb0fb133,0xbae10af2,0xba91e7dc,0xb9dad327,0xba081865,0xba2050c8,0xba2c38a2,0xba57e692,0xba7742fb,0xba12d1d8,0xb97b33f1,0x39115ff1, +0x3988accf,0xba85bc8c,0xbb876289,0xbb984415,0xbb9c31d2,0xbba2aeea,0xbbae1f1b,0xbbb6356e,0xbbc42439,0xbbcfb1ab,0xbbc19b80,0xbbb21efe,0xbba49478,0xbb959bca,0xbb890fb2,0xbb7ccf26,0xbb746228,0xbb679c70,0xbb5bdfd6,0xbb4fe839,0xbb45ec8f,0xbb4a785e,0xbb3c331e,0xbb2ca962,0xbb1c3ed1, +0xbb063cda,0xbae8d7df,0xbab716bd,0xbacc71c3,0xbacbff62,0xbacc7918,0xbabf7619,0xbab63120,0xbabfac4e,0xbb0ec3da,0xbb41c1dc,0xbb66a9c6,0xbb7cfc77,0xbb6751e3,0xbb78db4d,0xbb76daa6,0xbb7cdc3d,0xbb7fc76c,0xbb7e8c0b,0xbb82e00e,0xbb8d210a,0xbb837ca4,0xbb80422b,0xbb75d399,0xbb6e538f, +0xbb63160f,0xbb55ed2f,0xbb525b4b,0xbb4f38ee,0xbb4d50d6,0xbb4cdf78,0xbb49a10f,0xbb4afcd0,0xbb3c35b4,0xbb314dc2,0xbb26d12a,0xbb1e2892,0xbb16598c,0xbb0ac965,0xbb0ec4f3,0xbb1110dc,0xbb15e13e,0xbb1d0a21,0xbb24ad2e,0xbb23e497,0xbb30df01,0xbb379aa3,0xbb44c4dd,0xbb552168,0xbb4aef20, +0x3a4fd573,0x3a6def6d,0x3a0ce1e0,0x39f9e310,0x3a0aec2f,0x3a9ff2ce,0x39c2713e,0x39196f3a,0x3a182dc2,0xb9b0e614,0xb9fec3d4,0xba0111d3,0x390b31b1,0x39cbdbe4,0x3996b9bd,0x3a527445,0x3a81cfaf,0x3a7093f0,0x3a0e418c,0x39cd920f,0x399c9a85,0x39ebbd71,0x3a282c36,0x3a74abee,0x3aa0e21d, +0x3ab6dcf6,0x3ad65196,0x3aa14c04,0x3a906287,0x3a3e9c6f,0x3a9d7d60,0x3a8bf47b,0x39c107f7,0x3a22e83b,0x3a478f52,0x3a9f8307,0x3a8892f4,0x3b00a613,0x3a6b10d5,0x39e70d26,0x3a05df59,0x3b177179,0xb9897efe,0xba52c23f,0x3a226fa3,0xbad1afb4,0xbb044945,0xbacfed6e,0xb9ea0042,0x39aafa80, +0x398cdeb5,0x3aca86ac,0x3ae899d7,0x3adc9af1,0x396b5005,0xba36fec9,0xba4c62fe,0xb9c95bf4,0x3a0185f6,0x3adee334,0x3b406e66,0x3b691153,0x3b73a1b4,0x3b189076,0x3abd4365,0x3a0203e8,0x3ae77de5,0x3ae91d5d,0x39e206de,0x3a951baa,0x3ad3572b,0x3b39cc2b,0x3b20b581,0x3b0c4814,0xb61c2659, +0xb9d96b5f,0xb8d93250,0x3b78ded0,0xba6869b0,0xbb0959ff,0x39c0b490,0xbb8c5dd4,0xbba2700a,0xbb8ba45a,0xbae6dafd,0x3935a0ec,0xb9719bdd,0x3b0e2398,0x3b27e405,0x3b31bf7a,0x39b8db15,0xba8f2d9b,0xbad0cd89,0xba528bc5,0x39bdc60c,0x3b057441,0x3b86e1d2,0x3ba7055e,0x3bc1c3a4,0x3b667d74, +0x3b445b9c,0x3ac02e34,0x3b6a5a14,0x3b42994b,0xba0b5309,0x3a9bcd64,0x3b01edcc,0x3b7f1b9a,0x3b4a3c72,0x3ba4bf95,0x3ac51aae,0x3836b199,0x3a57fabd,0x3bd1169a,0xbb01b7c0,0xbb62fc04,0x3a90bb45,0xbb49852b,0xbb78201b,0xbb95048f,0x39cce143,0x3b24d147,0x3b052e7b,0x3b8e25c1,0x3ba74f04, +0x3b8ec00e,0xb9d03bfb,0xbb7bc33f,0xbba4cc9e,0xbb5bb9c5,0xb9e85fcb,0x3b70f6ee,0x3c06b7b7,0x3c33eab2,0x3c31fd0c,0x3bb97d47,0x3b050bc9,0xb8dbe687,0x3b6252b2,0x3b7ab2f6,0x39506bce,0x3b6492a3,0x3bace430,0x3c090047,0x3be49c3d,0xbbeb81ff,0xbb933a02,0xbbfd44a1,0xbbc688b6,0x39506c0d, +0x3b3a72f0,0x3b3aca47,0xb81b7b70,0xbabc7e5e,0xb9dbabc5,0xb9e964e6,0x3a5ad3a0,0x3a7ab594,0x3b395fda,0xbb267be9,0xbb4863b5,0x3aef093f,0x3b9d587a,0x3bfc9d33,0x3c1b4a76,0x3bfec16e,0x3b9827d0,0x3a606246,0xbb9dd859,0xbbeb1571,0xbbb2839e,0x3b58dd69,0x3c3533a2,0x3c54353f,0x3c15cafa, +0x3b80e304,0xb980f1b4,0xbb8f5dff,0xbba10a5e,0xbb7cf51d,0xbbc5614d,0x3b73f410,0x3bfd99ea,0x3c56f989,0x3bf24e18,0xbbd64c9e,0xbc3cd660,0xbc1bbde7,0xbb504d92,0x3988edbb,0x39ca5dc6,0xbaa341ee,0xbb2f8032,0xbb3fe5e9,0xb9e2593e,0xbac5cd22,0xba229dc5,0xbabb9667,0x3b03f291,0x3b3795d0, +0x3afda3a8,0xb8cefcb4,0xba87ac40,0x3a59d7cc,0x3aa33d05,0x3b9c8d2e,0x3c29cd65,0x3b44e412,0xbb8ac48a,0xbc3e8716,0xbb8e8230,0x3b4bfce2,0x3be80eb1,0x3c48d111,0x3be9cd81,0xbc0f45f2,0xbb2ecb8c,0xbc161bdc,0xbd16fea2,0xbccc6643,0xbc6c62d8,0xbb964227,0x3a619db0,0x3a6397cd,0x39a029b5, +0xbb08ba74,0xbae8355a,0x39ce0f2d,0x3ad464d5,0x3a1c84bc,0xbb3402bb,0xbadbfa36,0xba8c00e9,0x3a5f6fa7,0x3ab1a035,0x3aa4ee23,0x3aa25f95,0x3aed0e7e,0x3a9fc940,0x3935184f,0xba9e9e0c,0xbb41733c,0xbb4c8905,0xbb5351b4,0x3987ebbb,0x3b8933b6,0x3bf70b1f,0x3a93ba53,0xbc4c3f1c,0xbbda02b9, +0xbb66a3d1,0xbb79dcca,0x3b2b1630,0x3c2cb8a7,0x3ca3e822,0x3c9aaf24,0x3c470065,0x3b801ca9,0x3b5a4c35,0x3b618f79,0x3adcb0fb,0x398d87db,0x39a90dd7,0xb9f48c50,0xba874e94,0xba04c155,0x3a52618f,0x3a06397d,0x39e21359,0x392b6981,0xbaa5f319,0xbb1ef9ba,0xbb18425f,0xbad758bc,0xb9dd8e76, +0x3afd32f5,0x3b1f98e4,0x3b750a84,0x3b87adc5,0x3b403777,0xb9e10bbd,0xbbb26c99,0xbba441be,0xbb5db873,0xbb1c1692,0xbb3a3a04,0xbb354a79,0x3808ab89,0x3b3e2114,0xbbda1600,0xbbad0fde,0xbbc761af,0xbb5917ad,0xba8dffc7,0xba9d9aae,0xba49864e,0x3b0d959a,0x3a892022,0xb79be78a,0xba3bff2d, +0xba62ca58,0xba4723c6,0xb90c7752,0xbae0f139,0xbb480f70,0xbbb3b034,0xbbb2af1a,0xbbb70f10,0xbbb35d99,0xbb8e0eca,0xbb2aa2cc,0xb9f9bbc3,0x3aac9c5a,0x3b6ee852,0x3bcfc96e,0x3be07aa4,0x3bff15fa,0x3c00cf97,0x3bf36c53,0x3baa23d3,0x3b149ba3,0x3a876056,0xba882744,0xbb88d9f6,0xbbbf2af4, +0x3bae853d,0x3bc3d059,0x3bd280b1,0x3bbca819,0x3bb29ad5,0x3ba0b88c,0x3b857413,0x3b7636e2,0x3b82bd5d,0x3b8db22d,0x3b818b14,0x3b630890,0x3acfadc2,0xba883179,0xbb17d7a5,0xbb2cb737,0xbb118cdd,0xbad6b3b7,0xbab4cdeb,0xbaa2597d,0xba9b89ab,0xbaa2af1c,0xbab3a450,0xb91aa378,0x393ef1a5, +0xb7223fd0,0x3a9ffb20,0x3b04314b,0x3b3166b2,0x3b703b83,0x3bb0479b,0x3be5ed17,0x3bd71357,0x3bc3efc1,0x3bbc4a5d,0x3bac0791,0xba1ed104,0xbad11184,0xbac418d4,0xba53f96e,0xba39e15e,0x3973c576,0x3ab9078d,0x3b1b7c27,0x3a96dd96,0x39bc6b2f,0xba890d36,0xbada46f5,0xbb3caf6f,0xbb65e71b, +0xbb6beba4,0xbb78d5ba,0xbb8a9079,0xbb7f8968,0xbb6a8467,0xbb4de063,0xbb3f98d6,0xbb322832,0xbb2c2e3c,0xbafa9650,0xba94441e,0xb999f73e,0xb9486d21,0x362adbf3,0x39928345,0xb925687e,0xba0b9acc,0xb9e0e075,0xb9a0cfeb,0x3853c716,0x39b8226f,0xb8e32d6c,0xbb9527ce,0xbb9ea54a,0xbba77657, +0xbba38543,0xbbb09c3e,0xbbb51f06,0xbbbd64e2,0xbbc69f00,0xbbb82ab3,0xbbaaf456,0xbb9f0817,0xbb8f3e54,0xbb83c312,0xbb7745f9,0xbb721a2e,0xbb684185,0xbb616403,0xbb58ac32,0xbb541fc8,0xbb57e624,0xbb4c4e8b,0xbb3f1f24,0xbb32702a,0xbb22e554,0xbb19e896,0xbb08d0b8,0xbb1c65d3,0xbb277c55, +0xbb2fd32e,0xbb2ce24d,0xbb2617b5,0xbb297290,0xbb4178c9,0xbb65815f,0xbb836a7e,0xbb8f0c0b,0xbb5dd866,0xbb6885ff,0xbb6b68eb,0xbb713a9a,0xbb74fd34,0xbb67a71a,0xbb6d7102,0xbb812f1f,0xbb749c94,0xbb6fd3e0,0xbb66dd22,0xbb636fd5,0xbb5a55c3,0xbb4eab37,0xbb4cd892,0xbb4c0c98,0xbb4ba07f, +0xbb4c5a38,0xbb4be0e9,0xbb4f467c,0xbb414117,0xbb36cdfe,0xbb2c87bb,0xbb24fdd4,0xbb1d79c1,0xbb1259a9,0xbb17c05a,0xbb1ad4b9,0xbb21af3e,0xbb2a9943,0xbb35e0ca,0xbb3c9d4b,0xbb444a99,0xbb464c6d,0xbb49c58b,0xbb512421,0xbb451e27,0x3a7016b6,0x3a85e9c6,0x3a306eac,0x3a1b9901,0x3a206e7d, +0x3aa9811f,0x39e9ad27,0x397f3a70,0x3a28a17d,0xb988312a,0xb9da0362,0xb9b0a0f9,0x39286193,0x39d0ef1a,0x39b5c2ad,0x3a5e13cd,0x3a88a6b7,0x3a8c4fc2,0x3a341844,0x3a11a1d0,0x39de00b0,0x3a1de594,0x3a563b7f,0x3a9d18a5,0x3ab95c75,0x3ac895e0,0x3ad45f4b,0x3aac8d8f,0x3a9e78be,0x3a73feb2, +0x3aa504da,0x3a94ac11,0x3a12d780,0x3a58fc87,0x3a809823,0x3abc5824,0x3a9b9c01,0x3afa92c5,0x3a72910e,0x39ca34c7,0x39ef732b,0x3b0fe89d,0xb9a63b84,0xba6ca672,0x39d040aa,0xbae6c9e9,0xbb0adbde,0xbabf7d19,0xba200903,0x391769a0,0x3977d1d7,0x3ac60954,0x3af1cd5d,0x3af94cba,0x3a1c3d0c, +0xb988e5d0,0xb9dc8346,0x37e4dbdc,0x3a809769,0x3b1ac9b5,0x3b5d6df3,0x3b76df2a,0x3b614f7f,0x3b14f265,0x3ac20b93,0x3a56b151,0x3aea1bb7,0x3aef10c4,0x3a4a43a2,0x3ac96605,0x3b036341,0x3b4b6adc,0x3b2378a7,0x3b130615,0x39182f92,0xb9df4d85,0xb984dc48,0x3b659be9,0xba901c87,0xbb1109a1, +0x38946aea,0xbb978629,0xbbae9bc6,0xbb87f47b,0xbb174c98,0xb9ef4480,0xba169532,0x3afb22cc,0x3b190920,0x3b365999,0x3a300ad5,0xba2dec85,0xbaa69d95,0xb9bdf0d0,0x3a6e7e99,0x3b463806,0x3b9a3d05,0x3baff8b0,0x3bae40b9,0x3b68a3a7,0x3b49e041,0x3b082db7,0x3b5a64c2,0x3b33dbe5,0x3852dbb3, +0x3aec17d4,0x3b307fdf,0x3b928ac8,0x3b5b9361,0x3b9442ba,0x3aa5d232,0xba06f442,0x393271e3,0x3bc1bfb4,0xbb2ec8a6,0xbb93b32f,0xb8b4a64f,0xbb99f839,0xbbb4838c,0xbbad9744,0xba3ce499,0x3ace0ce0,0x3ae6b540,0x3b84d2e9,0x3ba7ae09,0x3ba9a0d7,0x3a1089e3,0xbb2eb09d,0xbb80cb71,0xbb09345b, +0x3a8e9390,0x3bbc9f7d,0x3c1b86ea,0x3c38e35f,0x3c1bdaf1,0x3ba48794,0x3af31d79,0x3a51d81f,0x3b54e1a0,0x3b701cf7,0x3aa76b0d,0x3b938538,0x3bc9b071,0x3c10d730,0x3bdda59f,0xbba978d9,0xbb5fc1e5,0xbbd9a157,0xbbb49453,0xb9d3fa53,0x3b451fdd,0x3b80afcb,0x3b1ace91,0xb95b2f13,0xba0ebcbb, +0xba858625,0xba3718ea,0xb88193d3,0x3b606988,0xbb53381a,0xbb8ac9fa,0xb6ba9be2,0x3b4b2510,0x3bc9af68,0x3bfd5853,0x3bb30445,0x3b2bf127,0xba8ac32e,0xbbb38ba7,0xbbd71e9d,0xbb9bdf11,0x3bcd1bee,0x3c59c7a0,0x3c40c2bc,0x3c1082b2,0x3b46f8a3,0xbb2a04c1,0xbb931ed9,0xbb8b7e79,0xbb4eda35, +0xbb869749,0x3ac32506,0x3bd3ed10,0x3c611365,0x3c154238,0xbb8ab770,0xbc37da4a,0xbc2ceed3,0xbb9665e4,0xba5c70d1,0x38b200c0,0xba6c3861,0xbaf3e52b,0xbb328d7f,0xba9ab64a,0xbaabf552,0x38f09090,0xba3d0148,0x3b293693,0x3b5c1555,0x3b523d4f,0x39ab6916,0xb9a4f55d,0x3b00b59b,0x3b5077db, +0x3bc4f6d7,0x3c0f75dd,0x3a035fc3,0xbbd78071,0xbc52f4d4,0xbb88fa52,0x3b6e179f,0x3bdd1dbf,0x3c2086df,0x3b8a94c4,0xbc3183a6,0xbb95ad50,0xbbbee090,0xbd0ab9d8,0xbcea75b3,0xbc98e22c,0xbafd293a,0xba9d1bba,0xba9654bd,0x3ac821a2,0xbaaf2baa,0xbab27ef5,0x397a82ba,0x3aa13ec4,0x3a0506f8, +0xbb32060f,0xbad83ee1,0xbac0f7c9,0x382bfb45,0x3ab4b3a3,0x3aecd0d9,0x3b0646a3,0x3ae262d8,0x39ff4369,0xba8b47f3,0xbb2f3355,0xbb84b340,0xbb6bc404,0xbb68d943,0x3a375a6e,0x3be3c1b5,0x3b7304fe,0xbb4c68ea,0xbc286b06,0xbb7f10e0,0xb9e4362c,0xbafe5a9a,0x3ba67318,0x3bcc3780,0x3c78f92f, +0x3c9a607f,0x3c5f1358,0x3ba34b77,0x3b83f43e,0x3b8fda24,0x3b193c52,0x39227690,0x38a40581,0xb99f294c,0xba8043e4,0xba028629,0x3a10b6f2,0x3a006270,0x3a6c4049,0x3a9efb20,0xb9101e44,0xbab8e3dd,0xbab7acb4,0xba6406af,0x39db3c49,0x3b432ce5,0x3b315f04,0x3b60b4f9,0x3b4c4291,0x3b0bc406, +0xba956719,0xbbb14671,0xbb893844,0xbb257608,0xbaf8c005,0xbb6852f0,0xbb4dd659,0x3a68a678,0x3a87fb26,0xbb618b20,0xbb5e67bd,0xbbb1c866,0xbb728d4f,0xbaf2af88,0xbaba1a08,0xba7b7b21,0x3af124a6,0x39e6be7d,0xba5d0d2f,0xbab9bf8b,0xba9d7019,0xba80baff,0xba22be04,0xbaa9d803,0xbb231372, +0xbbae51e3,0xbbb10855,0xbbbc02c6,0xbbb41a18,0xbb9e6da9,0xbb5b07eb,0xba85583f,0x3a7efe4f,0x3b57bc3a,0x3bb248a3,0x3bccf47c,0x3beec3b8,0x3becf828,0x3bd68506,0x3b84e188,0x3ad0d5ea,0x3944c98a,0xbaa3a838,0xbb460486,0xbb57f9ed,0x3b38abea,0x3b81f1d7,0x3b997f1f,0x3b889580,0x3b81e558, +0x3b5d7cb6,0x3b30ccb3,0x3b23d749,0x3b350520,0x3b5f1304,0x3b62957e,0x3b6bd487,0x3b0f8227,0xb9209f7c,0xbadf07b5,0xbb1a2d3d,0xbb1b8a26,0xbae1a4cf,0xbab4ffbc,0xba862e3c,0xba875bbd,0xba88c884,0xbaa687e0,0x3923195c,0x3a640b36,0x3aa11d30,0x3b36f0c9,0x3b6b29a2,0x3b8b67df,0x3ba9e6a9, +0x3bdfc21b,0x3c090e61,0x3bebc255,0x3bbedde7,0x3b96b3cf,0x3b569f26,0x3aa3db6f,0x39eb27bb,0x39f803d2,0x3aaebd1f,0x3add98b7,0x3b24d6fa,0x3b6419a8,0x3b8fdc72,0x3b44531f,0x3b063111,0x39e6f2a6,0xb9f05c6d,0xbb047db4,0xbb378922,0xbb479716,0xbb576612,0xbb7ce79d,0xbb67ff45,0xbb569d8e, +0xbb3c6692,0xbb36de4f,0xbb32a390,0xbb37f97a,0xbb026fca,0xba9aa816,0xb9b87427,0x3883e89c,0x3a2a68bd,0x3aaf3ae5,0x3a503f50,0x3994ab23,0x393f1399,0x3905875b,0x39e62b28,0x3a728cc7,0x3a9dbeb5,0xbb926106,0xbb93b76e,0xbba08bb5,0xbb923b5e,0xbba020d1,0xbba129da,0xbba40cdc,0xbbabaa39, +0xbba0b4f9,0xbb996e6b,0xbb92938a,0xbb858f94,0xbb7b7592,0xbb75a532,0xbb6fd370,0xbb671fe0,0xbb633c72,0xbb5c36da,0xbb5cb168,0xbb5d14eb,0xbb51ce7c,0xbb459cb8,0xbb3aa06a,0xbb30384f,0xbb2c3799,0xbb211fb5,0xbb3ab74f,0xbb506eb3,0xbb5fcff4,0xbb623c07,0xbb5b0797,0xbb5dc3d7,0xbb5e46e3, +0xbb6fbbe7,0xbb8474e9,0xbb8f560a,0xbb4efdce,0xbb51e8d9,0xbb5ad2b6,0xbb60ae21,0xbb640464,0xbb4d7468,0xbb51c11c,0xbb63bc59,0xbb5e93d6,0xbb5d1069,0xbb5812c8,0xbb59efc7,0xbb5493a5,0xbb4d7d73,0xbb4cf54f,0xbb4cecc3,0xbb4af342,0xbb4cf6a6,0xbb4d6bc7,0xbb4f897f,0xbb43f64c,0xbb3b02b2, +0xbb31f598,0xbb2b9a72,0xbb24e410,0xbb1a9624,0xbb2129bd,0xbb244b83,0xbb2bf456,0xbb347ccf,0xbb40c737,0xbb4c57f6,0xbb4f5510,0xbb4e34ac,0xbb49ee7f,0xbb488c91,0xbb46a730,0x3a783936,0x3a8af3a6,0x3a438d4c,0x3a322a6c,0x3a330b51,0x3aab0ae3,0x39f6e435,0x39a5c573,0x3a2e2f7b,0xb92cc2c6, +0xb9a6799c,0xb9261760,0x39503966,0x39d6032f,0x39ca2c21,0x3a5dc85e,0x3a84fc4a,0x3a97c51a,0x3a4cdab1,0x3a2ad875,0x39f1fc6d,0x3a2ec639,0x3a697445,0x3aae9a8a,0x3ac279f3,0x3acb3deb,0x3ac30195,0x3aaa8529,0x3aa005b3,0x3a8a7bf6,0x3a9d6150,0x3a8e0258,0x3a2badbb,0x3a765b6c,0x3a90e6b3, +0x3acbd11c,0x3aa28afc,0x3aea1300,0x3a73159e,0x39da88a7,0x39d2384d,0x3af3063f,0xb9bb21ba,0xba7c3371,0x388b84da,0xbaf62935,0xbb0cd92e,0xbaacc20d,0xba49a00d,0xb8a5ed59,0x38ad04f0,0x3ab85f53,0x3aee004d,0x3af93302,0x3a6b7255,0x393dde19,0xb8e2b5be,0x39c09207,0x3aaf283d,0x3b37a53c, +0x3b6cec68,0x3b784632,0x3b45958d,0x3b0d5da4,0x3ac27398,0x3a93625b,0x3ad9faa4,0x3addaf0c,0x3a7d1027,0x3aeb2bd7,0x3b151ec0,0x3b543ddb,0x3b1ef408,0x3b148e5b,0x39c3f4ee,0xb98a4d14,0xb98a6177,0x3b3fb2c4,0xba9a9744,0xbb0fb003,0xb9d09bdf,0xbb9d6f9a,0xbbb5ae67,0xbb7ff669,0xbb372d32, +0xba880c5f,0xba8aa875,0x3ad397ab,0x3b046caa,0x3b22a25c,0x3a6c643a,0xb9933848,0xba83e0d9,0xb84e86ca,0x3aa642e9,0x3b710ce4,0x3ba3a24e,0x3bafa1cb,0x3b92c825,0x3b63662a,0x3b48c95f,0x3b2b2feb,0x3b39e9cc,0x3b13ab61,0x39ed566d,0x3b13d041,0x3b53817b,0x3b9fcd3d,0x3b63b755,0x3b7dad7c, +0x3a9468a7,0xba4766d0,0xb9b4ce84,0x3b9ebb95,0xbb4e6a3f,0xbbac3e39,0xbaaad4a8,0xbbc76501,0xbbe277a3,0xbbb06b5b,0xbaf24b67,0x39e8d097,0x3aa5f3b8,0x3b6c8fe8,0x3b9f4d16,0x3bb01e6d,0x3abd2350,0xbaa87ce6,0xbb2d2691,0xba58c02c,0x3b1d787e,0x3bf0d3f2,0x3c281aa6,0x3c364e30,0x3c02b9f5, +0x3b957804,0x3afe1ebb,0x3af27bdd,0x3b3a18ee,0x3b4f36f9,0x3b0467f6,0x3baad9c8,0x3bdf6074,0x3c154ae0,0x3bcff997,0xbb230b71,0xbb0a0b8d,0xbb9b194c,0xbb86cd8b,0xba0bc0f4,0x3b60291d,0x3ba52a4e,0x3b99aead,0x3a649397,0xba53789d,0xbac91c67,0xbae862be,0xba435d7e,0x3b79a51c,0xbb729d61, +0xbbaadf3b,0xbafa8190,0x3a43eea1,0x3b672b0a,0x3b97c697,0x3b1da833,0x39579306,0xbb53d3f8,0xbbc9cd8b,0xbbc82e6b,0xbb946bb6,0x3c016135,0x3c6489bf,0x3c20e109,0x3bfec8a0,0x3afc557c,0xbb964797,0xbb92003b,0xbb6d78ba,0xbb38060a,0xbaf369df,0xb9e24f72,0x3b9d413b,0x3c58b54e,0x3c20ae54, +0xbb0a77f8,0xbc331ce4,0xbc3e1b28,0xbbc059d0,0xbacd3b2b,0x38d4b7c3,0xba278a5e,0xba9510a0,0xbb20e59e,0xbafa13b4,0xba7669f8,0x3a688ad6,0x38c63aa1,0x3b403519,0x3b716b2e,0x3b8c3910,0x3a81ee0e,0x3a32713c,0x3b48972e,0x3ba9701c,0x3be2b3c7,0x3bd0a90f,0xbaf2a0a1,0xbc08d5f9,0xbc58a6eb, +0xbb6b6cf7,0x3b854782,0x3bc69b67,0x3be02af0,0x3a89332d,0xbc426e98,0xbbbfb578,0xbb988c1e,0xbcf56b45,0xbcf6858a,0xbcab705e,0x3a24e4a9,0xbb39ad3b,0xbb46404f,0x3af09835,0xba5b13c8,0xba71743c,0x38e59c68,0x3a4d4f23,0x39ac1b09,0xbb24290e,0xbadf74b2,0xbafd88ff,0xba5a89bf,0x3a8a526c, +0x3afb58ad,0x3b08b4b5,0x3aa53834,0xb9a918f4,0xbb1c8a8f,0xbb8336ae,0xbba13476,0xbb849f41,0xbb6cfd50,0x3aae0742,0x3c1c533a,0x383213cc,0xbbe99d49,0xbc0e1fe6,0xbb12013f,0x3b088df5,0x3a88bad6,0x3ba6ba7b,0x3b1db7a9,0x3c125dde,0x3c8c4ddd,0x3c6a13ae,0x3bd7c0e6,0x3b8d239e,0x3b9a1c2d, +0x3b4cf6b7,0x3978728f,0xb7a049ba,0xb8dbf446,0xba50d67b,0xb9fe2270,0x38a1a4b6,0x39e1060f,0x3aaa6521,0x3b06ce9e,0x3a6789ca,0xb9b56808,0xba134a75,0xb8965cdc,0x3a9f4029,0x3b74e24b,0x3b47ed90,0x3b45ebb1,0x3b02bbf4,0x3ab76aad,0xbac13632,0xbb97b41e,0xbb4e03df,0xbada8d26,0xbac0e9fa, +0xbb552fdf,0xbb18341b,0x3b378f00,0x38f154ff,0xba0a187f,0xbacab0c2,0xbb915c5a,0xbb8066ba,0xbb2554bb,0xbab51b4d,0xba596028,0x3abaf715,0xb81a6633,0xbaae67a5,0xbaf4f2cd,0xbabae728,0xba8e7fd4,0xba6fb037,0xba64b264,0xbaff5139,0xbb9ebcc8,0xbbaa8cea,0xbbba2cc2,0xbbad4c61,0xbba3c331, +0xbb78a529,0xbac80e52,0x3a2a1107,0x3b3f4786,0x3b99c1e8,0x3bbc0688,0x3bdc61d9,0x3bd86cef,0x3bb62072,0x3b44474f,0x3a885f23,0xb9d4dfde,0xbabdc9bf,0xbb1192c0,0xba93eab6,0x39235d4d,0x3acfd3ba,0x3b278dac,0x3b1fb0c7,0x3b24c811,0x3b03233c,0x3ac85381,0x3ab4446c,0x3adacce7,0x3b1d168b, +0x3b2f3137,0x3b5ca575,0x3b22d560,0x3a1e7c2d,0xba89931f,0xbb00b158,0xbb205a4f,0xbb007bd4,0xbad662b4,0xba92fc12,0xba76c78c,0xba3a18d3,0xba72454d,0x3a40577d,0x3aeee066,0x3b2c0660,0x3b90db11,0x3bacdd96,0x3bc41d51,0x3bda19dc,0x3c02043b,0x3c14f7c9,0x3bf72204,0x3bb6d598,0x3b564d45, +0x3a9cf508,0x3b51920c,0x3b28c701,0x3b21716a,0x3b53acb4,0x3b7169af,0x3b8cfff3,0x3ba2abba,0x3bbb69d6,0x3b8f7de1,0x3b61e12b,0x3afe306c,0x3a53d33b,0xba77e28e,0xbaeedcdf,0xbb15004b,0xbb2c38c5,0xbb5f0090,0xbb4ade48,0xbb3cf365,0xbb2950d1,0xbb29dda2,0xbb2bac52,0xbb361b00,0xbb0246bc, +0xbaa4bbd6,0xba0d0a9c,0x3980b05b,0x3a9e5979,0x3b16b0a4,0x3aecd8c5,0x3aad8412,0x3a93adc2,0x3a80ff6c,0x3aa87294,0x3b01d2d8,0x3b359088,0xbb80d163,0xbb77f35d,0xbb89a890,0xbb6703d9,0xbb7ff6c5,0xbb7d1669,0xbb79bac1,0xbb8206ea,0xbb7d6a0d,0xbb8068b0,0xbb815ccb,0xbb7594c2,0xbb7202c3, +0xbb7a9c49,0xbb70d8f7,0xbb65a486,0xbb6046cc,0xbb587b1d,0xbb5d64c8,0xbb553405,0xbb493618,0xbb3dca91,0xbb33ed37,0xbb2d8956,0xbb2b8e99,0xbb2569cb,0xbb3f88b4,0xbb5a2d59,0xbb6bd8e2,0xbb72173d,0xbb6aa97d,0xbb6b0dae,0xbb5a9d38,0xbb5c3db1,0xbb6c4e7f,0xbb800011,0xbb36d654,0xbb33538e, +0xbb431ea3,0xbb4a043f,0xbb4eb04f,0xbb2eab2c,0xbb336266,0xbb413bd1,0xbb4628ee,0xbb48f262,0xbb49fbd6,0xbb519817,0xbb51b038,0xbb52772c,0xbb4f25c5,0xbb4c4e0a,0xbb4cfe3a,0xbb4c55cf,0xbb4a775f,0xbb4655dc,0xbb3f65a2,0xbb38a4e6,0xbb31ac00,0xbb2cce60,0xbb27a094,0xbb1f3fcf,0xbb2516dc, +0xbb270946,0xbb2d7ff6,0xbb32da08,0xbb3cad55,0xbb485e72,0xbb487e11,0xbb46261c,0xbb3dd7a4,0xbb35f6fb,0xbb449d03,0x3a6f02dc,0x3a87e605,0x3a4ae3aa,0x3a41b928,0x3a3d632d,0x3a9c58bf,0x39fc29fa,0x39bdd031,0x3a181ab6,0xb8e3f363,0xb98700ec,0xb890dd7a,0x393d2f7f,0x39bf6205,0x39b20636, +0x3a517295,0x3a76967b,0x3a92796f,0x3a549dd8,0x3a365a1d,0x39f12627,0x3a311067,0x3a6ae5c7,0x3ab1992f,0x3ac00f43,0x3ac3b6dd,0x3aab33de,0x3aa0edee,0x3a99f64e,0x3a93e662,0x3a8c3dce,0x3a7a9c61,0x3a2e1a7c,0x3a818114,0x3a9852ee,0x3acf3c5a,0x3a9f7a07,0x3acdc322,0x3a68f126,0x39f6a1d0, +0x39af1ef7,0x3aacd6d8,0xb9c505c3,0xba7cfd99,0xb9c14620,0xbafc63e8,0xbb089f5a,0xba9f21f3,0xba648015,0xb99afc78,0xb9333d64,0x3aa36342,0x3adf1820,0x3ae23292,0x3a90e416,0x3a122853,0x39479efd,0x3a303037,0x3ad196c3,0x3b468dee,0x3b71368e,0x3b710561,0x3b28ccda,0x3b04aba9,0x3ac1cde4, +0x3ab959ed,0x3abec928,0x3abcd810,0x3a82ccb1,0x3afe2f49,0x3b203b65,0x3b53708f,0x3b1358ad,0x3b0e1788,0x3a26b86e,0x35a33228,0xb934fc18,0x3b0af3cd,0xba90b3b6,0xbb046399,0xba89d947,0xbb9cfa88,0xbbb78891,0xbb76015f,0xbb509082,0xbac4aae9,0xbad63caa,0x3aab6824,0x3ad9b85a,0x3afae6a6, +0x3a860cb9,0x380e7df7,0xba3face9,0x3965e8ad,0x3ac5c1ad,0x3b82f938,0x3ba4d74f,0x3ba92f67,0x3b70b569,0x3b5c195b,0x3b453411,0x3b4976ce,0x3b1120c4,0x3ad50ad8,0x3a25a5e4,0x3b2b6e43,0x3b6dbf39,0x3ba5569f,0x3b609523,0x3b4342ce,0x3a773575,0xba5d3afe,0xba49d5c5,0x3b56480b,0xbb5c207d, +0xbbb89e89,0xbb29da64,0xbbebdabb,0xbc01fc00,0xbba795db,0xbb3a42a3,0xba3d5582,0x39fb864c,0x3b4b839e,0x3b908f18,0x3ba35c49,0x3b0d6e1e,0x38c72257,0xbaa2fe6c,0x39f53be3,0x3b676a4d,0x3c0978a3,0x3c2d6725,0x3c2ed332,0x3bd8f9ff,0x3b8c6b44,0x3b11ef6c,0x3b411d5f,0x3b1a1e4c,0x3b20cb42, +0x3b165397,0x3bb879eb,0x3bed8860,0x3c1423a9,0x3bba0112,0x3a32d918,0xb9dea8e7,0xbb0ddf60,0xbb026a24,0xb933584f,0x3b853330,0x3bc9c30b,0x3bdbd3cc,0x3af3d66c,0xba6b1856,0xbade2014,0xbb15709e,0xba96174d,0x3b81d52f,0xbb7f513a,0xbbbe954a,0xbb71bf2c,0xbae5e4a6,0x39bcffbd,0x3a531cfe, +0xba5e4c0f,0xbb18a03a,0xbbb562af,0xbbe039fe,0xbbbe9c9c,0xbb90c701,0x3c0aa9f6,0x3c5a4efc,0x3bf5edc7,0x3bcacaf2,0x3a52a606,0xbbbda78b,0xbb7f3a78,0xbb30fee9,0xbb2ba380,0x3a188a87,0xbb054a8a,0x3b403413,0x3c3e08d0,0x3c1c1b8b,0xb951b27e,0xbc2d76a2,0xbc4ee619,0xbbe18b47,0xbb036b65, +0x397617df,0xb9d4f1e1,0xba12ac2d,0xbb0c7ebb,0xbb22ea88,0xba0e3b01,0x3acb9727,0x3a68a93b,0x3b462081,0x3b7957a0,0x3ba948fc,0x3afe8c5f,0x3affcc8e,0x3b86db7f,0x3be26479,0x3bee2240,0x3b686d00,0xbb84833c,0xbc1d2d6e,0xbc4ea13b,0xbb209629,0x3b974cb3,0x3badb242,0x3b7523a2,0xbb0aee79, +0xbc43a599,0xbbd7b2b6,0xbb9f03c5,0xbccc7d52,0xbcec1c33,0xbcab73eb,0x3afe72df,0xbb72bda7,0xbb8a166f,0x3aa60cc0,0xba1af40c,0xba0a2748,0x38171117,0x39df7e33,0x39206c69,0xbb0b3f0a,0xbaf24409,0xbb1e3941,0xbad652b4,0x39e40a6c,0x3ac62014,0x3aa81f36,0x39e209f1,0xba978c3f,0xbb6b2dc2, +0xbba3864f,0xbbb127dd,0xbb8d62fc,0xbb4bc715,0x3b0cf34e,0x3c36d1f8,0xbb4bbc97,0xbc29ed81,0xbc01d932,0xba90aa8a,0x3b8d448a,0x3b997fb0,0x3b691ffd,0xb8ca4504,0x3b359881,0x3c675e5f,0x3c64fbe0,0x3c033d35,0x3b82ed9f,0x3b89573d,0x3b6e1fbb,0x39fd6750,0x3808de05,0x391e658f,0xba0e0f10, +0xba038248,0xb9ea4052,0x39ab8239,0x3acf7891,0x3b2dfc9a,0x3adf2f9e,0x3a292d58,0x3980f0d4,0x3a5d187a,0x3b04ac2c,0x3b8ac9dd,0x3b6359ef,0x3b2b32af,0x3a5cd923,0x3a27fe39,0xbad6de02,0xbb5d0954,0xbb1015b2,0xba8109ee,0xbaa99a24,0xbad69b33,0xb86ae73e,0x3ba814db,0x39b5f30e,0x3af5ad1c, +0x391b9753,0xbb516680,0xbb7c5020,0xbb3c93e6,0xba96a8a0,0xba09e69e,0x3a5e25ec,0xb9b4fc7b,0xbabc44f9,0xbafdad42,0xbac4d6bb,0xba8ca6ea,0xba7e0bd7,0xb9efe91b,0xbab75db8,0xbb8415f6,0xbb9dad3b,0xbbb21bcf,0xbba24651,0xbb9f217c,0xbb80c1e9,0xbaff8d41,0x39c0fe85,0x3b2995b0,0x3b864a0f, +0x3baccd3e,0x3bc6af0b,0x3bbe6b6f,0x3b91a5ef,0x3b024006,0x39a24cc0,0xba80d192,0xbae565ae,0xbaed443f,0x3a18d090,0xbb193712,0xba5f3262,0x39bf88df,0x3a50917d,0x3aa0c5ac,0x3a6a355c,0x3a2ca934,0x3a0abc4d,0x3a58e613,0x3abb9b86,0x3ae344c6,0x3b379fcf,0x3b2152f2,0x3a9e1262,0xb9d116ee, +0xbac17a52,0xbb1be195,0xbb12df5f,0xbb050bf9,0xbac2727d,0xba7942d0,0xb9b0d92e,0xb9c72c54,0x3ac7d755,0x3b3d7fda,0x3b7ec488,0x3bbf31da,0x3bde3a09,0x3bf6fbe6,0x3bff8419,0x3c0a46d3,0x3c1217b7,0x3bee52d5,0x3ba4e4d7,0x3af9cb84,0xba4d07d0,0x3b9fbabe,0x3b912cc4,0x3b8a0c1c,0x3b9a0ad8, +0x3ba7fae5,0x3bb39378,0x3bbdd2c3,0x3bce69eb,0x3ba9de4f,0x3b90b08e,0x3b51f17d,0x3b035ab8,0x39815249,0xba25a449,0xbab05421,0xbaf6daa4,0xbb3dfd8a,0xbb2b1fb2,0xbb210158,0xbb15a7aa,0xbb1a862c,0xbb212c8e,0xbb2dac78,0xbb00b036,0xbab0fa98,0xba496b0b,0x39ae5326,0x3aca9c03,0x3b3f67be, +0x3b2b5129,0x3b1875a9,0x3b0f2fa2,0x3b068456,0x3b1af7cf,0x3b54032d,0x3b8b87c7,0xbb47cb16,0xbb38f16c,0xbb543d74,0xbb20760b,0xbb33e418,0xbb2ec89a,0xbb2675d8,0xbb2a60f9,0xbb3759f5,0xbb4c0323,0xbb5e9da4,0xbb60e7cb,0xbb6a1965,0xbb802718,0xbb71c5da,0xbb620966,0xbb58019b,0xbb4ea08a, +0xbb5440e6,0xbb45867e,0xbb38d73e,0xbb2cf221,0xbb235b87,0xbb1ece43,0xbb1cc48c,0xbb1a2e11,0xbb2f6657,0xbb478abb,0xbb55a082,0xbb5bd7d7,0xbb53407a,0xbb4e9b8d,0xbb368b2d,0xbb2dc98f,0xbb35fbd3,0xbb47d0c1,0xbb13f63d,0xbb0be34e,0xbb206b6d,0xbb2850ae,0xbb2ff717,0xbb09a80b,0xbb0f6567, +0xbb184690,0xbb266a78,0xbb2e2998,0xbb35e006,0xbb430f3a,0xbb49a604,0xbb53c398,0xbb4849a9,0xbb41d56a,0xbb485a21,0xbb41ed6c,0xbb3cc5be,0xbb34d4d5,0xbb31e793,0xbb2d6503,0xbb28ae53,0xbb2566c5,0xbb21e9f4,0xbb1c0a2e,0xbb1eda83,0xbb1e5c00,0xbb21b93b,0xbb21f694,0xbb26a5e0,0xbb2e1d1c, +0xbb2d5c0b,0xbb2b506c,0xbb228be2,0xbb173516,0xbb3895b5,0x3a58e33f,0x3a7c0006,0x3a4ac054,0x3a3eda0b,0x3a33462c,0x3a7d1e37,0x39ee69b5,0x39b3ce11,0x39c672f7,0xb8f9fd6c,0xb98c1061,0xb8e10fe7,0x38b7413e,0x3986608d,0x3957db63,0x3a30f2a7,0x3a52a4f2,0x3a7bc342,0x3a431d8d,0x3a2d429f, +0x39ebabb6,0x3a297b90,0x3a5f66eb,0x3aa8afbd,0x3ab4d36e,0x3ab4fd93,0x3a914602,0x3a925aa1,0x3a8e9d89,0x3a983ee4,0x3a6bf3dd,0x3a4dce54,0x3a1ca80f,0x3a80ce75,0x3a982687,0x3ac81cd2,0x3a9433df,0x3aa8d88f,0x3a52a019,0x39ecc03e,0x39707665,0x3a2b4718,0xb9ce3eae,0xba750c67,0xba66aabb, +0xbaf724bb,0xbafc2fe7,0xba9d2d74,0xba6e291f,0xb9f818d9,0xba00f776,0x3a85f05d,0x3ac4649b,0x3ab9d3cb,0x3a9c3ec2,0x3a54bf5a,0x39f8f1b6,0x3a76e259,0x3ae8afb1,0x3b48bd7f,0x3b6c3430,0x3b6370d9,0x3b0e3f8b,0x3af5b91b,0x3abfbc89,0x3adde77e,0x3a9f2c12,0x3a929360,0x3a6377e5,0x3b01628b, +0x3b24bb5a,0x3b49b28b,0x3b01e91b,0x3b019b5d,0x3a6a5985,0x39715951,0xb875139d,0x3a9c357f,0xba729344,0xbae52cfa,0xbaf15abe,0xbb974e8e,0xbbb4f129,0xbb7a65b8,0xbb630508,0xbaf20336,0xbb127928,0x3a812dcd,0x3aa43310,0x3a9d68de,0x3a84f238,0x39837cbb,0xb9d93021,0x39f6633a,0x3ad899e2, +0x3b8346d2,0x3b9f98f9,0x3b9e7af7,0x3b44bad1,0x3b51efde,0x3b3eee63,0x3b643839,0x3ace1273,0x3a803ef6,0x3a19f110,0x3b3b7346,0x3b7e4613,0x3ba2c8c1,0x3b527b5a,0x3b01e7a4,0x3a3524f4,0xba778b2a,0xba990a2b,0x3ab6884a,0xbb58f844,0xbbb8cc4a,0xbb819534,0xbc01d843,0xbc0b3f3a,0xbb9bafdf, +0xbb6a9cb8,0xbae5fe3b,0xba119e4f,0x3b2935b9,0x3b79a680,0x3b877c84,0x3b2d8864,0x3aaab38d,0x39278e3e,0x3ae09395,0x3b914502,0x3c113426,0x3c2c65ed,0x3c240a91,0x3bb61a96,0x3b860685,0x3b2afe9c,0x3b84eb57,0x3af84f48,0x3ad65ac0,0x3b073c35,0x3bbbc6f9,0x3bf3b50b,0x3c0ca6be,0x3b9cdaae, +0x3b803cce,0x3acf28e1,0x3a2c9f88,0x39f24f68,0x3a2b2dc1,0x3b9dd34e,0x3beab40f,0x3c072dfb,0x3b3a13f8,0xba1f3a40,0xbab61101,0xbb101073,0xbaa298cc,0x3b7ed55e,0xbb75eb1e,0xbbc2f6bc,0xbbaad828,0xbb84690b,0xbb38660f,0xbb43f58a,0xbb7d4cc8,0xbb9af16f,0xbbfc9209,0xbbf42953,0xbbb8a750, +0xbb89ebbc,0x3c05f8e3,0x3c40558b,0x3ba734f3,0x3b8c8a38,0xb90daedb,0xbbc3c2f3,0xbb403f68,0xbad88a3f,0xbb1ad43c,0x3b41a858,0xbb55468b,0x3a8b9a61,0x3c154daa,0x3c09d3eb,0x3abd722a,0xbc24e78c,0xbc58bba8,0xbbf5d774,0xbb1a9c7b,0x3984ed3b,0xb9596e44,0xb92687b2,0xbaf525df,0xbb36dd2e, +0xb93bd624,0x3b01f580,0x3ac599b5,0x3b3b1e61,0x3b753841,0x3bbe9d7a,0x3b49587b,0x3b5cdb03,0x3ba5b594,0x3c05d473,0x3be6c414,0x3a56e91f,0xbbc34a63,0xbc29488c,0xbc36d662,0xba66a6f8,0x3ba85fd5,0x3b9192fc,0x3a492e67,0xbba0b9ab,0xbc38bf31,0xbbe06170,0xbbbd9c28,0xbc9ea0f4,0xbccd9e0d, +0xbc9be34b,0x3ac5f431,0xbb737b40,0xbb8e92bc,0x3893043b,0xba02ceb2,0xb94096a3,0xb89e766e,0x3973bf79,0x38e5264e,0xbad847c3,0xbb0275fc,0xbb39e769,0xbb14bba5,0xb9b1df3c,0x3a33fa80,0xb8aa7a01,0xba1b012c,0xbafec38a,0xbb946421,0xbbb620a8,0xbbb447ae,0xbb8f8155,0xbb040e4a,0x3b4934d7, +0x3c39bbc7,0xbbb4a3a3,0xbc474573,0xbbdbc8b3,0x38ba98c2,0x3bc81e6d,0x3c05b835,0x3ab88fbf,0xba27dd8c,0xbad95554,0x3c268eaf,0x3c489652,0x3c0b29c9,0x3b481948,0x3b3f1af4,0x3b674a98,0x3a3eac49,0x39089a49,0x39bb40da,0xb986d12b,0xba0d909e,0xba637c2b,0x396943d3,0x3ae24dcc,0x3b43e3bd, +0x3b1579f5,0x3ac2db91,0x3a86293c,0x3aec54ac,0x3b34a560,0x3b8f5169,0x3b78ca55,0x3b16ca4a,0xb9040779,0xb86dbb86,0xbae48844,0xbb08f678,0xbac9e626,0xba02e2fd,0xba908d8a,0x3a78a348,0x3b4deef0,0x3be50043,0x3ad9ad24,0x3b649c81,0x3ac5e9dc,0xbaed0729,0xbb5c9287,0xbb33629f,0xba4a8afa, +0xb91c0d7d,0x392f0af8,0xba062e91,0xbaa1a707,0xbad12b61,0xbab8e5b9,0xba831dc4,0xba5d85f5,0xb8a00568,0xba5e5413,0xbb421ab9,0xbb8967b7,0xbba37fd5,0xbb94db80,0xbb91cb5a,0xbb74d679,0xbb0dfa49,0x394aaaa6,0x3b16df9e,0x3b6b11e4,0x3b98cfaa,0x3ba8ba55,0x3b9e02f1,0x3b49bf9e,0x3a589a94, +0xba2fe0dd,0xbae42d80,0xbb123488,0xbad6e0d7,0x3ae2b72c,0xbb8f3f97,0xbb4a3f81,0xbada2aa8,0xba33dca6,0x38cf773e,0x3786952f,0x37d8d9d2,0xb7ee09ff,0x397503ba,0x3a19051f,0x3a4e092a,0x3b01b24d,0x3b0d6b3c,0x3ad56571,0x39366076,0xba7b2aca,0xbb0f1c33,0xbb230d3f,0xbb219d23,0xbb01c63c, +0xba91c87e,0xb8ef04a9,0x396bff41,0x3b158981,0x3b7a6987,0x3b9f8722,0x3be03c74,0x3c0067f3,0x3c0c317d,0x3c086e26,0x3c05f144,0x3bfee712,0x3bc8dc04,0x3b7f495c,0x3a0b811f,0xbb24a121,0x3bc0a312,0x3bb8ad09,0x3bb06ec0,0x3bb4fae0,0x3bbf8335,0x3bc3664b,0x3bc3167d,0x3bca9cdf,0x3bb1649a, +0x3ba1e3e7,0x3b87aa5b,0x3b47cc9d,0x3aba5296,0x3a20de71,0xb9d166f4,0xba97a3e5,0xbb1d92a8,0xbb0b54f9,0xbb052988,0xbafed468,0xbb06c3a3,0xbb12d103,0xbb214f43,0xbafc80ea,0xbabe3f7f,0xba886ae8,0x398548e3,0x3acdd7b0,0x3b48ff45,0x3b4868dd,0x3b4b123e,0x3b4fb5d6,0x3b4a6ef1,0x3b5d83d9, +0x3b8c40be,0x3bac46bf,0xbaeef1d2,0xbad09506,0xbb0b0553,0xbab11693,0xbad57ee0,0xbacf1a40,0xbabfdd95,0xbac24700,0xbafa0d6f,0xbb1ebcee,0xbb3eae33,0xbb4d0a66,0xbb5e752f,0xbb7c9007,0xbb6c64df,0xbb59ae23,0xbb4d2ae7,0xbb442c5d,0xbb48cb12,0xbb3aa45b,0xbb2d7512,0xbb200495,0xbb159f26, +0xbb113f94,0xbb0e0cd2,0xbb0d501a,0xbb184d61,0xbb27363f,0xbb2c6a86,0xbb2e71dc,0xbb2361b7,0xbb17581e,0xbafb89ad,0xbadb628a,0xbadaae21,0xbaf3aaad,0xbada2fe2,0xbabfe2ad,0xbaf1b7d0,0xbb0121af,0xbb0a4855,0xbaca589e,0xbad8f9d3,0xbae13753,0xbb050b45,0xbb1079db,0xbb1ccfe7,0xbb2de195, +0xbb3a03b0,0xbb4b2577,0xbb388573,0xbb3109e7,0xbb3a439a,0xbb3173b8,0xbb2b2caa,0xbb2406f9,0xbb23471b,0xbb21030f,0xbb1e6a95,0xbb1c8b55,0xbb1a6693,0xbb17384c,0xbb15725f,0xbb11c1c0,0xbb10d7a9,0xbb0b4928,0xbb0983d7,0xbb0a7501,0xbb091c54,0xbb075137,0xbaff5b5f,0xbae6889e,0xbb2a6c72, +0x3a37464d,0x3a5d239e,0x3a3ec1be,0x3a31cc44,0x3a2519f9,0x3a3f56ce,0x39d6fb0d,0x39a621a3,0x391fab66,0xb90085c8,0xb98e8f59,0xb958897a,0xb6881468,0x392820ad,0x389852ce,0x3a0d956a,0x3a269318,0x3a4e99cd,0x3a2b2260,0x3a1b0908,0x39d7c8b3,0x3a19037d,0x3a486d88,0x3a96295f,0x3aa2e22c, +0x3aa0f4c7,0x3a6b1b93,0x3a7f74b6,0x3a7cefd7,0x3a9543cf,0x3a39d405,0x3a1ab1bd,0x39f0d3b1,0x3a711e41,0x3a90268f,0x3ab78bc3,0x3a824cf9,0x3a803ba3,0x3a356107,0x39d0682b,0x3899eb6d,0xb72c68e2,0xb9cd982a,0xba659be5,0xbab61e18,0xbae63450,0xbadc34d9,0xbaa27fa1,0xba648d94,0xba1b1412, +0xba58586f,0x3a44cbb8,0x3aa0803a,0x3a8b7fb5,0x3a98ca12,0x3a810fbc,0x3a3d2b98,0x3a964944,0x3af49629,0x3b405ff9,0x3b601476,0x3b50d6d9,0x3ae8127e,0x3adbacb9,0x3ab79c15,0x3af87676,0x3a7da2c4,0x3a4a5e72,0x3a1da4d3,0x3af8be79,0x3b220a85,0x3b387103,0x3ada6ece,0x3ae27676,0x3a9627c7, +0x39cbcf1d,0x37bb134e,0x399ae75a,0xba32ffbd,0xbabadd78,0xbb2fb3aa,0xbb8d6cb9,0xbbae87d3,0xbb8771d0,0xbb6ec595,0xbb07f47b,0xbb361ef5,0x3a2a9f55,0x3a51569f,0x39fe5acf,0x3a6a3b0c,0x39ced1d0,0xb894e501,0x3a319ee5,0x3ae18601,0x3b77638f,0x3b96b024,0x3b91b868,0x3b1e54d8,0x3b428c64, +0x3b3405df,0x3b762d9c,0x3a838c43,0x39d8ccc4,0x39ae32a7,0x3b41fd36,0x3b81ffe1,0x3b991adf,0x3b3d7a7d,0x3a84d388,0x39fb6c0a,0xba8c39bd,0xbacd6cd9,0xba0e783a,0xbb488bab,0xbbade9a9,0xbbae22cb,0xbc056d36,0xbc0bd695,0xbb91fbb2,0xbb823811,0xbb2616d7,0xbae0a8b2,0x3b04b760,0x3b488829, +0x3b46d65f,0x3b3df213,0x3b13b129,0x3abc5778,0x3b369309,0x3ba728c4,0x3c10d959,0x3c271158,0x3c171208,0x3b969b98,0x3b77689e,0x3b3e7af5,0x3ba3e3f8,0x3ac96061,0x3a5e019b,0x3abb5463,0x3bb56069,0x3bf14ffc,0x3bffd062,0x3b79aa4b,0x3bdbd606,0x3b6e1ef2,0x3b598570,0x3b384d28,0x3aed76fc, +0x3bb62366,0x3c0147a3,0x3c1486f1,0x3b76f2c0,0x383d9f5c,0xba39d6ec,0xbad63b71,0xba8723d5,0x3b6b28ed,0xbb5397b1,0xbbb6ec22,0xbbd180f9,0xbbc17265,0xbbb5d274,0xbbc8eb8a,0xbbd0e788,0xbbdf8bc2,0xbc1bec00,0xbc0194ca,0xbbb3d94d,0xbb750f2c,0x3bec79b9,0x3c1b197c,0x3b35cb9c,0x3b188e8c, +0xba5871d7,0xbbacca17,0xbaec6fb4,0xba215437,0xbaf83758,0x3ba3ca22,0xbb85bc0c,0xba1e05dd,0x3bcb5060,0x3bdc2570,0x3b36a0c3,0xbc182b19,0xbc568894,0xbbf8fd80,0xbb2d8db5,0x3886b5e0,0xb8fef490,0x3851a22c,0xbad83c55,0xbb3aa70e,0x386663c7,0x3b0d0dfe,0x3af665aa,0x3b2456d2,0x3b68e665, +0x3bc8e4b0,0x3b8a5dea,0x3b9d5595,0x3bbfaacb,0x3c0d87ca,0x3bc9bbdf,0xbab8639f,0xbbf2bd9b,0xbc2d2b13,0xbc17d3e1,0x3a3da3d9,0x3bb0bc5b,0x3b66207e,0xbaee8e10,0xbbe79af5,0xbc274d99,0xbbddfd22,0xbbeafc15,0xbc64b02d,0xbca31bc0,0xbc8223db,0xb9ea8877,0xbb42f35c,0xbb603391,0xbaa769de, +0xb9d1ef6d,0x38b5ce27,0xb91b527d,0x3940eff6,0x395ed0b0,0xba90a929,0xbb04c888,0xbb4bb9d5,0xbb2f038a,0xba90578a,0xb9ac2e65,0xbad285d1,0xbad4e240,0xbb2da066,0xbbaabf4e,0xbbbc76c8,0xbbae4eb1,0xbb916c9e,0xba17f260,0x3b8102d9,0x3c2668d1,0xbbec8caa,0xbc4b7aa0,0xbb8de032,0x3ab4522f, +0x3bec153b,0x3c33d02b,0xba6645a3,0x3a867573,0xbb4e92ce,0x3bbc579f,0x3c10fac4,0x3bf893b1,0x3ae5d8c6,0x3aaca39e,0x3b3abdb7,0x3a514f46,0x39092f27,0x39c3c06f,0xb700cd84,0xba116bbb,0xba8b5578,0x39068349,0x3ae3b17a,0x3b4cae33,0x3b2c5fd6,0x3b0ceec6,0x3ae34e54,0x3b2d1eff,0x3b575d94, +0x3b883b29,0x3b7d4a18,0x3b0760ad,0xba5200a3,0xba1f3a2e,0xbaf30da5,0xba9d6265,0xbaa855aa,0xb94837fb,0xb9fbe61d,0x3b7b77dd,0x3bcda113,0x3c0105db,0x3b7ca826,0x3b89b961,0x3b1c1a56,0xb9d3812d,0xbb2047dd,0xbb051efe,0xb9b4a9ac,0x38e3547a,0xb9ee267d,0xba0735bd,0xba5baaeb,0xba80a858, +0xba965d56,0xba657601,0xba2561f5,0x3960e28d,0xb9ad05d5,0xbaea377b,0xbb5c4893,0xbb8df6f3,0xbb85f1e5,0xbb7c1d5e,0xbb56cb43,0xbb0bceb1,0x38425ae5,0x3afdc46b,0x3b4b1d42,0x3b77c461,0x3b7eeecb,0x3b67e5ce,0x3ac2b709,0xba056f74,0xbaeff0db,0xbb304456,0xbb3641f9,0xbace1826,0x3b1abc82, +0xbbb7e512,0xbb9ded71,0xbb57c72a,0xbaff965b,0xba6ac9f8,0xba307fb3,0xb9d833f4,0xb9c2a37b,0xb9331798,0xb8c71808,0xb830b06c,0x3a895f4b,0x3ad68d7c,0x3aede692,0x3a2633ad,0xb9ec96c0,0xbaf5fc69,0xbb2bea6f,0xbb39678f,0xbb20757a,0xbaba3363,0xb921c4a4,0x3a2f3c40,0x3b34480a,0x3b8f26d3, +0x3bb280ba,0x3bf0ea2d,0x3c08606f,0x3c11a692,0x3c0553a7,0x3bea8bca,0x3bbe5552,0x3b887082,0x3b0d662e,0xba6b8372,0xbb78079f,0x3bc0d566,0x3bc0da93,0x3bbbc701,0x3bb5b885,0x3bbc9a29,0x3bba928a,0x3bb19396,0x3bb0f223,0x3ba6a384,0x3ba3a240,0x3b9aa73c,0x3b7a2079,0x3b20bc74,0x3ae798ce, +0x39e67de0,0xba0d7b60,0xbb0038a0,0xbadb3a1f,0xbad2a09c,0xbacebdf5,0xbae1be1d,0xbb019b19,0xbb132b55,0xbaf48bbf,0xbac760d6,0xbaa862d8,0x3899a3e4,0x3ab4063a,0x3b3c1aa8,0x3b5048a1,0x3b6a8e33,0x3b80e18a,0x3b7c4f11,0x3b83c5c6,0x3b9ae76b,0x3bb22337,0xb9ad2f06,0xb8c9c4af,0xba4b219f, +0xb939be17,0xba0398f2,0xba0eb997,0xb9fb0e4e,0xba11c0a3,0xba8be334,0xbae244b2,0xbb195819,0xbb2f85b7,0xbb454387,0xbb64ed50,0xbb5841d9,0xbb465c1f,0xbb3cf5d9,0xbb38a036,0xbb3fb048,0xbb36d436,0xbb29a9c6,0xbb1b74c9,0xbb105460,0xbb0c1678,0xbb085440,0xbb08f44e,0xbb05d7f6,0xbb075f17, +0xbb00d272,0xbaf7810a,0xbad9ff90,0xbab04a7a,0xba7ba0cb,0xba1e74e5,0xb9e27ef7,0xb9ec4c10,0xba92e27f,0xba5c01fd,0xbaa35ee4,0xbab1cbab,0xbac5eee9,0xba874c9b,0xba98fbc0,0xbaa035df,0xbacf57b1,0xbae864ea,0xbb02651e,0xbb144322,0xbb236637,0xbb3777c4,0xbb221485,0xbb1d629f,0xbb278df3, +0xbb200741,0xbb1bf939,0xbb18b519,0xbb19272d,0xbb192b52,0xbb1891e6,0xbb180bd3,0xbb16ec38,0xbb16a642,0xbb0fb28b,0xbb08c1a3,0xbb034b49,0xbaf085c5,0xbae053d2,0xbad52618,0xbaced480,0xbac95781,0xbabc17d5,0xbaa3d199,0xbb203483,0x3a1e2b2b,0x3a442c12,0x3a3b84b9,0x3a22800d,0x3a0ee911, +0x39f1aa89,0x39cfa903,0x3991d4b3,0xb906c344,0xb93e7517,0xb9ae6e3d,0xb9d187ad,0xb91d32be,0x37750d16,0xb8e36272,0x39cc17df,0x39fec531,0x3a14cf86,0x3a0c576d,0x3a085c86,0x39dab063,0x3a107846,0x3a39e05c,0x3a8622b9,0x3a94a0ab,0x3a91a230,0x3a43bf83,0x3a6575d4,0x3a66b96c,0x3a9524a1, +0x3a172d5c,0x39ed0c3a,0x39b47538,0x3a648d12,0x3a89374d,0x3aa5b548,0x3a663ca1,0x3a3f2bb6,0x3a26606b,0x3991ba4f,0xb89d50f5,0xba120603,0xb9be6b19,0xba4866cd,0xbae97fdb,0xbac320a3,0xbaad8129,0xbaa7a58f,0xba3d7e8a,0xba1a98f7,0xba8cb0af,0x39eb6f18,0x3a6c9c3b,0x3a44f79e,0x3a8bc57f, +0x3a887dae,0x3a7c3748,0x3aafb46c,0x3aff5183,0x3b35cc7c,0x3b52f629,0x3b3eae28,0x3abd9d20,0x3ac290d6,0x3ab0fde2,0x3b097e31,0x3a555c67,0x3a090f97,0x39c22507,0x3aeebe01,0x3b1d662f,0x3b244f05,0x3ab59390,0x3ac48347,0x3ab784aa,0x39f3cbe4,0x387331c9,0xb9ee0b40,0xb9d6ca33,0xba8e6280, +0xbb63be38,0xbb824639,0xbba521f2,0xbb9894b5,0xbb71ee40,0xbb12c3f0,0xbb522896,0x39950996,0x39a81c3b,0xb8dcef13,0x3a334f46,0x39f1c9de,0x399b817b,0x3a6f74b7,0x3aedb131,0x3b64d385,0x3b8e0c73,0x3b86aad1,0x3b0270b7,0x3b33beee,0x3b2a90f7,0x3b83825e,0x3a26f442,0x386cd3f6,0x38bc5d19, +0x3b459c8e,0x3b81bc2e,0x3b8aec6c,0x3b27ba90,0x3974c3e0,0x39b2fec5,0xbaa2488c,0xbafd60a1,0xbb143b4f,0xbb2ffb1f,0xbb9b79ad,0xbbd424ae,0xbbfe25f6,0xbc02d8eb,0xbb8a5f30,0xbb8162ea,0xbb3ef734,0xbb363a78,0x3ab40e92,0x3b0dbde3,0x3af5560f,0x3b3de7dd,0x3b39ecaa,0x3b250ab2,0x3b722233, +0x3bb839a9,0x3c0c3257,0x3c1f8c1f,0x3c097767,0x3b74141f,0x3b58eb90,0x3b4bf603,0x3bbfe664,0x3ab8042c,0x3996e435,0x3a53a9ea,0x3bacc7be,0x3be9361c,0x3bdf9ea1,0x3b3d620e,0x3c11778c,0x3bb5b0a4,0x3bb2ff70,0x3b9b3ca8,0x3b488038,0x3bca92bc,0x3c06ae4b,0x3c13458a,0x3b92017c,0x3a583bef, +0x39270c53,0xba55c812,0xba1f7cf3,0x3b4923bf,0xbb183254,0xbb9ba218,0xbbeb14db,0xbbec7c11,0xbbf8978e,0xbc075d8a,0xbc058d8b,0xbc09a6ff,0xbc2e9719,0xbc03e96b,0xbba79a18,0xbb2b0368,0x3bc81206,0x3be759c5,0x3a53b129,0x3a20e874,0xba9afee2,0xbb7c10c4,0xba33ec73,0x39cd9eb4,0xba818303, +0x3bd94cb8,0xbb8ef952,0xbaf00e89,0x3b5a4917,0x3b9e0a5f,0x3b720a5e,0xbc05e93e,0xbc46d7a3,0xbbea6632,0xbb3585ee,0xb96220a7,0xb9778db1,0x3931fa42,0xbab4e275,0xbb31b50a,0x39133773,0x3b074232,0x3b01df72,0x3b07b005,0x3b535ddc,0x3bc6f3bc,0x3bac925b,0x3bc6eabd,0x3bd21390,0x3c076779, +0x3b9a92d5,0xbb46fd08,0xbc0a3f8c,0xbc2a3211,0xbbea20cf,0x3b12d9b1,0x3bb52d73,0x3b38343e,0xbb6da3cf,0xbc09e922,0xbc1364ae,0xbbd173ab,0xbc09ac01,0xbc16063e,0xbc6f7361,0xbc4cca6a,0xbb5c9f5d,0xbaeb4fbb,0xbaedfbd8,0xbb1406a5,0xb8e0de6c,0x39a39320,0xb8c5979f,0x38c5b9c6,0x39e00f8f, +0xba117ae4,0xbaf593ef,0xbb4ddcb3,0xbb3d75a2,0xbadcb045,0xbaa6c351,0xbb3c365b,0xbb20f06f,0xbb508a27,0xbbb2c7b7,0xbbb39d80,0xbb9c1af1,0xbb888800,0x3aa8084d,0x3ba094bb,0x3c0606c8,0xbc07b6a1,0xbc3f3f8b,0xbacc0475,0x3b30ac47,0x3c010b0a,0x3c57ab71,0xbb2dbbc7,0x3b8360c6,0xbac933b1, +0x3abf5f65,0x3b87b7ae,0x3baba0a2,0x39bf20ca,0xb84f805f,0x3aed452e,0x3a2e4e4a,0xb855899e,0x392784c9,0x38ff12ed,0xb9ef9094,0xba882b33,0x38a923e1,0x3ad601dd,0x3b4d5f0e,0x3b3a0d34,0x3b2ca24c,0x3b1c72bb,0x3b5a7422,0x3b6d12b0,0x3b73a91c,0x3b6be220,0x3af41d57,0xba8a5bd6,0xba80792e, +0xbaff5f1d,0xba2145d4,0xbaa2f34d,0x3959d7e3,0x3a82628c,0x3bd8a2db,0x3c0d4a97,0x3bf3dc35,0x3bc429e3,0x3b8fedd4,0x3b3c2212,0x3a74512a,0xba8f4aca,0xba551078,0x380ec5d7,0x392651f5,0xba6675ca,0xb9cb4880,0xb9b81612,0xb9a62256,0xba3ba2ee,0xba358a2a,0xb9d4ee7f,0x39d97e9f,0x3908bcc8, +0xba27100f,0xbb1a3c77,0xbb63c2cb,0xbb651a8c,0xbb4b6b96,0xbb2cdea0,0xbaebb458,0xb6ec65f7,0x3acb0261,0x3b2e33b3,0x3b385bee,0x3b262d1a,0x3b084d3b,0xb9002dad,0xbaf062d0,0xbb42d64f,0xbb69aad4,0xbb47ecfe,0xbaa9d7a6,0x3b3ddd1a,0xbbbf1996,0xbbbc519c,0xbb8ef489,0xbb3ec1aa,0xbae61432, +0xbaa17336,0xba407552,0xba1c6528,0xb9db13eb,0xba112153,0xba1fb1c1,0x3943aeb7,0x3a84ab2a,0x3ae27926,0x3a7b095a,0x3683fc55,0xbac2371e,0xbb2aa6f0,0xbb47007b,0xbb345220,0xbae1f0e3,0xb9bf0caf,0x3a5ff8a7,0x3b3f8984,0x3b950fbf,0x3bb8f7a4,0x3bf14783,0x3c068f43,0x3c0c194c,0x3bf05bc8, +0x3bb96ebb,0x3b642330,0x3af32650,0x3935d4e2,0xbb1132a2,0xbb906bd6,0x3ba19091,0x3ba8c1be,0x3ba9d700,0x3b9de6ce,0x3ba23707,0x3b9c4408,0x3b8d4849,0x3b856fd6,0x3b8b4444,0x3b95b914,0x3b9e0793,0x3b891698,0x3b511b94,0x3b314964,0x3a919316,0xb80248ff,0xbac4dd96,0xbaa35521,0xba9e51a9, +0xbaa460da,0xbab88a69,0xbadf2435,0xbb0404ca,0xbae6116a,0xbac4fa95,0xbab4e36a,0xb80d500c,0x3a9d3c3b,0x3b2d360e,0x3b4d66b0,0x3b76a88a,0x3b8d1439,0x3b87a919,0x3b8643f1,0x3b904fe0,0x3b9b80bb,0x3a9dfa20,0x3abf82ca,0x3a3696da,0x3a8b1cdb,0x3a33794f,0x3a0cdb3e,0x3a192e6b,0x39e36da0, +0xb887d3d7,0xba57218b,0xbac5da3a,0xbafb28b1,0xbb1673c6,0xbb348864,0xbb30fb70,0xbb232e51,0xbb20bcf0,0xbb24c468,0xbb345fde,0xbb2fbfaf,0xbb23619c,0xbb15f7e4,0xbb0ab2b5,0xbb06f13f,0xbb0373c9,0xbb05cacb,0xbae87770,0xbad0d7f9,0xbaacd71c,0xba91bfea,0xba536a33,0xb9b72b66,0x374750ba, +0x39ee0855,0x3a4ea7bf,0x3a803fc1,0xba23c7e3,0xb9978955,0xba356c98,0xba4fabec,0xba80d6e5,0xba0a7f00,0xba3c9986,0xba5f63fb,0xbaa062bc,0xbab81d09,0xbad408a5,0xbaf5771c,0xbb0ab9e6,0xbb1ea6fe,0xbb07a53d,0xbb04f8e3,0xbb17cb7f,0xbb0fe288,0xbb0ddae8,0xbb0ca0dc,0xbb0e7be0,0xbb10211f, +0xbb1122eb,0xbb11bc9b,0xbb113c51,0xbb13753c,0xbb07bc07,0xbafbe1de,0xbae8fe0b,0xbaca3b7c,0xbab05e86,0xba9aa78b,0xba8fce42,0xba86bbc5,0xba75048f,0xba49eefd,0xbb12bbdc,0x39ff208e,0x3a25aa5b,0x3a2cc8ba,0x3a0b384b,0x39efdd4f,0x3991eb93,0x39bb616b,0x3978d810,0xb9b80c7b,0xb94f27ea, +0xb9b46fad,0xba12c458,0xb9764e4c,0xb8961f8d,0xb96cc23b,0x397c4055,0x39a8090c,0x39df4882,0x39dd4f34,0x39e119cf,0x39cece82,0x3a02712b,0x3a25b45f,0x3a68705a,0x3a8302fe,0x3a7e4db0,0x3a1ca724,0x3a44b782,0x3a48c085,0x3a907f3e,0x39e5550d,0x39a092c2,0x39565b7e,0x3a4c0906,0x3a77b39f, +0x3a8cd0ae,0x3a411455,0x3a01897c,0x3a103c79,0x39174a61,0xb9818a3d,0xba777255,0xb9a4f258,0xba26093f,0xbb05060d,0xba9a0c02,0xba7c1ef3,0xbaac61e9,0xba116955,0xba0ddfd4,0xbaa1e256,0x3902b959,0x3a0c7bec,0x3a00af1c,0x3a69018b,0x3a862f88,0x3a92d100,0x3abdc630,0x3afff9d2,0x3b27bea9, +0x3b404e48,0x3b27a6e4,0x3a92afa8,0x3a9d45ef,0x3a9e0364,0x3b114e45,0x3a2a8bf6,0x39923b8c,0x39093f80,0x3adafb1e,0x3b11e668,0x3b0a326e,0x3a8f0b60,0x3aa5cc09,0x3acb0f5c,0x39e64f79,0x37ae34ab,0xba8325d6,0xb92bcba5,0xba4e027a,0xbb8883ce,0xbb6c77b8,0xbb98621d,0xbbaba12b,0xbb6cecfc, +0xbb18ad29,0xbb658a71,0xb9074faf,0xb9431421,0xba033e10,0x39d3f1b1,0x39ec4b21,0x3a241413,0x3a8eca07,0x3af49323,0x3b50b65f,0x3b8313b2,0x3b73da24,0x3ad37c92,0x3b1db869,0x3b19b83c,0x3b884853,0x39a536e9,0xb9846a62,0xb944b017,0x3b3ee21d,0x3b77516e,0x3b6e5ba5,0x3b104632,0xb9b92682, +0x39561bb7,0xbabfc39a,0xbb1585b7,0xbb6b7f27,0xbb1405ba,0xbb8468a5,0xbbebd580,0xbbe05558,0xbbe3789a,0xbb7d7df8,0xbb668d36,0xbb3c5fc6,0xbb67d2ac,0x3a21c0b4,0x3a94b3fc,0x3a55353a,0x3b2c9792,0x3b476aff,0x3b5b5771,0x3b8db3af,0x3bc1aff9,0x3c044d9b,0x3c1417cc,0x3bf19f42,0x3b37aa21, +0x3b25675b,0x3b45f921,0x3bd39487,0x3aa4a53b,0xb973c637,0x39584508,0x3b9f8d28,0x3bd84579,0x3bb7826e,0x3b04918e,0x3c27c7cd,0x3be7cbc9,0x3be36558,0x3bc81867,0x3b8ab8a8,0x3bd99bd1,0x3c035d74,0x3c04b745,0x3b9a15d3,0x3ac0082d,0x3a6ec553,0x37beaa18,0xb8d26007,0x3b1c9f58,0xba96255b, +0xbb64db3f,0xbbf675f4,0xbc021265,0xbc1044f9,0xbc1a123b,0xbc17e761,0xbc1ab23e,0xbc357af6,0xbc010b06,0xbb91543a,0xba465f25,0x3ba9219b,0x3b9e5198,0xba4c30df,0xba52eb7a,0xbab46e00,0xbb12de8f,0x381a0158,0x3a941ce7,0x39a1610b,0x3bff6c3c,0xbb8d99ab,0xbb28fd2c,0x3a5576e8,0x3b3f799f, +0x3b8824d9,0xbbdd6516,0xbc2c9d6d,0xbbcd3eb0,0xbb2a3e6b,0xb9f5bc93,0xb9fed013,0x38e47057,0xba7de46a,0xbb1d82a9,0x38666426,0x3ae6155b,0x3af31e33,0x3acd953b,0x3b349a68,0x3bb99ed2,0x3bc26e88,0x3be146e5,0x3bd79080,0x3be92636,0x3b3cf636,0xbb8aaee3,0xbc185164,0xbc2430a0,0xbba270f1, +0x3b650117,0x3bb3e537,0x3b1bc00d,0xbb9cc012,0xbc16c5bc,0xbc02176b,0xbbc32d95,0xbc127bfc,0xbba8c68f,0xbc27bf44,0xbc1dcb62,0xbbcd03c1,0xba292e23,0xb95119f4,0xbb25db38,0x39ed6783,0x39ebce26,0x38de77d6,0x382c70e7,0x3a0257b3,0xb7d639a1,0xbacaed4f,0xbb3f7149,0xbb4054ba,0xbb046ad6, +0xbafda89a,0xbb6e7217,0xbb488d6b,0xbb6a8122,0xbbae6ccf,0xbba2a8f9,0xbb844be2,0xbb6b80b4,0x3b543e86,0x3bbaa59e,0x3bb7eed0,0xbc1238ee,0xbc2dc3e7,0x3a2e62ee,0x3b6da660,0x3c04ec1a,0x3c6ce9ba,0xbb663329,0x3bd6c268,0x3b23377b,0xbb10292a,0xbaad731d,0x3ace358c,0xba62f969,0xba4fae7c, +0x3a433f89,0x39b3dbc4,0xb9a0cfdf,0xb82b6319,0x388c577b,0xb99275e9,0xba5a7a92,0x385d0398,0x3ab91986,0x3b49782e,0x3b41cab2,0x3b444298,0x3b416d3f,0x3b75ec27,0x3b6e4569,0x3b475246,0x3b3bd804,0x3abf934a,0xba915322,0xbab433ed,0xbb0df3ec,0xb9d45740,0xbaac4cbd,0x3a52d413,0x3b5545e7, +0x3c0d1bc5,0x3c165c51,0x3ba15c55,0x3bd4f811,0x3b86c770,0x3b46465a,0x3b16392b,0x3a35d2ab,0x3a37f44b,0x39b638bd,0x363e160a,0xba892566,0xb91eec19,0x384632f7,0x391908d1,0xb9807875,0xb9de6273,0xb962ca92,0x3a0e6f60,0x3a13eac4,0x39e09c23,0xbaa1a577,0xbb1f1f6a,0xbb33d533,0xbb188e5d, +0xbafabf92,0xba9d5cff,0x37c81877,0x3a932011,0x3b08b2a9,0x3ae57257,0x3a95f962,0x39f83478,0xbadecc98,0xbb4f6cb8,0xbb880446,0xbb8da67c,0xbb4286d4,0xba552f66,0x3b59e59a,0xbbac3502,0xbbc022c1,0xbb9d4647,0xbb68a813,0xbb1ee45b,0xbadb6dfc,0xba850951,0xba5b2fb5,0xba1c3d8b,0xba4d9034, +0xba6b9ef9,0xb9f86911,0x39be5dd0,0x3ab6e07d,0x3a931e40,0x39ba90ec,0xba8e13ac,0xbb1fba2f,0xbb473d37,0xbb3a3805,0xbb023ad9,0xba40ca32,0x3a300463,0x3b3429f8,0x3b8ed28d,0x3bb1fb66,0x3bdf3942,0x3bf34c0b,0x3bf5c696,0x3bc65a8d,0x3b817f48,0x3a9dc4cc,0xb9da71cb,0xbaea2ff9,0xbb57a374, +0xbb936c06,0x3b534aad,0x3b6dbeda,0x3b8079b8,0x3b68bab5,0x3b71b012,0x3b626d97,0x3b40c855,0x3b27cd2f,0x3b4f673c,0x3b78e9a7,0x3b9297e3,0x3b877ffc,0x3b6bfdf6,0x3b5d6ce9,0x3ad796d6,0x39e5c9f8,0xba7271ec,0xba502ede,0xba5daa29,0xba8bf80d,0xba99cc55,0xbaba4f50,0xbae33597,0xbacabbbc, +0xbab0dfce,0xbaa47eb1,0x36959a18,0x3a943c14,0x3b20c2d0,0x3b3f5537,0x3b690cef,0x3b86656a,0x3b787f62,0x3b648a81,0x3b579ae8,0x3b58bd2e,0x3b1f4b1f,0x3b313fc9,0x3b07bccd,0x3b0bd6de,0x3aea5a1c,0x3ace3b29,0x3ad39f05,0x3abf1fe5,0x3a822bb6,0x397a5ca8,0xb9e7994d,0xba69602e,0xbaac0885, +0xbae1b8ad,0xbaf22430,0xbae4ec16,0xbaf3e3ac,0xbb0804a3,0xbb20cae8,0xbb220aac,0xbb168074,0xbb0b9b72,0xbb00bb4c,0xbafb4043,0xbaf559f4,0xbafd5c07,0xbac4681e,0xba9991a3,0xba499a9d,0xb9ea5885,0xb873e3a1,0x3a0410ad,0x3a57dca6,0x3aaac79e,0x3ae3b2cc,0x3b0a4a1e,0xb967a6d9,0x38d80812, +0xb96c470b,0xb99340ca,0xb9f18912,0xb8ab5dd6,0xb9957595,0xb9f19088,0xba540d6d,0xba7f7410,0xba9a0292,0xbab5e34d,0xbad387ef,0xbaf6a399,0xbacdbfe7,0xbace54ef,0xbb0332c3,0xbaf7c7c8,0xbaf9c9b1,0xbafaaac2,0xbaffcd86,0xbb025752,0xbb043fdb,0xbb0575a6,0xbb0519fd,0xbb08c6b1,0xbaf3d797, +0xbadcb91f,0xbac5022e,0xbaa1cdac,0xba83694e,0xba4f86e1,0xba331423,0xba196d43,0xba005b8d,0xb9be4c96,0xbafe001f,0x39cce459,0x3a0c3ae6,0x3a2041ea,0x39eac92b,0x39c049c0,0x3900a0a3,0x39ae356a,0x394a0de9,0xba103eae,0xb96aeeb1,0xb9be1463,0xba3a7f4e,0xb9a7554a,0xb926cc08,0xb9ae1ddd, +0x38bd895e,0x3938c500,0x39a072fe,0x39a51df5,0x39b5b4ca,0x39c5e465,0x39ec2e89,0x3a14f796,0x3a4e548d,0x3a668108,0x3a5d165b,0x3a00747a,0x3a2549e1,0x3a2ac54c,0x3a8c108d,0x39aab44d,0x39494a5d,0x38c7e6ae,0x3a35b7f5,0x3a5efafd,0x3a6a6a60,0x3a2245b1,0x39a80783,0x3a013646,0xb5613001, +0xb9c408de,0xba97155d,0xb982fada,0xb9f402fe,0xbb090132,0xba58640e,0xba1b6efa,0xbaa9c57a,0xb9c318ab,0xb9f20f28,0xbaa4f21d,0xb93ad846,0x3927a8d9,0x39a81926,0x3a31d6b1,0x3a744f9e,0x3a9ef952,0x3ac2ca4d,0x3afac4aa,0x3b1b2892,0x3b2b4dcb,0x3b0e7b03,0x3a580433,0x3a5fb30c,0x3a81c831, +0x3b1597fc,0x3a04e2b5,0x38b671d3,0xb80bcc79,0x3ac9380d,0x3b058768,0x3ae06fab,0x3a5d0607,0x3a8f798e,0x3ad79a43,0x39c0cd3f,0xb8342fc4,0xbaae2e9e,0x38796e3f,0xba0c68fa,0xbb98d556,0xbb53c601,0xbb8925f1,0xbbbbf248,0xbb617e84,0xbb1b6b91,0xbb6c819f,0xba1cc812,0xba31e4e6,0xba2b4212, +0x38cbf356,0x39cb0ec9,0x3a6b09d7,0x3a9d20d8,0x3af8ac93,0x3b429d2f,0x3b6f1bae,0x3b59aec2,0x3aaca1e5,0x3b0261f6,0x3b02332f,0x3b8acf31,0x3865e078,0xb9f8a82c,0xb9c44981,0x3b365a68,0x3b692597,0x3b463eaa,0x3af9bc7d,0xba383662,0x3900540d,0xbad8095a,0xbb25c3ee,0xbb922fe5,0xbaefaada, +0xbb5629ef,0xbbef5d84,0xbbb5c3be,0xbbb5057a,0xbb551dc9,0xbb355ac5,0xbb22fe20,0xbb7b0884,0xb950be82,0x3838f4b3,0xb79a11f2,0x3b0d85a9,0x3b3ff660,0x3b7f8649,0x3b98a03f,0x3bc4b004,0x3bf8344e,0x3c05f601,0x3bcb71a7,0x3af09e48,0x3abe5d06,0x3b2c0857,0x3bdf6592,0x3a8e63e7,0xba2ce65f, +0xb93fdd3c,0x3b94943a,0x3bc56b73,0x3b8dbaf3,0x3aa75a12,0x3c344246,0x3c061696,0x3bfccd52,0x3be1ec4e,0x3bacd2e2,0x3be12c25,0x3bf0e08c,0x3bd7d282,0x3b8f7cf8,0x3ae05ee8,0x3aa765f9,0x3a1c4c7b,0x39c8f83b,0x3ad84a94,0x38bc3b27,0xbb008be1,0xbbf2a3da,0xbc03c3af,0xbc1701a8,0xbc1f05d7, +0xbc20a564,0xbc22e8a6,0xbc30a26d,0xbbeeb090,0xbb57d5c5,0x3ae2f888,0x3b9c131b,0x3b511070,0xbaf81bfc,0xbae32f8b,0xbaaf4d12,0xba29d451,0x39c796c9,0x3adb15e3,0x3b097cf9,0x3c0f1a02,0xbb828459,0xbb3a5f01,0xba938ff0,0x3aa572f0,0x3b89e7d7,0xbbad6534,0xbc0c6f0e,0xbba6ba44,0xbb0571aa, +0xba1ea685,0xba2c984d,0xb90f9fe4,0xba08d421,0xbb009e9a,0xb917f76d,0x3aadb98d,0x3ace1b06,0x3a85a02f,0x3b0bc07c,0x3ba4175f,0x3bc9ce75,0x3beb9488,0x3bd461a3,0x3bb5a6df,0x3a81564f,0xbba6396b,0xbc216323,0xbc1910bc,0xbb33938b,0x3b905b25,0x3baccc35,0x3b1725e1,0xbbb07950,0xbc1ad2b9, +0xbbe62ac7,0xbbb452d9,0xbc041231,0xbabf75a3,0xbbe4dd69,0xbbf1660d,0xbc06bfc8,0x3992b83b,0x3a730d0e,0xbb0457c8,0x3a8bab31,0x39a6592f,0x39b29287,0x386b6253,0x39d04dfa,0x39c1d723,0xba8df8e3,0xbb1f653f,0xbb37cdb7,0xbb04c01e,0xbb0c760f,0xbb77215e,0xbb5847fe,0xbb753c54,0xbb9e0cf9, +0xbb8b840d,0xbb4a50ff,0xbb21b90f,0x3baca9da,0x3bd17be8,0x3b3fbeb2,0xbc15f504,0xbc1840c1,0x3b311c16,0x3b978666,0x3c0ab556,0x3c789f18,0xbb47daaa,0x3bffd755,0x3bfe124a,0xbba014c4,0xbbda75e4,0xbb3fce8e,0xbae00a00,0xba68dadd,0xb8d37338,0x3825485a,0xb9df47a4,0xb93bfc57,0xb8d81290, +0xb91401c1,0xba10dfa9,0xb34afa6d,0x3a8e2064,0x3b3f14e8,0x3b46e5db,0x3b5402ca,0x3b6026de,0x3b81910d,0x3b61fe26,0x3b189792,0x3af9f885,0x3a768180,0xba7ed1d8,0xbad2b363,0xbb13cc46,0xb9d108d8,0xba8f9452,0x3af009a9,0x3bcb41bc,0x3c18d26b,0x3bfb1c0d,0x3a9716f7,0x3ba897e1,0x3b808089, +0x3b5cd68c,0x3b7cb92b,0x3b4210cb,0x3b179e04,0x3a1f8ce3,0xb94b3812,0xba74e375,0x38d9927b,0x399cac1f,0x39c4e513,0x3921345d,0xb8dd8da9,0xb89c15b8,0x3a26b6d3,0x3a77bd49,0x3ab2ef9c,0xb83ace8c,0xbaa2e148,0xbae84e77,0xbabf73ac,0xba91266b,0xb9e0363c,0x397b7634,0x3a63022b,0x3acb99a5, +0x3a52bd03,0xb7944331,0xba6256c9,0xbb40b968,0xbb8ae445,0xbba4393b,0xbb96a2d7,0xbb17e3f0,0x38975daa,0x3b7ae65a,0xbb82f5ec,0xbba8a5ca,0xbb9a1ed6,0xbb7efc1c,0xbb3c1d39,0xbb058ad2,0xbaa8993e,0xba8f48c5,0xba3d86fb,0xba60f5a2,0xba80be6f,0xba693b43,0xb95f02b3,0x3a691c44,0x3a8e9936, +0x3a13ab4f,0xba3a1562,0xbb0e1550,0xbb3c73b7,0xbb32b548,0xbb0bf7d1,0xba9524da,0x398af58c,0x3b195ed1,0x3b804016,0x3ba0a04a,0x3bc16774,0x3bcb32b5,0x3bc30060,0x3b969414,0x3b1f0f3e,0xba17909f,0xbb0ce814,0xbb54e8fe,0xbb7ac0ae,0xbb834f41,0x3aa0ba0c,0x3ae319c5,0x3b156b4f,0x3b08e096, +0x3b155f8a,0x3b083995,0x3ad3b1be,0x3a9af74a,0x3b07bf14,0x3b3e4585,0x3b7b0014,0x3b774029,0x3b713604,0x3b756274,0x3b066100,0x3a67d854,0xb989538b,0xb9a8d061,0xba0d6927,0xba8033b2,0xba751689,0xba8b5e15,0xbaaa1e4c,0xba92d767,0xba71376d,0xba49684e,0x39ad8245,0x3aabfd69,0x3b1fee57, +0x3b3217aa,0x3b4f33da,0x3b6955c4,0x3b46cada,0x3b1f0fe8,0x3ade180c,0x3ac4bd52,0x3b553015,0x3b663d92,0x3b465314,0x3b3c4a9d,0x3b295eef,0x3b1a295d,0x3b1e104a,0x3b180fa0,0x3afbbaba,0x3aa67983,0x3a30a4d0,0x398a3141,0xb9258b40,0xb9ff88ac,0xba59afe6,0xba6229e4,0xba93ef7e,0xbac38662, +0xbb05c37b,0xbb090adb,0xbafc3106,0xbaedfb45,0xbada148d,0xbad58837,0xbad132fa,0xbadb438b,0xba956a0f,0xba3f6ae6,0xb9829a89,0x392b8bb3,0x3a24518d,0x3aa37849,0x3ac4e59e,0x3b00abca,0x3b1dd344,0x3b3d2672,0x392b49b8,0x39e763fc,0x39316c34,0x390f004a,0xb8266328,0x39a8c520,0x38b54d7b, +0xb90453dd,0xb9d8869f,0xba10c948,0xba3d79bb,0xba67a179,0xba8c1962,0xbaa5b495,0xba8143b9,0xba8201d6,0xbad5b0b0,0xbac2e554,0xbac72b8c,0xbac3d49e,0xbacb4b7f,0xbacfc0fc,0xbad40cba,0xbad6af1b,0xbad59f81,0xbade515c,0xbabdd5de,0xbaa593bf,0xba8ca6a6,0xba52d8fd,0xba16c0be,0xb9b768d2, +0xb979289f,0xb901e11c,0xb7bf7db3,0x385a960b,0xbabbeeeb,0x396d43ab,0x39c5eac4,0x39f87210,0x39a88fcd,0x398d7802,0x3847b1f7,0x397b8dcd,0x390dd83b,0xba28c4fe,0xb94f6d37,0xb9a9afe1,0xba4b1850,0xb9b306db,0xb944005c,0xb9b5963c,0xb887fd73,0xb774739c,0x398c7981,0x3957b3f1,0x3969a92e, +0x398a1189,0x39ad153c,0x39e29e35,0x3a279846,0x3a337fd3,0x3a28713f,0x39b024f1,0x39e238bb,0x39ece23f,0x3a77eab4,0x391613fb,0x372425e8,0xb8a020b8,0x3a0a5b68,0x3a321ed6,0x3a2a1e84,0x39e6f87f,0x38ea32c9,0x39c2e3ea,0xb8f558af,0xba08e155,0xbaa3583a,0xb95fc46f,0xb9b3a46d,0xbb073a59, +0xba15a4e3,0xb9b7b73d,0xbaaa52b6,0xb99de01b,0xb9f690ec,0xbaa22393,0xb9fb799c,0xb964ed0c,0x39454be1,0x39d6f27e,0x3a4ddd5a,0x3a9479a6,0x3ab323b5,0x3ae3abae,0x3b09fa2b,0x3b0d8451,0x3ad9c14c,0x39f35489,0x39c73e73,0x3a24bcca,0x3b0edda4,0x3985123e,0xb9444b11,0xb9834af0,0x3aaab67e, +0x3ae37eda,0x3aa205a7,0x3a0dcbeb,0x3a63570d,0x3ad2741c,0x39801293,0xb92aa9ed,0xbac3e5ea,0x39521922,0xb9c4c43c,0xbba03a2f,0xbb394186,0xbb70886d,0xbbc3d54f,0xbb554fb8,0xbb1afe79,0xbb63dcb8,0xba931c41,0xba9d71d3,0xba233468,0xb9710cd7,0x39840f18,0x3a820e7b,0x3a96d7ad,0x3aedbfd3, +0x3b343cac,0x3b4f65e6,0x3b36ecd8,0x3a81b7ae,0x3abbc79b,0x3abde96f,0x3b867cf3,0xb9a3cc46,0xba4ea939,0xba239004,0x3b23d9fd,0x3b527d73,0x3b1aee8e,0x3ace4c05,0xba80b4f2,0x37bb6034,0xbae53ab4,0xbb313eab,0xbba12cb1,0xbabca8ef,0xbb2380fb,0xbbdcde89,0xbb864001,0xbb821748,0xbb18d75f, +0xbaea858b,0xbafa0375,0xbb6dced7,0xba75c049,0xba840e59,0xba1a6dd6,0x3ac78a4d,0x3b2728e9,0x3b84bd9b,0x3b974f8c,0x3bbe820c,0x3be4c1c4,0x3be698ef,0x3b9cf42b,0x3a3e730e,0x38f6a0fc,0x3af62793,0x3bdd871a,0x3a3920a7,0xba9bf3a3,0xba0fa95d,0x3b86e4cd,0x3bad54ef,0x3b434c13,0x3a0f84cc, +0x3c3607b0,0x3c0e572f,0x3bffceb5,0x3be76929,0x3bc79236,0x3bdef901,0x3bce61f2,0x3b99ac99,0x3b6d15f2,0x3ac4ac5a,0x3a9fe0b4,0x3a2e7d41,0x3a3f7d19,0x3a7c7f47,0x3a8ed43d,0xb9be7313,0xbbdf53a1,0xbbfb2083,0xbc12dea0,0xbc1a14fd,0xbc21ffaf,0xbc24040c,0xbc22e45b,0xbbd1f624,0xbaf20d7f, +0x3b90aa18,0x3ba2cd67,0x3b10dd47,0xbb34fa61,0xbb211306,0xbabb60b1,0x39d4e08a,0x38e6efe1,0x3aed6a6d,0x3b8529f2,0x3c195f97,0xbb6e71ad,0xbb314ebb,0xbb1b76ca,0xb8e33d51,0x3b7c8504,0xbb828bb0,0xbbd5c680,0xbb6f57b8,0xba9f788a,0xba3e98b7,0xba13dfa3,0xb9c43ed0,0xb988335f,0xbab648c2, +0xb9d79ba4,0x3a590ada,0x3aa5106f,0x39dedcf3,0x3ab72e11,0x3b84e856,0x3bbdd9ec,0x3be1e315,0x3bc3fc87,0x3b7265c6,0xba760023,0xbbc3777c,0xbc293911,0xbc0c505c,0xba35b30e,0x3b9a2873,0x3b95ebda,0x3b0aba79,0xbbc5735c,0xbc1e76f9,0xbbd4e62c,0xbbabe753,0xbbd026d6,0x3b06fc4c,0xbb8c4b96, +0xbbb7b429,0xbc0e298d,0x3a504288,0x3ab458c2,0xba779b21,0x3a9a67a1,0x39311b4b,0x39dc6748,0x392b4463,0x397629f8,0x3a0879cc,0xba0c511e,0xbaea7727,0xbb2125d4,0xbae1d4fe,0xbaf4a147,0xbb5b4ac0,0xbb561f59,0xbb78774e,0xbb8c4026,0xbb71d87e,0xbb10ab75,0xba817dc1,0x3be04d52,0x3bd7a2da, +0x39703b57,0xbc14ff38,0xbc00ff2e,0x3b90af10,0x3bb609af,0x3c0e8dff,0x3c6f3c0d,0xbb054df0,0x3bd85e20,0x3c43449d,0xbbd24ea5,0xbc38219d,0xbbf1bd41,0xbb146738,0xba336ce3,0xba081a6e,0xb8eba75f,0xb9d2e2d3,0xb95d13c6,0xb9633eb9,0xb91b27cf,0xb99d414e,0xb8c18b70,0x3a2dcab0,0x3b294187, +0x3b45de5a,0x3b5d601f,0x3b726289,0x3b7b8b75,0x3b440080,0x3ac4816d,0x3a384dc7,0x386a7cc3,0xba909582,0xbb00c83d,0xbb201deb,0xba5e1c32,0xba349811,0x3b431792,0x3c15061e,0x3c0611a0,0x3b83b0f0,0xbb5cb2aa,0x3aee680f,0x3b6e976e,0x3b820849,0x3bbb3bc1,0x3bb47a89,0x3b75aa80,0x3a61d5c4, +0xb9bca3de,0xba234448,0x399a503c,0x39b8686b,0x39d1fb03,0x39b0987f,0x39328cd8,0x3846b511,0x3a2d5fdd,0x3aa128c0,0x3b08f17d,0x3a948228,0x38768a2f,0xba3268a9,0xba20e152,0xb9c184f2,0x39896f9d,0x3a006283,0x3a2d6a82,0x3a81866a,0xb963e708,0xba9c1c6e,0xbb070d38,0xbb821e01,0xbba8c0e2, +0xbbb89661,0xbb95947a,0xbacc6341,0x3a548fe9,0x3b7e1b02,0xbb2dc732,0xbb85a6ae,0xbb8909b0,0xbb81f197,0xbb4cbae1,0xbb1764ee,0xbac7df6c,0xbaab3491,0xba4cf1cc,0xba516aa2,0xba77d941,0xba8807ff,0xba244b45,0x39a2a2eb,0x3a66d78b,0x3a275368,0xb9cfe1ed,0xbaf30256,0xbb296f29,0xbb24303f, +0xbb11a4a7,0xbac987fc,0xb9aba2b4,0x3ad67d0c,0x3b4ac242,0x3b818fb9,0x3b9734a8,0x3b98d86d,0x3b88af39,0x3b4e4f32,0x3a9f07c3,0xbae8108e,0xbb53e1b0,0xbb875498,0xbb809389,0xbb56ce41,0xba442397,0xb9472370,0x3a1cf353,0x3a2fdef1,0x3a827a04,0x3a60e601,0x3a089a5f,0x39007d78,0x3a98057a, +0x3b03e1da,0x3b483f39,0x3b4d4768,0x3b61fd09,0x3b733c8c,0x3b17025c,0x3aa21e39,0x39cb06dc,0x3906c4a0,0xb98be749,0xba71a865,0xba37213b,0xba2a2d58,0xba4279ae,0xba0898b1,0xb98e17bd,0xb70a1196,0x3a5d4693,0x3ad2358f,0x3b204046,0x3b1e56d5,0x3b253fe4,0x3b2ebcb4,0x3afc2b12,0x3a8aa518, +0xb90abd77,0xb9c855e4,0x3b6b3550,0x3b7978a0,0x3b69f696,0x3b50f468,0x3b44355a,0x3b358778,0x3b38b07c,0x3b37eb04,0x3b23accb,0x3b05d748,0x3ad7932a,0x3aad4c75,0x3a7d7149,0x3a447d73,0x3968f02d,0x38720e71,0xb9aecf13,0xba54d6d3,0xbabeaf87,0xbacdd5db,0xbab93132,0xbab34fb1,0xbaa33a8b, +0xbaa04d08,0xba9dea93,0xbaa7f95f,0xba3e1e33,0xb997cd92,0x39649827,0x3a34968f,0x3a9d6a78,0x3aee0988,0x3b0232e5,0x3b1bb792,0x3b341976,0x3b546955,0x3a005a5d,0x3a30cf0e,0x3a041c4c,0x3a07350b,0x39c91f95,0x3a24db5b,0x39ddf1ac,0x3973eb84,0x3831f914,0xb873ef4e,0xb94eade8,0xb99474eb, +0xb9d5b472,0xba0306eb,0xb9a3b4af,0xb9b47cf3,0xba8a4c26,0xba7102ac,0xba810e31,0xba7c0e4d,0xba855e02,0xba88763d,0xba8c01fc,0xba8e3740,0xba8cc7a8,0xba95ce6b,0xba6be6be,0xba3e0e91,0xba10a8eb,0xb9a5ed30,0xb9002df0,0x38befcec,0x3942eb98,0x399ceddb,0x39d38980,0x39dcc236,0xba588a8e, +0x3990816a,0x39e03a99,0x3a1a6b95,0x398623bb,0x38f53f63,0xb92ef601,0x39825200,0x381a2e15,0xba578f56,0xb9ab6772,0xb9e3a3c6,0xba6b82eb,0xba02b9f0,0xb9c10954,0xb9f92dc9,0xb9859ed0,0xb8f1d888,0x38a8331d,0x387a4565,0x3916c579,0x39ba6b34,0x39c5cd3b,0x39fc39f5,0x3a361506,0x3a3096be, +0x3a249d58,0x39cc6686,0x39e2af77,0x39eeec33,0x3a84f654,0x3944ab0d,0x3889bbae,0x370c19fa,0x3a1b907f,0x3a40c96d,0x3a255dd2,0x3a00f7fb,0x395763b4,0x39fedbb8,0xb99417b1,0xb9ee1c59,0xba9c1e24,0xb9104722,0xb910c42f,0xbaf3c70c,0xb97a2baa,0xb8a97fea,0xbaa6b881,0xb980bdc4,0xb9e33c01, +0xba880bfc,0xba36c439,0xb9fa477a,0x39414aa1,0x397c7af0,0x3a0e7421,0x3a9207b2,0x3ab242ef,0x3adcb9b3,0x3b051844,0x3af1c080,0x3aac11c5,0x39b0639f,0x3920be6c,0x3a04baef,0x3b13bc6f,0x3992d6e5,0xb90bf9a2,0xb8c2c1e4,0x3ab6e325,0x3ae34f25,0x3a8a8245,0x3a0e0458,0x3a82d465,0x3ae10528, +0x394c0f36,0xb9405aa3,0xbac7497a,0x39a704f6,0xb97ff3ba,0xbb9a6f40,0xbb1ec511,0xbb48bad8,0xbbbe3b4e,0xbb3f7afa,0xbb1acc4e,0xbb4908d8,0xbad6b0fb,0xbad92072,0xb9d9456a,0xb9f8f558,0x38eec54d,0x3a86f105,0x3a9dafe7,0x3af09586,0x3b34aba0,0x3b374080,0x3b1d3094,0x3a7063dd,0x3a962aab, +0x3a9b7f2f,0x3b87f3f1,0xb9a09f72,0xba2e9c78,0xb9b58693,0x3b2c133b,0x3b552bbc,0x3b0a51a9,0x3ad3729c,0xba41aff4,0x38e8f644,0xbadf6e44,0xbb2d81bc,0xbba0cdc4,0xba8d337a,0xbae55178,0xbbb7a87c,0xbb309761,0xbb215d2a,0xbaabd9af,0xba72f0c8,0xbaa02c8e,0xbb469659,0xbabfc0e1,0xbaf426fa, +0xba7620ce,0x3a62b015,0x3b0299ac,0x3b7df424,0x3b916215,0x3bb5d3c5,0x3bd502b7,0x3bbfb68f,0x3b5fe1d6,0xb902bf6e,0xba62c335,0x3ab5d0ee,0x3bdcc186,0x3a37be9a,0xba9604e8,0xb92eda46,0x3b8ccccd,0x3ba588db,0x3b0d0e95,0x39a58430,0x3c39084d,0x3c11a9ec,0x3bf5aaae,0x3be28109,0x3bd4d0a5, +0x3bd02730,0x3ba4eed1,0x3b3b7259,0x3b2d21f8,0x3a64b237,0x3a79523c,0x39ed1bf1,0x3a4eb523,0x39f0dbca,0x3adf3b0d,0x3a868338,0xbbbbd947,0xbbe184f1,0xbc06af97,0xbc0c15f0,0xbc18cd57,0xbc1a16c0,0xbc083339,0xbba011f3,0x395027b4,0x3bf06ecc,0x3bc67cba,0x3b168129,0xbb3cb983,0xbb1aace1, +0xba7a0678,0x3acdad95,0x392b52ad,0x3b1892cf,0x3bd397e7,0x3c277d30,0xbb314e06,0xbb07ad29,0xbb47d08a,0xba85e8b3,0x3b543174,0xbb3a48a3,0xbb972913,0xbb053adf,0xba34c934,0xba214811,0xb9c65580,0xb9cbd557,0xb9267134,0xba53c303,0xba228833,0x39adfb0d,0x3a81cf41,0xb8d80a52,0x3a17da22, +0x3b42c17c,0x3baab08b,0x3bd1bbfc,0x3bb741ea,0x3b1aa343,0xbb0cea15,0xbbd079a7,0xbc26b1cb,0xbbeb7811,0x3ae19ef7,0x3ba6796c,0x3b86aca4,0x3b19235f,0xbbc710e7,0xbc16fcf5,0xbbb5b095,0xbb9598d9,0xbb54a75d,0x3baf8f9f,0xbb0159b5,0xbb8313d3,0xbbff11ef,0x3a68828a,0x3aa5e30d,0x378d62c2, +0x3a3dd5b7,0x392a0551,0x39a6ed4d,0x394fba15,0x390aa4a1,0x39e3eafc,0xb876cfd9,0xba87388d,0xbaff8be3,0xba8f4103,0xba9bd49c,0xbb191cec,0xbb2ce955,0xbb5d8494,0xbb58383e,0xbb33a01c,0xba427a44,0x3ad00125,0x3c0d6ec6,0x3be4814b,0xbad12f4b,0xbc0359e1,0xbbb9abb8,0x3bd0c23d,0x3beb0d28, +0x3c1f3d85,0x3c64f2f6,0x38d0b398,0x3b8ad96a,0x3c5f2b2f,0xbbe468c8,0xbc663af1,0xbc3339fd,0xbb221a73,0xb9e9c113,0xba0abc25,0xb8db1a0a,0xb9a6b84c,0xb9512ce7,0xb972d5d1,0xb92d12d1,0xb93a536e,0xb94003f3,0x397a56d6,0x3b05c61e,0x3b43f2fd,0x3b5c5dfc,0x3b80ab6f,0x3b76ebd8,0x3b2db92b, +0x3a880c4e,0xb8beb6c4,0xba1285c7,0xba819ac4,0xbae9a5fd,0xbb008733,0xba6da51f,0x3a5432b2,0x3ba08ce1,0x3c411b9e,0x3bcc6430,0xb91760ea,0xbbe279ae,0xbae1e3e4,0x3b8b9985,0x3bbb2872,0x3c01cc6e,0x3c07117d,0x3ba15950,0x3a9be3c3,0xb9aefa2e,0xb98efa40,0x39c63e0b,0x399461df,0x39c1f6b1, +0x39c2796f,0x399892d1,0x39013152,0x3a288790,0x3ab37882,0x3b28843f,0x3b15c070,0x3aabdbc7,0x3a23e7a3,0x39ffd2f1,0x3a0a62a1,0x3a8c723b,0x3a8bd592,0x3a7bb70f,0x3a8982a5,0xba0f84cb,0xbacfdb1b,0xbb19a831,0xbb87c825,0xbbad526f,0xbbb2756c,0xbb76560b,0xb9b14bcb,0x3aff2d4f,0x3b8756cc, +0xba80323c,0xbb227da1,0xbb5fe3eb,0xbb6eb245,0xbb4e4227,0xbb1e9745,0xbacc84a7,0xbaabb72f,0xba30aa6e,0xba2a3a5d,0xba51fb26,0xba82be93,0xba4e79fc,0xb914c128,0x3a24a9f6,0x3a2c052f,0xb79d7e11,0xbabdad20,0xbb104136,0xbb09218a,0xbb005872,0xbad1a54d,0xba2f4e06,0x3a8ee0cf,0x3b19f153, +0x3b47dbdd,0x3b5fea96,0x3b59c12c,0x3b3500f6,0x3b0ff037,0x3a4027ee,0xbb001e0b,0xbb53835f,0xbb817a60,0xbb4fceda,0xbb05f879,0xbb018aff,0xbad1232e,0xba4a4f13,0xb9be9479,0x37ec290b,0xb7d300cd,0xb98518d7,0xba0e55ca,0x39ea2478,0x3aa92a46,0x3b10db52,0x3b1f79e6,0x3b3bced4,0x3b5757b9, +0x3b1708f6,0x3ac57cac,0x3a78d059,0x3a1319e3,0x3717df3c,0xba2dabbb,0xb939a5a7,0xb69cc334,0x38c164b9,0x39d65e8d,0x3a4ae9d3,0x3a9c8ab3,0x3aea56ad,0x3b16c5b1,0x3b3969ac,0x3b1f1c6d,0x3b0a5dd3,0x3afc4743,0x3a8c2ef7,0x387ff73d,0xbab5acb6,0xbad71842,0x3b719cba,0x3b7b58ec,0x3b67e533, +0x3b55b151,0x3b484538,0x3b3c5996,0x3b44979a,0x3b469d76,0x3b400bbb,0x3b2ecbd8,0x3b1fe9a0,0x3b18b3f9,0x3b0c30c4,0x3b0615f1,0x3aa9c57c,0x3a87cc4e,0x3a1a4bed,0x385b2ad0,0xba56e2bf,0xba3b438b,0xba11e211,0xba17a25c,0xb9ff2a05,0xb9fc3dce,0xb9fcb749,0xba105bad,0xb7a9991d,0x39d1ad58, +0x3a6aa971,0x3ab5b06c,0x3afb04b0,0x3b213aaf,0x3b251246,0x3b35afbd,0x3b45124f,0x3b5fb2b7,0x3a864f3d,0x3a986c11,0x3a630c54,0x3a4e00bd,0x3a161b76,0x3a86682f,0x3a2ff3b8,0x39bf5fb2,0x39902e3f,0x396f9d70,0x392b4216,0x38f9d5c7,0x3846d28a,0x389b59dd,0x39a83f81,0x39e8b4a7,0xba193573, +0xb9a0eb8a,0xb9908ebf,0xb74682aa,0xb906523b,0xb9017fed,0xb91144a4,0xb91bcb54,0xb90bffb7,0xb94fee38,0x379975e5,0x392de838,0x399dbbe1,0x39fc8f4a,0x3a235a6d,0x3a552c29,0x3a641777,0x3a7d01ed,0x3a8ab1db,0x3a85f58f,0x393279b9,0x395958d0,0x39c685d4,0x39f9be26,0x39c2cb16,0x39a30aa1, +0x3889d866,0x399d8684,0x3981efbd,0xba02c63e,0xb739c843,0xb8c690d6,0xba0baf6b,0xb93e56ca,0xb8e7b1bf,0xb9224d42,0xb8ff4631,0xb8d8683d,0x39afaf1f,0x3973242a,0x397f02d5,0x3971099d,0x39a37349,0x39d1ffa9,0x3a239709,0x3a0a95c0,0x39fc507e,0x39a62a87,0x39a84c5a,0x39b622ab,0x3a754535, +0x38ece41f,0x366b493d,0xb7c2d594,0x3a0b0407,0x3a2eab75,0x3a0666bb,0x39e0eb71,0x393afeaf,0x3a00f7f4,0xb6c7bc7e,0xb9c834f7,0xba75350b,0x3826e326,0x38295e8d,0xbacefd45,0xb84ec74b,0x38904cfb,0xbaa18e48,0xb9cae749,0xba01cb4e,0xba481ccf,0xba5261c3,0xba20b463,0x39a03631,0x390fbee3, +0x3a1a10df,0x3a71e8a5,0x3a965f09,0x3abd8a30,0x3ae8b33f,0x3aaf0bf6,0x3a4f99ae,0x38a65ad5,0xb8fcb64a,0x39a6c37b,0x3b0b5ba9,0x392e3c02,0xb960a5bf,0xb890cd2d,0x3aad8bf5,0x3aced674,0x3a4cbf92,0x39e9cb9c,0x3a798c41,0x3adffe51,0x39bcb419,0xb8e85506,0xbaaf5084,0x39edbbf8,0xb8894ee8, +0xbb85ef91,0xbaf96d50,0xbb20a4a4,0xbb9fada6,0xbb21888b,0xbb1383ef,0xbb2063be,0xbb0092e1,0xbb0524ff,0xb8bdb0bc,0xba128d24,0x38e004be,0x3a6872f3,0x3a85dc37,0x3ad9beba,0x3b2920e7,0x3b0fa387,0x3ae9d0fa,0x3a338fb5,0x3a53f5ae,0x3a64126e,0x3b802ea6,0xb9dde9b4,0xba33360e,0xb94d4f4d, +0x3b271735,0x3b4c28f7,0x3aebce0a,0x3ace5f41,0xba272232,0x3981ec8f,0xbaac2f65,0xbb1f784e,0xbb9339a6,0xba2f0a42,0xba8dc8eb,0xbb884adf,0xbacd1815,0xba9883e5,0xba351826,0xba0193ee,0xba1a3c27,0xbb10dfc8,0xbadefc67,0xbb1e9f8a,0xba8168a2,0x398ce409,0x3ac53120,0x3b5a1608,0x3b7d2fe2, +0x3ba160f9,0x3bbb6675,0x3b8c9fe5,0x3ae6bbb5,0xba899362,0xbad5eba0,0x3a7c4f7d,0x3bcf1ec8,0x3a066787,0xba9e629f,0x38cf9057,0x3b8b4c68,0x3b974e2a,0x3aaabaaa,0x38b11336,0x3c32847e,0x3c0b6745,0x3beb3383,0x3bd84379,0x3bd3ddb5,0x3bb7d7a7,0x3b6b1a4c,0x3acb8a30,0x3acca938,0x39a5771f, +0x3a2bbbf8,0x394417e5,0x3a2a8081,0x39218bf1,0x3af8beb0,0x3b00c56e,0xbb893497,0xbbc067cf,0xbbe8bc48,0xbbf3a6ab,0xbc0b9122,0xbc0a17ac,0xbbd4b2f0,0xbb4fe608,0x3b10f211,0x3c1d7010,0x3be09c9c,0x3b160e9a,0xbb406cbb,0xbb18988e,0xba4ad248,0x3b063f3a,0xb8cacabe,0x3b27c957,0x3c0939b5, +0x3c3082e6,0xbb043577,0xba89b6eb,0xbb369fe6,0xbab8cb32,0x3b21b0d0,0xbaf6ae1d,0xbb3c43fa,0xba3f2295,0xba07e62c,0xb9a8cf78,0xb97e63ae,0xb97d34a1,0xb92ff59e,0xb9bb70dc,0xba357524,0xb907fe24,0x3a65abf4,0xb9f33ebc,0xb858b310,0x3aeccd47,0x3b89a57e,0x3bb55827,0x3ba07a3a,0x3a9a370a, +0xbb4e85e5,0xbbe1178c,0xbc1f6fcb,0xbbb6ee17,0x3b807064,0x3ba6d38c,0x3b58d6a8,0x3b058e0a,0xbbd34bdc,0xbc136e99,0xbba3b3a5,0xbb858426,0xba2d6815,0x3c045509,0x3a5fe0e0,0xbb105e46,0xbbbbac63,0x3a222eb0,0x3a8852b7,0x3989ddff,0x39a281b0,0x39343240,0x392f3a43,0x3932552d,0x38d666c7, +0x39860946,0x397f63f8,0xb9af604d,0xbaa216f3,0xb99171e7,0xb9294a9d,0xba8830bb,0xbb063644,0xbb434070,0xbb273931,0xbb1257a4,0x397179e3,0x3b79f3d4,0x3c18534f,0x3bd2f851,0xbb5a164d,0xbbd79afc,0xbb5b6c68,0x3bfaa8cf,0x3c060535,0x3c228e24,0x3c3e58e6,0x3abb20d1,0xba4c4305,0x3c3c40af, +0xbbd2e2ef,0xbc73cbdd,0xbc4dcec8,0xbb256dbd,0xb986dc6b,0xb9b1b77c,0xb8ea76af,0xb94aa0bd,0xb91c626e,0xb941346a,0xb9235d61,0xb91554d9,0xb9806679,0xb8a45308,0x3abcc358,0x3b3be703,0x3b63c47b,0x3b8170d6,0x3b5ab2ed,0x3b09554b,0x39d8497a,0xba7f1d55,0xbac8eb28,0xbac4b4f0,0xbb076c65, +0xbaec6b43,0xbaae010c,0x3b223526,0x3bd67e5e,0x3c4ff061,0x3b3cc4a4,0xbba41e29,0xbc291274,0xbbcafd6a,0x3b8b6159,0x3bfa7076,0x3c2e7882,0x3c31d03e,0x3bb7c9ed,0x3adf60c5,0xb94305b6,0x389b4d26,0x3994ab76,0x39411361,0x3993ce12,0x39a5aa7f,0x39939ea0,0x39200c91,0x3a1845d7,0x3abc936e, +0x3b3b0892,0x3b5c963b,0x3b330a11,0x3aff172b,0x3ac15b2f,0x3aac68f6,0x3ad0ff25,0x3ac0f2ba,0x3a9386a9,0x3a6e0b84,0xba819c87,0xbb07ed71,0xbb3288e5,0xbb8a673f,0xbbab7d7b,0xbba5bd16,0xbb4271a2,0x39a2ee43,0x3b0d8178,0x3b5d1eda,0x38fc9f2c,0xba8a3cd7,0xbb09c957,0xbb35598a,0xbb2c2e5a, +0xbb0542b8,0xbaafc044,0xba8cbd59,0xb9e8ac4a,0xb9e29730,0xba1ba845,0xba4c2625,0xba3c9ce2,0xb9be9b52,0x39e5868c,0x3a3d05ec,0x39efdfa9,0xba5e8b13,0xbac8ff53,0xbacc3f8c,0xbad74d47,0xbac801d9,0xba839124,0x39c3c47c,0x3aaa47a4,0x3aec4fb0,0x3b05081d,0x3b034762,0x3ad5e25b,0x3ac6ffb1, +0x3a0f6f50,0xbae1e94f,0xbb2d44c9,0xbb514537,0xbb0f43ab,0xba750f5a,0xbb2f2453,0xbb1c0f63,0xbac530ac,0xba8964dc,0xba152556,0xba159fcf,0xba25d2c1,0xba4c5dfd,0x38e2c3aa,0x3a44a70d,0x3ad00057,0x3ae1c7fd,0x3b14e9ac,0x3b306842,0x3b1555be,0x3aed06e4,0x3ad17d97,0x3a92dbac,0x3a12c96f, +0xb9515580,0x39c239d4,0x3a3a3b94,0x3a7b653c,0x3ab766ec,0x3af5aff6,0x3b1fb49e,0x3b2f76f6,0x3b3ad0d9,0x3b43ea48,0x3b13c464,0x3ace4aad,0x3a8cd4d7,0x398b8e2c,0xba356fbc,0xbb0bc76c,0xbb182613,0x3b5bde54,0x3b626a22,0x3b6937d4,0x3b4d397a,0x3b4c0111,0x3b41fe33,0x3b48ae69,0x3b4d25d5, +0x3b4ff427,0x3b4f71e2,0x3b529e7c,0x3b5429fe,0x3b5168ee,0x3b554159,0x3b2117a4,0x3b09099f,0x3ad69911,0x3a8db7c3,0x3992c148,0x39b68673,0x39fb46a8,0x39e5e9f7,0x3a00cb93,0x3a01a057,0x39f965bf,0x39e7817b,0x3a5848f7,0x3a971d26,0x3acb3061,0x3b014739,0x3b1e8c61,0x3b3720be,0x3b343665, +0x3b3ab81c,0x3b3f8c80,0x3b52339f,0x3ac7f65b,0x3ac6c5a1,0x3ac4f319,0x3ac11c9d,0x3aa23c36,0x3ad04076,0x3ab2ddbf,0x3a89827a,0x3a8a89ba,0x3a8a8770,0x3a84eff9,0x3a898146,0x3a87e6c0,0x3a966d22,0x3ab25a56,0x3abd74f0,0x3a000e28,0x3a5528e1,0x3a57cc1d,0x3a7321d1,0x3a5db03f,0x3a63fcdd, +0x3a647830,0x3a650934,0x3a6a4ada,0x3a5efbbc,0x3a83be2f,0x3a9035e6,0x3a9969c2,0x3aa63b7d,0x3aaf3632,0x3ac0f49f,0x3ac3fd51,0x3accfed8,0x3ad6785f,0x3accd0c1,0x3a9bf367,0xb94bd8d0,0x37a56fb6,0x38e34199,0xb7a08121,0xb8193430,0xb8b5df24,0xb8e00b04,0xb883d3f3,0xba118589,0xb8e072c2, +0xb91581fe,0xb9fdf643,0xb97e6b35,0xb96d475a,0xb9360e83,0xb9fbf56f,0xba08afc7,0x397e5f1b,0xb8bdf257,0xb90e0536,0xb929a44a,0xb864a888,0x37458634,0x39764b32,0x3874064d,0x37191010,0xb8a62b56,0xb8c9d975,0xb88fead8,0x3a035237,0xb9953b2d,0xb9c89f94,0xb9c7b32b,0x39098fef,0x3987bd40, +0x3885aa30,0x3849f051,0xb92f3818,0x38efc7a3,0xb979468b,0xba25cd95,0xba8e290c,0xb93e707a,0xb92d6a97,0xbacb8aff,0xb96a30c3,0xb97f66ec,0xbac96daa,0xba79c59e,0xba79b45f,0xba46b58f,0xba9ae364,0xba85e2c3,0x38b6adf8,0xb97a39c1,0x3972b0db,0x39be9b37,0x3a246e30,0x3a5db9a8,0x3a957ca1, +0x39e11825,0xb8e13b9b,0xba0a7244,0xba2effb9,0xb9396739,0x3ac8dd48,0xb9b00861,0xba32e55c,0xb9f16f8c,0x3a519c2c,0x3a7f21a7,0x38ccf763,0xb7e478cc,0x3a2177e6,0x3aac91c2,0x38889ba3,0xb9da40f1,0xbabfbad3,0x39752c4c,0xb93b532d,0xbb61aa83,0xbad55be3,0xbafe8f00,0xbb7bfece,0xbb103848, +0xbb12b73f,0xbafe8313,0xbb19da2a,0xbb23b4c9,0xb7678c55,0xba5350aa,0xb9582f28,0x39b91899,0x3a137459,0x3a907810,0x3b03016e,0x3a921bd5,0x3a39b664,0x38560cc2,0x392f2fdd,0x39839bac,0x3b4a2da4,0xba7b1670,0xba97bca1,0xba0bd723,0x3afc4eef,0x3b1ea016,0x3a84d7e2,0x3a931635,0xba45999b, +0x37e45c71,0xbaa5acdf,0xbb1b717a,0xbb8419cd,0xba015ab3,0xba2ebed1,0xbb325861,0xba31abf2,0xb9e1a7da,0xb91874e4,0xb91a35d5,0xb96d31aa,0xbaa5e3b1,0xbadc687c,0xbb2ff095,0xba742dfd,0xb995249b,0x3a61168e,0x3b1c3ff1,0x3b428bdb,0x3b7dedee,0x3b929c5b,0x3b0ea2e7,0xb9bd9407,0xbb12506d, +0xbb1d9375,0x39b1c144,0x3baa692c,0xb91fd083,0xbae0fbd3,0xb9667c16,0x3b634658,0x3b63ecfd,0xb7f2eb54,0xba08c706,0x3c230946,0x3bed43d2,0x3bc712c8,0x3bba0bc8,0x3bb60ea8,0x3b8dd79f,0x3b0b8046,0x3a335a0c,0x3a254414,0x390eac6a,0x399b05fb,0x380fbf55,0x39e16f13,0x369bd1bc,0x3ad9e31e, +0x3b161c90,0xbb2a80a7,0xbb9d9aff,0xbbcac76d,0xbbd69b1c,0xbc00f0a4,0xbbfbad6b,0xbba8fb3f,0xbaee6edb,0x3b6a2ce6,0x3c2aac9b,0x3bd844ae,0x3ac4a95e,0xbb5d6423,0xbb4709ca,0xbac3ea73,0x3ac68b92,0xba734279,0x3b0b77f3,0x3c14c321,0x3c2b6df6,0xbaf90f47,0xba05ca9b,0xbb38a8a7,0xbaef8394, +0x3aacb65e,0xba9e7c4d,0xbab979ec,0xb9520d1b,0xb994693f,0xb9034ab8,0xb9012fc9,0xb8d8a503,0xb90dfdb1,0xb92464a0,0xba20c402,0xba07c98a,0x3a1e66b5,0xba6400c1,0xba64ddc4,0x39c4babb,0x3b357c72,0x3b87c58f,0x3b6f86c8,0xb99a57d5,0xbb980f88,0xbc088c97,0xbc25a5a3,0xbba5e960,0x3b98854f, +0x3b7188c1,0x3aa1ec4c,0x39d554bd,0xbbfdfbae,0xbc1ceb4e,0xbbb04d5d,0xbb8f69ec,0x3aa32b59,0x3c14ff19,0x3b30da3d,0xba5bc9aa,0xbb87950b,0x396e4360,0x3a2f860f,0x38e4702f,0x39213133,0x38bd8159,0x38ab34ee,0x38cb48b0,0x38a49604,0x390f57c9,0x398c1a92,0x390a0e0b,0xba430e57,0x3990c199, +0x3a0950e0,0xb7dc651d,0xbacef818,0xbb38a723,0xbb184497,0xbb0df01f,0x3a462c52,0x3bb4653e,0x3c0d3c09,0x3b9216f3,0xbbc34262,0xbbc7ec41,0xbafedbee,0x3bf7000a,0x3c0c844d,0x3c1dc538,0x3c0e699f,0x3afeb00f,0xbbbc1c57,0x3bb5b486,0xbbd9c4c3,0xbc6480ef,0xbc4f052b,0xbb24f74b,0xb9315329, +0xb91b7465,0xb8c7baab,0xb8d08396,0xb8c58165,0xb8fe76ea,0xb8f12d65,0xb8a68732,0xb994b4b8,0xb9a37da1,0x3a120183,0x3b144b36,0x3b49c459,0x3b5e4ff5,0x3b253fdb,0x3a9bf319,0xba0a3d52,0xbb0e6adb,0xbb47d42b,0xbb3af364,0xbb4ea006,0xbb1a7123,0xbb18ea22,0x3b6b9718,0x3be821da,0x3c318ce1, +0xbaaa1eba,0xbc16fcb0,0xbc438b66,0xbc1d9508,0x3b7e6d28,0x3c167e1c,0x3c483376,0x3c477450,0x3baed35e,0x3b025905,0xb88697a2,0x39388161,0x393da02e,0x38f49b02,0x393cfed1,0x395d7d96,0x396fed00,0x38e7359d,0x39bcbb63,0x3aa06b9e,0x3b28dbf7,0x3b7c501c,0x3b69ac15,0x3b2e1276,0x3b00b17f, +0x3acbc061,0x3ad30985,0x3ab41f8b,0x3a5a4970,0x3962790d,0xbaf7f01b,0xbb49aa84,0xbb732d5c,0xbba55d1f,0xbbc08543,0xbbaeb23f,0xbb473fae,0xb97ffeef,0x3ab53fd0,0x3accc3a4,0x39d4bd14,0xb9c333f6,0xbad14d69,0xbb102ce8,0xbb11a466,0xbae59936,0xba98ca8f,0xba4e1ccd,0xb98618dd,0xb967db4e, +0xb9c4fd38,0xb9eed03a,0xba0b231f,0xb9e7af96,0x39388412,0x3a00f442,0x3a07caf8,0xba19e8e9,0xbaa6dfc8,0xbac8eb11,0xbae86f68,0xbaefadc8,0xbad0c1ed,0xba36943c,0xb969578b,0xb8a909e9,0x384360c6,0x37dae7f6,0xb97c2ebd,0xb81836f0,0xba0b1638,0xbb11ce33,0xbb2b2400,0xbb3bcb3d,0xbadf6d07, +0xba106b78,0xbb65f5ea,0xbb5e8634,0xbb210ef8,0xbb06775a,0xbac219bd,0xbab2a059,0xba9e2d73,0xba93c7ab,0xb9b0965e,0x38831e1d,0x3a57b76c,0x3a47e0ce,0x3abe39e3,0x3adf5305,0x3aefbda8,0x3ad25c5a,0x3adf382c,0x3a996113,0x3a24b53e,0xb912ebec,0x39e582b1,0x3a631590,0x3a9d3f79,0x3adf22cf, +0x3b12fb5b,0x3b3c6cc6,0x3b3171a7,0x3b23c7cd,0x3b11a1a3,0x3aa23a77,0x39971a36,0xb9f48b08,0xba8d079d,0xbaef8be8,0xbb450454,0xbb503f18,0x3b093ada,0x3b07aaae,0x3b387fb5,0x3b0dd9da,0x3b1f7540,0x3b1bce13,0x3b1f800d,0x3b294ce3,0x3b2e2274,0x3b3a8a0a,0x3b4ec248,0x3b5486f7,0x3b5d7969, +0x3b69fd84,0x3b41c942,0x3b24a33d,0x3b05820c,0x3acf83fc,0x3a8cde28,0x3a60875a,0x3a8034e5,0x3a6f361a,0x3a727401,0x3a6d31de,0x3a5d01d0,0x3a59d6b2,0x3a8337e5,0x3a9bd3f8,0x3abbe7dd,0x3ae1990b,0x3b040bf7,0x3b0d7126,0x3b055f8f,0x3b01c0e7,0x3afadc76,0x3b06965c,0x3ab1c80f,0x3a9afc72, +0x3ab8654f,0x3ac8e938,0x3ad69d3b,0x3ab85f07,0x3abe83a5,0x3ac1e0a8,0x3acec8f3,0x3ad4ad55,0x3ad20a5c,0x3ae0b4d6,0x3ae4e7ec,0x3afa5f5d,0x3ae230e0,0x3adb46d6,0x3ab3a30e,0x3ab0500a,0x3aa51900,0x3aa360d4,0x3aa20542,0x3aa451b3,0x3aa69e70,0x3aa85b20,0x3aabdc11,0x3aa9b97d,0x3ab30f5a, +0x3ab65bf4,0x3ab513fe,0x3ab53ad4,0x3ab3a5e6,0x3abb915c,0x3abaefe6,0x3abfa76b,0x3ac5112e,0x3ab7c4b8,0x3ac1b321,0xb9908019,0xb7b7fb7d,0x38c372de,0xb8f1479e,0xb96e194e,0xb9da8ec9,0xb93e275d,0xb95d27c7,0xba3e1c7d,0xb9ba8d56,0xb9b897ec,0xba1c2a99,0xba04ea3d,0xba0d03d3,0xb9c78937, +0xba2fa024,0xba23fde4,0xb8a3d6ba,0xb996b336,0xb9901ddd,0xb989454d,0xb92b2582,0xb8cce1c7,0x38fdd712,0xb90e0af5,0xb93c50ee,0xb9401687,0xb948def8,0xb9270a32,0x39b007c6,0xb9b7b089,0xb9d86352,0xb9b2d1cc,0x38dbdd55,0x3961a252,0xb80bd2cd,0x376e22df,0xb8c24cb6,0x391fcdb6,0xb9c3e191, +0xba100496,0xba87bcdc,0xb9966908,0xb95bf3f5,0xbaa9a506,0xb94e1fdb,0xb9c3bc4c,0xbad0b17c,0xbaad34b0,0xbaa5ffc2,0xba164c19,0xbabbe2ee,0xbaa5759d,0x387eea19,0xb9dfa856,0xb8e0b1db,0x38629fde,0x39b63bf0,0x3a038220,0x3a46ff76,0xb960efb5,0xba3a1539,0xba514f93,0xba4da315,0xb9851a77, +0x3a9cc39e,0xb9e25597,0xba2d9844,0xb98836ec,0x3a57059f,0x3a6d9679,0xb8a4d591,0xb79993a3,0x3a461ac7,0x3aace01c,0x38e61fb4,0xb9e123d1,0xbabaa7cb,0x388be9e2,0xb9584ac7,0xbb26820b,0xbaa94ea9,0xbab1bb4a,0xbb34421a,0xbaf2fe5a,0xbb0c5ac8,0xbab1cb9c,0xbb25a6c7,0xbb3428a5,0x384d41a0, +0xba8141c3,0xb9e29418,0xb8c97c20,0x3994780d,0x3a3f8610,0x3ad5ba9c,0x397bb903,0xb8fa653a,0xb97899ce,0xb6a88872,0x38e8cf7e,0x3b1f990a,0xba83b2bd,0xba80d444,0x363f85d1,0x3b07da3e,0x3b20f748,0x3a5aa9c0,0x3a9e6a6e,0xb9c13db6,0x393919f1,0xba79b09e,0xbb038487,0xbb562ae2,0xb9a548ee, +0xb9ba9e72,0xbabbfffa,0xb8a6cfae,0xb88da14f,0x39eabc5b,0x3952e449,0xb87122c7,0xb9f1bad5,0xbab541c6,0xbb2ba027,0xba5fe1d8,0xba456b71,0x395e73db,0x3ab85257,0x3b0b71fa,0x3b3d1c81,0x3b592adf,0x390b7752,0xbb149943,0xbb43665a,0xbb253e9f,0x39759e10,0x3b862a50,0xb9c85aa4,0xbaba6897, +0x3a1ca389,0x3b700ac8,0x3b574c2e,0xba0a897e,0xb9f3ac5c,0x3c21bb76,0x3bd8ec2a,0x3bb86253,0x3ba03b33,0x3b93ba69,0x3b4874eb,0x3a8bdb3a,0x393d6011,0x39902745,0xb7af64af,0xb86f2b0c,0xb8ed0593,0x396e8676,0xb7f228b4,0x3a9545f8,0x3b0cc6d6,0xba92bf23,0xbb6f5132,0xbbaea318,0xbbb788f8, +0xbbe024a2,0xbbd1dcdd,0xbb565db5,0x39a60799,0x3bb5aeb6,0x3c392e7d,0x3bdd6a1f,0x3aae095c,0xbb48d9f7,0xbb2a7760,0xba8257bb,0x3b0ed591,0xb99bcb9e,0x3b446cf7,0x3c2c8058,0x3c33cb97,0xb8faa67f,0x3a61fde7,0xbb122336,0xbacf8c5f,0x3a320321,0xba1a1fb7,0xba0f29c6,0xb884115f,0xb9099fc3, +0xb784c6b5,0x380880cd,0x36edb6ee,0xb899d6d4,0xb89c2977,0xb9e24319,0xba350ff9,0x39ccecec,0xba790407,0xbaba1ba3,0xba1fc62f,0x3af5f241,0x3b5a1b14,0x3b4e6053,0xba21db20,0xbb9ef27e,0xbc0a9be9,0xbc13f7c3,0xbb5c1123,0x3bc8a7e6,0x3b6b91e4,0x3a2c86a6,0xb534c936,0xbbfc1924,0xbc0ec650, +0xbb89943a,0xbb371c85,0x3b80be52,0x3c2f078f,0x3ba1dff4,0x3a24817f,0xbb3bd656,0x3937a71b,0x39cb0808,0x362e3d14,0x38ae7b65,0x372a76e6,0xb6ddae2f,0x379ebe0c,0x384002e7,0x38908ceb,0x396680f0,0x39c0345f,0xb99ebe3b,0x3a3cb321,0x3aa225cf,0x3a8a8fe7,0xba2806cd,0xbaf82377,0xbaa49999, +0xba85346d,0x3b1e247e,0x3c0529c6,0x3c0f60d5,0x3b6b0bc9,0xbbdeb5a2,0xbb8c2e8e,0x3a04b89c,0x3c01bc12,0x3c1ae550,0x3c1d0d8f,0x3bbb0610,0x3b3c0cac,0xbc1ca219,0xbae2614a,0xbbc6d71f,0xbc3504d1,0xbc344bed,0xbb093446,0xb7237739,0xb8a813f2,0xb84d5ba9,0xb7676415,0xb75ea6b1,0xb81d1224, +0xb8a0d7d6,0xb847d711,0xb9329689,0xb9c5ac8e,0xb92c6cdf,0x3acea605,0x3b297218,0x3b3b33f4,0x3b013b21,0x3a46b202,0xba4bd0bb,0xbb14f39f,0xbb58bde2,0xbb4955e4,0xbb42955a,0xbacee27e,0xbaf39247,0x3bbedd9f,0x3c05071a,0x3c075482,0xbb9ac2a2,0xbc439dc5,0xbc4ff555,0xbc357b52,0x3b5d1c9a, +0x3c3215ee,0x3c6039aa,0x3c4eb5df,0x3b9e8627,0x3b0f98f0,0xb710beca,0x3920a61f,0x3828ed22,0x378c04db,0x381e8dbf,0x38ae5012,0x390bfae6,0x38d91f8e,0x38e3d483,0x3a5cc721,0x3b0a2cef,0x3b8017e3,0x3b841ec1,0x3b607136,0x3b39e9b0,0x3b15626d,0x3b0b236b,0x3aec8990,0x3aa38777,0x3a0cb0c7, +0xbad4b7d8,0xbb3a2d42,0xbb622357,0xbb99d760,0xbbb16af3,0xbb9652bf,0xbb3ab3e0,0xba850bad,0x39292a52,0xb9b1fddb,0x3a8022d5,0x3a1c0da0,0xba500d35,0xbaa2e181,0xbacc64b6,0xba98383a,0xba43f510,0xb9aea3ab,0x36b6117f,0xb7094e26,0xb895287e,0xb9394a4d,0xb98a097c,0xb9b77668,0x379ff5de, +0x39b92684,0x3a27dbf8,0xb9541d56,0xba7a5db7,0xba9d3070,0xbab47bba,0xbacfb30a,0xbac8b0cb,0xba913089,0xba839f40,0xba903c16,0xba5a2ba8,0xba3a8734,0xba653542,0xba094670,0xba43b60d,0xbb05093d,0xbb01e0a3,0xbafecd8d,0xba5f82ad,0x3980ec7a,0xbb6ace3d,0xbb758ee1,0xbb4a5e06,0xbb356d41, +0xbb198d1e,0xbb07da8a,0xbae448d9,0xbac0d989,0xba5cb19f,0xb9fbea4b,0x38b7fa5e,0x384e9006,0x3a10a7ee,0x3a4d832c,0x3a951f4e,0x3aa014fc,0x3acab335,0x3a9801fd,0x3a3a6ce8,0x398629a7,0x3a637f9a,0x3aa04512,0x3ad07657,0x3b0e5e99,0x3b374007,0x3b630eaa,0x3b430ad5,0x3b21314e,0x3af68507, +0x3a544de3,0xb9703abf,0xba8fc567,0xbaca58b7,0xbb0ce6e7,0xbb4c3ee3,0xbb5a0621,0x3a809437,0x3a5dc7bd,0x3ac18a4f,0x3aa59203,0x3acf8451,0x3ad4725d,0x3ae7188c,0x3b001094,0x3b0c3c9c,0x3b1dd281,0x3b3632a4,0x3b45cf13,0x3b57aa38,0x3b6b0c8f,0x3b4c6e8a,0x3b34e704,0x3b1c6747,0x3b0383f0, +0x3abdbb27,0x3ac37349,0x3acd1126,0x3ac2922c,0x3abf11c2,0x3ab8c32c,0x3aab3e31,0x3aad1a9f,0x3aac582a,0x3ab5ee4c,0x3ac3f6ef,0x3ad5015d,0x3ae40fe7,0x3adba1dc,0x3abefd3b,0x3aa5b811,0x3a8ed56c,0x3a8bfda0,0x3ab69b4b,0x3a9e2f6e,0x3aad2507,0x3aaf65de,0x3aaed572,0x3abb9f76,0x3ab66197, +0x3ab02a0f,0x3ac37810,0x3acf9103,0x3ad45fed,0x3ae44bda,0x3aeb56ac,0x3b015365,0x3af61be7,0x3b00ad6d,0x3ac27c53,0x3ad5a610,0x3adbe623,0x3af1e2b4,0x3aea4b83,0x3aeeb26f,0x3af1bf57,0x3af3c2a8,0x3af6a822,0x3af5afed,0x3af55f1a,0x3af0669e,0x3ae66aea,0x3add9b39,0x3ad50a09,0x3ad579e0, +0x3ad1a699,0x3ad17673,0x3ad0eea6,0x3ac16f1d,0x3b04bf23,0xb9f03bbb,0xb92c2200,0xb8ddb08a,0xb9749828,0xb99a7456,0xb9d3c3d0,0xb9bc7ef2,0xb99a624e,0xba1a1a6c,0xb99beb92,0xb99446f0,0xb9f518c6,0xba02c71b,0xba0f03eb,0xb99260ee,0xba4cfdb7,0xba4ee188,0xb89cdaeb,0xb9c80c44,0xb9da1692, +0xba027c5e,0xb9bc34da,0xb9a2fa4c,0xb8e9aae2,0xb9e02ed5,0xb9ed4631,0xb9bcb2ba,0xb9a93e6e,0xb9964bb1,0x3894043c,0xb9fca942,0xba089ffd,0xb9d531f5,0xb849ce79,0x381cadf7,0xb981d171,0xb9160d03,0xb9462895,0x36812710,0xb999df8f,0xba21f068,0xba80ca35,0xb9cf902f,0xb99d6bb5,0xba81063f, +0xb994d68d,0xba0fa3b7,0xbaca2c74,0xbadeb072,0xbad2dda8,0xb9ee2f07,0xbacc5b3d,0xbabb52f7,0xb7c369c9,0xba22c64c,0xb99fbd63,0xb9bb4785,0xb81b9dcf,0x380bdd6a,0x395cd93f,0xba7efa65,0xbab49085,0xba8fdb79,0xba5839b5,0xb990357f,0x3a420ea1,0xba12a5b0,0xba3798ef,0xb9502575,0x3a23b29e, +0x3a1eb1ef,0xb9e12287,0xb9409557,0x3a2495c1,0x3a929778,0x3896f7bb,0xba0bde9a,0xbaa71fe8,0xb8d0a6e6,0xb9727a09,0xbad98ed5,0xba6bbe28,0xba612c5c,0xbae0d796,0xbac2b399,0xbaf6f516,0xba5f13eb,0xbb24145b,0xbb38b991,0x389030c1,0xba92393e,0xba31df9c,0xba20a9ca,0xb8e8a35e,0x39665b8c, +0x3a88ec7a,0xba46dbd9,0xba80af1d,0xb9edd25b,0x38844164,0x396c3f7c,0x3adf8430,0xba78d38d,0xba54c53d,0x39bee136,0x3afa01dc,0x3b0c13fe,0x39d4ca88,0x3a89f30f,0xb9a6feef,0x3942bb58,0xba355b7d,0xbae22434,0xbb23f84c,0xb9657258,0xb93ea383,0xb9e3ffd9,0x39208d09,0x395a9e24,0x39eae362, +0x3a06667b,0x392acfeb,0x3785ac88,0xba571e76,0xbb1698c8,0xba3ff582,0xba8e7dac,0xb9d1da69,0x39be7e3b,0x3a9a0a01,0x3ade8c8b,0x3aef4a2b,0xbb099f4b,0xbb88d31e,0xbb684b26,0xbb0f45f0,0x39e4732f,0x3b398dc2,0xba05dff3,0xba8ae5b7,0x3a9c825d,0x3b5d5d28,0x3b2a91b9,0xbaa923dc,0xba2ba526, +0x3c0cca10,0x3ba93ce5,0x3ba0f019,0x3b7a6c2a,0x3b4fc8f4,0x3af4f2f5,0x399c8210,0x387d3ae8,0x383562fd,0xb8f7b9ed,0xb9220214,0xb9605016,0xb6c1122b,0xb820bcc0,0x3a1260c0,0x3ad8fada,0x387c8453,0xbb1f4323,0xbb8f7949,0xbb9a40d5,0xbbbf0e04,0xbba70b1c,0xbabc0d0a,0x3b30d37f,0x3bfdb15c, +0x3c47e35b,0x3bf08b59,0x3af5a166,0xbaea55f9,0xbaf0a7e6,0xba1f2ccf,0x3b16d236,0xb8f39fb9,0x3b4c3995,0x3c2e5bfc,0x3c294df2,0xb917f608,0x3aceeb6e,0xbaa6de7e,0xba8f43e7,0x39a4c910,0xb91aaa3c,0xb9a488af,0x37ad2bd7,0xb8001787,0x38782672,0x38a94beb,0x38aebbd4,0x37acc746,0xb7bde1a1, +0xb98b5540,0xba20ec23,0x393ff9a9,0xba3c102b,0xbabed3fb,0xbaa927d6,0x3a8e8094,0x3b21abd0,0x3b182b74,0xbaa20b5d,0xbbaff0b3,0xbc0ea215,0xbc004061,0xbadba7d1,0x3bee1d30,0x3b626dcb,0xb8c8c8d8,0xbaaab276,0xbc059563,0xbc0c8a9b,0xbb8d0d55,0xbb2f89bd,0x3b9018de,0x3c2c2f59,0x3bdb0e89, +0x3aae29db,0xbb0b3cc5,0x39dec94a,0x393430b3,0xb7d0e35a,0x3759c10d,0xb832f4ea,0xb8432ce2,0xb82586df,0xb74bc2fb,0x37fb1284,0x38e923b1,0x39b69890,0x388d1c8e,0x3a64f879,0x3ad545fe,0x3adf1f37,0xb911f9b9,0xbaacd1ab,0xba54aea3,0xb98c3009,0x3b616d57,0x3c1a7c0a,0x3bf633f4,0x3ad244ee, +0xbc030668,0xbb488a32,0x3b161fa1,0x3bf1562e,0x3c1e172c,0x3c0f4b54,0x3b09f665,0x3b1218cc,0xbc45bc42,0xbc2ef2b5,0xbbd53648,0xbbfd9c0b,0xbc0a00c4,0xbaa3f043,0x38af2055,0xb82fa960,0x382040ef,0x382a1799,0x38297deb,0x38003780,0xb70d89bb,0xb707630e,0xb8ba2e6f,0xb9727c25,0xba193902, +0x3a4607f4,0x3afd3add,0x3afe06b8,0x3a6f64d4,0xb8da54d7,0xbac740bd,0xbb394dae,0xbb84fe89,0xbb81977e,0xbb6ed05f,0xbacda417,0xbac36ead,0x3beb9e24,0x3c035c9e,0x3b84e149,0xbbef3017,0xbc4e6a26,0xbc3ef829,0xbc2dd8da,0x3b224257,0x3c348188,0x3c5ad685,0x3c37f0d6,0x3b803567,0x3b031431, +0xb939201c,0x3861b601,0xb8b230aa,0xb8a2505f,0xb873d88f,0xb8038384,0x36b47202,0x388f625e,0xb8237673,0x39fa36a3,0x3acf4b04,0x3b721c15,0x3b914ce1,0x3b8076f6,0x3b5b195a,0x3b2b048a,0x3b07b23f,0x3ac8720f,0x3a67b805,0x39168d66,0xbaffcb4e,0xbb4fb7dd,0xbb74e0e8,0xbb9622c0,0xbb9db28b, +0xbb6e0f19,0xbb26fd8d,0xbaf32ed4,0xba96b658,0xbb11e903,0x3ac931a5,0x3ab098c0,0xb6f37814,0xb97c1071,0xba4c9fac,0xb9d9e9e7,0xb96ab509,0x38b8cf39,0x395bc6e4,0x395eff5c,0x38ed17c9,0x38bf183c,0xb7c29da7,0xb903340a,0xb7d7fdb3,0x399ddfed,0x3a56c64e,0x39a053a8,0xb9c5cc38,0xba470706, +0xba89e385,0xbabb6a3b,0xbae1caa5,0xbaed891a,0xbb085917,0xbb19d160,0xbafc4763,0xbad3b07b,0xbacfe3f2,0xba9d1ce3,0xba9a184a,0xbaebad27,0xbaa0a285,0xba4fc66c,0x399b4b02,0x3a9ada3e,0xbb52899a,0xbb6a8852,0xbb533e47,0xbb47d7f1,0xbb3578cb,0xbb1f558f,0xbb0057cb,0xbacb014b,0xba85bb2e, +0xba4a53f1,0xb9b717e4,0xb9e52085,0xb7f03857,0x38d471d6,0x3a19c288,0x3a550fd7,0x3aa73f76,0x3a9134cf,0x3a68a9ed,0x3a280333,0x3a85f9bc,0x3aa62310,0x3ac8b23c,0x3b07276a,0x3b2ad572,0x3b4e2cca,0x3b1fabb2,0x3adf993b,0x3a735866,0x38690168,0xba4dbf63,0xbac75fa7,0xbae14d48,0xbb07fb05, +0xbb31093f,0xbb44be81,0x38e6b257,0xb91d6e6e,0x3a031cac,0x39fcdeca,0x3a66b8ab,0x3a8376be,0x3a927d0f,0x3aacfcc9,0x3ac0dfc7,0x3aea980e,0x3b11bea8,0x3b238130,0x3b3a11e0,0x3b52304b,0x3b46507a,0x3b388103,0x3b2b51ee,0x3b1bb2da,0x3b01e030,0x3b073c87,0x3b0afe1b,0x3b088778,0x3b069963, +0x3b04cf9f,0x3afe1baf,0x3b03df3b,0x3af36b5c,0x3af10596,0x3aee7847,0x3aeb2a48,0x3ae14d00,0x3ac2c353,0x3a96ab81,0x3a55ae48,0x3a0d60c3,0x39b85149,0x3ac65ae5,0x3aa7dee1,0x3abdc6e0,0x3ac049af,0x3abf75a0,0x3ace2eea,0x3ad1a5bd,0x3ad6b023,0x3af09be0,0x3b003214,0x3b03e23b,0x3b0d2b42, +0x3b11bad8,0x3b1b921a,0x3b12106a,0x3b16f2a9,0x3b00b858,0x3b0a0333,0x3b0f013e,0x3b18bb02,0x3b16ee17,0x3b19ad23,0x3b1c313d,0x3b1dd297,0x3b1f6170,0x3b2070d2,0x3b1bec8d,0x3b161dd8,0x3b0e194c,0x3b064318,0x3aff4393,0x3afa02cd,0x3af24671,0x3aec9128,0x3ae44c3e,0x3ad36fa3,0x3b276ce1, +0xba2f697c,0xb9b5c826,0xb9a2fe3d,0xb9de2081,0xba006693,0xba164cd9,0xba156cce,0xb9f785d6,0xba1c4daf,0xb9d99b72,0xb9d7c086,0xba0650e2,0xba2fa20f,0xba3d971a,0xb9b74941,0xba7b7942,0xba80556e,0xb97fa770,0xba1648b9,0xba21ee1b,0xba418795,0xba1750a8,0xba0f7e08,0xb9d01658,0xba43d1ed, +0xba450df8,0xba170a5c,0xb9f85ee1,0xb9e44221,0xb987cdad,0xba26e67a,0xba273240,0xb9ee8303,0xb95532b0,0xb927474b,0xba050047,0xb9af61ec,0xb9ac20fd,0xb956ae41,0xb9eb6d0e,0xba406841,0xba87dde0,0xba24b35a,0xb9fbeaf1,0xba43cd14,0xb9d016c0,0xba34ce36,0xbac93800,0xbb05cf76,0xbafc1e16, +0xba00ba40,0xbae118d2,0xbad15e60,0xb93b338c,0xba5d5c5c,0xba199450,0xba46c33f,0xb9d65425,0xb9e57fd2,0xb9d65126,0xbae15d39,0xbb040c9d,0xbab8acb6,0xba5d949f,0xb9a31ade,0x392e2648,0xba3aee0b,0xba3dcbb9,0xb8a82f4a,0x39ec8423,0x39a642e5,0xba545e2d,0xb9c6fea3,0x3a0618e3,0x3a5eec3d, +0xb8b9ec3c,0xba37aea7,0xbaa4f040,0xb9c29a05,0xb9a113fa,0xba5a89cf,0xba0c60ba,0xb9e032b0,0xba52f923,0xba6b22b9,0xbac41dea,0xb9e1bd99,0xbb1765c9,0xbb34a27a,0xb883a939,0xbaa55d71,0xba7fb3dc,0xba93172e,0xb9fcaf9f,0xb9a57cec,0x399c4d71,0xbae92003,0xbaf23f22,0xba4048bc,0x39218145, +0x39bd5093,0x3a51aad3,0xba6e4afa,0xba1b5a8f,0x3a66c9b7,0x3aeff984,0x3af1ccbd,0xb9008102,0x3a5e4e48,0xb953f861,0x38c1ee88,0xba289c9d,0xbabf1acb,0xbaf57c47,0xb950f85d,0xb855f349,0x37a19a3d,0x392e8a8f,0x3924c91d,0x3998211b,0x39dd7cdf,0x399a6533,0x39628bd2,0xb973e0b0,0xbae41986, +0xba2b63db,0xbaabe86b,0xba79e6f1,0xba158cfc,0x39ad4295,0x3a0dfd25,0x3947119e,0xbb8a2e93,0xbbbfb340,0xbb81af3e,0xbad661b8,0x3a36e4d8,0x3ab0b064,0xba2e1cae,0xba1fb8f3,0x3afe7ebf,0x3b4cdb29,0x3afda2b5,0xbb06ee0d,0xba518d71,0x3bfcc46e,0x3b824b9d,0x3b7ba4c7,0x3b2c0397,0x3af47748, +0x3a5712c5,0xb8647e13,0x37fcb1b9,0xb892bc0f,0xb89206bf,0xb911e19d,0xb9407640,0xb8ec00d4,0xb8a81801,0x393b2dad,0x3a78a47e,0x3a59e57d,0xbab9ae12,0xbb670a39,0xbb842f64,0xbba319b6,0xbb839e97,0xb9025432,0x3b960d9b,0x3c164587,0x3c45094d,0x3beda46a,0x3b08272b,0xba436de1,0xba9d84ea, +0xb8626875,0x3b431480,0x3a86279c,0x3b847de6,0x3c325d97,0x3c1e44b1,0x3aa8856e,0x3b0b44b8,0xba58e6a6,0xba0d8ea7,0x397b24e6,0xb8c5094e,0xb926c3d8,0x38b9b89c,0xb68a6322,0x3881c93a,0x388d3000,0x38c0e57e,0x3877bd81,0x3806d514,0xb8ac5032,0xb9f8a173,0xb8001907,0xb9e48148,0xbaa31f96, +0xbad23bae,0x3a23a683,0x3ae73ed7,0x3abf8923,0xbb00ffc4,0xbbc339ac,0xbc10d7ea,0xbbdb68f2,0xba086460,0x3befaf53,0x3b42c6d2,0xba5fe37d,0xbb1f30b9,0xbc006ded,0xbbee40a5,0xbb3278bc,0xba80687d,0x3bcf8373,0x3c32725e,0x3bfca7bb,0x3ade51cf,0xbaf2df4d,0x3a441359,0xb8dc4396,0x37505023, +0xb84f1fef,0xb80edbe9,0xb86d9a78,0xb8605428,0xb81effd7,0xb7a46e91,0x38646cde,0x3957dcf4,0x394cbbcf,0x3a3dfe0c,0x3acca266,0x3b02a6ff,0x39c76467,0xba108f1e,0xb92f9278,0x3a6696b9,0x3b95d873,0x3c249603,0x3bc3d76e,0xb9b1a6dc,0xbc0fb225,0xbae22247,0x3b8cfa0c,0x3bf96520,0x3c2b8279, +0x3c0a0988,0xb997dd02,0x3b2e97df,0xbc441e9f,0xbc8d82ef,0xbbdab781,0xbb8f9553,0xbbb55d60,0xb97e24b8,0xb7d67c3d,0x38abd1a5,0x38149801,0x389be003,0x385ef7a7,0x3880361b,0x38083a54,0x37bad230,0xb7fa5a97,0xb828d21d,0xba37472d,0xb7ecd341,0x3a81d4be,0x3a5e53e5,0xb9250442,0xba6e86ca, +0xbb0ad41d,0xbb53ec83,0xbb901709,0xbb8855b7,0xbb6e3b46,0xba515b16,0x38af7be5,0x3c0e2681,0x3bfef1e0,0x34b6b3cb,0xbc0583d0,0xbc3776a8,0xbc1fd537,0xbc05347c,0x3ad303bf,0x3c2d0db6,0x3c441f5d,0x3c13b2ac,0x3b52a754,0x3ab6cd57,0xb9c31a12,0x378c7a6b,0xb936a5c9,0xb8c97d59,0xb8ef45ad, +0xb8ab7cba,0xb89f3192,0x370721c7,0xb888c104,0x38e6ad63,0x3a7e8627,0x3b4788a8,0x3b8ce1aa,0x3b843325,0x3b68383f,0x3b399822,0x3b10a8b9,0x3ac6c447,0x3a6a6973,0x3952df29,0xbad0c4d8,0xbb38afd6,0xbb65c2dd,0xbb8b99c2,0xbb872b22,0xbb2d34c2,0xbb1bf141,0xbb2dee5c,0xbb1b0b7d,0xbb62bba7, +0x3b14b17a,0x3b191dcf,0x3a76b75f,0x3a33e5b1,0xb79aad58,0x398079df,0x3901c3b2,0x39a0f0bc,0x399878e1,0x398df532,0x3956b576,0x3957b3a1,0x3909536a,0x388ad341,0xb77bf076,0x39860498,0x3a5a8d6e,0x3a33d259,0x38f26353,0xb9d969a4,0xba3fdad1,0xba9ec3be,0xbad471c0,0xbb05ca4d,0xbb27f843, +0xbb466ee5,0xbb21cc67,0xbb0a3ae5,0xbb07bb25,0xbae843ef,0xbad7b846,0xbae1454c,0xba3cac98,0x3971368c,0x3abd100c,0x3b1376b1,0xbb2c2ebd,0xbb481e5e,0xbb3edef9,0xbb36ea73,0xbb2e0046,0xbb178654,0xbae7587d,0xbaab3754,0xba7909a0,0xba44c8b3,0xba013e8d,0xba1e25be,0xb9cb5019,0xb9aa05f2, +0x38b8ec85,0x39c22508,0x3a61222f,0x3a71d886,0x3a740540,0x3a8ab55d,0x3aaaad77,0x3ab77a8b,0x3acc03ad,0x3b0288c4,0x3b208e84,0x3b3b95d7,0x3b06db61,0x3aa3c776,0x39dec31a,0xb981fc3b,0xba6578c6,0xbac28711,0xbacb77a8,0xbaec54e4,0xbb123f5b,0xbb25fc81,0xba2fad44,0xba8a1bde,0xb9d22ce6, +0xb9c245f5,0x38a28055,0x397cb685,0x3997a5eb,0x39fa9357,0x3a1e3a82,0x3a7256bd,0x3aae8658,0x3ad7ef3b,0x3b057be2,0x3b1f5c41,0x3b269a4e,0x3b26b008,0x3b26bbb7,0x3b24c7f2,0x3b18ddb0,0x3b207906,0x3b22357b,0x3b2287bc,0x3b21b749,0x3b20eaf7,0x3b1bad40,0x3b22af9f,0x3b111b21,0x3b0a3ca6, +0x3b018afe,0x3aed158d,0x3ace1c13,0x3aa0821b,0x3a523ebf,0x39cca331,0x386e7573,0xb98fe99d,0x3abe7ed2,0x3a9a065f,0x3ac1114c,0x3ac83b10,0x3ad074cc,0x3acb605e,0x3adcf8d7,0x3af02142,0x3b06dbeb,0x3b0ff059,0x3b15e875,0x3b1eb0cb,0x3b23fd51,0x3b2bda04,0x3b1f0a6a,0x3b20566c,0x3b1aca8f, +0x3b1e9efd,0x3b22ebc4,0x3b277d2f,0x3b280de2,0x3b2b468b,0x3b2e496b,0x3b30c637,0x3b33065c,0x3b35fec4,0x3b2d3025,0x3b244f46,0x3b19b3d0,0x3b0f83bc,0x3b07148e,0x3b01ba68,0x3af88aa8,0x3aed575c,0x3addf957,0x3acc2778,0x3b35423d,0xba5d6927,0xb9ec0198,0xb9e9dd5c,0xba1b06c9,0xba318cd8, +0xba454c8e,0xba4756a9,0xba2c55de,0xba192e98,0xba09dc72,0xba10c195,0xba219f6c,0xba5fac4f,0xba6544c7,0xb9e40eb1,0xba9101cd,0xba95ba08,0xb9eff0a9,0xba4eba32,0xba597963,0xba74e25a,0xba48bcb2,0xba456f40,0xba2fe91c,0xba84fe53,0xba83063e,0xba4986fe,0xba1dc1d2,0xba174f45,0xba224c58, +0xba52712c,0xba4728a9,0xba02c128,0xb9b99c2d,0xb9ac7137,0xba313906,0xb9e84002,0xb9a3f833,0xb99df45b,0xba1840e0,0xba525072,0xba8657b1,0xba4fc95b,0xba1f4aad,0xb9facd83,0xb9ea1b98,0xba3e332b,0xbaae7f31,0xbb0c89cc,0xbb0b32b4,0xba1d0c74,0xbaed37d9,0xbada674b,0xb9b4031f,0xba85fabd, +0xba618642,0xba91ae54,0xba42e208,0xba665523,0xba879f29,0xbb193a37,0xbb242cf7,0xbadada0d,0xba5cc0f2,0xb9cbb2aa,0xba0c3396,0xba7e1237,0xba5ccd6a,0xb7c39047,0x395d3108,0x381b68b9,0xba8503ed,0xb9da192f,0x3a31c3c9,0x3a432e79,0xb8e85501,0xba315782,0xba935b5a,0xba11526b,0xb9a77588, +0xb95d5a45,0xb9809a79,0xb8f218f6,0xb99a61be,0xb9ba638f,0xba673a69,0xb915673a,0xbafa3c56,0xbb262899,0xb986b6e4,0xbab33292,0xbaa41ac8,0xbad09f3a,0xba5800ce,0xba5a12f9,0xba08c81c,0xbb2d3f3d,0xbb279c68,0xba8966cd,0x39360655,0x39a71197,0xb9dcf305,0xba9186ae,0xba1c1fbe,0x3aa35a3e, +0x3acf9d0e,0x3ac9984b,0xb9b4ad54,0x3a6f011f,0x3968b73d,0x395b378c,0xb9f63d94,0xba91e709,0xbaa81bd8,0xb91fca2e,0x386c3e40,0x388d7091,0x389a0f4d,0x38ce40ea,0x391577e0,0x39933abb,0x3989e470,0x394cd13b,0x397784ee,0xba8b5c58,0xba20e1a2,0xbab77427,0xbab351cf,0xbab8d64b,0xb9f734b8, +0xba224e4a,0xbaccff33,0xbbc57232,0xbbe98ae8,0xbb8c7c34,0xba95fe8b,0x3a2e90f1,0xba1b0067,0xbaa6d16d,0xba1412a1,0x3b1ca77d,0x3b28aaca,0x3aa072b7,0xbb1adf1b,0xba15520f,0x3be3861b,0x3b61916f,0x3b5d356e,0x3af61d6a,0x3a847fa3,0x398398b9,0xb8762e40,0xb7d4d02d,0xb82c3f9c,0xb857d05c, +0xb89d82f1,0xb9185a5c,0xb8d79d44,0xb9140506,0x385490a7,0x39ca85a6,0x3a8981fd,0xba2a6c4d,0xbb37b4ac,0xbb67d35a,0xbb8712a8,0xbb3c0e9e,0x3a8c3ef4,0x3bcf3b70,0x3c26cb40,0x3c35fa58,0x3bd47081,0x3aec01cd,0xb8f37d89,0xba2c60c0,0x39cdebf9,0x3b5a8465,0x3b020018,0x3b9ff4fd,0x3c365d3b, +0x3c14fb9c,0x3affd1c0,0x3b37cca3,0x39ac7106,0x39683904,0x397ecc88,0xb9019ef4,0xb7e61331,0x3881e905,0x371b8fb2,0x383597b7,0x383a4032,0x389909e8,0x388aed12,0x3863944c,0xb6ea91c6,0xb9878e11,0xb93d48ef,0xb92b1196,0xba4c75bf,0xbacf251b,0x396962a4,0x3a71e868,0x39905154,0xbb45c970, +0xbbd8e1e1,0xbc0ea02b,0xbbb096c7,0x3a11f2b2,0x3be4daad,0x3b3a3b1c,0xba7bca05,0xbb4444ee,0xbbede27c,0xbbcb1552,0xbaf5eb30,0x3926d6b0,0x3bbfc01f,0x3c2ce793,0x3c0d73fc,0x3ace9524,0xba9b48b5,0x3a2a20d4,0xb97a204a,0x384f6eb9,0xb890aaa8,0xb7a1cf8e,0xb84fb974,0xb83e8599,0xb856812e, +0xb8076fbd,0xb695bc3d,0x38c6528e,0x39608ddf,0x39cfc1ad,0x3a96aad0,0x3af45e42,0x3a4618ac,0x39989330,0x3a36ae4a,0x3b254af1,0x3bc26b38,0x3c25d2b6,0x3b944f85,0xbae49de0,0xbc0cdf82,0xb8ac9879,0x3bcbb000,0x3bf963f0,0x3c2ca633,0x3beb0212,0xbb59f74e,0x3ab6e65f,0xbc40cb87,0xbcb92fdd, +0xbbe9166a,0xbb12e02b,0xbb313e86,0x39743d83,0xb885afe3,0x39065f06,0x37c33f14,0x389ee03e,0x3841ad4c,0x3889da1d,0x38468fc6,0x38673317,0xb7b8111e,0x38a34e28,0xba073cbd,0xba2591b8,0xb7a93bae,0xb98bfd8a,0xba8d5f64,0xbacecd9f,0xbb2a76eb,0xbb6420b1,0xbb91db56,0xbb83f075,0xbb6cb4bd, +0xb919a5b1,0x3b07e3f8,0x3c172a00,0x3bd66221,0xbb87b1ee,0xbc0af1cb,0xbc15f3bf,0xbbf6001b,0xbbbb44dd,0x3858f197,0x3bfbc562,0x3c0bde1e,0x3bbe08ab,0x3b1a4169,0x39e3a819,0xb9b865a8,0xb80a84b3,0xb925b055,0xb8c3f22f,0xb8e5eb8e,0xb8cd3fe3,0xb8cc3eea,0xb884e408,0xb83a9500,0xb8939941, +0x39e758a4,0x3b1586de,0x3b746791,0x3b80b7eb,0x3b71d283,0x3b4a9d74,0x3b21df62,0x3abfda87,0x3a380de9,0xb86166a7,0xbace782b,0xbb39af28,0xbb6d1b84,0xbb8525d7,0xbb620458,0xbaec8d93,0xbb1f4f3b,0xbb6e25b1,0xbb7eaffb,0xbb95ab7b,0x3b2cfcba,0x3b3b3139,0x3add4de0,0x3aaa3f17,0x3a1f37bc, +0x3a2683df,0x39899ed5,0x39a76d9a,0x397eab5c,0x397dd62b,0x394d9721,0x3969ab7e,0x393ab68b,0x39353699,0x38728fc5,0x39469af9,0x3a42822d,0x3a7ef8a1,0x3a210339,0x38e0cb0e,0xb9a045e5,0xba619902,0xbab24493,0xbb015462,0xbb2f8af1,0xbb5fadaa,0xbb39803b,0xbb23cf32,0xbb24157a,0xbb16facd, +0xbb0ba550,0xbad492d1,0xb9e528b3,0x3a5b247b,0x3b025c1d,0x3b3a17ef,0xbb10f81d,0xbb28c831,0xbb263c29,0xbb208664,0xbb1e66d6,0xbb02eb0c,0xbab64a37,0xba6a3632,0xba2630a2,0xba05978f,0xb9dba426,0xba088160,0xb9e58497,0xba00c0fc,0xb9838339,0x377b6099,0x39f60e2b,0x3a342234,0x3a7a1ea5, +0x3aa61e5f,0x3aa0cefe,0x3aa0fdaf,0x3aa01b49,0x3ac4e093,0x3aeb8993,0x3b05bf9b,0x3aa49b3a,0x39fb1389,0xb99217a1,0xba343270,0xba8a7732,0xbac553e9,0xbac3cb30,0xbadb7596,0xbb01c6fe,0xbb125e3b,0xbab04251,0xbaee2fd3,0xba9e7c63,0xba97f6af,0xba39d51a,0xba0cbec4,0xba105a59,0xb9cc5c54, +0xb99eeb45,0x35e63960,0x39cd92ee,0x3a3226b7,0x3a8abae1,0x3abe9d5b,0x3aef71af,0x3b017aca,0x3b0c2072,0x3b169284,0x3b21a25a,0x3b22b047,0x3b22043e,0x3b248b09,0x3b23fc73,0x3b245ea0,0x3b204bef,0x3b282016,0x3b0ff806,0x3b03e751,0x3ae9e4dc,0x3ac3fab9,0x3a94819b,0x3a3c7b7f,0x399095b2, +0xb9159bba,0xb9f5ff26,0xba649bf9,0x3a922bd4,0x3a5aa41e,0x3a9b938f,0x3aa95762,0x3ac24d4f,0x3a9c6d48,0x3abe02ba,0x3ae19234,0x3b0011fa,0x3b0961ba,0x3b104ebb,0x3b197695,0x3b2039cc,0x3b267400,0x3b134b4d,0x3b0dcb50,0x3b23c2e0,0x3b1bd42c,0x3b1c30d4,0x3b18bbc0,0x3b1c9e2b,0x3b1ea129, +0x3b21475a,0x3b235cf7,0x3b2502f8,0x3b288eb0,0x3b1d7138,0x3b131e87,0x3b0791a5,0x3af99e7f,0x3ae839eb,0x3ada69b9,0x3acf5429,0x3ac16ebe,0x3aae7f08,0x3a9dad66,0x3b242c1e,0xba72db93,0xba0c00f8,0xba17f5de,0xba2e64e7,0xba43caf1,0xba5aaee6,0xba5b3c34,0xba3f226a,0xba0f46d5,0xba2022a6, +0xba2fab8f,0xba38e0c8,0xba85f3b0,0xba84ce9e,0xba08e424,0xba9001b0,0xba95c18f,0xba24768a,0xba6843ce,0xba6f6e4e,0xba86c13e,0xba64605e,0xba645c26,0xba610336,0xba96bbcb,0xba91a555,0xba5e6f47,0xba242326,0xba20088b,0xba5dbdb1,0xba59ac36,0xba4430a0,0xb9de08c2,0xb9e189bd,0xb9eda1e4, +0xba5632ab,0xba0d7a8d,0xb9d4cd43,0xb9ec89b6,0xba195219,0xba5a61ed,0xba73c6e9,0xba6b2998,0xba319f77,0xb945747e,0xb9cad4e9,0xba1f865a,0xba8790eb,0xbafa0e4e,0xbb024d13,0xba332da8,0xbaf1f8c5,0xbad99cea,0xb9eb4460,0xba8d3000,0xba86854b,0xbaac2c6e,0xba7fb0c8,0xba9caa9b,0xbac64892, +0xbb2e5e2c,0xbb2fa01c,0xbae0969b,0xba37a183,0xb9b3104c,0xba8552bf,0xba7dc90e,0xba3913a6,0x396ebfb4,0x388e4a0f,0xb968377b,0xbaa25ade,0xba0c01fa,0x39fb6c9f,0x39e2a43d,0xb919f789,0xba337418,0xba802424,0xba263c21,0xb97930f3,0x38f8908e,0xb8c1eff3,0x384b8e88,0x37f6bf4d,0x38f9c9c7, +0xb9c1e224,0x38f9d075,0xbaa6e455,0xbb07d02a,0xb9eee6f2,0xbab3782e,0xbab7ebe0,0xbaf58baa,0xba8b0778,0xbaa04bd8,0xba9e8333,0xbb4bdf05,0xbb3ae961,0xba9217fe,0x39b6aabb,0x39eb69a3,0xbaa701f0,0xba720584,0xb97ad7f1,0x3af2fdb3,0x3ab4e355,0x3a90f37e,0xba4ec928,0x3a28ee54,0x38af8aa8, +0x37a1c845,0xb9c8d522,0xba6add8d,0xba58a199,0xb7974d10,0x38b10969,0xb7b92cd6,0x37d950a0,0x379d8eb7,0xb7a1143c,0x38412d11,0x391cb812,0x384548d8,0x39e6bf5f,0xb9d7c4ea,0xba06fde8,0xbab3c98e,0xbad88a93,0xbb035eda,0xba8e857b,0xbad01680,0xbb4729bb,0xbbe7c3b9,0xbbf7a2fa,0xbb87b587, +0xba03f322,0x3a3b11a4,0xbb089642,0xbaaf7d80,0x37fffa14,0x3b52ce74,0x3b0c73ad,0x39e29d45,0xbb3c1963,0xba3f9272,0x3ba7cbad,0x3b1efd53,0x3b293cc9,0x3a9c1f90,0x39c1e427,0x35c2f5a6,0xb7cc6bae,0xb722ee6c,0xb6ca311e,0xb78472a2,0x37129b71,0xb83c2ecb,0xb82dd121,0xb8cf4093,0xb872e668, +0x37eec41d,0x3a6c2e49,0xb787b22f,0xbb09d4e4,0xbb46f645,0xbb52b21a,0xbae0f673,0x3b0abc18,0x3bfb7a53,0x3c2f4eb5,0x3c2250cb,0x3bc0613b,0x3b07f982,0x3a9adbda,0x3a0159b7,0x3a9ec95c,0x3b6dc075,0x3b326ed0,0x3ba7d262,0x3c263f6b,0x3bed9dfc,0x3b169636,0x3b265e8f,0x3a43316d,0x3a2db38f, +0x38ad203c,0xb8bcd9be,0x384528a7,0x37868a15,0x36df172b,0x37552205,0x367fdafd,0x37b9a65b,0x381542c8,0x3826d428,0x3889dcb3,0xb8ce02d0,0xb98efd07,0x38088807,0xb99d7a92,0xba98927c,0x38f4865c,0x399cab6a,0xba2cce16,0xbb6c482d,0xbbd17d05,0xbbf02e69,0xbb52d281,0x3b082eb0,0x3bdf071b, +0x3b3f7393,0xba60288d,0xbb624ed7,0xbbc9dc8a,0xbb961b1c,0xb9d7d4ca,0x3aabdcaf,0x3bc7b8a9,0x3c1f0da5,0x3c0285d5,0x3a964ce9,0xba4519b8,0x39cb1788,0xb94ecf58,0x383ca00e,0xb8417dc3,0xb65283fd,0xb78fa5d0,0xb79b5efd,0xb80059df,0xb812fa5d,0xb7f7bab8,0x379b5896,0x3935d778,0x391ea3b9, +0x3a315c06,0x3ae14ea4,0x3ab25bc1,0x3ab90edb,0x3af834ae,0x3b8ed063,0x3be86d60,0x3c1a58a3,0x3b451504,0xbb3a405e,0xbc0210ed,0x3a73ff05,0x3be1e62f,0x3bde2811,0x3c211f9a,0x3bc2715c,0xbb8b570e,0x3a9b04b1,0xbc195f41,0xbcc27b5d,0xbbf5d673,0xba60e886,0xba646ab7,0x3947f724,0x37ab2505, +0x388ad054,0x37df4df0,0x380ffeae,0x37ac8704,0x380dea1d,0x38255ef1,0x385a3c56,0x37ae352f,0x38980b9b,0xb943538b,0xba5e3214,0xba5097f1,0xba960321,0xbaeff803,0xbb0c85e6,0xbb424566,0xbb7412ca,0xbb92e589,0xbb7e08e0,0xbb6b6a67,0x392df30a,0x3b69ada5,0x3c08279f,0x3b8dfdb5,0xbbeca200, +0xbbfa072d,0xbbcbbf2a,0xbb955093,0xbb2bcef5,0xba7dfce8,0x3b82e912,0x3b8f921a,0x3b376717,0x3ac4f5bb,0xb9c2f1f9,0xb8c13ce1,0xb8c3a52a,0xb8ae6836,0xb864ddeb,0xb849440e,0xb87f76b6,0xb89e8906,0xb8be5a3c,0xb8397edd,0xb9070e17,0x3892e92d,0x3ad31e40,0x3b508107,0x3b77cb6e,0x3b6e0d0e, +0x3b4b83bc,0x3b1c7128,0x3a96c978,0x398968c1,0xba06d2c0,0xbadfb950,0xbb3f679e,0xbb7273e1,0xbb8156ed,0xbb41c775,0xbaa050a1,0xbb13804c,0xbb7a3089,0xbb9159e0,0xbb912e3f,0x3b4e9f0f,0x3b6583df,0x3b114747,0x3acd5ce8,0x3a78ed7d,0x3a16e864,0x3974d69a,0x3966ed2f,0x392be593,0x38f10df8, +0x38bc02d4,0x3905e182,0x39227cd8,0x3948c64b,0x3907e1d5,0x3929bfd9,0x3a1ac538,0x3a943487,0x3a8ac1d2,0x3a1fd523,0x388a557e,0xba18a201,0xbaa4aa8d,0xbaf64330,0xbb2d6efc,0xbb6a60c6,0xbb451184,0xbb351482,0xbb3b8c6a,0xbb2d8ee9,0xbb1b86c9,0xbabb762a,0xb98d8bc0,0x3aa0a907,0x3b1edbf6, +0x3b5cb72b,0xbaddf19b,0xbb023443,0xbb04e988,0xbafa2fbb,0xbb01195c,0xbabffca1,0xba75719e,0xb9e96f3d,0xb9ade297,0xb9474951,0xb9262341,0xb97e7698,0xb9b7e02a,0xb9e260bd,0xb9faf40e,0xb9b19e13,0xb7b98a2a,0x394ab091,0x3a130dd2,0x3a7f8b04,0x3a4779c0,0x3a3828d2,0x3a1cf562,0x3a3663b3, +0x3a51fcc8,0x3a5deae6,0x399bc8c6,0xb9851a21,0xba45c4be,0xba756f6d,0xba8fad61,0xbab77391,0xbaab38c7,0xbaba8b65,0xbad5302e,0xbaee5842,0xbad0d330,0xbb08287f,0xbae894c8,0xbacfb8e6,0xbaa4c00a,0xba925f10,0xba921499,0xba80cb8b,0xba600950,0xba1b43f3,0xb9a25bef,0xb82e523d,0x39904fa2, +0x3a1fd11a,0x3a8d5c75,0x3ab0bea4,0x3ad4a055,0x3afaf8cc,0x3b14ace0,0x3b191d10,0x3b150734,0x3b15b812,0x3b138732,0x3b12866f,0x3b0eaabd,0x3b13e6de,0x3af8a28d,0x3add1a71,0x3abca140,0x3a91b112,0x3a405a6f,0x39b4be0b,0xb890c746,0xb9e73dc1,0xba3b5394,0xba92e99d,0x3a3eaf6b,0x3a06ff20, +0x3a55a4d2,0x3a693a7b,0x3a8c59e4,0x3a4fbaf3,0x3a864ca6,0x3aa469f5,0x3abe3676,0x3acf1d79,0x3ae00acb,0x3af1652a,0x3b011360,0x3b0759e8,0x3aeee078,0x3ae116ba,0x3b0ea85d,0x3b044938,0x3b03afe7,0x3afe6fcb,0x3b02b971,0x3b03ad4c,0x3b0534aa,0x3b06540b,0x3b06c66c,0x3b093df6,0x3afc27c7, +0x3ae806dc,0x3ad27a71,0x3abffd9b,0x3ab0fa46,0x3aa3fec2,0x3a99b080,0x3a8b4798,0x3a6f03a8,0x3a52813b,0x3b041b99,0xba7707eb,0xba1753cb,0xba2989ca,0xba46e961,0xba5dbc57,0xba6d6730,0xba68baa8,0xba52c54a,0xba02ceca,0xba2ea9ac,0xba411a7d,0xba46b697,0xba92544b,0xba91be24,0xba21c8db, +0xba8c6f6c,0xba8f1cb1,0xba45c7cd,0xba7ccb69,0xba7ce18e,0xba851d22,0xba6bd960,0xba6eb16d,0xba7d1608,0xba9934ab,0xba91a57d,0xba5fc116,0xba1f98fb,0xba20bfc4,0xba83ec0d,0xba592983,0xba3b6f82,0xb9b0dd2b,0xb9f71762,0xba0a2417,0xba64be02,0xba186bae,0xb9ecdeb5,0xba1e2012,0xba3f1992, +0xba5f0f46,0xba652632,0xba7c830d,0xba314cac,0x385073f6,0xb9924b4a,0xb9f8b3d6,0xba410f75,0xbac41555,0xbad711ee,0xba34a979,0xbae6efbb,0xbad18523,0xba0c9c3e,0xba863dbb,0xba907c10,0xbab2ab62,0xba8e2b7e,0xbab4abaa,0xbaef826c,0xbb30efd1,0xbb299124,0xbad52ae4,0xba100c33,0xb9aaa7b0, +0xbabab686,0xba8178c1,0xba21bde5,0x39d4eadf,0xb863a434,0xb9d4dcd4,0xbaac857e,0xba1ba8e4,0x39c61085,0x3856ea81,0xb9a87c79,0xba385733,0xba6f93b0,0xba2844ef,0xb91e7d6e,0x39289ec3,0xb7cf7d3b,0x38fc1633,0x390e6e25,0x39972987,0x389f9fa3,0x3965c0bf,0xba1b7563,0xbabd9d47,0xba1a2959, +0xbaa4c473,0xbab68f8e,0xbaf973f4,0xba949029,0xbabb5ccb,0xbadfae88,0xbb4eca22,0xbb346f36,0xba882e42,0x3a038974,0x39fb92e8,0xbb01ba73,0xba578651,0xb856a51c,0x3b118985,0x3a91a347,0x3a4148d7,0xba8333e2,0x39e8fa8b,0x38b7e169,0xb9b39bf4,0xba115ccb,0xba44e92a,0xba0c971d,0x390a9f3d, +0x38af2388,0xb83ae6eb,0xb6a05954,0xb7ce2d41,0xb8524d7b,0xb88a7fb6,0xb70f1c16,0xb87a3738,0x39c38c6e,0x381090f9,0xb9ba651b,0xba9a14a2,0xbadec164,0xbb121e9b,0xbabe1bf0,0xbb156920,0xbb870c62,0xbbef424c,0xbbec716c,0xbb738737,0x380d056e,0x3a1b59e1,0xbb5ac327,0xbac831c5,0x39a2a0eb, +0x3b6e9129,0x3adad2b4,0xb95975b8,0xbb44c593,0xba4ce8ca,0x3b84224c,0x3b073e51,0x3afd6904,0x3a3fef9d,0x3858bd68,0x381877b8,0xb887c51f,0x377fa55d,0x3676e874,0x36e50fc9,0x37d37c63,0x37645478,0x37a39dcd,0xb7cea64b,0xb8de3246,0xb8b1a318,0x39fd8823,0x39d3ba70,0xbab6d148,0xbb1bb8c1, +0xbb0a981c,0xb9ea61cd,0x3b4b1ed0,0x3c0be37a,0x3c2fc9e1,0x3c0e8db7,0x3baeff3f,0x3b219244,0x3b0f2402,0x3acddf5e,0x3af92b44,0x3b5dc297,0x3b577e0d,0x3bb26983,0x3c1c797b,0x3bc24de2,0x3b3c9e81,0x3b22341a,0x3a906ee1,0x3a3b0a45,0xb8c3227c,0x37a73d91,0x376a5ee0,0x375a4d3e,0xb715a0de, +0x35507a1f,0xb73c9244,0xb6a1dabb,0xb699df6e,0x3795c11b,0x385f9893,0x382582c7,0xb9850aa6,0x38bac68b,0x395b0871,0xba1dba70,0xb8407fb9,0xb9e6bb1d,0xbae836e0,0xbb91d6b1,0xbbd0f853,0xbbcc12ee,0xbaf17413,0x3b233f0c,0x3bae2830,0x3b186c67,0xba6c4372,0xbb6551ea,0xbba0f4fd,0xbb49ccd7, +0x3a66e334,0x3b2426a7,0x3ba463eb,0x3c11cf08,0x3befa875,0x3a521f7c,0xb9c98377,0x39310662,0xb8ed5a66,0x37de1e6d,0xb786a026,0x36dfbc15,0xb48d6f9d,0x3329d134,0xb62a36f1,0xb7c48afc,0xb7dd952c,0xb86d6958,0x392d20a9,0xb6b9af98,0x39995353,0x3ab39782,0x3ace4569,0x3b093c8a,0x3b28f645, +0x3bada9b7,0x3be65723,0x3bf0029a,0x3a724a5b,0xbb83b608,0xbbec2b3e,0x3ab10e64,0x3bdbac78,0x3bbda0ef,0x3c057aa5,0x3b7d1b2c,0xbbb70270,0x38c2043d,0xbbfa30ff,0xbcb716a6,0xbbeaffc8,0xb9213e24,0xb8794e7a,0x388c2d99,0x385992da,0x378abc72,0x37056857,0x34b0aa74,0x36808cb3,0x36ca0eb8, +0x377354a6,0x37e7946b,0x384731dc,0x37a796b8,0x38b0ce0c,0xba4e4a58,0xbaacf81f,0xbb001836,0xbb24fce3,0xbb31a8e3,0xbb5f2d70,0xbb80da97,0xbb9025d5,0xbb6fe8fd,0xbb54262d,0x3a353618,0x3ba8a97e,0x3be0e16d,0x3b0b178b,0xbc0ac4c3,0xbbc8273f,0xbb670eb3,0xbb1e67f1,0xba56a412,0xbacc66fd, +0xb9ed23f3,0x39af33ec,0x39fbb9ff,0x3a29ae8a,0xb9e18728,0x37b96d97,0xb8bec95c,0x37288406,0xb75f46c1,0xb65f3459,0xb7aa5165,0xb7d08b6e,0xb87e46e5,0xb8961f1a,0xb894cf2f,0xb92d66e4,0x3a7e472c,0x3b247c4b,0x3b564f40,0x3b511d53,0x3b379d2c,0x3b0dc758,0x3a6e9ae2,0x379c84fd,0xba3bbd5e, +0xbac2dc0d,0xbb2879eb,0xbb523e83,0xbb537bad,0xbb0753a8,0xba1f7d7d,0xbae23d7c,0xbb5922c4,0xbb8c7ef2,0xbb5cf4b9,0x3b5459eb,0x3b6e7ce3,0x3b29cdf3,0x3ad9a140,0x3a7fa478,0x3994a91f,0x39613786,0x3883efac,0x37a5315b,0xb681ebcd,0x372a7a03,0x380af02e,0x38564b89,0x38e4a05d,0x3933f877, +0x39159261,0x39be8cf1,0x3a9309e3,0x3aa77bbb,0x3a8587b9,0x39e29a1f,0xb9723bde,0xba71fe83,0xbab8c57b,0xbb0c08be,0xbb505744,0xbb362a51,0xbb2e914d,0xbb38d5ea,0xbb2c36da,0xbb185eee,0xba9683b4,0xb93de3f1,0x3aace113,0x3b1c9332,0x3b5cf335,0xba9f8381,0xbaba4fef,0xbac60524,0xbab5147b, +0xbab54f69,0xba6c2f5d,0xb9fb269c,0xb80bb366,0x378f1705,0x38b85dc3,0x381b0d01,0xb797f497,0xb8aa7cfa,0xb93a8095,0xb9e74f9b,0xb9f639b0,0xb990a54a,0xb92292c5,0x392c2ed8,0x3a25d055,0x39b40f7b,0x3977d321,0x38873a2f,0x376ac97a,0xb7ac517a,0xb8d8dfdd,0xb9cd3e8f,0xba37dac4,0xba771699, +0xba7787bb,0xba76d2a0,0xba9155d5,0xba83f2d6,0xba8f7e48,0xba9ff8dc,0xbab141c9,0xbaca1556,0xbb016a85,0xbaf3dba7,0xbad72e6f,0xbac00ad5,0xbab1cb6a,0xbaaef10b,0xba9fedd7,0xba8dd2d5,0xba669e1a,0xba2f2902,0xb9f614bf,0xb9904b05,0xb8151a71,0x39e29ae0,0x3a4c8364,0x3a9184e8,0x3ac381b4, +0x3b022532,0x3b09d730,0x3b0216a8,0x3b008874,0x3af983f4,0x3af2e9f5,0x3ae91406,0x3aea5bfd,0x3ac154d7,0x3aa66c61,0x3a87a03c,0x3a3d54fe,0x39c7997d,0x3869eae0,0xb9937a9d,0xba159805,0xba4c4986,0xba94eed2,0x39b5e5a3,0x394ea9e7,0x39daf5ca,0x39f9e6f5,0x3a2c916f,0x39c53643,0x3a15df84, +0x3a4417c8,0x3a6b81f7,0x3a84955d,0x3a94e212,0x3aa556ea,0x3ab85b7b,0x3ac56f82,0x3aacb393,0x3a9ddcf0,0x3ae3252c,0x3acc190f,0x3ac94788,0x3ac01468,0x3ac45a05,0x3ac3e1c7,0x3ac3dc89,0x3ac3ee41,0x3ac2c168,0x3ac4ff22,0x3ab16da9,0x3a9fcd4e,0x3a8dc32d,0x3a7e89fb,0x3a66dbc7,0x3a50cb64, +0x3a3ee903,0x3a2441f5,0x3a00a99c,0x39d4e3e5,0x3ab743d4,0xba63a6c1,0xba0bc567,0xba2794c2,0xba34284d,0xba4bb47b,0xba5f1d66,0xba4cfc61,0xba3eee7c,0xb9c3f932,0xba20385d,0xba396615,0xba42fc08,0xba93d617,0xba936811,0xba32058f,0xba784fe5,0xba6dbafe,0xba4569e9,0xba667ce1,0xba61619b, +0xba733ba8,0xba5ea578,0xba64fd63,0xba811763,0xba8e464a,0xba85692f,0xba50a7cb,0xba133195,0xba194e70,0xba8b22a3,0xba49860c,0xba252428,0xb9682b9c,0xb9eb2719,0xba07753f,0xba50efed,0xba0b53a0,0xb9c6baf9,0xba1d8113,0xba32a584,0xba4295af,0xba3f53e9,0xba75e031,0xba180f47,0x396f27ea, +0xb920b06a,0xb985f344,0xb9c15527,0xba63dd1d,0xba89e75b,0xba058bd8,0xbac1ca06,0xbac1d35d,0xba17aba9,0xba603068,0xba820c48,0xbaa81337,0xba92d403,0xbabe9057,0xbb021e25,0xbb2517be,0xbb17595a,0xbac00f5b,0xb9e7cfac,0xb9b32076,0xbad85a57,0xba77ae9e,0xba024f22,0x3a146cea,0xb8bcc360, +0xb9e6d78b,0xba95724f,0xba0017c0,0x39c7304a,0xb9210b2f,0xb994d7e7,0xba17f9eb,0xba452413,0xb9cc6e76,0x3728566a,0x38b670ad,0xb721f164,0x38d1dc03,0x38e0165c,0x3994ae0b,0x3924147a,0x395ea5bf,0xb7cba6be,0xba3445ec,0xba206846,0xba8a5c12,0xba9c9794,0xbae5b7ae,0xba98be14,0xbacabf01, +0xbb077783,0xbb412d7d,0xbb220f51,0xba82daa9,0x39e62101,0x3997f0e1,0xbb218d69,0xba487cec,0x3886aa6c,0x3b1d485d,0x3a625f32,0x3a02321b,0xba5cc12a,0x39db8610,0x397a85aa,0xb9e94836,0xb9f06232,0xba112c17,0xb9251172,0x393f765e,0x37428600,0xb833518a,0xb638f1b0,0xb8032bc3,0xb8812492, +0xb8de72ff,0xb85869f1,0xb8c31c50,0x38c744ce,0x396ce49a,0xb9055fd0,0xba64ccec,0xbac6aade,0xbb127efc,0xbae50a9b,0xbb374be3,0xbb9e5e04,0xbbe262b4,0xbbd0fc00,0xbb53e651,0x398458f7,0x3989a738,0xbb86bd59,0xbad5937c,0x39fd3f17,0x3b7b789c,0x3aaf9636,0xb9e4090f,0xbb1f3959,0xb9e77436, +0x3b273391,0x3adfab83,0x3acb3dcb,0x39f08a14,0x36cd6995,0xb85ea761,0xb7f1e4fc,0x37db5fb3,0x3612876b,0x377b944c,0x380918f1,0x3837f707,0x37f66c7b,0x3808643a,0xb8446b0c,0xb8f63a87,0x3912cd5b,0x3a0728e9,0xba37607f,0xbad8bd38,0xba96b0ee,0x3a0b5d6e,0x3b65331a,0x3c07c28b,0x3c1ca5a1, +0x3bdb0f96,0x3b83a2d0,0x3b0700ed,0x3b11e2ee,0x3b07594f,0x3b0b5ddf,0x3b2952c4,0x3b4cfb1b,0x3ba0c7ec,0x3c035ddd,0x3b892522,0x3b1891fe,0x3af19f39,0x3aa226e8,0x39d1f039,0xb91b350b,0x38a9c909,0xb6eade05,0x36407d7a,0xb74a8e6c,0xb6aecc07,0xb7a8d52c,0xb7a2c8c1,0xb793e443,0xb6dc1d1b, +0x378fe2ce,0x38b0adec,0xb92bef6d,0x37dc50d3,0x39dc9345,0xb993c826,0xba0b194e,0xbabb3f50,0xbb425d20,0xbbadf776,0xbbcd8736,0xbba67c64,0xba552102,0x3b29bb8f,0x3b82bc7b,0x3af2eb64,0xba40e002,0xbb52a3aa,0xbb6de959,0xbaedf654,0x3ac9c84a,0x3b2e8430,0x3b87b5b9,0x3bed8022,0x3bb8d969, +0x399661ef,0xb990d4ef,0x38c6d82d,0xb8873ee2,0x3801e652,0xb6373a6a,0x3753842d,0x37446fb3,0x374921f3,0x37323386,0xb6a863bf,0xb6bc811c,0xb888240b,0x38b43a57,0xb7923031,0xb8c27d81,0x3a8195e7,0x3aec03b6,0x3b3533dc,0x3b650cc4,0x3bcd58bc,0x3be75c91,0x3bb9cf19,0xb822c843,0xbb7df4e6, +0xbbb0964e,0x3b0361c6,0x3bcddbb5,0x3ba0f547,0x3bd19f0a,0x3b18a7f8,0xbba9fbd9,0xb90be1ba,0xbbbd48c4,0xbc98d91a,0xbbd39a86,0x39982844,0x3877d88d,0x380caa6a,0x37b273dc,0xb76be452,0xb7295673,0xb770c385,0xb7751894,0xb75b132e,0xb5dee4cc,0xb5812f23,0x382d9e76,0xb65aa7a8,0x3919853f, +0xb9eab522,0xbad001ec,0xbb1838d9,0xbb2b23d1,0xbb331737,0xbb56123e,0xbb65de42,0xbb6f7380,0xbb3c45d9,0xbb0993ff,0x3ad1a653,0x3bce4c7f,0x3ba7a23f,0x394629d1,0xbc05c28b,0xbb8b7c32,0xba9d14b2,0xb9844530,0x3822de4c,0xba8e76e0,0xbb828ce7,0xbb28dfbb,0xba4f79d2,0x394a0481,0xb98a9492, +0x387cf1f3,0xb767020f,0x3826318e,0x379a9ff5,0x3801eaf3,0x378e586d,0x362bbb57,0xb7253503,0xb8681eff,0xb7f79b45,0xb9701bb1,0x39f73842,0x3af4ae99,0x3b3ab1cf,0x3b37e87a,0x3b24c7ff,0x3b021b49,0x3a5ecd76,0xb72f46d8,0xba5100d4,0xbaa7a40b,0xbb145b68,0xbb34273f,0xbb317a4c,0xbac5496c, +0xb99ff941,0xba815235,0xbb05d4ee,0xbb360a8c,0xba9c0506,0x3b4539d6,0x3b68b728,0x3b2fdf76,0x3acc4330,0x3a2d4334,0x382bda93,0x38d18dcb,0xb8b8f9d2,0xb817e02c,0xb88a3bf6,0xb868fd92,0xb82921b0,0xb6982145,0x37ba3d29,0x38b7165a,0x3910f6eb,0x3947c4c2,0x3a89789d,0x3abf4c3a,0x3ab73225, +0x3a580229,0x394f93aa,0xba0aee61,0xba72b2f6,0xbad19bcc,0xbb2e6519,0xbb2203c3,0xbb227ebc,0xbb2e6351,0xbb20875f,0xbb0902b7,0xba5a1643,0xb9265076,0x3a970591,0x3b055142,0x3b40d2d2,0xba3c28b6,0xba5a896c,0xba823941,0xba53d66f,0xba3aa3d0,0xb9c79ed7,0xb8963420,0x397cf5e9,0x390a581f, +0x394011a0,0x39110a4e,0x38f5e16b,0x37fc3504,0xb699a0f2,0xb93cc7f2,0xb9d04889,0xb9bbf030,0xb9c5ecc6,0xb932d58f,0x3966b3d6,0xb8dc3fab,0xb960adfb,0xb9d6f674,0xba0fe5c8,0xba339e13,0xba615c75,0xba6a3d9b,0xba802a5c,0xba8256c2,0xba65caec,0xba4d22b0,0xba5eb9aa,0xba41e95d,0xba4eb5f9, +0xba5e65b1,0xba64975e,0xbaacbdc3,0xbad874dc,0xbadf0222,0xbac3e907,0xbabf8317,0xbaafc2d4,0xbaa5d5ad,0xba90c4b5,0xba754b5a,0xba47aab3,0xba26c953,0xba039ee1,0xb9de54da,0xb9a8cc83,0xb826321f,0x398fa52b,0x3a266b65,0x3a877b85,0x3ad4df09,0x3ae31458,0x3ace5e90,0x3ac6da2e,0x3abbb2a6, +0x3ab044be,0x3aa4b384,0x3a9d86fe,0x3a7d8298,0x3a4fefc6,0x3a1def72,0x39b4c7af,0x38a505a7,0xb92dceea,0xb9d5d712,0xba1eddd3,0xba449bd7,0xba85de4c,0x373b85c3,0xb897dea4,0x389e0aad,0x38ed5b1a,0x39896066,0x36833f44,0x3900f87b,0x39532c6c,0x399b464e,0x39c1a937,0x39fa82da,0x3a1a7701, +0x3a4374f8,0x3a62fbf8,0x3a4ffdba,0x3a3a3d35,0x3aa0f2c7,0x3a8af0e6,0x3a866f3d,0x3a75364f,0x3a792e95,0x3a72dde4,0x3a6d2f24,0x3a68f410,0x3a623c90,0x3a5fc13a,0x3a41f389,0x3a26a844,0x3a0c0db8,0x39f11df8,0x39d1dd59,0x39b40b8d,0x399a95fb,0x39639d9a,0x38f37ed6,0x386d541a,0x3a482228, +0xba5f4d9b,0xba1521df,0xba3817ff,0xba375526,0xba43ba94,0xba45a8ce,0xba44f6a0,0xba344eb9,0xb981ee0a,0xba0a448b,0xba249a91,0xba2960a7,0xba81084e,0xba886a70,0xba3b5675,0xba6b1731,0xba593ae6,0xba3b0f52,0xba55800f,0xba53b304,0xba623ff6,0xba5b01ff,0xba6475eb,0xba845c40,0xba852e54, +0xba7882dc,0xba4d5b63,0xba19cffd,0xba243a2a,0xba91e2f5,0xba4c0fa0,0xba2744fe,0xb97dec3c,0xba083e4b,0xba1a3971,0xba4e4777,0xba151325,0xb9f208a4,0xba3e004f,0xba2652b2,0xba2fdc7b,0xba2f44ac,0xba5c2078,0xb9e2ec61,0x395599c1,0xb8b68118,0xb9184a9d,0xb941272c,0xb9fedaee,0xba119ae1, +0xb996889a,0xba8743d8,0xba9e2a31,0xba330a9e,0xba34ce18,0xba614017,0xba9aff40,0xba96103f,0xbac3b58c,0xbb042289,0xbb11bbb4,0xbb008e83,0xbaac33b9,0xb9e97251,0xb9f22908,0xbaeb83ca,0xba83c69c,0xba115b93,0x39ed8355,0xb994a44a,0xba1de535,0xba8de3f5,0xba1178a6,0x38e920b0,0xba05cb86, +0xb9aead4b,0xba09490e,0xba091261,0xb90b33d5,0x38aa2388,0x36b31ccf,0x367c120c,0x38a04404,0x38bd6dd7,0x39586d44,0x392fd217,0x392fa05b,0x394034ed,0xb8d72d3b,0xb9eeb31f,0xba56eded,0xba784769,0xbac51db9,0xba987677,0xbad12cb7,0xbb11136a,0xbb26f031,0xbb075055,0xba808cbf,0x39538c3b, +0xb89b6fd5,0xbb347bad,0xba6a2529,0xb8f5ae47,0x3b09137e,0x39c13210,0x3870c69f,0xba5f7850,0x39004cb1,0xb850c409,0xba51f9fb,0xb9e9bc53,0xb9beae8d,0x387f3736,0x38e5ee32,0xb7c6bce3,0xb6e5f55f,0xb635cd85,0xb7f7397a,0xb83b2271,0xb8ad0561,0xb89ebed0,0xb89af80e,0xb857bc9a,0x38f0ecb1, +0x38849703,0xba04b5a4,0xba9d3589,0xbb051a1b,0xbaf67d97,0xbb475f29,0xbba2c75b,0xbbc2e8cf,0xbba8d24c,0xbb2fa938,0x3965513c,0xb9763425,0xbb94bb8b,0xbafd7fb4,0x393435db,0x3b595828,0x3a314fb5,0xba66326d,0xbb0c3a12,0xba0f15c8,0x3aa48bef,0x3a959b9a,0x3a88ad07,0x39378bd7,0xb837ac37, +0xb7dfd819,0xb69b3d12,0x3728278b,0x35da3ce1,0x377946fa,0x37c4b218,0x38211659,0x3812bc2b,0x3826fdd7,0x37122102,0xb82d39f9,0xb80af075,0x39c6e2e5,0xb931ca31,0xba824d91,0xb9982d23,0x3aa16e72,0x3b6692a5,0x3bee9587,0x3bfded7d,0x3b9586c2,0x3b221568,0x3ab3b695,0x3b01470d,0x3b196949, +0x3b0dff54,0x3ac99e0a,0x3b2fc67c,0x3b86a0e3,0x3bce39e0,0x3b241a48,0x3b15c34d,0x3aa69614,0x3a7c225f,0xb89a70cb,0x380cf613,0x37a87b34,0xb6896a33,0xb6679d5a,0xb6f63087,0xb70b87c3,0xb782d4a7,0xb79d6118,0xb7b1c569,0xb778357c,0xb75ed1dc,0x384ef1f5,0xb809f304,0xb8d7320b,0x39acc39f, +0xb92a1014,0xba76a887,0xbb092ada,0xbb67a745,0xbbaf2bac,0xbbafdcc2,0xbb5e539b,0x3a06d7ee,0x3b41e021,0x3b47a5b9,0x3ac8cc07,0xba0832d8,0xbb32fcdb,0xbb15be06,0xba061256,0x3b1c6da3,0x3b495241,0x3b54e559,0x3bc0b225,0x3b848bc9,0xb981908b,0xb8a5e6c9,0x38104f25,0xb79535aa,0x379564e3, +0x36db7a3b,0x3749ed39,0x37571d4a,0x37652e4e,0x37760e58,0x36f9f538,0x36f60b16,0xb81287ad,0x377fde97,0x386e525d,0xb93fb727,0x3a4a347a,0x3b01c127,0x3b52ab3f,0x3b88164a,0x3bd4b940,0x3bd0cc60,0x3b78f1d7,0xba81a7da,0xbb728d5c,0xbb7cbaed,0x3b0d7a56,0x3bae3aec,0x3b8387f2,0x3b8f0497, +0x3a304c15,0xbb9f36ba,0xb9d7eb58,0xbb9e16bf,0xbc661e03,0xbba137c3,0x3a314e6a,0x3790a210,0xb6fe819f,0x367050f6,0xb7bf358f,0xb7928551,0xb7a10c9f,0xb79955f6,0xb7919946,0xb75afe0c,0xb759020c,0x374e27d2,0xb6908e71,0x38d0c0e1,0xb8da920e,0xbab73495,0xbb17c8e8,0xbb210cf4,0xbb2b488a, +0xbb49652a,0xbb492144,0xbb450bc3,0xbb18ff4b,0xba926b02,0x3b06fa5c,0x3bcca174,0x3b41fb78,0xbac1d48a,0xbbe00850,0xbb3683b9,0x3934aea7,0x3a93d0d4,0xb990e021,0xb9390f91,0xbbc9aee5,0xbb811791,0xba839aa0,0x3925f59b,0xb8bdaaf5,0x384a4ffe,0x37c56230,0x384510fc,0x380ac8ac,0x3817c483, +0x3800b440,0x379ba177,0x37d83477,0xb80620a0,0x379b1aaf,0xb9479d6d,0x38e56987,0x3abe846e,0x3b20236b,0x3b17cad7,0x3b05fb37,0x3ac73efc,0x3a14f804,0xb9667b9d,0xba86b097,0xbaadcd53,0xbb08fb1f,0xbb0da081,0xbb0be287,0xba8084ea,0x3887905c,0x38560eec,0xb9b9a1d0,0xba4e5cb4,0x3a85992f, +0x3b13ca21,0x3b43b95b,0x3b287010,0x3aa02704,0x391b88b9,0xb745f2eb,0xb76708e8,0xb8d66ee1,0xb8a2f0d1,0xb8a7bdd5,0xb89b154e,0xb87fa848,0xb8469e08,0xb7e5d880,0xb684bff6,0x38fe1513,0x37a287c2,0x3a54201a,0x3abd6cd7,0x3ac7e7ce,0x3a8862cc,0x3a0cce22,0xb8fd1732,0xb9e17762,0xba8884fa, +0xbb075cee,0xbb082c18,0xbb0d94a3,0xbb173181,0xbb07273d,0xbae1cf95,0xba2b7cd1,0xb9a26964,0x3a3686db,0x3aaecb84,0x3b018b72,0xb9642ced,0xb96a7644,0xba01f529,0xb987b979,0xb93934b9,0xb86a037c,0x392b398c,0x396e00de,0x39456e01,0x3942cca8,0x3938213e,0x391b3147,0x38db1231,0x38b5f3fe, +0x379ae694,0xb93e2d51,0xb9a8c7a7,0xb9fb824c,0xb9ed48b2,0xb9539b3b,0xb9f793cc,0xba0df065,0xba368ef3,0xba659aa2,0xba899f9e,0xbaa390d9,0xba96122d,0xba91b2ee,0xba8752ca,0xba5836cd,0xba2cc55e,0xba1eac22,0xba03563d,0xba05a1b2,0xb9fe8f4c,0xb9c64419,0xba8908dd,0xbaa44ea2,0xbab4a011, +0xba9ebe8e,0xbaa00099,0xba8c3b66,0xba6f87ac,0xba40d5a1,0xba114582,0xba0dcfea,0xb9fc7705,0xb9dda5a9,0xb9b84a82,0xb9a65d21,0xb98664b6,0xb8c8c636,0x3959620f,0x3a15086a,0x3a989bd3,0x3a9fda20,0x3a89a880,0x3a7eba3f,0x3a658c56,0x3a4b0e31,0x3a33ef67,0x3a1c6fd8,0x39ea6949,0x39abc925, +0x394edec3,0x378a8d48,0xb92f0c2b,0xb9ae03c4,0xb9fafbfd,0xba1a62ce,0xba34ef82,0xba6257fe,0xb96d9a77,0xb988fd4d,0xb95121a0,0xb94190f1,0xb8d2e59d,0xb9978518,0xb988a8a8,0xb989404f,0xb969cb3a,0xb906abbb,0xb80b5bbd,0x386455c9,0x39224f82,0x398521a9,0x39951101,0x398b26b3,0x3a38b32a, +0x3a11e831,0x3a06fd5f,0x39e235c8,0x39e421bf,0x39d169c6,0x39bf5914,0x39b1bee2,0x399f9c57,0x399073ae,0x39591a57,0x3913918b,0x38aa5237,0x382b665b,0x374f04c0,0xb774b271,0xb83c9668,0xb8c83818,0xb92134a7,0xb94a2a12,0x396dde0a,0xba3ff72d,0xba0934d3,0xba294198,0xba2b70b6,0xba3740f5, +0xba3b1119,0xba2eb11a,0xba298e8b,0xb9734cb2,0xba00e0dc,0xba19ee65,0xba1cc002,0xba63038f,0xba743795,0xba3edd13,0xba5ea09b,0xba40f546,0xba3d0722,0xba3764e6,0xba336642,0xba35396d,0xba3cc84b,0xba46af25,0xba6a6f21,0xba5a040a,0xba4a044e,0xba2fc4e8,0xba08f5bc,0xba14ed3d,0xba826630, +0xba30ef34,0xba0eed90,0xb947cdf2,0xb9f860e2,0xba0cc118,0xba2ec2e3,0xba065a23,0xb9f0443a,0xba3fabb7,0xba2545ce,0xba11dc03,0xba272cf5,0xba2c52f8,0xb97d2fa2,0x39326356,0xb7b810a7,0xb6b88559,0x35e843c5,0xb8de04a6,0xb90f426b,0xb8271522,0xba01ee99,0xba4b755e,0xba3c97e2,0xba070613, +0xba325a24,0xba7a5893,0xba87f352,0xbab2a70d,0xbaecb6cc,0xbae702ae,0xbac468bd,0xba8d1d78,0xb9d6a4a0,0xba006c60,0xbad8e721,0xba6c2eff,0xb9fe1d6a,0x39d14634,0xb99e21a2,0xba15ab64,0xba65c585,0xba069dc7,0xb866826a,0xba41150b,0xb9d31061,0xb9f7b7cd,0xb97c2214,0x38f0a9a1,0x38e048f8, +0xb7e3b195,0x3638def3,0x37c6589f,0x37241036,0x387deaa2,0x3885103d,0x3894154a,0x39251da7,0x394be044,0xb90b3db0,0xba0fe77d,0xba26a700,0xba9226ed,0xba869278,0xbabcfcd5,0xbb04a211,0xbafc5313,0xbac2c471,0xba58773f,0x385e22d1,0xb992199a,0xbb25dccb,0xba4ff8d4,0xb9010242,0x3aeb4d5d, +0x39098bd4,0xb8dddf3d,0xba2d41dc,0xb83818df,0xb954ea80,0xba88f4ff,0xb9f79f6f,0xb8fc7e04,0x3919fe35,0xb7e11c57,0xb850ac74,0x3671912c,0x33fab8c4,0xb7459ec0,0xb7367b99,0xb7efa78f,0xb80475b0,0xb8195a30,0xb8a081b9,0xb84fba15,0x38d4be39,0xb91e6463,0xba504bf7,0xbad4e0ee,0xbaf084c8, +0xbb41687d,0xbb949714,0xbb97b42f,0xbb760f04,0xbb08101e,0x38dd1f90,0xba0f8996,0xbb898da3,0xbaee97f2,0x389bf683,0x3b381000,0x39c90355,0xba65be2f,0xbacddc82,0xba03892e,0x3a1ad0ab,0x3a79a95f,0x3a223afc,0x386e6014,0xb8734edc,0xb74c1542,0x37f7e310,0xb5e6ce70,0x36271194,0x36aef186, +0x36fd8a53,0x3768b012,0x3780eb1c,0x37af14f5,0x380ca366,0x379121ef,0xb889d03b,0x39479b68,0x390d1fc2,0xb98c8ee9,0x3a0b1477,0x3af5ac5b,0x3b680318,0x3bc86f5e,0x3bc5162d,0x3b4910b5,0x3ac33d88,0x3a827b84,0x3adf5fe8,0x3b24aac5,0x3b0d05c0,0x3a1e7210,0x3b0b7743,0x3b53d20f,0x3b991080, +0x3ac29647,0x3aea8d9c,0x3a87a316,0x3a1c3490,0xb979df93,0x390e7f0f,0xb86b6282,0x375d3f0a,0xb7815207,0x3620658c,0xb6d308f3,0xb695af99,0xb7020425,0xb71ba341,0xb72937a2,0xb7a7a49d,0xb53575b7,0x37a6516d,0xb8cf65af,0x390f6109,0xb96a3a83,0xbaacb75d,0xbb2590d8,0xbb77eb53,0xbba24fe7, +0xbb8e0c57,0xbb0a235b,0x3a9a59d5,0x3b37965e,0x3b08fbca,0x3a8090e7,0xba013112,0xbb0fbd8c,0xbaa9a8e4,0x3976045e,0x3b1e44e7,0x3b359066,0x3b107471,0x3b88d74c,0x3b1d18b9,0xba051704,0x389b5c7c,0xb7397744,0x376a3bbe,0x36eb3c89,0x36b7dcda,0x36ac5d86,0x36b44609,0x36d7eb1d,0x36c65283, +0x37279ac5,0x36d56f81,0x373f3d29,0xb84199d1,0x38be6e6c,0xb9040621,0x3a205f15,0x3b00a630,0x3b53e354,0x3b8a0eef,0x3bbf74d8,0x3ba6f017,0x3b0cd61b,0xbad1c4aa,0xbb57a51b,0xbb1ff837,0x3b034c8b,0x3b85d4ce,0x3b4273d7,0x3b1a21ac,0xba2177e5,0xbb82b518,0xba01a983,0xbb78dcae,0xbc1d7a4d, +0xbb4d4997,0x3a7a031a,0xb96a4ab5,0x387819af,0xb82aeb6f,0xb6bd5c11,0xb7777f1d,0xb6f9b6bc,0xb71f9ae2,0xb6f85571,0xb719772f,0xb70724a5,0xb74cf13c,0x36bea020,0x367e1a53,0x39069e47,0xba7de640,0xbb05419b,0xbb06e9ae,0xbb145581,0xbb2cae01,0xbb1ebb89,0xbb10176a,0xbadc9030,0xb774912f, +0x3b218269,0x3bb65527,0x3aa26f4d,0xbb1a2012,0xbba2640a,0xbae01ed1,0x3a64a012,0x3b1973b7,0xba1f8aac,0x3a93c1c1,0xbbd1eddc,0xbb78acf2,0xb97b0ea8,0x38185081,0x37923621,0x37ff7f31,0x380bfd23,0x37ab539e,0x37a3d651,0x37812ff0,0x378710b6,0x374530ff,0x37b01626,0x36ab1102,0x378f2c25, +0xb88db805,0xb913993a,0x3a83a03d,0x3b02e465,0x3ae8e5c6,0x3ac8159a,0x3a87cc69,0x39b93d30,0xb99c49ad,0xba8e3114,0xbaa4bdcd,0xbaf08608,0xbad8361c,0xbad5d50c,0xba1408a9,0x39ee10f2,0x3a87f4ae,0x3aa389a0,0x3aabf617,0x3b410cd9,0x3ab17d16,0x3b1601f8,0x3b0cd2fd,0x3a18cc07,0xb8e81129, +0xb817d971,0xb8a4c1a0,0xb877cf88,0xb849c9db,0xb819115a,0xb811a0d7,0xb7ec5296,0xb8021fee,0xb7d67beb,0xb83f62be,0x37e982d5,0xb6c4c090,0x39ec71bf,0x3aa3f99f,0x3abd4887,0x3a8d0d60,0x3a3e2ba0,0x394f2b63,0xb7c7a9e5,0xba0b21ec,0xbab686f6,0xbacc4f7e,0xbadc00be,0xbaeae7e6,0xbacc0ab8, +0xbaab272a,0xba1763ff,0xba16e620,0x38238695,0x39ebf988,0x3a641e90,0x396bb608,0x3989dfc9,0xb87c574d,0x38f8a21e,0x38a411a7,0x39184b46,0x39348da6,0x390473ad,0x38d32a04,0x38a1546c,0x3894aa15,0x38837150,0x3872436b,0x388f8537,0x388920a1,0x381aa407,0xb91b3e23,0xb9f05d05,0xba1fe95f, +0xba08abb0,0xba3613da,0xba41f11b,0xba5d4060,0xba841c3e,0xba98d4bb,0xbaafba51,0xba9c8123,0xba926157,0xba852210,0xba46184d,0xba0d3a32,0xb9c27e05,0xb9818926,0xb94f53d9,0xb8ceefe4,0x38b487fe,0xba56e866,0xba6f7c4e,0xba88e99b,0xba69f4a5,0xba63cb88,0xba3b0238,0xb9f48feb,0xb9a5ff50, +0xb93d8234,0xb950a4a9,0xb9353940,0xb92d5352,0xb90c17be,0xb9244eeb,0xb9677901,0xb98784b3,0xb90ac2e2,0x3911b448,0x3a29a2d8,0x3a2f73b1,0x3a065a3f,0x39e10518,0x39b20c96,0x3979f2c0,0x392605b5,0x38833741,0xb682ce98,0xb87d43ec,0xb90704e2,0xb975c2fb,0xb9b69605,0xb9edfef6,0xba0b48a1, +0xba1833ff,0xba2acdf6,0xba42070b,0xb9bebb32,0xb9c234ac,0xb9b5bb3a,0xb9bc2dab,0xb9afd2d5,0xb9f31704,0xba00e725,0xba05d50a,0xba0251cf,0xb9e2e690,0xb9c19429,0xb9a2e82b,0xb9820a12,0xb933cf6e,0xb8ee2aba,0xb8b16059,0x398d3146,0x392e8e03,0x390183f5,0x3826a7f3,0x38104e09,0xb6528801, +0xb82eca0d,0xb8911033,0xb8d9e232,0xb915f406,0xb93720a3,0xb95cb13f,0xb97789ba,0xb98376e3,0xb984faea,0xb9852749,0xb98c8ea2,0xb999e099,0xb9a5578f,0xb9b12878,0xb921d782,0xba1dc4e2,0xb9ec0582,0xba13d32e,0xba0f312f,0xba0f34e7,0xba1e1af4,0xba1068f0,0xb9fc83bd,0xb9067660,0xb9ae7d82, +0xb9d2413e,0xb9d25b94,0xba15e259,0xba23e326,0xba0938c9,0xba2090a8,0xba1c57a0,0xba2dec2c,0xba0374e1,0xba06870e,0xba0d9852,0xba19b429,0xba243294,0xba431a93,0xba2a3247,0xba1dc839,0xba11a6c5,0xb9f1b58f,0xba044c17,0xba591fca,0xba16720b,0xb9f57369,0xb93bc53e,0xb9dd0271,0xb9f34858, +0xba077df9,0xb9e2e528,0xb9cc8132,0xba299fbb,0xba06c924,0xb9eac2e8,0xb9f0aa84,0xb99534b9,0xb80d1ca5,0x389fcb27,0x37709b62,0x37f2d8b1,0x381eb1e3,0x37a2869b,0x37007869,0x3874d68f,0xb8d5d537,0xb9830bef,0xba03854a,0xb9c945a7,0xb9e5c3e7,0xba3bc06e,0xba66fce7,0xba977183,0xbac3b743, +0xbaab8468,0xba8dcc3a,0xba5f3a90,0xb9d27899,0xba04dbfc,0xbab641b8,0xba514503,0xb9f00f73,0x3987fa4e,0xb9a0d8ba,0xb9ff9f9e,0xba1e9e57,0xb9d4bd5b,0xb9027be7,0xba4b207f,0xb9c28654,0xb972df7d,0x381b1391,0x38c955c3,0x38012e03,0xb7e6f2aa,0x362e5e3d,0x36782f6a,0x366b9dd4,0x37a733d2, +0x378bce5a,0x369138b8,0x382f6dec,0x38ec716d,0x38bc6e9f,0xb936c073,0xb9b4d75d,0xba3efe70,0xba5f1f47,0xba9d693e,0xbade6a7e,0xbab14533,0xba8350a5,0xba356a11,0xb90c8e38,0xb9f20d1b,0xbb0a322f,0xba456fac,0xb974d340,0x3aaac356,0xb8972824,0xb94141b7,0xb9bfb01a,0xb8ca9632,0xb9441faf, +0xba85a1e2,0xb99a3d2e,0x38361f1f,0x379401f8,0xb84c63b8,0xb738537d,0x3727609d,0x3539265d,0xb6777588,0xb607fd36,0xb7372e66,0xb7244b01,0xb6ba29cd,0xb782acea,0xb86e0321,0xb72b6c32,0x38198dcb,0xb9c1e255,0xba978602,0xbad6fc78,0xbb299f87,0xbb76cfc8,0xbb5955c1,0xbb2496ab,0xbac92831, +0xb8cb9d34,0xba490eea,0xbb64ab04,0xbadd21a4,0xb92bdd21,0x3b06b5f9,0x3919b073,0xba36c42e,0xba5b6b5f,0xb9971397,0xb8832472,0x3a22ea72,0x39c7e6aa,0xb8cf0897,0x3785ad0c,0x376da19a,0x374a87de,0xb6ebb991,0x35e8110e,0x35820761,0x362a92f1,0x36a3155b,0x36c29b1d,0x362d0eb8,0x3726f200, +0x37dd4705,0x35d4c50f,0xb775aecf,0x3981eef5,0x39a438ce,0x3a83da0f,0x3b088544,0x3b50f98d,0x3b96d844,0x3b882b42,0x3aedcd6a,0x3a33f6e5,0x3a1fa003,0x3aac4670,0x3b18b881,0x3af2b004,0xb955a554,0x3ab72c81,0x3b0ccce1,0x3b425858,0x3a0b571a,0x3aae64ae,0x3a4e3e63,0x39176c32,0xb92d62ca, +0x38eb9d1e,0xb88c3030,0x37b63afa,0xb73e7c8d,0x36a3ee0e,0xb688575a,0xb5475040,0xb675139f,0xb632249c,0xb64edf7b,0xb6418082,0xb7af4610,0x37e1fca2,0xb854f4ce,0xb6953a2d,0xb9dbcb7b,0xbacd61c9,0xbb2e3768,0xbb6efb3a,0xbb8a803c,0xbb57a714,0xba9e8141,0x3ab55a0b,0x3b1c40ee,0x3aaf10ee, +0x3a1ad76c,0xb9cbb115,0xbad4c965,0xb9da4368,0x3a57f118,0x3b143ee9,0x3b1af708,0x3aad3729,0x3b2f095e,0x3a8375f3,0xb9c60bbc,0x3902c5a9,0xb7e641e4,0x3785f871,0xb61f6b42,0x3643055c,0x36012b8e,0x3623a5ed,0x36513d89,0x35f3cd67,0x3687c1f2,0xb4fe1197,0x379e226e,0xb7c8ba77,0x3804ab4e, +0x36ac5e0a,0x3a01fa15,0x3ae8c4e0,0x3b3d4c84,0x3b794489,0x3b97fb13,0x3b6a6c1a,0x3a62352e,0xbaf016e2,0xbb307fb8,0xbaac3be3,0x3adeb22f,0x3b3ce684,0x3b046045,0x3a4ffaf9,0xbab9023d,0xbb48f65a,0xba0baafd,0xbb490970,0xbbc8c4da,0xba977548,0x3a2cb510,0xb98bd072,0x38bd77ff,0xb849df7c, +0x3763b3ae,0xb73eec58,0xb56c8a08,0xb6c88a94,0xb6521638,0xb69f8866,0xb59df186,0xb715e028,0x363e5072,0xb8073eef,0x3917284d,0xb9ea4964,0xbaccb183,0xbac99216,0xbae7888b,0xbb053cb0,0xbae50f16,0xbabb3972,0xba854808,0x3a5d6761,0x3b242702,0x3b8a2845,0xb8a35c58,0xbb2cc6cc,0xbb53a787, +0xba850d68,0x3a871c2a,0x3b35fa0e,0xba7f3b8c,0x3b0d6206,0xbba986f7,0xbb17b4d7,0x39bfc596,0xb8d43f9d,0x38b64c3a,0xb7a9317c,0x37ccbceb,0x343812d7,0x37507609,0x36e2d9d3,0x370fbe11,0x36dc710f,0x36aa21ba,0x37278165,0x36571cac,0x38335c6f,0xb96736dd,0x3a154c19,0x3ac8ae9f,0x3aa18809, +0x3a83b397,0x3a0e096e,0x38e5b7c4,0xb9c62711,0xba88af8c,0xba9b19fe,0xbacb54a1,0xba96e302,0xba90de7b,0xb9228cdb,0x3a5a6dad,0x3aed9b9b,0x3b1d5e86,0x3b3bdcb4,0x3b800b94,0x39e30876,0x3ac08cba,0x3ac5c1a4,0xb8498a82,0xb8d4e47f,0xb71088cc,0xb8328273,0xb6fa494e,0xb7ac8885,0xb7816650, +0xb797e560,0xb77e7b6d,0xb75a9b8d,0xb740689b,0xb762cc84,0xb7c39c20,0xb7d0b5b0,0x38fc463c,0x3a687b71,0x3aa0e498,0x3a806664,0x3a4eba2c,0x39cc6a89,0x395de274,0xb951daf3,0xba5c35d5,0xba8c3ad7,0xba994d23,0xbaa07fb0,0xba8c9e97,0xba81216a,0xba34036c,0xba666da4,0xba1a4eb2,0xb9b422ec, +0xb90a9e58,0x3a0f9489,0x3a2371d2,0x399006bb,0x397bb810,0x38c04006,0x38e04c03,0x386f46ab,0x37f4df10,0x38003e03,0x38054e77,0x380ad659,0x37f07829,0x37c6458d,0x37a66efd,0x38004fa1,0x386017d8,0x3882bda9,0xb987cb69,0xba1589b5,0xba24c6e6,0xba3a89ae,0xba44b3c2,0xba53e82d,0xba753968, +0xba8a83f1,0xba9c87fd,0xba8d9b9a,0xba870ab9,0xba7f21fe,0xba38e439,0xb9f5808d,0xb97b3fea,0xb8917d74,0x38501295,0x39693de6,0x39e7983d,0xba26115b,0xba2762b5,0xba47b207,0xba08e5d3,0xb9f2ce07,0xb9a2e915,0xb8b98a70,0xb8069224,0xb7b7c7f6,0xb7b66642,0xb7a98de6,0xb7ac33ed,0xb7979fab, +0xb7a0134c,0xb878ef82,0xb91f1987,0xb97a6112,0xb9288896,0x3944ea78,0x3935bae7,0x385effb9,0xb7e7d91c,0xb8d5aee3,0xb94994e0,0xb98798db,0xb9b301b8,0xb9b5e6e4,0xb9b89ffb,0xb9c4b217,0xb9dec596,0xba0089ae,0xba1193c9,0xba1724e0,0xba17fa33,0xba21e406,0xba2750ff,0xb9d7b0eb,0xb9cd6da4, +0xb9d90788,0xb9f15eba,0xb9fcc5ce,0xba032be5,0xba086f39,0xba08321d,0xba049ca6,0xb9f7ef77,0xb9e8f631,0xb9d80406,0xb9c8162c,0xb9b25bc6,0xb9a572d3,0xb9a484ed,0xb8c4da25,0xb8fbff0f,0xb92f00ff,0xb974c27f,0xb9817892,0xb9929745,0xb9a53ef0,0xb9b23c7d,0xb9c22007,0xb9d7cee1,0xb9da0b38, +0xb9e04361,0xb9dfbda9,0xb9ddf76a,0xb9d61a56,0xb9cdb412,0xb9ccb751,0xb9cefdb7,0xb9cc2c3b,0xb9cf2726,0xb9cb9f44,0xb9ea8fc2,0xb9b782bf,0xb9e463f2,0xb9d81633,0xb9e2b901,0xba0ac772,0xb9d1eec6,0xb9adf22f,0xb8f10cbe,0xb96c10ea,0xb987d6d2,0xb9853a2b,0xb9ab9174,0xb9b82fbe,0xb9a57a1a, +0xb9cb03ae,0xb9d15135,0xba1e7569,0xb9c8264e,0xb9b87261,0xb9c52e62,0xb9df9de9,0xb9f02fed,0xba0ebfe4,0xb9ee35a8,0xb9dddfbd,0xb9d79337,0xb9bddaa0,0xb9cef224,0xba1ced57,0xb9e159f6,0xb9bb0817,0xb923aed9,0xb9ad31f1,0xb9b9efe9,0xb9bdf2fd,0xb9aceee7,0xb9ab39ad,0xba047684,0xb9dca25c, +0xb9a3f8db,0xb9522e2a,0xb72247b0,0x387cb424,0x38979309,0x3868dd66,0x38a1da69,0x38a418ae,0x38b701ed,0x38ad3b03,0x38dc41ba,0x38a7db04,0x37b045e9,0xb94a4bc5,0xb9711e03,0xb99aa293,0xb9f7398b,0xba2b62c1,0xba5f34ae,0xba8c0b98,0xba612dcd,0xba36856d,0xba1d4448,0xb9b556d0,0xb9e5c7ad, +0xba831eb7,0xba20725e,0xb9c56e91,0x38f5eefc,0xb98df020,0xb9c62bc1,0xb9ce1125,0xb9a68756,0xb93c0c51,0xba36a44a,0xb9987705,0xb7521607,0x38d5c0bd,0x37f23936,0xb6e9093e,0xb7c1170e,0xb7924242,0xb7b1405d,0xb7eb4d85,0xb7d32cd7,0xb7dfe3f7,0xb7e6736c,0xb7a5cd4e,0x38033653,0x38a23ced, +0x37fb6574,0xb911dd45,0xb9daab17,0xba1def52,0xba60cb21,0xba9f6445,0xba596a59,0xba1b4b51,0xba054685,0xb96a14a0,0xb9fa8d1f,0xbac1bc96,0xba1af950,0xb97e92bf,0x3a51ede0,0xb9275c0f,0xb94ac28b,0xb93a833b,0xb9184771,0xb98a5d96,0xba6d4aa4,0xb8abd126,0x3886baf0,0xb81d760b,0xb790682c, +0x353896e2,0x372d8a6f,0x3701d4f0,0x3716e18a,0x373e866d,0x373441a8,0x373c13ae,0x37530f85,0x36761202,0xb72ae77a,0xb832c53e,0x3849a8cc,0xb8e9d825,0xba352fe7,0xbaa48147,0xbafc9b20,0xbb2f6a14,0xbb06ef60,0xbabddd9e,0xba832a61,0xb96681e3,0xba433af6,0xbb209ba0,0xbaaabaa4,0xb98c0479, +0x3aa4a9a0,0xb80255bb,0xba092408,0xb9d6f4b9,0xb982e8c2,0xb96f169d,0x39a9c7af,0x38b1d137,0xb6ca6261,0xb5ea1e96,0x374d7cf9,0xb64c7a41,0xb65ded70,0xb69385e0,0xb68ad412,0xb6b4927c,0xb6aac9cd,0xb6b8f4dd,0xb6b8f482,0xb5f89ac4,0x36bd98be,0x37934eaf,0xb79f94c3,0x38a4da4a,0x3a1db328, +0x3a92e1cd,0x3af40bb3,0x3b244de6,0x3b422323,0x3b1e8bda,0x3a6b1f57,0x3947d3d8,0x39a2e474,0x3a62658f,0x3aef7da4,0x3abacb04,0xb9f442ff,0x3a6df650,0x3ab01561,0x3add212d,0x38e17091,0x3a75e00d,0x3a230567,0xb90b4b67,0x38093111,0xb654227a,0xb74033a6,0x3699e0bf,0x307deb50,0x36642d65, +0x3602e7e2,0x364ebce6,0x3638749f,0x364f26a4,0x362e4ceb,0x35eef6c8,0xb6c83d0e,0xb6b36f68,0x371111ef,0xb78df03c,0xba0ff3fb,0xbabf0c13,0xbb13cdeb,0xbb3b1677,0xbb445a6b,0xbb09abba,0xba0a15e1,0x3aa2a42a,0x3ae8c913,0x3a53b31b,0x398ec3a6,0xb9aa5b98,0xba8ef1b7,0x38b2541c,0x3a7b2fad, +0x3ae73b6b,0x3adf6d40,0x3a312532,0x3ab35b64,0x391f112c,0xb9062932,0x3867c149,0xb76a3f7a,0x36bb1845,0xb66c3266,0xb5bd2628,0xb6063e12,0xb61a8a46,0xb5f5628c,0xb641d647,0xb5004a45,0xb687e280,0x371f27f5,0xb6c19dd7,0x34a62939,0x3791ce82,0x39da3c33,0x3aba14ec,0x3b114c7e,0x3b3d0d35, +0x3b4e21c4,0x3b0e4cf0,0x3946c576,0xbacab208,0xbaf6003d,0xba04e0d3,0x3aa0a56e,0x3ae955e1,0x3aa03271,0xb9347e59,0xbacf3b23,0xbb044e88,0xb9e7961b,0xbb0cab8c,0xbb638a86,0x387e9e00,0x391a4760,0xb8b82bf6,0x3818217d,0xb790ee60,0x37294a28,0xb57d9a8f,0x3688a1f2,0x36097dca,0x364dd043, +0x36101786,0x36642aec,0xb5dfc36d,0x36a59637,0xb801ac5e,0x389f12dd,0xb8dfc65f,0xba77d71e,0xba7cf3bd,0xba95ee07,0xbaa9e6d5,0xba8a4d30,0xba3e7cc9,0xb9c10792,0x3aa46335,0x3b0d79a0,0x3b323a91,0xba295405,0xbb0f52b3,0xbae35a96,0xb9de4133,0x3a80730d,0x3b22b8fd,0xba6deb6b,0x3b1f2575, +0xbb4540b5,0xba1f88f4,0x3984abe6,0xb8bdc3f2,0x384418ed,0xb798f2bc,0x365161c0,0xb702c3d7,0xb6522398,0xb6b7ba62,0xb6a47fab,0xb65fd934,0xb6f3b731,0x36a6daab,0xb74e614a,0x385ac615,0xb8e36efc,0x38f69c62,0x3a8b49f9,0x3a440e59,0x3a1b667b,0x3957d6e2,0xb8537a79,0xb9c71aac,0xba6421da, +0xba799600,0xba9536b0,0xba3f5732,0xba228d3d,0x3935249c,0x3a8df8f2,0x3b05389e,0x3b2f244d,0x3b589801,0x3b6fab29,0xb95655f4,0x3a4bab16,0x3a20efc5,0xb95189bb,0x37d6d343,0xb8104a7a,0x371d7aa5,0x370a558d,0x37216389,0x371c2699,0x373972fa,0x3715f247,0x37347019,0x36cbb855,0x3744993f, +0xb7c9f687,0x36ba5269,0xb8730eb7,0x39dabbd9,0x3a76c253,0x3a43d30f,0x3a398a40,0x39e65e31,0x399a0476,0xb6fc5134,0xb9dbfd3c,0xba23f8d0,0xba375d28,0xba3ef0e0,0xba31ccd0,0xba39546e,0xba2f65e3,0xba77063e,0xba68217d,0xba48b6b4,0xba31f91f,0x3a23a372,0x3a46b43e,0x39b5cda4,0x386e956b, +0x38adc680,0x37c8d3a7,0xb741646e,0xb7e577fa,0xb7a4aa31,0xb7cacb5f,0xb7d72871,0xb7c90229,0xb7b0f809,0xb7cf3aeb,0xb76eff44,0x371547cd,0x388908c7,0x377dbf50,0xb9c44658,0xba0d2849,0xba108928,0xba1a82b3,0xba21dc55,0xba3926e9,0xba4efde7,0xba686f62,0xba57c3e4,0xba52eb30,0xba4e0d7b, +0xba12534e,0xb9b5fc83,0xb903314c,0x384ebf6a,0x394fd18d,0x39c4b620,0x3a180af7,0xb9e0aee4,0xb9dac8fc,0xb9e71836,0xb943853e,0xb92e67a7,0xb7936110,0x389ee485,0x38c50bbd,0x3892f39a,0x38a2a69d,0x3896eb4a,0x389cec2c,0x3890b423,0x38a405da,0x38981a68,0x3591657f,0xb8e0ee59,0xb983155e, +0xb9166e81,0xb901da8d,0xb952f898,0xb989f66b,0xb9a2b698,0xb9c3bb74,0xb9d9da45,0xb9f67385,0xb9e72640,0xb9da1c4f,0xb9d7b029,0xb9de33a7,0xb9eea700,0xba0021b1,0xb9fd7e4a,0xb9f5f84a,0xb9fe36b0,0xb9f8abda,0xb9b6e6d3,0xb9a66ac3,0xb9caaa45,0xb9e6cfd6,0xb9f9cd17,0xb9c99f45,0xb9c243bd, +0xb9b66386,0xb9b55445,0xb9aef42a,0xb9ab3757,0xb9a6599a,0xb9a2d3d9,0xb99b0b04,0xb9a396d9,0xb9b358bd,0xb9ab4165,0xb99390db,0xb9902c06,0xb9a9ec13,0xb9b40bd6,0xb9bd9fc3,0xb9cb35c1,0xb9d3ed7f,0xb9deacc9,0xb9efae42,0xb9eaae7d,0xb9e995b2,0xb9e209a2,0xb9dbd72b,0xb9d070f5,0xb9c4deaa, +0xb9c092d6,0xb9bd8742,0xb9b4e62d,0xb9b3a474,0xb9e4b2e6,0xb9a25a18,0xb987c35c,0xb99c09ba,0xb99b0890,0xb9a743e4,0xb9b5dbc9,0xb874b8d1,0xb87dc95a,0x3543cce8,0xb809d84f,0xb82cd3a5,0xb82a2f81,0xb8788e07,0xb88ed88d,0xb86ee9e3,0xb88660c9,0xb831530f,0xb9c9bca4,0xb98ab15a,0xb976bf5f, +0xb982a853,0xb99873d2,0xb9a26e03,0xb9bc90bb,0xb99d5984,0xb995491d,0xb996d288,0xb98ebfff,0xb998df67,0xb9cc64db,0xb9a038a2,0xb98b8702,0xb922c916,0xb983801a,0xb986fb06,0xb978d3fb,0xb978d6b5,0xb9724e54,0xb9be706a,0xb9a7f859,0x3607cff0,0x3876688f,0x388223ba,0x368e657d,0x367356b2, +0x35b399f0,0x3737514d,0x372d5789,0x37adb739,0x37b257aa,0x37e97683,0xb58c5275,0x38871bf6,0x38535740,0x380f8dbb,0xb934d0ba,0xb99904d0,0xb9e0c2cf,0xba101aae,0xba2c2d89,0xba0541ae,0xb9db1c11,0xb9cdcefa,0xb998e8d8,0xb9b8e8a2,0xba2407c8,0xb9e386d8,0xb99ed109,0xb7f02c42,0xb96f96b9, +0xb98b9eb4,0xb960cc3c,0xb9695917,0xb91815f3,0xba15e2ca,0x36dffc64,0x388dcc67,0xb822c0ed,0xb7c9a9a2,0xb71e65fc,0xb5bf64af,0xb5cba8dc,0xb673575d,0xb6481796,0xb6babfd2,0xb7103640,0xb71789e8,0xb702dea2,0xb7d0c2de,0xb7c9c85f,0x37b67750,0x3843f797,0xb971212e,0xb9c8b8a0,0xba0bda58, +0xba41d4f3,0xb9f22793,0xb9b16875,0xb9b8ff5a,0xb98c23bc,0xb9dd5726,0xba674c27,0xb9ea5c62,0xb98857b0,0x39a0c4d8,0xb95717d1,0xb93cf2a7,0xb8523865,0xb919337b,0xb950b80d,0xba25a985,0x38fb194b,0xb86deea0,0x375185f5,0x372ab272,0x36c616cd,0x35947c44,0x359e4422,0x35d7e17e,0x36034362, +0x36345d22,0x36853edf,0x368aaab2,0x36b870c9,0x374ddba2,0x3617b277,0xb766e349,0x37c590c4,0xb9af81ca,0xba568654,0xba9d7cd0,0xbacedc35,0xba90189f,0xba41484e,0xba1bed03,0xb9a169f6,0xba23b5fa,0xbabd1f3b,0xba69a8ba,0xb9a6a564,0x3a0a613f,0xb908e254,0xb9a22b23,0xb89cabba,0xb901834e, +0xb97b8023,0x3918c48c,0x37d6495c,0xb7f0e949,0x377035ff,0xb72b7fd4,0xb5a0684e,0xb5c24a79,0xb4f90a43,0xb584c222,0xb588e899,0xb5c9c8d7,0xb5f47d91,0xb6197ae1,0xb62c2295,0xb6eb9e8f,0x367aeed9,0xb6625261,0xb813798d,0x3a05dc77,0x3a621021,0x3aa67635,0x3ad2ddae,0x3ac89d2e,0x3a904a52, +0x39bbacab,0xb81a2bfa,0x38cd8a2a,0x39e34bb8,0x3a8a5378,0x3a4641f1,0xba19f5af,0x39ba3b9f,0x3a120f99,0x3a2186eb,0xb8d67470,0x3a170913,0x39c20dfc,0xb90a81c2,0x381ec4ef,0xb7807f39,0x3703bc76,0x33f46d37,0x35a1b633,0x35044e7e,0x3532067f,0x355ab937,0x354c90d9,0x35c78868,0x35035efb, +0x36611f73,0xb365566c,0x36ba1282,0xb7696352,0x386658f3,0xb9f12b97,0xba8e9fd4,0xbac80b96,0xbaef6dfa,0xbadec0e3,0xba88e7da,0xb8bfde77,0x3a72071c,0x3a95aacc,0x39eee112,0x38c73fdd,0xb9632130,0xba1dadce,0x39989907,0x3a50b019,0x3a91be56,0x3a825cf2,0x39880706,0x39ea70c0,0xb6f3657e, +0xb7920162,0x375d4108,0xb6f30171,0x355247da,0xb6033200,0xb4d54d2e,0xb58dc141,0xb52f9372,0xb58eb39a,0xb54bc408,0xb5da3095,0xb4107da7,0xb6b6c110,0x371b412d,0xb7951653,0x36648323,0x3993e9a3,0x3a6893fe,0x3ab0f90e,0x3ae0a89f,0x3ad414ee,0x3a70554b,0xb96c81f0,0xba980d9e,0xba9b6882, +0xb91549a0,0x3a2763ab,0x3a5786e0,0x3a14f672,0xba0e81eb,0xbaa5823d,0xba93d63f,0xb99bb40a,0xbab1ef27,0xbab92d3d,0x398fefb4,0xb8a28ee1,0x37fb087f,0xb7167d0f,0x36ecd88e,0xb527c2c2,0x3634735c,0x3575ac6d,0x35d2f18a,0x35a773ed,0x35d40176,0x35cb1d6c,0x35c83787,0x368312ca,0xb6957019, +0x36ae38b6,0x37a3358b,0xb9cdf494,0xba076d73,0xba221f1e,0xba2f5292,0xba0e0627,0xb98fca80,0x3837c71c,0x3a91d0c7,0x3abce299,0x3aab2b88,0xba2e436a,0xbab43dd1,0xba43b84d,0xb901da4d,0x3a259316,0x3ac0c5fe,0xba27f182,0x3ae6c35f,0xba57031d,0x38b0e930,0xb7c3f5e8,0x376928b4,0xb74e6c78, +0x3554cba7,0xb6bc8916,0xb612e1fc,0xb661be34,0xb61a2908,0xb63bf584,0xb6337203,0xb650eb85,0xb61c7c1c,0xb6d15348,0x36427698,0x3684ca96,0xb8930f89,0x3a0b2eb0,0x39b764d7,0x3982be79,0xb5f98274,0xb9111570,0xb9a8636d,0xba1dac31,0xba2d179c,0xba3c080b,0xb9dd9676,0xb9843ee2,0x39a0af37, +0x3a7ee623,0x3ad2715e,0x3b07308d,0x3b26b936,0x3b22941f,0xb9f1063a,0x3985cd0c,0x386bd385,0xb8a62407,0x380fc926,0xb5ec04cb,0x3746a022,0x36a473b5,0x37074f5d,0x36b39c4f,0x36bc25d4,0x36b2b83e,0x36c7a149,0x36c39104,0x36c8f2e7,0x370cfa19,0x36cf7b41,0xb808be37,0x37b1e046,0x3a107c67, +0x39ee8788,0x39f0fbf8,0x39ae2965,0x39720574,0x38793969,0xb917cb4b,0xb9937d76,0xb9abab6f,0xb9b5bd05,0xb9c3ba89,0xb9f928af,0xba19030a,0xba56830b,0xba629a7c,0xba54af36,0xba48d071,0x39fac0f7,0x3a2a02b8,0x38ed7e4d,0xb776fa2f,0xb6fd11a3,0xb7e07615,0xb709ba40,0xb791127a,0xb77bec02, +0xb75e3168,0xb7458f38,0xb74a05fc,0xb75d1c12,0xb75938b3,0xb74dd635,0xb7863d3c,0xb7f973f1,0x3885f3cb,0xb8395f8e,0xb9b7cdf3,0xb9a794c5,0xb9b8408a,0xb9bc2836,0xb9d88779,0xb9f0a08b,0xba070acb,0xba024d65,0xba03cd33,0xba056b38,0xb9c204a8,0xb9748a54,0xb8b53de9,0x38786d3b,0x3947bb4f, +0x39a9df17,0x39f91eaa,0xb9881e50,0xb9639809,0xb921d63b,0x3818f792,0x382210d0,0x385c4ae6,0x37998fca,0x3835062d,0x382158d7,0x3821655c,0x381913a6,0x3815bba0,0x380525ef,0x381a974d,0x37845f4b,0x385a0b22,0x38685f6f,0xb71e104b,0xb9747042,0xb98ade96,0xb988aab3,0xb9a0b4bb,0xb9a87e1b, +0xb9b8bc04,0xb9c16c21,0xb9cdb497,0xb9be6a6a,0xb9b1c5fc,0xb9ad9b38,0xb9ad9191,0xb9b4e79b,0xb9be0caf,0xb9b49134,0xb9a94cd7,0xb9a87afc,0xb99a3c01,0xb97aa3ca,0xb96ab81d,0xb99c615d,0xb9a05823,0xb9aab609,0xb8684afb,0xb8afca36,0xb8ac782b,0xb8b3f11b,0xb8ae9846,0xb8adb151,0xb8a8fee8, +0xb8a8e52d,0xb89d9a1d,0xb8a5f29e,0xb885a989,0xb9a6bd4f,0xb9a3ddb8,0xb99ea475,0xb9932909,0xb9a2f025,0xb9a554bf,0xb9abe7a7,0xb9affca9,0xb9b4c18c,0xb9bd9fb2,0xb9b886f6,0xb9b547ac,0xb9ad7b32,0xb9a7b2a9,0xb99eaa1d,0xb9964c00,0xb990d258,0xb98c3f60,0xb983e3a2,0xb9807b76,0xb9b9c6db, +0xb85c765a,0xb846e7ed,0xb823b443,0xb8af66fa,0xb8c5e684,0xb8e2d3aa,0x37002bde,0xb42b1a03,0x37e191a1,0x37e7bbaa,0x37e726d4,0x37ee68ae,0x37fdb67d,0x380914ff,0x380f7df6,0x355bb068,0x37090d64,0xb8edc93d,0xb8aa6c74,0xb87f2203,0xb7f8cebf,0xb85267d6,0xb8557b64,0xb87d163e,0xb846b846, +0xb83c2f17,0xb8485004,0xb8440b69,0xb853b7ba,0xb88bd308,0xb856003c,0xb83548cd,0xb7b4ae9c,0xb82ded42,0xb8367374,0xb82670e8,0xb8285e65,0xb8171cf8,0xb8973992,0xb8b3e774,0x37f5f2b8,0x380ca25b,0x370b42a1,0xb50d0a2a,0x35d919a4,0xb66bb543,0xb6023b00,0xb5f7e838,0xb67f24c5,0xb6ebb6e3, +0xb6782944,0x368cdcd6,0x3728073c,0x37f7252b,0x37f2a79c,0xb884ea15,0xb835c327,0xb898bdf9,0xb8cbaf3f,0xb8eb1858,0xb8a3eca2,0xb8804a72,0xb883e77d,0xb854b9b1,0xb8867f21,0xb8e658a7,0xb89c7c66,0xb84f9c2e,0x35ed6fac,0xb8262dae,0xb84c23a8,0xb8197ffb,0xb82f616f,0xb7bb5193,0xb8f48699, +0x37c8b07a,0xb7149395,0xb6266cd9,0x3575d349,0x367c9565,0x35a38225,0x35dc89d7,0x35ca215d,0x35623d63,0x35ef0bfe,0x3658d221,0x364e0eff,0x363a938c,0x3616e084,0xb70d3ba1,0x3597ae1b,0xb5faeb1e,0xb7ea1b0b,0xb865e578,0xb8afa1be,0xb8fa024d,0xb8679dfd,0xb80cfc30,0xb8583ace,0xb846d9c3, +0xb8a427db,0xb91c7aa7,0xb8918bbc,0xb80ce30b,0x38968a71,0xb81380f2,0xb8095aa3,0xb585c577,0xb7eefe94,0xb83386da,0xb8f10db9,0x37d8e576,0xb63ba20f,0x373a44ea,0xb6083e1b,0xb57f7b91,0xb5816e89,0xb50fe62d,0xb5426a9a,0xb50be0dd,0xb5500ce1,0xb5b56f85,0xb5749d23,0xb61d9248,0x3658c982, +0x3607a5e3,0x372ad5c1,0xb6c09250,0xb8458431,0xb918bbe6,0xb96c7a58,0xb9903c27,0xb928f7b1,0xb8b6c8fc,0xb8b40c93,0xb8727f17,0xb9015939,0xb986ecc5,0xb926b64c,0xb85a1e20,0x38d756c3,0xb81ae89d,0xb895ee7f,0xb73052ab,0xb7e740c3,0xb78fc033,0x377615dc,0xb728f63a,0x37920aec,0xb73b5ac2, +0x360f6a32,0xb4c74ac7,0x3584bf34,0x3383f38c,0x350734f1,0x3454d2f6,0x3517032a,0x34aefae3,0x359667bc,0xb459e42a,0x359c12a9,0xb708e7c9,0x378c7d46,0xb81a6b33,0x3900c1cc,0x3990db63,0x39ade150,0x39d62d02,0x399e5642,0x3949ee9b,0x3894c76c,0x37439837,0x38807787,0x3911533d,0x39921598, +0x3963a9f9,0xb8aca7ac,0x39049e5f,0x3919c199,0x38fd9744,0xb75762b1,0x39263859,0x38a83147,0xb83b28ef,0x37def7a9,0xb71c87dd,0x36a56d3e,0xb6249050,0x350d9f40,0xb52d276b,0xb3995728,0xb4b12894,0xb44fbc1d,0xb4f8cc43,0xb44676df,0xb56be68b,0x35bddb9d,0x337211a1,0xb531d842,0x37ca0d31, +0xb8eb3708,0xb97ed7f3,0xb9ab0e56,0xb9bbcd84,0xb9a40b5b,0xb932f144,0x3752800f,0x395e6f00,0x397c23cc,0x38b042aa,0x3725f178,0xb848dfc7,0xb9049817,0x38dea771,0x395de5f4,0x3980f9d0,0x39594f41,0x37f6d837,0x37af9f29,0xb5308bb0,0xb681d1fb,0x35329243,0xb5704ad7,0x3521539e,0x34c3e5d6, +0x34b7a24d,0x34a45ca2,0x34822264,0x34b1ac8d,0x34865633,0x350e466d,0x33d7f9e1,0x3444b480,0xb62dd5ef,0x36ab3195,0xb78e2731,0x3887980b,0x395eb17c,0x3996e06b,0x39bba755,0x39a63ec9,0x39353145,0xb83fc098,0xb96b5c09,0xb9587e60,0x3818dec9,0x3936823d,0x395963ab,0x392bf715,0xb8f78910, +0xb98b55df,0xb944fc53,0xb870cc02,0xb992d61d,0xb93ccd18,0x3877cab4,0xb78eb476,0x374257aa,0xb6443c9f,0x353e7a04,0xb5ac38fd,0xb4c3a333,0xb5208d50,0xb4e9cf4c,0xb4d64bf4,0xb533fcec,0xb45d144c,0xb5ae3b5b,0x35ed35aa,0xb57fbfc4,0x36756bd2,0x36ab9e43,0xb858590d,0xb8a34073,0xb8ca4060, +0xb8bb84f0,0xb899a1e1,0xb6ee440f,0x38a5bfb4,0x39a21c3a,0x39b151a6,0x396f0f34,0xb93d814a,0xb99a7f94,0xb8c237cb,0x3827614a,0x3952ea8c,0x39c3c6bc,0xb8e54cb7,0x39f3e176,0x36e975a9,0x35585022,0xb43fb043,0xb6d68b55,0x349aa3be,0x357b4024,0x35d2ad99,0x35962cb8,0x35934620,0x354ced34, +0x358da6c3,0x3535def1,0x35deed54,0xb46b01dd,0x362f048c,0xb727d4c8,0x376ede07,0xb7f870a9,0x38a1f446,0x388d925c,0x38008d9b,0xb71e1b0a,0xb83b4d6b,0xb8a3378c,0xb906df2d,0xb9100ac4,0xb911c117,0xb8939ee3,0xb6a2bb58,0x39112004,0x39a4f07c,0x39ec332a,0x3a0fd778,0x3a2e546f,0x3a1bae4e, +0xb8f78811,0x365a6fab,0xb7e68073,0x380372c3,0xb6df122f,0x3678a531,0xb698be79,0xb60a91cf,0xb64983a3,0xb60663a0,0xb5f87b17,0xb5f25613,0xb618609a,0xb5e10ff8,0xb6596428,0x360b2cbd,0x35aa99df,0x378cd2af,0xb8279428,0x38d6166c,0x38ec4f84,0x38eaf4e7,0x38c81dff,0x38904c6c,0x380babaa, +0xb6d28bfb,0xb811f6a1,0xb847ea51,0xb8774bb6,0xb89740b5,0xb8cd485e,0xb8f87546,0xb940fff1,0xb95f6f11,0xb95aa3a9,0xb9596098,0x390c3bc0,0x3931f890,0xb83aa357,0x371c9f1d,0xb6fcc059,0x36b58e7b,0x36a37a3f,0x36e921db,0x36ce6870,0x36abc2ce,0x3680482c,0x36987efd,0x369bad2f,0x36a967ad, +0x3681208b,0x35baa906,0xb741fd90,0xb71c92e1,0x37db224d,0xb88a06be,0xb86b7acd,0xb88c3c86,0xb88de519,0xb8a76016,0xb8b9d2df,0xb8d41378,0xb8cf8f46,0xb8d50044,0xb8da61fe,0xb891e501,0xb81792de,0x350889bb,0x380e3d07,0x388aac63,0x38cdea0a,0x39073bbe,0xb85577b4,0xb7afda8b,0xb7da4796, +0x37eaf0ff,0x37eecacc,0xb56f12b2,0xb728d325,0xb74b2f0e,0xb78a4582,0xb76d4239,0xb76fd127,0xb75ea834,0xb773d055,0xb73aed53,0xb71d0657,0xb540ccde,0x37cba90a,0x383db4d4,0xb87f00c0,0xb8c32151,0xb89dca7d,0xb8b8043d,0xb8b7adfe,0xb8c301df,0xb8c680e9,0xb8cd3c75,0xb8b49ce9,0xb89f1fcc, +0xb892db74,0xb88af9a7,0xb88a6cbe,0xb88a41a2,0xb8827f14,0xb873571b,0xb876e7d2,0xb854fb48,0xb83c0222,0xb835053a,0xb8970a07,0xb89728c6,0xb8b6afe9,0x3804ec84,0x37ad7180,0x3813e900,0x38191b72,0x3817282a,0x38186b27,0x3817a41a,0x381b07dc,0x381b744b,0x37991c1f,0x38095eed,0xb8cf5366, +0xb8bc0110,0xb8d19251,0xb87aec31,0xb89b795a,0xb89af234,0xb89ebc16,0xb8a175f3,0xb8a3ff76,0xb8ab6f04,0xb8a32bc6,0xb89d5000,0xb892c0d3,0xb88a5152,0xb87e46a7,0xb8674c9c,0xb8618dd6,0xb858a586,0xb84b003f,0xb841aeb8,0xb89d064e, }; -const uint32_t orange53_rom_AlphaL16[578 * 43] = { -0x3f1ed73c,0x3ecd65b6,0x3eee275f,0x3edb0620,0x3edd0b93,0x3ee377eb,0x3ee7eb04,0x3eee4d8f,0x3ef3332b,0x3eead0c5,0x3eea6fbb,0x3ee3a5fd,0x3ede1e74,0x3edc126d,0x3edb84f0,0x3ed51f8a,0x3ed6cd0f,0x3ed07d43,0x3ed0ebb7,0x3ec9707e,0x3ed1ec69,0x3ea54c05,0x3e885534,0x3ddb86df,0x3eb39ec8, -0x3e89113c,0x3de6d8e1,0x3defc4df,0x3e02881a,0x3e0fce40,0x3df0a230,0x3dec3c65,0x3e1c6492,0x3e7df43f,0x3ebcf617,0x3e1e1f1d,0x3e78d4eb,0x3e500046,0x3ef9f501,0x3f0d26fb,0x3f0ee8bb,0x3f18ae39,0x3f23df1c,0x3f2f57b7,0x3f328533,0x3f203122,0x3f272719,0x3f1c6dbb,0x3f12b01c,0x3f10e88e, -0x3f0fe0ab,0x3f008181,0x3f081791,0x3f001701,0x3ef44a51,0x3eeb7f87,0x3ef5ee58,0x3e955f42,0x3ea8b771,0x3e907c1a,0x3e9a8ba3,0x3eb5baf9,0x3e8880b5,0x3ea4a6b5,0x3e897586,0x3e9d4913,0x3e9e4161,0x3ecb1486,0x3e9aa96e,0x3ea0ca14,0x3eb5131e,0x3ea6d503,0x3ebc2030,0x3eb0e51c,0x3f18ff45, -0x3f144f05,0x3f24b159,0x3f33d5a8,0x3f51bbcf,0x3f57598d,0x3f60b3ff,0x3f53d136,0x3f4556d7,0x3f38d32f,0x3f30909a,0x3f23aa78,0x3f178131,0x3f13ee52,0x3f0695cb,0x3f04e452,0x3eeb0600,0x3ee9c4b3,0x3ebdfd68,0x3e63ca5a,0x3e836125,0x3e936129,0x3e54a09d,0x3e58bb72,0x3e7b0595,0x3e553aa1, -0x3eaa99d2,0x3e40db0d,0x3e872c05,0x3e585cdd,0x3e8f02c2,0x3e9b5633,0x3e9baeec,0x3e8958dd,0x3ee1cb67,0x3e6dc61e,0x3ed0226f,0x3f1d264c,0x3f24b3a2,0x3f488dca,0x3f6aefd9,0x3f813cf7,0x3f8043dc,0x3f705645,0x3f617993,0x3f513f7a,0x3f3e0ad3,0x3f2e1d56,0x3f201035,0x3f0fa976,0x3f061bdf, -0x3efd815c,0x3ed84dc9,0x3ec978f2,0x3ea0a55c,0x3e6631b5,0x3e6cb5c4,0x3e1e9e78,0x3e45ffe2,0x3de1ba47,0x3e174731,0x3d941dae,0x3dcc37f5,0x3de8c9f8,0x3e34d822,0x3dff2c08,0x3e3f7b45,0x3e0bf382,0x3e538734,0x3e823d55,0x3e9e4980,0x3ec7f581,0x3f042de1,0x3f2df4a5,0x3f3d2d89,0x3f62ed7f, -0x3f8d5a3d,0x3f9c5a12,0x3f9e79b0,0x3f923584,0x3f82bda8,0x3f6d2763,0x3f59004e,0x3f41e841,0x3f2baf45,0x3f2033a7,0x3f10acd8,0x3f0203c2,0x3edbdea0,0x3ec0b09e,0x3e9213ef,0x3d69fbb3,0x3e0ee76b,0x3d935d8a,0x3d84a645,0x3d43b374,0x3d1620ec,0x3d4f3577,0x3d1cbafc,0x3d4a74db,0x3d2871b6, -0x3dce67c3,0x3dbb0d0b,0x3e0b5d61,0x3e5a90c4,0x3e4cbc4d,0x3e7a7eef,0x3eab4406,0x3f00e22d,0x3f3d84ad,0x3f5c22ca,0x3f822cea,0x3f8a4c19,0x3f953e8d,0x3f9ebcd8,0x3fb359a2,0x3fb67bd7,0x3fa45d66,0x3fa25e6f,0x3f9d6f8a,0x3f8f4969,0x3f82cbb9,0x3f5bafb8,0x3f4c6a70,0x3f259cbe,0x3f06bf78, -0x3ed3f868,0x3e67bbd0,0x3e6f2b26,0x3dd2efe9,0x3e068f72,0x3d634e76,0x3d77a1f6,0x3d2f6fcc,0x3d963feb,0x3dc0e7d9,0x3d947f9f,0x3db90238,0x3dd8a78b,0x3e4315ab,0x3e3906ae,0x3e286ee7,0x3ecfcf49,0x3ef0a9a5,0x3f20d1d9,0x3f50ab70,0x3f7725bf,0x3f90f06f,0x3f9cfd56,0x3fabcd91,0x3fa6c0af, -0x3fb2b985,0x3fa998cc,0x3f9e9577,0x3f9b74c7,0x3f8b7e74,0x3f84fde5,0x3f6994ba,0x3f515c5a,0x3f3d5c3a,0x3f1e3d1a,0x3f114359,0x3ec71e5e,0x3e59d13c,0x3e6e0b11,0x3e3aec05,0x3e07be28,0x3db32453,0x3d94475c,0x3d7fc356,0x3d078725,0x3d56beb6,0x3d8edee0,0x3e002689,0x3e079250,0x3e0878aa, -0x3e6cb30c,0x3eb33392,0x3ead884e,0x3ee5dcbe,0x3f39fd5b,0x3f8a9380,0x3f8fba9d,0x3fa36435,0x3fa63431,0x3fa587fb,0x3f99fa32,0x3fa61df1,0x3fa61cb7,0x3fa45894,0x3f983285,0x3f9289ec,0x3f823616,0x3f5dd262,0x3f47bc54,0x3f307c9b,0x3f15c938,0x3f005f2a,0x3ecac304,0x3e95fc90,0x3e737660, -0x3e2cd649,0x3e4abd40,0x3df8c784,0x3e0f1917,0x3d540180,0x3e0877ca,0x3df48def,0x3da374d4,0x3dc38470,0x3e0d8cbf,0x3e7a69ee,0x3e9aa626,0x3eb956d9,0x3ea2e44d,0x3eed0235,0x3f4dd56d,0x3f95f940,0x3f9ee386,0x3fa98077,0x3fa067d5,0x3f9f5fd9,0x3fa9f2a2,0x3fa0a4c0,0x3fa40984,0x3fa7560b, -0x3f9c6622,0x3f8ec81b,0x3f762f1a,0x3f5f01d6,0x3f36edee,0x3f20484f,0x3ef5f2bc,0x3eede927,0x3ea678ec,0x3e8d608b,0x3e67f0a7,0x3e96143d,0x3e12e75c,0x3e4232c4,0x3db74c47,0x3deee445,0x3d974810,0x3da9be34,0x3e382174,0x3d994e08,0x3e23e012,0x3de16403,0x3ea3fc09,0x3e90bf82,0x3f0cb564, -0x3f0536fe,0x3f87ec62,0x3f96fff3,0x3f9e0fb4,0x3f991f84,0x3fa09dea,0x3faef41e,0x3fb7e99c,0x3fb61f69,0x3fae35ca,0x3f9c69ee,0x3f938c00,0x3f8a6143,0x3f722cd5,0x3f5d53a7,0x3f3ba124,0x3f144e25,0x3f0242bd,0x3ee6d4e5,0x3ec4cda1,0x3ea15148,0x3eb9886e,0x3e29f018,0x3e4945e0,0x3e2cb525, -0x3dfe11ee,0x3dd78762,0x3e20bb84,0x3e7da43c,0x3dd1bcea,0x3dbc8ea0,0x3e17853e,0x3e46a1c0,0x3ea764bf,0x3e518d5b,0x3eeda9c6,0x3f30e315,0x3f54359e,0x3fa430ae,0x3fa7448b,0x3fa6703a,0x3fa613de,0x3fa678c4,0x3fb1cff8,0x3fa27f29,0x3fa389a0,0x3fa3348c,0x3f91c767,0x3f80118d,0x3f670704, -0x3f38a04a,0x3f180ad6,0x3f00e833,0x3f08a83b,0x3f0b40e0,0x3f123a08,0x3ea37d46,0x3e65a6c9,0x3e8e76dd,0x3e3d5b87,0x3e5c2738,0x3e0fc451,0x3d78ae9d,0x3e04a728,0x3e035263,0x3e23a581,0x3e7175f6,0x3e89f4bd,0x3ec0063d,0x3e08be16,0x3ecfb381,0x3f075216,0x3edf1452,0x3f8009e6,0x3f8d3533, -0x3f8ea29f,0x3f92575b,0x3f99e7e5,0x3f9cbf96,0x3f9a64c4,0x3f985f46,0x3f8c4a0b,0x3f85b147,0x3f789284,0x3f63d660,0x3f4ada03,0x3f3049ab,0x3f1f0262,0x3f0ccac4,0x3f1b9938,0x3f2e6b51,0x3ee9ce2a,0x3e9b26a9,0x3f0d004d,0x3e982cc6,0x3ea7b911,0x3e6bf933,0x3d974de4,0x3e92ba4e,0x3e1595fd, -0x3e865adc,0x3df335b4,0x3e5ceddf,0x3e7bc921,0x3e637e16,0x3eca47f4,0x3ed5ef2c,0x3f237da2,0x3f1740fb,0x3f3d6472,0x3f835be4,0x3f815c28,0x3f8864ab,0x3f898835,0x3f8d6dff,0x3f8e7674,0x3f85caf2,0x3f7e816d,0x3f72b430,0x3f5b7a44,0x3f4ac27d,0x3f3634a1,0x3f2bee6a,0x3f1f1cd7,0x3f17c195, -0x3f15e2a5,0x3f23309a,0x3f1f03cf,0x3ea9b850,0x3e844f2f,0x3ed037d0,0x3e68a4c6,0x3e7cb475,0x3e79550b,0x3dc207e9,0x3e332ab4,0x3e82a69a,0x3e7fb4a8,0x3e780b04,0x3e323f11,0x3eb0b5ff,0x3ea2ee5f,0x3eba89e7,0x3ee2ff5a,0x3ed19e7b,0x3f553e04,0x3f5f47f2,0x3f649cb2,0x3f7f394b,0x3f7a98be, -0x3f800322,0x3f81a29e,0x3f77fd12,0x3f6dec89,0x3f608f6d,0x3f579d55,0x3f461e1c,0x3f333028,0x3f32d113,0x3f273801,0x3f24d2bb,0x3f1a0ab7,0x3f28a74e,0x3ef30e6a,0x3eec99c1,0x3ed13df1,0x3edeb16d,0x3eb90918,0x3e9e687c,0x3ebe628d,0x3ea0488b,0x3f156c49,0x3e44d719,0x3eeaf073,0x3e8b27d4, -0x3ec3c48d,0x3ed98740,0x3eb6b9e2,0x3f052a79,0x3f26120d,0x3ea2cfe5,0x3f553e05,0x3f51b55b,0x3f4fe96a,0x3f43c841,0x3f5d7a2a,0x3f5d6892,0x3f6d0fc1,0x3f6442d8,0x3f5f4141,0x3f596079,0x3f542557,0x3f4f550d,0x3f48e664,0x3f425701,0x3f3c6fb5,0x3f443987,0x3f39a807,0x3f38688b,0x3f3b1d22, -0x3ea78582,0x3efde347,0x3ee542ae,0x3f0f2b45,0x3ef77fb5,0x3ee4590f,0x3ef118f7,0x3ee01630,0x3ee88f1f,0x3efd67ac,0x3f26ec92,0x3eb477bd,0x3f10bb7e,0x3ef7d0e0,0x3e8e1291,0x3f45a50f,0x3f0a3ca1,0x3f39339c,0x3f2b64e3,0x3f300deb,0x3f2fc2bd,0x3f3468a3,0x3f325e1d,0x3f36abd9,0x3f321a18, -0x3f31061d,0x3f2f1783,0x3f2c5dee,0x3f29abac,0x3f2846b0,0x3f2736be,0x3f274471,0x3f2721ef,0x3f24bf72,0x3f1eaa30,0x3f344a2c,0x3f06c48d,0x3ec051f3,0x3e05f0f4,0x3f048708,0x3ebb7ea9,0x3e12333f,0x3e00ff8e,0x3e17929c,0x3e26d87e,0x3dd01cc1,0x3dd1435c,0x3e3d5b57,0x3edd7319,0x3f0caaec, -0x3e37042f,0x3eb04ff8,0x3f821f55,0x3ece82fb,0x3e8b0342,0x3e55f174,0x3e81869d,0x3e7c3846,0x3e7cfd77,0x3e766c12,0x3e73298e,0x3e6a22df,0x3e68dae9,0x3e6df289,0x3e6e9c3f,0x3e6d8a30,0x3e6f7e68,0x3e73936b,0x3e6b6d51,0x3e6fbb59,0x3e6c0fe7,0x3e723bac,0x3e773526,0x3e64a59b,0x3e9b67cb, -0x3eb196fe,0x3ee053f6,0x3e8c6214,0x3ead8e0e,0x3edd776a,0x3edbaa11,0x3ed8dffc,0x3ecfcc26,0x3ee0e688,0x3edae19d,0x3ed87b4d,0x3eb5035f,0x3e88f269,0x3edc19df,0x3ec1b067,0x3f0fc3d2,0x3eb81a7a,0x3eb67a72,0x3ead8cd7,0x3eac5ddd,0x3e9fbf6e,0x3e9e1c5d,0x3e90fd05,0x3e8b4a6b,0x3e98c006, -0x3e971e15,0x3e95c53f,0x3e9ab472,0x3e9fe597,0x3e8e6899,0x3e9abadc,0x3e9549a2,0x3e9a1560,0x3e9bb39e,0x3e92000e,0x3ed813fb,0x3ec0f7fd,0x3ec515c7,0x3eb549d5,0x3e938926,0x3ebe3ce4,0x3eb564cc,0x3ec6faf1,0x3eaf7a4a,0x3ebfe023,0x3e6fdf79,0x3eba1a8e,0x3ebc6283,0x3ec136c5,0x3ed34f39, -0x3ec63183,0x3efc041e,0x3ec1a566,0x3ec851f5,0x3ec9b633,0x3ec05839,0x3eadec7e,0x3e9438b3,0x3e780186,0x3e8842d1,0x3e8b9c95,0x3e964f72,0x3e9d1458,0x3e9c16a7,0x3e9a49c3,0x3e941a7c,0x3e8f3aa5,0x3e926b54,0x3e9ecff6,0x3e9790d1,0x3eb05dcf,0x3ecfb382,0x3eb5b670,0x3e9ba798,0x3eabf804, -0x3e9d5568,0x3e8ce658,0x3e9032f4,0x3e67e555,0x3ea3e4ec,0x3e81eca1,0x3e9f88ad,0x3e9752fe,0x3e9f14e9,0x3eb1baa7,0x3ecccbd5,0x3eb38df8,0x3f0b7f4d,0x3f0a90cd,0x3ee05e60,0x3ef0114a,0x3ed52d04,0x3ea8c600,0x3e93106c,0x3e4b6f46,0x3e7944f2,0x3e8ade40,0x3e964ec3,0x3e9db378,0x3e9f4909, -0x3e9fd131,0x3e8d3794,0x3e8d75c5,0x3e8fefb0,0x3e9cac7a,0x3ea00529,0x3ea48222,0x3eaec19f,0x3e8a736e,0x3e92557c,0x3e6c1b85,0x3e81d736,0x3e4536bb,0x3e7d1f0d,0x3e612419,0x3e767d11,0x3e3c67ec,0x3e5a0e8a,0x3e6d37b0,0x3ea0ff33,0x3ea7d026,0x3eaecb5c,0x3eccde05,0x3f041985,0x3f144325, -0x3efa9193,0x3f05c94f,0x3ee92536,0x3eb6f617,0x3e854118,0x3e327cc9,0x3e6d0c5a,0x3e88951e,0x3ea2912b,0x3eade38a,0x3eac7828,0x3ea7bb53,0x3e964fc9,0x3e8d8284,0x3e91e2b8,0x3ea2b2c5,0x3ea88cf3,0x3eac288d,0x3eb89c38,0x3e89314a,0x3e6bb8fa,0x3e457975,0x3e1e7a47,0x3e083cc4,0x3de6c331, -0x3df59dfd,0x3e0f3af6,0x3e11d662,0x3e184dbe,0x3e63b3fb,0x3e860dcc,0x3e9e8c92,0x3eb6256f,0x3ef0a8ae,0x3f244408,0x3f2a5990,0x3f24c99e,0x3f2accca,0x3f24f6d4,0x3f22011d,0x3f16a2d6,0x3ef88ab2,0x3e8d697c,0x3e10dade,0x3de306af,0x3ccb1185,0xba009676,0x3d02fb83,0x3d3e4bcf,0x3dec8ed9, -0x3e33220c,0x3e8999a8,0x3e9df91e,0x3e9adccf,0x3eb77517,0x3e91abf2,0x3e8ccd86,0x3e4a9ea8,0x3e377f85,0x3e162633,0x3e3631bb,0x3e2b4bb5,0x3e2bad10,0x3e15d772,0x3e3982e9,0x3e7780fd,0x3e981e0f,0x3ec6d5a6,0x3ef02b41,0x3f00a02a,0x3f313cb1,0x3f30e2d2,0x3f1c23c8,0x3f267c28,0x3f2acc5a, -0x3f1ea941,0x3f0feffb,0x3f038e73,0x3ed3adbd,0x3eacab7d,0x3ebe4938,0x3e9289fa,0x3e78e7e1,0x3e69977f,0x3e78e9cc,0x3e8f5eac,0x3e917546,0x3ec197b3,0x3ebbf9ec,0x3ed6c53a,0x3ecdd9b3,0x3e9a26c6,0x3e77a82d,0x3e47fde0,0x3e229186,0x3df346a6,0x3de75803,0x3e1a9841,0x3e6c8b46,0x3e5d333f, -0x3e80d055,0x3eaa4ad1,0x3ec6ea44,0x3ee3274a,0x3f026b13,0x3f284d00,0x3f4712b8,0x3f30eebc,0x3f072921,0x3f18ec71,0x3f10433c,0x3f2f56c1,0x3f4371a9,0x3f45bd43,0x3f27afb3,0x3f0600d3,0x3eb7fb01,0x3e96b290,0x3e58ae69,0x3e6cebb1,0x3e97bc06,0x3ea46606,0x3eb27328,0x3ed52f11,0x3ee0e4a1, -0x3ee6cc9d,0x3edaeecb,0x3ebf1d22,0x3ea7eaea,0x3e708090,0x3e56c323,0x3e46c752,0x3e7cf900,0x3e74ae4d,0x3eaeef53,0x3e8dfb2f,0x3e9741ed,0x3eadea1e,0x3ebddd21,0x3edeeffb,0x3f06de3d,0x3f299bc5,0x3f4f0561,0x3f2614c9,0x3ee68f37,0x3f003ad5,0x3f1700fc,0x3f32dea4,0x3f47854a,0x3f2e1ca9, -0x3f2cf6e5,0x3f08a121,0x3e962e6f,0x3e80ba98,0x3e5060e1,0x3e803830,0x3e90f096,0x3eb0af41,0x3eccc431,0x3eec6151,0x3ef42ed0,0x3efb1a7d,0x3ef34f08,0x3ee5951f,0x3ebf4753,0x3eadf6d5,0x3e8ee66e,0x3e93b8c0,0x3e8c3e68,0x3e9ab2f7,0x3f0c3ed4,0x3e982bfb,0x3e990cd6,0x3ea874d7,0x3ee40469, -0x3edfeeb9,0x3f16c808,0x3f0703f2,0x3f4e346d,0x3ec05b3b,0x3eb7ba86,0x3eea44a2,0x3f5068d8,0x3f324d37,0x3f1df1e6,0x3edf1ef6,0x3ecf9d6b,0x3ea357ad,0x3eb49916,0x3e86541b,0x3e8237ba,0x3e8fe868,0x3e98b851,0x3eab0463,0x3eda1940,0x3ef0a2ae,0x3ef067d8,0x3f0200a1,0x3f02d5f6,0x3ee2c020, -0x3ef8fb10,0x3ecbb86e,0x3eac9822,0x3eabe7a2,0x3e6b9caf,0x3e9376de,0x3f1c63ef,0x3eb47a91,0x3eb42a41,0x3ec660ce,0x3edd9eda,0x3ed5efc3,0x3f22e714,0x3f1e377d,0x3f0cf419,0x3efecf36,0x3e38f939,0x3ece44c0,0x3ed53f27,0x3f07b6ed,0x3f079693,0x3eca9381,0x3eb6bae7,0x3e7cbddc,0x3e3a016b, -0x3e4bafe2,0x3e875757,0x3e96f7d2,0x3ed46a1f,0x3ef72b97,0x3f0a77c9,0x3ef19c5f,0x3ee1fd21,0x3ecc39b9,0x3f07bf5a,0x3f0d3b26,0x3eda035f,0x3ee69252,0x3ebb5b8f,0x3eb0aeeb,0x3ecdbb80,0x3ec6c9b7,0x3ef4597f,0x3eca830f,0x3eb689da,0x3ea5054e,0x3eb43bc3,0x3f196d2d,0x3f06c2cd,0x3ef0c01b, -0x3f4ee663,0x3e87583e,0x3e8dc164,0x3eca517a,0x3f0357da,0x3f0ac239,0x3f0488f5,0x3edd4d73,0x3edf4a95,0x3ed5daa1,0x3ed8c686,0x3ec8c97f,0x3ed07562,0x3ee3abb7,0x3efb4ef7,0x3f05e3db,0x3f06039d,0x3ef6d51a,0x3ec07921,0x3f02214a,0x3f251c84,0x3ead3eea,0x3efbae55,0x3ec38f03,0x3ece1be3, -0x3eee4d22,0x3ea2b395,0x3ed67e81,0x3ebe728f,0x3eeeb1ff,0x3ed6f2d0,0x3ed202e2,0x3ef39f8b,0x3ecf9bc8,0x3efe2095,0x3edc22f0,0x3f20217d,0x3f04ecb7,0x3e90db6d,0x3ed80a3c,0x3ed9e8bd,0x3ee3343f,0x3eeaf700,0x3eea50d1,0x3ef71c2c,0x3efef69c,0x3f05e135,0x3f051cdd,0x3f0c14b0,0x3f116562, -0x3f124ea8,0x3f17a01a,0x3f12a6c6,0x3f082cf3,0x3ee1b414,0x3ec4ed76,0x3f1bb835,0x3f129224,0x3edc5d7b,0x3f06c78b,0x3eefb781,0x3ed7edac,0x3f0b0d74,0x3ef111e5,0x3ed20b30,0x3ee3f1bc,0x3eeecdd2,0x3eff636f,0x3eefc559,0x3f07ce60,0x3f1f7318,0x3f1d6163,0x3f46d61c,0x3ec3c93a,0x3ebbffb8, -0x3eda123c,0x3ed15693,0x3eced077,0x3eccde54,0x3ed0e806,0x3edd7185,0x3ee7b87f,0x3efbaca8,0x3f03ae02,0x3f0e7aa5,0x3f1742ef,0x3f1172bf,0x3f14b7c9,0x3f0c4270,0x3f096e3e,0x3ed031f8,0x3f0c762e,0x3f0e44b6,0x3f07eeb2,0x3ef35527,0x3efa7a77,0x3f027d8c,0x3ee7a8c9,0x3ef23982,0x3e85b96a, -0x3f18c7c3,0x3eb1e09f,0x3f099e50,0x3ee53463,0x3ef8fb1c,0x3f209042,0x3f0a4370,0x3ee33943,0x3f4f5f4d,0x3e7d0060,0x3eb2c35e,0x3ea3a55d,0x3e9f2e3f,0x3eb69f19,0x3eb1bd3b,0x3eb4b889,0x3ebc1129,0x3ec37027,0x3ec769e2,0x3ed395c1,0x3eda88ba,0x3ef7301c,0x3ee15f5c,0x3ece197e,0x3ecd33d2, -0x3ec91ac9,0x3ead4737,0x3ebb246a,0x3f39f427,0x3f1284a5,0x3f178126,0x3ef76366,0x3f01228d,0x3ee2217f,0x3f0519e3,0x3f01d199,0x3f0836e7,0x3f080549,0x3ea00e0b,0x3f22d06e,0x3efbac3a,0x3ef2e05e,0x3f44fc5b,0x3eb63167,0x3ecc9dcc,0x3e2a0759,0x3e7a03cf,0x3e661d54,0x3e606a46,0x3e6294a2, -0x3e5fe98f,0x3e65e46b,0x3e6cb6d4,0x3e76e1a3,0x3e808b7d,0x3e844107,0x3e85bd39,0x3e87bf79,0x3e81043b,0x3e82c4e9,0x3e81ed80,0x3e756640,0x3e7b5e2d,0x3e1e499e,0x3ec10b48,0x3f0dbd12,0x3f439407,0x3ebe40f4,0x3f08cb5e,0x3f398258,0x3f43a0b2,0x3f3839f6,0x3f369d31,0x3f474329,0x3f45bfd8, -0x3f351c0a,0x3efac9ff,0x3eab37df,0x3f40da9e,0x3f1d8423,0x3ecb97e9,0x3e37603e,0x3dc2aee8,0x3dcc8981,0x3dd29208,0x3dcd5312,0x3dc4b6ef,0x3dc29418,0x3dcc6fd4,0x3ddc796d,0x3de3eebf,0x3def6483,0x3df204ad,0x3def7f93,0x3df30fb5,0x3dfad3a4,0x3dfa6029,0x3e005d3d,0x3dfa93fc,0x3df7a597, -0x3df1085b,0x3df061cc,0x3ddd377f,0x3dcc617f,0x3db6e6fe,0x3de27b75,0x3dcd8e6e,0x3db1c630,0x3db79670,0x3dbc020b,0x3dbe3bf3,0x3db5384a,0x3da71e4c,0x3daed055,0x3db9898e,0x3dd79462,0x3dc14eb1,0x3dbdf3ed,0x3e08610e,0x3dfd3962,0x3de1ba0b,0x3dcde93f,0x3dcf8529,0x3dd58c71,0x3df49803, -0x3e1d0bf3,0x3e2530d3,0x3e347840,0x3e2b8a95,0x3e2786aa,0x3e2a5445,0x3e340437,0x3e2b5e95,0x3e36189c,0x3e2b6ef3,0x3e21cc00,0x3e1d0bb0,0x3e187313,0x3e0d99cb,0x3e153603,0x3e0cb862,0x3e057028,0x3e040793,0x3e0519e6,0x3e13f476,0x3e151e62,0x3e1073e7,0x3e0897f5,0x3dff7439,0x3dfa4e1d, -0x3df285e8,0x3dfd7f6c,0x3e067a76,0x3df99a25,0x3dca9ca3,0x3d7ccb2b,0x3d88236f,0x3d41ac98,0x3d09b225,0x3d1f29be,0x3d71698f,0x3df78795,0x3e16ff65,0x3e2e7863,0x3e327b84,0x3e2f29c3,0x3e362d93,0x3e3fe8db,0x3e4f87fe,0x3e4d69c5,0x3e4a0d74,0x3e350b3f,0x3e289bfd,0x3e21d80c,0x3e26454d, -0x3e2289f9,0x3e213e63,0x3e16a933,0x3e136798,0x3e055265,0x3e1b694c,0x3e236df9,0x3e25be71,0x3e0cc04d,0x3df6aded,0x3df8cd27,0x3de11ddc,0x3de95b63,0x3e14313d,0x3e0246ba,0x3e1650a2,0x3da090a5,0x3c2145b7,0x3b8d3be3,0xbc118347,0x3ca69bc1,0x3d7c11cf,0x3e27efb3,0x3e5083ff,0x3e672c4e, -0x3e521d3e,0x3e50cafc,0x3e4dbef0,0x3e69808e,0x3e6d4d52,0x3e6edf32,0x3e5c5c55,0x3e4ab123,0x3e3c4d87,0x3e2cde32,0x3e431333,0x3e33d617,0x3e2f1e4d,0x3e204a5b,0x3e1d96a1,0x3e02091a,0x3e220df0,0x3e24d7de,0x3e322cd4,0x3dfa6905,0x3dd422c5,0x3de11a6b,0x3dd253bb,0x3df6a999,0x3e07b7a4, -0x3ddfa81c,0x3d849c19,0x3c9abc4b,0xbd05b520,0xbd634db9,0xbdbf69ac,0xbda1d418,0xbc579cac,0x3ddc0a29,0x3e2475b1,0x3e4918a9,0x3e442256,0x3e3d2db9,0x3e46abba,0x3e60c4b9,0x3e82a563,0x3e84c36d,0x3e78e939,0x3e56bc40,0x3e47fd5a,0x3e460576,0x3e5d8cda,0x3e476039,0x3e43b830,0x3e2aef10, -0x3e26acfb,0x3e06f5f4,0x3e20a058,0x3e1d61b4,0x3e2e943d,0x3deabcdc,0x3dc19de5,0x3dd7f7bb,0x3dd54f74,0x3dc920ea,0x3e1c6c43,0x3e18c645,0x3e876dd6,0x3e14571f,0xbdca1248,0xbe2fba9c,0xbe921a91,0xbec0239f,0xbecdf96d,0xbea52ecc,0xbe17d8d8,0x3b5ec053,0x3dd38b1d,0x3e48be30,0x3e8b3ffb, -0x3e8fc5bb,0x3e94fca0,0x3e8b1fc1,0x3e916de1,0x3e65c488,0x3e56bc40,0x3e5f93b2,0x3e5a37ee,0x3e58b08a,0x3e4b8f37,0x3e32548f,0x3e1d99f1,0x3dc72298,0x3e1e2322,0x3e24936a,0x3e395d29,0x3e1a4d00,0x3e323dc8,0x3e691952,0x3e4d58df,0x3e73e5d5,0x3e9028fd,0x3e44c8d9,0xbb8c5fb9,0xbe0c89f4, -0xbe73ca81,0xbea54421,0xbf08a6cf,0xbf091068,0xbf07f4bb,0xbeef9d00,0xbed3154b,0xbe9474ea,0xbe64f66b,0xbdafba02,0x3cddda45,0x3e1a8bf4,0x3e6975bd,0x3e83beea,0x3e8d6e96,0x3e62b46f,0x3e4c8b2a,0x3e68c3de,0x3e601d9c,0x3e51c9b3,0x3e334602,0x3e2d9a69,0x3e180edc,0x3dee2653,0x3e27138d, -0x3e3f7e20,0x3e475a41,0x3e3efa6a,0x3e201662,0x3e0aaad4,0x3e2565bf,0x3dec3fe3,0x3d3d7ff6,0x3d63ef1b,0xbddd261b,0xbe7fad19,0xbee2e4dd,0xbeff4188,0xbf2faff1,0xbf3e961a,0xbf5686b9,0xbf591777,0xbf3fb427,0xbf1b8fcb,0xbed00ec0,0xbe8c70c1,0xbdc25fae,0x3c8d810d,0x3d811142,0x3e20d138, -0x3e569353,0x3e700a14,0x3e790284,0x3e7e0d1c,0x3e8e9d82,0x3e78ac30,0x3e6b6b82,0x3e4b6aa4,0x3e3d63b7,0x3de39fb0,0x3e0945a3,0x3dfc4c9d,0x3e96e905,0x3e29b744,0x3e151242,0x3dfb100f,0x3d76bc0c,0x3c83a533,0xbcee0804,0xbcb21016,0xbe74f560,0xbeb9475b,0xbf0e5047,0xbf234f1e,0xbf4de2c9, -0xbf5418d0,0xbf69aebd,0xbf5ec276,0xbf53600e,0xbf2f0f49,0xbed733ca,0xbe97e4b2,0xbe0e8a23,0xbd895e04,0x3d4383b3,0x3ddfded9,0x3e3dc793,0x3e71e02c,0x3e73a88b,0x3e82667f,0x3e80d869,0x3e58c0cf,0x3e2191de,0x3e3ee35c,0x3e21f307,0x3dd3179b,0x3e102e65,0x3e2713cf,0x3e7ed6c0,0x3dfab0aa, -0x3e1b825e,0x3dc1e2aa,0x3dde6276,0xbc888c5d,0xbd36a3a1,0xbe5672ca,0xbeb2bccf,0xbeecb387,0xbf0f8794,0xbf3174af,0xbf715b87,0xbf52faa5,0xbf43c7d7,0xbf200372,0xbf11b72c,0xbee64691,0xbec852d7,0xbe6f4a6c,0xbde7d35d,0xbce4684f,0x3d983af2,0x3e228148,0x3e389cec,0x3e541789,0x3e4c042f, -0x3e3d7614,0x3dfbe393,0x3db594b8,0x3de7c160,0x3dd4e1c5,0x3df6d3c6,0x3de5de5b,0x3e57c8cf,0x3e3d1ca9,0x3c0e7d24,0x3e23181d,0x3e170d2b,0x3d65218e,0x3d2aa808,0xbcf32cb1,0xbd4a82c8,0xbe4810a3,0xbebccf5d,0xbec68425,0xbf044b14,0xbf3460fd,0xbf2f2592,0xbf301962,0xbf1b71eb,0xbee43e11, -0xbeaa5a21,0xbe330c45,0xbda73d29,0xb9db1510,0x3bdfebab,0x3daca789,0x3daa0f6d,0x3da2d454,0x3dc058e3,0x3e0a9e40,0x3dc57c51,0x3cffa55d,0x3d8e26db,0x3d34755d,0x3d64c509,0x3d7ad792,0x3d85f0aa,0x3da91080,0x3e11aceb,0x3de70af5,0x3d1ffc22,0x3d24af07,0x3be843b2,0x3ca67e8d,0xbd7896b6, -0xbd0d5edb,0xbe2d0ce0,0xbe27771d,0xbec7bf40,0xbeb48a6a,0xbee5face,0xbf0da7e4,0xbf205713,0xbf1a732c,0xbf071ca2,0xbeca6538,0xbe9be99c,0xbe4d0d15,0xbdf9b31e,0xbd034d10,0x3cbf2f3b,0x3d73d3df,0x3d155a60,0x3d010bd5,0x3cfb3aa7,0xb9c50f75,0xbb1ad997,0xbd02ff13,0xbda4c2db,0xbd11d4f0, -0xbd10e518,0xbc4aefc4,0x3c9fca1c,0x3d92a30f,0x3d033d0e,0x3d29b887,0xbc3fc29d,0x3c9bfbd1,0x3bdf33d3,0x3bb3e397,0xbd1f4d87,0xbdd2b376,0xbe2bebd2,0xbe6d145e,0xbebc3f95,0xbec57253,0xbebf2357,0xbee9d9eb,0xbef725f0,0xbee9eefc,0xbedfa37b,0xbecab0d3,0xbead58c5,0xbe8c01d5,0xbe5cec53, -0xbe37116e,0xbe28e1c0,0xbdf85bae,0xbe0553a5,0xbe262c3a,0xbe25e8ac,0xbe289c14,0xbe0b163b,0xbe0e26b7,0xbe17d665,0xbde98319,0xbdabc670,0xbd98d68c,0xbd33e132,0x3a48537b,0xbc964215,0xbcd04df9,0xbd35493f,0xbd499f4b,0xbd6e0e3c,0xbc6cd8c0,0xbdddc6c2,0xbe037fcb,0xbe60d4fb,0xbe89ee3d, -0xbeb88bfb,0xbea3b60d,0xbe9f8c83,0xbeb3fa67,0xbec4ba4f,0xbeba808a,0xbeb86be2,0xbebd2311,0xbeb43b39,0xbeacc10f,0xbeac8404,0xbea256fc,0xbea3b7d7,0xbe9af3c7,0xbe993c5d,0xbe990491,0xbe8e837b,0xbe86363e,0xbe66010c,0xbe6f2bfd,0xbe6b07df,0xbe37806a,0xbe27c8e9,0xbe061a0e,0xbdd71f2b, -0xbdd3bb83,0xbda6faaf,0xbd99ca4e,0xbddbe79b,0xbd92b1c3,0xbdcddf2c,0xbdd7d1d1,0xbe24022d,0xbe48800f,0xbe6bb613,0xbe7af816,0xbea7ae98,0xbe3d5a05,0xbe719ea4,0xbe6cc486,0xbe667608,0xbe8a1cf4,0xbe8e9fad,0xbe98558a,0xbe97a86e,0xbe9779f0,0xbe953f07,0xbe99cc27,0xbe9b01ef,0xbea6d8ed, -0xbe9479b4,0xbe845625,0xbe850d18,0xbe74bf8b,0xbe4d7d57,0xbe626e7e,0xbe97b9a2,0xbe7b408c,0xbe74da46,0xbe5b0f06,0xbe50ec38,0xbe217465,0xbe459396,0xbe3f84f3,0xbe564951,0xbe536cd4,0xbe1b8d4d,0xbe504e9e,0xbe4dd0d0,0xbe55112c,0xbe90d1df,0xbe625bd0,0xbe782257,0xbe170822,0xbe2eb953, -0xbe2c54bc,0xbe2c9ef9,0xbe30fa98,0xbe3066a6,0xbe39c7bb,0xbe3a1e6b,0xbe3fcf66,0xbe443bc3,0xbe453a80,0xbe427238,0xbe42e2be,0xbe392233,0xbe38b4ba,0xbe3439e6,0xbe2a684d,0xbe249cfe,0xbe0709f1,0xbe624007,0xbe8eae30,0xbe99e779,0xbe511b52,0xbe8203f8,0xbe905a3f,0xbe955b8a,0xbe8da2b9, -0xbe8ac3b4,0xbe921bdb,0xbe94960f,0xbe90f684,0xbe804922,0xbe45decc,0xbe9d98fa,0xbe987f9c,0xbe84f3bf,0xbceab7d8,0xbc20d90b,0xbd4efbe6,0xbcfad5ac,0xbd012d22,0xbcf5a4ec,0xbd1fa77d,0xbd36f937,0xbd5159db,0xbd40f08b,0xbd3a29f0,0xbd238e5f,0xbd132241,0xbd07b400,0xbd0189ed,0xbd0235d8, -0xbd055fbc,0xbd037cd0,0xbd07e9ab,0xbce75111,0xbd18759c,0x3c51888c,0x3d2530a0,0x3de0c92c,0xbab23380,0x3d28b685,0x3ddadf3b,0x3ddb9558,0x3dd55f2a,0x3dc4e34f,0x3de1548a,0x3dd5a662,0x3dbf5429,0x3d44e5f9,0xbbf6689a,0x3daeae10,0x3d51fdf6,0x3dca5b4c,0xbcdca55d,0xbcad929f,0xbcd92f3a, -0xbd050f8b,0xbd96c0d0,0xbdc155e9,0xbdec3e32,0xbdcf06e9,0xbdb3561a,0xbd813bc6,0xbd3c5fb2,0xbd21b094,0xbd241e57,0xbd172df8,0xbd2bc56b,0xbd2c60c7,0xbd2d6db2,0xbd238148,0xbd4138f8,0x3d4107eb,0x3cec6b8b,0x3d35810e,0x3d0f2092,0x3b2395bd,0x3d65e443,0x3d4dd6d5,0x3da84a4e,0x3d5a337f, -0x3d8d131d,0x3c20d0c6,0x3d7b675d,0x3d4814d1,0x3d2539f5,0x3d769203,0x3d31f128,0x3d3815ad,0xbd5dc604,0xbcfb6d0d,0xbd061c51,0xbd04ea05,0xbdcf7c5c,0xbe0a1646,0xbe2f2aff,0xbe236800,0xbe0eecfa,0xbdd0ed3c,0xbd9332a4,0xbd531d6f,0xbd47b07f,0xbd530326,0xbd51041d,0xbd67866f,0xbd47320a, -0xbd71b6ae,0xbc45349e,0x3d772a09,0x3d2f1104,0x3cce5f4e,0x3d7127bf,0x3d640c70,0x3d33d782,0x3d9787e4,0x3cf1e73c,0x3dda1865,0x3d8055d2,0x3db5b929,0x3d6a2c32,0x3d17a293,0x3d08e5e3,0x3d4ed530,0xb9b59b37,0x3d8b3cec,0xbc0365a0,0x3b77f890,0xbb1aab30,0xbcbd094e,0xbe0ed868,0xbe53ef66, -0xbe87fe50,0xbe7d23df,0xbe44d27e,0xbdf934d3,0xbd99ec3e,0xbd43f663,0xbd4b8893,0xbd485992,0xbd6bad64,0xbd61a973,0xbd82e984,0xbd6cc215,0xbca12657,0x3ce39e76,0x3c1e010f,0x3d505681,0x3cdc6f00,0x3d8f7f1e,0x3d2b1249,0x3dffc0d5,0x3e010af5,0x3e044e26,0x3dc315d2,0x3df02265,0x3dd438d6, -0x3dbd48d1,0x3d91c560,0x3da79104,0x3d9f023c,0x3ccbcf19,0xbd552616,0xbcc2144e,0xbc1cfb61,0xbc0dda09,0xbe0eadb5,0xbe65c71b,0xbe91a968,0xbe9332b7,0xbe796b47,0xbe273dbd,0xbdcd34ae,0xbd5e45f5,0xbd63d819,0xbd7c387d,0xbd8af094,0xbd88a17a,0xbd85fdf9,0xbd652e21,0xbc9222c3,0x3dedc512, -0x3d8474de,0x3dd2eb59,0x3db82c12,0x3dc3266b,0x3da37faf,0x3deb201f,0x3e141f82,0x3e205ce5,0x3df2de16,0x3dd1260f,0x3dcfa333,0x3d6e9f7b,0x3d07e5b2,0x3d78954d,0x3d36d01f,0xbe89f458,0xbeb2423b,0xbe9b714d,0xbe9ac63d,0xbe8ed4ee,0xbe305bc5,0xbde09ce5,0xbdb1dab7,0xbe282ed9,0xbe603e39, -0xbe51b985,0xbe5db985,0xbe73160c,0xbe26b3af,0xbe26461f,0xbe0042d5,0xbe243061,0xbdccf3d2,0xbd98cd2e,0xbd85a16b,0x3d0e2a27,0xbb80f0f6,0x3dad97a9,0x3d628fe2,0x3deb3f31,0x3dd10806,0x3e1b1f29,0x3e0de9d3,0x3e02f0bc,0x3e015c0a,0x3ddedd56,0x3da3c668,0x3d023f1c,0xbbca738a,0xbda59091, -0xbe4ebec6,0xbe819cf8,0xbe8d5879,0xbe815404,0xbe4a7b63,0xbd3a044a,0xbdc424aa,0xbdc906a6,0xbd28765b,0xbbabf875,0x3cedf2e8,0x3c9a03a5,0x3ce45452,0x3ccf62a9,0xbca45c3e,0xbcbf7f6c,0xbce05281,0xbd3c63a0,0xbc8f91bd,0xbd439cf6,0xbcb8996c,0x3da72ef1,0x3d82cfd0,0x3da3015e,0x3dd500c6, -0x3defae9d,0x3dec40ee,0x3e1bec92,0x3e26c449,0x3e25ff3e,0x3dbfc8bd,0x3d029de0,0x3b7fa74e,0xbcf4e0a0,0xbdacf7cc,0xbe02db26,0xbe4e956a,0xbe81ba6a,0xbe799b3d,0xbe070e0a,0xbdd173fd,0x3d156ce9,0x3da4a7a1,0x3e388e00,0x3e9d631e,0x3ea8cb95,0x3eb34568,0x3e9fdcbf,0x3e9b89b9,0x3e8519fa, -0x3e5128eb,0x3e652642,0x3e29b64b,0x3e0209a6,0x3cac4c4e,0xbd374f02,0xbd574a92,0xbd4bafe6,0xbc2ff558,0x3cc1e4f4,0x3ce3c832,0x3da89ac9,0x3d8679d0,0x3e32b307,0x3e34fd5e,0x3ddd9986,0x3dc55c3a,0x3d90c8dd,0xbc5d0ecc,0xbc9af7e8,0xbd5e4550,0xbdcebed5,0xbe30faae,0xbe0259c9,0xbde0b6ce, -0x3d34b204,0x3db7d430,0x3e15ee6c,0x3e67c258,0x3eb6884d,0x3efd0746,0x3f0f8817,0x3f1718ff,0x3f04758c,0x3f001b92,0x3ed967e5,0x3ecb8134,0x3ea3352e,0x3e84d1e5,0x3e3c020c,0x3d8fdc2c,0xbc59a3a8,0xbcc061db,0xbd0865bc,0xbd5981bf,0xbcdad1c4,0x3cf7ca3d,0x3cc18648,0x3d2fd16e,0x3e24aae5, -0x3e42cdb0,0x3d26e2a1,0x3e04538d,0x3dd4543f,0x3c2165d6,0x3ac4a44f,0xbc6675dd,0xbd864707,0xbd8bc3fb,0xbc615136,0x3d8be54e,0x3e2afd42,0x3e5ca4a7,0x3e6b062f,0x3e734de0,0x3e988b22,0x3ed21be8,0x3eef80e8,0x3f040a97,0x3f0fc6b2,0x3f0201f2,0x3ee9a8c1,0x3ec5e65d,0x3e96e78b,0x3e4d7fb8, -0x3e09c43d,0x3d8b2949,0x39ddf518,0xbcfaf728,0xbc44a9e5,0x3bc3f3f6,0x3cb77039,0x3caed650,0x3d3b9580,0x3ce355b7,0x3e146856,0x3e2ab4bf,0x3d4cb0fb,0x3e15a028,0x3ddf6bd9,0x3c256712,0x3c93d59d,0x3bbfea20,0xbd11a512,0xbcb24b01,0x3e1b18cf,0x3e37d76c,0x3e8577fc,0x3e9e4d80,0x3e601a81, -0x3e5870f7,0x3e51532d,0x3e6378be,0x3e85c425,0x3e8de39d,0x3e8ecd7c,0x3ea27447,0x3e93b0b6,0x3e8a05dd,0x3e7d2222,0x3e4f33b7,0x3e064ff5,0x3d2fd072,0x3c177d90,0x3cfe9900,0x3d98aa37,0x3d90673d,0x3d8efc5b,0x3db8a1d4,0x3dbae823,0x3df63bb8,0x3e053116,0x3e09e28b,0x3e22ae98,0x3e0b5047, -0x3dfd78c3,0x3de0da26,0x3dc137b9,0x3d0bdf21,0x3d834b23,0x3d3f9bdd,0x3e34e9ea,0x3e44be21,0x3e652cf3,0x3e75ec4d,0x3e61f765,0x3e486ffb,0x3e2df6ff,0x3e1b7034,0x3e0c30f4,0x3e072931,0x3e03efdd,0x3dc66c15,0x3dacb945,0x3d9fbd47,0x3da88f1f,0x3da3e6a1,0x3da07c3f,0x3db5a026,0x3da04375, -0x3de50796,0x3e1769cc,0x3def5baf,0x3e11c4a7,0x3e118fd0,0x3e1c1ecc,0x3e064175,0x3e0b2880,0x3e05b24f,0x3e14dc4c,0x3dde90e5,0x3dd102ec,0x3d9634e6,0x3dd3dd69,0x3e02ad47,0x3e0e64b4,0x3e1f8dcb,0x3e421662,0x3e4134b7,0x3e4baa28,0x3e583bc3,0x3e5a533a,0x3e42c635,0x3e34b7e3,0x3e22135d, -0x3e11b569,0x3dfc9efb,0x3deeaa6e,0x3de09c69,0x3dec33bc,0x3dd2e646,0x3de90f26,0x3e164e02,0x3e29f8a4,0x3e3e152e,0x3e3c01cc,0x3e45c1ac,0x3e63965a,0x3e4f2085,0x3e4a3c7f,0x3e41f6b4,0x3e27491c,0x3e0f1cc1,0x3e11681f,0x3e049d64,0x3e08158b,0x3deec04d,0x3dd5afca,0x3d80c90b,0x3de8f372, -0x3dee8215,0x3e14068b,0x3e2150a9,0x3e40a5e8,0x3e469343,0x3e3c2e80,0x3e4e6690,0x3e5eba7d,0x3e54c943,0x3e538208,0x3e533501,0x3e4ff813,0x3e4c5155,0x3e4be6fc,0x3e4e154d,0x3e548836,0x3e52420a,0x3e6a31e2,0x3e77ea3c,0x3e803a1d,0x3e81963b,0x3e851da2,0x3e871910,0x3e822237,0x3e68ca52, -0x3e6db3b4,0x3e4ba54b,0x3e3bde96,0x3e37d742,0x3e1bdd59,0x3e1ba310,0x3e1e1863,0x3e039608,0x3e045e6e,0x3df77070,0x3e0efdcd,0x3e0dd1c2,0x3e293659,0x3e26cc5c,0x3e787b5a,0x3e483523,0x3e61fa48,0x3e5ca7c2,0x3e5243f0,0x3e6f637f,0x3e6fd9a2,0x3e7d2948,0x3e809612,0x3e82835f,0x3e8430bb, -0x3e877e39,0x3e8958fc,0x3e8f7460,0x3e866ac8,0x3e7f84b3,0x3e865e91,0x3e81f561,0x3e6d3232,0x3e85f5c4,0x3e8922ac,0x3e814ee5,0x3e780c7a,0x3e758481,0x3e648db8,0x3e4ac4f0,0x3e6309a1,0x3e59edbc,0x3e5ef907,0x3e5ffac5,0x3e3978d4,0x3e527c8a,0x3e57714d,0x3e51a0b7,0x3e65d006,0x3e65ff6c, -0x3e559ce9,0x3e24b042,0x3e2de7fa,0x3e2d7330,0x3e2d2f77,0x3e315a22,0x3e305113,0x3e3525ec,0x3e35762d,0x3e3950de,0x3e3c188c,0x3e3d94ac,0x3e3ddae3,0x3e411ef4,0x3e3f3c17,0x3e421820,0x3e42628c,0x3e3edfa5,0x3e3c599d,0x3e366f8e,0x3e5e0c15,0x3e74c821,0x3e64d109,0x3e55b9ab,0x3e66e0e9, -0x3e5d70ce,0x3e619577,0x3e5755b0,0x3e5535eb,0x3e5b5f31,0x3e5ca513,0x3e59ad31,0x3e568e8b,0x3e3c7010,0x3e5ac76c,0x3e669652,0x3e91f529,0x3d07251d,0x3c219d43,0x3d3b7d7c,0x3ceba680,0x3ce74b33,0x3cc3f888,0x3ceb1739,0x3d0640a5,0x3d2d306a,0x3d17dce9,0x3d19ceec,0x3d10b77b,0x3d12a21b, -0x3d125fdf,0x3d178ce0,0x3d0efeee,0x3d0a2535,0x3cf70ef7,0x3cf6f949,0x3cd71ab6,0x3d0f7794,0xbc2f8189,0xbd0e627d,0xbdb154b3,0x3b615f8a,0xbcf4a5eb,0xbd9d944c,0xbd9a767c,0xbd9074bd,0xbd83779b,0xbd96444d,0xbd9498e4,0xbd8e472b,0xbd120aa0,0x3c40301a,0xbd8b059d,0xbd336bf7,0xbd9d7e0a, -0x3c8da883,0x3ce67a7b,0x3cdbb0df,0x3c78adde,0x3d0eb76d,0x3d4a6e9e,0x3da3a944,0x3d53667c,0x3d311835,0x3d04510e,0x3cf38a56,0x3d182871,0x3d3dd2b4,0x3d2a4de4,0x3d312d04,0x3d12b4dc,0x3d02bb62,0x3ce3ea08,0x3d13e05e,0xbd330904,0xbcbf40d7,0xbd158ddb,0xbcd00f05,0x3c078401,0xbc5e5b3d, -0x3b1b3e1a,0xbc531bf0,0xbbc8968f,0x3ae2f865,0x3d385a2a,0xbc639692,0xbc5cfe1c,0xbbf92ffe,0xbc87e237,0xbbf5c9fe,0xbd0cabc2,0x3cab0faf,0x3cc09f1c,0x3c4eda91,0xbbbb5208,0x3d10c01b,0x3d6c04a5,0x3dfb62ec,0x3da72119,0x3d8db99b,0x3d483f76,0x3d5766b3,0x3d50bef4,0x3d8114d9,0x3d79ab41, -0x3d4d90be,0x3d16562e,0x3cd3ce11,0x3cfcf4b8,0xbacdda95,0xbd53c336,0xbcf3bb29,0xbc45f68e,0xbd0d67e3,0xbc467f4f,0x3cedce21,0x3c9f71ef,0x3d625dec,0x3b85520f,0x3d5010ca,0x3cbd93a8,0x3b6a368b,0x3c831329,0x3bf11a7b,0xbb913c97,0x3ca8b877,0xbd19267c,0xbd174d9d,0x3c312ffd,0xbab07ad3, -0xbcfa51b5,0x3d27527c,0x3db634c8,0x3e3eeba3,0x3dd5a1bc,0x3d6225cd,0x3cb2fb0e,0x3cb3dadf,0x3d19a6e0,0x3d837214,0x3d746f6e,0x3d686ab3,0x3d0dc411,0x3ce96361,0x3c90960a,0xbb7f13dd,0xbcd5c4c3,0xbc207823,0xbd0f34da,0xbc17a174,0xbc86a90d,0x3d3dd083,0x3cde871b,0x3d58ecb6,0x3ce914e3, -0x3d9f187a,0x3d794c8c,0x3c67832f,0x3be771cf,0x3c426209,0x3cd8fe4d,0x3ba37b97,0x37ed2942,0xbce15ad6,0x3ba3a661,0xbd1be328,0xbd7d2b79,0x3c719738,0x3dac62b4,0x3e4cf054,0x3e05be00,0x3dc21a6e,0x3d5d3b3c,0x3d5b2408,0x3d610f58,0x3db60fcd,0x3dac22eb,0x3d8a2770,0x3ceeb467,0x3cb6d519, -0x3c446a4c,0xbbd64d15,0xbd84e38c,0xbcda174a,0xbce79c87,0xbc47f420,0x3cc28011,0x3d4fb1cb,0x3da4f996,0x3ddb43c0,0x3dc6f74f,0x3dcc2469,0x3dbb6f47,0x3d3e7833,0x3d41ea05,0x3d2abe30,0x3d13037c,0xbb090760,0xbcc8a57e,0x3d4cce02,0x3de9c5e6,0x3e338d36,0x3e9c1e9d,0x3ea5179c,0x3ea70d84, -0x3e96f6cc,0x3ea8fe9b,0x3ea5b988,0x3e8c0f27,0x3e90aac6,0x3e8b5eff,0x3e3d9f32,0x3e20395c,0x3ddd6753,0x3dbd473b,0x3cc9c6c7,0xbba1c590,0xbc757208,0xbd5e04dc,0xbbb9f072,0xbc382b68,0x3c91eaa8,0x3d290bcb,0x3da836ba,0x3de28a12,0x3dd030a4,0x3d3ff08d,0x3d960fd0,0x3d20d22e,0xbc9a08a7, -0xbc914d2e,0xbcec925b,0xbd57e1e3,0x3c2514e5,0xbc6453b4,0x3c7c98b2,0x3d5774fc,0x3d0046ed,0x3b1afd40,0x3da0b6b1,0x3e1cd649,0x3e2541eb,0x3e4b6bf6,0x3e5085d3,0x3e8d567a,0x3e88c962,0x3e829166,0x3e86d381,0x3e1e3934,0x3da72867,0xbd02731b,0xbd41a070,0xbcfccc26,0xbbf8ab82,0xbd642fe6, -0xbcb3a609,0x3a99e564,0x3cd55ab2,0x3d46a0aa,0x3da3eb75,0x3ddc33aa,0x3dfadcdb,0x3dc5bb37,0x3d3bc8fe,0x3d0fad1c,0x3c9705f9,0x3ca76b21,0x3c807318,0x3c90d6a6,0xbc428847,0x3c816ffe,0x3ca11822,0x3c8bc5fa,0xbc2ea48b,0x3cb5e648,0xbd83d6d6,0xbd87948d,0xbd6d83c6,0xbcd7c3ec,0xbba7c428, -0x3cd1ba71,0x3d6b45ff,0x3d61cbe2,0x3deee91b,0x3d4fbd45,0xbbbe0907,0xbd50f116,0xbd606a04,0xbd5893c2,0xbcaddb0b,0xbce3e116,0xbd27a195,0xbd2d4905,0xbc4e9f1f,0x3b0bf4dc,0xbbdb8866,0x3dcc1467,0x3e01f28b,0xbc73f87d,0x3de2ae92,0x3dbe9017,0xbc3057d6,0x3cb6ffff,0x3c8d6bdf,0x3c96da30, -0xba08319c,0xbb448bac,0xbca2446a,0xbd7980bd,0xbda698cf,0xbc610661,0xbe3924f3,0xbe7e074b,0xbe9bfa4f,0xbe970791,0xbe948d83,0xbe88c2ad,0xbe7a5945,0xbe4754a9,0xbe231928,0xbe168491,0xbe026cd0,0xbdf0f442,0xbdd13fb5,0xbdba6591,0xbd8f603b,0xbd8d5c56,0xbd5024bf,0xbd579dbd,0xbd7f610a, -0xbc65152f,0xbcebcfb0,0x3d8e5559,0x3deef4cb,0xbd6314d4,0x3df2d06d,0x3de9b337,0xba5a47ba,0x3d01d64c,0x3caa156a,0x3c7042dc,0x3ccc3bfd,0xbd3266e4,0xbdc9c1b3,0xbdf80b80,0xbe034a2d,0xbda503ee,0xbe5d451a,0xbe9dc6ca,0xbec9e12b,0xbec8a98f,0xbec761e5,0xbeca31be,0xbebb2736,0xbeb68cfa, -0xbeab8998,0xbe99b842,0xbe7e9fbe,0xbe4c77e4,0xbe247ebf,0xbe0162f9,0xbd94edde,0xbd8ae9b3,0xbd9b867c,0xbd287976,0xbcdaf542,0x3bed38ce,0x3d32a224,0x3d66bdcb,0x3d1d68cf,0xbd462133,0x3d8fa947,0x3d8eb305,0x3d46d662,0x3d200b0e,0xbb909df9,0xb9502ed6,0xbcf7f103,0xbe0976b7,0xbe3d9bdf, -0xbe2034e9,0xbe184ece,0xbde72563,0xbe45b876,0xbe7aac5e,0xbe9efe26,0xbe9ac582,0xbea84b07,0xbea81cf1,0xbec202c6,0xbea43dd7,0xbea721c2,0xbe971adf,0xbe77b286,0xbe3634d5,0xbe1bcbf1,0xbddf2d12,0xbdcf52fe,0xbdad56c3,0xbd5083ab,0xbd586de0,0xbd1ddfa3,0xbd0893d9,0xbcd0c915,0xbb82b70f, -0x3b93ade2,0x3c88a836,0x3d7daa9f,0x3d5b068e,0x3b22c133,0xbbdb6679,0x3a6259b0,0xbd2e62a0,0xbd9e01ae,0xbdd55265,0xbe033799,0xbdf10ccb,0xbe0363a0,0xbe1dab4d,0xbe4323e7,0xbe594430,0xbe5e6a93,0xbe5c70c6,0xbe51914f,0xbe4766df,0xbe3879d7,0xbe3b9b09,0xbe3ad3d9,0xbe3d22a0,0xbe36ebfb, -0xbe36b1fc,0xbe2c8837,0xbe204bf8,0xbe050b81,0xbdf9d07f,0xbe04ef40,0xbdb9b1d5,0xbdae1701,0xbd5ec728,0x3be82ccb,0xbc75da71,0x3cd169f1,0xbbc7b68a,0x3d182d91,0x3cac3619,0x3c46ee63,0xbd22c9eb,0xbda976ac,0xbdb064a9,0xbde89750,0xbdc9a11f,0xbdc7c838,0xbdfb8560,0xbe1717a3,0xbe3d8448, -0xbe3b6a2b,0xbe43b0c1,0xbe474069,0xbe4238a3,0xbe3c5c11,0xbe3a5bdb,0xbe2f9ff7,0xbe29b40d,0xbe1a5604,0xbe1be736,0xbe23f3a1,0xbe2f4a35,0xbe352277,0xbe3a7805,0xbe388baf,0xbe14933e,0xbde649bc,0xbdff6736,0xbda3e813,0xbd8417fc,0xbd1ff414,0xbbe09ce9,0x3a21d320,0xbc4472ce,0x3b5d75cb, -0xb9d90712,0x3ca918c3,0xbd066d53,0xbd281bf1,0xbd6b0f82,0xbd90aa58,0xbdd41e59,0xbe03c18e,0xbe12f0bd,0xbe2e2a99,0xbe45a49d,0xbe41b6da,0xbe459d9b,0xbe4a1dc9,0xbe467b47,0xbe4396ed,0xbe3f7885,0xbe3c9e31,0xbe34eccd,0xbe2a4617,0xbe39b3e6,0xbe3c3325,0xbe46244a,0xbe400d8d,0xbe4ee7b3, -0xbe31f509,0xbe20e8d2,0xbe06bf8e,0xbe0e834f,0xbdd2701f,0xbda2d3f7,0xbdb5fb3d,0xbd7956ee,0xbdc00bb2,0xbd184b43,0xbd78b40f,0xbd26d8be,0xbd411010,0xbd60502f,0xbd54e216,0xbda7ab5b,0xbdc59d64,0xbe1d06c1,0xbe35521a,0xbe3adbf7,0xbe325276,0xbe2753c2,0xbe40861d,0xbe404aac,0xbe4c5117, -0xbe4f8e40,0xbe532ed1,0xbe566cc3,0xbe5baabf,0xbe6147ee,0xbe66957e,0xbe59f267,0xbe4ee50b,0xbe55f001,0xbe4bb6de,0xbe402269,0xbe4fac02,0xbe11f904,0xbe1f319e,0xbe11cfb6,0xbe24a851,0xbe0f863e,0xbdfa475d,0xbe09c86b,0xbe08ce1e,0xbe0ec68e,0xbe15fbde,0xbe0eef5b,0xbe062a5e,0xbe225290, -0xbe1c3af3,0xbe126102,0xbe3f5372,0xbe147cd2,0xbe0e631e,0xbe0faadb,0xbe12a721,0xbe124d16,0xbe15f130,0xbe14a672,0xbe18346c,0xbe17628b,0xbe1944cb,0xbe1a6324,0xbe1a2a18,0xbe193dc9,0xbe1bc0e6,0xbe1a2a80,0xbe1bddda,0xbe1bce62,0xbe19c2a2,0xbe14de00,0xbe1f8398,0xbe1d6446,0xbe154ab1, -0xbdca7e0d,0xbe13db05,0xbe097193,0xbdc8f73f,0xbdc86617,0xbdc633c3,0xbdc7bfa3,0xbdc33e92,0xbdca6dee,0xbdd4ecd7,0xbe04d869,0xbe050743,0xbdd05d6f,0xbe076894,0xbe67fb94,0x3d263ca1,0x3d1b75b1,0x3b94a6a3,0x3ca679c7,0x3cac6dc5,0x3ce6c0a6,0x3cb3759d,0x3caf955b,0x3cacd3b5,0x3c996cfb, -0x3c87a332,0x3c66686b,0x3c381488,0x3c16e32a,0x3bcadf05,0x3bce87b8,0x3bf08948,0x3c14eab3,0x3c23ab18,0x3c555a29,0x3b932976,0x3d4296d3,0x3d8d4089,0x3ddca1a6,0x3d202686,0x3d90037d,0x3de80907,0x3ddfa57d,0x3dd7a429,0x3dc781e0,0x3de987b5,0x3de39e29,0x3dce9012,0x3d9d33cd,0x3d112c62, -0x3dc92c56,0x3da5da5e,0x3defa032,0x3d25c15c,0x3d375b88,0x3d4ca103,0x3d8b11e8,0x3d1a541c,0x3d00dae0,0x3ced4051,0x3cde122a,0x3ceb5361,0x3ccafcdc,0x3ca242cc,0x3c46bc01,0x3bb9e528,0x3ba47a5f,0x3b4a4f32,0x3bb4c602,0x3c18e6c5,0x3c43a690,0x38a21b24,0x3d92aa27,0x3d61c4bb,0x3d849762, -0x3d76cf1b,0x3d2a3d1f,0x3dac9a39,0x3d8c4697,0x3da85ba0,0x3d7163bf,0x3da2e3d1,0x3ccdca18,0x3d52b2ba,0x3d79d2c2,0x3d67c314,0x3d85e353,0x3d6d4585,0x3dafe6eb,0x3d2d44b2,0x3d3d4ff7,0x3d7e55a4,0x3dc6c8ef,0x3d6671f9,0x3d2e14b5,0x3d0326e6,0x3d0a833e,0x3cd311d1,0x3c904e08,0x3986503f, -0xbc4c9705,0xbcf2284d,0xbd0f5b65,0xbce85795,0xbcc3539a,0xbc36a369,0xbc91171b,0x3b8122b0,0x3d67a11a,0x3d2008ed,0x3d03caeb,0x3d4e3be3,0x3d5061e8,0x3d96c5e7,0x3d711075,0x3d05ef78,0x3d844962,0x3d740223,0x3d9d6a76,0x3cfb64a0,0x3d2b3f04,0x3d3fbc54,0x3d48ce6d,0x3cef6bab,0x3d9a967e, -0x3dae628a,0x3da49302,0x3dd4a75f,0x3e1e9f65,0x3d891508,0x3d25ae38,0x3c82ebb0,0x3d088122,0x3d2b9f70,0x3d084ed1,0x3c618199,0xbc50262e,0xbd04ded6,0xbd1b3c6f,0xbd2e6acc,0xbd12a245,0xbccf0d50,0xbca22316,0xbc8b5099,0x3c4f8c14,0xbaece2f0,0x3cbb50e8,0x3b966c2a,0x3d0cfe15,0x3d86e4ac, -0x3d8d08b8,0x3d78c158,0x3d1ddef9,0x3d716d45,0x3d72c865,0xbb919129,0x3d2a6125,0x3d00fb23,0x3ca79ccd,0x3d3e2f35,0x3d61f809,0x3d92c320,0x3d6a9281,0x3dc282b0,0x3e207d9e,0x3dbb14a2,0x3d85d2e0,0x3d052761,0x3d443256,0x3d16c0db,0x3caa60b6,0xbc590009,0xbd36ef8c,0xbdb5827b,0xbdc192d5, -0xbdb7323a,0xbd8c6f16,0xbd6445b9,0xbd4e213e,0xbd36bc40,0x3ce9266d,0xbbc89661,0x3baf6dcb,0xbc478e75,0x3b0e5ade,0x3d5b69fc,0x3d353c63,0x3d81c0e6,0x3d1f15bd,0x3db2875e,0x3d849e3a,0x3ae5895b,0x3caf1710,0x3cc412ab,0x3c778579,0x3cf1709b,0x3e453e62,0x3e16fd7f,0x3e41db61,0x3e2b6c4b, -0x3de4e557,0x3dc448a0,0x3d5683da,0xbd816604,0xbd8d482d,0xbda54a55,0xbd84f45d,0xbdb9691f,0xbde995fa,0xbde37942,0xbdfb8887,0xbe09d4f8,0xbe0d61db,0xbdb854c2,0xbd8eb782,0xbd541356,0x3c0d739d,0xbc6e5b06,0x3cacb9a7,0x3c221c39,0x3d40abbd,0x3dbc696c,0x3d893280,0x3d6e54e9,0x3d61abaa, -0x3d675357,0x3d5755e8,0x3d8f9d9e,0x3da74a55,0x3dd33682,0x3e0019e7,0x3e488e4b,0x3cf13818,0x3d264521,0xbd60349b,0xbd06c836,0x3d97bbf5,0x3d9d46d8,0x3d949b51,0x3c990e9a,0xbc4c0fe5,0xbd98ac58,0xbe10890d,0xbe54fb80,0xbe8760e5,0xbeb2450f,0xbeaafc36,0xbe9873cb,0xbe49df3c,0xbe2d860e, -0xbe18af17,0xbdcecbbf,0xbc8716e9,0xbcb919a6,0xbbd30a51,0xbb8e0e94,0x3c880dcd,0x3d863c37,0x3d74d1fa,0x3dbc8096,0x3d986006,0x3de6f2ef,0x3e02c93f,0x3dd55ad4,0x3d82c6c1,0x3d4035f3,0x3d41ec2b,0x3d197e6a,0x3c217983,0x3c1c2c71,0xbd178f46,0xbbdad284,0x3cc383e6,0x3ddabf15,0x3d90bcb3, -0xbda30258,0xbd2d6896,0xbd6f8e6c,0xbd71eb92,0xbdcff636,0xbe0386c7,0xbe50a13c,0xbe58854f,0xbe49debf,0xbe18598c,0xbdfb4966,0xbdbd1eaf,0xbd999f3a,0xbd0485af,0x3c5736fd,0x3cfb407b,0x3cab7958,0x3d6449d7,0x3dfc10b3,0x3dc26db8,0x3db748bd,0x3cffbda8,0x3df3a85a,0x3dc9dba1,0x3da21b1e, -0x3d805a87,0x3d36067e,0x3d3a2b00,0x3d105dca,0x3cddf273,0x3d0df790,0x3b544166,0x3c070809,0x3d04d3d1,0x3de8b68b,0x3dd98725,0xb90e4558,0xbad8c0ee,0xbbecaa10,0x3ce0c0d1,0x3b976fdc,0xbcbd70c6,0xbd1c7aab,0xbd900168,0xbda30b45,0xbda09087,0xbd81bd33,0xbd51f119,0xbd1911b6,0xbba3fd12, -0x3a2e630c,0x3d353464,0x3d10c410,0x3d571a53,0x3e0964e8,0x3d90cd3e,0x3d72d798,0xbc35e4f3,0x3da1188b,0x3d902e64,0x3d82a7fb,0x3d3803af,0x3cef9f57,0x3d2c8256,0x3d2af5f8,0x3ce71c02,0x3daf9054,0x3cb38d70,0x3cd78d6d,0x3ddf0e4e,0x3e405764,0x3e675c72,0x3e35d357,0x3dfdf299,0x3d8bf4af, -0x3d8c46d0,0x3c4fec67,0x3b7e8180,0xbb4a793e,0x3b8e2e2d,0xbc17e707,0xbca986e4,0xbd3383ce,0xbd2fb062,0xbd4ac210,0xbd01a9e9,0x3b6f2a6c,0xbc0fc2c6,0x3a419c5b,0x3cb42348,0x3d87f9b9,0x3cc99261,0x3cb78c02,0xbc54efe1,0x3d25008c,0x3d841de5,0x3dbe0c3f,0x3d55d795,0x3d14f6ac,0x3ce53b41, -0x3d2cbf38,0x3d8bb320,0x3da82076,0x3d455a60,0x3d73aab6,0x3e05d46c,0x3e303954,0x3e236793,0x3dd88bb7,0x3d5c5b7b,0x3d40ef43,0x3d96779b,0x3d87b60a,0x3d2e92d4,0x3ce7f00e,0x3c377d2c,0xbc312b36,0xbc500226,0x3b8ff965,0x3ca18347,0x3d3f20d0,0x3c66e663,0xbba3e8cc,0x3b070628,0x3cba730b, -0x3d4ef4d9,0x3d997759,0x3d19bff8,0x3d251261,0xbb9750fa,0x3d170d0c,0x3d44d1e5,0x3d9dad1e,0x3d809f62,0x3d071e3f,0x3d605c19,0x3d8509e1,0x3c141b7b,0x3cb9a838,0x3d6e7460,0x3dc52113,0x3e22f250,0x3e0f0c5f,0x3e00c518,0x3dbfd262,0x3d20cac0,0xbbb9cdc8,0xbcfb30cd,0xbd314015,0xbd2cc409, -0xbd3e3b56,0xbcda48ee,0xbc1e772d,0x3cc7ace6,0x3d4bcf3e,0x3d89c8ae,0x3d01eb0a,0x3ccdd8b4,0x3db0b11d,0x3d583bc5,0x3d65c228,0x3d1a963e,0x3c77deb2,0x3d309d9f,0x3cb3f3d4,0x3d30eb41,0x3cf34c01,0x3d4126f8,0x3d330a8f,0x3d6f4005,0x3d7e4558,0x3cfc1de0,0x3d09f2f1,0x3d7f3dac,0x3d817e6b, -0x3db7f2cc,0x3df15059,0x3e14383f,0x3ddeb923,0x3db08332,0x3d838f18,0x3d34c22f,0x3ce3deec,0x3c38171b,0x3c13736f,0x3b8bdba6,0xbc20f679,0x3bc13112,0x3cbd4ab6,0x3d5ba9e5,0x3d92c547,0x3dc6e88c,0x3de1b497,0x3d7745f3,0x3d30bd6b,0x3d98e1d2,0x3d295291,0x3d4c4680,0x3d597788,0x3cf8e5ef, -0x3d2414e2,0x3d78f01a,0x3d4a9ee6,0x3d3ea8a8,0x3d105fa3,0x3d483ec6,0x3d1f82e3,0x3cffac69,0x3d0da744,0x3d9f5722,0x3de0f2c7,0x3dd6d122,0x3ddc3b0c,0x3def4359,0x3dc9cef8,0x3db1c332,0x3d8d53cd,0x3d896c6d,0x3d79f591,0x3d5bc969,0x3d33aec1,0x3d0e5b04,0x3c9bd82a,0x3d3ab38b,0x3d6801cc, -0x3d972d2a,0x3d9f722e,0x3de3d49f,0x3dadaa39,0x3d95d47f,0x3d792293,0x3d8e14f8,0x3d7477d3,0x3d668979,0x3da32bf7,0x3d7bd277,0x3ddc73b1,0x3d44dcbe,0x3d9f737a,0x3d512775,0x3d776b0a,0x3d604a28,0x3d504f49,0x3d770554,0x3dad3d19,0x3d3c45f0,0x3dcb95d5,0x3dc74490,0x3db79725,0x3da2cd63, -0x3daf83f0,0x3daa03d3,0x3daf4180,0x3daee87d,0x3daedbd3,0x3db197c6,0x3db59822,0x3dbbccc8,0x3db6e1d3,0x3db1a901,0x3daf1105,0x3dc198c4,0x3dbb6f46,0x3dba3050,0x3dd1dd52,0x3d150e8e,0x3d84556a,0x3d75045e,0x3daa1eef,0x3d83d8ba,0x3d6699c5,0x3d82204b,0x3d82d345,0x3d8b99ab,0x3da645fe, -0x3dc5a447,0x3d90f294,0x3dccb0e7,0x3da80901,0x3d63ed68,0x3ddfe616,0x3d9e55d0,0x3db485c8,0x3da1bc59,0x3da014b8,0x3d9b43fc,0x3d9c6e09,0x3d96adca,0x3d94bf14,0x3d95b486,0x3d97d008,0x3d97b15d,0x3d95bb0b,0x3d92cf09,0x3d94cb3b,0x3d9941f6,0x3d9d2e20,0x3d9f36cb,0x3da1fa97,0x3d9d10fd, -0x3dbeb83c,0x3d9be003,0x3d70ce5b,0x3c54abc4,0x3d93e90b,0x3d6c03ab,0x3cb1d8a5,0x3c9f5611,0x3cbc987f,0x3cd091e1,0x3c978174,0x3cab33b8,0x3d0041e1,0x3d82386b,0x3d93bd28,0x3cdf2f49,0x3d67a7fe,0x3dee4ec6,0xbd9f2397,0xbd7f3c85,0xbd3aaf27,0xbd5199ac,0xbd53f65f,0xbd5b0123,0xbd44d3e6, -0xbd48dffe,0xbd5a7504,0xbd43e116,0xbd3d8a0f,0xbd36f088,0xbd3aee24,0xbd3bf5f2,0xbd416964,0xbd2ed4cd,0xbd298b7b,0xbd19e2b6,0xbd2397c5,0xbd28fbac,0xbd116e73,0xbd73f791,0xbd8cbc26,0xbda5df3f,0xbd4a29d9,0xbd7d7d35,0xbd955ce2,0xbd98d91e,0xbd96a8db,0xbd8fd72b,0xbd9e133e,0xbd9de323, -0xbda0a2fc,0xbd8e9e0b,0xbd51c956,0xbd9ad543,0xbd9617fa,0xbdc71ed5,0xbdab65c7,0xbdd18805,0xbdd6451e,0xbde3128f,0xbdc27e54,0xbdb9ef8e,0xbdd2ef80,0xbda37290,0xbda13f21,0xbd8fdca1,0xbd91f7ef,0xbd92c8a4,0xbd95dda2,0xbd66b410,0xbd53f18a,0xbd237544,0xbd3c28f7,0xbd3e36c2,0xbd14322b, -0xbd9b40a5,0xbd86d26c,0xbd8423fd,0xbd6202f9,0xbd0e80a7,0xbd235f7d,0xbd457ac1,0xbd6cf2e1,0xbd48be6f,0xbd6e9b63,0xbd0b5ba4,0xbd765d3f,0xbd809810,0xbd907674,0xbda6594a,0xbda351f7,0xbdc12599,0xbdd74e0e,0xbded2f21,0xbe04c376,0xbe102d26,0xbde5001e,0xbdd051db,0xbe03b868,0xbdbc4d20, -0xbdabd22f,0xbd9aed61,0xbda6a7f4,0xbda349c7,0xbd9e8f26,0xbd5f6ab8,0xbd2516b2,0xbca651ec,0xbd145ef1,0xbcf31cba,0xbd1b8bb3,0xbd976358,0xbd579c04,0xbd36ae4b,0xbcfc4584,0xbc7bd8ec,0x3ba2ad09,0xbc3cba34,0xbbdeb04c,0xbcb5fae7,0xbc5ca88e,0xbcf8c7a1,0xbd0d0713,0xbd279cb8,0xbd4845d7, -0xbd61b80f,0xbd837912,0xbdbb0e3a,0xbe092ade,0xbe442c22,0xbe4d7185,0xbe63512d,0xbe350e26,0xbe29fa3c,0xbe48e609,0xbe0747d7,0xbdff0f84,0xbdd0c9a9,0xbddf6448,0xbdd321a3,0xbddbc9b4,0xbd764222,0xbd0ffab5,0xbbf978b8,0xbcc0a2cd,0xbcd3b540,0xbcc5e2fb,0xbd4249a4,0xbcf9a0d7,0xbd07a01f, -0x3b5c8fd1,0x3c68482b,0x3d64cfd7,0x3c495082,0x3c489cad,0x3bdca23e,0x3c9793e0,0x3a5544f5,0xbc9269b8,0xbd043f2c,0xbd402830,0xbd850a91,0xbda8865d,0xbdb0be90,0xbe033c77,0xbe3d51b8,0xbe4b2e45,0xbe6120d0,0xbe22d76b,0xbe17f996,0xbe50a271,0xbe0be4ca,0xbde9bc79,0xbdddcf07,0xbde67e7c, -0xbde0c350,0xbdca4cf7,0xbd59d768,0xbcab7521,0x3c2f21ed,0xbc74dcd5,0xbc86b044,0xbc8cc905,0xbda7d20c,0xbd214672,0xbd1778fd,0xba454ac9,0x3cb85e4f,0x3d858700,0x3d44f735,0x3d341b68,0x3d183e4c,0x3d69477d,0x3d09f8b6,0xbc694fa1,0xbc74cd3a,0xbcbb6579,0xbd1440a0,0xbd606cb0,0x3ddcaf81, -0x3e07fa66,0x3de3457e,0x3d44954b,0xbd7e5dbd,0xbe15c077,0xbe395442,0xbdd1e0d7,0xbe12bfc4,0xbddfef9e,0xbd820860,0xbd667ba4,0xbd3b28e8,0xbd721e2d,0xbd44222e,0xbd1222c5,0xbc41176c,0xbccc8bd6,0xbc76b2a7,0xbc62c752,0xbd4f13b4,0xbba510dd,0xbd1c4772,0x3c516f7c,0x3c3f6f92,0x3d929b22, -0x3bed05d9,0x3c96ed34,0x3d9da04f,0x3d67f3d5,0x3d90ee48,0x3dbefbdc,0x3d4fbea4,0x3d45aa72,0x3d8d0927,0x3ddec1c8,0x3dc24f2d,0x3dcf4d21,0x3e211845,0x3e1088b3,0x3ce1ff58,0x3e2f9890,0x3e480242,0x3e012295,0x3d7106da,0xbc1d0048,0x3c85b14f,0xbbc6b0cc,0x3c6b034c,0x3ccef827,0x3d7a42f7, -0x3d46e7e6,0x3cdc99cb,0x3c2fa218,0x3cc5119a,0xbb91cc9b,0xbd5e723f,0xbc92edc0,0xbc6a232d,0x3c8efe79,0x3d1cf792,0x3db8fb2f,0x3d789f1b,0x3d7dfde9,0x3cf5b4e8,0x3dd801ea,0x3dd30dad,0x3d41fdf6,0x3dbe77c4,0x3dd4b468,0x3da763a4,0x3d8b23e3,0x3da58ffe,0x3dc682f6,0x3dc1772e,0x3d9a662b, -0xbd285bd0,0x3ce894ee,0x3d9e2ac6,0x3e32d5fd,0x3d57bc73,0x3c8b048a,0x3c5f2f7b,0x3c6be8b7,0xb80ce228,0x3bbe09c6,0x3c890830,0x3c70e3ba,0xbc2eefe1,0x3ca8e8bc,0x3d19aa81,0x3c93fee7,0x3c256fea,0xbc438a4b,0xbbe5cbce,0x3bfb4eeb,0x3c8b2c60,0x3e21cf94,0x3c45b149,0xbc116ba2,0x3bde7f1a, -0x3d90fdc6,0x3d9f8e9d,0x3e10f17d,0x3d677014,0x3d44b89e,0x3da710c5,0x3d9133a5,0x3d269d87,0x3d084407,0x3c407709,0xbd06b6d1,0xbe28104f,0xbdbe961b,0xbd9cc756,0x3d6dcb4b,0xbce16396,0xbd2c5651,0xbd8f8bc4,0xbcdf8a96,0xba3a5d82,0x3ca3d186,0x3d117b7c,0x3d106185,0x3c45dbf9,0x3d2b7845, -0x3d590486,0x3ceffc66,0x3cacf51d,0x3cc8f3cf,0x3c9e7c6a,0x3bebc4ea,0x3d22f84d,0x3e3cb88a,0x3be38574,0xbca5f3cb,0x3c959e4c,0x3c973728,0x3d4b8700,0x3e1fe50d,0x3caa39da,0xba85fbab,0x3cf0eb6e,0x3cf6cd4a,0x3d0df502,0x3bc8b319,0x3c8d56fa,0xbcb009d1,0xbe34b0c3,0xbdf522b3,0xbe0a4377, -0xbe11c724,0xbe42bb18,0xbe5b0648,0xbe5e2ffe,0xbe0f784a,0xbd816fde,0x3b64911e,0x3d193cfb,0x3d512014,0x3d2534db,0x3d6d4ded,0x3d86aa1b,0x3d97a189,0x3d866ced,0x3d4c1d7c,0x3d61c472,0x3d5d5a0d,0x3d809eb6,0x3e099d0b,0x3d457d18,0x3c8740f3,0x3d33f6b7,0x3b5bd906,0x3cb7c428,0x3da5babf, -0x3d461391,0x3d1e59aa,0x3ce5def4,0x3cbd05e0,0xbc36ed99,0xbcbf4416,0xbd754089,0xbddaefbc,0xbe439303,0xbded3726,0xbdb5a270,0xbda1d0e1,0xbdcf8f19,0xbe12be08,0xbe370d8e,0xbe3106bd,0xbde973bf,0xbd9bd6c5,0xbd032eb3,0x3c0a7090,0x3ccd2feb,0x3cf7be3c,0x3d05cc5b,0x3cc10340,0x3cde56c7, -0x3d3d2419,0x3d43d272,0x3d26b626,0x3cfba1ff,0x3d2a2a5f,0x3d633606,0x3d3b4e79,0x3d13a59c,0x3cff1333,0x3cc63d27,0x3cdfecb6,0x3c259fd0,0x3cd7812d,0x3c329404,0x3b87d410,0xbbd670fd,0xbcca47ea,0xbdbd7268,0xbe0528cc,0xbe17c528,0xbdb73912,0xbd92206f,0xbdb2e2e2,0xbd98c681,0xbd8df9e4, -0xbd7ab087,0xbd3be060,0xbd0b5dfe,0xbbbd2081,0x3cd0f903,0x3d068abc,0x3c278c19,0xbc1c595c,0xbc57f525,0x3ce04ca8,0x3d1ac847,0x3b9d526d,0x3cbbbe81,0x3ce4cb42,0x3d0e7108,0x3d2714d9,0x3cc00635,0x3d2bbc37,0x3cfa09a5,0x3d67d27d,0x3d47ea74,0x3d45be07,0x3d3651e3,0x3d14a6b0,0x3d146f03, -0x3c776438,0xbd5414ef,0xbd970048,0xbdb1e928,0xbdc51fd5,0xbdae3b61,0xbd82cfb6,0xbd4e1239,0xbd3cf0db,0xbd0619ed,0xbce02321,0xbca5ceb7,0xbca4cdba,0xbc05425e,0x3b2df63b,0x3c5b020a,0x3c724883,0xbb01a1f5,0xbc728e77,0xbcfeeba0,0xbd054d2b,0x3bd070f1,0x3c9fa2fd,0x3baa1b0f,0x3d00ac4f, -0x3d022824,0x3d063b12,0x3d37277a,0x3d0dc72c,0x3cd7a7a4,0x3ced87c9,0x3cc67803,0x3c80a7c8,0x3bfdfa69,0x3b9a0496,0xbb587412,0xbc9b638e,0xbcef7d2a,0xbd8202f4,0xbd3c1c77,0xbd1cdb08,0xbd21a4c3,0xbd2b7105,0xbd2b538b,0xbd1a409f,0xbd07e9f1,0xbcdaa9a1,0xbc8b4a24,0xbbf1f32f,0x3b2806c5, -0x3c6b4ea8,0xbb6c6e33,0xbbf801ad,0xbc368643,0xbc59ceec,0xbd22f31d,0xbcc6be8d,0xbb10dd8b,0x3bdeefe2,0x3c31e5dd,0x3cac5ccb,0x3d038236,0x3cfe3e60,0x3d0c7b18,0x3ba46703,0x3d1adc51,0x3be56121,0x3c8667f3,0x3bd3bba6,0xba422587,0xbc10fc98,0xbc731102,0xbd05eb3a,0x3d195289,0x3b2f72d6, -0xbc133854,0xbc96c51f,0xbcc4172d,0xbcd10d0b,0xbcf7d828,0xbd1bbfbe,0xbd15659e,0xbd0d232f,0xbd0fa5d2,0xbd0fbedd,0xbd105b80,0xbcf089fc,0xbcc63cc7,0xbcb769cc,0xbce26608,0xbcc9e394,0xbca4e0ad,0xbcab9f77,0x3caf8510,0x3c36aa6c,0x3c92faa2,0x3c1b5635,0x3cac669a,0x3cc3cbe6,0x3cdbb412, -0x3ce0dde9,0x3cda9d7e,0x3cf1fa05,0x3ca6787c,0x3d2e09ac,0x3cc1c658,0x3d03d6b1,0x3d2ce01b,0x3bf68f75,0xbc91a38d,0xbc993e8f,0xbc484acb,0xbc3cb684,0xbc4728dc,0xbc62cd5a,0xbc71aaf4,0xbc7f0364,0xbc6a67dd,0xbc6ab554,0xbc56e288,0xbc39c072,0xbc25b1d8,0xbc351369,0xbc612638,0xbc6d4766, -0xbc5a941b,0xbc6b2bff,0xbc678632,0xbccc9ebe,0xbc815537,0xbbc555bc,0x3c91308d,0xbbfaa766,0x3921d07b,0x3c91a38a,0x3ca66869,0x3c830866,0x3c71b6a3,0x3c894b74,0x3c5d05a0,0x3be188f3,0xbc401c24,0xbc7484ad,0x3b9a708a,0xbc096d90,0xbc853461,0x3c9655e6,0x3ca4c2fe,0x3c15506d,0x3c286846, -0x3c21106e,0x3c13d862,0x3bcdc9fc,0x3bb448eb,0x3b9d2f7c,0x3bde2055,0x3bcc4570,0x3b58aec4,0x3bbfe27b,0x3be8f088,0x3c01e50e,0x3c0432d4,0x3c099e9f,0x3c0845ff,0x3c1c2764,0x3c29fe9b,0x3bef8c6f,0x3cac16d5,0x3cd3cdab,0x3ce927c3,0x3caa7abd,0x3ce8d79b,0x3d07f979,0x3cfe294d,0x3ceff30b, -0x3ce1b54f,0x3cf8e5bd,0x3cf5327e,0x3d019c9a,0x3cdfe942,0x3c9fe700,0x3ce1f37e,0x3cccdfa8,0xba76d2d5,0xbbb023ed,0x3bb0f28f,0x3bc7327f,0x3be47760,0x3bffa3c6,0x3bea7d63,0x3b967061,0x3c7204cb,0x3c6c9864,0x3b8807b0,0x3c1e767c,0x3c0c0c6d,0x3be971f5,0x3bbaaad2,0x3c038343,0x3c0a3359, -0x3c4f5762,0x3c627606,0x3c11bf0b,0x3cefe9ff,0x3ccb4db5,0x3cceee76,0x3d06c168,0x3ced24a5,0x3d18a431,0x3cf5edd0,0x3cfa1f0f,0x3cd9e653,0x3cdd84a3,0x3c85d6c8,0x3d0076a0,0x3cf17861,0x3ccc66fd,0x3c9e3f20,0x3bb75e51,0x38fb5a06,0x3b992a02,0x3bcc455f,0x3c344ff0,0x3bdf4337,0xbbc0487e, -0xbc359ae6,0xbc8059ec,0x3a575ed6,0x3b3ea9e6,0xbc72c83b,0xbadd314a,0x3af2acc6,0x3b07c084,0x3b08e241,0x3b54475e,0x3bac211d,0x3c74ecea,0x3c53c96d,0x3c91fd74,0x3d10e952,0x3ce6dc93,0x3cb46df6,0x3d2d0fab,0x3d30bd47,0x3d2bd94a,0x3d13f8b0,0x3cd5e201,0x3d0a5a8e,0x3cb258a2,0x3cf68349, -0x3d1b023e,0x3d095349,0x3cf36a19,0x3ccbd27e,0x3c013b7b,0xbd678264,0xbd3d6337,0xbb3ba3c2,0xbc2be7ae,0xbb967773,0xbbc08d7f,0xbba3aace,0xbcbd92f2,0x3c797a77,0x3ca0916e,0xbc65fdff,0x3baceed6,0x3a74ef90,0xbb922f13,0xbc0268bb,0xbba5f927,0x3b25700b,0x3c3ab4b9,0x3c842e5d,0x3c8d03ce, -0x3cd8972b,0x3cad14a5,0x3cb4f450,0x3d342870,0x3d736674,0x3d6e5cef,0x3d47a1cc,0x3d055c06,0x3d06d978,0x3ceb799e,0x3cf59164,0x3d2e07dd,0x3d13e106,0x3cb34098,0x3bf17d68,0xbcbd2478,0xbd1169dd,0xbd0ca879,0x3aff8737,0x3c573768,0x3c2d78ea,0xbcd44cbb,0xbd361dbb,0xbd365515,0xbc829d5f, -0xbb065a84,0xbd1c20ab,0xbc2329d9,0xbba95e75,0xbb952606,0xbc3618ab,0xbbcc0ec8,0x3a890071,0x3c94cb57,0x3c87214e,0x3c915b76,0x3d26aaf2,0x3cf126a7,0x3c965099,0x3d371240,0x3d645abb,0x3d97eda3,0x3d4739d0,0x3d073264,0x3d06e5c0,0x3d260881,0x3d0d86c1,0x3d112327,0x3d1d039a,0x3d0c1bdc, -0x3cf5da87,0xbc0baa5d,0xbcf253ee,0xbcbb11f7,0xbd01f95f,0xbd9bf675,0xbdd74ad7,0xbe1dda84,0xbdee57db,0x3bcd76ff,0xbd613e68,0xbdac7705,0xbdf636ad,0xbdc45fb6,0xbd8efcfc,0xbd2db718,0xbc3fe9c0,0xbc073961,0xbd637712,0x3b5ea413,0x3cb4c7a3,0x3d5ceda6,0x3d48891e,0x3cb3bea6,0x3d3082ef, -0x3d2ae9af,0x3d4b5baf,0x3d98399f,0x3d4f8cd3,0x3d40ef60,0x3d729f0a,0x3d82f87d,0x3d7804d2,0x3cd99f0e,0xbc781a91,0xbd17759b,0xbcd697cc,0xbd78c405,0x3e1b67a6,0x3e028489,0x3e3c0190,0x3e27a06e,0x3e367b39,0xbd602ce4,0xbe0a19d5,0xbd53b0ab,0xbdceb4fa,0xbd9f130c,0xbe13aa54,0xbe02c6be, -0xbe02170d,0xbdd1126f,0xbd947891,0xbd478241,0xbc9c21ca,0xbc7f0959,0xbcaa99fa,0xbb1164e3,0x3d3952a5,0x3cec79d9,0x3c686234,0x3d09f3b6,0x3d229df7,0x3d82c65f,0x3d2f77f1,0x3d13e25c,0x3ce26258,0x3d93b55d,0x3d87419a,0x3daeda61,0x3da67827,0x3dc6d0e3,0x3e02ec7f,0x3e134fcd,0x3d8f6dde, -0x3d522702,0x3daae2e4,0x3dab46ca,0x3d356da8,0xbd171a82,0xbd36199a,0x3d251a93,0x3d17d749,0x3cad85b9,0xbd865655,0xbdb4d48b,0xbdc27568,0xbdf9b9bc,0xbe029cda,0xbdcd44a5,0xbe06144f,0xbdadb769,0xbda261a4,0xbd0a4845,0xb9e2e918,0x3ccdee02,0x3d1ffafc,0x3d29caaa,0x3d7b95a1,0x3e09ccb2, -0x3d392c49,0x3c9545c8,0x3ca556c1,0x3cf004d5,0x3d45b4ac,0x3e20750d,0x3d9c31a6,0x3d85939f,0x3ce4a965,0x3d537f5f,0xbc6d5991,0xbc8485fb,0x3c6b96af,0x3cf318aa,0x3c49e49b,0xbc5624b3,0xbc0363af,0x3d2e1c94,0x3d949200,0x3da6145f,0x3d5c2d0e,0x3cd84401,0xbc097f35,0xbd64e44b,0xbd80efce, -0xbd9f21ca,0xbdb7703f,0xbd79b983,0xbd334efb,0xbc4d4b0c,0x3bf73e9f,0x3c8f436b,0x3cd4ac2b,0x3d6993b7,0x3d6e5a20,0x3e0622b4,0x3d2920c1,0x3a595edb,0x3d2bf974,0x3bc79ac5,0x3d23a3c7,0x3e00955d,0x3d603500,0x3d273a0c,0xbc8799ff,0xbc82adb6,0x3cae06d5,0x3c8afe88,0x3cb1959f,0x3cd934a3, -0x3d8ffd98,0xbcc09f62,0xbcb60940,0x3d186b7e,0x3d9fba7a,0x3e0a4289,0x3e45796f,0x3e3b1087,0x3e20ae6b,0x3e014aca,0x3dcdf6af,0x3d9cccda,0x3d47fae2,0x3d408917,0x3d0e4819,0x3bb720f1,0x3b4e3469,0x3c65c7c9,0x3c964d90,0x3d2e389a,0x3d23308e,0x3d754f3a,0x3cc76ee8,0x3c80d0aa,0x3d7c3cff, -0x3cc1ca25,0x3d049dcb,0x3d3174cb,0x3d070ae1,0x3d36bf46,0x3d0a11c2,0x3d132578,0x3c6bd543,0x3ce18c4e,0x3d059070,0x3cfefa21,0x3caefe88,0xbcf14a01,0xbc306cf7,0x3da1994f,0x3d9b7d2b,0x3dc758cd,0x3de64a5b,0x3de2a62a,0x3d85c1c9,0x3d4db7ba,0x3d099303,0x3cc357f6,0xbccf6c12,0x3c6223d7, -0x3a20cabc,0xbc8f9944,0x3ad93686,0xbc2d059a,0xbbc844fa,0x3c8d47b0,0x3cfa75fc,0x3d469c4e,0x3d1a16a2,0x3ccc9668,0x3c01b149,0x3cae27f6,0x3d249187,0x3da83f6a,0x3d472c62,0x3cb37889,0x3cb8b7f3,0x3c45c97e,0x3d443cdf,0x3d400f23,0x3d697447,0x3d4a5563,0x3c3a9a72,0x3b96288b,0x3c3ac157, -0x3d894f69,0x3d58fbf3,0x3d81fb96,0x3d968829,0x3da4c30f,0x3d95177e,0x3d6ad919,0x3cd218c2,0x3c6613c9,0x3cd16ba5,0x3d0e0a28,0x3d10b739,0x3ca612a4,0x3bd97507,0x3cbc4ddf,0x3cbeea54,0x3cf75949,0x3d0f9db4,0x3d061cd3,0x3cea8bfe,0x3cc75060,0x3cdc88dd,0x3c9f3773,0x3ca022af,0x3ceb22f3, -0x3ca23369,0x3cd2e19d,0x3d03cc16,0x3d337f35,0x3d4d558f,0x3d4ff2a7,0x3d3e3674,0x3cfcbd58,0x3a87c8ec,0x3cd191e9,0x3d26f7f8,0x3d8fd468,0x3d3fd3c6,0x3d182fa8,0x3cc25333,0x3cdb9dec,0x3cb53d70,0x3c3f5862,0xbbf8440e,0xbc2ba534,0xbc1ae52e,0x3c2eed10,0x3cf0f857,0x3d0e6eb1,0x3c892107, -0x3c90d985,0x3d089c08,0x3cc8396a,0x3ce9842c,0x3cffc34f,0x3ccfd1ac,0x3ccc8f86,0x3cbb58e4,0x3cf695c5,0x3d227baf,0x3d5ce882,0x3d3f24ec,0x3d393ed8,0x3d56b291,0x3d453e32,0x3cf7fe7c,0x3d2dec36,0x3d0b6bff,0x3cf6ff98,0x3ce74280,0x3d3360f3,0x3d5c2caa,0x3d8c4f59,0x3d53166e,0x3d215555, -0x3c9ca214,0x3c8d0375,0x3c3aa06a,0x3c0eb5ab,0x3c88588e,0x3c633f00,0x3be0bac7,0x3c4193ef,0x3cfae8a9,0x3cd4bbe5,0x3c873c9f,0x3cbc360e,0x3cd59a92,0x3cb8f931,0x3ca80d1e,0x3cccc9fe,0x3cab5d4d,0x3ce5c648,0x3c9677e7,0x3d01cf8e,0x3d07b564,0x3d24ee6a,0x3d3ba82c,0x3d3934e5,0x3d4622dd, -0x3d290196,0x3c8bad92,0x3ce43cda,0x3d2cbbad,0x3d50158d,0x3d67df1a,0x3d8894b0,0x3d8fbc4d,0x3da6d4a7,0x3d95b7d7,0x3d8ba690,0x3d834c88,0x3d6342e7,0x3d33da38,0x3cf075cd,0x3ce08959,0x3d050a4f,0x3d2c2807,0x3d28b249,0x3d212aac,0x3d247991,0x3c80f54b,0x3cc9376d,0x3cba6b9b,0x3d003c10, -0x3ce49130,0x3cea45cc,0x3cda166f,0x3ca5b71e,0x3c9f629c,0x3c45df08,0x3b25b7aa,0xbac6af22,0x3a9aab48,0xbb0850fc,0x3b8061a9,0x3c9e3b17,0x3d4a6bc1,0x3d39762d,0x3d3ac6a4,0x3d3e8410,0x3d433d9a,0x3d4e27e7,0x3d531fc3,0x3d605895,0x3d517ccb,0x3d49aced,0x3d3f425f,0x3d3821ef,0x3d3a025e, -0x3d3c2f0c,0x3d467b47,0x3d40bca7,0x3d3b0db3,0x3d3aaccf,0x3d3a2a15,0x3d57ffc2,0x3d4a5c15,0x3d3c03fb,0x3d0b6677,0x3d432e1f,0x3d3579f8,0x3d1879dc,0x3d19122b,0x3d19df2d,0x3d1b4a9b,0x3d2301c7,0x3d26b16a,0x3d2a582b,0x3d499cbe,0x3d48eebd,0x3d2af0b3,0x3d42fbd5,0x3da9dd49,0xbd4a5036, -0xbd12f34e,0xbcea0f51,0xbcf69deb,0xbd04d71e,0xbd1f1166,0xbd1c8a39,0xbd255961,0xbd347185,0xbd0d2a55,0xbd0104e8,0xbd082266,0xbd042914,0xbcfcf019,0xbce10046,0xbce95256,0xbcef7217,0xbcecc060,0xbce5902f,0xbce2c0dc,0xbcd653b1,0xbd0da53a,0xbd161542,0xbd11eb21,0xbcea987e,0xbd0424b7, -0xbd0d5e54,0xbd09e176,0xbd0a0df2,0xbd090edd,0xbd11a15d,0xbd0c0bea,0xbd058cb3,0xbd0698cb,0xbcf2f5c5,0xbd03d544,0xbd1395c3,0xbd3bf116,0xbd2aa012,0xbd43c8c2,0xbd573aab,0xbd8fe796,0xbd876d86,0xbd8cc7c9,0xbda2efe3,0xbd5dd084,0xbd5b2420,0xbd5d4ee7,0xbd51030e,0xbd3e884b,0xbd0b24ee, -0xbd0b1b9d,0xbd12d489,0xbd0c6e8c,0xbcfd31f5,0xbcf1f1e6,0xbcde6823,0xbd2526a5,0xbd151b3f,0xbcf5f371,0xbcdd0e01,0xbcb52037,0xbcdf422b,0xbcc7f9a8,0xbcd2b5e1,0xbcdc5084,0xbd09a498,0xbcdcdd5e,0xbcbaf63b,0xbcca4177,0xbcdcb7e2,0xbcee0ac1,0xbd2ba46e,0xbd294a5e,0xbd321dc1,0xbd2b7877, -0xbd7204ea,0xbdbe13db,0xbdc44f1d,0xbdc97538,0xbdf6a8c2,0xbd927a01,0xbd68df83,0xbd83faa7,0xbd806103,0xbd5a58b9,0xbcdc43d3,0xbd0bafa5,0xbcfab9b0,0xbd071af8,0xbccd9e1d,0xbcaea775,0xbcbd77f4,0xbd14d27e,0xbcdf2991,0xbc884672,0xbbad5132,0x3ade758f,0xbc2ef779,0x3abedabb,0xbb800d77, -0xbc3da8bb,0xbc651030,0xbc5bda05,0x39be06f2,0xbba7af5b,0xbc0ed780,0xbbbc35eb,0xbd022cfe,0xbd266e4a,0xbd355f8f,0xbd7364c0,0xbd965426,0xbe05c299,0xbdf8dd55,0xbdffc2a4,0xbe1a0d75,0xbdc8f824,0xbdaa0e52,0xbdb1f4be,0xbda65d52,0xbd8a0c91,0xbcb847a8,0xbd02c9fc,0xbccb8400,0xbcdeec7b, -0xbc5ceeae,0xbc4e416c,0xbbf5f063,0xbca83ecf,0xbc4f2a45,0xbb801f6e,0x3ca4f627,0x3ccc7a21,0x3c6bde27,0x3cda1615,0x3cba2f19,0x3c85e8ac,0x3af4fee2,0x3a8f72a7,0x3c8d58e1,0x3ca7da34,0x3c6a0867,0x3bfe0456,0xbd12823d,0xbce2e467,0xbcca14f3,0xbd0deb47,0xbd7fe598,0xbe09c2b7,0xbe14f847, -0xbe262ef7,0xbe42db1e,0xbde03288,0xbda0b909,0xbdc0bf19,0xbdbb6e8f,0xbd8cdef0,0xbc9bb345,0xbce0dbb1,0xbcc4c8ec,0xbcea7fe6,0xbc19fdba,0xbb3c92e1,0x39e4ed5d,0xbc948d80,0xbbb7abec,0x3c04306d,0x3d21f6be,0x3d70aef3,0x3d4f58cc,0x3d666f4f,0x3d1bf8b5,0x3d1531c2,0x3cc1bf9b,0x3cae1759, -0x3d355677,0x3d3a153d,0x3ce621a8,0x3d0fe299,0xbba3e3d1,0xbe0dfb15,0xbd8fa0aa,0xbe0bf7e8,0xbe033af2,0xbd705297,0xbddf07f9,0xbddc663d,0xbe1623a0,0xbdde34b8,0xbda501ea,0xbd9420b2,0xbd8b0723,0xbd9c3911,0xbd71d44f,0xbd45b1d9,0xbc81d182,0x3c8f0286,0xbbd9538d,0xbcab128a,0xbcea13a9, -0xbcf5291e,0xbc7e46a0,0xbb52aea0,0x3d063dd3,0x3cfa2bc9,0x3af636fc,0x3d571830,0x3d77ab98,0x3c963def,0x3d78a634,0x3d242d35,0xbd0e914e,0xba4e6d68,0xbc675692,0xbd4fd798,0xbe14f830,0x3e0253de,0x3e01581b,0x3d92953a,0x3ca31774,0xbd5fee85,0xbe0325bb,0xbe4b6e06,0xbe7691c0,0xbda75f81, -0xbbed8cfd,0xbc9aee44,0x3c398ba9,0x3c85273d,0x3d236f24,0x3ab4fe77,0xbc8f849a,0xbd3b053d,0xbccf93a2,0xbc10b908,0xbd1f56c4,0xbd6ed916,0xbce44a19,0xbb8ea34e,0x3d08e2d4,0x3d5a9afe,0x3d7de2e8,0x3d044fae,0x3c66ca16,0x3c3f4d34,0x3cbf4eae,0x3d00fad5,0x3dc3b493,0x3cb06a90,0x3c50d230, -0x3d6aa62a,0x3ddddda9,0x3c15f1bf,0x3d53c5e0,0x3d3cbfa2,0x3d77ce85,0x3e46d47d,0x3d91f0b8,0x3d759b94,0x3ac0183b,0x3c6128ad,0x3b7f208f,0xbccc765b,0xbd213132,0xbd528992,0xbcf98d3b,0xbd1cd5da,0xbcfa03db,0xbcc61271,0xbd001ff4,0xbd29ffca,0xbd0f5d54,0xbd16900f,0xbcec3535,0xbd247b6e, -0x3d4a8191,0x3d34c953,0xbc1ebe07,0x3c81f01f,0xbc72c000,0x3bca0236,0xbc5635c9,0x3c98095a,0x3db6cfc4,0x3db6a73f,0x3dcf49ce,0x3cf26b43,0x3c85ed8e,0xbcc6c17d,0x3bca471e,0x3d0aeec9,0x3d9b0ba7,0x3e3d6e76,0x3e121c8f,0x3e36ecf0,0x3e0dbddd,0x3e23be05,0x3df6227e,0x3d629786,0x3cb40506, -0xbc361475,0xbca768bd,0xbd198166,0xbd129d5a,0xbc876657,0xbd33019f,0xbd47baa4,0xbcecf58c,0xbd0e7953,0xbc19f395,0xbd117134,0x3d95817a,0x3d8e5805,0xbd14a694,0x3cc51b35,0x3bf66db9,0x3cc89faa,0xba660589,0x3d0799c2,0x3d2d1560,0x3dbc1334,0x3dc1bb60,0x3c978e4a,0xbab4d6d6,0x3cd9e03c, -0x3cbf367f,0x3b8d7cbd,0xbc8f298b,0xbd2787d1,0xbd3f2de6,0xbcf8677b,0x3d625888,0x3e013ad3,0x3e170fc1,0x3d975f57,0x3d8f39c2,0x3ceed10a,0x3c15e579,0xbd2fc359,0xbd49b434,0xbce1bad8,0xbd14891d,0xbcf6f987,0xbc81b0f7,0xbc886990,0xbb7b26ed,0x3bc6130c,0x3d633d93,0x3d607433,0x3ca643eb, -0x3d21597f,0x3d0793e5,0x3d1223ea,0x3d680a05,0x3d7a14da,0x3c9aacd6,0x3ca47f33,0x3c82ac4e,0x3c83d4ac,0x3cd09ab0,0x3b1fa69a,0x3c14e16b,0x3cb0e440,0x3cdca057,0x3d19a0ca,0x3af72913,0x3b5de750,0xbc18aed4,0x3bcc96cb,0x3ad102b7,0xbccd862a,0x3cca8ada,0x3d0bbef2,0x3d88a197,0x3d318e4a, -0x3ced57a9,0x3cee1059,0xbc0d085a,0xbc94c179,0xbc1e079e,0xbb623859,0x3c2086d7,0x3c0735e4,0x3bc14c05,0x3bfb9445,0x3cab68d3,0x3bfa3365,0x3b1e3588,0x3caca296,0x3bca988c,0x3c80147e,0x3ce6b130,0x3d5e236d,0x3d6c7f73,0x3c9dddd9,0x3c5a67b4,0x3b17706d,0x3b6a62f1,0x3b4d38db,0xbc0f3518, -0xbc89c850,0xbd5987e2,0xbd69b745,0xbd1dba07,0x3c833cf0,0x3ced8cd4,0xbc3d0405,0xbc951953,0xbbfdbbd4,0x3c38dff4,0x3ccbcd0f,0x3c9f9c78,0xbc027531,0xbbcf7fa7,0xbc15cc94,0xbc12534f,0x3c097f73,0xbb162876,0x3b48a5bf,0x3c217cb3,0x3c760abd,0x3d16ea97,0x3c9c275f,0x3c8e1dff,0x3be7c289, -0x3c3cae9b,0x3c816b5e,0x3c593482,0x3c26f7f8,0x3b78ba30,0xbc0f3044,0x3b7e0435,0x3b91a484,0x3c021b37,0xb9a9b00f,0xbbc6dfc0,0xbc013bce,0xbcd91f8e,0xbcf17637,0xbd21e3e3,0xbc59a7ea,0xbbfdc3dc,0xbb23978e,0xbc3cb638,0xbc962bdd,0xbc5ab55b,0x3b7ef99f,0x3bb416a2,0x3b6ac0a0,0x3b32b36e, -0xbb8ed533,0xbbd5ad71,0x3c5c8d68,0x3c487d59,0x3b9c767c,0x3bf0c091,0x3be7c8fe,0x3c11cca1,0x3c9b1065,0x3cb40f9b,0x3cbf556a,0x3c9f272f,0x3c73f265,0x3c846ae9,0x3c53c113,0x3c70e4f7,0x3c13a9b4,0x3c08fa24,0x3bd159e3,0x3acaef7c,0xbbdfabe6,0xbc5b8546,0xbcb91494,0xbc9f23b9,0xbcb8f574, -0xbcf8d2f6,0xbc83072f,0x3aeaa3e1,0x3ce3c0cf,0x3c682106,0x3bb788c7,0xbb9e89cd,0xbb8a69a8,0xb93b92d5,0x3c87bbfc,0x3c80d048,0x3c2de6ab,0x3cac1826,0x3cb3501e,0x3c7abff1,0x3c49703d,0x3c2bebf4,0x3bdb0cbe,0xbb9c0276,0x3be18f7d,0x3bb922b7,0x3ccbd4b8,0x3c2a43cd,0x3c3c915d,0xb93ea46e, -0xba7ed815,0x3bc0ec82,0x3b9aca14,0x3b5e4416,0xbc529562,0xbcbe2e34,0xbca05eec,0xbc7902ac,0xbc34e2e2,0xbc79e4f2,0xbc6bff8a,0xbc7af204,0xbbd646a1,0xbc01af69,0xbbf6cba6,0x3bac63d7,0x3cbf839e,0x3d193c22,0x3d1c0c80,0x3ce84009,0x3c9cf139,0x3c8c235d,0x3c52db50,0x3c175ff2,0x3c9e3624, -0x3c17a8b6,0x3baccc88,0xbb6bbeda,0xbb79896a,0xbbc12c75,0xbc1e787f,0xbc6d11f6,0xbc97afcb,0xbc94157b,0xbc653f45,0xbc4fc1a2,0xbc2ebf66,0xbc687f8a,0xbc605ec8,0xbcaad6b7,0xbc9e4bbe,0xbcce1469,0xbccdbc15,0xbce08b45,0xbce66484,0xbceb15a0,0xbce85a80,0xbcf91f9a,0xbce52fc4,0xbcbe4a17, -0xbc9d751a,0xbc9d2bb1,0xbcb7ff21,0xbcbdaa70,0xbcd0d63b,0xbcb7cba0,0xbcaa4b65,0xbca78136,0xbca035c2,0xbcb994a3,0xbc85ab36,0xbc1581da,0x3b8f56b9,0xbc9be1eb,0xbc53af25,0xbad1abce,0xba634176,0xb9ac1e9d,0x38b84fc7,0xb9ceca78,0xbb3cd14a,0xbb8ab8fd,0xbc65789d,0xbc9fceaf,0xba8194f4, -0xbc3bbe0a,0xbd3e339e,0x3c63208a,0x3c143f0a,0x3c0410f7,0x3c085ece,0x3c10b348,0x3c0796f4,0x3bee86c0,0x3becc826,0x3bf95017,0x3b97f3f6,0x3bb07280,0x3c412310,0x3c1d4b5f,0x3c05c111,0x3bcecc4f,0x3bd6ed34,0x3bddd327,0x3bc982fb,0x3bf7da86,0x3bfc9cf1,0x3bcb0486,0x3c269c0a,0x3c370364, -0x3c050336,0x3c4a7602,0x3c458f9b,0x3bdb4460,0x3bfb7027,0x3be3963a,0x3bc08154,0x3be35430,0x3befac7b,0x3c2361cd,0x3c1d274e,0x3bfb672b,0x3bac86e6,0x3bc3503d,0xbbf3a805,0x3bcd2dc2,0x3c886f91,0x3cb4af2f,0x3cc6b0dc,0x3cc6c81a,0x3c9790b8,0x3ca38d22,0x3c025e91,0x3c2acaea,0x3cb5b259, -0x3c934b24,0x3c85bfa2,0x3c26c611,0x3c1e4dc4,0x3bfb176d,0x3b8993e3,0x3c0cd5f9,0x3c0d85e6,0x3b223aaa,0x3c0f6b18,0x3c355026,0x3c868b80,0x3c8837e9,0x3c66666e,0x3c098539,0x3c6dd303,0x3c706945,0x3c0d3865,0x3c0f1b78,0x3c0fdd1f,0x3c835e5e,0x3c286aca,0x3bf5289f,0x3c116731,0xbaff8f29, -0xbc3128bc,0x3bb52b35,0x3c4ba7f9,0x3c9d4cf2,0x3ca8c40e,0x3cad347a,0x3c9076a7,0x3ca7b156,0xbc01b034,0xbb43fe36,0x3d04217c,0x3cb802af,0x3c8e7dad,0x3b4ae1df,0x3b2fc601,0x3ae6ed80,0xbb2aa773,0x3bbb5047,0x3bc2673f,0xbacfa4c2,0x3c37315c,0x3c51aaef,0x3cbf5a3a,0x3cb8e587,0x3caa61ad, -0x3c1b84c8,0x3c85e011,0x3c4c60e8,0x3bf942d4,0x3be95254,0x3c284d0d,0x3cc52983,0x3bfaa865,0x39d9b63f,0xbaa5c866,0xbc37bbc7,0xbd119f85,0xbbf621c4,0x3cbb013d,0x3d0fb469,0x3d3b2c30,0x3d60c827,0x3d207d21,0x3d4d7c6b,0xbb333145,0x3bed7bda,0x3d401bff,0x3d08cdbf,0x3cf69850,0x3c07a841, -0x3bdb175d,0xba3616ee,0xbc3175ab,0x3b4dd1d0,0x3b2223e8,0xbc30ea35,0x3b32f31d,0x3c1d9300,0x3cdd5272,0x3cec0ecd,0x3ce455fb,0x3b8a9eb4,0x3cf81774,0x3ccc43c5,0x3c29cac0,0x3bdd647d,0x3bfcb516,0x3cfbef7a,0x3c15ac6f,0x3a48e33a,0x3b639d71,0xbccf5fad,0xbd0af639,0xbc19baa1,0x3c1d94fd, -0x3c806603,0x3ca1c524,0x3ceb6220,0x3cdf0232,0x3d0c78a4,0xbcb91e93,0xbcb4e07a,0x3d710346,0x3d18fe04,0x3cc6c7b2,0xbbddda69,0xbbfbd3fe,0xbc23a633,0xbc63cd81,0xb9910443,0x39884223,0xbc69c971,0x3c5660da,0x3c69f0da,0x3cfde478,0x3d1f86f1,0x3d1efabf,0x3c88e570,0x3d3313d4,0x3d1d72ae, -0x3c9c484b,0x3c7950a2,0x3c7cb96b,0x3d29c841,0x3c5ae1d2,0xbc2c9c20,0xbb6fbdc3,0xbd27110d,0xbda43e6d,0xbd9c5326,0xbded54ad,0xbda81913,0xbcca4756,0x3d10af0c,0x3c8c3fb9,0xbd8c6ecc,0xbd130292,0xbd0fa704,0x3c174703,0xba2a5044,0x3c53d824,0x3c74873c,0xbc61e8e9,0xbd0cc8cc,0xbcfb3aaa, -0xbcb61706,0xbcad1937,0xbccd70d4,0xbc5f8985,0xbc4a593c,0xbb9b2e99,0x3c7637b3,0x3d06b8eb,0x3c7370f3,0x3d18523e,0x3d277e34,0x3c6b6ebf,0x3d3056ce,0x3c4e5deb,0xbce84840,0xbc870b52,0xbc95badc,0xbd0943cb,0xbd9c92c6,0xbb7663eb,0xbca4dc0d,0xbdffe404,0xbe0260f7,0xbe37b65b,0xbdc3364a, -0xbdc1f9b7,0xbdd45082,0xbe08043b,0xbdff2972,0xbd64e97a,0xbdaead5f,0xbdb8faee,0xbdc5bc5c,0xbdbf890e,0xbd754d97,0xbb861cb4,0xbc88205a,0xbc47d2e4,0x3c7d79ee,0x3cab0104,0x3cbbe22e,0x3ce70b00,0x3d298b4d,0x3d328f41,0x3cf2c842,0x3cc1984b,0x3bcf68da,0x3c5dacc3,0xb9f1af23,0x3c822d8e, -0x3d82409c,0x3cb16248,0xbc5b07a3,0xbd8c9758,0xbb8153de,0x3d183ed7,0x3d8784cf,0x3dc21e62,0x3d90eae0,0x3cf9d95a,0x3da746f4,0x3ce6ed64,0xbe171327,0xbdc192ab,0xbdbb26f0,0xbd06349c,0xbd5e2590,0xbd3c1088,0xbd05a395,0xbd424656,0xbd42028f,0xbc3e1f4f,0xbcf1d83f,0xbcfa3b63,0xbc863a47, -0xbcb0e104,0x3bbf9a47,0x3c2b93d2,0x3d9839dc,0x3d84231b,0xbc3c8702,0x3cace3f7,0xbac599db,0x3c31c874,0xbb847bc3,0x3c99d3d2,0xbbbf08f6,0x3dadc27a,0x3dd1e4da,0x3d97be8c,0x3d4513a5,0x3d6560d6,0x3db1916d,0x3e14eb2c,0x3e118e98,0x3dfecb25,0x3e0f763b,0x3da60804,0xbddb8ffc,0xbd34e584, -0xbd69b938,0xbd36d47b,0xbdb83cc0,0xbdcc17bc,0xbd9b2a5c,0xbda4fee8,0xbd914fee,0xbd5741c5,0xbd3e8fb5,0xbd2f5348,0xbd0c650b,0xbcc203dc,0xbaa8bd2d,0x3acd6c46,0x3d989f03,0x3d86185b,0xbd157abb,0x3cc89a7c,0x3c7c8645,0x3c047afb,0x3c88726f,0x3d1cbfcf,0x39dc7ae5,0x3db043ae,0x3dd2dfd4, -0x3dbe3991,0x3d83666c,0x3b170b76,0xbc0b3be4,0xbc25633e,0x3cdb409f,0x3ca1f3d6,0x3db6f1e4,0x3dc35f2c,0x3d219615,0x3d9da148,0x3d640317,0x3c4d6e53,0xbd691284,0xbddd1a04,0xbe0bd927,0xbe05a272,0xbdeaf1a7,0xbdb72a52,0xbd98070e,0xbd526eab,0xbd03ef1c,0xbc28e61e,0x3c29f07a,0x3b836784, -0x3d033bf5,0x3d045e61,0xbb8aa210,0x3cd42755,0x3ce7f95a,0x3c0495e1,0x3d2a89bd,0x3d655328,0x3d572922,0x3d55fd1e,0x3d0ae330,0xbbd2b092,0xba972b63,0x3d1d6f2a,0x3d2b1e82,0x3d3fcafd,0x3d31807c,0x3daa3a1a,0x3d65a625,0x3c35e618,0xbd94863e,0x3c2a89f8,0x3d74a284,0x3df7a310,0x3de11e14, -0x3d9a3b5b,0x3d8af214,0x3d8946e9,0x3d2b1d62,0x3d0a9afc,0x3d341666,0x3d150c04,0x3d1b93dd,0x3cd2919c,0x3cc8eb82,0x3cca60eb,0x3d56062a,0x3d5f27cb,0x3cce8e04,0x3c292ad5,0x3b7354a0,0x3a9466ca,0x3c195c3a,0x3c4e7273,0x3c05eeaa,0x3d288552,0x3d496162,0x3d40cfc4,0x3d30840f,0x3ce53e8c, -0x3ce64cb8,0x3d3c9874,0x3d7dec80,0x3d795bff,0x3d4d1e9d,0x3cee1d0b,0xbc111d96,0xbc73c372,0xbc269584,0x3d1744bc,0x3c019c97,0xbbf4a576,0xbd40b968,0xbd81a468,0xbd4f3974,0xbc20b618,0xbb899962,0x3b9c4533,0x38dace24,0xbc4b60cf,0x3c0dda72,0x3bd91369,0x3c99aec9,0x3cb3da4b,0x3c7447e7, -0x3ceb2cb6,0x3ccb5d6a,0x3cccf291,0x3d0af65f,0x3d39e1a6,0x3d3457b2,0x3d2bd602,0x3d0a4830,0x3ccaa18e,0x3cb0f0bd,0x3d149a1d,0x3d37d33e,0x3d52ccae,0x3d5e2421,0x3d5fc4b4,0x3d055c8f,0x3c338d8a,0xbc56e036,0xbc44c730,0xb9810a2e,0x3cc3126b,0x3cc6a721,0x3cc40fbd,0x3c9a24c2,0x3c23f657, -0x3c25145c,0x3c84ebac,0x3c7a9cb5,0x3cb5f81b,0x3caa8068,0x3bd73b07,0x3c360b92,0x3ce19609,0x3cb6e54b,0x3cccc458,0x3ccbc1cf,0x3ca4f9e4,0x3cb9f1a0,0x3ccdfee0,0x3cd2f4cc,0x3cc2ae01,0x3caa8a7d,0x3cf4114d,0x3ce77c49,0x3cd606fd,0x3ce6f70f,0x3cc2fdb2,0x3d051830,0x3cc2d608,0x3c9034c1, -0x3c80f0fe,0x3bbce6de,0x3b49e9c3,0xbba92531,0x3b952d16,0x3a28bc30,0xbb45f086,0x3b9fb73f,0x3c830fd4,0x3cbd22e0,0x3cc4e7d8,0x3cbb54f3,0x3c4324d6,0x3c5d0665,0x3c9c1779,0x3c4f53c8,0x3c83a2a3,0x3ca1a310,0x3cceebae,0x3cc1e279,0x3cb90072,0x3cd7f7a7,0x3cb22ee3,0x3cf7f10d,0x3c899951, -0x3cc691b8,0x3c9a2b61,0x3cc09e4d,0x3c99cb26,0x3c84a7b9,0x3c93789b,0x3cd1ceeb,0x3b5e3ca8,0x3c568ecf,0x3c124d29,0x3bb7150d,0x3aac7d28,0xbbb2a6aa,0xbc316bdf,0xbc932706,0xbca4d185,0xbc6baf41,0xbc16a932,0xbc2081af,0xbc5f9860,0xbc47af6b,0xbc50452a,0xbbfa8914,0x39d23e44,0x3b15f478, -0x3b62a912,0x3c036f22,0x3b0ea6da,0x3bbc8c31,0x3b5b8b11,0x3bebabf3,0x3be185ff,0x3ba10206,0x3c2cfe26,0x3c5db240,0x3c884065,0x3cc299de,0x3cfc579a,0x3ce5f98d,0x3cf73ac4,0x3ccf8dbe,0x3c79c76e,0x3caa4980,0x3bf5ec83,0x3c67caf0,0x3c299662,0x3c193859,0x3c11b94c,0x3c0e877b,0x3c12b7be, -0x3c16c978,0x3c2d164b,0x3c0868bf,0x3bc962ff,0x3bdd6544,0x3c0dbb5d,0x3c18bba1,0x3c2c3c34,0x3c1f8565,0x3c0c4d99,0x3c104917,0x3c1a50db,0x3c403ede,0x3bd05be0,0x3a5229d3,0xbc06158e,0x3c159b10,0x3b180582,0xbc128cef,0xbc1223b9,0xbbfb3eb7,0xbbd26d5e,0xbc07cdca,0xbc02aa1a,0xbba5ed29, -0x3b47dce9,0x3c088cf5,0xbc07f569,0x3780ea08,0x3c8133de,0xbc5284b8,0xbc7351e3,0xbc682d7d,0xbc63b670,0xbc48aea6,0xbc221e07,0xbc089a92,0xbc0c0b5c,0xbc23cd48,0xbc536438,0xbc614261,0xbc2b2c77,0xbc1b5f0c,0xbc111171,0xbc15b9ec,0xbc118b51,0xbc0a67c2,0xbbc449a4,0xbbf3b25d,0xbbf2711c, -0xbba32d9b,0xbbee7e26,0xbbeb9247,0xbbb0950a,0xbbc64caf,0xbbd83a02,0xbbe0bb74,0xbc039ec7,0xbc099640,0xbc0644e9,0xbc0a5491,0xbc017e0f,0xbbcb7132,0xbc10832c,0xbc20578f,0xbc4856f0,0xbc561165,0xbbfa50ed,0xbc1ae7e8,0xbc912a14,0xbc9034b7,0xbc5834d8,0xbc520fff,0xbc735e97,0xbc9fd5b0, -0xbcdb6680,0xbcd60f60,0xbc74e2f8,0xbc541dd6,0xbc4771bd,0xbc71cb19,0xbc59afec,0xbc3e7ae2,0xbb65f7ba,0xbc115dda,0xbbe323f5,0x3aa39717,0xbb2ea1fe,0x3a1ab299,0x3b579b0d,0xba9690df,0xbaf837ba,0xbae45d9a,0xbbb6a176,0xbbecb0c2,0xbc046a9e,0xbc13e519,0xbb81dcf2,0x3b243f6d,0xbb957c08, -0xbc166aab,0xbc61b649,0xbc3695af,0xbcdb9370,0xbd082402,0xbd16133d,0xbd02de18,0xbc9e8be7,0xbc6c057e,0xbc41258e,0xbcaf4b92,0xbd2ab6e9,0xbd326fcc,0xbcd652c2,0xbc9f39ab,0xbc6dc9f8,0xbc858222,0xbc6e70e2,0xbc4914d6,0x3b44b423,0xbc075d74,0xbb3a70ad,0x3b78cdf7,0xba6ad211,0x3c0fdea7, -0x3c4ae8cf,0x3c25f390,0x3bfabfef,0x3c31ccd3,0xba6c63c2,0xbbc78f1d,0xbb9cbb89,0xbba7ea9f,0xbadc8b9b,0x3c2c6906,0xb91fe42d,0xbc145b58,0xbcd8e883,0xbcd2679b,0xbc0bc85a,0xbc0a969b,0xbd11d9fd,0xbd066aaa,0xbc8db846,0xbca27b65,0xbcc62c22,0xbd00943a,0xbd78856f,0xbd748e91,0xbcde5f77, -0xbccc99e0,0xbc80b2cd,0xbcb89dae,0xbc9446fb,0xbc4c3858,0x3c272820,0xbbbd2de4,0x3a147465,0x3c602fbf,0x3c2bfe6a,0x3cc61a29,0x3cf62f45,0x3cb12a68,0x3c828657,0x3cb33a1c,0x3c4f7943,0x3c20108d,0x3b40c9f6,0x3a0b34ba,0x3be19de1,0x3cfff10a,0x3bffb64b,0xbbbfbad7,0xbc9d22d4,0xbc8e5426, -0xbd4e32e7,0xbd464bc6,0xbd6e00bb,0xbd4c8c8c,0xbcd74a3e,0xbc332661,0xbc2a7c21,0xbcea5b22,0xbd920808,0xbd9f4ded,0xbd368e23,0xbcf398a6,0xbc986102,0xbc8976a6,0xbc85cdc0,0xbc47b24e,0x3c684236,0xbbd9835d,0x3b437214,0x3c7974ce,0xbb4fae56,0x3c8ba72d,0x3d02ad5f,0x3cfedd63,0x3cd2d854, -0x3cb07c1d,0x3cbff635,0x3cdbfd9a,0x3c1bf843,0x3c08d5a0,0x3bf86e4f,0x3d10ef19,0x3c1f7d7d,0xbbda2646,0xbd316964,0xbd3682a0,0x3c7ee442,0xbce1a0f4,0xbd978467,0xbda7b551,0xbe01b1dc,0xbd8c14a2,0xbd56c298,0xbcf881ca,0xbd127323,0xbd5c43e4,0xbdc6d1d3,0xbd77a8c7,0xbd689e84,0xbd57ebc4, -0xbd226c85,0xbccd129f,0x3b8c2c3f,0xbc06268b,0xbc35b437,0xbcc7c5b4,0xbc3611ef,0x3c86de06,0x3d0748d5,0x3c83b3fe,0x3c7ed6ac,0x3d762671,0x3cf3e977,0x3c7fa5db,0x3c30aa7e,0x3ca71985,0x3b2a964e,0x3bd26f84,0xbcf2b06e,0xbcfaa036,0xbc0cf110,0x3c3b4681,0xbdd0dd71,0xbdc93c5b,0xbe13a9e6, -0xbdd2b609,0xbd4296db,0x3c826d28,0x3d215587,0x3d03807b,0xbd835f96,0xbdb01244,0xbd4ba9e6,0xbc0faaf5,0x3cb25798,0x3b183d26,0x3c97a79d,0x39fbd13b,0xbc66bc6b,0xbc162617,0xbbd84dec,0xbc766af7,0xbc939068,0xba28c85b,0x3c6c0fd1,0x3d387c57,0x3d4e739b,0xbbc572a5,0x3b7bc764,0x3b89a6bf, -0x3c40d079,0xbc075b52,0xbaebd916,0xbc14111b,0x3d15c845,0x3ca3b439,0xbd1d2703,0xbd7df63f,0x3da3dc2b,0x3dd032b2,0x3db6250a,0x3d12d71c,0x3c1bda54,0xbd32a372,0xbdad2e6a,0xbca0cce6,0xbe053e88,0xbe03f1b4,0xbd5aafb2,0xbcf0a57e,0xbca6f480,0xbd7a8f1b,0xbd39a5e5,0xbd23450a,0xbcd47be0, -0xbc2db8bf,0xbb1d249d,0xbc4481d6,0xbc477f16,0xbb664e3b,0x3cdb34c2,0x3d04d07e,0x3ca41efc,0xbc63adbf,0x3b5f07de,0xbbb31f72,0x3b5df97f,0xb92366e9,0x3c794247,0xbced9a05,0x3d3ac1fe,0x3d831831,0x3df300cc,0x3d9a0836,0x3e0a7f90,0x3e173804,0x3de00e7f,0x3da49d21,0x3d878e5f,0x3c610aeb, -0xbb742201,0x3d300714,0xbda63aa9,0xbdbdceb3,0xbcf6615d,0xbcd5c664,0xbca16a2d,0xbd95416b,0xbd7448db,0xbd818ecb,0xbd4007c7,0xbd049210,0xbc8e2b5c,0xbca2d279,0xbc338365,0x3c19bf6c,0x3d6e63bc,0x3ca0cbf5,0x3c16090d,0x3c05c4ff,0x3ba7dd0d,0x3c0d0705,0x3bb60188,0x3b485071,0x3c9838a9, -0x3caf261e,0x3d666279,0x3d9f5f22,0x3e066eed,0x3dfcb317,0xbc880cae,0xbc6a0f86,0xbcdb337a,0x3cbe0cb0,0x3dce6676,0x3e126db2,0x3e12bfd9,0x3dad1f7c,0xbd32a3e0,0xbdcab91a,0xbd58e7ee,0xbd821498,0xbd19d55b,0xbd3f57ae,0xbd3d11dd,0xbd53e5e8,0xbd3d8afc,0xbd410d3a,0xbd038107,0xbc2ffdad, -0xbc0a3fb5,0x3c02f521,0x3d34c023,0x3caf31af,0x3ca814af,0x3bb824d5,0x3c02a3bf,0x3c1fa0aa,0x3c8f34b2,0x3b616115,0x3c8c6437,0x3d66f127,0x3d85eba1,0x3d853bcb,0x3d0d13e9,0x3c355967,0x3d62e6a1,0x3d327e62,0x3d1e800e,0x3924662f,0xbcad8af3,0xbbeb7ae6,0x3bed6a41,0x3da60fd2,0x3d10cd35, -0x3d613c61,0x3daeeba7,0x3d7fc572,0x3ced6a29,0xbc226a58,0xbc815338,0xbc811627,0x3b88b17f,0x3bba5bc2,0x3bc2e6e0,0x3c39d739,0x3c7fb6eb,0x3c934de8,0x3ce9e1b3,0x3d4e8052,0x3d45aba1,0x3ce34373,0x3d16abf6,0x3d1839ae,0x3d7262c3,0x3d1ee374,0x3ce4b0c2,0x3c990e40,0x3cede074,0x3d1be0f5, -0x3d46eabd,0x3d453702,0xbba0ea9d,0xbc9f390b,0xbd035337,0xbcb175ed,0x3ba8fe7c,0x3cb4cde8,0x3ce1af38,0x3cbe8c0e,0xbc728e9c,0xbccd0780,0xbc3952d1,0x3cc1c4c3,0x3d5f8ab1,0x3d87130c,0x3d87a56c,0x3d57270b,0x3d03cb63,0x3cd38894,0x3cad10ec,0x3cbee334,0x3ced459b,0x3d06c05a,0x3d31c08b, -0x3ccf1407,0x3cab258a,0x3c958d80,0x3cb3a1f0,0x3d072ae5,0x3d202899,0x3d2d2de5,0x3d31fb8f,0x3d18da8d,0x3d42790a,0x3d274703,0x3cf0d156,0x3bddf163,0x3c27ed18,0x3ac801df,0x3b62d7ee,0x3bf5b11f,0x3c8bd5db,0x3c880092,0x3c86f166,0x3ca5ae15,0x3c152b47,0x3bf1e1f7,0x38ab2d53,0x3cb223b8, -0x3d05d260,0x3d3722b9,0x3d47828a,0x3d3cc44d,0x3d3c2979,0x3d23a4e0,0x3d0a4bf4,0x3d02c126,0x3d1a79b1,0x3ce2b426,0x3c71c0b5,0x3cd6dfe1,0x3ce51282,0x3d1a183f,0x3d0a8512,0x3cf41e72,0x3cdd2c76,0x3ce89734,0x3cdb8f8a,0x3cd44b36,0x3cc87b54,0x3cb65e50,0x3c7fdac4,0x3c72d117,0x3c813725, -0x3c33f1b0,0x3c98ff0c,0x3cd66a4f,0x3d045268,0x3cef32f4,0x3cde2dbe,0x3ccd19b1,0x3c8c60d0,0x3bf431f9,0xbbb2269a,0xbb3a9f62,0xbaa4ddd1,0x3ba86206,0x3bb77a5e,0x3c21bf83,0x3c83a65a,0x3c900fc0,0x3c8670d2,0x3ca80f0d,0x3c989f90,0x3c6ce3c4,0x3bea8703,0x3ca5cd51,0x3d06a5de,0x3d341f28, -0x3d1084e7,0x3cf63647,0x3ccd4cca,0x3cca685c,0x3cd70c71,0x3ce609e5,0x3cabfaeb,0x3c87b2cd,0x3c5908e5,0x3c66e633,0x3cfb9c1c,0x3d0380f0,0x3cdf0235,0x3c9e3733,0x3c434959,0x3c5609b1,0x3c20ac89,0x3c2ad961,0x3c11de5b,0x3c371bb3,0x3c51a68e,0x3c261e14,0x3ba4aba7,0xbb127190,0xbaa7d50a, -0xba338961,0xbb8adbdf,0xbb9a23ac,0xbb974797,0xbb46b112,0x3bbed1f2,0x3c7e37f3,0x3ccd3a8a,0x3cdb08fb,0x3cd60c9a,0x3ce2d1bf,0x3d085b4c,0x3d11b0fe,0x3d1acadb,0x3d233cb0,0x3d15095d,0x3d1ebe7f,0x3d1c2975,0x3d1a7070,0x3d1303b7,0x3d10553a,0x3c8c4c7b,0x3c959f64,0x3c9acc63,0x3ca33ff4, -0x3ca34f2e,0x3ca7eef8,0x3c9f7c26,0x3c9c1487,0x3c90416b,0x3c7c8daa,0x3c581fbd,0x3c4542d1,0x3c4d0d1e,0x3c538aa5,0x3c602e45,0x3c61e7d7,0x3c7fe8c5,0x3c860999,0x3c84c3e8,0x3c72dde2,0x3c824d31,0x3c86a2e3,0x3c8fc53e,0x3c91ac54,0x3cb34d9c,0x3cc7b1da,0x3cc48ec2,0x3cafc3ce,0x3cab528b, -0x3ca7b40f,0x3ca85e93,0x3ca7fa55,0x3c946a75,0x3c8947cf,0x3c954d58,0x3c8f8773,0x3cebba5a,0x3bdd3eee,0x3b396036,0x3b78f57f,0xb90e1af1,0x3a4ac2a6,0x3b8b017f,0x3b8b41d4,0x3bb0cd97,0x3c10e502,0x3b995802,0x3b70e9a8,0x3b97560f,0x3b274134,0x3b11507d,0x3afb2f10,0x3b5b67b0,0x3b80d15a, -0x3b69ec43,0x3b8951a0,0x3ba11617,0x3bbd88d8,0x3bf635de,0x3bf7ef63,0x3bcb0c01,0x3bf45e56,0x3be709d1,0x3bcdcfd4,0x3b7609fb,0x3b26cbb4,0x3b17f950,0x3b5e5f95,0x3b841265,0x3bbd2e92,0x3bc06531,0x3b9d224e,0xbaa7295a,0x39f1491d,0xbba86d59,0x3b1f0fba,0xbbe4c5ee,0xbc1f0864,0xba9adc56, -0xba297f26,0x3ba364e4,0x3c8f1244,0x3ba7274f,0x3b5ba3ab,0x3bf9c354,0x3a32245e,0xbaa523d2,0x39bcac2c,0x3b9f8de9,0x3bcdfa56,0x3ba2e152,0x3bc8ec32,0x3c08e3f7,0x3c4857c8,0x3c87b2d9,0x3c8ae8a6,0x3c707535,0x3c5328bf,0x3c3632c9,0x3c5472f3,0x3b979786,0x3b278134,0x3ab1ad2d,0x3b974281, -0x3c05d991,0x3c3dcebc,0x3c211bf7,0x3be12dd0,0xbb5424af,0x3ac833b4,0xbc89383c,0xbb0dd6a0,0xbcbef78e,0xbcaa1e2a,0xbb05b445,0x3a6a7f68,0x3bf9565d,0x3d00a7d4,0x3c106bde,0x3b38c650,0x3c0c2f21,0xbbc5aef6,0xbbf9ebd7,0xbbc89ff4,0x3ab473ba,0x3ba32e03,0x3b275e71,0x3bdfaf71,0x3c1b2578, -0x3c9d3ff8,0x3cde9799,0x3cd56b29,0x3cbb2934,0x3cb42a28,0x3c94aeae,0x3c9dc7d7,0x3b9dd72b,0xbb01e463,0xba76d4f0,0x3b307b3a,0x3c127d69,0x3c8740ff,0x3c6c036b,0x3be702cf,0xbca1fcd9,0xbc220ca3,0xbc9f0063,0xbbc874e7,0xbd12827f,0xbd3f759e,0xbc8083c7,0xbc2fe916,0x3aca2686,0x3d28dc93, -0x3c26a78b,0xba7e66b1,0x3c81eb6e,0xbc287bc6,0xbc78833a,0xbc2886aa,0x3b722e48,0x3bd8a8eb,0x3b700360,0x3bf1711f,0x3c6e0171,0x3ce7466f,0x3d1d83fd,0x3d25c4af,0x3d10107b,0x3ce793ec,0x3cd4369c,0x3d055028,0x3c2d2a32,0x3ab6a131,0xbb5c67c9,0x3b1839ba,0x3c6209e4,0x3cce17dd,0x3c950c72, -0x3bc530d7,0xbca6b6f2,0xbc1f8ef0,0xbd351620,0xbce316dc,0xbd532a8f,0xbd5501d8,0xbadd82b0,0xbbb54a36,0x3c8c4365,0x3d5b0d9b,0x3c5a7bf3,0x3a7d5c28,0x3c26bda5,0xbc6a331b,0xbca8ae50,0xbc86562c,0xbb5a660b,0x3b1b2131,0xbafedb1f,0x3be9d113,0x3c5a51cf,0x3d042276,0x3d40cef8,0x3d42aba0, -0x3d3d8a9b,0x3d0b4496,0x3cf2f4fa,0x3d295316,0x3c9854d2,0x3c38a788,0xb9d0288d,0x3b69d2ad,0x3c392806,0x3ce5f8b4,0x3cb4e770,0x3c54a5a6,0xbd3c2485,0xbd106f67,0x3d781288,0xbd8e076f,0xbd773b2f,0xbd9fa222,0xbde60512,0xbd762050,0xbd282fca,0xbd0ecadd,0x3d905f27,0x3d8d4006,0xbcf1f1d3, -0xbd542c03,0xbd71dd07,0xbd1158b0,0xb9a4666b,0x3bf9796d,0xbd023cea,0xbc74c1f8,0xbb8ea006,0x3c56b4ca,0x3c4755b9,0x3c805ada,0x3ce36a49,0x3c9d848e,0x3cb3a767,0x3d24dbed,0x3c1e3d23,0xba5c9fd6,0x3c45029f,0xbb0d70b3,0xbc29677c,0x3c8c4ff1,0xbc856537,0xbc852f2b,0xbc9e2586,0x3d6c9adb, -0xbddafc2b,0xbdec3a63,0xbd1e0243,0xbc038c6e,0x3d16e22c,0xbc0f0e9c,0x3c27a707,0x3c5b41cf,0xbcaff9c0,0xbd5e0edf,0xbddd3f19,0xbd91ad43,0xbd6fad22,0xbcdce474,0xbce9ee8f,0xbc8fb5f8,0x3bc890da,0xb94ca141,0xbb7f1560,0x3b9ae491,0x3cd757c1,0x3d093a05,0x3d2e4dbb,0x3d0956cd,0x3cedb460, -0x3c361dbe,0x3b8df99d,0x3a843197,0x3bd2f6a3,0xbb67a4a6,0xba5a3d00,0xbc817e00,0x3c88a730,0x3c2b882c,0x3ab395d4,0xbd807e99,0x3d84f16e,0x3b9d16e3,0xbd077f82,0xbd4ace9d,0xbe1f21c8,0xbde7ff97,0xbde3a9d8,0xbd397fb8,0xbd49e281,0xbd4fdff1,0xbddb4c8a,0xbd8129d3,0xbd1bead4,0xbc4ea8d7, -0x3b061f8b,0xbbb5a5ad,0xbaff88e6,0xbc105a00,0x3aef9564,0xbba304e5,0x3c4b9e04,0x3d049ac7,0x3d98875f,0x3c159fef,0xbb5fe6e4,0x3c2e56ee,0xbc082901,0x3bd4d292,0x3ad8e8c4,0xbba7c455,0xbb05352e,0xbc59bc11,0xbb9f047e,0x3b35f50e,0x3d9ef187,0x3d64fa5e,0x3ddaa53f,0x3d92f919,0x3cd66eb7, -0xbc2bd4f6,0xbd95546f,0xbdc1fd36,0xbde7f4a0,0xbd6daf84,0xbde36600,0xbdcd7acd,0xbdf3a94b,0xbd6613f1,0xbcbe1f53,0xbc1af76d,0xbb22597a,0xbc0022fe,0xbccf2605,0xbcabba78,0xbc879754,0xbc878179,0xbbd337e0,0x3c313c3e,0x3d9981ec,0xbbe741ea,0xbc94c020,0x3c642359,0xbc06554d,0x3c0ebff9, -0x3b114d78,0x3a3e3492,0x3930e431,0x3c9662bf,0x3c9a3fb5,0x3d2d72a5,0x3dd309d5,0x3dce0e20,0x3d434145,0x3db45ff1,0x3e2aa2ba,0x3e2f8fe2,0x3e3141d1,0x3dd6a49d,0x3d89e9f4,0x3b5a7e7f,0xbd5058e3,0xbd7e5e41,0xbd974e3d,0xbb3efbe8,0x3b9287b0,0xbb8bef1d,0xbcbe7b32,0xbce464f0,0xbce52bde, -0xbd086798,0xbd12c5ee,0xbcbbe784,0xbc943fd2,0xbb9588d3,0x3d53c17c,0x3c86d83d,0x3c867570,0x3cce68b2,0x3bb146fb,0x3a8a2246,0x3c165337,0x3b39d2ee,0x3c49b2af,0x3d215810,0x3d6dc385,0x3d8e777d,0x3da15de2,0x3d56b433,0x3d1c8bdc,0x3c65ff2d,0x3a2feda4,0x3a830b9f,0xbbf665c6,0x3d5f7bc8, -0x3dd17820,0x3e18d514,0x3dcb992f,0x3d7f07b2,0xbd324c80,0xbd76c80f,0xbd77f7ef,0xbd357adf,0xbd4cba4d,0xbd5e0de4,0xbd630ed6,0xbd2495c7,0xbcc7190f,0xbc693971,0xba8d48f1,0x3c9a3d4f,0x3d181af4,0x3ca24443,0x3c660c8b,0x3c1e718a,0x3d058420,0x3d272403,0x3d30f1b0,0x3d45732d,0x3d3bdd71, -0x3d4519ce,0x3d0cc0a3,0x3cee4bf8,0x3d37c8e2,0x3d0ca2ce,0x3caec5d5,0x3d075c41,0x3d1aa359,0x3d0fcef3,0x3d091e87,0x3d075f0c,0x3d322017,0x3d656bba,0x3d805056,0x3d81d345,0x3d5ebc78,0x3d74d5d5,0x3d60b283,0x3d87985f,0x3d79a47d,0x3d752bac,0x3d34ef11,0x3d1c7639,0x3d04b627,0x3cd5cb5f, -0x3cccd0dd,0x3cb050ff,0x3cb6ee8e,0x3d081131,0x3d11b97e,0x3cce0d98,0x3ca72161,0x3c92751a,0x3cacc55f,0x3c74def8,0x3c912cf0,0x3d026480,0x3d19edc4,0x3d31add4,0x3d49db0b,0x3d16172b,0x3c92897e,0x3bfd8cdd,0x3bd24b7a,0xb95c4bfe,0xbc1c494f,0x3bcba8ee,0x3c806b50,0x3d07e28d,0x3d1d68fa, -0x3d1d1b46,0x3cf60e1e,0x3cb1a1d2,0x3c80f6a0,0x3cd703ce,0x3cc09983,0x3c79fe57,0x3c260f40,0x3b9fa9bd,0x3c180216,0x3bd0282e,0x3bde8390,0x3c3002b0,0x3c8381db,0x3ca34cf2,0x3ccd83a0,0x3cc1c007,0x3cc0c747,0x3ca278ad,0x3ca1e178,0x3ca2f1ab,0x3cbd88dd,0x3cfa4b96,0x3ce93a6d,0x3ce8f294, -0x3cf3be0d,0x3cc7cc01,0x3c80d014,0x3c60fb7a,0x3c69edf7,0x3c869a04,0x3c93de9b,0x3c9423f7,0x3c8d3882,0x3c7bf578,0x3c03a852,0x3c127e39,0x3bbb0895,0x3c0f0d85,0xbad82ef1,0xbbdf41dd,0xbc1e73da,0xbc6ae91c,0xbc1e5708,0xbbea9b8a,0xbc5e2e3a,0xbc200deb,0xbb2ea4ee,0x3bba9989,0x3c609a0b, -0x3c32ccf9,0x3c617f73,0x3ca46c07,0x3caf6fd0,0x3c9f9201,0x3cb3c5dd,0x3cc66cc6,0x3cdc704f,0x3ce2ed03,0x3cdeb16a,0x3cc0e9d9,0x3cc75c88,0x3c991174,0x3d100d82,0x3d07b8d3,0x3cfe85cc,0x3cddbca3,0x3cb4bc76,0x3cc366f5,0x3cb7171d,0x3cc71e70,0x3ce2b585,0x3ce01a07,0x3cdd7f75,0x3cd6801b, -0x3cfe8c1b,0x3d07f407,0x3d106221,0x3d0b3e96,0x3cf396ec,0x3ce2eab4,0x3cee6fe9,0x3cc38a48,0x3ca3cec6,0x3c9efcbd,0x3c9c7ce7,0x3cc3f1df,0x3cce0aa3,0x3ccb55a2,0x3cc94813,0x3cc16b0c,0x3cc5d1b2,0x3cbc594c,0x3c96fbdb,0x3cb6201f,0x3cb9b0d7,0x3cc657d0,0x3cf0df3e,0x3cfd48ee,0x3cafa890, -0x3cbd60b6,0x3cc25f33,0x3cc314af,0x3cc1338b,0x3cc21b02,0x3cb56383,0x3ca6b09c,0x3c983250,0x3c9582c9,0x3c99746a,0x3c9671b9,0x3c8a4723,0x3c7f7464,0x3c6c7196,0x3c6eeff6,0x3c739dd1,0x3c7dad1e,0x3c7ec45d,0x3c8732af,0x3c88a8f8,0x3c8bd59d,0x3c86381d,0x3c9f2c0c,0x3c95ca8b,0x3c98c39c, -0x3ca46c0d,0x3ca00cc7,0x3ca31914,0x3caef055,0x3cadba9c,0x3caa4452,0x3caf2fc2,0x3cb33e0c,0x3ca0b7b9,0x3caa048d,0x3d23f607,0xbba6136d,0xbb7578ea,0xbb55a94d,0xbbb61472,0xbbb95295,0xbb8a4eb6,0xbbbb21d0,0xbbbe0082,0xbbab7b00,0xbb858a47,0xbb71098d,0xbb906e53,0xbb876ae7,0xbb8d5919, -0xbbb30f18,0xbb8b7cfc,0xbb85950b,0xbb89f4bf,0xbb825796,0xbb5b2c5b,0xbb174b6d,0xbb1b7077,0xbafbd54e,0x3916724c,0xb9e9a9a2,0xbab70400,0xbb15e542,0xbb3cf9da,0xbb5280a9,0xbb67aeb4,0xbb41ad23,0xbb07e864,0xbaa6db99,0xba584e63,0xbaa8aa9c,0xbb8daa76,0xbb658360,0xba6aec3f,0x36e95b30, -0xbc1bff1a,0xbc484035,0xbc0664a2,0xbc6a8807,0xbc5dfaef,0xbc335714,0xbbe89ad8,0xbbd5a253,0xbbe817d2,0xbb4202ca,0xbb92869a,0xbc1ed87f,0xbbd62ea9,0xbbe9fe78,0xbbf316e4,0xbbd34eb7,0xbb890393,0x3a2d086e,0x3b26d3ba,0x3b9b4f4a,0x3bde6776,0x3b9af1f4,0x3b5c90e1,0x3a849663,0xbbafa1b0, -0xbbd5fcd8,0xbbc63423,0xba9db4e3,0x3b722245,0x3b5aecac,0x3bb69b6a,0x3b5a3ae1,0xbbf500ce,0xbae4ba76,0xbb5b2402,0xbaf15437,0xbc71a8e3,0xbc8bbd4e,0xbc23b45b,0xbcb9ccfb,0xbcb899d6,0xbca08725,0xbc2f10ad,0xbbec5c4b,0xbc4b0734,0xbbd89c1d,0xbbfa6cb0,0xbc8985fc,0xbc2bef07,0xbc17f829, -0xbc202964,0xbc04df8a,0xbb99be55,0x3b9d3916,0x3bfa6907,0x3c3fe63e,0x3c6939b3,0x3c85ffc0,0x3c3fdb07,0x3b0e3cf5,0xbb65cb2b,0xbc0df1f4,0xbbe68dee,0xba8f1d2d,0x3bac852e,0x3c103904,0x3c735c43,0x3c3b152d,0xbc3eaa62,0xb6d2b2f4,0x3baeaab6,0x3c3b8aca,0xbc8eea5a,0xbcc583a1,0xbc536e44, -0xbd0f6dd5,0xbd034dab,0xbce69359,0xbc6e4c54,0xbc2cfd09,0xbc8a0e6f,0xba8a201d,0xbbc30096,0xbcbbd734,0xbc52897c,0xbc50f8c1,0xbc3fc2ea,0xbc2ec77b,0xbb62a0e4,0x3c670262,0x3c9c82f1,0x3cd14caa,0x3ce70e10,0x3cdee594,0x3cce7e65,0x3c8ad5af,0xbaa17ed1,0xbc015bb5,0xbc028adf,0x3b707ecf, -0x3c91c17d,0x3c9c9aae,0x3ccf5164,0x3c8700f7,0xbc6a8519,0x3a4a82d7,0xbbb4fc2a,0x3b268577,0xbc7558b0,0xbca70374,0xbc10e38e,0xbd17a8c4,0xbd2903ce,0xbd1821be,0xbca15fed,0xbc3417ec,0xbcd45ac6,0xbc290346,0xbc46c4f1,0xbd02205a,0xbc863557,0xbc531db4,0xbc54cfd5,0xbc449fad,0xbb669ea5, -0x3c99f34d,0x3cc1d5dc,0x3d090c43,0x3d2379d2,0x3d0a817d,0x3ceeabf2,0x3ce1a4a2,0x3c283495,0xba13af29,0xbb7846b3,0x3a2bbdd3,0x3c755428,0x3cd09206,0x3cf00ce3,0x3ced2bd0,0xbcb91b9f,0x3a6e0b62,0x3c0516c6,0xbdc419dc,0xbda2cd56,0xbdba2df3,0xbdd9acd7,0xbdac6e4d,0xbd639b3a,0xbcbfc917, -0x3c130737,0x3ce64a6f,0x3cbcad54,0x3bb583a4,0xbc51e1b5,0xbd1b536c,0xbcb22a35,0xbc0941cc,0x3c3112b1,0x3b89637f,0x3c027216,0x3c38a9d7,0x3c95cbf0,0x3cb73c3a,0x3c3336b3,0x3d24502d,0x3d08cef3,0x3cca2fee,0x3a7cc08e,0xbc219304,0x3ba975b7,0xbcaed219,0xbc6a1dc2,0x3ccb568f,0x3c63f869, -0x3bfc7c92,0xbc34a181,0x3d08ce06,0xbd547216,0xbd5d6fdc,0x3d13e7e2,0x3c8b2f06,0x3cfe8625,0xbb35540e,0xbc769e46,0xbcfa3590,0x3c613f85,0x3c8dd266,0xbbbd8f8c,0xbd15218a,0xbd3ab687,0xbd2f9a36,0xbc01ea74,0x3bc94aa5,0xbbcdee3a,0xbac90201,0x3b2c7b42,0xbade1477,0x3bb6c426,0x3c987394, -0x3d44e8d2,0x3be2e34a,0xbaa22e2e,0x3b63fee8,0x3b5a6570,0x3adcf670,0xbc397790,0xbc59ba56,0xbc892fd7,0xbcdf93e1,0xbcbaec98,0xba02b00f,0x3d1ddf38,0xbce2286e,0xbd184227,0xbdd9b498,0xbe32a94f,0xbe0bb7f5,0xbdd23230,0xbd8dc8c4,0xbd226603,0xbd34604d,0x3b698264,0x3ac986b6,0xbce0621a, -0xbd3eacc3,0xbd3a87de,0xbc072740,0x3c214d66,0x3c9b45e8,0x3c55b0e6,0x3c50ae69,0x3c44279a,0x3c259f72,0x3c9fb7fc,0x3cc3e046,0x3d2a6d07,0xbb22a392,0xbc55a479,0x38a92bbf,0xbc266d7a,0x398f7fe6,0xbc24e1bf,0xbbcc824c,0xbc1796b0,0xbba81a30,0xbcf008e2,0xbd003367,0xbcacbc84,0xbc31a284, -0x3ccc5ec4,0xbc029e68,0xbd8d0a94,0xbd936d4a,0xbd85084b,0xbd8ac80f,0xbd3f19df,0xbd64e021,0x3bf3f3f2,0x3adffd8d,0xbd29c01a,0xbd51909c,0xbd69bb6a,0xbbf7dba3,0xbc4048a0,0x3b92dc1a,0xbb45e2a6,0x3b887817,0x3b918091,0x3b0ce78c,0x3ca81d1a,0x3cc4c427,0x3cfe5456,0x3c018d33,0xbb503673, -0x3c0bcb5d,0xbbd78161,0x3b42f4e6,0xbabb9fcd,0x3c237384,0x3c3a5ef5,0x3c694b95,0x3bf812d7,0x3c75d730,0x3cd8c42f,0x3d28960e,0x3e1ad831,0x3e43b1cd,0x3e5d26f9,0x3e200ea0,0x3de74b3e,0xbc0bc4ec,0xbd77e15a,0xbd57978e,0xbc3ec497,0xbc94da91,0xbd678933,0xbdc77876,0xbdb54c03,0xbce91d95, -0xbb355605,0x3c366d90,0xbc4b8167,0x3b43e417,0xba2f4482,0xbc57fe6d,0x3c5664d5,0x3c832df4,0x3cee2f5b,0x3c369b5e,0x3c1fa3ff,0x3c2840b5,0x3b6f5a93,0x3b69dc6c,0x393da1ae,0x3c259716,0x3cbde4c2,0x3cbc5bc0,0x3d608edb,0x3da24cb2,0x3de50a56,0x3dfae498,0x3bdaeb89,0xbb6cae23,0xbbb26dd2, -0x3d2fc76b,0x3dbbcafd,0x3df768e7,0x3e057f68,0x3db5bdae,0x3cc4f7d9,0xbd06f8e0,0xbd7dfda6,0xbdeff23b,0xbdc47763,0xbdb8ddc9,0xbd9b4d9e,0xbd3ea8f2,0xbce38848,0xbce426db,0xbc86de6a,0xbc16fd21,0x3bd93c62,0x3c8700c6,0x3d0cc7a7,0x3c104fad,0x3b6fbf5e,0x3c098731,0x3d07d5a8,0x3d2047d5, -0x3ce845aa,0x3d26abb9,0x3d28074b,0x3d638122,0x3d27af8c,0x3d1da7aa,0x3d398819,0x3ce88989,0x3d5e5bcb,0x3d682a48,0x3d581507,0x3d20c30d,0x3d21f713,0x3cd9831a,0x3d15df17,0x3d85651b,0x3da66484,0x3dad6886,0x3d911d37,0x3d5ea1b7,0x3cd01a7c,0xb88c538c,0x3b902d84,0xbb4c5660,0xbc7620ee, -0xbb2df255,0x3a666648,0x3c21df88,0x3c789123,0x3c80aed1,0x3cf45083,0x3cd2af96,0x3cfd2abd,0x3cfd535b,0x3ca90dd1,0x3c6602af,0x3b96eb2e,0x3c1b8e97,0x3c847664,0x3cbf2d4d,0x3ce1ec77,0x3d1762ca,0x3d3b0b2e,0x3d6c4fb1,0x3ce76999,0x3c885fe3,0x3c07633d,0x3bd2ad2c,0xbbe0ef23,0x3c0ab311, -0x3c995911,0x3d05b26d,0x3d218001,0x3d495a47,0x3d6d417e,0x3d43db53,0x3d244968,0x3c8528a3,0x3cb3fdcd,0x3cb16923,0x3cb851fa,0x3cd141e0,0x3cbacab4,0x3cc531a8,0x3ce405a0,0x3cf68209,0x3d1b2cea,0x3cff493c,0x3cd03156,0x3cb3ab32,0x3cbdbb65,0x3ccead1d,0x3cdbf56e,0x3ce8445e,0x3cf46b9c, -0x3d042364,0x3cfa4936,0x3d0053b4,0x3d0ed05e,0x3cfd161b,0x3ca96296,0x3cc122eb,0x3cb23bd4,0x3c8901ed,0x3c6c5a95,0x3c46ced2,0x3be85267,0x3aeb9b21,0x3c01d42e,0x3c779bb1,0x3c99686f,0x3cc3df75,0x3cdf2d65,0x3cf3127b,0x3d0befa9,0x3d22b26d,0x3d2d091d,0x3d197213,0x3d339771,0x3d077f39, -0x3d02891b,0x3d03c171,0x3d0b9090,0x3ce4a054,0x3cb8c5ee,0x3c8c29ca,0x3ca8b866,0x3cda994a,0x3ce65334,0x3ced3b1d,0x3cf3e5c1,0x3cf42d60,0x3d0079dc,0x3d004b82,0x3d06fe50,0x3cd2d110,0x3c91352a,0x3c3e24ed,0x3c820bd3,0x3c9548d5,0x3ca43283,0x3ce43199,0x3d09ea98,0x3d214a29,0x3d13ff16, -0x3cf1f175,0x3ccf4961,0x3ca959ee,0x3c59e371,0x3c067c44,0x3c00355a,0x3c136309,0x3c5d6973,0x3c885cc2,0x3ca12d65,0x3ce627d7,0x3ca0074d,0x3ca65941,0x3c910b68,0x3c9f9352,0x3c9d2542,0x3c992809,0x3c96d904,0x3c5ba5d7,0x3c5b983d,0x3c56ccce,0x3c38f1e3,0x3c4a3159,0x3c4ed440,0x3c1ddd08, -0x3c4b333a,0x3c67884c,0x3c9309a5,0x3c6ef57a,0x3c82bec8,0x3c7bd33c,0x3c686e23,0x3c597a9f,0x3c2b0bd9,0x3c182179,0x3c140c86,0x3c312c23,0x3c4446b8,0x3c578ad1,0x3c80ada9,0x3c8b9bad,0x3c9d0dbc,0x3ca73fdf,0x3cb36f48,0x3cb2416b,0x3ca9b47b,0x3cbb6d06,0x3cb2cf54,0x3cc17d9c,0x3cc7bd3c, -0x3c9da630,0x3ca42b44,0x3cb52771,0x3cbb3a4d,0x3cc0d1ca,0x3cc6c9b5,0x3cca95fc,0x3cc6315d,0x3cc9f01e,0x3cb3a00b,0x3c960b08,0x3ccc5cdd,0x3caf7848,0x3ccac3fa,0x3c08219c,0x3bd33ec5,0x3bd60115,0x3bbdce1e,0x3bb3c178,0x3bccdf2a,0x3bb6cca9,0x3bb78a84,0x3be7b4cc,0x3b9d1feb,0x3b98a08a, -0x3bb187f5,0x3bd83935,0x3bd289a3,0x3ba09c63,0x3b9ca35a,0x3b92ddd0,0x3b71570b,0x3b973197,0x3b9eb0d0,0x3b942748,0x3ba79c23,0x3bad9252,0x3b932db8,0x3bf77119,0x3bc048d6,0x3aec81d6,0x3ae2b552,0x3ace98b4,0x3a84a306,0x3b130987,0x3b52d2b0,0x3b51f022,0x3bbfa221,0x3bd191dc,0x3ab67e91, -0x3b9727f3,0x3b9f4fb8,0x3b97d982,0x3bb58e82,0x3bb92a42,0x3be6febe,0x3b96a5c4,0x3b9dd107,0x3c0708ef,0xba75fa32,0x3a6a90e2,0x3b9488b4,0x3c447fe7,0x3c5ee285,0x3bd8fcf0,0x3bce2908,0x3b9722c2,0x3af80f8e,0x3b9704ea,0x3baab5b4,0x3b5f81b3,0x3bbf6ef1,0x3c116ee5,0x3c59f2d4,0x3c45a409, -0x3c224ad8,0x3b9d94c8,0x3acd1e66,0xb7e78535,0x39f3a04f,0x3c095134,0x3c480bee,0x3be7b24d,0x3c4f8a2f,0x3c36c777,0xbaf584a4,0x3bd58651,0x3c26520b,0x3c1176dd,0x3bcfffa6,0x3bcd96a5,0x3c1f3c90,0x3c0a6c38,0x3bd6d52f,0x3c75323a,0xbb09bc74,0xbab83cd6,0x3b81d42a,0x3c8b8755,0x3c91662f, -0x3b627568,0x3b7fec02,0x3a573ebc,0xbb77c619,0x3aeaa0db,0x3b42647f,0x3ab911b4,0x3c0b0135,0x3c4cbb9a,0x3ca5d1e8,0x3ca9861f,0x3c86b3c9,0x3b168a7f,0xb87ce91e,0xba906774,0xbbac3189,0x3bfa3227,0x3c4b0178,0x3c127059,0x3c91e13e,0x3c700caa,0xbba6c1d3,0x3c338613,0x3c0d7414,0x379e63f9, -0x3b2daceb,0x3b7c9f70,0x3c00707d,0x3bc305cd,0x3b1ba1fc,0x3c5c8f2d,0xbc865c24,0xbc44cbcc,0xbb239ef7,0x3cbde7c5,0x3ce81f68,0x3b3cba60,0x3ba27c03,0xba82594e,0xbc1818ba,0x38715174,0x3acee02e,0xba440319,0x3c317ec2,0x3c8e4d7a,0x3ce9e8b5,0x3d01ee02,0x3ce73d46,0x3bd6a6aa,0xbb1f84b6, -0xbc25cc6b,0xbc47f860,0x3c48500e,0x3cc239e9,0x3c488817,0x3cefd8e4,0x3cc49187,0xbc9dacac,0x3c2ea5d2,0x3cc89656,0x3c4fbcdb,0x3bc973c7,0x3bd9028e,0x3c8878e2,0x3c84321a,0x3c8c45fb,0x3cc98ba1,0xbbe3838d,0xbc22704e,0x3b4158bd,0x3cd456df,0x3ce55bca,0xbaea08aa,0xb9cefdb2,0xbbc570a8, -0xbc6670a6,0xbb48a689,0xbab60540,0xba9bbc56,0x3c8d46ab,0x3cca184b,0x3d0ad634,0x3d2486cf,0x3d1854fe,0x3c6e4145,0x3b850d05,0xbc10a5cf,0xbc6ae188,0x3bcc8a80,0x3cc80b40,0x3c97ad3a,0x3d0f6fd8,0x3cc00914,0xbc595539,0x3c8bb204,0xbdbcc38a,0xbd91720d,0xbcd5bbf9,0xbcab7b33,0xbcc9727b, -0xbd5b2b8c,0xbd84bf8a,0xbcfa37ee,0xbd46a84a,0xbc350a72,0x3d3e168b,0x3cd1fd62,0x3c9237fd,0xb90fc331,0xbc1de315,0xbc803173,0xbc356224,0xbbfa0e57,0x3b0b0193,0x3cbf3907,0x3ca83b81,0x3cca5c2d,0x3cbae6c0,0x3d1c08d8,0x3cf943e3,0x3c51ae35,0x3a2e974b,0xbc1c1142,0xbbef71fa,0xbcb69153, -0xbc651016,0x37d5c4a6,0x3ca2efdb,0x3ca97f3c,0x3c8a8576,0xbd48c6b2,0x3c8ee00f,0x3c15816c,0xbbf99d91,0xbc853245,0xbb6282a4,0x3c514157,0x3cc6ca7f,0x3c51af9f,0x3c482fa4,0x3a2b818b,0x3c7f068c,0xbc7d003d,0xbcb64163,0xbd07d5b3,0xbcfd057b,0xbcc0a912,0xbc9538a4,0xbc5a5417,0xbb90fe7a, -0x3c31e2fb,0x3cdb1d32,0x3cd7af62,0x3c9fd66a,0x3ba5f367,0x3815a58c,0x3ae1f273,0x3b9a1c77,0x3a9aa131,0xbc8d47ca,0xbc6477bd,0xbc73a6c0,0xbc90f19a,0xbcc913ef,0xbcbafeee,0xbc1a5a8e,0x3ae19f2b,0xbd9d90df,0xbdcb8005,0xbda58298,0xbd50c751,0xbbb85648,0xbc1e0c39,0xbc8a2bc0,0xbd12b6f2, -0xbc855033,0xbbde22dd,0x3c19f02b,0xbc9ae233,0xbd0076ce,0xbd44e7f6,0xbd164750,0xbcfdb9eb,0xbcf10dc6,0xbca2c75c,0xbc2d0e67,0x3af124f2,0x3cd4c3fa,0x3cb49678,0xba8b08ad,0xbbe8c6ac,0xba040c18,0xbb2893c8,0xbb19ef1e,0x3b444a4a,0xbc3a6eac,0xbb350c34,0xbc524d33,0xbc2299e1,0xbcb41818, -0xbd07a06f,0xbd7de934,0xbd5e3e11,0xbcbd7bb3,0xbd2e88b2,0xbcc08852,0xbcfa0f9c,0xbd0ea14a,0xbd902267,0xbdcc477a,0xbd8b7587,0xbd92e195,0xbd625ab0,0xbd04b33d,0xbd29707f,0xbd37ac07,0xbd834e55,0xbd244000,0xbcc1b68a,0xbc42ac20,0xbc66fe0d,0xbbd004d0,0xbb87e49e,0x3cc5e3fb,0x3ca99a0b, -0xbc936f42,0xbb8dedb1,0x3784c545,0xbc04e864,0xbb07633a,0xbaba714f,0xbb550e5b,0x3b881245,0x3b8c23f8,0xbbd91961,0x3c2fd0d0,0x3c1c9dfb,0x3c5ce5c6,0xbb95d17b,0x3e2abea9,0x3df0692d,0x3d6f6f74,0xbbeeb837,0xbd5adc90,0xbd8e1d9a,0xbd8afcdb,0xbd00ca28,0xbd44d293,0xbd4cd10a,0xbd3ca402, -0xbd14ebf2,0xbd178990,0xbd7fdc94,0xbd1afeef,0xbd0c01eb,0xbc6b07ad,0xbc258200,0xbb4e2631,0xbc84a91c,0x3cf84425,0x3cda8bb2,0xbad03a23,0x3b75ace8,0xbae7c761,0xbb92a89e,0x3b0abf98,0x3b4ffbff,0xbb2fa2e1,0x3b80114b,0x3c66c5f4,0x3c15e4ec,0x3d1967a6,0x3d7083d5,0x3dd6931c,0x3e0bb60c, -0x3d4abfa0,0x3dc5e2a0,0x3e04e928,0x3e262ffc,0x3dffae4b,0x3daecc70,0x3c5d3f2a,0xbd9ea744,0xbda95146,0xbdb0687b,0xbd91c1ff,0xbcf900f1,0xbc5ac28e,0xbd5a95a3,0xbd4fe2ee,0xbd5a5362,0xbd590b8b,0xbd85bfa7,0xbd3f6cf9,0xbd00edbb,0xbc0761f4,0x3b07a3e9,0x3a72c8df,0x3aa63b9b,0x3c1e5034, -0x3ce44a55,0x3c214112,0x3b9c822b,0x3c0bdd4c,0x3ceeacfa,0x3d0eae6b,0x3d2983a1,0x3d3b8776,0x3d563923,0x3d66b2bd,0x3d7f3ada,0x3d334422,0x3d3f7d9d,0x3d3e6d46,0x3d3a9790,0x3d6de4f9,0x3d98f61b,0x3da39e6e,0x3d8e5190,0x3d7691a3,0x3d0b6471,0xbb3c347d,0xbc44bbff,0xbcea9a1d,0xbd2e1e23, -0xbd4f122a,0xbd451ee1,0xbd02079d,0xbcec56e0,0xbcbf74fe,0xbc5e4be4,0x3be9d8b3,0x3c82b6a1,0x3cc9d6e5,0x3cc63cc9,0x3ca85445,0x3c81b0e5,0x3c58bd20,0x3ca8b606,0x3cdb3d4f,0x3cf314b5,0x3d038467,0x3cf01a0f,0x3cf54649,0x3d02307d,0x3cedc5d0,0x3d438bb8,0x3cdd9cc0,0x3d0283c0,0x3d09b88e, -0x3d25107e,0x3d231988,0x3d4b9324,0x3d62a9b0,0x3d5c13d7,0x3d5f2864,0x3d5634cd,0x3d537373,0x3d2a0f2e,0x3d1226bd,0x3cbc5f60,0x3c4e40b3,0x3c7e2164,0x3c9271cd,0x3c889171,0x3c81611b,0x3c9ae431,0x3ca8aa7c,0x3cca8278,0x3cdead44,0x3ce75a0a,0x3cd766b5,0x3cc5d37f,0x3cf088f4,0x3cf4750c, -0x3d0c4592,0x3d047728,0x3cf9200e,0x3ce65556,0x3cee6fad,0x3cfde724,0x3d0b3851,0x3cdfa888,0x3d0d12ab,0x3d1020bc,0x3cf9ba1e,0x3cbeebab,0x3c91d944,0x3c8e5b34,0x3ca44b2b,0x3cd1a745,0x3d0cccd3,0x3d386f97,0x3d7e1294,0x3d5fc3ac,0x3d70125b,0x3d62df18,0x3d73d630,0x3d7c183d,0x3d54c702, -0x3d4e1421,0x3d5b6b15,0x3d3be73d,0x3d25da71,0x3d0ccd00,0x3ce8aa68,0x3ce52afd,0x3cf4edce,0x3ce6bf87,0x3ce09cf8,0x3cd27f39,0x3cd08c62,0x3cb35829,0x3cb2e280,0x3c994a9e,0x3cc2fe38,0x3d015049,0x3d178ec5,0x3d147de2,0x3b5255c8,0x3c02f632,0x3c40bc04,0x3c786997,0x3c9a4d7b,0x3cb13ff0, -0x3cb0d575,0x3c9516fb,0x3c94e860,0x3c8312fe,0x3c519c45,0x3c908ec6,0x3ca2bafb,0x3cd5d707,0x3cb04467,0x3cac519a,0x3cf47c06,0x3cfa7d74,0x3cee00f4,0x3d1938de,0x3d19c1e2,0x3d16970b,0x3d0ccd05,0x3cf135de,0x3cb3c36b,0x3c80fda3,0x3c8ad591,0x3c80c264,0x3c6f93c0,0x3c7e273f,0x3c6a52a5, -0x3c553e53,0x3c51158a,0x3ba34dd1,0x3b60f82e,0x3bd37e38,0x3c42bd1b,0x3c6a917d,0x3c544f1a,0x3c3b6026,0x3c23092b,0x3c14af6a,0x3c14fee4,0x3c24d1e4,0x3c52cefa,0x3c81ff92,0x3c98f3ab,0x3ca3ece0,0x3ca66fbb,0x3caed37a,0x3cb29f94,0x3cb5f653,0x3cae1fbe,0x3c9f10ce,0x3c986272,0x3c90f236, -0x3c5e25f5,0x3c351c1d,0x3c0ccc00,0x3c3985f7,0x3c286eb5,0x3befac98,0x3bfcfd61,0x3be303e4,0x3be39071,0x3bcfbe6e,0x3bbed216,0x3bc2e6ad,0x3c0b6be5,0x3c379e8d,0x3c171b3d,0x3c2fff6a,0x3c7b7ae6,0x3baca45b,0x3b3fcda3,0x3a152566,0x3b1365e4,0x3b25153c,0x3b57b015,0x3b3d6f6b,0x3b41b451, -0x3b4d337d,0x3ad2c66a,0x3a63f241,0xba44b89b,0x3b1584dc,0x3b5b5da4,0x3ba4aa2a,0x3b3f3601,0x3b24b3c7,0x3b3559b4,0x3b5317b1,0x3b6009bf,0x3b6cff19,0x3b8f947d,0x3ba93e04,0x3be531dc,0x3b97900e,0x3b897067,0x3b557e60,0x3b6a1c42,0x3b6d84c9,0x3b5a5396,0x3b9451e6,0x3ba50d42,0x3b835553, -0x3b8b7ba6,0x3b6c203e,0x3b5b3341,0x3b9b7c0d,0x3bd97a4a,0xba3e2214,0x3b1a0a21,0x3b99ae61,0x3c0bd4e9,0x3bdb9248,0x3ba5621f,0x3b83b2b0,0xba98ff5c,0xbb849832,0xbc09228f,0x3a2d3424,0x3bc604cd,0x3c1aed6c,0x3b48a3f5,0x3aebb628,0x3b41359a,0x3b63ff76,0x3b9ce5fa,0x3bb6a5eb,0x3bfb8c68, -0x3c2c44cf,0x3c76d29b,0x3c1e86d3,0x3bbcb030,0x3b613191,0x3aae86d7,0x3aa77785,0x3b87a2ca,0x3bf7e124,0x3be15e3e,0x3b91acff,0x3c0d2836,0x3c0b40ee,0xba1dbee3,0x3b863177,0x3beb4dd5,0xbbd2c562,0xba477069,0x3b34e2a9,0x3bf6884f,0x3bcd278d,0x3bc92f4f,0x3b8280bf,0xbbd4fc79,0xbc39a3d8, -0xbc9c2c0a,0xba98fd77,0x3bc05429,0x3c5b0f90,0x3b2c12bc,0xba64d8db,0x3ad40a33,0x3b393749,0x3bc69787,0x3babe096,0x3c0ec103,0x3c7176ec,0x3cb4e42b,0x3c7375cc,0x3c193524,0x3aa3ba5d,0xba21f3e1,0x3a388036,0x3a41b3de,0x3bfa3080,0x3c1f8ee1,0x3b8b5f34,0x3c2199bb,0x3bf4e63d,0xb9ae2b92, -0x3bf12c66,0x3bb8fa61,0xbc1b644d,0xba1a4003,0x3bd5bfc6,0x3c9214d2,0x3c4cbe4e,0x3c1dba64,0x3ba70d79,0xbc44912a,0xbca72065,0xbd186db1,0xbb9a9669,0x3c13c163,0x3cb3e4fa,0x3a6e72b4,0xbb69a830,0x3964cbd2,0x3ad69990,0x3bcfa946,0x3bb35bb3,0x3c44c56e,0x3cb6b5b6,0x3d100e2d,0x3cc7e3c3, -0x3c8ad982,0x3b2aaa8a,0xbb8a5497,0xbbd97944,0xbb4dce3e,0x3c5485bc,0x3c8c4751,0x3b94aed5,0x3ca881e4,0x3c942092,0xbc5c3e86,0x3ba23467,0x3ca4f7b2,0xbc1fcb35,0xbb858515,0x3ba0424c,0x3bcbae67,0x3c627fe3,0x3c2bf854,0x3bb68333,0xbc467138,0xbce16436,0xbd1e2a18,0xbc270566,0x3be43016, -0x3cb6a4df,0x3a2c2e97,0xbbdb8cee,0xbae11e73,0x3a28b3e1,0x3bc58e3b,0x3ba5751f,0x3c130cd2,0x3cb18b93,0x3d1fcc3b,0x3cfc1d9a,0x3cd33c7e,0x3bb80dc1,0xbb08717b,0xbc351cbc,0xbc61dd56,0x3c3ea55d,0x3cb0d3d1,0x3c12aed6,0x3cc5f3ff,0x3c17e8b7,0xbc040187,0x3c8c0437,0xbdd66cde,0xbca640d6, -0xbb84fae4,0x3b231999,0xbc8bac68,0xbcab9599,0xbd03df2d,0xbcd31593,0xbda37334,0xbd6b4470,0x3d02cc07,0x3ca7d3a0,0x3cc318d4,0x3c6e7911,0xbbb11bd0,0xbc2e56e4,0x3c1d7e20,0x3c80137e,0x3c880e55,0x3c87f12d,0x3c9a5a31,0x3cc082f9,0x3d4ce2b6,0x3cd45244,0x3c7692a8,0x3aeaa5a4,0x3bd09661, -0x39b48963,0xbc1e8cad,0xbc93272f,0xbc3aeb94,0x3b0f99d0,0x3c4fdacb,0x3ca02cdd,0x3d361ff3,0xbd8e07df,0x3d1b7122,0xbb907f8b,0xbcc974ef,0xbca43ec9,0xbd2059f0,0xbaefbbc3,0xbb42768c,0xbcd0d957,0xbc0c0e71,0xbb64a266,0x3b659a8d,0x3a480400,0x3b35e721,0xbc4a71b0,0xbbb4e0f6,0xbc26342c, -0xbc720246,0xbc42a2b6,0x3a508fab,0x3b973207,0x3c847253,0x3c777db5,0xbbcd1789,0xba868c05,0xb8869b88,0xbaadc9c1,0xba4f3aa9,0xbb4b4ec4,0xbc81b289,0xbc2cfd54,0xbc8d3c65,0xbca5435f,0xbd20077f,0xbd20d9d1,0xbce7b20e,0x3c7ce964,0xbcf9064f,0xbcc5d304,0x3d104865,0x3caa06b7,0x3a8da4c0, -0x3a0f5f5c,0xbc248c0f,0xbd5cadfb,0xbd2c22b2,0xbd2bb2e0,0xbd0fc959,0xbc4882de,0xbc01211c,0xbcadda9f,0xbcfa6f06,0xbce148b0,0xbce68b82,0xbc9c3144,0xbc3d3cce,0xbb4b4147,0x3c93ac7a,0x3c72b7f1,0xbcab86c8,0xbb3c95c5,0x3c0acfe0,0x3a4a450f,0x3b2d64af,0x3a0be247,0xbade1391,0xbaeadf9b, -0xbc585520,0xbc18b435,0xbca55adf,0xbcf29138,0xbd51f241,0xbd01b40b,0xbcc20e98,0xbd04f83c,0xbcdc1f55,0xbce3d609,0xbd7cd487,0xbcb0395d,0xbcccdd27,0xbd860db6,0xbd07cb53,0xbcfed174,0xbcce5bab,0xbc86f51d,0xbc1cb225,0xbcab60f2,0xbcd6dc89,0xbd006845,0xbce068ba,0xbcd5f109,0xbc7e0e5b, -0xbb82e2dc,0x3c6d1d90,0x3c56b318,0xbca33925,0xbbd6d61a,0x3b50dd1d,0xbb94bfbc,0xb94b6800,0xbb87cc3f,0xbb1d7215,0xbb76834c,0xbbef6763,0xbc863874,0xba888c4c,0xbc392432,0xbbf6543b,0xbccdbda7,0x3d359746,0xbd11684d,0xbe05551a,0xbe0ee1bc,0xbdfe40c5,0xbd3eedbf,0xbcf84e70,0xbd5f9e78, -0xbcf64e10,0xbcaf8dcb,0xbcc4c34f,0xbca6df5f,0xbcc570f6,0xbc9eec24,0xbc7f6792,0xbc94b98e,0xbc890540,0xbcc1b2b5,0xbc7146c4,0xba6cb945,0x3c346b79,0x3c0ba627,0xbc89d2d3,0xbc250329,0xbc369045,0xbc4506ac,0xbac7957d,0xb9bdc5fa,0xbc5f07a9,0xbb9eaea9,0xbaedb24d,0xbc5eaebb,0xbc036c41, -0x3b8db7eb,0x3d4255f5,0x3d68a777,0x3df4e49c,0x3e338d95,0x3e142e6a,0x3df3f465,0x3d2a21ef,0xbd12d0e5,0xbdb43f60,0xbdc48026,0xbd5a5697,0xbd245f69,0xbc97f6d4,0xbca6d037,0xbc8bd2d8,0x3b94d9f5,0xbc232200,0xbc489b53,0xbc98c0ae,0xbc9226b9,0xbc6c1bb1,0xbc87a634,0xbc39a971,0xbbdc3f65, -0xbc3af641,0x3bd1e28f,0x3c129d40,0x3c796620,0x3b4ecea2,0x39f601f1,0x3b2b8508,0x3ca884a5,0x3ce915df,0x3d5b17fb,0x3da34023,0x3daca637,0x3dab5d21,0x3dce1270,0x3d7da5e8,0x3d629aa3,0x3d8d0bef,0x3da1dc86,0x3db86f3c,0x3dcf132d,0x3da2cfa8,0x3d063d4f,0xbc1703e6,0xbd351b9b,0xbd5bd3a0, -0xbdaf2708,0xbdad02ee,0xbd8c690c,0xbd718e25,0xbd4affb7,0xbd11d2c7,0xbcee53ed,0xbc95f980,0xbbf95e97,0x3c1bdf36,0x3c318294,0xba8c460b,0xbba0dd2f,0xbad3dc9e,0x3c0569ba,0x3cc05624,0x3d0d1be9,0x3d05b0a3,0x3d1b766f,0x3d1f85d9,0x3d15d748,0x3d34b282,0x3d4a2e37,0x3d441bfe,0x3d7d2bcb, -0x3d370087,0x3d641590,0x3d9cc5e3,0x3daf97e7,0x3dccef32,0x3dc12865,0x3dbf5e26,0x3da1a7a4,0x3d6e1489,0x3d12a1c4,0x3ce58044,0x3bd3943b,0x38f708cb,0xbbdbb2e8,0xbbd38dda,0x3acdabd2,0xbb06aee2,0x3b91bb9f,0x3bac248d,0x3c44a594,0x3c9c8d6b,0x3c9be2f6,0x3c960069,0x3c844562,0x3c79bcbc, -0x3cac875c,0x3cc15023,0x3cd8c4c9,0x3cda68b6,0x3ce6d0b0,0x3cdebd27,0x3ccf8404,0x3d0de5a5,0x3d153c36,0x3d171a26,0x3d19b5f4,0x3d1cdc73,0x3d3fa8d7,0x3d48372d,0x3d5744c4,0x3d69b224,0x3d7d1c28,0x3d91ac49,0x3db0791a,0x3dac53cc,0x3da6399a,0x3db1dd73,0x3d8ce9b0,0x3d83743d,0x3d467aed, -0x3d2daf74,0x3d169330,0x3ccdcb8a,0x3cd4f79b,0x3cd97193,0x3cccdcb7,0x3ce5ffc4,0x3cca94d4,0x3cdab415,0x3ce5864e,0x3cf45617,0x3cdf1d6c,0x3cc7a322,0x3ccccd84,0x3cb2cc08,0x3cbf9c3a,0x3caaa217,0x3cb22b0c,0x3cbc6c84,0x3cdc07b1,0x3d0bd7b2,0x3d29d851,0x3d058a9c,0x3d47e382,0x3d53c226, -0x3d5c030a,0x3d5e5285,0x3d66ee69,0x3d56c6b9,0x3d4916a5,0x3d2a7cbd,0x3d213374,0x3d0b1ca2,0x3d133cc4,0x3d18e178,0x3d32f6bb,0x3d208f09,0x3d102aca,0x3d18bdca,0x3cf65bc1,0x3cb5adba,0x3ca6e8a9,0x3cb4e6f2,0x3ce5e870,0x3ce836ed,0x3cf0988e,0x3cf62249,0x3cfaf805,0x3d18acce,0x3d1a61d9, -0x3d1d3d9e,0x3d2930cf,0x3d3d5acd,0x3d25badf,0x3d3e4bc6,0x3d27778e,0x3d0ad046,0x3d3b62c9,0x3d0bec1c,0x3d1d6f3d,0x3d166572,0x3d164214,0x3d17b3f3,0x3d1e2e83,0x3d29b6eb,0x3d3d4284,0x3d441ebb,0x3d47171e,0x3d48e42a,0x3d472780,0x3d3bf540,0x3d325f6d,0x3d24f811,0x3d1e7e0b,0x3d186386, -0x3d116313,0x3d0edd3a,0x3d07c490,0x3cfc89e0,0x3ce9d595,0x3cd4247e,0x3d062ec5,0x3cf82b9d,0x3cd020af,0x3ccaea1f,0x3cc1ee58,0x3cc50ce4,0x3cb6dc32,0x3caffb36,0x3cbdee70,0x3cf00d53,0x3d05630c,0x3ccd0f97,0x3cf3cd00,0x3d6bbada,0x3bfb319f,0x3b8b718d,0x3b69bd78,0x3b7eda5c,0x3b752bf7, -0x3b4e046f,0x3b9764ab,0x3b9ed972,0x3b8a44b4,0x3b58a33b,0x3b3ac1f8,0x3b12b8de,0x3b2e855a,0x3b59b6ba,0x3bc59834,0x3b98efbf,0x3ba00513,0x3badaf70,0x3bc2249d,0x3bca3e03,0x3bcea8e0,0x3bd0b864,0x3bc5edb1,0x3bbc8ccb,0x3bb7f81b,0x3b99486a,0x3b492061,0x3b5740ee,0x3b6738f0,0x3b8c0987, -0x3b78444b,0x3b6d62b4,0x3b674a59,0x3b73e799,0x3b9ac035,0x3b94896d,0x3b835c5f,0x3a94bbd9,0xbadd03ec,0x3a137275,0x3afe6463,0x3b2469ac,0x3c2b9419,0x3c26ecbe,0x3bc69647,0x3b82906a,0x39878743,0xbb344ded,0xbb52f37a,0x3a5a4107,0x3c29f20e,0x3bc0a376,0x3bd4cd85,0x3c045b4e,0x3c168030, -0x3c2a229a,0x3c2e7504,0x3c4970b6,0x3c5d7e0f,0x3c55ef08,0x3c161081,0x3bd7d828,0x3b939e5a,0x3b7d56fa,0x3b8aa954,0x3c1e8931,0x3bebeba9,0x3bc76750,0x3baca8ed,0x3b9bba7a,0x3bdc26a2,0x3c0a1d43,0x3bc6ebe0,0x3a058085,0xbb8d456e,0xbb4dc98a,0xbb0d2f72,0xbb7b9e4d,0x3c0654c8,0x3c39b779, -0x3b646943,0xb9f9747e,0xbbe28048,0xbc15423b,0xbc36bba8,0xbbbb908a,0x3c4bff38,0x3bac41e1,0x3bccf794,0x3c1299ce,0x3c43823f,0x3c749e89,0x3c6484a5,0x3c91cbd2,0x3c9a9ebc,0x3c9d6541,0x3c5e8ad4,0x3c0fae98,0x3b67f5ee,0x3b25f542,0x3bc9e32c,0x3c2427c1,0x3bfe8fcd,0x3bd22310,0x3bc04f9c, -0x3b82ad2d,0x3b9ba0aa,0x3c5359fd,0x3bd3c84a,0xbb7861ef,0xbc973bbc,0xbc36d80e,0xbc08b001,0xbbc65cb7,0x3c8b9f36,0x3c9e5ed7,0x3bcc8496,0x3a97c35e,0xbc3367a1,0xbcb40e8e,0xbcaed1f2,0xbc460f74,0x3cb0b9e6,0x3bacc3db,0x3bda5c01,0x3c2d7e77,0x3c7d3583,0x3c9bbfa0,0x3c916891,0x3ccc9b32, -0x3ceb042d,0x3cfca9c7,0x3ca3c5b9,0x3c52ff44,0x3b83ad57,0xba3a203d,0x37c0ed6c,0x3c4443a0,0x3c3c4f0f,0x3c0c85f8,0x3bb696db,0x3bc2bdfb,0x3c0754fd,0x3c6258c8,0x3be53dc9,0xb9751239,0xbc74a771,0xbc41d9a0,0xbc3e6d00,0xbc96acda,0x3c206fa3,0x3c490229,0x3a643785,0xbb40af16,0xbcaa3171, -0xbcba8f79,0xbd01c617,0xbc9211e0,0x3c8b5a45,0x3baa0fd2,0x3b9fc177,0x3c1f4fc1,0x3c8c613f,0x3cbba48e,0x3ca774e5,0x3ccad673,0x3cddfa6d,0x3d1cf643,0x3cd40c44,0x3c97abdd,0x3b9e9cfe,0xbb1f37c7,0xbbcec1eb,0xb9cc316c,0x3c39498b,0x3c570d36,0x3ba76e14,0x3c0e6d31,0x3b02bd5e,0x3c895c78, -0x3c009abe,0xbd68a562,0xbc0d8de0,0xbc3d4853,0x3b675c2b,0x3c8dc521,0x3d0dc5f4,0x3cef36f5,0x3c29c4db,0xbd05e665,0xbcea5a6b,0x3d1b96c3,0x3c06ec4d,0x3bedc33d,0x3c783cd7,0x3c0bdfbb,0x3bc8172c,0x3bdc18e5,0x3c1c6eee,0x3c4d4c64,0x3c2a2f4a,0x3cf149f3,0x3d058064,0x3d1a9954,0x3cab4b59, -0x3c2df7d7,0xbb5024c9,0x3bcac413,0x3bf463d4,0xbbe3e2ab,0xbb4b11db,0x3b094df1,0x3b231899,0x3cd44b6f,0x3cda600e,0x3ccaf9fb,0xbd39db54,0x3c2251f2,0x3c824ec5,0x3c06678f,0xbc4a4901,0xbd8629ce,0xbd47321e,0xbd36afd4,0xbc534460,0xbcb56c32,0xbcb24965,0xbc816aa0,0xbcbb0ee3,0xbc90a6fe, -0x3b227854,0xbbbcf0c1,0xbbc84965,0xba5bfba0,0x3bfef8b7,0x3c741753,0x3cbc1a61,0x3c608cc3,0x3c4fd556,0x3b9be31b,0x3c092bc3,0x3c3701db,0x3bab78a3,0x3960dffa,0xbb9fc68c,0xbbe3470c,0xbbbc38f8,0xbc393aa5,0xbc4837ea,0xbccf458b,0xbcbb144e,0xbc5fa307,0x3b33cabb,0x3c17e1ef,0x3d2a6f8c, -0x3d0d8b7e,0x3c2c6e2c,0xba81a485,0x3ade720e,0x3b9eb34e,0xbc476e2f,0xbcfa0221,0xbcf7fc51,0xbc8ff1c9,0xbc7633c4,0xbc3aea0e,0xbbf2c135,0xbb546376,0xbb411292,0x3b99fe81,0xbac1285b,0x3b86b47b,0x3c9b6bd3,0x3c2b3e2c,0x3c0792f6,0xbb320b7f,0x3af2533c,0x3bd70eba,0x3bad240e,0x3aaa71e9, -0xba799107,0x3b0cef25,0xbb7b304e,0xbc5a7a24,0xbc918246,0xbc703683,0xbca4f7b4,0xbd018dc3,0xbb1d311e,0xbcedd58c,0xbd363ad5,0xbd5b4cea,0xbd3492d4,0xbc0ad011,0xbb96ee5c,0xbaed8e71,0xbb99cc96,0xbcc9ce62,0xbcec9100,0xbc2a53a0,0xbc66ee17,0xbbe6fdce,0xbab3afd4,0x38b6b08a,0x3ad69deb, -0x3b8c1251,0xba029cc4,0x3b98352b,0x3ca4cf39,0x3b835ef2,0x3b15ea8e,0xba18bd10,0xbb271419,0x3b02ec33,0xb9cb7b25,0x3aa6f720,0xbafee2fd,0xbb5fbaee,0xbc2bb572,0xbca89a72,0xbd008136,0xbca74178,0xbceff941,0xbd2f91be,0xbd1e618f,0xbd90eb83,0xbde3d5e2,0xbdfd9f53,0xbddb20b4,0xbd8099ed, -0xbd8b35ce,0xbd78c4f9,0xbcbf3a77,0xbd15ed2c,0xbcb11d78,0xbc12c8d1,0xbc266fe7,0xbc866be5,0xbc9da5bd,0xbcae5777,0xbc8ff27e,0xbc60758f,0xb9a56039,0x3bc0f120,0x3cdf7b02,0xba58dbba,0xbbff5b4d,0xbbf7e682,0xbb4c98bd,0xba6cf056,0xbac5394c,0x3b668750,0x3b05b5b0,0xbbbdfd08,0xbc27942c, -0xbc809a3e,0xbcbdb644,0xbcc29951,0xbcd52355,0xbcdc7e22,0xbd1d46a3,0x3df37ba1,0x3de369b6,0x3d4c40a6,0x3c0fd705,0xbd634efa,0xbd987c58,0xbd8a1bcb,0xbcf248d7,0xbd046e84,0xbd2136b3,0xbd345fa2,0xbd134b05,0xbcdfe2d7,0xbd0a79f5,0xbc8a077c,0xbbb731ee,0xba5fc527,0xbc10e257,0xbb9d7b28, -0x3bdd93a3,0x3c099bf4,0x3c3507fe,0xbbfddba1,0x3b1db6b8,0x3a9a3cb5,0xbbbdc14f,0xbbcd364e,0x3a112267,0x3c0879a1,0x3c35b9f2,0x3c8ca61c,0x3cf244d0,0x3d955f7b,0x3dcaf91d,0x3dc6e736,0x3dd00c72,0x3d9a2ae8,0x3d82b910,0x3d885461,0x3d606c0e,0x3d029649,0x3b8f9a37,0xbd0e64a5,0xbd90c4e0, -0xbd8dbcd0,0xbd828297,0xbd482326,0xbd415e23,0xbd333a17,0xbd0fee94,0xbd3e64da,0xbd3cdbb0,0xbd132743,0xbd0ccfc5,0xbce03375,0xbc41feba,0xbbd4ae67,0xbbb0e313,0xbb9b3d11,0x3bbd9582,0x3c1b94a0,0x3c9a58de,0x3cc7612d,0x3cf01671,0x3d21b364,0x3d23aafe,0x3d3048b0,0x3d4e4745,0x3d45dadb, -0x3d455b33,0x3d6b56b0,0x3d8543d6,0x3d9073a9,0x3d9ceb66,0x3db1b85e,0x3da96437,0x3dc295de,0x3d8ebb51,0x3d637531,0x3cf2131a,0x3c42c081,0xbbe0cf80,0xbcc8e21f,0xbcae0827,0xbca84341,0xbc8ccece,0xbcbc3ae6,0xbcb3afe2,0xbcb5cb96,0xbca6dc70,0xbc89369c,0xbc3edc01,0xbb8b83ce,0x3b762226, -0x3c0800ff,0x3c670344,0x3cabb056,0x3ce26b25,0x3cd74ddc,0x3ce829b3,0x3d0665a6,0x3d1ec504,0x3d2f2355,0x3d3a0799,0x3d55b1af,0x3d5a7d7a,0x3d666c5e,0x3d83ad1e,0x3d69d8c3,0x3d7df3fc,0x3d8888b4,0x3d9cdeeb,0x3db06532,0x3dad5885,0x3db16d98,0x3db8bd54,0x3d90a0b1,0x3d42417f,0x3ce48888, -0x3cb150ec,0x3c8e5fb8,0x3c43c3ff,0x3c4f68c6,0x3c1f12e0,0x3bd5c4b7,0x3c072324,0x3be8bc74,0x3bd7b946,0x3c4c1eeb,0x3c8d32c1,0x3cb93a89,0x3cd63f58,0x3cec9fe2,0x3d02e15a,0x3d09a172,0x3d194be8,0x3d0a380d,0x3d23b5c6,0x3d21ad5a,0x3d3bd950,0x3d3d51a8,0x3d3d01dc,0x3d497f04,0x3d5bcbb7, -0x3d8b15ed,0x3d8ebabf,0x3d8b2998,0x3d76d265,0x3d4ec17a,0x3d54b80d,0x3d32507e,0x3d312009,0x3d35fa56,0x3d578fc1,0x3d682025,0x3d67955b,0x3d63fa19,0x3d5fae95,0x3d4bf645,0x3d3c5896,0x3d3cf376,0x3d27354f,0x3d139c9c,0x3d0d2851,0x3d130c7a,0x3d1cb013,0x3d1f972c,0x3d277ee1,0x3d2d891a, -0x3d2f2ffa,0x3d45962d,0x3d48e14b,0x3d5ada4e,0x3d6a4d3e,0x3d71a47a,0x3d71431f,0x3d821414,0x3d7fd9d1,0x3d84ccfe,0x3d915a3d,0x3d399486,0x3d41690a,0x3d44676b,0x3d4850bc,0x3d4c6c3e,0x3d579b4d,0x3d5f5b19,0x3d6925fd,0x3d5bb71f,0x3d4992c1,0x3d3a7dae,0x3d31e695,0x3d298f2b,0x3d2546e3, -0x3d22294d,0x3d20c60b,0x3d1dd56d,0x3d1aa7fc,0x3d18f2b6,0x3d14802d,0x3d193765,0x3d1cc8a8,0x3d1b5f01,0x3d26c1da,0x3d24f96d,0x3d1c623d,0x3d219896,0x3d2013d0,0x3d22a766,0x3d22213a,0x3d22e615,0x3d2ac250,0x3d33bf99,0x3d327f04,0x3d2dd27e,0x3d33faa2,0x3d93b6fa,0x3c37f17d,0x3be70a1d, -0x3bd88d38,0x3bda4ff2,0x3bcda24d,0x3bb249cd,0x3bdb9fc7,0x3be4c4f9,0x3bc45176,0x3bdb829f,0x3bca8d3b,0x3b6481a8,0x3b8a5962,0x3b987470,0x3bc0d670,0x3bd2c550,0x3beb29ec,0x3bee5768,0x3c00c108,0x3c03fe8a,0x3c09f82a,0x3c082254,0x3c004fbd,0x3be378d3,0x3bee9cd8,0x3bdc47e3,0x3ba94786, -0x3bbb2ace,0x3bcd4179,0x3bf772ea,0x3bcacce3,0x3bb52d3e,0x3bd6ea9d,0x3bb8b50b,0x3be63948,0x3c1360b2,0x3bd6acde,0x3baedd67,0x3b849bd7,0x3bba0e62,0x3bd7259f,0x3bc4c073,0x3c4ff3ea,0x3c4bb4a1,0x3bcfce6c,0x3c1b35f5,0x3bbb1509,0xbb33ebc2,0xbb5cd135,0xba1a1953,0x3bcc5ba4,0x3c052884, -0x3c28da43,0x3c2a7b0d,0x3c3964d1,0x3c506ab4,0x3c6d9218,0x3c7ca296,0x3c82d25f,0x3c561da5,0x3c2d1d8c,0x3c0777f2,0x3bd4cb66,0x3bf3b4f4,0x3c122d85,0x3c6d4031,0x3c195e39,0x3c024e83,0x3c2d4c66,0x3bbd23b8,0x3c12ba9a,0x3ca935f0,0x3c3dca11,0x3be3518f,0x3b9c3044,0x3bbb53b5,0x3b9b8891, -0x3a9c4b60,0x3c1918a8,0x3c44efd1,0x3b10a5ff,0x3c26c971,0x3b63ba6d,0xbc43d95a,0xbc44c531,0xbc1c31a8,0x3b0d509b,0x3bc17d4f,0x3c274222,0x3c3c99d6,0x3c6102dd,0x3c867da0,0x3c90d32b,0x3ca6d7ec,0x3ca836e9,0x3c825b20,0x3c5d2c54,0x3c1e7f10,0x3baeb71c,0x3bbb51dc,0x3c15d437,0x3c964e67, -0x3c12d63d,0x3bebda21,0x3c4a4353,0x3b97b84a,0x3bfec44c,0x3ce9fd44,0x3c477686,0x3b97e543,0xbb87ecb2,0x3af62824,0x3b79596a,0xb8d675b0,0x3c8c38a5,0x3c9e8357,0xba9b8a0f,0x3c696d47,0x3ac887c6,0xbcdcb130,0xbcd86859,0xbcabb4fc,0x3adb9f00,0x3bdd001c,0x3c4c0c82,0x3c645d18,0x3c8bab55, -0x3caf4cc3,0x3cc98dad,0x3cf689ad,0x3d02bb7a,0x3cd39f7d,0x3c95eb26,0x3c4746cb,0x3ba2c02e,0x3b28aae7,0x3bf91fb1,0x3cd04da8,0x3c3358f8,0x3bfa757c,0x3c82a784,0x3aca9393,0x3bed0f0f,0x3d379958,0x3c8e4658,0x3bf1f31d,0x3b8d0bca,0x3c08b44e,0x3a70ec3b,0xbc15ba93,0x3be94afa,0x3c12e1e3, -0xbb0012eb,0x3c4ceadc,0x3a8a9790,0xbcfa8dc2,0xbd097d2b,0xbced8a5a,0xbbae7b30,0x3b5f19c7,0x3c37daa8,0x3c6a40b0,0x3c960e6b,0x3cc78fc0,0x3cdfbaa9,0x3cf569bb,0x3d042223,0x3d00af1c,0x3cba97a0,0x3c74a076,0x3bcaf233,0xbb0c0d3d,0x3b0c23a9,0x3c9cb8ef,0x3c381fcb,0x3c109fee,0x3c5e5c28, -0xb90eb6c1,0x3b862096,0x3d3d5dee,0x3c4ed855,0xbcb7bfac,0xbcae04be,0xbb37cc15,0x3c9e9e0d,0x3d24c40a,0x3d109ba2,0x3d067c7a,0x3cea18ad,0xb8984add,0xbc2e6dad,0xbc0427fe,0x3b2183ef,0x3c081a37,0x3c54c5f5,0x3b8084c3,0x3a12625e,0x3baeb235,0x3c4f60fc,0x3cb076ad,0x3cb3de5d,0x3d2cd0b2, -0x3d32ce16,0x3cdf44a7,0x3cb39106,0x3c641cb3,0x3b771525,0x3c3cdb0e,0x3c1060a9,0xbb532dee,0xb991a710,0x3c20cc3a,0x3cc11fd5,0x3d0641e9,0x3cae6989,0xbbcfa70a,0xbc8048ab,0xbc1ebce0,0x3d937ac2,0x3c66ca1b,0xbca43857,0xbcc3169f,0xbd804543,0xbd721038,0x3c513d44,0x3a678671,0x3c34ca2a, -0x3c2ee674,0xbb1924d2,0xbc56e0f7,0xbc4129c2,0xbc42d753,0xbbf49531,0x3a4fb637,0x3bfea4ab,0x3c507631,0x3cb1c0bc,0x3c0f9c4d,0x3c028dda,0x3c57ff95,0x3c311165,0x3c3faf70,0x3b964258,0xbb5e5c7a,0xbb973b4a,0xbb11d4f0,0x391d64d8,0xbb3eb4a7,0xbc226424,0xbc117e5d,0xbbd8fb4d,0xbbbd7b4e, -0xbcb41fa3,0x3c9e4cdc,0x3d3c35e3,0x3ba4edc4,0xbb800a70,0xbc2a7a9d,0xbc83831b,0x39e60ce3,0x3c72290b,0x3b01354a,0xbb1d93b1,0xbb0ad1c5,0xbc0856f8,0xbbf9b0b6,0x3add70f1,0xb7cfe51d,0xba1123fa,0x3bfd20e6,0x3c0fdfd1,0x3c8212d8,0x3d09e7eb,0x3c14c50e,0x3bbddf88,0x3c797a99,0x3c2bc610, -0x3c11d9c1,0x3ba84e03,0x3baaf51e,0xbabacf6c,0x3a465ac2,0xbb5d76f0,0xbbfeea65,0xbc54ac99,0xbc539c12,0xbc9b2963,0xbcc56ba3,0x3bab4b7c,0xbd08c4cb,0xbd2ec8e8,0xbc362508,0xbb8778b9,0xbcb9e1be,0x3c9d7700,0x3ce6da29,0xbc322a3f,0x3bd92fa9,0xba34543e,0xbc04f9b3,0xbc9cdea1,0xbc906a50, -0xbbbce9b5,0xbc1009c7,0xbb9e5ce2,0x3b469b9e,0x3c1744d8,0x3c94a461,0x3d19befa,0x3c13dc91,0x3b0131b4,0x3c16ffde,0x3bf38666,0x3bcb5415,0x3b49ae6d,0x3b4795da,0xb9e70025,0xba2c07a6,0xbc2d9693,0xbca1bff4,0xbca03489,0xbc90f369,0xbcf4edc2,0xbd777aef,0xbd1b487d,0xbdb111c1,0xbd2f6fe1, -0xbb8df4b9,0x3b577aba,0xbd699679,0xbd3bbc34,0xbd4a2b88,0xbd22c704,0xbc826998,0xbb623eb2,0xbb12419f,0xbc508a62,0xbca58804,0xbc97dbf7,0xbcc69982,0xbc7aaa61,0xbc408735,0x3ac13e12,0x3bd91604,0x3c9cdb57,0xbac9b98c,0xbb7a56d3,0xbb26dc70,0xba8c4ea6,0x3b46bf7b,0x3bc812fe,0x3a92b21a, -0x3a848249,0x3a7ff531,0xbb6c5df8,0xbc251944,0xbc252c23,0xbc32630e,0xbcc1a1d2,0xbd53180c,0xbd93f8c9,0x3bb8643a,0xbd86becd,0xbded42d1,0xbdf4fb21,0xbd8dddbb,0xbceee4d6,0xbb1b7dcf,0xbc87bb59,0xbc82c953,0xbc8cd0e0,0xbbe5f3a4,0xbc874030,0xbca1afc6,0xbbdf3af8,0xbc933f9c,0xbca39d9f, -0xbc836ba1,0xbae51575,0x3bddc5b2,0x3c555a8b,0xbab05082,0xbb727f11,0x3c4cb4a6,0x3c07501b,0x3b4628cd,0xbbe74979,0x3b3d98b8,0x3bc1c3f7,0xbb31be0f,0xbc12611e,0xbc1bf77d,0xbc423f24,0x3b3d563d,0x3d0572e5,0x3d1987b6,0x3cae7108,0x3db43b22,0x3d9f3ff9,0x3d77d391,0x3ce7252a,0xbc9c712a, -0xbd778bb1,0xbd9c2afa,0xbd8a6abf,0xbd4edf9e,0xbd132746,0xbcef300a,0xbcb44332,0xbca6dfe9,0xbc9cae11,0xbc9a6534,0xbca3c16b,0xbc6f7254,0xbc9892ac,0xbc80098f,0xbbde78c0,0xbc95bb2b,0xbc53e7d8,0xbc02ec2e,0x3b86babf,0x3c8a615f,0x3ce30b15,0x3cca9ce8,0x3cd9bbb4,0x3ceda4e0,0x3d356382, -0x3d51748d,0x3d7fb1fc,0x3d61d67a,0x3d53504b,0x3d9b0af4,0x3d9294a8,0x3d9f413e,0x3d9414b3,0x3d6c4b11,0x3d22fa55,0x3ce6540f,0xbb0de88e,0xbcb2ec8f,0xbd10d037,0xbd201cbe,0xbd284e30,0xbd543ff0,0xbd1c56fb,0xbd0c4ef8,0xbcf38771,0xbce57b81,0xbcf1ecd5,0xbcb5b119,0xbca49f6e,0xbc6c4d76, -0xbc08868c,0xbb6c2e1f,0x3993c77c,0x3b2cfccd,0x3c3abd77,0x3c7b1e33,0x3ca333df,0x3cd27a77,0x3d02d9f8,0x3d1ca411,0x3d469b55,0x3d633164,0x3d84a271,0x3d7a1605,0x3d878f1c,0x3d92ff78,0x3da01f9b,0x3d4a114b,0x3d4767a5,0x3d32495d,0x3d318426,0x3d312881,0x3d0cb016,0x3cbbafea,0x3ba01da6, -0xbbb2c2eb,0xbc93391c,0xbd0f578f,0xbcee77e9,0xbcfff0cc,0xbcdda19b,0xbcbbaea8,0xbca86195,0xbc89c269,0xbc2ce2ed,0xbc01ec84,0xba460aa3,0x3bb406a7,0x3c0f089b,0x3c55102c,0x3c6db16e,0x3c8ca7c2,0x3ca59239,0x3ceb84e5,0x3d09127e,0x3d344c3e,0x3d346142,0x3d4c57f0,0x3d5f51fa,0x3d6060e4, -0x3d566cca,0x3d4eef57,0x3d3e404d,0x3d70262d,0x3d359eb3,0x3d33acda,0x3d19b0b3,0x3cf210c9,0x3cfddd46,0x3cf29e0d,0x3d122780,0x3d11d5f7,0x3d142ad7,0x3d1aea5c,0x3d06ef8d,0x3cea1da0,0x3cb24efa,0x3c9e88f7,0x3c926ba3,0x3c7429d8,0x3c349dfb,0x3be64f5d,0x3b9a307a,0x3c5d7f2f,0x3c8719b6, -0x3ca8a065,0x3cccb9a4,0x3d02e927,0x3d0c9a45,0x3d1e8bdf,0x3d19898a,0x3d2df31b,0x3d3f8921,0x3d3d6d7e,0x3d60ef61,0x3d57d948,0x3d50d8fd,0x3d6ca940,0x3d579f12,0x3d190555,0x3d070c3f,0x3d0ee688,0x3d0eede1,0x3d0fcacd,0x3d13e58a,0x3d0bb8a0,0x3d033c00,0x3ce70f72,0x3cd1f442,0x3cbc205a, -0x3caf36e9,0x3cac6553,0x3cab6909,0x3cb53eb9,0x3cb7d025,0x3cbf857c,0x3cca4808,0x3cd389e6,0x3ccaa3f7,0x3cfaebfa,0x3d0fd38e,0x3d24508c,0x3d061299,0x3d120ed2,0x3d26f140,0x3d31e0a1,0x3d32785d,0x3d363762,0x3d3cbbab,0x3d3ab0bf,0x3d3e37ce,0x3d2da270,0x3d1a7d03,0x3d36bab5,0x3d28fc36, -0x3d6b310a,0x3c662293,0x3c23250e,0x3c210332,0x3c10b191,0x3c03641e,0x3bf3d761,0x3c1086cb,0x3c12930a,0x3bfa8d71,0x3c12549a,0x3c0b84a6,0x3bba1018,0x3bcc7952,0x3bd41a2b,0x3bcd8318,0x3c0162ae,0x3c114887,0x3c1256c2,0x3c1c7ed6,0x3c228d1f,0x3c3061ec,0x3c285589,0x3c1e76f9,0x3c0d1625, -0x3c0f8e0e,0x3c0be50e,0x3bffb5aa,0x3c04554a,0x3c0ba72f,0x3c195f7f,0x3c0b36aa,0x3c017661,0x3c11e40e,0x3c01329e,0x3c0f7c65,0x3c3f84ff,0x3c188750,0x3c339f0c,0x3c1d2fd3,0x3c2b8eaa,0x3c28e202,0x3c07ecd2,0x3c60156b,0x3c655cb0,0x3c09dc58,0x3c4e037e,0x3c25678b,0x3b155379,0x39d8ac93, -0x3a2bbcfe,0x3b3d0a67,0x3c07193a,0x3c455b00,0x3c46be6a,0x3c5c7879,0x3c759332,0x3c92d6d0,0x3c8afd2f,0x3c84a86c,0x3c4a1a47,0x3c39a689,0x3c1f26d2,0x3c18b506,0x3c2ca4fd,0x3c411697,0x3c675fe5,0x3c42874c,0x3c265bb5,0x3c4c9589,0x3c0129a2,0x3c2fc98a,0x3cbdc4a4,0x3c80a7ba,0x3c7cb28b, -0x3c6fee09,0x3c33b679,0x3c0683ce,0x3bb668e8,0x3c4e5132,0x3c66a0e0,0x3b8145cd,0x3c6a818d,0x3c1928e7,0xbbbe6f3b,0xbbd3ea9d,0xbbf307d9,0xbb96b9f3,0x3bb67777,0x3c3a9224,0x3c567fa7,0x3c80f859,0x3c97c0a9,0x3cc288ba,0x3cb51fb1,0x3ca9973c,0x3c651c84,0x3c548f15,0x3c342d07,0x3c08e4f8, -0x3c1dab70,0x3c3f4078,0x3c8d0209,0x3c43765e,0x3c2b8dd0,0x3c62cd99,0x3bdb7a37,0x3c2f1c5c,0x3cfc514c,0x3c94055a,0x3c770916,0x3bfb7a06,0x3c2b6db5,0x3c44de2d,0x3b71aff1,0x3c8e8ef0,0x3c94d047,0x3adaf73d,0x3c8f61c2,0x3c11dc9a,0xbc591ee3,0xbc9f202e,0xbca76a6d,0xbc7a81c6,0x3b59689e, -0x3c591b1c,0x3c70fbd0,0x3c9dd376,0x3cc4fe23,0x3cfb4e92,0x3cfd0a52,0x3ce53013,0x3c90cd12,0x3c8676c0,0x3c53e998,0x3bf5fdd6,0x3bc2f0ee,0x3c2cf140,0x3cc49333,0x3c3ae92b,0x3c22c822,0x3c8d8f95,0x3b3bd9a1,0x3c1baca5,0x3d3f38cc,0x3cd3a7a9,0x3cbd3a1a,0x3ca2363c,0x3c77e4ba,0x3b5c93c4, -0xb9c88f65,0x3c359460,0x3c67fc83,0xba13e450,0x3c885a36,0x3c1d0458,0xbca6202c,0xbcbf4c76,0xbcdd7393,0xbc9f1c38,0x38c4ca30,0x3c46cabc,0x3c7fa19b,0x3ca3b420,0x3cdb2472,0x3d168c42,0x3d0c6896,0x3d097ae6,0x3cbcffe7,0x3ca8b361,0x3c8f24d2,0x3c30c4f6,0x3ac292da,0x3be3f323,0x3cde04e7, -0x3c585b24,0x3c2eb7b2,0x3c9d68fb,0x39ad7b44,0x3c0e1ca4,0x3d59ac1b,0x3ccac1ff,0xbcad2392,0xbbfe5150,0x3c261e59,0x3d16a3a6,0x3dae2d51,0x3d16ad44,0x3cac53e2,0x3c1564cf,0x3cc03b2a,0x3ca5470a,0xbc8fd294,0x3c96b44c,0x3ca5a853,0x3b4643f1,0x3baba01f,0x3b4a4c64,0x3ba504b6,0x3bc4b682, -0x3c5ca5de,0x3cf067f0,0x3d013047,0x3cf5e52a,0x3cc18e28,0x3cc3b917,0x3ca1be15,0x3bf38f23,0x3c577971,0x3beeb403,0xbbf167da,0x3a2caf30,0x3c94bea4,0x3d0c3cfe,0x3d15b9de,0x3c7921b6,0xbce5e7bb,0xbcd99da6,0x3b4cb376,0x3d99792f,0xbba31f9f,0xbce1ee10,0xbcaf18d3,0xbd011896,0xbc96fb90, -0x3ceca3cc,0x3c40b01c,0x3c0efcd2,0x3c957999,0x3c925a96,0x3c31ce4c,0x3be688e3,0xba3fd97e,0xbaadf97f,0xba356dbf,0x3c03191c,0x3c3ad5b9,0x3c9f8347,0x3c7d4e95,0x3c810872,0x3c956802,0x3c645a32,0x3c2cc5b2,0x3c3216bc,0x3a301588,0x398e2a37,0x3b997a90,0x3c157b71,0x3bdae934,0xba937a7a, -0xbaa95573,0xbb827a5e,0x3bb60b41,0xbc79f718,0x3b8d52b4,0x3caa722a,0xbc2a6939,0xbc7dbacb,0xbc92a779,0xbc310e3d,0x3b28b4a8,0x3cea3074,0x3c8b33e5,0x3c4debce,0x3c597fbb,0x3a992746,0xbb7b40a2,0x3bbf9d4c,0x3a0fa246,0x3b12d873,0x3b5c0feb,0x3c50a1ee,0x3c87c015,0x3cbef38d,0x3c3939dd, -0x3bf348c2,0x3c903ff0,0x3c7a8a28,0x3bf4bc45,0x3b9bb130,0x3bdb0ec4,0x3b57f41b,0x3a2971b5,0xbaa137fa,0xbb7461f1,0xbba80214,0xbcad2e57,0xbcb1620e,0xbbf1e813,0xbc0a0956,0xbcb1e863,0xbc0bb845,0xba84a562,0xbb1f33f8,0x39ca9e32,0x3bf7ab70,0x3c0da565,0x3ba5f49c,0x3b7f3b99,0xbb1e73a8, -0x3ae47b1a,0xbc6da98a,0xbc667bd5,0x3b5111a8,0x3ba7d494,0x3c01287c,0x3be3bd0b,0x3c8c32a2,0x3c979024,0x3c9ea22a,0x3c4fb6d8,0x3bf43ade,0x3c6756be,0x3c4e001e,0x3c133e0f,0x3b5da1a6,0x3bb1e4f2,0x3ad0bdcd,0xba916688,0xbbec10e5,0xbc5d8a7e,0xbb5b72d6,0xbcb43cdf,0xbcebd60b,0xbd1c28e9, -0xbcd9dcc3,0xbd11c13b,0x3bc0bff3,0xbb9bc2d0,0xbc254e43,0xbce67d2a,0xbd21c22e,0xbd2a1815,0xbcb68eb0,0xbc9c52b3,0xbc83c4a6,0x39e04487,0xbc2bfd99,0xbc0d0c6d,0x3b1578b9,0x3bc999ab,0x3bf58b92,0x3b391af0,0x3c34729e,0x3c5f9b9e,0x3c10afda,0x3c51600d,0x3c66db98,0x3c1374ef,0x3c09ca5d, -0x3c0579de,0x3c3752e2,0x3a9ea2dc,0x3a8fe64b,0x3b99b310,0x3bb16828,0xbb3f3d8b,0x39b99890,0xbc0fbf8c,0xbcc84cdf,0xbd0e0950,0xbd4abb32,0xbda31ab4,0xbe0b2367,0xbdd1be40,0xbdbeb5fc,0xbd0aadcb,0xbd08ce25,0xbca5accb,0xbc532b4b,0xbb8458cb,0xba674a8d,0xbc90194a,0xbc0e6ff8,0xbc765911, -0xbc92d4e5,0xbc4e13ac,0xbc1ed2a3,0xbb9ca82d,0x3c337cd5,0x3c589a28,0x3c469dfe,0x3ac8971d,0xba33bdf5,0x3c6011d3,0x3b679834,0x3b3ec423,0x3b7c7b01,0x3c1cca7d,0x3bd39247,0xbc000502,0xbccefde0,0xbcd6aacd,0xbce3b7cf,0xbd3cac68,0xbd051d18,0xbcb84627,0xbd2a5079,0x3d278f5b,0x3c85a2d5, -0xbc9276d2,0xbd14fc19,0xbd6a1b69,0xbd54ea4c,0xbd28fe23,0xbcd92390,0xbc98ea38,0xbc55909d,0xbcc4c473,0xbc3a493b,0xbc0f0840,0xbc0f1713,0xbbd2cfc5,0xbb1863f5,0xbb824632,0xbac90b37,0xb9af9272,0xb9a69a17,0xbab01b14,0x3ae38f8e,0x3c047320,0x3c10de69,0x3c3f9ca9,0x3c1280ac,0x3c3c7cae, -0x3c9bc26e,0x3cb5b9d1,0x3d175351,0x3d208747,0x3d2cd358,0x3d272c29,0x3d0f198c,0x3d25e210,0x3cf93055,0x3d58f566,0x3d28178b,0x3c171fb9,0xbba27043,0xbcde8989,0xbd10f8d0,0xbd43fe32,0xbd6343a1,0xbd4474cd,0xbd32eff3,0xbd3bb595,0xbd20439a,0xbd196251,0xbd09fc1b,0xbd07f084,0xbd0a1c53, -0xbd04a368,0xbcdd65bf,0xbca4d943,0xbc860706,0xbc4cd5ee,0xbba5e129,0x3b94817e,0x3c39e60c,0x3c8cab9d,0x3cad2ab4,0x3ce1e08a,0x3d01c355,0x3d0bc3cb,0x3d23bf40,0x3d3b04df,0x3d5f368b,0x3d54735a,0x3d6de987,0x3d82f4a9,0x3d7a0eb6,0x3d308e06,0x3d152835,0x3cc901ca,0x3c4d44a2,0x3a760a63, -0xbc76b554,0xbd017b92,0xbd510c49,0xbd4b6985,0xbd40e24e,0xbd4bf32c,0xbd2dac4f,0xbd31998b,0xbd21530f,0xbd192d85,0xbd1a8fdd,0xbd0c8b7b,0xbce4547b,0xbce2cf4f,0xbc8d5b55,0xbc27b143,0xbb137ee7,0x3b404835,0x3c09a161,0x3c6fc6d3,0x3cb11b5e,0x3cc6cff9,0x3cd09060,0x3d098197,0x3d092cd8, -0x3d262949,0x3d2f0674,0x3d39ad9e,0x3d4d35f8,0x3d506edd,0x3d2772c6,0x3c990609,0x3b902b91,0x3b8c8dec,0x3aaae800,0xbab41f60,0x3b3854ed,0x3ba3d758,0x3bd2ebd9,0x3bd01cea,0x3a697940,0xba95dd5a,0xbbc15124,0xbc12efa6,0xbc77ac1f,0xbc16323a,0xbb6df4c0,0xbac6958d,0x3b2365db,0x3bed50a4, -0x3bd572a1,0x3bc7940e,0x3b1642fa,0x3af5eeca,0x3a92a509,0xb96274e1,0xbb5352b8,0x3b2d2d7b,0x3ba38779,0x3c2d4f92,0x3c718312,0x3c4cef52,0x3cd5065d,0x3c9406ac,0x3c58ce12,0x3c942c43,0x3c1a80d9,0x3c0b6da5,0x3b60df6f,0x3b855c34,0x3b1191a8,0xb94e474f,0xbb3db520,0xbbeb0349,0xbc30bab7, -0xbc417d03,0xbc35d00a,0xbc312281,0xbc31f994,0xbc273113,0xbc2a3eb0,0xbc11c85f,0xbc104868,0xbc092f25,0xbbeddb8b,0xbbc91a2e,0xbb973a56,0x3a934abe,0x3bd33025,0x3c4cf72b,0x3b568109,0x3c0a200b,0x3c78bf22,0x3c8cfa04,0x3c8bd17b,0x3c91afc1,0x3ca4484b,0x3ca784ce,0x3ca65356,0x3c4e287e, -0x3c09b610,0x3cab0ee7,0x3c7454ff,0xba5a199a,0x3c53ffb2,0x3c0d5786,0x3c02de44,0x3c0c25c1,0x3c062acd,0x3bfa8315,0x3c02663b,0x3bfff093,0x3be93810,0x3bfa4b48,0x3bf22d6c,0x3bb9ac32,0x3bcc27ae,0x3bd8a50e,0x3bd5226f,0x3bf3f5f5,0x3c03afcc,0x3c023300,0x3c0c4dab,0x3c127c87,0x3c1c34e1, -0x3c1b8b7a,0x3c18e169,0x3c146d31,0x3c0233e2,0x3c026445,0x3c06b783,0x3c11b8af,0x3c1618cb,0x3c135feb,0x3c185fc6,0x3c101527,0x3c0b2dd1,0x3bfa6804,0x3bfa493d,0x3c2c1c4d,0x3c180bfe,0x3c6ca61b,0x3c3380c7,0x3c4b3968,0x3c437e51,0x3c219f44,0x3c3394e3,0x3c33a4c8,0x3c12dc25,0x3c206440, -0x3c080347,0x3b811e3a,0x3b32cdd9,0x3b2de8f0,0x3b7e013a,0x3bf12ca7,0x3c2b5fdd,0x3c26cf7f,0x3c4125e0,0x3c5837b2,0x3c7f4f28,0x3c75e651,0x3c5fb2d1,0x3c41b11c,0x3c1e205f,0x3c05bc94,0x3c0bdcc3,0x3c42bcab,0x3c55aba8,0x3c43cde7,0x3c5218db,0x3c25ead9,0x3c246235,0x3bfecf4c,0x3c1a15de, -0x3c8eb173,0x3c61cf62,0x3c884e37,0x3c443af4,0x3c66c7e6,0x3c518fc7,0x3c1ad6ff,0x3c2dfa66,0x3c184478,0x3bb21ae0,0x3c17c3f7,0x3bdd4df9,0xbb2a2bff,0xba8cb63b,0xbaec3e5c,0xba5a0180,0x3bc6b06f,0x3c1b7e2f,0x3c26c5d5,0x3c60b12a,0x3c808948,0x3cb24cc1,0x3ca377b4,0x3c8b21c7,0x3c68dbd6, -0x3c22600b,0x3c113b44,0x3bdc7fb5,0x3c4446dd,0x3c6825e3,0x3c5ab6ad,0x3c6d311c,0x3c4a6706,0x3c11ccb1,0x3bc2b898,0x3c058d6c,0x3cab692f,0x3c7d06ff,0x3ca5aebd,0x3c6690ea,0x3c8826c5,0x3c954424,0x3c22eb23,0x3c45645b,0x3c3887b9,0x3bd37f39,0x3c2ab61a,0x3b9bc01a,0xbbc2b0da,0xbc21de66, -0xbc3b96e5,0xbc31e8f8,0x3b318dfd,0x3c27cad3,0x3c260f24,0x3c8462e6,0x3ca4b479,0x3cf17607,0x3cd196ce,0x3cac0daf,0x3c8171ef,0x3c37c740,0x3c226ad3,0x3b83050c,0x3c2ea962,0x3c63aaa3,0x3c93cdd0,0x3c726d39,0x3c451ce7,0x3c370b5a,0x3b4733e1,0x3bff92bc,0x3cfeb853,0x3cacef52,0x3cd51a5f, -0x3c8b8456,0x3c9fa4a2,0x3c6be016,0x3bf2ec8b,0x3c144ebd,0x3bf95898,0x3af23603,0x3c0e3e24,0x3bc90819,0xbc5ade58,0xbc36b221,0xbc5d14d4,0xbc372783,0x3b127bd9,0x3c0ccc42,0x3c28757f,0x3c8be874,0x3cc182a4,0x3d14bd34,0x3d06a15f,0x3cdd5a97,0x3c9ed1a8,0x3c79676e,0x3c7c97ba,0x3bdd2058, -0x3bbd56f2,0x3c3a18ce,0x3cc31355,0x3c9100f9,0x3c5f4c1d,0x3c49fd20,0x395bf156,0x3bd853f9,0x3d0e8af7,0x3cd6aec8,0xbc2e47b9,0x3b950f4b,0x3cad04c7,0x3d342bb1,0x3da1e2dc,0x3ce4f645,0x3c4cc28f,0x3bfe394a,0x3c0b14b1,0x3bb47853,0xbc93d259,0x3d0a7a39,0x3d1f7b87,0x3bd159cb,0x3c052699, -0x3bbd9185,0x3c4cebb1,0x3bd9a86f,0x3b950d94,0x3c5826d6,0x3c5887ee,0x3c58baf5,0x3c96eae5,0x3caf033d,0x3cb15ed7,0x3c49bd82,0x3c2ac85a,0x3b9ee6a6,0xbc102edd,0x3c0c1db4,0x3cf241ad,0x3d1a1528,0x3ce2ed77,0x3ba6548d,0xbd09453b,0xbcc4168b,0x3cd00ba0,0x3b8e6928,0xbc9776be,0xbcbb08e6, -0xbcc628d7,0xbc873b05,0xbc65e4f5,0xbc788d34,0x3b4cd15b,0x3c134683,0xbb9d80e6,0x3c9a0a8f,0x3ca62359,0x3c0fdaf5,0x3beaf91a,0x3bbc4945,0x3b46e7b6,0x3c7f877b,0x3c8b3a0a,0x3c7179a7,0x3caf84bd,0x3ca8ad2a,0x3ca799e8,0x3c7ba407,0x3c255513,0x3c210b1b,0x3b5b7f12,0x3ba90c2c,0x3c617e45, -0x3c3a9b7c,0x3bb7daae,0xbb8fba48,0xbb3b96a8,0x3aba1944,0x3b995e27,0x3c920f21,0x3bcefdfe,0xbc25474f,0xbcc52fea,0xbcce5f53,0xbcceeff7,0xbc3ee266,0x3af1c6bd,0x3cdfa5b2,0x3cdce9f8,0x3cb15b34,0x3b8abd35,0x3c4789df,0x3bf1f730,0x3b853c15,0x3bc10b66,0x3c25c215,0x3bacf131,0x3ca652fc, -0x3ca91dd1,0x3c028561,0x3c382f2f,0x3c2ce543,0x3c4ca453,0x3c89efc4,0x3bf630e7,0x3be78a72,0x3c015dbb,0x3bd38f64,0x3bad6786,0x39f7d1ad,0xba4b959a,0xbb790706,0xbc94f355,0xbc0fbbd9,0x3bc2f177,0xbae3a403,0xbb834f8e,0xbba5be97,0xba4b248b,0xba2b2284,0x3a2bcead,0x3bfdd2bf,0x3c2956c7, -0x3bfcd816,0x3c49fd88,0x3c0b3f75,0x3a47f77e,0x3b010163,0x3a131a69,0xbb258905,0x3c5cfad4,0x3c972b42,0x3c592f94,0x3cc78e2d,0x3cb27b35,0x3c1eda78,0x3c3f748d,0x3c31571c,0x3c36ba26,0x3c79bb55,0x3c0842f7,0x3bb1fd64,0x3bbe4ae1,0x3b90b47e,0x3ae2ff67,0xbab67780,0xbb835104,0x3c3c49c3, -0xbc9311d5,0xbc791b15,0xbc00c07d,0xbbd6d596,0xbc58864a,0xbce4d52d,0xbbabb604,0x3b305745,0xbc22b05c,0x396972c2,0xbbfb0831,0xbcec0448,0xbc9c6d1d,0xbc997ce7,0xbc33d031,0x3ab5852c,0x3bead3ff,0x3ae870c2,0x3c531e4e,0x3c69d5e7,0x3c69ae89,0x3c8547d7,0x3c80f54b,0x3c12d665,0x3c8c65e6, -0x3ca78f22,0x3c91fa26,0x3c87cc0d,0x3c4985f1,0x3c3fd7bc,0x3b7203e2,0x3b23e173,0x3bef41f5,0x3bede15b,0x3ad9f84d,0x3bf039ce,0xbc218583,0xbca31937,0xbc9fcaf6,0xbc8abbec,0xbd6d6dda,0xbd38771d,0xbc839f4d,0xbce5b5c0,0xbd1d36bb,0xbd28430a,0xbd15f7f4,0xbcfe9dc5,0xba3c6a20,0x3c07d099, -0xbbf24092,0x3b279dbd,0xbb810960,0xbb7b2173,0xbb88552a,0x39967dbf,0x3bf21f0b,0x3c835669,0x3c8339c8,0x3c0a9050,0x3c3b980d,0x3c1ac1a4,0x3c389b3a,0x3bffa657,0x3bfadc64,0x3c252155,0x3bab871e,0xbb861577,0xbc62bf90,0xbcd2590a,0xbcc2c6ff,0xbccd0287,0xbd25e60d,0xbd358f4c,0xbd3a1714, -0xbd52a152,0xbd057da4,0xbd46fa84,0xbd743c28,0xbd43d284,0xbcdfca41,0xbc206025,0x3b29b679,0x3c368757,0xbc3f8430,0xbc96fb8c,0xbc7c40d7,0xbc398f23,0xbc02b48a,0xbbe51bfe,0xbb0b23c3,0x3b43dcd9,0x3c3a5123,0x3c5d999e,0x3c4403a9,0x3a7c2ebd,0x3a859785,0x3b801112,0x3c4fa714,0x3c2ac081, -0x3c4199df,0x3c7d205c,0x3c4db34d,0x3c514734,0x3b856905,0x3beb50b3,0x3bcbfa51,0x3bb395eb,0x3c45eadd,0x3b86f4ed,0xbc784cd5,0xbcc12113,0xbb094821,0xbc50f842,0xbcfdc016,0xbd067a25,0xbd166c2b,0xbd03568c,0xbd02d7de,0xbcdb5515,0xbcf034fe,0xbce7d6f5,0xbcbd5226,0xbcd8dafe,0xbcdd68fb, -0xbce95304,0xbcbbe3d1,0xbc959687,0xbc4f25ab,0xbbd73c54,0xbb0a0900,0xbaf47d31,0xbb599ec0,0x3866be99,0x3bb38404,0x3c06125e,0x3c50c705,0x3c8522c0,0x3cb9e8f7,0x3cbbc63d,0x3cb2931b,0x3c988dbf,0x3c9f9c8e,0x3cd1f326,0x3cb17fbb,0x3cb9edcf,0x3ca1ba21,0x3c267624,0x3c90afe3,0x3ba3ee3f, -0xbba41195,0xbc7b2a27,0xbcfb3df9,0xbd150343,0xbd32bd4c,0xbd52c9a5,0xbd31379a,0xbd13d86b,0xbd090c67,0xbd03e5c0,0xbd05bd02,0xbd089522,0xbcf5cd6c,0xbce477ed,0xbcceadf2,0xbcaab634,0xbc8a1025,0xbc075928,0xbbbe05fd,0xbb37f916,0xbab816ad,0x3b4ae4de,0x3c00e38b,0x3c2bd907,0x3c6c0d7b, -0x3c7b7484,0x3cd5ce78,0x3cb4f1a2,0x3ccfaccb,0x3ca99999,0x3ca0da0b,0x3cdba12f,0x3cca6d45,0x3c7c53eb,0xbbce3013,0xbc363c9a,0xbc561c3d,0xbc607e5b,0xbc458b33,0xbc6f5fe4,0xbc80d126,0xbca8a9db,0xbcc5b5eb,0xbcf17d17,0xbd011187,0xbd097e5b,0xbd0da837,0xbd16848b,0xbd0271a4,0xbcdf1b35, -0xbcd1db3a,0xbcb33cee,0xbca34157,0xbca43b07,0xbc586913,0xbc52ab29,0xbc22af82,0xbc1b9d60,0xbc02afab,0xbbd37c51,0xbbc72080,0xbbc54cb5,0xbc004e91,0xbbbb770d,0xbbeb7bf1,0x3a873797,0xbb053d54,0xbc1421d4,0xbbdee66c,0xbc314e9f,0xbc231fd6,0xbc36ed1c,0xbc4cf85b,0xbc7a965d,0xbc94b6d5, -0xbcabdb3c,0xbcbe1107,0xbcd02a6a,0xbcc06a4b,0xbcb4b904,0xbcaf9846,0xbcad7944,0xbcaae3a2,0xbcaef210,0xbca7a2c0,0xbca8aaf9,0xbca776b1,0xbc9dea68,0xbc90585d,0xbc8cee3b,0xbc6d06df,0xbc537b3b,0xbc28de59,0xbc529e9a,0xbc2e00d1,0xbc08d4be,0xbbfb5036,0xbbe5f7df,0xbbbbf31d,0xbb911561, -0xbba36310,0xbbc37a7a,0xbc0c0d09,0xbc1122cb,0xbb9f2ba4,0xbbdc6b02,0xbce49bd4,0x3c3001d2,0x3bdb46aa,0x3bc3799e,0x3bdee45e,0x3bda0136,0x3bbcd2bc,0x3bc97739,0x3bc77c14,0x3bc5e507,0x3bc4f1ce,0x3bc90662,0x3bce195e,0x3bca113b,0x3bd3d2a1,0x3bda7304,0x3be03658,0x3be54c03,0x3bd9c67c, -0x3bdcb439,0x3bdeb21c,0x3bddd874,0x3bf198e5,0x3bf8f8f2,0x3c04a0e6,0x3bd8d40e,0x3bdbbf27,0x3be3b02b,0x3c0137f4,0x3c055a1c,0x3bf927b4,0x3c075e2b,0x3bf8514a,0x3bd3f444,0x3bcd981d,0x3bc78810,0x3bf72849,0x3bef5bd7,0x3c26c77a,0x3c08aeba,0x3c2e86b5,0x3c1ebc48,0x3bc7e743,0x3bfc578f, -0x3c09381d,0x3c0e3f9f,0x3bf7a3ac,0x3c01fc02,0x3c0b81a4,0x3bd713fd,0x3bcfb4cc,0x3beb0ae5,0x3c02f866,0x3c18de95,0x3c06c96b,0x3c0a5122,0x3c0f048c,0x3c144b05,0x3c2d04ab,0x3c293efb,0x3c2ff1cd,0x3bfb1b82,0x3bd79ea1,0x3bdac809,0x3c495ea7,0x3c575b46,0x3c218bbf,0x3c37b13c,0x3c067c92, -0x3be5bb23,0x3be219ab,0x3bf3655b,0x3c2a9a2e,0x3c0a296f,0x3c2d66f3,0x3bd8e3e7,0x3c2a0258,0x3c1de828,0x3b7569be,0x3bc75b2a,0x3bad29fc,0x3bc8f3a2,0x3bbfeb28,0x3bdc5f55,0x3c004b22,0x3bc57b61,0x3bd01d6d,0x3bd89371,0x3c19bdd6,0x3c1ccf2e,0x3c084c01,0x3c133639,0x3c0f2217,0x3c35451b, -0x3c611ea1,0x3c46bfae,0x3c64a6bc,0x3bfee41e,0x3beb7a2f,0x3bc4435b,0x3c5ab8d9,0x3c803b4e,0x3c32418b,0x3c5c3efc,0x3c3260ca,0x3b83fcab,0x3ba6cb90,0x3bac6221,0x3c24135d,0x3c17e786,0x3c2a1774,0x3c138aa9,0x3c6a73e0,0x3c6016a7,0x3abb8bdf,0x3bb0d93c,0x3c008d22,0x3c1bb25f,0x3bdd75ae, -0x3be8cee7,0x3c43816c,0x3b852fb3,0x3b64e6ce,0x3b3a6823,0x3c08ae04,0x3c29e320,0x3bf7c728,0x3c18bd00,0x3c216ff7,0x3c5d4454,0x3c809748,0x3c5de613,0x3c8d0a9c,0x3bef9297,0x3bdf3349,0x3a79898a,0x3c789956,0x3c8ef133,0x3c5c47b2,0x3c6b1650,0x3c2866ee,0x3bb72cc2,0x3b51b051,0x3baaabed, -0x3c6ebe1d,0x3c0fa82e,0x3c74e0fc,0x3bc8e699,0x3c301fc6,0x3c2198c5,0xbb0bb2ef,0x3b040231,0xb838d9ec,0x3b78b7f3,0x3b9c5473,0x3c0fed98,0x3c141827,0x3ba2ad50,0x3bb3af8a,0x3b93d9ea,0x3c2e3752,0x3c2efc62,0x3bfd3311,0x3c1d90cc,0x3c371f66,0x3c840b23,0x3cbbdeae,0x3c990101,0x3ca5bbf5, -0x3c43cd37,0x3c4171d1,0x3ac2d7f1,0x3c213766,0x3c82ac33,0x3c8b97ee,0x3c95df91,0x3c4df649,0x3b297095,0x3b045f73,0x3b6f8df2,0x3c658a6f,0x3c8cf75e,0xbc3ec776,0x3c984e6a,0x3cf819b0,0x3d21e14b,0x3d567630,0x3cd13dee,0x3ca8641d,0x3cb88fce,0xbbdd85de,0xbc7c0616,0xbc40cf54,0x3cb309a0, -0x3d019e99,0x3c3f6f29,0x3c697208,0x3c50a916,0x3c8493d1,0x3c31b6b9,0x3bb9d863,0xba96ac9b,0x3acc4369,0x3ba4308e,0x3c6d001e,0x3c858c0d,0x3c8fbad9,0x3cb64400,0x3bc5aad2,0x3a936005,0xbb87e3b1,0x3cab2f04,0x3d177e8b,0x3ccf41a8,0x3c4b51ea,0xbbb9c544,0xbcd6feb9,0xbcfea047,0x3d30cec4, -0xbd5c4a30,0xbc86db26,0xbc56483e,0xbc9c53dc,0xbc6982f3,0xbcd164f9,0xbd4a80f0,0xb9bdfb5e,0x3c73c812,0xbc779417,0x3c43e203,0x3c9592d8,0x3ca4970a,0x3c4c98b6,0x3c148eb1,0x3bebef63,0x3c8737e0,0x3c942548,0x3bf6ba84,0x3c7a0d72,0x3c81375e,0x3c7b62ca,0x3cb3c616,0x3c859af1,0x3c1e0b2d, -0x3bc4dc71,0x3c16de4e,0x3ca60053,0x3c54691f,0x3bc9eae6,0xbbda9fb6,0x3c129a00,0x3c64af23,0xbc04b8f8,0x3d54f9ba,0x3b29ee32,0xbd1e68f2,0xbc90f3e3,0xbc5a2136,0xbb4f766a,0xbbe0597a,0xbb7b9180,0x3b1a5a7b,0x3cc46e7d,0x3cd80e7c,0x3889b24c,0x3c8a8c39,0x3c1acf22,0x3b4390e7,0x3b29a8dc, -0x3bf910d6,0x3bb8831d,0x3c80879d,0x3c7f10c1,0x3adb4d9a,0x3b85b876,0x3b631278,0x3ba4a42f,0x3c4b2abe,0x3bb2d4bb,0x3c24d50e,0x3bd09866,0x3bcc6ffb,0x3c23533d,0x3b0a7c22,0x3b8211c1,0xba7711de,0xbb01bf7a,0x3c131754,0x3c08550b,0x3beaece9,0xbb80c51e,0x3b390792,0x3af2a0ab,0x3ba16161, -0x3c9b2788,0x3ba0189e,0x3c0c483c,0x3c702710,0x3c200e80,0x3bd9fe9c,0xbbd8c74d,0x3c13a8c4,0x3be4a943,0xb9d4d300,0x3b59efa1,0x3bcb8b1b,0x3bfe5e27,0x3c43670d,0x3c228082,0x3b31eddc,0x3b9f8d2a,0x3b2abcda,0x3b13ef01,0x3c16ae54,0x3b73b560,0x3be373a0,0x3b92156a,0x3b750795,0x3b704111, -0x3ab0b831,0x3b165d2c,0x3c1f0330,0xbb80f66d,0x3a845c64,0x3c0ef946,0xbb57090f,0x3ab0213c,0xbb74d7cc,0xbb398d80,0xbac69e88,0x3c377fbf,0x3be06324,0x3a5a72a6,0xbc91d0f2,0xbc8697fb,0xbcab2eaf,0xbcf94307,0xbc069c2a,0x3b8300a7,0x3bdb662c,0x3c05c525,0x3c3502ed,0x3c760561,0x3c58e001, -0x3c3dd2ad,0x3beb7e7f,0x3c2de5ce,0x3c32ac26,0x3c3ef4fc,0x3c6fae35,0x3c39f6e4,0x3c032b3f,0x3b6ea7fe,0x3a721df8,0x3b81cf20,0x3ab5701a,0xbb3932c5,0xbba768d2,0xbbece14d,0xbbc50b03,0xbc456f11,0x3b66da2d,0xbcdb19f0,0xbc0d329e,0xbb67bb66,0xbba997a5,0xbc5e87db,0xbcabd3be,0xbc942ffb, -0xbb9b1ede,0xbbd7cde0,0xbc0c2a62,0xbbfe4d4a,0xbb5af4ff,0x39230bc7,0x3a89b9e5,0x3c152f58,0x3c4fed0d,0x3c7f5239,0x3c50c635,0x3c018c52,0x3b31f92e,0x3c412c63,0x3c4a155a,0x3bb6d1ca,0x3be78526,0x3bba8c73,0x3c473126,0xbb09a28f,0xbc1729ff,0xbc2010ce,0xbc65d2fe,0xbc4ba489,0xbc9c664a, -0xbcdf14dc,0xbd171da4,0xbd61fba1,0xbd26c916,0xbd5501e9,0xbd4a3629,0xbd310f90,0xbd059e8a,0xbc9d154a,0xbbeefae8,0xbc0d5f3d,0xbcc0683d,0xbc892b6a,0xbc4e6074,0xbbd9a77b,0xbbba00da,0xbb3fa1d0,0x3b0da979,0x3b8376ac,0x3c150094,0x3c2861c2,0x3c74cf05,0x3c70a8dc,0x3bf33bf3,0x3c0ea673, -0x3bee97ea,0x3b8de393,0x3ba85d32,0x3bc3fbde,0x3c3df752,0x3bb39c2c,0x3b07613c,0xbc0f2329,0xbc62220f,0xbc89ba26,0xbcad12ca,0xbc175a63,0xbc41bd44,0xbcd0df51,0xbd1ef906,0xbd0b9d16,0xbd1b6196,0xbd14ad3d,0xbcfc08b9,0xbcceab1f,0xbc860895,0xbc364453,0xbc2858b5,0xbc1932c6,0xbc1fbf4a, -0xbbf5a3ac,0xbc31b5e4,0xbc224128,0xbbe4d4f5,0xbb42d05c,0x3ac91f1c,0x3b5024fb,0x3b6d2e0e,0x3ae8d4f8,0xba9d7482,0xb904422e,0x38c1b034,0x3ae5514c,0x3b45c086,0x3bb484b6,0x3c1cdde2,0x3c3ef815,0x3c1c347b,0x3c090eca,0xb9407632,0xbb83ef79,0xbbe1440e,0xbbf8e215,0xbc1a65e8,0xbc6fff87, -0xbcd3919f,0xbc1d6f2d,0xbca643c1,0xbca7ffe5,0xbcae12b8,0xbcc08ecf,0xbcb499fa,0xbca0f385,0xbc6a173e,0xbc802eeb,0xbc899e1d,0xbc8d2c96,0xbc811993,0xbc716e42,0xbc8b1159,0xbc6e7319,0xbc472c8a,0xbc11bbbd,0xbc36152e,0xbc45e3f9,0xbc4e3ed4,0xbc1efbf0,0xbbd2cd93,0xbb80592a,0xb93b7b22, -0x3b524628,0x3bb1dc60,0x3bdbe78a,0x3bfa88d0,0x3c6e3fd8,0x3c070453,0x3c068412,0x3acaae7d,0xbb411a72,0xbb29d2d5,0xbbde1696,0xbc241e2e,0xbc06d765,0xbc25a33e,0xbc5e2e04,0xbc7e5158,0xbc8a8447,0xbcb4a9d2,0xbcd7fb96,0xbd06feb7,0xbd03880d,0xbcf63251,0xbcf3a554,0xbcfd54e8,0xbd018d10, -0xbd02b734,0xbcec67ad,0xbcd6f8f3,0xbcd36e51,0xbcb3492c,0xbc8c4129,0xbc846262,0xbc8c49a2,0xbc756fde,0xbc544eea,0xbc365cdd,0xbc207714,0xbbdbf1fd,0xbbe85695,0xbbeb8f79,0xbc1d4f24,0xbbda3759,0xbbe36090,0xba07a9f5,0xbaebbeba,0xbb8bcf6b,0xbb97dcd6,0xbc10ac31,0xbc718a3d,0xbc6a78d4, -0xbc78dedc,0xbc84218f,0xbc88a13d,0xbc8ec205,0xbc899cdb,0xbc8a0dee,0xbc84fa98,0xbc8c8696,0xbc8d568b,0xbc885f75,0xbc84a18e,0xbc87466b,0xbc83c71d,0xbc830a09,0xbc7f940c,0xbc7c3a14,0xbc7f4996,0xbc707c5d,0xbc7deded,0xbc831d45,0xbc854206,0xbc609b8d,0xbc62f17f,0xbc629ef1,0xbc5fa1fb, -0xbc50b516,0xbc3dac01,0xbc358c58,0xbc4151ce,0xbc505d24,0xbc697363,0xbc5fe25a,0xbc6c0189,0xbc683955,0xbce2178b,0x3bfbcfb7,0x3b938d0e,0x3b78e780,0x3b8ea893,0x3b8cad28,0x3b5c5307,0x3b7129e6,0x3b80a7c9,0x3b97904b,0x3b8e50eb,0x3b952d41,0x3bb0a1c2,0x3b8cb47e,0x3b8c96ed,0x3b97b840, -0x3b9e0a29,0x3ba51e81,0x3ba45700,0x3b9a09c9,0x3b96109b,0x3b8f977a,0x3ba53cb1,0x3baf348d,0x3bd23488,0x3b9aa779,0x3baed78b,0x3bc191e9,0x3bde40f9,0x3be1bd59,0x3bc8ae68,0x3bd58117,0x3bc0ecdb,0x3ba58009,0x3ba1c070,0x3b981408,0x3bb1f8b5,0x3ba8865e,0x3bcf7c40,0x3bbd520b,0x3be5888e, -0x3bae9369,0x3aeb35aa,0x3b430028,0x3b83d2ff,0x3bd44f4c,0x3ba5dec4,0x3bce240d,0x3c12fcbd,0x3bae8088,0x3b927070,0x3bb3aeed,0x3bbec617,0x3bdb5424,0x3bcd6b1c,0x3baaecdb,0x3b9b62c0,0x3b98489a,0x3bd5a4ec,0x3be50bcd,0x3bf54264,0x3bbb29fd,0x3bafcab2,0x3bc7dc2c,0x3c3fa15c,0x3c49544f, -0x3c083596,0x3c136b24,0x3bda1ec1,0x3bbade7b,0x3bd14bd9,0x3bccaefd,0x3bd71aba,0x3baa360f,0x3b9c2174,0x3b57aa4c,0x3bb04f47,0x3b88d399,0xbb1f9703,0xb9b0c4ab,0x39bc63b2,0x3bce6e91,0x3b9a1a1b,0x3bbc09b3,0x3c38b380,0x3b609c00,0x3b541ee6,0x3ba48b7e,0x3bddd4c9,0x3bed603d,0x3bf43054, -0x3baa0771,0x3b8a4dee,0x3b8d16fc,0x3be4f520,0x3bf6e1e5,0x3c186a46,0x3bcb6f18,0x3bd231ff,0x3bf2a38e,0x3c644b73,0x3c7b8160,0x3c201e78,0x3c2f5ca3,0x3c0f8f90,0x3b758b71,0x3bb488ce,0x3b9e11fc,0x3bae39a0,0x3ba02daa,0x3b89aec1,0x3bdf74ea,0x3c177c65,0x3b930f00,0xbbed8b02,0xbb5fdefd, -0xb988a984,0x3c040f82,0x3b9988b6,0x3bde5440,0x3c95654d,0x3b688c94,0x3b07de59,0x3b737d52,0x3bdd377f,0x3bf89f85,0x3be9cd94,0x3b6c0d4d,0x3b1d27b2,0x3b1b017b,0x3be3a3f0,0x3bfc8c7f,0x3c5e8d45,0x3bab5b39,0x3bcd73d0,0x3b630cf6,0x3c96b583,0x3ca559ac,0x3c3b4313,0x3c5599b1,0x3c122998, -0x3bab9c73,0x3bb306c7,0x3ba947e3,0x3bdabd2a,0x3b5497c1,0x3b5844fd,0x3a6588f0,0x3b71815c,0x3b09b699,0xbc3f27b5,0xbc1a1c2d,0xbbd75af4,0x3be016d9,0x3ba9c8e3,0x3c0da0f4,0x3c901ef4,0x3b2950ec,0x392df159,0x3b531681,0x3be94821,0x3c1b2d47,0x3c089b5a,0x3b897808,0x3b3238b2,0x3b059943, -0x3c10d54b,0x3c2b2720,0x3c996dfe,0x3c2c233f,0x3c0a683b,0x3aed435e,0x3c6a64e5,0x3c9d6063,0x3c324010,0x3c68b8bb,0x3c2cc3d1,0x39a48ee9,0x3b91d7e4,0x3b74b172,0x3bb2fbd2,0x3bf6366e,0xbb16a1b1,0x3cb76a0b,0x3cb3e6f2,0x3cbe1edb,0x3ce99529,0x3cfd400b,0x3cf03cb2,0x3c8ceee1,0xbbad5381, -0xbcadbfdc,0xbca8b0d6,0xbbf27a16,0x3c322899,0x3d046b10,0x3c92d01b,0x3c5c361f,0x3c82c2b3,0x3c4df438,0x3c2f93e5,0x3b8b8c85,0x3b171d7c,0x3b466145,0x3c2817d3,0x3c1348c9,0x3c42ed9c,0x3cd8a756,0x3b7caf56,0x3a7b015a,0x3c0c6eb1,0x3cf784fd,0x3d10dd35,0x3c27047d,0x3c0d3b69,0xbbc4eb84, -0xbcd826e5,0xbcbe8b37,0x3ce4539e,0xbd747387,0xbb95660a,0xbad5dde6,0xbc57eec8,0xbc69b041,0xbc89918f,0xbcab3d49,0x3c224cc4,0x3caf8010,0xbb9ad5db,0x3bc4b883,0x3c215563,0x3ca0e21e,0x3c980214,0x3c9adceb,0x3c8d8cf6,0x3c75491a,0x3c626916,0x3c0f3543,0x3c176b9a,0x3c25d07a,0x3c0bf112, -0x3cbc8bc9,0x3c9c5064,0x3c145c8c,0x3c43c964,0x3c6563dc,0x3cb287f8,0x3c1cb15f,0x3badae23,0x3b7124a6,0x3c2ec599,0x3c61b8ca,0xbbf80fd2,0x3d40ec9b,0xbc3529e6,0xbd38c4bb,0x3adb1e58,0x3c2a4d04,0x3c5f9aae,0x39cdf9b3,0xbb335658,0xbb8d0127,0x3c988cc5,0x3cd4f6f7,0x3ba09918,0x3c6d491b, -0x3c24d518,0x3b78816b,0x3adea472,0x3b8cc1eb,0x3c5bcbc6,0x3c074d4d,0x3b4f8f8a,0xba262049,0x3a47a295,0xba6695be,0xbb116926,0x3bbf876f,0x3bbb136d,0x3c37e866,0x3c066ca5,0x3c0f7b66,0x3c4135c4,0x3b90ebff,0x3be1c613,0x3b3525e2,0x3c266d3e,0x3c845b88,0x3ad2ad11,0x3b5b8585,0xba1ab15d, -0x3c1ecec4,0x3c5e3981,0x3c8e69d5,0x3cbb2538,0x3b873500,0x3b18793c,0x3af4889f,0x3be15b1e,0x3c3597ce,0xba0cdf78,0x3c14fdfc,0x3b8d22f8,0xbb7a6874,0xbbeaa01b,0xbb6416f9,0x3c3611e2,0x3b6b8c50,0x3ae96506,0xbb17951d,0xbb13ccb5,0xbb897666,0xbb897bcd,0x38746289,0x3acc8b80,0x3c06eac5, -0x3bb0d9e7,0x3ba49898,0x3b8e92c9,0x3b9f1467,0x3bb776ba,0xba2ede73,0x3c2457e9,0x3c2dcf86,0x3b89e221,0xbb2e32fd,0x3c10db7c,0x3c1d62de,0x3bedf8ee,0x3be9279d,0x3c546f72,0x3c134afb,0x3bbd7272,0xbb92e3b5,0xbc04875e,0xbc44eca0,0xbcbecd89,0xbc406824,0xbb37ee10,0x3b672791,0x3b3a366e, -0x3bc2595c,0x3c3ed639,0x3c1d7f98,0x3c168b2e,0x3be7d8ab,0x3b5cace1,0x3b354ee5,0x3b6f5420,0x3c21b296,0x3c03e2ae,0x3b3fc474,0x3b80245c,0x3ad3f5b4,0x3b1a6953,0xbad490b9,0xbb6e014c,0xbc0f39bf,0xbc1b8f19,0xbbd31a5d,0xbc129d61,0x3ba031b5,0xbcca95b6,0xbc940bec,0xbc1bd3ce,0xbbad058e, -0xbba0a9ea,0xbbb2ebd5,0xbbb03c61,0xba63584f,0xbc95abba,0xbcac48d6,0xbbb230fb,0xbbf5e5b2,0x392bec57,0xba5570a5,0x3bec7efd,0x3c1f9778,0x3c3cf7aa,0x3a7b0250,0xb9bdd0fe,0x3b859751,0x3babdaf0,0x3ba82584,0xba56a41b,0x3b8c9c52,0x3b3be769,0x3bc74cf5,0xbb4b0834,0xbbc2dfce,0xbb42e2ee, -0xbb967223,0xbc064ff5,0xbca0a6e8,0xbd01634e,0xbd29feb3,0xbd641c1e,0xbd12461d,0xbd05f75e,0xbceb4037,0xbcc1dfc3,0xbcc1b21d,0xbcb971d3,0xbd06204a,0xbd0e6934,0xbcf095b3,0xbc91766e,0xbc3e57ca,0xbc3411d6,0xbbf6453e,0xbb9ff9d6,0xbb25e6db,0x3b81bdb6,0x3bc20abc,0x3c585c86,0x3bebd087, -0x3bdbec0d,0x3c19035b,0x3c19ebe8,0x3c1113b9,0x3b7799b0,0x3bb10305,0x3b55af5d,0x3b9a646e,0xbc0f5c34,0xbc537067,0xbc792161,0xbcad22bc,0xbcc01632,0xbccef6b1,0xbcb519b9,0xbca16bf2,0xbc51bad8,0xbcd10e6b,0xbd16a444,0xbd21a4b7,0xbd08660a,0xbcfa1478,0xbcdacc68,0xbcb5820e,0xbc7feee6, -0xbc17c60b,0xbbc7bcd1,0xbb8c19db,0xbb9d7755,0xbaa827e5,0x3abddf77,0x3b51fa34,0x3c0d428a,0x3c48e245,0x3c8cd429,0x3c34e51d,0x3c038e53,0x3bc907f2,0x3b8f201a,0x3b56fc83,0x3a626a36,0x3b00f643,0x3b4c5176,0x3bcb2474,0x3b0f7ea1,0xbb33b731,0xbb7d3974,0xbc24a0b4,0xbc5eca73,0xbc9379bd, -0xbca5a27a,0xbcbd02cb,0xbcd47dca,0xbd0a2785,0xbcdcfd66,0xbd06c8a2,0xbcec6c4c,0xbccbe0a7,0xbcaa7d89,0xbc5e16fb,0xbbf75bc9,0xba5bd458,0xbb401071,0xbb896055,0xbb29ae98,0xbafa6829,0x3a98a233,0x3b0aacaf,0x3b6bb679,0x3bcf481d,0x3c0f7acb,0x3bb845d3,0x3bba8b81,0xb9e28f83,0xbb1fb12f, -0xbaff1e3a,0xbafd7088,0x3a615fa7,0x3b8062eb,0x3bf5b089,0x3bb1e903,0x3b6b3899,0x3b567120,0xbace961c,0xbb353942,0xbbdf54cf,0xbc4bed33,0xbc98422c,0xbccd8123,0xbcd1fd9f,0xbbe699c1,0xbc0e8ef5,0xbc2b8873,0xbc3bdc20,0xbc502812,0xbc9052ae,0xbca53494,0xbcb2d351,0xbc9acffe,0xbc6f41d4, -0xbc5532cc,0xbc3a3516,0xbc29e9ca,0xbc0b3d3f,0xbc166a9a,0xbc21b84d,0xbc30970c,0xbc2afecc,0xbc19409a,0xbbf20b5c,0xbbd1cef5,0xbb877b3a,0xbb2973be,0xbaa6bb20,0xba9cf1d6,0x399c96d2,0xbacc67f9,0xbb305490,0xbb8dfcd1,0xbb61e1ef,0xbbaac5fc,0xbb560269,0xbb8ca6f9,0xbb1fcafa,0xbb16780c, -0xbbcd592a,0xbc071bdc,0xbbf09f97,0xbbea9a6b,0xbbd77e46,0xbbb134b3,0xbb8c34c0,0xbb32a239,0xbb1c0bae,0xbb1c9747,0xbb50991c,0xbb4d3f3e,0xbb2e2f34,0xbb193d6d,0xbafdf9a9,0xbb07ba2a,0xbafbe618,0xbad2fa2b,0xbad61e1f,0xbb13868b,0xbb2e6291,0xbb9c43a8,0xbbd2ae4f,0xbc08bcc2,0xbb6058f3, -0xbb912713,0xbbc50db7,0xbbbf29d5,0xbbbd8029,0xbbb8d04f,0xbbc159cf,0xbbda98c3,0xbbf3dd16,0xbbee7ee2,0xbbd91b0f,0xbc35c72e,0xbc1bff77,0xbbcbef50,0x3b791a83,0x3b31f0e8,0x3b3177f7,0x3afc522c,0x3ac6b828,0x3a43a3a8,0x3a8ddbea,0x3ac0ef83,0x3b18d790,0x3b09caf7,0x3b15792c,0x3b47bb2e, -0x3a91dcf7,0x3a367c28,0x3a2bcb04,0x3ac52eca,0x3b093221,0x3b342c05,0x3b2f4120,0x3b2b3d49,0x3b15f57a,0x3b2b0572,0x3b2cae34,0x3b58dd72,0x3b08b857,0x3b4cbb65,0x3b8fe8d4,0x3b9d8f1a,0x3b9e3f25,0x3b898aaf,0x3b8d98b0,0x3b7fa748,0x3b579273,0x3b57da04,0x3b43555d,0x3b5d124f,0x3b411a03, -0x3b97603e,0x3bb7e640,0x3b6e3ce4,0x3a980e3f,0xbacf3979,0xbaad5da9,0xb95a946b,0x3b3b981f,0x3b03563d,0x3b263450,0x3b9d44c7,0xba4c77d5,0xbb4817a4,0xbb428fa2,0xba8231e8,0x3abca041,0x3b5bb478,0x3b65e55d,0x3b60f07a,0x3b32428e,0x3b77652c,0x3b5bb1d7,0x3af23867,0x3b304077,0x3b69ce46, -0x3bc5224b,0x3c1b7ce7,0x3c239cf8,0x3bde86df,0x3be7e6bc,0x3ba9c524,0x3b873c5b,0x3bbbaa1c,0x3bb187ac,0x3b910f85,0x3b91c367,0x3b69249c,0x3bda5179,0x3b22d981,0xba13b17f,0xbbbefc7a,0xbba4f084,0xbb5ba836,0x3b559725,0x3b2bb842,0x3b2555c6,0x3bed319d,0xbbaa84c9,0xbc05d5b8,0xbbdaa5d9, -0xbb3c1b81,0x3a3f4c98,0x3ba7a024,0x3b941f3f,0x3b9398c5,0x3b4538d6,0x3b6c2d57,0x3b4fe602,0x3a897b74,0x3b421b1e,0x3b9d792b,0x3c158582,0x3c575d5a,0x3c62e442,0x3c1f8b2d,0x3c158fca,0x3c011bb0,0x3b7f86eb,0x3bdd0a95,0x3bd5e13f,0x3b89aa98,0x3b975fb1,0x3bdd252f,0x3c457317,0x3bc4a13d, -0xbac1a207,0xbc202f3f,0xbc1cad44,0xbbdd58c3,0x3b633184,0x3afc74b6,0x3b07a0bf,0x3c3dcd6a,0xbc08105a,0xbc635044,0xbc6f7d40,0xbbf42feb,0xbac19fb0,0x3b9ef88f,0x3b95bda7,0x3b8b9993,0x3af3ed95,0x3b8ef989,0x3b56b641,0x3b22d908,0x3b178d44,0x3bd41d27,0x3c1b0e33,0x3ca0f708,0x3cafa036, -0x3c535fbd,0x3c59ea7a,0x3c287ee1,0x3bb8af33,0x3c22ca1d,0x3c04b078,0x3baf683f,0x3bc9c254,0x3a472131,0x3beea9d9,0x3b4fb179,0xbb50992a,0xbc63ed0f,0xbc7d5591,0xbc1ddfb6,0x3b800c90,0x3b6f71d5,0x3b92b765,0x3c4217cf,0xbc2cd610,0xbc9b8c4e,0xbc7a7fba,0xbc1db36f,0x39a5db85,0x3bebcc0c, -0x3bc52a02,0x3bac7750,0x3ae4142e,0x3b628ff2,0x3b83a1c9,0x3bf7b97b,0x3bf9edfb,0x3c057641,0x3c022cb0,0x3c9a96ef,0x3cb68270,0x3c4a2813,0x3c560fcd,0x3c365440,0x3b7616c5,0x3c0cf7ac,0x3c1c2bab,0x3bacac39,0x3baacf73,0x3cd385f5,0x3cea4f2a,0x3bfbbd69,0x3b96940c,0x3c4bf471,0x3d117801, -0x3d0ce352,0x3b280934,0x3b4312ec,0xbc77ab9b,0xbcca9d47,0xbcd45304,0xbbe309aa,0x3d1aa321,0x3cb5c5e3,0x3c91711a,0x3c826aee,0x3c5ec517,0x3c508327,0x3c421dc5,0x3c492e4a,0x3c2843cf,0x3c22b768,0x3bb1bc11,0x3bdd5284,0x3cb24da3,0x3b2cd50e,0x3ba01e64,0x3cc0b4fa,0x3cfd22e1,0x3ccf464b, -0x3bd0a693,0x3b64c023,0xbbe8bd8e,0xbc95c657,0x3bf481dc,0xbccbca74,0xbd25ce1b,0x3bf34a25,0x3c3fb160,0xbc80237d,0xbbb38c9b,0xbb65eed0,0xbc0bf097,0x3c04a070,0x3c600e53,0x3be7499a,0x3b09d4c9,0x3adb58ad,0x3c71abbe,0x3c941512,0x3cbc525b,0x3cad0613,0x3c320ea4,0x3bfd0f88,0x3c00e84e, -0x3b8bb32c,0x3ba37200,0x3bbfe759,0x3c8394e7,0x3c7e8279,0x3c04b355,0x3c9533f1,0x3c9f4819,0x3ca36d94,0x3bf95deb,0x3bfbd78a,0x3c87920a,0x3c32da7f,0x3c250cae,0x3c7cc1d0,0xbaa5a7c6,0xbc916ec9,0xbcae5476,0x3c99c73a,0x3cc752cf,0x3c67e88b,0x3bafbfc1,0xbbe885bd,0xbc7b3814,0xbb424e99, -0x3bd928db,0x3c533f0c,0x3beb7638,0x3c043891,0x3c0a1f5f,0x3bd1a55a,0x3bd33378,0x3c6153a3,0x3b6582c4,0xbb7ada87,0x39b6a6fb,0xbb19a076,0xba978ed2,0xb9a76363,0x3a444861,0x3bc6c6db,0x3c33e7f6,0x3c1b900e,0x3c30f85a,0x3c2b3291,0x3bb1df11,0x3bd4252b,0x3b55d084,0x3c431416,0x3c8357f0, -0x3c4361b0,0xbaa23fed,0x3c788e62,0x3cb064aa,0x3cc15b3f,0x3caa000b,0x3c7b9ff8,0x3adeb4ca,0xbb40ab5e,0x3b1b7277,0xbbc9f72f,0xbb044018,0x3c35e43b,0x3b5530a2,0x3aab4042,0xbb75964d,0xbbb73eb6,0xbb8e36e8,0x3c1c14b1,0x39e4572a,0xba4a5875,0xba36258b,0xbb76df08,0xbb948bed,0xba6a540c, -0xbb8b733d,0x3a0f9222,0x3c29d0a0,0x3bd6e01a,0x3be96ebd,0x3b8ffde5,0x3c01d837,0x3bdc68cb,0xbb97c783,0x3c17965e,0x3c4228f9,0x3b81a30e,0x3c3c87f1,0xbbc0c49c,0xb8973a1c,0x3b8dba37,0x3c122631,0x3c3831eb,0x3c905d71,0x3cb857d5,0x3cab2645,0x3babc87d,0xba88741e,0xb9edfdb3,0xbc4149ac, -0xbc163513,0xbb6745f0,0x3a51c3a7,0x3b622f61,0x3c29d439,0x3c329a59,0x3c3fcbfc,0x3c0b9ea5,0x3a8c93d5,0xba79a524,0x3b193014,0x3b262ede,0x3b08f855,0xba078245,0x3bc3fd6a,0x3bb39495,0x3ae96b53,0x3b0551c0,0xb951acec,0xbc17360f,0xbc4dd133,0xbc4fbca6,0xbc670971,0xbc328738,0xbc95f7e7, -0xbc30a792,0xbc2b53f9,0xbbfa468c,0x3b91d9f6,0xbaccf410,0xbc30216b,0xbcac1663,0xbcc02efb,0xbcb37d74,0xbbca70ba,0xbbea18d1,0x39fea5b7,0x3ab014c2,0x3b4d763e,0x3b2dc9c0,0x395b70aa,0xbb3860e3,0xbb26bc4c,0x3b0b96cf,0x394aee4c,0xb9804abd,0x3914ca68,0x3b05d2db,0xb92dafa2,0xbb7bdc17, -0xbb30fb3b,0xbb379fd6,0xbb13a0eb,0xbba9d86f,0xbc2e402f,0xbcafa088,0xbce62906,0xbd13766d,0xbd0c0aa7,0xbce54ead,0xbca57edc,0xbc8c64ee,0xbc8a2991,0xbc97e974,0xbcbe084b,0xbcaeb4e9,0xbc8f0f69,0xbc686a60,0xbc53beec,0xbc3087f9,0xbc03e970,0xbc0855ca,0xbbb7c99b,0xba89df1b,0x3b84e93a, -0x3baa341e,0x3b1685b9,0x3ac4fc98,0x3b13bc13,0x3bf46bcd,0x3bcaf861,0x3bca79e7,0x3b8bdbb7,0x3b9f0f7f,0x3a43953d,0xbbc7c1ce,0xbc8902eb,0xbca0bb50,0xbc9649f6,0xbcb5979f,0xbcc9a778,0xbcea6788,0xbcf2a8fc,0xbccf1a3b,0xbc787b89,0xbc9c39e7,0xbcc8550c,0xbcd4476d,0xbcc452c0,0xbcd35b12, -0xbcf6c090,0xbcc6bdf4,0xbcb2fd06,0xbc9244fe,0xbc70e1ea,0xbc372e2c,0xbc06b55a,0xba818864,0x3b8f6410,0x3c0c4b8f,0x3c0b37d8,0x3c0d1bdb,0x3bd8edb8,0x3bc2917d,0x3bb43193,0x3bf03b12,0x3c008082,0x3bd09858,0x3bbb390b,0x3b4fe7c5,0x3afc0cde,0xba962ca2,0xbba47050,0xbc3a7205,0xbc63b1ea, -0xbc7680c2,0xbc81b7ae,0xbc8e5c80,0xbca82acc,0xbcafc1e4,0xbcb75582,0xbcbd678b,0xbcdc6a8c,0xbcdeebd2,0xbcca0c76,0xbcbd3165,0xbca34cc6,0xbc8a788c,0xbc59263a,0xbc0c48ae,0xbbcdbec3,0xbb7e0632,0xba7064ac,0x3b00136b,0x3bc802c4,0x3c321162,0x3c0bbc5a,0x3c019696,0x3becdd36,0x3bf36908, -0x3c11270f,0x3bddf6bc,0x3baf7d57,0x3b84e4bd,0x3b84ad1b,0x3b06af22,0x3ad57956,0x3afea7d8,0xba8b3615,0xbbe91223,0xbc0296d7,0xbc2abdfb,0xbbf2c2fc,0xbbfdcfb2,0xbc2f31e0,0xbc90966b,0xbcae382f,0xbcc1fbe4,0xbc45efbf,0xbc7b4594,0xbc574fbc,0xbc33bebc,0xbc0b6699,0xbbf0610f,0xbba0fb11, -0xbb6065b5,0xbafc3986,0xb98e282f,0x3a9b41ba,0x3b41405d,0x3b7d296a,0x3bb8968f,0x3b9e958d,0x3b8c1dad,0x3b850278,0x3b3c40f8,0x3b061d29,0x3b19bef0,0xb9bf707d,0x3968db70,0xb9c48cd7,0x38901808,0xba620936,0xbac461b5,0xbb30e002,0xbb44d4c0,0xbb608970,0xbba8ce57,0xbc1afe0b,0xbc1aaca6, -0xbc41765a,0xbc1d21de,0xbc1a57eb,0xbc4eaa5d,0xbb86bdfe,0xbbba9531,0xbb993983,0xbb73de00,0xbb38bac1,0xbb1a0d99,0xbad008a3,0xba47f287,0xb95c051f,0x3996e20c,0x3a4c0057,0x3aa32e9c,0x3aed0051,0x3b26a156,0x3b11ee7e,0x3b148ab8,0x3b1ff932,0x3b21274c,0x3b13fd95,0x3b29ca5d,0x3ae81f71, -0x3acccb8a,0x3aa571e6,0x3a85e93b,0x3a982dae,0x3b0b1f61,0x3b114de2,0x3a9601b9,0x39ecf507,0x3a1f85eb,0x3a081253,0x38f10a62,0xbac542b7,0xbb30709b,0xbb43da34,0xbb774f56,0x39d59a71,0xb7ffb029,0x39ba0bfe,0x3a46bb9b,0xb9ebd82c,0xba797301,0xbab8d18f,0xbab072c4,0xba82188a,0x38a0ff93, -0xb9d6bb84,0xb9c32d91,0x38e2bc5f,0xbaada9a3,0xbaf1c2da,0xbb1b397d,0xbac22630,0xba5cae98,0x393a8d3f,0x3a0bd039,0x3a2412e3,0x3953c753,0x399209d7,0x393dc219,0x39990428,0xba06cf67,0x3a048712,0x3b1dc945,0x3b20c058,0x3b1f87a1,0x3b07a6e7,0x3b0c7d32,0x3ae560db,0x3a515f03,0x3aad0404, -0x3a7d9550,0x3a8c2959,0x3a582355,0x3bab5015,0x3bbc5e03,0x3a741ed6,0xbb008467,0xbb6f74bb,0xbba94870,0xbb85ffdb,0x39f97c2c,0xbaa8ad8a,0xbabdf911,0xb9a3d104,0xbb8b4752,0xbbdf3085,0xbc0d311b,0xbbe20183,0xbb821897,0xb9806366,0x3af227f0,0x3b207f8f,0x3a377ad7,0x3a326411,0xba2f5b00, -0xbb2c45db,0xba40c8f2,0x3a56e093,0x3b972c02,0x3bc9f4a0,0x3be52d05,0x3b8f56de,0x3ba453b8,0x3b742fe9,0x3ac4e14a,0x3b92f2d5,0x3b79f21a,0x3af764ba,0x3b7dd967,0x3b81ed43,0x3bfb66b9,0x34f1624a,0xbb7f7b4d,0xbbe81b2e,0xbc0967f3,0xbbedbdc0,0x3a921147,0xbadfaf46,0xbad305a4,0x392a5ade, -0xbbfbb9dd,0xbc430e89,0xbc5db15f,0xbc29ca99,0xbbc713b1,0x3a500f06,0x3b6a8a5c,0x3b9b2465,0x3b0c1757,0x3a8c6959,0xba77abc3,0xbb87e4c9,0xbac38097,0x3ac5a083,0x3c09b3de,0x3c2900b9,0x3c285fd9,0x3c12b927,0x3c019d0c,0x3bde9186,0x3aa51c36,0x3bd58737,0x3be5f4ee,0x3b1c4b34,0x3b7be135, -0x3c5c35d5,0x3c9939ac,0x3b5fa050,0xbb9e21a3,0xbc180c8d,0xbc67c49b,0xbc48451b,0x3b35630b,0xbb3163b6,0xbb56f5f1,0x3a9f67c0,0xbc3f1df4,0xbc94daea,0xbccb2c23,0xbc9d9bb1,0xbc38bdd0,0xb9876537,0x3bc7554e,0x3bf010b0,0x3b1f5f4b,0x3ad6805f,0xbb1ef992,0xbbc70b0a,0xbb0a3db2,0x3b7f7d00, -0x3c407b16,0x3c982d27,0x3caa74ec,0x3c50c873,0x3c5a9e78,0x3c3f32bb,0x3b877f8a,0x3c56124d,0x3c275ccc,0x3b863467,0x3c20a9e6,0x3b53f922,0x3c5cdffa,0x3a868efd,0xbbd6a71a,0xbc4f6690,0xbc8f59c2,0xbc55bc6a,0x3ae5adae,0xbb18da2a,0xbaa01ee4,0x3acb872d,0xbc3f2e38,0xbcaf0e89,0xbcc3879f, -0xbcac4c0e,0xbc2571bf,0x3af97010,0x3bf5457a,0x3c0fc615,0x3b610a60,0x3b18db12,0xba76c8aa,0xbb7e9ad0,0x3ac8880d,0x3bde1b5b,0x3c45d721,0x3cb3c670,0x3cce4714,0x3c84fbb6,0x3c5b81f1,0x3c39fffe,0x3b826049,0x3c46797a,0x3c765f6b,0x3baa040b,0x3bad9f01,0x3d448780,0x3d027095,0x3bd20611, -0xbafe59fe,0xbc0ae730,0x3cc52290,0x3cbf60da,0xbc5007b7,0x3ba036f7,0xbc49a2d6,0xbd1a5bb5,0xbd10cc3f,0xbcb18b65,0x3c5cd419,0x3c794d69,0x3c8290d0,0x3c40fffe,0x3c4077d5,0x3c2996a0,0x3c3e9e80,0x3c8c7bcb,0x3c709277,0x3c594302,0x3bce53b6,0x3b5cdedc,0x3c6c9868,0xb9ad8c09,0x3bf3ffb8, -0x3d1a1bf5,0x3cc2c635,0x3c4d2f66,0x3be6e827,0xbc078fe0,0xbc62b3cc,0xbbc5747b,0x3d06202f,0xbd829bf6,0xbcce490c,0xbba12dda,0x3c024754,0xbbf7537a,0x3bdd7121,0x3b8773db,0xbc50ae2f,0xbc0760fa,0xbb2ed436,0x3c80f513,0x3ad04d6b,0xbb0d34cc,0x3b85d0f3,0x3c5a656e,0x3ca4aa96,0x3c930342, -0x3bcf400f,0x3b50dd8a,0x3bdaf7fa,0x3b515863,0x3b64de61,0x3ba95d9e,0x3bf54452,0x3c03cdca,0x3bde18ce,0x3ca36f2e,0x3cb272f4,0x3c852f1d,0x3c0c0e94,0x3c0d6e78,0x3c79b10a,0x3c137e67,0x3c3c01ad,0x3d1cd87d,0xbd28b127,0xbbd7c449,0x3c33f3ec,0x3cd2cc22,0x3ccf649e,0x3c9e9329,0x3c853a25, -0xb8c91f0a,0xbc9b555b,0xbcae69a3,0xbc67711f,0x3c643b09,0x3a2618e3,0x3bca30e1,0x3c2ead42,0x3c2df3bd,0x3c0e16fe,0x3b926703,0x384389da,0xbbcd71b3,0x3a201799,0xb9e57a80,0x3a9386af,0x3b2d5947,0xb9fc1083,0x3bc0a319,0x3c17f83b,0x3c28fb61,0x3c372487,0x3be44afe,0x3c05f503,0x3c05c359, -0x3b571a82,0x3c5ce0f8,0x3c8aea78,0x3cb86948,0x3b0256f4,0x3cf48eb0,0x3cf5e556,0x3cde7683,0x3c9958e9,0x3c5fb636,0x3c26f38e,0x3bdd57b2,0x3bf01c9d,0xbc23d906,0xbc274c16,0x3c42445d,0xba921116,0x3a9f1a3a,0x3b118cf4,0x3baa6b2a,0x3b4f62d0,0x3b10f6ba,0x38f73e7f,0xbaaa8198,0xb9517b50, -0xbb171cdc,0xbb09b200,0x3a70ec48,0xbb33217a,0x3a814f79,0x3c0a49dd,0x3bbee685,0x3be60b6b,0x3bac547a,0x3c106d67,0x3c07924a,0x3aab7761,0x3c064d17,0x3c4c470c,0x3c01e840,0x3cd3da38,0xbcc12468,0xbc99eb22,0xbbb28d33,0x3c02c515,0x3c6168be,0x3ccedd98,0x3d01cd9f,0x3d0be230,0x3c84e504, -0x3c18fde2,0x3c7c8aca,0xbba312fc,0xbc17cf13,0xbbb77720,0x3b5f1915,0x3bcb894a,0x3c2797f5,0x3c1e3a11,0x3c15bab5,0x3bf914bb,0x3ab9ed45,0xb9cb282f,0x39c0e8b8,0xbae0cc7d,0xbae95d34,0xbb856d66,0x3b9eaa10,0x3bcbf75d,0x3b52a285,0x3b64eca3,0x39692e75,0xbbf757f6,0xbc058676,0xbc06daeb, -0xbc3b35fd,0xbcb397f0,0xbb8d37ac,0xbb7db585,0x3913b017,0xbb929849,0xb9e231d7,0xbbb9fbc3,0xbc88d3ab,0xbd02ec94,0xbc8a8c14,0xbc530ab3,0xbbc5cfe8,0x3a85bd39,0x3b40f9c8,0x3b922fc0,0x3a33feda,0xb95ff78c,0xbb29b960,0xba852512,0x3a622676,0x3aa45d45,0x39f73238,0x38a7d6df,0x37643f39, -0x3a088fb6,0xba792d84,0xbc0b7595,0xbbb75e0d,0xbbf10179,0xbc012374,0xbbf98b37,0xbc10c6df,0xbc5c5b0c,0xbc6f2dc8,0xbca6026e,0xbc95ec05,0xbc5d4cf8,0xbc76a6e6,0xbc43c642,0xbc28a7dc,0xbc027cee,0xbbafa08a,0xbbc332dc,0xbb385458,0xbacbeecf,0xbb416b11,0xbb398c44,0xbb7c6412,0xbb7b9e0b, -0xba7b01b4,0x3b54a3a7,0x3b0c2691,0x39e04832,0xbad38153,0x36034851,0x3ab00181,0x3b88e78d,0x3b8252d3,0x3b89112f,0x3bc30d33,0x3a313352,0xbb953ac4,0xbc4d52aa,0xbc88e798,0xbc958877,0xbc8f97a8,0xbcb0d24e,0xbcd3ffc5,0xbd01117a,0xbd086f48,0xbcfb5214,0xbcdd7f66,0xbc955e62,0xbc3ec68a, -0xbc431ece,0xbc4465b9,0xbc67546c,0xbc7d024b,0xbc81c62f,0xbc91bfbb,0xbc8aa2d5,0xbc627c87,0xbc303756,0xbc041a1a,0xbb1d0d08,0x3ac83b45,0x3bd44aff,0x3b655531,0x3a8792b7,0xba7f3759,0x3a8aec08,0x3b2407ce,0x3b814362,0x3bae969a,0x3bcb502f,0x3c054729,0x3a8022e3,0xbb87678f,0xbc49b594, -0xbc6729b7,0xbc99d47c,0xbcb5e7b5,0xbca9bc59,0xbca42d6a,0xbc9ff418,0xbcaa7181,0xbc9ab429,0xbc87a564,0xbc445d6a,0xbc98e306,0xbc861adc,0xbc7b23c6,0xbc7d29f1,0xbc7f4df0,0xbc6bbbb0,0xbc546d19,0xbc4e20e2,0xbc1934fd,0xbbc9e44d,0xbb5595b8,0xbaea3911,0x39b9cfdf,0x3b89956e,0x3b6b00e7, -0x3b7fd6d0,0x3b569834,0x3b9102ec,0x3bade1a3,0x3bdd94fd,0x3bc842e0,0x3bac9d9d,0x3bbcbfc0,0xb981eafd,0xbb9ff8e0,0xbc3194d1,0xbc489327,0xbc9087a6,0xbc97b120,0xbc9194c4,0xbc6ae0c4,0xbc59b424,0xbc41a492,0xbc488910,0xbc431e04,0xbc81f8ae,0xbc9312c5,0xbc87c3b8,0xbc6dc017,0xbc409ff6, -0xbc0025f0,0xbbcfea65,0xbb5650fe,0xba592832,0xb965ae5b,0xb9f2baa9,0x3991cbd3,0x3aebd15c,0x3b49de2b,0x3b8a70e8,0x3b7ade41,0x3b660caf,0x3b835085,0x3b84912c,0x3b5b8ee3,0x3b7efe2d,0x3b4de41b,0xb8fc20dd,0xbb2d4422,0xbb8a256d,0xbb97d365,0xbbb05cdb,0xbbdd689d,0xbbd6f020,0xbc00135e, -0xbc337f8b,0xbc709b17,0xbc8aecb7,0xbc99caea,0xbc9cb52e,0xbc9faa96,0xbc92e828,0xbbc204a2,0xbbda9c2b,0xbbce2259,0xbbb7df44,0xbbada464,0xbbaa8798,0xbb9db94a,0xbb925c4b,0xbb85835e,0xbb55d4ef,0xbb3818b4,0xbb314370,0xbb2884e3,0xbb0b91dc,0xbafa5d30,0xbacdff19,0xbaca4c4d,0xbac56f1d, -0xba9e93e5,0xba9c084a,0xba840267,0xba3f85e1,0xb9a8ce2d,0xbb15a402,0xbb2d3f2d,0xbb2e41ad,0xbb4aab49,0xbb793adb,0xbb8fa117,0xbb856796,0xbb68ce24,0xbb6b6ae4,0xbb83fa62,0xbb8af110,0xbb8b34ad,0xbbb49e51,0xbba40312,0xbb2c32a0,0xbace2bac,0xba992b66,0xbb12b869,0xbb28ec6b,0xbb3063f0, -0xbb3b71a5,0xbb272bd9,0xbab78fc8,0xbb02309a,0xbb01fc4c,0xbaceb287,0xbb050df7,0xbb238405,0xbb5cc7ca,0xbb3fa083,0xbb2daa1c,0xbb0364a0,0xbaae0f05,0xba8b3e6b,0xbaa3e257,0xbac15237,0xbad7514d,0xbae5c424,0xbb157015,0xbacc81fc,0x39aff0d7,0x370121fc,0x3717e2ca,0x387b0303,0x3848c8cf, -0xb9a3061d,0xbac6ba88,0xb9f1c464,0xba6796e1,0xbad02464,0xba9c1908,0x3b67491e,0x3b63c9e9,0xbac783f5,0xbb80e0c1,0xbb95e360,0xbbe16375,0xbbc22eec,0xba89827a,0xbb4818f4,0xbb496446,0xbb276750,0xbb5e2756,0xbbaa518d,0xbc0c4f8a,0xbc06f6b6,0xbbd8db2e,0xbb6d685c,0xba22064a,0x39b7efb1, -0xba90ae20,0xbb15320f,0xbb787271,0xbb9d4ba2,0xbb5d1d9b,0xbad9f4ed,0x3b2a1837,0x3b05d6b5,0x3b47bf05,0x3b0e5dc3,0x3b4b7ca7,0x3b378b21,0xba7853cc,0x3b2b5573,0x3ac10041,0xbaed7d6b,0x3adb9925,0x3b06b535,0x3b74f98a,0xbb5a5362,0xbbcfc134,0xbbe83d28,0xbc1e1a17,0xbc10a13a,0xb9583489, -0xbb86f36d,0xbb403070,0xbb082acd,0xbb4fdec7,0xbbe6da16,0xbc497b50,0xbc3af02e,0xbc18a494,0xbb97babf,0x39e17208,0x3b1e1688,0x3a2c7a30,0xbadcc1ea,0xbb7a4970,0xbbbc00c3,0xbb9b3bfe,0xbaf6bd12,0x3bdf2fa8,0x3bb0b4a9,0x3babfc08,0x3bf1029f,0x3bd397b6,0x3baceed1,0xbabf1345,0x3ba30f05, -0x3b9fdc34,0xbb44fba2,0x3a8dae07,0x3c47d171,0x3c74ac38,0xba571cc9,0xbbebd69a,0xbc021261,0xbc74e8cb,0xbc574d6c,0x3afacb49,0xbb97d277,0xbb707a4d,0xbb0fb35d,0xbb942c3a,0xbc1b7ede,0xbcaafa2c,0xbca3cc6a,0xbc7bb744,0xbbd64d62,0x3b329029,0x3bb19d78,0x3aaf6daf,0xbb0e7b87,0xbbe83d60, -0xbc07f04f,0xbbc6274b,0xba4ca425,0x3c376647,0x3c4f5715,0x3c8073a4,0x3c2aa0b6,0x3c5b0184,0x3c4c1082,0x3af2e827,0x3c4fbcce,0x3c0e5c2a,0xbaa92c02,0x3bf208c8,0x3aff127c,0x3c037f24,0xbbab6ebe,0xbc199e90,0xbc285b33,0xbc8469c8,0xbc6497e6,0x3a246df6,0xbbb3bc54,0xbb202e5e,0x3a0fede8, -0xba610ed6,0xbc178b27,0xbca238d9,0xbcac2179,0xbc7d2cc6,0xbbe27547,0x3b6a8887,0x3bd81f77,0x3b3c8dd0,0xba772102,0xbb901ef1,0xbbfe049b,0xbb87f70e,0x3b3843a4,0x3c50acbf,0x3ca254c2,0x3cbc8337,0x3c86cd78,0x3c594707,0x3c3d0751,0x3b1b9018,0x3c670708,0x3c774cbe,0xbb309297,0x3b0fb6b1, -0x3d6034ef,0x3cf3cbf0,0x3bf9bebb,0xbc1035d3,0xbce4913e,0x3bb2c8b3,0x3c1d4ab3,0xbc861531,0x3bb261c9,0xbbc94bc0,0xbd0a7299,0xbd023ada,0xbcd1ab24,0xbc0ae987,0x3bedaaf8,0x3c50c2d7,0x3bd79eb9,0x3c1b3cd5,0x3c18029d,0x3c2bb7bb,0x3c63da17,0x3c369645,0x3c1097a3,0x3bd24128,0x3afe816b, -0x3bd53fa9,0xbb34f8ed,0x3bde0abe,0x3d257faa,0x3c6e915c,0x3b0c10e9,0x3ac2727d,0xbcc576f7,0xbcaffd3d,0x3ba8fe8f,0x3d35d427,0xbd8a776d,0xbcf5f51c,0xbcea65f8,0xbb9283a3,0x3c264245,0x3c1d6935,0x3b2f639a,0xbc24a329,0xbc8b43bb,0xbc3cf1cb,0x3ca3570e,0x3adfc4ec,0xbb31fcc2,0x39eca0fb, -0x3be9edfe,0x3c3ad5ae,0x3bdf561c,0x3aed2d4b,0x39e9c6a7,0x3b49823c,0x3ba6b37c,0x3bc1c690,0x3bbd315b,0x3b47b3e9,0x3b840b1e,0x3c109b54,0x3c950e80,0x3ca024bc,0x3c360ed1,0x3c038bd9,0x3be03383,0x3c1338cb,0x3c78e72d,0x3c850de6,0x3cd3ca5c,0xbd4488f2,0x3c0a58f8,0x3cb74f31,0x3cc36a9c, -0x3c99b690,0x3c9044d9,0x3ce4d2d4,0x3c9094f2,0xbcaaeea3,0xbcad5f8d,0xbc9e6b08,0x3bdcba29,0xb946f547,0x3beb9987,0x3c627fca,0x3c70b413,0x3c31a552,0xbacee30a,0xbaa3b65e,0xbb8ec406,0xbb411fe2,0xba1c523e,0x3b23c439,0x3b77aa6a,0x3ad6e671,0x3bdcd438,0x3be8cefa,0x3c15cc3e,0x3c0a565b, -0x3b86b8ab,0x3c12b376,0x3c225720,0x3c2ab68d,0x3c57864c,0x3c52190d,0x3c76eebe,0x3c19ae3e,0x3cf72c67,0x3cddd347,0x3c93553d,0x3c381342,0x3b724eb1,0x3ccde47c,0x3cd1dbc8,0xbbf687c1,0xb97e4991,0xbb7d0a57,0x396add69,0x3b805b0c,0x3c0efaf7,0x3c4dde31,0x3c4c32d8,0x3c12871f,0xbab08531, -0xb9603e44,0xbaee2519,0xbb2908b4,0xbb4b4ff5,0xbad0a2d4,0xbada8f27,0xb9e28d21,0x3af8e58d,0x3b901249,0x3b134c5d,0x3b553076,0x3bb4b5be,0x3bf42462,0x3c231cf8,0x3c503118,0x3b91ee06,0x3ba9e3aa,0x3c1be72b,0x3cda1937,0xbd02a7ed,0xbcb3309c,0xbc5a8b06,0x3ae9b06b,0x3c466a60,0x3c662e3f, -0x3c91830d,0x3cb002e6,0x3cc64ae3,0x3cbddd31,0x3c93d821,0x3be772a8,0xbace2fce,0xba890c70,0x3b92ed1c,0x3c065d44,0x3c09f9f2,0x3ba943a7,0x3b1d76de,0x3b3356da,0x3ae90d96,0x39303e00,0xbb81b8a2,0xbbaee74d,0xbb8d3095,0xbb9355bc,0xb9b26bb7,0x3a753f35,0x3aa42f7f,0xba232c21,0xbb5038eb, -0xbbabce97,0xbb62c779,0xbb32818e,0xbb8a958c,0xbcc9aade,0x3c1a643a,0x3c3c01cc,0x3b833f4b,0xbbdd0344,0xbb1050b0,0xbb7a5231,0xbbb8a5a5,0xbc282874,0xbba518ec,0xbbc5ff80,0xbc11e77f,0x3a716220,0x3b82e3cc,0x3b74ca0a,0x3b4f254e,0x3b3c7bc6,0x3aeaf658,0x3bba7b93,0x3baad70b,0x3a97509d, -0x38bcb18a,0xb8d307be,0x3b7636d0,0xbb07a4a0,0xbb9ccc2e,0xbbed4863,0xbc1f92d8,0xbc2ac364,0xbbf12c20,0xbb8e6f2f,0xbb2cd796,0xbb02011c,0xba5c1239,0xbb9fda38,0xbb7e8050,0x3b0d4b1f,0xbc6700de,0xbc0d59ae,0xbba5b4ce,0xb9fd6e8c,0x3a27af4e,0x39a2ee93,0x3ae9c583,0x3b9bd0a6,0xba9bb630, -0xba0f5314,0x3aefaf24,0x3af913d6,0x3b6f8888,0x3ba946eb,0xb98b3835,0xba3e00c1,0x3a0a771f,0x3ae88be6,0x3b4658b3,0x3b4ba7db,0x3b95ec95,0x3b37d118,0x3b0860bf,0xbbb47c37,0xbc17e504,0xbc584550,0xbc4c8f04,0xbc7595ef,0xbc8d27ea,0xbcaacc76,0xbcc9ccdb,0xbce3ff06,0xbd012070,0xbcf87158, -0xbce9971d,0xbca17101,0xbbc46ac2,0xbb8459d4,0xbb34553b,0xbb8184ad,0xbb45c120,0xbb92d1c8,0xbbe3b34f,0xbc05acf3,0xbc0c3321,0xbbdd0a71,0xbb416331,0xba4457fb,0x3820a704,0x3b00a8cf,0x388882e7,0xba4419ad,0x3a3abddf,0x3afef879,0x3b5ccf80,0x3b8ab4e4,0x3b8fc01c,0x3b82d622,0x3b5dec72, -0xbb81e58b,0xbc3297e9,0xbc98c21e,0xbca1cfc7,0xbcae08e5,0xbcc4ce4f,0xbcbb154b,0xbcbadf90,0xbcc236ec,0xbcb5e9f8,0xbca0f17a,0xbc64bd62,0xbc10b4b9,0xbc25f4a6,0xbbe3ba67,0xbbeffe86,0xbbf5f808,0xbc05879b,0xbc06f674,0xbc053df9,0xbc1719d0,0xbbbacfa0,0xbb8d5aa3,0xbb75679d,0xbb9e8fdd, -0xbbab52d6,0xbba62b96,0xbb5077a4,0xbb02c81b,0xba9bac5d,0xba28f366,0x38cee030,0x3abcc959,0x3975a3b0,0xb9dd62e9,0xb8b8b0cd,0xbbb40433,0xbc32f794,0xbc909d74,0xbc904bf6,0xbc9bcb9b,0xbca22df7,0xbc960bf2,0xbc912d58,0xbc8ccb44,0xbc493dca,0xbc0ae303,0xbbc4f639,0xbc0b39b8,0xbc4140e4, -0xbc1178e4,0xbc145304,0xbc03c413,0xbbd96858,0xbbe43395,0xbbc34cd6,0xbbb8f236,0xbbcfb6a5,0xbbd7249b,0xbbb7c32b,0xbb934ce7,0xbb55ac5d,0xbb396d92,0xbb785a3b,0xbb939616,0xbba80734,0xbbab9170,0xbbbd2e10,0xbbc8dcf0,0xbbafbba2,0xbbec2ce7,0xbc0909c6,0xbc0e51b4,0xbbdff38b,0xbbb04616, -0xbbd274d3,0xbbc10888,0xbbef220e,0xbc11aba0,0xbc0c7449,0xbc47080b,0xbc4d78a0,0xbc70e322,0xbc7f8333,0xbc3b2687,0xbbe45b15,0xbbe97351,0xbbf1339a,0xbbe7d925,0xbbe322e8,0xbbe5c450,0xbbe05ed9,0xbbdc0a74,0xbbc9b637,0xbbbf74e1,0xbbc5158d,0xbbccfcf1,0xbbd47120,0xbbcd8393,0xbbc0278d, -0xbbb4c7dc,0xbbb1b295,0xbbac5ae1,0xbba42659,0xbba96a79,0xbba1026a,0xbb9ac464,0xbb87f436,0xbbc7e1bf,0xbbdaa434,0xbbe1c313,0xbbfbcea2,0xbbf8beaf,0xbbfcaaa3,0xbc01de96,0xbbf6edcd,0xbbe7379c,0xbbc661c3,0xbbbb4193,0xbbb43bf1,0xbbd7deb2,0xbc2e0224,0xbb4aae5a,0xbb0b440e,0xbb0585c5, -0xbb2b4d46,0xbb2c8e9b,0xbb248f06,0xbb3514bf,0xbb2dc2a5,0xbaf56762,0xbb13f66b,0xbb0d4291,0xbace128d,0xbabd9468,0xbaf14841,0xbb3c836f,0xbb407104,0xbb448762,0xbb2b1f11,0xbb0ac903,0xbaeac252,0xbac7b7be,0xbb031f98,0xbb165375,0xbb32519e,0xbb2e070a,0xbb0d9ed0,0xba1a8480,0xbaac5b6a, -0xbaa6e802,0xba422397,0xba897aaf,0xbaa6b31d,0xbb0bcaa6,0xba97180d,0xbac52ef5,0xbb47fcb4,0xbb083f30,0x3ae358df,0x3a810e28,0xbb1a4566,0xbb88494f,0xbb9309e8,0xbbc9c772,0xbbb1b892,0xbb046afb,0xbb52eb2f,0xbb28198c,0xbad8275f,0xb944b561,0xbabfd93c,0xbbc0416c,0xbbdfb2f8,0xbbdd1ed8, -0xbb9a48d5,0xbb325c7a,0xbae550c0,0xbad5c8f0,0xbb56a124,0xbb93d987,0xbbb3fb2a,0xbb87dea1,0xbb218b3c,0x3ae9a7e4,0xba4a73f5,0x38d0aac2,0x3b0e5209,0x3b190d86,0x3b26e4a4,0xbabddc96,0x3a799c80,0xb90fb12c,0xbb807ee7,0x3a369826,0x393b6309,0xba1f6b5e,0xbb95bda7,0xbbc7b286,0xbbb66d9a, -0xbbff20a0,0xbbfe8431,0xbb035112,0xbb972817,0xbb0e3a24,0xb9ae7e44,0x3b38ca89,0xb9b1f04b,0xbc066e82,0xbc1ba9a5,0xbc217a79,0xbbe13099,0xbb56008f,0xba84d519,0xb8c9249e,0xbb39ce17,0xbb962d84,0xbbdd9e49,0xbbb8e9cb,0xbb566d48,0x3bc6bc7b,0x3ad358e0,0x3b0f9ad2,0x3bea8946,0x3bb349c4, -0x3b8de9ce,0xba5bf73d,0x3b61f855,0x3b17644b,0xbbe0f916,0xb9f8fc38,0x3c128c0a,0x3bf4d9fb,0xbb270a3f,0xbbf67bb2,0xbbee0623,0xbc45ebc7,0xbc2f3670,0xba8a4ea5,0xbb9cc661,0xbab24701,0x3a09431f,0x3bb9d188,0x3aec1039,0xbc53012b,0xbc7e8e57,0xbc7cc7ec,0xbc14a57c,0xbb588c2a,0x39615960, -0x3a17cb88,0xbb66da76,0xbbf84413,0xbc0c9011,0xbbea7475,0xbb832598,0x3c371e2f,0x3bbd34b2,0x3c16eeb7,0x3c30fcfb,0x3c66186c,0x3c502dc5,0x3aafab36,0x3c1aa3df,0x3ba4a482,0xbbc0c72d,0x3bae6028,0xb9a0d4ab,0xb943d1db,0xbbfea024,0xbc0e309a,0xbbc6fe2a,0xbc352837,0xbc4865d8,0xbb44e714, -0xbbd3c4da,0xba780f13,0x3b91ef84,0x3c33d2a4,0x3b80647d,0xbc52ad29,0xbc8c0a6f,0xbc8b9c83,0xbc384246,0xbb5c1c0c,0x3a3b43d2,0x3b3c8759,0xbb0baf81,0xbb95600f,0xbc04b86a,0xbbde53ab,0xbaad9a48,0x3c4cc8f8,0x3c65d516,0x3c868ad9,0x3c81df59,0x3c65ed7a,0x3c515cfd,0x3b500135,0x3c63b228, -0x3c38384f,0xbc36b7f9,0xb9f41369,0x3d46219d,0x3cac3b85,0x3baa2c2e,0xbc496e83,0xbd012cdd,0xbc16d7ab,0x3a72a69d,0xbb5ee012,0x3c04cf7c,0x3a354357,0xbca2dec7,0xbcdcd4b3,0xbccfee21,0xbc740e08,0x3aae9cd5,0x3c023960,0x3b9af232,0x3b94cb94,0x3b8e35b9,0x3c024af3,0x3bee0d97,0x3b9a848e, -0x3afee598,0x3bf80d6f,0x3b5c0cb6,0xbaa9cdd5,0xba366f68,0x3be56b35,0x3cdb6957,0x3c0d9899,0xbb2bee6a,0xbc0eca5a,0xbd0652e2,0xbcb339eb,0x3c72c552,0x3d374966,0xbd6c32fe,0xbd160de6,0xbd0c38f6,0xbbdbb5f7,0x3d02b10b,0x3c2040bc,0x39e71d7c,0xb8c70cfc,0xbc7b5564,0xbc3724f0,0x3ca22c0c, -0x3af3ca0f,0xbb3087e6,0xbabf32cb,0xb9ddbe3f,0x3ac0fdd0,0xbb110a42,0xb9a2c69f,0x3a295a6d,0x3ac66d99,0x3b99e5a2,0x3bc52dd3,0x3ba845b6,0x3aabd6ab,0x3b4ad937,0x3c381604,0x3c6272dc,0x3c5d2096,0x3bc08bb2,0x3b4003c0,0x3b63d548,0x3c350ac0,0x3cc7a3c3,0x3c99b0d3,0xbbe4ac6e,0xbd38b76d, -0x3c203425,0x3cd1cc1f,0x3c712f18,0x3b654f5c,0x3bc69036,0x3c85435e,0x3c868956,0xbb023387,0xbc0e7192,0xbc498ad3,0x3a366276,0x3b0da71f,0x3c1c580f,0x3c53eac3,0x3c7098fd,0x3c1afe1d,0xbaac26b2,0xbab307c4,0xbaf0f8d3,0xba9e9ad2,0xba88b257,0x3b117c65,0x3b275962,0x3ba61107,0x3c04309d, -0x3b947802,0x3bda0b82,0x3b8f4728,0x3aa68a15,0x3bfcc565,0x3c21768e,0x3c8d867e,0x3c00f2fb,0x39b6594e,0xbb010bc9,0x3beba2c9,0x3c9c6b0a,0x3c9b6f46,0x3b89d30c,0xbaf39808,0xbc5c68bc,0x3c633bdc,0x3c9cbc94,0xbb08622f,0x3c413e19,0x3be61b84,0xbba22036,0x3c16dab0,0x3c706a90,0x3c8e3a96, -0x3c419b75,0x3c0908d6,0xb9df9745,0xbaecf48a,0xbb487495,0xbb8bf9b7,0xbb7f368a,0xbb027e35,0xbb622f7c,0x3aa701e1,0x3b0f92fa,0xb7a79283,0xba8dc451,0xb99c45d4,0x3b407326,0x3be9e34d,0x3c2f4f3b,0x3c82600b,0xbb92a5e0,0xbc088461,0x3b53ecc2,0x3c80cd38,0xbcce962a,0xbca9a3d3,0xbc62a796, -0xbb47d2f5,0x3c0283d8,0xbaa3b04a,0xbb1655f8,0x3af81406,0x3cae306c,0x3cde0d39,0x3c90940c,0x3c81a54b,0x3c056579,0x3bda9418,0x3b7c9967,0x3bb8e404,0x3b9fa4a5,0x3ae33f15,0xbaa52814,0xbb84ac1b,0xba79af89,0xbb18e071,0xbbdf698d,0xbc125eb7,0xbbe87114,0xbb44b661,0xbbb16bf6,0xbb8fe9ef, -0xba84a929,0xbb94a430,0xbb96ed66,0xbb4874f5,0x3b0aee42,0x3b4d6aae,0xbac31daf,0xbc9e5d11,0x3c8a8bfc,0x3ca7a07c,0x3c903a35,0x3c3e3f29,0x3bef7f59,0x3bffeef8,0x3c49e40a,0x3ca2150f,0x3bc4109e,0xba8671d9,0xbc1d6ab3,0xbbb88e40,0x39dd7ccd,0x396028bf,0x3b19df98,0x3b63ac16,0x3b87f597, -0x3bc94ffb,0x3bb2cfd0,0x3ae9c38c,0x3aa31371,0x3a47f800,0x3b02478d,0xbb3bead6,0xbbca037e,0xbbdbba17,0xbc183978,0xbbe3bee4,0xb8a8c3c8,0x3a4993af,0x3ad6dd6c,0x3ba101cd,0x3ba7012e,0x3ba67922,0x3c19369a,0x3c3fbde2,0xbc9115f1,0xbc289b71,0xbc116f0f,0xbb8f08d0,0xbb8d1afd,0xba8581be, -0xb9ffb796,0x3af9a591,0x3b31815f,0x3b8db1e5,0x3b9694f8,0x3bb0b91a,0x3b778c1b,0x3b4d739a,0x3a54d134,0x3a695772,0x3badf8b9,0x3b8a709a,0x3b9023aa,0x3b5dfe7e,0x3bb462b4,0x3ac9e0e5,0xbba50cd8,0xbc1ae473,0xbc2cbd36,0xbc20b32e,0xbc095569,0xbc3c55f3,0xbc69b02c,0xbc926ab8,0xbca7305e, -0xbca179b0,0xbcd7666d,0xbcddfc84,0xbce25e41,0xbcc0b5c0,0xbbe747e1,0xbaff2ff9,0xbaae41ed,0xbaa01324,0x396a8106,0x3aa66408,0x3af1df9c,0x39c3bb45,0x3a309bdd,0x3a891e0c,0x3b276533,0x3b53f2fa,0x3b377a86,0x3af8cb6d,0x3af5eea1,0x3b12395a,0x3b9d80a4,0x3b93646c,0x3baba9f5,0x3bb9c3ac, -0x3b478938,0x3a5ea383,0xbb5c9751,0xbbe3c61e,0xbc45115c,0xbc7500c5,0xbc9360e3,0xbc96a527,0xbcac09e9,0xbca73e8e,0xbcaabe94,0xbcb11b2d,0xbcb479ad,0xbcad633e,0xbc803ea9,0xbc38b984,0xbb9cd2fc,0xbb5ba14c,0xbb4b9a5c,0xbb067da4,0xba848f88,0xbaa9e68d,0xbaa06c05,0xba2f552b,0x38b566b4, -0x383d228a,0x38e318f9,0xbaa90299,0xbad9f696,0xbb05c0bf,0xb99e0fd3,0x3a38705b,0x3ab77fe2,0x3aaf5d38,0x3b0067c7,0x3af3d41e,0xbab82d31,0xbb45db2f,0xbb977556,0xbbe8bc9c,0xbc2eace5,0xbc6d3cdd,0xbc78a28d,0xbc74cb5f,0xbc9035d9,0xbc8037f6,0xbc8a4cab,0xbc87e0c0,0xbc3d0583,0xbbd4f495, -0xbbba85ce,0xbbb88174,0xbbe7b4f1,0xbba0240a,0xbbb7738c,0xbbc985f8,0xbbdd6ca2,0xbbea3f65,0xbbedc027,0xbc01fcb5,0xbbf49af2,0xbbd512d6,0xbbb47777,0xbb8d9137,0xbb54d358,0xbb3204a4,0xbb6e521c,0xbb8ba64c,0xbb9aa9c6,0xbb9dc2dd,0xbba1d9c2,0xbba2a17e,0xbbc166ae,0xbbce57f6,0xbbe538e7, -0xbbed957a,0xbbcfbd04,0xbba42025,0xbbab4d17,0xbb854c02,0xbb88a89e,0xbb8ce224,0xbb38dd16,0xbb8a8118,0xbbbe72a1,0xbc0e79b7,0xbc0f8cd7,0xbbd6174f,0xbbb434d4,0xbb988d1f,0xbba2b7a4,0xbb98d972,0xbb90e73f,0xbb91d64f,0xbb8f8dd3,0xbb8ddf17,0xbb86d28c,0xbb8b9582,0xbb928028,0xbb984aba, -0xbb9dab28,0xbb96f13c,0xbb8e2247,0xbb86cf14,0xbb86420c,0xbb83d237,0xbb82d25d,0xbb7cfc2c,0xbba46027,0xbbc234cd,0xbbdb3e7f,0xbbbff61f,0xbbea649f,0xbc0a4428,0xbc1377ce,0xbc0d4d42,0xbc0d51f9,0xbc110957,0xbc0b59ab,0xbc0640c6,0xbbccefc9,0xbba0006f,0xbbc2f76a,0xbbbeb4f5,0xbc10d493, -0xbb1b7e87,0xbaca9696,0xbade7e04,0xbb01cef5,0xbaf0cffb,0xbacec766,0xbaf7c3c7,0xbb036e54,0xbaf13a6d,0xbae51de8,0xbac29a93,0xba471c1e,0xba21a65a,0xba7a49a7,0xbaec28ae,0xbb13e661,0xbb265cc9,0xbb1bd656,0xbb0908c5,0xbaed2d3c,0xbab73835,0xbaf9bdda,0xbb12374e,0xbb359abe,0xbb0afbdd, -0xbae42479,0xba21ceb0,0xbab0be8e,0xbaa07e83,0xb9dc46c7,0xba87d1df,0xba923dd9,0xbaad57c4,0xba6e18fa,0xba91fa5b,0xbb2a75b0,0xbadab4b5,0x3a4d9e22,0xb895bfe9,0xbae1eb88,0xbb4d38ed,0xbb680e46,0xbba150ab,0xbb92d20d,0xbb4b81ab,0xbb1c196b,0xba862869,0x38bf5ff3,0x3afa3964,0x3a782d89, -0xbb4431b0,0xbb9b15c8,0xbbb8a421,0xbb99e2ed,0xbb6e5b30,0xbb3a9639,0xbaf6fd7f,0xbb5c0666,0xbb8db3ac,0xbbb54ea8,0xbb6ddbd3,0xbb01ad76,0x3ac811a8,0xbac5e215,0xba2ae063,0x3b602853,0x3b18752f,0x3b129674,0xb9a8e80c,0x39cb8b0f,0xb9180085,0xbb4c7781,0x3a42f476,0x38a42eb8,0xbada8b1c, -0xbb50d2fd,0xbb7879fc,0xbb40072d,0xbbacca5d,0xbbca8ab6,0xbb886cbf,0xbb687519,0xb9b3a2dc,0x3b1995ed,0x3bbb858e,0x3b65c6f0,0xbb79a4e2,0xbbe18d51,0xbc0fcf48,0xbbf9b5d9,0xbbb63b18,0xbb7fe121,0xbabec8b1,0xbb7792a9,0xbbaca9d6,0xbc0071b2,0xbb9f218e,0xbb2eaa62,0x3b9e10d6,0x3a0df1d1, -0x3ad64083,0x3c043d7d,0x3b98de2b,0x3b80c834,0x3af9b030,0x3b4a592f,0x3ac5f537,0xbbb74a80,0x399ae7a1,0x3bce2a99,0x3b3bf9d1,0xba8141f4,0xbbaabc89,0xbbb2bc0e,0xbc1d140c,0xbc147d7a,0xbbc1fcd2,0xbb586e55,0x3b035975,0x3b818303,0x3c2ccca2,0x3bfee1ec,0xbbb3deb1,0xbc283bb0,0xbc590899, -0xbc27aec3,0xbbfe2894,0xbb984f63,0xba9ef7a4,0xbb9b3517,0xbbf83e75,0xbc1daa4a,0xbbc59b58,0xbb8e20ab,0x3c2e3d76,0x3b0d934d,0x3bb9dce1,0x3c6a2dec,0x3c681aea,0x3c47d129,0x3b48defb,0x3bdc011c,0x3b65b6ff,0xbbad67a9,0x3b9c4341,0x3a0f74a6,0xbb5393fd,0xbb98e0e1,0xbb8ac82d,0xb99865e7, -0xbbcee208,0xbc230302,0xbbf2f6b0,0xbbaaf95d,0x3ae1c980,0x3c02aa95,0x3c7e2ab4,0x3c37727b,0xbba92dca,0xbc47875c,0xbc80f4f7,0xbc5acd7e,0xbc164450,0xbbc3513c,0xb996bd0d,0xbb59de83,0xbbb707fa,0xbc0f6b3d,0xbbd23f17,0xbb40b44e,0x3c44d5ce,0x3c18076a,0x3c2f4961,0x3c898e49,0x3c7ad925, -0x3c5b6a0b,0x3bddcb10,0x3c46d899,0x3bf7a7ee,0xbc3b1a17,0x3a58eca4,0x3cf8c0b8,0x3c218cc1,0xb898621e,0xbc51ff83,0xbce06267,0xbc942a22,0xbbaed631,0x3c3a464a,0x3c2d06af,0x3be9997b,0x3a57273e,0xbcba1ee2,0xbcd130e5,0xbc5a510e,0xbb2cde05,0x3b65570f,0x3b95c319,0x3b1c81d8,0x3a827153, -0x3adaf335,0xb8ba5665,0xb9c1a962,0xbb345e82,0x3c02e8cb,0x3bb0f553,0xbbe71fb9,0x3bab5912,0x3c2ba93f,0x3c141809,0x3bc31ee6,0xbb83230a,0xbc7672a1,0xbcef5139,0xbc5973d5,0x3ca9ca26,0x3d140069,0xbd268743,0xbce3149e,0xbcd506c7,0xbadb2e84,0x3d43de94,0x3c77ed0f,0x3bf89988,0x3be0a922, -0xbc2bbe93,0xbc196896,0x3c293f59,0x3bb6405a,0x3b35a0f9,0xbbbb8e75,0xbbcd4338,0xbbd200fd,0xbbc28022,0xbb23ecee,0xbab66f87,0xb972fa7e,0x39ceca5f,0x3a96a811,0x3b7d6039,0x3ac8b7e0,0x3b9badfd,0x3c2f1e82,0x3c182e71,0x3bd76ecf,0xba5cec19,0xbb2702cc,0x3b2c9ebb,0x3c8c6ca1,0x3ce39072, -0x3c62abaf,0xbcfb797c,0xbd19f035,0x3b77d866,0x3d134a75,0x3b3385cc,0xbc4646d5,0xbbe08375,0xbc30e98b,0xbb4774cf,0x3ced9048,0x3a81ce6a,0xbbd783cd,0x3abaa69c,0x3b7b35c6,0x3bffd6b6,0x3c101cbf,0x3c2480f6,0x3ba87197,0x3b11fc6d,0xbab69663,0xbad26ac6,0x3a8ba5f1,0x391cc6f1,0x3b0580a7, -0x3afc4005,0x3bd91852,0x3bf4208f,0x3b612291,0x3b4af9bb,0xb9e7875d,0xbadb4f32,0x3bbbbb79,0x3bfd6f38,0x3c6f74cc,0x3b6ce46c,0xbc170534,0xbc3b5893,0xbb8e6044,0x3b7a224a,0x3c846dce,0xbb76657a,0xbc3ccd90,0xbce77161,0xbc803c66,0xbbc1ac89,0x3cd831ff,0x3c77b607,0x3c349d01,0x3ade6c60, -0x3c370445,0x3c705851,0x3c73d2c3,0x3c0b2909,0x3bad2d41,0x3aebf5f6,0xbb61d400,0xbb8a505f,0xbb3dbb04,0xbb2d4ad7,0xbac03b25,0xbb52fd03,0x3aee1519,0x3aab9ad0,0xbac99783,0xbb4ef829,0xbb0e94bc,0x3aa6f26f,0x3bd9ed49,0x3c1cc8a9,0x3c03ba80,0xbc140991,0xbc717e4c,0xbb3004fa,0xba145384, -0xbc2b13d5,0xbcb1e444,0xbc3cb6f9,0xbbd101e8,0x3b30632c,0xbbb492ef,0xbb89ace0,0xba8f51e6,0x3c5f8c55,0x3cb16a9d,0x3c8d8ef0,0x3cabd0cb,0x3c856c18,0x3c376a9b,0x3b891fe0,0xb9cbd316,0xbabb548b,0xbb719b14,0xbbab6060,0xbbfdc240,0xbbb94b26,0xbbe07515,0xbbf96c3a,0xbc23557f,0xbc05103e, -0xbb32c6b9,0xbbccd7d8,0xbbb36ad7,0xbb0319ef,0xbb9fd9bf,0xbb09f5b3,0x39764fec,0x3bd76a05,0x3c02adfd,0xba9bd3e2,0xbba49134,0x3c7922c8,0x3c9c8759,0x3ce149e1,0x3d032248,0x3cad9d67,0x3ca348cb,0x3cb11766,0x3ce9dc5b,0x3c842682,0x3c0f5b0a,0xbade91ff,0xbbdd6ff0,0xbb738143,0xbb89d407, -0x38e8f771,0x3b32f58c,0x3b8a7db6,0x3b99d25e,0x3b9aa7ea,0x3b2b0fb8,0x3b0c0202,0x3a7180ea,0xbb43a938,0xbb83e119,0xbbc5ff76,0xbbecbec1,0xbb8c3f55,0x3995fcb9,0x3b9bbc10,0x3b5ef479,0x3ae725fc,0x3b6b7cf8,0x3b8a7d81,0x3baf1754,0x3c37fa2e,0x3c231f89,0xbc99a146,0xbc48d63a,0xbc47b851, -0xbc01cf0d,0xbb9120fe,0xba1ebabb,0x39c6bce6,0x3b4adca7,0x3b8e3d95,0x3bc2d3e8,0x3bf6c632,0x3be96da8,0x3bae0d6f,0x3b4c0d71,0x3b601f61,0x3b9101d3,0x3bbf0ab5,0x3bba8880,0x3b9c5cea,0x3b84d6ed,0x3aee424c,0xbb3987fa,0xbc0e3f20,0xbc1fbbcc,0xbc1d9899,0xbbff599b,0xbbd18b6a,0xbc10586c, -0xbc202aa1,0xbc56844e,0xbc654e09,0xbc40eff2,0xbc81e427,0xbc8e4728,0xbcbc004e,0xbcb36393,0xbc34140e,0xbb7db270,0xbb678f96,0xbb49b207,0xbb53c047,0xb9291411,0x3b5be58f,0x3bbf6167,0x3be0dbd5,0x3be05777,0x3bf3d005,0x3bc424b3,0x3bb66d84,0x3b940d64,0x3ba26b95,0x3bbf2046,0x3bdcc917, -0x3bc88286,0x3bb7b407,0x3bc16aaf,0x3b02c5d8,0xbaf7d1c4,0xbbf7a490,0xbbf63c61,0xbc1700f3,0xbc0e9f64,0xbc4ea9ca,0xbc5c766a,0xbc8015da,0xbc841194,0xbc8cc51f,0xbc9763fa,0xbca05d67,0xbca9baa5,0xbc9d5a21,0xbc7f3cd2,0xbb916591,0xbb5a20e9,0xbb3a580d,0xba8131b8,0x3a996c39,0x3acf199b, -0x3ae0a16d,0x3b2e8b3d,0x3b18aed6,0x3b31335d,0x3b7014a2,0x3b54342f,0x3b5ca92f,0x3b3df64d,0x3b5c70be,0x3b74ea31,0x3b7ba2e5,0x3b66cd3e,0x3b6fd26e,0x3b63da03,0xb8eb8a43,0xbb417917,0xbbc50f67,0xbbc9d1c2,0xbbef6323,0xbc0014be,0xbc208946,0xbc276543,0xbc6b328a,0xbc5924bb,0xbc8038c7, -0xbc843500,0xbc58413f,0xbc1b649f,0xbc15345f,0xbbcc02a9,0xbb3521bd,0xb997fb4e,0xba900e21,0xbb256aaa,0xbb8bb13d,0xbb9a9783,0xbba7fa98,0xbbb64f47,0xbba35485,0xbb898775,0xbb85bbeb,0xbb67c6c7,0xbb4687fd,0xbb189f66,0xbb175787,0xbb098577,0xbaf8b95f,0xbad0ffc5,0xbaa99c14,0xba2b1af8, -0xbafb461a,0xbadd5ea1,0xbb04f929,0xbb31533b,0xbb5e996d,0xbb629736,0xbb60dbf6,0xbb24c27d,0xbae62568,0xbb026a82,0xba2ff61f,0xbabba24d,0xbb1103be,0xbb5c72d4,0xbb5a3bb6,0xbb1f12e2,0xba686201,0xb9c010f4,0xba3cde88,0xb9ca05e2,0xb8c49cc7,0xb637eaa9,0xb95e3c68,0xb9ebafc3,0xb9bf27a1, -0xb9eac253,0xb9ae1979,0xb95c17d5,0xb9553a01,0xb933bd8e,0xb9152768,0xb8e2e350,0xb84e291d,0xb80fd0ea,0xb8b20beb,0x39111e39,0xba64a3ea,0xbae09f0f,0xbb30ef01,0xbacfb2ab,0xbb109aa5,0xbb524861,0xbb6da8fb,0xbb702907,0xbb8457f3,0xbb8fd023,0xbb8b357b,0xbb91eae5,0xbb37d0c8,0xbad0390f, -0xbb0f305d,0xbab51064,0xba831a0c,0xbab38fdf,0xba115829,0xba4dfd05,0xba59effd,0xba48d53a,0xba36bad9,0xba924c5e,0xbaaf09e2,0xbabcb855,0xba80a41a,0xba250138,0xb899dac8,0x38c5b621,0xb8cd163b,0xb9f02c4b,0xbaa88584,0xbadf6ef0,0xbaea3cbe,0xbae09c33,0xbace7049,0xbaa6d0f9,0xbad8efcf, -0xbaf542be,0xbb241f34,0xba9b7b35,0xba7db4a1,0xba16fd82,0xba757398,0xba4cbb87,0xb8ac32a8,0xba3488f8,0xba2d463d,0xb9b5a962,0xb9ca6dc3,0xb9e69c79,0xbaaadb56,0xba35d9ad,0x3a4124f9,0x38409a31,0xb9b4e6ed,0xbacaf3ef,0xbb24a113,0xbb8ea70f,0xbb8429a9,0xbb5534af,0xba98b0d9,0x39c3e528, -0x3a6a971f,0x3b19c2cf,0x3b0607dd,0x396fd07a,0xbb1b3f95,0xbb7f3a78,0xbb81f8a3,0xbb75c5b9,0xbb5aa8ca,0xbb17cf24,0xbb563cb1,0xbb7e170a,0xbba56d8b,0xbb1bc587,0xba5b3050,0x3a73052b,0xba70b1d6,0xb8b01ca4,0x3b6aa4f7,0x3af2d5a5,0x3aba547b,0x3a889625,0x3a34e8d5,0x3a4b6207,0xba757260, -0x3a92b170,0x3ad613aa,0xb9768e50,0x3900e40f,0xba165e7e,0xba80191e,0xbb851284,0xbbb90853,0xbb9aea75,0xbae48451,0x3ab2a9f5,0x3b4fd4db,0x3bc88cb5,0x3bb0671a,0x3ac5ff1e,0xbb6760b2,0xbbd140ab,0xbbe73673,0xbbd519c3,0xbbc2c433,0xbb71a414,0xbba841bf,0xbbbf733a,0xbc0452d9,0xbb437ca1, -0xba55530c,0x3b2dd29b,0x3a87dc27,0x3adaebc1,0x3bebb477,0x3b55f1eb,0x3b5773a3,0x3b8adf2d,0x3b54ec52,0x3b088452,0xbabb1016,0x3b1937c8,0x3bac6356,0x3af9c8d2,0x3b0ff48a,0xbac79f4a,0xbb745c62,0xbc166dd5,0xbc18c83c,0xbc02b4b0,0xba656ed5,0x3b8e62d9,0x3b8e91a7,0x3c26be7d,0x3c1aaaff, -0x3b76ea2b,0xbb97d5d1,0xbc1ba6d6,0xbc1ca3e8,0xbc24b941,0xbc0713d7,0xbb8f063a,0xbbd6fce4,0xbbf4c451,0xbc319b37,0xbb4371c0,0xbb065f20,0x3c047de3,0x3b0378fb,0x3ba35117,0x3c821aa3,0x3c413515,0x3c2864d9,0x3bb68d45,0x3bc171c6,0x3b986494,0xbaa62751,0x3ba0addd,0x3b8dbdf1,0xb8d98474, -0x3b03302e,0x3b124f01,0x3b741ec3,0xbb997651,0xbc0f418a,0xbc0dee53,0xbb1a4033,0x3b7ea44b,0x3bfa31f9,0x3c70fb4c,0x3c7524bd,0x3bb28c76,0xbbbaddd8,0xbc40a6ea,0xbc54e631,0xbc4c1e2a,0xbc3f3892,0xbbc873ff,0xbbe8d75b,0xbc00cbcd,0xbc2a5e6c,0xbb88310a,0xbac39122,0x3c26685e,0x3be2e2ac, -0x3bfea046,0x3c915a26,0x3c833b2a,0x3c580584,0x3c2d0e70,0x3c2eae25,0x3bc55b8e,0xbba52e35,0x3b9baa0d,0x3bf5df04,0xbb31abc6,0xbc02651a,0xbc7f4b21,0xbcddffb0,0xbcc1bd92,0xbc401e18,0x3c748b14,0x3c2d5126,0x3c2d0938,0x3c7b7e22,0xbc8b067d,0xbcc9f688,0xbc7f36a8,0xbb7c3a09,0x3b2e93d8, -0x3b9e418a,0x3b9fbb06,0x3b38cb53,0xb93337e7,0xbb2c2136,0xbaedc252,0xba38d1c3,0x3bd4faed,0x3bb6a50b,0xbc0c2aee,0x3c4d4a1f,0x3c754932,0xba750f3d,0x3b082bf4,0xbbfa39a5,0xbc861c8b,0xbc980436,0xbb2c2fde,0x3ca918f4,0x3c922a0f,0xbca6787c,0xbc47546e,0xbc2977f7,0x3bc02739,0x3d3e8780, -0x3cbbabe6,0x3c9226d8,0x3c141a24,0xbbbee467,0xbbf2d6ac,0x3b0a490c,0x3c4bc1b8,0x3c4a62f9,0xbc024085,0xbbf1ee86,0xbc1da65b,0xbbd3efbc,0xbb9f56c0,0xbbb276d6,0xbbc8f0c9,0xbbb23b95,0xbb883d8c,0x3b428ccb,0x3ad2c3fa,0x3bb96ada,0x3bfca302,0x3ba7d0f2,0x3a5ed5bc,0xbbe0cbd4,0xbb2294ff, -0x3bac1634,0x3c928408,0x3c927774,0x3afaa5cd,0xbd09d5f4,0xbcd2b3ca,0xbb044555,0x3cffd982,0xbc470a0e,0xbca00e54,0xbc51a925,0xbcc42bc1,0xbc7e1aa1,0x3d145933,0x3b9a586a,0xbac06bc4,0x3b850beb,0x3bcf8f6d,0x3bc6d769,0x3b308fcb,0x3bb721a1,0x3b2f151d,0x3bd9a04d,0x3a3abd83,0x3a4ce706, -0x3a80e1b6,0x398c38ba,0x3a9f64bb,0x3b3f68ed,0x3bafd3f4,0x3b91fa27,0x3b4a2be5,0xb9311ea9,0xbb86ebec,0xbb287165,0x3b62641e,0x3b6a6dfb,0x3baf3b12,0x3b4ddb95,0xbc24d7f7,0xbc2a3470,0xbc69393b,0xbbfa7d5a,0x3c18ab48,0xbc42d5e0,0xbc883f52,0xbcddbe20,0xbcfddc38,0xbcaa4f1e,0x3d1eb1ab, -0x3c5132de,0x3c41a2ef,0x3c5be86f,0x3c1d3e96,0x3c22f67f,0x3c446d01,0x3c023d75,0x3ba7ae68,0x3b598c6b,0xbb0acde1,0xbb4bd22b,0xb96a4e0c,0xba8f3f24,0xba742b42,0xbb09cf41,0x3a9dc1c2,0x37af30d6,0xbabe029e,0xbb5a6270,0xbb3284f3,0x3ad804bc,0x3b50e229,0x3b7ec293,0xbb7ffb46,0xbbf07eb3, -0xbc30a379,0xbac54523,0xbc43272e,0x3890b4d7,0xbc84c778,0xbba89f3d,0xbb8f6059,0x3b314148,0x3b3dd9cb,0x3bd2a4fe,0x3b2f2cda,0x3bf86863,0x3c6e0d0e,0x3ca763c3,0x3cb3fd29,0x3c96a59f,0x3c4af4d2,0x3b9c1c75,0xbb707593,0xbbe862eb,0xbbf88f31,0xbc0bafe2,0xbc024007,0xbc136988,0xbc22c93b, -0xbc043d3e,0xbc04e486,0xbbc6f3b3,0xbb54af32,0xbb55b632,0xbb585222,0xbb67f295,0xbb7c956f,0x36c60632,0x3b3511f5,0x3ba8da0a,0x3be5b584,0x3b4ae328,0x3bb9e386,0x3ba2710d,0x3b21121a,0x3c88e570,0x3ce42de1,0x3ca077da,0x3ca8f298,0x3cae355c,0x3cda4903,0x3ca59f5c,0x3c84f233,0x3c326fd8, -0x3b0a91e4,0xba81b893,0xbb76fcc9,0xb841a270,0x3b47e87c,0x3bb81049,0x3b80c281,0x3b7402e1,0x3b81a617,0x3adb8b14,0xba4b67d8,0xbbdfa78a,0xbbeb7e46,0xbbd4dc5b,0xbbd2268f,0x3ab97fd3,0x3bbfb709,0x3bb3e99c,0x3b80b542,0x3aa4e0e3,0x3a8fed1f,0x3bb7bf86,0x3bc93292,0x3c0badef,0x3b37e35e, -0xbc50eac8,0xbc3dc7c1,0xbbad0f12,0xba429f4e,0x3b564be8,0x3ba473b9,0x3b92db9a,0x3b6149f8,0x3ba12b21,0x3bcbfda6,0x3bf5c9d3,0x3bae0acf,0x3ba667bc,0x3b90611a,0x3bae0afc,0x3bac4661,0x3b781ac3,0x3b9e95e7,0x3b3621dd,0x3ac95f34,0xbb605e21,0xbbf133c2,0xbc1aad0c,0xbbf5f1c2,0xbbe0a629, -0xbbfae291,0xbbc61712,0xbbe03956,0xbb95d553,0xbbc24e29,0xbb9a37f4,0xbb212bb4,0xbb7e0a7e,0xbbaf41d6,0xbc5b68a9,0xbc4c55c8,0xbc41e07e,0xbbcbc656,0xbb97f87c,0xbb6add01,0xbbba71b9,0xbb154b7b,0x3ac39c38,0x3bc1ec3e,0x3bf90fd9,0x3be631b9,0x3be2aa1c,0x3ba23d3f,0x3b984ef3,0x3b97e916, -0x3baa359d,0x3bc4a7f6,0x3bac43d6,0x3b900cd0,0x3b29f286,0x3a9c3546,0xba832f18,0xbb8257bb,0xbbf70e6e,0xbbd5fac5,0xbbd21263,0xbbdbca66,0xbc1157c4,0xbc1b0bdb,0xbc21d751,0xbc2fd753,0xbc4855db,0xbc6c949a,0xbc6c087a,0xbc8b6533,0xbc9e2637,0xbc818db6,0xbbc2a150,0xbb87743d,0xbb8c8f7a, -0xbb30d5ab,0xba2a545f,0x395315d9,0x3980ac8b,0x3a5c780c,0x3a961c1c,0x3b495cce,0x3baf2f90,0x3bb2d141,0x3bc4f66e,0x3bba41c3,0x3ba6d803,0x3b9f47c4,0x3b9585bd,0x3b5e201a,0x3b08c8d3,0x3afd8331,0x386d9734,0xbaf6d1a4,0xbb8050c9,0xbb8f0f44,0xbba80733,0xbba0ea42,0xbbd6fbc5,0xbbfd98d0, -0xbc320aa4,0xbc398ed6,0xbc663bc7,0xbc73ed5d,0xbc6e2526,0xbc529298,0xbc4e4d1d,0xbc081284,0xb9351a89,0x39d2d01c,0x397c142a,0xb93f9970,0xbaa8cb95,0xbaaf742d,0xba7eb4df,0xba3ea7e7,0xba034631,0xba8e0bad,0xbaf2b2f7,0xbade51ea,0xbabe5652,0xba231c4c,0x37cb2cd0,0x39f27b8a,0x3a8ce5d4, -0x3afd5da9,0x3b31f5d6,0x3b51a18d,0x3b0f823c,0x3ab23dc2,0x3a2d10e7,0xb96562ce,0xbabead9c,0xbb29c45b,0xbb39a6f6,0xbb136547,0xbac381f4,0xbb043639,0xba8712d3,0xbadf79f8,0xbac0b174,0x38a2042d,0xb812008f,0xba6013ad,0xba9027b0,0xba9aa36b,0xbaa3a34c,0xba8d0b14,0xba4af344,0xba4032ea, -0xba857804,0xbaac0a45,0xba92d54f,0xba2b0c87,0xb8e4b76e,0x393fddb2,0x398651c5,0x3928d4bf,0xb81630c7,0xb8baa502,0xb9434220,0xb9c5a740,0xb9fccb40,0xb9b69ed0,0xba01c987,0xba067721,0xba263046,0xba9f5bc3,0xba8d30ce,0xba80ded8,0xbaaa6d80,0xbadc1169,0xbb1a8923,0xbb3796bd,0xbb3657c8, -0xbb613fac,0xbb4db804,0xbb2fab4d,0xbae27e08,0xbab0da9d,0xbab76283,0xb9fe625d,0x3962a8c6,0x38b34896,0x39b9dcc2,0x396ea074,0x375095aa,0xba19bea2,0xba4857e3,0xba59038b,0xb9a2c5d4,0xb804a20b,0x3934216c,0x3a13b680,0x3a210dca,0x3a5945aa,0xb9851b17,0xba495ea8,0xba990ead,0xba9d019a, -0xba9a7c5b,0xba8b8a15,0xba9dec01,0xba9f3ae7,0xbae738ad,0xb9532487,0xb8fc9e1d,0xb9e7a64a,0xb9de27b7,0xb9c25a91,0xb901d3eb,0xb9b7a957,0xb9546386,0x39db9715,0x378bcfda,0xb7f5a631,0xb939e7f7,0x38f71ef5,0x3aa0a961,0x397f2295,0x3a53dbfa,0x38c9901c,0xba871239,0xbb710387,0xbb6e4605, -0xbb347425,0xb8522529,0x3aa96e03,0x3a433761,0x3b04abed,0x3b289ef1,0x3b526748,0x38b91421,0xbaed68e0,0xbb4741a0,0xbb53bc28,0xbb5359d2,0xbb28a786,0xbb3734c7,0xbb3b2f98,0xbb5b5a0b,0xba23d33c,0x39f8740a,0x39bf692b,0x391fc054,0x3a225bd5,0x3af44fff,0x3a0a524e,0xb807a4ef,0x3aef89b5, -0x3a32b129,0x3aa7fdbd,0x3a9e2d10,0x3add3d89,0x3b4b90f7,0x3ab53a50,0x3b69381d,0x3b21b439,0x3a72343c,0xbb5323af,0xbba1d496,0xbb71ea27,0xb92b225e,0x3b0cc5ca,0x3b1600a1,0x3bb189b4,0x3bcd67ec,0x3bd9f72b,0x39b9ffcb,0xbb4c334d,0xbbc19f83,0xbbc4c5de,0xbbd10d6f,0xbba59b1f,0xbbb28d62, -0xbba64480,0xbbc4c01f,0xb9e2340f,0x3ab9c646,0x3a69a95d,0x3af122b8,0x3a996d00,0x3b5f57b9,0x3a83501a,0x3aee11c5,0x3b9fea79,0x3b20c84d,0x3b032865,0x3afd653d,0x3b59ee26,0x3ba50bff,0x3a8c52fa,0x3b92467e,0x3b138bdf,0xba3e169e,0xbc01ecb0,0xbc14f5be,0xbc03916e,0x3adce484,0x3bb562c2, -0x3b23b8ff,0x3c029602,0x3c177213,0x3c4b91ed,0x3aa7f8fe,0xbb96d071,0xbc068c2f,0xbc20217a,0xbc1a4970,0xbbdbf3a6,0xbbe9e775,0xbbc377a8,0xbc11f6f8,0x3aa9f8dc,0x3ac4c205,0x3ba5e1aa,0x3b60e376,0x3ba750eb,0x3c406898,0x3bdc3314,0x3bce8011,0x3be2e261,0x3b933cab,0x3ba462d4,0x3b674841, -0x3bb285a0,0x3be854bb,0x3b804753,0x3c0d5fc4,0x3c088278,0x3bdfaf1c,0xbb773857,0xbbcfbba2,0xbbd8221a,0x39051a20,0x3b9039cc,0x3b9db160,0x3c4422a0,0x3c85c2fd,0x3c821df6,0x3b0044ca,0xbbc4f796,0xbc3afb5d,0xbc4a92ff,0xbc5e1c34,0xbc217f85,0xbc18da36,0xbc073c6f,0xbc1f7f67,0xba12ff52, -0x3af833aa,0x3bfdb04c,0x3bd0ef3a,0x3bd9f626,0x3c80305d,0x3c6cb75b,0x3c3af8d9,0x3c55b55f,0x3c04dda9,0x3b89d04b,0x3ae094a8,0x3bd9a94c,0xbbdbfb60,0xbc5e8602,0xbc830cef,0xbcab31d1,0xbcdd687c,0xbcc936d6,0xbc7d386f,0x3c510b0b,0x3c29d8d7,0x3c4b7bb0,0x3cb6729c,0xbc1fb450,0xbcb50f89, -0xbc9aadb2,0xbbc966e7,0x3b046fb2,0x3bd37d5a,0x3c12972d,0x3bf5194f,0x3aba3efd,0x3a08c242,0x3ab33641,0x3bc52bc6,0x3b8c6aaf,0x3b88368f,0xbc034fb5,0x3c8aed7c,0x3c8ec9dd,0xbb39e93d,0xbb40e85b,0xbc513219,0xbc8d36bb,0xbbf1149f,0x3bd3cf0a,0x3c79d82a,0x3b9f27d3,0xbbdd4c1c,0x3b91a42f, -0x3c1ee8d9,0x3c5cc5b0,0x3cf4caa1,0x3cd4c94b,0x3cca4e7f,0x3c36562c,0xbb4d6801,0xbbd03284,0xba2796a0,0x3c837a87,0x3ca084d7,0xbb189259,0xbbab41c1,0xbc20c930,0xbbd7e2dd,0xbbad4391,0xbbc5121f,0xbc1a79f6,0xbbe9e9e6,0xbbb1e902,0x3a49c868,0x3a4a8f03,0x3b91d952,0x3ba91567,0x3aaa1efe, -0xbb649bcd,0xbc1c5b63,0x3b06af58,0x3c0e8db4,0x3c4650e8,0x3b6a752e,0xbc3bd252,0xbcf1c44d,0xbc9d6e00,0xbb97b537,0x3b00509e,0xbcd3cacb,0xbca0fd96,0xbc3c5c33,0xbc968484,0xbc8524cb,0x3c1e925b,0x3c0d87e4,0x3c129038,0x3b648f13,0x3c15d761,0x3bb8fb1e,0xba6560ac,0x3b441505,0x3b103c2c, -0x3c0092e2,0x3b681cd1,0x3b4e8c2a,0xbad6eeb3,0xb85d15da,0x393cb7d9,0x3b46383a,0x3b156a72,0x3a1f2c45,0x3b04f3f8,0xbb11bda4,0xbba5fca1,0xbac190c0,0x3ab00816,0xb91197a1,0xbb357307,0x3b4d0bb2,0xbbcee4e0,0xbc2ad258,0xbc4cce63,0xbc2f3ffb,0xbc0a3e7e,0xbcabf67d,0xbc9f7164,0xbc3fe54a, -0xbce1ade4,0xbcbbff14,0x3c530684,0x3c4d704b,0x3c8fa294,0x3c7d94de,0x3c0aea3a,0x3bb947ce,0x3c113d85,0x3c0145c5,0x3bde0821,0x3b790bf8,0x3aaff4c2,0xba8e98cb,0xbae7cf69,0xbacb6d82,0xbaf974ca,0xbaa3fad8,0xb9fc3f8b,0xba79d943,0xbb024e2b,0xbb014aad,0xbadf4961,0x3b008273,0xba7e2638, -0xbb35c93d,0xbc329b1f,0xbb6f4fd2,0xbb29cf1f,0x3a501cee,0xbc17a040,0x3bd4d785,0x3b587426,0x3c17db74,0x3b9b68d6,0x3c02205d,0x3c30380f,0x3c5a5bbd,0x3bb0ccd0,0x3ab989cf,0x3b9ee44c,0x3c923945,0x3c9894ee,0x3c8af91c,0x3c50fe61,0x3b875244,0xbb2cd393,0xbc107b7d,0xbc0a4add,0xbc1d5af9, -0xbc018760,0xbc229396,0xbc2c1c89,0xbc0feb01,0xbbad4c02,0xbb37af2f,0xbb30fdac,0xb99c8788,0xba52bfa7,0xbb907e78,0xbaeb25ce,0x3ab03cd0,0x3ba8d1e4,0x3b2f3ab7,0x3b9e2dbf,0x3c2a524b,0x3c137a40,0xbbe1246d,0xbc841358,0xbc1fda2e,0x3a9e6244,0x3b2e01ec,0x3c6a020f,0x3c9ca4c8,0x3cb97f47, -0x3cb605ed,0x3cb910ca,0x3ca5296e,0x3c5c2118,0x3bc39012,0x3b4b7752,0x3b855c92,0x3b89fe32,0x3b95a38d,0x3b79dd9e,0x3b3493b9,0x3b032aaa,0xba86b005,0xbb8e79f2,0xbc0e955c,0xbc1b435c,0xbbd21a31,0xbb5f38ad,0x3b66a378,0x3bcee68f,0x3b89ff71,0x3bab02d1,0x3b4bf83e,0x3ad6c94a,0x3bd4247f, -0x3bbc85a0,0x3abb6e60,0xbb532b26,0xbb25c8fb,0xbaaf454e,0x3bf93dc1,0x3c25f994,0x3c5f36fd,0x3c278a84,0x3c065da5,0x3ba7b511,0x3b884943,0x3b82226b,0x3ba503ae,0x3b50cba9,0x3b7f9e3e,0x3b8e8534,0x3ba00a62,0x3b93f9bb,0x3a86223e,0x3b1b172f,0xb9ee715f,0xbb4d5c26,0xbbf3f520,0xbc19a047, -0xbbe48ed2,0xbbd70d91,0xbbc867e4,0xbbe74dfe,0xbba6577c,0xbb796e97,0x399eda77,0x3ae6926f,0x3b93e196,0x3bd3bb1b,0x3be51d38,0x3bddc4cd,0x3b22b185,0x3a20cd7e,0xbc19767c,0xbbf974d2,0xbb9046f0,0xbae2e230,0xbabebd7e,0x3897136e,0x3ae1cfff,0x3b9559b4,0x3b98fa35,0x3b71dbdf,0x3b344d41, -0x3aac5307,0x3a96beca,0x3af33062,0x3b305077,0x3b7817b4,0x3b68e64e,0x3ae53c91,0xba6d1a39,0xbb6d68fa,0xbb7a27dd,0xbbabd3e2,0xbbd4ad84,0xbbc93f9e,0xbbc6171a,0xbbe4ac2c,0xbbebe516,0xbbdb1b7d,0xbbb92d2c,0xbbc1ec86,0xbbeab5c6,0xbc19aca0,0xbc0d1edb,0xbc33d2bf,0xbc682f00,0xbc4158e6, -0xbc0acbe4,0xbbc3f529,0xbbad8506,0xbb7f6ef5,0xbb15750e,0xbaadcd6a,0xba81ed64,0xba0aa21a,0x3a2900f1,0x3b2c1e3f,0x3b931f75,0x3b954a3c,0x3b9ab36c,0x3b87e945,0x3b6741d1,0x3b53e087,0x3b65a83f,0x3abef40a,0xba02adc1,0xba9d2d28,0xbae1e0e9,0xbb28543f,0xbb6ed78e,0xbb872156,0xbba4971e, -0xbbb73f71,0xbbd1eabe,0xbc00a4d2,0xbc19072b,0xbc2fbbb5,0xbc528bb8,0xbc5c84bc,0xbc6dbc75,0xbc7a9e12,0xbc7a4685,0xbc3193d5,0xb9fb7621,0xbab321a8,0xba9b3edf,0xb8a36b26,0x3a01a40c,0x3a83ad26,0x3b1ac13c,0x3b58c6da,0x3b3d35f1,0x3ac1b30a,0x3a1b803e,0x39e4204a,0x3a0f6e62,0x3a8d9f57, -0x3a93c675,0x3a34f83e,0x39f59c59,0x3a7e0653,0x3aa83332,0x3aa604f9,0x3aab630f,0xb8a1a97b,0xba5c40f8,0xbb079f03,0xbb3b892f,0xbb7d1033,0xbb92058e,0xbb85c6f6,0xbb756486,0xbb93d6e9,0xbb7db1aa,0xbb98bd29,0xbb7c13df,0x39921462,0x393806c4,0xbad2b9d7,0xbb7e5aee,0xbb794830,0xbb6197f9, -0xbb587f4b,0xbb45308a,0xbb4328f0,0xbb437f16,0xbb3f1ecc,0xbb31c21b,0xbb074450,0xbace85dd,0xbab7d561,0xbabdf47f,0xbad29906,0xbaf1b6a1,0xbaec7892,0xbafa683d,0xbb0dc832,0xbb171757,0xbb246112,0xbb1981df,0xbb12448f,0xbb00dcfc,0xbb490fc0,0xbb3ec6f2,0xbb2b07d0,0xbb40e25f,0xbb5b405b, -0xbb86b06b,0xbb944d6f,0xbb92e7d7,0xbbae320b,0xbbba610b,0xbbb54ec3,0xbb9ba793,0xbb916033,0xbba2152c,0x391833e0,0x3a060eeb,0x3a1581fe,0x3a8e1165,0x3a6705ac,0x3a1aa539,0xb85517e8,0xb9368065,0xb9aba048,0x397890cd,0x39bfe718,0x38d07df0,0x3a482eaa,0x3a8d8093,0x3ae8dad9,0x3a2fc996, -0x39040f5d,0xba0a563d,0xba26e350,0xba3f661d,0xba4f6cd9,0xba4e4403,0xba218982,0xba60d6dd,0x3a03a00a,0x39e8b239,0xb992cb9d,0xb8f11aaf,0xb98b36dc,0xba1190ac,0xb9b0432a,0xb8d601dc,0x3a26d3a0,0x3670cc30,0x36823d61,0x39c7f0cd,0x39d86e3a,0x3a9a56ff,0x39086c74,0x3ab9dc43,0x3abf2985, -0x3a3bd4b6,0xbb06c52c,0xbb1d93ba,0xbb0e452e,0x3a900234,0x3b02b884,0x398e4969,0x3ad62a0c,0x3b36a9c1,0x3ba97124,0x3b14d8e3,0x39c4b323,0xbaf1d43c,0xbb18d7a5,0xbb337c53,0xbb27d73f,0xbb19132d,0xbae6e600,0xba717b11,0x3a79a919,0x3ac2da8d,0x39429248,0x3a785a3e,0x3a3a94c3,0xba5bd3b8, -0xbab8c12c,0xbaed51d0,0x3ad06d20,0xb80e4963,0x3a858bc5,0x3b2a0c38,0x3ae3ce65,0x3b494a50,0x3afdc328,0x3baaa15d,0x3b8d5a91,0x3b4298e4,0xba9475fc,0xbb2d20cd,0xbb2b1a9d,0x3abff553,0x3b2bcf45,0x3a4a2152,0x3b8b96f5,0x3bcee7ae,0x3c25f587,0x3b874b07,0x3a100eeb,0xbb7fcf0f,0xbb932820, -0xbbb92fd1,0xbbb0b485,0xbba6c84c,0xbb6a7280,0xbb10c33c,0x3aed30b3,0x3b485eb0,0x39677d5e,0x3b0ccb85,0x37a99c55,0xbad71236,0xbafa443f,0xba1bab2d,0x3b71f9ef,0x39ca4e03,0x3a1437ad,0x3b7b19da,0x3b319d03,0x3b6d6be1,0xb966a36c,0x3ba40822,0x3ba6d245,0x3b508170,0xbb751c06,0xbbc08f71, -0xbbf69d64,0x3b92d4de,0x3bd34f6c,0x39a0e228,0x3bc196b1,0x3c066808,0x3c8eb6c5,0x3bdd6e48,0x3a7d7767,0xbbbbcd22,0xbbffdaff,0xbc0f7f30,0xbbfd70e8,0xbbdd9182,0xbb77abaa,0xbb6af1ca,0x3ba637fd,0x3b9f946b,0x3b466d1c,0x3ba3789c,0x3b8d8a54,0x3b45b7ef,0x399a682a,0x3a405fad,0x3bb4c15a, -0x3acb9b81,0x3b6a2f2b,0x3bf09728,0x3b9f50a1,0x3bdaebde,0x3bbe17aa,0x3c3a31b0,0x3c38eca1,0x3c1b26fe,0x37d3efa3,0xbab2e2c6,0xbb8b0dec,0x3b2d6389,0x3b936e85,0x3ac0428a,0x3c0c34eb,0x3c7aaa3f,0x3cb8fcdc,0x3c1bef64,0x3a3e6868,0xbc013d29,0xbc2196ae,0xbc4e1afb,0xbc38de3c,0xbc20624c, -0xbbce161e,0xbba58314,0x3b5bebe7,0x3bae340d,0x3bc3c7b4,0x3be58f8a,0x3bc3c46c,0x3c081531,0x3c21cbbd,0x3bf01b0a,0x3c40791c,0x3b733c03,0x3a3429fb,0x3bdd24db,0x3baac4de,0xbc63fd70,0xbc9f214d,0xbca508d6,0xbcbab26a,0xbcb52298,0xbcabfca4,0xbc6c5889,0x3c372cdf,0x3c302f43,0x3c753dd3, -0x3ccc1434,0xbaf63627,0xbc91ecc8,0xbcafc5f0,0xbc3f729f,0xbab605b6,0x3c05770b,0x3c5a4704,0x3c74c266,0x3c1eb904,0x3c0245fc,0x3be3e1bf,0x3c357cf9,0x3acc32c7,0x3ad65a3c,0xbba4e9be,0x3c7689e5,0x3c7d9711,0xba95343b,0xbba07baf,0xbc61515b,0xbc89265a,0x39d47f0e,0x3c26f74e,0x3c14cc80, -0xbb1e5a20,0x3b6e2cb7,0x3c8e4f4d,0x3ca8ddfb,0x3c559532,0x3c24406b,0x3cc49e16,0x3cda97e9,0x3c70f0c9,0xbabc0dbc,0xbbee9703,0xbb4a7694,0x3c547555,0x3ca6405d,0x3c1d08a3,0xba9fa1cf,0xbc024b44,0xbbc325ff,0xbb99edcd,0xbb712a44,0xbbf03830,0xbb7014c6,0xbb281a3e,0xbb19310c,0xba954395, -0x3ac8fe2a,0x3b7c88ac,0xbb0b7a24,0xbbd2d489,0xbc078015,0x3b93dd3c,0x3c047618,0x3ba43d37,0xbc127849,0xbcadd22e,0xbcc52dbc,0xbc5d5cd0,0xbb84d7a0,0xbd033d85,0xbcfc7387,0xbc7b0117,0xbc52dd07,0xbbce3b1f,0xbc004b65,0xbc8d38cf,0x3c72a475,0x3c9bbae5,0xbb400043,0x3c058973,0x3b9e5935, -0xb9214c49,0x3a32fe0a,0x3ac2df1c,0x3bb00553,0x3b874a26,0x3b7cee99,0xbb7f6f4d,0xb98f503b,0x39c16fc9,0x3b259d94,0xba0a314c,0xbb16f19c,0xb9aa1131,0xbb2c3a0c,0xbb562149,0xba29bfd2,0xb7816a65,0xbae54760,0xbbca38cb,0x3b301bad,0xbad12b7e,0xbc7ce706,0xbb5689c6,0xbc0c61b8,0xbcd1f2c8, -0xbcb9a203,0xbc88a6da,0xbb68e27b,0xbc91917f,0xbc9712a2,0xbc85dc46,0x3c5cfdb1,0x3cb078cf,0x3bec7874,0x3bc5ec46,0x3b3c4c4e,0x3bc156dc,0x3bcea026,0x3bcb6243,0x3b37bc71,0x3b1fd760,0xba46c59c,0xbbac7a3f,0xbb7777a8,0xbb4eadaf,0xb8abdbea,0xbaca60bf,0xbaa3a08d,0xbb5a2858,0xb9440a9d, -0x399639e1,0x3a4e0782,0xbb3c4663,0xbbca65c2,0xbc3e54d9,0x3a617345,0x3bb1e690,0xbb0ddd61,0xb92a2133,0x3c80d60b,0x3cee066a,0x3cc52478,0x3c4e2460,0x3c0dd7a3,0x3c0dd00d,0x3c17f835,0x3ba9d741,0xbbbdf5b8,0xbbd6988c,0x3c0f1c6d,0x3c51c9e7,0x3c6bc05c,0x3c6256e4,0x3baad268,0x3a8061cb, -0xbbe13d57,0xbbe60fd3,0xbc0d897e,0xbc0baf59,0xbc1b82c1,0xbc1ededb,0xbc0af425,0xbb616ef9,0xba58855d,0xba0c31eb,0xb8c6a995,0xb9f8e777,0xbb668ec0,0x3a6ee59b,0x3b2d9e00,0x3bd2fd8f,0x3a85ee11,0x3adf17d1,0x3c618f7d,0x3c3612bd,0xbc72139a,0xbcd6a469,0xbce7aa8a,0xbc9edf42,0xbc204c36, -0x3c02f190,0x3c76eefa,0x3c73bc31,0x3ca91fbb,0x3cc98ed6,0x3cb6302d,0x3c9c46ba,0x3c354b9d,0x3c335c95,0x3bf86af7,0x3b99f51f,0x3b41dfa8,0x3b0f02c6,0xba349c0a,0xbb6b603b,0xbbc3a2b3,0xbc0a9211,0xbc1b5255,0xbc248ef1,0xbbbd7f58,0x399b3ec0,0x3b26c594,0x3b6aad2f,0x3b243df4,0x3bbd39f2, -0x3b88f76b,0x3b35a827,0x3b85ae99,0x3b774f16,0xba9e5a4a,0xbbabdf98,0x3c0c0614,0x3c3ed95f,0x3c8d834d,0x3c81960b,0x3c85ea88,0x3c3584cc,0x3c1c6b0b,0x3bd92d59,0x3b8da1d0,0x3b075a7c,0x3b15f3f1,0x3ae23806,0x3b00f78d,0x3b128516,0x3b473922,0x3b32ed11,0xba0225ae,0xb9701ccb,0xbb2eca03, -0xbbc29a88,0xbbf119df,0xbc0336bc,0xbba7c2fd,0xbbd16437,0xbbd80381,0xbbd33cd2,0xbb51b4ea,0x37811bd1,0x3b920d1a,0x3bfd4763,0x3c2e7d21,0x3c4bf80d,0x3c5c30e8,0x3c658cae,0x3c58652a,0x3c348721,0xbba29fc1,0xbbce38b5,0xbb2dbb2f,0x3adc7f9b,0x3bb18077,0x3b98694f,0x3b5a1f8d,0x3b201f15, -0x3a8ef74d,0x39153260,0xbaf66fb3,0xbb1d86ae,0xbb05e369,0xba8c119a,0xb93f49ed,0x3a2c6447,0x3a07e7b9,0xbabff8e4,0xbb7ef037,0xbbd7a6de,0xbbd0dab3,0xbbdc9e0c,0xbbea9bbf,0xbbec8edf,0xbbeced09,0xbc029b00,0xbbd03864,0xbb986982,0xbb431cc2,0xbb114561,0xbb29a042,0xbb76499b,0xbb4947e6, -0xbb94ca90,0xbbeb205d,0xbbca51a2,0xbc2010c1,0xbbef784e,0xbba3ec37,0xbb7bf576,0xbb09b2b9,0xbadc4957,0xba61706f,0xb965b757,0x3729925d,0x39ae26a4,0x3a0cf4a6,0x3ac0a68e,0x3acf1b13,0x3adb47ac,0x3a116d76,0xb8aeb19e,0x37bbabe1,0xbb035351,0xbb80fcd5,0xbb9dd0ae,0xbba91f83,0xbbb14e01, -0xbbcd8b2e,0xbbcaaa78,0xbbde8c5b,0xbbfe421f,0xbc00a890,0xbc13c38a,0xbc1c6e3a,0xbc28d3b6,0xbc3eca7c,0xbc378fbd,0xbc4f1b20,0xbc7176c4,0xbc754eaa,0xbc3cccd7,0xbb6bee61,0xbbaa9a54,0xbb9d2726,0xbb3be398,0xba850dd7,0xb914e03b,0x3ad78de8,0x3b3ff627,0x3b3a4506,0x3b087afb,0x3ae2b068, -0x3a9b3dd7,0x3a72bf76,0x3a84aac9,0x39e4e11e,0xba0bf465,0xbac2d1e9,0xbacf7014,0xbae4dce4,0xbb20a3cf,0xbafd8d87,0xbb5599e3,0xbb74df55,0xbba50fd5,0xbbb1a064,0xbbbb1dc5,0xbbdbceed,0xbbd25edd,0xbbd6de62,0xbc003159,0xbbf45d2a,0xbc126cc2,0xbc03f8e3,0xbb4e23b4,0xbb4b0626,0xbba3efb3, -0xbbc11ec3,0xbbb94733,0xbba4bfec,0xbb9dbd36,0xbb94d8f9,0xbb925bef,0xbb86aa14,0xbb7311c2,0xbb790e05,0xbb66527c,0xbb5774e5,0xbb4dd10f,0xbb49155c,0xbb4b5bf2,0xbb5e45f8,0xbb5fc496,0xbb6a1d19,0xbb7d2041,0xbb856c1c,0xbb92e238,0xbb8c512f,0xbb8d63d0,0xbb85b58c,0xbba10cda,0xbba05850, -0xbb9c830b,0xbbaadefe,0xbbb31ac0,0xbbca0232,0xbbd35881,0xbbcc7851,0xbbe1e690,0xbbec555d,0xbbea490e,0xbbe22553,0xbbd7adec,0xbbf9ac09,0x3a90b25f,0x3a5ba6db,0x3a887035,0x3acf1e73,0x3ac09d18,0x3abe291c,0x3a5c175d,0x3a3f174a,0x39c326b0,0x3a8afab9,0x3a8c92c3,0x39c76f36,0x3a9c7e11, -0x3ad974f6,0x3b21b051,0x3ad9bf7f,0x3aa0e57d,0x3a1358d9,0x399cb128,0x38976482,0xb8deb163,0xb87935b8,0x393ef262,0x39a1eaec,0x3a9c1ab6,0x3a81fb1e,0x3906256e,0x3985dbd4,0xb88310aa,0xba28351d,0xb9989128,0xb86d5a4a,0x3a5cc4a2,0x38c52516,0x398c22da,0x3a8fd040,0x3a403b10,0x3a2140a8, -0x3990e2be,0x3b0acbf0,0x3b3bb4b3,0x3b3cb424,0x390bab64,0xb9edff11,0xba93d4fe,0x3b2b712c,0x3b56f849,0x3a4fb04e,0x3b1d364c,0x3b6ad054,0x3bc80fcf,0x3b8bff3f,0x3b3860a6,0x3995f295,0xba39b98f,0xbac98114,0xbaf2754f,0xbaced984,0xb9e8cf4f,0x3ae15d66,0x3b1382a7,0x3b0f6dc9,0x39d264f6, -0x3aa79572,0x39dd7793,0xbb2cc887,0xbb46a1a1,0xbb48cad5,0x3aaba766,0xba3ffd19,0x3a0f46fa,0x3b75aab3,0x3aaa8712,0x3afd6a7a,0x3afc1405,0x3badc2ce,0x3bad5d27,0x3bb7151b,0x3afb93d7,0x3a1a3978,0xbaa19635,0x3b7291b2,0x3b83d854,0x3a0dabf4,0x3b8787a8,0x3bd91db4,0x3c37bddc,0x3bf35fb2, -0x3b90e161,0xb923eb67,0xbaed1fca,0xbb6d6f35,0xbb911c70,0xbb8019d7,0xbaceee79,0x3b05d5b5,0x3b5e7d21,0x3b748a9b,0x394c7dd5,0x3ac914fe,0xbac5d3c4,0xbba42c2f,0xbb9f3237,0xbb5e4ecb,0x3b1303c0,0xbaf1236b,0xba8217dc,0x3bb80ea6,0x3ab82660,0x3a18ceb6,0xba9c1b57,0x3babb9d5,0x3bf317ed, -0x3bfc488c,0x3aaac202,0xbabbdc1a,0xbbc084b1,0x3bf195a1,0x3c0c2976,0x3a076981,0x3bd0933c,0x3c09146b,0x3c92aef8,0x3c3b96eb,0x3bdf0c53,0xba841dfa,0xbb87ce63,0xbbcb2a18,0xbbf1e236,0xbbb7ffbc,0xbabda608,0x3b4cc0cd,0x3be7faa0,0x3bdb2964,0x3adb6ee4,0x3ba3b537,0x3afdfb30,0xbbb0d855, -0xbbc5fd4d,0xbba5ccb2,0x3b4e643e,0xbb10e579,0x3a616ca2,0x3c21af60,0x3b2d5679,0x3b7a4586,0x3bb498f5,0x3c2b9426,0x3c3e9333,0x3c50b395,0x3bb56fa4,0x3b945d4f,0xbacdd91d,0x3bcb7192,0x3bca7efd,0x39d424b2,0x3bda395d,0x3c5fcf1e,0x3cc0dcb7,0x3c815261,0x3c014eb4,0xba9795bc,0xbba54bcb, -0xbc11a5d2,0xbc2acbb2,0xbc0b5942,0xbb403209,0x3b2fe793,0x3bd37110,0x3be6b4bb,0x3b9e7594,0x3bdec9a7,0x3b91e707,0xba9cdb42,0x3b26d621,0x3a727eec,0x3bf5f8d4,0xbae84988,0xbb59ca08,0x3c34bb32,0x3b061d23,0xbc97f9a6,0xbca1eb02,0xbca185af,0xbca1875d,0xbc6c2029,0xbc8148ae,0xbc4b61b0, -0x3beb3506,0x3c295cbc,0x3c974177,0x3ce14155,0x3c096874,0xbc17fe23,0xbca7bc61,0xbc88fd6a,0xbbd47455,0x3bf43fe5,0x3c722124,0x3ca31e7b,0x3c9fecf9,0x3c840177,0x3c2ed4da,0x3c29e299,0xbafc5489,0xbaa5e6f5,0x3a10bb79,0x3c0914b2,0x3c1591ed,0x3962f68e,0xbb596335,0xbc14624a,0xbc310221, -0x3b95f250,0x3c19e160,0x3b64cd41,0xbc0cebc0,0x3c7c3bcc,0x3ccccfd8,0x3c876b26,0x3b85573d,0xbba6eb83,0x3caefc6b,0x3ce98ea9,0x3c871ed0,0x3b16b15c,0xbbf58822,0xbc2d8189,0x3b8c8fdc,0x3c7117fb,0x3ca83b61,0x3b860ae9,0xbb85441e,0xbb232e9f,0xbb58c805,0xba66218f,0xba8dd6ba,0x3ad4ea3a, -0x3ade2655,0xbb7d6683,0xbb170121,0xbad5a950,0x3b34245c,0xbb8529ea,0xbbddcdb7,0xbbb1c99c,0x3b50e8b7,0x3b906cbe,0xbab2382c,0xbc796651,0xbcbde585,0xbc961df9,0xba8145da,0xbc242860,0xbd4d3e9c,0xbcbb62c3,0xbbe2b80e,0xbc5b398d,0xbad6f543,0xbb321dee,0xbcba4422,0x3c6cff31,0x3c9a259c, -0xbbed3fdc,0x3b49949d,0x3ab586b3,0x3b271fc2,0xbacb8c56,0x399266ab,0x3b2f5119,0x3b41cb4a,0x3b73539b,0xba567a7c,0x3af1891f,0x3b0c15f9,0x3ae0f9b8,0xbaf84408,0xbb64db4d,0xbb26ce3e,0xbb097e70,0xba210c72,0x38d8e505,0xbaa31b6e,0xbb0c5e28,0xbb7683ce,0x3a34142a,0xba9195be,0xbc979515, -0xbb4096ac,0xbc4b247d,0xbd0a3d00,0xbc6bc45c,0xbc02f5be,0xbae9dbe5,0xbc6aa6c3,0xbc904d0b,0xbcd56b99,0x3c1bda9f,0x3c97f530,0xb9e8d4f1,0x3b44f38e,0x3a482385,0x3af09d61,0x3b84e3e0,0x3b8bed35,0x3b163b64,0x3ae513ac,0xba58ca89,0xbba711aa,0xbb753706,0xbb222433,0x3aa47a32,0xbadcb769, -0xba975a9f,0xbb83dae7,0x3a884239,0x3abffb61,0xb9047a3e,0xbb4a8fa2,0xbbcb5c4b,0xbbe96270,0x3ba590f2,0x3c0b76a5,0xbbdb3725,0xba66a6c2,0x3cf12bfc,0x3d44c842,0x3cecdecf,0x3c4cce4f,0x3b25d5ea,0x3ad970cb,0x3b25a621,0x3b86cb55,0xbbf6e1bb,0xbc3719ec,0xbb58d7e3,0x3bc7c521,0x3c3bd67b, -0x3c5e28da,0x3be3aa8c,0x3b656e33,0xbaea9859,0xbb8f4fc2,0xbbd10a0e,0xbc0034c8,0xbc015c17,0xbbf07249,0xbbba8f0f,0xbae05ae7,0xb87ae5b1,0x3affd794,0xba91da6c,0xbaa6dffd,0xbae4b21a,0x3b33285b,0x3b720173,0x3bb9d42a,0x3b146455,0x3a6218c1,0x3c269a8d,0x3c8f5c68,0xbca8060f,0xbccc5be5, -0xbcee8df3,0xbcb856d2,0xbc2d7491,0x3aa5297e,0x3bd3c447,0x3becb4f4,0x3c81f644,0x3cb73b4a,0x3ca325bd,0x3c9dd64f,0x3c469033,0x3c6bd28f,0x3c0cd812,0x3b8dee04,0x3a9167e6,0xba9ef55c,0xbbaac6d6,0xbc0fcec6,0xbc1e5954,0xbc2bebf4,0xbc32601f,0xbc107f9a,0xbba2e8fe,0x3a8167f4,0x392b7be2, -0x39bec593,0x3a239715,0x3b6aff35,0x3b40124d,0x3b6e898b,0x3871ae5e,0x3a65528e,0xbae1b0eb,0xbbe6497f,0x3c7a19eb,0x3c913de4,0x3c92e725,0x3c635f92,0x3c50b844,0x3c28a564,0x3c392fec,0x3c288be3,0x3be7101d,0x3b42d34c,0x3b094d52,0x3b0dec04,0x3abc1a92,0x3a55a1aa,0x3a92894a,0x3a386ecd, -0xbaf1d06a,0xbb0fcdcf,0xbb55027b,0xbbb23547,0xbbab8002,0xbbad616e,0xbb90893c,0xbbbe727a,0xbbc819dd,0xbb9b87fe,0x38a7074f,0x3b7806da,0x3beb1a71,0x3c2af07b,0x3c3f3050,0x3c4b17a0,0x3c55093a,0x3c613d28,0x3c731d82,0x3c7fde5c,0xbaecd784,0xbb854a11,0xba70bc51,0x3b70b6ad,0x3c05c68d, -0x3bc7e8d3,0x3b715e83,0x3ae7f7f1,0x39e69493,0x39930134,0xba55e104,0xbafabe68,0xbb080a7f,0xbb12b71a,0xbaf070dd,0xbabf8e85,0xbb11f9de,0xbb5518c0,0xbb95c29f,0xbbc10b65,0xbbd3240e,0xbbe01b4a,0xbbf7da33,0xbc016e20,0xbbfff437,0xbbfa4805,0xbba9cf65,0xbb16d254,0xb9ac5f7c,0x3a8469d2, -0x3abb787f,0x3abcebf7,0x3a69066c,0x38b081fe,0xbb0bd2ab,0xbb07f9b6,0xbc0c09af,0xbbdd8c50,0xbb978207,0xbb9254ef,0xbb56f02d,0xbb2e1cef,0xbaab2bf5,0xba27b52e,0xbabe1dc5,0xbb0d890a,0xbb39d19b,0xbab7ea11,0xba98e8e7,0xba104a18,0xbb07b6f9,0xbb4959c5,0xbb6e7612,0xbb9ad23c,0xbbc191f7, -0xbbd38015,0xbbe71f0d,0xbbef63e4,0xbc058685,0xbbfd795e,0xbc055d65,0xbc11aa71,0xbc0c82a1,0xbc0db30e,0xbc112b54,0xbc03e61e,0xbc0c5d3c,0xbbe137b8,0xbc072e92,0xbc37cec7,0xbc3d2d35,0xbc18c095,0xbc0a6279,0xbc19a9f5,0xbc0bb14a,0xbbd1505b,0xbb83b57b,0xbb7e05d5,0xbb23e48d,0xbabbfa50, -0xba794252,0xba495997,0xba2d132e,0xbaa729d3,0xbae887b2,0xbaf56cf5,0xbb1c9231,0xbb43afe6,0xbb7e78a8,0xbb8ae80c,0xbb9434ed,0xbbb24f92,0xbba288d8,0xbbc083a1,0xbbc64b09,0xbbe433b3,0xbbe48a20,0xbbdae14f,0xbc023a6d,0xbc03c3b3,0xbc0eca0d,0xbc2d739d,0xbc2c56c6,0xbc55a013,0xbc4774eb, -0xbc028648,0xbc036484,0xbc180b29,0xbbc017db,0xbbbbfc14,0xbbb10518,0xbbadfed1,0xbba7a725,0xbba2fdc2,0xbb90e390,0xbb856beb,0xbb8dbcb6,0xbb90661e,0xbb8e39e3,0xbb873dfc,0xbb7c48f6,0xbb75a30d,0xbb858300,0xbb8c7382,0xbb942b55,0xbb9c3faa,0xbba31294,0xbbb0d51c,0xbbabeabc,0xbbb06a5b, -0xbbae092c,0xbbb5197f,0xbbb7d0b7,0xbbba759b,0xbbcc2156,0xbbcc791d,0xbbdb76c2,0xbbdf0c5a,0xbbd2e112,0xbbd9c9e0,0xbbd6893a,0xbbd7cfb3,0xbbe30781,0xbbd5a104,0xbc01024b,0x3affcd56,0x3aa641bd,0x3ab93491,0x3aec3a52,0x3aeee415,0x3b090b63,0x3aca3039,0x3abad7e4,0x3a85c4bc,0x3ada9906, -0x3ad5b2f2,0x3a64e4c9,0x3acb3e55,0x3b04aaf9,0x3b3187a7,0x3b1b0e97,0x3b0cb9be,0x3adb4948,0x3a9acb77,0x3a5a7b85,0x3a1adeb6,0x3a3ac372,0x3a76479e,0x3ab31c72,0x3ad9711a,0x3ab7ee77,0x3a22f9e2,0x3a236343,0x39879fc8,0xb98b0f89,0xb8b3e9b7,0x38b9f027,0x3a9164b7,0x39bbbeb7,0x3a261add, -0x3aef06b8,0x3a9623ed,0x36ec3d3c,0x3a2a0864,0x3b3c397e,0x3b82824a,0x3b96498b,0x3b0a825d,0x3ab9845c,0x399fcb33,0x3b596773,0x3b7f8f00,0x3af8cb93,0x3b4e305e,0x3b84145d,0x3bc511f9,0x3bb3b6b3,0x3b9ab754,0x3b2f8e73,0x3a812eb3,0xb9439282,0xba5bbaee,0xba1f1866,0x3a327b08,0x3b5a8812, -0x3b3d68bc,0x3b1b75e1,0x3a1ed505,0x3a6729b2,0xb95eb6f3,0xbb43e33c,0xbb7c161e,0xbb6a9e69,0x3a946a0d,0xba86818a,0x394340b1,0x3b89c4d0,0x3a286ecf,0x3a924a49,0x3af72c29,0x3b9bb46b,0x3bb9b16a,0x3bf167c2,0x3b8b88b1,0x3b47575e,0x39d13d60,0x3b9d186c,0x3b9a59c9,0x3ac1e04c,0x3b82fa0f, -0x3bd14014,0x3c278357,0x3c1a194c,0x3bf5bbd4,0x3b89d898,0x3a7efa5e,0xbab37f29,0xbb32beea,0xbb083c1b,0x398f8287,0x3b948570,0x3b861aae,0x3b6ac10a,0x37d1d9ff,0x38f1f7d1,0xbb4a96df,0xbbbebba9,0xbbe082ed,0xbbb2c399,0x3a880141,0xbb4eb449,0xbaeec989,0x3bd03a8d,0x3a150068,0xbb23dd0e, -0xba9de542,0x3bc10f6a,0x3c16e5dd,0x3c354a00,0x3bb47f7c,0x3b2cb65a,0xbb1beb85,0x3bf854d3,0x3c102c3e,0x3b3fd42a,0x3bdcc297,0x3c05c782,0x3c7c6229,0x3c666f6e,0x3c38797a,0x3ba09b2d,0xb8cefa59,0xbb4cf6cb,0xbbb9d1a2,0xbb7c3d37,0x3986c2ff,0x3bedacc9,0x3be4f86f,0x3bd87b46,0x3a28863b, -0x3b307ff9,0xbae7b330,0xbc1db4f9,0xbc320d13,0xbc1adaff,0x3a973ab4,0xbba98afe,0xbae1c024,0x3c2309dc,0xb97199fd,0x3add5016,0x3b907a58,0x3c073c30,0x3c307ca5,0x3c6c8594,0x3c1aa184,0x3c07593c,0x3aa45775,0x3c006a7c,0x3bdedef7,0x3abcae3f,0x3ba1f938,0x3c33e8c5,0x3ca4047d,0x3c9e1eb3, -0x3c635f48,0x3be91355,0x3939fce6,0xbb929900,0xbbf7337d,0xbbae5fa9,0x39800cd3,0x3c0ca5ac,0x3c036a52,0x3be4e647,0x3b8f178d,0x3b933027,0x3a9e4c91,0xbc02d923,0xbbaacac5,0xbbb8d999,0x3b36da53,0xbbd28b49,0xbbcad52a,0x3c4d5931,0xba0b1f9b,0xbcabc484,0xbc804143,0xbc70a5ca,0xbc52a3eb, -0xbc0525bb,0xbc488886,0xbc462d66,0xba70da83,0x3bf7f783,0x3ca7482a,0x3ce53291,0x3cbce7e0,0x3be4191f,0xbc7bb87b,0xbc86e231,0xbc2d2b2e,0x3aadc0b4,0x3c232ac5,0x3c898a35,0x3ca3ecf6,0x3c8d6fa2,0x3c15d9fa,0x3b7b8890,0xbbe182ae,0xbb9165b8,0x3baaae8b,0x3ae8928d,0x3a9feeb2,0xba1411c0, -0xbae869e5,0xbb2b4f84,0xb9dd5116,0x3c0713f5,0x3c023727,0xba080491,0xbc5665a9,0x3cd7cea4,0x3cc71fb8,0x3b9ab3f3,0xbbcb1937,0xbc8252e0,0x3c722837,0x3cc38255,0x3c6d4426,0x3bc7d54f,0xbbd91ccb,0xbca30bcb,0xbba206be,0x3bd4075a,0x3cb17a0c,0x3c2044a5,0x3af96743,0x3b20b8d6,0xbacb4ad5, -0x392a2544,0x3badef89,0x3baf43bd,0x3b97e7f0,0xbb3032eb,0xbaa6179d,0xbb4ef089,0x3a30e816,0xbb94c15b,0xbb9f77e4,0xbb5d6afe,0x3a2ecede,0xb932a262,0xbbe9acf2,0xbc95fcbd,0xbca9c499,0xbc47ae71,0x3c6bda49,0xbcb78ace,0xbd49e352,0xbc078bb3,0x3b1bd053,0xbc71d0d0,0x3a2dd435,0x3ac83a30, -0xbc648bbf,0x3bad03d8,0x3c10f110,0xbb92b1c0,0xbb03a2b7,0xbb4f0969,0x3b1b001e,0xbb727481,0xba9446c4,0x379ba15b,0x3ab574cf,0x3b76d3a2,0x3b8cbeed,0x3ba45a6a,0x3b8644d5,0x39f80f6a,0xbb0c4a18,0xbb5d492d,0xbb8f4541,0xbaccc0ac,0x3a806448,0x399638eb,0xba9f84fc,0xbad1d268,0x3a4b7007, -0xbbc9371e,0xbbfeb2a9,0xbc368a56,0xbc873945,0xbcb807b4,0xbd0c95af,0xbb901b85,0x3b393b00,0xbab57c10,0xbc018b8f,0xbc5228d9,0xbcaec41c,0xbae2d885,0x3bf2b7fd,0x3adaf822,0x3a2a6129,0xbae6a249,0xbb247183,0x3a1f6b83,0x3a8393cc,0x3ad3dfbd,0x3ab537ec,0x3a1c5dd1,0xbaa8de3e,0xba621b75, -0xb9bd79db,0x3ad2cc61,0xbaef3384,0xbaa94fc4,0xbb7bc750,0x3a9fea0b,0x3a8ee221,0xb9d0c02f,0xbb41dd8c,0xbb96b5c5,0xb9d12ad2,0x3ba7a568,0x3ba072a2,0xbb3080ee,0xbc43a009,0x3d21f11c,0x3d378824,0x3c9a81d9,0x3bb57610,0xbb115377,0xbb92c3c2,0xbb7d8c6d,0x3b190a71,0xbba23eb9,0xbc1b2864, -0xbc22be15,0x3a4f7a6c,0x3c05fd17,0x3c2cff65,0x3bf3b76a,0x3b8d7bb0,0x3b6a237a,0xbae19ba0,0xbb83f380,0xbbb145c4,0xbba37929,0xbb63f6a1,0xba97cbb7,0x3a0f3baa,0x39e92d8d,0x3b1f20b6,0xbac6309e,0xbae50ba5,0xba4c9408,0x3af491d7,0x3b41ddf3,0x3b986aee,0x3bd0d0da,0x3b7f8887,0x3bd48e4b, -0x3cd69616,0xbcb9efcb,0xbc86c023,0xbc857640,0xbc559578,0xbbe540cc,0xbaec8684,0x39f9aebf,0x3acf1c05,0x3c192ff5,0x3c8f6a8c,0x3c8f4d6f,0x3c8eda69,0x3c301783,0x3c4ab213,0x3be676e8,0x3b39fc03,0xba89fc2d,0xbba81bc0,0xbc1392ca,0xbc35933f,0xbc3c71bd,0xbc378e29,0xbc42810b,0xbbd7f455, -0xbb6be9d4,0xba36478f,0xbad73c1c,0xbaf55373,0xbb093286,0xba046360,0x3a67bf7a,0x3b72ab0a,0xbb37104d,0xbaea1499,0xbb1e763b,0xbc1dbbe6,0x3c646cd0,0x3c6ee239,0x3c292fbf,0x3bfeda8b,0x3c079f98,0x3c240c31,0x3c5963c3,0x3c73a955,0x3c3e063c,0x3be06057,0x3b8fce34,0x3baafd0f,0x3b8e4b3f, -0x3b0cde1e,0x3ac6bf02,0x3948e54f,0xbb2a448c,0xbb3e258a,0xbb46d43c,0xbb64f4c7,0xbb7053d4,0xbb8124f6,0xbb99170d,0xbb99f573,0xbb8c32fa,0xbae2a964,0x3b5cbb31,0x3bc92032,0x3be51677,0x3c0ca897,0x3c002803,0x3bf39955,0x3c099ea3,0x3c126748,0x3c208e82,0x3c54b15f,0x3946fdab,0xba1be3eb, -0x3b0151a5,0x3b9e186f,0x3bf572f2,0x3bb403f4,0x3b9039b9,0x3b8951af,0x3b662c38,0x3b87960f,0x3b938602,0x3b1ac54b,0x3a8d3827,0xba30602f,0xbaac5e2b,0xbb0b67f4,0xbb8b977d,0xbb81dcd3,0xbb8f078f,0xbb948560,0xbbb34ad5,0xbbc9973a,0xbbee44d4,0xbbed7545,0xbbd3ef44,0xbbab3354,0xbb2d46e9, -0x3a33fb53,0x3b1f30e4,0x3b8047d4,0x3ba227b9,0x3bc096ed,0x3b8baa98,0x3b7bcbee,0x3b31845f,0x3a310792,0xbb86c249,0xbb82c59b,0xbb52df69,0xbb8c4179,0xbb8b7b54,0xbb69a972,0xbb2ddf51,0xbb295501,0xbb4ef45c,0xbb5df485,0xbb6af093,0xbb30dd5e,0xbb2a0a39,0xbaf27665,0xbb6b35b5,0xbb9c0d3a, -0xbbbf955f,0xbbc74540,0xbbdbf157,0xbbdc3bc0,0xbbecb38c,0xbbf1b5db,0xbc02c788,0xbbea7656,0xbbef5655,0xbbfbcf4a,0xbbe3bdd5,0xbbbdee98,0xbbb43082,0xbb5785a9,0xbb3f5582,0xb9917d07,0xba7cd520,0xbb79e955,0xbb788766,0xbb440f6a,0xbc481426,0xbc33bcb7,0xbc24bf59,0xbc0aff4d,0xbbd5f3bc, -0xbbf138ed,0xbbd6a81d,0xbbc85a56,0xbbb309d2,0xbba1cfb9,0xbb98e7a8,0xbb9ac145,0xbb9df642,0xbb98a61c,0xbb9a210c,0xbb998f75,0xbbab59c0,0xbbb3a71f,0xbbb839a5,0xbbd722ee,0xbbcca903,0xbbdf6b06,0xbbe07b10,0xbbf2fc50,0xbbedd60a,0xbbdb82df,0xbc02709f,0xbc0a6248,0xbc1a4995,0xbc3bfa90, -0xbc3aa930,0xbc718b6d,0xbc62f3ec,0xbc3ea876,0xbc474a7f,0xbc4592dd,0xbb95cdf3,0xbba14453,0xbbaab886,0xbbad1de6,0xbbab6a22,0xbba9cf47,0xbb9f4031,0xbba088f9,0xbba068ef,0xbba1be8c,0xbb9d1e64,0xbb9544f1,0xbb8a4032,0xbb837354,0xbb8ec54d,0xbb99a9ed,0xbba26bc1,0xbba862ca,0xbbad62c1, -0xbbb8070d,0xbbb13166,0xbbb2ae80,0xbbaef2e9,0xbbae4254,0xbbaea526,0xbbaeb24e,0xbbbd9845,0xbbb5e140,0xbbb9705c,0xbbb75058,0xbba94e50,0xbb9b68b5,0xbb8ddaa7,0xbb982d8b,0xbba749e2,0xbb9dd3ee,0xbbf3ceaa,0x3b1ce651,0x3ad7b90f,0x3ad75739,0x3af472d5,0x3b011b33,0x3b1eb9c7,0x3af9faed, -0x3ae6bd2f,0x3ab73b61,0x3af0da42,0x3aedd779,0x3ab3f496,0x3adf86c0,0x3b08a9d3,0x3b252fe2,0x3b2efc55,0x3b2f257f,0x3b1c5041,0x3ae14c72,0x3aaa8c5b,0x3a841876,0x3aa889be,0x3ac04bd5,0x3afaa323,0x3af0dcd8,0x3acf6d6a,0x3a6b35bf,0x3a5ebfcb,0x3a14455b,0x3994618c,0x3984a7d9,0x39ab41a3, -0x3aa0b0cb,0x3a2558ad,0x3a6535a6,0x3b06dffe,0x3ac2e79d,0x39048406,0x3a8c813e,0x3b51e7d7,0x3b9145b5,0x3bbc27d0,0x3b75940c,0x3b3c3c48,0x3ac8e912,0x3b40966a,0x3b687471,0x3b4b1381,0x3b6923b4,0x3b83a83d,0x3ba8213a,0x3bbeef0f,0x3bbb58dd,0x3b8d8554,0x3b0bd536,0x3a544d43,0x36b33c20, -0x3a08036f,0x3ad3b1f1,0x3b6686c0,0x3b3bfc5e,0x3b078fc2,0x39b29dbf,0x38c144c9,0xba64856b,0xbb26d949,0xbb80e2c5,0xbb757d38,0x3a186f14,0xba840ecc,0x38592115,0x3b6a96ae,0x39fb2adb,0x3ab0ddf5,0x3b0b3b3d,0x3b89dad8,0x3bbdd671,0x3c0a3365,0x3bbee55e,0x3b964cae,0x3ad4f536,0x3b8db471, -0x3b89d14c,0x3b4a12d6,0x3b813ac8,0x3bc38518,0x3c031042,0x3c245d36,0x3c17fe9f,0x3bf21079,0x3b41cf05,0x39dcaca1,0xba9e6c55,0x36d606b5,0x3aee4979,0x3b98a530,0x3b8353e3,0x3b3ff229,0xba82519b,0xbab6c531,0xbb87c398,0xbba45242,0xbbf4eb11,0xbbcf870d,0xba0feac6,0xbb64b99a,0xbb04076d, -0x3ba3a781,0x3a0d70a7,0xbb556cef,0xba068264,0x3bc4239b,0x3c1f7595,0x3c5e02f6,0x3c13b40e,0x3bc410cb,0x3aab39c0,0x3ba69759,0x3bdde273,0x3bcf3734,0x3be50ad9,0x3c0347b2,0x3c3a8efa,0x3c6e84b0,0x3c5d346e,0x3c19a3c4,0x3b3eb272,0xba2e8bb7,0xbb66acd3,0xbabd546c,0x3af50515,0x3bef2300, -0x3bb49cec,0x3baa48b2,0xba9b5ebc,0xba3b08d7,0xbbb4c5cb,0xbc200178,0xbc646af0,0xbc4728bd,0xba9aadfa,0xbbd997d6,0xbb4f36fc,0x3bed75c4,0xbac9a5af,0x3ae8e1eb,0x3b6781c8,0x3bd5431b,0x3c254aee,0x3c7604cf,0x3c431afe,0x3c222eae,0x3b4c8b84,0x3be0ea4b,0x3bbf06d6,0x3b82eadf,0x3b990f21, -0x3c1b2d04,0x3c701c10,0x3ca52660,0x3c911335,0x3c5d7b0a,0x3b8db8f6,0xb9e811bb,0xbb8244b2,0xba79a4b8,0x3b44ac09,0x3c227878,0x3c004e54,0x3bb7f940,0x3b4e2097,0x3a387a73,0xbb469206,0xbc1d19ca,0xbc382aa4,0xbc30fb55,0xba9fa054,0xbc16eb6a,0xbbec8002,0x3c1d74e9,0xba9de008,0xbc892ffc, -0xbc0cd5c4,0xbba0d67d,0xbb745349,0xbbbcad50,0xbc11f35a,0xbc316557,0xbc141911,0x3b286afc,0x3c89e4be,0x3cb913a5,0x3cf9eec1,0x3c90bed6,0xbc4f9a2c,0xbc6eba72,0xbc5adfd2,0xbc0a886b,0xb8bbd77e,0x3bb68e6f,0x3c1624d5,0x3c02c569,0x3a61bc79,0xbb9a1d74,0xbc3f879d,0xbbe53dd5,0x3bfd9ad6, -0xbb072d68,0xbb889e98,0xbb344615,0xbb1a7490,0x3b2015b9,0x3c2bdac1,0x3c46e5a4,0x3c0609b2,0xba908fec,0xbc3b6710,0x3cf99134,0x3c84a9e0,0xbb263c31,0xbc312f33,0xbcaec500,0x3b71b4a0,0x3c4e63cf,0x3c24f718,0x3c15364f,0xbb85987d,0xbccece3f,0xbc45126f,0xbadcd85e,0x3c5dc72e,0x3c6acc66, -0x3c1a6b5e,0x3bec9cb9,0x3ad41b6a,0x3ac5e926,0x3c14bed4,0x3bd68aba,0x3bbd5cc8,0xb8332543,0x3aa27942,0xbb1b90b6,0xbb03da5e,0xbb8fa198,0xbb2a2155,0xbb19206d,0xb96e5315,0xbb562de1,0xbc44497f,0xbca550ce,0xbc90bad2,0xbbcd674b,0x3cbead22,0xbd004022,0xbd25568f,0xbb94a11c,0x3af73e12, -0xbc306414,0x3b0c9362,0x3b3f453a,0xbbe6b319,0xbbc60b01,0xbacf3ef9,0x3b50634d,0xbb8ebdf5,0xbbd9b988,0xba923dca,0xbb95dfed,0xbac609d9,0xbb4eb13e,0xb85788cc,0x3b40bae5,0x3bd6537a,0x3bc06bec,0x3b832b28,0xbaa1e67e,0xbb0d6dbe,0xbb3ff651,0xbbaa92d6,0xbaaed886,0x3a8af98c,0x391aa42d, -0xb956a0f7,0xba9d0320,0x3a510e5e,0xbc6ed9d4,0xbc6cde42,0x3a76febd,0xbcdf4237,0xbcedc08c,0xbd0cd804,0xbb82c788,0x3bba9aa6,0x3bde8c1b,0x3ad6926f,0xbbb798a7,0xbc84934d,0xbc52c78f,0xbb479f8a,0x3c222cc7,0x3a9c5fc2,0xbb5e620f,0xbbb8660a,0xbb412134,0xbb2a0e2e,0xb9c801fe,0x3a564287, -0x3ac6d198,0x3ab7187d,0x3b018432,0x3a884d99,0x3a66edd5,0xbb0d7075,0xbb01e50d,0xbb58e502,0x39b78495,0xb78d3a11,0xb9aea278,0xbb047945,0xbb312a7b,0x3b7412ab,0x3ad024df,0xb976aac7,0x3c01efc2,0xbc9a90fe,0x3d192a99,0x3cacbea0,0x3b99d4ca,0xb92929c7,0x3b479341,0xbb9fa5f6,0xbbbb73ef, -0x3b23fc85,0x39d90517,0xbb5c041e,0xbc1e49a6,0xbadcb1e0,0x3bb314ba,0x3bcd5541,0x3bde165c,0x3bbc1729,0x3bf6cc04,0x3a6c1975,0xbabfac85,0xbb21363c,0xbae4c43d,0x3a09a92e,0x3b3c0e88,0x3b265687,0x3a62681c,0x39c9d04a,0xba8b2d94,0xbab6b9a9,0xb9f5ac59,0x39e657bd,0x3b08c579,0x3bca42be, -0x3c0ca453,0x3bd46d31,0x3c157dd6,0x3cfa1152,0xbc9b5e1f,0xbba323a8,0xbac1ab42,0xbaa7e832,0xbb472e60,0xbaf6b549,0xbab5f393,0xb8ab9e0e,0x3b836333,0x3c43bc32,0x3c822a4c,0x3c74a359,0x3c14c5b8,0x3c120f7d,0x3bb20e44,0x3aa5c9d5,0xbb7294d0,0xbbfdafa5,0xbc297750,0xbc2b04c0,0xbc3a57ba, -0xbc338f4b,0xbc302399,0xbb8d09e8,0xbb01aee0,0xbb046440,0xbb297daf,0xbb4664ba,0xbb80d70b,0xbb55caea,0xb9bb65e0,0x3b3ab246,0xbb22377c,0xbb10bd90,0xbb92f758,0xbc3441bf,0x3bdf7443,0x3b8d9426,0xb9e4f992,0x3a18f8c2,0x3b90a787,0x3c199c3e,0x3c61df72,0x3c8e5eee,0x3c80a945,0x3c487c64, -0x3c185b0c,0x3c2c72ee,0x3c1dc664,0x3bcbf96c,0x3b8b184f,0x3adec6ff,0xbac9912d,0xbb08b06d,0xbb34f3b7,0xbb5644a1,0xbb87ae8e,0xbb887726,0xbba6644f,0xbb4e5aca,0xbaf2fba5,0x3a7eb62a,0x3b9ac0be,0x3bbbcbb3,0x3b827a67,0x3b8c2aea,0x3b448152,0x3b067369,0x3b5a1af4,0x3b53ea0d,0x3b54899c, -0x3bde3705,0x3b3104ec,0x3b6ddac0,0x3ba7d990,0x3bc007e6,0x3be812e8,0x3bd9909f,0x3bf92ccd,0x3c11eb9a,0x3c0c3234,0x3c19bd6e,0x3c27642c,0x3beafb7e,0x3b944082,0x3adf157f,0x39ae2cf8,0xbae56618,0xbb8af61c,0xbb693e16,0xbb75c1af,0xbb7d46a2,0xbb9cef23,0xbbb3644c,0xbbcebeaa,0xbbb07ecf, -0xbb7833b7,0xbaf9f43a,0x39fffa15,0x3b70b0bc,0x3bb08f84,0x3bcf46ca,0x3beff305,0x3c0e59b2,0x3bd74468,0x3bd5f766,0x3bcf15b4,0x3b52c4f9,0x3b1c182c,0x3ae38d9c,0x3ada2b0f,0x394c8cc3,0xba259224,0xba987a68,0xbad4f4e5,0xbb10a9e8,0xbb108694,0xbb01e7d2,0xbaef69ea,0xbb131757,0xbb432be3, -0xbb45c017,0xbb8c1cc4,0xbba8c1de,0xbbc0e800,0xbbc0f006,0xbbc39a25,0xbbbefd2b,0xbbc70897,0xbbcc17c7,0xbbd7b7a2,0xbbb2db55,0xbbae945b,0xbbaf9da7,0xbb77c7d2,0xbabfc5c3,0xb9310e5e,0x3b0ddbb0,0x3b5cfb1e,0x3bbf2e82,0x3bc1b4e1,0x3b8cb1c5,0x3b90356d,0x3b911eaf,0xbc3cbafd,0xbc13cf54, -0xbc0cdb6c,0xbc06a9c0,0xbbee96b1,0xbbfc75f8,0xbbea8dbd,0xbbedddb5,0xbbe4849f,0xbbd9576e,0xbbd1731c,0xbbc1592f,0xbbafabe1,0xbba299f0,0xbb9d8a92,0xbb9c790c,0xbbadce3f,0xbbb38892,0xbbbad349,0xbbd8e948,0xbbdbfdde,0xbbe55475,0xbbea8308,0xbbfb69db,0xbbfad25f,0xbbf40777,0xbc048a88, -0xbc0a7bab,0xbc10e41a,0xbc2118aa,0xbc16bc69,0xbc3b5447,0xbc2f16a7,0xbc302344,0xbc3cf690,0xbc29e699,0xbb509560,0xbb6a99ed,0xbb8797ab,0xbb8a266f,0xbb901712,0xbb975134,0xbb9dab84,0xbba82ab4,0xbba0c4aa,0xbb9f1af8,0xbb9b4ff7,0xbb993c06,0xbb95f35e,0xbb9196b6,0xbb98a223,0xbb9ead33, -0xbba3a9bb,0xbba536e0,0xbba62344,0xbba972dc,0xbba71521,0xbbaa6984,0xbba7e39e,0xbba4de4e,0xbba6ac5a,0xbba503f1,0xbba7b28a,0xbb977272,0xbb908431,0xbb88db63,0xbb79a1e2,0xbb427dd3,0xbb23ddf2,0xbb3b6680,0xbb5a4826,0xbb4ec474,0xbbef17b7,0x3b05da77,0x3ac5c269,0x3ac07c34,0x3acb54a0, -0x3adb68c5,0x3b0dfff6,0x3ae4b83f,0x3accecfd,0x3a98b7c9,0x3abc3267,0x3ac3d621,0x3ac9a229,0x3abcda7d,0x3ad96d85,0x3af0932c,0x3b1a2d5d,0x3b2452a0,0x3b17d6dd,0x3adf3890,0x3aade6c2,0x3a882790,0x3aaf3e22,0x3abbf3a3,0x3ae870fe,0x3ac7ca11,0x3aac31d6,0x3a31d6fe,0x3a46be13,0x3a2f1b25, -0x3a0dd20c,0x39ed8af3,0x39c2d34b,0x3a4b5f79,0x3a182ed8,0x3a39839c,0x3ac5c373,0x3ab2119e,0x3a051226,0x3a99ac50,0x3b2a58a5,0x3b780050,0x3bbae367,0x3b93a467,0x3b5d5174,0x3ac31567,0x3ad1c1f4,0x3b17a302,0x3b749db1,0x3b641f1e,0x3b67ac42,0x3b75b487,0x3bab2396,0x3bb32fcd,0x3b9272c3, -0x3b21b9b7,0x3aa7321f,0x3a139870,0x3a9c1f0a,0x3af4ba35,0x3b1f23fd,0x3b0cbf96,0x3aa631aa,0xba2181c2,0xba5ae40a,0xbada8e04,0xbb38efbd,0xbb7cd649,0xbb77be9f,0xba6b3e89,0xba5c355a,0x38165660,0x3ae9244d,0x39d5b33b,0x3accb69c,0x3b1416a7,0x3b522587,0x3ba56c71,0x3c03cc3a,0x3bccf28e, -0x3ba6d22b,0x3aaacc02,0x3b3071e6,0x3b3891b2,0x3b9597a8,0x3b6d991c,0x3ba7dd87,0x3bafae43,0x3c14c2da,0x3c172d43,0x3c050302,0x3b812757,0x3aed9e52,0x39600ec7,0x3abca29b,0x3b1fd30d,0x3b405c09,0x3b5230b0,0x3b00653e,0xbb3ab49a,0xbb232acb,0xbb8d0fb9,0xbb941a35,0xbbdcac09,0xbbc8bc7a, -0xbb52968b,0xbb4e81ce,0xbaf12d63,0x3ae25648,0x39ea24d1,0xbb1a8439,0x3a06c168,0x3b910197,0x3c06456f,0x3c622c63,0x3c33b008,0x3bfd471d,0x3b118afa,0x3aa1bb60,0x3b60bc9e,0x3c13a1d8,0x3be838b6,0x3bfc60cf,0x3bf9a75d,0x3c56e970,0x3c57b4f9,0x3c2d7723,0x3b94685d,0x3a9fe899,0xba8ece3f, -0x3a1f52b2,0x3b2fcffb,0x3b8911dc,0x3b5e8647,0x3b5e3ad4,0xbb8846f6,0xbb71a26c,0xbc0e51e3,0xbc1de9db,0xbc7faee7,0xbc5804fa,0xbba3836c,0xbbc8e271,0xbb3bc4a0,0x3b19474c,0xbacfbca0,0x3b085313,0x3b4b7848,0x3b926318,0x3c0ae60a,0x3c5c20ec,0x3c4ce5e3,0x3c1fb6ff,0x3b22493b,0x3b84fcf0, -0x3b841791,0x3be43142,0x3ba3eae5,0x3c05a915,0x3c1b1a40,0x3c950914,0x3c95009b,0x3c80c186,0x3be8076c,0x3b5f004b,0xb85cbcfc,0x3b3a6eea,0x3b901a20,0x3be8b941,0x3bd25dab,0x3b824c32,0xb9004484,0xbb528ffd,0xbbbff976,0xbbf85070,0xbc669f4b,0xbc606b00,0xbbb59738,0xbc200a1e,0xbbcb5373, -0x3b5cd1ae,0xba9dbcb1,0xbbaf40ce,0x388aefda,0x3bef8c21,0x3bb8bd02,0xbb86f334,0xbb7e3d16,0xbbda4de3,0xbc42916e,0xbafda290,0x3c0da688,0x3c5321a3,0x3cd7b75e,0x3c95a255,0xbc31d91a,0xbc637feb,0xbc811e27,0xbc98c4f5,0xbc39f166,0xbc037258,0xbbf47462,0xbbc97e47,0xbc1165ce,0xbc438b38, -0xbc5c2bec,0xbbf985e0,0x3c0b00ea,0xbb4a020a,0xbb9ba407,0xbb4db533,0xbaed1338,0x3bd9af13,0x3c95b057,0x3c888e95,0x3c30d4ea,0x3a76e7fd,0xbb128138,0x3ccc4e5c,0x3be5491d,0xbb6642aa,0xbc2b450a,0xbcb13d75,0xbbffdb85,0x3a4beda8,0x3bcdeedf,0x3c37b49d,0x3a077b6f,0xbcba10f9,0xbc8873a4, -0xbc1be21a,0x3b17e154,0x3c6bd295,0x3c732cf0,0x3c3267ac,0x3bd15dcd,0x3ba04c93,0x3c31e679,0x3bc5c606,0x3ba56f2a,0x3b0dc534,0x3b5c0547,0xba37952e,0xbb86dbf5,0xbb82a6f9,0xba87ac87,0xba86dabe,0x38f3b598,0xbb90ffd0,0xbc62d3bb,0xbcbab537,0xbc82eb62,0x3ab9f208,0x3cb29248,0xbcf58382, -0xbcddc60a,0xbc368bb4,0xbbb11d3a,0x39c1442b,0x3b104b60,0x39e07b26,0xbb88a6a9,0xbc50cf53,0xbbfc8d9c,0x3bfdf062,0xbb8e3483,0xbbe54352,0xbbb27ef9,0xbb9153d0,0xba84c930,0xbbb72750,0xba4f0e12,0x3a190433,0x3b8e941e,0x3b60c2c4,0x3abca60f,0xbb2bd048,0xbb2ec1ae,0xbb3f756d,0xbb91c370, -0xba7aea3d,0x3a7583a2,0xb71c5630,0x3a213fa8,0xba9de37e,0xbb5b0e12,0xbc8e4472,0xbc6d8bab,0x3b65973e,0xbcd0273f,0xbcd1eb73,0xbcdb2b40,0xbbbfec64,0x3b81f43d,0x3c9dea7a,0x3c30e80e,0x3ab8157f,0xbc4cd508,0xbc9fe769,0xbc3801a6,0x3c6c0b47,0x3b4eae81,0xbb1f0979,0xbbf26f8d,0xbba7043a, -0xbba14fb6,0xbb331c67,0xb94322d1,0x3a204f90,0x38f8d5ea,0x3b14d254,0x3a6e5ccc,0xb99974f6,0xbb326fa0,0xbb456e60,0xbb10c7b5,0xba1c7019,0xb92d4732,0xb96c75de,0xba34fc00,0xbad5c203,0x3b0a9383,0xbac55129,0xbb0b961d,0x3c2053e6,0xbc88a9dd,0x3cbaa01a,0xbb039f82,0xba1ce793,0x3abeff2d, -0x3c206ebd,0x3b6a1310,0x3aa4671e,0x3a44c835,0x3b6b6a28,0x3a8a67a1,0xbbb5bf12,0xbb4adf1f,0x3b23ffe9,0x3af0bcb1,0x3bc74f0b,0x3c00c5f9,0x3c126ecf,0x3b7600c8,0x3b126b45,0x3a3cceb5,0x3a847070,0x3b5a8adb,0x3ba77098,0x3b6ff74f,0x3a87ce40,0xbafb41fe,0xba62a27b,0xba0fe0f8,0x39bf05d7, -0x39d2e08b,0x3b192405,0x3be26447,0x3ba495ca,0x3b7e6594,0x3c620192,0x3cccfd08,0xbc1d0adc,0x3b974ed5,0x3beea2a7,0x3bb4ce40,0xbaf9b563,0xbb5b0651,0xbb7bfef9,0xbb2bd265,0xba699e4e,0x3ba3e747,0x3c47284f,0x3c304930,0x3c0248a3,0x3bd87b1d,0x3b746528,0xb9a205fd,0xbbb5437b,0xbc00e8a7, -0xbc19cf22,0xbc12c52b,0xbc1ec90c,0xbc16f044,0xbbdafa9b,0xbb08f25f,0xb9dc85ff,0xbac84046,0xbb1a37ec,0xbb3a607b,0xbb3bcc32,0xbb4036cf,0xba65c91f,0x3934bdf1,0xb90d6bca,0xba1fcd40,0xbbb0a9dd,0xbc0d1afd,0xbb1819bd,0xbbce21fb,0xbc1139f9,0xbbbdf253,0xb9f5c0aa,0x3bc7164d,0x3c270050, -0x3c5e5e9a,0x3c7cc282,0x3c7977d7,0x3c656c8d,0x3c74d2d5,0x3c60aae5,0x3c218cfe,0x3c02527d,0x3b9a2ace,0x3a6b9db1,0xba5a742c,0xbb38db2b,0xbb98317e,0xbbb47ec9,0xbb99a776,0xbb912566,0xbaa0414d,0x39d4c802,0x3b27bfaa,0x3b634813,0x3b431ca3,0x388d4c6e,0x39ec272d,0x3905fe38,0xba734caf, -0xb984b5e6,0xba8c2462,0xbaa82f33,0xb94f64f1,0x3b914441,0x3bb9cc34,0x3baedfce,0x3ba95a5c,0x3bd68ee2,0x3bfb7dd7,0x3c1bae91,0x3c328f80,0x3c34458e,0x3c41eda4,0x3c4c9118,0x3c1ab80b,0x3bce1e47,0x3b42a2a7,0x3ae90212,0xba8da306,0xbb57e6fc,0xbb4bd6a6,0xbb6a860c,0xbb870714,0xbb95cdff, -0xbb9c5aa1,0xbba05810,0xbb319dab,0xb9c4023d,0x3b0cc8d7,0x3b703a4d,0x3bbc0519,0x3be4d999,0x3be57067,0x3bf0df79,0x3c097480,0x3bef5d8a,0x3bfceeec,0x3bf74795,0x3b9b2981,0x3bf3f77e,0x3be28923,0x3be8866c,0x3bcad135,0x3bb26b39,0x3b699301,0x3b0ef104,0x3ab99a64,0x3a81b8b8,0x3a09ea20, -0x38653542,0xba9f1e93,0xbb36f291,0xbb6f775d,0xbb8e4a10,0xbb9da56f,0xbb9ee793,0xbb9e9c8a,0xbb90331a,0xbb907bf7,0xbb91eeb6,0xbb9aebe4,0xbba3305e,0xbb6008d6,0xbb27c315,0xbaf14d31,0xb92aa8f8,0x3b184432,0x3b7f4e63,0x3ba95f6b,0x3bd4aa3d,0x3bfaad0a,0x3c051d2a,0x3c066d1f,0x3c0d8d49, -0x3c0e9d2f,0xbbf693c7,0xbba70eed,0xbba93a90,0xbbc29661,0xbbc536b8,0xbbaa48ee,0xbba1271b,0xbba49180,0xbbab7e16,0xbba7dbce,0xbba65e34,0xbb9c7283,0xbb8c0700,0xbb8afcba,0xbb823bbc,0xbb8723cf,0xbb9e678d,0xbba4fcab,0xbbb38011,0xbbca6aa2,0xbbd5b2e7,0xbbd7c310,0xbbe18d9b,0xbbf6d46e, -0xbc033caf,0xbc09fed5,0xbc070359,0xbc056455,0xbbf77f90,0xbbe703b9,0xbbc433a8,0xbbbe0f6a,0xbbb009dd,0xbbdae46e,0xbbf0e6c7,0xbbc83a4b,0xbae73ab7,0xbae5a551,0xbb0ca2b1,0xbb09d7bc,0xbb210600,0xbb380664,0xbb59343b,0xbb6c510c,0xbb6f4f5d,0xbb7b232e,0xbb82f17c,0xbb8974e0,0xbb8ef1f3, -0xbb91adc3,0xbb92646d,0xbb91eef1,0xbb910cfe,0xbb8ca1b0,0xbb893e9f,0xbb86d108,0xbb88f6af,0xbb90672b,0xbb939375,0xbb88ec43,0xbb8acb76,0xbb8eabf7,0xbb84f29e,0xbb613882,0xbb4a2989,0xbb341a2d,0xbb25921d,0xbaebd044,0xbaccb569,0xbad83a7a,0xbb00e295,0xbae10c56,0xbbd53e1b,0x3ac6fd63, -0x3a966134,0x3aa1b66c,0x3a9d49ce,0x3aa963f3,0x3adf2f1b,0x3abe4dde,0x3aa378dc,0x3a3d04ed,0x3a7c6eab,0x3a95a7ae,0x3ad26d8e,0x3a9459c1,0x3a9b5f0a,0x3a9bd5b1,0x3af5a222,0x3b097e01,0x3afdc01c,0x3ac95b37,0x3aa60f47,0x3a88fd51,0x3a975b75,0x3a9421b3,0x3aa4597b,0x3a88c911,0x3a61e452, -0x3982494e,0x3a0f0776,0x3a1f4580,0x39c748b2,0x39f7ceea,0x39a7002d,0x38b7f985,0x39e3d2cc,0x3a039068,0x3a3900e8,0x3a81abcd,0x3a2d50eb,0x3a9c12a8,0x3ae3227c,0x3b36044d,0x3b9f2642,0x3b97a820,0x3b5be0b9,0x3a541b93,0x3a0b5c0f,0x3aafee01,0x3b85afa8,0x3b5a5551,0x3b495e8f,0x3b334a54, -0x3b92f98c,0x3b9db28c,0x3b800422,0x3b25edf5,0x3ad06dd2,0x3a92c597,0x3ab4586f,0x3aca9352,0x3a8f2729,0x3a9537d0,0x39b136f9,0xbade9c52,0xbab69ee8,0xbb0f7b79,0xbb6b801f,0xbb5a9030,0xbb5796ec,0xbb295a95,0xba01f542,0x395af96d,0xb8caa9d7,0x396c1850,0x3a9e0485,0x3b1c67fb,0x3b121930, -0x3b8009d2,0x3bd70643,0x3bc43720,0x3ba3f2dd,0x392556b2,0x3aa8159b,0x3aecfe3b,0x3bc0717f,0x3b51392a,0x3b860eca,0x3b62694f,0x3bf87b21,0x3c082722,0x3bf00dda,0x3b923b6d,0x3b4311f4,0x3ae01344,0x3b037c6e,0x3b0943d1,0x3a8279a4,0x3aeb27b7,0x3a3d349f,0xbb8f518d,0xbb311613,0xbb5f8533, -0xbba8b387,0xbba49bb2,0xbba0c78a,0xbbbbc8c3,0xbb1bab39,0xbab2e5d5,0xbaad6a13,0x3888dfc7,0xbab5847d,0x3ac74aa3,0x3b1cef2a,0x3bbf4940,0x3c42d8ad,0x3c39e9c4,0x3c069958,0x3a9a4df8,0xba9ba13d,0x3aa06558,0x3c31056c,0x3be6d263,0x3be5626d,0x3bb2866a,0x3c39ecd6,0x3c430740,0x3c1df544, -0x3bb1d29a,0x3b347dcd,0x3ab1f7e0,0x3ae69bc5,0x3b1c7ac1,0x39f07cc8,0x3a7644b0,0x3abad463,0xbbe80d6e,0xbbba53f8,0xbc27ca34,0xbc37de0d,0xbc762ea3,0xbc4944ca,0xbc17dde8,0xbb8b0d1c,0xbac649dd,0xbb221606,0xbac1999d,0x3a9c03ea,0x3b48f972,0x3b31ca24,0x3bcc3dcc,0x3c238218,0x3c42b0ad, -0x3c0d54ad,0x39eef08b,0x3ad159ac,0x3b48a7e5,0x3c20f95f,0x3ba0a89d,0x3bc4eff4,0x3bbc9fe9,0x3c773463,0x3c87c170,0x3c7089a3,0x3c10a1db,0x3bd5f476,0x3b63e8ab,0x3b9a95a3,0x3b8de48a,0x3b21b7d5,0x3b85c977,0x3b167fc5,0xbb88ab18,0xbb97f2f9,0xbbb88366,0xbbb28708,0xbc4be303,0xbc4e2c75, -0xbc240a30,0xbc04c54c,0xbb832402,0xbb330e6c,0xbac50cac,0x3bd29644,0x3c07d7db,0x3c882f40,0x3c50bdc2,0xb875d813,0x3aa16155,0xba88063c,0xbbf3f143,0xbb7b5374,0x39dd9555,0x3b6c0ff3,0x3c8d4d26,0x3c6bc8fb,0xbbc0e528,0xbc4ca70d,0xbc8676e7,0xbccca962,0xbca16181,0xbc8f9e1d,0xbc964792, -0xbc8a6334,0xbc76dd96,0xbc82ee83,0xbc3267b2,0xbbaf4d86,0x3beafde2,0xbaf22623,0xbb0131f0,0xba1f4955,0x3a73fdf0,0x3c23be47,0x3ca15a30,0x3c9f4a11,0x3c61e43b,0x3b8aff94,0x3bfc66d0,0x3c660437,0x3a819c73,0xba92e4a1,0xbc054f77,0xbc9e3561,0xbc71abff,0xbbf2e621,0x3b6cdd13,0x3c41f2ad, -0x3bb55c2b,0xbc7388fe,0xbc9519dd,0xbc785e72,0xbba4d3aa,0x3c1b5a4f,0x3c71c0b7,0x3c54c775,0x3c378f20,0x3c13fcc7,0x3c2c6684,0x3b9fb03c,0x3b509813,0x3b351e36,0x3b7ff14c,0x39fea4a4,0xbb96a488,0xbb5e77c1,0x382541b0,0xb9b23a39,0xb9a5ce1b,0xbbb00647,0xbc477af3,0xbcb60c4c,0xbc5f18d5, -0x3c1c60ab,0x3c6291c7,0xbcafc0f4,0xbc7d72fa,0xbc9d392c,0xbc34d2d6,0x3c380980,0x3aff2caf,0xb7cbf65d,0x3ac1ffea,0xbc438e2d,0xbc160fd1,0x3bdd1ba4,0xbb20d9fc,0xbb7aba42,0xbc015b5b,0xbb87d9b9,0xba3c1f1a,0xbbc31926,0xba2d5c27,0xbab57433,0x3a0c1c3b,0xb9327f2f,0xbac30f89,0xbb58f360, -0xbb51b1d9,0xbb37393d,0xbb2c0bab,0x3807010b,0x3a3ca684,0xb989eca2,0x3a7b685f,0xba4da6bc,0xbbdc35ee,0xbc387d76,0xbc094fde,0xbb997fe9,0xbc8469de,0xbc886928,0xbc283b8a,0xbb8f9791,0x3b4117c0,0x3cce7713,0x3c8a5ee8,0x3c217e4d,0xbb30e3cd,0xbc951f41,0xbc7c2785,0x3c39ee00,0x3bb453db, -0x3ac350ed,0xbbf7cd90,0xbb9e3424,0xbbacd18f,0xbb8f6710,0xbabb3475,0xba6991cb,0xbaf2dc1d,0x3a720965,0x39a70b11,0xba8722ec,0xbb3cefcb,0xbb40c977,0xba4a1d34,0xb9bf92f3,0x386e71bb,0xb9518fa2,0xb932e700,0xba614e61,0xbb374c28,0xba90f1e5,0xb9ff68fc,0xbaa13b01,0xbc470462,0x3b6f3dab, -0xbb65937e,0x3beeaf78,0x3c1c8748,0x3c1d4777,0x3c5ca0e3,0x3c386166,0x3aad16d6,0x3b95659a,0x3adf1270,0xbb018baf,0xbb9e4bad,0xb9b73fd3,0xb900bca5,0x3baf4c90,0x3c0074fa,0x3c027100,0x3bbe3fb4,0x3bbcc634,0x3b7716c1,0x3b4a1ea0,0x3b9cff78,0x3bc29f30,0x3b6fd369,0x3a615896,0xbb1ac81e, -0xba3b7665,0x3950fca5,0x390270ef,0x397f5cec,0x3af0637d,0x3b8fa2a2,0xba4f086e,0xbab01293,0x3c2f5716,0x3c05531a,0x3a4178d0,0x3c014365,0x3c110959,0x3bf100f0,0xba24afcb,0xbbad3304,0xbbf0cc81,0xbbcfa910,0xbbb6dad6,0xbb2c05ea,0x3bc17541,0x3b9913b2,0x3bc3a076,0x3b95e5db,0x3b023c9a, -0xba810492,0xbba7c3a4,0xbbbc4802,0xbbde930d,0xbbe22d31,0xbbd2c785,0xbbb6a768,0xbace82e7,0xb7050d0d,0x3a314401,0xb9e3cee2,0xbac06cd6,0xbaa9c941,0xb7d4afae,0xba8a9b8c,0xba3400fc,0xbb1b3144,0x3aa4cc15,0x3ac56ce1,0xbaf9c78e,0xbb04cf0d,0xbc08f5ad,0xbc35c4cb,0xbc240936,0xbc031a56, -0xbb9deab0,0xba055eb4,0x3b111d6c,0x3ba98db8,0x3c2b686d,0x3c5d03d0,0x3c6de16c,0x3c7c0642,0x3c683bbc,0x3c37d890,0x3c1b7749,0x3bc90b0c,0x3b2c0e97,0xba63368a,0xbb5ef906,0xbbba1469,0xbbc8ad52,0xbb8b4e06,0xbb36b388,0x3a0cf956,0x3afa8ff3,0x3b2e3c47,0x3a4cc921,0xb986fd12,0xbb135083, -0xbace788a,0xba7b9f27,0xbae7d0a4,0xbb23795c,0xbb8130bf,0xbb885e3b,0xbbae66d0,0x3b4eb352,0x3b463359,0x3abfc82e,0x3ae493fe,0x3b589621,0x3ba7d6bd,0x3be166a5,0x3c091b45,0x3c18dc40,0x3c2af4c2,0x3c333f0a,0x3c100737,0x3bc6d2fc,0x3b434cfb,0x3b084ffd,0xba61705b,0xbb22bdfd,0xbb40ed24, -0xbb6a8c3f,0xbb874168,0xbb897fc4,0xbb7923b4,0xbb49e846,0xb9c184fb,0x3b0d1935,0x3ba5b6d0,0x3bb493dc,0x3bc3e740,0x3bd6ca63,0x3bb9ede4,0x3bac3a77,0x3bb170d0,0x3bc134f7,0x3bd1c768,0x3bb45f31,0x3b739ca3,0x3c0f88a0,0x3c10d3e8,0x3c148303,0x3c10f976,0x3c0c4b9c,0x3beb7d48,0x3bcbda5e, -0x3bbe45d3,0x3b8a2cee,0x3b2629b2,0x3a9bafee,0xb9e0f75f,0xbb1b6bb2,0xbb72c3f1,0xbb7ea5d8,0xbb83e72f,0xbb721a44,0xbb676fac,0xbb275dbe,0xbb409436,0xbb30fb2d,0xbb4c3e1a,0xbb55d949,0xbabe7b1e,0x39a83ec9,0x3b0161f8,0x3b3fbb5b,0x3ba1f10f,0x3bc5bd6e,0x3bbde97a,0x3bcb7a86,0x3bb75974, -0x3bc22f3e,0x3bede027,0x3c03004b,0x3c0ad06a,0xbaaa5f2a,0x39d6b4fd,0xb8d3beea,0xbab899c0,0xbb214486,0xbacc932a,0xbb11dfdf,0xbb167212,0xbb31c053,0xbb307373,0xbb407d2b,0xbb541675,0xbb5bc26f,0xbb86966a,0xbb7b98fe,0xbb84448a,0xbb9ce6a7,0xbba86d5e,0xbbbd3a47,0xbbc84ae4,0xbbc9a7f5, -0xbbb80298,0xbbb3d59c,0xbbbc03a5,0xbbd25400,0xbbe37a6a,0xbbccaae1,0xbbc29755,0xbba4ccc7,0xbb62c0ce,0xbaff1d6e,0xba047b0e,0x39e518ce,0xba83176b,0xbabb1123,0xb782c4a8,0xba36377f,0xb91946c1,0xb9c79953,0xb9dc236d,0xba4c2c6c,0xba7a8ef8,0xbaaf16b0,0xbac80cbc,0xbb08776a,0xbb2ccafe, -0xbb4ca8ac,0xbb66223e,0xbb799cf4,0xbb85026a,0xbb802941,0xbb7ac925,0xbb719e09,0xbb5e2767,0xbb52414c,0xbb4b80fe,0xbb4cf275,0xbb5acb88,0xbb68bb24,0xbb43eae7,0xbb3a0bf0,0xbb47e6d0,0xbb2fdd65,0xbb0da41c,0xbaecb4cf,0xbadcd32d,0xbae66844,0xbab72b6f,0xbaa34102,0xba89ca0f,0xba966217, -0xba52b02b,0xbbb35ed2,0x3a630c82,0x3a2db855,0x3a6e65ef,0x3a4b3999,0x3a51f783,0x3a8861a3,0x3a832b66,0x3a56d9de,0x397a3b8d,0x39f4b602,0x3a3dfc85,0x3abfd445,0x3a2d75d7,0x3a175165,0x3a0da718,0x3aa213e8,0x3ac32e2c,0x3abb2fac,0x3a9d9535,0x3a866113,0x3a6525ae,0x3a4737f4,0x3a2fdbdb, -0x3a43b337,0x39dec3ba,0x3991456a,0xb918a49a,0x39916859,0x39d0aed8,0xb80e738b,0x39841b78,0x390a0aa9,0xba07af16,0x398270e4,0x399a316e,0x38fc2b5b,0x3a092b5c,0x39a39ea2,0x3a8091ea,0x3a6af80b,0x3ae396dc,0x3b5ecd3c,0x3b83bae2,0x3b363577,0xb8b29204,0xb9b70ef8,0x3a0381b0,0x3b80b163, -0x3b30e27c,0x3b119749,0x3aeaeaa3,0x3b67f214,0x3b7e6794,0x3b5280ef,0x3b194f05,0x3ad1c323,0x3ab0d488,0x3a8a0f4f,0x3a57231d,0x39534e1f,0xb78991f5,0xba2ff9c8,0xbb1b7754,0xbaca1445,0xbb15e899,0xbb8555e4,0xbb1d87e1,0xbb137e45,0xbb70d0b6,0xb9a5e52c,0x3964b8df,0xbaa81110,0xb982f950, -0x39ec14a5,0x3b177b5a,0x3ab7974d,0x3b291444,0x3b8d417c,0x3ba1cbce,0x3b8d6d7e,0xba549f3b,0x3903d3dc,0x3a6e37ce,0x3bd37dd4,0x3afcc4e8,0x3b108bc0,0x3ae8aec5,0x3bb5cdfb,0x3bdcf929,0x3bca133a,0x3b919b37,0x3b6037ed,0x3b2be5dd,0x3adc871b,0x3a87e10d,0xb8c86802,0xb8bf57d5,0xba5301ef, -0xbb9ff22c,0xbb26e124,0xbb1bbe6b,0xbbc969ec,0xbb657389,0xbb6e21dd,0xbbe5a946,0xbac2d28c,0xba47cf36,0xbb39db5c,0xba0f016d,0xbaa7a5c6,0x3b02bc4b,0x3a63d083,0x3b7504c3,0x3c0a64d3,0x3c251870,0x3bf18af2,0xb9dbaa7e,0xbb2d9b4b,0xb9aca265,0x3c381707,0x3bba964c,0x3ba21869,0x3b688bb2, -0x3c166983,0x3c25ecdc,0x3c08329d,0x3bbe4e41,0x3b69a7da,0x3b49ef37,0x3ae6cbf2,0x3a853a05,0xbad79f3b,0xbaebdb42,0xba901a9c,0xbc0b838c,0xbbcc5c84,0xbc1ba40e,0xbc565717,0xbc417401,0xbc1fec28,0xbc46d1f4,0xbb23c44d,0xb9def3a3,0xbbae9bef,0xbaf3b4fe,0xb95c8089,0x3b5263f6,0x3ac97a4b, -0x3b768a92,0x3bb62b94,0x3c21b947,0x3be8b8c7,0xba59411a,0xb9e10d00,0x3b0a8865,0x3c3b3081,0x3b3fe6e0,0x3adc01fa,0x3b0b415b,0x3c31e6ae,0x3c5b6c10,0x3c4e1f7f,0x3c18e9a6,0x3c01fcff,0x3bb9eefb,0x3b8f99da,0x3b38ba09,0xba9bc7f1,0x3a576004,0x38466225,0xbbc25185,0xbb4c7ef1,0xbb310eea, -0xbb1b26f6,0xbc023e17,0xbc01a130,0xbc43f354,0xbbae7d3d,0xbae3cd65,0xbbcc5783,0xbb131ca0,0x3c4c3860,0x3c575d74,0x3caaa042,0x3c8aaca3,0x3bf65b23,0x3b7f9bf5,0x3ab8c520,0xbaa7f62d,0xbb850d48,0xbba44db1,0xbb57a8d2,0x3c14a007,0x3c3dceb5,0x3b8fc153,0xbc098c55,0xbc70f5db,0xbccce0e0, -0xbcbeee43,0xbcb0e9f8,0xbcac4931,0xbcaaf23e,0xbc866240,0xbc8693a6,0xbb98b8e4,0xba74c90c,0x3b896df0,0x3891765f,0x39c9ab7d,0x3a827e82,0x3b2d12f1,0x3c1e8cde,0x3c6db516,0x3c8e8eff,0x3c78b79f,0x3bf7524a,0x3c57f4db,0x3b986ed4,0xb95e8045,0x3a74bec5,0xbbd4fb5e,0xbc8bfc66,0xbc8d3ca1, -0xbc368474,0x3b61e69b,0x3c2e25f4,0x3c0a103c,0xbbc3f5a8,0xbc918d2c,0xbc9ccd23,0xbc0d331b,0x3aefc7f8,0x3c1a97a8,0x3c4c59b9,0x3c5625cf,0x3c31edb8,0x3c03e609,0x3b4321ac,0x3a744ba0,0x3b055df2,0x3b42480b,0x39ebf167,0xbb773e2f,0xbad34988,0x391a64b3,0xba2c400f,0xba2ab7ba,0xbb8a1671, -0xbc130d31,0xbc860ef2,0xbc1aa11e,0x3c611396,0x3bb41994,0xbc6fb7a0,0xbbf5a271,0xbca26187,0xbc2f4b70,0x3c925e78,0x3b0259ed,0x3a815832,0x3bb66874,0xbc14af4b,0xbc18a4ee,0x3b3dda7c,0xb90d99be,0x3a3371b5,0xbbeaed2b,0xbb808c6e,0xbabc5153,0xbb942a19,0xba3be681,0xbb18d27e,0xbaee53ec, -0xbb25ba8c,0xbb4b8fdb,0xbb6c5977,0xbb3a93c7,0xbb095d77,0xba1487d2,0x3a3a6c64,0x38a2ada1,0x3935cb5a,0x39c78ca0,0x3aef41f5,0xbb9dd173,0xbb758dba,0xbb0d2c1c,0xbc4e36bc,0xbc1a0a4e,0xbc2c5adf,0x3c11a339,0xba8d7718,0x3abbff0f,0x3cae0b83,0x3c87037c,0x3c6b3ba7,0x3c0795d5,0xbc6210a4, -0xbc866368,0x3b77507e,0x3beedbaa,0x3bd46f32,0xbba5ca27,0xbb608c69,0xbb9e6cf6,0xbb99639d,0xbb2ac8f3,0xbae5b65d,0xbae9419e,0x39d0f233,0x3a0433bf,0xbaa25ce1,0xbb080c2b,0xbad95eb3,0x3a1667cf,0xb978d950,0x36a9adc1,0x39627814,0xba09d220,0x3957fa9f,0xbb8a0dab,0x3a740417,0x3aba0a71, -0xbc6f6a20,0xbc4209f0,0xbc27ac37,0x3c698b73,0x3c563e87,0x3c19c561,0xbaf8c2dd,0x3c4b49b7,0x3c778d7e,0x3c10f123,0x3bba0f9d,0x3a523391,0xba8fd98a,0xbbe28b71,0xbb5d16fe,0xba126e09,0x3b4475a8,0x3b8dff5b,0x3bb23e4a,0x3bc49c0f,0x3bf3d3f2,0x3bc559cd,0x3b99dfee,0x3bb14ed1,0x3bc5436c, -0x3b207239,0x3a022b81,0xbabc6332,0x35ea3218,0xb94ac5a0,0xb9921575,0xb990d66b,0x3a33b81b,0x3a860103,0xbb18c73d,0xbb913120,0xbb482b9a,0xbc4f0b8d,0x3c16d54d,0x3bd3c45e,0x3bf6578a,0x3c00bed2,0x3b072c21,0xbb95467e,0xbc1fd13b,0xbc31ec2c,0xbc2303fa,0xbc13b481,0xba86d84e,0xba816535, -0x3b5b70ed,0x3b0f55fe,0x3a38208a,0xb9b24107,0xbb1f6287,0xbb2c432f,0xbb680b1a,0xbb6c14b7,0xbb056bc8,0xba57cced,0x3b3038c4,0x3af22e59,0x3aa2cf46,0x39acdd52,0xb94a978b,0x39e573d7,0x3a908198,0x3990b4ee,0x37ae22f0,0xbb2694ff,0x39cc45db,0x3b207518,0x3ba446cd,0x3bfc6923,0xbc1379f7, -0xbc062e88,0xbbae3ef3,0xbbd3d32e,0xbbf55924,0xbbd3b2af,0xbb9eb4f0,0xbb07a978,0x3b84bf4d,0x3c04c2c0,0x3c1fe5b5,0x3c336a8d,0x3c2d5ffd,0x3c1ae09f,0x3c031300,0x3b9f7d61,0x3aee869b,0xbb061e0a,0xbb7be5db,0xbbaa71f9,0xbbb04545,0xbb4415fd,0xbaa19c44,0x3ab9fde9,0x3b083bd1,0x3a8ac9d7, -0xbabae35f,0xbadd4a6e,0xbb0ed9d1,0xbad22593,0xba97d974,0xbb0bf8f9,0xbb6fb2cd,0xbbb30f68,0xbbbdce0c,0xbbf8925d,0xba9852fa,0xbb218cf1,0xbb71211d,0xbb2deab3,0xbb0e3783,0xb9cddbad,0x3a902e20,0x3b3f3079,0x3ba4d432,0x3be08df8,0x3bffba67,0x3be3a32f,0x3ba98644,0x3b3eb005,0x3b02252e, -0xba32e7d6,0xbb0e50ed,0xbb42697d,0xbb6f2035,0xbb82de57,0xbb6939c4,0xbb253779,0xba5e2782,0x3a9568be,0x3b60210c,0x3bbbec79,0x3ba9f815,0x3b8a8efb,0x3b891420,0x3b37fd6b,0x3af2f321,0x3a577bb3,0x3b1c0e35,0x3b3afeb2,0x3ac4ffb4,0x39d35a45,0x3bc9be5e,0x3bc3356f,0x3bb95ae3,0x3bb7f1df, -0x3bb5e286,0x3bd05303,0x3bdf5244,0x3bedd788,0x3bb31e8a,0x3b6a2adf,0x3b24cc70,0x3a2684d1,0xba934867,0xbb29366e,0xbb2ccd8b,0xbb2da5bb,0xbb16ba55,0xbb10edf1,0xbaaa2b18,0xbb137c50,0xba9f8bb4,0xbaadd499,0xba68fe15,0x3a3ff3e7,0x3b38bf60,0x3ba69e5c,0x3ba4af9f,0x3bc897c5,0x3bd418e1, -0x3ba74190,0x3b931dab,0x3b37a163,0x3b2a322f,0x3b73764d,0x3b8d71c8,0x3b9e3020,0x3b87b348,0x3b8f8dab,0x3b7c7219,0x3b466136,0x3addce61,0x3abcf9f0,0xb8fb123d,0xb9b2d152,0xba5b60fb,0xba8048ad,0xbacc23d8,0xbb0a61d7,0xbb2b5152,0xbb7773e0,0xbb655e5d,0xbb6ef5fa,0xbb8b76fd,0xbb96a5f3, -0xbba41e11,0xbba4db24,0xbba23afc,0xbb7538ac,0xbb4a07fb,0xbb25be17,0xbb3d581d,0xbb499dad,0xbb0e8f27,0xbaee3ff8,0xba897700,0x3a76f77c,0x3b195771,0x3b8863cb,0x3baa75ea,0x3b8efc20,0x3b899979,0x3ba01470,0xb9955de4,0x3a044b14,0x39c40da5,0x38c82541,0xb89114ba,0x38a337a5,0x390d10b0, -0x38cc875c,0xba2b948d,0xbaaa9e9a,0xbaf3b5bf,0xbb16e698,0xbb2dc72d,0xbb42cabf,0xbb36428c,0xbb31741c,0xbb265eca,0xbb12f5c7,0xbb0be9e4,0xbb065898,0xbb0ac437,0xbb15f33e,0xbb288008,0xbad1e7d0,0xbab3e6c9,0xbac9f432,0xbaa3b8d1,0xba84363a,0xba405047,0xba644ab3,0xba9b8efd,0xba9c3ab7, -0xba97ab4a,0xba5943bc,0xba7223b6,0xba0d2431,0xbb7a5282,0x3a237d9e,0x3a074229,0x3a55f23d,0x3a1ea47f,0x3a184967,0x3a2aa92c,0x3a506225,0x3a2cabc6,0x38f41ffb,0x398da25f,0x3a11f764,0x3ac07e26,0x39df1c15,0x396ce0bb,0x398272c6,0x3a4b7182,0x3a87be77,0x3a9b95a7,0x3a8293c7,0x3a5f2839, -0x3a40b8ab,0x3a08c461,0x39e5e41f,0x3a09f6e1,0x3895161b,0xb89e20b7,0xb96d2894,0x38d935a3,0x3936c619,0xb99bc931,0x3921b987,0x38c12b68,0xba3c8ac7,0x39776679,0x39af7e5f,0xb7a20aa6,0x39b82d68,0x383e1b1c,0x3a821574,0x3a37a8c7,0x3aadc235,0x3b1ad2b0,0x3b6fedd9,0x3b299255,0xb96ab2e6, -0xba23568b,0x3904047b,0x3b728eaf,0x3afb0613,0x3ab68172,0x3aab63be,0x3b2a0a9f,0x3b419d94,0x3b3faff2,0x3b0d7200,0x3ac9b7e2,0x3ab26a4a,0x3a38f98f,0x39907306,0x38b543b0,0xba5ac0c3,0xbaa50d7a,0xbb076a3b,0xbaaf9e60,0xbaf824e3,0xbb6638fa,0xbab48cea,0xba86ea5c,0xbb5f4392,0x381193c5, -0x399cb95b,0xbac32af2,0xb9fa0e4e,0x3939883c,0x3b1ad45c,0x3a985c7f,0x3af9a6b0,0x3b2fb211,0x3b8bf9ca,0x3b83c8f7,0xba35d48c,0xb9bab05b,0x39e089d3,0x3bdab2ff,0x3a4a87c8,0x39df1591,0x3a352217,0x3b5cfc87,0x3b9f4e45,0x3bb1ec76,0x3b838d7a,0x3b4fb26c,0x3b2b0837,0x3a8a9b3f,0x37f870cc, -0x381560fc,0xbaded6c1,0xbb0e0d11,0xbb84b42a,0xbb2346ef,0xbaf66c12,0xbbd48e65,0xbb02eee9,0xbb1b7810,0xbbd9ec8b,0xba1907f9,0xb8387c4d,0xbb321fc2,0xba2182bd,0xbaa6ccfa,0x3b160650,0x3a2f95f7,0x3b41190c,0x3bbb7927,0x3c160051,0x3be9fd0f,0xb9d9a209,0xbb3ddaed,0xba923159,0x3c30de6c, -0x3b6cbb67,0x3b2af8e7,0x3b14d22d,0x3bd57c08,0x3bffb57d,0x3bf87f80,0x3bbbfd59,0x3b69c110,0x3b6a1c84,0x3a936d77,0xba0de35d,0xbad070e0,0xbb8d334f,0xbb72101e,0xbbe63fe4,0xbbb50380,0xbbe364df,0xbc3d5b0a,0xbbfb16a4,0xbbd27236,0xbc379035,0xbaa09fdf,0x3985e1e7,0xbbc1d4f1,0xbb0934a3, -0xba133a7b,0x3b51ea84,0x3aa87dff,0x3b0f3fd2,0x3b1afc42,0x3c08d212,0x3bd3bc58,0xb95ba924,0xbab23ef9,0x3ab7561d,0x3c43d3b2,0x3a6bc577,0xbb1f2d4d,0xba818be6,0x3bc31651,0x3c17b4bc,0x3c3015e8,0x3c0c2a83,0x3bf04928,0x3bba0e79,0x3b2ea336,0x3a14c1ae,0xbb2c53a5,0xbb13db9f,0xbadb4a22, -0xbb936fe9,0xb9d2014b,0x39835370,0x3a130c91,0xbb245fa4,0xbb469f4a,0xbc18bc96,0xbb2a5014,0x36ce7f1e,0xbbde9855,0xbb243288,0x3c51eb6c,0x3c753686,0x3cb4b81a,0x3ca87c07,0x3c8b711c,0x3ba9854a,0x3ad0df1a,0x3b516c2b,0xbb37a6af,0xbbc77f15,0xbbd18abb,0x3bf27c8c,0x3c731a3b,0x3c903910, -0xb8da81a2,0xbc20dd84,0xbc9bc57e,0xbcb227b0,0xbca8db8b,0xbc92b810,0xbc97ea24,0xbc5dad30,0xbc5220c1,0x3b1218c1,0x3b1abc6e,0x3aaaa813,0x3a2fa433,0xb8eb276a,0x39b43ff3,0x3a5eff7c,0x3bb53b74,0x3bd9be99,0x3c3f2019,0x3c5ef6f8,0x3c29d61e,0x3c625d9b,0x3986926a,0x3aa1f421,0x3a946135, -0xbbbb835a,0xbc5e6770,0xbc8d25db,0xbc5b329a,0x3b8e60f1,0x3c05a25a,0x3c1daaca,0x3b66eab2,0xbc67fd32,0xbca2b903,0xbc303d7a,0xbb83b28e,0x3b77bd34,0x3c2bdd3a,0x3c3e2e3a,0x3c17464c,0x3b8ae853,0x39f8a6dd,0xba9b8fa3,0x3ab9697d,0x3aa7b144,0xba011e89,0xbae7c312,0xb901fa3b,0xb9127e8c, -0xb8500ec3,0xba13842b,0xbac6c35f,0xbb936f06,0xbc0d9908,0xbba18b11,0x3c4bda9a,0x3a0d6ce4,0xbc0c8210,0x3a790a29,0xbc2903f9,0xbb981785,0x3c984229,0x3b8a1218,0x3b9b867c,0x3c19db8e,0xbba07174,0xbc01ac70,0x3a27dafa,0x3b16649b,0x3ba4a714,0xbb255c3a,0xbb24f0c7,0xbb033b35,0xbb0c9eeb, -0xba52f95b,0xbaff75cc,0xbad9f06d,0xbb11116d,0xbb2f91f0,0xbb2fb09a,0xbac637eb,0xba466e47,0x39e12deb,0x3961ef93,0xb8efccd8,0x393670ac,0xb8592402,0x3ab1caa2,0x39ce1619,0xba3bcbcb,0x3820a9fc,0xbc3b4b31,0xbbca2667,0xbb8d1f34,0x3cb7aa9e,0x3aa8c57b,0xba2487bb,0x3c30cc2b,0x3c52486e, -0x3c80d729,0x3c935d20,0xbbc63003,0xbc447795,0xbb68a640,0x3c0b1fd4,0x3c2f4073,0x3a8f37c3,0xbad62a3e,0xbb8c44f0,0xbb7627be,0xbb3d2eb3,0xba7b245c,0x3a70b7a4,0x3afdc4cc,0x3afeef29,0xba4e06fc,0xba42069a,0xb99061b9,0x39df6d0a,0xb958a0a5,0x396c3b11,0x3921509d,0xb98b3349,0x38df1d1e, -0xbaf0095d,0x3a8e1cde,0x3abf793c,0xbc96f60c,0xbc49183a,0xbc65d406,0x3cceb919,0x3bbac563,0xbb03fa52,0xbc79e24b,0xb9d8fdcd,0x3c0d88a8,0x3c9e440f,0x3c1b8c11,0x3b5f27db,0xbabbb02a,0xbbdf7332,0xbbaac902,0xbafa6254,0xb9eba3b5,0x399fbb8f,0x3b42e93b,0x3ba4f3d2,0x3bef3f8c,0x3bf0e7f0, -0x3bc00c45,0x3bbd9612,0x3b9c6e82,0x3a2b9f23,0xb8923079,0xb9dbacce,0xb8d224b2,0xb9e4cd18,0xb8cf29e4,0xb9a18a4c,0x39c17f62,0xb9123170,0xba8db71a,0xbb933cda,0xbc9e2811,0xbcd1aa07,0x3c98a6b6,0x3c2bfaa8,0x3c0c1feb,0x3c08e3c8,0x3bb649ab,0xb947a5de,0xbbeda48f,0xbc484ad1,0xbc35c608, -0xbc3794b7,0xbb8caf30,0xbb7b3d57,0x3ade0cdb,0x3af77fe5,0x3ad65b0e,0x3af2dfa6,0x3a6fc2da,0x3a80580e,0x3a265b75,0x3abbd7f0,0x3b5551db,0x3b8ddb1c,0x3bb1106f,0x3b4ac3d4,0x3ab949bc,0x3a03c5d7,0x3a13510e,0x3a286f62,0x3a2a3a06,0x3999b712,0x398d7c44,0xba6912e6,0xb9f9bc58,0x3b51e7bd, -0x3c46b71c,0x3c9dab60,0xbb9ff173,0xbad4ac19,0x39f9bc34,0xbb299e1f,0xbbba5279,0xbbec2377,0xbbcd16d8,0xbb6c3a8e,0x3a90d539,0x3b7f392f,0x3b84f8c6,0x3ba45529,0x3ba93669,0x3baff95c,0x3b960f2a,0x3b1221b3,0x3786f2c3,0xbb2b2cdb,0xbb4d93ea,0xbb5b3f5f,0xbb5d7dbb,0xba90594b,0x39813945, -0x3acb20df,0x3a9d7486,0xb9f10a00,0xbaedd335,0xba9fe782,0xba9c75e0,0xba557245,0xba3be6fd,0xbb03641b,0xbb64854f,0xbbaf492e,0xbbc545de,0xbbcf5eab,0xbb831185,0xbba9e9f5,0xbba6924f,0xbb83e7c2,0xbb966fc3,0xbb6458b0,0xbb1117e2,0xba0d5e0c,0x3b03a6c7,0x3b8c7863,0x3bbd2805,0x3bc8e83a, -0x3bb272fc,0x3b8a650d,0x3b498a84,0x3a50f52d,0xba406779,0xbae0bfba,0xbb1fe0af,0xbb381ed0,0xbb1004e5,0xba4e68c2,0x3acf6c09,0x3b0aa3a9,0x3b67fa60,0x3b82a3e4,0x3b4d6073,0x3adee0f3,0x3ad12faf,0x3a070650,0xb9b7e7ac,0xbb05875c,0xba0f8bda,0xb8f76be9,0xba5ecd77,0xbaeabc2c,0x3b178e5e, -0x3ad74442,0x3a701a02,0x3a501b1e,0x39f11642,0x3b543c94,0x3ba2113f,0x3bcda048,0x3bb84b4e,0x3b9a5d1c,0x3b9b7c05,0x3b48795c,0x3b08757f,0x3a84259c,0x3a32f400,0x3a170473,0x3a01af70,0x397b8778,0x3a3b381c,0xba79dea4,0x3a2b5bdd,0x3a892dc6,0x3b0598ac,0x3b4577d4,0x3b9bcde5,0x3bdb8279, -0x3bc77411,0x3bcda046,0x3bc1c912,0x3b8d2c25,0x3b544191,0x3acb3387,0x3a874ca7,0x3a7ff0a8,0x3a866e91,0x3a9ba2fe,0x3bdff8df,0x3bd5c0d2,0x3bd016a0,0x3bd763d6,0x3bc25150,0x3b9cd14d,0x3b509d64,0x3b39e9bf,0x3b0f584b,0x3ae39df1,0x3a7aaff2,0x3a0a0ebe,0xb8b2f898,0xba925f7b,0xba802de9, -0xba9092ff,0xbab1b8ef,0xbad9a851,0xbaeb46ff,0xbacd96db,0xbaf602e6,0xb985718f,0x3a25bce9,0x3aebfb18,0x3ae56b4f,0x3b040f1f,0x3b2a9577,0x3b2b77a8,0x3b3da5d9,0x3b8e221d,0x3b9ffb1e,0x3bc6de94,0x3be0c726,0x3be0ddc5,0x3be6c9e2,0x3bed03d5,0x3a55bd01,0x3aca8f38,0x3abe9a09,0x3a88a082, -0x3a8be747,0x3ab97229,0x3af3e4e3,0x3b06e344,0x3acf5923,0x3aa11634,0x3a67c7d2,0x3a1013df,0x39914326,0x380ce158,0x3920b674,0x393e63f5,0x39a509a3,0x39ef7ef2,0x39d0060e,0x3a04e4c8,0x39719413,0xb79707bb,0xba13359d,0x3a6db177,0x3a78a345,0x3a22cc92,0x3a47c7d3,0x3a39c86c,0x3a5ba475, -0x3a17dd23,0x39567a48,0x37bb01a7,0x391992d2,0x39f37189,0xb8b6d54d,0x39c7ccf9,0x39adce82,0xb95220d1,0x384359d5,0x3965df7f,0x383d7351,0xb6e2d281,0xb8dbd698,0x3927c786,0x384fb826,0xb9d6da32,0xb9b80589,0xb8b25368,0x3a653f69,0xb92bc10b,0xb9f02a6f,0xb9f0312e,0xb9312bce,0x389637a6, -0x39f74bfb,0x398c7b0b,0x39268b98,0x3718c37e,0xb7ba90ef,0x3811b0c6,0x39da332a,0xba0f18e1,0xba12204a,0xb8e2881f,0xb9172a1e,0xb999f2ff,0xba22a397,0xb8c105da,0x38144072,0xba28b25b,0x37bbbaf5,0xb8824602,0xb9105536,0x388f16d2,0xb8c502e1,0x3a1beead,0x39872206,0x3a2d973b,0x3a85de4d, -0x3b3452cf,0x3af6c886,0xba10cc79,0xba9a5a77,0xba3f0927,0x3b206c2a,0x3a1ca284,0x390a6c7b,0x39337d0a,0x3a43bc7a,0x3a85ed52,0x3af822b0,0x3a979f94,0x3a383de9,0x39bc99bd,0x38bf6b21,0xb9ba94e2,0xb803e843,0xbad37570,0xbafea912,0xbad1a195,0xbadfc9d8,0xbae08940,0xbb13562e,0xba5032b9, -0xba35439a,0xbb39ad0a,0xb8ae3f22,0xb89d522b,0xbacdef6c,0xba596414,0x382a215e,0x3ae662a3,0x3a3a0bcc,0x3a8e4b6b,0x3a7149b9,0x3b46090a,0x3b46a533,0xba5aeb29,0xbaa9f96e,0xba2698fc,0x3babf639,0xb9b1e7b7,0xbaa4111e,0xba8a5f4c,0x390dbb79,0x3adff782,0x3b757f72,0x3b1ce5e7,0x3ae4e1ad, -0x3a91fd0a,0x397638f8,0xba5a501b,0x39bbab09,0xbb48caa9,0xbb63a343,0xbb1cbd4c,0xbb4dc9be,0xbb444451,0xbbca0e48,0xbad4e612,0xbacbefde,0xbba20b0e,0xb9af0cf0,0x3840996a,0xbb1aede8,0xba3a17a2,0xba5ec666,0x3b155922,0x3a38a950,0x3b1ea94a,0x3b4ddd56,0x3bf9dd4d,0x3bd36765,0x391385fb, -0xbb4d09d3,0xbb0d85c1,0x3c0467e8,0x3aaebb8f,0x39d82fc3,0x3997256c,0x3b0b0d40,0x3b658492,0x3bbe267c,0x3b885659,0x3b150e05,0x3b02470c,0x38e79af1,0xbae2a212,0xba490622,0xbbc56074,0xbba17b7f,0xbb854d6e,0xbb8c1d4e,0xbb647cfb,0xbbb31f44,0xbb8032c6,0xbb65d147,0xbbf0f23e,0xba10726a, -0x39a482a3,0xbbac11ff,0xbb146581,0xb9731c17,0x3b241930,0x3a89f5ed,0x3a6bb6ff,0xb9c2f546,0x3bc95115,0x3ba018d8,0x3959fded,0xbb207be5,0xb91c3158,0x3c202d64,0xb986c70d,0xbb9db0d3,0xbb953e18,0xba0e83da,0x3b54eb68,0x3bf91d6b,0x3bbe6617,0x3b9a4575,0x3b4593d3,0x3a437c75,0xbab09dae, -0xbb0db64c,0xbb6f10b3,0xbaf73355,0xbac34837,0x3a95ed32,0x398cf9a9,0x3a88f019,0x39bb4c76,0x38d35943,0xbb8997ec,0xba7681e8,0x3a2e12bb,0xbbb0ed06,0xbb0f50b6,0x3c3256c1,0x3c5dec31,0x3cad620e,0x3cb9319c,0x3cbb6625,0x3bb75a6c,0x3a821e61,0x3b86a40c,0xbb33ac1e,0xbbdb98c3,0xbc07a678, -0x3bb06b4e,0x3c840df0,0x3ccf235b,0x3c067d03,0xbb64ce6a,0xbc38d88e,0xbc8d1f0f,0xbc8c1941,0xbc591655,0xbc65b462,0xbc14e3fb,0xbbc86a0f,0x3bab4a54,0x3b247162,0xb8d586a2,0x38bb9a73,0xb9cb7a0d,0xb8d8f117,0xba1c4d5f,0x3a911771,0x3aaad3b4,0x3ba0c61c,0x3c1118ef,0x3c1c5b3c,0x3c3c075a, -0xba434d93,0x3b34514b,0x39f940ac,0xbbb96da0,0xbc27f096,0xbc90f5e4,0xbc8bf2f9,0x3adec3c0,0x3b446a19,0x3bfcc299,0x3c28e1c1,0xbc1ed9c7,0xbc99189b,0xbc6ddfca,0xbc0107bd,0xb9188ddd,0x3beb8b04,0x3bfbba47,0x3ba1494e,0xba0da7e9,0xbb0cd623,0xbb2a0578,0x3a9f39f2,0xba10b66d,0xba6095fb, -0xb96f0628,0x38315905,0x38e40641,0x392caf7c,0x38c86bbe,0xb9a8f486,0xba347f91,0xbb2741b3,0xbac17fe9,0x3beb490b,0xbaa2dde8,0xbada0930,0x3c128615,0x3a5e73e1,0x3a257448,0x3c492100,0x3bb06c72,0x3bf38abf,0x3c2ec2ce,0xbab616ed,0xbbd43dfa,0xbaf2e408,0x3ae87611,0x3bc0ed1f,0x3b3c9ada, -0xba42f0ac,0xbb1be380,0xba10951a,0xba991e95,0xba9affc8,0xba2f3456,0xba4faffa,0xba988332,0xba8229ed,0xb9a35d11,0x394b3289,0x390a87c9,0xb87f74f2,0xb837afbc,0xb9342e93,0x38bb4bd8,0xb9172bb8,0x3a7b725f,0x39cc2c70,0xba29dd35,0xbbca2ced,0xbb38effc,0x3b485961,0x3ca4daae,0xba929f92, -0xbb98d0fd,0xbaba2fa3,0x3be92a90,0x3c502bea,0x3c9c7664,0x3b176f3b,0xbba32834,0xbc281889,0x3bcacf13,0x3c29a3f8,0x3bf56a1b,0xba6a0081,0xbb8df00f,0xbb48d99b,0xbb304350,0x398ce682,0x3b7ff190,0x3b7bdebd,0x3b4df0cb,0xba0854c0,0x39c070b8,0xb8bd9dd4,0x381eb8ef,0x384b4641,0x3899c1a4, -0x38b9d4f2,0x36a6b699,0x37825174,0xba059c6b,0x39bdb02e,0xb98f0a76,0xbc582f6a,0xbc0cc0f0,0xbc46afbe,0x3c13c83f,0xbc321deb,0xbc7d4d54,0xbcb5fe5c,0xbc85a62c,0xbbba8960,0x3c995ac4,0x3c4706e1,0x3c0412d5,0xbb62c904,0xbbcc2d39,0xbbfc9190,0xbbd8de37,0xbb9db8d5,0xbb415711,0x39cc0cb5, -0x3b477ba3,0x3bb05b42,0x3bd86f95,0x3bc0b4ce,0x3b987dea,0x3afc002a,0xba230a74,0xb942026f,0xb8aa9eb8,0xb92cdead,0xb8c84db6,0xb8c5760f,0xb82efe9a,0xb65db28f,0x392300ab,0xb992000c,0xbb867fd4,0xbcc6b29d,0xbcc7f948,0x3cde134a,0x3caca17b,0x3c00e61c,0x3b62b8ac,0x3b78e131,0x3a131235, -0xbb977f6d,0xbc3eccbe,0xbc384b99,0xbc485c38,0xbbd0e372,0xbbc1ec19,0x3806d150,0x3b192a33,0x3b31e332,0x3b573347,0x3b3dfaa6,0x3b725dbe,0x3b903f50,0x3bbe2e09,0x3bf26c3b,0x3c03bd48,0x3bb1de31,0x3b3b6420,0x3a2e42ec,0x39851fa2,0x39a2b0e4,0x393bb4f8,0x393a918b,0x383fe6d6,0x37fe76c4, -0x3980350d,0xb99ab43c,0x3b90a837,0x3c652c8b,0x3cdce301,0x390b36f2,0x3af4e039,0x3b136feb,0xb9dba710,0xbb65367f,0xbbb681f2,0xbbb0d502,0xbb7038c9,0xba65c339,0x39901668,0xba893c5a,0xba98cc6b,0xbaa5e903,0xba865ab9,0xb9c978f9,0xba860356,0xbae88f27,0xbb32fc73,0xbb220554,0xbaed3231, -0xbab0ff28,0x3971a98c,0x3aa5334e,0x3a8dc74d,0x39dc31e1,0xba2128cf,0xba56e5e5,0xb94aade0,0xb9a9352e,0xb81aa79b,0x388bf358,0xba67ccd2,0xbb05cee3,0xbb634343,0xbb8b66ec,0xbb4ff521,0xbb9056e4,0xbba05df1,0xbb8865d7,0xbb725119,0xbb83075e,0xbb834e3f,0xbb5faafc,0xbb4b9bef,0xba7ba251, -0x3a9ab77d,0x3b4e2dee,0x3b90687d,0x3b9dd669,0x3b970a03,0x3b627bf5,0x3af4042a,0x3a0953af,0xb9b645e4,0xba887d7c,0xbac809a3,0xba1ea871,0x3a3b62c4,0x3b35673a,0x3b0bffea,0x3b13afe8,0x3aa63a35,0x3a74e961,0xb7e71ae0,0x38f8e639,0xba1413d4,0xba9fcb64,0xbb293b0a,0xbb11a88a,0xbb01a703, -0xbb09ad2a,0xbb2defc8,0xbad4df67,0xbb51319f,0xbb6c98ee,0xbb5f97c0,0xbb8274f6,0xba951d70,0x3a4234e8,0x3b15a049,0x3b5c9f4c,0x3b7ad828,0x3ba1667e,0x3b85ca44,0x3b8ea29e,0x3b8def84,0x3b71f586,0x3b6511b7,0x3b37b30e,0x3b1b2d5d,0x3b18b4b6,0x3a4a015e,0x3b0a2ec2,0x3b35acb6,0x3b7488d9, -0x3b877e68,0x3ba07861,0x3bb87f1c,0x3ba3a24d,0x3b871c27,0x3b851604,0x3b1c318a,0x3aeed7e0,0x39b4b1df,0xb9becee1,0xba9d5776,0xbb0aff25,0xbb2269b0,0x3bd95167,0x3ba8a682,0x3bae7c97,0x3bc8777b,0x3bd27d28,0x3babf0dd,0x3b8ef780,0x3b7daad9,0x3b5a90cc,0x3b418af1,0x3b23f145,0x3b27412a, -0x3b0e6e51,0x3aec3cfe,0x3ae333b3,0x3adbe8d4,0x3af852d5,0x3ae076ba,0x3add5834,0x3b07127a,0x3b01987f,0x3b530c42,0x3b82cfa8,0x3ba37629,0x3baf2a1b,0x3bc096d0,0x3bc3c9a0,0x3bbaa560,0x3baded79,0x3bbec99f,0x3ba68ff3,0x3bbfa9e1,0x3bc2ac92,0x3bd1b44c,0x3bea6672,0x3bc89664,0x3ac3028d, -0x3ad1d560,0x3ae458db,0x3abd2fd1,0x3ace1e81,0x3af4af92,0x3b1ee578,0x3b376d56,0x3b3b03de,0x3b3de78f,0x3b3b12ae,0x3b346b34,0x3b30da4b,0x3b2f6dc0,0x3b300009,0x3b2ec323,0x3b31b22b,0x3b2ed29e,0x3b25e7bc,0x3b2710dc,0x3b1b343e,0x3b1618ff,0x3b02c65c,0x3b385cd7,0x3b38d240,0x3b335ffd, -0x3b345ace,0x3b2187f9,0x3b21926e,0x3b1725d1,0x3b04754c,0x3addcfa5,0x3ac80528,0x3ac5f475,0x3a9bb522,0x3ab16b97,0x3b78b2f6,0xba99a473,0xba134fd8,0xb9ded972,0xba108196,0xba1a8772,0xba5df4cf,0xb9fd7297,0xba109f66,0xba5dfbe0,0xba6fd1e6,0xba4197d2,0x3800a6cd,0xba33307c,0xba88154d, -0xba9bd992,0xba9c0eb3,0xba84c7a8,0xb9dce6da,0xba1a7a3d,0xba27f904,0xba51ac38,0xba411f15,0xba212528,0xb916be44,0xbaa0761b,0xbaa29bea,0xba035cd1,0xba81d16a,0xba98f4a6,0xba93f985,0xba6073b1,0xba24abeb,0xba779707,0xba131cf4,0xba39325d,0xba39389f,0xba09ad31,0xba16271b,0x38c8d04a, -0xb94827b7,0xb72afb05,0xb9a3e013,0x3aeb5307,0x3aa77ad7,0xb9dc1ce3,0xbab7b08e,0xbab78d2e,0x3a3d9141,0xb9a2c321,0xba29b372,0xba835710,0xbabc4c3f,0xbab70553,0x39b960bf,0xb94c6ddd,0xb9e3a6d8,0xba83a2a7,0xba73e896,0xbaa2fcf8,0xba123c55,0xbb219fbb,0xbb2cf4f0,0xbaa68328,0xbb2243f5, -0xbb1ccd98,0xbad7e5b7,0xba4c9957,0xb9b50579,0xbb0977bc,0xba330972,0xba57ba9e,0xbaf87734,0xbaafed94,0xb9b79b9b,0x3a787ccb,0x39ab1e54,0x39f8adf2,0xba210f04,0x3b0179d4,0x3b14b89f,0xb8f91f4c,0xbacd62b5,0xbaa61d41,0x3b383317,0xb9aa7c3c,0xbadddba6,0xbb2be068,0xbb597b06,0xbb08c2b6, -0x3aa30768,0x394a843d,0xb54479cd,0xba71a9f9,0xba7355a9,0xbada8948,0x398e0d77,0xbb850051,0xbb842caa,0xba94f9ba,0xbb84fc18,0xbb832ed4,0xbb924013,0xbaf9d2b7,0xbac1b4b4,0xbb2a27ce,0xba21fd2e,0xba234822,0xbb156aec,0xba7695d6,0xba08e8db,0x3b0999a8,0x3a5b43a3,0x3afca665,0x3a36f831, -0x3bca7d3c,0x3bcb1149,0x3b109baf,0xbb123c5e,0xbb1e7464,0x3b7cbe38,0x3a37d284,0xb81919e1,0xbaa156a5,0xbb495b2b,0xbb0d8635,0x3b37f59f,0x3ac86d0e,0x39b1ee7f,0xba422e29,0xbaad848a,0xbb332ebb,0xba0eecab,0xbbc858af,0xbb9884c4,0xbab9d0da,0xbb166924,0xba3bb72a,0xba82bae2,0xba248084, -0xba948b53,0xbb46f555,0xb9f79487,0xb9610f25,0xbb83caf1,0xbb1ed356,0xb92c33a1,0x3ab404fc,0x3a738351,0x3938bd9e,0xbb1c6809,0x3b8c5fe8,0x3b79cd7b,0x3b0a0ee0,0xbb00a674,0xba852202,0x3bbf272b,0x3a4b53de,0xbb85eca2,0xbbe85d15,0xbbf0fa02,0xbb7dbdd9,0x3b47526c,0x3b019d3a,0x3ab6b95a, -0xba155d3c,0xbaa39b7e,0xbb1c2945,0xbaa115e4,0xbb54fe08,0xb99861cf,0x395632b3,0x3a424386,0x39d0d4f4,0x3a29a4f1,0x388471ec,0x3a42ca71,0xb9c2df70,0xb9af0846,0x39ae8147,0xbb5aa55a,0xbad807f4,0x3c120d82,0x3c2e6dd1,0x3c995eaf,0x3cb64cdf,0x3cc9dbdf,0x3bef1ddc,0x3b3d92ae,0x3bade60a, -0xbaa537d5,0xbb9f766e,0xbbcac536,0x3b8cbfdc,0x3c880f70,0x3ceb5fd8,0x3c8d09e3,0x3ba3b24f,0xbb63d50b,0xbc3af61f,0xbc52ac54,0xbc161c2b,0xbc231466,0xbb907c3b,0xb9232627,0x3b721ca1,0x3a1fd119,0xb982d879,0xb94adf71,0xb9963404,0xb97cad81,0xb9190ef2,0xb937997b,0xb883c6ca,0x3a1d665d, -0x3b5bb42d,0x3babe9a0,0x3bebd94b,0xb94f9ad2,0x3b4ccffe,0x3aa5594a,0xbb727474,0xbbccce42,0xbc871c9f,0xbc9c2781,0xbb1f8987,0xba70617f,0x3bcebffa,0x3c727f89,0xbb7ae54c,0xbc6ed7b1,0xbc8c7e3e,0xbc22c9a7,0xbb027bcc,0x3b892901,0x3b869e43,0x3ab371c3,0xbb799126,0xbb5abbec,0xbb0a715d, -0x3a0e11fa,0xba87c1d6,0xb9f105eb,0x38d6df94,0x39438661,0x38e9e634,0x39031cb7,0x38713b34,0x387a0730,0x35c5ec58,0xb9eb169b,0x39d22e13,0x3b411002,0xba2d7018,0x3b9de753,0x3c7f331f,0x3c0fa44b,0x3b689f23,0x3b53ba68,0x3bb76eb5,0x3c1550fe,0x3c2319e6,0x3b144dd3,0xbb85ec51,0xbb87679a, -0xb9c0311f,0x3b9cffbd,0x3bf4e8fe,0x3b0bffdc,0xba97ae0c,0x3a6e71b4,0xba1f9fbc,0x390fea63,0x3962ac1f,0x3a075024,0x37db73f9,0x3909df11,0x3882cc5a,0x39aa3f8d,0xb8da110f,0xb83cb7ed,0xb8b74973,0xb84d7d05,0xb80b4a7f,0x376ffd29,0x384c02bf,0x3890ec16,0xb93fb6fc,0xbb6c2bd1,0x399440b1, -0x3c03d7bd,0x3be3d786,0xbb4c2a1f,0xbbc0c222,0xbc2b9ca9,0x3b736369,0x3c1ed055,0x3c50e4b7,0x3c19b75b,0x3ae642fd,0xbc55fcab,0x3afe8f4d,0x3be99955,0x3c494c5d,0x3a50f01f,0xbb44e3b2,0xbb222574,0xbafe7df6,0x3a615430,0x3b99fd0c,0x3b82e8d8,0x3b124dc6,0xb9cd44c9,0x39aae197,0xb9848e62, -0x38bd42f9,0x3728f00a,0x37a6f202,0x37f6943d,0xb7f0022e,0x37b46206,0xb8cbb2e6,0xb84d1517,0x3a319506,0xbc0178dc,0xbb18b2c5,0xbc3883b6,0xbcbba1f0,0xbca9a558,0xbc8eec63,0xbca76491,0xbcba2c86,0xbc8b9202,0x3bc78bf1,0x3c4e76a7,0x3c5fedb1,0xbb1693e2,0xbb743157,0xbc11bf9d,0xbc2fb527, -0xbbf9d084,0xbb9a2bf2,0xbb04a978,0x39f02d30,0x3b0c36c1,0x3b71ac2b,0x3b7e1601,0x3ae8314d,0xba397831,0xb9d28672,0x3885f9a6,0x37302a09,0xb8081734,0x381b2998,0xb7180904,0x38b7cead,0x36b130e2,0x39001506,0x38d8f5dd,0xbafe6d66,0xbc88c26d,0xbc50ac99,0x3ced1b0b,0x3ced904c,0x3b88423d, -0xbb9da952,0xbafbf795,0xbb386b7a,0xbb558647,0xbbfa8f6f,0xbc1c1209,0xbc3eb290,0xbbed27d3,0xbbd4d965,0xba344136,0x3b45be7f,0x3b4e0248,0x3b648931,0x3b814a08,0x3bb94303,0x3be9173d,0x3c05f18a,0x3c1340ae,0x3c013c71,0x3b5b0b34,0x3a8beb61,0xb949e1c3,0x38858ced,0xb7831457,0xb838e3e2, -0xb904477c,0xb6ce429b,0xb9a65095,0x3942cb78,0xba4f3c0c,0x3b8d8afc,0x3c2c05d3,0x3cbf8c94,0x3b51bd41,0x3b356ecf,0x3b34cf9e,0x3af6a0ac,0xba801194,0xbb3b67e7,0xbb84a46f,0xbb7fabf3,0xbb2195b2,0xbb07c9e1,0xbb5fefcb,0xbb957961,0xbbabf86b,0xbbcbab3a,0xbb915c27,0xbb60d796,0xbb2a7b88, -0xbb1652e4,0xbac52656,0xba3d1df6,0x386919d3,0x3aae2f6a,0x3ac6b3ef,0x3a1eb6a4,0xb892abce,0xb81da3c7,0x37b0a519,0x394caa23,0x38f0fa06,0x39890a81,0x39b9b2cc,0x39a8ef05,0xb933e9e6,0xb9f098f3,0xbaae21c6,0x3a2c7814,0xbb541ba6,0xbb29df47,0xbaccdfb7,0xbb0b3b3a,0xbabf5048,0xbb1c872d, -0xbb2bc7b5,0xbb82420e,0xbb4a7491,0xbb021c5a,0xb99c1d73,0x3ad027f7,0x3b3339ba,0x3b4f0633,0x3b1d48d1,0x3acd5723,0x3a612366,0x3a038777,0x39c0be51,0x3902701d,0x3a0f125a,0x3aad170c,0x3b0e8bb3,0x3a83774b,0x3a0d482b,0xb9be2364,0xb99be14e,0xba0a002a,0xb981f839,0xba24b2e0,0xba8fbbd6, -0xbb0901eb,0xbb343f13,0xbb4b10ce,0xbb4736fc,0xbb45f6d6,0xbbaf22e7,0xbbd428dc,0xbbc5ba35,0xbbabb2d2,0xbbb3508b,0xbb721375,0xbb0e27ea,0xba31298a,0x3a943c7a,0x3b0f6941,0x3b5a4f28,0x3b5afcd4,0x3b9137a2,0x3bb161c4,0x3b9c3f4d,0x3b9540d5,0x3b6bb969,0x3b5b3443,0x3b51af7f,0x3b14a435, -0x3b2b39b8,0x3b4bd786,0x3b5c3211,0x3b48a710,0x3b37d180,0x3b26a371,0x3af9e4e2,0x3a43452f,0x3a3e5bed,0xb9e3588a,0xba31051f,0xbac8eebf,0xbb0ecd19,0xbb67587f,0xbb9e068e,0xbbae146a,0x3b6e3567,0x3b16e92a,0x3b2c876c,0x3b643181,0x3b9170fc,0x3b7b9a9d,0x3b7abf66,0x3b5eb29f,0x3b5357cd, -0x3b592912,0x3b679e0f,0x3b85a251,0x3b852ccf,0x3b8caa8e,0x3b8384f4,0x3b82db8b,0x3b93875d,0x3b8e8262,0x3b8c2dce,0x3b95ee8d,0x3b8dcb6c,0x3ba505aa,0x3bb2620d,0x3bc39b9f,0x3bca79b3,0x3bccbc3b,0x3bcab500,0x3bb8f885,0x3ba7a9dc,0x3ba04f5d,0x3b702087,0x3b818665,0x3b5ef8c2,0x3b826f6c, -0x3b94afc0,0x3b544227,0x3ad9a9fb,0x3ac2e37a,0x3ae7f76e,0x3aec8bb0,0x3b044252,0x3b1102a9,0x3b333445,0x3b5381e7,0x3b6d7a48,0x3b7beb93,0x3b8102a7,0x3b82e7f9,0x3b876563,0x3b8e3f9d,0x3b8c1387,0x3b8a6fff,0x3b8902fc,0x3b83fe98,0x3b7f8810,0x3b80ddeb,0x3b6d84c9,0x3b636cc5,0x3b519ded, -0x3b6f94c8,0x3b678ce2,0x3b687373,0x3b689c03,0x3b4fd98e,0x3b4ad163,0x3b472f6f,0x3b38cc22,0x3b25db33,0x3b15f7b3,0x3b0c731a,0x3ad2add8,0x3ad04d38,0x3bc67780,0xbb0437f8,0xba940dc5,0xba8a3362,0xba899b70,0xba895370,0xbabc510d,0xba851443,0xba86ca0c,0xba8eb45f,0xbaad0f20,0xbaaa1b99, -0xba7609d4,0xba8cfbc9,0xbab87c42,0xbae64760,0xbb03734b,0xbafe8c1d,0xbaafd5d9,0xbab29a66,0xbaad3315,0xbac0fdbb,0xbaab44be,0xba95544f,0xba23fb90,0xbae46e75,0xbaf2b921,0xba7ce7eb,0xbace0852,0xbac8a2e4,0xba97812c,0xba92542e,0xba80e5ed,0xba872e55,0xba8fd91d,0xbaa84d71,0xba98463f, -0xba8972d8,0xba6af7a1,0xb9aede7f,0xba035c79,0xba10af19,0xbac82081,0x3a365339,0x3a26ac86,0x37cb41dc,0xbab50f94,0xbaf7b8c2,0xbaa5c426,0xba4cf636,0xba69846a,0xbb001b2a,0xbb535292,0xbb665267,0xbaba6af5,0xbac274b6,0xbac1620d,0xbb152048,0xbafc3b28,0xbb0695ac,0xbaa65e7f,0xbb4170fd, -0xbb2f0a70,0xba85a84c,0xbb4d28f8,0xbb5d46de,0xbafbda89,0xbaa7bfce,0xba04f709,0xba8f5c59,0xba9eca2c,0xbacf9028,0xbb06ec67,0xbae21ef1,0xba43149d,0x383fad26,0x38fec07f,0x38ed055b,0xbaf36217,0x3a7bce24,0x3abf8c3f,0x3a9627b2,0xbabc7212,0xbadbfdfa,0xb9f16643,0x3980a390,0xba9a648d, -0xbb6f9447,0xbbc1dc55,0xbbb09797,0xbaf09ce9,0xbafbf4d8,0xbac5a54d,0xbb2e6826,0xbaf885b4,0xbb10bf7f,0xb92e1a10,0xbb81b07b,0xbb80e167,0xba533903,0xbb6d7970,0xbb366ec4,0xbaf4e383,0xba759a80,0xba706399,0xba0ae837,0xba68c522,0xbaada7cb,0xbb05a837,0xba9ebcb7,0xb9061701,0x3b040634, -0x3a9b7ad8,0x3ad21c8f,0xbad56146,0x3b89d599,0x3bb270c2,0x3b9d30e5,0xba6b5232,0xbb1b31ea,0xbac21d02,0x3a8fea5f,0x3a4c4a21,0xbb14955f,0xbbec7870,0xbbec8b35,0xba952837,0xbaa393ab,0xbac13c17,0xbb5af6bb,0xbb37e00c,0xbb571151,0xba878a05,0xbb9a7b5c,0xbb1b882a,0x39b16597,0xb9338d67, -0x3a3af2f9,0x39145fb9,0x39aad334,0xb8f46184,0xb9201e35,0xb9c5ca59,0xba363d5b,0xbb2d025b,0xbb10a9a6,0xba24a1d2,0x39a6fb07,0x3a7b9b01,0x38cf08e1,0xbb72253a,0x3b177de7,0x3b2edf09,0x3b96519c,0xba553f6d,0xbaea57cb,0x39c381cf,0x3b1ef06e,0xbac76053,0xbc0536fa,0xbc492633,0xbc2647ca, -0xbb308a48,0xbaf17892,0xbabfc5a6,0xbb64df3c,0xbb28da6f,0xbb176cbe,0xba57aef9,0xba83ac09,0x3a842495,0xb873674d,0x38c035e3,0xb92f66a2,0xb9183b27,0xb869ec46,0x384e5c79,0x390067e6,0x38e52db5,0xb89e3c16,0xbae53a1b,0xba661c30,0x3be8eeab,0x3c0b0a6f,0x3c6ee14f,0x3c9b8cc1,0x3cc4678b, -0x3c2a2529,0x3be88f1a,0x3bf93871,0x3ad02023,0xbac66006,0xbb05abc9,0x3b67d61d,0x3c755ba7,0x3cda2504,0x3cc1ad2b,0x3c55517e,0x3b2e1bc6,0xbbbf8436,0xbc1272dd,0xbbd982d2,0xbbd0ec3b,0xba952d04,0x3b1ca3d5,0x39b8d5b5,0xb995ccf2,0xb8c472f6,0xb4dd061f,0x37c67d78,0x38b90c58,0x3618c0cd, -0xb815fcc6,0x37f21ad3,0xb94054ba,0x39b80cb2,0x3ac42a29,0x3b40eaed,0x3a6d7f3f,0x3afbcb28,0x3b580927,0x3a3aeaa6,0xba425fa6,0xbc44c49d,0xbc8b4083,0xbbc0d55f,0xbb20d6ff,0x3bbaf36d,0x3c81b119,0x3b083507,0xbc0a97ba,0xbc8a4616,0xbc432d9f,0xbb96c517,0x39d7b6a7,0x3aa75e47,0xb9571698, -0xbb87fd26,0xbafc8bd9,0xba15ab3a,0xb9388cca,0xb999f143,0x392ece17,0x385d7b67,0xb6025883,0xb7085b6d,0xb8165981,0x3718c314,0xb7ae674c,0x3882651b,0xb7348c83,0xb8bd87c2,0x3aa5714e,0x3ac3ad30,0x3c202661,0x3ca1e9c8,0x3c48b2f2,0x3b8f3eda,0xbb579ef2,0x3bb9c05a,0x3c308382,0x3c25b4c0, -0x3be1b61a,0x383f93c2,0xbbb9f83b,0xbb1f4407,0x3b339ff7,0x3c120691,0x3bb40917,0x3ab4b629,0x3b2bcfc4,0x3a60d6f8,0x3ae0d647,0x3a402618,0x3a75ef4c,0x39c795f9,0x39854cef,0x37f6e2cd,0x37446b88,0xb84a1509,0x3610ae4f,0x3800a84e,0xb79a58bb,0x38518052,0xb8e818d1,0x3967c76b,0xb9c5aaf0, -0x3a21caca,0xbaff0f25,0x3ade4670,0x3c154216,0xbba2f131,0xbb101da1,0xbb606297,0xbc60208b,0x3b80841d,0x3c1ea77d,0x3bc98ef2,0x3c6a3e9d,0x3be2759d,0xbc2b1227,0xbb0f737a,0x3b2d8fda,0x3c5c2f38,0x3b70fbd3,0x39f4858f,0xbab38e1f,0xba337337,0x3a2861c9,0x3b3cfbb0,0x3add2a6b,0x39049bf3, -0x38075f3f,0x36039fab,0xb85dd77c,0x37fda02c,0xb7be8c49,0x3785ebdd,0xb813fbcd,0x38a4d3e0,0xb91b2a2a,0x399520a8,0xba472a47,0x3ac57a56,0xbb455856,0x39ec3cf1,0xbc552cb2,0xbd3c06e3,0xbc9b2e5e,0xbc0d0766,0xbc4579b0,0xbc89b537,0xbc9b1661,0xbc20732b,0x3c1ac256,0x3c851e1f,0x3b80ed5a, -0xb98978f1,0xbc0c9272,0xbc3b3e07,0xbc15d49f,0xbbd1a794,0xbb8b0e6b,0xbb1ae12b,0xbac4a368,0xb923e486,0x3a390cbb,0xba5169b1,0xba5bf8cc,0x399e9568,0xb7f949e0,0x384058c8,0x35feb9d7,0x377e33e3,0xb81c07eb,0x3750f9a8,0xb733c9fd,0x38d3572f,0x3922b982,0x38c76425,0xbbad5911,0xbb3a2c9d, -0x3c9ac9df,0x3cc1f73a,0xba97204e,0xbc278e19,0xbc0083f9,0xbbd7ce1d,0xbb2f6f19,0xbb04e873,0xbbd9a65d,0xbc27e1d2,0xbc05e57c,0xbbcfd11a,0xba98ae69,0x3b1fa929,0x3b355087,0x3b4f2a19,0x3ba0fde8,0x3be0ab5f,0x3c05991f,0x3c095c78,0x3bfc2b44,0x3ba97cba,0x3a845d47,0xb967b24f,0xb81c4332, -0xb8856c24,0xb8543fa1,0x37d3a5e4,0x3796ca6e,0x38bc8714,0xb9198328,0x38aa07eb,0xba2cdc98,0x3a4af4ec,0x3bd039ff,0x3c334aa9,0x3ba0e1b0,0x3b59e981,0x3b84a32a,0x3ba953e9,0x3b0be2d1,0x39463a9c,0xbb2c19da,0xbb8115d2,0xbb80ee5e,0xbb6f92ec,0xbb7f232c,0xbbba2438,0xbbd24e6f,0xbc0896c3, -0xbbc0e6b2,0xbb82a131,0xbb1d1f30,0xbaa6e92a,0xb92fb042,0x3a4ca120,0x3af637cf,0x3b07d875,0x3abefab3,0x39a7c4f2,0x367928d2,0x393f3295,0x38af47ed,0xb82ee926,0xb8cfefb5,0xb8704908,0xb83e03e3,0x39c2d461,0x398edd17,0x3aa531d4,0x3acbb563,0x3b3717f4,0xb96bfe24,0x3a76575f,0x3abf929e, -0xb776b3fb,0x3a4830a7,0xb9bd63b4,0xba859262,0xbb4e3e11,0xbb72cd50,0xbb867134,0xbb5a09c0,0xbaaddb42,0xb797234a,0x3a1e27d7,0x3a34520a,0x3a276efe,0x3a2daaa1,0x3a7e83ea,0x3ac85f86,0x3aed975f,0x3ada5f9e,0x3ac17fef,0x3a87be0d,0x399e05e9,0xb982a221,0xb9677df0,0xb8ae0ff1,0x39327c7f, -0x3968d104,0x398ddc8b,0x39119ec3,0xb9ff3645,0xba89de2b,0xbaf816ff,0xbb169bad,0xbaac27ba,0xbbc92ccc,0xbbda57e9,0xbbc04abc,0xbb9a3553,0xbb96c181,0xbb78a3c3,0xbb31c9fa,0xbaadecdc,0x39964b14,0x3ab16147,0x3b08b1a1,0x3b0bdc06,0x3b4ed5c1,0x3b8e6187,0x3b80c5be,0x3b79b8a4,0x3b5044dd, -0x3b5898c8,0x3b445de5,0x3b5535f6,0x3b29fed8,0x3b2087f5,0x3aebc3cb,0x3a94b5f3,0x39dd5509,0xb8902c65,0xba0b523a,0xba94db16,0xba90bf73,0xbae0a997,0xbaff9c54,0xbb0fb4b3,0xbb39a579,0xbb7f7dd9,0xbb96b5df,0xbbb0c819,0x3a4e4e6b,0xb9197e92,0x39c61c0b,0x3a8c06b8,0x3b12e5d3,0x3b1021fe, -0x3b321817,0x3b21a115,0x3b276ad5,0x3b42d152,0x3b7038e3,0x3b973b61,0x3ba6d438,0x3bbc0e3e,0x3bb20f95,0x3baef1ff,0x3bbd9e83,0x3bb91d43,0x3bb477ed,0x3bb76b66,0x3bb43693,0x3bafcd1b,0x3bab5e5a,0x3ba2df40,0x3b9c140a,0x3b8a16e4,0x3b83e4c0,0x3b4ef5fa,0x3b33497c,0x3b11a464,0x3aaace24, -0x3aa58028,0x3a198ef2,0x3a87e277,0x3a98b55e,0x393e43dc,0x3ae07235,0x3a919627,0x3abdba4e,0x3ae205c0,0x3b01a6d9,0x3b09e3c6,0x3b25fd38,0x3b474a4f,0x3b686e6d,0x3b796043,0x3b801408,0x3b81f78f,0x3b860e34,0x3b8eff6d,0x3b8ac399,0x3b89c2a4,0x3b874288,0x3b8192a1,0x3b7ecb1c,0x3b7d1e3d, -0x3b7b9f76,0x3b7ef70d,0x3b81b811,0x3b6afd52,0x3b6e1d9d,0x3b7e0ad4,0x3b808725,0x3b6ef30c,0x3b68a26f,0x3b643e8f,0x3b53866a,0x3b40cf23,0x3b254168,0x3b12981e,0x3b167740,0x3b0041da,0x3bd04d38,0xbb196d61,0xbabb6bdf,0xbab62bac,0xbaa479ec,0xba9e1937,0xbad35e9a,0xbaa08787,0xba990eb4, -0xba79b21d,0xbab12b00,0xbac3e26d,0xbad228fb,0xba9c9769,0xbab846a9,0xbaf0ef05,0xbb0eab6e,0xbb133c47,0xbaf7d696,0xbae32334,0xbad2e7d2,0xbadba106,0xbac71aec,0xbab3ac1a,0xba980465,0xbaf4f8b0,0xbaff09c5,0xba9dbbd5,0xbada4ed9,0xbaceff82,0xba99ad35,0xbaa4ead3,0xba95fb63,0xba7cb9ad, -0xbab77a3c,0xbacc3689,0xbac15f47,0xbab4508f,0xba9bf225,0xba44e576,0xba3c8037,0xba6bace3,0xbb0f1b00,0xb9b4f485,0x381e4921,0x3a2ee105,0xba901ade,0xbb03819d,0xbb35f1ea,0xba880fd5,0xba5b9208,0xbb12930e,0xbb6e136c,0xbb89643d,0xbb2ed657,0xbb1171aa,0xbb02870d,0xbb312cb0,0xbb1b9c58, -0xbb1f182b,0xbae14ca1,0xbb29311d,0xbb1caf21,0xbabe6570,0xbb552a9f,0xbb631bc5,0xbae89bd9,0xbab24a99,0xba2f47c9,0xb99b74be,0xbaba1d35,0xbaed9429,0xbb01e304,0xbaf64a9c,0xba98fc29,0xba7cef69,0xb91777e9,0xb96dbb65,0xbb1dfc14,0x383b4591,0x3a309f2a,0x3b2776e7,0xba7a47f0,0xbae4df57, -0xbb5a739c,0x39f4f37d,0xb9eef78c,0xbb6a092e,0xbbcb2e85,0xbbd3ba26,0xbb8c03a1,0xbb544874,0xbb196f10,0xbb59b2bd,0xbb1362d0,0xbb0284f1,0xba14bd04,0xbb5e7827,0xbb375577,0xb997eff1,0xbabd1152,0xb9dc8b09,0xb987a11d,0xb72ef5e5,0xb993b548,0x3a01f611,0xba4eb0e0,0xbae14049,0xbacbff94, -0xbaa730e6,0xb8ab098a,0x3a8d3d8c,0x3a88b64c,0x3a7055c1,0xbb4bb13d,0x3aee8c3a,0x3b7a62b9,0x3bdef580,0x399d5bc0,0xbb0ec580,0xbbc3e384,0x3a703f5c,0x3ab2b7a1,0xbb237252,0xbc025c7d,0xbc114309,0xbb90b783,0xbb5066f6,0xbb20e3a3,0xbb914fb7,0xbb53f522,0xbb472362,0xbae4330e,0xbaded153, -0x39a4ae22,0x39e784c3,0x397f4415,0x39c0cb59,0x391337b3,0x3886ed80,0xb8124125,0x36880010,0x382e986b,0xba07146b,0xbaec31ef,0xbae5e0ac,0xbaac6754,0xba94f24b,0x3a0ab7a5,0xb8901768,0xbb7c29ea,0x39bd0dd0,0x3ae1f259,0x3bdc4503,0x39e2cafe,0xbb17ec77,0xbb9aa0d1,0x3b297e85,0x3a3292a7, -0xbbe77898,0xbc4cfc15,0xbc4a5da8,0xbbf77dfa,0xbb9698c5,0xbb553ee8,0xbb963fb6,0xbb3d79eb,0xbacfd8a5,0xb81e1821,0x3964809d,0x395c492d,0xb9b6a345,0xb885673c,0xb979afb5,0xb6897629,0xb896838a,0x38084ca9,0xb8130614,0xb7a3754c,0x39afebd2,0xba445db1,0xb9f40e65,0x3bb38489,0x3bef89e6, -0x3c0bfabd,0x3c4adf5e,0x3ca3c9b4,0x3c38a11d,0x3c12a9c8,0x3bead2f9,0x3b95a681,0x3b3f15c1,0x3b070bad,0x3b524cad,0x3c385167,0x3ca26604,0x3cc9cf78,0x3c90e590,0x3bf153cd,0xb945472f,0xbb971381,0xbb8f70dc,0xbb5e08c0,0x3a3df5a6,0x3a6703fb,0xb9dd5586,0x3783ec40,0x38b6e5c3,0x3899e3ba, -0x38beac90,0x37589496,0x3831aac6,0xb7378ff7,0x363da8ec,0xb76d8301,0xb8bc8085,0x3927563c,0x3a315b07,0x3a8b2378,0xb9b737c1,0x3b8be6c5,0x3b9e6e8c,0x3b8af002,0xbbc31eca,0xbc38bd50,0xbbda72c8,0xbb18a1c6,0x3b903d89,0x3c4b9b4e,0x3bbec140,0xbb0a2784,0xbc4db8e4,0xbc4ab4f7,0xbc01023c, -0xbb900cf1,0xbae50f2d,0xba936408,0xbb130d69,0x38a69977,0x39233ade,0xb9c643ae,0x3909689e,0x37f53090,0xb865d37b,0xb876d533,0xb807556e,0xb77d0545,0xb600e4d4,0x3636180d,0xb70f2bbd,0x3818ba46,0x38205ff7,0xb995e6de,0x3b15652f,0x3c2c7bc4,0x3c9b4fef,0x3c343b45,0x3b5343cd,0xbbbbc308, -0x3b6c83da,0x3c0cf702,0x3bffa7d1,0x3c099646,0x3b467c10,0xbbc17738,0xbb664d69,0x39c261d3,0x3bd8fd4a,0x3bf1c1ad,0x3b721113,0x3b91b465,0x3b1fc103,0x3b4a9187,0x3a9bdcf2,0x3a3b23ec,0x38ec24d3,0x3895f874,0xb3da9dc9,0xb815f594,0x37e944b7,0x37b18276,0x3756f070,0x3661e91a,0xb6db2932, -0xb6ffa0c5,0x3825a8ff,0xb9455c8b,0x39d2d82b,0xba37ee52,0x3abc1f52,0x3bb490f9,0xbc0fc65d,0xbaa661b8,0xbaa93b70,0xbc3deae9,0x3b4c6575,0x3bff060e,0x3a45c987,0x3c47b214,0x3be34ac9,0xbba19f88,0xbb9d20d7,0xbac24480,0x3c1db729,0x3bb92aab,0x3b91f903,0x3a42562a,0x3a8b32b7,0x3a112ed4, -0x3919e675,0xba671799,0xba39af9d,0x39839846,0xb92ca66c,0x38b80e2e,0xb7caa6b3,0x36e55684,0x375a74df,0x37003f8e,0x380a64c7,0xb75166a3,0x38fdfeeb,0xb947cf26,0x38f8642c,0xb98836cf,0x39701f8a,0xbc62aa91,0xbd37eaaf,0xbc4825f2,0xba28726f,0xbb4063f8,0xbbe21bf2,0xbc6005d7,0xbc941a95, -0x3b036265,0x3c3e73af,0x3c2a0f63,0x3b136a38,0xbbdc28be,0xbc19271e,0xbc1942e0,0xbbf9b893,0xbbc70045,0xbb953e1c,0xbb864872,0xbb492d49,0xbace5e2a,0xbab0268b,0x39659237,0x361dd7fc,0x36871dfe,0xb8176704,0xb7b083b1,0xb84d3abe,0xb79e8665,0xb879d3a8,0xb74c7948,0xb8e8bba4,0x38d8ebff, -0xb7a318c4,0x3896540b,0xb8df6473,0x3b1eebb6,0x3b7760b1,0xbb634f1a,0xbc02b131,0xbc18230f,0xbbda4c29,0xbb05a5dc,0x3a7238a7,0xbb7f3035,0xbc02552d,0xbc0ae6f7,0xbbc0efb5,0xbb0abb32,0x39a226cd,0x3ae06c04,0x3b1b61c3,0x3ba4ce45,0x3bd59632,0x3be97e77,0x3bded4f1,0x3b99a60b,0x3b1775db, -0xb9db06f1,0xb892b41b,0xb784db27,0x3893298b,0x38b19d5f,0x3875cb3e,0x390bda1d,0x377d2f82,0x394a0206,0xb8f8af5d,0x39e07042,0xbaa497b8,0x3aeeb91a,0xb761b710,0x3b8c3e89,0x3b61086e,0x3b91fb29,0x3bce31d1,0x3b547b31,0x3ab13873,0xbb00a903,0xbb634e70,0xbb992489,0xbb9128ec,0xbb73a3a1, -0xbbb43457,0xbbb8e7d3,0xbbf2956c,0xbb9dbc97,0xbb3e1e6f,0xbaf027b7,0xb86b5395,0x3a9fea3c,0x3b1d4c43,0x3b3d380b,0x3b048c29,0x3a2ab5e5,0x3885e5a2,0x3865a1b7,0xb91caec4,0xb951fea2,0xb91739f6,0xb940e41a,0xb96663f5,0xb8e70c50,0xb97a18c9,0x36185e3f,0x3902935e,0x3b057766,0x3b2efd02, -0x3ae84421,0x3b3248e1,0x3b2f6bdc,0x3a6f3906,0x3a5d5ef6,0x38e9c19f,0xb9f3c6f0,0xbb0c32f9,0xbb5ce045,0xbb9d403e,0xbba536c9,0xbb684c20,0xbb2e4e8e,0xbb0c0425,0xba978c7d,0xba3afdc1,0xb9be0c24,0x39a47f00,0x3aa8b6c7,0x3afa30b2,0x3ab130b6,0x3a2b8e4d,0xb8111270,0xb944814a,0xb8834f1f, -0x39aa6a71,0x39acfc47,0x39d31925,0x39be1186,0x39d52838,0x39bdd975,0x39d10e08,0x3918e746,0xb9b90a54,0xba7de5f6,0xb91c3e26,0xbba8fe6e,0xbba876dd,0xbb9262f4,0xbb632d04,0xbb508ec1,0xbb445099,0xbb24516d,0xbad66e2e,0xba0a15ca,0x39deec6e,0x3a76658e,0x39a7aeed,0x3a12cb78,0x3a893ba3, -0x3a697fc4,0x3a5f1cad,0x3a7903a2,0x3ab0cd27,0x3a42c108,0x3b000f98,0x3a857935,0x3a40342c,0x37c86934,0xba24b618,0xba77560f,0xba5a42de,0xba6603a8,0xba3e1cb9,0xba3205bd,0xba659c21,0xba9ba818,0xbaad36f2,0xbb0c333a,0xbb520279,0xbb580586,0xbb7e8ce8,0xbab11338,0xbab1666a,0xba8dea8e, -0xba3720a5,0x38e02251,0x39386e63,0x3a4a9d68,0x3a28d821,0x3a30a71c,0x3a683fc0,0x3abf7734,0x3b223809,0x3b590a8f,0x3b82ebb4,0x3b890aed,0x3b8a2f42,0x3b927354,0x3b9731d7,0x3b9dea31,0x3b9b229e,0x3b950049,0x3b706677,0x3b4f16ae,0x3b2a1b10,0x3b048937,0x3a894236,0x3a42062a,0xb92269de, -0xb9a4d0ec,0xba64f73a,0xba9ed54b,0xbabf0b0d,0xbad8e33e,0xba8a40b3,0xbac20026,0xbaeda0a2,0x3a00137a,0xb855c1ed,0x391cc785,0x39fdb825,0x3a3c7ec6,0x3a4a7dc5,0x3a84b766,0x3aafbbec,0x3aea7044,0x3b06b829,0x3b0ca667,0x3b09cf43,0x3b0620dc,0x3b0d7ae9,0x3b04a309,0x3b05c5c8,0x3b03099f, -0x3af8aac1,0x3af95cb5,0x3af993a8,0x3b08a192,0x3b17492a,0x3b2ab879,0x3ae6b300,0x3b017547,0x3b1bc8fd,0x3b213d70,0x3b149876,0x3b0cbc47,0x3b072f84,0x3aed1ab7,0x3ad1946e,0x3a90f342,0x3a50e6a5,0x3a9d43ae,0x3a4b2bdd,0x3b619fcd,0xbb03af06,0xbaa730c7,0xbaae601e,0xba94b768,0xba8afe2b, -0xbaaeae4c,0xba8ee998,0xba847154,0xba30e8ea,0xba92eec5,0xbaaf843d,0xbadd1241,0xba8c2ed8,0xba956c99,0xbac45fef,0xbae5f006,0xbaf87b4a,0xbaf313ea,0xbad3c995,0xbabf6747,0xbab83bbf,0xbaa41e17,0xba9e59ca,0xbaa29821,0xbab87dd6,0xbac23489,0xba9b10cd,0xbace2937,0xbac900f5,0xba90ef75, -0xba979eb0,0xba819a1f,0xba2ae275,0xba9aaa4f,0xbaa63d5e,0xbaae8626,0xbaa6a7c4,0xba9e8bf1,0xba870907,0xba4e3db7,0xba734e3e,0xbafc4004,0xba73f87b,0xb9dec66d,0x3a59a5f8,0xba65b10a,0xbaefd142,0xbb4e26de,0xba9fff3e,0xba52fe0f,0xbaf7dd95,0xbb326033,0xbb5b6dcc,0xbb3a782f,0xbb11a712, -0xbaf608f8,0xbb0c9fad,0xbafa2796,0xbaecd4d6,0xbac4dae9,0xbb05bb1c,0xbaf13329,0xbaa37c76,0xbafb544d,0xbaed1c04,0xba43789f,0xba4a638c,0xb998d701,0x3983c6d6,0xba9b28ad,0xbadaa62c,0xbabf20c8,0xbac86ef2,0xba96facb,0xbad16a8a,0xb9d3c25f,0xb9ddcb26,0xbaf65ce3,0xb9f4bd42,0x36cb929d, -0x3b3220c9,0xba426cf6,0xbadf5ae7,0xbb918301,0x36117dc7,0xb97284d8,0xbb31d14d,0xbb940f01,0xbba956f5,0xbba0b857,0xbb5ed8eb,0xbb1dc07a,0xbb319c5a,0xbad0d633,0xba96e1cc,0xba8ef144,0xbabddb71,0xb9829a76,0x3984318f,0x39b08800,0x39d0f219,0x3977f493,0x3930f100,0x3500969c,0x39500d37, -0xb751e314,0xba801d25,0xba9edecb,0xba81147d,0xb988368e,0xb9bb1aed,0x3a07ca50,0x39711d07,0xbb2ecf27,0x3798ffae,0x3adf78ae,0x3bcd3375,0x39bb5811,0xbb0d4635,0xbbf2ec1a,0xb98ff306,0x3a60bedf,0xbb0b07a7,0xbbb6806c,0xbbe060ff,0xbbb22b17,0xbb73fe70,0xbb23c6e8,0xbb65d71e,0xbb112c5a, -0xbaf67ce8,0xba1ab523,0x39efee92,0x3948da18,0xb8a5ba46,0xb8b3ed57,0xb904bd60,0xb9048cc1,0xb804314a,0xb4e9203c,0xb8be0e18,0x38606072,0x39505948,0xba1a42a9,0xbaab0031,0xbabe41c8,0xbb128ccf,0xb8f6ba52,0xb930251a,0xbb1ab1ba,0xba28b697,0x3a6da423,0x3bcc262d,0x39ee6227,0xbb306aac, -0xbbe3b26c,0x3a9560f8,0x3a99b8f0,0xbb9f7724,0xbc10437a,0xbc235f58,0xbc1487a1,0xbbb4f407,0xbb77202b,0xbb72d00a,0xbb0664ac,0xb9d5bbe7,0x39d84f6b,0xb93f6fe4,0xb901a048,0x37e1a59a,0x384e5159,0x3893e33e,0x37f6fa38,0x382b27d7,0xb71c9a39,0x389b5efe,0xb88bcf12,0x38050908,0x39184b45, -0xb87c20e7,0x3b69a10d,0x3bb77819,0x3b49e603,0x3bb2f346,0x3c541149,0x3c0c9a12,0x3be26bf2,0x3b5398c6,0x3bb319d0,0x3bafd370,0x3b39f5d7,0x3ae190cb,0x3bb4faa0,0x3c3119df,0x3c97495e,0x3c808d05,0x3c13d22e,0x3b7f037e,0xb9ab1e32,0xbae0f75b,0xba049c06,0x3a209c0d,0xb98c42a0,0x38db602d, -0x38a4138c,0xb7515314,0xb7fb36b2,0xb8192a10,0xb774afc3,0xb7bf0fb9,0xb697a2ab,0xb71b65b1,0x3704dc86,0xb7e51728,0x36c05864,0xb9624837,0x39e56ae6,0xbb055676,0x3b510565,0x3bc1cede,0x3bda8b6f,0xba70c86d,0xbba1edf8,0xbbad5487,0xbad59596,0x3b1ebbab,0x3be7f99c,0x3bd23c82,0x3afcc91e, -0xbbe10bdb,0xbc2d40dd,0xbc1e71b9,0xbc0256f4,0xbb92f150,0xbb23c76c,0xba4cdfd8,0x3a1d1e5f,0xb83c61dc,0xb889150f,0x383a4839,0xb8bce235,0x37e4a57c,0x37657a96,0x37b292b0,0x372f440c,0x37059fb6,0xb7173476,0x383be411,0xb88bc8f6,0x3914f7b8,0xb97391fd,0x3a031a49,0x3bf334af,0x3c5d142a, -0x3bfc655c,0x3b0a1f40,0xbba26416,0x3a86ec51,0x3b8efde4,0x3ba332f6,0x3be6310d,0x3b8b83a9,0xbb7b2953,0xbb3dcde1,0xba91e33e,0x3b4b8619,0x3bd50c17,0x3b85e505,0x3baf0f9b,0x3b3ab4c0,0x3b4c9890,0x3a95721d,0x397d63b4,0x37b58255,0x38374e00,0xb6a56eaf,0x380bb535,0xb7004b49,0xb7228339, -0xb6c5505a,0xb747dd0f,0x372dd25f,0xb7baf110,0x377d64ad,0x362adf26,0xb84c4fee,0x391da7c6,0xba108e48,0x3aafa277,0xbbce7b55,0xbabc7de9,0xba3c18fb,0xbbd48be3,0x3aabd1c7,0x3b93342d,0x3986b16e,0x3be80c26,0x3b9a1a9c,0x39a1300f,0xbb7caa89,0xbb272ce3,0x3b925ef6,0x3bb9706e,0x3bd7344e, -0x3b447942,0x3b23114e,0x3a793450,0xbab156fd,0xbabd93d2,0xb83cb7db,0x38562555,0xb8465352,0x3805c1a1,0xb7861926,0x37951719,0xb6e352f3,0x35878160,0x35abfe9b,0xb62d8958,0x36abdc0c,0x3680251a,0x38906777,0xb8abb919,0xb90461eb,0xbc24da68,0xbcdec61d,0xbbf35f8a,0x3972939f,0x3b7d0432, -0x39709c98,0xbbc2e845,0xbc6b3596,0xbb6eeb8d,0x3b919397,0x3c4f56bd,0x3b94eccc,0xbb1abf3e,0xbbbbeb19,0xbbe2d94b,0xbbd1d954,0xbbcd5959,0xbb992992,0xbb8d2132,0xbb6e3aaa,0xbad6b851,0xb962b8dd,0x3940a1f9,0xb8aca9e6,0x37a9a6fc,0xb7c1b8dc,0xb554a12e,0x369113f3,0x36e195ba,0x3614d3a7, -0x366814b6,0xb5ed5390,0xb8152fc8,0x383ee05c,0xb980d58a,0x3aafe63d,0xbbd08fde,0xbc4d870a,0x3a6d10c2,0x3aee9018,0xbb3f01f4,0xba779382,0x3a82ac30,0x3af62c47,0xbaa6dbb1,0xbb9866cc,0xbbcd031b,0xbb94e632,0xbb22f978,0xba98faad,0x3a812d22,0x3ad15b45,0x3b8394d2,0x3b9b0141,0x3ba30936, -0x3b9e418a,0x3b216ba6,0x39cf0161,0xb976a6bb,0x39076522,0xb79bc757,0x383196c0,0xb69d3c23,0xb6a4294b,0xb78befad,0xb7bef89c,0x37620243,0xb803cd23,0x38e5df36,0xb8b3c100,0x39b2f6e5,0xbaf60019,0x3b5f6099,0x3b33ea1e,0x3b4c663b,0x3b8c049b,0x3b392c7a,0x3aaee671,0xba9d6d69,0xbb0674b2, -0xbb6af6d6,0xbb63c7b5,0xbb2168db,0xbb821893,0xbb7197d1,0xbb94ba9d,0xbb227e8c,0xba82b431,0xba3c5504,0x3aa1d4ee,0x3b16c580,0x3b4feab0,0x3b53987a,0x3aa17485,0xb93947f1,0x385fe5e5,0xb8bdfc3e,0xb598bf89,0xb7a8cb63,0x37814058,0x38385103,0x375f9c1d,0x3827bc97,0xb89510cc,0x374ac35f, -0xb946396b,0x3929e6c1,0x3ac60d05,0x3b261103,0x3b4b6253,0x3b2d3a5c,0x3aa47b9b,0x39e54687,0x38cbba83,0xb8ee8db6,0xba4af23c,0xbb02ac15,0xbb6b316a,0xbb934f43,0xbb7421b2,0xbb59a0be,0xbb3774ab,0xbad1f8d2,0xba810042,0xba2b864e,0xb84e325b,0x3a50f6bb,0x3aabdf86,0x3a1f92c4,0x38e3c1b0, -0xb817d6dd,0x3917ea22,0x3907f033,0x3881c969,0x35d27683,0xb80b68ff,0xb8d42796,0xb864d087,0xb8074461,0x37cfd85d,0x39479cfc,0x38f5acd8,0x390ec241,0x3a8a0433,0xbb38ea88,0xbb1729c6,0xbb0266df,0xbac5cd09,0xbab4519e,0xbab9fd97,0xbabf0bf3,0xba9e03ed,0xba3805c2,0xb872aa05,0x39850498, -0xba1c3dd9,0xba7155cb,0xba953414,0xba9bd958,0xbaa5c793,0xba513edb,0xb9d1cab5,0xba9abb31,0x393f93db,0xb9a0e6bc,0xb9e8f7d5,0xba308da4,0xba2b0c9c,0xb95b4334,0xb7324352,0x3891979e,0x391fbe2e,0x3987dfe1,0x39839cb9,0x392ab050,0x3939b159,0xb96d271b,0xba91eced,0xbaa0830b,0xbae270d5, -0xbabd03e7,0xba8bfc83,0xba963887,0xba848cc1,0xba364227,0xba28a894,0xb962db99,0xb954fc5e,0xb9a8dc02,0xb9ed6695,0xb990a25a,0x39be4e3b,0x3a8eb2c8,0x3ac6dff8,0x3b085e44,0x3b15328e,0x3b1c058a,0x3b329481,0x3b514ff3,0x3b47ede5,0x3b379283,0x3ae7728e,0x3a9120de,0x39cfd229,0xb952b0ec, -0xba12c324,0xba2b6764,0xba7c7f3c,0xba8a5c53,0xbabcd820,0xbaa8de5b,0xbafafd67,0xbb04bc60,0xbad988ae,0xbaff8793,0xbad69a29,0xb9e52ac5,0xba2eba34,0xba17215c,0xb9b10ddf,0xb94e9938,0xb94c3031,0xb91d9e3e,0xb8474829,0x39701c14,0x39ee2c65,0x3a0c9ea8,0x39ea1d3a,0x3991564a,0x395869c8, -0x38c71e8d,0x38f29471,0x38cbe5b1,0x388e4913,0x38e18734,0x391483ac,0x39d31550,0x3a2927ea,0x3a7b640c,0x39d43637,0x3a104e73,0x3a1e3279,0x3a03ad34,0x39cff1a4,0x39866a88,0x390a2419,0x38534e33,0x37c8479e,0xb848e895,0xb93650d1,0x36f3387f,0xb9a16b18,0x3a40c77c,0xbaccdcbc,0xba7ef5be, -0xba8ae340,0xba6d71aa,0xba5c5566,0xba74064f,0xba616fae,0xba554110,0xba10d71f,0xba6aafa5,0xba8c67d9,0xbab15991,0xba6a6270,0xba69d2d0,0xba909911,0xba9e03be,0xbaae2be7,0xbabdd7fb,0xbaa62857,0xba9520b6,0xba849676,0xba6d857b,0xba67811a,0xba8f1d8a,0xba7a4cf2,0xba87f276,0xba85f2e9, -0xba99f160,0xba928650,0xba58a920,0xba564181,0xba33e975,0xb9d3972c,0xba68c244,0xba76d6be,0xba850301,0xba803913,0xba959e08,0xba9f5b6a,0xba6280e0,0xba651339,0xbaa76ba8,0xba8d5dcc,0xba467a01,0x39a7d222,0xba67e405,0xbace647d,0xbb26c09d,0xbaaef69d,0xba774091,0xbabd187f,0xbad0880e, -0xbb079ed4,0xbb131652,0xbaec8aef,0xbabf8800,0xbaad963f,0xba883927,0xba7b81a1,0xbaa719ee,0xba879401,0xba0640da,0xb9771f92,0xb9b43fcc,0xb98b0690,0xb89791c3,0xb93f6c99,0xb8dae757,0x39076f43,0xb9eb2086,0xba839892,0xba9278fb,0xba8dcbc7,0xba67d238,0xbad9d5d5,0xba297f6d,0xba129c2e, -0xba806bd6,0xba28bbdf,0xb9f9f209,0x3acd60b3,0xba6ad189,0xbad31dc0,0xbb6f9691,0xba3bd21d,0xba163c3e,0xbaf1eecd,0xbb24e9ec,0xbb48829e,0xbb7d18da,0xbb316e0b,0xbb02e92b,0xbad29166,0xba283af4,0xba0c69cb,0xb9a00e04,0x3955e71c,0x392059df,0x38daa721,0x39046438,0x38e96772,0x3823c66c, -0x3873091f,0x382dd90a,0xb867c8df,0x393e7198,0x38f69fa4,0xb9afb1c1,0xba193a2d,0xba2533ed,0xbacb1b35,0xb97e7023,0xb9c9982a,0xbaade084,0xba505548,0xb80121d7,0x3b6f0433,0xb9ce0062,0xbb0d07ba,0xbbbdf671,0xbac5616e,0xb9a3d5d9,0xbada3edb,0xbb2e858f,0xbb71cd4c,0xbb8d893e,0xbb4b5e76, -0xbb02421b,0xbae135b2,0xba583801,0xb965d8d1,0x395350fb,0xb8411e69,0xb89db8ae,0xb8a4b860,0xb7f9533b,0xb86890e0,0xb75b8501,0xb8120c1e,0xb78ae84a,0x361d3c7d,0xb8867c3c,0x34a225ab,0x393348bb,0xb9d9a0c8,0xba213fde,0xbb2202e4,0xba254545,0xb9a198af,0xba1f39cc,0xba47a8c5,0x39470f6a, -0x3b6a4c4e,0xb9e0cd14,0xbb2f72d0,0xbbbe7406,0xba104c75,0x396a9149,0xbb3c58fe,0xbb92077b,0xbbbb6dd1,0xbbea6433,0xbb990a5d,0xbb591432,0xbb051e12,0xba2d688d,0x38cc4bdc,0xb89185e7,0xb747ebf7,0x3865a6c9,0x37da0354,0x375505d0,0x3787f9ab,0x38002013,0x36cfbe56,0x37aece0e,0xb7bce8be, -0x38601e7a,0xb8563ac6,0xb81b3795,0x3988fdb4,0x3aa04e60,0x3b4f1520,0xb7449928,0x3a86b63a,0x3bb77612,0x3b8ccb1a,0x3b56fd7a,0xba342f24,0x3b93855f,0x3bae9db0,0x3aec2591,0x38c15e0a,0x3a75e340,0x3b832f93,0x3c1ff433,0x3c20eb2a,0x3c051939,0x3bb49af5,0x3b20a27e,0x3a6148ea,0x39d59a2f, -0xb89cda25,0x38368b12,0xb6b5fa1a,0xb802bf87,0xb79548c2,0xb6262603,0xb6d7af48,0xb7385be8,0xb6524736,0x350e4ab0,0xb772b206,0x36d009a1,0xb78af7c3,0x38c61929,0xb9c19e9d,0xb9a347c5,0xbaa5710a,0x3ae85e90,0x3b984905,0x3bc5c30d,0x3af7ca22,0xb9c7b734,0xbb56ce39,0xba885afa,0x3a4e5800, -0x3b4fc65a,0x3bae870b,0x3b65ba6d,0xbb1796bf,0xbbd2c748,0xbbfe2c63,0xbc05739c,0xbbb12187,0xbb67aeaa,0xba807e7a,0x38623080,0xb8d56c97,0x3833b465,0xb7e5a4e1,0x3814ba77,0xb5a5ae89,0x37380d0c,0xb5196e83,0x37159951,0xb6bd8c23,0x3791fc94,0xb7f910f0,0x3882d03a,0xb8b03a09,0x38d6f4dc, -0xb80f2b9a,0x3b07eefb,0x3be98dd3,0x3b7b83b4,0x3a9f0e83,0xbb622dc2,0xba8625d7,0x39965068,0x3b074d46,0x3b81ff1a,0x3b5d7da3,0xbaa64a50,0xbaf389ff,0xbadf45f9,0x3a0af286,0x3b6d121f,0x3b2c8e7f,0x3b91300e,0x3b0d481c,0x3b11e471,0x3a1c584c,0xb6cda753,0x36e6f5ae,0xb79264c9,0xb5675179, -0xb72b89a3,0xb59b7830,0x35f69e22,0xb6f559d0,0x36f3f176,0xb78500da,0x3818ea77,0xb89d2ff3,0x39173770,0xb98c387c,0x3a03749d,0xba8025a8,0x39133972,0xbb68de78,0xbaf1e96f,0xba82df81,0xbaebdf66,0xba8a327c,0x39df4e9b,0x3a361b32,0x3b1930b6,0x3afa094c,0x3ae78786,0xbb06716b,0xbafeb209, -0x3a541465,0x3b6241c0,0x3babc213,0x3b768475,0x3b36ecb2,0x3abffa1a,0xba89ee9e,0xb99f983f,0x38c1eca3,0xb855b5b2,0x380abd64,0xb79a9a68,0x374d3ff9,0xb703e5f2,0x35e8bc95,0x33cca568,0xb68556f0,0x360f70b7,0xb6a24eb0,0xb4d2d06b,0xb72efabd,0x3807117c,0xb94b67a5,0xbb205a34,0xbc35138e, -0xbb97ccb6,0xbaea54c1,0x3be425d1,0x3b063426,0xbad2caab,0xbbe445ad,0xbbb09427,0xba8da4d6,0x3c0b74f4,0x3ba484b4,0x3accdeb3,0xbb1d4708,0xbb665477,0xbb7de044,0xbb9c0ddf,0xbb53bb02,0xbb399cdf,0xbb1920e4,0xb95f07bb,0x391a0ff8,0xb89af31c,0x37ca457f,0xb7294efa,0x374a5366,0x360b3c4e, -0x36ef9d68,0xb666c5ab,0x37a45920,0xb79afb76,0x385303c9,0xb8b8601c,0x392110a4,0xb9e43a92,0x3a998530,0xbb711d82,0xbc49f543,0x3bc2dd49,0x3c0e679e,0x3b91f93c,0x3b9ab04a,0x3b8ad85d,0x3b27a1ea,0x39677672,0xbb116932,0xbb717d7e,0xbb6f9220,0xbb3a040a,0xbb0595fd,0xb8d25b0a,0x39e1a6a5, -0x3b073a36,0x3b1eba32,0x3b2cde7a,0x3b45e226,0x3a268905,0xb9a4649e,0x38d8c2c1,0xb80068f6,0x36beeeca,0xb7b7254d,0xb6efc34d,0xb6b3121d,0xb785e7ac,0x35bc96ba,0xb80cdcb2,0x372d5ae5,0xb883a67c,0x38ce24f5,0xb96889a3,0x3a6a82f5,0x3b08c3fa,0x3aa804a4,0x39926797,0x39931456,0x3a108ce5, -0xb9ee9d4b,0xbadc4283,0xbadcbe6c,0xbb169bbb,0xbb06aa40,0xba9db72a,0xbb064562,0xbaec1b16,0xbafd8a04,0xba3e368a,0x396fef91,0x38b85d07,0x3ad5b3a3,0x3b08198c,0x3b2f7fb8,0x3b02eb38,0xb8d052dc,0xb8696813,0xb7529b16,0x379a3078,0x37962825,0x37f0fa61,0x374b2175,0x378a5c73,0x37f6e65a, -0x3791309e,0x384ada93,0x377de714,0xb7b129ba,0x3876a5f4,0xba0e7b29,0x3b095d02,0x3b24dff6,0x3ad305c9,0x3a3adb4c,0xb9b59408,0xb9fd7343,0xb9ea8c95,0xb9ef539f,0xba968e3a,0xbb0ed28e,0xbb4df505,0xbb3ac637,0xbb2de72e,0xbb0731eb,0xba9e485b,0xba2aaa8a,0xb9ec2be9,0xb91d812f,0x3992fa25, -0x39ce7bc3,0x380c4877,0x370eedf8,0x38cda93c,0x36371ba4,0xb8540cbb,0xb83cde91,0xb85b5358,0xb831e416,0xb82a28c1,0xb8869b0d,0xb89fb7bf,0xb8c1e9b5,0xb8abfa49,0x36b59d46,0xb8d18c08,0x39ecab01,0xba501feb,0xb92668b9,0xb8c3e110,0xb805539c,0xb84a1810,0xb9896c98,0xba3865d9,0xba8400cc, -0xba89512d,0xba5f9f8b,0xba4eaf39,0xba99aee6,0xbabe93b5,0xbae7b285,0xbaf3d083,0xbb021f30,0xbad44835,0xbab85816,0xbb02cf3b,0xba9105a4,0xba82e053,0xba248d45,0xb93bd89e,0x3897bd31,0x38b0a4e1,0x388d0b9c,0x38a646dc,0x38963139,0x388b197c,0x39082f9a,0x38fbe327,0x391efb25,0x39403efa, -0x38d8ccc5,0x382570a1,0xb909937b,0xba8fab74,0xba6958d6,0xba997ba0,0xbaa9eaf2,0xbab5bb95,0xbaad7296,0xba8d731b,0xba708c09,0xba831950,0xba9ac6ff,0xbaa45c4a,0xba923619,0xba55a76b,0xba3507a0,0xb919f691,0x38e737a4,0x38f3c923,0x39e819f5,0x3a687228,0x3a3f7a90,0x3a1ce8f6,0xb8ff9800, -0xb9ead787,0xba106283,0xb9b47abe,0xb92f8e16,0xb999b45e,0xb91ce8c2,0xb9bb24a3,0xb9b854f9,0xb9865645,0xb9f4a34f,0xba3305fe,0xba657932,0xbab2ad62,0xba95361d,0xba5ce455,0xba5dc9e2,0xba4eea2b,0xba28e5ae,0xba1aee6f,0xba206365,0xba3b9c57,0xba50cc56,0xba3f4ba6,0xba23b75a,0xba14a089, -0xba1fbaab,0xba3e2bc4,0xba5e19d2,0xba71dbaf,0xba769985,0xba7b60e9,0xba78a624,0xba6e8e11,0xba674e66,0xba241ce3,0xb9d26bd5,0xb9666715,0xba0f2c5c,0xba168172,0xba1d88e7,0xba3cf1ed,0xba427c7a,0xba4d1283,0xba691ac1,0xba66d8ed,0xba6e746c,0xba62e002,0xba453213,0xba31f543,0xba51c4ad, -0xba7f1088,0xba1f3d6f,0xb9b45696,0xb9ab661d,0xb9b11ce8,0xb9a2fd9c,0xb9a1b36c,0xb9a3da99,0xb99e2b06,0xb9602706,0xb9b39ca5,0xb9d4c834,0xba015c04,0xb9b67038,0xb9b1c62b,0xb9d1542f,0xb9d93ab7,0xb9f0491f,0xba0ac631,0xb9f5499d,0xb9df7e9c,0xb9b123bc,0xb9bee2c6,0xb9ef29bf,0xba429b22, -0xb963bbfc,0xb97e015e,0xb9934522,0xb990488d,0xb987e4b7,0xb9720914,0xb9752c10,0xb96702f2,0xb91fbb4d,0xb987f2a0,0xb96fe025,0xba2c1081,0xba10fc08,0xba56581d,0xba1deeea,0xb9c6c7e3,0xb9b2bb89,0xb9c45eaf,0xb9e8fd8b,0xb9bbaabe,0x383c8984,0xb9c5cd37,0xba22b550,0xba724847,0xba1e5671, -0xb9ed0ca9,0xba0a8d4b,0xb9f20297,0xba26798e,0xba569233,0xba318cd4,0xba0a0c97,0xb9bfc198,0xb9cdea5f,0xb94fe985,0xb964236f,0x3871247c,0x38a18524,0x382dafb0,0x3869db13,0x381a58b1,0x3780156d,0x38665618,0x37f791d6,0x3840746d,0x3645c07c,0x38a253fa,0xb947af92,0xb9a12238,0xb99acc33, -0xba278a25,0xb98f9c2d,0xb96d910f,0xb9253f7d,0xb977e598,0xb972939c,0x39ee3bb4,0xb9d67996,0xba2d2411,0xbaa97c4d,0xb9ea53f0,0xb9b30b4c,0xba224a7e,0xba373726,0xba699ead,0xbab43fb6,0xba82d44d,0xba3fe1b3,0xb9f860e8,0xb9179c45,0x388c482b,0x3922ba46,0xb73c5115,0xb822d76a,0x369c2ca6, -0xb70de16a,0x3807e75a,0x3730965b,0x376a5a56,0x364705a0,0x378c53b0,0xb4fd2aba,0x37fc9496,0x38b4082b,0x392879f4,0xb8f099d0,0xba981077,0xb9076343,0xb986a81d,0xb90c2742,0xb9c58944,0xb982a461,0x3a8ed747,0xb9915312,0xba69c8cc,0xbb01af52,0xba689030,0xb9d00f76,0xba18fcd6,0xba109fe3, -0xba7475a4,0xbacafcb4,0xba959885,0xba2e1611,0xb9c0a00e,0x385d2b2f,0x3895a921,0xb8b00233,0x36794b71,0x37cb61b2,0x3795d852,0xb60e6168,0xb60e0b0a,0xb70a7f77,0x3752679b,0x3707bb2d,0x361cd0b5,0x36fbe894,0xb7c42a42,0xb84b4233,0x38905c9d,0x399a7297,0xba8c25d7,0xb98475fb,0xb8bcba40, -0x39641e51,0xb956b891,0x3847e43e,0x3a876e71,0xb9b17d5b,0xba9098cb,0xbb0583ff,0xba0b2564,0xb91bc520,0xba5ba56b,0xba8dafc5,0xbad0602a,0xbb274f20,0xbae8dd75,0xbaad822f,0xb9ed9891,0xb7e1aae5,0x379e8faa,0x375d0c88,0x37a39225,0xb7bd7f9e,0xb5b380cc,0x36c60edb,0x3744acad,0xb6222f86, -0x371dc375,0x3590842d,0x3711cb35,0x36861a63,0x37d5cab9,0x3811665e,0xb898dd9d,0x36236df3,0x3a522ea2,0xb99a8f4c,0xb8e15ef6,0x3a93890a,0x3a997c17,0x3a6adf7d,0xba71266e,0x3b020027,0x3b267824,0x3a556635,0x388b858a,0xb8251745,0x3a6af831,0x3b2c8265,0x3b4b9532,0x3b7d0900,0x3b47571d, -0x3b01f3d0,0x3a9518d6,0xb91fd5ae,0x38990050,0xb804f104,0x379956cb,0x3718203b,0x361b6dd7,0xb6836ec0,0xb6319ed4,0x36853431,0xb62a93a3,0xb5ac10cd,0xb5205ce3,0xb6c84bb1,0xb78af8be,0x36987dc5,0xb78c3327,0xb98ec61a,0x370f8f1d,0x3a515e43,0x3af0fc83,0x3b25c63f,0x3acb97c1,0x3a60dcf5, -0xba9ceae7,0xb9d41c21,0x38739067,0x3a57529e,0x3b0d5eae,0x3ae8ee0a,0xb98f40c7,0xbafbf80b,0xbb396a25,0xbb640570,0xbb2b8285,0xbaf9a6b2,0xba4b15de,0x38ea5bcc,0xb70efeab,0x36be0ead,0x36d30594,0xb6e548fa,0x36417078,0x3642dc51,0x36779477,0xb50a4cc2,0x364d6685,0xb687ddbb,0x37ab9cf6, -0xb7d700f4,0x388ddf8b,0xb8c4177b,0x3945522c,0xb9462d17,0x3ae5af99,0x3a874c81,0x39b4fdad,0xba92af5e,0xba4641c7,0xba1a40b6,0x3a0a7fcd,0x3aa33a5d,0x3aaef34a,0x38db3d97,0xba1b27fe,0xba5b159b,0xb94ab9bc,0x3a69a9ec,0x3a43b8ba,0x3ad86a02,0x3a4a45e5,0x3a5cb0d6,0x38ffc829,0x37840a32, -0xb55ab5c1,0x37304db4,0x360b6caa,0x3708d5a9,0x357b5c06,0xb57c1900,0x358fb5b7,0xb5f97438,0x369c1f93,0xb71fdb48,0x378526e1,0xb6f37802,0x37d53ab0,0xb7a7c89e,0x381ec2e3,0x3956e49d,0xbaab85d0,0xba653012,0xb9da2a24,0x39831d70,0xba575f83,0xb9fcd0da,0x3a3e7f04,0x39d16b03,0x39e23449, -0x3a665f23,0xb9dc2c5b,0xba06b208,0xb829d1d4,0x3a84c34b,0x3af26571,0x3aede3a0,0x3ab04035,0x3a652e48,0xb8fdf07f,0x3840c2ad,0xb72c7552,0x3770970e,0xb6f405eb,0x36c3e15d,0xb645b2a7,0x3687e40a,0xb581976f,0xb40d2772,0x34e4aaac,0x36719e42,0xb728bc4c,0x37ab52c4,0xb73f414b,0x378554a8, -0xb8148ea9,0x3a631842,0xbb0f5c06,0xbad90547,0xba7edc0e,0x3b743830,0x3ac4f2f1,0x39c36ad3,0xbac2e1da,0xbb1b6a99,0xbab650f3,0x3b25e6fe,0x3b2a5475,0x3af884a0,0xb86f919d,0xba34de8d,0xba917103,0xbace2b5c,0xba82dd91,0xba69e509,0xba0ba80a,0x38bfa9de,0xb78362b3,0x372a96c4,0x36040dfc, -0x363f5d4b,0xb5ddfc3c,0xb3843498,0x35f0ee02,0x354f7a8e,0xb5b4ddd5,0x3547d3de,0xb6858f4e,0x32f9878a,0x353da078,0x3886ce6c,0xb98df507,0xb7677104,0xbb2b4728,0x3b84b18d,0x3bb02c41,0x3b89d75a,0x3b7c7b35,0x3b56ff53,0x3b0f079f,0x3a5f3211,0xb9612948,0xba8b995d,0xbabfe166,0xbab3c1f6, -0xba8cb7a3,0xb9cb691f,0xb9212e66,0x39ec08d4,0x3a1390ad,0x3a3e9c89,0x3a7a2ec2,0xb9818d2c,0x3894e44f,0xb73e86eb,0xb613f643,0x35cf8078,0x36a83269,0x34a2df4d,0x33b437a0,0x33f61b9e,0x35d0b337,0x341429bf,0x3730fcde,0xb77358eb,0x38491aaa,0xb8cca3f7,0x38a7ca8b,0x394d362c,0x39a960d0, -0xba20144a,0xba5ad84c,0xb9d13d71,0xba41cdb5,0xba82d67e,0xba521027,0xba5cea58,0xba2c4f97,0xb98a2486,0xb9db5a96,0xb9b819ff,0xb9a17d91,0x37059da2,0x39b998b0,0x39901c40,0x3a6a7f51,0x3a6067fa,0x3a9aac6a,0x38ff241a,0xb8e2966b,0x38cc8ce5,0xb6a58d25,0x3736e175,0xb7107af9,0x3495d817, -0x359c571c,0x36acdc86,0xb6556eb4,0x369b4aa9,0xb79dd399,0x37c5efcc,0xb7b8c282,0x38e16965,0xb872700a,0x3988a009,0x3a9fba52,0x3a0d4bfd,0x39872f8e,0xb9a3c635,0xb9b03c42,0xb99dd39c,0xb945009b,0xb9c6673f,0xba32ade2,0xba8bf2fa,0xba87e97d,0xba7d6e17,0xba324c80,0xb9ccea8d,0xb911db4a, -0xb853755c,0x3852dfef,0x39149f79,0x38d9dae1,0x379fca55,0x380ba518,0xb7d9e6b9,0xb810fa80,0x37a73681,0x3701b004,0x37213d9c,0xb739f9d0,0xb647ff78,0xb5374355,0x378ef7e6,0x373d27fb,0x37f310df,0xb8722792,0x385bcd08,0xb98ad60a,0x38c32a19,0x39f46a29,0x39e00fd6,0x39e02c39,0x39e912f2, -0x398cb8d0,0xb867f09d,0xb9be883c,0xba033715,0xba0c3814,0xba175063,0xba1e8a06,0xba33fb62,0xba581a44,0xba6186d3,0xba7261db,0xba4e49f0,0xba499c8f,0xba5f8c59,0xba42b28f,0xb9854b57,0x38bd6d17,0x38d450ef,0x37ca781d,0xb5d67667,0x3612d694,0xb6f37669,0x37c27a54,0x35db2fd8,0x35163927, -0xb746b1ec,0xb7b50c43,0xb7747663,0x37dc5efb,0x3814258e,0x39372b5b,0xba04dde1,0xb9b2b99b,0xba00808e,0xba25d7c3,0xba4f62cb,0xba3bcf97,0xba22fa92,0xb9f94047,0xba02be57,0xba16fb6f,0xba2bc933,0xba3ca78b,0xba390fa7,0xba3f0e6f,0xba0a368b,0xb9db4d3d,0xb9e33452,0xb9a8e3db,0xb9281773, -0xb9813e6c,0xb9cfaf65,0xb998ac77,0xb8e9ca35,0x3886f5ed,0x3865def3,0x3817a508,0x3879c1f7,0x37cb5c8f,0x38646f09,0x38966d7d,0x38057461,0x38cb7a1f,0x38c9f23e,0x38141050,0xb94c545a,0xb9330c33,0xb9e07b52,0xb9aa6562,0xb9aa128e,0xb9899772,0xb981e509,0xb9870df4,0xb9b586c4,0xb9de7837, -0xb9ebf02a,0xb9e40b12,0xb9db7d94,0xb9dd69a7,0xb9ed6076,0xba059303,0xba0c86a4,0xba11daff,0xba1530a7,0xba11fe48,0xba10a53b,0xba031caf,0xb9ef0bf4,0xb9fb708d,0xba15f42c,0xb980475c,0xb98b20d0,0xb99482be,0xb98df7e5,0xb992f313,0xb9915c46,0xb98ca2ac,0xb9960db6,0xb991e906,0xb98e2783, -0xb97ac30a,0xba19a203,0xba07514e,0xba3d18c7, +const uint32_t defaultHRIR_rom_AlphaL16[470 * 43] = { +0x3f02f1b3,0x3ec3e963,0x3f0343ed,0x3ef2dac6,0x3eff8398,0x3f023dbb,0x3f078879,0x3f09fffd,0x3f0c6e63,0x3f090014,0x3f06f396,0x3f04a772,0x3f021691,0x3eff5d28,0x3efa86c7,0x3ef74421,0x3ef3d11a,0x3ef0de30,0x3eed6bc2,0x3ee3fddf,0x3ef71731,0x3eb8463c,0x3e90d6d9,0x3de91660,0x3ec643bd, +0x3e919f12,0x3e00e9a6,0x3e01de92,0x3e06274f,0x3e1c7ed6,0x3e0fd8b6,0x3e0f8e8d,0x3e16fa82,0x3e95c316,0x3ed5430b,0x3e11d349,0x3e95147a,0x3e8b6668,0x3f0b505d,0x3f0e4dfc,0x3f173148,0x3f2122f9,0x3f31903f,0x3f39e03d,0x3f3c3061,0x3f3306d3,0x3f2ab4d0,0x3f22cbf3,0x3f1b0fb1,0x3f1419bf, +0x3f0da064,0x3f08a941,0x3f03c152,0x3f00959e,0x3ef3d58f,0x3eebf556,0x3ee35f23,0x3e6ca878,0x3eb3e62e,0x3eaf074b,0x3e9fc344,0x3e8fd97e,0x3eaa0eb0,0x3eabfe1d,0x3eae3201,0x3e9a635d,0x3eb20801,0x3ec018e8,0x3ead357a,0x3ebb77de,0x3ea9329c,0x3ead2db0,0x3ee3931d,0x3eb4dbb1,0x3eff8a54, +0x3f176afd,0x3f24be97,0x3f3b6443,0x3f5bc63c,0x3f6a7cca,0x3f70f95b,0x3f624afc,0x3f5492cc,0x3f478f06,0x3f38c77a,0x3f2ba723,0x3f1e738a,0x3f14614d,0x3f099f01,0x3f02d0f0,0x3ee6b887,0x3edc678b,0x3ead07a3,0x3e812a3a,0x3e66fc19,0x3e6de299,0x3e5b5450,0x3e1a818c,0x3e50f8bc,0x3e0b2a3a, +0x3e6964ae,0x3e0f9eb9,0x3e5b122d,0x3e27486d,0x3e56e18a,0x3e6a7e4a,0x3e8130cf,0x3e82f2f3,0x3eb56504,0x3e904be1,0x3f011938,0x3f1fbfae,0x3f341d2b,0x3f5a3682,0x3f888e01,0x3f95995c,0x3f977341,0x3f87be6e,0x3f7379de,0x3f5b9668,0x3f442825,0x3f2f05ad,0x3f1c8ac8,0x3f0e01aa,0x3f0033f2, +0x3eeed46e,0x3ec9aabb,0x3eb24ee1,0x3e833e6d,0x3ded9e37,0x3e23f821,0x3d7f1cf4,0x3d9f9154,0x3d6b7f03,0x3d47119c,0x3d009fd3,0x3c9be5ac,0x3d7a078e,0x3d2c90ac,0x3daaab70,0x3de25ede,0x3e16f41a,0x3e2cb483,0x3e3c5e6c,0x3e91dfa8,0x3ec49ae9,0x3f0b7a24,0x3f397b0b,0x3f5badf8,0x3f80520f, +0x3f8a1e16,0x3f964bc4,0x3fa1965a,0x3fb0d377,0x3fb2f653,0x3fa58f9c,0x3fa1d1ec,0x3f987f64,0x3f8da962,0x3f7ea6f1,0x3f61511b,0x3f4877e7,0x3f225993,0x3f088f8c,0x3ec28018,0x3e41bf74,0x3e4e4eae,0x3e032ec2,0x3dc60ba0,0x3d6e5e69,0x3d34e8c6,0x3d35f340,0x3d6649ce,0x3dac4fc9,0x3d927d54, +0x3dcd5be6,0x3ddb5817,0x3e23efc0,0x3e2cbfa1,0x3e6d49c0,0x3ea2b6c3,0x3ecdf198,0x3f1d0b33,0x3f5f5459,0x3f7a631d,0x3f9399e7,0x3fa0a0ae,0x3fa9cbbb,0x3fa6b653,0x3fafb320,0x3faa5efd,0x3f9c21ea,0x3f974db2,0x3f8e2d9b,0x3f832e17,0x3f68080d,0x3f4d93ad,0x3f3b6dcf,0x3f1e3000,0x3f0fe18d, +0x3ecd6516,0x3e914079,0x3e7796fd,0x3e3c539f,0x3e20b7ae,0x3deaed54,0x3d9b0be5,0x3d8a56aa,0x3d805a8e,0x3d62cd20,0x3d99e108,0x3da685d1,0x3e2650cc,0x3e33264d,0x3e979b5d,0x3ea2f75f,0x3edf0e5f,0x3ee4ea0c,0x3f4ce39b,0x3f9085fa,0x3f9d2c5f,0x3faad883,0x3fa39c58,0x3f9d4148,0x3f9a1ae5, +0x3f9b81c1,0x3fa08ee2,0x3fa5243b,0x3f9ba1da,0x3f8e373e,0x3f7cbf74,0x3f572bc2,0x3f37c950,0x3f25c397,0x3f04e9b7,0x3ef080bd,0x3eae71cd,0x3e90fe7f,0x3e84aaef,0x3e64ca39,0x3e36785a,0x3e1bb482,0x3dfcecc0,0x3db35f26,0x3dbefe63,0x3e069d25,0x3db8d599,0x3dc4fa9e,0x3df96591,0x3e02b2ae, +0x3e9dd194,0x3e8e1df5,0x3ee85484,0x3f08b626,0x3f70146a,0x3f964666,0x3f9d9511,0x3f99194f,0x3f9ecfe5,0x3fa99cd2,0x3fb63ead,0x3fb359c2,0x3fabea6d,0x3f9cd7d0,0x3f955ab7,0x3f89db88,0x3f72f4ec,0x3f5d6e56,0x3f3e9432,0x3f1675c3,0x3ef47116,0x3edb7fcb,0x3ebd44da,0x3e640758,0x3e8a5ee4, +0x3e770ec1,0x3e3bc748,0x3e1d8020,0x3dd1c8b0,0x3de98389,0x3db6002d,0x3e72e277,0x3e148bb6,0x3dd9fffc,0x3e3c0cde,0x3e18ec8c,0x3ea3c517,0x3e8620c4,0x3ee70ac9,0x3f1a4e3b,0x3f7a5b43,0x3f9d8cf5,0x3fa60e1f,0x3fa4cf54,0x3fa6fa32,0x3fa8ceee,0x3fafdc20,0x3fa61752,0x3fa2b16e,0x3f9fec2e, +0x3f9138d7,0x3f81910b,0x3f64d6f5,0x3f3896b3,0x3f181cdf,0x3efe528d,0x3f07d297,0x3f0ff0ad,0x3f0628d6,0x3e9bb5db,0x3ebcaecd,0x3e668264,0x3e59b1ca,0x3e701d98,0x3e390fc7,0x3deabc40,0x3e1e2c9c,0x3dcfa375,0x3e2fdb94,0x3e462bea,0x3e885182,0x3e89c6dc,0x3e874c9b,0x3ea13b10,0x3f1a51c4, +0x3ef2773d,0x3f6411c7,0x3f8a04b9,0x3f896d9f,0x3f8d04c6,0x3f93c7f3,0x3f964f7a,0x3f952f02,0x3f8f086b,0x3f8723f3,0x3f7f3f87,0x3f6b924e,0x3f57b23d,0x3f429bcc,0x3f2cc7af,0x3f1b90ab,0x3f10b436,0x3f1d118e,0x3f2c3755,0x3f02aaf5,0x3eb3fc54,0x3ede750d,0x3ea45125,0x3e98af99,0x3e6b9392, +0x3e29c827,0x3e1bb41d,0x3e0093b7,0x3e9ad3a7,0x3e5bd7e4,0x3e609a29,0x3e87f276,0x3e9132d2,0x3ec5615b,0x3ecfaf25,0x3f182cbe,0x3f149f02,0x3f4a68c9,0x3f6ef967,0x3f7354da,0x3f853b77,0x3f8534c5,0x3f867161,0x3f87ba3b,0x3f80da3e,0x3f752e5c,0x3f678e52,0x3f5644fa,0x3f448693,0x3f2def11, +0x3f2aa476,0x3f2305af,0x3f1b7b3f,0x3f1398aa,0x3f20d27e,0x3f0b00df,0x3ebe246a,0x3eb51a89,0x3eab690f,0x3ea6a01c,0x3e4ac166,0x3e9f19a2,0x3e2dbd83,0x3ec0d2c8,0x3e2a1d74,0x3e9b4bd1,0x3e472eee,0x3e79a839,0x3ea12087,0x3eb45e43,0x3ec0d6a2,0x3f0f4661,0x3e959f2e,0x3f4c56a5,0x3f4da09a, +0x3f50c066,0x3f58059e,0x3f5d586d,0x3f64d859,0x3f6dcbdf,0x3f660ad7,0x3f60421d,0x3f5a31be,0x3f522c16,0x3f4a7365,0x3f3ef3e5,0x3f3bd59c,0x3f36e2f8,0x3f349fdb,0x3f300593,0x3f2e9917,0x3f29e283,0x3e84db4c,0x3f076fbb,0x3f0715fa,0x3eff7902,0x3ee21ab0,0x3f0a0619,0x3f0ef752,0x3f0fc764, +0x3ef4c71f,0x3f13c509,0x3f1bd1a5,0x3f04083e,0x3f1022fe,0x3eff9bb1,0x3f0349db,0x3f2ea9aa,0x3f169c67,0x3f56e463,0x3f3fcc3e,0x3f47e620,0x3f484c5d,0x3f4b084f,0x3f4caa25,0x3f501fa8,0x3f4bd8ac,0x3f493e57,0x3f464745,0x3f43f73d,0x3f41de65,0x3f3f6777,0x3f3f6b8c,0x3f3eae2c,0x3f3d9b87, +0x3f3ce59f,0x3f3667c8,0x3f4c933e,0x3f0c0e63,0x3ece60b1,0x3da63278,0x3f1c8ed9,0x3ed318d6,0x3df32d24,0x3deee4e9,0x3dfbb720,0x3e2a846e,0x3e091330,0x3e0c0351,0x3e1accd1,0x3ed727bb,0x3f298456,0x3e04a2ad,0x3ed21b3a,0x3f590b58,0x3e9c6bc8,0x3ebf4443,0x3e87958d,0x3e9ae968,0x3e95cf54, +0x3e960ce8,0x3e931735,0x3e901ea5,0x3e88d968,0x3e8a249c,0x3e899355,0x3e8a69d3,0x3e8b005b,0x3e8b60e0,0x3e8be859,0x3e89f584,0x3e89fffb,0x3e8aaec1,0x3e8cb6d8,0x3e919727,0x3e807a91,0x3eb894b2,0x3ed43b4e,0x3f05649b,0x3ea4342e,0x3eccf09f,0x3effbb51,0x3f006946,0x3efe526b,0x3ef8686b, +0x3efc0cbf,0x3efe6ccd,0x3efde50e,0x3ece6d22,0x3e9f023b,0x3f0485f7,0x3edd4a26,0x3f05443c,0x3eb4af25,0x3eb2eed0,0x3eb35ce6,0x3ead8285,0x3ea24231,0x3e95bc62,0x3e8621fd,0x3e8d35e0,0x3e9287fb,0x3e9a16a9,0x3e9d882e,0x3e9e928b,0x3e9e63e3,0x3e975071,0x3e95d99f,0x3e960bbe,0x3e9cec14, +0x3e9cb32d,0x3e9ec4ce,0x3ee5601c,0x3eab5cd0,0x3ea5b5f6,0x3ea9953d,0x3eae619f,0x3e938c44,0x3e93f893,0x3e9565df,0x3ea68386,0x3e9079fe,0x3e8680c1,0x3ea1b17b,0x3ea2dce7,0x3ebd0964,0x3ec2a8f6,0x3eadebba,0x3ef25d3f,0x3eec6175,0x3ed46eee,0x3edca405,0x3ecc217c,0x3eb0e4b1,0x3e9b8618, +0x3e716264,0x3e83f43b,0x3e87986d,0x3e8fad60,0x3e93baf1,0x3e946e3e,0x3e94d080,0x3e897f52,0x3e89a966,0x3e8c8817,0x3e9c5b11,0x3e992b90,0x3eacba95,0x3eb56c95,0x3ea9e299,0x3e98dd5b,0x3e911adb,0x3e96efa7,0x3e784db0,0x3e9342e5,0x3e763565,0x3e990c3e,0x3e6fbfcc,0x3e8bed7a,0x3e8f1777, +0x3ea051bc,0x3eb0ec9e,0x3ec134a0,0x3ec7e04b,0x3f0a6d60,0x3f096828,0x3ef70128,0x3efb194a,0x3ed9bff4,0x3e9fbe83,0x3e677463,0x3e11881f,0x3e623999,0x3e904499,0x3eabe90f,0x3eb920bc,0x3ebbe7a9,0x3eb6f35e,0x3ea04b3f,0x3e988a1a,0x3e96ab5e,0x3ea4498b,0x3ea52f11,0x3eab13ff,0x3ea879c9, +0x3e801fec,0x3e7047e9,0x3e43e2cc,0x3e286d33,0x3e07c088,0x3e081579,0x3e06caa0,0x3e15c812,0x3e0df302,0x3e1bab0e,0x3e4cade5,0x3e80fea5,0x3e9bd2c7,0x3eada948,0x3ed5a4bd,0x3f1f66a6,0x3f23b36b,0x3f26e13c,0x3f27da99,0x3f2370d0,0x3f1f54ac,0x3f0f6be0,0x3eee0f5a,0x3e865630,0x3e0b9c53, +0x3df785a0,0x3d122880,0x3c82e31f,0x3d1b0bdb,0x3d5d2083,0x3de50518,0x3e358ca3,0x3e8c9000,0x3e96bde1,0x3ea21ad4,0x3eba362b,0x3e930468,0x3e84a049,0x3e4bf891,0x3e2c02bc,0x3e1231db,0x3e1cd19d,0x3e1cc444,0x3e21cab5,0x3e10b35d,0x3e3470eb,0x3e77f241,0x3e9ec585,0x3ec83d0e,0x3ee23383, +0x3f0aa0c1,0x3f3e330b,0x3f35d992,0x3f19ef09,0x3f24a909,0x3f2a7584,0x3f21ea93,0x3f15d383,0x3f16e7fe,0x3ee7c500,0x3ecaff5e,0x3ec87e9f,0x3ea18754,0x3e894d3e,0x3e79bc93,0x3e8b420e,0x3e97cdf7,0x3e9b4520,0x3ec2f3ca,0x3ec59f69,0x3ed80e1f,0x3ec54118,0x3e9abf6b,0x3e8029ea,0x3e45989f, +0x3e1fdf75,0x3dfe4446,0x3e03c9e4,0x3e22ca2a,0x3e788d94,0x3e6f4197,0x3e8d6f1a,0x3eac6808,0x3ec2b955,0x3ed9d2bd,0x3f0a6e9e,0x3f1b8004,0x3f47ede2,0x3f2c71a8,0x3efcb323,0x3f05f045,0x3eff6c84,0x3f334692,0x3f528118,0x3f4a2d6b,0x3f3bc09e,0x3f120564,0x3eaf8c68,0x3e768e27,0x3e4d3ca8, +0x3e65eceb,0x3e969e3a,0x3eb4033d,0x3ebd66b2,0x3ee43c67,0x3ee890ce,0x3ef71c5b,0x3ee4da01,0x3ece74d5,0x3eb55e00,0x3e8f5de6,0x3e7a8492,0x3e828da9,0x3e952176,0x3e9ccfb0,0x3edc45ff,0x3e92246d,0x3e9495b3,0x3ea9cce8,0x3edd4663,0x3edd14e3,0x3f1407ce,0x3f143095,0x3f4451bc,0x3f0849cf, +0x3eb3c957,0x3efdcf5f,0x3f49e5f4,0x3f3bca87,0x3f210903,0x3efb413d,0x3ee3cb71,0x3ebe1fa0,0x3ea76193,0x3e88c40c,0x3e795709,0x3e8b5771,0x3e8a94de,0x3ea34bd0,0x3ed008c9,0x3eed9446,0x3ef6aad7,0x3efad608,0x3f0739c3,0x3ef1e1d0,0x3ee13976,0x3ec754d5,0x3eacf5bd,0x3ea25180,0x3e5e72ef, +0x3e9898af,0x3f1a7377,0x3eb22b11,0x3ea3d715,0x3eb2f6ee,0x3edb0892,0x3ed9fb12,0x3f1536d1,0x3f201b25,0x3f1ed4bd,0x3e9e586e,0x3e7778c7,0x3eb9be83,0x3ef58878,0x3f09e22d,0x3f061cc0,0x3ec14584,0x3ea6fa61,0x3e731686,0x3e3fecb0,0x3e52c813,0x3e801570,0x3e9a15c6,0x3ecfb2ca,0x3ef63fbf, +0x3f087789,0x3ef396e2,0x3ed85868,0x3ee393ee,0x3f0d0096,0x3ee7628c,0x3ef233d8,0x3ed6e46e,0x3eb4069f,0x3eb0462e,0x3eb6c5fa,0x3ebc2cb1,0x3efc2568,0x3ec46a2a,0x3ec09c9d,0x3ea94656,0x3ed862d8,0x3f0154a5,0x3f11a2e3,0x3ee3ab35,0x3f406a53,0x3ebc552e,0x3e80760c,0x3ecb248b,0x3ef280ad, +0x3f039ed1,0x3f015586,0x3ee6a208,0x3eeae36d,0x3eed4ec2,0x3eecd5e1,0x3eddff4f,0x3ee026a0,0x3eee85c3,0x3f022784,0x3f084bf3,0x3f06bea9,0x3ef3b76d,0x3ec0b877,0x3eea3afd,0x3f151446,0x3edc5c2f,0x3eeda52e,0x3ed43d97,0x3ed03924,0x3ed11fc5,0x3ed78523,0x3ee37ab5,0x3ea7f7d6,0x3ed5d624, +0x3ed72fe5,0x3ec83708,0x3ed7a6e7,0x3ed01d69,0x3efd2aad,0x3ee48d7f,0x3f1b1d9b,0x3ee42415,0x3eb55ea2,0x3ede88ba,0x3ed6ee5e,0x3ed6a58d,0x3ed7c153,0x3ee0958d,0x3eeec698,0x3efb4c2c,0x3f057894,0x3f0e8702,0x3f17032e,0x3f22c49d,0x3f1babbe,0x3f19fed8,0x3f1739dd,0x3f0e5092,0x3ede9639, +0x3eee4e42,0x3f15e246,0x3f0ac3ed,0x3f02045b,0x3ef4cd77,0x3f0d2e8c,0x3edba031,0x3f09457c,0x3eb97330,0x3f0a1b73,0x3ed96408,0x3f0ba1a0,0x3f00933b,0x3f0a5461,0x3f144f61,0x3f25ed2b,0x3f0a1d0f,0x3f5ccb17,0x3eafd0ad,0x3eb10a9a,0x3eb91d47,0x3eb6c80b,0x3ebbac1f,0x3ebb3f32,0x3eb9db12, +0x3ec29c8a,0x3ecb9fb0,0x3ed3ba74,0x3ee0c151,0x3eeda4fc,0x3f022f39,0x3ef84ae0,0x3ef052b2,0x3ee3fd49,0x3edd04b6,0x3ecc906e,0x3ecb5614,0x3f4a6b17,0x3ef4354d,0x3eee5c7d,0x3eef401d,0x3efd5703,0x3eb8213c,0x3eb4867a,0x3ebd4c3a,0x3ee92874,0x3eb9f6e4,0x3ea28d7d,0x3ed336da,0x3ed1e0a4, +0x3f037127,0x3f098f95,0x3ec62dc3,0x3eff80e8,0x3e341eb8,0x3e9414f2,0x3e882d92,0x3e8a4e4b,0x3e8aacff,0x3e8bd678,0x3e8c01a7,0x3e9205a1,0x3e96ed8f,0x3e9c2ced,0x3ea03fe4,0x3ea35130,0x3ea97ab2,0x3ea0de9d,0x3e9c7086,0x3e9781b0,0x3e93da8a,0x3e9a7429,0x3e450b38,0x3f03e45e,0x3f29c2e6, +0x3f73d949,0x3ed11328,0x3f208fcd,0x3f62e8fa,0x3f650e97,0x3f622396,0x3f57ff13,0x3f613d99,0x3f62abf9,0x3f5e585a,0x3f21da80,0x3ebe28e7,0x3f6eea8f,0x3f2ec6ba,0x3e8a97d1,0x3e141a1a,0x3deacee8,0x3df88264,0x3defdd9b,0x3de9b8ee,0x3de402ba,0x3de658c6,0x3defce6e,0x3e044230,0x3e0ac188, +0x3e0fb2a8,0x3e117bbd,0x3e10baf1,0x3e11c618,0x3e1445db,0x3e158953,0x3e14f90e,0x3e137275,0x3e0f11d3,0x3e0c16b6,0x3e0b8a14,0x3dfcad72,0x3dea58af,0x3dd5612a,0x3e004cb1,0x3de4957e,0x3dcd0fbd,0x3dd6727f,0x3ddaa37d,0x3de22fb9,0x3dccc24e,0x3dc5f7ef,0x3dc70ac4,0x3ddde30b,0x3df709dc, +0x3dd86738,0x3de1d3dc,0x3dea78ca,0x3dcd5b42,0x3dc7471e,0x3db5cf26,0x3daabf5c,0x3dae2294,0x3dd3cba4,0x3e0fc7bb,0x3e229ded,0x3e2ce54d,0x3e29757d,0x3e25d7ec,0x3e26fe9c,0x3e2eeee7,0x3e35be3d,0x3e36d5e6,0x3e3240fc,0x3e275ecd,0x3e200af5,0x3e190b3e,0x3e13126c,0x3e1a542b,0x3e17f093, +0x3e1050b7,0x3e0e4272,0x3e0b0e46,0x3e18bd9b,0x3e197e54,0x3e1a4eb8,0x3e0cdecd,0x3e06bb53,0x3dfc8b45,0x3deeb4f6,0x3defccd3,0x3e091909,0x3e00ec1f,0x3df0c72c,0x3d8aa7b7,0x3d26e703,0x3cb65dd1,0x3c1fafd5,0x3ca1cba1,0x3d498197,0x3e01ff82,0x3e262a9f,0x3e40f524,0x3e41ef75,0x3e407cbf, +0x3e464a54,0x3e5665c1,0x3e5fffa0,0x3e5faae7,0x3e526bde,0x3e3ff147,0x3e3065d6,0x3e2619aa,0x3e310166,0x3e2943b5,0x3e235858,0x3e19d4e6,0x3e1475d0,0x3e00ed9b,0x3e1e36d1,0x3e2919ce,0x3e2d0baf,0x3e076fd1,0x3de91dcd,0x3df3638e,0x3de419b6,0x3df12f8b,0x3e12a460,0x3e0242be,0x3dbea3ac, +0x3c9c1149,0xbc895fde,0xbd143b04,0xbd39d95a,0xbc44c70f,0x3d63e6af,0x3e335bce,0x3e5dadc8,0x3e6bb5cd,0x3e563ffc,0x3e44a8d1,0x3e473a3a,0x3e622d40,0x3e798ccc,0x3e7d475c,0x3e6edc86,0x3e55f40d,0x3e4365dc,0x3e3ca109,0x3e58218f,0x3e4753dd,0x3e3c530e,0x3e2cd2a4,0x3e241160,0x3e09c354, +0x3e1ee07f,0x3e1b9ee4,0x3e2f2af1,0x3ddf91bb,0x3db267fe,0x3dbc5405,0x3d9d7921,0x3dcea0ec,0x3e102f9f,0x3dc607b6,0x3e75695c,0x3dc81584,0xbd9da3b7,0xbe26d4e2,0xbe91258c,0xbebc200b,0xbec4139f,0xbe9a404f,0xbe0cdd91,0x3c7e45d1,0x3dd7fe0d,0x3e4f1e4a,0x3e841911,0x3e9117f6,0x3e957877, +0x3e91f683,0x3e9006a6,0x3e6210fe,0x3e51450c,0x3e60a94f,0x3e57f2fb,0x3e529e94,0x3e469c21,0x3e30187b,0x3e182539,0x3dcc1d72,0x3e1b4cd3,0x3e28feca,0x3e2a09f2,0x3e1b96c5,0x3e2c3d03,0x3e5ced7b,0x3e5b0c72,0x3e7687f4,0x3e7d011a,0x3e7a6d4b,0x3ba3f569,0xbe1bb3f0,0xbe96bcf6,0xbebc7e52, +0xbf15081a,0xbf15b191,0xbf15f4a1,0xbf1359be,0xbef801b6,0xbec5667d,0xbe927970,0xbe1f9ce3,0xbca49615,0x3dec9f42,0x3e44f743,0x3e7684ef,0x3e86146e,0x3e63b72b,0x3e514d6d,0x3e64d663,0x3e682c88,0x3e522c22,0x3e3cbd37,0x3e30ce14,0x3e2024ef,0x3dede73f,0x3e26d7bb,0x3e311257,0x3e645c1a, +0x3e39312d,0x3e32ed13,0x3dec9c44,0x3e006954,0x3d70fb44,0x3d2ae870,0xbd2be125,0xbe351e05,0xbea7b4f4,0xbf00652b,0xbf17029e,0xbf395c8d,0xbf54d5ce,0xbf6eba99,0xbf6ebecd,0xbf5b8ee6,0xbf335038,0xbef0fbfe,0xbe96f425,0xbe152cdb,0xbd16b16d,0x3c8ba9af,0x3dbe6335,0x3e3e48a4,0x3e73f6cf, +0x3e7cac9a,0x3e8afb16,0x3e92be79,0x3e825d3b,0x3e5f436e,0x3e588883,0x3e396a35,0x3dd774a3,0x3dd7741c,0x3e13ee40,0x3e941ac3,0x3e270cf6,0x3e036950,0x3dfe80e9,0x3dd40c7d,0xbc3607c3,0xbc9c94bc,0xbe0c5911,0xbea607d4,0xbeef6f17,0xbf0f522c,0xbf35d4d8,0xbf6c6404,0xbf59cf8f,0xbf489a1c, +0xbf3440fe,0xbf23b8e2,0xbf07f1f6,0xbecfb9dd,0xbe8afb5a,0xbe172651,0xbd5f194a,0x3d996cad,0x3e1c429a,0x3e3a7a5c,0x3e67897c,0x3e5e7482,0x3e507876,0x3e4aa7ec,0x3ded7846,0x3dd3798d,0x3df4b297,0x3e0016c9,0x3df267dd,0x3e553cfc,0x3e4cd550,0x3d4047e0,0x3e12bbcc,0x3e1be8e0,0x3d4d89d1, +0x3da0a464,0xbc795320,0xbd601904,0xbe4d3b11,0xbeb2df76,0xbebed268,0xbf0762f0,0xbf2cfbce,0xbf3cb11b,0xbf321d01,0xbf1aa42e,0xbedad717,0xbe9ae2c9,0xbe35c324,0xbdabbd32,0xbc640378,0x3d1d5e6d,0x3dac4ad0,0x3da6bb00,0x3dbc28c3,0x3de68969,0x3e0500c8,0x3dcfabf8,0x3d102dad,0x3d5232ff, +0x3cca36c2,0x3d6cf3f5,0x3d7940ea,0x3d89d72f,0x3d97b122,0x3e0e2385,0x3deaeff2,0x3d238ff9,0x3d258270,0x3ccbd347,0x3c49e75c,0xbd3b405e,0xbd9b4a33,0xbe0ae3e4,0xbe556f9c,0xbec1ffdc,0xbeba5ac5,0xbed4cd95,0xbf05a577,0xbf110ace,0xbf0e9f83,0xbeff61b9,0xbec8b24f,0xbe9a630c,0xbe54e3bf, +0xbde51f0d,0xbd2c2d97,0x3bce5f9d,0x3d424de2,0x3c9498b6,0x3b909b26,0xbbd43ff3,0xbd019fd6,0xbd04032c,0xbd6b1896,0xbdace506,0xbd49edb2,0xbd33e629,0xbd01abf8,0x3bbc470e,0x3d57f3eb,0x3d0be673,0x3c8f8d1b,0xbcaaea01,0xbc6d3ef1,0xbb62a8f1,0x3bb9bc5c,0xbd307705,0xbdc9dd34,0xbe2a337c, +0xbe6ca452,0xbeb2633b,0xbeb9267e,0xbeb481a2,0xbed02c33,0xbee0e380,0xbed2147b,0xbec93d3e,0xbec7c078,0xbeb65cc7,0xbea6b09f,0xbe95f846,0xbe935c11,0xbe8d4999,0xbe846856,0xbe822e42,0xbe81e187,0xbe8172e5,0xbe72a966,0xbe498bf7,0xbe49b22e,0xbe44483b,0xbe227145,0xbe03982d,0xbdc08ff3, +0xbd9ed0c3,0xbd5de9cc,0xbd6a7c79,0xbd4b9d7d,0xbd8e0bf0,0xbd669e24,0xbda7e25d,0xbd92a237,0xbe0a353f,0xbe306231,0xbe72bf58,0xbe8d4746,0xbeb19fd5,0xbe74f728,0xbe73b38a,0xbe83b1de,0xbe88fe3f,0xbe927812,0xbe9ad75f,0xbea36319,0xbea2b256,0xbea447a4,0xbea43a99,0xbea5cca3,0xbea768fd, +0xbeac5914,0xbea1e3e8,0xbe97fee3,0xbe8d0a42,0xbe83b7fd,0xbe6b0f6b,0xbe66ef82,0xbe9a980f,0xbe510f2d,0xbe4ab83e,0xbe3dc3b7,0xbe30f53a,0xbdfb9070,0xbdfb95df,0xbe0df8c3,0xbe1e490f,0xbe0afecc,0xbde8d815,0xbe0afc71,0xbe23e069,0xbe55503e,0xbe69307f,0xbe523099,0xbe936f3e,0xbe238fe1, +0xbe495aaf,0xbe49657e,0xbe4c15bd,0xbe52dd91,0xbe57bc4d,0xbe5f11f9,0xbe60bb0e,0xbe641111,0xbe67c3c0,0xbe695b6b,0xbe6a4470,0xbe6efe23,0xbe61a630,0xbe591dff,0xbe4f6ef2,0xbe490ce7,0xbe448fbb,0xbe1e6f1c,0xbe906f36,0xbea599bf,0xbeb823b8,0xbe6a9668,0xbe98d946,0xbea9e1d0,0xbeac067a, +0xbea809af,0xbea4518b,0xbea9249e,0xbeac3343,0xbea89262,0xbe9966be,0xbe6441e7,0xbebb317c,0xbeabc3d7,0xbe427c55,0xbd037788,0x3ca3df8b,0xbd4f58e4,0xbcdfad17,0xbd0b4bce,0xbd083da6,0xbd4ae40b,0xbd6a2aa6,0xbd87a73f,0xbd6ee7e1,0xbd576503,0xbd37bfa7,0xbd210f3c,0xbd1366ac,0xbd0f404e, +0xbd11ce80,0xbd12d2bc,0xbd1418b0,0xbd179a14,0xbcf56daa,0xbd4b5221,0x3c9b2d89,0x3d647e1a,0x3e066c9a,0x3b1faf91,0x3d616890,0x3dfcfc3c,0x3e046c13,0x3e04aa99,0x3df5a837,0x3e00a636,0x3e00587f,0x3df9905e,0x3d68c8e1,0xbab51069,0x3df598e8,0x3d75dfbf,0x3da0ebdc,0xbd1261a1,0xbcc3133e, +0xbce2641b,0xbcff7377,0xbd97cce3,0xbdce98de,0xbdfced30,0xbdeff27b,0xbdd01695,0xbd990f99,0xbd5bc3b0,0xbd2867f0,0xbd22291d,0xbd254b6b,0xbd2c3d64,0xbd35c568,0xbd35ee33,0xbd3521f7,0xbd046632,0x3d951b81,0x3c250d4b,0x3c926565,0x3cd7ee86,0x3d31b065,0x3ca80bbd,0x3d00f793,0x3d1c75de, +0x3d6c544f,0x3d12fff2,0x3ca83855,0x3d16deeb,0x3ca6f748,0x3d1c0cf9,0x3d23c14f,0x3babbdc2,0x3cec9fe9,0xbd206e27,0xbccada72,0xbcee6496,0xbd161562,0xbe00fe32,0xbe2d0c58,0xbe5b8e37,0xbe488ad6,0xbe2465f0,0xbde8bcf0,0xbd9dbc9b,0xbd652f45,0xbd616560,0xbd629451,0xbd714292,0xbd73c02b, +0xbd6c5ed7,0xbd77f08e,0xbc438ff4,0x3cd4adee,0x3d1fc166,0x3cdab396,0x3d012afa,0x3d89628f,0x3d2681a2,0x3dd4d60d,0x3d94ccfc,0x3dfc86fe,0x3daf19ab,0x3de07842,0x3db84e2f,0x3d7f1cb5,0x3d578c00,0x3d7b480d,0x3d10cc09,0x3dab0f78,0xbb6f2929,0x3cdf4273,0x3cf883a0,0x3c35e36a,0xbe0e3f85, +0xbe73aa1f,0xbe9f2301,0xbe9a5f63,0xbe737f69,0xbe12f92f,0xbd99d344,0xbd18a7d8,0xbd114ec6,0xbd380ed1,0xbd4a8545,0xbd57eba1,0xbd7696a1,0xbd76391e,0xbbd1704f,0x3d8dda57,0x3d20823f,0x3dcca2dc,0x3d9cbe56,0x3da44c60,0x3d85505b,0x3df7b794,0x3e1cb258,0x3e169adb,0x3df95e94,0x3ddc2886, +0x3de1e75e,0x3d8bd038,0x3d8dccce,0x3dbeffa6,0x3db56eb7,0xbe8d077d,0xbeb37e1c,0xbe9a4c3c,0xbe9604ed,0xbe8328ba,0xbe369711,0xbdf43323,0xbdda86f1,0xbe294a5e,0xbe67486e,0xbe684231,0xbe70233f,0xbe5fbba9,0xbe35fd6c,0xbe23ca21,0xbe184d3e,0xbe2619bf,0xbdbd400c,0xbda54834,0xbd2fe16b, +0x3d714375,0x3cc2cd03,0x3d90c43d,0x3da5f162,0x3de9ffdd,0x3de2a876,0x3e12f2d6,0x3e108baa,0x3e05d2c2,0x3e009906,0x3dd2cf89,0x3d98b8a7,0x3cecaffa,0xbc7939f8,0xbdd0eded,0xbe4a6b12,0xbe8ae815,0xbe8fbe4f,0xbe71e928,0xbe3d464c,0xbd093f31,0xbd94ad2d,0xbd643f4a,0x3c10989e,0x3d4f4353, +0x3da2bd7b,0x3dab8287,0x3dbfcdb1,0x3d961356,0x3cca4f22,0x3cc1bfe4,0x3c81ed23,0xbbbec7df,0xbc32dd43,0xbd3ce8c1,0xbce89ef2,0x3cea881f,0x3d6098b6,0x3d9f4174,0x3da70074,0x3dd9c8dc,0x3de7a31c,0x3e22d6a5,0x3e2e88dc,0x3e1f30e0,0x3db202bc,0x3d0befba,0xbc8f24e1,0xbd2572b8,0xbdb52715, +0xbe0845cc,0xbe467ad0,0xbe462162,0xbe3f250f,0xbd5c85db,0xba9ec738,0x3dbf1643,0x3e48bec6,0x3ea3389c,0x3eeb23d5,0x3eff43e1,0x3f029562,0x3eefe288,0x3edb59ce,0x3ec103dd,0x3ea36bf7,0x3ea1c614,0x3e871608,0x3e370827,0x3d60de5c,0xbd04a521,0xbd2dd042,0xbd86210b,0xbd9bbc25,0xbcbb8396, +0x3c452903,0x3d654e26,0x3d4b6293,0x3e2e71e2,0x3e36ffeb,0x3d895bb8,0x3de56677,0x3dbaa1eb,0x3c2eeb88,0xbb873ba2,0xbce2d527,0xbdae88ec,0xbdf01d42,0xbd213be6,0x3ce7d338,0x3e17b7ac,0x3e509b55,0x3e5dc68d,0x3e779e95,0x3ea22f06,0x3eefeb68,0x3f074be6,0x3f14c3fc,0x3f140797,0x3f0b4953, +0x3ef870cf,0x3ed613a6,0x3e9c574f,0x3e57af4d,0x3e18eac0,0x3d91b6c1,0x3b587a4e,0xbcfd8b3e,0x3bc28491,0x3a7b4a79,0x3b638162,0x3c68bfee,0x3d01a290,0x3c96649b,0x3e1842b6,0x3e322603,0x3d0b261f,0x3e0e52d9,0x3dd83fd0,0x3b7a3c24,0x3ace9cee,0xbbd7a553,0xbd29ce1e,0xbd3230e7,0x3e0403ff, +0x3e3fce35,0x3e88e62c,0x3e95d3f1,0x3e74addf,0x3e549f3a,0x3e4af624,0x3e5b4771,0x3e7825e8,0x3e8b7760,0x3e93b5d8,0x3e9c3d9e,0x3e982519,0x3e87fb34,0x3e7c478a,0x3e48491c,0x3df35921,0x3d2ec544,0x3b157ccc,0x3ce38cb4,0x3d803b5a,0x3d5d32d2,0x3d9a0b54,0x3da4df73,0x3dc09cf1,0x3de3d843, +0x3dfd2607,0x3e0bdb91,0x3e1ae3c4,0x3e121015,0x3dfce2a4,0x3dd8a409,0x3db391eb,0x3d649679,0x3d47dfdf,0x3d9ffacb,0x3e3e4706,0x3e46d373,0x3e5aa639,0x3e699941,0x3e5735ef,0x3e41c477,0x3e28b12d,0x3e0cc24c,0x3df12555,0x3dd03095,0x3da9b02a,0x3d7bffff,0x3d49912b,0x3d2ae348,0x3d6283a4, +0x3d826423,0x3da60e41,0x3dcd0f2d,0x3dcdbacc,0x3e051345,0x3e29f561,0x3e1763bc,0x3e1d60f5,0x3e2836f5,0x3e209914,0x3e0c7360,0x3e09c730,0x3e02fcbb,0x3e13d715,0x3dec5430,0x3dc00e09,0x3d8cf9b5,0x3dd58907,0x3e081fc5,0x3e12c10d,0x3e2b1b0a,0x3e327a47,0x3e3cb0cf,0x3e3b6f27,0x3e4bba9d, +0x3e5ac15d,0x3e4aa899,0x3e3ee5f4,0x3e37c0ef,0x3e2c94ca,0x3e244252,0x3e1f0bf0,0x3e26d3eb,0x3e2aa654,0x3e288c6b,0x3e3b222f,0x3e4f964c,0x3e645864,0x3e6f94b6,0x3e6df3a7,0x3e76e88c,0x3e71fa0a,0x3e6af8ab,0x3e608edc,0x3e43ed77,0x3e2ece5a,0x3e1abac9,0x3e127cc6,0x3e09c93f,0x3e075ea6, +0x3de563a8,0x3ddf14af,0x3db2b411,0x3de0495c,0x3df19201,0x3e12b8ea,0x3e202fdd,0x3e6d5bfa,0x3e5528b0,0x3e4fa6be,0x3e59a331,0x3e5d6aec,0x3e6646a3,0x3e6f992f,0x3e77f8c6,0x3e7cd428,0x3e80a2ea,0x3e818c62,0x3e8379c4,0x3e85d3fe,0x3e88eeb5,0x3e8973c7,0x3e88e09b,0x3e877b52,0x3e866ec4, +0x3e8376ba,0x3e89a5b3,0x3e88424d,0x3e6f770a,0x3e6d65ab,0x3e61fc3e,0x3e581e63,0x3e46f910,0x3e3dbdf2,0x3e43897b,0x3e45b3aa,0x3e37f989,0x3e247cc1,0x3e2c6b49,0x3e33d075,0x3e47db64,0x3e4dbad0,0x3e442375,0x3e7eb820,0x3e3cb80a,0x3e4a6621,0x3e4cc223,0x3e4dd147,0x3e513477,0x3e5330de, +0x3e55f2db,0x3e58e1ee,0x3e5c9955,0x3e60fd73,0x3e63e2aa,0x3e66644e,0x3e6a136b,0x3e654c30,0x3e62adf0,0x3e60178d,0x3e60229b,0x3e5d5397,0x3e53b4d6,0x3e87b9ee,0x3e8dcc80,0x3e856a5d,0x3e752b38,0x3e869aa4,0x3e8249a5,0x3e83048a,0x3e808945,0x3e7b8b53,0x3e800296,0x3e8142c9,0x3e7c9652, +0x3e7e689b,0x3e60c7db,0x3e8039a5,0x3e8647cb,0x3e61b738,0x3d0fbcf6,0xbc809864,0x3d385d07,0x3cf0b8aa,0x3d09e14b,0x3cde3d94,0x3d13c30d,0x3d28cad7,0x3d5e539f,0x3d2f9b5a,0x3d2147e8,0x3d13c908,0x3d172e9b,0x3d1972a9,0x3d2465f7,0x3d1d4d90,0x3d173bfe,0x3d09becc,0x3d069fe3,0x3cdad200, +0x3d34dfde,0xbc99540e,0xbd4ca008,0xbddc3dda,0xbafb6c17,0xbd311998,0xbdb66c07,0xbdb7b552,0xbdb02b06,0xbda652e3,0xbda69fb3,0xbdaa4b6c,0xbdb36019,0xbd242c47,0x3c275cc4,0xbdb8e30b,0xbd416774,0xbd6b8942,0x3cad2210,0x3ccd3896,0x3c910538,0x3b799ff8,0x3cc67d95,0x3d2b60ed,0x3da13e06, +0x3d6ac9ef,0x3d469de1,0x3d197670,0x3d1a8f81,0x3d26a899,0x3d48fe40,0x3d44a9e4,0x3d334e31,0x3d10661d,0x3cfc28d5,0x3cf19540,0x3cb013b0,0xbd7ad18f,0xbbae022c,0xbbe12692,0xbc508df7,0xbc69adb0,0x3cdc50a3,0x3ce477c3,0x3cf543c3,0x3c07a0a3,0x3d276452,0x3d40071c,0x3bf98d87,0x3c863bf0, +0xbb858acd,0xba4a40f8,0x3cb6d483,0xbc95f3eb,0xbbd08bee,0x3cced6c1,0x3c86fd62,0xbb54e445,0x3d5ba00e,0x3dae49dc,0x3e27250a,0x3dcd2d6d,0x3d914d76,0x3d3dcee9,0x3d3dbfb7,0x3d545d05,0x3d8d6a71,0x3d80ee33,0x3d63ff9b,0x3d15c48b,0x3cdbf585,0x3cc20e23,0xbbe89f05,0xbcf0a3ba,0xbcfa5d42, +0xbcb6f4cf,0xbcb49a2a,0xbcaaaeae,0x3d1ac1f8,0x3c684020,0x3d2c5a25,0x3bcd8b32,0x3d59be27,0x3d01e80b,0xbb0dce13,0x3b85a43c,0x3b993bd4,0x3bae8532,0x3a20e801,0xbcdc234f,0xbd17b123,0xbc8f6a62,0xbd521ef2,0xbdb95e70,0xbc55cfb2,0x3d7aa25e,0x3e3e1c81,0x3ddf3fa6,0x3d586ec9,0x3bb6636a, +0x3bb1fa96,0x3cc1982c,0x3d7e8041,0x3d88a82e,0x3d5f55f2,0x3ceaa960,0x3cc007a5,0x3c8a6d07,0xbc294ff3,0xbd1d08be,0xbc71c79b,0xbd12f9d2,0xbc608099,0x3c3e943d,0x3d3aa46d,0x3d8cf837,0x3dc4e65b,0x3daec931,0x3dd65df0,0x3dc943a0,0x3d305215,0x3d3cbd89,0x3d21363f,0x3d24dd09,0x3c8f3d64, +0xbc5167e5,0x3d9d50d2,0x3dd10f18,0x3e23a542,0x3e90503e,0x3ea0e62b,0x3ea3fb4a,0x3e9e6294,0x3e9ebddd,0x3ea53728,0x3e97cf04,0x3e9672d2,0x3e83fd4f,0x3e4ae4e2,0x3e1d7f3d,0x3df1bad0,0x3dad3432,0x3ca2a91f,0xb9a9cae5,0xbcc0ebfb,0xbd864617,0xbc7be460,0xbb98d89c,0x3c720419,0x3d379fbd, +0x3dad8990,0x3de36cfe,0x3dda0325,0x3d83ca90,0x3d89d527,0x3d1dd2c8,0xbc2266dd,0xbc3da6c3,0xbce641bf,0xbcc67b6c,0xbc9b717f,0xbcc7f224,0x3bb72570,0x3d3bc90f,0x3c810554,0xbc40ad5b,0x3d2d94ed,0x3dd15c31,0x3e08919f,0x3e2f8208,0x3e5696fa,0x3e7f3102,0x3e82c0fe,0x3e81a752,0x3e844654, +0x3e1eedc5,0x3d78fa23,0xbd234c4e,0xbd66918d,0xbd091603,0xbb8a0d8d,0xbcd95a92,0xbca2abc5,0xba10cd34,0x3cb47558,0x3d6c3300,0x3d80163a,0x3def37f2,0x3e04286c,0x3d91ddf2,0x3d60e9f4,0x3d00b5fd,0x3c9b4ec0,0x3ca91b3c,0x3ce0f6bc,0x3be332b3,0x3c50ca6f,0x3ca26521,0x3cb17f6f,0xbc9d56f0, +0xbd137df8,0x3c8537bc,0xbe077c65,0xbe381852,0xbe45c2a6,0xbe36e2b4,0xbe280226,0xbe16fd2b,0xbdf76666,0xbda4d8f9,0xbc796539,0xbd27a2bd,0xbd4cf680,0xbd92b7ed,0xbd87fa1f,0xbd8653cc,0xbd51671e,0xbd43595c,0xbd1f2153,0xbd691c43,0xbd38404d,0xbd0da5e0,0xbd3f273e,0x3d9f60e5,0x3def35b0, +0xbd4c9a64,0x3e0efbbc,0x3df2890d,0xbc833245,0x3c45c2e2,0x3cb9f733,0x3c4599a4,0x3cc8e750,0xbd04a32d,0xbda3cee1,0xbde6960d,0xbe01887d,0xbd909122,0xbe606a71,0xbe9ea15f,0xbed2cd80,0xbecfa26a,0xbecebcea,0xbec9508d,0xbebaefdb,0xbeb0ed1f,0xbea728c6,0xbe920b5d,0xbe70e9fe,0xbe3f6753, +0xbe21331c,0xbdfe564d,0xbd9b4aa1,0xbd9f9993,0xbd93f623,0xbd4644d0,0xbd039962,0x3bff2939,0x3d262843,0x3d84d9b4,0x3d8d92c2,0xbd5f3ee9,0x3d8b1023,0x3da05516,0x3d43fa79,0x3d35bea1,0x3c3d066d,0x3b963054,0xbb945bd5,0xbdff13c8,0xbe3c2a6e,0xbe251b99,0xbe11c8b9,0xbde7bf4d,0xbe461a80, +0xbe7f2ddc,0xbe9c6887,0xbe9c8a55,0xbea2ce24,0xbeabc49e,0xbeb5b0ad,0xbeb4cf45,0xbea8ea6e,0xbe9996b3,0xbe7d04c5,0xbe40160b,0xbe1909f3,0xbde190a6,0xbdc1acae,0xbd92afe2,0xbd7793bb,0xbd3d2a48,0xbd18e33a,0xbd0cd5a0,0xbca6f771,0xbc347e2c,0xbb86eab2,0x3cc7c9f7,0x3d5e32d8,0x3d408ad1, +0x3c2ee006,0xbb45db51,0xbc85f7b1,0xbd065337,0xbdc98b1d,0xbdd1fc2c,0xbdebb75d,0xbddfeb5b,0xbe035566,0xbe24e30f,0xbe3dd847,0xbe4aa6db,0xbe4a473e,0xbe44f7a0,0xbe3c7a59,0xbe2b0306,0xbe203f95,0xbe1ba8c7,0xbe1ab0ba,0xbe2241bf,0xbe22fbd6,0xbe2e0d7c,0xbe2d9df3,0xbe26125c,0xbe14f601, +0xbe102621,0xbe0592a8,0xbdcbaa33,0xbdb875ec,0xbd6fe907,0xbc8e2d39,0x3c60e1c6,0x3cf16206,0xbc7d07eb,0x3c889685,0x3ca1cfe9,0x3c10e71c,0xbd3bc909,0xbdaefa61,0xbdae33c7,0xbde4e701,0xbdb53167,0xbdcd1423,0xbe0394c3,0xbe259ea0,0xbe4501e2,0xbe40e1a7,0xbe42bdb0,0xbe47bc9f,0xbe433823, +0xbe4013ba,0xbe3e4cde,0xbe387220,0xbe2e64ed,0xbe1b9f05,0xbe244e99,0xbe2c9ce0,0xbe385e19,0xbe3a250e,0xbe459dae,0xbe398f1a,0xbe0da855,0xbe0478e3,0xbdec9fb3,0xbdbdea20,0xbd6369c0,0xbd81f560,0xbcffd298,0xbd3842f1,0xbbe25435,0xbc5950cb,0xbbd04146,0x3a3a6d29,0xbc78f23b,0xbcd1e27a, +0xbd380052,0xbd8c937e,0xbe156315,0xbe3569a7,0xbe2ffb36,0xbe3414df,0xbe36e09b,0xbe3d4957,0xbe43f97c,0xbe4a89ae,0xbe4cb105,0xbe4eb122,0xbe4fb27f,0xbe50a92e,0xbe53b60a,0xbe553e01,0xbe563df3,0xbe53f985,0xbe516853,0xbe4c5099,0xbe477619,0xbe4c8573,0xbe00d851,0xbe1b3c25,0xbe1a5ec0, +0xbe109089,0xbdfc7816,0xbe013811,0xbdfe93ca,0xbe0783cc,0xbe003f8a,0xbe075e28,0xbdf93d60,0xbdf71c8e,0xbe0555ce,0xbe0c05d7,0xbe15204b,0xbe1ef6cb,0xbe2f99ac,0xbe26da0a,0xbe25210f,0xbe290bbc,0xbe2990db,0xbe2c6279,0xbe2e3b69,0xbe309b36,0xbe32c50a,0xbe35577d,0xbe38017a,0xbe3a84fc, +0xbe3c5ecd,0xbe3f172f,0xbe3a8b55,0xbe37ba89,0xbe352f39,0xbe354f0a,0xbe2f5de1,0xbe38c242,0xbe36dc4b,0xbe295e01,0xbdd7ce5d,0xbe2e5a32,0xbe21ca1f,0xbde0b883,0xbde6a042,0xbde5bdde,0xbdedca1f,0xbdee66f4,0xbdf64e2a,0xbdf4fbe1,0xbe1d2e68,0xbe2783c9,0xbdf27352,0xbe24d964,0xbe391d4b, +0x3cca6cc8,0x3d8b0fd9,0x3c7786bf,0x3d058331,0x3d00aab1,0x3d25698c,0x3ce20e99,0x3cc5036b,0x3cc2ab59,0x3cb72935,0x3cac447e,0x3ca04de3,0x3c895804,0x3c6ca288,0x3c35408d,0x3c356644,0x3c35dbef,0x3c4bd56c,0x3c60f584,0x3c96cdd4,0x3ac3c89f,0x3d759e86,0x3db17ef9,0x3e052662,0x3d46bbaa, +0x3db30d5e,0x3e081295,0x3e045a0f,0x3e00f3d1,0x3dee58c0,0x3e02c473,0x3e034c95,0x3df185a5,0x3dae14fe,0x3d2c1d58,0x3dfdc9f4,0x3dbd21a7,0x3dc8faea,0x3d062e03,0x3d129b10,0x3d408b21,0x3d8df3fb,0x3d373f85,0x3d1bfd48,0x3d0cf55f,0x3d080027,0x3ce81e47,0x3cb3e70b,0x3c510ac3,0x3b5f5c69, +0xbbd150c5,0xbc08f8f5,0xbbd5103b,0xbb311cb0,0x3b39855c,0x3b2cd477,0x3bbc68d5,0x3da4174b,0x3d0a9903,0x3d25c241,0x3d39faf8,0x3d6cb048,0x3d6dd712,0x3d457a88,0x3d4e74c4,0x3d6af7ec,0x3d54f165,0x3d1eeecf,0x3d13446d,0x3d287bb5,0x3d5f717c,0x3d42ddb3,0x3ce95b33,0x3d9a5d80,0x3d98a671, +0x3d8b34b0,0x3daea46b,0x3dff9515,0x3d71670b,0x3d1ed9f4,0x3cae3e81,0x3ce261b8,0x3ce4444c,0x3ca6930e,0x3b363594,0xbc74342f,0xbd097098,0xbd1cff5a,0xbd1c249e,0xbcfc6484,0xbc9e7197,0xbc9e021a,0xbb3ba83f,0x3cdab8a9,0x3cedf555,0x3cea22fe,0x3ce74cc4,0x3d54e62d,0x3d950af4,0x3d8d914b, +0x3d336d48,0x3d63fed1,0x3d7718b4,0x3d92d53c,0x3cabd6a2,0x3d34a942,0x3d34888b,0x3d2f9085,0x3d4fbf7f,0x3d3f944f,0x3d6584ba,0x3d7a9bd1,0x3dcc94bb,0x3e2bfbcb,0x3db3f45b,0x3d71f5e7,0x3d0ab965,0x3d603aee,0x3d5d5c95,0x3d2cb903,0x3c34201a,0xbcbeb736,0xbd714f17,0xbd8b1919,0xbd7f622f, +0xbd57c25d,0xbd286cc5,0xbd1fe3ac,0xbd070868,0x3bf147c4,0xbc836b2d,0x3c18c538,0xbc7c9b17,0x3ac40a19,0x3d532119,0x3d556f4a,0x3d84e511,0x3d043822,0x3da84ff1,0x3d704eef,0xbc6ec4ba,0x3c613a06,0x3c93aefb,0xb9b26e55,0x3c5cc1ed,0x3e4668b2,0x3e242a36,0x3e300272,0x3e1d92a2,0x3de6f857, +0x3dbfa966,0x3d53818f,0xbd5a7d9e,0xbd723925,0xbda162f4,0xbd9a22f8,0xbdcdb11e,0xbdeef98e,0xbe035195,0xbe0adfde,0xbe1138ee,0xbe0d81d5,0xbdc38889,0xbd9ec33e,0xbd36d58f,0x3c97f28c,0xbbe696e5,0x3c59d145,0x3c5742a7,0x3d227d27,0x3db095ea,0x3d7d9830,0x3d7e2f0a,0x3d670596,0x3d6abfc0, +0x3d6cbc29,0x3d90ee19,0x3da525b3,0x3dc80f0d,0x3e040677,0x3e3be3d3,0x3c071d1d,0x3c1e88d2,0xbd93e540,0xbd3a8631,0x3d691fe4,0x3da5c951,0x3d9e8f93,0x3c0f9f52,0xbc5b9b58,0xbdaef0c0,0xbe109c8c,0xbe57bcd8,0xbe8e8a10,0xbeb6841e,0xbeb36a92,0xbe9a9145,0xbe50278f,0xbe31ad4c,0xbe1bc712, +0xbddd6bce,0xbd412940,0xbcb89c5b,0xbc041196,0xbbc0f0e7,0x3c847b05,0x3d9a625d,0x3d909750,0x3dbc7a4d,0x3d9179b8,0x3dfc22a1,0x3e03ac4f,0x3ddfe1f0,0x3d886d6c,0x3d2ee412,0x3d1faf49,0x3c9632d8,0x3c9550b6,0x3c631120,0xbc332c1a,0x3b9f5a48,0x3c432158,0x3dbc2a93,0x3d79298b,0xbdafcaae, +0xbd52b9c4,0xbd245ddd,0xbbbf0c2e,0xbc7c1327,0xbd2bd75c,0xbdc3ea70,0xbdf222d1,0xbe033687,0xbddb172a,0xbda8f6ad,0xbd6e6d58,0xbd27f34f,0xbb7cbfae,0x3c81a0d5,0x3d4f23e2,0x3d2d2145,0x3d904275,0x3e196e25,0x3dc6606e,0x3dad7243,0x3c1a048f,0x3dcc5285,0x3da5ee63,0x3d4eda50,0x3d514b2d, +0x3d1b7c92,0x3d389ea6,0x3d278eae,0x3d04ab95,0x3d907a8f,0x3c80e146,0x3cac5286,0x3dad40fc,0x3e3df5e1,0x3e5b30f1,0x3e214132,0x3de80111,0x3d794068,0x3d855c3c,0x3c56a525,0xbaafe5b8,0xb7747c21,0xbb54120a,0xbc6a8993,0xbceda9fc,0xbd4f9b71,0xbd52fce2,0xbd499254,0xbd27fa05,0xbba198d4, +0x3c0c94ec,0x3b4f657f,0x3cbdfb93,0x3d9515ab,0x3cec6062,0x3c921453,0xbc82ad5d,0x3d312dd0,0x3d805310,0x3dc8ae1c,0x3d3e559a,0x3d0690de,0x3d0764ce,0x3d13ae53,0x3d7ba746,0x3db55392,0x3d4cea52,0x3d7463b2,0x3e0f6df9,0x3e36af56,0x3e317a79,0x3df0ec7c,0x3d86add5,0x3d4122fb,0x3d949d92, +0x3d617ed5,0x3d37aab0,0x3cc92e44,0x3c3588c3,0xbc13ab18,0xbc3a0e76,0x3b1f7489,0x3ca2bdc8,0x3d03b45d,0x3b29b748,0x3c627064,0xbbb48934,0x3cbc2a9e,0x3d52ff6f,0x3d994d74,0x3d3600b9,0x3d1d8fe8,0xbbada7f8,0x3d0bcd46,0x3d43ca3b,0x3d9a450f,0x3d690d6e,0x3d40842b,0x3d2769b7,0x3d9b8647, +0x3bef60c2,0x3c73f7ac,0x3d6d6ab3,0x3dd96545,0x3e1d90d7,0x3e01a2fb,0x3dd7c358,0x3d9d2556,0x3cf4b52c,0xbc33a0ae,0xbd2aa00e,0xbd3b2fc2,0xbd3706c2,0xbd415fe2,0xbce957b0,0xbc0d1817,0x3d090a79,0x3d72a01d,0x3d9cf17b,0x3d5cbd1f,0x3d497d0e,0x3d9d5021,0x3d7e20a3,0x3d6747ea,0x3d19fc50, +0x3ceab1e5,0x3c956324,0x3c97feb7,0x3d65a9f3,0x3d2c4d81,0x3d333e96,0x3d2e9fe4,0x3d6fb4e0,0x3d779a66,0x3cdb78e0,0x3ccc45b2,0x3db5423f,0x3dc8c978,0x3ddb0a4c,0x3df1518c,0x3e0778db,0x3dd76bba,0x3dac52b3,0x3d824923,0x3d6c8840,0x3d530822,0x3d2783f5,0x3d0d4abe,0x3cc07e43,0x3b5cb0d2, +0x3cdb6b32,0x3d357f4e,0x3d8422eb,0x3d9c7d8a,0x3ddfcd92,0x3ddec01a,0x3d7b602c,0x3d741938,0x3d5995c4,0x3d6fec58,0x3d2fb2de,0x3d9cf11d,0x3d4a84d1,0x3da486e5,0x3d4f2f0c,0x3d6d333f,0x3d2a8d7a,0x3d2b5bc1,0x3d1d90e1,0x3d1aac62,0x3d172864,0x3d85fc66,0x3d5dd005,0x3dd92cde,0x3dc4319b, +0x3dbabd63,0x3db2dcc6,0x3dad8e2d,0x3daba7f1,0x3da30810,0x3da34fd2,0x3d9e6107,0x3d9bca8d,0x3d960b29,0x3d94674c,0x3d89fe68,0x3d9ac455,0x3da36d7d,0x3dafeb8a,0x3db539f5,0x3dbbd635,0x3dcc50c0,0x3cac8942,0x3d933591,0x3d9b42ce,0x3d9a7455,0x3d7b1751,0x3d9ed672,0x3da4450b,0x3db0c47b, +0x3d9bad34,0x3dbc2733,0x3dbe6ab9,0x3db06605,0x3db9a82d,0x3daac888,0x3dab148b,0x3dc4c117,0x3dabf504,0x3dcba822,0x3db40ee1,0x3db5c92c,0x3daf2589,0x3dadd007,0x3dab66ff,0x3da92062,0x3dacc125,0x3dafa10e,0x3db29147,0x3db4a3e1,0x3db67fa5,0x3db6de0f,0x3db7561f,0x3db72e51,0x3db77d34, +0x3dbc0b98,0x3db5504c,0x3dd7e36a,0x3da80f50,0x3d835bd3,0x3bab5d9d,0x3db3bed9,0x3d88563f,0x3c8482a5,0x3c93bfdb,0x3ca58770,0x3ce38eff,0x3cdc2a5c,0x3cf5a6fe,0x3d0dae17,0x3d945d90,0x3dc1a0b8,0x3cd41f72,0x3d8c1f5c,0x3dc32099,0xbd6c00ee,0xbda1d8cb,0xbd67d6dc,0xbd879527,0xbd8be1c4, +0xbd92dc75,0xbd848b44,0xbd819696,0xbd8d3349,0xbd78c5ea,0xbd6e59db,0xbd631315,0xbd683b19,0xbd66f77f,0xbd6a59f0,0xbd536147,0xbd46efad,0xbd33d10f,0xbd408b8a,0xbd484c13,0xbd1a28c0,0xbd90daf9,0xbda8d2a5,0xbdc4879a,0xbd6acdd7,0xbd93d0fc,0xbda6649c,0xbdb0cc4b,0xbdb12e0e,0xbdab096e, +0xbdb2264b,0xbdb784b4,0xbdba9460,0xbda15007,0xbd7ba470,0xbdc256ab,0xbdb1391d,0xbdc92e94,0xbdbdb2e6,0xbdd173b3,0xbddcd887,0xbde4ab8d,0xbdbdb794,0xbdb74285,0xbdd48732,0xbda8fab3,0xbd9a1156,0xbd8e3a16,0xbd96c7e8,0xbd94f583,0xbd943bb4,0xbd69ac2f,0xbd4209bc,0xbd0eb86f,0xbd3066e0, +0xbd2a08fa,0xbd25ddaf,0xbda83234,0xbd57f4d6,0xbd60ddeb,0xbd2bd08c,0xbd1ee2fa,0xbcb04d0a,0xbcfabe83,0xbd12cca5,0xbd21c248,0xbd16eb44,0xbd0c520b,0xbd479773,0xbd54c770,0xbd82eb83,0xbd8ad4ec,0xbd89b587,0xbdb1be20,0xbde15459,0xbe12091c,0xbe1f7448,0xbe339624,0xbe0f2e04,0xbe0571b8, +0xbe20ff2a,0xbde065f8,0xbdcd6057,0xbdb19cfd,0xbdb84f63,0xbdb2ac80,0xbdb2a828,0xbd609216,0xbd154677,0xbc63e3d8,0xbcfa9c09,0xbcdd4854,0xbd026870,0xbd5b09bd,0xbd3ebfd4,0xbd0d3c92,0xbc0b1f5b,0x3a373e9b,0x3d0074cc,0xbb0eeeb6,0x3aad1266,0xbc15f0e9,0xb9c54a9a,0xbc78b3ba,0xbcd552e1, +0xbd02ecfe,0xbd3dc90a,0xbd63d179,0xbd8e470d,0xbdebfb5f,0xbe31f419,0xbe6712c3,0xbe758b28,0xbe8241a7,0xbe400595,0xbe33491f,0xbe5e5252,0xbe168ebd,0xbe00e63d,0xbdee5b26,0xbdfef198,0xbdf85909,0xbded9fe8,0xbd7de6e6,0xbce1c0cb,0x3c0a7c8a,0xbc76b39f,0xbc8c72ce,0xbcb493b5,0xbd73078e, +0xbcf94e74,0xbd168007,0x3a828869,0x3ccba7a6,0x3d910803,0x3d397cd7,0x3d19d52e,0x3d0793ef,0x3d3ea1fb,0x3cb4d414,0xbc945ce6,0xbcd379d4,0xbd247c59,0xbd6e38e5,0xbda91644,0x3dfa71db,0x3e112fb0,0x3dcd9baa,0x3d3d742e,0xbd915444,0xbe009119,0xbe23c41c,0xbdef7e45,0xbe028ee1,0xbdd8c02c, +0xbd74ffb9,0xbd5add9c,0xbd290391,0xbd525e55,0xbd16d74d,0xbd000e67,0xbbccf2a8,0xbccb45b2,0xbc1f530c,0xbcc702bf,0xbd7bc49b,0xbc8fc170,0xbd00427c,0x3ba9142d,0x3c8a5e12,0x3d79ebb0,0x3c6d2673,0x3cda985c,0x3d932873,0x3d83bfcc,0x3d95e7b1,0x3da05ae2,0x3d5453e7,0x3d4a9abb,0x3d907407, +0x3dc60b04,0x3dab2090,0x3ddcbd7f,0x3e26ebeb,0x3e24e797,0x3d83f774,0x3e4c40cc,0x3e58834e,0x3e49a2f0,0x3d8ffa92,0x3ca31d5d,0x3c94d329,0x3b95667b,0x3c87a214,0x3ce5988a,0x3d77ae33,0x3d4c75e8,0x3ca8d1c1,0x3c81d73b,0x3cf2c343,0x3b3cbc42,0xbcb19379,0xbc69f127,0xbc2c599b,0x3cacb3c4, +0x3d1b9408,0x3dd75e19,0x3d76564c,0x3d4b55db,0x3ce7e498,0x3dd1b03a,0x3dcd9e1a,0x3d85b100,0x3dc31023,0x3ddf0ac5,0x3db60b4d,0x3db6da41,0x3d79498e,0x3d7bb00c,0x3d223e23,0xbc891ac9,0xbe06b5eb,0xbd952710,0xbc3822e4,0x3e04970c,0x3d291084,0x3c86597a,0x3c670646,0x3bed1268,0x3c091b7b, +0x3b9ca3fd,0x3c514bff,0x3bf7f2bb,0xbc2cd223,0x3cd687f9,0x3d2c225f,0x3c999e4c,0x3c405a61,0x3c0bcc68,0x3950f295,0xbbaf0e5e,0x3ccb4177,0x3e305c56,0xbb04fe88,0xbd14dd90,0x3b3b5490,0x3d2d3461,0x3d90b2ad,0x3e25520b,0x3d0b5fcd,0x3bc5149c,0x3d51b7ee,0x3d4c9c47,0x3d03e58b,0x3c475271, +0x3ca17b7b,0xbca75b53,0xbe2d67cd,0xbdfc122a,0xbe07ec25,0xbde64e4c,0xbe327e27,0xbe462a66,0xbe4b43a2,0xbdee7dbc,0xbd23f523,0x3cb0a821,0x3d4f2702,0x3d6b39cb,0x3d2c6cc0,0x3d76527f,0x3d8face5,0x3d8931d8,0x3d5e5808,0x3d3cde88,0x3d49ca9d,0x3d4261d9,0x3d87a23f,0x3e211072,0x3d3054c7, +0x3c4f5862,0x3d1ca7db,0xb96e3663,0x3caf65fd,0x3dcdffe5,0x3d30fb79,0x3cd24325,0x3cbba245,0x3cae8ad6,0xbb4feb91,0xbcc7b103,0xbd61f7b4,0xbdce1b43,0xbe4d2947,0xbdea49de,0xbdc070eb,0xbdc4cd72,0xbdf414e2,0xbe1ba39f,0xbe43c1e6,0xbe2b9ad3,0xbe06d27a,0xbd9b9c11,0xbcf3ed78,0x3bf87abf, +0x3cd64ff1,0x3d00e0d2,0x3d0208e4,0x3d10ee8f,0x3d226a77,0x3d2cfe27,0x3d550589,0x3d27d565,0x3cf3766c,0x3d08d8d5,0x3d4a8cc2,0x3d38fa15,0x3d217db5,0x3cf32e89,0x3cc56df9,0x3cc4a228,0x3cae1a8a,0x3cd2ff28,0x3c98b833,0x3a9280bb,0xbc47a4fd,0xbd0dce80,0xbdc9393b,0xbe0841e3,0xbe0676c4, +0xbda81285,0xbd82af65,0xbd90289e,0xbd61c055,0xbd351c97,0xbcfcfcfc,0xbce13197,0xbc894f95,0x39ad3070,0x3cf57e76,0x3d131fb5,0x3b86d3b7,0xbc815243,0xbcace62a,0x3c2e43df,0x3ca151e1,0x3bf33d25,0x3c88c03d,0x3cd67aad,0x3d0c5418,0x3cfa7a32,0x3d158a27,0x3d2a98b8,0x3cd960ee,0x3d54855b, +0x3d5b98ec,0x3d3a506a,0x3d245364,0x3d01e890,0x3d103f16,0x3c787d02,0xbd82a73a,0xbdb19261,0xbd938ecc,0xbd78d8a4,0xbd65db7c,0xbd565d08,0xbd377cca,0xbd1992a7,0xbcee6408,0xbcc7598c,0xbc94b792,0xbc130e9f,0x3b33702b,0x3c8b45a4,0x3bbcc47b,0xb9b1136a,0xbb8f1686,0xbc4b2cb7,0xbd201d8f, +0xbd2131df,0x3b8df0f0,0x3bd329c9,0x3c844c32,0x3ca5d09a,0x3d1ad3b9,0x3cf098a1,0x3d24a700,0x3c7c9bf5,0x3d03fd71,0x3c26b014,0x3c202f82,0xbb59583e,0xbc09bd71,0xbc8b1d9d,0xbcb4c7ed,0xbd37105b,0x3cfb9c46,0xbb9f47e1,0xbc136e26,0xbc9046af,0xbcbfb614,0xbce8eece,0xbd0bf9f6,0xbd23cbec, +0xbd1b8f85,0xbd0bc5c3,0xbcf7dfdb,0xbcd1992e,0xbcb97a31,0xbc8148ec,0xbca03b9f,0xbcac6142,0xbcc3491b,0xbcc09de2,0xbcba2b67,0xbccfafcd,0x3cff504a,0x3bd55d41,0x3c46c3ca,0x3c7a74b2,0x3cebcba0,0x3cd020e7,0x3cbecca8,0x3cb023ec,0x3cf0d131,0x3cb6f785,0x3cc6875d,0x3d057507,0x3ccb2cc5, +0x3cd0a032,0x3cbb2f2e,0x3c237550,0xbc37ed6b,0xbc7d7135,0xbc4ba31e,0xbc74c35f,0xbc810c15,0xbc8ebad2,0xbc99c05b,0xbcaeb64b,0xbca577be,0xbca8a174,0xbcab574a,0xbcad697e,0xbcad172e,0xbca843fe,0xbca33faf,0xbc9be73e,0xbc988509,0xbc9d3dba,0xbc868393,0xbcd796cd,0xbc5dc402,0xbb5a3316, +0x3ce035bb,0xbc1f4d30,0x3a9f1369,0x3ce07218,0x3cda1d97,0x3cd41cfa,0x3cac51f8,0x3cb7fab0,0x3ca6da1c,0x3c92447a,0xbb4ab22a,0xbc5a698c,0x3c8eeeaa,0xbb58511d,0xbc4c4843,0x3c50849b,0x3c9610d9,0x3ba3964c,0x3c078f49,0x3c1311d7,0x3c172684,0x3c092cf3,0x3c06d7c7,0x3be602a8,0x3c2a917a, +0x3c23da7d,0x3ba6ef0e,0x3c01d397,0x3c0482cd,0x3c03c04e,0x3c0a971c,0x3c15c05c,0x3c1c1cf3,0x3c3859cc,0x3c4f1db6,0x3be7d42c,0x3cd32a97,0x3d03e7bc,0x3d0ee0fe,0x3cd30af3,0x3d0e8c00,0x3d239fca,0x3d18e919,0x3d11a08e,0x3d0a36f1,0x3d0fdc52,0x3d11622a,0x3d1970a4,0x3d00baec,0x3cb0a6a0, +0x3cf60196,0x3cc5099e,0x3bb0c5ed,0x3b8f9612,0x3c0aedcf,0x3c3a20cf,0x3c19c3e5,0x3b74ea6a,0x3aa921de,0xba6ac1ce,0x3c17a51f,0x3c2d6d60,0xbaaa58fc,0x3bf4477f,0x3c0e9a4f,0x3c01d78c,0x3be8162a,0x3bfd4d5d,0x3c013c14,0x3c62bc9b,0x3c587cd9,0x3c5ac28b,0x3d0790c0,0x3ca92f59,0x3cb136e3, +0x3d019d63,0x3d15ab77,0x3d06f07a,0x3cdf25cc,0x3cca3410,0x3cddc241,0x3ca25896,0x3c9fce70,0x3cfcc006,0x3cedffd6,0x3ceb6046,0x3cbbe948,0x3c02bfac,0xbcc0b59f,0xbc8f4418,0xb9c028c3,0xba359ba7,0xba69606f,0xbc14ce45,0xbc2ca4d3,0xbca43bd7,0x3bab5386,0x3bd15d7b,0xbc97dc85,0xbb6437f3, +0xbb5f3302,0xbb94f6e7,0xbb91ac98,0xbaf23608,0x3b63b918,0x3c55e548,0x3c737262,0x3c99bb4e,0x3cf2949c,0x3cf0a4d3,0x3cb4afee,0x3d33e0a7,0x3d571bba,0x3d3dbd26,0x3d318f80,0x3d01fee5,0x3d0f9a17,0x3cd3a741,0x3d023581,0x3d265dc7,0x3d0f1652,0x3cbe73fb,0x3c7013c2,0xbbe3895d,0xbd528996, +0xbd1f9b71,0xbb4cafb9,0x3c0341bf,0x3bb21e7a,0xbb08f8ff,0xbca72b1f,0xbd1dd2f0,0x3a761408,0x3c98ad03,0xbc8402c2,0x3c1cc56d,0x3c178d97,0x3a9505e9,0xbc074139,0xbbb5173e,0x3b272247,0x3c88da70,0x3c68e069,0x3c8bcfb8,0x3ce52cde,0x3ca9379d,0x3c9e0b1e,0x3d38ead2,0x3d725ee5,0x3d9d2e70, +0x3d47dc56,0x3cfa93bb,0x3cfbb03e,0x3d0a7e29,0x3cf41dad,0x3d240a1b,0x3d39a91a,0x3d059475,0x3cbc72c5,0xbc8d1083,0xbcb4a8f0,0xbcd8c345,0xbcace1cc,0xbd711924,0xbdb34439,0xbe1dcfff,0xbdff3e02,0xbb661986,0xbd82bfa4,0xbdbebc77,0xbe04bcbf,0xbdce8b09,0xbd9b8225,0xbd3551d3,0xbc6cc888, +0xbc169aef,0xbd2fea6e,0x3be5936c,0x3cbf8e77,0x3d650785,0x3d5e3053,0x3cf8027e,0x3d138c3a,0x3d2e0364,0x3d3b559c,0x3d8e25aa,0x3d486042,0x3d3f0b79,0x3d6b2cc2,0x3d89912f,0x3d70c914,0x3ca63878,0xbc59f4b1,0xbcedcb27,0xbce9be65,0xbd1a5cb7,0x3e2de668,0x3e1aa4c3,0x3e42dec4,0x3e3f3e2e, +0x3e396d0e,0xbcfabe57,0xbdea79d2,0xbd4c48d8,0xbd9a60af,0xbd9c5fa2,0xbe0291da,0xbe0336e7,0xbe00dc86,0xbddc5ff7,0xbdab3709,0xbd64575f,0xbd269907,0xbccb71da,0xbd1dc9c7,0xbc4307ee,0x3cc0ede9,0x3cc68b6a,0x3c8caa7a,0x3d073b3c,0x3d1c54c5,0x3da33736,0x3d224595,0x3cefa7e1,0x3cd56b23, +0x3d812e1f,0x3d8de2b8,0x3dd89fbf,0x3dc252bf,0x3dd6b2a3,0x3e112f09,0x3e1dd2c8,0xbb9ea143,0xbc8e3663,0x3ce8382d,0x3c9c8775,0xbc6a34b3,0xbcf8f82b,0xbb87694e,0x3d82b377,0x3da2f19e,0x3d715aa4,0xbcc90b70,0xbd4884bf,0xbdb0951a,0xbdf996b1,0xbe0aa8ed,0xbe121a7b,0xbe12dec0,0xbde6ca58, +0xbda193d4,0xbd1b6180,0xbb8d372d,0x3c59706a,0x3d21c7b3,0x3d4d8af2,0x3d93c69e,0x3e1d3552,0x3d5a5a69,0x3ba2cc5d,0x3cd574d2,0x3ba12c50,0x3d3758f9,0x3e209c82,0x3d8c7ae7,0x3d0a09c9,0xbc9f0454,0xbcaef174,0x3c47d1c7,0x3c03f293,0x3c8274aa,0x3d0c317c,0x3d88a059,0xbc86e5d9,0xbcd75f20, +0x3ce776d9,0x3d8e8095,0x3e06b6a4,0x3e35e34b,0x3e2bd344,0x3e0eb42a,0x3dd284c2,0x3da17aa4,0x3d75e822,0x3cf500c2,0x3d2ab722,0x3ce4ba74,0x3c079b67,0x3cc742fb,0x3c9b5acd,0x3ca6f530,0x3d43e3f2,0x3d3bda78,0x3d8ec1db,0x3cbb35ac,0x3c135043,0x3d7f4725,0x3ccfef51,0x3cee3ea6,0x3d596a06, +0x3d0fc7de,0x3d3c4bd5,0x3cf28205,0x3cbfe022,0x3c99c9ce,0x3cf3870d,0x3d0aa179,0x3ce17787,0x3cda8b7e,0xbd068973,0xbc65cc51,0x3d9f1b50,0x3da41cc8,0x3dcdbf19,0x3e01b543,0x3de59c96,0x3dc0d1db,0x3d891ed0,0x3d58529c,0x3d0749b8,0xbb88c602,0x3c8b120e,0x3b94ba71,0xbc8c21c1,0xbbfef420, +0xbc52ae63,0xbb99472c,0x3c8df234,0x3cfcffe9,0x3d2c3098,0x3d18921a,0x3cd55591,0x3c3c45ef,0x3cac96c4,0x3d2ae8a4,0x3d94a7ac,0x3d30216d,0x3cd0514a,0x3cb306e7,0x3cab92d1,0x3d4edfe6,0x3d4b81b7,0x3d73cad6,0x3d4354e6,0x3be5a5c6,0x3c3d553a,0x3cb508fb,0x3d88bd7b,0x3d424aa2,0x3d4eef05, +0x3d581803,0x3d81d9aa,0x3d6a5045,0x3d217050,0x3c0365b9,0xba9b84a0,0x3c73e4f4,0x3d01e024,0x3d19dd5a,0x3cdb7244,0x3c9a943e,0x3cd199e2,0x3ce3fc85,0x3cfbb446,0x3d0a38c3,0x3d15c84e,0x3ccd6ce2,0x3cc0d70c,0x3cd4efbe,0x3c968451,0x3c89fc61,0x3cee7e4b,0x3c9f6c52,0x3cd39524,0x3d0842e2, +0x3d32b468,0x3d399cde,0x3d4dccc1,0x3d18909e,0x3cb5327e,0x3c1d1b5a,0x3d062579,0x3d4259b9,0x3d89e769,0x3d3eea98,0x3d029d71,0x3c55788a,0x3c1e05fd,0x3bc11fcb,0x3b98f522,0x3b451610,0xbb0a377f,0xbc1199b5,0x3b2eeba9,0x3ce16fdc,0x3d0233dd,0x3c25b017,0x3cc07fe7,0x3cd85726,0x3cd6438d, +0x3cb1ef50,0x3ce3b7a1,0x3cc10bcc,0x3ced5364,0x3cb046ba,0x3d215611,0x3d47fab6,0x3d7db6be,0x3d7a128c,0x3d76deae,0x3d76bef7,0x3d5cbc22,0x3c401a50,0x3cca3854,0x3d0ab704,0x3d3e0f09,0x3d60beca,0x3d7e3291,0x3d8a2dbd,0x3d9deb91,0x3d89d553,0x3d78660b,0x3d547ce7,0x3d2e3c43,0x3d02e8f7, +0x3c9f6e2c,0x3cc58135,0x3ce95f1f,0x3d02a35f,0x3d07b684,0x3d08f6fc,0x3d1107bc,0x3b87fa4b,0x3cb3356a,0x3cac781c,0x3cbdb382,0x3ca4cb3f,0x3cce0938,0x3ca7e2be,0x3c9ca7d4,0x3c643bd8,0x3c27932b,0x3a9c3e38,0xbb0d4df2,0xba5f680b,0x3b6f78ca,0x3c025cf5,0x3c61fb07,0x3d50cb5c,0x3d43fdea, +0x3d4e9472,0x3d5b4bdc,0x3d68d6a5,0x3d736ad8,0x3d7e08f6,0x3d888b29,0x3d7f59df,0x3d7696a8,0x3d6e17af,0x3d632cef,0x3d5a6b2c,0x3d498636,0x3d501ea4,0x3d4ef8bc,0x3d521f9b,0x3d54748e,0x3d4f656a,0x3d685073,0x3d544810,0x3d41a1d5,0x3d0448e2,0x3d55ae61,0x3d44e4ad,0x3d24686f,0x3d1fecc7, +0x3d1c8b34,0x3d1cdc80,0x3d193014,0x3d1bc9b9,0x3d123e39,0x3d326036,0x3d3faa0d,0x3d15b9b5,0x3d3f5cd0,0x3d888d7e,0xbd1b71ac,0xbd3666c1,0xbd131e17,0xbd1d906d,0xbd29e136,0xbd496f3c,0xbd40ba98,0xbd43bf7a,0xbd5bf0f0,0xbd2be294,0xbd1f96c2,0xbd267b71,0xbd20a6c7,0xbd17dd8f,0xbcfd5ca8, +0xbd084d15,0xbd074db6,0xbd08867a,0xbd028bd1,0xbd02a11e,0xbcee1ad6,0xbd278fe0,0xbd307542,0xbd2bd243,0xbd08ba71,0xbd1c6aa9,0xbd241d06,0xbd1dc1fd,0xbd1c08dd,0xbd1d8cf5,0xbd27bba5,0xbd27b85b,0xbd17c532,0xbd1c9966,0xbd0e5836,0xbd1fa06e,0xbd368fab,0xbd2cfc36,0xbd20213d,0xbd271129, +0xbd51df66,0xbd95e5b9,0xbd977dd0,0xbd9ddfe1,0xbdb5922f,0xbd75b59e,0xbd51da42,0xbd66e131,0xbd60bf50,0xbd4a1dd6,0xbd036368,0xbd132e9e,0xbd0e87bb,0xbd0f5a7d,0xbcf8c985,0xbce20667,0xbce0ddb4,0xbd242f3a,0xbcfc35fd,0xbcd62efc,0xbc8fe691,0xbc744b09,0xbca6bab9,0xbc7a4e7e,0xbc9c7942, +0xbcc6b002,0xbcd1e96a,0xbcb763a0,0xbc7253bb,0xbc89d854,0xbc9fef24,0xbc9adf0a,0xbd08331e,0xbd3b8e39,0xbd477684,0xbd60b7f3,0xbd8cc602,0xbde36e35,0xbdda392a,0xbde36eef,0xbe0a25dd,0xbdab60f3,0xbd8855c3,0xbd96ec1a,0xbd8aa287,0xbd67ce01,0xbcbbfd62,0xbd00e35b,0xbcd9d8b4,0xbcecb57e, +0xbca0d97a,0xbc8e3424,0xbc93b934,0xbcef3a04,0xbcbc5724,0xbc2b3431,0x3bd113e7,0x3c0f0834,0xbb5f8085,0x3c29444e,0x3c0895f9,0x3a4a69e5,0xbbf32c0d,0xbc0b323e,0x3bfb0871,0x3af83625,0xbb03b49b,0xbb837592,0xbd1cd1b4,0xbcc28237,0xbcdeeb42,0xbd08817a,0xbd88f723,0xbe117a01,0xbe17a83b, +0xbe1df7af,0xbe3c6383,0xbde8cbea,0xbdb4f99e,0xbdcc0ebe,0xbdc8d508,0xbd9962ff,0xbcb83d7f,0xbceeaea4,0xbcdc4a6f,0xbce7deec,0xbc2f519f,0xba7b95b3,0x3b4277b6,0xbc286ac5,0xbacffdea,0x3bd31f3d,0x3d230acb,0x3d637d0d,0x3d4a64c9,0x3d545789,0x3d1a51b7,0x3d0c46cb,0x3c9a385d,0x3c9998af, +0x3d2e1c50,0x3d40820d,0x3d1e9e78,0x3d26599b,0xbba9aab3,0xbdf9d9d7,0xbd93c589,0xbdfabb7c,0xbde8bba2,0xbd91ca49,0xbde00781,0xbdf5e695,0xbe22bb08,0xbdc94e79,0xbd96db06,0xbd84a617,0xbd78ca77,0xbd7d5633,0xbd3f00a3,0xbd217873,0xbc4ddf27,0x3c203a56,0xbbda0ce1,0xbc8cbf62,0xbcf1345d, +0xbd0d4604,0xbc8c6b28,0xbac138cd,0x3d08d068,0x3d05f09c,0x3c51d189,0x3d5b2a5b,0x3d6b9b07,0x3ccc1258,0x3d71fff8,0x3d18a2c4,0xbcc2eeba,0xbb87dbc2,0xbc8ca431,0xbd6988fc,0xbdef69d0,0x3e0ee92b,0x3e1331f3,0x3db8369b,0x3cbfa810,0xbcacd776,0xbe0063db,0xbe315b18,0xbe732395,0xbda6f0cc, +0xbc7f07b1,0xbcab5a09,0x3b00b2b2,0x3c28f6fc,0x3cf16e98,0xbb84c1d1,0xbcc0c9b5,0xbd3970ad,0xbce33d47,0xbc5d6db9,0xbd1dd54b,0xbd51d382,0xbcdbfc39,0xbc45c9dd,0x3d13ff18,0x3d5414fc,0x3d621162,0x3ce0cd71,0xb989e1fb,0x3c11a1f4,0x3c3ffe9c,0x3d1aecd5,0x3dce7cfa,0x3d177fd8,0x3cf9ead6, +0x3d903d7c,0x3ddeab57,0xbd43b945,0x3b625e21,0x3ce038bc,0x3deb3be3,0x3e9459ed,0x3e60bc5f,0x3e470199,0x3e0759e9,0x3dcc9906,0x3d5c2845,0x3b9da764,0xbd056753,0xbd6204a0,0xbd307e97,0xbd2f0672,0xbcd8f577,0xbc5ac6b0,0xbd1df46b,0xbd4aadc0,0xbd14aef9,0xbd099823,0xbca9eabf,0xbd433faf, +0x3d6d3404,0x3d553184,0xbd339050,0x3be5fbac,0xbbcdff34,0x3bf1922c,0xbcba9c19,0x3c3d3595,0x3d96f75a,0x3de10cf9,0x3dec1011,0x3c8de146,0xbcbd2322,0x3cbd1c8a,0x3cc1b6fd,0x3c6740a4,0xbc818fff,0xbc629523,0xbd1cb5aa,0x3c11f77c,0x3dc2c747,0x3e261875,0x3e3033a1,0x3dc46d19,0x3d9c29b2, +0x3d0b2408,0x3b04059d,0xbd39bd06,0xbd60fc5a,0xbd01dce2,0xbd2b9046,0xbd14de64,0xbc97544d,0xbcbc72ea,0xbbd40091,0xba676c75,0x3d8f2f93,0x3d8d1880,0x3c46b0d5,0x3d2ea648,0x3d0b3b2a,0x3d1f9730,0x3d60e412,0x3d752c9c,0x3c90301d,0x3cd28d10,0x3cd8c309,0x3c896168,0x3ce6c531,0x3c1a5a49, +0x3bf99c3e,0x3c90a2b4,0x3ca41469,0x3ca4244b,0xbc2f204b,0xbc91d14d,0xbca274e9,0xb96255d6,0x3bd8ea03,0xbcc37de2,0x3ca131d3,0x3d1a8ad2,0x3d8079b2,0x3d13fb0e,0x3ce523ea,0x3ce5dd81,0xbc21a970,0xbc818a4c,0xbc1e0903,0x398fe12a,0x3c4a328c,0x3c1c7eb3,0x3b972157,0x3bf80611,0x3ca97b81, +0x3c031636,0x3b9010ea,0x3c9e3de5,0x3c354f74,0x3ca8e618,0x3cdbd141,0x3d4c62fb,0x3d456843,0x3c93caf5,0x3c385621,0x3a303a2e,0x3b5033df,0x3ae646d6,0xbbee3f38,0xbc56a088,0xbd4765b9,0xbd4e17d0,0xbd187bdc,0x3c55cc8d,0x3ca1d009,0xbc85a0bd,0xbcba07ac,0xbc9205f7,0x3ba71fe2,0x3cc72c71, +0x3cae7abf,0xbc133487,0xbbad2edb,0xbc171e94,0xbc202d76,0x3b408769,0xbb1d3624,0x3b20641c,0x3beb1a31,0x3c6eacc4,0x3cef56fe,0x3ccdb125,0x3c93c149,0x3b9d8b53,0x3c1b2532,0x3c3a1e5e,0x3c4eede8,0x3c08bb92,0x3b2ddfdb,0xbbfa8e5a,0x398aca24,0x3c235e0d,0x3c0ff58b,0xbb0400bb,0xbc2d377f, +0xbc8f02dd,0xbca48b3c,0xbccdf472,0xbd1f14f3,0xbcc62246,0xbbfb5cc9,0x3c8796f0,0x3b77797a,0xbc28e2d5,0xbce07907,0xbc97eeb5,0xbbaeddef,0x3bff5334,0x3c1b93fc,0x38ebac6e,0x3bfc407a,0x3cbaa807,0x3c79b0ab,0x3c5a2e3f,0x3c0137a9,0x3bfbcc84,0xbb066e1e,0x3c5b7ef2,0x3c9ee867,0x3d100dce, +0x3cca76f8,0x3ca263bf,0x3c47ed67,0x3c3acd9a,0x3c6d9d5e,0x3c74759a,0x3c32fbbc,0xbbf281e6,0xbc85353d,0xbc67a01f,0xbc5c9ca4,0xbc66bd9d,0xbc6bc20e,0xbc5fc32a,0xbc5ac530,0xbb214c34,0x3b501f57,0x3c359533,0x3c93b867,0x3cf2933d,0x3d20a2a3,0x3d15640e,0x3cfd81bf,0x3cdfbe3e,0x3cc447fd, +0x3cba4803,0x3ca07914,0x3cfc7455,0x3c3a72a6,0x3bdfdda2,0x3b8b5c26,0x3af5ec1e,0xbc0b7ee7,0xbc18e629,0xbc5daa31,0xbc503950,0xbc7d3395,0xbc40f078,0xbc6e967a,0xbc2cb815,0xbc4408a8,0xbc692486,0xbc7a8ee0,0xbcace12d,0xbceccf82,0xbcdc7ef4,0xbce2ff59,0xbce0bada,0xbce4e46f,0xbce82c6a, +0xbcf81213,0xbce0ccec,0xbcce9048,0xbcbf734e,0xbc9ec538,0xbc892093,0xbc44e6a4,0xbc6e4d04,0xbc7242cc,0xbc8168e5,0xbc866ca6,0xbc858c1e,0xbcabe799,0xbc4b6dd0,0xbbc15f09,0x3c30ef41,0xbcab63aa,0xbc4d2951,0x3acd014e,0x3a4282e3,0xb7dbbd9f,0xbadf24b9,0xbae33f47,0xbb484511,0xbb10bee0, +0xbc48534a,0xbcb219a1,0x3a3b455a,0xbc62be8d,0xbd2436a0,0x3c2e441d,0x3bdb65c1,0x3bf6326d,0x3c29eb50,0x3c531f6f,0x3c631051,0x3c4f9f3a,0x3c380003,0x3c3b276f,0x3be8a7bd,0x3c007826,0x3c6e2107,0x3c3b5fd8,0x3c2f8401,0x3c056feb,0x3c0c409a,0x3c033fab,0x3bd8d42e,0x3c0ec372,0x3c0f460a, +0x3bc36736,0x3c3762df,0x3c4a6338,0x3c241243,0x3c67b870,0x3c5a2dab,0x3be65c93,0x3c1b7ff0,0x3c15d8b1,0x3bd82386,0x3bf6ebbc,0x3c04907a,0x3c3d5a02,0x3c346349,0x3c10c72c,0x3bd72b41,0x3bbfea8d,0xbb99d68d,0x3c25afe7,0x3c881248,0x3caa20a4,0x3ca51dba,0x3c99b4a8,0x3c858a85,0x3c92ce5f, +0x3b578a34,0x3bb4355d,0x3cd1d1db,0x3ca5ad6d,0x3c89ff7c,0x3bfa619f,0x3bf25a16,0x3bcb8609,0x3b49f2cb,0x3c09ed0e,0x3c03c2c9,0x3b5425cb,0x3c254bb7,0x3c4c66fb,0x3c9df194,0x3c9c8cb8,0x3c9075f0,0x3c2924cf,0x3c727996,0x3c694820,0x3c114ff3,0x3c18884e,0x3c313b8c,0x3c94ef47,0x3c2c285d, +0x3bcc73f3,0x3bd29d34,0xbb51b5e6,0xbcb69b70,0xbbb7b8d8,0x3c5d23c9,0x3cbfdb9e,0x3cfa3e28,0x3d163c33,0x3cd404e2,0x3cf639b1,0xbbe2f276,0xbac2c719,0x3d175a0c,0x3cc324fd,0x3ca86e56,0x3b805050,0x3b5de0a4,0xba27236d,0xbbe93324,0x3b856a70,0x3b7eb02f,0xbbc697f1,0x3bd03ce8,0x3c3c2765, +0x3cc3eda3,0x3cc4d167,0x3cb485e7,0x3bb90a84,0x3ca06d3c,0x3c6f1499,0x3bdab34a,0x3ba4b994,0x3bf08d2d,0x3cd67b82,0x3bb58160,0xbb381b45,0xbaff2ffd,0xbca1e894,0xbd02047d,0x3bb672cd,0x3ce25959,0x3d1d0be2,0x3d3c8639,0x3d3f3da9,0x3d36dd8e,0x3d586c80,0xbbd06c16,0xbb3fa593,0x3d82790d, +0x3d41be58,0x3d0b501c,0x3b72fa76,0x3a960207,0xbb1f7eb6,0xbc64b8d8,0x3b0bc1c4,0x3b03760a,0xbc50f805,0x3bc8ed57,0x3c6656f3,0x3d03371a,0x3d28c7f8,0x3d19df4a,0x3c49b1fb,0x3d2d922a,0x3d1ed288,0x3c84aaef,0x3c56c405,0x3c655c29,0x3d2cd501,0x3c86a724,0x3ae39df2,0x3bcfad40,0xbd039677, +0xbdad11b9,0xbdba06aa,0xbdedaa28,0xbdb49f0c,0xbd0d2580,0x3ca0ae60,0x3b8e9590,0xbd8c0bc9,0xbd4c0a88,0xbd2c224b,0x3b7e4f32,0xbbd8350c,0x3a80bda3,0x3b4d2a6c,0xbcb50fe4,0xbd0b0326,0xbce18567,0xbca159a0,0xbca8ddfa,0xbca5f2ed,0xbc00a300,0xbc13d786,0xbb34feec,0x3c8e51f2,0x3cf9797a, +0x3ca9ebe9,0x3d1df30c,0x3d282d92,0x3c99b848,0x3d2239fe,0x3c56b2c7,0xbc88fffd,0xbca53540,0xbcd584bc,0xbd46cd4f,0xbd8bee96,0x3c5c1b2e,0xbc126e09,0xbdbd6a52,0xbe01f978,0xbe36b02c,0xbdce5b8d,0xbd993f57,0xbdfc1d46,0xbe00232d,0xbe009094,0xbd55ced6,0xbda44e38,0xbdb8f058,0xbdba0483, +0xbdbfdba5,0xbd79f239,0xbb8c60de,0xbc9b6e19,0xbc6df048,0x3c6dc147,0x3c68062b,0x3cbbf3b8,0x3cfb988e,0x3d433630,0x3d3bf4e5,0x3cd5ae43,0x3c8cb57c,0xbab98e2d,0x3c278f20,0xbbe2548c,0x3cb1b1ba,0x3d53aefd,0x3d20eaa1,0x3bf7a9cd,0xbd3c3fcb,0xbc1e63cf,0x3d8610e6,0x3dfeaa49,0x3e3b7c49, +0x3e508703,0x3e212e46,0x3e3058a6,0x3d7d51b7,0xbe11b533,0xbdb7b98f,0xbda3a84b,0xbd4932d6,0xbd73d5bd,0xbd46e3f4,0xbcb5ca75,0xbd1aea70,0xbd1b6904,0xbcc315e1,0xbd004b6a,0xbd10a47b,0xbd048af3,0xbd002ee2,0xbc0ab8c5,0x3bccb24f,0x3da854ce,0x3d9024f1,0xbcf36f07,0x3ca1630d,0x3c093ade, +0x3c0946e9,0x3b369f42,0x3c8a5b8d,0xbc691ea0,0x3dbc1060,0x3e0b01dd,0x3def84e1,0x3daedf72,0x3bce8265,0x3b670b70,0x3c431a86,0x3cd22dc3,0x3cfed851,0x3dbfcb43,0x3dd082ca,0x3c886ba1,0x3d892718,0x3cfa4491,0xbc58ec6d,0xbdc12106,0xbe136ce9,0xbe203894,0xbe1457d4,0xbe024def,0xbdcdf9c5, +0xbda39ac6,0xbd77f645,0xbd1d64cd,0xbc666fa8,0x3be03a0a,0x3a7788bf,0x3d23b262,0x3d197654,0xbc8e46d8,0x3ce40752,0x3ce5a7e3,0x3c1ac869,0x3d278608,0x3d7447b2,0x3d4f24db,0x3d64b933,0x3d19e3f2,0x3b2d3e30,0x3be3944a,0x3cf8aaee,0x3d0354e2,0x3cfbbfec,0x3d354c11,0x3d91973e,0x3d619dc5, +0x3c998b8a,0xbd53d1ac,0x3ca6cf84,0x3d8651c3,0x3dffa7ed,0x3dd175c6,0x3db34276,0x3d757e15,0x3d515aca,0x3d102a51,0x3d074cd7,0x3d042866,0x3d086141,0x3d0707bc,0x3cb9f13e,0x3cdbcb38,0x3cb7d69e,0x3d47c059,0x3d55e569,0x3cf496c2,0x3c59a280,0x3bcdff1e,0x3950c6f8,0x3c48e117,0x3c61aaad, +0x3c69c78f,0x3d1ace9b,0x3d43ceee,0x3d1e39c1,0x3d1c31f4,0x3ceadf01,0x3d18065d,0x3d5ebfa9,0x3d873ed1,0x3d8523af,0x3d3f5301,0x3cc269e4,0xbc821554,0xbcd80464,0xbcaad6f0,0x3cc4c13b,0x3b55396f,0xbc8b1027,0xbd3d1fbb,0xbd7f590d,0xbd4ddc6d,0xbc06af2c,0xbb39011e,0x3bbdbd13,0x3b012bd3, +0xbc137fca,0x3afb9029,0x3bf7110d,0x3c826c44,0x3c945304,0x3c8de9f9,0x3cc21f75,0x3ccc19c7,0x3cf82827,0x3d1ceedd,0x3d38b0fc,0x3d30ff83,0x3d2ec8f2,0x3d108d56,0x3ccff30a,0x3cc62a97,0x3d0f4789,0x3d2c6c41,0x3d1ec8bb,0x3d12d560,0x3d0bd008,0x3ca2f3cc,0x3c001345,0xbb650d94,0x3bbcc703, +0x3c2b6e04,0x3c786721,0x3cc8d4a6,0x3d15c6a2,0x3d3e2854,0x3d31732d,0x3d0b788f,0x3cbf1306,0x3ca5f279,0x3ce0ddf2,0x3cb3822e,0x3c638850,0x3cc31b8d,0x3cfac658,0x3cf7715f,0x3ccdf37f,0x3cf42c43,0x3cb060ce,0x3cd8e1d5,0x3c95ed36,0x3c996cd9,0x3c57ddf4,0x3c64a57e,0x3c893126,0x3c9b4c6e, +0x3ca0d552,0x3ce5efe9,0x3beb2b2b,0x3c711e47,0x3bf34300,0x3ad4f923,0xbb432d7c,0xbc008b07,0xbc36260c,0xbc913ec0,0xbc8afaa1,0xbc8dfbf6,0xbc90b952,0xbc82affa,0xbc80e418,0xbc581944,0xbc389485,0xbbcbfc23,0xbad6bdae,0x3b14b53c,0x3b5ac35c,0x3bf3c6ea,0x3b961900,0x3c35cb65,0x3c385a5b, +0x3c245b6f,0x3c33b62b,0x3c83e598,0x3ca418f5,0x3cb9e389,0x3cbcf01c,0x3cf9a365,0x3d101fd8,0x3d16c09e,0x3d010336,0x3ccbb645,0x3cb7936b,0x3cb3ad4d,0x3bd2c2ca,0x3c743309,0x3c35b8b7,0x3c2a777b,0x3c09cc5b,0x3be94f39,0x3bb5e3f8,0x3b7127f1,0x3b942ebf,0x3ba55c23,0x3bc2858c,0x3bbaaf29, +0x3bbc316f,0x3bb57226,0x3bd76ded,0x3be4cb73,0x3bf71884,0x3c054f3e,0x3c0e1690,0x3c41a608,0x3b9fd076,0xba91149c,0xbc5e0aac,0x3c1d561a,0x3a8ac187,0xbc643f26,0xbc4042ed,0xbc20b85b,0xbbe5fc85,0xbbdf2a77,0xbbc13665,0xbb66af86,0x3bb719c9,0x3c6dc4ac,0xbc13355d,0x3ab2a86c,0x3c738c33, +0xbc287737,0xbc457dbe,0xbc3e7b35,0xbc59376f,0xbc616d11,0xbc3d4ea3,0xbc328e76,0xbc33cff8,0xbc493766,0xbc803245,0xbc7d9a5e,0xbc3772cf,0xbc2c3dae,0xbc22e924,0xbc34c217,0xbc2f31a5,0xbc20052e,0xbbce7bac,0xbc0dcd64,0xbc08ef1f,0xbb86026f,0xbbf0703a,0xbbee911f,0xbba0a466,0xbbcf0eac, +0xbbef04f7,0xbbeb8ba0,0xbc0b0387,0xbc14a081,0xbc1e704e,0xbc1d0a99,0xbc0df0be,0xbba11278,0xbc184eb1,0xbc298f85,0xbc45db6d,0xbc43a73d,0xbc97369b,0xbcb3c8d3,0xbcc9529c,0xbcb20b67,0xbc686443,0xbc343cee,0xbc5bbce3,0xbca75b30,0xbd04e22c,0xbd045620,0xbc9fe638,0xbc7eeac9,0xbc52c752, +0xbc750693,0xbc630876,0xbc42b847,0xbb097d37,0xbc1003f4,0xbbb8407f,0x3a9c2176,0xbb622cee,0x3b59ef84,0x3b821ac3,0x3b1ab490,0x399ba1a0,0x3a2d4dd2,0xbba597b8,0xbbec9506,0xbbf799e0,0xbbeff202,0xbb8f60ac,0x3b351de9,0xbb6790d2,0xbc1adfe6,0xbc9e9e9d,0xbc9f89f4,0xbc8c0be6,0xbcad3430, +0xbd1629e7,0xbd10d7dc,0xbcafcc2d,0xbc9dd829,0xbc8be666,0xbcc8119c,0xbd3f053b,0xbd47cb9c,0xbccfe450,0xbcae3ab1,0xbc6f8096,0xbc993d58,0xbc84c481,0xbc45f635,0x3bc9c344,0xbbefd3e4,0xbafe22d3,0x3beab419,0x3bc61199,0x3c78b13c,0x3cb001de,0x3c84a660,0x3c49a5c6,0x3c951b3f,0x3b92a94c, +0xbb12f952,0xbb102646,0xbb5ebd77,0x3b07f4f5,0x3ca25897,0x3b4d2bf5,0xbbf1029a,0xbcb8ebbc,0xbc96032b,0xbd0f88a8,0xbd08aa91,0xbd39353b,0xbd11d509,0xbc445af3,0xbc364129,0xbc930052,0xbd14cf4b,0xbd9f061a,0xbd9f1433,0xbd1d66d7,0xbcd90358,0xbca53c36,0xbc9cbb94,0xbc8e8626,0xbc39e95a, +0x3c7eab9e,0xbb99df41,0x3ba13502,0x3c930967,0x3c125590,0x3cc80d25,0x3d03e32c,0x3cfd6a0e,0x3cb5c4a0,0x3ca66b85,0x3cb89dcf,0x3cd17ae3,0x3c0ce8ef,0x3bf5f43a,0x3c27703f,0x3d21fb83,0x3c637dea,0xbbac7e84,0xbd08574b,0xbd240ae6,0xbc1e8588,0xbd52c044,0xbda7b1f0,0xbdc347cd,0xbdf8aba8, +0xbd83e796,0xbd0f4588,0xbcad32e1,0xbce27dd2,0xbd3f6476,0xbdc2806b,0xbd6ce678,0xbd307bce,0xbd3920ab,0xbd053535,0xbcba9d71,0x3b3b35a4,0xbc147e44,0xbc2a8ae0,0xbccaae8e,0xbc78e5cc,0x3c68520e,0x3d03cfe1,0x3c8e68b0,0x3cc1b214,0x3d5d83a9,0x3d02f5a4,0x3c97ae05,0x3c5e577f,0x3c8ea820, +0x3b5908f4,0x3bb05271,0xbcc7f12b,0xbd00fc11,0xbcafabf7,0xb9646bdb,0xbdb1ddac,0xbda800a4,0xbde5c275,0xbdb404ad,0xbcf27eaa,0x3c7a2093,0x3c8c9010,0x3cd77564,0xbdb7a2aa,0xbdd876d4,0xbd610f1d,0xbc25cdd8,0x3c5dc073,0xbb3bef57,0x3c564f53,0xbafbbd94,0xbc712ed0,0xbc0de2f6,0xbb99fed3, +0xbc5bcb14,0xbc4284f1,0xbbb02657,0x3c635c36,0x3d3cd19b,0x3d2cf732,0xbc51f7d3,0xbb5210a0,0xbacc2bf9,0x3bde3b73,0xbc0fe212,0xb9652cce,0xbc8eb563,0x3d20dba8,0x3d0e7cf1,0xbc8433f5,0xbd7c3d61,0x3e347827,0x3e56fe62,0x3e2b9a5f,0x3ddfea80,0x3cee68bd,0xbd8aa4ac,0xbdbcd06d,0xbc9fa228, +0xbdecea5b,0xbde39846,0xbd03dd8a,0xbcb091d0,0xbcc7029f,0xbda212d3,0xbd8b3ea2,0xbd7b21fa,0xbd11b453,0xbc85823c,0xbbc80a11,0xbc6ecfeb,0xbc5c64bd,0x3bcaf81e,0x3d411e34,0x3caa03e0,0x3c46aafa,0xbb8f261e,0x3ba55a88,0x3b4837c3,0x3b0109a9,0x3bffd859,0x3c8e1408,0xbc00cfc5,0x3d3e3288, +0x3dae8ee4,0x3e20571b,0x3e225508,0x3b620ec7,0x3a44a4ae,0xbc7f7dd4,0x3cfe56ed,0x3de67120,0x3e2585d6,0x3e118606,0x3dc80803,0xbd56aba0,0xbdd40561,0xbd6a2124,0xbd7d9c0c,0xbd2b3706,0xbd63385a,0xbd4face1,0xbd7179dc,0xbd5dfccb,0xbd57a51b,0xbd1388ce,0xbc8f9c1e,0xbc1f5d27,0x3c0ebdcc, +0x3d4ac344,0x3ca86bd0,0x3c6a70f3,0x3bfbc3ce,0x3ba6bc10,0x3c173e6e,0x3c0d9fcc,0xba64473a,0x3c726177,0x3d6b5c20,0x3d8d9299,0x3d847f5e,0x3d3a89c7,0x3cd7edcc,0x3d0e031d,0x3d10cb10,0x3cba2d46,0x3a7e919c,0xbcacb3c4,0xbb323543,0x3c97f7f3,0x3d996824,0x3d09db28,0x3d1f54cf,0x3d979cb2, +0x3d4dd4b6,0x3ced2224,0xbc06927c,0xbc878550,0xbc6f0d2b,0x3aca9f95,0x3b3e2fea,0x3b9518e3,0x3c54a704,0x3c724aa8,0x3c812d6a,0x3d0076d6,0x3d39ffd0,0x3d3dd154,0x3cd47b0e,0x3d0539cc,0x3d18c266,0x3d69db45,0x3d22ecc2,0x3cf02b93,0x3cb41a83,0x3cfdf1e8,0x3d238c3c,0x3d3588f0,0x3d23160e, +0xbb8c9adb,0xbc9b2da0,0xbcf28d2e,0xbcac15dc,0x3b9ca0a3,0x3c9bbc9e,0x3c9d2ef4,0x3c6f7ad1,0xbc829e1d,0xbcacfd46,0xbc4291ac,0x3cddabb9,0x3d7375cd,0x3d9ad70b,0x3d9fbfc8,0x3d83a0b5,0x3d34358f,0x3d085298,0x3cd7167b,0x3cd39248,0x3d0840be,0x3d1ab743,0x3d1f108f,0x3cd20faa,0x3c955e32, +0x3c99ff99,0x3cd4fb1a,0x3d02cdfd,0x3d1a4b56,0x3d2498db,0x3d2eb875,0x3d123f65,0x3d348305,0x3d1b759d,0x3cd91929,0x3c0eecd7,0x3c4dc65e,0x3bdcd84f,0x3c84a289,0x3cccab26,0x3cfbc20c,0x3ccf6756,0x3ccafae3,0x3cdc7625,0x3ca9c82e,0x3c50fd8c,0xba95bc7c,0x3baa8974,0x3c168fe8,0x3c94b561, +0x3ca7af36,0x3cdfdf18,0x3d0e9923,0x3d1106fa,0x3cf50d15,0x3d088a6b,0x3d09679b,0x3c8d9887,0x3bc3513a,0x3ca8419c,0x3d0d8e80,0x3d379268,0x3d154986,0x3cdea2ab,0x3caea24b,0x3ca2e647,0x3ca9100f,0x3caf90de,0x3c8059f0,0x3c3fa675,0x3c139aea,0x3c368f77,0x3cdf6db4,0x3ce4fb44,0x3cce4681, +0x3cacbca4,0x3c9e419f,0x3c946b39,0x3c7e1a7d,0x3c4a8306,0x3c054430,0x3bc47a94,0x3b728317,0x3a95a0ea,0xbb2400c4,0xbbd11c9b,0xbbca92e4,0xbbe58095,0xbc0169d9,0xbbe72e6a,0xbbb191c9,0xbb9c0862,0x3b8aafc4,0x3c48db5e,0x3c9c21ea,0x3cc6fe46,0x3ce2384d,0x3d0922b3,0x3d092eb3,0x3d12c75c, +0x3d16f991,0x3d18b5bc,0x3d18319c,0x3d1d5f1a,0x3d1461f5,0x3d0f4d3d,0x3d0196e1,0x3cf3469f,0x3cbea57f,0x3cc88ec0,0x3cba3bf3,0x3cb24177,0x3ca64dbf,0x3c9d27f3,0x3c9777a5,0x3c94ceaf,0x3c94c4e3,0x3c90ec8e,0x3c8d0fbf,0x3c80e2a7,0x3c6d57d9,0x3c4ab1dd,0x3c5c50b3,0x3c65cbdf,0x3c6cd9b9, +0x3c6f0ae6,0x3c741c4b,0x3c5a8c7e,0x3c84eb5d,0x3c9c023e,0x3cbdc0f0,0x3cb1b750,0x3ccdab7e,0x3cecb83f,0x3ce49c84,0x3ce21b98,0x3cdee2ef,0x3cdd645a,0x3cda07f6,0x3cd923ca,0x3cc8eaab,0x3cc1bf42,0x3cd16c57,0x3cc8667c,0x3cb7a90f,0x3bac9041,0x3b395121,0x3b975ee6,0xba951202,0xba91a54d, +0x3b26098d,0x3b20acec,0x3b8d6d20,0x3c2bfe92,0x3b9625eb,0x3b6b2fb8,0x3bba5a6a,0x3b069921,0x3ad038bb,0x3b0bed52,0x3b8dc88e,0x3ba621fa,0x3b9534a8,0x3ba7186a,0x3bc6142f,0x3beb5d65,0x3c1d0c4c,0x3c2114fc,0x3c022b96,0x3c10b48d,0x3c0673fa,0x3c02bf08,0x3b85c6ce,0x3b39806c,0x3b04f05c, +0x3b83521e,0x3babd6ee,0x3bede395,0x3be677eb,0x3bcedaf1,0xb9a01418,0x3b38f607,0xbc12a2c6,0x3a76fb1f,0xbc2bbcd7,0xbc2541ca,0x3afe8ddb,0x3b6b35ad,0x3c11eff4,0x3caf97c6,0x3c003542,0x3b62ace7,0x3c049248,0x3920d2fc,0xbaccdc33,0xbaacefc4,0x3b700e8c,0x3bb51827,0x3b806b65,0x3bd28bcc, +0x3c0ea3c8,0x3c68344a,0x3c9f55b0,0x3c9b1755,0x3c8d22db,0x3c7fa1ae,0x3c590819,0x3c668893,0x3ba22526,0x3ae6609d,0x3aa9cb1a,0x3b924fe4,0x3c05a02b,0x3c4d4431,0x3c418145,0x3bd2db6c,0xbc203229,0xbba0a541,0xbc79574f,0xbb97eab6,0xbcf7609c,0xbd0c9ce9,0xbc323af7,0xbc0aa9bd,0x3ab2dc74, +0x3d0c9817,0x3c0724bb,0x3a567176,0x3c2eb720,0xbc3219dc,0xbc5a36bc,0xbc101303,0x3b10ea2b,0x3bb9f5e5,0x3b57c0f5,0x3bcc5a4d,0x3c390a03,0x3cba7d21,0x3d002f82,0x3d00cfb9,0x3cd9b8bb,0x3ccb4ad0,0x3cb707d7,0x3cbf3b56,0x3ba11800,0xbb4e38d4,0xbb6899dc,0x3afabaed,0x3c32e943,0x3c9e6794, +0x3c814f33,0x3bd811e5,0xbc927960,0xbbe3af68,0xbd14eae4,0xbc50d9df,0xbd3ff8ef,0xbd49f5ae,0xbba0daeb,0x39832703,0x3c920621,0x3d6af87c,0x3c74cffd,0xbb2cf209,0x3c8c99f0,0xbba9328a,0xbc62cdb4,0xbc4ade8c,0xb9f8a859,0x3ba026c3,0x3af6d5d8,0x3c281648,0x3c86b2e2,0x3d0c51c6,0x3d4e50e6, +0x3d52b0ad,0x3d40da4b,0x3d0f1f47,0x3ced4741,0x3d33196b,0x3c9dcdbd,0x3c292120,0xbadd32d0,0x3b846c5e,0x3c6b2de6,0x3d02418b,0x3cc81cde,0x3c107291,0xbd27e159,0xbd105855,0x3ce05fda,0xbda290f1,0xbd85669c,0xbda50856,0xbdbe2179,0xbd7977a4,0xbd11e79c,0xbccfa0ca,0x3d67833b,0x3d694359, +0xbcfa0ee9,0xbd59d674,0xbd7a89d6,0xbd1619f8,0xbae75925,0x3ac91f08,0xbce2f5b0,0xbc7a0d61,0xbb938a7c,0x3c5e141e,0x3c7670d8,0x3c853d9c,0x3cd3d435,0x3cad42b4,0x3cc6f233,0x3d17d5f2,0x3c45f178,0x3add68d9,0x3c3ebdf4,0xbad053ba,0xbbfa428d,0x3c4b8ab4,0xbc0915b1,0xbc6245b4,0xbcad977f, +0x3d2c7ff6,0xbdb4aa66,0xbdc34c1f,0xbd0d6d45,0x3c5c43cc,0x3cc37eeb,0x3b4ca212,0xbb70fee4,0x3c78479b,0xbcb9fa80,0xbd5ed677,0xbde13f9c,0xbd90c7f5,0xbd5627aa,0xbcc52647,0xbcd6958d,0xbc80fcbf,0x3c021806,0x3aa2a859,0xbb18fddd,0x3b092fb9,0x3cc25a5c,0x3d0a9e01,0x3d532426,0x3cf1ca74, +0x3cc95a9f,0x3c4625f0,0xbaafeb0b,0x3a97d5ae,0x3b80c016,0xbb825154,0xbb227d75,0xbc908f46,0x3c173ae5,0x3c0e2ff6,0x3c4c4fb8,0xbd7503ae,0x3e056027,0x3d485dd3,0xbcc9b3b9,0xbde417dc,0xbe60b354,0xbe473091,0xbe1fb2c3,0xbd9a9310,0xbda7bd44,0xbd9cd998,0xbdf499e2,0xbd86b9ed,0xbd114c76, +0xbc051c4d,0x3c182822,0x3b42f043,0xbc87b04f,0xbc4adf30,0xbb9ea4a4,0xbbef0e3b,0x3ba82573,0x3ce094a1,0x3da956ed,0xbb3cc85f,0xbcb9168b,0x3bf30266,0xbc2572af,0x3bf61908,0x3b0e25e7,0xbb432942,0xbaba7854,0xbb008802,0xb9e75435,0x3c95df3b,0x3dd741e3,0x3de6d3e5,0x3d742798,0x3db3fc65, +0x3e228f4a,0x3e39b27f,0x3e254bdf,0x3dceb03c,0x3cf25dbb,0xbcdc57d7,0xbdb8fc14,0xbdbdd8d9,0xbdb7dbcc,0xbc5eea1d,0x3bd47ab6,0xbba32afc,0xbc938526,0xbccc9dce,0xbcdab9fc,0xbd08b897,0xbd137f06,0xbccd2c6b,0xbcbfba41,0xbbaea719,0x3d5bcff1,0x3c19d999,0x3bf459d9,0x3cc9e8fb,0x396650aa, +0xb890ed44,0x3b3eae46,0xba49555d,0x3be6acb7,0x3d1afae5,0x3d68a0fe,0x3d9396e1,0x3db0b606,0x3d791759,0x3cef2d9d,0x3cc83b12,0x3c756ecd,0x3c6988f6,0x3c5e79a4,0x3d86dcd4,0x3deaf305,0x3e161615,0x3de53e4f,0x3d68229e,0xbd021901,0xbd46b9c1,0xbd6d207d,0xbd2df728,0xbd4be246,0xbd52d32a, +0xbd6a07e3,0xbd1a53eb,0xbcbae87d,0xbc5a396f,0x3a49a7ea,0x3c87c125,0x3d166581,0x3cb80c35,0x3c896e3d,0x3c44c4f8,0x3cfaa922,0x3d1f10b1,0x3d33c09b,0x3d38ffa8,0x3d40d42d,0x3d45b89b,0x3d11142f,0x3d05f249,0x3d3380cb,0x3d06cfd7,0x3cc1663d,0x3ccc7dc0,0x3ce59ba1,0x3cc320ad,0x3c81fc13, +0x3ca69292,0x3ccdc2c6,0x3d31c324,0x3d6523e2,0x3d84af97,0x3d8370dc,0x3d857026,0x3d85c994,0x3da2b11b,0x3d982fb4,0x3d92492b,0x3d7136a7,0x3d3bf913,0x3d1604e1,0x3d0030d7,0x3cdff75a,0x3cc22dbb,0x3ca526ef,0x3d063fba,0x3d14e7a5,0x3ce143f8,0x3ca3728d,0x3c8cf574,0x3c880b95,0x3c2921b6, +0x3c5f1052,0x3cedb5a5,0x3d0dacf9,0x3d256ebe,0x3d3d292c,0x3d169bf0,0x3c3ee585,0x3b9af7d6,0x3b7517bf,0x3a8c4689,0x3b056239,0x3c15200a,0x3c84cf41,0x3cae3e9b,0x3c979678,0x3c622223,0x3c0ddda3,0xba826367,0xbc11f134,0xbc876963,0xbc8f3343,0xbc97a009,0xbc96ecc8,0xbc88d98b,0xbc54b6d7, +0xbc68f6b7,0xbc077bfe,0x3b1a44b2,0x3c337ad9,0x3c41f7de,0x3c7d1d72,0x3ca6b359,0x3cb54097,0x3ca12b99,0x3caf0ec2,0x3cd05429,0x3ce8c41f,0x3cfd2394,0x3cdd7b9c,0x3cc19a6c,0x3cb7f7ea,0x3c8ece20,0x3cfe9360,0x3cfcfc32,0x3cf29a6f,0x3cf0185e,0x3cda8f5e,0x3cc2eebd,0x3ca46495,0x3c909269, +0x3c8eb822,0x3c9cc8ef,0x3cb31445,0x3cc0d3a2,0x3ccc469e,0x3ccdc154,0x3cc8f3ab,0x3cbdfe29,0x3cb1e6da,0x3c9dd147,0x3c8d29a4,0x3c6cac37,0x3c5c1c2d,0x3c82b87f,0x3c9447e6,0x3c9ec369,0x3cae9be2,0x3cbed83a,0x3cb75269,0x3cbb6734,0x3cbd3b1b,0x3cb386e0,0x3ca7ed3c,0x3cb2bf8e,0x3cb9538e, +0x3cd0a150,0x3ce69952,0x3ce5f3fa,0x3cde086b,0x3ce8c845,0x3cddf904,0x3cd5adf7,0x3cd3015a,0x3cd06bb4,0x3cd01e3a,0x3ccc3f08,0x3ccd1baa,0x3cc5b655,0x3cbb683b,0x3cb7843c,0x3cb6f0d0,0x3cbc08d2,0x3cb57bb9,0x3cb21208,0x3cb074c2,0x3cb04216,0x3cafed4b,0x3cb4826e,0x3ca6bcb3,0x3ca070e0, +0x3c924996,0x3cbce36a,0x3cb3d294,0x3cbb3998,0x3cbb3261,0x3cbbd367,0x3cb9b07f,0x3cbb3043,0x3cbd4117,0x3cb52db8,0x3cbced6d,0x3cca5c6b,0x3cbbc9c7,0x3ccedb7c,0x3d04df7d,0xbb84a1cc,0xbb5d29d7,0xbb1ce31c,0xbbd3cacf,0xbbf7c169,0xbbb67cb9,0xbbffec57,0xbbf04a60,0xbbc3990c,0xbb92460b, +0xbb770c4f,0xbb8d54ff,0xbb5b6172,0xbb82cc03,0xbbd1118e,0xbba83b59,0xbba549cf,0xbbae1e3d,0xbb9a6759,0xbb742b57,0xbb095efd,0xbb0e71b2,0xba954b6b,0x3a94136d,0xb9065ff7,0xba81f91c,0xbb005a3a,0xbb7874e7,0xbb8f4570,0xbb9a8d4f,0xbb2c085e,0xbaac40b1,0xba1ab462,0xba1e7d5b,0xba5d708b, +0xbba3b3fd,0xbb55a150,0xbb183fed,0xbb0b6eab,0xbc2e0605,0xbc5482c9,0xbc032499,0xbc7b9d9b,0xbc821458,0xbc60d6d3,0xbc1b5aaf,0xbc021ea0,0xbc2bfd5e,0xbbc9ab63,0xbbcf4de5,0xbc3c8141,0xbbf58687,0xbbed6697,0xbbfe1fff,0xbbeab60d,0xbb91a6c2,0x3a724b2f,0x3b7b8d60,0x3bc997b7,0x3bf44cc0, +0x3c09ddbe,0x3bb45ec7,0xb93a95fa,0xbb8643ee,0xbbd54582,0xbbc62bcf,0xbaab5f3c,0x3b31552f,0x3b90a4aa,0x3c0c501d,0x3bb1bc2b,0xbc18f0e1,0xbb02a86b,0x39937628,0x3b54ee97,0xbc90755e,0xbcb3c639,0xbc509cc0,0xbcf44c50,0xbcd9e437,0xbcb58e05,0xbc2aa048,0xbbbc61e7,0xbc36f476,0xbaffef13, +0xbbca624d,0xbca178a8,0xbc48129d,0xbc3637a1,0xbc3235ad,0xbc13800f,0xbb895a4a,0x3c0e3e8a,0x3c413d10,0x3c880dc0,0x3ca2f290,0x3cb526a8,0x3c965372,0x3be37bbd,0xbb9c298c,0xbc261317,0xbc0ec77d,0x3a9248a9,0x3c303473,0x3c4a4bcc,0x3c9e6a15,0x3c6a0127,0xbc3154b2,0x3acf4949,0x3b875469, +0x3c5c7459,0xbc3880ae,0xbc914b99,0xbbcec20f,0xbd0bc3c7,0xbd250e27,0xbd1e651e,0xbcc1381d,0xbc9bbcf5,0xbcf5b3fe,0xbc27d4eb,0xbc265ab3,0xbce7e3f0,0xbc6b82f3,0xbc5f57b1,0xbc5b9561,0xbc599069,0xbb64b80d,0x3c9d557d,0x3cdfdc46,0x3d155cf1,0x3d1df6e9,0x3d0c9e83,0x3ce8c1a3,0x3cea3c57, +0x3c13ffbc,0xbaf07025,0xbb8912a4,0x3b7e8c71,0x3ca29a72,0x3ce93b63,0x3d0299e0,0x3cbc47e3,0xbcc289c7,0xbb569afa,0xbb9335b3,0xbdb03218,0xbd8e9d34,0xbda504d7,0xbdc1d510,0xbda0e8b9,0xbd52770b,0xbcb2b86d,0x3c3c5478,0x3cef5134,0x3cc1b887,0x3bba7445,0xbc4f1f09,0xbd226c76,0xbcc619c8, +0xbc25cbf6,0x3baaafc2,0x3b08ef3d,0x3bcace55,0x3c281937,0x3c883483,0x3ca2b799,0x3c88b1c0,0x3d16af78,0x3d1a1736,0x3cc530ee,0x3b6d6f08,0xbbcd2b53,0x3b489f8a,0xbc9921b4,0xbc57f7c2,0x3ca3762a,0x3c74d347,0x3c3e1ed8,0xbb794ff1,0x3ce97a67,0xbd4db202,0xbd58736b,0x3bf64d77,0x3ca17eff, +0x3ce70841,0x39160f39,0xbc96b182,0xbd11c637,0x3c0f43b2,0x3c29b344,0xbc74f1ac,0xbd3d8cff,0xbd505fc0,0xbd1654e6,0x39d6bf83,0x3c6638fc,0x38ecd28f,0x3b42c671,0x3ba2659f,0xba01cdc3,0x3bcf2341,0x3c9eabc7,0x3d439173,0x3b2cedb0,0xbc284120,0xbad276bf,0xb9ffd18d,0x3a8fe5a4,0xbc52ee08, +0xbc6de1f7,0xbc98e383,0xbcf34c11,0xbcfb4eaf,0xbc2b0375,0x3ce4a4d0,0xbcca08fa,0xbcfe2e28,0xbe095935,0xbe5cdbc0,0xbe625902,0xbe212054,0xbdc936ae,0xbd2518d0,0xbd39d9cb,0x3c10307a,0x3ae5a4fc,0xbce1de2f,0xbd27dc83,0xbd1957a9,0xba986c8b,0x3a87781e,0x3c337abf,0x3c02e8f2,0x3c359fa3, +0x3c291a7e,0x3c402b6d,0x3cd63136,0x3ce006bc,0x3d104ab7,0x3a27eba7,0xbc18bd30,0x3b4ffe2d,0xbc298be4,0x3991cfb3,0xbb939305,0x3b5c0fbd,0x3b5b8eca,0x3bd1fb31,0xbc77b55d,0xbce3d89b,0xbc8be548,0xbc15992a,0x3e19b3fc,0x3e3f92ee,0x3e525d7c,0x3e2a2d45,0x3db93de9,0xbcda64b2,0xbd9c2bcc, +0xbd929a45,0xbc5adfdb,0xbc5bf572,0xbd62bacb,0xbdb57b95,0xbda857b7,0xbca44358,0xbb5c85c1,0x3c2fe2b9,0xbc0c5c47,0x3ab25460,0xb7853e61,0xbc2ce6ae,0x3becf84e,0x3c99991d,0x3cdf7f29,0x3c3c8f08,0x3c0147bf,0x3c2a5adb,0xba21b24e,0x3a91ae5b,0xbb0d72d5,0x3c251fd7,0x3c937ea2,0x3c9e702e, +0x3d4baceb,0x3da64e70,0x3de55d17,0x3dfafc51,0x3cc3d1e7,0x3c8618de,0x3ca1a9af,0x3d483c54,0x3de2a56c,0x3e00001b,0x3df5e598,0x3dac3b58,0x3cd5f3fb,0xbcf415ab,0xbd87a342,0xbdd6b5a9,0xbde86c24,0xbdb2b920,0xbd88d344,0xbd31eb9a,0xbd0321f8,0xbcb0eb2e,0xbc88a481,0xbc18577a,0x3bee2b2e, +0x3c76d99b,0x3d037498,0x3c155786,0x3b8f872b,0x3c31a67d,0x3cf5efa7,0x3d183618,0x3cda4ecd,0x3d14a48a,0x3d3062a2,0x3d58e514,0x3d35ddf2,0x3d28546c,0x3d47afa6,0x3d12ea98,0x3d4fc2e7,0x3d2b6d9d,0x3d166813,0x3cdc0dff,0x3c6a706f,0x3c45d1d6,0x3cf610b5,0x3d867bcc,0x3db000fa,0x3dc6441b, +0x3dc3078e,0x3d993ef4,0x3d480481,0x3c347c19,0x3c2f73eb,0x3aa7fcd4,0xbc2cd425,0xba00ec87,0x3bae4657,0x3c471474,0x3c8d4a7a,0x3c8b7c6d,0x3cfbb9a4,0x3ced1f74,0x3d04bf7b,0x3cf732f3,0x3cb5fe68,0x3c4ee87f,0x3bb45a8d,0x3c22ffda,0x3c57e517,0x3ca7b239,0x3cbbca28,0x3cfde1d5,0x3d273419, +0x3d498f2d,0x3caba799,0x3c91b070,0x3c4bd73a,0x3bd5705b,0x3b05f6c0,0x3bf5981c,0x3bd8c2bb,0x3b26489e,0x3c088e8c,0x3c86c5e6,0x3ce2856b,0x3cdbdc25,0x3cf2bc49,0x3cf4d992,0x3d1065f2,0x3d1e41ec,0x3d2e91e5,0x3d26f3b0,0x3d1b54db,0x3d069518,0x3d05ed21,0x3d1ba81a,0x3d24e46f,0x3d033f4f, +0x3cba74fd,0x3c91a4a6,0x3cb7a5ac,0x3d00b32a,0x3d0e7db3,0x3d18cb21,0x3d19ff5c,0x3d1c7034,0x3d175c4a,0x3d145636,0x3d1397c4,0x3ce888f9,0x3c97ab74,0x3c8d1769,0x3ca40c18,0x3cb7b426,0x3cc10d70,0x3cc739de,0x3cda4328,0x3cf34b82,0x3cf30b0b,0x3cdd71db,0x3cc718d8,0x3cac52e7,0x3c934c8e, +0x3c69f4d6,0x3c817371,0x3c8f0933,0x3ca79a08,0x3cb9ca89,0x3ce60c0c,0x3d018b38,0x3ca9dd84,0x3caa4aca,0x3c97f5b1,0x3ca3911c,0x3c9acbae,0x3c8e6912,0x3c84c189,0x3c672674,0x3c4f948e,0x3c46ec56,0x3c3f7870,0x3c450a81,0x3c5cc49b,0x3c6e94d4,0x3c70f872,0x3c7600e4,0x3ca2e827,0x3c6a28e1, +0x3c820808,0x3c86d0b8,0x3c904d5c,0x3c95e3d7,0x3c98c165,0x3c9e0f79,0x3c8d5c98,0x3c869e09,0x3c806b32,0x3c800801,0x3c7d8025,0x3c6cef9a,0x3c8c0b72,0x3c98af86,0x3ca35b5c,0x3cb1e053,0x3cb6f9bf,0x3cd0cb0d,0x3cca3496,0x3cd39943,0x3cdbd0e6,0x3cac4961,0x3cbb5e5e,0x3cd32bdc,0x3cd287f5, +0x3cd2f233,0x3cd5a12f,0x3cd4e523,0x3cd5039f,0x3cd3bbc3,0x3cb92e4d,0x3c960225,0x3cd4f076,0x3cb6292f,0x3c964c8c,0x3be15940,0x3bb0fd47,0x3bb95748,0x3bb174fd,0x3bb96635,0x3bc635ce,0x3b98dc51,0x3b9188b1,0x3bd24d90,0x3b5d0ef2,0x3b74529e,0x3baaced7,0x3c094ef9,0x3c0dd937,0x3bbc4f27, +0x3bc244d5,0x3bacb5c3,0x3b82f38e,0x3bb09b8e,0x3bb8d814,0x3ba2c2a1,0x3bbc5805,0x3bcaafae,0x3bc1637e,0x3c0f709d,0x3bd5daf2,0x3afddfdd,0x3a9fe1f2,0x3a560414,0x39a9c22c,0x3b675fca,0x3b9a6457,0x3b67dae6,0x3bf118d6,0x3c015df4,0xb9b522ab,0x3b94b24d,0x3c12a66e,0x3c0f0a73,0x3be61d6c, +0x3bdd4b40,0x3c1f4a94,0x3c0d5f47,0x3c060434,0x3c4fc18b,0x3b062b92,0x3adb98e4,0x3bb21a29,0x3c5af8f5,0x3c6d50de,0x3bb4e7d2,0x3bb18933,0x3b5146cb,0x3a054dfa,0x3b7034fc,0x3b88a927,0x3b3a9cfa,0x3bc7bf89,0x3c25ab8f,0x3c74a46a,0x3c7b210d,0x3c4b6287,0x3b96ba1e,0x3b279647,0x3a915796, +0xb8ece05f,0x3c0be964,0x3c41e048,0x3c0afc13,0x3c69b6ca,0x3c3c025d,0xba37610b,0x3c22e8c7,0x3bda0c72,0x3ad0cf94,0x3b5e0fd1,0x3b8e036f,0x3bcc0b40,0x3b43a2d8,0x3a566ed0,0x3c21e93d,0xbc3050a1,0xbbf5b753,0x3a8643e2,0x3ca08df6,0x3cb2acfb,0x3b3d7d0f,0x3b8978a8,0x38922b70,0xbbcf5a19, +0x3aa2babb,0x3b366a14,0x3a62151a,0x3c199bda,0x3c6f497d,0x3cc16260,0x3cd18b13,0x3ca6b3f2,0x3af25261,0xbb3a24ba,0xbbbfc2a9,0xbc1a12d5,0x3c18c0ca,0x3c84bad9,0x3c099fae,0x3cb22159,0x3c9cd2e2,0xbc428fa0,0x3c043884,0x3ce65b71,0x3c6eeae1,0x3bddaf61,0x3be48d30,0x3c952fb8,0x3caf14aa, +0x3ca729c8,0x3cf17d9a,0xbbc7aa45,0xbc2fd073,0xbb0717e9,0x3ccca355,0x3d0179ed,0x3a8a5f83,0x3b15ff06,0xbb7a1806,0xbc672dba,0xbb2f18a4,0xbacd97eb,0xbb428c39,0x3c60847c,0x3cc05fb4,0x3d06eef6,0x3d29b692,0x3d168ee1,0x3c79e34a,0x3b070d87,0xbc2b2798,0xbc54e315,0x3c2b99e3,0x3cf10a22, +0x3cb1779b,0x3d145731,0x3cbb8d9b,0xbc957e81,0x3c9e8b4f,0xbd9d9e37,0xbd686a57,0xbcadf070,0xbc5d9f8e,0xbcbe34b1,0xbd52b933,0xbd7379c1,0xbd072b82,0xbd348862,0xbc5c306a,0x3d373ca1,0x3ccca492,0x3c6d9dfa,0xba4d9e21,0xbc2e6ea1,0xbc5b3364,0xbc23772c,0xbbe4bcbb,0x3b389638,0x3cb45cc1, +0x3cb31a3b,0x3cc8be46,0x3cc96a1c,0x3d19f51f,0x3d053dc5,0x3c4798a2,0x3b16d441,0xbc05f830,0xbc1df1ce,0xbca795d5,0xbc664e18,0x39dd159c,0x3c8cf3f2,0x3cc231a1,0x3c9d01f8,0xbd29cd27,0x3c346ae7,0xbb8be9fe,0xbcaec955,0xbcd9aa40,0xbae446e0,0x3cbab571,0x3d082444,0x3c9e2a64,0x3ca6a6ff, +0x3c526782,0x3c83441c,0xbc816863,0xbcdd9eeb,0xbd15ffdb,0xbd0d2126,0xbce20041,0xbcbeba54,0xbc80509e,0xbbd2871c,0x3c0f161e,0x3cda409e,0x3cdd6b13,0x3c7b5472,0xba94cb17,0xbb9c5583,0xba82fab2,0x3b7c5426,0x3b462e9d,0xbc86dc15,0xbc5d905e,0xbc898efb,0xbc9fcbfb,0xbcf75f0b,0xbd121185, +0xbcd4665b,0x3b9753ef,0xbde3a0e7,0xbe089292,0xbdaa5462,0xbd4b6c37,0xbc1f7161,0xbd227eb3,0xbd8e13ef,0xbd8764b0,0xbd5ab527,0xbd080c3d,0xbc47820e,0xbcf78d49,0xbd253ebb,0xbd69c186,0xbd1e63af,0xbce350d9,0xbcc0687d,0xbca5de4f,0xbc36147a,0xbaff997f,0x3cbfab4b,0x3c887fe3,0xbc842014, +0xbbdd2be5,0x3ae27177,0xbba8f5f7,0xbb477496,0xba922430,0xbbc5560b,0x3b83533e,0xbb71f800,0xbc05a559,0xbc013a83,0xbcae6145,0xbd3f5f98,0xbd9ca855,0x3e1af039,0x3dda7c36,0x3d42ba8d,0xbca7781a,0xbd9e112d,0xbdd279d4,0xbdb727f3,0xbd407ca1,0xbd61e1b7,0xbd65ec8d,0xbd3dabcd,0xbd1df52f, +0xbd28b5d0,0xbd82a7b9,0xbd1c4136,0xbccbd8fd,0xbbb4d951,0xbb60c840,0x3ab3ca68,0xbc14f054,0x3cf8b4d1,0x3cf3134d,0xbbd40428,0x371e88f4,0xbb6f43b9,0xbc0c0d3a,0xb9f6a297,0x3b1515ef,0xbb703375,0x3ac56f4a,0x3c166ece,0x3b0e8457,0x3d0851d2,0x3d79e2da,0x3dd60325,0x3e04d04a,0x3d9d4c32, +0x3dcd01b8,0x3e0b239c,0x3e137f8a,0x3e09b3bd,0x3db2e8da,0x3c94cf89,0xbd843dbb,0xbda0b36e,0xbd9e0f7f,0xbd947554,0xbce7ae79,0xbcaaa772,0xbd5d54a2,0xbd47965e,0xbd6e5d9a,0xbd7208a9,0xbd734c1e,0xbd441c9d,0xbd082af0,0xbbefb1d6,0x38b44206,0x3af473a5,0x3b64cbfd,0x3c1a51ab,0x3cdcd93a, +0x3c1857e9,0x3b87adc3,0x3c1c2553,0x3ccf62c3,0x3d139cd4,0x3d260550,0x3d3d1e6e,0x3d55e653,0x3d64009f,0x3d90b71c,0x3cefb465,0x3cf857ee,0x3d02772f,0x3d19adee,0x3d484a9f,0x3d933800,0x3db116c3,0x3dabb057,0x3d9a9454,0x3d4b5a06,0x3c5d0e84,0xbb8d09dc,0xbcae46e8,0xbd12cfea,0xbd3a2d0b, +0xbd2abe26,0xbcd6b052,0xbcbab220,0xbc85579d,0xbc012758,0x3bee06a3,0x3c9ed194,0x3ced7e84,0x3ce15458,0x3cb5093a,0x3c7c046d,0x3c91d8df,0x3cc240c8,0x3cfe418a,0x3d083d5f,0x3d0465e2,0x3cec9e2a,0x3ce02d6c,0x3cdc82b2,0x3ccdcde6,0x3cffc589,0x3d1b4a92,0x3d22a373,0x3d17f6d9,0x3d098a56, +0x3cdcf545,0x3cf00701,0x3cf5e4b4,0x3d0880ef,0x3d265763,0x3d59516d,0x3d8bf163,0x3d88efc1,0x3d847e77,0x3d815e13,0x3d6e2b35,0x3d57329b,0x3d3f84e3,0x3d31ee5e,0x3d29eed2,0x3d1d58b3,0x3d08bddb,0x3cef26a8,0x3cd0efcd,0x3cd78b37,0x3ceff244,0x3ce8e0d3,0x3d0239c8,0x3cf91437,0x3d006b48, +0x3cdfdc0e,0x3cda829f,0x3cc5ecaf,0x3cf52760,0x3d13da94,0x3d2b2732,0x3d1e1e82,0x3c3a8627,0x3c64ff16,0x3c6508e4,0x3c69dc16,0x3c7c2aba,0x3c88b1ac,0x3c966559,0x3c9d1a7d,0x3cb84bb5,0x3cbc39b4,0x3cc5dc6a,0x3cd08db6,0x3cec6ece,0x3d044ad9,0x3d0eb346,0x3d19c21d,0x3d212fb9,0x3d2b39dc, +0x3d2e4233,0x3d3a806f,0x3d374c80,0x3d26278d,0x3d15cd4a,0x3d002a63,0x3cd91f46,0x3cb54d6e,0x3ca50883,0x3c95eb24,0x3c8eb01e,0x3c87ce37,0x3c83da3c,0x3c656b0d,0x3c65bd5d,0x3c4addda,0x3c564bbd,0x3c6808bf,0x3c149064,0x3c565702,0x3c5515a0,0x3c6015b4,0x3c659b97,0x3c5f4f29,0x3c576c5a, +0x3c485691,0x3c5d53ce,0x3c756dd2,0x3c8636a3,0x3c98acb0,0x3ca51dfb,0x3cb1d1a5,0x3cabfaec,0x3caa0e60,0x3caa2dcd,0x3ca87c47,0x3ca7e278,0x3ca9ce9e,0x3c9385ad,0x3c7e9618,0x3c5654a0,0x3c78d66b,0x3c464a8f,0x3c02aaf5,0x3c0990fc,0x3c096c07,0x3c00f5c5,0x3bf8bb41,0x3beb7c19,0x3be671e1, +0x3c08b0ad,0x3c31cd8f,0x3bb978bb,0x3befe12b,0x3c5866e9,0x3b8698c0,0x3b51bd34,0x3939e2f1,0x3b3a42db,0x3b689580,0x3baaaf6b,0x3b86fef8,0x3b662106,0x3b5f0dbf,0x3abc1d8c,0x3a2e9e98,0xbaef0ea1,0x3b4b62c6,0x3b96f002,0x3bcf80ad,0x3b5ffb91,0x3b3bce89,0x3b532a09,0x3b74f304,0x3b85eb20, +0x3b92d6b0,0x3bb958e6,0x3bdaf29c,0x3c1a92fe,0x3bbe9d47,0x3b9f18d2,0x3b665c30,0x3b6fcb20,0x3b72b1c6,0x3b8693c0,0x3bba54db,0x3bc821f5,0x3b92bc8c,0x3bb7527a,0x3bab51ac,0x3b1b18ef,0x3b839948,0x3c0b05ea,0xbab2a2ec,0x3ab36f76,0x3b64a45b,0x3be2d15b,0x3bc7bbd7,0x3baf9e16,0x3b9f1f64, +0xbb1121bc,0xbbca2c8e,0xbc3788b5,0xba27c20f,0x3ba5b34e,0x3c283039,0x3b3d62f1,0x3a57d3bc,0x3b291fbb,0x3b4fbc8d,0x3ba0ecb9,0x3bb28697,0x3bf1f35e,0x3c367f7a,0x3c7c74f3,0x3c3124d1,0x3c00e89c,0x3b2fc3c7,0x3a9bd67d,0x3a93f114,0x3b5290d2,0x3be5ab1a,0x3c012b86,0x3ba7073c,0x3bff5ed3, +0x3bdea606,0x3aa52d56,0x3bf2eaad,0x3b00d67c,0xbc1b967c,0xbaa0b8f4,0x3b87ec07,0x3c428313,0x3c062c57,0x3bddfb49,0x3b06f18e,0xbc21d961,0xbc721328,0xbcd4cca5,0xba0dbe77,0x3c052346,0x3c89a980,0x3b0246c6,0xbb015b66,0x3a997c2a,0x3b4087b6,0x3bd8f268,0x3bb343c0,0x3c340a7c,0x3c99feea, +0x3ce53695,0x3c9a6c4a,0x3c312a2d,0x3a210cf2,0xbb272be6,0xbac5dd33,0xb9cb06a1,0x3c1b8eea,0x3c385bbc,0x3b3d2389,0x3c5d1b99,0x3c62b29f,0xbbe8099d,0x3b685563,0x3cbad73d,0xbc07746c,0xbb100962,0x3bee67b8,0x3c80d319,0x3c906577,0x3c69958c,0x3c37bcef,0xbc168faf,0xbcde4106,0xbd43517f, +0xbc85d586,0x3bef38af,0x3cc56dfe,0x3ae32cd7,0xbbcc0081,0xbb19b069,0xba28ca4c,0x3b9c4f8d,0x3b8414ce,0x3c26b41e,0x3cbe5272,0x3d1ac8ea,0x3d067956,0x3cd2f89b,0x3bce0372,0xbb82a0ff,0xbc43ea20,0xbc20a302,0x3c7535b5,0x3cceb73e,0x3c34f712,0x3cc8747e,0x3c35c822,0xbc60e7c4,0x3c9b8419, +0xbdac458d,0xbcb46624,0xbb93714d,0x3ad4caad,0xbca14c19,0xbca4aed9,0xbcdeada6,0xbcef5967,0xbd8bfcad,0xbd4a51c1,0x3d058081,0x3cc12a57,0x3ca6a6cb,0x3c74379a,0xbbb90c31,0xbbdfc82e,0x3c07bb83,0x3c68e19c,0x3c8953c2,0x3c81fb65,0x3c826ab0,0x3cd34959,0x3d401a71,0x3cda2723,0x3c70ab3f, +0x3b24da56,0x3bb2128b,0xba8125a5,0xbc48aa8b,0xbc8c5dfd,0xbc37ca93,0x3b090c7d,0x3c2695a3,0x3cade819,0x3d2f59f7,0xbd713b0c,0x3d07b66a,0xbbeaba54,0xbc89e249,0xbcbc4cfc,0xbd10a41a,0xbb734818,0xba0354ce,0xbcef9f5f,0xbc32d6c7,0xbbda75bf,0xbbc4589c,0xbb5adf43,0xbaee1d59,0xbc7ce151, +0xbc2a204e,0xbc56d23d,0xbc9c09d9,0xbc668eb1,0xbb39caa6,0x3b3ee54e,0x3c8ff976,0x3c4a69fb,0xbc77fa38,0xbbb4423a,0xba034194,0xbb31553b,0x3a90ae28,0xbb1a2a15,0xbc4eb7b8,0xbc2102d8,0xbc930715,0xbcb75bc2,0xbd33e7fc,0xbd4c82cb,0xbd2a1ea5,0x3c9d7e07,0xbd5f2f8c,0xbca2c8e3,0x3d267f84, +0x3d4fae05,0x3bcf1fa9,0x3a8c3c8f,0xbc9f115a,0xbd8565c2,0xbd41f4e4,0xbd3c8259,0xbd2fa8c8,0xbc80c62b,0xbc29afa6,0xbcc06e9f,0xbd0d6666,0xbd1d9525,0xbcef58f3,0xbcce1c22,0xbc6b79a1,0xbbf5bc16,0x3c808f0b,0x3c6b7243,0xbcb5b909,0xbb185292,0x3c3abb11,0x3b0d89ea,0x3adab254,0x3a9d8c5f, +0x3b069c93,0x3af969e8,0xbc006e0b,0xbbe024be,0x3a922ec8,0xbc8550d3,0xbd1c2eda,0xbd572398,0x3ccb3caf,0xbd564f4d,0xbe1b8f09,0xbe2b5e94,0xbe136508,0xbd67cef6,0xbcbe3f3e,0xbd5e17f4,0xbcb1e735,0xbc7e3973,0xbc895335,0xbc90b524,0xbc90eaae,0xbc952962,0xbc831bb7,0xbc96340d,0xbc95a936, +0xbcc86077,0xbc67859e,0x3a8b5ea0,0x3c5765fe,0x3c357399,0xbc8eaf30,0xbc3f1a8e,0xbc3c52ce,0xbc65a7b1,0xbb5d461f,0xbb87d2ab,0xbc66151c,0xbc1aa809,0xbc1b8bfa,0xbccf322e,0xbc87b07c,0xbb6e74ce,0x3d173638,0x3d25ea58,0x3e03a509,0x3e20a699,0x3e0f7f01,0x3dcd589b,0x3d2c974b,0xbd157f09, +0xbdaccc1d,0xbdbf1a1f,0xbd794a08,0xbd27b65f,0xbcbd65f4,0xbce21870,0xbc9996af,0x39c5f971,0xbc1d557a,0xbc7f2c4e,0xbc9835bd,0xbc983f16,0xbc7f8eb0,0xbc903490,0xbc3b53c1,0xbbd6f0c1,0xbc320c22,0x3b79a9fe,0x3c01b600,0x3c26bdbd,0x3b8c9cf4,0x3a791730,0x3b8183e3,0x3c8d2066,0x3d052bd1, +0x3d50e146,0x3d9b2f89,0x3dace5a7,0x3da1277f,0x3dda731f,0x3d427899,0x3d5287ac,0x3d8e7212,0x3db11e57,0x3dda57b2,0x3df2c3a9,0x3dd1e1b3,0x3d64039a,0x3b8da343,0xbd0df563,0xbd5d7ab6,0xbda7cdac,0xbdb1a455,0xbd964acc,0xbd7b4d4b,0xbd465025,0xbd12bee9,0xbcd7e12a,0xbc7d0855,0xbb8ae9b1, +0x3c2c1321,0x3c507384,0x3b59cb51,0xbb38a6ea,0xba8b4d22,0x3c2b6327,0x3ce2514c,0x3d19cf93,0x3d1c729e,0x3d2646f4,0x3d25e778,0x3d12c740,0x3d2dc46d,0x3d3c9efe,0x3d2ed921,0x3d4f626c,0x3d33c663,0x3d54552f,0x3d7eb1c9,0x3d8a5933,0x3d9437ac,0x3d96d8e8,0x3da2f74c,0x3dbd42cf,0x3db25338, +0x3da8b8e0,0x3da047c7,0x3d8b795e,0x3d67c459,0x3d2f9cc7,0x3d118dac,0x3ce3d6e3,0x3c9ebdfb,0x3cad9c08,0x3ca6422d,0x3cc3786a,0x3ce70c99,0x3cc389e1,0x3cd01827,0x3cd6d5df,0x3cd56363,0x3cc60978,0x3cace318,0x3ca54a25,0x3c944db5,0x3c9588a0,0x3c87ca7f,0x3c861961,0x3cb8c479,0x3ce21a6d, +0x3d05b64c,0x3d1e199b,0x3d02dd89,0x3d389e1b,0x3d3dc1ee,0x3d4416de,0x3d537d86,0x3d6054e4,0x3d671ac0,0x3d6cb400,0x3d56aa2d,0x3d4a6c77,0x3d3e02ad,0x3d38ca96,0x3d367abe,0x3d361074,0x3d25b7ae,0x3d16525c,0x3d03ce5e,0x3ce95d57,0x3cbf9cb2,0x3c9712ce,0x3cbdb887,0x3cd1cb2d,0x3ce32219, +0x3ce119ee,0x3cf2bc3c,0x3d0633eb,0x3d0db48e,0x3d1369d4,0x3d14dd97,0x3d1c6d18,0x3d286810,0x3d1f70cb,0x3d24bab9,0x3d1ab643,0x3d1a0033,0x3d2d5e92,0x3d1e3277,0x3d3b8b54,0x3d35d8d4,0x3d3af3e2,0x3d3adaa3,0x3d3cd253,0x3d3f59b7,0x3d457cef,0x3d4490e7,0x3d44e6b2,0x3d43d1fc,0x3d41d75e, +0x3d3f2f4e,0x3d3f92a6,0x3d35c116,0x3d2e8cb1,0x3d27e24d,0x3d1dae2d,0x3d16cbd7,0x3d0a3598,0x3d02dc23,0x3cfa7287,0x3cdf2bde,0x3d1100e9,0x3d06530e,0x3ceb40a8,0x3ce93f71,0x3ce8088d,0x3ce9fcd3,0x3ce7181f,0x3ce42d38,0x3ce9e075,0x3d0f6946,0x3d270a2f,0x3ce56427,0x3d0e1b3d,0x3d428da5, +0x3bc9f54f,0x3b67deff,0x3b12c49b,0x3b529652,0x3b83fa39,0x3b82ef5e,0x3bdc681b,0x3be392d7,0x3bb49898,0x3b8e92d6,0x3b544b0d,0x3b02d235,0x3b1fe420,0x3b730153,0x3c024348,0x3bba3ff0,0x3bbd2c1e,0x3bd28cb4,0x3be4b8b6,0x3bf0863b,0x3bfb4123,0x3c0440c8,0x3c000160,0x3bf82c79,0x3bd6fb9d, +0x3baab238,0x3b62c150,0x3b686756,0x3b7d61e2,0x3bc32286,0x3b97d629,0x3b8a671e,0x3b7988e8,0x3b96f732,0x3bc11ed3,0x3ba76514,0x3b922340,0x3b25a8e4,0x38023b55,0x3a35aa5a,0x3aa00149,0x39f6a712,0x3c053af7,0x3c139ba1,0x3b96f77c,0x3aecff66,0xbb1093fa,0xbb8b8295,0xbbbb5390,0xbb0525cb, +0x3c220b51,0x3bad0980,0x3bc9dbff,0x3c05430e,0x3c251563,0x3c405789,0x3c3c8748,0x3c589029,0x3c6bb36e,0x3c6639ba,0x3c2b091a,0x3bf8cd53,0x3b933b7b,0x3b801259,0x3b9ded0d,0x3c1735e2,0x3bf192b7,0x3bdd69f3,0x3bc3ca2b,0x3b8793ff,0x3baba971,0x3c293f8d,0x3bec958a,0xbb47246a,0xbc5163fa, +0xbbfb10be,0xbba1021d,0xbb977006,0x3c5a1549,0x3c79f41d,0x3ba44b81,0x38fb2839,0xbc065dfe,0xbc6b893f,0xbc64b5d8,0xbbed5ab8,0x3c8c387e,0x3bbdcbe8,0x3bd22c88,0x3c2038e1,0x3c5b74d9,0x3c8786e6,0x3c7f15a4,0x3cb1b0b5,0x3cc2b3be,0x3cc36e79,0x3c8317d9,0x3c1a4a9b,0x3b64aaec,0x3a9d4596, +0x3baeeecf,0x3c49143d,0x3c1451dd,0x3bc5c87f,0x3bb104c9,0x3b917184,0x3bf31329,0x3c4d05bf,0x3bac6c4d,0x3afce978,0xbc6ce469,0xbc58941f,0xbc44098a,0xbc742f8c,0x3c425ba5,0x3c83f511,0x3b37826d,0xba06bb9b,0xbc943b08,0xbcf594da,0xbd105f20,0xbc97acbb,0x3c9843a7,0x3bae7526,0x3bb2bc38, +0x3c30119c,0x3c9253b5,0x3cbebf04,0x3ca67d2c,0x3cd9e8da,0x3cf4aaae,0x3d165ad6,0x3cdd31d9,0x3c948c7c,0x3bb2daa7,0xbb5f21dd,0xbbcbf69c,0x3b8dff51,0x3c568a7a,0x3c64223b,0x3bc4c8c2,0x3bcc26c0,0x3b6821bc,0x3c7275c3,0x3c5853dd,0xbd4fe188,0xbc6420f8,0xbc55cc3a,0x3a80bcdb,0x3c304a18, +0x3cf0aa66,0x3cc32e67,0x3c1389d7,0xbcf178e2,0xbccf837d,0x3d0c41ac,0x3c136527,0x3b7d5ba7,0x3c8a2857,0x3c05da65,0x3be0ed3a,0x3bd1601b,0x3c2b47d0,0x3c555c68,0x3c460fd0,0x3cda600d,0x3d08a43f,0x3d15c5d6,0x3cb392af,0x3c2e0e42,0xbaf1cc1d,0x3ba3bc3b,0x3b930241,0xbc064c68,0xbb58a1b6, +0x3acdc1f8,0x3b8ff166,0x3cb45c63,0x3ccbe61e,0x3ccda9b7,0xbd2aad46,0x3c805f1c,0x3ce35fa6,0x3cab6038,0xbc326da0,0xbd84e014,0xbd6075a2,0xbd27c096,0xbca2a769,0xbcc08114,0xbcc1a803,0xbca20489,0xbccaa720,0xbc99e8ef,0xbb831f1f,0xbc0bcf3f,0xbc15720e,0xba8de8a5,0x3b983dca,0x3c5f91c0, +0x3cb86761,0x3c533540,0x3c066b87,0xba72958e,0x3ba3b770,0x3c33fc7d,0x3bb68c04,0x3a921678,0xbb86d1a8,0xbb93645b,0xbbb6cafb,0xbc54dddb,0xbc7fd3a9,0xbce0f29a,0xbcedd64d,0xbca2dbff,0x3bd72f82,0x3b45b734,0x3ce430a4,0x3c81b47a,0x3c4da419,0x3cde3425,0x3cf40fe0,0x3ca265ac,0xbb6f304a, +0xbcedd0cf,0xbcfe53ba,0xbc8eace3,0xbc41763d,0xbbebd492,0xbb381c70,0x3b2338ff,0x3b9d990c,0x3c01eab5,0xbb27898f,0x3abd2075,0x3c876127,0x3bf3e874,0x3bffbcf0,0xba10faf9,0xb9a27b28,0x3b7c3b11,0x3b3e6b9b,0x3a2a57b3,0xb9a6c095,0x3affeae6,0xbb95be54,0xbc80c00a,0xbcb56510,0xbc293402, +0xbc9976fa,0xbd0c860a,0xbc7e4193,0xbdb9ca1e,0xbe061fbe,0xbe169970,0xbdff0af0,0xbd72e269,0xbd840ac4,0xbd4f20e8,0xbc62388e,0xbcee637b,0xbca27b69,0xbb87daaa,0xbc176094,0xbc229b67,0xbc4b27c1,0xbc69e832,0xbc6103bd,0xbc1b82d7,0x3a29c1a0,0x3c204f7c,0x3cd9bf00,0xb95537bc,0xbbfc5597, +0xbbc940ff,0xbb62a7a1,0xba4bb8f5,0xbad0cc97,0x3b50f8b4,0xb9a85099,0xbc0483f4,0xbc8147e6,0xbcb73c29,0xbd1236f0,0xbd13b96e,0xbd372503,0xbd41385b,0xbd76e0cf,0x3de6513a,0x3dbda0a9,0x3d50adda,0x3af8eba8,0xbd7bac80,0xbda942b6,0xbd93fd76,0xbd192ee0,0xbd213ff0,0xbd1f5e5f,0xbd2b71b2, +0xbd106408,0xbd00a6ef,0xbd0ee2b7,0xbcae7cad,0xbc1c2420,0xbb40b19b,0xbc1ea1e9,0xbbbc743a,0x3bfd41a7,0x3c039949,0x3c0a57bc,0xbbf057c2,0x3ac7cbc9,0x3a96371a,0xbbf535e6,0xbb841d62,0x3a066796,0x3c26fdcd,0x3c1a2d83,0x3c9d057c,0x3cf0337b,0x3d95b68d,0x3dc06b6f,0x3dbb5da1,0x3dce77e7, +0x3d94ea7f,0x3d97455c,0x3d9bcee1,0x3d8d1f35,0x3d673eee,0x3ccb621a,0xbc9056e1,0xbd801463,0xbd879815,0xbd7cb011,0xbd5df08e,0xbd407b7a,0xbd2c1391,0xbd090eb9,0xbd3a563a,0xbd3f7c97,0xbd22a197,0xbd13e550,0xbced7f03,0xbc824180,0xbc1e1810,0xbbc12a27,0xbb145793,0x3bb51266,0x3c5d46d8, +0x3ccb6050,0x3ce0dbe1,0x3d067cc2,0x3d2e72d7,0x3d3717db,0x3d487403,0x3d5a71e0,0x3d46be42,0x3d483360,0x3d643782,0x3d898daa,0x3d771c07,0x3d895bc5,0x3d9c905f,0x3dae5052,0x3dc9c6fd,0x3dba775f,0x3db8962d,0x3db4183c,0x3d7c5258,0x3d049a97,0x3b55ffbf,0x3a8b1e25,0xbb4a8b24,0xbbc8f014, +0xbbc6c09d,0xbbcba6b9,0xbc186331,0xbbf3c978,0xbbc78f8d,0xbbad6127,0x3b1befb1,0x3c1617f2,0x3c82939c,0x3ca51eb8,0x3cc68bd7,0x3ce4c6db,0x3cdd4d21,0x3ceca27f,0x3ce12950,0x3d0ab4b5,0x3d115ab3,0x3d27da5e,0x3d3a2c97,0x3d42c2e1,0x3d48d9bf,0x3d641649,0x3d848f14,0x3d89a68e,0x3d841de1, +0x3d7f0bbe,0x3d74e293,0x3d6d3cf7,0x3d616d95,0x3d5f7aac,0x3d5646a6,0x3d5f8131,0x3d5b296e,0x3d56b713,0x3d49e480,0x3d3c0a27,0x3d2f0c4a,0x3d2157e0,0x3d161f8b,0x3d0a0924,0x3cf7c66b,0x3cd8e4dc,0x3cf987d1,0x3d027494,0x3d0c230c,0x3d1291a8,0x3d1d4ea6,0x3d28991b,0x3d385f68,0x3d45e645, +0x3d4e194e,0x3d59939a,0x3d6293c1,0x3d67ea16,0x3d6df1a8,0x3d74523c,0x3d7b8d7d,0x3d833fe0,0x3d656b32,0x3d6d1719,0x3d676fe6,0x3d655b6b,0x3d61d9ae,0x3d635064,0x3d63de28,0x3d630c81,0x3d60a186,0x3d5b4cb8,0x3d58c0ff,0x3d510a8c,0x3d4c27c2,0x3d48ae3d,0x3d43d417,0x3d3f4d1b,0x3d3a68e0, +0x3d348548,0x3d300550,0x3d27c781,0x3d2f9693,0x3d30305b,0x3d2e12c3,0x3d3aac96,0x3d3b0c38,0x3d35bf0e,0x3d37b6f9,0x3d3a6bb0,0x3d3faa01,0x3d424896,0x3d470bdc,0x3d4b7ac2,0x3d56bc6f,0x3d5f4a98,0x3d56d2ac,0x3d5fe2be,0x3d7023a7,0x3c129b9e,0x3be1f6ab,0x3bc61187,0x3bd2e9ac,0x3beb0864, +0x3be4b2ec,0x3c1b5267,0x3c1b7216,0x3be6c25a,0x3c052cc9,0x3be07183,0x3b4a6f8c,0x3b76ae77,0x3b95c394,0x3be85331,0x3bfe6c5e,0x3c0acd7b,0x3c0dc834,0x3c16c139,0x3c1ef449,0x3c2d35f3,0x3c2ca0d6,0x3c24e262,0x3c113d87,0x3c0c77c0,0x3bf913c4,0x3bbfdf75,0x3bd95f88,0x3bf14234,0x3c251591, +0x3bec18e0,0x3bd8d3ce,0x3c004534,0x3bdee375,0x3c082606,0x3c431468,0x3c033d56,0x3bf01cff,0x3bced6f2,0x3bdfbe10,0x3bc6fe62,0x3b6827af,0x3c1bd971,0x3c2ea8cf,0x3b9f89fd,0x3c130a7a,0x3ba4cb55,0xbb9d368d,0xbbaaa5e8,0xbb6038cb,0x3b91f59c,0x3bf0fafe,0x3c2637ea,0x3c2e28d4,0x3c463ea2, +0x3c5f34bb,0x3c6ed6e9,0x3c822733,0x3c86ab1f,0x3c589ff5,0x3c38e6b6,0x3c135554,0x3bccfbc4,0x3be93c3d,0x3c0e0add,0x3c741f0a,0x3c183a03,0x3c049358,0x3c2f2832,0x3baa4d4a,0x3c05833b,0x3cb4f8c9,0x3c4ab391,0x3b90c825,0xbaa89ea6,0x3b10349b,0x3b901a45,0x3b0c7112,0x3c71d2d2,0x3c842107, +0x3ae2b9ac,0x3c3f55a5,0x3b3b9115,0xbc9a24ea,0xbc9162e3,0xbc5cc41d,0x3b1643e7,0x3bcd1519,0x3c2f1a87,0x3c47ab59,0x3c73de4c,0x3c97be19,0x3cabbe8d,0x3ccf3164,0x3ccfa69a,0x3ca1619e,0x3c797fd8,0x3c25f847,0x3bacc838,0x3b9a5f61,0x3c1ebc5a,0x3cb659e0,0x3c1b7458,0x3bde57f3,0x3c6c324e, +0x3b836e8f,0x3c02387d,0x3d0e373e,0x3c503418,0x3c2b4f1a,0x3b903046,0x3bed9bdb,0x3a935a49,0xbc288431,0x3c128cfc,0x3c49909c,0xbb9e4ae7,0x3c561870,0x3a3ee6d3,0xbd0e2295,0xbd1abf22,0xbcfb1a21,0xbb97b3b7,0x3ba4c551,0x3c5baf8f,0x3c857fde,0x3c9ec4a2,0x3ccab5b4,0x3cd840ab,0x3d060c70, +0x3d0dc137,0x3cfa671d,0x3cbf352e,0x3c6c617f,0x3bb1d8cc,0xbb05fec4,0x3b5f71b6,0x3cc00a19,0x3c5498ca,0x3c0f855e,0x3c6451e4,0xbb50dde4,0x3bdd1acc,0x3d4e705b,0x3cba8471,0xbcd731d7,0xbc90145d,0xbb9c8957,0x3c8aaeea,0x3d1778fc,0x3d05c05f,0x3cde3535,0x3cee4346,0x3a786ea8,0xbc0a71eb, +0xbbb378f3,0x3ada6553,0x3b8a36f1,0x3c2147bf,0x3b213317,0x39d2bb1e,0x3b9c153c,0x3c4e479b,0x3cadcaef,0x3cbe032b,0x3d22d9ec,0x3d2ac157,0x3ce4637c,0x3cad1674,0x3c6c6aaf,0x3b9764b0,0x3c0dacb2,0x3be0c542,0xbb61f39e,0xb8b516aa,0x3c1767e9,0x3cbc0092,0x3cf5d54d,0x3c9a33ba,0xbb739d93, +0xbca6719b,0x3bbe9991,0x3da40c0e,0x3cb02e2b,0xbca1a747,0xbd03fd86,0xbd97073e,0xbd799178,0x3c0bffdf,0x3a912cf8,0x3c0f8430,0x3c4fd3d0,0xbad5febe,0xbc2c792b,0xbc33f8ba,0xbc39486f,0xbbed9653,0x3ad0a33d,0x3bcc6169,0x3c37d5c3,0x3ca7d71a,0x3b9c77b9,0x3b6d3b8a,0x3c36632f,0x3c1dcbb6, +0x3c2e6658,0x3b977138,0xbaf817b3,0xbbaa1167,0xbad5574d,0x3a551c4a,0xbb9e150b,0xbc51f3c5,0xbc570961,0xbc2d8023,0xbbffa933,0xbc86da87,0x3c2501d1,0xba0f6be1,0xbc125818,0xbb1e2bcb,0xbb240a21,0x3d063185,0x3d1c5646,0x3c40f6bf,0x3bbc4af3,0xbb5ff87d,0xbc3e9f15,0xbc8a4fb7,0xbc2e1bbf, +0x3b685c85,0x3ad03361,0x3b35e338,0x3c06298d,0x3c385024,0x3c9d6310,0x3d301b78,0x3c439152,0x3bd73ac0,0x3c83845f,0x3c31522b,0x3bde7dd4,0x3ba5d674,0x3bb8ab1d,0x3a644464,0x3a2efd28,0xbc0d88d9,0xbc6d4dcc,0xbc877903,0xbc6cdfa2,0xbccb2c82,0xbd1f7547,0xb8d48c87,0xbdc2b834,0xbd63313c, +0x3b697638,0x3baa4c39,0xbd3a93ef,0xbd1b0e4b,0xbd118644,0xbd18d479,0xbc207fe8,0x395286f4,0xbad3223a,0xbc77b7cf,0xbcb40281,0xbc9c0370,0xbcbcc16d,0xbc6a1e87,0xbc08dbf2,0x3b519b63,0x3c24fc2a,0x3cb4e3f4,0x3b0443bd,0xbba63b8d,0xbaf8a064,0xb9b6969e,0x3b88f912,0x3b8bed5f,0x3a18cfad, +0xba50572c,0x3a114ff4,0xbbf15c9a,0xbc59b402,0xbc85a58c,0xbc7e2020,0xbd16b63b,0xbd9015ef,0xbdb2de88,0xb9bb523f,0xbd806e28,0xbde25c02,0xbdd6b821,0xbda9a159,0xbd119520,0xbc585280,0xbca47fab,0xbc9677c3,0xbc8a4c98,0xbbced91a,0xbc848dd0,0xbc904982,0xbc0fd906,0xbc98fee1,0xbca0e8b3, +0xbc829909,0xbb2ff782,0x3bb1a6d0,0x3c4f2896,0xbb727649,0xbb15950c,0x3c2a9f09,0x3bde7be7,0x3b42858c,0xbb994600,0x3b5becfe,0x3babd999,0xbacc6368,0xbbfde5d8,0xbc198210,0xbc1e7003,0x3c09e315,0x3cd033de,0x3d2552ad,0x3c8a1b89,0x3dd15eda,0x3dc968eb,0x3da1a3db,0x3d31d820,0xbb23b276, +0xbd5c33c2,0xbd99189d,0xbd902638,0xbd592b77,0xbd263b7c,0xbd126c29,0xbcc33f0c,0xbca3c7d8,0xbc963aa2,0xbc9f0e21,0xbca717b9,0xbc82fc6d,0xbca49ab5,0xbc937bb5,0xbc3131d2,0xbc8c0c4d,0xbc675b0d,0xbc183a82,0x3bb44cae,0x3c9678c4,0x3ce818f7,0x3ce9c063,0x3cf550a3,0x3d09c735,0x3d4df316, +0x3d7c086c,0x3d914661,0x3d7ade2c,0x3d808b7a,0x3da67f57,0x3db5d74d,0x3d5a8532,0x3d59cfc7,0x3d367433,0x3d2801bc,0x3d282f8f,0x3cdce2ab,0x3c236f41,0xbc40d577,0xbccce89d,0xbd1da8b1,0xbd5ee748,0xbd473599,0xbd3721a9,0xbd2a23b3,0xbd128e07,0xbcfaae2a,0xbcccde65,0xbc907af8,0xbc3c5b56, +0xbb533a5a,0x3b84107c,0x3c0859af,0x3c367167,0x3c55dca1,0x3c70ba89,0x3c80801c,0x3ccc2c4f,0x3d054e20,0x3d2ab81c,0x3d3bf34f,0x3d507556,0x3d6afc11,0x3d6c9b7a,0x3d6e79f8,0x3d6af5a4,0x3d6776e2,0x3d641e25,0x3d3b7cbb,0x3d3032c1,0x3d23f9b6,0x3d11bd23,0x3d02e1c5,0x3cf9a351,0x3cf17cbc, +0x3ce1bb42,0x3ccf92b1,0x3cb5f15c,0x3c92786c,0x3c52d689,0x3c118098,0x3c031102,0x3bdcd402,0x3b9a3bdd,0x3b466fe6,0x3a3a5b6a,0xbaee6b2d,0x3c20c51f,0x3c0d9c2a,0x3c608537,0x3c9e4691,0x3cd8ab40,0x3cee8f19,0x3d052126,0x3d12784f,0x3d26bcad,0x3d2f906f,0x3d3da5d5,0x3d530b75,0x3d4f7dd5, +0x3d5316aa,0x3d510336,0x3d43fbea,0x3d3ca02b,0x3d1d90a7,0x3d21c29e,0x3d1d4c27,0x3d1b8068,0x3d1bbe5e,0x3d19668c,0x3d178f1d,0x3d0ef1bd,0x3d0851cc,0x3d03cbbd,0x3cf8e86f,0x3cecf37a,0x3cda8330,0x3cdb4e5a,0x3cd92180,0x3cd9a3a9,0x3cd81f5e,0x3cdc7f3d,0x3cc722e6,0x3d053d2f,0x3d17404d, +0x3d34dc61,0x3d0f7e3b,0x3d25ed52,0x3d455423,0x3d496ef2,0x3d4c67ae,0x3d4e6439,0x3d54f168,0x3d5958b0,0x3d5f1b70,0x3d4cb38c,0x3d375028,0x3d5ffa40,0x3d4bef8c,0x3d393429,0x3c3763f7,0x3c27b9d9,0x3c22e293,0x3c1e2a66,0x3c241bb8,0x3c16516c,0x3c3b6b87,0x3c3ae02a,0x3c11c37e,0x3c2fb871, +0x3c1fadad,0x3bcb77b0,0x3bd2dfc5,0x3bd4a66c,0x3bdccdda,0x3c16e0a1,0x3c288e15,0x3c2c7d1d,0x3c3679ae,0x3c408c40,0x3c55c5f0,0x3c4a3ea8,0x3c3fc88a,0x3c27392b,0x3c24f265,0x3c1d4323,0x3c10c31a,0x3c185115,0x3c211b96,0x3c3d73ae,0x3c1d4094,0x3c1998e1,0x3c2cbf68,0x3c1651e9,0x3c2100eb, +0x3c724f77,0x3c32693c,0x3c66b5a5,0x3c56de3a,0x3c2e28c6,0x3c090066,0x3bcbbc54,0x3c3d5456,0x3c51bd28,0x3bda0030,0x3c4ff6cd,0x3c207b74,0xb9e9e454,0xbaa20bd6,0xbad5cbba,0x39ad5b80,0x3bfc6390,0x3c3e95c9,0x3c4bc485,0x3c699d51,0x3c83d963,0x3c9d8466,0x3c949ef9,0x3c8aa681,0x3c55c25f, +0x3c3fe58e,0x3c2d1cff,0x3c179c4c,0x3c2c2a36,0x3c40ab5a,0x3c753890,0x3c468fd1,0x3c2ea236,0x3c478af2,0x3bf0b840,0x3c3243d1,0x3ccc894d,0x3c8fd60a,0x3c6014a9,0x3c1c89bd,0x3c2778bd,0x3c3dd58a,0x3bdf0a3c,0x3c8be065,0x3c86220d,0x3b858be0,0x3c7dc8a0,0x3c1788bd,0xbc0da66f,0xbc3b7948, +0xbc40fda6,0xbc07afaf,0x3b953c53,0x3c44232c,0x3c585e81,0x3c88e350,0x3ca8a4be,0x3cd847f3,0x3cd219e5,0x3cc04347,0x3c718b7c,0x3c61ea37,0x3c35ec57,0x3bfa3a93,0x3c0cd51b,0x3c3a7451,0x3ca010dd,0x3c36c39a,0x3c24c4a4,0x3c82c06b,0x3bc210ee,0x3c1b308f,0x3d12db5e,0x3c938073,0x3ccd4b5e, +0x3c9720b2,0x3c609b6c,0x3b4c64b4,0xbbbf76a2,0x3c1697a4,0x3c819a92,0xbb0d87e5,0x3c8429c8,0x3c0e9502,0xbcb0b7ac,0xbce7f81f,0xbd0365a2,0xbcbf938e,0xb884ab1e,0x3c5cd5ce,0x3c8f9f4a,0x3cb647d0,0x3ce6478b,0x3d147740,0x3d15848f,0x3d08ca71,0x3cb6f9e3,0x3ca497da,0x3c852b60,0x3c1893e9, +0x3ac4c454,0x3c0c2831,0x3cf29106,0x3c65fa33,0x3c22d2d8,0x3c877540,0xbb4c993d,0x3c477e88,0x3d74e2c5,0x3d15e51b,0xbcb20cdd,0xb9eea6cb,0x3bf6349c,0x3d103d16,0x3da1dc1b,0x3d21c2f4,0x3c8ffa4e,0x3c346893,0x3cb4e425,0x3c871fd2,0xbc60df03,0x3c857c90,0x3c95f62e,0x3b6a43e4,0x3b91a1cc, +0x3b5aa262,0x3b9c8010,0x3bc01638,0x3c659738,0x3ced7e06,0x3d00ea85,0x3cf38fa8,0x3cc1a242,0x3cbc68d7,0x3ca77202,0x3c155387,0x3c2ee800,0x3bc24052,0xbbb658c0,0x3ad30ab5,0x3c914f13,0x3d0a8d2d,0x3d0fe9c2,0x3c54f720,0xbcd331ae,0xbcf2a118,0x3c44f7b3,0x3d91a451,0xbb108be7,0xbd114f6e, +0xbd176ec9,0xbd3099d1,0xbca7093f,0x3cf84b3c,0x3c4ed94c,0x3c1ef2c7,0x3cb29cae,0x3c954ae9,0x3c352e1c,0x3beca3ca,0xba375010,0xbb2375d6,0xba6548ce,0x3bf23351,0x3c33adbc,0x3c916df1,0x3c4a7a5f,0x3c567382,0x3c909bef,0x3c566cea,0x3c0e7bf7,0x3c17824c,0x3b00f13f,0x38d0c5fd,0x3b9e4348, +0x3c1f31fa,0x3b7c5f17,0xbb9a9f69,0xbc11104f,0xbbe1afcc,0x3bfc00aa,0xbc201edc,0xbc16eeb7,0xbc233ced,0xbc524515,0xbb657b4a,0x3ae61d3f,0x3c94cbf6,0x3c97e41a,0x3cb987a1,0x3c793d6c,0x3c0b6751,0x3be532d4,0xbc54797c,0xbc4e5f6b,0x3b589e29,0x3b2775ec,0x3bbc3727,0x3bdc2ca5,0x3c8b3e83, +0x3c9d54be,0x3cd32053,0x3c3b3501,0x3baee2ed,0x3c865a25,0x3c72f8d0,0x3bfeb8f8,0x3b0f32d6,0x3bf1c0f6,0x3b488733,0xbac11f7a,0xbc2763f5,0xbc390c08,0xbbd7b561,0xbcd10534,0xbcebad77,0xbcc5c743,0xbc30137d,0xbd047138,0x3c6d85d4,0x3c48d3b1,0xba2f6095,0xbc856bb4,0xbd046402,0xbd07b348, +0xbca713a3,0xbca02279,0xbc803f96,0xba218f39,0xbc36149d,0xbc31d2b0,0x3b879990,0x3c075d8e,0x3c139edf,0x3b933379,0x3c53342c,0x3c638bc1,0x3c27045e,0x3c53e537,0x3c4fe9bc,0x3c2bb3a6,0x3c17571f,0x3c18c7cf,0x3c223d8c,0x3abd06a4,0xb99eb0b3,0x3bb4302a,0x3b719e7c,0xbb29b7de,0x3aea2508, +0xbc05fac3,0xbcd1c8d1,0xbd2c2073,0xbd4f039d,0xbda10ac6,0xbdfeabbc,0xbdded8ef,0xbdacc1ec,0xbd39b8c0,0xbd12eadb,0xbcd05bcb,0xbc55b4fd,0xbb6d4226,0xbb1b181d,0xbc6e23dd,0xbc0b24f0,0xbc454b2b,0xbc846d6f,0xbc3e7b01,0xbbf1ab97,0xbb3deb0d,0x3c1e307e,0x3c605eec,0x3c427582,0x3b353648, +0x3b3bd443,0x3c48dbb1,0x3b8148f6,0x3b444096,0x3b982d27,0x3c0b8bfd,0x3bb2da98,0xbbf846c6,0xbca95882,0xbcd9f235,0xbcd4d392,0xbd2702e9,0xbd141bc9,0xbc88ba8b,0xbd3a0cd8,0x3d6be3fc,0x3d0715f1,0xbb7160e6,0xbcea736b,0xbd56c4c3,0xbd511504,0xbd2caa9b,0xbd0138b1,0xbcab3f13,0xbc950880, +0xbcd4f216,0xbc7a49b8,0xbc2f5eaf,0xbc2a5912,0xbc1293fe,0xbbcce616,0xbbe25980,0xbba242fb,0xbb935a9e,0xbb4dd659,0xbb7f2d5f,0xba6ee7b3,0x3bd94c8c,0x3c1fb08a,0x3c4b6615,0x3c251f0f,0x3c7823a0,0x3cb63dc0,0x3cdae611,0x3d255e1a,0x3d446076,0x3d50646b,0x3d4abb5c,0x3d434050,0x3d504654, +0x3d3d8bcd,0x3d45d12d,0x3d307c1d,0x3cbcc718,0x3c286438,0xbc0a5b9a,0xbcd25f1b,0xbd3e577b,0xbd8b5660,0xbd8142f7,0xbd73555f,0xbd68856a,0xbd5d4401,0xbd53502b,0xbd479289,0xbd406510,0xbd3a7460,0xbd33acef,0xbd18d6f5,0xbcfcfbb2,0xbcca48c7,0xbc7ead41,0xbba0edc8,0x3b8ff8bc,0x3c41d660, +0x3ca11096,0x3ce545db,0x3d04155a,0x3d0ac8af,0x3d1e099f,0x3d2667d1,0x3d3d8151,0x3d5093e3,0x3d5cbbe9,0x3d72506e,0x3d850f04,0x3d6411df,0x3cd3fa73,0x3c6d753d,0x3c309d91,0x3bde0231,0x3b7975bb,0x3a41e0c1,0xba17ea77,0xbb887971,0xbbb04b1b,0xbc14c261,0xbc3dcead,0xbc695688,0xbc880bd1, +0xbca1d776,0xbc79a520,0xbc36a5a2,0xbbf613c6,0xbb888180,0xba4de92f,0x3b00b1c3,0x3b516a42,0xb8665ea0,0xba0b0bd4,0x3ac5cb6c,0x3aab820b,0xb9f4165c,0x3b5bf59e,0x3c01ec22,0x3c61729c,0x3c8a8477,0x3c9ef855,0x3cd974c2,0x3cbf3c47,0x3cbef103,0x3caa3d89,0x3c8656a6,0x3c177a11,0x3acf864a, +0x3b266859,0x3a8125e4,0xb9a222ce,0xbaefd096,0xbb6740bf,0xbba6b70f,0xbbbecff2,0xbbd0e90b,0xbbe7f626,0xbc027e75,0xbc0fcde7,0xbc2e618b,0xbc080207,0xbbe4bee2,0xbbaf311a,0xbb80f2a0,0xbb211d6d,0xbaaca980,0x3b85908b,0x3c023579,0x3c7a5a31,0x3b2f4453,0x3c09bcaf,0x3c7c88b6,0x3c8e7d6f, +0x3c97e369,0x3c9e9386,0x3caddff2,0x3cbae057,0x3ccb2438,0x3c772501,0x3bfd2518,0x3cbf78a3,0x3c70cc8e,0xbb25a8c1,0x3c27de4c,0x3c275b4a,0x3c17b5db,0x3c271c3e,0x3c27a255,0x3c199cff,0x3c236f1f,0x3c1d1471,0x3c0919b8,0x3c13077e,0x3c08d8c5,0x3bd1240d,0x3bdbd291,0x3bdbe724,0x3bdcff0c, +0x3c0ac9ce,0x3c181ed8,0x3c192edb,0x3c235e42,0x3c2cbdd2,0x3c3914cd,0x3c35b827,0x3c3341de,0x3c2e5707,0x3c13d1e1,0x3c128f87,0x3c1813e7,0x3c2b2478,0x3c302036,0x3c30122c,0x3c2d42b0,0x3c2b4eff,0x3c24877a,0x3c123cb6,0x3c0d6d89,0x3c54d6e1,0x3c2e6c13,0x3c808b19,0x3c3d9e28,0x3c47f53a, +0x3c3303ac,0x3c0cb700,0x3c1efda3,0x3c2200c4,0x3bfcb22e,0x3c207f0d,0x3c037146,0x3adc4825,0x3ae247f5,0x3aded8fd,0x3b28d471,0x3bf6051e,0x3c2128c0,0x3c2665ec,0x3c4b74fa,0x3c6764a8,0x3c8d5c45,0x3c8a6ba3,0x3c693abe,0x3c516fe1,0x3c1cf59e,0x3c115a4c,0x3c06405b,0x3c3f90ec,0x3c5a4747, +0x3c4e3a07,0x3c5785c2,0x3c33fa89,0x3c10b3d1,0x3bdef1fd,0x3c1754bf,0x3c937c4b,0x3c77a032,0x3c8565cc,0x3c46893c,0x3c7d6e3d,0x3c89ba7b,0x3c3a234b,0x3c547f52,0x3c29aec5,0x3bb9e5dc,0x3c173b29,0x3bac874c,0xbb7dd627,0xbb89b2b2,0xbba8ad1f,0xbb961945,0x3b90bd19,0x3c2410e7,0x3c23af93, +0x3c6cb293,0x3c8beb10,0x3cc64365,0x3cadb760,0x3c95b3dc,0x3c6d1665,0x3c1fe680,0x3c0aeae5,0x3bac12a8,0x3c47e2b1,0x3c677bd8,0x3c6acdf6,0x3c69790b,0x3c4d2497,0x3c2df68a,0x3bb076d5,0x3be936af,0x3cc25c24,0x3c7807c8,0x3ce14320,0x3c9099ad,0x3c97de03,0x3c48b595,0x3b57440d,0x3bca31ad, +0x3c168268,0x3b8e7a6c,0x3c1b974d,0x3bcbe507,0xbc49a9c1,0xbc846f60,0xbca21aa5,0xbc7f45f5,0x3a7f53bc,0x3c105862,0x3c2e3e59,0x3c949629,0x3cce2d26,0x3d1a0ffe,0x3d0a8c96,0x3cdbb3b0,0x3c99884f,0x3c695ccf,0x3c55c93b,0x3b9ccfdd,0x3bcf3ae7,0x3c594301,0x3cced204,0x3c8fc571,0x3c41b493, +0x3c12f7bc,0xbb27a081,0x3c24a582,0x3d2a0dc5,0x3d043d36,0xbbf987dd,0x3bc2eb58,0x3cb592a8,0x3d35bb78,0x3d95fa95,0x3d019bc3,0x3c2541a4,0x3b8963b8,0x3bddb208,0x3b7168d7,0xbc860b72,0x3cfb25ff,0x3d13d3ed,0x3c0093a4,0x3bf46759,0x3be2f5e0,0x3c3dd8b3,0x3beed9b3,0x3bb304df,0x3c6a18ed, +0x3c791d18,0x3c66ac02,0x3c98af2f,0x3caa1d72,0x3cb86da3,0x3c54287f,0x3c1243b8,0x3b73cc9c,0xbbc5c26a,0x3c185a25,0x3cebd9c4,0x3d14d33c,0x3cdd6480,0x3b7b4687,0xbd063ed5,0xbcb8d14c,0x3cc7c6b5,0x3a708524,0xbce4b00c,0xbd11e7d6,0xbd1d6039,0xbcdb7721,0xbc8057a2,0xbc181c9a,0x3bf03560, +0x3c2ca29b,0xbb06c8ae,0x3c9736ae,0x3c9ccd26,0x3c1599e3,0x3bd16d98,0x3b95983c,0x3b0a8905,0x3c7faa6d,0x3c8fc12c,0x3c52b3f1,0x3c9ecc35,0x3ca371b1,0x3ca0537b,0x3c7e2a5f,0x3c049fbc,0x3c113035,0x3b88d00d,0x3bbdc896,0x3c63f2c9,0x3c3260bd,0x3ad26d74,0xbc1cd666,0xbc1871c6,0x3a9bb088, +0x3c1c0631,0x3cb543d3,0xbb9a68ad,0xbbde2b31,0xbc5ca039,0xbc2f5d70,0xbc0ed848,0x3b3fdeba,0x3c655e58,0x3d00e99c,0x3cf9f16f,0x3cb3c79f,0x3c1a9c77,0x3b612d11,0xb9c19620,0xbaa49ac2,0x3c1a1f38,0x3c75e20c,0x3c2223e3,0x3cc76ba0,0x3cb845f5,0x3c0452c9,0x3bf04954,0x3bbc76bc,0x3c121c91, +0x3c778b58,0x3bfddd22,0x3b9c1d1e,0x3c0681ea,0x3baa856c,0x3a23dfa5,0xbbc266c4,0xbb84ea63,0x3b8171e5,0xbcadba8b,0xbc65ccdf,0xbb3fc8af,0xbbda7c72,0xbbcfa32e,0xbc86a7ca,0x3b2f32c2,0x3c19e9ed,0xba072d6e,0x3bfe6a47,0xbb12a925,0xbcd7371b,0xbca6b0a6,0xbc89b619,0xbc38aff5,0x3ad334c4, +0x3bae79a3,0x3a84fc98,0x3c71478e,0x3c8ce4f5,0x3c73f89e,0x3c96784c,0x3c895f94,0x3c2277e8,0x3c96daa4,0x3ca2fba2,0x3c8eac2d,0x3c8823e5,0x3c42518f,0x3c221cb8,0x3b6788d8,0x3b4ed891,0x3c14da22,0x3c0a4e39,0x3b8571b4,0x3c56bffc,0xbc0023ce,0xbc7e6d2f,0xbc786818,0xbc1a1de4,0xbd6ca61c, +0xbd3ac400,0xbcbce782,0xbcdc8e66,0xbd2b96a2,0xbd23b03b,0xbd147917,0xbcec008c,0xbb3896bc,0x3badb82e,0xbbce53df,0x3a75fe7b,0x3ae85249,0xbaf6f9c0,0xbb13cdd7,0x3aa29f4c,0x3c104098,0x3c7bde3b,0x3c829cf7,0x3c029c5d,0x3c3eba90,0x3c2e39c8,0x3c479b5c,0x3c080c38,0x3c05bd6b,0x3c2f8930, +0x3b8e9f87,0xbb8b66ab,0xbc6ac041,0xbcaec042,0xbccc0daf,0xbcc95356,0xbd1f8c8e,0xbd3494b7,0xbd330563,0xbd5b0ba7,0xbcdc996d,0xbd3d4eea,0xbd74bbf6,0xbd48e894,0xbcdaed47,0xbc09b820,0x3b82716b,0x3c5173bb,0xbc3741a8,0xbcab4df0,0xbc83b7e4,0xbc78d0ea,0xbc57977a,0xbc4082e7,0xbbbd8ef2, +0xb9c7118c,0x3c17233a,0x3c38edc5,0x3c1bca87,0x3a2b577e,0xbacab25c,0x3b00ea25,0x3c3885db,0x3c28213c,0x3c45d8d9,0x3c7701aa,0x3c890e8e,0x3c8314bb,0x3be2a4db,0x3bed37e8,0x3c18b742,0x3c31940e,0x3c8cb8ca,0x3c281fb5,0xbbced4ce,0xbc95bee2,0x3c8377a5,0x3b8d6d59,0xbc1fcd8c,0xbcaf276c, +0xbd1cb6bf,0xbd32ee75,0xbd4aa08e,0xbd58794e,0xbd304a0e,0xbd0ee22b,0xbcef3af8,0xbd00cc63,0xbd03c2ef,0xbd0c86ee,0xbcf4fdc1,0xbcdb5726,0xbcbdea4b,0xbc90d54e,0xbc2ac9b3,0xbb8c17fc,0xbb77fd2a,0xb9801d89,0x3b1d948e,0x3bd2a080,0x3c4fa594,0x3c844835,0x3cb56447,0x3cc21123,0x3d0011d9, +0x3ce818b0,0x3cefa91b,0x3ce66abf,0x3cdba523,0x3cf44faf,0x3d04f2fc,0x3caba70a,0x3b23e014,0xbb730f2c,0xbc03a865,0xbc36fd6b,0xbc6beac5,0xbc8f8ee1,0xbcb13700,0xbce72fc5,0xbcf27a57,0xbd056648,0xbd0a19c3,0xbd0c32df,0xbd0cd9b0,0xbd10a088,0xbd00b82c,0xbce6e72b,0xbcce4797,0xbcb7d35b, +0xbca9a095,0xbc90184c,0xbc1f6baf,0xbc239afe,0xbc006e0b,0xbbb39117,0xbb5d3928,0xbb22b427,0xbac00f4f,0xba1aa269,0x3adfc009,0x3b0d269d,0x3b5b47b4,0x3bbb6623,0x3b6a31fb,0x3aeae425,0x3a8ee879,0xbb0fc3a6,0xbc4f646f,0xbc68f8c1,0xbc77e4e9,0xbc8c6385,0xbc99b9fd,0xbcad5608,0xbcbb598d, +0xbcc8b75a,0xbcc77e2a,0xbcc900f5,0xbccc9c79,0xbcd089fe,0xbcd460d5,0xbcdcda05,0xbccff8e5,0xbcc78df8,0xbcbd4c19,0xbcb2ef7d,0xbca61d85,0xbca4d6b6,0xbc876d64,0xbc713027,0xbc325062,0xbc6f76d7,0xbc43f007,0xbc14ac20,0xbc0f7942,0xbc072f38,0xbc0b79c9,0xbbf7ea45,0xbbeb4a58,0xbbcccc53, +0xbc19d1f9,0xbc3f122d,0xbbfd7c71,0xbc290755,0xbcbab2f7,0x3c0b36c3,0x3c014da9,0x3bf0b990,0x3c0f8349,0x3c0be8fc,0x3be0876c,0x3bfc7d2f,0x3bfbe9c0,0x3bf41ef8,0x3bea3e52,0x3be5d63d,0x3bf253ce,0x3be58d0e,0x3be844b9,0x3bf0775c,0x3c00c645,0x3c030fe2,0x3bfdf2fb,0x3bff1389,0x3c01f769, +0x3bfbe653,0x3c0a37a7,0x3c0f0b54,0x3c1c5886,0x3bf15143,0x3bf5c706,0x3bfd96b4,0x3c1dedd6,0x3c2258eb,0x3c13a088,0x3c1a3e96,0x3c13a196,0x3bfba88c,0x3bf667e4,0x3be6d9c5,0x3c1340ec,0x3c03b4af,0x3c2dc524,0x3bf5a9bb,0x3c144865,0x3c08dcac,0x3b9d63d9,0x3bcdeb80,0x3bd73dfe,0x3bf24ecb, +0x3becff28,0x3bffeba0,0x3c07d13e,0x3bd37a9e,0x3bd47f97,0x3be2259c,0x3c10a44d,0x3c16fb2c,0x3c07747a,0x3c0c51bc,0x3c10974e,0x3c1fa666,0x3c46fc79,0x3c2e2070,0x3c41d146,0x3bf6a879,0x3be5bdf6,0x3be16e42,0x3c436ee4,0x3c5e7571,0x3c2afa0b,0x3c3a4a52,0x3c15eb4f,0x3bade8f3,0x3bbfce59, +0x3bdf9d7f,0x3c25f157,0x3c1ad2f8,0x3c188f35,0x3bfcb45d,0x3c60c7cf,0x3c56da90,0x3b7cc985,0x3beb6f94,0x3bee6ddb,0x3bef8a8e,0x3bc2f9fc,0x3bb24252,0x3c112bdf,0x3babefc8,0x3bb09691,0x3bb57349,0x3c0fe4e1,0x3c24a001,0x3c031890,0x3c171915,0x3c120bb3,0x3c3dc9c9,0x3c5902de,0x3c4adaa7, +0x3c725e38,0x3be573a7,0x3bd92901,0x3b89c725,0x3c7a1c0d,0x3c891d35,0x3c3bacba,0x3c622a3c,0x3c37199b,0x3bb295e4,0x3b9d2015,0x3b997245,0x3c2dbec8,0x3bf462d6,0x3c69e1fe,0x3be10e01,0x3c1ef09b,0x3beecd73,0xbb99d940,0xba4b467d,0x3adf7d96,0x3bcfbb36,0x3bcec8e3,0x3c3fe4c4,0x3c57549d, +0x3b679da0,0x3ac3d9bf,0x3abb1c48,0x3c15cbc4,0x3c24f6cd,0x3be7f6a0,0x3c17d0cd,0x3c3aea96,0x3c8fcd0a,0x3cb71bf7,0x3c9811c8,0x3ca6b7bc,0x3c2ca94c,0x3c06e281,0xba6b209f,0x3c335990,0x3c92b784,0x3c91e99f,0x3c890c77,0x3c1df760,0x3aab5643,0xb81196fd,0x3bc10fca,0x3ca44d4d,0x3c8da8e8, +0xbbabff1f,0x3c6ed2be,0x3d06b1a9,0x3d1e3c51,0x3d42515e,0x3cd80dcb,0x3c8fddc9,0x3c933342,0xbbf232fd,0xbc6a92dc,0xbc60ab26,0x3ca47c44,0x3cf8e3fb,0x3c6ab923,0x3c61d3c9,0x3c5dd10c,0x3c74b2b2,0x3c33dc30,0x3bb75200,0x39ba7b83,0x3b6d7a39,0x3bd69439,0x3c6a6cfd,0x3c87b8e0,0x3ca6c8ad, +0x3ca27b33,0x3bcfe73c,0x3a2dbe86,0xbad3926a,0x3cae9191,0x3d11d9b0,0x3cc135b6,0x3c5194d4,0xbb94f20a,0xbcf30d1d,0xbcb94dc5,0x3d17af9a,0xbd68ca6c,0xbcf87e5e,0xbcb55020,0xbcce2db7,0xbca76fe8,0xbce5212c,0xbd54a1f0,0x3ba39520,0x3c97d364,0xbc4ef161,0x3c39873e,0x3c89239f,0x3c8baba2, +0x3c3d0692,0x3c0456ad,0x3bdf74bf,0x3c8f5926,0x3c9dc7bd,0x3bfa6fa0,0x3c5fc73f,0x3c7400f5,0x3c7082e3,0x3cad8d20,0x3c6432f7,0x3c22fa77,0x3bbe19a0,0x3c232d43,0x3ca4f90a,0x3c3050a6,0x3a9c6ef0,0xbc162811,0x3bc6ea94,0x3c78883f,0xb993ac31,0x3d588d05,0xbc5298fb,0xbc572ddc,0xbba9d0ed, +0xb91a75af,0x3c3db9fb,0x3a80bb31,0x3c2dd410,0x3cc3fff9,0x3cdf362f,0x3cbc653c,0x3c123997,0x3c82fde0,0x3bdd8efa,0xbb3bc21a,0xb8d1eb4a,0x3ba87a1d,0x3bbc8211,0x3c558d08,0x3c3bd3f7,0x37650d23,0x380e6077,0xbb0c64e2,0xba26c823,0x3bcfb5ab,0x3b2f47ee,0x3be9474b,0x3bce31e5,0x3b6f51fe, +0x3b82350e,0xba755204,0x3b7c94f5,0x3c0721a5,0xbbb3fb82,0x3b99bc92,0x3c0d5488,0xbc1c0980,0x3c03413d,0x3b411b38,0x3ae304e7,0x3b67bad0,0x3c8f890a,0x3c3755b3,0x3b1d0c32,0xbc344e9f,0xbc8d367b,0xbca5ccd1,0xbcf29148,0xbbd4e6ef,0x3ba81151,0x3bc06c35,0x3bfb76ad,0x3c205c97,0x3c523a53, +0x3c508578,0x3c2e1257,0x3be6f87d,0x3c3fec22,0x3c32230d,0x3c266269,0x3c6c02b2,0x3c297d21,0x3bf22262,0x3b719520,0x3b29c9e4,0x3bc39797,0x3b723b47,0xb9028689,0x39ae893f,0xbb61eec4,0xbb02f871,0xbb0db375,0x3c1f5313,0xbce22ba8,0xbc331e6e,0xbbbef491,0xbbeb4834,0xbc6ac394,0xbca46123, +0xbc90d53d,0xbc12344f,0xbc01d5e2,0xbc0baa37,0xbc258351,0xbb5f88a2,0x3a576ca7,0x3b32b3b2,0x3c156732,0x3c5cb863,0x3c873e78,0x3c5960ca,0x3c13f13f,0x3b4ac5ea,0x3c436c71,0x3c3a86fd,0x3bd5a6c9,0x3bec3ba6,0x3bd95a8b,0x3c351916,0xbae86b8c,0xbc1655c4,0xbc39174f,0xbc48ed8b,0xbc67e96e, +0xbca8dee8,0xbcd7eb85,0xbd16b512,0xbd59d5f8,0xbd29b81d,0xbd5a2f68,0xbd5ad650,0xbd40356c,0xbd112afb,0xbca9d9ac,0xbbf2fed0,0xbc06bbad,0xbcaa2258,0xbc8ac8d4,0xbc3c0a70,0xbb8e258a,0xbbe6cb61,0xbba9d98e,0xb9204548,0x3b40c9e0,0x3bed9931,0x3c144437,0x3c5baac9,0x3c5f1a45,0x3bf32c55, +0x3bf5e4e0,0x3bc4598d,0x3b8028d3,0x3b861d48,0x3bb0db86,0x3c293723,0x3c1162d7,0x3b85d682,0xbbf06dba,0xbc6979d0,0xbc8fbe9b,0xbc9f8f5a,0xbc07b1a8,0xbc235844,0xbca950ef,0xbd20541e,0xbc983c89,0xbce2a490,0xbce075fe,0xbcd4c466,0xbcd0a639,0xbcad0e1a,0xbc685dad,0xbbe28e29,0xbbfa3cbc, +0xbc2a7782,0xbc3ca91c,0xbc37128f,0xbc27f957,0xbc25105b,0xbbdde32e,0xbb7c83b5,0xbaa00cab,0xbb80bb18,0xbbccef06,0xbc08b626,0xbba8c241,0xbb4ae364,0xb9d4185f,0x3b2fe2eb,0x3bbe5a95,0x3c0f097e,0x3c310386,0x3c3aa7b8,0x3c8efa4b,0x3c264980,0x3bd7d795,0xb985203a,0xbba1fe00,0xbc00f190, +0xbc1f9d8d,0xbc853a27,0xbb9786ef,0xbc0fc163,0xbc41e08b,0xbc7852e3,0xbc97fd4d,0xbcb40aab,0xbcdaa1f0,0xbcfadbc8,0xbcf9cdef,0xbcee0947,0xbcea920c,0xbce65bc7,0xbce908da,0xbcf47961,0xbce22762,0xbcd42b1e,0xbcbd891b,0xbcaa9da5,0xbc8fde74,0xbc7f4dbc,0xbc88b35d,0xbc452374,0xbc213360, +0xbbf4a73d,0xbbaf06e7,0xbb057f57,0xbaf53a42,0xbaf2a256,0xbaa1ff5f,0xba4db114,0x3a2b0793,0x3b32fca5,0x3a58ebfd,0xba3876c1,0xbaeb0abf,0xbb9ad722,0xbc83e83f,0xbc7ce5f9,0xbc884092,0xbc922cf3,0xbc9a5f04,0xbca361f3,0xbca97e6b,0xbcb5f533,0xbcafe437,0xbcb20bda,0xbcb2c9eb,0xbcb4ae24, +0xbcb37502,0xbcb30e8f,0xbca9e50c,0xbca4265e,0xbc9fccfa,0xbc98907a,0xbc933e00,0xbc8558dc,0xbc93ac7f,0xbc93d2e3,0xbc97b938,0xbc79f7b7,0xbc80f909,0xbc7db77d,0xbc79d758,0xbc6e9085,0xbc6d8a94,0xbc5ef3f1,0xbc5cef9f,0xbc51bb68,0xbc634951,0xbc668037,0xbc7a8e63,0xbc7e38fc,0xbcb29dbb, +0x3bc5296e,0x3bbde8d3,0x3bad9193,0x3bc340bf,0x3bb1c319,0x3b7681e7,0x3b93f5df,0x3b9c52ff,0x3bb6fac5,0x3ba3e82e,0x3ba895cb,0x3bd79641,0x3ba46443,0x3ba35c58,0x3bb2650b,0x3bbd0b48,0x3bbee41b,0x3bc008d1,0x3baec4ee,0x3bab3439,0x3b9ee6ad,0x3bbf5c7c,0x3bcb0447,0x3bf513d0,0x3bac1fae, +0x3bc8814d,0x3bdb7664,0x3c0dc058,0x3c10dbbc,0x3bf5dd46,0x3bfbf923,0x3bebb39a,0x3bca15c3,0x3bc9e432,0x3bb50d6a,0x3bd2adcb,0x3bc14d94,0x3ba5d69a,0x3b7681ca,0x3ba38bd2,0x3b8d4db5,0x39d2ad7a,0x3ab51d2c,0x3b1f5df9,0x3bc3cc14,0x3baf7113,0x3bd0c32c,0x3c1f5ff7,0x3b99bcd0,0x3b72f18e, +0x3b9e5751,0x3bc04daa,0x3bd62a22,0x3bd627c6,0x3ba8f41c,0x3b99102e,0x3b97bee4,0x3be55953,0x3be09264,0x3c04347c,0x3bb47e54,0x3bbe4b67,0x3bd6626d,0x3c38c818,0x3c49be19,0x3c0b71cf,0x3c0d6b40,0x3be8ce96,0x3b8d4745,0x3bb3d2a7,0x3bbece0c,0x3bc8c11e,0x3ba54690,0x3baec346,0x3bc2ddc9, +0x3c0f7a60,0x3ba91610,0xbb752397,0xba15abb0,0x3a897801,0x3be715b4,0x3b8bfe6c,0x3b9f35f1,0x3c570c7a,0x3b4c6eda,0x3b5980ee,0x3baebe71,0x3bf63ee8,0x3bff7d4e,0x3bf6a990,0x3ba1fffe,0x3b6941ee,0x3b7164e5,0x3bd2d81d,0x3bf129ef,0x3c233156,0x3ba6df10,0x3bda143d,0x3bd9b1fe,0x3c8c8614, +0x3c95646b,0x3c344ee8,0x3c4aa3ed,0x3c1c83cd,0x3bac58c3,0x3bc9332a,0x3b99af81,0x3ba27395,0x3b82b810,0x3ad55d63,0x3a9c6755,0x3b59e0c0,0x39615e8d,0xbc5d6c1b,0xbc3f4a2f,0xbbeb2976,0x3be594c6,0x3bcc3402,0x3c3e438d,0x3cbe39aa,0x3ba2996d,0xba7050ab,0x39e3294f,0x3ba004ca,0x3bf9b44c, +0x3be04353,0x3b2f04e9,0x3a486e42,0x3adf7a8c,0x3c055a70,0x3c3083e9,0x3c99b12b,0x3c16fb3f,0x3bb77784,0x3987a6d3,0x3c802106,0x3cac3f63,0x3c35a6a8,0x3c493634,0x3bfebb9c,0x3a489aec,0x3b6344e0,0x3ba790b2,0x3c1cd209,0x3bca8e78,0x3b3ebaaf,0x3ca0ed19,0x3cc2d702,0x3caa7424,0x3cc880c2, +0x3cdff280,0x3cce6db9,0x3c867d00,0xbbcbfef9,0xbc9a7b22,0xbcb6900d,0xbc01e55d,0x3c2d8701,0x3cf6599c,0x3c98b6a2,0x3c6f1aa0,0x3c80a50d,0x3c54f53c,0x3c3195d3,0x3b9fef59,0x3b28f0df,0x3b8d5724,0x3c22c680,0x3c2b58f4,0x3c6ebbe8,0x3cb7dd92,0x3bb2d350,0x3a766d7c,0x3c1b6633,0x3cf3d309, +0x3d07b8af,0x3c26cebc,0x3c05a997,0xbba03b17,0xbce5d8e0,0xbc6c6fb9,0x3c9c8f78,0xbd8787cb,0xbc69576e,0xbb0fbcbc,0xbc494384,0xbc7930e3,0xbc91f252,0xbcc4f0b9,0x3c6fe4da,0x3cd1b947,0xbac50236,0x3bfe630b,0x3c3afa2f,0x3c8c6efe,0x3c906804,0x3c8d8ccb,0x3c9024e1,0x3c7026c8,0x3c54423a, +0x3c09b1ec,0x3c1856e9,0x3c12dbea,0x3c064ad3,0x3cad0abf,0x3c8f4b45,0x3c232269,0x3c382267,0x3c7d14ce,0x3cab4206,0x3bd963e5,0x3b1fcffb,0x3b3b8c70,0x3c2d6268,0x3c74d0cf,0xba590ff9,0x3d2bcd24,0xbc80fc99,0xbc76a988,0x3c3e55b6,0x3c94ece1,0x3cbc8a20,0x3b913171,0x3b178c19,0x3b7dda4c, +0x3c85fed1,0x3cb2a4da,0x3c33db76,0x3c864049,0x3bff85ae,0xbb7d11fe,0xbc091ac1,0xbb862e27,0x3c2b9c16,0x3b5dcdf7,0xba8377f1,0xbbbdad2d,0xbb94b336,0xbbcb981d,0xbc01ae98,0xbb417767,0x3a521d03,0x3c14f90c,0x3be502d3,0x3b962d0f,0x3bbf093c,0x3ba62c5f,0x3bf4911d,0x3b787b52,0x3c35f415, +0x3c768996,0x3b382311,0xbc3fefee,0x3c86c013,0x3c978556,0x3c49c6ad,0x3c3a3c3b,0x3c8a7e36,0x3c309f4e,0x3ba1e5e9,0xbb025166,0xbbc83a5e,0xbc15c302,0xbca91e7e,0xbc1347bb,0xbacf0c6b,0x3b05f621,0x395ec1f6,0x3b7d7cf1,0x3c3a146b,0x3c1958b9,0x3c1126cb,0x3bbbf8d9,0x3b400658,0x3b124abd, +0x3b32ee3d,0x3c0cb7d6,0x3bed36a0,0x3b913caf,0x3b99fb9d,0x3b6be523,0x3b6d7e4b,0x3aa2ba76,0xba49484f,0xbbd732de,0xbb161ba3,0x3a4d3836,0xba883b1c,0x3c358121,0xbcd8287a,0xbc97891c,0xbc309999,0xbbc31bd3,0xbb874040,0xbbb4ce36,0xbba85252,0xbb4739cd,0xbc98bea1,0xbc9f463c,0xbc1ccd99, +0xbbe1bb8b,0xbb284913,0x39b3a6eb,0x3bf41f33,0x3c219b2c,0x3c31dc51,0x3b03b78d,0x39b303a3,0x3ba26751,0x3bb19bb1,0x3b8f1c9f,0x394679ff,0x3b97b1b8,0x3b7573bf,0x3b6da8c0,0xbb3a7f0e,0xbbd1796d,0xbb8e6e49,0xbba73237,0xbc25deba,0xbca235ee,0xbd035406,0xbd2fcfe0,0xbd53aaf5,0xbd15af20, +0xbd099e8c,0xbcffce1f,0xbcd6edf7,0xbcdbaa00,0xbcdc50e9,0xbd109bd9,0xbd1727c0,0xbcf5d1a4,0xbc908f1f,0xbc22a00b,0xbc18ee5c,0xbbddf74f,0xbb8fd274,0xbb2cdde1,0x3b75dfd1,0x3be045e8,0x3c608439,0x3c02203a,0x3bec99bd,0x3c15e5f9,0x3c22ff25,0x3c18367a,0x3b858e62,0x3b939a31,0x3b340d25, +0x3b89f456,0xbbe9e97f,0xbc550779,0xbc8318d6,0xbcb3949e,0xbccbb450,0xbccf7ba7,0xbcaaea78,0xbc8876dc,0xbc34d79c,0xbcc90c3d,0xbd150429,0xbd28fe38,0xbd12b303,0xbcf8cfdb,0xbcbe3015,0xbc617ca9,0xbb858b6a,0x3b72bf95,0x3a8a80ed,0xba45e6fb,0xbaebda64,0x3b001b64,0x3b97b509,0x3be55432, +0x3c275a2f,0x3c55bbef,0x3c8a51bc,0x3c443c9e,0x3c156a92,0x3b69752a,0xb96d383f,0xba29aa6c,0xbaf06d13,0x3aa8c61a,0x3b790996,0x3bfb838c,0x3bc6d334,0x3b4af2e9,0x3b5d76f5,0xbb207441,0xbbbd1ca1,0xbc39e626,0xbc93c2d1,0xbcd25515,0xbd0291dd,0xbd10b081,0xbc242f56,0xbc5d5a4b,0xbc627f29, +0xbc700745,0xbc84a76a,0xbc8f67b7,0xbc9d739b,0xbc9b9e58,0xbc88ad80,0xbc5ffa87,0xbc3dccd5,0xbc24f827,0xbc0e55c3,0xbbf0224a,0xbc0111d9,0xbc07825d,0xbc049a6d,0xbbfdb282,0xbbdf99b0,0xbbc71f2d,0xbbd7a725,0xbb2d18de,0xba8b858d,0xb8c4d961,0x3aac9dea,0x3b8e8fb0,0x3b0b2e89,0x3a20ecc2, +0xba72010c,0xbae835a7,0xbb1167fc,0xbaff7650,0xbb820b81,0xbb9d35ec,0xbbb5be38,0xbbff9de8,0xbc0e6861,0xbbf62020,0xbbf8a3ed,0xbbfa35f2,0xbbf0fcb5,0xbbeba344,0xbbe4c78a,0xbbf7de34,0xbbdca7eb,0xbbd2c21f,0xbbc20933,0xbbb06c64,0xbb9e5194,0xbb82627d,0xbb8a088e,0xbb8c173f,0xbb969174, +0xbb94abe0,0xbb9d78a2,0xbb8f7b89,0xbbcd83db,0xbbf0045d,0xbc1fa06a,0xbb6a201f,0xbbb01efb,0xbbea1647,0xbbf2db58,0xbbea81e1,0xbbf33adb,0xbbf61b75,0xbc054bca,0xbc0fbc3a,0xbc008db8,0xbbd8e928,0xbc349187,0xbc1bf4bf,0xbb801781,0x3b3f878c,0x3b845fbb,0x3b8a5417,0x3b40b2a4,0x3b02b83e, +0x3a266e69,0x3aa0445d,0x3ad430e1,0x3b366ef6,0x3b13121e,0x3b14c582,0x3b6f0bd5,0x3a7185d7,0x39d07b4c,0x39c0abc2,0x3ad09433,0x3b164022,0x3b51fbf1,0x3b4650f8,0x3b488c1b,0x3b2be1f4,0x3b54ee60,0x3b537fab,0x3b6f4bdc,0x3b1aebfd,0x3b761e26,0x3bad507c,0x3bd29437,0x3bd7265e,0x3bb38ba6, +0x3bb23dae,0x3ba623ef,0x3b89bf98,0x3b8bfb89,0x3b70b294,0x3b8966d2,0x3b829cc8,0x3b3884d0,0x3b8ddc40,0x3b0824d3,0x39951049,0xbb3b79a3,0xbb3747cc,0xbab7bf31,0x3b2701f6,0x3b2974b7,0x3b3db2fb,0x3bbdae36,0xbb0461d8,0xbb9c92f9,0xbb8c14f3,0xbafa424d,0x3a674df9,0x3b707ce6,0x3b7996c4, +0x3b75cf03,0x3b2fcbaf,0x3b6f34dc,0x3b341602,0x3ae1d443,0x3b1576c6,0x3b82247a,0x3bd6f702,0x3c1a36cc,0x3c228882,0x3be5c5a2,0x3bd8eb29,0x3bb1d8dd,0x3b5a095a,0x3bb1d224,0x3bc03dd2,0x3b88904d,0x3b6ab3c7,0x3bee3340,0x3c2cbc7a,0x3baf162e,0xba4da5f8,0xbbe8404b,0xbbc3424f,0xbb7833aa, +0x3b77d60b,0x3af04edc,0x3ac2590d,0x3c038980,0xbbe69d44,0xbc228fca,0xbc14cbc4,0xbb5e1ac2,0x3a228c8f,0x3bb05eb0,0x3ba09340,0x3b98a606,0x3b452ec8,0x3b871416,0x3b590cbb,0x3a2d0ef9,0x3ae86827,0x3bc2b5c2,0x3c23ff68,0x3c8af18e,0x3c940c5c,0x3c46438d,0x3c44de19,0x3c2011fc,0x3bb4afe5, +0x3c0bef80,0x3bdfeedc,0x3b920968,0x3bc5d545,0xb7de5d25,0x3bf34223,0x3b315beb,0xbb690361,0xbc6ccf65,0xbc985e04,0xbc569778,0x3b3c5654,0x3b7da318,0x3bb8230b,0x3c849d42,0xbc01693c,0xbca75a81,0xbcabb8d6,0xbc6851b8,0xbb711c1c,0x3b9de5e8,0x3b9ba231,0x3b711419,0x3a062391,0x3b3cc288, +0x3b721863,0x3bd11787,0x3bcc3d2e,0x3bd9ce7b,0x3c04f975,0x3ca563f8,0x3cc07c6b,0x3c426cce,0x3c3b7435,0x3c1b39ba,0x3b6ffb0d,0x3c1a5eb2,0x3c2d57f7,0x3be71fe8,0x3b8ce1af,0x3cc8eb2d,0x3ce2cff1,0x3c17159e,0x3b0fa74a,0x3c0939e6,0x3cfbcb8d,0x3cfe0270,0x3ba9372b,0x3aca0ecb,0xbc5a16e6, +0xbccee522,0xbccf12fc,0xbbd03800,0x3d071308,0x3cb9ca5b,0x3c96c72c,0x3c86d2c6,0x3c5daa74,0x3c535978,0x3c42303c,0x3c37928c,0x3c2c7543,0x3c1e7de7,0x3be428f7,0x3c0d1bf9,0x3c965e43,0x3ba1b907,0x3bb5c452,0x3cba6ec8,0x3cf9ea87,0x3cc661fa,0x3bf80fb6,0x3b6635b5,0xbbd68075,0xbc87f9bd, +0x3c218c57,0xbd0e399b,0xbd4cc9c1,0x3b7a7e07,0x3c796637,0xbc228081,0xbb99f977,0xbbb72c31,0xbc54a13f,0x3c0d8981,0x3c8b46d4,0x3c36631b,0x3ba14c03,0x3bb40773,0x3c65fe9d,0x3c97b428,0x3cae4f84,0x3cad0f92,0x3c277367,0x3bbcb6b3,0x3bdfde6e,0x3b5b19e0,0x3b6185ff,0x3bb9b5c0,0x3c5e8374, +0x3c731a96,0x3c120254,0x3c8cbbe3,0x3caa1808,0x3c92811d,0x3b965a57,0x3bbcae03,0x3c781979,0x3c368c42,0x3c5483bc,0x3c933b8d,0xbc282180,0x3c03fe14,0x3c1e7492,0x3ce0951d,0x3cd5e532,0x3c9d1e6f,0x3af7bf9d,0xbc2f304e,0xbc3a3184,0xbc1f6e3b,0xb9b75d89,0x3c69321b,0x3c125dce,0x3befc7c8, +0x3ad46545,0xbb80689b,0xbb77672a,0x3c14ff98,0xbb07235c,0xbbc5bc12,0xbb96c271,0xbbb9e739,0xbb902e0f,0xbb49a92b,0xbbba4c03,0x3ae2580c,0x3c3640ee,0x3bdc78b7,0x3ba6fcf5,0x3bb544b4,0x3bf19e56,0x3bcc76f1,0xbaa1e9a9,0x3c4f8ce9,0x3c866a05,0x3c1c1a14,0x3c0f6263,0x3b8a5688,0x3c28c689, +0x3c2c8778,0x3c47bc52,0x3c3f67cd,0x3c8766b5,0x3ca85a02,0x3cc15fb0,0x3bf17328,0xb979a43b,0x3b0afa02,0xbc1139d6,0xbc12d26a,0xbba2aea2,0xbb05351f,0x3b0491f3,0x3c318c1f,0x3c3520dc,0x3c34b60d,0x3bffb330,0x3a3975c4,0xbad53ce5,0x3b001287,0x3aaf7971,0x3ae4187a,0x3b4c600b,0x3bfb9e61, +0x3c027d59,0x3b5cc674,0x3bacedbd,0x3b5454ae,0xbbdcbd7c,0xbbc034eb,0xbb9d6d1a,0xbc15c3c7,0xbadccf05,0xbccaf91b,0xbc520cc2,0xbc5150e0,0xbbd4663f,0x3bb0ccb6,0x3a6f678a,0xbbf170c1,0xbc8fd658,0xbcb9f94a,0xbc9d72e4,0xbbf42908,0xbbebf187,0xbb312b20,0x3aa09632,0x3b7566de,0x3b4b9ae0, +0x39016ee3,0xbad74cbe,0xbac3015b,0x3b46be66,0x39a2a45a,0xb8076981,0x3a2ff509,0x3b1312d8,0xb88de2db,0xbbc74d15,0xbb5b76f9,0xbb5fde4f,0xbb625d7a,0xbbbbbab9,0xbc4fa0b7,0xbcabe92e,0xbcfbb501,0xbd156c84,0xbd06bd21,0xbcf7e1ec,0xbc93ae92,0xbc90d5b1,0xbc8e20ae,0xbcb33f30,0xbcead4d6, +0xbcd5789c,0xbcaf88c6,0xbc8d5346,0xbc57d192,0xbc380af3,0xbc164532,0xbbde91f5,0xbb7d2d68,0xb787cf35,0x3b8ca752,0x3bc75e82,0x3b2c86b4,0x3afa70b8,0x3b2a763a,0x3be6d345,0x3bee9c8e,0x3bdccdfc,0x3ba37291,0x3b9f054e,0x3a258fc7,0xbbc05b5f,0xbc854d55,0xbcaa60ca,0xbca500bf,0xbcbc5447, +0xbcd3f573,0xbceca2cd,0xbce66f4c,0xbcbd116a,0xbc728cf9,0xbc85be27,0xbcee1768,0xbcf2448f,0xbcdf02ab,0xbcdaa98e,0xbcd11f59,0xbcacb730,0xbc927c06,0xbc65d8bc,0xbc3ca403,0xbc048bcd,0xbba1ecb2,0x3ad7b8a5,0x3bef956a,0x3c5336ca,0x3c28b63a,0x3c144ce6,0x3c06214d,0x3c0ace2d,0x3c05810c, +0x3c09f547,0x3bf21154,0x3bc98749,0x3bad8574,0x3b40580c,0x3b1c4dc4,0x3af59d7d,0xb9c28e52,0xbbee3587,0xbc1ca9c8,0xbc330afd,0xbc0f6389,0xbc0eb8a5,0xbc65d4f2,0xbca2f38b,0xbcca306b,0xbcdac589,0xbc8d6edc,0xbca4cb96,0xbc8e4e04,0xbc714f3e,0xbc42550c,0xbc1bdf41,0xbbda222a,0xbb5e12f5, +0xbad312bd,0x395d79fe,0x3ae38397,0x3b4802e9,0x3b899c0f,0x3bdabe42,0x3bba2a30,0x3baf88e8,0x3b97e579,0x3b8b976b,0x3b8a5519,0x3b6faecd,0xb78ff27e,0x3a47633d,0x39e81494,0x399bc5fd,0xb9f73fc7,0xba725dc2,0xbb638f68,0xbb96742d,0xbbb75bfe,0xbbf7c634,0xbc1b84a5,0xbc23da7e,0xbc41faad, +0xbc493554,0xbc61e82d,0xbc80cab4,0xbba95253,0xbbed485f,0xbbb50758,0xbb9a0dec,0xbb7a9deb,0xbb3e4b91,0xbb0d5102,0xbab97220,0xba5cd539,0xb8a6ac66,0x3a470ae6,0x3ad0afa7,0x3b189c20,0x3b502825,0x3b3826ab,0x3b365e67,0x3b31c518,0x3b231ed4,0x3b0b30cf,0x3b2168e7,0x3abbdef0,0x3aa94f6b, +0x3a60b1c5,0x3a3e9362,0x3a4373ab,0x3b0c4d5b,0x3add2c9c,0x3aaf1d6a,0x39ff0cec,0xb7c1d38b,0xba70f1d5,0xbb00b153,0xbb5ecf32,0xbb966021,0xbb72d19a,0xbb9c4e42,0x3a20dab3,0xb8f7be4b,0x3b0b9179,0x3b26da79,0x39984b7b,0xba787559,0xbaed5f56,0xbafc4d02,0xbac70b0d,0x39bcfca1,0xba3260f2, +0xba5ed96b,0xb8bcb007,0xbb0dd5fb,0xbb3c9509,0xbb717039,0xbb1ba2b7,0xbab1d4a2,0x3938d10b,0x3a3c368e,0x3a7f3a8b,0x39953731,0x39dff24d,0x3984ef7d,0x3718916a,0xba0dd072,0x3a486af4,0x3b4dab5f,0x3b69677f,0x3b749fb3,0x3b3d170b,0x3b46fd71,0x3b3419f5,0x3ab7daf2,0x3b00ec23,0x3ab0881a, +0x3ada4ba9,0x3b0546ea,0x3b38a6af,0x3b87993c,0xb9c04654,0xbb35960d,0xbb9b8cae,0xbbc62c8b,0xbb9fcc28,0x38959db3,0xba8f223d,0xba86a9df,0x39bcfa24,0xbb9ad9a5,0xbc000da3,0xbc1da75c,0xbc00402f,0xbb9adae4,0xb9568d29,0x3b14b872,0x3b3dbcc5,0x3a7addf0,0x3a54b9af,0xbaa82ec4,0xbb3c9de8, +0xbac3121a,0x3a71f705,0x3bb0221e,0x3bd1888d,0x3be07459,0x3baaedf0,0x3b9f0915,0x3b73d851,0x3a5473a5,0x3b96786c,0x3ba5fc7c,0x3ad36550,0x3b1a81a1,0x3c24d5b8,0x3c68e073,0x3b26903d,0xbb92f413,0xbbfc8009,0xbc2b6f53,0xbc0f4b71,0x3b141bb7,0xbb24a1c5,0xbb488b31,0xb9fb13d8,0xbc2d0aa9, +0xbc72ad17,0xbc940fe0,0xbc571595,0xbbf0a3b4,0x3a62ac57,0x3ba2810a,0x3bca7e3f,0x3b318f31,0x3abe325d,0xba921730,0xbba761b6,0xbb26389d,0x3b2f27c2,0x3c214617,0x3c649cdc,0x3c75b6fe,0x3c37e90b,0x3c3a94ee,0x3c2000cd,0x3b45c280,0x3c1419c8,0x3bfb8398,0x3b5cfd64,0x3bf861b0,0x3bb5a9fd, +0x3c6764d7,0x3abbfe04,0xbbc91228,0xbc4271b4,0xbca97bd8,0xbc88a4e4,0x3b044f5c,0xbaeff09d,0xba807a19,0x3baa1254,0xbc14a542,0xbcb71491,0xbcefe42b,0xbcd71411,0xbc7b656d,0xba844847,0x3be28ee3,0x3c0bcd2b,0x3b15ffe0,0x3a43be3c,0xbb5a84da,0xbbbef077,0xb8dc6ca3,0x3bbdee05,0x3c5b2864, +0x3cc0a4a7,0x3cd40de1,0x3c6b9b6e,0x3c4dd0fe,0x3c37082a,0x3b9202db,0x3c70f148,0x3c86e087,0x3bae088a,0x3bb1fe74,0x3d22c310,0x3cfa647b,0x3bbc0e9a,0xbb998840,0xbc279c18,0x3ca2541f,0x3cad5707,0xbc1b7751,0x3b47b010,0xbc3bed39,0xbd13b9ea,0xbd0d6fd1,0xbca12f28,0x3c2b9854,0x3c7b168f, +0x3c84f487,0x3c5600ab,0x3c39c38f,0x3c2d7eb8,0x3c4330e5,0x3c7fd182,0x3c71bdf8,0x3c49dbb3,0x3be2c98c,0x3b92b3e2,0x3c46b7fa,0x3b0b77d2,0x3c1c85a0,0x3d106a12,0x3cc74d6b,0x3c4fcde5,0x3be0d4a6,0xbbe6855a,0xbc56fb0d,0xbb3db9ea,0x3ce2e5c8,0xbd90ccaa,0xbd064f02,0xbb512384,0x3c3fbb36, +0x3a4eaffe,0x3c17c8d9,0x3b5c4d71,0xbc85529b,0xbc3c823e,0xbac1a861,0x3cab4742,0x3bb6d969,0x3acdd4ae,0x3bccddf2,0x3c6c082c,0x3c9b75c4,0x3c84da64,0x3bb4fcc3,0x3a60128c,0x3bae10f5,0x3b19f231,0x3b20b188,0x3ba110b7,0x3bac6a40,0x3c086500,0x3be8f492,0x3ca13c9c,0x3cb47392,0x3c5304c5, +0x3bcc3526,0x3c022c14,0x3c5fd404,0x3c2b2c87,0x3c8bb35e,0x3d16750b,0xbd413dbd,0x3d20ae67,0x3d2c5ac7,0x3d1e441a,0x3cf38a13,0x3ca7e75f,0x3c36f29e,0xbb76cffa,0xbc4e279d,0xbcc0d3f5,0xbc93fc02,0x3bf89ad3,0x3a1b5190,0x3be6124c,0x3c159384,0x3bdbe62d,0x3adec1f3,0xb98a040d,0xbb84e6f8, +0xbbcbb6e0,0xbb663d46,0xbb3e494f,0xba8f44b4,0x3aaaa6c4,0xbb336507,0x3b72ded2,0x3c28a55b,0x3bcf31fa,0x3ba790a9,0x3b8e1cea,0x3c1947d9,0x3c085429,0x3af8cb8b,0x3c585feb,0x3c7aa3e5,0x3c8e0985,0x3d0213f6,0xbc641f60,0xbc28372c,0xba6119f3,0x3c0201e9,0x3c4da2ed,0x3ccecf46,0x3d051eac, +0x3d1a9d53,0x3c950492,0x3c09c782,0x3c89b2c7,0xbb8490f5,0xbc20b949,0xbbbb9489,0x3b527bce,0x3be24584,0x3c1d1e08,0x3c2384b8,0x3c0cc372,0x3bdfe49e,0x3a889ccb,0xba92dd10,0x3941f6b7,0xbb0c660a,0xbad9be81,0xba0bfc80,0x3bd78685,0x3c1ba3f7,0x3baa456a,0x3bd3fd12,0x3b6fd128,0xbb49674b, +0xbb8ab22c,0xbb0f88ae,0xbc031a55,0xbc3daaf6,0xbc6bb63f,0xbbd24254,0xbb80d521,0xbaedd380,0x3a482c58,0xbb596eb0,0xbc4d6cce,0xbcd5f9ef,0xbc82778e,0xbc26a044,0xbb8cd998,0xb939a203,0x3b0038e9,0x3b55d8d4,0x3a5c8b74,0xb93526ed,0xbab6a271,0xb886a589,0x3aaf8472,0x3b11170e,0x3a26a074, +0x398e7464,0x39ffad4e,0x3991a1a0,0xbad13cf5,0xbc18aeb0,0xbbd3aadd,0xbbf006f2,0xbc0529f3,0xbbf6c49d,0xbc304ce8,0xbc6786aa,0xbc91153c,0xbca824f5,0xbc9d2cc3,0xbc8ec343,0xbc3d2ca3,0xbc32692c,0xbc22f071,0xbc276c15,0xbc0d970c,0xbc0e6fda,0xbbc28ed1,0xbb91c139,0xbb579816,0xbb9c3091, +0xbbcbb097,0xbb4f9109,0xb885b84b,0x3b956f84,0x3b21e0c9,0x39b7ffd8,0xbb32f7fe,0xb9b928c3,0x3a9ea05f,0x3b677610,0x3b8a918a,0x3b9e76e4,0x3bdb64cd,0x3a9cfab7,0xbb9da20e,0xbc53dcc6,0xbc8e3f98,0xbca050bb,0xbca3a017,0xbcbd1913,0xbce2354e,0xbd047890,0xbd0904b4,0xbcfcbfc0,0xbcdb9371, +0xbc7d06f6,0xbc6faf14,0xbc63c2fa,0xbc633c62,0xbc8116d8,0xbc8ccd7b,0xbc91ab9f,0xbc9b6a6c,0xbc9f8e97,0xbc8007cd,0xbc31a245,0xbbd451fa,0xbb3d8146,0x3a21d071,0x3bb035e4,0x3b5bd844,0x3b21c08d,0x3a983f07,0x3b3f5ff4,0x3b825dac,0x3bbc28c5,0x3bcb8c12,0x3be7633e,0x3c1005ef,0x3a4a9065, +0xbb899a5a,0xbc42c3ff,0xbc571ee6,0xbc9b6c18,0xbcb1e842,0xbc9d4e43,0xbc72d9df,0xbc3f807a,0xbc3df9ba,0xbc324a13,0xbc2ce905,0xbc4dcd4a,0xbcacd54a,0xbc9f176c,0xbc86e43d,0xbc6097a2,0xbc2ea941,0xbbf66057,0xbb859942,0xbaa530fa,0xb96f6c10,0x391ce1a3,0x3a5c9897,0x3ae88d18,0x3b34bfec, +0x3b926831,0x3b95a9cc,0x3ba914c0,0x3bad68d4,0x3bb365bc,0x3bade3be,0x3bbeb837,0x3baaa840,0x3a88ba35,0xba917968,0xbb60e55c,0xbba27eb5,0xbbfa7f59,0xbc13f747,0xbc2723a3,0xbc372bbc,0xbc5bdd04,0xbc82ee62,0xbc92b49f,0xbc99c7e5,0xbc9e157d,0xbca32791,0xbca1be27,0xbc067c6c,0xbc1077b7, +0xbc002635,0xbbe42016,0xbbca77fd,0xbbb6cb99,0xbba4f3aa,0xbb850d2f,0xbb7e1d94,0xbb54028e,0xbb2d3d1c,0xbb068f5a,0xbacbc7df,0xba89363b,0xba953291,0xba90559f,0xba7fd339,0xba746f14,0xba58758e,0xba62b845,0xba396520,0xba864f68,0xba6e5c66,0xbb53d2af,0xbb5077ae,0xbb34a1bc,0xbb52a707, +0xbb74f585,0xbb9258c1,0xbba5e1bb,0xbbb894e0,0xbbd16d42,0xbbedcf31,0xbbfe4cab,0xbbf4b7e1,0xbc03bd6f,0xbb8094b5,0xbb0c8dc3,0xb84e86ea,0x399c9e1d,0xbaebe789,0xbb3be712,0xbb503769,0xbb779738,0xbb5f0316,0xbaa5eb5b,0xbb1f70dc,0xbb2787e3,0xbb139ea2,0xbb3d8e08,0xbb5fc5f2,0xbb9c0425, +0xbb865d81,0xbb642dcd,0xbb1d7aaf,0xbab05058,0xba7fb3fc,0xbab348cd,0xbaeedbef,0xbb0c7041,0xbb1dda83,0xbb2d4b5f,0xbae3f46b,0x3a34ebcc,0x39aee146,0x3a161320,0x39c199c0,0x3a4326da,0x39f9e7be,0xbab2e046,0xb9659426,0xba44355c,0xbab5b146,0xb95bc388,0x3aa42b9c,0x3acb3eab,0xbb3257b2, +0xbb9ce2b1,0xbbb4a5ba,0xbbf21fc2,0xbbd236c8,0xbab18ec4,0xbb519d69,0xbb2efa96,0xbae533b6,0xbb20c43c,0xbba1707b,0xbc14bc35,0xbc11132f,0xbbf1b3fc,0xbb88b6f9,0xba0b16eb,0x3a255ea9,0xba5330e1,0xbb04cc7e,0xbb839f24,0xbb9f1986,0xbb89d7d4,0xbaffa6ef,0x3b76f70b,0x3b29afc9,0x3b4c3375, +0x3b645ade,0x3b50dc7b,0x3b1c0d55,0xbaaee39f,0x3b4cdf92,0x3b324243,0xbb371bf5,0xb90a8000,0x3bff3a52,0x3c24ac60,0xbad12e87,0xbbea74bb,0xbbe9fee6,0xbc46b800,0xbc2bfb43,0x3a83e441,0xbb930a7e,0xbb7c414a,0xbb4dfe3d,0xbbb22858,0xbc13e5c1,0xbc8404b1,0xbc6f444c,0xbc364200,0xbb9ec226, +0x3ae9f2a4,0x3b85d5f7,0x3aba9461,0xbada7711,0xbb98d6bc,0xbbd5b277,0xbbbecbf3,0xbac1b20b,0x3c0742bb,0x3bf9ef38,0x3c123ae1,0x3c123e88,0x3c2bcdeb,0x3c144035,0xb9808a6e,0x3bedb3b9,0x3bbc4590,0xbad73778,0x3bad7482,0x3b9eaf66,0x3c1667b4,0xbb5cdeff,0xbc02c4af,0xbc12e50b,0xbc94aba0, +0xbc82492a,0x3aa62a63,0xbb9829b0,0xbb1784ec,0x3b329d1f,0x3ac79410,0xbc0fefe2,0xbcba63f2,0xbccc057b,0xbca42057,0xbc18c298,0x3b36ff05,0x3bdbd86c,0x3ad41187,0xbb5752be,0xbc01e263,0xbc1b0717,0xbbc0ad59,0x3add5715,0x3c68d8e4,0x3cabd136,0x3cbce668,0x3c635145,0x3c5e089d,0x3c4ea83e, +0x3b9309b0,0x3c8d831e,0x3c8559e8,0xbb343add,0x3a976e6d,0x3d330e38,0x3cd7d093,0x3b66107c,0xbc460d67,0xbcd0fba2,0x3b18c090,0x3bff41e4,0xbc5db6b3,0x3b52d2ce,0xbbcdbb7b,0xbcfc891c,0xbcfc3798,0xbcbc0b59,0xbc12b113,0x3bd8783d,0x3c448592,0x3bef2b8c,0x3c1053dd,0x3c19b7d4,0x3c307ed7, +0x3c58aecf,0x3c3cec45,0x3c0500eb,0x3bcb0404,0x3b1f9da0,0x3bba740b,0xba12b170,0x3c24f74a,0x3d196b51,0x3c802442,0x3b3baeeb,0xb9ebc8c8,0xbca7158c,0xbc9e2269,0x3bdc0078,0x3d179e4d,0xbd8ec1e3,0xbd063134,0xbcb65775,0x3a054a6b,0x3c868d3a,0x3c631c16,0x3ba2dfb7,0xbc50c9db,0xbca864ad, +0xbc42b540,0x3cc2e25a,0x3bb0dae8,0xb94b5c80,0x3b79bcb3,0x3c1ab747,0x3c3fc1df,0x3bacaa0e,0x3a8e22c3,0xbac9d972,0x3aa2a35e,0x3b844dd8,0x3bbb81ad,0x3bc408f0,0x3b0322ad,0x3baed70c,0x3c0e8e20,0x3c9af4e6,0x3c974939,0x3bf217d6,0x3bcafe9e,0x3be39809,0x3c27283a,0x3c8ea9ae,0x3caf557a, +0x3cb947be,0xbd534f08,0x3d5424ec,0x3d532e34,0x3d1af94e,0x3cd38ca9,0x3c402f84,0x3d0306d5,0x3cb78f2a,0xbc9c0ed9,0xbc90973b,0xbc93872a,0xbbf63d1f,0x3a6a4ef3,0x3c3e803d,0x3c8fd0ed,0x3c7fbd80,0x3c0fbbd2,0xbb7f1c41,0xbb431ab1,0xbb71fb84,0xbbb05786,0xbb843318,0xba74c510,0x3ab816a9, +0x3ada3be6,0x3bb7eb19,0x3bd95359,0x3b7b3b79,0x3b69be37,0x3b8045cc,0x3c2b9943,0x3c4e8c5b,0x3c5957b6,0x3c2b2af5,0x3bd2f9c2,0x3c7a9c4c,0x3d2482e2,0xbcd6502b,0xbca2e9d3,0xbc5dc29b,0xbad6ca1b,0x3c11b091,0x3c8b3890,0x3cba9447,0x3ca07a89,0x3cdbf474,0x3cba38c6,0x3c91a167,0x3bf62ddc, +0x37e0327b,0x3a52a74c,0x3bc58f41,0x3c12aa90,0x3bded9b5,0x3b9d58fb,0x3ae4b939,0x3b09052f,0x3ac3d148,0xba364c3b,0xbb9964bf,0xbba91a1a,0xbb66cdd7,0xbb15e64a,0x3a6b716b,0x3b772546,0x3b442217,0x3ae66a20,0xb98c72e2,0x39b1543a,0xbb338a48,0xb9de7b69,0xbb0d693c,0xbc8f72dc,0x3a0b18a3, +0x3c143faa,0x3ad4fe76,0xbb3e56eb,0xbac09634,0xbb8ab591,0xbb9d5c27,0xbbdfceeb,0xbb61328d,0xbb7b5137,0xbbb87378,0x3998cf9a,0x3b3efc77,0x3b1e9cbe,0x3b0aef1f,0x3b2f6752,0x3b570c5d,0x3bb463d6,0x3ba4103a,0x3ac19578,0x3992ea18,0x3989eeb6,0x3b57d23e,0xbb1cdc5e,0xbbae3abc,0xbbf0269b, +0xbc1f51c2,0xbc22863f,0xbbf6a1e0,0xbb986a5d,0xbb8f68fc,0xbb81f379,0xbb5069a4,0xbb93ecb6,0xbbb685da,0xbadedcf2,0xbc4f8485,0xbc073181,0xbb92d55a,0xbad3e55b,0x38c4ea9a,0x399e48a3,0x3a905a8b,0x3b08bdde,0xbb3ab7a5,0xbb39b56b,0x391a37d3,0x3b220ac3,0x3b911282,0x3bd00532,0x39c382f9, +0xba9ded63,0xb9d37707,0x3ab9cb30,0x3b464397,0x3b637be6,0x3ba20e3a,0x3b6e87d2,0x3b182368,0xbba92bb1,0xbc1f2f24,0xbc68b1c5,0xbc6d05d1,0xbc86506b,0xbca0c140,0xbcb9f8ef,0xbcda09ee,0xbcf406d7,0xbd09e6da,0xbd07bd3c,0xbcf4bc44,0xbc9893dd,0xbbc41d5f,0xbb83235a,0xbb8f80e5,0xbbb88a74, +0xbbc9ae93,0xbbfa5a20,0xbc1e7712,0xbc398828,0xbc0b8b0f,0xbbc1c506,0xbb609ca2,0xbb7a6553,0xbb84126f,0xbb6709fb,0xbaff2bd1,0xb9b9691c,0x3a2a36b3,0x3adbcfb6,0x3b2edfe6,0x3b8cf113,0x3b61b752,0x3b4a444e,0x3b7d4ac9,0xbb8da9b4,0xbc3cedc5,0xbca87556,0xbcaec18e,0xbcbae7d4,0xbcc82158, +0xbcb57682,0xbca8c1af,0xbc9c5867,0xbc676e6c,0xbc169edb,0xbba2a3aa,0xbbbb6af1,0xbc5810f9,0xbc23d03c,0xbc1a522a,0xbc101e99,0xbc04a882,0xbbe9f98a,0xbbbe4dac,0xbbae4d6c,0xbb9bc066,0xbba087ee,0xbb9e0bcd,0xbb9101b5,0xbb787ed8,0xbb679848,0xbb737585,0xbb853859,0xbb8bcfa2,0xbb8f1114, +0xbb9a6cdd,0xbb9a13d4,0xbb886f2a,0xbbd47c1e,0xbbf26a63,0xbc04f074,0xbbff11cc,0xbc0d5dec,0xbc0b2c12,0xbc146d92,0xbc1d7b2e,0xbc2c2d8f,0xbc370658,0xbc57b547,0xbc503adf,0xbc60020a,0xbc637689,0xbc4aac74,0xbc032060,0xbc01aa02,0xbc0386c8,0xbbfc7ae6,0xbbf74dd2,0xbbf5c74d,0xbbf58bdd, +0xbbec9de6,0xbbecc23e,0xbbe4334d,0xbbda45ac,0xbbd17674,0xbbcaba7a,0xbbbdde07,0xbbc254c4,0xbbc18fd8,0xbbc1647f,0xbbc28408,0xbbc00f47,0xbbc94cb2,0xbbbc5631,0xbbbc0793,0xbbacd8c2,0xbbee47c4,0xbbe79efa,0xbbdf6c08,0xbbebf8ec,0xbbf614ae,0xbbfaca4a,0xbc02cd15,0xbc05cc65,0xbc05475d, +0xbc00f702,0xbc00a428,0xbc02f112,0xbc028d7b,0xbc0eea5f,0xbb22abf2,0xba7cefdc,0xba8ed250,0xbb1cfecf,0xbb49b27d,0xbb4e0b47,0xbb73575f,0xbb5eaed1,0xbaed6233,0xbb282885,0xbb22f69d,0xbb0bd75c,0xbaed0b55,0xbb0f270a,0xbb7c865e,0xbb7db7e5,0xbb77ce2e,0xbb4d0fd3,0xbb1a0567,0xbb02dbba, +0xbae33976,0xbb26ebf1,0xbb4150a5,0xbb65033e,0xbb4c66be,0xbb25a1c2,0xb9c5a192,0xbad2d190,0xbab387b4,0xb9f1f8ba,0xb9e3001a,0xba3fcec1,0xbb1bc362,0xbaa8a667,0xbac358ec,0xbb4e290f,0xba96d039,0xb989d9f4,0xba7f941c,0xbb5d2401,0xbb9a5719,0xbb9be811,0xbbcad010,0xbbc05005,0xbb2896eb, +0xbb7a7274,0xbb1daed9,0xba4b3117,0x3abd486a,0xb9d1f310,0xbbc76d91,0xbbf29f6f,0xbbf96dc0,0xbbb42bca,0xbb4caaa3,0xbae1e098,0xbaadc41a,0xbb489ff1,0xbb94f242,0xbbbb29fa,0xbba0b67a,0xbb44c619,0x3b431ba6,0x38298d3d,0x3a31ee46,0x3b60688c,0x3b265db6,0x3b07d787,0xba753ffc,0x3b014c7a, +0x3a28bb3a,0xbbaf6423,0xbab290a7,0x3ba71d2b,0x3b767be7,0xbb61791d,0xbbea9d2c,0xbbc9a614,0xbc2662e1,0xbc12a1e0,0xba86210c,0xbb8c1b9e,0xbb0a211f,0xba2e27cb,0x3b15e33f,0xba3237b1,0xbc2c91d0,0xbc429e7b,0xbc3f9e78,0xbbeee705,0xbb3d4992,0xb982a48b,0x39c7f846,0xbb4521a6,0xbbb7cd15, +0xbbee0922,0xbbd608e9,0xbb6b051c,0x3c0222b7,0x3b12929e,0x3b88cf2d,0x3c11ce50,0x3c1f9df7,0x3c046295,0xba474980,0x3b94f3f6,0x3b487688,0xbbbb4871,0x3b7bc0c5,0x3b1a4775,0x3af799a7,0xbbab27cf,0xbbf65b14,0xbbd696cd,0xbc44ef33,0xbc52c474,0xbb6ff500,0xbbd04430,0xba6cbfd4,0x3bbb6d16, +0x3c63a34d,0x3bc9d029,0xbc5a42a2,0xbc9be363,0xbca388de,0xbc549693,0xbb93a9a2,0x3a211d8d,0x3aead02e,0xbb82debc,0xbbfa259d,0xbc19006b,0xbc0b3bbb,0xbb1f11ae,0x3c64252e,0x3c694506,0x3c82fc42,0x3c6db8f7,0x3c813b8a,0x3c6eb061,0x3bc4fa75,0x3c88c88f,0x3c348f5d,0xbc30e81f,0xbb177f79, +0x3d1bb376,0x3c7eb9c7,0x394e13bf,0xbc6ee2dd,0xbcd35423,0xbc2d9a78,0xb9426f71,0xbb0225fe,0x3bccf886,0x39a4d0cc,0xbc8f3a5d,0xbcd2d325,0xbcbbc9cd,0xbc745eaa,0xb688d50c,0x3bd75365,0x3b8684f4,0x3b857fa0,0x3b8fdc8a,0x3c005f9f,0x3bf3eeef,0x3bacf36f,0x3b04ab0d,0x3bd85303,0x3b490417, +0xb9d03563,0x3a1324aa,0x3c1b1f5e,0x3ccf5b66,0x3c0becda,0xbaf5aee0,0xbc283eff,0xbce0244f,0xbc9650eb,0x3c670a62,0x3d19dce2,0xbd6aa958,0xbd08185b,0xbce09786,0xbb0a2e3a,0x3d0a7445,0x3c708858,0x3b254ede,0xba95d9d2,0xbc956755,0xbc4753e8,0x3cad9296,0x3bb13ca4,0xb9b5ebb4,0x3b03c2f4, +0x3b40190d,0x3b3a1b88,0xbb1a6e92,0xb9ed8426,0xb9196fcc,0x3a4c9e48,0x3b69d70e,0x3bcff4db,0x3bac90d9,0x3ac7bc52,0x3ba9008f,0x3c321331,0x3c73881d,0x3c438127,0x3b2b7a29,0x3af1c404,0x3b90b1ce,0x3c6f09f9,0x3cde4f49,0x3ca7917f,0xbc2847f6,0xbd448e98,0x3d2aa723,0x3d41aadf,0x3ccd772b, +0x3b993da5,0xbc3b894f,0x3c8dcc97,0x3cc205e9,0xbaa1a626,0x399b4d11,0xbbea2630,0xbc668b76,0x3b7a1e40,0x3c756f19,0x3c99294c,0x3c8b637d,0x3c372625,0xbaaa4dce,0xbb1ff6ee,0xbb2ca9d4,0xbb56730c,0xbb76b1a3,0xbab49eeb,0x39b2e180,0x3bbf1c25,0x3be2af41,0x3af37d5b,0x3a96173a,0x3adaf2cb, +0x3b10910b,0x3c38fe38,0x3c70ca24,0x3c935715,0xbaa8b5bd,0xbc20dcc7,0x3b8c9d99,0x3cf7e6e5,0xbccdd9a1,0xbcc16fc8,0xbc9b5d8c,0xbc0204b1,0x3b048157,0x39eaf3be,0x39d050df,0xb984391e,0x3cc10c8d,0x3ce9d6ee,0x3c8b0c64,0x3c8a5fad,0x3c3ec27a,0x3c196d12,0x3ba307db,0x3bb71179,0x3b5bd71d, +0x3a48a20b,0xbb2e6d3a,0xbb9e07cc,0xbafdb600,0xbb2ec1f6,0xbbf4e5e3,0xbc07018d,0xbbc301c1,0xbb13e43a,0xbb93de7d,0xbb4a551b,0xba1a9cea,0xbb1a8820,0xbb14be20,0x3ab0f36f,0xb6d3b1f9,0x3a0687f5,0xbad3e117,0xbc8d595f,0x3c44c504,0x3c9aa0b8,0x3c87c524,0x3c4ce62c,0x3c1d4012,0x3bd259b8, +0x3c2a4d3a,0x3c91b0c8,0x3bf20d18,0x39788988,0xbbe2822b,0xbb899ecd,0xbb03ca34,0xba01a87e,0x3adcdeac,0x3b6160ee,0x3ba5736c,0x3bc4f40c,0x3bac35da,0x3ade3508,0x3ad5cb2f,0x3a18e19c,0x3a900319,0xbb5f6c11,0xbbdaa304,0xbbd4fad3,0xbc123eae,0xbbd5015a,0xb9fef3ef,0xb9e1acde,0x39f2f891, +0x3b311d27,0x3b9b03e2,0x3bd1b7c6,0x3bf893ab,0x3c184596,0xbc9dcf1c,0xbc3f0de7,0xbc25463e,0xbbe03fac,0xbbbd594e,0xbad0b0f4,0xba0dfe02,0x3890645d,0x3a418e02,0x3b4c03d0,0x3b8b5ef7,0x3bc8fa52,0x3baef64d,0x3b86b476,0x3aa86b71,0x3a42c3dc,0x3ba266f5,0x3b889531,0x3b934f85,0x3b8f355e, +0x3bb4c1e2,0x3b0acea5,0xbba25c72,0xbc19f6c3,0xbc3146aa,0xbc2a94d9,0xbc2e73f6,0xbc55ffa8,0xbc86510d,0xbca0cee6,0xbcb3d15b,0xbcb414ac,0xbcf48340,0xbd03da4d,0xbcfb8c3d,0xbccf608e,0xbb1ed68b,0x39bcf784,0x39dae0a1,0x3a9b088a,0x3b0fcfc1,0x3ae07369,0x3ad2a805,0x3a9e8d58,0x3aca2b75, +0x3abf0c1e,0x3b02e464,0x3a6c701a,0x38753a38,0xba465c1b,0x3aa4afec,0x3b35b49a,0x3b853404,0x3b84e1dc,0x3b9c626a,0x3ba8f979,0x3a97c717,0xba86f57c,0xbb41a1dd,0xbbde06fd,0xbc47755f,0xbc8b69ff,0xbca024ec,0xbca10c64,0xbcb6384d,0xbca8516c,0xbcabc25e,0xbcaa5119,0xbc7ccad8,0xbc2c1ac0, +0xbbd98fd0,0xbb9e6d84,0xbbf86341,0xbbc7f62b,0xbbcba560,0xbbd03fd1,0xbbd393dc,0xbbd253f5,0xbbcf2443,0xbbceae8b,0xbbb55f1d,0xbba04089,0xbb8ed6e8,0xbb7773a4,0xbb42a9bf,0xbb2623f5,0xbb3b3c18,0xbb574674,0xbb65b6c4,0xbb69b7b7,0xbb79495b,0xbb669bf7,0xbbb5525d,0xbbb581e9,0xbbd71bed, +0xbbeb80f8,0xbbe46f42,0xbbdd582a,0xbbc0d591,0xbbb95d8e,0xbbbda90d,0xbbb64531,0xbbb2594e,0xbbc2d395,0xbbcd438e,0xbbed914b,0xbbf019e5,0xbbddf20e,0xbbc6a2a8,0xbb9ab6c8,0xbbaa65a6,0xbbacbeae,0xbbb23b8a,0xbbb6884e,0xbbbb79dd,0xbbc3d5f2,0xbbbc6c42,0xbbb77e54,0xbbb0b296,0xbba8e75c, +0xbba425f4,0xbb987439,0xbb9e4c7e,0xbb9e7e47,0xbba0001b,0xbba0fe19,0xbba3f0fd,0xbb9b887e,0xbbc67a38,0xbbde3c3e,0xbc012247,0xbbd51b8e,0xbbfdcb3b,0xbc161080,0xbc133ab3,0xbc11715b,0xbc0a183a,0xbc090444,0xbc04c68e,0xbbfd2413,0xbbe23d5c,0xbbbf853d,0xbbf7f6df,0xbbd94063,0xbbe1e8bf, +0xbaf84b17,0xba702d5e,0xbaa6350f,0xbafc28d5,0xbb17192d,0xbb17cb53,0xbb3878ae,0xbb2e9b61,0xbb067d57,0xbaf2f1fa,0xbac3e213,0xba8457bc,0xba17fe27,0xba75d13d,0xbb1daf39,0xbb3d9200,0xbb4c535c,0xbb3c0a90,0xbb1be0fd,0xbb088b40,0xbacfe6b3,0xbb1f6548,0xbb37a65d,0xbb673506,0xbb25b8bb, +0xbb06636a,0xb9cae2dc,0xbaedebfe,0xbac8e876,0x394efc03,0xb9e814ff,0xba4af879,0xbad69a9f,0xba98da2a,0xba8cbd12,0xbb355126,0xba810bfe,0xb9878f36,0xbaa33960,0xbb1570b6,0xbb4f9dfd,0xbb45b571,0xbb908e78,0xbb9dbeb1,0xbb709f43,0xbb4ed796,0xba92c9fa,0x3a892c72,0x3b626b98,0x3b125744, +0xbb338dea,0xbbac089a,0xbbd7a8f5,0xbbb8f550,0xbb92c10c,0xbb58be2b,0xbaff4e23,0xbb5e7a0b,0xbb952ad1,0xbbc90d06,0xbb87ef97,0xbb1fb085,0x3b0f6bf0,0xba1c5b34,0x390b674e,0x3b8ba163,0x3b1c822c,0x3b08a130,0x3a6f73ae,0x3adee32a,0x397bb802,0xbb85e063,0xba1f5440,0x3b58e786,0x39d9015a, +0xbb1bf3f7,0xbb9d3730,0xbb87403c,0xbbfd7b93,0xbbee0604,0xbb8d60bc,0xbb337878,0x3a5d707e,0x3b2d0bf5,0x3bd4ef7c,0x3b856099,0xbbaa74fd,0xbc0899d5,0xbc293ffb,0xbc070cee,0xbbc46b2c,0xbb81377b,0xba9e0f07,0xbb8c8939,0xbbd06c3e,0xbc0beecd,0xbbb024b4,0xbb5559d2,0x3bea3feb,0x39bc69ec, +0x3b339331,0x3c33d611,0x3c0eee83,0x3be8446b,0x3abb467a,0x3b57e12e,0x3b1cc813,0xbba2f117,0x3b6e30d5,0x3b3bde1a,0xb978d7ac,0xbb101e3c,0xbb76ca6b,0xbb399a6a,0xbbea337b,0xbc34d0af,0xbc19bc50,0xbbc2362d,0x3ac22436,0x3c0a91c2,0x3c9482bf,0x3c656ec7,0xbb826b88,0xbc4d25e4,0xbc8d6786, +0xbc72bfd6,0xbc2f5350,0xbbc9ddf4,0xba58e321,0xbb930486,0xbbf63974,0xbc1fd558,0xbc04878c,0xbb798686,0x3c5a9412,0x3c0d484e,0x3c27775d,0x3c91cb26,0x3c94a649,0x3c7e7974,0x3c12672b,0x3c6a3279,0x3bd867b6,0xbc31d88f,0xba614399,0x3cc18d93,0x3b449bab,0xbb4f7c5b,0xbc578426,0xbca31990, +0xbc8e159f,0xbb85a2ad,0x3c25f15d,0x3c1963b3,0x3beb4ded,0x3a1e909b,0xbca5c6da,0xbcb8f095,0xbc683cc1,0xbb81cf19,0x3b0ab867,0x3b4f31bc,0x3b00a97e,0x3a1e1796,0x3add8f1d,0x39b9888a,0xb9a08ae4,0xbb113884,0x3be44b14,0x3b97f56d,0xbba010ef,0x3bb01cb2,0x3c34538a,0x3c1abfd3,0x3b8f645d, +0xbb594456,0xbc71f392,0xbcc5003a,0xbc2b67c3,0x3c993e72,0x3cf64da2,0xbd20d95c,0xbc978f8e,0xbcb4c29d,0x39b9d271,0x3d3eb787,0x3c9e7d06,0x3bb00b47,0x3c2ef73c,0xbc594050,0xbc3a94d3,0x3c2aa0a7,0x3c028cd2,0x3b8c4701,0xbaece084,0xbb661d1f,0xbba217e7,0xbba5c135,0xbb1e3c3f,0xbab9e017, +0xb7d130f2,0xb9863dcf,0x3b01bf00,0x3b81fd96,0x3b19b2a8,0x3bce92f9,0x3c2f55ab,0x3c1d82e1,0x3b946e9c,0xbb5e050f,0xbb37216f,0x3b826621,0x3ca6a394,0x3cfa812d,0x3c4db1e1,0xbd073aca,0xbd207982,0x3ca3a241,0x3d418858,0x3c34118c,0xbc92c4e9,0xbd0dd668,0xbcd63096,0xbb3af142,0x3d080e62, +0x3c4a6322,0x39383130,0xbbaa3a40,0x3b8715d7,0x3c2f0942,0x3c60eff6,0x3c5748f7,0x3c1df2d9,0x3b7fd4d2,0xbac8e090,0xbb206757,0x3a42e638,0x39dfa462,0x3a7c5cb9,0x3a3a82ad,0x3be54315,0x3bbc4059,0x3942d092,0xbadb44e6,0xba270a96,0x3a7fc4e2,0x3c2e460d,0x3c40d629,0x3c200ccf,0xbc2e70dd, +0xbc903a3e,0xbb84ccd8,0x3bf6ebfa,0xbc7b57e2,0xbccdf0fd,0xbc93146b,0xbc1a1695,0xbbb94198,0xbbf6976f,0xbc0019d9,0x3b0daf14,0x3c6c7aae,0x3cbe0f6c,0x3c8c6ee5,0x3cb73d91,0x3ca4a283,0x3c5cd4cd,0x3b8e4b98,0xba10ecb4,0xbb00d461,0xbba4e9fe,0xbbde729b,0xbc0a10e3,0xbbe3fa87,0xbbd3ac39, +0xbc030f2d,0xbc0f84aa,0xbbe1e2b9,0xbb213bf9,0xbbbf7dda,0xbbb501de,0xbb17a71c,0xbb4b0ced,0xb98bd94f,0x3aefc024,0x3b83555f,0x3b3112e4,0xbb1d4ff6,0xbc0161d9,0x3c706035,0x3c90eb1e,0x3cd7bc60,0x3ceaa325,0x3cd454f7,0x3ca72248,0x3ca351e2,0x3cc98780,0x3c7ee752,0x3c0ccf75,0xb9ee71d8, +0xbb8bf647,0xbbbd5053,0xbb82a2ec,0x3989be1d,0x3b2c5c26,0x3b7cc620,0x3b9aff14,0x3b90a1cb,0x3b1c1846,0x3b0ec83a,0xb950fc76,0xbb592974,0xbb9c9983,0xbbdb1320,0xbbde19ad,0xbb87693f,0x39a6ab37,0x3b90d5f0,0x3ae84f8f,0x3ac85832,0x3b29452d,0x3ba85660,0x3c056d67,0x3c24ab2b,0x3c318761, +0xbcb75757,0xbc677dd1,0xbc6d2a29,0xbc411982,0xbc16c056,0xbb86df3e,0xba6bbd3d,0x3b141ab0,0x3b65bc7d,0x3bb70e37,0x3bfaf3d3,0x3bf622d5,0x3bd5703d,0x3b85bf6a,0x3b819777,0x3b9de9d7,0x3bd523b1,0x3bbe08a3,0x3ba7cd67,0x3b9bd0b4,0x3b005e37,0xbb1a5281,0xbc10b917,0xbc1ef962,0xbc1c0acd, +0xbc00bd6a,0xbc0aa1d6,0xbc2c10a3,0xbc3e38e9,0xbc69b649,0xbc797570,0xbc61d973,0xbc9e37d5,0xbcbd2057,0xbcdb9292,0xbcd868af,0xbb9a1192,0xba8fba09,0xba152602,0x3a6f02d9,0x3aff27bb,0x3b3f31e6,0x3b96bc9d,0x3bd5d286,0x3bdebe75,0x3bdc1709,0x3be1b19b,0x3bbe1104,0x3bae0edc,0x3b9f91ba, +0x3bb4535e,0x3bbd4b6c,0x3bcaf1c8,0x3bbae64e,0x3baddbf7,0x3bbd25ce,0x3aac36cb,0xbb388239,0xbbe5f2ed,0xbbe46506,0xbc0de3c2,0xbc146639,0xbc507fd3,0xbc62026e,0xbc8ef946,0xbc8e6cdd,0xbc9d499c,0xbca8cf92,0xbc906b8d,0xbc730815,0xbc5315b6,0xbc086f51,0xbb81f58e,0xbb295a9d,0xbb4622d8, +0xbb55c7ff,0xbb5ed995,0xbb7166a1,0xbb8cfdc7,0xbba0e89b,0xbb97bf6c,0xbb84eda1,0xbb5bad74,0xbb24e75e,0xbaf03495,0xbab75447,0xbaabfe3e,0xba9a0f54,0xba7dee4a,0xba2e8bd9,0xb9f8c40e,0x388913b4,0xbb102cb0,0xbb008c9e,0xbb3c3561,0xbb6f2249,0xbb91587e,0xbb930399,0xbb87f0b3,0xbb809b18, +0xbb8bef28,0xbb849867,0xbb8850dc,0xbb8f6de6,0xbb8840a5,0xbb87021f,0xbb7bf017,0xbb66ea80,0xba4ee00f,0x39dfb298,0xb96d6cc9,0xba10c43e,0xba7fe717,0xbaa89440,0xbac1713f,0xbaedc0bf,0xbabb1d16,0xbaac98a4,0xbaaa88d2,0xbaa69055,0xba9d6365,0xba820e7a,0xba748d14,0xba5a4854,0xba49ce6c, +0xba2db244,0xba239f6f,0xb93ce16d,0xbaa8d20c,0xbaedbc39,0xbb42124a,0xbacc2530,0xbb243a63,0xbb819151,0xbb7e94d9,0xbb800e8d,0xbb6bbab7,0xbb707876,0xbb66b968,0xbb661a25,0xbb28284b,0xbad12980,0xbb2c1b05,0xbac3a141,0xba174c3e,0xba8d036e,0xb9f58d73,0xba551fa5,0xba8342e8,0xbaa846e7, +0xbac8648e,0xbb088ff6,0xbb050585,0xbaed0141,0xba74c667,0xb9e435f4,0xb91b7e16,0x39452ecb,0xb861b3f9,0xba2f71db,0xbad69e3b,0xbb0704d5,0xbb0dffed,0xbb00cab2,0xbaedea50,0xbab5070f,0xbb03e137,0xbb151d35,0xbb50c52b,0xbabc4209,0xba94758d,0xb9d4e912,0xbaa1f734,0xba74f784,0x3a2bba33, +0xb99c6654,0xba1a576b,0xba13bb83,0xba1910d0,0xb9a702c1,0xbabf98fd,0xb9e62297,0x3a89a307,0x38ee63e4,0x38eda414,0xba4a3c58,0xbab8d3cd,0xbb6106fa,0xbb8be66c,0xbb7309f1,0xbaec1b94,0x395fc2e8,0x3ae5eb81,0x3b78a458,0x3b677555,0x3a8a16fc,0xbb2bdfce,0xbb99e368,0xbba330e1,0xbb9f7960, +0xbb8d6e7c,0xbb468cfe,0xbb81b90a,0xbb90cede,0xbbc29da9,0xbb236bc1,0xba807411,0x3a84ce9d,0xb9231251,0x39cb2c2c,0x3b811086,0x3af41b60,0x3aef143c,0x3b26d91f,0x3b005d30,0x3a8463c1,0xba6f8278,0x3a9cca51,0x3b39e99d,0xb7eacf30,0x39920561,0xbadf2dcb,0xbb31762d,0xbbe6e467,0xbbe6ac7f, +0xbbb87062,0xba456332,0x3b4e0a13,0x3b64fb94,0x3be60c8f,0x3bbe3257,0x3ac2b619,0xbb8a4dc2,0xbbf57a8a,0xbbf9481f,0xbbf2f4e3,0xbbd383f7,0xbb6edff5,0xbbb90630,0xbbda6d49,0xbc15f7da,0xbb3107b9,0xba9cc596,0x3b9cdf98,0x3a84cfbb,0x3b396c5c,0x3c30ffd0,0x3bc92c54,0x3bad69b3,0x3b7e010e, +0x3b52bf44,0x3b5a959d,0xbaaba122,0x3b7d7799,0x3bd5913f,0x3b48a666,0x3b8c8004,0x3b216783,0x3a67ed14,0xbbb4a927,0xbc30a467,0xbc330f22,0xbb57884e,0x3b57d160,0x3bf0edbf,0x3c8399ad,0x3c8e8469,0x3c028c19,0xbba322a6,0xbc4f3b1e,0xbc68cd13,0xbc6b5927,0xbc469b4b,0xbbd3fb04,0xbbf7a629, +0xbc11bc3f,0xbc3dac95,0xbbafd114,0xbaf183d6,0x3c364dd5,0x3bc10122,0x3bf67f4c,0x3ca63c2f,0x3c9a9b25,0x3c7b43db,0x3c47853c,0x3c4b4d8f,0x3bc091c6,0xbb93f8d0,0x3b81f61c,0x3ba6c029,0xbc093746,0xbc04dfec,0xbc627b55,0xbca2f3c9,0xbcaed35a,0xbc06b5a3,0x3c4fb9e7,0x3c250860,0x3c31403c, +0x3c5be2d5,0xbc5e21a5,0xbcac14b4,0xbc807cc2,0xbb99aa76,0x3abde91e,0x3b540f6b,0x3b76df7a,0x3ad7ad4c,0xba1feab0,0xbb35eae1,0xbb0877c7,0xba3cc2d4,0x3bbec11a,0x3b9dc1c1,0xbbc321b1,0x3c3dacfc,0x3c6813bd,0x3912fe06,0x3a2ba84d,0xbbd6b4b2,0xbc711936,0xbc7f9a70,0xbaefa868,0x3c956357, +0x3c7069ac,0xbc96f6b8,0xbadf83c2,0xbc289790,0x3bcb4073,0x3d392ccb,0x3cd660eb,0x3c59b77c,0x3c6b6c21,0xbc0aadcc,0xbc1f9d00,0x3aa2da05,0x3c672d10,0x3c548b7f,0xbb9a9c6d,0xbbd5ae0c,0xbc0c5234,0xbba40f19,0xbb8edc74,0xbba01e66,0xbbb86654,0xbbbece5c,0xbb5da114,0x3b52122e,0x3b1bdf44, +0x3bc61751,0x3c063a4c,0x3b8d68c9,0xbb043f80,0xbc08ced2,0xbb1d3815,0x3bdd820d,0x3c9e513f,0x3caafc0b,0xb8ff26a3,0xbd0ed87c,0xbcda921e,0xb9434587,0x3d007104,0xbc1b1fa6,0xbd029eaf,0xbd24ffde,0xbd50b66f,0xbcc47d7b,0x3d2e33d5,0x3c738534,0x3bb6a6d7,0x3be3b49c,0x3b4183ee,0x3b7ff2d6, +0x3bfedb86,0x3c26a9a1,0x3c1a7e8f,0x3c113de7,0x3b279ed0,0x3a7913e6,0x3b91cd99,0x3b73518b,0x3b497a64,0x3b1208e8,0x3baaa687,0x3b2c2e3e,0x39d2a96d,0xbb611542,0xbb0e8955,0x3b026ae9,0x3bd39b62,0x3b5c7499,0xbb541bfe,0xbc16bc77,0xbc45da55,0xbb85fedd,0xbc37e421,0xbbbe7dee,0xbc909ad1, +0xbc24d044,0xbb8a0a57,0xbb7b929f,0xba398062,0xba41b81c,0x3c1a6fcf,0x3be2a90e,0x3c7f3263,0x3caddda7,0x3cb5c066,0x3ca78254,0x3c6c89e9,0x3bacfb01,0xbb69b769,0xbbe30a19,0xbc176bd9,0xbc1eedac,0xbc0d666b,0xbc222a14,0xbc157f81,0xbc027b0e,0xbbda4d22,0xbba44703,0xbb42aa00,0xbb61a971, +0xbb8979f8,0xbb68f2f9,0xbb5e0399,0x3a5c266e,0x3a6604eb,0x3b367e3b,0x3b0e9d13,0x3ae137a0,0x3a2f5dda,0x3bd8ff12,0x3b111ed1,0x3c86d323,0x3cc4451b,0x3cc9dcb9,0x3cbd2608,0x3cb0064a,0x3cb79342,0x3c9a356c,0x3c74fc46,0x3c3679f1,0x3b71247e,0xba72058f,0xbb478df0,0x39512664,0x3b3947c8, +0x3b8fa7a5,0x3b791bc0,0x3b61337e,0x3b6e0a23,0x3ab434ef,0xbb17195f,0xbbe116ef,0xbbf5d3ac,0xbbe348c6,0xbbbc76ee,0x3aa1e661,0x3bb6ee9a,0x3baa9bdc,0x3b2efc37,0x3b01a0fc,0x3b04131c,0x3bd42e97,0x3c165d7c,0x3c054e2b,0x3bc1e4e1,0xbc82908c,0xbc454b11,0xbbe9b45e,0xbb76c2a2,0xbb0fb35b, +0x39bc29ad,0x3af7710a,0x3b60179b,0x3ba19a76,0x3bb770a8,0x3bce093a,0x3b907a4a,0x3b952030,0x3b918400,0x3bb7aa6a,0x3bb7aa61,0x3b9f35ad,0x3b9ba2ce,0x3b3d877c,0x3aa52823,0xbb564ae0,0xbbe16aea,0xbc1c8b5f,0xbbebe229,0xbbd8394d,0xbbfd4bd0,0xbc04ffc8,0xbc098270,0xbbbed4c7,0xbbcbd052, +0xbbbb2fb0,0xbb914388,0xbbcf07b4,0xbc27e115,0xbc8b583c,0xbc8b8b5b,0xbc08ede4,0xbb975553,0xbb901fdf,0xbb6c4fc4,0xbb452acc,0xba9bd7ba,0x3aac71ab,0x3b880d05,0x3bb5dd19,0x3bd2f764,0x3befcfed,0x3be07a8f,0x3bd688e5,0x3bd366ed,0x3bc319cd,0x3bb801c5,0x3bacd305,0x3b7836d1,0x3b02defb, +0x3aa2088c,0xba148516,0xbb4e9ddd,0xbbc925d5,0xbbc495d3,0xbbcc47ad,0xbbbf6653,0xbc041b14,0xbc1ca6a2,0xbc4a2833,0xbc66277a,0xbc87744d,0xbc9b4e3b,0xbc9587e8,0xbc916bc8,0xbc915653,0xbc4a7a27,0xbabbd0cf,0xba630eae,0xba7e89b8,0xba14117d,0xb9823b66,0xb9bf5a7f,0xba7579db,0xbac170ef, +0xbacf02ea,0xba9dd36e,0xba12337d,0x390f20f9,0x3a50eed1,0x3ab353e9,0x3ad615c6,0x3afbc124,0x3b17d53e,0x3b2b49cb,0x3b486a29,0x3b64928d,0x3b02dd3b,0x3a7c6aa3,0x37e22f5d,0xba6cbdd0,0xbb17f007,0xbb622b0d,0xbb7488a1,0xbb789147,0xbb84203c,0xbb885cd2,0xbb93df80,0xbb9b211e,0xbb790546, +0xbb34ce81,0xbb0f87eb,0xbb0663a1,0xba174361,0xba09cd38,0xba2c2573,0xba6d0ee8,0xba972281,0xba9ec8b2,0xba8f5add,0xba8757a5,0xba3ca350,0xba2eb4f2,0xba44e25c,0xba4654f4,0xba3fc5ca,0xba2441d3,0xba072a4d,0xb9d264e9,0xb9aa2f29,0xb90b696c,0xb7b5c41a,0x39a22004,0x389016d2,0x37bc7168, +0xb907bcab,0xba6d1ba1,0xba7c5935,0xbaa1f328,0xbab0d509,0xbad49dd2,0xbae5c1a7,0xbb01d7d4,0xbb052fb8,0xbb1d2b9c,0xbb0fbbbe,0xbb0dfe15,0xba6c06e5,0xba4d9939,0xba9fe2e5,0xb9bd89be,0x38985102,0xb9a88def,0xb8e98215,0xb9b750f6,0xba3e2e10,0xbac4e1d5,0xbac8c17c,0xbaa71c57,0xb923cdfe, +0x39acde17,0x3932a4ba,0x3a1a1659,0x3a18c956,0x3a7f2e80,0xb9bb22eb,0xba713343,0xbabd45ce,0xbab219e7,0xbab2b4b5,0xba96b339,0xbab4647a,0xbab5f96e,0xbb0da0f2,0xb953cd62,0xb8edcdc6,0xb9c49bc7,0xb9dbf00d,0xb9950d2c,0x398f4f31,0xb9c5fb82,0xb9fdc933,0x39a34f88,0xb93371b1,0x390c9c07, +0xb89c45df,0x394f1958,0x3b1a102a,0x3ab7fbd3,0x3b2444c2,0x3ade4171,0x39b57b3b,0xbb2cf655,0xbb6f083b,0xbb3ab99e,0xba08e0f2,0x3a7f8c73,0x3aa3b627,0x3b5d26ad,0x3b899f8d,0x3b96b394,0x39aabb10,0xbb11cece,0xbb822f01,0xbb903880,0xbb9175b7,0xbb6dccff,0xbb808a43,0xbb6adde2,0xbb8d8fc8, +0xb9e281c7,0x3a48a75d,0x391757f9,0x3a19325b,0x3a164797,0x3af44b6e,0x3a2b2341,0x3a77f040,0x3b51e673,0x3adb7c52,0x3ab22579,0x3ad02cf3,0x3b1b0172,0x3b415316,0x38c93e4a,0x3b2a0c8e,0x3a916248,0xba50706d,0xbbcbc6ce,0xbbd8e645,0xbba97f99,0x3a864495,0x3b8d1ef0,0x3b1f04cb,0x3bc483e0, +0x3bcbfe28,0x3c026202,0x3980b809,0xbb72dc33,0xbbd1d8a3,0xbbe257ba,0xbbe6b88e,0xbbacdd0f,0xbbbe898e,0xbbadedd9,0xbbe05178,0x3a68a758,0x3ac1e30e,0x3b1c706e,0x3b1e61c7,0x3b274849,0x3bc6efd2,0x3af9e2e0,0x3b0997d2,0x3b9b3419,0x3b0c2be6,0x3b5b5c85,0x3b1ddda2,0x3b805e46,0x3c13242b, +0x3bb7fd46,0x3c29fd03,0x3c13a78d,0x3bafe42a,0xbb806f26,0xbc17bf51,0xbc17a2d5,0xb9eb9ae9,0x3b7eeda8,0x3b6ab813,0x3c4645b3,0x3c950fb2,0x3c9c8078,0x3b697c78,0xbbd1c821,0xbc4c0aec,0xbc6fb325,0xbc6ea31c,0xbc2c5e3b,0xbc1c9f39,0xbc134b44,0xbc33f01d,0xba6a213d,0x3b134fce,0x3c08094e, +0x3bb3e566,0x3bd94766,0x3c935975,0x3c84d6eb,0x3c5afe85,0x3c68d13c,0x3c1bcc58,0x3bb092e3,0x3b1e0a45,0x3bf7aaf2,0xbbded065,0xbc640e69,0xbc656d64,0xbc8de2df,0xbcb43a50,0xbcb2a1f6,0xbc31e803,0x3c43f8da,0x3c207585,0x3c456db2,0x3ca7047a,0xbbd46fc7,0xbc9557f7,0xbc8d1517,0xbbce35b7, +0x3a9b5fa5,0x3b9c3292,0x3bf356ee,0x3bc2a4bb,0x3a40fab0,0xba3f3c01,0x3aa182f9,0x3b9d8cde,0x3b87297d,0x3b632468,0xbbae692d,0x3c7a305c,0x3c8533d8,0xbb0271a1,0xbb46a821,0xbc375b53,0xbc71a2d7,0xbbe5f449,0x3b9cf9cd,0x3c62095c,0x3b3073d1,0xbb90133c,0x3c151a50,0x3be82c24,0x3c63a27b, +0x3cf81933,0x3ce81fd1,0x3cac8dc6,0x3c492c22,0xbb90f0fa,0xbc01affd,0xbb37d7c1,0x3c8eac78,0x3ca3c275,0xba26a71c,0xbbb5f4e2,0xbc154d2c,0xbbacdf38,0xbb9cdb92,0xbbb81562,0xbc1801c6,0xbbe4e05e,0xbbacdda9,0x3a67b1b7,0x3a7a64a6,0x3b80e757,0x3bba0c0e,0xb9c91cd4,0xbbe233cb,0xbc208ae3, +0x3b04883d,0x3c26740b,0x3c4d0d1b,0x3bce3271,0xbc4ee006,0xbd00aecb,0xbc987a90,0xbc3012aa,0xbc2a6234,0xbd0f6b15,0xbd1d0d01,0xbcea005e,0xbd379a1e,0xbd0203e4,0x3c1d52fa,0x3c87fae8,0x3c94fc0e,0x3c37119c,0x3b6ace07,0xb9023a82,0x3b252424,0x3c041a35,0x3c25c91d,0x3c299cc0,0x3bedfa0d, +0x3b871dd2,0x3b1f7f73,0x3b4b8c78,0x3b26430b,0x3b46cf45,0x3afcbfbe,0xba56de11,0xb9c58bf8,0xbb5bc31b,0xbac37e88,0x3b61c6e4,0x3a214cfb,0xbb9df0d4,0xbc3e1004,0xbb600a7c,0xbb1b5578,0xbb4bf865,0xbc3ce792,0x3b4b2715,0x3af5d956,0x3bdcac5a,0x3bfa667d,0x3bd947a9,0x3c04936c,0x3bd86de2, +0x3bd5389e,0x3a8af283,0x3bd88ec1,0x3c922019,0x3c900d46,0x3c89d5a0,0x3c620801,0x3bad6312,0xbb1ee29f,0xbc04d968,0xbc1e1a01,0xbc25a3af,0xbc101e4f,0xbc23fd08,0xbc217070,0xbc041149,0xbb86e5d2,0xbb00e840,0xbb36879a,0xba19a0bd,0xbaf0b69b,0xbb8805a6,0xbb3cb8e8,0x3a454a92,0x3a64a0d8, +0x39d8e2a3,0x3b0e02e7,0x3c0ec85e,0x3bb129dd,0xbb94f671,0xbc55501a,0xbbd377dc,0x3963f7e5,0x3bc2081d,0x3c863158,0x3caade03,0x3ca92344,0x3cab716a,0x3c9f83d1,0x3ca6ff4b,0x3c59a208,0x3c0835c1,0x3b77eb73,0x3b758107,0x3b820eb2,0x3b4b9610,0x3b5d6610,0x3b19ee82,0x3af07166,0xbac747b1, +0xbbb65c8c,0xbc0e4711,0xbc17eca7,0xbbd76576,0xbb25d97f,0x3b51ee2f,0x3bc6d6de,0x3b87c97a,0x3b951c71,0x3b925075,0x3b7eaa23,0x3bf7ed64,0x3bfbce97,0x3b4ca03f,0xb9a06548,0xbb76232b,0xbace3c9e,0x3bd68fae,0x3c234bcb,0x3c3598f0,0x3bfe761e,0x3baca443,0x3b91e126,0x3b6eeb9d,0x3b35e4ec, +0x3b149b93,0x3a2d3134,0x3abcbfef,0x3b430049,0x3b95e589,0x3b8f3290,0x3b10adb0,0x3b03914a,0xba2b90c2,0xbb7de9f3,0xbbebffb7,0xbc0e408b,0xbbe6cb26,0xbbc9444e,0xbbc8e170,0xbbfb4191,0xbbe136a4,0xbba0c83f,0xb9894bea,0x3aee5a8a,0x3b6dbaf9,0x3b9203a2,0x3bb1cffb,0x3b80e93f,0xb9a70eb6, +0xbadfb8dc,0xbc3d5bcc,0xbc16ca4b,0xbc05b688,0xbbe09782,0xbb9afa24,0xbb301524,0xb9f31342,0x3ab68bdb,0x3b269f74,0x3b604a91,0x3b8192b2,0x3b76618a,0x3b5fdf8b,0x3b50bbf8,0x3b3bc7d0,0x3b50f7c5,0x3b7a0319,0x3ab1188d,0xba9fdb41,0xbb4132be,0xbb33deb1,0xbb822556,0xbbaecf98,0xbbbb490b, +0xbbbc697f,0xbbcd4370,0xbbdfea85,0xbc02c3e9,0xbc18c4b3,0xbc3e79cd,0xbc606470,0xbc82a4b2,0xbc89cdda,0xbc95a66b,0xbc9f67c3,0xbc74c2aa,0xbabd8b4d,0xba937a09,0xb9d21fea,0x3a0d5cd2,0x3a8c48f4,0x3aad51d5,0x3ac55cde,0x3b0401e5,0x3b013235,0x3b0cf968,0x3b2347c5,0x3b2ece80,0x3b3d2bf6, +0x3b4863f1,0x3b36478d,0x3b138752,0x3afcd42f,0x3ad75573,0x3ad3598a,0x3ab678fb,0x3ac12b9b,0xb9265d01,0xba819880,0xbb00e190,0xbb4c12cb,0xbb9751a7,0xbba9bcfd,0xbbb5df0d,0xbbb9c2b9,0xbbc889fc,0xbbd81131,0xbbdf1dd6,0xbbb0f581,0xbb728c87,0xbb3c2935,0xbb2a817d,0xbb65d6a6,0xbb7d9766, +0xbb6571e6,0xbb59dd4e,0xbb43d4c5,0xbb213d6d,0xbafa1f2e,0xbaac3431,0xbac25613,0xbad212bf,0xbae7835e,0xbaeda78c,0xbaf0a049,0xbae95c9f,0xbaf7df1b,0xbaf8a950,0xbb016fc0,0xbaf89c4a,0xbaf3dad3,0xbafe455e,0xbaedad04,0xbaf7224b,0xbad6112a,0xbb501634,0xbb49627d,0xbb3eb6bf,0xbb4b3608, +0xbb64982f,0xbb7f9539,0xbb885c88,0xbb8e6016,0xbba26464,0xbba27845,0xbba89165,0xbb619da5,0xbb6bd02e,0xbb88edd1,0x391e9e0d,0x3999ea78,0xb7d8a9e6,0x3a04a6d6,0x39d10cd0,0x390a86db,0xba3e3b57,0xba5d6878,0xba513c8d,0x3a064cdf,0x3a656298,0x392a76b3,0x3a4f7296,0x3a83d7de,0x3b0b57f3, +0x3a41a6ac,0x390bc55b,0xba3be91a,0xba392255,0xba5c3ecb,0xba5bfbbc,0xba5642d3,0xba221ad2,0xba69bb7d,0x3a3ad434,0x3a1723ab,0xb9913134,0x38cd79cd,0xb8b75a93,0xba49b5e6,0xba5d5714,0xba469d7d,0x3a086d5e,0xb9671fed,0x394d449c,0x3a4e4937,0x39f3d699,0x3b2054d3,0x3ae24396,0x3b70a1fc, +0x3b5af80c,0x3b0a9834,0xba839002,0xbb08c34d,0xbb020e60,0x3a4615ee,0x3acd2d07,0x3980487e,0x3b2e1769,0x3b8ec91f,0x3be5eedf,0x3b4e4f8d,0x3a0929f3,0xbb2046fc,0xbb5aa10b,0xbb826c04,0xbb78e97e,0xbb71d6eb,0xbb230d9c,0xbadd236c,0x3aaece0f,0x3b079e72,0xb87aa0b7,0x3a8cc04d,0x39a96643, +0xba85ab37,0xba98b4bf,0xba1095e1,0x3b2e02ca,0x39f9be91,0x3a385275,0x3b3c6d8f,0x3b17cebe,0x3b0b6b96,0xb89abf00,0x3b685254,0x3b4d8bef,0x3aee4dd4,0xbb568737,0xbb857982,0xbb8eca79,0x3b42af69,0x3ba4360d,0x3a6b3022,0x3b9c68bf,0x3bc24b8a,0x3c451baf,0x3b8f201b,0x39f46bff,0xbb8f3301, +0xbba7f2db,0xbbc9a3ff,0xbbb72e89,0xbba7b2da,0xbb53863f,0xbb139c95,0x3b7b591d,0x3b71734d,0x3a8bae4a,0x3b529e6e,0x3aa14494,0xba930ea3,0xbb4109cd,0xbb070e24,0x3b611dbc,0xb99e7aff,0x3af103b6,0x3ba606a1,0x3b44e68b,0x3c038148,0x3bb5afde,0x3c4e6590,0x3c5164ec,0x3c1e73f2,0x3a31dc8e, +0xbb905173,0xbbf19207,0x3b250c6d,0x3b926ec9,0xba1c3445,0x3c0433cf,0x3c896de0,0x3cd2c910,0x3c440f9f,0x3aa6d8af,0xbc0f4a78,0xbc4b9806,0xbc6d89e2,0xbc53872d,0xbc2db5ee,0xbbec9046,0xbbc4d703,0x3b8719fa,0x3bd0a5f1,0x3bcb8538,0x3bdcd337,0x3bc58f0a,0x3c184485,0x3c23b556,0x3c0e67d3, +0x3c47cb30,0x3b9d00bf,0x3b49b525,0x3bf58236,0x3bfe7459,0xbc516cd5,0xbc689f5d,0xbc8f8416,0xbc9ac3b4,0xbc9f8702,0xbc96ca9e,0xbc2594bc,0x3c481118,0x3c1fa4a5,0x3c59d980,0x3cc29fd1,0x39ba6f27,0xbc6f6c2a,0xbc92b833,0xbc346800,0xbadb1ccc,0x3bd63c89,0x3c3fb3a7,0x3c5a7854,0x3c0da374, +0x3bc25e4d,0x3be7e484,0x3c163361,0x3aed343b,0x3a8174cb,0xbb31f243,0x3c5d1f91,0x3c6ef683,0xba393033,0xbb833b68,0xbc4bba4c,0xbc6229ad,0xbabf10f3,0x3be336dc,0x3c164286,0xbba694f0,0x3bd6ca5f,0x3c65f35c,0x3c90cedf,0x3c666516,0x3c2fddf0,0x3cd2b165,0x3cd225a0,0x3c33256b,0xba24810c, +0xbbf63e33,0xbbe5c0e5,0x3c5feec5,0x3cad42ce,0x3c215753,0xbabb58f7,0xbbedd7ce,0xbbaf070a,0xbb976421,0xbb8294c0,0xbc068b2b,0xbb5bd5a3,0xbb4ffa74,0xbb1f286d,0xbacfab7c,0x3a3a4ea9,0x3b7736f0,0xbb8715b6,0xbc1a14f1,0xbc019742,0x3b8f2a75,0x3c1f7ea1,0x3ba15c17,0xbbd7b1fc,0xbcacf3ba, +0xbce4b27e,0xbc2148d9,0xbc7b8e44,0xbd5cfd76,0xbd453277,0xbd096c5c,0xbca0dccd,0xbcd4b1c1,0xbcd66356,0xbcc5a329,0x3ca7f6d4,0x3cf50f3d,0x3bb7fe59,0x3b357717,0xbb06fb56,0xba89374d,0x3b8593bc,0x3bfaa779,0x3bfeae49,0x3bfec5bf,0x3b9068b0,0xbb0fa2cd,0xb6b479f4,0x3a9a06bc,0x3b7a673e, +0xb8ea9198,0xbb4709c8,0xbb332e8b,0xbac48038,0x3aa417ae,0x3b3b1fde,0xbb401a62,0xbc03eddc,0xbc559c12,0x3b3747df,0x3bce8760,0xbbee1107,0xbb4c2a21,0x3c797b64,0x3cd429c5,0x3cc582f0,0x3c83cb15,0x3c2ca8d1,0x3be5b5e3,0x3b9e4551,0xba11468c,0xbbafae77,0xbb8983a0,0x3be59de6,0x3c3539f5, +0x3c531193,0x3c5e53b9,0x3bd03b8e,0x3a5ecd1d,0xbbc993f6,0xbbfc43f9,0xbc10a9dc,0xbc171d65,0xbc17ddd8,0xbc198b7b,0xbbec8bf9,0xbb2838f0,0xb67ebb85,0xbaaa5c85,0xb83ca35d,0xba939a83,0xbb6aa791,0xba84fdc9,0x3a56917a,0x3ae14293,0xba1e4601,0x3b0cd876,0x3c3b3253,0x3c1f0ee7,0xbc36901e, +0xbca0fb27,0xbcb56a44,0xbc913c74,0xbc0ef183,0x3c0c0227,0x3c8aa047,0x3c82bd0d,0x3ca05b7f,0x3ca60260,0x3cb93bc1,0x3c924cf7,0x3c6c376e,0x3c374690,0x3beb5b86,0x3b99ee23,0x3b00cbf3,0x3adc744b,0xba584bf1,0xbb67930c,0xbbc89939,0xbc116937,0xbc1b2de4,0xbc1bd5c0,0xbbbc55e0,0x3a8492c8, +0x3b136191,0x3b5d6d3e,0x3b40d8cc,0x3bb620e0,0x3bbe7c50,0x3bb0083f,0x3bb0f0b7,0x3b896066,0x3abe40d7,0xbb53c048,0x3c10f17e,0x3c2a75bd,0x3c881936,0x3c93b1ec,0x3c8ecc59,0x3c3df436,0x3bf1ab5e,0x3b9ebd64,0x3b3e94dd,0x3a6ba7f0,0xba72045c,0xbad8fad8,0xbabbd759,0xb962d742,0x3b0272c7, +0x3b07f634,0x3961ef70,0xba20490a,0xbb427be5,0xbbcd21d4,0xbbe80e96,0xbbebeab9,0xbba75b27,0xbbcb9e27,0xbbe21b30,0xbbf7b927,0xbb8fdb69,0xb9c721e2,0x3b921eca,0x3bfd7b24,0x3c25e58a,0x3c306907,0x3c50dc6e,0x3c584c9f,0x3c3d616d,0x3c2af1c2,0xbc423fcd,0xbc327561,0xbc0a94aa,0xbbb95941, +0xbaae36f1,0xb97e1b98,0x399d817d,0x3815c10f,0xba294d03,0xba61fd83,0xbabaffb9,0xba554988,0xb9c81169,0x389777e4,0xb9e9a4e3,0xb9b64bfa,0x396e02d4,0xbb108f13,0xbb91b449,0xbbd36863,0xbbcb8e74,0xbbe07534,0xbbf29d46,0xbbf33a5e,0xbbe929b5,0xbc03b313,0xbbf3121f,0xbc008f79,0xbc06b8a7, +0xbc19a483,0xbc29d81b,0xbc37878e,0xbc504a1d,0xbc740812,0xbc8688b3,0xbc60eae7,0xbb86a872,0xbb851bf2,0xbb2d7c60,0xbadf6fef,0xba988429,0xb9ea37a6,0x3a676dab,0x3b315295,0x3b4231f1,0x3b4cc50c,0x3b4e458d,0x3b3fd5e5,0x3b2a9b2c,0x3b22961f,0x3ac5be5b,0x39e349d0,0xba084bd5,0xbaa5261a, +0xbaea117c,0xbb20c21a,0xbaf9aeb3,0xbb530e11,0xbb80f408,0xbb9cb143,0xbbb5b4c7,0xbbdb7887,0xbbf194df,0xbc0172b8,0xbc04f9c3,0xbc1010c5,0xbc1aee1c,0xbc2125c8,0xbc0b8a53,0xbbe13b83,0xbbc59e22,0xbbb5c7c7,0xbbccca11,0xbbdafe69,0xbbc522ee,0xbbb21481,0xbb9877be,0xbb75a033,0xbb4b64fe, +0xbb1a93fa,0xbb3827dc,0xbb402bb1,0xbb43cb72,0xbb4493fc,0xbb432135,0xbb3cf467,0xbb5267df,0xbb5e48f3,0xbb6f2fcf,0xbb79d0e8,0xbb83273f,0xbb90c509,0xbb8b68af,0xbb90cbfe,0xbb892c27,0xbbb1e06c,0xbbb2adde,0xbbaf0d1c,0xbbb7cb9c,0xbbc50351,0xbbd4571a,0xbbdd7677,0xbbe46267,0xbbfb360e, +0xbbf5a0ec,0xbbf72e15,0xbbcb21d5,0xbbcfb365,0xbbcf4658,0x3a70f12f,0x3a170e5a,0x3a053c92,0x3a9e35cb,0x3aab2a9a,0x3ab4dcd3,0x39f22dd9,0x3983ebf6,0xb8985a5c,0x3ac3da13,0x3aea8358,0x3a2fc99e,0x3ac8119b,0x3aee01ab,0x3b40c761,0x3afc8e40,0x3ab90d1d,0x3a0e54c1,0x39adc60f,0x3883c9ac, +0xb8db36e8,0xb682d404,0x3997b374,0x3a1f95e7,0x3ac7625e,0x3a9c8ca7,0x38dd4de4,0x3a07626f,0x38889f80,0xbaaadde8,0xba911925,0xba64e2d4,0x3a4a5d54,0xb8b84f85,0x39e216e3,0x3adcddd2,0x3a434efb,0x3ad4cebf,0x3ae5262d,0x3b83056c,0x3b911f5e,0x3b8b2059,0x3aafed8c,0x398c0ab8,0xba328e48, +0x3b26831d,0x3b3a16ce,0x397d458b,0x3b38649f,0x3b9c58ac,0x3c0255e7,0x3bb919fa,0x3b65c2af,0x39a16942,0xbaa76b01,0xbb268ab1,0xbb42ae88,0xbb3b1b01,0xba829004,0x3ab59757,0x3b34535d,0x3b39d958,0x398a49af,0x3a970e34,0xb91c6ad9,0xbb38a35e,0xbb4087f5,0xbb0c8ee3,0x3afae7d0,0xba58568f, +0xb8cc8bb2,0x3b859300,0x3ad71828,0x39d5f743,0xb96aadf5,0x3b7e0fa5,0x3b9d098e,0x3ba9d731,0x3a2f61c2,0xba0ec161,0xbb4a74ea,0x3baee0a1,0x3bdcb9f3,0x3a93a2e7,0x3baf7f6c,0x3bd81187,0x3c55518a,0x3c02e0c2,0x3b9ec6e0,0xba0eedcc,0xbb0e0ec4,0xbb7f4aca,0xbb9a78a4,0xbb76b5c1,0xba7ea4cc, +0x3b342145,0x3bad775e,0x3b98db52,0x39b92194,0x3b235ffb,0xba84c261,0xbbda9324,0xbbed63be,0xbbc432e6,0x3af42da3,0xbb3a083e,0xb97019f0,0x3be8e8f8,0x3aad64be,0x3b853c82,0x3b86a9b2,0x3c427652,0x3c681eb7,0x3c680a13,0x3bd1cdbc,0x3aecd726,0xbb8a191d,0x3bcbabb3,0x3bd35048,0xbae75b6b, +0x3bc993fc,0x3c73fc18,0x3cd5aec5,0x3c9964ae,0x3c1e4c0f,0xbadb3878,0xbbef5d85,0xbc3b8535,0xbc5439f2,0xbc29f2c2,0xbb83e481,0x3b15c035,0x3c060efd,0x3c0ba036,0x3b9bc3a2,0x3beacb1a,0x3b903fa3,0xbacc421f,0x3a93dce4,0x3aa3c956,0x3bef4cf1,0xbab0bbe3,0xba182025,0x3c3d9762,0x3ba7a1d7, +0xbc8118eb,0xbc443554,0xbc93dc17,0xbc8c6d8d,0xbc5a96ae,0xbc5981a7,0xbc08099a,0x3c0aca78,0x3c1f9baa,0x3c849514,0x3cd5f95b,0x3c163a2d,0xbbf7ce5a,0xbc82fbca,0xbc78b8b7,0xbbc8035f,0x3bd41d09,0x3c5c4669,0x3c97036c,0x3c93b677,0x3c624e61,0x3c3440a8,0x3c101415,0xbabb30b0,0xbaef68fa, +0x3aed50ef,0x3bfd9c5e,0x3c1171d8,0x392d2bda,0xbb0eeb28,0xbc0a18f7,0xbc0e5c18,0x3af81765,0x3bc91422,0x3b9529d8,0xbc2a1e68,0x3c9195bc,0x3c885686,0x3c84b093,0x3bae7dd3,0xbba47a96,0x3cb45b16,0x3ce94e07,0x3c5220e3,0x3b5cd510,0xbc051799,0xbc75cadf,0x3b46e323,0x3c7df855,0x3ca49d44, +0x3b8a5b75,0xbb5d2b36,0xbb2ff693,0xbb72a7b5,0xbad9711f,0xbb27790f,0x3af088f7,0x3a348f9f,0xbb869666,0xbb3a54f0,0xbb0b4152,0x3af8de42,0xbbc1a4fa,0xbc0b821c,0xbb9c22fd,0x3b434ebc,0x3bb7a61a,0xba8d2769,0xbc631e12,0xbcbf1e74,0xbcb655e8,0x3b555791,0xbcf01f09,0xbd9ca6f9,0xbd214f11, +0xbc82a10a,0xbc4f6526,0xbc892c87,0xbcb5ccf6,0xbd08c893,0x3c894ede,0x3cec98d4,0x3b1be7c0,0x3a8fe064,0xbb880747,0xbb748da4,0xba43c5ef,0x3b5431b2,0x3b8ca7d3,0x3baa13b1,0x3b651e7b,0xbae4b930,0xb8dea928,0x3abf8619,0x3b7629bd,0xba8547fa,0xbb6a3639,0xbb993568,0x39eb9269,0x3b5f6e55, +0x3ae45e65,0xbb8a54ed,0xbbea3b32,0xbbfa7ff6,0x3bc88bec,0x3c06efd5,0xbc4d424a,0xbc0dc58a,0x3cf0da09,0x3d308451,0x3cfdc681,0x3c683f31,0x3ba90d57,0xb80b97e9,0xba41c162,0xbb878dcb,0xbbf1c445,0xbc1bd6b9,0xbbb7e996,0x3b8c73e0,0x3c1c5b8d,0x3c4464b9,0x3bfbf26f,0x3b6d0cd4,0xbaab21bc, +0xbb8f7aae,0xbbd09c60,0xbc01a979,0xbc011997,0xbbe33a23,0xbb85e4f4,0xba883447,0x3a4d88ca,0x3a5a597b,0xba34c397,0xbad80f50,0xbb06866e,0x3a6919d2,0x3aa1bf2f,0x3b17dcbe,0x3ae77ad5,0x3b62df64,0x3c0c7fae,0x3c863dd7,0xbc57a5f4,0xbc8be09b,0xbcbe14d7,0xbca39c08,0xbc3943d5,0x3aa24cde, +0x3c0cdca0,0x3c253777,0x3c7e9be8,0x3c9570d8,0x3ca01a52,0x3c8f58aa,0x3c7d1ec8,0x3c6e423a,0x3c0aec70,0x3b8b0de8,0x3a30fc84,0xbac79b40,0xbba35c89,0xbc0d1e79,0xbc1b42bd,0xbc2a37e7,0xbc2d06f7,0xbc076a79,0xbb9d11be,0x3abf2466,0x3906864a,0x398946d2,0x3ab90e49,0x3b78143b,0x3b946e8d, +0x3bb43d9a,0x3abf1bcf,0x395eb823,0x39a574de,0xbba29e9a,0x3c7abcfc,0x3c76e6f8,0x3c8e6c62,0x3c89d24b,0x3c80d7fe,0x3c47f5ec,0x3c23696b,0x3c061788,0x3baffba9,0x3b226b00,0x3a1a2afa,0xba0832bb,0xbad17378,0xbb065ad2,0xb9a94af1,0xb843d6bf,0xbad55fc5,0xbb127bae,0xbb4dc398,0xbba0871d, +0xbb979cc0,0xbb943208,0xbb8ac681,0xbbc52f3b,0xbbd5aa04,0xbbb9bc44,0xba1bc5d0,0x3b84c5c7,0x3bfcc32f,0x3c28bbdc,0x3c3e4f38,0x3c3a43f6,0x3c525f3d,0x3c67dea6,0x3c6c7307,0x3c75c269,0xbc155cf0,0xbc10c68e,0xbbcbb985,0xbb5caa1d,0x39fde602,0x3a2e67a6,0x38998a7e,0xba592a1a,0xbb058698, +0xbb1696ef,0xbb28fe5e,0xbb06ca07,0xbacb69c3,0xba8eba92,0xbb076782,0xbb341d42,0xbb472d98,0xbb8f5284,0xbbb69bad,0xbbdf9078,0xbbf68e79,0xbc079338,0xbc11628b,0xbc0b4e43,0xbc075374,0xbc0ebe78,0xbbfd23a2,0xbbda6617,0xbbcdf660,0xbbb1b71a,0xbba67b64,0xbb866b6c,0xbbc82e6c,0xbc0e8d4b, +0xbc306e98,0xbc1b1913,0xbc01ec34,0xbc011d8e,0xbbd627a8,0xbbbe8155,0xbbaa48b5,0xbb86cb7c,0xbb199ea3,0xb9d64023,0xb955567b,0xb97e629a,0xb9f3254d,0xba2e66ee,0xba7a384c,0xba711fc1,0xbafb0ab5,0xbb3693f2,0xbb726946,0xbb8ea14a,0xbba1b13a,0xbbb431cf,0xbba8defb,0xbbbd2f9c,0xbbcd8c67, +0xbbdf4f10,0xbbeeb492,0xbbff70cd,0xbc0ad3b7,0xbc16d345,0xbc220016,0xbc2f0d2e,0xbc3ddbdc,0xbc493c99,0xbc3a498b,0xbc271257,0xbc1bdbf6,0xbc115e54,0xbbf4ae61,0xbbfc83dd,0xbbe67018,0xbbd0fc68,0xbbb98573,0xbba32db6,0xbb96d361,0xbb84bef6,0xbb8d28b3,0xbb8a452e,0xbb861773,0xbb83a0f9, +0xbb822b80,0xbb7de631,0xbb8b0af6,0xbb92d5bf,0xbb9c3e07,0xbba64320,0xbbb0c62a,0xbbc10ccf,0xbbbea9df,0xbbc3c3bf,0xbbc2b7cc,0xbbcebfb4,0xbbd27e71,0xbbd60a00,0xbbe2516f,0xbbee9355,0xbbf975bd,0xbc0208f7,0xbc057aea,0xbc1075cd,0xbc07b177,0xbc0488ec,0xbbfb18ff,0xbbf9d312,0xbbd2bc13, +0x3acf1568,0x3a75cfd7,0x3a8cb89b,0x3aecdcc3,0x3b081934,0x3b1f8f72,0x3ac6d8f6,0x3aa24965,0x3a404da7,0x3b0ba000,0x3b1d0937,0x3abe402d,0x3b0fe4b1,0x3b209a1d,0x3b556141,0x3b3679de,0x3b20a930,0x3af402c6,0x3aa7c8fa,0x3a6a6bec,0x3a1bebe0,0x3a4944a9,0x3a8aa0b1,0x3aee3061,0x3b00b44f, +0x3ad0b6ad,0x3a155be7,0x3a4821b5,0x397c6150,0xba841bb6,0xba817caf,0xba3049ea,0x3a981e2e,0x399278bd,0x3a3ff14f,0x3b1f49f5,0x3a88358c,0x3a5f6cd7,0x3ae95839,0x3b806853,0x3ba089e1,0x3bb9fa1c,0x3b531e94,0x3b148f49,0x3a5d7860,0x3b690ef1,0x3b67c4ba,0x3a838465,0x3b3d03bb,0x3b9868ed, +0x3bf3548f,0x3be91fda,0x3bc087a7,0x3b5eb055,0x3a80a87a,0xba4928cd,0xbacc919d,0xbab88e4f,0x39f82bed,0x3b5e4845,0x3b686f76,0x3b496eb1,0x3a0687f4,0x3a29acad,0xba63abeb,0xbb4e043a,0xbb843f20,0xbb557d84,0x3a9d48b6,0xbad54b6f,0xba0fc104,0x3b9730b4,0x3a844413,0xba62ce16,0x368ae4a9, +0x3b8bf3d3,0x3bc9fb0a,0x3c001c00,0x3b81b884,0x3b1b06c0,0xba89845b,0x3bc269cf,0x3bea3a2f,0x3b40edee,0x3bc3efb8,0x3be5b1e6,0x3c4113cd,0x3c26f5cd,0x3c06fdf5,0x3b855580,0x3a3f94a7,0xbad1fb07,0xbb51ec87,0xbb0f0e77,0x3a2ba313,0x3bafccc6,0x3ba7a1f6,0x3b8df70c,0xb9e41717,0x39ab29af, +0xbb6c0c33,0xbc0c4817,0xbc2350f8,0xbc0b4e20,0x3a480be9,0xbb8994d6,0xbae5ef6c,0x3bf7db90,0xb95b6b60,0x38d530f1,0x3b4187d2,0x3c2599db,0x3c64963f,0x3c895d1b,0x3c2ce2b6,0x3be472e8,0x39b18868,0x3bfb05c4,0x3be2137c,0xb939b16f,0x3b85fa62,0x3c39ae2a,0x3cb2260e,0x3cb3f94d,0x3c86eb6b, +0x3bf112f1,0xba68c00b,0xbbdbf6bd,0xbc23b99b,0xbbfe01ff,0xba2b680d,0x3c1121a6,0x3c26f18f,0x3c0def5e,0x3b837f61,0x3ba46501,0x3a754489,0xbc138cca,0xbbf4a68f,0xbbcf4488,0x3b0a04fd,0xbbe271ca,0xbb85ad06,0x3c52d563,0x3acbe929,0xbc7c653f,0xbc11f7d6,0xbc6c75e8,0xbc45bbe0,0xbbfc6f53, +0xbc211ec8,0xbc0f1a71,0xb9f59568,0x3c01f463,0x3c95f9bc,0x3cd3cf95,0x3cb3ffd2,0x3bd40fd7,0xbc340a7a,0xbc6bbdee,0xbc1e3aa9,0x3ae3a383,0x3c18815b,0x3c7ef4ae,0x3c9a559f,0x3c7e7c81,0x3c1b2187,0x3b598b3e,0xbbc4394e,0xbba39d71,0x3bb63a3d,0x3b005877,0x3ad846d1,0xba8391f9,0xba5b8937, +0xbb368932,0xb8c47188,0x3bbc39cb,0x3bba5342,0x39b5269f,0xbc462dc1,0x3cd47ff6,0x3c7ff146,0x3bf2c388,0xbbae9e0f,0xbc8fb380,0x3c68953c,0x3cc85676,0x3c683bb7,0x3bca36eb,0xbc0f415d,0xbcbe6ea9,0xbc0b9f5d,0x3bc26244,0x3caa9da9,0x3c1d000c,0x3b261110,0x3ad578b6,0xbb09c203,0xb978971d, +0x3b80c4e1,0x3bb771de,0x3b840748,0xbb36e3dc,0xbaa6e81e,0xbb466b71,0xba5d14c2,0xbbc1400b,0xbbafcaeb,0xbb20596e,0x3a3d0b80,0x3a0a3d08,0xbbd07ce9,0xbc9bbd8f,0xbcbb8367,0xbc5b13f0,0x3c774d37,0xbd4d32cd,0xbd96d0dc,0xbc948203,0x3baed2af,0xbbf9bd27,0xbbe53c4d,0xbc5a133e,0xbcccd48e, +0x3b13997e,0x3c766788,0x3c09629e,0x3a1422a8,0xbbd1d3f9,0xbbcb849d,0xbbc291c4,0xbb210cf5,0x39a3c389,0x3b20ec86,0x3b6bdebb,0x3b248d48,0x3b2dd801,0x3b2d2fbf,0x3add9b83,0xbb0f0a50,0xbb5c394b,0xbbb278bf,0x3a9fe9c4,0x3b555815,0x3a4cf777,0xbb6927ae,0xbb84f9ba,0x39e9894e,0x3b08219f, +0x3ad9c7e6,0xbc151c4c,0xbced5c72,0x3d1a808d,0x3d238c96,0x3cac2577,0x3bb82115,0x3895177e,0xbbba68f3,0xbbbdca9f,0xbb9ba584,0xbbdd0f24,0xbc2547fe,0xbc353d1a,0xba69652a,0x3bc05dcb,0x3c08c6ef,0x3bf5a8aa,0x3b9f977b,0x3b7a338d,0xba5cbee0,0xbb591062,0xbb972940,0xbb9dbff7,0xbb2d0f0e, +0x39d0b6dd,0x3a6f6214,0x3a82c4ba,0x3acf1f41,0xba8c2dee,0xbb04eb85,0xba72f091,0x3a176e13,0x3a2737f7,0x3b5c61c5,0x3bda81f1,0x3bda227f,0x3bff3b44,0x3cc65875,0xbc465454,0xbc2c0880,0xbc5ad6b1,0xbc407be3,0xbc0a2ca4,0xbb0bb49c,0x3b06b193,0x3b937a74,0x3c28c5c3,0x3c72efd8,0x3c8134a5, +0x3c7f23c3,0x3c60135c,0x3c4f9607,0x3bee1727,0x3b2cf5e1,0xba813bc8,0xbbaabc2e,0xbc0df76c,0xbc3383e5,0xbc37d0ce,0xbc319602,0xbc357a24,0xbbc77679,0xbb59d07d,0xb9c3d8aa,0xbab8f8f9,0xbaef568a,0xbaae513c,0x380da27a,0x3af3fe2c,0x3b922032,0xbac4d623,0xbb1deaa2,0xbb006b89,0xbbdbb255, +0x3c5310bc,0x3c44830e,0x3c2e1d3b,0x3c2b79db,0x3c3b08fb,0x3c43d99e,0x3c572fc1,0x3c662bed,0x3c2fb2bc,0x3bee411f,0x3baffc80,0x3b838e7a,0x3b20c10f,0xb629a5cd,0x39c3db7f,0xb99a92ae,0xbb33c0d5,0xbb23f946,0xbb1bae07,0xbb22f27d,0xbb3621a9,0xbb579273,0xbb913826,0xbbaf007b,0xbb9764a8, +0xbb0d2304,0x3b53b539,0x3be11359,0x3c01e7df,0x3c0d5b7f,0x3c056c3e,0x3bef0735,0x3c07f291,0x3c1bbba5,0x3c2ea1b7,0x3c37400c,0xbb473711,0xbb539baf,0xba9eafcb,0xb960138c,0x3a3e914a,0x39007196,0xba1b77ab,0xba5bfdd5,0xba89fae9,0xb9a1de9f,0x3a0f322b,0xb6b9f3ef,0xb9d22bd6,0xba1f8355, +0xbb1531c3,0xbb7b6caf,0xbbad161f,0xbbb2e5f1,0xbbc07077,0xbbceb110,0xbbeaf2ae,0xbc001d29,0xbc0ad6cd,0xbbf833aa,0xbbeb635e,0xbbe3ead0,0xbbbc9982,0xbb58504b,0xbb091fb2,0x3a37160c,0x3b144032,0x3b9c66ee,0x3b36e8a7,0x3a157aae,0xbaa7063b,0xbac62905,0xbc2780ad,0xbc1ea323,0xbc157e6d, +0xbc0f8e63,0xbc041831,0xbbe72479,0xbbc34b8f,0xbbab84ae,0xbba803a7,0xbbaea61b,0xbbb153af,0xbba8c37d,0xbb9d5a7a,0xbb896ee5,0xbb9a999d,0xbba38397,0xbbb2c1ec,0xbbbf9d5c,0xbbccc926,0xbbd8bd57,0xbbd5a6fb,0xbbd976af,0xbbe23e05,0xbbe8d645,0xbbf2ae4c,0xbbf7a245,0xbc03d14b,0xbc0f78cb, +0xbc1f5e9f,0xbc2b0680,0xbc3872a3,0xbc47485e,0xbc3de0fe,0xbc367f3f,0xbc329dc1,0xbc24daae,0xbbecc330,0xbbe9edde,0xbbdf2747,0xbbd27eda,0xbbcb31a3,0xbbc7c66a,0xbbc5d9e1,0xbbbe4f03,0xbbb771ba,0xbbac194c,0xbba31e35,0xbb9c3672,0xbb9919be,0xbb939df1,0xbb9ec350,0xbba65348,0xbbadf19e, +0xbbb82a70,0xbbc286ed,0xbbd0490a,0xbbcd2d15,0xbbcd88d3,0xbbcc2226,0xbbcd3641,0xbbcdba8e,0xbbcefdf5,0xbbdae281,0xbbe3f788,0xbbe75e35,0xbbf09ab1,0xbbf53e56,0xbc017367,0xbbee61d3,0xbbe837a0,0xbbf3ea10,0xbbf188b8,0xbbc70474,0x3afacbb5,0x3ab50fa2,0x3ac5a6df,0x3b0c259e,0x3b23ad1b, +0x3b4cd9b8,0x3b1241d6,0x3af94a84,0x3aae8ef9,0x3b0f4e80,0x3b1ea86f,0x3b0bc13f,0x3b217056,0x3b2bf767,0x3b44b164,0x3b4c8c45,0x3b43b11e,0x3b2ff2f0,0x3aec2946,0x3ab0cfd2,0x3a76fdf4,0x3aadd116,0x3ace5724,0x3b162e65,0x3b05aa38,0x3adf4b86,0x3a49af96,0x3a52df63,0x39c4fa26,0xb9afecdc, +0xba27ce04,0xb9a87f87,0x3aaf1128,0x3a2ac447,0x3a7d66e8,0x3b2a6395,0x3ab4f7e6,0x3a5e6eed,0x3af59b45,0x3b6ab92f,0x3b9fa980,0x3bd4b26d,0x3b95ef62,0x3b6ce00f,0x3aff8cf9,0x3b5f5d15,0x3b5b9898,0x3b14c2a3,0x3b4483a7,0x3b8e93f5,0x3bc6f18b,0x3bf91af1,0x3bed92c7,0x3bb844a1,0x3b30250f, +0x3a469da4,0xb951a076,0x39b8c45e,0x3aec1f1b,0x3b7b507e,0x3b7071d4,0x3b38d497,0x39239257,0xb912c097,0xbac37b37,0xbb2b50f7,0xbb8c1d05,0xbb770667,0x39004bed,0xbafb2a9a,0xba399347,0x3b742370,0x3a551f1a,0xba052c0c,0x3a43d0c8,0x3b951a6e,0x3be3f7ad,0x3c1ff71c,0x3bd4a09d,0x3b952566, +0x3a779373,0x3b94724e,0x3bbaff30,0x3babf402,0x3bca28c8,0x3be4cddd,0x3c13cba3,0x3c3020c3,0x3c23fdbc,0x3bf1de28,0x3b287ea9,0xb8b7d48d,0xbb038981,0xba0a9c53,0x3aed7eaa,0x3ba1a350,0x3b831039,0x3b545d8f,0xbb08289d,0xbb07e149,0xbbb8d5be,0xbc00370c,0xbc35caa8,0xbc1c4e85,0xba42cfd1, +0xbb8f04f2,0xbb18371f,0x3bbf2f6e,0xb9fdfe1a,0xbabfa44c,0x3b115ab2,0x3bfd1fd4,0x3c506d3d,0x3c9545ea,0x3c5fe8fd,0x3c2b95b0,0x3b849848,0x3bd0da40,0x3bbae160,0x3b73562f,0x3b807080,0x3c168d6d,0x3c8364da,0x3cb69f94,0x3ca847f3,0x3c711b57,0x3b9dbe6e,0xbad78ecb,0xbbab54cf,0xbb2ff5fb, +0x3b3d70d3,0x3c30cfd3,0x3c211a2d,0x3beba5f9,0x3b2267b4,0x3a635b7d,0xbb67ac22,0xbc30d022,0xbc61511a,0xbc48db43,0xbb305dbb,0xbc2bc257,0xbbd0b184,0x3c200042,0xba47848d,0xbc1af9bc,0xbb81e32d,0xbba53499,0xbb6f7ca4,0xbbb900f8,0xbbeae2a2,0xbc108120,0xbc16bba1,0x3b7d790a,0x3c7f0ef9, +0x3ca1d3ed,0x3ce54fbb,0x3c823e33,0xbc14461b,0xbc47229a,0xbc49aaaf,0xbbd37fff,0x39bf87e3,0x3ba3ddc4,0x3c1276f4,0x3bf8dd55,0x3aacf574,0xbb8945ca,0xbc293078,0xbbf1cc16,0x3bf631a6,0xbac78b14,0xbb69add3,0xbb4d1348,0xbad61135,0x3aee33b3,0x3c17df3d,0x3c269af5,0x3be20ce5,0xba7763ff, +0xbc072c32,0x3cd7aebc,0x3c1c8174,0xba68f322,0xbc3f333e,0xbcc21023,0x3b07d12c,0x3c5fe790,0x3c48c3ac,0x3c06a26a,0xbbe9eb24,0xbcd8a523,0xbc887a45,0xbb72274d,0x3c510e83,0x3c620d12,0x3c28f206,0x3bc9ffce,0x3ab2135b,0x3b0299ac,0x3c0d3200,0x3bea71c0,0x3bc3b269,0x399347f2,0x3aee7f26, +0xbaf8e752,0xbb792834,0xbba07675,0xbb143501,0xbaa522a4,0x394df402,0xbb51f81c,0xbc3fd324,0xbcbeca85,0xbcb1974d,0xbb93f032,0x3ca2579f,0xbd766a8a,0xbd74ebab,0xbc172445,0x3c2734fb,0x3b065d5b,0x3b8bc30b,0xbb8e5897,0xbc9003c3,0xbc69b3f2,0x391aa8a1,0x3c9cc5df,0x3b30d216,0xbbeab4d4, +0xbc044a5f,0xbc205286,0xbc0264d3,0xbb9bcf15,0xba244f9e,0x3b249351,0x3b8983f7,0x3b80bf0d,0x3b081b0f,0xbae1e116,0xbb7e62e4,0xbb5e2bbc,0xbba35fc5,0x3a2bf7a7,0x3acb9af7,0x3971763d,0xbaf55a84,0xbad012f7,0x3b6bef19,0xbbbe6583,0xbbbd3015,0x3aa08604,0xbd2bab42,0x3d0b6e99,0x3c8ef7a0, +0x3ba21f66,0x394c3890,0x3bb9ab10,0xbb940028,0xbbd0802d,0xbb404d32,0xbb55c931,0xbbcc0dcb,0xbc15c941,0xbb40e065,0x3b361270,0x3b82c90c,0x3bc5c0aa,0x3bc8d128,0x3bf57ad9,0x3b20f947,0xb9122f39,0xba8be60f,0xba40c36b,0x3ade606a,0x3b8a3bcb,0x3b2dde8e,0x3a562a76,0x38e28c5a,0xba7d5961, +0xbad2c208,0xb953bfa9,0xb8aec959,0x3a0fa495,0x3bcc7fde,0x3c19f6c3,0x3c0e3f2f,0x3c5500d8,0x3cec344b,0xbc102ad0,0xbb44e5ef,0xba7b4eec,0xbb0d1098,0xbb8dca33,0xbb390693,0xba46ca64,0x3b0bb4f7,0x3bc7c26a,0x3c37494f,0x3c5851dd,0x3c5d038b,0x3c3c6eec,0x3c1a4cfa,0x3bbffa55,0x3aab46e0, +0xbb479b05,0xbbf8b968,0xbc240c61,0xbc2c9870,0xbc397c51,0xbc284504,0xbc21b628,0xbb7f2c86,0xbad38ecc,0xbaf8181e,0xbb0aa84a,0xbb3e2a73,0xbb72a6bb,0xbb2d9640,0xb9429003,0x3b41441d,0xbadcf381,0xbb3005c2,0xbba0b2b7,0xbc01d214,0x3bae7f88,0x3b52ba7d,0x399ccb42,0x3b21b651,0x3bd94dad, +0x3c37a78f,0x3c778e12,0x3c956af6,0x3c82762c,0x3c5b282d,0x3c44c1e1,0x3c2d2850,0x3c10ec20,0x3babc8f4,0x3b6f929e,0x3ac1f628,0xbaeeda99,0xbab681cb,0xbaf48956,0xbb12d12f,0xbb570209,0xbb81202e,0xbba03d51,0xbb829723,0xbb07594d,0x3a917c40,0x3ba5434c,0x3bdb8cca,0x3bb00a24,0x3b9dca98, +0x3b6490d7,0x3b298f19,0x3b51f109,0x3b74f965,0x3b9db02d,0x3b95990a,0x3ba1728a,0x3ba920a2,0x3bd3ce12,0x3bb670a0,0x3b8255c2,0x3b295789,0x3b01be11,0x3b1379d6,0x3b2e33a4,0x3b6dea07,0x3b97a44a,0x3b2038ad,0x3a08febf,0xba88dac6,0xbb239ed4,0xbb81fd95,0xbbb5de64,0xbbab40bf,0xbba93b9e, +0xbba8a8e8,0xbbbc2220,0xbbca1634,0xbbdddeaf,0xbbab62ae,0xbb9538c2,0xbb6eacd2,0xbafcd35a,0x3ad35c23,0x3b7d5720,0x3be1698d,0x3c0f7086,0x3c3c7e7c,0x3c22ec82,0x3c0f0c0b,0x3bf6ffa3,0x3bd9a8d5,0xbc093953,0xbbf6a16e,0xbc00a88d,0xbbfeede7,0xbbeac35d,0xbbda7d24,0xbbd88fb7,0xbbe8a159, +0xbbe86cc3,0xbbf002eb,0xbbe9e8f7,0xbbd85201,0xbbbdd07b,0xbba3c859,0xbba9eb37,0xbbabf4b5,0xbbb299d9,0xbbbc880a,0xbbc822d9,0xbbd3f75f,0xbbdbf130,0xbbd78080,0xbbdf9382,0xbbe55bff,0xbbf081ba,0xbbfa916f,0xbbf13cee,0xbbf4d475,0xbc00ea04,0xbbff51b6,0xbbfc6ea1,0xbc019489,0xbbf8ed12, +0xbbfdc4b5,0xbc010f5f,0xbbe8e6a9,0xbbc16ab1,0xbbb248cd,0xbbb53ba5,0xbbb45011,0xbbbc3ab3,0xbbc46d1f,0xbbc6b725,0xbbc67c7a,0xbbbad59e,0xbbb0fd84,0xbbaba8b7,0xbba538d5,0xbba34a62,0xbb9d7c7f,0xbba5ef4e,0xbbab260e,0xbbb0019b,0xbbb70752,0xbbbde32a,0xbbc50be7,0xbbc8a1cd,0xbbcaa874, +0xbbcbf2f2,0xbbca7f1d,0xbbcd90e8,0xbbd1c393,0xbbd0ee97,0xbbd0bcde,0xbbc90a05,0xbbc806f2,0xbbc4ea2b,0xbbbfdb35,0xbbb185ca,0xbbac3237,0xbbcc5a12,0xbbc75e25,0xbbc29e48,0x3ad515b8,0x3abcdf41,0x3ac6dc74,0x3af926c6,0x3b12a4c7,0x3b4696de,0x3b165f7a,0x3afdd67d,0x3a989bf0,0x3aca19c3, +0x3ae84f78,0x3b163309,0x3b0c9dec,0x3b105fb3,0x3b0f36bf,0x3b33403a,0x3b331ec1,0x3b26ffee,0x3adc062f,0x3aa5ddc4,0x3a6382f5,0x3aabea6d,0x3ac3c865,0x3afcacdf,0x3ace825f,0x3aafc1a5,0x39df65c9,0x3a0922b7,0x393aeaa9,0xb95a732a,0xba0a01ab,0xb96f83e5,0x3a4a3211,0x3a332e67,0x3a688e1a, +0x3afdf9dc,0x3ab324ba,0x3a6af8f3,0x3ad01bae,0x3b26db51,0x3b812034,0x3bc8faa8,0x3ba3a3fb,0x3b801d80,0x3addb95c,0x3b102b38,0x3b1c9b43,0x3b5ad1d4,0x3b3d7144,0x3b7387c7,0x3b8cd06e,0x3be27a21,0x3beb5afd,0x3bc7a9da,0x3b665bf3,0x3af3a0f8,0x3a72e452,0x3ad3515c,0x3b19749e,0x3b393a23, +0x3b45c89e,0x3b059583,0xba863806,0xba80ee14,0xbaefbef9,0xbb1e1c1a,0xbb7e1f31,0xbb7960a9,0xbaece400,0xbaf8a93a,0xba5195e8,0x3aa94c62,0x39dd8617,0x39e8dd8a,0x3ae8952f,0x3b8181db,0x3bd1d849,0x3c228dbd,0x3bfd3197,0x3bba0c1f,0x3a932f1e,0x3afb5161,0x3b4b9da2,0x3be2910c,0x3bbd3982, +0x3bd02e86,0x3bc2d6d1,0x3c1dfe65,0x3c1f3c3e,0x3c02d414,0x3b576c3e,0x3a6ad76d,0xba5f8f1a,0x3a05bf60,0x3b072888,0x3b1c9003,0x3b1f1cdd,0x3b006265,0xbb91cb9d,0xbb70d665,0xbbe4d3ce,0xbbfa1a9a,0xbc3505c3,0xbc175434,0xbb6e9830,0xbb65e0af,0xbaf3e190,0x3b1b413c,0xb8e4d8ae,0xbaf43366, +0x3ab6febd,0x3b8088e1,0x3c1caef1,0x3c8c8d0b,0x3c730ed1,0x3c3aedb4,0x3b847e73,0x3b53a7ae,0x3b747a64,0x3c03ee57,0x3ba97ba9,0x3c058f1c,0x3c34b595,0x3ca3d996,0x3cac4757,0x3c90e9bf,0x3c106e3b,0x3b5ea544,0x39bc3d91,0x3b2648d2,0x3bab779e,0x3c07862a,0x3bff26e7,0x3ba84f75,0xba9685f1, +0xbb6c7477,0xbbe7f69d,0xbc1bf059,0xbc8bb290,0xbc81dd49,0xbc041858,0xbc389e12,0xbbda62a1,0x3b3794d7,0xbb1f512c,0x3aaa81ef,0x3b603406,0x3bfbe0bb,0x3bc3175c,0xbb9bf2fe,0xbb5d66ab,0xbbc2a2a7,0xbc457de1,0xb9930d15,0x3c0ba184,0x3c26a272,0x3cbea2e6,0x3c846ae4,0xbc0c755a,0xbc39a520, +0xbc7550e2,0xbc7c6833,0xbc1c6ca3,0xbbf9cc1c,0xbbd2cb4c,0xbba7b08a,0xbc078f59,0xbc2f9952,0xbc42f038,0xbbf70076,0x3bfc8460,0xbb2223f7,0xbb903ec4,0xbb36d3b6,0xbaa1bd8f,0x3bbd577f,0x3c865fa9,0x3c6cab6b,0x3c1f9043,0x3acc7dd9,0x3a6149cc,0x3c94dc41,0x3b033514,0xbbd5a6d8,0xbc60f684, +0xbcb9137f,0xbc21628c,0x3abfd3ae,0x3c114b82,0x3c2665c1,0xbaf63248,0xbcb78b91,0xbca9459e,0xbc42e776,0x3ad6e703,0x3c663ed1,0x3c858167,0x3c25d85b,0x3bdb2add,0x3bc8cb3e,0x3c3f36cd,0x3beccd5b,0x3bbefc65,0x3b47ab16,0x3b845eca,0xb9bfb034,0xbbb7294d,0xbb74b34c,0xb9bd7218,0xb9d5d179, +0x3a0f97af,0xbb9b008a,0xbc751e78,0xbcda4b4d,0xbca47ba9,0x3b3389fe,0x3c895687,0xbd4c968f,0xbd1dbca2,0xbc3fb72a,0x3b34b000,0x3c85b029,0x3c45d675,0x381fffd1,0xbc589686,0xbcc75509,0xbc3533bb,0x3cb96cb9,0x3bc721eb,0xbb85d5fd,0xbc1134c8,0xbc34ec94,0xbc36f385,0xbc151d4c,0xbb7ee68f, +0xba9d01bc,0xb9515bac,0x3ab4a377,0xba33bf25,0xbb971224,0xbbba2798,0xbb8253d9,0xbb57c43c,0x3935bd1f,0x3a0b0254,0xb9243195,0xb9ea2e6c,0xba8228de,0x39c640e6,0xbc0f4d79,0xbbf3d483,0x3b4b3571,0xbd1c2243,0x3ca49a92,0xbb684e03,0xba91e5fb,0x3b562e3a,0x3c656891,0x3bc8ce36,0x3ae718dd, +0xbb154cb2,0xba8d1b19,0xbb4ff025,0xbb8d5a04,0xbb65a423,0xb8dd7747,0xb9954d61,0x3b9674f6,0x3bf84daa,0x3c0e85e4,0x3bb3b538,0x3b69486f,0x3b0665b4,0x3b3ef239,0x3b937fd7,0x3bc66b8d,0x3b650b05,0x39d6ac63,0xbae3a2e0,0xba8c0689,0xba12bce3,0x3a3739c1,0x39b5e4e5,0x3ab6060f,0x3be1b2fe, +0x3bc5f318,0x3bc6bf83,0x3c8a943d,0x3cca85e3,0xbb67f300,0x3b4397a9,0x3be2c7e0,0x3b5ba994,0xbb5dc3b2,0xbb94901f,0xbb66bb48,0xbab6b258,0x3ad02823,0x3bc83a1a,0x3c1dae59,0x3c27a5b6,0x3c17d648,0x3bea9d3f,0x3b9527d8,0x39ba3e58,0xbb8e4c40,0xbbf4cc57,0xbc124cae,0xbc14c27d,0xbc228e0f, +0xbc06abed,0xbbc9a15b,0xbae1e523,0xb8690853,0xbade2b3b,0xbb02b415,0xbb380bba,0xbb5338d9,0xbb23620e,0xba81dd20,0x39ca1a09,0xb98cf098,0xbac93076,0xbbb39972,0xbbda1bb5,0xbb5615fe,0xbbc86daf,0xbc105dd3,0xbba5b889,0x3a7fd96d,0x3bfdca9d,0x3c480287,0x3c7e18f0,0x3c85723a,0x3c87ec32, +0x3c8bed6c,0x3c803d4c,0x3c6009eb,0x3c1f12e9,0x3bf97e92,0x3b947861,0x39e1c36d,0xb98bba16,0xbb142740,0xbb821ace,0xbba35777,0xbba3e54b,0xbb930497,0xbb00fe96,0x39ba608d,0x3b4f09d0,0x3b8f481e,0x3b82353c,0x3acdcb0f,0x3a9d2773,0x3a0bde24,0xb9396b96,0x390c6d71,0xb8ec6979,0x38b7eb8f, +0xbae61dda,0x3c2f5a9c,0x3c371dd2,0x3c3fed4b,0x3c2b85cd,0x3c0bb1cb,0x3bdcb4e0,0x3bc9fb40,0x3bcfa322,0x3bcad2d7,0x3bc7e8d6,0x3bc8313a,0x3b4c0320,0x39fd169f,0xbb0a1723,0xbb3f66aa,0xbb7d8134,0xbba1ff64,0xbb938060,0xbb87c78a,0xbb805f2c,0xbb858681,0xbb8c0337,0xbb9d18cd,0xbb17af16, +0xba51e749,0x3aa6cfbd,0x3b3a3ade,0x3bc76be9,0x3c07e8ec,0x3c215516,0x3c30ef32,0x3c4a5f98,0x3c424eab,0x3c438270,0x3c4046a0,0x3c366c3a,0xbb8ad54a,0xbb4fe8c4,0xbb70ae62,0xbb75dcab,0xbb5d7e69,0xbb5f050b,0xbb7fd7e7,0xbb99ca73,0xbba5d940,0xbbb0dae1,0xbbaecdc1,0xbba98ce1,0xbb9aaccd, +0xbb8faf9e,0xbb9051c0,0xbb93507e,0xbb9756ad,0xbba1a627,0xbbaed83a,0xbbbc224a,0xbbca71a1,0xbbc5a6bb,0xbbcf1ec8,0xbbdac998,0xbbed1c35,0xbbfd9763,0xbbdf087b,0xbbcd862d,0xbbbf469b,0xbb9f3e0a,0xbb7b75f6,0xbb44ca3f,0xbb417d3b,0xbb521041,0xbb5ab6ec,0xbb369dcd,0xbb74b6d2,0xbb437146, +0xbb5d3e96,0xbb69bab0,0xbb81664d,0xbb8914b1,0xbb8af566,0xbb8c75bb,0xbb8b7a01,0xbb8d442d,0xbb92d3bb,0xbb93c204,0xbb977179,0xbb993f0b,0xbb9c4e6a,0xbb9e68d6,0xbba04399,0xbba2c5b1,0xbba4e84a,0xbba576de,0xbbacc9b0,0xbbb2b0c2,0xbbbad38e,0xbbb26c83,0xbbb9aed4,0xbbcb9dcb,0xbbbac8c6, +0xbbaed60d,0xbb9dea60,0xbb91a802,0xbb863b98,0xbb637d73,0xbb5b6e4f,0xbb4cb487,0xbb8a4e6c,0xbb8195d8,0xbbac783f,0x3a9fdf44,0x3aa5535e,0x3abbe236,0x3ac62647,0x3ae7e0b5,0x3b267357,0x3b0a191c,0x3ae67958,0x3a385118,0x3a70ed8f,0x3a995333,0x3b1661d8,0x3ae8998c,0x3ae73eda,0x3ac5e81b, +0x3b126802,0x3b154d8f,0x3b06e8e1,0x3abb6e2f,0x3a91ea5f,0x3a5c51f3,0x3a8bdeba,0x3a9231ef,0x3a9adfe9,0x3a7ff429,0x3a52609a,0xb931646a,0x38a5d990,0xb981482d,0xba43d7d9,0xba225f32,0xb9a79ae6,0xb955d7f4,0x3a1a9ee2,0x3a5258bc,0x3a7dbb1c,0x3a938ea3,0x3a1c2228,0x3aa678d8,0x3abfa9e0, +0x3b368419,0x3ba4be66,0x3b9dd596,0x3b6f8591,0x3a457476,0x3a8abcbf,0x3ad7271c,0x3b8a036b,0x3b32a9c1,0x3b443600,0x3b3f2690,0x3bbf0c9b,0x3bd331ab,0x3bb5f96a,0x3b7f8328,0x3b304c0c,0x3afda28e,0x3b09fa6b,0x3b0a9e50,0x3ac66db4,0x3af3b726,0x3a739c8f,0xbb0c86ff,0xba9a6962,0xbabe9386, +0xbb28c52b,0xbb2d3239,0xbb41d0d2,0xbb6a1509,0xbac70219,0xba3672b1,0xba8f128f,0xb91582df,0x3a771673,0x3b36eebf,0x3b461b5c,0x3ba850d4,0x3c0b1282,0x3c021e43,0x3bc6774f,0x3958304d,0x390f6032,0x3aaa941e,0x3c043339,0x3bab8ebe,0x3bb4c08d,0x3b840a4a,0x3c06d922,0x3c0e1796,0x3be51527, +0x3b6e8bd5,0x3aef84e7,0x3a1d7529,0x3a7821fb,0x3abc34b4,0xb9408ce2,0x3a1807f1,0x3a15b07d,0xbbd1cd35,0xbb91d38c,0xbbf0ce29,0xbc179c0b,0xbc24a788,0xbc028a16,0xbbe1756e,0xbb0decbc,0xba578164,0xba693083,0x3910568f,0xbb21654a,0x3a2a5b57,0x39ef5226,0x3bbe1d49,0x3c5fdba3,0x3c696b70, +0x3c2d11cb,0x3ad42783,0x3a1df6b4,0x3b399332,0x3c4079e0,0x3bcd45b8,0x3bdb27d4,0x3bf58cd1,0x3c899617,0x3c9f72bb,0x3c8c1239,0x3c37dbe1,0x3bf1dd18,0x3ba5f1a1,0x3bb8b8c8,0x3bbacad9,0x3b70c948,0x3b94478e,0x3b340d01,0xbbb66bcc,0xbbbfdeef,0xbc022b97,0xbc0bc037,0xbc83749a,0xbc7d0306, +0xbc562379,0xbc1af283,0xbbaf2c2a,0xbb942eb4,0xbb7e4535,0x3c33a3f9,0x3c38fa13,0x3c90e3b5,0x3c5a5220,0xbb035244,0x3a4f39fb,0xbab16887,0xbbfcc9eb,0xbb182b8e,0x3aa58c76,0x3ae47c3b,0x3c688d9c,0x3c49735a,0xbba8d9cf,0xbc269c07,0xbc83c034,0xbcadfe5c,0xbc89a9ab,0xbc8491ff,0xbc88d556, +0xbc72e0d3,0xbc6dea86,0xbc6c294c,0xbc1d9429,0xbb9b6219,0x3bc82da1,0xbaa3e0e9,0xbad35af1,0x39e5169e,0x3ad36f34,0x3c12d4be,0x3c934d93,0x3c873046,0x3c4cbf23,0x3bce7c1c,0x3c19de95,0x3bdc7cad,0xbb78c6d2,0xbc0ebd53,0xbc513389,0xbc9345f1,0xbc89b39f,0xbbeca546,0x3bba762d,0x3c368dd0, +0x3b954beb,0xbc69420b,0xbca9dcee,0xbc89ff7e,0xbbc72327,0x3c1af6c9,0x3c876b63,0x3c520b36,0x3c4682f6,0x3c2cd35f,0x3c47286e,0x3bce11f9,0x3b8b839a,0x3b81d6c1,0x3b89fdfe,0x39a220dc,0xbbb1cfe1,0xbb31177a,0x39b49009,0xba0e62ea,0xb9c59afb,0xbbbb7f25,0xbc67f4b0,0xbcc9fb9e,0xbc854271, +0x3bf3f81f,0x3c1c4dd4,0xbced7f76,0xbc943380,0xbc8b1e99,0xbbad47f1,0x3cd70218,0x3c811332,0x3bb02858,0xbb53b059,0xbcbf24de,0xbc86a88b,0x3c861d6d,0x3c20258d,0x3b27811c,0xbc091cda,0xbc1c2246,0xbc33b89a,0xbc325d7f,0xbbd0702d,0xbba0d4b2,0xbbbc4e69,0xbb2680c5,0xbb5b7af3,0xbbbe6039, +0xbbcedd4d,0xbb76b093,0xba95959f,0x3a46b978,0x396c9ac6,0xb94df612,0x3a320362,0xb9777148,0xbb8f6243,0xbb7ee563,0xbb676d52,0xbbdbb5f6,0xbcceb151,0x3b4a1fd6,0xbb4ea29f,0x3c01b849,0x3c42f85f,0x3c715ca1,0x3c8d900b,0x3c59eb95,0x3b02c57a,0x39f89518,0xbb1ff8b9,0xba999364,0xbb7ed667, +0xbb00dd0e,0xbb0bd6af,0x3b736e4b,0x3beb4fc2,0x3bf2e357,0x3beccc97,0x3bd9e5d1,0x3b9dcd4d,0x3bab1520,0x3bb87cc6,0x3bd07403,0x3b57dfaa,0x390bc8ca,0xbb051cc2,0xba5ef4ee,0x39660b16,0x39a6543a,0xb87e0447,0x3a9fc707,0x3b622c55,0x38cf54c5,0x3a27dd00,0x3c2eb06c,0x3c0c571f,0x3b01d051, +0x3bba6a51,0x3c10dafe,0x3bbf7362,0xbb261a8a,0xbbc5fd00,0xbbe8101f,0xbbc24ee8,0xbb6c220e,0xb94c0704,0x3b892f56,0x3ba7606d,0x3bb92539,0x3bae92ba,0x3b4bfbb4,0x36443641,0xbb6a28e3,0xbbac60ff,0xbbcc2623,0xbbe31af1,0xbbde8323,0xbb929116,0xbabf0139,0x398c34d0,0x3a6ee102,0xba53c19d, +0xbabc0248,0xbab610e7,0xba2de322,0xba462888,0xba3f3fb0,0xbae6630a,0x39ce44cb,0x3886d6fd,0xbae22274,0xbaf99470,0xbc0d8d59,0xbc3b4152,0xbc3f4449,0xbc0fd60e,0xbb8e8362,0x39c96691,0x3b75a72b,0x3be5ce07,0x3c3a60d8,0x3c712516,0x3c8c696a,0x3c8682ad,0x3c711d84,0x3c3941cf,0x3c15422e, +0x3bbfd0d5,0x3ae1d982,0xba3b7ede,0xbb5f8fc7,0xbbb46c57,0xbbc7f691,0xbba8435d,0xbb4bd30f,0x380f50c7,0x3afc5a19,0x3b61cec0,0x3b05c1f6,0x39d4e191,0xbaa03799,0xba8b51c8,0xba482a1b,0xbaa3ec48,0xbab83d40,0xbb2410d1,0xbb67bf54,0xbbc2affa,0x3c2adb2c,0x3c297559,0x3c22b788,0x3c1c80e1, +0x3c112b02,0x3c06eed7,0x3c081733,0x3c0d3f0b,0x3bf70eaf,0x3bcdd493,0x3badf6bb,0x3b1ee58d,0xb81fe5b4,0xbb331c76,0xbb434042,0xbb6436c3,0xbb8310b5,0xbb5cfea7,0xbb36dc35,0xbb2140eb,0xbb1adfa1,0xbb212758,0xbb3dcbf1,0xb7a3ac91,0x3b12adbf,0x3bb1f9c9,0x3bd137e1,0x3c093635,0x3c1e3d4b, +0x3c15ffde,0x3c0bceba,0x3c06ab82,0x3c0e3242,0x3c1d6c28,0x3c23e64f,0x3c1febee,0x3abc17b4,0x3b41f905,0x3b1f98c5,0x3b025444,0x3ad3f1a7,0x3a7a4637,0x38a2fd4c,0xba27a01a,0xbacb0e92,0xbb0d6c37,0xbb28a873,0xbb4c6717,0xbb63ec6e,0xbb8368cd,0xbb813bdc,0xbb84ea02,0xbb88ea93,0xbb9458ed, +0xbba1f11a,0xbbaec248,0xbbb2d242,0xbba3a672,0xbba08356,0xbba27577,0xbbafd0c5,0xbbb3a9b4,0xbb953f8c,0xbb7865c8,0xbb432c87,0xbad197a1,0xb8d56847,0x3a6a950b,0x3a9c59c0,0x3a909cfb,0x3ab40342,0x3b0a5e24,0xbaacd5f6,0xba0df8a2,0xba9d7d5d,0xbac37078,0xbaee97d4,0xbb037537,0xbb0c73eb, +0xbb172919,0xbb2cd9da,0xbb469bac,0xbb652f09,0xbb780ab0,0xbb85c9c9,0xbb9170cb,0xbb8f5bdf,0xbb8fee37,0xbb8f630d,0xbb8e785c,0xbb8ce0ee,0xbb8b2979,0xbb8bbb25,0xbb8d7e19,0xbb953256,0xbb82d2fb,0xbb856540,0xbb9c790d,0xbb888a91,0xbb712b07,0xbb4f9973,0xbb338089,0xbb1b575b,0xbad50427, +0xbab317d7,0xba8297b6,0xbaf61504,0xbac42c6f,0xbb90d6b2,0x3a396d16,0x3a57dc00,0x3a977c51,0x3a839ad4,0x3a990e71,0x3ae0f30c,0x3ad54000,0x3aabd1af,0x38e9964b,0x39a0aedd,0x3a171174,0x3b074b56,0x3aa0f24f,0x3a9bb79b,0x3a6ebf79,0x3ad42d1d,0x3add9bbc,0x3ac5858b,0x3a8c470c,0x3a5b3ffe, +0x3a33a1c0,0x3a24125c,0x3a18f2a3,0x3a1bdd74,0x398fdaa5,0x38f8e652,0xba348121,0xb9b30a30,0xba2d1876,0xbabcf41b,0xba452bae,0xb9ffea5f,0xba9460ba,0x39ab1172,0x3a1a7447,0x396719cb,0x3a311668,0xb8554ac1,0x3a6ed6c3,0x3a1362d6,0x3ad1b610,0x3b5ab7e2,0x3b822e3d,0x3b42055a,0xb939d1c5, +0x3889fe05,0x3a6dd5ba,0x3b9209bc,0x3af7b7d0,0x3ad45e5c,0x3acc9d12,0x3b8bf889,0x3ba8f8f1,0x3b98c1cc,0x3b761c8c,0x3b3e6b6e,0x3b1a8ced,0x3aee4f6e,0x3aa75cb5,0x3a170b3e,0x399d5a6c,0xb9cd2e7e,0xbb28a5d5,0xba81be34,0xba555855,0xbb2ef033,0xbaa57168,0xbadc859b,0xbb8acff0,0xba814802, +0xba0ed250,0xbb1aeaec,0xba54fbf9,0x3a30fa13,0x3b53cd76,0x3b0a95b9,0x3b741cf4,0x3bc30849,0x3be57448,0x3bb2607d,0xba68f31c,0xba8d4337,0xb793af68,0x3c09085e,0x3b7c682e,0x3b7db8f4,0x3b26d992,0x3bd72ad9,0x3becbb5c,0x3bc05efe,0x3b749334,0x3b1924c7,0x3ae2d395,0x3a3d2087,0x394ebc94, +0xbaacd3f8,0xbabe9910,0xbaa216af,0xbbedc0da,0xbb9b7fb1,0xbbe293eb,0xbc3c21ab,0xbc0930d0,0xbbd6b793,0xbc193eb7,0xba936d62,0x38638ae4,0xbb2fd6b4,0xb9204c93,0xbb5af2d4,0x394493ec,0xbac578c5,0x3b1fe79e,0x3c0c2be4,0x3c42ae9f,0x3c11ac56,0xba124b6d,0xbac237bf,0x3b046c5d,0x3c5d10b7, +0x3ba7af8b,0x3b379c3a,0x3b67926b,0x3c4a46d2,0x3c85776d,0x3c7708a7,0x3c43b462,0x3c17c14f,0x3bfe29a9,0x3bbfa95a,0x3b8a474a,0xb8fa8369,0x39861874,0xb9d70b0b,0xbbf923aa,0xbba4aea3,0xbbb60e07,0xbbd42726,0xbc377777,0xbc33d0e4,0xbc7001a2,0xbbd62012,0xbb6e4ceb,0xbc13727a,0xbba63ffb, +0x3c7c6de0,0x3c85de8e,0x3cb37f50,0x3c8e84ef,0x3b85ae34,0x3b512b72,0x3a15e3ed,0xbac17667,0xbb3c34c1,0xbb70bd02,0xbb81afef,0x3bc9c514,0x3c18817f,0x3b58d6f8,0xbbdccb0b,0xbc70e008,0xbcb13edd,0xbca3b6c3,0xbca13182,0xbc9fdeb9,0xbc96f47c,0xbc841ab7,0xbc718765,0xbb86480d,0x3804baa4, +0x3b5946cd,0x3a4c1576,0x3a986900,0x3b265998,0x3b634986,0x3c0f50ce,0x3c5839b9,0x3c701291,0x3c6261e7,0x3c2de580,0x3c5f72c3,0xbb12c736,0xbbbce320,0xbc036b1d,0xbc35dfb7,0xbc695c58,0xbc9c1802,0xbc334fc9,0x3b91e99a,0x3c296d4e,0x3c0cc7b0,0xbbba6bb3,0xbc9a2a83,0xbca24ab8,0xbc294a65, +0x3af0ae5d,0x3c33b1f3,0x3c5265f6,0x3c6a3512,0x3c48f687,0x3c22bd0c,0x3b8769ce,0x3b074db6,0x3b497b3e,0x3b3272f9,0xb97b9de8,0xbb820a9c,0xba86f505,0xb99b28ed,0xbaa97b25,0xbaa2d7e5,0xbb85a6ca,0xbc254990,0xbc8efca5,0xbc2da9fe,0x3c0b5463,0x3b1a08bb,0xbc6220e1,0xbb32bd56,0xbc87b1f6, +0xbbd0ad2e,0x3cf6ac65,0x3c88e9fa,0x3c13d853,0x3badf042,0xbc99a83f,0xbc971fd1,0x3bbb3c6f,0x3c4e5802,0x3c29b70f,0xbba671a0,0xbbcd88d9,0xbc0d07bc,0xbc1f71b9,0xbbf711eb,0xbbd9e988,0xbbf8e287,0xbb8bfcce,0xbb85fbb6,0xbbb8af1d,0xbba1a451,0xbb0ef462,0x3a3c04d1,0x3a45db61,0x39192351, +0x3a2e665c,0x3a29bc26,0x3b08c53d,0xbb85953a,0x3ae1f28a,0x3a2ec5cc,0xbc878595,0xbc7552c7,0xbc1c9948,0x3c7f081b,0x3c7b53a1,0x3c272850,0x3b0eea8e,0x3c76f61f,0x3c963590,0x3c48b699,0x3b5ea429,0xbb1f1a75,0xba864d97,0xbb998369,0xbb5c38b4,0xbb08d180,0x3ae6a42a,0x3b7364ed,0x3b95b101, +0x3be03acc,0x3c00755e,0x3bded0a6,0x3bd0cdf0,0x3bc2a1d7,0x3bbff02f,0x3b0d4c47,0xb803d43b,0xba871095,0xb99776bc,0xb9479f55,0xb9bc9c00,0xba60276b,0x38b517ac,0xb94a7ad2,0xbae62f73,0xbb6a0dd9,0xbbb3c93d,0xbc5acecd,0x3bfe2fb1,0x3bd2dff1,0x3bfa8c68,0x3bf1f44d,0xb916968a,0xbb9f8e2c, +0xbc19f3e9,0xbc27a29b,0xbc0e1c37,0xbbc6f370,0xbafb7888,0xb9754909,0x3abbad2a,0x3b4460a0,0x3ad428a4,0x39d0f622,0xba72197b,0xbb1533ff,0xbb459895,0xbb69e987,0xbb1a25a8,0x387c43eb,0x3b26a698,0x3af4acc8,0x3aa742aa,0xb9111700,0xb979f013,0x39a4e489,0x3a4180cf,0x3a1981ad,0x39717391, +0xbafa46e2,0xb9b9c0ae,0x3a95c2a9,0x3b8d6701,0x3bd0ced9,0xbc1e14c1,0xbc2af454,0xbc053db0,0xbc060680,0xbc007b5e,0xbbda5945,0xbb91cbb9,0xbaaebfed,0x3b9a5f99,0x3c1432f9,0x3c413fa1,0x3c49817c,0x3c3fbbd5,0x3c1edc15,0x3bfd3a34,0x3b968859,0x39f1d482,0xbb1b67e0,0xbb8e08e3,0xbbb7453f, +0xbbc17051,0xbb8d8c8e,0xbad91bea,0x3a948b6d,0x3b0adc9e,0x3aeb4f6f,0xb9edb526,0xbae3712d,0xbb01e87f,0xbaded3db,0xbab93a0a,0xbb127b3b,0xbb29a543,0xbb873518,0xbbbde0e5,0xbc011595,0x3b93f554,0x3b5a7e01,0x3b157434,0x3b3a75b9,0x3b532d2e,0x3b99f3e3,0x3bc1db15,0x3be4eecb,0x3bcaaf2f, +0x3badbc5a,0x3b9bde8d,0x3b24231b,0x3a11ea1d,0xbad6544b,0xbafd2c1d,0xbb18b885,0xbb2fd9e7,0xbb10d8dc,0xbb01454c,0xbb0354ff,0xba924006,0xba3e761c,0xba0ae556,0x3ae02c4b,0x3b856ab7,0x3bf424ef,0x3bf0fa97,0x3bf55813,0x3bfa9cf1,0x3bbc8470,0x3b862b22,0x3b1721c6,0x3b4f08d6,0x3b85aba1, +0x3b92c589,0x3b859645,0x3bc4089c,0x3be26fa3,0x3bd1fac2,0x3bb986e9,0x3b99f6b2,0x3b793f2d,0x3b3c476d,0x3b1a3327,0x3a923ce9,0x3947c9b5,0xba272d47,0xbad12d8f,0xbb1e4a89,0xbb63d14f,0xbb598f83,0xbb5d7898,0xbb61a599,0xbb750dd0,0xbb816b1e,0xbb8cf75e,0xbb87bd09,0xbb490066,0xbb1b41bc, +0xbaed0298,0xbae2824b,0xba8bcc73,0xb9d6ed4f,0x39e3dd81,0x3aa66a75,0x3b207547,0x3b7604fe,0x3b9562c8,0x3b9b662d,0x3b97ce6e,0x3ba6fa80,0x3bb917d8,0x397b3e79,0x3a47a12f,0x3958fba8,0xb7a353f0,0xb93116af,0xb9c3f246,0xba1de24a,0xba5940d7,0xbaa79cf7,0xbae3b6d8,0xbb14fd6b,0xbb2df621, +0xbb463f2b,0xbb66d36f,0xbb5de367,0xbb5ecb9d,0xbb5c03b8,0xbb57ac0a,0xbb52b9e0,0xbb4b5257,0xbb4db0d8,0xbb48067e,0xbb56cb45,0xbb096131,0xbb070ecb,0xbb27b638,0xbb0e358a,0xbaec33e0,0xbac338f0,0xba961b48,0xba63ec42,0xb99b9d0c,0x38b3082e,0x3a0912d0,0xb8f111d3,0x394a6b6b,0xbb45279e, +0x3a076e77,0x3a263311,0x3a8d5c9c,0x3a5791ce,0x3a76d6bd,0x3aa0b2e0,0x3abb8f40,0x3a964750,0xb7dea1d7,0x38c49465,0x39b3739d,0x3b03178d,0x3a666cfe,0x3a5a49d8,0x3a444014,0x3aa06fa4,0x3aac3544,0x3ab17175,0x3a72e236,0x3a3ee6c8,0x3a25c19a,0x39d8e0f3,0x39a8b348,0x39df60b6,0xb91d6568, +0xb9a7640a,0xba3889f7,0xb9fae6a3,0xba3e18d5,0xbac9fadc,0xba1e1ccb,0xb9d0cfcf,0xbab61b64,0x3989cbdf,0x3a104c8a,0xb88ee23b,0x39ec6b4f,0xb9a96458,0x3a73be50,0x39b3dfaf,0x3a8732af,0x3b079e47,0x3b5f4eef,0x3b3287c8,0xb983934e,0xb9a7fddb,0x3a076948,0x3b927124,0x3a825384,0x399635a7, +0x3a280e7e,0x3b29db26,0x3b6f886a,0x3b83a6b5,0x3b5a72ad,0x3b2ef7a2,0x3b10f353,0x3aa77594,0x3a0725b4,0x39e44ffb,0xba680ffd,0xbaabf6b6,0xbb04b581,0xba5a2a9a,0xba0137e2,0xbb24ca55,0xb91512b6,0xb9ede997,0xbb6f5484,0xb96f93d2,0xb9371389,0xbb15368f,0xba6fcb8b,0x3a01897a,0x3b5e4dc8, +0x3af83cb6,0x3b500f02,0x3b8877bd,0x3bd3176a,0x3ba9d008,0xba4ae1f1,0xbab526c0,0xba28d4b8,0x3c07fcc7,0x3b1a4946,0x3b157f28,0x3aef6b08,0x3b9c971b,0x3bb65e6d,0x3bb37aea,0x3b6eb26a,0x3b1a24bc,0x3b084796,0x39a303b6,0xba61bbee,0xba45ecb7,0xbb57b536,0xbb520ba3,0xbbc90102,0xbb997bfb, +0xbbbd68ff,0xbc3b54c2,0xbbc82758,0xbb9e0dd6,0xbc1a307b,0xb9e525fb,0x3a319568,0xbb406bdc,0xb9a41a3b,0xbb58fa2f,0x39809601,0xbad4f7ef,0x3a1183ec,0x3b8b1a36,0x3c23ba1f,0x3c0adbee,0xb9efa782,0xbb1a9b3f,0x3ab3f96a,0x3c5cb067,0x3b36f495,0xbade9de1,0xb992a39c,0x3bdf36d8,0x3c3f52d9, +0x3c53eb33,0x3c352cf3,0x3c106de8,0x3bfd828d,0x3b864ac2,0x3adf5416,0xbaf6cfef,0xbb6f176f,0xbb3f112e,0xbbc56a2d,0xbb1a9d02,0xbb03a8b0,0xbb380f6a,0xbba297fe,0xbbaed792,0xbc35ac42,0xbb6485d8,0xbb0485c6,0xbc20d29b,0xbbac64de,0x3c77ece8,0x3c90926e,0x3cb78c18,0x3ca6dcc6,0x3c517d3b, +0x3b953f63,0x3956db36,0x3b454e0d,0xbb024578,0xbb9bcfb6,0xbbbada78,0x3b96f451,0x3c4669a4,0x3c72995b,0x39d1260a,0xbc1ff5a0,0xbc8812e6,0xbc99c0ac,0xbc9927ac,0xbc8abdbf,0xbc86cf5d,0xbc6011aa,0xbc37964a,0x3b003890,0x3b5b3a0c,0x3a74e283,0x3aca7f61,0x3a75a1d8,0x3afa9e7d,0x3af0ff5d, +0x3ba7ca47,0x3bc125c9,0x3c229667,0x3c50a022,0x3c551d6b,0x3c63d9bf,0xbbbf5692,0xbb855e8a,0xbbb99a88,0xbc17cf2c,0xbc390d1e,0xbc97d87e,0xbc48ccec,0x3b95f01a,0x3c06262d,0x3c26c961,0x3b61d9ab,0xbc69fc0e,0xbca628cf,0xbc51de9c,0xbb8f7a6d,0x3b97f2dc,0x3c355966,0x3c51528d,0x3c2a2660, +0x3bc27b1a,0x3aa6b914,0xb90be954,0x3b020f28,0x3a365429,0xba9d6e65,0xbad6c919,0xb99ec953,0xba4f8492,0xba4fae3e,0xba9c530d,0xbac094e8,0xbb8168fb,0xbc1ab8bc,0xbbb82e24,0x3bd97370,0xbb08657a,0xbb5f3b43,0x3c32d4bf,0xbbe532a1,0xb8d7dc85,0x3ce12b9e,0x3c9cdb73,0x3c67394b,0x3c4fe0ed, +0xbc3a95ec,0xbc8315f7,0xbb58bc3b,0x3c6025d6,0x3c8a94c9,0x3b38a8a3,0xbaea4169,0xbbbb48ca,0xbbdce500,0xbbe0f988,0xbbb1ec9a,0xbb977581,0xbb100ef0,0xbb0d9bb0,0xbb78a5d4,0xbb0ad123,0xb8dda2c7,0x3a6090e2,0x39897688,0x39d3f22f,0x3a2a8a5b,0x399c742a,0x3acb7f67,0xb9752369,0x3b294a68, +0x3af277fa,0xbc7f164c,0xbc00c217,0xbc605cdb,0x3cdf4665,0x3bfeae0e,0xbb7bfb50,0xbc6956f9,0xb9f4d534,0x3c4a1388,0x3cc14054,0x3c1ec42a,0x3ac7120c,0xbafd18be,0xbb8634fb,0xbb76c6de,0xbb0d2076,0xbaa811a7,0xb9a70f68,0x3afe5dd4,0x3bab1bf0,0x3bf2a182,0x3c012a63,0x3bdec1d9,0x3bc3040c, +0x3b88ba13,0x3a01a283,0xb9ce5cd4,0xb9b17a33,0xb9ab55cf,0xb9f893af,0xb9ca9b76,0xba23e794,0xb97fef1e,0xba818abf,0xba68a7a9,0xbba07160,0xbcb03b76,0xbce7985b,0x3c8625b5,0x3c380817,0x3c07d64b,0x3c05608d,0x3b785af2,0xba2bce28,0xbbf4b2bf,0xbc323232,0xbc2c9dce,0xbc07ee05,0xbb9e1118, +0xbb56aabb,0xba9f6284,0x3b006121,0x3aedd06d,0x3b06e5d6,0x3b06d885,0x3a87c4e4,0x3a6bc613,0x3ab28fd9,0x3b43e7e9,0x3b9dc99a,0x3ba92d5d,0x3b37d40e,0x3aacf813,0x3981034d,0x3a161247,0x3a45de9b,0x3a3cb346,0x3a176d10,0x3a3cb65d,0xba0afc1b,0xba43fae5,0x3b24c8de,0x3c1bce01,0x3c8e1b8b, +0xbbe03762,0xbba3f737,0xbb024ed9,0xbb84f452,0xbbcd1847,0xbbffc3c4,0xbbcff264,0xbb7c5764,0x3acbb20c,0x3b92b2ad,0x3bb7ac29,0x3bd9ee71,0x3bde81b7,0x3bc6227a,0x3b974937,0x3b0a02fe,0xbab3eca5,0xbb51b9eb,0xbb7df029,0xbb8960c4,0xbb8e5c5b,0xbb2fd0ee,0xb8fda0c9,0x3abe51cb,0x3aa4d3c1, +0xb957c091,0xbad1cce4,0xbb010429,0xbad27b77,0xbaa7cd66,0xbab0bbb6,0xbb26dee4,0xbb4a71a0,0xbb95ae11,0xbbc662fd,0xbbe2b5d2,0xbaa00702,0xbb435437,0xbb7f6853,0xbb4f368c,0xbb2fad8f,0x394dd00b,0x3b0f84f5,0x3b7f79d2,0x3b8b1770,0x3b9f0d62,0x3bb8d16e,0x3b96c8a9,0x3b6ba3c3,0x3b1ee952, +0x3ad0cf51,0x3a651d40,0x39778ef5,0x3877ef39,0xb9b0dfa6,0xba9bd08c,0x396fe777,0x3aa3c363,0x3b0a5181,0x3b4d7cf2,0x3b9b8aef,0x3bda1d0d,0x3bbfda1e,0x3ba1371a,0x3b94c44f,0x3b2e3c0a,0x3a87ee8d,0xba7c2945,0xb9bb96be,0x381c3e72,0x393460f2,0xba2f2823,0x3befd425,0x3bfd2689,0x3bf44149, +0x3be29fc7,0x3bc7cad6,0x3bb8c17d,0x3ba821a0,0x3ba439ef,0x3b80e64c,0x3b3d6ce2,0x3afafb68,0x3a7590ff,0x38dcd7f3,0xba750ab3,0xba54c151,0xba56a7d5,0xba5d8138,0xba870997,0xba845b88,0xbab01f19,0xbab99a88,0x397691fa,0x3aaa1dec,0x3b102eb8,0x3b33cbf1,0x3b89e337,0x3b8f8260,0x3b9cf709, +0x3ba59c03,0x3bb2a70a,0x3bc29373,0x3bca8cf3,0x3bc8784a,0x3bc2e071,0x3bcfec47,0x3bda9177,0x3b029522,0x3b1b885e,0x3b0b90db,0x3b0ab5d6,0x3b0f7e45,0x3b0336ff,0x3aed968f,0x3adeb1ef,0x3aad86d2,0x3a88e7d3,0x3a349511,0x39dd09ad,0x39075419,0xb99c9323,0xb9394849,0xb95bcd4e,0xb94a93b1, +0xb92f7ad5,0xb93550d7,0x37ad8cf4,0xb99d8947,0xb99f21b8,0xba5a9a92,0x3a901f92,0x3a784aa6,0x39f9d80c,0x39e33248,0x3a1549da,0x3a26ee90,0x3a5097cf,0x3a6ab947,0x3a8c4100,0x3ad82666,0x3b11e292,0x3abe0618,0x3af63bec,0x39dcd2d0,0xb93e7c49,0x3923a240,0x39e89116,0x397ea32d,0x39a60aa5, +0x39b785e4,0x3a43e6bf,0x3a0128a7,0xba0ad172,0xba108066,0xb9bed6d7,0x3a9d07f9,0x3861b17f,0xb6452986,0x380a2cd0,0x395bc96c,0x39a17674,0x3a2dd1c5,0x395d8d49,0x3888ed66,0xb9066a19,0xb8e76951,0xb8aed838,0x39cde7f8,0xba5dbd3c,0xba5dab33,0xb9e283d7,0xba0b55f3,0xba12a7fe,0xba871248, +0xb9b583c4,0xb9939ef5,0xba99248e,0xb73ac041,0xb4b63c80,0xb981738e,0x3832153f,0xb9d0f40b,0x3a02852b,0xb89aba91,0x3974f5cb,0x3a02a54e,0x3b147692,0x3afb2d1c,0xba1d315c,0xba900370,0xb9e690a3,0x3b5600cd,0xb917d124,0xba94613a,0xba5fbb31,0xb7090f45,0x3a8bbb16,0x3b22e866,0x3af71bc4, +0x3abaeeaf,0x3a6cd443,0x3a033aac,0xb9bae0e0,0x399dde88,0xbaff4416,0xbb15d95d,0xbab4b44a,0xbae6fa17,0xbae4b8f2,0xbb408ec9,0xb9aa6a07,0xb9867215,0xbb416eb7,0xb93a4320,0xb9784bde,0xbb042668,0xba89ede6,0x39bce809,0x3b3de6ca,0x3ac7fcdd,0x3b294655,0x3b1cfaaa,0x3bacfe73,0x3b8caa03, +0xba24ed05,0xbb01e0fd,0xbadaf8b9,0x3bd11221,0x3a31f0f4,0x3a089874,0x399fcca0,0x3ad4c4d2,0x3b1f9da5,0x3b8a3a18,0x3b1bd2bf,0x3aa70d00,0x3a584675,0xb9b1f3b5,0xbacd78cb,0x38408728,0xbba135f1,0xbb9890bd,0xbb7b55f6,0xbb927349,0xbb8e5f8a,0xbbfc66fb,0xbb7ac344,0xbb54f8b7,0xbbe0d5af, +0xb994e0ba,0x3a0bb824,0xbb393be4,0xba270122,0xbb1b7ac2,0x39a0720e,0xba9eb261,0xba344f04,0x39d7bfa5,0x3bf5417f,0x3bf54871,0x38f2e0e2,0xbb490c69,0xb883da2c,0x3c2d1023,0x3a5bb113,0xbb9852e4,0xbb8d2eb8,0xba0a9109,0x3b9538b3,0x3c159565,0x3c017dda,0x3bc66f96,0x3b9ccb80,0x3ae86057, +0xba1aabc5,0xbaf866a3,0xbbb0c070,0xbb5bf397,0xbb23cae4,0xb9e86dbb,0xb99104e3,0xb90594f2,0xba65a4c6,0xbaad3895,0xbbac936b,0xbaae2d49,0xba5fb290,0xbc01eb39,0xbb968c38,0x3c4e04fa,0x3c73f7a4,0x3ca85b69,0x3cb0a831,0x3c9a6597,0x3ba276a8,0xba9c01c0,0x3b737ef5,0xbb1b21eb,0xbbb6459c, +0xbbd6a73d,0x3b5679d0,0x3c5caa11,0x3caddec6,0x3bf3fb2c,0xbb5907de,0xbc2375f8,0xbc77bd54,0xbc7fa0fa,0xbc5391fb,0xbc4d4af8,0xbc1b8b1a,0xbba452c8,0x3b97fc7f,0x3b59a0c3,0xb58a486d,0x3a65a4a6,0x378d5265,0x3a108af5,0x393e0052,0x3ab3aa74,0x3ab3991d,0x3b8b4f4c,0x3c0cf0ea,0x3c35ef9b, +0x3c3f4f20,0xbbaf705a,0xb9fa01ef,0xbb408a2c,0xbbff697e,0xbc2342f6,0xbc96a62f,0xbc718199,0x3adea4a0,0x3b589fe8,0x3c05e9a4,0x3c236a94,0xbc1a17fd,0xbc9f8960,0xbc82c790,0xbc0d3a1e,0xb80eb90b,0x3bfcb3a0,0x3c0d1f01,0x3bbe744d,0x3a5e4193,0xbadfce3a,0xbadfab3a,0x3a9eac0f,0xba8ac6e8, +0xbaa0e820,0xb99da1e1,0xb9994640,0xb940da91,0xb958f7db,0xb97e54b5,0xba20eee1,0xb9b79d42,0xbb3dac0b,0xbb181fb6,0x3b3fb539,0xbb6b02d4,0x3bc4c749,0x3c9b4c23,0x3b48f853,0x3b8fa4e3,0x3c90650b,0x3ca09d94,0x3c8f8ad0,0x3c8088c4,0xbb55250c,0xbc3a980c,0xbc34303d,0x3c20e15f,0x3c93e109, +0x3c4134a0,0x3b0ea20e,0xbb7512cb,0xbb86887d,0xbbabad8f,0xbb3c0a34,0x3919c5d2,0x3a9fcfce,0x3a23f8fe,0xbab9a336,0x399c7811,0x3a171909,0x39856f0d,0x39345365,0x39438bca,0x390959b1,0x395aa26a,0x3974c0cb,0x399bc113,0x3ab3b137,0x39f64aac,0xbc068114,0xbaa62970,0xbc574245,0x3c3a7485, +0xbc38b4c1,0xbc9cc13b,0xbcc54c0e,0xbc96f31e,0xbb1d005e,0x3cb6bb51,0x3c706c6c,0x3bfebcec,0xbb85e8d7,0xbb8479e7,0xbbb7f6d2,0xbba53fb8,0xbbb39885,0xbb79a184,0xba2781ac,0x3b31e334,0x3bae7f26,0x3be4d1ae,0x3bcac3e2,0x3b9834ac,0x3a934fdb,0xba2f90da,0xba02cb52,0xb9411a15,0xb9797d69, +0xb96bcdd8,0xb93d2e16,0xb94e845f,0xb937a9fd,0xb9a5a65a,0xb9987c13,0xbba2fc6e,0xbccea084,0xbce3c3d3,0x3cccc09a,0x3c9968fb,0x3c00b88c,0x3b5548cd,0x3b38a877,0xb9ae80db,0xbbbf5bec,0xbc27dcdc,0xbc38d841,0xbc1c091d,0xbbdfd831,0xbbb6b1b5,0xbb53e84b,0x3a823c63,0x3b09b788,0x3b4d55a0, +0x3b6a9f16,0x3b62ce9e,0x3b8aca4f,0x3bb5ab14,0x3bec8c52,0x3bfcffd7,0x3bacd355,0x3b20cf75,0x3a2cf565,0x3987b984,0x39e8e484,0x39dae6b5,0x39b58f29,0x39608963,0x39b6f4bf,0x39bd975c,0xb8e64a1f,0x3b85bc07,0x3c2e64e6,0x3ccc9799,0xbb4f5c3f,0xba07f689,0x3a8fa017,0xba5f50ca,0xbb545f21, +0xbbb32922,0xbba042f4,0xbb84a3b2,0xba0d8bfb,0x39fa5360,0x38b20078,0x3a1d4aea,0x3a1a9dca,0x39903afa,0xb8883545,0xba8ac96d,0xbb3c2dd5,0xbb5e27f9,0xbb541a12,0xbb4041d0,0xbb269854,0xba8889be,0x3a8c9e48,0x3a8eae8f,0x39c28333,0xba5e5734,0xba89ea7e,0xba7583ed,0xba388c61,0xb9e13fe4, +0xba0130ec,0xbabde9c3,0xbb180207,0xbb598058,0xbb8d0fd6,0xbb858e72,0xbb9d9b42,0xbbd830b6,0xbbdf74e6,0xbbca544c,0xbbbef8bf,0xbb5e5c3c,0xbaf0206e,0xba1226cc,0x3a7aa9c7,0x3b3c1990,0x3b9efa50,0x3bb016d5,0x3bbd1148,0x3bc6ed38,0x3b9c9a9b,0x3b6faa88,0x3b2b3de5,0x3afcb907,0x3a8fddc2, +0xb8ba6e97,0x3aae776d,0x3b1c1716,0x3b60f480,0x3b53dfc6,0x3b6c76c3,0x3b611ca5,0x3b3ad40b,0x3ad4c3e1,0x3ad56b3b,0x39332bb1,0xba3d0d13,0xbb164fae,0xbb1e4818,0xbb33e512,0xbb464f8d,0xbb85ce04,0x3bb22f30,0x3b8d7211,0x3b8f3b2e,0x3b8c933d,0x3b835ea2,0x3b878bc9,0x3b8b0123,0x3b932747, +0x3b895e6d,0x3b6b94ce,0x3b4562c6,0x3b244aaf,0x3b0ab15c,0x3ae61307,0x3ae98f14,0x3afa5439,0x3b003eb8,0x3afe69e2,0x3b0859a9,0x3af159f7,0x3b02eeaa,0x3b53f85c,0x3b88d13e,0x3ba72e75,0x3bc377b8,0x3beeadef,0x3be20c7e,0x3bd90140,0x3bd124f1,0x3bbefe14,0x3bb3ca9d,0x3bac39e9,0x3ba310c3, +0x3b9d1022,0x3ba1cb3a,0x3b93b35f,0x3b3d5236,0x3b2bbe9c,0x3b3d2c94,0x3b446494,0x3b51afd7,0x3b4c35e1,0x3b476a81,0x3b48017e,0x3b3f68fa,0x3b4061ad,0x3b3f8e77,0x3b408057,0x3b3cdeb7,0x3b32f5ba,0x3b35e2dd,0x3b32dbe5,0x3b3182f4,0x3b2f8169,0x3b2c7bfd,0x3b32940a,0x3b296476,0x3b2c9176, +0x3b1d52c2,0x3b633de2,0x3b5faf10,0x3b66b237,0x3b512541,0x3b4d5238,0x3b4047d7,0x3b418330,0x3b3b0b1f,0x3b2f0507,0x3b3bbcaf,0x3b4255f9,0x3b4056c3,0x3b432fbf,0x3b503da8,0xba7e0473,0xba0f3876,0xb97f70a5,0xb9ca86f8,0xb9b223f7,0xba111491,0x380fb03a,0xb90a822f,0xba5f8b9b,0xba8f20af, +0xba8555ba,0x38b6af34,0xba25c426,0xba38d6ad,0xba4ba1b9,0xba7b59b4,0xba6d5376,0xb98e126f,0xba2e87e4,0xba476195,0xba86dc00,0xba6be2d0,0xba5f10bf,0xb9846df4,0xbad50998,0xbad6e2f0,0xba2ecdf5,0xba9de59d,0xba908a71,0xba867331,0xba320747,0xba3beeb5,0xbaa9c4e1,0xba317dd2,0xba4c5c83, +0xba7705d6,0xba37c79d,0xba46939d,0xb86cf88e,0xb9e4e090,0xb9e0c642,0xba713c91,0x3a9ac52b,0x3aa0085c,0xb9e2eb72,0xbabf53c0,0xba9c1ba8,0x3ab8255e,0xba24f38f,0xbae29823,0xbb148f6e,0xbb38980e,0xbb030363,0x39c1018f,0x38059f43,0xb8db22f1,0xba44e74b,0xba31b62a,0xbaa83630,0xb8bce561, +0xbb40e164,0xbb517ed4,0xba7d054b,0xbb55f9b5,0xbb6364b5,0xbb51412c,0xba971580,0xba1f2c98,0xbb0501f1,0xba2ea63c,0xba626ce8,0xbb05c79f,0xbaa8ae1e,0x38133095,0x3b0e2506,0x3aa0b863,0x3b061394,0x3a3e1735,0x3b8c2315,0x3b7b42cd,0x3a38bae5,0xbadd14d5,0xbb0246c5,0x3b5b0ade,0x39b98603, +0x37eb2415,0xba835d62,0xbb05e49c,0xbacf8903,0x3b05a975,0x39d33db9,0xb9791c20,0xbaa2423a,0xbab76353,0xbb14a251,0x38b5cbb5,0xbbb898c6,0xbba4de74,0xbae2c8be,0xbb799ac1,0xbb40ced9,0xbb5f2f20,0xbae1892b,0xbaf0b698,0xbb5c2abe,0xba098891,0xb9a0d827,0xbb30afc2,0xba953d24,0xbac62297, +0x3996e1f9,0xba226d9d,0xbab1e2b9,0xbb2d1c7e,0x3baa0025,0x3bdd4dd0,0x3b1b4eaa,0xbb0f45ba,0xba8df45c,0x3bb7d40d,0x3a51e23a,0xbb91c321,0xbbeac7ae,0xbc09a34f,0xbb8a7be9,0x3b6c03e9,0x3b5f2470,0x3b1bea2d,0x3a37f02c,0xba466303,0xbb0f7e2f,0xbabeb023,0xbb999f00,0xbad90664,0x385fbe86, +0x399e8fdd,0x3a6eb81d,0x3a75fc15,0x399a2fa8,0x3995ebf0,0xba5b6865,0xb9cc8756,0xb9d7fbba,0xbba46311,0xbb65839b,0x3c1cf999,0x3c28d2df,0x3c8fde03,0x3caa6871,0x3cafe3f8,0x3bd728a3,0x386a8ac6,0x3b9ad3a2,0xbaade528,0xbb81769d,0xbb7fd013,0x3b624a22,0x3c6b346b,0x3cc5a13c,0x3c77fcd1, +0x3ba7c4af,0xbb4a892d,0xbc295e50,0xbc414b26,0xbc1933ad,0xbc133237,0xbb9cad92,0x396d6312,0x3b5a177c,0x3a9d855d,0xb8ff27ae,0x37c786b7,0xb9cef8bf,0xb9b218e3,0xb9180b03,0x386f3a6a,0x39011162,0x3a116ac6,0x3b6437a4,0x3bc7902d,0x3bf97165,0xbb3c96a3,0x3b51c6b1,0x39e6b82a,0xbb991512, +0xbc02c102,0xbc898232,0xbc84873d,0xbb2da72b,0xba027100,0x3bd4c89c,0x3c65272b,0xbb78e738,0xbc8323e6,0xbc914852,0xbc32eb17,0xbb296cd1,0x3b952208,0x3ba0b5c3,0x3b0d1681,0xbb2e0bcc,0xbb3c9de7,0xbacef980,0x39a90a8f,0xbaaa99d4,0xba090c3e,0xb842fc3f,0x380e9ed2,0x3917787a,0x392ce94c, +0x38c5f077,0xb85fc4b9,0xb7715ab2,0xba087174,0xb9a73d64,0x3a28d960,0xbb1907c5,0x3c5a4722,0x3cb0204e,0x3c20b9bd,0x3ba8c276,0x3b987691,0x3c91d955,0x3ca06ff4,0x3c76f35b,0x3b970df7,0xbbcb468b,0xbc8485a8,0x3b4bd71c,0x3c7464be,0x3c9a27c5,0x3bde5fd1,0xba1b5eb9,0xbad44b72,0xbb2d5b4c, +0xb98c3094,0x3b5ed8b1,0x3b4d46f0,0x3ae55789,0x38a8a689,0x3a380646,0x39736f1a,0x38645edc,0xb798e2d8,0xb890dacf,0xb8b2e62c,0xb8c42ae7,0x3892f2ed,0xb88e6dec,0x398c3033,0x3a5bd0a6,0xbb92cfd8,0x3b3f3006,0xbc574a1a,0xbcacd600,0xbcc12d0b,0xbcad29fe,0xbcbff7fe,0xbccd55b1,0xbc6b42ea, +0x3c08e5f2,0x3c85242d,0x3c6f8b38,0xbb31bdfc,0xbb398d3a,0xbbe660fb,0xbbfe1abd,0xbc03f8bf,0xbbb90edc,0xbb44e375,0xb957939e,0x3af10edb,0x3b7902b8,0x3b7782da,0x3aca263a,0xbaa26212,0xba02b15a,0xb9254eeb,0xb78e6e2f,0xb7cddea1,0x38594d13,0x38a87f39,0x38be9d2b,0x37ef3913,0xb7f06131, +0x387ceaa2,0xbb1a5470,0xbc8cbce9,0xbc79b120,0x3cdc4591,0x3cb8b017,0x3ba52dff,0xbb8ef54a,0xbb131d7b,0xbb75edee,0xbbab0f8a,0xbbf26f8c,0xbc1f662f,0xbc15bc66,0xbbee8188,0xbbc6140a,0xbb6b8504,0x3a08bef7,0x3b039a47,0x3b531bba,0x3b8a4e6d,0x3ba9131a,0x3bd7424f,0x3bfd5cbe,0x3c0f2f4e, +0x3beac395,0x3b52cd7a,0x3a6fe31e,0xb8ed81cb,0x391b3872,0x37a0f08e,0xb859af73,0xb90c3942,0xb90544e6,0xb9406d97,0x391a60c0,0xb9d09ff1,0x3b83c01f,0x3c03fa2f,0x3cb5f5a9,0xb62ef396,0x3b32291c,0x3b4871f2,0x3b1916d4,0x3a08d297,0xbae01ae3,0xbb2c1ceb,0xbb7870ad,0xbb211793,0xbb220377, +0xbb526ce3,0xbb51b456,0xbb76b347,0xbb96c686,0xbb845d38,0xbb66acf1,0xbb5cc979,0xbb3eaf65,0xbb0d9caf,0xbadeb663,0xba6af318,0x3a1c2b87,0x3ac98087,0x3a18263c,0xb89b42a4,0xb9905cf3,0xb84c9c93,0x392fbac1,0x3975b8fc,0x39cdb3d6,0x39c58514,0x3935e280,0xba0b8dfb,0xba4b5d7e,0xbac504ab, +0xb9957e1c,0xbbd36534,0xbbeaff43,0xbbd45371,0xbbc74748,0xbbb46c68,0xbb8a413a,0xbb62fa3c,0xbb468aa9,0xbac5ce9e,0x396c846a,0x3b051ab9,0x3b6b7d4b,0x3ba5d89e,0x3bd4c6c3,0x3bb03b53,0x3b8b509e,0x3b4ff902,0x3b2bcf8c,0x3b0c3ab3,0x3aaba43a,0x3adf76e1,0x3b0da7da,0x3b24c3db,0x3acf101c, +0x3a95f222,0x393e8c39,0xb8c01c19,0xba6ac623,0xba3afd67,0xbacae835,0xbb06d10f,0xbb49af29,0xbb7e8c23,0xbb9f7c79,0xbbb5c081,0xbbca1332,0x3a7ab9bb,0xb9e879a3,0x38c64b19,0x3a192daa,0x3a7b85a6,0x3ac5bb07,0x3b0dfff4,0x3b39724f,0x3b586d7e,0x3b626a21,0x3b661499,0x3b691907,0x3b6c1d4c, +0x3b806e09,0x3b7809bd,0x3b82602f,0x3b848db2,0x3b866d12,0x3b8914c3,0x3b853c36,0x3b806a9f,0x3b9a7e70,0x3ba980c6,0x3bb6c8cc,0x3bc3fa40,0x3bcf7151,0x3bb785db,0x3ba0c5ae,0x3b8e6060,0x3b6486ff,0x3b3a99e1,0x3b269c78,0x3b0b5b14,0x3afcd48c,0x3adf750c,0x3a69d1d3,0x3b383216,0x3b203150, +0x3b3fa5a1,0x3b4c6181,0x3b5d7182,0x3b65aeea,0x3b6b89f1,0x3b73476c,0x3b791a6c,0x3b83680c,0x3b8b6eb4,0x3b93b8c9,0x3b99c7ac,0x3b9e950f,0x3b9d5bb8,0x3b9b9629,0x3b99d6bc,0x3b975b43,0x3b949e19,0x3b967f9e,0x3b8d0f74,0x3b884e9f,0x3b809ff9,0x3b94a4d4,0x3b9070d7,0x3b9b39e7,0x3b913a7c, +0x3b8ca739,0x3b839d15,0x3b7f62a9,0x3b6f9ead,0x3b55c259,0x3b4dd243,0x3b47946b,0x3b3eaf94,0x3b3b68c0,0x3ba3bdb1,0xbad9340b,0xba94f4ee,0xba6ceb2a,0xba6c0daa,0xba6a16e0,0xbab21f38,0xba27afde,0xba308f3b,0xba784a1c,0xbabf1f8c,0xbac9c60a,0xba9a1199,0xba9009c4,0xba975ab7,0xbac3fbdd, +0xbb009411,0xbb02b04a,0xbaab45c9,0xbac1cd9e,0xbac555b1,0xbaf1bb9d,0xbad24e60,0xbac6baad,0xba608f87,0xbb12249b,0xbb0d3c60,0xba5ac2db,0xbae19530,0xbadb4fdf,0xba9c0db9,0xba8c1bca,0xba84c4ce,0xba93fc80,0xbaa48ad2,0xbac1cef6,0xbabb897f,0xbaa8b4e5,0xba8aefa4,0xba2637d6,0xba349e8b, +0xba69dd73,0xbb08b41c,0x389b945e,0x39f86288,0x38752054,0xbacb49ed,0xbaec28ac,0xba7919fc,0xba34c657,0xbad38992,0xbb565e02,0xbba23ff3,0xbb978c32,0xbb044c5b,0xbae1503e,0xbabf47bf,0xbb0fbf9a,0xbadbb391,0xbb032d51,0xba308a6a,0xbb59e1f9,0xbb6c1be9,0xba9965cc,0xbb894839,0xbb8b6448, +0xbb2dc92d,0xbab93ea1,0xba641f6e,0xba75ab9e,0xba9d2a7b,0xbacd7d46,0xbb042080,0xbacf93d0,0xb9643fec,0x3ab90e03,0x3a972ed2,0x3ad8852e,0xba610ef3,0x3b4745cc,0x3b5494b0,0x3b2d39b3,0xba7d19d5,0xbb01fc3a,0xba26a932,0x3a547a79,0x39fb624c,0xbb023c32,0xbba4fd26,0xbbab1154,0xba7e04d7, +0xbad65c17,0xbad57b4e,0xbb4e5ead,0xbb2320de,0xbb338b23,0xb9fad425,0xbba41032,0xbb78c6c7,0xb9758719,0xbaecee21,0xba2f7e94,0xba0c3d50,0xb97762a5,0xb9ff2f7d,0xb9d7fdb9,0xba1fbd87,0xba8ea15b,0xbb11d204,0xbab99ba9,0xba79df70,0x399d4254,0x391df655,0xbab661e0,0xbba282d8,0x3b1c6bb7, +0x3babb890,0x3ba5b79b,0xba4ed0f7,0xbb104dcc,0xba755ad2,0x3ac37e9f,0xbb0e88a9,0xbc0a481a,0xbc67c944,0xbc43e042,0xbb475414,0xba9a5387,0xba69aa75,0xbb39f477,0xbb32a693,0xbb362146,0xba9be2c4,0xbb11b6fe,0x3a0514ee,0x39ba984a,0x3a1160f0,0x3a0c675a,0x39620357,0x3954c2b7,0x391f808d, +0x39188b88,0x38bc6622,0xb98df5f6,0xbb27491b,0xbb1267bc,0x3bd4b68e,0x3bd0c646,0x3c5c607f,0x3c90d13a,0x3cb2824e,0x3c1d40a1,0x3b824465,0x3bdfd95c,0x3a8484b9,0xba8029ee,0x398f210b,0x3b84375b,0x3c5a1336,0x3cb81ef2,0x3ca7bb84,0x3c505c97,0x3b0f8a01,0xbbbc5baa,0xbc07b474,0xbbe4d925, +0xbbbbc4b8,0xba9acbce,0x3b0d0ecd,0x3a48bd04,0x38924c1f,0xb989f679,0xb9655d07,0xb997266f,0xb8f8e593,0xb8fcdde9,0xb8a68c8e,0xb7600da6,0xb8f0661a,0x39e60a6a,0x3af0496c,0x3b7041cf,0x39e3ad9e,0x3bad867f,0x3b79cae4,0x39be0525,0xbb64c4ae,0xbc479784,0xbc6c231d,0xbbc888ad,0xbaf3dfd6, +0x3bc265be,0x3c6cce99,0x3ad1c333,0xbc27f841,0xbc8ac31e,0xbc514734,0xbbb96215,0x3a51b906,0x3b0771c4,0x3a1e3c3d,0xbb49a210,0xbabe930c,0xb9bc668c,0xb9bb2252,0xba0acc52,0x36c630aa,0x38eb9891,0x3903333e,0x391da9a2,0x38a91d80,0x38b859eb,0x359b40ff,0x391ecafd,0xb8c11ec3,0xb9760ebd, +0x3a00152a,0x39f2ca06,0x3c89bcbf,0x3cac6d50,0x3c4b42a5,0x3b6141b1,0xbbc10357,0x3c6ee1b3,0x3cacad9c,0x3c75f72f,0x3c478142,0xb9b5c476,0xbc8d68e6,0xbb652eff,0x3c144281,0x3ca6aa64,0x3c43012f,0x3ba728b1,0x3ac52fb4,0x3a3501de,0x3ad9c538,0x3b7c169d,0x3b1396f1,0x3a6b6283,0x39dba4d3, +0x3952a8af,0xb600370a,0xb89bd3e5,0xb8c50d17,0xb8bda82c,0xb8ce8dbe,0xb7d533ab,0xb9296654,0x38e1c7b9,0xb9e7a9f2,0x3aad658c,0xbb20f170,0x3b44fecd,0xbc6bc19c,0xbd3830a7,0xbcb8dbbf,0xbc33a525,0xbc708b8e,0xbc93f6f9,0xbc894f2a,0xbc07c548,0x3c54da31,0x3c95379c,0x3b7b5288,0xba0546b8, +0xbbf1b876,0xbc0664b4,0xbc13883d,0xbbe5e2da,0xbbaa01ad,0xbb4fe042,0xbb0b9fcf,0xba03ceeb,0x38c44576,0xba977af0,0xba8495ab,0x39170112,0xb7a82d3d,0x38ccf330,0x38cea57c,0x3907e88b,0x38baab91,0x3912e61a,0x389722bb,0x396ed4c3,0xb88cfd6c,0x39f3f4f0,0xbbbc039e,0xbb80fdb0,0x3c887727, +0x3c815ae1,0x397728b7,0xbc12c12d,0xbbf6fc0c,0xbbe7f486,0xbb9b6f2b,0xbb6a716e,0xbbe3d6e7,0xbc061da3,0xbbedd5d8,0xbbbb495c,0xbb534330,0xb948ad9d,0x3aa75822,0x3b367a5c,0x3b9ce570,0x3bc93e95,0x3bf2e2a0,0x3c0255bd,0x3bf7bcaf,0x3b92d891,0x3a836e4d,0xb90dffcd,0xb8bff196,0xb8f8fc6d, +0xb9593793,0xb948abf2,0xb95a1806,0xb946bed4,0xb9aa6655,0xb8ad24f7,0xba2ec491,0x3a4ce4f2,0x3ba98bde,0x3c2f7595,0x3b710dc7,0x3bc21921,0x3bb389f5,0x3bc14989,0x3b898648,0x3aedbc82,0xba4a1338,0xbb4e392e,0xbb882501,0xbb94be24,0xbba35f24,0xbba3a53d,0xbbba307a,0xbbe1f3e2,0xbbb31059, +0xbb854ea8,0xbb3a7162,0xbae87007,0xba23e65a,0x3951360b,0x3aaaf9a5,0x3b03a4d1,0x3ad01ac7,0x39d10510,0x390c4aa8,0x39bfb438,0x39c2ab75,0x39e33f73,0x39c4732f,0x39f90d76,0x3a083b93,0x3a2c9903,0x3a12eeb2,0x3a9bc8d4,0x3aa15514,0x3b314cae,0xbba751cd,0xbba5fa16,0xbb8c094c,0xbb8e62a2, +0xbb7a2f98,0xbb536281,0xbb3caf16,0xbb3fe1b2,0xbb05e64f,0xbaabee11,0xba03d870,0x3a7f990b,0x3b230fbe,0x3b837d66,0x3b683efa,0x3b422270,0x3b1de3cd,0x3b1d6873,0x3b1d4cf6,0x3b20fbf5,0x3aed7ad7,0x3aa6b932,0x3a5f731f,0x373a20ca,0xba0bcc62,0xba7dcf0d,0xba6a1403,0xba82511a,0xba4e273e, +0xba836d68,0xbaa971ae,0xbaeb1c21,0xbb35dc8b,0xbb800f64,0xbb9d4b2d,0xbb9e64a7,0xbb190f46,0xbb6350d5,0xbb27f30a,0xbad1d61a,0xba500e4a,0xb911465c,0x3a38d314,0x3ad1f71e,0x3b1e1bf9,0x3b4c4ac9,0x3b713e4d,0x3b86e519,0x3b926e5c,0x3ba9978d,0x3ba1d34c,0x3ba5c823,0x3ba583a3,0x3ba630e3, +0x3ba400cf,0x3ba495f1,0x3ba0d793,0x3b98c338,0x3b8e3752,0x3b82fdd6,0x3b720c93,0x3b439aff,0x3b101e0f,0x3abbe6bc,0x3a5be25a,0x38c95aa0,0xba0229a2,0xba37ba59,0xba850e02,0xba872605,0xbaafbbe1,0xbb0f85ac,0x3b20b02b,0x3ae8f7ac,0x3b18f8f0,0x3b24de2e,0x3b35a119,0x3b48de80,0x3b56d9f2, +0x3b623829,0x3b6f9218,0x3b805bf3,0x3b8aed0b,0x3b96619e,0x3ba09e1a,0x3bab9cbe,0x3ba824d3,0x3ba677df,0x3ba452a3,0x3ba19f20,0x3b9f5d11,0x3b9c1985,0x3b9e0478,0x3b9ca4d5,0x3ba1fbf8,0x3b90faed,0x3b94fe4c,0x3ba5b5e1,0x3b9f748f,0x3b98dff2,0x3b8ff6b1,0x3b88aede,0x3b7e9083,0x3b607c5b, +0x3b41ba46,0x3b246364,0x3b40b769,0x3b2c6716,0x3ba7dbaa,0xbaf6bef8,0xbac09a0c,0xbaa7d763,0xba94ac00,0xba95aafd,0xbae17827,0xba88855c,0xba75bc79,0xba30813c,0xbabbee32,0xbada4fcb,0xbb04e31b,0xbaa2555f,0xbaa115ca,0xbae1844f,0xbb127187,0xbb19db83,0xbafe74a9,0xbaef8a32,0xbaec5adb, +0xbb05e76f,0xbaf99ac6,0xbafaa00b,0xbac7acb4,0xbb0d1dad,0xbb0aa873,0xbaa29b57,0xbb12455d,0xbb142b53,0xbac91ae0,0xbac1ee7b,0xbaae2e5d,0xba829fe1,0xbace8ec8,0xbae43bf7,0xbaee37ca,0xbad92084,0xbab7c6fe,0xba95e8df,0xba5d4461,0xba924215,0xbb27d9d4,0xba4c673e,0xb8c33fae,0x3a59bbe5, +0xbaa2b514,0xbb02ac7d,0xbb3bad57,0xba33e69b,0xba9533a7,0xbb577685,0xbbaaa0eb,0xbbb201b3,0xbb71cfe8,0xbb35eda4,0xbb0f7962,0xbb334fea,0xbb0f1c9c,0xbb056ad5,0xba876f43,0xbb52de63,0xbb679ba9,0xbab34d7a,0xbb559860,0xbb406e97,0xbabba55e,0xba718685,0xba11f901,0x38e7abdb,0xbab10455, +0xbafa295b,0xbadeb594,0xbada955b,0xba0c02b9,0x3960c93a,0x3a5cc4d7,0x3a8350d4,0xbaf5ef95,0x3ac7ec7c,0x3b12e9ed,0x3b918615,0xb908728d,0xbadf2c43,0xbb84c605,0x3a6559ee,0x3a7044eb,0xbb0e3bfb,0xbbb70b15,0xbbd0f12a,0xbb640ae6,0xbb3e5cb1,0xbb174418,0xbb7b2b8e,0xbb3625ec,0xbb260f37, +0xbaa0a88d,0xbb3cc3ff,0xba9979a7,0x39df0f77,0x38a7e3c4,0x3a1a9a22,0x397ff092,0x396ba181,0xb8868939,0x39a95f92,0xb993e595,0xbaa39e9d,0xbaebbe3e,0xbaae7635,0xba7a7b09,0xba08b443,0x39ad9813,0xbab06cc6,0xbbbcf4ab,0xb99f3e59,0x3b5d31ce,0x3bf10073,0x3a1b3d25,0xbb4afa86,0xbbdcc2d3, +0x3a8e8151,0xb8723bf9,0xbbf6afc2,0xbc6e08d6,0xbc70c7f4,0xbc08e9a8,0xbb973a1a,0xbb42a5e5,0xbb936101,0xbb5d9046,0xbb16fdd2,0xba375d7f,0x38d0f508,0x3a36b1c7,0xb8f43471,0xb6b9c3ae,0xb9239a28,0xb8d70477,0xb88905c4,0xb6e19ac2,0xb907beee,0x391a7d78,0x39896f36,0xba880f55,0xbabb210c, +0x3b82b4a3,0x3b8464e3,0x3c01204d,0x3c3f261e,0x3c9a54a4,0x3c2f3026,0x3bd2bdfb,0x3bdaed0f,0x3b6e3feb,0x3b3dff12,0x3b82f9f3,0x3b94caba,0x3c28a314,0x3c8ba13a,0x3cad91c3,0x3c8a6c4e,0x3bc65974,0xba80fa04,0xbb8f0f7d,0xbb99a10c,0xbb40e467,0x3a4e8f6c,0x3a7867e8,0xb960863d,0xb93282ef, +0xb86e4ab6,0x38126347,0x38143ddf,0x386074bb,0x37f99d7d,0x37a3d941,0x37cc46e9,0xb89f863e,0xb731d28c,0x3909dc9d,0x3ac4b78a,0x3b16a883,0x3b9b9a64,0x3baebb23,0x3b98c40f,0x3aca4017,0xbbcbeb51,0xbc211d60,0xbbe5b6f6,0xbadf7625,0x3b9c39f6,0x3c3099e5,0x3ba243f8,0xbb77d642,0xbc4eaa1f, +0xbc539ecf,0xbc14efca,0xbb74c1d1,0xba8935fc,0xb9855160,0xbaa87d5b,0x39f101ea,0x3914f524,0xba050536,0x389de1e3,0x38e60803,0x37d090db,0x35f558a7,0xb792c075,0xb7c60c04,0xb6f9632d,0xb6d7e6a1,0xb79ed4f4,0x38a47d69,0x3743f1a4,0xb92010de,0x3abb33ef,0x3c685192,0x3c8f14c2,0x3c27ab07, +0x39f99fe5,0xbc2ecfda,0x3c0285ce,0x3c8704f2,0x3c3f93b5,0x3c5f7ee8,0x3b443ca6,0xbc65f876,0xbbf83a63,0x3b17c912,0x3c77d050,0x3c6d22c3,0x3c335dbc,0x3bb16a2d,0x3b8d190a,0x3b5442b5,0x3b30c67e,0x39d94664,0xb79ed928,0x39976cda,0xb8d57edf,0xb868cb70,0xb824757a,0xb72c7ff9,0x36433278, +0x36e1aec1,0x36f5d6c7,0xb7447c1e,0x3869fefe,0xb9838a72,0x39afd42c,0xba5563c5,0x3ac04519,0xbc69b0da,0xbd372007,0xbc76bc40,0xbad2095e,0xbb971180,0xbbe53a3c,0xbc47eedf,0xbc8c3f26,0x3b8b711c,0x3c6183f4,0x3c2a5c14,0x3ace7502,0xbbcbddbc,0xbbe81c9e,0xbc0c7c5d,0xbbfb7c58,0xbbd89529, +0xbbacc9f8,0xbb9f9971,0xbb7f725a,0xbb2d48cb,0xbaca7ee5,0x3911d1cf,0x38426a75,0x38ba1d90,0x38784471,0x3802a1aa,0x370233f3,0x36ad6d50,0x36015f5c,0x375e597a,0x37c4de95,0x38e0de5a,0x38b8b510,0xb8e47230,0xb954c1a6,0x39b64461,0xba526c1e,0xbb44a4ee,0xbbd84edf,0xbc09c312,0xbbd934c8, +0xbb67eb66,0xbaafb8d4,0xbb8e1c9d,0xbbdb0f7c,0xbbd851f4,0xbbac69ce,0xbb46d694,0xbabe7aaf,0x38d28628,0x3afac17a,0x3b91a417,0x3bbb1001,0x3bd503f3,0x3bd81d71,0x3b9f3a97,0x3af682ba,0xb9a2097b,0xb92eb219,0xb9067b22,0xb9065596,0xb8588e5f,0xb81c7758,0x33514a79,0xb7e217ed,0x3779034c, +0xb93e2fb9,0x38cb728f,0xba8485b9,0x3ad93d9a,0x3914e524,0x3baeb301,0x3bf0eb9e,0x3bd2b930,0x3bdb93a6,0x3b9a1584,0x3b280eac,0xb9e32442,0xbb1a6c85,0xbb9b4a1f,0xbbaf7200,0xbbbc5e1a,0xbbb1690c,0xbbb89de3,0xbbd32bcb,0xbb8e0462,0xbb3b4bde,0xbaf1d239,0xb9de0d53,0x3a6b3ce5,0x3b09ba54, +0x3b2a65a8,0x3b136235,0x3a51792c,0x3989ea38,0x39a8d916,0x39657714,0x390331fe,0x386c4c33,0x36dc5ec2,0xb781fc98,0x3881ebbb,0x38a5b951,0x39d46274,0x3a00ac73,0x3af3c4bf,0x3b598700,0xbb4d38a4,0xbb3de940,0xbb213005,0xbb353c81,0xbb254791,0xbb146b3f,0xbb093c32,0xbb179e8f,0xbb003e02, +0xbaff83ce,0xbafe5b7f,0xbabf50f3,0xba5da6f8,0xb98f148f,0xb8cddc92,0xb7a5c5bf,0x38a65d89,0x39e1a7df,0x3a2779c2,0x3aa267f2,0x39b29254,0xb99c86ae,0xba1a6a95,0xba7bca1f,0xba5ec570,0xb9d2d727,0xb96b89fa,0xb8000db8,0x389f2e3c,0x391ee167,0xb7c5c48d,0xb84b6cc0,0xba7a9278,0xbae97ec6, +0xbb32f1aa,0xbb37c36b,0xbb7539d6,0xbb82d781,0xbb4e761f,0xbb19a129,0xbad63443,0xbaa0a9f8,0xba2aa797,0x379de3d8,0x3a3039c5,0x3ab1f219,0x3b02683b,0x3b21485d,0x3b3c8af8,0x3b65dd8f,0x3b64a970,0x3b6e9145,0x3b756a2d,0x3b7d559c,0x3b804ae9,0x3b8836d4,0x3b818d46,0x3b4094cc,0x3b1106ca, +0x3ac8f691,0x3a5aecd7,0xb8a7d759,0xba0f9456,0xba740925,0xbaaf6925,0xbae57dbe,0xbb0fb6f3,0xbb220b73,0xbb32a383,0xbb36166c,0xbb45cad8,0xbb5a7821,0x3a47ed92,0x39aafd44,0x3a258c06,0x3a440e4e,0x3a6fc87b,0x3a9b1576,0x3ab53b64,0x3ac6625f,0x3adc6b1a,0x3af3ea2a,0x3b0855f9,0x3b1a7400, +0x3b2c1ecd,0x3b3fbcc1,0x3b3db8ac,0x3b3f1d76,0x3b3f36a7,0x3b3f54de,0x3b401e59,0x3b3b5ae5,0x3b4618d2,0x3b4937ab,0x3b615bbd,0x3b19ef06,0x3b2a068d,0x3b42fd77,0x3b35373f,0x3b217a5a,0x3b10f616,0x3b00b2f8,0x3ae5f58c,0x3abe925b,0x3a8fbd02,0x3a3762c6,0x3aa98549,0x3a6b3a99,0x3b328e12, +0xbad72ac8,0xbab29921,0xbaafaf8b,0xba8ef203,0xba8e137f,0xbac72054,0xba916355,0xba7df7a5,0xb9d9a933,0xba9dd51b,0xbac2bd47,0xbb0d73b3,0xba9b4e4a,0xba910dec,0xbac53252,0xbaf0641a,0xbb012558,0xbb004928,0xbadcbb65,0xbad3d3e5,0xbada4eca,0xbaceb3b5,0xbad2314d,0xbaba7298,0xbad4ba78, +0xbaeb4729,0xbabd7763,0xbb0a1c00,0xbb03d50f,0xbaad7162,0xbaa73f1d,0xba8c6b54,0xba085bbc,0xbab3a972,0xbabef992,0xbac64762,0xbac1e97c,0xbaa9e663,0xbab7c6da,0xba633564,0xba895d98,0xbb09956b,0xba91777f,0xb9f0c5ca,0x3a84e8b7,0xba8330d5,0xbafa1579,0xbb64bc75,0xba5f5230,0xba596870, +0xbb282032,0xbb7ce8ca,0xbb8f8cf4,0xbb81adc9,0xbb3f39e8,0xbb120349,0xbb170c20,0xbade66a3,0xbaafe638,0xbab50a9c,0xbb1e20f4,0xbb05b946,0xba0f7385,0xba8b6d49,0xba67adf4,0xb9a55d6d,0xb9817a48,0xb924edd7,0x39eb30b5,0xba61b4dd,0xbae03c87,0xbab31337,0xbaab53b8,0xba2eda5e,0xba7faed3, +0x3992a439,0x39a31825,0xbad6179f,0x397d2003,0x3a672fc9,0x3b8d3e6c,0xb898082f,0xbad43044,0xbbafd1a1,0xb6c77d3a,0x3a09a2aa,0xbaf4833b,0xbb84618b,0xbba40c63,0xbb8e2dc0,0xbb4c82a9,0xbb14839a,0xbb420d0c,0xbaf4a43c,0xbadb615d,0xba617802,0xb93e763f,0x39c9dc22,0x39a8d22b,0x39a1ac46, +0x39c57446,0x3921ee2c,0x3916c91d,0x374d0744,0x373415d6,0x394566f4,0xb960dc38,0xba899beb,0xba90b854,0xba83ad06,0xbacde037,0x37225186,0xba833837,0xbb891253,0xbacf6601,0x3acb8139,0x3be0b9a5,0x3a134309,0xbb6ddfd6,0xbc11786c,0xb9b74a3a,0x3a023373,0xbbad4264,0xbc27c652,0xbc41aa74, +0xbc2123ae,0xbbc48e18,0xbb734c98,0xbb82c1c1,0xbb1e30ff,0xba722a1e,0x38e19740,0x3969b839,0xb8efd27f,0xb9228fce,0xb907766a,0xb91fc3c6,0xb8be82f2,0xb83d645c,0xb6f402ba,0xb7549de5,0xb883434c,0x3959a1b3,0x39019b1f,0xba3429ca,0x3b0aaaac,0x3b1e930a,0x3b342d17,0x3baad822,0x3c505a19, +0x3c07f797,0x3bb1fb97,0x3b4e07fe,0x3b90e02a,0x3b9cbe1b,0x3b865d6b,0x3b477bff,0x3bad8e47,0x3c1a80d5,0x3c80d079,0x3c715240,0x3beaa8c4,0x3b272639,0xba142400,0xbaf62305,0xb9c9fa6d,0x3a491bef,0xb8bdf4bd,0xb89ccc18,0x36d9e8ab,0x38b66889,0x3868f77b,0x38905ad0,0x384d7dd4,0x379fbb81, +0x3648e291,0x381b55d8,0xb735aedf,0xb8645bd1,0xb8c35eb8,0x39deb82c,0x3b025e18,0x3b2a4857,0x3b907185,0x3bc15b86,0x3b942958,0xba9d67b7,0xbb99181e,0xbbb40fa5,0xba9280c2,0x3b3e92e9,0x3bc24e22,0x3bb9bf99,0x3a4e7c43,0xbbe43513,0xbc311552,0xbc2f67e5,0xbbe79c71,0xbb874f0f,0xbaf00f3a, +0xb9881460,0x3a377355,0xb90f4b3d,0xb8a1d1ec,0x38dd7349,0xb7e9282d,0xb7d800e5,0xb828ab26,0xb7f28e76,0xb7f9a5b4,0xb75b9fc3,0xb7b66260,0x370e04ba,0xb7da6f42,0x384f32fd,0x38a1da54,0xb969954f,0x3c02e24a,0x3c3d387b,0x3bd200a5,0xba4f324e,0xbc1cad38,0x3ab7e5e9,0x3c0ea8d3,0x3c0266ce, +0x3c2d09a7,0x3b8a7f9b,0xbbfdaed4,0xbbf2a019,0xbb03408a,0x3bf6c812,0x3c4e4405,0x3c51b800,0x3c052ef6,0x3bcea2b7,0x3b7e29a5,0x3ac42805,0xb9bbd499,0x38bbea39,0x38109944,0xb89625ad,0x37a1f3b9,0x37622d2a,0x37ee93ad,0x37c34250,0x37b0e63a,0x37f103c3,0x35ecf13e,0x382f6479,0xb7b88161, +0x389da41c,0xb93021e8,0xb9ce5b45,0xbc20e666,0xbce36d47,0xbc1b2bf7,0xb99163ac,0x3b1a55ee,0x39d0785f,0xbbb40ddc,0xbc5ed1fc,0xbb3594e6,0x3bc7c07d,0x3c4ea5bb,0x3b89383a,0xbb0fa385,0xbb98e3dc,0xbbc3c44f,0xbbc8346a,0xbbc8f401,0xbbab510e,0xbba150b9,0xbb9855a9,0xbb35dfe6,0xb9324318, +0x3948fec2,0xb6160ea1,0x37d48964,0xb7f57263,0xb7bfe85a,0xb7fd259a,0xb81153c5,0xb818c7c1,0xb8021ff5,0xb8382258,0xb70db2ea,0x381682c9,0xb87ab884,0x3aa486fb,0xbc02af7d,0xbc4a0bd6,0xb98fb7a2,0x3b09e158,0xbad5ac97,0xba461868,0x3850ce52,0x390a6382,0xbafddbe9,0xbb8a7cff,0xbb8c4dd6, +0xbb851bfe,0xbb24090d,0xbaff2b59,0xb9b4d098,0x3a9cf8a3,0x3b48838a,0x3b8570d4,0x3b971efc,0x3b9e0dc2,0x3b3a4c2a,0x3932909a,0xb9b66ce5,0x37e6f847,0xb8551c7f,0x384d4726,0x38094a77,0x386d97c4,0x388f92cf,0x387581f5,0x38b3e8f8,0x385b9958,0x38b8e7f6,0xb9081b52,0x3951a074,0xbadd1347, +0x3bab1822,0x3bc6ff7d,0x3b9745ca,0x3b84c906,0x3b32ffc0,0x3abe7827,0xba108e2c,0xba9ff416,0xbb5d805a,0xbb850450,0xbb952bdf,0xbb8b47da,0xbb85d3a7,0xbb85200d,0xbb06323e,0xba5fe39d,0xb98836ac,0x3a89c7e5,0x3b071338,0x3b480d19,0x3b406362,0x3acfe98c,0x39087ccf,0x395e4190,0x36c2c434, +0xb85d1f7b,0xb8b66927,0xb8f30037,0xb910e676,0xb91cf4ca,0xb9163afd,0xb95bb068,0xb7b7baef,0xb830bf84,0x399dbf74,0x3b15d113,0xba83299f,0xba00530a,0xb9de3d54,0xba3fb717,0xba719c4f,0xba7bd418,0xba75a082,0xba95e977,0xbaa3f2c3,0xbacf72d6,0xbb02f906,0xbb0e439c,0xbb139d86,0xbb21ade1, +0xbb081dca,0xbae359c8,0xbab557ff,0xba8be0e9,0xba6f57ad,0xb9cd0db8,0xba6d8c75,0xba7fb4f9,0xba2217f2,0xb9ac458f,0x3824314a,0x39475237,0x395603a7,0x3992f950,0x39a62605,0x39ba895c,0x39baf3b9,0x39ffcf2c,0x39a7d6f8,0xb8743287,0xb9ac6dd2,0xb9e1e9e1,0xbb321e41,0xbb20891b,0xbb0629a1, +0xbadc289c,0xbaae05c7,0xba9321cf,0xba6aedd7,0xba1bcb25,0xb98bd39e,0x38ce03f3,0x39f0b00f,0x3a3b933f,0x3a798675,0x3aa328b9,0x3abad915,0x3ad2262c,0x3aecdd06,0x3b02cb1a,0x3b0ce4d8,0x3b237c06,0x3b1a9a53,0x3a9963fb,0x39d8b614,0xb940ea1b,0xba01dad4,0xba22a644,0xba2e1432,0xba497e99, +0xba681df6,0xba846c49,0xba8eae0b,0xbabde920,0xbaec11d7,0xbb0c2a76,0xbb1f8d38,0xbb1f0e66,0xb9b0576b,0xba000a17,0xb9d716eb,0xb9b18247,0xb98876b2,0xb91382aa,0xb81f310b,0x37d064b8,0x38a51918,0x390f5787,0x39646215,0x39b1ed2e,0x39f8c434,0x3a20f25a,0x3a2fb8a1,0x3a414e43,0x3a4e8122, +0x3a609473,0x3a72b3f8,0x3a71275c,0x3a8e984d,0x3a9a09fa,0x3abf6b20,0x3a194fad,0x3a1ff821,0x3a0f1122,0x39b17a57,0x38fd1b42,0xb864d42b,0xb97a11c5,0xb9d2a0a5,0xb9fe9042,0xb9fc8f91,0xba0a4abc,0xb911a31a,0xb99c023e,0x3a05fe63,0xbaa25994,0xba9397d8,0xba9866b2,0xba749580,0xba6b705d, +0xba8c0337,0xba7bc7bf,0xba655af2,0xb9ca3e29,0xba7ceaa7,0xba9a51ee,0xbaddb853,0xba88342b,0xba7947e0,0xba95a872,0xbaa1aa20,0xbaae2262,0xbac770f6,0xbaa8279c,0xba9db7cd,0xba90d02c,0xba8b3447,0xba8c317b,0xbab622ff,0xbaa02765,0xbaa8f9f4,0xba9068a0,0xbaaa6509,0xba9c2e20,0xba60aca8, +0xba613b57,0xba3d8793,0xb9a8b2d4,0xba8579fb,0xba95723d,0xbaa649aa,0xba97230d,0xba8d5347,0xbaaee16d,0xba5b0fef,0xba64244c,0xbaa6a9e9,0xba86967b,0xba2c052e,0x3a006343,0xba79d0b7,0xbad69043,0xbb38dfcd,0xba89e011,0xba5b8929,0xbae3ae8b,0xbb0fe026,0xbb2dcbb2,0xbb465021,0xbb1a0777, +0xbaeb5a50,0xbabeb5d2,0xba742636,0xba4aa34b,0xba84a9d3,0xba1084a9,0xb9551dfb,0x391625f1,0x3855d3c9,0x3881e0c8,0x38da5635,0x38b5705c,0x382b1664,0x393ad8cf,0xb8b439d6,0xba1acb16,0xba705812,0xba7135e3,0xba4a44db,0xbad41878,0xb9a67999,0xb989c9cd,0xba522b90,0xb9ddf663,0xb94a4dfc, +0x3b28e9c4,0xba028776,0xbaca263d,0xbb8c7c29,0xba7d0d08,0xb9a0a154,0xbabae23c,0xbb056bf3,0xbb336914,0xbb618f00,0xbb1ff0af,0xbae20b80,0xbac42d3e,0xba37031a,0xb9cb28c4,0x3908bad6,0x398d874b,0x389dfb4f,0x36286e25,0x374b37c5,0x37653bc8,0xb7bc28c0,0xb69d5dd1,0xb7029b28,0xb880eaad, +0x38a1eb6e,0x3960dfca,0x3812f192,0xb9f22ae0,0xba187354,0xbb0be917,0xba05c6a3,0xba3c472b,0xbaeecdc1,0xbac4a944,0x3959b037,0x3b85ff81,0xb9cb4278,0xbb61537b,0xbbe7a433,0xbad1327b,0xb9827da6,0xbb4babea,0xbba5b1d4,0xbbdabcc0,0xbbf8ca1a,0xbbab4c66,0xbb5a9994,0xbb16b09f,0xba4cc3ce, +0x386c0662,0x37605657,0xb9107bbd,0xb84dde63,0xb7055e29,0xb7986c29,0xb74d4d35,0x3774151f,0xb68bc6da,0x37195414,0x3732d5df,0xb812554d,0xb8e0f995,0x389dcbde,0x386d295f,0x3a2d6e31,0x3a9d6934,0xb8532bcd,0x3a91db11,0x3bc5811f,0x3b8fd3f2,0x3b3d0221,0xb9d15bf5,0x3b75c211,0x3b9873f4, +0x3b2693b0,0x3a909339,0x3aa4c3f8,0x3b679407,0x3c075998,0x3c16b7a0,0x3bd1fe22,0x3b89c78b,0x3b047fe1,0x3a2c3ffc,0x39d683ef,0x3594f8bf,0xb747344a,0x385bf16b,0x382bf0f2,0xb64d2c9a,0x374e4f60,0x36e747a7,0xb594cafe,0x36be1c5f,0x366ca829,0xb7b256e7,0x381f3b49,0x37bdbf10,0xb7b2c56a, +0xb89120d3,0x3991f2e4,0x3ad0450a,0x3b358407,0x3b9bc8f5,0x3b967607,0x3ad81a37,0xba5c7308,0xbb584d0c,0xba51788b,0x3a9ce03e,0x3b36a0bf,0x3ba04e81,0x3b3d462c,0xbb1818ec,0xbbd5a70f,0xbc0a2f79,0xbbeee33b,0xbbafb5e5,0xbb4fe1e9,0xba6c49ba,0xb8049207,0xb8ea29a0,0x3841a679,0xb837280a, +0xb7299bce,0xb6f193dd,0x33da4844,0xb6c43719,0x3602a002,0xb70bb1d9,0x3783d240,0xb8070a54,0x38723ca0,0xb905386e,0x3967fb33,0xb9b5da58,0x3b010c5c,0x3bac5348,0x3b321451,0xba8bb13c,0xbbc9d2f3,0xbb3e696f,0x3ac7e465,0x3b85a40b,0x3bbdd3a1,0x3b5fa243,0xbb2b9ea8,0xbbb01427,0xbb6d92c7, +0x3aed5808,0x3bee48ad,0x3c1a1f44,0x3bfcc501,0x3bc09b3d,0x3b6dd865,0x3a865e62,0xb78fcbb3,0x38a397da,0xb893783a,0x38411f10,0xb6257a2a,0x3757e535,0xb3a4b318,0x3674b8ec,0x369695ad,0xb59a34f8,0x377ff2bc,0xb7591e1d,0x381ac952,0xb89a4208,0x39823455,0xba40e233,0xbb14498d,0xbc44cff3, +0xbbce3ffa,0xbb002b19,0x3bb76679,0x3b0a0da2,0xbb040829,0xbbd441e8,0xbbae6b61,0xb94119da,0x3c0ae47a,0x3ba6029f,0x3ae542c9,0xbb04071a,0xbb3a88d4,0xbb653dac,0xbb853b69,0xbb66ddec,0xbb49c2fd,0xbb48a106,0xba6c42a2,0x39a09801,0xb8a78ebb,0x37327ec0,0xb7cfe3dc,0x3585eace,0xb6f5e694, +0xb66d2dfd,0xb6e99a95,0xb50175df,0xb79eace9,0x3774dae7,0xb8a3e68e,0x38d7c901,0xb9cc2728,0x3a8cc37b,0xbb8cc4d9,0xbc29cab6,0x3b90c716,0x3c01ae97,0x3bbf5173,0x3ba0215c,0x3b7156d8,0x3ae199fc,0xb9ae8cfe,0xbb15412d,0xbb1b5fed,0xbb503bde,0xbb1f887d,0xbb0e3e01,0xba4fc635,0x395934f3, +0x3a903890,0x3b067610,0x3b241433,0x3b4b57c0,0x3a8484e2,0xb9d3ceb3,0x389ccffd,0x36085ed5,0x37cedc4e,0x36e1100f,0x3740488d,0x37403f06,0x37003f7f,0x37a57235,0x359adfd6,0x3825e89b,0xb75597c0,0x3903dae2,0xb92aadb8,0x3a3bd168,0x3b3960a2,0x3b408643,0x3a50b90d,0xb9b876de,0xba488964, +0xbaa39bea,0xbaedf629,0xbab779d5,0xbb0449ab,0xbb0fe0d2,0xbb24324c,0xbb1bcf8a,0xbb0dedfa,0xbadf8b1f,0xb9d0096e,0x39e70650,0x3a5264ed,0x3ad34aba,0x3aff1459,0x3b268bea,0x3ae97d9b,0x393f8773,0xb7e04c19,0xb8579cd2,0xb81b23d0,0xb7a74ccc,0xb7a0b8a0,0xb7a2c742,0xb7c93a7c,0xb7bf3f14, +0xb81e0cf4,0xb7a4145d,0xb8dccdda,0xb8430184,0xb948bc75,0xb900011b,0x3a137385,0x3aa7b078,0x3a8dc7c8,0x3a68366f,0x39dea03a,0x38aeb50c,0xb9241a3b,0xba01f920,0xba7b72a0,0xbabc8095,0xbb01d327,0xbb0942fe,0xbb0fe4e4,0xbb1e8f65,0xbb0c76db,0xbaf8758b,0xbad670c9,0xbac782f9,0xbabd7a8d, +0xbaab74b3,0xba989277,0xb9f15740,0x387829dd,0x38ff52e2,0x386b4349,0x37c105dd,0x37d4b14f,0x37d75197,0x381222d5,0x37edc392,0x3840fd79,0x37ea0582,0x39058e1d,0x395802d5,0x395fa5e9,0x39e21549,0xbac82c3a,0xbaaccec7,0xbaa82917,0xbaaa706d,0xbaa4bd07,0xba9a8191,0xba99b19d,0xba940b76, +0xba830e14,0xba63c815,0xba49cd81,0xba3e1498,0xba3ba888,0xba39365c,0xba0e16e0,0xb9d7b42f,0xb9737541,0xb8b2c659,0x389ee060,0x39af6d3a,0x39b07704,0xb9bba9db,0xb9eebb75,0xb9a7a8d8,0xb8f27d16,0xb7486590,0xb58a2da5,0xb7bcde1a,0xb789ff83,0xb7b5bd6c,0x369a5a49,0xb85bba0f,0xb94b4736, +0xba2146b9,0xba7a5f3a,0xba8c7513,0xba60b1c2,0xba52d8b2,0xba5e2027,0xba55bbcd,0xba524f80,0xba5597c1,0xba53561c,0xba544ecb,0xba5d05d8,0xba6528a8,0xba6724e1,0xba67d2ac,0xba61c214,0xba5fb671,0xba49fca2,0xba3a0c21,0xba2d1f62,0xba1a30cf,0xba099da2,0xba04013d,0xb9ba25c1,0xb9952592, +0xb9717fbb,0xba2d8b27,0xba2e1a2e,0xba39fe10,0xba4f8565,0xba5d71a4,0xba6dccb4,0xba7dc6e4,0xba88b4c8,0xba8ab896,0xba8b8a97,0xba879637,0xba811f4e,0xba77c0b2,0xba557260,0xba0a6c6d,0xba07e667,0xba057951,0xb9e4a186,0xb9d0b985,0xb9d3dfb0,0xb9e1ce98,0xb9d9622c,0xb9749587,0xb9e784fd, +0xba075f3d,0xba31cf09,0xba00905e,0xb9ee69ad,0xb9ff8b4a,0xb9fd7dbf,0xba069014,0xba23a95e,0xba0b224e,0xba0242f1,0xb9dc3a94,0xb9d4f61d,0xb9f4c46d,0xba42247f,0xb946f3c5,0xb94a603a,0xb90f9050,0xb9262cc8,0xb91a90fe,0xb8e70531,0xb8ed3f2c,0xb8c82675,0xb7dbdd14,0xb93ff7e9,0xb963793a, +0xba2c7e45,0xba122474,0xba10fd40,0xba21643a,0xb9cc487c,0xb9c3f9f8,0xb9c55b41,0xb9ea16c1,0xb9be2e45,0x37b59739,0xba017dc8,0xba420065,0xba90dec4,0xba1a38ee,0xb9fa8581,0xba31b295,0xba3f4a80,0xba6bc6cf,0xba99c95d,0xba7e51d4,0xba449a1e,0xba0287b2,0xb9a67f05,0xb8152e57,0x385d6880, +0x39196949,0x388e47e1,0x38a71600,0x3881c854,0x38963205,0x385a0ae4,0x386deb43,0x3825039e,0x383260ea,0x387c824c,0x390b944f,0x381f6ed8,0xb8e55058,0xb8eba5d5,0xba7e3d11,0xb978f187,0xb96a170f,0xb8a8efd8,0xb98fadfd,0xb99d6498,0x3a30f0d2,0xb9cb3f57,0xba417438,0xbacebc61,0xba35514c, +0xb9d5e35f,0xba1b402c,0xba16d67d,0xba548f6d,0xbaadd32a,0xba764ab6,0xba2dbe6f,0xb9ce19db,0x37935196,0x38c5ae89,0x36cbd90f,0xb84be8c4,0xb7c24026,0xb7ccdfec,0xb7c762b8,0xb7985c7d,0xb7718d5f,0xb74addcb,0xb70edcd0,0xb748aaee,0xb7b735bf,0xb827a1a5,0x37d43bcd,0x38ee2be5,0x39269a2d, +0xba8f023b,0xb9b229ed,0xb961d0f2,0xb9321532,0xba0d9bdf,0xb9293608,0x3a918f5c,0xb9fba129,0xbaca7b59,0xbb2abb1d,0xba896bb7,0xb9f5ff56,0xba88f04d,0xbaae5088,0xbb03779b,0xbb3c9402,0xbb0e5aa6,0xbabf735c,0xba1de97a,0x37b319b3,0x370419c9,0xb8275453,0x3808f801,0x3716ca6e,0x3741012d, +0x3780f08d,0x375e079b,0x3700a8ae,0x37885343,0x372e6a67,0x37586691,0x378c2a6b,0x37b7dbe7,0xb803fe20,0xb7f66c72,0x37847f43,0x398df138,0xb9d0f66f,0xb90a307e,0x3aac4168,0x3a98cb3f,0x3a5103ac,0xba724c2a,0x3ac9f90c,0x3b078401,0x3a6d9f7e,0x399bdf40,0x384e98f9,0x3a45d437,0x3b0da012, +0x3b40028b,0x3b45578a,0x3b1b84a6,0x3ad49cd2,0x3a77733c,0xb8374ea8,0x359d9718,0x37748945,0xb68fd01a,0xb74ac227,0xb692eca5,0xb701a406,0xb6810a59,0xb5ee5c53,0xb6ce5f38,0xb6ec09b2,0xb5aa380d,0xb7a5a76a,0xb66875a8,0x37a88f22,0xb78f764e,0xb994c357,0x3a326f87,0x3a8c7ede,0x3af13caa, +0x3b068133,0x3abadedd,0x3a006d63,0xba95bab6,0xb9d20192,0x3930eb94,0x3a518406,0x3b04693f,0x3acffb58,0xb9952c05,0xbb0525a6,0xbb518f36,0xbb5b2333,0xbb368617,0xbaff6a9b,0xba584f2d,0x38a1037e,0x371a3d34,0xb6cee89a,0x36ae953a,0x36c28e54,0x36c79c23,0x3672164e,0x368f2860,0x36130c05, +0x3687f8fb,0xb53bffff,0x379b4d3b,0xb6fcef09,0x3821bbe4,0xb88d6041,0x39094999,0xb8bbff2d,0x3a6a2ca0,0x3a0575b2,0xba0d8f0c,0xbb07004a,0xbb11e268,0xba6035c8,0x3a97330a,0x3ad83f24,0x3aa60c48,0xb98486c8,0xbb0a5705,0xbb048a63,0xb99c07e9,0x3aeecac9,0x3b49a154,0x3b5010f7,0x3b235cbb, +0x3ad7b83e,0x3a060efa,0x3715ef7d,0xb7f10083,0x37c10466,0xb6f91a00,0x34a15708,0xb64a6a7f,0xb5f28b58,0xb62b413c,0xb6595d68,0xb40e3fd4,0xb6e0d05d,0xb54e6c2d,0x36827a76,0x3672d90b,0x36b16314,0x37c0a855,0x3a31ae75,0xbb3374f1,0xbb22a209,0xba91d87a,0x3b3c3e08,0x3aa35c97,0xb94a0431, +0xbab641c2,0xbb263ff4,0xba99190e,0x3b2670e9,0x3b2f7ca0,0x3b03fbcb,0x37dc7612,0xba075965,0xba826bb8,0xbaa2b643,0xba9590d8,0xba7aa01d,0xba4a30a8,0x38497aa2,0x3791758f,0xb76e6305,0x36c42b91,0x36a80505,0x36283073,0x367a0ee0,0x367c62ea,0x363da13f,0x3647eb63,0x369a0e11,0x35ae0529, +0x3664b3cd,0x36a24162,0x37604b8e,0xb9437683,0x3917ae41,0xbaf22664,0x3b5a44ca,0x3b985c69,0x3b99f74f,0x3b79a9c5,0x3b4219bf,0x3ae8e26d,0x3a14c5df,0xb9eb9531,0xba401ec3,0xbaa70d75,0xba977b23,0xba8b375f,0xba0f9d28,0xb9635e38,0x3809d641,0x39fe515d,0x3a32f6d6,0x3a82fb20,0xb90b75b0, +0xb463035d,0x37f579b0,0xb74befff,0xb654ef15,0xb6c7ea4a,0xb6b09b0c,0xb6a6eb12,0xb67ec714,0xb6c7c021,0xb6df3e24,0xb6c3c64e,0xb7961564,0x37e4e2a0,0xb85e90bf,0x389e7176,0x39515c8b,0x3a0ad2f0,0xba3f85d0,0xbaabd1f6,0xbab51684,0xbac25aa5,0xbab8fbab,0xba822b5f,0xba5baa00,0xba31b19e, +0xba28d577,0xba201a93,0xba0a97c8,0xb991d03b,0x38dfcf69,0x39e20229,0x3a211571,0x3a652119,0x3a5e0ecd,0x3a8c2297,0x391d4996,0xb8c136d8,0x37efc684,0x35cd55d7,0x37ca4ffd,0x371bda34,0x3745165e,0x370c4b95,0x374adb75,0x3739b9b3,0x379236b7,0x371fc4dd,0x38275750,0xb7b5576b,0x38bcec8c, +0xb943a084,0x398fc33f,0x3a9810eb,0x3a6b213c,0x3a67890d,0x3a226e3c,0x39c433d4,0x39137461,0xb8f7838c,0xb9cfeda5,0xba2bf147,0xba71d72a,0xba703378,0xba6ecee6,0xba7978dd,0xba5de5d5,0xba476244,0xba2dbc51,0xba28ea58,0xba17c7b1,0xba27cf42,0xb93d0149,0x390d4676,0x37689aef,0xb80a70d1, +0xb7be6384,0xb7c50db2,0xb7bd9cfa,0xb7cb6839,0xb7f2b42d,0xb7ddc13b,0xb8010179,0xb7f6c7ca,0xb8120276,0xb8235058,0x376eb8ad,0xb7dc6463,0xb9a9961a,0xb9c90705,0xb9ee5fcc,0xba07ff70,0xba1307af,0xba12496f,0xba1afc74,0xba21ea46,0xba1a798f,0xba145b9a,0xba15364d,0xba1a3ced,0xba272ba8, +0xba36a899,0xba2a042f,0xba20e0e1,0xba109a07,0xba081afe,0xb9e556b8,0xb9d8cc19,0xb9c94c5a,0xb8e07fe2,0x3884ebb2,0x38eb2ca7,0x38b468b6,0x38bd44af,0x3898be26,0x38bbdfc9,0x38aed516,0x38bc22eb,0x3892db4d,0x38df9206,0x38bb94a4,0x38eaae3d,0x383c8c45,0x383afdc9,0xba06e40c,0xb9c69e2d, +0xb9d8ab46,0xb9db5201,0xb9e10bd3,0xb9ef6ec4,0xb9f70499,0xb9ff83fd,0xba0800ec,0xba1082ef,0xba15f846,0xba1d3642,0xba2026ab,0xba2525a3,0xba1c59b1,0xba17a469,0xba13b072,0xba0d0e91,0xba0a91fb,0xb9fbcc9d,0xba04ede4,0xba087b18,0xba175e18,0xb9546163,0xb952b1aa,0xb9328656,0xb93b913a, +0xb93eb78b,0xb941b427,0xb9403fd5,0xb9409deb,0xb9402fcf,0xb9596b41,0xb9444e20,0xba1f51db,0xba114a6a,0xba1f5bf4, }; -const uint32_t orange53_rom_AlphaR16[578 * 43] = { -0x3f1e923e,0x3ed6aeaa,0x3ee862da,0x3ec3cfdc,0x3e86282a,0x3e228e80,0x3eb9f0a2,0x3e8d9ec4,0x3e0e7725,0x3dfb02e8,0x3dfc1c20,0x3e0d53be,0x3e05a3b3,0x3dcc44d3,0x3e084a2f,0x3e85b884,0x3eae5e87,0x3df92009,0x3e80779c,0x3eaa4837,0x3ed7059f,0x3ecad511,0x3ed0f992,0x3ed036a6,0x3ed8e1a7, -0x3edc2829,0x3ed9eb5e,0x3edc0b40,0x3ee07f4c,0x3ee040cf,0x3eecd142,0x3ee713ce,0x3ef41055,0x3eebd6ee,0x3eeac350,0x3ee3bbe6,0x3edcfcce,0x3f099376,0x3f075726,0x3e8566ca,0x3ec9ef4f,0x3e91db5b,0x3eb83c3b,0x3eb6c203,0x3ea00aa9,0x3eb4b2f9,0x3ea11487,0x3e983d15,0x3e947858,0x3eac6a9c, -0x3e9c76e1,0x3e43794b,0x3ebbbd27,0x3e967b41,0x3ead263a,0x3e90f05d,0x3eeac0a0,0x3eedb1b3,0x3ef5fd01,0x3efdde2a,0x3efac2d0,0x3ef9757b,0x3f0bc835,0x3f144cf0,0x3f1aa65d,0x3f1826a9,0x3f28390e,0x3f1d452b,0x3f2e49e5,0x3f2ad190,0x3f288da0,0x3f1bdcfb,0x3f0d4218,0x3f17f07a,0x3f07c3a2, -0x3eb3b592,0x3ed91ecb,0x3e95c9db,0x3e9f7222,0x3e6714da,0x3e986ae9,0x3e4af5d5,0x3e9588f8,0x3e2f0c36,0x3ea5df4e,0x3e460dca,0x3e7a169c,0x3e5e2757,0x3e851a24,0x3e940851,0x3e7d348a,0x3e984e9e,0x3ebea39a,0x3eeb3414,0x3eef2ec9,0x3f053053,0x3f091a6a,0x3f1222a6,0x3f1ac1de,0x3f205ffb, -0x3f2daca8,0x3f3a7e38,0x3f45e62c,0x3f546223,0x3f62034e,0x3f59e51e,0x3f4d7180,0x3f340e5d,0x3f257c76,0x3f17fe93,0x3ef95d3d,0x3e8365ac,0x3e8f8c2b,0x3e642a0a,0x3e4685a1,0x3e2baaf0,0x3e378728,0x3e1dfd94,0x3e042f3f,0x3de54d5e,0x3e080ca8,0x3db99324,0x3e224235,0x3dca5a31,0x3e1dbe8c, -0x3e47900b,0x3e2bd997,0x3e538f57,0x3e88b333,0x3ed4d364,0x3ecd2f01,0x3efe53c9,0x3f0521e2,0x3f11bdfa,0x3f1ccc4a,0x3f2fd7e6,0x3f3c70a6,0x3f4f340f,0x3f617794,0x3f708d63,0x3f8399cf,0x3f80cffc,0x3f6f2fc6,0x3f464fb8,0x3f250a15,0x3f268fd9,0x3f098eeb,0x3e92b2bb,0x3e97c7ad,0x3e590cbd, -0x3e3cf8d2,0x3e084baa,0x3db72713,0x3d739f9e,0x3d2afa79,0x3d83e8db,0x3d1c8620,0x3cd9592a,0x3cb50827,0x3d5024b1,0x3d92109e,0x3db15aed,0x3e451d97,0x3dbd7f4b,0x3e91f9c2,0x3ec00a99,0x3edfd9c5,0x3f03a206,0x3f0d04dd,0x3f224808,0x3f2eaebd,0x3f410186,0x3f59221e,0x3f6d326a,0x3f852f6f, -0x3f917d3b,0x3f9e4dcf,0x3f9ba2c2,0x3f8e21be,0x3f64190d,0x3f3dfc61,0x3f31fa91,0x3f247573,0x3ed58955,0x3e95b8c3,0x3e7e2ff2,0x3e1fa95b,0x3e48bc09,0x3dfbfff3,0x3de95489,0x3da82e83,0x3db21d67,0x3cdf981b,0x3d77c68c,0x3d72414d,0x3d9be0c5,0x3e000b6b,0x3daa2075,0x3e4c6cfc,0x3e814003, -0x3eca0c1d,0x3f0bc467,0x3f234470,0x3f4d7a91,0x3f65418d,0x3f7a043b,0x3f90b97d,0x3f9c34ed,0x3fa36bbe,0x3fa72252,0x3fb336e5,0x3fb03c8c,0x3fa1d720,0x3f92e03a,0x3f8a0175,0x3f80af7d,0x3f605e81,0x3f5f6b84,0x3f0b0db6,0x3e82ec0a,0x3eee9898,0x3e762405,0x3e8b7dd8,0x3e398bc1,0x3d979f18, -0x3df31b62,0x3d71effd,0x3d5dd5eb,0x3d92b308,0x3d7278bb,0x3d8a0bde,0x3da4f988,0x3e1e28bc,0x3e3e56eb,0x3e87fd27,0x3e69c210,0x3eb7849e,0x3f116456,0x3f1dff70,0x3f3a2a3e,0x3f53e9d5,0x3f69c495,0x3f83824c,0x3f8a72c0,0x3f99f1f4,0x3f9e5c7f,0x3fac6000,0x3fb23f97,0x3faa77ea,0x3fabb285, -0x3f9e2cfe,0x3f926e06,0x3f7552e1,0x3f877cbf,0x3f329de5,0x3f1ab20c,0x3ed904d3,0x3ebb9c9d,0x3e975b99,0x3e538392,0x3e137a68,0x3dac18ee,0x3da01f49,0x3dd98b8b,0x3dab4c9f,0x3da9bf72,0x3e03a2a9,0x3df6b6e3,0x3e24f0b2,0x3e581c89,0x3e7c4c95,0x3e979181,0x3ed66706,0x3f0383f8,0x3f13a739, -0x3f31c1bc,0x3f44c56c,0x3f5aa37e,0x3f8590e4,0x3f90b3ab,0x3f98f982,0x3fa37378,0x3fa8bb2c,0x3fa62179,0x3f99f14b,0x3fa2db2c,0x3fa0bf04,0x3fa4a2d6,0x3f8eba2d,0x3f94ad55,0x3f636bc2,0x3ec2fb79,0x3f125b43,0x3e9754ea,0x3e7c1ca4,0x3e33b457,0x3e22a3b9,0x3deaaec9,0x3e1960b6,0x3e3984e9, -0x3dc781e8,0x3d99d4b3,0x3e0b66a8,0x3e3bea75,0x3e392044,0x3e8c885b,0x3e7c9dc6,0x3e755d23,0x3e94c67c,0x3ee77cbe,0x3ef39737,0x3f21da4b,0x3f387ac0,0x3f5bbe92,0x3f758107,0x3f8e89f0,0x3f9c64e2,0x3fa3a6bc,0x3fa606a0,0x3fa26a07,0x3fa5f07b,0x3fa32055,0x3fa4a83c,0x3fabcbe4,0x3fa15850, -0x3f99fefa,0x3f6abb08,0x3f256581,0x3ee378fe,0x3e9f2f81,0x3eaa119e,0x3e4cad03,0x3d60a505,0x3e11cecc,0x3e05db4f,0x3e538006,0x3e1a2653,0x3da0fa90,0x3e2190ce,0x3e1b2da1,0x3e290717,0x3e54d072,0x3ea683e3,0x3e974f33,0x3ee763dd,0x3ee80a6b,0x3f00ded5,0x3f148644,0x3f3a35ee,0x3f5b0353, -0x3f741636,0x3f881d64,0x3f952ee5,0x3f9d10cc,0x3fad0708,0x3fb8e92e,0x3fb62e32,0x3fae12a0,0x3f9c3d9f,0x3f96e1b5,0x3f9e3041,0x3fa23d03,0x3f6d8abf,0x3eff7970,0x3f10918b,0x3ebd5706,0x3e80b3d9,0x3e966f42,0x3eba9b59,0x3e326a28,0x3e4b7aba,0x3e08232e,0x3e11708e,0x3e01b7c4,0x3e4ed67d, -0x3e4a32db,0x3e657b22,0x3e95f4d4,0x3e874811,0x3ebe4c77,0x3ec2167c,0x3f15df2a,0x3f06255e,0x3ef6cb69,0x3f1bc5f3,0x3f36e4bd,0x3f6310f2,0x3f83595d,0x3f91b64b,0x3fa13780,0x3fa243cd,0x3fa22079,0x3fb0884b,0x3fa9a6bb,0x3fa899c9,0x3faad1ab,0x3fa45e00,0x3f8c7232,0x3f77733b,0x3f1bbe4f, -0x3f0532a9,0x3ec89117,0x3e9808a9,0x3e95b8cb,0x3e3c65ed,0x3e843832,0x3d6847da,0x3eac6ba3,0x3dc91df3,0x3e352c66,0x3e30330a,0x3e4c0159,0x3e9037da,0x3ec4b5b8,0x3eecc742,0x3e891a03,0x3f1e1efd,0x3f2c5772,0x3f181095,0x3f11488f,0x3f1c2845,0x3f320fe0,0x3f4c1edb,0x3f5f63e8,0x3f78db25, -0x3f87eae5,0x3f8d598c,0x3f987c81,0x3f9b4797,0x3f9cdb80,0x3f977db2,0x3f910b2e,0x3f920b60,0x3f89f1a8,0x3f1ff1b4,0x3f323044,0x3f0aaf45,0x3ed5a26e,0x3f002dda,0x3e9bd13e,0x3e87e4d5,0x3e6b2b9e,0x3e9ef71f,0x3e5181e6,0x3e960af9,0x3e0f6c9b,0x3e9561b9,0x3e7a9539,0x3e8d2c48,0x3e89bc4d, -0x3eb0b9d7,0x3efa66ca,0x3ec75e86,0x3f2f45d7,0x3f0e417f,0x3f1d471f,0x3f1e959e,0x3f2c5259,0x3f369f43,0x3f4a2a13,0x3f5ab460,0x3f6b7fcc,0x3f7e52d1,0x3f84d2d2,0x3f8cbfa3,0x3f8e5de2,0x3f8b1e01,0x3f8c075b,0x3f74c585,0x3f6037f3,0x3f59efe6,0x3ed8ea8e,0x3f1a4e71,0x3ed492e4,0x3e93a9bb, -0x3e9ffe8b,0x3ebd5b98,0x3e9c2009,0x3ebebabb,0x3e56105a,0x3f061059,0x3e9371b0,0x3edde053,0x3e655f4f,0x3ecf28c9,0x3ecf0e82,0x3ee4e43f,0x3e7bfb7a,0x3f15fb0e,0x3f287961,0x3f1c22fe,0x3f24b5cb,0x3f254fbf,0x3f2e6728,0x3f337557,0x3f491a02,0x3f5822a3,0x3f676969,0x3f6ed64f,0x3f7ac2bd, -0x3f82ae99,0x3f7b2140,0x3f798a94,0x3f7d86b9,0x3f6434c2,0x3f46a612,0x3f5960da,0x3ebc8541,0x3f2cfea3,0x3f1f4ccb,0x3f1fd924,0x3f34462e,0x3edec67d,0x3f25deaa,0x3ef32314,0x3ef32314,0x3ed1f587,0x3f0665f3,0x3eeedc2d,0x3f074f84,0x3f084d71,0x3eb07a56,0x3f1caf4c,0x3e82d665,0x3f3c1935, -0x3f323941,0x3f3ddd1c,0x3f3f8120,0x3f44d777,0x3f434bf9,0x3f3cc3c1,0x3f502827,0x3f4c332a,0x3f53d98f,0x3f621975,0x3f5adf77,0x3f6a631e,0x3f69ea44,0x3f4b8457,0x3f4e8f3e,0x3f590fa2,0x3f2afc09,0x3f38c572,0x3f0da4d8,0x3ea6d4cd,0x3e065cb7,0x3f0db688,0x3ec5c253,0x3df8b252,0x3d92169a, -0x3dfcd1c8,0x3e23139b,0x3e119363,0x3dc5eb82,0x3dc41c18,0x3ed289eb,0x3f14a014,0x3e128889,0x3ec45d64,0x3f12868e,0x3f313aab,0x3f221cb2,0x3f26782a,0x3f2646d9,0x3f27d0b6,0x3f27e24e,0x3f25c595,0x3f2ba562,0x3f2ae3ed,0x3f2f9984,0x3f325530,0x3f310ee7,0x3f367b9c,0x3f34ca95,0x3f2fee1a, -0x3f33035e,0x3f318978,0x3f8129cf,0x3ecefbb2,0x3e816713,0x3e5e1860,0x3e9600af,0x3ebc57f9,0x3edb205b,0x3e87ea11,0x3eab8122,0x3edc5a46,0x3edbdc6f,0x3edcb198,0x3ed3e438,0x3ed3c16d,0x3ee05746,0x3ed74fe2,0x3ea94921,0x3e8f1e0f,0x3edc7b9e,0x3eb74373,0x3e97b604,0x3e5d9ab5,0x3e765727, -0x3e718839,0x3e6a7e82,0x3e70790f,0x3e71d437,0x3e707f75,0x3e6ef3bf,0x3e70305b,0x3e6af59a,0x3e70abbc,0x3e657afb,0x3e6adf08,0x3e706be4,0x3e7a5a71,0x3e7e21f1,0x3e795009,0x3eb296de,0x3eab1aee,0x3f09eceb,0x3eba3a3c,0x3ed9c6a2,0x3eb1cbfb,0x3eb92ba0,0x3ebed32f,0x3e927126,0x3eb91841, -0x3ebc6438,0x3eb42a1c,0x3eaa5920,0x3ebbf4e5,0x3ed46204,0x3eb25921,0x3ec3e3fe,0x3eb9afec,0x3ed60a76,0x3e9c28de,0x3e9c2ca1,0x3e9dc820,0x3e93a918,0x3e903724,0x3e8c54d1,0x3e9bc69f,0x3e9f2abb,0x3e9e7da6,0x3e918b45,0x3e9a12a1,0x3e86bbd2,0x3e8d2e25,0x3e989b92,0x3ea4e322,0x3ead1174, -0x3eaf5fea,0x3ec02462,0x3eda80dd,0x3ef8e32d,0x3eb79232,0x3ec7fad5,0x3eb6b244,0x3eb63ff2,0x3e8d488a,0x3e9f0d6c,0x3e750318,0x3ea5e301,0x3e6f3390,0x3e98ca35,0x3e86a83f,0x3e9e8889,0x3e945a1d,0x3e9c2751,0x3eb4c92f,0x3eba159f,0x3eafec80,0x3e9579a5,0x3ea1274f,0x3e90eb14,0x3e927511, -0x3e905577,0x3e9d1508,0x3e9894b7,0x3e997a52,0x3e98f111,0x3e8cbd67,0x3e890345,0x3e7a689e,0x3e9744f8,0x3eab1860,0x3ec1bea9,0x3ecb04e0,0x3ee4726e,0x3efcbe4b,0x3f07e48c,0x3ed8cd5a,0x3eb5cee9,0x3ea6348d,0x3e981e60,0x3e6a668a,0x3e4e0f4c,0x3e4d6182,0x3e7a03bc,0x3e60a4ef,0x3e746db1, -0x3e4d50b9,0x3e8217b5,0x3e840598,0x3e89c882,0x3e9dd51c,0x3eb065d5,0x3eb03557,0x3e9f509b,0x3e9e7fdc,0x3e8e8acd,0x3e8d1712,0x3e913871,0x3e9e8fdf,0x3ea0918f,0x3e9df4a6,0x3e9227e7,0x3e89ff20,0x3e7982a3,0x3e53e9eb,0x3e90322e,0x3eac7370,0x3ece8c5f,0x3ef013fd,0x3f0352f1,0x3f0e8a91, -0x3f145f63,0x3edf9580,0x3eb8398a,0x3ea449b2,0x3e8c7aee,0x3e629bb6,0x3e2b4366,0x3e09301f,0x3e0a5488,0x3df03306,0x3de84e8f,0x3e047483,0x3e1db635,0x3e3b2a03,0x3e66e85a,0x3e750f78,0x3eb37187,0x3eaf9b6d,0x3ea162af,0x3ea2f004,0x3e95bd5e,0x3e8f32ea,0x3e93c5e8,0x3ea6dada,0x3eac160d, -0x3ead0ba3,0x3ea91d59,0x3e8b11af,0x3e6c1753,0x3e2a8319,0x3e88462a,0x3eb3b0b7,0x3eeec1db,0x3f05b7a8,0x3f29abd4,0x3f14935a,0x3f192d83,0x3f0dc021,0x3ee097a9,0x3ec78deb,0x3e9c1f99,0x3e740fff,0x3e33fce7,0x3e179495,0x3e2b77eb,0x3e27ab13,0x3e374c35,0x3e13e50c,0x3e37ab1b,0x3e4f99f2, -0x3e906d95,0x3e957e4c,0x3eb326d3,0x3e9c9b39,0x3e98cd21,0x3e90462b,0x3e2bbbbb,0x3dd0318d,0x3d8d6a31,0x3ce65e08,0x3c0630f5,0x3c98ec0f,0x3df48ead,0x3e074d1a,0x3e8af8e3,0x3eff45ac,0x3f151fb5,0x3f25d68e,0x3f1ea8ee,0x3f299aab,0x3f1a7c5e,0x3f3feebd,0x3f4f989a,0x3f1461d4,0x3f0ed248, -0x3eda90de,0x3ec00d91,0x3ead6e2e,0x3e83d84a,0x3e59c7fb,0x3e6c3d5d,0x3e18a59e,0x3dd759de,0x3dffcd38,0x3e236821,0x3e38ad92,0x3e7b22f6,0x3e93954e,0x3eca80cc,0x3edf7ceb,0x3eba26e4,0x3ebeb0e1,0x3e941ced,0x3e91f733,0x3e6b0b26,0x3e67fff5,0x3e6f7aca,0x3e97e79e,0x3eb61916,0x3ec0499c, -0x3ed024a6,0x3f0832c4,0x3f0c397d,0x3f1c4814,0x3f2c4d3e,0x3f275aa5,0x3f097314,0x3f390b0a,0x3f27fb15,0x3f1f2246,0x3f09341a,0x3eddda0e,0x3ecaee85,0x3eab5848,0x3e975eab,0x3e897b55,0x3eb0ff4a,0x3e80c588,0x3e791c5a,0x3e41a0a6,0x3e5cb22a,0x3e82b4a9,0x3e9cfae8,0x3ebd706e,0x3ed7de81, -0x3ee270e2,0x3edce5ae,0x3ed9d384,0x3ea98ce0,0x3ea98467,0x3e98929b,0x3e672693,0x3e711a13,0x3e868ba8,0x3eca663a,0x3efb5bc1,0x3f24b68c,0x3f489108,0x3f40297f,0x3f3b33c9,0x3f094cdc,0x3f1a1903,0x3ee37e4e,0x3f173e55,0x3f5e0305,0x3f00ad57,0x3f10fefb,0x3ef5a1e4,0x3ed1e54c,0x3eaa67cc, -0x3e9ad2b9,0x3e9b49e9,0x3f09bef7,0x3e9e0242,0x3e8cd69d,0x3e8f19c5,0x3e900919,0x3ea4f742,0x3ec6ea7d,0x3ee167b0,0x3efe5216,0x3f04252b,0x3ef13d37,0x3eeb1fb1,0x3ecba01c,0x3eb35bb0,0x3e93db01,0x3e7136c4,0x3e5d9c07,0x3e6315f6,0x3ead2187,0x3efeee81,0x3f2bb064,0x3f2c6b92,0x3f44df1c, -0x3f39c009,0x3f0ff6fa,0x3f0345c3,0x3ea87a16,0x3f0c49fd,0x3f2e3342,0x3f1c2c40,0x3f178c74,0x3ecb497b,0x3ee21b77,0x3ed0e03b,0x3eadde29,0x3eb0b75b,0x3f1ee517,0x3e90cac6,0x3e74f576,0x3ea4c1a2,0x3eb4f90c,0x3ed1ed2d,0x3eed37fb,0x3eeb21c2,0x3f01a4be,0x3eeab6eb,0x3ef1573d,0x3ef56abe, -0x3ed7c344,0x3eaaf4e4,0x3e94544d,0x3e95ad7f,0x3e81092c,0x3e8e9ba3,0x3ea7d75b,0x3eaddc8d,0x3ed1a836,0x3ee87776,0x3f1f012f,0x3f35c275,0x3f514a7c,0x3ef4fe70,0x3e35d1dd,0x3ec3c46f,0x3f400861,0x3eed5bb0,0x3f08071d,0x3f02334c,0x3ed6a8ff,0x3e84ae8d,0x3ecbe021,0x3ec03300,0x3ef3acd6, -0x3ec62e85,0x3ec1f507,0x3e9f9a5a,0x3ec47bfa,0x3ed24097,0x3ee2a35e,0x3f057ce0,0x3f01641a,0x3f0b80cb,0x3ed52e00,0x3ef5ddbc,0x3f097079,0x3efc60cb,0x3ecee829,0x3e9c0b3b,0x3e8221ae,0x3e52d197,0x3e3c3952,0x3e7b4e21,0x3eb7b32e,0x3ec59074,0x3f07404d,0x3f0a3561,0x3ee29503,0x3eca31af, -0x3e8a4d00,0x3e99e52c,0x3f1edc10,0x3f08ae92,0x3f03c1f5,0x3efe5bab,0x3ece581a,0x3ee28cbb,0x3ec55aea,0x3f016a40,0x3ea5a489,0x3ede7d47,0x3ec32cec,0x3ed22acc,0x3ed6cc30,0x3edc106c,0x3ec9a075,0x3ed35058,0x3f27c29c,0x3ebdded5,0x3ec3f4bf,0x3efc8c34,0x3f04afe9,0x3f05be43,0x3f00c38d, -0x3ee0a7df,0x3ec43bd8,0x3ece2625,0x3ed8cea7,0x3ed976fc,0x3eddf250,0x3ee0ce54,0x3f04f5f2,0x3f0bd2e3,0x3f00500d,0x3ec63170,0x3e67a6c8,0x3f297f69,0x3eff6873,0x3f0ae2d7,0x3f0f1a7d,0x3ebaeb2e,0x3f00e8c2,0x3ee80189,0x3efcb949,0x3ec9f5de,0x3eec99bf,0x3ecace50,0x3f06026c,0x3ec92adf, -0x3eef6a61,0x3ef0bc2b,0x3f0b15ec,0x3f089691,0x3ef97711,0x3f19a76c,0x3ec047d5,0x3f074e37,0x3f11b2ab,0x3f159e73,0x3f11f795,0x3f13d36f,0x3f0eee0d,0x3f05279b,0x3f04fa84,0x3eff4b61,0x3ef21bce,0x3ee9e9f0,0x3ee9a7a6,0x3ee785e8,0x3ed7f4d9,0x3eebfe63,0x3ebbc518,0x3eb34926,0x3f4363a2, -0x3efdc426,0x3f275fce,0x3f2df55a,0x3f18667b,0x3ee0277e,0x3ef77fb6,0x3ed6d934,0x3f0f4037,0x3e989876,0x3ef44a26,0x3ebaa66f,0x3f1916e7,0x3eef6cd2,0x3efb0849,0x3efcf8bd,0x3f399045,0x3ee81f9f,0x3ed867a0,0x3f06cbb9,0x3f0bd05b,0x3f11cc5f,0x3f18f4cb,0x3f20baab,0x3f0d07b6,0x3f08f69a, -0x3ef6a94c,0x3ee7fd93,0x3edf9cf1,0x3ed263a0,0x3ec8ad1e,0x3ed23b29,0x3ecc2353,0x3ed70ba5,0x3eb39190,0x3e78d3e9,0x3f52c449,0x3ec6db7c,0x3ec1c9eb,0x3ee5e1a3,0x3e9b99e8,0x3f1220cc,0x3eb9d1f2,0x3f0a78d3,0x3f087f32,0x3f15c4d2,0x3eef89b1,0x3f041b83,0x3eee7f6b,0x3ef2e930,0x3f37b5fa, -0x3ee91d22,0x3f4e32c3,0x3eb3f318,0x3eb90438,0x3ece781a,0x3eccde00,0x3edc68b5,0x3ed695b4,0x3ecc50db,0x3edccd44,0x3ec36074,0x3ec42e28,0x3ec8c3d0,0x3eb25587,0x3eb3eddc,0x3eba8191,0x3ea536b5,0x3eab3c33,0x3eac4712,0x3e67ad52,0x3e28b707,0x3ecbe040,0x3f207822,0x3f47302b,0x3eb31cb2, -0x3f051d6d,0x3f456f49,0x3f4ed4e8,0x3f40714d,0x3f36f5c2,0x3f3b1d45,0x3f468aa3,0x3f47a118,0x3ef8fcca,0x3e9b4cc8,0x3f40d339,0x3f08bdd1,0x3ea9fdaf,0x3e285155,0x3e7085e0,0x3e74fef3,0x3e78f243,0x3e8256f2,0x3e867cf7,0x3e87870c,0x3e8b690e,0x3e7ff48c,0x3e7fc904,0x3e765276,0x3e6768f7, -0x3e6411a0,0x3e634a81,0x3e5b0745,0x3e63ed0e,0x3e65e1c4,0x3ed0148a,0x3e375354,0x3dd561b4,0x3dd5ff6c,0x3dc75bd4,0x3dbc3d49,0x3db70a9b,0x3dd0aacd,0x3dc158dc,0x3dad3b8e,0x3dab5395,0x3db42395,0x3dc26817,0x3dbb2408,0x3db6241c,0x3db6bdd1,0x3dc62b17,0x3ddfa4c9,0x3db8a692,0x3dcb3710, -0x3ddbbd7a,0x3dee354f,0x3df167c8,0x3df5a1a1,0x3df82397,0x3e021ed4,0x3e025fd2,0x3df9c630,0x3df3fb0f,0x3df0f465,0x3debff03,0x3deddb97,0x3de13b18,0x3ddd4e14,0x3dc9003e,0x3dc2870e,0x3dc35070,0x3dcbd315,0x3dd841d8,0x3de3226b,0x3e04e4bb,0x3e06286a,0x3e0d7130,0x3dffc7e1,0x3dfcbb18, -0x3dfefd66,0x3df8ff8e,0x3e08edcd,0x3e13551b,0x3e0ea48f,0x3e116e1b,0x3e09651c,0x3dfad5ce,0x3e13b242,0x3e0fe3dd,0x3e121a0d,0x3e119fb9,0x3e196b6f,0x3e1e73b1,0x3e250c81,0x3e2d4013,0x3e2796d2,0x3e235c84,0x3e309567,0x3e2c0631,0x3e2e57cd,0x3e2c96ec,0x3e36e1ae,0x3e259b5a,0x3e194dee, -0x3df157a8,0x3ddf300f,0x3dd7ed98,0x3dcc3545,0x3d88cebc,0x3da26c9c,0x3dd7810f,0x3df83a2f,0x3e066481,0x3de9d111,0x3dd2d5bc,0x3dffbfcc,0x3df8ca67,0x3e0dacb5,0x3e22db5c,0x3e277287,0x3e1d52d7,0x3e04b1db,0x3e16415a,0x3e157325,0x3e207baf,0x3e212fff,0x3e23bd9a,0x3e1e98c2,0x3e287726, -0x3e3642f3,0x3e46c1b5,0x3e50377c,0x3e4d80b8,0x3e4457e5,0x3e336c54,0x3e2cbcf4,0x3e2f651e,0x3e2a79f1,0x3e1b349c,0x3dfb7bb0,0x3d84933f,0x3d04f1ca,0x3cf1a8df,0x3d499d44,0x3c509ec6,0x3d3e46e4,0x3e088a8a,0x3dfac03a,0x3e22ec22,0x3df7e8fd,0x3de03f45,0x3dcd1be2,0x3dca4a34,0x3df9793f, -0x3e33084c,0x3e259b46,0x3e1fd273,0x3e02bcd9,0x3e1aece3,0x3e22172c,0x3e2e3273,0x3e3824ef,0x3e431733,0x3e346884,0x3e3cd30c,0x3e490eec,0x3e625077,0x3e6be02e,0x3e6fc87e,0x3e62c36a,0x3e5111a1,0x3e51a724,0x3e585a1f,0x3e64d753,0x3e4c0c67,0x3e20d102,0x3d8712c9,0x3caf2727,0x3aa06bd6, -0xbaa6130c,0xbc91df46,0x3ce298d7,0x3de171c9,0x3df65f45,0x3e026f44,0x3dd6c3df,0x3dce4bc2,0x3de1a334,0x3dd4a0e8,0x3ddfe683,0x3e2d9203,0x3e1cca40,0x3e2037dc,0x3e073513,0x3e2535a9,0x3e2d5234,0x3e39e7e8,0x3e436127,0x3e616caa,0x3e42d39c,0x3e417472,0x3e56e227,0x3e7bf4b1,0x3e815a03, -0x3e859c0a,0x3e6442bb,0x3e4c137e,0x3e3b0f08,0x3e39756d,0x3e470088,0x3e2ab507,0x3dd9a1f6,0xbac8730f,0xbdad388f,0xbda6f574,0xbd82792c,0xbd88b24b,0x3c9ebceb,0x3e7476e7,0x3e82f2a2,0x3e83f2d3,0x3e8365c3,0x3e4f1b5b,0x3e57e3d1,0x3e31a9e2,0x3e1f3752,0x3e346725,0x3e28e1d3,0x3e1e3477, -0x3dc94908,0x3e1f7ca5,0x3e2d4baa,0x3e531620,0x3e5e6db4,0x3e564199,0x3e620745,0x3e5a6a34,0x3e62838c,0x3e92d943,0x3e91b1ad,0x3e89adba,0x3e928180,0x3e840e35,0x3e532c11,0x3dcbbbd1,0x3b8feb2d,0xbe1611a5,0xbea84501,0xbeca7b78,0xbec6e86e,0xbe92791a,0xbe37d7b4,0xbe885f2b,0xbda1ebde, -0x3dfe389f,0xbcf17886,0x3dd991b4,0x3da4754a,0x3e0b9a17,0x3e2d7f25,0x3e21938e,0x3e361686,0x3e4cee9a,0x3e380d7d,0x3e2b9198,0x3de28991,0x3e1b442c,0x3e2c34ed,0x3e2dab03,0x3e4a83d6,0x3e61431e,0x3e6f6593,0x3e496b9f,0x3e66c134,0x3e8786e8,0x3e862621,0x3e70f20f,0x3e16d5f2,0x3d26ca36, -0xbdcd4c24,0xbe55043b,0xbea4e019,0xbed0dc78,0xbef92e87,0xbf073aa1,0xbf02be63,0xbf0933d9,0xbea3890b,0xbedebe90,0xbe670514,0xbe3d7fab,0xbdb5868d,0xbcbb9c8d,0x3cec4008,0x3dafc819,0x3de85597,0x3e1dd3be,0x3e29fcf6,0x3e9612f4,0x3e1157bb,0x3e005e9a,0x3ddd6c00,0x3e3d5df3,0x3e4c83ac, -0x3e70f029,0x3e800458,0x3e910115,0x3e70f0e0,0x3e79533c,0x3e6c8ef0,0x3e5c33f7,0x3e16a578,0x3d6f25b0,0x3cf6586e,0xbdfb1db0,0xbe77fbc3,0xbee07557,0xbf144923,0xbf3d75fe,0xbf5906d4,0xbf533e8d,0xbf49660b,0xbf2d98af,0xbf019c08,0xbf080017,0xbed6e428,0xbe58c82a,0xbe51c094,0xbd562c32, -0x3be372b3,0x3d962662,0x3dd1aeed,0x3e03f3c2,0x3e0a1ed3,0x3e4511cf,0x3e2b3815,0x3e17fec0,0x3dd620ee,0x3e20692f,0x3e328631,0x3e292a2e,0x3e4ebb29,0x3e8c6390,0x3e897c9f,0x3e73e2f5,0x3e6f6137,0x3e429c98,0x3de14cdf,0x3cf98461,0xbd44b1a6,0xbe1bd25c,0xbe876563,0xbef2b3a1,0xbf2677ff, -0xbf5302b2,0xbf5e15f7,0xbf659b28,0xbf5dc077,0xbf497e6f,0xbf290223,0xbf110acd,0xbee496ca,0xbeb50edf,0xbe43cad9,0xbdc96ec6,0xbc1ceeee,0x3d22bcaf,0x3dc28537,0x3dff717e,0x3e1e03df,0x3cdde1f5,0x3e3a3d75,0x3e65162a,0x3db00738,0x3e00f134,0x3def154c,0x3dcc312e,0x3dc9a62f,0x3e116b31, -0x3e281975,0x3e556c77,0x3e5c4ca6,0x3e2ba299,0x3e20ecfc,0x3da7c7f0,0xbd0c135f,0xbdfec0f8,0xbe7cae28,0xbeb91262,0xbeee5dea,0xbf14cc52,0xbf218474,0xbf460463,0xbf4f6452,0xbf71eadf,0xbf341910,0xbf007503,0xbecbaebc,0xbebd495f,0xbe31771a,0xbe1ce364,0xbd8e5988,0xbd80a75a,0x3c4269bd, -0x3c831dba,0x3d009343,0x3d1f554d,0x3de20014,0x3de6e9dc,0x3dab410d,0x3d934544,0x3d651d85,0x3d30d0ca,0x3d258266,0x3d43b077,0x3d4d3937,0x3db87378,0x3e02ad63,0x3debede3,0x3da9f747,0x3d98dc97,0x3d83c824,0x3d3a1133,0xbc46bdfb,0xbdbbe6bc,0xbe34949a,0xbea9bcda,0xbee17694,0xbf1bab35, -0xbf3305d6,0xbf3adc04,0xbf2e4206,0xbee56825,0xbeb18395,0xbeb61216,0xbe7a265e,0xbe1f6f5d,0xbdc87782,0xbd018198,0x3c8d7a00,0x3bdd1e25,0x3cca96e7,0xbcca73e5,0x3d61b0b3,0x3d777f91,0x3d518041,0x3c9217f9,0xbc885c05,0xbc7dd1f2,0xbd115c0a,0xbd82a3ec,0xbcf3c135,0x3b1c5922,0x3a159f81, -0x3cc4cc80,0x3ceba107,0x3d05d761,0x3d8f2074,0x3cb71f2a,0xbd25a201,0xbdeba143,0xbe4cff44,0xbe9d6ff1,0xbecb7392,0xbf081c7a,0xbf196ef5,0xbf1cbc34,0xbf0d5d51,0xbeb8628c,0xbedbd59b,0xbeacd846,0xbe87c9c5,0xbe61e158,0xbe00d87c,0xbdd9e637,0xbd198928,0xbd8e5255,0xbd44172e,0xbd2df9af, -0xbd1dee43,0xbd025da4,0xbbe9826e,0xbd2c2537,0xbd5c9fec,0xbdd1ca91,0xbdfecf24,0xbe0b9551,0xbe26a621,0xbe07f7f7,0xbe257bae,0xbe264979,0xbe12844d,0xbe13024a,0xbe05cd0e,0xbe2e26bf,0xbe3d3ace,0xbe597f26,0xbe8e4d09,0xbeab3024,0xbec938c4,0xbedf1782,0xbeee3974,0xbefae401,0xbeecea16, -0xbe9f9d7f,0xbe9b6554,0xbeb7ebc6,0xbe822d0d,0xbe7890d9,0xbe49d0a9,0xbe24c158,0xbdbd569d,0xbdaa9ea7,0xbd9a1ba0,0xbdc2bc5a,0xbd97a92e,0xbd95ce21,0xbda31660,0xbe01b0b1,0xbe07f9da,0xbe1e7bd1,0xbe32cd8a,0xbe7c8a07,0xbe6aa7a7,0xbe5b71b7,0xbe81cbf0,0xbe8e0c5f,0xbe984d54,0xbea17582, -0xbea6aa6e,0xbea12f35,0xbeaa352c,0xbea594c8,0xbeab5ded,0xbeb44e9c,0xbebdd578,0xbeb5aee3,0xbeba1670,0xbec16846,0xbeb2838f,0xbe6a959f,0xbe468a98,0xbeb648b3,0xbe5888a8,0xbe5e2e50,0xbe69dac0,0xbe2caa40,0xbe4889d5,0xbe2ba331,0xbe591295,0xbe5847ec,0xbe58484d,0xbe3eb88f,0xbe3d0fc7, -0xbe495797,0xbe5f476f,0xbe8b6ccd,0xbe6e2458,0xbea0b443,0xbe566349,0xbe59191f,0xbe81d520,0xbe821426,0xbe8d998f,0xbe8e528d,0xbe89b48b,0xbe9c57d2,0xbe8e8e82,0xbe930a0d,0xbe9d5227,0xbe905723,0xbe98077f,0xbe953726,0xbe7f398f,0xbe763b02,0xbe78701e,0xbe27474a,0xbe143257,0xbe7502f7, -0xbe97e1ab,0xbe9b0192,0xbe469c33,0xbe808079,0xbe968c96,0xbe97d05c,0xbe8ebeaa,0xbe8a1971,0xbe8d57d9,0xbe94512a,0xbe966c19,0xbe7ba505,0xbe3de054,0xbe95ac23,0xbe8ac159,0xbe5cdbbe,0xbe06fa17,0xbe21aa09,0xbe2880c8,0xbe2ea0aa,0xbe39f5a3,0xbe3feac0,0xbe41a776,0xbe4b019c,0xbe3e34a4, -0xbe432e14,0xbe3edddd,0xbe358dc9,0xbe3908ab,0xbe32b74b,0xbe2b4f1c,0xbe2e984f,0xbe2d2d3c,0xbe8670c2,0xbce7aa06,0xbcfbed49,0xbd4c9912,0xbacbbb19,0x3d40aa80,0x3db27785,0xbbb90e3b,0x3d17c070,0x3dcab305,0x3dd49a42,0x3ddafa43,0x3dcd170b,0x3dcf6a0d,0x3debde99,0x3dc9e0ab,0x3d262eae, -0x3b85276c,0x3dd273bd,0x3d4110f8,0x3be58732,0xbd2f4ea7,0xbceb624e,0xbd04ddb7,0xbd02837e,0xbd074dae,0xbd0830ea,0xbd030c43,0xbd08a1dd,0xbd15b85f,0xbd22ea60,0xbd3a0c91,0xbd3e4840,0xbd5090bf,0xbd33cf0c,0xbd20cb1d,0xbd0096e7,0xbd0816e3,0xbc96ddd7,0xbcfd0272,0x3dabe160,0x3cbf1c8d, -0x3d8be45b,0x3ce73140,0x3d171a4f,0x3d7bb494,0x3d0201f0,0x3d825eaa,0x3d7f65be,0x3d7de6e3,0x3d18525a,0x3d391084,0x3dabdbe9,0x3c5cb985,0x3d3781b9,0x3cb66078,0x3d55ddec,0xbd0ce073,0xbd28a9f6,0xbd2fc442,0xbd2fec0e,0xbd1d9467,0xbd0e9cf6,0xbd1d1f00,0xbd20bc15,0xbd434c4f,0xbd7e60fb, -0xbdb37ef9,0xbdd1a936,0xbde91f73,0xbdc412f7,0xbd9685ee,0xbd073702,0xbcabfa20,0xbd151eee,0xbd365d4f,0x3d2b8480,0x3c4d0f22,0x3d4af177,0x3d1e89f9,0x3d81599a,0x3d449ec7,0x3dbb260d,0x3d560125,0x3de88295,0x3d1ae6d9,0x3dae4289,0x3d2650b2,0x3d699747,0x3cdca5a1,0x3cb4c10e,0x3d307545, -0x3c9a21cd,0xbc3f36c2,0xbd7cd85a,0xbd464e1e,0xbd63b040,0xbd51f1d7,0xbd560b51,0xbd4dddd4,0xbd4f1acd,0xbd94a171,0xbdd243e3,0xbe0e4e18,0xbe24f88d,0xbe30c1f2,0xbe0908d4,0xbdc99bb8,0xbd12247a,0xbd19a162,0x3c1357d1,0xbc341fe0,0x3d829489,0x3d989aa4,0x3da4a012,0x3d8e1f2d,0x3da0afd6, -0x3ddc20f1,0x3ddbf842,0x3de696c5,0x3e04e1b4,0x3de3501c,0x3dec3616,0x3d1f30a8,0x3d972709,0x3d3f56a4,0x3d01996b,0x3d587672,0x3d121f4e,0x3b6140cc,0xbd862721,0xbd6dabd8,0xbd77f851,0xbd67ad1a,0xbd466e9e,0xbd3ee2a3,0xbd465306,0xbd956a35,0xbdf220d4,0xbe459aeb,0xbe785a35,0xbe885529, -0xbe57ca3f,0xbe1355af,0xbc83bd63,0x3babfaa7,0xbce6ccc8,0xbd87723d,0x3d181fa0,0x3d438a6a,0x3d639013,0x3d3a4c66,0x3d6710c8,0x3dd94d61,0x3ddf88c0,0x3df3b02d,0x3e172406,0x3e175113,0x3e01f3a1,0x3daafd7a,0x3dc00ef0,0x3db8fcdf,0x3dbb11c4,0x3cc27121,0x3dc8e6de,0xbc8731a1,0xbd7131d3, -0xbd845282,0xbd80f44f,0xbd7ec009,0xbd8cc103,0xbd6f95fb,0xbd78366a,0xbdc2cf01,0xbe284715,0xbe7b51e9,0xbe968dce,0xbe8fd577,0xbe6ce66f,0xbe0f33d1,0xbcd7ce97,0xbc3ba84a,0xbe904e71,0xbea7549e,0xbe943765,0xbe425649,0xbddea285,0x3afb6c5f,0x3cba22f8,0x3d994a54,0x3dd07c37,0x3dff48bc, -0x3e0479f6,0x3e1d4e25,0x3e108330,0x3dd772f4,0x3dd8324d,0x3d5840da,0x3dc78573,0x3c4d3094,0x3c83d1fc,0xbd559f65,0xbdb41bc6,0xbdb35907,0xbe2cf2e2,0xbe18dd70,0xbe058d5e,0xbe305287,0xbe5b5442,0xbe75ac44,0xbe507bfd,0xbe54a3ad,0xbe1fa216,0xbdbea739,0xbdea0ddb,0xbe2dd201,0xbe790af2, -0xbe9b7838,0xbe7da92e,0xbe957fc9,0xbe93ed75,0xbe429092,0xbdfb8e05,0xbda13192,0xbd212390,0x3c869418,0x3d182cbc,0x3dc93029,0x3e21994c,0x3e24cf72,0x3e2383a9,0x3de2555c,0x3e066e1d,0x3dace166,0x3db3533f,0x3d35e5a1,0x3d9b9144,0xbc0b58a7,0xbd52f259,0xbca46adf,0xbd156684,0xbce4b5b7, -0xbcbb054b,0xbcde9eef,0x3ca732aa,0x3d14fe02,0x3c98e2a2,0x3c7e2499,0xbb0ef638,0xbd2bd0b3,0xbdaaa63b,0xbdf82912,0xbd6eb81b,0xbe49a00b,0xbe143945,0xbe82ebc5,0xbe544e10,0xbe23facf,0xbddafdde,0xbd580d47,0xbccbfc78,0xb88d65e9,0x3d8748ba,0x3dc7ecd6,0x3de5584e,0x3e3154f9,0x3e322b74, -0x3d831dc1,0x3da6f540,0x3d4a0688,0xbbe9ddcb,0xbca50a34,0xbd63d05b,0xbd709647,0xbd3f6fe6,0x3cddc398,0x3de3e3a8,0x3e31354d,0x3e6594f1,0x3e4bb40a,0x3e8d9bc8,0x3e90743c,0x3ea78e6a,0x3eac96bb,0x3ea9216e,0x3e90bdc6,0x3e37ff8b,0x3deb6424,0x3d1d6f5b,0xbdbef141,0x3d12ba4c,0xbda16656, -0xbe1759bd,0xbd6ba399,0xbd8019f3,0xbcc5e718,0x3c3c1b09,0x39b526e4,0x3dd690f7,0x3e00cf96,0x3d1e4110,0x3e34588c,0x3e309a93,0x3cc6a6fe,0x3d1a17d1,0x3c48ddf4,0xbcda0be1,0xbd4ad086,0xbce17b1a,0xbc5a4e71,0xbc7aa82e,0x3d9c72ae,0x3e2be70f,0x3e882da2,0x3ead9a92,0x3ebd16b8,0x3ee112c3, -0x3ef39573,0x3f0fcfd3,0x3f10df36,0x3f0f48b3,0x3f02959c,0x3ea97557,0x3e7807a0,0x3e0f8924,0x3dc8aaa4,0x3e304fdc,0x3d249590,0x3bc24561,0xbccfb9e8,0xbc77d248,0x3bb31626,0x3c3fa321,0x3c6681ef,0x3ddd1a4b,0x3e130224,0x3d559420,0x3e2d1768,0x3e18fdfe,0x3cd16a36,0x3d373b7f,0x3cb91c38, -0x3cd9016a,0x3a88dbd0,0x3bc6452b,0xbd3fd90b,0xbb8c2990,0x3d84c11c,0x3e19a551,0x3e3c9162,0x3e91996f,0x3ed0e0b6,0x3ee8edbb,0x3f040785,0x3f09eb52,0x3f066015,0x3ef7c04f,0x3eccb1be,0x3e9e5b21,0x3e56eac6,0x3e70a855,0x3e5f608b,0x3e826579,0x3e4ddb68,0x3df0d487,0x3d84140b,0x3d59754d, -0x3d5760c9,0x3dc12980,0x3dd7e8d8,0x3df9942c,0x3e0f3ded,0x3e2a0dae,0x3e057251,0x3e00a8ce,0x3de57608,0x3dd2e09e,0x3da8e388,0x3d908fbd,0x3d8d0931,0x3d6e145f,0x3d8000c1,0x3bf84221,0x3d3be2e7,0x3defbd4f,0x3e55e975,0x3e847da7,0x3e833efd,0x3e9b0e29,0x3e9a3553,0x3e978b60,0x3e8b3591, -0x3e84333e,0x3e66ae03,0x3e4e1f9d,0x3e5d5471,0x3e77515e,0x3e944c82,0x3e6aa89e,0x3e3b1236,0x3e3619c3,0x3e1aba9f,0x3e07e97b,0x3dfbc150,0x3dd3ca38,0x3d8a3e37,0x3dd3cee1,0x3dd6649d,0x3e17dec0,0x3e01be95,0x3e0c3085,0x3e068cb1,0x3e17a926,0x3e1c485c,0x3dff1581,0x3e04a7a6,0x3e1d5d73, -0x3dbccf3e,0x3d976f3c,0x3dbc6db1,0x3da22a48,0x3da47ed8,0x3da603cd,0x3d9d04aa,0x3db0bb80,0x3dd0808e,0x3dfdad8b,0x3e02ea4f,0x3e11b1bd,0x3e190a4f,0x3e32bf4e,0x3e43a04b,0x3e5d4d6a,0x3e72c837,0x3e47da8a,0x3e4a0507,0x3e4131b8,0x3e288208,0x3e1a9d69,0x3ded1a79,0x3ddceb58,0x3d9f4635, -0x3ddf744c,0x3df00a3e,0x3e0b8fb1,0x3e0bcbb8,0x3e127ee1,0x3e14f41f,0x3e2d1172,0x3e31d7c0,0x3e51f867,0x3e505ce7,0x3e532200,0x3e595d44,0x3e3d0cf8,0x3e35e10e,0x3e2f5689,0x3e09567d,0x3e016f46,0x3ddcdd96,0x3dea17f9,0x3de94895,0x3de17fa5,0x3e036b45,0x3e104e1e,0x3e1ed95b,0x3e335b17, -0x3e47701c,0x3e5ef8e7,0x3e57c82b,0x3e3ebb61,0x3e40c779,0x3e3e513b,0x3e295252,0x3e27ac98,0x3e10c03a,0x3e0a35a6,0x3de93bd7,0x3df3ef0c,0x3e021a9f,0x3e12dd93,0x3e1bd850,0x3e19934b,0x3e2a6b44,0x3e3f23ca,0x3e5295d6,0x3e64104b,0x3e727a2d,0x3e81db8c,0x3e87e994,0x3e7d3a0e,0x3e807718, -0x3e7dd694,0x3e783ef1,0x3e6c30be,0x3e5c15ca,0x3e533e7c,0x3e53c110,0x3e4a70f6,0x3e4b078f,0x3e515cb5,0x3e54963d,0x3e5155e7,0x3e54aaad,0x3e5af8b0,0x3e4b3f32,0x3e59b5c0,0x3e4ee59c,0x3e87ae11,0x3e575197,0x3e5a8a45,0x3e661f02,0x3e4a1ebf,0x3e4dd7cf,0x3e470097,0x3e609c66,0x3e63986c, -0x3e65ef58,0x3e5da908,0x3e6359a7,0x3e6a3727,0x3e755a4a,0x3e80da06,0x3e80d619,0x3e85e506,0x3e838cfb,0x3e773097,0x3e8770d2,0x3e83986f,0x3e87364c,0x3e84c21f,0x3e7bd70d,0x3e8aee08,0x3e80e75e,0x3e8184a7,0x3e864b2f,0x3e754241,0x3e7b5f4e,0x3e7ab091,0x3e5b6d0d,0x3e5ea3ed,0x3e675342, -0x3e2980db,0x3e235b57,0x3e54ccaa,0x3e646c1d,0x3e548c24,0x3e3dd869,0x3e5613b8,0x3e5e52b4,0x3e605a09,0x3e582ebf,0x3e547abc,0x3e58dbcb,0x3e5fba32,0x3e624889,0x3e631c6a,0x3e4eeed1,0x3e61f56c,0x3e746bcf,0x3e63c79c,0x3e3455fd,0x3e3a8326,0x3e3e684d,0x3e3eb720,0x3e42cda5,0x3e424500, -0x3e3e00c0,0x3e42908e,0x3e38c83a,0x3e3bc536,0x3e39596b,0x3e32ec08,0x3e3509f5,0x3e333984,0x3e2d297c,0x3e2f990a,0x3e2e3e9c,0x3e922388,0x3d0562ac,0x3ce286ef,0x3d3040dd,0x3a730a27,0xbd1ff63a,0xbd89c828,0x3c341c2c,0xbcd664f6,0xbd97204a,0xbd927229,0xbd905a21,0xbd87323b,0xbd8926a6, -0xbda431b8,0xbd8cfaf4,0xbceee756,0xb8615710,0xbda7c97c,0xbd26c621,0xbbd98df7,0x3d21304f,0x3cdce638,0x3cf4f5f9,0x3cf94fdc,0x3d0d92c2,0x3d150b55,0x3d1667a7,0x3d115564,0x3d168995,0x3d1423d1,0x3d1f1e5f,0x3d171a9e,0x3d2cb4d1,0x3d03aefc,0x3ced5eb2,0x3cca0a15,0x3cedf9fd,0x3ce8ecc9, -0x3ccd5825,0xbd7c0346,0x3bd0d3d3,0xbcd34b6b,0x3a0d526e,0xbb4cfeb9,0xbc5c5ad9,0x3ccf90ee,0x3bbbf5db,0xbc4c100d,0xbbb7d350,0x3c172af6,0xbbc3fc5c,0xbd6d4799,0xbc1080a4,0xbd0a42b5,0xbc92c774,0xbd3746ba,0x3cc5fbbb,0x3cee7a2e,0x3d00f952,0x3d13303e,0x3d1de950,0x3d20cc4e,0x3d3a8bb8, -0x3d1ce008,0x3d06cb35,0x3ce32c01,0x3d2a1ca3,0x3d51652c,0x3da2ea06,0x3d49d822,0x3d11f38b,0x3c7a9d98,0x3cc48333,0x3cdc704e,0x3bb57aa5,0xbd0cf76d,0x3c622c90,0x3ac162a5,0x3bc382ed,0xbbf38b45,0x3c1e85a2,0x3cc0693a,0x3d63064f,0x39ea43e5,0x3d685364,0x3c68044b,0x3d00cc90,0xbc2d573f, -0xbc42e277,0xbc40d1a3,0xbcff6807,0xbcbcceb9,0xbaa8b281,0x3d06a60b,0x3cceb46d,0x3d1b30eb,0x3d50859d,0x3d788433,0x3d854618,0x3d48b578,0x3d562fda,0x3d5996a9,0x3d91c18f,0x3dab2770,0x3df96689,0x3d73767d,0x3d0810a8,0xbb9289e5,0x3c7efa34,0x3c3cf40e,0xbcd241c7,0xbcd38ce1,0x3b0ac0c7, -0x3c87e18b,0x3c645017,0x3c6f0cde,0x3c862c83,0x3d7b65e3,0x3d99fabc,0x3d004621,0x3d4a02fb,0x3d061dab,0x3d3205e3,0xbc9d3100,0xbcd3ee16,0xbcb2017c,0xbd0c023b,0xbd049d92,0xbc998a92,0x3cb0925f,0x3ccdaa1b,0x3d0f026c,0x3d642042,0x3d750b10,0x3d81cc27,0x3d185c8d,0x3ca2d109,0x3c441872, -0x3d6f718e,0x3dcae555,0x3e4479f7,0x3daf2c4c,0x3d340da8,0xbd053291,0xbc0c4204,0x39c8082d,0xbca981b3,0xbcf3d26d,0x3bfd4d3d,0x3d3c78b5,0x3d257738,0x3d2e6812,0x3d2dff04,0x3dc06c53,0x3dce48b3,0x3dbe9fac,0x3ddd3f5d,0x3dac0a72,0x3d4bc6d6,0x3cc3f5c5,0xbbdcd65b,0xbcca287e,0xbbacf828, -0xbd5778e3,0xbc1f4f99,0x3c856f33,0x3ca635e7,0x3d0629f6,0x3d834e76,0x3dacb65e,0x3db6d350,0x3d664c8d,0x3d41397b,0x3d840f89,0x3dc98239,0x3e0d8bd8,0x3e4a1878,0x3db19d0d,0x3c714969,0xbd55e21a,0xbcf76e9c,0x3d9b184b,0x3de022cc,0xbbf0792c,0xbccd4e29,0xbcf5abb1,0xbd271023,0xbc4c6dc4, -0xbc3ccf5d,0x3d2370ed,0x3d9172ce,0x3d4d5950,0x3de4f248,0x3dd5f5a4,0x3dab2fb8,0x3d3a6620,0x3c1eae1a,0xbc91a059,0xbc6e69f4,0xbd41de97,0xbca4f85c,0x3b0214b5,0x3c9536ba,0x3dbc6d1a,0x3dedb5d2,0x3e181868,0x3e436153,0x3e86bcf5,0x3e9a6f6a,0x3e8cd875,0x3e9c59ab,0x3e9f5232,0x3e9f46a4, -0x3eaad81a,0x3ea66ce6,0x3e8c4e67,0x3e37719f,0x3d8121db,0xbbcb97df,0xbd52daa3,0x3ca42070,0xbc04f0d4,0x3ce6c294,0x3cd95d94,0x3b83a0ce,0x3cf7ee2d,0x3d5829f6,0x3db22b9a,0x3df703a0,0x3df79cad,0x3d955f91,0x3d5ac92f,0x3cfa1924,0x3abefa62,0xbc3dcb50,0xbd3d6356,0xbc866e3b,0xbce1b852, -0xbd418766,0xbccca68c,0x3d9dd59e,0x3e1e7d92,0x3e85e933,0x3e7517f5,0x3e874b8b,0x3e8a543b,0x3e7a3413,0x3e5082c5,0x3e21b57d,0x3e0bafac,0x3db40c01,0x3c58f372,0x3cf03560,0x3c943b99,0x3c7c8f36,0x3ce596e4,0x3c8cf7ab,0x3c76eaa1,0x3c83adfb,0x3c9e559d,0xbc3cb537,0x3dc2d3cc,0x3df0d47d, -0xbc41e007,0x3e04bc7d,0x3dc54d1c,0xbc0b0f00,0xb8b828d1,0xbcadbab6,0xbce75ce7,0xbd0ad152,0xbd11c574,0xbc93fe49,0xbd57df6b,0xbd65cfdb,0xbd6435ea,0x3b3102a3,0x3d42e681,0x3ddffd88,0x3d7dc6e0,0x3d6d2c03,0x3cf6e913,0xbc1c0316,0xbd0d336a,0xbcd34dc4,0xbd871b6a,0xbd8fd2b1,0x3cd1ceff, -0xbc5fda6c,0xbd7e2da6,0xbc5c982e,0xbac097bd,0x3c447a1a,0x3cadb3bd,0x3c89a3e0,0x3d0a8164,0x38d9a605,0x3de4f43b,0x3e03d5f1,0xbd8e741c,0x3dda6fe3,0x3d96a5d5,0xbcae3744,0xbc9b6542,0xbd524a5b,0xbd6def08,0xbd615f15,0xbd8ec601,0xbd8e3bd0,0xbdc05eeb,0xbdcdc5ef,0xbdf3c981,0xbe020e2a, -0xbe175124,0xbe151a7b,0xbe51e1ee,0xbe6e95b1,0xbe9355af,0xbe8f0254,0xbe977a14,0xbea0b5a7,0xbe7dfef9,0xbe408978,0xbc0b3024,0xbdab6f89,0xbdf26069,0xbdd1a9de,0xbd4fd480,0xbc8d600e,0xbc50f5af,0x3a6e7edc,0x3d1ab83d,0x3d5a25f5,0x3d790086,0x3d5c1230,0xbd0cc5a6,0x3d1a9c37,0x3d830417, -0x3d2e20f7,0x3be3cf7e,0xbcdbb9e2,0xbd31abb4,0xbd8ccd26,0xbd9b76c8,0xbd92efd8,0xbe015165,0xbe269511,0xbe4c4106,0xbe766e2b,0xbe9ae87a,0xbeb1154d,0xbeb1f2c5,0xbebb5018,0xbec757dc,0xbec70f69,0xbeceb2c2,0xbec4b97b,0xbe9e0bd7,0xbe573907,0xbda4d4a2,0xbe066663,0xbe222e6e,0xbe3cb4b3, -0xbdebcc6a,0xbdcec53f,0xbcccf817,0xbc38bb7e,0xbb9608d5,0x3b78d556,0x3d6bfade,0x3d660d1d,0x3c8a025f,0xbb796fa1,0xbc9bf9b7,0xbce2e73f,0xbd1befc2,0xbd25f721,0xbd71921d,0xbd5e3fd8,0xbda13ba5,0xbdc6860e,0xbde47959,0xbe157ec7,0xbe3b8c19,0xbe7e97fc,0xbe9ad137,0xbe9b3eb5,0xbebbb2d9, -0xbeb3ddb2,0xbeaf6f4b,0xbea2966b,0xbe9a3f33,0xbe9ee43d,0xbe7ef3be,0xbe4a859a,0xbde53a60,0xbe12e9e0,0xbdf18b54,0xbe01db0c,0xbde43834,0xbdcfaad1,0xbdac412e,0xbd9a79ca,0xbd3d6e27,0x3ca0ba34,0x3c78f7af,0x3d4b12cf,0xbce64537,0x3d2caff1,0x3c333ffb,0xbc70bcc3,0xbd409f1c,0xbda8dd71, -0xbdbdcfff,0xbe00ba75,0xbdfc8576,0xbe0f954a,0xbe1e52eb,0xbe2dc668,0xbe33b0b7,0xbe351008,0xbe396f44,0xbe3c6d17,0xbe375e7b,0xbe3b7ab1,0xbe470048,0xbe5171f7,0xbe604a0a,0xbe5ca81b,0xbe59e5d3,0xbe418705,0xbe1dea65,0xbe07532b,0xbdfd8fa7,0xbdbfde07,0xbdd7c54d,0xbdace4d5,0xbd8362ab, -0xbd4d0d61,0xbccd1c23,0x3bd9b6d7,0x3a8e18c0,0xbbc44584,0xb9657d52,0xbccec57e,0xbc6b66a8,0xbd5ea5f2,0xbd84547c,0xbda1dccc,0xbdd4abd4,0xbe014625,0xbe2389fa,0xbe1d8d66,0xbe4263b5,0xbe2bb35d,0xbe3796e8,0xbe20914f,0xbe229d07,0xbe1c5afb,0xbe28f00f,0xbe3000dd,0xbe33b276,0xbe3e27e9, -0xbe3fd968,0xbe44f6d6,0xbe442bd9,0xbe3da2ec,0xbe3dfb45,0xbe13df67,0xbe14f575,0xbe01e931,0xbdd3509c,0xbdbd5358,0xbd9a061e,0xbd49aa4c,0xbd35a0a7,0xbd30a828,0xbd1d577e,0xbd53be10,0xbd13371b,0xbdad807a,0xbd5e825d,0xbdbc73d7,0xbd8de146,0xbde860f6,0xbe01616f,0xbe1452e8,0xbdeb6af4, -0xbe46bf28,0xbe481633,0xbe425846,0xbe439ab0,0xbe3b6044,0xbe33c0a0,0xbe2a5103,0xbe3653b2,0xbe3e1301,0xbe43cb86,0xbe43bbf7,0xbe48ee34,0xbe4b4ec6,0xbe425d7c,0xbe428161,0xbe4508a6,0xbe2c6a34,0xbe341f07,0xbe3ab78a,0xbe2d0195,0xbe2df851,0xbe2e4a1a,0xbe310cdb,0xbe297d31,0xbe07fb7b, -0xbe170a93,0xbe11f03e,0xbe12efed,0xbe09474e,0xbe1161ef,0xbe075035,0xbe1948e7,0xbe240015,0xbe050137,0xbe368b1c,0xbe01d40c,0xbe4e8f87,0xbe4020aa,0xbe5198c6,0xbe51fda2,0xbe59f5d0,0xbe5b5669,0xbe564aef,0xbe62cc44,0xbe53f8fb,0xbe50f387,0xbe576618,0xbe461a21,0xbe4a8200,0xbe4a97cf, -0xbe2ecfbc,0xbe3115eb,0xbe3a9b6c,0xbe0c778e,0xbe0d88bf,0xbe15edee,0xbe051776,0xbdc308a5,0xbe0664bf,0xbe021cc5,0xbdcf6947,0xbdc7f6b3,0xbdc65cf1,0xbdc6c6ce,0xbdc4c55c,0xbdbde12e,0xbdbdd070,0xbe0f59dc,0xbe1a52e4,0xbdc88ddf,0xbe1630d7,0xbe295c13,0xbe1b9ddc,0xbe168432,0xbe1aa812, -0xbe19b795,0xbe1ba1b5,0xbe1acdff,0xbe1871f3,0xbe1b9645,0xbe177842,0xbe1a9b32,0xbe1a0ff4,0xbe161613,0xbe180854,0xbe170e2c,0xbe126ce0,0xbe155991,0xbe13d543,0xbe66fb5f,0x3d28138b,0x3caea88a,0x3bbfaf89,0x3d36bd9a,0x3d9ce977,0x3dc83dac,0x3d0f7001,0x3d8a5084,0x3dd523bb,0x3de32eb6, -0x3de45b4f,0x3dcbb1ee,0x3dd254fd,0x3de8ef33,0x3ddde9ed,0x3d8e03d7,0x3d2cb57e,0x3dd4df30,0x3d960aa9,0x3d332224,0x3a0511cc,0x3c435fc0,0x3c1c21fb,0x3c0a3356,0x3bdfa39f,0x3bc8c934,0x3bd50590,0x3c1afe2b,0x3c35ce41,0x3c541e61,0x3c812dc1,0x3c937ce6,0x3cb0761c,0x3cac9784,0x3cb942eb, -0x3ce2d96c,0x3caa61ba,0x3d2bc346,0x3d169e7d,0x3de0231c,0x3d3cb331,0x3d93f16a,0x3d40fa4e,0x3d6609fc,0x3d5c95d1,0x3d370aba,0x3d9916a7,0x3d886e34,0x3d8e284e,0x3d7410c4,0x3da4cd20,0x3db84e30,0x3d45036c,0x3d8642c6,0x3d4dc7bb,0x3d9637f3,0x3c3f129a,0x3c380921,0x3c44d205,0x3bb3c004, -0x3ba47a0b,0x3bafc0b4,0x3ba3b996,0x3c3eb3e7,0x3ca35c8e,0x3cd96fe0,0x3cf9e82e,0x3cddefaf,0x3ce1669b,0x3cec87dc,0x3d21d42a,0x3d8a663e,0x3d5087d6,0x3d3549f7,0x3d57d191,0x3da4602e,0x3d0b007a,0x3d37f897,0x3d44ced1,0x3d814a50,0x3ca9f0d8,0x3da27038,0x3d4edbe5,0x3d8beaf7,0x3d145585, -0x3d8737bb,0x3d8ee765,0x3d55eadb,0x3d035325,0x3cf7bb2b,0x3d2017f8,0x3d005477,0x3b341aca,0xbc9e31db,0xbc56965d,0xbccb2335,0xbcefe1b9,0xbd0bf082,0xbcf6ba8e,0xbc3ea6a5,0x36aeaaef,0x3c743a0d,0x3cc86653,0x3d06aa25,0x3d078378,0x3d37cc50,0x3d66942e,0x3dc53a34,0x3d8000e2,0x3d9fe6f9, -0x3da50c4c,0x3d9a60ea,0x3d527da7,0x3cdc33ad,0x3d01c376,0x3d0be963,0xbba4c465,0x3d6958a6,0x3d8cb9ae,0x3d299a6e,0x3d5e1966,0x3d837ed1,0x3d8a3378,0x3d0d08f3,0x3c74c51c,0x3c7f7e6f,0x3ca43c1b,0x3c9acbff,0xbaf204da,0xbcd04ba8,0xbc950f86,0xbd1010f3,0xbd2fa2ed,0xbd1f380f,0xbd0d8750, -0xbc30f8d0,0x3c6c3363,0x3d209c30,0x3d261259,0x3d129b98,0x3c80e20c,0x3d232f07,0x3d83d5be,0x3e1f1931,0x3dd545f1,0x3d856eb0,0x3d7d659d,0x3d776e0b,0x3cc1dc1e,0x3c6eb1ce,0x3ce6afee,0x3ce34443,0x3989b55e,0x3d8da56e,0x3db2dbbe,0x3d09bd14,0x3d84a323,0x3d591890,0x3d5ab44e,0x3af64743, -0xbc841bc4,0x3b318489,0xbcd98fa1,0x3c864829,0xbd32c228,0xbd5a5753,0xbd76ec5f,0xbd89829b,0xbdb0331a,0xbdba3d3a,0xbdad9902,0xbd3c0494,0xbc2847d1,0x3c6084d5,0x3d119608,0x3d3273cc,0x3d154034,0x3d8135c0,0x3db91aa6,0x3e24fef6,0x3dc13055,0x3e351929,0x3e15bc0c,0x3e4b8538,0x3e47eb7f, -0x3e0592c2,0x3dc44231,0x3dae4192,0x3d8bc4f7,0x3d63a4c8,0x3d6a5220,0x3d4b74e8,0x3d959fdc,0x3d6a6325,0x3dc35df7,0x3d2bca17,0x3c1e3e14,0x3ce69704,0xbbdc1968,0x3b72bc2b,0xbd3a5e25,0xbd98202f,0xbdb51710,0xbe1393a4,0xbe02c022,0xbe0654f7,0xbdece46c,0xbde1215a,0xbdcbd030,0xbd80f1c6, -0xbd957f1c,0xbd7a316b,0xbd91f52f,0x3d4983c9,0x3dcdf0fa,0x3dc65ee6,0x3e36320a,0xbd4315be,0x3d29337e,0x3d135d22,0x3d0ef82b,0x3d5179a3,0x3d35fd05,0x3d892807,0x3dd011c9,0x3dfa3fbf,0x3dddb1ec,0x3da2e2a4,0x3da53b69,0x3d8b1d79,0x3d87e8af,0x3ca18087,0xbc00ce80,0xbc33219c,0xbcec99b1, -0xbcf00c28,0xbdc33938,0xbe195869,0xbe2c27c3,0xbe449d8b,0xbe9b45dc,0xbea86ce5,0xbeae18fd,0xbe854624,0xbe534d3c,0xbe0ceb99,0xbdbfaf05,0xbc96a403,0x3cda4412,0x3d9c3c5a,0x3da3dd65,0x3da42b66,0xbd0a6c09,0xbd1afe07,0x3bc4716a,0x3c360033,0x3d002b91,0x3d399383,0x3d324fe7,0x3d838f17, -0x3d925c4a,0x3dd1b21a,0x3dfd0562,0x3cc214c3,0x3dd0d1d0,0x3db7a236,0x3e0713c8,0x3d53b08c,0x3ccd4964,0x3cd82072,0x393f36cc,0xbc875edb,0xbd986356,0xbdbf492b,0xbdfd0002,0xbe116195,0xbe4df097,0xbe55e80e,0xbe538937,0xbe0938a4,0xbdc08b72,0xbd8dadb1,0xbd4ebde1,0xbd14385a,0xbdb753a3, -0x3d95a641,0x3d9969bb,0x3cceb2d4,0xbc240a19,0xba999994,0x3d21508d,0x3cbf9dde,0x3d3818b8,0x3d2ea373,0x3ce08101,0x3d43c983,0x3d8c2e14,0x3d8892b4,0x3da27eb7,0xbc126a18,0x3d823913,0x3d8b9b9c,0x3e0ab123,0x3d6c48b4,0x3d04dc41,0x3d36b144,0x3c5821cc,0xbc304461,0xbd42d012,0xbd4e6d3c, -0xbd8b946f,0xbd9eccee,0xbda846a0,0xbd87a14d,0xbd340670,0xbc85c6c3,0x3a3ddd78,0x3d03d95a,0xbb7d814a,0xb93fb0d7,0xbbaafbfc,0x3e03120d,0x3e0019a3,0x3ccf1d0e,0x3c6067fa,0x3cbe3bee,0x3d9858be,0x3d175f0e,0x3d16e960,0x3d14e130,0x3d2b7c5d,0x3d4b9187,0x3dc3bcff,0x3d78d3eb,0x3d1dee0a, -0xbc47e10a,0x3c8639dd,0x3cacd0e4,0x3d971e38,0x3c8958d5,0xbb84bb24,0xbb83d466,0xbbb2eb32,0xbd0e32b0,0xbd0e3ca3,0xbd2bca4b,0xbd39084e,0xbc90cda1,0xbc143cac,0x3b8cb75d,0x3b2fffc6,0x3aeb0f15,0x3c79d31f,0x3d8bde7c,0x3d80bb28,0x3e007af9,0x3e338949,0x3e5c6858,0x3e4ff582,0x3dd355fd, -0x3cf57c51,0x3d57aa94,0x3db0bfbc,0x3d5fe7ff,0x3d9cbd0a,0x3d2bb30e,0x3d31ca59,0x3d703842,0x3d9fc186,0x3d3a8fba,0x3d24da97,0xbb3bb4d3,0x3d2ddfc3,0x3d5cb002,0x3dabaedb,0x3d4e7fa6,0x3cf3a586,0x3c3ce977,0x3a62461c,0x3c923847,0x3c869168,0x3ccdd389,0x3b720536,0xbc7ae68d,0xbc23c8a5, -0x3c6812fd,0x3ca5dc84,0x3d60409f,0x3d68e486,0x3da2cfe0,0x3d2f5af1,0x3d590d6b,0x3dd5cb2f,0x3e2d5d5b,0x3e2f4e6e,0x3e0cbe91,0x3d666cc9,0x3d605ccc,0x3c9ad0c8,0x3ca479f6,0x3ca24a47,0x3cecc5af,0x3d54f4e3,0x3d85f489,0x3d1e3d4e,0x3d545ba9,0x3ca7ff1f,0x3d627495,0x3c3b1237,0x3cbf3d8a, -0x3d0f018f,0x3cfccead,0x3d463130,0x3d8086e7,0x3d955514,0x3cc40bf1,0x3d7675b1,0x3d82b5e1,0x3d38163a,0x3cedf8f7,0xbc4f778b,0xbcee6802,0xbd37b458,0xbd24b5f8,0xbd2ebcc0,0xbd051eed,0xbbba6670,0x3d2f1168,0x3dbc728e,0x3dfc506f,0x3e113599,0x3e1fd309,0x3dcccef0,0x3dbcd92b,0x3d8025fb, -0x3d86c1aa,0x3d3b7788,0x3d1764ad,0x3d664a4e,0x3d3d6d59,0x3d2d6b67,0x3d3875c9,0x3d6cfdc0,0x3d54d413,0x3d76bed3,0x3d0e7d5b,0x3d853233,0x3d41501e,0x3d4ceb29,0x3d3addc7,0x3d7b8688,0x3db0fe21,0x3d805dff,0x3de57197,0x3d88fb86,0x3d65dc03,0x3cbc427b,0x3c13e715,0xbc361fa7,0x3b48efd1, -0x3c14f874,0x3c27dc1a,0x3ce86f12,0x3d312449,0x3d805f0f,0x3db32ae8,0x3de0e678,0x3e13c129,0x3dee851d,0x3dd7167f,0x3ddab36c,0x3da55f23,0x3da0ec0c,0x3d556137,0x3d273b16,0x3d36f3e3,0x3d7621c3,0x3d5da7cf,0x3d89f61c,0x3d530081,0x3dc74a4b,0x3d69a59b,0x3db33b0a,0x3d1ef17a,0x3d8f22a7, -0x3d70fe1d,0x3d92eb51,0x3cd686cf,0x3de12fcc,0x3dd376c5,0x3da30f07,0x3d9690f2,0x3d66eb3d,0x3d29ec6f,0x3c90ee51,0x3d1273dc,0x3d348b11,0x3d5d88b8,0x3d768485,0x3d8c02ec,0x3d8f50ee,0x3dad8a6a,0x3dcaa796,0x3deecf21,0x3ddb023e,0x3dbd70e1,0x3dd70f39,0x3d70e81f,0x3dbad97e,0x3dc80be4, -0x3dd3ca02,0x3de85539,0x3d9c688b,0x3dca3a75,0x3d9c226e,0x3d914d64,0x3d72dfdc,0x3d9618fb,0x3d7a849a,0x3d99ac3b,0x3da564b2,0x3d28e05a,0x3dbb1749,0x3c9f4c08,0x3dd2f912,0x3db6bec9,0x3dc3857d,0x3dbab516,0x3db7c774,0x3db597f8,0x3dad9a11,0x3dbcc06f,0x3dafdc01,0x3dad54d2,0x3db2d849, -0x3da6db27,0x3daca9b1,0x3db464f8,0x3d9fe3da,0x3dabdad3,0x3dc007ea,0x3d9ee637,0x3db1b168,0x3da115b2,0x3d5fb770,0x3ca9c4d6,0x3d97a044,0x3d74e677,0x3cd2112d,0x3c8f1b7a,0x3cb3c831,0x3ccee3a0,0x3cb4650d,0x3c663026,0x3c504a93,0x3d8595bf,0x3da982b7,0x3c5c31a9,0x3d758710,0x3db36d32, -0x3db715da,0x3da125ed,0x3da2a2bd,0x3d9ec811,0x3d9e251f,0x3d98bf4e,0x3d916041,0x3d949f7d,0x3d936d9d,0x3d980286,0x3d98e1af,0x3d947e3a,0x3d950eba,0x3d9907ef,0x3d98e60b,0x3d9e131b,0x3da243ac,0x3deb5839,0xbd9f6c1f,0xbd4c7306,0xbd370b48,0xbd852aa1,0xbd96ebab,0xbd9e8f2c,0xbd51d08b, -0xbd8595d1,0xbda33337,0xbd9f22f3,0xbd9b2ee0,0xbd923b2a,0xbd93a4f9,0xbd9c426d,0xbd908264,0xbd7b8cc1,0xbd53f8c9,0xbda238ef,0xbd90b399,0xbd69ee47,0xbd05983e,0xbd26753b,0xbd237447,0xbd189644,0xbd29b3fd,0xbd3426c9,0xbd3fb7d9,0xbd3c1652,0xbd3af704,0xbd337fd2,0xbd3f88fa,0xbd41a2a8, -0xbd5b8a29,0xbd44ced4,0xbd41cdb2,0xbd4df4bd,0xbd4abad5,0xbdd03059,0xbdb40fd5,0xbdc73b91,0xbd91009e,0xbda2a5a5,0xbd820241,0xbd81c42b,0xbd7deaab,0xbd307922,0xbd64a40c,0xbd58bd66,0xbd5611c5,0xbd3098a3,0xbd25a79e,0xbd6d0b4b,0xbd46713d,0xbd8a05a0,0xbd7f6a52,0xbda07d29,0xbd35cf55, -0xbd3dcbb4,0xbd435cfb,0xbd1f5c12,0xbd4773be,0xbd626b5a,0xbd928935,0xbd958b7a,0xbd991889,0xbd907a5a,0xbda07b5c,0xbda2668d,0xbdcf5168,0xbdb65003,0xbdcaf174,0xbdefcb97,0xbde054f6,0xbde7975b,0xbdd02f19,0xbdc15158,0xbd8c9047,0xbd718c50,0xbd55f2e3,0xbd46648c,0xbcf62b1b,0xbcea98ba, -0xbc429979,0xbcba2b9d,0xbc0b08ef,0xbc67689d,0x3ba99045,0xbc810520,0xbc9f3d1f,0xbd30782f,0xbd53432d,0xbd6935f0,0xbd1671ba,0xbce79413,0xbd14f65d,0xbca56fe0,0xbd27dfff,0xbd5afbc0,0xbda3172b,0xbda16be0,0xbda171ed,0xbd99a860,0xbda8bd1a,0xbdc30d69,0xbe038520,0xbdde3b87,0xbdd6a81c, -0xbe078c39,0xbe018032,0xbe468168,0xbe1300b1,0xbdb36ae3,0xbd9f4a31,0xbd691708,0xbd3ba4eb,0xbcdca6a5,0xbcc8b2cc,0x3b893f06,0x3c804d18,0x3bffa0bf,0x3c59bbfe,0x3c5f35ac,0x3d6b8ccc,0x3c432519,0xbb481c81,0xbce3e1fd,0xbd401ebe,0xbd54f700,0xbd0bccbf,0xbcc440ca,0xbcdcf5b3,0xbbb5f56c, -0xbd135b4e,0xbd7820a7,0xbdd57425,0xbdd576de,0xbde219f5,0xbdd97a23,0xbdf99b80,0xbe06f7e6,0xbe469872,0xbe27c6ba,0xbe3981c0,0xbe73dd13,0xbe519ee7,0xbe317b4f,0xbe08060d,0xbdb89b24,0xbd6ae7c5,0xbd31e83a,0xbcd8d956,0xbc5f8d6a,0xbc499704,0x3cfedf1f,0x3d6d4125,0x3d1b9304,0x3d3285b1, -0x3d3e739a,0x3d826a34,0x3cb3fbe8,0x39c1e8e7,0xbd0847f7,0xbcb04d5b,0xbd966935,0xbcaa106c,0xbc38e134,0xbc6bc100,0x3c301cfb,0xbcafc709,0xbd67c39c,0xbdce6dee,0xbde13f27,0xbde78337,0xbdcfbc29,0xbdecec31,0xbe0e73a5,0xbe498c7f,0xbe2c7507,0xbe17544c,0xbe5d7b0d,0xbe4a9ea4,0x3db00997, -0x3e066686,0x3e0b4d96,0x3dd512f1,0x3da2f2be,0x3d4e8662,0x3d49874b,0x3db42f42,0x3d95a1d2,0x3d7722c7,0x3d927c5f,0x3c8a271b,0x3c206a37,0x3d8ed855,0x3c880cb2,0x3c46c8d5,0xbd34e87f,0xbc49ffdc,0xbd2b8b18,0xbc8eacac,0xbc4bffcb,0xbcd485ce,0xbc174278,0xbd340ef4,0xbd137983,0xbd7714cd, -0xbd3006ad,0xbd6a5865,0xbd85d5d5,0xbde7049e,0xbe0ea400,0xbde2d739,0xbe3dd1a6,0xbe125f1a,0xbda21ccc,0x3d43c512,0x3e1b1b26,0x3dccdb57,0x3da0ba57,0x3da6f7e3,0x3d96c1bd,0x3dc95b41,0x3dcf393f,0x3d350f4c,0x3dd28333,0x3dca6b46,0x3d13cfcd,0x3d728a6c,0x3d6ce25f,0x3dc3e37d,0x3d050064, -0x3cc9c433,0xbc7dd6fd,0xbc0ec784,0xbd40fcee,0xbc622f4a,0x3ce34142,0x3c2755e2,0x3cc4f9f3,0x3d514665,0x3d71c1f0,0x3cc17997,0x3c234ec5,0x39e60f28,0x3bcfa05c,0x3c8c1f59,0x3d459e52,0x3e11e378,0x3e348364,0x3e3c8fd4,0x3d1cd429,0x3e0e0f89,0x3de376a6,0x3db8e474,0x3da41943,0x3da52b1d, -0x3da0b5b3,0x3d58510e,0x3d6fba1d,0x3e10838a,0x3da324c5,0x3d96a739,0x3b820563,0xbb880c44,0x3c4a0ea0,0x3e2754c2,0x3c8eccf0,0x3b3cbe80,0xba530ef4,0xba51417c,0x3b6de0c3,0x3ca5aa46,0x3d1a0de4,0x3c9a5666,0xbbc69a04,0x3c3ad20b,0x3c968686,0x3b9d62f9,0x3c154405,0x3afb98dc,0x3cd65c8f, -0x3bfa4d2f,0x3d30dddc,0x3e54d0cf,0x3d81b1bc,0x3d26caa3,0xbd6335fd,0x3d93032c,0x3c168a82,0x3d0aef5c,0x3d38d517,0x3cd52f55,0x3cf90c5f,0x3b8df7df,0x3cac82a2,0x3e24c786,0x3d395d36,0x3ca93c33,0x3c7cc45a,0xbca096d2,0x3c1f656d,0x3e37d308,0x3d25db84,0x3c4348af,0x3c8ebea6,0x3c9bf3e9, -0x3ca5eeba,0x3d08d305,0x3d529945,0x3d2de04d,0x3c4245f6,0x3d0f39c6,0x3d17d896,0x3c890585,0x3b4e172c,0xbd1c19ea,0xbd4f264b,0xbd511ba0,0xbcec7d17,0x3d2a4f3f,0xbd88d4ef,0xbde0711f,0xbe2dbd99,0xbd23ca42,0x3c893bcf,0x3c6a40e6,0x3cdbdb09,0x3cc104d7,0x3ce2a65b,0x3d0940c5,0x3d4f4f21, -0x3da287ca,0x3cbb3aaa,0x3b1c93a1,0x3d37c267,0x3ca158b4,0x3d4d6c18,0x3e0c9b3e,0x3d838e5a,0x3d52182b,0x3d5da835,0x3d5b8110,0x3d784c33,0x3d908e41,0x3d875354,0x3d6fb397,0x3d2782d2,0x3d44f8de,0x3d093bf3,0x3b70b4af,0xbd7ebfff,0xbe062e16,0xbe6aab07,0xbe519dce,0xbe49d48f,0xbe03f62b, -0xbe0e959b,0xbde2b0fe,0xbe35050b,0xbc6d8d2a,0xbd88bdfd,0xbcdae01e,0xbb2a2d8e,0x3b959b2d,0x3bf9f148,0x3c9f90e0,0x3c634266,0x3cd5afe0,0x3cd874a3,0x3cf08917,0x3d0c7024,0x3d435963,0x3d2fee88,0x3d0ade0c,0x3cf3d732,0x3d1c74b2,0x3d3622e9,0x3d36402e,0x3cfffa10,0x3d0e5bd1,0x3cf19a25, -0x3ced6c7f,0x3ce2b719,0x3c10eacf,0xbcf280dd,0xbd82b17c,0xbe0c3692,0xbe2315c8,0xbe3aea9a,0xbe0e4dbe,0xbdce387e,0xbda7f9b4,0xbdbc73e8,0xbde815ce,0xbe5525c0,0xbdd1b758,0xbdba9897,0xbcb4f9aa,0xbc277a4b,0x3c9e9871,0x3d28f54f,0x3d2748b1,0x3d2dee24,0x3d4ec05a,0x3d3ffa71,0x3d7ead57, -0x3cbd6519,0x3d3dd5b5,0x3d1508a0,0x3d0362b6,0x3d1bda6f,0x3d01e9ce,0x3c78ecbf,0x3c4583b8,0x3d0f1181,0x3c442b03,0xbc2f6244,0xbb928c08,0x3b8d3087,0x3d19298f,0x3cd6290c,0xbc3f0324,0xbd01b9d9,0xbd40f55f,0xbd74c9b9,0xbd8aabd1,0xbd9c7b04,0xbdaf8bb4,0xbd93b19d,0xbdb1ef1b,0xbe147cc8, -0xbe008079,0xbdb2dfaf,0xbd9ec011,0xbd4ba98f,0xbcab8fcd,0xbbc09f9c,0xbc0e0968,0x3ba96af0,0x3c623ef9,0x3cde22f2,0x3cb9f6ca,0x3d09af28,0x3cba1dee,0x3d2697a5,0x3cca3ce1,0x3d048b6b,0x3cde7ddb,0x3cb2c79b,0x3c33d9f4,0xbbf93dd7,0xbae4e6f8,0xbd2ca8fb,0xbc40a895,0xbb203563,0x3c3e67f6, -0x3c6000da,0x3bcd50bd,0xbbe86a2b,0xbc98606e,0xbc98b0fe,0xbce82bf4,0xbd073a18,0xbd38b64a,0xbd4e9b64,0xbd8911e2,0xbdb2315e,0xbdc80408,0xbd3968d6,0xbd7613ff,0xbd080758,0xbcfc5316,0xbc1c9ee8,0xb9fab7f1,0x3ba439e9,0x3b87e4be,0x3c41ca1c,0x3c4a5596,0x3d0fd470,0x3c1e829b,0x3d185a62, -0x3cc35ed1,0x3d2755cf,0x3c8263b6,0x3c853c3d,0xb98811fa,0x3cca26ea,0xbd1dc342,0xbd0afcc4,0xbc82baad,0xbc3c8644,0xbbe9f5ea,0xba55d88c,0x3c87a408,0x3b05bdab,0xbbbe9ef9,0xbca21255,0xbcdaa41f,0xbd08c41d,0xbd1dfee1,0xbd279ee4,0xbd252f23,0xbd1b3dfb,0xbd19b75c,0xbbd3ee1e,0xbaa90ee1, -0x3ce99dc4,0x3c8f32f0,0x3c91916a,0x3cb63ae0,0x3c8af372,0x3d2077df,0x3cc6a35c,0x3cf8aee4,0x3cd80629,0x3d03b3ff,0x3caddb63,0x3cec4c3c,0x3c90293e,0x3c091a1e,0x3cf3bf16,0xbb8303ec,0x3d067221,0xbcba9d8d,0xbc9e3280,0xbccb8b63,0xbcd495dd,0xbcc38c96,0xbcd332c9,0xbcfa74d2,0xbd11ae7a, -0xbd16e7d4,0xbd096cc1,0xbd11b3d5,0xbd0e0624,0xbd1a9c19,0xbcfe327f,0xbcd6a95d,0xbcc606ac,0xbca04eee,0xbc52c332,0xbc8f492b,0xbc871669,0xbbed15ee,0x3bffda26,0xbc8a65d1,0xbc2511e8,0x3c1c46c7,0x3c70c346,0x3c71f9a7,0x3c78b71f,0x3c900f11,0x3cb5ad0d,0x3cba931d,0xbba21fbe,0xbc5f03bb, -0x3c903fbe,0xbbee3f7d,0xbcba1558,0xbcb6c052,0xbc7906dd,0xbc7278e7,0xbc6225ff,0xbc6b6287,0xbc5984f7,0xbc2fb836,0xbc217a7a,0xbc34f3f6,0xbc580adc,0xbc6a91c6,0xbc6e1bc3,0xbc81de1b,0xbc72c494,0xbc5ea08f,0xbc3f2146,0xbc3ee566,0xbc7e61da,0x3c95f59d,0x3c15f61f,0x3c044548,0x3cad57e5, -0x3ccccd81,0x3ce02d79,0x3c9bf0e4,0x3cd4f78a,0x3d046941,0x3cf58178,0x3cf1411d,0x3ce40194,0x3ce941c3,0x3d028b10,0x3d036774,0x3ce03b2f,0x3cad65b2,0x3ce26211,0x3cda0109,0x3ca382d1,0x3bc37e50,0x3c238c21,0x3c18af97,0x3c013a24,0x3c03f8fe,0x3c06abcf,0x3c02a404,0x3bf16c2e,0x3bc04cdd, -0x3b5ca322,0x3bad6771,0x3bd79477,0x3b9cc4d7,0x3bad342b,0x3bc9b575,0x3c173464,0x3c23b813,0x3ba697d0,0xba418b5c,0x39ce58a5,0x3b4fd088,0x3ca2dabb,0x3cbc0b6e,0x3cf1b038,0x3d0211a2,0x3ca8b464,0x3cdc098e,0x3ce61084,0x3ceff315,0x3ce5c510,0x3d164b57,0x3d2c1f10,0x3d000524,0x3cd8b9fb, -0x3cc3a371,0x3cf4018e,0x3c5eb167,0x3c5f2247,0x3c61ef59,0x3c12de4d,0x3c016d7a,0x3bbcebdf,0x3bce8f4a,0x3c0e380d,0x3c1838f1,0x3bb7d504,0x3c80d796,0x3c829c98,0x3b9278e2,0x3bf8269a,0x3c04e90b,0x3be9f4e6,0x3bb75616,0x3beeee78,0xbac1f13a,0x3a527319,0x3c14fae7,0x3cbd46e4,0x3cf614b1, -0x3d14bcb9,0x3d14a025,0x3cf0000d,0x3ca64322,0x3d0bda4d,0x3ccdfe31,0x3d1ac62e,0x3d2a450f,0x3d335b7b,0x3d17a497,0x3caa2ba4,0x3cdf0f3f,0x3ce6690a,0x3c8eca27,0x3c443e54,0x3c768590,0x3b633373,0x3b74656e,0x3b2d12dc,0x3b20a303,0x3b020624,0xba81531c,0xbc8aae57,0x3ad3f431,0x3a821f1b, -0xbc7cb288,0xbc2451f8,0xbbebf032,0x3be97665,0x3c30fbba,0xbbf70100,0xbd1321c4,0xbd675e87,0xbceb4cdc,0x3c584efe,0x3c9d996d,0x3d0b6551,0x3d2c9260,0x3cff7bcc,0x3cf49570,0x3d079b83,0x3d109177,0x3d3c922c,0x3d73cb6e,0x3d7344ac,0x3d44dfe0,0x3cabfca0,0x3ceefe28,0x3ce0ad4a,0x3ca9f81c, -0x3c8662e0,0x3c55c107,0x3b9b6856,0xbb996439,0xbc18b3b4,0xbb9b7130,0x39b3d425,0x3ba6f133,0xbc27ad72,0x3c976163,0x3c5c00c7,0xbcc3af74,0xbbaa033d,0xbb6b97b6,0xbbccad03,0xbc08a872,0x3b483c92,0xbce00338,0xbd22245e,0xbb78c4f4,0x3cdb9d4c,0x3ce5f9f6,0x3d27f91b,0x3d13af97,0x3d052b94, -0x3d2c326e,0x3d066088,0x3d00e1ec,0x3d414d1a,0x3d9bbd45,0x3d6620ed,0x3d2e2bf6,0x3c8aa4e7,0x3ca47cfa,0x3d1eb852,0x3cb1133f,0x3c38a8ec,0x3ca0028b,0xbb7456c6,0xbbf7bec8,0xbbc8d5d4,0xbbc17783,0xbb10ca85,0xbc140f0a,0xbd36d4cc,0xbb6a9958,0xbc68a145,0xbd46b9ac,0xbd1a986a,0xbcd60f7f, -0x3bea578f,0x3c449532,0xbcbbcf63,0xbd37548e,0xbcacbf43,0xbd4ebfaf,0xbd044c37,0xbcddb2ba,0xbc8335a1,0x3cd968d8,0x3d76d34d,0x3d866d18,0x3d6c76e3,0x3d33d961,0x3d5a93d6,0x3d9286a5,0x3d4282b5,0x3d33265b,0x3d34a675,0x3ce4fb9f,0x3d27e1f0,0x3d59407d,0x3cd0951c,0x3a75136c,0xbd406c58, -0xbaf1bb58,0xbcf1929c,0xbd15fc91,0xbda30b09,0xbdbd15dc,0xbdfae468,0xbd9b73ff,0xbd633f93,0x3c6ed81a,0xbdf77043,0xbe255813,0xbdba0381,0xbda60bab,0x3e3349ab,0x3e0976f1,0x3e259810,0x3e09957a,0x3e07732a,0x3da993e0,0x3daf696a,0x3da57bb6,0x3d8f71e1,0x3d8ad0e9,0x3cfcd43e,0x3d19aa16, -0x3d1232e9,0x3d958408,0x3d16c05a,0x3cf676bc,0x3c8626aa,0x3ca472e2,0x3d3204c3,0x3bf1844f,0xbcf46444,0xbc352920,0xbd0f391c,0xbd39ef0d,0xbd8fecd1,0xbdcc873b,0xbde909d8,0xbe070af8,0xbe0f5cea,0xbdccbbc1,0xbdc5ff76,0xbd6a56d4,0xbe04666d,0xbd4157c5,0x3e2ef50d,0x3e2b5f03,0x3dbf8185, -0x3d5f9eea,0x3d54781c,0x3d5103a4,0x3d170817,0x3d81e9be,0x3d9fb673,0x3e1c42d2,0x3d4fd2b8,0x3cd5dcd4,0x3cb6ab9f,0x3c6ea0a4,0x3d3d83dc,0x3e0c12b5,0x3d85034f,0x3d3cf91f,0x3cf7580c,0x3ca5b3e9,0xbb1ef22d,0xbd201471,0xbd88fd87,0xbdb96831,0xbde79c08,0xbde2b8f1,0xbe035120,0xbde15177, -0xbdda8686,0xbda3a72b,0xbd8ef5f4,0x3cb53374,0x3d25d9cf,0x3cbb488c,0xbd358222,0xbcd0b5f7,0x3d0de289,0x3da43d54,0x3c8e7df0,0xbccdb3e2,0xbc1c912b,0xbc4b2a08,0xbc552aca,0x3d2fda03,0x3d4a6e95,0x3e072e4d,0x3d15440b,0x3ba2e529,0x3d401590,0x3af63951,0x3d2b424b,0x3e01146c,0x3d66b9cb, -0x3d558d57,0x3d027c9c,0x3c8800a5,0x3c42cedc,0xbc71e623,0xbd1566ff,0xbd739861,0xbda7bd4e,0xbda62d62,0xbd90a14b,0xbd54978a,0xbc6a44d3,0x3d05ee23,0x3d40fb8e,0x3da46cb5,0x3d933c14,0x3d5f5a46,0xbcb2a644,0xbc973fa2,0x3c251795,0x3cbe28ed,0x3cac37bd,0x3c9e2f41,0x3cc39787,0x3cd11450, -0x3d234e75,0x3d1cf22b,0x3d174dba,0x3d2670a6,0x3d08fc28,0x3ce57323,0x3d6fa0aa,0x3c7d0622,0x3cd473e1,0x3d46b263,0x3d440fa3,0x3d38584e,0x3c821c48,0x3c521139,0x3c5cf8f3,0x3b1c8e2a,0x3cf5eb0a,0x3d48f24a,0x3d28dfab,0x3da0d077,0x3ddbf560,0x3df4b882,0x3e1f0c9a,0x3e31a414,0x3e4aed9d, -0x3e0a0cc2,0x3da33d3b,0x3d050a7e,0xbc8cfcf5,0xbd0442c6,0x3d90d0d8,0x3d0577fb,0x3d067adc,0x3cdf812e,0x3c2cdbf5,0x3c992240,0x3c98f6ea,0x3ce4f6a9,0x3d3c964d,0x3dac5a4c,0x3d25cc73,0x3cb450f5,0x3beeac79,0x3ccaf1bf,0x3d268772,0x3d4c7944,0x3cfcdfe3,0x3c8b3875,0xbb46fb54,0xbc26558f, -0xbc12045f,0xbc2ad98b,0xbb020659,0x3c41110c,0xbc6a9788,0x3cc321fe,0x3d2dd682,0x3d337e39,0x3db113a4,0x3dcb9a47,0x3deeee32,0x3dbf8af4,0x3d9b9999,0x3da47114,0xbc6f21cd,0xbcf68175,0x3cd8ecae,0x3cd0b71f,0x3d6cb574,0x3d3cc316,0x3d4d2e34,0x3d2483ee,0x3d04a66a,0x3cbbf27a,0x3c96bcc3, -0x3cebc47a,0x3c9aa1db,0x3c8691ac,0x3cf7c367,0x3cb65c15,0x3cce4983,0x3d180aa8,0x3d09368e,0x3cecd78d,0x3cd09bc9,0x3ca8d2a6,0x3c4f61b9,0x3cb974bb,0x3d1bf7fc,0x3d1750e7,0x3c89d469,0x3c744efc,0x3caedd5d,0x3d681490,0x3d96e2a9,0x3da27c74,0x3d94c795,0x3d8245a7,0x3d5612ec,0x3d8909b6, -0x3c5a912d,0x3b4975ed,0x3c2e3dd9,0x3d464fa3,0x3d3ee7ab,0x3d4e321f,0x3d52eb09,0x3d4c08d9,0x3d535f5b,0x3d4ee870,0x3d4ec77a,0x3d52e2b7,0x3d264375,0x3d047bf1,0x3ca8d410,0x3ced022a,0x3cdc2c0b,0x3d0c63e9,0x3ce28b80,0x3cde9605,0x3ccd3a50,0x3cae633f,0x3cb9e626,0x3c9ba9e7,0x3d066b3e, -0x3b9b2337,0xba039ca0,0xbc4aae22,0xbb59f292,0x3c733541,0x3c96f25e,0x3ce09ed9,0x3cacfefc,0x3d18dcdf,0x3d3ffadb,0x3d9200aa,0x3d25c013,0x3cd1fda8,0x3b9aa6c7,0x3cec39c5,0x3d0da203,0x3d2af753,0x3cfb3830,0x3d2bd593,0x3d3ce5e7,0x3d2f0664,0x3d30f798,0x3d300acc,0x3d0933a4,0x3cfccbcd, -0x3c95c779,0x3cd9c14d,0x3c9be92c,0x3cd24daf,0x3c908485,0x3cd05ee2,0x3cbccb1f,0x3ce46b54,0xba0d4622,0x3d04767b,0x3d00130e,0x3c70db19,0x3ba58bcc,0x3c5141c7,0x3c783aac,0x3bffad37,0x3c450300,0x3c790f70,0x3cbec8b0,0x3d251632,0x3d54af37,0x3d8ca431,0x3d58b0f6,0x3d34a7d7,0x3cd81826, -0x3cf5e366,0x3d1bdf44,0x3ceef434,0x3cc3d559,0x3c775075,0x3bcaa204,0x3b911645,0xbb02aa1e,0xbb2e8bba,0x3ad35663,0x3c5c1695,0x3ca43ae3,0x3cb7eabb,0x3ce1044b,0x3cfac294,0x3cf1bf38,0x3d02c174,0x3c906893,0x3cfe47de,0x3c1faa5e,0x3d2e8c72,0x3d16ac4b,0x3d2815f4,0x3d28281d,0x3d0c58fe, -0x3cf02fc3,0x3cdf331c,0x3d3ba8f6,0x3d60d029,0x3d7ef937,0x3d8cd7a2,0x3d90298e,0x3da5e33f,0x3d95aa55,0x3d7c3cf0,0x3d739d9c,0x3d5b94f0,0x3d3c7723,0x3d382d29,0x3d458a56,0x3d3e70d8,0x3d25b17b,0x3d509251,0x3d4917b5,0x3d2fb775,0x3d2f27e3,0x3d2056c5,0x3d19a712,0x3d192b77,0x3d160deb, -0x3d17705e,0x3d3b2ffe,0x3d498563,0x3d0cb263,0x3d3eea52,0x3d59853b,0x3d506a3a,0x3d3ee777,0x3d3e6741,0x3d3afbf6,0x3d42802f,0x3d44051a,0x3d363d37,0x3d38da3d,0x3d368c8d,0x3d3ffec0,0x3d4aee4e,0x3d50fcc1,0x3d5ff0fb,0x3d56b57d,0x3d4a2720,0x3d46423e,0x3d3fd482,0x3da8feb1,0xbd4a44da, -0xbcfa1816,0xbce4f3b1,0xbd165277,0xbd16d241,0xbd056682,0xbcee26c5,0xbd04f4d6,0xbd062d81,0xbd0e3106,0xbd11d04a,0xbd0a6bb2,0xbd079388,0xbd09b8c0,0xbd0c27f7,0xbd040882,0xbcf266b7,0xbd10ccf7,0xbd179759,0xbd0c2623,0xbcd12196,0xbce3a414,0xbce7fa17,0xbcebfe9c,0xbcf12f7f,0xbcf1d9e9, -0xbce20887,0xbcfcc8f3,0xbd02ec76,0xbd044fdc,0xbd064319,0xbd0bb80b,0xbd355558,0xbd22f17f,0xbd216620,0xbd219509,0xbd0823ee,0xbd36d49c,0xbd35eea2,0xbd3e5e5a,0xbd1ec969,0xbce8ad00,0xbcce79a1,0xbcd6312b,0xbcbfd1a0,0xbce734dd,0xbd04f2ac,0xbce6193f,0xbcca3895,0xbcbfe209,0xbcee9061, -0xbcc6de19,0xbcca7338,0xbd036c3e,0xbd0fbe2d,0xbd24ae1c,0xbcf0b9ee,0xbceeb53e,0xbcfdfcda,0xbd0ae5f1,0xbd078437,0xbd056ff6,0xbd0111b8,0xbd4623be,0xbd5f4844,0xbd5c7199,0xbd5574cc,0xbd56f794,0xbd9ff7bc,0xbd895c20,0xbd8849ac,0xbd8f1b8b,0xbd4ec2ad,0xbd37b5e3,0xbd2082a1,0xbd3085e2, -0xbd055435,0xbbe0c45e,0xbc15f905,0xbb793417,0x3a27b113,0xbc560ee9,0xbc67b236,0xbc399bd0,0xbb6051ca,0x3a6209bd,0xbc178dc9,0x3a1e35c1,0xbb2fbae4,0xbc83dbd0,0xbcd7f319,0xbd06ac60,0xbcbbee04,0xbcad22e0,0xbcd71cca,0xbd05f438,0xbd016c7b,0xbd0d249f,0xbce222f9,0xbd58ba76,0xbd71d5c5, -0xbd848790,0xbd6904c4,0xbd9703b2,0xbdf72f8c,0xbdcaa30b,0xbdc59242,0xbdc18ec3,0xbd795c20,0xbd64e1f9,0xbd4f54f0,0xbd1d5fa4,0xbd0ceadd,0x3c19edad,0x3c664e61,0x3ca15be5,0x3c93d81d,0xba880376,0x3b6fac7c,0x3c776e9e,0x3cb44ef5,0x3cd724ac,0x3c4acaa9,0x3cd5fd69,0x3c9f61a1,0xbb5ce870, -0xbc826879,0xbcaa2a72,0xbc1bf6aa,0xbc45d264,0xbc4662a2,0xbce1b0c6,0xbcc7cd83,0xbd001f20,0xbcaa2a39,0xbd8af2dd,0xbdaba1f2,0xbdb8ccb7,0xbda36622,0xbdcbd791,0xbe1a168f,0xbe0292f2,0xbdf1104b,0xbe0232f1,0xbd915d18,0xbcf8c876,0xbce54611,0xbcb97fa2,0xbbc847cc,0x3d1f53d7,0x3d05539b, -0x3d37b921,0x3d2b1f37,0x3cc45fff,0x3cc7ac79,0x3d17c25c,0x3d1bc676,0x3d5e09e9,0x3d61b2df,0x3d6d6314,0x3d2d4772,0x3bdf7bd4,0xbad13d8d,0xbc86d50f,0x3a27ac5b,0xbb41dd9a,0xbc48d929,0xbcdb65ee,0xbcc45057,0xbcfb4583,0xbca9a7f3,0xbd8d8ff7,0xbdb6640b,0xbdbaab6e,0xbda7da5f,0xbdddb2f0, -0xbe486e5a,0xbe1f4286,0xbe20279c,0xbe14bf23,0xbd84cf1d,0xbe064beb,0xbda21efd,0xbe0b84bf,0xbe06f686,0xbd8959c4,0xbc71c938,0xbb222abe,0xbceb473b,0x3d17edeb,0x3d7a5ab5,0x3c9da924,0x3d777d30,0x3d6765a3,0xbb61acdd,0x3d06232e,0x3d05c576,0xbba68695,0xbc7d3a1c,0xbcfab2b2,0xbceff998, -0xbc9cd5c6,0xbbf75a04,0x3c74010c,0xbc9b325a,0xbd1812cc,0xbd76a89f,0xbd94015e,0xbd9218a3,0xbd8f9d29,0xbda2a155,0xbdd50e34,0xbe181d17,0xbddb7b9b,0xbdc84c45,0xbd0c2b4a,0xbe08e872,0x3d9d33eb,0x3e026ec3,0x3e06ba40,0x3dc3ab51,0x3d8c5616,0x3ca6cc8d,0x3cb53bc6,0x3db65985,0x3d173a16, -0x3cb7bf97,0x3c477304,0x3c42f0ae,0x3cea5eee,0x3d9169a8,0x3d38236a,0x3d1b9110,0xbb1ad884,0xbccc5fde,0xbd5d78f2,0xbd2bdb65,0xbc21f385,0xbccfffda,0xbd289804,0xbc991b68,0x3a61ce88,0x3d0c1dd1,0x3c9dcfeb,0x3c337040,0xbc9946bb,0xbc33bf68,0xbd901142,0xbe851eeb,0xbe3aaeed,0xbe2e2320, -0xbd8f52c4,0x3c8901dc,0x3d2289f6,0x3d696b85,0x3b200ba4,0x3c8838e2,0x3cf1f0c1,0x3da61bec,0x3db62f82,0x3db6204c,0x3c9c80ae,0xbc9a207f,0x3c2002c9,0xbc453c9c,0x3c54768f,0xbc8a815e,0x3d4b8350,0x3d43401e,0xbd261151,0xbcb7c27d,0xbd316532,0xbd0eb7f2,0xbd151fd2,0xbd05e256,0xbccf6ea2, -0xbcf5ab94,0xbd12c1b7,0xbd00ebc2,0xbd4f428e,0xbd2d1c72,0xbcaace0d,0xba67df90,0x3c715c2f,0xbcb2c88c,0x3d88e724,0x3e054c63,0x3e5764f5,0x3d993d89,0x3cee8762,0x3c417cf6,0xbcadb234,0x3ba4a29d,0x3cae43b4,0x3db7c9ae,0x3db52883,0x3d3a9a71,0x3cf1a87a,0xb9eed890,0x3ccf4452,0x3bb0b06e, -0x3ce4de25,0xbd20b25d,0x3d83d00b,0x3d926934,0xbd12df94,0xbc5911f3,0xbd07ac9a,0xbcdf822f,0xbd4b81af,0xbd228287,0xbca1f6ba,0xbd094327,0xbd24c31f,0xbca595fa,0xbc2ec52b,0x3ca0cca7,0x3d806da5,0x3de3dfeb,0x3e231620,0x3e214df2,0x3e159c80,0x3e1b9e1f,0x3e57b33d,0x3d9b0f84,0x3c4cd26e, -0x3c8e85e6,0x3ccb8e51,0x3caa0233,0x3c3b1288,0x3c9f55b2,0x3c850154,0x3cae63a9,0x3d72aef7,0x3d73ec59,0x3d08f95a,0x3d132349,0x3d262166,0x3c9f7af0,0x3d794acf,0x3d81902b,0x3b7ad4ad,0xb93bb30f,0xbc8fdce6,0xbc84905a,0xbd096cd9,0xbd1023c7,0xbcea1f07,0xbd404d0f,0xbd1c3ced,0x3c174aed, -0x3cf560c8,0x3d87f0e3,0x3d910fc3,0x3e1862a6,0x3e0a810f,0x3d3ed011,0xbc2011ad,0xbd992d1a,0xbd109ade,0xbd073e5e,0x3caf2ee9,0x3c0ef02d,0x3c048537,0x3c59b986,0x3cbd03b5,0x3d561173,0x3d6a2c1f,0x3cce3ff9,0x3c8f1ebf,0x3bb623e5,0x3ca2b403,0x3b1695a8,0x3a434997,0x3c9aedb0,0x3b772217, -0x3b6adf95,0x3bfa570a,0x3c19dd6f,0x3871300c,0xbc30de26,0xbc82f997,0xbc646fa6,0x3d16afa0,0x3ce8bd23,0x3d163136,0x3d735430,0x3d2a8c97,0x3c9f4a60,0xbc9cbfc1,0x3b14ca4d,0x3c038ee3,0xbc017d86,0xbb8f8f79,0x3bfc7d6a,0x3d0a6fe0,0x3cfffa2b,0x3b2728a6,0x3b9df607,0x3b1d4818,0x3b3db8df, -0xbc188140,0x3be05931,0x3c1f5da7,0x3c630859,0x3c784515,0x3c645541,0x3b98a863,0x3ca00cb5,0x3cd292e9,0x3d02c073,0x3c8e4cdb,0x3c395085,0x3b229542,0xba0ff9b4,0x3bb1d14d,0xbc6215d7,0xbc0a3d6c,0xbbd2e1db,0xbbf06c18,0x3c972eae,0x3cce1503,0x3c75357e,0xbc0c5f15,0xbc7c20ff,0xbc5081f5, -0x3cc7fd7c,0x3c78020c,0xbd194b57,0xbd5ce597,0xbd773e97,0xbc6b5dfc,0xbc3920d8,0xba18c3a3,0x3bf72ba3,0x3b5723dd,0x3be0cbd8,0x3c127b9e,0x3c4b8513,0x3c60430e,0x3c72ad6c,0x3c6cd9d4,0x3c8ebfb8,0x3cc8fb92,0x3c8f891d,0x3c8975e5,0x3bbfce38,0x3bf5a675,0x3ba388f6,0x3c298fac,0x3c165fdc, -0x3be08309,0x3bfea648,0xbc24ae1e,0x3bbbc62b,0xb9d50019,0x3c215385,0x3ac3272f,0xbc9b73bd,0xbc6f0723,0xbc52fd66,0xbb41c787,0xbb9d9f90,0xbc579d46,0xbd25e2bb,0xbcffd527,0xbcb4b48b,0xbc25d952,0xbb87c3e8,0xbbeb2f78,0x3b1c9a25,0x3bce5051,0x3b3814a5,0x3bcda72d,0x3bbe042f,0x3b430a6b, -0x39380287,0x3c41388a,0x3c619163,0x3cdd9f83,0x3bd134bb,0x3c039912,0xbbaa8502,0x3c2c20f1,0x3c0e35c6,0x3c7313b9,0x3c5db097,0x3d12f721,0x3c852503,0x3c24cb06,0x3c7feb1f,0x3c848018,0x3ae4c7c3,0xbc1aa9b3,0xbc0c1ded,0x3baf2094,0x3c800841,0x3cd08cb0,0x3946377e,0xbc7c9a1f,0xbcf30d87, -0xbcb1293e,0xbcb0801c,0xbcb73990,0xbc5d6d8c,0xbc939b21,0xbcc7de77,0xbc61d2f0,0xbc97636b,0xbc92ef6a,0xbc8b24ff,0xbc54e6a0,0xbc430eba,0xbc74f905,0xbc9950d5,0xbca1b9ae,0xbc5ec5e3,0xbc36b94d,0xbbed99f1,0xbbd8ff2e,0xbbb1edbb,0x3c1f19e4,0x3b1e9fc2,0x3ca6a424,0x3bf2ff6b,0x3c75d3d2, -0x3c8437e6,0x3ca5fb90,0x3cf78ec4,0x3d1d193d,0x3d29f149,0x3cad28a7,0x3bd406c9,0xbbf6dfc8,0xbbd29864,0xbbdfd9f2,0xbc7f12e7,0xbc83b5c1,0xbc4bdb2b,0xbc4d83a2,0xbc812fc2,0xbcd011a9,0xbccce5d4,0xbc9f7dad,0xbc3bdf9d,0xba125856,0xbc9cc454,0xbc5fcbe0,0xbb8ac9d9,0xbb449a9a,0xb982b51c, -0x39d6a8a8,0xb7d06e29,0xb89365f4,0x38a3df33,0xbc6e4b28,0xbca9e520,0x3b98b605,0xbc172d22,0xbc929ad8,0xbcadb568,0xbca52551,0xbca6d34c,0xbcae699c,0xbcc7328b,0xbcd2c33a,0xbcbaf4b0,0xbcb769e4,0xbca249c1,0xbca1151c,0xbcc1b715,0xbce11ca1,0xbcf5510c,0xbceb7189,0xbce64a89,0xbceb2ec8, -0xbce44831,0xbd3cb47a,0x3c63fb1f,0x3bf4cf9c,0x3bf9b8e0,0x3c0d0d19,0x3bcd8c7b,0x3bb88174,0x3bfd465c,0x3c1ef049,0x3c22b4a1,0x3bf4c350,0x3bd9dcf0,0x3bbfc1cc,0x3befc1fe,0x3bfdb0b3,0x3bdda8ce,0x3c3a46c3,0x3c46fcac,0x3c08772d,0x3c2ecb7e,0x3c1ed263,0x3bbbc853,0x3bf2bee3,0x3bf7614f, -0x3bc65a91,0x3bdc15e7,0x3be04f14,0x3bd80202,0x3c05ea1d,0x3c137d38,0x3c2e4d3d,0x3bd34c34,0x3ba85025,0x3bfc2e36,0x3be71f8d,0x3bc71ffd,0x3bca727d,0x3bf47b6b,0x3c8f6868,0x3c0b96f2,0xbbb3413f,0xbafdce65,0x3bff60a4,0x3bd24abd,0x3c2efe46,0x3c85c858,0x3c0d02e9,0x3c183b49,0x3c0c5fce, -0x3c5bf94f,0x3c5a52a1,0x3c1c6645,0x3c75163c,0x3c91e6bb,0x3c87e896,0x3c3ef03d,0x3c1d6c87,0x3b915817,0x3c0cac6c,0x3c13f3bb,0x3b8008c3,0x3bf87000,0x3c166318,0x3c14dc35,0x3c89e377,0x3ca1d990,0x3cbe3223,0x3c0d8133,0x3bd660d2,0x3ca04de6,0x3c9b269e,0x3cd3f4eb,0x3ce60e21,0x3ccfc64b, -0x3c3132bb,0x3b500de0,0xbc359ffb,0xbc318bc7,0xb9cb7f6b,0x3ac9c275,0x3c008ac5,0x3cc18869,0x3c284432,0x3bdf4a45,0x3bf808e9,0x3c68274a,0x3c8a7999,0x3c19bd31,0x3ca9497c,0x3cb51f01,0x3cbfb5fc,0x3c43c186,0x3c2594da,0xbb34572d,0x3bc2a87e,0x3bc11d73,0xbb2fdf89,0x3ac750d3,0x3b41b71c, -0x3b6759c1,0x3c945a19,0x3c9bfebb,0x3d048ae1,0xbb61170e,0xbba7d95f,0x3ca872e5,0x3c9aaaf0,0x3c8deb47,0x3c78ba3b,0x3c8723c4,0x3cd147a9,0xbb6fa529,0xbd139133,0xbce3f7b1,0x3b15bf06,0xba71c332,0x3c075a46,0x3d032f1d,0x3bd1d5bb,0x3bf1e862,0x3c19ef7e,0x3cba4295,0x3cef36d3,0x3b8e9ae5, -0x3cebd5f5,0x3cf0ea9a,0x3cdd2b3c,0x3c35837b,0x3b848935,0xbc13207a,0x3b20dfb7,0x3b6f42db,0xbc37935c,0xb949e7fc,0x3bc7d28d,0x3bd700cb,0x3cf38d24,0x3d181b45,0x3d4d5d11,0x3b81e0e3,0xba2703b7,0x3d335731,0x3d2810da,0x3d6ed29f,0x3d674198,0x3d1ecced,0x3a12b023,0xbbd1bdd4,0xbd012573, -0xbd154132,0x3970fd7f,0xbbb351a1,0x3c6e1d55,0x3d1df488,0x3c882864,0x3c856fa1,0x3c9c267d,0x3d204e5f,0x3d3c647d,0x3c7cd5ba,0x3d27e111,0x3d22ffcb,0x3cf09691,0x3c433ab6,0x3c216589,0xbc49221d,0xba909e53,0x39c97e27,0xbc7f4f8d,0xbc14e948,0xbbb78eea,0xbb92701e,0x3cce7f64,0x3d0c7b37, -0x3d6f8281,0xbcac172a,0xbcb6acad,0x3d0c4a58,0x3d111e18,0x3cb31e51,0x3c6dec25,0x3c5fb4a1,0xbdc450ff,0xbda22d3c,0xbdbeb37a,0xbd97c6bb,0xbd3f7c53,0xbcb20967,0xbc8e2451,0xbcc98db0,0x3c2c0ce6,0x3d2fdf32,0x3c636c67,0x3d3ad6ed,0x3d10317f,0x3c92dece,0x3cdb4e19,0x3ca464b7,0xbb8adbe4, -0xbc66cbeb,0xbc5aa6ce,0xbcd44f6a,0xbcb3d5e0,0xbcab5d5a,0xbd00fbec,0xbcef4139,0xbca734d4,0x3c5a4700,0x3c26d31b,0x3a22b0a8,0x3bfbf43d,0xbd102037,0xbd08d4b8,0xbd9c2895,0x3cbaaaa2,0x3d24b538,0xbc462db8,0xbda4c9df,0xbdecd04c,0xbca46d77,0x3b59a029,0xbc058f2f,0xbd6ce0c7,0x3a0ae36b, -0x3c88ff18,0x3d7e0c41,0x3c9eb492,0xb9ce417e,0x3c4bd701,0x3bb1a9e1,0x3ca367c8,0x3d09ebb9,0x3d2eaa73,0x3d2139ff,0x3cfe70d8,0x3cadd337,0x3ca0d3d9,0x3c8e7275,0xbc4be067,0xbc924dec,0xbb139f66,0xbd7c6cec,0xbdc237c8,0xbdb94b13,0xbdb8afc5,0xbdb04e8e,0xbd4bc6e6,0xbe0b3ac9,0xbe08cb4a, -0xbdd8773a,0xbda82cd6,0xbdf57bf5,0xbe3f00f0,0xbe0b38e4,0x3d97d1b8,0x3d9337a5,0x3d3ecebb,0x3d12389e,0x3d719368,0x3dbe4217,0x3dadcc26,0xbb9725df,0x3c9fcea9,0xbbe7e1e9,0x3c53d7ba,0xba89b370,0x3ca83132,0xbc7985fd,0x3d8c2295,0x3d93183e,0x3c4ef3bc,0x3b02e00e,0xbcadc6ca,0xbc826d00, -0xbd01e94c,0xbcdc3d43,0xbc945aa0,0xbd2c0665,0xbd3fad39,0xbd171213,0xbd469a84,0xbd52ff5e,0xbd1fa67f,0xbdacd2f4,0xbdb7f0a6,0xbe22b0bc,0x3d0a7495,0x3da92d84,0x3d6375e6,0x3db6194e,0x3e16fc2e,0x3dc06885,0x3d615de3,0x3d899323,0x3dac16d7,0x3dc04d9b,0x3dabd431,0x3a2e0dcd,0x3d15a32d, -0x3c8ae482,0x3c1d1000,0x3c88f4a3,0x3ccd98bb,0xbd014b7d,0x3d73e3a2,0x3d91ba55,0x3ba0b158,0xbac5f6cc,0xbcce74ce,0xbd0f40de,0xbd2e66b7,0xbd44f543,0xbd4d69f2,0xbd910019,0xbdac5b56,0xbd92e280,0xbdccd264,0xbdaa095b,0xbd6d5fdb,0xbd4fb3c8,0xbd30670a,0xbdd0897c,0x3da859b3,0x3e1fc550, -0x3e07c1df,0x3e211475,0xbc3c8efa,0xbc3a1fc1,0x3a6d72ee,0x3ba5b9e1,0xbba8576f,0x3d1eb39e,0x3d456c2e,0x3d6302d4,0x3d592a18,0x3d311d4a,0x3ba823ef,0x3ce0cdff,0x3cd977d6,0xbc214cdb,0x3d144b13,0x3d27672a,0x3b09a315,0x3c1dd52d,0xbc0d02d0,0xbcf81d40,0xbd4d3182,0xbd95fe43,0xbdbcc6c3, -0xbde7783b,0xbdff6bc8,0xbe0aaba0,0xbde2fc1d,0xbd7e75f6,0x3cb997ab,0x3d46fc24,0x3dabf0c9,0x3ced4abb,0x3dcca6da,0x3da92840,0x3cd00db8,0x3b8ad274,0x3d6979cd,0x3d20b0b1,0x3d2101dc,0x3d1fabb2,0x3d4b33c7,0x3d4653d8,0x3d1d4f3b,0x3c222660,0x3c344510,0x3c28a663,0x3b2349d5,0x3ba6f2f3, -0x3c53f1fe,0x3cf0f277,0x3d5c895d,0x3d4d80ed,0x3cc5c6c0,0x3ce4c147,0x3cde03ae,0x3cf4cb6a,0x3d14af53,0x3d1d74d6,0x3d2e7157,0x3d346a22,0x3d77e4c2,0x3d6ec023,0x3dc9647b,0x3dc5e754,0x3dfab853,0x3d635fa0,0x3c280035,0xbd8e79da,0x3c80935f,0x3d66669b,0x3d9e0a07,0x3d61368d,0x3d36e3a5, -0x3cebfe2f,0x3cd65a94,0x3cb3fa85,0x3caf054f,0x3d0f28b6,0x3d378bae,0x3d2cc2cc,0x3d3eb0c5,0x3d0480ee,0x3ce396f8,0x3cae6994,0x3ccc0301,0x3c9ad431,0x3ca51084,0x3c8da78a,0x3c3d729b,0x3b338dad,0xbc36eec1,0x3c098d0e,0x3b5b87cd,0xbbf1fc99,0xbbcb7e41,0xbd68672f,0xbd7c1df9,0xbd33412f, -0xbc752715,0x3c27eadb,0x3d1612cd,0xbc1a8994,0xbc409ef9,0xbc31ed67,0x3cead9fd,0x3d4564a9,0x3d84721b,0x3d617ef5,0x3d56292d,0x3d3b06f4,0x3d17a170,0x3ceff092,0x3ceedeff,0x3cf1944e,0x3cdb7d44,0x3cc41c12,0x3cc6f2ca,0x3cdbe0e6,0x3cc15ace,0x3ce2728d,0x3cb03c9e,0x3cd76caa,0x3cca8c63, -0x3ccd4406,0x3cb4654b,0x3c7c1ea7,0x3c4410ed,0x3be8ec31,0x3ce00383,0x3c6bf314,0x3c8642c1,0x3c3878dc,0x3c3404fb,0x3ca41293,0x3cc8de84,0x3ccd9e05,0x3cc24b7d,0xb9856354,0xbc350023,0xbc74d6f3,0x3c3e6051,0x3d0a9f7f,0x3d531a7f,0x3d6f12e1,0x3cba35c9,0x3d023a5e,0x3cc8cdb2,0x3ccc9cd9, -0x3c81b774,0x3c7ce719,0x3c8b353f,0x3cb3a514,0x3c9f9307,0x3cb049ca,0x3c937614,0x3cddcda8,0x3cac11f7,0x3ce34075,0x3c9406ac,0x3ccd6fa3,0x3cca26f0,0x3caf9563,0x3c19da74,0x3c847ae2,0x3c95634e,0x3c52049b,0x3c54fad7,0x3ca24e15,0x3ce59a11,0x3cdd2dcd,0x3c7a912f,0x3ba6fba6,0xbb4916bf, -0x38b0411f,0x3b44e9d6,0xbbaa45f8,0x3b2dbe53,0x3baacde7,0x3c8889a4,0x3c81fca6,0x3c16bf19,0x3c68bd9c,0x3b879056,0x3c93a522,0x3cbe5a6e,0x3cebd527,0x3d0c0ecf,0x3cf6a6f4,0x3d0317a5,0x3cb601bd,0x3c8eefa4,0x3c4f9079,0x3c55ee96,0x3bd90def,0x3c169a61,0x3be59a10,0x3a24cabe,0x3c035511, -0x3b314803,0x3c0cc7f0,0x3b3bfb39,0x3b4b8888,0xb99697ee,0xbbdcb96a,0xbc63c85e,0xbc886edb,0xbc4d7415,0xbc320c73,0xbc0ef093,0xbc710151,0xbc9aafb8,0xbc9128c8,0xbc2a8b63,0xbb8459bd,0x3a027e84,0x3bbfd07c,0x3c2ae1d3,0x3c628abf,0x3bff7ea7,0xb93308cd,0xbc18a213,0x3c086b85,0x3b0a1dac, -0xbbe464b7,0xbc16f587,0xbbf39ec7,0xbbd36d39,0xbc01b534,0xbc2b5022,0xbc3a87da,0x3b7dcc04,0x3c312221,0xbc01a543,0x3a737dad,0x3bdba163,0x3c309da5,0x3c1e18e8,0x3c0e8b00,0x3c0b92ad,0x3c25873e,0x3c35540e,0x3c1f7666,0x3c13cfa1,0x3be5f861,0x3bcf4132,0x3c08572c,0x3c1cfc67,0x3c13629c, -0x3c0cf43c,0x3c0d13ce,0x3c0b7185,0x3c17c0dc,0x3c8006c3,0xbc5348b1,0xbc58e04f,0xbc601af4,0xbc7328cd,0xbc509c4c,0xbc3a9ecd,0xbc175ea0,0xbc0b6c3d,0xbbc638f8,0xbc04287b,0xbc0c6ea9,0xbc085a7d,0xbc026c64,0xbc03f935,0xbbe1c9cb,0xbbde4cf1,0xbbca9975,0xbb9fc99d,0xbbd9bf77,0xbbcc0136, -0xbb77c6be,0xbbe538f5,0xbbf2be6e,0xbbc2f565,0xbc0b283d,0xbc18ee0c,0xbc172819,0xbc127683,0xbc223b5f,0xbc2b5782,0xbc55b7bc,0xbc4cdcd0,0xbc25edc8,0xbc05b4c2,0xbc052c62,0xbc26b814,0xbc4d79c6,0xbc8df728,0xbc379638,0xbc1bc888,0xbc47be67,0xbc76e4b4,0xbc1597c6,0xbbaa71aa,0x3af0bfce, -0xbb93f9d9,0xbc07d4e6,0xbc0c4a84,0xbc0064eb,0xbb9e77a8,0xbb053e7e,0xbb1394ec,0xba077025,0x3aa65cf7,0x38acd59c,0xbba82929,0xbadecb32,0xbbf2a1e2,0xbc148b49,0xbb626888,0xbc2d226d,0xbc46d5c2,0xbc72babe,0xbc3ec628,0xbc55c4a8,0xbc6dc704,0xbcdeccaa,0xbce54db4,0xbc996892,0xbc73749a, -0xbc683838,0xbc55d4c2,0xbc864141,0xbd178dd7,0xbcfd3efb,0xbcd66111,0xbcc91acc,0xbcc59c3e,0xbc0c72fe,0xb986b003,0x3c376f2d,0xbb01bdcb,0xbbab5afc,0xbb946e18,0xbb9da688,0xba846158,0x3c1a6c3a,0x3bfd4cba,0x3c3277e6,0x3c6ebe28,0x3c1ecd28,0x3b907e31,0x3bb8ef6c,0xbb250bb0,0xbc0ade66, -0x3b413ec9,0xbc49c973,0xbc6db6f2,0xbc8b983c,0xbc641305,0xbcab699d,0xbcd32e93,0xbd3214ec,0xbd28c4da,0xbcb3f92a,0xbc6219fe,0xbc403dd7,0xbca36024,0xbd0a407c,0xbd05c087,0xbc3c172b,0xbc484d60,0xbc8f342b,0xbcca8036,0xbbc2fe1a,0x3bd5d036,0x3d046a52,0x3bbb6a4c,0x3ad8670d,0x3b238126, -0x3bd255b2,0x3c5a643b,0x3cbdc90e,0x3c801b5b,0x3cb0bc12,0x3ce42d8f,0x3c9b047c,0x3bf83a6c,0x3c0d82c5,0x3a4b64e2,0xbbde9984,0x3c3d3e11,0xbc57162a,0xbc9186ab,0xbcae4a0c,0xbc87f75b,0xbcbd2514,0xbccd9b7d,0xbd788c68,0xbd6d5ad6,0xbd062429,0xbcb5790e,0xbcc5ea85,0xbc7b40bb,0xbcf73b2b, -0xbd884074,0xbd4e4a52,0xbd2a10b4,0xbd366d66,0xbd1692e4,0xbbda9642,0x3c1938a4,0x3d1214af,0x3c079495,0x3c0a3244,0x3c202613,0x3ce1a4e8,0x3ccebe1b,0x3c9b1417,0x3cd4a5bd,0x3d03fe0d,0x3d04dfbf,0x3cca4e34,0x3af8ad8b,0x3c712969,0x3baae3a0,0xbbf5a874,0x3c74d321,0xbc441b61,0xbc89e318, -0xbc958bc6,0xbca8e2ce,0xbcee47f6,0xbd3962d6,0xbd9f95ed,0xbd96eaf0,0xbcdd3e6c,0xbc7998ce,0xbb9bc3a1,0xbcf51a50,0xbd509e40,0xbd63d878,0xbcbb12f6,0xbbdb40b1,0x3bd3e8a8,0xbc90e43a,0xbd0992ca,0xbcdcda7c,0x3b58def2,0x3b3dab6c,0x3ca2e253,0x3c2afe46,0x3ca044d1,0x3ce7133d,0x3d7c27c9, -0x3c8af9ef,0x3c81ceab,0x3cffed77,0x3c62b7b1,0xbc1949ca,0xbcde7dd2,0xbc2919a0,0xbc124aa0,0x3b8619aa,0xbce3ca03,0xbd0e740a,0xbd5cf647,0xbd515c12,0xbd8323c8,0xbdd42273,0xbd46c3f2,0xbd0c6054,0xbd02bc17,0xbd4ef447,0xbd9e0ae9,0xbded7a3f,0xbdac6c81,0xbe102c48,0xbdca987d,0xbdd72cca, -0xbd6023f6,0xbd079713,0x3d01b3ac,0x3cf87fa3,0xbbc4fb4f,0xbaf3e3f6,0xbbf022cd,0x3c3aa178,0x3b092c97,0x3b9315e1,0xbb8ff9f1,0x3d3c4092,0x3d437b67,0x3c79a502,0x3ab81767,0xbc6d6cfa,0xbc825317,0xbbb516bd,0xbc152dfd,0xbc5c44b7,0x3ad38bc2,0x3c7eaf9a,0x3b93f912,0x3c85bf2a,0xbc19c1d2, -0xbd423c90,0xbdb330cb,0xbd952daa,0x3d214685,0x3d0b6963,0x3cf2414d,0xbd542421,0xbdd68d2a,0x3d9ad66d,0x3dd24d18,0x3dc77088,0x3d7a1302,0x3dd26783,0x3d86a350,0x3d3e0d21,0xbccbdc4d,0x3c76f98d,0xb850fec9,0x3b2ca006,0xbb56f2b8,0x3acb14a7,0xbc722657,0x3cb190d0,0x3d006f93,0x3cf60d01, -0x39bd812b,0xbc8ad183,0xbc40c208,0xbb7bb321,0xbc30aa8c,0xbcbed5ea,0xbd30aba0,0xbd292ed2,0xbd7e6ffb,0xbc951ce9,0xbd0505e7,0xbd54ba36,0xbe02e000,0xbe03acfc,0xbc61a8a3,0xbdb12c2c,0xbd88c70f,0x3c7e41df,0x3d33312b,0x3deadfc9,0x3e154923,0x3e051ff4,0x3df01da3,0x3dfb0051,0x3d940d51, -0x3d6222ee,0x3c9c3d0a,0x3c8ea216,0x3b973671,0x3ba0fadc,0x3c0ae682,0x3bc74a8d,0x3bafd293,0x3c36d389,0x3ca994fe,0x3d6f6e8e,0x3bbdfc8c,0xbc19d6ef,0xbc878705,0xbc95ec3d,0xbd15fe8f,0xbd2e341c,0xbd88fa45,0xbd803045,0xbd9458c3,0xbc89d2ae,0xbcd4cf91,0xbcca3e7c,0xbdc1dd14,0xbdac0d38, -0x3d1afcb7,0x3bacb6d9,0x3c53a7bd,0x3d65efa6,0x3db9193e,0xbd0067a8,0xbc764769,0xbc71bc52,0x3cd87f4b,0x3d0b5403,0x3d87d304,0x3d83c26b,0x3d7b53d2,0x3c72122f,0x3ba6b08c,0x3c6f52f9,0x3c30799d,0x3c1cc921,0x3c0dbb1a,0x3c95a73e,0x3cb5008f,0x3d3c6959,0x3c09629a,0xbbf3cfcd,0xbc78df77, -0xbce9b271,0xbd3f1c50,0xbd461260,0xbd474914,0xbd2db63f,0xbd484352,0xbd22b294,0xbd810c26,0xbd4e3584,0xbdcf32ce,0xbd416609,0x3dbe861d,0x3e056f4c,0x3e270185,0x3dd16a77,0x3c9ad30a,0x3d2a10da,0x3d39dc24,0x3d4ebaa2,0x3d203379,0x3d4e666f,0x3d1d16e5,0x3cd6cca0,0x3c99f921,0x3ce38972, -0x3d28c767,0x3d75d242,0x3d226ff4,0x3cf1c601,0x3cce7533,0x3d52d1e6,0x3d452bb7,0x3cff39b8,0x3c92d681,0x3c6e9abc,0x3c9fabe8,0x3b9c6c1d,0x3bc605d0,0x3b9ec072,0xbc87097b,0xbc94bd05,0xbc4f86db,0x3d1a1d9c,0x3d70c079,0x3dafb9f9,0x3d48b453,0x3d053653,0x3da00da0,0x3c35307d,0xbc47a1ea, -0xbd00e17e,0x3bfe27b9,0xbcfe59bd,0xbca2d900,0xbbf5f88c,0x3c5771dd,0x3ce67ad6,0x3d29b37c,0x3d46fb38,0x3d1a4df0,0x3d315d99,0x3d26f9dd,0x3d20371e,0x3d0513bc,0x3ce0c8ce,0x3c8a539e,0x3ca69d1c,0x3cd6e7e8,0x3d1fb4ac,0x3d1001a3,0x3cfb0e4a,0x3c92f261,0x3c954f48,0x3cc4081f,0x3d12569d, -0x3d533ba7,0x3d89e5df,0x3d8ae409,0x3d54d19c,0x3cbca060,0xbc505683,0xbca3899d,0xbc4c58d3,0x3cb064fb,0x3ce87063,0x3cf35b4e,0x3be19136,0xbcb7c917,0x3b0fc709,0x3b52d563,0x3c1576f4,0x3c41ddc9,0x3c868a2c,0x3c9dfa9f,0x3cbbd874,0x3cd01d37,0x3ce13f2c,0x3cea4947,0x3ce7a660,0x3ce84291, -0x3d036be2,0x3d120be3,0x3ce99bcf,0x3cd3cca6,0x3c90d295,0x3ce3655b,0x3d0c677a,0x3d236be5,0x3d0d0328,0x3d2e3de3,0x3d2c5ace,0x3d4a3286,0x3d379134,0x3d2f48de,0x3d03f6dd,0x3ca58385,0x3aea11eb,0x3b894900,0x3c0c50c0,0x3cab802a,0x3c69886d,0x3c27abc2,0x3c89bc07,0x3c13c35c,0x3c9fff79, -0x3c25e4ec,0x3c85f0b5,0x3c7cb95b,0x3c642b64,0x3c90b881,0x3cb73163,0x3ce35368,0x3ccfff7a,0x3cc1e223,0x3cc2faf5,0x3cf97422,0x3d155623,0x3d298bab,0x3d02c585,0x3ca7d196,0x3beadc52,0x3c5115ea,0x3cc2ea16,0x3c993bbf,0x3c5dbc29,0x3c87280d,0x3c87668e,0x3c119bc1,0x3bb542b8,0x3bb1f9ad, -0xba52fbf2,0xbb7f4d2f,0xbb8fa61e,0x3c09cf73,0x3c8c3ce7,0x3cc41f25,0x3ce50966,0x3d079712,0x3d078431,0x3ccdd3df,0x3cd95924,0x3d04f0c4,0x3cf51ba2,0x3d089210,0x3d12fa3a,0x3d1d0146,0x3d1920b9,0x3d1c1f65,0x3d1e1dcc,0x3d20f588,0x3d1dc028,0x3d150c2a,0x3d03223a,0x3d05767e,0x3ce1a615, -0x3ccd1098,0x3cd70781,0x3c731d9b,0x3b91a789,0xbb5fd60a,0xbaf8b8a9,0xbb49f51e,0xbb90e5bb,0xbae669b6,0xba255a5a,0xba999859,0x3bb656b5,0x3c2ff22e,0x3c47da94,0x3c2df784,0x3c0b7033,0x3c28cf71,0x3c416a8d,0x3be9c6ef,0x3c5d99a9,0x3cabda1b,0x3c94ba0d,0x3c95b119,0x3c943ed1,0x3c94e013, -0x3c95b335,0x3c88b216,0x3c949ebe,0x3ca99ab1,0x3ca706ae,0x3ca72cae,0x3cabee3a,0x3cb4fbda,0x3cc30800,0x3ccaffed,0x3cab36c5,0x3c8ff0ac,0x3c912e9c,0x3c870035,0x3c84aef3,0x3c7968cb,0x3c7bb092,0x3c803f7d,0x3c801e04,0x3c6c1aea,0x3c5d48f8,0x3c50dc39,0x3c46109e,0x3c46b939,0x3c5c389b, -0x3c80e789,0x3c8ce131,0x3c98d133,0x3ca60b8f,0x3ca4a931,0x3cabcc76,0x3ca4e960,0x3cea6552,0x3bdb6dac,0x39e58b01,0x3b563629,0x3b23a44c,0x3aa6f60e,0xba176e30,0x3b9ec78d,0x3bc02215,0x3bc0fca7,0x3b8b1efe,0x3b5a64c8,0x3b01316a,0x3b2fae02,0x3b8147b8,0x3bd286d7,0x3bdb7f1e,0x3bee7c43, -0x3bcf66bf,0x3c02b2ff,0x3bf2805f,0x3bb06b5a,0x3ba20c35,0x3b89ea87,0x3b69ef61,0x3b874cb7,0x3b6a0e34,0x3b09997a,0x3b181bc7,0x3b2308c7,0x3b876ad7,0x3b7f5da8,0x3b9e45a4,0x3c122fde,0x3bacf772,0x3ba65476,0x3bb1332e,0x3af99eb7,0xbc075d7d,0x3b85b4f9,0xbb977390,0xb897af84,0xbb9a5598, -0x3be58323,0x3c2af7b3,0x3c399707,0x3bfb3a73,0x3ba12e2d,0x3abd7610,0x3b1cb011,0x3b93f6bc,0x3c51c676,0x3c3c18d9,0x3c6074f4,0x3c71c70c,0x3c824d6b,0x3c8a85ee,0x3c58cd55,0x3c07801d,0x3bca4940,0x3ba9188f,0x3bb4dd2e,0x3b82bd0b,0x3a1b57a6,0xbaf91c75,0x39cd2a8c,0x3c0dbe5d,0x3b4710f1, -0x3b8b708b,0x3c8e71c8,0x3b977545,0xbad17d62,0xbb35866c,0xbc4eb71c,0xbcaa9d1a,0xbbbc8f00,0xbc709aa3,0xbc1348d3,0xbc9148b0,0x3bdef3be,0x3c6b8920,0x3c88e705,0x3c15fc02,0x3b2dbd35,0xba9c0b38,0xbac6e738,0x3ba44034,0x3c9f179e,0x3c98f56e,0x3caef179,0x3cbe6877,0x3cd65c4f,0x3cd1b1ea, -0x3c9864f8,0x3c1ad36a,0x3bdabc14,0x3b33d6e6,0x3b9f143d,0x3ad94b61,0xbbd221f2,0xbbeb529d,0xbbc3bb55,0x3bfc74ab,0x3b0eed45,0x3c29bf3e,0x3cff3117,0x3beff4f1,0x3b501f06,0x3a404d01,0xbc9cd086,0xbd16f399,0xbb3509a0,0xbcb75342,0xbc41685f,0xbcc8dd2a,0x3be2c103,0x3c8d21fc,0x3cd1eeba, -0x3c4e9ea8,0x3b2d60ae,0xbb48673a,0x390ac8a1,0x3c19604b,0x3d06f89b,0x3ccc5260,0x3cf1e52b,0x3d0a7953,0x3d290565,0x3d1df1a3,0x3cf8f916,0x3c617eb6,0x3bf68848,0x3b63ab7e,0x3bcb1a70,0x3b5bfd61,0xbc24c450,0xbc7fe3fa,0xbc2394bd,0x3c93ba90,0xb989e7a3,0x3c0c637b,0x3d2c89b9,0x3afbd261, -0xbc6e43fc,0xbca7f41c,0xbd4836fb,0xbd6da2d8,0xbcb5a25e,0xbd2a6859,0xbd0b0fcf,0xbd34a036,0x3c194158,0x3cb3df57,0x3cec674a,0x3c45b4d5,0x3b77ffb4,0xba06ab93,0x3c3e666f,0x3ca34ed7,0x3d2e49ce,0x3cf4c1e2,0x3d08da21,0x3d34a14b,0x3d40f822,0x3d45a6e6,0x3cfb785e,0x3c51b595,0x3bf82d29, -0xb96c7c78,0x3b22cdca,0xbb687068,0xbc874a71,0xbc98e415,0xbc6cc7c5,0x3c00e42c,0xbaa1bf6e,0x3c88d92e,0x3d6752b5,0x3c2f18cc,0x3b76fcca,0x3b049767,0xbd54c723,0xbd5b33d1,0xbd8dd363,0x3d28dd71,0x3d4d491a,0xbca560b0,0xbc77c78e,0xbc55fbce,0x3c55595c,0xbc2b0afc,0xbb5aeae1,0x3c47204d, -0x3a8c6fa8,0x3c1a6a87,0x3d24b418,0x3ca59838,0x3cad5518,0x3cf78196,0x3c7ac930,0x3c3dc3c3,0x3c76d200,0xbbae3fef,0xbc657be8,0xbd068402,0x3ba2bdc5,0xba670927,0xbd0cd9f6,0xbd827352,0xbd3bea72,0xbcef35c4,0x3d8c23ba,0x3d864690,0xbd10f2f6,0xbd1a11b8,0xbd9bfa2a,0xbdea4d92,0xbdae491c, -0xbd49ab41,0xbde22f03,0xbdcdc3fe,0xbd7265bc,0x3bbaada2,0x3bfe0a3b,0x3c2ad9f7,0xbc218c62,0xbabb415e,0xbb0ebc30,0x3bb9fdce,0x3abea3d0,0x3b384c2c,0x3c474d7c,0x3cfdebf1,0x3cf6543b,0x3d26b188,0x3d098c28,0x3ccf5acf,0x3b834675,0xbb1e7e44,0xbaaed240,0x3c08e764,0xbc90a865,0xbcde79bd, -0xbcdeb820,0xbd5cfd76,0xbd958b7d,0xbde21966,0xbd5c5306,0xbcaad4f5,0x3c98d4b9,0xb9d81dce,0x3cdaffee,0x3d316224,0x3ad68b05,0xbc9c807a,0x3a01d12e,0x3d8cf425,0x3d39d095,0x3d914ba6,0x3c4d6424,0xbb8d4dc7,0xbc515a33,0xbb5d6f20,0xbbca5396,0x3b41805a,0x3b885865,0xbbd0dfc9,0x3c35d547, -0xbb7c97e2,0x3c341fe6,0x3da106c1,0x3cf6fe4e,0x3c704cbb,0xbb609717,0xbb2c03d6,0xbbab6c09,0xbc0f388e,0xba8f0c01,0xba5eb179,0xbc4c7189,0xbd2ece38,0xbd632b86,0xbde6451c,0xbd387d86,0xbd589853,0xbcea89cd,0xbdee28be,0xbe1b95a1,0xbe2eb2d7,0xbd915cb3,0x3d0598b3,0x3d561e55,0x3ddda7c3, -0x3db6def7,0x3dc9e3ac,0x3d268b2a,0x3c96cc36,0x3c92d0bf,0x3a93adb7,0x3917625e,0x3b40873b,0x3bb49e25,0xbbffc09b,0x3c5b7f0a,0xbc8eb5b4,0xbb8d60a6,0x3d9899fe,0x3c6691f1,0xbbc47f5c,0xbc87564e,0xbc97ebf2,0xbcbed928,0xbcc13b8b,0xbbe66555,0x3a55b01b,0xbbefd500,0xbcd7c023,0xbd52311a, -0xbe04cf10,0xbdc2ac9f,0xbddcb7b7,0xbd8e3f5d,0xbdc6ff8b,0xbdd1d023,0xbdcd0974,0xbc4e5a72,0x3e241fc2,0x3dc1953a,0x3d52d038,0x3d7a9b10,0x3da4a1e6,0x3d8d16ba,0x3d7576f7,0x3d20c3ad,0x3c459f6c,0x3b593755,0x3c0e1ce3,0x3b1b6554,0x3bd35dbe,0x3cd3bc52,0x3c76055e,0x3c6ec782,0x3d52b9c4, -0xbb93b6a8,0xbca51b9d,0xbcbc5144,0xbd02a94a,0xbd10c08f,0xbce63712,0xbce66f68,0xbcce07d5,0xbc01c381,0x3be24853,0xbbd94692,0xbd8ab51f,0xbd8234f7,0xbd5dd5db,0x3bf81ea9,0x3d5a0cbc,0x3df63524,0x3e2f0df6,0x3e422889,0xbbb73460,0x3c84ef06,0x3cfb051e,0x3cf9b87a,0x3d2f1575,0x3cfff593, -0x3d007397,0x3d4e01fb,0x3d3d4132,0x3d5127bb,0x3d280c88,0x3d36ba2b,0x3ce715ad,0x3c104b98,0x3c7dec2e,0x3c9ff2ea,0x3d1ccb03,0x3c883bd0,0x39bc1216,0xbc842dd9,0xbcc12b2a,0xbd10a9f9,0xbd862ae8,0xbd61e382,0xbd58e0dd,0xbd22a644,0xbd8e0854,0xbd5c0fb5,0xbd455c08,0x3d80b943,0x3dc8a6ad, -0x3e15b919,0x3ddb84f5,0x3d596f9b,0xbb2957fe,0xbb05912c,0x3d16f869,0x3d01a01c,0x3ce647cf,0x3d0dd2f0,0x3d50de75,0x3d2a0167,0x3d1b6a4c,0x3d052d58,0x3c81cc40,0x3c70f216,0x3c957945,0x3c95dbec,0x3ca3fe4d,0x3ce1995b,0x3d110e21,0x3d09c3d1,0x3caf11bd,0x3cc929b9,0x3cd272ba,0x3ce9a41c, -0x3ceb3e3b,0x3d0736d5,0x3d5aac84,0x3d6f6d58,0x3d770376,0x3d899098,0x3d67f847,0x3d6fb077,0x3d6d9eeb,0x3d823a2c,0x3d7d3d54,0x3d689e1d,0x3d26aeff,0x3d21a6bd,0x3ce3a887,0x3d250398,0x3c160d2a,0x3b8871be,0x3ca2067d,0x3cd4b55d,0x3cf3ca52,0x3cedc734,0x3ce86b8d,0x3cf84dc7,0x3cc37dc7, -0x3ca2df30,0x3cb17c33,0x3c9dc843,0x3cbdca62,0x3cc5a532,0x3cc63156,0x3ca64bec,0x3c5a9167,0x3c156055,0x3c015969,0x3b76a361,0x3c25e9dc,0x3c01c8e3,0x3bda0052,0x3ca78ea4,0x3ca3ce1b,0x3cac8894,0x3c88246c,0x3c937461,0x3cee69e8,0x3d1780c1,0x3d189a3b,0x3d079fa4,0x3c8bf0db,0x3b1dcd58, -0xbb4796c6,0xbbd2de89,0x3c69f95e,0x3c757ddc,0x3c71caef,0x3c9b2374,0x3cc4c875,0x3cc3b63f,0x3cdbac8d,0x3ce5eb8a,0x3cdbb96a,0x3cc71ccb,0x3ca9bf04,0x3ca12e17,0x3cac423f,0x3c9c76ef,0x3c7a9efd,0x3c3b30e8,0x3c53c321,0x3bd80d4f,0xbc161c32,0xbc120ef0,0xbc01cc4d,0xbbac9208,0xbbff3982, -0xbc6160a1,0xbc83d2cd,0xbc470281,0x39a472ea,0x3be26490,0x3c2da1cb,0x3c2a2bfd,0x3c2f0607,0x3c817935,0x3c88df5f,0x3ca14a65,0x3c84efac,0x3c8fb4a1,0x3cf8adb3,0x3d055377,0x3d0f26ea,0x3cfd910d,0x3cd90f2c,0x3cd7d810,0x3cab3edd,0x3cb06e99,0x3c9e8e70,0x3cbe3f52,0x3ccd78fb,0x3cd089fd, -0x3cc6463c,0x3cd789fb,0x3ccd58a2,0x3cc1a743,0x3c9bac05,0x3ca75d1a,0x3cb468a1,0x3cc3abb4,0x3cd68716,0x3cc902f9,0x3cf2a235,0x3d0acb2e,0x3d1a0fdd,0x3d244531,0x3cf4d1e9,0x3cdebfdc,0x3cd18118,0x3cd664fb,0x3cd5c5ef,0x3cc0ea88,0x3cc17e19,0x3ca87017,0x3cc69538,0x3ce5ebf3,0x3cbeabe2, -0x3cbffa61,0x3cb5d8b3,0x3ca8a168,0x3c9e7bd8,0x3cb3b696,0x3cae4bb4,0x3caf800b,0x3cb65163,0x3caa9d54,0x3ca18f8a,0x3ca27ebd,0x3ca4ed00,0x3c9f3b83,0x3c9463ef,0x3c9e5fa6,0x3c866964,0x3c8793d6,0x3c86d708,0x3c862395,0x3c86cdce,0x3c8952bf,0x3c7cec83,0x3c616210,0x3c5af571,0x3c72ae30, -0x3c83e463,0x3c9a1015,0x3c9b2685,0x3c9abd39,0x3ca02fad,0x3ca716e8,0x3cba8768,0x3cbd4fe5,0x3cc5f504,0x3cc40c58,0x3d2325d5,0xbba6e164,0xbb9e77dd,0xbb4aee0a,0xbb7335d2,0xbb53337d,0xbb89c5a8,0xbaa5a31b,0xba824105,0xba94fafc,0xbaff3584,0xbb3c54a3,0xbb80762d,0xbb518f6f,0xbb32d98d, -0xbb22ae1d,0xbaecf339,0xba61caa2,0x39a8de04,0xbaafae2a,0xbb1e6e4b,0xbb235a0d,0xbb53d756,0xbb7cc6d9,0xbb87b336,0xbb870f97,0xbb910792,0xbbaecd2c,0xbb8af87f,0xbb897311,0xbb90b6c6,0xbb81c911,0xbb82a0f7,0xbbacee09,0xbbbec1f8,0xbbb23cb4,0xbb6dd3a3,0xbba2ffe8,0xbc299266,0xba01b72e, -0xbabc1118,0xbb184f07,0xbc0202d6,0x3b844ae4,0x3bb645d1,0x3b4626d3,0x3b455046,0xba8f452b,0xbbc388af,0xbbd53723,0xbba096ab,0x39477e9e,0x3ba7decb,0x3bc2a9c2,0x3bb7ffb0,0x3b7b168a,0x3b380c1a,0x3a3d73d3,0xbb8b1eb1,0xbbde01e1,0xbbf55e32,0xbbdc96d3,0xbbd78626,0xbc1f610b,0xbb92c090, -0xbb578fb2,0xbbd8e79b,0xbbc95f22,0xbbe525ab,0xbc2e3087,0xbc58b4b6,0xbc769ea4,0xbc175a16,0xbc6582ca,0xbc56ca09,0xbaef88a6,0xbb1ceb7d,0x399e18c0,0xbc374a08,0x3c3283a1,0x3c7d0e8d,0x3c1228b9,0x3bb593a2,0xba8d4e07,0xbbe8d6be,0xbc0ea67c,0xbb63aae2,0x3b19bd74,0x3c39f814,0x3c8538cd, -0x3c762e4b,0x3c4ee792,0x3bcfa7fa,0x3b9db0ac,0xbb9c34f0,0xbc05d527,0xbc1adeea,0xbc1af8c7,0xbc24161b,0xbc8d3f84,0xbbf555e0,0xbbcf5ed0,0xbc59911f,0xbbebb7b3,0xbc2d575a,0xbca31800,0xbcb8e81c,0xbcaeec0c,0xbc0df118,0xbc829598,0xbc9d49e6,0x3c33d625,0x3b7fa3a4,0x38434943,0xbc79756c, -0x3c8b7428,0x3ccc7e03,0x3c9bcf45,0x3c8e9be0,0x3b8bffb1,0xbbf0fbdd,0xbc0c7a51,0xbb00a821,0x3c8d5e2f,0x3ccf355d,0x3ceabbd6,0x3cd4872e,0x3cd1430a,0x3ca00064,0x3c75d473,0xbb7cfb29,0xbc2f9dc8,0xbc47a873,0xbc4abfb4,0xbc5c47bd,0xbcbb5fa5,0xbbaeb89e,0xbad24694,0xbc74fc08,0xbc2e45e0, -0xbc7fdc2e,0xbce2192c,0xbd0329f0,0xbd181b2d,0xbc76f811,0xbcd4c1ed,0xbc566473,0x3b3f62e3,0xbb468841,0xba0c9cc2,0xbcbab6b8,0x3ccf0377,0x3ce29730,0x3ce0974e,0x3c773a53,0xb9f34c60,0xbb6c7a80,0xba83267d,0x3c34ca37,0x3ce246ee,0x3ce4a657,0x3d0b51f8,0x3d1d4ec3,0x3d0cd888,0x3cc9c99d, -0x3c8e39ce,0xbb4bf83d,0xbc407e2b,0xbc5c4514,0xbc5c9cd4,0xbc869d91,0xbd02782b,0xbc4bf6bb,0xbc1a1e84,0xbceabe1f,0xbc32dbb9,0xbc9656eb,0xbd1b1e5c,0xbd2c4b84,0xbd11cd44,0xbbb630aa,0xbc9fb506,0xbdb2cb16,0xbdb9b313,0xbb3a53d0,0x3d0dd59e,0xbc21fa44,0x3c37d815,0x3c73a1cc,0x3caa3bba, -0xbc6b55e1,0xbcb1ef97,0x3bc046c1,0xbc1326ff,0x3adf0bc7,0x3cc3df11,0x3d17ce39,0x3d27ab66,0x3c2d77f9,0x3cb7082c,0x3c9ac81f,0x3c3fdd98,0x3c12cb4a,0x3b343b38,0x3c3f18e4,0xbc0e0592,0xbcac0e95,0xbd193c20,0xbc48d3e8,0x3b42f7bf,0x3ccd3da3,0x3cd6d405,0x3c05499f,0xbcb7cf4a,0xbd60eb40, -0xbdb5c51c,0xbddf507a,0xbdc458f3,0x3cd569a9,0xbd4fde3a,0xbd3d22c1,0xbcf215c5,0x3d181b0a,0xbc06ea9e,0xbcbaf07c,0xbcc22814,0xbc890f4c,0xbc436b29,0xbc3b5dd3,0x3ad0c8f1,0x3b0ee522,0x3b2310c4,0xba95710b,0x3bb28ad9,0x3d46164f,0x3c9f1a5e,0x3bac4f6e,0xbb4a9e7e,0x3b526d0d,0xba752fdf, -0xbbde876a,0x3bb433b2,0xbb9d0791,0xbd39a26e,0xbd2eecdb,0xbd08405d,0xbbfe5992,0x3ca794e5,0x3c8b0b7a,0xbd056bf7,0xbc981a45,0x3bf5cddb,0x3d1b8725,0x3cef2364,0xbe1d5fb7,0xbde924f4,0xbd383453,0xbc082b65,0xbc5840b8,0xbcb49ae7,0xbcec08d5,0xbb877e0a,0xbc1b9a6a,0xbbb182d1,0xbc2a69ad, -0x3a13b14f,0xbc066395,0x39a33eef,0xbc6355d2,0xb9ed48b5,0x3d25acad,0x3cc0e83d,0x3cb0cd82,0x3c30a815,0x3c30aa83,0x3c4bc504,0x3c515d3f,0x3c9c2095,0x3bf6c7f9,0xbc3c00de,0xbd2d7136,0xbd445c42,0xbcdf0e61,0xbb3c7f81,0x3b0721a8,0xbd37d20e,0xbd1d0fa2,0xbd95566b,0xbdfcf9a7,0xbe258393, -0xbd9748af,0xbc89b473,0x3cf321c0,0x3d04e6e9,0x3d0ab1aa,0x3c6cc646,0x3bec96f0,0x3c57f7c8,0x3c28bc91,0x3c29ddd9,0xbb18c4a2,0x3a603737,0xbbd554d1,0x3be03bdf,0xbac55661,0x3bce9e8e,0x3cf6c6e1,0x3cdd4f95,0x3c99a7ac,0x3ac07336,0x3b8805fc,0x3bb56f21,0xbba68a6f,0x3baace4f,0xbbe1955c, -0xbbfe1b01,0xbd5c62cb,0xbd750c5a,0xbd118c02,0x3b005664,0x3c01650b,0xbd624998,0xbd388fbe,0xbd941c30,0xbd9a3909,0xbda49ff7,0x3e5e2280,0x3e4744a7,0x3e1cfce6,0x3df25ba0,0x3de92c06,0x3d9c7f50,0x3d68b73c,0x3ccaba57,0x3cb22095,0x3c21c5d6,0xb76db1b6,0x3bba8f54,0x3ba2818e,0x3c25505d, -0x3c102fae,0x3c307f73,0x3ce9c201,0x3c84f4cc,0x3c0971cb,0xbc383633,0xbaf3fcc1,0x3ac1c4e9,0xbc141871,0x3c1d6efb,0xbc374058,0xbcda971d,0xbdb45b90,0xbdb1e3d9,0xbd84d2b0,0xbc64afba,0xbc422860,0xbd5e11ab,0xbd730e30,0xbc5db86b,0x3ddcd540,0x3e37bc8d,0xbc968f42,0x3a3650ec,0x3bb16024, -0x3cf3292b,0x3d245e9f,0x3d2295f7,0x3d29f71c,0x3d5c416d,0x3d2e4a20,0x3d2bcade,0x3ce4de6e,0x3d249375,0x3cd7a97d,0x3c2fc9a4,0x3b7c9bc9,0x3c1653e8,0x3d02b4a0,0x3c84d4de,0x3bf9b6ec,0xbbff98b3,0xbc81301c,0xbcbf959a,0xbd11bc98,0xbd4261fc,0xbd960613,0xbd9dd587,0xbdf887bb,0xbdd197d9, -0xbd8cc1be,0xbce06672,0x3cbeaa80,0x3db7ae80,0x3e02ffa7,0x3e01eb30,0x3de6cfe5,0x3cfadc1e,0x3d4a7513,0x3d5c518d,0x3d788b0c,0x3d61a085,0x3d4c13ed,0x3d0dfb44,0x3cd83804,0x3cc377f9,0x3c844b5d,0x3c02edc4,0x3babb5c3,0x3c667c0f,0x3cc8a481,0x3ce71255,0x3cfa0b89,0x3cd4f663,0x3cfaf584, -0x3c8140cf,0x3c708c19,0x3c0e2978,0x39b8e928,0xba35a39e,0xbc8789bf,0xb9f2ec0f,0x3bc3c8cc,0xbb6eb878,0x3cd5c770,0x3d5793df,0x3d95e314,0x3dae42b4,0x3d9ed36f,0x3d8b8959,0x3d0a3b80,0x3cc8250f,0x3cee9a6e,0x3d492546,0x3c26bdb0,0x3c91d479,0x3ccddcfd,0x3d038cfd,0x3cff2354,0x3d05270a, -0x3d030cea,0x3d032182,0x3cf38de7,0x3cf26183,0x3cd4dc32,0x3cd277ba,0x3cb1f4c0,0x3cbac4df,0x3cda8a36,0x3cf9654c,0x3d1db4c6,0x3cf39644,0x3ce0c3c2,0x3cc249f9,0x3cca4240,0x3cc29ad9,0x3cb43040,0x3c9b79d9,0x3cab50eb,0x3ca72e44,0x3d17e9c0,0x3d3f8e53,0x3d6a56d1,0x3d48f26f,0x3d1bddc3, -0x3d03e896,0x3cb6513a,0x3c3cf303,0x3a685cd7,0xba13f075,0x3cafad8d,0x3cbab581,0x3cb4d82f,0x3cd5409f,0x3d0ab991,0x3d0046c8,0x3cfed16a,0x3cfb48f4,0x3cf2f754,0x3cf1a5a6,0x3cebcc3d,0x3cd4a9cf,0x3ca83171,0x3c91eff9,0x3cb56b4d,0x3cecf8ef,0x3d09926e,0x3d0dbc8c,0x3d02cb4d,0x3d0ab3a4, -0x3d20ef57,0x3d12edc2,0x3d2ab75e,0x3d2181a5,0x3d1d4a25,0x3d056585,0x3ce4fe61,0x3cc13be5,0x3cb5e813,0x3c8969b1,0x3c2aaa71,0x3b905172,0x3ba4dc2c,0x3c284a51,0x3c336867,0x3c9d2123,0x3c6781f6,0x3c41c004,0x3c9a6630,0x3c56b9ed,0x3c1ac915,0x3c384c4e,0x3c29f90f,0x3c4aa62c,0x3c3c3f09, -0x3c579f02,0x3c5f28c8,0x3c766d10,0x3c953059,0x3ca12041,0x3c97b408,0x3c94f7c2,0x3c8ba8e9,0x3c9ce980,0x3c7b750e,0x3cef0ff7,0x3cb34182,0x3ca4336a,0x3c4bc34b,0x3c1bfb0c,0x3bcea9db,0x3b189709,0x3c6dcca2,0x3c9d51a1,0x3ccd3d2d,0x3cead36d,0x3d0c5618,0x3d1b5881,0x3d0bfe21,0x3ce34529, -0x3cbd9ee1,0x3c993178,0x3c822799,0x3c6e0a70,0x3c94aaa8,0x3caf4998,0x3ccabfd8,0x3c9cd0b4,0x3cb1d975,0x3ccddab5,0x3ccc4ce6,0x3cc87382,0x3cc67019,0x3cc29227,0x3cba0adf,0x3cb8d31d,0x3ca54ea7,0x3c9fa387,0x3ccdaa9c,0x3cc7fb27,0x3cbec813,0x3cb8c264,0x3ca4dc37,0x3cac389a,0x3cb04e3c, -0x3cb02ecd,0x3ca4e5b3,0x3c8d065c,0x3c853348,0x3c5db0d8,0x3c457589,0x3c3577ee,0x3c2d15b5,0x3c21563e,0x3c30279a,0x3c4a444d,0x3c688c24,0x3c7ffda7,0x3cc97213,0x3c084400,0x3bbbae2c,0x3bd092e7,0x3bd4f617,0x3b9dc973,0x3a8e56f4,0x3bccfbc1,0x3bbc8f2c,0x3b4c21f6,0x3b63dc9d,0x3b25f433, -0x3a00c052,0x3ab99965,0x3ad3005c,0x3aec4748,0x3bab2a9b,0x3be870c2,0x3b9cc84b,0x3bab75bc,0x3b9f296c,0x3b8a0b8d,0x3b9926ce,0x3b96983e,0x3b715fcd,0x3b9262c4,0x3ba26caf,0x3ba280df,0x3bd04811,0x3bd24057,0x3baeb77b,0x3baab015,0x3b9c3396,0x3be6dbe2,0x3bb117b9,0x3bb8b166,0x3bd0771f, -0x3bb948d8,0x3ba16ab8,0x3baaa86e,0x3bae9b5c,0x3bd45f2b,0xbaebcbd5,0x3c3d51d1,0x3c5544fc,0x3bf10894,0x3c3972c0,0x3c03d569,0x3a2db536,0x3a35f809,0x3b08a16d,0x3b94d25f,0x3c32ae2a,0x3c648fab,0x3c4e6dfd,0x3c10af45,0x3bd7cc23,0x3b8b41d0,0x3bafa714,0x3b9e3956,0x3ad133f3,0x3b938d40, -0x3bc60943,0x3bbae769,0x3c6f51da,0x3c5f9367,0x3b760653,0x39be35ef,0xbadf9def,0x3c057433,0x3b990597,0x3ba78186,0x3be35bf6,0x3bac4a84,0x3bee1be3,0x3bfb1809,0x3c2e4c45,0x3c2d9c26,0xbbc0dca9,0x3c71ef3e,0x3c97a259,0x3c089e29,0x3c4ed92d,0x3c04e8d8,0xbbb9192a,0xbb0e332e,0x3811f782, -0x3b347ee6,0x3c81e5c9,0x3ca98a93,0x3caa2f11,0x3c4d9eaf,0x3bfc304f,0x3a19b57b,0x3b3a8b3f,0x3ae8743c,0xbb6c6538,0x3a3e00d9,0x3b82cb27,0x3b7af37e,0x3c90b620,0x3c778e20,0x3b9554e9,0xba630948,0xbb0476aa,0x3c72c964,0x3bc90f6e,0x3c0a8c0c,0x3c24268f,0x3bd27ff8,0x3a7d6d4c,0x3ab67fdb, -0x3c194317,0x3c2bdcc0,0xbc8d981a,0x3cbe2055,0x3ceb161a,0x3c516fde,0x3cc62627,0x3c40e3c9,0xbc3808db,0xbc0d768c,0xbb5c96b5,0x3bcdc02a,0x3cf026ba,0x3d06c505,0x3cdf71d7,0x3c9334ca,0x3c3d5e40,0x3a8af2ac,0x3abb68d1,0x3a1845ba,0xbc22e3d7,0xba1bc8fd,0x3b9951f8,0x3b00480b,0x3ce9c9d0, -0x3cc8dcc3,0xbaeea42e,0xbc458147,0xbc6eb879,0x3c567a05,0x3b703692,0x3bb87451,0x3beef66b,0x3b839eee,0x3bf4328a,0x3c4fff21,0x3caa9a2d,0x3c80a31c,0xbc8333a4,0x3cb85354,0x3d07624c,0x3c9f80ba,0x3cc94e5f,0x3ba789e3,0xbc5feb81,0xbc20b512,0x3b6c1514,0x3c7e5b3c,0x3d142510,0x3d29c353, -0x3d02fd21,0x3cc3f6c3,0x3c88a18e,0xbad1ffb0,0xbb0f7ed0,0xbb4cdf02,0xbc6ddf63,0xbbb7370a,0x391774c1,0xba841b0e,0x3ce6d7a2,0x3cc28b20,0x3b484c5c,0xbc0d051d,0xbc1fe425,0x3cea7c6b,0x3c3ea6b1,0x3c9ad6a7,0x3c7b2d00,0x3bc86307,0xbcedeaa2,0xbd90de8b,0xbda96d52,0xbd33bbfb,0x3cb3502f, -0x3cc07f88,0x3c951fb7,0xb8071919,0xbc7e5460,0xbcb5ff6a,0xbbd1ba47,0xbc30b231,0x3b18314d,0x3c3dbd3f,0x3d05ce1d,0x3d1b784d,0x3cc50b4f,0x3ccd4b9b,0x3ca110a0,0x3cc8db0a,0x3b288e98,0xbc01dbc3,0xbc319d16,0xbc674abc,0xbc393e01,0xb946e15f,0x3c86afa9,0x3cd88cb0,0x3d4a2cef,0xbc61540b, -0xbd3fa9f7,0xbd0a92f1,0xbd86e377,0xbd5e929f,0xbcc0e016,0xbca08d5c,0xbbe47be0,0x3bd0224d,0x3c895208,0xbb79039a,0xbc55767d,0xbcef368b,0xbccec3f6,0xbc84a485,0xbc769de4,0xbc449590,0xbc93b39b,0x3b14aabf,0x3b9311d8,0xb89b7270,0x3a1a19cb,0x3b4cb4da,0x3c9d031b,0x3cd2e2af,0x3cd94c54, -0x3c2b4513,0xbb8e002e,0xbc54f928,0xbc98cc95,0xbcc66ec0,0xbcf71b6e,0xbd0259ae,0xbcb06110,0xbc7db53c,0x3c6ad655,0x3b9bbab4,0x3c32c923,0x3c6c6387,0x3cbc4f62,0x3c740e4e,0xbb513b92,0xbc820a9a,0xbd9dea07,0xbdcc2011,0xbdb1b3b1,0xbd15462d,0xbd698fcb,0xbcd01009,0xbcaecc80,0xbc32e70b, -0xbc495779,0xbaf84889,0xbc3ec90e,0x3b2deda9,0xba88d13a,0xbb237067,0xbaabf30b,0xbb96d836,0xbb96a7dd,0x3caf5bba,0x3ce8a641,0x3a9f9fdb,0xbc2c1018,0xbcaa25e9,0xbce285c0,0xbcfae4e8,0xbd19c382,0xbd436f69,0xbd0793bc,0xbc817231,0x3bf7cf11,0xbba0ac59,0xbc8b16b0,0xbce94646,0xbc99ad6b, -0xbc6e9a16,0xbb3f6fa1,0xbd5d76ea,0xbcf148ee,0xbd139e1c,0xbc96859a,0xbbbd5cb0,0x3cc4687f,0x3c007598,0x3c189750,0xbbd673be,0x3b4be54e,0x3ba386e4,0xbb8e74fc,0xbabd667a,0xbb0f8e1d,0xbc06a028,0x3ad277aa,0xbbd14e94,0xbc97222f,0x3ca8164f,0x3cba1776,0xbba01651,0xbbb89969,0xbc449c6c, -0xbc6eea35,0xbcc05e28,0xbd1d2ed0,0xbd81b062,0xbd3d88a0,0xbd231615,0xbd1154b2,0xbd50c015,0xbd90f914,0xbd9207ad,0xbdc4f555,0xbd9666ff,0xbce31891,0xbd0e353b,0x3d7a10e7,0x3df6cf06,0x3e28e7b7,0x3dfadd60,0x3dd2079c,0x3d78ceb0,0x3d203193,0x3c2710fd,0x3c5477b2,0x3b10e87e,0xbae1c402, -0x3b2fd813,0x3b4fd130,0xbbd1405a,0xbb05ead5,0x3b44481f,0xbab74baa,0x3cd93e91,0x3ced73c3,0xbc79effb,0xbbd1c81a,0xbc2b1eac,0xbc426789,0xbd06b8c0,0xbd24fd59,0xbd7e6c93,0xbd12c1f4,0xbd0c7ea4,0xbd41e322,0xbd4d29d5,0xbd5642d7,0xbd02754c,0xbd8b6bdd,0xbd96c6b8,0xbd78dd94,0xba4a5ef8, -0x3e0206c3,0x3dc3a872,0x3d56b9a4,0x3d98967f,0x3d409a46,0x3d54910a,0x3d360129,0x3d2c9d32,0x3d1023d5,0x3cee934a,0x3c19408e,0x3b704441,0x3c057cea,0x3cf816b3,0x3c209068,0x3aa983d2,0xbaab5888,0x3a5543f6,0xbc30217d,0xbcf22077,0xbd3d0a12,0xbd763921,0xbd7e4970,0xbd64cbef,0xbd3a404f, -0xbd4ff5ca,0xbca5de6c,0xbcd5bf09,0xbd976c59,0xbda8d738,0xbda8443a,0xbd98f247,0x3c6a6274,0x3daf2aea,0x3e1ac904,0x3e134969,0x3d3d97b8,0x3d433a53,0x3d4a5285,0x3d207984,0x3d099c2e,0x3cf935a3,0x3cfa2250,0x3cea2a30,0x3d057d85,0x3cf2f028,0x3ccf3d06,0x3ca8ac58,0x3c7c6def,0x3c7270c6, -0x3ca64869,0x3ccef1d6,0x3cc88bbf,0x3c84f0ad,0x3bc6f687,0xbc649a4f,0xbcb9d861,0xbcd7b100,0xbd0da80d,0xbd36e8f3,0xbd4e3bc6,0xbd353fe3,0xbcee4898,0xbc4365ce,0xbb15ce1f,0x3d0c6a27,0x3d6ed102,0x3d907537,0x3da00e14,0x3d8e3b65,0x3d54c901,0x3d4ae62f,0x3d063047,0x3cf7bf9c,0x3cdb714a, -0x3cfc6f79,0x3cfde21d,0x3d0750be,0x3cf4bab9,0x3ce6357a,0x3d0003a4,0x3d03936a,0x3d0f56f7,0x3cf6aa44,0x3ced72bb,0x3cba2ac6,0x3cdd5a46,0x3ce2d13c,0x3cdd8315,0x3cd09e7c,0x3cb3d628,0x3c920f48,0x3c90cb9d,0x3c6fa20d,0x3c9e68b3,0x3c151ad9,0x3c80ddf8,0x3cd8c0e9,0x3d138895,0x3d33a402, -0x3d541941,0x3d5922db,0x3d57a47d,0x3d6023f6,0x3d6da0d1,0x3d6606bd,0x3d2ab92f,0x3d20389c,0x3cf9eb2c,0x3d1493fb,0x3d0d49a9,0x3d0e98a6,0x3d1a4730,0x3cf4ccc3,0x3ccb4bbd,0x3c982287,0x3cab7c94,0x3cb5504f,0x3ccfe171,0x3ccbcd2f,0x3ce26d05,0x3cdb8141,0x3ce8463b,0x3ce90064,0x3cee43bf, -0x3d0a1602,0x3d2e7be1,0x3d3bb91d,0x3d477b4c,0x3d41d7a2,0x3d521b90,0x3d7a7200,0x3d88bcd2,0x3d7ed0bd,0x3d6bc006,0x3d6d0c5f,0x3d6ed565,0x3d35b959,0x3d109c32,0x3cd7e9da,0x3c93115d,0x3c64c184,0x3c82caea,0x3cc59e50,0x3c26a13d,0x3beef445,0x3bb03555,0x3bb5f62f,0x3b1abc55,0x3c0778dd, -0x3c372520,0x3c5fc517,0x3c7c28b3,0x3c742892,0x3c75a57d,0x3c8639b2,0x3c8c9f06,0x3c9988cf,0x3cc48837,0x3cdee58a,0x3d0cef2d,0x3d1589f7,0x3d172c76,0x3d1adeaa,0x3d0154a1,0x3d0ee5a1,0x3ce9df38,0x3cc2c194,0x3c91d25d,0x3c60358a,0x3ca85f97,0x3c59df04,0x3c5f792d,0x3c861bb8,0x3c8d5d00, -0x3c95ac62,0x3cb1f91a,0x3cc6ad02,0x3ca4ffd4,0x3c7cd6ae,0x3c5885e2,0x3c6c0847,0x3c428a6c,0x3c260794,0x3c0d8571,0x3c47b4a6,0x3c06e1ac,0x3bbeda24,0x3bb4c153,0x3bd1cf15,0x3be3707a,0x3be8d85e,0x3be87c37,0x3bdb9928,0x3c1fce73,0x3c430c59,0x3c1479be,0x3c3119ea,0x3c5bb814,0x3c8f2a7d, -0x3c9181d4,0x3c97e3aa,0x3ca6651d,0x3cbccefa,0x3cc2525e,0x3cb44d8e,0x3cb66fd9,0x3c9e51e5,0x3c977715,0x3c835165,0x3c4ff856,0x3c27e37c,0x3c0d97e7,0x3c0c5d9e,0x3c1ae241,0x3c3cc27d,0x3c7d2389,0x3babf1eb,0x3b147aef,0x3a430a34,0x3b591777,0x3b95d515,0x3b4fdac4,0x3b788183,0x3b7eb554, -0x3b850760,0x3ba5e6dc,0x3b96570a,0x3b4ebf49,0x3b5bd854,0x3b67217d,0x3b49a7e5,0x3b7d455d,0x3b98e49b,0x3beecee6,0x3bb506e8,0x3b9b1925,0x3b844b8c,0x3b637ecb,0x3b50239b,0x3b31a6af,0x3b1c8b0d,0x3b3c8726,0x3b9d5098,0x3b592c8a,0x3b1bbd84,0xb8281490,0x3a8cd779,0x3acc4ec1,0x3b49e171, -0x3b3f958d,0x3b2bd6d9,0x3b315127,0x3b0f84a3,0x3b06c654,0xba9d33e2,0x3bc3fd73,0x3b8d9a3c,0xba30da72,0x3c093892,0x3c0865e3,0x3b9c659c,0x3bf2a3ae,0x3beabca5,0x3b8e621b,0x3af01ffb,0x3ada12c0,0x3b47951f,0x3c009473,0x3c222c5c,0x3c63c70d,0x3c24d51e,0x3bdc1a6b,0x3b9a60b8,0x3b98f997, -0x3b792ae2,0x3b2ebd15,0x3b0d6ffa,0x3b7a7984,0x3c180fb3,0x3bd2d802,0x3a9f6758,0xbc1b3537,0xbb8bfa81,0xba97bd3d,0x3b855780,0x3ba7fa8f,0x3be7ce9c,0x3c1ca39e,0x3bb8710d,0xba2542b1,0xbbbc7f69,0x3becddf6,0x3bd86a6d,0xba185d1b,0x3c032193,0x3c34d475,0x3b66a6cf,0x3c1fb8e2,0x3c007f82, -0x39f647ac,0xb9e45109,0xb9c8dde5,0x3aa2d856,0x3c16dfdf,0x3c6e2eca,0x3cc05a36,0x3c7492de,0x3c29ceeb,0x3bc94d24,0x3bc2300c,0x3b3aa8f0,0x3abec2ed,0xba62731c,0x3b0e4d99,0x3c6600af,0x3bbb502a,0xbacb5a8b,0xbc94bd12,0xbc334f3d,0xbbe28f03,0x3b8ba570,0x3bb6d035,0x3bc020c3,0x3bc4d47c, -0x3aeec4ef,0xba923da9,0xbc2149fd,0x3bbe0f07,0x3be1a815,0xbc55c999,0x3c8c5cdd,0x3ca5468b,0x3b9d6e9c,0x3c8fc28e,0x3c52db2d,0xbb29249c,0xbb9d66f5,0xbb9b5267,0x3b201dd4,0x3c8e24d4,0x3cceead1,0x3d055b3c,0x3cafeed2,0x3c3309ad,0x3b57177a,0x3bdfc51d,0x3adcc15e,0x3a1d91e8,0xbb578a0f, -0x3ab7ec3e,0x3cae18cc,0x3c13fba5,0xbb9048d1,0xbd1e121d,0xbca3efdc,0xbc30ebc9,0x3b77e623,0x3c34a873,0x3c4f36d8,0x3ca8ea36,0x3c08289f,0xbb8c0172,0xbc3b56ea,0x3c9585ff,0x3c73f288,0xbc2f55de,0x3c309593,0x3caf2a40,0x3c252c6a,0x3cb9769f,0x3c274c71,0xbc4b634e,0xbc44048a,0xbb2e2771, -0x3bc22379,0x3ccd4462,0x3d076725,0x3d1a6bc7,0x3cc1a756,0x3c2f9e95,0x3bbf911b,0x3bc31ab2,0x3892fb6e,0xbb34d130,0xbbe73e30,0x3b0eae19,0x3cb3298f,0x3bef5a88,0xbc3dffe2,0xbd1cbcab,0xbcd3afe4,0xbc758974,0x3bef903c,0x3c26511a,0x3c58e92e,0x3b85606b,0x3b68a448,0x39d5c9f7,0xbcb66e89, -0xbdc0640f,0xbd83c023,0x3d53979b,0x3c994b11,0x3c524807,0x3a92950e,0xbc45b061,0xbc922cc0,0xbc1987fd,0xba3171bb,0x3bdcf4ca,0x3aaf4871,0x3c87320d,0x3cbbfe68,0x3d50d937,0x3cce47d3,0x3c8bf051,0x3c7af3a8,0x3c96a857,0x3c6229ea,0x3c326497,0xbbd3c211,0xbc13cc63,0x3c7bbc13,0x3cb74a07, -0x3cb49fed,0x3d0a0a30,0xbd736708,0xbd9ae58b,0xbcedaee9,0xbd03ceaf,0xbc98fd0e,0xbc63ba8e,0x3beb2340,0xbcaea8f9,0xbbfe6d1c,0x3d1568fc,0x3c4cb5a3,0xbd0d455f,0xbd2573b3,0xbd23b1ae,0xbc94d2fc,0xbc8fe1c2,0xbc197265,0xbc7e6579,0xbb756b47,0x3a87af35,0xbb0d31b3,0xba6feade,0xb7bea966, -0xbbf8285b,0x3c6bd9a8,0x3c8c4bee,0x3b9a3931,0xb9eb2f31,0xbc291759,0xbc8fc942,0xbc2761f0,0xbbc5e6a5,0xbc2b9804,0x3a3117cf,0xb94de762,0x3b6d9444,0xbb16c7e8,0xbc178dc6,0xbce2a5ca,0x3a5b73cd,0xbc226668,0xbd244b18,0xbce2b51c,0x3ccb6868,0xbc9bee57,0xbd146163,0xbca399e6,0xbd3ba081, -0xbcf1be9e,0xbc9c5924,0xbc2118bd,0xbc538b6c,0xb94b6342,0xbb6652f9,0x3b427dbd,0x3aadf636,0x3a9f522f,0x3c0e17c8,0xbb473fd0,0xbcaf998e,0x3c6e8276,0x3c96c9a2,0xbb6f724e,0xbc132ca2,0xbcb042e9,0xbcbd7235,0xbcf54de5,0xbcf4c446,0xbc9de98c,0xbc180bd2,0xbc1e7863,0xbd194244,0xbd233570, -0xbd2904ce,0xbd664fea,0xbc107683,0x3b44671b,0x3bacf055,0x3d13b51e,0xbce678ee,0xbcb70428,0xbcc90230,0xbcafcd9d,0xbbb734bf,0xbc19e68a,0xba9dabb1,0xbc8dafdb,0xbc035078,0xbb44055f,0xbba9133a,0xbaca981a,0xbadf364b,0xbb68db1a,0x3b69df90,0xbbe691d5,0xbca41aff,0x3c4225f6,0x3c6e1da5, -0xbbf49324,0xbc600ebc,0xbcd90005,0xbcda2bbe,0xbd07a7a7,0xbce5b854,0xbca5c489,0xbc575665,0xbc2d3d49,0xbcf6d3de,0xbcf75ba1,0xbd067b52,0xbd86633f,0xbcb7f0db,0xbcb39884,0xbd483b89,0xbce61e4c,0xbe05037e,0xbd0d2c49,0x3d2f6cf7,0x3d412370,0x3d34c9ee,0x3c2ff568,0xbc2900b6,0xbc15afca, -0xbb5f04a8,0xbbd28ce6,0xbc41b37a,0xbb450fa1,0xba06cc23,0xbc52bc61,0xbc33d4bc,0xbc35bb58,0xbc847232,0x3c04023d,0x3c29dfdd,0x3b33a5d5,0xbc94fb97,0xbcc20669,0xbc84e706,0xbc948301,0xbc5de87a,0xbca612cf,0xbcabb44b,0xbcd51513,0xbcac3374,0xbcb56f8a,0xbcfeba71,0xbd5eb4d3,0xbcdf5c1b, -0xbd33051f,0xbe04393b,0xbe14a728,0x3e1e94fd,0x3e2e768d,0x3df287e2,0x3df137b1,0x3d8b606f,0x3dab79d7,0x3da0b151,0x3d56bc81,0x3cf14a44,0x3ca10d69,0x3ba4d871,0xbb06a091,0x3b9d7eb4,0x3c49e710,0x3c33a320,0x3bb6edf3,0xbc2eedbd,0xbbf5a123,0xbc485a85,0xbca3e528,0xbc54a624,0xbc974f76, -0xbc91d7d2,0xbc4e8b15,0xbbc13158,0x3b903636,0xbc761fe6,0xbcc45bdd,0xbc74d9c1,0xbd266b59,0xbd5728cd,0xbdc21aac,0xbdb597f7,0xbd26fcea,0x3d4a30a8,0x3ddc8f1e,0x3d9459c6,0x3d70a241,0x3d788601,0x3d6855ac,0x3d50694d,0x3d4eb663,0x3d3f5f8f,0x3d0f7894,0x3d26b13d,0x3d158b3d,0x3d053aa8, -0x3d0d198d,0x3cce2896,0x3bd49c05,0xbb1a2b0a,0xbb855e25,0xba6273d0,0x3c2bdfe4,0x3c01d10a,0xbbe9e1aa,0xbc8add45,0xbcddeacc,0xbd1e2872,0xbd453d4a,0xbd73fd87,0xbd92cca5,0xbdb014cc,0xbda6d25d,0xbd6683e5,0xbd346c7c,0xbbfe4d97,0x3d009722,0x3da7af5d,0x3dc7910f,0x3dbfdb8d,0x3d991e8e, -0x3d9892f8,0x3d55140e,0x3d47ff60,0x3d2ce12a,0x3d108bd0,0x3d166249,0x3d01d2fc,0x3cdca1bf,0x3ce0f5d5,0x3cef0258,0x3cde95e8,0x3cdef7b4,0x3ccaf17c,0x3ca78bd3,0x3c86e316,0x3c82e1f4,0x3c983438,0x3ca95bbf,0x3c9a32e4,0x3c60b6c2,0x3b931a07,0x3b4ba765,0x3a88c5af,0xbb9087d0,0xba58c394, -0xbb82046a,0x3b92b585,0x3c243c49,0x3ce9c415,0x3d187596,0x3d6affbb,0x3da57381,0x3dbd6a5d,0x3dc97aeb,0x3dc2df96,0x3db47fb9,0x3d4bdcf9,0x3d457d0f,0x3d19b171,0x3d224520,0x3d0a64e0,0x3cd8fb11,0x3cba2f7c,0x3ca72de9,0x3ca6f8ea,0x3cacbc99,0x3ca65a23,0x3ccc956a,0x3cc6c7c8,0x3cd8704f, -0x3ce52115,0x3ce95bbc,0x3ce07857,0x3cc39673,0x3d027225,0x3ccaf1c1,0x3cc6b804,0x3cc77581,0x3cc955dc,0x3d14134f,0x3d3f6192,0x3d5d62d2,0x3d7f1613,0x3d987ae1,0x3da0f66e,0x3da06c1c,0x3da8696b,0x3dad26df,0x3d8fae9b,0x3d7648ce,0x3d6f159f,0x3d50c8e0,0x3d4f06e8,0x3d46e6b4,0x3d0f00b8, -0x3d2fd527,0x3d265d0c,0x3d35ef5d,0x3d482bb5,0x3d306ec3,0x3d4326ad,0x3d27452e,0x3d20ef29,0x3d1a8c5c,0x3d16c172,0x3d0f56d0,0x3cfe1d43,0x3ce68c56,0x3cec07aa,0x3cdbb63e,0x3cafacf6,0x3ca17551,0x3cc3fffe,0x3d06a103,0x3d1376b0,0x3d1caa59,0x3d158357,0x3d03fc32,0x3d18d6d9,0x3ceaff3b, -0x3d0d604f,0x3d2c2ba3,0x3d256dcd,0x3d4df110,0x3d606127,0x3d5ee676,0x3d5ffbcc,0x3d628742,0x3d14f5fa,0x3d1d7419,0x3d0d6768,0x3cee703b,0x3cc4bd16,0x3d09429a,0x3ce61812,0x3cae95cd,0x3ca4940f,0x3cb90e7b,0x3cc47ae9,0x3cc41a8b,0x3cc5d767,0x3cceaefd,0x3cf6d343,0x3d05b5be,0x3cd67905, -0x3ceafc90,0x3cfb9918,0x3d09545c,0x3d0cadb3,0x3d0ff112,0x3d152f93,0x3d20ed70,0x3d2a1ee2,0x3d30d935,0x3d44bfdb,0x3d41503d,0x3d479d78,0x3d46b100,0x3d39f152,0x3d3b39c3,0x3d293a7e,0x3d1c6a12,0x3d18de78,0x3d167f49,0x3d6cbe99,0x3bfa4316,0x3b763b9d,0x3b5c8537,0x3b8584fc,0x3b861017, -0x3b97aece,0x3b9c70e5,0x3b7c4884,0x3b5d814a,0x3b6d5b4f,0x3b78a045,0x3b8fd942,0x3b5e941e,0x3b4c19ca,0x3b4a6bd7,0x3b92a123,0x3bb65fc9,0x3bc4d0b7,0x3bd179eb,0x3bd8497e,0x3bd1d5ca,0x3bca3a9a,0x3bbef3ea,0x3bac430c,0x3ba00b65,0x3b9ae538,0x3bbfa91f,0x3b5f03cc,0x3b403d2f,0x3b2d82c7, -0x3b4065c1,0x3b5a044d,0x3b88b27a,0x3ba3d639,0x3b8f347b,0x3b3a44f9,0x3b72ca50,0x3934de87,0xba90c028,0x3add3728,0x3bd49419,0x3c03741b,0x3bd63591,0x3ba16f10,0x3bb87fbb,0x3bc8a062,0x3beab5bf,0x3c1bbd6a,0x3ba39d48,0x3b86bb10,0x3b9baa0a,0x3bcf6680,0x3c1e11f8,0x3c4f2865,0x3c4f4281, -0x3c43af9d,0x3c2aeb53,0x3c2a0080,0x3c1d069e,0x3c017b34,0x3bce056a,0x3bcb4c13,0x3c330114,0x390a9332,0xbb71dac9,0xbb54ee24,0x392326b8,0x3b7ab4d8,0x3bc5a50d,0x3c282cf2,0x3c2aee96,0x3b672586,0x3b09c5e9,0xbb26d1f8,0xbbb2b116,0x3a1eb203,0x3bc2450c,0x3c5a8c59,0x3ba2fe26,0x3b60b850, -0x3bbcfb7a,0x3bc5e30e,0x3c0956f1,0x3c1cbfd9,0x3baeec85,0x3b2804b7,0x3b6d8c24,0x3c11ac9d,0x3c5da81f,0x3ca419ce,0x3c9db79e,0x3c973e3f,0x3c674cc3,0x3c73791f,0x3c44a899,0x3c10e086,0x3bcec62d,0x3b9cbacd,0x3c518987,0xbbb7c700,0xbc27ac56,0xbc0f3b45,0xbbddb354,0xba1ece78,0x3b800a67, -0x3c2dffd3,0x3bfa604a,0xbb9b5db0,0xbb17f7de,0xbc48693b,0xbc8b5a82,0xbb5c2722,0x3bf87d5e,0x3c537614,0x3c0b3ae4,0x3bda6f71,0x3bab6821,0x3c199b00,0x3c2f8e10,0x3c471d15,0x3afdc4fc,0xbabe443b,0x3b937e6c,0x3c4c9771,0x3ca7fe37,0x3ced1ae4,0x3ce3d716,0x3cc9bcff,0x3c8cadcc,0x3c9dfade, -0x3c7ee5cf,0x3c2eae97,0x3bd88dfb,0x3bc0bc8a,0x3cae5642,0xbc46b558,0xbcb4aaae,0xbcbf14ae,0xbc30239d,0x3aa38407,0x3baff0b2,0x3ca026d3,0x3c98a382,0xbba0bbe7,0xbbf6715e,0xbc4e7261,0xbc6a8095,0xbb33acbc,0x3c05e1d6,0x3c5b504f,0x3b798eda,0x3bec1711,0x3badc99e,0x3c5b5868,0x3c2bf043, -0x3a456ecd,0xbbd47257,0xbb4aa1ed,0x3b9bda63,0x3c9397c6,0x3ce13f74,0x3d1522ab,0x3cef81fd,0x3cd19ba1,0x3ca8f245,0x3cb6a779,0x3c88e7fe,0x3c2c127e,0x3ba19812,0x3bb747ae,0x3c8aca41,0xbc8d46ac,0xbcffc061,0xbcbbe05d,0xbc9ee0e0,0xbb6e7b87,0xb9fc7e61,0x3c851a7f,0x3bf1e504,0xbc985580, -0xbc4847fe,0xbc315753,0xbc1d673a,0xbd4b418b,0xbd35e7d4,0x3cf6ac26,0x3cd677c1,0x3ccaf12a,0x3b45ccda,0x3b183768,0xbb450a28,0xbbdb2080,0x3bc989ee,0x3bccc056,0xbb4b6f0e,0x3c413139,0x3c96b5ec,0x3d1ed73a,0x3d0cafe9,0x3cee51cc,0x3c269db0,0x3c5a02f9,0x3c201998,0x3bbd678b,0x3be9c91b, -0x3bf5982a,0x3c8055dd,0x3bc90c42,0x3c0e02a1,0x3d23d1d1,0xbcfc7a6b,0xbcf9927c,0x3c1bd6e1,0x3cf611d8,0x3d1ca26a,0x3c8f3ba4,0x3ba3c04f,0x3c2571c1,0x3c63cf6e,0x3bcdf98b,0x3b66835c,0xbc945556,0xbcbec473,0xbcc00014,0xbc520b9b,0xbc3d56e6,0xbbbb0da4,0xbbdd2b89,0xbb9b4cd2,0x3a9f086f, -0x3b8f0a7e,0x3c313e86,0x3c19e6ea,0x3b8bf1b5,0x3c3f5328,0x3c654477,0x3cb8bea9,0x3c691731,0x3bf22cd5,0x3a14166d,0xbbe8e421,0xbba25bd9,0x3a9a4f46,0xbc853f05,0xbcb9058a,0xbc88a575,0xbcb1a7d8,0xbcbd631e,0xbc60112e,0xbd291391,0xbd6fb7e3,0xbd8885b3,0xbc8418d2,0x3cfe717c,0x3d2ba1ad, -0x3c10fefe,0xbb674ca9,0xbcd0c576,0xbcb96e17,0xbc6ef2d3,0xbc9ddb23,0xbc5b3051,0xbb2683e0,0x3a9fa0c4,0xb9f5da4a,0x3a55644e,0x3baedac7,0x3be65d0b,0x3a83dafd,0xbae65cc7,0x3c08964f,0x3c249cbf,0x3c9fa828,0x3bb95b66,0xbadac98d,0x3b892939,0xbb16efa9,0xbb5a1af5,0xbbf51dc1,0xbc41c50f, -0xbc611b5a,0xbc9b4408,0xbcea6000,0xbcecbc0f,0xbc83b5b5,0x3bd13d61,0x3c5670bb,0x3b4fc264,0x3c91582b,0xbd51e730,0xbd2b9947,0xbcfa732d,0xbd0ae320,0xbd41fe1d,0xbccac9fa,0xbcaa12aa,0xbcff5e30,0xbca1554d,0xbc2bb8ec,0xbb9e5415,0x37ea38dd,0x39ed9a5d,0x38adbda9,0x3ab18c41,0xbaa44d21, -0xba41974e,0x3af8b804,0x3bac9ff6,0x3c942727,0x3b996d03,0x3a5697d9,0x3b3a6b23,0x3af58dff,0x3a0b1e81,0xbaef1338,0xbc0389f2,0xbc51a6b1,0xbc44448d,0xbce53b9b,0xbcce9e14,0xbb0aff1b,0xbbf4ee81,0xbb3da92a,0xbafafdc3,0xbd41f9f7,0xbdfcb5ba,0xbde49e58,0xbd9579e4,0xbd28566d,0xbcd3977a, -0xbccd82b2,0xbcd3f571,0xbcb4ad53,0xbc754545,0xbc4ccb9e,0xbb4f9142,0xba0c8e77,0x3b663f9d,0xba513e21,0xb9712dce,0xbb81a382,0xbbffc6e4,0xbbe5f416,0xbabad7ad,0x3ceaee53,0x3ba92631,0xba3e4631,0xbc4fb990,0xbc94968c,0xbcab804e,0xbca11984,0xbc5f316b,0xbc4c9e63,0xbbf5e2f7,0xbcc18410, -0xbd13738e,0xbcc2d418,0xbd6b4688,0xbd94e5f0,0xbd6cc2b6,0xbde81752,0x3d6d807b,0x3dd89fcb,0x3df6e492,0x3debbd42,0x3da3f6be,0x3dbc8e5f,0x3d9f081c,0x3ccc7968,0x3c9f1804,0x3c1c9055,0x3c24eec1,0xbaeb10dc,0xbb0eaa47,0xbc049179,0x3a9c0cb7,0x3b49012b,0xbbc4d349,0x3c2276f3,0x3c1507ef, -0x3b93360d,0xbb8e2510,0xbc30cb8b,0x3aa201db,0xbbbda457,0xbc83cac3,0xbd028a10,0xbd0022aa,0xbd13b6ee,0xbd284b2e,0xbd244fbb,0xbd01afa1,0xbcfadf27,0xbd8c2b97,0xbd9d26b1,0xbd8b35f9,0x3c0e70e4,0x3d8dc38e,0x3d88f009,0x3d8b8ef7,0x3d878747,0x3d775460,0x3d5ff903,0x3d44115b,0x3d49f286, -0x3d35fd05,0x3d2030a4,0x3d1b7ddd,0x3cf96b54,0x3cb84ba7,0x3cb16411,0x3c1d686e,0x3b88b86f,0xbb93d0fe,0xbbb73043,0xbbe7931f,0xbc42464e,0xbccf7f55,0xbd07f139,0xbd1bab60,0xbd39a349,0xbd43eb6a,0xbd113abd,0xbd255bff,0xbd3ed69f,0xbd51f33f,0xbd83021f,0xbd89dc72,0xbd938137,0xbcf99fd6, -0x3b3a0982,0x3d2254cc,0x3d4f40df,0x3dae3708,0x3d985694,0x3d9a7964,0x3d87f512,0x3d5c6c30,0x3d4beec8,0x3d49efeb,0x3d479223,0x3d30ea82,0x3d23ce90,0x3d0afb68,0x3cef2a9a,0x3cdec690,0x3ce57dd8,0x3caaf4ec,0x3c630896,0x3c1f7cb4,0x3b47fc1c,0xbb8beaed,0xbc3635be,0xbc99574c,0xbca77853, -0xbcabc7cd,0xbcba681e,0xbcab7291,0xbc91cffb,0xbcaa7a57,0xbcab2893,0xbcbfdaa5,0xbbef3385,0x3c6149e5,0x3cf50b9d,0x3d4c7af2,0x3d8ababe,0x3db7cc6b,0x3daf51ff,0x3d8b148b,0x3d8088ff,0x3d614e6b,0x3d5bab5d,0x3d4f1356,0x3d4628b6,0x3d3d083e,0x3d32cdd8,0x3d1f4d2d,0x3d19b7b6,0x3d015940, -0x3d18d404,0x3d076a84,0x3cfe2577,0x3ced86fc,0x3cd86c6c,0x3cb7808c,0x3c8df206,0x3c48ae60,0x3bd6c80e,0x3c0bfb67,0x3c05fa29,0x3bd853f6,0x3c23642f,0x3c387d58,0x3c47f2d8,0x3c8d9dd7,0x3cbe1acf,0x3cce7454,0x3d3df59c,0x3d8a1dc8,0x3db174e2,0x3db3eec6,0x3db13703,0x3db615c9,0x3d98886b, -0x3d87a9c8,0x3d8e99a1,0x3d8e84de,0x3d8c9752,0x3d82b820,0x3d862cc5,0x3d80c7d1,0x3d7a4861,0x3d7a99d3,0x3d69e37d,0x3d60d55a,0x3d4e72c8,0x3d4507c0,0x3d3ed938,0x3d2f19ac,0x3d22184e,0x3d22b9a6,0x3d199945,0x3d13de44,0x3d0b3baf,0x3d11da90,0x3d293e72,0x3d392e62,0x3d45abac,0x3d4d2830, -0x3d503793,0x3d631f81,0x3d601d83,0x3d6254be,0x3d6395d4,0x3d30b358,0x3d35b8eb,0x3d490cf9,0x3d317802,0x3d5713be,0x3d819668,0x3d3ffaaa,0x3d41e616,0x3d3d1d3a,0x3d3308c2,0x3d2babb9,0x3d36b783,0x3d2f8d7d,0x3d26d86f,0x3d20a287,0x3d214a80,0x3d21d857,0x3d213c33,0x3d1f2862,0x3d1d2b63, -0x3d24198e,0x3d25e8cc,0x3d1c3e08,0x3d1be48f,0x3d18feae,0x3d14fa6e,0x3d19b59e,0x3d1c97ee,0x3d1c60ad,0x3d203a31,0x3d22362d,0x3d225a98,0x3d2c6e0b,0x3d2d0ea6,0x3d3a7a91,0x3d47c6dc,0x3d513782,0x3d641703,0x3d614736,0x3d521921,0x3d5273fc,0x3d4a1f0b,0x3d941e13,0x3c36d986,0x3bd3e1d3, -0x3bd30c72,0x3bdea649,0x3bdcaa1f,0x3c181079,0x3be33fb4,0x3bc629f9,0x3bd227f1,0x3bb6adb8,0x3bc7a1eb,0x3c02e9bd,0x3bcb935f,0x3bb6415f,0x3baa1fd1,0x3bd60595,0x3beff8cb,0x3bec1c5f,0x3c07f27c,0x3c0cf8b2,0x3c0c8614,0x3c057d55,0x3bfe679b,0x3bed6cb0,0x3bf0a77f,0x3bdbdab8,0x3bc10645, -0x3b9baec2,0x3b99fee9,0x3b867e93,0x3bc19b0f,0x3bd61a73,0x3bc69c21,0x3beabf9b,0x3bd5faff,0x3baa2b53,0x3bcba2f2,0x3bb11776,0x3b973572,0x3bcd3cb7,0x3c43eede,0x3ca4b449,0x3c0af697,0x3bcef6db,0x3c315963,0x3c00c477,0x3c1d24d6,0x3c68a717,0x3c150238,0x3bf85d63,0x3be2182f,0x3c039bb6, -0x3c3543b8,0x3c50ab24,0x3c73267e,0x3c7530b0,0x3c655b4f,0x3c507a8b,0x3c3e1587,0x3c2beb68,0x3c19b2d4,0x3bf63437,0x3bd83bd1,0xba9f9574,0xbb7f56b9,0xbb7577d8,0x3bd07ec2,0x3c1e8c01,0x3bc33e40,0x3c483511,0x3c524648,0x3be22e36,0x3bdba9fe,0x3bc0d0ea,0x3b803788,0x3bda3614,0x3c455e95, -0x3cf0cf24,0x3c038efe,0x3b34a029,0x3c517429,0x3bd6e6cb,0x3c1a332c,0x3c95467f,0x3c12a014,0x3bbba860,0x3baa2891,0x3c23056f,0x3c5af85b,0x3c8933e9,0x3caccc90,0x3cab2165,0x3c93f4f3,0x3c8639fe,0x3c608a35,0x3c3cc28a,0x3c283684,0x3bbe8547,0x3b1d5994,0xbc1ef9b1,0xbc2ac257,0xbc3b647f, -0x3b69389a,0x3c1b731a,0x3b42e4d4,0x3c42d42d,0x3c0bf832,0x39cbbe4f,0x3b9d4add,0x3aa03427,0xbb4346b6,0x3bb195ea,0x3c8a2eb3,0x3d319c4a,0x3c0028e9,0x3b302bc9,0x3c7da886,0x3c050421,0x3c312967,0x3ccea385,0x3c071f31,0x3b186439,0x3bb43f20,0x3c3d5893,0x3c99c908,0x3cc5bda0,0x3cfa89b6, -0x3cf26990,0x3cc413a8,0x3cafd42f,0x3c8b2162,0x3c653def,0x3c45adb6,0x3be29c13,0x3aac7892,0xbca9041b,0xbce5dfe3,0xbcf23506,0x3b27d3d9,0x3c5a87d4,0xba9c4d27,0x3c9b5038,0x3c9a63a9,0x3a6c9cb1,0x3b8365a6,0x3c0aa0a6,0x3b9df8fc,0x3bb64e7e,0x3c70800f,0x3d35608f,0x3bb50d85,0xba67a374, -0x3c5f4667,0x3c0a2fbf,0x3c300c3b,0x3c9df3c9,0x3b09a2da,0xbb1f8b6c,0x3baf291b,0x3c71d4ca,0x3cbe8abe,0x3cf62b77,0x3d0eadb2,0x3d01ac4d,0x3cdb8bf6,0x3cc51ce9,0x3c932dac,0x3c8164b5,0x3c3853a9,0x3b42528d,0xbb95cf47,0xbce956ec,0xbd07ba12,0xbceecca6,0x3a4bd572,0x3c5a2f88,0xbb6e7177, -0x3c5957ca,0x3b903331,0xbc14167c,0x3a8c9da1,0xbb9f3bea,0xbca4d623,0xbc9d19fd,0xbc9200eb,0xbba160cc,0x3cb221c1,0x3d011d08,0x3cbc49cd,0x3c366096,0xba653868,0xbaeee473,0x3c0a4df0,0x3c3bdb18,0x3b6ae549,0x3c7f4093,0x3ca0d3a0,0x3ce51d6d,0x3d362bab,0x3d2ba7d9,0x3cb60061,0x3cb30ebe, -0x3c52e14f,0x3b8118e5,0x3a4110c9,0x3b972f40,0x3c426dad,0x3beaf327,0x3b82db03,0xbbfccde6,0xbc33e1a2,0xb9ef12b4,0x3cf863c8,0x3d035494,0x3d1f2694,0x3d22f6dc,0x3ca83afe,0x3c645359,0x3d933fa0,0xbc4e51c8,0xbca28a7f,0xbc024f72,0xbbd67f46,0xbbfefb98,0xbc2233c2,0xbb720e9c,0x39b883bd, -0xbb1f229e,0xbba59edf,0xbb210f64,0x3b9bdcd6,0x3c3223d8,0x3c48ad9c,0x3c50b605,0x3bf575f0,0x3c0d547c,0x3cb238c3,0x3c50e7b3,0x3bf89dc1,0x3b14b80c,0xbc0568e9,0xbc41c5d7,0xbc3802df,0xbc4bc60f,0xbb2dfa8a,0x3c3036f1,0x3c3b5b8b,0x3b092145,0x3c3cad0b,0xbd677a50,0xbd918bf6,0xbcd493e9, -0xbc9a5b0b,0x3bf178bb,0x3d3769df,0x3c9b7317,0xba53eaa2,0xbca0e715,0xbcaea155,0xbc4fac22,0xbc57700d,0xbc0bb91f,0xbb425ec2,0x3a89e6cb,0xbaa177ef,0x3b8c1f6c,0x3baef919,0x3c1bcffc,0x3c145bb9,0x3c8957c9,0x3bc7d137,0x3c174971,0x3d0a7d21,0x3c792bcd,0x3c1876d4,0x3bc71268,0x3a3acc44, -0xb9d1f25a,0x3aa8ebc4,0xbc032617,0xbc05e0d9,0xba8cb7b8,0xbb71fb08,0x3b203bcb,0x3c4c3875,0x3b33a1aa,0x3aa12d8b,0xbc2d3f6e,0xbb937431,0xbc28c4b2,0xbd33a08a,0xbd098a51,0xbd0e6a43,0xbd842d5b,0xbcd36d19,0xbc9afd5b,0xbc9bd8d6,0xbc94114a,0xbc3a03bc,0xbab97fce,0x3a12a62f,0x3b3ecb31, -0x3b541ca0,0x3b9ac11f,0x3bfa1b60,0x3c21588e,0x3b1a36b5,0x3c207051,0x3d1c852e,0x3c8e9838,0x3c22fa7a,0x3b06d4d3,0xbb81f861,0xbc116e3f,0xbba8649d,0xbc927ef1,0xbc94fabd,0xbc2e3276,0xba26e905,0x3bbd9410,0xbc072091,0x3caef556,0x3ca5f405,0xbca5d8e5,0xbb2ca877,0xbb49241b,0xbd3e3a29, -0xbdb70614,0xbd8de1fe,0xbd4a251d,0xbcdba465,0xbc38bd0f,0xbc33524b,0xbc0856ff,0xbbac0048,0x3b6f6fb2,0xbaa6df2d,0x3a8289b7,0x3bd5d6f8,0x3b85d136,0x392b0b0a,0xbb5c13ae,0xbb73ee21,0xbad4c890,0x3c960491,0x3bffc8e0,0x3a9d6eb7,0xbc3a3f5e,0xbc717ae2,0xbcc44a63,0xbc977487,0xbca8bffa, -0xbc653522,0xb9a97e41,0xbb865ff5,0xbc7175b4,0xbd275fa0,0xbd323788,0xbd5397ab,0xbd4fb308,0xbbc4a757,0xbde5e940,0xbd8e66a1,0x3c6b8a30,0x3ca54a21,0x3d093d86,0x3cbb8aec,0x3c18da3e,0xbc82b029,0xbc04f48c,0xbc406b23,0xbacf6491,0x3b86c3b7,0x3bddf5ad,0xbc077f0e,0x3b5fdb8a,0x3bee56c5, -0x3c56177b,0xbb0727cf,0xbb1a5022,0x3c6f632c,0x3bbbde60,0xbab79b61,0xbc830d23,0xbca85efe,0xbc9af7e4,0xbc18e19f,0xbc8c4a10,0xbc952d1d,0xbbcfc89d,0xbc93a5b4,0xbc7080d7,0xbc902020,0xbb92d111,0xbccdbf47,0xbdb375a0,0xbdd5c32a,0x3d6dabe9,0x3d9fc54e,0x3da48b53,0x3d9f470b,0x3d9ab607, -0x3d726fa8,0x3d56f252,0x3d7eced9,0x3d56609e,0x3d355345,0x3ce80c1a,0x3cd821fc,0x3cccd11b,0x3cd2659c,0x3c8e0eb8,0x3b92653d,0xbc04f5c9,0xbc6251da,0xbc8c367f,0xbc045980,0xbc6c5fe8,0xbc94133c,0xbc76f010,0xbca2bbaf,0xbca276b3,0xbc8d3be1,0xbc8f8c09,0xbcc057ab,0xbcf1f1e2,0xbd16d0eb, -0xbd4fb993,0xbd88e754,0xbd991bd1,0xbd7af8b8,0xbc665e0c,0x3ccd3073,0x3d73af4c,0x3d97b5c6,0x3da011b3,0x3d9d29a3,0x3d92e10a,0x3d77d049,0x3d7cf64e,0x3d82c25a,0x3d67f161,0x3d45e040,0x3d1f856e,0x3d0358c8,0x3cd3009e,0x3ca731a7,0x3c81785b,0x3c234169,0x3b8da186,0x39abddb1,0xbba8e243, -0xbbcb22f6,0xbc82b9ed,0xbc9c75bd,0xbcbd96d6,0xbcda5418,0xbcf3231e,0xbd01d148,0xbd1726c3,0xbd22fc04,0xbd55e28b,0xbd29ed61,0xbd19da9d,0xbd16b2eb,0xbcc6adb4,0xbb871a19,0x3cd5615d,0x3d28afec,0x3d2ed2af,0x3d43eb01,0x3d4745ac,0x3d4468ef,0x3d54e286,0x3d6300a6,0x3d661ebe,0x3d5d6e83, -0x3d460cc8,0x3d370e53,0x3d2e6470,0x3d097014,0x3ce3dea4,0x3c9e673d,0x3ca5cd65,0x3c6b91fb,0x3c56b3ea,0x3c051c9c,0x3c106324,0xbb0f09bd,0xbbe863a8,0xbc24fd3b,0xbc862336,0xbca5653f,0xbcd950e8,0xbcf752d5,0xbcf7a7df,0xbd01406a,0xbcff5edb,0xbc8bb19c,0xbbaf7f32,0x3ba4e004,0x3cbfc63b, -0x3d148777,0x3d357583,0x3d2cd6af,0x3d312a84,0x3d3720e2,0x3d71f82c,0x3d56826d,0x3d5007ad,0x3d54a5b5,0x3d470598,0x3d609ed7,0x3d4631d9,0x3d404f62,0x3d30ddbe,0x3d28cbea,0x3d1a47cc,0x3d15a485,0x3cf3aba1,0x3ccbdd9b,0x3cc43930,0x3c573b03,0x3c76bd5e,0x3b8dc5eb,0x3beed661,0x3c2f3800, -0x3c6fa792,0x3c8ed3aa,0x3cb0ddcf,0x3ccdac5e,0x3ced4169,0x3d0f3e22,0x3d14452c,0x3d164456,0x3d0bcebd,0x3d0da76f,0x3d07109e,0x3cca7d0a,0x3d017c31,0x3d22a789,0x3d0b1fc7,0x3d06cc21,0x3d1aabd7,0x3d2959c2,0x3d37512f,0x3d1dceac,0x3d2de294,0x3d4129ab,0x3d3da3ac,0x3d39b887,0x3d361795, -0x3d33aeae,0x3d324172,0x3d2f889a,0x3d0f7453,0x3cfc5a3f,0x3d233602,0x3d0e2d43,0x3cf31f6c,0x3cccc002,0x3cd35b96,0x3ccc6a3e,0x3cc124f5,0x3cb7a886,0x3cae0761,0x3ca4df7a,0x3ca57d2c,0x3cae023f,0x3cbd3576,0x3cd166f4,0x3ce81605,0x3d026a52,0x3d0ed3eb,0x3d0f5ef6,0x3d13f24d,0x3d0fc535, -0x3d6b586b,0x3c654b18,0x3c0ee8ff,0x3c1eca2a,0x3c23da0e,0x3c1d3e0f,0x3c414992,0x3c0b0c71,0x3c055fbd,0x3c10467e,0x3c044c9f,0x3c0a5266,0x3c20281a,0x3c0ac45b,0x3c032743,0x3c005098,0x3c08ba74,0x3c108f9d,0x3c0eab36,0x3c230b88,0x3c2a6eb9,0x3c320acf,0x3c240497,0x3c1a45f0,0x3c118160, -0x3c143b5e,0x3c06d204,0x3bcf993c,0x3bd5d53c,0x3bd8638b,0x3bc53d5a,0x3c05d1f3,0x3c0f0cba,0x3bfd2ad7,0x3c13fa25,0x3c100cdb,0x3bf12043,0x3c0544dd,0x3c21b403,0x3c266e02,0x3c3ba90e,0x3c7dc886,0x3cbe8b81,0x3c2530d2,0x3c0ce3d7,0x3c5111c4,0x3c244b3e,0x3c43d498,0x3c672916,0x3c3ad492, -0x3c2c443f,0x3c1fae65,0x3c205af9,0x3c41a16e,0x3c4ccb13,0x3c7d3076,0x3c88f1db,0x3c8fa51a,0x3c773bbf,0x3c61cce6,0x3c4a73aa,0x3c3112d2,0x3bf16f67,0x3b3b0c75,0x3a00a027,0x39848bad,0x3ad48f9d,0x3c33619c,0x3c4fd595,0x3c029b87,0x3c60bb88,0x3c648675,0x3c108134,0x3c262242,0x3c38f48f, -0x3c632493,0x3c7f85db,0x3c98ddd3,0x3cfd1ec4,0x3c338b6d,0x3ba7dbbd,0x3c68db9e,0x3c235523,0x3c44f2ea,0x3c8dc8ea,0x3c423a4a,0x3c1d6633,0x3c07cce2,0x3c389ef9,0x3c4f59ac,0x3c6aa133,0x3ca923d4,0x3cb481aa,0x3cc600cb,0x3c9729cb,0x3c807d27,0x3c54c3a9,0x3c3d69b8,0x3bc0221a,0xbb9a9505, -0xbbfc2cde,0xbbaf76ad,0xbbb8aa8c,0x3c16bc41,0x3c611a8a,0x3b997f10,0x3c64156b,0x3c43a631,0x3bacc564,0x3c0ee538,0x3c24e74d,0x3c060e61,0x3c81708e,0x3cc5a44c,0x3d3ff53f,0x3c21feb3,0x3b81520d,0x3c89c85f,0x3c24bf44,0x3c430c59,0x3cc39722,0x3c2b720b,0x3bcd2395,0x3bfaa26f,0x3c4fa6a4, -0x3c87d562,0x3c8a9603,0x3ce7bd51,0x3cf802ee,0x3cf875f0,0x3cc509a1,0x3c9d29c6,0x3c7506e1,0x3c519f2f,0x3b3c404f,0xbc74b96d,0xbca5ed0a,0xbca91ad7,0xbc740d49,0x3c20f694,0x3c882981,0x3ae5e9a7,0x3c945edd,0x3c99bb4b,0x3b79cdf7,0x3c388f99,0x3c7230c7,0x3cb19980,0x3cab5ff7,0x3cdf20bb, -0x3d5b563e,0x3c18cc22,0x396be9e8,0x3c9bae3e,0x3c29eda5,0x3c4cd1a6,0x3cd9db70,0x3bdf9eb1,0x3a6d6109,0x3c2ae221,0x3c8b5ece,0x3caacfaf,0x3cb56633,0x3d092c1e,0x3d13504c,0x3d143e2f,0x3cd703ef,0x3ca289f8,0x3c891237,0x3c44747e,0xb9b8592c,0xbc9cfd11,0xbcde8330,0xbcbcd30b,0xbc9ec94a, -0x3c0ae70c,0x3c91ee37,0xbaf7def8,0x3c8b8db7,0x3c0bebcf,0x3a9bf29a,0x3b88ab9c,0x3bceb9aa,0xbc00b677,0xbc9eb731,0xbcdc9717,0xbd04713e,0x3c8e1eb2,0x3d0eba93,0x3d0744e6,0x3ca136fc,0x39c38c6b,0xbbb720be,0x3be11901,0x3c63df71,0x3bd41544,0x3cb754b3,0x3cae388a,0x3ccb7f0a,0x3cf6f58d, -0x3cf8aa39,0x3cf6412a,0x3c5c387c,0x3bc6a40e,0x3b93eac9,0x3b5131ce,0x3ba936f0,0x3b44b661,0x3ca438fa,0x3ca06fce,0xbc988e90,0x3caaed5e,0x3cbc5be9,0x3c1a1344,0x3c9b59e0,0x3d29e7be,0x3da25440,0x3d1c7cb0,0xbb82698d,0x3d9bcb81,0x3a6a1dac,0xbc82fbec,0x3bcf420f,0xbba769f0,0xba747168, -0x3944d9a4,0x3bad48df,0x3c1875e8,0x3b804e83,0x3a2a350f,0x3a00c916,0x3c408e05,0x3c1b8805,0x3c6e3727,0x3c951b0a,0x3c82461a,0x3c82e61e,0x3c9e146d,0x3c3fcae5,0x3bff9f4d,0x38b36b35,0xbaf17c09,0xba02ff10,0x3bdf6bdb,0x3c0e74d5,0x3c90a8dd,0x3c9eadfb,0x3c0c7877,0x3c30e1a7,0x3cfbf49c, -0xbc8fa282,0xbd165d3b,0xbcb4a5d2,0xbcdcf2f0,0xbc1e91b2,0x3cb31226,0x3b3ce00e,0xbbdb1e60,0xbbd8db5d,0xbcb766d0,0xbcb05ecd,0xbba90099,0xbb84b341,0xbb11ac54,0x3b0c89ed,0x3adbe58c,0x3be4488a,0x3b7edc42,0x3c07168f,0x3c7693ca,0x3c92cdc0,0x3c048356,0x3c2feb1c,0x3cbeb887,0x3c81f4a7, -0x3c54bdbc,0x3b59bc34,0x3b1e5b63,0x396e2a36,0x3bb46e66,0xbb097c2f,0xbaabd09b,0x3c800a97,0x3c224e73,0x3c9546ea,0x3cda3ffd,0x3b76be6c,0xbad7d52a,0xbc7a6385,0xbc7dfb33,0xbb628da5,0xbc038fb8,0xbcadd67b,0xbccdd322,0xbd1b5cee,0xbcd91ec3,0xbcb2353c,0xbb47830b,0xbc4b2b31,0xbc0af43a, -0x39ac7654,0x3ac00fc2,0x3bb3a159,0x3b64b17e,0x3c0f6ca9,0x3c48f7e3,0x3c6c6a2d,0x3be302f3,0x3c4b4f86,0x3ca969a2,0x3c903339,0x3c8847d5,0x3bed2dcf,0x3bfed0e5,0x3ba814bc,0x3b5c582f,0xbc672a84,0xbc7967ca,0x3b28c3d7,0xbb173948,0x3aed6a4c,0x3bea7249,0x3b841475,0x3c1f6d85,0x3a79cd47, -0x3a455ad5,0xbb51b654,0x3bd3a6c9,0xbd208f27,0xbd3f1d6e,0xbd0e5f67,0xbcdcb6f9,0xbc0511df,0xbac77cd0,0xba8e2478,0x3ba0cdcd,0x3bc992ff,0xb9b5081a,0x3a8ac4ac,0x3c442ac1,0x3c0a5d36,0x3c0cfd8d,0x3c1f055b,0x3c5977b0,0x3c4ecc25,0x3c063589,0x3c7e7d39,0x3c399a06,0x3b14d4ac,0x3bf8218f, -0x3bc697cb,0x3b1c031b,0xbc2037a0,0xbc2231a9,0xba0c206e,0xbc789616,0xbca03e5e,0xbcb3aec4,0xbd1d6a69,0xbd3857c8,0xbcc68e29,0xbc74e391,0xbdd8e87f,0xbe0b86ad,0xbd906faf,0xbd4e7f83,0xbc7d870f,0xbd0faa37,0xbd300cb2,0xbceaafe4,0xbcda1413,0xbce2c65b,0xbbecda10,0x3ba3e50e,0x3c373ba4, -0x3b8257b4,0x3b0198d0,0x3b843783,0x3c5c4df7,0x3a24d949,0x3b532de7,0x3c3e90fe,0x3c40fec8,0x3c269273,0xbb350e73,0xbc172818,0xbc548b95,0xbc9745c2,0xbc5c2df8,0xbc128a5f,0xbc948a48,0xb949d8e6,0xbb42a9ac,0xbc65d4b1,0xbcaf7280,0xbcfbef77,0xbd2eaff0,0xbda8ce79,0xbca61ee2,0x3c7045ef, -0x3d0f5bf1,0x3d1d63d6,0x3d1f2983,0x3d201e2b,0x3d147fb3,0x3d33afb1,0x3d1f748d,0x3d1b0d51,0x3cad3ae6,0x3c9e2fa0,0x3c53c73b,0x3c17b361,0x3c3e42b5,0x3c09197a,0x3c0ab377,0x3a19879c,0xbb2a66a9,0xb7d50a2e,0x3a4acd1b,0xbb0d1953,0xbb727acb,0xbb493d4b,0xbbed8d5c,0xbc01a73b,0xbbe1748e, -0xbc558987,0xbcbd3048,0xbc674eea,0xbca2e5c7,0xbcd0cf20,0xbd2d27a8,0xbd56d80c,0xbd6582ed,0xbd147910,0x3c0adb7c,0x3d463a00,0x3d3fb8a2,0x3d60689b,0x3d81dc8c,0x3d54efac,0x3d62dd53,0x3d4ca434,0x3d3efe94,0x3d1f4285,0x3d0d86f0,0x3cf770ab,0x3cd9d449,0x3ca8dc5d,0x3c8628ed,0x3c42bd22, -0x3b96158a,0xbb947cb0,0xbc35fa38,0xbc843857,0xbcb85c21,0xbcd777e0,0xbd03790e,0xbcfe4daa,0xbd0d3d85,0xbd0e7378,0xbd21539e,0xbd25074d,0xbd3f1092,0xbd32a2e7,0xbd436a23,0xbd689525,0xbd3d5340,0xbd115fa2,0xbce16220,0xbb34a3f2,0x3cc41ce2,0x3d09c5b2,0x3d373066,0x3d337a57,0x3d59a443, -0x3d563b6d,0x3d45efe4,0x3d33d927,0x3d237d65,0x3d119b18,0x3d0be345,0x3ccd28b9,0x3cc62b30,0x3c9e25dd,0x3c6f0da3,0x3c13a248,0x3b256809,0xbb215ed7,0xbc4eb023,0xbc8f0fce,0xbcbcd2bc,0xbcd49c23,0xbd0b38d3,0xbd18343d,0xbd27fa96,0xbd302716,0xbd2df80f,0xbd38f4b1,0xbd3b3895,0xbd3b6cde, -0xbd4396e3,0xbd483575,0xbd034df6,0xbc69148f,0x39b637b8,0x3c5150fb,0x3b7cc222,0x3baab61d,0x3c9a9827,0x3c106a24,0x3bf37eb9,0x3c56aa66,0x3c3c4e05,0x3cc27b06,0x3c5b065b,0x3c718aba,0x3c29b49f,0x3c00fc86,0x3b087b19,0xba8ed2da,0xba69d250,0x39e64989,0x3b53efbd,0x3addabc5,0x3c016018, -0x3bc8907f,0x3b9b7ae1,0xb9c83eb6,0xba80a025,0xbb95c837,0xbbf054cc,0xbc10a174,0xbc12a0b5,0xbb47bf2d,0xbadb1484,0x3775539e,0x3bb8e8c8,0x3ba14d82,0x3b97f43f,0x3a8a6a45,0x39af4ae6,0x3b056854,0x3b648421,0x3b4a9445,0x3c0ee76f,0x3c7fafb8,0x3cb096cf,0x3c187989,0x3c5ef70a,0x3cb8d0a7, -0x3cb38625,0x3c9fbdfd,0x3c928c48,0x3c8d3d73,0x3c8c3b41,0x3c824780,0x3bfd7723,0x3b2232dc,0x3c4d8315,0x3bc05b22,0x3a1f7bf4,0xbb91829f,0xbbad1ade,0xbbcf3e15,0xbc00e6da,0xbc18eb37,0xbc21ac3e,0xbc2f8a97,0xbc3a274c,0xbc2a2dd6,0xbc30672c,0xbc346590,0xbc25c8d7,0xbc27de2b,0xbbd8e680, -0xbb474714,0x39472905,0x3b18af77,0xba793607,0x3c53c675,0x3c0affd4,0x3c047697,0x3c13422e,0x3c198bad,0x3c2bd68c,0x3bf3f354,0x3bfce743,0x3c0b3029,0x3c130650,0x3c186ef5,0x3c17a7ee,0x3c14126b,0x3c119f6e,0x3c063dd7,0x3bff434f,0x3c039fae,0x3c14ae24,0x3c1b4fa3,0x3c194f50,0x3c1a07a8, -0x3c12f09d,0x3c0aaf7a,0x3c01764f,0x3c05691f,0x3bfcb4a0,0x3bd59b45,0x3bd886ef,0x3bd10a76,0x3bbda997,0x3bec439e,0x3bf5908c,0x3be976fb,0x3bfdea38,0x3c03b0d1,0x3bfc3878,0x3c06529a,0x3c47ec68,0x3c2f0756,0x3c67ba4d,0x3c5b43e1,0x3c912e46,0x3c0fa763,0x3c06201c,0x3c2813bf,0x3c28e77e, -0x3c4e2497,0x3c480bdd,0x3c4bdeba,0x3c3bfa88,0x3c13f28f,0x3c0f802b,0x3c21fb61,0x3c461c2d,0x3c586180,0x3c78ca95,0x3c818bb3,0x3c5a75f5,0x3c459c67,0x3c28a3e0,0x3c1a8886,0x3bddf119,0x3b6e6270,0x3b371064,0x3b4480ee,0x3b6f28e6,0x3c0f20b1,0x3c216d70,0x3c102af7,0x3c2ef80a,0x3c39049c, -0x3c22cebb,0x3c41be6e,0x3c606e86,0x3c4f2e95,0x3c88c84d,0x3c835382,0x3ca98741,0x3c0c6693,0x3ba87420,0x3c150f5f,0x3c45f316,0x3c6c75fd,0x3c5bd30f,0x3c6b2d9f,0x3c469942,0x3bdcb43e,0x3c133d02,0x3c1b5c71,0x3c6bc6cc,0x3c889638,0x3c9c71c8,0x3cb1f26a,0x3c800ea0,0x3c6030e5,0x3c257702, -0x3c1ec256,0x3bce42dc,0xba5bfb61,0xbb040df6,0xba53bcb9,0xbb2b5d38,0x3bdbe0be,0x3c140267,0x3bb82cb1,0x3c1d6074,0x3c25f88e,0x3c1ba559,0x3c5ab648,0x3c8d84c2,0x3c52c8b6,0x3ca728b7,0x3ca80614,0x3d01a291,0x3bfc18c5,0x3b6c9391,0x3c2e515b,0x3c46fe54,0x3c7a107f,0x3c92919f,0x3c6962c6, -0x3c2f379f,0x3b874e33,0x3c20e040,0x3c39d33b,0x3c7e1654,0x3cb4020b,0x3cd18367,0x3cf5c992,0x3ca4dd2c,0x3c857ed4,0x3c256da5,0x3c250034,0x3b0ffb28,0xbc2a2cde,0xbc4111de,0xbc24deb8,0xbbd41c69,0x3ba48d93,0x3c237fa2,0x3bdf24b3,0x3c331b5f,0x3c51c1dd,0x3c1e3035,0x3c8b58bd,0x3ca0ba54, -0x3c918760,0x3cd4d0a3,0x3cdb1469,0x3d13c5b4,0x3bf5cb3f,0x39370e9a,0x3c4f05d3,0x3c5ba5db,0x3c8ca521,0x3cbf61f0,0x3c3352db,0x3babc9ca,0x3bd20c0a,0x3c7173fa,0x3c7d7936,0x3c9c1be9,0x3cd4ea64,0x3d07f932,0x3d15cdf2,0x3cb9c970,0x3c8b6f84,0x3c30c87f,0x3c0e55dd,0x3ae05c4f,0xbc3178d8, -0xbc63a75b,0xbc3bc169,0xbc605210,0x3bcc21e2,0x3c119b94,0x3a27ae56,0x3c1b53b1,0x3bee306e,0x3c180871,0x3c80e56a,0x3ca07f93,0x3b6bd89b,0xbc445d9d,0xbcbc028b,0xbd1c8bff,0x3bc3ac14,0x3cd6f1d3,0x3d10d56e,0x3cfe5aec,0x3c097082,0xbbf6bc26,0x3ba07e50,0x3c31be13,0x3c453e9e,0x3cc58ada, -0x3ca130f9,0x3c9ba84c,0x3c549c1f,0x3c4e97fb,0x3c59477d,0x3b83e005,0x3be866be,0x3c435153,0x3bc9673a,0x3c06216d,0x3bcb83b2,0x3d205243,0x3d0dad69,0xbc9dbed1,0x3bd586ff,0x3c00ca5e,0x3c1b8f4c,0x3c2dc4de,0x3d00ad58,0x3d940eaf,0x3d38bddd,0xbc95503e,0x3bbd1e9a,0x3ce00d2f,0x3c87686b, -0x3bd0eb7c,0x3b15f4db,0xbb0989fa,0xbb383c24,0x3b95fc00,0x3c44893b,0x3c51b32d,0x3bb086b4,0x3b2e0050,0x3c2964a5,0x3c157347,0x3c7da7c7,0x3cac5843,0x3ca77d36,0x3cb3af6b,0x3c779fc3,0x3c8b08da,0x3c7b8fa6,0x3b6ba739,0x3bbcf92d,0x3bc99160,0x3c24b3e5,0x3c85bce2,0x3c9d5399,0xbb9ce906, -0x3c13328d,0x3b8a013e,0xbc88ecca,0xbc528ad6,0xbc9a9f48,0xbcbb8185,0xbcc2bcb0,0xbcd25516,0xbbf08d7c,0x3b934038,0x3b893bc9,0x3b3d420c,0xbc21f082,0xbca19f5a,0xbad4258c,0xbaa3f240,0xba3ba267,0x3bdd61bb,0x3bab7de2,0x3c059d94,0x3bdedc04,0x3bfffa81,0x3c9100e1,0x3c38f511,0x3c3729bf, -0x3c1e3a57,0x3c056f93,0x3ca472e2,0x3ca8cf55,0x3bb1c56d,0x3c228128,0x3bd368db,0x3b98e6ed,0x3c1b2d33,0x3c0e2804,0x3bfc4019,0x3c93144a,0x3ce3c5f6,0x3cc6acd7,0x3b3ae5da,0xbc2ac65f,0xbcc2a335,0xbcc20729,0xbb1f9607,0xbb891aff,0xbbbe03ee,0xbbafff4a,0xbbbc08e2,0xbc76ecea,0xbc757fbc, -0x3c23142b,0xbb611ebc,0xbb064d4d,0x3b561751,0x3b7911bb,0x3bcf8cdb,0x3ba8f880,0x3c10d49e,0x3c6d64cd,0x3c3d5a1f,0x3c2101e2,0x3c368e84,0x3c2e1ef8,0x3cae994f,0x3cc2b1bc,0x3c5a8ab4,0x3c92a979,0x3c654849,0xbb695ab0,0x3a349880,0x3a8056de,0x3b8cd233,0x3bd94898,0x3c254125,0x3c1deeb8, -0x3c0aded2,0x3c222cb5,0xba5bac1d,0x3aae6dc2,0xbb96c068,0xbce471cb,0xbc4c9915,0xbc80cc9e,0xbcaeaa78,0xbca7d797,0xbc24e86b,0x3bee59f0,0x3b09569b,0x3bfc6a65,0x3bfabded,0x3b019e38,0x3b662af4,0x3c39cb2b,0x3c5039f6,0x3c863f11,0x3c97176b,0x3ca13229,0x3c99e766,0x3c03ea1c,0x3c8a4806, -0x3c86fac7,0x3c67014e,0x3c61a52a,0x3c576129,0x3ae604cd,0x3bc44138,0x3aa9ad3e,0xbc51f347,0xbc83255f,0xbca7bddf,0xbcdbf9cb,0xbbd002b3,0x3961c76d,0xbc0a50f6,0x3af26bdf,0xbca3cc20,0xbd2d2939,0xbd6fcb4c,0xbd6afde5,0xbd17aa5e,0xbd298fa2,0xbd258730,0xbccc0b64,0xbcc7f22a,0xbcdad9c8, -0xbc69d480,0xbbbf8d6c,0x3bd6e9b2,0x3c2bcdab,0x3be94c85,0x3bfdc89f,0x3c30cc5e,0x3c2113ee,0x3c402cd6,0x3c0bbe69,0x3c7bcda0,0x3c855a52,0x3c073d1e,0x3a28d66b,0xbb56111c,0xbba9e4d3,0x3a0c3445,0x3a5509b8,0xbbf592de,0x3c0f2573,0xb9c8e0b1,0xbd00470e,0xbd19ba11,0xbd285785,0xbd309af1, -0xbccd7f65,0xbd723287,0xbd4d4a30,0xbd07d0be,0xbca5247e,0xbc8ac9c4,0x3b7117bc,0x3c1590c2,0x3bfe7c41,0x3ba244ac,0x3c01e809,0x3b705c01,0x3c5a3960,0x3c637b51,0x3c74c628,0x3c490d4b,0x3c2acf12,0x3c58946f,0x3b52a545,0x3a120988,0x3aee68d9,0x3c41da0b,0x3c501fdf,0x3c433d09,0x3b096258, -0xbb181eb4,0xbbe661e8,0xbc07a902,0xbc3f147e,0xbc71fa90,0xbc9535e4,0xbc4a498b,0x3c3c4be4,0x3aa8c7e8,0xbc0dc656,0xbcdd3378,0xbd40d840,0xbd067689,0xbc09c19e,0xbbdefe63,0x3b95494d,0x3ca66162,0x3ca4b72e,0x3cd014c7,0x3ca70a2e,0x3c9e8080,0x3c8fe68d,0x3cb00400,0x3caa4521,0x3cb34134, -0x3c7cfd6d,0x3c4b8f20,0x3c08db45,0x3bac7856,0x39d30909,0xbb558728,0xbb2c0387,0xbb152b87,0xbbe15241,0xbc449981,0xbc9132ae,0xbcbaba96,0xbce86f2b,0xbcdcc9ed,0xbcd683c0,0xbcbe1adb,0xbce6dc3a,0xbcf2c07d,0xbcd9af5f,0xbcf1468a,0xbd01803e,0xbd1a1a81,0xbd0205e9,0xbba15117,0x3b7a5868, -0x3c977ebf,0x3c8d0b3b,0x3cd8b5c7,0x3cd268bc,0x3cbb2086,0x3cba38c3,0x3cd98149,0x3cc7be55,0x3cec7938,0x3c718f3e,0x3c71bbde,0x3c1496fd,0x3bf4b772,0x3b48aa51,0xba90337c,0xbb48b4df,0xbba7689b,0xbc125722,0xbc7fc2f6,0xbca10c13,0xbcce4ff8,0xbce3968c,0xbcfb7ea0,0xbd0ebb97,0xbd05baf2, -0xbd088f0c,0xbd058893,0xbd13b6ae,0xbd2d30a3,0xbd4c000f,0xbd35222b,0xbd156ec6,0xbcfe128a,0xbc6f5de2,0xbc4c79ef,0xbc3613b4,0xbbd6e223,0xbc3ec23f,0xbc568d49,0xbbf7cd6f,0xbbd2a1a1,0xbaa91b4a,0xbbf6ab5f,0xbbdf75dc,0xbc0a9320,0xbbb5a2ec,0xbbc12806,0xbbb97012,0xbbf2cb3d,0xbc1ceec3, -0xbc14ac26,0xbc62d740,0xbc39f4de,0xbca3d645,0xbca98280,0xbcc0e11f,0xbcccc1e4,0xbcec0dee,0xbcffb819,0xbd052454,0xbd0d8c53,0xbd040e96,0xbcfc8830,0xbcfb398a,0xbcbd82ff,0xbcadd29e,0xbc944913,0xbc49f579,0xbc51036c,0xbc6c8432,0xbc51ee35,0xbc39721e,0xbc1a7fbb,0xbbcbba6e,0xbb92334e, -0xbc03b790,0xbbf845d8,0xbb8b500c,0xbb738f94,0xbb8beaf8,0xbbb2db74,0xbbd9b1da,0xbc006c81,0xbc0ae05c,0xbc37eb76,0xbc591b21,0xbc28f241,0xbc57c6bf,0xbc79d59b,0xbc8d5ba9,0xbc8e5c56,0xbc9c2a03,0xbca3cec4,0xbca93bd4,0xbcaba642,0xbcae63d8,0xbcb0934e,0xbca8e366,0xbcaf88ad,0xbcb391a3, -0xbcb89429,0xbccbc724,0xbcbe0f13,0xbca57d3e,0xbc960364,0xbc7b3b17,0xbce5c225,0x3c303221,0x3bdb67ea,0x3bc81a81,0x3be59ffb,0x3bf02d57,0x3bf5a023,0x3bc49fa1,0x3bceff79,0x3bd50216,0x3bf9fdf0,0x3c061611,0x3bff1a09,0x3c0406e7,0x3c00c120,0x3be3efe5,0x3bd88f10,0x3bdba0e0,0x3c050544, -0x3bfbf666,0x3be8857d,0x3bd2f7b0,0x3bddddec,0x3bdbeb4d,0x3bd82561,0x3be7f04b,0x3be8854c,0x3bd975ce,0x3bd30233,0x3bc957b8,0x3bc810cb,0x3bcafc3e,0x3bc2b153,0x3bc28e71,0x3bc42cd7,0x3bcd5148,0x3bc03ad3,0x3bd800e9,0x3c2fc02f,0x3c030885,0x3c216b39,0x3c0703d9,0x3c2c0339,0x3be7ac60, -0x3be6f497,0x3beab20f,0x3c0f4edb,0x3c349f7c,0x3c27f793,0x3c4ab957,0x3c3fb74e,0x3bf2905d,0x3bd96e5a,0x3bfd7ebe,0x3c33a48c,0x3c22a1c1,0x3c36ca74,0x3c1f8422,0x3c10bc0f,0x3c0c3a1b,0x3c08825c,0x3c0a45c8,0x3bf6804c,0x3be43083,0x3bd5e31b,0x3be622fd,0x3c0d195a,0x3c007616,0x3bf5e97a, -0x3c1016fa,0x3c06c0da,0x3c007588,0x3bc3b01a,0x3c20a3bd,0x3c1f98e1,0x3bf48395,0x3c2d09ca,0x3c1e0147,0x3c213277,0x3bb6d63c,0x3b9e01ba,0x3b84f12d,0x3c30a99d,0x3c566e35,0x3c32d7df,0x3c83887a,0x3c5d2575,0x3bc18c0c,0x3bf11359,0x3bf213bb,0x3c680d36,0x3c435272,0x3c4b07ca,0x3c2b30e2, -0x3c0e43ec,0x3c14293c,0x3c066fa0,0x3c202c5b,0x3c1b1531,0x3bdb306c,0x3bcbf246,0x3bba6024,0x3bfb91f3,0x3bdf89d3,0x3bc30618,0x3bbe05cc,0x3bbbe4e7,0x3bbdcbc5,0x3b82307f,0x3c2351c8,0x3c7b165e,0x3bfdd961,0x3c2ac986,0x3c0bb8f9,0x3c74f8b1,0x3ba24ea7,0x3b5a35c6,0x3bad7cf3,0x3c28348f, -0x3c76bddd,0x3c566551,0x3c916560,0x3c796c18,0x3aa4510e,0x3bd47da8,0x3bf3d03d,0x3c87591c,0x3c6f7a51,0x3c846d69,0x3c7ad885,0x3c1dd277,0x3c1b0941,0x3bf6e56d,0x3c296a4a,0x3c031910,0x3b4d7432,0x3b4f33a4,0x3b933845,0x3c4c5f1a,0x3bd0c1d3,0x3be6b80d,0x3c23b820,0x3bed5b8a,0x3bc03018, -0x3a690568,0x3c50c6ab,0x3c320065,0x3bc9f1e9,0x3c82f52c,0x3c8b3baf,0x3c75e04b,0x3b8c8d8e,0x3ad77bdd,0x3b5ee429,0x3c494ac8,0x3c96a253,0x3c8a4c4c,0x3c808a95,0x3c18929a,0x3a8fde30,0x3c362d28,0x3c48cf95,0x3ca76b6c,0x3c8e4877,0x3cb8cf30,0x3c7fc956,0x3c2d8585,0x3c2099e2,0x3bfc72ad, -0x3c2c4f7d,0x3c2d70ab,0x3b97c81b,0x3ba67dbb,0x3b9f5cec,0x3c05f161,0x3c215ac3,0x3b8e0fdb,0x3ad35d5a,0x3b1ad315,0x3a53ce60,0xb99917b6,0x3c3a4c95,0x3cfe1b24,0x3c8da521,0xbc602ef0,0xbce6dd2d,0xbcf78d03,0xbba5ec17,0x3c3c16ae,0x3cc19863,0x3d1c00bb,0x3cac0703,0xbb7f2fbb,0x3a2aff9e, -0x3bd8af08,0x3cb66c13,0x3ca0e5af,0x3c7ca6f3,0x3c696659,0x3ba50936,0x3a4840c8,0xb9ae3283,0x3bb9197c,0x3c31134a,0x3c83f5de,0x3c60e714,0x3c583391,0x3c44575c,0x3d03ffa0,0x3cad1816,0xbc54e23e,0xbc65398c,0xbc038ef3,0x3cde80fe,0x3c9c2a91,0x3ce2951b,0x3d3ee3a1,0x3d244698,0xbc876e5a, -0xbd597f1f,0x3d41b2a2,0x3d519fdc,0xbbce8f2b,0x3c7779ec,0x3c1ea098,0xbbcc2347,0x3babbb1b,0x3c6002a7,0x3c9ec960,0x3c250d82,0x3ba4069f,0x3c24d5e1,0x3c7ff0ae,0x3cb1c93d,0x3c86cb26,0x3c7d55f3,0x3c836b0b,0x3bfd14d7,0x3c8f1935,0x3c879bc1,0x3be6b5a2,0x3c18bb2e,0x3c3f44db,0x3ca8959e, -0x3c7b6344,0x3c59fdf5,0xbc830f12,0x3c69c66f,0x3b3a1c81,0xbd60f1b5,0xbcbf09b1,0xbc79ea01,0xbc88d862,0xbc70c7d6,0xbca819de,0xbd183b8d,0x3a95e90e,0x3c21b6db,0x3b8ab498,0x3c0ee7bd,0xbb625e72,0x3ac85e8a,0x3b740733,0x3a9fa0b2,0x3c31aafb,0x3b9cf5a4,0x3be21405,0x3c21f4c4,0x3bb360e5, -0x3c6359e6,0x3b32bf54,0x3b82ff48,0x3b011756,0x3ae9d92e,0x3c8028ae,0x3c81b709,0x3bd13b9b,0x3be15958,0x3b60eba2,0x3b565493,0x3c3eebb6,0x3c61885e,0x3b3a6e23,0x3cc1275b,0x3ccd3c7a,0xbb4e7da3,0xbb3d5e12,0xbc04de10,0xbb944b76,0xbc39f90d,0x3b0444df,0x3b6cc317,0xbbc5a5f9,0xbad9bf31, -0x3c121c2c,0x3a4d8f8c,0xbb17ec9b,0x3c0ba1cd,0x3b113199,0x3a9c18df,0x3bacf9ad,0x3b3fedb7,0x3bae2108,0x3bc3aae8,0x3ba475fa,0x3c0a3ff9,0x3afddb0e,0x3b094c61,0x3ba017bd,0x3b82b29c,0x3c224eba,0x3c3ad46e,0x3c099b79,0x3bb5157d,0x3b40d89a,0xba992798,0x3c005e36,0x3bd91924,0xbad23416, -0x3ba6fd45,0x3c07eab9,0x3c93da49,0x3bba4638,0x3bbc69a2,0x3c97b49b,0x3bafc8bf,0xbb14a10e,0xbbc9d3ae,0x3b580899,0x3b550e88,0xbc5e269d,0xbbe544c2,0xbbf463c6,0xbb9b8139,0xbb444d20,0x3b0b9a61,0x3b4d5957,0x3ab81215,0x3b4e693a,0x3bf895d8,0x3c3ccc9d,0x3c72165d,0x3c45b1b5,0x3c33ee1c, -0x3c43a822,0x3bc5cd4c,0x3c455e84,0x3c5fb115,0x3c6c6150,0x3c37ec5c,0x3c13a6a4,0x3bc38f5f,0x3b68face,0xbbda71d5,0xbd07ee26,0xbc97ab94,0xbc8fd355,0xbc893342,0x3a9a06b8,0x3c061d58,0x3c2ee67d,0xba9ee064,0xbb9a8aad,0xbbe8aadd,0xbce41903,0xbd339e82,0xbd413e1d,0xbd1079eb,0xbcde7f69, -0xbc9d00a3,0xbc517d94,0xbc689649,0xbc258c78,0xbc2fd429,0xba0acf04,0x3c3f1476,0x3bb7a019,0x3bde0f75,0x3b8150c6,0x3c450124,0x3c418bfc,0x3b350d6e,0x3c054092,0x3c4c743e,0x3c84c581,0x3c52e645,0x3c11ee9e,0x3ac317a6,0x3a19409e,0xbb5cf18c,0xbc05c5b6,0xbc0b135b,0xbbc5258a,0xbb97b4ff, -0xbc9e0d56,0xbcaf55dd,0xbc625e36,0xbbabe539,0xbd2f2993,0xbd4b2a09,0xbd4e6174,0xbd24d036,0xbcdaab82,0xbc5bcf37,0xbc257441,0xbca2aab7,0xbc927162,0xbc574beb,0xbc0cb87c,0x3b1fa3ab,0x3bf7a268,0x3c266914,0x3bce4d71,0x3ba5ce1b,0x3bab1bef,0x3bec0823,0x3c0a4a80,0x3bfca5e7,0x3c68401f, -0x3c6a21dc,0x3c30ddd1,0x3c0db72d,0x3b90c02d,0x3ac3c6c1,0xbb5cc080,0xbbb71eae,0xbbc98b93,0xbc406013,0xbc8d91a8,0xbcc10a78,0xbc088cc4,0xbbc6c4a0,0xbca1a32f,0xbd04a131,0xbd16baa6,0xbd1b82ec,0xbd0e227e,0xbcdb3051,0xbc5034da,0xbc340499,0xbbd1f729,0xbc0fb381,0xbb99faea,0xba8d2a6d, -0x3c00bea5,0x3bf3ecab,0x3c26ae4f,0x3c15e985,0x3bb3cd08,0x3b65af82,0x3a9f29c8,0x3a1f80cf,0x39f3e0aa,0xbabaaf86,0x3b06d4da,0x3b584788,0x3b4e8ae4,0x3a933204,0xbb26e680,0xbbddc3b9,0xbc11d5e2,0xbc29e1e4,0xbbe5d587,0xbc2884c4,0xbc132a17,0xbc2103c6,0xbc3d5b2f,0xbc8d2433,0xbcccdc69, -0xbcfaa3d0,0xbca69449,0xbca2a56f,0xbc25e3aa,0xbc240202,0xbbda90ca,0xbb45c85e,0xbab500af,0x3b292447,0x3c175bc4,0x3c25d4fa,0x3c8e2c3a,0x3be8d08b,0x3bf16f3d,0x3bacea4a,0x3afcf9d4,0xb83e3543,0xbb6e0591,0xbbcf77e9,0xbc2ff336,0xbc4783e8,0xbc3d8ec9,0xbc30aa02,0xbc1353af,0xbc490019, -0xbc65176c,0xbc8c430f,0xbc7530b8,0xbc81740f,0xbc934c44,0xbc8b07db,0xbc85c1f9,0xbc792031,0xbc9a63b2,0xbcb3bdf4,0xbcc00abf,0xbcacecbe,0xbc4adf03,0xbc2bed39,0xbc193673,0xbc0818de,0xbbcd426b,0xbb807fc8,0xbb50377b,0xbb0e0052,0xbbe0508d,0xbc047f15,0xbc26c2f8,0xbbf80b1d,0xbbde6810, -0xbbdc5444,0xbc1143ea,0xbc3676b3,0xbc67035a,0xbc65dce8,0xbc910f44,0xbc8435c3,0xbc908441,0xbcb780b2,0xbcd00945,0xbce25c00,0xbceb8425,0xbcf4c2cd,0xbd01bc70,0xbcfc1c26,0xbceda0ed,0xbcfc66ab,0xbcfa3871,0xbd044a5b,0xbce2c8bb,0xbca5d466,0xbc92e58c,0xbc853d69,0xbc7c1b88,0xbc687a04, -0xbc696c0f,0xbc65453c,0xbc6a143d,0xbc61ee73,0xbc5e5932,0xbc4362fd,0xbc35452e,0xbc2fe7ad,0xbc37ff67,0xbc49caf5,0xbc613b95,0xbc69ffb5,0xbc64d64a,0xbc5945e8,0xbc83ad80,0xbc80fa65,0xbc773477,0xbc701149,0xbc7ca7d9,0xbc7dfb30,0xbc7b59e2,0xbc811574,0xbc8516d4,0xbc8636cb,0xbc86aed8, -0xbc84d57b,0xbc8cb1d4,0xbc8c0879,0xbc86eb7e,0xbc8b3791,0xbc8b7b0b,0xbc8a32fa,0xbc8aac58,0xbc8557b1,0xbce33af1,0x3bfc63b6,0x3b8b9c04,0x3b7afa80,0x3b95ddce,0x3ba7d92b,0x3bb3bf06,0x3b98237e,0x3ba2f42d,0x3ba5ba48,0x3bc13cad,0x3bd27fc6,0x3bcd941b,0x3be01927,0x3bde2096,0x3bc22a76, -0x3bada325,0x3b9f7fe1,0x3bd13b26,0x3bb3fe61,0x3ba27fce,0x3b8b1bcc,0x3b977424,0x3b9bb415,0x3ba378e4,0x3ba772d4,0x3ba44b1c,0x3b9833c1,0x3b8e4035,0x3b8d024b,0x3ba6fa3d,0x3b979dcb,0x3b8cdc6f,0x3b969368,0x3b7e4329,0x3b786e79,0x3b62dc41,0x3b8ab457,0x3bebe25a,0x3bba7dc1,0x3bd04055, -0x3ba84086,0x3bcf1c2a,0x3bc59749,0x3bd16444,0x3bc0c52a,0x3bea2f1d,0x3c10e4df,0x3c0d8f00,0x3c3c4076,0x3c34e1f2,0x3bdbde90,0x3bb63e0c,0x3bb3d8d5,0x3bfb8004,0x3bd72ba8,0x3bdbedc6,0x3b9e95df,0x3b9bef40,0x3ba82b43,0x3bd00516,0x3bc54fc8,0x3bb29094,0x3bb1b35b,0x3b8cde64,0x3baeb35d, -0x3c176654,0x3bc8c1fd,0x3ba45b66,0x3bd4b435,0x3b750b41,0x3b4aa188,0x3ad48511,0x3bb1f3b8,0x3b9f034c,0x3b70d050,0x3b93b0ea,0x3ba4ee3f,0x3bb40caa,0x3ba68fb5,0x3baf6dab,0x3b710564,0x3c0cbc9d,0x3c2d79bf,0x3c206bdc,0x3c81c3b4,0x3c67f812,0x3be91724,0x3bdf076f,0x3bb77b9b,0x3c1b87e8, -0x3bf634b0,0x3bcda8f6,0x3b8999c5,0x3b878974,0x3bb181e7,0x3bf19f15,0x3bf2fbae,0x3bdf88d4,0x3ba643f5,0x3b56fefe,0x3b60f022,0x3c3591e3,0x3bbd58a5,0x3b9eb6ec,0x3bc4f0df,0x3a8864dd,0xba090b5d,0xbb1278f7,0x3b8ead13,0x3c26c046,0x3bce2ebf,0x3b937922,0x3b4c220f,0x3bd16cef,0x3b9db302, -0x3bb41da5,0x3bae7ab4,0x3c13cad3,0x3c58b29b,0x3c317c81,0x3ca6edce,0x3c97cfb1,0x3b781248,0x3bba51ba,0x3bb419d0,0x3c4cc5ac,0x3c0afe29,0x3be58f37,0x3b4556ea,0x3b1fe3b4,0x3b5655c8,0x3bed3c98,0x3bf4f630,0x3bda1a46,0x3b6e190f,0x3b083579,0x3b6fc8b4,0x3c997c60,0x3bc49b89,0x3ba5f7fe, -0x3c0ad1c1,0xba9c9b89,0xbb5665ad,0xbbf70e79,0x3b78af12,0x3b724e9d,0x3a3c16ca,0x3b767748,0x3bf2d35c,0x3bcc3b57,0x3b859425,0x3b67958a,0x3a93d13c,0x3c1f1b73,0x3c6fca68,0x3c378a92,0x3c9e1141,0x3c618e1f,0x3adfe15a,0x3c0256c7,0x3c2fe1dd,0x3c9a5ea7,0x3c212572,0x3c10ca5e,0x3acf0367, -0x3b2ced33,0x3b9c1b4a,0x3c0533fa,0x3c13aea0,0x3bf3a8df,0x3b5df811,0x39b1757e,0x3b4c9615,0x3c8ee708,0x3c16dbbc,0x3b9f14ba,0x3bc6b1a1,0xbbb71bbc,0xbc1d7067,0xbc2e940a,0x3b5365c6,0x3cb75261,0x3cbdd7f9,0xbb92d1e7,0xbcaf855c,0xbceaf078,0xbbbd92e6,0x3c040be5,0x3c24f2a6,0x3d13e3d0, -0x3cfb5532,0x3c03e67e,0xba124c16,0x3b9dd856,0x3cd7595e,0x3c51a640,0x3c0e1ef8,0x3c1d0ebe,0x3b61a03c,0x3ad297f5,0x3b99ccd3,0x3c388510,0x3c498591,0x3c8440d5,0x3c6ead36,0x3c85508a,0x3d033265,0x3c328330,0xbc051a15,0xbcb4072a,0xbca174b9,0xbbd8dee6,0x3ca55d06,0x3cefdb5b,0x3d0085d5, -0x3cce3b55,0x3cbecd3a,0xbbb9a43e,0xbd75bd13,0x3d01ed72,0x3d3e3434,0xbbda1243,0x3c75ac0d,0x3c2fc274,0x3b2c9381,0x3bac376e,0x3c1e30d9,0x3cadee52,0x3c7ef2ed,0x3c2fdf8b,0x3c1a8866,0x3c9ab495,0x3cb5c8f3,0x3c251a9b,0x3c1d99a2,0x3c264cda,0x3c0ea1ed,0x3c54ad79,0x3c77c01f,0x3c8a4d79, -0x3c9f38d3,0x3c92498b,0x3ca4fa03,0x3c18d5b5,0x3bea6b3e,0xbbbbdef4,0x3caf60f9,0x3c4b258e,0xbcc6534a,0xbc82cfa0,0xbc60a66a,0xbc3c0990,0xbb1d7ecd,0xb927e4e1,0xbd38e006,0xbc22a749,0xb9520aad,0x3a99d309,0x3c69ec15,0x3c21e160,0x3b9b1bb9,0x3bd1a8f8,0x3b8cd9a4,0x3c448554,0x3bf32ce6, -0x3c16d447,0x3c2fc1ec,0x3bc5bf2f,0x3bebf313,0xbb885b73,0xb9c0e011,0xba72f5a3,0xba01760e,0x3b8c8b6e,0x3c02e229,0x3c5a6cb4,0x3b7579b0,0x3b1e4207,0x3b807871,0x3c34efff,0x3c526d4d,0x3bd2ac5a,0x3cc8b6c2,0x3c981ec1,0xbbbe5b5a,0xbb1953a2,0xba3bed80,0x3c415db2,0x3c311f76,0x3c78102c, -0x3c1e38bf,0xba9ddce1,0xba04f01a,0x3b502890,0x3c2e96e0,0x3c1f9415,0xbab160e4,0x3bc1588e,0x3b9acf28,0x3bb5ce78,0x3b879a86,0x3bc3f40b,0x3bf7359b,0x3b256b57,0x3915c2da,0xbbaf1541,0xbb85c617,0xbb1c8777,0xbb08cba2,0x3b0dd44c,0x3b80888b,0x3c3e1a02,0xbb89078d,0xbc03f614,0xbb804093, -0x3ba7cedb,0x3beb7764,0x3b411dd9,0x3c258e8c,0x3bdb6944,0x3b677c7b,0x39a30f9c,0x3b83428d,0x3cbce051,0x3c8d0106,0x3bcc4fce,0x3c1b2a02,0x3c13b8ea,0x3ba4c3d2,0xbc310a27,0xbbc7839f,0xbc1f0dc1,0xbc0fc315,0xbb81a3d6,0xba88a47c,0x3ac1748c,0x3b371980,0x3b4bc82f,0x3b40b6d6,0x3c05b39a, -0x3c21ea3d,0x3b9184b0,0x3b416469,0x3b809564,0x3be6f3bc,0x3c0a3e8b,0x3c24e55a,0x3c344042,0x3be2bf57,0x3b6864aa,0x3b397024,0xbb31b36d,0xbc216203,0xbcd14350,0xbc30abd5,0xbc068ee4,0xbba2a802,0x3bbf24fc,0x3c1e9782,0x3c421e19,0x3c01d067,0xbc14b5b4,0xbc9499f8,0xbccaa55f,0xbd1d261a, -0xbd442352,0xbd2908c2,0xbd0012b2,0xbca1cd95,0xbc06f21e,0xbb914298,0xbb726d01,0xbbc7e9d9,0xbaf2d443,0x3b8703f6,0x3b54d01b,0x3b8181ba,0xbad1d1fc,0x3ba00d29,0x3b8df7f5,0x3b8d4e5c,0x394d430c,0x3a7e4d86,0x3c325c4f,0x3c199fd0,0x3bd998e4,0x3990cd09,0xbb12b179,0xbbce9bc0,0xbbb6416e, -0xbcabbc87,0xbc92be45,0xb9f72a90,0xbbd01809,0xbbb2a854,0xbb59cca5,0xbbb83d7e,0xbcc02914,0xbce966f7,0xbd005e6f,0xbcdd5f8a,0xbc6c34f6,0xbcab338a,0xbcb4e67e,0xbccaaf27,0xbcc70041,0xbca68142,0xbc7709d2,0xbc5832e8,0xbbec1cd3,0x3b833dc5,0x3b4df992,0x3bae5606,0x3b8724f8,0x3c180734, -0x3c2813c3,0x3c1fcc58,0x3bc61c31,0x3bf3b288,0x3c5b517e,0x3bd0b92b,0x3b90e53f,0xbb4875f8,0xbb9f4585,0xbbf2cc24,0xbc37aff9,0xbc3a08ba,0xbc930288,0xbcf2fecd,0xbd0a0f47,0xbd022866,0xbcc1fa35,0xbcc40320,0xbd0688d4,0xbd26bd90,0xbd13c942,0xbd049da4,0xbcc370b7,0xbcc0e6b8,0xbca48fac, -0xbc94a243,0xbc63a314,0xbc3531c1,0xbb7827ab,0xbb8f9086,0x39aae9e1,0x3bc49f95,0x3b3b164f,0x3b3f555a,0xb9eafdec,0x3b63f609,0x3b97e3d1,0x3b8f0553,0x3c1d71d6,0x3c32c5f4,0x3c874ff6,0x3c3b955e,0x3c0f8b2e,0x3b6531db,0x3b01648d,0xba41a7c7,0xbb8e771f,0xbb904d15,0xbbbb27af,0xbc0deff4, -0xbc90b3b5,0xbcc1cac1,0xbcd09aec,0xbcfe0bb6,0xbcec10a8,0xbd03f91c,0xbce2b3d3,0xbcd5fd2f,0xbcd3c026,0xbc96cd39,0xbc4e44f1,0xbbd2fffc,0xbb0729c8,0xba14d46f,0x3bad1072,0x3b475587,0x3bc9da47,0x3bee3405,0x3b35c19a,0x3a784165,0xbaeb5d29,0xbaf6f0a2,0xbb7f0bc3,0x39625d3a,0x3b8aa88a, -0x3b9e35ac,0x3c108e7e,0x3bc8b842,0x3b9cb67b,0x3b4a06da,0x3a6229df,0xbab7e1a2,0xbb80fc1e,0xbb95380b,0xbb77256a,0xbb12f4d5,0xbbceede7,0xbc56c83c,0xbcaae072,0xbccda028,0xbc1f859f,0xbc139bda,0xbc067b4b,0xbba3f686,0xbad743e0,0xbb4f8dce,0xbb793b75,0xbb875d5e,0xbba8a3ea,0xbb8df98a, -0xbb991e1d,0xbb2ce207,0xbab7d96f,0x3a4dd75b,0xb826c0fc,0xba9da6c2,0xbb686a7f,0xbb4063b6,0xbbdfb07d,0xbbe1eb55,0xbc11b92d,0xbc19a283,0xbc31beb4,0xbc2a27cd,0xbc1bafe3,0xbc195256,0xbc28ac75,0xbc41fda5,0xbc4d332a,0xbc732af3,0xbc91eec2,0xbcadc79d,0xbca6b3a6,0xbc8a9599,0xbc5be8df, -0xbc42c4eb,0xbbe5b45b,0xbbea8a3e,0xbc061e7d,0xbc1ca69d,0xbc33acd5,0xbbeb4fde,0xbbe3c507,0xbbee83ed,0xbbca4ac5,0xbbbb13ef,0xbbb22d7d,0xbbb17781,0xbbc3bfd0,0xbbcde689,0xbb921e11,0xbb483ec4,0xbc07e040,0xbbcfd326,0xbb93780d,0xbb3e960b,0xbb215ec6,0xbb070b50,0xbad985eb,0xbaccfa61, -0xbaf6d7a9,0xbaef14ab,0xbb0e7b51,0xbb2c2d09,0xbb4ab3c3,0xbb4ef77a,0xbb423152,0xbb2edbec,0xbb3c5f82,0xbb889672,0xbbb92680,0xbbdbf38e,0xbbce1869,0x3b7a0c54,0x3af78dad,0x3b28fa05,0x3b2a404a,0x3b457a89,0x3b6a06bb,0x3b493662,0x3b56eda7,0x3b58f1fe,0x3b80dedb,0x3b8c5049,0x3b8ebafa, -0x3b9d87f4,0x3b9f54ec,0x3b901664,0x3b4da90b,0x3b153f06,0x3b52bf9f,0x3b37d849,0x3b2df0a7,0x3b13f3bb,0x3b2b8da9,0x3b2d1980,0x3b31233b,0x3b049680,0x3ac32ce3,0x3a40a689,0x3a4e6e91,0x3a9d9a13,0x3b353d86,0x3b12639b,0x3b075f91,0x3b1b5dc1,0x3ac3fa39,0x3a9a55c8,0x3a525864,0x3ac76cf2, -0x3b75b432,0x3bc1dee5,0x3ba07cca,0x3b88f087,0x3b8219f4,0x3ba893c6,0x3bb8527a,0x3b8ccb20,0x3bb586be,0x3be10eae,0x3be3a055,0x3c18b2f5,0x3c12a117,0x3bce3afe,0x3b856ffa,0x3b1014a3,0x3b0c762f,0x3b400e8a,0x3b7245a3,0x3b321f69,0x3b6398ac,0x3b6a561d,0x3b61f326,0x3aaa22a1,0xba7cc208, -0xbb492264,0xbb5dc7a9,0xbaa8302f,0x3ba5573d,0x3b28c649,0x3b0770c7,0x3b380a8c,0xba140694,0xbaa761c6,0xbadb401a,0x3a924284,0x3b152c19,0x3bcd93fc,0x3b610f80,0x3b9ecd27,0x3b9a31ab,0x3be16e00,0x3be09840,0x3b77860b,0x3bfb100a,0x3c17e2e2,0x3c2142bb,0x3c69c538,0x3c5bec34,0x3c0ef4cc, -0x3bada6d9,0x3b166679,0x3a874262,0x3b5956c2,0x3b5b194f,0x3b4e977f,0x3b8fcc4b,0x3b9b5868,0x3b9e1f14,0x3a69847a,0xbb2bcdd7,0xbbe1cf9e,0xbc0328d7,0xbb9929bb,0x3be924b0,0x3b1ce5bd,0x3b2d9cea,0x3b4dd13e,0xbb2f81d2,0xbba49013,0xbbbcd85a,0xb9e0755e,0x3bdd1b5f,0x3c4b865b,0x3be4e808, -0x3bb909a6,0x3b92a5f8,0x3bf71dfe,0x3c1d5320,0x3bc4f4c2,0x3c28d49e,0x3c587c0e,0x3c4787f9,0x3cb0a9d3,0x3ca133a2,0x3c21237c,0x3bc258f2,0x3b2233e5,0x3ae67908,0x3b6e37a2,0x3b885f02,0x3aea4078,0x3b946fdf,0x3b8c9872,0x3bad6ecd,0xbac58cbf,0xbbfbdf85,0xbc6ca2b1,0xbc631f77,0xbc0f1082, -0x3c3b2608,0x3b012179,0x3afb0346,0x3b7f968c,0xbc006274,0xbc204d43,0xbc1e881d,0xbb061af6,0x3b1b7ad8,0x3bf7c3a4,0x3a164877,0x3bb335ba,0x3be10e2c,0x3c1e0fc4,0x3bfecaad,0x3b8aa8f9,0x3c2bc2c7,0x3c5ae22b,0x3c54bd9b,0x3cba2eff,0x3c9629f0,0x3c03cb1e,0x3bff6768,0x3bfb9699,0x3bf9cf22, -0x3b8a359e,0x3b76a625,0x3adc3d33,0x3ba0d7c2,0x3bd7ae4c,0x3bd1e5ef,0xb9c14f82,0xbc143b06,0xbc79b8b0,0xbc99abc2,0xbc1e5507,0x3c539f92,0x3b765f8d,0x3b8478f9,0x3b7d793c,0xbc1ba945,0xbc8016dc,0xbc55c21a,0xbb307281,0x3beed198,0x3d01b4f6,0x3cb6eecb,0x3bf078a5,0xbcafd7f4,0xbbdddf83, -0x3b487036,0x3be954b4,0x3ccfd23e,0x3d027d24,0x3cb758e8,0x3b45fa8f,0x3b65695d,0x3cb23278,0x3be00d72,0x3ba22cca,0x3c138cd6,0x3c338cd1,0x3c3d1352,0x3c40e165,0x3c6381c2,0x3c52a9d7,0x3c8afc9a,0x3c9ee0f8,0x3c9d7d0a,0x3d1b0f3a,0xbbefb85e,0xbcd4eb02,0xbcd6aad8,0xbc5ff45b,0x3afa5191, -0x3b68107e,0x3d117785,0x3d113148,0x3c29666d,0x3b841924,0x3bc5e8e8,0xbd2902c4,0xbcd05caa,0xba907c1c,0x3c8642f5,0x3c3f5eb6,0x3c29cdad,0x3c7916ec,0x3c0170d1,0x3bf0fa86,0x3ca09e9f,0x3cadc4a6,0x3c8e3a3b,0x3c01c30f,0x3c826fbd,0x3c7a4d5d,0x3be9cd80,0x3b916f42,0x3bacc2e7,0x3bff3869, -0x3bdc6d42,0x3c385e93,0x3ca31a2a,0x3cbd6541,0x3c97eb0c,0x3c6a882c,0x3ad3f57d,0x3b3f3d8e,0x3bda1c71,0x3c5eb372,0x3c155247,0xbc22cee5,0xbb73ea87,0xbb86f076,0xbc74cacd,0x3c3ccb69,0x3c93f547,0xbcbb90f4,0xbc3ee456,0xbc17eef4,0x3c6645b1,0x3c4fad0d,0x3c43d745,0x3b991f4e,0x3bc6ff32, -0x3bb5d167,0x3c27237b,0x3c24cf1c,0x3c2d6c5f,0x3c2cface,0x3bda4ff6,0x3aa025b4,0xba8b3ec2,0xba305135,0xbb874bbf,0x39d47cee,0xbaeaf814,0x3b2f388b,0x3c643b48,0x3bcbd8fb,0x3bcd080a,0x3c05719d,0x3c160163,0x3bdb9913,0x3c4fc0de,0x3c000d24,0xbb431579,0xbc7592d5,0xbbd8b056,0x3b0bb4ca, -0x3c779e25,0x3cbec9ba,0x3cd2b118,0x3cafab42,0x3c722215,0x3c43ee4d,0x3ab8fb31,0x3c46d190,0x3c1792f3,0xbbad8a47,0x3be25e21,0x3c001657,0x3ba97c4c,0x3bc98cc4,0x3be7e145,0x3c243d26,0x3a78c827,0xbb7a7988,0xbad5e520,0xbb9090aa,0xbb71cbd1,0xba8b5eb4,0xb99fe302,0x3ab1f223,0x3c22f6c1, -0xbb9867f3,0xbbdd3c62,0xbb407b6b,0x3aae1fcb,0x3b24d109,0x3c3e6f4b,0xbad70c33,0xbbb3e1e8,0x3b24ad29,0xbb56dd84,0x3ace4e6c,0x3c77f1dd,0x3ca86782,0x3b2205d8,0x3a81b712,0xbbcdc5e4,0xbbf4478b,0xbc76020b,0xbc402b21,0xbc5a6983,0xbc106a7d,0xba76ab71,0x3b270c7f,0x3a903f13,0x3be567d2, -0x3bae5a45,0xba0709ca,0x3b0a9409,0x3b17de37,0x3b34d2b1,0xba635989,0x3ab54cd2,0x3c0ecd8a,0x3c2faf58,0x3c3aa700,0x3c17b7fd,0x3b963b12,0x3a8da439,0xbb7a2a61,0xbc112c5a,0xbc2a42b1,0xba641a53,0xbb12f618,0x3bb75d43,0x3ca42b91,0x3cb18d67,0x3c9a8c2f,0x3c2aef82,0x3c2041e1,0xbc27be43, -0xbc220945,0xbca8c486,0xbd038a85,0xbce70f43,0xbd0b6632,0xbcec6ced,0xbca94444,0xbc36d9b3,0xbba1414b,0xbb4af238,0xbb106b6f,0xbb2e2326,0xbbb217cb,0x38e7b68c,0x3aee9c60,0x39d3aeb8,0xb9d4ff12,0xb9e71632,0x3b30fe64,0xbb0bbc95,0xbb3700ba,0xb8fad5e2,0x3b1c59eb,0x3b2e96c2,0x3b005f89, -0xbae31c78,0xbbcdca89,0xbbba81f9,0xbcb2eb90,0xbcc5699c,0xbca37c0b,0xbc2f0713,0xbaf10add,0x3bc8f092,0xbbe8b54f,0xbc88ab48,0xbc90abe7,0xbc9a8cad,0xbc96fd6d,0xbc899f0e,0xbcd7fc25,0xbcf35be6,0xbce86b13,0xbcce67ef,0xbcadf89f,0xbc9594f3,0xbca4003b,0xbc81a1f1,0xbbd63d78,0x3a1b4eb0, -0x3b999b6d,0x3b8c4491,0x3bd07fab,0x3bd8f364,0x3bdfbed9,0x3b1ef5a5,0x3b0da1a0,0x3aeda8bd,0x3bbe08b8,0x3b8df4e8,0xba9d5ffd,0xbbb4dfe1,0xbc061cba,0xbc0c4ec8,0xbc3ac35c,0xbc43db09,0xbc75ca4a,0xbc8e4430,0xbca6e60f,0xbcc69159,0xbc99f5db,0xbcbf470c,0xbcdc1531,0xbcc26b93,0xbcbe2cf6, -0xbcadce91,0xbcabcdf5,0xbca25040,0xbc916db0,0xbc824d94,0xbc8441a6,0xbc5c9d24,0xbc4f49fa,0xbbd55422,0xbacf7972,0x3ab01f12,0x3b88215f,0x3ba45b77,0x3bcde6f0,0x3bf5c8c4,0x3bfc19f2,0x3bb711b4,0x3bc1d105,0x3bd3f383,0x3c06a0c0,0x3c080d19,0x3c0f83ba,0x3b8e3501,0xba3f0c4b,0xbc061ea6, -0xbc305acb,0xbc6d3dea,0xbc949899,0xbcb33d5c,0xbccd4c7e,0xbceaaa89,0xbcd8046f,0xbcca98a6,0xbcdc972b,0xbcdd77ee,0xbcc02915,0xbcb6897b,0xbc8c868a,0xbc3f01de,0xbbe0c3b8,0xbbec44f1,0xbc19f5fa,0xbbed9b47,0xbbe632ca,0xba059601,0x3a80a8e0,0x3abba0b0,0x3b052cc6,0x3b8089ec,0x3b96eadc, -0x3bb489f3,0x3be91975,0x3bfca116,0x3be4f1d9,0x3bea43d9,0x3c005ac8,0x3c175bc7,0x3c438c00,0x3bbef38f,0x3b1befb8,0xbad0d6c5,0xbb83f4f5,0xbbd6519d,0xbc0e7781,0xbc4fc183,0xbc893c59,0xbca6fd8c,0xbcbd3f4d,0xbc59c8d3,0xbc7d1188,0xbc48e630,0xbc3db999,0xbc143c55,0xbc31c84e,0xbc4082ae, -0xbc2a06f8,0xbc1ef177,0xbbae50b3,0xbb760198,0xbb17785f,0xbb55cd5c,0xba4a446f,0xb9ffbdd0,0x39485fe8,0xba101468,0x3980c822,0xbade61df,0x3b2026fa,0x3b2d6fbf,0x3b67677f,0x3b7ef90b,0x3b995888,0x3b8fe36b,0x3b827a10,0x3b819609,0x3b31bb19,0x3aa54648,0xb73f752c,0xbaf81821,0xbb53a02e, -0xbbb8cfe4,0xbbd881b3,0xbc0ffd99,0xbc39229b,0xbb87dd5c,0xbbb7b93c,0xbb97a560,0xbb7b8a85,0xbb39dfcb,0xbb4fa7b4,0xba9e36db,0x3a06d2e6,0x3a95790a,0x3a132740,0x3a07fc4e,0x3ab08cb1,0x3b1bdf70,0x3b25dc24,0x3a581ead,0x3a5ab2e2,0x3aac40ac,0x3aed4c48,0x3b1657ec,0x3b2ab4bd,0x3b092ea9, -0x3b16c4af,0x3b180ec1,0x3b17f11c,0x3b2377fb,0x3b2e75a1,0x3b061e33,0x3a9047f9,0x3a4900b2,0x3963fc76,0xb9a7ae10,0xba355cb8,0xbaca86b9,0xbb0e01e4,0xbb498626,0xbb78ef88,0x39c1df85,0xb761a5f4,0xb9be21be,0x3a3282cc,0x399afd88,0x3a6fc574,0x3aa7871e,0x3a8d38b8,0x3aa357e4,0x3a69f4bd, -0x3ae9cfb5,0x3b0d714f,0x3b12ac5e,0x3b2305f7,0x3b2ad01c,0x3b1f073c,0x3a174d67,0xb9a8e34e,0x392eeb74,0x39647f96,0x39754eec,0x390dfe92,0x3a081a69,0x39cb7da4,0x38ed32d8,0xba8fdb4d,0xbae2bb67,0xbb17f12d,0xbaebe4cc,0xbaa31243,0xb6e374de,0xb9e03290,0xb9df5d4c,0x390ec7f6,0xba81d2f6, -0xbaaff655,0xbac417f7,0xba804c40,0x3a864381,0x3bbe5f04,0x3baa5ff5,0x3b576ca5,0x3aca5fd7,0x3b6c5280,0x3b88c5ce,0x3ac9301f,0x3b803bc0,0x3b9dd4c3,0x3b8fb133,0x3bce7760,0x3bb850c3,0x3b97b76d,0x3aad0fb6,0xbab85298,0xbb110f39,0xba514bd0,0x3a4a14df,0x3a67add2,0x3b2797d1,0x3b0f714c, -0xb986f275,0xbb613891,0xbbcc93f6,0xbc11ef15,0xbbdf6aee,0xbb9bde8f,0xb99f1e2c,0xbab8835b,0xba8ddd5c,0x39fbc28f,0xbb8f3df3,0xbba434d9,0xbb668a64,0xbb015c7f,0xb9349633,0x3bf85d89,0x3b81fd19,0x3b8cf2d5,0x3b370e74,0x3bf07fb9,0x3be95446,0x3a8f11dc,0x3bdefa27,0x3c01c070,0x3c179f89, -0x3c317176,0x3c2ecd6b,0x3c051d18,0x3af914a2,0xbaf55dc0,0xbb8fb55a,0xba84a7c6,0x3a2d490d,0x3b0c6c9d,0x3b96eb3a,0x3b719e85,0x39afbde2,0xbbc24eb8,0xbc2592ea,0xbc63ce28,0xbc40ce06,0xbbeeac3b,0x39d38282,0xbaf4c7b7,0xbad58dbb,0x3a84a332,0xbbd7d32a,0xbc09c590,0xbbf38d14,0xbb7df354, -0x3b8d99c4,0x3c994318,0x3c5804f8,0x3c17c05b,0x3b57c8e5,0x3c1f12b8,0x3c47c2f4,0x3b962f01,0x3c3aeb3a,0x3c5f5bb3,0x3c458524,0x3ca675b7,0x3c959f7c,0x3c44721e,0x3b6c26ae,0xbb1c625b,0xbbc105c1,0xbafe24a2,0x3ad86ee4,0x3b29122a,0x3bf77e3f,0x3bcd5691,0x397d64fa,0xbc340ae2,0xbc9fb1c3, -0xbcc71433,0xbc961a09,0xbc45fd29,0x39edca6e,0xbb38d868,0xbb3ea0f7,0x3b41bd3b,0xbc5833c4,0xbc6d6206,0xbc066c56,0xbbac6d97,0x390e43f5,0x3c584b1c,0x3b7c2f40,0x3bb5a4bb,0x3be56eae,0x3c79e0ea,0x3c39f32e,0x3b9762af,0x3c3887e2,0x3c5c9a41,0x3c88e2b0,0x3cd3aa81,0x3cb4d916,0x3c4818c0, -0x3bd3ac82,0x3ad09f29,0xbb63f7a8,0xba966a99,0x3b0b976a,0x3b728925,0x3c02d78e,0x3bfc95ae,0x3a150cd0,0xbc2f425f,0xbca8d9e8,0xbcc4c929,0xbcb140a8,0xbc331402,0x3b6b7ccd,0xbb347e38,0xbae41d4a,0x3b14f3e3,0xbc5c443b,0xbc94ecf6,0xbc5057fc,0xbbe54aba,0x3bda01be,0x3d100023,0x3d31b142, -0x3cfd8964,0xbc267edd,0xbc5e2e7b,0xbc073f15,0x3bf23392,0x3c439e4f,0x3ccd6559,0x3d12cc48,0x3bddf09f,0xb97f9b98,0x3c6f86b0,0x3b5c875f,0x3ba0d924,0x3c506834,0x3c7f515c,0x3c857e48,0x3c3e006a,0x3c3eec08,0x3c2f9055,0x3c5f67ad,0x3c8b72cc,0x3c53a434,0x3c66aad1,0xbcb059fd,0xbd11259f, -0xbd2326da,0xbc2ab770,0x3b93b066,0xbc58dd36,0x3ccc61e9,0x3cc5aab9,0xbbf3b885,0xbb0d1127,0xbba3b34c,0xbcd54a62,0xbd8b1376,0xbd236e29,0x3d251b52,0x3c593758,0x3c0a67f6,0x3c700406,0x3c1491bc,0x3c04e05f,0x3c8587b5,0x3cb99099,0x3ca43531,0x3bbbe006,0x3c144eaa,0x3be3d6a6,0x3bc5aa16, -0x3b45fd3a,0x3b852752,0x3bd25932,0x3b1a7639,0x3bdc9d80,0x3c833be1,0x3ca662f8,0x3c661cfc,0x3b56f51c,0xbaf52262,0x3aba3e77,0x3c8c6e65,0xbb82fe48,0xbc0f17f1,0xbc5395ee,0x3b86203a,0x3bd07937,0xbc0fcbe8,0x3be7d8e9,0x3cc3a1e2,0x3c222c6c,0x3aee1962,0xbbb2a220,0x3cc7360d,0x3c63843c, -0x3c54f6d9,0x3baef5ac,0x3bf76c86,0x3c0afcef,0x3bd72959,0x3c3bf484,0x3c31578b,0x3c1871e0,0x3bc6a3b2,0xba1fa153,0x3b2f676a,0x3ac8da64,0xbad00613,0x39ed3a83,0xbb8313e1,0xba6276e1,0x3bae555f,0x3c0b20ee,0x3c2378b5,0x3c2e9aeb,0x3bce4fcc,0x3acac58e,0x3c49440e,0xbc3eebd5,0xbcaa90c6, -0xbc9dc34d,0x39ebd130,0x3c56ec8e,0x3cc12125,0x3cd7335a,0x3cf12de5,0x3cef8d07,0x3ce99d87,0x3cc27615,0x3bb8aecc,0x3c4f80c4,0x3c0ea34a,0x3a28ace5,0x3c090bde,0x3c110f60,0x3bb1b84f,0x3bcace6f,0x3bd43622,0x3c04733c,0x3aa802da,0xbb2a853f,0x3a18bb64,0xbb17481e,0xbb1d775a,0xb9b5210c, -0xba84eaff,0x3a5f726f,0x3b3750f3,0x3b552315,0x3b84d15d,0x3b52c389,0x3a1ee70f,0xb91010b0,0x3c1e89f3,0xbc197999,0xbc1782d3,0x3beaaa9e,0x3bfb9581,0x3c3a932e,0x3c51f0b3,0x3ca0d7f9,0xbbece96f,0xbc8e5d5f,0xbcbc46b1,0xbc88ba3a,0xbc3d9186,0xbc02f258,0xbc0e2993,0xbc020b0c,0xb992e1ed, -0x3b7c1b07,0x3b38ed43,0x3bf2a5c6,0x3b9c0a2b,0xbb8ffbde,0xbaf116fb,0xbafd8af0,0x39dc663d,0xb961a324,0x3aed8f7a,0x3bfbca5f,0x3c07069b,0x3c23f90c,0x3c12df3b,0x3bda161c,0x3b5caa81,0xbbae6e90,0xbc1613b2,0xbbaf660f,0x3c8b62ec,0x3bde0c30,0x3c8c3b9a,0x3d07b075,0x3cf8d87f,0x3cd913b5, -0x3c7a4699,0x3bdaac90,0x3823b609,0xbb1fa648,0xbc0c53df,0xbc930ccd,0xbc662211,0xbc96bf94,0xbc80191f,0xbc436264,0xbc1e05d3,0xbbec3e11,0xbc0dd047,0xbbddea6b,0xbbdb3a0d,0xbc0dc63d,0xba59a8a9,0x399a800d,0x3a6863f2,0xb968dd9a,0x38462987,0x3adb8eec,0x3a5f365c,0xba859ce9,0xbaeff617, -0xb9839b8e,0x3a4238fe,0x3b6ca58b,0x3b6b913f,0x3a045bb6,0xbba7c1f1,0xbc51149d,0xbc8e5173,0xbcfff96b,0xbc7c1c33,0xbbdbf5b2,0xbb35e58c,0xbb089695,0xbc210ac4,0xbc4f77af,0xbc5f170a,0xbc879b72,0xbcebf42f,0xbd012356,0xbd09c9da,0xbd00b567,0xbcd757df,0xbcaac979,0xbc8ee6d7,0xbc9496a8, -0xbc88fb57,0xbc51b1ec,0xbb9361fa,0x3a5039a9,0x3baf3b85,0x3b8a3f64,0x3b871f1d,0x3b7158f8,0x3b079cd4,0x3a398dc2,0xbb3b6797,0x3a5338c5,0x3b056140,0x3b6f9e18,0xba98ae50,0xbb71044e,0xbb8d673a,0xbb80bb5a,0xbae816b2,0xbb205a8c,0xbb4f2001,0xbb9dbe8a,0xbb9edb51,0xbc0e055b,0xbc3cd5aa, -0xbc512747,0xbc35603a,0xbc5dd789,0xbc8055c5,0xbc8d0c9d,0xbca02209,0xbca41796,0xbca6940b,0xbcae3cbe,0xbcb42e56,0xbc9f885d,0xbc6bf02f,0xbc555366,0xbb928be2,0x3abff886,0x3c0f4146,0x3bd2eef0,0x3ba279fb,0x3b930840,0x3aec50f4,0x3a5ca57b,0xba1119eb,0x3aa18c62,0x3b479ddf,0x3bd07c01, -0x3aa599ac,0xbb23314b,0xbc05c0d9,0xbc257b22,0xbc6290f5,0xbc8de33d,0xbc8d8e0f,0xbc867bba,0xbc7d9547,0xbc688e6d,0xbc7d6f2d,0xbc8498af,0xbc96b521,0xbc7c01e7,0xbc526541,0xbc547081,0xbc4a4055,0xbc4af5d3,0xbc686fc4,0xbc8cf116,0xbc983519,0xbc8b8f68,0xbc41a6c7,0xbc36e276,0xbb92c59f, -0xba4b77c1,0x3bc29647,0x3ba7affa,0x3be7acfb,0x3bd0ef98,0x3baea74d,0x3b8f9b40,0x3b475a47,0x3b81f7b7,0x3b7218f6,0x3b908b22,0x396d3936,0xbadd2c51,0xbb5dd5ff,0xbbcd0a1d,0xbc1755d6,0xbc48089e,0xbc517f11,0xbc6922b5,0xbc7e37c6,0xbc7c28d0,0xbc71f770,0xbc886a09,0xbc90b23e,0xbc90b24f, -0xbc95aea1,0xbca0aa33,0xbc9af7b8,0xbc8f5bb8,0xbc798851,0xbc31bee2,0xbc037b30,0xbbe2e2bb,0xbbee43d5,0xbbbc72e4,0xbb98e983,0xbb7899d1,0xbb10d41a,0xba4c83bd,0x3b668718,0x3b7832aa,0x3b614f37,0x3b83f39b,0x3b876464,0x3b7f6948,0x3b6cd496,0x3b7b0e18,0x3b47323b,0x3b0d6a40,0x3990b0d4, -0xb95d3fe4,0xb9c1ee39,0xba6202d6,0xbb86d48a,0xbbb46951,0xbc0b70d7,0xbc47e217,0xbbba8ccb,0xbbdb3bc9,0xbbd60211,0xbbb68766,0xbb88c23f,0xbb8e1ad8,0xbb7a9a3b,0xbb57e7ee,0xbb5666be,0xbb8558d4,0xbb8fe5a2,0xbb76c482,0xbb3692a6,0xbb1e078e,0xbb4012ac,0xbb2e776f,0xb9be8d1b,0xba3c9343, -0xbaa13f51,0xba9576de,0xbaa103f9,0xbac07edb,0xbad81121,0xbae44f45,0xbaeab980,0xbb0098d9,0xbb246727,0xbb366b4f,0xbb3b03f2,0xbb5c74ce,0xbb7e4794,0xbb8c4482,0xbb9d6e07,0xbb9febad,0xbbb30439,0xbbb85c66,0xbba404b6,0xbb2b2a3e,0xbb07cda7,0xba935572,0xbac7db5a,0xba9053e8,0xbac0ca49, -0xba4d72d2,0xba0d2fbb,0xbab9b7f0,0xb9a0726d,0x39047a1c,0x395591f3,0x38ff3048,0x3939a65a,0x39e0034e,0xbab9452a,0xbb0bbd4d,0xbaf89d98,0xbae99110,0xbacfa4b5,0xbaac48b7,0xba9f2a87,0xbabfb188,0xbb04cc50,0xbb40fc67,0xbb550386,0xbb5cffb7,0xbb24c706,0xbb0345d0,0xbaccb655,0xbb004340, -0xbb010205,0xbaae5968,0xbb2876eb,0xbb428241,0xbb3eb873,0xbb2daaa3,0xbac0b51f,0x3b538148,0x3b4e9053,0x3a8ae878,0xbafaebcd,0x3abe3aec,0x3b0d8972,0xba810dd5,0x3b353561,0x3b415249,0x3b03b347,0x3b26a0dd,0x3adac627,0x3b2044f6,0xbae7ab1b,0xbb84818f,0xbb8d87c3,0xbb67a85a,0xbb0b3d9a, -0xba59da72,0x3a02003b,0xb9913e6c,0xbb7a1d2c,0xbbbda09b,0xbbf0d5f8,0xbc12726c,0xbb9eb266,0xbb6a4575,0xbb3565ad,0xbb4ead22,0xbb3b3a97,0xba89c9e5,0xbbc65b38,0xbbd8c990,0xbb8ae92e,0xbb7aa62d,0xbb602523,0x3b84d2ca,0x3b168e26,0x3ac72312,0xbb3b4e3a,0x3ba5a76d,0x3bc30189,0xbae14f0f, -0x3bb22620,0x3bd2dd00,0x3bfcb6b9,0x3bbcadaa,0x3bbbbbb7,0x3bda87a7,0xbacf4668,0xbb9ee8d6,0xbbc925bd,0xbb873496,0xbaf8526f,0x3a013970,0x3b17b57f,0x39e10298,0xbba07053,0xbc1741b0,0xbc388772,0xbc4f224c,0xbbe63601,0xbb5150f4,0xbacc4932,0xbb4e9b11,0xbb8100f5,0xb988e3fa,0xbc079e09, -0xbc211429,0xbbfde78c,0xbbd50210,0x377b4e00,0x3c6b3208,0x3c3b2b58,0x3beab4c9,0xbae5e9b5,0x3c0b1f99,0x3c3a49bd,0x3b161bc2,0x3c4b802c,0x3c5ffda6,0x3c259029,0x3c70ca12,0x3c48cf46,0x3c36bcfc,0xba750e23,0xbbd7208d,0xbbf75419,0xbbd4a2a5,0xbb102365,0x3adf0da9,0x3bb62559,0x3b52b17b, -0xbbd48433,0xbc740390,0xbca4f9c7,0xbca70675,0xbc1cf5c4,0xbb9a9f32,0xbb4da9d6,0xbb4d3469,0xbb9db0e5,0x3add1fc8,0xbc62678d,0xbc769ed6,0xbbccebf2,0xbbee8233,0xbbc51ece,0x3bf89799,0x3b65e7e4,0x3ae7f358,0xbacd78f2,0x3c794c68,0x3c619b24,0x3b46212a,0x3c3b05ba,0x3c5a195f,0x3c8734c3, -0x3cc11efb,0x3ca93213,0x3c5325d9,0x3b2c2e42,0xbb89657a,0xbbed78f3,0xbba8a891,0xbaa7aa1f,0x3b4d6274,0x3bc00b7c,0x3b615307,0xbc03f20f,0xbc808107,0xbcaa7115,0xbca48585,0xbc219183,0xba0a867c,0x3b3ba151,0xbb80c663,0xbba227b0,0x3ac7b24b,0xbc6abee2,0xbc8f9f0c,0xbc38c25a,0xbc2aa2ac, -0x3c14b94a,0x3d0030b5,0x3d4b831f,0x3d2cb6e2,0x3b35310f,0xbcb291c9,0xbcbd9470,0x3ad0263a,0x3aa48daa,0x3c819034,0x3d1de349,0x3bf34645,0xbb55ffea,0x3bd74bbf,0x3aec4a85,0x3bb62b92,0x3c0e9551,0x3c416d81,0x3c58759a,0x3c2d262b,0x3c28e6d4,0x3c0b5192,0x3c05a98f,0x3c55bf83,0x3bc427b9, -0xbbf77320,0xbccce180,0xbd032c88,0xbd12d46c,0xbb962f2c,0x3bb3b23b,0xbc922f89,0x3c34bb99,0x3bcb2cd5,0xbcc4858a,0xbc107cd9,0xbce04dc3,0xbcf86f53,0xbd8f2627,0xbd3f55ca,0x3ce94260,0x3c8d47b5,0x3c6fd5c7,0x3c06bb29,0x3bfa4911,0x3bf1ceca,0x3c3c84b4,0x3c9efeac,0x3c9bc48c,0x3bf6ddc1, -0x3bab3434,0x3b2def14,0x3bc6e866,0x3bb9beb1,0x3bbd7ec6,0x3b3b1aad,0xb7e5845f,0x3b078807,0x3bb6e50a,0x3c3b54be,0x3c040b4f,0xba516526,0xbaffc074,0x3a4a80c9,0x3cb7bcc2,0xbc5ebd4c,0xbc92cf82,0xbc1a6612,0x3b4b2656,0x3bc765e5,0x3c03b417,0xbbbd3b31,0x3ca2b0f4,0x3cb8625f,0x3c6e49ed, -0x3b6486f1,0x3c70051d,0x3c4201fe,0x3c5cdf2d,0x3c449990,0x3c1bae2a,0x3c1dadba,0x3b60d708,0x3c1f4ea2,0x3c121074,0x3bf75dc1,0x3bd3ce35,0x3a8bdc93,0x3b931774,0x3b257b5d,0xbabdc685,0xbb4c0509,0xbb484246,0xbad521c9,0xba84d8bb,0x3c32ada2,0x3c6489e9,0x3c6147f6,0x3bd67714,0x3b0b9f00, -0x3b87cab2,0xbc88e9a1,0xbcabb839,0xbcaea18f,0x3c95ce55,0x3cf97526,0x3ca0080a,0x3cbe5388,0x3ca168e1,0x3cd7bd6b,0x3ce7ed16,0x3cbfdf2c,0x3c09778f,0x3bb44747,0x3b90932d,0x3c4d0889,0x3c219d6d,0x3c037350,0x3b9ac57d,0x3b3d16f0,0x3b32845b,0x3b80e9f6,0x3b0e00f0,0xba1910f9,0xbaf00960, -0xbb05d75b,0xbb5135a6,0xbb1bbdbc,0xbaf252d5,0x38e35048,0xba99f149,0x3c1b86d1,0x3c4490e9,0x3c59acfd,0x3c011daf,0x3bc1bca6,0xbb65c791,0xbb4ab930,0x3a0c62db,0xbbfeb06b,0x3cdb73fc,0x3cdfe253,0x3b530e21,0x3c5ae626,0xbc6ee33f,0xbcaf4734,0xbcf95eec,0xbca41d90,0xbb979018,0xbb24c6b6, -0xbb6d5e0a,0xbbbf46fa,0xbb61aeb0,0xb9dde9df,0x3a671979,0x3addccb0,0xb93edff2,0xbb9435a3,0xbb95dd1d,0xbbb2b475,0xbb7c8323,0x398b159e,0x3b1a3137,0x3b217f8e,0x3b079edb,0x3baa6de9,0x3bffefcf,0x3c015d4f,0x3b836405,0xba16e892,0xbaa7ba2b,0x3bb8493a,0x3ca67c62,0x3cabe9fd,0x3cd5b8c0, -0x3ca3c4c8,0x3c927574,0x3c59776a,0x3c76576f,0xbb01a7d0,0x3bb85b41,0x3c459a60,0x3bb8482d,0xba36bf8a,0xbaf21def,0xbb749784,0xbadc8754,0xba49bf9e,0xbb4a9add,0xbb78d6e4,0xbc007918,0xbc22cd53,0xbc2eeac3,0xbbdf51d9,0xbb966506,0xbb11b477,0x3b77cd13,0xb95a9140,0xb9bb72a5,0x3ac37040, -0x3ba60520,0x3bb617bd,0x3b46da95,0x3b4465d0,0x3b475a3e,0x3b4623ce,0x3b9617f6,0x3a059d6c,0xbc0846bb,0xbbc723aa,0xbbab93df,0xbc2d6de5,0xbb8ab7a8,0xbb8f3d18,0xbbd53945,0xbb612f1c,0xbb979efe,0xbc128de2,0xbc6967c0,0xbc8f77a1,0xbcf6d9db,0xbcfde686,0xbd01d9af,0xbce4667e,0xbccb8070, -0xbca8c585,0xbc888d3a,0xbc7403dc,0xbc5b79db,0xbc59d941,0xbc15ebf0,0xbba5e1d0,0x3aae70f4,0x3b5532ff,0x3b9ab4a4,0x3b3cdf47,0x3b52a02c,0x3af41300,0xb996863b,0xba4d7ec5,0xb9eb4080,0x3bbdd080,0x3b74544c,0x3af7418b,0x3ac357c8,0xba9dcf8d,0xb95e89db,0x3b8ccbc8,0x3ab42c0a,0x3a022081, -0x3b152a55,0xbb01fc46,0xbb396b30,0xbb848ec9,0xbbbb7b6a,0xbc2bdbcb,0xbc5f0887,0xbc90543c,0xbcb1f0a4,0xbcbd9f82,0xbcbed131,0xbcba72c5,0xbcc700e8,0xbcaba712,0xbc9c14b0,0xbc989c47,0xbc31466d,0xbb90aa88,0x3b99ec08,0x3b8abd1c,0x3b835c96,0x3b96b309,0x3b52972b,0x3af3c103,0x3a6cd9fb, -0xb94f3cf5,0xb9b30c3d,0x3ac1d0a8,0xb98aa722,0xba853af1,0xbb36df0b,0xbbcf9a86,0xbc0bfc2e,0xbc09beab,0xbbd46cc3,0xbb96c09e,0xbb8265e5,0xbb57583a,0xbbeecb3a,0xbbe9651b,0xbc216a6d,0xbc02639d,0xbbdaba85,0xbc1d9c45,0xbc535b35,0xbc8c6053,0xbc8f823a,0xbc97ecde,0xbca46a94,0xbc976a3c, -0xbc8f8df0,0xbc8a905a,0xbc2632cc,0xbbc53d0e,0x39906d85,0xba76a25d,0x3ab847d4,0x3a8a1fe1,0xb88e0f39,0xba237f2d,0xbab77a2b,0xbafb6e8c,0xbb6791bd,0xbbbaa29c,0xbba66b55,0xbba331a9,0xbb77d83d,0xbb9772e8,0xbbc091af,0xbc1388e0,0xbc0604b7,0xbc06e990,0xbbfcb744,0xbbfc1a2b,0xbc0f6897, -0xbc0ea454,0xbc41876b,0xbc43aa48,0xbc5f57c7,0xbc6935da,0xbc437b05,0xbc3ddc81,0xbc149b30,0xbc11bed9,0xbbf13792,0xbbe8e7c2,0xbbd51d63,0xbbdd7b36,0xbbf34b6e,0xbc05b426,0xbc068e52,0xbbf9e51f,0xbba67a31,0xbbcab081,0xbbb70931,0xbbae8b7a,0xbb9fdf25,0xbb9a4132,0xbb689a8e,0xbae86a15, -0xbb616c68,0xbb7f0fde,0xbbb5ccad,0xbbd26daf,0xbbc838e1,0xbbb88c99,0xbbd2f29a,0xbbcc2150,0xbbf1224d,0xbc09d40e,0xbbea8336,0xbbeccbb9,0xbbea73c2,0xbbd50444,0xbbb8485d,0xbbb9f974,0xbbcc7bc9,0xbbf11108,0xbc01e1c7,0xbbfcebc3,0xbbfd00e9,0xbbfb6f03,0xbbf2e60d,0xbbe1df10,0xbbd8969a, -0xbbccb62e,0xbb898793,0xbb996115,0xbba8688a,0xbba75ce8,0xbba66ea8,0xbbaeb3b4,0xbbb1c82d,0xbbb845e1,0xbbc3c2e7,0xbbcad813,0xbbd82af1,0xbbcaf316,0xbbc60eec,0xbbc2c558,0xbbc967e9,0xbbd97793,0xbbe3b3ad,0xbbdd6de9,0xbbe647aa,0xbbe9b4fb,0xbc2da185,0xbb4ad6a4,0xbb21872d,0xbb022618, -0xbb05e43d,0xbafc6540,0xbb4149fe,0xbab7ffd4,0xba97f5bc,0xbb0a30fe,0xbaa8f116,0xba75246a,0xba21d2a3,0xba9b6bbc,0xba9fd866,0xb9eb703e,0xbb01a7c2,0xbb27d2bc,0xbb3a4270,0xbb220536,0xbb07dfaf,0xbaca5a86,0xbaf5ecdd,0xbb0c62da,0xbb28e145,0xbb543c89,0xbb53fbf3,0xbb3e7f8d,0xbaf75205, -0xbac3bc6a,0xbacd2eb2,0xbb062438,0xbb114baa,0xbaf22525,0xbb2f2b66,0xbb3825ec,0xbb2a635d,0xbb2d8544,0xbb168f75,0x3a4b97ea,0x3aa4ecaf,0x38dd6157,0xbb82cdff,0xb8b83a98,0x3a15555c,0xbabadde9,0x3b19e382,0x3b129e4d,0x3af1bd1a,0x38dbd11b,0xba536783,0x3ac89f27,0xbb4cea08,0xbb9865f8, -0xbba5b7ba,0xbb880a4a,0xbb52462c,0xbac2b3f5,0xbad97cbe,0xbb2acae3,0xbba52971,0xbbc0c19a,0xbbc30386,0xbbce12c5,0xba6d9e24,0xb8171972,0xbaf51f0a,0xbb342314,0xbb4e199f,0xbb001d5f,0xbbb16a0a,0xbbc746d7,0xbb8f4727,0xbb882d81,0xbb942826,0xb9f20f08,0x3a33863d,0xb93d068a,0xbbdb01e3, -0x3b1c84a3,0x3b8c36e1,0xba93a01b,0x3b905bba,0x3bb99dc8,0x3bf1f6e2,0x3b16198c,0x3aec07ce,0x3bc59c06,0xbb479b92,0xbbb6ab15,0xbbeb136c,0xbba06b08,0xbb3bf2b1,0xb94c27f1,0xba8c963b,0xbb55602d,0xbbe068ff,0xbc21bd54,0xbc1b66b4,0xbc0a58bb,0xb9c4c262,0x3b1bfddb,0x39116c20,0xbb13fdc1, -0xbb8f7f72,0xbb0d56ac,0xbbf4d8e6,0xbbfe6eab,0xbbbf5531,0xbbcc1f4f,0xbb06a3b4,0x3beb2695,0x3bff07f3,0x3bb12527,0xbbd7bf36,0x3bab0510,0x3c0565b4,0x3ad2ee55,0x3c581390,0x3c647c64,0x3c329cbb,0x3c0cd57f,0x3bb45b5b,0x3c33de47,0xbb883a5e,0xbbfa76d1,0xbbfe9619,0xbbe9629d,0xbb6e68a1, -0x3a4edd67,0x3996dc65,0xbb4240ea,0xbc1998c6,0xbc74bff7,0xbc7d96cd,0xbc4f82b0,0x3af15903,0x3bbcd5ff,0x38b2537b,0xba9935c3,0xbb9d9d80,0xbaa03f82,0xbc365638,0xbc48e919,0xbbd4117e,0xbbf4d485,0xbc0b0573,0xba0371fe,0x3aabeda5,0xbabdb607,0xbc35cadf,0x3c334dfe,0x3c6acfeb,0x3b5cbd9f, -0x3c4a03e5,0x3c69b9b7,0x3c80957c,0x3c87f71e,0x3c720eea,0x3c52645d,0xbab964ce,0xbbe4934a,0xbbfe8985,0xbbaf0d14,0xbb1a9f1e,0x3b47f070,0x39dffcc5,0xbb6600fe,0xbc451c86,0xbc8b4904,0xbc8b1431,0xbc55a9c9,0x3b5557ec,0x3c34e6f5,0x3bc99f80,0xbaf34cb9,0xbbc8359e,0xbb2e37e2,0xbc4b0158, -0xbc3eddad,0xbbe48c07,0xbc1a7f55,0x3bea56a1,0x3caf9610,0x3d357a11,0x3d2d65c9,0x3c836aff,0xbcbc1f69,0xbcfc9b4c,0xbc06ca19,0xbb59fc26,0x3c175529,0x3cd35403,0x3bff2b8f,0xba856ed9,0xbaebafd4,0x3b64669d,0x3bf2fa5a,0x3b033ef1,0x3b9fdf25,0x3be14ef3,0x3c0489f5,0x3b9c70ef,0x3b8270df, -0x3bb19c00,0x3c0476fc,0x3a6fc6a4,0xbc69776d,0xbcca0184,0xbce0385b,0xbcb01d65,0x3ad889fb,0x3c048cbe,0xbb865e40,0x3ae58b0f,0xbc1fbf27,0xbce1c0bd,0xbc56656d,0xbd07655f,0xbd155f66,0xbd6fb91b,0xbd310b6c,0xbbb55e53,0x3c973321,0x3cc6e915,0x3c113992,0x3ba89097,0x3b1bd84a,0x3bccdbb6, -0x3c54d8ca,0x3c70f66b,0x3c2b5a38,0x3b82ae55,0x3a91495a,0x3ba07af5,0x3bc93519,0x3b9f602c,0x3ab4c806,0x3a0c63f2,0xb992dedc,0xbb1ad646,0x3aa7de7e,0x39a2dc78,0xbb2082ed,0xbabad739,0x3a33b851,0x3cb669a4,0xbc530ed5,0xbc85b1e0,0x3a63c41e,0x389e6048,0x3c0e8fce,0x3cfcacae,0xbbe4966d, -0x3c3c8a92,0x3ccd2120,0x3c5b8ebb,0x3b2e5e8b,0xbb9a3b40,0x3b50869b,0x3c1a0734,0x3c8d40a1,0x3c22061f,0x3c0f9311,0x39c54151,0x3bc50247,0x3bc5e461,0x3ba3b76d,0x3bfd5e47,0x3b8bea7e,0x3b650d8b,0x3ae4da38,0xbab62753,0xba970482,0xbadb53e8,0xba9e02a8,0xbaccce24,0x3c244f88,0x3c6420bc, -0x3c4fbaec,0x3c08ad81,0x3ba0b476,0xbafa6868,0xbc2cd4d0,0xbc11b93e,0xbb39df2d,0x3c863567,0x3ca4e844,0x3b38877e,0x3bf747e8,0x3bb6176b,0x3c99e732,0x3c90ad45,0x3c4762af,0x3b801fc6,0xbc077086,0xbbb45eb7,0x3c85a578,0x3c2b3759,0x3c04e0c2,0x3ad1be21,0xb954e1e3,0xba92a634,0xb97b348a, -0x3b0a0976,0x3a87202a,0xbb5eb5e4,0xbb2256a4,0xbb7fd395,0xbb848c57,0xbb4dced1,0xbab8a061,0xba5ccafc,0x3c1807bb,0x3c48b016,0x3c8fce29,0x3c654730,0x3c35a5fd,0xbc06bd78,0x3beb3a87,0x3c4d2991,0xbb102b69,0x3ca40e17,0x3c658cd5,0xbc64a275,0xbaace6d6,0xbc6dc7aa,0xbcaa65aa,0xbcc17dfe, -0xbc82b2d8,0xbb1ef9f1,0x3b2e35f2,0x3b362e82,0xbb769520,0xbb951fec,0xbb96117c,0xbaa2b3f4,0xbb80cb40,0xbbacfba4,0xbb2b16e7,0xbbf3043f,0xbc13c788,0xbbda4060,0xbb105253,0xba26e165,0xbb8f2acf,0xba9cd58e,0x3ad01818,0x3ba09909,0x3ba9e2df,0x3b3bd7bd,0x3bec5f5d,0x3c11b2ef,0x3c6f7103, -0x3c9c406c,0x3cd7b99e,0x3cba9fb3,0x3a8d8387,0xbaf8a483,0xbb2cb1b9,0x3c16e702,0xbba47568,0x3c9b0702,0x3caaefa4,0x3c6be2a6,0x3c2c67fa,0x3c1401bc,0x3ba474b1,0x3b9ba522,0x3bac447c,0x3af1361d,0x3abb58d6,0xb9e0c25b,0xbbce8455,0xbc1e3ba0,0xbbe0da05,0xbbbe1495,0xbb3c08a8,0x3ab25b6b, -0x3a2605a1,0x3a80f396,0x3b0a0c76,0x3ba744ee,0x3bcd3c8c,0x3b93fc83,0x3b6bb39c,0x3b081045,0x3a755ed5,0xbafb9115,0xbb903be8,0xbc1f88f1,0xba5eb80d,0x3bc41076,0x3c9c8656,0x3c4d0a0b,0x3c082208,0x3bf4597f,0x3c43066b,0xbc04a6a2,0xbc28caf5,0xbc96de3f,0xbcb674bf,0xbce54b3d,0xbce1c70e, -0xbcd6c0a1,0xbca25be4,0xbca7eac9,0xbc93f739,0xbc5c1ad9,0xbc3f6355,0xbc1d66bc,0xbc1b62ae,0xbc2eb4da,0xbc128926,0xbbb5608d,0x3b148774,0x3bb53598,0x3b670716,0x3b8ae7b7,0x3b84af54,0x3bab1a1d,0x3a491e81,0x3a6b05b4,0x3b5ae9b5,0x3b8ea32a,0x3bab0b78,0x3b90cace,0x3b81e8fc,0x3b431660, -0x3af9c145,0xb9c7081f,0xbae6e226,0xbb76d959,0xbbb28b51,0xbb08a361,0xbaca140b,0xbbe4b8f4,0xbc4a2c77,0xbc8737cd,0xbc9cff17,0xbcb45ab2,0xbca99781,0xbcad4e0a,0xbca46cb0,0xbcaf484f,0xbc8f878a,0xbc8c0147,0xbc6cbd4f,0xbc3fc3ca,0xbbf871a7,0xbb2bac1e,0x3a6ee92a,0x3b469dcf,0x3bae8c4c, -0x3bb6af39,0x3b90f4c0,0x3b9f871f,0x3b19c8ff,0x3ae5b863,0x3adbdb8d,0x3b2277d7,0x3b499cb0,0x3b32cb54,0x3a9b1a4a,0x3a491176,0x39a4a4b2,0x3ade577d,0x3aad98fa,0xb8091aa0,0xb97680d2,0xbb3a2bef,0xbb63ddd7,0xbba07158,0xbbaa0104,0xbbb3cca4,0xbbffeb12,0xbc421b4a,0xbc8ccb6b,0xbc8ad819, -0xbc84b3d6,0xbc944c05,0xbc704447,0xbc7ae3de,0xbc5bc658,0xbc28ff56,0xbbf01f1a,0xbb900745,0xbb584f7d,0xbabb80fc,0x3b00b4f9,0x3ad4a878,0x3aab1c20,0x3aa81caa,0x3a4c1c73,0xb9e55b17,0xbb1db7e6,0xbac5c1b5,0xbaaeff37,0xb8219257,0xb95344bd,0xb95767fb,0xba6587ea,0xba9b631e,0xbaabbe63, -0xba63c5e8,0xbb1883db,0xbbb3f9b9,0xbb9d7d71,0xbbe88d49,0xbbe961aa,0xbc0aae5a,0xbbf7692c,0xbbb278a3,0xbb69f06f,0xbb3abc52,0xbb8d7caa,0xbb848d36,0xbba9e9b0,0xbba3a646,0xbbd4a9b2,0xbbdc05fa,0xbbdfda56,0xbbf6041c,0xbbbf0371,0xbbcb6a8e,0xbba02722,0xbb9d5eb6,0xbb9c77ba,0xbb95ad14, -0xbb9338e7,0xbb659aed,0xbb078fc8,0xbb5ee6eb,0xbb818222,0xbbb17b91,0xbbd40ade,0xbbe85401,0xbbffc77c,0xbbeda1b5,0xbbdfb08b,0xbbe07a10,0xbbcd4f74,0xbb9fd14b,0xbb9a523b,0xbbb38715,0xbbb9de2c,0xbbc5be0c,0xbb9dee61,0xbbd5cba3,0xbc0aef67,0xbc13fc72,0xbc0e6b30,0xbc0dc695,0xbc0f9e53, -0xbc1100d6,0xbc0e032d,0xbbdf89ac,0xbbb879b5,0xbbdc521b,0xbbbeb4fa,0xbba02f26,0xbb7ed814,0xbb84f04c,0xbb872c12,0xbb8625fb,0xbb87c04a,0xbb8fd6b4,0xbb945151,0xbb9f3ead,0xbb964cfa,0xbb92be0d,0xbb8d94a5,0xbb8b17fe,0xbb904323,0xbb93427b,0xbb923f37,0xbb936710,0xbb99e2f4,0xbc1083ff, -0xbb1c96ca,0xbaf81ba9,0xbae03023,0xbac806c4,0xbac8d1fa,0xbb24cd51,0xba8688a0,0xba6147a3,0xbab1fe4d,0xba96cd7c,0xba7c629f,0xb98a1a80,0xba9b2624,0xbaacf2ac,0xba0468c5,0xbad0f65f,0xbb0967e4,0xbb3b9de6,0xbb1b6ed1,0xbb0250ab,0xbabf108e,0xbaf1879f,0xbb0555ec,0xbb1791e1,0xbb314c8d, -0xbb22d4cf,0xbaf0a6e5,0xba83708e,0xba3ac4d3,0xba5c2db1,0xbab582f2,0xbae16a20,0xbaf4004b,0xbb04756d,0xbae778f5,0xbab9767c,0xbae5745a,0xbad9ed5d,0xb88b67e4,0x3a0147a2,0x39c1546e,0xbb521a42,0xb907485c,0x394f503a,0xb96fb38f,0x3b0930e8,0x3b1813ae,0x3b45298e,0xb9ae69d3,0xbaabf3b6, -0x3aa3ae91,0xbb2ef0df,0xbb7c609f,0xbbab23c5,0xbb845b51,0xbb524245,0xbae0d2c3,0xbb375081,0xbb726981,0xbba5fb38,0xbba09bf6,0xbb8381ca,0xbb5c29b1,0x3abfd8bb,0x3b12388a,0x37cb7fd7,0xba9a67d2,0xbb1bb499,0xbb42c287,0xbb918511,0xbba84909,0xbb7e6785,0xbb5a4f71,0xbb47534e,0xbaf6a94e, -0x3a1043fd,0x39ae805f,0xbbb0436a,0x3acff2b1,0x3b64f25a,0x3ada358a,0x3b7c618c,0x3ba1e062,0x3c06f8ba,0x3abd221a,0x3a140454,0x3ba02c8b,0xbb29434d,0xbb99efae,0xbc071e64,0xbbb0ff31,0xbb84cc7a,0xbacfaa67,0xbb80ca70,0xbbb599d4,0xbbf290d7,0xbc11227d,0xbbe3c491,0xbb801c1a,0x3b630e96, -0x3ba83fb6,0x3b257e2b,0xb9ab0d44,0xbb5cd69e,0xbb91775d,0xbbc8cec7,0xbb9d1cec,0xbb246883,0xbb777a55,0xba629115,0x3b4e1638,0x3bae9704,0x3ba9f2eb,0xbbc6b2c0,0x3b7a4a07,0x3bba6f9d,0x3b5554c7,0x3c51530d,0x3c67529b,0x3c6c5f46,0x3bb569d8,0x3b07444a,0x3c2ac460,0xbb90dcc1,0xbbd112bc, -0xbc12d287,0xbbebfd1d,0xbb96e22d,0xba5ecb53,0xbb9a93b8,0xbbf74b8c,0xbc306d41,0xbc519319,0xbc2601a4,0xbbb30805,0x3bff76d1,0x3c31ae92,0x3b876fdd,0x3af8a590,0xbb5c26bf,0xbbb764b8,0xbc1881a8,0xbc28b082,0xbbc85abc,0xbbac5396,0xbbaadcf0,0xbb5dfec3,0x3ab7b1c8,0xb9ae7ec6,0xbc497563, -0x3bdf8da5,0x3c56ee9a,0x3bd15bf4,0x3c54830b,0x3c7fe3b7,0x3c89bf61,0x3c2cb75a,0x3c1bcdba,0x3c4ca7e8,0xbb44b66d,0xbbd7d55c,0xbc0d6da8,0xbbcefaf7,0xbb757474,0xb9aae4d7,0xbbbefddf,0xbc185340,0xbc62f20a,0xbc7f9915,0xbc458b5b,0xbbac8257,0x3c30c416,0x3c7bcadf,0x3c0d5772,0x3ac0b2e1, -0xbba4b1a9,0xbbfb812e,0xbc2d8c8a,0xbba63cb4,0xba05893d,0xbb8ab51a,0x3af42b02,0x3c1af496,0x3ceebf70,0x3d09e77a,0x3ccdee56,0xbc7262e9,0xbcdd20af,0xbc6ac406,0xbb903956,0x3bbe0acc,0x3c14e20b,0x3c2f6188,0x3bae4505,0xbc02fd2d,0x3bbcccea,0x3c04ec98,0xbb345e3d,0xb97813b2,0xb907cdad, -0x3afed002,0x3a694f8e,0x3b0c6116,0x3b934885,0x3b786584,0xbb2b3ed3,0xbc57730b,0xbcccc691,0xbcbb60a3,0x39ab6079,0x3beaf247,0x3c2b6e5b,0x3c4375e2,0xbba04507,0xbcad2f2e,0xbcce3c51,0xbc71359a,0xbccf82bf,0xbce17373,0xbd2a11fa,0xbd0f61b8,0xbd0038e0,0x3c4f619d,0x3ce3eecf,0x3c6ed590, -0x3b8dd3be,0xbb2872d3,0xba23ce39,0x3bc54314,0x3c24304a,0x3c2f5a4c,0x3ba7b235,0x3ac25fa3,0x3b637684,0x3aa95821,0xb98ca337,0xb8804bcb,0xbaac62df,0xbb2a27b3,0xbbac790f,0xbbd6e705,0xbbcf740c,0xbbaff6de,0x3b6918a6,0x3b940301,0x3c3d3287,0xbc232158,0xbc3e2c44,0x3c00e5f2,0x3bafb550, -0x3ca7b8d0,0x3d4628e1,0xb9a5c740,0x3b18fff7,0x3d0dc304,0x3ba29d30,0xbbc53df7,0xbc7a2b67,0xbb8067ac,0x3ba7f2de,0x3c574c65,0x3c08072c,0x3bdd0a2b,0xbb2ce453,0x3ab09af4,0x3b105e82,0x3b7a6b2e,0x3bf09fc1,0x3bb9dff2,0x3b548982,0x3a982d59,0x3a925b8b,0x3a8947a9,0xbb03d85d,0xba7cdccf, -0x3a9d9796,0x3bc343f6,0x3c1cf9cf,0x3c089bec,0x3bdd2fb4,0x3bb2d858,0x38f0bdfb,0xbbbba17f,0x39aa3754,0x3cf18a87,0xbb8ffd72,0xbc498b42,0xbc584074,0xbc4073f1,0xbb1960aa,0x3c831d33,0x3b5b205d,0xbb40f54f,0xba9db676,0xbc784d0a,0xbc2e3819,0x3c10f16f,0x3c116a18,0x3bfe84a4,0xb98d19f5, -0xbad206aa,0xbb68ff93,0xbab72aa1,0x3a385c93,0x3ad6368a,0xbb4f5c06,0xbabde80a,0xbb1c858a,0xbb4d96ba,0xbb8c19ed,0xbb4dee03,0x3a9fb774,0x3bc16f23,0x3c1a883d,0x3c720c75,0x3c68b94c,0x3c471dd2,0x39c9da0d,0x3c29ebf4,0x3c82d3f4,0x3ccf700f,0xbb94bfd0,0xbc9a8bfd,0xbcf1ed45,0xbc5e28f3, -0xbc4591ac,0xbcb49b47,0xbc197eaa,0xbb6423d8,0xbb03eb99,0x3bea3943,0x3bfc6b35,0x38adaefc,0xbb089317,0xbba71f6e,0xbb0abdcb,0xbba83039,0xbbcf1f44,0xbb114340,0xbc070284,0xbc229e67,0xbbfc4d3e,0xbbd7e2ea,0xbbc7a7a3,0xbbfbd757,0xbba58991,0xbb82e552,0xba754625,0xba302f28,0x3b528ace, -0x3c3b1d68,0x3c8de571,0x3ca45f12,0x3c917e4b,0x3cb2d3c1,0x3c66e5a2,0xb9e69772,0xbbb1d151,0xbb95d77a,0x398b3c92,0xbb8313ec,0x3ce2afd6,0x3ca0fff7,0x3c6a5730,0x3c1e8b5f,0x3c27998e,0x3ba934ec,0x3b665ed6,0x3b648e71,0x3b11c142,0x3b875639,0x3b92b7ab,0x3aa6bae6,0xbb923fed,0xbbf65b49, -0xbbbbb00f,0xbb824a65,0xbb556d67,0x3a0ddb59,0x3b130297,0x3b3926bc,0x3b8da2cd,0x3baabcb2,0x3b5cd53a,0x3b3e8d70,0xb9160667,0xbb2298c8,0xbbf8756e,0xbb988d40,0xbb163019,0x3c174225,0x3c7c2a7a,0x3ceccd8e,0x3ca870e6,0x3caad46a,0x3ce699b4,0x3ce68514,0xbc303408,0xbc480815,0xbc9defab, -0xbcb4b649,0xbcb8d5cf,0xbc950a89,0xbc750d0e,0xbc44f917,0xbc649e1e,0xbc5c4608,0xbc168c4c,0xbc1539ec,0xbbf15c71,0xbbf6718a,0xbc208fcd,0xbc1b3412,0xbc143f70,0xbb0ab82b,0x3afccad7,0x3b81b45d,0x3b92c602,0x3bafd07a,0x3bd0f1ca,0x3b8c79dd,0x3b75129c,0x3b3ee8d6,0x3bb9ed9f,0x3be9377d, -0x3bf4bb1e,0x3bbca167,0x3b922b8c,0x3b408dd7,0x3a8fa629,0xbab5f9f9,0xbbc54257,0xbc076381,0xbb965054,0xbb769081,0xbc2ec588,0xbc7f3dbc,0xbca660e8,0xbc99d628,0xbca68fa2,0xbc8e86fe,0xbc8dad94,0xbc80d8f9,0xbc816820,0xbc4f8cba,0xbc44ba0a,0xbc085d33,0xbc13906a,0xbc0187a3,0xbbf08926, -0xbb1859db,0x3ad39b84,0x3bc990dd,0x3bc08758,0x3bc70e86,0x3bd6d813,0x3bb755c0,0x3ba42aeb,0x3b928b02,0x3bbb94b3,0x3bc5e16d,0x3bf579fe,0x3be26eab,0x3bde6cd3,0x3bc670c3,0x3b38bfdd,0xb98c6fa8,0xbafd9875,0xbb26b8f8,0xbb1850ac,0xbb582fa8,0xbb9b9d09,0xbbcb9e5c,0xbc0e5e1f,0xbc2dbed7, -0xbc59daf8,0xbc8b36eb,0xbc83e4c5,0xbc62cede,0xbc77b514,0xbc23f2cd,0xbc22f526,0xbbed156e,0xbbee7961,0xbbc94a1d,0xbbc5d497,0xbb3cdc60,0x38dce2fd,0x3b69c901,0x3b505c47,0x3b601538,0x3b7c6c30,0x3b6fb4c4,0x3b75277d,0x3b537bec,0x3b5c7389,0x3b5fb5ed,0x3b5df390,0x3b26bc8a,0x3b149db0, -0x3b1dbb86,0x3af217bb,0x3ad725d0,0x3a2cb1c0,0xbaa29bb7,0xbab3e42a,0xb993d7e4,0xbb23bdd0,0xbb35f46a,0xbb5b6ad5,0xbb24d8e8,0xbade2e2a,0xba5b7921,0xba02aaf6,0xbae705a7,0xbad4864e,0xbb49ffd2,0xbb585808,0xbb8b2c64,0xbb681c25,0xbb27234a,0xbb1e0cd5,0xbaaf2341,0xbb2400b4,0xba283a9c, -0xba870971,0xbab5a372,0xbafb8916,0xbb10ca4f,0xbb20e4bf,0xbb28906f,0xbb4725c0,0xbb7920df,0xbb7e7ae7,0xbb8f435d,0xbb9839b5,0xbbb5be51,0xbba099f1,0xbb9bc5c1,0xbb72a2b6,0xbb1bcce6,0xba2674f9,0xb9bb6411,0xba6eb4f7,0xbaae934c,0xbb15327c,0xbad8afb0,0xbb4a853b,0xbb9b37da,0xbb9c5955, -0xbb8f5eeb,0xbb863f13,0xbb7b5ad4,0xbb68f811,0xbb5ce844,0xbafb6009,0xbab14370,0xbb332e4b,0xbacf99bd,0xba244cd0,0x391181d7,0xb93ad15e,0xb914e724,0xb879f2db,0xb7d86cbe,0xb89d8655,0xb900151e,0xb919f209,0xb9281745,0xb9b271fb,0xb9daecf9,0xb9fbcd3d,0xba0e6bb6,0xb975accc,0xb96c8e0d, -0xb95ebf4b,0xb9dba9e0,0xba7ed390,0xbab68f9c,0xba5b344b,0xba543a00,0xba1311c8,0xba20c832,0xbaa48d20,0xb9bf8e27,0xb9b01418,0xb9cacb28,0xba3c21f0,0xba36b4ce,0x38d76fcd,0xba4092f5,0xba75a243,0xba0a2935,0xba74d05c,0xbaa5e040,0xbb25ff1c,0xbb0144bf,0xbadfdab2,0xbaae0356,0xbace8b2f, -0xbad433ea,0xbae09e3b,0xbaebb89d,0xbabb7002,0xba0820a5,0xb91e12bd,0x378d83ee,0xb9312ad0,0xba206f13,0xba8170d2,0xbabf5bdd,0xbab3aa24,0xba6d3b96,0xb9d7349f,0xba2f2bda,0xb9670e6a,0x38e95733,0x3a25dc3c,0x3a86316b,0xba85406e,0x3a393231,0x3a2999db,0x3a94e392,0x3abcc8e1,0x3b019773, -0x3b501a23,0x3917cdc5,0xba31d3bf,0x3a3d0e4b,0xbaa234ea,0xbb0e6901,0xbba3590d,0xbb6f38c0,0xbb4ea9a7,0xbb0f46f5,0xbb599d69,0xbb7ff582,0xbb8caded,0xbb5e7eaf,0xbaf206ef,0x387e8ac1,0x3b1d7426,0x3b2ec631,0x3a70a725,0x39b24dda,0xba8e3e49,0xbb4d602c,0xbb845417,0xbb969b22,0xbb4c26d4, -0xbae8abd7,0x3934be25,0xb9fc959a,0x3afe4d96,0x3b0ed2c4,0xbaa82164,0x3b13e531,0x3b5c59cd,0x3b84075c,0x3b533b98,0x3b57119b,0x3bf4f50f,0x3acd032f,0x3a78583b,0x3b36724e,0xba7fb6ef,0xbb306c41,0xbc095be3,0xbbbdb522,0xbbae4e2a,0xbb7af7fd,0xbbc242ec,0xbbd5654b,0xbbdcfb09,0xbbd40c87, -0xbb71c8e7,0x3acd0fc2,0x3bad42a6,0x3bba6d69,0x3b4ee087,0x3ab3594e,0xbad999e3,0xbba43669,0xbbb769e0,0xbb61334e,0xb972115a,0xba017235,0x3b0c635e,0x3b15e172,0x3b9acaad,0x3bb1c2bd,0xbae89821,0x3b9bc30a,0x3bac6807,0x3bbda40d,0x3c2b1505,0x3c4b2b29,0x3c80a08f,0x3b9ceeb2,0x3b06b297, -0x3c013e9e,0xbaf0dba3,0xbb55d185,0xbc272dc8,0xbbf6076d,0xbbce6fc3,0xbb854818,0xbc095dfb,0xbc22c435,0xbc26a471,0xbc15b1d3,0xbb9257bc,0x3b76a4dd,0x3c195917,0x3c2b74bb,0x3b95aed3,0x3b8db6a1,0xba9cb572,0xbbee316c,0xbc1be682,0xbc26582a,0xbba49737,0xbad86e5a,0x3b07f477,0xb9400ce9, -0x3b923261,0x3b7ab242,0xbbcc48a5,0x3bb50b50,0x3c3c9c1e,0x3c21a542,0x3c58743f,0x3c846e47,0x3c94181d,0x3bf7e22a,0x3bde5ece,0x3c2d9a41,0xbace2431,0xbb8ab3ec,0xbc264f26,0xbc052621,0xbbf40f1e,0xbbccddcd,0xbc38d19c,0xbc4e8356,0xbc57c01a,0xbc3fbe90,0xbbb51808,0x3baad5f2,0x3c7310cc, -0x3c6c1c7a,0x3bfba569,0x3b7f513d,0xbb109f97,0xbc11279f,0xbc2615bc,0xbb208394,0x3b76aed3,0x3b2dd349,0xbbdcbb47,0xbb7fda36,0x3c0d568b,0x3c86cc62,0x3cced4ca,0xbb869014,0xbc89ec6a,0xbc7f88ac,0xbc0401b6,0x3ad1600c,0xb9931c6a,0x3c761f8b,0x3c51b7c0,0xbc1d0772,0x3bcb1d6e,0x3bd49292, -0xba8b5d29,0xbaba14cc,0xbb27c14d,0xb89366dd,0x3b294399,0x3b94153f,0x3b8fd835,0x3b3ddb6f,0xbb6a0a7d,0xbc7ea78a,0xbcc65574,0xbc899fdf,0x3c82ae98,0x3c22593f,0x3c2d76a3,0x3c802fd7,0xbc3bccc4,0xbce45c9d,0xbcd33d1f,0xbc933aff,0xbc2c47d2,0xbc3e496f,0xbca9f9fc,0xbcc5f0e6,0xbd0e575a, -0x3a68a8a3,0x3c90ed0b,0x3c863fa6,0x3bcbb41e,0xbb0a8334,0xbbd94230,0x38b837cf,0x3bbd4629,0x3c05970c,0x3bb9212f,0x3acb9500,0x3b2d7baa,0xbb859dd5,0xbbd4ac27,0xbbbcf2ff,0xbba5217a,0xbba08b4c,0xbbb12f36,0xbc1c8501,0xbc056c23,0xbbd43493,0x3c47158f,0x3c3d0074,0x3b1276df,0xbbea50ee, -0xbbe72fdf,0x3c2879aa,0x3c72f9d9,0x3d00d6c0,0x3d439d83,0x3c09197f,0xbc1ac8ea,0x3cf6d14b,0xbb2c65d6,0xbc5f41b0,0xbc5fb691,0xbbb5dfdf,0x3b74c829,0x3b67141c,0x3b8a2ccb,0x3b82b328,0xbb5bd3a0,0xbb1cb4b0,0xbaa90558,0x3b5e8445,0x3b96dc86,0x3b98d551,0x3b895010,0x39cf338d,0x3b082ab3, -0x3a67758e,0xb9fd9a73,0x3ab46b9d,0x3ba4f9ce,0x3b683d26,0x3baf9d22,0x3b25ea97,0x3bab05f1,0x3bd63d81,0x3b8564dc,0xbaa750cb,0x3b80d4dd,0x3d1af74d,0xbc902842,0xbcfa9fd9,0xbc96b099,0xbcbd6dc9,0xbc2bbf96,0x3be3b123,0xbbe32406,0xbc4a8579,0xba020153,0xbc3efa24,0xbc0ac021,0xbb4d9938, -0x3b4892bb,0x3b7db91e,0x3990b585,0xbaec8418,0xbb76c574,0xbaa2180c,0xba487eec,0x3a9910a1,0xbb0bdb12,0xb9ae9dd5,0xba281498,0xba06d4e4,0xbb5976d0,0xbb19687f,0x3b42743b,0x3bae7418,0x3c139cb5,0x3c3d1257,0x3c1e8799,0x3c258555,0x3c5911e0,0x3c348e20,0x3c5ee63a,0x3d1776ff,0xbc994423, -0xbd115330,0xbcef310f,0xbca1e99e,0xbbbc007c,0xbc7e49e4,0x398b703a,0x3bb78f78,0x3b3d765b,0x3bd87d76,0x3bc436d2,0x3b3c6880,0x3922c142,0xbb842780,0xbb6cff89,0xbb517adc,0xbb5de5f0,0xbb36f836,0xbbc432bf,0xbbffc6db,0xbc0c3809,0xbc1cae5e,0xbc240fb8,0xbc002f60,0xbc01c293,0xbc02f678, -0xbbd0ae87,0xbb85cde7,0x3b8b9a93,0x3c4a9971,0x3c9c21d3,0x3caac237,0x3caadfb3,0x3c708efe,0x3be859b8,0x3b8d3f59,0x3b781d81,0x3bd607f1,0xbacb4749,0x3a810fb4,0x3c7e27a0,0x3b3f08dd,0x3ba18e4a,0x3b4c4546,0x3bee5d01,0x3bca1869,0x3b9308da,0x3aa4c0de,0x3ab80cc5,0x3b9654f4,0x3bb1f60a, -0x3be64f90,0x3a271aa4,0xbbc837c8,0xbbd8838f,0xbbe8d402,0xbbd2ad15,0xbaa9ab96,0x3b150267,0x3b8321b5,0x3b619302,0x3b8a44fc,0x3b9a3984,0x3b597cba,0xb9806bdb,0xbb1e8282,0xbb349235,0x3b488c54,0x3c2e2ae1,0x3c86de93,0x3c9c579c,0x3ce171cb,0x3ca6ac65,0x3cab6344,0x3ce691be,0x3cbb873e, -0xbb830c19,0xbc3b7528,0xbc4db0a4,0xbc5fff8e,0xbc4ff6c1,0xbbd0b18d,0xbb11ba80,0xbb473c97,0xbb926f3f,0xbbcb395e,0xbb9240d5,0xbbe3c767,0xbbde5044,0xbbf2cc12,0xbbe32306,0xbbf0fe6a,0xbc22289d,0xbbdf06c1,0xbb596941,0x3aa1e469,0x3b1fb482,0x3b8cd09a,0x3b9f6824,0x3ba00c77,0x3bbc0f50, -0x3b83ac54,0x3b9bb8a3,0x3bb9a706,0x3bf189c4,0x3bc85615,0x3ba54ef7,0x3b5405df,0x3ba18d9e,0x3ba54272,0x3a4b42aa,0xba0be3bf,0xbbaa768b,0xbbdbf5b6,0xbc39c534,0xbc70dd82,0xbca3f40a,0xbc80b022,0xbc8382d3,0xbc563758,0xbc46bc78,0xbc2b64d3,0xbc1ed607,0xbc1321be,0xbc0b8601,0xbbd84017, -0xbbd31efd,0xbbd9198a,0xbbf58a71,0xbb993170,0xbacc596f,0x3afbe065,0x3b267afc,0x3b90c53e,0x3ba20357,0x3bbc173f,0x3bae2797,0x3b9a4533,0x3bac074a,0x3ba78803,0x3bdef01a,0x3bea5c09,0x3bf25e86,0x3bc578bb,0x3ab7fda7,0xbb26738d,0xbb6faa96,0xbb824b76,0xbb7e4a5f,0xbb7ce037,0xbbcf2e28, -0xbc0f7230,0xbc4833fd,0xbc5ae4e9,0xbc6c60fd,0xbc82d51e,0xbc720ede,0xbc42e3fc,0xbc42f423,0xbbf20674,0xbbda1ad9,0xbb9c31d7,0xbba19f01,0xbb90b95c,0xbb860538,0xbacdef5d,0x39800a44,0x3af079a2,0x3b10a2bb,0x3b613bc4,0x3b997ad2,0x3b9af0b1,0x3bb7f244,0x3bcef257,0x3bbdd04c,0x3bbe81d8, -0x3ba24204,0x3b46a1b4,0x3ab261cb,0x3a6d2a02,0x39a58b80,0x396c1087,0xbabe6de1,0xbb3379b8,0x397cf67e,0x398b88d9,0xb97df7a3,0xb9f010c0,0xb8609779,0xb98328f2,0xba147049,0xbaa462eb,0xba4ee8e2,0xbacc3832,0xbab81088,0xbb24b037,0xbb3dc56b,0xbb42735e,0xbad01e8c,0xb9694eaf,0x3a2f06f6, -0x3aafd42a,0x3afed2cf,0x3b4f30b5,0x3b310634,0x3af485a2,0x3a87466e,0x3a1b5236,0xb9afa2da,0xbab20b24,0xbaba0278,0xbb0de197,0xbad9daba,0xba9c4ef4,0xb9f274be,0xba563024,0xba8ab1b5,0xbaa629d3,0xba4e4501,0xb8e082d9,0xbaa3fa52,0xba914e4f,0xba95cbf2,0xbab0ea1f,0xbae34b2e,0xbb487ef5, -0xbb5b9621,0xbb74582c,0xbb594353,0xbb3e945d,0xbb1f16ef,0xbaf32bd6,0xba9df223,0xba840b0c,0xba82b885,0xba965b76,0xba31f5b3,0xb9f99913,0xb9cc128a,0xb9aa722c,0xba01ba67,0xb9b9973d,0xb9619f2c,0xb89502d7,0x38df7df3,0x3971f9d0,0x39c28c78,0x392ad205,0xb9193bd8,0xba238fc0,0xba89a6a0, -0xbaa94fc5,0xba80908b,0xba5b9118,0xba73b76b,0xba9b6372,0xbaaec17a,0xba03acfb,0x398b4709,0x38c199fe,0x3971d2a0,0x390eb2f8,0xb9065c9f,0x3808fea9,0x370f441b,0x39d24cf7,0xb9940fd0,0xb9eaed56,0x3784277e,0xb9959a0a,0xb9df1d98,0xb9f1995e,0xb963aa9d,0xb9bec7c1,0xbae234de,0xbaa5cba5, -0xba9eb8b5,0xba8f0172,0xba98f1c8,0xba8f1831,0xba8f51d7,0xba4ee296,0xb9a34e52,0x3a3f4394,0x3a1310d6,0x3a0ec04a,0x39190751,0xb8c0df5c,0xb9b4cbf5,0xba51d625,0xba58540f,0xb9d9cc72,0x3984714f,0x3986126a,0x3a8172e1,0x395087d7,0x3aa48daa,0x3adef1f1,0x3a948695,0x3a924eb1,0x3a41f0d1, -0x3af6d9e0,0x39493b7c,0x3a49f7d7,0x3ace75dd,0x3a09e3cf,0x39a6778e,0x398bdca3,0x3a0c238e,0xb8c48f73,0xbb683a88,0xbb30d7fd,0xbb36c8ce,0xbb244131,0xbb535a6a,0xbb607aa9,0xbb585eac,0xbad3220d,0x39c5477c,0x3b579ce4,0x3b33b35e,0x3b12ace0,0x3a493ce9,0x3ab251cf,0x390009fc,0xbb33c16a, -0xbb72ef56,0xbb73e887,0xbad110be,0xb58829c8,0x3b631357,0x3ab55062,0x3b4f5107,0x3b4ce7a8,0x3b093570,0x3b127d10,0x3b20112a,0x3b98c794,0x3aefe319,0x3a214485,0x3b79772f,0x3ab46278,0x3adf31b3,0x3a80a9b3,0x3a8ae810,0xb8be0322,0xbbc8d8f0,0xbba09a75,0xbbb1b20d,0xbba91767,0xbbd032af, -0xbbc5bcb3,0xbbb57139,0xbb50c412,0x38be8749,0x3be01d4e,0x3bc7d3de,0x3bada563,0x3b108f55,0x3b0b089e,0xb9081ec9,0xbb7ce1e0,0xbb9d05c7,0xbb37ee95,0x3ac9fd9a,0x3b235e58,0x3b8a5b5f,0x3a9cefc4,0x3ba1c57d,0x3bc390af,0x3b482235,0x3ba577e6,0x3b87b276,0x3bf0f345,0x3bc08eea,0x3c042790, -0x3c38bb84,0x3b91638d,0x3b70db5a,0x3b9fd707,0x3b06a16b,0x3a947a98,0xbc08a339,0xbbd2cb12,0xbbe2871b,0xbbd89c7d,0xbc1bec3b,0xbc1f5005,0xbc1203b1,0xbb8d3a52,0x3ac30549,0x3c4c6996,0x3c14e768,0x3c0460ec,0x3b1d2c74,0x3bbaab42,0x3a82050c,0xbbeb75d4,0xbc16c4db,0xbc0f1ef5,0xbae76e3d, -0x3b11b8c1,0x3c20d359,0x3b6d61a3,0x3be08c65,0x3bc9a066,0x3a0c9084,0x3b8ef3ef,0x3c0dcd8e,0x3c44f9b6,0x3c476165,0x3c6a6e18,0x3c847f4b,0x3bd87e88,0x3bc86665,0x3c03b582,0x3ae7df9e,0xba07be50,0xbc1a84d6,0xbc01c8d2,0xbc1b54d0,0xbc235253,0xbc5716ff,0xbc4cd01b,0xbc38bef4,0xbbc777b4, -0x3b00f385,0x3c7cf619,0x3c8694f7,0x3c3f9cf5,0x3b95e819,0x3b957f4c,0x39c3bee6,0xbbccb2e7,0xbc0a3fc9,0xbad1b0ac,0x3bd72331,0x3c0d6053,0xbc8ba701,0xbc6a7925,0xbb9b2c7c,0x3b8430f9,0x3c99d433,0x3ba87b1b,0xbbd87305,0xbc842017,0xbc5e899a,0xbb53fcf8,0xbb1554d2,0x3c93477c,0x3c8b8b5d, -0xbc112971,0x3ba5a7c5,0x3b7494d1,0x3bb78beb,0x3b08e28c,0x39ba1844,0x3aaca88a,0x3bf82706,0x3c0726ec,0x3bc18a2c,0x3b0687ed,0xbbaa1ef1,0xbc9a5c1f,0xbcb22421,0xbc1ae1d4,0x3cc1ce10,0x3c38f802,0x3c2a69b4,0x3c570ce6,0xbc7bc2b5,0xbce67e5c,0xbcd1f90e,0xbcba1f61,0x3c0dbe61,0x3ba7efd2, -0xbbe3d099,0xbc984f4d,0xbcf9b028,0xbc3ecc83,0x3b5120f6,0x3c3e8d18,0x3c1291c2,0x3b1e1630,0xbc162b8e,0xbb93e038,0x3afb177e,0x3bbbd317,0x3b8b9ac0,0x3a4ae98c,0x39eda4c4,0xbbb43a2c,0xbbfdb914,0xbc16c9e0,0xbbb2336c,0xbbaadcf6,0xbbaf5348,0xbc1d4990,0xbbd4b6d5,0xba451b88,0x3c9be23f, -0x3c7ac854,0xba86a672,0xbbb8abf3,0xbb85f890,0x3c49a096,0x3cb6bd4e,0x3d07acaf,0x3cfbbedc,0x3c85d60f,0xbcaa11c5,0x3a79e5a6,0xbbb0b5eb,0xbc3479b6,0xbc46f4e4,0xbb8f7b34,0x3b401ddf,0xbb8d20f3,0x3972f613,0x3aa22dae,0xbaeb3943,0xbb7e5433,0xbb596a1a,0x3b12f48e,0x3a51d697,0x3b0746ff, -0x3b75a562,0xb8a893ac,0x3ab990e9,0xbae238bb,0x3ab35882,0x3b8cc6c3,0x3bc536b2,0x3b45d185,0x3b4e42e9,0xba2fe56a,0x3ba99735,0x3c04d4e9,0x3b9d2d04,0x3bf9a275,0x3bfb2b80,0x3c4ea3f2,0xbc92f3d3,0xbcdd391a,0xbc5d218a,0xbcd4f692,0xbcab98d9,0xbc4414b6,0xbc170efe,0xbc1980e0,0x3ad45a5f, -0xbb6a3647,0xbb7e45ab,0xbc2a0938,0xbb539326,0xba8281db,0x3a88ce26,0xba4bc8a1,0xbb10e45f,0xbaf9c33a,0xbac78612,0xb9a467f5,0xba9e5aa0,0xbab509c1,0xba9c3a77,0xbac9c824,0xbab92f5e,0x3a62a878,0x3b635c37,0x3bde9d1b,0x3c10b84c,0x3c04c6d3,0x3bbf0fdb,0x3c0a7efb,0x3c84d325,0x3c884d5f, -0x3c569c8c,0x3c342106,0xbca42381,0xbcf863ca,0xbc6955c6,0xbcb1e38b,0x3c13ab55,0x3b90d873,0x3bc8c32e,0x3c102a37,0x3c28314f,0x3ba31dea,0x3b4d99f0,0x3ba8636f,0x3ae4db39,0xbaf91ff5,0xbb8c7ef2,0xba9518b9,0xb9821413,0xbb1ea221,0xbb308475,0xbba017e0,0xbc1b424f,0xbc255df0,0xbc2e5222, -0xbc063100,0xbc0fe8bb,0xbc11a124,0xbbffde1d,0xbb58538e,0x3b87bc68,0x3c4de105,0x3c89feaa,0x3c8f4612,0x3c94e482,0x3bac05ec,0x3a683930,0x3bd5f77c,0x3c296cad,0x3c7bbb11,0x3b93d2f8,0x3c2d6222,0xbc433bd7,0xbc7c360c,0xbbef2240,0xbb2edae4,0x3a23c794,0x3bb8a0d8,0x3bb7a78b,0x3aff3394, -0x3b4119b0,0x3bb7f6c0,0x3b90a2c1,0x3becf0ba,0x3b15c07d,0xbb1db8f2,0xbbe403c6,0xbc193c90,0xbc009442,0xbb9d9083,0xba26a72c,0x3b2703c0,0x3b20431e,0x3b84e752,0x3b69e1b4,0x3b91a52e,0x3b80c931,0x3b52f28f,0x3bf85b6a,0x3c4dac75,0x3ca7ced1,0x3cb47ca0,0x3caf2505,0x3cbd3f9d,0x3ca1a896, -0x3c5b2ec0,0x3bf3928f,0xbb127c99,0x3bffcfec,0xbab900c0,0xbacab8e7,0xba113873,0x3b4228af,0x3bc2d9d2,0x3c0ee21a,0x3bbbcc9e,0x3ba1453c,0x3ad8083d,0x381ae5d5,0xbb706e88,0xbbb873f8,0xbbe3b9e6,0xbbc5dcb2,0xbbd0d0b9,0xbbfc0d36,0xbc134580,0xbbea4a18,0xbb729819,0xba54a515,0x3af7c406, -0x3b0fd96f,0x3b87c956,0x3baafc64,0x3b857189,0x3b4f5191,0x3b6f1f3f,0x3ba106cd,0x3b8ac2b7,0x3b8a856c,0x3ba7f961,0x3bf8d5f6,0x3c3714d5,0x3c3fc787,0x3c38c8c4,0xbb8393c2,0xbc0798cd,0xbc1733f3,0xbc278704,0xbc674668,0xbc2dcf97,0xbc2b900c,0xbc0500d3,0xbbe309d5,0xbbbed7db,0xbbad1309, -0xbbd1faa2,0xbbdf4432,0xbbe76625,0xbbca08b7,0xbbcb58f7,0xbbc69687,0xbbc01f99,0xbb965082,0xbb2db0f2,0xba70971b,0x3aef1bd9,0x3b475e2a,0x3b6a8b4a,0x3b386d24,0x3afb0288,0x3ae9f87d,0x3abae3e4,0x3b2c7cbb,0x3b7152bd,0x3b913df4,0x3b9428ce,0x3b1a296b,0x37b7e8af,0xb951b07f,0xbb4b5806, -0xbbadcbe1,0xbbbafc73,0xbc0bf71a,0xbc3b8040,0xbc79e2f3,0xbc7626b9,0xbc6d2acc,0xbc6cd25e,0xbc600095,0xbc372ebd,0xbc2c74ad,0xbbf07c71,0xbbd57d7a,0xbbb54e97,0xbb975dbe,0xbb8e9d93,0xbb77167e,0xbb1eb096,0xba89afee,0xbacf228d,0xb9db5a93,0x3ac28b34,0x3b6dfa85,0x3b55aa11,0x3b783768, -0x3b926fc3,0x3b924563,0x3b9ef670,0x3b88a3c4,0x3b333850,0x3a67f0ec,0xb978a02f,0xba956bbb,0xbac822e9,0xbb3196cb,0xbb692bbb,0xba3139fb,0xbac515cc,0xbaa6eb7e,0xba20549c,0x3a45a755,0xbaabde69,0xbb245794,0xbb923d3e,0xbb72dbe4,0xbb80adde,0xbb73d7f7,0xbb8e6577,0xbb96bcac,0xbb8c98dd, -0xbb4a53d3,0xbafb374d,0xba0ca3cb,0xb9cef72e,0x3abc2e6c,0x3aa3da88,0x3aaed4ea,0x3a622d8b,0x39f01ff2,0x3a5a93f5,0x3a5dcda8,0x3a1ac055,0x3a0879e3,0x397b1b1e,0x3a27161e,0x3accb548,0x3b2cd43b,0x3b55fc21,0x3b025475,0x3ac101f6,0x39d22814,0xb9c48508,0xbb65f5ca,0xbb73f49f,0xbb7e1f36, -0xbb903517,0xbb9716f5,0xbbcb2418,0xbbbbd711,0xbbb75c2d,0xbba3094b,0xbb999a50,0xbb88c8aa,0xbb6804f0,0xbb3793ac,0xbb275ec7,0xbb40bb4c,0xbb5064e9,0xbb0718b0,0xbb1298df,0xbb2033fc,0xbb230e94,0xbb198708,0xbb0c7225,0xbafef034,0xbaf26de7,0xbae38177,0xbac821ea,0xbab33ef7,0xbac17004, -0xbad45826,0xbb08ae9a,0xbb262deb,0xbb38588d,0xbb4473bf,0xbb3c569a,0xbb4cc900,0xbb5f2a7c,0xbb9f5b46,0x3912141c,0x3a7c88a2,0x3a20145d,0x3a0abd46,0x39c92312,0x39ed0e1b,0x388706f1,0xb81e19d9,0x3a24c64d,0xb95a6e88,0xba04759a,0xba0bcd39,0xb91df30e,0xb8d5c4c7,0xb9b0d495,0x39860c89, -0x399c3927,0xba4b6d46,0xba25c1dc,0xba4a8cff,0xba53e0cf,0xba3d8c41,0xba0c4934,0xb9f08f6e,0x393230ac,0x3a347528,0x3ad84356,0x3a877db5,0x3a4fe199,0x39296720,0x397fd5a0,0x394279fe,0xb9880dee,0xb978790a,0x381ba18f,0x3a3af8c1,0x3a5b574f,0x3acf14f6,0xb8057699,0x3aaa9a54,0x3aed8f9f, -0x3b23cefb,0x3a55ec5d,0x38884651,0x3ad35b1f,0xbabc14d1,0xba8e414b,0xba7593ec,0x39b94d91,0x3a80a2a3,0x393c64b4,0x3af91d51,0x3ad2c979,0xbaa84457,0xbad93406,0xbb1cb052,0xbb24ab89,0xbb3206f6,0xbb26c727,0xbb044d7c,0x39906f6a,0x3b186a54,0x3bb2a8bd,0x3b36dc58,0x3ae1422f,0x399ac6d9, -0x3b0cb78f,0x3aabf5af,0xbb14fb03,0xbb23fb8c,0xbafc37cc,0x39b6eb0e,0x3ac759ed,0x3ba5bb5e,0x3b0e3f14,0x3b3f09f8,0x3b2598b9,0x3b84fada,0x3a53cdfb,0x3990d5f4,0x3b6471ab,0xba0cc979,0xbb280aa9,0xbaab8b55,0x3a016db1,0x3b0606c9,0x3956b5bc,0x3b2de0e5,0x3b0bc212,0xbb0ed8bf,0xbb5b4d7e, -0xbba0c770,0xbbb4a6bc,0xbbb943e3,0xbb93f519,0xbb66b04a,0x3a00c1ff,0x3b76f4dd,0x3c29f2f2,0x3bc80d6c,0x3b91239c,0x3a20a090,0x3b2a307a,0x3abca1b5,0xbb2b18ab,0xbb2449d7,0xba819ea0,0x3b582432,0x3b8ad4f6,0x3b96496e,0xb9af5b28,0x3b78c7ad,0x3baf2ba0,0x3bdd98b6,0x3b6e237c,0x3ab7c6f6, -0x3bc910ea,0xb82f266b,0x3af7eba0,0x3b260b58,0x3b58da33,0x3baa90d6,0x3b444455,0x3bb4f84b,0x3ba66d4b,0xbb5182ba,0xbb925101,0xbbd95e98,0xbbfb7f1b,0xbc0f78bb,0xbbfff14b,0xbbd44196,0x3a9e3122,0x3be698d1,0x3c8ff2e6,0x3c034ffe,0x3bbf120b,0x38548411,0x3bd9cced,0x3b6aca3e,0xbbdd703f, -0xbbbe83e8,0xbb89f42f,0x3b2d3d58,0x3bad0260,0x3c593baa,0x3bad9802,0x3bd28ced,0x3baa1705,0x3bb65e10,0x3ac4ac91,0x3b80d757,0x3c2c9941,0x3c0c52ef,0x3c1d32c2,0x3c103bf4,0x3bc77486,0x3be44d2f,0x3bc3c4ee,0x3bac94a5,0x3b678b09,0xbba55a31,0xbbb5a75c,0xbc1f0437,0xbc3c29c6,0xbc495907, -0xbc23a533,0xbbf72c97,0x3a2436a6,0x3c15eb34,0x3cb3eae0,0x3c7ef8a0,0x3c0a44bb,0x3a5fae14,0x3ba03269,0x3b41ba18,0xbb6cec67,0xbb6752fb,0x3ace769e,0x3c134b40,0x3c377f4f,0xbcbc270e,0xbca10f85,0xbc3f96fe,0xbb4c5e26,0x3c41b37c,0x3c1399cc,0x397ee0e2,0xbc79b925,0xbc731176,0xbb9e7b81, -0xba8ece6b,0x3c899ada,0x3c6fdac1,0xbbace517,0x3b176451,0x39d3d677,0x3c361f9c,0x3c010a17,0x3befae73,0x3c1e12a9,0x3c7fb0bb,0x3c49b7ca,0x3bfb23d3,0xbadfc757,0xbc1d6485,0xbcaf0b56,0xbc907c37,0xbad2edf5,0x3cd9e2c0,0x3c5e4e5c,0x3c319213,0x3c3865ef,0xbc6ea5d2,0xbcbd6172,0xbcaa37bb, -0xbcc0f98b,0x3ca03fcd,0x3c939b65,0x3b6f3999,0xbc593500,0xbccf6b8c,0xbca8a8cf,0xbc150af2,0x3b9f61d9,0x3c05b15d,0x3b9a1b6b,0xbc010fe7,0xbbf55de0,0xbae6d516,0x3b8f617f,0x3ab99ccd,0xba688c36,0xbb3c5294,0xbb369ac9,0xbb617415,0xbbf5629a,0xbb560d86,0xbb92d475,0xbb9f3ac6,0xbbfc58ab, -0xbb318172,0x3c275e47,0x3ca61d31,0x3c4aac37,0xbb6ce8e0,0xbbd49738,0xbb0b6523,0x3c8164bc,0x3ccf6d25,0x3ce52dd9,0x3c2c72c3,0x3c790a8c,0xbcd24c32,0xbd070886,0xbbb0bdf4,0xba85fab3,0xbc7abee7,0xbb0e72a6,0x3b0ce426,0xbbf12dcb,0xbad470fb,0xba09c5c3,0xb9c4c996,0xbb441bc8,0xbb5be337, -0xb92f4b6e,0xbb1c451a,0xba0f3cc9,0x3b3e3645,0x3a0d71be,0x3986448f,0xbb79e599,0x3b1bee0d,0x3b97bc39,0x3b8671d9,0x3afea9d2,0x3aa72470,0x398ed835,0x3b9839b6,0x3bd4eaac,0xba57e268,0x3c84ec52,0x3c616e81,0xbc6084e5,0xbc0f96c6,0xbc611a9d,0xbc46e601,0xbcaf4480,0xbcc7e178,0xbce600a4, -0xbbdf124a,0xbac532a5,0xba0082f9,0x3b8a6985,0x3aa0b57e,0xbc38b311,0xbbca153b,0xbb59f4c8,0x39e3bb4b,0x3a71fe53,0xb9be8e3a,0xbb52c421,0xbad2dc84,0xba9d1a4f,0x39642d55,0xbb4944b9,0xbb6a72cb,0xbb9eed97,0xba8c74f2,0x3afea9ea,0x3b25d096,0x3bc93cd1,0x3bdfe04e,0x3ba9eb11,0x3b5cac67, -0x3bb563cd,0x3c0d44e3,0x3ca76b1b,0x3c5d4768,0xbc91d0da,0xbc7ae6b6,0xbc96a43c,0xbbc449bc,0xbc8b8bce,0x3cc9d6db,0x3cf1a386,0x3c7a9103,0x3c325247,0x3c5b946d,0x3b23cebb,0x3a9f414a,0x3bd18ffc,0x3b44aa69,0x3a46af30,0xbb4d88d1,0xbaa12a84,0x398b24a7,0xb9df1dea,0xba4efa7f,0xbb4cf4bb, -0xbc1651fb,0xbc191ef9,0xbc1ed0f5,0xbc136536,0xbc0030d0,0xbbf2eb4d,0xbbc137aa,0x396f6047,0x3bb7e082,0x3c5bea0a,0x3c61f77e,0x3c448489,0x3c0f855a,0xbbb3e7e3,0xbbc81ba8,0x3bae72f1,0x3be08275,0x3c420e11,0x3beb9436,0x3c86a628,0xbcf9597b,0xbcd138b1,0xbc773496,0xbb8e56cd,0xbb16100a, -0x3b62b39e,0x3b807993,0x3b3aaf3d,0x3b84e073,0x3bbd29a3,0x3b40c20e,0x3b828063,0x3aaeaf47,0x3aa90b11,0xbbd38d10,0xbc20b693,0xbc0a0df2,0xbc100aa6,0xbbc2c5bf,0xbb39773d,0xba6acb0d,0x3b19368a,0x3b16fa12,0x3ba03a9c,0x3bf78a48,0x3c26a3a3,0x3c6bf764,0x3c8d351d,0x3cba1c1a,0x3cc06c03, -0x3ca7eaf8,0x3c71e643,0x3c89b3ea,0x3bdba5dc,0xbc14c4fc,0xbca92343,0x3c84050d,0x3c3aa570,0x3c249389,0x3c2244b5,0x3c64fad3,0x3c5e93a3,0x3c6c849f,0x3c443c2a,0x3c359908,0x3bfc7aec,0x3b83fe45,0x39bdca62,0xbb6e11cb,0xbbcfadc8,0xbbd0cb78,0xbbcd8775,0xbbc14956,0xbbfd2dd9,0xbbe7ab84, -0xbbd154d3,0xbb46c0c3,0xba181797,0x39d373a5,0x3b1eadd0,0x3b533728,0x3b0516f9,0x3ab2b44c,0x3b05d768,0x3b1413d1,0x3b38ea10,0x3b869a61,0x3be1e4c6,0x3c0754b8,0x3c473ce2,0x3c7c2503,0x3c901b03,0xbac951d4,0xbbda20f6,0xbbaf8d5c,0xbb94cc27,0xbbed7bed,0xbba38602,0xbb913304,0xbb4413ef, -0xbb198264,0xbb089d8b,0xbb2ec656,0xbb8fc41f,0xbbbedb64,0xbc064eff,0xbbf36330,0xbbedaf6c,0xbbdaf6a3,0xbbe80e0a,0xbbdf5e62,0xbbc515bc,0xbb7259c1,0xbab17f24,0x390d8723,0x39ebaee0,0x380e453b,0xba7073b0,0xbad9b457,0xbb18c52c,0xbb04972e,0xb9388053,0x3a7afcc3,0x3b1bb7bc,0x3b885169, -0x3ba5d774,0x3bb2f982,0x38e3bd1e,0xbbb36486,0xbbeb9651,0xbc1c0ed5,0xbc464f1e,0xbc74d221,0xbc648b42,0xbc515406,0xbc426ddf,0xbc48e054,0xbc30d22a,0xbc2ff10e,0xbc09c123,0xbc030c76,0xbbf711d6,0xbbcf52f2,0xbbd4890a,0xbbcfce14,0xbbb660ac,0xbb9c42d7,0xbba8fcfd,0xbb7b7a3e,0xbb02aa40, -0x38c3e244,0x387a49e7,0x3a0e2401,0x3addd6fd,0x3ab0459c,0x3ac3e078,0x3a19e608,0x3a31ab9a,0x3902a70f,0xb7147127,0xba91b520,0xbb0c2a66,0xbb046530,0xbb56e27a,0xbb88102c,0xbbac5e63,0xbb95e056,0xbb7a8999,0xbb20cf9a,0xbbb0767f,0xbbdb0d9b,0xbc11635c,0xbbf92245,0xbbe92142,0xbbd7cb34, -0xbbe0610a,0xbbe08963,0xbbd365a7,0xbbbac035,0xbb999f6f,0xbb63cbed,0xbb5b1aa1,0xbace3298,0xbb1ee6ed,0xbae52008,0xbae164e0,0xbabdd61a,0xb9fbad3b,0x39ad52c7,0x3a5b2261,0x3a739f5b,0x3ab3fc77,0x3ad2f9f8,0x3b10926c,0x3b257325,0x3b46c9e0,0x3aa180b8,0x3a3fc625,0xbacff81a,0xbb625d45, -0xbba49193,0xbbb7eee6,0xbbc37421,0xbbd633f3,0xbbd8c26e,0xbbfd9ecf,0xbbe9d0c1,0xbbe92ee2,0xbbd992a3,0xbbd8ce10,0xbbcc84eb,0xbbba9af3,0xbba49b34,0xbb9a9061,0xbba0ca30,0xbba57d4e,0xbb8a83d1,0xbb8fa8ff,0xbb928f53,0xbb9320b0,0xbb867373,0xbb7c9a27,0xbb6b3036,0xbb6497d4,0xbb5bab50, -0xbb47cea6,0xbb49129a,0xbb52ed0f,0xbb583670,0xbb6993b2,0xbb6cdcc8,0xbb6db28d,0xbb8aaaf6,0xbb8c7c41,0xbb97d030,0xbb9e74ab,0xbbf6f16b,0x3a915ef4,0x3abfe721,0x3a8decf1,0x3a508372,0x3a270fc0,0x3a93c39e,0x3992588e,0x38a074cf,0x3a5a0ffa,0xb9365c96,0xba068cbe,0xba3dbaa8,0x384da7b2, -0x39952d0d,0x389c7a2a,0x3a4b39c6,0x3a82e0ef,0x39d0220e,0x393135a5,0xb80cdefb,0xb8bfee23,0x38ad1486,0x39c6aa15,0x3a1f6b39,0x3aade8f4,0x3ae5de73,0x3b19db43,0x3ad5efca,0x3a9fef6d,0x39eeee7b,0x3a6d885a,0x3a8238a3,0x39eef217,0x3a302801,0x3a671824,0x3abf58c9,0x3ab3caad,0x3b1105ad, -0x39024b8c,0x3a66f065,0x3acb6405,0x3b735cba,0x39da6f40,0xba1dfa94,0x3aa9732e,0xbb2d479f,0xbb2d90d4,0xbb27d5b5,0xb759a50a,0x3a9a5edb,0x39ede321,0x3b31ed84,0x3b3b5735,0x3aaebdf3,0xb9b8f867,0xbadb6861,0xbaf54c33,0xbac51510,0xba6bb9df,0x39715cc0,0x3b201742,0x3b862471,0x3bd2f874, -0x3b656f40,0x3b210cad,0x3a6ff3bd,0x3b65dc67,0x3b3806a3,0xbaaadc6a,0xba1713f2,0x39bc5e5c,0x3b31a54a,0x3b4a33a9,0x3ba8d4c3,0x3b111484,0x3acc168a,0x3a9abd83,0x3bbc6e1e,0xba68d6fe,0xbb09a5b6,0x3b0de887,0xbb6077c2,0xbbb41995,0xbba0fb11,0xba770916,0x3ac72ff4,0x38d54923,0x3b60f709, -0x3b6cbbeb,0x3b0d6882,0xbab6b486,0xbb6cca77,0xbb927364,0xbb6fc1a4,0xbaebe602,0x3914eb40,0x3b8f9c86,0x3be67d73,0x3c3b2995,0x3bd312ea,0x3b8f98c8,0x393ec06b,0x3b83aeba,0x3b6d2355,0xba9116e1,0x3a2a677c,0x3afc34f8,0x3bb98f65,0x3ba63223,0x3b9e01ac,0xbaaf0e1f,0x3a85b626,0x3b4bc96f, -0x3c1c64b2,0x3a890e4b,0xbb0a6d18,0x3b71ff9e,0xbbbda463,0xbb9d6237,0xbbba259b,0x3a77e81e,0x3ba237f4,0x3aed8cc9,0x3beaab15,0x3bee9da5,0x3b5164a9,0xbb031aad,0xbbb76b1f,0xbbf686c1,0xbbc6642b,0xbb8b02eb,0xbad0cc53,0x3be33ad9,0x3c4166be,0x3c943a13,0x3c06951d,0x3bcd6303,0x3a2b49d2, -0x3c0c5f61,0x3bd6c6f7,0xbbacd976,0xba99e4ac,0x3a82a5ea,0x3bf8e61c,0x3c0135f3,0x3c46a401,0x3ba1717d,0x3b6d64a9,0x3b18ed37,0x3c225cf1,0xbb1bcd64,0xbaed197f,0x3bd37092,0x3b0d2442,0x3b16f2c1,0xba6d742c,0x3b971915,0x3bec203e,0x3b966988,0x3be97f59,0x3bdc7d7a,0x3b0f3d14,0xbb1074e3, -0xbc08af11,0xbc2b890a,0xbc10ee34,0xbba7aec6,0xba403c3b,0x3c00ea07,0x3c76dae8,0x3cbb4d83,0x3c669589,0x3bda45c6,0xba85ed90,0x3be19e27,0x3bd14700,0xba624b62,0x3b26f8d5,0x3bd9048b,0x3c466e63,0x3c36e936,0xbcb70f25,0xbca1ec40,0xbc851f52,0xbc13e3c2,0x3bbab547,0x3c0d8659,0x3b865553, -0xbc1dd6ca,0xbc1fb936,0xbb4fee7f,0xb8b0d6b3,0x3c3017b1,0x3bfd61ac,0x3a59c0c1,0xba977252,0xbb5a612c,0x3c33d59f,0x3c3db22d,0x3c78919f,0x3c9ff972,0x3caa57c7,0x3c632e0c,0x3be8725e,0xbbedf155,0xbc5fb904,0xbca70164,0xbc1a598c,0x3c0bb7af,0x3cf0748c,0x3c8a4034,0x3c2ec6f1,0x3bdba4eb, -0xbc4e06a6,0xbc8aff51,0xbc579f13,0xbc9fea3c,0x3c866fed,0x3ccd0d82,0x3c86a34c,0xbac43c01,0xbca1fc1b,0xbcba277e,0xbc78e3d4,0xbaa496af,0x3b8be309,0x3b598a94,0xbbaa2289,0xbbf4844f,0xbb8d27cc,0x3b5257e1,0xbad1f492,0xbae7b459,0xbb96049d,0x3abcf2db,0x3b0f0dc6,0xbac8dccd,0xba215d52, -0xbb48479b,0xbaf3ff90,0xbb7652bf,0x3b263bdc,0x3ca45ee4,0x3c7e5fc8,0x3b86dc92,0xbc3df6a8,0xbbdbd8b0,0x3adedaba,0x3c91c603,0x3ce32a39,0x3cbe1cc2,0xbb9e29f8,0x3b9cb01c,0xbca5fd8c,0xbd4c9247,0xbc61589c,0x3a3db828,0xbc8d6fb1,0xbb1d292d,0x39a55dfc,0xbb97a691,0xbb096c44,0xbaf5d563, -0x3a2ed080,0xba90f28d,0xbb0e1397,0xbb235146,0xbb7ba78f,0xbb002998,0x3afd3410,0x3b16e0ae,0x3b08f97a,0xba202a14,0x3b3b68f4,0x3b4865b5,0x3b16eb56,0x3975783a,0xba0c7a76,0x3b40cdf8,0x3ac998f9,0x3a8fd186,0xbba04df3,0x3c812bd7,0x3c5d8767,0xbc9e146b,0xbb5e97af,0xbbf20ca3,0xbc353695, -0xbc2527d3,0xbc89faf2,0xbd0ab52a,0xbc2a90ff,0xbb2910ef,0xbb8914c5,0x3be27afe,0x3baea0c8,0xbbdd9f41,0xbbc1b159,0xbb6e80fb,0xb880708b,0x3add731d,0x3a4f78d7,0xbb797c53,0xbaacd93e,0xbaa37aa0,0x3aced498,0xbb20ccfc,0xbb7c36d4,0xbba11a86,0xba847490,0x3aab6c16,0x3b12b186,0x3b845c38, -0x3b846142,0x3ab275b6,0x3abd58fa,0x3afa13c3,0x3aea359e,0x3c8e9099,0x3c184859,0xbcdd9705,0xbc76c732,0xbc6bac5a,0xbb59619f,0xbbd418c5,0x3cf6e9ec,0x3d42d4e2,0x3ced7553,0x3c7e69b1,0x3c29b8ab,0x3ae8d290,0x3b171290,0x3bb863e9,0x3b777ca7,0x3b2668d5,0xba9df9ac,0xbb0d379f,0xba1aec70, -0x3afecac4,0xb8c4a0ab,0xbad380ca,0xbbcbcc77,0xbbe86352,0xbc033077,0xbc03367b,0xbbc03641,0xbb97640e,0xba9c7b47,0x3b4339fe,0x3bfb5d0c,0x3c556512,0x3c2dc380,0x3bc5b5f4,0xbb81a01a,0xbc1dad07,0xbbf913d2,0x3b6c79b5,0x3a5b02d8,0x3b50ed99,0x3b24d868,0x3c518a09,0xbcf52dce,0xbcd13f1e, -0xbc98d0b6,0xbbc0c1b9,0xbb58de92,0x39783546,0x3a33cb15,0x3b5ce2d6,0x3b46387d,0x3b543652,0x3a97ac0d,0x396ca60c,0xb9e6d9ce,0x3ab8e2a9,0xbbb3be51,0xbc0b4845,0xbc1ef487,0xbc321c41,0xbc208d94,0xbc0a3319,0xbba6a16c,0xba93daff,0x3a508344,0x3b919cc4,0x3c10d187,0x3c596731,0x3c811901, -0x3c8dbd6b,0x3ca5d00f,0x3cae2880,0x3c84a78e,0x3be1a941,0x3c06bdbe,0x39189994,0xbc42759e,0xbcb25a2a,0x3c81b176,0x3c9241d0,0x3c8821e7,0x3c6ba3de,0x3c83b3ba,0x3c5ebd2c,0x3c55ae4f,0x3c4a6a23,0x3c4460a3,0x3c2a30db,0x3bdc1559,0x3b89ff1b,0xb9c4c21a,0xbb906534,0xbbc25dda,0xbbbfabc2, -0xbba3c2a2,0xbba72697,0xbba29e25,0xbbb4f7b1,0xbb6d4ddc,0xbb215b5a,0xbab09c96,0x3a0cb7e8,0x3a900a09,0x3a1fdf1b,0x3a88e6cb,0x3b128aff,0x3b158f55,0x3b7f959d,0x3bd89e7f,0x3c2d474a,0x3c2686d2,0x3c350aca,0x3c4d6ee9,0x3c7a4c28,0x39c48efc,0xbb85d78a,0xbb3065ca,0xba4054f3,0xbb29843b, -0xba020850,0x3a06d169,0x3abe58ee,0x3ad388d5,0x3aab2ad0,0xb98f2cd2,0xbaf37064,0xbb94a325,0xbbfcd6d9,0xbc01b4ec,0xbc0174c7,0xbbf238d9,0xbbe37da4,0xbbd81fb9,0xbbc1bcb2,0xbb88910c,0xbb4d973b,0xbb17b0bb,0xbae4948a,0xbac223f5,0xbaf9e6ea,0xbaff0b02,0xbae92c57,0xba897004,0xb92e554a, -0x39bf9342,0x3af6cd12,0x3b8ad216,0x3bdb774b,0x3bf03f44,0x3b37a998,0xbbb00062,0xbbde85a6,0xbc02a0cd,0xbc21a178,0xbc3ce2bb,0xbc29d5cc,0xbc0f8591,0xbbe35e2c,0xbc0f7f44,0xbc0c5dab,0xbc20e422,0xbc05744d,0xbc104b6b,0xbc09fc40,0xbc0047d4,0xbc027f9e,0xbc0670af,0xbbf78fac,0xbbe7a6bf, -0xbbd74fc6,0xbbc107e3,0xbb9b91b8,0xbb6ce155,0xbb407496,0xbb09e525,0xba21fa9b,0xbaaff660,0xbad47fda,0xbb1fda98,0xbae44474,0xbab7cc30,0xba196619,0xbacb3e9c,0xbb4cb6af,0xbb3eceb3,0xbb82f34a,0xbc0482b7,0xbc194688,0xbc12ef4e,0xbc08ed96,0xbbefb5ba,0xbc243cf0,0xbc347627,0xbc55255c, -0xbc3612a7,0xbc20fe34,0xbc0fadc4,0xbc0c87ca,0xbc02947c,0xbbfa1c88,0xbbeeb822,0xbbd5b9c1,0xbbc4b184,0xbbb9347c,0xbb97e307,0xbbb0f06b,0xbb9573f4,0xbb8ef44e,0xbb7a6e56,0xbb4902b0,0xbb1cf6c2,0xbaefbfaa,0xbadd4b9d,0xba74f486,0xba4c2c0f,0xba5d20ff,0xba887dbb,0xbaa42230,0xbb3d4877, -0xbb30aaa9,0xbb9f7dbb,0xbbe5f2ec,0xbbac1e37,0xbbbc3414,0xbbc78296,0xbbd68a96,0xbbda13a4,0xbbe1a12a,0xbbd387d0,0xbbdec42a,0xbbd9e52b,0xbbe35be7,0xbbdec70d,0xbbd4c545,0xbbc6e4df,0xbbbac8f4,0xbbb44e3b,0xbbb68e30,0xbbb34097,0xbbb2d422,0xbbb0a11d,0xbbb1b218,0xbba3d461,0xbb9cf403, -0xbb938a62,0xbb8e2057,0xbb85c8de,0xbb741740,0xbb80637f,0xbb879a40,0xbb8d5c0e,0xbb90e5ee,0xbb88bf5b,0xbb847748,0xbb977ceb,0xbb9cdbc6,0xbbaba009,0xbbaceac7,0xbc000105,0x3b00bfd5,0x3addaede,0x3abadea0,0x3a989062,0x3a832ccc,0x3ae75d84,0x3a159172,0x39be3e5e,0x3a9180e0,0xb6ca9ede, -0xb9a978a6,0xb9c9d3e6,0x39ad8efe,0x3a2d77b4,0x3a17bc0e,0x3a9f7cfb,0x3ac73c68,0x3ab9e8e0,0x3a6daa34,0x3a3f5ffd,0x3a285ea6,0x3a621759,0x3aa143a1,0x3adcb0d5,0x3b15fb32,0x3b2560b2,0x3b2c2c7e,0x3b042967,0x3ac84623,0x3a64ac81,0x3ac0969e,0x3ad39a59,0x3a8f1b11,0x3ab376d5,0x3ac8d6be, -0x3b0270f1,0x3adcc326,0x3b3f5414,0x3a26c832,0x39c56743,0x3a8dfcdd,0x3b8d0c53,0x393c0e16,0xba64cbee,0x3a8a80d3,0xbb524575,0xbb634b41,0xbb3827b7,0xba10db96,0x3a412fba,0x3a27ad42,0x3b3f5982,0x3b5bd447,0x3b468267,0x3a52ddff,0xba38b4d8,0xba771704,0xb94256ee,0x3a5dc3a9,0x3b355e67, -0x3b87b3d8,0x3ba73420,0x3bce774c,0x3b7fd39c,0x3b552665,0x3b100e11,0x3b874683,0x3b5ed4e8,0x38e54e22,0x3aae12c2,0x3b1cf49d,0x3b97627e,0x3b8e74a9,0x3b963103,0x3b069474,0x3a20e757,0x399c596c,0x3bcd773d,0xbafb9c99,0xbb65e366,0x3a99b217,0xbbb841a4,0xbbee33e8,0xbbc3a995,0xbb2b98df, -0x3926be27,0xb88ad853,0x3b617501,0x3b876cf6,0x3b985b4f,0x39acabfb,0xbae90f7e,0xbb2dad56,0xbab64ff6,0x3a841320,0x3b8dfe1b,0x3bf6dde9,0x3c14f6b0,0x3c299e0b,0x3bcdf4df,0x3b86d55f,0x3a6e6fa4,0x3b9a14f9,0x3b9abea5,0x3a1a14bc,0x3b476a45,0x3b86b6b9,0x3bec3d7d,0x3bae41cc,0x3bba4f9d, -0xba9b96e4,0xbaec735a,0x38ef7cba,0x3c26d6aa,0xbabbe3e7,0xbb9d4963,0x3ab5b8e6,0xbc23700c,0xbc283e36,0xbc1e46b3,0xbb21b003,0x3b1ee5e8,0x3a5bb6bd,0x3bdf4b9a,0x3befff38,0x3be5a8f7,0x38fa795f,0xbb808c5a,0xbbc512d7,0xbb41c3e2,0xb99f721b,0x3b99ed59,0x3c36c262,0x3c6bc754,0x3c7effb4, -0x3c03e320,0x3bdf9ba7,0x3b73fa3d,0x3c0c4223,0x3bea2977,0xbb0fe26e,0x3b49ca7f,0x3bb1936f,0x3c3a394c,0x3c21fd6d,0x3c1258d7,0x3b81c4be,0x3a9c06ca,0xb8fced13,0x3c4174cd,0xbbb96cee,0xbbd95082,0x3b13c49f,0xbb9aad77,0xbbb106e1,0xbc032241,0x3aad3044,0x3ba9a667,0x3b84cb27,0x3beca559, -0x3c07fdc5,0x3bfd18ee,0x3a07b744,0xbbacfa4e,0xbbf0ffef,0xbb94437f,0x3959d569,0x3bf76503,0x3c650128,0x3c978ae4,0x3c9f6ebd,0x3c3ba8dd,0x3b9fef95,0xba4a9806,0x3bfb9c72,0x3bfe8890,0x3b02f41d,0x3be14046,0x3c21b3f5,0x3c61f58e,0x3c26bda9,0xbc7afc3c,0xbc822b76,0xbc94ae1e,0xbc542626, -0x3a6281e9,0x3c027b23,0x3c004f2b,0xb9d65df5,0xbb29cda3,0xbae90d31,0xba560f83,0x3b29ea28,0x3a9f45e3,0x3bbe8d6f,0xbba83132,0xbc00c9b7,0x3b9d333e,0x3c1eef2a,0x3c86d76e,0x3ca4d29f,0x3c8c53f7,0x3c1e5c15,0x3a95c4a5,0xbc431c23,0xbc5968a5,0xbc7ad622,0x3bd82b87,0x3cbcc0d2,0x3cf39321, -0x3c9b334b,0x3c04f23a,0xbb0f3272,0xbc47c6e5,0xbc4bddab,0xbbe62aec,0xbc466713,0x3bb4967d,0x3cc0851e,0x3ce993e9,0x3c4c4415,0xbc57f6c6,0xbcadcb80,0xbc96d4a8,0xbbc99954,0xba2fe947,0x3a2ad2a9,0xbb559503,0xbbaa109c,0xbbae6e3a,0x3a8e99aa,0xbb475fa1,0xba44d97c,0xbb519d0b,0x3b9045d9, -0x3bb77390,0x3b9fa6ce,0x3a04e3b8,0xbab3c6fc,0x3b19cbfa,0x3b1c01e1,0x3c0a3f45,0x3ca9bc47,0x3bedc819,0xbb9230f0,0xbcafde5f,0xbbc42af6,0x3bb66eb7,0x3c8365cd,0x3cc19542,0x3c6bf8e9,0xbc80b92c,0xbbe4b216,0xbc16dfd0,0xbd403765,0xbce9f608,0xbc28ef1e,0xbc2eb252,0xbbf96234,0xbbccd54c, -0x3889bba3,0xbac782d7,0xbade4cc4,0x3a4b1129,0x3994a9c0,0xba88ed1a,0xbb943dba,0xbb7560de,0xbb0ab5e6,0x39c4e013,0x3b844f24,0x3bba12f1,0x3b90e1d5,0x3b54822b,0x3a987b88,0x3a19cf8c,0xbae8417d,0xbb24ae36,0x3b2ec49e,0xbb265bc7,0xbb8bc8b7,0xbb1bce8c,0x3be0e3a2,0x3ba154ce,0xbc3c9e40, -0x3a708a30,0xbab33cfd,0xbc50a012,0x3b4ed1e5,0xbbcd3a92,0xbd06edbc,0xbca78caa,0xbc44117a,0xb9537e89,0x3b447fd5,0x3bab7bdd,0xb8ccabaa,0xbb8a4303,0xbb5f4ba6,0xb9a5b68e,0x3a815aa2,0x3a7d0e56,0xbb6bef35,0xbaa4fe58,0xbabc5a84,0x3ae31c90,0xb8aae06e,0xbaa099ef,0xbab5dd09,0x3a17bcfa, -0x3a557275,0x3b021e83,0x3a07dcf3,0x389571cc,0xbb33f002,0xba899411,0xba694507,0x3b93f90a,0x3be1c03e,0xbb0af877,0xbcb31d80,0xbc3e4a78,0xbc00bac4,0xbb05f79c,0x3bb417f0,0x3ca3959d,0x3d35da42,0x3d1faec4,0x3cb0601f,0x3bfa2d8a,0x3b8cd06a,0x3bd7d803,0x3b8e4ff1,0x3b44c131,0x3addfaeb, -0xb9657a89,0xbb1fb1cb,0xba8a00b5,0x3b100ee4,0x39f09101,0x39eb7612,0xbabd0033,0xbb5db9fa,0xbba9e78b,0xbbac1f3c,0xbb7c78ba,0xbae2869a,0x3b6a7f64,0x3b8c35cb,0x3c0938ca,0x3c2470a8,0x3beb8d4e,0x3acd0744,0xbc3820ad,0xbc064ea8,0xbba5a0da,0x3aea2815,0xbb914be1,0xbb971e13,0xbaa07529, -0x3b452897,0xbc7d48e5,0xbc988626,0xbc96ceaf,0xbc0823da,0xbb735108,0xbb131589,0xbb03df07,0x3b62f92b,0x3a83fcdd,0xba824dfd,0xbad74678,0xbb20f501,0xbac14941,0xba361d76,0xbb81c27f,0xbbcd689e,0xbc2fda86,0xbc3e95f4,0xbc3fc4b2,0xbc37ea2d,0xbc0c0703,0xbba89d75,0xba87e88a,0x3b37b2f5, -0x3bf40c92,0x3c37a85b,0x3c665298,0x3c813901,0x3c9046b7,0x3c89e330,0x3c203696,0x3aa4d00e,0x3acab45a,0xbb14e184,0xbc163406,0xbc39570f,0x3c099b6d,0x3c7bf69a,0x3c71eef9,0x3c35d710,0x3c378f68,0x3c0cb2b5,0x3bfd200b,0x3bfe24d4,0x3c01b8f7,0x3c0b0d9b,0x3bd69523,0x3bd9d429,0x3b412d90, -0xbab20bfd,0xbb87e062,0xbba27d14,0xbb9ffc5c,0xbb7b5c8a,0xbb5f8928,0xbb5ddc7f,0xbb5d4953,0xbb4a6c0d,0xbb234e91,0x395b410b,0x3ab03970,0x3b017f3d,0x3b833c31,0x3ba68ef2,0x3b9b4138,0x3bf8b47c,0x3c35222f,0x3c78c85a,0x3c4da5f8,0x3c2567eb,0x3c110347,0x3c0546cd,0x3b3fbf75,0xba2d1458, -0xba1e4b42,0x3aeb37aa,0x3b061907,0x3b82e97b,0x3ba177a1,0x3bafc12f,0x3ba48f16,0x3b8e8104,0x3b10bbde,0x3a8f1459,0xbb03d24d,0xbba9a903,0xbbd31fb8,0xbbecb3d2,0xbbf04973,0xbbcd39f4,0xbbb8e72a,0xbb99ce63,0xbb841d13,0xbb7bbeaf,0xbb85b2cf,0xbb1b2dcb,0xba836fa0,0xb9768974,0x3a85df5b, -0x3b2497df,0x3b8c60c2,0x3b7aa9bd,0x3b5acf7d,0x3b92d218,0x3b9e0462,0x3bc667f1,0x3bcce3bf,0x3ba04352,0xbb80080e,0xbb82e4f4,0xbb62dcd4,0xbb6d893d,0xbb82174c,0xbb624029,0xbaf66442,0x3985eac8,0xbb28ac2d,0xbb75ecc6,0xbbc18a24,0xbbb502a9,0xbbeba9b0,0xbbeb82ff,0xbbeb215b,0xbbef4f3e, -0xbc036220,0xbbf4fad8,0xbbf20fcf,0xbbdb8da5,0xbbd8a945,0xbbc6ad73,0xbbc0362c,0xbb9923a4,0xbb6c37fa,0xbb020d55,0xbb2dcbb9,0xbb440bfd,0xbb4c9ba5,0xbb4b860f,0xbb4511a1,0xbb22eec5,0xbb45f545,0xbb7eb957,0xbb79936c,0xbb84e471,0xbc22f652,0xbc3332fa,0xbc43bac8,0xbc3e67ef,0xbc36296e, -0xbc504526,0xbc558592,0xbc6f60cc,0xbc4ac763,0xbc3150b8,0xbc1c2022,0xbc1242d2,0xbc013fb3,0xbbfa41df,0xbbf6b9e8,0xbbe4ae3e,0xbbe3a35e,0xbbd66452,0xbbc70086,0xbbd6f603,0xbbbbf338,0xbbb9e3f1,0xbba839c3,0xbb9fbf1e,0xbb98aefc,0xbb8f5559,0xbb9ad0be,0xbb913515,0xbb984228,0xbbac7e8f, -0xbbacf879,0xbbc4f47b,0xbbe1a345,0xbbc68500,0xbbf29ec1,0xbc135b2d,0xbba1d88d,0xbba26af7,0xbba1da79,0xbba3c4b2,0xbba54bfb,0xbb96df3d,0xbb8e5a98,0xbb9f4805,0xbba95053,0xbbb8ebf9,0xbbbcc01c,0xbbbd2232,0xbbba03a3,0xbbb07700,0xbba9b5e4,0xbbae02bd,0xbbb32f1c,0xbbb32a20,0xbbb2a417, -0xbbb85cae,0xbbad2f06,0xbba8d01f,0xbba0a1c4,0xbb9aae0f,0xbb900dd6,0xbb839b66,0xbb8d65c2,0xbb92e824,0xbb9bf3a0,0xbba01d7d,0xbb9b6fdb,0xbb9fe7a7,0xbba6d640,0xbba4f1a4,0xbbb0167c,0xbbab4e74,0xbbf30b76,0x3b1de91c,0x3aea0fc0,0x3ad4d296,0x3acb502b,0x3ab1d14e,0x3afeccec,0x3a48a78e, -0x3a21f80d,0x3aa40564,0x398bbfe4,0x37fd5d05,0x394a3a4d,0x3a1ac499,0x3a68a5ee,0x3a5f08a9,0x3abe218e,0x3ae7ed55,0x3afbef54,0x3abb3106,0x3aab502a,0x3a8f1bb5,0x3ab2ba0c,0x3ae5cd2a,0x3b1b416b,0x3b3a0029,0x3b3c35d2,0x3b2304a9,0x3b089529,0x3ad4b1ef,0x3aa5548a,0x3ae12a71,0x3aeed926, -0x3abc3998,0x3adfcf7c,0x3af16532,0x3b13ce21,0x3af145c3,0x3b4ec1d6,0x3a9b5dcc,0x39f3a941,0x3a6a9157,0x3b776cd1,0x391278e7,0xba5abfb0,0x39ee695e,0xbb5e4e5e,0xbb6d7278,0xbb1874e0,0xba8e810d,0xb78921bd,0x39ad2ef2,0x3b2b7f34,0x3b50ae10,0x3b59bbad,0x3ae4c47b,0x39dcea07,0xb94c4482, -0x3a4357bc,0x3b043dfb,0x3b94517c,0x3ba3ae29,0x3bad410c,0x3baea352,0x3b7f6d06,0x3b7518bf,0x3b673cb8,0x3b725a3b,0x3b3a6191,0x3ab2f37c,0x3b3c097d,0x3b83c454,0x3bc3179f,0x3b9ca613,0x3b875c83,0x3b0ac3f2,0x3a6bd514,0x39aa8b99,0x3b9c3063,0xbb137adb,0xbb7a55af,0xb9814718,0xbbd79302, -0xbbfca7f1,0xbbacd925,0xbb7aeeb4,0xbab2509e,0xba82ec0b,0x3b3dade9,0x3b7f2143,0x3b9bda34,0x3ae2e2de,0x397e0565,0xba835c02,0x39e51efb,0x3b4739b8,0x3bf0c584,0x3c1a28ef,0x3c21a3f6,0x3c039da2,0x3bc30b20,0x3b7b10eb,0x3b1f8db8,0x3b89378c,0x3b8d9e7f,0x3aecbbb6,0x3b94977a,0x3bb5899e, -0x3c04f03c,0x3bb2cbde,0x3bbf4796,0xb9ae623a,0xbb215260,0xbab8706f,0x3c00e33c,0xbb3bf175,0xbbc8669b,0xba9ddb7d,0xbc4e47a1,0xbc61d2b3,0xbc1ed874,0xbbc03bf8,0xba8860f1,0xba8ab087,0x3bab1b59,0x3bbfc278,0x3be20239,0x3b0b21a0,0xbacfddfb,0xbb83fa8b,0xba101b80,0x3b2830e4,0x3c1c60de, -0x3c57ec7f,0x3c7197be,0x3c3ce3fa,0x3c01b010,0x3befc0d3,0x3bfaa424,0x3bcf27ea,0x3ba9f456,0x3a8029fa,0x3bd73785,0x3c16360c,0x3c675a45,0x3c2a1257,0x3bd336af,0x3b5c4738,0x3a59e86d,0xba683b61,0x3c1c3fde,0xbbef34f8,0xbc1b941a,0xba9bd6f1,0xbc264570,0xbc3bc8b8,0xbc1f8755,0xbb472624, -0x3ab66e79,0x3b3ad6d3,0x3bc4b392,0x3c03b5f2,0x3c15230b,0x3b31e4af,0xba84e5d7,0xbb6e4090,0xb9d52a8c,0x3b95c799,0x3c631f5b,0x3c92c413,0x3c9f328e,0x3c6980f6,0x3c21af68,0x3b93c8c0,0x3ac7f787,0x3bd90857,0x3bd81450,0x3b74e67c,0x3c19cd69,0x3c3eb370,0x3c6e29de,0x3c1da301,0xbb891e0b, -0xbc12522b,0xbc6087f5,0xbc35012a,0xba28a2da,0x3c10bb89,0x3c4217a6,0x3c167812,0x3b53c6f6,0xbb2b98e0,0xbb388a8a,0xbb594e1e,0xbb2c4dda,0x3c0ea16b,0xbc0a748f,0xbc4016a8,0xbb7d9855,0x3a4cd0fc,0x3bf9fa21,0x3c18c31b,0x3ba41acc,0x3a070da5,0xbc081b8c,0xbc7de053,0xbc3eb3d9,0xbc4fc47d, -0x3c8eb8af,0x3cf676ef,0x3cc4836b,0x3c820b14,0x3b49869c,0xbc2fa157,0xbc319cea,0xbc05d8d1,0xbba2edee,0xbb32959e,0xbae86b52,0x3c77091a,0x3d06e1e6,0x3ca8e98d,0xbbd2ceb8,0xbc9a875c,0xbca7a18f,0xbc23fc7e,0xbb8ff3a3,0xb9b811cc,0xbb1437c1,0xbb32a2a2,0xbba3ad3e,0xbaed9ec6,0xbb11678d, -0x3abe589d,0x371ef446,0x3bb8d723,0x3bd215d0,0x3c1198cb,0x3af4912c,0x3ada17ef,0x3bca58cd,0x3c278484,0x3c5b7157,0x3c4ea8da,0xbaabe0ff,0xbc32583c,0xbcde7826,0xbb6f8ee0,0x3c119896,0x3c3bf418,0x3c536d59,0x3ab4f6e7,0xbcaf01be,0xbc441d13,0xbbde8678,0xbd190d02,0xbd185238,0xbca4a23f, -0x3987dee1,0xbc51f66b,0xbc7138cd,0x36e2619d,0xba7342e1,0xb9c48b27,0x39c2e43c,0x3a139d27,0xba42e04e,0xbbb37da3,0xbb4f3872,0xbafa8a5c,0xbaec8c28,0x3b7cc544,0x3bda1938,0x3bd3fa03,0x3b36a876,0xb9f908b4,0xbae186b2,0xbb327977,0xbb66be54,0xba5bbb91,0xbbb94f0f,0xbbddda5a,0x3b9d294d, -0xbb114a0b,0xbbbbbfe9,0xbbc63f13,0x3b3d1198,0x3b6bc4b5,0xbc1b84d8,0x3b86fd17,0xbba8fb03,0xbd056c48,0xbce018b4,0xbc8deadb,0x3c1cf1ae,0xbae97c9f,0x3b0588ef,0x3b75fb92,0xbb1fdcb3,0xbb172a0a,0xb9a58ee5,0xb8734c7b,0x39463c99,0xbb4ffd6d,0xbae1e4f4,0xbafcde30,0x3a4b5408,0x3abe9729, -0x3ac67e17,0x3a9bcae8,0x3ae6b5c4,0x391ab449,0x39ed396c,0xbb50f8dc,0xbb816068,0xbbba068e,0xbb2b14b2,0xba432057,0x3c5959d9,0xbb39c147,0xbc596e1d,0xbc85e2d6,0xbbb62ae5,0x3b151d77,0x3be0977f,0x3c010031,0x3bb0d734,0x3caaa965,0x3d170929,0x3cced185,0x3c275ee7,0x3bd981ee,0x3c13abc5, -0x3bc3ea37,0x3b0f3e67,0x39c2e386,0x37921e15,0xbb001cda,0xba501ea8,0xb6a80302,0x3a728780,0x3b1668d5,0x3b404b63,0x39bf9c95,0xbae0fbdd,0xbb0e1787,0xbadd7c71,0x3a948b98,0x3be2de60,0x3bc94375,0x3bfd2bf5,0x3bc13ea3,0x3b9011f0,0xb920c482,0xbc3d345d,0xbb33e94a,0x3997574d,0x3b05767f, -0xbbaec820,0xbbcb0d93,0x3b956b08,0xbb33099b,0xb9c14339,0xbbe44bdd,0xbc7285b1,0xbc20c710,0xbb9d0aec,0xbb0f62c3,0xbb08deaa,0x3b31a215,0xb9ec4a8b,0xbb6e413b,0xbb6ddb1f,0xbb78c00b,0xbaf1c130,0xbb088d9f,0xbb1348f8,0xbb836e5e,0xbc243e06,0xbc3748ba,0xbc3ed371,0xbc32986c,0xbc1ddda6, -0xbc00f0ec,0xbb5ab183,0x3a8cde5b,0x3bbb3019,0x3c003e10,0x3c416282,0x3c60b6d3,0x3c828bed,0x3c4015a4,0x3b8d71fd,0xb99a405f,0xba7a8d91,0xbb027e84,0xbbabcff1,0xb9539845,0xbac49ef4,0x3ba91f98,0x3bea7787,0x3b9cc503,0x3b8ad191,0x3b2a6d6e,0x3b21328b,0x3b25aba6,0x3b443ba2,0x3b8508b1, -0x3b7393c6,0x3bc9958a,0x3b93d848,0x3aa030d9,0xbae7855b,0xbb6dee7e,0xbb999865,0xbb8f82af,0xbb82eaba,0xbb49ab9c,0xbb46aac1,0xbb0ad7ff,0xbaf380b3,0x3afbef1a,0x3b82b39b,0x3bcc9d1a,0x3c1821e3,0x3c27ed63,0x3c1effb9,0x3c500e9c,0x3c79713e,0x3c90b7e2,0x3c5bfdfa,0x3c13b2d6,0x3baf681a, -0x3a1f60c3,0x3bb0e831,0x3b6b9826,0x3b13481b,0x3b80c67a,0x3bbeaac1,0x3bf191b7,0x3c0082fe,0x3c01c770,0x3beea68b,0x3bdd5000,0x3ba1bba4,0x3b7d44bf,0x3a60c551,0xbae2c5d3,0xbb712ce7,0xbbaf19b0,0xbbd62a2c,0xbbb8d616,0xbba4c581,0xbb826f38,0xbb6a9881,0xbb617e57,0xbb831e8a,0xbadf2389, -0x39a0083a,0x3afe824e,0x3b8ef710,0x3bea55f0,0x3c266ec2,0x3c1720cd,0x3c071104,0x3c17d13a,0x3c02e379,0x3be4633f,0x3bc2224a,0x3bd34797,0x3aacdc91,0x3ae23eaf,0x3b3c274d,0x3b7c0381,0x3b851361,0x3b83d817,0x3ba56bee,0x3bdb8eda,0x3b8381ce,0x3b012977,0x38d9016e,0xbac27a2c,0xbb827887, -0xbba39867,0xbbb06e2c,0xbbb44e33,0xbbd84b1c,0xbbc79b5b,0xbbc69120,0xbbbcbc13,0xbbc3047d,0xbbbde0e5,0xbbc3ff7c,0xbba5157c,0xbb922064,0xbb61a54a,0xbb3b3bae,0xbb26d323,0xbab9d03e,0xbaf4bb20,0xbb00cf0f,0xbb05366a,0xbb0a8d78,0xbaa3566b,0xb97241fe,0x39a4f98a,0xbc119b2a,0xbc12f7f3, -0xbc302308,0xbc2b9f8d,0xbc29459c,0xbc2e0346,0xbc2a587e,0xbc39b103,0xbc267a33,0xbc1b9ef9,0xbc144573,0xbc0e693a,0xbc0205e5,0xbc079ac1,0xbc00b69e,0xbbede46c,0xbbef0e67,0xbbe191e0,0xbbde4157,0xbbd9abc8,0xbbbcfff3,0xbbbb1e94,0xbba8ff36,0xbba4a4c7,0xbb99787a,0xbb89ffd1,0xbbb04cce, -0xbbb735ce,0xbbce2176,0xbbe696b3,0xbbdafadb,0xbbee7236,0xbbef2796,0xbbe00e37,0xbbfea165,0xbc0b62bc,0xbb7d3e87,0xbb6d5c8c,0xbb656397,0xbb5eb606,0xbb650399,0xbb2b53c1,0xbb27e83b,0xbb448554,0xbb6f413b,0xbb876d21,0xbb92027e,0xbb9ca451,0xbba5ecd6,0xbba75d05,0xbba1b485,0xbba4e56e, -0xbbaad4fc,0xbba7cf26,0xbba525d1,0xbba92e20,0xbba58db5,0xbba5755d,0xbba1625d,0xbba045d8,0xbb9b294a,0xbb91bcc0,0xbb99b82f,0xbb951841,0xbb9a8464,0xbb9c7ec1,0xbb9bbd39,0xbba7b0f0,0xbba380e6,0xbb9609d2,0xbb91a8d7,0xbb869185,0xbbefdcfd,0x3b06e7c3,0x3ac98459,0x3abc4972,0x3abff73e, -0x3aa5a3f5,0x3ab59085,0x3a1e32a0,0x3a084082,0x3a56ed4c,0x39b3c640,0x39990fce,0x3a014dba,0x3a2b5c27,0x3a501fe8,0x3a1fcaca,0x3aa1f59e,0x3ac6b424,0x3ae51a0c,0x3aba111f,0x3ab293f8,0x3a9379b6,0x3ab99e00,0x3ae476ce,0x3b166582,0x3b2edd67,0x3b278fc0,0x3af1d9d3,0x3ad9e708,0x3aae0373, -0x3aafdb0d,0x3ac24af1,0x3abf51c7,0x3a987869,0x3ac9c65c,0x3ad91886,0x3b034895,0x3ad1c7ff,0x3b1ee370,0x3aaab13a,0x3a3c7d9e,0x3a29067f,0x3b02c53e,0x395fd3e2,0xba38464e,0xba87387a,0xbb61a22d,0xbb7264a5,0xbb269d2c,0xbaf82918,0xba66e0b5,0xba2e6ffe,0x3af4c963,0x3b19b27f,0x3b184314, -0x3afefea0,0x3a91c326,0x39a420a0,0x3a9957c0,0x3b18a284,0x3b9a614a,0x3b9b80f1,0x3b97b74f,0x3b7e17db,0x3b6045cb,0x3b70cd11,0x3b88b665,0x3b1b3ecb,0x3aae4d7c,0x3ab4d79a,0x3b623cee,0x3b9883a1,0x3bc4cb89,0x3b822060,0x3b597995,0x3b0d5518,0x3aa5194f,0x39b0c6ee,0x3abdbd9a,0xbb0a9260, -0xbb5a0337,0xbb3d8b3c,0xbbce3768,0xbbe37aeb,0xbb9ab456,0xbb866e95,0xbb2383f1,0xbb35700d,0x3b004548,0x3b42a881,0x3b4481d2,0x3b16c2bb,0x3ac830fa,0x3a02005e,0x3af281e5,0x3b86d985,0x3c02ec1b,0x3c1a1ef9,0x3c140460,0x3bae5eca,0x3ba98bfa,0x3b5c500b,0x3b82b016,0x3b388c55,0x3b32e6a2, -0x3abb859d,0x3ba24f60,0x3bc4156e,0x3bfbf556,0x3b9ed367,0x3b87439b,0x3a3cd40b,0xbad7e209,0xbad240c7,0x3b4c2703,0xbb311718,0xbbb886f7,0xbba6c6d1,0xbc5ee357,0xbc805e0f,0xbc1d9b66,0xbc0f0697,0xbb7eb80b,0xbb88a499,0x3b5e304b,0x3b7099ef,0x3b7929fb,0x3b4dda8e,0x39f257a7,0xbad69b7f, -0x3aab704a,0x3b84ac24,0x3c32e313,0x3c5123bd,0x3c580180,0x3bfc8c78,0x3bfbc3cd,0x3bf67703,0x3c2bdabe,0x3b3d74ea,0x3aeb9082,0x3acde0c5,0x3c0917d6,0x3c372477,0x3c6c03b9,0x3c0d5649,0x3b8cd90d,0x3b4b2989,0x3a851003,0xba9e70de,0x3b70e34d,0xbbddcf42,0xbc283ac0,0xbba40d71,0xbc5b074d, -0xbc6f4e72,0xbbf7c007,0xbbc23459,0xbb2fd0a0,0xb9d63d3d,0x3b92a608,0x3bd71369,0x3bd80891,0x3b76a2e5,0x3b325739,0x398b17e3,0x3b6b6449,0x3bf91e5c,0x3c82196f,0x3c97bcb9,0x3c8fbe2f,0x3c176ce9,0x3c0a174f,0x3b9fab36,0x3ba1135e,0x3b94271c,0x3b75478b,0x3b331754,0x3c244504,0x3c444d76, -0x3c593483,0x3c063a73,0x3bfc82c7,0x390465d0,0xbb395381,0xbaff0c16,0x3a935a66,0x3c3e1168,0x3c85faf1,0x3c839734,0x3c03ad86,0xbb088766,0xbb4f0e3e,0xbb964c2a,0xbb70dee5,0x3c1e4d78,0xbc1a6986,0xbc4d6f2b,0xbc3e942d,0xbc1c38db,0xbbc20a03,0xbbf07698,0xbc17b45f,0xbc2190b2,0xbc94e8a9, -0xbc98e48e,0xbc36bfa2,0xbc353afa,0x3c962c41,0x3cd063bd,0x3c619523,0x3c090a29,0xbae4a93c,0xbc588f45,0xbbd9eb69,0xbb3a8eaf,0xbb7d3aba,0x3bdfefc8,0xbb5ed779,0x3bc6e0ab,0x3cdb7a85,0x3ca14a0a,0x3ac6805a,0xbc8d32ed,0xbcbac377,0xbc3c8572,0xbbc139b6,0xb9556343,0xba7d2502,0xba8074c7, -0xbb82f287,0xbb8c3d28,0xb9f2331c,0x3b4ef059,0x3b3b361c,0x3ba4301d,0x3bbf7592,0x3c3383d9,0x3ba11e6d,0x3bcc9912,0x3c14cdb5,0x3c8249aa,0x3c652478,0x3abe630d,0xbc163955,0xbc79f45f,0xbcc8cbbb,0x3a4f6e69,0x3c3b199d,0x3be71899,0x3ab8955f,0xbc28bec0,0xbcb60aba,0xbc341b73,0xbc4998ab, -0xbcd0564b,0xbd07e814,0xbca6fc18,0x3b6d459e,0xbc5999ee,0xbc924b68,0xbb9169cf,0xba442667,0x3a280680,0x38b1fbd3,0x3a142459,0xba1f685f,0xbb9a0a9c,0xbb45ea16,0xbb104c51,0xbb68eb1b,0x3abd89de,0x3b6aa2cb,0x3b87afc0,0x3a9dff72,0xbaa99def,0xbb713591,0xbb220f72,0xbb76c84f,0xbba8e9b5, -0xbbc9465c,0xbbc39974,0x3c0970f1,0xbbe53647,0xbc45a637,0xbb8561a8,0x3a830d18,0x3b83b5ef,0x3b007492,0xbb92c8aa,0xbbe4a6de,0xbccc2120,0xbcc864da,0xbc784adc,0x3c2f6f2e,0xbb2ee8ce,0xba181623,0x3b01e19c,0xbad56e75,0xba6c1dcc,0xb92e76fd,0xb9305686,0xba19e663,0xbb1434f8,0xbb2579dd, -0xbb2dc481,0xba0a2738,0x3a920b66,0x3af1ae1c,0xb921c9eb,0x3a9a35af,0xba23f502,0xbae26c7e,0xbbaef9d2,0xbbcc9fe6,0xbbefedce,0xbad41384,0x3aad843a,0x3c8dc672,0xbc2986a5,0xbca2f602,0xbc502969,0x3aa3904e,0x3c4b72d8,0x3ca12b1c,0x3b9fcd33,0x3888744f,0xbb436c05,0x3cb77223,0x3cafa78f, -0x3c60214d,0x3b91435a,0x3baab977,0x3bf48f15,0x3b0e6549,0x39fc00a4,0x3a20f2ca,0xba517dc3,0xba5c4cca,0xbb0eaa38,0x3a88ed80,0x3b5b51b8,0x3bb57517,0x3b3f1794,0x3aca7444,0x3a85315f,0x3ac7dfd3,0x3b883338,0x3c01c48e,0x3c099135,0x3bd97745,0x3af00a1d,0x3acdf722,0xba8c23ae,0xbbf62d3e, -0x3a83515a,0x3b55f259,0x3a4e3b16,0x3aeaa5f0,0x3b1ea8e5,0x3c35c4ce,0x3a3e4ce5,0x3bed80b8,0x3b8f4404,0xbbf5d46e,0xbbfa1ce0,0xbba43755,0xb99da654,0xb91d24e8,0xb827de7d,0xba8b1150,0xbb4c14b0,0xbb348cd9,0xbb61a844,0xbace1e97,0xbacddb6f,0xba271a37,0xbaef9631,0xbbda305e,0xbc138915, -0xbc23e9a3,0xbc1b6c62,0xbc0cf211,0xbc04b09e,0xbb9fd465,0xba08bc3f,0x3b771aca,0x3bbd34e9,0x3c182aa7,0x3c29dd5c,0x3c44c99a,0x3ba99e1e,0xba42c886,0xbb367e13,0xbb74697c,0xbb681e4c,0xbb7e2cf7,0x3bb283fb,0xbc16bb1f,0xbbc67808,0xbb14369a,0xbad48211,0xba7240cc,0xbac72eee,0xba60084b, -0xba08011b,0x38cdb735,0x392f34a5,0x392d4e73,0x3b47ee19,0x3b75d7c2,0x3b30899c,0x39d8c5ce,0xbaec596a,0xbb66e65c,0xbbad5852,0xbbb601f6,0xbb9263b1,0xbb3db0af,0xba1766ef,0x392cf18f,0x3ba5850b,0x3bfce220,0x3c25c7f5,0x3c5c93e8,0x3c6ec0ac,0x3c6c07cb,0x3c7cf3d0,0x3c7823d0,0x3c60f793, -0x3c27c9cb,0x3bc42d1a,0x39994e02,0xbbabc2ce,0x3ba4b1f5,0x3bc153d4,0x3b8c70a0,0x3b9e5326,0x3bf2c7ca,0x3c0a11f7,0x3c0ad7b9,0x3bf9dbb9,0x3bef9419,0x3bed67b8,0x3bd26a9a,0x3bba2490,0x3b6b506e,0x3b13ce34,0xb972371c,0xbb2a9ef3,0xbbab66e6,0xbba0dc02,0xbb9be61f,0xbb87cced,0xbb6cf1f6, -0xbb44f7a5,0xbb4c13a5,0xba31f3f3,0x3ab267c4,0x3b3f8b1d,0x3bc6092a,0x3c166dce,0x3c4ecc7d,0x3c3f5ab5,0x3c2ef876,0x3c379466,0x3c1b4ccb,0x3bf3cf76,0x3bbef141,0x3bbcc2ac,0x3be9792e,0x3bdeea35,0x3bfac81c,0x3c08ce41,0x3c08db1e,0x3bfc8fad,0x3bff8048,0x3c0a5b7d,0x3be7502d,0x3baee2c2, -0x3b9aec3a,0x3b03c49b,0xb97cc74b,0xbae37b99,0xbb4340c5,0xbb58d0f9,0xbba34bcd,0xbb917069,0xbb892e0f,0xbb8e459d,0xbb95583b,0xbb9a181e,0xbba3e10c,0xbb99737f,0xbb9b5b49,0xbb8e93b8,0xbb24d7c3,0xbacabebb,0x39f9f621,0x3a1bab8a,0x3a987c5a,0x3abfbff2,0x3af80414,0x3b7c95bd,0x3bbc3834, -0x3bcfb942,0xbbbe3bbc,0xbba43e72,0xbbda9c72,0xbbd5c95b,0xbbd9abf1,0xbbc17e07,0xbbba676f,0xbbc0e12e,0xbbd7d540,0xbbe66cc7,0xbc009894,0xbc043b95,0xbc037e40,0xbc13150f,0xbc02f77c,0xbbec3be8,0xbbe6a95a,0xbbd997ae,0xbbdd565d,0xbbcbf37d,0xbbb1ff87,0xbbabd734,0xbb983c56,0xbb906b88, -0xbb76db2e,0xbb482633,0xbb906a0e,0xbb8f66ee,0xbba3f247,0xbbb26cc3,0xbba3ab69,0xbba702ab,0xbb9b9771,0xbbae44b9,0xbbc27ed5,0xbbc29f1f,0xbb01813e,0xbaeaec16,0xbafb5052,0xbafa8aa7,0xbb0f5a4d,0xbab15781,0xbacb1494,0xbadc9e56,0xbb154354,0xbb2f2e73,0xbb485eff,0xbb6724ee,0xbb85c324, -0xbb932355,0xbb867ed2,0xbb88d0c5,0xbb94fc8b,0xbb8b8a88,0xbb8528b1,0xbb866272,0xbb88d9c0,0xbb8d327d,0xbb8edda0,0xbb9447e9,0xbb962f91,0xbb9139fd,0xbb93a2ff,0xbb847343,0xbb8274a1,0xbb771b6c,0xbb687574,0xbb6e612d,0xbb5bbd6f,0xbb3d8484,0xbb189e25,0xbafc82a6,0xbbd705ae,0x3ac92a4f, -0x3aa3c50d,0x3a9eab86,0x3a94c7aa,0x3a70c27c,0x3a1c07fc,0x39e3b338,0x39b49d64,0x3904b8ae,0x39a63645,0x39d6ef29,0x39aca2fd,0x3a14d2db,0x3a17e788,0x39353a66,0x3a57996d,0x3a8d43d1,0x3a9f2e29,0x3a938dce,0x3a996204,0x3a8ff87e,0x3ab1f38d,0x3acfc3e1,0x3afb62d0,0x3b12c298,0x3b072186, -0x3aa10451,0x3a9da0d9,0x3a875f14,0x3ab403cc,0x3a9c1acb,0x3a83e28b,0x3a33aa55,0x3aa5429a,0x3ab4338f,0x3acffb71,0x3aa81893,0x3abf833f,0x3aa4f241,0x3a4de3d7,0x39a8a5ca,0x3890c998,0x39eaa302,0xb9e36add,0xbb2f0856,0xbb455300,0xbb5d298c,0xbb554bc2,0xbb21abd0,0xbabe643a,0xbadfd1b8, -0x3a69fcc0,0x3aa204fb,0x3a8cf1b1,0x3acf0027,0x3aafffb6,0x3a711d2e,0x3ac4e5d7,0x3b1aa559,0x3b8739c7,0x3b890716,0x3b7fc95b,0x3b39bca5,0x3b3ffd4a,0x3b6204b9,0x3b919521,0x3aae32e1,0x39363175,0x3a487226,0x3b635c4f,0x3b9716d5,0x3ba9191d,0x3b366739,0x3b2427aa,0x3b15fa99,0x3a86db4d, -0x36ac3b09,0xbad22325,0xbad20f0d,0xbb18c0e2,0xbbb4d738,0xbba0cceb,0xbbabaade,0xbbabd7ae,0xbb58f3fb,0xbb30ad52,0xbb8cf4bc,0x3a3e7de4,0x3ac6b6f6,0x3a84c8b7,0x3b00a44b,0x3b01ad8e,0x3afe694f,0x3b4573e5,0x3b9ab7b7,0x3beb58ee,0x3c0a8b49,0x3bf906d0,0x3b5dc582,0x3b88dbc7,0x3b411b74, -0x3bb247ce,0x3af12976,0x3aac7654,0x39633361,0x3b9cdfc8,0x3bbf136b,0x3bcda3af,0x3b7db22e,0x3af87f10,0x3ad6c607,0xba5f620e,0xbac71078,0xbadcdeef,0xbaca8ba4,0xbb7e976b,0xbc1a4d41,0xbc4d5205,0xbc7a8cda,0xbc388b2d,0xbc23f09a,0xbbb79ba8,0xbbec7554,0x3ac3f375,0x3a8faf54,0x39912b1c, -0x3b389821,0x3adb7800,0x3a729608,0x3b3d31de,0x3b9f3b2c,0x3c235452,0x3c3d1698,0x3c3a4709,0x3bb1602d,0x3bea1782,0x3bf25f6c,0x3c460c41,0x3a343fd2,0xb9da8aed,0x3a038e78,0x3c100aa6,0x3c3c5abf,0x3c4a1230,0x3bc4d4f4,0x3b3ccfda,0x3b4d2adb,0x39ccc3df,0xbaf0b3fc,0xbb2951d5,0xbb9757d5, -0xbc0ffebf,0xbc162013,0xbc4ecacb,0xbc5b3b41,0xbba82a15,0xbbb8b27a,0xbb8c0548,0xbb953709,0x3b3994a9,0x3b881020,0x3b18ae25,0x3b6d885b,0x3b9686b7,0x3b709532,0x3bdd322d,0x3c1cb848,0x3c70ff68,0x3c8b6abb,0x3c6d96c7,0x3bbd2bce,0x3bc9cb8b,0x3ba312e3,0x3c0b5db3,0x3b56076d,0x3ab127e7, -0x393f00de,0x3c1bc063,0x3c3ad8a3,0x3c26e260,0x3bc7b899,0x3c81fd9c,0x3c0b9722,0x3c06a6cb,0x3c0133b9,0x3b9e08d7,0x3c6a1174,0x3c9aebf0,0x3c8ffc5a,0x3c3c4910,0x3a6f4d7b,0xba1c8898,0xbb1fea2d,0xbb136b19,0x3c04e6f6,0xbbdfb902,0xbc1b82ad,0xbc851aac,0xbc837124,0xbc854bda,0xbc9584a3, -0xbc9b72f1,0xbc904dfe,0xbcc8225c,0xbca02e96,0xbc2432e9,0xbbd0dafa,0x3c71cbe1,0x3c833d1f,0x3b80e1db,0x3a336285,0xbb840bd3,0xbc006a0e,0xbaa060ef,0x3b0d3d12,0xba0ce6a6,0x3c65eba3,0xbaeaca9d,0x3a31763e,0x3c760fba,0x3c51b56a,0x3c17734e,0xbc6b0f37,0xbcb07e17,0xbc2c0123,0xbbd7bf81, -0xba77c9e8,0xb95d6937,0x395c0b45,0xbb40147f,0xbb9ffb8d,0x3a26d67d,0x3b6123f1,0x3b7a5334,0x3b5551c8,0x3b9f1b30,0x3c31266c,0x3c0cd1b2,0x3c31d47c,0x3c332192,0x3c8187aa,0x3c1caa2d,0xbbc2c3b0,0xbc6cf8e8,0xbc8b1a4a,0xbc848bc8,0x3bbc6c73,0x3c49f3a1,0x3b6e7fe4,0xbbd9b049,0xbc85dc19, -0xbca67af9,0xbc0005fd,0xbc96a9f1,0xbc80d774,0xbcb4d2ae,0xbc72945a,0xbb1ae7d4,0xbc0f5e14,0xbc461a25,0xbc030a8e,0xb986eb0e,0x3a87e818,0xb966add7,0x39f975f2,0x39597aa1,0xbb39be96,0xbb34fe26,0xbb2e5336,0xbb8e8b63,0xbaa7eb72,0xba5fe308,0x39b3ef89,0xb827bbf8,0xba8f077d,0xbb86ae84, -0xbb02c3f6,0xbb7cd43e,0xbbf994c4,0xbb6543ad,0xbb289230,0x3bca8590,0xbbf55570,0xbc381fd0,0x3a84a024,0x3a3bef0c,0x3b2caff6,0x3c5b9ae2,0xbc48efdd,0xbbbb5a90,0xbc15e964,0xbc814146,0xbc3c70af,0xba43eb1a,0xb98867db,0xb9c031c3,0xbb2d0451,0xba7eabf6,0xb9a1605c,0xb90664b9,0x36c17063, -0xb97735ca,0xba74878f,0xbb1a0b03,0xbb409e3f,0xbaa638a9,0x398066ce,0x3a0cf4fc,0xbb1155a4,0xb88ffdd3,0xbab5d2eb,0xbb67d531,0xbbb04de5,0xbbbd3c16,0xbbf62319,0x3b177fae,0x3b8834ee,0x3c567fbf,0xbc6a926f,0xbc9828fa,0xbb40185f,0x3c1e553b,0x3c9b9a33,0x3cd34c09,0x3b374c67,0x3c066bcf, -0xbba04e93,0x3b51a50f,0x3bd5a393,0x3c216334,0xba519829,0xba82f464,0x3ba77a3f,0x3ac440bd,0x39be0ed8,0x390a1df4,0x395400ce,0xba69290b,0xbb18ac50,0x3a402edd,0x3b5c51d4,0x3bd78bee,0x3b8a8f75,0x3b833f6b,0x3b85abe6,0x3b980f33,0x3bce7c0e,0x3bdebf7e,0x3c0855d7,0x3bb20458,0x397d1735, -0xba80e789,0xbb295721,0xbb68532b,0x3aa55b77,0x3b82ef67,0x3b0436f1,0x3c3ea4b4,0x3c5563f9,0x3c269df1,0x3c2c68b6,0x3bee7bb6,0x3c136b05,0x3a8868b4,0xba76c4d4,0xbaf98301,0x3aeb7ba9,0x3a8fdd74,0xbb22fd8e,0xba571335,0xba92bda8,0xb6369583,0xbace28c2,0xba6eb305,0xba13380b,0x3a0fee29, -0x39455103,0xbb0fb04f,0xbba28d02,0xbbdb552b,0xbbf4bc7d,0xbbc73d12,0xbbc98353,0xbb882ad1,0xba930063,0x3af8f9ca,0x3b89f6c8,0x3bb136ce,0x3baee7ed,0x3bb23908,0xbb0d2092,0xbbb3fe0a,0xbbd5b8e3,0xbbf831a9,0xbbb34db4,0xbb0a45ff,0x3be1a76c,0xbc273bc7,0xbc3a6bf6,0xbc07549c,0xbbc7cdbb, -0xbb8797d3,0xbb7b7b10,0xbb3051fc,0xbad27b05,0xba8231d4,0xbaeabed8,0xbb036c7c,0xba1343d9,0x3ab7f1b6,0x3b2f169c,0x3aeefb8c,0x3712b95f,0xbad46b7f,0xbba7928d,0xbbd015e7,0xbbb32fd4,0xbb53cdac,0xb99eac30,0x3acc4e5a,0x3bd526ac,0x3c1885cd,0x3c3e2c43,0x3c671715,0x3c74ea59,0x3c73eb89, -0x3c5d840c,0x3c29c9ee,0x3ba9d35e,0x3b371d89,0xb86f5fb3,0xbb98af7b,0xbbe19b0e,0x3a82f15d,0x3b5fc415,0x3b4eb86d,0x3b6040f5,0x3bb7f318,0x3bcff553,0x3bd53b63,0x3b9e4e62,0x3baacb00,0x3bba21de,0x3bc92fd1,0x3bbc9aef,0x3ba51b29,0x3ba3bded,0x3b1687a1,0xb915ec10,0xbb6a974e,0xbb7a2b19, -0xbb89deb5,0xbb8a373d,0xbb733a38,0xbb3b5f2a,0xbb1a6c46,0xb9906992,0x3ac0a0d0,0x3b3588fe,0x3bbc57b8,0x3c09baee,0x3c37926c,0x3c2741d1,0x3c1630ab,0x3c0cd07f,0x3bc83458,0x3b8bf224,0x3b58b8db,0x3afdd3a8,0x3c18adf3,0x3c0da6b8,0x3c0f5054,0x3c084876,0x3c020bd3,0x3be389de,0x3bc91edd, -0x3bc74bcb,0x3bd96b42,0x3bc8b9d1,0x3beab3c1,0x3b9043ab,0x3b47390d,0x3aef248a,0xb9fd717c,0xba9dfa80,0xbb55cbcb,0xbb3600c5,0xbb160efd,0xbb3985cc,0xbb440459,0xbb620c18,0xbb7c73bf,0xbb815f75,0xbb8da4ac,0xbb91369c,0xbb052f58,0xba4a8756,0x3ad24c94,0x3b2b6b5a,0x3b89690e,0x3bb5e242, -0x3bd25bd9,0x3bff044f,0x3c0e3e2a,0x3c139574,0xba2de294,0x3a0b96cb,0xba478dd2,0xba1e3fdf,0xba924b56,0xb9170f1e,0xb86d4d2f,0xba1e735e,0xbb0e79af,0xbb740b65,0xbbae53ad,0xbbbbe20b,0xbbc52643,0xbbe57b90,0xbbc872c5,0xbbb8d900,0xbbba278b,0xbbbbe46c,0xbbd59871,0xbbc9c32e,0xbbb6d2ee, -0xbbaadfcf,0xbb96ed0f,0xbb8e446b,0xbb6be754,0xbb379594,0xbb66c4fb,0xbb3706be,0xbb3f3177,0xbb3c0591,0xbb266422,0xbb195d8a,0xbaee8005,0xbb2b8f4a,0xbb03db33,0xba948fbf,0xb9f206e2,0xb93ddf6e,0xba16ccc9,0xba654ecd,0xbaad6fb0,0xba49cc8e,0xba9b61fc,0xbaa99be1,0xbacf652a,0xbacd12ea, -0xbae2dab5,0xbb0e0aeb,0xbb37b483,0xbb56db85,0xbb3462d4,0xbb3f6e6f,0xbb674a5b,0xbb4fe5b7,0xbb43147c,0xbb4b1e0c,0xbb535777,0xbb622b4e,0xbb6e0e02,0xbb7e7962,0xbb847506,0xbb83d0c8,0xbb81db18,0xbb5c0add,0xbb4bf406,0xbb2bbf59,0xbb07b6de,0xbad51ad4,0xbaa18f2f,0xba8d5c98,0xba0b20ce, -0xb98e515f,0xbbb57ff9,0x3a6884db,0x3a5fbdf6,0x3a6b250f,0x3a27f2fd,0x39ea56bf,0x37e1c96a,0x3987dd98,0x39229d91,0xba04df9c,0x39267d92,0x399a8c07,0xb90a7449,0x39ab0184,0x399a2412,0xb95b50ea,0x39965a3c,0x3a023cb7,0x3a39233b,0x3a2e19f6,0x3a43ee30,0x3a6699df,0x3a8f71a3,0x3aa23324, -0x3ab7eae2,0x3ad2463d,0x3ab70079,0x3a1eab02,0x3a219757,0x3a1cc6e1,0x3aa19029,0x3a53bb41,0x3a070f23,0x39449f9d,0x3a61967a,0x3a746c23,0x3a7bbe22,0x3a580a18,0x3a1f09a7,0x3a81d1b4,0x39e52ba3,0xb93ebaae,0xba99ff90,0x39effc1e,0xb9a2cc7c,0xbb717de5,0xbb0b28c9,0xbb2c7f51,0xbb72705e, -0xbb243c1d,0xbad7032d,0xbb170157,0xb9a01b81,0xb88bd04a,0x39877713,0x3a58be2e,0x3a8ee731,0x3aa471ae,0x3acc59e6,0x3b0f0ad0,0x3b603b18,0x3b5fce68,0x3b455379,0x3af72d13,0x3b02f937,0x3b2f28e3,0x3b898727,0x39e78ec8,0xba3d0b32,0xb8bd9b40,0x3b3e3942,0x3b80038b,0x3b70b0fb,0x3ad96fb9, -0x3ae22ed3,0x3b1437d1,0x3996e8c4,0xba21b877,0xbb4ae753,0xba7a55ca,0xbaa74282,0xbbe484b1,0xbb642743,0xbb6a343f,0xbbcca74a,0xbb1ea8ac,0xbb25a16d,0xbba01320,0xba502d43,0xb9b74249,0xb8d52c0c,0x3a751a5d,0x3acbdf6e,0x3b33a147,0x3b623db8,0x3b9a0776,0x3bc4e399,0x3bdecd33,0x3bb78a24, -0x3adfd700,0x3b185b3e,0x3aed7b79,0x3bca3108,0x3a7f5e13,0x390e073d,0xba514bf8,0x3b84a9ba,0x3b9f48c5,0x3b860102,0x3b2ceb7e,0x39926858,0x3b050df8,0xba56da97,0xbaf423ab,0xbb96e663,0xba1621cd,0xbb15efa9,0xbc4974d1,0xbc1f04ef,0xbc4bfd6a,0xbc54b561,0xbc139875,0xbbc10b25,0xbc0dd57d, -0xba81b892,0xbae6b474,0xbad95a97,0x3aaf9344,0x3aec074c,0x3b39849b,0x3b755746,0x3bacd811,0x3c0e1a61,0x3c20bc12,0x3c170053,0x3b597f68,0x3bad23a6,0x3bc0643a,0x3c4789aa,0xba55e07e,0xbaf27df9,0xba801193,0x3c00e68a,0x3c272005,0x3c0f5a39,0x3b758f48,0x3b088cb8,0x3b51ef1c,0xba50dd6f, -0xbb2f1956,0xbbd1ef13,0xbb0e46d9,0xbbc53372,0xbc3521f3,0xbc07a8f6,0xbc0f1d4c,0xbb0ba9df,0xbb2ae873,0xbb44669b,0xbbd20713,0x39d8bad0,0x3a6170b9,0xba88335a,0x3b10c2b0,0x3b897692,0x3bbf281d,0x3c03c53a,0x3c25060d,0x3c4e4b0f,0x3c63000c,0x3c2a57ef,0x3b220435,0x3ae3bf0c,0x3b55db54, -0x3c317d7c,0x3b0bca74,0xba1ce804,0xbab69a70,0x3c05826b,0x3c1b2a04,0x3bc29dd7,0x3b7238cb,0x3c9c6132,0x3c5b6462,0x3c67bc3e,0x3c58b824,0x3c0cd911,0x3c7a7c57,0x3c89cec7,0x3c571a4a,0x3c320295,0x3b35592c,0x3a949648,0xb91b5f62,0x36868378,0x3b9719d3,0xbac79246,0xbb5485a8,0xbc8beb46, -0xbc8e95d7,0xbca43a5d,0xbcac5084,0xbcbbbd67,0xbcac748f,0xbcca5ac3,0xbc8cfc1b,0xbbd7c876,0x3b6af2e6,0x3c460c02,0x3bff0e24,0xbb66d483,0xbb90322d,0xbb97b3a0,0xba492f98,0x3a52cc7e,0x3ba0ef1d,0x3bd367e2,0x3c9645ed,0x3755de75,0xb9342f3a,0x3b9541bb,0x3bb09f88,0x3c54e925,0xbc1cc462, -0xbc7dffc2,0xbc067946,0xbba3cfa7,0xbad76e53,0xb9de5df1,0x395f1515,0xba855518,0xbb856690,0x39d36fe5,0x3b1d5f0c,0x3b4b999c,0x3a926b90,0x3b46b857,0x3c0a218a,0x3c268726,0x3c4dd8ae,0x3c3077ea,0x3c263d2d,0x3b1656ac,0xbc1b9de8,0xbc9492ba,0xbc8a7a73,0xbbd98692,0x3c0ccfa1,0x3c37dafe, -0x3b45bdab,0xbc27ae0d,0xbc9719d0,0xbc961452,0xbbc2886a,0xbc94d960,0xbc0f3ae7,0xbc645d38,0xbc2c2b34,0xbc174386,0xbb5866bd,0xbb90961c,0xbbc326b5,0x3b0df3bc,0x39d378b8,0x3972ff73,0xb90f0a87,0x3a2b866e,0xba36d751,0xbafde0af,0xbb1d8b91,0xbb923e24,0xbb3bde35,0xbb6be2ac,0xbafa9953, -0xba44c64c,0xba773fe7,0xbb52aa6e,0xbb134b6b,0xbb7de452,0xbbe70672,0x39fee574,0x3aa1d4b6,0x3aa56365,0xbbe8c898,0xbc0c951f,0x3ba1eec6,0x3ad782b0,0x3b20985f,0x3ca81ac3,0xbc4f1950,0xbb23f6c9,0x3c1c9ffb,0xbc202c79,0xbc3b8fb2,0xbc707145,0x3ad74d07,0x3a72638e,0xbb6ce6b6,0x395ca393, -0xba3925fe,0x39e279f9,0xb8bef457,0xb7684330,0x39dc86a8,0xba9b2d89,0xbb105145,0xbabaea33,0x39a27e94,0x38893647,0xbb100d77,0xba6d4223,0xbb0cc5ef,0xbb8945ab,0xbb99bae9,0xbb838e7d,0xbba9a26c,0x3beed330,0x3bd7a0f1,0x3b89ddb1,0xbc7c9154,0xbc657a16,0x3c05156b,0x3c622854,0x3c964913, -0x3cb9d8ca,0x3a31a484,0x3c6a0279,0x3c56c751,0xbc341efb,0xbc5e8b56,0xbb59bf89,0xbb94c838,0xbb27fff5,0x3a89f303,0x3a09c6d2,0xb84def31,0xb9f8fcfe,0xb846221c,0xb980a4b9,0xbaa7ab26,0x39a50bae,0x3b11ef54,0x3bda784b,0x3b9fa81f,0x3bb64ea2,0x3bd15517,0x3bcab988,0x3bd526be,0x3b8f66bb, -0x3b9cc7e4,0x3b3bb224,0x38861a83,0xbb726838,0xbb9d728a,0xbb026ff8,0x389c418d,0x3bab8eea,0x3c1ac074,0x3c7eace1,0x3c456b57,0xbb0a7915,0x3c303b7b,0x3bad8722,0x3bfb2f94,0x3c16034d,0x3c1c6fe6,0x3b6ad413,0x3b3164e7,0x395eeac4,0xbb1db9b9,0x374421bf,0x39598b57,0x3a874d11,0x39dd39af, -0x38ef57b9,0x3927a0cd,0x3a98e5dc,0x3afd8100,0x3adbf4b2,0xb8cf292f,0xbb06a728,0xbb8d5770,0xbb4432be,0xbb566295,0xba98bb7f,0xb9e00dcb,0x3a0b47cf,0x3b10fa04,0x3abe65d8,0x39bf5747,0xbada1f4c,0xbc09deac,0xbc2196a0,0xbc33c689,0xbc25eeb8,0xbb9406dd,0x3aa95c15,0x3bf3b894,0xbbb6b4fd, -0xbc0c0534,0xbc10a16b,0xbc049f13,0xbbb91b00,0xbba00b22,0xbb68d636,0xbb117a4f,0xbaa0ab59,0xbad7977b,0xbb00fd86,0xbb0e9aa7,0xba3e0ab4,0x3a8702cb,0x3affb829,0x3a890225,0xb810bdf5,0xbb7fde21,0xbbbdf0f1,0xbba045f4,0xbb64679d,0xbaaefb79,0x3a29d0ff,0x3ba9ed0d,0x3c017b1c,0x3c20f428, -0x3c2e05fe,0x3c2d099f,0x3c248555,0x3c0227c4,0x3b876d87,0xbb113450,0xbb83e804,0xbbc37819,0xbbfe16c3,0xbbb0f7f5,0xbb8184d3,0xbb135371,0xba7552da,0x38e8236d,0x3ae24e33,0x3b0347d8,0x3b1f1ac8,0x3a154c60,0x3af45798,0x3b283b5c,0x3b83d1f8,0x3b7e5521,0x3b9521d1,0x3bb2fffe,0x3b63aa43, -0x3ac24509,0xbabef483,0xbb1d4649,0xbb59b348,0xbb8a0561,0xbb7bca65,0xbb3dd2c4,0xbb092bdf,0xb9047e9a,0x3ab8458a,0x3b301e11,0x3b9fa01b,0x3bd91cef,0x3c04bea3,0x3bdb6c7b,0x3ba4b36b,0x3b48f50a,0xb7bda4f2,0xbaa95a76,0xbadb5164,0xbb3f2410,0x3bc223e2,0x3bbf9380,0x3bc1c3dd,0x3b9cfff7, -0x3b9277c1,0x3b7befbd,0x3b431901,0x3b3e9947,0x3b9b31b0,0x3bb1a6cb,0x3bf8281d,0x3bb4afca,0x3bad48b8,0x3b9c091e,0x3af5ddba,0x3a85e18e,0xba6585ca,0xba802e67,0xba70d77f,0xbb06c214,0xbaeba752,0xbb123e38,0xbb1f4a7f,0xbb2dcd74,0xbb403c36,0xbb4af925,0xba55905e,0x39def627,0x3b31c7aa, -0x3b6b951c,0x3bad25d0,0x3bdf4f5c,0x3bf07619,0x3be1afa1,0x3bb4445b,0x3bbb54fc,0x3b76f6cc,0x3b91c554,0x3b875193,0x3b92b133,0x3b82e568,0x3ba15901,0x3b9eea8b,0x3b8635dc,0x3b222042,0x3a00f509,0xbaa2168e,0xbacd7d22,0xbb027b7f,0xbb2a54ae,0xbb1c2048,0xbb2fa3c5,0xbb5b4773,0xbb79d9e5, -0xbbb04829,0xbba66770,0xbb9d30e4,0xbb94bc81,0xbb86d5a2,0xbb8000de,0xbb5970bd,0xbb331714,0xbb367c18,0xbaebf495,0xbac8b9d5,0xba84459c,0xba3b245d,0xb9a2c1ce,0x398d479e,0x397e2326,0x3b0743e0,0x3b5cef08,0x389a149f,0x3a01e1a3,0x384ed76f,0xba017393,0xba836019,0xba324ecc,0xba8fce13, -0xba97ff8f,0xba922d42,0xba406863,0xba281957,0xba71911c,0xbabb81a6,0xbaeb91cc,0xbab1a184,0xbabed85d,0xbb22809b,0xbb0bbef8,0xbafe3e6e,0xbb05f503,0xbb0d4585,0xbb18d408,0xbb243e01,0xbb332160,0xbb3d2c7b,0xbb3f521a,0xbb34d9ce,0xbb0eccc3,0xbaf43281,0xbaad603f,0xba3f0094,0xb7cc237b, -0x398f2411,0x37d0f856,0x391757d6,0x3903050f,0xbb7df485,0x3a29a71e,0x3a31c174,0x3a52a9e4,0x39f822a5,0x39913aa2,0xb8dcaa31,0x39a44886,0x3936e73a,0xba3e3265,0x3914af64,0x3990d581,0xb9d29aee,0x38ebff74,0x38c456fd,0xb9835057,0xb7a6d0b2,0x392f3b46,0x3a03aa15,0x39d8985d,0x39fb5ee6, -0x3a36ab00,0x3a6825d2,0x3a82bb57,0x3a958696,0x3a92607d,0x3a6cf80b,0x39ac1196,0x3991a87f,0x39cf910a,0x3aa49fa3,0x3a2ea7f3,0x39a7a081,0x38858006,0x3a38b015,0x3a39c150,0x3a1470fc,0x3a1ea061,0x39e6ec25,0x3a84a4c0,0x3954abf6,0xb9c34e84,0xbaba4e46,0x3a01d7ba,0x36597fd5,0xbb5cfe5f, -0xba8d9603,0xbaddc156,0xbb555455,0xbb04dc79,0xbabcafcf,0xbafbebf9,0xbaa5b856,0xba86c96c,0x395aba56,0x398e92fb,0x3a54915f,0x3ab7194e,0x3ac96ab4,0x3b0856bb,0x3b4dc025,0x3b2ffe64,0x3b0ecc60,0x3ab4394b,0x3a920ff9,0x3aeb6536,0x3b7d040f,0x37b2f3f1,0xba80620e,0xb96bac3c,0x3b322a92, -0x3b695395,0x3b2dcd7b,0x3aa44f36,0x3abe2ed5,0x3b170ac1,0x379b1f5f,0xba3d9596,0xbb42365c,0xb943c6e7,0xb9a9203e,0xbbdcc179,0xbb074805,0xbb0068cf,0xbbd6394d,0xbb019e6d,0xbb23474a,0xbb87762e,0xbb0b36eb,0xbaf7e4a6,0x38142efd,0xb8449f8f,0x3a6f62ea,0x3b287ae2,0x3b51f9c3,0x3b892740, -0x3bab2abe,0x3b9e72ca,0x3b629efe,0x3a2f4e03,0x3a13557f,0x3a45166a,0x3bd6f110,0x3a06d3b7,0xb9b5ea1e,0xba3449aa,0x3b758595,0x3b8796b9,0x3b20718e,0x3b0274e2,0x390bc7cb,0x3b19eedc,0xba61d254,0xbb07c369,0xbbabfe8c,0x3874eb8d,0xba8fcc32,0xbc3a4145,0xbbce2410,0xbc0b1340,0xbc3cd0f2, -0xbbd35d3c,0xbba4842a,0xbbe98ff1,0xbb6dcc35,0xbb8fab6e,0xbac849ab,0xb9c837a9,0x3aa830e0,0x3b692440,0x3b743477,0x3baf2434,0x3c048511,0x3bf5c83c,0x3bd72f45,0x3aef1642,0x3b497e6f,0x3b6f6eaa,0x3c398ba2,0xbac7dd15,0xbb0cc34d,0xba6f6b33,0x3bf8a2a5,0x3c1a974c,0x3bc593ee,0x3b3d6fcb, -0x3af6200b,0x3b5060c9,0xba95bce2,0xbb37ca62,0xbbebe2b6,0xb9748f1c,0xbb458bdc,0xbc0fa675,0xbb5340ea,0xbb50e460,0x3a815102,0x39c52ac4,0xb99f0875,0xbba41188,0xbac466ca,0xbb14c599,0xbb11901e,0x392a9aad,0x3b1dc4ec,0x3bbe7c44,0x3beec521,0x3c150834,0x3c30df44,0x3c1d3483,0x3bbe3190, -0xb98f95c4,0xbb2382d4,0x3aaec0f5,0x3c4535fd,0x3aaff320,0xbac3ab0d,0xba5bce8a,0x3bf8b644,0x3bfd2757,0x3b3267be,0x3b0d4d44,0x3ca607e2,0x3c7529ab,0x3c71fb62,0x3c61990a,0x3c3c97c4,0x3c5cf32d,0x3c37933f,0x3bca66c2,0x3bc6cbdb,0x3a56b24b,0x3a10ca74,0xb9c3e16a,0x3a468535,0x3aa48937, -0x3b264b35,0x3b4ebd42,0xbc5f3f35,0xbc6b9ba1,0xbc90b1d5,0xbc9349bd,0xbcb0e2a7,0xbca225e2,0xbc9c1093,0xbc332542,0x39d2d7f0,0x3c8846b3,0x3c7b64f7,0x3bcf1b8a,0xbbea7e6d,0xbbae3c78,0xbb6a4ee9,0x3b872120,0x3a1934fa,0x3bdd6eca,0x3c803ab9,0x3cb5320f,0x3a211fdc,0x3aacd22d,0xba6bfa0d, -0x3a724d18,0x3c3f2d4d,0xbb9884ab,0xbc05d36c,0xbb8ead94,0xbaf193af,0xbaac8d76,0x392b36c1,0xb95797f8,0x392368be,0xbaee18b7,0xba317f24,0x3a63557c,0x3b158f12,0xba70f779,0x39d36370,0x3b96cb44,0x3c0c5f32,0x3c3591ab,0x3c1a2dc8,0x3b826240,0xbb53eb01,0xbc3996c1,0xbc9c4ad8,0xbc5fbb30, -0x3b713f74,0x3c1d2307,0x3c0f673d,0x3b790a43,0xbc48da11,0xbc9f28ff,0xbc71f14f,0xbbbae997,0xbc1b747c,0xb922f004,0xbbf0ca80,0xbbf9a81a,0xbc15e215,0xba658a9a,0xba7c25a5,0xb9dceb2f,0x3ad4eb18,0xb89e0831,0x396478f8,0xb9335e7e,0x38cc4184,0x39a24f37,0xba155b55,0xbaac137b,0xbb4db4fd, -0xbb26ad37,0xbb462d1e,0xbadd072d,0xba25e19e,0xba5a7835,0xbac12f4f,0xbb18ef9d,0xbb2fb8a6,0xbb31c199,0x3b942231,0x3b953b39,0xbad89fce,0xbbb85594,0xbb985637,0x3c0a3253,0x3bb13e32,0x3be2010f,0x3cab118a,0xbbaa155c,0x39a4b7cc,0x3cbd4867,0xbb877218,0xbc336b16,0xbc9fcf0e,0x3aca7df8, -0x3a45ce3d,0xba9b0328,0xb800aae5,0xb9bb0cf9,0x3995a228,0x38937547,0x37233b5a,0x39b6eb05,0xb7fe1df0,0xba5c3a40,0xba6b2d7b,0x3ae8ed57,0x3ae18aba,0x3a04d339,0xb9a226bc,0xbb159610,0xbb699327,0xbb83125c,0xbb0155c6,0x3a6d8360,0x3c39d927,0x3c0961d1,0xbb8c4b15,0xbc37ac32,0xbbc1439b, -0x3c94b60a,0x3c6a083b,0x3c6642ed,0x3c5d91e1,0xbad2f3fd,0x3bd657fe,0x3ccf9d05,0xbc74c26d,0xbcdb042c,0xbc93b221,0xbb9aef84,0xbaafcc85,0xb9b6fe23,0x39af90f1,0xb8dba628,0xb98fbe01,0xb9647ede,0xb9a4615a,0xb9a6e737,0xb95e6590,0x3a08a384,0x3ba96601,0x3bb21904,0x3bcf80b8,0x3bfe1707, -0x3bcc5284,0x3bb30086,0x3b0e331e,0x3a4b15e6,0xba210a4b,0xba8dc334,0xbbad509f,0xbbab45c1,0xbaced221,0x3b25ecca,0x3c1ce2ff,0x3c9b8c9c,0x3c1e9084,0xbb01e2d4,0xbc802559,0xbad2d2d7,0x3bf9ccb6,0x3c2c1957,0x3c9926f3,0x3cb6bc10,0x3c107c5f,0x3b65332f,0xba26ff94,0xba4643b6,0x39b90077, -0x39776544,0x3a14a121,0x3a320407,0x3a3dd39b,0x3994b225,0x3ab6e927,0x3b4a85f2,0x3b90e806,0x3ba34dc0,0x3b668e90,0x3a1ba849,0x3a75c850,0x394b243e,0x3b13cf91,0x3aee2660,0x3aacbad3,0x3b04cf0e,0xba0acf5f,0xbb1d9f3d,0xbba1be3a,0xbc2e09d4,0xbc34035a,0xbc45e323,0xbbfaba20,0x3984caa2, -0x3bb293cc,0x3c012730,0x39bbb89c,0xbad75489,0xbba163d4,0xbbdcf635,0xbbb719aa,0xbb970804,0xbb58bcf7,0xbb0c848b,0xba4b82ba,0xba51dd90,0xba91fe35,0xbad41291,0xbab180ec,0xb9cdfcd1,0x3a8f499e,0x3aab2ff3,0x3aa5d44f,0xbaff2d67,0xbb805327,0xbb3ca989,0xbb30d7e6,0xbafd74f5,0xba85d5bf, -0x3b203ba1,0x3b97159d,0x3bb9dd4a,0x3ba90fb7,0x3b9cec6b,0x3b8b408f,0x3b6a03ac,0x3aa86c22,0xbb7ab40b,0xbbb97504,0xbbf38ac4,0xbbbf8b95,0xbb0ef0bc,0xbba83ffe,0xbbb06461,0xbb5b81c7,0xbaf2f152,0xba2583ab,0xba91e0bc,0xba44b32b,0xbb0007ea,0xb9ab02c2,0x399aaa35,0x3ad58602,0x3ab707b7, -0x3b2e6bd3,0x3b6d772c,0x3b61c2ee,0x3b27bdd8,0x3a788865,0xb9fbdc88,0xbad8d870,0xbb597ebe,0xbb2aeda1,0xbae23d8d,0xba30346c,0x3a982508,0x3b2db263,0x3b867efb,0x3bab3f88,0x3bc42041,0x3bc2a687,0x3b8e615c,0x3b06227e,0xba0464b9,0xbb4133aa,0xbb6b89bc,0xbb895a9e,0xbb926a0e,0x3a90c83e, -0x3adfd105,0x3af6253e,0x3a9f5f73,0x3a9cbd63,0x3ab3107a,0x3a9fa1de,0x3abdb4ff,0x3b5b0240,0x3b91e4e7,0x3bd9079d,0x3bbe685c,0x3bcec207,0x3bd0ec54,0x3b801ad2,0x3b556309,0x3b056eb1,0x3ab24e69,0x3a02087e,0xba252c31,0x39b078a4,0x38fd1d1c,0x39d6d607,0x39f1820c,0x3a341cc3,0x3a76cdb3, -0x3b163f3d,0x3b4ab45f,0x3b993304,0x3b981db7,0x3bb270a0,0x3bc3504c,0x3baf77d5,0x3b569952,0x39b4d5e9,0x3a4dbe6c,0x3bdb1d33,0x3bd5862c,0x3bd5ffb6,0x3be78585,0x3bdcccf2,0x3be9a2b9,0x3bdd66fa,0x3bc596ca,0x3baac50b,0x3b8068b8,0x3b3bceab,0x3b3b8910,0x3b31f3f8,0x3b3b4d50,0x3b18e9ab, -0x3ac1d3a1,0x3999c0b1,0xb923c453,0xbb16e807,0xbad018e3,0xbadb99ad,0xbabeec4c,0xbaad6b27,0xba996d0f,0xba7849e9,0xba5e00a5,0xb954815a,0x3a034685,0x3a8099ca,0x3af14ca9,0x3b0d5bd4,0x3b3e5a2d,0x3b5e1506,0x3b888b63,0x3bc513fc,0x3bdf879a,0x3a918ebf,0x3acba42f,0x3a985e15,0x39f226ff, -0xb8bb0241,0x39f87482,0x39336d88,0xb693b481,0x396ffc36,0x3a31255e,0x3a6d81ce,0x3a5d7b84,0x3a14b981,0x39d8f716,0x3a704d9d,0x3a913ca9,0xb9ded841,0x38ccb588,0x39e1c1fb,0x3a016c00,0x39d04579,0x39c6a07d,0x399f6c63,0x39562020,0x3909fa36,0x38a69130,0x3994b250,0x3a1e1067,0x3a632b1d, -0x3a9d8bf8,0x3ac1dda6,0x3b0291d9,0x3afdef5e,0x3abdfd70,0x3a9670e0,0x3a7bd395,0x39980dd2,0xb93c159f,0x38e4ee2c,0x3967cfb8,0x380d6098,0xb733dad7,0xb968176e,0xb89719d3,0xb8269b82,0xba26e16b,0x388a8127,0x37c15715,0xba398a81,0xb9a48871,0xb91773fe,0xb8eff8fb,0xb9ed138b,0xb9df60ba, -0x39cbb047,0x37c9a6da,0xb8b48c88,0xb8826c68,0x392452be,0x3977bb92,0x39d5a7fa,0x38caf1fa,0xb8decf67,0xb9c4ffde,0xb9d7df3f,0xb93af50f,0x3a3a67a0,0x3822f84c,0xb9999b49,0xb9f1bf3b,0x38c07570,0x383d0c42,0xb9553dc0,0x36eb7434,0x3896c7da,0x3a1ac5b1,0xb823acb6,0xba43e8c5,0xbabfdd49, -0x382efc15,0xb9331ad3,0xbb38265d,0xba417de1,0xba87a6e4,0xbb10003d,0xbae05595,0xbaeb209c,0xbac297b1,0xbb095141,0xbb02b355,0x38fe8476,0xb9cf3dcc,0x397b2b7b,0x3a04cbbe,0x3a3897aa,0x3a9a6948,0x3b08ba02,0x3a88ce8b,0x3a0e4f88,0x393b9421,0xb8e61a52,0x39ed91e0,0x3b23a67c,0xba656120, -0xbac14a7a,0xba0cb3b9,0x3b067fc1,0x3b2f7206,0x3aacff26,0x3a24c36d,0x3a6b60d9,0x3ae678eb,0xb8433844,0xba53eec2,0xbb2b2b6a,0xb857d7b8,0xb70f42cd,0xbba63c4c,0xbaa13fe8,0xbad82bd9,0xbbc75061,0xbb4a0eb7,0xbb4dd06b,0xbb261677,0xbb5c539c,0xbb55e3de,0x39c1a9ea,0xba65ff8e,0x375e28d8, -0x3a7ec5ee,0x3ae951e5,0x3b20c97c,0x3b64a03b,0x3ad52d86,0x39876f2b,0xba886ac9,0xba92171b,0xb9b95300,0x3badebf3,0xba10918e,0xbaa5571c,0xba587e43,0x3b360084,0x3b3781c2,0x3a2cf7b0,0x3a9a9409,0x39b75dc6,0x3b15c7fb,0xba27904e,0xbb0ea990,0xbb98a629,0x3922c7ce,0xba0b97b1,0xbbf6310c, -0xbb65d3ef,0xbb86ea94,0xbbbae645,0xbb5cb786,0xbb785328,0xbb8628ad,0xbba46794,0xbbc8c0bc,0xba413126,0xbad571d6,0x39b1ca54,0x3b1115dd,0x3b1855f7,0x3b8286b1,0x3bd32e0d,0x3b5495eb,0x3b0d129c,0xb9978cac,0x3a69dd7b,0x3aac0af4,0x3c06dffa,0xbb221ab8,0xbb231ce8,0xb9cdb3b5,0x3be037f7, -0x3c04a684,0x3b655531,0x3b1749cf,0x3ac05f72,0x3b264a0c,0xba28a22e,0xbb1a02e4,0xbbc35c8d,0x3a15ce48,0xba751189,0xbb829b98,0x397ad3ca,0xb9ce3308,0x3aba566c,0x39fa603d,0x3a81c77a,0xbafbc28c,0xbaee38b3,0xbb726228,0xbada5b54,0xbacff780,0x39dfe4b1,0x3b4c1441,0x3b960189,0x3bc72351, -0x3bf988b9,0x3b5e41fd,0xb987be37,0xbb6da029,0xbba530aa,0x38ce8a33,0x3c2a89d1,0xb986ea2f,0xbb2603db,0xb9e333b2,0x3bcb8118,0x3ba87a48,0xb757d349,0x3a76d5f9,0x3ca38d37,0x3c56b61f,0x3c4d7d4d,0x3c3c0509,0x3c2bd797,0x3c0de5b3,0x3b991913,0x3a9d3e8c,0x3a8655b5,0xb9cd3420,0x388460ea, -0xba236c20,0x39aa8bd3,0xb9acf2fb,0x3b3d79a2,0x3bb81bbe,0xbbdda103,0xbc1f1181,0xbc58ce0b,0xbc5a86c4,0xbc912bd6,0xbc820336,0xbc3cc395,0xbb4ff037,0x3beb8bfc,0x3cc80973,0x3c87d34b,0x3b976008,0xbc199094,0xbbc1dcfa,0xbb638429,0x3ba5ed60,0xb9195cd3,0x3bff4556,0x3cae6e65,0x3cc5f181, -0x39bbde8c,0x3b40e6e6,0xbb05b076,0xba3ffdf9,0x3bdda973,0xbaa11da5,0xbb1e9aed,0xba1b252d,0xb9b59d05,0xb84fa1d3,0x392810ef,0x3903f568,0x38b42fcd,0xb958a83a,0xba7970e0,0xba4f7336,0x3ae1f6fe,0xbb199c64,0xbb1f64c5,0xb959ed04,0x3b93379f,0x3bedd8fc,0x3bdb976f,0xb9d51338,0xbbddacc1, -0xbc6ff113,0xbc9686af,0xbc1b4cfb,0x3c378083,0x3bf0b09e,0x3b6b9a69,0x3a8e1c21,0xbc81b9b6,0xbcad459d,0xbc3693ce,0xbbcdf4b1,0x39fc4ebe,0x3c093267,0xba0aafb5,0xbb836aea,0xbbb171ed,0xba857bfa,0x39958c80,0x3a05f8bd,0x36cfd262,0x38994bca,0xb8e092b0,0xb8ad9634,0xb888d855,0x3913eda9, -0x396a3b08,0xb95d34ad,0xba96c7a7,0xba9243bc,0xba864a24,0xba3f5aed,0xb9ef3dfd,0xba87791e,0xb9deaa7f,0xbb16bc8f,0xba9c0bee,0x3b13620e,0x3badfd5b,0x3b89e5d6,0xbb8b75a6,0xbb9546a3,0xbab37e0c,0x3c1645e5,0x3c064f01,0x3c328fb5,0x3c5cf556,0x3af9f700,0xba95dc8b,0x3ca993cc,0x3b22cd6c, -0xbbd5ba1d,0xbc73c551,0xb8dec3a1,0x39a52b1f,0xb996b3a1,0xb836392a,0x35cacf1e,0x38796c1b,0x389e8191,0x38de9ed7,0xb83873f1,0x377403f4,0x399809a1,0xba0e1f32,0x3b44dc30,0x3b7e310f,0x3b6dbd7c,0x3a285d1a,0xbb0d93ab,0xbb4a1124,0xbb817c96,0xba895a79,0x3bf37967,0x3c2fd7d9,0x3bd4d652, -0xbc403b9b,0xbb92b287,0x3b37922c,0x3ca1f17a,0x3c2992cc,0x3bfc9175,0x3afabf92,0xbbba9dfe,0xbc34bd81,0x3c2d77ea,0xbc5222de,0xbcd1d228,0xbcb35c62,0xbb7a782b,0xba085712,0x398908f1,0xb8b3820c,0x36c7e3e7,0xb8cf5c37,0xb8a88503,0xb97a7dca,0xb4e348d5,0xb97d63e6,0xba2b6f84,0x3b02bde9, -0x3b956d50,0x3bc02409,0x3be0679d,0x3b9ad4bd,0x3b5ac391,0xb8c327cb,0xbb284e40,0xbba73579,0xbbb61d7f,0xbbf76d09,0xbbaf2d44,0xbb4b77c2,0x3bf10258,0x3c51ddd1,0x3c8f4f0e,0xbb7cbd5e,0xbc9e9844,0xbcb49699,0xbc86a96f,0x3c1c3bf0,0x3c9f095a,0x3cdf35ff,0x3cfc5dea,0x3c19f508,0x3b9ca1ac, -0xb9c337cf,0x3961199b,0x38864732,0x370e8a78,0x3938c923,0x3937f676,0x39dc66cf,0x385afe66,0x3a2785eb,0x3b354fef,0x3b9b2b6c,0x3c092e89,0x3bff9de6,0x3baede9b,0x3b8d81dc,0x3b440f9f,0x3b84df27,0x3b5c748c,0x3b14ba83,0x3b1de9c3,0xbb02fd44,0xbb9d26af,0xbbe26c15,0xbc4006e7,0xbc35b046, -0xbc38a78f,0xbba7d0e6,0x3aabf0bc,0x3b72f5c6,0x3b422e0a,0x3b1f4596,0x3b189c4f,0xba6546c3,0xbb410144,0xbb6c6ba9,0xbb34a0ca,0xbb015c98,0xba7878a4,0x389fbeff,0xb877dc79,0xb998fefa,0xb9c52dc7,0xba1ea863,0xba09e511,0x39e01dee,0x3a828aba,0x3aeb83d7,0xb988e716,0xbae9601f,0xbacd63cb, -0xbb0397f1,0xbb103e8a,0xbb26e720,0xba7b2dd0,0xb95b658d,0xba4b67ad,0xbab04fe9,0xba992c7b,0xba7dc3d0,0xb9132d0f,0xba383b39,0xbb7cd2a9,0xbba95736,0xbbd83fce,0xbb4d77b1,0xba57526c,0xbb8b63d0,0xbba9e00e,0xbb685395,0xbb32d1d3,0xbb0cc234,0xbb40237d,0xbb1d4f2d,0xbb1fe085,0xba9bc256, -0xba4276bb,0x392bf4aa,0xb9794ae4,0x3a3d21eb,0x3a830096,0x3b0831ac,0x3b1dacf7,0x3b23c5fa,0x3a8081cb,0xb8fa30ed,0xbaf38149,0xbaa41f39,0xb9e6d0e5,0x3a1d9feb,0x3b01b7f3,0x3b530dad,0x3b975638,0x3b99a967,0x3b90f1bb,0x3b4f3d45,0x3abd15c5,0xba70cda6,0xbb517ab4,0xbb64b3ee,0xbb51b9da, -0xbb88face,0xbb7d2a3b,0xbb65b426,0xbb462c5f,0xbb11e111,0xbb15674c,0xbae81452,0xba425c8e,0xb939e269,0x3952aae0,0x3ae83e2c,0x3b25db73,0x3b8f1c34,0x3b801ccb,0x3ba7a325,0x3bae95a4,0x3b980c2f,0x3b8960db,0x3b7656be,0x3b3cdcae,0x3af9b40c,0x3a7cfdda,0x3b0c76d3,0x3b1005c8,0x3b348fc7, -0x3b57a3d6,0x3b84a4ed,0x3b9c2f71,0x3b909260,0x3b8df8d8,0x3b98dc41,0x3b7111a5,0x3b553edf,0x3b124fc0,0x3a5deb25,0xbad1b62b,0xbb834897,0xbb67b345,0x3bbe8088,0x3ba5f065,0x3bcd6aeb,0x3bcd780f,0x3bd1072f,0x3bcd588a,0x3bbe490f,0x3bba2ea1,0x3bb494f3,0x3bb34e26,0x3bb02e00,0x3bc10958, -0x3bc3ca40,0x3bdc3891,0x3bba88ee,0x3b988923,0x3b7cade2,0x3b56f3ec,0x3ae5da7d,0x3b07c021,0x3ae43428,0x3b021d39,0x3af09c7e,0x3af12d12,0x3ace2d72,0x3a9ad7e7,0x3b0cfd77,0x3b1235a4,0x3b255fd2,0x3b4ccde0,0x3b522a57,0x3b812b7d,0x3b8d7fcc,0x3bb23f89,0x3bcc436b,0x3bc97bcd,0x3ac91e16, -0x3ad4109b,0x3ada8068,0x3abe9c00,0x3aadc2ce,0x3abcdb1b,0x3ad0d22a,0x3ae2d9db,0x3b075e50,0x3b19d415,0x3b247cc8,0x3b2b661b,0x3b2bee6f,0x3b3188f5,0x3b3159cc,0x3b3e9d2f,0x3b0a0264,0x3b179b17,0x3b21a94d,0x3b264f51,0x3b260e7f,0x3b2bf596,0x3b2dc251,0x3b3224b6,0x3b357442,0x3b32227e, -0x3b38b521,0x3b331551,0x3b39c77d,0x3b3c842b,0x3b345d3a,0x3b383567,0x3b1d8cea,0x3affad7d,0x3ac64ba6,0x3aae3ba2,0x3b780869,0xba9804c2,0xba03db05,0xb9d9d15b,0xba137358,0xba17fbab,0xba4a7189,0xba38feff,0xba1b8e05,0xba79d69c,0xba21d2fd,0xba46629f,0xba9ec263,0xba98249e,0xba84520a, -0xb9f8f724,0xba8cde40,0xba91ece7,0xb931247e,0xba2589ad,0xba513f91,0xba63fc7d,0xba2f7ca8,0xba2626ae,0xb9fe1ac4,0xba8b014e,0xba9f025f,0xba929d6c,0xba842d11,0xba368a20,0xb84d0533,0xba2061f5,0xba607c6a,0xba6ab64a,0xba0783c0,0xba1e0c30,0xba735d25,0xba17b0ce,0xb98fed61,0x38b46a5d, -0xba1fab31,0xbaa62f22,0xbaeb5f88,0xba4316e6,0xba491c6a,0xbb08e019,0xba09e82f,0xba682b7b,0xbae79c0b,0xbb0c435f,0xbb1d3024,0xbaa5d3f5,0xbb4adfaa,0xbb3f10b4,0xb9cad80f,0xbaa673c7,0xba4a1fc4,0xba59f786,0xb9e96ba3,0xb8d72224,0x39ee3e8f,0xba88859d,0xbab0b918,0xba9140bd,0xba436b1c, -0xb9c9db7f,0x3a2a700a,0xbacdfc4f,0xbad2229b,0xb9c79977,0x3ac13def,0x3ae1dc0e,0xb88368b3,0xb80a77d7,0x39d21c2f,0x3a7d6c6a,0xb9b04408,0xba8631e2,0xbb21e5a9,0xba2cfb04,0xb9df5946,0xbb3198b9,0xbaa79972,0xbaeff266,0xbb90158c,0xbb8808ea,0xbb87ee08,0xba9aab16,0xbb816eea,0xbb888e7b, -0x3988ed3c,0xbae05deb,0xba95781b,0xba8edfb2,0x38004abc,0x3945dfb2,0x3a801e16,0xbb0f81c3,0xbb4ffd18,0xbb283675,0xbacf6d22,0xb9dbb819,0x3b45eaeb,0xba9be7e9,0xbac4b41e,0xb8f5a3c7,0x3b080f3b,0x3ae00d67,0xba58be35,0x3a1bcb5b,0x3a3a9df9,0x3b080f46,0xba0f59af,0xbb166f17,0xbb6eb177, -0xb993b2d4,0xba019cce,0xbb4a09e6,0xba8d80b2,0xba2a01a2,0xba9553ba,0xba434265,0xbb0c60a4,0xbab2672a,0xbb9d2c25,0xbbce5be0,0xb9ed06f5,0xbb2f5827,0xba9166c7,0xb9dbe256,0x39986cca,0x3ac79130,0x3b6350de,0xbb1771da,0xbb498be4,0xbaf5fe64,0x39c60250,0x3a2d6ec9,0x3b7544ca,0xbb2b44e5, -0xbae5b9c3,0x3ade1115,0x3bd39c51,0x3bddbf30,0x3a7f597d,0x3ae0ff20,0x3a8f8d14,0x3ac3b6f9,0xb9aa7f0b,0xbadd4d53,0xbb7f7dd6,0x39ac59a0,0xb975c2fc,0xb97cc253,0x3a24bba5,0x38d2debb,0x3a3ed6eb,0x39f3ca57,0x39e9489d,0x3920a219,0xb9952899,0xbb4f473f,0xba6635f0,0xbb225796,0xbacef16b, -0xba06b821,0x3aaa3e95,0x3b05a3a8,0x3b3e2c34,0xbb805f4f,0xbbd725a7,0xbbc89ec3,0xbb919113,0x3a7356f8,0x3bdc4f73,0xba923822,0xbb029ed1,0x3abf9725,0x3bae85ce,0x3b4adc7a,0xbaf88b7a,0x39bb5dbd,0x3c94d84a,0x3c24ecdc,0x3c1f7bc0,0x3bee63be,0x3bc1eae1,0x3b577a2a,0x3a0761ad,0xb92b4dbf, -0xb91d53f9,0xb8fe6261,0xb955d815,0xb9b6e93e,0x37c4c16e,0xb9b9e443,0x3a2a5604,0x3b6c24a3,0xba0fe09b,0xbb9c509e,0xbc18450a,0xbc17cc75,0xbc57f386,0xbc2f9b2d,0xbb748c08,0x3bd6bdaf,0x3c6e0987,0x3ce7c41f,0x3c89b62b,0x3b83ff67,0xbbed4ee0,0xbb8c23e0,0xbaf25f04,0x3bcbc2a8,0x3af58ed0, -0x3c1db7fb,0x3cbac2bb,0x3cc0e434,0x3aaa1c9c,0x3b5b8ad9,0xba8bc96d,0xb95bb5cd,0x3b357390,0x398de52d,0xb9c423c5,0x38d9b092,0x37c6fe0a,0x38fc7f1f,0x38c4e148,0x3907b7b0,0x38e11815,0xb73cf619,0xb963d964,0xba978e58,0x3a53d1a1,0xbb001733,0xbb6eb5b1,0xbb6df8c0,0x3aa8221b,0x3b7908d7, -0x3b88902f,0xbb2aa62e,0xbc0a411d,0xbc8a7a83,0xbc700ef0,0xbb80ac64,0x3c8413ca,0x3bba1224,0xb994663e,0xbb50db21,0xbc926be7,0xbca5b647,0xbbd785fd,0xbb969916,0x3bfd2357,0x3c7c5b2f,0x3bbda070,0xb9edd43c,0xbb61b0fb,0xb8fb6917,0x3879a0b3,0x36b0af06,0x37033829,0xb82fb90b,0xb7c133f4, -0xb8d532ef,0xb77fe612,0xb81d9e45,0x3957093b,0x391a5e00,0x38cdec7f,0x38b129bb,0x3a3f05ec,0x39039b4f,0x3942f805,0xb9a8855f,0x3a146aaf,0xba352500,0x3aa82a64,0x3bd6f78e,0x3b861c45,0x3b053630,0xbbd1cf37,0xbb287b72,0x3b0d8a32,0x3c029fe2,0x3c21db79,0x3c4a90f0,0x3b469ffb,0x3bbaed94, -0xbb124ead,0x3bf29d9f,0x3be05915,0xba0b2db7,0xbc146c8e,0x3a0b78a2,0xb7049b6d,0xb8ede4b4,0x3862cd61,0xb814295b,0x3659f2a9,0x381299cc,0xb7594737,0x3860ef29,0xb944e2bf,0x39ad50ab,0xb9d40d06,0x3b0b6e60,0x3b8a5f4e,0x3b983932,0x3a783328,0xbad32be5,0xbb2d1a64,0xbb23bb85,0x3a640c75, -0x3c4c77b8,0x3be84f81,0x3b327b3c,0xbc7ab5fc,0x3b0d72bb,0x3c23f04d,0x3c61a9af,0x3be88c12,0x3b7f610a,0xbbfe4af1,0xbbdd863d,0xbcb1f016,0xbcadfe3c,0xbc3817c0,0xbc625a86,0xbc6a968d,0xbae2e0f1,0x38d06865,0x391766f8,0x372e6b6f,0x3891022e,0x37e4c0d3,0x3707ad50,0xb627ba28,0x37b97eca, -0x385ef4b7,0xb9cb87ee,0xba459f88,0x3aef89b3,0x3b707dda,0x3b718fd9,0x3b02d243,0x3a18687d,0xbb0f8de6,0xbb9627c7,0xbc05b5fa,0xbc1c0646,0xbc0b927e,0xbb7155f0,0xbac622b3,0x3c584dac,0x3c5e1dcd,0x3b991f9a,0xbc709504,0xbcd7ac0e,0xbca065d5,0xbc9e8635,0x3c00b407,0x3cd9672c,0x3ced275b, -0x3cdc6807,0x3bcc55c4,0x3b913423,0xba34625b,0x38ded9e8,0xb98f37e6,0xb8868a9e,0xb8ce0cda,0xb87c3ee4,0xb801dc2d,0x38847ac1,0xb9632564,0x3a7cb46b,0x3b40e6aa,0x3c010ca6,0x3c18d1aa,0x3c04192a,0x3bdb7da6,0x3ba90794,0x3b9ce1a7,0x3b7548b1,0x3b2df0d7,0x3b423bc6,0xbb1a7df6,0xbbbd4780, -0xbbf8f541,0xbc38199e,0xbc17fee9,0xbbf13cc8,0xbb805197,0xbb022142,0xbb230985,0xbba3aa9f,0x3b52d7a4,0x3b60d2bb,0x3ac004d3,0x3ab5471f,0xba34f617,0xb8722c63,0xb96b39cf,0x39b7038c,0x39c020d7,0x39a2b5de,0x3902e83e,0x394bbbb2,0x388f5d05,0xb7ff174c,0xb78a7d61,0x3a20222d,0x3adb83e5, -0x3a9a7aba,0xb907e024,0xba1b4292,0xba9029d0,0xbb03f668,0xbb4671b1,0xbb69d540,0xbb89764e,0xbbc2844b,0xbbae1a19,0xbb8fbb8c,0xbb648bd9,0xbb240387,0xbb1b3c1f,0xbb819ed5,0xbb83c330,0xbb89ad40,0xb906ffd8,0x3a679f73,0xbadadf18,0xbb431569,0xbb0e562a,0xbb422455,0xbb5fddbe,0xbb668777, -0xbb3e0a3d,0xbafc25c2,0xba8ee039,0xba25c4f3,0xb9934504,0xba006c19,0xb97c3a60,0xb9e366c0,0x39d8f2bc,0x3a8fa114,0x3b0aba23,0x3ac85f25,0x3a82d3e0,0xb96e4430,0x39582b07,0x39bc1d5c,0x3a7edfa4,0x3aceaa14,0x3b168a54,0x3b5130d2,0x3b2c2976,0x3ad7b434,0xb9c34493,0xbad8cabc,0xbb42d4b7, -0xbb891d03,0xbb1670fd,0xba9dae34,0xbb0ab257,0xbb025b29,0xbbc43a11,0xbbcd8175,0xbbc30140,0xbba6c7de,0xbb9392a6,0xbb519a19,0xbb0fe1f3,0xbad45337,0xba610307,0xb9b0e6ac,0x3a38dc87,0x3a2e705b,0x3af95c77,0x3b14b2a5,0x3b40f5a2,0x3b442bae,0x3b5e0653,0x3b463fd9,0x3b13ec79,0x3b1cd736, -0x3b52c614,0x3b5307a0,0x3b6ae8c2,0x3b8dde53,0x3baacf33,0x3bc6ad45,0x3b8fb878,0x3b6e4611,0x3b49916c,0x3b02fc48,0x3a87cd71,0xba145dc5,0xbb144055,0xbb8ec099,0xbbaf6512,0xbbb23c79,0x3b4342a7,0x3b10f5b4,0x3b5fad86,0x3b682d70,0x3b830881,0x3b6e33c0,0x3b60facf,0x3b77255f,0x3b84cb9e, -0x3b9b7ff1,0x3bab7ec0,0x3bc1ecba,0x3bc88460,0x3be3403d,0x3bcf85fc,0x3bbbaeff,0x3bb1fe89,0x3ba8d13a,0x3b8c776c,0x3b978002,0x3b8ad4fa,0x3b95f796,0x3b8fc3b9,0x3b8d5687,0x3b783a3a,0x3b525c9f,0x3b873198,0x3b71fead,0x3b65fdbd,0x3b660d39,0x3b49c247,0x3b6351ac,0x3b6ec77f,0x3b93ce47, -0x3b86e9f6,0x3b5ac2d9,0x3aeae0dd,0x3ac47ba8,0x3ad2eda6,0x3ad9476f,0x3aeb9b68,0x3b04bcdd,0x3b18dd30,0x3b27d7a7,0x3b3cd100,0x3b447ca5,0x3b4b2e4c,0x3b56ddd9,0x3b642e14,0x3b6fd7f1,0x3b5f5ed9,0x3b707ded,0x3b55b4c7,0x3b5fcd3c,0x3b6e968b,0x3b80487d,0x3b8054c4,0x3b845bd9,0x3b86734c, -0x3b8be517,0x3b9057e6,0x3b8ef8d2,0x3b8cb5ac,0x3b809530,0x3b80ce0f,0x3b7ae478,0x3b6621c6,0x3b56ff67,0x3b2e45cc,0x3b162862,0x3af7723b,0x3ae2874d,0x3bc68387,0xbb043c63,0xba85e46c,0xba86ef7f,0xba92c3e6,0xba8dcf39,0xba9c03c2,0xbaa44cef,0xba8fab94,0xba887dd2,0xba813272,0xba89ff3e, -0xba9cbb09,0xbac5556c,0xbad035ce,0xba767595,0xbadac2b9,0xbadb87ee,0xba2aab9e,0xba9a3319,0xbab1fdbe,0xbac6f37d,0xbab39a71,0xbab7be11,0xbab55288,0xbb06559a,0xbb09dbd7,0xbadfbe28,0xbab729a3,0xba8f257a,0xba6d8ebf,0xba9ab7c9,0xbaa6a662,0xba94582c,0xba83d46f,0xba90bc20,0xbac094f5, -0xba883e94,0xb9f0642b,0xb9c69c74,0xba8398e3,0xbadab1f6,0xbb02ff85,0xbacf61db,0xbaad65a9,0xba8e4b6f,0xba3bf69a,0xbaa7a953,0xbb049b99,0xbb4f7e65,0xbb3dfed8,0xba927f7e,0xbb5578d9,0xbb5d8f72,0xba8fb099,0xbb046e28,0xbaeb4679,0xbb0adf21,0xbac447db,0xbab1eb7f,0xbabebc58,0xbb3de2a0, -0xbb3d161b,0xbb0e9d81,0xba51a0b6,0xba427faf,0xbabe10fb,0xbb07a73f,0xbabffd88,0x38caf8b5,0x3a56db6d,0x3a2061a8,0xbab7f6c5,0xba1457db,0x3824da4d,0x391c58f4,0xba34722e,0xbaa64391,0xbb0bde74,0xbaa563e7,0xba5f2c58,0xba1b660f,0xba54c209,0xba68e0f0,0xbaf8264b,0xbb3b4d52,0xbb79fa66, -0xba426a3c,0xbb7a83b5,0xbb827107,0xb9755142,0xbb14b790,0xbb05a9a5,0xbb37a7e2,0xbac291c9,0xbafffc0c,0xbb059163,0xbbb430e9,0xbbbd2c05,0xbb69b745,0xba9233a9,0x384c4144,0xb9236a06,0xbad1deb5,0xbab01609,0x3a91bb65,0x3ab3a300,0x3a3e0e99,0xbafdd89d,0x39874f55,0x3aaf8975,0x3af68aff, -0xb9a5387d,0xbb07e234,0xbb23ba8b,0xba535667,0xb9b2c64a,0xb914d07a,0xb86c7137,0x394538db,0x3950c519,0x3a570693,0xb86cf0ef,0x39b77d83,0xbb29b74b,0xbba08517,0xba4e983e,0xbb55ee55,0xbb30a5bf,0xbb46bbdc,0xbacfd32a,0xba9305a9,0xba291db9,0xbbeca8b7,0xbbedc380,0xbb3dd9d5,0x3a8e954e, -0x3a8af399,0xbae22e02,0xbb1ff6b8,0xba260781,0x3b916858,0x3bb39a6b,0x3b9cc59b,0xbacf5108,0x3aa8b8be,0x3a796ad1,0x39d3a4d6,0xb9c4889a,0xba77c344,0xbb0552ba,0x370d103e,0x38c6dcf3,0x38f6a6f1,0xb630e374,0x370df057,0xb93238bc,0xb969a3c8,0x38567117,0x3800890e,0x3a887482,0xba7c7b69, -0xba2ceaad,0xbb1c1d55,0xbb37b1e5,0xbb65af0d,0xbabbcfa8,0xbafde430,0xbb4040ba,0xbc28d3f8,0xbc36de05,0xbbeeacc5,0xbafc532e,0x3b1a6bcd,0x3a9bb1ac,0xbaec0b31,0xba5065e3,0x3b822155,0x3b88f73c,0x3a9f7346,0xbb4700f3,0x39f621f2,0x3c6e397c,0x3c0391a8,0x3bdd9fc7,0x3b534825,0x3ae43dd2, -0x39a247f0,0xb934da78,0x3803f30f,0xb6fbd26f,0xb80c49b8,0x38acde64,0x383ee82d,0x3792df90,0xb9013cd8,0xb9958b5b,0x399c65bd,0x3b145ee1,0xbaaba558,0xbbc0a135,0xbbdcf6b9,0xbc1444eb,0xbbbb6b87,0x3b1c3682,0x3c7b8420,0x3ca24224,0x3cdb00dd,0x3c72b6a6,0x3b7a4a59,0xbb31e2ba,0xbaa8feed, -0x3a963dca,0x3c0b8adc,0x3bcfc1a6,0x3c4a2983,0x3cb397e0,0x3ca13d86,0x3b59b287,0x3b0ddf13,0x3a3b8603,0x3ad93831,0x3aa2d9cb,0xb8bc3ddd,0xb7df02f6,0x3882b6bf,0xb7bfd50f,0x37839f02,0xb7e49f90,0xb7b1a5f0,0xb77cd950,0x38818781,0x39540fef,0xb9c65c1a,0xb8ae1884,0xba0a4dcd,0xbb09ca3e, -0xbb87f75c,0x36c3416d,0x3a88f18f,0x3a71a223,0xbbb3e506,0xbc26f093,0xbc867478,0xbc1023c5,0x3ae0fe9d,0x3c8c3385,0x3ba86bce,0xbaec9cad,0xbbdd7f31,0xbc83afbf,0xbc7535a0,0xb9c511d2,0xb860a2fd,0x3c350f22,0x3ca2f03f,0x3c2a5fd1,0x3ab05d3e,0xbaec5509,0x39b6d88a,0xb97b6509,0x393a9293, -0xb8be79a6,0x385ca634,0xb7c189be,0x3807be33,0x376e5562,0xb88088fd,0x36ff10e6,0x38825987,0x3982399c,0x39d2cab2,0x3aa75f72,0x3a363ed2,0x3a94aa6d,0x3ab150e2,0x3ad9ec6d,0x3b19bca2,0x3b8d6b4d,0x3c026373,0x3b03d20a,0xb990ae67,0xbbf5b45d,0x3a845594,0x3bdcdc66,0x3c01a005,0x3c399fa2, -0x3c426ede,0xbba18c4b,0x3bd3f7c1,0xba79508c,0xbb977614,0x3bf3d249,0x3ad7481a,0xbb59898b,0x3adc9418,0xba02b96f,0x3917ceac,0xb8dd27c3,0x386ea857,0xb7b07334,0x37010689,0xb7830a8e,0x37b97b0b,0xb78f4141,0xb8651e6a,0x37ab8559,0x3897134e,0x3afabf6a,0x3b4b8c8b,0x39e05fdb,0xba0ab4e1, -0xbae7f38e,0x3a96bbe2,0x3b891c4f,0x3c600199,0x3b14c676,0xba8c45b1,0xbc56d515,0x3beb29b8,0x3c71e03d,0x3bef4a8f,0x3bf3cf14,0x3b801af5,0xbc4b02cb,0xbb8338a7,0xbca488c1,0xbd3958de,0xbc48716d,0xbb5ecf84,0xbb8a354a,0x39c8bdcd,0xb7fc6a59,0x3962c500,0xb848d3c8,0x3724dfff,0xb8098279, -0x376a7ec8,0xb6862df7,0x3819fa34,0xb82cb13f,0x399b814c,0xba5e1f9a,0xba3b64a3,0x3a013941,0xb9d5cb79,0xba96c126,0xbb1e3776,0xbb857d36,0xbbd94515,0xbc21ddac,0xbc28b2e4,0xbc03db73,0xba7d13b7,0x3ba2e5da,0x3c83272a,0x3c282b89,0xbc2e7c39,0xbc87c2f4,0xbca0f7c3,0xbc3311b5,0xbc2b5458, -0x3b17a136,0x3cb4274b,0x3c97433c,0x3c52d5cf,0x3b821740,0x3a258dd8,0xba27e406,0x37c4172f,0xb8c1d641,0x38425ee6,0x37fa1c78,0x3814f290,0xb822b0cb,0xb822352e,0xb63e82ed,0xb98c0286,0x3a68fc0f,0x3ba2cc57,0x3c023525,0x3c0e1548,0x3bf6dfa8,0x3bd8dc75,0x3bafa4a5,0x3b67e7cd,0x3b1345bb, -0x3b189735,0xbb1b24de,0xbbc57790,0xbc0663b1,0xbc23109f,0xbbcf1ea9,0xbb0a621e,0xbb625951,0xbbc15502,0xbc11a9c8,0xbc21e181,0x3b9b9884,0x3b79c4ee,0x3b49f613,0x3b789f81,0x3aed4434,0x3adbbd32,0x3971ab15,0x39d7a269,0xb8b38fe5,0x377d4dbf,0xb9180d6d,0xb8235bc8,0x3716fbdd,0x39038510, -0x385edad6,0x39cc5acd,0x3aafc548,0x3b1337b2,0x3af6073a,0x3a38498f,0x3896e280,0xbaab6fa5,0xbb1aab9d,0xbb8dc514,0xbbb8e1ef,0xbc0362b7,0xbbd2e1af,0xbbaf7195,0xbb894f0d,0xbb847d9d,0xbb8119e2,0xbb78d3eb,0xbb2b1360,0xba6b45cf,0x3b4db586,0x3b7dc2a3,0x3ab10620,0x3a34463b,0x3a0ff634, -0xba9f0a41,0xbb37b4c6,0xbb073c0d,0xbaada722,0xb9a5de79,0x39046101,0x3951d18b,0x3994269d,0x393e91e5,0xb78111d7,0xb8ee3cd8,0xb994f5e8,0x39428849,0x3a94623f,0x3ad10851,0x3afc56da,0x3ae45d2f,0x3ab31b4d,0x3a6a84c7,0x3a378783,0x3a38bff0,0x3a276acd,0x3a0cf889,0xb89ddc90,0xbaac84d6, -0xbb5cb734,0xbb7903c2,0xbb64e0d6,0xbb5f5256,0xba23421f,0x3a20015f,0x3801b646,0x39870aad,0xbbc02c4f,0xbbd621dd,0xbbd5a9ad,0xbbaa9591,0xbb8f938a,0xbb6bf184,0xbb3bbfd3,0xbb13edd0,0xbb08b4fb,0xbad19ba3,0xba908859,0xba9fb0d7,0xba08e0c3,0xb999dc08,0x3a4e58c5,0x3a88cc99,0x3af0451c, -0x3b0f4d80,0x3b177c47,0x3b539ca8,0x3b532cc3,0x3b5674ad,0x3b5276a6,0x3b6efe43,0x3b894478,0x3ba00877,0x3b48dada,0x3b1d8916,0x3aef1a53,0x3a927474,0x39298cd9,0xba9c3218,0xbb3a9e45,0xbb8e5829,0xbb90cfd9,0xbba11378,0x3a0b8517,0xb955d19b,0x3a4a9ee6,0x3a03ed31,0x3a4e2f08,0x3a07163e, -0x3a22b65d,0x3a982437,0x3abd8186,0x3b133635,0x3b378df6,0x3b65368a,0x3b806793,0x3b9726bb,0x3b98d21a,0x3b9e76e2,0x3bb1826e,0x3bb1d346,0x3bbb298a,0x3bb81d43,0x3bb13585,0x3bbbd745,0x3bb9f501,0x3bbb49ba,0x3babeb20,0x3b9af039,0x3ba8e38c,0x3b8d6ba1,0x3b6c3942,0x3b519b89,0x3b202f07, -0x3b266aeb,0x3b243c0b,0x3b3f2c2e,0x3afb0448,0x3a620dd3,0x3ad3ee9d,0x3a91544a,0x3ac3596e,0x3b01b7f0,0x3b214f81,0x3b0e9c09,0x3b2725b1,0x3b42a14d,0x3b590e43,0x3b5ecb5c,0x3b674210,0x3b72dc5b,0x3b7fb359,0x3b8574db,0x3b679386,0x3b64a6fc,0x3b81788f,0x3b7681e0,0x3b7569b3,0x3b7cd306, -0x3b802c28,0x3b839f15,0x3b84e564,0x3b89867a,0x3b8e71a9,0x3b8ef12e,0x3b8ac3ce,0x3b7d0338,0x3b7fe25d,0x3b77d2af,0x3b5f600e,0x3b4acdd6,0x3b20ec0e,0x3b0dbd18,0x3af1bf4e,0x3addab69,0x3bd10168,0xbb1a33b1,0xbaa39de3,0xbab11df6,0xbabada76,0xbab61b73,0xbac1e872,0xbac5a670,0xbab2d9a0, -0xba7e54a3,0xba971ae0,0xbaa0dac4,0xba9b164e,0xbac5ad6b,0xbad153f2,0xba979677,0xbaf10116,0xbaf736c3,0xba9b0b31,0xbabd4104,0xbac9e749,0xbada600d,0xbad9bcd4,0xbae6c93e,0xbaf92295,0xbb1a9088,0xbb164be5,0xbaecb854,0xbab8e379,0xba9e63c4,0xbac146bb,0xbab80ec6,0xbaacfa31,0xba80ab91, -0xba9868f7,0xbaa588c7,0xbad072d9,0xba9d5919,0xba171d68,0xba5a7b1f,0xbaac7cb2,0xbaeaf816,0xbb011b4a,0xbaf10aa7,0xbac48617,0xb9a26695,0xba578419,0xbaac5fe2,0xbaefb4ae,0xbb615e11,0xbb55cd3c,0xbac0ab8a,0xbb4212ba,0xbb38b89f,0xbad06e5e,0xbb156ff6,0xbb192f89,0xbb2d75b9,0xbb04064f, -0xbb0983e3,0xbb36e2da,0xbb691373,0xbb552678,0xbb230b54,0xba25a900,0xba70e89f,0xbb45a5a2,0xbb0ddcc8,0xba8d2d11,0x3a463e67,0x392d1260,0xb9dd121c,0xbb10d3a0,0xba6dca22,0xb9b4b264,0xba4e86e2,0xba902f30,0xbaafb4e1,0xbacf7f09,0xbacfa7f2,0xba6ca814,0x3a085c54,0xb97e6ae1,0xb7f10ca1, -0xb98f10f9,0xb9b226af,0xbab939a9,0xb985c2eb,0xbb351a61,0xbb56e1ad,0xba3366da,0xbb0aef85,0xbb0eea2a,0xbb5e1f19,0xbb17eba2,0xbb5930c0,0xbb8e353c,0xbbd758c0,0xbbc6fc92,0xbb62d86d,0xb9e885bb,0x397d9709,0xbb45e5ff,0xbadcdb95,0xba5cac15,0x3b231162,0x3a35ff75,0xb8d8ba18,0xbb19a727, -0xb8b46e0f,0x3ab70e8a,0x3a5bc6f9,0xb9b2ecaa,0xbad31ed3,0xbaed9bff,0xba28b9e6,0x38703ddf,0x37839bd7,0xb8ab068f,0x38e72b62,0x38db9641,0x39ce23b5,0x39ee74e2,0x39a01d93,0x399a61ec,0xbaf460f3,0xbaaa9e92,0xbb486c50,0xbb5a5e3c,0xbb8c0463,0xbb2a71a7,0xbb415e42,0xbb8a80e4,0xbc0fa34a, -0xbc03cb99,0xbb44a718,0x3ac98fc3,0x3a64ee27,0xbbcce84e,0xbb0a43e7,0x39a84f71,0x3bdaa4c4,0x3b6f4a59,0x3b1317c1,0xbb581edf,0x3a153e3b,0x39e1ee4c,0xba934807,0xba469188,0xba27d091,0xba419ca6,0x39ac911a,0xb7d487c8,0xb7fb4e82,0x383d8fd6,0xb8ad9499,0xb802c65d,0xb9728491,0xb907815e, -0xb9b0df96,0x39618a89,0x39b3c531,0xb92011e7,0xbace6219,0xbb3c4430,0xbb981ad9,0xbb4a534e,0xbb9f4e98,0xbbfb5b0b,0xbc4d833e,0xbc3b5d9c,0xbbd32ac4,0x39b7aa85,0x3b1b628b,0xbb8a0ade,0xbb13e668,0x3a045531,0x3bceabc3,0x3b396920,0xb9b408f2,0xbb511186,0x39d24f2f,0x3c104640,0x3be67155, -0x3b8cf2d1,0x3a981a10,0x38513ce3,0xb86b79fe,0xb80183e0,0x360a119e,0xb7b20b17,0x386b52e3,0x36ba20b9,0x38c046fa,0x38ba813f,0x38ae2855,0x36c0d4a8,0xb9dd5130,0x3a83e0b5,0x3a28167f,0xbb4abe70,0xbb957b2e,0xbb947876,0xba117179,0x3be3dc57,0x3ca53d02,0x3ca9d308,0x3ca6614c,0x3c3060b1, -0x3b810ea6,0x3afb2415,0x3b33ede0,0x3b8bb4b7,0x3c00d499,0x3c0c6927,0x3c4ad725,0x3c94ca3a,0x3c4a1e2d,0x3b8d6899,0xb901c08a,0x3ab6b486,0x3b06ec8c,0xb9398aad,0x38072d7f,0x388110e9,0xb69f5341,0x3719d4a9,0xb7825813,0xb7239965,0xb81e2d0b,0xb84f6872,0xb84688a9,0x37e23aad,0x38b592c3, -0xb9d82a91,0x391c5d16,0x386d1974,0xbb1848de,0xba3e1b1b,0xbaf7a082,0xbb567308,0xbc11eeda,0xbc310e9c,0xbc44df16,0xbb280f7c,0x3bae322a,0x3c59aabb,0x3b88dc4b,0xbae9f76f,0xbbf2f3ea,0xbc311de4,0xbbf1346b,0x3ba5d9c1,0x3b901c32,0x3c2308a4,0x3c9e659b,0x3c31778e,0x3a9d2612,0xba0da51d, -0x3919739e,0xb9078172,0x378cebf5,0xb7438177,0xb651867e,0xb6137941,0x37a70a49,0x373f1962,0x3784f02f,0xb79cc2c9,0xb7174073,0x390141f9,0x38093810,0x3a812567,0x3aa6d39b,0x3b05988b,0x3b4a2cc6,0x3b3d5d1a,0x3ba4f7ae,0x3bcaf887,0x3bc0b220,0xb9748701,0xbaf68d04,0xbbe69016,0x3b5db759, -0x3c074f98,0x3bc58675,0x3c115d64,0x3bf6859b,0xbc040317,0x3b9abed4,0xb9112366,0xbc0ec6e5,0x3b8156a2,0x3a54ab43,0xb9dd91e0,0x39cac26c,0xb8f72d9a,0x38b495e5,0x36817e40,0x37ccb6be,0x37b2fb5a,0xb5f6c2ba,0x37aa4b27,0xb77d9bf2,0x3889acdf,0xb9340d0c,0x39671ed7,0xba19c934,0xba5ecfeb, -0x3a12031c,0x3822acb1,0x3a8f40fe,0x3887f031,0x3baaafb7,0x3bd8e8f6,0x3c1ec240,0xbb038182,0xbb6d8fcd,0xbbf4a7f2,0x3be75f37,0x3c4ab975,0x3ada93d9,0x3bd27d06,0x3b417c53,0xbc3df303,0xbadf279f,0xbc51fffc,0xbd39fb04,0xbc4f28f5,0xb9437748,0x392cb9e2,0xb9205bdb,0x38980b0a,0xb8f0bb25, -0xb804eea8,0xb832e2c4,0xb8256616,0xb79ef483,0xb84978f2,0xb7bbbe41,0xb6cf789f,0x3882a85c,0x394b97f6,0xbaa5e2d4,0xbae7a1ad,0xbb5e3f87,0xbb5bc58b,0xbb9bf328,0xbbb5ca4c,0xbc05bc64,0xbc253ab6,0xbc0c67cc,0xbbcaabf5,0x3a91bbdf,0x3c3c3842,0x3c3bc2b2,0x3b18a6c4,0xbc94d528,0xbc457b0e, -0xbc054e49,0xbb0ccec3,0xbad36900,0xbb0a732b,0x3b769b53,0x3ac6a139,0x37456050,0x3ae57f0d,0xba833a6b,0x399b6ac7,0xb7b8aebd,0x392bede1,0x3860f29a,0x38c8ff74,0x389546a0,0x38d46ba2,0x38363e23,0x350853bd,0xb90466f8,0xb9c83e70,0x3b06f0b1,0x3ba419d9,0x3be9c7ac,0x3bd5f006,0x3bd4d4bd, -0x3ba2df40,0x3b34b271,0x3a94ab4a,0x3974e3ce,0xbb31c632,0xbbc13b44,0xbc060288,0xbbfe2bba,0xbb6e368a,0x3a1f51c2,0xbb30bc27,0xbbcd41bd,0xbc26e580,0xbbf3c918,0x3badbaf3,0x3b666ca4,0x3b4f536c,0x3b61e14d,0x3af6641f,0x3947786e,0x380c2592,0xb980c723,0xb92a7c99,0xb97ff786,0xb91fdb29, -0xb9554486,0xb8fcf375,0xb91c0c36,0x388231a2,0x391d5c7e,0x39e8f13f,0x3b17a4c7,0x3b3ecaa7,0x3b15ee58,0x3a9ea15e,0xb9de1d79,0xba9f86e5,0xbb5d916a,0xbb96b81a,0xbbe8a6db,0xbbb9385a,0xbba74160,0xbb892337,0xbb9b2672,0xbb9af691,0xbb540007,0xbafbd5d2,0x3a4b6017,0x3b82bb7a,0x3ba7ab4f, -0x3b28a6cf,0x3b2e8e32,0x3b01a386,0xb86355b4,0xba976764,0xb9e65763,0x38188c9c,0x39e469e6,0x39de49ba,0x39b90a51,0x39b1d2b8,0x39b67428,0x399c679d,0x39aa4f0d,0xb90a1256,0xb9575770,0xb81686b2,0x3a3cb279,0x3ac0efa5,0x3b068411,0x3a94136c,0x39d28334,0xba094b5f,0xb9fe9e6d,0xbaa2ba71, -0xbb1b796d,0xbb298f69,0xbb6c2756,0xbba2d3bc,0xbb959f51,0xbb4e6a32,0xbb19a44f,0xb93292df,0x3a1a5ae8,0x39db7b27,0x3a913237,0xbb924be2,0xbba7d0e0,0xbba9d889,0xbb7939bd,0xbb58ecb9,0xbb4325c3,0xbb1570f3,0xbaa56d42,0xba9a7a08,0xba504da2,0xba16237a,0xba58f543,0xba6581de,0xba835dea, -0xba47f2da,0xba325a59,0x38619438,0x39f81748,0x3a3446fc,0x3af212c4,0x3aa46b96,0x3abd6bb3,0x3a8b273f,0x3a52ca40,0x3a53d6f6,0x3a9fc1e3,0x39fdc7a2,0x3a088e92,0x3a235b66,0x39263872,0xba28d8c0,0xbac8e137,0xbb2a4ff7,0xbb580643,0xbb482d07,0xbb6cf514,0xba80891a,0xbab2b279,0xbab7134a, -0xbacd2009,0xbaac41ea,0xbad39fa1,0xbabf29eb,0xbac54d65,0xbaa9d2ae,0xba45461f,0xb9b4f2e6,0x394b06e3,0x3a3514b2,0x3aa9d250,0x3afccdd7,0x3b22c5d1,0x3b5ce92e,0x3b71ac8f,0x3ba33f0d,0x3b9a9b81,0x3b966345,0x3b91addc,0x3b90abde,0x3b9270fa,0x3b869252,0x3b6ebccf,0x3b57582f,0x3b1a473c, -0x3abcc253,0x3a8d0836,0x3a2dcb7c,0x3a35bf3f,0x3a16a5fa,0x3a3e2950,0xb91d3552,0xba6d4286,0x39ae07aa,0xb8712604,0x398ca692,0x3a4de7ba,0x3aaa255f,0x3a3fcfa9,0x3a9307c4,0x3acfd081,0x3af8fba3,0x3b025cf6,0x3b0b741d,0x3b153ca9,0x3b1f49f6,0x3b2467d7,0x3af9a05b,0x3adb64c9,0x3b297e97, -0x3b0d8602,0x3afb4fbc,0x3afb4056,0x3b00600c,0x3b03df1a,0x3b01c911,0x3b014366,0x3b071b9e,0x3b0d1155,0x3b0a8e53,0x3b043606,0x3b0bb363,0x3b04f343,0x3adb5289,0x3ab547a6,0x3a7b1a0d,0x3a57cc72,0x3a215ca5,0x39f3d2f6,0x3b62b6e9,0xbb04fae4,0xba95fba6,0xbaaa0e56,0xbaa6735d,0xbaa5e270, -0xbaae6412,0xbaa25bad,0xba94b0fa,0xba2b6b6b,0xba810693,0xba9470e9,0xba939237,0xbac352a6,0xbacf1ae2,0xba9445b9,0xbaaf7938,0xbab4c270,0xbaa1bfe2,0xbaa5fe12,0xbaa2b477,0xbab21471,0xbac418dd,0xbad5b281,0xbaf11a29,0xbb005e0f,0xbaf04729,0xbac14232,0xba96e103,0xba8cf119,0xbac89bc9, -0xbaa82b08,0xba90787b,0xba341185,0xba855bf5,0xba8e44de,0xbaa863ee,0xba8a7d57,0xba2433f1,0xba8f89bd,0xbaabf613,0xbac10588,0xbabcfbf0,0xbadbefea,0xbaa20216,0x397471d2,0xb9e1b046,0xba3f6711,0xba5fc647,0xbacd1378,0xbaebb611,0xbaa80900,0xbb21e05a,0xbb100688,0xbac022c9,0xbadbc82b, -0xbafe792a,0xbb0f208d,0xbaf8b910,0xbb0c40e2,0xbb42a80e,0xbb3f1bbf,0xbb23b265,0xbb07877c,0xba20a845,0xba900b35,0xbb5be994,0xbafe526e,0xba548d5e,0x3a6e9c2a,0xb9c052e5,0xba80fd7a,0xbb058754,0xba732827,0xba1f6884,0xbabe2f8c,0xba8f0581,0xba85eb5c,0xba9f18e0,0xba77dc11,0xb91ac4e6, -0x3990ba32,0xb798e3b7,0x39701fb2,0x397396f6,0x39ac0f38,0x397a846b,0x39c67034,0xb9ac8f50,0xbaad59ea,0xba8d5d00,0xbaa5a26e,0xbab7270d,0xbb311794,0xbb1c5d91,0xbb66e37f,0xbb9e8a68,0xbbacb2c1,0xbb909e66,0xbb2b3449,0xb981175a,0xb930ddcc,0xbb8969ac,0xbadba250,0xba2640a3,0x3b2d5385, -0x38ac2ec5,0xba055f98,0xbae4b918,0xb9aea199,0x3a6585fa,0xba120009,0xb9faa1c3,0xbaa0d6fc,0xba2b2f3e,0x396812f5,0x38abc98d,0xb8ea29b6,0xb670e487,0xb860a8a3,0xb901097b,0xb8f6ef12,0xb8bb6b82,0xb8ff3d43,0x39b0f3f4,0x398c82a8,0xb9ab1948,0xbb06ba0a,0xbb1e2370,0xbb65920f,0xbb2da319, -0xbb62f92a,0xbbb4b4a2,0xbbdcea49,0xbbba9a7f,0xbb1f8701,0x3a6d8371,0xb9a45f04,0xbbfad6d9,0xbb025776,0x3969aeb3,0x3bce3306,0x3ac081a3,0x395e6c9e,0xbb412fc2,0xb797b9f4,0xb9915b26,0xbb145e87,0xba71e2ac,0xb9629f92,0x391b6315,0x36a740f5,0xb863a7b0,0x388b50eb,0xb74ba157,0x3866ebb2, -0x384313d0,0x3858b34f,0x3865792e,0x37c2d293,0xb8f0abe9,0xb914a26d,0x39ac5183,0xb9847617,0xbaef167b,0xbb7a9393,0xbb677a04,0xbbc182b0,0xbc122910,0xbc260ad3,0xbc049868,0xbb931c44,0x3a7d1fa9,0x3a6c9920,0xbbdc587d,0xbb2dc407,0x3a12fded,0x3bc72172,0x3ab9c45c,0xba685bee,0xbafbccbc, -0x3974bdac,0x3b6338c0,0x3bb54e98,0x3b17cafc,0x396fbe7b,0xb9138ab3,0x38535f72,0xb7c906e8,0x376bbae8,0xb70e4b5f,0xb7f99586,0xb76419bd,0xb7f2953e,0xb8079c7e,0xb5cedd81,0x38148b55,0x38cb8228,0xb98d4cb7,0x3a0f7f4e,0xb9d6521e,0xbaf33d55,0xb9086dfe,0x3b554b37,0x3c0a532d,0x3c90c3a5, -0x3c802fdc,0x3c38d14c,0x3ba48025,0x3b255b1d,0x3b477c57,0x3ba4bec8,0x3bae6b86,0x3b659e84,0x3be14b44,0x3c10b4c1,0x3c40eaf4,0x3ba3b615,0x3b593d0f,0xbaff1469,0x3a49a8f3,0x39acccbe,0xb91ab476,0x38b60475,0xb8361502,0x3800062f,0xb6b8e369,0x378c11e8,0x371a94fc,0x37925339,0x376a67ed, -0x3754ac34,0xb832323d,0x3809e25a,0xb7671539,0xb83d2fda,0x3a1c347f,0xba5f8796,0xbb08357b,0xbb93f479,0xbbd3db56,0xbc2df2d2,0xbc1c2a41,0xbbd071c8,0x3ac529f2,0x3bc25f0a,0x3bf4e76c,0x3b228a0a,0xbaaab90d,0xbbbabbb9,0xbba07783,0xba746f44,0x3bf5e8de,0x3bbbd11a,0x3be15a17,0x3c66abac, -0x3bf50840,0xba69a45c,0x39aa0659,0xb8d422c8,0x37f67b20,0xb56a067c,0xb73ec707,0x36ad3f8d,0xb711477e,0xb6d6ed3b,0xb68db325,0xb70d6e01,0x37e6c4d7,0xb7f90507,0x38ac15c1,0xb8d983cf,0x39f6d7fa,0x3aabdc36,0x3b019611,0x3b61fe68,0x3b6d216c,0x3bb09ade,0x3bb8fb1f,0x3b2dfeda,0xbac02b71, -0xbb02c591,0xbb8ae9a3,0x3b873db8,0x3be2c5a7,0x3b820ed9,0x3b8faf27,0x3b1bbb21,0xbbe5503d,0x3b459c30,0xba2762e9,0xbbd70400,0x39895ffa,0x38d578ad,0xb9c08b0d,0x395c1560,0xb84e9954,0x3808e9d3,0xb79c9c71,0x371cf324,0xb69efe65,0x35d3c8fc,0x3714946e,0xb6c0a521,0x375ed20a,0xb725b87d, -0xb7d71cde,0x390086a4,0xbacf758c,0xba7ec83d,0x3996bab9,0x3b21fab0,0x3b0f01e8,0x3beb2a29,0x3bdfa090,0x3b8d4f3c,0xbb44c800,0xbb4601c0,0xbabbbd12,0x3b986606,0x3be82801,0x3a43749f,0x3b836032,0x3a8f31b1,0xbbe79bce,0xba908045,0xbbf3d5ed,0xbce6d834,0xbc101ef1,0x3ad15022,0xb934998e, -0xb77c995f,0xb762dd86,0xb79b03b9,0x378df074,0xb6a46fea,0x36faf9bb,0xb5994ffe,0xb51759b8,0xb7930d15,0x36ee2032,0xb810f082,0x39098329,0xb856bd1c,0xbafee8db,0xbb7999d6,0xbb632c57,0xbba2bb1d,0xbbb4011a,0xbbe810ad,0xbbf67b73,0xbbaef92e,0xbafee7bf,0x3b612ced,0x3c5e83a0,0x3b8ca6c4, -0xbb77efc6,0xbc651fa2,0xbbafda02,0x398f6542,0x3b832988,0x398e847a,0x39a21f07,0xbc3a2225,0xbbfd4b5d,0xbb2c51e8,0x3a6c4648,0xb9a6ba29,0x393ec329,0xb862ebbe,0x37175a74,0xb78beb39,0xb6b70b98,0xb727598d,0x35697c61,0x37f4647b,0xb13b7b48,0x38a5e19b,0xb975b09c,0x387d1833,0x3b40792c, -0x3ba15805,0x3b95cb81,0x3b9ee9c7,0x3b625a91,0x3afbc3e6,0x39f84ca4,0xba9c84ce,0xbb2b5e09,0xbb99deb9,0xbbbfd132,0xbb951068,0xba9e194e,0x3adcf2eb,0x3a1706ec,0xba3fa21e,0xbb330729,0x3aefbfaf,0x3b8048cf,0x3b256754,0x3b500556,0x3b07a9a4,0xb867c664,0xb8fcffc3,0xb634857c,0xb8774777, -0x38415317,0x3688a1a8,0x37df2347,0x37ee38b9,0xb7eba9c3,0x3788c3f7,0xb91e30bd,0x392be943,0xb98abfe7,0x3ac9d4aa,0x3b4b60e1,0x3b51246e,0x3b08d4cf,0x3a362f1a,0x3995ff93,0xbac2404e,0xbb178c95,0xbb8da40d,0xbb72f8f6,0xbb6df57d,0xbb3e9bf2,0xbb6f8ded,0xbb6d4884,0xbaf68a73,0xba96b5a7, -0x3a90ffef,0x3b455443,0x3b6ba0a5,0x3b24473f,0x3b5097ea,0x3b1882de,0x3a92bb28,0x37034c88,0x393fc7ec,0x392b286c,0x38140e73,0xb8830467,0xb79b0c8b,0xb8883cc1,0xb856049f,0x37ed180e,0x382fc2ba,0x39142873,0x391ad99d,0xb9293145,0x393083cf,0x3a38f965,0x3abd73cc,0x3a39f6ed,0x390c3be7, -0xba7a5097,0xba3a17e3,0xbade5fd9,0xbb4c873f,0xbb4d0bbd,0xbb794204,0xbb8f6905,0xbb61c972,0xbaf33e90,0xba6776e4,0x382cf746,0x3978ecb2,0x39e57915,0x3aac0267,0xbaff0558,0xbb1a949d,0xbb2cdc72,0xbadc0a81,0xbaaaee72,0xba854960,0xb9a85292,0x395bb997,0x3927390a,0x396427ed,0x390557bf, -0x397b7766,0x37c70bb4,0xb7f78ff1,0xb9980f64,0xba21f10a,0xba263054,0xba243d92,0xba3c8bba,0x38bda1b1,0xba114a86,0xb9762ab4,0xba243ee4,0xbaa24357,0xbabeda84,0xba9fb56e,0xba7e0fc8,0xb9f56f32,0xb841cc56,0xb98c55bb,0xba486356,0xba949ce2,0xbac4f170,0xbac96484,0xbab4ea25,0xbace968d, -0xba8e3fbc,0xba8999f7,0xbacd3ec5,0xbaccded4,0xbac6c90e,0xbb04a017,0xbaf16118,0xbaf111a2,0xbabd2fa6,0xbaacf00b,0xba8fdfa2,0xba74a0b7,0xba3accba,0xb9fb55f8,0xb995b3f1,0x39b18d01,0x3aa27dcd,0x3aec35fd,0x3b5926ed,0x3b44e69f,0x3b3dea47,0x3b1e1bc9,0x3b1b0c5e,0x3b1b1f54,0x3b08c483, -0x3add2ec7,0x3a8357e0,0x39b6b2a8,0xb9853564,0xb9ae7b70,0xb9968edc,0xb94e1d1b,0xb9b1889c,0xb9b72637,0xba4f12e1,0xba957ebe,0xb9f25b24,0xba2fa609,0xba0f8b20,0xb9927619,0x3842a3fd,0xb9574bf9,0xb82cf444,0xb800c88c,0x3702715b,0x38fba0c6,0x3981253e,0x39bec166,0x3a03fba6,0x3a281202, -0x3a0a5f5a,0x39b51360,0x3a763b80,0x3a07183a,0x396f7c7b,0x391ec2f4,0x39410a97,0x394d6177,0x3903c2fa,0x3801a5d6,0x389bf465,0x39532b95,0x3992f321,0x39d0e9ae,0x3a06b20f,0x39e2698a,0x3931bcdf,0xb7a5ea27,0xb938dfe2,0xb9374a15,0xb9890970,0xb9ba468e,0x3a44fc54,0xbaceb1ca,0xba71087c, -0xba893ccc,0xba7e9443,0xba7e0073,0xba85aedb,0xba730f9d,0xba60b7f4,0xb9ce7e71,0xba315f18,0xba55835f,0xba591132,0xba8e5615,0xba9c19a4,0xba83e2d0,0xba87d9b2,0xba806775,0xba8c458f,0xba68d0a3,0xba63b2a9,0xba7d07bd,0xba96f0ba,0xbaa71f11,0xbabb3348,0xbaafbfab,0xbaa27cce,0xba8de1f0, -0xba6c9b55,0xba6b0ac2,0xbaa28653,0xba88aa1d,0xba66ed23,0xba118487,0xba57919c,0xba5b69e3,0xba67aa1b,0xba5a62ab,0xba458740,0xbaa1fe58,0xba9d4c9d,0xba88ba22,0xba91dc9f,0xba7824bb,0xba03a52a,0x3904bc4f,0xb926d5f8,0xb91e0427,0xb90cad47,0xb91db061,0xb983ab51,0xb9827f1e,0xba4579a7, -0xba8d5273,0xbaa5960b,0xba784d58,0xba906923,0xbab8c248,0xbac2155e,0xbae73e65,0xbb17878d,0xbaf5795c,0xbaca257a,0xbac612ff,0xba5d39e8,0xbaa66634,0xbb2ecc73,0xbad70169,0xba5b05ce,0x39c72497,0xba415508,0xba92db47,0xbab8110e,0xba6698b2,0xba47e42c,0xbad30b39,0xba5d9adb,0xba1eaaa4, -0xb9b9e0d0,0x38f3f96c,0x3929a836,0xb79e554c,0x37d83f10,0x38934459,0x37fc0e92,0x38940f4d,0x38c1cc17,0x38f5a359,0x394faa64,0x39985c2e,0xb9904891,0xba100d55,0xba005d2f,0xbacb3413,0xbb0215f8,0xbb3a7857,0xbb758c43,0xbb4d980e,0xbb1fc022,0xbae97977,0xba18bd97,0xba5276b9,0xbb65efbf, -0xbad2ad50,0xba55470b,0x3ac5aa06,0xb9dc0341,0xba1de8b5,0xba5d8613,0xba089fb0,0xb82173a2,0xbad59676,0xba39d41a,0xb9d715af,0x394e8e34,0xb77e622e,0xb8406e7e,0xb774a0a5,0xb78888cf,0xb812542f,0xb75946ba,0xb7f7fc6f,0xb87cfd44,0xb855bc12,0xb90db0ee,0xb8b50dd0,0x396b3ac2,0xb9b403bc, -0xba8281c9,0xbae9f454,0xbb0aa47d,0xbb3cdc65,0xbb931b8a,0xbb6e20fb,0xbb36d89b,0xbaeb98da,0xb9b4b561,0xbac7c202,0xbbc38577,0xbb01b836,0xba113ab8,0x3b7435bc,0xb9526be9,0xba4fbe7f,0xbad0094f,0xba01e7cc,0xba4d4d87,0xbb21b960,0xb9c861ac,0x39341381,0xb7cbd9d0,0xb8076430,0x381445ec, -0xb73b084b,0x3792d4fe,0x374ba83d,0x37c604e9,0x3767e3d3,0x37283882,0x38113f75,0x386ccc21,0x36128abe,0xb8723c6b,0x38eb1049,0xb9ab748b,0xbb0d9fec,0xbb4bb244,0xbba59eac,0xbbe11ab0,0xbbbfba99,0xbb870cc8,0xbb3162f4,0x391e5e56,0xba419066,0xbbbb601e,0xbb30a5dd,0xb9a5017d,0x3b6afa17, -0x3979de60,0xba319ddd,0xb9d29165,0xb88ae995,0x39a16429,0x3b4ce8ec,0x3a22e563,0xb9230076,0x37addc2e,0x34dd1b7c,0xb6e7a738,0xb734b5a5,0xb6abc7a9,0x35524f4a,0xb6f00262,0xb6cda33f,0x3574ab7a,0xb7cecd6b,0xb7804940,0xb707fa22,0x38556e32,0xb8e8ec34,0x39b40e82,0x3a41c3c1,0x3b2f053f, -0x3b9eed65,0x3bf82c06,0x3c353f73,0x3c079ce6,0x3b8bed6f,0x3a159bd7,0x3a3ebe2c,0x3b0760c4,0x3ba47daa,0x3b929910,0xba444096,0x3b6247fe,0x3b83dcde,0x3ba6211c,0x3a0d8521,0x3afc7c5b,0xbab0fd75,0xb92d6e86,0xb8dcfd1c,0x38f91b16,0xb8a17e59,0x38919258,0xb83b1f46,0x37bcefa8,0xb6e77c5a, -0x36d70b49,0xb44f3d89,0x3711835f,0xb58553c8,0x37d8daf1,0xb80a252a,0x38290fc3,0xb8aeabb8,0x3809d3a9,0xba81eaee,0xbb51af76,0xbbaed2b1,0xbbdfad1e,0xbc09cc6a,0xbbc3051f,0xbafac325,0x3b537cc1,0x3ba23e73,0x3b572e39,0x3a811765,0xba72fd6e,0xbb5e4572,0xba1be57f,0x3b2c25db,0x3bd94330, -0x3b97899b,0x3b614d35,0x3bfbf261,0x3b03f867,0xba85e211,0x39e28426,0xb9442d30,0x38cb3b86,0xb844434e,0x37ec78aa,0xb76db5c3,0x37073d47,0xb6c4b7cf,0x36134e17,0xb5d5a91e,0xb679622e,0xb61b08a4,0x36afc780,0xb8613e11,0x3924cf4b,0x3a3ef7b2,0x3aafc0dc,0x3b2483c2,0x3b4dc878,0x3b643f9d, -0x3b50dc95,0x39b5fc68,0xbaf31a95,0xbad0766d,0xba9b4173,0x3b471d81,0x3b7ede83,0x3ae9235c,0x394a604d,0xbabbf54c,0xbb99c148,0x3ac42a1f,0xbab46297,0xbb7fa49f,0xb9ef601d,0x38a77a7d,0xb8a3c049,0x38910eef,0xb81cb070,0x363db1d5,0xb65d433f,0xb5cd7a1c,0xb68de15f,0x35bad260,0xb7290a79, -0x3758242e,0xb7b070ab,0x382710d5,0xb8a3266d,0x391a6724,0xb9fad4b2,0xba5cbec2,0x3a6c0794,0x3b3319be,0x3b4bb63d,0x3bb57389,0x3b8f0b16,0x3a2598dd,0xbb152605,0xbad73254,0x3a75ce02,0x3ae7cc34,0x3b16d8a7,0x3a558424,0x39fd13fa,0xbaa033d0,0xbb23c064,0xbaaecb7f,0xbb964447,0xbc406159, -0xbaf0cd69,0x3aa9597b,0xba01225f,0x397147ce,0xb8a6c12c,0x388221a7,0xb78f9c6d,0x378a84e4,0x363ecbb5,0x36c6b769,0x36fc93fa,0x371c6618,0xb6b93bb1,0x37549d2c,0xb8a14120,0x392beeea,0xb9dbb929,0xbb1e4cdc,0xbb0d4f43,0xbb6583f0,0xbb8454b4,0xbb8fb4f4,0xbb7e6095,0xbb190fa6,0x3af3604c, -0x3b8a84cb,0x3c15784c,0xba9c2bff,0xbbbaeaa0,0xbbd59d20,0xbaeb4e21,0x3b27357e,0x3bdb25b4,0xba9420cf,0x3ba97b9d,0xbc3b5147,0xbb8bcb1b,0x3a22a9a8,0xb9543531,0x389f5a85,0xb87116ae,0xb6b2bb55,0xb8013242,0xb6f7fc27,0xb780c32b,0xb71515c5,0xb752d805,0xb7a37c61,0x37032513,0xb8359a48, -0x393af140,0xb9c2b5f1,0x3a755846,0x3b4bc6fc,0x3b1d9cac,0x3b2c9c21,0x3aab9e19,0x3a25b878,0xb9d90c9b,0xbb001036,0xbb3e4599,0xbb72ec74,0xbb61995a,0xbb0fb584,0x3908aaca,0x3b286620,0x3b844f02,0x3b9f4448,0x3bbad1db,0x3c02500b,0x3a511c76,0x3a886526,0x3afa6fd3,0xb916b8e3,0xb8714229, -0x3823413f,0xb699a95a,0x388798b4,0x37b5f442,0x383cbb16,0x37881af0,0x37da7ad9,0x37b1ab95,0x37bf1eb6,0x3798ee2d,0x36f0d2ab,0xb8e8f0c1,0x35ce5a04,0x3afa72cb,0x3b307235,0x3aecba2c,0x3a9a0a6a,0x3a86080b,0xb8e81858,0xba2256f7,0xbaf28e9d,0xbaec6014,0xbaf43af3,0xbabf7901,0xbb0a372f, -0xbb1730c2,0xbad41ac6,0xbad41084,0xba0e696b,0x398c5a51,0x39306970,0x3ab4b6d1,0x3b361a59,0x3aed9ea2,0x39b50edc,0xb8ea3b91,0x37a32ee4,0xb8e3b3a2,0xb8aeecbd,0xb8dbcf0d,0xb88f1356,0xb86439de,0xb831e5ad,0xb8890a70,0xb82d2376,0xb8763873,0x36ce6422,0x38caf8bf,0xb69961be,0x37c0f0ef, -0x3a03928e,0x3995b27c,0x37207f40,0xba41f070,0xb9f5863f,0xbaa666b7,0xbb17c397,0xbb207b5b,0xbb3e046b,0xbb488578,0xbb0bb35e,0xba8fdd29,0xb9fd6cfc,0xb9ed9e55,0xba0a67d0,0xb887aa2a,0x3a42ec82,0xb624299e,0xb992b173,0xba255660,0xb860ee20,0xb7183c08,0x38df4289,0x394e990d,0x3900bab3, -0x3955819b,0x38bf2920,0x3902666f,0x389d136b,0x38e5b170,0x38f11f8b,0x38f8974e,0x3892c72c,0xb93286f9,0xba22cd4f,0xbaa6ed85,0xba9ad516,0xbac8ba82,0xbaa4f7f1,0xbabf1da4,0xbb00036c,0xbb075e33,0xbaf5acaf,0xbac37f3b,0xba92eccb,0xba7d979c,0xba776292,0xba8b3c71,0xba808d69,0xba37950e, -0xb9846143,0xb91d91d3,0xb8288f25,0xba9db34d,0xba5c9d17,0xba9f8f1c,0xba9954d0,0xba8630d7,0xba895972,0xba037b23,0xb9fb4b5e,0xb9a13610,0xb9e14c4b,0xb9c4ea7d,0xb9abd585,0xb989ecf9,0xb987dd91,0xb9c4f485,0xba111f8f,0xb9e3935b,0xb9229c9d,0x3a75fc5b,0x3a38d781,0x3a2dc429,0x392684d1, -0x38f57194,0x38906d47,0xb8fbf0aa,0xb9c67699,0xba67e3ad,0xba8edc99,0xba9f0862,0xba974375,0xba76e5be,0xba77c220,0xba8f5ac8,0xbaa5e377,0xbaac2117,0xbaafa90a,0xba3e81dc,0xba5f6b46,0xba650f7c,0xba461feb,0xba2cc045,0xba4caaaa,0xba5d9eb4,0xba7760c1,0xba75a7e8,0xba59ab5c,0xba4ac515, -0xba4386b0,0xba3c20b1,0xba285bf7,0xba141026,0xba0b994e,0xb9600ed3,0xb9ec35cb,0xba3fb078,0xba670d23,0xba5f7d80,0xba60d93e,0xba6e2e40,0xba81a5ee,0xba7a95b2,0xba5d1624,0xba451ef5,0xba2186ed,0xba18449f,0xba265fa3,0xba40c35f,0xba4ea804,0xba3c5c2b,0xba27a1b7,0xba21df63,0xba296436, -0xba7de50f,0xba20ffae,0xb9b690e4,0xb9b1bd31,0xb9c5c494,0xba0a0e2d,0xba2a8684,0xb9773661,0xb981b84f,0xb924f02c,0xb9627e59,0xb972d4a7,0xb96f64a8,0xb98aa3f4,0xb9932476,0xb98944b1,0xb990a375,0xb976b8f2,0xba3fe240,0xb9f736ed,0xb9b1183c,0xb9a2a80c,0xb9dfac70,0xb9f78308,0xba08823a, -0xb9ed5460,0xb9dbb3a6,0xb9cc13bd,0xb9b3c050,0xb9b72456,0xb9efca64,0xb9d03e5d,0xb9b0118f,0xb95fdf15,0xb9a01a0a,0xb99cb496,0xb99766d0,0xb99e77e0,0xb9b86970,0xba10830f,0xba485c8d,0xb98cdf43,0xb959c459,0x38c5291f,0x387df25d,0x38240937,0x37d7caed,0x38556ed4,0x37e93bea,0x37ba9e93, -0x37ed5543,0x38c05803,0xb79f67eb,0x390363bd,0xb93ba1a7,0xb94500c9,0xb9d62234,0xb9e2b281,0xba0c40df,0xba2de761,0xba5a89da,0xba1c1b53,0xb9f9cddb,0xba0cb614,0xb9e29d4a,0xba1a1f19,0xba7a45be,0xba28a142,0xb9be164f,0x388e22b3,0xb9ba17ed,0xb9f304e9,0xb9e0382e,0xb9b928c4,0xb98b890a, -0xba3fbf5b,0xb98c270a,0x39098528,0x38bb47ac,0x381a77ff,0xb7f0777d,0x379ebc22,0x350974cb,0x3780474c,0x37020818,0x3818adeb,0xb6b9c28b,0x36aa8242,0xb807ed21,0x372a1b52,0x3903a4fc,0x388633c0,0xb872dbd5,0xb9de07ec,0xba3fa7c6,0xba8b4667,0xbaad09ed,0xba71a0bc,0xba2f2cb7,0xba1c5153, -0xb9b33c15,0xb9f65877,0xbaa40c21,0xba2e1103,0xb9c4a851,0x39e12db8,0xb95f5a32,0xb953a957,0xb8d07b42,0xb968acd9,0xb8fe59a3,0xba8c453a,0xb8eeb382,0x387ece66,0xb83b38b5,0xb7f2d734,0x375e053f,0x3707c841,0x373758b3,0x37014520,0xb6a6ccbe,0xb70b84fd,0x36ff3925,0x370f94b0,0x3810f26b, -0xb598c79f,0xb894af18,0x38aba2fb,0xb804af6f,0xb9ed685d,0xba387e53,0xba8afdf2,0xbad4f817,0xba712496,0xba1f8580,0xba209618,0xb9e01aa8,0xba67f352,0xbb054ea4,0xba575de4,0xb9b82812,0x3a94a464,0xb9a0ca20,0xb9d87279,0xb98052c8,0xb98d457f,0xb9ba6c44,0xba80610b,0x39955d95,0xb873e919, -0x37db8284,0x37b3e69e,0x3544053b,0x36fae960,0xb61d162a,0x373be71b,0x35d0465f,0x371773ef,0x36cb2f30,0xb5da4ce1,0xb781a265,0x37870f25,0x37b32196,0xb754fa3d,0x38f297a8,0xb9fce0f1,0xbaa606c5,0xbafe5ca7,0xbb1e7252,0xbad8ded6,0xba81e13d,0xba511a68,0xb91af81f,0xba206132,0xbb04597c, -0xba9277b8,0xb995b171,0x3a8a26a8,0xb72ed79e,0xb8ded403,0x398b29eb,0x363b8efb,0xb964c992,0x3a5abe4d,0xb8f101e8,0x3651a533,0x37202fd5,0xb743f214,0xb6a6f51d,0x35d2d550,0x3594e160,0xb6a99651,0x365a3ddb,0xb5ea0e72,0xb68169a3,0x3626e267,0x36700e62,0x36978faa,0xb80a521e,0x38aa0946, -0xb949e363,0x3a959025,0x3b089864,0x3b32fd5c,0x3b6df202,0x3b69f440,0x3b0f9b72,0x3a7ee028,0xb9490711,0x39ad4bd1,0x3a74bc53,0x3b1d9d98,0x3b02c2cc,0xba8339e9,0x3a848596,0x3a7bacc8,0x3a81b38d,0xb99b07c6,0x3a5d4c69,0xb807d967,0xb923a1be,0x390d6080,0xb890d804,0x3851827b,0xb7b2cfea, -0x37ac96ac,0xb6b31275,0x36a36aaa,0x3365626e,0x36565204,0x361a8503,0x36674014,0xb5e7a419,0x373993b2,0x376dedce,0xb74b7973,0x390cc541,0xba4fa297,0xbae79a64,0xbb27673d,0xbb41d5cf,0xbb4892c0,0xbaee074b,0xb8e20300,0x3adbd456,0x3b03b432,0x3a5943d8,0x392cc65c,0xb9d26e26,0xba9db348, -0x3a3c84b1,0x3b048059,0x3b337730,0x3af64f1c,0x3a7cf07b,0x3af7862d,0xb982beeb,0x39136b8f,0xb87f46c6,0x383daa0c,0xb7585cfa,0x37853643,0xb7173ca3,0x36a51b3e,0xb6375eaf,0x359f6338,0xb40f39e8,0x35109f52,0x36dbb1f3,0xb6611f02,0x373b54bf,0xb6fa6673,0x3794b17f,0x3939424f,0x3a0439d6, -0x3a6152d4,0x3a9e3dd9,0x3a83ca21,0x3a4e5fa2,0xb9619f17,0xba62e850,0xba1df29e,0x397d2415,0x3a95fbd8,0x3a9fe922,0x3a085545,0xba290ef1,0xbaafbc93,0xbabd6eab,0x399e7ab6,0xba3dea40,0xbab6761e,0x38c0c7e7,0x37e68474,0x3600688c,0xb7dc067b,0x3761d429,0xb690dcfd,0x35ae1422,0x35e9b296, -0x3499363c,0x35630f24,0x361e4960,0xb530334b,0x36627f75,0x35050b66,0x37037bef,0x379c0145,0x373a9e60,0xb8930622,0x3a2b377d,0x3aaaaa85,0x3acf7469,0x3af9212f,0x3aaf3ec2,0xb8e51ae1,0xba2b5db3,0xb9a8330a,0x3a36f399,0x39b48ca6,0x39c7a9d9,0x3a39d719,0xb9b55904,0xba5f797d,0xb8db7b86, -0xba0d59ff,0xbad8f355,0xbb231d02,0x3a83c76d,0xb9ed1af1,0x3900116e,0xb7fd3232,0x3728325d,0xb7383206,0x365bf2c3,0xb61be58e,0x331fca74,0x35070523,0xb5218373,0xb5a7c49b,0x35e9b6a2,0xb4c08bce,0x373bc62c,0xb81579c4,0x39148521,0xba186e01,0xba23c8b2,0xba914f3f,0xbaa84728,0xbaa5f12c, -0xba4ecef0,0xb8e65742,0x3b043c4f,0x3b16d8f2,0x3b341409,0xbabb25cd,0xbb256742,0xbaa6f515,0x3908f948,0x3aeb6501,0x3b66c8c0,0xba1647ad,0x3b80431f,0xbb1dcf5e,0x3887a0ef,0x392df1d8,0xb8d7f82e,0x382851a1,0xb73d6e39,0x37285df0,0x34d852b5,0x363fd20f,0x36041660,0x3531b8ca,0x36264982, -0x364498a6,0x36da2c50,0xb6ae883d,0x36f5acbb,0x385734c5,0xb9571466,0x3a870892,0x3a2baf33,0x3a35585e,0x38b184fc,0xb8d1b7d8,0xb9f6a5e0,0xba834bc0,0xbabb0fd2,0xbabd42a4,0xba847048,0xb970a5e4,0x3a49442d,0x3b115d88,0x3b546d46,0x3b7fdcb4,0x3ba7c231,0x3b9d2ea8,0xb9ee137d,0x396d95d4, -0x390a596a,0xb9072bc3,0x38c0990c,0xb803f504,0x37ea1e6a,0xb7b8b1a5,0x36af5c57,0xb6ffb96b,0x3691b4f3,0xb5abdb9c,0xb5ee7532,0xb6be3ab9,0x36d3ea11,0xb732337c,0x38a04797,0xb8d4988c,0x38af2252,0x3a9b3d35,0x3a3dc975,0x3a3b04a5,0x3a2b3338,0x397b25cc,0x382046a7,0xb99f2400,0xb9b0564c, -0xb9c566fb,0xb9a97637,0xba2a747d,0xba5abfa8,0xba508618,0xba7a63cc,0xba483f7d,0xba2b09a4,0xba481339,0x39da67f0,0x3ab270c6,0x393abad3,0xb94e1061,0x38c536e3,0xb84dc95a,0x38033270,0x3786382d,0x377f3f27,0x371762ee,0xb5b2290a,0xb674fe61,0x3738d667,0x36f7df6a,0x37ac76f2,0xb725a8b6, -0xb81ef16e,0x381b2490,0x372d8308,0x38b37be2,0x394efb26,0x38c5036a,0xb9293db4,0xb8ba59a5,0xb9d29579,0xba49dbe5,0xba6669ff,0xba894d6c,0xba897447,0xba337c8d,0xb9c25299,0xb9455267,0xb9b8a3d8,0xb9d3f403,0xb8d3181c,0x3993e983,0x39fb042b,0x39d23c76,0x3908b524,0x3918b761,0xb79ad554, -0x373b7cda,0xb82682ca,0xb72f16d8,0xb7c6350c,0xb6039af5,0xb7331203,0x37883f68,0xb73c3073,0xb6fca5b9,0xb8216089,0x37bd7bd9,0x38886ef7,0x392bc621,0xb9d0469d,0xba3e78b8,0xba3f2509,0xba385e48,0xba3e2678,0xba6f8768,0xba726b98,0xba61b976,0xba385fb6,0xba1c8577,0xba239bed,0xba0ee829, -0xba034cda,0xb9be07f3,0xb82270fe,0x39a17a8a,0x39c15dd3,0x39e097fd,0xba0ce7f3,0xb9a006da,0xba0b6145,0xb94bf8dd,0x35ead868,0x389b4050,0x390654cf,0x389e1934,0x38832764,0x389eb7ad,0x388cd159,0x387e63f7,0x38755955,0x38933420,0x38ebf4cf,0x38a07d0c,0xb9280b6d,0xb9882e39,0xb9c8dcb1, -0xb981685e,0xb96f112e,0xb9e257f5,0xb9e3ffd9,0xb9f17f09,0xba06b0a1,0xba1a6507,0xba3ec552,0xba3937fd,0xba273a5e,0xba18e44d,0xb9f6d8ad,0xba02e270,0xba1b295e,0xba48977d,0xba37f6b4,0xba23479d,0xb99f7f03,0xb9ac0be8,0xb9e06969,0xba067144,0xba19bd5c,0xb982e0b2,0xb98a5841,0xb9934a5b, -0xb98da9ab,0xb9919820,0xb9913ff0,0xb98fc1bd,0xb98ef69c,0xb994491b,0xb98966a2,0xb96da517,0xba13727c,0xb9f41cd4,0xb9e4d25c,0xba05d018,0xba0a9ef8,0xba0a23e6,0xba0db302,0xba140786,0xba0ff1f2,0xba044608,0xb9f47989,0xb9d9c637,0xb9dbe8c7,0xb9e40af8,0xb9e6ccf4,0xb9de62b0,0xb9b0d28c, -0xb995f782,0xb9822f9f,0xb986fcbb,0xba4090e7, +const uint32_t defaultHRIR_rom_AlphaR16[470 * 43] = { +0x3f02f158,0x3ef2f693,0x3f03a369,0x3ec46d8a,0x3e94ac59,0x3e106c69,0x3ed4ccf7,0x3e95d249,0x3e17dce4,0x3e106b8e,0x3e0f8ab1,0x3e1bc099,0x3e05c345,0x3e01bb92,0x3e0157b1,0x3e91a887,0x3ec5ea15,0x3dea0cd2,0x3e9187c9,0x3eb88fb2,0x3ef73bfd,0x3ee40a66,0x3eed60de,0x3ef0e226,0x3ef3d05a, +0x3ef74404,0x3efa8691,0x3eff5d6a,0x3f0216ea,0x3f04a754,0x3f06f285,0x3f09006f,0x3f0c7088,0x3f09ff62,0x3f0785cd,0x3f02431d,0x3eff646c,0x3f0e5dd7,0x3f0a461e,0x3e8a473c,0x3ee48418,0x3eaee79f,0x3eaa364f,0x3ebb5a4d,0x3eac3241,0x3ebef4cd,0x3eb29698,0x3e9b3322,0x3eae9f33,0x3eac2b9c, +0x3ea99e00,0x3e8f7afa,0x3ea0f40f,0x3eae7384,0x3eb1fd9d,0x3e6c1572,0x3ee2d1e7,0x3eebfaae,0x3ef3e85f,0x3f008f6e,0x3f03c4b5,0x3f08a7d1,0x3f0da213,0x3f1418d9,0x3f1b0f90,0x3f22cbde,0x3f2ab812,0x3f3305f5,0x3f3c2bd0,0x3f39df3b,0x3f319c7b,0x3f211227,0x3f174a30,0x3f16cac8,0x3f01f13d, +0x3eb60a85,0x3eb45d99,0x3e7f50dc,0x3e7fde43,0x3e6a6019,0x3e5a4afd,0x3e2b40c4,0x3e5861f5,0x3e0d9e1c,0x3e67afe5,0x3e0b0c1d,0x3e519148,0x3e1d2405,0x3e5610d7,0x3e6fb5c4,0x3e6e6366,0x3e80bef5,0x3eae9574,0x3edbe0fc,0x3ee6d92e,0x3f02ce3b,0x3f099d87,0x3f146338,0x3f1e6fc4,0x3f2ba9b3, +0x3f38c6f2,0x3f478f5b,0x3f548de2,0x3f624b22,0x3f7103ac,0x3f6a7af5,0x3f5bb96e,0x3f3b67ae,0x3f24d951,0x3f22da2d,0x3ef5d3c7,0x3e911072,0x3e90b162,0x3e509d18,0x3e2d1d26,0x3e1b9998,0x3dcdfa56,0x3d9efd38,0x3d4a9737,0x3d7ffc9a,0x3ccae5f5,0x3ceb4b18,0x3d52d97a,0x3d432932,0x3dbba5b3, +0x3d72d4bb,0x3e12141c,0x3df87909,0x3e7cac26,0x3eb4ec56,0x3ec86433,0x3eef74e8,0x3f000f09,0x3f0e117f,0x3f1c8946,0x3f2f0628,0x3f44221d,0x3f5ba1e9,0x3f7372c2,0x3f87c82a,0x3f975764,0x3f95b6c8,0x3f886c93,0x3f5ad9f4,0x3f32b58a,0x3f3dfa3e,0x3f0391e1,0x3ec81751,0x3e9e01ac,0x3e4d7b3b, +0x3e1a8ae6,0x3e1e8db8,0x3de07740,0x3dc313c6,0x3d96efd4,0x3d9c6940,0x3d6aa789,0x3d35a2d8,0x3cfadc47,0x3d8ba1dc,0x3de1dfe1,0x3ddb92b9,0x3e490127,0x3e5f5f87,0x3eb75172,0x3f0b119a,0x3f2141d1,0x3f48fa38,0x3f6115be,0x3f7ec370,0x3f8d9fe9,0x3f9883c0,0x3fa1d3ab,0x3fa5879f,0x3fb2f607, +0x3fb0d4c8,0x3fa18bce,0x3f9664f3,0x3f89e2c0,0x3f80d036,0x3f598969,0x3f61d9ad,0x3f17be4c,0x3ed4ab3c,0x3ed1e42c,0x3ebe9d12,0x3e7f8e64,0x3e6039d2,0x3e09276a,0x3dcd046e,0x3d5912af,0x3d850757,0x3d818344,0x3d745ca3,0x3db57ff4,0x3dd2cc72,0x3e0c5d3f,0x3e35c554,0x3e85f764,0x3e8528d7, +0x3ecbd22b,0x3f10c139,0x3f1db223,0x3f3baae8,0x3f4d762d,0x3f681748,0x3f8328ee,0x3f8e30b2,0x3f974dfd,0x3f9c21c7,0x3faa6428,0x3fafb467,0x3fa6b492,0x3fa9e2a1,0x3fa07cde,0x3f93e899,0x3f792afb,0x3f9227a0,0x3f48d628,0x3ecf12b9,0x3edb0189,0x3e925017,0x3ea44a1c,0x3e0ce791,0x3e25b96b, +0x3da7c38c,0x3e012d49,0x3df00c56,0x3da4598b,0x3dcf92d7,0x3e0908b7,0x3e178cc3,0x3e5ed6e5,0x3e65a38d,0x3e82e07d,0x3e86287e,0x3ead1021,0x3ef151bc,0x3f04c31e,0x3f25d26b,0x3f37bee8,0x3f5731b6,0x3f7cb915,0x3f8e3934,0x3f9ba0e8,0x3fa52750,0x3fa084a8,0x3f9b8008,0x3f9a18ae,0x3f9d5902, +0x3fa358aa,0x3fab5b7b,0x3f9c3307,0x3f99df51,0x3f61b04c,0x3f095444,0x3f07c2ab,0x3e81491f,0x3e9fb37f,0x3e3d31a2,0x3e0bddda,0x3db68830,0x3e09ec63,0x3e638e4b,0x3e04a312,0x3da795df,0x3dc0c023,0x3e23380e,0x3e2af1b6,0x3e630175,0x3e9ea686,0x3e6d015e,0x3eb8ad0b,0x3ede7a7d,0x3ef312cf, +0x3f16b499,0x3f3e78bd,0x3f5d7823,0x3f72fb3d,0x3f89dca5,0x3f955c13,0x3f9cd636,0x3fabec80,0x3fb35f7e,0x3fb62d48,0x3fa9ba8e,0x3f9e79a5,0x3f99d50a,0x3f9bf342,0x3f9d8036,0x3f7b27b7,0x3f120fec,0x3ef39e5a,0x3ed3a892,0x3e744f51,0x3e938ada,0x3e9a8a32,0x3e27623f,0x3e3325a0,0x3e08d31e, +0x3e02315f,0x3e104d9a,0x3e286484,0x3e4cf10c,0x3e5317c6,0x3e8a664a,0x3ea13a90,0x3e8dbde7,0x3f029ed9,0x3f11387a,0x3f077f97,0x3efe0b88,0x3f182f26,0x3f388c07,0x3f64d786,0x3f818f20,0x3f913a67,0x3f9fead6,0x3fa2b14c,0x3fa61c85,0x3fafd010,0x3fa8d2b4,0x3fa6dfe9,0x3fa4f0fa,0x3fa5e8a6, +0x3f88db94,0x3f686433,0x3f0919de,0x3f03d70b,0x3eaf9d46,0x3ea340c0,0x3e9fb812,0x3e63e9b7,0x3e7ebdb2,0x3e651225,0x3e91e9e2,0x3e0d395a,0x3e10354d,0x3e3ca0b7,0x3e741f13,0x3e9999b4,0x3ec89949,0x3ec9b19e,0x3ec2b8cd,0x3f09edae,0x3f291acb,0x3f1e35de,0x3f1025d7,0x3f1bc9a6,0x3f2cae3f, +0x3f42aba9,0x3f57ad1b,0x3f6b9514,0x3f7f3ef7,0x3f872429,0x3f8f06f0,0x3f952f7c,0x3f964b17,0x3f93df5b,0x3f8cd093,0x3f89ea86,0x3f702237,0x3f4721d2,0x3f0f49e5,0x3f17b81b,0x3ed3bd0f,0x3ec157f2,0x3e9fff21,0x3e814cdd,0x3e43a1eb,0x3e98cff5,0x3e2f23e9,0x3ec02f52,0x3e2ee8fe,0x3e9b9aed, +0x3e47f25e,0x3ea2d73c,0x3e9e5c05,0x3eba495e,0x3eb9cb24,0x3f077407,0x3f21b340,0x3f1383ca,0x3f1b7dd6,0x3f230ce8,0x3f2a9f48,0x3f2df058,0x3f448499,0x3f5645ce,0x3f678d82,0x3f752f22,0x3f80d9c6,0x3f87bc36,0x3f866eea,0x3f853348,0x3f854358,0x3f7308d2,0x3f4d2c56,0x3f4ea2af,0x3e9a2e94, +0x3f2a2912,0x3ef9d048,0x3ef8556c,0x3f0f942c,0x3f03625b,0x3f1bdbdf,0x3f146367,0x3ef3f276,0x3f0f9cd6,0x3f0f2170,0x3f0ae089,0x3ee30b6e,0x3f018335,0x3f0a1df4,0x3f06f231,0x3e86b6f2,0x3f2be77a,0x3f2e736a,0x3f2fdebd,0x3f34b027,0x3f36d94e,0x3f3bd98b,0x3f3ef341,0x3f4a742d,0x3f522be7, +0x3f5a31cc,0x3f6041f3,0x3f660b0b,0x3f6dc950,0x3f64dd6e,0x3f5d51d7,0x3f581315,0x3f50bc23,0x3f3fd5e2,0x3f55e79f,0x3f15f3af,0x3ed5967c,0x3e0fb9dc,0x3f2b167c,0x3ed80bb7,0x3e1b698f,0x3e0c3391,0x3e085da6,0x3e2ad1c4,0x3dfcd47b,0x3dedc007,0x3df0df70,0x3ed28c36,0x3f1bac8d,0x3d9e0ae7, +0x3ece2576,0x3f0bb930,0x3f4bd542,0x3f365100,0x3f3d0202,0x3f3d955d,0x3f3eb02e,0x3f3f6bbf,0x3f3f6722,0x3f41dea4,0x3f43f75c,0x3f464796,0x3f493e71,0x3f4bd93c,0x3f502016,0x3f4ca965,0x3f4b0aea,0x3f484248,0x3f47fbe1,0x3f590a70,0x3e9c6ca6,0x3e9ad2da,0x3e871018,0x3ebefe1d,0x3edd8526, +0x3f049b89,0x3e9f02c8,0x3ece5921,0x3efdc856,0x3efe4ac2,0x3efc0128,0x3ef8635f,0x3efe4547,0x3f006c81,0x3effc3fc,0x3ecce7ef,0x3ea4300c,0x3f055237,0x3ed3fc8f,0x3eb876fb,0x3e806ea3,0x3e91962e,0x3e8cba92,0x3e8aad79,0x3e8a0054,0x3e89f58f,0x3e8be899,0x3e8b6019,0x3e8aff7d,0x3e8a6a05, +0x3e89950a,0x3e8a23e8,0x3e88d533,0x3e901c5a,0x3e931819,0x3e9605eb,0x3e95e4c1,0x3eb2e04d,0x3eb624e9,0x3f05915a,0x3ead4114,0x3ec256d4,0x3ebd0479,0x3ea30d7b,0x3ea1edeb,0x3e86d1c3,0x3e908e56,0x3ea686dd,0x3e9590cf,0x3e93e423,0x3e936cd1,0x3eae8724,0x3ea99052,0x3ea5ff39,0x3eac086a, +0x3ee58772,0x3e9ef081,0x3e9ca8af,0x3e9ce755,0x3e960e19,0x3e95d75d,0x3e975132,0x3e9e6157,0x3e9e9506,0x3e9d8927,0x3e9a1638,0x3e928287,0x3e8d376e,0x3e862a7e,0x3e95c4eb,0x3ea23831,0x3ead97b5,0x3eb339f2,0x3ed53073,0x3ee9718e,0x3ef19cbe,0x3ec90a1c,0x3ec1a0d6,0x3eb0f858,0x3ea0049f, +0x3e8eb873,0x3e8b7649,0x3e6f897a,0x3e9916dc,0x3e757cf1,0x3e936b48,0x3e78db6b,0x3e9695b1,0x3e9131f1,0x3e988cc2,0x3ea88f84,0x3eb57676,0x3eac3f15,0x3e9967ba,0x3e9c49b5,0x3e8c9019,0x3e89a89d,0x3e897e99,0x3e94d665,0x3e946887,0x3e93ba17,0x3e8faeac,0x3e87a14e,0x3e83f322,0x3e7141d9, +0x3e9b7ba0,0x3eb0ed75,0x3ecc1bf3,0x3edc8a25,0x3ef36135,0x3f0d3ea6,0x3f0ab587,0x3ed3b7ee,0x3eac8dc2,0x3e9c0ed1,0x3e8130ff,0x3e4f1509,0x3e1c319e,0x3e0e99b9,0x3e1542d9,0x3e08b693,0x3e074efb,0x3e064b40,0x3e2a42d9,0x3e4391ff,0x3e709b36,0x3e836249,0x3ea7db20,0x3eac87cb,0x3ea43c34, +0x3ea4c62b,0x3e9663c7,0x3e98aa67,0x3ea03e75,0x3eb6ecc5,0x3ebbeec1,0x3eb92dea,0x3eabcfe3,0x3e904807,0x3e620931,0x3e121e76,0x3e67202a,0x3ea01560,0x3ed9082a,0x3efcacc8,0x3f24ee48,0x3f269f3a,0x3f1ee8dc,0x3f0bfb37,0x3ee57180,0x3ec703f2,0x3e9ef47e,0x3e77c957,0x3e344063,0x3e105a22, +0x3e21c107,0x3e1d2a59,0x3e1c4cfd,0x3e13437f,0x3e2963a9,0x3e490193,0x3e85d1d4,0x3e950275,0x3eb3ece2,0x3ea78e67,0x3e944ad0,0x3e8d8775,0x3e34a459,0x3de5f68c,0x3d5c05ff,0x3d1be8e6,0x3c816a86,0x3d117860,0x3df8487d,0x3e0b91dc,0x3e8671da,0x3eede233,0x3f0f667c,0x3f1f8d32,0x3f22fd7a, +0x3f28ce6c,0x3f18e2f6,0x3f387b04,0x3f3c614c,0x3f1cbba5,0x3f04ce43,0x3ee80aa5,0x3eba22de,0x3eb0c18d,0x3e8bdbe4,0x3e6fe976,0x3e760e43,0x3e21a46a,0x3e05faed,0x3df67d4c,0x3e24eaa6,0x3e4b0d7c,0x3e83986d,0x3e951f78,0x3ecab6cb,0x3ed896e5,0x3ec4bebd,0x3ec3684f,0x3e9af55e,0x3e97f6a2, +0x3e8b2131,0x3e7a2636,0x3e8934f3,0x3ea1829c,0x3ec8856b,0x3ecadb1e,0x3ee7d594,0x3f16c925,0x3f15ce6e,0x3f220439,0x3f2a3540,0x3f252969,0x3ef80c10,0x3f2ea352,0x3f5141ae,0x3f1a6af3,0x3f11704d,0x3ed93a1d,0x3ed8455a,0x3ea4598b,0x3e9543eb,0x3e918a29,0x3ede134b,0x3e9f02a7,0x3e940757, +0x3e80155c,0x3e7bddac,0x3e882340,0x3eb36e7f,0x3ed0ef12,0x3ee8e6d4,0x3ef712bd,0x3ee8bc86,0x3ee426d9,0x3ebd518b,0x3eb41846,0x3e96844c,0x3e66501d,0x3e4cf29a,0x3e768da1,0x3eaf79a9,0x3f122060,0x3f3bcfc5,0x3f4a1356,0x3f5276b3,0x3f33c5f8,0x3efdb8e3,0x3f076ec2,0x3ea4f1ca,0x3f16cd82, +0x3f44dd18,0x3f0c3dd2,0x3f19180b,0x3edcb305,0x3ed462ed,0x3ebf64c4,0x3ea340d5,0x3eb33706,0x3f1a7d7e,0x3e92e4f9,0x3e66540a,0x3ea41c27,0x3eab53e0,0x3eca520e,0x3ee72a1f,0x3ee77d1a,0x3f05d2d4,0x3efb3df6,0x3ef5c538,0x3eee2197,0x3ecfb6e6,0x3ea37542,0x3e8a78c1,0x3e8b6ed4,0x3e79287c, +0x3e88b97b,0x3ea76d63,0x3ebe111f,0x3ee3b88d,0x3efb6524,0x3f20d6ae,0x3f3c7cc7,0x3f4855e6,0x3f02628a,0x3e749da3,0x3e9fea62,0x3f2a25c0,0x3f0f93aa,0x3ef8cf0f,0x3f06834b,0x3ecc7fb6,0x3e9c50d4,0x3ecb958d,0x3ec3cad5,0x3ef639c3,0x3ec15db6,0x3eb2b0c2,0x3eb3b429,0x3ebb8d80,0x3eda641d, +0x3ee428ca,0x3ef6e643,0x3f12fbd3,0x3ee8cfbb,0x3ed6918c,0x3ef3f2f4,0x3f089ca3,0x3ef6215d,0x3ecfb9a3,0x3e9a31c5,0x3e800990,0x3e52b1f7,0x3e400056,0x3e7311b2,0x3ea70060,0x3ec13f22,0x3f062e5b,0x3f0a3387,0x3ef4b415,0x3ebae9c9,0x3e860762,0x3eb0eb9b,0x3f2cd7b5,0x3f08ce73,0x3f0c03bc, +0x3ef176e4,0x3ecbd8ed,0x3ed7c11d,0x3ecc074d,0x3ed31547,0x3eab88eb,0x3ee16e9d,0x3ed9b4d0,0x3ecd1fb7,0x3ece60be,0x3ed363e3,0x3ecbe3ca,0x3ef02cf6,0x3f0ea606,0x3edeb92f,0x3ec597d9,0x3ef1e645,0x3f072f02,0x3f081f12,0x3f0239e2,0x3eee795b,0x3ee02178,0x3eddf796,0x3eecd3c0,0x3eed4cf2, +0x3eeaec8f,0x3ee68cb8,0x3f016dd3,0x3f037710,0x3ef357a5,0x3ec8f8d8,0x3eb2b6db,0x3eec3586,0x3f21c9ec,0x3f01479f,0x3f1d4f10,0x3f0e07d9,0x3f0ab10a,0x3efe6a2a,0x3f0c3ca1,0x3edb46c1,0x3f099028,0x3eb98f9a,0x3f091b93,0x3edd5c11,0x3f0d324a,0x3ef85225,0x3f07fc28,0x3f085847,0x3f17a2f8, +0x3ef42aa0,0x3edd23ba,0x3f0e65e5,0x3f17363b,0x3f19fa0c,0x3f1baf9e,0x3f22c1c4,0x3f170699,0x3f0e88ef,0x3f0576a4,0x3efb4e02,0x3eeec8e4,0x3ee0939e,0x3ed7bfa5,0x3ed69ea1,0x3ed6d69f,0x3edf24a3,0x3eb20d84,0x3eaa3757,0x3f59db00,0x3ecf1f9f,0x3f0f9845,0x3f06eba5,0x3ed2f89c,0x3ed3d2c9, +0x3ea285cf,0x3eb8f1b3,0x3ee97699,0x3ebd8ea4,0x3eb46803,0x3eb752cd,0x3efd42de,0x3eec0d38,0x3ee8d0d0,0x3ef52928,0x3f49b9ce,0x3ec7f958,0x3eccd042,0x3edd3ff7,0x3ee3e34b,0x3ef061d4,0x3ef844e8,0x3f0230a3,0x3eeda1ab,0x3ee0bee0,0x3ed3bd46,0x3ecb9ec5,0x3ec29a5c,0x3eb9de44,0x3ebb3b1a, +0x3ebbc1f5,0x3eb6a505,0x3eb93181,0x3e940553,0x3e38eb6f,0x3f00a67b,0x3f2d1fe4,0x3f6c3ffd,0x3ebb2b20,0x3f2173d5,0x3f5e49d8,0x3f62a5f0,0x3f6165a5,0x3f57fd9d,0x3f620d21,0x3f651f00,0x3f630535,0x3f20a80c,0x3ed2a04a,0x3f74c910,0x3f29d9ce,0x3f042130,0x3e47810b,0x3e9a9a8f,0x3e93acab, +0x3e978c22,0x3e9c6d31,0x3ea0de06,0x3ea97aa5,0x3ea3518e,0x3ea04087,0x3e9c2b76,0x3e96ed9e,0x3e92059e,0x3e8c0140,0x3e8bd550,0x3e8aa4e6,0x3e8a65c4,0x3e87f7f3,0x3e8a997d,0x3e1419a2,0x3deff26a,0x3df7d8cc,0x3dea21ec,0x3de279f2,0x3dd9f661,0x3df852d1,0x3dde09a3,0x3dc6cddb,0x3dc5df4e, +0x3dcce799,0x3de25732,0x3ddaa345,0x3dd661ff,0x3dcce548,0x3de47c5d,0x3e005299,0x3dd53721,0x3dea0d47,0x3dfc8f69,0x3e0b812d,0x3e0c114d,0x3e0f145b,0x3e13712b,0x3e14f8d4,0x3e15897f,0x3e144624,0x3e11c859,0x3e10bc52,0x3e1179bc,0x3e0fb38b,0x3e0ac413,0x3e0444f3,0x3defd785,0x3de667a7, +0x3de3f2b4,0x3de9cdf0,0x3dc6a075,0x3dcf2c19,0x3dec0ebe,0x3e0040a7,0x3e072ebf,0x3decbd22,0x3deea26c,0x3dfd061a,0x3e06e5fe,0x3e0ca8a0,0x3e1a25f2,0x3e198083,0x3e18cf8d,0x3e0b3b3f,0x3e0e6e8f,0x3e102d3b,0x3e18248d,0x3e1ab9cf,0x3e1320b4,0x3e192be1,0x3e201302,0x3e275714,0x3e324793, +0x3e36d452,0x3e35bf1d,0x3e2eee87,0x3e26f9f1,0x3e25d338,0x3e297ca9,0x3e2ce2d1,0x3e2299e6,0x3e0fc0a9,0x3dd3bb44,0x3dadfdaf,0x3daad77d,0x3db5dcff,0x3d2b66b7,0x3d86d85a,0x3deedef8,0x3e02d9e3,0x3e1626ce,0x3df5ec7d,0x3de3eba0,0x3df2c7f1,0x3de84b11,0x3e07e361,0x3e2d3321,0x3e29233e, +0x3e1e0cf5,0x3e00bf17,0x3e14063b,0x3e1a3cc1,0x3e22ff66,0x3e2882df,0x3e311cf1,0x3e25bf0d,0x3e306fc1,0x3e3ff7e0,0x3e525fd9,0x3e5fb04c,0x3e5ffc44,0x3e5666c7,0x3e4650dd,0x3e4086ba,0x3e41e242,0x3e40f6af,0x3e263085,0x3e020625,0x3d49e086,0x3ca1f066,0x3c21dd9b,0x3cb2b0cb,0xbca913c8, +0x3cc56107,0x3dbe4f51,0x3dc9d549,0x3e05ea12,0x3dc76e5f,0x3d9c7a94,0x3dbe25f3,0x3db48145,0x3ddd83db,0x3e2f42f9,0x3e1b3c50,0x3e1f8600,0x3e09b2f2,0x3e257f93,0x3e2b7c8d,0x3e3d1045,0x3e492c2d,0x3e575162,0x3e3deb28,0x3e42e98a,0x3e561a62,0x3e6ede1f,0x3e7d4522,0x3e798dcb,0x3e623365, +0x3e472335,0x3e44a070,0x3e5640c8,0x3e6bdf01,0x3e5d9584,0x3e33719d,0x3d61fe60,0xbc3c9cc3,0xbd3e92d9,0xbd0b012a,0xbdbb91a2,0x3e01ff21,0x3e71a525,0x3e783b4d,0x3e8a074b,0x3e81956f,0x3e5df53e,0x3e5d0c6d,0x3e2d1dc6,0x3e1be59e,0x3e2a3570,0x3e29a95d,0x3e1b054c,0x3dcacf07,0x3e16ec3b, +0x3e2eca1e,0x3e471f67,0x3e530ea3,0x3e5788e0,0x3e60300c,0x3e517013,0x3e621c06,0x3e901f8e,0x3e91e841,0x3e95870e,0x3e91013f,0x3e842a63,0x3e4f4027,0x3dd781ca,0x3c802b21,0xbe0d4878,0xbe99d45c,0xbec499d9,0xbebb8df0,0xbe929583,0xbe20204a,0xbe9b0984,0xbe0d5c29,0xbb0b2b4d,0xbc4ff6e3, +0x3bb6b329,0x3db0274a,0x3dc8816f,0x3e061450,0x3e29985f,0x3e419241,0x3e611beb,0x3e305c1f,0x3e273a1a,0x3def2e0f,0x3e2367b7,0x3e31ca56,0x3e3dd0fa,0x3e537d34,0x3e66cc67,0x3e6544cd,0x3e5146e4,0x3e63a452,0x3e864462,0x3e764b43,0x3e4530a1,0x3debd8bc,0xbca3a776,0xbe1fa2ed,0xbe928113, +0xbec5487f,0xbef82650,0xbf1327fc,0xbf1628b5,0xbf15665f,0xbf159511,0xbeba5b4c,0xbf020ba8,0xbea204dc,0xbe238464,0xbe0da3b8,0xbcaa1f9e,0xbc8506ed,0x3dcfec1f,0x3dd4f4c1,0x3e0a968f,0x3e15cb8b,0x3e9786d7,0x3e16e256,0x3dd27a26,0x3dd31949,0x3e368f12,0x3e509a18,0x3e604d1c,0x3e804b80, +0x3e982808,0x3e8b5047,0x3e7b994f,0x3e7418ab,0x3e3ead5a,0x3dbe0371,0x3c8d1050,0xbd17f58a,0xbe14fc87,0xbe96f7e5,0xbef0f06b,0xbf3357ef,0xbf5ba2fb,0xbf6e8c4c,0xbf6ee8e7,0xbf54b096,0xbf39b762,0xbf163625,0xbf0fe9a6,0xbeec7d41,0xbea783d1,0xbe516f6d,0xbd71a373,0xbc54ea0c,0x3d714b64, +0x3d87de0e,0x3e27c6f4,0x3e16e5b5,0x3d678d9a,0x3e3d293b,0x3e5ea353,0x3df7b40d,0x3e026ba1,0x3e00832a,0x3ddcad53,0x3dd7b9af,0x3e49a16f,0x3e550210,0x3e5c4952,0x3e681108,0x3e3aa1e1,0x3e1c226d,0x3d99af6d,0xbd5f7d64,0xbe170ba1,0xbe8af5fa,0xbecfc5b6,0xbf07ebe6,0xbf23bb34,0xbf343466, +0xbf48a835,0xbf59beee,0xbf6c7b30,0xbf35a2b8,0xbf069513,0xbec278cb,0xbeb8e06f,0xbe4f6cfe,0xbe166dff,0xbd91c4b7,0xbd29436e,0x3c1edbe1,0x3cdd21ae,0x3d2589fe,0x3cde3c93,0x3dfc86d8,0x3e066ef0,0x3d9dd2a0,0x3d9baaa7,0x3d70860b,0x3d4912b0,0x3d1419ce,0x3d56ab9e,0x3d14e062,0x3dce1642, +0x3e053d3f,0x3de68a34,0x3dbc100a,0x3da6ffba,0x3dab90c4,0x3d1e022f,0xbc63ca7e,0xbdabc1ae,0xbe35bd99,0xbe9aef74,0xbedacc64,0xbf1aba00,0xbf32313d,0xbf3c98c9,0xbf2d32e6,0xbed5e1cb,0xbeb70207,0xbeb8c780,0xbe7cd1f9,0xbe259546,0xbdd71a6c,0xbd37732d,0x3c44400e,0xbbe5ff14,0xbc86909b, +0xbc70f8e9,0x3c4f0b19,0x3d172908,0x3d44dfa3,0x3b697e22,0xbcf71d6d,0xbd0643ba,0xbd65d861,0xbdaa6c73,0xbd6d45b2,0xbd02fc6f,0xbd01e4dc,0xbbd3ea8d,0x3b8f8ed7,0x3c95462f,0x3d414187,0x3bd22a8e,0xbd2c08a8,0xbde539be,0xbe54dbfc,0xbe9a68c0,0xbec89d0e,0xbeff7800,0xbf0ea1bb,0xbf111220, +0xbf05801a,0xbeb411a1,0xbebb2503,0xbeb596d1,0xbe8b0dd2,0xbe72644d,0xbe2e43de,0xbe099123,0xbd96ce45,0xbda69f83,0xbd64824e,0xbd9199c8,0xbd4866e1,0xbd6a2d16,0xbd5813d8,0xbd9bb13d,0xbdc3d6e0,0xbe076e0b,0xbe20e1f6,0xbe43e7bb,0xbe49e4fb,0xbe497582,0xbe72b94d,0xbe816de7,0xbe81e36e, +0xbe822efc,0xbe845c35,0xbe8d4e2a,0xbe935dca,0xbe95fb14,0xbea6b086,0xbeb65e01,0xbec7c607,0xbec936d0,0xbed20b4e,0xbee0e904,0xbed03833,0xbe73f5e6,0xbe724e04,0xbeb01da1,0xbe53aacd,0xbe6a4850,0xbe564c26,0xbe2430ee,0xbe0a10af,0xbde90080,0xbe0b2599,0xbe1d961a,0xbe0e0bd6,0xbdfc52f6, +0xbdfd2d0f,0xbe31df1c,0xbe3c98d6,0xbe48de39,0xbe517165,0xbe9ad3ba,0xbe66c8c8,0xbe6b1904,0xbe83b57e,0xbe8d0b9b,0xbe97fe2c,0xbea1e48e,0xbeac5e97,0xbea767de,0xbea5cacc,0xbea4385b,0xbea4477c,0xbea2b0d2,0xbea360e9,0xbe9ada4e,0xbe927f4c,0xbe88f4bd,0xbe83be54,0xbe49671c,0xbe24aed2, +0xbe93f588,0xbeab9df8,0xbebadec1,0xbe63df85,0xbe995c7e,0xbea8b458,0xbeac3ac5,0xbea9231e,0xbea46ab4,0xbea81047,0xbeabec25,0xbea9b32d,0xbe98b23c,0xbe6b1331,0xbeb87858,0xbea597f2,0xbe905317,0xbe1e774f,0xbe449235,0xbe490c05,0xbe4f6f87,0xbe591e55,0xbe61a52e,0xbe6efae2,0xbe6a4491, +0xbe695da1,0xbe67c5e4,0xbe6411cf,0xbe60bca9,0xbe5f13bc,0xbe57b96a,0xbe52d938,0xbe4c1edb,0xbe494c5a,0xbe427b7b,0xbd03754a,0xbcdfef6f,0xbd502fa9,0x3ca226ac,0x3d76112e,0x3df6634b,0xba780d5b,0x3d693d6d,0x3df9466b,0x3e003669,0x3e00ca4a,0x3df61dc0,0x3e04cbae,0x3e047818,0x3dfc6bd0, +0x3d616db7,0x3b44c5d1,0x3e061c9d,0x3d605065,0x3c97aeb2,0xbd4bfbb1,0xbcf5eae4,0xbd17725e,0xbd14304a,0xbd12cf59,0xbd11cc68,0xbd0f3d80,0xbd137194,0xbd211c5b,0xbd37c1fe,0xbd5766fb,0xbd6ef66c,0xbd87b02e,0xbd6a273e,0xbd4ad59a,0xbd084b4f,0xbd0b2303,0xbcc351fe,0xbd1001af,0x3da1be7f, +0x3bac65a7,0x3d1f9a06,0x3d17f193,0x3ca4ef2e,0x3d184c1c,0x3cab245c,0x3d1162e4,0x3d6a49b9,0x3d1b5c68,0x3d006ad0,0x3cac87c0,0x3d335f7a,0x3cc8b0d4,0x3c9873b7,0x3c52f20d,0x3d961b7f,0xbd01d18f,0xbd353651,0xbd362449,0xbd35843c,0xbd2c5bf0,0xbd253dfd,0xbd2242f0,0xbd284482,0xbd5ba8a3, +0xbd990f1f,0xbdd01789,0xbdefe353,0xbdfcd752,0xbdce9a2e,0xbd97ea33,0xbcff0526,0xbce3039b,0xbcc7b181,0xbd25c176,0x3cea7bae,0x3d0ed5e7,0x3d81d3f2,0x3d5d646b,0x3d80930a,0x3db6fa3c,0x3ddf2b7c,0x3db0c44f,0x3dfdc6e5,0x3d9602aa,0x3dd4bfec,0x3d253287,0x3d85da27,0x3d11c272,0x3cd0b941, +0x3d09d7fc,0x3cd798a5,0xbc6143ec,0xbd756266,0xbd6d4a27,0xbd739fba,0xbd713c96,0xbd62aa3d,0xbd6126fe,0xbd657a28,0xbd9dd031,0xbde8b8c0,0xbe246323,0xbe489351,0xbe5ba44f,0xbe2d08df,0xbe00e6ef,0xbd16463f,0xbceea5fb,0x3cce4a6a,0x39b8ad87,0x3da8fb45,0x3dbaff62,0x3db250f1,0x3d89d17a, +0x3d87c7ee,0x3de6325f,0x3dde0700,0x3df4f387,0x3e166394,0x3e1a3733,0x3dfb6f91,0x3d81420e,0x3db26e9d,0x3d86a899,0x3dd161a3,0x3d5425ed,0x3d87b26a,0xba34ddb9,0xbd816a87,0xbd6fbb6e,0xbd5b149d,0xbd490a2c,0xbd3893c2,0xbd118f5b,0xbd18291d,0xbd99920c,0xbe131769,0xbe73841d,0xbe9a681d, +0xbe9ef795,0xbe73df0e,0xbe0e3446,0x3c309707,0x3cffa143,0xbe9b0a85,0xbeb21085,0xbe8da6de,0xbe4a0b93,0xbdbbfa26,0xbbaf2230,0x3d04d1c6,0x3d955b74,0x3dd7c8f6,0x3dfe6dde,0x3e09444e,0x3e0f8c48,0x3e128964,0x3dee26b1,0x3dddfb65,0x3d96667f,0x3daf08bb,0x3ce048fd,0x3d1d0b5f,0xbce9244e, +0xbdb27dc8,0xbdb7a63d,0xbe278e07,0xbe17b599,0xbe23ff7a,0xbe360958,0xbe5fc9f4,0xbe703722,0xbe681766,0xbe67517a,0xbe293815,0xbddae12a,0xbdf40731,0xbe3652f6,0xbe835348,0xbe95bcfa,0xbe707914,0xbe913088,0xbe8ad6f7,0xbe457692,0xbe097f60,0xbdbf238a,0xbd343791,0xbc779785,0x3d0372d8, +0x3dbdaad3,0x3e1e0aec,0x3e2dc8b7,0x3e2725d7,0x3dd63489,0x3de9507b,0x3dbb2cda,0x3da69d5c,0x3d2b283f,0x3d3d77d6,0xbce27516,0xbd43cc90,0xbc20d240,0xbbcf3e7c,0x3c83eeb1,0x3cc0e6dc,0x3ccac06f,0x3d9637c1,0x3dbffc0e,0x3dab6817,0x3da2b6ec,0x3d4f7609,0x3c0ebd9e,0xbd6433d5,0xbd952fb9, +0xbd086910,0xbe3d98ec,0xbd4ef52f,0xbe438824,0xbe4fa76b,0xbdf9ff3b,0xbda91521,0xbcca0bbb,0xbb837513,0x3c160aa3,0x3db9fe69,0x3ddb6a31,0x3d8dff4f,0x3e374bac,0x3e2b4076,0x3d3d9da4,0x3d75233b,0xbbdb3d0f,0xbcb01561,0xbd98935f,0xbd741f73,0xbd260bad,0xbd07f9ed,0x3d629a47,0x3e370f6a, +0x3e871365,0x3ea1ca3a,0x3ea36da1,0x3ec106c7,0x3edb6218,0x3eefdcba,0x3f029386,0x3eff4cf3,0x3eeaee16,0x3ea35a7c,0x3e48374b,0x3dc1172e,0xbb4c84da,0x3e1ce83b,0x3c8c67d9,0xbd2a6296,0xbd003a82,0xbd2ce052,0xbc081838,0x3beed6d2,0x3a88e8d0,0x3ddaeebd,0x3e0d437b,0x3d0b6fff,0x3e316cff, +0x3e1b0653,0x3cb22296,0x3cdd861a,0x3c95fa60,0x3bc3552b,0xbc0ab19a,0x3bbbf1c5,0xbce99e52,0x3af3d86a,0x3d933c4c,0x3e18b3a8,0x3e57be07,0x3e9c62b5,0x3ed5e330,0x3ef88994,0x3f0b4ef9,0x3f14046f,0x3f14c692,0x3f0750f3,0x3eefbde4,0x3ea23bc6,0x3e76e7d5,0x3e5ef8de,0x3e4e29bd,0x3e8820ab, +0x3e43ba0e,0x3e077de0,0x3d890566,0x3d6e1bbf,0x3d5fa24b,0x3dadb376,0x3dd78c65,0x3df4c2f8,0x3e12c561,0x3e1e355e,0x3e0a8622,0x3dfa9a5a,0x3de5b3c3,0x3dc856fb,0x3da82130,0x3d93557f,0x3d74edaa,0x3d89717c,0x3cf24344,0x3ac40a93,0x3d30d0d4,0x3df2fe62,0x3e484c51,0x3e7c5bf1,0x3e87e573, +0x3e983972,0x3e9c4922,0x3e93b217,0x3e8b779b,0x3e7817d7,0x3e5b61db,0x3e4af71e,0x3e547a72,0x3e74d95a,0x3e95d3af,0x3e5a35e8,0x3e466e84,0x3e3b5bb9,0x3e29883c,0x3e0dd2a4,0x3e095314,0x3dd918c1,0x3d886059,0x3dc5d853,0x3deee254,0x3e1211e1,0x3e04bf08,0x3e0a124b,0x3e0cfa90,0x3e1eb34a, +0x3e270423,0x3e1046d8,0x3e1cae49,0x3e2509ed,0x3e029d34,0x3dcfc769,0x3dcc455d,0x3da665eb,0x3d824dc6,0x3d627c47,0x3d2b3acf,0x3d49640f,0x3d7c00d1,0x3da9a19b,0x3dd0406a,0x3df1255e,0x3e0cbbd6,0x3e28ad2b,0x3e41d971,0x3e570c0b,0x3e69e7f2,0x3e3b9daf,0x3e3cdd51,0x3e339b80,0x3e21bfd2, +0x3e148836,0x3df0e537,0x3ddf37b2,0x3db3a313,0x3ddde0f7,0x3de44c8b,0x3e07c4ce,0x3e095514,0x3e12126d,0x3e1ac8d5,0x3e2f3139,0x3e45c28b,0x3e6551ba,0x3e6a2b08,0x3e73479a,0x3e7869a7,0x3e6d90c8,0x3e6fa621,0x3e64553f,0x3e4f940b,0x3e3b240f,0x3e288436,0x3e2aa886,0x3e26d66d,0x3e1f0b26, +0x3e244177,0x3e2c956a,0x3e37c42e,0x3e3ee4dc,0x3e4aa663,0x3e5ac849,0x3e4ba56f,0x3e4f928c,0x3e550017,0x3e6cb542,0x3e42fe57,0x3e4cc4b1,0x3e47f121,0x3e34116b,0x3e2c4f10,0x3e24b2ca,0x3e384140,0x3e459ba7,0x3e43b905,0x3e3e05eb,0x3e46ed8c,0x3e57ea07,0x3e607896,0x3e6b0c02,0x3e6f4629, +0x3e87fe86,0x3e8930d1,0x3e8381bf,0x3e867425,0x3e87781b,0x3e88e252,0x3e89735a,0x3e88f087,0x3e85d3bd,0x3e8378c7,0x3e818cbc,0x3e80a2f6,0x3e7cd339,0x3e77f6e9,0x3e6f9a29,0x3e664589,0x3e5d6bd0,0x3e59a727,0x3e4a6d8c,0x3e3ccddb,0x3e7f0182,0x3e868a15,0x3e8069ed,0x3e60ca02,0x3e7e52df, +0x3e7c9655,0x3e813bad,0x3e7fed00,0x3e7b8a67,0x3e808169,0x3e82f72b,0x3e8248d2,0x3e86ac21,0x3e75e1e5,0x3e85d813,0x3e8def16,0x3e87d2dd,0x3e540cb3,0x3e5d5cac,0x3e60184a,0x3e601b5a,0x3e62adb0,0x3e654c3c,0x3e6a1302,0x3e6664bb,0x3e63e3f0,0x3e60fdbb,0x3e5c99c8,0x3e58e301,0x3e55f3e3, +0x3e53313a,0x3e513578,0x3e4dd0a0,0x3e4cc2ea,0x3e61b51f,0x3d0fbb2f,0x3cf095e5,0x3d397084,0xbc7d6ba8,0xbd420135,0xbdb9af21,0x3c21e012,0xbd24af87,0xbdb3b995,0xbdaa9bb9,0xbda684ab,0xbda60235,0xbdafe4e6,0xbdb7a3d8,0xbdb663ec,0xbd30f664,0xbb00568e,0xbddbc57b,0xbd4ab077,0xbc97352e, +0x3d354821,0x3cdaf0f5,0x3d068d7d,0x3d09d035,0x3d173afc,0x3d1d506d,0x3d24706a,0x3d197d5e,0x3d1733ee,0x3d13d289,0x3d213baf,0x3d2fa2f3,0x3d5e7b4e,0x3d28e458,0x3d13b813,0x3cde74f8,0x3d09ca57,0x3ccf0028,0x3ca74573,0xbd6dbf23,0x3cb9b5e6,0x39049959,0xbb520ead,0x3c872edc,0x3c0485c5, +0x3d41858d,0x3d26b60a,0x3c023e7a,0x3cf28b67,0x3ce3f7d6,0x3cdc726e,0xbc6c7b43,0xbc4d92a3,0xbbef79b6,0xbbd866bd,0xbd7c74ba,0x3cad60f5,0x3cf1f2c8,0x3cfc5116,0x3d1038e8,0x3d335cb9,0x3d449e4a,0x3d48ec56,0x3d268910,0x3d1a8f58,0x3d1958e1,0x3d46c40e,0x3d6abd41,0x3da10b4d,0x3d2b2808, +0x3cc6bd64,0x3b774c42,0x3c90ac73,0x3cc8abbb,0xbba32fb4,0xbc8f8404,0x38c3784d,0x3b7f86a8,0x3b47e9cf,0x3b8c2f6e,0xbb4dc819,0x3cff7915,0x3d5b200b,0x3bdcab5f,0x3d2eb5da,0x3c698e70,0x3d1a4474,0xbca74bf3,0xbcb778d5,0xbcb3ba16,0xbce55952,0xbcefaec0,0xbbcbb2cc,0x3cbf20a8,0x3cdcf76b, +0x3d15c97f,0x3d63fed1,0x3d80f2c0,0x3d8d7883,0x3d5495df,0x3d3db8b1,0x3d3df285,0x3d91340f,0x3dcd29a0,0x3e2759d6,0x3dae5abb,0x3d5bbae3,0xbb5b8f2b,0x3c89f04b,0xbc78564d,0xbd23d455,0xbce63197,0x3c9332ac,0x3d3321b1,0x3d310ee4,0x3d3790e1,0x3d3af4c7,0x3dcaeb37,0x3dd47d7a,0x3dad524a, +0x3dc22df8,0x3d8cce6a,0x3d3c1f57,0x3c2e7aca,0xbc587f2e,0xbd11d4c1,0xbcadce20,0xbd194ae3,0xbc559ce5,0x3c976987,0x3cb918f8,0x3ced7b35,0x3d5e816a,0x3d88e4f2,0x3d7ddfb0,0x3cc177ee,0x3bada19a,0x3bbd835d,0x3d57e82d,0x3ddfa1d0,0x3e3d74c9,0x3d7b92be,0xbc5d1504,0xbdb7baff,0xbd587598, +0x3de2ce9a,0x3d74247b,0xbc2dc91e,0xbc84c974,0xbd1be6a2,0xbd0e917d,0xbc51cdcd,0xbc2b2fab,0x3d1d1cfb,0x3d881dd0,0x3d87d178,0x3dd9628b,0x3de414da,0x3dacf197,0x3d3f350d,0x3c7fb316,0xbbf4f13a,0xbc957f83,0xbd5d4244,0xbd02a1ba,0x3b5dfb23,0x3c96b25a,0x3daea1bb,0x3df1236a,0x3e1da56a, +0x3e4add91,0x3e840ef4,0x3e968016,0x3e97affe,0x3ea53796,0x3e9ed029,0x3e9e38ab,0x3ea43d6b,0x3ea08e3b,0x3e9116c0,0x3e2021da,0x3d4776ff,0x3ab5ceb2,0xbcad45ab,0xbb169237,0x3cb0fd6a,0x3c9904ae,0x3d020784,0x3c6341ea,0x3d090cf1,0x3d617a99,0x3d8f0721,0x3e046b40,0x3dede064,0x3d856450, +0x3d5a6431,0x3cb1dca9,0xbb85ee6d,0xbc5e95f6,0xbd14abe4,0xbb945054,0xbd05535b,0xbd67fc45,0xbd24135e,0x3d78cc37,0x3e1f19a8,0x3e840345,0x3e81bd3d,0x3e82c289,0x3e7f3b60,0x3e568ebd,0x3e2f800a,0x3e087e37,0x3dd1c494,0x3d2be3e8,0xbc31a341,0x3c64101a,0xbc9619fb,0x3c9f4f4d,0x3c89ef08, +0x3cf6409d,0x3c487a8a,0x3cb29925,0x3c6bb4f2,0xbc68cae0,0x3df7c3aa,0x3e0a9cab,0xbd40e1e7,0x3df1e5fe,0x3d9b8daf,0xbd399970,0xbd113f84,0xbd1b4e30,0xbd6b80e8,0xbd1fb1d0,0xbd4c3f0c,0xbd52f84d,0xbd861089,0xbd87955a,0xbd93538d,0xbd4c880a,0xbd277cb6,0xbc7d98c7,0xbda4b948,0xbdf77d8a, +0xbe1706a9,0xbe27db79,0xbe36e9c5,0xbe4587cd,0xbe3849f1,0xbe07aa47,0x3c8604c0,0xbd13f58f,0xbde92d3a,0xbd9d21b2,0xbcf79ff5,0xbc32b48e,0x3ba1e08f,0x3c5283f4,0x3d302e9e,0x3d42cf1d,0x3d9b7973,0x3d95cb16,0xbd5d64dc,0x3d79525e,0x3d945a5c,0x3d17aaf7,0x3c1a06a0,0xbd0668fe,0xbd40378f, +0xbd901d23,0xbda2abab,0xbd9a3b4b,0xbdfec844,0xbe20f8e9,0xbe3f9d16,0xbe70cc6d,0xbe921ada,0xbea70c44,0xbeb0f8d1,0xbebaef84,0xbec95230,0xbecebaad,0xbecfbc8e,0xbed28920,0xbe9ec196,0xbe605307,0xbd912407,0xbe00db8e,0xbe24cbf1,0xbe3cf599,0xbe015ac9,0xbdb8847a,0xbd205821,0xbc879134, +0xba7ed727,0x3c18bf0c,0x3d5b5678,0x3d572f5c,0x3c8576c2,0x3b6aa481,0xbc9002cf,0xbc8abec9,0xbcfd9dd0,0xbd19c7cc,0xbd52e855,0xbd67b76a,0xbd92f395,0xbdc04117,0xbde1d2f2,0xbe1929f7,0xbe3fef39,0xbe7d05c0,0xbe99a0a7,0xbea8d225,0xbeb4e078,0xbeb5b5ad,0xbeabc22f,0xbea2c7c7,0xbe9c963d, +0xbe9c4952,0xbe7f4f73,0xbe4620b4,0xbde7b84b,0xbe11d459,0xbddea797,0xbdedcba5,0xbdd477b4,0xbdd63fd9,0xbd9fb6be,0xbda5fea9,0xbd47fafe,0x3c40370b,0x3c849635,0x3c68aca3,0xbc2d3519,0x3ccd06bd,0x3c870ff1,0xbcb344a0,0xbd6eb46f,0xbdb8a775,0xbdd094b4,0xbe0235ed,0xbe10dde7,0xbe17e284, +0xbe24c868,0xbe2e172f,0xbe2dde90,0xbe231584,0xbe2231bf,0xbe1ac993,0xbe1b9dca,0xbe203e34,0xbe2b029d,0xbe3c7c47,0xbe44fbee,0xbe4a3ab9,0xbe4aad5b,0xbe3deefb,0xbe24b709,0xbe03b41d,0xbe03d673,0xbdcba50f,0xbdb4d23e,0xbd9369cd,0xbd472c4c,0xbce03d0c,0xbc701ae8,0x39a8dae7,0xbbb856f7, +0xbc4cdd5c,0xbc046af0,0xbd355941,0xbcfffdab,0xbd7e908f,0xbd62799a,0xbdbdb34d,0xbdeacde6,0xbe05cd04,0xbe0d6537,0xbe385f68,0xbe45e787,0xbe3a21f6,0xbe38578e,0xbe2ca040,0xbe244c5c,0xbe1b9a1c,0xbe2e65a6,0xbe387491,0xbe3e4ce8,0xbe40141f,0xbe433753,0xbe47c2a1,0xbe42b804,0xbe40de1c, +0xbe45084c,0xbe258576,0xbe2fe818,0xbe35dc0e,0xbe154d32,0xbe1cefe9,0xbe12b4eb,0xbe0af3a8,0xbe05683f,0xbdf71ff3,0xbdf9d118,0xbe07a9e1,0xbdffbd63,0xbe07972c,0xbdff3781,0xbe01d24c,0xbdfcf37b,0xbe10bb23,0xbe1ab3c9,0xbe1aa6d6,0xbe00f07d,0xbe4d24c1,0xbe476e40,0xbe4c40f5,0xbe51716f, +0xbe53f647,0xbe563fe1,0xbe55403f,0xbe53b606,0xbe50a7ad,0xbe4fb208,0xbe4eb0fc,0xbe4cb07b,0xbe4a86f0,0xbe43fcd5,0xbe3d490b,0xbe36e3d8,0xbe34158f,0xbe251f9d,0xbe26ade3,0xbe2fb562,0xbe25b0ef,0xbdf48341,0xbe27fef3,0xbe1d37f0,0xbdf4def1,0xbdf61fdf,0xbdee401c,0xbdedf2cc,0xbde5cd6d, +0xbde63ff6,0xbde04905,0xbe21aa89,0xbe2e3f52,0xbdd7adf2,0xbe29888b,0xbe36d677,0xbe388a48,0xbe2f5515,0xbe3558cc,0xbe352c85,0xbe37baf3,0xbe3a8b3c,0xbe3f1664,0xbe3c5efe,0xbe3a85c1,0xbe380201,0xbe3557bd,0xbe32c5d1,0xbe309c07,0xbe2e3ac8,0xbe2c62a0,0xbe298e8d,0xbe291020,0xbe391c66, +0x3cca7489,0x3d0557c5,0x3c73fe38,0x3d8aa5a5,0x3dbcff7f,0x3dfdc035,0x3d2bf2ae,0x3dadf2d7,0x3df156c8,0x3e032977,0x3e02be96,0x3dee8527,0x3e010aef,0x3e046823,0x3e080156,0x3db313d8,0x3d477316,0x3e04faa2,0x3db088d5,0x3d749307,0x3ab6cc4c,0x3c96a928,0x3c61522b,0x3c4ba39f,0x3c35df02, +0x3c35564c,0x3c351bc9,0x3c6c85d0,0x3c8956aa,0x3ca046c7,0x3cac53de,0x3cb72b00,0x3cc296b5,0x3cc50b48,0x3ce225e6,0x3d255bb2,0x3d00c49f,0x3d1295af,0x3d089622,0x3dc9d5a0,0x3ceaad4b,0x3d42e218,0x3d5fe392,0x3d291b10,0x3d13f060,0x3d205c7c,0x3d54e577,0x3d6a3bb4,0x3d4d9a00,0x3d44ea60, +0x3d6e6e4c,0x3d6cfb20,0x3d37c4b6,0x3d27180b,0x3d0fdee3,0x3da4e1c5,0x3bc72d81,0x3b2a79a5,0x3b374766,0xbb2f0b63,0xbbd57d8f,0xbc08c8d1,0xbbd0d141,0x3b608e47,0x3c50ee00,0x3cb3fb08,0x3ce7f06d,0x3d07fc41,0x3d0d0f05,0x3d1bf582,0x3d37134a,0x3d8e0918,0x3d4063f1,0x3d8bcb6e,0x3d9632a8, +0x3d996bb1,0x3d4e2a6f,0x3d301982,0x3d337d08,0x3d33bd0b,0x3caa302f,0x3d919405,0x3d77f090,0x3d64ae3d,0x3d35207d,0x3d8de4ae,0x3d94c2e7,0x3d5397d9,0x3cefb90b,0x3ce7a379,0x3cd93302,0x3cd9e764,0xbb754712,0xbc9b4190,0xbc9f3099,0xbcfc4cd1,0xbd1c2712,0xbd1d05f4,0xbd098e7b,0xbc74af64, +0x3b37162e,0x3ca68641,0x3ce47dc0,0x3ce27807,0x3cadd28b,0x3d1ef236,0x3d71a30b,0x3dff8b06,0x3dae7ce3,0x3d7469e0,0x3d72b01f,0x3d404084,0x3c74aa8b,0xba9f1e85,0x3c9c2829,0x3c64016c,0xbc64ed0f,0x3d73eee3,0x3da5e6ec,0x3d056639,0x3d8215b9,0x3d561044,0x3d5202b9,0x3b30f3e0,0xbc904643, +0x3c1515de,0xbc1f68c6,0x3bd25a73,0xbcf7cca4,0xbd263377,0xbd254811,0xbd5941a1,0xbd7e8857,0xbd8b5861,0xbd70acf3,0xbcbeea77,0x3c356963,0x3d2c0292,0x3d5dbeaa,0x3d5fe828,0x3d0b79ef,0x3d7144db,0x3db4163c,0x3e2bacf7,0x3dce27fc,0x3e2ee7d7,0x3e25c4e2,0x3e45461a,0x3e3ac366,0x3e027ccf, +0x3dc56dcc,0x3da26614,0x3d92239c,0x3d6bf3db,0x3d6cebde,0x3d6687f2,0x3d7ccd23,0x3d7e50e2,0x3db6aae6,0x3d1bbe4c,0x3c3a3e3f,0x3c969394,0xbb8e5ca3,0x3bffeb56,0xbd18b963,0xbda59ad9,0xbdc085a4,0xbe0e5cc9,0xbe10d9c3,0xbe0b1313,0xbe033bb6,0xbdef2315,0xbdcdbdab,0xbd99ade2,0xbda1726a, +0xbd729beb,0xbd593942,0x3d5367bf,0x3dc02c54,0x3de665b2,0x3e1dfe68,0xbd940f00,0x3c25a75a,0x3c0bc970,0x3cb48d46,0x3d1df548,0x3d342e04,0x3d882c6d,0x3ddf742d,0x3e02c7f0,0x3df9c730,0x3d928a02,0x3dbfaa63,0x3d8f9e3a,0x3d9787e9,0x3c8d2d6b,0xbb873562,0xbbc4db71,0xbcf2f9e1,0xbd16290f, +0xbddb94ad,0xbe1cdf4b,0xbe311001,0xbe5056cf,0xbe9a729e,0xbeb38d21,0xbeb63fcb,0xbe8e9c33,0xbe57a99a,0xbe10b6ad,0xbdaed06f,0xbc5c05e2,0x3c106703,0x3d9ea808,0x3da665af,0x3d679873,0xbd383e96,0xbc31acc5,0x3c6cf7ee,0x3c8f0276,0x3d17b0f3,0x3d374743,0x3d1c341f,0x3d4cbe88,0x3d5c928a, +0x3da6695f,0x3dd0a774,0x3be165aa,0x3dacfc0d,0x3dc98f40,0x3e1ad9dc,0x3d944f18,0x3d20f69a,0x3d51c73e,0x3c90231d,0xbbbd5f1c,0xbd27b2f7,0xbd6e3b75,0xbda90069,0xbddb4790,0xbe032786,0xbdf24ffe,0xbdc3b02a,0xbd2be65a,0xbc7a5b78,0xbbc01dde,0xbd248fa1,0xbd5324ca,0xbdaf1892,0x3d79d3c1, +0x3dbcc352,0x3c41160f,0x3b9f52b3,0x3c95b416,0x3d85fb85,0x3d019925,0x3d35b7ab,0x3d031adc,0x3d03c0d9,0x3d476aee,0x3dc45525,0x3d833231,0x3d220983,0xbc737b5f,0x3ca97c90,0x3cd4ce49,0x3d917796,0x3cb66ee0,0x3b49bd50,0x3ba490a8,0xbb0cca45,0xbd205577,0xbd4d524a,0xbd501ffa,0xbd50df62, +0xbcec8080,0xbc6b1791,0xbb542c77,0x381f6acb,0xbab8425e,0x3c558a3b,0x3d85796b,0x3d79171f,0x3de8317f,0x3e21159b,0x3e5b798e,0x3e3e148b,0x3dad99b4,0x3ca60b7a,0x3d4cf070,0x3db6af2c,0x3d74bd2e,0x3d7f4774,0x3d4fb979,0x3d3ac676,0x3d69b307,0x3d9afcf4,0x3d3caa00,0x3d0e5800,0xb9fb3638, +0x3d087944,0x3d4d5a76,0x3d924d91,0x3d3e7397,0x3cb0ec65,0x3b516853,0x3bc62781,0xba99752a,0x3cf41c19,0x3ca90b6e,0x3b18b967,0xbc3d34cf,0xbc12284a,0x3c345c8b,0x3cc9dfbd,0x3d378e25,0x3d618981,0x3d94a4e7,0x3d40e688,0x3d86eb9a,0x3df09824,0x3e31afa4,0x3e36cfcf,0x3e0f4c53,0x3d752370, +0x3d6b0712,0x3c7eaabd,0x3c2d509d,0x3c988cb3,0x3c97ebd3,0x3d587c70,0x3d7e0817,0x3d23943e,0x3d3c3d5b,0x3d327571,0x3d58e07f,0x3cb0eb09,0x3c7bdaaf,0x3d078213,0x3d1c604e,0x3d68cbd1,0x3d9509a1,0x3d8d018e,0x3d5b10b5,0x3d738f79,0x3d98099a,0x3d761d5f,0x3d07928f,0xbc0a1222,0xbcea5575, +0xbd40acc4,0xbd373e99,0xbd3b3bde,0xbd2a807d,0xbc340e41,0x3cf4cf58,0x3d9d0f7e,0x3dd7c0c4,0x3e01af21,0x3e1d6bc7,0x3dda03b1,0x3ddba8c6,0x3dc76457,0x3db3413d,0x3d8c0ef1,0x3d28f22a,0x3d277cc4,0x3d1af916,0x3d2cd690,0x3d295128,0x3d6b4751,0x3d523a67,0x3da3a45f,0x3d4be653,0x3d99e3fb, +0x3d2e7e3f,0x3d6b7a3d,0x3d49f62e,0x3d7db9ec,0x3d763684,0x3dd971ef,0x3de11ab5,0x3d9c6792,0x3d841572,0x3d3592c9,0x3cdb5cf2,0x3b59e6f3,0x3cc08a62,0x3d0d4aaa,0x3d27a2b5,0x3d53001e,0x3d6c8204,0x3d8254e6,0x3dac4f18,0x3dd76a24,0x3e0780f9,0x3df11c5a,0x3dc3f13e,0x3dda2fe2,0x3d5f3384, +0x3dc12c87,0x3da556ab,0x3da72200,0x3db9ad6c,0x3db0732d,0x3dbe88c8,0x3dbc7ea7,0x3d9b3a09,0x3db0b944,0x3da47f1b,0x3da03ad9,0x3d7c31bc,0x3d9c8bad,0x3d9ebe2b,0x3d91bb99,0x3cb0ba1e,0x3dcf4503,0x3dbba3d4,0x3db4fb72,0x3db00c8d,0x3da36027,0x3d9acac1,0x3d8a081b,0x3d9468e1,0x3d960942, +0x3d9bbfc0,0x3d9e6343,0x3da351a1,0x3da301ae,0x3dabaab4,0x3dad8a10,0x3db2e0e1,0x3dbac1ca,0x3db41674,0x3dcb3881,0x3dabd6d1,0x3d8da06d,0x3cddf1b9,0x3dc328ce,0x3d949240,0x3d0d72f2,0x3cf5911f,0x3cdbe2f9,0x3ce3e9d9,0x3ca60165,0x3c92cf09,0x3c82b3f0,0x3d87fad5,0x3db2b316,0x3b99bdd9, +0x3d838837,0x3da7b534,0x3dd6d094,0x3db52c6d,0x3dbc360b,0x3db77178,0x3db7301d,0x3db75533,0x3db6da08,0x3db67e80,0x3db4a57d,0x3db295a4,0x3dafa0ba,0x3dacc0c1,0x3da92240,0x3dab66eb,0x3dadd1dc,0x3daf20cd,0x3db5d24c,0x3dc3201c,0xbd6c02eb,0xbd87a3ca,0xbd688454,0xbda21346,0xbdb11fea, +0xbdc21d51,0xbd7b38a0,0xbda12b78,0xbdba7e21,0xbdb78010,0xbdb22568,0xbdab03c4,0xbdb1258a,0xbdb0ca2e,0xbda63e81,0xbd93d425,0xbd6ba453,0xbdc447ba,0xbda7e37f,0xbd905d81,0xbd19d319,0xbd484054,0xbd40a5a3,0xbd33d1d3,0xbd46f365,0xbd53626e,0xbd6a6258,0xbd66f5c0,0xbd683829,0xbd631b57, +0xbd6e5335,0xbd78c33e,0xbd8d3e2c,0xbd81a330,0xbd849078,0xbd92e394,0xbd8bd3e0,0xbdd180e0,0xbdbcb936,0xbdc8b6d2,0xbd89f1e6,0xbd8b59cd,0xbd836d54,0xbd5553ff,0xbd481576,0xbd0c48e9,0xbd17027d,0xbd21cc20,0xbd12feb2,0xbcfacba0,0xbcb13cce,0xbd1f78c8,0xbd29288c,0xbd61dc46,0xbd5d14e9, +0xbda8f0b5,0xbd270092,0xbd29dced,0xbd30422a,0xbd0eb257,0xbd41fc86,0xbd69b22d,0xbd942bfc,0xbd94f999,0xbd96cd4c,0xbd8e2bb0,0xbd9a1ab2,0xbda8fea5,0xbdd46c0c,0xbdb72326,0xbdbdaefc,0xbde49a20,0xbddceac1,0xbe11bb55,0xbde36694,0xbdb2363e,0xbd8e0041,0xbd620bc2,0xbd3c0cfc,0xbd024fb6, +0xbcd33437,0xbc7a28b0,0xb9953a75,0xbc1619a5,0x3ab4f494,0xbb093184,0x3d005b53,0x3aa8ff4f,0xbc211eb7,0xbd0c18f9,0xbd34e499,0xbd5a8142,0xbcfeb3f8,0xbcdfd79c,0xbcf9e790,0xbc653492,0xbd153c8d,0xbd6088f5,0xbdb2c7b5,0xbdb2a1a3,0xbdb844a0,0xbdb1b68b,0xbdcd52bf,0xbde05b46,0xbe2118a7, +0xbe058680,0xbe0f3c1f,0xbe3392ec,0xbe1f8a1c,0xbe68930e,0xbe2f0943,0xbdec1934,0xbda90815,0xbd72e932,0xbd286fee,0xbcd50ebf,0xbc99e73c,0x3cb7b15f,0x3d3d3986,0x3d07a690,0x3d1a1ec8,0x3d36e002,0x3d92d478,0x3cb92488,0x3b8e834a,0xbd175fc5,0xbd13e467,0xbd70bcab,0xbcc6ad00,0xbc818f80, +0xbc80f4ad,0x3c126100,0xbce35dad,0xbd7db443,0xbded6155,0xbdf87bf1,0xbdfef699,0xbdee5260,0xbe00da64,0xbe16a77b,0xbe5e0707,0xbe33438d,0xbe3fab60,0xbe8277fa,0xbe74bed8,0x3dca8f65,0x3e145ef3,0x3dfb9a9f,0x3dc3e991,0x3d9a76b2,0x3d54202f,0x3d5d6170,0x3d9dd14b,0x3d97374b,0x3d83b7c8, +0x3d9283c4,0x3cdb4426,0x3c7342fb,0x3d735cb7,0x3c98890c,0x3bffec3d,0xbd124433,0xbca5541f,0xbd520450,0xbd008756,0xbbd3c6c2,0xbcd6e3fd,0xbbb47b30,0xbd014975,0xbd167bdd,0xbd520560,0xbd290fc7,0xbd5ab3b7,0xbd757c52,0xbdd8bde3,0xbe028311,0xbdef8702,0xbe23f6b5,0xbe00a5af,0xbd919729, +0x3d3f7545,0x3e286294,0x3dd59a55,0x3dab4c07,0x3dad13e4,0x3db9133c,0x3dd6c26d,0x3dc7012f,0x3d854a24,0x3dcd0953,0x3dd4249d,0x3ce7dda8,0x3d4ddd2b,0x3d72160a,0x3ddd4823,0x3d133750,0x3c92cc6a,0xbc577f8f,0xbbd45080,0xbd03ff7c,0x3ad23cb5,0x3cfcde8c,0x3c7871ad,0x3caafd7e,0x3d4bc9f5, +0x3d780819,0x3ce56552,0x3c879cfb,0x3b93f6e9,0x3c95a691,0x3ca1e362,0x3d90816a,0x3e4900de,0x3e58fc38,0x3e4c3e55,0x3d84a734,0x3e24053f,0x3d240cec,0x3d782bbf,0x3d75024e,0x3d5be874,0x3d5556ec,0x3bcfb2b2,0x3d120fe3,0x3e25be40,0x3d9134e4,0x3d24ae4f,0x3b2aa9bd,0xbd10df4a,0xbb411a2c, +0x3e3218f0,0x3cb9f142,0x39b0d018,0xb9e06324,0x3be50828,0x3c347005,0x3c97ae0d,0x3d2ccf01,0x3cd4a80d,0xbc2c0486,0x3bf67e19,0x3c51f9c3,0x3b9c70f8,0x3c09a954,0x3becbd91,0x3c66cb26,0x3c85abe7,0x3d2a7a3d,0x3e03be47,0xbc33fa33,0xbd95a353,0xbe066cef,0xbc8cb8f8,0x3c93a642,0x3c7be962, +0x3d060b0f,0x3c82c58a,0x3cb9387c,0x3cd64f11,0x3d2970cc,0x3dd26b19,0x3cb3c090,0x3a7ec320,0x3d1bdd9a,0x3c404bb7,0x3d37c47c,0x3e212b66,0x3d883c80,0x3d3a613b,0x3d4ed71f,0x3d419996,0x3d5c81e1,0x3d862fa5,0x3d90b4e0,0x3d7580ba,0x3d2c8ada,0x3d6af36e,0x3d4f890d,0x3caf05b3,0xbd23943e, +0xbdee9444,0xbe4b2dc6,0xbe4645fa,0xbe325520,0xbde700ef,0xbe07c717,0xbdfc0212,0xbe2d8093,0xbca45770,0xbd61c22a,0xbccc3405,0xbb045163,0x3c1bc766,0x3c5adafc,0x3cdd67cb,0x3caba67d,0x3cbf8eae,0x3cd3b3ad,0x3cecb5f5,0x3d1b2835,0x3d43a53f,0x3d3c5677,0x3d144227,0x3cff308f,0x3d2d02d7, +0x3d480057,0x3d341898,0x3d28eb73,0x3d14c812,0x3d017a47,0x3d006887,0x3cd8971e,0x3bf45516,0xbcf3594b,0xbd9ba7e0,0xbe06dec8,0xbe2bb8c7,0xbe43bbbb,0xbe1baefd,0xbdf3eddc,0xbdc52e45,0xbdc01f0a,0xbde9f5d4,0xbe4d3b2c,0xbdce328a,0xbdc8e00c,0xbd0d1f3d,0xbc50ae16,0x3c79284c,0x3d1b4aa6, +0x3d11073f,0x3d1e1fce,0x3d3ecf1b,0x3d569f46,0x3d514156,0x3ce40940,0x3d23f4dd,0x3d1c3364,0x3ce6abe3,0x3d0b797a,0x3cd68a0c,0x3c1d17a8,0x3c55782f,0x3c90574b,0x3bfdb67c,0xbca2b02b,0xbc84ad5b,0x3b8d44cd,0x3d12a5a7,0x3cf60a32,0x39977538,0xbc8942b1,0xbce16cd4,0xbcfc881f,0xbd35334b, +0xbd61ad2a,0xbd902455,0xbd8295c3,0xbda7f731,0xbe067e05,0xbe083c6e,0xbd93c93f,0xbdb17fec,0xbd823ab7,0xbd380daf,0xbcbf80ea,0xbc97a45a,0xbc05d757,0xbb5d895f,0x3c22f717,0x3c2a9cb0,0x3d03103e,0x3c80625f,0x3d23b9b9,0x3cf739ce,0x3d1b20a2,0x3caae06f,0x3c984446,0x3b9cd77d,0x3b9cae21, +0xbd1b8532,0xbd218a5c,0xbc4af245,0xbb8ef840,0xb9b06f6d,0x3bbcc384,0x3c8b4746,0x3b34224a,0xbc12f976,0xbc94e166,0xbcc75358,0xbcee6e15,0xbd199762,0xbd379964,0xbd5675de,0xbd65d496,0xbd78dc6d,0xbc126b5c,0xbba0ac2e,0x3cfabf1c,0x3c26e5fd,0x3cc1f652,0x3cd783a4,0x3ccb7263,0x3d052a12, +0x3cc63441,0x3cb637be,0x3cf1075a,0x3cb00706,0x3cbe80cf,0x3ccd2f87,0x3ceb0979,0x3c7070ca,0x3c355679,0x3be77ada,0x3cfe7055,0xbcd5f6da,0xbcb9b8f5,0xbcc00b20,0xbcc38587,0xbcac4fed,0xbca042f6,0xbc8147bb,0xbcb98a10,0xbcd19ba4,0xbcf7cc68,0xbd0bc45a,0xbd1b8e73,0xbd23c6fc,0xbd0be8cb, +0xbce8cfe3,0xbcbfbf6a,0xbc903109,0xbc4bf9fb,0xbc7d1404,0xbc375583,0xbb5fc0a6,0x3c8c0dfa,0xbc5fd93b,0xbb4ede71,0x3c92a7cb,0x3ca6f270,0x3cb82dc0,0x3cac66ad,0x3cd3f9cd,0x3cda9192,0x3ce157c7,0x3aa943db,0xbc1a4155,0x3ce2e8f6,0xbb608bee,0xbc5d71d4,0xbcd55f7e,0xbc8633c1,0xbc9d9f42, +0xbc986e49,0xbc9be76c,0xbca3403b,0xbca841a0,0xbcad1150,0xbcad6895,0xbcab5d8c,0xbca8a3ef,0xbca577ca,0xbcaebb52,0xbc99cea1,0xbc8ec6be,0xbc810893,0xbc74e4fe,0xbc4c4b2a,0x3c507f68,0x3c08be63,0x3bab5fbe,0x3c97ad50,0x3cc58333,0x3cf6c10d,0x3cb1cefe,0x3d011586,0x3d19a79f,0x3d1191c6, +0x3d1004cd,0x3d0a4bd5,0x3d118b4e,0x3d18dbcf,0x3d23a8ba,0x3d0e8596,0x3cd2fe76,0x3d0e790e,0x3d03120c,0x3cd228b2,0x3be6c335,0x3c4f2f4b,0x3c38725c,0x3c1c0d2b,0x3c15c171,0x3c0a96db,0x3c03bff3,0x3c0472d8,0x3c01cf9c,0x3ba73ba4,0x3c241f10,0x3c2a9fb4,0x3be5a34b,0x3c06b55e,0x3c093b25, +0x3c1740fa,0x3c1270e2,0x3c097319,0x3b752b29,0x3ba31670,0x3c00e939,0x3cba7a72,0x3ce82969,0x3cece69f,0x3cfb8e0b,0x3c9f1146,0x3ca19af1,0x3cdd49e5,0x3ccab7ff,0x3cdf6981,0x3d06cb7b,0x3d15c54b,0x3d01afde,0x3cb298ff,0x3cadb065,0x3d087ef1,0x3c5c525b,0x3c57f384,0x3c62b5db,0x3c015b83, +0x3bfd464e,0x3be82ba4,0x3c01cf49,0x3c0ecb9a,0x3bf46201,0xbaacc911,0x3c2ce213,0x3c177c5d,0xba6113a1,0x3aaa475b,0x3b757a4f,0x3c1921c5,0x3c3bbc50,0xb9f58778,0xbc84930e,0xbcbcb9e3,0xbbdb5dd2,0x3c723497,0x3cc5445f,0x3d0f2be6,0x3d27c169,0x3d0290d6,0x3cd50799,0x3d1009ba,0x3d0179ed, +0x3d315d13,0x3d3e0354,0x3d5707ce,0x3d33795e,0x3cb3e716,0x3ce7e813,0x3cf0de0b,0x3c97c571,0x3c75a803,0x3c5513bf,0x3b649b70,0xbaf393cf,0xbb91aeed,0xbb94d40a,0xbb6089ff,0xbb64b34e,0xbc97a0bd,0x3bd26a2d,0x3bac140e,0xbca4e2ef,0xbc2c906f,0xbc1542cf,0xba59c7c5,0xba4b7dbe,0xbaedef52, +0xbd2f850d,0xbd534d87,0xbc94e863,0x3cbe55dd,0x3cf750fe,0x3d3bf17a,0x3d1fd8d6,0x3cf3826b,0x3d08b566,0x3cf98d78,0x3cfd40b8,0x3d481ce8,0x3d9cf36b,0x3d71ce45,0x3d3b303b,0x3c9b8855,0x3cbdf34c,0x3ce70167,0x3c90ee4a,0x3c61523d,0x3c8aef06,0x3b1f4aa4,0xbbb27c74,0xbc07cd47,0x3a963628, +0x3c1810dc,0x3c1d32ff,0xbc846001,0x3c99270d,0x3a71b1a6,0xbd1d2b23,0xbca6e868,0xbb0c7480,0x3bb6ea3a,0x3bf8ec5b,0xbcbe5c48,0xbcae8f64,0xbcb75dea,0xbd1eae1d,0xbcc4325c,0xbcdbe014,0xbc50c61c,0x3ca41ffa,0x3d74f54f,0x3d8a0817,0x3d6ca6e6,0x3d3eb425,0x3d47be01,0x3d90e5a7,0x3d3a4eda, +0x3d2c7371,0x3d13463d,0x3d035cb6,0x3d47ff43,0x3d72b206,0x3cb2dc70,0x3bfb3baa,0xbd3200e4,0xbc141199,0xbc6d47fb,0xbd35899d,0xbd9b7a11,0xbdcea03a,0xbe049c5e,0xbdbece77,0xbd829530,0xbb80f045,0xbdffa35f,0xbe1e0c87,0xbdb356a6,0xbd6f0810,0x3e42518c,0x3e1a8ad0,0x3e2d884c,0x3e206b0b, +0x3e0dfd32,0x3ddadefd,0x3db9899b,0x3ddd3953,0x3d89d83b,0x3d83fce6,0x3cd76611,0x3ceb3fc4,0x3d29958d,0x3d9fa67a,0x3d1c3900,0x3d0b9a7c,0x3ca87fee,0x3c98eb87,0x3cf864cb,0xbc3433ed,0xbd212765,0xbcc7d360,0xbd272e1e,0xbd63de71,0xbdab67f2,0xbddc0f41,0xbe00f9d3,0xbe034a77,0xbe028ed2, +0xbd9c625b,0xbd9a6230,0xbd4c2758,0xbdeb17e4,0xbcfd9186,0x3e397958,0x3e3f8451,0x3ce1611b,0xbc7db79d,0xbb302d15,0xbcb93884,0xbca601a8,0x3d0d3e6f,0x3d8ee2cd,0x3e1e89fb,0x3d3b1699,0x3b959c4c,0x3cce8b38,0x3bb781eb,0x3d546a94,0x3e1a569f,0x3d9970a3,0x3d3df7a6,0x3d2228c4,0x3c67ef13, +0xbafb337b,0xbd1a0c94,0xbda24018,0xbde65a02,0xbe13169f,0xbe1202bf,0xbe0abb0c,0xbdf95f64,0xbdb0aad9,0xbd488789,0xbcc8c5ad,0x3d71870e,0x3da2c2c4,0x3d82a675,0xbb8d081d,0xbcfa0a84,0xbc690402,0x3c9ce736,0x3c844e36,0x3bf020c6,0x3c4283e0,0x3cd15fa8,0x3cf71194,0x3d3b2b7d,0x3d0f5520, +0x3d5c028f,0x3cf5895e,0x3cca80a9,0x3d7df4aa,0x3c27a6aa,0x3cb867a4,0x3d9673c3,0x3d3ac473,0x3d4b3f7f,0x3ca820eb,0x3c840cc4,0x3cc2783b,0x3c214291,0x3cdec327,0x3d2bd33f,0x3cf3ac17,0x3d76370d,0x3da17258,0x3dd26eaa,0x3e0ec1dd,0x3e2beadd,0x3e35cedf,0x3e06bfbc,0x3d8e5bba,0x3ce90593, +0xbcd90ce7,0xbc8894df,0x3d88d86b,0x3d0c1bf7,0x3d0b0f41,0x3cf30e9b,0x3c965f71,0x3c900abb,0x3cc1f38a,0x3cca9210,0x3d3110a3,0x3d95ff5b,0x3d25fb4c,0x3caf784f,0x3c4830f1,0x3cceb430,0x3d1ad491,0x3d27a4b4,0x3cfe1319,0x3c88637d,0xbbb15da3,0xbc2fd7e0,0xbbdf648c,0xbc89a5d9,0x3b87f8e4, +0x3c8cbcd0,0xbb935e71,0x3d07afe5,0x3d584017,0x3d891239,0x3dc0e47d,0x3de5b46e,0x3e01b04a,0x3dcdccd4,0x3da42a91,0x3d9ee08f,0xbc685fce,0xbd078730,0x3cdbe276,0x3ce05dfb,0x3d73043f,0x3d4c83a1,0x3d4fdb3e,0x3d32c82e,0x3d0a4021,0x3cd174c8,0x3c9e4332,0x3cf2003b,0x3c87e286,0x3c98a0e8, +0x3ccef85e,0x3cc77061,0x3cc7ac7e,0x3d1af4b7,0x3d09ea3e,0x3cfaa26d,0x3cf8d5e3,0x3cba6e02,0x3c9a7b75,0x3ce29dd5,0x3d183ce7,0x3d027cdc,0x3c720da8,0xba91dffd,0x3c02d547,0x3d215d59,0x3d6a7c5e,0x3d81eeab,0x3d5801aa,0x3d4ed2d1,0x3d426f95,0x3d8872fa,0x3cb52ff8,0x3c3c6c52,0x3be7526c, +0x3d433235,0x3d18e4f2,0x3d4d3509,0x3d3932c1,0x3d5cc40b,0x3d75d001,0x3d77570b,0x3d7a2b02,0x3d7d4235,0x3d47e19e,0x3d214b11,0x3cb199ca,0x3cec26a4,0x3cc1b8eb,0x3ce061f8,0x3cb1d807,0x3cd4ec84,0x3cd1ee59,0x3cc81adc,0x3c28b9c8,0x3d008b40,0x3ce255a6,0x3b2e5916,0xbc114dd0,0xbb0b01a5, +0x3b456963,0x3b995365,0x3bc07646,0x3c1daac5,0x3c55cc9c,0x3d029924,0x3d3ee206,0x3d8a04c5,0x3d4264de,0x3d063840,0x3c1ccb9d,0x3cb562b1,0x3d0a9450,0x3ccae745,0x3c410859,0x3c624f6a,0x3c04146c,0x3b6cd818,0xba638ebf,0xbb09ea05,0x3aa1dd28,0x3c274163,0x3c636e26,0x3c9cd05c,0x3ca8270b, +0x3ccf8015,0x3ca51bb1,0x3cbf354f,0x3caeec7c,0x3caff6c6,0x3b826b11,0x3d11df09,0x3d08e964,0x3d079e34,0x3d02a4dd,0x3ce960c7,0x3cc57f6c,0x3c9f620c,0x3d02f5a9,0x3d2e4850,0x3d547217,0x3d786a73,0x3d89d584,0x3d9ddd18,0x3d8a2642,0x3d7e2bc7,0x3d60c7d8,0x3d3df99b,0x3d4e9b8d,0x3d43ddb5, +0x3d50b1f9,0x3d3f4a2e,0x3d159872,0x3d3fb05b,0x3d3267f9,0x3d1229f5,0x3d1bb3c6,0x3d1939d0,0x3d1cea64,0x3d1c8ea0,0x3d1fcaa6,0x3d242ddb,0x3d44c22a,0x3d554a0b,0x3d03f98a,0x3d421d5b,0x3d549ae1,0x3d680f12,0x3d4f5627,0x3d5484e0,0x3d521e53,0x3d4ef83c,0x3d501f6d,0x3d498769,0x3d5a6624, +0x3d6328af,0x3d6e1a76,0x3d769512,0x3d7f5af3,0x3d88903a,0x3d7e113d,0x3d736c49,0x3d68d45d,0x3d5b56be,0x3d888dca,0xbd1b725e,0xbd1d90c2,0xbd135148,0xbd368052,0xbd367e5d,0xbd1f8cc6,0xbd0e4446,0xbd1cb38d,0xbd180af6,0xbd27e820,0xbd27929d,0xbd1d5aa5,0xbd1c0cc3,0xbd1dd3a9,0xbd240ab0, +0xbd1c44f1,0xbd08ad14,0xbd2b9275,0xbd2ffa63,0xbd274fc3,0xbcedfe58,0xbd029cdf,0xbd028991,0xbd088127,0xbd074cb0,0xbd08499d,0xbcfd4728,0xbd17d060,0xbd20a1b6,0xbd267ccb,0xbd1f8b4a,0xbd2bde43,0xbd5c022b,0xbd43c7cc,0xbd40bb60,0xbd4971fe,0xbd29c96f,0xbd27325b,0xbd1f7c98,0xbd2cdc8a, +0xbd085188,0xbc9b3e5f,0xbca056f4,0xbc895fbd,0xbc6fcf5f,0xbcb65c99,0xbcd2e051,0xbcc79105,0xbc9c5b2e,0xbc798c13,0xbca70bdb,0xbc75ef10,0xbc8ffc6a,0xbcd72b4a,0xbcfebfcb,0xbd24a083,0xbce12e63,0xbce20b58,0xbcf8d54f,0xbd0f6842,0xbd0e8804,0xbd13340e,0xbd037dee,0xbd4a3a1c,0xbd60ce08, +0xbd66d64f,0xbd51f2b0,0xbd75c4d5,0xbdb5784a,0xbd9dd927,0xbd977e73,0xbd95de6b,0xbd5212c0,0xbd60160a,0xbd490113,0xbd3b5788,0xbd1ce7f9,0xbb7f26ca,0xbaff8fce,0x3aee1cf3,0x3bf2e280,0xbc0eebd5,0xbbeb4624,0x3a7138ac,0x3c0842b5,0x3c27cbe6,0xbb5b4c61,0x3c11ffc9,0x3bd11dbe,0xbc28dd90, +0xbcb79e6e,0xbcee750a,0xbc92e8cb,0xbc8e6b36,0xbca0a866,0xbcec9464,0xbcd9d15d,0xbd00e371,0xbcbb9836,0xbd67a8ba,0xbd8a9321,0xbd96f92d,0xbd884a92,0xbdab4ee8,0xbe0a40bc,0xbde36edf,0xbdda3df5,0xbde372ce,0xbd8cb47b,0xbd0b5b8b,0xbcd52665,0xbcc6c7a2,0xbb9b94ef,0x3d23ee10,0x3d1f1595, +0x3d4071bd,0x3d30c63a,0x3c9c8174,0x3c95a4c0,0x3d0b5ea5,0x3d1a58d2,0x3d554dc6,0x3d499b51,0x3d61eedb,0x3d22f576,0x3bcc5afe,0xbb3cc17c,0xbc2986ec,0x3b2f65e1,0xba57276d,0xbc30f86a,0xbce7eb7f,0xbcdc8984,0xbcee68cb,0xbcb94c90,0xbd997c86,0xbdc8f78d,0xbdcbfa0e,0xbdb4ccd3,0xbde8eedf, +0xbe3c2309,0xbe1e09bf,0xbe178def,0xbe11953c,0xbd88a482,0xbdfc7ba1,0xbd90181d,0xbdfb2b21,0xbdeeebae,0xbd675844,0xbc860e10,0xbba6ebad,0xbcc130f4,0x3d1a9066,0x3d72013a,0x3cd11c07,0x3d6a0ff3,0x3d5c9d84,0x3c68c768,0x3d08bb28,0x3d09b555,0xba2bf7aa,0xbc912b26,0xbd06d5eb,0xbcf6a7bd, +0xbc89eee3,0xbbe0e938,0x3c249c1f,0xbc4f2d9b,0xbd215adc,0xbd3eda1a,0xbd7d7239,0xbd78c19a,0xbd84e4bf,0xbd96a528,0xbdc9c39d,0xbe223e8a,0xbdf66c06,0xbddfb1be,0xbd926461,0xbde77527,0x3db71a65,0x3e1447ec,0x3e0e969c,0x3de5cca2,0x3d895532,0x3d0835a5,0x3d122768,0x3dd12396,0x3d1683d7, +0x3c5c61ca,0x3c072587,0x388b1bfb,0x3ce042b1,0x3d627ca6,0x3d4ef3c9,0x3d0e0e99,0xbc64f46e,0xbcc0f4a0,0xbd6096a1,0xbd20285c,0xbc56b429,0xbce52bf7,0xbd3993c1,0xbcc12940,0xbb8263e5,0x3cef906b,0x3c29b1a5,0x3b01b454,0xbcaba0ae,0xbc7c6d67,0xbda796f5,0xbe7253b1,0xbe31aecb,0xbe004fe9, +0xbcadd96d,0x3cc14fde,0x3ce53de8,0x3b21564f,0xbd470863,0xbcc5302a,0x3c97e1ea,0x3deb70c9,0x3de1902c,0x3d90697c,0x3c4535f7,0xbcc90946,0x3c00a0ab,0xbbac0aab,0x3bbe3f8b,0xbd39b2af,0x3d55bcd3,0x3d7622e4,0xbd3ffca1,0xbcb63c4f,0xbd0a8fef,0xbd156e5d,0xbd4a0140,0xbd1e0bca,0xbc594b58, +0xbcd90717,0xbd2f127a,0xbd3046f7,0xbd624a08,0xbd05953b,0x3b9cf394,0x3d5c63d3,0x3dcc706b,0x3e078221,0x3e46f0cf,0x3e60bc25,0x3e94561a,0x3deb4c3d,0x3c6a3d86,0x3cbfb120,0x3cbbe109,0x3ce4a033,0x3c82f439,0x3cdf3565,0x3cd054a0,0x3c9b2332,0x3d7752fa,0x3d651be0,0x3d20a68f,0x3d05ce2e, +0x3d3393d5,0x3c4c635d,0x3d8e8117,0x3d8c528e,0xba5b2de1,0xbbbb1926,0xbcb79ff7,0xbc97dfec,0xbd14e3b6,0xbd2b6762,0xbd01f68a,0xbd60ee42,0xbd39ce15,0x3b037ca4,0x3d0b3413,0x3d9c3a52,0x3dc4602f,0x3e304608,0x3e2608c4,0x3dc2aa63,0x3c103c0e,0xbd1d51d1,0xbc60ee16,0xbc82a814,0x3c8fdf5a, +0x3c003c78,0x3c189759,0x3c416b46,0x3c90bb11,0x3d44e0c6,0x3d4a321d,0x3ccee1d6,0x3cad1bf7,0x3c2c33df,0x3c920f7d,0x3bcce1dd,0x3bba4bf4,0x3cb8dab5,0x3be7b231,0x3baab59f,0x3c2bab64,0x3c348e3d,0xba75a929,0xbc1ede4c,0xbc7fd6df,0xbc228096,0x3ce707e1,0x3ce4b319,0x3d14483c,0x3d800402, +0x3d1ae9ff,0x3ca1576f,0xbcc3f321,0x3bda97ec,0xb9a039cb,0xbca0ddb0,0xbc92cc6e,0xbc30537d,0x3ca49f2e,0x3ca3f0ee,0x3aed1239,0x3b48f094,0x3a64910b,0x3a93eca1,0xbbecd069,0x3b302783,0x3c0c29b4,0x3c58a6ef,0x3c3dae3a,0x3c199d9e,0x3bbc76d3,0x3c8c0e52,0x3cd5ad2f,0x3ce4927e,0x3c7280d8, +0x3bf031c9,0xba320f4e,0x39878c0b,0x3b37d2e2,0xbc30d245,0xbc0fe637,0xbbb3b836,0xbc124f70,0x3cadf88e,0x3cc78e29,0x3ba6bc64,0xbc924d0b,0xbcba5b92,0xbc85a819,0x3ca263a4,0x3c54c138,0xbd17fecd,0xbd4e7491,0xbd4795f4,0xbc5630db,0xbbef3b51,0xbb04e0a2,0x3c111a9d,0x3c21376e,0x3c2c6f64, +0x3c70c561,0x3c6d1d5d,0x3c38e4c9,0x3c43e807,0x3ca187f7,0x3cca0237,0x3d0f02a3,0x3ca00581,0x3c595d67,0xbada369d,0x3bf9bb1d,0x3c042042,0x3c6b1728,0x3c6c5fec,0x3cb9a55c,0x3c05d198,0xb6b18660,0x3c1c0337,0x3bffbbe4,0xbbae9b15,0xbc980499,0xbce07035,0xbc28a09c,0x3b790252,0x3c87829f, +0xbbfaac7c,0xbcc5d2a7,0xbd1f4c5b,0xbccda98c,0xbca4592d,0xbc8f0f76,0xbc2d26a6,0xbc67aaad,0xbc857dc3,0xbbef7894,0xbc76b449,0xbc66b4c5,0xbc43809b,0xbc2b6df0,0xbc6c4f2a,0xbc3fc781,0xbc7c1dba,0xbc4e954a,0xbc5d9bfa,0xbc193523,0xbc0e07e3,0x3af6ad22,0x3b8498ce,0x3bd1919f,0x3c3f839e, +0x3cfd83df,0x3c9e7fab,0x3cba5e7d,0x3cc465ae,0x3cdf95d5,0x3cfd81e1,0x3d156760,0x3d20a0fc,0x3cf27bd0,0x3c939efc,0x3c35a400,0x3b4ea611,0xbb228f63,0xbc5a687d,0xbc5fff92,0xbc6c0613,0xbc66bc22,0xbc5c8e97,0xbcdc74cf,0xbcecbbba,0xbcad3c09,0xbc644f5b,0x3a29dfff,0xbcb245a5,0xbc48e985, +0xbb144e7f,0xbb4a9dc0,0xbae7a284,0xbae3849c,0xb8343636,0x3a49ef13,0x3ad2a2dd,0xbc4ce8d0,0xbcaa7e3f,0x3c330800,0xbbc3e1b9,0xbc4c688c,0xbcab494b,0xbc856681,0xbc868608,0xbc8158b1,0xbc723f2c,0xbc6e5366,0xbc44e2d6,0xbc891640,0xbc9ebce9,0xbcbf7213,0xbcce7a0e,0xbce0beda,0xbcf81d97, +0xbce824ed,0xbce4d59f,0xbce0b948,0xbce3052c,0xbd24365a,0x3c2e4442,0x3c2a0e63,0x3bf8b9f3,0x3bdc5292,0x3bbf8551,0x3bd7bd67,0x3c10cbdd,0x3c346c3f,0x3c3ddbfe,0x3c04b92e,0x3bf74acb,0x3bd97912,0x3c167a6b,0x3c1b1bb6,0x3be37569,0x3c591df8,0x3c67ee12,0x3c245760,0x3c49e354,0x3c36b6c9, +0x3bc27138,0x3c0f4508,0x3c0eef98,0x3bd8e684,0x3c0345dc,0x3c0c36b1,0x3c055a74,0x3c2f6c71,0x3c3b56d8,0x3c6dfe88,0x3c0035a4,0x3be868af,0x3c3b5dd2,0x3c38241f,0x3c4f9867,0x3c633298,0x3c52f692,0x3c8853d0,0x3c21f539,0xbb9bc05f,0xbb4d15de,0x3bcfaa88,0x3bcd572e,0x3c2c1fc2,0x3c9429f4, +0x3c313f6b,0x3c18020d,0x3c0ff1b6,0x3c6776c3,0x3c7386ff,0x3c2c7a2e,0x3c91d156,0x3c9c2a25,0x3c9d835d,0x3c4df099,0x3c2685ab,0x3b59d3ff,0x3c037b17,0x3c099dc5,0x3b49a22e,0x3bcb6070,0x3bf28ec7,0x3bfabacb,0x3c8a1ed7,0x3ca5b2f9,0x3cd1f124,0x3bb52ec9,0x3b58f2f8,0x3c927f3d,0x3c85636b, +0x3c99c557,0x3ca4f6b9,0x3caa2a11,0x3c5a71ff,0xbba8e7b5,0xbcb5cf5e,0xbca3b34d,0xbadbbdce,0xbb40a85f,0x3bb63432,0x3cd7fe55,0x3beec09f,0x3ba76a51,0x3bdd9f48,0x3c7302f2,0x3c9f39ab,0x3baf54d3,0x3cb20e07,0x3cc59f6e,0x3cc4e6e2,0x3c38bc92,0x3bce4619,0xbbcd05f0,0x3b8202d1,0x3b856b2e, +0xbbe881a7,0xba26f85a,0x3b5d6f23,0x3b7f75fe,0x3ca83a5f,0x3cc31dc1,0x3d174dd8,0xbac5c4f5,0xbbe44fbd,0x3cf6dc9d,0x3cd42775,0x3d163c91,0x3cfa3c8c,0x3cc05a1b,0x3ce72f94,0x3b958a3e,0xbd038ffe,0xbd0009b0,0x3baed599,0x3b198dfb,0x3c84df04,0x3d2b45c7,0x3c68f93e,0x3c52e92a,0x3c84401a, +0x3d1bf9f8,0x3d2f9535,0x3c515c71,0x3d1cdc98,0x3d27f3db,0x3d01ca50,0x3c6fc3fd,0x3bc872f4,0xbc480c42,0x3adc7378,0x3b1357f7,0xbc6699ba,0xbb1c5d57,0x3a92e48a,0x3b779083,0x3d0b6275,0x3d41f5af,0x3d824845,0xbb44b1f0,0xbbcf1ba3,0x3d57b76f,0x3d36e3fa,0x3d3ee5dd,0x3d3d1b7b,0x3d1ba79a, +0xbdeca754,0xbdbccb86,0xbdac02fd,0xbd8be47e,0xbd4b84ca,0xbcce8538,0xbca07909,0xbc87b016,0x3c5c8b44,0x3d207395,0x3c9e2b2e,0x3d2835ad,0x3d1ca006,0x3ca6f31e,0x3ceeafb1,0x3c84cb16,0xbb0b7ad0,0xbc14f837,0xbc16db8d,0xbc9ce9a6,0xbcad4b72,0xbc9f942c,0xbce29d64,0xbd0ad135,0xbcb50ce0, +0x3b44a32f,0x3a876a48,0xbbd8662f,0x3b831ae2,0xbd2c42df,0xbd4bfeb5,0xbd8bbcca,0x3b94d6e0,0x3ca2cbb9,0xbd0de143,0xbdb46708,0xbdc03151,0xbbb274c5,0x3c519786,0xbbb97d07,0xbd433af0,0x3c0ddd9e,0x3d1a2391,0x3d56e637,0x3cae08eb,0xbbc432f9,0x3c25f0d2,0xbadcdb71,0x3c94d12b,0x3ccf146f, +0x3d4078a6,0x3d4ae133,0x3cfcb311,0x3cae3ef5,0x3c858b2a,0x3c6dfec0,0xbc6f5b76,0xbc9ab89b,0xbb87e34d,0xbd79f8b2,0xbdbfe9fb,0xbdb9d8dc,0xbdb90482,0xbda45eb7,0xbd55e54b,0xbe00998c,0xbe002634,0xbdfbee32,0xbd9936e1,0xbdcdb558,0xbe370a27,0xbe015ed7,0x3e3c0521,0x3dfb2e96,0x3d825ecf, +0x3daaf9c8,0x3df0d9f9,0x3e0b23e2,0x3db961d7,0xbc7a0cd4,0x3c8750bc,0x3b2505ca,0x3c08f912,0x3c074158,0x3ca154e9,0xbcf40fdf,0x3d8e35c6,0x3da4f229,0x3bdcc637,0xbc017579,0xbd0199f1,0xbd04b918,0xbd1086bb,0xbd003607,0xbcc320a9,0xbd1b5be2,0xbd1b0612,0xbcb600ee,0xbd472bef,0xbd741007, +0xbd48e3e7,0xbda39d4d,0xbdb8098a,0xbe11194f,0x3d7db030,0x3e30abbd,0x3e2116d6,0x3e5056e0,0x3c48507c,0x3b4ea15b,0x3bdcbcde,0x3bf9384a,0x3b532f5b,0x3d168c48,0x3d6b36d4,0x3d4b43b4,0x3d7816bc,0x3d265a89,0x3c27ecee,0x3ce1eb99,0x3ce69b19,0xbc8ce6cc,0x3d1bf9a0,0x3d25b205,0x3a4699df, +0x3bef184a,0xbc66c714,0xbd1ce73f,0xbd77cf6f,0xbda3a6a6,0xbdcdf63a,0xbe0243e2,0xbe146da4,0xbe1ffc5f,0xbe139895,0xbdc14057,0xbc598599,0x3cfae64f,0x3d88d5ac,0x3c8ad58c,0x3dd08413,0x3dc02ffc,0x3cfea91f,0x3cd0cfbe,0x3cfacaec,0x3d03fe6f,0x3cf92b53,0x3d159311,0x3d24efb7,0x3d42a34a, +0x3d1b5b69,0x3c70a0db,0x3c5157a9,0x3c4f57fb,0x3a6552fa,0x3b979644,0x3c7b4712,0x3ce91eec,0x3d50e86d,0x3d44b9b3,0x3cc18a7a,0x3cd5756d,0x3cb8c236,0x3d043334,0x3d093348,0x3d0405cd,0x3d0717bd,0x3d104ff4,0x3d512486,0x3d75e0ce,0x3db33b0c,0x3dd19364,0x3dffbe70,0x3d866b2c,0x3ca5a947, +0xbd51e8c9,0x3c98e6a8,0x3d621b5e,0x3d915d61,0x3d35f1a4,0x3d5ec56c,0x3d178573,0x3cea283f,0x3cc02484,0x3cc16795,0x3d0ab26c,0x3d3161d8,0x3d2d65a5,0x3d3c3f0d,0x3d1e6af0,0x3cf39998,0x3cd2c74c,0x3cbcc600,0x3c9469d0,0x3c9693a3,0x3c81e4e8,0x3c38a1aa,0xba03e2cf,0xbc03c1a3,0x3b511330, +0x3bad530c,0xbb2e1a9b,0xbc0731a1,0xbd4dab0b,0xbd7f8b0b,0xbd3cd921,0xbc8b305a,0x3b5872da,0x3cc40bc9,0xbcaac8fe,0xbcd85808,0xbc8140d9,0x3cc22daf,0x3d3f8860,0x3d8518a6,0x3d873406,0x3d1ed456,0x3d2c829b,0x3d0f9dcd,0x3ce95dc1,0x3ca80523,0x3ca02e64,0x3c88b177,0x3c66fdff,0x3c5588f5, +0x3c983b0f,0x3c96b0d5,0x3cd78bc4,0x3cb121c5,0x3cf1ed5b,0x3ccda781,0x3cf4e850,0x3cf016b7,0x3cc86ae3,0x3c603575,0x3cae9eaa,0x3ce20716,0x3ca5de68,0x3cbee3de,0x3d0b7808,0x3d31777d,0x3d3e17d7,0x3d15b9fc,0x3cc8da2f,0x3c781ea9,0x3c2b3a81,0x3bbc4844,0xbb670675,0x3c0002cc,0x3ca2d4a6, +0x3d0bd74a,0x3d12db7f,0x3bf3015f,0x3c70fab0,0x3be9045e,0x3cb14de1,0x3cb33092,0x3cc8d0dc,0x3d00dbe5,0x3d16a8f7,0x3d10473f,0x3cfa36cc,0x3cbcec09,0x3cba2b9c,0x3ca43973,0x3c84e1d5,0x3c341db2,0x3c297efd,0x3c420a65,0x3c32e99e,0x3b97adf7,0x3bfeaa2c,0x3b596dd8,0x3b130fd1,0xbad3bcca, +0xbbcc0ef9,0xbc389385,0xbc57f808,0xbc80d316,0xbc82b2da,0xbc90954b,0xbc8de158,0xbc8adb15,0xbc911f88,0xbc3607ee,0xbc007204,0xbb4350ee,0x3ad4629e,0x3c35c5d8,0x3c74408f,0x3bd3e517,0x3ac46769,0xbc0f92d8,0x3c70404e,0x3bb84632,0xbb66dc6f,0xbbc17bd1,0xbbdff003,0xbbe65cde,0xbc20c25b, +0xbc40a62b,0xbc64ceca,0x3a877333,0x3c1abc09,0xbc613461,0xba8fac6d,0x3b9f73f4,0x3c3fbc0e,0x3c0dcbd8,0x3c05981a,0x3bf6d175,0x3be4c432,0x3bd76f05,0x3bb554c5,0x3bbc191e,0x3bbaa7d1,0x3bc24560,0x3ba51d9b,0x3b93f11f,0x3b70c3d3,0x3bb5c215,0x3be93e94,0x3c09cde9,0x3c2a8104,0x3c738ccb, +0xbc287831,0xbc599bf0,0xbc3fe495,0xbc46c77c,0xbc443be1,0xbc463a91,0xbc29a1d2,0xbc185824,0xbba2084d,0xbc0e0462,0xbc1c87fc,0xbc1defe6,0xbc13dd5e,0xbc0a2d1e,0xbbea9391,0xbbefc5f6,0xbbd129a9,0xbb9ec63c,0xbbe9b3dd,0xbbeda3c2,0xbb84a672,0xbc08d170,0xbc0e134f,0xbbce9102,0xbc200d36, +0xbc2f2c05,0xbc34bff1,0xbc22f1c6,0xbc2c4d31,0xbc378bc7,0xbc7dddf7,0xbc804739,0xbc492bdb,0xbc33d6dc,0xbc329ee5,0xbc3d5a20,0xbc61470a,0xbcc918b4,0xbcb1f133,0xbc95c027,0xbc9f0a58,0xbc9e0fd3,0xbc1ace46,0xbb681a7f,0x3b3aa439,0xbb8ef739,0xbbf2b1bb,0xbbf963f3,0xbbf034e3,0xbba98eed, +0x3a1e31c5,0x39a949dc,0x3b27045e,0x3b7cb7e2,0x3b3f275a,0xbb6a7535,0x3a8a24b0,0xbbb7dd87,0xbc0f78e1,0xbb09455c,0xbc429967,0xbc632031,0xbc750520,0xbc52b8e3,0xbc7ebeed,0xbc9fd1c3,0xbd04323d,0xbd04c89a,0xbca77836,0xbc5b9114,0xbc342b0f,0xbc68379d,0xbcb23355,0xbd160ad9,0xbcb0aa6e, +0xbc8e4290,0xbc9678d3,0xbcba23f5,0xbbf09d4e,0x3b4f28e4,0x3ca10bc8,0x3b065e81,0xbb54dddb,0xbb0c25fa,0xbb071d0c,0x3b994463,0x3c95a50a,0x3c49b837,0x3c81e7b5,0x3cb0d497,0x3c8314c2,0x3bc65ea0,0x3bf6977e,0xbb0772a5,0xbbefc0a8,0x3bc8d2ac,0xbc45fca9,0xbc84b7be,0xbc993ca3,0xbc6f94a8, +0xbcae5f3c,0xbccfff80,0xbd47f1bd,0xbd3f2f7a,0xbcc7c97c,0xbc8c2097,0xbc9ddc59,0xbcafe47b,0xbd10d3ee,0xbd3aa1c5,0xbd04231c,0xbd0d8494,0xbd241be1,0xbd0655e7,0xbbb05d4f,0x3c62996c,0x3d23680b,0x3c28790a,0x3bec9a8a,0x3c0b0eef,0x3cce83bf,0x3cb51be8,0x3ca5b105,0x3cb54a4d,0x3d012e2d, +0x3d04a3d9,0x3cb650a9,0x3c1a7a70,0x3c895a7e,0x3bb63ec6,0xbba2407a,0x3c80fee2,0xbc3b47e8,0xbc8e387a,0xbc9cfecc,0xbca4fa68,0xbcd8ef0e,0xbd1d2fd6,0xbd9f3500,0xbd9ef01f,0xbd1505eb,0xbc92a76b,0xbc35a26b,0xbc455563,0xbd112ffe,0xbda68322,0xbd58e6fa,0xbc194c74,0xb9294eac,0xbcbd1fc6, +0xbd02de7b,0xbcc757a3,0x3baf1cea,0x3b6c82e6,0x3c8e6ce5,0x3c632ef8,0x3c976242,0x3d035ab7,0x3d5f1a3a,0x3cbda8fa,0x3c906acd,0x3cf9c0ad,0x3c5aeb5a,0xbc4676c4,0xbcda54e2,0xbc1c344f,0xbc1b1f6a,0x3b4f747b,0xbcbb9191,0xbd04fbee,0xbd393f95,0xbd3039d7,0xbd6cb36f,0xbdc2bf17,0xbd3f78bc, +0xbce24c0d,0xbcaea2b7,0xbd0ec3ab,0xbd83c25b,0xbdf8b737,0xbdc38378,0xbde60678,0xbda67d4a,0xbdb2289f,0xbd7be0d0,0xbc67dc2e,0x3d09d972,0x3d2269bd,0xbc8c01d7,0xba557ac8,0xbc0ad468,0x3bd8944a,0xbaa0fb49,0xbb5e918f,0xbc56028e,0x3d317b3c,0x3d3d4d6b,0x3c4daca5,0xbb3f1e97,0xbc71ff43, +0xbc57c410,0xbb9857a9,0xbc0f617b,0xbc716e5f,0xbaff55b5,0x3c56cfe6,0xbb3df327,0x3c5f78f6,0xbc244ab7,0xbd60f876,0xbdd89da1,0xbdb734d7,0x3cd3e8f5,0x3c8e2d28,0x3c7a33ca,0xbcf2bc56,0xbdb3c96b,0x3e2bbac1,0x3e569bc7,0x3e3428d3,0x3e214c00,0x3e20299d,0x3daf2f44,0x3d3793ae,0xbc132561, +0x3c936c0c,0x3bee76a3,0x3aeada38,0x3b5d6f88,0x3b919583,0xbb6d6bb7,0x3c2ea109,0x3cad1345,0x3d4146e2,0x3baab617,0xbc597b17,0xbc6f7246,0xbbc8c82c,0xbc85d6e7,0xbd117a5a,0xbd7b204b,0xbd8b4b1f,0xbda1dbf9,0xbcc660f2,0xbcaf9bbc,0xbd04319f,0xbde3cbe0,0xbdec801b,0xbca2dd5d,0xbdbcd0c8, +0xbd8b23d4,0x3cef754e,0x3ddfa92f,0xbc751c71,0xb970bbd2,0x3b5b328d,0x3ce05347,0x3d3ca0c4,0x3d842970,0x3d8c1cd2,0x3d70790f,0x3c859657,0xbae30ede,0x3c14b66a,0x3c14dfca,0x3bb47c88,0x3bf0adbd,0x3c5f4cee,0x3ca1e87e,0x3d4b571f,0x3c1ad49f,0xbc26caf7,0xbc91709a,0xbd132f28,0xbd57bc88, +0xbd5df271,0xbd7176d7,0xbd4fc845,0xbd62f465,0xbd2b4430,0xbd7da035,0xbd69dcee,0xbdd44dd0,0xbd559b10,0x3dc7022d,0x3e11ea4c,0x3e259f48,0x3de666d8,0x3cfdd291,0x3cba2d21,0x3d1150ae,0x3d0cda1a,0x3d220960,0x3d353a33,0x3d249700,0x3cfc973e,0x3cb62ceb,0x3ceb0785,0x3d24e036,0x3d6ca754, +0x3d17df29,0x3d03e27d,0x3cd5cfe5,0x3d45de28,0x3d3dc495,0x3cfae855,0x3c805955,0x3c7fbc85,0x3c5f4597,0x3b8bc2ec,0x3b446252,0x3ad13395,0xbc6f130b,0xbc879f61,0xbc05a074,0x3ced6694,0x3d4deb05,0x3d97aeba,0x3d1ef344,0x3d0a80e8,0x3d98a03c,0x3c989d04,0xbb37a8f1,0xbcac6411,0x3a6e1319, +0xbcf1ab4d,0xbc9cfff3,0xbb9266a2,0x3c1e8a78,0x3cd6c5e5,0x3d1d1dee,0x3d3330d5,0x3d13ede9,0x3d2cf0c1,0x3d237d4e,0x3d1a3955,0x3d010ac0,0x3cd8cda7,0x3c959449,0x3c90e175,0x3ccdedf4,0x3d1df7a1,0x3d1bc9d9,0x3d064778,0x3cd0e271,0x3cd800c1,0x3d084813,0x3d342e7a,0x3d8397de,0x3d9fd14d, +0x3d9aa575,0x3d73a820,0x3cdd88dd,0xbc41f612,0xbcad558e,0xbc824d8c,0x3c6e91f8,0x3c9da4ac,0x3c9bcf8e,0x3b9c6df7,0xbcabdb3f,0x3c84422f,0x3be10936,0x3c4deb98,0x3c3151f1,0x3c138199,0x3c3e776c,0x3c80936c,0x3caf0ca6,0x3ca9b4a0,0x3ca3be9f,0x3caf4e89,0x3cdf9a8a,0x3d14d72b,0x3d385413, +0x3d0ebee3,0x3caa4f2b,0x3bc6f117,0x3c8d136f,0x3d0a22ab,0x3d092f2b,0x3cf4d3bf,0x3d10fb64,0x3d0ea425,0x3cdfdde0,0x3ca7acd2,0x3c94ec0e,0x3c16862b,0x3ba9d65a,0xba8fd3ab,0x3c50ad83,0x3ca9a5e6,0x3cdca7fd,0x3ccad0dd,0x3ccf591c,0x3cfbc6a7,0x3ccc87a8,0x3cce65b6,0x3ce464a2,0x3cdf9177, +0x3cf483bb,0x3d01ca60,0x3d0f5d61,0x3d146df8,0x3d1d69e5,0x3d181835,0x3d1878d2,0x3d16af2d,0x3d12983b,0x3d0949f4,0x3d08bf9f,0x3ce0ae4e,0x3cc5acbf,0x3c9ba15b,0x3c4905f7,0x3b87aa56,0xbb9f2564,0xbbb172e0,0xbbe6d05c,0xbc0184a1,0xbbe57ba6,0xbbcaa55c,0xbbd18817,0xbb23efc2,0x3a96dc70, +0x3b70a806,0x3bc4db57,0x3c056f6c,0x3c4a56ef,0x3c7e3b9b,0x3c9477c2,0x3c9e3dc9,0x3cacddc6,0x3cba3b93,0x3cc8c288,0x3cbe8d91,0x3cc7f7b8,0x3cd12c9d,0x3cc1b6fe,0x3cc8dabd,0x3cd922f6,0x3cda16d1,0x3cdd96aa,0x3cdf297b,0x3ce238ce,0x3ce49cc1,0x3ced0793,0x3cce5543,0x3cb24ba4,0x3cbdf724, +0x3c9c0d58,0x3c85342c,0x3c5b2e47,0x3c742c77,0x3c6ef478,0x3c6ce1c5,0x3c65cdc4,0x3c5c580d,0x3c4ac577,0x3c6d554f,0x3c80e06d,0x3c8d23ef,0x3c90e64e,0x3c94bbf6,0x3c94d4ac,0x3c9773c9,0x3c9d22e2,0x3ca64e04,0x3cb230f3,0x3cb7a7a3,0x3bac8ce9,0xba945f87,0x3b9a5e23,0x3b3e0ef6,0x3b3970cc, +0xb9a6019e,0x3bce8dea,0x3be6a3a1,0x3bee1bdf,0x3bac44b1,0x3b83d080,0x3b062928,0x3b3bc7f7,0x3b8635c1,0x3c0277f6,0x3c066727,0x3c1107ee,0x3c022de0,0x3c20912e,0x3c1c8ef6,0x3beaebf3,0x3bc5fc38,0x3ba71922,0x3b9533c4,0x3ba629e8,0x3b8dbb74,0x3b0bc70b,0x3ad093d0,0x3b06d916,0x3bba22e5, +0x3b6a3b90,0x3b960c1c,0x3c2c40f7,0x3b8dccc2,0x3b20e67b,0x3b265219,0xba955888,0xbc2b2f14,0x3a32bc6a,0xbc150da5,0xbba12170,0xbc1fb357,0x3bd3aa34,0x3c413855,0x3c4d0d6f,0x3c0534b7,0x3b910e0c,0x3aa5dfc0,0x3ad9fcf2,0x3ba14615,0x3c6744f1,0x3c592984,0x3c7ed3e3,0x3c8d0cbe,0x3c9bca44, +0x3c9fd80f,0x3c68c3de,0x3c0ea9a0,0x3bd2a2c4,0x3b806536,0x3bb50c91,0x3b703644,0xbaabe2c6,0xbacdca15,0x3916385d,0x3c04cd5a,0x3b64adcb,0x3c006512,0x3caf3c7c,0x3c11868e,0x3b6b3213,0x3afbec5f,0xbc24434b,0xbcf8db43,0xbb8628bd,0xbc76b00e,0xbbe1e569,0xbc931e6f,0x3bd70f39,0x3c8186ee, +0x3c9ea2a5,0x3c333e84,0x3b02333d,0xbb67363a,0xbb424765,0x3ba1f99a,0x3cbea421,0x3cb6eff8,0x3ccbe16a,0x3cda19d8,0x3d001fd9,0x3cffc02d,0x3cb9e939,0x3c394f41,0x3bcbc935,0x3b5861de,0x3bb9d22b,0x3b111ba7,0xbc10663a,0xbc59f860,0xbc31d39c,0x3c2e675f,0x3a4deaff,0x3c06ab48,0x3d0cf379, +0x3ab6a52e,0xbc0a9c7f,0xbc31dfeb,0xbd0ccc88,0xbd3cb972,0xbc68e825,0xbd155d5a,0xbd117b31,0xbd267e85,0x3c1033c2,0x3cc82994,0x3d01af8d,0x3c6c3fc7,0x3b7eeab3,0xbae1dca2,0x3c221467,0x3c9dc5e9,0x3d3380ba,0x3ced62a0,0x3d0ecb4c,0x3d3ff72c,0x3d5469d9,0x3d4eba61,0x3d0d1d37,0x3c85eb88, +0x3c2974f5,0x3aefdaa4,0x3ba16edb,0xba057c52,0xbc49cf37,0xbc6392ee,0xbba9c43b,0x3c8c9a3a,0xbb2f00ae,0x3c7611ea,0x3d6a0455,0x3c921396,0x392fac1d,0xbb9e1221,0xbd4aa131,0xbd84bed8,0xbda3bc7a,0x3ceb4d87,0x3d2c809b,0xbcb20706,0xbc6e2287,0xbc0ace7c,0x3c52e8bb,0xbbf9d5e1,0xbae8b1c6, +0x3c43fc6e,0x3ad9db6c,0x3c475828,0x3d1c27c9,0x3cc3fd0d,0x3cac3364,0x3cd9e2f9,0x3c89e179,0x3c68fac5,0x3c6273ff,0xbb979f0b,0xbc78489a,0xbce479ec,0x3ace8b7d,0xbaeb0e46,0xbd15b0d3,0xbd7afc0f,0xbd5a3c15,0xbcf96839,0x3d693400,0x3d66f2d4,0xbccdf160,0xbd11e9e5,0xbd798014,0xbdbdee7b, +0xbda58b63,0xbd0ee0a0,0xbdc2edf9,0xbdb55a22,0xbd788f40,0x3c50e883,0x3c28fdac,0x3bdcfb6c,0xbc8a04b7,0xbb422b03,0xbb595356,0x3b7a671f,0x3a751a1b,0xba766e21,0x3c36de65,0x3ccb2ab6,0x3cfffec4,0x3d514042,0x3d07fdec,0x3cc81389,0x3b0f4277,0xbb1d1c65,0x3aa71bf5,0x3c03ce3c,0xbc811667, +0xbcd6767d,0xbcc5c37b,0xbd5604fe,0xbd90ce9e,0xbde14843,0xbd5eb279,0xbcb97770,0x3c753980,0xbb73a340,0x3b49477b,0x3cc321b4,0x3c5f2ee8,0xbcd4e56e,0x3d53e6d2,0x3e081d18,0x3de5940a,0x3dd36dc7,0x3c96741d,0xbaeacfd5,0xbae0987b,0xbacae574,0xbb573eeb,0x3b1b42ce,0x3bf6e9b8,0xbc277b39, +0x3c01a707,0xbcb5d433,0xbb68c76b,0x3da74e4c,0x3ce93042,0x3b8bee1e,0xbbedfdf7,0xbb9f18ff,0xbc4b17ad,0xbc880b57,0x3b4114c0,0x3c192376,0xbc06e8d9,0xbd110e1c,0xbd86c8ca,0xbdf4877f,0xbd9cf46d,0xbda7c62c,0xbd9adc1b,0xbe1fc419,0xbe4739c9,0xbe60c875,0xbde35375,0x3e233349,0x3db051d5, +0x3d6e1d32,0x3d811d3d,0x3db1dc47,0x3d926ab6,0x3d67b9e7,0x3d1adaef,0x3bcc1afb,0x39524376,0x3b2c469f,0xb9e80c18,0x3984ed96,0x3ccbb5a8,0x3be74695,0x3c21aa1d,0x3d5b9c05,0xbbb519fa,0xbcc173d0,0xbccafcd0,0xbd13d36a,0xbd0852a8,0xbcdadbbe,0xbccc8c86,0xbc9347a5,0xbba68461,0x3bd956c3, +0xbc5d938b,0xbdb7ee30,0xbdbdd523,0xbdb8d34f,0xbcdc6052,0x3cf2b47b,0x3dce785b,0x3e2577f5,0x3e3952df,0x3c7958e5,0x3cc6dd11,0x3cf18de0,0x3d04db22,0x3d347478,0x3d06fc08,0x3d12143a,0x3d495c0b,0x3d4026b9,0x3d38dc2d,0x3d2f6827,0x3d208641,0x3cfc3f34,0x3c44d75f,0x3c8fbe20,0x3cb9b3a6, +0x3d14a51b,0x3c8a2260,0x3a3e487e,0xbc5b4f51,0xbcbae7ee,0xbd1a5122,0xbd6a8518,0xbd52b459,0xbd4be373,0xbd2e157e,0xbd6d5c12,0xbd470bdc,0xbd020df6,0x3d67f650,0x3de54d6f,0x3e15be0a,0x3deb312b,0x3d86d456,0x3c5f946d,0x3c6760d8,0x3ce2fc86,0x3cd10268,0x3cca9a49,0x3d0b4594,0x3d3ad3dc, +0x3d235fc4,0x3d0ddfe7,0x3ceb0ca8,0x3c5d371f,0x3c24cd5c,0x3c89de7c,0x3c906599,0x3c9f1f9b,0x3ce4f722,0x3d12efa2,0x3d069895,0x3ca210f0,0x3cc4abe2,0x3ce03e0c,0x3d000a66,0x3d162720,0x3d3c09a0,0x3d712c0d,0x3d924cae,0x3d9832a1,0x3da29d11,0x3d85cf31,0x3d856a0b,0x3d8382ef,0x3d84b0d3, +0x3d6551af,0x3d31b9aa,0x3ccdb5bf,0x3ca6643a,0x3c81bcdd,0x3cc410b1,0x3b7e0b67,0x3b8f4675,0x3c39cdbc,0x3c97a017,0x3cbbfeeb,0x3cc2e7b5,0x3cddd83a,0x3cfe168d,0x3ce91b70,0x3cd12f54,0x3cae5055,0x3c9fea01,0x3cb660dc,0x3ca60402,0x3c7ee481,0x3c42dd8f,0x3c354a85,0x3b1413c5,0xbc083291, +0xbc689452,0xbc54f77e,0xbc88e925,0xbc96e140,0xbc97a830,0xbc8f324a,0xbc874b11,0xbc11f095,0xba81a36b,0x3c0d7e30,0x3c62468f,0x3c977e89,0x3cae469f,0x3c84d5a8,0x3c155e69,0x3b056b1f,0x3a88a430,0x3cf23537,0x3cfedc36,0x3cff522a,0x3ce17767,0x3ce37842,0x3ccfe5cb,0x3cb8f161,0x3cb2472e, +0x3ca7a226,0x3cb32165,0x3cbda77a,0x3cbbfb4a,0x3cb6ffd4,0x3cbee57c,0x3cae548e,0x3c9e44e2,0x3c93e965,0x3c830b22,0x3c5ca4da,0x3c6c8047,0x3c8d362d,0x3c9ddc5f,0x3cb1e110,0x3cbe020c,0x3cc8f07a,0x3ccdb2f8,0x3ccc3fc5,0x3cc0d303,0x3cb32ad3,0x3c9cc2bf,0x3c8ebd05,0x3c90912c,0x3ca45e25, +0x3cc2d8fa,0x3cda9f2f,0x3cf00b50,0x3cddfdd8,0x3ce80b30,0x3cddf515,0x3cd07d98,0x3cbd40e5,0x3ccabfe4,0x3cbd1a7d,0x3cb55d9b,0x3cbd68f9,0x3cbb4f15,0x3cb98889,0x3cbba1ce,0x3cbb3deb,0x3cbb480b,0x3cb3e8f1,0x3cbd1ff9,0x3c9269c3,0x3ca0571b,0x3ca6a02c,0x3cb4862e,0x3cafebd5,0x3cb03d9c, +0x3cb07684,0x3cb211d2,0x3cb57de9,0x3cbc0e89,0x3cb6f594,0x3cb78315,0x3cbb61af,0x3cc5b74c,0x3ccd1c93,0x3ccc3f04,0x3cd02327,0x3cd07386,0x3cd2f94c,0x3cd5c4c6,0x3d04de72,0xbb849fc7,0xbbd39586,0xbb1d0273,0xbb5d93ee,0xbb5662ea,0xbba48f3c,0xba632867,0xba21d203,0xba1fd355,0xbaab6123, +0xbb2acb8a,0xbb99df58,0xbb8e664e,0xbb78e68d,0xbb0111a5,0xba8072a6,0xb912f00b,0x3a8eb835,0xba980d5e,0xbb0e0906,0xbb08ef6a,0xbb74a548,0xbb9a741b,0xbbae13d0,0xbba540e6,0xbba84434,0xbbd137e1,0xbb82fa06,0xbb5b8f27,0xbb8d39d6,0xbb76bbc8,0xbb924028,0xbbc3aeca,0xbbf03d12,0xbbffba69, +0xbbb687e2,0xbbf8083f,0xbc2e5b4e,0xbb0bb038,0xbb163bfc,0xbb025b7e,0xbc17ad15,0x3bb34012,0x3c0ca1dc,0x3b928eae,0x3b2ffc3d,0xbab17b15,0xbbc74fd8,0xbbd7ed1b,0xbb856f6b,0xb912089a,0x3bb2b364,0x3c0a733a,0x3bf769c9,0x3bcb6331,0x3b79ba35,0x3a6ed191,0xbb90ef24,0xbbeabf17,0xbbfe2ad4, +0xbbed8224,0xbbf57993,0xbc3c5138,0xbbcef035,0xbbc96792,0xbc2c21da,0xbc024304,0xbc1b68a9,0xbc60af44,0xbc822113,0xbc7bd02b,0xbc03327a,0xbc540535,0xbc904763,0x3b5856e2,0x39302f6c,0x3ad7b6c8,0xbc3448eb,0x3c6930d3,0x3c9e3008,0x3c48914d,0x3c30b654,0x3a9d2521,0xbc0e43d8,0xbc236835, +0xbb9ddad9,0x3be057cc,0x3c97782a,0x3cb4673d,0x3ca1e2f4,0x3c871219,0x3c42acc2,0x3c0e4149,0xbb8a72e5,0xbc136b5d,0xbc32322c,0xbc362152,0xbc481266,0xbca1a5c0,0xbbcad055,0xbb0126d6,0xbc36ae84,0xbbbc427a,0xbc2a713e,0xbcb5c1ab,0xbcd9bec6,0xbcf4336c,0xbc505804,0xbcb43f34,0xbc368992, +0x3c55cd62,0x3b99da4d,0xbb73779b,0xbcbd6f7d,0x3cbc1ec2,0x3d03330c,0x3cea796d,0x3ca2d52b,0x3b72830d,0xbb8b0faf,0xbb105682,0x3c1558a0,0x3cecde15,0x3ce4c806,0x3d0deeb6,0x3d1e8a0c,0x3d171469,0x3cdc9b14,0x3c9e84d4,0xbb650401,0xbc5929af,0xbc5bfcb3,0xbc5f4859,0xbc6bb926,0xbce7766c, +0xbc261bcb,0xbc272146,0xbcf5dc5d,0xbc9b776b,0xbcc16b91,0xbd1e23c2,0xbd253d6a,0xbd0bdb66,0xbbcf613c,0xbc90d304,0xbd8f69f9,0xbdadddab,0xbbc2ace6,0x3ceaef56,0xbb7d0449,0x3c296a60,0x3c6991e5,0x3ca66060,0xbc5b86fe,0xbc994361,0x3b63e46b,0xbbd08d94,0x3b7a1d55,0x3cc69749,0x3d1b3556, +0x3d1a3d30,0x3c813569,0x3ca09d2d,0x3c905c80,0x3c1f467a,0x3bd251bb,0x3b03ae08,0x3badb45c,0xbc25d72a,0xbcc68584,0xbd21bdae,0xbc4fe916,0x3bbc1c38,0x3cc1584a,0x3cefb64f,0x3c3b75b8,0xbcb2245a,0xbd52ce62,0xbda0f06e,0xbdc1cdc7,0xbda4efd5,0x3bfb39f2,0xbd5cac26,0xbd4b9ced,0xbcc8ec44, +0x3cde72d1,0xbc14af1a,0xbcfb96e8,0xbcf00047,0xbc9a60c8,0xbc620607,0xbc55e88b,0x3a8d4d36,0xb9c7f241,0xbae6b9dd,0xbc2aaf7d,0x3b196287,0x3d459a92,0x3ca256c7,0x3bb6614e,0xba0c8c15,0x3ba445b0,0x3b40e323,0x38be6382,0x3c66237f,0x39c98e16,0xbd15dbfe,0xbd50d6c6,0xbd3dc667,0xbc74a4be, +0x3c29f952,0x3c0db684,0xbd10eb36,0xbc975f98,0x391fe3e9,0x3ce6ddf2,0x3ca12e52,0xbe5d838e,0xbe07656d,0xbced80ba,0xbc21510e,0xbc96f593,0xbce419de,0xbc7cfad1,0x3bb8e434,0x3b535061,0x3b34147b,0xbb8cdc6d,0x39cafe5e,0xbc2d63a6,0x3b328324,0xbc104d2d,0xb7034fef,0x3d0be219,0x3ce5a51a, +0x3cd0f035,0x3c421f52,0x3c290dee,0x3c35bc88,0x3c02d6bb,0x3c339cfe,0x3a872570,0xba9a9c32,0xbd1995c7,0xbd28242b,0xbce18f74,0x3af0ad68,0x3c0f30d6,0xbd39569e,0xbd253d2d,0xbdc8eb67,0xbe21530c,0xbe61e48e,0x3e529487,0x3e3e8c13,0x3e1988a8,0x3e00792a,0x3de5d2e5,0x3da5fed0,0x3d4ae851, +0x3ca6cb70,0x3c98de85,0x3c23a496,0xbb062811,0x3a64c59f,0xb9818f53,0x3c32f8ee,0x3bfccc0e,0x3c47554a,0x3ce2d6a6,0x3c966395,0x3bf701eb,0xbc35c37d,0x39206fb7,0x3aaa87bf,0xbc0d9986,0x3c2ffbad,0xbb5c21e2,0xbca491fd,0xbda893e5,0xbdb5c874,0xbd6277f3,0xbc5bf037,0xbc5cff6b,0xbd91f209, +0xbd9ca86c,0xbcdbc868,0x3db981a9,0x3e29f1dd,0x3ca322fe,0x3c86addf,0x3cb88b4d,0x3d067568,0x3d4a2537,0x3d285176,0x3d34c96b,0x3d560a7e,0x3d30dcc3,0x3d138058,0x3cd9e0e7,0x3d1a840e,0x3ceeaaa5,0x3c30d2f4,0x3ba03659,0x3c1323e4,0x3cff39d6,0x3c7ae580,0x3bf3c962,0xbc140674,0xbc892aa9, +0xbcb0ded2,0xbd030926,0xbd31dd4c,0xbd88ea26,0xbdb28022,0xbde8aed7,0xbdd6e90a,0xbd877d12,0xbcf43d6c,0x3cd68d0b,0x3dabd9e8,0x3df63594,0x3e0011af,0x3de29c4d,0x3d485156,0x3d160fab,0x3d2ba256,0x3d51df7c,0x3d4ea442,0x3d2b4fdf,0x3d00d970,0x3cbb2ef4,0x3caac52c,0x3c5b3e05,0x3c2709a3, +0x3bb9a9e7,0x3c478059,0x3cb9c433,0x3cf4ec31,0x3d04bf7a,0x3cecd4bf,0x3cffc9e1,0x3c8d3fa1,0x3c8907a4,0x3c40c01d,0x3bb2bc97,0xba104612,0xbc2ce532,0x3aa7d04d,0x3c2f3192,0x3c35bca5,0x3d480bb7,0x3d995d65,0x3dc2ec54,0x3dc6480d,0x3db00576,0x3d866568,0x3cf5d1cb,0x3c450e52,0x3c6a616b, +0x3cdc37d3,0x3c4c70d8,0x3c916131,0x3ca9793d,0x3ce42d0a,0x3d115739,0x3d137731,0x3d17513d,0x3d1bcf21,0x3d19be69,0x3d185cf1,0x3d0e3260,0x3d013a42,0x3cb6c53c,0x3c921ff4,0x3cbacc80,0x3d0320a4,0x3d242002,0x3d1b32da,0x3d06ed6b,0x3d07498b,0x3d1b36c7,0x3d26f9fb,0x3d2e9cf4,0x3d1e4293, +0x3d10673a,0x3cf49e76,0x3cf29656,0x3cdbd864,0x3ce2462f,0x3c86f783,0x3c088b7a,0x3b27a08c,0x3bd943f9,0x3bf635b6,0x3b063458,0x3bd5385d,0x3ca3e4d8,0x3c8d5938,0x3c9917cb,0x3c7b5d98,0x3c76a365,0x3c70e491,0x3c5d40bb,0x3c464f52,0x3c402f73,0x3c47eeb6,0x3c502179,0x3c667263,0x3c84f9bb, +0x3c8e4b97,0x3c9a8537,0x3ca3ce75,0x3c98d7e9,0x3caac06c,0x3ca8c514,0x3d011b29,0x3ce61225,0x3cb9d0f4,0x3ca789d6,0x3c8f066d,0x3c817769,0x3c6a3722,0x3c9364f2,0x3cac59a7,0x3cc74311,0x3cdd59d4,0x3cf2ff4c,0x3cf336b6,0x3cda2b51,0x3cc72404,0x3cc10947,0x3cb7b50d,0x3c821461,0x3c69e049, +0x3ca244b3,0x3cb4ff95,0x3cd3bd08,0x3c957522,0x3cb90296,0x3cd38222,0x3cd4d436,0x3cd4b0ea,0x3cd58844,0x3cd3032b,0x3cd2832c,0x3cd33106,0x3cbb7967,0x3cac2a54,0x3cdb73eb,0x3cd373a0,0x3cca9b69,0x3cd12a74,0x3cb7026c,0x3cb1d9c7,0x3ca36106,0x3c98b16f,0x3c8c071d,0x3c6cd474,0x3c7d6afd, +0x3c8000c8,0x3c805b9f,0x3c86a367,0x3c8d64e1,0x3c9e16cc,0x3c98cbc0,0x3c95ec1f,0x3c904e59,0x3c86d31e,0x3c964f13,0x3be15bcb,0x3bb17c71,0x3bb9b646,0x3bb14504,0x3b9494b2,0xb9b4e5d2,0x3c01871d,0x3bf10123,0x3b66e162,0x3b9a17f1,0x3b672f39,0x39aa7b4a,0x3a5806ad,0x3a9ec096,0x3afb12e9, +0x3bd56205,0x3c0f66af,0x3bc0ecdb,0x3bc9c9f3,0x3bbba0ef,0x3ba23a17,0x3bb8bd89,0x3bb0da34,0x3b830afb,0x3bacc068,0x3bc23bcf,0x3bbc2b29,0x3c0dae77,0x3c0936e1,0x3bab0b3e,0x3b742cab,0x3b5cee29,0x3bd288c7,0x3b919b0f,0x3b98d8ec,0x3bc631bd,0x3bb93b8d,0x3be6269b,0x3c0e893a,0x3c124ea6, +0x3c2325a2,0xba38bbad,0x3c3bb218,0x3c69a82d,0x3c0bbafb,0x3c4221a0,0x3c0bf700,0xb8e6c38d,0x3a8d34f1,0x3b2981ee,0x3b98274c,0x3c4bfcfb,0x3c7b2fae,0x3c750412,0x3c26f4ce,0x3bc8d19c,0x3b3df716,0x3b88987e,0x3b6f2706,0x3a03c56d,0x3b510b97,0x3bb19f75,0x3bb52fec,0x3c6daef7,0x3c5b4890, +0x3bb14e7d,0x3adca701,0x3b0683fa,0x3c4f6789,0x3c05fd99,0x3c0d631f,0x3c1f4478,0x3bddbadb,0x3b5d490d,0x3ad8d651,0x3bdb20fa,0x3c039346,0xbc421661,0x3c9cd990,0x3cb27d58,0x3c07de7c,0x3c84a9a2,0x3c18c47c,0xbc1a5862,0xbbbd1541,0xbb3f0487,0x3aebf3b5,0x3ca629b1,0x3cd16b5a,0x3cc15f6d, +0x3c6c7210,0x3c19a4cc,0x3a406442,0x3b38f815,0x3aa3c69c,0xbbcec5b8,0x3893bf6d,0x3b896d2d,0x3b3c8bf9,0x3cb26a49,0x3ca03abd,0x3a8c400a,0xbbf61eb0,0xbc3073b2,0x3c229a19,0x3a5518f0,0x3b43a4eb,0x3bcc2e00,0x3b8d5784,0x3be078cf,0x3c6b9c12,0x3ce62def,0x3c9f872d,0xbc96cb27,0x3cbccd1d, +0x3d132fad,0x3cb47766,0x3cf09a8a,0x3c2b7ac0,0xbc54ad47,0xbc2efb32,0x3b163eb5,0x3c7a1d80,0x3d172ac5,0x3d2a36dc,0x3d065c6f,0x3cc49f2a,0x3c5dac05,0xbb26c8e7,0xbaea033e,0xbb2a64a9,0xbc689ed5,0xbb782039,0x3b15273b,0x3a8e3d01,0x3d01c386,0x3ccd23f3,0xbb08d217,0xbc309b75,0xbbc760d3, +0x3cf0b905,0x3ca76645,0x3caf02ae,0x3c953035,0x3be51abe,0xbcafda78,0xbd6678ae,0xbd9f5200,0xbd28afa2,0x3c9dbf64,0x3cbfb8bf,0x3c910a33,0x397e4f5b,0xbc6642cc,0xbca8493d,0xbc1c7247,0xbc03a7fa,0x3b118ea0,0x3c531b58,0x3d0341ae,0x3d16c9c1,0x3cc9d264,0x3cc8f71c,0x3cad4f03,0x3cb70a5c, +0x3b2fcc08,0xbbe0e2cb,0xbc24d52b,0xbc5a7420,0xbc2ef406,0xba44ecab,0x3c6d64dd,0x3cccac22,0x3d377194,0xbc5c64a8,0xbd34237d,0xbd079a2f,0xbd739518,0xbd532615,0xbcbdae5b,0xbc5e59b5,0xbca9a2e4,0xbbaf1c7d,0x3c3bfd14,0x3b803bf5,0xbcdbc01c,0xbd0b2274,0xbd01a699,0xbc9ae15c,0xbc8ad740, +0xbc5c4fbd,0xbc87923d,0x3b380c57,0x3b83038c,0xbaa9bf8e,0xbb959df2,0xb987b11e,0x3c855c13,0x3cd8288d,0x3cddf686,0x3c0e37de,0xbbd315ce,0xbc800075,0xbcbf24bd,0xbce1bb74,0xbd0d4622,0xbd15c0af,0xbcddfb9c,0xbc817d16,0x3c83446b,0x3c5227d2,0x3ca67fdc,0x3c9e66b7,0x3d085bf9,0x3cbae156, +0xbaddccaa,0xbcdb004e,0xbda9f560,0xbe093198,0xbde58c72,0xbd9a385d,0xbd4097d9,0xbcb28c6e,0xbbee77d8,0xbc0fc41c,0xbb65fd0b,0x3b772b3e,0xbbbd7ce4,0xba8c502a,0xbb456bfe,0xbbac6fa3,0x3ae871cb,0xbc093c89,0xbc86ea04,0x3c8d24da,0x3cc08cfa,0xbaf16f8e,0xbc369076,0xbca58472,0xbcc0b120, +0xbce3283d,0xbd1e8c38,0xbd694dde,0xbd25638f,0xbcf74416,0xbc4808a9,0xbd080775,0xbd5ac4b7,0xbd874490,0xbd8e2616,0xbd229a32,0xbc1f2971,0xbd4bab57,0x3d3e2702,0x3ddf6e27,0x3e1cf025,0x3e03dbe2,0x3dd52e0e,0x3d7c2229,0x3d010bb1,0x3b404320,0x3c2003c3,0x3ae4782a,0xbb6e3a87,0x3ad0ba50, +0xb77fe252,0xbc096741,0xbb630c1b,0x3a7a34d8,0xbbc2a077,0x3ceafbca,0x3cf96fa0,0xbc1463b7,0x3aac2e80,0xbb61452d,0xbbb322e5,0xbccbdc94,0xbd1c5b13,0xbd8276a3,0xbd28af32,0xbd1da82a,0xbd3dd32b,0xbd65cca6,0xbd620d42,0xbd406ec9,0xbdb78938,0xbdd290a3,0xbd9e4ab7,0xbca42366,0x3e0b0d14, +0x3dcc3658,0x3d99d1a0,0x3d8ae7a3,0x3d69d6ec,0x3d544eee,0x3d3fde3a,0x3d2789da,0x3d133490,0x3ccee026,0x3c10cedc,0x3b9c292b,0x3c13fb89,0x3cdce4fa,0x3c18caba,0x3b5087ca,0x3a60ad62,0x3ac81a7a,0xbbdda6c5,0xbd07b9a9,0xbd4430e4,0xbd7319b1,0xbd722896,0xbd6e53e6,0xbd479efe,0xbd5d31b3, +0xbca9ea83,0xbce69617,0xbd94b0ce,0xbd9df45b,0xbda0cb3a,0xbd83bcc1,0x3c950a74,0x3db31aa3,0x3e09a322,0x3e138a21,0x3d025b26,0x3cfaf4fa,0x3cfb267c,0x3cfe492b,0x3ccb1c74,0x3cd2ed3c,0x3ce3b160,0x3ce69b23,0x3d05fd1c,0x3d08a737,0x3cffb1d3,0x3cc23925,0x3c929999,0x3c7932ef,0x3cb5eba0, +0x3ce189ba,0x3cde9276,0x3ca18a4b,0x3bdf7dd2,0xbc03e34b,0xbc84c9a4,0xbcbabdae,0xbcd6de4a,0xbd2aa7fd,0xbd3a45db,0xbd12a77b,0xbcae8f14,0xbb8d1f00,0x3c5cf7b5,0x3d4b7278,0x3d9a8bf0,0x3dab895d,0x3db11fe6,0x3d934af6,0x3d48337f,0x3d19c221,0x3d1806cf,0x3d21bf96,0x3d191825,0x3d1e21c9, +0x3d2c3172,0x3d15a320,0x3cf4e06c,0x3cc77f55,0x3cda1fd8,0x3cdf0a7d,0x3d002e02,0x3cf8ba6c,0x3d023113,0x3ce96df6,0x3cef531a,0x3cd8a1f2,0x3cd6c594,0x3cef3de5,0x3d09325c,0x3d1dd444,0x3d29cb50,0x3d31efaf,0x3d3f8cfa,0x3d572e77,0x3d6e2eb2,0x3d8158bd,0x3d8482a0,0x3d88f21e,0x3d8bf277, +0x3d5954bf,0x3d266bf0,0x3d0898ca,0x3cf5dc82,0x3cefe2d4,0x3cdd0210,0x3d0985bc,0x3c650476,0x3c679b0f,0x3c3f2315,0x3c689bba,0x3c5333b8,0x3c4739fa,0x3c64f935,0x3c64481c,0x3c83d40d,0x3c885af2,0x3c8f0065,0x3c962ec5,0x3ca4ff76,0x3cb51351,0x3cd9755f,0x3cff38b7,0x3d14522d,0x3d25ce9c, +0x3d372039,0x3d3a3323,0x3d2e4d0b,0x3d2b3e29,0x3d212a6e,0x3d19c2d9,0x3d0eb3ad,0x3d044e75,0x3cec6953,0x3cd085ee,0x3cc5d9a0,0x3cbc2e48,0x3cb82e5c,0x3c9d016e,0x3c966970,0x3c88c368,0x3c7c2b64,0x3c69cf59,0x3c54fd0e,0x3c5524dc,0x3c12d077,0x3bef2f76,0x3bbc2edd,0x3c333854,0x3c094ab2, +0x3be72042,0x3beba4ad,0x3bf7e613,0x3c00a246,0x3c093474,0x3c09a1f4,0x3c02bfec,0x3c462575,0x3c79fc63,0x3c587e3f,0x3c7f8897,0x3c93a8f1,0x3caa070e,0x3ca7e625,0x3ca874fd,0x3caa3248,0x3caa0f4b,0x3cabf9ad,0x3cb1d045,0x3ca51fc3,0x3c98b051,0x3c8638c6,0x3c757bc5,0x3c5d6edd,0x3c486a79, +0x3c576a6e,0x3c5f436d,0x3c6596e2,0x3c6026c8,0x3c586404,0x3b869b97,0x3b397a71,0x38fc67f7,0x3b4fd6e0,0x3b840728,0x3b199e14,0x3baa07b6,0x3bb6de9e,0x3b91fee0,0x3bc6fc48,0x3bb9a339,0x3b85f4fc,0x3b71e05d,0x3b6f9134,0x3b664f18,0x3b9f3d56,0x3bbf075d,0x3c1afc43,0x3bdbb26b,0x3bb9e0dc, +0x3b9349b3,0x3b860d4c,0x3b74c724,0x3b534577,0x3b3bbe81,0x3b6029a6,0x3bcfbbca,0x3b96e6e6,0x3b4b3f9c,0xbaed38a2,0x3a2ffe5f,0x3abc63d0,0x3b5f4695,0x3b661348,0x3b86ed95,0x3baa9c67,0x3b6928ee,0x3ab40a8c,0xba9e948c,0x3c0c384d,0x3bf0f50e,0x3aad6994,0x3be21cc7,0x3bff8a7e,0x3ba9244d, +0x3c026d7b,0x3be6ed34,0x3b559911,0x3a9740c1,0x3a9d10db,0x3b2f9996,0x3c00d737,0x3c309a1e,0x3c7b9d4c,0x3c357ee5,0x3bf12602,0x3bb120b6,0x3ba0d742,0x3b502684,0x3b28a935,0x3a58f6a1,0x3b3d0e43,0x3c27dc50,0x3ba5c75d,0xba2494cd,0xbc38290f,0xbbca5c54,0xbb117e81,0x3b9ec613,0x3bafcc5e, +0x3bc7c48f,0x3be316ca,0x3b637e92,0xba9aadaf,0xbc2048a9,0x3af0cd94,0x3b71e164,0xbbebe001,0x3c5f5ad5,0x3c5e072c,0x3b336499,0x3c36d87a,0x3c1ac555,0xb9f2d3a8,0xbac9bf74,0xbb28f7a2,0x3a27ae39,0x3c30d3af,0x3c9b10f6,0x3ce59a2b,0x3c9b16c0,0x3c33f87b,0x3bb6b8ff,0x3bd82f73,0x3b408b38, +0x3a9ac3f8,0xbb01c43d,0x3b026bc1,0x3c89fe24,0x3c0505f7,0xba14676b,0xbcd4543d,0xbc720e43,0xbc21b249,0x3b0858cc,0x3bdd7f61,0x3c0631d4,0x3c425b71,0x3b8827e2,0xbb2170b4,0xbbf82f22,0x3cbd85ef,0x3c98030f,0xbc5c3e1e,0x3c3e83ec,0x3cc5b7f2,0x3c3d83f3,0x3cce8dfc,0x3c769e82,0xbc1ec5b1, +0xbc4348b5,0xbb7e0574,0x3bc8e515,0x3cd45ae3,0x3d054c13,0x3d1b124a,0x3cbae42d,0x3c295f57,0x3b70d55e,0x3ba19617,0xba3a4752,0xbb188e0f,0xbbcc9b42,0x3ae8277d,0x3cc4542e,0x3bf19f16,0xbc860677,0xbd431f1d,0xbcdea310,0xbc167e3e,0x3c36ca98,0x3c6a342d,0x3c90796e,0x3c80993a,0x3bf1532c, +0xbb8f7431,0xbcb8f8be,0xbdad5b69,0xbd6f3ff9,0x3d2d88e1,0x3caa627c,0x3c26aad3,0x3af9ac91,0xbc38fdcc,0xbc8b6e1c,0xbc4b47a9,0xba868a4d,0x3bb4634d,0x3b3a2122,0x3c7103df,0x3cd809ac,0x3d3ea30c,0x3cd033e5,0x3c86831b,0x3c8046e3,0x3c8a0c50,0x3c67b0c5,0x3c08a06f,0xbbe02b10,0xbbb89f9b, +0x3c735b9c,0x3ca6ce7a,0x3cc12018,0x3d05a638,0xbd4a6af0,0xbd8bafb7,0xbcf0b889,0xbcde2198,0xbca4cadd,0xbca10c0b,0x3ac902e3,0xbc879fb0,0xbbee1ae8,0x3d08d8e7,0x3c9356db,0xbd285b9f,0xbd4db3ed,0xbd30e473,0xbcb5da05,0xbc93314f,0xbc24110a,0xbc4eee82,0xbb0ffed6,0x3a6bbc54,0xbb30430a, +0xba1be491,0xbbbb977c,0xbc77390c,0x3c4ed1ca,0x3c8fd53e,0x3b3b69c4,0xbb366f96,0xbc669c09,0xbc9c5bce,0xbc56bb33,0xbc2a332c,0xbc7c3717,0xbaeb832c,0xbb58d0f5,0xbbc57abd,0xbbdaaab4,0xbc33dbac,0xbcee9472,0xb9e0522b,0xbb7027e8,0xbd10545b,0xbcbde19c,0x3d27ed6c,0xbcae5cc0,0xbd636637, +0xbd4de776,0xbd19d125,0xbc8b9e00,0x3a86d51e,0xbc07172e,0xbbf7cd8c,0x3adf5bb5,0x3b05c92c,0x3a9ae42c,0x3aeca114,0x3b09ac0a,0x3c3c55c2,0xbb124fbd,0xbcb1d89a,0x3c637d92,0x3c8510e2,0xbbfc036d,0xbc6a1442,0xbcce5628,0xbcef41fd,0xbd1d98b2,0xbd0d5c9e,0xbcc0d53a,0xbc28e3ea,0xbc805f8a, +0xbd2fb873,0xbd3c4679,0xbd420e1d,0xbd852011,0xbc9f3f11,0x3a95683c,0x3bce94a4,0x3d4f1b6e,0xbe1cf920,0xbd485588,0x3cd9c25e,0x3d188107,0x3d11610e,0xbb401330,0xbc99b250,0xbcc1e7b5,0xbc05ca76,0xbc25ac89,0xbc5d9f49,0xbb8e31ba,0xbb50891e,0xbc6cf3cd,0xbc3d7b85,0xbc3f3188,0xbc8e34e1, +0x3c34893e,0x3c5d6ff5,0x3a5a1073,0xbc64eebd,0xbcc8b39a,0xbc954431,0xbc9662bf,0xbc82f4ed,0xbc952ddc,0xbc90cc51,0xbc909ff7,0xbc8996c0,0xbc7de9d5,0xbcb27d18,0xbd5d99c9,0xbcbdc77b,0xbd6665bc,0xbe13d073,0xbe2a8d80,0x3e0f3b9f,0x3e2075f5,0x3e035ec9,0x3dd6cc36,0x3da5862d,0x3dac796e, +0x3d9be87e,0x3d507017,0x3d05143e,0x3c8d72ee,0x3b8786fb,0x3a6ab117,0x3b7b2d59,0x3c368359,0x3c0ae627,0x3b7c840f,0xbc36bb4b,0xbbcf80a4,0xbc4bb724,0xbc91e0ad,0xbc7d86e7,0xbc989a7f,0xbc986f04,0xbc7f1b7c,0xbc1d41dc,0x39a74fc6,0xbc99dc00,0xbce28047,0xbcbd186e,0xbd27a379,0xbd79878a, +0xbdbe9789,0xbdad3508,0xbd15ae50,0x3d2c5c31,0x3dcd902a,0x3d8e7c69,0x3d535550,0x3d464387,0x3d49adac,0x3d2925ad,0x3d3603ed,0x3d3080fb,0x3d108e85,0x3d27075f,0x3d264ec0,0x3d1c25da,0x3d199891,0x3ce4e654,0x3c2043af,0xba8a3c76,0xbb42779d,0x3b30e334,0x3c55688b,0x3c317e5d,0xbb866235, +0xbc7de083,0xbcd7cb87,0xbd129654,0xbd4652fc,0xbd7b5aa1,0xbd962b79,0xbdb1bffc,0xbda7eb87,0xbd5d5d5e,0xbd0e14aa,0x3b8e1ab2,0x3d63baa5,0x3dd215af,0x3df2eb14,0x3dda54a8,0x3db113e5,0x3d7eb65c,0x3d53ae01,0x3d32919c,0x3d20636e,0x3d08ee75,0x3ce77df9,0x3cb7b1b2,0x3c8710ad,0x3c879b79, +0x3c9516df,0x3c94d5e7,0x3ca51b87,0x3cac6b32,0x3cc7e15b,0x3cd5bf7c,0x3cd79567,0x3cd22c7f,0x3cc2b231,0x3ce5b76f,0x3cc2f45f,0x3ca65d7d,0x3cad9bbb,0x3c9e97d0,0x3ce3da23,0x3d118e81,0x3d2f8723,0x3d67de03,0x3d8b83bc,0x3da04c9f,0x3da8b213,0x3db25270,0x3dbd4ccb,0x3da2e3f5,0x3d96c520, +0x3d943840,0x3d8a5ca3,0x3d3dc28f,0x3d391ce9,0x3d035794,0x3d2c20b8,0x3d17d96a,0x3d1938a7,0x3d24b92c,0x3d1f5728,0x3d285e2d,0x3d1c8ecc,0x3d14bb58,0x3d137ce7,0x3d0dbab0,0x3d05c68d,0x3cf25819,0x3ce08606,0x3ce21647,0x3cd22091,0x3cbe907f,0x3c9767de,0x3cbf9529,0x3ce95bab,0x3d03d880, +0x3d16522c,0x3d25b99b,0x3d36189f,0x3d366e51,0x3d38bc7b,0x3d3dfb01,0x3d4a771d,0x3d56aa6c,0x3d6cacf0,0x3d672f29,0x3d606c91,0x3d537fa7,0x3d441046,0x3d35d36d,0x3d3b52d3,0x3d1e12a6,0x3d0e9c12,0x3ce74120,0x3d27a73d,0x3d0f8270,0x3ce9e393,0x3ce43866,0x3ce707f7,0x3cea0c6a,0x3ce7fd36, +0x3ce94a50,0x3ceb89e2,0x3d066fa2,0x3d11264b,0x3cdf891c,0x3cfa5cc1,0x3d02afd1,0x3d0a2181,0x3d16cc4d,0x3d1daec3,0x3d27df3c,0x3d2e8c5b,0x3d35c000,0x3d3f910e,0x3d3f33ca,0x3d41de39,0x3d43d547,0x3d44e2ea,0x3d4490eb,0x3d457e7d,0x3d3f524c,0x3d3cc90d,0x3d3ad8a3,0x3d3af8e4,0x3d428c64, +0x3bc9f4c9,0x3b528105,0x3b13c070,0x3b6a83a4,0x3b93b5f1,0x3ba74b7f,0x3bbfce3b,0x3b967c46,0x3b799f08,0x3b8a0afd,0x3b96f36e,0x3bc20ecf,0x3b7b9c79,0x3b676201,0x3b6244cc,0x3baaf3fe,0x3bd7aa3e,0x3bf8c0f1,0x3c003705,0x3c046e9b,0x3bfb8005,0x3bf09afd,0x3be4b7d0,0x3bd293b6,0x3bbd22e8, +0x3bba557a,0x3c02646a,0x3b737ae0,0x3b202b0d,0x3b0338dd,0x3b548396,0x3b8ea70d,0x3bb49915,0x3be360a3,0x3bdc34ca,0x3b82f9bc,0x3b83f164,0x3a3883e3,0xb710387f,0x3b2076b3,0x3be84f85,0x3c29773e,0x3baf27fe,0x3b884e36,0x3bc3bc1d,0x3bde0a79,0x3bf3b3c5,0x3c1863bf,0x3ba001b0,0x3b812b4f, +0x3b93bab2,0x3bf87ca8,0x3c2a0c6d,0x3c65bd6a,0x3c6b1d11,0x3c583edd,0x3c3c2d6a,0x3c404e4b,0x3c2514e4,0x3c05369d,0x3bc9fc37,0x3bace16f,0x3c21b864,0xbb0634a8,0xbbbb9741,0xbb8bf7fc,0xbb10f983,0x3aec4ef2,0x3b96e92c,0x3c13d84d,0x3c057e17,0x39f4147f,0x3a9ff9eb,0xbbfc5db9,0xbc5004ce, +0xbb415fdc,0x3bb4a069,0x3c4c66d8,0x3becdfa2,0x3b910882,0x3bb0b5e4,0x3bc57c57,0x3c1276d6,0x3c4766f1,0x3bab85b0,0x3a964785,0x3b63f985,0x3c1a0b8e,0x3c8432f1,0x3cc3833c,0x3cc365ca,0x3cb1c142,0x3c7fee69,0x3c8770f1,0x3c5b9195,0x3c204280,0x3bd20360,0x3bbde410,0x3c8c85ed,0xbbeca8af, +0xbc64799d,0xbc6b461b,0xbc063846,0x39038eaa,0x3ba4873f,0x3c7987f4,0x3c59ab9a,0xbb973db0,0xbba09b5a,0xbc5678b4,0xbc704549,0x3af1dc28,0x3c4e44be,0x3c748b52,0x3b80fe45,0x3bcc17ce,0x3bc6c72f,0x3c630e8c,0x3c5aa9d0,0x3b937be4,0xbbc4d21e,0xbb56d74b,0x3bb180e2,0x3c95c74b,0x3cd9cb8d, +0x3d16c5ef,0x3cf26c8d,0x3cda5b14,0x3ca5237b,0x3cbf5a06,0x3c91ec92,0x3c30639e,0x3bb264be,0x3baf2ec1,0x3c9763d2,0xbc97b8b9,0xbd10a61f,0xbcf5492f,0xbc948531,0xba03f519,0x3b354258,0x3c847eac,0x3c42fa85,0xbc741c21,0xbc4506df,0xbc4f6e1b,0xbc7165d2,0xbd4c9759,0xbd2962aa,0x3cd0372e, +0x3ccdea68,0x3cae3755,0x3b959ddc,0x3aae3eee,0xbb4e57df,0xbc0bc205,0x3b9303f1,0x3ba158fb,0xbb03451b,0x3c2f32d9,0x3cb310ca,0x3d1851e2,0x3d07d74e,0x3cdfec38,0x3c40bd8e,0x3c57a54d,0x3c2a3a46,0x3bd1acdb,0x3be0a7b3,0x3c060bb8,0x3c89ff4e,0x3b7b4c2f,0x3c121729,0x3d0cb448,0xbcd00cfc, +0xbcf0742c,0x3c116446,0x3cc42f35,0x3cf0b058,0x3c311cce,0x3a5cd73f,0x3cade501,0x3ce03e1d,0x3c747abf,0x3bd0799c,0xbca713ff,0xbcefec0c,0xbcd818ba,0xbc82e596,0xbc505fa8,0xbbc70041,0xbb8ed273,0xbb856380,0x3a897ffe,0x3bbb8541,0x3c30cc23,0x3b9aa6be,0xbaa4d2db,0x3c064aee,0x3c5228d5, +0x3cb6ba4d,0x3c61bde1,0x3b960b6c,0xba8a2080,0xbc15a311,0xbc0bb009,0xbb845155,0xbc99f0ac,0xbccaec31,0xbca1ee36,0xbcc1d86b,0xbcc0387d,0xbca37a4c,0xbd27a322,0xbd60be91,0xbd84974b,0xbc36d88f,0x3c83569a,0x3cdf50b3,0x3b5c92ee,0xbc603cff,0xbd09e84b,0xbc9e3d12,0xbc252637,0xbcb8c432, +0xbc7f3fa0,0xbb8e0b1d,0x3af5bd69,0xb9f72199,0x3a55358c,0x3b47bb83,0x3b799d94,0x39eb6dff,0xb9a35a34,0x3bfa4b7e,0x3bf78014,0x3c846cb3,0x3ad86a11,0xbb2b17ae,0x3c02bd26,0x3b9d137c,0x3b23b498,0xbb37b12d,0xbbebc572,0xbc41b87c,0xbc8e6e3b,0xbcfeb3bf,0xbcedbd88,0xbb6dd164,0x3ca29090, +0x3cf444f8,0x3cddf55d,0x3c4dc250,0xbe176c6d,0xbe042875,0xbdbae0e0,0xbd83e56d,0xbd4358b9,0xbd35db64,0xbd13b62a,0xbd10045b,0xbcb60f68,0xbc82d898,0xbc043d20,0xb8f95e44,0x3b457284,0xbaf5a974,0xba3f64cf,0xbb7e980e,0xbbcf61f2,0xbbfa0ba4,0xb990a84f,0x3cd818c7,0x3c225ef4,0x3a1f8e7e, +0xbc1bd41a,0xbc60f8a7,0xbc6a1355,0xbc4af0cd,0xbc22fcbe,0xbc1794ad,0xbb875edb,0xbca29c21,0xbcede66c,0xbc64feed,0xbd4f2645,0xbd83f8db,0xbd73a705,0xbdfe102f,0x3d5017c3,0x3dbd968f,0x3deb9e5f,0x3dd9ebdc,0x3db5fcad,0x3dc29b2c,0x3d931179,0x3ce26e90,0x3ca5cb48,0x3c13042d,0x3c27799a, +0x3a21fb11,0xbb85967d,0xbbef92ee,0x3a23b21d,0x3ade1e50,0xbbe109ef,0x3c08cf8d,0x3c061fc5,0x3bf71c98,0xbbb820d6,0xbc1f2443,0xbb3ca901,0xbc1c63d7,0xbcae8453,0xbd0ea997,0xbd00a11e,0xbd104d1f,0xbd2b8ef3,0xbd1f53d7,0xbd21560d,0xbd1916ab,0xbd944550,0xbda96e99,0xbd7b9020,0x3af9526c, +0x3d9bff73,0x3d9707ab,0x3d926afc,0x3d865f36,0x3d636611,0x3d48c242,0x3d48eff3,0x3d59fc48,0x3d49c73e,0x3d373b93,0x3d2e5dc7,0x3d06e386,0x3cdd4911,0x3cd14df4,0x3c580939,0x3bc80961,0xbb4bfb2e,0xbba89bf8,0xbc1fb72b,0xbc84c38d,0xbcec3c19,0xbd1413d8,0xbd22b2aa,0xbd3f7ced,0xbd3a4e60, +0xbd094def,0xbd2c0c6c,0xbd408c22,0xbd5dd0e1,0xbd7cb618,0xbd87a67a,0xbd7fa452,0xbc90467a,0x3ccb7c29,0x3d675d25,0x3d8cfd63,0x3d9c7a6f,0x3d899244,0x3d797290,0x3d6684d4,0x3d49d441,0x3d422a93,0x3d397a72,0x3d27cf1c,0x3d110eed,0x3d0aa7b3,0x3ce10192,0x3ceccd61,0x3cde0b1c,0x3ce31edf, +0x3cc67527,0x3ca452a9,0x3c844039,0x3c12bd8f,0x3b1a3877,0xbba87144,0xbbc93401,0xbbf3a3e9,0xbc182788,0xbbcbc2a4,0xbbc6a61b,0xbbc847f3,0xbb4a1a17,0x3a8a7a87,0x3b5694d0,0x3d048f3c,0x3d7c5196,0x3db3ff1e,0x3db89031,0x3dba7529,0x3dc9c259,0x3dae5bd3,0x3d84290c,0x3d897686,0x3d83dcd9, +0x3d828644,0x3d7ae126,0x3d74ab3f,0x3d6e5485,0x3d680514,0x3d62ad88,0x3d59a008,0x3d4e273c,0x3d45c9ab,0x3d384a69,0x3d28ed57,0x3d1d870f,0x3d129911,0x3d0be3f6,0x3d02c4e2,0x3cf9c339,0x3cd8454a,0x3cf7dc33,0x3d0a0fc5,0x3d1614b2,0x3d21597f,0x3d2f08f2,0x3d3bfec6,0x3d49df54,0x3d56b941, +0x3d5b235a,0x3d5f86b1,0x3d564e91,0x3d5f9361,0x3d6178b8,0x3d6d4058,0x3d74e428,0x3d7f04ee,0x3d676a52,0x3d6d4a9a,0x3d65fe6d,0x3d608088,0x3d571df9,0x3d5f2c6c,0x3d5692d8,0x3d4b6a62,0x3d47052e,0x3d4241b5,0x3d3fa61e,0x3d3a789f,0x3d37b8e7,0x3d35a392,0x3d3aed9b,0x3d3ab1ff,0x3d2e1e54, +0x3d301a19,0x3d2f8ab9,0x3d27e044,0x3d3008ab,0x3d3480bc,0x3d3a6cc6,0x3d3f4d9e,0x3d43d5c1,0x3d48b2da,0x3d4c2a22,0x3d510a9c,0x3d58c31c,0x3d5b4b36,0x3d609c42,0x3d6303c2,0x3d63d893,0x3d634ea8,0x3d61daad,0x3d655b06,0x3d702300,0x3c129a73,0x3bd326df,0x3bc6ecb9,0x3be2e62d,0x3c03a5e9, +0x3c433598,0x3c07e649,0x3bdeeed2,0x3c00b143,0x3bd95179,0x3bebb059,0x3c24d097,0x3bf0b7c2,0x3bd91faa,0x3bbff7a6,0x3bf95dba,0x3c0c9b99,0x3c1147a1,0x3c24e0fe,0x3c2cb0f5,0x3c2d4d76,0x3c1ef8ab,0x3c16ba1f,0x3c0dca3d,0x3c0acc7a,0x3bfe6cba,0x3be86821,0x3b95eb55,0x3b76f251,0x3b4ad97a, +0x3be0b62b,0x3c053fcd,0x3be69aa2,0x3c1b555b,0x3c1b41de,0x3be4bd5d,0x3beaeea7,0x3bdf9932,0x3bcc5c6d,0x3bee772d,0x3c49a0d9,0x3cb4d2e8,0x3c062b0a,0x3baa64d1,0x3c2e092e,0x3c03fa4e,0x3c18e2f2,0x3c749b79,0x3c0ec767,0x3be9aecd,0x3bccc926,0x3c130c3f,0x3c387a21,0x3c58a835,0x3c86a317, +0x3c821f01,0x3c6e8b04,0x3c5f3b35,0x3c464d11,0x3c2e2257,0x3c263cc2,0x3bf0fb7e,0x3b91cdcb,0xbb610059,0xbbaaead4,0xbb9d9d29,0x3ba44bfb,0x3c12d7b9,0x3ba0028b,0x3c2ee067,0x3c1c0d06,0x3b67c135,0x3bc73162,0x3b0e045b,0xba92624e,0x3b91c1aa,0x3c52717b,0x3d0e4580,0x3c014fd4,0x3b828b53, +0x3c6e5de0,0x3be03016,0x3c1a0f9f,0x3cb61af0,0x3c1d4b5e,0x3b9a00f4,0x3bad0e36,0x3c263f14,0x3c7a874f,0x3ca124cd,0x3ccfe144,0x3ccf14a2,0x3cac219f,0x3c979b1e,0x3c73e41b,0x3c47aa21,0x3c2f178f,0x3bcd0df4,0x3b16af98,0xbc5c70ca,0xbc9146aa,0xbc9a0c4d,0x3b3c74a0,0x3c3fad65,0x3adf09fb, +0x3c83fea1,0x3c717507,0x3b0cf5b2,0x3b90502e,0x3bf4db24,0x3b7e119a,0x3c2d7340,0x3cb7282f,0x3d4ea8c5,0x3bdd797b,0xbb4485b9,0x3c5de50b,0x3c0eca77,0x3c57b7b8,0x3cc091d2,0x3b6ca029,0xbb059523,0x3bb161e1,0x3c6c9cfb,0x3cbd6536,0x3cfbc385,0x3d0d2135,0x3d0677fc,0x3cd6f187,0x3ccb6d52, +0x3c9e7503,0x3c85afa6,0x3c5b79ea,0x3ba52bcc,0xbb9858a7,0xbcfb51d1,0xbd1afa4b,0xbd0df057,0x3a43542c,0x3c55fa0d,0xbb9cf804,0x3c4a4877,0x3c12fb6b,0xbc281bb6,0x3a861a48,0xbb965f37,0xbc9247e8,0xbcd7d3ae,0xbca5c6db,0xbb469a24,0x3c9c92b9,0x3cf30838,0x3cbdb266,0x3c12b9f7,0x36d27571, +0xbb65bfc2,0x3be0388c,0x3c0c8d5b,0x3b8a05c9,0x3c6f517e,0x3caebe1b,0x3ce38f3c,0x3d2b4020,0x3d240d2a,0x3cbbaad8,0x3caec579,0x3c4d70b7,0x3b9bf938,0x39d27144,0x3b21ae53,0x3c208744,0x3b8ae161,0x3ada9b99,0xbbb3cc4a,0xbc0aa81e,0x3a82b052,0x3ced7712,0x3cde887d,0x3d058867,0x3d17c44c, +0x3c89bdd9,0x3cb1ae2e,0x3da3af6a,0x3bae694a,0xbc8564aa,0xbc06e1b2,0xbc30dcb1,0xbc4d5447,0xbc578bfc,0xbb92c242,0x39d677d7,0xbad372c8,0xbba8f72d,0xbb0023c8,0x3b9dc774,0x3c2bb132,0x3c198f2d,0x3c33cdcc,0x3b6ce084,0x3b99c705,0x3ca874e3,0x3c37bf06,0x3bcc5b2c,0x3ad1d019,0xbbed5c90, +0xbc398ef0,0xbc331d42,0xbc2d0bda,0xbad99291,0x3c50475d,0x3c0f060d,0x3a96caad,0x3c0944e5,0xbd79e968,0xbd975e0b,0xbd03ac72,0xbca20346,0xbc102574,0xba2c54a3,0x3c3374bf,0x3a2de65e,0xbd1e79fc,0xbccc6d12,0xbc706cb6,0xbc82f254,0xbc6feea9,0xbc07baf2,0x3a2c0931,0x3a607623,0x3bbadc90, +0x3ba4aec6,0x3bdeb786,0x3c3a29d4,0x3c844c12,0x3bd65f7d,0x3c42d2cd,0x3d2fc5c6,0x3c9d9c06,0x3c38c8ea,0x3c05b358,0x3b372319,0x3ace4150,0x3b67c8ab,0xbc2e7fd6,0xbc8a8ee7,0xbc3e1cba,0xbb602eec,0x3bbcd143,0x3c40fc3d,0x3d1ca669,0x3d064fe6,0xbb2161f4,0xbb23dece,0x3b7c30a7,0xbd669411, +0xbdc7c806,0xbdb73795,0xbd8f69de,0xbd153d94,0xbc7ff759,0xbc80a1e9,0xbc65da64,0xbbecb6a1,0x39d72947,0xba409e31,0x3a04d4b9,0x3b87dfaf,0x3b8ac2ff,0xba23e4e9,0xbb08aee5,0xbb9d8f01,0x3ae7e0bc,0x3cb63314,0x3c241418,0x3b535d34,0xbc098d60,0xbc69bb77,0xbcbce9e5,0xbc9bbc53,0xbcb43b28, +0xbc780a6c,0xbad2956d,0x3950a4b1,0xbc20ccaf,0xbd18ad55,0xbd117b55,0xbd1b29c7,0xbd3a221a,0x3ba0f2fb,0xbde23bc7,0xbd7fb8ec,0x3b358153,0x3cd43ef9,0x3d0d644d,0x3cde0154,0x3be7034d,0xbc3d33db,0xbc002518,0xbc0718dc,0xbad07887,0x3ba857ff,0x3b6d6e30,0xbba1c87c,0x3b4603b9,0x3be2f73b, +0x3c2fdf78,0xbb201672,0xbb660e99,0x3c4e83ba,0x3bb0d2f5,0xbb2ff775,0xbc82e0ac,0xbca0cd41,0xbc98fff0,0xbc1088ff,0xbc906110,0xbc84bded,0xbbce0b33,0xbc8a4a46,0xbc966a20,0xbca48ff2,0xbc5769df,0xbd1143c3,0xbda9b923,0xbdd68e9f,0x3da1e6c6,0x3dc889c2,0x3dcbabc1,0x3db5eec8,0x3da882b3, +0x3d8333aa,0x3d79e075,0x3d934179,0x3d7a432e,0x3d4e04e3,0x3d0a3b47,0x3cf4ad17,0x3ceb77d9,0x3ce54282,0x3c98736a,0x3ba92d9f,0xbc0fc99f,0xbc6cfd3d,0xbc8ae243,0xbc2ed733,0xbc93daaa,0xbca45f79,0xbc82c8c7,0xbca7206b,0xbc9f015a,0xbc965146,0xbca39b67,0xbcc331d0,0xbd126afe,0xbd26346c, +0xbd594d24,0xbd8fed23,0xbd994d01,0xbd5c873b,0xbb200469,0x3d316ea4,0x3d362840,0x3d5b4149,0x3d5f1330,0x3d675503,0x3d691f4b,0x3d6c28cf,0x3d6c663b,0x3d69ea66,0x3d5097df,0x3d3c22c6,0x3d2a7d46,0x3d0551c8,0x3ccbcfdc,0x3c813bc8,0x3c70607d,0x3c56b34c,0x3c3414d5,0x3c09a83e,0x3b83220a, +0xbb5842b3,0xbc3c2218,0xbc908da0,0xbcccf7f7,0xbcfaaea3,0xbd128e9a,0xbd2a20d4,0xbd37290e,0xbd473c94,0xbd5eddcb,0xbd1da535,0xbcccded5,0xbc416ef6,0x3c240fca,0x3cdd2949,0x3d2824da,0x3d282342,0x3d305402,0x3d3a550a,0x3d61c04f,0x3d43d299,0x3d523eda,0x3d545dda,0x3d4feae5,0x3d53780d, +0x3d3dbb28,0x3d2f707e,0x3d26d6a7,0x3d128699,0x3d05280a,0x3cee4fb4,0x3cd88bf8,0x3c9e4d2b,0x3c615e3e,0x3c0d4e0d,0x3c20e47d,0xbae8b8da,0x3a3a5105,0x3b46945c,0x3b9a7dd4,0x3bdcdcc8,0x3c030f50,0x3c117d29,0x3c52e73b,0x3c927fd6,0x3cb5e561,0x3ccf8808,0x3ce1c078,0x3cf19af2,0x3cf97bf4, +0x3d02ce5a,0x3d11b974,0x3d23f492,0x3d21c1ca,0x3d1e1ed1,0x3d3d7f87,0x3d4c12f5,0x3d5f739f,0x3d36ca2b,0x3d4c71fe,0x3d5ef7b3,0x3d59496d,0x3d54faee,0x3d4e5ddc,0x3d4c5e03,0x3d496fba,0x3d455d89,0x3d25f7f0,0x3d0f7694,0x3d34cdd5,0x3d174143,0x3d053a6b,0x3cc702e2,0x3cdc77fc,0x3cd81f29, +0x3cd99d27,0x3cd91f93,0x3cdb4f2c,0x3cda8345,0x3cecf022,0x3cf8e5e9,0x3d03ce36,0x3d08548c,0x3d0eef50,0x3d178b6a,0x3d196d20,0x3d1bc611,0x3d1b8589,0x3d1d468b,0x3d393432,0x3c376383,0x3c1e3486,0x3c235c2b,0x3c27e723,0x3c325055,0x3c72ad57,0x3c2154e3,0x3c163edb,0x3c2cbf96,0x3c19b951, +0x3c1d5352,0x3c3d85bb,0x3c20ff26,0x3c183bee,0x3c10c30b,0x3c1d6be8,0x3c2543c4,0x3c270e83,0x3c3f2f85,0x3c49fd65,0x3c55cbd4,0x3c409182,0x3c367501,0x3c2c7ce1,0x3c2891f5,0x3c16da08,0x3bdcbe60,0x3bd4bacb,0x3bd2fafe,0x3bcb8508,0x3c1fbf81,0x3c2fc484,0x3c11ae6b,0x3c3ac740,0x3c3b5a93, +0x3c1656be,0x3c240c89,0x3c2e5966,0x3c558518,0x3c6641fc,0x3c902433,0x3ccbf161,0x3c319190,0x3bf1436f,0x3c4789bc,0x3c2e43ad,0x3c468bdc,0x3c74ee9b,0x3c41118f,0x3c2c4c6f,0x3c179613,0x3c2ce7ba,0x3c3ef0de,0x3c562593,0x3c8b6f31,0x3c94da63,0x3c9d7bb6,0x3c83d2e4,0x3c69ad54,0x3c4bc2d4, +0x3c3e8cb9,0x3bfc7b13,0x39b0ef3f,0xbad6c71b,0xbaa30fb8,0xb9ea9e38,0x3c205ebe,0x3c4fd0eb,0x3bda80c9,0x3c51e90e,0x3c3d87f8,0x3bcb97f1,0x3c090c57,0x3c2699a1,0x3c1f1626,0x3c6100b6,0x3c92973d,0x3d138afa,0x3c1bf360,0x3bc136af,0x3c82b718,0x3c2587e7,0x3c367196,0x3ca066f8,0x3c398a3d, +0x3c0cbc22,0x3bfa7d40,0x3c35e2eb,0x3c63e290,0x3c70e14a,0x3cbee23c,0x3cd1d4a6,0x3cd85600,0x3ca8b267,0x3c88cff6,0x3c586c56,0x3c442884,0x3b95394e,0xbc07f8ef,0xbc40b53f,0xbc3b48f0,0xbc0dab8e,0x3c178a80,0x3c7e14cc,0x3b848a43,0x3c860c09,0x3c8bafbb,0x3bdf2d5a,0x3c3e0bfb,0x3c639e26, +0x3c945258,0x3ccbe094,0x3d176755,0x3d72d175,0x3c4724f1,0xbb49ee54,0x3c877b50,0x3c21a3d3,0x3c66e91a,0x3cf24ac2,0x3c0e0ab7,0x3ac6e4c4,0x3c17df82,0x3c85cb61,0x3ca1ef7e,0x3cb7d443,0x3d0a2b7c,0x3d15de70,0x3d144e16,0x3ce641ae,0x3cb66eb0,0x3c8f86e8,0x3c5cedaf,0xb8a1889b,0xbcbf2197, +0xbd039a42,0xbce82f5e,0xbcb07c3c,0x3c0f6a9c,0x3c840cfd,0xbb0a4a67,0x3c81cc50,0x3c174dea,0xbbbf0e7d,0x3b472b16,0x3bfcd15e,0xba594df1,0xbcb18d6f,0xbcf32523,0xbccf8d9c,0x3c5a9fd9,0x3d0f78bb,0x3d0b485c,0x3c8f5ff6,0x3ae0524c,0xbbb5fc9f,0x3bc2bd9c,0x3c2e8b48,0x3c112dbe,0x3ca85b26, +0x3cbd2fe9,0x3cc3a880,0x3cf7a301,0x3cfa4e25,0x3cf085ff,0x3c63a24b,0x3bc2ba53,0x3b9b09a9,0x3b5bf32b,0x3b915a5b,0x3b6af4dd,0x3c967255,0x3c861a03,0xbc625dac,0x3c87540d,0x3cb42dc9,0x3c36bc69,0x3c8f59b6,0x3d21793e,0x3da1efd8,0x3d10158a,0xbb1566d6,0x3d92664c,0x3c46f83a,0xbc2f0434, +0x3c0ab410,0xbbf5b532,0xbc105877,0xbba6b4b1,0x3b889af1,0x3c17058e,0x3b9e5b6d,0x38380713,0x3afc5d2c,0x3c198366,0x3c0c796f,0x3c552591,0x3c8ed2f2,0x3c56d877,0x3c4bf9fe,0x3c91c64a,0x3c329384,0x3bf3647a,0xba71c5ac,0xbb221bc7,0xba3890cf,0x3bebe0ac,0x3c35235e,0x3c954555,0x3cb2d8bc, +0x3c1ed564,0x3c4fec30,0x3cf6da4d,0xbca74f26,0xbd30d1d0,0xbd1785fc,0xbd10dd79,0xbc528be9,0xbc225b9a,0xbc18b633,0xbc31abe3,0xbcc528d7,0xbcea4024,0xbcd1496a,0xbbbc1796,0xbc3d0cd8,0xbc1e0443,0xbabf1615,0x3b3f9a2f,0x3bf61d0b,0x3b1158c8,0x3c007480,0x3c781fc8,0x3c870aee,0x3bac3d06, +0x3c37288f,0x3cd5020a,0x3c9c77d3,0x3c8b9889,0x3bdb125b,0x3bbcb9d5,0x3b27007e,0x3b58e97f,0xbc4ecb7b,0xbc5540ce,0x3be5dc6a,0x3c0aadda,0x3c79b506,0x3cb8e993,0x3c98732f,0x3c94f244,0x3ae60d6f,0xbb65ff34,0x3c4d4e12,0x3c63f323,0xbd060add,0xbd4fe854,0xbd2952c7,0xbcd0b42c,0xbc061134, +0x3abd721b,0xbb652274,0x3b79c2b1,0x3ba9cf44,0xb8490ebc,0x3a9d866d,0x3c222b02,0x3c17e70e,0x3c13b81e,0x3c2896cd,0x3c58906d,0x3c564bef,0x3c28b79e,0x3c624068,0x3c537899,0x3b91ffd2,0x3c13cd2f,0x3c075cba,0x3b86cd31,0xbc323a73,0xbc368ace,0xba17f3b8,0xbc804aec,0xbc9ffca5,0xbca70472, +0xbd07e3bb,0xbd04ba34,0xbc84bc69,0xba5534d1,0xbdde8e25,0xbdfeca1e,0xbda08802,0xbd2a1d29,0xbca7447e,0xbd122b3c,0xbd284571,0xbcd91176,0xbcd2b736,0xbca97f55,0xbbfd3924,0x3bba1fe4,0x3c0aa183,0x3b9192f4,0x3b3612d4,0x3b7c6073,0x3c4c6e0f,0x3b0fc882,0x3b12cdcc,0x3c4278c6,0x3c601eff, +0x3c1e1119,0xbb3f1a5a,0xbbf14b0a,0xbc3ea6a2,0xbc84267e,0xbc452af6,0xbc0add36,0xbc6ea21a,0xbb1b59b5,0xbb6e28d9,0xbc56833a,0xbcd00888,0xbd12f400,0xbd399b63,0xbdacda62,0xbb5a2ef8,0x3d041f5e,0x3d6153f4,0x3d5004bb,0x3d5e30c7,0x3d50a858,0x3d447296,0x3d575d22,0x3d3ed60e,0x3d24ce49, +0x3cdb6943,0x3cb57b09,0x3c777f86,0x3c26cb2c,0x3c4c9718,0x3c1f27e6,0x3bfa2c7f,0xbaa535d6,0xbb7026e9,0xbb432c4e,0xbb95ba69,0xbba129ee,0xbbe38b4d,0xbbcc8946,0xbc12a3f5,0xbc2a7c51,0xbc2f3fde,0xbc7a21ec,0xbcd4e9b9,0xbc94e33f,0xbcab34a8,0xbd012e2b,0xbd2cbc16,0xbd51388a,0xbd568eb9, +0xbceb7bbc,0x3cbb524f,0x3d32b3d7,0x3d492312,0x3d5c85fa,0x3d80f8ee,0x3d6d28eb,0x3d5d97bc,0x3d4f4f80,0x3d3e395e,0x3d272106,0x3d1de557,0x3d0aeddc,0x3d042b91,0x3ce4d786,0x3ca109fd,0x3c4089f7,0x3b83f838,0xbb9f10bf,0xbc7f6110,0xbccb0fc6,0xbcfcc69e,0xbd18dbf5,0xbd33a2f8,0xbd3a74db, +0xbd4064cc,0xbd478f2e,0xbd53537a,0xbd5d4a88,0xbd68807b,0xbd7355d7,0xbd81422a,0xbd8b5988,0xbd3e4c03,0xbcd25077,0xbc0a76b9,0x3c28f9a3,0x3c31c135,0x3c673725,0x3cd17552,0x3c8e8147,0x3cb532ef,0x3cc4c6ad,0x3cbf91b9,0x3cd9f614,0x3c9ed7a2,0x3c8997e1,0x3c617df4,0x3c01b8a2,0x3b5b33ca, +0xb9e5d10f,0x3aabad11,0x3ad07b56,0xb9b8aa3d,0xb8353f99,0x3b52249e,0x3b04460d,0xba4f0f22,0xbb88a040,0xbbf62579,0xbc36aadc,0xbc79a39c,0xbca1da5b,0xbc8806f6,0xbc694834,0xbc3dda33,0xbc14ca95,0xbbb04e61,0xbb886268,0xba19a4ef,0x3a41dda2,0x3b78e506,0x3bde44ad,0x3b261a4b,0x3ae4c632, +0x3c18a4a8,0x3c6a5e8f,0x3cbab85b,0x3bf2ff2b,0x3c76310f,0x3ccb18a1,0x3cbad868,0x3cae2f60,0x3c9ea61e,0x3c97e5c9,0x3c8e8284,0x3c7c672e,0x3c09a629,0x3b2c7efa,0x3c794f29,0x3c01e840,0x3b856a1e,0xbaaf3e81,0xbb215858,0xbb80dcb2,0xbbaf335c,0xbbe4bfd0,0xbc0804c4,0xbc2e6360,0xbc0fd4ee, +0xbc02865e,0xbbe7f37b,0xbbd0e335,0xbbbed697,0xbba6bfa9,0xbb672db4,0xbaefdcaa,0xb99f34fc,0x3a7e1397,0xbb2576df,0x3c27df18,0x3c270925,0x3c17902f,0x3c26fad7,0x3c2e1113,0x3c551fb7,0x3c0df1ab,0x3c123326,0x3c243606,0x3c2b184f,0x3c2d48a9,0x3c302a3b,0x3c3004c1,0x3c2b026c,0x3c17f3eb, +0x3c1290b4,0x3c141f9e,0x3c2e5012,0x3c32ce50,0x3c357919,0x3c3903be,0x3c2cbd11,0x3c236369,0x3c193073,0x3c182381,0x3c0ac4de,0x3bdcf6d9,0x3bdbf69d,0x3bdbe18b,0x3bd12756,0x3c08e0e3,0x3c131048,0x3c091223,0x3c1d0d3d,0x3c236838,0x3c199bad,0x3c27b37c,0x3c481fcb,0x3c3e0912,0x3c80daea, +0x3c78d9bb,0x3c930022,0x3c162906,0x3bdf1471,0x3c118ee3,0x3c34626b,0x3c578280,0x3c4dec64,0x3c5a9d10,0x3c3fdaf1,0x3c0675ff,0x3c118b7e,0x3c1c0b4e,0x3c5171c8,0x3c6a8254,0x3c8a9b01,0x3c8d7ab5,0x3c67545e,0x3c4b708b,0x3c26608e,0x3c211b6e,0x3bf61b6f,0x3b290e58,0x3ade1902,0x3ae1b414, +0x3adc5413,0x3c036424,0x3c2064d6,0x3bfce20b,0x3c220f08,0x3c1f0815,0x3c0cc857,0x3c32c934,0x3c7d7131,0x3c4552cf,0x3c855cb6,0x3c74e36d,0x3cc3a78f,0x3bebe42a,0x3bb11b84,0x3c2c1bba,0x3c4cdc93,0x3c694c6d,0x3c6b6bae,0x3c66d0a0,0x3c476721,0x3babdcdb,0x3c0a2a4d,0x3c21be0f,0x3c6d3710, +0x3c946f4f,0x3cada940,0x3cc5ebce,0x3c8c18dd,0x3c6c8fce,0x3c23cf61,0x3c241a8c,0x3b90afe6,0xbb9669ae,0xbba84104,0xbb8979d2,0xbb7e08cd,0x3bac89bb,0x3c176c0e,0x3bb98456,0x3c299d52,0x3c5470c5,0x3c39ffab,0x3c89e57f,0x3c96e74f,0x3c934acb,0x3cdf71e6,0x3d06e4c5,0x3d27b7ad,0x3c24b39a, +0xbb34453c,0x3c18e1db,0x3c40e4cd,0x3c9022f3,0x3cce79bc,0x3c5a6c55,0x3bd20406,0x3b9bb6a8,0x3c588e3e,0x3c64c17b,0x3c992a6e,0x3cdecdc5,0x3d0a6232,0x3d1a923a,0x3ccd75f2,0x3c950209,0x3c2d90ff,0x3c10903c,0x3a7c249c,0xbc7eb47a,0xbca26ddd,0xbc849378,0xbc494689,0x3bcc9fbf,0x3c1b5ef4, +0x3b8f2afd,0x3c1693fe,0x3bcae8b6,0x3b56aed3,0x3c48efee,0x3cb65f92,0x3bb8216d,0xbbf61de7,0xbcbb8907,0xbd056ee7,0x3b87f52e,0x3ce0783c,0x3d143229,0x3ceb0dc0,0x3c18bb5a,0xbbc5d319,0x3b754342,0x3c11d587,0x3c506fa6,0x3cb83b60,0x3ca95c18,0x3c9b5c67,0x3c6972e4,0x3c6c4d70,0x3c73bd15, +0x3bab3591,0x3bf2c5a7,0x3c3d7b18,0x3be3877e,0x3bf42642,0x3c00dd35,0x3d143889,0x3cfc28c5,0xbc870f33,0x3b7561f1,0x3bdbde7e,0x3b8c5ca4,0x3c23e313,0x3d0162a9,0x3d9600a0,0x3d35c4dd,0xbce77996,0x3ad1bac4,0x3ccc9c43,0x3ca94a75,0x3c2c342a,0x39075247,0xbc0d8ce0,0xbc2277ea,0x3afb4b47, +0x3c2d9b10,0x3c63423f,0x3bbe5c60,0x3b88dbe4,0x3c1323f7,0x3c0638c5,0x3c7c9302,0x3ca0888a,0x3ca22309,0x3ca1c088,0x3c52f51e,0x3c8f14be,0x3c7fedf3,0x3b07074e,0x3b961581,0x3bd176d8,0x3c154250,0x3c9d01f0,0x3c9786a8,0xbb077f31,0x3c2d0db6,0x3bef3812,0xbc176667,0xbc807656,0xbcdb0c94, +0xbd1db471,0xbd113983,0xbc5eeea1,0xbbd3e840,0xbba79e81,0xbbe38d57,0xbb33fe85,0xbc60fb48,0xbca9d584,0x3b899104,0xbb8a80b7,0xbbb97eb2,0x3a2bd7be,0x3babb214,0x3c05e62d,0x3b99b152,0x3bfd54e8,0x3c75d6b0,0x3c1360d9,0x3bbb4f45,0x3bf1bc77,0x3c05a05d,0x3cb7df67,0x3cc737f5,0x3c21dfdd, +0x3c75ebaf,0x3c1a0c17,0xbaa0fb1e,0xb9c58433,0x3b617829,0x3c1a4060,0x3cb3d514,0x3cfa1d69,0x3d008739,0x3c659cf5,0x3b41820a,0xbc0fb3ad,0xbc2db388,0x3b3b2a14,0xbc8ac65a,0xbbbf2ad8,0xbc0c6de3,0xbc75d864,0xbc7c95da,0xbbf4a314,0x3c54c33f,0x3b77156f,0x3c0aca6f,0x3c124e5e,0x3b4ace2a, +0x3b6f0f3d,0x3c23687b,0x3c41fdad,0x3c8813d2,0x3c8e4211,0x3ca2abfd,0x3c979fb5,0x3c21e018,0x3c89594d,0x3c9652a9,0x3c742fd3,0x3c8cd7fd,0x3c7141ea,0x3a88f1e6,0x3baeb96a,0x3ad687a5,0xbc38c8eb,0xbc89a274,0xbca6e0d3,0xbcd66a8f,0xbb118f75,0x3bfee91f,0xb9f64f84,0x3c17c371,0xbcbc6bea, +0xbd3b0619,0xbd71bebd,0xbd5dcb60,0xbd3508ce,0xbd369873,0xbd1eb90c,0xbcc8c6f0,0xbcca9f52,0xbcac2085,0xbc6f4415,0xbb7ff239,0x3b83f219,0x3c309d99,0x3c02fdc6,0x3c089bec,0x3c4909a6,0x3c2cf8d1,0x3c3da27d,0x3c038df5,0x3c823dba,0x3c7b960b,0x3c1071f9,0x3aa24b8e,0xbb1428ca,0xbaf5baa6, +0x3ae8d2bf,0x3a7958c3,0xbbcf01e7,0x3bae211e,0xbb3adb2b,0xbceba969,0xbd148742,0xbd23c931,0xbd2b5f9d,0xbcdd649a,0xbd7427d0,0xbd3e45a6,0xbce04a24,0xbc7739a8,0xbb901bd5,0x3c48a0ce,0x3c823ea2,0x3c4ce1bd,0x3c0204fc,0x3be59302,0x3be31a93,0x3c835d9c,0x3c886745,0x3c78e6c0,0x3c46e8fe, +0x3c25eeb1,0x3c329bfd,0x3af91d85,0xbabfb1f3,0x3a51a610,0x3c1a8765,0x3c38f91e,0x3c17c929,0xb9cafa0b,0xbbbda5ed,0xbc4027d9,0xbc57b08b,0xbc78dd38,0xbc83a156,0xbcab7494,0xbc369b22,0x3c4fa7e7,0x3b83d5ca,0xbc09967c,0xbcdaf85e,0xbd48e6cc,0xbc21250f,0x3b93bd76,0x3c838650,0x3ca10a50, +0x3cffe705,0x3ceec4cd,0x3cdd18f2,0x3ce39668,0x3cf16bf6,0x3ce9e049,0x3d000903,0x3cc1ef49,0x3cb5a396,0x3c83e530,0x3c4f223f,0x3bd52935,0x3b27f330,0xb94a878d,0xbb7b2fd4,0xbb8e0761,0xbc2a6a42,0xbc90caae,0xbcbe11bc,0xbcdb538c,0xbcf4fc57,0xbd0c9068,0xbd03c0cf,0xbd00cd75,0xbcef394a, +0xbd0eee5c,0xbd305666,0xbd584f0b,0xbd4aaa9a,0xbd32f6bc,0xbd1cb4ac,0xbcaf27db,0xbc0320ce,0xbb7b1d31,0x3b292030,0xbabfa91b,0x3afab544,0x3b0dd515,0x3b6b49a2,0x3bbe8c1f,0x3b589d14,0x3b03eeeb,0x3ade8d00,0xba17b52a,0xbac1a24f,0xbb2116d4,0xbb5c11ed,0xbbb53f1d,0xbc01edbc,0xbc243585, +0xbc1eecbc,0xbc8fd4a8,0xbca9aff8,0xbcb7dca8,0xbcce3297,0xbce6e5a5,0xbd00b80c,0xbd109bdc,0xbd0cd977,0xbd0c32b9,0xbd0a19c3,0xbd055af2,0xbcf27308,0xbce75569,0xbcb1359f,0xbc8f7f56,0xbc6bfc45,0xbc36ce9d,0xbc77f275,0xbc683cad,0xbc505ecd,0xbc2dee3f,0xbc049643,0xbc41c407,0xbc1a6480, +0xbbcd715f,0xbbeb2287,0xbbf63a84,0xbc0b4511,0xbc07476c,0xbc0f71a2,0xbc14d35d,0xbc440a5d,0xbc6f1b0d,0xbc31b684,0xbc70ec22,0xbc8786a6,0xbca4f245,0xbca61c74,0xbcb2ec6e,0xbcbd53e4,0xbcc79123,0xbccffa4c,0xbcdcde09,0xbcd462f6,0xbcd08a63,0xbccc9ed6,0xbcc90bf1,0xbcc78066,0xbcc8ac54, +0xbcbb58da,0xbcad5ce5,0xbc99b75e,0xbc8c7741,0xbcbaaee4,0x3c0b381d,0x3c0f76e1,0x3bf0221c,0x3c00fd10,0x3c038cc3,0x3c137615,0x3be7a623,0x3bf64a8d,0x3bfab850,0x3c133615,0x3c1a3cca,0x3c13bb06,0x3c223bc6,0x3c1ddefa,0x3bfd829b,0x3bf5a3ed,0x3bf19369,0x3c1c3be6,0x3c0ea81d,0x3c09f4bb, +0x3bfb793e,0x3c01e3a2,0x3bff2f91,0x3bfdef67,0x3c031249,0x3c00c35c,0x3bf06ef6,0x3be85098,0x3be59400,0x3bf23ccb,0x3be5cdce,0x3bea3ee8,0x3bf41adf,0x3bfbe384,0x3bfc7575,0x3be07eb9,0x3c0c035d,0x3c143fa0,0x3bf77142,0x3c2e4a95,0x3c1b5e62,0x3c255f3e,0x3bdda174,0x3bc00799,0x3bb03f2d, +0x3c16ddad,0x3c3a403a,0x3c2aa64c,0x3c5ed59d,0x3c438bf2,0x3be15ea5,0x3be678d4,0x3bf5b6b7,0x3c41ffa6,0x3c2f43c6,0x3c474b9a,0x3c205999,0x3c10a40f,0x3c0c3213,0x3c077fac,0x3c16edbc,0x3c10acef,0x3be23c0c,0x3bd46010,0x3bd35c5f,0x3c07f1ec,0x3bffec90,0x3bed02d3,0x3bf24f37,0x3bd758b6, +0x3bcde5da,0x3b9d949e,0x3c089bbe,0x3c615caa,0x3bf876cb,0x3c18729e,0x3bf15a05,0x3c2f18b2,0x3b9c4e5c,0x3b9d42fb,0x3bae37a9,0x3c35d377,0x3c623e57,0x3c3c5280,0x3c88bbac,0x3c79e6c1,0x3b8a72b4,0x3bd728b8,0x3be7750d,0x3c725ccc,0x3c485fff,0x3c5956c9,0x3c3bfbe6,0x3c1275d8,0x3c171525, +0x3c031853,0x3c24b1e9,0x3c0fda74,0x3bb54206,0x3bb0d0dd,0x3bac3263,0x3c10f222,0x3bb26659,0x3bc2e1b9,0x3bef9c15,0x3bee2af5,0x3beb8e78,0x3b7c2e9f,0x3c5714df,0x3c1b83e9,0x3bef30d1,0x3c6759f4,0x3c907deb,0x3ca1d796,0x3bbe256a,0xb919ca59,0x3add1ead,0x3c1edcfe,0x3c88fe4c,0x3c915ae2, +0x3c937d5c,0x3c3421b1,0xba81aefe,0x3c09eea2,0x3c2a646f,0x3ca61ac9,0x3c9ba1b1,0x3cb58873,0x3c92cb93,0x3c382de2,0x3c190182,0x3be6a5ca,0x3c253251,0x3c159d36,0x3abe91a6,0x3ac01091,0x3b673096,0x3c5763da,0x3c3fbaec,0x3bcec3c3,0x3bcfde46,0x3ae0c759,0xba492421,0xbb9a5c6e,0x3bf059f1, +0x3d0674bf,0x3c6fd62c,0xbbb299d7,0xbcb9cd05,0xbcf1a284,0xbb8e0959,0x3c543a74,0x3cbf5098,0x3d1204ef,0x3cae8351,0xbae90393,0x3a4babdc,0x3bcc81a3,0x3ca20c54,0x3ca58a78,0x3c863218,0x3c6e5b2b,0x3bd96c55,0x3b4e5997,0x3a2f2f37,0x3bb26a49,0x3c34f6f8,0x3c748d88,0x3c5df03b,0x3c61d263, +0x3c6ad351,0x3cf96d32,0x3ca51ac1,0xbc61bc54,0xbc6a018e,0xbbf16e46,0x3c928835,0x3c8fa843,0x3cd7d3fe,0x3d424c96,0x3d1e60bb,0xbcfa56a4,0xbd67f0c6,0x3d1a1650,0x3d56ad85,0xb8f0098b,0x3c7146ef,0x3bd1d426,0xbc1857a1,0x3ab82c53,0x3c2c7cfe,0x3ca54880,0x3c22e933,0x3bbe3366,0x3c23d35d, +0x3c678409,0x3cad7d2d,0x3c74d787,0x3c6f8208,0x3c64fe2f,0x3bf9d681,0x3c9d823a,0x3c8f2c98,0x3bdeb213,0x3c046543,0x3c3d2ab7,0x3c8b4ff9,0x3c895859,0x3c3a08ef,0xbc4f7440,0x3c9850de,0x3ba011c9,0xbd5393fe,0xbce566c6,0xbca6e3b1,0xbcce9195,0xbcb4c24f,0xbbabe8ed,0xbc535fa9,0xbc5188ab, +0xbc1f09dc,0x3c0befb7,0x3ba0ceb1,0xbb9d92ce,0x3c03d103,0x3b79165a,0xba4c701b,0x3b82cdae,0x3b6bc4b8,0x3bcec227,0x3be95171,0x3b2d86f0,0x3bbf4357,0xba2ff3f0,0xbb0c19e5,0x398aeb61,0x387267fe,0x3c3b05ab,0x3c554828,0x3bbc9192,0x3ba86f3d,0xb8d3e4d5,0xbb3a4555,0x3bddf581,0x3c833541, +0x3c11ad90,0x3cbc99cb,0x3cdef1f6,0x3cc409e3,0x3c2ce0d7,0x3a7ba94f,0x3c3da5a2,0xb8e91adf,0x3b06531d,0x3b13620b,0x3c007467,0x3c2e4442,0xbb116e55,0xbaf9f43e,0xbb5a2a7f,0x39f7e797,0x38a55541,0x3b68e44b,0x3bc3d3ea,0x3b2aa8ed,0x3b758a5b,0x3bf66f86,0x3c2798c3,0x3c7108fa,0x3c29a2d2, +0x3c2a2546,0x3c4104d5,0x3be9bbcc,0x3c2d62bc,0x3c508dd9,0x3c52814e,0x3c203b1d,0x3bfba29c,0x3bbfe783,0x3ba8b866,0xbbd46c41,0xbcf29fca,0xbca5c4a5,0xbc8d3a2e,0xbc34128b,0x3b1f4b60,0x3c3742ed,0x3c8fdbc8,0x3b607abc,0xbbc106be,0xbc2f2a76,0xbce5fc43,0xbd2dc198,0xbd593d6b,0xbd174897, +0xbcd9d2a6,0xbca75db8,0xbc6bd938,0xbc4444ea,0xbc3843f7,0xbc154aaf,0xbaff5370,0x3c3822b0,0x3be0ce0d,0x3be9f2d3,0x3bc8834f,0x3c41d316,0x3c437d43,0x3b4bc1a5,0x3c13a44d,0x3c59753e,0x3c876467,0x3c5ca125,0x3c156de6,0x3b336f33,0x3a586d59,0xbb5f319a,0xbc25a15d,0xbc0b862e,0xbc01d213, +0xbc124708,0xbc91196e,0xbca49faa,0xbc6a7b75,0xbbeb9eb3,0xbd407ce2,0xbd5a981b,0xbd587194,0xbd204eb4,0xbca7a5ff,0xbc14c730,0xbc0f74ec,0xbc9a0abe,0xbc93ea72,0xbc6cd255,0xbbebce07,0x3b77e562,0x3c132180,0x3c2701a7,0x3baf23c7,0x3b85a346,0x3b792dbb,0x3bbe2268,0x3bf4dd01,0x3bf6ae2f, +0x3c5e354e,0x3c5bc431,0x3c140a18,0x3bedb786,0x3b4087ee,0xb91c2503,0xbbaa451e,0xbbe71244,0xbb8deece,0xbc3c29e9,0xbc8acc01,0xbcaa04fa,0xbc061d51,0xbbf16509,0xbcaa2b3c,0xbd10f061,0xbce039cd,0xbce30f1b,0xbc99ac2e,0xbc852f4e,0xbc225d0e,0xbc05f785,0xbba03178,0xb9d55b74,0x3bdaf95d, +0x3c280d2b,0x3c8edf5e,0x3c3c1d93,0x3c3106bc,0x3c0f9f6f,0x3bbf8123,0x3b308740,0xb9b0b852,0xbb45a19c,0xbba84299,0xbc095e4c,0xbbcc7f58,0xbb808bf8,0xba9fc9d8,0xbb7c6f4b,0xbbdde3d6,0xbc251100,0xbc27e590,0xbc36f97d,0xbc3cd0b3,0xbc2a69b3,0xbbfa3fca,0xbbe2c2ba,0xbc68b5f3,0xbcad30ea, +0xbcd097bc,0xbcd4e40d,0xbc421795,0xbc0f12ac,0xbb94a42d,0xbb9a4bcb,0xbadbe5e4,0xba105f1d,0x3a5f302c,0x3b35f97b,0x3a24571a,0xba5e2151,0xbaa3de59,0xbaf7621b,0xbaf75245,0xbb0693d9,0xbbafbc64,0xbbf50a99,0xbc21e57a,0xbc45ec7a,0xbc88c649,0xbc7f0025,0xbc8fe3b3,0xbcaaaa19,0xbcbd8a5c, +0xbcd42d3a,0xbce22702,0xbcf479a3,0xbce90f77,0xbce66145,0xbcea8757,0xbcee0a4c,0xbcf9ce5d,0xbcfad1c9,0xbcda8655,0xbcb3f922,0xbc97fc0b,0xbc784579,0xbc883aed,0xbc7d3ae7,0xbc842834,0xbc7e80db,0xbc7b5f20,0xbc677147,0xbc63af4c,0xbc51e433,0xbc5cd7d2,0xbc5e92b5,0xbc6d53f4,0xbc6e61c3, +0xbc79adf2,0xbc7d9ab6,0xbc80e7b9,0xbc79d745,0xbc979385,0xbc93a9c0,0xbc93a3c8,0xbc856542,0xbc933f1c,0xbc988acb,0xbc9fcc04,0xbca425e0,0xbca9e533,0xbcb30e57,0xbcb37237,0xbcb4acd4,0xbcb2cd90,0xbcb20c9b,0xbcafe404,0xbcb5fa70,0xbca989c1,0xbca3691b,0xbc9a626b,0xbc922b35,0xbcb29d41, +0x3bc52a59,0x3bc34434,0x3bad44ac,0x3bbda9ba,0x3bc14bd6,0x3bd2a2fa,0x3bb51545,0x3bc9f4eb,0x3bca04bc,0x3beb9f8a,0x3bfbf344,0x3bf5a9fd,0x3c10bf35,0x3c0dec53,0x3bdbc99e,0x3bc889ed,0x3bac43f3,0x3bf4b8e2,0x3bca7032,0x3bbf3fac,0x3b9ed2a1,0x3bab14e7,0x3baec79e,0x3bc00090,0x3bbee394, +0x3bbd02dd,0x3bb2554a,0x3ba36ae6,0x3ba4702d,0x3bd76570,0x3ba88034,0x3ba3e994,0x3bb709ae,0x3b9c6691,0x3b93fbdc,0x3b76884f,0x3bb1e21b,0x3ba36b97,0x3b781259,0x3ba67b21,0x3ba513aa,0x3bc91194,0x3bbe97f4,0x3bb3b47d,0x3b8d6e4c,0x3be8fe4e,0x3c0d6fc9,0x3c0b9e5b,0x3c4a2068,0x3c3851b4, +0x3bd56710,0x3bbeb256,0x3bb3b867,0x3c04aa71,0x3be22c33,0x3be535b4,0x3b98224a,0x3b994b33,0x3ba8df4b,0x3bd64bfc,0x3bd61d96,0x3bc06131,0x3b9e8389,0x3b72b499,0x3b9982a4,0x3c1fa4c2,0x3bd0d0c7,0x3baf7c97,0x3bc39fb1,0x3b1f1058,0x3ab4bc86,0x39d35ede,0x3b8cfd2b,0x3c0fa825,0x3bc17ce7, +0x3bad870f,0x3b838d00,0x3ba15684,0x3b9a7d5b,0x3bc92674,0x3bac31b4,0x3c1c5d77,0x3c4a9787,0x3c3428dd,0x3c94fd4d,0x3c8ce682,0x3bdbf7c1,0x3bd84256,0x3ba91836,0x3c2258af,0x3bee0b6f,0x3bd40438,0x3b6ecba0,0x3b693387,0x3ba21378,0x3bf661bb,0x3bffa328,0x3bf61f7a,0x3bae6bb1,0x3b59cfc2, +0x3b4d8172,0x3c569790,0x3b9f6f7f,0x3b8bc2d2,0x3be77cc7,0x3a89f591,0xba1361da,0xbb759bbf,0x3ba9a5f6,0x3b56f9c6,0x3aaae89c,0x3ae07d54,0x3bc7bc4d,0x3c1eeb58,0x3ba451d5,0x3b6577b2,0x3a4801b2,0x3bff29c1,0x3c4974ac,0x3c35a8ad,0x3cad2d08,0x3c7f16fb,0x380e473f,0x3bbec766,0x3c138921, +0x3c9a953d,0x3c349ccd,0x3c02967b,0x3af4e6fd,0x3a3abfa7,0x3b306b4b,0x3be07547,0x3bf99e27,0x3b9fe933,0x39f70e16,0xba771e4b,0x3ba239ee,0x3cbe32ad,0x3c3dee48,0x3bcc75ea,0x3be4d952,0xbbeb4889,0xbc3fb88e,0xbc5d0a54,0x393f9538,0x3cc402a5,0x3c9e56fe,0x3b392472,0xbc6a86af,0xbce807d9, +0xbb9ee8f7,0x3c058a31,0x3c24f44a,0x3d0830d8,0x3cf3d731,0x3c170089,0x3a89a947,0x3bb0e4f1,0x3cb9ff0b,0x3c6b7bb4,0x3c264483,0x3c288a2e,0x3b8906bd,0x3b324526,0x3b9c3869,0x3c323689,0x3c54a850,0x3c80ca5d,0x3c6eee44,0x3c98ea22,0x3cf58707,0x3c2dc4f1,0xbc024e71,0xbcb68053,0xbc9a7730, +0xbbcaa289,0x3c85c7dd,0x3ccecb83,0x3ce003ee,0x3cc89753,0x3caa29d2,0xbc6c0259,0xbd8712a6,0x3c9cd56f,0x3d314744,0xbaa947c6,0x3c756b1c,0x3c2e7beb,0x3b39ab79,0x3b216a9e,0x3bda21a4,0x3cac5a4a,0x3c7bd539,0x3c37db48,0x3c20ef2d,0x3c90dedb,0x3caf5c4a,0x3c074555,0x3c104cca,0x3c195a92, +0x3c091da0,0x3c549c9c,0x3c6fb6bb,0x3c905aa5,0x3c8d6b7a,0x3c908346,0x3c8c5f5b,0x3c3b2e34,0x3bfe9d4f,0xbac72f67,0x3cd1fc16,0x3c6eae43,0xbcc3b3a0,0xbc92411e,0xbc7947ae,0xbc48d416,0xbb126b34,0x3c3f01fc,0xbc7a45e8,0xbc7ef688,0xbc474939,0x3b3d2663,0x3c76f113,0x3c37af16,0x3b77945a, +0x3bf3a4dd,0x3ba71bae,0x3bbd3d20,0x3b93d388,0x3be748ce,0x3c17138a,0x3a31a9d6,0xbb5ce8fa,0xbc0176a3,0xbbca3746,0xbb8edc3e,0xbbbc7280,0xba864c30,0x3b5d07bb,0x3c2c9a39,0xbb869699,0xbc092b04,0xbb7c37b2,0x3bffc0eb,0x3c867ff6,0x3c3352cb,0x3cb2fb33,0x3c85bb94,0x3b80c053,0x3b14338d, +0x3b8fe372,0x3cbcdd01,0x3c9480b4,0x3c4add01,0x3c9765e5,0x3c853bcb,0x3c393e0a,0xba98ee71,0x3a47cd3f,0xbb2078bd,0xbbd66134,0xba57bbe0,0x3aa04748,0x3b6df54d,0x3b765731,0x3b948916,0x3b935a1e,0x3bec0b34,0x3c103639,0x3b395e85,0x3aff229c,0x3b398634,0x3bbbf681,0x3c11345d,0x3c192291, +0x3c3a692e,0x3b7ced87,0x3962cc1b,0x3b05563f,0xbacdb7f7,0xbc133825,0xbca92800,0xbc15ce32,0xbbc88303,0xbb031c5b,0x3ba28495,0x3c3097b0,0x3c8a8dda,0x3c39ef0a,0xbc30d200,0xbc980828,0xbcd77521,0xbd172232,0xbd528831,0xbd2f1c80,0xbd03bcc7,0xbca34b33,0xbc24957c,0xbba66b94,0xbb8bb9df, +0xbbd35ad7,0xbb3e4581,0x3b8211a0,0x3b8312a3,0x3b974009,0xb2cdc66b,0x3b9c1086,0x3bbbf909,0x3ba1b346,0x39bf0c4c,0x3b03fef8,0x3c328668,0x3c214fbb,0x3bf46ab1,0x39b313fb,0xbb283957,0xbbe1b6f0,0xbc1cbeda,0xbc9f40db,0xbc9878ed,0xbb49b5c6,0xbba867fa,0xbbb55f72,0xbb86ef9c,0xbbc35873, +0xbcd7a45c,0xbcfe3197,0xbd07c10c,0xbcd2155b,0xbc3ae992,0xbc87ed85,0xbcab28bd,0xbcce683d,0xbccc5a61,0xbcb4b9c2,0xbc81feb8,0xbc58eef9,0xbbe530f3,0x3b815ee4,0x3b2eafe7,0x3b944b1f,0x3b86709a,0x3c17b22b,0x3c219b97,0x3c153a29,0x3bed7769,0x3c01f397,0x3c613104,0x3bdfdfd8,0x3b75fd3e, +0xbb2c185c,0xbb8fd85c,0xbbddeb63,0xbc18f1f3,0xbc229d98,0xbc90b189,0xbcf591ac,0xbd173d1d,0xbd10a864,0xbcdc5638,0xbcdb721f,0xbd128bd3,0xbd298435,0xbd1588b4,0xbd0edda8,0xbd01a254,0xbcd286fa,0xbc93cb7d,0xbc3a88e1,0xbbbc65d0,0xbb1da3b3,0x3b5d085f,0x3b4edd1b,0x3bc66b36,0x3bfe47cc, +0x3b7cc7af,0x3aa7145b,0xbaf15242,0xba27412a,0xb9484d68,0x3b6ac2a0,0x3c154a68,0x3c443551,0x3c8a3348,0x3c55c2ba,0x3c275bcb,0x3be52703,0x3b97afdc,0x3b001e02,0xbaebef5f,0xba43a41a,0x3a8b732f,0x3b720912,0xbb855397,0xbc615834,0xbcbe356f,0xbcf8db0c,0xbc62b42b,0xbc5bf541,0xbc239c43, +0xbc039bb9,0xbbbaf83b,0xbb9d20a3,0xbb81a3ea,0xbafd786f,0xbb11ff3e,0xbaeadf7f,0xba7510cc,0x3a1b4cf2,0x3b0a8688,0x3b8d2fd1,0x3aa7b643,0xb8bbdf17,0xba8ae042,0xbb2d8682,0xbbd84d21,0xbbc786e4,0xbbdf8664,0xbbfd9318,0xbc047e67,0xbc077faa,0xbc011387,0xbbf00a47,0xbc0e52bf,0xbc24f82e, +0xbc3dcdd1,0xbc601665,0xbc88b552,0xbc9b94fc,0xbc9d7962,0xbc8f7446,0xbc84a0d5,0xbc70136e,0xbbf8a874,0xbbf74213,0xbc0e6f68,0xbc1a8eb9,0xbc33656e,0xbbd8b6a2,0xbc00b143,0xbc0fcd32,0xbc054053,0xbbf5dacb,0xbbf2f615,0xbbea4aea,0xbbf29560,0xbbe98d3a,0xbbaf9db8,0xbb6a18f9,0xbc1faa45, +0xbbefe8d6,0xbbcd418f,0xbb8f4e1e,0xbb9d79a3,0xbb94bdd1,0xbb96a401,0xbb8c1bd5,0xbb8a0761,0xbb8269a2,0xbb9e5473,0xbbb06c51,0xbbc203ff,0xbbd2a935,0xbbdc9b12,0xbbf7e74e,0xbbe4be7b,0xbbeb8fd7,0xbbf1069c,0xbbfa1758,0xbb801b6d,0x3b3f882f,0x3b40f432,0x3b8acfec,0x3b84b6fc,0x3b8277a8, +0x3b88d613,0x3b701d93,0x3b8c3e82,0x3b8a06f5,0x3ba63c79,0x3bb20c24,0x3bb30078,0x3bd6d6b1,0x3bd2ffd1,0x3badba2a,0x3b76bef4,0x3b1b6a8d,0x3b6e0648,0x3b51f07b,0x3b55070a,0x3b2c3c0e,0x3b487e55,0x3b4643c5,0x3b51e2a2,0x3b163736,0x3ad063d1,0x39beee2f,0x39d13877,0x3a72018e,0x3b6e8b4b, +0x3b148ddd,0x3b131792,0x3b369c30,0x3ad4b8f5,0x3aa081ea,0x3a26f5c4,0x3b0297d6,0x3b081dcb,0x3b8c684e,0x3b377756,0x3b6acdba,0x3b8a3404,0x3bc0d63b,0x3bb11801,0x3b58e4d2,0x3bb19511,0x3bd96271,0x3be6f826,0x3c23016b,0x3c19a05e,0x3bd5e305,0x3b81e29d,0x3b130766,0x3ae94d96,0x3b37e92d, +0x3b6e61f7,0x3b2f1b8c,0x3b76118c,0x3b798849,0x3b70de11,0x3a674613,0xbaf9f17e,0xbb8bc44a,0xbb9caae3,0xbb04f8ac,0x3bbe6274,0x3b3de5d6,0x3b298957,0x3b2691f8,0xbab919fc,0xbb377807,0xbb3bcde1,0x39964390,0x3bae2c48,0x3c2e6aa8,0x3bee119c,0x3bc6b75e,0x3b8e6c8b,0x3bdf6a37,0x3c0c8caf, +0x3bb5796f,0x3c2057eb,0x3c446840,0x3c457070,0x3c93936b,0x3c8b729b,0x3c252cae,0x3bc1be6f,0x3af6ca95,0x3a0c36cd,0x3b532c46,0x3b8826c3,0x3b4602e1,0x3b98543a,0x3ba0d000,0x3bafe1f6,0x3a237c57,0xbb5e489a,0xbc1519bb,0xbc227f9d,0xbbe5f1b8,0x3c02f4a5,0x3ac2e50c,0x3aef5292,0x3b78bf23, +0xbb773a25,0xbbc3050b,0xbbe83baf,0xba4a8cb2,0x3b3b83c0,0x3be95454,0x389d46a9,0x3b881329,0x3bf238c5,0x3c2cf319,0x3c1932e6,0x3b6d335e,0x3c1a837e,0x3c3ce07d,0x3c438d3b,0x3cc19da0,0x3ca4806c,0x3c010661,0x3be0a0ce,0x3bbfd701,0x3bdd2030,0x3b7c2b3c,0x3b36785a,0x3a046f62,0x3b7273ac, +0x3b9acaa0,0x3b9f439b,0xbb71d8d5,0xbc68687e,0xbcab373b,0xbca79879,0xbc019181,0x3c848c13,0x3bb809dd,0x3b7ea626,0x3b3a085a,0xbc56e58a,0xbc98b553,0xbc6c1083,0xbb6f53c6,0x3c1aa1e6,0x3cdfe640,0x3cc8e7e2,0x3c2252e4,0xbc8dd9aa,0xbbd97c83,0x3b79a81b,0x3bf353ec,0x3cc7f88e,0x3cf94ccc, +0x3cb87662,0x3bb72b85,0x3ba2a46f,0x3c98f241,0x3c0bc92a,0x3bdd22a6,0x3c1fc503,0x3c28fe0c,0x3c3e0335,0x3c3e1ca0,0x3c54ff7e,0x3c5cf51c,0x3c86ff4e,0x3c96a033,0x3cba106c,0x3d0683c7,0xbbd10d71,0xbccfbdb5,0xbcce940b,0xbc5a773e,0x3ac94174,0x3ba9a6d8,0x3cfe9183,0x3cfc559d,0x3c08df7c, +0x3b0f1b6c,0x3b6f402e,0xbd4b87c7,0xbd102396,0xbc086a15,0x3c92a0e9,0x3c509d6f,0x3c3573cd,0x3c776c64,0x3bbd8b7a,0x3b958a82,0x3c93a317,0x3ca9521a,0x3c8d1010,0x3c0e2f46,0x3c73f2c9,0x3c651ac5,0x3bb7c376,0x3b5fda47,0x3b59716c,0x3be0ae08,0x3bbd5a60,0x3c276ee0,0x3cad5d9f,0x3cae2862, +0x3c97cfa3,0x3c661f56,0x3bb3fefa,0x3ba0d115,0x3c368129,0x3c8b734b,0x3c0d18fc,0xbc534f07,0xbbb7dc25,0xbb9a56d5,0xbc21b056,0x3c77cf88,0x3ce24892,0x3c150631,0x3c023540,0x3c04ff98,0x3c1efb29,0x3c875c6f,0x3c4df722,0xba93ed4a,0x3bcb6a65,0x3bf40d88,0x3bb40412,0x3ba5b676,0x3bdcf893, +0x3c37b32c,0x3adbbded,0xbbc0d417,0xbb4d3e18,0xbb8e367c,0xbbb9fb1c,0xbb976dba,0xbbc50df4,0xbb073717,0x3c15f32f,0xbb78366c,0xbb80a472,0x3ad649f4,0x3bef4024,0x3c126434,0x3c69145b,0xb9bc6b7a,0xbc1fa275,0xbc398aab,0xbc2f6d9f,0x3af20464,0x3c9dad51,0x3cd4e9a9,0x3c2b891d,0x3c2ccdf2, +0x3b8d984a,0xbad6145d,0xbc165abd,0xbba37f41,0xbbbcc06a,0xbbe40910,0x3b4f8785,0x3bacd86f,0x3b5a3628,0x3c0424cf,0x3bf81cf4,0x3b528aaa,0x3ae3685c,0x3abfdc4a,0x3b057f98,0xbada431b,0x3a2d4f93,0x3bffca31,0x3c34a2c5,0x3c34ccca,0x3c321996,0x3b03f8ba,0xbb0537cd,0xbba25a4e,0xbc12eb43, +0xbc114fc2,0x3b0bb757,0xb9815729,0x3bf24533,0x3cc0ca7b,0x3ca87a9f,0x3c875bb6,0x3c3f6de7,0x3c47d297,0xbc51a12c,0xbc52d433,0xbcca9482,0xbcff7475,0xbd032458,0xbd161843,0xbcf9a101,0xbcab1297,0xbc4e3db7,0xbbbd7def,0xbb63972c,0xbb5d9c91,0xbb625b24,0xbbbfd891,0x39230864,0x3b125506, +0x3a0aacbe,0x38101cf9,0x39b7bf5b,0x3b48ddf9,0xbac32a27,0xbad5d61c,0x38fdbc51,0x3b4b57c9,0x3b75cf12,0x3a9f1705,0xbb312ba9,0xbbec19f2,0xbbf432be,0xbc9d865f,0xbcb9e2b9,0xbc8fb42e,0xbbf0e548,0x3a73d909,0x3baffdf3,0xbbd302be,0xbc8e5547,0xbc902771,0xbc90f895,0xbc892870,0xbc703c5b, +0xbcbc593c,0xbce73ae0,0xbcec7cb6,0xbcd47dc0,0xbcbc8dcd,0xbca4629e,0xbcab6f74,0xbc8378e9,0xbbcc79f9,0x3a23cd45,0x3b9d7df6,0x3ba64057,0x3bdef79d,0x3bec73bb,0x3be3d143,0x3b2d2d34,0x3af9a6b3,0x3b2c2124,0x3bc7552e,0x3b8cc8c6,0xb7be22f9,0xbb7d1d4c,0xbbdeba3d,0xbc16277b,0xbc380597, +0xbc57f194,0xbc8d3b61,0xbcafafc4,0xbcd57ef7,0xbcead215,0xbcb34536,0xbcdee2b8,0xbcf2c867,0xbceef94a,0xbcd988ad,0xbcca8ade,0xbca352b8,0xbc655055,0xbc0ea109,0xbc0f2254,0xbc3309ea,0xbc1cb0e9,0xbbedc45f,0xb9d91655,0x3b029a7c,0x3b1f1781,0x3b407b90,0x3bac8add,0x3bc86259,0x3bf31f29, +0x3c0a9502,0x3c055472,0x3c0ac35a,0x3c06360a,0x3c144b6e,0x3c28b2c8,0x3c533edf,0x3bef9f89,0x3ad7b738,0xbba1e44e,0xbc048e57,0xbc3c993e,0xbc65e788,0xbc926dcd,0xbcacb222,0xbcd11fc0,0xbcdaa7d3,0xbc8e5b54,0xbca46b1e,0xbc8d1730,0xbc814d99,0xbc61c14c,0xbc48bbc0,0xbc423187,0xbc23ffe4, +0xbc1b9a3b,0xbbf7c082,0xbbb7869d,0xbb965402,0xbb632faf,0xba805e9e,0xba055571,0x399c9208,0x39f18fb4,0x3a4c47a7,0xb811252c,0x3b6e4429,0x3b8a6b6b,0x3b8bb042,0x3b97cd53,0x3baf8849,0x3bba2d5e,0x3bdab5ad,0x3b8994f2,0x3b480341,0x3ae36438,0x395d35d8,0xbad327f9,0xbb5e0560,0xbbda3b6d, +0xbc1be86b,0xbc42528c,0xbc715939,0xbbb507c4,0xbbeded8b,0xbba9afa3,0xbb9bc020,0xbb72c65d,0xbb96bc81,0xbb5ea107,0xbb005719,0xba70a767,0xb7bf4ca7,0x3a001f7d,0x3aaeb1ad,0x3add7e24,0x3b0d9009,0x3a47fde4,0x3a3e9242,0x3a5e888c,0x3aa87a30,0x3abcb070,0x3b21f856,0x3b0b34d8,0x3b2306c5, +0x3b31d47c,0x3b3662cf,0x3b3824a7,0x3b502ee8,0x3b18a250,0x3ad0b2a2,0x3a47273d,0xb8a60ffe,0xba5cd156,0xbab970e4,0xbb0d3f98,0xbb3e3a9d,0xbb7aa308,0xbb99fc4d,0x3a20d630,0xb8f7bb9f,0x3997f5bc,0x3b272a61,0x3b0bb904,0x3b04dccd,0x3ad94000,0x3ab1104b,0x3b01a5a9,0x3ab82ccb,0x3b33c52e, +0x3b46ba3e,0x3b3cb823,0x3b7491e5,0x3b6a0beb,0x3b4e0234,0x3a4ae6bc,0xba0a0545,0xb63aa3ee,0x39718859,0x39de7491,0x3996cea1,0x3a7f9d69,0x3a3c9156,0x393749fb,0xbab1eb23,0xbb1bb1c9,0xbb719f29,0xbb3c9ad2,0xbb0dd0ff,0xb8c8162b,0xba5fd337,0xba3264f4,0x39bf4fe6,0xbac63c4a,0xbafbe28a, +0xbaed334c,0xba78e3ec,0xb9bd9207,0x3b87223a,0x3b384d0b,0x3b1b6532,0x3ad660c9,0x3ba5a5d1,0x3b957e79,0x3a5397f8,0x3b74b749,0x3b9f3fed,0x3bab62f8,0x3be09c04,0x3bd0ab9e,0x3bafb13a,0x3a6f3e31,0xbac9ae9f,0xbb3a48d6,0xbaa05607,0x3a53ed62,0x3a79e8c2,0x3b3d82a6,0x3b146646,0xb9509a6b, +0xbb9ad757,0xbc003b05,0xbc1d863a,0xbc000a11,0xbb9af540,0x39c4678a,0xba85df2e,0xba8ee410,0x387c5ea2,0xbba04637,0xbbc66571,0xbb9ba29b,0xbb356e8c,0x3b255ba7,0x3c69614c,0x3c24eeb5,0x3bf7d141,0x3b5a01d5,0x3bfc1b98,0x3c150634,0x3b45b01a,0x3c1fa409,0x3c3a7bf3,0x3c3780c0,0x3c75937a, +0x3c654694,0x3c21dff6,0x3b2e047c,0xbb1e451f,0xbba9fb7d,0xba9f4e6d,0x3ac0fb8f,0x3b31629c,0x3bcabd12,0x3ba2d7ad,0x3a5f33a3,0xbbf0967f,0xbc5717c1,0xbc94301f,0xbc72b10f,0xbc2ce8a0,0xba03549b,0xbb48ce33,0xbb251e92,0x3b158160,0xbc0ef191,0xbc2b39b1,0xbbfc8181,0xbb92d9f2,0x3ac4d423, +0x3c662452,0x3bb528ff,0x3bb2db5b,0x3bb20587,0x3c869525,0x3c6e6274,0x3b932fe8,0x3c378737,0x3c4df5ad,0x3c6c993c,0x3cd41070,0x3cc0420c,0x3c588290,0x3bc31755,0xb9f99652,0xbbb723ca,0xbb4da6b8,0x3a30a6c4,0x3b17b3c7,0x3c0b6f60,0x3be1c08c,0xba7f8835,0xbc7b7b28,0xbcd72509,0xbcef7ed6, +0xbcb73190,0xbc149041,0x3ba9e844,0xba7f6591,0xbaed6d08,0x3b00d367,0xbc88ed3f,0xbca9d550,0xbc420cc5,0xbbca3fba,0x3bc1156c,0x3cf82a94,0x3d23a82a,0x3ce2d629,0xbb5b5dce,0xbc5670ad,0xbbd6fa28,0x3bdaf49d,0x3c53bb09,0x3cc5e31e,0x3d101469,0x3c1c7d14,0x3b0ff649,0x3c4c37ec,0x3b92890a, +0x3bde5975,0x3c4b00b4,0x3c71f327,0x3c7fb8ee,0x3c43bab2,0x3c2d4acd,0x3c39d46b,0x3c561489,0x3c84dcf2,0x3c7b618b,0x3c2a731b,0xbca164e1,0xbd0da4c8,0xbd13b45d,0xbc3c215c,0x3b44aada,0xbc1a328b,0x3cadd9ae,0x3ca32174,0xbc2852c8,0xbb993307,0xbb572bfc,0xbd0595db,0xbd919dd4,0xbd3f3c9b, +0x3d172ef7,0x3c8a78f9,0x3c2a8741,0x3c5f1744,0x3c01f82e,0x3bd0ad60,0x3c5406f9,0x3cb413c8,0x3ca18d97,0x3be34330,0x3c079013,0x3bb639ee,0x3b9df6bd,0x3b229ea0,0x3b17b8c2,0x3bae6b94,0x3a625724,0x3bb5c7fb,0x3c84faa8,0x3c9b665b,0x3c6c1a06,0x3bcd9345,0x3acb6098,0x3bb62af1,0x3cab75a5, +0xbac108a2,0xbc3c6aef,0xbc84e9fd,0x3b5cb264,0x3c182701,0x3a5214ef,0x3c3ed3e7,0x3d1ec5e8,0x3d2b0b6e,0x3d1f2b2d,0x3d00ffad,0x3c8dd820,0x3c7c1637,0x3c57df7a,0x3b181bfc,0x3c070c31,0x3c182516,0x3b8e00d0,0x3baa5ec3,0x3bcbe611,0x3c281c94,0x3b772575,0xbb39d039,0x3aa3040d,0xba8a2de5, +0xbb40fbe9,0xbb65761b,0xbbcba778,0xbb84a728,0xb986e1aa,0x3ade8338,0x3bdbc52a,0x3c15914a,0x3be59edc,0x3a17595e,0x3bf90fdc,0xbc9450f1,0xbcc0c296,0xbc4e0938,0xbb759c7b,0x3c36d0d0,0x3ca821b5,0x3cf30531,0xba76d12b,0xbc24d807,0xbc5dfadf,0xbc3b7f04,0xbbff618a,0xbb20e08c,0xbb7ac7f0, +0xbb6b3b78,0x3b665bde,0x3bd90586,0x3ba83fe1,0x3c18d9c0,0x3bdeb97c,0xb9fbb039,0xbad8093c,0xbb08cd30,0x3981816b,0xba95fedd,0x3a88b9b3,0x3be069ac,0x3c0c8f30,0x3c237070,0x3c1d7b5e,0x3be222ed,0x3b5224ec,0xbbba7a29,0xbc213b30,0xbb855e4c,0x3c89e44c,0x3c099178,0x3c955fd5,0x3d1a3ab1, +0x3d0539fb,0x3ccedb58,0x3c4d78e0,0x3c02589b,0xbb81be12,0xbbd266e6,0xbc7169a5,0xbc997a27,0xbc954b1e,0xbcab7723,0xbc8dc8e9,0xbc606610,0xbc32b0b7,0xbbf5f7ed,0xbc06dd45,0xbbeb4c4c,0xbbd91ef7,0xbc184677,0xbabe4d89,0x39a53db2,0x39eca379,0x398ae772,0x3a2ac9c3,0x3b11cedd,0x3aaf0fb7, +0xb884a8fd,0xbab867d9,0xb9332b75,0x3a5d7049,0x3b548b0a,0x3b00e953,0xb9379ece,0xbb8d00bc,0xbc26c36f,0xbc82a643,0xbcd56804,0xbc4d55db,0xbb57a02a,0x3a416007,0xbae92fc7,0xbc2356e2,0xbc312e4e,0xbc35ebb9,0xbc801dce,0xbcdb9f1f,0xbcfde0f5,0xbd0926a5,0xbd052464,0xbce23e58,0xbcbd4ebe, +0xbca34c0a,0xbca0943b,0xbc8d1d8a,0xbc574ffc,0xbb9b34b6,0x3a84984a,0x3bd89f7d,0x3ba0d821,0x3b89d457,0x3b64a8d7,0x3aa1046b,0xb9bb0c78,0xbb3365bb,0x39b7a99e,0x3b225fee,0x3b94ba54,0xb8791823,0xbb4fe028,0xbbcb986e,0xbb9bdc8d,0xbb57eb6f,0xbb91898a,0xbbc31ef7,0xbc0e707f,0xbc0da326, +0xbc27578b,0xbc62f419,0xbc64d1df,0xbc726139,0xbc4cb112,0xbc2c9176,0xbc316dc1,0xbc3d69e3,0xbc3e9d37,0xbc72a383,0xbc9d57a5,0xbcb1e64b,0xbc9b8c20,0xbc5787f4,0xbc41c7ab,0xbb898e40,0x3a5c8500,0x3c10ce11,0x3be67247,0x3bcbc7b7,0x3bbcc642,0x3b823595,0x3b3f57a2,0x3a98d278,0x3b21b18b, +0x3b5bc475,0x3bb07689,0x3a220a38,0xbb3d922f,0xbbd42a0e,0xbc31bb6a,0xbc80051a,0xbc9f93a2,0xbc9b5cda,0xbc91a93d,0xbc8ccafc,0xbc811cd9,0xbc86f4e5,0xbc9eaeea,0xbcac2f03,0xbca1e9ff,0xbca35d32,0xbc9e4cd4,0xbc9a030f,0xbc92ef08,0xbc83043e,0xbc5bcde1,0xbc373170,0xbc26e905,0xbc13e2cb, +0xbbfb4a11,0xbba2f54a,0xbb634a78,0xba9537bc,0x3a8a3912,0x3baa9a8b,0x3bbe5ef0,0x3badec6b,0x3bb36c92,0x3bad53c8,0x3ba918a1,0x3b95a987,0x3b9247c1,0x3b34ae6b,0x3ae89680,0x3a5be85c,0x391f7178,0xb96ecbca,0xbaa528ac,0xbb85b083,0xbbf66ee8,0xbc2ea78a,0xbc609a86,0xbc00231e,0xbc10d71e, +0xbc06efc1,0xbc03b1b0,0xbbf446cc,0xbbfdef8d,0xbbed6137,0xbbd10f45,0xbbb86e26,0xbba5e741,0xbb925d97,0xbb7554b9,0xbb52aa93,0xbb34240d,0xbb4fda25,0xbb52ddc7,0xba6b713a,0xba86961e,0xba396de8,0xba61af93,0xba585d0b,0xba7488d6,0xba7f99c2,0xba905604,0xba952a15,0xba8907cc,0xbacbb3d4, +0xbb068cbb,0xbb2d2f2d,0xbb540c0d,0xbb7e2715,0xbb850b9f,0xbba4eb76,0xbbb6c3eb,0xbbca7bb5,0xbbe41240,0xbb8095b3,0xbb0c8f28,0xbaec461f,0x39985b5a,0xb8774fd1,0xb9605a33,0xbab502b1,0xba411ebd,0xb95e52cc,0xbab31bed,0x39f769d8,0x3a4386bd,0x39c6094d,0x3a19d6db,0x39b34083,0x3a33f001, +0xbae33c40,0xbb2c47ee,0xbb1dbf5b,0xbb0d064a,0xbaef447f,0xbab36f9a,0xba7f341e,0xbaafede8,0xbb1d7e31,0xbb6431d8,0xbb866116,0xbb9c1658,0xbb5feeac,0xbb3da756,0xbb13c129,0xbb27b5ef,0xbb1f7747,0xbaa5549e,0xbb5ea0c4,0xbb775f33,0xbb5035c5,0xbb3be8cc,0xbb3221d4,0x3ace317b,0x3aa695ee, +0xb8f6efd3,0xbb381256,0x3b308995,0x3b4bba50,0xbaae4a15,0x3b1d041f,0x3b5054be,0x3b6371b0,0x3b49b53a,0x3b287dcd,0x3b77a951,0xbb005729,0xbb8b4e95,0xbb9f1aad,0xbb82d0f9,0xbb04aa77,0xba518123,0x3a23bac3,0xba0cf8b0,0xbb88a7b0,0xbbf1b202,0xbc1111c3,0xbc14a44d,0xbba1435f,0xbb208b0c, +0xbae4a9f9,0xbb2e9965,0xbb517aac,0xbab31366,0xbbd2a31c,0xbbf264b3,0xbbb49ff0,0xbb9cdb7d,0xbad05a61,0x3c23db4b,0x3bfecf79,0x3bac3089,0xbad2924f,0x3bbd605e,0x3beed6b7,0xb984e8ca,0x3c13b7f6,0x3c2c436d,0x3c12526d,0x3c137f74,0x3bfa86c5,0x3c071aa3,0xbac2427c,0xbbbbc4f3,0xbbd602a2, +0xbb9a4431,0xbad9a34d,0x3ab818ba,0x3b865876,0x3aeb4ca4,0xbb9ee383,0xbc364407,0xbc6f3ec4,0xbc841bc1,0xbc1403c0,0xbbb25c9c,0xbb4e49c3,0xbb7cb5ae,0xbb9339b1,0x3a86abb8,0xbc2bab8d,0xbc467df8,0xbbea050e,0xbbeaa89f,0xbb60942e,0x3c18fe30,0x3b9d0b4a,0x3aaab52e,0xbb3ca960,0x3c85333d, +0x3c8c86a6,0x3b943ef0,0x3c4ff7d3,0x3c5c50f1,0x3c640dd0,0x3cbb1775,0x3cabfb61,0x3c682e7d,0x3ae77e45,0xbbc90aaf,0xbc1a2cd4,0xbc008e58,0xbb58b13e,0x3adb11ce,0x3bda630c,0x3b35fa93,0xbc18a323,0xbca4177b,0xbccc1ad3,0xbcba23de,0xbc0fd52f,0x3aca6d97,0x3b323f06,0xbb1753be,0xbb97bdaf, +0x3a9fdd2e,0xbc829718,0xbc94e779,0xbc12fcb2,0xbc0230ad,0x3b64889f,0x3cd85aef,0x3d33df8c,0x3d17a031,0x3bd898ab,0xbc9dc0fb,0xbca3d59f,0xba1b9c08,0x3b46826d,0x3c7dbb26,0x3d1a2908,0x3c243c47,0xb9ef1694,0x3bc221d8,0x3b220048,0x3bc9b87b,0x3c08ac3f,0x3c3f75b8,0x3c5455e3,0x3c32a229, +0x3c18cf1f,0x3c10b1a7,0x3beeb16a,0x3c4486c3,0x3bd86567,0xbc128739,0xbcbc3f84,0xbcfc5a06,0xbcfca7ef,0xbbcd976c,0x3b50007e,0xbc5c8407,0x3c004f90,0x3b1ed34d,0xbcd1758c,0xbc453051,0xbcb6b794,0xbd0601f2,0xbd8f115b,0xbd5426f0,0x3cb6a1a0,0x3cb416ba,0x3c8c9611,0x3c285406,0x3be07e43, +0x3bd55b09,0x3bef84a9,0x3c978371,0x3c9adf87,0x3c0d8cf6,0x3bad1ba7,0x3b09a236,0x3bc1b839,0x3bba8726,0x3b86940e,0x3aa4d5c6,0xbacadaad,0x3a91dc86,0x3bac4644,0x3c3fcd1f,0x3c1ab763,0x3b7a9574,0xb969ae2f,0x3bb00aa7,0x3cc310f5,0xbc42f707,0xbca83f56,0xbc5087b4,0x3ba3073b,0x3c63b6d3, +0x3c863c53,0x3a0f891e,0x3d1ab3e9,0x3d53d956,0x3d539f0d,0x3d24983a,0x3c75b8e1,0x3bd177c4,0x3c271cb6,0x3c6181ed,0x3c4d0aeb,0x3c278f3f,0x3b81c0d1,0x3b718404,0x3b726f5c,0x3bd75202,0x3bb92855,0x3ad28330,0x3ab9c8aa,0xba76719b,0xbb8354fd,0xbbaffc61,0xbb72edd0,0xbb429870,0xbb80a6bc, +0x3c0fcca0,0x3c7fe461,0x3c8f8211,0x3c3ec650,0x3a681b57,0xbbf5a832,0xbc939e6d,0xbc90b7e6,0xbc9b6bf9,0x3cb7ebe6,0x3d036910,0x3c3f3fda,0x3cd3ec8b,0xbc5da93e,0xbca34b0e,0xbcd468a1,0xbc8cc7fd,0xbb028a3c,0xba2e518f,0xbb285323,0x37d2e973,0xb99dbfac,0x3afb711d,0x3b472b64,0x3b6580ce, +0x3aa10370,0xbb186dfd,0xbb616986,0xbba813d2,0xbb96bb68,0xba4f6383,0x3ac82753,0x3b0cec81,0x3ae16531,0x3b9df199,0x3bdee949,0x3c12aa63,0x3bc57aef,0x3a57bd34,0x35f680a0,0x3bf598e8,0x3c91a8c5,0x3cba4b95,0x3cdbe279,0x3ca0a44f,0x3cba9cac,0x3c8b797a,0x3c114613,0xbad401ac,0x3ad9e6ab, +0x3c13bdf4,0x395c3f6d,0xbb5068b5,0xbb937149,0xbb9b71c3,0xbb3f6bbc,0xbb61aea2,0xbb9ad229,0xbb956d11,0xbbf64bba,0xbc22eef7,0xbc1f5ea5,0xbbf322d7,0xbba954c4,0xbb17e6a0,0x3b514ebd,0x39afd71e,0x396482b8,0x3ac392ca,0x3ba3766a,0x3bb44748,0x3b56a894,0x3b2f94b6,0x3b0ad838,0x3b1e8403, +0x3b3fc87a,0x399e4077,0xbbb893e2,0xbb7b49f0,0xbb61de6b,0xbbdf4bcb,0xbb9da8ec,0xbb8ac29a,0xbac0f5df,0xbb3df7bb,0xbb935423,0xbc06dee3,0xbc4b30ab,0xbc958775,0xbcf7a6b4,0xbd08d643,0xbd097746,0xbcf7632d,0xbcd84cfc,0xbcb9e78e,0xbca107de,0xbc85e106,0xbc6cf6ef,0xbc68d736,0xbc1f20fb, +0xbbac2cbb,0x3af8627d,0x3b73a691,0x3ba1f1b4,0x3b653690,0x3b4585db,0x3abaa0de,0xb9d9d314,0xba9d68bc,0x39c50b27,0x3bcf4c64,0x3b913c21,0x3b21fa1d,0x3918a1d6,0xbb39d7ee,0xbb3a559e,0x3b07b16e,0x3a9126c0,0x399e790f,0x38c98bb1,0xbad4adb4,0xbb8f3bb0,0xbb839fb1,0xbbc8c47f,0xbbbf4db3, +0xbb9e9785,0xbc148c4c,0xbc675aa6,0xbc9b64d3,0xbca8f63a,0xbcb5aa79,0xbcc80885,0xbcbb10f6,0xbcaecb95,0xbca8650f,0xbc3d115c,0xbb8b5abb,0x3b844962,0x3b4a39da,0x3b60a4a5,0x3b8cd210,0x3b2edc36,0x3adbed0c,0x3a2b2774,0xb9b9f451,0xbaff2fb4,0xbb667bda,0xbb841461,0xbb7a7e23,0xbb60698e, +0xbbc1f7d8,0xbc0b99a3,0xbc396d31,0xbc1e7c8c,0xbbfa6498,0xbbc9b063,0xbbb87612,0xbc1a6c35,0xbc238a8b,0xbc56a32e,0xbc49b794,0xbc647d53,0xbc613a84,0xbc50a5a5,0xbc587d5d,0xbc371592,0xbc2be519,0xbc1d85d0,0xbc144978,0xbc0b1d03,0xbc0d6a79,0xbbfefd6a,0xbc05cb27,0xbbf56a83,0xbbd4f828, +0xbb87f940,0xbb9a065b,0xbb9a674b,0xbb8f1a37,0xbb8bde3b,0xbb853501,0xbb738031,0xbb67df72,0xbb7887b4,0xbb90fbb3,0xbb9e1677,0xbba063d6,0xbb9bae3a,0xbbae66fa,0xbbbe4dae,0xbbe9f07e,0xbc04a8e9,0xbc1024ac,0xbc037b83,0xbc01d5b5,0xbc03b589,0xbc02e40e,0xbc029454,0xbc002236,0xbc00aea7, +0xbc050839,0xbc05b72d,0xbc02e678,0xbbfad528,0xbbf62841,0xbbec055c,0xbbdf6bea,0xbbe79233,0xbbed7e85,0xbbabb4f5,0xbbbbaf6e,0xbbbc8582,0xbbc958e6,0xbbc00ee9,0xbbc28000,0xbbc15ecb,0xbbc18ffd,0xbbc2503f,0xbbbdd148,0xbbcab6aa,0xbbd17702,0xbbda4454,0xbbe44171,0xbbecc9a6,0xbbec9591, +0xbbf589b2,0xbbf5ca94,0xbbf74de8,0xbbfc72d1,0xbc0eeb32,0xbb22ac7a,0xbb1d110d,0xba8fff3c,0xba7f540a,0xba96e82c,0xbb4e1bf7,0xbac3ad04,0xbaa8ac66,0xbb1b83ab,0xba3ef522,0xb9e164c4,0xb9ed01ad,0xbab18067,0xbad228dc,0xb9c8b4f8,0xbb258d84,0xbb4be2a0,0xbb64ce6c,0xbb418306,0xbb272053, +0xbae3792b,0xbb02c15f,0xbb19e712,0xbb4d0c16,0xbb77cac3,0xbb7dbcd8,0xbb7caceb,0xbb0f714e,0xbaed74f1,0xbb0bdd98,0xbb2311af,0xbb283b45,0xbaed1559,0xbb5e78de,0xbb733084,0xbb4e1279,0xbb49b3e1,0xbb5d4ad8,0xba794988,0xb97e1e0a,0xbab26d94,0xbbaf85a1,0x3a2afc30,0x3b015717,0xba78358b, +0x3b079093,0x3b25b7fc,0x3b5f582e,0x3a26c379,0x3803dc81,0x3b443109,0xbb44ff82,0xbba15e07,0xbbbb68b6,0xbb94a929,0xbb483e6e,0xbaacf21b,0xbae29bb5,0xbb4ce355,0xbbb4308d,0xbbf96f20,0xbbf29eff,0xbbc740ab,0xb9ccaec5,0x3abe5f20,0xba4b6ca8,0xbb1d6de9,0xbb7a3e84,0xbb28fe53,0xbbc088d8, +0xbbcb0186,0xbb9bdf7d,0xbb9a4360,0xbb607275,0x3b7360e4,0x3ba63836,0x3b7b7433,0xbbbade97,0x3b4722bd,0x3b94e5a0,0xba409e49,0x3c044e5c,0x3c20179f,0x3c11f398,0x3b8ba2df,0x3b12d549,0x3c01b37f,0xbb6ab889,0xbbd4e215,0xbbed9f4b,0xbbb85812,0xbb4594b3,0x39c0b6ac,0xb9771562,0xbb3d225a, +0xbbeed0c1,0xbc3fa538,0xbc42958d,0xbc2cba55,0xba36037f,0x3b14da22,0xba2cfc72,0xbb0a7fbe,0xbb8c4575,0xba84b921,0xbc1276b6,0xbc263cf9,0xbbc99e32,0xbbeaf9c6,0xbbad37b7,0x3b03927b,0x3b1c29d5,0xbb15a78f,0xbc31b26c,0x3c35b29f,0x3c88c943,0x3bc28ffd,0x3c6f838f,0x3c804e82,0x3c6e3c4d, +0x3c8113bf,0x3c69cbc9,0x3c64b82a,0xbb1ef6e1,0xbc0c9d12,0xbc196f93,0xbbf94c6e,0xbb81f7c4,0x3aedf2b9,0x3a189a6e,0xbb939b91,0xbc54c687,0xbca3739e,0xbc9bfb4d,0xbc59e121,0x3bcaa3b4,0x3c643e50,0x3bbb1771,0xba6cf2b1,0xbbd01c8d,0xbb712cb2,0xbc532b9a,0xbc4526f9,0xbbd70be2,0xbbf4dc27, +0x38b15259,0x3c818dae,0x3d1c0004,0x3d1a2f58,0x3c651458,0xbc976d84,0xbcdfc30a,0xbc284e7c,0xbaf18b15,0x3c0b647a,0x3cd1bb16,0x3c19b3bf,0x3a3073f8,0xb9a06203,0x3b4cc4e9,0x3bd91568,0x3b12d5cd,0x3bb26673,0x3be82730,0x3c03f910,0x3b8d0659,0x3b86d650,0x3b8615bc,0x3bd78cfa,0xb7916ba7, +0xbc73b1c6,0xbcbc16b1,0xbcd2f30f,0xbc8f4edd,0x39a7b8d2,0x3bcc57a0,0xbb0111f5,0xb9306223,0xbc2cd10e,0xbcd3a655,0xbc6dfabf,0xbcdff56b,0xbd08dab8,0xbd6aca35,0xbd44cf86,0xbc3264c2,0x3caeb39a,0x3cdc56fd,0x3c714659,0x3b8ade1c,0x3b13c873,0x3b23ef11,0x3c44844c,0x3c734b07,0x3c31cd6a, +0x3ba7c52a,0x3ac6061e,0x3bacbb0d,0x3bcb26b4,0x3b74c79d,0x3a423638,0xb9163bf4,0xb9e83cd7,0xbb1bf6ec,0x3b3a8af9,0x3b3ff4a7,0x3b040cdd,0xb9c20697,0x3bb08fff,0x3cadbb37,0xbc47d7c1,0xbc952b2b,0xba986261,0x3b248d97,0x3c7050e5,0x3d0a5e02,0xbb078519,0x3ccd15ad,0x3d428834,0x3d2b1642, +0x3cf84876,0x3b81d849,0xbc22b249,0xbada6d81,0x3c952a5a,0x3c70a135,0x3c347ba8,0x3b115c8f,0x3ae74916,0x3a85f48c,0x3aee8557,0x3be2dada,0x3bbd1727,0x39cb8022,0xbab02317,0xbb789b6e,0xbb58fff8,0xbb2b7dc6,0xbb1fdaf4,0xbaae4da4,0x3c37337b,0x3c8b8060,0x3c98cb79,0x3c76055c,0x3b7a637a, +0xbc66504d,0xbbe9cf42,0x39964eeb,0xba9deacd,0x3cc257d3,0x3c8e7252,0xbc3c4cb1,0x3b9a770d,0xbc9b3cfd,0xbcc24ed2,0xbccd1715,0xbc8994c1,0xbacd2947,0x39cf7ef7,0x394a9bc9,0x3a96c566,0xbb14a71d,0xbb14cc38,0xba040bbd,0xbb4fd666,0xbb8fa1f3,0xbb142683,0xbbc0d746,0xbc063718,0xbbf2b972, +0xbb35e02b,0xbafa4ec4,0xbb9b798d,0xbb30d623,0x3a4cf023,0x3b5b62a7,0x3bb71665,0x3ba31e96,0x3c194f29,0x3c3eaf5d,0x3c8a58c8,0x3c8af44e,0x3ce9f6bc,0x3cc0c4a5,0xb932a194,0x39c76fb8,0x39f04d7f,0x3b03d6d4,0xbc01de89,0x3c87f109,0x3c9aadfd,0x3c41a61e,0x3c0cb0c2,0x3c02d868,0x3bd051a7, +0x3b9d746b,0x3b42c062,0x39493c7a,0xb9ca8bd0,0xb9cc66f9,0xbbda63c7,0xbc0fcd40,0xbbd7bd2c,0xbbd944e5,0xbb60310a,0x3a719c2c,0x3a41a1f3,0x3acd8cb3,0x3ae0c161,0x3babb206,0x3bc4cfac,0x3ba5ccee,0x3b612e60,0x3adcaf6a,0xb9feae49,0xbb03c9f4,0xbb898895,0xbbe27e26,0x397d99a5,0x3bf27ba7, +0x3c91364e,0x3c2a228d,0x3bd174f8,0x3c1d95b4,0x3c4c872c,0xbc253e7f,0xbc3f5a23,0xbc9d64c4,0xbccca16b,0xbcfd422a,0xbd056bfd,0xbcf2fad9,0xbcb6f0a8,0xbcb1c0c2,0xbca0476b,0xbc86fad5,0xbc54521d,0xbc2faee3,0xbc29129d,0xbc31aed0,0xbc193e02,0xbbaeca4a,0x3b13aae6,0x3bb501b1,0x3b8f2e91, +0x3b936e2b,0x3b887ceb,0x3ba2c6f3,0x3a422527,0x3aa8a804,0x3b8666ce,0x3baf2752,0x3bc91ec2,0x3b8b40fb,0x3b4bad79,0x3a42d718,0x3885a88b,0xba09425b,0xbad019d1,0xbbbd535b,0xbbe05c4e,0x39db093d,0x39c26a01,0xbb21c408,0xbba258f9,0xbbd6b93f,0xbc29a042,0xbc7d08dd,0xbca9a58c,0xbcac1778, +0xbca8a45f,0xbcb61a24,0xbca1328f,0xbca019ab,0xbc8b8f22,0xbc47ba2d,0xbbdd5048,0xbb38973c,0xba8a5312,0x3a94c94e,0x3ba92c8c,0x3b9c497e,0x3b84e926,0x3b850f0c,0x3b35b031,0x3aa4c26b,0xba458edd,0x386c8268,0x3a6bed6d,0x3b02ec91,0x3abf33ff,0x3ac9f034,0x3a9ec8e3,0x3ad1b7dc,0x3ae00dbb, +0x3b0fcf14,0x3a9b2b37,0xbbcbb387,0xbbc81d28,0xbbf73c1d,0xbbdc1433,0xbbf1a4aa,0xbbf0390c,0xbbcdd512,0xbbc3b2a3,0xbbb21ed5,0xbbb57d25,0xbbbdadb1,0xbbb94039,0xbbc0ba63,0xbbdd1e49,0xbbe3f8b4,0xbbec5e80,0xbbd94eb0,0xbbb57dcc,0xbbb4ba75,0xbb66c87d,0xbb794021,0xbb69aea5,0xbb659724, +0xbb573993,0xbb3b4a57,0xbb2639ff,0xbb429ae5,0xbb775eff,0xbb8ed7ed,0xbba0427a,0xbbb55b41,0xbbceafe1,0xbbcf06c3,0xbbd24028,0xbbd39512,0xbbd040d6,0xbbaa58ed,0xbb9ab392,0xbbc72ec2,0xbbd9da5c,0xbbf765e4,0xbbbe7e78,0xbbe1c530,0xbbfcecc0,0xbc04c6e4,0xbc09284d,0xbc0a221e,0xbc1171a0, +0xbc134375,0xbc161eae,0xbbfdf4a3,0xbbd4a947,0xbc00beb5,0xbbde1cf7,0xbbc6b851,0xbb9b8a63,0xbba3ece2,0xbba102a7,0xbba0052f,0xbb9e8169,0xbb9e48da,0xbb987063,0xbba42828,0xbba8eb3d,0xbbb0b2bb,0xbbb77e13,0xbbbc6c6b,0xbbc3d795,0xbbbb8445,0xbbb69106,0xbbb23b6a,0xbbacbf13,0xbbe1e9aa, +0xbaf8492f,0xbafbed59,0xbaa629da,0xba6fd262,0xba810c37,0xbb35c044,0xba8dfc3c,0xba98faea,0xbad586ae,0xba491d4b,0xb9e6b3c9,0x39547b06,0xbac8241e,0xbaee0c8c,0xb9cddfd9,0xbb0688ef,0xbb25b35e,0xbb6782b3,0xbb38250b,0xbb1fbc43,0xbad0605f,0xbb08938f,0xbb1bcb8f,0xbb3c033e,0xbb4c4cae, +0xbb3d9335,0xbb1dce68,0xba7704b6,0xba18e4c9,0xba845156,0xbac3e11d,0xbaf3222f,0xbb06872b,0xbb2e8f0d,0xbb385d3e,0xbb17d38d,0xbb172c54,0xbb15e183,0xbaa32ed3,0xb988f314,0xba201b79,0xbb855017,0x39895b65,0x3adf7d2a,0x3a6967ab,0x3b07b054,0x3b1c1895,0x3b8b4ae0,0x38f48b9d,0xba1b83c2, +0x3b10672b,0xbb1f7339,0xbb87f8ce,0xbbc8c306,0xbb947ed3,0xbb5dee92,0xbafdd526,0xbb58d3b2,0xbb92d260,0xbbb90143,0xbbd7ae4e,0xbbac096f,0xbb335109,0x3b130e7f,0x3b62fea6,0x3a88ebf4,0xba92cda3,0xbb4e9fc4,0xbb7086a2,0xbb9dccff,0xbb90b034,0xbb45b0cc,0xbb4f47a1,0xbb1b0382,0x39d91a98, +0x3b58eb3d,0x3b6f16bb,0xbba41add,0x3b1ad4cc,0x3b56c627,0x3ac1abfe,0x3be8b8b6,0x3c0f34a4,0x3c33f999,0x3b35c815,0x39b82a67,0x3be95ac0,0xbb5568f5,0xbbb033b7,0xbc0c07a6,0xbbd1cfb8,0xbb8ca166,0xbaa19d18,0xbb80e190,0xbbc47ad3,0xbc06f559,0xbc294562,0xbc089336,0xbbaaa272,0x3b84cfe3, +0x3bd46809,0x3b2d7150,0x3a5d5ad7,0xbb33b9a6,0xbb8d81b1,0xbbede552,0xbbfd4ecd,0xbb872c87,0xbb9da5aa,0xbb1152c6,0xb98cad36,0x3b3dbe0a,0xba7325d5,0xbc3005b5,0x3bd9904b,0x3c6b6e31,0x3c100dd6,0x3c7ea152,0x3c94048a,0x3c91f55c,0x3c25e072,0x3c0dbe57,0x3c5ba680,0xbb7ab9a3,0xbc041e1b, +0xbc203760,0xbbf27c99,0xbb93877a,0xba448a0e,0xbbcb5b68,0xbc2ef052,0xbc733051,0xbc8d4aef,0xbc4d4f04,0xbb820898,0x3c65fc7c,0x3c94d587,0x3c0a448a,0x3ac21d12,0xbbc24dc1,0xbc196cde,0xbc350f5c,0xbbea6655,0xbb3a3aee,0xbb74d990,0xbb5b1b0b,0x3b610d81,0x3cc1a5cc,0x3cf6564e,0x3c98baf8, +0xbc2e90f8,0xbcc60d85,0xbc7082e0,0xbb586173,0x3b914e4c,0x3c1dd11a,0x3c3306c2,0x3bb1ea3d,0xbba1570c,0x3b98dbb6,0x3be38549,0xbb05a647,0xb95e8119,0x379a6c34,0x3afa3d48,0x3a0588da,0x3b035a26,0x3b4ef5e8,0x3b0b45a8,0xbb8260a3,0xbc6780f5,0xbcb96ca3,0xbca615d3,0x3a246b1f,0x3beb1786, +0x3c197c40,0x3c2544b5,0xbb85b6f4,0xbc8e09c4,0xbca34108,0xbc56af86,0xbcb2f166,0xbc9b36d8,0xbd208aec,0xbd21899b,0xbd07b6f2,0x3c545da2,0x3cf78beb,0x3ca85c2c,0x3b7451e7,0xbb2586e4,0xbb618cb4,0x3b9608b2,0x3c1d97cb,0x3c2f0a16,0x3bce3f79,0x3b18120d,0x3b823d57,0x3ae9127a,0xb6e6dbad, +0xb82d403b,0xbabb5f65,0xbb1de8ed,0xbba629f1,0xbba1e52a,0xbb667e07,0xbaeb4a73,0x3b8c85f8,0x3c02a330,0x3c2aba1b,0xbc3b1d12,0xbc588c6f,0x3c2e1531,0x3bafe150,0x3c9e005a,0x3d3ec50e,0x39bdb846,0x3c3553c3,0x3d41c467,0x3ca472c8,0x3bfb692b,0xbb8b4497,0xbc905215,0xbc2f83f2,0x3c1b48f6, +0x3c439e86,0x3c2aed8a,0x3a74f711,0xba13ba0b,0xbae2b6be,0x3944f72d,0x3bbca418,0x3be4aa42,0x3a4113bc,0x3a8717ee,0x39c4bf24,0x3a3631d4,0xbb1e3aad,0xbac7f4a7,0x3b7ef950,0x3c1df5bd,0x3c577394,0x3c606a41,0x3c2f5ea5,0x3b870e61,0xbba9be6f,0x392a9b78,0x3c4b0b5c,0x3d077693,0xbb3a8df4, +0xbcd69138,0xbd0db432,0xbc930ce8,0xbc932e72,0xbcce6ce8,0xbc7b833c,0xbbf9c79e,0xbb1cb3c1,0x3b31c9ba,0x3b82c063,0x3af25fe4,0xb8f47ff1,0xbb4d0085,0xbb10ed40,0xbbb3f4d2,0xbbc21260,0xbb1f185b,0xbbe2ff9d,0xbc0f6ae3,0xbc024ab7,0xbbd6bc30,0xbbe42211,0xbc096abd,0xbbdf039f,0xbba4a348, +0xbb00f01b,0xba10fad0,0x3b8e75a2,0x3c5c89dd,0x3ca4ceb7,0x3cb75b9d,0x3c8c5475,0x3cbe18f3,0x3c6c7868,0x3b0e9908,0xbc0027dd,0xbbf7657d,0xbbb8bd6c,0xbc1a2858,0x3cd7977a,0x3c9135f6,0x3c71ba05,0x3c30747b,0x3c26a0d2,0x3c053a28,0x3baad755,0x3b2c4a9e,0x3aaebb40,0x3ae64971,0x3b937a8e, +0x38e57dbc,0xbb7ed6b8,0xbbe2e669,0xbbd8a609,0xbb9ca9ed,0xbb6547d9,0xb5e13e3c,0x3b0f000e,0x3b1ccd50,0x3b906ef8,0x3b9abe62,0x3b7d3c6a,0x3b2c3f82,0x39877dab,0xbb82051a,0xbbbdcf55,0xbb8c2daa,0xb9ec1294,0x3c0ccd51,0x3c7efe59,0x3cc9275b,0x3ca34af5,0x3ca6ecdb,0x3cd484fe,0x3cea6779, +0xbc6cf5bd,0xbc680aae,0xbcb7a4c4,0xbcd909a7,0xbcddd06c,0xbcc204e9,0xbc9be954,0xbc676c9d,0xbc7436c3,0xbc6880a1,0xbc3ee3d1,0xbc2b10e3,0xbc0b57b7,0xbbffad1f,0xbc1cf383,0xbc1d017b,0xbc14c89a,0xbb0ece9f,0x3afc6798,0x3b99d29b,0x3ba8c1c7,0x3bbda0e0,0x3bd57786,0x3b9dd7c3,0x3b818eba, +0x3b85d6b5,0x3bd58cc1,0x3bf65887,0x3bfad007,0x3bb6fe6a,0x3b662e82,0x3b13c671,0xba697adf,0xbb86dcf3,0xbc16c008,0xbc410eae,0xba15766e,0xba8e31bb,0xbb995e5e,0xbc07d888,0xbc504f28,0xbc6f6b3d,0xbc90b012,0xbca84f4f,0xbc9dbe93,0xbc8ed570,0xbc8ef295,0xbc621ee2,0xbc509102,0xbc146eae, +0xbc0df3a8,0xbbe4efb7,0xbbe37645,0xbb3bbc46,0x3aabd9bd,0x3bbe2a94,0x3bad9152,0x3bbaf3e1,0x3bcadfae,0x3bbd48a5,0x3bb45b16,0x3b9f8504,0x3badfbd8,0x3bbe08c9,0x3be197e6,0x3bdc26de,0x3bdea7d9,0x3bd5e362,0x3b96a2e7,0x3b3f2761,0x3aff34a3,0x3a6e3a24,0xbb4623ea,0xbb29d616,0xbb825b9f, +0xbb68d60f,0xbb81a4dd,0xbb8ad00e,0xbb88b367,0xbb8fc98b,0xbb87d988,0xbb8390fd,0xbb8bcf2e,0xbb8098d6,0xbb87c22e,0xbb93100e,0xbb9113d8,0xbb6f4eb9,0xbb3e26d8,0xbafefa45,0xbb0fc26c,0x384ccaf8,0xb9f80c0f,0xba2e35f9,0xba7dda1f,0xba99fdba,0xbaac1064,0xbab7345b,0xbaf00a45,0xbb24d9ca, +0xbb5b8b7e,0xbb84f16d,0xbb97b944,0xbba0ec79,0xbb8cf35c,0xbb715d2d,0xbb5eda65,0xbb55a974,0xb96d0ab7,0x39e169e7,0xba4da264,0xbac16d14,0xbb28f6f3,0xbacb2fc6,0xbb273b68,0xbb6617f4,0xbb66f46b,0xbb713bdb,0xbb6bf9ff,0xbb800bb3,0xbb7eb588,0xbb819201,0xbb247321,0xbacbaa8c,0xbb418833, +0xbaee26be,0xbaa93468,0xb9374bc1,0xba2357af,0xba2df680,0xba49cda0,0xba5a4e48,0xba74822e,0xba82182d,0xba9d7227,0xbaa69e55,0xbaaaa0a8,0xbaac9922,0xbabb1ca0,0xbaedbf80,0xbac17b6b,0xbaa89aa1,0xba7feaa3,0xba10ef2c,0xba175f18,0xba8d01c0,0xba82e59a,0xba540d15,0xb9f262c1,0xb9e5501f, +0xbac047ed,0xb9aac8f5,0xba19138d,0xba11c3be,0xba190e99,0xb99a648f,0x3a2d74c3,0xba7524d8,0xbaa2bb34,0xb9d738b1,0xba953120,0xbabd84a4,0xbb514a42,0xbb1542bf,0xbb04052c,0xbab57564,0xbaee270b,0xbb00c2ec,0xbb0df7f3,0xbb07022c,0xbad68685,0xba2f5e8c,0xb86c3feb,0x3942b03a,0xb91a9cb4, +0xb9e37a1c,0xba7511c0,0xbaed4364,0xbb04ff8b,0xbb087203,0xbac87192,0xbaa865ea,0x38ddd2ba,0x38db8575,0x3a87d706,0x3a9bfbd4,0xba6b90a8,0x3a864ef7,0x3b00a00d,0x3b2563b6,0x3aede24b,0x3af30732,0x3b8082b6,0x39ccc702,0xb9152f10,0x3a864a30,0xba7ea6a8,0xbb21b839,0xbbc21577,0xbb90a233, +0xbb819da6,0xbb45ee92,0xbb8d5663,0xbb9f7f20,0xbba33e88,0xbb99e338,0xbb2bf681,0x3a89d30f,0x3b67e5bb,0x3b790aac,0x3ae58b64,0x395c9eb7,0xbaebd08a,0xbb72a9f9,0xbb8bf2d5,0xbb615161,0xbab8bfbe,0xba493ee4,0x3997f481,0xb7278977,0x3b3af426,0x3b7ece9a,0xbab05820,0x3b59c326,0x3b517059, +0x3b8097cc,0x3badaaef,0x3bc9b789,0x3c316a25,0x3b38f49c,0x3a8274e4,0x3b9c0d47,0xba9ccfeb,0xbb3497fc,0xbc163ac4,0xbbdae7f4,0xbbb8f40d,0xbb7052fd,0xbbd37b8e,0xbbf30842,0xbbf91cce,0xbbf586fa,0xbb8a4049,0x3ac379d2,0x3bbdc9c2,0x3be5b0dd,0x3b656ab7,0x3b4e3714,0xba45cc5c,0xbbb8d876, +0xbbe686cd,0xbbe6ad61,0xbb3178dd,0xbae03730,0x3b8c9d5c,0x3b4357b2,0x3bd5f680,0x3b7d9d07,0xbb8fd448,0x3bbfe199,0x3c4cd439,0x3c454234,0x3c7b43f2,0x3c9a0602,0x3ca62a41,0x3bf6a653,0x3bc1f4ac,0x3c37a3c0,0xbaf7e90a,0xbbaa7a1c,0xbc3ddb0a,0xbc10adf7,0xbbf8d183,0xbbd18f3a,0xbc4709cc, +0xbc6afb4b,0xbc692ec9,0xbc4f120a,0xbba33709,0x3c023a96,0x3c8ec605,0x3c83d047,0x3bf04d2d,0x3b583b4b,0xbb57de38,0xbc3275e1,0xbc30e3c4,0xbbb50fc3,0x3a68e636,0x3b21dc68,0xbc076639,0xbc03358d,0x3ba60872,0x3c70b7f2,0x3c95c4e0,0xbafabd57,0xbc814734,0xbc6f7fac,0xbbd35f35,0x3a351759, +0x3965919c,0x3c671fe9,0x3c3d751e,0xbbc57b66,0x3b9cb451,0x3bbd215e,0xba4a231d,0xbb0ba12a,0xbb3a183c,0xba134a72,0x3ad33b65,0x3b773a0f,0x3b549dc6,0x3abe5358,0xbb9a382c,0xbc80023f,0xbcac9f2b,0xbc5ed882,0x3c5c9f58,0x3c30ec40,0x3c2535a4,0x3c4ed659,0xbc06f70b,0xbcaef3e8,0xbca2f875, +0xbc620a96,0xbc25dd65,0xbb054ad3,0xbc9696a6,0xbcdcfb16,0xbd0e13a0,0xb8929b4a,0x3ca78f1a,0x3ca06958,0x3bd424ec,0xbb18c408,0xbc08e5a5,0xbb0294c4,0x3b8f113f,0x3c053942,0x3bc6b637,0x3b1fe188,0x3b533d31,0xbb63144c,0xbbbadcd0,0xbbb72a27,0xbba0d2ca,0xbb8ed85a,0xbba3da6f,0xbc0c48be, +0xbbd5fc53,0xbb99d52e,0x3c552727,0x3c67d413,0x3aa0beb6,0xbc1fe13f,0xbc09f720,0x3c6a685c,0x3c5a00f0,0x3cd612c1,0x3d3929d4,0x3bcc5c80,0xbc1ba6d7,0x3d01715c,0xb7f11daf,0xbc37bd82,0xbb85a601,0xbc4544a3,0xbc144294,0xbb75bfee,0x3b6fa4b9,0x3bcf95db,0x3afe50e1,0xbb0ad6ca,0xbb620a0c, +0x39d6f551,0x3b2ffb2a,0x3ba91000,0x3b0fedb7,0x3b4c718b,0x3b732287,0x3b90ca34,0x3a7edde6,0x3b285204,0x3c114d00,0x3c1a7a29,0x3c26b5e1,0x3bfeb890,0x3b7f822c,0x3b40c2ef,0x3be4371b,0x3bb5a319,0x3c7466a7,0x3d2d6542,0xbcc4c540,0xbd512509,0xbd24d3d5,0xbd0298cf,0xbc25346b,0xbc90e538, +0xbbc150a1,0x3a1b800b,0x3aea99f3,0x3b111353,0x3b31e646,0x3a65f2b6,0x3a8ca4d8,0xbb631012,0xbb644f42,0xbb87ddf0,0xbb6ac697,0xbb404963,0xbba7eb88,0xbbda4bac,0xbc01915e,0xbc16c77d,0xbc22870a,0xbc0d6d36,0xbc1ee23e,0xbc174ee7,0xbbe3630b,0xbb6981a6,0x3bad1795,0x3c6c3018,0x3ca7aec9, +0x3cb5d83e,0x3cadd996,0x3c7f0ec8,0x3be39c62,0x3c19c464,0xba3dff8d,0xba4034b4,0xbb7a8966,0xbb8a1340,0x3c86a5ba,0x3b12650a,0x3be1280f,0x3bcd52ac,0x3c066f27,0x3c1558f8,0x3bd74042,0x3b0d596f,0x3adcf44d,0x3b2e6770,0x3bac835b,0x3bb256cd,0x3ab88555,0xbbc1d5e2,0xbbe15009,0xbbf62ba4, +0xbbe56cac,0xbb0d20d5,0x3abd39d4,0x3b6ed073,0x3b6148ec,0x3b78c622,0x3b8ffcaa,0x3b392b4b,0x394bb76b,0xbb45f794,0xba75b539,0x3b70ddf9,0x3c3685a7,0x3c74e62d,0x3c9a3541,0x3cb76559,0x3cb019db,0x3cbd176c,0x3cc9f58b,0x3cc419ca,0xbbea44f8,0xbc452e6c,0xbc82575d,0xbc9113cb,0xbc8fbab0, +0xbc33ba16,0xbbc3cac5,0xbba00971,0xbbadcaff,0xbbc9e37d,0xbbbf20b3,0xbc09354a,0xbc0529f2,0xbbfc00a5,0xbbd95a93,0xbbe98ae2,0xbc1cdfd7,0xbbdd5be2,0xbb5c09bb,0x3a96f935,0x3b4099cb,0x3b9ad860,0x3b9fa611,0x3bb77f93,0x3bb7a962,0x3b91a9a5,0x3b94ff20,0x3b907938,0x3bcdfe53,0x3bb780db, +0x3ba1bd90,0x3b604975,0x3af74f9e,0x39bacfd9,0xbb0fae42,0xbb766b3a,0xbb8faf11,0xbb980156,0xbc086ac5,0xbc45ef1d,0xbc8e9284,0xbc8f4098,0xbc95d322,0xbc9a9e41,0xbc880194,0xbc671846,0xbc4a2370,0xbc1ca6b5,0xbc043bce,0xbbbf931b,0xbbcc3eeb,0xbbc53402,0xbbc96444,0xbb518744,0xba0bf7f4, +0x3aa86d77,0x3b021ff0,0x3b786d11,0x3bacc649,0x3bb80160,0x3bc321a2,0x3bd35389,0x3bd6941d,0x3be088fa,0x3befb3b8,0x3bd3045a,0x3bb5ce35,0x3b880430,0x3aac7dee,0xba9bac7a,0xbb452d15,0xbb6c80c2,0xba80014e,0xba5fb213,0xbac055e3,0xbb111475,0xbb1e5862,0xbb3e5612,0xbb7a2856,0xbb9bbbe4, +0xbb935dfa,0xbb871ef2,0xbb8402a3,0xbb78afab,0xbb7420ed,0xbb621270,0xbb17c0e8,0xba6ac91c,0x3820178d,0x3a80d340,0x3b01c8a9,0x3b62c709,0x3b487e85,0x3b2b5d44,0x3b17cd25,0x3afbce58,0x3ad6062c,0x3ab377f1,0x3a50bc26,0x390e3525,0xba11b2bc,0xba9de9d3,0xbaceef61,0xbac15a4b,0xba7589d3, +0xb9bfe1db,0xb981d287,0xba14250a,0xba2beec0,0xba0aca79,0xba124028,0xba3b42bd,0xba525cac,0xbb09fc2c,0xbb0ea4ed,0xbb1d04ea,0xbb0564e9,0xbb02c3d2,0xbae6401f,0xbad477cb,0xbab11eca,0xbaa20b07,0xba7cb956,0xba6dc8a1,0xb90e3391,0x378930f6,0x389ceb35,0x39a7ab9e,0xb7a863c4,0xb90c7ade, +0xb9a9f788,0xb9d25a3d,0xba072025,0xba244a9e,0xba3faa99,0xba463cac,0xba450225,0xba2ea705,0xba3ca064,0xba875d22,0xba8f51b8,0xba9eb7d4,0xba972cb3,0xba6cc73d,0xba9ff677,0xb9bd8878,0xb8e52ab6,0xb9a7f9cc,0x389ec7b4,0x395127ac,0xb8a00a5a,0x3908ac67,0xb935b0d6,0x39a1c5d1,0xba008c04, +0xb9c25f06,0x3996db3f,0xb99536ab,0xb9df224c,0xb9c582ff,0xb8fea97d,0xb964eb99,0xbb0de09e,0xbab4c0e2,0xbab3fb90,0xba96d5df,0xbab2ead0,0xbab21ce2,0xbabd261e,0xba71337f,0xb9ba64cf,0x3a7fe15c,0x3a18cb2d,0x3a19d9f5,0x3934d832,0x39ae5f3e,0xb924053e,0xbaa76b78,0xbac8ada8,0xbac4a243, +0xba3e439a,0xb9b6ec5e,0x3b23dd99,0x3ab7e44c,0x3b19885f,0x3b1aab7f,0x3ad0d129,0x3ab3317b,0x3adc58ab,0x3b52109b,0x3a7d023f,0x3a264ce1,0x3aef7e78,0x3a17b98f,0x3a1cb425,0x391c4891,0x3a4bb8d2,0xb9ca09c3,0xbb8d5de5,0xbb6c87e8,0xbb80acdd,0xbb6db389,0xbb9150ca,0xbb9036f3,0xbb82483b, +0xbb11c32e,0x39a96f25,0x3b967043,0x3b89a8e7,0x3b5d55a1,0x3aa3036e,0x3a7e0a58,0xba08ed50,0xbb3a3e15,0xbb6f2e2d,0xbb2d4dbd,0x39b67e7b,0x3ade0f99,0x3b2ad70e,0x38c6510f,0x3b4238e8,0x3b80b522,0x3b1d2cf8,0x3b5ac2a6,0x3b0b2111,0x3b9b58be,0x3b072424,0x3afec13f,0x3bc8dfd3,0x3b261fa7, +0x3b1d687e,0x3b1b5266,0x3ac22468,0x3a4f145b,0xbbe043de,0xbbac8ec6,0xbbbe694b,0xbbaceb6e,0xbbe6f9ef,0xbbe25bb0,0xbbd1a5f6,0xbb72f719,0x398175d0,0x3c02aaa2,0x3bcbd401,0x3bc45a3b,0x3b1f9ce6,0x3b8d4c65,0x3a869554,0xbbaa0483,0xbbd8b56d,0xbbcb7bb1,0xba51a3e7,0x3a9199d4,0x3c299ee8, +0x3bb7db2f,0x3c12cf9d,0x3bf6923f,0x3b1fe9d5,0x3bb0e26b,0x3c1c7f49,0x3c68a364,0x3c5bec26,0x3c83e1b3,0x3c92bf01,0x3bda977c,0x3bb445b0,0x3c094c0b,0x3b0e62ab,0xba213c30,0xbc34c12b,0xbc1441bb,0xbc1d133f,0xbc2c109f,0xbc6e833a,0xbc6f94aa,0xbc4c531e,0xbbd1af82,0x3b69f436,0x3c9c1367, +0x3c9542f5,0x3c466204,0x3b69d41f,0x3b7f7ca1,0xb9ef5efa,0xbc16f7b4,0xbc18028f,0xbb810737,0x3bb04c78,0x3c139604,0xbc665e62,0xbc61aab8,0xbbdeb246,0x3b2f3144,0x3c63e6bc,0x3b9e9af1,0xbbebe1bd,0xbc704e95,0xbc35be2d,0xbb46293d,0xbafefbf8,0x3c84d175,0x3c7928eb,0xbbaee374,0x3b5c4d5a, +0x3b854748,0x3b9730e4,0x3a8dd9da,0xb9f31d90,0x3a1cffbe,0x3bc40691,0x3bf22b6b,0x3b9cfbe7,0x3a9adeef,0xbbcea380,0xbc8c8ed7,0xbc95ce11,0xbbd5b90b,0x3ca77c67,0x3c450b95,0x3c20bea3,0x3c42ff0d,0xbc32411a,0xbcb2e4a8,0xbcb41a99,0xbc8dedf4,0x3be9cd65,0x3c12dfbc,0xbb9189a9,0xbc999637, +0xbd0011a3,0xbc4e3e51,0x3bbf968a,0x3c50c5aa,0x3c231c24,0x3b00ef6b,0xbc20d841,0xbbe19e4a,0xb99a91ce,0x3bb74500,0x3b822954,0x3a901f22,0x3a6dae8c,0xbba9d38d,0xbbe95f9e,0xbc1766c9,0xbbb859ac,0xbb9d3cd2,0xbbac5d69,0xbc155569,0xbbb62fca,0xba22dbad,0x3ca42821,0x3c8f205e,0xbb3a1058, +0xbc01c810,0xbb90382c,0x3c488a30,0x3cacd8d8,0x3ce840fe,0x3cf7e477,0x3c644f54,0xbd101f39,0xbc22f1a6,0xbc2e676e,0xbc40183e,0xbb45f5c6,0xbb1b6d58,0xbb541433,0xbc43e44a,0xbb972ffb,0x3a1be544,0x3b61f476,0xbac0bf1f,0xbb5cf5b4,0xb9cc731d,0xba42af01,0x3af048b2,0x3b433fc6,0x3b24f9e2, +0x3b5254b8,0x3b21d2b8,0x3b8660e1,0x3bee467c,0x3c29bf3b,0x3c25c145,0x3c04199f,0x3b260327,0xb915b09a,0x3b6a4951,0x3c3718fe,0x3c9513d2,0x3c880991,0x3c1c87e7,0xbd023f5d,0xbd37db3a,0xbcea068a,0xbd1cba8a,0x3bdf5aa8,0x3ad6e8d7,0x3b43cf00,0x3bb083cb,0x3c0f935d,0x3b0fcb38,0x39d45f20, +0x3a5b2dc0,0x3a671e93,0xbb40cd9f,0xbb88665d,0xbaec2ee5,0xba2ba4e0,0xbb34eea6,0xbb08695d,0xbb86bdb9,0xbc031bdc,0xbc22998d,0xbc250a70,0xbc103096,0xbc25a647,0xbc1de0f1,0xbc05378a,0xbb1e66f5,0x3bad61c1,0x3c61ba41,0x3c89e852,0x3c90124a,0x3c9226d2,0x3bd81bc1,0x3a8d1adc,0x3bd45bdc, +0x3bd8e0d8,0x3c047a7c,0x3bd9aae8,0x3bf9740c,0xbbd324ec,0xbc555c7b,0xbb917c33,0xb8d81895,0x3b533ec7,0x3bfb3d9d,0x3bf81c73,0x3b839fa8,0x3b89b96e,0x3b956124,0x3b89599c,0x3bc54f69,0x3b55ee5e,0xbb305155,0xbbd6d98f,0xbc181461,0xbc0f2013,0xbbb306cf,0xbaaf4679,0x3af60b1e,0x3b18be3f, +0x3b5d971d,0x3b4b8acc,0x3b821f75,0x3b75403f,0x3b790513,0x3c081a07,0x3c599be4,0x3ca70266,0x3c9f7acf,0x3cab7f0d,0x3ca90190,0x3cab18a7,0x3c8656d1,0x3bc1e554,0x395bd5bb,0x3bd49200,0xbac2a9e0,0xbb696ff3,0xbb222967,0xba7d3d3d,0x3b571035,0x3bbc849f,0x3b84c9b5,0x3b826164,0x3af36a2d, +0xb98f9384,0xbba0760f,0xbbe0ae97,0xbbfa6cbd,0xbbc83deb,0xbbc9bd33,0xbbe43f84,0xbc0de0d7,0xbbefe1bc,0xbb824f6e,0xba211cd2,0x3b023073,0x3b111ea9,0x3b8f1706,0x3b95e0fb,0x3b43417c,0x3abbfcd1,0x3a2c4963,0x3b14bd44,0x3b35dd18,0x3b6f1187,0x3b91d277,0x3bac77f5,0x3bfe4b7c,0x3c3586dc, +0x3c239762,0xbc0540b5,0xbc17d275,0xbc3dfa8f,0xbc6f898e,0xbc9c414f,0xbc93a4b8,0xbc8a242a,0xbc8206e2,0xbc614dfb,0xbc3f41b7,0xbc18a64b,0xbc02d24b,0xbbe04175,0xbbcd9cb2,0xbbbca585,0xbbbb488e,0xbbafdfef,0xbb828150,0xbb306188,0xbb3e37ce,0xbaa0fe50,0x3ab17a6a,0x3b7a0fcc,0x3b50f501, +0x3b3bd4e9,0x3b509d10,0x3b600a48,0x3b768501,0x3b81818f,0x3b6066e8,0x3b269e73,0x3ab6a5ac,0xb9f1ef68,0xbb2fe287,0xbb9af940,0xbbe0bcd6,0xb9d7b091,0xba8e339f,0xbabd5f73,0xbb368de9,0xbb4cbae4,0xbb7ba900,0xbbb14a07,0xbbdfa76c,0xbbd7af9b,0xbbc782a4,0xbbb9c5dc,0xbbb5db8e,0xbba98165, +0xbb971a53,0xbb4bd92e,0xbb00aad9,0xba7e8118,0xb9211bd4,0x3abd26ea,0x3ab2f7fa,0x3ad36c60,0x3ad76923,0x3afca561,0x3b1389d4,0x3b3642fd,0x3b486f4f,0x3b3d1471,0x3b2eba53,0x3b23569f,0x3b0cea02,0x3b012abe,0x3b03f995,0x3ac5305a,0x3aad0671,0x3a8c7730,0x3a0ce66a,0xbb655dc6,0xbb7e9cc9, +0xbb656932,0xbb66c9f1,0xbb5a81d8,0xbba69793,0xbba20cc3,0xbba2555f,0xbb8e70d3,0xbb88bbad,0xbb7fb96e,0xbb648f85,0xbb4b677c,0xbb3ee4a3,0xbb497601,0xbb503e1e,0xbad6f329,0xbaf744be,0xbaec17bb,0xbafcce7c,0xbaf3a8f3,0xbaf8affa,0xbb016396,0xbaf8a1cb,0xbaf7dbbe,0xbae95b2b,0xbaf08a66, +0xbaed9437,0xbae784eb,0xbad20493,0xbac246a6,0xbaac28aa,0xbafa0434,0xbb212d84,0xbb43de88,0xbb59b49c,0xbb88f2d7,0x391e96fb,0x3a04e930,0xb7f4ec8e,0x3999a231,0x39f54884,0x3a4e1725,0x39494ef4,0xb96c1a91,0x3a04dd1c,0xba4b503e,0xba5afec9,0xba441521,0xb8adbb4d,0x38c585a7,0xb991fd37, +0x3a14b105,0x3a36d084,0xba6845b4,0xba1cdded,0xba548e6d,0xba5c0ccb,0xba5c9ed7,0xba392aa8,0xba3b8ab8,0x390bc0a1,0x3a4219a3,0x3b0b9a9b,0x3a8413fd,0x3a4f8418,0x392dd10d,0x3a66786c,0x3a0676fc,0xba520e48,0xba5d8379,0xba3de777,0x390a11ea,0x39d235f0,0x3b704cef,0x3ae3cddc,0x3b2048c8, +0x3b176721,0x3b3c6ef5,0x3a3b4977,0x39fdf846,0x3b2fe04d,0xba03a58f,0xba9c5ff1,0xba8c7f62,0x39a65edd,0x3a8ddc4e,0xb86811a7,0x3b088d3a,0x3ab4f412,0xbadf4b64,0xbb267d13,0xbb726002,0xbb790ae0,0xbb8240e2,0xbb5aa217,0xbb208c54,0x3a0962a4,0x3b4e1f42,0x3be5919a,0x3b8eafae,0x3b2e1c5f, +0x3978beb2,0x3acc1ccc,0x3a457052,0xbb016cfd,0xbb08c3bb,0xba8416a9,0x3b0ac883,0x3b5a9ec8,0x3b6963af,0xb8d7ec56,0x3b0bfdd1,0x3b453a0f,0x3ba6444c,0x3aed954f,0xb9a13cc4,0x3b5e4b6e,0xbb0cc593,0xbb3d12fd,0xba885205,0x3aa1615b,0x3b521975,0x3a8973d3,0x3b71669c,0x3b74a63c,0xbb112269, +0xbb4d9c39,0xbba7a0f8,0xbbb6e156,0xbbca11ae,0xbba7e037,0xbb8efa95,0x39f3d362,0x3b8f288e,0x3c457bc4,0x3bc255d9,0x3b9c6338,0x3a6e1651,0x3ba47714,0x3b431b63,0xbb8f73d9,0xbb856301,0xbb5612c5,0x3aed87f6,0x3b4df23b,0x3c4d6198,0x3bb8ad56,0x3c02c453,0x3bfef633,0x3bf3b5e4,0x3b4fe5e5, +0x3b9bdc00,0x3c49dcb6,0x3c108af2,0x3c20e802,0x3c1623be,0x3bc5cac2,0x3bdcb97e,0x3bce1a68,0x3bce3e69,0x3b90dd39,0xbbc8f302,0xbbf20f59,0xbc2ddfd0,0xbc53c291,0xbc6d102d,0xbc4bb223,0xbc0f80ca,0x3aa67b61,0x3c444757,0x3cd23a5e,0x3c898f94,0x3c041157,0xba1dbadf,0x3b92ba69,0x3b2451b6, +0xbbeff9ff,0xbb90af03,0x3a2f40c1,0x3c1e919c,0x3c517140,0xbc8f905f,0xbc67eab5,0xbc51c817,0xbba7d625,0x3c18e38b,0x3be50d96,0xbac9aaa3,0xbc620348,0xbc4b5886,0xbb82ee52,0xba291396,0x3c6e7e7c,0x3c5b966a,0xbb313302,0x3a5d00d1,0x3ae4a39e,0x3c13e437,0x3be35d9c,0x3bd0a6c0,0x3c08c670, +0x3c5c5367,0x3c3e99dc,0x3bd781da,0xbadc4556,0xbc348c7b,0xbc923cd2,0xbc700c07,0x39aa8cf1,0x3cc314e9,0x3c59888e,0x3c200d3f,0x3c46fd89,0xbc25fb3f,0xbc972054,0xbc9f5f72,0xbc9ad4a8,0x3c90db06,0x3c647de3,0x3bd74533,0xbc25d9b3,0xbce34c54,0xbcad7829,0xbbdf3a3b,0x3ba5613b,0x3c1e4219, +0x3b8e09a3,0xbc021f4b,0xbc19ed16,0xbb83ca95,0x3b73a27c,0x3a437c45,0xbab97fc5,0xbb1fb600,0xbb449082,0xbb6eb6cd,0xbc065462,0xbb820ccd,0xbb982ea6,0xbbae99af,0xbbee0574,0xbabaf687,0x3c20ed3c,0x3cada189,0x3c609ea5,0xbbe6dd75,0xbbf67604,0xba24250b,0x3c32e43b,0x3cd28178,0x3cd320c9, +0x3c2f5826,0x3c66b7d9,0xbd460761,0xbd5b404d,0xbc795970,0xbb5436f1,0xbbeb8ac0,0x3bcd3234,0x3b40beb6,0xbc575e70,0xbc031a88,0xbb3fe856,0x3b3d59ae,0x3aa28232,0xbac929ef,0xbb353c60,0xbb435b75,0xb9399965,0x3b76fe2e,0x3a964668,0x38a920ee,0xbb0c630c,0x3b8f2f54,0x3bfed0c2,0x3bfef3dd, +0x3bfa8b2c,0x3b85af9f,0xba87e51f,0xbb07a884,0x3b3586d6,0x3bb799cd,0x3cf594be,0x3ca79eaf,0xbcc4b44c,0xbcd6bdf4,0xbcd499e7,0xbca12298,0xbd09128f,0x3cc6e59b,0x3cd109a7,0x3c76d899,0x3c22be18,0x3c390211,0x3b103a0d,0xba1163fa,0x3add7614,0x3a55ccca,0xba852e59,0xbb6e0739,0xba923caf, +0xb7c711e3,0xbaaafc91,0xb87db562,0xbb28194a,0xbbeb968e,0xbc198eba,0xbc1946b1,0xbc1705fb,0xbc10c0ac,0xbbfbd077,0xbbca6963,0x3a606b9b,0x3bd04af6,0x3c5df5bc,0x3c53288d,0x3c353a06,0x3be58c0e,0xbb89f5ab,0xbbaffb6a,0xba0f65b2,0x3b9df3fb,0x3be59e1b,0x3c2cf4d3,0x3c834b79,0xbcb527c4, +0xbca1007c,0xbc36d1cc,0xbb556c6c,0x3ac780eb,0x3b8aaef3,0x3bae66a0,0x3bb0b58c,0x3bbc6684,0x3bb5447d,0x3b420d62,0x3b5f6200,0x3b10cd57,0x3a7c066f,0xbbbd4280,0xbc1c4344,0xbc1b50dd,0xbc10da98,0xbbc33a3b,0xbb6361b7,0xba61636d,0x3addb2cf,0x3b0042a6,0x3b9a0adc,0x3beb6379,0x3c373878, +0x3c6c3ec6,0x3c924753,0x3cb948b7,0x3ca60541,0x3ca06d93,0x3c82b887,0x3c8ae888,0x3c0c83bb,0xbc0f2789,0xbc9139b3,0x3c87924b,0x3c2c02c0,0x3c1471a3,0x3c218608,0x3c393e4d,0x3c53f83c,0x3c53a59c,0x3c2d2e20,0x3c28c927,0x3bff11f2,0x3b9163d3,0xb9bdb4e7,0xbb8f428d,0xbbf787d6,0xbbe128af, +0xbbcc1e40,0xbba53b3e,0xbbed8030,0xbbeab468,0xbbcea0fd,0xbb418e8c,0xba22b927,0x39681daa,0x3b07c33c,0x3b027563,0xb95e4327,0xbabc4b08,0xbad96ea2,0xba719b6b,0x3a6aae47,0x3b3e87d3,0x3b9e8748,0x3bf174ac,0x3c3de468,0x3c8ebcea,0x3c93df0a,0xbc0a1e79,0xbc338620,0xbc431f51,0xbc5d2f20, +0xbc8519c1,0xbc729ecf,0xbc50ace2,0xbc36f141,0xbc2a5394,0xbc1a357e,0xbc069bc4,0xbc00ae2f,0xbbf353ba,0xbc03cc4d,0xbbe96c41,0xbbf348d1,0xbbf35573,0xbbdfdd35,0xbbca4a72,0xbbd2bd74,0xbb91c53e,0xbb107b89,0x396d4aec,0xb9b61d8f,0xb9e98d69,0x38938a16,0xb9c7328d,0xba5501cd,0xbabad116, +0xba617e61,0xba28d4a3,0x3820755a,0x399eed22,0xb97b81c4,0xbaae1215,0xbbb9864c,0xbb2e2989,0xbb83bf3e,0xbb8638eb,0xbbb9c919,0xbbc9a1df,0xbbe2c4d1,0xbc0b8ebd,0xbc214741,0xbc1acc81,0xbc0fbadb,0xbc04f996,0xbc01677f,0xbbf168be,0xbbdb5327,0xbbb59811,0xbb9c8c78,0xbb80a384,0xbb53b0ce, +0xbafcc132,0xbb2198f7,0xbaea2273,0xbaa51f2b,0xba08518c,0x39e33ffb,0x3ac5bf5b,0x3b22a2e8,0x3b2a8ead,0x3b3fc86b,0x3b4e3193,0x3b4caece,0x3b421a8e,0x3b3137bd,0x3a670485,0xb9eb4e27,0xba986082,0xbadfa03a,0xbbc51b1e,0xbbdb86d6,0xbbccc898,0xbbce258b,0xbbc95b55,0xbbf67b3c,0xbbf58329, +0xbbfb2dd0,0xbbe474a8,0xbbddb380,0xbbd46608,0xbbc507eb,0xbbb7dead,0xbbaf1dab,0xbbb2b870,0xbbb1f64a,0xbb894431,0xbb90aa72,0xbb8b1849,0xbb909429,0xbb832056,0xbb79d441,0xbb6f2d46,0xbb5e4739,0xbb526836,0xbb3cf670,0xbb431c87,0xbb448c1d,0xbb43c0cc,0xbb40203f,0xbb381b72,0xbb1a87d6, +0xbb4b56e9,0xbb759204,0xbb987cc3,0xbbb2017a,0xbbcf48ac,0x3a70ecb8,0x3a9e397d,0x3a0427c2,0x3a16e3f6,0x3a446855,0x3adce75c,0x39dfd4ab,0xb8c46031,0x3a45ea6a,0xba6aa32f,0xba903170,0xbaa7fad0,0x389febdc,0x3a077831,0x38d67759,0x3a9b8e6b,0x3ac67346,0x3a22cd1d,0x39a28f5a,0x3618e608, +0xb8d9fb48,0x3882fd55,0x39ad96bb,0x3a0ea200,0x3ab90f7e,0x3afcbde6,0x3b410260,0x3aee475f,0x3ac82b97,0x3a30b93e,0x3aeb2145,0x3ac40140,0xb89fc339,0x39833faf,0x39f284ba,0x3ab4cd2f,0x3aab781d,0x3b82eb83,0x3ae6fbaf,0x3ad4b095,0x3ad5f022,0x3b8573d6,0xb8ae6c26,0xba560d1a,0x3affad6a, +0xbb08a11e,0xbb423538,0xbb3bf460,0xb935e446,0x3a970c01,0x398f2855,0x3b3aa2ba,0x3b360569,0x3ab16b8d,0xba8988b4,0xbb3b8bce,0xbb42fb58,0xbb265d17,0xbaa74fea,0x399f8af8,0x3b65cc6b,0x3bb905eb,0x3c022e09,0x3b9c35fa,0x3b385753,0x3974cde1,0x3b397e73,0x3b264028,0xba2fb851,0x398d0af0, +0x3aaf9ad3,0x3b8b3833,0x3b90efa5,0x3b7f08a5,0xb987fe9d,0x39dc4196,0x3aae224e,0x3be980bc,0xb98addb9,0xbb3a332e,0x3aece355,0xbbc7b870,0xbbeb5938,0xbbd82407,0xba7f6ee5,0x3b236c7c,0x39ad6081,0x3b98c0f5,0x3bab67a5,0x3b3813e2,0xba66753e,0xbb76edee,0xbb99f11d,0xbb7ffa35,0xbb0dfd90, +0xba0d71cb,0x3b9ec10e,0x3c02e48c,0x3c55a157,0x3bd8349a,0x3baf85ba,0x3a95276a,0x3bdcffcd,0x3baf2f83,0xbb4bf107,0xba0eb356,0x3a305c98,0x3ba9add7,0x3b9d3adc,0x3c41498d,0x3b8aa62b,0x3b830018,0x3ba8a0fd,0x3c3c0dd2,0xb9ec7cfa,0xbab77a99,0x3bf44a98,0x3abb0c23,0x3a787add,0xbadc96e5, +0x3b8d8835,0x3bea9dc0,0x3b9e3158,0x3c0add81,0x3c094e27,0x3b0b1519,0xbb89fca1,0xbc299597,0xbc54fcea,0xbc3af277,0xbbefaee5,0xbadc38da,0x3c1e3770,0x3c997e35,0x3cd53723,0x3c7419b1,0x3bc92ed0,0xbae7999a,0x3bd3acfb,0x3bcb2684,0xbb885abe,0x3aebc617,0x3bd1ce77,0x3c68084f,0x3c684c67, +0xbc93b768,0xbc441de9,0xbc81674f,0xbc2a5e5e,0x3b9b232c,0x3bca0068,0x3af35512,0xbc0ea8cf,0xbc0b2242,0xbb0cff2a,0x3982f1cb,0x3c1186ab,0x3bfaea15,0x3af4a559,0xbb002053,0xbac66f62,0x3c113a8d,0x3c338c08,0x3c673940,0x3c91f28e,0x3c97b896,0x3c5b5d50,0x3bd55966,0xbbc840fe,0xbc78d5e7, +0xbc82923b,0xbbf8548d,0x3c160055,0x3cd64dc2,0x3c848232,0x3c1ff47b,0x3c0a2025,0xbc0873d7,0xbc5a115e,0xbc5a67b7,0xbc8c6d1a,0x3c852022,0x3c870c07,0x3c92c9e1,0x3b3748dd,0xbcb48a74,0xbcc04cf7,0xbc64351e,0xba86988c,0x3bb7fa6a,0x3b43012f,0xbb9d2cb1,0xbc0b98cd,0xbbbf4408,0x3af56dfe, +0xbb0a1b52,0xbb337996,0xbb888143,0x3a56fbb9,0x3ad19ed1,0xbb299bc4,0xbad4b433,0xbb7405cd,0xbb2f7ea1,0xbb5d91ab,0x3b8ad064,0x3ca4041a,0x3c7e86c6,0x3b47a341,0xbc761546,0xbc0541a4,0x3b5c7bd7,0x3c51da24,0x3ce9bd97,0x3cb4df2f,0xbba52b36,0x3bae0252,0xbd21e1e7,0xbd9c461f,0xbcedbddc, +0xbc0bd070,0xbc4d7fb3,0x3c06de6d,0x3bc5773c,0xbbf5c876,0xbbec8404,0xbb898bf5,0x3ae6fb6b,0x3b5dfc60,0x39dbbbbd,0xbb9a2431,0xbb691b61,0xba83ca3b,0x3b73f24e,0x3ac3999b,0xb92c0c57,0xbae3639b,0x3b6491dd,0x3ba9c0db,0x3b8cfcb2,0x3b53c6e4,0xba41cc62,0xbb744b0f,0xbb882056,0x3a905e01, +0x3b1ab3bc,0x3ced3372,0x3c88e860,0xbd08297d,0xbcb60d81,0xbc890472,0xbc4f883f,0xbc828321,0x3cfeddcc,0x3d2f762b,0x3cef531f,0x3c88aa1b,0x3c09a636,0x3b64de6e,0x3af92c62,0x3b18c14f,0x3a96f53a,0x3a7254cd,0xbb087821,0xbad93625,0xba291812,0x3a58431c,0x3a49e4f0,0xba8c1fa9,0xbb8713cc, +0xbbe001c7,0xbc023555,0xbc01e3b6,0xbbd05ad4,0xbb8f674f,0xbaac0dcf,0x3b6cf976,0x3bfc2675,0x3c43fb2a,0x3c1c9342,0x3b8cafe0,0xbbb83f91,0xbc1bf402,0xbbf28847,0xbb86df2b,0xba47c610,0xb8283455,0x3ba9b0b9,0x3c67666b,0xbcbdc7e9,0xbc8bef5b,0xbc586d1d,0xbba2717e,0x39540649,0x3996be2a, +0x3ab21008,0x3bb026ae,0x3b99e629,0x3b7474ef,0x3ab278c7,0x39b3c3b3,0x38284fc8,0x3ac80e68,0xbb9f7f3d,0xbc08027f,0xbc2c0cc1,0xbc2b064f,0xbc19d64f,0xbc0c7bca,0xbba41f62,0xbac6903b,0x3a2f3f55,0x3b8b1420,0x3c0b0771,0x3c6ded98,0x3c7d358e,0x3c8f4b33,0x3ca0339c,0x3c957b3c,0x3c7ebaba, +0x3c25455c,0x3c0d2ba5,0x3aa4d4c2,0xbc397823,0xbca387bc,0x3c8e29e2,0x3c77a49d,0x3c7b94f2,0x3c74c801,0x3c6dc85a,0x3c69e216,0x3c51e837,0x3c3baea6,0x3c3d5228,0x3c299101,0x3bfbb109,0x3b86bba0,0xba22c390,0xbbb894f9,0xbbd56ee7,0xbbc487b7,0xbb8931c5,0xbb962e4c,0xbb980c70,0xbba0247f, +0xbb4e5c54,0xbb124a63,0xbad59264,0xb8441ea8,0xb9a9bcfe,0xbb05f4a7,0xbad18d6d,0xba087414,0x3a1998a6,0x3b2210ca,0x3baff024,0x3c05f01f,0x3c2360db,0x3c47f3a2,0x3c80cf2f,0x3c89e65e,0xbbcb62a3,0xbc11248c,0xbc15aa80,0xbc1ac574,0xbc310ae7,0xbc0f6868,0xbbc849d9,0xbb871d4f,0xbba63d9f, +0xbbb20a72,0xbbcde4f4,0xbbdaff1c,0xbbfd01f7,0xbc0ef16c,0xbc0769c6,0xbc0b8070,0xbc11af25,0xbc073138,0xbbf64936,0xbbdfbbe2,0xbbb681c3,0xbb8f54c5,0xbb472bf5,0xbb34145d,0xbb076cad,0xba8eff3e,0xbacb6b8a,0xbb06c3d0,0xbb28d3ca,0xbb167e79,0xbb056f32,0xba582a72,0x389bc3e9,0x3a2e8d07, +0x39fe2ac3,0xbb5cbdd5,0xbbd643d6,0xbc00e763,0xbc01c7da,0xbc117999,0xbc1b8299,0xbc26964d,0xbc3a253b,0xbc491e28,0xbc3dd60d,0xbc2f045b,0xbc21f333,0xbc16b4a3,0xbc0acdf5,0xbbff446c,0xbbee8e43,0xbbdf073e,0xbbcd4873,0xbbbd8b25,0xbba91322,0xbbb41e5b,0xbba1b933,0xbb8ea464,0xbb726761, +0xbb369a3e,0xbafafe1a,0xba70dd4f,0xba7a25b3,0xba2e832b,0xb9f3ff11,0xb97f4a42,0xb9567e7b,0xb9d75460,0xbb19ac7a,0xbb86cf67,0xbbaa4612,0xbbbe8a2b,0xbbe66ddf,0xbbfcad3d,0xbbf4c6b4,0xbbf9cf08,0xbbfb5f39,0xbc04bad7,0xbc07c880,0xbc107ed8,0xbc058167,0xbc020b30,0xbbf9867e,0xbbeea78e, +0xbbe25dfb,0xbbd6193f,0xbbd29278,0xbbcee105,0xbbc2cc2b,0xbbc3a6b2,0xbbbe9213,0xbbc11105,0xbbb0c607,0xbba640f3,0xbb9c3e78,0xbb92d506,0xbb8b0c9f,0xbb7decb7,0xbb822d27,0xbb839f11,0xbb86122d,0xbb8a41e6,0xbb8d2459,0xbb84b8a8,0xbb96cfc5,0xbba32c9d,0xbbb98717,0xbbd0f4f3,0xbbd2bb30, +0x3acf1324,0x3aecd89c,0x3a8c84e7,0x3a7586be,0x3a8860fb,0x3b1f56ff,0x3a3f147d,0x398facba,0x3a966084,0xba34a6d6,0xba8109c6,0xba81f96d,0x3985dcaf,0x3a491d3f,0x3a13e39a,0x3ad03420,0x3b00f029,0x3aefdad2,0x3a8c1286,0x3a49bbf3,0x3a1bfc88,0x3a6aa383,0x3aa7a677,0x3af3fe29,0x3b20a9df, +0x3b36887b,0x3b558921,0x3b20bd57,0x3b0ff7e0,0x3abe9078,0x3b1d40c0,0x3b0bb0fe,0x3a3f9452,0x3aa2209d,0x3ac6dfe8,0x3b1f8bc7,0x3b0830fd,0x3b806525,0x3aea1002,0x3a5f9748,0x3a843a05,0x3b96fac9,0xba0c9e14,0xbad41ca0,0x3aa0f85d,0xbb527d60,0xbb84c438,0xbb504768,0xba6d3eef,0x3a27c005, +0x3a0a8a36,0x3b49e8ef,0x3b681b7a,0x3b5c385b,0x39e9af13,0xbab86eac,0xbaccef90,0xba499e29,0x3a811c2b,0x3b5ea64a,0x3bc08a80,0x3be91316,0x3bf32228,0x3b9840fb,0x3b3ce28b,0x3a82d5dc,0x3b675d13,0x3b68d23a,0x3a5fbb64,0x3b14ad0a,0x3b530e85,0x3bba0920,0x3ba06739,0x3b8c204d,0xb7520a9c, +0xba60b869,0xb9665f70,0x3bf8aa2a,0xbaea103b,0xbb89c921,0x3a3d4e02,0xbc0cb139,0xbc229777,0xbc0b8e0f,0xbb67a8fe,0x39aed318,0xb9f259b9,0x3b8db87a,0x3ba7a939,0x3bb192c9,0x3a389b06,0xbb0fef47,0xbb511e8f,0xbad208b8,0x3a3e1ba8,0x3b8564d9,0x3c06faf6,0x3c26fa77,0x3c41426d,0x3be5eca6, +0x3bc40515,0x3b41693b,0x3bea6286,0x3bc2b321,0xba8beb75,0x3b1b08ac,0x3b81c1d5,0x3c000d53,0x3bca2ba7,0x3c24f8d2,0x3b4634d7,0x3846f9b6,0x3ad46629,0x3c511cac,0xbb8201db,0xbbe3402a,0x3b10ae19,0xbbca39cd,0xbbf8e8d5,0xbc14b92c,0x3a4b7ab8,0x3ba479b9,0x3b8550f3,0x3c0e0635,0x3c274c26, +0x3c0f0ff3,0xba4acbe2,0xbbfbc29e,0xbc24b285,0xbbdb4124,0xba6812c9,0x3bf115ee,0x3c86e443,0x3cb4061e,0x3cb1e14f,0x3c399102,0x3b859359,0xb938fcd9,0x3be279fa,0x3bfa7eab,0x39c7afb3,0x3be43c59,0x3c2cf16a,0x3c895e51,0x3c649ea2,0xbc6bb0ea,0xbc131a0b,0xbc7d4af6,0xbc462445,0x39e002db, +0x3bba2883,0x3bba6fda,0xb88d23d2,0xbb3c69e1,0xba58ce8a,0xba69df85,0x3adbd522,0x3afc1abd,0x3bb96f79,0xbba65b0e,0xbbc8699a,0x3b6d9642,0x3c1cda7a,0x3c7c4fb7,0x3c9b0826,0x3c7e6532,0x3c186e06,0x3ae4b83a,0xbc1e2f32,0xbc6be42c,0xbc3344ef,0x3bd4970b,0x3cb42ee9,0x3cd3d887,0x3c9602d0, +0x3c020076,0xb9efb38d,0xbc0f82dc,0xbc2173e6,0xbbfc474b,0xbc45c0df,0x3bf4a485,0x3c7e4827,0x3cd62e8b,0x3c709441,0xbc564e55,0xbcbd106a,0xbc9baab6,0xbbcffa4c,0x3a10b66c,0x3a4af4f1,0xbb23886c,0xbbb01026,0xbbc00dc9,0xba62002a,0xbb4629ed,0xbaa4053d,0xbb3cb07e,0x3b83ff38,0x3bb772f0, +0x3b7dbd98,0xb959c4bf,0xbb097234,0x3ad5063a,0x3b260120,0x3c1d4026,0x3ca9ec2f,0x3bc2f52b,0xbc0bcf91,0xbcbe6af9,0xbc0f536d,0x3bca3e8b,0x3c6794c5,0x3cc8ccbc,0x3c697da0,0xbc8fcbe7,0xbbaf5e10,0xbc9575f0,0xbd96cc26,0xbd4c2416,0xbcec08ae,0xbc154896,0x3ae3c2ab,0x3ae4c533,0x3a2b7f9a, +0xbb88ce7a,0xbb6942f3,0x3a51914b,0x3b552f84,0x3a9c04a2,0xbbb3b1b0,0xbb5cc14e,0xbb0c84cb,0x3adf654a,0x3b31ab78,0x3b2529f7,0x3b2304c9,0x3b6d410a,0x3b1fc56a,0x39a88df6,0xbb217b58,0xbbc2621b,0xbbcb3df9,0xbbd21069,0x3a1410ed,0x3c0911fa,0x3c76f664,0x3b11f9e5,0xbccc08f5,0xbc5a4120, +0xbbe4ee70,0xbbf94022,0x3bad8052,0x3cabe2cb,0x3d240bf9,0x3d1a9aed,0x3cc6c922,0x3bffaa4c,0x3bd90abf,0x3be03791,0x3b5b88e1,0x3a0c082a,0x3a2b4b11,0xba72384b,0xbb07b8fa,0xba85ffe4,0x3ad2179b,0x3a85c184,0x3a61aadc,0x39a7ea28,0xbb25e4e2,0xbb9e6a6b,0xbb984a79,0xbb57d177,0xba5e4377, +0x3b7b3706,0x3b9f5edf,0x3bf5e307,0x3c086eba,0x3bc0e3cf,0xba66a190,0xbc355fef,0xbc253b66,0xbbddbf15,0xbb9b0220,0xbbbebc22,0xbbba8b05,0x388a2282,0x3bb8feb9,0xbc5a7d3b,0xbc2ca7c0,0xbc46e0df,0xbbd7e444,0xbb0c4c82,0xbb1d8f92,0xbac7ab99,0x3b8d2ed3,0x3b09fdd1,0xb7e74ec6,0xbabb88ac, +0xbae16d50,0xbac5e5ec,0xb98d083d,0xbb616f2c,0xbbc83061,0xbc339d62,0xbc32d690,0xbc3770c3,0xbc337dd2,0xbc0df130,0xbbaaa0ba,0xba819fdb,0x3b2ccf5f,0x3bee6176,0x3c4f32f4,0x3c603924,0x3c7f1875,0x3c8144d2,0x3c7302f9,0x3c28d2d4,0x3b93ae03,0x3b06d826,0xbb0b16f7,0xbc0a5c7a,0xbc404b27, +0x3c2e5a57,0x3c444a15,0x3c516076,0x3c3ba53a,0x3c32d6c4,0x3c20c78c,0x3c059b91,0x3bf5d9e0,0x3c02a34e,0x3c0db5f8,0x3c01a180,0x3be31e95,0x3b4f9857,0xbb083826,0xbb97f697,0xbbacf969,0xbb920da1,0xbb578386,0xbb3574b7,0xbb2225c1,0xbb1c27a9,0xbb23b26c,0xbb3436d5,0xb999af06,0x39c330df, +0x368a6fa8,0x3b20cbd5,0x3b839c41,0x3bafd961,0x3bee23a1,0x3c2fb5c1,0x3c65f025,0x3c573f31,0x3c43d7c3,0x3c3b13ef,0x3c2b5ed1,0xbaa00262,0xbb526073,0xbb457bd3,0xbad4b624,0xbabade90,0x39ee381a,0x3b37d6b7,0x3b9afcc7,0x3b15ed8c,0x3a3a5a4f,0xbb096dc4,0xbb597236,0xbbbc1f33,0xbbe4a239, +0xbbeb8a63,0xbbf8cd23,0xbc0ad054,0xbc000810,0xbbeb2f26,0xbbced5bf,0xbbc0645a,0xbbb2e812,0xbbad0555,0xbb7b6638,0xbb153ada,0xba200dc8,0xb9d2c662,0xb6c2a5e2,0x3a0fb431,0xb9a1c23e,0xba89f441,0xba5a9062,0xba1b9374,0x38ff20e0,0x3a3e7270,0xb95d299c,0xbc156ad1,0xbc1edd85,0xbc279d66, +0xbc23d00e,0xbc30f9e5,0xbc3571c4,0xbc3dbc82,0xbc47174b,0xbc3881a6,0xbc2b3591,0xbc1f4a33,0xbc0f5cc0,0xbc03dd85,0xbbf75cd6,0xbbf2705b,0xbbe891d7,0xbbe23359,0xbbd99094,0xbbd585f8,0xbbd8a61b,0xbbcccbf8,0xbbbfa00e,0xbbb2c92a,0xbba3876b,0xbb9a94e1,0xbb8965b7,0xbb9d52d1,0xbba8c389, +0xbbb15c0d,0xbbaea555,0xbba807f5,0xbbab9aa0,0xbbc34e89,0xbbe71c72,0xbc0419ee,0xbc0f8f26,0xbbdf2ee1,0xbbe9bcf6,0xbbecc35e,0xbbf26890,0xbbf55288,0xbbe91bde,0xbbeea3a6,0xbc017dc3,0xbbf53f3d,0xbbf0784c,0xbbe76b78,0xbbe40b22,0xbbdae49e,0xbbcf135b,0xbbcddc5c,0xbbcd5019,0xbbcc2963, +0xbbcd81f9,0xbbcd3834,0xbbd05437,0xbbc28798,0xbbb828e0,0xbbadef8f,0xbba6521c,0xbb9ec5f5,0xbb93a24b,0xbb991db5,0xbb9c369a,0xbba31bff,0xbbac1a05,0xbbb76f8d,0xbbbe47db,0xbbc5d83a,0xbbc7ca3d,0xbbcb2fa1,0xbbd28422,0xbbc70228,0x3afacc1a,0x3b0c14da,0x3ac5cd44,0x3ab4f059,0x3ab4a46d, +0x3b2a5f99,0x3a7cfc1e,0x3a29756b,0x3aad9d2e,0xb9aea753,0xba27fc2d,0xb9abd1e1,0x39cb0dfb,0x3a5363cc,0x3a478967,0x3adf3fa0,0x3b06627e,0x3b16c509,0x3ace2d53,0x3aad57a3,0x3a76e2a2,0x3ab10645,0x3aebedd5,0x3b2fdb09,0x3b43b0f8,0x3b4c90d5,0x3b44c1b7,0x3b2c135d,0x3b2181ff,0x3b0bc6ec, +0x3b1eb588,0x3b0f51f2,0x3aae5a2c,0x3af93059,0x3b123f5d,0x3b4cdb86,0x3b23b05b,0x3b6b008e,0x3af524d4,0x3a5e9c52,0x3a579d2b,0x3b73e09e,0xba37ca22,0xbafa06f5,0x391ad925,0xbb750aac,0xbb8c3744,0xbb2c379e,0xbac7aceb,0xb915eeaf,0x3939ff27,0x3b38ef7d,0x3b6ea60f,0x3b79e242,0x3aeca838, +0x39be1b3c,0xb951d7bb,0x3a453c45,0x3b308b4e,0x3bb8584f,0x3bed93a9,0x3bf915de,0x3bc6e083,0x3b8e7063,0x3b445c9e,0x3b14ba07,0x3b5b8430,0x3b5f4396,0x3b001981,0x3b6cf184,0x3b95f0e1,0x3bd4b7c2,0x3b9f974f,0x3b94d128,0x3a44e4ea,0xba03c767,0xba05e390,0x3bbfd0f1,0xbb199a0c,0xbb8f3935, +0xba4d7d97,0xbc1d2e67,0xbc358715,0xbc000c38,0xbbb6b943,0xbb080973,0xbb0a5e90,0x3b53f3e8,0x3b84a443,0x3ba2c897,0x3aecd7fb,0xba10c5f0,0xbb03279d,0xb8a5723b,0x3b27ad55,0x3bf1ced7,0x3c23fa43,0x3c302635,0x3c13d6aa,0x3be50ed8,0x3bca43de,0x3babfade,0x3bbafc32,0x3b949b04,0x3a74c98b, +0x3b952600,0x3bd49f67,0x3c1febc0,0x3be42bcb,0x3bfd60bb,0x3b12595f,0xbac4db46,0xba2f98bd,0x3c1eaf07,0xbbce06ed,0xbc2c01ad,0xbb2a08e5,0xbc474477,0xbc621817,0xbc30d9a4,0xbb7286e6,0x3a6bbca8,0x3b25c750,0x3becb021,0x3c1f4122,0x3c2fb63b,0x3b3c1d6f,0xbb292f39,0xbbad4381,0xbad6e72b, +0x3b9e56ac,0x3c7135ff,0x3ca846cd,0x3cb69dff,0x3c835637,0x3c164465,0x3b802e84,0x3b7361c1,0x3bbb3487,0x3bd06e2b,0x3b856b9b,0x3c2b850a,0x3c5ff1ac,0x3c9550f5,0x3c50402d,0xbba1fa07,0xbb896f5d,0xbc1b0393,0xbc06b66f,0xba8b43fc,0x3be08a7f,0x3c25276d,0x3c193d2d,0x3ae16f30,0xbad5ea5a, +0xbb47d471,0xbb687a5c,0xbac5e8b3,0x3bf8fba4,0xbbf2a63f,0xbc2ac4bf,0xbb79a44e,0x3ac722e1,0x3be7b804,0x3c1883a7,0x3b9eebc9,0x39d7dc66,0xbbd46b1d,0xbc496cf0,0xbc476029,0xbc1365a6,0x3c828d5a,0x3ce5c555,0x3ca19266,0x3c7f4df2,0x3b7c7f1b,0xbc15dd83,0xbc10c366,0xbbeb1bd7,0xbbb894e6, +0xbb71d126,0xba64d45a,0x3c1d3b60,0x3cd8da50,0x3ca0de2b,0xbb8aab27,0xbcb2e5c4,0xbcbe4bbd,0xbc404478,0xbb4f7b30,0x394a8151,0xbaaa1af3,0xbb145448,0xbba08097,0xbb79f437,0xbaf829f1,0x3ae8af3a,0x39536514,0x3bc04941,0x3bf14d8a,0x3c0c255a,0x3b033e1f,0x3ab611f2,0x3bc970c1,0x3c290c38, +0x3c622b8c,0x3c502a09,0xbb7243bb,0xbc88a2ea,0xbcd886a0,0xbbe9b79c,0x3c06b6f7,0x3c47e84f,0x3c60998b,0x3b0a14a3,0xbcc2198b,0xbc3f6bf8,0xbc187340,0xbd75423f,0xbd766b15,0xbd2b737b,0x3a9ed42d,0xbbba1da7,0xbbc6e140,0x3b6f1efa,0xbadb11c1,0xbaef1703,0x39787966,0x3acade2e,0x3a2a8e1c, +0xbba46401,0xbb5f2ff9,0xbb7cefab,0xbad9b5ba,0x3b0afc7b,0x3b7bb1fe,0x3b891720,0x3b25f3f0,0xba28a19b,0xbb9bbbca,0xbc026cc3,0xbc205a1d,0xbc03f4af,0xbbeb4f50,0x3b3097cf,0x3c9c9a42,0x390f0837,0xbc69ab9a,0xbc8fc10d,0xbb8dec75,0x3b8c264c,0x3b06e1a6,0x3c269e35,0x3b9d2dcc,0x3c91f963, +0x3d0c817d,0x3cea85eb,0x3c57e091,0x3c0d8dba,0x3c1a707e,0x3bcd32a2,0x39faba2a,0xb875e40f,0xb9640012,0xbad20324,0xba7c1d75,0x3920f06c,0x3a5ed75e,0x3b2a2284,0x3b871eec,0x3ae7ddd0,0xba387ae4,0xba90e79f,0xb8ff6d29,0x3b20a926,0x3bf63b12,0x3bc89a72,0x3bc5d80e,0x3b828490,0x3b36aff1, +0xbb406b09,0xbc15c0bd,0xbbcbb427,0xbb569259,0xbb3f8dca,0xbbd16a9b,0xbb942656,0x3bb8d2f1,0x3992dcba,0xba7b5a56,0xbb485055,0xbc1147e9,0xbc004fab,0xbba49b4c,0xbb333c52,0xbad9aa81,0x3b3b9c0a,0xb890f2d5,0xbb2e6ccc,0xbb74ec9f,0xbb3a7cf8,0xbb0e739d,0xbaf01839,0xbae42bc7,0xbb7f00d0, +0xbc1eb646,0xbc2a5527,0xbc39eee9,0xbc2d02a9,0xbc23b4d2,0xbbf8bf3e,0xbb47bc45,0x3aaadb27,0x3bc03b3f,0x3c1a06aa,0x3c3c9374,0x3c5d0bc9,0x3c584b29,0x3c3748b1,0x3bc7cbd0,0x3b0bd985,0xba47d682,0xbb38b816,0xbb8e0e43,0xbb0c9a56,0x39b346c8,0x3b4fa167,0x3ba98fca,0x3ba1bdb0,0x3ba439d0, +0x3b832cf8,0x3b48e254,0x3b35a5c7,0x3b5bb7d9,0x3b9d6419,0x3baf8a0c,0x3bdca0a4,0x3ba2e356,0x3a9e6c31,0xbb0913da,0xbb806a8c,0xbb9fed7f,0xbb8030ce,0xbb55d571,0xbb1339db,0xbaf468de,0xbab66693,0xbaf0349d,0x3ac25b2c,0x3b6f7849,0x3babf227,0x3c10f16d,0x3c2d3736,0x3c44b3e4,0x3c5b297a, +0x3c827c2b,0x3c954a13,0x3c77aaf7,0x3c37a238,0x3bd97dd1,0x3b20dcf2,0x3bd31de1,0x3baa5b9f,0x3ba2c95d,0x3bd4dc34,0x3bf29d32,0x3c0d8912,0x3c232c76,0x3c3bdb78,0x3c0fbde4,0x3be21eac,0x3b7d602b,0x3ad2c813,0xbafa7727,0xbb709f85,0xbb954ca2,0xbbac12e1,0xbbde65f3,0xbbca5b30,0xbbbc6fcc, +0xbba894db,0xbba93f10,0xbbab3e31,0xbbb5be0c,0xbb81fe7f,0xbb23a5b1,0xba89080e,0x3a08940e,0x3b202cd5,0x3b97a317,0x3b6de04f,0x3b2e29a0,0x3b13d8d3,0x3b01a93f,0x3b294209,0x3b825080,0x3bb68d6e,0xbc008343,0xbbf77338,0xbc096be5,0xbbe65216,0xbbff1045,0xbbfc2516,0xbbf8bb49,0xbc0164ef, +0xbbfc802a,0xbbffcce2,0xbc00eb8c,0xbbf4d88b,0xbbf1655d,0xbbfa2ee4,0xbbf04795,0xbbe50456,0xbbdf30c8,0xbbd7531c,0xbbdbc847,0xbbd3fa63,0xbbc82438,0xbbbc8afe,0xbbb2aa08,0xbbabf788,0xbba9e702,0xbba3c1f3,0xbbbdc78c,0xbbd84e7f,0xbbe9e609,0xbbeffdad,0xbbe86e6b,0xbbe8b6a2,0xbbd89017, +0xbbda70bf,0xbbeacab0,0xbbfee574,0xbbb54949,0xbbb1f52e,0xbbc160b4,0xbbc861f2,0xbbcdb319,0xbbace48d,0xbbb1b728,0xbbbff26d,0xbbc4eb71,0xbbc7db1b,0xbbc90116,0xbbd0b84f,0xbbd0ea63,0xbbd1e13e,0xbbcdb3fa,0xbbcaa3aa,0xbbcc1df0,0xbbcac059,0xbbc8b0a6,0xbbc50e67,0xbbbde224,0xbbb705ce, +0xbbaffc7d,0xbbab2479,0xbba5f1ce,0xbb9d7fef,0xbba34e89,0xbba53b11,0xbbabab08,0xbbb1007b,0xbbbad443,0xbbc675d6,0xbbc6b6a4,0xbbc4726e,0xbbbc36dd,0xbbb45d6f,0xbbc29c1a,0x3ad51937,0x3af8d678,0x3ac6ec2b,0x3abcb597,0x3ab2a18e,0x3afde28f,0x3a68d425,0x3a31ce36,0x3a4755ae,0xb975082a, +0xba0a5f9f,0xb95b9064,0x393d59a9,0x3a084603,0x39db3cea,0x3ab03ae2,0x3ad032ff,0x3afcf346,0x3ac2749f,0x3aab3795,0x3a6395c0,0x3aa60b20,0x3adbc39d,0x3b26e2d2,0x3b331df3,0x3b333cad,0x3b0f3327,0x3b107084,0x3b0ca951,0x3b1617b7,0x3ae81f1a,0x3ac9fe74,0x3a98784a,0x3afdb7eb,0x3b165636, +0x3b469986,0x3b129970,0x3b275f93,0x3acfc6b2,0x3a6b691c,0x39e3b1cb,0x3aa9404f,0xba520e05,0xbaf77cb8,0xbae8fe45,0xbb78c657,0xbb7df09f,0xbb1db7b1,0xbaf113fd,0xba7f8d70,0xba839928,0x3b0524a9,0x3b437e69,0x3b38f03a,0x3b1b33d8,0x3ad4c166,0x3a729cc4,0x3af30386,0x3b66c5d3,0x3bc7c597, +0x3beb5a7c,0x3be27bc3,0x3b8cd954,0x3b735858,0x3b3d4d98,0x3b5b150f,0x3b1ccad3,0x3b103ec6,0x3ade17b8,0x3b802c30,0x3ba3adf1,0x3bc8fad8,0x3b811e67,0x3b80fae0,0x3ae92d9a,0x39e99999,0xb90df2af,0x3b1bb936,0xbaf44979,0xbb66316c,0xbb7266cd,0xbc17748a,0xbc351e54,0xbbfaa721,0xbbe3f182, +0xbb72263d,0xbb92c57c,0x3b00a3d1,0x3b237ee5,0x3b1ccf96,0x3b043e0a,0x3a00ebd5,0xba5e6eb0,0x3a6d357b,0x3b569103,0x3c02c55e,0x3c1f3a04,0x3c1e01e1,0x3bc2baf5,0x3bd060f5,0x3bbd5650,0x3be262bb,0x3b4b5d83,0x3afb4e74,0x3a92742d,0x3bb9fa75,0x3bfd24a0,0x3c2287cc,0x3bd1f700,0x3b8174d5, +0x3ab813d9,0xbaf713b5,0xbb1a3c77,0x3b357eac,0xbbd95f05,0xbc38e07b,0xbc01c072,0xbc81dfbc,0xbc8b6b5d,0xbc1b2c98,0xbbeaad9d,0xbb683db4,0xba918c6f,0x3ba906be,0x3bf978e4,0x3c07b15a,0x3bad9e33,0x3b2b6c74,0x39a3ba3f,0x3b5e97aa,0x3c10ca48,0x3c90fbf0,0x3cac4905,0x3ca3d0ab,0x3c34e411, +0x3c053b46,0x3ba96a45,0x3c03e592,0x3b74dd7c,0x3b531294,0x3b850654,0x3c3aee64,0x3c732205,0x3c8c9262,0x3c1c8ee5,0x3bff5a95,0x3b4c516a,0x3aab177a,0x3a713570,0x3aaddda7,0x3c1de207,0x3c6a9a4b,0x3c871b84,0x3bba2428,0xba9e9a57,0xbb38d4c3,0xbb8fffb3,0xbb20f2f8,0x3bfed4f7,0xbbf5f551, +0xbc42f12e,0xbc2b1680,0xbc04d5e5,0xbbb94513,0xbbc5d678,0xbbff2f06,0xbc1b8b8a,0xbc7d269d,0xbc7501a2,0xbc39e82c,0xbc0bacd6,0x3c84beba,0x3cbf27d5,0x3c25e9ee,0x3c0be445,0xb99e897a,0xbc4477ea,0xbbc2b848,0xbb5d1d81,0xbb9b43bf,0x3bc101c2,0xbbd62d67,0x3b0c90b1,0x3c954dba,0x3c899f25, +0x3b3c8e1f,0xbca5441f,0xbcd8a8ac,0xbc7613c7,0xbb98e2b6,0x3a026a0f,0xb9d37b90,0xb9bcd9c4,0xbb768803,0xbbb75369,0xb9bf71f3,0x3b820b90,0x3b450ae2,0x3bbabfaa,0x3bf5155f,0x3c3e6f7f,0x3bc89dbb,0x3bdc53f4,0x3c257f3d,0x3c85934d,0x3c6636d8,0x3ad5c016,0xbc433ff1,0xbca9731f,0xbcb764bd, +0xbaf4338a,0x3c267882,0x3c108a6f,0x3ac1e57d,0xbc2150c8,0xbcb90686,0xbc61178f,0xbc3eb64e,0xbd1ebf02,0xbd4db1fd,0xbd1bccec,0x3b47f68f,0xbbf37215,0xbc0e81b2,0x392c710e,0xba83050c,0xb9d5fa59,0xb91b4f1d,0x3a01968d,0x39572095,0xbb578814,0xbb82a6d3,0xbbb9f2ce,0xbb94a259,0xba346d76, +0x3ab3f131,0xb93d4293,0xba9cf257,0xbb7f8db5,0xbc1533f6,0xbc36e4e4,0xbc351083,0xbc10c1e6,0xbb866dea,0x3bc737b6,0x3cb94250,0xbc35d4e6,0xbcc73971,0xbc58a93c,0x387d4c98,0x3c45ffcd,0x3c85acb5,0x3b332bda,0xbaa0c864,0xbb55f6c8,0x3ca62c73,0x3cc81e63,0x3c8b10f6,0x3bc82f70,0x3bbf3805, +0x3be79f2f,0x3abe2997,0x39916c12,0x3a3b6a8f,0xba0687cf,0xba90716a,0xbae24be5,0x39e68471,0x3b621386,0x3bc37f22,0x3b94f726,0x3b42bde8,0x3b04440c,0x3b69fe9c,0x3bb39de1,0x3c0ecaef,0x3bf830a7,0x3b965f20,0xb98f5736,0xb8e414cb,0xbb659f8a,0xbb8d0aba,0xbb4ef7b9,0xba8dc6eb,0xbb142cf1, +0x3ae5d67a,0x3bc8f790,0x3c6508ec,0x3b5a37df,0x3be1c1d0,0x3b4386f2,0xbb6cdf19,0xbbdc470f,0xbbb392cc,0xbacb6bd4,0xb9988285,0x39b2fdd0,0xba84033c,0xbb21628e,0xbb50e360,0xbb392310,0xbb025110,0xbadcd6b8,0xb92f47e8,0xbadfbc12,0xbbc27115,0xbc09a760,0xbc23bcdd,0xbc154cfe,0xbc11e38f, +0xbbf4e6f2,0xbb8e776d,0x39b973a6,0x3b955170,0x3bea3922,0x3c17f2e3,0x3c27baac,0x3c1d8a6b,0x3bc81878,0x3acf81e5,0xbab57ebd,0xbb674d33,0xbb947e65,0xbb5defb2,0x3b5bba91,0xbc0f95e4,0xbbca8b5b,0xbb5d6b45,0xbabaf56b,0x3956f32f,0x38266919,0x38810972,0xb87e7366,0x39f2dbe4,0x3a98e2ed, +0x3acd13b9,0x3b81f9cf,0x3b8d5cc8,0x3b551110,0x39b138ed,0xbafd233e,0xbb8fd6b3,0xbba3bc4b,0xbba251f9,0xbb824c5d,0xbb141da7,0xb98b8abe,0x39dd2921,0x3b948c13,0x3bf97ad8,0x3c1f1f36,0x3c6011ef,0x3c804872,0x3c8be663,0x3c87f6bc,0x3c8576d4,0x3c7df457,0x3c481bb0,0x3bfdd21c,0x3a8048bd, +0xbba5fb46,0x3c3f986b,0x3c37c377,0x3c2fd5bc,0x3c344edb,0x3c3ecfde,0x3c42b461,0x3c425be3,0x3c49f631,0x3c310f81,0x3c21a9c2,0x3c07f599,0x3bc7bf54,0x3b3b4655,0x3aa2ca06,0xba51e8bf,0xbb18defb,0xbb9ea018,0xbb8c38a8,0xbb85d62d,0xbb80610f,0xbb87c202,0xbb937fa8,0xbba1e1cf,0xbb7d83ef, +0xbb3f711f,0xbb0a20ca,0x39fbf9f8,0x3b4bf780,0x3bc818e3,0x3bc7e51f,0x3bcacde4,0x3bcfbaf3,0x3bc9eeae,0x3bdca6bc,0x3c0bb338,0x3c2b87df,0xbb702819,0xbb518118,0xbb8b157b,0xbb322226,0xbb567d13,0xbb505275,0xbb411537,0xbb4437da,0xbb7b7b5d,0xbb9f9f1f,0xbbbf65ae,0xbbcdc568,0xbbdf340d, +0xbbfd2947,0xbbecf9f9,0xbbda60e7,0xbbce4504,0xbbc56475,0xbbca521a,0xbbbc1744,0xbbaedd0f,0xbba1a917,0xbb976536,0xbb935268,0xbb904daf,0xbb8fab90,0xbb9aa2f4,0xbba98741,0xbbaebc4b,0xbbb0d72e,0xbba5da3e,0xbb99d3a4,0xbb7fd02d,0xbb5eed91,0xbb5d8f4c,0xbb75b307,0xbb5d54ab,0xbb42d570, +0xbb74b574,0xbb8271c4,0xbb8b41b7,0xbb4d7ed2,0xbb5bb44b,0xbb63ab09,0xbb863dc9,0xbb9186d1,0xbb9dd4a0,0xbbaebb1f,0xbbbac0a8,0xbbcbbeca,0xbbb9c880,0xbbb29f06,0xbbbb2717,0xbbb2d88b,0xbbacd4a3,0xbba57d1e,0xbba4e770,0xbba2c372,0xbba03f29,0xbb9e67a2,0xbb9c5088,0xbb9941cb,0xbb977562, +0xbb93c621,0xbb92db47,0xbb8d46fb,0xbb8b7901,0xbb8c7363,0xbb8af745,0xbb891921,0xbb816347,0xbb69dc0e,0xbbac7679,0x3a9fe276,0x3ac5c9c0,0x3abbcc34,0x3aa558a0,0x3a936475,0x3a7dc11e,0x3a532b7d,0x3a19d978,0xb95cde03,0xb9a6007c,0xba226a00,0xba45fc16,0xb9841431,0x389cceca,0xb93484fc, +0x3a543ba2,0x3a81963b,0x3a9ab02f,0x3a909ab5,0x3a8b50e9,0x3a5c92e2,0x3a91fbd7,0x3abb3c57,0x3b06d58d,0x3b154d19,0x3b125ec5,0x3ac5c94e,0x3ae7556d,0x3ae8ab2b,0x3b16309f,0x3a98fedc,0x3a708cfc,0x3a37f7f8,0x3ae64054,0x3b0a079e,0x3b267344,0x3ae7bdf5,0x3ac0aac6,0x3aa69780,0x3a1be65f, +0xb912138b,0xba8eefe8,0xba38a618,0xbac68657,0xbb6890b6,0xbb42b8ee,0xbb2cfa7c,0xbb276a4d,0xbabd49dc,0xba990f47,0xbb0c0e7a,0x3a700827,0x3aef283b,0x3ac71d15,0x3b0cb0d6,0x3b0a6db8,0x3afd5704,0x3b302c52,0x3b7fca3d,0x3bb60d6e,0x3bd33021,0x3bbf1404,0x3b3f55e8,0x3b44166b,0x3b328100, +0x3b8a4124,0x3ad7ba6a,0x3a8b2150,0x3a463315,0x3b6fc78a,0x3b9de9e1,0x3ba4bc2f,0x3b369d61,0x3b452e50,0x3b36daad,0x3a77bf72,0x39096c70,0xba69e5ea,0xba5465e9,0xbb0db113,0xbbe338be,0xbc01f25b,0xbc24ef13,0xbc18248b,0xbbf13309,0xbb927228,0xbbd21086,0x3a18f3e5,0x3a2a7395,0xb95076c7, +0x3ab53f34,0x3a7603d2,0x3a1e88d2,0x3af007fc,0x3b6e006c,0x3be4fbd5,0x3c0e17b0,0x3c06d857,0x3b83d540,0x3bb4e37d,0x3babb764,0x3c040613,0x3aaa0c21,0x390b6901,0x39535ac0,0x3bc6447c,0x3c020d8f,0x3c0b1545,0x3ba8488a,0x39fcbe91,0x3a2da2d8,0xbb2218eb,0xbb7d0cca,0xbb93ce27,0xbbafb472, +0xbc1b6041,0xbc53e637,0xbc7e65b5,0xbc82bd3d,0xbc0ae4be,0xbc01d0eb,0xbbbe55b5,0xbbb68abb,0x3b34abff,0x3b8de718,0x3b74e8ad,0x3bbdb97f,0x3bb9e595,0x3ba50641,0x3bf1eba8,0x3c38171a,0x3c8c21f4,0x3c9f7440,0x3c898c80,0x3bf63c70,0x3bda8651,0x3bcd44bf,0x3c4067d6,0x3b39b3f2,0x3a1c9eb2, +0x3ad64e23,0x3c2d2d2d,0x3c699dab,0x3c5fc3f0,0x3bbe443d,0x3c915593,0x3c3599c7,0x3c333133,0x3c1b6472,0x3bc88981,0x3c4ae20b,0x3c86954d,0x3c936fb6,0x3c11da66,0x3ad620a2,0x39b03083,0xbad34f83,0xbaa20104,0x3bc907ed,0xbb982aab,0xbc1b8af0,0xbc6ad395,0xbc6c56a4,0xbc782440,0xbc870bc8, +0xbc85548f,0xbc896a68,0xbcae5ada,0xbc83a163,0xbc26c385,0xbba82e38,0x3c49fad6,0x3c695211,0x3adfce3c,0x3aa6bca7,0xbb194ad3,0xbbfb77a0,0xbab0ea82,0x3a50c231,0xbb01e9ba,0x3c595269,0xbc0f31dc,0xbb6f7c06,0x3bdbd74f,0x3c1e5c61,0x3bf208f8,0xbc85ae5c,0xbcc70b10,0xbc69da51,0xbbb7d6bf, +0xb9db8c63,0xba03eab8,0x39b18e52,0xbb33fe92,0xbbb1360c,0x398ffbe1,0x3b8711cd,0x3b82473b,0x3b8807f1,0x3bd406ef,0x3c4707d9,0x3c2c8d5d,0x3c46d88c,0x3c51e4ca,0x3c877562,0x3c1addc8,0xbbc67f80,0xbc8a463b,0xbcaa109b,0xbc68fbc3,0x3b95df0b,0x3c369970,0x3bb97d2e,0xbbece36e,0xbc89d9df, +0xbc932bf1,0xbc51431c,0xbc89d435,0xbc968ffb,0xbcef7831,0xbccd1a92,0xbbdc9997,0xbb6d15ea,0xbb6f23f1,0xbb957ed3,0xb967fe47,0x3a2f54c2,0xb946a273,0x394906a1,0x3a597cd9,0xba91bc16,0xbb75eb24,0xbbce026a,0xbbbce729,0xbb5c4a0a,0xbb26288f,0xbbbb99b2,0xbba11d87,0xbbd09c03,0xbc3283b0, +0xbc33a3d3,0xbc1c4c71,0xbc08a77f,0x3b276309,0x3c2067ba,0x3c85fe63,0xbc8706d3,0xbcbf049e,0xbb55438f,0x3bb0b308,0x3c811119,0x3cd6f304,0xbbad5245,0x3c01baa5,0xbb4cd63e,0x3b42b229,0x3c081e3a,0x3c2b9bdc,0x3a423854,0xb8d43dbb,0x3b6dc368,0x3aab8624,0xb8fb1d9a,0x39b6483c,0x3971e9f1, +0xba6b8b9d,0xbb08666a,0x392a6715,0x3b56623b,0x3bcddd86,0x3bba6c8d,0x3bad2efc,0x3b9cf78a,0x3bda279b,0x3bec9670,0x3bf32730,0x3beb423b,0x3b73319b,0xbb0aaabb,0xbb01724b,0xbb7f0f33,0xba986799,0xbb1f4474,0x39fb27ec,0x3b03667e,0x3c5a403b,0x3c8db582,0x3c714e80,0x3c42c94a,0x3c100bfa, +0x3bbc91a8,0x3afb31a2,0xbb0e0007,0xbad234e7,0x38deb8dc,0x39a2efea,0xbae63eaa,0xba4ae77c,0xba3b755c,0xba284a2f,0xbabb75ad,0xbab5ee3a,0xba54beb4,0x3a5c3948,0x3990f02a,0xbaa4e5ad,0xbb99947b,0xbbe2b0e8,0xbbe459a2,0xbbcb66bc,0xbbac8a9e,0xbb6a738b,0x3615b71e,0x3b4c31ad,0x3bae3a4c, +0x3bb9407e,0x3ba770ef,0x3b88fb42,0xb951edc5,0xbb6cab69,0xbbc1cd27,0xbbe87a94,0xbbc62bf2,0xbb25bcc7,0x3bbf5626,0xbc3ee17a,0xbc3c05b0,0xbc0da638,0xbbbc74ad,0xbb63f35d,0xbb1ee82f,0xbabc6d02,0xba99d13a,0xba56e4d3,0xba8e794e,0xba9e07d2,0x39c5000b,0x3b04e120,0x3b63886c,0x3afd5b85, +0x37edd23d,0xbb40ea7c,0xbba9c6b2,0xbbc5eaa8,0xbbb37e94,0xbb605fec,0xba39ca84,0x3ae0fb97,0x3bbfde0c,0x3c1545c7,0x3c393f76,0x3c712bcd,0x3c869072,0x3c8c5eb9,0x3c7145f9,0x3c3a5a1b,0x3be5f116,0x3b759aa7,0x39ca3720,0xbb8e8b27,0xbc0fd318,0x3c229607,0x3c29d02e,0x3c2ac29d,0x3c1eaba3, +0x3c23161b,0x3c1d08bf,0x3c0e2688,0x3c0664a2,0x3c0bf743,0x3c163179,0x3c1e2e28,0x3c096bdd,0x3bd16999,0x3bb18f9b,0x3b12c63f,0xb80533e1,0xbb420560,0xbb20c91f,0xbb1c0428,0xbb2261ce,0xbb3693d5,0xbb5d1257,0xbb830148,0xbb643526,0xbb434ecb,0xbb330fd6,0xb82b9dc5,0x3b1edc60,0x3badd21c, +0x3bcdd89d,0x3bf70f44,0x3c0d37f9,0x3c08177d,0x3c06ecf6,0x3c112d95,0x3c1c7880,0x3b1fbfc7,0x3b413af5,0x3abd03a9,0x3b0d282e,0x3ab8b3c8,0x3a9257f7,0x3a9d1c8e,0x3a6c2c9d,0xb8db02d1,0xbad269e4,0xbb4332a9,0xbb78d55e,0xbb9558f4,0xbbb37560,0xbbafd675,0xbba20835,0xbb9f777c,0xbba37e15, +0xbbb295b6,0xbbae6887,0xbba1f89c,0xbb945c74,0xbb88ef26,0xbb84ebdf,0xbb8138b5,0xbb836918,0xbb63d6a0,0xbb4c59e5,0xbb2875ae,0xbb0d71a6,0xbacb12d6,0xba2760ff,0x38a34ccb,0x3a7a5155,0x3ad3e2e4,0x3b027b31,0xba9d7e2b,0xba0cffb7,0xbaad5f08,0xbac66640,0xbaf832c1,0xba836af2,0xbab38115, +0xbad542fb,0xbb1b4dc5,0xbb335d79,0xbb4f8779,0xbb710337,0xbb88831e,0xbb9c87ac,0xbb856a06,0xbb830c13,0xbb959246,0xbb8da368,0xbb8bd18d,0xbb8b4be9,0xbb8ce4fd,0xbb8e7444,0xbb8f625b,0xbb8fedc2,0xbb8f5ce4,0xbb91724b,0xbb85cd5f,0xbb781546,0xbb654338,0xbb469c93,0xbb2cd902,0xbb172f69, +0xbb0c7739,0xbb037572,0xbaee96b7,0xbac39aff,0xbb90d53a,0x3a396f82,0x3a835834,0x3a974f9e,0x3a5805dc,0x3a31304c,0x39674e20,0x3a1b63cc,0x39ac2f88,0xba93f7e1,0xb9fa7b29,0xba454650,0xbabe8c01,0xba2f16c5,0xb9b3be9b,0xba33d1a4,0x3904d3ad,0x3994bd20,0x3a1b1f88,0x3a16547e,0x3a2395ba, +0x3a33fcd1,0x3a5b2bea,0x3a8c2b14,0x3ac5709f,0x3add994b,0x3ad412c7,0x3a6e6a27,0x3a9bd183,0x3aa10909,0x3b070b6a,0x3a164bef,0x399fd66d,0x38e62e78,0x3aab7f8f,0x3ad50d67,0x3ae0ebda,0x3a98efd1,0x3a149820,0x3a6faf84,0xb85ac58b,0xba559596,0xbb1ac051,0xba117c92,0xba820f4e,0xbb8adbb2, +0xbae07b80,0xbaa4bf80,0xbb2d12b3,0xba50f3c2,0xba8157e3,0xbb291d14,0xb9d4f13f,0x398ed8d5,0x3a19744e,0x3aaacee3,0x3aee669d,0x3b1a6175,0x3b3e7924,0x3b76398f,0x3b98d095,0x3ba8f702,0x3b8c04f9,0x3acd1a4e,0x3ad42067,0x3af74525,0x3b925d3b,0x3a6f0d3c,0x3891f021,0xb9367e7b,0x3b426921, +0x3b824cb8,0x3b5ab240,0x3ad20325,0x3b0a19dc,0x3b537b95,0x3a311877,0xb9186d21,0xbb3088e8,0x389a68fa,0xba91c552,0xbc19661e,0xbbd4c4b4,0xbc0990d0,0xbc3cc74b,0xbbe37ee9,0xbb9bac19,0xbbed390b,0xbaa06e30,0xbab6d487,0xbaafd560,0x391f95e7,0x3a3e568d,0x3ae321f9,0x3b1914e6,0x3b746766, +0x3bc042a7,0x3becc243,0x3bd71e62,0x3b2658be,0x3b7df289,0x3b7ce7bb,0x3c08c777,0xb7aa281f,0xba8e0bc4,0xba6a18c2,0x3bb20fd2,0x3be53dd9,0x3bc31bc3,0x3b73d306,0xbac391a7,0x394e2437,0xbb5a7a0e,0xbba72ed6,0xbc12b4b6,0xbb71b5aa,0xbbd6ea21,0xbc6f8f20,0xbc35af91,0xbc35bada,0xbbd2fbed, +0xbbb3858c,0xbba479ba,0xbbfabcc4,0xb9d21cd9,0x38ac2692,0xb81a19fc,0x3b8d0c07,0x3bbf344d,0x3bfe0d3f,0x3c17ca3f,0x3c43c6ab,0x3c772c87,0x3c85759b,0x3c4a39f3,0x3b69500a,0x3b365d3e,0x3ba797ee,0x3c5d0227,0x3b04419f,0xbac26cfd,0xba0dde05,0x3c11e3e5,0x3c42ffbf,0x3c0bf8bd,0x3b20ca70, +0x3cb374a3,0x3c8571f6,0x3c7b7f15,0x3c6098cd,0x3c2ca287,0x3c6113de,0x3c70febb,0x3c56f83e,0x3c0fdbf3,0x3b61ed79,0x3b245607,0x3a967456,0x3a5160da,0x3b57e2e9,0x3929ec96,0xbb809182,0xbc731494,0xbc840f8c,0xbc977353,0xbc9fa51a,0xbca14dd3,0xbca3a7f7,0xbcb1824b,0xbc70c4ba,0xbbdcb16b, +0x3b571783,0x3c18ee3f,0x3bca75ec,0xbb8265e9,0xbb70ab99,0xbb3ca6c6,0xbac07864,0x3a159845,0x3b50b2a2,0x3b8656ef,0x3c8e313c,0xbc0393ce,0xbbbaf50e,0xbb14a3f0,0x3b22af6c,0x3c08f2ea,0xbc2e3388,0xbc8c5845,0xbc276eb8,0xbb822517,0xbaa80857,0xbaa672e5,0xb996cb05,0xba8daf6c,0xbb80c92f, +0xb99cf33c,0x3b2d10e8,0x3b4cb91f,0x3b0315b0,0x3b8a848f,0x3c232fa6,0x3c489bf2,0x3c6a34cc,0x3c529a02,0x3c33a9ce,0x3af0074c,0xbc28d5b0,0xbca29bd9,0xbc9a6842,0xbbb9e2fa,0x3c0cfab5,0x3c297c6d,0x3b913add,0xbc33961e,0xbc9c569d,0xbc690f3e,0xbc3609dc,0xbc861da5,0xbb43c00a,0xbc650811, +0xbc724c66,0xbc86dab6,0x3a0fe2d6,0x3af31c98,0xbb82494d,0x3b089614,0x3a271da3,0x3a30261a,0x390917f5,0x3a52d0b6,0x3a41727d,0xbb0dd14b,0xbba00fc2,0xbbb85ebc,0xbb85eaaf,0xbb8d6f7d,0xbbf8de7a,0xbbd9fbde,0xbbf7287e,0xbc1f9013,0xbc0cfc4e,0xbbcdc1a4,0xbba5ca08,0x3c2a0b18,0x3c4ecdc0, +0x3bbaf170,0xbc977160,0xbc998504,0x3baccc5d,0x3c13fb58,0x3c88c4bf,0x3cf6ab8d,0xbbd09ed4,0x3c7d12b1,0x3c7c5ddc,0xbc20d9d0,0xbc5bcac4,0xbbbf6cb3,0xbb64dd0f,0xbaea56ed,0xb94ed0e1,0x38c240d1,0xba600265,0xb9bd4fe0,0xb9448a9e,0xb9a3ea42,0xba8f1c33,0x34c0fcb9,0x3b0d0f6b,0x3bbe2995, +0x3bc52ebe,0x3bd302f3,0x3bde336f,0x3c009a1b,0x3bdfdd30,0x3b95cc78,0x3b735113,0x3ae69c8e,0xbb0866f1,0xbb5c96d1,0xbb99a9d1,0xba8599c1,0xbb1f0ab7,0x3b6001ad,0x3c482af6,0x3c96890b,0x3c7741eb,0x3b0fba8b,0x3c2633c5,0x3bf8c522,0x3bd6492e,0x3bf908ea,0x3bbf816d,0x3b95ad2a,0x3a9908aa, +0xb9d30a83,0xbaf5eca7,0x3964c5b9,0x3a1c0c16,0x3a42a77e,0x3997b1aa,0xb94eadf1,0xb911ffd3,0x3aa317b5,0x3af4db59,0x3b2ffc52,0xb913d4bf,0xbb258ec0,0xbb6d2b8d,0xbb43f859,0xbb1599f8,0xba719734,0x39cffeae,0x3ad495c4,0x3b43ad56,0x3abbfb8d,0xb977aa94,0xbafb5afa,0xbbc72c3d,0xbc0e3330, +0xbc27637e,0xbc1a1c8b,0xbb9fe63c,0xb90d09ff,0x3bf1df6e,0xbc056bcd,0xbc2af6a8,0xbc1b6e04,0xbc00e610,0xbbbd6614,0xbb86914d,0xbb2a91da,0xbb101751,0xbabe9c9d,0xbadfe45b,0xbb00b028,0xbae7136f,0xb9e0f636,0x3ae5e2b8,0x3b0d16e5,0x3a8ee6f2,0xbac26422,0xbb90092b,0xbbbe70f7,0xbbb524d3, +0xbb8edfba,0xbb1a9227,0x39ed7b9f,0x3b96943b,0x3bfd494e,0x3c1ecb67,0x3c3fcd05,0x3c499aa2,0x3c412411,0x3c14570d,0x3b9a2f7e,0xbaacdcef,0xbb92134d,0xbbda50ab,0xbc00882f,0xbc05e6a9,0x3b1601ea,0x3b59b5cd,0x3b91e2ef,0x3b8546eb,0x3b925983,0x3b8581ab,0x3b4f0916,0x3b169dfc,0x3b867a7c, +0x3bbca02e,0x3bfa7c99,0x3bf58df9,0x3bf0e4a1,0x3bf4681b,0x3b856a3e,0x3adfc3a9,0xba1a52a7,0xba3afce0,0xba95e9b4,0xbb0589a1,0xbb00cc70,0xbb10f879,0xbb2fc202,0xbb18b00a,0xbafd514f,0xbad610fe,0x3a112e33,0x3b241dd5,0x3b9bbfb4,0x3badc5ad,0x3bcab7fc,0x3be4c440,0x3bc1ee3c,0x3b99fd54, +0x3b533293,0x3b3a3fb6,0x3bd1d269,0x3be2d2a5,0x3bc5188c,0x3bb9764a,0x3ba7369b,0x3b97e9a3,0x3b9b7239,0x3b9576ae,0x3b75cd67,0x3b205567,0x3aa68402,0x39e2dd10,0xb9d757b5,0xba8c1b30,0xbae2f79f,0xbaebc2cc,0xbb198561,0xbb48e2b3,0xbb874e82,0xbb8c520d,0xbb81721a,0xbb751bbb,0xbb61a65a, +0xbb5d7fcc,0xbb598a02,0xbb63db5c,0xbb1e374d,0xbad117bd,0xba267db4,0x3946bc9f,0x3a92343a,0x3b1a599f,0x3b3c3d19,0x3b792ab3,0x3b99fa76,0x3bb98e9a,0x395a5803,0x3a4609df,0x396eb5cd,0x39438c23,0xb8f73429,0x3a08abf5,0x38b0fef9,0xb99bda74,0xba63b7cd,0xba960275,0xbac337cd,0xbaec258d, +0xbb0e2b74,0xbb27a6b3,0xbb06f6da,0xbb09bcd6,0xbb5760c8,0xbb4840b5,0xbb4e06c2,0xbb4bd019,0xbb52cc63,0xbb579e5a,0xbb5c0528,0xbb5eca3d,0xbb5de3a6,0xbb66d352,0xbb46445a,0xbb2dff94,0xbb150e39,0xbae3ad98,0xbaa79c6c,0xba5973b4,0xba1ddeed,0xb9c3aad3,0xb9317c1f,0xb7a21b46,0xbb45255c, +0x3a076c64,0x3a5761e1,0x3a8d5d41,0x3a263c93,0x39ebeccb,0xb88e4843,0x3a1138b2,0x398d13a7,0xbab47e7d,0xb9c9a87f,0xba1e646d,0xbacb3711,0xba3ed69a,0xb9f8f07d,0xba36f32e,0xb9a50b6a,0xb91b73dc,0x39dde571,0x39a6c8b4,0x39d912a4,0x3a25ea8b,0x3a3eb480,0x3a72c656,0x3ab15bd9,0x3aac2c1d, +0x3aa0555f,0x3a43f164,0x3a5a9263,0x3a66a6fc,0x3b02cfa5,0x39b1d726,0x38c19822,0xb7eb2161,0x3a95ea47,0x3abb5029,0x3aa0a9d0,0x3a769f17,0x39b4cc5c,0x3a739d50,0xb9a96d86,0xba6f614c,0xbb151fdb,0xb941f086,0xb97bf4a3,0xbb7124d3,0xba0015dc,0xb90d876c,0xbb23668b,0xb9ff1251,0xba5c6b0e, +0xbb05b703,0xbaad0303,0xba69d8cd,0x39e89987,0x3a09b542,0x3aa70b40,0x3b10e9e0,0x3b2f1a91,0x3b5a74be,0x3b83bac3,0x3b6f8879,0x3b29f6b1,0x3a28f7ed,0x3995001a,0x3a81c512,0x3b92d165,0x3a089929,0xb9a61546,0xb9823183,0x3b32fb06,0x3b5f9e32,0x3b0794e6,0x3a878974,0x3af7c295,0x3b5e7ed5, +0x3a00f0f3,0xb9a38dc8,0xbb40f8eb,0x3a37bba3,0xb9decc96,0xbc197625,0xbb9c1dae,0xbbc8ec1b,0xbc3bc482,0xbbbdd827,0xbb990428,0xbbc818a1,0xbb519dd3,0xbb568a5a,0xba4a91f0,0xba664f69,0x39a84125,0x3b082759,0x3b19f0cf,0x3b6ec7c7,0x3bb34aa9,0x3bb66a3a,0x3b9c8311,0x3aee84a0,0x3b15b8dd, +0x3b1aee97,0x3c07af39,0xba292ee9,0xbab601e9,0xba4ba1c9,0x3ba96fda,0x3bd2cfd5,0x3b8892f6,0x3b4fb6d1,0xbad31514,0x396e1ad0,0xbb57d036,0xbbacfcb9,0xbc202837,0xbb0999f2,0xbb6441f3,0xbc377b5c,0xbbb210b1,0xbb9f8dbd,0xbb37dcf9,0xbb000ff3,0xbb1d4871,0xbbc7681d,0xbb3ed997,0xbb7317cb, +0xbaef62a2,0x3ae4934c,0x3b8507c3,0x3bfe21b3,0x3c106c47,0x3c352067,0x3c542959,0x3c3f43ba,0x3bdf3262,0xb9851fc6,0xbae1124b,0x3b368479,0x3c5caa63,0x3ab31174,0xbb1a9392,0xb9e8e577,0x3c0b28e8,0x3c241da7,0x3b8aa7de,0x3a14bfba,0x3cb737c9,0x3c9102bb,0x3c7756aa,0x3c63347f,0x3c55c2d7, +0x3c513655,0x3c247f11,0x3bbe449c,0x3baaeaa1,0x3ae7d266,0x3afeab6a,0x3a7097b9,0x3acdfd2d,0x3a70b42d,0x3b6052ca,0x3b063daa,0xbc3aeb4a,0xbc611485,0xbc85c3cf,0xbc8b965c,0xbc98cd1e,0xbc99cc9b,0xbc88387b,0xbc1ffa96,0x39d8d309,0x3c717747,0x3c46de98,0x3b972c3b,0xbbbb65f9,0xbb9bcf10, +0xbb02481e,0x3b44b05c,0x3949599a,0x3b9465fc,0x3c51d5d4,0x3ca6b15d,0xbbb8f513,0xbb86348a,0xbbbf8e04,0xbaff7e97,0x3bd63ab4,0xbbba0b7c,0xbc177bbc,0xbb84c11a,0xbabd1151,0xba9bd16c,0xba505cb3,0xba4e4395,0xb9a9c484,0xbad2d7b9,0xbaa2d5b6,0x3a2f2400,0x3b05a54c,0xb91c747b,0x3aa90391, +0x3bc41410,0x3c29ce11,0x3c5118f4,0x3c35d7d1,0x3b97b74f,0xbb8f95e5,0xbc51577b,0xbca678bb,0xbc6a7c57,0x3b62ecb8,0x3c26d19d,0x3c0644f4,0x3b952b12,0xbc4917db,0xbc982384,0xbc38ab19,0xbc181e76,0xbbdfcec4,0x3c2f92d2,0xbb705788,0xbc01a0f5,0xbc7c4d45,0x3aeaa3dc,0x3b29ca1c,0xb8a29aa9, +0x3ac837e5,0x399c0ed1,0x3a2a2a26,0x39d5b800,0x39873f74,0x3a634878,0xb8e882a3,0xbb07a8dc,0xbb7a6b28,0xbb0c84bb,0xbb15cc0d,0xbb984b8f,0xbbb19ae1,0xbbe0fef4,0xbbdd0a80,0xbbbb456a,0xbaea6fad,0x3b389ead,0x3c8adccc,0x3c609e78,0xbb58bbe8,0xbc835617,0xbc3a364c,0x3c4f08ea,0x3c6777de, +0x3c9caf2c,0x3ce135cc,0xb8de9bc1,0x3c00e6b3,0x3cde6fe0,0xbc603036,0xbce63688,0xbcb22c51,0xbba0a618,0xba6820b3,0xba8a94b0,0xb98157ed,0xba21a1f6,0xb9cb6893,0xb9f89bbe,0xb9a8dade,0xb9bc3e49,0xb9c17b64,0x3a05bcfc,0x3b886364,0x3bc59202,0x3be1214e,0x3c00def6,0x3bf31248,0x3baaaf13, +0x3afe716a,0xb9a77a59,0xbaa7986b,0xbb0da00f,0xbb768f4c,0xbb864be8,0xbafd1994,0x3ac648fa,0x3c1f52be,0x3cc083f7,0x3c4a978c,0xb9f54fad,0xbc692896,0xbb7e499b,0x3c074d2e,0x3c3901c8,0x3c83d0db,0x3c87c99b,0x3c2211d0,0x3b21c30e,0xba35785a,0xba0270e2,0x3a3c876e,0x3a14ddbb,0x3a3e3f9e, +0x3a4499f8,0x3a180a68,0x39832598,0x3aad37b2,0x3b37538c,0x3bab20b9,0x3b988079,0x3b37a35c,0x3aaae2fa,0x3a729d21,0x3a871f33,0x3b0733f1,0x3b06bcc9,0x3aee333e,0x3aff8d03,0xba9f6c49,0xbb5726e7,0xbb9dbc23,0xbc08115c,0xbc2ca162,0xbc31f367,0xbbf4c47e,0xba2d65ec,0x3b7889df,0x3c057af1, +0xbb046b2d,0xbba24706,0xbbd62ebe,0xbbe8af3c,0xbbc897bd,0xbb99471f,0xbb482a6e,0xbb29fa4a,0xbaae6ddf,0xbaa7c982,0xbad1f7c8,0xbb01a7d2,0xbacddb1a,0xb986df6a,0x3aa9aab5,0x3ab671c8,0x387458db,0xbb36570d,0xbb8aef25,0xbb8645e7,0xbb803185,0xbb509aef,0xbab57af4,0x3b0a2aee,0x3b9755d7, +0x3bc5faa7,0x3bdea3ce,0x3bda1387,0x3bb76fbd,0x3b92f646,0x3acaaca6,0xbb7b4ba0,0xbbd05fbe,0xbbffc3ed,0xbbcd33b4,0xbb84a558,0xbb7e3528,0xbb466157,0xbaae59e8,0xba1d9537,0x3967617e,0x38a2169d,0xb9bc6151,0xba7940e8,0x3a87bdea,0x3b2dea65,0x3b94d734,0x3ba12b4d,0x3bbfb318,0x3bda7a27, +0x3b9b90a3,0x3b4da099,0x3b06a522,0x3aa664ee,0x394d4782,0xbaa1da54,0xb9abd3d8,0x38705706,0x39798454,0x3a654c35,0x3ad0a8c1,0x3b1f0f57,0x3b6b7b6d,0x3b96c731,0x3bb8c58f,0x3b9f160b,0x3b8b2785,0x3b7f1de2,0x3b0fc6f9,0x394fd251,0xbb2fab96,0xbb4f6b2c,0x3bf3fba2,0x3bfe4c09,0x3bf1842a, +0x3bd9a861,0x3bceaf5a,0x3bc23253,0x3bc85335,0x3bca6e62,0x3bc28f56,0x3bb2c11d,0x3ba5923c,0x3b9d03e7,0x3b8f88f3,0x3b89c335,0x3b337d4f,0x3b10a46f,0x3aad2f66,0x39754131,0xbab7799e,0xbaacb05e,0xba847776,0xba873f18,0xba5d84c6,0xba56d3ec,0xba54a990,0xba753f1b,0x38ded5d4,0x3a75aa26, +0x3afb241d,0x3b3d57ce,0x3b80e1dc,0x3ba44c9c,0x3ba8161e,0x3bb8b154,0x3bc7d303,0x3be29abd,0x3b0ba6d4,0x3b1a80fd,0x3b017163,0x3af7470e,0x3ac04a5e,0x3b1276e4,0x3ad887c5,0x3a8c66cd,0x3a6ac6d8,0x3a5056af,0x3a26f1ff,0x3a15279a,0x39e31f86,0x39fa96cf,0x3a78da08,0x3a8f8a03,0xba5c8590, +0xb9a06cda,0xb9a0e539,0x373613f0,0xb936eaac,0xb92e2820,0xb94a9dc9,0xb95ba033,0xb93940b4,0xb99c8684,0x390719ad,0x39dcdc19,0x3a34778d,0x3a88f8f6,0x3aad89f2,0x3ade9c5e,0x3aeda2ee,0x3b0344c6,0x3b0f7450,0x3b0accc5,0x39dcd94d,0xb93e8a89,0x397e8e18,0x39e86223,0x3921f3c7,0x382ef107, +0xb97f6d18,0x3697c16a,0xb683126b,0xba976d61,0xb98daeab,0xb9b4d394,0xba874895,0xba12641a,0xba0a3a89,0xb9dff8f2,0xba5d9eeb,0xba5eb6a3,0x39cc50c9,0xb8af0503,0xb8e6a264,0xb9073acc,0x38876061,0x395d73cc,0x3a2d8e01,0x39a13132,0x395b3102,0x38063de5,0xb61317b4,0x3863e75a,0x3a9c85fe, +0xb9c041a0,0xba10c488,0xba0b111c,0x3a007c44,0x3a4361a3,0x39b75a8e,0x39a5d3ad,0xb89aca5c,0x3a029fee,0xb9cefbf5,0xba899269,0xbb04ae2d,0xb982c1de,0xb94746b7,0xbb439ad6,0xb993c677,0xb9aa7730,0xbb406256,0xbae4e998,0xbae84075,0xbab64eb0,0xbb15d749,0xbafe10cd,0x39a1966e,0xb9baa36e, +0x3a02a474,0x3a6da2a9,0x3abb2318,0x3af702df,0x3b23247b,0x3a8bc83e,0xb6e68196,0xba5f0788,0xba948eae,0xb91b3bc7,0x3b56ae32,0xb9e48ab3,0xba8fa3b1,0xba1ce199,0x3afc0965,0x3b14ca26,0x3a0289fb,0x3976d656,0x3ac80939,0x3b3deebb,0x39b99933,0xba2853b7,0xbb3871e1,0x3a129384,0xb99080b3, +0xbbdecaa5,0xbb52b83b,0xbb7b0828,0xbbfc6b51,0xbb8e63e2,0xbb91eb61,0xbb79fa68,0xbb989753,0xbba1bb3f,0x38147fd2,0xbacde822,0xb9ad8912,0x3a55e197,0x3aa6ec9e,0x3b1bfee4,0x3b89f543,0x3b1fb3e1,0x3ad474cf,0x399d3976,0x3a08f782,0x3a3417dd,0x3bd085bd,0xbadb0775,0xbb0240d4,0xba24f039, +0x3b8c4ab7,0x3bacb306,0x3b1d308c,0x3b28f7c9,0xba9e57f4,0x399b880c,0xbb1a7079,0xbb963f12,0xbc0241e4,0xba757a5b,0xbaaae4a9,0xbbb23200,0xbab042d0,0xba61db59,0xb91711f1,0xb989bd26,0xb9fca248,0xbb2689ca,0xbb5be853,0xbbaf7f30,0xbaf6115c,0xba140808,0x3ae2a13d,0x3b9e2bff,0x3bc612a9, +0x3c016e4e,0x3c15e8f2,0x3b95124f,0xba0a49e8,0xbb8c8757,0xbb98b9d1,0x3a5a5d78,0x3c2d0af1,0xb89804bb,0xbb48f9ea,0x38fde3fa,0x3bf5ece9,0x3bf612f7,0x39d0110c,0xba30c320,0x3ca7cdce,0x3c75deeb,0x3c4e006f,0x3c3d9e78,0x3c38d0fb,0x3c0f8fba,0x3b8ecef0,0x3aae3044,0x3ab8cb20,0x392b0779, +0x3a11a7d6,0x379aca7d,0x3a655841,0x37d1770f,0x3b591207,0x3b972e6d,0xbbaa41ca,0xbc1d6fbe,0xbc4ab0f1,0xbc55601c,0xbc7ed65a,0xbc77c01d,0xbc23a45b,0xbb594e04,0x3bf4964c,0x3cad2ecf,0x3c5d118e,0x3b56724a,0xbbd71f3e,0xbbb6296c,0xbb1af0a8,0x3b72be58,0xba9ebbc6,0x3ba14d69,0x3c9a8e1c, +0x3cb09f9e,0xbb3e7d97,0xba09ec75,0xbbb0077b,0xbb6149e0,0x3b38cf89,0xbb1acff0,0xbb3bd80d,0xb9bfe8c1,0xba206a2b,0xb9807a93,0xb9564e9e,0xb9440ce2,0xb9987a01,0xb99fe130,0xbaa0ab91,0xba863053,0x3aa4b2b3,0xbadc3068,0xbae1bc84,0x3a6bc552,0x3bbdcd3e,0x3c0cddf6,0x3bfdd5da,0xb82fe3c1, +0xbc0d4a1d,0xbc826ff2,0xbc9fcf00,0xbc1a8165,0x3c23a59c,0x3c05ca1d,0x3b593ccf,0x3adb9f2d,0xbc71d41f,0xbc96f2f9,0xbc22e3d8,0xbc0005df,0x3b4d9be5,0x3c9aa72f,0x3bbc95a5,0xbac303fc,0xbc04ad4c,0x39faf2de,0x3ab4fc02,0x399a48f1,0x39725a70,0x395d8034,0x390772a3,0x39462cc9,0x3932beff, +0x39898448,0x3a14ba1c,0x39982f3f,0xbabe74a6,0x3a248c1d,0x3a9a9f7d,0x38f3921e,0xbb3b3de2,0xbbab925d,0xbb86b415,0xbb750c9e,0x3b0ee193,0x3c40b563,0x3c942bf2,0x3c2129c3,0xbc3403b2,0xbc3aeda7,0xbb53a339,0x3c801080,0x3c8fc0a2,0x3ca09990,0x3c9055b0,0x3b901950,0xbc39c708,0x3c3daaf8, +0xbc512744,0xbce2abce,0xbcce0a46,0xbba4e49f,0xb990c6a1,0xb9a7d046,0xb937921d,0xb94eadce,0xb93d864a,0xb96c213f,0xb97c24ab,0xb93d9ee0,0xba0787b6,0xba24e8cd,0x3a98d588,0x3b978d7e,0x3bcc81a0,0x3be4d96c,0x3baea15f,0x3b318186,0xba283154,0xbb799a1c,0xbbb37258,0xbba58864,0xbbb7ae4d, +0xbb847cb9,0xbb8620da,0x3bfeaa69,0x3c70db32,0x3cb5f3bd,0xbb1d0cfe,0xbc97181b,0xbcc5605b,0xbc9c6b42,0x3c00e913,0x3c992c4d,0x3ccb0d02,0x3cc96ce6,0x3c316d58,0x3b836688,0xb88c65bc,0x39bccfbf,0x39ba4e50,0x395c5b5b,0x39b6a83e,0x39d8e31d,0x39ebaedd,0x39827efd,0x3a3c4f3b,0x3b205022, +0x3baa6390,0x3bfd3961,0x3be949e2,0x3bb496bf,0x3b8b3a69,0x3b62c977,0x3b6acfdc,0x3b4d4168,0x3b09c766,0x3a817744,0xbb5430cd,0xbbb70021,0xbbdf5a7e,0xbc1c2747,0xbc38d20d,0xbc279f36,0xbbbf4f39,0xb9ac2617,0x3b37fa4f,0x3b56b01d,0x3a8d5564,0xb9f7299b,0xbb42dc72,0xbb8affae,0xbb8f4a62, +0xbb607c8e,0xbb149571,0xbac6632a,0xb9f104d1,0xb9e42c2d,0xba382c14,0xba7511b7,0xba888673,0xba6551f2,0x39c8362a,0x3a89084d,0x3a93ba88,0xba8fca91,0xbb239d61,0xbb3c6798,0xbb559433,0xbb5d7956,0xbb3cbc1f,0xba8a8dad,0xb8863d49,0x398f375f,0x3a1b70a5,0x3a1df992,0x38a44da1,0x39fd48a7, +0xba0f4a9d,0xbb844513,0xbba09b96,0xbbb32ef9,0xbb545f85,0xba5f7b51,0xbbdf286b,0xbbd958a1,0xbb9fb44a,0xbb83be9f,0xbb42ed95,0xbb317e28,0xbb1eb48b,0xbb154d40,0xba3e22a5,0x392fa9b1,0x3ad5b554,0x3ad4539c,0x3b3ac0c5,0x3b619668,0x3b6c9caa,0x3b548177,0x3b603d31,0x3b1cf922,0x3aac8663, +0xb8f200da,0x3a9084d1,0x3afc9f21,0x3b2b576d,0x3b6fb20f,0x3b9c937c,0x3bc6f5c8,0x3bbd0268,0x3bb016d8,0x3b9efe0f,0x3b3c23c2,0x3a7b2671,0xba132cd8,0xbaefadeb,0xbb5e47b7,0xbbbefa16,0xbbca4f64,0x3b8f1da5,0x3b8e449c,0x3bb31fe7,0x3b92b934,0x3ba08abe,0x3b9c70be,0x3ba2fed5,0x3bac1032, +0x3bb3c88e,0x3bbf14ac,0x3bd11ca9,0x3bd91115,0x3be20c95,0x3bee938f,0x3bc359ff,0x3ba71828,0x3b88e1c9,0x3b53b6ec,0x3b037173,0x3af33f91,0x3b0859bb,0x3afe445c,0x3b003a0b,0x3afa456d,0x3ae99a07,0x3ae609a8,0x3b0abe8b,0x3b244b96,0x3b456319,0x3b6b841a,0x3b8959d3,0x3b9333aa,0x3b8af662, +0x3b8781b7,0x3b83624c,0x3b8c860b,0x3b3d2d90,0x3b2b07de,0x3b3cb828,0x3b43dd49,0x3b41761b,0x3b42deea,0x3b3be175,0x3b2f1b7d,0x3b3b12b3,0x3b417411,0x3b4047ce,0x3b4d4987,0x3b5125da,0x3b66c684,0x3b5fcd10,0x3b634802,0x3b1d56b5,0x3b2c9a71,0x3b292f7b,0x3b323a52,0x3b2c6b21,0x3b2f8e87, +0x3b3184d1,0x3b32de3b,0x3b35e29c,0x3b32f584,0x3b3cdb60,0x3b407ed6,0x3b3f8ed7,0x3b4069e2,0x3b3f6b05,0x3b47fb7a,0x3b4770b1,0x3b4c3ee6,0x3b51ace0,0x3b447905,0x3b503cff,0xba7e0424,0xb9ca62b5,0xb97f3445,0xba0f5c6d,0xba378b1e,0xba75daf2,0xba4b2f1c,0xba308f1f,0xbaa92613,0xba3b1d58, +0xba321e87,0xba867c62,0xba909212,0xba9de882,0xba2e90cb,0xbad73bf5,0xbad5f4c3,0xb9860dd3,0xba5e4e7a,0xba6b9884,0xba86fc80,0xba477ea2,0xba2e82e0,0xb98eb83f,0xba6d8638,0xba7b670c,0xba4bcad6,0xba38ed73,0xba25da35,0x38b1ff4a,0xba859472,0xba8f340a,0xba5f8ef9,0xb90c8774,0x3807dde0, +0xba112616,0xb9b232e9,0xb9e547fe,0xb87049e1,0xba4643ad,0xbaa8c9ac,0xbb068775,0xba654ea9,0xba30276e,0xbb05dc07,0xba20c49d,0xba96db0d,0xbb5140f0,0xbb635a7a,0xbb55ef60,0xba7dabda,0xbb513879,0xbb3f9fc9,0xb8afa583,0xbaa93432,0xba327879,0xba440693,0xb8d98cc8,0x38008d70,0x39c32ad5, +0xbb02f2ac,0xbb388ff5,0xbb1476e0,0xbae2713c,0xba2507b7,0x3ab8e0db,0xba9bbb3f,0xbabf1636,0xb9e37fa7,0x3aa0b648,0x3a9b6149,0xba71571a,0xb9e04bf0,0x3aa0ec94,0x3b0e406d,0x380db863,0xba9561e1,0xbb2f5d91,0xb9963dfe,0xba08debd,0xbb5a6211,0xbaf01d50,0xbae1ef94,0xbb5f21fc,0xbb40e85a, +0xbb79a544,0xbae270cb,0xbba4e63e,0xbbb9db95,0x38aa3b13,0xbb13fc1d,0xbab65086,0xbaa378ce,0xb978d345,0x39d51ec1,0x3b050de2,0xbacf7a36,0xbb05fc85,0xba83a463,0x37d42fa1,0x39baac68,0x3b5a77c2,0xbb025070,0xbadd9fae,0x3a39c8df,0x3b7aa1eb,0x3b8bde84,0x3a3ecdb3,0x3b05e1cd,0xba228667, +0x399293fe,0xbac60c70,0xbb64f1ee,0xbba6016d,0xb9f54e93,0xb9c2a0f5,0xba7157be,0x39a0ae38,0x399ab9fd,0x3a75939a,0x3a700d95,0x399d1f0c,0x386eb32f,0xbadb7ad1,0xbb960e02,0xbac03674,0xbb0f2221,0xba5259ea,0x3a435405,0x3b1afdee,0x3b5ebc7e,0x3b6d86f3,0xbb8a9f8b,0xbc099abc,0xbbea7ac3, +0xbb91b663,0x3a523f1e,0x3bb7c885,0xba8f587b,0xbb0f1a4c,0x3b1adb29,0x3bddeda4,0x3baab19b,0xbb2de160,0xbab0aed3,0x3c8f48e4,0x3c2ad011,0x3c1d4ff6,0x3bf6fece,0x3bcdf56f,0x3b6f45cd,0x3a1bcd52,0x38ed427f,0x3880c43b,0xb91ddf0a,0xb9b12e96,0xb9cc0ccd,0x36dd46b4,0xb8ac5a6c,0x3a94cff5, +0x3b5554da,0x3904fff6,0xbba0c480,0xbc102c3c,0xbc1af1ab,0xbc407ace,0xbc29558a,0xbb4b070a,0x3ba791c0,0x3c7845ee,0x3cc50768,0x3c6b7065,0x3b61ea5e,0xbb8034a1,0xbb8148c0,0xbaad2f81,0x3b9a75db,0x3817be0f,0x3bd5ff4f,0x3cb008cd,0x3caa6c49,0x39f84809,0x3b4e7936,0xbb3f149d,0xbb15de57, +0x3a1f4882,0xb9c75455,0xba0f186a,0xb696c205,0xb862049c,0x38cb80d7,0x392af187,0x39191d37,0x380baa80,0xb85b9094,0xba04cbb5,0xbaa5ec6c,0x39b15908,0xbac43917,0xbb430078,0xbb2c02db,0x3b0c9492,0x3ba02c01,0x3b962c02,0xbb29def0,0xbc33008b,0xbc90e079,0xbc835844,0xbb79e768,0x3c65484e, +0x3bd46d65,0xba00c636,0xbb2e5467,0xbc84b68d,0xbc89c983,0xbc026767,0xbb99c625,0x3c21115f,0x3cafd818,0x3c581a39,0x3b34d3e0,0xbb91503d,0x3a692884,0x398f1255,0xb8903f15,0x3895661c,0xb8c937a4,0xb8b114fa,0xb8920b50,0xb79daa65,0x38677340,0x39728c90,0x3a31ca55,0x389db8d4,0x3adf94ed, +0x3b50d830,0x3b5d8846,0xb989d2fd,0xbb2cdc8d,0xbad5963b,0xba1af700,0x3bdea06c,0x3c99b4bd,0x3c74db16,0x3b4be511,0xbc8459db,0xbbcb992b,0x3b976d6f,0x3c76530f,0x3ca0ad6e,0x3c920603,0x3b97f9bc,0x3ba94813,0xbcc2b25a,0xbca9e46e,0xbc50f1c8,0xbc7b747e,0xbc8a8961,0xbb1f659c,0x38bca0ff, +0xb81f6f96,0x38091293,0x38bdcc94,0x38aa5602,0x3859cf8a,0xb7d22b1c,0xb749e741,0xb938f855,0xb9f6afa2,0xba9e20ce,0x3ac27a3a,0x3b77f3aa,0x3b7b0d94,0x3aefb371,0xb9547615,0xbb45373e,0xbbb90174,0xbc03ec4f,0xbbfe153f,0xbbe62f77,0xbb398cf5,0xbb328c6b,0x3c6fad5b,0x3c8525a8,0x3c0852c7, +0xbc6baf99,0xbccd818f,0xbcc014ec,0xbcaca799,0x3ba74a9b,0x3cb7a215,0x3cdd4344,0x3cb952c6,0x3c01bab0,0x3b8474b8,0xb9cd7780,0x390feddc,0xb93c0ba1,0xb90b259d,0xb908b4a0,0xb8649c04,0x37d1bca6,0x390b4ded,0xb8a02d22,0x3a6f2d7a,0x3b4b6071,0x3beec051,0x3c0efdd0,0x3bfcea95,0x3bd745ec, +0x3ba92b46,0x3b8a4afd,0x3b532a4e,0x3b0376ae,0x3a085a9a,0xbb6c0147,0xbbc64eb9,0xbbee1461,0xbc15c53c,0xbc1f5b5d,0xbbf23f6d,0xbbab1b5c,0xbb757852,0xbb140c47,0xbb8e2b88,0x3b480e97,0x3b35381b,0xb726bbae,0xba027566,0xbacf20f1,0xba6397af,0xba0274b6,0x390ed0d6,0x39cf5fd2,0x39cb91cc, +0x397785c2,0x392e65a8,0xb853b348,0xb98ec48d,0xb8a0c169,0x3a145c9f,0x3acb3d37,0x3a0a5bc1,0xba662b0c,0xbad8c631,0xbb0ec33b,0xbb3e350a,0xbb5d1ad7,0xbb669365,0xbb845d14,0xbb96b702,0xbb768554,0xbb519644,0xbb52ba07,0xbb21ec66,0xbb2152f0,0xbb78022b,0xbb2c58eb,0xbae01aa2,0x3a095ace, +0x3b1889fa,0xbbd45d17,0xbbeb9f60,0xbbd2f8f1,0xbbc76041,0xbbb3c28b,0xbb9e7e12,0xbb7ea868,0xbb493e50,0xbb06cfb2,0xbacb1106,0xba3adaaa,0xba6aba07,0xb8be89d5,0x393d2ee4,0x3a963935,0x3acf7864,0x3b24fc4c,0x3b0f27bf,0x3adec735,0x3aa91b9d,0x3b0c78bc,0x3b2bca9c,0x3b50016b,0x3b8b52cc, +0x3bb036b6,0x3bd4c20c,0x3ba5cbfa,0x3b6b76ca,0x3b053784,0x396cc1a2,0xbac5b6d2,0xbb46b006,0xbb62eb63,0xbb8a4075,0xbbb47138,0xbbc721ad,0x38caf0e8,0xb9e3460c,0x3a77b82b,0x3a5db800,0x3ad9dd4d,0x3afa901c,0x3b0b30ab,0x3b267b69,0x3b3a8023,0x3b649598,0x3b8e5e89,0x3ba0c32c,0x3bb78448, +0x3bcf74d2,0x3bc3ef93,0x3bb6be62,0x3ba95800,0x3b9a225b,0x3b807d6a,0x3b8591e2,0x3b891503,0x3b866532,0x3b848e6f,0x3b825dd9,0x3b780f3b,0x3b807173,0x3b6c2c03,0x3b691af9,0x3b660650,0x3b626217,0x3b586cb1,0x3b3981ac,0x3b0dfc58,0x3ac5b97a,0x3a7b82a9,0x3a187c11,0x3b3f8d53,0x3b1ffaf1, +0x3b389507,0x3b3ca2c1,0x3b3fee0c,0x3b4819a8,0x3b4df043,0x3b55ccfa,0x3b6fab9a,0x3b7f5fe1,0x3b839d2c,0x3b8ca912,0x3b913aab,0x3b9b3a14,0x3b907483,0x3b94a9f0,0x3b80b705,0x3b886e7f,0x3b8d09bb,0x3b966119,0x3b94980d,0x3b976065,0x3b99d6e8,0x3b9b96ec,0x3b9d5b34,0x3b9e9368,0x3b99c525, +0x3b93b8bf,0x3b8b7198,0x3b836a8a,0x3b7919df,0x3b734370,0x3b6b8a75,0x3b65af3b,0x3b5d75cf,0x3b4c721e,0x3ba3bc9c,0xbad933b4,0xba6bee85,0xba6d0d15,0xba94df41,0xbaa86491,0xbabb3ae6,0xbac19524,0xbaa48267,0xba941783,0xba84d1b4,0xba8c1c09,0xba9c0af3,0xbadb4d02,0xbae18fab,0xba5a9648, +0xbb0d6574,0xbb128454,0xba60e647,0xbac638d9,0xbad22344,0xbaf1d4c6,0xbac551e0,0xbac1bf40,0xbaab65a6,0xbb02bcf7,0xbb009173,0xbac405a7,0xba9793d7,0xba90349a,0xba9a0874,0xbac9e0fa,0xbabf2625,0xba7802a0,0xba30ca93,0xba28121c,0xbab22556,0xba69f6da,0xba3519b6,0xba25bdca,0xba8b1a83, +0xbad06221,0xbb047194,0xbace1649,0xba9d329e,0xba751f73,0xba63f455,0xbab93ff8,0xbb2dca81,0xbb8b67df,0xbb894803,0xba99a269,0xbb6bd8b1,0xbb58d946,0xba2fefa9,0xbb03d8b3,0xbadc0cf2,0xbb0f9434,0xbabf5acd,0xbae18aad,0xbb041836,0xbb9780de,0xbba242c6,0xbb565932,0xbad2fdb6,0xba33e071, +0xba7982b9,0xbaebe8e5,0xbacb2be5,0x3865022e,0x39f9e9c3,0x38a31c70,0xbb08b7ce,0xba69ff85,0x3a97c0ad,0x3ab88f0d,0xb962b5e2,0xbab8253c,0xbb1166eb,0xba8d7711,0xba1fed65,0xb9d9c631,0xb9ff82ec,0xb9773a1c,0xba0c3cda,0xba2f4a8c,0xbaecec5f,0xb973afac,0xbb78e21d,0xbba51877,0xb9faffbe, +0xbb327f2a,0xbb22c1b0,0xbb4ed029,0xbad537ee,0xbad5d418,0xba7fd883,0xbbab185c,0xbba4fda7,0xbb0235a0,0x39f79b6b,0x3a52ef8f,0xba25d402,0xbb021944,0xba7dbd35,0x3b2dcb5c,0x3b5428fc,0x3b46e0f0,0xba609a80,0x3ad86e9c,0x3914f0ee,0x399fd7c9,0xba79fbdb,0xbb141dc3,0xbb281962,0xb99a78a5, +0x38c81a29,0x391f21e5,0x391f180d,0x3954822a,0x39614f4c,0x3a0c6ed1,0x3a105fbb,0x39bd0124,0x3a01664a,0xbb0c10d0,0xba9e1b24,0xbb373f17,0xbb34a05a,0xbb37f276,0xba6d2ad6,0xba9b6df8,0xbb461f76,0xbc43e7eb,0xbc67c104,0xbc0a513b,0xbb0d669f,0x3ac4b2dd,0xba75827d,0xbb10f7cf,0xba4d699b, +0x3ba505c2,0x3bac4210,0x3b1d4f46,0xbba2bd79,0xbab5da84,0x3c5b707a,0x3bd3f889,0x3bd5f1d7,0x3b6fa803,0x3afe56ce,0x3a03d930,0xb9102b54,0xb644e408,0xb8b0cb7d,0xb8f637c4,0xb9000433,0xb9959af1,0xb96a9734,0xb982fc52,0x38289afa,0x3a49f3a7,0x3b0b546f,0xbaa48cd1,0xbbb6af4e,0xbbe790ce, +0xbc07020a,0xbbbc32b4,0x3b0ef1e1,0x3c5043fb,0x3ca7d68f,0x3cb7bfb8,0x3c5a1857,0x3b83e666,0x398ea505,0xba7f12ef,0x3a856e4f,0x3bdf7899,0x3b81d295,0x3c1cccf4,0x3cb29ade,0x3c90e112,0x3b7ab9e6,0x3bacb6bf,0x39c540cd,0x39d591b1,0x3a00b127,0xb96cf437,0xb8d8dbf3,0x3924aa6a,0xb63e4eb9, +0x38bb457a,0x38a84878,0x391dbb29,0x3903c5c2,0x38e752b1,0x376830ed,0xba0aa3ab,0xb9bc3117,0xb997e460,0xbace53f3,0xbb499c14,0x3a1f72ca,0x3b06699c,0x3a57f338,0xbbb981b2,0xbc516257,0xbc8a61c4,0xbc283362,0x3ad1554a,0x3c6ccafb,0x3bc2202e,0xbaf3f426,0xbbc82dc4,0xbc6c8630,0xbc480380, +0xbb63bd6f,0x39b58f7d,0x3c4b4d29,0x3cac5a31,0x3c8a3725,0x3b49d96b,0xbb218873,0x3aaed5c9,0xb9e7fe04,0x38e2b6ef,0xb92b86c1,0xb7c5869a,0xb8d024f0,0xb8bd7bb0,0xb8c2a365,0xb89e2129,0xb51bb1b7,0x3945c24b,0x39e4fc20,0x3a5dca3b,0x3b1aebae,0x3b7c1f5f,0x3ad8f768,0x3a37ac37,0x3ac32f58, +0x3ba73cb7,0x3c4325b7,0x3ca6332d,0x3c148544,0xbb6600ad,0xbc8d306a,0xb9b57eef,0x3c4774da,0x3c75bf86,0x3cacde0e,0x3c6f7412,0xbbc18b1e,0x3b61f176,0xbcba7d6e,0xbd36f8f6,0xbc6a8d74,0xbb8dba62,0xbbb412d7,0x39eae21b,0xb8b50c00,0x39775085,0x3891a917,0x3913654c,0x38b9b277,0x3907f71d, +0x38ccd891,0x38cf96a6,0xb7ba1f79,0x39234b17,0xba8385ce,0xba9e77f3,0x383d4879,0xb9ea8be8,0xbb0d31d0,0xbb4f273e,0xbbaa3ac0,0xbbe5c75e,0xbc1388b2,0xbc064285,0xbbf1d9b8,0xba06478c,0x3b7a86e4,0x3c9553ca,0x3c5477e0,0xbc0709a6,0xbc898b3c,0xbc94070c,0xbc70a76a,0xbc331664,0x399eed47, +0x3c805ca4,0x3c8c73d4,0x3c4024b3,0x3b9ba3e1,0x3a5a8a7c,0xba2b9b7e,0xb8b5ac47,0xb9a997d6,0xb9461e7e,0xb95a8c3e,0xb948f236,0xb9588b92,0xb8fd15e1,0xb8b6e857,0xb9157955,0x3a70522f,0x3b9782c1,0x3bfa1008,0x3c027e2f,0x3bf27ce4,0x3bc960db,0x3b9ce951,0x3b369744,0x3aa6c959,0xb9459b5c, +0xbb53b60d,0xbbbb5a65,0xbbeda124,0xbc060f15,0xbbe3b370,0xbb6b3e1a,0xbb9b91fb,0xbbe7e1d7,0xbbf73828,0xbc128aa8,0x3bb400f1,0x3bc1fb1b,0x3b5fdb87,0x3b2a2328,0x3a9dfa34,0x3aa480da,0x3a0ae2bf,0x3a2fff1d,0x3a06b2e1,0x39fa299a,0x39c3e14e,0x39e3d579,0x39c2445d,0x39c16b65,0x39044d41, +0x39d8d837,0x3ac8f5ef,0x3b01c4f4,0x3aa95eeb,0x39604959,0xba25360b,0xbae826f3,0xbb3a872c,0xbb85493f,0xbbb314bb,0xbbe1c9de,0xbbba21ec,0xbba39c1a,0xbba36e77,0xbb94d905,0xbb88206b,0xbb4e1085,0xba491992,0x3aed967b,0x3b89affc,0x3bc0c83d,0xbb8c70f2,0xbba54309,0xbba3eac4,0xbb9cd225, +0xbb9cb882,0xbb80e76d,0xbb357633,0xbaeb2c32,0xbaa98351,0xba835ba2,0xba4e4065,0xba824a6b,0xba6a405f,0xba7dbaf2,0xba0bbd46,0x3721431a,0x3a6597db,0x3aa8b894,0x3aedceb6,0x3b20b680,0x3b1d5268,0x3b1d6b4c,0x3b1de275,0x3b42252d,0x3b683a65,0x3b836ce0,0x3b22ff71,0x3a7f5cfb,0xba032cea, +0xbaabf009,0xbb05f4a0,0xbb3fedbc,0xbb3cc9b1,0xbb536846,0xbb7a40b9,0xbb8e290c,0xbb2783fd,0xbb649f1d,0xbb1cbbd1,0xbb11be0d,0xbab0ebe9,0xba85b5ff,0xba8501ae,0xba3822a4,0xba01ec7f,0x38c883a0,0x3a5bed27,0x3abbe521,0x3b102471,0x3b4393c5,0x3b72196c,0x3b82f175,0x3b8dcb75,0x3b986dac, +0x3ba0cd1f,0x3ba4a558,0x3ba403a2,0x3ba62e4c,0x3ba58461,0x3ba5c6ea,0x3ba1d5fb,0x3ba99ffd,0x3b927547,0x3b86e770,0x3b712554,0x3b4c4be4,0x3b1e26fb,0x3ad2076a,0x3a390517,0xb91076e9,0xba5037f7,0xbad220fe,0x3b18dde6,0x3aea499b,0x3b221d6b,0x3b2d6ea4,0x3b40f629,0x3b242d33,0x3b41a7b6, +0x3b608a57,0x3b7e8cdd,0x3b88af4c,0x3b8ff735,0x3b98dfad,0x3b9f7445,0x3ba5b6f4,0x3b94fb2b,0x3b910632,0x3ba2266d,0x3b9cca42,0x3b9e0aa1,0x3b9c1448,0x3b9f5b4a,0x3ba1a061,0x3ba452ec,0x3ba67865,0x3ba823bd,0x3bab99b7,0x3ba09af4,0x3b9661c0,0x3b8af1ba,0x3b805c53,0x3b6f8d60,0x3b6234f9, +0x3b56d545,0x3b48d852,0x3b35ac2c,0x3b24de7f,0x3ba7da91,0xbaf6c019,0xba948e2e,0xbaa80106,0xbac090c8,0xbad8d316,0xbaee3b48,0xbae45f39,0xbace8453,0xba82938e,0xbaae284a,0xbac1edbf,0xbac91c82,0xbb142c8c,0xbb124756,0xbaa2997b,0xbb0aaa23,0xbb0d208c,0xbac74610,0xbaf9eaf5,0xbaf952d8, +0xbb05e6e1,0xbaec478a,0xbaef7377,0xbafe78ab,0xbb19e2f7,0xbb126c6a,0xbae185e3,0xbaa16644,0xbaa28c79,0xbb04bad8,0xbada50f8,0xbabbec0f,0xba2ff5df,0xba75a22b,0xba889f71,0xbae17ab7,0xba958bf8,0xba5e1e88,0xba956910,0xbab7bf7e,0xbadb8f30,0xbade792a,0xbaf9db56,0xbab12876,0x38e65dda, +0xba12187f,0xba718258,0xbabba232,0xbb406b7c,0xbb559389,0xbab34d76,0xbb679e31,0xbb52ccbd,0xba883e2a,0xbb065da6,0xbb0f5644,0xbb335048,0xbb0f8e56,0xbb360d80,0xbb71c678,0xbbb1f7fd,0xbbaaa6d7,0xbb577dc2,0xba947a5b,0xba327108,0xbb3c2af5,0xbb0293dd,0xbaa2ae92,0x3a581feb,0xb8c3484b, +0xba4be5e2,0xbb27db58,0xba927536,0x3a5ea0fa,0x3959aa54,0xba0cc893,0xbaac43f8,0xbaeca538,0xbaa3e930,0xb99311c3,0x39a9e0d1,0xb8850ac3,0x396b5a2b,0x397fe288,0x3a1a8270,0x38a7111b,0x39def415,0xba9962e8,0xbb3ce4ab,0xba9fb503,0xbb2441e9,0xbb36044d,0xbb7b1c33,0xbb1730aa,0xbb3e1600, +0xbb642a6f,0xbbd0fe77,0xbbb703db,0xbb0e20f1,0x3a6dfc0d,0x3a626e75,0xbb84599c,0xbadfa150,0xb9097ccb,0x3b91ed61,0x3b12c9e4,0x3ac78935,0xbaf5d6fc,0x3a837774,0x39a5cdbf,0xba065082,0xba763e66,0xbac173c0,0xba84abd3,0x39882ecd,0x391a6b2d,0xb90bc30f,0xb6db0223,0xb88829fe,0xb8d6b709, +0xb922d734,0xb6a1c5e3,0xb8f2e33f,0x3a364529,0x38d6bc88,0xba398d4a,0xbb1b40f1,0xbb5d8a64,0xbb9370bf,0xbb42b5f0,0xbb97a297,0xbc08c78c,0xbc70c719,0xbc6e0164,0xbbf6fd19,0xb807eacb,0x3a901ec6,0xbbdcb435,0xbb4b7d8b,0x3a1d5711,0x3befecc1,0x3b5de198,0xb99d1cca,0xbbbd0141,0xbab09b01, +0x3c008956,0x3b86f979,0x3b8349ae,0x3ac70e7c,0x392831a9,0xb7c35b31,0xb89a6f10,0x37c82101,0x37a5773e,0x37f5a3f8,0x38645a82,0x38138f21,0x38110625,0xb86e8658,0xb931734a,0xb95a5b06,0x3a805e73,0x3a4834c4,0xbb38692a,0xbb9c9711,0xbb8d88ba,0xba81278d,0x3bc62058,0x3c8a60bd,0x3cada201, +0x3c8b8295,0x3c2882b5,0x3b9474a5,0x3b832613,0x3b3e2f85,0x3b6e6c5b,0x3bdadde4,0x3bd27515,0x3c2ef447,0x3c9a56ab,0x3c3f7085,0x3badec34,0x3b9c4a82,0x3b133615,0x3abcbbf5,0xb95104d9,0x38051592,0x38990987,0xb792559d,0xb6cef8e0,0xb6f14fd3,0xb7c91296,0xb7901083,0x35c4243f,0x37cfd7c7, +0x38e6458a,0x389620c0,0xba076cfe,0x39291657,0x39c3ee0a,0xbaaa5b1a,0xb97ff850,0xba8ad8f5,0xbb73ea2d,0xbc14f18b,0xbc53b896,0xbc4e2b24,0xbb7803f7,0x3ba27d49,0x3c30788a,0x3b9c2510,0xbae06e5f,0xbbe4dd51,0xbc2179a4,0xbbcc5509,0x3acabccf,0x3b98cef9,0x3c27722c,0x3c8f8ca4,0x3c6abb74, +0x3acb7dd9,0xba593d94,0x39ab6563,0xb9833309,0x3870e374,0xb746cc40,0x36ead915,0x36e4d897,0x364184f7,0xb7337424,0xb823e8e4,0xb869d5e3,0xb8cf7633,0x3997d295,0xb7d6e435,0x39fcb73b,0x3b31af7e,0x3b539185,0x3b8d5bf0,0x3bb0f6a3,0x3c336384,0x3c6d3da8,0x3c773cfc,0x3b17f56a,0xbbf8cd10, +0xbc659109,0x3b44c255,0x3c5f56c9,0x3c3f9c9e,0x3c871e52,0x3c03058f,0xbc2eff96,0x39fc8745,0xbc77d2da,0xbd372495,0xbc6cf70b,0xb9d39916,0xb8a2e165,0x38ff0103,0x38cae8b6,0x37ed64f2,0x3732c6ff,0x366b87c9,0x3698cda9,0x370962a3,0x38035a12,0x387817d9,0x38b90444,0x383a253d,0x39178838, +0xbacbfc75,0xbb30f1a3,0xbb7cc7cd,0xbba03c3a,0xbbac780e,0xbbd8c44d,0xbbfb5d53,0xbc0c8961,0xbbe7bbb3,0xbbcc4b3f,0x3acd8193,0x3c2a427a,0x3c61a590,0x3b8a892f,0xbc8b9719,0xbc482d35,0xbbe522ba,0xbb96ce5d,0xbad48058,0xbb43ac21,0xba541b27,0x3a424c19,0x3a62e15a,0x3aaf2d18,0xba7b79c7, +0x388d0e9a,0xb92fa133,0x37039cce,0xb7cb0257,0xb5a59229,0xb8185d6c,0xb85ba9f6,0xb905738c,0xb9076cc8,0xb9296a77,0xb9acf55c,0x3aff78b9,0x3ba1e054,0x3bd8c5af,0x3bd48ab1,0x3bbb219a,0x3b91c03b,0x3afaeeb7,0x38c8da14,0xbabda961,0xbb471b2c,0xbbac57cf,0xbbd85892,0xbbdadd6e,0xbb8dfd9a, +0xbab26958,0xbb6818c3,0xbbd9594e,0xbc09a646,0xbbd89b99,0x3bd3511e,0x3bef6ab1,0x3ba6ca71,0x3b582b0e,0x3afe13f9,0x3a145dd4,0x39c55018,0x38bcaac7,0x387171d0,0xb75f2e8a,0x36b5ca05,0x386f21dc,0x3901924f,0x39682b85,0x39a566b2,0x3993e277,0x3a3ea19a,0x3b14013b,0x3b293d4e,0x3b0920c3, +0x3a6c5594,0xb9deb010,0xbaf1ec71,0xbb3b4ae4,0xbb8e0a85,0xbbd2f769,0xbbb89dff,0xbbb1684f,0xbbbc5894,0xbbaf9b7c,0xbb9b311f,0xbb1a793d,0xb9e02992,0x3b27e1e2,0x3b9a3b98,0x3bdb3b1e,0xbb21c2c6,0xbb3ba212,0xbb46f2b7,0xbb373f9f,0xbb353337,0xbaedf3f9,0xba78b34a,0xb84e7ee4,0xb7c7dbdf, +0x391f32b8,0x389ea203,0xb7fc9842,0xb96be4a1,0xb9d262e9,0xba5f1366,0xba7c0cd9,0xba139a84,0xb99b1f0e,0x39b43f62,0x3aa326bc,0x3a270d0c,0x39e1d302,0x38a717ae,0xb7a42fb8,0xb8ce23c9,0xb9906bb1,0xba5dad6c,0xbabf726b,0xbafdfd7d,0xbaff8ffe,0xbb00579d,0xbb179776,0xbb095d1c,0xbb146a47, +0xbb255044,0xbb3507c3,0xbb4e3cf1,0xbb83b20f,0xbb789022,0xbb5b07ec,0xbb445f9e,0xbb34d71a,0xbb32af7a,0xbb2221c4,0xbb0fab00,0xbae5887c,0xbaaf652c,0xba741502,0xba0f8c3a,0xb8a92ec2,0x3a5b56ee,0x3ac8a98d,0x3b1032c2,0x3b404bad,0x3b818323,0x3b881bf7,0x3b804da2,0x3b7d5782,0x3b756542, +0x3b6e8e41,0x3b64af1c,0x3b65f1bf,0x3b3c92ec,0x3b214cc4,0x3b024b07,0x3ab1ff61,0x3a3077c8,0x379dd27d,0xba2a71ff,0xbaa09974,0xbad6475d,0xbb19a5a3,0x3a25834f,0x39b1629b,0x3a4cf6ac,0x3a6c7d2d,0x3aa85dde,0x3a355bdd,0x3a8fa2cc,0x3abeaf86,0x3ae5ee32,0x3b00b3ca,0x3b10f6e9,0x3b217a86, +0x3b3538ba,0x3b42ff57,0x3b29fc60,0x3b1a0b2f,0x3b61a747,0x3b4961db,0x3b462343,0x3b3b6d33,0x3b402126,0x3b3f52d3,0x3b3f3925,0x3b3f1f1d,0x3b3db583,0x3b3fb5f8,0x3b2c19a6,0x3b1a74fc,0x3b086096,0x3af3e66a,0x3adc5e91,0x3ac6601f,0x3ab532ec,0x3a9b0d19,0x3a6fe619,0x3a43e990,0x3b328cf8, +0xbad72ba8,0xba8ec8f5,0xbaafdbd0,0xbab2ddc8,0xbac1e3a4,0xbac6388c,0xbabf00e9,0xbab3ac1f,0xba0865e0,0xba8c6f2b,0xbaa73ec9,0xbaad7062,0xbb03d3e9,0xbb0a1b1d,0xbabd751b,0xbaeb4907,0xbad4c791,0xbaba35ce,0xbad1c383,0xbace8084,0xbada3b53,0xbad3bff2,0xbadca7ec,0xbb003f16,0xbb0125f3, +0xbaf05d5f,0xbac53214,0xba915529,0xba9b7b11,0xbb0d431c,0xbac2b8aa,0xba9dd240,0xb9d87813,0xba7da834,0xba91674b,0xbac72085,0xba8df717,0xba64340c,0xbab75cbb,0xbaa9202d,0xbaab8d64,0xbab3252c,0xbae029e1,0xba61b174,0x39eb7018,0xb924b22b,0xb9817dbd,0xb9a563d1,0xba67b5d5,0xba8b739f, +0xba0f70a0,0xbb05bd11,0xbb1e0adf,0xbab57a38,0xbab121ff,0xbadea164,0xbb172ecd,0xbb121293,0xbb3f505e,0xbb81bbaf,0xbb8f88bd,0xbb7cf0d8,0xbb282840,0xba582cbe,0xba5dfbf8,0xbb654f3c,0xbaf9e4e9,0xba833117,0x3a841558,0xb9f1dc53,0xba916b3f,0xbb09966e,0xba898d63,0x39967e45,0xba806adc, +0xba320cd6,0xba8ff3a2,0xba89b8e8,0xb9612e65,0x39453e01,0x37260bfd,0x3748ee6c,0x3916d830,0x39220331,0x39c58580,0x39a1e28a,0x39a8b61b,0x39ca145c,0xb9401071,0xba60f0b0,0xbad8b7ce,0xbaf4f175,0xbb41a29d,0xbb148d54,0xbb4c5178,0xbb8e16f9,0xbba41798,0xbb845aab,0xbaf4551e,0x3a07ce98, +0xb78cd524,0xbbaf549f,0xbad4c395,0xb898b01f,0x3b8da340,0x3a67a5f1,0x397cc591,0xbad6120b,0x39a3d6c8,0xb6ac593b,0xbacd8c2a,0xba7e8a7a,0xba3976be,0x3909668b,0x3957387f,0xb88039d9,0xb73bc11a,0xb6ee7a15,0xb83edc8f,0xb8be5fa1,0xb9205a74,0xb907ba89,0xb92366aa,0xb8ebf2c9,0x3966d160, +0x38f5076f,0xba80eb2d,0xbb1cda24,0xbb8382b1,0xbb72b96b,0xbbc4e834,0xbc213015,0xbc41a4cf,0xbc27c03c,0xbbad8fd2,0x3a080d4f,0xb9b1f87d,0xbc116c17,0xbb6e27ce,0x3a15662c,0x3bdfa443,0x3acbf07b,0xbacfbd9f,0xbb8904e4,0xba83a7bb,0x3b32eaf9,0x3b22e910,0x3b0a3780,0x39cf85a9,0xb8ab8eca, +0xb8697254,0xb72ec590,0x381b7543,0x36456639,0x37a20318,0x384b0712,0x389054d3,0x386b2ebf,0x38b51d35,0x36f89082,0xb8ac7def,0xb8b36559,0x3a4e3cd4,0xb9a8488f,0xbaffa9a3,0xba0a8fce,0x3b26dfce,0x3bea8dc6,0x3c71439d,0x3c80d776,0x3c1a8d3e,0x3bad3eb5,0x3b46f793,0x3b8695e9,0x3b9ccc7e, +0x3b90aeb9,0x3b4f0881,0x3bb1ca95,0x3c07f563,0x3c5037bd,0x3bab9bb0,0x3b8f2146,0x3b2c594b,0x3b01c0c5,0xb8df9951,0x38392337,0x387ceb51,0xb800a19f,0x373220f1,0xb7c3065c,0xb7539252,0xb7f9c385,0xb7f3a8a4,0xb8277f9d,0xb7d9de0a,0xb7e405d9,0x38df16ef,0xb89c6502,0xb9280d16,0x3a358ae7, +0xb987e7f5,0xbaefe8da,0xbb876e60,0xbbe78d7b,0xbc2f5e3d,0xbc31286f,0xbbe3d043,0x3a4fd321,0x3bba1e23,0x3bc1fa25,0x3b3eb664,0xba93b038,0xbbb33320,0xbb99a3b9,0xba9db680,0x3b940134,0x3bc1cb93,0x3bd13c7c,0x3c3ede93,0x3c04c026,0xb9f3efdd,0xb939b1d3,0x38bd04f1,0xb7f93393,0x383c331a, +0xb4a126ac,0x37fb4cd7,0x37ac0083,0x37c579d8,0x37efe291,0x376369fb,0x379da6b3,0xb894cca5,0x37f8072c,0x38efd37f,0xb9bb1e2d,0x3ac5f7f2,0x3b7dae5c,0x3bcec053,0x3c05192b,0x3c51b64b,0x3c4e4ea8,0x3bf67b02,0xbb03b2ca,0xbbf31fa1,0xbbfd2253,0x3b8ac5fc,0x3c2cf1dc,0x3c026279,0x3c0ebfb0, +0x3ab9ba88,0xbc1cb628,0xba4f9e1a,0xbc19cda3,0xbce599ca,0xbc2376af,0x3abf9b82,0xb8f9bb74,0x3859a321,0xb79f1ff3,0xb824087d,0xb80a1697,0xb815a9a1,0xb813233f,0xb7fc2938,0xb7c1db79,0xb7f74fd1,0x37e2cbd1,0xb6b1b36f,0x394f5b00,0xb9413882,0xbb37b8eb,0xbb9857ee,0xbba15f70,0xbbab400b, +0xbbc91458,0xbbc81d9a,0xbbc3ea59,0xbb987107,0xbb10772b,0x3b891389,0x3c4ea26c,0x3bc7b730,0xbb36831f,0xbc5de665,0xbbb41bde,0x39d0cebe,0x3b1b6de1,0xb9a9acc9,0xb9a442d0,0xbc48949f,0xbc0305ae,0xbaea7087,0x39599932,0xb8f9393f,0x38b7d54a,0x385da32b,0x38b3af6f,0x38778083,0x388eadf2, +0x386f2d14,0x38059174,0x3855901e,0xb867e13e,0x381223f1,0xb9bace30,0x3954807e,0x3b3e7fb6,0x3b9e8d35,0x3b96de60,0x3b856bbd,0x3b48bbaf,0x3a9d1883,0xb9b6b2fa,0xbafe51c2,0xbb242f93,0xbb850211,0xbb8c6ce9,0xbb8a5516,0xbafdb671,0x38fce319,0x3853dc5d,0xba47d1f9,0xbad3ad82,0x3b084af2, +0x3b9761c2,0x3bc5e240,0x3ba9aff6,0x3b1db451,0x39b1dc44,0xb881d2b2,0xb79810b9,0xb95c47d6,0xb9165aa4,0xb91ce944,0xb91116b9,0xb8f1cbc4,0xb8b83393,0xb8534be5,0x34f79bdb,0x396c605d,0x38ba33b1,0x3ad4d57f,0x3b3ead2c,0x3b46814a,0x3b07b6b4,0x3a894a3f,0xb9883d36,0xba6002d2,0xbb063b23, +0xbb84f55c,0xbb85e030,0xbb8b51a2,0xbb951b1b,0xbb8523f0,0xbb5d5241,0xbaa05b5b,0xba0fc559,0x3abe3597,0x3b32fd22,0x3b84e8f1,0xb9dda3a0,0xb9f832a8,0xba81a91f,0xb9f9e0d0,0xb9b97ffd,0xb851c527,0x39a7b30e,0x39ff9ca8,0x39bb0c29,0x39ba8468,0x39a61e9e,0x3993021c,0x3955ac57,0x3947bbd8, +0x3821fd25,0xb9ac9b3d,0xba1ef3c5,0xba81398f,0xba6ba466,0xb9c6e81e,0xba70118c,0xba8bcf1c,0xbab5457c,0xbae354b8,0xbb081e4c,0xbb21d189,0xbb1391f3,0xbb0e4ad7,0xbb02d6e3,0xbacf81c2,0xbaa413e6,0xba95bee0,0xba75dcf7,0xba7bacfc,0xba718e80,0xba40583f,0xbb064455,0xbb2132fc,0xbb3250f2, +0xbb1d7f9e,0xbb1e7439,0xbb0c5cea,0xbaec3556,0xbabdd56f,0xba8eb3a3,0xba846ad9,0xba681ce6,0xba497eef,0xba2e0817,0xba22bd2b,0xba019e05,0xb94270af,0x39d66e97,0x3a99d2e3,0x3b1a66cd,0x3b230bf4,0x3b0cebc0,0x3b02cfeb,0x3aeccc12,0x3ad221a4,0x3abae1c7,0x3aa34862,0x3a79846f,0x3a3b9290, +0x39effc3c,0x38cedbbc,0xb98b8d2a,0xba1bef16,0xba6adc08,0xba932972,0xbaae0642,0xbadbf817,0xb9d68351,0xb9fded40,0xb9b04fb0,0xb9a09f97,0xb9193d73,0xba0a39e1,0xb9fc1c96,0xb9feb3f6,0xb9d29ed2,0xb97a1055,0xb864dfb0,0x38fd0ac4,0x39b17913,0x3a0f12de,0x3a1fe2af,0x3a198e1d,0x3abf8f9c, +0x3a99f7ec,0x3a8ebc11,0x3a71ccf8,0x3a72c9e3,0x3a60824a,0x3a4e8f06,0x3a4153cc,0x3a2fac9d,0x3a20de22,0x39f8b528,0x39b1fea7,0x3964e40e,0x390f347a,0x38a4ac46,0x37d178dc,0xb81f4634,0xb913719b,0xb988807c,0xb9b1ced2,0x3a05ff4d,0xbaa25a11,0xba745943,0xba984418,0xba939b51,0xba9742cb, +0xbaa65618,0xba956d06,0xba85776a,0xb9a8a575,0xba3d8146,0xba613b36,0xba60ae12,0xba9c2f51,0xbaaa6692,0xba906861,0xbaa8f933,0xbaa02687,0xbab6222a,0xba8c4b07,0xba8b3bb3,0xba90acc0,0xba9da9b2,0xbaa821ea,0xbac7572c,0xbaae1b53,0xbaa1a8dc,0xba95a989,0xba799b9c,0xba884c3e,0xbadd77a4, +0xba9a5401,0xba7cebf7,0xb9c95e5a,0xba650a73,0xba7bb9db,0xba8bffc2,0xba6b5bcc,0xba5b91ac,0xbaaf3c9b,0xba8d4af0,0xba708813,0xba702f81,0xba1ae72a,0xb8b45989,0x393a8ce3,0x382a4c3f,0x38b58053,0x38da6b61,0x38821591,0x385642d2,0x39162df9,0xb955435c,0xba107d21,0xba84b386,0xba4a3407, +0xba73c526,0xbabf31dc,0xbaeb6035,0xbb1a0c50,0xbb4675bc,0xbb2dcd20,0xbb0fe1ae,0xbae3b4b2,0xba5ad4fa,0xba897af0,0xbb3941c0,0xbad66222,0xba79c8b1,0x39fe6ffe,0xba2ca920,0xba86a3a3,0xbaa6b02c,0xba6450c1,0xb9a51763,0xbad36f62,0xba4a5b00,0xb9f4bd48,0x381192b6,0x396184bf,0x38a1d459, +0xb87f6e7c,0xb6fe0f36,0xb6a01b39,0xb7bc6a42,0x37621563,0x3749047f,0x3620e3c5,0x389ea142,0x398d6b59,0x3909054a,0xb9cbee43,0xba3857d4,0xbac2f98a,0xbae24fd5,0xbb1fe0f8,0xbb6149cf,0xbb337261,0xbb0566e8,0xbabad031,0xb9a29c10,0xba7ecd83,0xbb8c2887,0xbacaa18d,0xba029b18,0x3b2974dd, +0xb9473009,0xb9dd7c1b,0xba523291,0xb9891b0f,0xba06b506,0xbb0cc3d4,0xba186a9b,0x389060e0,0x389a839d,0xb8e1f92a,0xb811dafd,0x371a0782,0x371a2df4,0xb6861b5c,0x37756b52,0xb747c914,0xb7950d1a,0xb7065d8f,0xb84dd01f,0xb911a8b2,0x37848902,0x385ecdf8,0xba476cc2,0xbb1893e5,0xbb59ce84, +0xbbab79e4,0xbbf90b8f,0xbbdab330,0xbba5a8df,0xbb4c02bb,0xb97762db,0xbad0788a,0xbbe78ff9,0xbb617020,0xb9c8383e,0x3b853e44,0x39587b48,0xbac5519f,0xbaee64da,0xba3d92cd,0xb85d3e4f,0x3aa16ba0,0x3a31117c,0xb8cbc6c5,0xb7756dc0,0x37a2c386,0x3824c195,0xb7b88c12,0x36838fde,0x36b2c251, +0xb540c60c,0x36e4299a,0x374b711b,0xb64da25d,0x382c956d,0x386a851f,0xb7721f28,0x361cc678,0x39d3fb07,0x3a24f1bd,0x3b057ec0,0x3b89b1b4,0x3bd20e76,0x3c16b153,0x3c075beb,0x3b67ffb2,0x3aa3c66a,0x3a8fe338,0x3b26e104,0x3b988104,0x3b750a76,0xb9c46485,0x3b3cc99d,0x3b900d03,0x3bc53482, +0x3a93f469,0x3b3354e6,0x3ad40a4f,0x398d7f25,0xb9a80f0c,0x39689626,0xb9087af5,0x3879d474,0xb80a38e4,0x3788ba86,0xb70d9810,0x35f94b5b,0xb6be6a4b,0xb460cc26,0xb6e4c19e,0xb737aafa,0xb836573b,0x383c7aa1,0xb8e907ed,0xb7abb3bb,0xba69f275,0xbb503076,0xbbafa363,0xbbef1141,0xbc0a23d3, +0xbbd5ba7c,0xbb17fe97,0x3b3dc5cc,0x3ba0a56d,0x3b362009,0x3a9d50eb,0xba533b0f,0xbb571751,0xba5ef69f,0x3ad883e1,0x3b963865,0x3b9c46c5,0x3b3019b4,0x3baf9eb4,0x3b041045,0xba4ae1c0,0x397fe512,0xb88cf947,0x38080ffa,0xb72a1439,0x37702272,0xb5657fbb,0x3692a8f6,0x36758404,0xb421f2c8, +0x3755d118,0xb607109a,0x3841188d,0xb893ec8a,0x38ab7282,0xb80c4de8,0x3a86ef7e,0x3b6ddedc,0x3bc08e5e,0x3bfce6e1,0x3c1a183a,0x3bee48a6,0x3aedd34c,0xbb6e3b24,0xbbb06bd4,0xbb2b17c9,0x3b5ffa57,0x3bbdcfc6,0x3b856f8b,0x3ac8156c,0xbb3e573c,0xbbc9c2d7,0xba8bd2ba,0xbbca5009,0xbc493d80, +0xbb1abeef,0x3aa55571,0xb9ef205b,0x3906dd98,0xb8b2ae56,0x37900db6,0xb7a8ac2f,0x33f19116,0xb6f0df17,0xb6642b80,0xb6f16203,0x353ab47f,0xb7cdbf00,0x37130eee,0xb89c4b68,0x399a3f4b,0xba6df118,0xbb4abf40,0xbb48fdfd,0xbb671b1f,0xbb854cec,0xbb652a5e,0xbb3ac417,0xbb034641,0x3ae4bb5e, +0x3ba613f0,0x3c0ae621,0xb9467d1a,0xbbae7718,0xbbd3a76c,0xbb03f653,0x3b09a3b5,0x3bb7dc02,0xbb027de3,0x3b8faa25,0xbc28b98d,0xbb945430,0x3a14adee,0xb8f18bed,0x38de595a,0xb71986ab,0x3821bc02,0x35a354a9,0x37a3fa1b,0x3701da56,0x3741d36e,0x373d6294,0x36ed30a6,0x37c9afba,0x36974117, +0x388f2d50,0xb9d2bd7a,0x3a8df6c5,0x3b4c9881,0x3b23b0d7,0x3b066a97,0x3a905673,0x395a1137,0xba505973,0xbb0defdd,0xbb1fb201,0xbb5025d8,0xbb1b9268,0xbb151a74,0xb9ae80c8,0x3ae16275,0x3b718aa7,0x3b9ff62a,0x3bbfc67d,0x3c014668,0x3a4f04b2,0x3b4086a4,0x3b3cf68c,0xb7c52523,0xb96173b0, +0xb826ca93,0xb8db10f8,0xb7ae5f80,0xb81a9efc,0xb7c13e68,0xb7c8fd13,0xb7a20c86,0xb7a5c4ea,0xb79d8166,0xb826fdf5,0xb83c5c5c,0xb82a96a9,0x3971abaf,0x3ae42f45,0x3b23aca4,0x3b00afe3,0x3ad2604d,0x3a530850,0x39e66617,0xb9d00e37,0xbadf2ca8,0xbb0e0726,0xbb1be91e,0xbb240d45,0xbb0fffb4, +0xbb043708,0xbab7d589,0xbaedfb82,0xbaa3bda0,0xba493bf0,0xb9b328b0,0x3a8e5898,0x3aa729de,0x3a0ca378,0x39ce48b6,0x39607555,0x395a3cf5,0x39030237,0x37f38cc0,0x383f21d7,0x37ef0b3c,0x3811c77a,0x37d87e5b,0x37d3bbb9,0x37c371ed,0x3869bf17,0x38ffbeea,0x387ae062,0xb9f99db4,0xba96a583, +0xbaa8d796,0xbabe084f,0xbac77182,0xbad6667b,0xbaf877bb,0xbb0c74ae,0xbb1ea503,0xbb0fd774,0xbb0940f4,0xbb01c862,0xbabc8026,0xba7b74a8,0xba01b12f,0xb923ea07,0x38b0717f,0x39dec800,0x3a6736fa,0xbaa86f18,0xbaac5c7f,0xbac5f8ae,0xba89ccff,0xba79926b,0xba21d7fe,0xb949eabb,0xb85d11cb, +0x369ac197,0xb7b562f3,0xb78a2d91,0xb7bd1fe8,0xb58611b0,0xb74b5fb6,0xb8f1a52a,0xb9a81b79,0xb9edcb74,0xb9b8354d,0x39ac8d9e,0x39a980b2,0x389fc913,0xb8b14033,0xb973ffcd,0xb9d7aae3,0xba0e11d2,0xba391195,0xba3bba6a,0xba3e2085,0xba49f0ef,0xba63c60b,0xba8310c2,0xba941dd9,0xba99b8ac, +0xba9a95f9,0xbaa4b18a,0xbaaa4073,0xba5df681,0xba535832,0xba6298cc,0xba79d127,0xba816ac4,0xba877a6d,0xba8b938d,0xba8abb06,0xba88b263,0xba7dca1a,0xba6dcc10,0xba5d7240,0xba4f8451,0xba39fe6c,0xba2e1f2b,0xba2d74a7,0xb972d47d,0xb9961bb3,0xb9b8b709,0xba02de50,0xba097737,0xba1a53fc, +0xba2d12bf,0xba3a0ade,0xba4a03f4,0xba5fc0cf,0xba61c02c,0xba67ca7a,0xba6716d0,0xba652869,0xba5d0272,0xba5442bb,0xba534c1f,0xba5588af,0xba5261b5,0xba55d02b,0xba557042,0xba0a6db1,0xb9e46d28,0xba04f393,0xba07613f,0xba120926,0xba2c8772,0xb963739c,0xb9400263,0xb7dc5f1a,0xb8c83c20, +0xb8ed3c75,0xb8e6fb7d,0xb91a8a62,0xb926237b,0xb90f8b3d,0xb94a699c,0xb946eb07,0xba422549,0xb9f4c830,0xb9d49d97,0xb9dbc077,0xba023900,0xba0b2348,0xba239201,0xba068638,0xb9fd7f6e,0xb9ff8cba,0xb9ee95c1,0xba009b95,0xba31a8bd,0xba076580,0xb9e78a28,0xb973f88e,0xb9d91e0b,0xb9e1baac, +0xb9d3d09b,0xb9d0c8b9,0xb9cc685d,0xba22b304,0xba12407c,0xb8e62215,0x38206717,0x390b82e1,0x387d05e6,0x3832f9d1,0x3825778d,0x386dd2d5,0x3859f711,0x389615c6,0x3881a809,0x38a6f995,0x388e7ffa,0x391965f5,0x385ce02f,0xb813c1db,0xb9a7451e,0xba032def,0xba44980f,0xba7e49d2,0xba99ebe6, +0xba6bd2e4,0xba3f46de,0xba31b5bf,0xb9fa2726,0xba1a031a,0xba91193c,0xba41d7f8,0xba017692,0x37a8f769,0xb9bec3eb,0xb9ea396b,0xb9c57b13,0xb9c3ecf2,0xb97a0e60,0xba7bee6e,0xb8dad387,0x38ed4cbb,0x37d48f11,0xb827cf5d,0xb7b83ff7,0xb74d5283,0xb71131e0,0xb749d7a8,0xb7716eae,0xb7979d25, +0xb7c69c1d,0xb7cc451f,0xb7c32374,0xb84cb7d7,0x36df4615,0x38c3a5fd,0x37a5454c,0xb9cb9574,0xba2df837,0xba765724,0xbaad8f27,0xba549239,0xba16d80a,0xba1b378f,0xb9d6634f,0xba35cdeb,0xbace5789,0xba41d186,0xb9cb571c,0x3a31a8be,0xb99c99cd,0xb98f6220,0xb8a8fb35,0xb969755d,0xb9aef9b1, +0xba91aa5f,0x3914a1c5,0xb7d88cce,0xb80b3299,0x37c0ac45,0x3788c8cd,0x376a3679,0x372ba13d,0x3787efeb,0x36fed551,0x375c4898,0x377cbe75,0x3742223b,0x3713788d,0x380e0e52,0xb83097a1,0x3731805f,0x3797ecbd,0xba213c41,0xbabede7e,0xbb0e6027,0xbb3ce1e7,0xbb036e7f,0xbaae43cd,0xba891f6b, +0xb9f4289b,0xba893e45,0xbb2aaef6,0xbaca880d,0xb9fa9950,0x3a908c96,0xb92a7fa5,0xba0e5fd7,0xb92f8a9e,0xb9666a4c,0xb9cf7e75,0x398fc47b,0x37f7a132,0xb782049b,0x37a3ea7a,0xb629831d,0xb7a7c8b6,0xb59ecd98,0xb6ec622d,0xb6ca9b66,0xb605d609,0xb67f7c03,0xb70032be,0xb69387eb,0xb74d4fec, +0xb6d1e84b,0x378338a4,0x3502cda4,0xb83901fa,0x3a7a7d19,0x3ad427c4,0x3b1b9ab0,0x3b45813c,0x3b3fff3a,0x3b0d9c87,0x3a466474,0x3843dd66,0x399aeacf,0x3a6e0d96,0x3b079221,0x3ac93333,0xba6edfcc,0x3a50c775,0x3a996145,0x3aabc2d7,0xb90573b7,0x3a8a6572,0x3a3845b2,0xb9970e02,0x38f790d0, +0xb87fddbc,0x3815a4bb,0xb6d50ff9,0x3797303e,0xb5414f58,0x3685d3d9,0x361a04b1,0x368bfb54,0x367bf01c,0x36c38510,0x36cea65e,0x36ae7440,0xb6b8ae3f,0x37158c75,0x389922e4,0xba59b66c,0xbaff5808,0xbb367510,0xbb5b60aa,0xbb517df4,0xbb052d93,0xb99587dd,0x3ad077bc,0x3b04b130,0x3a50c349, +0x3932987a,0xb9d34c79,0xba94c939,0x39ff86c8,0x3abb4929,0x3b063831,0x3af24698,0x3a01b433,0x3a73f53c,0xb887b5d0,0x378c1f82,0x3703f97c,0x3685f94f,0x367e318e,0xb5632f01,0xb6e589c9,0x32afd697,0xb65f0a69,0xb627b005,0xb5f02ec8,0xb642c65c,0xb3cc996f,0xb6e7a7c9,0x37b78557,0xb7ed95f4, +0x376def15,0x3a06baea,0x3ad7f123,0x3b23383c,0x3b505586,0x3b498f9b,0x3aeebef0,0xb99a6ba4,0xbb04deb7,0xbb0a99b4,0xb9837d9c,0x3aa63bb4,0x3ad8580e,0x3a96a9e1,0xba606818,0xbb1204eb,0xbb06ee9d,0xba0d5212,0xbb1f4c5f,0xbb39d1af,0x3a18cfb4,0xb923c8e2,0xb4e4f6e4,0x3712bfc8,0x347dd838, +0x3633a5b4,0x36870302,0x3655ab36,0x363649f1,0x367d788c,0x3675d4fc,0x3625e570,0x36b5362f,0x36beecb5,0xb77a7bbf,0x37ba6eb6,0x38216d1c,0xba4f0183,0xba793d21,0xba95b217,0xbaa2d89d,0xba825de7,0xba07a469,0x37f9b120,0x3b041239,0x3b2fae0b,0x3b266f10,0xba997021,0xbb262347,0xbab625d4, +0xb9488a9c,0x3aa2dfc2,0x3b3c9707,0xba9376d0,0x3b5ac2bf,0xbaf568a7,0x3930e42a,0x38cbed81,0xb87d465d,0x3811dbc3,0xb7a2d540,0xb6a5b29f,0xb6eb24ab,0xb6be8c9d,0xb6847acc,0xb6a55b67,0xb6b337a4,0xb6c278c3,0xb66fa0fe,0xb751b168,0x3809d1eb,0xb73d4d39,0xb8defc77,0x3a864794,0x3a30d525, +0x39ff3855,0x38059bad,0xb962ac94,0xba0fd068,0xba8b049d,0xba97a597,0xbaa70a8f,0xba407055,0xb9eb4ec0,0x3a14d5c1,0x3ae8dc3e,0x3b423d4a,0x3b79796a,0x3b9a3239,0x3b97e439,0xba3f3c22,0x3a0b483a,0x3945f186,0xb94f715c,0x38c4dfe9,0xb7d44600,0x38276652,0x3724e098,0x378fe3d7,0x373c17b5, +0x37495976,0x370e91b7,0x37442867,0x3720dc51,0x37c48da8,0x366ae7b1,0x37b737e7,0xb8a54f55,0x38f8b2e7,0x3a87b351,0x3a616610,0x3a63da04,0x3a21a2f4,0x39e19a08,0x38dff560,0xb9916005,0xba0abd50,0xba204614,0xba288de8,0xba31d67d,0xba5b9958,0xba824c6c,0xbab9060b,0xbac2792b,0xbab51603, +0xbaab9647,0x3a6af123,0x3a9807f6,0x39924eca,0xb7b5b0fc,0x3766093d,0xb81fcfd0,0xb8101eed,0xb7f8f181,0xb8008fee,0xb7de18c4,0xb7f2b90e,0xb7cb64c4,0xb7be7351,0xb7c3ff4c,0xb7c0a5cd,0xb808f166,0x3776c3b7,0x390a2c76,0xb92e9601,0xba23f831,0xba187c0b,0xba28e363,0xba2db186,0xba476d9f, +0xba5ddbab,0xba799664,0xba6eb912,0xba7028df,0xba71e16c,0xba2be664,0xb9cfd9a3,0xb8f6d6cb,0x3913b75a,0x39c46f3e,0x3a226336,0x3a67617f,0xb9ee1919,0xb9c91c8b,0xb9ab10b7,0x382ff4b1,0x383bbc64,0x38ea23d8,0x38bad8d4,0x38dfcf74,0x3892d193,0x38bc2350,0x38aed874,0x38bbe393,0x3898d1de, +0x38bd2851,0x38b4ce6e,0x38ea2bc8,0x38857400,0xb8dfde91,0xb9cd73ba,0xb9dd2991,0xb9e54603,0xba07f033,0xba10aeac,0xba20d8e8,0xba2a0625,0xba369cbe,0xba273521,0xba1a4377,0xba1534e8,0xba14610d,0xba1a83a6,0xba21f5ab,0xba1b0a0b,0xba12598c,0xba13009e,0xba07e992,0xb9d8ca18,0xb9c683d8, +0xba0697fc,0xba1102aa,0xba1f4119,0xb9443bb0,0xb9594495,0xb9403233,0xb9409feb,0xb9403ca5,0xb941b375,0xb93eb877,0xb93b8f84,0xb9328856,0xb952b729,0xb9542e9d,0xba176ef7,0xba08614e,0xba041846,0xb9fa1149,0xba0a7366,0xba0d2864,0xba13a976,0xba17a447,0xba1c5b4b,0xba2527bc,0xba2023da, +0xba1d32f8,0xba15f751,0xba108050,0xba07fbb1,0xb9ff7999,0xb9f6f6a1,0xb9ef625e,0xb9e11009,0xb9db64bd,0xba1f5d84, }; -const uint32_t orange53_rom_EL48[HRTF_MODEL_N_SECTIONS * 578] = { -0x3ed13c8b,0x3e795d4b,0x3e9113f2,0x3e4dabdc,0x3e534c23,0x3e5a6c3f,0x3e633a30,0x3e6e5b79,0x3e75e643,0x3e64d3ef,0x3e632d97,0x3e53a199,0x3e4ac079,0x3e48a4a7,0x3e4a994d,0x3e4097af,0x3e45547f,0x3e3b21b7,0x3e3d2895,0x3e2ca5e0,0x3e46551a,0x3e34fe03,0x3e49e02a,0x3ea451fc,0x3e3c0329, -0x3e46c0ab,0x3ea49835,0x3ea12722,0x3e95d1a9,0x3e7f26a1,0x3eb0987f,0x3ea830c3,0x3e9340d1,0x3e61ee32,0x3e4d411e,0x3e916f00,0x3e7f56a2,0x3f16eaed,0x3e97d3c6,0x3eb87774,0x3ec0bd26,0x3ed04427,0x3eee5368,0x3f04faba,0x3f07ecc7,0x3eda8d36,0x3ee77542,0x3ec6553c,0x3eaf5f1b,0x3ead1b80, -0x3eb10685,0x3e8fddb6,0x3ea1999f,0x3e91131e,0x3e84fb60,0x3e75c109,0x3e8999e3,0x3e571804,0x3e24616f,0x3e17f23e,0x3e3463f7,0x3e2c1b00,0x3e08a916,0x3e207d3a,0x3e33e6d5,0x3e15b994,0x3e319abe,0x3e38254a,0x3e10efa7,0x3e277d7c,0x3e3b18bd,0x3e536efd,0x3e3b416c,0x3eb4796f,0x3f0a6aed, -0x3ee2d03f,0x3f0c56da,0x3f176c4a,0x3f4453dc,0x3f4b33d3,0x3f58f68a,0x3f3e0f6e,0x3f22e579,0x3f093530,0x3ef6ac20,0x3ed902ce,0x3ec59eea,0x3ec14bf2,0x3ea693fa,0x3ea6784d,0x3e824cfb,0x3e8691ec,0x3e2e47c4,0x3e60113f,0x3df23b1d,0x3e06e0c7,0x3de87e39,0x3daad691,0x3dcf908c,0x3d940eb5, -0x3e2c4126,0x3e0970db,0x3dc0bcf9,0x3de71452,0x3dd88847,0x3e019b2b,0x3e11de7d,0x3e489e68,0x3e8f7d91,0x3ee84d3c,0x3eaf4131,0x3f3baad3,0x3f291019,0x3f5ed505,0x3f8540f7,0x3f9cc18b,0x3f9abb64,0x3f86b22c,0x3f67822f,0x3f37475b,0x3f17b596,0x3eff1353,0x3ef13107,0x3ec4d032,0x3eb241f6, -0x3ea239f6,0x3e7b2d7f,0x3e597322,0x3e0e5038,0x3dd1a78b,0x3daa37a5,0x3d892104,0x3d711743,0x3d4bd0e5,0x3d292713,0x3d6443e2,0x3d25ad2b,0x3d421448,0x3d43af07,0x3d300046,0x3d70e42c,0x3dc8ab81,0x3dbbdd5d,0x3e13a120,0x3e25ca82,0x3eb3d700,0x3f0612a7,0x3f693169,0x3f6f0533,0x3f8bd516, -0x3fbfdabd,0x3fdfaf3d,0x3fe40f98,0x3fc15e6b,0x3f99224b,0x3f6baec4,0x3f3d356b,0x3f1b42af,0x3f085c2d,0x3efd4a52,0x3edd3142,0x3ebcfb76,0x3e8c7934,0x3e5ffdec,0x3e063244,0x3e338d6d,0x3d6fdafa,0x3d48c645,0x3d02cdde,0x3cd9f38a,0x3cb6a3fa,0x3cdc2664,0x3ce66ded,0x3d05270b,0x3ccc95d7, -0x3ce87b00,0x3d0ca110,0x3d5a9a6c,0x3dba13f0,0x3def03db,0x3e8087d4,0x3f4b245c,0x3fa0396e,0x3fddaab3,0x3fdab318,0x3ff0864f,0x3fe904d2,0x3feab043,0x3ff22dcb,0x40019773,0x40060906,0x3ffd1b7f,0x3ffcf26f,0x40006c8e,0x3fcffa0a,0x3fae1b30,0x3f69eeab,0x3f477de8,0x3ef3cff1,0x3ea25277, -0x3e7089c7,0x3e05cd1d,0x3dbd3ee3,0x3d78f733,0x3d2da426,0x3d0c4b8e,0x3cdc1d30,0x3d160fd3,0x3d0cb359,0x3d19f681,0x3d112553,0x3d4f35c9,0x3da66c5c,0x3e055b6f,0x3e3b305d,0x3e97f342,0x3f0cd189,0x3f1aaa77,0x3f705e4b,0x400df970,0x4019287f,0x4014e0f6,0x4003b0d4,0x40113232,0x400d83ce, -0x400ec086,0x3fff0a5e,0x4001e72f,0x3fff723b,0x3fe4c088,0x3fdf932c,0x3fab897b,0x3f810f00,0x3f5a0e3d,0x3f05af48,0x3ed5816d,0x3e628221,0x3e55f28d,0x3df23fe0,0x3d85cd46,0x3d32c27f,0x3d043be3,0x3ce2c304,0x3d06c6d8,0x3d23deac,0x3d40ca1c,0x3d37cfd7,0x3d4db224,0x3d8cf333,0x3de2d5f5, -0x3e056cf5,0x3e67af90,0x3ecaf713,0x3f9048d0,0x3fa3c1b1,0x406ffbda,0x4030953f,0x406c66b0,0x40278192,0x401d6299,0x4013ac22,0x3ffe8886,0x3fff0af5,0x4007a800,0x4000cd5d,0x4002f85c,0x3ff613f8,0x3fc14f2e,0x3f8fef43,0x3f54feae,0x3f048e1e,0x3ecab158,0x3e72d076,0x3e44e0b7,0x3df1aa4f, -0x3df5729c,0x3d9220fe,0x3d4c2c2b,0x3d4fd921,0x3d45755b,0x3d554b3e,0x3da5e2c9,0x3d5a76bb,0x3d64b3f1,0x3d9ca9c4,0x3dfe0e72,0x3e25c701,0x3ec26c72,0x3e9ea4fb,0x3f974fdd,0x3fb3064d,0x4085dc81,0x406bff87,0x40a142f9,0x4036d27b,0x4022b1d4,0x400ea6d0,0x3ffe03d0,0x4002c524,0x401116a3, -0x4016c2d6,0x400cf594,0x400113f8,0x3fc37e15,0x3f893175,0x3f4e8e8d,0x3efac18c,0x3ee3c2fc,0x3e553fdb,0x3e4fbe0d,0x3e05430c,0x3e074c75,0x3dac8a62,0x3d8a9c22,0x3d8b36ff,0x3d579c0f,0x3d7e4070,0x3e0d38ed,0x3d86f95c,0x3d7052db,0x3d95a514,0x3e24108a,0x3e1b92d0,0x3ed43c9a,0x3ef03d8f, -0x3fbbe432,0x4062eac1,0x406c77b6,0x405f63ae,0x408f5d1a,0x40295d42,0x40139c05,0x3fff5d60,0x400e594d,0x4017a277,0x401136cd,0x4002c839,0x3febb869,0x3fbf2486,0x3f9748ff,0x3f596ede,0x3f18fc68,0x3ef01d5c,0x3eb9843d,0x3e89eca8,0x3e415d5d,0x3e362b91,0x3e09955a,0x3dd41d9f,0x3d91e34f, -0x3d8803d8,0x3d53bfda,0x3d85521b,0x3e2dc535,0x3d8ebfae,0x3d90826a,0x3d9b80cd,0x3dcf125a,0x3e3ead1c,0x3e994fe8,0x3ec84eb7,0x3fd34df6,0x3f9a6ef2,0x4052fabf,0x401bcf61,0x401c2989,0x3fec950b,0x3fdc1b7b,0x3fe34791,0x3fc495a4,0x3fd74b51,0x3ffca964,0x3fe4dceb,0x3fb656ec,0x3f9bc39d, -0x3f5c6176,0x3f1f1228,0x3f00bc95,0x3ee2a73d,0x3ebb7571,0x3eb6bdc4,0x3e88c099,0x3e514961,0x3dfb3bd4,0x3df4be0f,0x3db41ec9,0x3d8cd1c8,0x3da123f7,0x3d96cf95,0x3dd81f17,0x3dab5341,0x3db97d0c,0x3dfe04e8,0x3e3b81b7,0x3e691e94,0x3ed85b87,0x3e9ef6c7,0x3f899412,0x3fb75457,0x3fa2de8f, -0x3f98f354,0x3fa179bd,0x3f9f9a70,0x3f9e6859,0x3f998dc3,0x3f989e57,0x3f8bbf8a,0x3f858ec3,0x3f76bc6a,0x3f632261,0x3f4494f6,0x3f2d78bf,0x3f0fc5fd,0x3ee18cce,0x3ec17957,0x3edd32b2,0x3e89eb90,0x3ea3d985,0x3e8d979f,0x3e644968,0x3e08c523,0x3dced224,0x3dc9c545,0x3dbd3715,0x3da76201, -0x3dcb6909,0x3dd4d5b4,0x3dcf4b16,0x3dd8061e,0x3e25c1ac,0x3e3fb792,0x3e854a5f,0x3ef2ee6f,0x3f0c884b,0x3f150acc,0x3f5ce24b,0x3f5bec73,0x3f6feb9f,0x3f714167,0x3f7d710a,0x3f82fc24,0x3f6f2ebb,0x3f63b0f5,0x3f5da899,0x3f3d9d04,0x3f2d3c5d,0x3f17be35,0x3f086393,0x3eebd34f,0x3ecc310f, -0x3eb97af6,0x3ebc063b,0x3eb99803,0x3e991bf5,0x3e61d40e,0x3e564440,0x3e2de440,0x3e048d5c,0x3dd7e105,0x3e160ade,0x3de1a00d,0x3de16cd3,0x3dec3e15,0x3dfd32ec,0x3deb987c,0x3e280789,0x3e39ced4,0x3e9bf184,0x3ea6d96f,0x3f03e63e,0x3f1772d3,0x3f1aa5f0,0x3f2c8fe6,0x3f53e430,0x3f49f1c2, -0x3f51b47e,0x3f5a4e07,0x3f4c85d0,0x3f423aae,0x3f3ce42f,0x3f233863,0x3f12c918,0x3f03911a,0x3efcbd29,0x3ee9eb38,0x3ed69662,0x3ec43a56,0x3ece0cb6,0x3ea07408,0x3ea59572,0x3e78b241,0x3e81dea6,0x3e4e7729,0x3e41aa10,0x3e55acc0,0x3e208286,0x3e9c8825,0x3e7637a3,0x3e475243,0x3e3df24d, -0x3e34a164,0x3e76290e,0x3e93d93a,0x3eb08995,0x3ecadc7a,0x3f113bc0,0x3f0bdb87,0x3f0ee1d4,0x3f099c03,0x3ef48627,0x3f1ea131,0x3f20c927,0x3f399b74,0x3f2c73b4,0x3f262976,0x3f2121b2,0x3f19e5d9,0x3f14ce1e,0x3f12d7b1,0x3f03c5e7,0x3ef0f4cc,0x3effbd56,0x3ee9b16b,0x3ed78834,0x3eed1cd8, -0x3edc2610,0x3eb7f041,0x3eb57f1b,0x3ebdc528,0x3e9ecbf6,0x3e80082c,0x3ea732af,0x3ea22882,0x3ea99cb1,0x3ebc9096,0x3eb7ce14,0x3ec01445,0x3ece4084,0x3ea0fe82,0x3f01008b,0x3f10221a,0x3ec28e85,0x3ed6b53c,0x3eb7ab93,0x3ec1eb35,0x3ec174a4,0x3ecb916b,0x3ec6c00c,0x3ed14505,0x3ec77437, -0x3ec59ac3,0x3ec10c03,0x3eba3a4e,0x3eb3a237,0x3eb0b86d,0x3eaddfc6,0x3eae11a4,0x3eadbaef,0x3ea91e51,0x3e9d2cd4,0x3ec46610,0x3eaa589f,0x3ebfcdcf,0x3ef9d5f8,0x3ea8e769,0x3eb99bfa,0x3ef7712b,0x3f0afdcf,0x3eef7737,0x3ee4a1c7,0x3f0d1a53,0x3f0c1c9f,0x3ee54d66,0x3eb2a769,0x3ea87026, -0x3efa9ce3,0x3edc59fc,0x3f5b2601,0x3b099120,0x3b094e5e,0x3b171df9,0x3a855517,0x3a870aeb,0x3a74564d,0x3aa373fe,0x3ab45a43,0x3ab2aa89,0x3aad53ff,0x3aac0516,0x3a9e7418,0x3a9ac19f,0x3a9c19a4,0x3aa24200,0x3aa3feb5,0x3ab0e011,0x3aae433c,0x3ab128c5,0x3a8fffe8,0x3ac78f57,0x3aafde90, -0x3acac392,0x3b7c1200,0x3aca39b3,0x3aca9921,0x3b77488d,0x3b74ff3f,0x3b5d1da7,0x3b28bb52,0x3b7db0b7,0x3b6755d8,0x3b31474a,0x3af674e9,0x3ade65ba,0x3b3631f0,0x3b0f7eb6,0x3bb0368d,0x3ac93c48,0x3abc0200,0x3abe03de,0x3a92e288,0x3b330721,0x3b62a003,0x3b59a3f0,0x3b4bfe03,0x3b4ba323, -0x3b2850ec,0x3b1a55b5,0x3b1d3f94,0x3b359581,0x3b2b7527,0x3b37733b,0x3b24dec5,0x3b0dd07b,0x3b0300d3,0x3b283f57,0x3ab8b640,0x3a50a591,0x3a2807b5,0x3aa0156e,0x3a9d90aa,0x39c6d4e6,0x3a362f1a,0x3a889171,0x3a37a9d3,0x3a511dd0,0x3a8f9c73,0x39e2a256,0x3a0ea16c,0x3a24aece,0x3a8e5f53, -0x3a17afc1,0x3b166f92,0x3b600797,0x3a96c9db,0x3aad96a3,0x3a457b29,0x3b637739,0x3b9f4617,0x3b8da6cc,0x3b9122b2,0x3b8002cd,0x3b64ffcf,0x3b46d976,0x3b4b2733,0x3b51ec63,0x3b6b6b0b,0x3b744170,0x3b85d561,0x3b3c6ff8,0x3b56dcb6,0x3abe2900,0x3b2dc8c7,0x3a84176c,0x3ab7bf69,0x3a71dbe8, -0x39ba9596,0x3a2fc662,0x39cf6fa2,0x3b01a56d,0x3ac32a8c,0x3a49a762,0x3a4dcecd,0x39e9ad44,0x3a09d5cc,0x3a14293c,0x3ac2c0a7,0x3b041d7b,0x3b2f402c,0x3a59ef26,0x3b00b8ac,0x3a94dc1e,0x3a4126f3,0x3ba901a2,0x3c14cd86,0x3c00bacb,0x3c088eed,0x3bed3031,0x3bc72687,0x3bb3e1ce,0x3ba3dbc7, -0x3bd6ac19,0x3bcd3819,0x3bc12154,0x3ba7031a,0x3b7f012b,0x3b6336db,0x3b0caa73,0x3ad91a78,0x3afd470b,0x3abac91e,0x3a6b20db,0x39fd17b2,0x39ec6730,0x3a47dd0b,0x3a521446,0x3a8a0661,0x3a5da398,0x3a166a91,0x39cf952f,0x3a21493a,0x39b4a6e5,0x3b0de0ff,0x3a5c9480,0x3b26ea2d,0x3af35e26, -0x3b033569,0x3a7f168b,0x3a04ec31,0x3bc82714,0x3c15a581,0x3c07a177,0x3c125d5e,0x3bf62cd7,0x3bdce1eb,0x3bba2d4e,0x3bbc5394,0x3bb1e5df,0x3bdb37f1,0x3bed5efe,0x3bfb46fc,0x3baf07b9,0x3b8dbe4c,0x3b19d3ed,0x3b880abd,0x3ada494d,0x3b0a73a1,0x3a89c12e,0x3a3a3c49,0x39be9098,0x3a436bd4, -0x3a87b721,0x3ab14206,0x3a74ebb2,0x3a40a02f,0x39c9d4d8,0x3a09cd1e,0x39ee322f,0x3b2026e9,0x3ac3d78c,0x3c0cff96,0x3ba454a7,0x3bffae87,0x3c00fdd1,0x3c563a9b,0x3c23a87d,0x3c3fa4a8,0x3c40b734,0x3c265f60,0x3bf02281,0x3c03490c,0x3be35edd,0x3ba9bdbc,0x3b254a95,0x3aa71e10,0x3a7fd525, -0x3b3aab26,0x3b237d2e,0x3b6fb52a,0x3b48aae0,0x3b13bc0e,0x3b10dc43,0x3b01f65b,0x3a9529ff,0x3a3e15a1,0x3a4d7fc4,0x39b55cfa,0x39b45694,0x3ad0c336,0x3a9923ed,0x3adea902,0x3adc486a,0x3b1f516d,0x3ab4b318,0x3b5fca74,0x3bce4e6d,0x3befe13d,0x3c1dbff6,0x3b7faf65,0x3aadf6ea,0x3ba0c016, -0x3b974ff0,0x3b76af5d,0x3b0b0553,0x3aa4b76c,0x3ac3a487,0x3a955423,0x3a531f48,0x3a66aa1e,0x3a4fe31d,0x3af23bd6,0x3b80ecd5,0x3c25c48a,0x3b9a6de0,0x3b6e9917,0x3a8b74c4,0x3a9ef87d,0x3a2aa2aa,0x3a061248,0x3a40a888,0x3a151e38,0x39ade610,0x3a0a6810,0x3a229cb9,0x3a44e572,0x398c8c8c, -0x398fc054,0x3a375fa0,0x3aac2210,0x3a8bbce7,0x3b1c40d1,0x3bb0c76f,0x3a301c68,0x3b8e4497,0x3b126d79,0x3b30fcc5,0x3be1383c,0x3c4afa70,0x3c679961,0x3c7e191d,0x3c02c692,0x3bab19c8,0x3b1cfa97,0x3b830ac3,0x3baeabe4,0x3bd2d4f1,0x3bace754,0x3b500d60,0x3ab43c80,0x3a8cf10d,0x3aa1241b, -0x3ab6209d,0x3a0b4d64,0x39452744,0x39fd9c38,0x39e45c04,0x398ef0cc,0x396e8c59,0x395ff402,0x395d4008,0x3929d28d,0x39015bfd,0x399259e8,0x39e0eff5,0x3a473e69,0x3a880d9b,0x3ac00a87,0x3a0915a9,0x3b0173b1,0x3b250e0e,0x3b56da88,0x3bd6ba42,0x3ce7330d,0x3cbcd421,0x3cca3aff,0x3c7030a0, -0x3c0fa28e,0x3ba3e3e4,0x3b52a913,0x3bdd11a9,0x3bf796dd,0x3bf7806b,0x3ba61e26,0x3b2f750f,0x3a5c82fd,0x3a56ddea,0x3aa48370,0x3a6c2279,0x3a11f383,0x392217dd,0x39856b86,0x398a9a17,0x38f2219d,0x390b0d0c,0x38ce3e47,0x38996c36,0x38a57f24,0x39739dc1,0x3a090c71,0x3a5ca029,0x3a39db8c, -0x3aaaa431,0x3b23c3e6,0x3b0eb9cf,0x3bb99f8d,0x3bdccbdb,0x3c897aca,0x3cb05d6e,0x3d1982e9,0x3cbc1aa5,0x3c5d7f20,0x3b5779e8,0x3b46b848,0x3b20e68b,0x3b297a59,0x3ae9c17c,0x3ab587d3,0x3a40753a,0x3acd1805,0x3b0babeb,0x3b47be5f,0x3b082572,0x3aa0cdae,0x3a349709,0x39a58dc2,0x39e82f6c, -0x39c16bf6,0x39cde0e2,0x39771906,0x394814cb,0x388d3870,0x38730f61,0x38e83176,0x38dfadda,0x391a8ae7,0x39db19fd,0x39fe4c4e,0x3a903126,0x3b14c828,0x3b8d1838,0x3c873595,0x3cc98687,0x3d0d858a,0x3ced38ab,0x3c929ca3,0x3c8a5695,0x3c8cc138,0x3c4b2941,0x3bea764d,0x3bd45702,0x3c093662, -0x3b9d7b12,0x3b730bc1,0x3b5889eb,0x3a61c4d0,0x39bebf9f,0x39a02a57,0x39a7566c,0x399c3e82,0x3a1a33fb,0x3a11a1f5,0x39a9aa91,0x399c7371,0x390ffc6e,0x38e9b2d5,0x39972c24,0x39375825,0x3938860a,0x397f23d6,0x3a46e1e4,0x3a818b8b,0x3b0ab7ff,0x3bba9ade,0x3c06eebe,0x3c18ca2a,0x3c15eea5, -0x3c2ab8df,0x3c1a0225,0x3c21c4b8,0x3c01ae5c,0x3c04a785,0x3c084420,0x3bfef42d,0x3c0653a2,0x3b803f7e,0x3b3acd26,0x3b146ee8,0x3b3a9b39,0x3b32a1eb,0x3b01d65e,0x3b139c24,0x3b0bda6b,0x3acc808e,0x3aad39e4,0x3a4c50e0,0x3960eaa1,0x3989cb70,0x39a6c82d,0x39f680c1,0x398f3f22,0x39d73d67, -0x3a4f7ea6,0x3a88371b,0x3abcd664,0x3aed8c17,0x3b3d2b09,0x3b69002b,0x3b93e6c9,0x3b944502,0x3b8b2328,0x3bc1633f,0x3be18fe2,0x3be6ccb8,0x3bdfdc59,0x3c05c56d,0x3be5f9f6,0x3c05f750,0x3bce28da,0x3bd5db06,0x3bdb8849,0x3b81001d,0x3b32e032,0x3b2f330f,0x3af8adb5,0x3adb3e75,0x3ab94178, -0x3ab6e362,0x3a9ff563,0x3a8ac8ad,0x3a4fc252,0x3a0fc53a,0x39cf1f2b,0x39b82349,0x3955168b,0x398991de,0x39b8c789,0x3a1c1d2b,0x3a8caa01,0x3ac4a1f1,0x3af26986,0x3b14efb6,0x3b39f749,0x3b5ff9f0,0x3b90d155,0x3b951ba5,0x3ba91201,0x3bc44790,0x3bd11a15,0x3b86efc6,0x3b942a0e,0x3b86878e, -0x3b99b841,0x3bbfe400,0x3bc115e4,0x3bd45c77,0x3c02f645,0x3bd0ef52,0x3ba3a58a,0x3b9bcb7f,0x3b40f03e,0x3b234b5c,0x3aebbd2b,0x3abee27f,0x3aa532ea,0x3a80ff00,0x3a3e61d6,0x3a5f585f,0x39fac940,0x3a091b64,0x39a70c9b,0x3a0db994,0x3a1eb3fe,0x3a66acd5,0x3aa75356,0x3ab59e36,0x3b0cdca7, -0x3b2db81c,0x3b25051e,0x3b3a44dd,0x3b4cf13c,0x3b59d215,0x3b68b82f,0x3b810e1a,0x3b6f5efd,0x3b7cfb29,0x3b657b43,0x3b6d3b19,0x3b55be2c,0x3b312272,0x3b59249e,0x3b5a37de,0x3b8730ea,0x3b557b7c,0x3b479e83,0x3b3fbedc,0x3b36465e,0x3b2da363,0x3b2ac892,0x3b0b2de9,0x3ae45176,0x3adf0fb0, -0x3aa5d05b,0x3a756d6f,0x3a6a7666,0x3a6e19bb,0x3a88e0a3,0x3a9ac8f2,0x3aaccf0f,0x3abaf82c,0x3ac11ff6,0x3b00b545,0x3b09ecf7,0x3b1578f3,0x3b306092,0x3b390e02,0x3b59112f,0x3b5f80d7,0x3b45a18e,0x3b6e7f1e,0x3b82510e,0x3b109888,0x3b0c801c,0x3b044053,0x3b0c61d3,0x3b13dfd8,0x3b230d2c, -0x3b2878d3,0x3b39ff2f,0x3b2ab1d4,0x3b1e7a37,0x3b1076ca,0x3b03535f,0x3ae87ae4,0x3ad65410,0x3acc1e13,0x3ac963a8,0x3ac7cc64,0x3ac51454,0x3ac04b89,0x3ac1d083,0x3ad29c8e,0x3aee8124,0x3b193ba3,0x3af0a4dd,0x3b01ea87,0x3b2c65be,0x3b450de4,0x3b2c32a6,0x3b23e5b1,0x3b3d5b63,0x3b3486d0, -0x3b216be5,0x3b09682a,0x3b024f10,0x3b26de0a,0x3b16b9ac,0x3ba1e4e3,0x38b3abaa,0x38b828ce,0x38e6b01a,0x38415633,0x3840e809,0x383b3141,0x385b10e1,0x386d40c6,0x3867fd5c,0x386d5b4c,0x38710741,0x38686cad,0x385d5eab,0x3869e14a,0x3882c324,0x38848981,0x388b7aa2,0x38816858,0x38745542, -0x383c9b33,0x38844d9a,0x387f0bca,0x38aea43d,0x3933eca6,0x388d2460,0x38b3df25,0x3930f205,0x39312d1b,0x391ed509,0x38f2a018,0x393a6d90,0x392bf861,0x3907c5b6,0x38d61865,0x388fd34c,0x390523c6,0x38fd19ba,0x399309e7,0x3880a274,0x388fab4b,0x38a38d49,0x38b79329,0x39062d80,0x39148296, -0x3908ce05,0x390cd76c,0x3919d392,0x39118148,0x38fa122e,0x3903d981,0x392cada9,0x392fd1b3,0x3933a251,0x39089288,0x38c4acfe,0x38a5c5db,0x38da139e,0x388cfdf6,0x37e3ba82,0x37f41272,0x3893b6ae,0x3874b16b,0x37aba2ab,0x380f6ff0,0x386f274c,0x384c8e72,0x386451cf,0x387cd8d1,0x37fcf349, -0x37cb68b9,0x37d24c68,0x386a9cee,0x37b4e567,0x38f6606c,0x392efe56,0x38b02efc,0x38d52121,0x390468c4,0x393f806d,0x3965acf2,0x3939925a,0x394ebf4b,0x394398ea,0x3961cdc6,0x391e8d6e,0x394b5192,0x399439ed,0x39aee597,0x39a54908,0x398e959b,0x39195321,0x3916bbda,0x38858a40,0x390b9e38, -0x37f1fba8,0x384e9121,0x388c5d0d,0x382cc742,0x38429564,0x37edea5a,0x38c679d3,0x390f4c86,0x38ba0dd5,0x38a71370,0x3894bbbd,0x37fa2a30,0x37c2df78,0x38a9c853,0x389bc258,0x39146731,0x37dcaf8d,0x390d63f1,0x3929a2ad,0x399b06b8,0x39cb6759,0x39f20a87,0x39c0ec01,0x39d05e2e,0x39cbae3c, -0x39eb6b68,0x399f5b5f,0x39a52bb5,0x3a1a5d35,0x3a2a4fd6,0x3a18fb4c,0x39c93dee,0x395d1ad1,0x3926156f,0x38ea025b,0x38673a28,0x3837f47a,0x3861bbe9,0x38e3ff11,0x38a1760e,0x38a9ae2b,0x3895e540,0x3904ecff,0x39870343,0x39b6e417,0x39812ecf,0x392b5ff6,0x38775036,0x37517529,0x391e8882, -0x37f09920,0x38d20714,0x38eeb4de,0x39648515,0x39644cc2,0x39b2c9b9,0x39f75373,0x3a02d281,0x39c0c150,0x39d62456,0x39bb81c0,0x39f12675,0x3988dd09,0x39e8cea4,0x3a5b41b8,0x3a886851,0x3a6fbacd,0x3a3df8c9,0x39ba4722,0x398c69ed,0x392bc6cb,0x397315cf,0x381ad643,0x38c89fee,0x38bf246d, -0x388718cb,0x385157d3,0x386186a3,0x38357ebf,0x38ccecc7,0x395e8852,0x3953278f,0x39394517,0x38ee332e,0x386e9b23,0x39478ec9,0x384c8c68,0x3a494433,0x3a5043dc,0x3aaf2ad4,0x3aac3125,0x3aa7bdd0,0x3a2a2100,0x3a294910,0x3a3c88a0,0x3a103955,0x3a53a6db,0x3aa447ec,0x3a966032,0x3a7878f7, -0x3ac26809,0x3a9284fa,0x3a395b5c,0x3a81a821,0x3a7955f0,0x3a8b4f69,0x3a6cf68b,0x3a40be6f,0x39ced096,0x39c2d9bc,0x3948b61f,0x387bd77c,0x38a9cd15,0x38a05075,0x38c33589,0x36dfaa4f,0x3786e275,0x3929e9bc,0x39f37b8d,0x39ed2d3a,0x39c5a5a1,0x392a827a,0x39d24708,0x3a76bebc,0x3a392362, -0x39cde55e,0x397f61a3,0x3a4ca4cd,0x3a7acffa,0x3a9cd784,0x39a9fe95,0x39681117,0x39482deb,0x3a719ad1,0x3a0f6da7,0x3a46a43f,0x3a52b772,0x39f4c5da,0x39e575aa,0x3a338139,0x39c9a778,0x3980e1f2,0x393dcc2b,0x38bb2f72,0x382b10a2,0x3791a125,0x379d60a6,0x37221328,0x37df4a17,0x37fc626f, -0x3814e27d,0x37fbd217,0x3710d4f0,0x38470dd7,0x3963322e,0x3a5244c3,0x3a3bb20b,0x39f5a633,0x3a0da7f5,0x3a9bb755,0x3b54b0c8,0x3a677cc8,0x3964f618,0x3a47ac8d,0x3a0521f0,0x3a364dcb,0x3a8957ae,0x3a2bfd7b,0x3a14977c,0x393def6e,0x396b12ef,0x399bf588,0x39c218c3,0x3996e9d2,0x391532a6, -0x38ef42ad,0x3841640d,0x388d6b06,0x387a8822,0x382d8499,0x37b3145a,0x37ca87fa,0x37945a3e,0x37b0b4d0,0x37e18c50,0x36b0eab7,0x3670bf82,0x34742404,0x35ea57aa,0x36d3b35e,0x382aba83,0x39763c1e,0x39437d1a,0x39b372e4,0x3a37a1c1,0x3a778874,0x3b032c08,0x398462ac,0x39a013c9,0x3aec5e27, -0x3aaf5318,0x3ac6dbd9,0x3abe7e71,0x3a80a3e0,0x3a48c1f4,0x39dbcfd8,0x39c1c0e9,0x39ddf0cf,0x3a0fa0ec,0x399140d6,0x3949c334,0x38867a4a,0x380a5032,0x382ab8c1,0x382501fa,0x38293078,0x37540335,0x369fece6,0x376e12ee,0x372efe26,0x379e3134,0x35cf30fb,0x35ad273d,0x35815ce1,0x37258525, -0x3807e669,0x387fd1d6,0x37b9b31f,0x38411817,0x39b2c3b0,0x39e4ae57,0x3af4359b,0x3b825b2f,0x3aacfaa7,0x3a78c9c1,0x3afebbb2,0x3ab27534,0x3a735ac6,0x3a14b1b0,0x399b69d0,0x39c0261e,0x398fc198,0x392b4c31,0x398461b1,0x39a02be2,0x3972619e,0x3955caf4,0x397e697e,0x39160c90,0x3912b29b, -0x38f2c9bb,0x38be1730,0x38b04765,0x389a475b,0x37988cc0,0x35be66bd,0x36f9de4c,0x360b22b7,0x3631bdbe,0x367fabf9,0x368f3be0,0x376a3d79,0x3885780c,0x385651ec,0x38588bfe,0x3a28c537,0x3abb6d65,0x3ac92cb3,0x3abe90f3,0x3ab5d0a3,0x3a938b24,0x3a337f08,0x3a24649b,0x3a3cf96d,0x3a2ccc1b, -0x3a2a70f4,0x3a71090e,0x3a6c0a66,0x3a2f0187,0x39a9e784,0x39a811a3,0x38dc2aed,0x38081e61,0x387f07ee,0x38fad051,0x394ca9bc,0x39845f8a,0x3991e9af,0x39803e86,0x3943f535,0x38a3a62a,0x37bcff22,0x366d54e9,0x37035501,0x372c92ea,0x374c4726,0x37a0ed41,0x372a47a5,0x37bbd15a,0x3753794e, -0x3804182c,0x395ec665,0x3a41051b,0x39bc80a2,0x39df0b19,0x39ed2325,0x39b714f7,0x39ba9ad8,0x39ac7072,0x39d2f4d5,0x3a003cea,0x39ad05f3,0x3987482d,0x3970c8ff,0x3999f244,0x39900473,0x3962e56c,0x391a193a,0x38a147a9,0x38255393,0x381308ab,0x3828e32f,0x3890af96,0x389f69aa,0x386b70c0, -0x3857f59b,0x381127a3,0x380b4724,0x37cd25cf,0x37bb4ca8,0x380b3747,0x3850ef58,0x38b24a00,0x38d109dc,0x38eeeba3,0x39127f6d,0x393768e6,0x3951e3f3,0x398bd059,0x38987b74,0x389e515a,0x38de4a48,0x38b6ddb5,0x390be73e,0x39072d6c,0x39234b22,0x39758b5d,0x39375b64,0x394a0325,0x3959a56f, -0x3914e401,0x38b66d8c,0x383e6924,0x37f5eaeb,0x3769e269,0x37f22848,0x38024606,0x383d5d32,0x387bf9a8,0x38935c43,0x389244e7,0x38a6de50,0x3890fb3d,0x3882d9c4,0x389496d0,0x3850187b,0x382f47fb,0x38534593,0x3850920d,0x386ff3bf,0x38a86bae,0x38797848,0x388e481d,0x38b24a80,0x3836708b, -0x39325d13,0x39197315,0x38fd34a9,0x38e40e5e,0x38f012be,0x38d0c042,0x38c16e2c,0x38d507b3,0x38afdd14,0x38961d2f,0x388c1b8e,0x3812c194,0x3811a554,0x382e67b0,0x38452be9,0x386847c9,0x38713c59,0x3877a93c,0x389775a8,0x3890bd26,0x389fc6d3,0x38a0b548,0x38c282a3,0x389be087,0x38b326d2, -0x38ece82f,0x38c442ed,0x38e27cf1,0x39005bc2,0x38bd63d6,0x38de0c9d,0x38bb2904,0x38f53e69,0x3934799a,0x39466906,0x3926929d,0x3957d356,0x39204cc7,0x3913d4c8,0x3906afb1,0x38e206a3,0x38e8d33b,0x38e52c87,0x39060edd,0x38c92c12,0x389ac0bb,0x38864860,0x38821a2e,0x38767fa0,0x3880cc13, -0x387540d2,0x387c22ff,0x38a0e4d1,0x38abecce,0x38bee094,0x38e4632b,0x38dbe318,0x38df5675,0x38ef6793,0x390a7f0c,0x39109a7d,0x3910a7c0,0x39236ae7,0x39254c45,0x39210319,0x39446c55,0x392b5b82,0x3986fb1a,0x396e477c,0x392ef5a7,0x395641a2,0x3946c54c,0x3868e3e5,0x385330a5,0x383d286d, -0x384430de,0x384d76f4,0x385ac053,0x385d2e52,0x38757bbe,0x387c892b,0x38866a0c,0x3885a3af,0x387ff2e4,0x3874dbcc,0x38740a85,0x387d08ac,0x3882bc55,0x3886c235,0x388728dc,0x38865b67,0x38966d6d,0x389281e6,0x38b28d32,0x38d71d3e,0x389b0563,0x38b927a7,0x38f29f98,0x390905ac,0x38e30b89, -0x38d78bfb,0x38f7add4,0x38decf37,0x38b09a2a,0x38850da8,0x386d6cda,0x38b6f619,0x389cf546,0x39219f93, +const uint32_t defaultHRIR_rom_EL48[HRTF_MODEL_N_SECTIONS * 470] = { +0x3e8fdcf1,0x3e8e2708,0x3ea53482,0x3e7c2de6,0x3e8fe783,0x3e906f77,0x3e9cddeb,0x3ea14109,0x3ea4da3b,0x3e9bbc9a,0x3e96062e,0x3e8f4bf3,0x3e8aaf7d,0x3e86b5df,0x3e8433e5,0x3e813d26,0x3e7d4d8a,0x3e78207d,0x3e742259,0x3e5a5203,0x3e8c3f1f,0x3e7d5e54,0x3e9285e3,0x3ef28ede,0x3e7742e2, +0x3e8ce88c,0x3ed9c917,0x3edf1bd9,0x3eda040b,0x3ebdd7d4,0x3eda97bf,0x3ee14156,0x3ed85779,0x3e90d3f7,0x3e8790ef,0x3eec0412,0x3ea8cd79,0x3ece6925,0x3ec47da1,0x3ebd9a80,0x3ed966e3,0x3ee7df3f,0x3f0a6b43,0x3f150db1,0x3f167f00,0x3f073082,0x3ef21552,0x3ed4e4bc,0x3ec08701,0x3eb2e282, +0x3eabf3c8,0x3ea35e5b,0x3e9b604e,0x3e951978,0x3e88e34a,0x3e799760,0x3e7556b2,0x3e7c70c3,0x3e18ad46,0x3e2aa56b,0x3e03b4c9,0x3e010068,0x3e14601a,0x3e1318de,0x3e2b1b01,0x3e22f5da,0x3e291c0d,0x3e27ed4b,0x3e0ebece,0x3e26bb84,0x3e2ae4c7,0x3e45e480,0x3e731040,0x3e96dc2e,0x3ebbe576, +0x3f0df63b,0x3f185058,0x3f2f4f39,0x3f5f633e,0x3f770181,0x3f80938f,0x3f5f3a68,0x3f419c66,0x3f23635f,0x3f0bb291,0x3ef3b0d2,0x3edf117f,0x3ec653ea,0x3eb1554c,0x3ea3754f,0x3e819f11,0x3e7536cf,0x3e15b0af,0x3e0be51a,0x3dc6f788,0x3dba046c,0x3d9e30bd,0x3d97db1f,0x3d88cc62,0x3d8ff480, +0x3da08fc8,0x3db705ed,0x3d81e369,0x3da1e8fb,0x3da2c5dc,0x3dc265af,0x3de656e6,0x3e256d3a,0x3e598bb7,0x3eaef2c2,0x3efee21b,0x3f444555,0x3f6438ad,0x3f8c4747,0x3fb8e107,0x3fd6d06a,0x3fdb249e,0x3fb0c966,0x3f8b3bda,0x3f4cb436,0x3f1ca18e,0x3f030e80,0x3ef1874c,0x3ed4119f,0x3eb9a223, +0x3ea9d5bf,0x3e8296f9,0x3e4eb3e6,0x3df4d90d,0x3db0650b,0x3d6f6077,0x3d44b0ec,0x3d05342e,0x3cd8c1a9,0x3cbf119a,0x3cd12ebf,0x3ce83eac,0x3d049cbf,0x3cc6af7a,0x3ccb3b17,0x3d06da74,0x3d4e2e2c,0x3dc31338,0x3de90336,0x3e3e4014,0x3f47f649,0x3fa1245a,0x3fd3acac,0x3fde77f6,0x3fec2853, +0x3fe593de,0x3fe96050,0x3ffa4582,0x3ffd2d34,0x40041b8b,0x400541c7,0x4001e8bd,0x3fed6164,0x3fcee5df,0x3fa4929d,0x3f7b4813,0x3f3f3f70,0x3eeb8e5d,0x3ea84661,0x3e54eea5,0x3e126301,0x3da32fb1,0x3d661c88,0x3d17185e,0x3cf9cc3a,0x3ccfa3dd,0x3d03dfbc,0x3d080ea1,0x3d0bfb8e,0x3d0e3e9b, +0x3d3a2b8b,0x3d97d3d2,0x3ddf9f5f,0x3e2cbfe3,0x3e6b3c91,0x3ee1cf1c,0x3f4a2014,0x3f7890ed,0x4024d50d,0x402f3e01,0x402ce8fa,0x40102e20,0x4011227a,0x401651ff,0x400d2f17,0x400900d8,0x4008f280,0x40068f8f,0x400126da,0x3ff0457b,0x3fb996c6,0x3f8b9e2b,0x3f6068b5,0x3f0be8a0,0x3ed5acad, +0x3e68eec9,0x3e45b6ba,0x3de819c5,0x3da1edf5,0x3d4288a4,0x3d151188,0x3cf527fa,0x3d104a92,0x3d26fca8,0x3d4f20b7,0x3d409322,0x3d59f3cc,0x3d96abf0,0x3dc8860a,0x3e1553b6,0x3e6dc06e,0x3ec4a74c,0x3f8aa8eb,0x3ff8b3b7,0x40808960,0x40768ef2,0x409c2f8a,0x40479ce8,0x402a7e54,0x401d47c0, +0x4002cb90,0x4004c608,0x4014c7d7,0x4019a72a,0x40194d70,0x400d24a1,0x3fdbc40b,0x3f9d47d1,0x3f5db62b,0x3f0b1d4b,0x3edaced4,0x3e6bca5e,0x3e48d1e9,0x3e0bff65,0x3e08773c,0x3da209bc,0x3d773fcb,0x3d8e5bdf,0x3d6759bc,0x3d7f6a8d,0x3dd2459a,0x3d67597f,0x3d670b0f,0x3d9e4691,0x3e2b93b2, +0x3e3c39bc,0x3ef6ec2c,0x3ebeb9b8,0x3f9c6287,0x4022ef5e,0x408c4efa,0x407affd6,0x409ec200,0x4039eecc,0x4011e38c,0x400348e9,0x40104faf,0x401ad488,0x4018d5ac,0x400ba5a3,0x3ff9e422,0x3fd0076d,0x3f9f0267,0x3f67bd92,0x3f22bc44,0x3ee99177,0x3ec15245,0x3e814c70,0x3e60c204,0x3e13ed43, +0x3e0522d9,0x3db7be71,0x3d8f5bf4,0x3d7b9b42,0x3d509e3a,0x3d813dc6,0x3e26950d,0x3d9266e3,0x3d7c2af0,0x3da3d63c,0x3dc0eabb,0x3e1be4ed,0x3e63f33b,0x3ebcfd2c,0x3f8167b3,0x3fd3d3d7,0x40306659,0x401bf675,0x401a8567,0x3ff122f5,0x3fdd583c,0x3fdb1405,0x3fcc073d,0x3fd2c5ff,0x3ff30b8a, +0x3fda4516,0x3fbd082e,0x3f95da01,0x3f5828c3,0x3f1eb26d,0x3efe3c4c,0x3ed82cb1,0x3ec62e2e,0x3ea595ff,0x3e7e3104,0x3e3abf3c,0x3e083f7b,0x3ddf0610,0x3dbb6549,0x3d916c99,0x3d857484,0x3d92353e,0x3de1cf37,0x3da3bc9b,0x3db1894f,0x3de51728,0x3e159f1a,0x3e3b3975,0x3e8cd940,0x3f43a2e9, +0x3f728996,0x3f63e8c9,0x3f8fe834,0x3f847337,0x3f88c014,0x3f8e14e8,0x3f901ddb,0x3f9041ac,0x3f896366,0x3f8651af,0x3f7d258b,0x3f5d5741,0x3f43b171,0x3f31f896,0x3f22f711,0x3f0866af,0x3ed8aaea,0x3ebeedb5,0x3eccb109,0x3e907436,0x3e914693,0x3e5a36c3,0x3e4fc7c9,0x3e10dfe3,0x3dcc7c4c, +0x3da9d110,0x3da9eedd,0x3db6a647,0x3dcf2d21,0x3dca4324,0x3dcb20f8,0x3dd76acd,0x3e06e7b1,0x3e3bb953,0x3e6b5484,0x3ec62bb2,0x3ee86498,0x3f0fc5a6,0x3f2f9c4f,0x3f424b8a,0x3f6698b4,0x3f6373a8,0x3f6840c3,0x3f72a08d,0x3f630906,0x3f5a68af,0x3f55591c,0x3f3b8780,0x3f27ffaf,0x3f17a470, +0x3f07f863,0x3ef183ff,0x3ed8fb7a,0x3ec40efc,0x3ec703f3,0x3ea8e717,0x3e9619a0,0x3e752095,0x3e56078a,0x3e3433dd,0x3e309aaf,0x3e1405ea,0x3e1f31a3,0x3e13bc36,0x3e2bd85e,0x3dfc021a,0x3e21b187,0x3e0a6b1d,0x3e3e168b,0x3e6fb306,0x3ea4d703,0x3ebbdecc,0x3f270a8c,0x3f0d26d4,0x3f06397f, +0x3f0e37d9,0x3f15e375,0x3f1ebe39,0x3f2a105e,0x3f388839,0x3f2c28de,0x3f240c2e,0x3f1c30e8,0x3f13f64f,0x3f0d419a,0x3f069127,0x3efe9e31,0x3eeef2d6,0x3ee32051,0x3ed8b094,0x3ecb5a16,0x3ecc8c97,0x3eddab26,0x3e9b86fe,0x3ea60bd0,0x3e9561d3,0x3e8b4715,0x3e989beb,0x3e9aa292,0x3eabb617, +0x3e9c3485,0x3eab1f31,0x3ea563f2,0x3e9045ef,0x3ea3a972,0x3eab5e10,0x3ebc5116,0x3ed778da,0x3eff9a16,0x3f0eb71f,0x3ee81f7d,0x3efbab4a,0x3efbde31,0x3f01c977,0x3f03f32b,0x3f08e4a8,0x3f02f0f5,0x3eff85a1,0x3ef8b9d7,0x3ef3688d,0x3eeea72a,0x3eea1308,0x3ee7d149,0x3ee53e6b,0x3ee1a0fd, +0x3ee018a4,0x3ed18af7,0x3efb74c2,0x3eeb1c8a,0x3f049b81,0x3f478aed,0x3ee67f59,0x3efe4636,0x3f3a7d68,0x3f3fe284,0x3f38520c,0x3f23fc6b,0x3f373f8c,0x3f3a3581,0x3f30c2ac,0x3f020321,0x3ef9539a,0x3f467e18,0x3f0feb90,0x3f144908,0x3adf8add,0x3b0df1fd,0x3b242786,0x3a996c3e,0x3ac23067, +0x3a9f1176,0x3af4e431,0x3b079d6b,0x3b04462f,0x3b026b94,0x3af8da75,0x3ae44ab9,0x3ade9a37,0x3addaed7,0x3ae703d0,0x3aebd63c,0x3aed1c62,0x3ae9c5ff,0x3ae7c60b,0x3ab3c12b,0x3b21ac9d,0x3b0f8df5,0x3b2d6e65,0x3bbf978f,0x3b10cf84,0x3b2344be,0x3ba58e0b,0x3ba90e55,0x3ba64f4e,0x3b89e7dd, +0x3b9f9cf5,0x3ba08754,0x3b93581e,0x3b1dca11,0x3b1aee86,0x3bac3280,0x3b447be1,0x3b3ed8b0,0x3b1c6428,0x3aaadfc6,0x3ab0e467,0x3a81afdb,0x3b362557,0x3b6e5511,0x3b5d5484,0x3b63bb6b,0x3b4f42d5,0x3b355d5a,0x3b25727a,0x3b2575b6,0x3b367edd,0x3b459896,0x3b4bd8a6,0x3b4707cc,0x3b2de5e0, +0x3b160e6a,0x3b17a54d,0x3b1b2369,0x3a758974,0x3aad5fd5,0x3a0f563b,0x3a01c2c5,0x3a6d646f,0x3a74d4fd,0x3abcf1bf,0x3aab9fb4,0x3aaec751,0x3a8cb4ec,0x3a139f23,0x3a38fa3b,0x3a103208,0x3aa0da30,0x3ac86e2b,0x3acb17cd,0x3aceceee,0x3adb66c3,0x3abcf759,0x3a4dd7c9,0x3b9425be,0x3be026a1, +0x3bc6d563,0x3bccb327,0x3bafcd62,0x3b990632,0x3b8577a0,0x3b7f7f61,0x3b91ad64,0x3b93fe92,0x3b94f072,0x3b8fa547,0x3b578dd4,0x3b611530,0x3ac8d399,0x3adba22d,0x3aa82c6c,0x3a919c39,0x3a3cf3e6,0x3a106132,0x39f10c75,0x3a2540a0,0x3a7caf8e,0x3a8d8cf0,0x3a21aa85,0x3a19732f,0x39ce2b41, +0x39b9ca20,0x39e47471,0x3ac44a56,0x3a850aa0,0x3adc8952,0x3ad8c679,0x3a9bdeff,0x3a42023b,0x3a1faf79,0x3bc64b41,0x3c312e95,0x3c1ca5a7,0x3c2150a4,0x3c0ed834,0x3c01b2ba,0x3be50893,0x3be7eaab,0x3c0367e0,0x3c0e4bc3,0x3c109d50,0x3c04c954,0x3bbb500d,0x3b8d8578,0x3b2216bb,0x3b0e65a4, +0x3b040988,0x3b025518,0x3a956c1b,0x3a1e774f,0x39efd82b,0x3a44cdb6,0x3a93a437,0x3ac795ba,0x3a87d769,0x3a4e9efb,0x39d02788,0x3a238e82,0x3a14ad59,0x3b44521b,0x3afa0569,0x3be5f2ca,0x3b9ad9d1,0x3bdd7bc7,0x3bf88636,0x3c2c8b6e,0x3c2370a0,0x3c249cee,0x3c32cceb,0x3c11b00e,0x3be41df7, +0x3bf380ab,0x3bca6f6f,0x3b93a3cb,0x3b1830f5,0x3a9c6add,0x3a9b2d49,0x3b51b41a,0x3b2f2bac,0x3b8e1284,0x3b2dd734,0x3b1f44d4,0x3b054659,0x3af7633a,0x3a8c1489,0x3a474430,0x3a1b5e68,0x3990307f,0x39b3fd94,0x3ab98879,0x3a987feb,0x3ac9a139,0x3acca43b,0x3b017a5e,0x3a92385a,0x3b296a69, +0x3ba4ebd2,0x3bf63ab1,0x3c22552b,0x3b5a90c2,0x3af05a26,0x3bb6ff4e,0x3bbf844d,0x3b8b34c6,0x3b3844b8,0x3aa4b11e,0x3aa5853f,0x3a996349,0x3a55f0ae,0x3a5bb963,0x3a78edce,0x3b0fd64b,0x3b993283,0x3c0ffc2f,0x3b97fad8,0x3b3b1856,0x3a806153,0x3a28ab98,0x39e9389c,0x3a0f5531,0x3a2cd692, +0x3a0aba11,0x39a8fec2,0x3a08c606,0x3a257007,0x3a25a420,0x39585c2d,0x398697bd,0x3a6c78fc,0x3adaa965,0x3ad7d81f,0x3b25c570,0x3bc24f21,0x3b3be107,0x3b7fb4b8,0x3b3b4290,0x3b9caac9,0x3ca133be,0x3cd8f2bd,0x3cf0a1a3,0x3cd4bcef,0x3c713c1d,0x3c0ba29e,0x3ba4f416,0x3c2080f5,0x3c53f18b, +0x3c42bf30,0x3bfd78b8,0x3b3def18,0x3a00c6f0,0x3a2411ff,0x3a974352,0x3ac8bb64,0x3a39fdbf,0x39a58d10,0x39c7fb39,0x39b2934f,0x39280ab9,0x39276ce3,0x390d43da,0x388cb423,0x3866c37a,0x398de43d,0x39f3b8ae,0x3a18b780,0x3a541994,0x3a9aef00,0x3ae15440,0x3b028573,0x3be18185,0x3c109bc0, +0x3c97d1a5,0x3cd29664,0x3d260355,0x3cd3037a,0x3c5c7f29,0x3b7e69dc,0x3b2cd4aa,0x3b2dc174,0x3b37434e,0x3b0c2985,0x3ae8943a,0x3a8fb5e5,0x3af902bd,0x3b35a6a0,0x3b44fd52,0x3b20c312,0x3ab9787e,0x3a41ebfd,0x3a105574,0x39d1485a,0x39b73f2e,0x39afe277,0x395f0f68,0x391e3c36,0x38aa089e, +0x38c97a79,0x39243a6f,0x3950ef5b,0x39946f04,0x3a6495f6,0x3a37f9ac,0x3acff89b,0x3b5759a8,0x3ba8f9eb,0x3c69049c,0x3cb29a4f,0x3d07c3ae,0x3cd9f349,0x3cada2a1,0x3c99043c,0x3c87d23b,0x3c37c0e6,0x3be53cfb,0x3bb73678,0x3be936ef,0x3b8f7ae5,0x3b4f26f3,0x3b290603,0x3a5e8877,0x39cc0e47, +0x39aa8749,0x399b8ca5,0x39ad7219,0x39e2ddb5,0x39b2aa6a,0x399368ae,0x3983753c,0x390dc29e,0x390f4f58,0x39853774,0x390f9ef8,0x3936fd34,0x3996cd39,0x3a153968,0x3a92f1cd,0x3b018bb5,0x3bb236b0,0x3c016b86,0x3c0683e0,0x3c3178d4,0x3c337207,0x3c23f63f,0x3c2b3e18,0x3c0123ec,0x3bfa085c, +0x3c01334f,0x3c002cc5,0x3c0bb60c,0x3b757b86,0x3b3795de,0x3b31258d,0x3b369a5c,0x3b337918,0x3b0f18c8,0x3b1c4d77,0x3b108d32,0x3ad94757,0x3ab1f016,0x3a4ce0bd,0x3976c291,0x3991178f,0x397edc51,0x39ca9593,0x399fb628,0x39ecd2cd,0x3a69644b,0x3aa6eaa5,0x3aea0d7e,0x3b14ce05,0x3b618fd6, +0x3b94fe84,0x3bb0b521,0x3ba59f21,0x3baa10f4,0x3bcab647,0x3c008117,0x3ba7a249,0x3bb2da45,0x3bb807e8,0x3bc50cb4,0x3bf3fe09,0x3be53dde,0x3bfbf659,0x3c1b7cb9,0x3be8ee40,0x3bbb81e5,0x3ba314af,0x3b782bfd,0x3b3a7e95,0x3b1349a5,0x3aef2f51,0x3ac83d4b,0x3aad255b,0x3a7ae801,0x3a604e5a, +0x3a2d2b8e,0x3a061bc1,0x398774bb,0x39bf6946,0x3a003caa,0x3a4fe8f8,0x3aa25c21,0x3aceadd6,0x3affb99e,0x3b2ece7c,0x3b31d30e,0x3b4a9e02,0x3b6cd85a,0x3b7f8997,0x3b931030,0x3baa00a9,0x3ba0b636,0x3b81d247,0x3b658f62,0x3b581b6d,0x3b5a4727,0x3b604eef,0x3b707689,0x3b8230ff,0x3b931031, +0x3b6ef734,0x3b538d10,0x3b39f568,0x3b25783c,0x3b138934,0x3b0a6f5f,0x3ae67710,0x3abfce0b,0x3a9d3925,0x3a8036c8,0x3a499525,0x3a2607be,0x3a42a83c,0x3a473519,0x3a88bfd9,0x3a7310d7,0x3aa1e757,0x3ad6e7ab,0x3aef8e86,0x3b0ea2f1,0x3b16b669,0x3b27f990,0x3b3544cb,0x3b426da1,0x3b43ea59, +0x3b432986,0x3b4943d1,0x3b535e9e,0x3b4a0cf7,0x3b43e080,0x3b31bd34,0x3b3ada6d,0x3b3bfd95,0x3b4494a5,0x3b4ae122,0x3b5a71df,0x3b480aa8,0x3b3d2e02,0x3b33531e,0x3b2703e6,0x3b1cf428,0x3b13aed1,0x3b0c20ee,0x3b051fd4,0x3afce0ce,0x3aef8aa5,0x3adfcaf0,0x3adb0b48,0x3b040bc5,0x3b1999ed, +0x3b62ae49,0x3b1a19f9,0x3b2ecd28,0x3b82ea06,0x3b84075b,0x3b7decc5,0x3b69ba7d,0x3b7a5085,0x3b7ad997,0x3b771abc,0x3b4ce05d,0x3b480ef9,0x3b857ecb,0x3b57becc,0x3b5c1fa0,0x38937617,0x38d11696,0x38ebd0f0,0x3850d925,0x38851f46,0x3872f703,0x389c6893,0x38a90179,0x38a4af1a,0x38aef351, +0x38af4dd8,0x38ac23e9,0x38a05f56,0x38a11b3b,0x38b0f2a4,0x38b555e3,0x38b25fa7,0x38a5acdc,0x389811a1,0x3860d2d9,0x38d76364,0x38cbed44,0x39137c0e,0x3988acff,0x38c8dde1,0x390f871e,0x396c079c,0x3976a1bf,0x397226e0,0x394792cf,0x396d9f51,0x397089cc,0x395c9f37,0x3904d53f,0x38c42611, +0x3977b66b,0x392ae240,0x391e0c5b,0x38d878de,0x389e1992,0x38b27ed0,0x38cabc57,0x390be006,0x391d494b,0x39086227,0x391a093b,0x39165b79,0x391b7efa,0x38fc5a9d,0x3914969d,0x3951c1ee,0x3975846e,0x396d585a,0x393de218,0x39041039,0x38cd83ee,0x38bd3a58,0x38fba505,0x37ed92bb,0x385314f0, +0x382ef89d,0x382df2bf,0x381db46e,0x38368261,0x3880329d,0x388f6829,0x38849db4,0x385bd20a,0x3826c263,0x37ecf15b,0x37ba6b5b,0x387c9e9b,0x3867462c,0x388a0556,0x38972e27,0x38dcd0a5,0x38fac2c6,0x3928e615,0x3985a97f,0x39a0d159,0x3986d7a4,0x399375ce,0x39918a68,0x39a356f5,0x396989ea, +0x39781a7c,0x39bcf000,0x39cb2cc0,0x39bf17af,0x398f8f78,0x391e5fcb,0x391241df,0x38830d8e,0x386ff454,0x37e9a318,0x38082609,0x389c19b1,0x387fe20a,0x388cc972,0x385ca90a,0x38d675a1,0x3975d207,0x395ffab3,0x39214fac,0x38e16931,0x37e9a00d,0x3778aa5d,0x38b5d45e,0x380ca163,0x38a024de, +0x38a4cc41,0x3950fed7,0x3997f04b,0x3a073f96,0x3a11cf44,0x3a1f0c50,0x39dcc157,0x39e16ed8,0x39d3b88b,0x3a11040f,0x399bf1d3,0x3a05e3cf,0x3a8cb71f,0x3aafe033,0x3a9feeb3,0x3a606a51,0x39efa427,0x39aa4bda,0x397c047b,0x391e151f,0x38823d30,0x38e8d1c0,0x391cb2f5,0x38d148b0,0x38948f1b, +0x3886b39e,0x388f2e6e,0x39243d12,0x39aeac30,0x399a384c,0x39853461,0x391d5932,0x3867a3ae,0x3981b18c,0x38b4fb80,0x3a33cfca,0x3a1fbd59,0x3aa357e5,0x3a9b3961,0x3a82c651,0x3a13e4ec,0x39f9d2dc,0x3a359362,0x39fb3820,0x3a375bc5,0x3a8e76cb,0x3a79367f,0x3a3f38a4,0x3a8680a5,0x3a5ba666, +0x3a2dc196,0x3a49b2f0,0x3a459777,0x3a7902e9,0x3a4e9a81,0x3a1ce41c,0x39c8d9ff,0x39990740,0x3919aea1,0x3883cb29,0x388de655,0x388668a4,0x38b1abcf,0x3725564b,0x3758d74d,0x390b9743,0x39bec48b,0x39a7239c,0x3996f9df,0x394ef357,0x39db92ff,0x3a48ec4d,0x39be55d1,0x39d0d72d,0x39c1a218, +0x3a4b8ac2,0x3a890a71,0x3a920fcb,0x39a53b53,0x3948bc77,0x395bdd9b,0x3a7f2a78,0x3a35009b,0x3a616c25,0x3a5c2bb8,0x3a015c54,0x3a0ca2b8,0x3a1ee76e,0x39d909d3,0x39828a49,0x39570aa1,0x38a914b7,0x382c549d,0x37e88f1b,0x37c5dab6,0x37303e41,0x3816a114,0x3833f74d,0x386922f6,0x37c4b1f4, +0x371a6492,0x3875ee13,0x39808dc3,0x3a7943ee,0x3a689a1f,0x39f5480d,0x39c6facf,0x3b7a8010,0x3be25576,0x3acca749,0x39efa2fd,0x3af2b9d2,0x3aeae770,0x3b0494e6,0x3b0f6390,0x3ad0e7d1,0x3ab0a999,0x3a764a5a,0x3a2f0e5d,0x3a728ff8,0x3a7e99aa,0x3a2a868f,0x39d5def9,0x395c1f3a,0x3904d0f0, +0x38d0039c,0x38a8e5b4,0x38314856,0x37cec308,0x384b0566,0x38361022,0x37dbe86a,0x3805ab8b,0x35cf492f,0x371c3af2,0x3663de85,0x3769f9d8,0x382a3610,0x3899c7c2,0x388794a8,0x389454ec,0x39aa4bff,0x3add6079,0x3ae241d8,0x3b6c3eab,0x3abfc499,0x3a95d971,0x3b11d438,0x3ad46890,0x3a794529, +0x3a3c7553,0x39bcecf6,0x39dd805e,0x39958b30,0x390c973e,0x394b80ad,0x396d7f89,0x39748c62,0x39730945,0x3974f672,0x3939b277,0x3923b2fb,0x390a1b34,0x3901fec7,0x38bab5ee,0x388c3d4a,0x376d4c45,0x35b0e11a,0x368d86f7,0x35e2f3e2,0x367dd653,0x3698e696,0x357472b9,0x361eac89,0x3830958b, +0x3876c8aa,0x38b00358,0x3a43f3db,0x3ac22e8f,0x3a77434e,0x3a7274ae,0x3a936dc0,0x3a85ee76,0x3a44ce73,0x3a31b921,0x3a3c5509,0x3a2062b7,0x3a1ff9c0,0x3a2c0811,0x3a46adc8,0x3a145bdf,0x39d05eac,0x399ca51a,0x38d39ab4,0x37f725f0,0x38430725,0x38d79fb6,0x39364ee5,0x397a9d98,0x39895375, +0x39607653,0x39301508,0x388c3cb2,0x37ad8736,0x368a5365,0x36b69e60,0x372c9107,0x37559c63,0x379676d2,0x3796109a,0x380574d2,0x372daca0,0x37d2f509,0x390d941b,0x3a2558b1,0x39b76f89,0x39bf6fd6,0x39ec7ccf,0x39c763b0,0x39bd17b9,0x39b04d35,0x39c8666e,0x3a0267a5,0x39ae1624,0x39a2ec1c, +0x39b56c6c,0x39a57ea7,0x39900da1,0x394ed374,0x390cc00e,0x3899cbcf,0x38243f3e,0x381ed510,0x3829cb3e,0x3886304b,0x38966963,0x386ca2c1,0x38466f7c,0x382cb33f,0x381adc45,0x380ca3d2,0x37d06046,0x3839f05c,0x3881e193,0x38b71391,0x38d1a54c,0x38d043a8,0x390796d6,0x3932241c,0x3947161f, +0x397d2445,0x3958bd2b,0x3954f857,0x394604e7,0x391cb254,0x39007fdb,0x38d7b4fa,0x38e49ccf,0x391275b5,0x38f2b5cf,0x38e4d920,0x38d55e2e,0x38724b02,0x382795a8,0x3841f740,0x382c7ff6,0x3832cd8f,0x3858dba9,0x384f5856,0x387f981e,0x388d6bb3,0x38a1d874,0x38aca2f4,0x38cbae60,0x389f110d, +0x38a76c60,0x38e3bdb1,0x38c8b00f,0x38cb2fe8,0x38fd87bc,0x38f790ad,0x390ab117,0x392ba8d0,0x393132ce,0x3958ad2f,0x39815e0b,0x395521b8,0x393373f6,0x39159da4,0x39047a70,0x38f73380,0x38dd4e0f,0x38d39bd7,0x38d68fdc,0x38fad4c9,0x38cb68c6,0x38b05016,0x389ba7ca,0x3886568c,0x3867229c, +0x385e50ac,0x3862e429,0x3875b922,0x38885ec7,0x38996117,0x38ad7d98,0x38c667ca,0x38c75949,0x38c12945,0x38db9eef,0x38e3d4f8,0x3906f7c2,0x392035d7,0x39175bb6,0x391e9a3c,0x3925e0c4,0x39279e50,0x39323a34,0x393fbc13,0x392bfe8c,0x39191bf6,0x3917d594,0x390cacf3,0x38cac022,0x38b62dbd, +0x389d7267,0x389de131,0x389e2cb4,0x389f6dd1,0x38a21bb4,0x38ac00d2,0x389e085b,0x3897e902,0x3894b69f,0x3892f89a,0x38946ee5,0x3893c439,0x389ab7a2,0x389ec733,0x38a2f3f8,0x38aa446e,0x38ad0f46,0x38c4c4fb,0x38d02c92,0x38fd88a7,0x392bd6c4,0x38e0d499,0x390b604f,0x394a1f13,0x3945e3d7, +0x393ba035,0x39265531,0x39300c40,0x392affa7,0x3924e62e,0x38fb1c52,0x38cecb3d,0x391e3e35,0x38fc97bb,0x38e06fa8, }; -const uint32_t orange53_rom_ER48[HRTF_MODEL_N_SECTIONS * 578] = { -0x3ecf90de,0x3e43bd0a,0x3e85436f,0x3e6bc502,0x3e717785,0x3e8b2ad7,0x3e40ae0a,0x3e3fe204,0x3ea17f1a,0x3ea626c7,0x3ea5a207,0x3e873a99,0x3e8c4e68,0x3eb3680f,0x3e8dc806,0x3e40e11e,0x3e3b9a91,0x3e95fac6,0x3e51241a,0x3e32d18f,0x3e5102e8,0x3e2e2906,0x3e3d758c,0x3e3ab2a3,0x3e49c6a2, -0x3e4dd51f,0x3e47c56e,0x3e48f870,0x3e4fa69a,0x3e4e6ab0,0x3e67a5b8,0x3e5e0d44,0x3e77bd46,0x3e69c6df,0x3e683d69,0x3e5a37de,0x3e54386f,0x3ead2d5c,0x3ebd5176,0x3ef10573,0x3e36b8bd,0x3e5eccbe,0x3e2cf0d8,0x3e43679b,0x3e171235,0x3e050cc2,0x3e31fe47,0x3e1c1e73,0x3e277db9,0x3e1a5435, -0x3e1b94d3,0x3e5edcb9,0x3e30f45e,0x3e2c81a7,0x3e1e5577,0x3e5ccff6,0x3e85c9f3,0x3e7738c0,0x3e87f072,0x3e8ebd30,0x3e896298,0x3e87102d,0x3ea86d1f,0x3eb44f10,0x3ec1a2b8,0x3ebc9426,0x3eeaad05,0x3ed3ffbb,0x3f01cf66,0x3efe19d1,0x3efbc144,0x3eda0437,0x3ebf20eb,0x3ef6e5ba,0x3ec5837a, -0x3e9dcee3,0x3e7a1c2c,0x3e37066a,0x3e15fd13,0x3e132d81,0x3de26354,0x3ddce7e7,0x3ddc07fe,0x3e0eaac6,0x3e1c755d,0x3d9fea85,0x3dd12c74,0x3dbadb91,0x3dc6dbce,0x3dfa0b1d,0x3de8e877,0x3e23af05,0x3e247465,0x3e89d601,0x3e8675da,0x3ea7372b,0x3eac24d5,0x3ebc4762,0x3ecdd8d3,0x3ed06645, -0x3eefa441,0x3f0b300a,0x3f23329f,0x3f3ef1d8,0x3f5bce8b,0x3f4efb40,0x3f3bb177,0x3f177bf3,0x3f0bd60d,0x3f24309b,0x3ed488a7,0x3ecafc66,0x3e33b4e2,0x3e1f7e3c,0x3dbb28db,0x3d896e7f,0x3d8d31cd,0x3d2b81a2,0x3d22d090,0x3d44134a,0x3d30e96b,0x3d545465,0x3d3668e5,0x3d51d3f5,0x3d5340b8, -0x3d8da900,0x3d964b64,0x3de26873,0x3df16f5a,0x3e79aaab,0x3e60b27f,0x3ea59eaa,0x3eaef5e4,0x3ecb3ec0,0x3ee6aafb,0x3f02f145,0x3f15a1e8,0x3f36493c,0x3f662b04,0x3f8683bb,0x3fa0a9c5,0x3f9cecd3,0x3f8b70b1,0x3f5cd654,0x3f30ba66,0x3f553e31,0x3f0fb4d7,0x3ec51439,0x3e4fe5e8,0x3df06ec9, -0x3dafbc53,0x3d72039e,0x3d112dfd,0x3cd69a4b,0x3cccd67e,0x3d08802d,0x3ce4f245,0x3cd099f8,0x3cb43b7c,0x3cd6e20c,0x3cfa77a9,0x3d37110d,0x3d8cfd90,0x3e01250d,0x3e089ad0,0x3e61e568,0x3e915233,0x3ec2f05a,0x3ed31e49,0x3f012185,0x3f0c1532,0x3f1b26fe,0x3f3c2ae7,0x3f690b9f,0x3f9e17a9, -0x3fbfe968,0x3fe3b182,0x3fe02d0a,0x3fc0ce82,0x3f8d8078,0x3f74dbfa,0x3fad6a2d,0x3fe0acc6,0x3f72f447,0x3ec45c39,0x3e8967dd,0x3e2748a4,0x3e12d6c9,0x3d9dbc1c,0x3d620506,0x3d14dcae,0x3d16a0ce,0x3d16743f,0x3d10b531,0x3cdd4b24,0x3d04167e,0x3d26ff81,0x3d8b2a4e,0x3da4cc05,0x3e0f18c6, -0x3e5438ca,0x3eb319b8,0x3ee9aef0,0x3f4ae9c5,0x3f83334d,0x3f9700b4,0x3fd766ea,0x3ff56a92,0x4003c618,0x4003285f,0x4000ad92,0x3ff7d1be,0x3ffea6e3,0x3fe52d06,0x3feb5a44,0x3fdb3d85,0x3fe92d0c,0x401da0c5,0x3f5b22eb,0x3faf8217,0x3ec2cd65,0x3e964aed,0x3e190fe3,0x3dc5176d,0x3d9b32ad, -0x3d4f2931,0x3d2fbd5b,0x3d42ca36,0x3d22755e,0x3d07bbf0,0x3ce3a23d,0x3d06f00b,0x3d3bf706,0x3d97417e,0x3dd8ee30,0x3e4f3aa7,0x3e58fe11,0x3ed9db8d,0x3f02f28b,0x3f524087,0x3f861b57,0x3fa8ee9c,0x3fd90213,0x3fe3fbc6,0x3ff80237,0x4003f704,0x40063afb,0x400d6cce,0x401529de,0x400f8814, -0x40053cb8,0x401b066f,0x4012bc3a,0x4058a92a,0x3fa8a9fd,0x3f55cb6b,0x3ec9f26a,0x3eb91724,0x3e250052,0x3de3f11c,0x3d9fae82,0x3d64afa4,0x3d5a86c4,0x3da388d0,0x3d53f1b9,0x3d423242,0x3d4ffb8d,0x3d59e64c,0x3d838f99,0x3ddd5662,0x3e095261,0x3e41cfd6,0x3e822ff5,0x3ec6fbbe,0x3f046345, -0x3f4df04f,0x3f8f2be4,0x3fbdad7c,0x3ff8e565,0x400140e1,0x3ffebbd7,0x4009bdd6,0x3ffc31f3,0x3ffd5951,0x4012bee4,0x40187156,0x402a55d2,0x406d06b6,0x403ba4c6,0x407b3686,0x4019e126,0x3fa8907e,0x3f0a617f,0x3eb05f74,0x3e242b16,0x3dea3c7d,0x3d975de0,0x3d6c4a20,0x3d7d0e07,0x3e09479d, -0x3d7fe167,0x3d57c9d5,0x3d8834fa,0x3d823ccc,0x3daa6a23,0x3e107acb,0x3dfda4f4,0x3e46f2ff,0x3e832206,0x3ed08294,0x3efe7ead,0x3f44a056,0x3f9089b6,0x3fc89a62,0x3ff7b232,0x4010cdbf,0x4011edf9,0x40131689,0x40014f05,0x3ffe9e20,0x400d1256,0x40210fce,0x40491269,0x40a3f3f7,0x407bf617, -0x4086779e,0x4001e6c8,0x3f8f4f2e,0x3e9e684b,0x3e9d4668,0x3e183351,0x3de76153,0x3da41641,0x3d90509e,0x3d8d610a,0x3e2977dd,0x3d84dc17,0x3d590a34,0x3d888604,0x3d97e893,0x3dc3c53d,0x3dff5d4e,0x3e25e9b2,0x3e5379f6,0x3e995033,0x3ebb6c1f,0x3eed131d,0x3f1f1878,0x3f4eeaed,0x3f911435, -0x3fc822e3,0x3fe6be97,0x4003a476,0x40145c16,0x40132eeb,0x4013c2a9,0x3ff9a296,0x4013ab87,0x401de606,0x409173c0,0x4059bd58,0x404ac3fa,0x3fafe3a2,0x3fcb9fba,0x3efd2924,0x3e8e99ee,0x3e27d6d4,0x3e3594b1,0x3e0d9ae7,0x3dbd24cf,0x3daa6831,0x3ddbb1b0,0x3d9810de,0x3d902ddb,0x3d8c706e, -0x3dc8420a,0x3dda5b17,0x3e12ef58,0x3e3e9e00,0x3e799ec7,0x3e939427,0x3edbac47,0x3ed3b013,0x3efa075d,0x3f26d443,0x3f5a0c19,0x3f91e525,0x3fc77765,0x3fda28e2,0x3ffcd794,0x3fd1e990,0x3fc254b6,0x3fe07048,0x3fe20d6b,0x3ff51c49,0x40279a15,0x4012e362,0x3fa3b08e,0x3f9169cf,0x3f20d24f, -0x3eba970b,0x3e8165d2,0x3e55dccd,0x3dffb722,0x3ddc19ce,0x3dc7c835,0x3e00b1ca,0x3de517f0,0x3dae1d0c,0x3d9a634f,0x3dae33f4,0x3dc476b4,0x3e0f5539,0x3e3263a7,0x3e65350a,0x3ea54707,0x3eb05bb4,0x3ed48491,0x3ebbf2ce,0x3eeea2c9,0x3f0b87d8,0x3f324ca4,0x3f4886f4,0x3f568c1c,0x3f789a7e, -0x3f8a00f0,0x3f8d96d4,0x3f984386,0x3f9baa64,0x3f9e7e04,0x3f9b6d52,0x3f9b90cd,0x3fa1dbd7,0x3f7d7cc7,0x3f2bd3b7,0x3f0f0d90,0x3ebc2ec3,0x3e951a63,0x3e6fcd1f,0x3e31613a,0x3dee022c,0x3e0c8c3c,0x3debd850,0x3df82f94,0x3ddfe6b6,0x3e09eff8,0x3dee6b16,0x3e0793e5,0x3e0fa414,0x3e5b4417, -0x3e6aa2bf,0x3e94c78f,0x3e9faaca,0x3ed91688,0x3eab6781,0x3ed550bb,0x3ee656be,0x3f08f4d1,0x3f1a03bf,0x3f2f74bd,0x3f3ebce3,0x3f520003,0x3f63c0c2,0x3f6b8842,0x3f800b5c,0x3f804f15,0x3f76d974,0x3f7e79e3,0x3f4a72d0,0x3f1c346d,0x3f18dd7d,0x3f044726,0x3ebf091d,0x3eb7f14e,0x3ea20288, -0x3e71518a,0x3e2a8d01,0x3e24a023,0x3e24ace8,0x3e577991,0x3e85960e,0x3e1ac493,0x3e510fdc,0x3e62cef4,0x3e61d898,0x3e648d4e,0x3e8418da,0x3eae85a5,0x3ebddaea,0x3ec3975f,0x3ec5848a,0x3ed520b0,0x3ee35782,0x3f001ed1,0x3f0adcf9,0x3f152a2f,0x3f26eb6d,0x3f405a08,0x3f40ff49,0x3f4fb3d1, -0x3f5d3ec8,0x3f4a564a,0x3f48f1d8,0x3f4feb68,0x3f2b1b08,0x3f00bbba,0x3f171d90,0x3f25f752,0x3ed578d5,0x3ed052df,0x3edbd8a4,0x3eee80f6,0x3ea9d1c4,0x3ebfe545,0x3eb76c3f,0x3eaf6327,0x3eb23bfd,0x3ea86201,0x3e9e381d,0x3eb46c88,0x3ec258d3,0x3ed4ed2d,0x3ed5538c,0x3efadff4,0x3ee6a018, -0x3ed065dd,0x3ef264e4,0x3ef5c5fe,0x3f043e49,0x3f03b9bf,0x3efd8461,0x3f163b7a,0x3f0fe94b,0x3f18b7ba,0x3f2ae1be,0x3f1de02b,0x3f356c7e,0x3f327984,0x3f061f6c,0x3f0886d7,0x3f169994,0x3eb50d3e,0x3ed49964,0x3ec2e927,0x3edf9d56,0x3f06bf82,0x3eb0abd1,0x3eb7ac2c,0x3f0b6464,0x3f1c572b, -0x3f021b2c,0x3ee56b12,0x3ef609a2,0x3f111d14,0x3f138bfb,0x3eb3221e,0x3eb5e0b4,0x3eee72a6,0x3ebb301d,0x3ebdcd9b,0x3ebc48d6,0x3ea3d197,0x3eac5429,0x3eabab7d,0x3eaf59c5,0x3eafd292,0x3eaba041,0x3eb86216,0x3eb6ddc3,0x3ec22777,0x3ec89d20,0x3ec4b287,0x3ed106e1,0x3ecc8882,0x3ec1b645, -0x3ec8abed,0x3ec585ae,0x3f5782de,0x3b05381a,0x3a76f083,0x3b0824e0,0x3af4dd60,0x3afef09c,0x3b2fa1ed,0x3ac4afb8,0x3aadea11,0x3b49bc9c,0x3b5d8ee9,0x3b6e5c28,0x3b39056b,0x3b497fa0,0x3b8f5419,0x3b420b37,0x3ac9efac,0x3acf6959,0x3b5a8caf,0x3add1b67,0x3ab08df0,0x3ae5aa6d,0x3a945500, -0x3ab1843e,0x3aadfc14,0x3ab9c209,0x3ab39784,0x3aa19a72,0x3a9d8568,0x3a9e44ae,0x3a9b96ea,0x3aae43a2,0x3aa9eb1a,0x3ab37204,0x3ab35e19,0x3aa566eb,0x3a7137fe,0x3a8bde46,0x3aa86573,0x3b28019c,0x3b78f87b,0x3a0fcff2,0x3a9f9f1f,0x3a149cd7,0x3a5e820c,0x39e190c3,0x39c386f7,0x3a698d36, -0x3a2f9e04,0x3a87a25f,0x3a304fe0,0x3a035cb6,0x3af618ec,0x3a571530,0x3a786481,0x3a3d4164,0x3ad2ad1d,0x3b1c72db,0x3afe7ee1,0x3b1142f9,0x3b259b9c,0x3b1b7325,0x3b1a03c2,0x3b344e64,0x3b1f1685,0x3b2583a3,0x3b274856,0x3b4d2b83,0x3b49bea4,0x3b529db1,0x3b5d22ac,0x3b38dff8,0x3aa3ff34, -0x3ab9b1f7,0x3ac1051e,0x3ae3a0ae,0x3ac14a14,0x3abdc0ab,0x3abb94bd,0x3a0e3ecb,0x3a3c048b,0x3a1ec811,0x3a3a2977,0x3a6bb1c6,0x3ad093c4,0x3ae1735c,0x39fc4608,0x3a5f566c,0x3a054ffd,0x3a400e93,0x3a9ea1c0,0x3a7e72bc,0x3ab377c2,0x3ab3c777,0x3b5dffc8,0x3b43b1a9,0x3b855de5,0x3b75a01c, -0x3b64ff48,0x3b5852e8,0x3b4469a6,0x3b41ce46,0x3b614879,0x3b7e3ab8,0x3b935693,0x3b8ff735,0x3b9db68d,0x3b56c791,0x3a3b720c,0x3ab0b856,0x3acfd01d,0x3ae5f222,0x3b21cc50,0x3a8b832e,0x3b05c579,0x39c430b5,0x39b20a60,0x3a0bbb84,0x3a1416a0,0x3a4f5de0,0x3a85c81f,0x3a5cbfab,0x3a3c32dc, -0x39e36ad1,0x3a0394da,0x3a3d6812,0x3ab13569,0x3acbd6dc,0x3af3456d,0x3ad0bfad,0x3b87ed7e,0x3b58ecc2,0x3bb20a2c,0x3bba61c7,0x3bd57777,0x3bcc586d,0x3bae15bb,0x3bb3002b,0x3bd1d106,0x3be3dbb5,0x3c0737aa,0x3c02d782,0x3c1614b7,0x3bb8bbb7,0x3a4631ea,0x3a9e2530,0x3abe663d,0x3afdf9d5, -0x3ad8ae12,0x3a983b54,0x3b275935,0x39f7d836,0x39f5f29b,0x39c88ef7,0x3a383f5b,0x3a756925,0x3ab49379,0x3a8a3ade,0x3a32e4dc,0x39c91dc7,0x3a2d7e92,0x3a937442,0x3af53cf6,0x3b0febce,0x3b3d07a1,0x3b190163,0x3b931356,0x3bb36017,0x3c03c0a6,0x3be64bcd,0x3bdad8ba,0x3bb78756,0x3bb6f03b, -0x3bc1ed6d,0x3bcae80d,0x3c022d99,0x3c12fbdc,0x3bf7263f,0x3c2b7a13,0x3bb5e5a1,0x3a11c45a,0x3a8cd5a2,0x3ba13413,0x3beeec31,0x3c020acc,0x3bb7d2b6,0x3b5f5eb4,0x3aa8d5ce,0x3b155c30,0x3ac4dbc2,0x3aef57ae,0x3aa086ce,0x3abc0a89,0x39bac975,0x39bea84f,0x3a4e119e,0x3a51abb9,0x3a6c3965, -0x3b141608,0x3b0699a1,0x3b1afadf,0x3b226eb8,0x3b8f5239,0x3b189e74,0x3b4111c8,0x3a855470,0x3ab244b7,0x3b216fff,0x3bb507eb,0x3bd393bf,0x3c0d09d8,0x3be86164,0x3c1ecac2,0x3c58f375,0x3c3744f4,0x3c3f6a14,0x3c33e865,0x3c129bf9,0x3b86dd04,0x3c0c0bd6,0x3c24cfdc,0x3bbeb258,0x3b3e7fe6, -0x3ab2546a,0x3aa3e997,0x3a21cd87,0x39933abc,0x398c6971,0x3a3cb4c1,0x3a2f79f9,0x3a099b48,0x39ae2e3e,0x3a09f34e,0x3a52d129,0x3a1c030c,0x3a13f526,0x3a8d26be,0x3a8463d8,0x3b6e69e8,0x3b95524d,0x3c185059,0x3b832c6a,0x3b04f992,0x3a39bc05,0x3a58d48a,0x3a4a38be,0x3aa66e36,0x3ab3791c, -0x3aa9d9a7,0x3b23b7cf,0x3b75cad5,0x3bac6e94,0x3ba3ab72,0x3ac925a4,0x3afa759f,0x3b894417,0x3a6aef07,0x39a8163e,0x3aaf4946,0x3a826e0c,0x3a416509,0x39fa785f,0x398f0d2c,0x391b7fb5,0x392f8229,0x393f5313,0x396a6ade,0x3968e5b8,0x39b54b6e,0x39bf664c,0x39d21c93,0x39a1c295,0x3a152c2a, -0x3ad45b3d,0x3a9e41c4,0x3a91dd8b,0x3ab16c37,0x3b5a4e92,0x3ba3d499,0x3bbfb61f,0x3bb91420,0x3b76089c,0x3b3186d1,0x3b91c9a7,0x3c05f2a4,0x3c55037b,0x3c6d6e8d,0x3c616a28,0x3bf1f346,0x3b3cecda,0x3b541739,0x3b1b3622,0x3b0dd0b9,0x3ae30bb8,0x3b332fec,0x3a8f56e5,0x3a34e47a,0x3a54ea00, -0x39fb3da5,0x3978b799,0x389d507d,0x386faf16,0x38ce1351,0x38f49a81,0x38b2b52d,0x398e8735,0x3995a414,0x3918a4ac,0x39c715b8,0x3a9f174e,0x3a90ffde,0x3a7c6b11,0x3a4b03ef,0x3b4af5cf,0x3baacecc,0x3bedef4b,0x3c07def4,0x3bc405f5,0x3b6f8362,0x3b941a4a,0x3c04d6e6,0x3c809782,0x3cbbf741, -0x3cdcde4e,0x3ce0c1c9,0x3bdf71ed,0x3c88876c,0x3bdbfaeb,0x3bcf3f65,0x3b6eeadf,0x3b13ab60,0x3a935745,0x3a13eee4,0x39cd41a2,0x39158b51,0x390ddd66,0x38e41924,0x38936749,0x38802e00,0x39530d43,0x3984e962,0x39bf36fc,0x39c0df73,0x39d79384,0x39d87c47,0x3a543fca,0x3a9c3969,0x3b06fd71, -0x3b3a2ace,0x3b0909f9,0x3aaed758,0x3a614c5a,0x3aaf87e9,0x3ae15cf6,0x3b4684f8,0x3b114806,0x3b43c960,0x3b64deb1,0x3c5ed0eb,0x3cba1b2d,0x3d19129a,0x3cc45954,0x3d109aaa,0x3cc2c217,0x3c8494ed,0x3c4df9cb,0x3bcc2653,0x3bf1fe4a,0x3bc03a10,0x3b00afdd,0x3a884d50,0x3a5a7dcd,0x398ae873, -0x39442314,0x3934798b,0x399246b0,0x38fd2fe5,0x39114157,0x3994c3e0,0x398a9e63,0x39cea5a2,0x39be545c,0x39b01377,0x39b3eb02,0x39979455,0x39c3bb1a,0x3a5777d1,0x3b4256c0,0x3b7007dd,0x3b9c99da,0x3c04899f,0x3bcee9ac,0x3be0ad02,0x3c48362f,0x3c8aa696,0x3c923e30,0x3cb2c078,0x3cc5291f, -0x3c28e4a7,0x3c14d6cf,0x3c00028e,0x3bd9da37,0x3bc9e97b,0x3ba12f78,0x3b8b6780,0x3b92ced9,0x3b707231,0x3b3e3331,0x3adf61fb,0x3ac7a4b7,0x3a839267,0x3a4715cf,0x39d51586,0x39891fbb,0x39a093d9,0x397c646d,0x3994bb47,0x396958ef,0x3a36872d,0x3aa3035e,0x3ad45095,0x3b084edb,0x3b1b9d71, -0x3b0cc3d5,0x3b286943,0x3b3462a9,0x3b1dc211,0x3b40e1b4,0x3b798727,0x3c09acf9,0x3bfdf610,0x3c0317bd,0x3c03acf4,0x3c0344b8,0x3c0f1846,0x3bea5dd0,0x3bedcbb5,0x3bd0d17c,0x3bbf1aa0,0x3b993244,0x3b99afaf,0x3b89f78c,0x3b693b0c,0x3b3ad153,0x3b196448,0x3aea1f2b,0x3abbf831,0x3a8bbb30, -0x3a207df7,0x39a54d70,0x399e86ea,0x39720bac,0x398489ec,0x39be2e7b,0x3a411b86,0x3a4084a7,0x3a887a91,0x3a978b97,0x3ab1052d,0x3aba9129,0x3aea4052,0x3b005011,0x3b312648,0x3b312c86,0x3b7dd808,0x3bdf0527,0x3bcedd86,0x3bd22250,0x3c014378,0x3be020c2,0x3b87e942,0x3b9a949d,0x3b8412ad, -0x3b702c18,0x3b86d090,0x3b808866,0x3b5fa56f,0x3b4db0be,0x3b340986,0x3b20274e,0x3b2b8490,0x3b06c609,0x3ab51e18,0x3aa2dcf7,0x3a69175d,0x3a2a9342,0x39faf7f5,0x39b06027,0x3a27ec50,0x3a3030c0,0x3a2fb07e,0x3a2dd845,0x3a7bc180,0x3aa1854c,0x3ada2f58,0x3b09cebe,0x3b1eb914,0x3b590253, -0x3b8738b6,0x3b9c2c39,0x3bc71eeb,0x3bfb09f8,0x3bd4847b,0x3bc26b55,0x3bc61bde,0x3b956e69,0x3b5d6345,0x3b6783e5,0x3b86a5a1,0x3b660f03,0x3b597319,0x3b600c9e,0x3b640aa5,0x3b54536a,0x3b457c33,0x3b2e2ad8,0x3b1b2401,0x3b0f92ea,0x3af63906,0x3ae6ba33,0x3ae114f4,0x3abf64d3,0x3ab595ad, -0x3a9b1591,0x3a8981b7,0x3a678081,0x3a72e93a,0x3ab116b8,0x3ad4e88a,0x3afcb610,0x3b098f5c,0x3b0d3788,0x3b2ca675,0x3b29a77f,0x3b36e4a1,0x3b56ba11,0x3b46112b,0x3b85a56a,0x3b7704d2,0x3b314641,0x3b3ebfd9,0x3b6922f6,0x3b01ada2,0x3b0ea291,0x3b103e17,0x3b17aa9d,0x3b32f5d3,0x3b08dd6d, -0x3b0dd737,0x3b341f9a,0x3b4168c8,0x3b307c99,0x3b230c1c,0x3b2e7744,0x3b4c6ad3,0x3b50b0e8,0x3af7488c,0x3af205dd,0x3b18098e,0x3ae94363,0x3ada2b67,0x3abd60ef,0x3ac23a9e,0x3ac5a23a,0x3ac42e9a,0x3acb2ece,0x3ace978a,0x3ad0fbb8,0x3af27b42,0x3afbe30f,0x3b103738,0x3b1dfaa2,0x3b1f724f, -0x3b35f888,0x3b2bea79,0x3b1b126c,0x3b1aa14c,0x3b0ed7eb,0x3ba15b1c,0x38ae4474,0x38312273,0x38cd8d76,0x38a99fa6,0x38df9ff2,0x38ff9bde,0x387c92ef,0x389320e5,0x391aac03,0x3925c524,0x392e4249,0x390442ea,0x39114f68,0x394dff21,0x390b8edd,0x38b216d5,0x38935447,0x391c137c,0x38bf144e, -0x3875b6b6,0x389f31df,0x3845ccea,0x3876683a,0x3881898c,0x38950b39,0x3892bbc2,0x38810bbe,0x386b5f6a,0x3860351f,0x385e2155,0x3871a56c,0x3868c1e9,0x386a0dd0,0x386ae50b,0x385d410c,0x3836d428,0x3845967b,0x3883d568,0x38dd0105,0x39554ca6,0x3798925a,0x3883d1c5,0x37af7309,0x380f9aa9, -0x37f9c2ff,0x37dd37cc,0x3865847b,0x383eff4d,0x3866b688,0x380235e6,0x37db9fab,0x38e56b40,0x385064a0,0x383648b1,0x37c8575a,0x38a398c5,0x38bc6872,0x38a19496,0x38c44c92,0x390cdb96,0x3911dd29,0x3918ac8f,0x3931aa0e,0x3902a04b,0x39053d9d,0x39174d3d,0x391d1a31,0x390c926c,0x39048bc9, -0x3912c0d5,0x390a4366,0x38c96b8b,0x38a53613,0x38d4da77,0x38b1910c,0x389397c8,0x3853bfd3,0x38a46b18,0x37bd35e7,0x38415809,0x38a15f60,0x38a3643d,0x38d5e175,0x391817b8,0x38ac8902,0x3808da78,0x385b6d6a,0x383da7e7,0x38692e95,0x3826f0e0,0x37e18576,0x385adb52,0x387c8b70,0x391c2473, -0x3921ebee,0x398cbb03,0x39a7f588,0x39a8f9c7,0x39979043,0x3944f068,0x391cae5f,0x39571599,0x39421f0e,0x3952062f,0x393ba399,0x39608d6d,0x3933db90,0x38f95e76,0x38cde72a,0x38ed249b,0x388e5cc8,0x39029058,0x3830aa80,0x3912beaa,0x375beea6,0x382c1e9a,0x39387ad5,0x39886820,0x39b67dd3, -0x39873c03,0x39005c46,0x38884945,0x38ac26ea,0x38b055da,0x38db321c,0x384f49a5,0x380beee4,0x38955717,0x38cdff61,0x3944260d,0x393a9c15,0x39d7cb21,0x3a1347e8,0x3a2fee94,0x3a1994e6,0x39ac3886,0x39a03001,0x3a03362f,0x39c3cffc,0x39c74b6e,0x39c112ac,0x39fb86a1,0x39da523f,0x39a5fb25, -0x393b3940,0x395a4ae9,0x38f404ed,0x388ecdcd,0x38050827,0x39407034,0x3873eba1,0x3903305d,0x391a87a3,0x394de442,0x397447a6,0x38d351ee,0x38371585,0x3859bff2,0x385fc8a5,0x3890af76,0x38c9219a,0x389f5c77,0x385b72ad,0x391dafca,0x392d3c06,0x39917f4d,0x39c88b50,0x3a42de00,0x3a734470, -0x3a7d7802,0x3a52018b,0x39ed894e,0x398e7237,0x39d9f1e0,0x39cd4ac5,0x39d76489,0x39aee325,0x3a14262b,0x39e4d23b,0x39a8e5ea,0x395ae6dd,0x3a9e7767,0x3a57b539,0x3a3ffd69,0x39d6d753,0x393478d7,0x39c48c96,0x39e0710f,0x39c1ed3d,0x3952b153,0x3787ba6a,0x36ebdc3e,0x38ee3401,0x3899d30f, -0x38d63791,0x38b2918a,0x393a6089,0x39d22746,0x39e382e4,0x3a31199a,0x3a67acf0,0x3a9b5bc4,0x3a523b3c,0x3a7c4fd4,0x3a757d25,0x3a4ed099,0x3abf319b,0x3a7f20de,0x3a8cf257,0x3ab89232,0x3a3c33d5,0x3a0e954e,0x3a58046a,0x3a222128,0x3a4a7789,0x3a8cacec,0x3abdbc8c,0x39d2a6e6,0x3a2225af, -0x3aa014ea,0x39f3565f,0x3a0c4e0c,0x3a446902,0x3a4d6bdc,0x39286b10,0x388349e7,0x3733b993,0x37e39104,0x38352bdd,0x380bffb0,0x38009e06,0x3705bbfc,0x379707f1,0x37f98529,0x38184d6b,0x38aaff7a,0x3942db7b,0x39737ca3,0x39be42fb,0x3a1765ef,0x3a0097c2,0x39d27236,0x3a4a8bff,0x3a41c6e1, -0x39fd0fcf,0x3a8c8622,0x39342b11,0x396f77c0,0x39c908e5,0x3a928949,0x3a9c1066,0x3a5d929c,0x39906131,0x3a439b04,0x3b4ab0c0,0x3ac91c8c,0x39ea858e,0x3990847c,0x392dd0cd,0x398223d5,0x3878a9a7,0x36ca4718,0x365b24b4,0x34fa5115,0x3624a5d6,0x36a07cc8,0x37f5e18b,0x37cec8ab,0x374fa43f, -0x37e4f697,0x37ca30a0,0x386348b0,0x388f69b7,0x385a8c58,0x3858bb6c,0x38a60988,0x392e6392,0x39860a93,0x39accd29,0x399d290d,0x396c5d49,0x395cb55a,0x39db76e3,0x3a2434b1,0x3a502480,0x3a3e698d,0x3a3f28c1,0x3a5cdfef,0x39a7056d,0x39a36ba8,0x3afec5b6,0x3a55ae3a,0x39c2a04a,0x39c6ace8, -0x3803b1cf,0x37b77b1f,0x386667be,0x37f544de,0x375b0631,0x34b77d25,0x35f1b233,0x3556dbd7,0x378ea430,0x36f042f1,0x37568353,0x36e2e0ba,0x375492b2,0x380e039b,0x385d0319,0x38105752,0x3812b6f0,0x385d94ac,0x3961fdfa,0x39a21927,0x3a0bef07,0x39f5d764,0x39a41b42,0x3a1b57d9,0x3a322f12, -0x3a7fbb22,0x3acc9136,0x3aad94aa,0x3accd5a4,0x3aed32f8,0x39ac7136,0x3ab98d43,0x3b812dc6,0x3aef4e67,0x3aa12c45,0x3a15d103,0x3867837a,0x386c172b,0x388aca2f,0x37757cab,0x3670d4e6,0x3657bb51,0x36bb527c,0x35b4de28,0x36f5f1d1,0x35db10f8,0x3778c945,0x38b29609,0x389e0b40,0x38db45a1, -0x3905c8db,0x38e65a19,0x39205cb5,0x3958d8e1,0x3962ae02,0x3985f41f,0x398efff5,0x396b472e,0x390421a1,0x39b3f1ec,0x39a857c8,0x39a2cd68,0x3a128ed9,0x3a669060,0x3ac20ce0,0x3afe2777,0x3a9145fb,0x3ab7be0c,0x3ab1ba7f,0x3ab7e42f,0x3a73edd8,0x38ec1e12,0x38006872,0x372f9810,0x37a0f63a, -0x37275d72,0x37aa8edc,0x373b9f43,0x377d3b6c,0x3673185f,0x368fc856,0x37e77715,0x38964037,0x39216c45,0x39823ef7,0x3993a0e2,0x3985e3ae,0x393434cb,0x38fceb8a,0x38717e09,0x3816ad9f,0x38d9e818,0x3990214b,0x39dd9d69,0x3a19d47f,0x3a6cdba7,0x3a5fdf46,0x3a277012,0x3a28adff,0x3a41e30b, -0x3a2b8f2e,0x3a51a0f8,0x3a832406,0x39e1e26f,0x39db8ebf,0x39a2b05a,0x3962be2c,0x396beba1,0x392584c8,0x39128511,0x38ebc784,0x38dc7272,0x38b2e480,0x383930e0,0x38291cb6,0x379e1b22,0x37b2fce4,0x3801858d,0x381d95e8,0x382e7212,0x3880d50a,0x38a75847,0x3886d1be,0x38215509,0x3803b29e, -0x38156203,0x38aeef58,0x39154065,0x396aa5c4,0x398bd0b6,0x39913a35,0x39812e97,0x39905e59,0x39a46cd3,0x3a051e02,0x39c523a5,0x39b1ddc3,0x39b39054,0x39c54eb4,0x390c51db,0x38cefdf1,0x388565ac,0x383a3bb1,0x38a94667,0x38b12503,0x38ac026d,0x3888231e,0x3872f391,0x38617412,0x38384686, -0x381f2915,0x38241251,0x3891a2a5,0x388510bf,0x388d79a2,0x38af2d32,0x389694bb,0x388b87ec,0x3889f443,0x3846f6e9,0x37ecfa72,0x37ecdd9c,0x3783794e,0x37c20f5c,0x3834a21e,0x38a890a3,0x390eb67b,0x395dc04d,0x393ffe42,0x392f3438,0x397d24ae,0x392a9097,0x3908763c,0x39059d58,0x389890e3, -0x3905d987,0x391f9288,0x392dee84,0x3925ca38,0x394887b0,0x39289274,0x38fae945,0x38d81631,0x38ecbf83,0x38ccb946,0x391b4690,0x38c3d323,0x38d1df97,0x38d6293d,0x38abba8c,0x38a35750,0x38c103ee,0x38a0dc14,0x38a6e762,0x389d0497,0x389473e1,0x38722673,0x3875b3d3,0x3859f782,0x38631ee6, -0x38602296,0x38101341,0x38224aa2,0x3882e521,0x389025a2,0x38ad24fe,0x38d0e451,0x38cb4a3c,0x38e6a6e1,0x38e7b940,0x38ebb328,0x39141b16,0x391ec363,0x39548df1,0x3934051c,0x392aa999,0x394ccea1,0x395a07b4,0x3980017e,0x394603d8,0x393141c2,0x392627b6,0x3930450a,0x391c02b2,0x3930cfdf, -0x392100bb,0x39074ccc,0x39032d02,0x38eaeb55,0x38f5932a,0x38e88e02,0x38b69186,0x38b31eff,0x389876f4,0x388dae1b,0x3866267a,0x383117bf,0x38795a9f,0x3862af23,0x388267d3,0x38a8cfa2,0x38b95c92,0x39042687,0x38ec0b2c,0x38d0358f,0x38f3c270,0x3912220a,0x3835e91c,0x385acf9e,0x386b87f2, -0x38a36b73,0x38c66a31,0x387b2be4,0x3892426b,0x38d1fec0,0x38f577a0,0x38ea1ad7,0x38d9a648,0x38edd43a,0x390d4e17,0x39122981,0x38a8dcb4,0x389c5d39,0x38d77325,0x38ac30df,0x389622da,0x3892a5b7,0x3888ae75,0x388866d7,0x3883ea72,0x38857add,0x3882d8be,0x38732077,0x38810e72,0x38779343, -0x3884f1d9,0x3885f748,0x3870d1f4,0x38780c39,0x38680752,0x38541922,0x3851c0a9,0x384125c8,0x39208122, +const uint32_t defaultHRIR_rom_ER48[HRTF_MODEL_N_SECTIONS * 470] = { +0x3e8fdc9b,0x3e7ca02e,0x3ea70d73,0x3e8e5fb4,0x3ea8dd68,0x3eededaf,0x3e8704a5,0x3e911540,0x3ed7aa69,0x3ee09a85,0x3edac0ad,0x3ebe2af7,0x3eda1252,0x3edf2449,0x3ed991d3,0x3e8cd8c0,0x3e76d9f1,0x3ef24872,0x3e91d7e9,0x3e7d0776,0x3e8caed0,0x3e5a8728,0x3e73f78b,0x3e782e9a,0x3e7d49d8, +0x3e813d42,0x3e8434cc,0x3e86b742,0x3e8ab0d0,0x3e8f4bf5,0x3e9603b8,0x3e9bbd29,0x3ea4df8c,0x3ea13dfd,0x3e9cd544,0x3e908184,0x3e8fac91,0x3ebda893,0x3ebff1ca,0x3ed08eb6,0x3e75dd83,0x3e48076c,0x3e298b90,0x3e265455,0x3e0dd3f4,0x3e2649fe,0x3e29dffc,0x3e22f191,0x3e2b4f56,0x3e132cb8, +0x3e141183,0x3e011f6c,0x3e047caf,0x3e2b312c,0x3e18a7c1,0x3e7d6b64,0x3e72cc02,0x3e799f9d,0x3e890a3c,0x3e94ff71,0x3e9b6fa8,0x3ea356e4,0x3eabf5ee,0x3eb2dc43,0x3ec08559,0x3ed4e36e,0x3ef21e5c,0x3f072dea,0x3f167786,0x3f150aa8,0x3f0a8a57,0x3ee78bfa,0x3ed9f2a1,0x3f0c0392,0x3ec3ec96, +0x3e97a643,0x3e584ee5,0x3e233944,0x3decf373,0x3dc1d6df,0x3da46f61,0x3da03234,0x3d801071,0x3db85e01,0x3d9f8cec,0x3d9025c9,0x3d89119a,0x3d969e3b,0x3d9bd814,0x3db8f494,0x3dc41817,0x3e0ae675,0x3e19a385,0x3e731ee0,0x3e81da6b,0x3ea36954,0x3eb14c98,0x3ec65e06,0x3edf0a9d,0x3ef3bee1, +0x3f0bb3ec,0x3f2364c0,0x3f419438,0x3f5f3e01,0x3f80a0ee,0x3f76fd7b,0x3f5f37fb,0x3f2f6e3c,0x3f1873b3,0x3f51b86e,0x3ee75e89,0x3ead2b54,0x3e39d346,0x3df6dfcf,0x3dab5c4b,0x3d54a4b0,0x3d030473,0x3cc6d7ec,0x3cc6604e,0x3d049c4b,0x3ce6236d,0x3cd11bb5,0x3cbfb7fc,0x3cd7a13c,0x3d0ca67b, +0x3d497bcf,0x3d65b1df,0x3db025a4,0x3ddf14f3,0x3e58c138,0x3e7fcb8c,0x3eab70d2,0x3eb8e4fc,0x3ed46c53,0x3ef153a9,0x3f031084,0x3f1c91de,0x3f4cc12f,0x3f8b3923,0x3fb0eb50,0x3fdab500,0x3fd75cb2,0x3fb83ee0,0x3f8d533f,0x3f5f8790,0x3fe8eb11,0x3f8b33f6,0x3f4e2871,0x3ebdf86e,0x3e6a77e4, +0x3e20c17d,0x3de7fd4a,0x3d93dc32,0x3d3ce37f,0x3d0d3a24,0x3d0bafb0,0x3d082a4d,0x3d0337ce,0x3cd82a6a,0x3cecf468,0x3d1889b4,0x3d5bb356,0x3da8621b,0x3e0a5d7a,0x3e3d3901,0x3eb28e81,0x3ee74840,0x3f40ae07,0x3f7a8f2b,0x3fa4c7e1,0x3fcead90,0x3fed8346,0x4001efcc,0x40053cd3,0x40041b5c, +0x3ffd3d13,0x3ff9ca11,0x3fea2e3c,0x3fe3e80b,0x3fefe08e,0x3fd67831,0x402e0c8b,0x3f5c91d0,0x3f4adfcb,0x3eadb767,0x3e85b027,0x3e15b595,0x3db63148,0x3d98df04,0x3d54401d,0x3d4230d7,0x3d4c882f,0x3d265086,0x3d114869,0x3cf8fc2b,0x3d11032f,0x3d3abdd2,0x3daba352,0x3de975d6,0x3e461edb, +0x3e607964,0x3eda9a95,0x3f0a4d2e,0x3f61a1c0,0x3f8b505e,0x3fb9cdc1,0x3fefeee9,0x40013855,0x4006970a,0x4008f829,0x4009086c,0x400d3534,0x40161a61,0x40117a76,0x400f6a21,0x402f2616,0x402a4989,0x40888df1,0x3fdb870c,0x3f9d6fd4,0x3ecb7292,0x3ee60c52,0x3e437028,0x3e1de373,0x3d9d3e0a, +0x3d6854e6,0x3d6edb3c,0x3dd40ec2,0x3d812f7e,0x3d648a50,0x3d8d2b66,0x3d712947,0x3dab40bb,0x3e03d116,0x3e0b1212,0x3e4b1120,0x3e638df6,0x3edf6726,0x3f09c583,0x3f5e9cf3,0x3f9cf95b,0x3fdc0b64,0x400ced44,0x40196fd0,0x4019a822,0x4014c6dc,0x4004bc5c,0x4002d52e,0x401d0848,0x402aeae6, +0x4046714f,0x409dec17,0x406f0012,0x409c8644,0x400535d2,0x3f9fffd2,0x3ee0a481,0x3e7dff42,0x3e20636b,0x3db79ce1,0x3d9c95a3,0x3d7ca113,0x3d8f69dc,0x3e238006,0x3d7f39be,0x3d4fbdfb,0x3d820744,0x3d928c8d,0x3db74338,0x3e084369,0x3e1a7c3c,0x3e61f848,0x3e6f28b0,0x3ec8e36c,0x3ee55368, +0x3f23ffc3,0x3f6707f2,0x3f9f3d4b,0x3fcfc8e8,0x3ffa0a61,0x400babe5,0x4018cf0a,0x401ae020,0x40105111,0x40033e17,0x40124cc5,0x403878b0,0x40a104ac,0x406f81c0,0x40313467,0x3fe0c5bf,0x3f9ba913,0x3f044192,0x3e9b366c,0x3e477d38,0x3dff22ab,0x3def3942,0x3db634c5,0x3da56350,0x3ddb55e8, +0x3d9157f8,0x3d85d798,0x3d8f661c,0x3db086dd,0x3de3e7d0,0x3e07676e,0x3e2aea92,0x3e8e3af0,0x3e9f053c,0x3ecac326,0x3ed6ca51,0x3efec778,0x3f1e961a,0x3f584336,0x3f95bc40,0x3fbd1d61,0x3fda57ff,0x3ff30463,0x3fd2caa7,0x3fcc08fa,0x3fdafede,0x3fdd798e,0x3ff0972a,0x401b4405,0x401b0df8, +0x3f8b0183,0x3f6d1014,0x3f3193f1,0x3ec0cbb9,0x3e7a5b8c,0x3e4e8287,0x3e07d544,0x3dd60954,0x3dcb4366,0x3dcad917,0x3dc52138,0x3db68a3e,0x3da9b1d2,0x3dacaa72,0x3dceb074,0x3e0df1ed,0x3e449247,0x3e56db84,0x3e89a3d0,0x3e99d0cb,0x3ec42372,0x3ec1cbe9,0x3ed75acf,0x3f08afa4,0x3f22da5c, +0x3f31fdda,0x3f43aeb3,0x3f5d6499,0x3f7d1a65,0x3f865902,0x3f895cfc,0x3f903a28,0x3f901701,0x3f8e4ba8,0x3f8821da,0x3f860fed,0x3f31853d,0x3f0ea396,0x3eeea3ca,0x3ec3e6e3,0x3ea02bbf,0x3e6a9317,0x3e3cd015,0x3e0a0fe8,0x3e228436,0x3dfb3608,0x3e2b2ed6,0x3e131e54,0x3e1ec661,0x3e12331b, +0x3e3038c3,0x3e362ae3,0x3e5e262b,0x3e745687,0x3e96e633,0x3ea4751f,0x3ec8b008,0x3ec3f612,0x3ed8f3f7,0x3ef19440,0x3f07f20a,0x3f17a5df,0x3f27fb09,0x3f3b86eb,0x3f555bb9,0x3f5a6917,0x3f63088f,0x3f72a3ce,0x3f683a4d,0x3f636ae4,0x3f66bcdc,0x3f41cc90,0x3f05afeb,0x3f0f3c7c,0x3f1f0b3f, +0x3ed1f7d4,0x3ebfddc6,0x3ead81d2,0x3ea3e0c3,0x3e8fbb42,0x3ea56a13,0x3eabd6e7,0x3e9bce38,0x3eab80d3,0x3e9ade8d,0x3e9a0902,0x3e8be32b,0x3e950624,0x3ea63a6a,0x3e9af2b1,0x3edb6d6c,0x3eceb570,0x3ecb3beb,0x3ed8816c,0x3ee32ea2,0x3eeee883,0x3efea2d1,0x3f06925b,0x3f0d41c2,0x3f13f536, +0x3f1c3197,0x3f240c6a,0x3f2c29b3,0x3f3881f3,0x3f2a187c,0x3f1eb4c7,0x3f15f462,0x3f0e38b1,0x3ee835d3,0x3f0d0130,0x3f009d1a,0x3f0ea2c2,0x3f4014ed,0x3efac86d,0x3f0187ec,0x3f30834f,0x3f3a07ea,0x3f378632,0x3f23fb37,0x3f3821d3,0x3f3ff4b4,0x3f3aaff2,0x3efe2f9a,0x3ee65736,0x3f49eee7, +0x3f04f1da,0x3eeb3269,0x3ef99036,0x3ed15f27,0x3ee050b1,0x3ee19682,0x3ee54292,0x3ee7d1e9,0x3eea1293,0x3eeea811,0x3ef36958,0x3ef8bb3a,0x3eff85be,0x3f02f19f,0x3f08e5aa,0x3f03f230,0x3f01cd6f,0x3efbc38f,0x3efbe1ab,0x3f14475d,0x3adf8b9a,0x3a99be79,0x3b26bab8,0x3b0df725,0x3b441723, +0x3bad7446,0x3b198e66,0x3b1ded00,0x3b930486,0x3ba05f87,0x3b9fb7f9,0x3b89edff,0x3ba62e13,0x3ba8ebbc,0x3ba535c8,0x3b235c47,0x3b10fb92,0x3bbfe50e,0x3b2a8b67,0x3b0eb5d9,0x3b233d68,0x3ab45d2c,0x3ae730de,0x3ae9f357,0x3aed0d65,0x3aebd75a,0x3ae70a57,0x3addb643,0x3adea313,0x3ae44e24, +0x3af8e178,0x3b026f92,0x3b04487b,0x3b079362,0x3af4b8df,0x3a9f4492,0x3ac1a6fa,0x3aac02ee,0x3b16a5de,0x3b420b7a,0x3acc506f,0x3aa68190,0x3a10d7da,0x3a38df88,0x3a13e2de,0x3a8cdf32,0x3aaec4da,0x3aaa14cc,0x3abbe453,0x3a74809d,0x3a6ef45f,0x3a029431,0x3a0ce49b,0x3ab0cf35,0x3a7f8733, +0x3b1c8366,0x3b12b207,0x3b163b31,0x3b2e7499,0x3b46ad77,0x3b4c120a,0x3b457d43,0x3b3680aa,0x3b2567ad,0x3b256df5,0x3b355bae,0x3b4f4028,0x3b63aaad,0x3b5d5497,0x3b6e6a0f,0x3b367ecc,0x3a814a93,0x3ab16750,0x3ad25d6f,0x3ae2a12f,0x3acca974,0x3a81a619,0x3abec594,0x39e2ca55,0x39b89d03, +0x39ce1368,0x3a167e65,0x3a208796,0x3a8eb215,0x3a7cf0d1,0x3a245b0d,0x39f01327,0x3a0ba79d,0x3a3fbd69,0x3a8e81f2,0x3a9eb51b,0x3ad84006,0x3ad7c4b6,0x3b5cf1d6,0x3b5878d7,0x3b8f8903,0x3b94de4e,0x3b941289,0x3b91af40,0x3b7f9d5a,0x3b85740c,0x3b990681,0x3bafca24,0x3bccbf5e,0x3bc6e4ce, +0x3bdff38b,0x3b93edbe,0x3a4d7d2c,0x3abe9fd9,0x3ac0862f,0x3aa57e95,0x3ad7f39b,0x3af835e7,0x3b46f081,0x3a154dfb,0x3a22738d,0x39cf705e,0x3a4d6787,0x3a87c619,0x3ac72151,0x3a940a3a,0x3a42ddc5,0x39f11fe8,0x3a1d6a21,0x3a98b544,0x3b059756,0x3b001dc8,0x3b0ea00b,0x3b0c2ab6,0x3b987fa8, +0x3bb521e3,0x3c06c242,0x3c0fb370,0x3c0eb8ad,0x3c031606,0x3be81aed,0x3be50272,0x3c01b23b,0x3c0ec9fd,0x3c218b73,0x3c1c21ee,0x3c31f551,0x3bc607e8,0x3a1f3eff,0x3a3772bb,0x3c057b16,0x3b6a3ca4,0x3bdfc2e9,0x3b90c8e7,0x3b2b8482,0x3a8f6640,0x3b01d491,0x3acb6d14,0x3aca4b63,0x3a978e60, +0x3aba1dca,0x39b2f4d4,0x398f0ae0,0x3a1f1cd3,0x3a41b751,0x3a8b337f,0x3af44c58,0x3b0cf164,0x3b0e1ab0,0x3b03ed5a,0x3ba277c3,0x3b21f3db,0x3b57e1f8,0x3a980f5d,0x3a9d9839,0x3b17a028,0x3b940998,0x3bcabb99,0x3bf3e253,0x3be3ed58,0x3c11da50,0x3c31e4d6,0x3c25c4bd,0x3c21640f,0x3c306d12, +0x3be70b04,0x3b6a5907,0x3c1aedb6,0x3c010992,0x3bb90e6e,0x3b3ebc86,0x3ad2982c,0x3ad5aa6f,0x3a6acd3e,0x39862e6a,0x394fcac5,0x3a26b702,0x3a24f0d8,0x3a08bd73,0x39ad4c3a,0x3a040f7e,0x3a2ad0f9,0x3a16b81c,0x39e0989f,0x3a46000a,0x3a6577e6,0x3b44cb7e,0x3b93e9bc,0x3c1203c8,0x3b97f6ba, +0x3b1096df,0x3a77e9d3,0x3a5c700a,0x3a566b41,0x3a99b435,0x3aa5c682,0x3aa4e30c,0x3b36cca7,0x3b8bc9e3,0x3bbfa422,0x3bb6ec1c,0x3ae70d23,0x3b3ee641,0x3b7d96c5,0x3b4252c3,0x3b013a2f,0x3ad961ea,0x3a9d60e6,0x3a4ba4cb,0x3a19a6b6,0x39f66055,0x398b8df3,0x38661a2e,0x388bb7ce,0x390e6331, +0x3927e145,0x3927ada2,0x39bd2fff,0x39ba4e36,0x39b3587a,0x3a3bb6b8,0x3ab693e0,0x3a9c520f,0x3a224228,0x3a01870e,0x3b3d1f65,0x3bfe0ddf,0x3c423803,0x3c544ddc,0x3c2082e2,0x3ba53453,0x3c0b90ee,0x3c71671a,0x3cd428b5,0x3cf12de9,0x3cd8ad6c,0x3ca1e001,0x3b9a9ae5,0x3c9d1877,0x3c0be08a, +0x3be6c6a5,0x3bbb06b7,0x3b549f2e,0x3ace11f2,0x3a3f3bbc,0x3a4ecc0b,0x39913dda,0x39557f4f,0x391cdabf,0x38c3fd62,0x38a418cc,0x392576b4,0x3962b676,0x39b4b585,0x39bb710b,0x39d62900,0x3a0dbf7c,0x3a3234fa,0x3ac4e97d,0x3b1c7537,0x3b479898,0x3b34a13f,0x3af9bfde,0x3a8f8d35,0x3ae9040f, +0x3b0c411c,0x3b37205d,0x3b2dfb5e,0x3b2cc830,0x3b7e2ab6,0x3c5d0c96,0x3cd2601a,0x3d270f35,0x3ccf0c62,0x3d080f67,0x3cb398b4,0x3c7c0756,0x3c28d089,0x3c03fdcf,0x3c036242,0x3badfd7c,0x3afe0b91,0x3a93a695,0x3a15f4c3,0x3994ad57,0x39308a5c,0x390df0d9,0x3987c902,0x390a3356,0x390cc452, +0x3989f6e2,0x39678d04,0x39ee47b1,0x39cfcac0,0x39b1a0a6,0x399bfdd1,0x39abab56,0x39cba4be,0x3a5edbdc,0x3b288e90,0x3b4f2a68,0x3b8f6980,0x3be979bb,0x3bb71a43,0x3be56dec,0x3c376ad8,0x3c8815dd,0x3c98ee4b,0x3cae013c,0x3cd958aa,0x3c27def3,0x3c27d401,0x3c1e0b82,0x3bf921f1,0x3bd237e0, +0x3bafb731,0x3ba54192,0x3bb370b0,0x3b93bcfc,0x3b61072c,0x3b148f0a,0x3ae976e8,0x3aa5e6f2,0x3a6c4e57,0x39f11b68,0x3992bc53,0x39ae30c5,0x3981b2fa,0x398f5f96,0x3970427c,0x3a478654,0x3ab32a81,0x3ad8e584,0x3b10a690,0x3b1c4d93,0x3b0f0de7,0x3b339b6f,0x3b36be57,0x3b310412,0x3b379588, +0x3b75cde9,0x3c0b327f,0x3c005588,0x3c017465,0x3bf9268d,0x3c0237c7,0x3bb97879,0x3bb00933,0x3ba8ac5d,0x3ba24887,0x3ba3adaf,0x3b8f389f,0x3b7f4539,0x3b6b2b6a,0x3b4b9b42,0x3b32ab50,0x3b2e53e3,0x3b000dc5,0x3acec534,0x3aa1e9b2,0x3a5057f9,0x3a00b355,0x39c4ce51,0x398697dc,0x3a08e763, +0x3a286bd8,0x3a62090f,0x3a7ae3bf,0x3aad1e54,0x3ac84246,0x3aef2bb7,0x3b134687,0x3b3a87cc,0x3b7832a2,0x3ba326e9,0x3bbb758e,0x3be8e45b,0x3c1b8677,0x3bfbe247,0x3be53e3d,0x3bf4007b,0x3bc4cb92,0x3b5789be,0x3b693d71,0x3b79253a,0x3b4e4c0b,0x3b4a10db,0x3b4571a1,0x3b44a34d,0x3b429034, +0x3b351910,0x3b27ef94,0x3b16c8e7,0x3b0e8924,0x3aef5b33,0x3ad7800f,0x3aa1b431,0x3a71a190,0x3a897bc0,0x3a481a51,0x3a41a417,0x3a283619,0x3a49828d,0x3a803161,0x3a9d35f4,0x3abfcc8d,0x3ae675f3,0x3b0a69cf,0x3b13842a,0x3b25776a,0x3b39df8b,0x3b53972d,0x3b6f00d9,0x3b93050f,0x3b8235d4, +0x3b705d7d,0x3b607fd9,0x3b5a1ab9,0x3b31b7a9,0x3b412822,0x3b4a1827,0x3b57248d,0x3b8157ab,0x3b4882e0,0x3b4c0571,0x3b769328,0x3b7a8079,0x3b7a8d72,0x3b69a47b,0x3b7db56f,0x3b8419d0,0x3b831f72,0x3b2f0e02,0x3b1a5bed,0x3b64c8b6,0x3b1a16cf,0x3b0404f7,0x3ada2ee2,0x3adfb5a9,0x3aefa2ab, +0x3afcdd46,0x3b0520ef,0x3b0c2234,0x3b13b1bb,0x3b1cf5e3,0x3b27061f,0x3b335c72,0x3b3d2c24,0x3b48074a,0x3b5a73a5,0x3b4ae2bd,0x3b449b8d,0x3b3be592,0x3b3b1887,0x3b5c1ced,0x38937569,0x38515f3a,0x38effc4a,0x38d0a365,0x392a9779,0x397908db,0x38c2a9d1,0x3904f8db,0x395c1fd1,0x39706056, +0x396dba2e,0x39479cf1,0x39720f86,0x39767a78,0x396b79ca,0x390fa37f,0x38c969f1,0x3988c792,0x39110d85,0x38ca877c,0x38d95f9c,0x38618d0c,0x3897ae73,0x38a5c6b0,0x38b256d1,0x38b5589b,0x38b0ff9a,0x38a12a14,0x38a06a81,0x38ac194b,0x38af5911,0x38aef835,0x38a4afca,0x38a8f3fe,0x389c4e95, +0x3873433c,0x3884b2b5,0x389efea9,0x38cfb9b1,0x3920e783,0x386bfc6f,0x3882254c,0x37b9d39b,0x37ec8492,0x3827b726,0x385b1a49,0x3884ba23,0x388eb1cb,0x387f7b1e,0x383671ed,0x381eeaac,0x382e9da6,0x382c51e9,0x3856d8cd,0x37fb563e,0x38fe489e,0x38b73676,0x38cdcc75,0x390474d3,0x393db620, +0x396d7bd1,0x39756ee0,0x3951a6cd,0x391477d3,0x38fc3f12,0x391ba411,0x39164df2,0x3919fa37,0x39086290,0x391d5f3c,0x390c1daa,0x38ca785a,0x38b2dffc,0x38d5250b,0x38a63c00,0x388a9928,0x380870de,0x38b184da,0x377b783d,0x37e8b8a6,0x38e0bbf2,0x39219644,0x395f7023,0x397637f5,0x38d5f936, +0x385bfa20,0x388c7643,0x387c84c5,0x389c945f,0x38067b44,0x37ccfe24,0x386bf2dc,0x388b71ee,0x390f99eb,0x391ee1fe,0x398f6b51,0x39bf0dd2,0x39cb3b18,0x39bd18c9,0x39785a32,0x3969a5e3,0x39a321de,0x399194f5,0x39938c33,0x3986f62a,0x39a09f03,0x39857609,0x3928cd2b,0x38fc00c5,0x3961a654, +0x3877899f,0x389c2924,0x38b3335a,0x39821342,0x3866da62,0x391d90cb,0x398589a4,0x399aa791,0x39adafe3,0x392342dc,0x388f629e,0x38854d13,0x3897cb21,0x38ce26c0,0x391f8264,0x38e9631c,0x387cf929,0x391c9a56,0x3971ae74,0x39b0b5b8,0x39ec1cad,0x3a61d981,0x3a9f9c7c,0x3ab009bb,0x3a8c5ccb, +0x3a05ddba,0x399bba0d,0x3a110474,0x39d3be42,0x39e19a28,0x39dbdad5,0x3a1f926a,0x3a11f6da,0x3a0751d6,0x39969f42,0x3aaa7c0e,0x3a171eeb,0x3a30e4a8,0x39c8fa13,0x395352c9,0x3995f17f,0x39a6f697,0x39bee4fe,0x390c34b6,0x3754544f,0x3721dba3,0x38b16b75,0x388439d3,0x389143ea,0x3882fb79, +0x391a3128,0x39979b1b,0x39ca436a,0x3a195517,0x3a478092,0x3a8069c2,0x3a429ae6,0x3a4b9176,0x3a2d4e40,0x3a5c036b,0x3a85ba74,0x3a3fd040,0x3a79ecc7,0x3a8e9f8e,0x3a3746c7,0x39fbd4f4,0x3a347191,0x39fb5c3a,0x3a12ab9a,0x3a8400fd,0x3a985e91,0x39d859c0,0x39b14bfd,0x3a4e4995,0x39c092aa, +0x39f1d8a4,0x3a6bf26e,0x3a756d42,0x398176fd,0x3873326a,0x3713f69e,0x37c686e6,0x386906d2,0x383241f9,0x3817ed32,0x371d3d2e,0x37b8f6f9,0x37f52280,0x3822be85,0x38bc9594,0x39521d37,0x39851ced,0x39d690e6,0x3a20486b,0x3a0c4c80,0x3a01909b,0x3a5ac89c,0x3a624592,0x3a358d87,0x3a7f0f11, +0x395be744,0x39490e4c,0x39a43404,0x3a92a89d,0x3a898b2c,0x3a4b717b,0x39c01136,0x3acd4150,0x3be21f59,0x3b7ae6e9,0x3adbdcea,0x39a74675,0x38945c05,0x38851770,0x389727ef,0x382d653e,0x3767dd5e,0x36675cb6,0x371a29a7,0x35d691e7,0x38071a03,0x37dbd1d3,0x383602d3,0x384378b7,0x37d9adc3, +0x3836fc89,0x389d1dfd,0x38d39ca6,0x39047163,0x395c63ec,0x39d58f55,0x3a2acd59,0x3a7d99fc,0x3a7330f4,0x3a2f4e75,0x3a75e371,0x3ab1414e,0x3ad0aeb9,0x3b0eb6a8,0x3b04e133,0x3aeab5cd,0x3af31c34,0x39ee144d,0x3ac3c179,0x3b6b0714,0x3ae26a3d,0x3ac257b3,0x3a4381ff,0x38b09aac,0x38792dff, +0x382fa16f,0x36148bf7,0x357d54c7,0x36a1b134,0x3679d2bc,0x35d76dfc,0x3696cc47,0x35c068c1,0x37707d9b,0x388b233a,0x38ba3585,0x3902add0,0x3908430d,0x39274307,0x3936ccc3,0x39770c8b,0x39724357,0x3974dac0,0x396cd685,0x394bd501,0x390ca48e,0x39957ee2,0x39ddb67c,0x39bd32aa,0x3a3b18ea, +0x3a7a14f7,0x3ad431b3,0x3b126abf,0x3a93d587,0x3a939df8,0x3a7472e8,0x3a822be3,0x3a1d9f93,0x390e96b2,0x37d92312,0x371224eb,0x37fefa43,0x379f3922,0x3796f140,0x375384a3,0x3725ba71,0x36bc8082,0x3685dc55,0x37b4abc3,0x388d2fd5,0x392c2801,0x3963e493,0x398d6094,0x39799f84,0x393642f1, +0x38d7ccab,0x38439256,0x37f6f008,0x38d3fca7,0x399c32e0,0x39d087d7,0x3a1453f5,0x3a46c512,0x3a2c0b23,0x3a2013b2,0x3a202bd7,0x3a3cada3,0x3a31a19e,0x3a4550e1,0x3a859525,0x39e77d9e,0x39c58650,0x399f95f5,0x39727958,0x394c505e,0x3933a305,0x39093e7d,0x38ce5236,0x38d283cb,0x38b80725, +0x38806d10,0x383c3baa,0x37cb199c,0x380c88bb,0x381b6553,0x38271215,0x382f9a49,0x387305ac,0x389352ac,0x38833fe1,0x38285711,0x381fce26,0x3823e1fa,0x3899f42e,0x390cc533,0x394eaf34,0x399021ec,0x39a59b86,0x39b55139,0x39a30556,0x39ae2624,0x3a020e5d,0x39c88cae,0x39b05f65,0x39bca508, +0x39c8ce75,0x39475954,0x39527dc3,0x395a0834,0x3952b180,0x39788102,0x39542b0e,0x393165d2,0x392a8e58,0x390b49fa,0x38f8a746,0x38fd1398,0x38cbc01a,0x38c8712f,0x38e46de7,0x38a7bbff,0x389ffca5,0x38ce70d6,0x38ac47c5,0x38a34736,0x388c6f3a,0x38805a05,0x384f53d4,0x3858aaa5,0x3832d2dd, +0x382c7c86,0x3841ff2a,0x382776df,0x3872315e,0x38d56bf0,0x38e4cb4f,0x38f2a3da,0x3912a7a7,0x38e4990e,0x38d7c39e,0x39008a37,0x391c50a0,0x3903eb7c,0x3918ab35,0x392ea8c6,0x3909afcf,0x39170954,0x3918f8b8,0x392be2e9,0x393f7101,0x39321aef,0x3927c75f,0x3925db2a,0x391e902d,0x3917623a, +0x39200381,0x3906bcad,0x38e2a7e8,0x38dae10d,0x38c11ee9,0x38c69c3a,0x38c71530,0x38ad75ae,0x38995a4f,0x38886d62,0x3875b932,0x3862e11c,0x385e5412,0x3867192b,0x3886552b,0x389b8ded,0x38b05133,0x38cb6c13,0x38fab3e2,0x38d68e43,0x38d36ce6,0x38dd8f61,0x38f70342,0x389d7493,0x38b2a26a, +0x38ca9b7d,0x38fb0f7e,0x3919204c,0x38cf72e8,0x38fa541e,0x3924b472,0x392ad504,0x39303291,0x39265637,0x393b832d,0x3945fe56,0x394a75e5,0x390ba1fc,0x38e199de,0x392d9ff5,0x38fe9a6e,0x38d04d5c,0x38c42f0a,0x38ad01e4,0x38aa5505,0x38a2ed46,0x389ec71c,0x389ab991,0x3893c5df,0x38947021, +0x3892faf6,0x3894c0cf,0x3897e86f,0x389e06e0,0x38ac05a5,0x38a21fa7,0x389f77cb,0x389e0f16,0x389e2dea,0x38e06be1, }; -const uint32_t orange53_rom_EL32[HRTF_MODEL_N_SECTIONS * 578] = { -0x3f007415,0x3e8256a5,0x3e8d9d2f,0x3e7215d4,0x3e76fd5f,0x3e81105f,0x3e82e923,0x3e88c9a3,0x3e8efc79,0x3e83c3e3,0x3e82fdb2,0x3e75fae2,0x3e6b652d,0x3e6890bd,0x3e692bcd,0x3e5d15c2,0x3e61ad8a,0x3e553f3c,0x3e561fd9,0x3e48c61a,0x3e549b9b,0x3e4fb8d4,0x3e593a70,0x3e8c7539,0x3e52b3b4, -0x3e548643,0x3e8b1753,0x3e87c269,0x3e816981,0x3e690e8c,0x3e93c547,0x3e8e4c81,0x3e8610f5,0x3e6311d1,0x3e610900,0x3e87aeab,0x3e7d09b7,0x3f0a1b9e,0x3eb9ccf7,0x3ed4f2c1,0x3edcf33d,0x3ef86217,0x3f05784c,0x3f15b5fc,0x3f1eb6ab,0x3ef8ea87,0x3f055553,0x3ee68f9b,0x3eca35a1,0x3ec6f3cf, -0x3ec7b2b2,0x3ea1e0f0,0x3eb82a19,0x3ea3a47d,0x3e96e714,0x3e8b08af,0x3e917e6d,0x3e81f72d,0x3e5f5c4e,0x3e4e7f74,0x3e581e69,0x3e4c351e,0x3e3a0cbb,0x3e541746,0x3e5c2f81,0x3e456a06,0x3e646586,0x3e4fc57b,0x3e469111,0x3e5c3b4d,0x3e77cea3,0x3e870a68,0x3e7e9ea2,0x3ec95f3d,0x3f12c66c, -0x3f0851b9,0x3f269468,0x3f3b9026,0x3f5f4b0a,0x3f625a7a,0x3f80c7ed,0x3f5a2030,0x3f3ca4a6,0x3f225b68,0x3f130996,0x3efdf31c,0x3ee0691b,0x3edae271,0x3eb963c6,0x3eb44eb6,0x3e90fffe,0x3e886856,0x3e59381c,0x3e67dce0,0x3e25c874,0x3e267a4c,0x3e119954,0x3ded38e6,0x3e029106,0x3dd3254b, -0x3e2c23b4,0x3e14e768,0x3df6b94d,0x3e0ce0da,0x3e11cf69,0x3e2a5de8,0x3e40e631,0x3e7c4b85,0x3ea81f67,0x3f020ab8,0x3ef0c6cc,0x3f48d66e,0x3f4789f2,0x3f873b21,0x3f922f04,0x3fa968ed,0x3fb4e449,0x3f97eb1f,0x3f83c172,0x3f561708,0x3f2ea6b9,0x3f125c16,0x3efe0292,0x3ed28af0,0x3ebf46c2, -0x3eaa153f,0x3e825737,0x3e5b0e4a,0x3e237644,0x3e0d921a,0x3dce5ac8,0x3dc4710b,0x3d98cb74,0x3d8c47d5,0x3d5d0d2c,0x3d92c0e9,0x3d7650b9,0x3d8df0ab,0x3d82c8dd,0x3d7460a8,0x3da96d45,0x3df35a6c,0x3e06b50d,0x3e3ff53e,0x3e660b10,0x3ee3783d,0x3f2af0ab,0x3f85c452,0x3f941bdd,0x3fb43104, -0x3fd59a59,0x3ff8135e,0x4007c99f,0x3fdc927c,0x3fb09f68,0x3f8d3d80,0x3f66b2e9,0x3f371f9f,0x3f1af4ae,0x3f0c2640,0x3eecda7c,0x3ec04436,0x3e8b5ae8,0x3e5b550e,0x3e20ab9c,0x3e26dbdf,0x3dae97f2,0x3d8a1b2e,0x3d3fd220,0x3d1a62b3,0x3d085c08,0x3d171d13,0x3d2a9555,0x3d400487,0x3d17a952, -0x3d24fe71,0x3d4d712f,0x3d9e7b1b,0x3dffb571,0x3e2a6423,0x3eaafd14,0x3f84bd7f,0x3fcf0c16,0x4008d71e,0x40100815,0x4022918a,0x4016a991,0x400ffaea,0x400a9e20,0x401f2df8,0x402b4fbb,0x4020b23d,0x40228b06,0x4027bf88,0x400b1918,0x3fdde1e7,0x3f953b0a,0x3f898b74,0x3f26ae2c,0x3ed1a881, -0x3e892d5e,0x3e36bc68,0x3df02dfa,0x3dade427,0x3d6c0711,0x3d467b50,0x3d22d854,0x3d608224,0x3d527f71,0x3d65aba3,0x3d515707,0x3d921555,0x3deb4b22,0x3e3afcca,0x3e750d85,0x3eba9b15,0x3f2fb7ae,0x3f5cc172,0x3fad20f8,0x40482ace,0x4052ac68,0x404c4a3c,0x40238584,0x402abe13,0x40291042, -0x40369f14,0x402cb504,0x40373979,0x4035eed2,0x402293f0,0x401cf8d0,0x3fed4fea,0x3fab55f3,0x3f7968f0,0x3f1e1225,0x3ef097ba,0x3e98b79a,0x3e8777c1,0x3e2cfc94,0x3dc0445b,0x3d813afb,0x3d3d5377,0x3d2729aa,0x3d47fc2a,0x3d72311d,0x3d8ffc4e,0x3d886ca5,0x3d9735f1,0x3dcf6201,0x3e240b14, -0x3e400dc3,0x3ea22dba,0x3f144ac3,0x3fc8a391,0x3fdec30b,0x4098ba57,0x405966ed,0x407bc02a,0x4022cba8,0x40214f45,0x4032307b,0x403090df,0x4036471a,0x403f019b,0x40319843,0x4029036c,0x4015ceaf,0x3fee0e18,0x3fb52001,0x3f89f1f4,0x3f2a8792,0x3f0172f5,0x3ea8985a,0x3e8d0eaf,0x3e332211, -0x3e2cf0ac,0x3dcc13ad,0x3d940b7a,0x3d9b82fd,0x3d930e09,0x3d9dc53f,0x3df75003,0x3da30266,0x3da9aff3,0x3de9a450,0x3e37d312,0x3e7003c1,0x3f091f56,0x3ee04065,0x3fa3bbd1,0x3fe04309,0x4089e3d6,0x4048c52a,0x4041d80a,0x400d07c4,0x4011046d,0x402e8da7,0x4028b86f,0x4033b7ac,0x4036aabd, -0x4039d144,0x40220039,0x400c385d,0x3fe24a02,0x3fa752cf,0x3f8474fa,0x3f225429,0x3f0ef5c8,0x3e97e8b4,0x3e8db754,0x3e44f082,0x3e45b23b,0x3df8b320,0x3dc9c4de,0x3dce1ae5,0x3d9fed84,0x3dbe4829,0x3e4f3fc0,0x3dc53b49,0x3db1b4e2,0x3dd9fb5f,0x3e5ca599,0x3e62e2f0,0x3f07db74,0x3f252390, -0x3fa26058,0x405ef83a,0x40134858,0x40073cda,0x400c3359,0x3ff5dd4b,0x400bc877,0x40212cca,0x401ff7d2,0x40201e50,0x401ae523,0x40100211,0x4009f0d9,0x3fdb389e,0x3fb82bea,0x3f8617fd,0x3f36977d,0x3f1675d5,0x3eebf253,0x3ebd759c,0x3e8a7f29,0x3e804084,0x3e44a53d,0x3e17eb1c,0x3dd5c536, -0x3dc77051,0x3d9ddb24,0x3dc579ed,0x3e806b4e,0x3dd301f1,0x3dce3c8a,0x3de26756,0x3e13cb6c,0x3e70db80,0x3eb08597,0x3eff83d8,0x3fad3771,0x3fa68d8b,0x3feec44c,0x3fef0d98,0x3fef702e,0x3fe83cda,0x3fe57c38,0x4007d211,0x3feff7cb,0x4001a787,0x400ae3ef,0x3ffc2aca,0x3fd0269d,0x3fb5f3a3, -0x3f85193f,0x3f465184,0x3f29675e,0x3f133c98,0x3ef99253,0x3ef4285f,0x3eb9b337,0x3e967e3b,0x3e3a6dec,0x3e321ec3,0x3e0638bd,0x3dd01df9,0x3deb8730,0x3de0f049,0x3e210686,0x3dfccda8,0x3e034cd6,0x3e21e5e5,0x3e67ec6b,0x3e7ef12a,0x3eeaae48,0x3ece0c1b,0x3f687c54,0x3f9e538a,0x3fa4e3e7, -0x3fb0eee4,0x3fbe8592,0x3fcfcc8d,0x3fd66449,0x3fd15c56,0x3fd970ba,0x3fc77ad8,0x3fbc5167,0x3fabd7e4,0x3f96c8ba,0x3f7a6636,0x3f52c2f6,0x3f30d590,0x3f149b43,0x3f07834a,0x3f1a1652,0x3ec8cbac,0x3ee5b3e0,0x3ec21b1d,0x3e97512b,0x3e42b013,0x3e16cb93,0x3e145577,0x3e0421e8,0x3df98286, -0x3e14c1e5,0x3e1dc9d4,0x3e167733,0x3e1b21ae,0x3e55b86c,0x3e85f74b,0x3eb1d995,0x3f178ef6,0x3f37ed41,0x3f50d606,0x3f8b949d,0x3f957838,0x3fa64809,0x3fa6e832,0x3faf6a1d,0x3fb3fc7b,0x3fa8020d,0x3f9ff088,0x3f9a964c,0x3f83d606,0x3f70aa4c,0x3f525608,0x3f3c96ba,0x3f26857a,0x3f12aa78, -0x3f05ea5c,0x3f07915f,0x3f045ca8,0x3ed62bd7,0x3e9e412c,0x3e9b05da,0x3e7b07cb,0x3e45c9c6,0x3e210e8e,0x3e56fe6d,0x3e260363,0x3e27a279,0x3e2f1e11,0x3e3b138e,0x3e2b8054,0x3e755c0d,0x3e8796ef,0x3ece491b,0x3eec4557,0x3f36fa22,0x3f53fa74,0x3f5b4c74,0x3f730b6c,0x3f8f7198,0x3f89c4c0, -0x3f8f215b,0x3f94ddc2,0x3f88945c,0x3f8060fa,0x3f76bd91,0x3f6443b8,0x3f517a94,0x3f3d9ca3,0x3f36ddbe,0x3f296c17,0x3f1cee2d,0x3f0fad66,0x3f14da7f,0x3eeb24a0,0x3eefc43d,0x3eb8568a,0x3ebd7cf9,0x3e981468,0x3e8d43f5,0x3e97dc1e,0x3e6e6921,0x3ed24a07,0x3ea200d4,0x3e8ba9c6,0x3e87a0b9, -0x3e847920,0x3eacecac,0x3eccac0f,0x3ef5a813,0x3f0f51ee,0x3f428f4a,0x3f4437f1,0x3f4947f7,0x3f40c1d4,0x3f2cd6d1,0x3f5ea0ba,0x3f5e1b03,0x3f7cf54a,0x3f73f16d,0x3f708515,0x3f6c3e01,0x3f624173,0x3f5aae92,0x3f59c753,0x3f41d492,0x3f30f260,0x3f3c6a5e,0x3f2cce85,0x3f1f1f20,0x3f2d6b18, -0x3f1ca2bc,0x3f065638,0x3f023a05,0x3f073176,0x3ee4256b,0x3eb6a3f2,0x3eebc205,0x3ee0a68a,0x3ef165de,0x3f05ded9,0x3f03c89a,0x3f03d164,0x3f135917,0x3eed3225,0x3f2caf2d,0x3f495a71,0x3f0462a4,0x3f114b89,0x3f00f4e0,0x3f068c76,0x3f04f893,0x3f0b6f88,0x3f085bb0,0x3f0e8c06,0x3f075bca, -0x3f05984e,0x3f03775d,0x3f00cf18,0x3efcdb95,0x3efb828b,0x3ef7924a,0x3ef7ebcc,0x3ef62659,0x3eed9eeb,0x3edd2e75,0x3f0738f5,0x3eebe9e7,0x3eff33d9,0x3f1ec959,0x3ee7c004,0x3ef37f7f,0x3f1694b1,0x3f26fd18,0x3f13647c,0x3f0f2f53,0x3f2bb88d,0x3f2c0177,0x3f1297b8,0x3ef188bb,0x3ee6203a, -0x3f20b922,0x3f0fd30e,0x3f9ae63e,0x39ce1835,0x392d28ba,0x3914f9c8,0x391d2acc,0x390f0f09,0x38ec77ce,0x39184aac,0x391bde2e,0x39017032,0x390d3dde,0x3902943a,0x38ac3bf9,0x38b5635e,0x38d4239c,0x390ddfad,0x39167b78,0x392cbd3d,0x392c35cc,0x393ce42a,0x3945d8e1,0x3955e0be,0x395d7c76, -0x3957a4e4,0x395b38ea,0x392d965d,0x39236dd8,0x3913c500,0x39316b76,0x393ed46d,0x3941e2b1,0x393dce98,0x3924de8f,0x392030ca,0x3907eb24,0x3918873f,0x3979d0c0,0x39359795,0x399b5112,0x39581fbc,0x39804a76,0x39805499,0x394b5c4f,0x39e0d779,0x39d613d0,0x3952fe71,0x3978ecc1,0x3932f14e, -0x39099c3f,0x38974e61,0x38c5b9a3,0x398d5495,0x39887790,0x39b61a8e,0x39a58b12,0x39b7c608,0x39db52f6,0x3a090955,0x3a189c0c,0x3a1f8105,0x3a1070df,0x39a66819,0x39513e85,0x3949fada,0x39c40948,0x39e950c7,0x39f3c64e,0x39d045ed,0x398735ca,0x3987e4e5,0x394889ae,0x39898ff5,0x3a49eb4f, -0x39c6f1b9,0x39c810d4,0x39a426f4,0x3991d23b,0x397da0cc,0x394721ae,0x39d3a51f,0x39f2885c,0x38f4d901,0x398cd501,0x394d2cba,0x39cc17af,0x3993c963,0x39999350,0x39f054ea,0x39af581a,0x39df5eea,0x39ddd54f,0x3a068497,0x3a2fef20,0x3a66eba3,0x3a841221,0x3a83973f,0x3a7d1922,0x3a026f6d, -0x3996fe96,0x398798c1,0x39fc35aa,0x3a273f39,0x3a48fe9e,0x3a0e01f3,0x39d280ac,0x399303c6,0x394e3cf1,0x398065d4,0x3aab1822,0x39fabc26,0x3a3513d6,0x3a5639c2,0x39eb3d5f,0x3a03a9ae,0x39de6eac,0x3a8a93e6,0x3a89d4ae,0x396e7316,0x39d8efce,0x39b23070,0x3ac31c74,0x3a90f194,0x3a85066a, -0x3abe51c0,0x3a3851de,0x3a488a19,0x3a142201,0x3a4d67e4,0x3a905e09,0x3ac5951d,0x3af2bf03,0x3b01e4ed,0x3b045a53,0x3a6b1424,0x39fd577d,0x39d4fe3d,0x3a5c510d,0x3a9da10a,0x3accf005,0x3a90e8e9,0x3a53223f,0x39ef5921,0x3a03a961,0x39e7e353,0x3b3e915b,0x3a737dc0,0x3a79ac4f,0x3a3ecfef, -0x3a1c5663,0x39c6d809,0x3a1f565f,0x3a590d09,0x3a444e20,0x39364a41,0x39ca5e29,0x3a306ec9,0x3af8517f,0x3affd042,0x3aeda2cf,0x3ac45826,0x3a5a9044,0x3a5712ce,0x3a3f0b27,0x3a778cb1,0x3ac5ebb8,0x3b0bac58,0x3b16e90e,0x3b192deb,0x3b3ca6dc,0x3ac2a071,0x3a7e43fc,0x3a0dfd31,0x3a7ec02b, -0x3ac9bef3,0x3b010286,0x3ab508bd,0x3a8d12be,0x3a134bbd,0x3a3e3c3c,0x3a063544,0x3b66ac5e,0x3a94640b,0x3c342a05,0x3b27dc79,0x3aa80af3,0x3b5d5453,0x3c3c7e0d,0x3b9c7b46,0x3b5297d4,0x3ac9e34f,0x3b5cc12c,0x3b2fe85b,0x3b836c38,0x3b68cc77,0x3b685ed1,0x3b0fbd2e,0x3a48e74c,0x3a216381, -0x3a345ad4,0x3a298d37,0x3a4b446f,0x3a9235f1,0x3b1c60bf,0x3b221c10,0x3b3a0a13,0x3ac7fea0,0x3a79a20c,0x3a984263,0x39f8a134,0x39f8c51e,0x3b1c43a3,0x3ae4beee,0x3b23f503,0x3b1c6edd,0x3b6b753b,0x3ad02c7a,0x3b685678,0x3c013caa,0x3c1d2716,0x3c3cb9ca,0x3b080160,0x3ab17ff9,0x3bf1fa0b, -0x3b9b6232,0x3b80f931,0x3b334280,0x3a5b8514,0x3a8e549f,0x3a919a6a,0x3a6cc726,0x3a8172b4,0x3a4c0773,0x3a3f7efc,0x3a819983,0x3a39ed77,0x3a1a8dd1,0x3a3d5d10,0x3a8033a4,0x3a5c8a24,0x3a51a3a3,0x3a3a6664,0x3a8011e4,0x3a44ec67,0x39f7f267,0x3a4da516,0x3a6fbd68,0x3a9434e4,0x39d29a4e, -0x39cb5191,0x3a8b3674,0x3b04792d,0x3acc3bf4,0x3b4b3d7f,0x3beee015,0x3a573098,0x3bc4fc25,0x3b3d4ffa,0x3b03cf51,0x3aa32a5a,0x3abc8ed9,0x3a1c9a18,0x3b702333,0x3b2eaa6c,0x3b2a6e8a,0x3a8e065b,0x3a23250b,0x39e9de50,0x3a25c3d6,0x3a365cb2,0x3a02802b,0x3a0ac3e0,0x3a224f19,0x3a384062, -0x3a8b90f5,0x39b2256e,0x39712b63,0x3a0c88e7,0x39f4b3ae,0x399d5683,0x39ad6250,0x3998fa27,0x398e0a29,0x397276aa,0x3931a9c3,0x39dbccee,0x3a27cef3,0x3a8e7bc6,0x3ad0c485,0x3b165515,0x3a27f3a1,0x3b31897b,0x3b76a132,0x3b498ae9,0x3b1aa186,0x3b35f9c7,0x3aeeb805,0x3ae0dec3,0x3b31dd51, -0x3aa6989a,0x3a9e670d,0x3a22fd50,0x3a4072d1,0x3a2bd422,0x3a3599ae,0x3a1cef95,0x3a22e314,0x3a014c76,0x3a4c9706,0x3a3fe714,0x3a993083,0x399ad0ca,0x3932b8c1,0x39b37f0f,0x399f9869,0x38ed55f2,0x394c42ea,0x38f34579,0x38da4cd4,0x389a4cf0,0x39a2483b,0x3a49f6d2,0x3aa04ca7,0x3a846a8a, -0x3afb6493,0x3b716a59,0x3b4be283,0x3c0c035e,0x3c19f5d8,0x3c831d1e,0x3c6f1457,0x3c21590c,0x3bbfdfd4,0x3bb142a3,0x3b800914,0x3b253516,0x3b098344,0x3b03f8c7,0x3aac2f00,0x3a960d2e,0x3a504b36,0x3a53cca2,0x3a317a55,0x3a44c0fb,0x3a2add0d,0x3a1e0f5e,0x3a59f0cc,0x39debc2d,0x3a104a2d, -0x3a069308,0x3a0a1587,0x39b6d528,0x39926f6d,0x38caf945,0x3899e42b,0x39301035,0x39218241,0x395dcb65,0x3a1f638a,0x3a3b0663,0x3ab27c2f,0x3b605e9a,0x3bd383c9,0x3c9b2fa4,0x3d004ffc,0x3cb0f8a2,0x3c90e5ca,0x3bd16560,0x3bca4474,0x3bf4b7b3,0x3bc4f858,0x3b33f8fb,0x3b22e680,0x3ada73b8, -0x3aaf7a5b,0x3a744ac0,0x3a5e1016,0x3a0b973c,0x3a03d342,0x39eaa2df,0x39f51181,0x39de1eb1,0x39b32e7b,0x396aa542,0x397008d6,0x39d1d1d3,0x3945da40,0x392cc15c,0x39d2af80,0x395dce99,0x3982c702,0x39a59dd5,0x3a8e6122,0x3aae7707,0x3b43771f,0x3c0b955d,0x3c4995db,0x3c5d4832,0x3c60dac9, -0x3c49bb8c,0x3c1dbaa2,0x3c1858ea,0x3be5f278,0x3bcf2fdf,0x3bf57236,0x3be7b3ca,0x3bca4e01,0x3b91aed8,0x3b881db1,0x3b630e17,0x3b90da8c,0x3b818c61,0x3b270249,0x3b286f66,0x3b148942,0x3ace2207,0x3ab7dc83,0x3a64edf4,0x3982df52,0x39cc120d,0x39a1f990,0x39a65d9c,0x39a74384,0x3a10792e, -0x3a943ce1,0x3abbef5a,0x3b0e0693,0x3b2f1101,0x3b8ccfb9,0x3bac5f18,0x3bdce4e0,0x3bd99d80,0x3bc9ea1d,0x3c09cc9f,0x3c153b72,0x3c1d0ab0,0x3c1f92f7,0x3c233dad,0x3c1546e5,0x3c383bcf,0x3c00a86c,0x3bf19a75,0x3bba58b8,0x3b8239fc,0x3b3e66b7,0x3b5c9561,0x3b0f299b,0x3b0089fd,0x3ae02202, -0x3ad363cc,0x3acca64a,0x3aaf287a,0x3a6da9c7,0x3a09f0ce,0x39b52b5a,0x398bf245,0x394bf24e,0x39a08718,0x39ef3cb2,0x3a690d55,0x3ad3a028,0x3b0f7c4e,0x3b35b44f,0x3b616e38,0x3b8b4fc4,0x3ba7c279,0x3bd6afbb,0x3bdd85b1,0x3bf9f87b,0x3c0a268b,0x3c17d059,0x3bb6ebce,0x3bc4da8b,0x3bb7dd77, -0x3bcc81b4,0x3bf39859,0x3bed2d69,0x3c042875,0x3c258c52,0x3bffabc0,0x3bbfb8fa,0x3bc01824,0x3b82c0a4,0x3b74654a,0x3b37ae1a,0x3b12ddbe,0x3afb10c1,0x3ab77486,0x3a859944,0x3a70e245,0x3a013857,0x39f4e903,0x39e50bf7,0x3a2ee74c,0x3a5fe143,0x3aa1a9ae,0x3ae334d2,0x3b08411b,0x3b2906f3, -0x3b63d48f,0x3b677af2,0x3b862216,0x3b96fc1d,0x3b97ae18,0x3ba4358c,0x3bb14d18,0x3ba6d11e,0x3ba6c303,0x3ba0a966,0x3ba02d15,0x3b888b00,0x3b588794,0x3b7577fc,0x3b56b61e,0x3b705977,0x3b605c85,0x3b75fafc,0x3b7fcee9,0x3b7d5852,0x3b785810,0x3b7fd3da,0x3b4d95fe,0x3b2810dd,0x3b254fab, -0x3af3f115,0x3ab28318,0x3a9f4aba,0x3aa24cc9,0x3abacbcd,0x3ac23f51,0x3adadcec,0x3af863c8,0x3b004145,0x3b2867ce,0x3b292443,0x3b4eb14b,0x3b738caa,0x3b83ed7e,0x3b95733b,0x3b9e7e5c,0x3b93e01d,0x3ba034db,0x3bae0c95,0x3b2428a1,0x3b263587,0x3b2b65cf,0x3b30df44,0x3b380ee0,0x3b4b3ece, -0x3b567b46,0x3b6b62e9,0x3b579d6e,0x3b430896,0x3b3253a3,0x3b27073e,0x3b18759a,0x3b10de6e,0x3b06f305,0x3b03980a,0x3afff974,0x3af52cfb,0x3aeed9f2,0x3ade3832,0x3aee1316,0x3b0141f1,0x3b0c4fcf,0x3b052556,0x3b08b776,0x3b0f1a1b,0x3b1b5e96,0x3b17da38,0x3b1c4c43,0x3b21181b,0x3b2047ce, -0x3b2b7571,0x3b262299,0x3b19468c,0x3b2c02ba,0x3b2648a7,0x3bd4de7a,0x3798b356,0x3705ccd5,0x3713e2a5,0x372a4f9c,0x372b0897,0x377b7c83,0x371a72f1,0x3700f4eb,0x36976613,0x37124340,0x3721b9a0,0x37327e5a,0x3709aedd,0x374b5081,0x37a4cede,0x37b093c7,0x37b37e53,0x378b4f21,0x373a2ad1, -0x37090d6f,0x36ec55b9,0x36e5d3aa,0x36dfac5a,0x370d0525,0x373e8ad7,0x372d3ce4,0x366eeeb6,0x36d05c06,0x36c0f10f,0x368247c0,0x365a0149,0x361c0da6,0x36996d1e,0x366a2182,0x369d89d2,0x371f133e,0x36e42354,0x3688c358,0x36afee53,0x37a04320,0x381f0393,0x389d3d27,0x385eade9,0x37f32cc8, -0x36c73e7c,0x37a4f162,0x3809e805,0x386013bb,0x3813b5f4,0x382fd1ca,0x38ab2129,0x38c72310,0x38c62b41,0x38649da8,0x37d06069,0x377eb37f,0x37903e72,0x3763b4aa,0x376b59af,0x37b3ad9f,0x37f571c2,0x37c79b67,0x373f1b38,0x37b55b17,0x37def3e0,0x3838b004,0x382863c3,0x38164611,0x37d872fc, -0x369b7c75,0x36c203d8,0x381ce4de,0x37149fa4,0x3738969c,0x37c6147e,0x386566a0,0x38a98036,0x3923fd32,0x38c5d108,0x3890adb6,0x37815e37,0x381e1ff3,0x383843b7,0x38f73039,0x383eacc6,0x38d6f180,0x39734e0e,0x3990f4a3,0x39834af1,0x393654d6,0x389102fa,0x3843bdc9,0x384bf8fc,0x380090db, -0x37a82d87,0x37fde040,0x3879809c,0x385ac02e,0x381fff1b,0x381e7368,0x38546c16,0x391051fe,0x38ea8881,0x38afcc44,0x38c14748,0x37bf015a,0x372afaa1,0x389b5a5b,0x36f2ca14,0x37a104e6,0x378e28ec,0x389b0cfd,0x394e0745,0x39dcc55e,0x39b09b27,0x39601116,0x38e508fc,0x38c6b4a5,0x39103919, -0x39b7b82a,0x39243492,0x394e8b27,0x3a0939c4,0x3a19f8a4,0x3a08e8e2,0x39980c61,0x38fd687f,0x38ab2ba5,0x38e71e03,0x38726317,0x38056111,0x389e3c8e,0x3914fb0b,0x38e1b4ae,0x38e58f7a,0x38c85044,0x39486677,0x39caff7d,0x3a07329a,0x39c135aa,0x397c2e1f,0x38939653,0x378e1418,0x395d642a, -0x37fa96ce,0x380502ea,0x389c82b5,0x39396f67,0x399881e4,0x3a062e35,0x39cebcc0,0x39829da4,0x38a4db9e,0x38c377a0,0x38c9562a,0x39b16ee2,0x38e2e12a,0x39be217f,0x3a7a9261,0x3a9538c3,0x3a7352c5,0x3a285fb8,0x398810a4,0x396b9bd5,0x395981f5,0x390401c1,0x386050ca,0x390ba9a3,0x390b98e3, -0x38be9b39,0x38a08bb8,0x389b02ca,0x38888aed,0x3919e65e,0x39a9e72c,0x399e13fa,0x398e6ad8,0x392f42b6,0x38a75d4b,0x39923f64,0x37caadae,0x3a79b066,0x3a7d209a,0x3ad7135e,0x3adf548a,0x3ad9a247,0x3a25d475,0x39d64e64,0x399da666,0x394aac0a,0x3a43dfdf,0x3abcd46e,0x3ab32ddc,0x3aa2bf44, -0x3b0e717e,0x3ad60a04,0x3a8575ff,0x3aa3eeaa,0x3aa43a1d,0x3ab280b6,0x3a9f7a8f,0x3a8b8459,0x3a106b2b,0x3a126955,0x3991d05b,0x38b3c9a0,0x39013e5f,0x39038d2c,0x391d47ff,0x372790e9,0x37d09b49,0x3983a483,0x3a38d446,0x3a31aff0,0x3a114701,0x3943f0f1,0x3a04035a,0x3ab22e8e,0x3a6c92f1, -0x39b5a481,0x39b00a20,0x3a9a7a79,0x3ab4bd5e,0x3ae7c487,0x39fbf44e,0x399cab17,0x39858fee,0x3ab314d4,0x3a583d19,0x3a96f535,0x3a9c1ea5,0x3a23b7d0,0x39f7f27f,0x39e51f3c,0x39a81698,0x39425831,0x3982c11b,0x38b38fde,0x3868c83c,0x37c75297,0x37ca0dd4,0x3734097a,0x38240fde,0x383dcfc5, -0x3866bacd,0x384a1695,0x3760c980,0x3897a436,0x39aad047,0x3a9daf5f,0x3a8f528c,0x3a3d1f10,0x3a4ef481,0x3ae7a179,0x3ba0acca,0x3ab3d177,0x3992e168,0x3a5b9d7a,0x38b48487,0x396192ee,0x3a4d86c2,0x3a0a01e8,0x3a124662,0x3923397d,0x38968445,0x38f4241a,0x393d7eec,0x38fe0368,0x37fb39d6, -0x38d9adf3,0x37c6b9d9,0x383a6f1e,0x38573a8e,0x3839be18,0x37fc5ecb,0x37caf8e8,0x37ac01ed,0x37f3f29e,0x3827ccb2,0x36fed9a6,0x36b696b8,0x3497d46e,0x3619c651,0x371b2d85,0x38839b35,0x39b7389e,0x399220dc,0x3a07df18,0x3a8816d4,0x3ab7fa94,0x3b4674d6,0x39b84595,0x3952fa84,0x3a8a9c19, -0x3a3b39ff,0x3a63f32c,0x3ab53d7c,0x3a715397,0x3a5db651,0x39ee1476,0x3918e043,0x393f0e93,0x39b900b3,0x38dc9e4a,0x390d9f3d,0x387d6aa9,0x37e9ba9e,0x36f13d2e,0x386297ef,0x3820f57e,0x37945f6a,0x3692eb62,0x378ca310,0x3770bd56,0x37edbac8,0x35dcd7b9,0x35f06912,0x34d29269,0x37791a6d, -0x38521705,0x38ce6508,0x380141f5,0x388db840,0x3a052dbf,0x3a29cbe9,0x3b380446,0x3bc38965,0x3ac9bf6e,0x3a134694,0x3a56d0a6,0x3a4d1647,0x3a3ddca2,0x3a4dbac5,0x39bb8c19,0x39fac73a,0x39aef6af,0x394cdce3,0x39b55c54,0x39ec5c8e,0x39929fdc,0x394f08f1,0x39573b22,0x38f8236e,0x39326b9f, -0x393386d5,0x39126613,0x3907ecc3,0x38e685b7,0x37d96dc9,0x35e95bc7,0x3733bc6d,0x36475abb,0x3677cfde,0x36d5589e,0x36d24b88,0x37b01a0c,0x38c8dd5b,0x389ffa6b,0x388f9ec4,0x3a7fd70a,0x3b0cef73,0x3b02d087,0x3afd1322,0x3a8d9f4b,0x3a471502,0x3982d8fb,0x38fe7def,0x398074c3,0x39c0c3f1, -0x3a1d9251,0x3a8b0d9c,0x3a6cf915,0x3a46e229,0x3997052c,0x39a7b9ad,0x3902a660,0x383f7ee6,0x38bca55f,0x393b5ee9,0x3998d1cc,0x39bb58b1,0x39c6eadd,0x39b97616,0x39953cb1,0x38fd2d5d,0x381461a2,0x3692b510,0x3736022d,0x3783210e,0x37902e63,0x37f33361,0x37484e5a,0x37e300dd,0x3769ebf8, -0x3823510b,0x39999a15,0x3a8fbc02,0x39cefa05,0x39f5d81b,0x39f412c1,0x39b24f37,0x399cc34d,0x3992b8ef,0x39d0cb8b,0x39faa13a,0x39e50480,0x39c6903b,0x39b2cc5a,0x39e02592,0x39c816d8,0x39975645,0x3937a822,0x388d95e0,0x37b6896e,0x37cf8a52,0x384cab86,0x38d2962b,0x38f4c23e,0x38b06562, -0x387e85bc,0x385a08f2,0x3854e4f0,0x381746df,0x37f7129e,0x384e0afb,0x3897bca9,0x3906730c,0x391d3925,0x3936e0cf,0x39603ca5,0x3988de26,0x3998ee6b,0x39bbd072,0x3876354c,0x38c65a8a,0x3897cf81,0x389b3964,0x391c3cf6,0x3902bc1d,0x3909faa2,0x3933755d,0x393f4791,0x397d43cb,0x39971e7c, -0x3946112c,0x38e653ee,0x38574af2,0x37d247d2,0x37321704,0x3809e355,0x38184039,0x38753fab,0x38b4967d,0x38c4bf4e,0x38d01158,0x38fac2b0,0x38d51088,0x38c97aba,0x38e570a7,0x38986316,0x3882002f,0x389fe1be,0x389c7c5b,0x38b41456,0x38f78433,0x38b7b27d,0x38cd5247,0x38cd5fe5,0x384ed900, -0x396ab2db,0x39507aa8,0x392b28df,0x390fc16f,0x39010eee,0x38bc14d0,0x389b50d7,0x38a0338f,0x386b91f9,0x383135c4,0x384a41cb,0x380132bb,0x383c5249,0x38807854,0x388ded67,0x38a80f33,0x38a875d7,0x38b37f67,0x38c54949,0x38cd4eea,0x38dc3f0f,0x38f11804,0x391001de,0x38ea6dc9,0x39059ca9, -0x392dc231,0x39152350,0x391c72db,0x3929e836,0x390ef64c,0x3923a5f6,0x3912be80,0x3935316d,0x39817712,0x3990d8ac,0x3975d72f,0x39905f0d,0x39652c58,0x394c2282,0x392e29c2,0x3909b933,0x38f4bad4,0x38c1ee17,0x38b34bfe,0x38a2dccf,0x3893ee65,0x38928214,0x389dc35b,0x38a01b2e,0x38b750a7, -0x38adb5ad,0x38b4e49a,0x38e93e6c,0x38faeb38,0x390b1dd2,0x39250ca6,0x391ee45e,0x39226cd8,0x392718cc,0x3944b65a,0x394eaf40,0x394fb483,0x396552ad,0x396029af,0x3962ec8a,0x398cd9d4,0x397daf8e,0x39bf27db,0x39ae887b,0x3982a435,0x39928db1,0x398adc37,0x385e3053,0x3861cf6d,0x38658364, -0x385ffaac,0x38631eaa,0x386d8fbe,0x3875c3ce,0x38858435,0x388f367f,0x3897eba3,0x389aae87,0x389aff06,0x389b3b89,0x38a0feb4,0x38a5ed3f,0x38ab0fda,0x38af4dc6,0x38ad8c77,0x38add211,0x38b898fd,0x38b004a0,0x38b7ace3,0x38b6ca2b,0x38b31ce7,0x38b43c27,0x38b9b881,0x38c5b9bd,0x38b053d4, -0x38b63462,0x38b31e87,0x389dbcdb,0x3892cb1c,0x388705d7,0x38884065,0x389275d1,0x38811eaf,0x395606b0, +const uint32_t defaultHRIR_rom_EL32[HRTF_MODEL_N_SECTIONS * 470] = { +0x3ea949d7,0x3e9e9e1b,0x3eaad36e,0x3e968ec6,0x3ea57d26,0x3eab1dcf,0x3eb44268,0x3eb925e2,0x3ec125cc,0x3eb46cfb,0x3eaddeaf,0x3ea72cfe,0x3ea16e08,0x3e9c9033,0x3e98340f,0x3e95698b,0x3e924505,0x3e8f2d4d,0x3e8bb504,0x3e81927f,0x3e916ed6,0x3e8d691a,0x3e952461,0x3ecc76c5,0x3e88ca6b, +0x3e8f4874,0x3eb998a6,0x3ebc79c9,0x3eb7e9c5,0x3ea883fd,0x3eb92f39,0x3ebfaee3,0x3ebbeebc,0x3e949d90,0x3e9323ca,0x3ecc82e4,0x3ea7e5e5,0x3ed6e55e,0x3ede2341,0x3edfd603,0x3f00029f,0x3f0c5c00,0x3f1cc904,0x3f2736fb,0x3f2fda5f,0x3f1a82a9,0x3f0b5757,0x3ef97e3f,0x3ee19c7b,0x3ecf3dd5, +0x3ec1cbb8,0x3eb7d5a0,0x3eaddcb3,0x3ea565ec,0x3e97b659,0x3e8a2c09,0x3e884bb5,0x3e87446c,0x3e4c2da2,0x3e541451,0x3e348361,0x3e2de453,0x3e37f8b2,0x3e3745ed,0x3e4880c2,0x3e43aa36,0x3e47e138,0x3e488bce,0x3e3ef5ad,0x3e581338,0x3e64b2ea,0x3e8074ba,0x3e950746,0x3ebb764d,0x3ee9a40e, +0x3f1ef55e,0x3f3304cf,0x3f5769b9,0x3f7a6d70,0x3f88afa7,0x3f98ca8a,0x3f7fed69,0x3f5fc85f,0x3f411510,0x3f244f51,0x3f0e9f1b,0x3ef90951,0x3edf5c20,0x3ec5c55d,0x3eb195d5,0x3e8f0457,0x3e782c46,0x3e3bd2f3,0x3e2e50ce,0x3e084f2d,0x3e002303,0x3dd5bccb,0x3dc4fb4e,0x3db5233e,0x3dbeaae2, +0x3dc73daa,0x3ddf8b77,0x3db408d0,0x3dcbf93d,0x3ddebb04,0x3e042790,0x3e1cd871,0x3e558dc8,0x3e8d329d,0x3edc55ee,0x3f1f91ae,0x3f646bf6,0x3f89309d,0x3fadfa07,0x3fc8ed30,0x3fe628f0,0x3fffd1cf,0x3fc60734,0x3f9d08ce,0x3f6f0bdf,0x3f36e826,0x3f11c33a,0x3ef5f55e,0x3ed646e6,0x3eb7bc22, +0x3ea1aa6a,0x3e71f591,0x3e4154d0,0x3e0ea292,0x3de6b8f5,0x3d9d7d15,0x3d8a95ba,0x3d3beaa6,0x3d1b0ff8,0x3d0732a8,0x3d1a9b9d,0x3d2d4ff1,0x3d39e2bc,0x3d12e9a6,0x3d12b4e1,0x3d46d7ac,0x3d964747,0x3e0829b0,0x3e27443c,0x3e81049e,0x3f7d4c5e,0x3fd0c51c,0x4006822e,0x4012dcdf,0x40227e01, +0x4014db00,0x400f1b9e,0x401058a5,0x401a9143,0x40265aa7,0x40296650,0x40283a34,0x401c3707,0x400b8f28,0x3fd472d2,0x3fa2ce4b,0x3f832cc2,0x3f214ea0,0x3ed1c5db,0x3e809b4c,0x3e3cb9a3,0x3de0ce40,0x3da06a01,0x3d5b46af,0x3d361b10,0x3d1b1c49,0x3d44ecec,0x3d4b25c2,0x3d50f054,0x3d4e4c6b, +0x3d85ffac,0x3dd6bd4e,0x3e1d6b3e,0x3e66df58,0x3ea102fa,0x3f0f5aed,0x3f91f2c1,0x3fb40b5b,0x40646f0a,0x406b6f6c,0x40672898,0x4031f271,0x402604e6,0x4034385c,0x40398cd0,0x403eaf95,0x4043f6aa,0x40409b5d,0x40371f04,0x40275acc,0x3fff1879,0x3fb754c4,0x3f82bbec,0x3f2349a1,0x3ef9b368, +0x3e9f2346,0x3e892203,0x3e2898a2,0x3de47af7,0x3d89c034,0x3d5239db,0x3d3551bc,0x3d5746cb,0x3d7960c6,0x3d9abc0e,0x3d8e70ad,0x3da2004c,0x3ddcacb4,0x3e123f7c,0x3e4fd66c,0x3ead1b84,0x3f0dad32,0x3fb0fc41,0x401aebec,0x409a1704,0x408302a2,0x407ffff7,0x4025a20b,0x401cb702,0x4033d5f0, +0x402df25c,0x40376abc,0x404be08d,0x4045547d,0x4034bcd0,0x401a93a0,0x3ffea26d,0x3fc1f714,0x3f9073d1,0x3f3270b0,0x3f0aa60e,0x3ea59cb8,0x3e8d782b,0x3e4ced45,0x3e44e9ab,0x3dea46c6,0x3db65f72,0x3dd4cc8c,0x3dad44af,0x3dbeda43,0x3e1d73c8,0x3dad1f32,0x3dac30ee,0x3de91bae,0x3e6fd667, +0x3e87c367,0x3f216d28,0x3f065daa,0x3f94dce2,0x40304987,0x403a6f75,0x400d291a,0x40124812,0x3ffa42b0,0x40085520,0x40265cd9,0x4025bf7c,0x4028e41a,0x402029d2,0x401d1e11,0x400ff35d,0x3feb809b,0x3fbef783,0x3f8d9515,0x3f44a251,0x3f122074,0x3ef40a2a,0x3eb24039,0x3e911f85,0x3e523550, +0x3e40fc56,0x3e06df0d,0x3dd22833,0x3db95d5b,0x3d9b735b,0x3dbf0be1,0x3e76a1a0,0x3dd8714d,0x3db897d0,0x3de74109,0x3e093df2,0x3e535ddd,0x3e956a4d,0x3ef7a465,0x3f6f4708,0x3fb9717b,0x3fd358a4,0x3fe93e16,0x3fed3332,0x3fea705b,0x3fed71a0,0x40043ac1,0x3ff8a755,0x3ffe9b92,0x40051e7d, +0x3ff4d6ce,0x3fd80510,0x3fb1ed3a,0x3f83ad3c,0x3f469a6a,0x3f26cb49,0x3f0e1467,0x3f03b4b8,0x3ee38399,0x3eb44ba0,0x3e87aec0,0x3e4804e6,0x3e24c82c,0x3e0a4c24,0x3dd6c9d8,0x3dc674f0,0x3dd92d96,0x3e26bb9d,0x3df1a7e0,0x3dfe6a19,0x3e162a57,0x3e3f12a2,0x3e6b8a0b,0x3ea31714,0x3f47cb50, +0x3f6030c7,0x3f7b63d5,0x3f9afb36,0x3fa70a58,0x3fb1bc0a,0x3fc22372,0x3fc7b6e4,0x3fc68875,0x3fc48fc6,0x3fbe5d2a,0x3fb2517a,0x3f9b6e1a,0x3f85b6a5,0x3f646e2c,0x3f46d593,0x3f28364a,0x3f1105b1,0x3f063f28,0x3f10ae9c,0x3ed36154,0x3ecc7964,0x3e9bc7af,0x3e8d477f,0x3e4b4da5,0x3e16a635, +0x3dfd081d,0x3dfc87a6,0x3e0843b5,0x3e174652,0x3e1615be,0x3e16208b,0x3e19f4e4,0x3e42b577,0x3e84dfbe,0x3ea59da7,0x3f03c265,0x3f216eba,0x3f4de3fe,0x3f74c17c,0x3f87e1f0,0x3f9d2063,0x3f9b7831,0x3f9ea498,0x3fa5cc27,0x3f99a529,0x3f91e490,0x3f8dc4ac,0x3f800406,0x3f6aa891,0x3f55b3ef, +0x3f40979b,0x3f2c61c9,0x3f1cac17,0x3f0e3177,0x3f0f195d,0x3ef46e30,0x3ed82e3d,0x3eb27154,0x3e9c78f3,0x3e84e650,0x3e8048c3,0x3e59f560,0x3e64601e,0x3e56c4ae,0x3e6d39b2,0x3e39ec71,0x3e68b45d,0x3e4c4839,0x3e89b44d,0x3ea8a2ad,0x3ee0156f,0x3f04383b,0x3f57de18,0x3f4817c8,0x3f3d8a6e, +0x3f484be1,0x3f51b3bb,0x3f5cf774,0x3f6a830e,0x3f7c74e3,0x3f70aecf,0x3f6a4c6d,0x3f6257b9,0x3f594409,0x3f510224,0x3f48ad3e,0x3f3d782f,0x3f318cb9,0x3f2881dc,0x3f208b2c,0x3f16a0bb,0x3f165428,0x3f1e0145,0x3ee3e1d6,0x3eeca79e,0x3ed863d6,0x3ec6d3a2,0x3ed1eac1,0x3ed5a321,0x3eea8fbf, +0x3ed8c5c7,0x3eee18ad,0x3ee8c70f,0x3ed160b3,0x3eecff85,0x3efa86bd,0x3f088bc4,0x3f1bb6ce,0x3f2e2455,0x3f408a4e,0x3f23cf8b,0x3f2f482b,0x3f2f3548,0x3f33c546,0x3f363d85,0x3f3b7bc3,0x3f35a8ea,0x3f326b69,0x3f2f0360,0x3f2c425e,0x3f29e130,0x3f27fac2,0x3f25d20a,0x3f23f612,0x3f21349e, +0x3f1fbc33,0x3f15cbbd,0x3f2fa0fa,0x3f224010,0x3f2e20b6,0x3f78668a,0x3f1cb390,0x3f249834,0x3f5eafd1,0x3f653827,0x3f5ea74f,0x3f4ab775,0x3f5f939e,0x3f64bad6,0x3f5b7d64,0x3f299928,0x3f28bd1b,0x3f774df7,0x3f3c07e0,0x3f4e1208,0x3981d91f,0x394eea09,0x3930056d,0x394cbf08,0x395a29b7, +0x3938ab32,0x39854dfd,0x3981ea72,0x3936a35a,0x39480faa,0x392789ab,0x38e0dc4c,0x38d83cb3,0x38faf815,0x39481e83,0x3954a164,0x396c3ff6,0x397085e7,0x397eff50,0x398a10f7,0x3999aa24,0x39a1755c,0x399f428a,0x39a323b3,0x39666283,0x395117f5,0x393e677a,0x3980910d,0x398acdb3,0x3996e2b4, +0x397f7c8a,0x396cfa3c,0x39607e98,0x3944d1cb,0x394fc9df,0x39bd72c7,0x396b4714,0x39b90f06,0x3972b76a,0x396b9bbf,0x394be8cd,0x39142134,0x39a73ba6,0x39b518b9,0x39253585,0x39766e4b,0x39336d08,0x392ec619,0x38d2ae74,0x38f4df18,0x398f360e,0x3990920e,0x39b90bbe,0x39b38935,0x39d27b4d, +0x39ff87d9,0x3a1c0fdf,0x3a31644a,0x3a2d97ff,0x3a2404b2,0x39bb0a95,0x3981cfdc,0x3957505a,0x39bce4d9,0x39edc5fb,0x3a056709,0x39d0c26c,0x399a548b,0x397797ce,0x392b6ce7,0x397e7e97,0x3a66ab6c,0x39f2bd88,0x39e1bd0b,0x3a042d10,0x39c145a9,0x39dac6e7,0x3998594c,0x3a46514d,0x3a384a10, +0x3914fcbc,0x39a2bc4f,0x3968e759,0x3a3c6d73,0x3a050a1a,0x39fbc953,0x3a4e6e95,0x39e62b07,0x3a091eab,0x39ed49d3,0x3a1c5cea,0x3a56c771,0x3a8ff64a,0x3aad9a95,0x3ab4cb54,0x3aaaaf29,0x3a21c6fe,0x39a50b01,0x399c2d49,0x3a2e2f6a,0x3a6349f7,0x3a8f2c65,0x3a458f27,0x3a0ba3b6,0x39c2a4a4, +0x398dc0ea,0x39a093a1,0x3ae313e2,0x3a02c621,0x3a99831b,0x3a43f6fc,0x3a0d254a,0x39a94928,0x3a2debf9,0x3a8afff1,0x3a908b75,0x39a33ebc,0x39ca504a,0x3a2c41aa,0x3b343e5f,0x3b273a16,0x3b14b786,0x3b0706aa,0x3a92c416,0x3a8f30fa,0x3a615687,0x3a8dfbe4,0x3ad1d135,0x3b0ce35a,0x3b273a48, +0x3b28f3c7,0x3b36b9cd,0x3acb10c9,0x3a59bbd0,0x3a1e19ff,0x3a8e4b85,0x3add4b28,0x3b0d831b,0x3ac87948,0x3a977915,0x3a15283c,0x3a6d3f79,0x3a30b647,0x3b92e1bb,0x3afd13ea,0x3bfbf38e,0x3b0e5c95,0x3ab5a938,0x3b514f67,0x3c1954cc,0x3b8c5113,0x3b16de45,0x3ab30305,0x3b27c65f,0x3b044fce, +0x3b69464e,0x3b52935d,0x3b3d27d9,0x3b00c622,0x3a487988,0x3a28cc87,0x3a2a02a2,0x3a242879,0x3a4e4f04,0x3a99c9dc,0x3b0dba8a,0x3b2356fe,0x3b2e3e2a,0x3ac80ff1,0x3a8e9653,0x3a68393a,0x39c574e8,0x39f8fed0,0x3b0b8895,0x3ae4e609,0x3b15de8a,0x3b12b86e,0x3b3c946e,0x3aaa5dfd,0x3b5c9aca, +0x3bc2f373,0x3c225987,0x3c55d372,0x3b1bc057,0x3b115b72,0x3c098e24,0x3be33234,0x3b7f074e,0x3b5ae9db,0x3a9f7a67,0x3abc817b,0x3aca6dd5,0x3a8c65d2,0x3a7b8a5e,0x3a38a694,0x3a4c96b2,0x3a71f526,0x3a3543da,0x3a15f49e,0x3a305644,0x3a5e0da5,0x3a362cf8,0x3a1fb89c,0x3a377fa2,0x3a5a97d6, +0x3a2af5af,0x39f768b1,0x3a4c7972,0x3a761847,0x3a7811da,0x399b3d29,0x39ca2c9a,0x3aaf859f,0x3b2b7302,0x3b1a019f,0x3b6ba0f9,0x3bff8aa9,0x3b8e4277,0x3bb880e2,0x3b70c6f0,0x3b66149c,0x3b446adb,0x3b8e421c,0x3b2c3d78,0x3b8c3ed7,0x3b4c9b45,0x3b261d0a,0x3ab0c73b,0x3a383925,0x3a117dfb, +0x3a5031be,0x3a61f118,0x3a49f2d7,0x3a157baa,0x3a60c720,0x3a5904c7,0x3ac7b4ef,0x39a26a2e,0x394315a6,0x3a02d95a,0x39cc1712,0x39527f5a,0x39793c37,0x3941eafb,0x389aa36f,0x3897aad6,0x39d00f4a,0x3a342dfb,0x3a584855,0x3a924077,0x3ae9c146,0x3b2422ac,0x3b4cbdb3,0x3c289d12,0x3c56a865, +0x3cb67aee,0x3ca5fa21,0x3c2b7d6b,0x3bb4e6ab,0x3b74d661,0x3b6856b1,0x3b0fdf91,0x3afcc6b9,0x3aea86ec,0x3aa16cc3,0x3a97a74f,0x3a5015e9,0x3a3941d6,0x3a2a5c8f,0x3a28a0bf,0x3a42cb64,0x3a2eda97,0x3a6c76a4,0x3a0390e2,0x3a0a6a4e,0x3a01a091,0x3a01d53e,0x39a575ab,0x3975264c,0x38f1522f, +0x390e4bc1,0x3979b0d4,0x399c04bc,0x39d9b601,0x3aa04462,0x3a8a0957,0x3b10323e,0x3ba3cbee,0x3c004420,0x3c9b3b0b,0x3ccec1a6,0x3caf4452,0x3c5db7a4,0x3c0ce6b4,0x3bea9c76,0x3bfb5430,0x3bb9e008,0x3b587371,0x3b165df8,0x3ad54c8a,0x3ab88cb1,0x3a8c6e39,0x3a5d5732,0x3a1c813c,0x3a0c6a2c, +0x39f02544,0x39f387ba,0x39e72622,0x39b6eb7e,0x397745fc,0x3956ff08,0x39bf8561,0x3943794e,0x39451aa8,0x39b73271,0x3949b35b,0x3974f61f,0x39be2d3b,0x3a4c47c3,0x3ad02c9b,0x3b38b4bc,0x3c05ca00,0x3c426eac,0x3c47c442,0x3c6d5392,0x3c600404,0x3c4f06d5,0x3c3c3463,0x3c1519e3,0x3c0c5f1a, +0x3c1459fe,0x3c064779,0x3bd6162f,0x3b8d0eb8,0x3b828365,0x3b82e3d0,0x3b8ccf65,0x3b846906,0x3b370ea2,0x3b2f7e89,0x3b16bfc9,0x3aea1977,0x3ab8d38a,0x3a6aafe5,0x39af6b7e,0x39d59d75,0x39acedbc,0x399f2e58,0x39a390a0,0x3a263ed5,0x3aac59f6,0x3af7fe6b,0x3b3098b9,0x3b5f4e3d,0x3ba93fc2, +0x3bdef662,0x3c038266,0x3bf84924,0x3bf701ea,0x3c14aff4,0x3c306430,0x3bdec784,0x3bf757ba,0x3bf2503a,0x3c036e81,0x3c2165e7,0x3c10c79d,0x3c1ceb3b,0x3c3db0d4,0x3c0ab8af,0x3bd35687,0x3bc1c364,0x3b9f60b7,0x3b83969e,0x3b5d64f1,0x3b309acc,0x3b127b2e,0x3af67965,0x3aa8209b,0x3a5790ea, +0x3a143a1c,0x39dac4ac,0x39a25e33,0x3a0bd002,0x3a3e4214,0x3a9aa49b,0x3af3758c,0x3b186f23,0x3b3b7056,0x3b7bf7a0,0x3b8478da,0x3b94e9e0,0x3baf481e,0x3bbaf049,0x3bd2781b,0x3beca121,0x3be2e10d,0x3ba35c28,0x3ba00dd2,0x3b94a348,0x3b8c7260,0x3b87f07d,0x3b87495e,0x3b88d3bc,0x3b91da47, +0x3b834caa,0x3b8227f4,0x3b753ee4,0x3b69602d,0x3b5a3e43,0x3b54a725,0x3b2f99b9,0x3b11258f,0x3aea9cde,0x3abd7cd6,0x3a92710d,0x3a58d503,0x3a7a6872,0x3a78c541,0x3a8fc9cf,0x3aa1289c,0x3ac6e716,0x3aec26a3,0x3b0c171c,0x3b23c16a,0x3b3d2853,0x3b57a615,0x3b7707a1,0x3b8cb56a,0x3b8d4236, +0x3b906460,0x3b91e22f,0x3b95ab23,0x3b6f66e2,0x3b6eae15,0x3b69e8ae,0x3b6ab44a,0x3b68a86f,0x3b6f87ea,0x3b739746,0x3b7abc1b,0x3b70e9d2,0x3b68ae3f,0x3b6396d8,0x3b58e56e,0x3b50e28a,0x3b4c4992,0x3b3e2880,0x3b337a29,0x3b296287,0x3b1c8612,0x3b13cf2e,0x3b02e502,0x3b129c94,0x3b1b9135, +0x3b2cd589,0x3b20afff,0x3b2bd018,0x3b3d45d3,0x3b439764,0x3b484b0e,0x3b4fc9f2,0x3b584ca0,0x3b61f60b,0x3b6e853a,0x3b679204,0x3b650736,0x3b7a30bf,0x3b719024,0x3b8a967a,0x37478792,0x36fed3eb,0x370c8bbc,0x37367266,0x37656ba7,0x37c3a48d,0x375faf10,0x37200468,0x36796731,0x37450488, +0x3780b49c,0x37ab8ff5,0x37793cde,0x3789c61a,0x37d1fa89,0x37dfa813,0x37d4381b,0x37a25090,0x37410619,0x3713c88a,0x370e1c41,0x370f7e39,0x371bad78,0x37404e70,0x378453ff,0x3764b25d,0x368e1899,0x3717c2b6,0x3708d730,0x370dd7ef,0x36bbdfa7,0x367c5c59,0x36e42e54,0x3698de59,0x36dcc3f8, +0x37844a23,0x3708fd32,0x370c5e47,0x374960ca,0x380c16c3,0x3861c57e,0x38ca380f,0x387934f1,0x38173631,0x36e9a106,0x37c52485,0x37f83430,0x3877e619,0x37e42875,0x386d271e,0x3908eaaa,0x392fe310,0x3925b2be,0x38d51552,0x3850d429,0x38044fcd,0x37f54dfb,0x37bab5d2,0x378a34d9,0x37bd25cd, +0x383a289e,0x3829e169,0x37421f6f,0x37d0ec5e,0x37da2e40,0x38270e61,0x3817ed84,0x37f14c77,0x3815ee57,0x371b50ad,0x36d66634,0x383cf40c,0x372d67a0,0x367ef215,0x37dfa438,0x3857a96f,0x38eaa0ea,0x395e1c85,0x393025c8,0x38dead0f,0x382b20dc,0x38605dff,0x38bc91fa,0x3956117f,0x38d5dac7, +0x3908a8ed,0x3997d82f,0x39a00e1a,0x39915cec,0x392c5645,0x3870efe9,0x38242a95,0x385eac56,0x37fb6f3e,0x37b55ed6,0x381a9279,0x38c86801,0x3893dcbc,0x38b6cd3c,0x388c78f2,0x3907b40f,0x39ac9065,0x39a563dd,0x3962a26f,0x392189f2,0x380691d5,0x371a4d3c,0x38dbca08,0x37016452,0x3860d533, +0x3805d7be,0x3969c184,0x39d7ba1d,0x3a4ac4a9,0x3a0fd11a,0x39b9ac58,0x38ff66ad,0x38bb9574,0x38dae1c3,0x39ee6b45,0x38eb2cf4,0x39d47578,0x3a99afb8,0x3ac0f562,0x3aaa405b,0x3a59fd07,0x39d742b4,0x39a87c1b,0x39a848a1,0x39466759,0x38a92648,0x39254ddc,0x396371c7,0x39181eed,0x38d70069, +0x38c86f00,0x38daa8b0,0x39744f0a,0x3a046c6a,0x39e74760,0x39ca8ae0,0x3969fa5a,0x38a21637,0x39c2f7ee,0x38c5e45a,0x3a52ea76,0x3a445989,0x3acd17ee,0x3ac624fa,0x3aa9f06f,0x39fed80f,0x3961ef41,0x39a3542e,0x39278124,0x3a1c0311,0x3a9f0369,0x3a91b0c0,0x3a72417a,0x3ac1e6d8,0x3a9f75ba, +0x3a7594a7,0x3a6c8108,0x3a7919c7,0x3a95f3b4,0x3a8ca76b,0x3a595fac,0x3a0fd900,0x39e3b1d1,0x3963bb0a,0x38c32225,0x38d5ba68,0x38d89754,0x390e09d7,0x3778268d,0x37a50bf2,0x3958e215,0x3a10a129,0x39f9da64,0x39dd1ab3,0x3994dc0e,0x3a06a240,0x3a8f58c1,0x39ed344f,0x39e17f33,0x3a0adab7, +0x3a99c873,0x3ac97dc8,0x3ad3beaf,0x39eabd59,0x398d2b10,0x39a11f77,0x3abf76c0,0x3a891348,0x3aab6780,0x3aa1e1d6,0x3a2a3a1d,0x3a182764,0x39da2cb6,0x39c52c08,0x397c0f78,0x3998796e,0x38e3814b,0x387d050a,0x3813cf28,0x37fda665,0x372ed78e,0x38622626,0x3888b9c4,0x38b77080,0x38217086, +0x3763ae74,0x38c02b3e,0x39c07582,0x3abb34e2,0x3ab0ff77,0x3a3ee17c,0x3a0f45dd,0x3bbc1d71,0x3c2bcaf6,0x3b207bf1,0x3a2e1eae,0x3af474b8,0x3abaa6bc,0x3ac354bf,0x3afc333d,0x3ac1514c,0x3ac2210b,0x3a9249fe,0x39c69260,0x3a1bd13e,0x3a447380,0x3a050bb6,0x39eaa96b,0x39a0604d,0x394281fd, +0x38cf44f0,0x38bda8f3,0x38145197,0x37d90894,0x388d470e,0x3880791f,0x3823a6a6,0x3849d7e6,0x361d75bb,0x37618d3e,0x36acf63a,0x37b2d32e,0x3885c9cf,0x38f39c8f,0x38c3bf01,0x38dff582,0x39f95652,0x3b264077,0x3b2a60e7,0x3bb1e2b3,0x3afa805e,0x3a58314a,0x3a8e6125,0x3a82fcd6,0x3a3c09fa, +0x3a7c4686,0x39f99dee,0x3a114635,0x39b093ab,0x39052509,0x3974ea84,0x399f7927,0x3987749f,0x3953b8c9,0x394c25d3,0x3923066f,0x39453539,0x394f27f6,0x39327374,0x390f1dc5,0x38d6b5bf,0x37b0f9e8,0x35c5aedd,0x36d18bdf,0x361c4a46,0x36b97c65,0x36fd7cd6,0x35c33bf9,0x365475a1,0x3878a575, +0x38b917fc,0x38fb697a,0x3a93f343,0x3b11e344,0x3aa74282,0x3a95eedf,0x3a43978c,0x3a1ea414,0x3986f63c,0x39178ab8,0x399e5793,0x39c4391f,0x3a185289,0x3a3c3a99,0x3a49fb2b,0x3a267925,0x39eb542a,0x39af9264,0x39022459,0x382a9088,0x388cc16c,0x3921cd09,0x39874a15,0x39b5d044,0x39c553cf, +0x39a74d8d,0x39866069,0x38db0d2e,0x3809264f,0x36b3c9e1,0x37093776,0x37789cb8,0x379561d5,0x37d9154c,0x37d84530,0x38394589,0x376c948c,0x38106fb3,0x394728cd,0x3a67b2c8,0x39d54121,0x39f0d8a0,0x3a0608eb,0x39f67ef1,0x39dae3f4,0x39c091f1,0x39d282ec,0x39fedef7,0x39e8229f,0x39ee825c, +0x3a06850d,0x39f3c714,0x39cb7bb1,0x3986fc79,0x392118ef,0x38829b34,0x37d5e3f0,0x37f2c744,0x38555121,0x38ca3338,0x38e5f4c0,0x38b605f8,0x387a56eb,0x3878bec0,0x386fc69d,0x385e9056,0x381fc05c,0x388ad231,0x38bca311,0x3908cc87,0x391e1f24,0x391bfa16,0x39500643,0x39839a54,0x39943554, +0x39abc85f,0x3994d7ba,0x399a142b,0x39848a28,0x394b4f2f,0x390f295c,0x38c5b290,0x38bcfdc6,0x38dc4467,0x38bb0db1,0x38af2593,0x38c8e072,0x38655ae1,0x38442442,0x3889e43c,0x386ef822,0x3879fba1,0x389682f6,0x38907dc0,0x389fb45c,0x38c076ff,0x38d7d68b,0x39004d94,0x391adb3e,0x38f3bbe8, +0x38fc349d,0x392e20f8,0x391552ad,0x391ad829,0x3938e525,0x393ea547,0x394fb01d,0x39839f3e,0x398655b2,0x39a0373e,0x39b6e344,0x399c4950,0x395d2456,0x39560cd9,0x3938a4ac,0x391f613e,0x38fe53aa,0x38cbf61e,0x38a94caa,0x38b1971c,0x38ac21a1,0x38b13b92,0x38aedf5b,0x38a78f99,0x389d16c9, +0x38a349fc,0x38a53854,0x38b2d699,0x38c5a968,0x38e00a4a,0x38fc80d7,0x390ee5ce,0x390d955d,0x390b1e30,0x39163d03,0x3926b467,0x393f0e87,0x395dd5a7,0x395418d5,0x39598456,0x3966741b,0x396fb66a,0x3982fc2c,0x399012a2,0x3980a2e1,0x39647081,0x395f6873,0x394bf9d4,0x38e43c83,0x38d9f2b9, +0x38cde27d,0x38be700a,0x38b81225,0x38b0ce50,0x38ac59c0,0x38a4cc5c,0x38a565f1,0x38a5f118,0x38ac6bbb,0x38b2b675,0x38bc47c6,0x38c4d8d9,0x38cd60a1,0x38d45c3b,0x38db9bd1,0x38e43244,0x38ed722d,0x38fcf893,0x38fc59d5,0x3900b7c9,0x39043ca1,0x3903508c,0x3906c8ca,0x391561bc,0x39103a9f, +0x390f5efc,0x390abf30,0x390b73d6,0x39096d39,0x390d880e,0x38fbee8d,0x38f109a0,0x38f7ba96,0x38f04951,0x390e1d14, }; -const uint32_t orange53_rom_ER32[HRTF_MODEL_N_SECTIONS * 578] = { -0x3f000530,0x3e699742,0x3e8584f0,0x3e801f34,0x3e76d7fe,0x3e82956e,0x3e560e05,0x3e52eff7,0x3e8e5811,0x3e8ed484,0x3e8c3df2,0x3e732e12,0x3e75dad4,0x3e916fd7,0x3e7dbf36,0x3e4c1267,0x3e50ad6e,0x3e849114,0x3e5b32b6,0x3e4f5663,0x3e598757,0x3e498f5b,0x3e564fb2,0x3e5444bf,0x3e65f1c3, -0x3e6bde74,0x3e6599ca,0x3e689b85,0x3e711806,0x3e6f822a,0x3e85c42a,0x3e7f50df,0x3e8feec8,0x3e85bf62,0x3e866b85,0x3e81f613,0x3e771210,0x3ec8c367,0x3ecef74b,0x3eedc5e0,0x3e7b782d,0x3e89855c,0x3e66f254,0x3e799b17,0x3e50462e,0x3e34d2ed,0x3e617c75,0x3e4f3849,0x3e4d8884,0x3e4c3a96, -0x3e508563,0x3e64ea2a,0x3e68fa91,0x3e5df3fb,0x3e58f937,0x3e810aaa,0x3e92cb3d,0x3e8c7f87,0x3e9a8a6f,0x3ea10f6b,0x3e9c68bf,0x3e9861e2,0x3ebcb73c,0x3ed04f26,0x3ee07ef6,0x3eda2439,0x3f070279,0x3ef0e9fc,0x3f17a276,0x3f0e6639,0x3f0d34f8,0x3f004cd6,0x3eda6812,0x3f0f06b0,0x3eeffbdb, -0x3ebf0368,0x3e9a5b1c,0x3e69bb13,0x3e47c0e4,0x3e320992,0x3e125a08,0x3e071aec,0x3e04a318,0x3e15021e,0x3e23a105,0x3ddd56ec,0x3dfb5222,0x3df99217,0x3e02b66c,0x3e225167,0x3e1fee64,0x3e504856,0x3e5054b1,0x3e8a1a9e,0x3e958258,0x3eb461d1,0x3ec0baa9,0x3ed57248,0x3eea3dbe,0x3ef3baf1, -0x3f0e78e0,0x3f254804,0x3f3d4898,0x3f5b7839,0x3f822c5d,0x3f6777a4,0x3f569ce7,0x3f3d98ca,0x3f2779fe,0x3f33e190,0x3f018947,0x3ee408f9,0x3e717419,0x3e539e11,0x3e03a139,0x3dc377f4,0x3db8270b,0x3d749ee6,0x3d6b5787,0x3d900056,0x3d7f7c7e,0x3d8cca93,0x3d7285fa,0x3d8d11d4,0x3d9829f5, -0x3dc76dff,0x3dd36ba0,0x3e0ec543,0x3e1ac334,0x3e6fb19e,0x3e71eb26,0x3eab6bd9,0x3ebc70e2,0x3ed800c2,0x3ef37a89,0x3f14fe08,0x3f2cb317,0x3f53a918,0x3f837178,0x3f973599,0x3fbd1579,0x3fa87cc1,0x3f9851a1,0x3f839383,0x3f4de32b,0x3f7f5ef4,0x3f3627bc,0x3efa3f4f,0x3e90dbec,0x3e25a518, -0x3df7b942,0x3daec4b8,0x3d54fc5a,0x3d1d57bb,0x3d15257d,0x3d3ca9a7,0x3d2b2aa2,0x3d1957df,0x3d0677e2,0x3d19a2ee,0x3d346dd9,0x3d82cb36,0x3da53771,0x3e13d32c,0x3e2319c6,0x3e554301,0x3e8fadfd,0x3ec4aa72,0x3ee1be12,0x3f0fd482,0x3f1ee507,0x3f37ff06,0x3f6386ec,0x3f8d0e92,0x3fb64cb5, -0x3fdb9020,0x4007e4f0,0x3ff57cb9,0x3fd9151e,0x3fb7d0b0,0x3f96ae47,0x3fe0a2b6,0x400cc745,0x3f94a874,0x3efbbf60,0x3ebd69e0,0x3e5bf9c1,0x3e47f41a,0x3de33501,0x3d9bc71c,0x3d5a2fff,0x3d60c034,0x3d5f27ab,0x3d5847ee,0x3d24db4a,0x3d429dc4,0x3d707681,0x3db73193,0x3de4a7d4,0x3e3b1f28, -0x3e7c80b7,0x3ee2a587,0x3f1f890f,0x3f8c3165,0x3fa93d21,0x3fbe0180,0x40107954,0x401f1d20,0x402a812d,0x4026b4cb,0x40243e32,0x401844ae,0x4012113d,0x400cd4bc,0x4016ec97,0x4012f6eb,0x4017862e,0x405db060,0x3fa000a7,0x3ff2b323,0x3f069d75,0x3ed10320,0x3e4d2942,0x3e118260,0x3ddae50e, -0x3d991f3b,0x3d81edde,0x3d907ced,0x3d72b84f,0x3d4b29de,0x3d27d38c,0x3d4350c8,0x3d7fd87e,0x3dd4ce1b,0x3e1c92bb,0x3e89022a,0x3e9660a3,0x3ef46e91,0x3f1c0163,0x3f720f19,0x3fb25100,0x3fe8f2d5,0x4018d9e9,0x402173bf,0x40310fe8,0x4039bbd4,0x40373075,0x40354619,0x4030f6d9,0x4026a44f, -0x4028ce1d,0x40553b2a,0x404a8a6c,0x408b7cea,0x3fe27817,0x3f97c7a0,0x3f0efd5e,0x3f040a40,0x3e701b3f,0x3e2884a4,0x3deb949e,0x3daab425,0x3da1f6ab,0x3df5478d,0x3d9dc66c,0x3d90bc8f,0x3d9bccbd,0x3d9a6917,0x3dbface0,0x3e220a30,0x3e4775ff,0x3e88e171,0x3eadf860,0x3efe96a3,0x3f297f16, -0x3f85b55d,0x3fb2b86e,0x3feb0b40,0x4018464b,0x40282099,0x402dad3c,0x4042a9ac,0x403423c3,0x402f0718,0x40362d2c,0x4019be26,0x402a65f6,0x407588e6,0x4066701a,0x407d1800,0x403a95e7,0x3fb0b39b,0x3f35605f,0x3edf763a,0x3e672ba5,0x3e271031,0x3de05d46,0x3daf5cde,0x3dbc7674,0x3e4bb29b, -0x3dbf49e1,0x3da15a10,0x3dcb2279,0x3dc13463,0x3df2ae3b,0x3e514fd7,0x3e3b7498,0x3e8b2638,0x3ead3baa,0x3f0375f3,0x3f24075d,0x3f7d2468,0x3fae9bae,0x3fe9441e,0x4004ddf2,0x40289f79,0x402f73ca,0x40400eab,0x40302439,0x40293551,0x402b3e7f,0x400e4e42,0x40147aa0,0x404a1de3,0x40586a21, -0x40235c57,0x400907c0,0x3f9d26b4,0x3ed8f846,0x3ebcd2d7,0x3e435c93,0x3e211604,0x3de5707a,0x3dd0116e,0x3dd24429,0x3e79c6ba,0x3dc3ae28,0x3da1dc49,0x3dc616ec,0x3ddd0fdd,0x3e0ecc87,0x3e3a2890,0x3e6c1e67,0x3e904c62,0x3ec96ae7,0x3ef1dfd7,0x3f151c2a,0x3f3e5766,0x3f800db3,0x3fb03fa5, -0x3fe6a8e2,0x4005d4f1,0x401634d2,0x4015fd26,0x40209d7c,0x4025ea23,0x401dc5b5,0x400b77d5,0x3fe8504f,0x400c06bf,0x400185c0,0x3fef6ab0,0x3fad81fe,0x3f8ef2d6,0x3f12d098,0x3ead6e87,0x3e5b526f,0x3e5b6232,0x3e350a5d,0x3e05eeef,0x3dfaad04,0x3e236739,0x3de22dad,0x3dd77d04,0x3dcdbc50, -0x3e12e473,0x3e21e253,0x3e58129e,0x3e8b53be,0x3eb1d269,0x3ecb8167,0x3f0edc68,0x3f0a93c2,0x3f240aa1,0x3f501b65,0x3f83c1df,0x3fac6945,0x3fe09df7,0x3ff4b6de,0x40095dc7,0x3ffee3e7,0x3fef924f,0x40058eaf,0x3feee39d,0x3fee57ca,0x3ffc9203,0x3fe7be2a,0x3fa19cf1,0x3f8c8af1,0x3f3ea2bd, -0x3ef763cf,0x3eac7118,0x3e8c7eb5,0x3e3881fd,0x3e18b3c4,0x3e126771,0x3e3b3f5c,0x3e2644ea,0x3e009442,0x3de34859,0x3e019dbc,0x3e10c470,0x3e4a98b3,0x3e7988eb,0x3ea2ae8c,0x3ee29cc9,0x3ef918f3,0x3f1507d1,0x3f03d84f,0x3f1cf3ab,0x3f2b3348,0x3f595236,0x3f7d165a,0x3f8edf1b,0x3fac7043, -0x3fc30511,0x3fca5802,0x3fd82bf0,0x3fd45ba9,0x3fd5f20c,0x3fc9fa4e,0x3fbac7ab,0x3fb55d5a,0x3f96132a,0x3f5b3c1a,0x3f3ac13e,0x3f01787c,0x3ec64052,0x3e9c5468,0x3e7ae873,0x3e2e7911,0x3e4d21d5,0x3e2e4336,0x3e362453,0x3e271008,0x3e498b96,0x3e308ef5,0x3e492e65,0x3e55f8df,0x3e9b5e3a, -0x3ea85b8c,0x3ed7b73f,0x3ee31fd9,0x3f19aa19,0x3ef809a4,0x3f18f8f0,0x3f223d6e,0x3f3de007,0x3f56566e,0x3f733435,0x3f843e4a,0x3f92795e,0x3f9feee1,0x3fa5290b,0x3fb08887,0x3fb16846,0x3fac1e93,0x3fabb70b,0x3f8f7e63,0x3f5e91cd,0x3f4fc2c5,0x3f391f58,0x3f09c251,0x3eff57e9,0x3eda9065, -0x3eacf317,0x3e791b2c,0x3e6f8113,0x3e6f1159,0x3e8fa479,0x3eb4597e,0x3e64dc9b,0x3e9404bf,0x3ea0adfc,0x3ea56099,0x3ea90116,0x3ec2b862,0x3ef9c7fa,0x3f0879e5,0x3f0e2dbd,0x3f108527,0x3f1bf2c5,0x3f24c1a7,0x3f3837e0,0x3f47682a,0x3f54cc6c,0x3f68bd89,0x3f7f0a3f,0x3f80fc93,0x3f8b776c, -0x3f96e1ed,0x3f899443,0x3f8956a7,0x3f8d0c2c,0x3f6f146a,0x3f364c55,0x3f53a2a1,0x3f5abb6e,0x3f195488,0x3f12aaa0,0x3f1e0f29,0x3f25b15b,0x3ef39d74,0x3f0a6d78,0x3f02abbd,0x3efac2c7,0x3ef83829,0x3eef8e52,0x3ee13bb5,0x3ef9c4b3,0x3f068f14,0x3f154bba,0x3f17800c,0x3f2faea9,0x3f293420, -0x3f1a51a1,0x3f32c5f9,0x3f354f01,0x3f429d50,0x3f414329,0x3f3a783e,0x3f5d3a3d,0x3f53ce77,0x3f5fd88f,0x3f770854,0x3f5eee60,0x3f77a89c,0x3f76d21b,0x3f3c102e,0x3f41322c,0x3f534cd3,0x3efcd701,0x3f0f08a6,0x3f06431d,0x3f10f4e5,0x3f281905,0x3ef1b0c9,0x3ef22e4f,0x3f2d216e,0x3f3d832f, -0x3f1fe44f,0x3f0f9c9b,0x3f174607,0x3f2c3d74,0x3f2e1f8e,0x3eee0c1b,0x3ef75db0,0x3f1871af,0x3ef9f41e,0x3f026d59,0x3f01d155,0x3ee579b8,0x3ef283fb,0x3ef2c006,0x3ef97a59,0x3efae6ca,0x3ef466e4,0x3f01e718,0x3efcba7b,0x3f044f29,0x3f07a9a5,0x3f061491,0x3f0e3c89,0x3f0c3286,0x3f04bcb7, -0x3f09df7b,0x3f08e4d6,0x3f98a740,0x39cd45eb,0x3917803e,0x39130df8,0x39310a63,0x3939f6e7,0x397da007,0x3914153c,0x390cd551,0x391e0f86,0x39291cee,0x393b5e0f,0x394f9ef8,0x393a7dbe,0x392f639f,0x3913bb84,0x391b4b26,0x39301e7d,0x3961cfe9,0x3966e043,0x3961158e,0x395657a1,0x3948552d, -0x3938ede9,0x3929b598,0x3933b65b,0x39239194,0x390c378d,0x38d69dd2,0x38c299a3,0x38b193cb,0x38fa1fd6,0x39082ef8,0x39016c8c,0x391daf05,0x3916e783,0x38e7a61c,0x390e4b8d,0x3977ad7b,0x395aec05,0x399c083e,0x39c32226,0x3a477370,0x3979034a,0x3952adc9,0x398f91dc,0x398dafec,0x39cbde20, -0x39f4969e,0x39d54cef,0x39b63283,0x395fd9bb,0x396450fa,0x39b2cb5f,0x3a0be638,0x3a0f06d5,0x3a158c4a,0x3a0669c4,0x39dd5bd8,0x39c14d68,0x39ab153d,0x399403ec,0x3968b020,0x3995019b,0x38cb2465,0x38b26927,0x3917c2fe,0x394444a5,0x397ad9d9,0x394b45b1,0x39d18d5f,0x39e6d5c4,0x39625934, -0x3983126b,0x398b66ff,0x39a2afe7,0x39c900fd,0x3a021bb6,0x3aaeac95,0x398bf215,0x394d1984,0x3996f74c,0x39c882c3,0x3a1030e9,0x3a4b4dd2,0x3a2e1e55,0x3a025808,0x398268cc,0x399d9010,0x39f8f978,0x3a887376,0x3a8566ac,0x3a838d3e,0x3a6b8428,0x3a2e2863,0x3a0721cf,0x39d80d00,0x39e3a407, -0x39ad5814,0x39ff3736,0x39986b46,0x39742210,0x39beca4f,0x39497008,0x3983f844,0x3902babe,0x39e5b336,0x39c2e625,0x39493983,0x398795f7,0x3a01e444,0x3a499be1,0x3a32cf30,0x3a64c427,0x3b3b3213,0x39e0d31a,0x39ef27d4,0x39e8869a,0x3a5afec8,0x3a956db7,0x3ac6fe44,0x3a9b307d,0x3a5b552f, -0x39d89bc5,0x39f2522d,0x3a783d64,0x3ae9c016,0x3affa171,0x3aec4efe,0x3ac4e248,0x3a9237b6,0x3a4cf999,0x3a1b4f65,0x3a3d7c3e,0x3a39dff3,0x3ab6f4fb,0x3a843d42,0x3a9eae56,0x3ada7e31,0x39aec790,0x39c67dc0,0x3962cc3e,0x3a8f8f4f,0x3a9b6623,0x39e9cb6b,0x39f4e76f,0x3a244020,0x3a4da08d, -0x3a6bdde2,0x3a9e01d2,0x3b6635bb,0x3a0fd697,0x3a31a9db,0x3a12dc38,0x3a8b2ee3,0x3ab21845,0x3b00932c,0x3aceeef6,0x3a806805,0x3a109e62,0x3a6e5ad4,0x3ad3218f,0x3b30306e,0x3b21674f,0x3b21329e,0x3b0a4140,0x3abab16c,0x3a7647e5,0x3a514f8e,0x3a573062,0x3a56499f,0x3ac2409c,0x3aeb22a1, -0x3af9c26a,0x3af681c6,0x3a21a31f,0x39e3a645,0x39424c5c,0x3a7925e6,0x3a493e46,0x3a20a665,0x39eae390,0x3aa6ffe3,0x3b385424,0x3c135ea0,0x3be81e02,0x3b9b6003,0x3ad8c095,0x3b533d8f,0x3b0ec1a7,0x3b2efd15,0x3af186a6,0x3b0d5f90,0x39f455c9,0x3a04f1f7,0x3a99b579,0x3a9a595c,0x3aa37c69, -0x3b41e7cf,0x3b2c8fd6,0x3b140f17,0x3a94b0f5,0x3a6046ec,0x3a1c86e6,0x3a3e8e31,0x3a3ba61d,0x3a1e3bfa,0x3b0f1d78,0x3b635612,0x3b6e88af,0x3b9309ff,0x3b32d0e4,0x3b49430a,0x3af606f0,0x3b52f605,0x3bb7d042,0x3c1fb1b2,0x3b6f4e88,0x3afd551e,0x3c3e554a,0x3c2ad09f,0x3bde95dc,0x3b696f86, -0x3ad99e24,0x3b000712,0x3a7051d4,0x39d6f239,0x39d21e00,0x3a8d4397,0x3a826eda,0x3a4e9ba8,0x39f75d9d,0x3a3e7c84,0x3a7efe57,0x3a480e12,0x3a466acc,0x3a713c97,0x3a7dc80d,0x3a3158ed,0x3a193972,0x3a28b7e0,0x3a862622,0x3a4037d5,0x3a47327a,0x3a4bb5ce,0x3a6d0e1e,0x3aabad31,0x3a93d435, -0x3a7c32e0,0x3b55ec23,0x3b60ebdd,0x3bd753ef,0x3bf638d0,0x3ad150d8,0x3b172c9b,0x3bbe00ef,0x3a6a38dd,0x39e182eb,0x3b01bd3d,0x3ac703e7,0x3a92f608,0x3a3332e7,0x39d9dc00,0x39453bcc,0x3983abb0,0x3981c79e,0x39a4ae66,0x39a999a5,0x39a896b1,0x39fa740a,0x3a153d16,0x397ad4e8,0x39a92ca8, -0x3a8ddbc8,0x3a2655e1,0x3a2f4616,0x39e10124,0x3a0e74a9,0x3a2b3a35,0x3a19cd43,0x39fcb50b,0x3a016f91,0x3a9d17b7,0x3b0f245a,0x3b2c9b1b,0x3b79bb37,0x3a307f0c,0x3ae977aa,0x3abf8874,0x3b2f8a8c,0x3b4d8050,0x3b640248,0x3b2db2f7,0x3b260436,0x3b85ae55,0x3ad3a509,0x3a849d83,0x3a9cb3b2, -0x3a380a6e,0x39b5dff2,0x38d0cb67,0x3890575e,0x39120ea7,0x39330382,0x38f3bcf9,0x3993440c,0x39bf7efa,0x39174188,0x399df3ad,0x3a9e2c53,0x3a31ba2d,0x3a477f94,0x3a01cace,0x3a2c2f29,0x3a2d30d5,0x3a3952b2,0x3a2f0279,0x3a32a777,0x3a3b2652,0x3a905db4,0x3aa4e072,0x3b2d61da,0x3aba4353, -0x3b11de78,0x3b18b7c3,0x3b2eb576,0x3c82a692,0x3c1c34f3,0x3c12b766,0x3bb747a5,0x3b57a5d1,0x3ac32eb6,0x3a582c9f,0x3a0e1b05,0x3948152f,0x395277c5,0x391d8a73,0x38bea637,0x38b79855,0x3993db67,0x39c0c896,0x3a0ce8ee,0x3a0eae09,0x3a04fb45,0x3a0011db,0x3a5fbee7,0x3a2aac47,0x3a33526a, -0x3a2ed7ca,0x3a345c92,0x3a49c203,0x3a5193b7,0x3a90535d,0x3aa828bc,0x3b143d8e,0x3aff3330,0x3b2e5f9d,0x3b7894d3,0x3b97e279,0x3bdbddcd,0x3c1c427f,0x3c837e69,0x3cbed78c,0x3cf79179,0x3c9751fb,0x3c91a46e,0x3c1899e6,0x3c35f020,0x3c0ecec7,0x3b3aa959,0x3abb53c9,0x3a9ad134,0x39bbf6d4, -0x39877e20,0x39857adc,0x39ceae1f,0x39310d51,0x393b8f89,0x39bf7267,0x3962a139,0x397b561d,0x39cbce34,0x39c169ba,0x3a017d55,0x39dff8c6,0x3a07f281,0x3a058479,0x3a4c2947,0x3a8d71e7,0x3ab31f8f,0x3ac1c98b,0x3b26b15d,0x3b2de356,0x3bc4a2a7,0x3bfa023a,0x3bd10835,0x3c201b4a,0x3c628620, -0x3c1b50ee,0x3c250931,0x3c2f4b47,0x3c1e2032,0x3c107b32,0x3bee498f,0x3bd1067e,0x3bdac888,0x3bb3f595,0x3b89a71e,0x3b26088c,0x3b11fe04,0x3ac16f60,0x3a918181,0x3a1598ea,0x399c06b7,0x39b307e3,0x39a44c03,0x39c1895f,0x398731f7,0x3a48e395,0x3aa82502,0x3ae8c14b,0x3b0e8159,0x3b3189f0, -0x3b2eabfb,0x3b78814b,0x3b8a53a9,0x3b71a95e,0x3b898351,0x3b8e0ae7,0x3bcaddf8,0x3be4851f,0x3bed2efb,0x3bddc86d,0x3bd34d25,0x3c21158f,0x3c2295bf,0x3c20b06b,0x3c13f02e,0x3c05880e,0x3bd63c57,0x3be04dda,0x3bcdb4e2,0x3bacfe80,0x3b8c38f3,0x3b66b5ba,0x3b316522,0x3b0c8c36,0x3ad16c63, -0x3a6798c0,0x39f3056e,0x39aba8bc,0x3962b860,0x39862681,0x39b1e8bd,0x3a2ab86d,0x3a63f797,0x3aa7f622,0x3ab86e7e,0x3ad54924,0x3aebef56,0x3b0b6489,0x3b1604aa,0x3b5fb54f,0x3b40c40e,0x3b7faf52,0x3bc250ae,0x3be22dc8,0x3c0406c9,0x3c281414,0x3c1ce53e,0x3bba1955,0x3bc1e9da,0x3bb4e2bd, -0x3bac6792,0x3bbc8648,0x3bb0ce1c,0x3ba19897,0x3b96549d,0x3b83c1d6,0x3b6a2d08,0x3b65e98d,0x3b24fbd7,0x3b05ccb2,0x3ace32f8,0x3a9ffca9,0x3a6815cf,0x3a2f6afa,0x39def556,0x3a1b5723,0x3a02a3dd,0x3a409d93,0x3a6cb581,0x3ab3a948,0x3af622f6,0x3b293e51,0x3b57d32c,0x3b6af9a2,0x3b952a9a, -0x3ba1eb72,0x3bb605f6,0x3befdbfe,0x3c1b4f09,0x3c0579d1,0x3bf1b939,0x3bffee45,0x3bc31c5d,0x3b98dec5,0x3ba14c21,0x3bae27db,0x3ba437f7,0x3b94aae9,0x3b9f3e41,0x3b9685d4,0x3b9b0801,0x3b8e2ca8,0x3b74248e,0x3b58a94b,0x3b39ccbe,0x3b249b19,0x3b18baf2,0x3af3af4f,0x3ace8cf6,0x3ad2c38b, -0x3aad223e,0x3aa55109,0x3a9a2a3a,0x3ab51629,0x3b01a8c9,0x3b1e0e74,0x3b3ae721,0x3b4a1e82,0x3b4f3027,0x3b77fefe,0x3b6af800,0x3b742d88,0x3b85ef6e,0x3b4fb401,0x3b722b05,0x3b7b9331,0x3b409ff0,0x3b684ad2,0x3b954ca9,0x3b24ec83,0x3b264bfb,0x3b283413,0x3b253f66,0x3b2a4d24,0x3b209292, -0x3b215be0,0x3b2b2844,0x3b213571,0x3b1d6a16,0x3b1b4f3a,0x3b1979bf,0x3b190e00,0x3b168a22,0x3b06956b,0x3b0067f2,0x3b0c75da,0x3aff9585,0x3aeb86c0,0x3ae1375b,0x3aecf972,0x3af69215,0x3af9cc3a,0x3b044fd7,0x3b0963e2,0x3b0cd5a0,0x3b201ec2,0x3b1e728d,0x3b319ecb,0x3b40e049,0x3b467174, -0x3b63e3aa,0x3b59df5c,0x3b412721,0x3b40e383,0x3b334df9,0x3bd5f9eb,0x379aa9ea,0x3721fb74,0x3710cd08,0x36fcccf2,0x36cf7ec9,0x3717e93c,0x368fea47,0x365b1cd8,0x369c189b,0x361bf97a,0x36526360,0x368c8ea9,0x36b6b5a2,0x36d33de1,0x365c3258,0x370f3d74,0x3730838d,0x370bf883,0x36e38137, -0x36ead7ec,0x36f4ac39,0x37149ceb,0x3741c74d,0x3789d80c,0x37c8e9ab,0x37c9829c,0x379cc5b7,0x374a1fc9,0x3703464b,0x370f0a59,0x37124ae5,0x370d5629,0x36a0165e,0x36fb9993,0x371507d7,0x376767cb,0x371dabd3,0x379626f0,0x36c135bb,0x36b1b5ee,0x372003f1,0x381ef550,0x36c293b0,0x3697c8a5, -0x37d8c0a6,0x37f91ada,0x381b0158,0x3824130e,0x37e03e36,0x37aeedae,0x37391bcd,0x38169302,0x38234e0b,0x379c56f5,0x376711ba,0x37630de4,0x378a8e63,0x37792769,0x37c13d7a,0x387df791,0x3895c1fa,0x38a366f5,0x38bd6d40,0x3821e427,0x381a7ca6,0x388349f5,0x381a8351,0x37b09c74,0x36c8d314, -0x38029ed2,0x38635279,0x38aa79b8,0x383168a7,0x3864b6be,0x37c7a744,0x3707c02f,0x36e486f6,0x38a0bbc0,0x37433714,0x37d701b4,0x38be2720,0x38b31d84,0x3901b47e,0x39135cd9,0x38476e94,0x38218d51,0x3820d4d8,0x384a8875,0x387cfb85,0x38050077,0x379f96a9,0x37e9ea8e,0x38522c32,0x3845bebe, -0x389c676b,0x392fc391,0x3986c750,0x398b2e1e,0x39778468,0x38d1f9a3,0x383dd4eb,0x38de223c,0x38365fc5,0x38198f41,0x37808186,0x3884d6f4,0x38b6c5cb,0x391a5798,0x389d12e5,0x388a2163,0x3790953f,0x376131b3,0x38052420,0x39520a80,0x3783f4e8,0x387abd25,0x39845253,0x39cc9d17,0x3a08b241, -0x39cb5200,0x393cf76b,0x38ba9816,0x38ec2027,0x38f453f9,0x391f9da3,0x388da51e,0x381fe4bd,0x38739623,0x38ed22db,0x38ae3f71,0x38e06cab,0x39a4dc97,0x3a034239,0x3a1e6f24,0x3a0cbb44,0x394f5d1f,0x392d5a7d,0x39d9282f,0x390b1ea3,0x38a1bfde,0x38cb74e4,0x397a1b60,0x39bb6c76,0x39ecd07d, -0x396394ad,0x3967f52d,0x388d2d9c,0x37d2d4e8,0x37e5c933,0x39897782,0x38ac5126,0x3944afc7,0x396c97fc,0x399c769c,0x39b92f14,0x391ca86a,0x388c4274,0x38a12389,0x38a9a643,0x38ce793f,0x39136c2a,0x38e8831c,0x382ce1ee,0x38feabd7,0x395cec61,0x396891fe,0x399911a2,0x3a2a2a89,0x3a7c7fc8, -0x3a86f7a1,0x3a68b59c,0x39caeb14,0x38e09308,0x39a22a09,0x38f3767d,0x38c02b85,0x389a3d59,0x3992479d,0x39c24955,0x39fbefee,0x398dc607,0x3ad66a04,0x3a7c4b97,0x3a604fe4,0x3a047cea,0x39855d2c,0x3a1274c3,0x3a26fe0e,0x3a137f7d,0x39a3f4b3,0x37d60a93,0x37322bdb,0x393efd72,0x38f972ff, -0x3922b22d,0x3905cec4,0x39891d34,0x3a1b5f57,0x3a24fb80,0x3a7c970a,0x3aa0455e,0x3ac3e683,0x3a88e6cb,0x3a9dd6eb,0x3ab2b3fa,0x3a9310fe,0x3b0c3b44,0x3aa471c9,0x3aa99351,0x3ad80272,0x3a2713fa,0x395b2562,0x39be03fe,0x39d252d3,0x3a482002,0x3ab7ae9b,0x3af388d8,0x39ae25da,0x3a6442d9, -0x3acef79b,0x3a290b41,0x3a4777f2,0x3a94ba34,0x3a9a745e,0x397cb96f,0x38c88bc1,0x378c9da0,0x38384add,0x388d651a,0x3852be67,0x383e2032,0x37265f4b,0x379b3d11,0x3827a5dd,0x385cb308,0x38b77ac4,0x3985ee25,0x392af99e,0x399b9eba,0x39a869dd,0x3a10139e,0x3a0757f7,0x3a96cf25,0x3a92bb26, -0x3a3ead04,0x3ad10165,0x3972e847,0x39a35863,0x3a1593de,0x3ad549be,0x3ae8fb6c,0x3aa71ee2,0x39c847fb,0x3a964d7d,0x3b99271f,0x3b15a88f,0x3a2f168e,0x39d933bc,0x39821c6d,0x39c33131,0x38befd9b,0x3715bddc,0x368ffca6,0x3541bfa7,0x368c8f88,0x3700835a,0x383754bb,0x380784cb,0x37856de7, -0x381f2caa,0x37eda936,0x387e0190,0x385432dc,0x37bd7563,0x38034d1c,0x38509329,0x386cc19b,0x38b701b2,0x3923d1cb,0x38bff7e5,0x38c8bb10,0x3938c425,0x39c8b12a,0x39f7a19a,0x3a0f668d,0x39821ce1,0x39c596ea,0x3a768afc,0x39f25b8c,0x39ea09f2,0x3b418956,0x3a9cd66e,0x3a117542,0x3a14dffc, -0x3841f342,0x3806a8dd,0x38baae7a,0x384036f7,0x37a96ae4,0x34a5ea51,0x361e9ce7,0x35899f60,0x37d9f848,0x37344acd,0x377ad5a3,0x36c03ab9,0x378ed5e6,0x381f16c5,0x38583ded,0x36b0c4bd,0x37add3fa,0x3849da47,0x39160d71,0x391777e5,0x39b9ee94,0x3950cc7c,0x38f6529e,0x3a31cdc0,0x3a456083, -0x3a7ad81c,0x3ac2780c,0x3a2dabd9,0x3a5a5e2c,0x3a933a83,0x397874f0,0x3ade13e9,0x3bc25fc3,0x3b32d9db,0x3af29db0,0x3a62450a,0x389e0a1c,0x38afb47a,0x38d27fcc,0x37b327fc,0x36b157c3,0x36953976,0x37097951,0x36002e84,0x372c4f20,0x35ddffd9,0x37b5ca46,0x3908f367,0x38f31dfc,0x39216b4b, -0x39418534,0x39050726,0x390edca1,0x392746f2,0x3965b6ba,0x39ad1f29,0x39cca4c6,0x399faecd,0x39105723,0x39dc81a9,0x39dd2579,0x39caeffe,0x3a457275,0x3a21fc18,0x3a8456ac,0x3a52bd2f,0x3a347be0,0x3a9478e6,0x3af082d4,0x3aeb0311,0x3ab1acd6,0x392761d5,0x3831af55,0x37373ecf,0x37cfd8c8, -0x374e93ea,0x37facc6e,0x37871f2b,0x37be54f4,0x36b571e4,0x36bec06e,0x3833ff53,0x38eb46bb,0x39753b97,0x39bfdd6a,0x39d35b18,0x39c2f16d,0x3984177f,0x393cb48b,0x38b30a46,0x38552f43,0x3903d5fd,0x398c5b81,0x39ed6be8,0x3a26618d,0x3a719409,0x3a7f71a8,0x3a1d5e86,0x39bb873c,0x399a4f45, -0x38e51600,0x39a8845d,0x3a3a2afa,0x39d9a46f,0x3a0162e1,0x39de0efb,0x39a54c6f,0x39ad7c7c,0x397d7ad1,0x396243bb,0x3935bdb7,0x3925e672,0x3904578f,0x3883575a,0x3876039c,0x37ed65b9,0x380e328c,0x3846a418,0x38646f93,0x387ce26c,0x38c6cc14,0x38f86623,0x38c996a8,0x3845b50b,0x37a6421e, -0x37a6c19e,0x38a2209a,0x392e1653,0x39994ba0,0x39c351b6,0x39d2254b,0x39c01630,0x39d1d4ad,0x39d96fc4,0x3a01af74,0x39bac16c,0x399ef75b,0x399e26b2,0x39b7f5dc,0x38985d59,0x38d706a1,0x38570e14,0x383bccb7,0x38cc850f,0x38ef6cba,0x38f5c582,0x38cb80ee,0x38b2ed5d,0x38a8bf13,0x388a09a3, -0x38721ce0,0x38750ff6,0x38e184c6,0x38cbcd2d,0x38d867f4,0x38fc66a3,0x38da8537,0x38cf6296,0x38ba88af,0x3868e7e7,0x380efa6a,0x38018c9e,0x3733fe77,0x37a2b883,0x38563fa8,0x38d15c25,0x393d8105,0x399a3ae2,0x3971e9df,0x393448e7,0x3941003b,0x390eced8,0x39048771,0x38fc9140,0x38a933ea, -0x3936e752,0x394a34db,0x3968342b,0x3978637c,0x398d7af0,0x39647635,0x393807c9,0x392865e5,0x39351357,0x391e3c36,0x3958b08c,0x390779be,0x391eb20b,0x391b8f30,0x38f472e1,0x38f4a3b1,0x3911794f,0x38f02d1d,0x38d2f8b8,0x38ce4c47,0x38c6c987,0x38ae25c6,0x38ac3fcb,0x389ddd2f,0x38a47fdb, -0x38a548f2,0x38355d76,0x3816f20f,0x383527a3,0x382446c6,0x385dc50b,0x388ffddd,0x38b02616,0x38e450c7,0x38fc76d3,0x39117b1e,0x39511f31,0x39637218,0x398848f4,0x3982e732,0x3970cd69,0x3995aaba,0x399acc2a,0x39bc31a0,0x39934dab,0x397de27a,0x396c0975,0x39702b3b,0x396015f5,0x397b3a4a, -0x39562cdd,0x393235b7,0x392c13cc,0x392129f3,0x392809a7,0x3925de74,0x3906bdef,0x3902059a,0x38ddc224,0x38cbca4b,0x38a1f8b2,0x3874dd03,0x38a365f5,0x3886a74f,0x388f2051,0x38a6fbac,0x38951081,0x38b53e4b,0x38c50643,0x38d731c3,0x3914d8a5,0x393dd5d4,0x38539d66,0x38634476,0x3872a857, -0x3885ffe7,0x388f9748,0x388ea6c8,0x38858aa6,0x389875ea,0x38a2fb7f,0x38b4e638,0x38b996a0,0x38bcbaf9,0x38bfc6b0,0x38c158cc,0x38ab5e59,0x38b3b822,0x38bc5579,0x38b301f4,0x38af823d,0x38b8a150,0x38ae964c,0x38af95e2,0x38aadb76,0x38ae71d8,0x38aca7fd,0x38a03fdb,0x38a4bfd5,0x3894a48b, -0x38996613,0x3895e03d,0x3885b8ef,0x38859fd9,0x388139bd,0x3867273e,0x3866eb82,0x3858d700,0x39562ba3, +const uint32_t defaultHRIR_rom_ER32[HRTF_MODEL_N_SECTIONS * 470] = { +0x3ea94952,0x3e96b3de,0x3eac0098,0x3e9ec499,0x3ea82449,0x3ece0959,0x3e92fb80,0x3e94d96e,0x3ebb6806,0x3ebf2c5a,0x3eb94743,0x3ea8ba76,0x3eb7f274,0x3ebc8a4a,0x3eb985ae,0x3e8f3492,0x3e887542,0x3ecc104d,0x3e94f3ad,0x3e8d6ef0,0x3e919f3e,0x3e81a12c,0x3e8ba934,0x3e8f3162,0x3e92443b, +0x3e956946,0x3e9833cc,0x3e9c90fc,0x3ea16eac,0x3ea72c23,0x3eadda5d,0x3eb46de7,0x3ec12deb,0x3eb9255c,0x3eb43e2b,0x3eab26c8,0x3ea559b8,0x3edfbfe1,0x3edb5589,0x3ed8a3c0,0x3e95cf33,0x3e80cd54,0x3e62c244,0x3e577b07,0x3e3e0c11,0x3e4710c1,0x3e48be20,0x3e44185a,0x3e490da3,0x3e376856, +0x3e376849,0x3e2dea5f,0x3e35e973,0x3e540232,0x3e4af4c1,0x3e879a69,0x3e87aff5,0x3e8a2d54,0x3e97cb79,0x3ea557d0,0x3eade49b,0x3eb7d211,0x3ec1cfef,0x3ecf39a9,0x3ee19c3f,0x3ef97f9f,0x3f0b5d8f,0x3f1a80d7,0x3f2fcb9c,0x3f2733f1,0x3f1cdcf0,0x3f0c3d91,0x3f003aa6,0x3f1db3c8,0x3eeec08f, +0x3ebc39c9,0x3e8d7016,0x3e55103a,0x3e212045,0x3e041073,0x3de06a68,0x3dcaee14,0x3db21b35,0x3de025f2,0x3dc5b1d3,0x3dbf13a0,0x3db5a917,0x3dc48155,0x3dd212b5,0x3e000fef,0x3e0845c3,0x3e2d8de1,0x3e3dff7b,0x3e771d7b,0x3e8f28dc,0x3eb18a83,0x3ec5c3b9,0x3edf6074,0x3ef8fe68,0x3f0ea3c8, +0x3f24508d,0x3f4113cc,0x3f5fbffa,0x3f7fedc5,0x3f98e082,0x3f88af16,0x3f7a4b75,0x3f579368,0x3f32fd61,0x3f6ee325,0x3f16b6e8,0x3edb45ae,0x3e7b6fc1,0x3e2c28b1,0x3df2985a,0x3d99338c,0x3d410c60,0x3d1101d6,0x3d13217b,0x3d39c9bb,0x3d2bc320,0x3d1b0c6e,0x3d06a87e,0x3d1d1fa1,0x3d3f43c2, +0x3d8c5283,0x3d9d3131,0x3de71ae8,0x3e09a006,0x3e45cbd3,0x3e6f6616,0x3ea2888e,0x3eb75081,0x3ed6788c,0x3ef5eb98,0x3f11c219,0x3f36df6c,0x3f6f13d7,0x3f9d08c4,0x3fc621d4,0x3fff5b3d,0x3fe687d9,0x3fc87e03,0x3faebae2,0x3f87681d,0x40111ab0,0x3fb99833,0x3f83ae3b,0x3f0030e2,0x3e9f539f, +0x3e55721e,0x3e226067,0x3dd144c5,0x3d8753ba,0x3d4c95ee,0x3d509c62,0x3d4b16e2,0x3d44135e,0x3d1f6925,0x3d2ecedb,0x3d5b63db,0x3d9b2164,0x3de57bae,0x3e38e02a,0x3e71eafd,0x3ed98e76,0x3f1f30d1,0x3f83f206,0x3fa27000,0x3fd4af4a,0x400b63fa,0x401c4dc6,0x402843ac,0x40295bbd,0x402662f0, +0x401a91a2,0x4010244d,0x400f9138,0x4013dfb8,0x4024a4f4,0x400eaabc,0x4070f4c2,0x3fa0eb2b,0x3f92314b,0x3efc170f,0x3eb96b6b,0x3e548e04,0x3e044991,0x3de32f8d,0x3d9dd8bc,0x3d8fe1c4,0x3d98a21c,0x3d785e8f,0x3d586f0e,0x3d376712,0x3d508001,0x3d85da29,0x3df0440c,0x3e2a1c76,0x3e86773b, +0x3e9be714,0x3efdd2cc,0x3f220612,0x3f83331d,0x3fb70894,0x3fff58cf,0x40272268,0x4037365b,0x4040a7d2,0x4043fd16,0x403ebb9d,0x40398690,0x40340a76,0x40265f59,0x4030dc56,0x406a2bf7,0x4064d3b9,0x40a37d56,0x400ac9ff,0x3fc4d80f,0x3f0e722e,0x3f1757a1,0x3e8c749b,0x3e5d8653,0x3de8d03b, +0x3dacae87,0x3db0f0d2,0x3e1ec313,0x3dc14d08,0x3daadb0a,0x3dd34d53,0x3db22a32,0x3df43908,0x3e3f6e32,0x3e4b14e0,0x3e8e68fa,0x3ea199fe,0x3f0cf9b6,0x3f311aaf,0x3f90eee9,0x3fc1a8ba,0x3ffee1f8,0x401a6e0d,0x4034d8c9,0x40455a4c,0x404bd922,0x40376165,0x402dfd56,0x40339d70,0x401d0d70, +0x40247f69,0x4081affb,0x407dd802,0x404ebf41,0x401378ae,0x3f988ed0,0x3f1184de,0x3ea141ae,0x3e58b307,0x3e062161,0x3ddfec30,0x3db8240d,0x3dd4d9d7,0x3e720891,0x3dbd5abc,0x3d9b1014,0x3dbdc353,0x3dd6b6d2,0x3e061032,0x3e440faf,0x3e5b3220,0x3e91b85b,0x3ea84532,0x3efb9aae,0x3f1008f7, +0x3f45dab1,0x3f8d3b93,0x3fbf316d,0x3feb48ba,0x401009c7,0x401d29ec,0x4020228b,0x4028ec93,0x4025c7cb,0x402635bf,0x400889ee,0x3ff8f714,0x4013efc7,0x4007409c,0x3fd0e908,0x3fc45007,0x3f813935,0x3f104b59,0x3ebbaaf3,0x3e6e18ce,0x3e2eabae,0x3e1d3709,0x3e0117b9,0x3df34882,0x3e22e52a, +0x3dd86c83,0x3dc72027,0x3dd41b7e,0x3e02d26b,0x3e27dd72,0x3e486285,0x3e7bf17f,0x3ec497eb,0x3edcde42,0x3f060b23,0x3f0d4e99,0x3f27189c,0x3f468167,0x3f83b8f5,0x3fb1cc02,0x3fd81858,0x3ff4ea13,0x4005176b,0x3ffea363,0x3ff8a889,0x40042bf8,0x3fed6e4e,0x3fea6a40,0x3fed65d2,0x3fe9b038, +0x3f98c734,0x3f7ead0b,0x3f434b58,0x3f002103,0x3ea802a5,0x3e8c1097,0x3e440883,0x3e17bddd,0x3e14ca6c,0x3e16c2c1,0x3e105658,0x3e084b9c,0x3dfc6b42,0x3e00527a,0x3e17818d,0x3e49bd0a,0x3e878869,0x3e997e8a,0x3ec503c5,0x3edfc4dc,0x3f0b5b15,0x3f08001a,0x3f104318,0x3f28879c,0x3f46b041, +0x3f6481b6,0x3f85b333,0x3f9b7624,0x3fb24b60,0x3fbe64ca,0x3fc488dd,0x3fc68498,0x3fc7b7f6,0x3fc24730,0x3fb1653c,0x3fa7d227,0x3f75c923,0x3f4dd03e,0x3f266662,0x3f064de3,0x3edc4ef3,0x3ea5812e,0x3e89474e,0x3e4b5b92,0x3e699005,0x3e3960aa,0x3e6cda0a,0x3e55d9a7,0x3e63f68d,0x3e572ff0, +0x3e7fe216,0x3e860046,0x3ea01815,0x3eb274be,0x3ed8c43d,0x3eeec9ab,0x3f1028c9,0x3f0e2013,0x3f1ca75c,0x3f2c6cf0,0x3f408ee7,0x3f55b64e,0x3f6aa2f5,0x3f800495,0x3f8dc2cd,0x3f91e6bf,0x3f99a696,0x3fa5cbee,0x3f9ea220,0x3f9b71e3,0x3f9d2c75,0x3f87c29c,0x3f3d50ab,0x3f48b831,0x3f52e198, +0x3f194a00,0x3f0a2718,0x3efc51bf,0x3eed3028,0x3ed0b5f6,0x3ee906fa,0x3eef02fb,0x3ed83025,0x3eea4bb2,0x3ed604ee,0x3ed3c857,0x3ec7b905,0x3ed8510e,0x3eed0ac2,0x3ee33cfe,0x3f1ca039,0x3f17b3c1,0x3f168da9,0x3f206c5d,0x3f2889ed,0x3f31863b,0x3f3d7b3f,0x3f48af5b,0x3f51025a,0x3f594208, +0x3f625c84,0x3f6a4abc,0x3f70ad48,0x3f7c7153,0x3f6a88f3,0x3f5cf60b,0x3f51b8bc,0x3f484f7b,0x3f23d3cf,0x3f3fc3ea,0x3f2f0ec0,0x3f3ab4a3,0x3f71ee8e,0x3f296937,0x3f294405,0x3f5b5c34,0x3f649c54,0x3f5fdb34,0x3f4abe09,0x3f5e78ff,0x3f6544d9,0x3f5ed998,0x3f247814,0x3f1c793a,0x3f7adfa2, +0x3f2e67ef,0x3f225526,0x3f2e8d0a,0x3f15b342,0x3f1fdc38,0x3f212f5a,0x3f23f893,0x3f25d228,0x3f27fa0c,0x3f29e19c,0x3f2c42c1,0x3f2f0299,0x3f326c20,0x3f35aa75,0x3f3b7c95,0x3f363c76,0x3f33c6c4,0x3f2f2f84,0x3f2f545a,0x3f4e103a,0x3981d983,0x394cb64d,0x39305111,0x394eed56,0x396b5a84, +0x39bdc9ae,0x394ff124,0x3944acc5,0x39602b8e,0x396c84b7,0x397f2b72,0x3996ad53,0x398a7bda,0x398087d5,0x393e7438,0x395155b7,0x39671586,0x39a32141,0x399ec789,0x39a14c76,0x3999b19e,0x398a10c8,0x397efcb4,0x397085a7,0x396c42fc,0x39549e75,0x39483ed7,0x38fb38ce,0x38d86761,0x38e0c350, +0x3927a8e4,0x39482d3d,0x39369036,0x3981cbec,0x3985347a,0x3938ac93,0x395a4256,0x396bcebd,0x39714884,0x39b93a3a,0x39f2b45a,0x3a65db16,0x397e314e,0x392b7613,0x3977f351,0x399ad1c2,0x39d1502e,0x3a059538,0x39eeda0b,0x39bcc267,0x39570f8b,0x3981c7da,0x39b9b658,0x3a23ef16,0x3a2e5494, +0x3a318aa2,0x3a1c0487,0x39ff7ddc,0x39d280a4,0x39b38b3f,0x39b9046c,0x399094e0,0x398ee61c,0x38f50049,0x38d2f0fe,0x392f8a4b,0x393344e8,0x39761aed,0x3925501b,0x39b5792b,0x39a78bf5,0x3914396f,0x394b89ce,0x39c149f3,0x3a04ab01,0x39e1d8f0,0x3a024208,0x3ae46bc5,0x399faa6b,0x398e61d8, +0x39c29123,0x3a0b427c,0x3a4506ce,0x3a8f1fce,0x3a62257c,0x3a2eab94,0x399cbbbe,0x39a4370d,0x3a23985a,0x3aaab07d,0x3ab423fc,0x3aad873f,0x3a8ffe15,0x3a56d208,0x3a1c5afe,0x39ed397b,0x3a092715,0x39e61ec8,0x3a4f06c0,0x39fb63b8,0x3a04ccef,0x3a3be531,0x39690103,0x39a30de0,0x3915398e, +0x3a37d817,0x3a45e380,0x39983d28,0x39db449b,0x3a0d5983,0x3a425ce1,0x3a9856c9,0x3aff268f,0x3b91273b,0x3a318d59,0x3a6b32e1,0x3a154c58,0x3a977867,0x3ac8c67e,0x3b0d850d,0x3add282b,0x3a8ded7e,0x3a1d3810,0x3a5d9da6,0x3ac62dce,0x3b37997c,0x3b29bd95,0x3b2766f5,0x3b0ce320,0x3ad1f13b, +0x3a8de1b9,0x3a6194d4,0x3a8f2288,0x3a92e7d3,0x3b064730,0x3b151b91,0x3b27bb9a,0x3b33d518,0x3a2cc123,0x39ca126b,0x39a222bc,0x3a912b8e,0x3a8b93af,0x3a2d53f4,0x39aa33b7,0x3ab65196,0x3b0e87a1,0x3bfc207e,0x3bc1ff30,0x3b5c59f0,0x3aac8796,0x3b3b14b2,0x3b1249f4,0x3b1608e7,0x3ae3892f, +0x3b0c2f90,0x39f75d68,0x39c42bea,0x3a6af381,0x3a8e523a,0x3ac689b1,0x3b30f1f9,0x3b240d4b,0x3b0d1e07,0x3a9aec3c,0x3a4ed0be,0x3a241c08,0x3a2a13f6,0x3a28b09c,0x3a48ec00,0x3affee5f,0x3b3df8d4,0x3b5360d3,0x3b69ec4b,0x3b047eb7,0x3b26d9e4,0x3ab25465,0x3b173aaa,0x3b8c41bb,0x3c197d2d, +0x3b50fc1f,0x3b1cf7b0,0x3c554ec1,0x3c23b4fe,0x3bfed11e,0x3b6c8713,0x3b1dedab,0x3b241596,0x3ab38d3f,0x39c4deed,0x3999b725,0x3a7952a8,0x3a752ece,0x3a4cb7b4,0x39f67669,0x3a2b686a,0x3a5c990b,0x3a374828,0x3a1d91d6,0x3a3a140f,0x3a5d5e21,0x3a302c36,0x3a15e46c,0x3a35a7c2,0x3a71c1f7, +0x3a4cd8ba,0x3a380135,0x3a7c4451,0x3a8cc7ff,0x3acadce4,0x3abd0714,0x3a9f05fe,0x3b58ff9f,0x3b7f8258,0x3be3a92d,0x3c095e28,0x3b110d68,0x3b726fc1,0x3bb864e6,0x3b8eeccf,0x3b45b9f0,0x3b204c57,0x3aec7ef4,0x3a903db5,0x3a5cb450,0x3a34878e,0x39c5ac2b,0x38965f94,0x389a76a3,0x3942b2ae, +0x397abc43,0x3953a8e4,0x39d01e63,0x3a01bd05,0x393b54ce,0x39a42f3f,0x3ac77c9e,0x3a57e486,0x3a6112b6,0x3a15a9fe,0x3a4a1a32,0x3a61fe0f,0x3a4fad96,0x3a11ca30,0x3a38b44b,0x3ab09985,0x3b263a9d,0x3b4cbcb8,0x3b8b6764,0x3b2cce4e,0x3b8ec447,0x3b445b90,0x3b656f56,0x3cb8ec5b,0x3c50d20f, +0x3c2d73a0,0x3c064382,0x3ba1aff4,0x3b0e0087,0x3a8df092,0x3a98125f,0x39d7d649,0x39a1323b,0x396f6c1b,0x390cd81b,0x38f27bd7,0x397cf70b,0x39a5441f,0x3a035ee0,0x3a0151aa,0x3a0a4139,0x3a05a988,0x3a6c0284,0x3a2e48cb,0x3a42dc3d,0x3a28f965,0x3a2a4c82,0x3a395faa,0x3a4f61cb,0x3a97f7f5, +0x3aa192f0,0x3aea9da2,0x3afcd3db,0x3b0fe219,0x3b67c038,0x3b74ed68,0x3bb471c7,0x3c2c4a00,0x3ca4886b,0x3caed00b,0x3cce83a0,0x3c9e2463,0x3c777686,0x3c42b913,0x3c44e72e,0x3c044f60,0x3b36c217,0x3acda9b2,0x3a49c521,0x39c225c8,0x397310f6,0x394836af,0x39bc9f4f,0x394547ae,0x39443a5a, +0x39c1a0f9,0x3959f090,0x39802342,0x39b6e31d,0x39e573d2,0x39f3b368,0x39f0b76a,0x3a0c54e9,0x3a1c92b8,0x3a5c8ae2,0x3a8ca06d,0x3ab8c447,0x3ad560a0,0x3b16521e,0x3b58a91c,0x3bb930ec,0x3bfc21ae,0x3beadf4b,0x3c0cded3,0x3c5dc7c1,0x3c3c7418,0x3c4de89b,0x3c57653e,0x3c314bc5,0x3c187099, +0x3bff673e,0x3bf5f0a0,0x3c0657d8,0x3bdc4000,0x3ba947b6,0x3b5f3e7c,0x3b309608,0x3af6c78b,0x3aada3ab,0x3a26f946,0x39a1d239,0x39a079c1,0x39ae29c9,0x39d54338,0x39b06663,0x3a69cf5d,0x3ab8de2a,0x3aea3fc0,0x3b16be3e,0x3b2f8078,0x3b370298,0x3b847c21,0x3b8cf18d,0x3b82c712,0x3b828cfa, +0x3b8d2a8d,0x3bd56b85,0x3c068d0c,0x3c1490f6,0x3c0c5d3b,0x3c14f158,0x3bf1e4d0,0x3bf920cb,0x3be35dd9,0x3bdf64e0,0x3be6ab5d,0x3bce2eea,0x3bbb1298,0x3badba82,0x3b957ddb,0x3b8515f3,0x3b7ba9fa,0x3b3baff9,0x3b18977f,0x3af33933,0x3a9ac960,0x3a3de3cc,0x3a0ccbaf,0x39a0713e,0x39d9da67, +0x3a152029,0x3a573854,0x3aa826d8,0x3af67512,0x3b127bee,0x3b309a7b,0x3b5d5c52,0x3b83a0d9,0x3b9f6cf4,0x3bc1c278,0x3bd34f0b,0x3c0ab893,0x3c3d9e5c,0x3c1cddef,0x3c10c180,0x3c215ff0,0x3c0381f6,0x3b94c4c8,0x3b9f4368,0x3ba14431,0x3b95295e,0x3b92b242,0x3b916f03,0x3b8db043,0x3b8d0b88, +0x3b7723d8,0x3b577aac,0x3b3d3797,0x3b23b06d,0x3b0c0901,0x3aec3346,0x3ac6fbfc,0x3aa13b58,0x3a8fa927,0x3a79ddc7,0x3a7b07d2,0x3a583fbc,0x3a927f5d,0x3abd8ab2,0x3aea8d17,0x3b112675,0x3b2f9865,0x3b54a014,0x3b5a34a8,0x3b695bb1,0x3b7530d2,0x3b822b00,0x3b8350d0,0x3b91e93c,0x3b88d94f, +0x3b874ce9,0x3b87f07e,0x3b8c6b1d,0x3b69df89,0x3b6f2635,0x3b70b068,0x3b72358c,0x3b79891e,0x3b64ccd6,0x3b6739cd,0x3b6e5686,0x3b61e0ea,0x3b585090,0x3b4fc2cc,0x3b484b27,0x3b439937,0x3b3d4189,0x3b2bc80d,0x3b20abc2,0x3b2cb917,0x3b1b6d77,0x3b128402,0x3b02ecb5,0x3b13d053,0x3b1c81eb, +0x3b2964b6,0x3b337aea,0x3b3e29ae,0x3b4c4d62,0x3b50e649,0x3b58e8ae,0x3b639cd9,0x3b68adec,0x3b70e3b2,0x3b7ab15a,0x3b7392eb,0x3b6f8773,0x3b68abb2,0x3b6ab427,0x3b8a9578,0x374788b9,0x3736296e,0x370c82fb,0x36feb9d9,0x3708cb0d,0x378439de,0x36dcab14,0x36988db6,0x36e0ead7,0x367e65a8, +0x36bb60eb,0x370d7ff0,0x370921ba,0x3717be87,0x368d5d47,0x3764b17b,0x3784f10b,0x3740fb00,0x371ad03b,0x370eff93,0x370e25c3,0x3713d477,0x3740c80e,0x37a23231,0x37d43d06,0x37dfabc8,0x37d22fca,0x378a040f,0x377983fe,0x37ab3a92,0x3780d965,0x3745107f,0x3678dede,0x371fba0f,0x375f894d, +0x37c3a2af,0x376568c1,0x380c38cb,0x374a0bd7,0x370c4421,0x372d86c4,0x383cd943,0x36d720d2,0x371a9a39,0x381707b3,0x37ee8862,0x3818916c,0x38279fb4,0x37dac821,0x37d0ec29,0x3742f39c,0x382a1410,0x3838e794,0x37bb7f9a,0x378d771b,0x37bb7585,0x37f57256,0x380437df,0x385125b0,0x38d542f7, +0x3925af23,0x392fdf89,0x3908bb9d,0x386cb03f,0x37e3b9eb,0x3878ecb7,0x37f7b725,0x37c4de39,0x36e93381,0x38179574,0x387975f5,0x38ca47b4,0x386188fc,0x38578979,0x37dfa580,0x3680114a,0x37015d1f,0x38dcbaae,0x371be863,0x3806c609,0x39210a4c,0x3963ba92,0x39a50f93,0x39aca292,0x3907398c, +0x388c8d2a,0x38b68a2a,0x3893b313,0x38c898af,0x381d2cc9,0x37b06026,0x37fb883d,0x385dea79,0x38249a88,0x3870515c,0x392c20cf,0x39915f0e,0x39a00fb3,0x39981f4b,0x3908e0a2,0x38d62351,0x39555b13,0x38bcd69f,0x38611b43,0x382c63a9,0x38de18db,0x392fe078,0x395e0b9c,0x38ead151,0x3967f6c3, +0x380ae6e6,0x385e47cb,0x38c69e13,0x39c0d138,0x38a1141b,0x396ad094,0x39cb2c3d,0x39e86036,0x3a0388db,0x39732d1a,0x38daa5ac,0x38c781e2,0x38dafa48,0x3917c512,0x3962496a,0x3923cff0,0x38affced,0x394587f5,0x39a94ed2,0x39a7f395,0x39d7a10c,0x3a5a425f,0x3aaa3b34,0x3ac0fb59,0x3a9941ec, +0x39d455e9,0x38eaab38,0x39ee5033,0x38db96dc,0x38bad133,0x38fd549d,0x39ba070e,0x3a101b26,0x3a4ac561,0x39d7c154,0x3acc8401,0x3a44e3b5,0x3a5308f2,0x3a0687b1,0x3996d101,0x39dca29d,0x39f8ed64,0x3a10ea4c,0x395921af,0x37a27ef8,0x377289ed,0x390db105,0x38d52118,0x38d9b32e,0x38c3a975, +0x39637fae,0x39e3900a,0x3a0fcfde,0x3a5a012c,0x3a8c5894,0x3a9633ad,0x3a787235,0x3a6d613e,0x3a755151,0x3a9faca2,0x3ac0b9f8,0x3a731bac,0x3a9239af,0x3a9f327a,0x3a1c0a12,0x3927df33,0x39a1eabd,0x39629840,0x39ff01d6,0x3aaa0269,0x3ac5eec5,0x39e22b1e,0x39ea73e9,0x3a9108a3,0x3a0d377b, +0x3a3abe83,0x3ab31873,0x3ab87198,0x39c2f851,0x38bc3373,0x3762cfec,0x38235a48,0x38b77efc,0x388752f5,0x38608544,0x372ec65e,0x37f05574,0x3816ff26,0x3872f1ec,0x38ef6e1e,0x39980523,0x397b1b74,0x39c55053,0x39da630e,0x3a183961,0x3a2a5e6d,0x3aa0dc78,0x3aac0d1e,0x3a89800e,0x3abf62fe, +0x39a12dfb,0x398d4dd0,0x39e9485e,0x3ad48c09,0x3aca5615,0x3a99a0a2,0x3a0b2c06,0x3b2106e8,0x3c2b901f,0x3bbc2bf8,0x3b25172d,0x39f69d6a,0x38decd57,0x38c2f26d,0x38f45ab6,0x388796e0,0x37b0e79c,0x36b10422,0x375f4c18,0x3622f097,0x384c1ed2,0x38230584,0x387de3f7,0x388b7eb7,0x37da909f, +0x3814b414,0x38bd2a12,0x38cf0621,0x3942891a,0x39a0850b,0x39ea983a,0x3a052e32,0x3a4369cc,0x3a1c6e9a,0x39c753f5,0x3a91eb56,0x3ac309c3,0x3ac0e95a,0x3afa855e,0x3ac3d1bf,0x3abaa3a6,0x3af4835c,0x3a2d640e,0x3afccf5a,0x3bb12d20,0x3b2a8220,0x3b1129f9,0x3a93b3df,0x38fbc0e0,0x38ba287b, +0x38809e38,0x365481e4,0x35ca5f78,0x37028846,0x36bb855a,0x361c4724,0x36d842f9,0x35cd5e59,0x37ad5587,0x38d2f30a,0x390f9a1a,0x3935d795,0x394f045a,0x394584e6,0x39229b9e,0x394cdfb7,0x395383b4,0x398783e0,0x399ef687,0x39754dde,0x39052ff5,0x39b09493,0x3a116044,0x39fa0da3,0x3a7a3b46, +0x3a3cc203,0x3a833239,0x3a8e6d4a,0x3a571ea6,0x3a42dc5e,0x3a95556b,0x3aa7c661,0x3a664d31,0x394b45af,0x381081e2,0x37639ca2,0x38325652,0x37e1688c,0x37d5bd6d,0x379651c9,0x377611de,0x370b0abd,0x36b097bc,0x380d8246,0x38dc3983,0x39838ede,0x39aa687d,0x39c58155,0x39b60f3c,0x3986f03b, +0x3921e5e2,0x388ceb8f,0x382a96aa,0x39025ced,0x39af08a4,0x39eb978e,0x3a267881,0x3a4a006d,0x3a3c4c6c,0x3a18648b,0x39c3f623,0x399ecaae,0x3917c160,0x39873365,0x3a1e7172,0x3a05a013,0x39f19028,0x39d2316b,0x39ab9fc4,0x399620f4,0x3985da9c,0x394f4dc4,0x391db1c9,0x391ccd90,0x3909cede, +0x38bb5338,0x388cc02b,0x381bc686,0x385ee11d,0x387015ed,0x38750218,0x38735844,0x38b8c72e,0x38e2cccc,0x38c79549,0x385763d7,0x37f14468,0x37d69d66,0x3882a6c4,0x39211ffe,0x3986e93a,0x39cb9156,0x39f3f4f8,0x3a066f64,0x39eeaf6b,0x39e82374,0x39fe6dfe,0x39d2b0cc,0x39c08986,0x39dae432, +0x39f68e25,0x39842c03,0x399affda,0x3994f834,0x3998f361,0x39b4a156,0x399f1f9f,0x39868e61,0x3982eb2f,0x39504de3,0x393f6f17,0x3938d2d9,0x391b4932,0x39153ea7,0x392e9a60,0x38fc8373,0x38f4ab99,0x391b9413,0x3900282d,0x38d7aeab,0x38c09a0d,0x389fa5d9,0x38907fa7,0x389664c3,0x3879fbf6, +0x386ef742,0x3889e9e9,0x3843fda0,0x386551a0,0x38c8b4e6,0x38af296d,0x38bb1444,0x38dc2eae,0x38bd0456,0x38c5a9b7,0x390f2d58,0x394b440d,0x3938690c,0x3956dfd9,0x395e51b1,0x394aeb6f,0x395d14e4,0x3962d06e,0x39807c1b,0x398fe63d,0x3982f72f,0x396fe621,0x396662a9,0x39597710,0x39542c20, +0x395d6e3f,0x393ed611,0x39264c81,0x3915950f,0x390afc7e,0x390d7452,0x390ebff6,0x38fc8de6,0x38e00ddd,0x38c5b632,0x38b2d973,0x38a5351e,0x38a34c32,0x389d0efc,0x38a78b3f,0x38aecf8a,0x38b13208,0x38ac2155,0x38b1b81f,0x38a945bd,0x38cbe182,0x38fe5e89,0x391f5e7b,0x38cde6be,0x38d9d030, +0x38e456f6,0x38f13cb6,0x38f93093,0x38f1df73,0x38fc3f64,0x390d9bf8,0x390974c0,0x390b6654,0x390ac2b6,0x390f607c,0x39103cc6,0x39157b31,0x3906e262,0x39037cce,0x390482cb,0x3900cd5b,0x38fc5ad3,0x38fcfc22,0x38ed700b,0x38e4304d,0x38db986f,0x38d45b1c,0x38cd62e3,0x38c4db2a,0x38bc4a79, +0x38b2b94a,0x38ac71da,0x38a5f2eb,0x38a56181,0x38a4c2c7,0x38ac57c3,0x38b0d245,0x38b811a9,0x38be7912,0x390e1b4a, }; -const uint32_t orange53_rom_EL16[HRTF_MODEL_N_SECTIONS * 578] = { -0x3f17b0ab,0x3e80a01f,0x3e8e4bbf,0x3e86ff9f,0x3e86e065,0x3e8c9322,0x3e8ece93,0x3e94df40,0x3e994c6d,0x3e907283,0x3e91a7ef,0x3e8b773c,0x3e86049c,0x3e84bfc5,0x3e85a40d,0x3e7c19c2,0x3e80cdd4,0x3e741816,0x3e779d4c,0x3e6cdb71,0x3e7225ea,0x3e5d2589,0x3e5ce8f8,0x3e80b1a5,0x3e5d2471, -0x3e572419,0x3e7b2793,0x3e788e9f,0x3e744873,0x3e643354,0x3e81b854,0x3e751cb7,0x3e774c1a,0x3e581fdd,0x3e65bacd,0x3e7cb819,0x3e6ae2bc,0x3ed4b460,0x3ec9f9f4,0x3eeb7da9,0x3ee92227,0x3f00d923,0x3f0a5a66,0x3f1ada54,0x3f20f23e,0x3f03fdee,0x3f111ec7,0x3f00bd95,0x3ee797da,0x3ee68a48, -0x3ee8fe2c,0x3ebaf657,0x3ed3b7bc,0x3ebd25e2,0x3eb2f71c,0x3eaac0ac,0x3eae15ea,0x3e99b377,0x3e90e418,0x3e855672,0x3e7a252d,0x3e6bd85d,0x3e7633e3,0x3e85b503,0x3e86c93a,0x3e77e764,0x3e8a6285,0x3e6e6bf1,0x3e803a32,0x3e851d22,0x3e96a371,0x3e9ec253,0x3ea066bf,0x3ec99888,0x3f05f709, -0x3f03a36f,0x3f195448,0x3f2cf627,0x3f535fee,0x3f56e227,0x3f6c2fcb,0x3f537563,0x3f3c1ac4,0x3f29b813,0x3f1e57d2,0x3f0c6e9b,0x3efb3f0b,0x3ef103da,0x3eceaa8d,0x3ecb3c85,0x3eaffb83,0x3ea8c350,0x3e918275,0x3e848cac,0x3e6809ff,0x3e53035c,0x3e416d83,0x3e2ce47e,0x3e275f39,0x3e208994, -0x3e467171,0x3e39ec48,0x3e27ea0b,0x3e30ed7f,0x3e4085e5,0x3e54547b,0x3e6e80a7,0x3e868c69,0x3eae990a,0x3ecc4f1b,0x3efda40b,0x3f1e81b0,0x3f3205d5,0x3f61bd5b,0x3f838bdb,0x3f9a2b2e,0x3f9f3292,0x3f8b130c,0x3f77f214,0x3f559ab3,0x3f36d758,0x3f1ec4a8,0x3f0fae88,0x3eea2847,0x3ed4dfa1, -0x3ec11e36,0x3ea2c536,0x3e9559a7,0x3e6eb447,0x3e575175,0x3e25fc95,0x3e13fe29,0x3df7f5dc,0x3de7d4ed,0x3dbc115f,0x3def5e23,0x3ddf6532,0x3df94520,0x3dcc6a0d,0x3dc0acd1,0x3defa47e,0x3e11b8e7,0x3e323496,0x3e590ef1,0x3e922502,0x3ee23339,0x3f21e3cb,0x3f3f772a,0x3f61d43f,0x3f8c8c20, -0x3fb727cc,0x3fd661de,0x3fe431fa,0x3fc2f86b,0x3f9fcfb7,0x3f86e89f,0x3f67a1f6,0x3f4048c0,0x3f22c7db,0x3f112793,0x3ef6990d,0x3ed1c54e,0x3ead1f7c,0x3e96e437,0x3e72544c,0x3e574893,0x3e0fce11,0x3de8afe8,0x3db0164c,0x3d9633fd,0x3d8292c8,0x3d93f445,0x3da94e1a,0x3db9f939,0x3d946b4a, -0x3d8a8851,0x3db6a311,0x3de0087f,0x3e21f278,0x3e4fe5c0,0x3ea0b693,0x3f3efa87,0x3f6805d9,0x3f964750,0x3fb54f75,0x3fe2f6b8,0x3ff66a68,0x40037cd3,0x4000ff14,0x400fb128,0x400fce2f,0x3fe9eb44,0x3fe73877,0x3fe00255,0x3fb5d63a,0x3f9a1a2a,0x3f5f640d,0x3f4eccaa,0x3f0fb082,0x3edb6125, -0x3ea57510,0x3e7188da,0x3e3ad5c0,0x3e0e2ae2,0x3dc3ec5c,0x3da8d827,0x3d9d98a2,0x3dd688c7,0x3dcd8408,0x3dd00feb,0x3db369bb,0x3dc914a7,0x3e14f46c,0x3e3570ef,0x3e83ae98,0x3eb8d882,0x3f149887,0x3f569457,0x3f84d46a,0x3fa1fa14,0x3fc98c0c,0x4005e4b9,0x40104982,0x4022dcba,0x40130f3d, -0x4017dd8a,0x400225f7,0x3feddc32,0x3fdade81,0x3fb4f78a,0x3faf576a,0x3f8c9b67,0x3f6b21e5,0x3f3fe6cc,0x3f1b4eeb,0x3f06006d,0x3ec88823,0x3e8ca6fc,0x3e485a51,0x3e099dd3,0x3dd3d9a8,0x3da8c546,0x3d9793af,0x3db5cada,0x3dea03f1,0x3e0cbc32,0x3e0213fb,0x3e0dcb0a,0x3e39d6ca,0x3e5fbedf, -0x3e96a334,0x3edfc420,0x3f2355de,0x3f684988,0x3f9590f7,0x3fddc97e,0x3ff5d522,0x401fd5ed,0x4030f31b,0x404218c7,0x403b382a,0x4034586a,0x401ed4d5,0x400433fb,0x3fd9bd3b,0x3fbc1064,0x3f9a6ac0,0x3f765ee0,0x3f517b0a,0x3f334a0c,0x3f1956f1,0x3f07007d,0x3ede0823,0x3eb4cf2b,0x3e852763, -0x3e505ea1,0x3e1595f5,0x3de8a353,0x3e07dd54,0x3e095ddf,0x3e1598b4,0x3e6d0ec4,0x3e1c3713,0x3e19fadf,0x3e56bf85,0x3e6e70a1,0x3ea32c54,0x3ee9a984,0x3f174717,0x3f7a72d3,0x3f9fbad9,0x3ff7153f,0x40103301,0x40372658,0x4039e263,0x4050055d,0x40574820,0x404ab3bd,0x4037d0be,0x4015d6ad, -0x3ffc4566,0x3fc4e141,0x3f9891aa,0x3f7c7afc,0x3f3fca09,0x3f276fc7,0x3f07b696,0x3f054659,0x3ed7e3d4,0x3ebf9156,0x3e9bd4b4,0x3e8945a7,0x3e441bf2,0x3e20aa06,0x3e34e5d6,0x3e16c013,0x3e35d0b1,0x3ec0cf53,0x3e318541,0x3e1d8ace,0x3e427bd9,0x3e7e0f70,0x3ea65cb9,0x3ef29252,0x3f29d8b9, -0x3f893b68,0x3fc65b1b,0x3ffa16b2,0x40156dfe,0x404943bb,0x403bc418,0x4048103b,0x40425826,0x403e0a7b,0x402b9f6b,0x40164840,0x3ff59210,0x3fd0e746,0x3fa313e4,0x3f86a991,0x3f4dc2f5,0x3f1fb21c,0x3f121e39,0x3efc3913,0x3ee98d99,0x3ec5f2a6,0x3eb043d1,0x3e93732a,0x3e5fdc3a,0x3e2daca9, -0x3e2ebdeb,0x3e0dc64a,0x3e322b62,0x3ee4e855,0x3e464982,0x3e3ccc56,0x3e4fe3db,0x3e7e79c1,0x3e9ba3a6,0x3ef26464,0x3f28bc76,0x3f77f556,0x3f94f2b2,0x40031d96,0x40204a6f,0x401db5a5,0x4025657a,0x40203908,0x401fc725,0x400291b9,0x3ff9eabd,0x3ff6f29f,0x3fd4a874,0x3fa5fafc,0x3f8edb6d, -0x3f5d4f86,0x3f334439,0x3f1c7013,0x3f0e77d8,0x3f041715,0x3f00a722,0x3ece1ed6,0x3ebc73df,0x3e8d4302,0x3e84686a,0x3e50bcb9,0x3e308d49,0x3e58fc69,0x3e545118,0x3e8efa51,0x3e5b7b2f,0x3e5776eb,0x3e560116,0x3e957ab6,0x3ec846b7,0x3efa4300,0x3f0bcebd,0x3f859f6e,0x3fa0e43a,0x3fca7cf3, -0x3fe83126,0x4005b4af,0x400da6dd,0x40098cda,0x3ff30587,0x3fe4a2d6,0x3fbf94b6,0x3fadfc2e,0x3f9425c9,0x3f81cca5,0x3f629483,0x3f45a8dc,0x3f359538,0x3f1ec1f4,0x3f24e0f6,0x3f24ca10,0x3f003ad9,0x3f0e1779,0x3eeb4487,0x3ebbd8fd,0x3e93b2ec,0x3e7ef11b,0x3e807866,0x3e55929c,0x3e62efae, -0x3e705a6a,0x3e817540,0x3e794e5b,0x3e7a41f9,0x3e9a7014,0x3ebb74f3,0x3ef872cd,0x3f312560,0x3f6ecb24,0x3f83397c,0x3fac838e,0x3fc03306,0x3fd49aa7,0x3fd303b2,0x3fda0879,0x3fd776fb,0x3fc0a3b6,0x3faefc26,0x3fa2c04a,0x3f8abef2,0x3f7fc532,0x3f618271,0x3f55a5a6,0x3f507f40,0x3f44c5e6, -0x3f3a0236,0x3f331435,0x3f23abcc,0x3f142933,0x3eee77ac,0x3ed7df51,0x3ec3de40,0x3ea3cd9d,0x3e884ecb,0x3ea98936,0x3e8d586a,0x3e85af95,0x3e9151d8,0x3e98714e,0x3e9536e5,0x3ebe9057,0x3ed7b63e,0x3f199453,0x3f2ef2b9,0x3f74cf0b,0x3f82160c,0x3f880dcb,0x3f9805a0,0x3fb4b104,0x3fac90b3, -0x3fb11dce,0x3fb61fd7,0x3fab276c,0x3fa1ee81,0x3f9a1b3b,0x3f937741,0x3f8b364e,0x3f80559a,0x3f7d5f12,0x3f73a3f7,0x3f6688d7,0x3f53a86e,0x3f46a75c,0x3f3102e6,0x3f2c0eb2,0x3f0e6616,0x3f05e02c,0x3ee32b86,0x3ed3b7fb,0x3ecf67b1,0x3eba0d94,0x3eec6deb,0x3edf9d1a,0x3ebb9d12,0x3ecbd211, -0x3ec40310,0x3ef20c66,0x3f167926,0x3f285d91,0x3f39ba4b,0x3f7413f3,0x3f5f4f9b,0x3f71c24c,0x3f6795d9,0x3f4ff349,0x3f86be73,0x3f86883c,0x3f984a72,0x3f91b7a1,0x3f8ee719,0x3f8a96c9,0x3f89e522,0x3f88241c,0x3f8c62cd,0x3f7aeb42,0x3f627c27,0x3f70edc5,0x3f5a783f,0x3f46331c,0x3f572379, -0x3f515a5e,0x3f3a4873,0x3f3150c2,0x3f2f5e7e,0x3f1b3817,0x3ef56a99,0x3f1ab1d8,0x3f0df1b2,0x3f1bcec1,0x3f266568,0x3f1c6571,0x3f23b267,0x3f2f4b78,0x3f14180d,0x3f53d825,0x3f5f5fd4,0x3f15b59b,0x3f214657,0x3f188b0b,0x3f1c85d4,0x3f1b6620,0x3f233455,0x3f1fb2a1,0x3f2800d3,0x3f222fb1, -0x3f22ce4a,0x3f2207fe,0x3f1f6746,0x3f1be0ea,0x3f1b2bac,0x3f170c28,0x3f17f081,0x3f172df7,0x3f110b9d,0x3f08e58c,0x3f1b6536,0x3f0c6e11,0x3f1c49b8,0x3f40f4a4,0x3f057025,0x3f0f44ac,0x3f2f605f,0x3f3f2e28,0x3f2c6da6,0x3f2a5d1a,0x3f41a119,0x3f4058df,0x3f2cd451,0x3f0eff6f,0x3f02df4b, -0x3f410dd6,0x3f2933b0,0x3fb5777b,0x3a4f23e9,0x39ae2b96,0x3994ea1c,0x399dfa98,0x398fee85,0x396ec6f6,0x39986eb2,0x399bb523,0x39816d54,0x398d1b31,0x39829a3d,0x392d943d,0x3936639f,0x39560726,0x398f1261,0x3996f3ac,0x39acdd74,0x39ac0fe5,0x39bce0fe,0x39c5ee9a,0x39d615bf,0x39de27a6, -0x39d97f2d,0x39e0b418,0x39af7a57,0x39a56129,0x39953e3b,0x39b374c9,0x39c0fb75,0x39c38065,0x39c12f15,0x39a92313,0x39a2cc29,0x3989f914,0x3999682f,0x39fb0e9b,0x39b8cc13,0x3a205682,0x39d83773,0x3a0039fe,0x3a006d0e,0x39d06a1a,0x3a5e4432,0x3a52c560,0x39cf5296,0x39f9959f,0x39b68570, -0x39991f19,0x39136243,0x394c9c06,0x3a0db86b,0x3a089225,0x3a356c0a,0x3a23ada3,0x3a35e3e6,0x3a59a719,0x3a88b631,0x3a990998,0x3aa1928e,0x3a96e1c8,0x3a2c4929,0x39d44002,0x39ca928b,0x3a441eb6,0x3a695fbc,0x3a7355b0,0x3a53cb0a,0x3a0a2697,0x3a089d27,0x39d2fdc1,0x3a0e17d4,0x3aca1eb9, -0x3a47db1e,0x3a4db4d2,0x3a21636e,0x3a0f5667,0x39fd95e1,0x39cb6384,0x3a50a41c,0x3a6abd36,0x395d21d0,0x3a11f855,0x39de1b79,0x3a6979a4,0x3a0c56aa,0x3a148b71,0x3a69df2c,0x3a2ed86a,0x3a5e11da,0x3a5680ed,0x3a830ec9,0x3aac119c,0x3ae473c4,0x3b02ecba,0x3b04ad3c,0x3b03e344,0x3a89bddf, -0x3a1ca933,0x3a073128,0x3a7bb653,0x3aa71d21,0x3ac7a566,0x3a8fab80,0x3a58a49e,0x3a0f73ab,0x39d9fbf5,0x3a029265,0x3b2b10c9,0x3a7c32bd,0x3ab12cf3,0x3ad41d12,0x3a62c122,0x3a7f3555,0x3a6232d1,0x3b075e72,0x3b03c287,0x39cc1063,0x3a6b5ee1,0x3a4f1ca5,0x3b626c65,0x3b0d08ae,0x3b02eaf0, -0x3b37686e,0x3ab7af60,0x3ac822be,0x3a8d5a97,0x3ac4db4b,0x3b0bf710,0x3b435041,0x3b714450,0x3b847d68,0x3b8cb672,0x3aff6fec,0x3a898163,0x3a4ede87,0x3adbad9b,0x3b1d3116,0x3b462058,0x3b1135bf,0x3ada786a,0x3a6760f8,0x3a927bd6,0x3a7ae225,0x3bc12d27,0x3af117cb,0x3afe17d7,0x3ab32625, -0x3a8eb181,0x3a3c91b0,0x3a98e2d2,0x3ad51201,0x3abad423,0x39876a92,0x3a5b77ae,0x3ac6e9e6,0x3b89fb28,0x3b767c2b,0x3b5ff830,0x3b35359b,0x3ad93953,0x3ad68970,0x3ab1e243,0x3aea2396,0x3b3ccc4f,0x3b895a01,0x3b949a24,0x3b9a5175,0x3bc58a84,0x3b537f83,0x3b0ac13a,0x3a87be73,0x3afac038, -0x3b4953ec,0x3b791ccc,0x3b2c3722,0x3b0f55fe,0x3a85e2b6,0x3acc1cc0,0x3a855c02,0x3be839ba,0x3b135d20,0x3cca23be,0x3ba81ad3,0x3b1a50f6,0x3bd31877,0x3cba316d,0x3c1b1ba3,0x3be003c8,0x3b5a80b2,0x3c0b0987,0x3bc27cd6,0x3bf6be31,0x3be469e4,0x3bdf29b3,0x3b8866ca,0x3ac9389a,0x3ab10c73, -0x3ab31cd0,0x3aac46ba,0x3ad58092,0x3b1b6f06,0x3b9fd5f9,0x3ba72968,0x3bccaa0c,0x3b542204,0x3b01531b,0x3b154bdb,0x3a430d79,0x3a3cd43e,0x3b9c81fa,0x3b6c11ee,0x3ba1c3f2,0x3b957222,0x3beb1115,0x3b541ca9,0x3bf2759c,0x3c882fbf,0x3ca05cbe,0x3cbc3fba,0x3b8f97b5,0x3b31dfa0,0x3c62d2ac, -0x3c132568,0x3bf1ab15,0x3bb09e83,0x3ad35deb,0x3b05aa4f,0x3b0eeb15,0x3aced874,0x3ad61339,0x3acaadd8,0x3ab86092,0x3af4efe6,0x3ac17ca2,0x3aa4cbe9,0x3aba9098,0x3af9a9e1,0x3ad81457,0x3ad21307,0x3abcb336,0x3b0068c0,0x3ac37457,0x3a739f60,0x3acd66e1,0x3aeef29d,0x3b14af03,0x3a5a8c25, -0x3a526c70,0x3b06baae,0x3b959985,0x3b68ea70,0x3bba8015,0x3c6a7372,0x3b0a9726,0x3c4ca1f6,0x3bb19315,0x3b7bca7e,0x3b1d265c,0x3b29a586,0x3a8811fd,0x3c03c558,0x3bb91182,0x3bb3f2d2,0x3b0f6ae8,0x3a9d87fb,0x3a5fd093,0x3a9e95f6,0x3adfb813,0x3aab35f0,0x3ab5cae1,0x3ab0e828,0x3abc1a09, -0x3b0b5238,0x3a507b16,0x3a085ca2,0x3a9f200c,0x3a737797,0x3a241589,0x3a2b52a3,0x3a194d90,0x3a087650,0x39f178fe,0x39b0126f,0x3a634072,0x3aa92ef6,0x3b13ccd6,0x3b60632b,0x3bb3db44,0x3ac9bc1b,0x3bb3f48b,0x3c00c8cc,0x3bba87a7,0x3b8fc154,0x3bf353ed,0x3b4e47ad,0x3b537931,0x3be6e2c9, -0x3b32d219,0x3b2296b7,0x3aae01e8,0x3aca5967,0x3aadd34b,0x3ab0a1a7,0x3ac7cb75,0x3ade2ded,0x3aaa126d,0x3aefb632,0x3acb73d9,0x3b19b1bd,0x3a33b4d5,0x39d839ca,0x3a616768,0x3a206532,0x39716d25,0x39cc46db,0x396e6b9f,0x39573a50,0x3917d582,0x3a21b261,0x3ac95f36,0x3b1cb0e9,0x3b01dedb, -0x3b77a7fa,0x3bf09950,0x3bcc2a68,0x3c9617ae,0x3c969f5c,0x3d07275b,0x3d003aaa,0x3cc7539a,0x3c40cb82,0x3c30266b,0x3c10e980,0x3ba8385f,0x3b88a2f3,0x3b7bcd85,0x3b1c46f0,0x3b1372bb,0x3ac7c470,0x3ad83a1d,0x3abe692d,0x3ac97a9a,0x3ac84398,0x3aa74377,0x3ad827af,0x3a586689,0x3a88ca21, -0x3a8e4157,0x3a89e6ae,0x3a3dfa52,0x3a18df7d,0x394f94f3,0x391927e2,0x39b70182,0x399f2b1e,0x39dbf891,0x3a98cbe4,0x3ab41ee3,0x3b2ff24e,0x3bff999a,0x3c6ac9bb,0x3d25ccdf,0x3d8e06fb,0x3d49656e,0x3d247132,0x3c5a9aaf,0x3c42b78a,0x3c82463b,0x3c75aea5,0x3bc7f580,0x3ba5eb78,0x3b4eb627, -0x3b146c41,0x3ae0095f,0x3ad3b91d,0x3a88a314,0x3a7f6498,0x3a94dbfb,0x3a8a784d,0x3a644e93,0x3a488e52,0x3a05ab6d,0x39ec9160,0x3a48ba69,0x39b30c9f,0x39b1a950,0x3a6a6bba,0x39e1c8c2,0x39f529bf,0x3a211b97,0x3b14f644,0x3b3c5cc0,0x3bdbc72d,0x3c959a8d,0x3cd45187,0x3ce851d1,0x3cf1003c, -0x3cd037f4,0x3ca3990e,0x3ca24910,0x3c812856,0x3c75c44c,0x3c96342e,0x3c88934e,0x3c57231f,0x3c0f1849,0x3c086e76,0x3befbd60,0x3c2d29eb,0x3c1fc892,0x3bd577db,0x3bc8f7eb,0x3baa0d41,0x3b570f12,0x3b3f0196,0x3aebb85d,0x3a0338eb,0x3a45acbf,0x3a1b17c5,0x3a1bcb48,0x3a206d01,0x3a8ac999, -0x3b135f3a,0x3b458ef3,0x3b9846bc,0x3bb59b41,0x3c12f6ce,0x3c32b877,0x3c61de7e,0x3c5f8a4a,0x3c50e4ac,0x3c8d5474,0x3c9c6051,0x3c9f1bf3,0x3ca343fa,0x3caba060,0x3ca10fab,0x3cc86b2a,0x3c90b244,0x3c89dcf9,0x3c56535e,0x3c121eaa,0x3bcbec80,0x3be68ddd,0x3b8f7cf9,0x3b80210a,0x3b5e6c4e, -0x3b5203e4,0x3b4d19d2,0x3b2d4911,0x3af458b9,0x3a910c38,0x3a55a995,0x3a391cd4,0x3a0a5a46,0x3a37c968,0x3a7edf73,0x3aedc7fa,0x3b57a3de,0x3b937101,0x3bba9169,0x3be60e96,0x3c0ded45,0x3c29c3b9,0x3c579a2f,0x3c60744f,0x3c7cde49,0x3c8b4387,0x3c98e996,0x3c3ad169,0x3c4a44fe,0x3c3d1b06, -0x3c51e685,0x3c78b977,0x3c74e59d,0x3c8a0acc,0x3caf0d4f,0x3c8a1302,0x3c561cd0,0x3c5d703f,0x3c16e1fa,0x3c0e2ca7,0x3bd1390a,0x3ba86c35,0x3b8f7189,0x3b467213,0x3b18325c,0x3b0e8aaa,0x3aab4ca7,0x3aa7cd3f,0x3a9151dc,0x3aca88c7,0x3af956d3,0x3b2e4c62,0x3b69733a,0x3b8b4d71,0x3baac750, -0x3be5e192,0x3be7c0da,0x3c05771d,0x3c15c603,0x3c16a195,0x3c23e2ab,0x3c32df25,0x3c2b270f,0x3c287bf4,0x3c261bbf,0x3c270801,0x3c110eb2,0x3bec16e6,0x3c044014,0x3be6e314,0x3bfcf98f,0x3be8fa21,0x3bfce51a,0x3c01e072,0x3c0139e4,0x3bfdeb59,0x3c04cc55,0x3bd43cb6,0x3bad41a6,0x3bac9a15, -0x3b7c18fb,0x3b346174,0x3b226df2,0x3b298d5b,0x3b46ab11,0x3b4e9c09,0x3b674e6e,0x3b832b78,0x3b87e5f7,0x3bb2ab76,0x3bb3196b,0x3bd72000,0x3bfd1459,0x3c0a14dd,0x3c1950b4,0x3c2408e3,0x3c16fb17,0x3c221015,0x3c32571c,0x3baa8f43,0x3baefc1a,0x3bb2fa97,0x3bb804cc,0x3bbf3d57,0x3bd2fa5e, -0x3bdfaded,0x3bf70e72,0x3be555e8,0x3bd2574d,0x3bc31d82,0x3bb86d02,0x3ba89191,0x3b9fba6d,0x3b9383f1,0x3b8ec8ba,0x3b89c25d,0x3b83731c,0x3b808004,0x3b6ce470,0x3b7a1178,0x3b85c3b7,0x3b8fc1f6,0x3b8b9326,0x3b8d74eb,0x3b914799,0x3b9d4e9f,0x3b9991dc,0x3b9e187e,0x3ba24aed,0x3ba10f0f, -0x3bac509c,0x3ba9c43d,0x3b9f0855,0x3badf13a,0x3baa80bd,0x3c5efe2d,0x38165475,0x378476d0,0x37924f21,0x37aa4f6b,0x37aa77c3,0x37fa3635,0x3798eb40,0x377f2a0c,0x3715c900,0x37905783,0x379f87c7,0x37afa35b,0x3788e4b1,0x37cb64a2,0x38262f58,0x382f8c47,0x38321bb1,0x380a3d6c,0x37b8e022, -0x37887141,0x376c6f08,0x3765dea1,0x375dc867,0x378afadf,0x37bdbb16,0x37ac501a,0x36e9c114,0x374d818b,0x373e74c1,0x3700bbec,0x36d57b04,0x36977bd2,0x37192b37,0x36e57643,0x371b68c3,0x379b954e,0x375f2089,0x37047e6b,0x372772c5,0x38209d6b,0x389f0759,0x391ce95c,0x38e16008,0x387a3f29, -0x375b554e,0x3823d74c,0x388a2192,0x38dddf2a,0x3893f9ca,0x38b2d6dc,0x3930abec,0x39477e1c,0x394576c0,0x38e57088,0x38550c29,0x3806be32,0x38169e13,0x37ee942c,0x37f2fafa,0x38352ab6,0x38752df0,0x3848ea69,0x37bf07fd,0x3835d209,0x385f854c,0x38b8944d,0x38a8c6ca,0x38974e03,0x385b22dc, -0x371aa78b,0x37465aaa,0x389f332b,0x379a13e0,0x37cda477,0x3847239c,0x38f1cf8c,0x392d4d4e,0x39a49d47,0x39466ca2,0x39135973,0x3807de46,0x389d5b6e,0x38b9a5cc,0x397553dc,0x38c82b9d,0x3961031f,0x39fed947,0x3a116505,0x3a02f73d,0x39b7eb0e,0x3916413e,0x38d512e4,0x38dae80d,0x388ec3ef, -0x38389778,0x3883954c,0x38f9fd59,0x38de82f6,0x38a027af,0x38a109bf,0x38d4bc1c,0x399044f4,0x396af5a3,0x392fd644,0x3945794e,0x383fc397,0x37aca73d,0x391dfc8e,0x378b515c,0x38326914,0x380796db,0x39211079,0x39d073a9,0x3a5d0145,0x3a322bb2,0x39e63470,0x39732c07,0x394953e5,0x39944575, -0x3a3688ac,0x39a8a158,0x39d79c4a,0x3a926067,0x3a9adcd3,0x3a88b415,0x3a1a2790,0x3987489f,0x39407b71,0x39762021,0x3905de38,0x388f0d1a,0x39246ab2,0x39972277,0x3965da9d,0x3968c85d,0x394e2585,0x39cb716b,0x3a4caae2,0x3a874eb8,0x3a417cfa,0x3a0072a2,0x3915168b,0x382001a9,0x39e29213, -0x388b4614,0x389f6d37,0x3923ce57,0x39c9716b,0x3a203495,0x3a88a9a6,0x3a4ecccd,0x3a02f5de,0x3928fea3,0x394348ac,0x394c3997,0x3a306255,0x3978a36a,0x3a4e2712,0x3b04d848,0x3b161018,0x3af2da97,0x3aaa1fd2,0x3a0eb04b,0x3a009102,0x39e9b00c,0x399098c6,0x38f9c5a0,0x39910a24,0x398c12f3, -0x3943d462,0x392b2efe,0x392752b4,0x3912aa2f,0x39a82434,0x3a324b66,0x3a22e3f5,0x3a18a64f,0x39b264bd,0x3927ea26,0x3a13f7cb,0x386da846,0x3afe4857,0x3b04214c,0x3b5d65ca,0x3b6821ee,0x3b62f2b4,0x3ab61037,0x3a652224,0x3a25cf6c,0x39d7e3c9,0x3ac9b812,0x3b4663c2,0x3b3369d0,0x3b28e3d6, -0x3b921289,0x3b5747a6,0x3b04d5f6,0x3b23fc28,0x3b261f40,0x3b34ebf6,0x3b1ff9ad,0x3b0bf1dc,0x3a915520,0x3a95db7e,0x3a1216e3,0x39351b74,0x3985ed72,0x39a654ff,0x39c14443,0x37ad1c6b,0x386a7906,0x3a1115d0,0x3ac2b1d1,0x3ab1b4ec,0x3a94a8d4,0x39d1e35e,0x3a838d30,0x3b31fdb3,0x3af39369, -0x3a4e4729,0x3a3c5a96,0x3b1cff7f,0x3b3e77b7,0x3b72fbc1,0x3a844c03,0x3a1cb86e,0x3a08d1a2,0x3b32f56a,0x3ade6d01,0x3b1dd1ea,0x3b1c6c7e,0x3aa32808,0x3a7a31b3,0x3a6451ed,0x3a27bc56,0x39c2c220,0x3a072528,0x39393882,0x38eea2cf,0x38498d92,0x384a14e3,0x37beffd4,0x38acd28e,0x38beb788, -0x38f91842,0x38f4076c,0x3805be57,0x392c1337,0x3a2dae7a,0x3b1e5fe4,0x3b15cc58,0x3ad1ec9c,0x3ad6d5e8,0x3b67cdec,0x3c22b646,0x3b431053,0x3a246d30,0x3ae038f9,0x39424763,0x39ec5346,0x3ad2009b,0x3a8f6e9c,0x3a9b7e81,0x39a239c7,0x392a4ed2,0x3979ae82,0x39bd010e,0x397cdfa7,0x387a2266, -0x396006d9,0x38565e43,0x38c025c6,0x38df4e30,0x38b9add9,0x387c41a7,0x38527abc,0x382bbf2d,0x387739c9,0x38a7cd1b,0x378ea213,0x37744e20,0x353ad13f,0x3697fc44,0x379eb356,0x390ca6fe,0x3a37d2b6,0x3a12a2af,0x3a8e28dc,0x3b0874da,0x3b393d00,0x3bca109b,0x3a5ae68e,0x39fc0447,0x3b0abdb2, -0x3ac6cb8e,0x3aefbbc6,0x3b367ff8,0x3af6b447,0x3aeba0da,0x3a737003,0x399e3678,0x39bfa3b1,0x3a3ba3c4,0x396677d2,0x399112df,0x38facd9b,0x3868361f,0x37650b2a,0x38edc68d,0x38a67087,0x381dd600,0x37129839,0x380edcdf,0x37f45827,0x38776442,0x365eb77d,0x366b206b,0x35902fae,0x38042324, -0x38e3c1e9,0x3974d011,0x38807026,0x391065a3,0x3a852065,0x3aa9d393,0x3bb92d38,0x3c4575ef,0x3b508260,0x3a96fd62,0x3ad806f4,0x3acffb40,0x3ac1a0b3,0x3ace5623,0x3a3aec6c,0x3a7ad513,0x3a34f15c,0x39e45408,0x3a436c73,0x3a7894b3,0x3a13e73f,0x39cdf054,0x39dda253,0x3982c532,0x39bc9552, -0x39bc8e2f,0x399ea908,0x39951914,0x397af2f0,0x38683e46,0x367a876f,0x37b59195,0x36c7f065,0x36f9281a,0x378a6099,0x374fc62c,0x38352871,0x3953378a,0x39207d3f,0x3910ee3d,0x3b0318ec,0x3b8db206,0x3b83fbf4,0x3b835d42,0x3b17119e,0x3acb77b4,0x3a02ebb7,0x3983c3ff,0x3a102511,0x3a51976f, -0x3aac2e38,0x3b14fe3f,0x3afdc89a,0x3ad1ebac,0x3a1d7ed4,0x3a2ca4a7,0x39886c14,0x38ca2843,0x393efd52,0x39bc0a27,0x3a188ba5,0x3a3b349e,0x3a484269,0x3a3d3a65,0x3a1ac3b8,0x398c2ca2,0x38a71f80,0x371021fc,0x37c9a903,0x38171fa2,0x3818ca36,0x388c802d,0x37ee9c96,0x3869e283,0x380e2ff2, -0x38ac9c07,0x3a195fec,0x3b0ff3d3,0x3a50971c,0x3a7ad37a,0x3a8221cc,0x3a417e90,0x3a2e906f,0x3a1adc52,0x3a5629a5,0x3a7cd4f6,0x3a65e54b,0x3a46b625,0x3a3319f5,0x3a6035f2,0x3a484fd9,0x3a17b3d7,0x39b94b16,0x391029cb,0x3835b431,0x384bec8b,0x38cdd4a1,0x395946e0,0x3982407c,0x39440dc8, -0x3906f922,0x38f003e2,0x38eb70ac,0x38aeeb4a,0x38833bbf,0x38cdf585,0x391aa2d8,0x398bcbe2,0x39a930fe,0x39c8289a,0x39f50efd,0x3a1403d9,0x3a21957e,0x3a405b9d,0x39042f3d,0x3950834e,0x3919c6c0,0x391b3b72,0x399e1e4a,0x39847c9f,0x398b3873,0x39b487b7,0x39bf7c98,0x39fcec4a,0x3a16cad5, -0x39c5a978,0x39655e02,0x38d5646a,0x38504d54,0x37b377b2,0x388a1890,0x38984614,0x38fb8946,0x393f5f97,0x394e363c,0x395b24fe,0x3983bf91,0x39617738,0x3955d3d3,0x39750b40,0x3923a7ad,0x39092733,0x392389c4,0x391ef754,0x39376ad1,0x397df9e8,0x393c0774,0x3955e413,0x395fd061,0x38eb03c8, -0x39f6bb8b,0x39d733c7,0x39ae6cb1,0x39916bb1,0x398152f6,0x393c50b7,0x391b338e,0x391fc411,0x38ea6848,0x38b033ee,0x38c96c59,0x38823704,0x38bd5dd3,0x3900d0a4,0x390d2666,0x3926d436,0x3927995d,0x3932cbae,0x3946f329,0x395122a0,0x39610cc2,0x3976b0ae,0x3993ed03,0x39724d56,0x398a9161, -0x39b44f88,0x399c6ac9,0x39a6b273,0x39b6046c,0x399dd83d,0x39b71bd0,0x39a5b29c,0x39cc99ab,0x3a108dc8,0x3a201c69,0x3a039f6b,0x3a108012,0x39e6d6a1,0x39cd7163,0x39ae1741,0x39892000,0x39739bf9,0x394243d1,0x3935b2e4,0x3924f2c6,0x3914931a,0x39128ee6,0x391d64ac,0x391fb532,0x39370e0e, -0x392d64fd,0x39346120,0x3968ccc5,0x397a7e0f,0x398aecd0,0x39a4f1a4,0x399ea9eb,0x39a2e12f,0x39a80454,0x39c6f112,0x39d1976b,0x39d34979,0x39ea2d9f,0x39e46589,0x39e71f7f,0x3a0fd835,0x3a017298,0x3a42e403,0x3a316f26,0x3a02b59b,0x3a1295b9,0x3a0bb10e,0x38ee0e84,0x38f0cc32,0x38f11df1, -0x38ea84b7,0x38ec4659,0x38f66713,0x38fd519f,0x390881d0,0x3912328f,0x391a2b29,0x391c73da,0x391c902b,0x391cc422,0x39229837,0x3927f46c,0x392d06ef,0x393179b4,0x3930470f,0x3930fc22,0x393c9134,0x3933985a,0x393b2fc9,0x3939ac73,0x3938504b,0x39393a44,0x393e494f,0x394b44d1,0x3936b998, -0x393ebca2,0x393ca558,0x3926b537,0x391e4095,0x3913fab1,0x3914fabb,0x391d4983,0x390af83e,0x39dc76ea, +const uint32_t defaultHRIR_rom_EL16[HRTF_MODEL_N_SECTIONS * 470] = { +0x3ec4945b,0x3ea05421,0x3eb6f2e5,0x3eada84f,0x3eb73773,0x3ebcb8b4,0x3ec60c24,0x3eca9fef,0x3ecf62e5,0x3ec74384,0x3ec27f09,0x3ebdc130,0x3eb867d1,0x3eb3a7c3,0x3eaf61f2,0x3eab0f53,0x3ea77972,0x3ea47e0d,0x3ea1ee89,0x3e9b6e8f,0x3ea47e2c,0x3e92c354,0x3e937bb6,0x3eb4f08f,0x3e8d70bc, +0x3e8c6f85,0x3ea70010,0x3ea94bb2,0x3ea6c605,0x3ea165bc,0x3ea492f1,0x3ea6fabb,0x3ea64cbd,0x3e8fc7b7,0x3e95863e,0x3eb2a9ea,0x3e9de05b,0x3ec74c44,0x3ee37536,0x3ee9aa20,0x3eff1aa6,0x3f0ad8a4,0x3f1c936d,0x3f26c9e4,0x3f2be03a,0x3f1ec2c9,0x3f13fda6,0x3f09fee2,0x3f005d11,0x3ef00d14, +0x3ee227c6,0x3ed351fc,0x3ec7a49a,0x3ebfa224,0x3eb509ec,0x3eac1e37,0x3ea3db64,0x3e99af8b,0x3e8742f1,0x3e8046e4,0x3e6f3686,0x3e64993a,0x3e5fd649,0x3e664ea7,0x3e6c5c17,0x3e6aa54d,0x3e692716,0x3e6f15cc,0x3e71d22d,0x3e82bfdd,0x3e89d0bb,0x3e92da01,0x3eac28d1,0x3ec2ef15,0x3efa8037, +0x3f0e3d41,0x3f242323,0x3f41ae36,0x3f69a364,0x3f804455,0x3f89e4dc,0x3f71d94d,0x3f57fb68,0x3f40d7f9,0x3f2957c0,0x3f16bf46,0x3f0781eb,0x3ef00d94,0x3ed6b619,0x3ec583b2,0x3eacd550,0x3e9ef948,0x3e838948,0x3e68913d,0x3e4982b6,0x3e32b0c6,0x3e1ebfb7,0x3e120ec7,0x3e03dc69,0x3e12b9ed, +0x3e16f1f5,0x3e212727,0x3e07cd37,0x3e095183,0x3e185eea,0x3e2fc2cc,0x3e5197af,0x3e73f036,0x3e9c2e16,0x3ed22368,0x3f14cc25,0x3f2f33e5,0x3f516128,0x3f8442f9,0x3fa96495,0x3fc58523,0x3fd653f7,0x3faf0a6e,0x3f9096c0,0x3f71f4ef,0x3f49ef5c,0x3f2a2a6b,0x3f130452,0x3ef682de,0x3ed2e3fd, +0x3ebba23b,0x3e9dfa53,0x3e8938f1,0x3e5c80fd,0x3e38bfa1,0x3e098303,0x3de4a9d7,0x3db05a2c,0x3d963c68,0x3d8259a8,0x3d98f0fe,0x3dab64de,0x3db409e4,0x3d8e10a5,0x3d84f816,0x3dab8c70,0x3dd73d86,0x3e1227b4,0x3e407e17,0x3e9168e9,0x3f3e9798,0x3f6b9f95,0x3f921891,0x3fb029ea,0x3fd9dcaf, +0x3ff22a1c,0x40013d92,0x400390e3,0x400a3886,0x400ac5e1,0x3ff07e4a,0x3fe84c2e,0x3fd0c77f,0x3fb3eb8d,0x3f93445d,0x3f6d76a6,0x3f47a60b,0x3f0bb6c1,0x3edaa722,0x3e9b1f7c,0x3e6ade6e,0x3e2cb4e4,0x3e05bac2,0x3dba2ea2,0x3d9e383b,0x3d95cbd0,0x3dbf1e35,0x3dc71603,0x3dc00f63,0x3db06066, +0x3dc37332,0x3e0a8816,0x3e378052,0x3e82d33a,0x3eb321a8,0x3f0f1009,0x3f5c8572,0x3f874436,0x3faecec5,0x3fd0669f,0x400c0747,0x40196bbf,0x4023c59b,0x402083fe,0x40196f04,0x400af946,0x3fec718d,0x3fd5b50e,0x3fbdd2d1,0x3faba53f,0x3f8cd43b,0x3f65695f,0x3f3e73ad,0x3f1c9ad3,0x3f092ce6, +0x3ece9576,0x3e93cafd,0x3e4c386e,0x3e12a0fb,0x3ddb1058,0x3db24f95,0x3da0b7f0,0x3dc85e64,0x3deecfb6,0x3e17710b,0x3e08d42b,0x3e18db87,0x3e483489,0x3e6254e0,0x3e9d9422,0x3ee6eaf4,0x3f2673ea,0x3f704499,0x3fa91a67,0x3ff14ef7,0x401098c5,0x4030e1a2,0x40410530,0x40513675,0x4050f949, +0x40450a80,0x402d65f4,0x4010e8e5,0x3feae650,0x3fbb2ea8,0x3f94a6c5,0x3f6f6c04,0x3f433c29,0x3f298678,0x3f0e3fa2,0x3f0229e9,0x3edde1a2,0x3ebe64ec,0x3e9bda6e,0x3e7945e1,0x3e300d32,0x3e0e9f66,0x3e32bde5,0x3e1b3139,0x3e35e813,0x3e968330,0x3e248103,0x3e1613e4,0x3e4c60b9,0x3e7b349b, +0x3ea6b0e0,0x3ef2b6cf,0x3f1fdeb8,0x3f8145a2,0x3fb7f921,0x3ff593bb,0x4018d173,0x4042e9ab,0x404051c3,0x40440ed3,0x404dcff7,0x4046a75a,0x4035501e,0x40171824,0x4000470d,0x3fd2dc5f,0x3fa62a3c,0x3f84a7f2,0x3f4f38b1,0x3f1e890f,0x3f0b4e8e,0x3efd2994,0x3ede8c5e,0x3ec2d470,0x3ea2c997, +0x3e8c259e,0x3e597b4d,0x3e2c03e0,0x3e270715,0x3e0af510,0x3e328e1f,0x3ede2639,0x3e468ee1,0x3e2b2a40,0x3e43d377,0x3e6e8b3a,0x3e9ca0cb,0x3ee03986,0x3f28cf27,0x3f6903b4,0x3fa2db49,0x3ffad701,0x40196068,0x40251bb1,0x4028095e,0x40230cce,0x401ac5b9,0x4004b480,0x3ff64886,0x3ff120cb, +0x3fcf4260,0x3fad9375,0x3f8d4ec5,0x3f5b51b3,0x3f333bb5,0x3f1991cf,0x3f0d9d61,0x3f054d4d,0x3ef98662,0x3ed1e7b4,0x3eb3b440,0x3e95a893,0x3e764228,0x3e4fc436,0x3e3889c5,0x3e3c9a38,0x3e4c165b,0x3e925c5e,0x3e564e44,0x3e542cfa,0x3e56bdfe,0x3e8c85c1,0x3eb17e65,0x3ee913fb,0x3f21d012, +0x3f7c0a7b,0x3f8f6a6a,0x3fbd3d7b,0x3fd8239c,0x3ff00159,0x40006621,0x3ffc2816,0x3fe5ea32,0x3fcf3340,0x3fb7dc39,0x3fa333de,0x3f8a9879,0x3f71885f,0x3f56fe51,0x3f42ae5d,0x3f321a6b,0x3f239a85,0x3f269bb6,0x3f243e19,0x3f044c79,0x3f05c8a7,0x3ed932ca,0x3eb93044,0x3e9bef7d,0x3e81b70b, +0x3e63d161,0x3e663786,0x3e716a60,0x3e693e1b,0x3e7852f5,0x3e793387,0x3e7343d5,0x3e91376f,0x3eb7e0be,0x3ef20658,0x3f2753ef,0x3f6139e2,0x3f829a4c,0x3f9877d5,0x3fabfa13,0x3fc77964,0x3fc254d6,0x3fc27310,0x3fc6a5f7,0x3fb7136f,0x3faa41a1,0x3f9e7520,0x3f93d950,0x3f89622f,0x3f7cd823, +0x3f715d43,0x3f682fa5,0x3f5f43f0,0x3f4b8ad6,0x3f3b2a1d,0x3f289759,0x3f196b11,0x3f052ad8,0x3ee8c797,0x3eca938d,0x3ec6a3d1,0x3ea49b5c,0x3eb27d3f,0x3e9cd9c1,0x3eb28c3b,0x3e97d83f,0x3eb907b3,0x3eaa9f7e,0x3edbe5a4,0x3f030b9d,0x3f260f2b,0x3f388f82,0x3f83f138,0x3f66c042,0x3f6794df, +0x3f735fe2,0x3f805b06,0x3f87f36e,0x3f90a701,0x3f9adee9,0x3f957843,0x3f928399,0x3f8ee6d0,0x3f8b5260,0x3f88a98d,0x3f868563,0x3f7f9567,0x3f71516a,0x3f64fd8d,0x3f585513,0x3f4b04c1,0x3f464f80,0x3f5f9691,0x3f222e4c,0x3f1e4eea,0x3f1407da,0x3f0940b4,0x3eff2bbd,0x3f02c6ab,0x3f094bb0, +0x3f05ba73,0x3f0ba72d,0x3f099078,0x3f027902,0x3f1204a2,0x3f1f9e44,0x3f2ceb06,0x3f3af9b2,0x3f4802c4,0x3f5630f7,0x3f42f06e,0x3f4cb6be,0x3f4e416a,0x3f53fc00,0x3f57ce63,0x3f5edbf9,0x3f5a3264,0x3f58706e,0x3f567961,0x3f54cece,0x3f53152d,0x3f526f6f,0x3f4d4b0c,0x3f495853,0x3f44ccae, +0x3f42360d,0x3f39495a,0x3f4ab1b7,0x3f41ef33,0x3f519612,0x3f901f38,0x3f31295f,0x3f414e48,0x3f7dd138,0x3f814463,0x3f7bbbb3,0x3f6bcdd9,0x3f7b5a5e,0x3f7fad13,0x3f77264e,0x3f42a650,0x3f36ec96,0x3f8d1c06,0x3f59bd9c,0x3f6d4476,0x3a027555,0x39d0c1bf,0x39b02e15,0x39cd5d27,0x39dab665, +0x39bad508,0x3a05197f,0x3a016d50,0x39b6451f,0x39c7c806,0x39a7657e,0x3964b203,0x395a0e0a,0x397fb326,0x39ca12d9,0x39d55726,0x39ec54c7,0x39f01fcb,0x39ff0206,0x3a0a2c72,0x3a19f93d,0x3a225b82,0x3a213ed8,0x3a28a2a8,0x39e9d8b8,0x39d3c61f,0x39c01195,0x3a01b437,0x3a0bf8c5,0x3a17f713, +0x3a025ace,0x39f34a60,0x39e4138e,0x39c8a08a,0x39d29b8e,0x3a3e1029,0x39ee1012,0x3a403f3a,0x39f087ac,0x39e9ef40,0x39cd5f21,0x3998a87a,0x3a2585eb,0x3a31780b,0x399fcf1d,0x39f7d320,0x39b97a16,0x39c453b9,0x39466c1d,0x396faa48,0x3a0d7a9f,0x3a106fca,0x3a380c2c,0x3a304b5e,0x3a4ecba2, +0x3a7bf441,0x3a9aec6c,0x3ab09d17,0x3aaf2ec1,0x3aa8eb26,0x3a4274e7,0x3a05b0fb,0x39d713b7,0x3a3ce21f,0x3a6dc9bd,0x3a8510f4,0x3a537588,0x3a1dffb4,0x39f6d0b9,0x39b27baa,0x3a014753,0x3ae669de,0x3a74c0d5,0x3a615f57,0x3a854124,0x3a3f0fe6,0x3a5858be,0x3a1bb79c,0x3ac1cb2c,0x3ab128df, +0x39864575,0x3a2f5ab5,0x3a03803a,0x3adaeb91,0x3a80e423,0x3a7a7456,0x3ac9a2f5,0x3a65a698,0x3a889d0a,0x3a64be58,0x3a97ca19,0x3ad1fed7,0x3b0e95f7,0x3b2cc7e4,0x3b37b822,0x3b351afb,0x3aadcd4b,0x3a2d50d7,0x3a1ac5fa,0x3aadea04,0x3ae2d5c2,0x3b0d2e73,0x3ac80008,0x3a90193f,0x3a3eafa7, +0x3a1b244b,0x3a2cb1f6,0x3b64c496,0x3a81f57f,0x3b18fa21,0x3ab0d4e8,0x3a76754b,0x3a1d920f,0x3aab444d,0x3b0af2e2,0x3b0a3e15,0x3a04489a,0x3a548d61,0x3ac4e6b5,0x3bc9dbdf,0x3ba2a617,0x3b8c938d,0x3b79c280,0x3b117244,0x3b0e7748,0x3ad25c77,0x3b0522d6,0x3b47c470,0x3b8a447c,0x3ba511b9, +0x3baa98aa,0x3bbe464b,0x3b5e6fd5,0x3af0f1ff,0x3a96f601,0x3b0cf1df,0x3b5d3d65,0x3b8647ee,0x3b3e76c5,0x3b1ac587,0x3a867edc,0x3afb3629,0x3aaf7d8a,0x3c14c3e3,0x3b7bdb76,0x3c8b7f7d,0x3b8e2459,0x3b2b541e,0x3bca4d14,0x3c987a46,0x3c0c0fcf,0x3ba23780,0x3b49c91a,0x3bd255ad,0x3b93fad7, +0x3bde30fd,0x3bcff236,0x3bb5df51,0x3b74b911,0x3acaea15,0x3ab04e09,0x3aa93535,0x3aa68b64,0x3ada2e0a,0x3b21b671,0x3b8ffa25,0x3ba8de1a,0x3bbf812d,0x3b5465a9,0x3b12f7ec,0x3ae60373,0x3a19754b,0x3a45789a,0x3b8c57c2,0x3b6b7e9b,0x3b94a304,0x3b8d88fe,0x3bbbd20a,0x3b30485b,0x3be87027, +0x3c4c9d7b,0x3ca47fc8,0x3cd503e2,0x3ba25f96,0x3b927cb9,0x3c81ce65,0x3c592d65,0x3bf3774d,0x3bd5954d,0x3b1900fb,0x3b303c0d,0x3b3f0ece,0x3af43f31,0x3acfd637,0x3ab44107,0x3ac43040,0x3ae5f0fe,0x3ac760c5,0x3aa261d4,0x3ab0dba3,0x3ad8b241,0x3ab4c156,0x3a9eb407,0x3ac19766,0x3adccc29, +0x3aa9e47e,0x3a731544,0x3acc6c20,0x3af1d7f7,0x3af51784,0x3a2192d3,0x3a486a62,0x3b2cb424,0x3bbe7b0d,0x3bb25ead,0x3be2fe11,0x3c7bbef4,0x3c242edd,0x3c3f8412,0x3be5949e,0x3bde4a13,0x3bb10db2,0x3be717fd,0x3b98aed7,0x3c24a722,0x3bd90ffd,0x3bb0748b,0x3b5219ff,0x3ac43945,0x3a93ff75, +0x3ad1cacc,0x3b127c75,0x3b110cd4,0x3abfbed8,0x3af58c2e,0x3add3129,0x3b46dc71,0x3a4071be,0x39eb6b1d,0x3a9ab814,0x3a4a7b3d,0x39ee920f,0x39fa052d,0x39bd509a,0x3918f04c,0x390de729,0x3a5182f6,0x3ab302f4,0x3accc9f9,0x3b112782,0x3b6bf877,0x3bb421c4,0x3beb6a28,0x3cacde3b,0x3cd43fce, +0x3d3cdda5,0x3d34dd2b,0x3ce208db,0x3c3ab59b,0x3bf76bb4,0x3c0691f7,0x3b923b76,0x3b7b8bb6,0x3b5ca3c4,0x3b170551,0x3b1065f7,0x3abcd47c,0x3abefff3,0x3ab69178,0x3ab0ada7,0x3ae13848,0x3ab88eb0,0x3ae6c9be,0x3a80da1c,0x3a863f84,0x3a8d3968,0x3a84c461,0x3a2deeb1,0x3a09038e,0x397d4667, +0x398f398d,0x3a007b3e,0x3a1b294c,0x3a5729bf,0x3b212b4e,0x3b05fc82,0x3b8d2c55,0x3c2f5bb4,0x3c87b4f0,0x3d297d16,0x3d65b8ad,0x3d46361b,0x3cfa8570,0x3c92349a,0x3c617dbb,0x3c8334ec,0x3c665681,0x3bf445d0,0x3b9b7a81,0x3b47cb45,0x3b23d242,0x3af400af,0x3ad305cb,0x3a9cbb72,0x3a8fd9eb, +0x3a979b07,0x3a8b3020,0x3a706d08,0x3a534d34,0x3a0be25d,0x39cf476a,0x3a3589ec,0x39a90d88,0x39c462e6,0x3a451e3b,0x39cecc79,0x39e617cc,0x3a3ad2f4,0x3ad5194e,0x3b61cb99,0x3bcf3691,0x3c8eaf54,0x3ccce5d6,0x3cd196bf,0x3d000c36,0x3ce34aa1,0x3cd35f83,0x3cc5846a,0x3ca4a5de,0x3ca5719b, +0x3cb6c2c4,0x3ca4da51,0x3c725ed9,0x3c0cf553,0x3c012252,0x3c09e700,0x3c2786c8,0x3c26453c,0x3bec37f5,0x3bd261a7,0x3ba9ad89,0x3b6d7343,0x3b3c7c04,0x3aef029c,0x3a2b8372,0x3a540832,0x3a2da028,0x3a16851c,0x3a1b30fe,0x3aa0cc98,0x3b2b6099,0x3b82f363,0x3bbca790,0x3be8c2df,0x3c30097f, +0x3c65b445,0x3c85eb50,0x3c7dfa76,0x3c7d4ed2,0x3c977a93,0x3cb4a030,0x3c63238e,0x3c7d5735,0x3c7b1e32,0x3c8875fa,0x3ca6c1f8,0x3c975ddd,0x3ca54c59,0x3cca0541,0x3c96f2d5,0x3c6d368c,0x3c5d0b57,0x3c36a273,0x3c164fc7,0x3bf841a6,0x3bc53b52,0x3ba004dd,0x3b82a6ec,0x3b393101,0x3afa5a3a, +0x3ac4dae5,0x3a9e602a,0x3a64eb21,0x3aa62e40,0x3ad3695e,0x3b238c5f,0x3b769cf3,0x3b9a8f2d,0x3bbc71df,0x3bfcc7a2,0x3c03dd0c,0x3c13732b,0x3c2cc33d,0x3c391790,0x3c512c54,0x3c6c32ec,0x3c652126,0x3c258276,0x3c24b98a,0x3c19b0ae,0x3c122639,0x3c0eab86,0x3c0ef4a3,0x3c10eae4,0x3c1a1821, +0x3c0a3609,0x3c080582,0x3bff49dc,0x3bf3357b,0x3be490eb,0x3bdfd4d8,0x3bb92967,0x3b99aaad,0x3b77a11f,0x3b486b37,0x3b194a5f,0x3ae2ece0,0x3b07ba2f,0x3b080695,0x3b1ce894,0x3b2d0994,0x3b55502a,0x3b7cc064,0x3b94848c,0x3babd921,0x3bc54cc0,0x3bdf9b60,0x3c0033eb,0x3c101a89,0x3c111ec6, +0x3c136ba2,0x3c153e04,0x3c19f7d1,0x3bf69c12,0x3bfa6719,0x3bf4fda1,0x3bf68994,0x3bf4a323,0x3bfbb322,0x3c00084e,0x3c03f4d7,0x3bfe74b4,0x3bf6df93,0x3bf226e4,0x3be7b165,0x3bdfa566,0x3bdb932b,0x3bcb3689,0x3bbf0857,0x3bb3db86,0x3ba56380,0x3b9bcf81,0x3b887d1d,0x3b983233,0x3ba051e9, +0x3bb08f1c,0x3ba83513,0x3bb19b5a,0x3bc0d65c,0x3bc6e945,0x3bcb6c7b,0x3bd275b7,0x3bdab4f3,0x3be3e244,0x3bf04c43,0x3beccf6f,0x3bede248,0x3bfbd02d,0x3bf67969,0x3c11be46,0x37c468e8,0x37792a2d,0x378997c3,0x37b45bc4,0x37e354ac,0x38428da1,0x37df600e,0x37a036ed,0x36fb89fb,0x37c29d46, +0x37ff4b28,0x382950a4,0x37f78500,0x380952ba,0x3854364c,0x385e70af,0x3852b17e,0x38214934,0x37bfbb4e,0x37934f23,0x378e0817,0x378f3dec,0x379a3721,0x37bd87d0,0x3803f9f0,0x37e3db8c,0x370c29e4,0x37967e13,0x3787a948,0x378d4fdd,0x373bcc72,0x36fb9ee9,0x37630264,0x3716b68f,0x375a85d4, +0x38024ed4,0x3785ecda,0x3796f9dc,0x37cb72f1,0x3891d63e,0x38e5c659,0x394a9307,0x38f9bbfb,0x389a21f9,0x377acce6,0x38433f07,0x3877079a,0x38f51dc3,0x386a279d,0x38f61e26,0x398e4014,0x39b04800,0x39a524b2,0x3955d081,0x38d5d9a7,0x388c41a0,0x3881ca6f,0x3848d2d0,0x3812143d,0x38425198, +0x38ba4249,0x38ab6b4e,0x37c1f916,0x3851ceb4,0x385a5790,0x38a6f5f2,0x389821ac,0x38713b73,0x3899fe2e,0x379c6473,0x375902b2,0x38c00ae6,0x37b8e615,0x3716cd9d,0x385b0132,0x38dd0ec2,0x396c3f35,0x39de275a,0x39b25f98,0x3964b177,0x38b47149,0x38e203ab,0x3941725f,0x39d4cfd0,0x395b870c, +0x398d26ab,0x3a2037a1,0x3a20a524,0x3a1119ce,0x39aeb2c6,0x38ffd01f,0x38b9a415,0x38ef1065,0x388cd065,0x3843a6dd,0x389ffe32,0x394ae3e2,0x391677c0,0x39375d3d,0x390f335d,0x39883550,0x3a2c8233,0x3a25a36b,0x39e2cb1e,0x39a36ad3,0x38867b10,0x37a5680e,0x39609fdd,0x3797fe9c,0x3903f588, +0x389587ac,0x39fdd585,0x3a61502a,0x3acd2dba,0x3a8fce77,0x3a3bd5cc,0x3986d0f8,0x393b2315,0x395c68ea,0x3a6c6357,0x397e3444,0x3a67d8d9,0x3b23bcad,0x3b427050,0x3b29ed8e,0x3adc2881,0x3a618bf8,0x3a36476f,0x3a3258d2,0x39d49efa,0x39394e43,0x39acab0f,0x39e415f0,0x399bdeae,0x3962bfdf, +0x395333d6,0x39651723,0x3a033293,0x3a88ff04,0x3a6e0446,0x3a55cb34,0x39eee4ed,0x39261bd7,0x3a4535ea,0x3956ace1,0x3ad6e9fd,0x3acb2517,0x3b51d56d,0x3b4c2738,0x3b30e5f2,0x3a8c09c9,0x39f0abd7,0x3a2cd23a,0x39b29201,0x3aa0d3bf,0x3b279cfd,0x3b11aaeb,0x3afa86ff,0x3b47282f,0x3b20b1c9, +0x3af47798,0x3aec8b9c,0x3afc17f5,0x3b17cb2e,0x3b0d032e,0x3ad9add7,0x3a90c563,0x3a684f96,0x39e4725d,0x3943c43f,0x3958baf5,0x39882890,0x39adc2a9,0x37fa4a95,0x38379217,0x39ee93d5,0x3a97693f,0x3a7a4419,0x3a606910,0x3a1b9d0d,0x3a868d00,0x3b0f4166,0x3a7875b4,0x3a7247d6,0x3a91e8d4, +0x3b1cca67,0x3b54f50e,0x3b5dc9a9,0x3a725981,0x3a0d0c7d,0x3a24bb6f,0x3b3fc2e4,0x3b0cb8d7,0x3b32e1a6,0x3b2256f0,0x3aa9a98a,0x3a98a3ec,0x3a5930ca,0x3a449118,0x39fcba7e,0x3a1da065,0x39686628,0x39027462,0x3894d598,0x387e2380,0x37b2cf44,0x38eb5d70,0x390ba593,0x394d6608,0x38c8a731, +0x3806454d,0x395d42d6,0x3a433b48,0x3b3b6c25,0x3b379432,0x3ad9e974,0x3a9434a9,0x3c3cd8ef,0x3caf8910,0x3bb2627a,0x3ad80898,0x3b7b6188,0x3b47da2d,0x3b4f97ff,0x3b807dff,0x3b472cd4,0x3b4e7f3d,0x3b12f084,0x3a45b0fd,0x3a9b16ed,0x3ac43607,0x3a8545d0,0x3a6ca2d4,0x3a2271eb,0x39c7d81c, +0x39519d0d,0x393d9cf9,0x38940a98,0x385ac61b,0x3910af85,0x39006a01,0x38a79e7f,0x38cc1a75,0x36bd9e2c,0x37e087e3,0x375705a0,0x3837b320,0x3915c15c,0x3991921b,0x3943e9f8,0x3964c01d,0x3a7b6328,0x3ba667aa,0x3bab4a47,0x3c33532e,0x3b804aae,0x3adf1cb0,0x3b0fbd8c,0x3b03edd3,0x3abd0b75, +0x3afbb5dc,0x3a78a769,0x3a90e611,0x3a34a71c,0x399642e3,0x3a05d321,0x3a2bf2df,0x3a09a4ab,0x39d2caff,0x39d18b18,0x39ab3af0,0x39cfd1f1,0x39d9dc11,0x39bdfac8,0x399b4e84,0x39662a26,0x383977c9,0x3642c435,0x375e6f6d,0x369cfde8,0x373ee454,0x379e1f37,0x36693371,0x36d768df,0x38f9c59d, +0x393953fa,0x397c7054,0x3b1623d4,0x3b925827,0x3b28a8fa,0x3b1b998f,0x3aceb9d1,0x3aa2dc0c,0x3a03f15d,0x399dcae2,0x3a32af44,0x3a56944d,0x3aa57f12,0x3ac9ea5a,0x3adb5213,0x3ab06423,0x3a7708b8,0x3a34eeb1,0x398723e0,0x38b51891,0x390dba2a,0x39a23096,0x3a070b42,0x3a35a7b0,0x3a46e331, +0x3a2bc0b8,0x3a0bf19a,0x3973938d,0x389be7d6,0x3731d2ce,0x3798b8a5,0x380e5c67,0x38203ffb,0x387ad670,0x387c59ea,0x38c75aaa,0x381f10d2,0x389d88b7,0x39c73267,0x3ae7a904,0x3a56c272,0x3a74ca60,0x3a8d737a,0x3a84aaf5,0x3a6d22e5,0x3a4834b8,0x3a55207d,0x3a7ff941,0x3a687b31,0x3a6e676e, +0x3a866c3f,0x3a73ad7d,0x3a4b4422,0x3a06c92b,0x39a1f21e,0x39043187,0x38543682,0x386f138e,0x38d76782,0x3952d23e,0x3974b64d,0x394623be,0x3904fcbc,0x390686e8,0x39040713,0x38fe468b,0x38adb0e0,0x390b068b,0x393f258d,0x398e31a8,0x39a872f8,0x39a82d90,0x39e1e770,0x3a0c992c,0x3a19f3f5, +0x3a2f3723,0x3a1e6ae5,0x3a21a121,0x3a09526d,0x39cfc268,0x398f52e8,0x39456b46,0x393cd3a1,0x395c19bb,0x393a7f28,0x392e17a8,0x39472ca8,0x38e2303d,0x38c14a3f,0x3908938d,0x38ec8e59,0x38f7f760,0x3915ef43,0x3910531c,0x39236514,0x3949c983,0x395fadfb,0x3985438c,0x39a0e55b,0x39800b7a, +0x3983bfd6,0x39b5708f,0x399c1f6b,0x39a347cd,0x39c2c935,0x39cc4f62,0x39e0da4f,0x3a0e15d9,0x3a13277d,0x3a30fe3c,0x3a4a8627,0x3a29a179,0x39de04bc,0x39d6db6c,0x39b89dc5,0x399efbb4,0x397d5a6a,0x394b0c90,0x3928e9cf,0x39330a57,0x392e0b87,0x39338e4f,0x39317295,0x3929e382,0x391f03b1, +0x392511a5,0x3925cb33,0x393279e8,0x3944f356,0x395f4d9a,0x397beb0b,0x398ec85d,0x398d5bb8,0x398ba3f5,0x39975021,0x39a8a67a,0x39c21080,0x39e2b982,0x39da1f33,0x39e05f7e,0x39ed9616,0x39f820f4,0x3a07e01e,0x3a155809,0x3a045cb9,0x39e8ccbd,0x39e28512,0x39ce8963,0x396c3367,0x39638ce5, +0x39558b4e,0x3944a988,0x393c7ffd,0x393366f5,0x392dd089,0x392546ba,0x39265be5,0x392711f3,0x392daacc,0x3933f75c,0x393d8144,0x3945ebde,0x394eec50,0x39562af0,0x395dd50a,0x39669ecd,0x39702011,0x398027ce,0x397f528c,0x398253cd,0x39858602,0x398666c7,0x3989d561,0x39983866,0x39935e72, +0x3993133f,0x398f2d4d,0x39904987,0x398e9653,0x3993e986,0x39843e89,0x397e1f4e,0x397f1c63,0x39785be3,0x39929ef1, }; -const uint32_t orange53_rom_ER16[HRTF_MODEL_N_SECTIONS * 578] = { -0x3f178b3f,0x3e835078,0x3e8afc3b,0x3e7fe6f4,0x3e6b2b78,0x3e7bec73,0x3e5f5a42,0x3e577b27,0x3e7c5c6b,0x3e78ba06,0x3e7b6d61,0x3e6c490b,0x3e6a74f2,0x3e804d74,0x3e71b42f,0x3e4cc856,0x3e592b77,0x3e7abdf9,0x3e5eae52,0x3e5e28f5,0x3e77c0de,0x3e6ea84a,0x3e771035,0x3e729404,0x3e830041, -0x3e86572f,0x3e8378d0,0x3e84a855,0x3e88d79e,0x3e8732a2,0x3e947d49,0x3e8c0a3e,0x3e9a5b09,0x3e91a147,0x3e9263b0,0x3e8cec80,0x3e860436,0x3ee01548,0x3ed52967,0x3ed1b42a,0x3ea0f9d5,0x3e9962dd,0x3e8c5273,0x3e91501d,0x3e879194,0x3e698179,0x3e864bac,0x3e83dce0,0x3e76448f,0x3e816554, -0x3e84810e,0x3e7e0cde,0x3e91398e,0x3e8893a3,0x3e8d2705,0x3e96ad3c,0x3ea96086,0x3ead59e9,0x3eb7839b,0x3eba3341,0x3eb49cff,0x3eb0bbec,0x3edc7342,0x3ef18d84,0x3f00b23e,0x3ef3ff5b,0x3f131665,0x3efe60aa,0x3f1979e4,0x3f12da9a,0x3f129f1d,0x3f058aca,0x3ee702cb,0x3f04bccb,0x3ef9832a, -0x3ec89334,0x3ea995e8,0x3e87a448,0x3e7b05f5,0x3e4d411e,0x3e3eecb6,0x3e2bd6ab,0x3e2efac6,0x3e37487c,0x3e45e08e,0x3e27bfad,0x3e1f3f74,0x3e31dc82,0x3e361569,0x3e53bf97,0x3e616a26,0x3e8205dd,0x3e911c95,0x3ea90787,0x3eb58cf7,0x3eca58f2,0x3ed68b03,0x3eea44fe,0x3f03026f,0x3f06d64a, -0x3f18de26,0x3f2cc639,0x3f3ce2ba,0x3f555516,0x3f6f01ad,0x3f5cb73a,0x3f4abe02,0x3f2d3130,0x3f1adc94,0x3f1a2e6d,0x3f03da95,0x3ec7c0c6,0x3e94abe7,0x3e5a95f1,0x3e2aab94,0x3e0e8b9a,0x3de5c28d,0x3dc0c789,0x3dc4a271,0x3dfd8736,0x3de5b695,0x3de5b533,0x3dc9bd57,0x3de31fba,0x3dfe197b, -0x3e151887,0x3e2a04fd,0x3e5322c0,0x3e6580f9,0x3e9ed425,0x3e99e6ba,0x3ec2ca5e,0x3ed1d96a,0x3ef1b7d1,0x3f0a37d3,0x3f21f1c6,0x3f34c362,0x3f51f2c7,0x3f774830,0x3f8aa29a,0x3fa6411d,0x3f99181b,0x3f886f70,0x3f5d82f7,0x3f32ecce,0x3f3b138d,0x3f216269,0x3ee6c26e,0x3e9b8552,0x3e50dd55, -0x3e1f98b8,0x3dea2887,0x3db7babc,0x3d91ad56,0x3d8ea056,0x3db252b1,0x3daa3ce8,0x3d98d32c,0x3d81038d,0x3d94f1a8,0x3dac3ccc,0x3ddb38d2,0x3e0c5720,0x3e4f9542,0x3e75a979,0x3e90c75a,0x3eb0fc0b,0x3ed7cf9f,0x3eecbce3,0x3f140005,0x3f26ffaf,0x3f3f9c41,0x3f66c857,0x3f878315,0x3fa5649d, -0x3fc25375,0x3fe3088e,0x3fd5f843,0x3fb852f9,0x3f8ee7f6,0x3f630f71,0x3f8bb33e,0x3f6f7549,0x3f42a00f,0x3f128072,0x3ebae942,0x3e844a52,0x3e3cc0fa,0x3e0c925e,0x3dcc643f,0x3dba8e75,0x3dc802b3,0x3dd636ed,0x3dd0c483,0x3d9ea6c4,0x3dab2f28,0x3dc1096e,0x3e14ffaa,0x3e333294,0x3e734824, -0x3e9e2ee2,0x3ee5411d,0x3f0d66a3,0x3f512fc2,0x3f7309aa,0x3f8bdfe5,0x3fba35fd,0x3fda09e4,0x3fed5e9a,0x3ff17ddd,0x4009ced4,0x4009f6b8,0x4006f832,0x40007592,0x3ffa3b20,0x3fd65870,0x3fb9daf8,0x3fae19ec,0x3f8282bb,0x3f6611a6,0x3f220a99,0x3edcf347,0x3e9472a2,0x3e600026,0x3e38d19b, -0x3e0f61e3,0x3df4dc69,0x3e0d2a92,0x3de4c9d7,0x3dbef031,0x3d99e506,0x3dad8df2,0x3dcdd1ba,0x3e0c3e45,0x3e4b836d,0x3e8c4972,0x3ec57783,0x3f056f36,0x3f1a42b2,0x3f39a6ad,0x3f716904,0x3f8be7d4,0x3fab0483,0x3fb06b85,0x3fd8491c,0x3fea32a4,0x400aadbd,0x40169b1a,0x401b4806,0x401ff01d, -0x40114f56,0x4008a878,0x3fc87d78,0x3fd6d984,0x3f959e6e,0x3f66c171,0x3f1e0b27,0x3eed4080,0x3e9da4e0,0x3e75a09f,0x3e4fa595,0x3e1bc3b9,0x3e1a94c4,0x3e6c6328,0x3e178acd,0x3e0787dd,0x3e06fa47,0x3def437f,0x3e14abaf,0x3e53da59,0x3e87326d,0x3eb504d4,0x3ee0ec43,0x3f080915,0x3f18c8d3, -0x3f303221,0x3f4f4b31,0x3f709757,0x3fa07468,0x3fbbc94e,0x3fd5206a,0x400763f5,0x401d37be,0x40327e8e,0x403c28e3,0x403c1b96,0x40340fb1,0x40200d80,0x3ff6eeba,0x3ff034bb,0x3fadbd66,0x3f7fdaee,0x3f27b2ba,0x3ee7339e,0x3ea2f33f,0x3e6a7a76,0x3e4a28e0,0x3e1ecf50,0x3e305021,0x3ebced51, -0x3e383e3d,0x3e160d72,0x3e36240b,0x3e1f1ea5,0x3e3cac0d,0x3e8b5686,0x3e9b10bf,0x3ec690ad,0x3ede43af,0x3f00f1e0,0x3f060ad2,0x3f278ec8,0x3f4427cb,0x3f7b39cb,0x3f935055,0x3fc7a70b,0x3ff46385,0x4019d8d0,0x4032c811,0x404c48e9,0x4052de4c,0x4050208a,0x40477c13,0x40378005,0x4016851b, -0x3fff7163,0x3fb3f91c,0x3f84d585,0x3f20e649,0x3ef69361,0x3e942032,0x3e842060,0x3e5503cf,0x3e374960,0x3e43f1ba,0x3ee10dd6,0x3e2cdaf1,0x3e158322,0x3e2a4120,0x3e366e92,0x3e62b0c9,0x3e8eefa2,0x3eab51fa,0x3ec060e0,0x3ee9f505,0x3effbc92,0x3f13f92f,0x3f1eec30,0x3f48ad09,0x3f837b6c, -0x3fa8a975,0x3fcb47a5,0x3ffb643c,0x4013228b,0x402c1956,0x404531ad,0x404007f6,0x4047ee24,0x4036312e,0x40473608,0x4018d1bd,0x3fff37e0,0x3fa05781,0x3f7bd13e,0x3f16e7f0,0x3eea0f8b,0x3eaef664,0x3e93e518,0x3e6d2c7a,0x3e5e1a29,0x3e5a6598,0x3e90016d,0x3e561722,0x3e4a1480,0x3e2f1bcb, -0x3e5acf44,0x3e74177e,0x3e98b5b6,0x3eb5adb8,0x3ed0d118,0x3eeb6619,0x3f0a65e5,0x3f0ca448,0x3f174ef2,0x3f3c1102,0x3f5aa41a,0x3f87fd0d,0x3fb42476,0x3fcf0c89,0x3ff552aa,0x3ff4e47b,0x4001f32a,0x401d3677,0x4024b707,0x402aaac1,0x402a8186,0x40191730,0x3fc86194,0x3f99e988,0x3f6f15ea, -0x3f27e5ab,0x3ef45e7b,0x3ec098ce,0x3e8cb0c3,0x3e7aa32b,0x3e71ef68,0x3e8fa31f,0x3e7ea074,0x3e65ee1f,0x3e5194cd,0x3e667170,0x3e7cea3b,0x3e9a6552,0x3eab78bb,0x3eda212d,0x3f0c467b,0x3f0dc731,0x3f22cd5d,0x3f237952,0x3f224d6c,0x3f31ea98,0x3f4ab5ad,0x3f63b860,0x3f769b18,0x3f95c29d, -0x3fb25ddf,0x3fc273b0,0x3fe53387,0x3ff5ebf0,0x400a1974,0x400ab29c,0x40020ec6,0x3feedaf7,0x3fb55de1,0x3f89b15d,0x3f67eb09,0x3f333b0c,0x3f11bbcb,0x3ed9800b,0x3ec166e9,0x3e952448,0x3ea41dbf,0x3e8d5a25,0x3e90f81d,0x3e8af8af,0x3ea4b5aa,0x3e8ba96f,0x3ea3c537,0x3eafa446,0x3edf8c95, -0x3ef750d4,0x3f12cab3,0x3f1d1969,0x3f373803,0x3f2e6516,0x3f4b7f7f,0x3f4ae9a8,0x3f57e086,0x3f65efc9,0x3f81155a,0x3f8a7d8e,0x3f9ad77d,0x3faf6f65,0x3fbcdd5a,0x3fd30d2f,0x3fdbb6a8,0x3fd8c525,0x3fdd3293,0x3fb77d1e,0x3f8907a6,0x3f813b8c,0x3f724947,0x3f386537,0x3f32c862,0x3f1c9f7d, -0x3f012630,0x3eb876fd,0x3eb6614a,0x3eb1ff25,0x3eca26df,0x3ed2e876,0x3eb2b9e7,0x3ec02434,0x3ef03243,0x3eed15fa,0x3efff1b5,0x3f0f3aad,0x3f3a8a6d,0x3f39e49d,0x3f45a2e1,0x3f523fda,0x3f652cb8,0x3f6d7dbd,0x3f812c11,0x3f88b803,0x3f8c5792,0x3f984dc8,0x3f9e0739,0x3fa28f9a,0x3fae9112, -0x3fb8d633,0x3faa9c10,0x3fac3a51,0x3fb10b8c,0x3f968251,0x3f5db4ce,0x3f681b77,0x3f85f23c,0x3f3cafed,0x3f2a3703,0x3f3d1795,0x3f33113a,0x3f1f3da7,0x3f271998,0x3f243702,0x3f222eac,0x3f218b2b,0x3f1ae254,0x3f17b080,0x3f1e5022,0x3f25fc54,0x3f4adfcd,0x3f3dd1f6,0x3f6656ee,0x3f541521, -0x3f43c7f0,0x3f66cbb4,0x3f678d22,0x3f7ae646,0x3f75e4fa,0x3f645cb9,0x3f89cfdc,0x3f7a8fca,0x3f8448a7,0x3f94109b,0x3f855617,0x3f95625e,0x3f957dd3,0x3f62a321,0x3f691819,0x3f7d3964,0x3f149348,0x3f201718,0x3f18d146,0x3f290854,0x3f451c7f,0x3f0727df,0x3f0cc8dd,0x3f41f01c,0x3f4ea9e8, -0x3f373b7e,0x3f2a441d,0x3f303d84,0x3f4133d1,0x3f43c1bd,0x3f0ae32b,0x3f09be54,0x3f3c0a11,0x3f1764b8,0x3f12da1f,0x3f1726dc,0x3f0bbf5e,0x3f131fc3,0x3f13b8cf,0x3f18c5d2,0x3f1a4534,0x3f171529,0x3f217ee1,0x3f1afeb8,0x3f227823,0x3f24928a,0x3f1f6190,0x3f276fe1,0x3f243017,0x3f1aef22, -0x3f20fb02,0x3f1ed4c4,0x3fb48688,0x3a4e4a3c,0x3998480e,0x399311b1,0x39b28b1e,0x39bcfb5a,0x39feed0b,0x39953bb6,0x398e7b2a,0x39a0d8b2,0x39ad6d0f,0x39becea7,0x39d10feb,0x39bc4e7b,0x39b16fcb,0x3994ef47,0x399cdf14,0x39b2242a,0x39e8109b,0x39e96277,0x39e23a49,0x39d6eb91,0x39c87972, -0x39b901c0,0x39a9a0f6,0x39b3c4be,0x39a3fb59,0x398d56d7,0x39587e54,0x3943ba1b,0x39325eab,0x397a3d8b,0x398811f2,0x39816e4f,0x399d7340,0x3996fcbe,0x39693f25,0x398ef9e3,0x39f77941,0x39dad77c,0x3a1fd5c4,0x3a43ff16,0x3ac7ac93,0x3a00ebf9,0x39dbea3f,0x3a106327,0x3a11426a,0x3a4ece80, -0x3a748927,0x3a556d3b,0x3a365036,0x39e0002c,0x39edc6ee,0x3a38dc76,0x3a908b4a,0x3a90d467,0x3a957fed,0x3a85e4f8,0x3a5bad3a,0x3a3f2e12,0x3a28d493,0x3a137a15,0x39e93c33,0x3a14d9eb,0x3953fbc3,0x392e4ccf,0x39aba4cc,0x39c80dc7,0x39fb5863,0x39c78a2f,0x3a4e18a1,0x3a648317,0x39e87151, -0x3a033b1b,0x3a08bf29,0x3a21a721,0x3a4e9e95,0x3a82a0ff,0x3b2eb30d,0x3a0e9043,0x39dc8d18,0x3a1375fb,0x3a4edc96,0x3a91ff8c,0x3ac9ad09,0x3aae0c44,0x3a821c96,0x3a01fa87,0x3a231725,0x3a834af1,0x3b0f1d3a,0x3b06cef8,0x3b02cf1d,0x3ae90ec2,0x3aaa4f28,0x3a83a48d,0x3a51b1d7,0x3a623f66, -0x3a2cd2f5,0x3a78e9ad,0x3a139c90,0x39e60415,0x3a58bfa8,0x39d91471,0x3a09dd29,0x396cf69a,0x3a5e981f,0x3a40028a,0x39caa043,0x3a070725,0x3a7cc978,0x3ac52a0f,0x3aaece6c,0x3ae2a5b9,0x3bbdf239,0x3a70fc5c,0x3a865c82,0x3a5f4262,0x3ae346a2,0x3b14ae95,0x3b4096b8,0x3b1a97f3,0x3adab2cb, -0x3a52d225,0x3a848b5e,0x3b07514a,0x3b7773aa,0x3b81a85f,0x3b6ab90e,0x3b42d2bb,0x3b0dba2c,0x3ac48f25,0x3a9310ec,0x3abd25cb,0x3ab927f0,0x3b2f9c39,0x3b025daa,0x3b1a99a4,0x3b7cbc72,0x3a48ddab,0x3a568230,0x39c63c4a,0x3b091d1d,0x3b17ba38,0x3a712a38,0x3a6d7212,0x3a93fe9e,0x3ac27895, -0x3aec9127,0x3b1c5460,0x3be8a305,0x3a8f5357,0x3ab95840,0x3a893c27,0x3b0d61fa,0x3b2903ad,0x3b76d0bd,0x3b4ef9a5,0x3afd3454,0x3a8a13a7,0x3b0233d7,0x3b66955d,0x3bb8b59c,0x3ba3ec3c,0x3b9eeb1e,0x3b87dda9,0x3b3218ee,0x3ae8d779,0x3ac5531a,0x3ad7335c,0x3ad43321,0x3b33a938,0x3b5db9e9, -0x3b714f5f,0x3b877233,0x3ab6d4a6,0x3a7d03eb,0x39915378,0x3aec8b1a,0x3ac6ed14,0x3a99022d,0x3a5de13f,0x3b173630,0x3bba528a,0x3ca4cd86,0x3c7471c4,0x3c22dab0,0x3b5cfea7,0x3bd3456a,0x3b886e4e,0x3bac7995,0x3b78c8eb,0x3b8da907,0x3a3586bc,0x3a546238,0x3b15e339,0x3b1f51d2,0x3b2d5e8d, -0x3bd4ab90,0x3bb213ab,0x3b96e676,0x3b1c7351,0x3aedbc8c,0x3a9d4ea8,0x3abf4556,0x3ac028a8,0x3aa8527d,0x3b87d5cd,0x3bd9a792,0x3beb4f48,0x3c0a4505,0x3bc8f28f,0x3bfbf007,0x3b85e091,0x3bdf8e9d,0x3c33cd65,0x3c9d3914,0x3be3d3b2,0x3b850bed,0x3cbded9f,0x3cae0798,0x3c5a3973,0x3bda7dc6, -0x3b79d959,0x3b93283e,0x3ae152bc,0x3a5de803,0x3a578309,0x3b0dd438,0x3b01c0a7,0x3acdeb2f,0x3a724be9,0x3abda432,0x3aff3f6b,0x3acb52ea,0x3ac71f25,0x3aec7247,0x3af7215d,0x3aafe9d3,0x3aa091c5,0x3ab88598,0x3afdc81d,0x3ab86387,0x3ac58386,0x3aa4b1ce,0x3ad08db4,0x3b286364,0x3b0b3780, -0x3af2ba4f,0x3bd2deb3,0x3bd3a2cd,0x3c492700,0x3c66c276,0x3b53b17a,0x3b8dce87,0x3c438abb,0x3b1ff54c,0x3a73685e,0x3b986121,0x3b561218,0x3b182e98,0x3ab3c7da,0x3a616913,0x39c43abe,0x3a041bc2,0x3a006492,0x3a227800,0x3a277217,0x3a2f305b,0x3a7976bc,0x3aa885a8,0x3a0d4134,0x3a492fc9, -0x3b0da624,0x3aaa0d35,0x3ac1526c,0x3a904958,0x3abd953b,0x3ad325b8,0x3a91e291,0x3a79331f,0x3a7385ee,0x3b21618c,0x3b9756be,0x3bb76e96,0x3c0797a1,0x3a9524df,0x3b41b75c,0x3b3719cc,0x3ba9e19f,0x3bbf49cb,0x3be66994,0x3bb0a1e6,0x3ba56125,0x3c0512b3,0x3b5094b3,0x3b020bbc,0x3b1a556e, -0x3ab707f4,0x3a358b87,0x39546db9,0x390de5b9,0x398f43e4,0x39b1e48f,0x39776cac,0x3a14d6e7,0x3a6d567f,0x39b8ce4d,0x3a35cc76,0x3b1fba5e,0x3aba74d9,0x3aed022f,0x3aa7469b,0x3aee1f75,0x3add2600,0x3aaef913,0x3ab77301,0x3ab0bf0e,0x3adcddc1,0x3b13a888,0x3b2f9459,0x3be51eab,0x3b30aa4c, -0x3b7b159c,0x3bc4afc3,0x3ba18361,0x3d068729,0x3c98f915,0x3c9c3dd4,0x3c47fa19,0x3bf2eb59,0x3b44ed09,0x3ad04bfc,0x3a888767,0x39c39298,0x39d11d0e,0x399d993d,0x3940646a,0x39398bad,0x3a1ef456,0x3a466e38,0x3a8d28ac,0x3a947b2f,0x3a7bfe65,0x3a740cf8,0x3ada13cb,0x3abc713c,0x3ad061a5, -0x3ab4bb71,0x3ac057de,0x3acd0edf,0x3acdd989,0x3b0a17c9,0x3b231383,0x3b8abf57,0x3b7ecaff,0x3bb1f1fe,0x3c0d30b7,0x3c17856f,0x3c5ad207,0x3cc5df20,0x3d0d0695,0x3d59c98f,0x3d88eed1,0x3d21dd64,0x3d1cfb42,0x3c9ffa4b,0x3cc0894d,0x3c986897,0x3bd2e238,0x3b4a1884,0x3b2069b2,0x3a369b02, -0x39f9a09d,0x3a099af7,0x3a60798e,0x39bda66c,0x39a4b552,0x3a38e051,0x39dfd027,0x3a11a5ca,0x3a6e46e3,0x3a444c36,0x3a914a47,0x3a8fe51c,0x3a833851,0x3a7f9efd,0x3ac8b24c,0x3aea8cde,0x3b1f2d36,0x3b35decb,0x3baa9bc0,0x3bc1023a,0x3c73b258,0x3c84c7e4,0x3c49bbf1,0x3ca6a6eb,0x3d015458, -0x3ca62e33,0x3cab9618,0x3cb62cfe,0x3ca392cc,0x3c948abd,0x3c756c8a,0x3c57753b,0x3c5f661b,0x3c3abab8,0x3c0f836f,0x3bac7a02,0x3b9bf4f8,0x3b4d7c56,0x3b0f196d,0x3a8f9a45,0x3a126f21,0x3a26eee6,0x3a1ec00c,0x3a3c21b4,0x3a066d20,0x3acf0ade,0x3b2e5192,0x3b7399de,0x3ba30089,0x3bd1a12e, -0x3be21a6a,0x3c1d4633,0x3c22e8d5,0x3bffc676,0x3c09efbc,0x3c0bcb01,0x3c572280,0x3c879e42,0x3c902cb5,0x3c835257,0x3c6ce7ff,0x3ca92361,0x3ca57bdd,0x3ca34e84,0x3c95f950,0x3c8678e1,0x3c599fdb,0x3c623f70,0x3c4f3a96,0x3c2f314d,0x3c0ed9e1,0x3bebc003,0x3bb66a79,0x3b911628,0x3b548ee7, -0x3aedfdce,0x3a809b97,0x3a447e7b,0x3a1c7ad3,0x3a2e91aa,0x3a541853,0x3ab0fb0d,0x3ae8dacc,0x3b2843ff,0x3b3745ec,0x3b54be56,0x3b6a3a19,0x3b8badea,0x3b974c38,0x3be96ace,0x3bcfbc01,0x3c0f1ac5,0x3c5fa322,0x3c82626e,0x3c9621e0,0x3cb6e548,0x3ca90adf,0x3c3f7010,0x3c47f978,0x3c388c91, -0x3c2fe797,0x3c3dfabc,0x3c3059e7,0x3c20914e,0x3c149dc4,0x3c02b87a,0x3be9cd92,0x3be7001e,0x3ba70476,0x3b88d1d0,0x3b541f26,0x3b2bcc77,0x3b006b44,0x3acdfbf4,0x3a8ba1f0,0x3ad73b5b,0x3aab4b11,0x3ae49488,0x3b06a25c,0x3b424c28,0x3b8bfa4d,0x3bc50d5a,0x3bf8fe4b,0x3c07de53,0x3c2d051a, -0x3c39c838,0x3c4ab7c1,0x3c81e778,0x3ca4a9de,0x3c8af6f6,0x3c786132,0x3c829511,0x3c484089,0x3c1f82c9,0x3c267e85,0x3c305af5,0x3c27fac1,0x3c17a72a,0x3c23900b,0x3c1cd52c,0x3c1fb0a5,0x3c14c6c6,0x3bfd4be6,0x3be16aef,0x3bc37ce2,0x3bae78be,0x3ba2744d,0x3b814e14,0x3b5a2cfe,0x3b603d9f, -0x3b37244a,0x3b2c6b3b,0x3b1d59c3,0x3b388ca5,0x3b876127,0x3ba4a049,0x3bc16f1d,0x3bcef3a3,0x3bd22c69,0x3bfdea97,0x3bed29cb,0x3bf893b5,0x3c09d992,0x3bd7ddb0,0x3bff6e59,0x3c064491,0x3bd46923,0x3bfb8afb,0x3c1e1a98,0x3bac6bda,0x3baf1b8f,0x3baeb6c0,0x3ba9183c,0x3babef74,0x3ba6ad65, -0x3ba48b97,0x3bab7a99,0x3ba18b7f,0x3b9eaff5,0x3b9d202e,0x3b9b4ba2,0x3b9ae4b0,0x3b98baaa,0x3b8b155c,0x3b867933,0x3b8fe7dd,0x3b843458,0x3b764358,0x3b6ff9ed,0x3b7dffb9,0x3b83bbd8,0x3b8628f0,0x3b901f79,0x3b972870,0x3b9ba4a0,0x3bb21052,0x3baed021,0x3bc230ec,0x3bd03f1e,0x3bd2db2e, -0x3bef773d,0x3be2dad3,0x3bc8d2a1,0x3bc7ec0b,0x3bba6422,0x3c604039,0x3818435d,0x37a18744,0x378f48a8,0x3779ff5f,0x374ad6b7,0x37949dc3,0x370dd630,0x36d6d807,0x371bac7f,0x3697b349,0x36cf2de2,0x370ad62f,0x37342b20,0x3750284a,0x36d808cb,0x378e0401,0x37af61bc,0x3789b953,0x376191ee, -0x376b0e43,0x377535d9,0x3793f50b,0x37c01c6c,0x3808b53d,0x38478553,0x38486cb8,0x381dcf8e,0x37c9fcd2,0x37828536,0x378c87ef,0x37901767,0x378b7b01,0x371e36cc,0x37791027,0x37937ca6,0x37e68e15,0x379d14a5,0x38171bf8,0x37391567,0x372f9f31,0x37a5ea2e,0x38a0fe2c,0x37450a0d,0x3716feff, -0x385b8c19,0x387a4406,0x389b2793,0x38a4085e,0x386068b0,0x382f90e9,0x37b8df95,0x3897bc98,0x38a3bfd4,0x381f247b,0x37ede8c8,0x37ee3a92,0x3810559d,0x3803d9c6,0x3847334f,0x38ff3796,0x39152a5e,0x3923de2a,0x394399ff,0x38a5083c,0x389af4ca,0x39022171,0x389ae7ce,0x382fe810,0x375ec066, -0x38867898,0x38e5a92a,0x392a151e,0x38b16af5,0x38f05938,0x38494d36,0x379b87c2,0x378218ce,0x3923c73b,0x37c62db9,0x38578569,0x3941e0c6,0x393326f7,0x39822702,0x39934749,0x38c7f560,0x38a3de06,0x38a0fc6c,0x38cd2dfd,0x38fdf7ec,0x3889a961,0x382e1aaa,0x3882912e,0x38e1e24c,0x38d70a13, -0x39219290,0x39b0fb48,0x3a066f8d,0x3a0b7f72,0x3a01d713,0x395b62e8,0x38c7d9ca,0x395c4e9f,0x38b7abe1,0x3898daf6,0x38073ef5,0x39073d8a,0x39373edc,0x399b3ecf,0x3920c781,0x390f31b9,0x380a67a6,0x380329d1,0x3895da72,0x39d64536,0x38163758,0x38fd4461,0x3a072dd4,0x3a4cb473,0x3a8918bb, -0x3a4ca636,0x39beee8b,0x394117ab,0x396f3696,0x397a0e00,0x39a1b8bb,0x3912c1ba,0x38acbb36,0x3905e08d,0x397bc1e5,0x3943a696,0x3971ba66,0x3a279776,0x3a830cf6,0x3a9f6902,0x3a9603bc,0x39d8058b,0x39b1b658,0x3a57e4a3,0x398f9876,0x3922e02c,0x39566e86,0x3a001a62,0x3a3d5752,0x3a6cde39, -0x39e6262e,0x39fdb43c,0x39133b25,0x3881c08b,0x3883a788,0x3a0a6ccd,0x392dba10,0x39c82cae,0x39fd556d,0x3a22b5ad,0x3a412eb4,0x39ac60ff,0x3916a90d,0x392cf3cb,0x3934903f,0x39537f32,0x3993f9db,0x397309b9,0x38c199b5,0x398be2ac,0x39eda4b8,0x39fcfb77,0x3a1fb778,0x3aabd253,0x3afc032e, -0x3b07c337,0x3af705fc,0x3a5b67fd,0x39757787,0x3a20fa24,0x3976fad7,0x39405f22,0x391cd7a9,0x3a13c5f2,0x3a424480,0x3a8031d8,0x3a157c8c,0x3b5e81e3,0x3b03e7a1,0x3ae340de,0x3a841b32,0x3a10cf71,0x3a9515f8,0x3aa706ef,0x3a9bca28,0x3a338948,0x386fb432,0x37b6a1cc,0x39e84ae9,0x399e350a, -0x39a7f905,0x3986ff81,0x3a0921c7,0x3a9eb9e1,0x3aa63f06,0x3afd48b9,0x3b20c075,0x3b4682eb,0x3b0a89c5,0x3b1de19c,0x3b31e030,0x3b13e7fb,0x3b8fd445,0x3b2a6fa1,0x3b29c0b5,0x3b62e324,0x3aabd199,0x39e873c4,0x3a46520f,0x3a6154d7,0x3adc22e1,0x3b3ff203,0x3b7d2278,0x3a43c563,0x3aebf189, -0x3b4eb54c,0x3ab0a38d,0x3ade2ba7,0x3b1aebd0,0x3b1b346e,0x3a011fbe,0x395d7324,0x3823e0d0,0x38de39be,0x391a65ba,0x38d2f15c,0x38c94ff5,0x37b00937,0x381b275a,0x38a993ae,0x38e37742,0x393cd463,0x3a0a630a,0x39ab28a2,0x3a1b3b4c,0x3a27a691,0x3a90de42,0x3a87214a,0x3b1759e2,0x3b197834, -0x3ac452af,0x3b50e5ba,0x39f80073,0x3a23a58d,0x3a9cf5b3,0x3b5f3769,0x3b76ab0a,0x3b29d3c5,0x3a59865d,0x3b20984b,0x3c1b64a1,0x3b95d4c9,0x3aaf27f5,0x3a6658fa,0x3a02ad92,0x3a439f5e,0x394cae76,0x37986782,0x370e317a,0x35c86d0a,0x373bb01c,0x379ad329,0x38b76489,0x3889142b,0x38052f15, -0x38a432a0,0x386d792a,0x38fddf13,0x38dc2661,0x3840a7b8,0x388da05f,0x38d7e8a7,0x38ec805e,0x39366ad9,0x39a33faa,0x3944c2a9,0x3955d8c2,0x39b7b2cb,0x3a5633c7,0x3a806136,0x3a9139f9,0x3a08ded9,0x3a54c0e0,0x3afadbb6,0x3a8a4ca1,0x3a88975c,0x3bc63fc8,0x3b1da800,0x3a91ab1b,0x3a94d3a4, -0x38c3d33a,0x388598c0,0x395ebb22,0x38d2851a,0x383365cf,0x353e3ca2,0x369ecc40,0x360f89ed,0x38632602,0x37ba70ef,0x37fd97b3,0x373ee886,0x381743b0,0x38a3aea3,0x38e14386,0x372cb22f,0x382a63a0,0x38c7f798,0x39994ffa,0x399d29c8,0x3a3bf0e9,0x39d1ac47,0x397fd6dd,0x3ab54fb4,0x3ad200c5, -0x3b002960,0x3b446a05,0x3ab5d010,0x3ae6fd20,0x3b13d8f2,0x3a12890e,0x3b650dda,0x3c446e3a,0x3bb3e8da,0x3b741b42,0x3ae84ca7,0x392073ec,0x393064c9,0x395c998d,0x383a4f10,0x372eabee,0x374a1447,0x378bacda,0x3681fc0b,0x37ada0fd,0x366d3439,0x3842036b,0x3994e3e9,0x3985c6ca,0x39ae5bc7, -0x39cbab2e,0x398d7ed6,0x399642a6,0x39ac2cfc,0x39e47814,0x3a2e9048,0x3a583e54,0x3a2ca83c,0x39a52052,0x3a626fdb,0x3a5cd3d0,0x3a4a5b50,0x3ac64193,0x3aa41ccc,0x3b071ab6,0x3ad30a7f,0x3abc73b0,0x3b200f51,0x3b798c84,0x3b6da2d2,0x3b31c498,0x39a754e9,0x38ba0c77,0x37e325af,0x3857b4a9, -0x37f1fe04,0x3890dbec,0x381254bf,0x38576c31,0x37423565,0x373eddfb,0x38cb5db5,0x3982a95a,0x39fdfd61,0x3a43fff3,0x3a549f7f,0x3a429192,0x3a03d838,0x39bd6ccb,0x39347592,0x38e0db18,0x39896657,0x3a10a7de,0x3a789d25,0x3aaf731e,0x3b018b72,0x3b08d51f,0x3aab936b,0x3a4c3f9f,0x3a2de0ab, -0x3967a2d4,0x3a24bd27,0x3ac17bb6,0x3a6846e8,0x3a83bd22,0x3a60e8ef,0x3a288d59,0x3a372771,0x3a08f6e0,0x39fb85e6,0x39c544ae,0x39b30439,0x3989a3fd,0x3905873c,0x38f5940a,0x388048a9,0x38a55cca,0x38dbccfd,0x38f970bf,0x3908a9a9,0x39591069,0x39837c93,0x39520200,0x38c83e03,0x3823b11c, -0x38253877,0x3924330d,0x39aff4c3,0x3a1993b2,0x3a435c52,0x3a525321,0x3a405b0d,0x3a523775,0x3a5a3d73,0x3a82e13b,0x3a3ebd5d,0x3a28cfe1,0x3a2d8364,0x3a4ad5f6,0x39190f0c,0x39628049,0x38ead486,0x38cc3fba,0x395edb90,0x3978fddf,0x397e0e19,0x394fc51a,0x3935ca6e,0x392b0e58,0x390d08be, -0x38ff3382,0x39042729,0x397216a1,0x3958d13f,0x3965065a,0x39839bc2,0x39672618,0x395ab806,0x3942d954,0x38eec939,0x388eea8f,0x38814876,0x37b46c04,0x3821099f,0x38d412bc,0x39504051,0x39bd0f48,0x3a19eec3,0x39f180e7,0x39b46d7d,0x39c2033c,0x3990d82b,0x39868dec,0x3980a4fb,0x39290b06, -0x39baa743,0x39d09f1f,0x39f3e6d2,0x3a05d880,0x3a1cbcbe,0x39ffe28e,0x39cfb9b8,0x39bde5ac,0x39cad88b,0x39ae7ef2,0x39e815db,0x399057dd,0x39a63827,0x39a1d4d6,0x397cf174,0x397d613d,0x3995887f,0x3975e7b7,0x39567b7e,0x395300c0,0x39487615,0x392d887a,0x392b8761,0x391cbd07,0x39238ff0, -0x39259302,0x38b5c5ce,0x38982266,0x38b43d7a,0x38a3af0c,0x38dca73c,0x390f8bce,0x393027f2,0x3964dfa9,0x397d1428,0x3992a4ef,0x39d1cde3,0x39e5368e,0x3a08cd7c,0x3a03356a,0x39f0a664,0x3a169342,0x3a1c89d9,0x3a3fd55c,0x3a15e8bd,0x3a01598a,0x39f03ee1,0x39f50552,0x39e536b5,0x39ffbd51, -0x39d95fbf,0x39b41e1c,0x39acc1b8,0x39a1ba35,0x39a7c040,0x39a5c520,0x3986897a,0x3981cab9,0x395d50a4,0x394b34ba,0x39219cc3,0x38f481fe,0x3922f283,0x39066a80,0x390f20cc,0x3927c976,0x3916a961,0x3937c751,0x3944ebf6,0x395672c8,0x39945c00,0x39be0f80,0x38df6836,0x38f1ecdc,0x390160b6, -0x390fb498,0x39198961,0x391de05b,0x39124c95,0x3924bd9f,0x392d5f78,0x393effe1,0x39425709,0x3943b8d3,0x3944dae1,0x3945bd33,0x393074fa,0x39394416,0x393f7fcb,0x3936a240,0x393370e4,0x393c9597,0x3931d4aa,0x39325033,0x392d1c86,0x3930879b,0x392e9273,0x3921c404,0x392638db,0x39165a25, -0x391b349d,0x391834e1,0x39085dbf,0x3908702a,0x390534e0,0x38ef3c0c,0x38f0758c,0x38e39755,0x39dc6f5f, +const uint32_t defaultHRIR_rom_ER16[HRTF_MODEL_N_SECTIONS * 470] = { +0x3ec4941c,0x3eadb6c0,0x3eb76ef4,0x3ea07963,0x3e9de02c,0x3eb2cba1,0x3e9535bb,0x3e8fc3a6,0x3ea64bbc,0x3ea6f21d,0x3ea480fb,0x3ea14bd4,0x3ea6af82,0x3ea94f46,0x3ea70707,0x3e8c6c06,0x3e8d2f39,0x3eb4baca,0x3e937adb,0x3e92d356,0x3ea49ca2,0x3e9b78bd,0x3ea1e6c5,0x3ea4812f,0x3ea778e4, +0x3eab0f3d,0x3eaf6201,0x3eb3a7ed,0x3eb86856,0x3ebdc0f8,0x3ec27da0,0x3ec7447a,0x3ecf6724,0x3eca9e9e,0x3ec607d0,0x3ebcbf2e,0x3eb724e5,0x3ee9bd75,0x3ee24026,0x3ec77c94,0x3eac7b3f,0x3e937f48,0x3e8a4425,0x3e82c96d,0x3e70da98,0x3e6dd277,0x3e69ebbf,0x3e6b837e,0x3e6d14ff,0x3e6673dd, +0x3e5f35db,0x3e648104,0x3e706ed3,0x3e802611,0x3e869d75,0x3e99d663,0x3ea37b33,0x3eac1de6,0x3eb517ee,0x3ebf972f,0x3ec7aa4b,0x3ed34f65,0x3ee2297f,0x3ef00bac,0x3f005cd2,0x3f09fed9,0x3f140096,0x3f1ec13d,0x3f2bd837,0x3f26c94a,0x3f1ca0b1,0x3f0aca8e,0x3eff3f59,0x3f0dcef9,0x3efc1f18, +0x3ec2e60e,0x3e9c6586,0x3e727ed6,0x3e511376,0x3e2f58bc,0x3e1937c9,0x3e09c6b3,0x3e06e3c6,0x3e20e289,0x3e16016f,0x3e12d4e0,0x3e044521,0x3e12072d,0x3e1d1c2e,0x3e32ef69,0x3e49e6da,0x3e683536,0x3e84339d,0x3e9ea0ad,0x3eaced18,0x3ec57fa7,0x3ed6b377,0x3ef01142,0x3f077f9d,0x3f16c213, +0x3f295787,0x3f40d859,0x3f57f4e8,0x3f71da1c,0x3f89f27b,0x3f804225,0x3f6990be,0x3f41b0f3,0x3f243b1c,0x3f317f6f,0x3f12e453,0x3ed32777,0x3e8f9a76,0x3e433523,0x3e11e567,0x3dd99f43,0x3daae522,0x3d84cb0b,0x3d8d4f7f,0x3db3c317,0x3daa32c0,0x3d998368,0x3d81e179,0x3d984b93,0x3db12a61, +0x3de5a3b2,0x3e09dc9a,0x3e385298,0x3e59ed9c,0x3e8a9cbc,0x3e9d2f5c,0x3ebc2334,0x3ed2a3a1,0x3ef6a2d2,0x3f12fd09,0x3f2a2c81,0x3f49ea28,0x3f720008,0x3f909284,0x3faf1ec3,0x3fd6014e,0x3fc5c76a,0x3fa92567,0x3f84ab14,0x3f5021a5,0x3f94b90d,0x3f67e8bc,0x3f3f0301,0x3f0e9606,0x3eb4a496, +0x3e821972,0x3e3781dd,0x3e0ab67b,0x3dc368d3,0x3db034ee,0x3dc00e1a,0x3dc724f7,0x3dbe9c52,0x3d97f3d5,0x3d9bb613,0x3dba5b90,0x3e04e441,0x3e2d8fd2,0x3e681c6b,0x3e961f34,0x3edf6c95,0x3f0a6934,0x3f489e21,0x3f6cfbc9,0x3f9366f3,0x3fb3d280,0x3fd0d7f8,0x3fe85575,0x3ff0634b,0x400ac5a4, +0x400a3f45,0x4003703f,0x40016e46,0x3ff1a539,0x3fdae681,0x3fae8380,0x3fb10bad,0x3f858fd3,0x3f5c795b,0x3f2212c9,0x3eed0ebc,0x3e9f3a4a,0x3e613e46,0x3e49d73f,0x3e16c87b,0x3e0a893c,0x3e157f63,0x3dee0413,0x3dca2313,0x3da0864a,0x3db4ae41,0x3dd7c358,0x3e14ee68,0x3e4e7fcc,0x3e92785c, +0x3ecdc2ba,0x3f09f63a,0x3f1c1b35,0x3f3ec989,0x3f653459,0x3f8ce8ee,0x3fab874e,0x3fbddd72,0x3fd5b5e8,0x3fec7518,0x400af96e,0x401977ef,0x40205eb3,0x4023f8cf,0x401930b8,0x400c77a5,0x3fcf1a1a,0x3ff4bcaa,0x3fa68944,0x3f7559b1,0x3f21ac54,0x3eeee3bb,0x3ea77ac9,0x3e74d732,0x3e4b7c93, +0x3e16e8ea,0x3e2477d6,0x3e983b9d,0x3e3779de,0x3e1ad52b,0x3e3259e3,0x3e0df3cb,0x3e337f3b,0x3e7725e6,0x3e9be2a2,0x3ebf04d0,0x3edd04aa,0x3f028366,0x3f0e0fca,0x3f29a396,0x3f432e41,0x3f6f7303,0x3f94a531,0x3fbb2e69,0x3feae701,0x4010e928,0x402d62e7,0x404517b8,0x4050c701,0x4051692c, +0x4040cd0f,0x40317e37,0x400f8a6d,0x3ffc3af0,0x3fb2095e,0x3f823c96,0x3f260092,0x3ee73e3c,0x3e9c4960,0x3e6cb781,0x3e488069,0x3e2b1be5,0x3e4677a2,0x3edb2f1e,0x3e2d97a1,0x3e0dfeb1,0x3e287960,0x3e2c0a41,0x3e59cb26,0x3e8d4856,0x3ea3a1d1,0x3ec1b896,0x3edc5f6e,0x3efe6747,0x3f0afce0, +0x3f1eb551,0x3f4f180b,0x3f84b251,0x3fa621e7,0x3fd2e58e,0x40004a5e,0x40171686,0x4035521f,0x4046b005,0x404da90b,0x4044335a,0x40401cec,0x404343a0,0x401788e9,0x3ffa01d1,0x3fa4cfd3,0x3f7048b3,0x3f1aa1a2,0x3ee3e6a6,0x3eb51980,0x3e87b8e6,0x3e5ad607,0x3e59bcd3,0x3e56887e,0x3e9045b9, +0x3e4d8e17,0x3e3bbd02,0x3e37b12d,0x3e4cc196,0x3e797bdc,0x3e938f54,0x3eafd6e9,0x3ed7ae37,0x3ef6e093,0x3f05f93e,0x3f0d7a46,0x3f19925c,0x3f334291,0x3f5b4be8,0x3f8d49aa,0x3fad9676,0x3fcf4a71,0x3ff11d56,0x3ff646fc,0x4004bd76,0x401aad6f,0x40231fec,0x40280423,0x4025259f,0x40195e6c, +0x3fbba031,0x3f90aec6,0x3f6c902f,0x3f282dcd,0x3ef3d5b7,0x3ebd38ff,0x3e90c488,0x3e76c721,0x3e759b49,0x3e782407,0x3e624f3e,0x3e713179,0x3e66f307,0x3e63f565,0x3e81e454,0x3e9b8cee,0x3eb491b2,0x3ed9f6af,0x3f038553,0x3f07037c,0x3f21c7d8,0x3f2734ea,0x3f236c4f,0x3f32304d,0x3f429f31, +0x3f570e9e,0x3f717daf,0x3f8a99be,0x3fa3326c,0x3fb7dc54,0x3fcf335a,0x3fe5dff9,0x3ffc2fd2,0x400078bf,0x3fefc045,0x3fd8b899,0x3f990976,0x3f8231e1,0x3f6490ba,0x3f38cf51,0x3f22ebb5,0x3f0090ae,0x3edbcabf,0x3eaa4e32,0x3eb98847,0x3e97d428,0x3eb26f3d,0x3e9c48eb,0x3eb247f4,0x3ea3b1c8, +0x3ec60de8,0x3ecbf7e3,0x3eee0494,0x3f04602e,0x3f19f41a,0x3f27770d,0x3f3ba9c6,0x3f4b8daf,0x3f5f4062,0x3f6833b9,0x3f715b43,0x3f7cd1dc,0x3f89635d,0x3f93db84,0x3f9e73c7,0x3faa42c0,0x3fb71319,0x3fc6abd1,0x3fc26bf2,0x3fc24e2f,0x3fc786f5,0x3fabd365,0x3f673659,0x3f6848c9,0x3f81ce4b, +0x3f383eeb,0x3f2ce52c,0x3f1fa07a,0x3f11e47c,0x3f01fc1c,0x3f09a4f8,0x3f0c0f6b,0x3f055fe9,0x3f093b6c,0x3f02fdd7,0x3f0053c3,0x3f09b4eb,0x3f141aae,0x3f1ea0ee,0x3f221058,0x3f5efd9c,0x3f47b0be,0x3f4aecbd,0x3f5836d7,0x3f650a25,0x3f714a58,0x3f7f98b8,0x3f8686fd,0x3f88a935,0x3f8b5131, +0x3f8ee6f9,0x3f92833c,0x3f9577b3,0x3f9adc39,0x3f90ab60,0x3f87f296,0x3f805f26,0x3f7363e7,0x3f42fc73,0x3f55092d,0x3f48545a,0x3f590cb3,0x3f8b0291,0x3f37f31a,0x3f4280b7,0x3f77230e,0x3f7fa4f2,0x3f7b9029,0x3f6bdb46,0x3f7b9d90,0x3f81473a,0x3f7ddf02,0x3f4127d9,0x3f30d2e5,0x3f910d06, +0x3f51aa97,0x3f41cdeb,0x3f49bb80,0x3f3933ee,0x3f425396,0x3f44c691,0x3f495a64,0x3f4d4b08,0x3f526e57,0x3f5315aa,0x3f54cfa0,0x3f5679dd,0x3f5870b7,0x3f5a339c,0x3f5edd18,0x3f57cca1,0x3f53fda7,0x3f4e3880,0x3f4cc8c4,0x3f6d42f8,0x3a0275b6,0x39cd5682,0x39b07af0,0x39d0bcdc,0x39ee21a9, +0x3a3e6342,0x39d2abb8,0x39c876c9,0x39e3c197,0x39f2c880,0x3a022e1a,0x3a17bee3,0x3a0ba504,0x3a01aa8b,0x39c01f9a,0x39d406f4,0x39ea90b1,0x3a28ad8d,0x3a20d0a7,0x3a2238d4,0x3a1a028d,0x3a0a2c54,0x39fefec6,0x39f0201c,0x39ec57c3,0x39d55491,0x39ca335f,0x397ff08a,0x395a37a8,0x396490a5, +0x39a7840e,0x39c7e576,0x39b63213,0x3a014f31,0x3a050069,0x39bad6c7,0x39dacd98,0x39ea25fb,0x39ef478a,0x3a40966c,0x3a74b5ce,0x3ae59896,0x3a014ee4,0x39b281ec,0x39f72643,0x3a1e8a35,0x3a540d5e,0x3a8543fb,0x3a6ede32,0x3a3cbf4f,0x39d6d15e,0x3a05a400,0x3a41158d,0x3aa8c1bc,0x3aafcf2d, +0x3ab0bdb7,0x3a9adf6b,0x3a7bec35,0x3a4ed099,0x3a304c14,0x3a3804c4,0x3a10728b,0x3a0d2ccb,0x396fd2a2,0x3946abb4,0x39c5426e,0x39b956d4,0x39f781d4,0x399fed63,0x3a31d636,0x3a25d54a,0x3998bfcc,0x39ccfd90,0x3a3f07a6,0x3a85b384,0x3a6151d4,0x3a8175cf,0x3b662e67,0x3a2b1c49,0x3a1befb6, +0x3a3e96a0,0x3a8faa81,0x3ac76c96,0x3b0d1aba,0x3ae1b6fe,0x3aae6804,0x3a1b56ce,0x3a2c796b,0x3aafc186,0x3b352b8b,0x3b37403d,0x3b2cb5d0,0x3b0e9e34,0x3ad20629,0x3a97c7fe,0x3a64b1fd,0x3a88a5b2,0x3a659a58,0x3aca3622,0x3a7a0ad3,0x3a80a761,0x3ada3b2a,0x3a038a55,0x3a2fa5a3,0x39866b84, +0x3ab0bc16,0x3ac15ff3,0x3a1b9b2a,0x3a58d718,0x3a76646b,0x3aafdd1a,0x3b187a78,0x3b7dbba7,0x3c12f382,0x3ab11671,0x3af85534,0x3a86e95a,0x3b1aafee,0x3b3efb05,0x3b865621,0x3b5d0aed,0x3b0c90f5,0x3a95df32,0x3af531dd,0x3b592301,0x3bbf3c8b,0x3bab0f06,0x3ba53d0f,0x3b8a5164,0x3b47d9f9, +0x3b051551,0x3ad286d4,0x3b0e6c82,0x3b11943f,0x3b7858aa,0x3b8cf5fe,0x3ba324f4,0x3bc96ef3,0x3ac576a2,0x3a544ddb,0x3a034fc4,0x3b0ada38,0x3b0b7dbc,0x3aaac6be,0x3a1e4bca,0x3b2bc7a6,0x3b8ead8a,0x3c8be9fb,0x3c4b9f32,0x3be743e0,0x3b31c1fd,0x3bba4920,0x3b8d2737,0x3b94e10e,0x3b6a0b50, +0x3b8d04ee,0x3a443038,0x3a18a3db,0x3ae8df7e,0x3b12d45d,0x3b52b6f2,0x3bc13588,0x3ba95353,0x3b8fa912,0x3b2287ae,0x3adae0eb,0x3aa66609,0x3aa952c0,0x3ab03a2e,0x3acb531c,0x3b732d8a,0x3bb6a636,0x3bd0bb03,0x3bdec92a,0x3b9430f2,0x3bd13f3b,0x3b496b51,0x3ba2846d,0x3c0bfb1c,0x3c98a2be, +0x3bc9f7e7,0x3ba37850,0x3cd4835f,0x3ca5ebd3,0x3c7ae80c,0x3be3f1ba,0x3bb5ca2a,0x3bb7ab20,0x3b2fbd27,0x3a44d45d,0x3a20029e,0x3af67167,0x3af0ee78,0x3acca8e1,0x3a724373,0x3aaa6f5f,0x3adef476,0x3ac10a83,0x3a9d12cc,0x3ab7cf5e,0x3ad7fecc,0x3ab0aedd,0x3aa248a4,0x3ac7e7f3,0x3ae5bcaa, +0x3ac46c16,0x3ab3b33c,0x3ad05693,0x3af4c4ae,0x3b3f7171,0x3b30bf18,0x3b18956f,0x3bd3a9dd,0x3bf3e8fd,0x3c59a2a8,0x3c81a153,0x3b922b9b,0x3be75c41,0x3c402fee,0x3c25d88b,0x3be20cfc,0x3bb03b00,0x3b6f1969,0x3b0f2814,0x3ad0d728,0x3ab38b94,0x3a46de13,0x390cab2b,0x3918d614,0x39be5c89, +0x39fb4944,0x39f089ed,0x3a4e9736,0x3a98ea2e,0x39e19d04,0x3a438ff8,0x3b46a5f2,0x3adc15be,0x3af5cf3e,0x3abff3de,0x3b1119cc,0x3b1282cb,0x3ad1891b,0x3a943cba,0x3ac49b07,0x3b51efe1,0x3bb080e2,0x3bd933a3,0x3c23ba35,0x3b992965,0x3be7ee57,0x3bb10098,0x3bdd810e,0x3d3f9cfa,0x3cce2716, +0x3cb23084,0x3c8ce20c,0x3c2ca9f4,0x3b8b016f,0x3b0a8cae,0x3b184891,0x3a5534c7,0x3a2080ff,0x39f53c0d,0x398e69ee,0x397caa09,0x3a0d785a,0x3a2d5d95,0x3a862dc2,0x3a8cd31c,0x3a86265a,0x3a832a2e,0x3ae67cf8,0x3ab7be04,0x3ae15cac,0x3ab0e24c,0x3ab68832,0x3abf169f,0x3abc5c2b,0x3b10ad4b, +0x3b172690,0x3b5cc036,0x3b7b98da,0x3b924109,0x3c061fe4,0x3bf784e2,0x3c3a25c8,0x3ce3161b,0x3d3342fc,0x3d45aab5,0x3d6567ea,0x3d2c3551,0x3d049afd,0x3ccd44f2,0x3ccf4580,0x3c8d6a61,0x3bcd246d,0x3b5fa0c3,0x3ad28efa,0x3a3e5f72,0x39e46a97,0x39cbfa33,0x3a4cfa55,0x39c72bef,0x39a9c0f1, +0x3a385b94,0x39d1c025,0x3a124d12,0x3a5487dd,0x3a6e46a4,0x3a8b611e,0x3a981a2f,0x3a8fb5b7,0x3a9ccdf5,0x3ad26a2a,0x3af430bb,0x3b23eeea,0x3b47e792,0x3b9b697c,0x3bf48b20,0x3c6561bf,0x3c83a223,0x3c61b72e,0x3c9227a1,0x3cfaa3a4,0x3cc5c34a,0x3cd25256,0x3cdaf0b0,0x3cb529cb,0x3c9aef2e, +0x3c828270,0x3c7be01d,0x3c88a6ce,0x3c630f36,0x3c300839,0x3be8b02c,0x3bbca24b,0x3b82b1c4,0x3b2c144f,0x3aa153bb,0x3a1a4d5b,0x3a1787da,0x3a2f8a7d,0x3a53dd2b,0x3a2c689d,0x3aee1f09,0x3b3c8a5b,0x3b6d7746,0x3ba9ae76,0x3bd26860,0x3bec0c2e,0x3c2666b5,0x3c27b384,0x3c09c897,0x3c012c46, +0x3c0d12ad,0x3c71a146,0x3ca52b4c,0x3cb702f4,0x3ca56e20,0x3ca47d37,0x3c7ab705,0x3c7f06c3,0x3c679276,0x3c61f2ef,0x3c66adc5,0x3c4d2bc3,0x3c392f8e,0x3c2b4384,0x3c14012e,0x3c04755a,0x3bfc810e,0x3bbcaa77,0x3b9aaeec,0x3b769272,0x3b23ac5a,0x3ad38cd2,0x3aa80843,0x3a62abb4,0x3a9d60cb, +0x3ac54a35,0x3afa1aa7,0x3b3936af,0x3b82a03b,0x3ba005c5,0x3bc53b53,0x3bf83105,0x3c165e50,0x3c36b311,0x3c5d0b3b,0x3c6d2df0,0x3c96f32b,0x3cc9f5b8,0x3ca53d41,0x3c9755c6,0x3ca6bc40,0x3c888922,0x3c19d172,0x3c240050,0x3c237704,0x3c195609,0x3c15dc89,0x3c1453b0,0x3c118b25,0x3c106b79, +0x3c004117,0x3bdf7660,0x3bc55683,0x3babd123,0x3b947988,0x3b7c9f56,0x3b5556c8,0x3b2cfcc8,0x3b1c9244,0x3b089a0e,0x3b08236c,0x3ae25616,0x3b1958bf,0x3b487999,0x3b7795e4,0x3b99abe7,0x3bb9283d,0x3bdfcf9d,0x3be48551,0x3bf32e5f,0x3bff3adf,0x3c0808f9,0x3c0a399d,0x3c1a258f,0x3c10f1a7, +0x3c0ef9f0,0x3c0eabbd,0x3c121e72,0x3bf4f394,0x3bfacfbd,0x3bf7dcc4,0x3bf73533,0x3bfb4908,0x3bedc9b3,0x3bec7cfb,0x3bf01ee4,0x3be3ce1d,0x3bdab7fe,0x3bd26f09,0x3bcb69cb,0x3bc6eb5e,0x3bc0d76f,0x3bb19828,0x3ba83b6a,0x3bb07dfa,0x3ba02f9b,0x3b981473,0x3b8882e3,0x3b9bd09d,0x3ba55f30, +0x3bb3dc79,0x3bbf08b8,0x3bcb3780,0x3bdb9666,0x3bdfaa15,0x3be7b62c,0x3bf22d75,0x3bf6def3,0x3bfe6f32,0x3c03efe6,0x3c0005c9,0x3bfbb17c,0x3bf4a5fc,0x3bf68aaa,0x3c11bd12,0x37c46a06,0x37b413e2,0x37899257,0x377918f2,0x3785bc48,0x38023cbb,0x375a6b6d,0x3716669c,0x375fb641,0x36fdd6c0, +0x373b3e50,0x378cec31,0x3787f1e7,0x3796786e,0x370b6fb2,0x37e3d614,0x38049241,0x37be30ac,0x37994c1e,0x378ebaad,0x378e1323,0x37935cef,0x37bf7d77,0x38212a8f,0x3852b690,0x385e74c8,0x38546f5b,0x38099105,0x37f7cbc7,0x3828fc4e,0x37ff973c,0x37c2a930,0x36fb0ff0,0x379fed9a,0x37df3905, +0x38428bdf,0x37e35200,0x3891f2d3,0x37cc25d1,0x3796cd9e,0x37b8f747,0x38bff1c6,0x3759d808,0x379bb5f8,0x389b2949,0x386e75a7,0x3898ca18,0x38a78be3,0x385af2bd,0x3851d42d,0x37c2cbce,0x38aba4ef,0x38b90eae,0x3840ba5d,0x38159c77,0x3849a028,0x3881dd72,0x388c23cb,0x38d62b47,0x3955ff23, +0x39a52109,0x39b04403,0x398e0c3b,0x38f5a4ef,0x3869bb16,0x38f62158,0x38768647,0x3842f8b8,0x377a346e,0x389a8158,0x38f9febe,0x394aa33f,0x38e58626,0x38dcfe50,0x385b115a,0x37179890,0x37980323,0x396190d3,0x37a6c535,0x3886af0f,0x39a2e271,0x39e3e7a2,0x3a254bf9,0x3a2c965d,0x3987b9ca, +0x390f4396,0x393717a8,0x39164dec,0x394ae6af,0x38a27a71,0x383e08fe,0x388cd848,0x38ee443e,0x38ba29e9,0x38ff2e94,0x39ae7bc1,0x3a111bf5,0x3a20a6dc,0x3a208764,0x398d5e4e,0x395bce1b,0x39d41b9e,0x3941baf3,0x38e2c3f0,0x38b5c9a0,0x39641b01,0x39b21823,0x39de1606,0x396c7176,0x39fbdba4, +0x389af8a7,0x3902870d,0x39577246,0x3a430991,0x392544ac,0x39efb1bf,0x3a5699c3,0x3a6f44bf,0x3a87fae1,0x3a026fd6,0x39652654,0x39524698,0x3966ff9d,0x399b693b,0x39e32cfe,0x39ab656d,0x3940b8f1,0x39d3cc7b,0x3a336101,0x3a35b310,0x3a61ebe6,0x3adc6f4b,0x3b29e87b,0x3b427757,0x3b2340d4, +0x3a67c3e2,0x397dabdf,0x3a6c4892,0x395d2292,0x393a5d52,0x3985b1dc,0x3a3c32fb,0x3a9018a4,0x3acd2fa7,0x3a61580b,0x3b51439f,0x3acb9fb8,0x3ad70cd3,0x3a8675f9,0x3a1dc301,0x3a5ffc49,0x3a795e4a,0x3a97abf3,0x39eea77f,0x3834fdf0,0x37f47c3c,0x39ad45f1,0x39861361,0x395cab69,0x39442b47, +0x39e42af5,0x3a67fbeb,0x3a90ad6f,0x3ada6ae8,0x3b0ca817,0x3b1814a4,0x3afb650e,0x3aed6f07,0x3af43469,0x3b20e982,0x3b45f21f,0x3afb6cbf,0x3b123457,0x3b27d741,0x3aa0d5f7,0x39b301e8,0x3a2b4f5c,0x39f16672,0x3a8c2bdf,0x3b30f4ba,0x3b4bf248,0x3a72f26e,0x3a7591b6,0x3b10f00a,0x3a92589f, +0x3ad578db,0x3b39afc9,0x3b38b60c,0x3a45e036,0x3958ab27,0x380588b0,0x38cadbd8,0x394d64b2,0x390a0e43,0x38e96d94,0x37b300c8,0x38707599,0x3898022c,0x38fa24bd,0x39750110,0x3a1d25e9,0x39fbc2f6,0x3a44b968,0x3a5962dc,0x3a98b6c6,0x3aa9cdb5,0x3b21515e,0x3b338f8c,0x3b0d2b95,0x3b3fb0da, +0x3a24cb5d,0x3a0d2f1c,0x3a70dde6,0x3b5e9fc2,0x3b55d7e5,0x3b1c9e55,0x3a924196,0x3bb313dc,0x3caf395f,0x3c3ce497,0x3ba540bd,0x3a789959,0x39638081,0x3943417c,0x399291c0,0x39172aa8,0x3835d7ce,0x375c01dc,0x37de4f9d,0x36c46d0e,0x38ce73b5,0x38a6cb88,0x38fdc3e5,0x390ecdaf,0x385c33fd, +0x38947963,0x393d1292,0x3951430e,0x39c7e31c,0x3a229736,0x3a6c915c,0x3a856877,0x3ac32c73,0x3a9bb3d2,0x3a467148,0x3b12915d,0x3b4f73fe,0x3b46bf35,0x3b7f4275,0x3b501f9f,0x3b47d64a,0x3b7b7587,0x3ad7199f,0x3b818067,0x3c328d3d,0x3bab6607,0x3b91a438,0x3b15db9e,0x397cd815,0x393a622f, +0x390126e1,0x36d7c6d6,0x3670bac7,0x37a2a80f,0x3740da9e,0x369d0559,0x37651b47,0x364afcb5,0x3835c839,0x39623923,0x399bdfcc,0x39c193dd,0x39d9b23e,0x39d02630,0x39aac7ba,0x39d2512b,0x39d2964d,0x3a09b3f6,0x3a2b663a,0x3a060688,0x39964ae7,0x3a34a799,0x3a91007c,0x3a7917aa,0x3af9ab36, +0x3abdc2ad,0x3b04233b,0x3b0fca5d,0x3addfd61,0x3acdf600,0x3b1afd16,0x3b2929ae,0x3ae646a6,0x39cb5a7a,0x389dafd2,0x3819d063,0x38c0b8e3,0x38820748,0x38774511,0x38215cca,0x380d423e,0x379a4a94,0x372e0c23,0x38a06ab4,0x3974da47,0x3a092688,0x3a2ecad8,0x3a46f04c,0x3a35df3b,0x3a06b1be, +0x39a24ad2,0x390de179,0x38b523bc,0x39875c0b,0x3a346613,0x3a774c78,0x3ab06358,0x3adb58f9,0x3ac9fc35,0x3aa593ed,0x3a564f24,0x3a333833,0x399e1b6a,0x3a042d18,0x3aa2adc3,0x3a8cf949,0x3a759eaa,0x3a53ea4e,0x3a2e54bb,0x3a1b6246,0x3a0e3672,0x39e1eac5,0x39a92d09,0x39a7b804,0x398f4686, +0x393dced8,0x390cf1e3,0x38a995e6,0x38fe8764,0x390411e0,0x3904b83e,0x390155bf,0x394909ae,0x3971f7a2,0x39507a2f,0x38d96306,0x386d97ab,0x3854f1ca,0x39043bad,0x39a1f947,0x3a06b61c,0x3a4b59dc,0x3a73db89,0x3a865696,0x3a6e9451,0x3a687c0f,0x3a7f8744,0x3a554cbf,0x3a482a8c,0x3a6d1ed6, +0x3a84b967,0x3a08eb1e,0x3a22a7b6,0x3a1ea291,0x3a25c88e,0x3a47bd6f,0x3a2fa15a,0x3a136da9,0x3a0d4cd4,0x39e194c8,0x39cd33b0,0x39c2b2d2,0x39a3bbe8,0x399c100d,0x39b5ed9b,0x3983eb6b,0x398082c7,0x39a1a69c,0x39851918,0x395f63d1,0x3949d9fa,0x392357b0,0x391054b4,0x3915d0f8,0x38f7f796, +0x38ec8da5,0x390898d7,0x38c1241a,0x38e2270f,0x3947013d,0x392e1b9a,0x393a85d2,0x395c0437,0x393cda41,0x3945621d,0x398f56bd,0x39cfba07,0x39b863b2,0x39d7a464,0x39df303a,0x39cdad6e,0x39e06d96,0x39e74c36,0x3a043732,0x3a152f6f,0x3a07d87e,0x39f84319,0x39ed84b8,0x39e05140,0x39da2f9b, +0x39e24fcc,0x39c1d6a6,0x39a83e07,0x3996a679,0x398b8371,0x398d3c2a,0x398ea37f,0x397bf81b,0x395f515c,0x39450013,0x39327ccd,0x3925c7f7,0x3925142f,0x391efb66,0x3929deb3,0x39316244,0x39338420,0x392e0a97,0x39332ab1,0x3928e28c,0x394af7d1,0x397d6541,0x399ef918,0x39558eb7,0x396379fe, +0x396c4c3c,0x397920b2,0x39802e0c,0x397ed4aa,0x398463b9,0x3993fc95,0x398e9ec8,0x39903fbf,0x398f3192,0x399314d8,0x39936179,0x3998529c,0x3989ef72,0x398693a3,0x3985cc4a,0x39826868,0x397f4ea8,0x39802805,0x39701d8b,0x39669ce2,0x395dd18c,0x395629c0,0x394eee88,0x3945ee30,0x393d83cf, +0x3933fa02,0x392db0b4,0x39271386,0x39265737,0x39253cfa,0x392dce3c,0x39336a79,0x393c7fe4,0x3944b0c9,0x39929d53, }; -const uint32_t orange53_rom_ITD_W[658] = { -0xba773024,0xbc7b8866,0xbf03adc8,0xbe273b5f,0x3dc62328,0x3f0d837b,0xbf4f06f5,0xbed27096,0x392f4622,0x3e5106bb,0xbe265e5d,0xbf24a800,0xbf46a4af,0xbdf86b3a,0xbe495158,0xbf2f31d2,0xbf65ebc3,0x3f07e433,0xbd690db8,0xba960f32,0xbee02a44,0x3b597acc,0x3dc6147f,0x3d00041a,0x3eaac519, -0xbf1362c4,0x3f90caa3,0x3f1f1187,0x3e3a9742,0x3e514cd4,0x3f3fe488,0x3f1f6edb,0x3de2aacf,0xbe8763c5,0x3e0342b4,0x3e5f476c,0x3f537a85,0xbf130440,0xbe20a8c3,0x3ecb279f,0x3e9e5e29,0x3c9a935b,0x3d0a5363,0x3e967285,0x3f8d977a,0xbf0e8537,0xbf3e2882,0xbffe7b8a,0xc0294691,0xc0446af1, -0xc0640893,0xc01e023a,0xbfea7d2f,0xbfa16fcf,0xc027f3eb,0xc04aee78,0xbfa004bb,0xbfff48d6,0xbef33219,0xbe7f4581,0x3f4a6c27,0x3ed36eac,0xbc8519b8,0xbef62d3a,0xbeef37eb,0xbe7913f3,0x3eceb345,0x3f9dce92,0x401d7eb3,0x40250b36,0x402ea009,0x3facb174,0x3fee03bb,0x401c24da,0x407a1364, -0x40419dda,0x401ec47b,0x3ff24165,0x3f82eb79,0x3e103373,0xbf919126,0xbf452650,0x3c8b3180,0xbe0475b0,0x3dea73d7,0xbfc2daad,0xc03db31b,0xc06be3fd,0xc0a4ae22,0xc0b9344b,0xc10535ef,0xc0eb92e2,0xc119050f,0xc11a705b,0xc1309b17,0xc10c9487,0xc10607bb,0xc0e135f0,0xc0b4d8ba,0xc099e16c, -0xc0303310,0xc00f34c1,0x3e4da1aa,0xbb17a107,0xbebc1730,0x3fc5180f,0x404435fa,0x409ff48d,0x40afcb6b,0x40ddc3cb,0x410d7d37,0x410b43eb,0x4130af48,0x411c922f,0x41143b76,0x40f36c18,0x410182e2,0x40ca8e60,0x40a1022c,0x40642b0f,0x40513c86,0x3fa64891,0x3ec91dbf,0x3cd39f0e,0x3e93293e, -0x3d9392bf,0xbf168e96,0xc024a359,0xc0b21cae,0xc0eeb041,0xc121ef93,0xc13d2d84,0xc15c86da,0xc15a31a3,0xc15a4902,0xc14c3311,0xc142297d,0xc15397d4,0xc11c122b,0xc0fe084c,0xc0c5b2ee,0xc003667f,0xbf8d875c,0x3f00f59c,0x3d6f470c,0x3c8959b2,0x3fad965e,0x4037550f,0x409be148,0x410966f0, -0x4118d941,0x414d964b,0x413abc0d,0x41450fd3,0x4156cbd3,0x41676aff,0x41504d5e,0x41446e48,0x411ae998,0x40f95071,0x40b2edd5,0x402178f3,0x3f12936a,0xbf19b0d0,0xbef828f8,0x3f724c7a,0xbfa9c7fc,0xc03cea15,0xc0e03abd,0xc10d8699,0xc14309b0,0xc165d4f6,0xc189b6fe,0xc1957256,0xc1a2127c, -0xc1c5feee,0xc1bf8239,0xc1b28a2c,0xc1805445,0xc1824740,0xc14979f5,0xc1228791,0xc0f08d71,0xc0473a0c,0xbf543e84,0xbe11d561,0x3f58e5e3,0x3ffedc54,0x40e2770d,0x4120716e,0x414df63f,0x417e3fa5,0x418c510e,0x41aed3d9,0x41be4871,0x41c2a473,0x41a73c94,0x41996bbe,0x41892f80,0x41683d7f, -0x41455161,0x410bcf82,0x40d79d07,0x40723948,0x3fa73536,0xbee70b3b,0xbe7571a6,0xbf8e3c7e,0xc03d1702,0xc0b3ad28,0xc10ec650,0xc1391973,0xc173d57c,0xc187983a,0xc19bcda3,0xc1ad02ed,0xc1c4249b,0xc1bead30,0xc1b88209,0xc19515e4,0xc182825e,0xc154e9a0,0xc117f257,0xc0ca7fca,0xc04aedf8, -0xbe9b11d8,0x3ddc5f31,0x3f56f576,0x4042ed65,0x40d86a5d,0x411990d2,0x41571542,0x417c0be2,0x41926180,0x41bb2918,0x41c46d8c,0x41c646ee,0x41a89fc9,0x41985b03,0x41873bde,0x4172c615,0x413d5595,0x41053fb3,0x40c7d17d,0x402809ae,0x3ead4cea,0xbeb3e426,0x3e3a0778,0x3f1b42ee,0xc05872c1, -0xc0ee83f3,0xc12a7df9,0xc16d4185,0xc1916b58,0xc1a299af,0xc1bd98d4,0xc1cbf478,0xc1e9c9bf,0xc1dd5624,0xc1ca1682,0xc19c883c,0xc1914093,0xc1740a03,0xc13f2033,0xc0f4a8ce,0xc072c2d2,0xbd8c3f76,0xbe059be3,0x3e77d68b,0x405bc120,0x40ed91ab,0x413db33c,0x41709d8a,0x4193b753,0x419e29fe, -0x41c33b3f,0x41d77398,0x41eb6aeb,0x41cebbe0,0x41bed916,0x41a8f1e5,0x418d70e2,0x41685a4c,0x41331a85,0x40e1dee4,0x406bbe5d,0x3f7939f1,0xbed872f1,0x3d0a46c4,0xbf396d9a,0xc0884d49,0xc0e2cf6f,0xc13c8de3,0xc178ff3d,0xc19a5f74,0xc1ac7470,0xc1ca6f0d,0xc1e40d54,0xc202a43d,0xc1f43865, -0xc1dbce52,0xc1a7dbbb,0xc19b2f4f,0xc17e3a9e,0xc142f9f2,0xc0eafb6d,0xc0567878,0xbf6b67ed,0xbd9be67d,0x3f78357d,0x405c1bff,0x40eabcd7,0x413c171e,0x4181cd27,0x41999ef0,0x41aa3fa8,0x41db13a8,0x41f85c6d,0x42039827,0x41e2e2da,0x41ca4dc7,0x41acc42a,0x419b89b5,0x417c2629,0x413bdbf7, -0x40d80862,0x4072122f,0x3e0be2ef,0xbc275e94,0xbd1ae5ef,0xbf05b304,0xc02e6f82,0xc0f7bbe3,0xc132b8cc,0xc1725315,0xc197146a,0xc1b08adb,0xc1d1990e,0xc1f13a3f,0xc206eb83,0xc1f7604b,0xc1dbd4f2,0xc1b018e9,0xc1a3d176,0xc1810daf,0xc14a9681,0xc0e6c6c7,0xc04a51bf,0xbee9fe81,0x3e8b7b27, -0x3cd2855d,0x40603b12,0x40e0363a,0x414c1d0c,0x417ed80b,0x41a68b50,0x41a89816,0x41e1344a,0x41f38e1b,0x42063404,0x41f0ef25,0x41cf5472,0x41aef960,0x4194868d,0x417c2b29,0x41322920,0x40f5f841,0x4045ac10,0x3f1e7ada,0xbf20dceb,0x3e712177,0xbf45d5d3,0xc05bffc9,0xc0c929a9,0xc12a06dd, -0xc1663b47,0xc192bca2,0xc1a19c5c,0xc1c8e7df,0xc1d90128,0xc2009f8b,0xc1dc3638,0xc1cac954,0xc1aee238,0xc19aafb9,0xc17bcc6e,0xc13959e0,0xc0eb45e7,0xc03cd9ad,0xbf4a1ee6,0xbe98ebcf,0x3f514073,0x403d3178,0x40f27301,0x4136a40a,0x417a6d67,0x419a482c,0x41aff533,0x41ca538d,0x41df09d3, -0x42003e57,0x41d8cae2,0x41c74507,0x41a80033,0x41912aee,0x4167bf2e,0x411f5fec,0x40d44ce0,0x402bc493,0x3f7e63b2,0x3e0951b2,0x3e1b5bbd,0xbe18339b,0xc028161d,0xc0c5cc29,0xc11c8dab,0xc14bae07,0xc18476ef,0xc1a612e9,0xc1b48609,0xc1cdbf88,0xc1d10346,0xc1cef08c,0xc1b840e0,0xc1a5cfb8, -0xc18cbb4e,0xc15dc9f8,0xc1282c54,0xc0b533ab,0xc025997c,0xbeb2a659,0x3ee1452a,0x3f89cc24,0x40018f80,0x40ac0243,0x4128fa87,0x415be5b7,0x418e8314,0x419e0237,0x41b91f90,0x41cbc585,0x41d24e3d,0x41ca41a6,0x41b889df,0x419efb53,0x4189e639,0x414174c1,0x4123d2b8,0x40b95046,0x405f6297, -0x3dd26065,0xbf19f30d,0x3d4ef167,0xbf2d8a6a,0xbffa18b2,0xc099bc57,0xc1000610,0xc133650f,0xc1651b0f,0xc17fcfe6,0xc1961fb0,0xc194e374,0xc1abedfa,0xc19a7591,0xc197a8d1,0xc1847d70,0xc163fe03,0xc135d908,0xc1080043,0xc094b4a5,0xbfa31b69,0xbbd2ccdf,0xbe56f8aa,0xbf2b2a34,0x3fd25fe2, -0x40a27dbf,0x41008f3d,0x413a2152,0x4165e8a2,0x4182118b,0x419ac58c,0x419def34,0x41a77da9,0x41997504,0x4192b326,0x4184b2a6,0x415cc9ba,0x413ae700,0x410034f9,0x40a92bea,0x3fc40c9b,0x3ea2bda3,0xbb25403d,0x3e266746,0x3f1ac502,0xc01d10da,0xc061625d,0xc0c41f5c,0xc1090843,0xc12466f3, -0xc1488258,0xc15660cd,0xc16e21f9,0xc174346e,0xc1715281,0xc156fe4f,0xc1526913,0xc12d9852,0xc106926d,0xc0c8efb1,0xc059c07a,0xc0117b9b,0x3e7bc677,0x3e305db4,0x3f011454,0x3fc16886,0x4052c76b,0x40d6bdfa,0x4103e547,0x412cf18b,0x414de6e5,0x4152e2b9,0x41660891,0x417a5ef4,0x41672ffb, -0x4157fb01,0x413f87e4,0x412a55c5,0x40fbd24e,0x40bcb9fa,0x404e4c2c,0x3ff4e981,0x3d3ddcdc,0xbed42c82,0xbd9f9f46,0x3dd2b685,0xbf538bc0,0xc015ac3f,0xc054b83d,0xc08a99b3,0xc0ba8710,0xc0fdc791,0xc0f715d7,0xc10bc105,0xc10c7266,0xc116f430,0xc10104cc,0xc10bf16c,0xc0c3f1e6,0xc0b49fa4, -0xc08a023d,0xc03364ce,0xbf821081,0x3e447398,0xbde79a51,0xbf077b66,0x3fed1a48,0x401b9b73,0x408e5126,0x40acead5,0x40cf077d,0x410b0333,0x41046095,0x411d2e30,0x410a6714,0x41123f7a,0x40f1c252,0x41023e20,0x40c2aa21,0x409174cd,0x40702a72,0x401fc634,0x3f5c17ee,0xbe40bd56,0xbc32a4d4, -0x3d68bdf9,0xbd8d516d,0x3f459735,0xbf9c2656,0xbfe68d3e,0xc0130791,0xc0555012,0xc03fc8a0,0xc0715308,0xc0311b01,0xc02a0cb4,0xc01fe8a1,0xc04e3724,0xc042e009,0xc026b4b9,0xbfe7863a,0xbf0cf592,0xbf45a4aa,0x3f512e27,0x3e8cd1df,0x3ceee54d,0xbd944155,0xbf399b37,0x3f0bd5ad,0x3f668ba5, -0x3ff7beaf,0x401e01a9,0x40337b2f,0x4039dc80,0x401b3c64,0x40292f00,0x402e96cd,0x4076f197,0x4028ce75,0x40319657,0x40074345,0x3f068279,0x3fb40d93,0xbf3d4c01,0xbe51e53f,0x3c53c481,0xbcf93022,0xbe8f47cb,0x3d9fecd3,0x3efb08dc,0x3f6ec2a3,0xbf17c776,0xbe5e3617,0x3d998dd2,0x3edef495, -0x3c882a94,0xbe3a3dfa,0xbe009052,0x3e354abd,0x3d5ea5b3,0xbf07c739,0xbf74752e,0x3f0ef7b6,0x3da8196c,0xbe4895ec,0xbdcb28c1,0xbb96b9ca,0x3ea4886d,0xbd99e869,0xbd938929,0xbf2a2e58,0x3f3a93dc,0x3ecc0e98,0x3e373e46,0x3d15762f,0x3e4be118,0x3e4ea28f,0xbdacaf0d,0xbe9b93a2,0x3e57ae73, -0x3ed6d5d3,0x3f19f1a4,0xbf1cf61a,0xbef1a63c,0xbdd51e31,0x3e864d8e,0xb93b94a5,0x3c3c26b9, +const uint32_t defaultHRIR_rom_ITD_W[658] = { +0xb58b2818,0x3bdea435,0xbef12e52,0xbdeb5ab7,0x3dab4e66,0x3f042e6d,0xbf409841,0xbe91c05f,0xbd4540cb,0x3ee4982c,0xbe4f34d7,0xbf3c944d,0xbf5f4288,0xbe93aac2,0xbe41b919,0xbf30a7bb,0xbf8323e1,0x3ebe1f75,0xbebaee5e,0xbe7b161f,0xbf02cc15,0x3b313b38,0x3f0434ee,0x3e8240b5,0x3ec41384, +0xbebd76c6,0x3f817fba,0x3f2f49e6,0x3e3d1acf,0x3e95178f,0x3f5ba8c7,0x3f366b13,0x3e4c380a,0xbed1f70f,0x3da000be,0x3e8ed0a6,0x3f3c34bd,0xbf08b389,0xbd9e0cca,0x3e05095b,0x3ef1ac80,0x3da7646f,0xbcd0576f,0x3e83e76e,0x3f870465,0xbf1894ad,0xbf475073,0xbff88503,0xc0368ecb,0xc03cf196, +0xc072281a,0xc0177033,0xbfe11f51,0xbfa3dc3f,0xc01c4557,0xc036030a,0xc0057814,0xbfb60610,0xbef03ace,0x3e105793,0x3fa28542,0x3e9390c2,0xbba00d1b,0xbe99f207,0xbfa3a0da,0xbe329ba0,0x3eef141d,0x3fb9604c,0x40058f0e,0x4036eac0,0x401b7835,0x3fa743f6,0x3fe5dc68,0x401807dc,0x406e3515, +0x40399f8f,0x4037b7c7,0x3ffabd23,0x3f51dc1c,0x3f11a8f6,0xbf868061,0xbea0be67,0x3e09ea72,0x3cb8fdf8,0x3d41b101,0xbfb65ff8,0xc03bf299,0xc073eb6a,0xc09e3e70,0xc0c35434,0xc10268f5,0xc0f009f8,0xc118ddc8,0xc11dbb79,0xc12f3e4a,0xc10f9075,0xc10e9eca,0xc0d71c87,0xc0c2d2c4,0xc09c2687, +0xc0576d3e,0xc0055163,0x3e82debc,0x3badfac7,0xbe6eaf52,0x40053d26,0x405a59a1,0x409c4343,0x40c19a0e,0x40d7610f,0x410e34f6,0x410ff7f9,0x412ea206,0x411d1d19,0x4118a0f1,0x40f2541a,0x41037e4c,0x40c22d26,0x409e4443,0x406f3393,0x40402602,0x3faf849f,0x3d8b554d,0xbe2c2ebf,0x3d948941, +0x3d2231a9,0xbf6e5daa,0xc0336e2e,0xc0a8eb01,0xc0fc02f9,0xc123b49c,0xc1402f1e,0xc1584796,0xc15dae2a,0xc158ed3f,0xc149806f,0xc13ee4d9,0xc14acf5b,0xc1201682,0xc0f44e3f,0xc0b1b00b,0xc0115e20,0xbf4ec420,0x3e806a7f,0xbba98019,0xbea22a89,0x3f5828ad,0x400b10a9,0x40b15dfc,0x40f70caf, +0x411f85c0,0x414bc624,0x413ddd2b,0x414ad6e9,0x4159d274,0x415e32eb,0x41565a70,0x413e20ab,0x4125001d,0x40fb332d,0x40ad4c24,0x402d2626,0x3f6e2f39,0x3d22a1eb,0xbf0868cd,0x3e484687,0xbebe35a1,0xc06a13bd,0xc0d1fb34,0xc116a96b,0xc13b9278,0xc16a85d2,0xc18a84f9,0xc194d83a,0xc1a6d552, +0xc1c7a9f8,0xc1bec1da,0xc1affb6c,0xc18bd4cb,0xc17b5d4b,0xc1594c14,0xc11b7ad0,0xc0ead5ac,0xc051caf1,0xbefed7d9,0xbc244ad5,0x3f3f4031,0x4043f176,0x40f41469,0x411c273a,0x415524f7,0x417d97f6,0x418a8f88,0x41b18d8e,0x41bccb0a,0x41c6e201,0x41a66b18,0x419649f6,0x418d6aba,0x4165f40e, +0x413f593f,0x410e8ffc,0x40e376c9,0x40423d2f,0x3f93fd14,0xbefadb88,0x3dcb74bb,0xbec4bafe,0xc0491930,0xc0bc64c1,0xc106cd5e,0xc13c55d7,0xc16ec205,0xc187c9a9,0xc199add6,0xc1aa80fe,0xc1c2e324,0xc1c28229,0xc1b6c418,0xc18fbdd3,0xc182cf78,0xc150c967,0xc11cbea1,0xc0c60d2f,0xc058d77d, +0xbdc696c7,0xbd4c91cf,0x3eedfc3c,0x4031efb9,0x40cd1379,0x4120a93a,0x414cc239,0x4182992c,0x4192e331,0x41b58a74,0x41c31486,0x41c4d3b1,0x41a850fe,0x419ac62d,0x4184c65a,0x4174490f,0x413cbea7,0x410dcc8e,0x40b67855,0x403c05d2,0x3f7658b4,0xbf12b170,0x3e4d00d6,0xbec4afc0,0xc06b2ece, +0xc0db7ea0,0xc1366ced,0xc16883c8,0xc19132b1,0xc1a9c0c3,0xc1bcd9d1,0xc1cda911,0xc1ead274,0xc1ddb75c,0xc1cb6e86,0xc19d6762,0xc19531ac,0xc16f7c4a,0xc13eab02,0xc0f1f9e0,0xc06610ae,0xbede93fc,0x3c7f6440,0x3ee43583,0x407af194,0x40e9b99a,0x413e780f,0x4176828b,0x41930777,0x419c4ac4, +0x41cd0134,0x41dd1356,0x41ea55b3,0x41d18157,0x41bb5d6b,0x41ada31f,0x418cbf5a,0x416f064f,0x412d45a3,0x40f0a04b,0x404c67aa,0x3f408590,0xbec391cb,0x3e8888bc,0xbf1a79c5,0xc05ebdb7,0xc0f607be,0xc1376ab7,0xc17a861c,0xc19a2949,0xc1ac49c4,0xc1ca1345,0xc1e389da,0xc202fc1c,0xc1f2d133, +0xc1da81c3,0xc1a937de,0xc19a64bc,0xc181e5bd,0xc13f25b2,0xc0f058b5,0xc060eabd,0xbf2b5a81,0xba97a4f2,0x3f44d227,0x4055392b,0x40f773bc,0x413f88c9,0x417eb54b,0x419eae8b,0x41a6cda5,0x41da352c,0x41f44fef,0x42021d12,0x41e2bc75,0x41c772b8,0x41ac3195,0x4198b8e9,0x417e4a9c,0x41361918, +0x40efad91,0x405dd351,0x3f4fa137,0xbefadd76,0x3e303dab,0xbeff1d70,0xc03e6e76,0xc0e27315,0xc1311d28,0xc17deb9b,0xc192720f,0xc1b2f6f4,0xc1ceaf1d,0xc1f0fd0c,0xc207f214,0xc1f6eec5,0xc1e1a91c,0xc1abfec2,0xc1a44555,0xc1823b56,0xc14a7926,0xc0e25e7e,0xc05ac922,0xbd53612f,0x3c2063f0, +0x3e114bae,0x406ce829,0x40da5dbe,0x414b1b36,0x41815591,0x41a0fd1c,0x41add2b7,0x41dff175,0x41f72558,0x42095887,0x41ed60fe,0x41d4ce6e,0x41adef88,0x4193a66a,0x41796b04,0x412fda46,0x40f0593d,0x40326178,0x3f7ca8fa,0xbf0506d6,0x3e5225ca,0xbefe77da,0xc04bdfe8,0xc0e0684d,0xc12401df, +0xc16567c4,0xc194598d,0xc1a6f4b2,0xc1c6b039,0xc1da7a34,0xc1fee55c,0xc1dda00b,0xc1c98614,0xc1ac4d3e,0xc19b50f8,0xc17b2795,0xc13946e7,0xc0ec60db,0xc02fd19e,0xbf4c5a0b,0x3c86e034,0x3f4506d7,0x4021303e,0x40ea933b,0x413ae8c1,0x417beacd,0x419e0996,0x41aacc01,0x41ce87c1,0x41da0f56, +0x41fe759f,0x41dd0d97,0x41c3e8b2,0x41ae3f9f,0x418fa3ac,0x416c6c0e,0x41234cb3,0x40d84ed7,0x402e6c9a,0x3f99953b,0xbf2db5c2,0x3e17f13b,0xbf103fd9,0xc032008a,0xc0b468e4,0xc124c695,0xc14c9e19,0xc18465dd,0xc1a47806,0xc1b65293,0xc1cc1f4f,0xc1d2578c,0xc1cc171a,0xc1bd3051,0xc1a4d02f, +0xc18cd9aa,0xc15e907c,0xc127a8e9,0xc0ba5e7f,0xc00619d9,0xbe95b48e,0xbd76d1d9,0x3f4c2ee9,0x40097cd0,0x40c30eef,0x4123bd6c,0x41608b2f,0x418cb178,0x41a84a69,0x41b7e3c8,0x41d0292d,0x41d0a163,0x41ca86d6,0x41ba7cb3,0x419e40f7,0x4185c880,0x414b4303,0x411b404e,0x40c8c7b8,0x403be377, +0x3f1e4cc8,0xbe656d64,0x3e72b440,0xbf498fe9,0xbfc563a2,0xc0a0aea5,0xc0f19ec6,0xc1328cb9,0xc1662568,0xc1814e66,0xc1936ff3,0xc19dd5da,0xc1a9041a,0xc19db580,0xc19591c4,0xc182adae,0xc1690c64,0xc136b991,0xc109ab08,0xc08bbbb9,0xbfdeeee1,0xbeb0938a,0x3db07eb9,0xbe9599ba,0x3fe00334, +0x4092181a,0x4102c698,0x41362901,0x4169e62a,0x417fdcdf,0x4198b33f,0x419b4fbe,0x41aa4978,0x419e1480,0x41908af3,0x418646ff,0x4160a358,0x413a7e76,0x40fd5ee2,0x40a726de,0x3fa54a05,0x3f080a3f,0xbe884f05,0x3db5c83b,0x3ddc1bda,0xbffb2bd5,0xc06a1ed8,0xc0c79899,0xc102accb,0xc1260d18, +0xc148b4a3,0xc15994e2,0xc1655362,0xc178e08b,0xc16ab2d9,0xc1575d67,0xc154f16e,0xc1285272,0xc10ab3de,0xc0c76b66,0xc07386d5,0xbfcc78a1,0x3e2350e6,0xbc2c411e,0x3d8c9b9a,0x3fd193a9,0x406e8c02,0x40cce933,0x410af747,0x412834e2,0x41571b62,0x4154b953,0x416caa7a,0x4177b6da,0x416547bc, +0x415ae1f3,0x4145145d,0x41277121,0x40ffc8b4,0x40c02b58,0x406ab1ee,0x3ff80d26,0x3e8e90b7,0xbf1672ce,0x3b560fa6,0x3da4d277,0xbf600a9c,0xc017f206,0xc050626a,0xc09815f0,0xc0c02960,0xc0fb401c,0xc0ee243d,0xc1140ffc,0xc10acac2,0xc11b2f18,0xc1012a32,0xc1084e02,0xc0cce087,0xc0b04131, +0xc08d10aa,0xc01e66a0,0xbfcca653,0x3ea47efb,0xbb2a6bf3,0xbedb3309,0x3fc88c0b,0x4020946f,0x408a5261,0x40afdbce,0x40ccb7fb,0x410753ad,0x41026313,0x411a5387,0x410b521e,0x411416a5,0x40ed5519,0x40fec8fb,0x40bf36e4,0x409b36b0,0x40581198,0x4019e4b3,0x3f4945b6,0xbdb16dfe,0xbe18f38a, +0xbc3f4b47,0x3e31e305,0x3f223f24,0xbf908181,0xbf9f9ba9,0xc0082545,0xc03d210a,0xc04c4486,0xc0767961,0xc02a5b92,0xc0318818,0xc0195e4b,0xc04ea657,0xc04d4c8b,0xc018c8be,0xbff32a7c,0xbf70b388,0xbf1b7a6a,0x3f569f48,0x3e586f06,0x3be4cbbc,0xbe0b9c3b,0xbf4f4eee,0x3f171168,0x3f803a93, +0x3ff51d26,0x40197f17,0x404fa9f2,0x404bb200,0x401b31bf,0x40304f4d,0x402a4aff,0x4076deb1,0x40477666,0x403d5b3e,0x40036b64,0x3f91a31f,0x3f8e43da,0xbf12aa6e,0xbe243012,0x3e1f1af8,0x3b474372,0xbeb76881,0x3dd787d4,0x3ee10b6c,0x3f4dd46f,0xbf1fb182,0xbe50f566,0x3da88563,0x3f0178e5, +0x3c678a1c,0xbdeb0ba5,0xbe2218a5,0x3e58dcde,0x3d71aaa0,0xbef80fb9,0xbf3d07e1,0x3f3485be,0x3db783c0,0x3c142933,0xbed36b04,0xbb9f1f49,0x3ebfdc23,0xbcc7652e,0xbdb4e6cd,0xbf3be092,0x3f399c4e,0x3ef2eb6a,0xbd93a618,0xbe480d88,0x3e1bd187,0x3df79a5d,0xbc53f8d6,0xbf002186,0xbd41bc42, +0x3e5c0f28,0x3f2ad402,0xbf3cc2c3,0xbedc59d1,0xbe021816,0x3ea43429,0x3d349309,0xbab986b3, }; -const uint32_t orange53_rom_ITD_azimBsShape[84] = { +const uint32_t defaultHRIR_rom_ITD_azimBsShape[84] = { 0x3f800000,0x3f3a9fbe,0x3f03126f,0x3eaf9db2,0x3e5d2f1b,0x3e000000,0x3d83126f,0x3cdd2f1b,0x3c03126f,0x3a83126f,0xa5800000,0x00000000,0x3e8374bc,0x3ede353f,0x3f0ad0e5,0x3f178d50,0x3f180000,0x3f0ed917,0x3efd9168,0x3ed4fdf4,0x3ea95810,0x3e800000,0x3e3a9fbe,0x3e03126f,0x3daf9db2, 0x3d5d2f1b,0x3d000000,0x3c83126f,0x3bdd2f1b,0x3b03126f,0x3983126f,0xa6000000,0x00000000,0x3c66bdc8,0x3d57b901,0x3de1cac1,0x3e39af72,0x3e855555,0x3eaf1aa0,0x3ed756b3,0x3efb38a9,0x3f0bf7cf,0x3f155555,0x3f18aec3,0x3f16872b,0x3f0fc3ed,0x3f054a69,0x3ef00000,0x3ed19423,0x3eb11bfd, 0x3e90624e,0x3e6263ab,0x3e2aaaab,0x3df8d4fe,0x3daec33e,0x3d6a2798,0x3d1374bc,0x3caaaaab,0x3c2ec33e,0x3b9374bc,0x3aaec33e,0x392ec33e,0xa6800000,0x00000000,0x392ec33e,0x3aaec33e,0x3b9374bc,0x3c2ec33e,0x3caaaaab,0x3d1374bc,0x3d6a2798,0x3daec33e,0x3df8d4fe,0x3e2aaaab,0x3e627984, 0x3e90b9af,0x3eb242e7,0x3ed44f30,0x3ef55555,0x3f09e60f,0x3f17152a,0x3f21735f,0x3f283c13,0x3f2aaaab, }; -const float orange53_rom_ITD_azimKSeq[19] = { +const float defaultHRIR_rom_ITD_azimKSeq[19] = { 0.000000f, 10.000000f, 20.000000f, 30.000000f, 40.000000f, 50.000000f, 60.000000f, 70.000000f, 80.000000f, 90.000000f, 100.000000f, 110.000000f, 120.000000f, 130.000000f, 140.000000f, 150.000000f, 160.000000f, 170.000000f, 180.000000f, }; -const uint32_t orange53_rom_ITD_elevBsShape[28] = { +const uint32_t defaultHRIR_rom_ITD_elevBsShape[28] = { 0x3f800000,0x3e97b426,0x3d17b426,0x00000000,0x00000000,0x3f1097b4,0x3f04bda1,0x3e800000,0x3d97b426,0x3c17b426,0x00000000,0x00000000,0x3e07e6b7,0x3eca4588,0x3f155555,0x3f0ca458,0x3ebc0ca4,0x3e2aaaab,0x3d4a4588,0x3bca4588,0x00000000,0x00000000,0x3bca4588,0x3d4a4588,0x3e2aaaab, 0x3ebda12f,0x3f12f685,0x3f2aaaab, }; +const float defaultHRIR_rom_ITD_elevKSeq[16] = { +-90.000000f, -78.000000f, -66.000000f, -54.000000f, -42.000000f, -30.000000f, -18.000000f, -6.000000f, 6.000000f, 18.000000f, 30.000000f, 42.000000f, 54.000000f, 66.000000f, 78.000000f, 90.000000f, +}; #undef WMC_TOOL_SKIP diff --git a/lib_rend/ivas_rom_TdBinauralRenderer.h b/lib_rend/ivas_rom_TdBinauralRenderer.h index ccb5362c9a4a7d691e8fe738bcd83b4a23bf2187..e60a72783a8e18ef6559b3abedf4966627c8c88e 100644 --- a/lib_rend/ivas_rom_TdBinauralRenderer.h +++ b/lib_rend/ivas_rom_TdBinauralRenderer.h @@ -41,30 +41,31 @@ /*------------------------------------------------------------------------- * TD Binaural rendering related ROM tables *------------------------------------------------------------------------*/ -/* TD renderer HRTF default model Orange53 */ -extern const float orange53_rom_latency_s; -extern const int16_t orange53_rom_azimDim2[18]; -extern const int16_t orange53_rom_azimDim3[18]; -extern const int16_t orange53_rom_azim_start_idx[18]; -extern const int16_t orange53_rom_azimSegSamples[1]; -extern const int16_t orange53_rom_azimShapeIdx[18]; -extern const int16_t orange53_rom_azimShapeSampFactor[18]; -extern const float orange53_rom_elevKSeq[16]; -extern const uint32_t orange53_rom_AlphaL48[578 * 128]; -extern const uint32_t orange53_rom_AlphaR48[578 * 128]; -extern const uint32_t orange53_rom_AlphaL32[578 * 86]; -extern const uint32_t orange53_rom_AlphaR32[578 * 86]; -extern const uint32_t orange53_rom_AlphaL16[578 * 43]; -extern const uint32_t orange53_rom_AlphaR16[578 * 43]; -extern const uint32_t orange53_rom_EL48[HRTF_MODEL_N_SECTIONS * 578]; -extern const uint32_t orange53_rom_ER48[HRTF_MODEL_N_SECTIONS * 578]; -extern const uint32_t orange53_rom_EL32[HRTF_MODEL_N_SECTIONS * 578]; -extern const uint32_t orange53_rom_ER32[HRTF_MODEL_N_SECTIONS * 578]; -extern const uint32_t orange53_rom_EL16[HRTF_MODEL_N_SECTIONS * 578]; -extern const uint32_t orange53_rom_ER16[HRTF_MODEL_N_SECTIONS * 578]; -extern const uint32_t orange53_rom_elevBsShape[28]; -extern const uint32_t orange53_rom_azimBsShape[21]; -extern const uint32_t orange53_rom_ITD_W[658]; -extern const uint32_t orange53_rom_ITD_azimBsShape[84]; -extern const float orange53_rom_ITD_azimKSeq[19]; -extern const uint32_t orange53_rom_ITD_elevBsShape[28]; +/* TD renderer default HRIR model */ +extern const float defaultHRIR_rom_latency_s; +extern const int16_t defaultHRIR_rom_azimDim2[15]; +extern const int16_t defaultHRIR_rom_azimDim3[15]; +extern const int16_t defaultHRIR_rom_azim_start_idx[15]; +extern const int16_t defaultHRIR_rom_azimSegSamples[1]; +extern const int16_t defaultHRIR_rom_azimShapeIdx[15]; +extern const int16_t defaultHRIR_rom_azimShapeSampFactor[15]; +extern const float defaultHRIR_rom_elevKSeq[13]; +extern const uint32_t defaultHRIR_rom_AlphaL48[470 * 128]; +extern const uint32_t defaultHRIR_rom_AlphaR48[470 * 128]; +extern const uint32_t defaultHRIR_rom_AlphaL32[470 * 86]; +extern const uint32_t defaultHRIR_rom_AlphaR32[470 * 86]; +extern const uint32_t defaultHRIR_rom_AlphaL16[470 * 43]; +extern const uint32_t defaultHRIR_rom_AlphaR16[470 * 43]; +extern const uint32_t defaultHRIR_rom_EL48[HRTF_MODEL_N_SECTIONS * 470]; +extern const uint32_t defaultHRIR_rom_ER48[HRTF_MODEL_N_SECTIONS * 470]; +extern const uint32_t defaultHRIR_rom_EL32[HRTF_MODEL_N_SECTIONS * 470]; +extern const uint32_t defaultHRIR_rom_ER32[HRTF_MODEL_N_SECTIONS * 470]; +extern const uint32_t defaultHRIR_rom_EL16[HRTF_MODEL_N_SECTIONS * 470]; +extern const uint32_t defaultHRIR_rom_ER16[HRTF_MODEL_N_SECTIONS * 470]; +extern const uint32_t defaultHRIR_rom_elevBsShape[36]; +extern const uint32_t defaultHRIR_rom_azimBsShape[21]; +extern const uint32_t defaultHRIR_rom_ITD_W[658]; +extern const uint32_t defaultHRIR_rom_ITD_azimBsShape[84]; +extern const float defaultHRIR_rom_ITD_azimKSeq[19]; +extern const uint32_t defaultHRIR_rom_ITD_elevBsShape[28]; +extern const float defaultHRIR_rom_ITD_elevKSeq[16]; diff --git a/lib_rend/ivas_rom_binauralRenderer.c b/lib_rend/ivas_rom_binauralRenderer.c index 7c7c2c694eddf00478725eb0839e9b4f7100cc60..413bc142405a1f7d76cafea54c5fca06468daa31 100644 --- a/lib_rend/ivas_rom_binauralRenderer.c +++ b/lib_rend/ivas_rom_binauralRenderer.c @@ -56,7058 +56,7058 @@ -const float FASTCONV_HOA3_latency_s = 0.000666667f; -const float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][16][BINAURAL_NTAPS]= +const float FASTCONV_HOA3_latency_s = 0.000020833f; +const float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {+0.028305f, +0.686064f, +0.068005f, +0.008358f, +0.000134f}, - {+0.041076f, +0.081510f, -0.101574f, +0.012332f, +0.000133f}, - {+0.004694f, +0.091178f, -0.006019f, -0.000987f, -0.000100f}, - {+0.005000f, +0.062531f, -0.030068f, +0.002120f, -0.000090f}, - {+0.008304f, +0.004854f, +0.003618f, -0.000840f, -0.000150f}, - {+0.005344f, +0.010835f, +0.007864f, +0.004915f, -0.000112f}, - {-0.014194f, +0.005486f, -0.000750f, -0.002195f, +0.000158f}, - {+0.002251f, -0.002762f, +0.046227f, +0.004129f, +0.000004f}, - {-0.024537f, +0.046996f, -0.049712f, -0.006618f, +0.000145f}, - {+0.010068f, -0.052648f, +0.026763f, +0.010223f, +0.000366f}, - {+0.000943f, +0.017480f, -0.020482f, -0.001034f, -0.000058f}, - {+0.002377f, -0.034436f, -0.006489f, +0.012518f, +0.000220f}, - {-0.003606f, -0.027453f, +0.015178f, +0.001090f, -0.000006f}, - {-0.000854f, -0.033509f, +0.016348f, +0.002809f, +0.000078f}, - {+0.001127f, -0.002978f, +0.013287f, +0.005932f, -0.000006f}, - {-0.002728f, -0.006413f, +0.003444f, +0.002047f, +0.000053f} - }, - { - {-0.060981f, +0.539033f, -0.032927f, -0.008925f, -0.000158f}, - {-0.088569f, +0.331317f, +0.135589f, -0.009798f, -0.000139f}, - {-0.006979f, +0.010016f, -0.062582f, +0.002090f, +0.000127f}, - {-0.010389f, +0.024941f, -0.053685f, -0.002256f, +0.000117f}, - {-0.013525f, -0.047393f, -0.001706f, +0.001388f, +0.000191f}, - {-0.006413f, -0.030122f, -0.020701f, -0.011138f, +0.000148f}, - {+0.024834f, +0.109440f, +0.032236f, +0.002032f, -0.000215f}, - {-0.002223f, -0.102504f, -0.064424f, -0.005351f, -0.000007f}, - {+0.037480f, +0.308972f, +0.087606f, +0.006506f, -0.000210f}, - {-0.016939f, -0.106048f, -0.043760f, -0.005027f, -0.000470f}, - {-0.000739f, -0.002371f, -0.021897f, -0.001907f, +0.000076f}, - {-0.005038f, -0.073983f, -0.110448f, -0.018835f, -0.000283f}, - {+0.003491f, -0.004047f, +0.005200f, -0.002767f, +0.000014f}, - {+0.001174f, +0.011186f, +0.026019f, -0.003363f, -0.000098f}, - {-0.002185f, -0.029503f, -0.056810f, -0.012753f, +0.000001f}, - {+0.003633f, +0.007292f, -0.011811f, -0.003296f, -0.000071f} - }, - { - {+0.056640f, +0.424888f, -0.091068f, -0.008146f, -0.000105f}, - {+0.085624f, +0.535380f, -0.135686f, -0.024218f, -0.000137f}, - {+0.000837f, -0.039137f, -0.022512f, -0.003663f, +0.000063f}, - {+0.009275f, -0.013781f, -0.023629f, -0.005508f, +0.000051f}, - {+0.004547f, -0.088202f, +0.042587f, -0.003924f, +0.000093f}, - {-0.003101f, -0.099791f, +0.033209f, +0.007324f, +0.000060f}, - {-0.010598f, +0.183236f, -0.035352f, +0.008713f, -0.000074f}, - {-0.003128f, -0.087287f, -0.092687f, -0.003205f, -0.000001f}, - {-0.002915f, +0.422198f, -0.021401f, +0.017334f, -0.000046f}, - {+0.008367f, -0.030365f, -0.081942f, -0.019445f, -0.000222f}, - {-0.002027f, -0.059247f, +0.024597f, +0.009143f, +0.000033f}, - {+0.005485f, -0.016036f, -0.189920f, +0.005523f, -0.000134f}, - {+0.004590f, +0.043786f, -0.049890f, +0.002054f, -0.000006f}, - {+0.000794f, +0.086150f, -0.052409f, -0.001703f, -0.000051f}, - {+0.002015f, +0.016274f, -0.139462f, +0.010767f, +0.000013f}, - {+0.000980f, +0.021151f, -0.025610f, +0.002927f, -0.000028f} - }, - { - {-0.037044f, +0.299825f, +0.010626f, +0.009027f, +0.000178f}, - {-0.073631f, +0.563948f, +0.256507f, +0.030068f, +0.000165f}, - {+0.001394f, +0.007863f, +0.051772f, +0.005838f, -0.000136f}, - {-0.007311f, +0.033976f, +0.087547f, +0.012955f, -0.000125f}, - {-0.000742f, +0.006564f, +0.155719f, +0.010210f, -0.000207f}, - {+0.003772f, -0.011095f, +0.118202f, +0.002442f, -0.000158f}, - {-0.001621f, -0.014236f, -0.266669f, -0.019686f, +0.000230f}, - {+0.004592f, +0.006155f, +0.002774f, +0.008968f, +0.000009f}, - {-0.017921f, +0.015905f, -0.425734f, -0.038383f, +0.000222f}, - {-0.007216f, +0.258967f, +0.290441f, +0.007092f, +0.000519f}, - {+0.003522f, -0.023316f, +0.032467f, -0.009674f, -0.000084f}, - {-0.006507f, +0.177693f, +0.033997f, -0.006462f, +0.000311f}, - {-0.006842f, +0.024376f, -0.051686f, +0.001498f, -0.000018f}, - {-0.002603f, +0.039216f, -0.091765f, +0.003591f, +0.000108f}, - {-0.003570f, +0.063130f, -0.095408f, -0.005271f, -0.000002f}, - {-0.003443f, +0.045327f, +0.012038f, -0.006717f, +0.000078f} - }, - { - {+0.016927f, -0.038791f, +0.287896f, +0.014303f, +0.000072f}, - {+0.067605f, -0.097306f, +0.721167f, +0.014182f, +0.000134f}, - {+0.004523f, -0.006482f, +0.087578f, -0.003063f, -0.000024f}, - {+0.010963f, -0.024388f, +0.147380f, -0.008366f, -0.000010f}, - {+0.009045f, +0.033260f, +0.131601f, -0.010659f, -0.000033f}, - {+0.006391f, +0.001186f, +0.117010f, -0.003913f, -0.000007f}, - {-0.000206f, -0.124154f, -0.212720f, +0.011624f, -0.000013f}, - {+0.001006f, +0.018224f, +0.038185f, -0.004418f, -0.000004f}, - {+0.005972f, -0.280246f, -0.279425f, +0.024886f, -0.000056f}, - {+0.013866f, +0.056049f, +0.470046f, +0.033031f, +0.000066f}, - {-0.002003f, +0.013997f, -0.006699f, +0.002838f, -0.000007f}, - {+0.005432f, +0.012448f, +0.193385f, +0.021709f, +0.000041f}, - {+0.002080f, -0.035733f, +0.001464f, -0.003877f, +0.000020f}, - {+0.000948f, -0.008178f, -0.047042f, -0.001214f, +0.000022f}, - {+0.008010f, -0.037066f, -0.006003f, +0.001581f, -0.000020f}, - {+0.002016f, -0.033476f, +0.072960f, +0.011160f, +0.000001f} - }, - { - {-0.031783f, -0.056831f, +0.279059f, -0.028993f, -0.000193f}, - {-0.066811f, -0.547107f, +0.401585f, -0.049258f, -0.000209f}, - {-0.014835f, -0.045923f, +0.063394f, -0.003455f, +0.000127f}, - {-0.030703f, -0.186180f, +0.047058f, -0.002768f, +0.000115f}, - {-0.020147f, -0.183472f, -0.029803f, +0.002654f, +0.000199f}, - {-0.004470f, -0.071648f, +0.045482f, -0.003212f, +0.000142f}, - {+0.003858f, +0.057272f, -0.023397f, +0.006911f, -0.000202f}, - {-0.004365f, -0.021410f, +0.013528f, -0.002517f, -0.000010f}, - {-0.011844f, +0.030236f, +0.050498f, +0.004358f, -0.000183f}, - {-0.006262f, -0.197324f, +0.174496f, -0.041478f, -0.000509f}, - {-0.000909f, +0.022088f, -0.010300f, +0.001930f, +0.000082f}, - {+0.000576f, -0.053541f, +0.096593f, -0.021942f, -0.000302f}, - {-0.001649f, -0.054620f, +0.008127f, +0.002136f, +0.000016f}, - {+0.004848f, +0.029592f, +0.000282f, +0.000006f, -0.000106f}, - {-0.010837f, -0.090950f, -0.014402f, -0.000183f, +0.000006f}, - {+0.000125f, -0.021283f, +0.064876f, -0.009148f, -0.000073f} - }, - { - {+0.115524f, -0.001880f, -0.031709f, +0.016815f, -0.000032f}, - {+0.083119f, -0.442745f, -0.062014f, +0.030630f, -0.000109f}, - {+0.026381f, -0.044427f, -0.014701f, +0.004175f, -0.000007f}, - {+0.059970f, -0.279751f, -0.022479f, +0.004671f, -0.000021f}, - {+0.025539f, -0.285695f, -0.030687f, +0.001281f, -0.000018f}, - {-0.015563f, -0.014341f, -0.021407f, +0.004386f, -0.000034f}, - {-0.005271f, +0.080088f, +0.036839f, -0.008678f, +0.000080f}, - {-0.004239f, -0.044848f, +0.005762f, +0.002882f, +0.000009f}, - {+0.051110f, +0.084066f, +0.036589f, -0.007555f, +0.000131f}, - {-0.012587f, -0.147413f, -0.020658f, +0.013969f, +0.000077f}, - {+0.003103f, +0.017462f, -0.008157f, -0.001803f, -0.000018f}, - {-0.001965f, +0.006861f, -0.032042f, +0.005627f, +0.000042f}, - {+0.003954f, -0.069529f, +0.014309f, +0.000469f, -0.000034f}, - {-0.011351f, +0.041303f, +0.021348f, +0.000056f, +0.000005f}, - {+0.003411f, -0.131943f, -0.006306f, -0.000445f, +0.000025f}, - {-0.006265f, +0.023141f, +0.008583f, +0.003180f, +0.000023f} - }, - { - {-0.170064f, -0.305557f, -0.025217f, +0.001133f, +0.000198f}, - {-0.064730f, -0.498651f, -0.047336f, +0.004429f, +0.000255f}, - {-0.023390f, -0.090206f, -0.010300f, +0.000988f, -0.000108f}, - {-0.044740f, -0.402670f, -0.013847f, +0.001569f, -0.000092f}, - {-0.008298f, -0.311166f, -0.004422f, +0.002306f, -0.000173f}, - {+0.024372f, +0.077330f, -0.000442f, +0.001491f, -0.000110f}, - {+0.006327f, +0.051079f, +0.002801f, -0.003002f, +0.000146f}, - {+0.022671f, -0.029757f, -0.017304f, +0.000691f, +0.000009f}, - {-0.067089f, -0.067084f, +0.027632f, -0.007480f, +0.000108f}, - {+0.016067f, -0.071916f, -0.031764f, +0.005887f, +0.000449f}, - {-0.001118f, +0.007300f, -0.004732f, +0.000912f, -0.000072f}, - {-0.012764f, +0.015163f, -0.034285f, +0.004782f, +0.000265f}, - {+0.002476f, -0.078915f, +0.001493f, -0.000518f, -0.000008f}, - {+0.012009f, +0.058211f, +0.005130f, -0.001142f, +0.000096f}, - {+0.017876f, -0.124879f, -0.017363f, +0.001041f, -0.000014f}, - {+0.016489f, +0.044821f, -0.013683f, +0.000199f, +0.000060f} - }, - { - {+0.031523f, -0.568562f, -0.010165f, -0.004741f, -0.000011f}, - {-0.072210f, -0.453377f, -0.012668f, -0.009988f, +0.000056f}, - {-0.013073f, -0.089526f, -0.006790f, -0.002603f, +0.000024f}, - {-0.055858f, -0.385059f, +0.007901f, -0.002683f, +0.000038f}, - {-0.048389f, -0.243348f, +0.011742f, -0.002577f, +0.000053f}, - {-0.000883f, +0.129298f, +0.003415f, -0.002563f, +0.000054f}, - {+0.004842f, +0.028248f, -0.014727f, +0.004067f, -0.000113f}, - {-0.035207f, +0.044693f, -0.000317f, -0.001511f, -0.000014f}, - {+0.027873f, -0.208313f, -0.025747f, +0.006096f, -0.000162f}, - {-0.003882f, -0.022910f, +0.004172f, -0.004195f, -0.000185f}, - {-0.007316f, +0.007332f, +0.005614f, -0.000479f, +0.000037f}, - {+0.030651f, -0.049980f, +0.004306f, -0.003095f, -0.000103f}, - {-0.012670f, -0.046258f, -0.010787f, -0.000294f, +0.000044f}, - {-0.001544f, +0.071605f, -0.001508f, +0.001151f, -0.000025f}, - {-0.039147f, -0.057668f, +0.001114f, -0.001056f, -0.000026f}, - {-0.013243f, +0.076337f, -0.002755f, -0.000535f, -0.000039f} - }, - { - {+0.207932f, -0.287807f, +0.039075f, +0.000182f, -0.000191f}, - {+0.222358f, -0.019823f, +0.045919f, -0.001569f, -0.000284f}, - {+0.051902f, +0.024897f, +0.018540f, -0.000535f, +0.000087f}, - {+0.157008f, -0.084022f, +0.015927f, -0.001511f, +0.000065f}, - {+0.104303f, -0.038679f, +0.004300f, -0.001876f, +0.000138f}, - {-0.031107f, +0.090841f, +0.009802f, -0.001340f, +0.000075f}, - {-0.026573f, -0.012360f, -0.012445f, +0.003442f, -0.000083f}, - {+0.021614f, +0.128929f, +0.008965f, -0.000458f, -0.000006f}, - {+0.022498f, -0.192805f, -0.008217f, +0.005889f, -0.000025f}, - {+0.001966f, -0.020932f, +0.017205f, -0.001490f, -0.000358f}, - {+0.013558f, +0.031486f, +0.001450f, -0.000305f, +0.000057f}, - {-0.020576f, -0.126851f, +0.015311f, -0.000876f, -0.000211f}, - {+0.011427f, -0.005250f, -0.003401f, +0.000196f, -0.000006f}, - {-0.015857f, +0.049501f, -0.003717f, +0.000601f, -0.000080f}, - {+0.034004f, +0.039429f, +0.003524f, -0.000004f, +0.000023f}, - {-0.014818f, +0.079680f, +0.007758f, +0.000184f, -0.000042f} - }, - { - {-0.203020f, +0.343926f, -0.022319f, +0.001551f, +0.000052f}, - {-0.128697f, +0.502946f, -0.012208f, +0.003598f, +0.000018f}, - {-0.021293f, +0.148245f, -0.006309f, +0.001691f, -0.000030f}, - {-0.108184f, +0.296591f, -0.010288f, +0.001875f, -0.000040f}, - {-0.072445f, +0.199735f, -0.008865f, +0.001996f, -0.000070f}, - {+0.035970f, +0.000468f, -0.003327f, +0.001758f, -0.000054f}, - {+0.022536f, -0.076991f, +0.011763f, -0.002716f, +0.000111f}, - {+0.019549f, +0.129451f, +0.001977f, +0.001130f, +0.000018f}, - {-0.040267f, -0.070315f, +0.008077f, -0.004109f, +0.000149f}, - {-0.011400f, -0.010732f, -0.007406f, +0.002026f, +0.000250f}, - {-0.002851f, +0.052737f, -0.000419f, +0.000375f, -0.000049f}, - {-0.020950f, -0.124942f, -0.003929f, +0.001693f, +0.000137f}, - {-0.002830f, +0.012262f, +0.001345f, -0.000201f, -0.000049f}, - {+0.023252f, -0.010554f, +0.006382f, -0.000870f, +0.000037f}, - {+0.002904f, +0.073991f, +0.004806f, +0.000805f, +0.000022f}, - {+0.038844f, +0.012454f, +0.000939f, +0.000294f, +0.000047f} - }, - { - {-0.104978f, +0.491439f, -0.023130f, -0.000395f, +0.000170f}, - {-0.174716f, +0.431741f, -0.037189f, +0.000731f, +0.000283f}, - {-0.071508f, +0.077184f, -0.011405f, +0.000280f, -0.000069f}, - {-0.071830f, +0.341169f, -0.016908f, +0.001162f, -0.000044f}, - {-0.046880f, +0.228632f, -0.012580f, +0.001764f, -0.000105f}, - {-0.015443f, -0.068044f, -0.005570f, +0.000844f, -0.000048f}, - {+0.020736f, -0.083339f, +0.010949f, -0.002791f, +0.000031f}, - {-0.052065f, +0.019705f, -0.009215f, +0.000218f, +0.000001f}, - {+0.033356f, +0.036658f, +0.013911f, -0.004323f, -0.000040f}, - {+0.006601f, +0.021923f, -0.013349f, +0.000309f, +0.000258f}, - {-0.019016f, +0.023410f, -0.005296f, +0.000367f, -0.000039f}, - {+0.051437f, -0.010933f, -0.004546f, -0.000118f, +0.000155f}, - {+0.002536f, +0.019548f, +0.001804f, +0.000278f, +0.000021f}, - {-0.005862f, -0.062421f, -0.001401f, -0.000650f, +0.000064f}, - {-0.033799f, +0.010290f, -0.008108f, -0.000071f, -0.000030f}, - {-0.019280f, -0.065253f, -0.001294f, -0.000391f, +0.000024f} - }, - { - {+0.271163f, -0.091653f, +0.035807f, -0.000730f, -0.000085f}, - {+0.261169f, -0.235971f, +0.033757f, -0.001621f, -0.000093f}, - {+0.095839f, -0.182710f, +0.015397f, -0.001103f, +0.000028f}, - {+0.156712f, -0.007300f, +0.019789f, -0.001371f, +0.000033f}, - {+0.111926f, -0.011250f, +0.016908f, -0.001748f, +0.000072f}, - {-0.005469f, -0.082676f, +0.002169f, -0.001143f, +0.000043f}, - {-0.049695f, +0.016110f, -0.010723f, +0.002011f, -0.000086f}, - {+0.031235f, -0.105162f, +0.004404f, -0.000861f, -0.000020f}, - {-0.012529f, +0.088572f, -0.009833f, +0.002839f, -0.000106f}, - {+0.012620f, +0.018407f, +0.006593f, -0.002080f, -0.000273f}, - {+0.020511f, -0.042167f, +0.004809f, -0.000322f, +0.000054f}, - {-0.032247f, +0.119711f, -0.002446f, -0.001305f, -0.000148f}, - {-0.004589f, +0.033907f, -0.002233f, +0.000259f, +0.000047f}, - {-0.024243f, -0.043735f, -0.001053f, +0.000816f, -0.000043f}, - {+0.018051f, -0.070970f, +0.002759f, -0.000690f, -0.000016f}, - {-0.025928f, -0.049597f, -0.005106f, -0.000174f, -0.000047f} - }, - { - {-0.009292f, -0.523511f, +0.005609f, +0.000701f, -0.000140f}, - {+0.049598f, -0.562660f, +0.018307f, +0.000353f, -0.000250f}, - {+0.026674f, -0.300653f, +0.000453f, -0.000226f, +0.000059f}, - {-0.025200f, -0.281197f, +0.004191f, -0.000792f, +0.000032f}, - {-0.023452f, -0.216602f, +0.003361f, -0.001302f, +0.000079f}, - {+0.022798f, -0.048857f, +0.002028f, -0.000528f, +0.000034f}, - {+0.017850f, +0.123147f, -0.004163f, +0.001736f, -0.000002f}, - {+0.030232f, -0.106769f, +0.006484f, -0.000160f, +0.000004f}, - {-0.027081f, +0.068469f, -0.013975f, +0.002765f, +0.000074f}, - {-0.015824f, -0.032277f, +0.008777f, +0.000341f, -0.000168f}, - {+0.010909f, -0.060681f, +0.000865f, -0.000330f, +0.000023f}, - {-0.018513f, +0.140495f, +0.006788f, +0.000319f, -0.000106f}, - {-0.009128f, +0.032657f, +0.001038f, -0.000299f, -0.000035f}, - {+0.030409f, +0.035966f, +0.000871f, +0.000497f, -0.000049f}, - {+0.024037f, -0.062735f, +0.004854f, -0.000003f, +0.000033f}, - {+0.031906f, +0.040222f, +0.004969f, +0.000300f, -0.000009f} - }, - { - {-0.274242f, -0.111152f, -0.038437f, +0.000541f, +0.000106f}, - {-0.297362f, -0.028772f, -0.040257f, +0.001002f, +0.000153f}, - {-0.157861f, -0.028386f, -0.015885f, +0.000932f, -0.000023f}, - {-0.130190f, -0.116848f, -0.020017f, +0.001091f, -0.000023f}, - {-0.100486f, -0.097500f, -0.017137f, +0.001413f, -0.000066f}, - {-0.042930f, +0.041353f, -0.001818f, +0.000969f, -0.000030f}, - {+0.035539f, +0.107479f, +0.005226f, -0.001521f, +0.000054f}, - {-0.056245f, +0.022881f, -0.006748f, +0.000737f, +0.000020f}, - {+0.051781f, -0.041176f, +0.012387f, -0.002184f, +0.000054f}, - {-0.005351f, -0.056149f, -0.003091f, +0.002220f, +0.000265f}, - {-0.035484f, +0.008203f, -0.004198f, +0.000217f, -0.000054f}, - {+0.049383f, +0.039088f, +0.002024f, +0.001275f, +0.000143f}, - {+0.027963f, -0.019171f, +0.001212f, -0.000337f, -0.000040f}, - {+0.004231f, +0.075991f, +0.001119f, -0.000670f, +0.000043f}, - {-0.028326f, +0.016304f, -0.003947f, +0.000597f, +0.000009f}, - {+0.014165f, +0.065014f, +0.003473f, +0.000208f, +0.000042f} - }, - { - {+0.100761f, +0.468705f, +0.009523f, -0.000855f, +0.000106f}, - {+0.068322f, +0.534398f, -0.000794f, -0.001015f, +0.000195f}, - {+0.100085f, +0.366003f, +0.010962f, +0.000114f, -0.000054f}, - {+0.079789f, +0.208939f, +0.006983f, +0.000516f, -0.000029f}, - {+0.074868f, +0.177414f, +0.007217f, +0.000977f, -0.000063f}, - {+0.040080f, +0.169063f, +0.003424f, +0.000213f, -0.000031f}, - {-0.047852f, -0.014657f, +0.004244f, -0.000996f, -0.000005f}, - {+0.004688f, +0.112753f, -0.003849f, +0.000122f, -0.000008f}, - {-0.009956f, -0.138804f, +0.008769f, -0.001626f, -0.000077f}, - {+0.022634f, -0.009810f, -0.007400f, -0.000511f, +0.000099f}, - {+0.010732f, +0.077733f, +0.000399f, +0.000274f, -0.000009f}, - {-0.039390f, -0.089325f, -0.008313f, -0.000351f, +0.000070f}, - {-0.019067f, -0.090342f, -0.002768f, +0.000205f, +0.000044f}, - {-0.042005f, +0.002738f, -0.004159f, -0.000376f, +0.000037f}, - {-0.016073f, +0.032695f, -0.005232f, +0.000105f, -0.000033f}, - {-0.040117f, -0.022661f, -0.007858f, -0.000231f, -0.000002f} - }, - { - {+0.246756f, +0.241170f, +0.035479f, -0.000554f, -0.000114f}, - {+0.272424f, +0.216540f, +0.039997f, -0.001031f, -0.000186f}, - {+0.100824f, +0.372627f, +0.007492f, -0.000845f, +0.000020f}, - {+0.086728f, +0.200706f, +0.013419f, -0.000947f, +0.000014f}, - {+0.067471f, +0.194793f, +0.010208f, -0.001216f, +0.000058f}, - {+0.018637f, +0.214052f, -0.004837f, -0.000884f, +0.000020f}, - {+0.025584f, -0.127835f, -0.000911f, +0.001401f, -0.000028f}, - {+0.056339f, +0.027855f, +0.010673f, -0.000579f, -0.000019f}, - {-0.060859f, -0.070229f, -0.011217f, +0.002123f, -0.000013f}, - {-0.014798f, +0.052375f, +0.000623f, -0.002191f, -0.000241f}, - {+0.034285f, +0.039743f, +0.005351f, -0.000109f, +0.000050f}, - {+0.007201f, -0.159482f, +0.003886f, -0.001201f, -0.000130f}, - {-0.020187f, -0.092383f, +0.000382f, +0.000354f, +0.000030f}, - {+0.028788f, -0.109693f, +0.004153f, +0.000525f, -0.000041f}, - {+0.036625f, -0.054073f, +0.008577f, -0.000524f, -0.000003f}, - {-0.002610f, -0.084126f, +0.000986f, -0.000174f, -0.000035f} - }, - { - {-0.167535f, -0.399812f, -0.020854f, +0.000806f, -0.000074f}, - {-0.145635f, -0.430918f, -0.013134f, +0.001141f, -0.000134f}, - {-0.184602f, -0.052096f, -0.013909f, -0.000043f, +0.000053f}, - {-0.110131f, -0.103022f, -0.011251f, -0.000423f, +0.000031f}, - {-0.114138f, -0.085208f, -0.011213f, -0.000798f, +0.000055f}, - {-0.095938f, +0.054666f, -0.000697f, -0.000059f, +0.000033f}, - {-0.000204f, -0.169483f, -0.009146f, +0.000575f, -0.000003f}, - {-0.030090f, -0.112432f, -0.004382f, -0.000216f, +0.000011f}, - {+0.053018f, +0.105332f, -0.004066f, +0.000908f, +0.000060f}, - {-0.009119f, +0.057095f, +0.007675f, +0.000456f, -0.000052f}, - {-0.027961f, -0.057568f, -0.003773f, -0.000262f, -0.000002f}, - {+0.030433f, -0.136477f, +0.002756f, +0.000256f, -0.000046f}, - {+0.049955f, +0.009293f, +0.002856f, -0.000133f, -0.000047f}, - {+0.028171f, -0.112646f, +0.000816f, +0.000380f, -0.000028f}, - {+0.014607f, -0.096614f, -0.000430f, -0.000147f, +0.000031f}, - {+0.051182f, -0.003494f, +0.006796f, +0.000143f, +0.000008f} - }, - { - {-0.208650f, -0.335847f, -0.029770f, +0.000608f, +0.000111f}, - {-0.234234f, -0.291735f, -0.035875f, +0.001265f, +0.000192f}, - {+0.043525f, -0.386017f, -0.001141f, +0.000753f, -0.000019f}, - {-0.024332f, -0.238532f, -0.004594f, +0.000982f, -0.000011f}, - {-0.003204f, -0.260777f, -0.001135f, +0.001218f, -0.000051f}, - {+0.094495f, -0.222636f, +0.006686f, +0.000805f, -0.000016f}, - {-0.041620f, -0.113126f, +0.003804f, -0.001425f, +0.000014f}, - {-0.059468f, -0.070637f, -0.008480f, +0.000599f, +0.000018f}, - {+0.037218f, +0.133212f, +0.009087f, -0.002277f, -0.000009f}, - {+0.028004f, -0.004399f, +0.001485f, +0.002043f, +0.000214f}, - {-0.030214f, -0.052517f, -0.005355f, +0.000063f, -0.000045f}, - {-0.064016f, -0.008538f, -0.001790f, +0.001210f, +0.000117f}, - {-0.035765f, +0.136937f, -0.003958f, -0.000288f, -0.000023f}, - {-0.055646f, +0.013868f, -0.004689f, -0.000551f, +0.000038f}, - {-0.069712f, +0.026129f, -0.007603f, +0.000472f, -0.000000f}, - {-0.022298f, +0.108549f, -0.003048f, +0.000134f, +0.000029f} - }, - { - {+0.220027f, +0.326004f, +0.029195f, -0.000639f, +0.000050f}, - {+0.196112f, +0.377527f, +0.024063f, -0.000894f, +0.000082f}, - {+0.120792f, -0.254914f, +0.016146f, +0.000093f, -0.000054f}, - {+0.094942f, -0.058645f, +0.007709f, +0.000309f, -0.000035f}, - {+0.109837f, -0.090094f, +0.008580f, +0.000595f, -0.000051f}, - {+0.015004f, -0.336419f, -0.000747f, +0.000099f, -0.000037f}, - {+0.088851f, +0.073948f, +0.011663f, -0.000480f, +0.000014f}, - {+0.078671f, +0.147609f, +0.010996f, +0.000157f, -0.000013f}, - {-0.073075f, -0.041998f, -0.000840f, -0.000593f, -0.000038f}, - {-0.021795f, -0.078114f, -0.010687f, -0.000406f, +0.000022f}, - {+0.048839f, +0.075397f, +0.009105f, +0.000275f, +0.000010f}, - {+0.060558f, +0.174519f, +0.000133f, -0.000349f, +0.000030f}, - {-0.014867f, +0.171348f, +0.000948f, +0.000119f, +0.000048f}, - {+0.011606f, +0.111954f, +0.001552f, -0.000324f, +0.000023f}, - {+0.032653f, +0.181837f, +0.003210f, +0.000081f, -0.000029f}, - {-0.047749f, +0.068914f, -0.006585f, -0.000128f, -0.000011f} - }, - { - {+0.160319f, +0.417913f, +0.022833f, -0.000655f, -0.000102f}, - {+0.203183f, +0.369192f, +0.029570f, -0.001470f, -0.000179f}, - {-0.099428f, +0.084211f, -0.009701f, -0.000901f, +0.000019f}, - {-0.024797f, +0.121541f, +0.001449f, -0.000997f, +0.000010f}, - {-0.062623f, +0.173224f, -0.004907f, -0.001276f, +0.000047f}, - {-0.122967f, -0.126986f, -0.011441f, -0.000914f, +0.000015f}, - {-0.052738f, +0.283556f, -0.009426f, +0.001548f, -0.000011f}, - {+0.026749f, +0.238083f, -0.000760f, -0.000643f, -0.000018f}, - {-0.009777f, -0.145605f, -0.003329f, +0.002400f, +0.000014f}, - {-0.015861f, -0.086444f, +0.001699f, -0.001895f, -0.000191f}, - {+0.021170f, +0.125446f, -0.000128f, -0.000133f, +0.000040f}, - {+0.009541f, +0.253886f, -0.000901f, -0.000985f, -0.000105f}, - {+0.062589f, +0.060931f, +0.003167f, +0.000273f, +0.000019f}, - {+0.045937f, +0.052228f, +0.008096f, +0.000661f, -0.000035f}, - {+0.065525f, +0.132007f, +0.007909f, -0.000377f, +0.000001f}, - {+0.049219f, -0.081032f, +0.007172f, +0.000024f, -0.000024f} - }, - { - {-0.257389f, -0.225050f, -0.034043f, +0.000536f, -0.000034f}, - {-0.247632f, -0.326555f, -0.030602f, +0.000692f, -0.000048f}, - {-0.031117f, +0.179461f, -0.007189f, +0.000264f, +0.000055f}, - {-0.035804f, +0.099360f, -0.004701f, -0.000140f, +0.000038f}, - {-0.050312f, +0.188989f, -0.003722f, -0.000209f, +0.000050f}, - {+0.100154f, +0.206241f, +0.011197f, +0.000132f, +0.000040f}, - {-0.083770f, +0.242079f, -0.010883f, +0.000381f, -0.000023f}, - {-0.128871f, +0.005839f, -0.011060f, +0.000130f, +0.000016f}, - {+0.079686f, -0.004748f, +0.001794f, +0.000421f, +0.000023f}, - {+0.049708f, +0.006526f, +0.011594f, +0.000511f, -0.000001f}, - {-0.089665f, -0.042291f, -0.010250f, -0.000131f, -0.000016f}, - {-0.097341f, +0.094533f, -0.003394f, +0.000253f, -0.000020f}, - {-0.063601f, -0.124244f, -0.005358f, -0.000329f, -0.000050f}, - {-0.033103f, -0.074639f, -0.008297f, +0.000018f, -0.000018f}, - {-0.088809f, -0.106459f, -0.010306f, +0.000001f, +0.000028f}, - {+0.024983f, -0.120136f, +0.002311f, -0.000104f, +0.000013f} - }, - { - {-0.103698f, -0.459883f, -0.015029f, +0.000609f, +0.000094f}, - {-0.162130f, -0.457377f, -0.023723f, +0.001331f, +0.000162f}, - {+0.064814f, +0.022691f, +0.012901f, +0.000560f, -0.000021f}, - {+0.014719f, +0.018235f, +0.000043f, +0.000822f, -0.000013f}, - {+0.074601f, -0.003099f, +0.007367f, +0.000899f, -0.000047f}, - {+0.032786f, +0.305719f, +0.004336f, +0.000704f, -0.000017f}, - {+0.154173f, -0.111921f, +0.017036f, -0.001496f, +0.000014f}, - {+0.075072f, -0.308164f, +0.011544f, +0.000327f, +0.000019f}, - {-0.016061f, +0.143722f, +0.001013f, -0.002196f, -0.000011f}, - {-0.025959f, +0.115431f, -0.002496f, +0.001721f, +0.000173f}, - {+0.041136f, -0.248497f, +0.009339f, +0.000010f, -0.000035f}, - {+0.096543f, -0.197881f, +0.009153f, +0.000920f, +0.000096f}, - {+0.003482f, -0.225559f, +0.000330f, -0.000071f, -0.000017f}, - {-0.034753f, -0.075563f, -0.003521f, -0.000361f, +0.000033f}, - {-0.012501f, -0.228861f, +0.001789f, +0.000220f, -0.000002f}, - {-0.060118f, +0.006012f, -0.006537f, +0.000205f, +0.000020f} - }, - { - {+0.272901f, +0.120676f, +0.037748f, -0.000537f, +0.000024f}, - {+0.297115f, +0.254096f, +0.039956f, -0.000532f, +0.000029f}, - {+0.012561f, -0.060035f, +0.001952f, -0.000137f, -0.000057f}, - {-0.010704f, -0.021303f, -0.001694f, +0.000133f, -0.000041f}, - {-0.011296f, -0.129516f, -0.000519f, +0.000384f, -0.000049f}, - {-0.122480f, +0.073347f, -0.013051f, -0.000154f, -0.000043f}, - {-0.027641f, -0.385713f, +0.003287f, -0.000254f, +0.000026f}, - {+0.091871f, -0.289596f, +0.005177f, +0.000144f, -0.000020f}, - {-0.076925f, +0.038077f, -0.006550f, -0.000475f, -0.000017f}, - {-0.038364f, +0.096477f, -0.011620f, -0.000633f, -0.000016f}, - {+0.083812f, -0.194659f, +0.004197f, +0.000207f, +0.000021f}, - {+0.014333f, -0.322027f, -0.003857f, -0.000214f, +0.000012f}, - {+0.069724f, -0.130370f, +0.003481f, +0.000262f, +0.000055f}, - {+0.055755f, +0.063207f, +0.009924f, -0.000154f, +0.000014f}, - {+0.116659f, -0.036299f, +0.011120f, +0.000178f, -0.000028f}, - {+0.003252f, +0.097067f, -0.002843f, -0.000113f, -0.000015f} - }, - { - {+0.054050f, +0.455222f, +0.008683f, -0.000439f, -0.000087f}, - {+0.103203f, +0.556970f, +0.012926f, -0.001069f, -0.000150f}, - {-0.045598f, +0.034469f, -0.010843f, -0.000589f, +0.000024f}, - {+0.039968f, -0.100631f, +0.007931f, -0.000653f, +0.000016f}, - {-0.036140f, -0.084377f, -0.005388f, -0.000960f, +0.000048f}, - {+0.073377f, -0.218074f, +0.003890f, -0.000548f, +0.000019f}, - {-0.139694f, -0.217657f, -0.014427f, +0.001226f, -0.000017f}, - {-0.165152f, +0.096949f, -0.015920f, -0.000710f, -0.000018f}, - {+0.031303f, -0.142424f, +0.007473f, +0.002097f, +0.000008f}, - {+0.049659f, -0.036455f, +0.006360f, -0.001588f, -0.000158f}, - {-0.120231f, +0.105131f, -0.009262f, -0.000134f, +0.000029f}, - {-0.112765f, -0.136113f, -0.006454f, -0.000956f, -0.000090f}, - {-0.075212f, +0.079481f, -0.002605f, +0.000191f, +0.000013f}, - {+0.010244f, +0.133401f, +0.001533f, +0.000399f, -0.000031f}, - {-0.084844f, +0.273648f, -0.011540f, -0.000496f, +0.000003f}, - {+0.047604f, +0.022269f, +0.009154f, -0.000024f, -0.000017f} - }, - { - {-0.277495f, -0.057148f, -0.039168f, +0.000475f, -0.000017f}, - {-0.335782f, -0.115073f, -0.042124f, +0.000524f, -0.000017f}, - {-0.014669f, +0.088939f, +0.001371f, +0.000122f, +0.000060f}, - {+0.009872f, -0.151750f, -0.001271f, -0.000309f, +0.000043f}, - {+0.029086f, +0.017821f, +0.006048f, -0.000346f, +0.000049f}, - {+0.042390f, -0.261438f, +0.007011f, -0.000009f, +0.000045f}, - {+0.104924f, +0.146847f, +0.003710f, +0.000271f, -0.000026f}, - {+0.039062f, +0.403951f, +0.006577f, +0.000208f, +0.000025f}, - {+0.091871f, -0.050822f, +0.003447f, +0.000141f, +0.000018f}, - {+0.018408f, -0.085038f, +0.009119f, +0.000628f, +0.000033f}, - {+0.008166f, +0.290055f, -0.001289f, -0.000009f, -0.000025f}, - {+0.083446f, +0.145097f, +0.006817f, +0.000355f, -0.000005f}, - {+0.001946f, +0.186834f, -0.001987f, -0.000254f, -0.000062f}, - {-0.073121f, +0.003981f, -0.011768f, +0.000112f, -0.000011f}, - {-0.055297f, +0.324881f, -0.002032f, +0.000100f, +0.000030f}, - {-0.005812f, -0.063805f, -0.001869f, -0.000040f, +0.000017f} - }, - { - {-0.014583f, -0.461985f, -0.000589f, +0.000415f, +0.000084f}, - {-0.018754f, -0.598224f, -0.004168f, +0.000868f, +0.000145f}, - {+0.055019f, -0.010592f, +0.005290f, +0.000633f, -0.000030f}, - {-0.104242f, +0.017058f, -0.011823f, +0.000782f, -0.000020f}, - {-0.000800f, +0.063354f, -0.000572f, +0.000962f, -0.000051f}, - {-0.090619f, -0.057573f, -0.010215f, +0.000723f, -0.000024f}, - {+0.065017f, +0.191423f, +0.017537f, -0.001148f, +0.000017f}, - {+0.139685f, +0.247968f, +0.017011f, +0.000519f, +0.000015f}, - {-0.081755f, +0.219112f, -0.011774f, -0.001680f, -0.000011f}, - {-0.055793f, +0.030364f, -0.009245f, +0.001646f, +0.000143f}, - {+0.108310f, +0.127663f, +0.016687f, -0.000038f, -0.000024f}, - {+0.021618f, +0.220697f, +0.010039f, +0.000820f, +0.000085f}, - {+0.057142f, +0.095325f, +0.009328f, -0.000335f, -0.000006f}, - {+0.036537f, -0.167818f, +0.005791f, -0.000423f, +0.000028f}, - {+0.142336f, +0.030915f, +0.012827f, +0.000283f, -0.000005f}, - {-0.054469f, +0.008573f, -0.006883f, +0.000115f, +0.000013f} - }, - { - {+0.285346f, -0.000721f, +0.040577f, -0.000527f, +0.000010f}, - {+0.330415f, -0.056420f, +0.045563f, -0.000643f, +0.000004f}, - {-0.012995f, -0.109088f, -0.001469f, -0.000116f, -0.000061f}, - {+0.054559f, +0.256864f, +0.005920f, +0.000204f, -0.000044f}, - {-0.023615f, +0.028111f, -0.005911f, +0.000294f, -0.000047f}, - {+0.037741f, +0.135965f, -0.001385f, -0.000118f, -0.000047f}, - {-0.085123f, -0.059304f, -0.014815f, -0.000093f, +0.000026f}, - {-0.148478f, -0.190646f, -0.017151f, -0.000040f, -0.000030f}, - {-0.071070f, +0.234644f, +0.000090f, +0.000012f, -0.000018f}, - {-0.012169f, +0.103078f, -0.005526f, -0.000708f, -0.000048f}, - {-0.074830f, -0.156990f, -0.009538f, +0.000116f, +0.000028f}, - {-0.062857f, +0.082116f, -0.012816f, -0.000338f, -0.000001f}, - {-0.030566f, -0.039000f, -0.001188f, +0.000200f, +0.000068f}, - {+0.059034f, -0.139462f, +0.005767f, +0.000011f, +0.000009f}, - {-0.076286f, -0.295015f, -0.006131f, +0.000097f, -0.000032f}, - {+0.020240f, +0.124242f, +0.005046f, +0.000022f, -0.000019f} - }, - { - {-0.029891f, +0.483300f, -0.005377f, -0.000391f, -0.000081f}, - {-0.047047f, +0.524471f, -0.005924f, -0.000814f, -0.000145f}, - {-0.033704f, -0.078188f, -0.004373f, -0.000586f, +0.000038f}, - {+0.113469f, +0.163524f, +0.016393f, -0.000689f, +0.000025f}, - {+0.026484f, -0.050686f, +0.004980f, -0.000903f, +0.000054f}, - {+0.034959f, +0.130515f, +0.008100f, -0.000616f, +0.000030f}, - {-0.066335f, -0.098213f, -0.008880f, +0.001011f, -0.000017f}, - {-0.023755f, -0.374088f, -0.006475f, -0.000645f, -0.000010f}, - {+0.134342f, -0.080266f, +0.017137f, +0.001581f, +0.000017f}, - {+0.074905f, -0.029652f, +0.011288f, -0.001578f, -0.000126f}, - {-0.054496f, -0.184572f, -0.009789f, -0.000066f, +0.000019f}, - {+0.016479f, -0.037096f, -0.001911f, -0.000841f, -0.000081f}, - {-0.021095f, -0.045463f, -0.006941f, +0.000367f, -0.000005f}, - {-0.086237f, +0.078591f, -0.009216f, +0.000337f, -0.000026f}, - {-0.069456f, -0.298926f, -0.009331f, -0.000395f, +0.000009f}, - {+0.062149f, +0.062591f, +0.008033f, -0.000068f, -0.000009f} - }, - { - {-0.287720f, +0.086727f, -0.040473f, +0.000543f, -0.000002f}, - {-0.307994f, +0.118968f, -0.043852f, +0.000752f, +0.000013f}, - {+0.022546f, +0.002148f, +0.001070f, +0.000030f, +0.000061f}, - {-0.122549f, -0.198231f, -0.013063f, -0.000256f, +0.000044f}, - {+0.010325f, -0.076779f, +0.004480f, -0.000277f, +0.000045f}, - {-0.047884f, -0.004957f, -0.004446f, +0.000008f, +0.000047f}, - {+0.101276f, +0.163028f, +0.013822f, +0.000017f, -0.000028f}, - {+0.155414f, -0.094864f, +0.020739f, +0.000087f, +0.000033f}, - {+0.000170f, -0.277663f, -0.004084f, -0.000303f, +0.000013f}, - {-0.006631f, -0.159391f, +0.003115f, +0.000670f, +0.000060f}, - {+0.094163f, +0.047695f, +0.013081f, -0.000014f, -0.000031f}, - {+0.015662f, -0.033250f, +0.008826f, +0.000442f, +0.000008f}, - {+0.006909f, +0.002414f, +0.001228f, -0.000038f, -0.000070f}, - {+0.006389f, +0.219286f, -0.001425f, -0.000018f, -0.000007f}, - {+0.134427f, +0.013316f, +0.014160f, -0.000072f, +0.000032f}, - {-0.053148f, -0.113719f, -0.007802f, -0.000103f, +0.000020f} - }, - { - {+0.079885f, -0.476239f, +0.011873f, +0.000403f, +0.000078f}, - {+0.090327f, -0.495394f, +0.013216f, +0.000916f, +0.000142f}, - {+0.000547f, +0.029987f, +0.004365f, +0.000538f, -0.000045f}, - {-0.078456f, -0.260754f, -0.012403f, +0.000685f, -0.000030f}, - {-0.048231f, +0.015397f, -0.007225f, +0.000847f, -0.000058f}, - {+0.004788f, -0.088135f, +0.001735f, +0.000622f, -0.000036f}, - {+0.068597f, +0.218020f, +0.007943f, -0.001019f, +0.000017f}, - {-0.078771f, +0.264267f, -0.009097f, +0.000536f, +0.000005f}, - {-0.131816f, -0.067791f, -0.019315f, -0.001572f, -0.000023f}, - {-0.095197f, -0.024052f, -0.012511f, +0.001509f, +0.000110f}, - {+0.005662f, +0.184911f, +0.000567f, +0.000000f, -0.000014f}, - {+0.009469f, -0.021505f, +0.002081f, +0.000772f, +0.000077f}, - {+0.033042f, -0.040492f, +0.006178f, -0.000358f, +0.000017f}, - {+0.078726f, +0.109328f, +0.007889f, -0.000339f, +0.000024f}, - {-0.046322f, +0.287690f, -0.005571f, +0.000332f, -0.000013f}, - {-0.044568f, -0.127346f, -0.006458f, +0.000067f, +0.000005f} - }, - { - {+0.276202f, -0.173485f, +0.038792f, -0.000516f, -0.000006f}, - {+0.290883f, -0.185607f, +0.040080f, -0.000773f, -0.000032f}, - {+0.006320f, +0.034810f, -0.001793f, -0.000042f, -0.000058f}, - {+0.162615f, +0.113765f, +0.021156f, +0.000233f, -0.000044f}, - {+0.015723f, +0.117462f, +0.000807f, +0.000218f, -0.000042f}, - {+0.035133f, -0.040557f, +0.002714f, -0.000053f, -0.000045f}, - {-0.149176f, -0.117916f, -0.017638f, +0.000076f, +0.000032f}, - {-0.096551f, +0.235346f, -0.015008f, -0.000034f, -0.000033f}, - {+0.060894f, +0.224376f, +0.012831f, +0.000523f, -0.000005f}, - {+0.046438f, +0.197810f, +0.002809f, -0.000665f, -0.000069f}, - {-0.091389f, +0.035774f, -0.012879f, +0.000048f, +0.000034f}, - {-0.015830f, -0.061261f, -0.007852f, -0.000438f, -0.000014f}, - {+0.002026f, -0.092831f, -0.002527f, +0.000001f, +0.000068f}, - {-0.065981f, -0.109512f, -0.004136f, +0.000073f, +0.000006f}, - {-0.096454f, +0.210224f, -0.012022f, +0.000110f, -0.000032f}, - {+0.076635f, +0.057848f, +0.009841f, +0.000158f, -0.000021f} - }, - { - {-0.125058f, +0.440590f, -0.018260f, -0.000430f, -0.000074f}, - {-0.130636f, +0.461671f, -0.019013f, -0.001042f, -0.000135f}, - {-0.005358f, +0.049252f, -0.002302f, -0.000396f, +0.000051f}, - {+0.032652f, +0.314396f, +0.003878f, -0.000647f, +0.000035f}, - {+0.057782f, +0.056244f, +0.005456f, -0.000765f, +0.000061f}, - {-0.029537f, +0.058278f, -0.004239f, -0.000490f, +0.000041f}, - {-0.028429f, -0.304901f, -0.002344f, +0.001021f, -0.000019f}, - {+0.130605f, -0.114123f, +0.015550f, -0.000447f, -0.000002f}, - {+0.097618f, +0.163746f, +0.014826f, +0.001576f, +0.000024f}, - {+0.095269f, +0.125227f, +0.010570f, -0.001415f, -0.000094f}, - {+0.036826f, -0.161036f, +0.004519f, -0.000009f, +0.000008f}, - {-0.033206f, -0.037588f, -0.003181f, -0.000776f, -0.000072f}, - {-0.072280f, +0.019767f, -0.008230f, +0.000211f, -0.000025f}, - {-0.018897f, -0.179348f, -0.001641f, +0.000298f, -0.000022f}, - {+0.125361f, -0.129557f, +0.014806f, -0.000290f, +0.000016f}, - {+0.013372f, +0.152966f, +0.003485f, -0.000081f, -0.000000f} - }, - { - {-0.255232f, +0.238323f, -0.036506f, +0.000482f, +0.000012f}, - {-0.271075f, +0.243750f, -0.037165f, +0.000660f, +0.000051f}, - {-0.023107f, +0.018988f, -0.002567f, +0.000111f, +0.000056f}, - {-0.186496f, -0.022822f, -0.024016f, -0.000167f, +0.000044f}, - {-0.051695f, -0.108630f, -0.002988f, -0.000126f, +0.000040f}, - {-0.009503f, +0.085941f, -0.000815f, +0.000139f, +0.000044f}, - {+0.180203f, +0.018265f, +0.021900f, -0.000114f, -0.000036f}, - {+0.016842f, -0.287897f, +0.004711f, +0.000063f, +0.000033f}, - {-0.099412f, -0.136019f, -0.018932f, -0.000549f, -0.000004f}, - {-0.093434f, -0.165866f, -0.008284f, +0.000735f, +0.000077f}, - {+0.070607f, -0.107384f, +0.011250f, -0.000036f, -0.000037f}, - {+0.051205f, +0.088169f, +0.009120f, +0.000422f, +0.000021f}, - {+0.038077f, +0.190808f, +0.007278f, -0.000071f, -0.000066f}, - {+0.068484f, -0.044857f, +0.006706f, -0.000103f, -0.000005f}, - {+0.001471f, -0.319381f, +0.000965f, -0.000110f, +0.000032f}, - {-0.082910f, +0.001623f, -0.012705f, -0.000176f, +0.000021f} - }, - { - {+0.160937f, -0.399834f, +0.024221f, +0.000432f, +0.000069f}, - {+0.165837f, -0.426649f, +0.024449f, +0.001120f, +0.000123f}, - {+0.023251f, -0.053963f, +0.006296f, +0.000280f, -0.000056f}, - {+0.026012f, -0.349222f, +0.003958f, +0.000583f, -0.000040f}, - {-0.039815f, -0.122590f, -0.005933f, +0.000681f, -0.000065f}, - {+0.034180f, +0.017407f, +0.005868f, +0.000354f, -0.000044f}, - {-0.036119f, +0.354110f, -0.007651f, -0.001004f, +0.000024f}, - {-0.131608f, -0.060108f, -0.015438f, +0.000373f, +0.000002f}, - {-0.047240f, -0.215086f, -0.007922f, -0.001603f, -0.000021f}, - {-0.065165f, -0.208130f, -0.007649f, +0.001302f, +0.000078f}, - {-0.065730f, +0.103768f, -0.008899f, -0.000008f, -0.000000f}, - {+0.017223f, +0.140007f, +0.001227f, +0.000774f, +0.000066f}, - {+0.083700f, +0.123118f, +0.007692f, -0.000085f, +0.000029f}, - {-0.033766f, +0.111436f, -0.004405f, -0.000238f, +0.000019f}, - {-0.130713f, -0.118837f, -0.014005f, +0.000285f, -0.000018f}, - {+0.016465f, -0.154956f, +0.002867f, +0.000097f, -0.000004f} - }, - { - {+0.233948f, -0.286085f, +0.033289f, -0.000467f, -0.000018f}, - {+0.251749f, -0.291487f, +0.034882f, -0.000530f, -0.000064f}, - {+0.025018f, -0.051984f, +0.002062f, -0.000213f, -0.000058f}, - {+0.182278f, -0.109310f, +0.023310f, +0.000129f, -0.000046f}, - {+0.065186f, +0.041803f, +0.007285f, +0.000055f, -0.000040f}, - {-0.015347f, -0.057135f, -0.002287f, -0.000244f, -0.000046f}, - {-0.178612f, +0.136904f, -0.019882f, +0.000114f, +0.000039f}, - {+0.053858f, +0.222770f, +0.004143f, -0.000170f, -0.000036f}, - {+0.110687f, +0.021864f, +0.019313f, +0.000540f, +0.000009f}, - {+0.120059f, +0.080527f, +0.013286f, -0.000793f, -0.000086f}, - {-0.042102f, +0.139525f, -0.007143f, -0.000010f, +0.000040f}, - {-0.075712f, +0.002196f, -0.010631f, -0.000380f, -0.000025f}, - {-0.101650f, -0.158974f, -0.013076f, +0.000245f, +0.000069f}, - {-0.030059f, +0.115541f, -0.003547f, +0.000111f, +0.000004f}, - {+0.094721f, +0.222768f, +0.008889f, +0.000048f, -0.000033f}, - {+0.083573f, -0.053860f, +0.010877f, +0.000192f, -0.000022f} - }, - { - {-0.194975f, +0.371746f, -0.029687f, -0.000407f, -0.000065f}, - {-0.199395f, +0.402227f, -0.030381f, -0.001070f, -0.000111f}, - {-0.043558f, +0.051835f, -0.007510f, -0.000301f, +0.000063f}, - {-0.080069f, +0.290708f, -0.009721f, -0.000585f, +0.000048f}, - {+0.028118f, +0.096712f, +0.004235f, -0.000661f, +0.000071f}, - {-0.020670f, -0.048284f, -0.004447f, -0.000361f, +0.000049f}, - {+0.106751f, -0.298076f, +0.013906f, +0.000980f, -0.000031f}, - {+0.091450f, +0.162172f, +0.012475f, -0.000348f, -0.000002f}, - {-0.007498f, +0.199756f, +0.002586f, +0.001500f, +0.000016f}, - {+0.027250f, +0.222848f, +0.002393f, -0.001277f, -0.000059f}, - {+0.083457f, -0.055583f, +0.011895f, +0.000049f, -0.000010f}, - {+0.023912f, -0.145973f, +0.001523f, -0.000736f, -0.000060f}, - {-0.039347f, -0.252351f, -0.003368f, +0.000088f, -0.000034f}, - {+0.047081f, -0.002879f, +0.005773f, +0.000201f, -0.000016f}, - {+0.061353f, +0.270295f, +0.008425f, -0.000276f, +0.000021f}, - {-0.056743f, +0.162677f, -0.007387f, -0.000128f, +0.000010f} - }, - { - {-0.209644f, +0.348707f, -0.029121f, +0.000472f, +0.000023f}, - {-0.234739f, +0.346303f, -0.031613f, +0.000452f, +0.000075f}, - {-0.012221f, +0.097631f, -0.001448f, +0.000286f, +0.000064f}, - {-0.151155f, +0.176475f, -0.021969f, -0.000127f, +0.000048f}, - {-0.074908f, -0.067483f, -0.011111f, -0.000037f, +0.000040f}, - {+0.024868f, +0.020084f, +0.003583f, +0.000348f, +0.000052f}, - {+0.132213f, -0.252477f, +0.017287f, -0.000139f, -0.000041f}, - {-0.086895f, -0.114633f, -0.010835f, +0.000242f, +0.000044f}, - {-0.087061f, +0.080457f, -0.017193f, -0.000553f, -0.000009f}, - {-0.128529f, -0.021349f, -0.015609f, +0.000805f, +0.000095f}, - {+0.009730f, -0.170684f, +0.001530f, +0.000070f, -0.000041f}, - {+0.063989f, -0.082569f, +0.011861f, +0.000327f, +0.000027f}, - {+0.131743f, +0.010936f, +0.017709f, -0.000376f, -0.000079f}, - {-0.009127f, -0.086499f, -0.000601f, -0.000142f, -0.000005f}, - {-0.128048f, -0.022758f, -0.015753f, -0.000038f, +0.000035f}, - {-0.059404f, +0.160944f, -0.006871f, -0.000228f, +0.000022f} - }, - { - {+0.229440f, -0.322824f, +0.033988f, +0.000389f, +0.000061f}, - {+0.240846f, -0.383749f, +0.036120f, +0.000976f, +0.000103f}, - {+0.056585f, -0.008789f, +0.009971f, +0.000419f, -0.000080f}, - {+0.105118f, -0.219752f, +0.015610f, +0.000635f, -0.000061f}, - {-0.026805f, -0.145169f, -0.000897f, +0.000699f, -0.000083f}, - {+0.004898f, +0.050127f, +0.002984f, +0.000479f, -0.000062f}, - {-0.141946f, +0.172154f, -0.021221f, -0.000916f, +0.000039f}, - {-0.048244f, -0.174628f, -0.006354f, +0.000456f, -0.000003f}, - {+0.037664f, -0.109078f, +0.001169f, -0.001297f, -0.000015f}, - {+0.006723f, -0.230147f, +0.003197f, +0.001300f, +0.000034f}, - {-0.095384f, -0.009012f, -0.012879f, -0.000031f, +0.000023f}, - {-0.048765f, +0.092236f, -0.006693f, +0.000674f, +0.000056f}, - {-0.024712f, +0.249773f, -0.004585f, -0.000253f, +0.000048f}, - {-0.029610f, -0.053064f, -0.004978f, -0.000209f, +0.000011f}, - {+0.020111f, -0.251548f, +0.002558f, +0.000313f, -0.000027f}, - {+0.088864f, -0.064651f, +0.009687f, +0.000147f, -0.000018f} - }, - { - {+0.175493f, -0.403144f, +0.024964f, -0.000494f, -0.000029f}, - {+0.208289f, -0.431823f, +0.027399f, -0.000496f, -0.000086f}, - {-0.008906f, -0.108845f, -0.001685f, -0.000188f, -0.000067f}, - {+0.127825f, -0.183453f, +0.018081f, +0.000198f, -0.000048f}, - {+0.107325f, +0.060873f, +0.013159f, +0.000090f, -0.000038f}, - {-0.020607f, +0.012217f, -0.003265f, -0.000308f, -0.000058f}, - {-0.079060f, +0.266458f, -0.009775f, +0.000157f, +0.000041f}, - {+0.096681f, +0.050055f, +0.012663f, -0.000225f, -0.000055f}, - {+0.051411f, -0.089715f, +0.013539f, +0.000663f, +0.000008f}, - {+0.129678f, -0.037696f, +0.015815f, -0.000703f, -0.000099f}, - {+0.037248f, +0.197082f, +0.005086f, -0.000193f, +0.000037f}, - {-0.043816f, +0.101985f, -0.008254f, -0.000336f, -0.000028f}, - {-0.117065f, +0.106956f, -0.016478f, +0.000283f, +0.000091f}, - {+0.024549f, +0.029471f, +0.003315f, +0.000242f, +0.000008f}, - {+0.102968f, -0.125147f, +0.012245f, +0.000115f, -0.000038f}, - {+0.007500f, -0.187296f, +0.002430f, +0.000314f, -0.000019f} - }, - { - {-0.255049f, +0.256577f, -0.038217f, -0.000401f, -0.000056f}, - {-0.286340f, +0.326727f, -0.042071f, -0.000948f, -0.000098f}, - {-0.058758f, -0.032715f, -0.010103f, -0.000506f, +0.000109f}, - {-0.123738f, +0.204736f, -0.019030f, -0.000624f, +0.000081f}, - {-0.004658f, +0.232611f, -0.002627f, -0.000673f, +0.000101f}, - {+0.001246f, -0.020482f, -0.002726f, -0.000581f, +0.000087f}, - {+0.149860f, -0.087638f, +0.023219f, +0.000836f, -0.000049f}, - {+0.011705f, +0.182241f, +0.000824f, -0.000663f, +0.000015f}, - {-0.036322f, +0.046246f, -0.002434f, +0.001110f, +0.000020f}, - {-0.041445f, +0.225060f, -0.008066f, -0.001247f, -0.000002f}, - {+0.082241f, +0.130716f, +0.009581f, -0.000052f, -0.000037f}, - {+0.061982f, -0.060921f, +0.008434f, -0.000587f, -0.000055f}, - {+0.070313f, -0.179626f, +0.010580f, +0.000496f, -0.000079f}, - {+0.010271f, +0.049933f, +0.003107f, +0.000216f, -0.000007f}, - {-0.072320f, +0.142479f, -0.007956f, -0.000403f, +0.000037f}, - {-0.080097f, -0.050215f, -0.010237f, -0.000128f, +0.000027f} - }, - { - {-0.138659f, +0.433413f, -0.019489f, +0.000507f, +0.000036f}, - {-0.163451f, +0.512532f, -0.021259f, +0.000613f, +0.000105f}, - {+0.031656f, +0.104824f, +0.003994f, -0.000128f, +0.000059f}, - {-0.110770f, +0.224024f, -0.015294f, -0.000397f, +0.000039f}, - {-0.125629f, +0.045496f, -0.015544f, -0.000259f, +0.000027f}, - {+0.013056f, -0.002303f, +0.002874f, +0.000034f, +0.000053f}, - {+0.034706f, -0.263278f, +0.003483f, -0.000141f, -0.000039f}, - {-0.095465f, +0.017678f, -0.011595f, +0.000132f, +0.000064f}, - {-0.033817f, +0.054176f, -0.010428f, -0.000890f, -0.000012f}, - {-0.119869f, +0.100206f, -0.015399f, +0.000474f, +0.000091f}, - {-0.083578f, -0.121580f, -0.008601f, +0.000327f, -0.000026f}, - {+0.021962f, -0.124782f, +0.004983f, +0.000417f, +0.000031f}, - {+0.081591f, -0.160439f, +0.012843f, +0.000024f, -0.000092f}, - {-0.025765f, -0.006872f, -0.004893f, -0.000318f, -0.000015f}, - {-0.048404f, +0.176242f, -0.007439f, -0.000200f, +0.000038f}, - {+0.029349f, +0.118206f, +0.002646f, -0.000434f, +0.000011f} - }, - { - {+0.273332f, -0.197278f, +0.041000f, +0.000427f, +0.000049f}, - {+0.321458f, -0.231555f, +0.047137f, +0.001083f, +0.000091f}, - {+0.051312f, +0.073576f, +0.009852f, +0.000350f, -0.000146f}, - {+0.149316f, -0.177043f, +0.022631f, +0.000468f, -0.000104f}, - {+0.053207f, -0.228176f, +0.008455f, +0.000505f, -0.000122f}, - {+0.006068f, +0.008715f, +0.003223f, +0.000482f, -0.000122f}, - {-0.145901f, +0.015682f, -0.022924f, -0.000759f, +0.000061f}, - {+0.021739f, -0.160951f, +0.002760f, +0.000739f, -0.000036f}, - {+0.029254f, -0.044035f, +0.001822f, -0.001067f, -0.000028f}, - {+0.071428f, -0.194582f, +0.013164f, +0.000987f, -0.000034f}, - {-0.035270f, -0.192622f, -0.005952f, +0.000220f, +0.000050f}, - {-0.068773f, +0.014813f, -0.009109f, +0.000533f, +0.000056f}, - {-0.089870f, +0.103512f, -0.014502f, -0.000459f, +0.000122f}, - {+0.001775f, -0.051927f, +0.000206f, -0.000272f, +0.000005f}, - {+0.077868f, -0.020072f, +0.010512f, +0.000382f, -0.000051f}, - {+0.053027f, +0.078728f, +0.007627f, +0.000029f, -0.000036f} - }, - { - {+0.101834f, -0.458014f, +0.014426f, -0.000475f, -0.000042f}, - {+0.106819f, -0.558024f, +0.013421f, -0.000683f, -0.000132f}, - {-0.052912f, -0.088899f, -0.008225f, +0.000491f, -0.000027f}, - {+0.083094f, -0.280030f, +0.010300f, +0.000632f, -0.000016f}, - {+0.114197f, -0.131784f, +0.014954f, +0.000412f, -0.000002f}, - {-0.019246f, -0.031443f, -0.004356f, +0.000329f, -0.000027f}, - {+0.005316f, +0.248103f, +0.002960f, +0.000118f, +0.000033f}, - {+0.080531f, -0.067083f, +0.011460f, +0.000110f, -0.000064f}, - {+0.031144f, -0.046782f, +0.008670f, +0.001209f, +0.000024f}, - {+0.102756f, -0.143879f, +0.013003f, -0.000283f, -0.000065f}, - {+0.095015f, +0.011155f, +0.012207f, -0.000367f, +0.000008f}, - {+0.004913f, +0.131661f, -0.000343f, -0.000524f, -0.000039f}, - {-0.046459f, +0.170846f, -0.007777f, -0.000479f, +0.000069f}, - {+0.027234f, -0.016428f, +0.003165f, +0.000304f, +0.000026f}, - {+0.005481f, -0.131071f, +0.001565f, +0.000318f, -0.000030f}, - {-0.043474f, -0.073298f, -0.006440f, +0.000550f, +0.000003f} - }, - { - {-0.286640f, +0.137246f, -0.043420f, -0.000432f, -0.000040f}, - {-0.340199f, +0.128020f, -0.049926f, -0.001339f, -0.000072f}, - {-0.035997f, -0.119831f, -0.005662f, +0.000296f, +0.000179f}, - {-0.172429f, +0.110349f, -0.024201f, -0.000100f, +0.000122f}, - {-0.092373f, +0.185204f, -0.014035f, -0.000067f, +0.000138f}, - {-0.010912f, -0.048983f, -0.001816f, +0.000075f, +0.000154f}, - {+0.129079f, +0.059883f, +0.019833f, +0.000637f, -0.000073f}, - {-0.041407f, +0.122204f, -0.006834f, -0.000592f, +0.000062f}, - {-0.030715f, +0.048574f, -0.001376f, +0.001126f, +0.000032f}, - {-0.096213f, +0.160581f, -0.016571f, -0.000370f, +0.000063f}, - {-0.010051f, +0.173763f, -0.000750f, -0.000501f, -0.000056f}, - {+0.062657f, +0.045986f, +0.006800f, -0.000608f, -0.000057f}, - {+0.093242f, -0.041300f, +0.014445f, -0.000123f, -0.000165f}, - {-0.019827f, +0.053398f, -0.000412f, +0.000436f, -0.000009f}, - {-0.057687f, -0.032809f, -0.008352f, -0.000201f, +0.000065f}, - {-0.029198f, -0.096300f, -0.002960f, +0.000112f, +0.000041f} - }, - { - {-0.065817f, +0.474129f, -0.008963f, +0.000406f, +0.000046f}, - {-0.048357f, +0.572445f, -0.005311f, +0.000514f, +0.000163f}, - {+0.075398f, +0.048030f, +0.008271f, -0.000640f, -0.000031f}, - {-0.038405f, +0.313945f, -0.005856f, -0.000669f, -0.000022f}, - {-0.086028f, +0.192206f, -0.012072f, -0.000418f, -0.000038f}, - {+0.040227f, +0.025362f, +0.003912f, -0.000532f, -0.000024f}, - {-0.038209f, -0.193928f, -0.006045f, -0.000139f, -0.000021f}, - {-0.067018f, +0.081277f, -0.009330f, -0.000374f, +0.000051f}, - {-0.028904f, +0.056950f, -0.007486f, -0.001345f, -0.000045f}, - {-0.078983f, +0.183476f, -0.010913f, +0.000304f, +0.000020f}, - {-0.083563f, +0.058421f, -0.010558f, +0.000255f, +0.000015f}, - {-0.030882f, -0.097232f, -0.001515f, +0.000622f, +0.000053f}, - {+0.015685f, -0.158569f, +0.005189f, +0.000820f, -0.000018f}, - {-0.013899f, +0.061952f, -0.002806f, -0.000268f, -0.000038f}, - {+0.012586f, +0.075138f, +0.001144f, -0.000413f, +0.000015f}, - {+0.050911f, +0.027618f, +0.006661f, -0.000507f, -0.000023f} - }, - { - {+0.298262f, -0.083362f, +0.045235f, +0.000350f, +0.000028f}, - {+0.345899f, -0.033997f, +0.051595f, +0.001615f, +0.000035f}, - {-0.000119f, +0.165002f, +0.002953f, -0.001311f, -0.000187f}, - {+0.171388f, -0.008423f, +0.025114f, -0.000464f, -0.000125f}, - {+0.115274f, -0.117327f, +0.017963f, -0.000487f, -0.000138f}, - {-0.008614f, +0.100535f, +0.001469f, -0.001024f, -0.000165f}, - {-0.096130f, -0.104542f, -0.016843f, -0.000419f, +0.000082f}, - {+0.057723f, -0.112429f, +0.010191f, +0.000184f, -0.000084f}, - {+0.036341f, -0.043085f, +0.001450f, -0.001349f, -0.000025f}, - {+0.112953f, -0.110523f, +0.019836f, -0.000405f, -0.000071f}, - {+0.043415f, -0.138944f, +0.005951f, +0.000778f, +0.000051f}, - {-0.038181f, -0.085067f, -0.005138f, +0.000773f, +0.000051f}, - {-0.082623f, -0.007927f, -0.014925f, +0.001161f, +0.000188f}, - {+0.027034f, -0.000974f, +0.001645f, -0.000490f, +0.000020f}, - {+0.035360f, +0.038752f, +0.006345f, -0.000067f, -0.000073f}, - {+0.000083f, +0.105539f, -0.000772f, -0.000317f, -0.000036f} - }, - { - {+0.027126f, -0.497380f, +0.003317f, -0.000351f, -0.000045f}, - {-0.007859f, -0.574645f, -0.003243f, -0.000139f, -0.000188f}, - {-0.075777f, +0.049221f, -0.008353f, -0.000117f, +0.000106f}, - {-0.000094f, -0.270760f, +0.000675f, +0.000190f, +0.000068f}, - {+0.052764f, -0.211602f, +0.007618f, -0.000144f, +0.000084f}, - {-0.046479f, +0.043520f, -0.004619f, -0.000085f, +0.000093f}, - {+0.048000f, +0.115677f, +0.008039f, +0.000243f, +0.000005f}, - {+0.053119f, -0.119462f, +0.006689f, +0.000259f, -0.000024f}, - {+0.023530f, -0.067795f, +0.006354f, +0.001215f, +0.000069f}, - {+0.051960f, -0.201931f, +0.007334f, -0.001040f, +0.000035f}, - {+0.061094f, -0.110021f, +0.007462f, +0.000103f, -0.000039f}, - {+0.036876f, +0.032412f, +0.003266f, -0.000534f, -0.000070f}, - {+0.001902f, +0.122288f, -0.002472f, -0.000241f, -0.000056f}, - {-0.004270f, -0.048829f, +0.000734f, +0.000014f, +0.000048f}, - {-0.012745f, -0.036706f, -0.002273f, +0.000205f, +0.000006f}, - {-0.042314f, +0.038832f, -0.005804f, +0.000347f, +0.000043f} - }, - { - {-0.307088f, +0.013827f, -0.046648f, -0.000063f, -0.000017f}, - {-0.343985f, -0.057778f, -0.051999f, -0.001370f, +0.000021f}, - {+0.039378f, -0.130507f, -0.000123f, +0.002505f, +0.000156f}, - {-0.152973f, -0.035960f, -0.024197f, +0.000907f, +0.000105f}, - {-0.122328f, +0.057169f, -0.020503f, +0.000916f, +0.000113f}, - {+0.036115f, -0.084847f, -0.000437f, +0.002283f, +0.000139f}, - {+0.065884f, +0.089825f, +0.012704f, +0.000253f, -0.000086f}, - {-0.076176f, +0.079461f, -0.013926f, +0.000844f, +0.000095f}, - {-0.041886f, +0.032735f, -0.001798f, +0.001521f, +0.000002f}, - {-0.120605f, +0.060574f, -0.022209f, +0.000951f, +0.000049f}, - {-0.065666f, +0.088077f, -0.009755f, -0.000580f, -0.000035f}, - {+0.014536f, +0.066997f, +0.002290f, -0.001040f, -0.000035f}, - {+0.069578f, +0.020859f, +0.015775f, -0.002732f, -0.000173f}, - {-0.018357f, -0.025356f, -0.001559f, +0.000309f, -0.000039f}, - {-0.021973f, -0.023763f, -0.004557f, +0.000507f, +0.000072f}, - {+0.024594f, -0.064613f, +0.005019f, +0.000113f, +0.000019f} - }, - { - {+0.017452f, +0.509103f, +0.002330f, +0.000354f, +0.000040f}, - {+0.065401f, +0.568079f, +0.010528f, -0.000542f, +0.000194f}, - {+0.050175f, -0.114107f, +0.005162f, +0.003266f, -0.000174f}, - {+0.018374f, +0.227727f, +0.003630f, +0.001902f, -0.000110f}, - {-0.023543f, +0.209166f, -0.002096f, +0.002246f, -0.000125f}, - {+0.031298f, -0.092434f, +0.002541f, +0.002737f, -0.000158f}, - {-0.039294f, -0.069055f, -0.007101f, -0.000802f, +0.000015f}, - {-0.027981f, +0.151965f, -0.004965f, +0.000568f, -0.000008f}, - {-0.016092f, +0.076462f, -0.004970f, -0.000449f, -0.000085f}, - {-0.025683f, +0.205232f, -0.002533f, +0.003878f, -0.000082f}, - {-0.031489f, +0.139294f, -0.004565f, -0.001598f, +0.000056f}, - {-0.026207f, +0.002872f, -0.002107f, +0.000154f, +0.000084f}, - {-0.008497f, -0.098826f, +0.002487f, -0.002569f, +0.000130f}, - {+0.010858f, +0.022687f, +0.002492f, +0.000762f, -0.000051f}, - {+0.007112f, +0.019771f, +0.000809f, +0.000752f, -0.000028f}, - {+0.017429f, -0.074807f, +0.003855f, +0.000473f, -0.000058f} + {+0.353305f, +0.566845f, +0.200116f}, + {+0.451504f, -0.563006f, +0.083565f}, + {+0.022092f, +0.111945f, -0.003135f}, + {+0.047133f, +0.000194f, -0.000386f}, + {+0.039375f, -0.036049f, -0.015307f}, + {+0.013502f, -0.004406f, +0.016833f}, + {-0.050267f, +0.058356f, +0.017434f}, + {-0.013681f, +0.080836f, -0.019699f}, + {-0.037136f, +0.024371f, +0.052200f}, + {+0.050122f, -0.078803f, -0.019790f}, + {-0.004565f, +0.007656f, -0.001338f}, + {+0.009821f, -0.051585f, -0.003219f}, + {-0.003833f, -0.023411f, -0.003160f}, + {+0.007736f, -0.042621f, +0.010291f}, + {+0.014210f, -0.003392f, -0.001270f}, + {-0.005609f, +0.001063f, +0.001854f} + }, + { + {+0.011160f, -0.509237f, -0.132176f}, + {+0.142996f, -0.819544f, +0.093135f}, + {+0.003358f, +0.077333f, -0.008548f}, + {+0.004495f, +0.024167f, +0.025614f}, + {+0.020911f, +0.057490f, +0.024558f}, + {+0.020938f, +0.024631f, +0.022840f}, + {-0.049990f, -0.113634f, -0.053590f}, + {+0.010020f, +0.210234f, +0.026992f}, + {-0.094579f, -0.407023f, -0.103353f}, + {+0.038956f, +0.088489f, +0.058039f}, + {+0.002875f, +0.015645f, -0.000778f}, + {+0.020714f, +0.104784f, +0.070444f}, + {-0.008794f, +0.002924f, +0.009615f}, + {+0.004361f, -0.056762f, +0.007070f}, + {+0.010128f, +0.073116f, +0.035032f}, + {-0.005641f, -0.006012f, -0.000245f} + }, + { + {-0.192410f, -0.206164f, -0.191132f}, + {-0.278956f, +0.236216f, -0.253095f}, + {-0.002616f, +0.068222f, +0.000710f}, + {-0.043976f, +0.107663f, +0.006000f}, + {-0.022830f, +0.121862f, +0.008267f}, + {+0.007646f, +0.104913f, -0.016048f}, + {+0.008805f, -0.278895f, +0.005919f}, + {+0.015200f, +0.180293f, +0.037960f}, + {-0.037987f, -0.531186f, -0.053722f}, + {-0.053411f, +0.405963f, -0.066106f}, + {+0.004225f, +0.049392f, -0.020098f}, + {-0.032849f, +0.404382f, -0.057080f}, + {-0.020343f, +0.025697f, +0.003018f}, + {+0.000399f, -0.049237f, +0.005564f}, + {-0.018895f, +0.170897f, -0.004768f}, + {-0.014229f, +0.049740f, -0.026663f} + }, + { + {-0.062917f, +0.511673f, +0.062418f}, + {-0.164174f, +1.090974f, +0.108397f}, + {+0.009127f, +0.065188f, -0.003083f}, + {-0.018593f, +0.081738f, -0.000771f}, + {-0.020686f, +0.093603f, +0.012011f}, + {+0.000826f, +0.118498f, -0.001498f}, + {+0.025996f, -0.307659f, -0.023797f}, + {-0.008194f, +0.054598f, -0.009722f}, + {+0.040351f, -0.445888f, -0.056326f}, + {-0.030847f, +0.708631f, +0.081623f}, + {+0.002063f, +0.033938f, -0.025075f}, + {-0.027403f, +0.458795f, -0.033429f}, + {-0.021373f, -0.007009f, -0.010388f}, + {-0.002090f, -0.031407f, +0.008158f}, + {-0.028475f, +0.071069f, -0.046847f}, + {-0.007602f, +0.116385f, +0.002531f} + }, + { + {+0.114739f, +0.069536f, +0.170911f}, + {+0.106068f, +0.653946f, +0.186091f}, + {+0.032435f, +0.023922f, +0.003440f}, + {+0.048701f, +0.139999f, -0.053329f}, + {+0.008680f, +0.251941f, -0.071200f}, + {-0.004397f, +0.120323f, +0.000310f}, + {+0.025654f, -0.324361f, -0.006461f}, + {-0.004810f, +0.061858f, -0.007597f}, + {+0.097919f, -0.641143f, +0.015289f}, + {+0.011357f, +0.557580f, +0.143138f}, + {+0.004726f, -0.016709f, +0.000434f}, + {+0.013229f, +0.166606f, +0.093126f}, + {-0.007411f, +0.011792f, -0.021547f}, + {-0.005396f, -0.034575f, +0.011453f}, + {+0.010644f, +0.011719f, -0.021909f}, + {+0.005419f, +0.030988f, +0.043631f} + }, + { + {+0.066623f, -0.089947f, +0.096291f}, + {+0.228582f, +0.462839f, +0.023355f}, + {+0.030597f, +0.055459f, +0.010541f}, + {+0.104887f, +0.337465f, -0.003674f}, + {+0.072691f, +0.405228f, -0.038864f}, + {+0.004864f, +0.081470f, -0.022241f}, + {+0.026067f, -0.215427f, +0.055659f}, + {+0.015556f, +0.034465f, -0.026853f}, + {+0.081559f, -0.329728f, +0.167841f}, + {+0.004434f, +0.224966f, -0.027520f}, + {+0.000854f, -0.017986f, +0.001169f}, + {-0.017103f, +0.022207f, +0.026879f}, + {+0.016949f, +0.070641f, -0.004353f}, + {-0.006585f, -0.086138f, -0.004695f}, + {+0.059412f, +0.107209f, +0.004895f}, + {+0.005676f, -0.059162f, +0.003180f} + }, + { + {-0.248577f, +0.462186f, -0.044825f}, + {+0.092220f, +0.576619f, +0.031483f}, + {-0.018552f, +0.118241f, -0.000190f}, + {+0.024038f, +0.192235f, +0.076006f}, + {+0.073463f, +0.111697f, +0.085309f}, + {+0.045418f, +0.052428f, -0.014128f}, + {+0.004341f, -0.088144f, -0.002830f}, + {+0.058183f, -0.067481f, +0.003537f}, + {-0.112838f, +0.181474f, -0.013812f}, + {+0.051144f, +0.057123f, +0.036471f}, + {-0.002310f, -0.009489f, -0.002928f}, + {-0.036815f, +0.070367f, +0.013190f}, + {+0.025238f, +0.001933f, +0.022381f}, + {+0.011799f, -0.070089f, -0.017261f}, + {+0.079383f, -0.005050f, +0.042259f}, + {+0.027513f, -0.031781f, -0.014727f} + }, + { + {-0.588729f, +0.069942f, -0.118192f}, + {-0.336864f, -0.087523f, -0.133178f}, + {-0.091818f, +0.000222f, -0.031435f}, + {-0.240072f, -0.209090f, -0.026656f}, + {-0.106536f, -0.210008f, -0.006949f}, + {+0.086566f, +0.077574f, -0.013942f}, + {+0.036640f, -0.012230f, +0.021355f}, + {+0.059977f, -0.024737f, +0.017673f}, + {-0.214469f, +0.026100f, -0.046140f}, + {+0.016107f, -0.082852f, -0.011968f}, + {-0.003608f, +0.021470f, +0.008749f}, + {-0.046323f, -0.010871f, -0.015628f}, + {-0.008214f, -0.079699f, -0.002987f}, + {+0.052373f, +0.029312f, +0.014086f}, + {+0.018742f, -0.113603f, +0.010455f}, + {+0.059520f, +0.032936f, +0.004294f} + }, + { + {-0.672439f, -0.199370f, +0.003424f}, + {-0.631922f, -0.138094f, -0.043549f}, + {-0.130748f, -0.058055f, -0.001266f}, + {-0.452933f, -0.003480f, -0.056408f}, + {-0.285057f, +0.030036f, -0.056968f}, + {+0.110275f, -0.011467f, +0.016793f}, + {+0.065972f, +0.005614f, +0.004420f}, + {-0.003151f, +0.047883f, +0.002061f}, + {-0.163084f, -0.130815f, +0.001810f}, + {-0.019555f, -0.025290f, -0.023258f}, + {-0.018781f, +0.034389f, +0.006142f}, + {-0.002509f, -0.046479f, -0.009162f}, + {-0.041047f, -0.024011f, -0.016940f}, + {+0.065623f, +0.027310f, +0.010505f}, + {-0.073560f, +0.039971f, -0.029159f}, + {+0.062876f, +0.006797f, +0.012019f} + }, + { + {-0.543455f, +0.059523f, +0.064094f}, + {-0.700107f, +0.080270f, +0.041520f}, + {-0.154990f, -0.009275f, +0.018360f}, + {-0.474326f, +0.126377f, -0.003035f}, + {-0.327360f, +0.114048f, -0.014833f}, + {+0.071241f, -0.058994f, +0.004572f}, + {+0.087784f, +0.000125f, -0.001107f}, + {-0.094160f, -0.038960f, -0.011917f}, + {-0.019089f, +0.055284f, +0.038765f}, + {-0.023647f, +0.039958f, +0.003588f}, + {-0.043021f, -0.013443f, -0.008032f}, + {+0.077825f, +0.044990f, +0.010103f}, + {-0.040861f, +0.021619f, +0.002193f}, + {+0.044745f, -0.030859f, -0.007951f}, + {-0.123807f, +0.055927f, -0.012492f}, + {+0.025663f, -0.034745f, +0.003611f} + }, + { + {-0.336060f, +0.028886f, +0.031505f}, + {-0.587287f, -0.009083f, +0.042775f}, + {-0.182505f, +0.025753f, +0.007772f}, + {-0.327915f, -0.064183f, +0.035026f}, + {-0.233666f, -0.067260f, +0.031214f}, + {-0.007323f, +0.030500f, -0.014877f}, + {+0.086165f, +0.005866f, -0.002682f}, + {-0.157983f, -0.017671f, -0.007972f}, + {+0.103610f, +0.038997f, +0.019660f}, + {-0.007681f, -0.004657f, +0.015128f}, + {-0.055812f, -0.017923f, -0.003300f}, + {+0.143968f, +0.013845f, +0.008347f}, + {-0.017716f, -0.004963f, +0.006287f}, + {+0.008786f, -0.012160f, -0.007210f}, + {-0.121102f, -0.034578f, +0.019391f}, + {-0.032193f, +0.031317f, -0.010154f} + }, + { + {-0.153248f, -0.008370f, -0.009310f}, + {-0.402033f, +0.000118f, +0.012937f}, + {-0.199763f, -0.006595f, +0.001228f}, + {-0.128842f, +0.004526f, +0.020419f}, + {-0.092842f, -0.010605f, +0.021993f}, + {-0.077909f, +0.025349f, -0.002895f}, + {+0.057392f, -0.008479f, -0.003710f}, + {-0.165419f, +0.022789f, +0.007822f}, + {+0.148908f, -0.037324f, -0.013709f}, + {+0.011296f, -0.018097f, +0.005621f}, + {-0.055136f, +0.008613f, +0.006635f}, + {+0.160576f, -0.015557f, -0.006131f}, + {+0.014844f, -0.003364f, +0.000064f}, + {-0.027453f, -0.001660f, +0.003786f}, + {-0.097934f, -0.032125f, +0.013700f}, + {-0.074549f, +0.020854f, -0.006292f} + }, + { + {-0.021458f, -0.031294f, -0.015786f}, + {-0.225566f, -0.016671f, -0.005476f}, + {-0.179128f, -0.006436f, +0.000989f}, + {+0.030888f, -0.004116f, -0.001010f}, + {+0.023526f, +0.004404f, -0.002301f}, + {-0.113727f, -0.001584f, +0.014207f}, + {+0.006187f, +0.003628f, -0.000322f}, + {-0.130415f, +0.000132f, +0.008388f}, + {+0.133114f, -0.001415f, -0.020106f}, + {+0.026233f, +0.006894f, -0.005590f}, + {-0.046982f, +0.011852f, +0.003518f}, + {+0.124161f, +0.003790f, -0.005992f}, + {+0.039303f, -0.005121f, -0.003574f}, + {-0.061746f, +0.020157f, -0.000385f}, + {-0.073801f, +0.016410f, -0.009153f}, + {-0.089034f, -0.008662f, +0.006612f} + }, + { + {+0.079072f, +0.039673f, -0.003004f}, + {-0.077618f, +0.033045f, -0.007328f}, + {-0.090967f, +0.027848f, +0.000971f}, + {+0.121511f, -0.002007f, -0.010039f}, + {+0.095609f, +0.005944f, -0.008880f}, + {-0.100415f, -0.015820f, +0.006869f}, + {-0.060544f, -0.012856f, +0.004470f}, + {-0.077695f, +0.001667f, -0.001003f}, + {+0.092912f, +0.018201f, -0.005273f}, + {+0.040823f, +0.014455f, -0.004325f}, + {-0.030102f, +0.002197f, -0.002719f}, + {+0.043620f, -0.016980f, -0.000122f}, + {+0.041014f, +0.001499f, -0.001303f}, + {-0.088431f, +0.009078f, -0.001327f}, + {-0.051030f, +0.024992f, -0.008833f}, + {-0.091055f, -0.011437f, +0.003728f} + }, + { + {+0.165755f, -0.020564f, +0.004876f}, + {+0.050384f, -0.037239f, -0.000994f}, + {+0.070084f, -0.036144f, -0.001750f}, + {+0.168503f, -0.016906f, -0.008961f}, + {+0.141507f, -0.014408f, -0.005947f}, + {-0.022796f, -0.010807f, -0.007047f}, + {-0.126569f, +0.016739f, +0.005274f}, + {-0.026827f, -0.017151f, -0.002196f}, + {+0.045512f, +0.004295f, +0.005991f}, + {+0.054896f, -0.008311f, +0.001754f}, + {-0.003645f, -0.010307f, -0.002009f}, + {-0.057176f, +0.014805f, +0.004774f}, + {+0.011072f, +0.010642f, -0.000248f}, + {-0.108885f, -0.004650f, +0.007771f}, + {-0.039664f, -0.018793f, +0.005550f}, + {-0.092338f, -0.000767f, -0.000795f} + }, + { + {+0.239774f, +0.007034f, +0.002631f}, + {+0.158490f, +0.023748f, +0.003698f}, + {+0.270403f, +0.044381f, -0.006888f}, + {+0.208319f, +0.016522f, -0.001863f}, + {+0.188853f, +0.017009f, -0.001321f}, + {+0.109689f, +0.039932f, -0.010880f}, + {-0.162224f, -0.011965f, +0.002284f}, + {+0.008275f, +0.010941f, +0.003208f}, + {-0.008632f, -0.022468f, +0.003767f}, + {+0.062087f, -0.004201f, +0.001503f}, + {+0.024938f, +0.010189f, +0.000489f}, + {-0.144572f, -0.021004f, +0.007356f}, + {-0.046268f, -0.010126f, +0.001327f}, + {-0.126844f, -0.020412f, +0.005586f}, + {-0.049688f, -0.012221f, +0.009513f}, + {-0.100800f, -0.001133f, +0.001097f} + }, + { + {+0.298828f, -0.005793f, -0.001373f}, + {+0.237768f, -0.008765f, +0.003046f}, + {+0.449357f, -0.047352f, -0.004642f}, + {+0.250753f, -0.004865f, -0.001957f}, + {+0.245484f, -0.010819f, -0.000881f}, + {+0.249706f, -0.049408f, -0.003961f}, + {-0.136738f, -0.008753f, -0.001855f}, + {+0.025853f, +0.003385f, +0.004139f}, + {-0.065934f, +0.022501f, -0.003288f}, + {+0.057527f, +0.008394f, -0.002717f}, + {+0.046206f, -0.004855f, +0.002123f}, + {-0.183725f, +0.015903f, +0.001405f}, + {-0.114051f, +0.012348f, +0.005264f}, + {-0.129436f, +0.010088f, -0.004805f}, + {-0.071460f, +0.022939f, +0.001488f}, + {-0.119149f, +0.009223f, +0.000555f} + }, + { + {+0.346011f, +0.008343f, -0.002521f}, + {+0.286535f, -0.000576f, -0.000480f}, + {+0.541635f, +0.014116f, +0.002290f}, + {+0.286228f, +0.009795f, -0.003869f}, + {+0.299965f, +0.009735f, -0.003167f}, + {+0.328736f, +0.018968f, +0.006082f}, + {-0.037520f, +0.034439f, -0.002184f}, + {+0.042204f, -0.003541f, +0.000630f}, + {-0.115659f, -0.004656f, -0.004969f}, + {+0.039051f, -0.003041f, -0.004257f}, + {+0.056424f, +0.001120f, +0.003167f}, + {-0.144869f, +0.019123f, -0.003415f}, + {-0.166286f, -0.018086f, +0.003983f}, + {-0.101679f, +0.021538f, -0.005021f}, + {-0.078280f, -0.006671f, -0.006794f}, + {-0.140047f, -0.004747f, -0.001252f} + }, + { + {+0.388388f, -0.009881f, -0.001847f}, + {+0.316128f, -0.000090f, -0.004009f}, + {+0.513290f, +0.035603f, +0.000300f}, + {+0.296513f, -0.005786f, -0.000267f}, + {+0.333378f, -0.007221f, -0.002877f}, + {+0.295424f, +0.041070f, +0.003600f}, + {+0.114311f, -0.042170f, +0.000214f}, + {+0.081378f, -0.006284f, -0.003240f}, + {-0.150267f, -0.005614f, +0.000485f}, + {+0.005390f, +0.000214f, -0.000390f}, + {+0.064645f, +0.002835f, +0.002892f}, + {-0.026756f, -0.044985f, +0.000392f}, + {-0.170480f, -0.001979f, -0.000156f}, + {-0.050780f, -0.025790f, +0.003317f}, + {-0.047515f, -0.026029f, -0.004739f}, + {-0.153995f, -0.004894f, +0.001183f} + }, + { + {+0.430636f, +0.009808f, -0.001195f}, + {+0.343293f, +0.010478f, -0.003913f}, + {+0.388765f, -0.049553f, -0.008265f}, + {+0.266407f, -0.016789f, +0.000864f}, + {+0.328141f, -0.007654f, -0.002512f}, + {+0.155445f, -0.060858f, -0.009380f}, + {+0.269010f, +0.026881f, -0.000978f}, + {+0.158656f, +0.025362f, -0.003743f}, + {-0.171832f, +0.002756f, +0.006554f}, + {-0.043647f, -0.009482f, +0.003918f}, + {+0.090667f, -0.001476f, -0.001048f}, + {+0.132548f, +0.036105f, +0.003022f}, + {-0.106351f, +0.024154f, -0.000421f}, + {-0.000521f, +0.009705f, +0.007542f}, + {+0.019829f, +0.036619f, +0.006700f}, + {-0.155900f, +0.002824f, +0.004883f} + }, + { + {+0.471455f, -0.008296f, -0.001200f}, + {+0.377731f, -0.016768f, +0.000590f}, + {+0.234888f, +0.026343f, -0.008776f}, + {+0.198215f, +0.029257f, -0.004797f}, + {+0.279113f, +0.015431f, -0.003236f}, + {-0.033581f, +0.032760f, -0.011351f}, + {+0.370767f, -0.006318f, -0.006828f}, + {+0.266209f, -0.029783f, -0.001410f}, + {-0.185419f, +0.012636f, +0.005498f}, + {-0.100533f, +0.019010f, +0.003209f}, + {+0.151097f, -0.010446f, -0.007094f}, + {+0.274631f, -0.012724f, -0.003901f}, + {+0.013966f, -0.029859f, -0.001195f}, + {+0.031705f, +0.010192f, +0.002683f}, + {+0.102880f, -0.011055f, +0.011106f}, + {-0.143777f, +0.006427f, +0.002026f} + }, + { + {+0.505485f, +0.006321f, -0.001405f}, + {+0.419164f, +0.009705f, +0.004024f}, + {+0.115231f, -0.006245f, -0.000430f}, + {+0.110599f, -0.013787f, -0.006578f}, + {+0.197526f, -0.015552f, -0.000736f}, + {-0.208411f, -0.008219f, +0.002566f}, + {+0.381442f, -0.001142f, -0.007728f}, + {+0.371664f, +0.016115f, -0.002975f}, + {-0.191819f, -0.017185f, -0.004447f}, + {-0.147317f, -0.015855f, -0.001243f}, + {+0.239821f, +0.029217f, -0.008681f}, + {+0.348287f, +0.007454f, -0.010181f}, + {+0.149521f, +0.030650f, -0.003365f}, + {+0.048588f, -0.006717f, -0.005355f}, + {+0.186826f, -0.010831f, -0.001024f}, + {-0.115953f, +0.001790f, -0.004618f} + }, + { + {+0.527959f, -0.004605f, -0.000793f}, + {+0.465933f, +0.000734f, +0.000648f}, + {+0.058769f, +0.003399f, +0.003980f}, + {+0.020939f, +0.002500f, +0.001602f}, + {+0.102989f, +0.023640f, +0.000907f}, + {-0.330754f, +0.015227f, +0.013490f}, + {+0.293504f, +0.012966f, +0.002367f}, + {+0.435673f, -0.007769f, -0.006056f}, + {-0.189456f, -0.010551f, -0.008519f}, + {-0.165864f, -0.001568f, -0.003516f}, + {+0.320806f, -0.034715f, -0.000873f}, + {+0.324855f, -0.004016f, -0.002288f}, + {+0.248230f, -0.023651f, -0.001117f}, + {+0.067435f, -0.016300f, -0.003833f}, + {+0.272913f, -0.007587f, -0.015541f}, + {-0.076620f, -0.021772f, -0.003143f} + }, + { + {+0.537963f, +0.000122f, -0.000129f}, + {+0.521439f, +0.006120f, -0.005687f}, + {+0.059349f, +0.002731f, +0.001179f}, + {-0.063524f, -0.015179f, +0.008462f}, + {+0.018295f, -0.018831f, -0.001086f}, + {-0.382316f, -0.020820f, +0.008228f}, + {+0.133723f, -0.051158f, +0.007642f}, + {+0.427333f, -0.004801f, -0.004396f}, + {-0.189172f, +0.025571f, +0.003440f}, + {-0.153064f, +0.017940f, +0.000618f}, + {+0.344855f, +0.000841f, +0.007255f}, + {+0.204120f, -0.035702f, +0.007554f}, + {+0.269414f, -0.005639f, +0.002449f}, + {+0.098719f, +0.013856f, +0.002962f}, + {+0.355359f, +0.040342f, -0.012703f}, + {-0.043435f, +0.014923f, +0.004398f} + }, + { + {+0.539918f, +0.002520f, -0.000803f}, + {+0.586780f, -0.022878f, -0.005664f}, + {+0.088465f, -0.012487f, -0.000009f}, + {-0.133857f, +0.024436f, +0.005429f}, + {-0.038815f, +0.004600f, -0.001199f}, + {-0.354019f, -0.005760f, -0.002225f}, + {-0.035479f, +0.061479f, -0.003852f}, + {+0.333448f, +0.030542f, -0.002292f}, + {-0.214917f, +0.009773f, +0.013046f}, + {-0.126578f, -0.010093f, +0.005470f}, + {+0.286447f, +0.044878f, +0.001444f}, + {+0.026257f, +0.067149f, +0.001093f}, + {+0.208042f, +0.035382f, -0.000884f}, + {+0.140716f, -0.000405f, +0.001329f}, + {+0.398750f, -0.026334f, +0.002502f}, + {-0.035058f, +0.007558f, +0.005919f} + }, + { + {+0.542223f, +0.000691f, -0.001439f}, + {+0.649673f, +0.023205f, +0.000535f}, + {+0.109219f, +0.005980f, +0.002282f}, + {-0.171779f, -0.010220f, -0.000656f}, + {-0.066150f, +0.005365f, +0.002547f}, + {-0.254746f, +0.041005f, -0.002026f}, + {-0.138924f, -0.008674f, -0.012149f}, + {+0.169249f, -0.044112f, -0.002599f}, + {-0.272638f, -0.040677f, +0.004640f}, + {-0.110153f, -0.006462f, +0.003434f}, + {+0.169903f, -0.042984f, -0.010056f}, + {-0.132794f, -0.036153f, -0.009130f}, + {+0.102112f, -0.031703f, -0.006139f}, + {+0.188913f, +0.004870f, -0.004839f}, + {+0.357390f, -0.030371f, +0.006291f}, + {-0.051114f, -0.020551f, -0.000894f} + }, + { + {+0.551847f, -0.004875f, -0.000679f}, + {+0.690272f, -0.004312f, +0.004016f}, + {+0.095639f, +0.010071f, +0.002809f}, + {-0.161818f, -0.013824f, -0.000790f}, + {-0.076081f, +0.002390f, +0.004308f}, + {-0.122361f, -0.040035f, +0.004601f}, + {-0.144006f, -0.036671f, -0.003198f}, + {-0.024466f, +0.039610f, -0.000882f}, + {-0.331827f, +0.020929f, -0.006635f}, + {-0.113319f, +0.007876f, -0.000927f}, + {+0.048322f, +0.009251f, -0.008004f}, + {-0.207982f, -0.015726f, -0.004350f}, + {+0.006949f, +0.009330f, -0.004246f}, + {+0.233905f, -0.014811f, -0.005355f}, + {+0.223143f, +0.054998f, -0.002434f}, + {-0.070208f, +0.002186f, -0.004895f} + }, + { + {+0.570043f, +0.005432f, +0.000103f}, + {+0.699360f, -0.014398f, -0.000427f}, + {+0.048501f, -0.018143f, +0.001306f}, + {-0.107295f, +0.023902f, +0.003671f}, + {-0.082584f, -0.006076f, +0.001731f}, + {-0.005834f, +0.019340f, +0.006865f}, + {-0.085415f, +0.035831f, +0.009933f}, + {-0.202459f, -0.035934f, +0.000303f}, + {-0.353113f, +0.015051f, -0.004263f}, + {-0.130123f, -0.004257f, -0.001776f}, + {-0.043254f, -0.003167f, +0.001496f}, + {-0.189334f, +0.031601f, +0.007634f}, + {-0.040215f, +0.005301f, +0.001534f}, + {+0.256999f, +0.008098f, -0.001598f}, + {+0.036347f, -0.049036f, -0.008301f}, + {-0.070389f, +0.011544f, -0.000794f} + }, + { + {+0.593416f, -0.005649f, +0.000278f}, + {+0.688298f, +0.007364f, -0.005463f}, + {-0.008044f, +0.018190f, -0.001207f}, + {-0.030689f, -0.015365f, +0.004543f}, + {-0.091891f, +0.004696f, -0.000919f}, + {+0.064670f, +0.007573f, +0.000965f}, + {-0.030187f, +0.002153f, +0.010834f}, + {-0.331404f, +0.015975f, +0.000858f}, + {-0.323976f, -0.025164f, +0.004961f}, + {-0.148829f, -0.000188f, +0.000078f}, + {-0.101305f, +0.006103f, +0.005181f}, + {-0.115300f, -0.016832f, +0.010749f}, + {-0.032766f, -0.011589f, +0.005290f}, + {+0.239406f, +0.007974f, +0.000705f}, + {-0.145255f, +0.023713f, -0.004941f}, + {-0.046369f, -0.012177f, +0.003695f} + }, + { + {+0.616579f, +0.002929f, -0.000295f}, + {+0.676588f, +0.004629f, -0.003842f}, + {-0.043537f, -0.004766f, -0.003324f}, + {+0.044220f, +0.013845f, +0.003072f}, + {-0.101856f, +0.006437f, +0.001748f}, + {+0.092523f, -0.007377f, -0.006975f}, + {-0.023470f, -0.026713f, -0.000479f}, + {-0.400554f, +0.001062f, +0.004867f}, + {-0.261565f, +0.014128f, +0.007944f}, + {-0.159121f, +0.002751f, +0.002980f}, + {-0.138765f, -0.008950f, +0.004189f}, + {-0.034625f, -0.000481f, +0.002727f}, + {+0.012613f, +0.005909f, +0.003331f}, + {+0.175748f, -0.024801f, -0.000902f}, + {-0.281594f, -0.008334f, +0.003990f}, + {-0.007054f, +0.002604f, +0.002155f} + }, + { + {+0.635179f, -0.002823f, -0.001148f}, + {+0.674199f, -0.007986f, +0.000991f}, + {-0.041014f, -0.013849f, -0.001185f}, + {+0.104750f, -0.003964f, +0.000987f}, + {-0.107619f, +0.003736f, +0.004502f}, + {+0.101204f, -0.003739f, -0.008397f}, + {-0.064575f, +0.021388f, -0.009658f}, + {-0.422196f, -0.004265f, +0.008954f}, + {-0.190975f, -0.003688f, +0.002622f}, + {-0.155793f, +0.001509f, +0.003088f}, + {-0.169274f, +0.008874f, +0.002289f}, + {+0.023162f, -0.001981f, -0.005597f}, + {+0.073018f, -0.010252f, -0.000970f}, + {+0.080452f, +0.024265f, -0.002891f}, + {-0.363635f, +0.004698f, +0.010523f}, + {+0.035663f, -0.006812f, -0.001722f} + }, + { + {+0.647447f, +0.003124f, -0.000778f}, + {+0.678396f, -0.001222f, +0.002175f}, + {-0.008003f, +0.018788f, +0.004232f}, + {+0.153771f, +0.006824f, -0.001505f}, + {-0.102284f, -0.006283f, +0.000369f}, + {+0.107854f, +0.015766f, -0.002536f}, + {-0.127703f, -0.002824f, -0.007472f}, + {-0.415367f, -0.005027f, +0.007128f}, + {-0.124975f, +0.011994f, -0.001327f}, + {-0.135698f, +0.002841f, +0.000522f}, + {-0.197083f, -0.008952f, +0.000525f}, + {+0.049410f, +0.008433f, -0.005306f}, + {+0.128034f, +0.008755f, -0.002993f}, + {-0.020098f, -0.017083f, -0.001266f}, + {-0.399229f, -0.010519f, +0.009961f}, + {+0.073610f, +0.013100f, -0.000219f} + }, + { + {+0.653287f, -0.000651f, -0.000132f}, + {+0.682914f, +0.002014f, -0.000124f}, + {+0.032972f, -0.005837f, +0.006215f}, + {+0.202805f, -0.008225f, -0.002812f}, + {-0.078083f, -0.005921f, -0.003749f}, + {+0.111320f, -0.004540f, +0.003693f}, + {-0.194460f, +0.001719f, +0.000738f}, + {-0.388630f, -0.001712f, +0.002133f}, + {-0.064250f, -0.011691f, -0.000978f}, + {-0.097911f, -0.010340f, -0.000589f}, + {-0.217935f, +0.002537f, -0.000189f}, + {+0.043003f, -0.001190f, -0.000648f}, + {+0.160424f, -0.006445f, -0.003025f}, + {-0.102796f, +0.011222f, +0.001449f}, + {-0.392994f, +0.003832f, +0.004205f}, + {+0.101814f, -0.004741f, +0.002529f} + }, + { + {+0.655085f, -0.000496f, -0.000073f}, + {+0.685269f, +0.000562f, -0.000824f}, + {+0.064749f, -0.008716f, +0.000371f}, + {+0.258268f, +0.016126f, -0.002727f}, + {-0.038467f, +0.019915f, -0.001374f}, + {+0.101519f, -0.013031f, +0.001724f}, + {-0.262717f, -0.010913f, +0.005785f}, + {-0.340935f, +0.010917f, -0.000109f}, + {-0.005117f, +0.011670f, -0.001141f}, + {-0.047975f, +0.015016f, +0.000510f}, + {-0.227673f, +0.001545f, +0.000844f}, + {+0.006815f, -0.010613f, +0.001679f}, + {+0.158152f, -0.002971f, -0.001763f}, + {-0.154604f, -0.004393f, +0.003495f}, + {-0.341946f, +0.012918f, +0.000060f}, + {+0.123129f, -0.003187f, +0.000554f} + }, + { + {+0.657162f, +0.001154f, -0.000704f}, + {+0.686405f, -0.001174f, +0.000024f}, + {+0.087607f, -0.002335f, -0.004967f}, + {+0.314889f, -0.015378f, -0.000770f}, + {-0.001549f, -0.013009f, +0.003904f}, + {+0.077871f, +0.011151f, -0.003120f}, + {-0.333383f, +0.022033f, +0.004891f}, + {-0.273704f, -0.019370f, +0.000308f}, + {+0.054701f, -0.011371f, -0.002150f}, + {+0.003312f, -0.012026f, +0.002061f}, + {-0.228798f, -0.001402f, +0.001592f}, + {-0.048684f, +0.018229f, +0.000520f}, + {+0.117088f, +0.012634f, -0.000896f}, + {-0.173410f, +0.001735f, +0.003820f}, + {-0.247906f, -0.029903f, +0.000682f}, + {+0.148293f, -0.000926f, -0.003582f} + }, + { + {+0.663635f, +0.002010f, -0.001316f}, + {+0.689882f, -0.000220f, +0.000110f}, + {+0.108949f, +0.013447f, -0.002013f}, + {+0.358661f, +0.009695f, +0.001033f}, + {+0.013352f, -0.004281f, +0.004550f}, + {+0.049096f, -0.001505f, -0.002637f}, + {-0.398463f, -0.021957f, -0.000327f}, + {-0.196600f, +0.019778f, +0.001903f}, + {+0.110988f, +0.014423f, -0.001867f}, + {+0.045870f, +0.004558f, +0.001576f}, + {-0.228188f, +0.000097f, +0.001476f}, + {-0.105835f, -0.015244f, -0.001995f}, + {+0.044580f, -0.021539f, -0.001382f}, + {-0.164082f, +0.001655f, +0.001885f}, + {-0.126620f, +0.032568f, +0.003705f}, + {+0.185481f, +0.013419f, -0.004184f} + }, + { + {+0.675624f, -0.004827f, -0.000839f}, + {+0.700179f, -0.002102f, -0.000678f}, + {+0.128613f, -0.006572f, +0.002141f}, + {+0.378743f, +0.002887f, +0.000648f}, + {+0.004220f, +0.012669f, +0.000801f}, + {+0.022440f, +0.000653f, +0.000869f}, + {-0.441665f, +0.002210f, -0.002042f}, + {-0.124814f, -0.014411f, +0.002833f}, + {+0.153596f, -0.007894f, -0.000675f}, + {+0.077085f, -0.001217f, -0.000703f}, + {-0.231308f, -0.000725f, +0.002147f}, + {-0.147273f, +0.003213f, -0.002198f}, + {-0.042268f, +0.020842f, -0.002800f}, + {-0.133721f, -0.009739f, +0.001057f}, + {-0.003152f, -0.021386f, +0.003714f}, + {+0.229253f, -0.015325f, -0.001319f} + }, + { + {+0.689875f, +0.004735f, +0.000183f}, + {+0.720017f, +0.006167f, -0.000699f}, + {+0.141755f, -0.003516f, +0.000834f}, + {+0.376706f, -0.006807f, -0.001713f}, + {-0.011000f, -0.005016f, -0.001618f}, + {+0.000647f, -0.004137f, +0.002283f}, + {-0.454292f, +0.009561f, +0.002281f}, + {-0.069428f, +0.004651f, +0.001574f}, + {+0.172906f, +0.000456f, -0.000712f}, + {+0.102160f, +0.005230f, -0.001608f}, + {-0.237600f, -0.001176f, +0.003651f}, + {-0.166513f, +0.006046f, +0.001258f}, + {-0.123162f, -0.009523f, -0.000972f}, + {-0.093037f, +0.007808f, +0.000738f}, + {+0.101706f, +0.008107f, -0.001772f}, + {+0.261899f, +0.005910f, +0.000263f} + }, + { + {+0.701449f, -0.001309f, +0.000513f}, + {+0.747852f, -0.007083f, -0.000295f}, + {+0.146674f, +0.002063f, -0.002067f}, + {+0.365508f, +0.004005f, -0.003093f}, + {-0.009820f, -0.003073f, -0.001694f}, + {-0.014954f, +0.005079f, +0.001243f}, + {-0.444057f, -0.005273f, +0.005170f}, + {-0.030220f, -0.001713f, -0.001402f}, + {+0.167308f, +0.005594f, -0.001307f}, + {+0.126894f, -0.005843f, -0.001163f}, + {-0.239461f, +0.006087f, +0.002206f}, + {-0.171030f, -0.001130f, +0.003837f}, + {-0.185728f, +0.008176f, +0.002303f}, + {-0.053859f, -0.008398f, -0.000003f}, + {+0.180213f, -0.012225f, -0.006311f}, + {+0.267399f, +0.003688f, -0.000070f} + }, + { + {+0.707682f, -0.001614f, -0.000417f}, + {+0.778938f, +0.006537f, -0.000334f}, + {+0.145291f, +0.002890f, -0.001284f}, + {+0.359528f, +0.005062f, -0.001469f}, + {+0.019378f, +0.015221f, -0.000076f}, + {-0.021977f, -0.000916f, +0.000266f}, + {-0.425305f, -0.000822f, +0.003160f}, + {+0.002113f, +0.007052f, -0.002427f}, + {+0.143996f, -0.006679f, -0.001487f}, + {+0.153276f, +0.008199f, -0.000318f}, + {-0.224106f, +0.002607f, -0.000957f}, + {-0.172702f, -0.005631f, +0.001975f}, + {-0.227595f, -0.009189f, +0.001906f}, + {-0.024550f, +0.006878f, +0.000998f}, + {+0.231993f, +0.016149f, -0.003555f}, + {+0.242520f, -0.012045f, -0.001170f} + }, + { + {+0.709804f, +0.000997f, -0.001515f}, + {+0.808027f, -0.005290f, -0.000583f}, + {+0.139809f, +0.000435f, +0.000818f}, + {+0.365924f, -0.006226f, +0.001737f}, + {+0.071369f, -0.017742f, +0.003060f}, + {-0.017802f, -0.003027f, +0.000621f}, + {-0.407651f, -0.000451f, +0.000175f}, + {+0.034591f, -0.007791f, -0.002030f}, + {+0.114950f, +0.006228f, -0.001120f}, + {+0.179490f, -0.006128f, +0.000795f}, + {-0.183246f, -0.015768f, -0.000773f}, + {-0.177035f, +0.003531f, -0.000696f}, + {-0.250400f, +0.001355f, +0.001108f}, + {-0.008187f, +0.000159f, +0.001456f}, + {+0.254611f, -0.001384f, -0.000532f}, + {+0.198496f, +0.013948f, -0.002759f} + }, + { + {+0.710823f, +0.002381f, -0.001069f}, + {+0.831214f, +0.003447f, -0.000878f}, + {+0.132056f, -0.007797f, -0.000969f}, + {+0.382880f, -0.001094f, +0.000711f}, + {+0.129160f, +0.007502f, +0.002763f}, + {-0.003161f, +0.000767f, -0.000443f}, + {-0.392711f, +0.006305f, +0.000815f}, + {+0.067053f, +0.011901f, -0.000327f}, + {+0.090742f, -0.003835f, -0.000996f}, + {+0.202084f, +0.000560f, -0.000195f}, + {-0.122322f, +0.020924f, +0.002535f}, + {-0.182462f, +0.002778f, +0.000258f}, + {-0.259161f, +0.001293f, +0.002195f}, + {+0.000645f, -0.003627f, -0.000469f}, + {+0.248733f, -0.007401f, -0.001654f}, + {+0.153178f, -0.008546f, -0.003483f} + }, + { + {+0.712186f, -0.002003f, +0.000341f}, + {+0.846788f, -0.001521f, -0.001394f}, + {+0.124294f, +0.003415f, -0.004317f}, + {+0.406372f, -0.002613f, -0.002804f}, + {+0.179207f, -0.002493f, -0.001438f}, + {+0.017437f, -0.004122f, -0.002593f}, + {-0.378082f, -0.002349f, +0.002279f}, + {+0.093160f, -0.004321f, +0.001305f}, + {+0.077016f, -0.001502f, +0.000076f}, + {+0.220676f, -0.001245f, -0.002361f}, + {-0.057208f, -0.011096f, +0.003599f}, + {-0.185276f, -0.001151f, +0.002614f}, + {-0.259729f, -0.001827f, +0.003455f}, + {+0.012127f, +0.000504f, -0.003413f}, + {+0.221948f, +0.010321f, -0.003531f}, + {+0.118717f, -0.000242f, -0.001468f} + }, + { + {+0.713662f, -0.000828f, +0.000545f}, + {+0.855438f, +0.002950f, -0.000977f}, + {+0.115830f, +0.005727f, -0.002674f}, + {+0.431080f, +0.008386f, -0.003025f}, + {+0.218522f, +0.008054f, -0.003300f}, + {+0.036091f, +0.008702f, -0.001428f}, + {-0.359216f, +0.001218f, +0.000904f}, + {+0.107642f, -0.001544f, +0.000220f}, + {+0.072571f, -0.000752f, +0.000715f}, + {+0.237634f, +0.007061f, -0.001792f}, + {-0.001551f, +0.003678f, +0.000322f}, + {-0.181633f, -0.003122f, +0.001514f}, + {-0.255564f, -0.003731f, +0.002293f}, + {+0.032826f, +0.012636f, -0.002484f}, + {+0.185211f, -0.004024f, -0.002705f}, + {+0.094101f, -0.001623f, +0.001061f} + }, + { + {+0.715808f, +0.001447f, -0.000564f}, + {+0.858599f, -0.000128f, -0.000166f}, + {+0.099314f, +0.001041f, +0.001297f}, + {+0.448457f, -0.007760f, -0.000064f}, + {+0.248826f, -0.008996f, -0.001277f}, + {+0.041985f, -0.000319f, +0.000791f}, + {-0.330901f, -0.006650f, -0.000552f}, + {+0.113746f, +0.002963f, -0.001774f}, + {+0.073588f, -0.000327f, +0.000159f}, + {+0.253601f, -0.004683f, +0.000245f}, + {+0.041369f, -0.004973f, -0.002735f}, + {-0.166731f, -0.003863f, -0.000533f}, + {-0.246518f, -0.001268f, -0.000049f}, + {+0.057814f, -0.010629f, +0.001615f}, + {+0.147641f, +0.004485f, +0.000244f}, + {+0.070521f, +0.005007f, +0.001670f} + }, + { + {+0.720382f, +0.001583f, -0.001168f}, + {+0.858507f, -0.001602f, -0.000561f}, + {+0.067329f, -0.015190f, +0.000273f}, + {+0.450274f, -0.005070f, +0.000753f}, + {+0.271109f, +0.002256f, -0.000399f}, + {+0.028488f, -0.011815f, -0.001154f}, + {-0.292330f, +0.012166f, +0.000199f}, + {+0.120202f, +0.001560f, -0.002785f}, + {+0.077618f, +0.000385f, -0.000057f}, + {+0.267478f, -0.001019f, -0.000455f}, + {+0.074822f, +0.008817f, -0.002528f}, + {-0.138952f, +0.011104f, +0.000590f}, + {-0.231196f, +0.009528f, +0.001492f}, + {+0.074656f, -0.000989f, +0.002061f}, + {+0.113858f, -0.008628f, +0.000648f}, + {+0.041189f, -0.009773f, +0.000867f} + }, + { + {+0.728412f, -0.003781f, -0.000442f}, + {+0.858915f, +0.000641f, -0.001243f}, + {+0.021588f, +0.015568f, -0.003718f}, + {+0.435021f, +0.011190f, -0.002580f}, + {+0.286107f, +0.000454f, -0.002042f}, + {-0.001012f, +0.010763f, -0.004584f}, + {-0.248323f, -0.011164f, +0.001788f}, + {+0.134196f, -0.006281f, -0.001978f}, + {+0.082702f, +0.001367f, -0.001190f}, + {+0.278772f, +0.000302f, -0.002741f}, + {+0.102933f, -0.009391f, +0.000025f}, + {-0.103537f, -0.008673f, +0.002139f}, + {-0.211947f, -0.006496f, +0.004418f}, + {+0.077185f, +0.005220f, -0.000312f}, + {+0.087037f, +0.006765f, -0.000943f}, + {+0.005530f, +0.010882f, -0.000993f} + }, + { + {+0.738976f, +0.002329f, +0.000136f}, + {+0.861896f, -0.000932f, -0.002377f}, + {-0.029402f, -0.003271f, -0.002468f}, + {+0.408989f, -0.003243f, -0.003584f}, + {+0.293612f, +0.002313f, -0.002730f}, + {-0.038002f, -0.000412f, -0.002803f}, + {-0.206194f, +0.003320f, +0.000488f}, + {+0.155421f, +0.006078f, -0.001116f}, + {+0.087818f, +0.003223f, -0.001518f}, + {+0.285833f, +0.006231f, -0.001960f}, + {+0.128249f, +0.001074f, +0.000243f}, + {-0.068575f, +0.002940f, +0.000700f}, + {-0.191804f, -0.003014f, +0.002724f}, + {+0.067942f, -0.005643f, -0.002245f}, + {+0.068213f, -0.000980f, -0.001053f}, + {-0.030778f, -0.002407f, -0.000036f} + }, + { + {+0.750300f, +0.000058f, -0.000825f}, + {+0.866279f, -0.001749f, -0.003432f}, + {-0.078123f, -0.003921f, +0.005991f}, + {+0.379010f, -0.005518f, +0.002243f}, + {+0.292486f, -0.009941f, +0.001947f}, + {-0.075433f, -0.005336f, +0.005378f}, + {-0.170771f, -0.002341f, -0.003169f}, + {+0.177886f, -0.005886f, -0.000679f}, + {+0.091281f, -0.005785f, +0.001198f}, + {+0.285767f, -0.012433f, +0.005156f}, + {+0.152796f, +0.004962f, -0.005079f}, + {-0.040112f, -0.002644f, -0.001940f}, + {-0.171647f, +0.007661f, -0.004705f}, + {+0.053028f, -0.000873f, -0.001571f}, + {+0.054373f, -0.002064f, +0.001211f}, + {-0.062123f, +0.000837f, +0.004082f} + }, + { + {+0.760695f, +0.000187f, -0.002580f}, + {+0.869383f, +0.005374f, -0.001979f}, + {-0.118984f, -0.003432f, +0.014567f}, + {+0.349914f, +0.003949f, +0.011712f}, + {+0.283867f, +0.008607f, +0.011966f}, + {-0.106829f, -0.003798f, +0.012953f}, + {-0.143863f, +0.007735f, -0.004012f}, + {+0.195900f, +0.004792f, +0.000560f}, + {+0.091845f, +0.002959f, +0.004936f}, + {+0.279043f, +0.006225f, +0.015628f}, + {+0.177000f, -0.001330f, -0.012704f}, + {-0.021476f, +0.006516f, -0.001630f}, + {-0.154239f, +0.000969f, -0.011998f}, + {+0.037152f, +0.007671f, +0.004251f}, + {+0.041126f, +0.001005f, +0.004482f}, + {-0.085797f, -0.005363f, +0.006097f} } }; -const float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][16][BINAURAL_NTAPS]= +const float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.132965f, +0.086484f, +0.111577f, -0.006297f, -0.000146f}, - {-0.159214f, +0.438495f, -0.131837f, -0.004567f, -0.000134f}, - {-0.006365f, -0.027154f, +0.040068f, -0.008136f, +0.000115f}, - {-0.012177f, +0.011068f, +0.006759f, -0.003623f, +0.000106f}, - {-0.003524f, +0.002365f, -0.008243f, +0.002720f, +0.000173f}, - {+0.001684f, -0.006593f, -0.024280f, +0.012226f, +0.000133f}, - {+0.003794f, -0.002370f, +0.013706f, -0.004985f, -0.000191f}, - {+0.009569f, -0.049227f, +0.045250f, -0.003942f, -0.000006f}, - {-0.015413f, +0.062027f, -0.005814f, -0.010696f, -0.000183f}, - {-0.012650f, +0.030376f, +0.022293f, -0.005058f, -0.000424f}, - {+0.003808f, -0.011707f, -0.008010f, +0.002270f, +0.000068f}, - {-0.003343f, +0.012704f, +0.014571f, -0.003409f, -0.000255f}, - {+0.000428f, +0.007434f, +0.003549f, -0.001445f, +0.000011f}, - {-0.006298f, +0.029469f, -0.007911f, +0.000838f, -0.000089f}, - {-0.003358f, +0.002973f, +0.012948f, -0.001507f, +0.000003f}, - {-0.000168f, +0.002647f, +0.005935f, -0.001295f, -0.000063f} - }, - { - {+0.075202f, +0.228858f, +0.021577f, -0.002573f, -0.000120f}, - {+0.061927f, +0.923113f, -0.018254f, -0.003553f, -0.000135f}, - {+0.002952f, -0.050194f, +0.020301f, -0.000013f, +0.000082f}, - {+0.008722f, +0.019708f, -0.013956f, +0.001282f, +0.000072f}, - {+0.001425f, +0.021365f, -0.019206f, -0.005433f, +0.000123f}, - {-0.004675f, -0.040742f, -0.087083f, -0.008021f, +0.000087f}, - {-0.001220f, -0.034662f, +0.025115f, +0.004561f, -0.000118f}, - {-0.004799f, -0.049232f, +0.074542f, +0.003362f, -0.000003f}, - {+0.011236f, +0.040604f, -0.010517f, +0.002046f, -0.000098f}, - {+0.006435f, +0.139253f, +0.070542f, -0.004148f, -0.000297f}, - {-0.001842f, -0.052892f, -0.056325f, -0.005942f, +0.000046f}, - {+0.004364f, +0.052115f, +0.019067f, -0.000398f, -0.000179f}, - {+0.003644f, +0.037489f, +0.030067f, +0.000286f, +0.000000f}, - {+0.000279f, +0.074681f, +0.035692f, +0.005433f, -0.000065f}, - {+0.001702f, +0.024063f, +0.022013f, +0.000449f, +0.000009f}, - {+0.001629f, +0.004730f, -0.001402f, -0.003756f, -0.000041f} - }, - { - {-0.022776f, +0.213361f, +0.033702f, +0.017530f, +0.000169f}, - {+0.017318f, +0.757708f, +0.032772f, +0.023486f, +0.000150f}, - {-0.000995f, +0.005778f, -0.039399f, +0.003826f, -0.000133f}, - {-0.001086f, +0.066855f, -0.049052f, -0.001880f, -0.000124f}, - {+0.003861f, +0.074613f, -0.059871f, +0.001275f, -0.000202f}, - {+0.004218f, -0.001879f, -0.134238f, -0.000831f, -0.000156f}, - {-0.007011f, -0.156373f, +0.120347f, +0.000348f, +0.000228f}, - {+0.001557f, +0.050757f, -0.023560f, -0.002558f, +0.000008f}, - {-0.014029f, -0.230152f, +0.192472f, +0.009207f, +0.000223f}, - {+0.003304f, +0.293531f, -0.162769f, +0.029563f, +0.000502f}, - {-0.000187f, -0.025533f, -0.089914f, +0.003071f, -0.000081f}, - {-0.001118f, +0.199397f, -0.178948f, +0.009074f, +0.000301f}, - {-0.002128f, +0.041497f, +0.024472f, -0.001412f, -0.000017f}, - {+0.001502f, +0.027123f, +0.081159f, -0.005992f, +0.000104f}, - {+0.000493f, +0.080670f, -0.051505f, -0.003323f, -0.000001f}, - {-0.001770f, +0.022371f, -0.053147f, +0.009257f, +0.000076f} - }, - { - {+0.009638f, -0.020599f, -0.278274f, -0.025390f, +0.000089f}, - {-0.019638f, +0.173586f, -0.454125f, -0.045073f, +0.000138f}, - {+0.001861f, +0.029237f, -0.038358f, -0.002128f, -0.000043f}, - {-0.006025f, +0.060820f, -0.033037f, +0.001020f, -0.000030f}, - {-0.010927f, +0.114232f, +0.022410f, +0.002610f, -0.000063f}, - {-0.001151f, +0.065308f, -0.047475f, +0.003953f, -0.000033f}, - {+0.017565f, -0.230160f, -0.003612f, +0.002199f, +0.000030f}, - {-0.002909f, +0.050062f, -0.035205f, +0.001706f, -0.000001f}, - {+0.028618f, -0.411400f, -0.073259f, -0.001960f, -0.000006f}, - {-0.012397f, +0.141388f, -0.368076f, -0.043941f, +0.000144f}, - {+0.000613f, +0.027917f, -0.038807f, +0.005057f, -0.000020f}, - {-0.005278f, +0.064856f, -0.339877f, -0.008614f, +0.000087f}, - {-0.003908f, -0.015797f, -0.023962f, +0.003729f, +0.000013f}, - {+0.002822f, -0.051424f, +0.011636f, +0.000447f, +0.000037f}, - {-0.001743f, -0.007517f, -0.130092f, +0.010670f, -0.000017f}, - {+0.001199f, -0.016221f, -0.122288f, -0.007685f, +0.000014f} - }, - { - {-0.029178f, -0.030294f, -0.242046f, +0.016235f, -0.000187f}, - {-0.008133f, -0.216891f, -0.173004f, +0.046339f, -0.000186f}, - {-0.004784f, +0.011306f, -0.001565f, +0.002974f, +0.000133f}, - {+0.001643f, -0.028149f, +0.058358f, +0.006461f, +0.000122f}, - {+0.012719f, -0.054617f, +0.162135f, +0.005430f, +0.000206f}, - {+0.004192f, -0.016864f, +0.049221f, +0.004060f, +0.000152f}, - {-0.017065f, +0.041944f, -0.209787f, -0.017496f, -0.000221f}, - {+0.005651f, -0.007117f, +0.010168f, -0.000370f, -0.000010f}, - {-0.040832f, +0.087605f, -0.438294f, -0.024557f, -0.000208f}, - {+0.015743f, -0.224869f, -0.116394f, +0.024045f, -0.000521f}, - {-0.000520f, +0.017676f, -0.001703f, -0.007076f, +0.000085f}, - {+0.005864f, -0.108940f, -0.176379f, -0.006190f, -0.000311f}, - {+0.004834f, -0.026630f, -0.021079f, -0.003057f, +0.000018f}, - {-0.003714f, -0.006337f, -0.039785f, +0.000713f, -0.000108f}, - {+0.003235f, -0.035740f, -0.081406f, -0.014616f, +0.000003f}, - {-0.000931f, -0.029194f, -0.104837f, -0.000498f, -0.000077f} - }, - { - {+0.064069f, +0.415122f, +0.053438f, -0.001987f, -0.000053f}, - {+0.009859f, +0.329919f, +0.267131f, -0.025972f, -0.000125f}, - {+0.007782f, +0.093625f, +0.062218f, -0.005519f, +0.000007f}, - {+0.006679f, +0.087174f, +0.140907f, -0.012343f, -0.000007f}, - {-0.009694f, -0.066480f, +0.161387f, -0.014778f, +0.000006f}, - {-0.011976f, -0.007185f, +0.079605f, -0.010521f, -0.000016f}, - {+0.000557f, +0.101449f, -0.157518f, +0.024682f, +0.000050f}, - {-0.008085f, -0.037335f, +0.019864f, -0.001614f, +0.000006f}, - {+0.030203f, +0.393848f, -0.238529f, +0.036570f, +0.000098f}, - {-0.011087f, -0.102790f, +0.079859f, -0.000351f, +0.000008f}, - {+0.001584f, +0.009914f, +0.007779f, +0.002067f, -0.000006f}, - {+0.003353f, -0.001777f, +0.008005f, +0.013355f, +0.000003f}, - {-0.003172f, -0.008210f, +0.010652f, +0.000223f, -0.000027f}, - {-0.001325f, -0.010307f, -0.051607f, +0.003067f, -0.000008f}, - {-0.010253f, -0.010690f, +0.002393f, +0.009426f, +0.000023f}, - {-0.002525f, +0.029747f, -0.022901f, +0.004832f, +0.000012f} - }, - { - {-0.046682f, +0.646468f, +0.038502f, -0.000394f, +0.000197f}, - {+0.044970f, +0.559290f, +0.057727f, +0.008886f, +0.000233f}, - {+0.000940f, +0.137203f, +0.026727f, +0.004536f, -0.000119f}, - {+0.021842f, +0.212599f, -0.004934f, +0.008826f, -0.000104f}, - {+0.023556f, +0.052508f, -0.021029f, +0.010719f, -0.000188f}, - {+0.008092f, -0.004951f, +0.027003f, +0.006766f, -0.000127f}, - {+0.010424f, -0.025150f, +0.006816f, -0.012676f, +0.000176f}, - {+0.012013f, -0.064462f, +0.013618f, +0.002713f, +0.000010f}, - {+0.003530f, +0.310311f, -0.011616f, -0.019741f, +0.000148f}, - {+0.004678f, -0.016958f, +0.018438f, +0.001910f, +0.000484f}, - {-0.001327f, +0.004928f, +0.011742f, +0.001214f, -0.000078f}, - {-0.013688f, +0.047967f, +0.031851f, -0.002524f, +0.000286f}, - {+0.008554f, -0.003502f, +0.000653f, +0.000953f, -0.000012f}, - {+0.001110f, -0.052143f, -0.004967f, -0.003628f, +0.000102f}, - {+0.024328f, -0.026559f, +0.000732f, -0.001055f, -0.000010f}, - {+0.007177f, -0.017435f, +0.026024f, -0.001281f, +0.000068f} - }, - { - {-0.091452f, +0.552905f, -0.002702f, -0.003959f, +0.000011f}, - {-0.151251f, +0.284723f, -0.015522f, -0.005073f, +0.000086f}, - {-0.028691f, +0.087255f, -0.003554f, -0.001461f, +0.000017f}, - {-0.098620f, +0.103367f, -0.000693f, -0.001510f, +0.000032f}, - {-0.064701f, +0.012013f, -0.004462f, -0.000173f, +0.000038f}, - {+0.014183f, -0.018557f, -0.019481f, -0.000708f, +0.000046f}, - {+0.006021f, -0.064708f, +0.035867f, -0.001201f, -0.000101f}, - {-0.011933f, -0.098741f, -0.004801f, -0.001237f, -0.000012f}, - {-0.036700f, +0.201775f, +0.040310f, -0.000652f, -0.000152f}, - {-0.005765f, +0.013682f, +0.000873f, -0.007110f, -0.000136f}, - {-0.003019f, -0.012643f, -0.006120f, -0.000396f, +0.000028f}, - {+0.011018f, +0.079111f, +0.001161f, -0.005334f, -0.000076f}, - {-0.015223f, -0.010103f, +0.018116f, -0.000552f, +0.000040f}, - {+0.010935f, -0.049744f, +0.004931f, +0.000250f, -0.000016f}, - {-0.032242f, -0.086323f, +0.005558f, -0.001593f, -0.000026f}, - {+0.000743f, -0.058299f, -0.001218f, -0.002067f, -0.000032f} - }, - { - {+0.231005f, +0.048404f, +0.009154f, +0.001498f, -0.000196f}, - {+0.192280f, -0.252895f, -0.010481f, +0.000333f, -0.000272f}, - {+0.043883f, -0.025510f, -0.003790f, -0.000402f, +0.000097f}, - {+0.135351f, -0.212029f, -0.009492f, -0.001960f, +0.000078f}, - {+0.084125f, -0.181115f, -0.006598f, -0.003510f, +0.000156f}, - {-0.033552f, +0.023473f, -0.003836f, -0.001049f, +0.000092f}, - {-0.027732f, +0.007669f, +0.004823f, +0.004147f, -0.000114f}, - {-0.005511f, -0.108447f, -0.007469f, -0.001175f, -0.000008f}, - {+0.049262f, +0.093379f, +0.014337f, +0.006176f, -0.000066f}, - {+0.011588f, -0.007485f, -0.021418f, -0.002195f, -0.000406f}, - {+0.004828f, -0.034802f, +0.002483f, -0.000357f, +0.000065f}, - {+0.010126f, +0.088145f, -0.024313f, -0.000561f, -0.000239f}, - {+0.009822f, -0.024986f, +0.000140f, +0.000383f, +0.000001f}, - {-0.022780f, -0.006413f, +0.006349f, +0.001513f, -0.000089f}, - {+0.014962f, -0.135165f, -0.012780f, -0.000522f, +0.000019f}, - {-0.023635f, -0.027393f, -0.008518f, +0.000542f, -0.000051f} - }, - { - {-0.129287f, -0.488427f, -0.015298f, +0.003330f, +0.000032f}, - {-0.025480f, -0.578744f, -0.004928f, +0.005728f, -0.000021f}, - {-0.001654f, -0.098586f, -0.003334f, +0.000763f, -0.000028f}, - {-0.033875f, -0.443496f, +0.008037f, +0.001296f, -0.000041f}, - {-0.018947f, -0.326335f, +0.012624f, +0.000806f, -0.000063f}, - {+0.025064f, +0.093936f, +0.002533f, +0.000591f, -0.000056f}, - {+0.010694f, +0.085378f, -0.009219f, -0.001445f, +0.000116f}, - {+0.036700f, -0.055426f, -0.001721f, +0.001199f, +0.000016f}, - {-0.043110f, -0.003684f, -0.012692f, -0.002555f, +0.000160f}, - {-0.008512f, -0.041967f, +0.005268f, +0.006560f, +0.000223f}, - {+0.005601f, -0.039303f, +0.001728f, -0.000112f, -0.000044f}, - {-0.035999f, +0.034895f, +0.002757f, +0.004270f, +0.000123f}, - {+0.002203f, -0.033200f, -0.001100f, -0.000045f, -0.000048f}, - {+0.016721f, +0.047214f, -0.004075f, -0.000550f, +0.000032f}, - {+0.021446f, -0.110159f, +0.004884f, +0.001124f, +0.000025f}, - {+0.032915f, +0.061006f, +0.000313f, +0.001075f, +0.000044f} - }, - { - {-0.165686f, -0.410109f, -0.015586f, -0.000896f, +0.000182f}, - {-0.225295f, -0.253817f, -0.010634f, -0.001216f, +0.000288f}, - {-0.066393f, -0.000376f, -0.002622f, -0.000038f, -0.000077f}, - {-0.130423f, -0.277756f, -0.010288f, +0.000606f, -0.000054f}, - {-0.089464f, -0.200814f, -0.007558f, +0.001360f, -0.000121f}, - {+0.004322f, +0.115904f, +0.010769f, +0.000324f, -0.000060f}, - {+0.034499f, +0.049740f, -0.008222f, -0.001335f, +0.000055f}, - {-0.046786f, +0.057680f, +0.004042f, +0.000640f, +0.000003f}, - {+0.024894f, -0.095189f, -0.014289f, -0.002426f, -0.000011f}, - {-0.005629f, -0.034211f, +0.013115f, +0.002185f, +0.000307f}, - {-0.019520f, -0.005119f, +0.001636f, +0.000261f, -0.000048f}, - {+0.038933f, -0.062477f, +0.011725f, +0.001017f, +0.000182f}, - {-0.005035f, -0.021514f, -0.003233f, -0.000466f, +0.000014f}, - {+0.007389f, +0.053217f, -0.000456f, -0.000398f, +0.000072f}, - {-0.037733f, -0.010531f, -0.003329f, +0.000340f, -0.000027f}, - {-0.003757f, +0.111811f, +0.004737f, -0.000075f, +0.000033f} - }, - { - {+0.245533f, +0.226873f, +0.035259f, -0.002770f, -0.000070f}, - {+0.206677f, +0.408421f, +0.026814f, -0.005082f, -0.000056f}, - {+0.053751f, +0.188303f, +0.009769f, -0.000688f, +0.000029f}, - {+0.149357f, +0.154463f, +0.013417f, -0.001098f, +0.000037f}, - {+0.105083f, +0.109018f, +0.007715f, -0.000799f, +0.000072f}, - {-0.025793f, +0.064751f, -0.005742f, -0.000924f, +0.000050f}, - {-0.041996f, -0.072003f, +0.001334f, +0.001959f, -0.000101f}, - {+0.008234f, +0.134619f, -0.001439f, -0.000932f, -0.000019f}, - {+0.007939f, -0.128639f, +0.012917f, +0.003363f, -0.000130f}, - {+0.013715f, +0.007050f, +0.000167f, -0.004932f, -0.000266f}, - {+0.012412f, +0.040469f, -0.000036f, -0.000063f, +0.000052f}, - {-0.005607f, -0.122490f, -0.001069f, -0.003166f, -0.000145f}, - {+0.002475f, -0.010103f, -0.001112f, +0.000172f, +0.000049f}, - {-0.026992f, -0.004924f, -0.001965f, +0.000301f, -0.000041f}, - {+0.008412f, +0.067378f, +0.003334f, -0.000633f, -0.000020f}, - {-0.034796f, +0.054935f, -0.005935f, -0.000590f, -0.000048f} - }, - { - {+0.049172f, +0.518027f, +0.003115f, +0.000335f, -0.000156f}, - {+0.120618f, +0.519623f, +0.008479f, +0.000432f, -0.000270f}, - {+0.062888f, +0.179664f, -0.000296f, +0.000157f, +0.000063f}, - {+0.019992f, +0.341262f, +0.002080f, -0.000355f, +0.000037f}, - {+0.012267f, +0.246756f, -0.001889f, -0.000730f, +0.000091f}, - {+0.028297f, -0.020937f, -0.002730f, -0.000026f, +0.000039f}, - {-0.008636f, -0.121054f, +0.007814f, +0.000720f, -0.000014f}, - {+0.046484f, +0.071961f, +0.002387f, -0.000455f, +0.000002f}, - {-0.042652f, -0.042219f, +0.005353f, +0.001621f, +0.000061f}, - {-0.003781f, +0.030870f, -0.013170f, -0.002144f, -0.000211f}, - {+0.016747f, +0.033277f, +0.000186f, -0.000012f, +0.000031f}, - {-0.038322f, -0.079239f, -0.009485f, -0.001067f, -0.000129f}, - {-0.009213f, +0.006178f, +0.001082f, +0.000202f, -0.000029f}, - {+0.017679f, -0.071909f, +0.003357f, +0.000147f, -0.000056f}, - {+0.031925f, +0.035422f, +0.000231f, -0.000251f, +0.000032f}, - {+0.027629f, -0.047451f, +0.003771f, -0.000092f, -0.000016f} - }, - { - {-0.277356f, +0.009713f, -0.040871f, +0.002128f, +0.000098f}, - {-0.288048f, -0.119309f, -0.040772f, +0.004167f, +0.000126f}, - {-0.135614f, -0.121199f, -0.015970f, +0.000584f, -0.000025f}, - {-0.147900f, +0.068278f, -0.021757f, +0.001011f, -0.000028f}, - {-0.111155f, +0.046512f, -0.012782f, +0.000892f, -0.000069f}, - {-0.020452f, -0.099912f, -0.003632f, +0.000896f, -0.000036f}, - {+0.051789f, -0.026841f, -0.000416f, -0.002061f, +0.000070f}, - {-0.048315f, -0.075067f, -0.004473f, +0.000718f, +0.000020f}, - {+0.038466f, +0.097321f, -0.002604f, -0.003632f, +0.000080f}, - {-0.012250f, +0.014195f, +0.001656f, +0.003568f, +0.000272f}, - {-0.029260f, -0.036443f, -0.002521f, +0.000109f, -0.000054f}, - {+0.049141f, +0.042766f, +0.002001f, +0.002307f, +0.000147f}, - {+0.016365f, +0.045379f, +0.003479f, +0.000052f, -0.000044f}, - {+0.016380f, -0.068248f, +0.002419f, -0.000284f, +0.000043f}, - {-0.026309f, -0.049393f, -0.000660f, +0.000389f, +0.000012f}, - {+0.020013f, -0.061398f, +0.001390f, +0.000285f, +0.000045f} - }, - { - {+0.056395f, -0.497410f, +0.010462f, +0.000112f, +0.000123f}, - {+0.008278f, -0.564708f, +0.007533f, +0.000534f, +0.000224f}, - {+0.029776f, -0.375504f, +0.009908f, -0.000167f, -0.000056f}, - {+0.053843f, -0.247636f, +0.011973f, +0.000305f, -0.000030f}, - {+0.047919f, -0.200610f, +0.011974f, +0.000485f, -0.000070f}, - {-0.001747f, -0.136529f, +0.008548f, -0.000030f, -0.000031f}, - {-0.034659f, +0.098248f, -0.009286f, -0.000733f, -0.000004f}, - {-0.013390f, -0.125590f, +0.000347f, +0.000408f, -0.000006f}, - {+0.018416f, +0.125823f, -0.010099f, -0.001587f, -0.000079f}, - {+0.015670f, -0.020509f, +0.010455f, +0.001886f, +0.000130f}, - {-0.001269f, -0.078191f, +0.000719f, -0.000060f, -0.000015f}, - {-0.015954f, +0.139586f, +0.005155f, +0.000966f, +0.000087f}, - {-0.000690f, +0.074979f, -0.002970f, -0.000046f, +0.000040f}, - {-0.036315f, +0.016998f, -0.007922f, -0.000063f, +0.000042f}, - {-0.017947f, -0.053543f, -0.003628f, +0.000169f, -0.000034f}, - {-0.036250f, +0.025051f, -0.004463f, +0.000134f, +0.000003f} - }, - { - {+0.261565f, -0.175456f, +0.039964f, -0.001605f, -0.000112f}, - {+0.289123f, -0.124032f, +0.042209f, -0.003292f, -0.000173f}, - {+0.147448f, -0.202794f, +0.013343f, -0.000451f, +0.000021f}, - {+0.111431f, -0.158046f, +0.014055f, -0.000866f, +0.000018f}, - {+0.088516f, -0.135597f, +0.008911f, -0.000941f, +0.000062f}, - {+0.046542f, -0.074771f, -0.001267f, -0.000681f, +0.000024f}, - {-0.008851f, +0.134457f, +0.003904f, +0.001907f, -0.000040f}, - {+0.057725f, -0.011782f, +0.007446f, -0.000690f, -0.000019f}, - {-0.064453f, -0.009485f, -0.001505f, +0.003482f, -0.000032f}, - {-0.003750f, -0.043297f, -0.001696f, -0.002710f, -0.000254f}, - {+0.036881f, -0.019154f, +0.003756f, -0.000164f, +0.000052f}, - {-0.028484f, +0.127049f, -0.000373f, -0.001785f, -0.000137f}, - {-0.030494f, +0.034591f, -0.002192f, -0.000165f, +0.000035f}, - {+0.009470f, +0.091778f, +0.004810f, +0.000325f, -0.000042f}, - {+0.029100f, +0.027840f, +0.006520f, -0.000311f, -0.000006f}, - {-0.009135f, +0.066628f, -0.000798f, -0.000116f, -0.000038f} - }, - { - {-0.134646f, +0.431836f, -0.022252f, -0.000261f, -0.000089f}, - {-0.108773f, +0.480556f, -0.020213f, -0.000915f, -0.000164f}, - {-0.157283f, +0.252511f, -0.017953f, +0.000158f, +0.000053f}, - {-0.096912f, +0.162399f, -0.016830f, -0.000259f, +0.000029f}, - {-0.094935f, +0.145981f, -0.017427f, -0.000284f, +0.000058f}, - {-0.078691f, +0.105220f, -0.009040f, -0.000009f, +0.000031f}, - {+0.032041f, +0.084421f, +0.004353f, +0.000773f, +0.000002f}, - {-0.016068f, +0.102075f, -0.005241f, -0.000269f, +0.000010f}, - {+0.027628f, -0.144744f, +0.013233f, +0.001492f, +0.000070f}, - {-0.013497f, -0.033838f, -0.009244f, -0.001447f, -0.000073f}, - {-0.020163f, +0.066780f, -0.002771f, +0.000069f, +0.000003f}, - {+0.051113f, +0.013125f, -0.004746f, -0.000733f, -0.000056f}, - {+0.038408f, -0.068407f, +0.004887f, -0.000113f, -0.000046f}, - {+0.039739f, +0.052992f, +0.003676f, -0.000005f, -0.000032f}, - {+0.019468f, +0.046585f, -0.000417f, -0.000092f, +0.000032f}, - {+0.046026f, -0.019351f, +0.006238f, -0.000147f, +0.000005f} - }, - { - {-0.227969f, +0.284525f, -0.035118f, +0.001170f, +0.000113f}, - {-0.251619f, +0.250783f, -0.039635f, +0.002380f, +0.000192f}, - {-0.028234f, +0.444181f, -0.004258f, +0.000378f, -0.000019f}, - {-0.057970f, +0.223549f, -0.006095f, +0.000655f, -0.000012f}, - {-0.039868f, +0.230386f, -0.002246f, +0.000818f, -0.000054f}, - {+0.036223f, +0.280336f, +0.007555f, +0.000539f, -0.000017f}, - {-0.045995f, -0.019070f, -0.002489f, -0.001639f, +0.000020f}, - {-0.058114f, +0.032997f, -0.008873f, +0.000662f, +0.000018f}, - {+0.053231f, -0.094713f, +0.003411f, -0.002983f, -0.000000f}, - {+0.022768f, +0.016336f, +0.003117f, +0.002216f, +0.000227f}, - {-0.031511f, +0.045619f, -0.004901f, +0.000227f, -0.000048f}, - {-0.045006f, -0.127523f, -0.002107f, +0.001382f, +0.000124f}, - {-0.004533f, -0.139114f, -0.003073f, +0.000203f, -0.000026f}, - {-0.046710f, -0.071863f, -0.004169f, -0.000343f, +0.000040f}, - {-0.053226f, -0.067429f, -0.008363f, +0.000293f, +0.000001f}, - {-0.008131f, -0.104415f, -0.002326f, +0.000063f, +0.000032f} - }, - { - {+0.193626f, -0.362707f, +0.031027f, +0.000215f, +0.000061f}, - {+0.168437f, -0.394610f, +0.030765f, +0.000832f, +0.000106f}, - {+0.166845f, +0.150839f, +0.019333f, -0.000239f, -0.000053f}, - {+0.108632f, -0.026149f, +0.014836f, +0.000210f, -0.000033f}, - {+0.117845f, -0.006812f, +0.017402f, +0.000161f, -0.000052f}, - {+0.070459f, +0.240877f, +0.004084f, -0.000089f, -0.000035f}, - {+0.051571f, -0.166446f, +0.000272f, -0.000594f, +0.000009f}, - {+0.048610f, -0.137567f, +0.012351f, +0.000122f, -0.000012f}, - {-0.060459f, +0.077161f, -0.017457f, -0.001202f, -0.000048f}, - {-0.008901f, +0.071218f, +0.004889f, +0.001056f, +0.000035f}, - {+0.035581f, -0.061262f, +0.007127f, -0.000111f, +0.000006f}, - {+0.009360f, -0.207644f, +0.007254f, +0.000645f, +0.000037f}, - {-0.043066f, -0.091054f, -0.000390f, +0.000159f, +0.000048f}, - {-0.006722f, -0.129159f, -0.003572f, +0.000128f, +0.000025f}, - {+0.002648f, -0.158951f, +0.005371f, +0.000083f, -0.000030f}, - {-0.052294f, -0.037930f, -0.006102f, +0.000171f, -0.000010f} - }, - { - {+0.185388f, -0.373945f, +0.028242f, -0.000870f, -0.000107f}, - {+0.218466f, -0.313607f, +0.033711f, -0.001650f, -0.000187f}, - {-0.089184f, -0.227856f, -0.003013f, -0.000234f, +0.000019f}, - {-0.005910f, -0.195725f, +0.001490f, -0.000426f, +0.000010f}, - {-0.033058f, -0.233100f, -0.003881f, -0.000583f, +0.000049f}, - {-0.128077f, -0.046310f, -0.008240f, -0.000349f, +0.000015f}, - {+0.004052f, -0.247839f, -0.003163f, +0.001295f, -0.000012f}, - {+0.052459f, -0.138631f, +0.002655f, -0.000517f, -0.000018f}, - {-0.024548f, +0.123596f, -0.001667f, +0.002422f, +0.000013f}, - {-0.026309f, +0.052058f, -0.001607f, -0.001982f, -0.000202f}, - {+0.029154f, -0.072410f, +0.002905f, -0.000210f, +0.000043f}, - {+0.051381f, -0.149021f, -0.000115f, -0.001232f, -0.000111f}, - {+0.060324f, +0.057180f, +0.002547f, -0.000144f, +0.000020f}, - {+0.052887f, -0.036634f, +0.006886f, +0.000170f, -0.000037f}, - {+0.075539f, -0.053066f, +0.006319f, -0.000332f, +0.000001f}, - {+0.036656f, +0.098177f, +0.004589f, -0.000133f, -0.000026f} - }, - { - {-0.239844f, +0.276952f, -0.036663f, -0.000075f, -0.000041f}, - {-0.218935f, +0.356480f, -0.037109f, -0.000536f, -0.000063f}, - {-0.067555f, -0.247328f, -0.016085f, +0.000198f, +0.000054f}, - {-0.065557f, -0.103844f, -0.011325f, -0.000270f, +0.000037f}, - {-0.082669f, -0.157628f, -0.013419f, -0.000257f, +0.000050f}, - {+0.051102f, -0.310690f, +0.001856f, +0.000105f, +0.000038f}, - {-0.105915f, -0.086143f, -0.002835f, +0.000369f, -0.000019f}, - {-0.108427f, +0.103999f, -0.015274f, -0.000237f, +0.000014f}, - {+0.072751f, -0.025221f, +0.019360f, +0.000835f, +0.000029f}, - {+0.042856f, -0.056448f, -0.001929f, -0.000741f, -0.000011f}, - {-0.068206f, +0.080584f, -0.011613f, +0.000093f, -0.000013f}, - {-0.091336f, +0.056612f, -0.010772f, -0.000543f, -0.000024f}, - {-0.026414f, +0.186526f, -0.002964f, -0.000133f, -0.000049f}, - {-0.024927f, +0.082144f, -0.001315f, +0.000035f, -0.000020f}, - {-0.062843f, +0.155369f, -0.009444f, -0.000091f, +0.000028f}, - {+0.038812f, +0.095103f, +0.003754f, -0.000076f, +0.000012f} - }, - { - {-0.131680f, +0.440943f, -0.020891f, +0.000627f, +0.000098f}, - {-0.183833f, +0.406966f, -0.027778f, +0.001207f, +0.000171f}, - {+0.086183f, -0.003067f, +0.012386f, +0.000168f, -0.000020f}, - {+0.026332f, +0.035398f, +0.002657f, +0.000383f, -0.000011f}, - {+0.076464f, +0.083380f, +0.010071f, +0.000597f, -0.000047f}, - {+0.086834f, -0.252931f, +0.010256f, +0.000250f, -0.000016f}, - {+0.112579f, +0.244861f, +0.011209f, -0.001100f, +0.000012f}, - {+0.018202f, +0.300605f, +0.006408f, +0.000602f, +0.000018f}, - {-0.003044f, -0.137405f, -0.002719f, -0.002137f, -0.000013f}, - {-0.003641f, -0.131818f, -0.001737f, +0.001737f, +0.000181f}, - {+0.001297f, +0.195950f, +0.005713f, +0.000204f, -0.000037f}, - {+0.045795f, +0.259231f, +0.005407f, +0.001178f, +0.000100f}, - {-0.039454f, +0.170156f, -0.000777f, +0.000115f, -0.000018f}, - {-0.040004f, +0.055755f, -0.008185f, -0.000317f, +0.000034f}, - {-0.043921f, +0.182226f, -0.005163f, +0.000395f, -0.000002f}, - {-0.058367f, -0.053246f, -0.007857f, +0.000065f, +0.000022f} - }, - { - {+0.266519f, -0.168414f, +0.039980f, +0.000112f, +0.000029f}, - {+0.270044f, -0.288912f, +0.044466f, +0.000374f, +0.000037f}, - {+0.013148f, +0.108379f, +0.008696f, -0.000082f, -0.000056f}, - {+0.007547f, +0.066767f, +0.004336f, +0.000293f, -0.000040f}, - {+0.013959f, +0.178267f, +0.007930f, +0.000231f, -0.000050f}, - {-0.126652f, +0.073753f, -0.010940f, -0.000032f, -0.000041f}, - {+0.037971f, +0.357198f, -0.003626f, -0.000116f, +0.000025f}, - {+0.123814f, +0.144678f, +0.015962f, +0.000194f, -0.000018f}, - {-0.073603f, -0.033162f, -0.018399f, -0.000381f, -0.000019f}, - {-0.052463f, -0.055986f, +0.001868f, +0.000682f, -0.000008f}, - {+0.099011f, +0.055743f, +0.009504f, -0.000033f, +0.000019f}, - {+0.066616f, +0.234328f, +0.006904f, +0.000399f, +0.000016f}, - {+0.081064f, -0.004874f, +0.003489f, +0.000036f, +0.000052f}, - {+0.044214f, -0.078007f, +0.004257f, +0.000035f, +0.000016f}, - {+0.107368f, -0.054956f, +0.018386f, -0.000009f, -0.000028f}, - {-0.008996f, -0.126597f, -0.002978f, +0.000081f, -0.000014f} - }, - { - {+0.076584f, -0.456777f, +0.013253f, -0.000677f, -0.000090f}, - {+0.135714f, -0.493797f, +0.019817f, -0.001205f, -0.000155f}, - {-0.049801f, +0.003798f, -0.009316f, -0.000287f, +0.000022f}, - {+0.008289f, +0.072460f, +0.002582f, -0.000487f, +0.000014f}, - {-0.058361f, +0.066933f, -0.007899f, -0.000705f, +0.000047f}, - {+0.024939f, +0.304082f, +0.002238f, -0.000320f, +0.000018f}, - {-0.164640f, +0.054259f, -0.014251f, +0.000972f, -0.000016f}, - {-0.129320f, -0.239583f, -0.014072f, -0.000614f, -0.000019f}, - {+0.023151f, +0.107790f, +0.002402f, +0.001999f, +0.000009f}, - {+0.042244f, +0.087154f, +0.004003f, -0.001651f, -0.000165f}, - {-0.087421f, -0.223827f, -0.009440f, -0.000302f, +0.000032f}, - {-0.123261f, -0.040927f, -0.008130f, -0.001094f, -0.000093f}, - {-0.047678f, -0.191325f, -0.003834f, -0.000119f, +0.000015f}, - {+0.025350f, -0.109559f, +0.002027f, +0.000400f, -0.000032f}, - {-0.031404f, -0.277712f, -0.007376f, -0.000280f, +0.000002f}, - {+0.054594f, -0.026570f, +0.007177f, +0.000010f, -0.000018f} - }, - { - {-0.274121f, +0.081952f, -0.043113f, -0.000004f, -0.000021f}, - {-0.317778f, +0.199223f, -0.049734f, -0.000202f, -0.000022f}, - {-0.015529f, -0.058172f, -0.001453f, +0.000253f, +0.000058f}, - {+0.020112f, +0.056461f, -0.003930f, -0.000113f, +0.000042f}, - {+0.027311f, -0.065956f, -0.001130f, +0.000048f, +0.000049f}, - {+0.092570f, +0.201332f, +0.007025f, +0.000092f, +0.000044f}, - {+0.078874f, -0.299423f, +0.007522f, +0.000058f, -0.000026f}, - {-0.031803f, -0.392121f, -0.002719f, +0.000010f, +0.000023f}, - {+0.078295f, +0.019932f, +0.020674f, +0.000126f, +0.000017f}, - {+0.029291f, +0.096155f, +0.000322f, -0.000490f, +0.000025f}, - {-0.042190f, -0.292546f, -0.004474f, +0.000130f, -0.000023f}, - {+0.047310f, -0.289378f, -0.003082f, -0.000264f, -0.000009f}, - {-0.036042f, -0.202365f, -0.005972f, -0.000021f, -0.000059f}, - {-0.067032f, +0.032496f, -0.007059f, -0.000199f, -0.000013f}, - {-0.101204f, -0.185795f, -0.005848f, +0.000042f, +0.000029f}, - {-0.006759f, +0.066549f, -0.000681f, -0.000136f, +0.000016f} - }, - { - {-0.033486f, +0.450867f, -0.006565f, +0.000576f, +0.000085f}, - {-0.061876f, +0.590080f, -0.009764f, +0.001166f, +0.000147f}, - {+0.051215f, +0.040728f, +0.006725f, +0.000135f, -0.000027f}, - {-0.075886f, -0.090288f, -0.009577f, +0.000383f, -0.000018f}, - {+0.015185f, -0.082124f, +0.005184f, +0.000502f, -0.000049f}, - {-0.096327f, -0.079550f, -0.006514f, +0.000328f, -0.000021f}, - {+0.097424f, -0.250345f, +0.019698f, -0.001078f, +0.000017f}, - {+0.169040f, -0.091237f, +0.017597f, +0.000283f, +0.000017f}, - {-0.049945f, -0.183685f, -0.013171f, -0.002034f, -0.000009f}, - {-0.051580f, -0.036720f, -0.010126f, +0.001380f, +0.000151f}, - {+0.125504f, -0.039269f, +0.013578f, +0.000208f, -0.000027f}, - {+0.070511f, -0.247836f, +0.009393f, +0.000912f, +0.000087f}, - {+0.075408f, -0.033832f, +0.006471f, +0.000223f, -0.000010f}, - {+0.010281f, +0.155017f, +0.004289f, -0.000279f, +0.000029f}, - {+0.128761f, +0.151968f, +0.010917f, +0.000111f, -0.000004f}, - {-0.047805f, -0.002840f, -0.010782f, -0.000029f, +0.000015f} - }, - { - {+0.280158f, -0.030000f, +0.043460f, +0.000075f, +0.000014f}, - {+0.336614f, -0.016258f, +0.050302f, +0.000297f, +0.000011f}, - {+0.002372f, +0.120514f, -0.000413f, -0.000319f, -0.000061f}, - {+0.016063f, -0.229902f, +0.006035f, +0.000097f, -0.000043f}, - {-0.028633f, -0.007390f, -0.002007f, -0.000039f, -0.000048f}, - {+0.005134f, -0.220494f, -0.003892f, -0.000252f, -0.000046f}, - {-0.096636f, +0.051599f, -0.015635f, +0.000127f, +0.000026f}, - {-0.105407f, +0.323356f, -0.007410f, +0.000133f, -0.000028f}, - {-0.087018f, -0.141885f, -0.014985f, +0.000005f, -0.000018f}, - {-0.018235f, -0.085003f, +0.002078f, +0.000390f, -0.000041f}, - {-0.049559f, +0.222425f, -0.001760f, -0.000043f, +0.000027f}, - {-0.087658f, -0.008493f, -0.002149f, +0.000327f, +0.000002f}, - {-0.025991f, +0.110117f, +0.002501f, +0.000106f, +0.000066f}, - {+0.073066f, +0.062410f, +0.006753f, +0.000139f, +0.000010f}, - {-0.012343f, +0.361812f, +0.000879f, +0.000019f, -0.000031f}, - {+0.008849f, -0.097553f, +0.003670f, +0.000140f, -0.000018f} - }, - { - {-0.006954f, -0.470379f, -0.000165f, -0.000551f, -0.000082f}, - {-0.019214f, -0.554319f, +0.001599f, -0.001129f, -0.000145f}, - {-0.050232f, +0.045555f, -0.004649f, -0.000015f, +0.000034f}, - {+0.117286f, -0.075343f, +0.011788f, -0.000390f, +0.000023f}, - {+0.013982f, +0.062149f, +0.000689f, -0.000526f, +0.000053f}, - {+0.064167f, -0.122065f, +0.007764f, -0.000174f, +0.000027f}, - {-0.057456f, +0.102739f, -0.012482f, +0.000929f, -0.000017f}, - {-0.086303f, +0.350740f, -0.008732f, -0.000319f, -0.000013f}, - {+0.114468f, +0.156124f, +0.012352f, +0.002008f, +0.000014f}, - {+0.063324f, +0.045704f, +0.011079f, -0.001189f, -0.000135f}, - {-0.081653f, +0.167815f, -0.010699f, -0.000264f, +0.000021f}, - {+0.009546f, +0.130825f, -0.003286f, -0.000952f, -0.000083f}, - {-0.034292f, +0.088622f, -0.006613f, -0.000382f, +0.000000f}, - {-0.064658f, -0.148003f, -0.007951f, +0.000319f, -0.000027f}, - {-0.118973f, +0.200930f, -0.010476f, -0.000078f, +0.000007f}, - {+0.061648f, -0.019855f, +0.007486f, +0.000045f, -0.000011f} - }, - { - {-0.287193f, -0.042900f, -0.042884f, -0.000074f, -0.000006f}, - {-0.316269f, -0.095647f, -0.050717f, -0.000419f, +0.000004f}, - {+0.024609f, -0.065464f, -0.001044f, +0.000352f, +0.000061f}, - {-0.090934f, +0.238549f, -0.014249f, -0.000001f, +0.000044f}, - {+0.019808f, +0.051257f, -0.001165f, +0.000156f, +0.000046f}, - {-0.048333f, +0.050030f, -0.007461f, +0.000269f, +0.000047f}, - {+0.082327f, -0.120302f, +0.020222f, -0.000034f, -0.000027f}, - {+0.165448f, -0.034472f, +0.017814f, +0.000021f, +0.000032f}, - {+0.033316f, +0.280356f, +0.011492f, -0.000020f, +0.000016f}, - {+0.008225f, +0.128802f, -0.005400f, -0.000223f, +0.000054f}, - {+0.088609f, -0.096391f, +0.012066f, +0.000087f, -0.000030f}, - {+0.036267f, +0.078389f, +0.005104f, -0.000176f, +0.000004f}, - {+0.020864f, +0.001946f, +0.003538f, -0.000159f, -0.000070f}, - {-0.031397f, -0.200648f, -0.000765f, -0.000186f, -0.000008f}, - {+0.119879f, -0.159775f, +0.011369f, +0.000002f, +0.000032f}, - {-0.036654f, +0.129414f, -0.004412f, -0.000114f, +0.000020f} - }, - { - {+0.055358f, +0.480776f, +0.007156f, +0.000440f, +0.000080f}, - {+0.069696f, +0.497403f, +0.009705f, +0.000945f, +0.000144f}, - {+0.014636f, -0.076742f, +0.003268f, +0.000063f, -0.000042f}, - {-0.098616f, +0.221987f, -0.012598f, +0.000348f, -0.000027f}, - {-0.038012f, -0.038810f, -0.004148f, +0.000514f, -0.000056f}, - {-0.010993f, +0.104517f, -0.004208f, +0.000219f, -0.000033f}, - {+0.073401f, -0.141057f, +0.006526f, -0.000916f, +0.000016f}, - {-0.033949f, -0.336614f, -0.001600f, +0.000255f, +0.000007f}, - {-0.139291f, +0.017101f, -0.017309f, -0.001860f, -0.000021f}, - {-0.085604f, -0.017452f, -0.013308f, +0.001048f, +0.000118f}, - {+0.029028f, -0.187952f, +0.005021f, +0.000216f, -0.000016f}, - {-0.006564f, +0.006493f, -0.001419f, +0.000780f, +0.000079f}, - {+0.020490f, +0.003411f, +0.006133f, +0.000307f, +0.000011f}, - {+0.091616f, -0.016927f, +0.008786f, -0.000287f, +0.000025f}, - {+0.009844f, -0.323610f, +0.003492f, +0.000078f, -0.000011f}, - {-0.056286f, +0.097814f, -0.006882f, -0.000079f, +0.000007f} - }, - { - {+0.282827f, +0.133300f, +0.042549f, +0.000086f, -0.000002f}, - {+0.297764f, +0.151816f, +0.046261f, +0.000499f, -0.000022f}, - {-0.010547f, -0.035236f, +0.000498f, -0.000494f, -0.000059f}, - {+0.144406f, -0.152441f, +0.023633f, -0.000028f, -0.000044f}, - {-0.000542f, -0.094714f, +0.004019f, -0.000229f, -0.000043f}, - {+0.041461f, +0.019853f, +0.008957f, -0.000418f, -0.000046f}, - {-0.123943f, +0.154058f, -0.020412f, +0.000069f, +0.000030f}, - {-0.130914f, -0.179670f, -0.017352f, -0.000111f, -0.000033f}, - {+0.036620f, -0.258117f, -0.000481f, +0.000034f, -0.000009f}, - {+0.021657f, -0.180451f, +0.009924f, +0.000053f, -0.000065f}, - {-0.095197f, +0.006584f, -0.013724f, -0.000061f, +0.000032f}, - {-0.011099f, +0.015338f, -0.000599f, +0.000168f, -0.000011f}, - {+0.002807f, +0.034719f, -0.003109f, +0.000353f, +0.000070f}, - {-0.041276f, +0.181885f, -0.005275f, +0.000201f, +0.000007f}, - {-0.125301f, -0.110921f, -0.015164f, -0.000039f, -0.000032f}, - {+0.066993f, -0.092159f, +0.009251f, +0.000136f, -0.000021f} - }, - { - {-0.104112f, -0.458657f, -0.013927f, -0.000353f, -0.000076f}, - {-0.111390f, -0.472799f, -0.015450f, -0.000704f, -0.000139f}, - {+0.000873f, -0.019121f, -0.001169f, -0.000093f, +0.000048f}, - {+0.056615f, -0.285336f, +0.007942f, -0.000391f, +0.000032f}, - {+0.055650f, -0.007065f, +0.007223f, -0.000546f, +0.000060f}, - {-0.018845f, -0.077039f, -0.001923f, -0.000256f, +0.000039f}, - {-0.051977f, +0.260211f, -0.006687f, +0.000819f, -0.000018f}, - {+0.110604f, +0.197201f, +0.015009f, -0.000259f, -0.000003f}, - {+0.118052f, -0.135388f, +0.015667f, +0.001612f, +0.000024f}, - {+0.098237f, -0.061993f, +0.014872f, -0.000974f, -0.000101f}, - {+0.016600f, +0.180900f, +0.001935f, -0.000217f, +0.000011f}, - {-0.024890f, -0.001895f, -0.000719f, -0.000667f, -0.000075f}, - {-0.052001f, -0.047705f, -0.008689f, -0.000203f, -0.000021f}, - {-0.051423f, +0.163687f, -0.007750f, +0.000277f, -0.000023f}, - {+0.092904f, +0.226447f, +0.010447f, -0.000087f, +0.000014f}, - {+0.029788f, -0.148840f, +0.003437f, +0.000063f, -0.000002f} - }, - { - {-0.265513f, -0.211642f, -0.040584f, -0.000055f, +0.000009f}, - {-0.279427f, -0.216928f, -0.044464f, -0.000461f, +0.000042f}, - {-0.017280f, +0.004077f, -0.001930f, +0.000533f, +0.000057f}, - {-0.175703f, +0.073912f, -0.028215f, +0.000106f, +0.000044f}, - {-0.032929f, +0.127864f, -0.007891f, +0.000307f, +0.000041f}, - {-0.023458f, -0.073855f, -0.003516f, +0.000521f, +0.000044f}, - {+0.165507f, -0.073413f, +0.027506f, -0.000119f, -0.000034f}, - {+0.058760f, +0.277549f, +0.005732f, +0.000115f, +0.000033f}, - {-0.086524f, +0.185360f, -0.006494f, -0.000114f, +0.000000f}, - {-0.068563f, +0.191058f, -0.014677f, +0.000094f, +0.000073f}, - {+0.083271f, +0.077777f, +0.010978f, +0.000035f, -0.000035f}, - {+0.032739f, -0.090968f, +0.003108f, -0.000130f, +0.000018f}, - {+0.012042f, -0.148829f, +0.005352f, -0.000453f, -0.000067f}, - {+0.074068f, -0.028523f, +0.009472f, -0.000233f, -0.000006f}, - {+0.054178f, +0.286348f, +0.004315f, +0.000011f, +0.000032f}, - {-0.081317f, +0.023039f, -0.011622f, -0.000155f, +0.000021f} - }, - { - {+0.144447f, +0.416258f, +0.019880f, +0.000298f, +0.000071f}, - {+0.149133f, +0.438088f, +0.020811f, +0.000535f, +0.000129f}, - {+0.015049f, +0.049287f, -0.000123f, +0.000146f, -0.000053f}, - {-0.004923f, +0.337598f, +0.000454f, +0.000368f, -0.000037f}, - {-0.051157f, +0.099533f, -0.006353f, +0.000530f, -0.000063f}, - {+0.036114f, +0.015276f, +0.002183f, +0.000257f, -0.000042f}, - {-0.001423f, -0.329473f, -0.000629f, -0.000758f, +0.000021f}, - {-0.137836f, -0.026570f, -0.019057f, +0.000357f, +0.000002f}, - {-0.074813f, +0.206610f, -0.009222f, -0.001398f, -0.000023f}, - {-0.082213f, +0.168162f, -0.013202f, +0.000891f, +0.000086f}, - {-0.053436f, -0.133406f, -0.007060f, +0.000274f, -0.000004f}, - {+0.031202f, -0.097339f, +0.000600f, +0.000565f, +0.000069f}, - {+0.084087f, -0.042545f, +0.010288f, +0.000114f, +0.000027f}, - {-0.011630f, -0.156396f, +0.002102f, -0.000281f, +0.000021f}, - {-0.139327f, -0.009640f, -0.015858f, +0.000166f, -0.000017f}, - {+0.001227f, +0.149601f, +0.000552f, -0.000041f, -0.000002f} - }, - { - {+0.243657f, +0.264257f, +0.037689f, -0.000001f, -0.000015f}, - {+0.259444f, +0.270037f, +0.041639f, +0.000297f, -0.000058f}, - {+0.024732f, +0.031819f, +0.004944f, -0.000508f, -0.000056f}, - {+0.188302f, +0.043036f, +0.027818f, -0.000121f, -0.000045f}, - {+0.061013f, -0.068025f, +0.009284f, -0.000332f, -0.000040f}, - {-0.005481f, +0.077635f, +0.001849f, -0.000481f, -0.000044f}, - {-0.183484f, -0.052352f, -0.028430f, +0.000255f, +0.000038f}, - {+0.021508f, -0.270954f, +0.003464f, -0.000123f, -0.000034f}, - {+0.112315f, -0.086235f, +0.009937f, +0.000307f, +0.000007f}, - {+0.107969f, -0.120398f, +0.018769f, -0.000181f, -0.000082f}, - {-0.056786f, -0.126822f, -0.007959f, -0.000033f, +0.000039f}, - {-0.069219f, +0.054400f, -0.005730f, +0.000053f, -0.000023f}, - {-0.070651f, +0.193415f, -0.010674f, +0.000389f, +0.000067f}, - {-0.051509f, -0.092171f, -0.007870f, +0.000294f, +0.000005f}, - {+0.051121f, -0.299571f, +0.006590f, -0.000024f, -0.000032f}, - {+0.084035f, +0.019475f, +0.012921f, +0.000164f, -0.000021f} - }, - { - {-0.178130f, -0.383088f, -0.025598f, -0.000261f, -0.000067f}, - {-0.182587f, -0.405974f, -0.025901f, -0.000462f, -0.000117f}, - {-0.033772f, -0.059691f, -0.003877f, -0.000106f, +0.000059f}, - {-0.056171f, -0.329183f, -0.006810f, -0.000311f, +0.000043f}, - {+0.030324f, -0.107424f, +0.007446f, -0.000469f, +0.000068f}, - {-0.029083f, +0.038828f, -0.003047f, -0.000232f, +0.000046f}, - {+0.074081f, +0.341332f, +0.009025f, +0.000675f, -0.000027f}, - {+0.114367f, -0.124510f, +0.017364f, -0.000363f, -0.000002f}, - {+0.019963f, -0.231444f, +0.001211f, +0.001284f, +0.000019f}, - {+0.044510f, -0.213643f, +0.009811f, -0.000749f, -0.000069f}, - {+0.075343f, +0.079800f, +0.011596f, -0.000341f, -0.000004f}, - {+0.002994f, +0.163592f, +0.001034f, -0.000473f, -0.000063f}, - {-0.066930f, +0.201208f, -0.008014f, -0.000114f, -0.000031f}, - {+0.046049f, +0.057169f, +0.003278f, +0.000251f, -0.000018f}, - {+0.102214f, -0.218411f, +0.013142f, -0.000169f, +0.000019f}, - {-0.034525f, -0.167091f, -0.007400f, +0.000056f, +0.000007f} - }, - { - {-0.222238f, -0.317392f, -0.033615f, +0.000033f, +0.000021f}, - {-0.241813f, -0.315693f, -0.038994f, -0.000147f, +0.000070f}, - {-0.020356f, -0.081902f, -0.002758f, +0.000479f, +0.000060f}, - {-0.167023f, -0.157180f, -0.026364f, +0.000127f, +0.000047f}, - {-0.066143f, +0.046203f, -0.014148f, +0.000357f, +0.000040f}, - {+0.022432f, -0.042335f, +0.001522f, +0.000437f, +0.000048f}, - {+0.157680f, +0.214692f, +0.024775f, -0.000379f, -0.000040f}, - {-0.074512f, +0.166548f, -0.010491f, +0.000080f, +0.000039f}, - {-0.105735f, -0.034968f, -0.008768f, -0.000539f, -0.000010f}, - {-0.123458f, +0.044963f, -0.022305f, +0.000260f, +0.000091f}, - {+0.027259f, +0.155333f, +0.002873f, +0.000021f, -0.000041f}, - {+0.074325f, +0.052152f, +0.007210f, +0.000007f, +0.000026f}, - {+0.123302f, -0.087187f, +0.015137f, -0.000263f, -0.000074f}, - {+0.007845f, +0.113256f, +0.003459f, -0.000313f, -0.000004f}, - {-0.120092f, +0.122041f, -0.014660f, +0.000024f, +0.000034f}, - {-0.076429f, -0.107035f, -0.008690f, -0.000173f, +0.000022f} - }, - { - {+0.213344f, +0.349398f, +0.030097f, +0.000237f, +0.000063f}, - {+0.219215f, +0.390772f, +0.031915f, +0.000487f, +0.000107f}, - {+0.052529f, +0.029499f, +0.005648f, -0.000100f, -0.000070f}, - {+0.095709f, +0.245511f, +0.012927f, +0.000199f, -0.000053f}, - {-0.028737f, +0.105483f, -0.003866f, +0.000348f, -0.000076f}, - {+0.013337f, -0.055289f, +0.001002f, +0.000053f, -0.000054f}, - {-0.130180f, -0.225228f, -0.015900f, -0.000591f, +0.000035f}, - {-0.068381f, +0.171403f, -0.012635f, +0.000260f, +0.000000f}, - {+0.025988f, +0.167605f, +0.004069f, -0.001280f, -0.000015f}, - {-0.008972f, +0.221115f, -0.003663f, +0.000531f, +0.000048f}, - {-0.090641f, -0.028424f, -0.013918f, +0.000378f, +0.000016f}, - {-0.038654f, -0.120101f, -0.004990f, +0.000461f, +0.000057f}, - {+0.005905f, -0.263875f, +0.003095f, +0.000269f, +0.000040f}, - {-0.040815f, +0.035273f, -0.004946f, -0.000197f, +0.000014f}, - {-0.018746f, +0.272655f, -0.004798f, +0.000121f, -0.000023f}, - {+0.076538f, +0.124942f, +0.010206f, -0.000084f, -0.000014f} - }, - { - {+0.192920f, +0.381741f, +0.029300f, -0.000048f, -0.000026f}, - {+0.222170f, +0.388402f, +0.034955f, +0.000099f, -0.000080f}, - {+0.001699f, +0.107240f, +0.000947f, -0.000519f, -0.000066f}, - {+0.136658f, +0.180309f, +0.023176f, -0.000174f, -0.000048f}, - {+0.088774f, -0.075575f, +0.016123f, -0.000436f, -0.000040f}, - {-0.024745f, +0.004479f, -0.001974f, -0.000454f, -0.000055f}, - {-0.102774f, -0.266722f, -0.019008f, +0.000449f, +0.000041f}, - {+0.092562f, -0.080882f, +0.015366f, -0.000075f, -0.000049f}, - {+0.070990f, +0.091884f, +0.006305f, +0.000702f, +0.000009f}, - {+0.128422f, +0.011753f, +0.022348f, -0.000409f, -0.000098f}, - {+0.011288f, -0.189192f, +0.003841f, +0.000041f, +0.000039f}, - {-0.054725f, -0.090752f, -0.006454f, -0.000058f, -0.000028f}, - {-0.128788f, -0.054495f, -0.017806f, +0.000292f, +0.000085f}, - {+0.020286f, -0.059861f, +0.001026f, +0.000246f, +0.000006f}, - {+0.120848f, +0.054441f, +0.017027f, -0.000075f, -0.000037f}, - {+0.034321f, +0.188962f, +0.004725f, +0.000162f, -0.000021f} - }, - { - {-0.244141f, -0.287056f, -0.034191f, -0.000192f, -0.000058f}, - {-0.264405f, -0.355877f, -0.037791f, -0.000515f, -0.000101f}, - {-0.059687f, +0.011038f, -0.007243f, +0.000348f, +0.000093f}, - {-0.113575f, -0.207201f, -0.018101f, -0.000078f, +0.000070f}, - {+0.015137f, -0.192002f, -0.000035f, -0.000213f, +0.000092f}, - {-0.000786f, +0.038825f, -0.000032f, +0.000190f, +0.000073f}, - {+0.148464f, +0.121467f, +0.020501f, +0.000551f, -0.000044f}, - {+0.029628f, -0.179066f, +0.005364f, -0.000049f, +0.000007f}, - {-0.038114f, -0.078616f, -0.007491f, +0.001320f, +0.000017f}, - {-0.025506f, -0.225558f, -0.001578f, -0.000313f, -0.000019f}, - {+0.093865f, -0.065189f, +0.011642f, -0.000361f, -0.000030f}, - {+0.055369f, +0.081537f, +0.009138f, -0.000492f, -0.000055f}, - {+0.051502f, +0.222620f, +0.004584f, -0.000598f, -0.000061f}, - {+0.019309f, -0.058544f, +0.003257f, +0.000181f, -0.000009f}, - {-0.051402f, -0.209177f, -0.004739f, -0.000005f, +0.000032f}, - {-0.088918f, +0.001217f, -0.011717f, +0.000085f, +0.000023f} - }, - { - {-0.156411f, -0.421444f, -0.024491f, +0.000067f, +0.000032f}, - {-0.186613f, -0.476552f, -0.029757f, -0.000163f, +0.000095f}, - {+0.020430f, -0.113691f, +0.002893f, +0.000775f, +0.000065f}, - {-0.119151f, -0.201740f, -0.018300f, +0.000297f, +0.000045f}, - {-0.119879f, +0.010231f, -0.016974f, +0.000596f, +0.000034f}, - {+0.016380f, +0.009027f, +0.002417f, +0.000683f, +0.000057f}, - {+0.054627f, +0.269651f, +0.010810f, -0.000526f, -0.000040f}, - {-0.097390f, +0.017005f, -0.015311f, +0.000161f, +0.000060f}, - {-0.042266f, -0.067204f, -0.002884f, -0.000753f, -0.000009f}, - {-0.124653f, -0.076460f, -0.020814f, +0.000683f, +0.000097f}, - {-0.063103f, +0.174209f, -0.008521f, -0.000147f, -0.000032f}, - {+0.034711f, +0.112933f, +0.002461f, +0.000059f, +0.000029f}, - {+0.100579f, +0.144714f, +0.014721f, -0.000551f, -0.000093f}, - {-0.025957f, +0.015194f, -0.003388f, -0.000192f, -0.000011f}, - {-0.076574f, -0.167585f, -0.012107f, +0.000148f, +0.000039f}, - {+0.014876f, -0.155274f, +0.000070f, -0.000119f, +0.000015f} - }, - { - {+0.265430f, +0.225416f, +0.037831f, +0.000115f, +0.000053f}, - {+0.306311f, +0.277325f, +0.043227f, +0.000433f, +0.000096f}, - {+0.056945f, -0.056467f, +0.006568f, -0.000476f, -0.000127f}, - {+0.136114f, +0.189590f, +0.020608f, +0.000082f, -0.000092f}, - {+0.029899f, +0.236698f, +0.003149f, +0.000187f, -0.000112f}, - {+0.002353f, -0.011865f, -0.000725f, -0.000346f, -0.000104f}, - {-0.149926f, -0.044328f, -0.020529f, -0.000533f, +0.000055f}, - {+0.006499f, +0.177667f, -0.000005f, -0.000147f, -0.000024f}, - {+0.030173f, +0.047667f, +0.008504f, -0.001253f, -0.000024f}, - {+0.058868f, +0.204995f, +0.005519f, +0.000216f, -0.000017f}, - {-0.060797f, +0.176638f, -0.008488f, +0.000290f, +0.000044f}, - {-0.066026f, -0.042360f, -0.010165f, +0.000503f, +0.000055f}, - {-0.083588f, -0.140991f, -0.010070f, +0.000860f, +0.000099f}, - {-0.004801f, +0.048462f, -0.000139f, -0.000150f, +0.000006f}, - {+0.080388f, +0.074103f, +0.009601f, -0.000068f, -0.000044f}, - {+0.065811f, -0.073786f, +0.011524f, -0.000018f, -0.000032f} - }, - { - {+0.119762f, +0.449669f, +0.018731f, -0.000115f, -0.000039f}, - {+0.134482f, +0.541069f, +0.022864f, +0.000250f, -0.000117f}, - {-0.042132f, +0.097515f, -0.006293f, -0.001210f, -0.000046f}, - {+0.098328f, +0.249713f, +0.014715f, -0.000530f, -0.000029f}, - {+0.121827f, +0.094517f, +0.018717f, -0.000823f, -0.000016f}, - {-0.013897f, +0.016128f, -0.002834f, -0.001121f, -0.000043f}, - {-0.013035f, -0.259005f, -0.004212f, +0.000650f, +0.000036f}, - {+0.088488f, +0.051805f, +0.014091f, -0.000366f, -0.000066f}, - {+0.034103f, +0.039837f, +0.000657f, +0.000674f, +0.000017f}, - {+0.110624f, +0.126988f, +0.019030f, -0.001012f, -0.000081f}, - {+0.093230f, -0.059767f, +0.012720f, +0.000213f, +0.000018f}, - {-0.010158f, -0.127393f, +0.000864f, +0.000011f, -0.000034f}, - {-0.063926f, -0.170726f, -0.009503f, +0.001011f, +0.000084f}, - {+0.027512f, -0.003892f, +0.003562f, +0.000233f, +0.000020f}, - {+0.023442f, +0.159229f, +0.006050f, -0.000235f, -0.000035f}, - {-0.037775f, +0.088532f, -0.005468f, +0.000062f, -0.000004f} - }, - { - {-0.281213f, -0.164420f, -0.039852f, -0.000042f, -0.000045f}, - {-0.333286f, -0.175696f, -0.047590f, -0.000222f, -0.000083f}, - {-0.046428f, +0.089416f, -0.005265f, +0.000281f, +0.000164f}, - {-0.162498f, -0.149672f, -0.023881f, -0.000229f, +0.000114f}, - {-0.075028f, -0.208672f, -0.010268f, -0.000343f, +0.000132f}, - {-0.011727f, +0.019516f, +0.000540f, +0.000212f, +0.000139f}, - {+0.140528f, -0.025264f, +0.018383f, +0.000497f, -0.000067f}, - {-0.033739f, -0.136327f, -0.003526f, +0.000118f, +0.000049f}, - {-0.027078f, -0.053959f, -0.007554f, +0.001057f, +0.000031f}, - {-0.086060f, -0.177107f, -0.010290f, -0.000364f, +0.000050f}, - {+0.010787f, -0.184727f, +0.002953f, -0.000174f, -0.000054f}, - {+0.067502f, -0.008050f, +0.010245f, -0.000436f, -0.000057f}, - {+0.094254f, +0.075792f, +0.012552f, -0.000706f, -0.000144f}, - {-0.009743f, -0.063892f, -0.003613f, +0.000014f, -0.000006f}, - {-0.069093f, +0.013884f, -0.010485f, -0.000027f, +0.000058f}, - {-0.040587f, +0.086338f, -0.006898f, -0.000093f, +0.000039f} - }, - { - {-0.083222f, -0.468035f, -0.013503f, +0.000232f, +0.000044f}, - {-0.075896f, -0.571385f, -0.014672f, -0.000160f, +0.000148f}, - {+0.064646f, -0.084083f, +0.009714f, +0.001578f, +0.000001f}, - {-0.061670f, -0.306739f, -0.009048f, +0.000650f, -0.000001f}, - {-0.101027f, -0.169945f, -0.015494f, +0.000962f, -0.000016f}, - {+0.029442f, -0.045651f, +0.004343f, +0.001546f, +0.000004f}, - {-0.024934f, +0.231230f, -0.000602f, -0.000728f, -0.000028f}, - {-0.072285f, -0.076179f, -0.012914f, +0.000746f, +0.000059f}, - {-0.032566f, -0.041990f, -0.000543f, -0.000656f, -0.000034f}, - {-0.090764f, -0.173219f, -0.015307f, +0.001207f, +0.000044f}, - {-0.090276f, -0.027741f, -0.013865f, -0.000091f, +0.000003f}, - {-0.018263f, +0.122358f, -0.003953f, -0.000094f, +0.000045f}, - {+0.030642f, +0.175289f, +0.004377f, -0.001562f, -0.000047f}, - {-0.023328f, -0.044760f, -0.001438f, -0.000338f, -0.000032f}, - {+0.006646f, -0.104149f, -0.000978f, +0.000365f, +0.000024f}, - {+0.048240f, -0.050757f, +0.006981f, -0.000141f, -0.000013f} - }, - { - {+0.293187f, +0.109518f, +0.041947f, +0.000007f, +0.000034f}, - {+0.344718f, +0.073613f, +0.049496f, -0.000072f, +0.000056f}, - {+0.021693f, -0.150854f, +0.000496f, +0.000303f, -0.000187f}, - {+0.175693f, +0.054150f, +0.024494f, +0.000572f, -0.000126f}, - {+0.106866f, +0.149507f, +0.014360f, +0.000666f, -0.000140f}, - {+0.005446f, -0.082692f, -0.002403f, +0.000314f, -0.000163f}, - {-0.114767f, +0.094767f, -0.014918f, -0.000548f, +0.000078f}, - {+0.049475f, +0.114052f, +0.007022f, +0.000118f, -0.000074f}, - {+0.031125f, +0.054985f, +0.008404f, -0.000705f, -0.000030f}, - {+0.107661f, +0.132716f, +0.012982f, +0.000706f, -0.000070f}, - {+0.028176f, +0.155327f, +0.002943f, +0.000018f, +0.000055f}, - {-0.051419f, +0.071483f, -0.007973f, +0.000234f, +0.000055f}, - {-0.090400f, -0.012443f, -0.011441f, +0.000118f, +0.000180f}, - {+0.025522f, +0.028081f, +0.003864f, +0.000120f, +0.000013f}, - {+0.045874f, -0.043114f, +0.007466f, +0.000223f, -0.000070f}, - {+0.014499f, -0.105809f, +0.003088f, +0.000276f, -0.000039f} - }, - { - {+0.046789f, +0.488561f, +0.007479f, -0.000388f, -0.000046f}, - {+0.018640f, +0.575973f, +0.005892f, -0.000203f, -0.000177f}, - {-0.079067f, +0.002856f, -0.010533f, -0.001448f, +0.000068f}, - {+0.016267f, +0.296423f, +0.004542f, -0.000403f, +0.000045f}, - {+0.068852f, +0.208415f, +0.010824f, -0.000748f, +0.000061f}, - {-0.046351f, -0.003708f, -0.005559f, -0.001546f, +0.000058f}, - {+0.047339f, -0.155305f, +0.003323f, +0.000760f, +0.000014f}, - {+0.060540f, +0.100086f, +0.009755f, -0.001008f, -0.000039f}, - {+0.028568f, +0.054083f, +0.000810f, +0.000898f, +0.000057f}, - {+0.065074f, +0.200619f, +0.010710f, -0.000928f, +0.000007f}, - {+0.072568f, +0.087920f, +0.011704f, -0.000262f, -0.000027f}, - {+0.035957f, -0.060576f, +0.005664f, +0.000112f, -0.000061f}, - {-0.005716f, -0.143119f, -0.000691f, +0.001673f, -0.000018f}, - {+0.004173f, +0.058408f, +0.000175f, +0.000594f, +0.000044f}, - {-0.014414f, +0.051132f, -0.000839f, -0.000345f, -0.000005f}, - {-0.049091f, -0.010855f, -0.005751f, +0.000426f, +0.000033f} - }, - { - {-0.304340f, -0.049256f, -0.042947f, -0.000088f, -0.000022f}, - {-0.346449f, +0.017003f, -0.049621f, +0.000139f, -0.000009f}, - {+0.019745f, +0.150866f, +0.002851f, -0.000874f, +0.000177f}, - {-0.162730f, +0.020120f, -0.025248f, -0.000808f, +0.000118f}, - {-0.121162f, -0.084738f, -0.017259f, -0.000808f, +0.000129f}, - {+0.021528f, +0.096693f, +0.003962f, -0.000943f, +0.000157f}, - {+0.080586f, -0.103642f, +0.011291f, +0.000589f, -0.000085f}, - {-0.068191f, -0.098030f, -0.009096f, -0.000708f, +0.000092f}, - {-0.036751f, -0.046076f, -0.010119f, +0.000284f, +0.000015f}, - {-0.119856f, -0.085575f, -0.015319f, -0.000749f, +0.000064f}, - {-0.056191f, -0.109851f, -0.006441f, -0.000263f, -0.000045f}, - {+0.024446f, -0.076942f, +0.005466f, +0.000057f, -0.000045f}, - {+0.077086f, -0.012676f, +0.010840f, +0.000676f, -0.000186f}, - {-0.022826f, +0.016537f, -0.004763f, -0.000058f, -0.000029f}, - {-0.027607f, +0.031101f, -0.005172f, -0.000482f, +0.000074f}, - {+0.014855f, +0.087430f, -0.000738f, -0.000308f, +0.000029f} - }, - { - {-0.005004f, -0.508800f, -0.001655f, +0.000570f, +0.000043f}, - {+0.037995f, -0.575156f, +0.001530f, +0.000956f, +0.000194f}, - {+0.063856f, +0.080957f, +0.012812f, -0.000366f, -0.000142f}, - {+0.010948f, -0.247204f, +0.002839f, -0.000988f, -0.000091f}, - {-0.037852f, -0.213873f, -0.003692f, -0.000614f, -0.000107f}, - {+0.039839f, +0.066118f, +0.007988f, +0.000076f, -0.000128f}, - {-0.045977f, +0.093672f, -0.005215f, -0.000506f, +0.000005f}, - {-0.041130f, -0.141991f, -0.007462f, +0.000858f, +0.000008f}, - {-0.021819f, -0.064730f, +0.000517f, -0.001640f, -0.000079f}, - {-0.039217f, -0.211900f, -0.002725f, -0.000921f, -0.000061f}, - {-0.045306f, -0.127706f, -0.011256f, +0.001493f, +0.000048f}, - {-0.032008f, +0.009436f, -0.005842f, +0.000094f, +0.000078f}, - {-0.004712f, +0.114810f, -0.003709f, -0.000227f, +0.000095f}, - {+0.008291f, -0.029832f, +0.002509f, -0.001272f, -0.000051f}, - {+0.010544f, -0.029052f, +0.001437f, -0.000138f, -0.000018f}, - {+0.030918f, +0.063638f, +0.005584f, -0.001227f, -0.000052f} - }, - { - {+0.309505f, -0.026680f, +0.043359f, +0.000419f, +0.000012f}, - {+0.340746f, -0.112091f, +0.048231f, +0.000694f, -0.000055f}, - {-0.050908f, -0.091302f, -0.002377f, +0.001134f, -0.000125f}, - {+0.144586f, -0.040667f, +0.026484f, +0.000403f, -0.000085f}, - {+0.123071f, +0.035557f, +0.020641f, +0.000216f, -0.000092f}, - {-0.043825f, -0.058128f, -0.002805f, +0.001548f, -0.000111f}, - {-0.057009f, +0.077140f, -0.008666f, -0.000464f, +0.000085f}, - {+0.083496f, +0.049994f, +0.012188f, +0.002184f, -0.000094f}, - {+0.041301f, +0.031775f, +0.012825f, +0.000028f, +0.000015f}, - {+0.123609f, +0.042304f, +0.020375f, -0.000225f, -0.000027f}, - {+0.072663f, +0.052460f, +0.006157f, +0.001671f, +0.000023f}, - {-0.007106f, +0.047603f, -0.003493f, -0.000487f, +0.000023f}, - {-0.066995f, +0.014584f, -0.013984f, -0.001717f, +0.000149f}, - {+0.012333f, -0.023056f, +0.004831f, -0.000535f, +0.000051f}, - {+0.018093f, -0.018206f, +0.005001f, +0.000871f, -0.000068f}, - {-0.032484f, -0.034633f, +0.000235f, -0.000375f, -0.000007f} + {-0.191323f, +0.550462f, -0.164703f}, + {-0.179339f, +0.105827f, +0.022109f}, + {-0.016317f, +0.069138f, -0.026386f}, + {-0.031302f, +0.044550f, -0.011983f}, + {-0.011873f, -0.049933f, +0.022817f}, + {+0.002100f, -0.025417f, +0.008917f}, + {+0.008673f, +0.072165f, -0.030658f}, + {+0.009984f, -0.046099f, +0.014260f}, + {-0.017932f, +0.200113f, -0.071972f}, + {-0.009948f, -0.076380f, +0.035799f}, + {+0.000500f, +0.013211f, -0.007415f}, + {-0.005467f, -0.017109f, +0.007909f}, + {-0.001381f, -0.024397f, +0.011565f}, + {+0.001735f, -0.017167f, +0.009148f}, + {-0.006994f, -0.015041f, +0.007364f}, + {-0.000274f, +0.004190f, -0.001467f} + }, + { + {-0.330036f, +0.333647f, -0.215680f}, + {-0.446962f, -0.557076f, -0.195252f}, + {-0.017152f, +0.086610f, -0.016060f}, + {-0.053984f, +0.030859f, -0.007361f}, + {-0.031663f, -0.050397f, +0.030580f}, + {+0.013130f, +0.075028f, +0.055072f}, + {+0.035680f, +0.080722f, -0.037346f}, + {+0.011258f, -0.044042f, +0.013548f}, + {+0.004710f, +0.152351f, -0.099878f}, + {-0.054304f, -0.216938f, -0.014289f}, + {+0.014461f, +0.090558f, +0.026436f}, + {-0.019523f, -0.056800f, -0.001967f}, + {-0.012667f, -0.065948f, -0.004877f}, + {-0.011111f, -0.088384f, -0.022179f}, + {-0.018869f, -0.025704f, +0.006997f}, + {+0.000817f, +0.008300f, +0.000651f} + }, + { + {-0.096856f, -0.591788f, +0.084769f}, + {-0.247542f, -1.016515f, -0.073842f}, + {-0.000574f, +0.046908f, -0.004371f}, + {-0.019540f, +0.031177f, -0.013825f}, + {-0.037796f, +0.124420f, -0.041797f}, + {-0.007360f, +0.192733f, +0.007619f}, + {+0.072377f, -0.160383f, +0.061576f}, + {-0.003711f, +0.021943f, -0.004227f}, + {+0.112964f, -0.363004f, +0.093285f}, + {-0.056746f, -0.090813f, -0.072980f}, + {+0.006103f, +0.134417f, +0.008866f}, + {-0.005326f, -0.101653f, +0.016759f}, + {-0.002749f, -0.090650f, +0.006843f}, + {-0.000089f, -0.179843f, +0.016051f}, + {+0.001814f, -0.087437f, +0.037078f}, + {+0.005267f, -0.010738f, +0.007098f} + }, + { + {+0.063555f, -0.411417f, +0.075756f}, + {+0.093014f, -0.372322f, +0.077805f}, + {+0.007107f, +0.054992f, -0.008311f}, + {+0.033886f, +0.080359f, -0.013428f}, + {+0.014436f, +0.207733f, -0.015885f}, + {-0.013408f, +0.128849f, -0.020860f}, + {+0.024255f, -0.374328f, -0.023256f}, + {-0.002134f, +0.023939f, +0.000696f}, + {+0.058983f, -0.666227f, -0.050398f}, + {-0.014357f, -0.059836f, -0.078919f}, + {-0.009066f, +0.055606f, -0.025373f}, + {-0.008234f, -0.193844f, -0.040018f}, + {+0.010778f, -0.088365f, +0.004018f}, + {+0.007190f, -0.141067f, +0.033486f}, + {+0.015950f, -0.182801f, -0.014037f}, + {-0.004549f, -0.103305f, -0.035896f} + }, + { + {+0.019484f, -0.338410f, +0.083536f}, + {+0.202040f, -0.634536f, +0.185332f}, + {+0.007949f, -0.067812f, +0.047529f}, + {+0.048582f, -0.153833f, +0.075433f}, + {+0.054773f, -0.008273f, +0.058696f}, + {+0.024929f, -0.021715f, +0.041866f}, + {-0.026392f, -0.170362f, -0.104628f}, + {+0.014816f, -0.001719f, +0.003760f}, + {-0.050384f, -0.474129f, -0.111890f}, + {+0.050928f, -0.326828f, +0.037272f}, + {-0.005968f, +0.019903f, -0.009428f}, + {-0.002366f, -0.233633f, -0.019586f}, + {+0.014235f, -0.074982f, -0.008001f}, + {-0.003852f, +0.000864f, -0.026540f}, + {+0.024596f, -0.140123f, -0.045292f}, + {+0.007335f, -0.140212f, -0.016737f} + }, + { + {-0.203259f, -0.677311f, +0.036974f}, + {-0.017307f, -0.878070f, +0.170118f}, + {-0.043215f, -0.181813f, +0.012035f}, + {-0.067120f, -0.199982f, +0.078357f}, + {-0.003334f, -0.005382f, +0.060963f}, + {+0.037369f, -0.095076f, +0.002797f}, + {-0.007145f, +0.024172f, -0.016239f}, + {+0.025809f, +0.035193f, +0.010462f}, + {-0.123278f, -0.317455f, +0.005941f}, + {+0.071780f, -0.152842f, +0.115403f}, + {-0.009047f, +0.007435f, -0.015219f}, + {+0.009240f, -0.131025f, +0.037457f}, + {+0.010330f, -0.013791f, +0.019556f}, + {+0.018073f, +0.051639f, -0.007415f}, + {+0.023065f, +0.024816f, +0.028060f}, + {+0.023145f, -0.072535f, +0.012653f} + }, + { + {-0.363585f, -0.196908f, -0.132849f}, + {-0.400794f, +0.061111f, -0.146774f}, + {-0.088996f, -0.035461f, -0.039728f}, + {-0.248102f, +0.210034f, -0.044008f}, + {-0.136603f, +0.269455f, -0.014678f}, + {+0.039867f, -0.056544f, -0.018785f}, + {+0.012335f, -0.061064f, +0.014746f}, + {+0.001640f, +0.021263f, +0.019567f}, + {-0.164395f, -0.120409f, -0.065761f}, + {+0.005008f, +0.124444f, +0.002355f}, + {-0.006089f, -0.036166f, +0.003168f}, + {+0.008972f, -0.027316f, -0.008811f}, + {-0.026456f, +0.074066f, -0.007831f}, + {+0.036264f, -0.025445f, +0.017552f}, + {-0.046783f, +0.110385f, +0.011511f}, + {+0.016634f, -0.063190f, +0.003470f} + }, + { + {-0.140043f, +0.331564f, +0.031879f}, + {-0.418213f, +0.323867f, -0.026950f}, + {-0.066524f, +0.078043f, +0.003209f}, + {-0.275295f, +0.106284f, -0.069212f}, + {-0.205855f, +0.059809f, -0.074823f}, + {+0.024267f, +0.018141f, +0.016347f}, + {+0.021686f, -0.056152f, +0.012278f}, + {-0.065157f, -0.071098f, -0.001681f}, + {-0.025332f, +0.159594f, +0.013561f}, + {-0.029475f, +0.035218f, -0.023811f}, + {-0.011328f, -0.030605f, +0.007685f}, + {+0.054740f, +0.020295f, +0.000302f}, + {-0.047455f, +0.027854f, -0.019731f}, + {+0.022053f, -0.039858f, +0.012679f}, + {-0.116347f, -0.040132f, -0.032026f}, + {-0.007321f, -0.043491f, +0.015668f} + }, + { + {+0.232420f, -0.042183f, +0.090352f}, + {-0.143907f, -0.128870f, +0.081606f}, + {-0.019255f, -0.008481f, +0.025359f}, + {-0.079364f, -0.195197f, +0.009060f}, + {-0.092435f, -0.165349f, -0.007306f}, + {-0.037358f, +0.066958f, +0.009347f}, + {+0.002010f, -0.000201f, -0.007048f}, + {-0.118479f, -0.000141f, -0.016298f}, + {+0.131479f, -0.025371f, +0.046423f}, + {-0.013254f, -0.056073f, +0.007964f}, + {-0.020421f, +0.014051f, -0.008057f}, + {+0.102505f, -0.044999f, +0.012472f}, + {-0.028717f, -0.037569f, +0.002612f}, + {-0.021286f, +0.036718f, -0.008001f}, + {-0.110557f, -0.093273f, -0.012580f}, + {-0.060924f, +0.023756f, -0.000190f} + }, + { + {+0.533983f, -0.079000f, +0.018330f}, + {+0.217748f, -0.012931f, +0.048151f}, + {+0.025802f, -0.036354f, +0.006267f}, + {+0.205140f, +0.060899f, +0.046660f}, + {+0.113290f, +0.081234f, +0.041909f}, + {-0.105415f, -0.030348f, -0.015181f}, + {-0.034112f, -0.007984f, -0.002032f}, + {-0.109019f, +0.032142f, -0.005021f}, + {+0.186112f, -0.090334f, +0.010289f}, + {+0.018376f, -0.004638f, +0.018235f}, + {-0.011521f, +0.024596f, -0.005093f}, + {+0.106685f, -0.043319f, +0.011207f}, + {+0.003719f, +0.002813f, +0.009833f}, + {-0.061529f, +0.014049f, -0.008239f}, + {-0.045872f, +0.041391f, +0.025100f}, + {-0.106073f, -0.025839f, -0.009219f} + }, + { + {+0.689088f, +0.021676f, -0.035498f}, + {+0.512497f, +0.013050f, -0.008139f}, + {+0.080900f, -0.013233f, -0.008488f}, + {+0.415840f, +0.041814f, +0.013996f}, + {+0.278767f, +0.050484f, +0.020716f}, + {-0.124237f, -0.048494f, -0.003541f}, + {-0.083860f, +0.012095f, -0.001839f}, + {-0.040470f, -0.043256f, +0.009440f}, + {+0.127554f, +0.052174f, -0.027560f}, + {+0.038197f, +0.025553f, +0.002386f}, + {+0.013296f, -0.017618f, +0.006802f}, + {+0.049000f, +0.034411f, -0.008434f}, + {+0.023951f, +0.015385f, +0.000397f}, + {-0.079741f, -0.014689f, +0.006056f}, + {+0.015937f, +0.036771f, +0.013501f}, + {-0.116284f, -0.032742f, -0.005608f} + }, + { + {+0.733240f, +0.033897f, -0.028463f}, + {+0.683283f, +0.019108f, -0.024422f}, + {+0.165878f, +0.024612f, -0.005353f}, + {+0.489377f, -0.026929f, -0.018187f}, + {+0.343135f, -0.029846f, -0.016631f}, + {-0.086256f, +0.016816f, +0.014815f}, + {-0.129107f, +0.000075f, +0.000830f}, + {+0.047145f, -0.000801f, +0.008881f}, + {+0.023844f, +0.003992f, -0.023086f}, + {+0.042301f, -0.008336f, -0.009579f}, + {+0.039371f, -0.014019f, +0.003266f}, + {-0.037930f, -0.005491f, -0.006528f}, + {+0.020403f, -0.000483f, -0.004551f}, + {-0.081119f, -0.016241f, +0.003920f}, + {+0.051945f, -0.020771f, -0.013605f}, + {-0.091078f, +0.021518f, +0.009604f} + }, + { + {+0.733114f, -0.029809f, -0.003150f}, + {+0.758988f, -0.025935f, -0.015102f}, + {+0.280906f, -0.031811f, -0.003778f}, + {+0.459117f, +0.008405f, -0.019040f}, + {+0.333055f, -0.004022f, -0.017856f}, + {-0.012149f, +0.009636f, +0.003754f}, + {-0.156853f, +0.003236f, +0.004887f}, + {+0.114968f, +0.002815f, -0.004184f}, + {-0.064559f, -0.023528f, +0.001333f}, + {+0.039134f, -0.015161f, -0.005522f}, + {+0.063282f, -0.001881f, -0.005278f}, + {-0.121057f, +0.006821f, +0.003568f}, + {-0.006828f, +0.002343f, -0.000194f}, + {-0.069156f, -0.009861f, -0.001545f}, + {+0.070362f, -0.029774f, -0.011253f}, + {-0.061366f, +0.013312f, +0.005905f} + }, + { + {+0.724625f, -0.001203f, +0.006316f}, + {+0.787100f, +0.019364f, -0.003117f}, + {+0.401617f, +0.025467f, -0.004330f}, + {+0.392760f, +0.000769f, -0.009132f}, + {+0.296783f, +0.006051f, -0.006244f}, + {+0.080677f, +0.011855f, -0.011409f}, + {-0.155686f, -0.003923f, +0.003032f}, + {+0.152027f, +0.011289f, -0.005772f}, + {-0.122199f, -0.008679f, +0.013528f}, + {+0.032224f, +0.005650f, +0.003051f}, + {+0.086101f, +0.012645f, -0.003029f}, + {-0.171824f, -0.008018f, +0.006233f}, + {-0.049811f, -0.010853f, +0.002128f}, + {-0.046385f, +0.014661f, +0.005149f}, + {+0.075593f, +0.018900f, +0.006819f}, + {-0.042682f, -0.001204f, -0.002701f} + }, + { + {+0.710313f, +0.016351f, +0.000594f}, + {+0.788202f, +0.001698f, +0.001880f}, + {+0.478276f, -0.009988f, -0.006465f}, + {+0.338553f, -0.006580f, +0.000873f}, + {+0.267876f, -0.004181f, +0.000561f}, + {+0.161632f, -0.031504f, -0.010015f}, + {-0.112024f, -0.007981f, -0.001560f}, + {+0.161078f, -0.006395f, +0.000785f}, + {-0.159938f, +0.023767f, +0.006167f}, + {+0.016977f, +0.011649f, +0.002458f}, + {+0.101033f, -0.005466f, +0.000979f}, + {-0.168147f, -0.002987f, +0.004477f}, + {-0.090853f, +0.008103f, +0.002155f}, + {-0.019160f, +0.010061f, +0.003516f}, + {+0.068113f, +0.017356f, +0.008667f}, + {-0.034415f, -0.006094f, -0.000653f} + }, + { + {+0.687296f, -0.010309f, -0.005056f}, + {+0.764260f, -0.015559f, -0.000832f}, + {+0.464886f, -0.002946f, -0.003297f}, + {+0.298384f, -0.012876f, +0.002489f}, + {+0.246598f, -0.005940f, +0.001267f}, + {+0.184060f, +0.014332f, +0.000763f}, + {-0.024137f, +0.022250f, -0.004819f}, + {+0.154151f, -0.010440f, +0.001340f}, + {-0.181725f, -0.011644f, -0.002738f}, + {-0.007528f, -0.010988f, -0.002133f}, + {+0.103221f, -0.002109f, +0.001628f}, + {-0.103776f, +0.007568f, -0.001735f}, + {-0.108578f, +0.000395f, +0.003349f}, + {+0.017935f, -0.001653f, -0.006823f}, + {+0.063247f, -0.018078f, -0.002599f}, + {-0.031929f, -0.003751f, +0.000579f} + }, + { + {+0.659915f, +0.003181f, -0.004789f}, + {+0.723641f, +0.015598f, -0.004701f}, + {+0.344320f, +0.034439f, +0.003396f}, + {+0.252485f, +0.010951f, -0.000869f}, + {+0.213766f, +0.011294f, -0.001229f}, + {+0.112272f, +0.023126f, +0.008479f}, + {+0.086512f, -0.032942f, -0.003959f}, + {+0.151070f, +0.005416f, -0.003241f}, + {-0.183618f, -0.008669f, -0.002985f}, + {-0.037360f, +0.003147f, -0.002379f}, + {+0.095879f, +0.005536f, +0.000670f}, + {+0.009973f, -0.033041f, -0.006312f}, + {-0.086652f, -0.000941f, +0.001227f}, + {+0.070708f, -0.028404f, -0.005854f}, + {+0.082798f, -0.007130f, -0.008870f}, + {-0.024953f, -0.002080f, -0.001188f} + }, + { + {+0.634763f, -0.001208f, -0.002397f}, + {+0.683670f, -0.007693f, -0.006039f}, + {+0.143818f, -0.065248f, +0.001626f}, + {+0.187585f, -0.010607f, +0.001657f}, + {+0.155102f, -0.012347f, -0.000836f}, + {-0.047669f, -0.064360f, +0.004465f}, + {+0.176375f, +0.020282f, -0.000832f}, + {+0.166599f, +0.005868f, -0.005383f}, + {-0.165581f, +0.017111f, +0.003241f}, + {-0.067470f, +0.001639f, +0.002026f}, + {+0.090399f, -0.004464f, -0.000923f}, + {+0.138735f, +0.040116f, -0.001857f}, + {-0.018624f, +0.015969f, -0.003767f}, + {+0.124121f, +0.022397f, +0.003509f}, + {+0.132318f, +0.030070f, -0.004033f}, + {-0.005451f, +0.010583f, +0.000461f} + }, + { + {+0.613639f, +0.002441f, -0.000996f}, + {+0.658994f, -0.004033f, -0.003708f}, + {-0.066781f, +0.052613f, -0.005380f}, + {+0.103141f, +0.024662f, +0.003094f}, + {+0.069224f, +0.020885f, +0.001016f}, + {-0.237901f, +0.057325f, -0.006669f}, + {+0.198251f, +0.008139f, -0.001238f}, + {+0.196297f, -0.014019f, -0.004087f}, + {-0.137085f, -0.006189f, +0.006787f}, + {-0.092626f, +0.005231f, +0.005081f}, + {+0.098805f, +0.001528f, -0.003973f}, + {+0.227978f, -0.011869f, +0.001188f}, + {+0.083502f, -0.031761f, -0.003653f}, + {+0.154304f, +0.003532f, +0.005157f}, + {+0.192731f, -0.026618f, +0.005738f}, + {+0.025619f, -0.008251f, +0.002697f} + }, + { + {+0.592443f, -0.004265f, -0.000675f}, + {+0.651475f, +0.007639f, +0.001077f}, + {-0.211884f, -0.008375f, -0.003618f}, + {+0.015847f, -0.026610f, -0.001288f}, + {-0.030980f, -0.024402f, +0.000682f}, + {-0.377865f, -0.004628f, -0.005328f}, + {+0.127740f, -0.031243f, -0.004692f}, + {+0.216064f, +0.008428f, -0.000840f}, + {-0.107665f, -0.004148f, +0.003207f}, + {-0.104222f, -0.007982f, +0.002781f}, + {+0.121055f, +0.007151f, -0.006643f}, + {+0.232842f, -0.021111f, -0.004010f}, + {+0.181984f, +0.020598f, -0.002112f}, + {+0.154857f, -0.016563f, -0.001311f}, + {+0.234230f, -0.006972f, +0.006138f}, + {+0.062816f, -0.000374f, -0.000261f} + }, + { + {+0.565815f, +0.006621f, -0.000731f}, + {+0.652157f, +0.001839f, +0.002786f}, + {-0.256941f, -0.016709f, +0.005201f}, + {-0.049457f, +0.004802f, -0.002568f}, + {-0.121870f, +0.014390f, +0.001453f}, + {-0.418806f, -0.025565f, +0.008436f}, + {-0.023252f, +0.033441f, -0.003455f}, + {+0.192750f, +0.014454f, -0.000969f}, + {-0.080190f, +0.006138f, -0.004702f}, + {-0.090978f, -0.000288f, -0.001642f}, + {+0.136520f, -0.012063f, -0.004637f}, + {+0.143202f, +0.027531f, -0.007344f}, + {+0.230859f, -0.004544f, -0.002668f}, + {+0.140224f, +0.009293f, -0.007214f}, + {+0.242282f, +0.025199f, -0.006229f}, + {+0.100859f, -0.005416f, -0.004924f} + }, + { + {+0.532337f, -0.007417f, -0.000543f}, + {+0.652955f, -0.010368f, -0.001740f}, + {-0.220699f, +0.013404f, +0.007323f}, + {-0.077945f, +0.013141f, +0.004826f}, + {-0.182039f, -0.009934f, +0.002503f}, + {-0.362601f, +0.019757f, +0.014603f}, + {-0.211924f, -0.030990f, +0.005294f}, + {+0.105625f, -0.028087f, -0.003678f}, + {-0.054535f, +0.015575f, -0.006139f}, + {-0.049202f, +0.015528f, -0.003083f}, + {+0.111395f, +0.002877f, +0.002743f}, + {-0.015299f, -0.023373f, +0.001099f}, + {+0.201870f, -0.009975f, -0.000096f}, + {+0.130715f, +0.012877f, -0.003882f}, + {+0.221564f, -0.009858f, -0.016146f}, + {+0.132494f, +0.017520f, -0.002095f} + }, + { + {+0.495834f, +0.008532f, -0.000369f}, + {+0.652356f, +0.003292f, -0.006811f}, + {-0.149624f, -0.011936f, +0.002662f}, + {-0.071256f, -0.002030f, +0.009341f}, + {-0.200363f, +0.000872f, +0.001071f}, + {-0.238216f, -0.009887f, +0.004541f}, + {-0.381151f, +0.041781f, +0.008291f}, + {-0.039667f, +0.026941f, +0.000063f}, + {-0.036683f, -0.023635f, +0.004916f}, + {+0.009186f, -0.024708f, +0.001260f}, + {+0.023299f, +0.026996f, +0.008496f}, + {-0.194696f, +0.039072f, +0.009744f}, + {+0.098003f, +0.033287f, +0.002536f}, + {+0.131758f, -0.006621f, +0.002658f}, + {+0.173806f, -0.018597f, -0.006932f}, + {+0.145380f, -0.006223f, +0.004430f} + }, + { + {+0.463299f, -0.007155f, -0.000770f}, + {+0.648076f, +0.009295f, -0.004610f}, + {-0.089513f, +0.010398f, +0.000359f}, + {-0.033244f, -0.002975f, +0.003236f}, + {-0.178153f, +0.013477f, +0.001343f}, + {-0.077802f, +0.029144f, -0.007460f}, + {-0.474851f, -0.029171f, -0.001803f}, + {-0.217055f, -0.041281f, +0.004828f}, + {-0.037249f, -0.008239f, +0.011497f}, + {+0.059921f, +0.009759f, +0.005233f}, + {-0.114758f, -0.056676f, +0.002229f}, + {-0.334964f, -0.046076f, +0.002995f}, + {-0.042473f, -0.043913f, -0.000922f}, + {+0.133390f, -0.007415f, +0.001167f}, + {+0.081735f, -0.007332f, +0.010523f}, + {+0.133499f, -0.015420f, +0.003583f} + }, + { + {+0.441203f, +0.002482f, -0.000824f}, + {+0.629545f, -0.003537f, +0.002292f}, + {-0.068500f, -0.000883f, +0.001586f}, + {+0.038519f, -0.014498f, -0.003426f}, + {-0.131180f, -0.015847f, +0.003732f}, + {+0.083693f, -0.047317f, -0.005981f}, + {-0.461803f, -0.022290f, -0.008344f}, + {-0.384732f, +0.037693f, +0.003505f}, + {-0.048144f, +0.029049f, +0.001374f}, + {+0.084768f, +0.008739f, +0.001947f}, + {-0.251499f, +0.035994f, -0.008053f}, + {-0.379916f, +0.000042f, -0.006724f}, + {-0.160178f, +0.020677f, -0.004025f}, + {+0.124411f, +0.010697f, -0.004992f}, + {-0.067302f, +0.056203f, +0.010926f}, + {+0.110573f, +0.015976f, -0.002867f} + }, + { + {+0.430897f, +0.000433f, -0.000350f}, + {+0.586004f, -0.017187f, +0.004129f}, + {-0.087700f, -0.011728f, +0.002208f}, + {+0.139979f, +0.032148f, -0.002572f}, + {-0.080931f, +0.008008f, +0.004145f}, + {+0.204274f, +0.031020f, +0.002988f}, + {-0.365555f, +0.057171f, +0.001535f}, + {-0.496090f, -0.014326f, +0.002762f}, + {-0.036347f, -0.000076f, -0.009610f}, + {+0.087371f, -0.006753f, -0.002953f}, + {-0.332582f, +0.010055f, -0.004412f}, + {-0.314151f, +0.048523f, -0.001669f}, + {-0.210677f, +0.006259f, -0.001554f}, + {+0.097223f, +0.002730f, -0.004153f}, + {-0.243214f, -0.058784f, -0.001131f}, + {+0.100970f, +0.001509f, -0.005827f} + }, + { + {+0.427847f, -0.001191f, +0.000192f}, + {+0.522040f, +0.027328f, -0.001322f}, + {-0.123746f, +0.015960f, -0.000425f}, + {+0.250557f, -0.029225f, +0.001401f}, + {-0.041411f, +0.001671f, +0.000435f}, + {+0.251666f, +0.011713f, +0.002737f}, + {-0.259410f, -0.030558f, +0.013501f}, + {-0.523363f, -0.008886f, +0.005097f}, + {+0.023565f, -0.037779f, -0.005281f}, + {+0.085570f, -0.002595f, -0.003055f}, + {-0.343956f, -0.022947f, +0.008052f}, + {-0.182050f, -0.049717f, +0.010139f}, + {-0.188646f, -0.025113f, +0.004590f}, + {+0.043971f, +0.008025f, +0.002158f}, + {-0.383316f, +0.019159f, -0.004800f}, + {+0.118679f, -0.020135f, -0.001036f} + }, + { + {+0.424775f, -0.001427f, +0.000274f}, + {+0.458547f, -0.013186f, -0.005324f}, + {-0.143005f, -0.001551f, -0.002520f}, + {+0.342091f, +0.013355f, +0.001866f}, + {-0.012473f, +0.005183f, -0.002228f}, + {+0.229007f, -0.024031f, -0.004922f}, + {-0.213143f, -0.021386f, +0.008846f}, + {-0.469349f, +0.018839f, +0.005224f}, + {+0.120107f, +0.037044f, +0.005367f}, + {+0.094940f, +0.009229f, +0.000146f}, + {-0.312164f, +0.002650f, +0.009985f}, + {-0.056636f, +0.008288f, +0.009234f}, + {-0.124730f, +0.013388f, +0.006509f}, + {-0.037461f, -0.023127f, +0.003625f}, + {-0.438903f, +0.013352f, +0.002069f}, + {+0.155431f, +0.012048f, +0.004072f} + }, + { + {+0.415850f, +0.004534f, -0.000668f}, + {+0.414572f, -0.002652f, -0.002367f}, + {-0.124613f, -0.010725f, -0.002281f}, + {+0.397126f, -0.000677f, -0.001120f}, + {+0.014003f, -0.010619f, +0.000267f}, + {+0.170253f, +0.018842f, -0.008960f}, + {-0.241128f, +0.034417f, -0.004698f}, + {-0.359282f, -0.033550f, +0.005250f}, + {+0.216676f, -0.010427f, +0.006057f}, + {+0.120954f, -0.008613f, +0.002469f}, + {-0.268504f, -0.001802f, +0.003587f}, + {+0.013045f, +0.010217f, -0.002327f}, + {-0.059871f, -0.003931f, +0.001188f}, + {-0.132164f, +0.026563f, +0.001240f}, + {-0.403193f, -0.027848f, +0.009266f}, + {+0.190953f, +0.002021f, +0.001187f} + }, + { + {+0.399726f, -0.003989f, -0.001238f}, + {+0.392346f, +0.005321f, +0.003177f}, + {-0.072827f, +0.023138f, +0.000364f}, + {+0.417980f, -0.003176f, -0.003953f}, + {+0.044470f, +0.006065f, +0.002234f}, + {+0.111558f, -0.001243f, -0.006696f}, + {-0.306891f, -0.017879f, -0.010556f}, + {-0.227947f, +0.027747f, +0.006660f}, + {+0.285131f, -0.003545f, -0.002248f}, + {+0.160581f, +0.005372f, +0.001188f}, + {-0.228536f, +0.004194f, +0.000473f}, + {+0.021041f, -0.010096f, -0.009272f}, + {-0.021484f, +0.000358f, -0.003354f}, + {-0.213365f, -0.015260f, -0.000168f}, + {-0.303399f, +0.026027f, +0.011571f}, + {+0.212111f, -0.000447f, -0.003261f} + }, + { + {+0.378407f, +0.003850f, -0.000653f}, + {+0.380175f, +0.007586f, +0.003255f}, + {-0.012127f, -0.017400f, +0.004348f}, + {+0.420589f, +0.000881f, -0.004600f}, + {+0.082045f, -0.000538f, -0.001160f}, + {+0.069379f, -0.007873f, +0.001279f}, + {-0.364957f, -0.009593f, -0.003601f}, + {-0.103978f, -0.012644f, +0.002536f}, + {+0.322327f, -0.004962f, -0.006100f}, + {+0.208381f, -0.007687f, -0.001556f}, + {-0.193755f, -0.004206f, -0.000887f}, + {-0.012722f, -0.002660f, -0.005208f}, + {-0.021028f, +0.002645f, -0.003959f}, + {-0.256559f, +0.000206f, +0.001247f}, + {-0.175255f, -0.013434f, +0.005713f}, + {+0.216424f, -0.004406f, -0.001903f} + }, + { + {+0.355186f, -0.004417f, +0.000047f}, + {+0.367959f, -0.007051f, -0.000589f}, + {+0.030278f, -0.000745f, +0.003677f}, + {+0.419972f, +0.001580f, -0.004098f}, + {+0.126164f, +0.010538f, -0.004622f}, + {+0.036142f, -0.005050f, +0.006483f}, + {-0.395580f, +0.008424f, +0.006868f}, + {+0.004418f, +0.013200f, -0.004102f}, + {+0.338438f, +0.004391f, -0.003969f}, + {+0.257936f, +0.011270f, -0.002562f}, + {-0.157184f, +0.010190f, -0.001022f}, + {-0.066694f, -0.007499f, +0.001955f}, + {-0.058038f, -0.007898f, -0.001836f}, + {-0.252063f, +0.011457f, +0.004218f}, + {-0.038996f, +0.019229f, -0.002930f}, + {+0.207135f, -0.002683f, +0.000920f} + }, + { + {+0.333833f, +0.005141f, -0.000033f}, + {+0.354343f, +0.002376f, -0.001512f}, + {+0.044789f, +0.011943f, -0.002345f}, + {+0.420054f, -0.005203f, -0.002411f}, + {+0.168493f, -0.019086f, -0.001101f}, + {-0.000312f, +0.019974f, +0.002740f}, + {-0.404430f, +0.003854f, +0.008761f}, + {+0.101609f, -0.024344f, -0.004621f}, + {+0.343021f, -0.002003f, -0.002287f}, + {+0.300798f, -0.012232f, -0.000926f}, + {-0.115201f, -0.012523f, +0.000667f}, + {-0.124884f, +0.013322f, +0.003505f}, + {-0.124657f, +0.015080f, +0.000444f}, + {-0.208063f, -0.009838f, +0.004149f}, + {+0.098778f, -0.030234f, -0.005691f}, + {+0.191672f, +0.010274f, -0.000986f} + }, + { + {+0.317651f, -0.003399f, -0.000638f}, + {+0.342009f, -0.000734f, -0.000383f}, + {+0.041234f, -0.003266f, -0.006626f}, + {+0.412818f, +0.000564f, -0.000053f}, + {+0.193269f, +0.005756f, +0.003803f}, + {-0.038455f, -0.012921f, -0.002898f}, + {-0.397973f, -0.006421f, +0.004371f}, + {+0.186407f, +0.018164f, -0.002443f}, + {+0.339213f, -0.001972f, -0.002251f}, + {+0.327935f, +0.003077f, +0.000361f}, + {-0.072360f, +0.008411f, +0.001308f}, + {-0.171731f, -0.013927f, +0.001434f}, + {-0.206591f, -0.018817f, +0.001471f}, + {-0.140714f, +0.015540f, +0.002302f}, + {+0.227639f, +0.031497f, -0.003750f}, + {+0.179263f, -0.004105f, -0.004389f} + }, + { + {+0.307693f, +0.001076f, -0.000945f}, + {+0.334320f, +0.001717f, -0.000049f}, + {+0.033552f, -0.011447f, -0.002121f}, + {+0.387841f, +0.007421f, +0.001088f}, + {+0.192595f, +0.010377f, +0.002843f}, + {-0.067483f, -0.002402f, -0.001682f}, + {-0.373557f, +0.001444f, -0.001449f}, + {+0.251051f, -0.016030f, -0.000496f}, + {+0.323516f, +0.001530f, -0.001658f}, + {+0.335944f, +0.003218f, -0.000567f}, + {-0.034654f, -0.006672f, +0.000906f}, + {-0.193976f, +0.003406f, -0.001146f}, + {-0.284432f, +0.017472f, +0.001142f}, + {-0.067179f, -0.009754f, -0.000138f}, + {+0.329347f, -0.022749f, -0.000471f}, + {+0.172128f, -0.005358f, -0.003493f} + }, + { + {+0.301577f, +0.001184f, -0.000322f}, + {+0.332736f, -0.000666f, -0.000894f}, + {+0.023585f, -0.000609f, +0.003132f}, + {+0.344006f, -0.015803f, +0.000034f}, + {+0.177998f, -0.013137f, -0.002069f}, + {-0.082056f, +0.003433f, +0.002633f}, + {-0.324370f, +0.018955f, -0.002626f}, + {+0.287377f, +0.000225f, -0.000071f}, + {+0.290720f, -0.007672f, -0.000038f}, + {+0.329996f, -0.006498f, -0.002605f}, + {-0.003682f, +0.004563f, +0.000624f}, + {-0.185737f, +0.009876f, -0.000494f}, + {-0.338831f, -0.008465f, +0.000490f}, + {-0.000651f, +0.014424f, -0.001842f}, + {+0.385445f, -0.000494f, -0.001075f}, + {+0.160154f, +0.003230f, +0.000530f} + }, + { + {+0.294359f, +0.001008f, +0.000587f}, + {+0.335716f, -0.002537f, -0.000929f}, + {+0.006697f, +0.010781f, +0.001057f}, + {+0.292769f, +0.014442f, -0.002216f}, + {+0.173218f, -0.002305f, -0.004071f}, + {-0.084637f, +0.001890f, +0.003059f}, + {-0.253587f, -0.025906f, +0.002221f}, + {+0.295508f, +0.003624f, -0.001780f}, + {+0.240102f, +0.014422f, -0.000050f}, + {+0.320004f, -0.000226f, -0.002968f}, + {+0.025595f, -0.006552f, +0.001052f}, + {-0.154653f, -0.014381f, +0.002635f}, + {-0.357893f, -0.004680f, +0.001836f}, + {+0.050259f, -0.009177f, -0.001013f}, + {+0.390921f, +0.011091f, -0.005488f}, + {+0.128396f, +0.010797f, +0.002030f} + }, + { + {+0.281980f, -0.004479f, +0.000473f}, + {+0.338235f, +0.000938f, -0.000317f}, + {-0.016443f, -0.008216f, -0.002310f}, + {+0.250822f, -0.005381f, -0.002547f}, + {+0.194113f, +0.011993f, -0.002133f}, + {-0.078814f, -0.001480f, +0.000683f}, + {-0.178794f, +0.013791f, +0.004329f}, + {+0.286440f, -0.008258f, -0.003815f}, + {+0.180165f, -0.014312f, -0.000718f}, + {+0.312559f, +0.001222f, -0.001335f}, + {+0.061211f, +0.002642f, -0.000385f}, + {-0.117426f, +0.006897f, +0.004033f}, + {-0.342706f, +0.010139f, +0.004471f}, + {+0.079430f, +0.002660f, -0.001268f}, + {+0.356398f, -0.011250f, -0.007640f}, + {+0.072072f, -0.018003f, +0.000575f} + }, + { + {+0.264584f, +0.006225f, -0.000553f}, + {+0.334355f, +0.002104f, -0.000390f}, + {-0.041411f, +0.000660f, -0.001379f}, + {+0.227742f, -0.002231f, -0.000499f}, + {+0.236723f, -0.015277f, -0.000143f}, + {-0.066692f, -0.002089f, -0.000940f}, + {-0.116641f, -0.003621f, +0.000856f}, + {+0.274189f, -0.002260f, -0.003775f}, + {+0.124476f, +0.010538f, -0.000672f}, + {+0.307116f, -0.000375f, -0.000391f}, + {+0.109323f, -0.010339f, -0.003218f}, + {-0.087624f, +0.002282f, +0.001095f}, + {-0.305220f, -0.004246f, +0.003226f}, + {+0.088209f, -0.001890f, -0.000514f}, + {+0.297714f, +0.002109f, -0.002943f}, + {+0.002305f, +0.018254f, -0.000698f} + }, + { + {+0.245860f, -0.004071f, -0.001278f}, + {+0.320735f, -0.004451f, -0.000718f}, + {-0.064973f, -0.003268f, +0.001022f}, + {+0.221237f, +0.003408f, +0.001969f}, + {+0.282979f, +0.012181f, +0.001619f}, + {-0.050139f, +0.005534f, -0.000714f}, + {-0.071497f, +0.004571f, -0.002571f}, + {+0.265456f, +0.000937f, -0.001591f}, + {+0.084560f, -0.004757f, +0.000011f}, + {+0.300229f, -0.001315f, +0.000134f}, + {+0.168137f, +0.018612f, -0.002406f}, + {-0.066781f, +0.001637f, -0.001882f}, + {-0.257378f, +0.011005f, +0.000980f}, + {+0.083095f, -0.005045f, -0.000085f}, + {+0.224972f, -0.016565f, +0.001685f}, + {-0.061472f, -0.012660f, -0.001272f} + }, + { + {+0.229589f, +0.000720f, -0.000554f}, + {+0.297388f, +0.006061f, -0.000830f}, + {-0.086308f, +0.008311f, -0.000100f}, + {+0.220891f, +0.005343f, +0.000760f}, + {+0.312804f, +0.002048f, +0.000535f}, + {-0.033600f, -0.001954f, -0.000821f}, + {-0.037726f, -0.009547f, -0.001800f}, + {+0.256770f, -0.001354f, -0.000172f}, + {+0.064615f, +0.001499f, +0.000378f}, + {+0.288880f, +0.006082f, -0.000716f}, + {+0.223988f, -0.015499f, +0.000654f}, + {-0.048524f, -0.007439f, -0.000777f}, + {-0.208116f, -0.011040f, +0.001557f}, + {+0.074335f, +0.004704f, -0.001723f}, + {+0.146222f, +0.020815f, +0.000166f}, + {-0.103517f, +0.003200f, -0.000724f} + }, + { + {+0.216659f, -0.000775f, +0.000774f}, + {+0.266859f, -0.007292f, -0.000934f}, + {-0.105304f, -0.004788f, -0.002437f}, + {+0.217403f, -0.003973f, -0.002583f}, + {+0.318044f, -0.007929f, -0.003539f}, + {-0.023696f, +0.000702f, -0.001989f}, + {-0.008068f, +0.006711f, +0.000114f}, + {+0.242367f, -0.004361f, +0.000832f}, + {+0.061343f, +0.003214f, +0.000949f}, + {+0.273736f, -0.004941f, -0.002356f}, + {+0.260361f, +0.001261f, +0.000909f}, + {-0.027365f, +0.006696f, +0.001482f}, + {-0.163814f, +0.008052f, +0.001931f}, + {+0.071141f, -0.000562f, -0.003221f}, + {+0.073591f, -0.015255f, -0.001489f}, + {-0.121162f, +0.004631f, +0.001675f} + }, + { + {+0.205784f, +0.003757f, +0.000700f}, + {+0.232994f, +0.005953f, -0.000561f}, + {-0.123682f, -0.003377f, -0.000485f}, + {+0.205753f, -0.000981f, -0.002067f}, + {+0.304943f, +0.001966f, -0.004525f}, + {-0.026104f, -0.002420f, -0.000748f}, + {+0.021981f, -0.003022f, -0.000957f}, + {+0.220204f, +0.009944f, -0.000624f}, + {+0.066717f, -0.001208f, +0.001408f}, + {+0.258003f, -0.000477f, -0.001518f}, + {+0.270472f, +0.007879f, -0.002698f}, + {-0.001424f, -0.001591f, +0.000485f}, + {-0.125885f, -0.003310f, +0.000529f}, + {+0.074527f, -0.008121f, -0.001699f}, + {+0.017069f, +0.005535f, -0.000272f}, + {-0.124829f, -0.001926f, +0.003798f} + }, + { + {+0.196417f, -0.003644f, -0.000603f}, + {+0.199207f, -0.006086f, +0.000295f}, + {-0.146052f, -0.001687f, +0.003740f}, + {+0.182052f, -0.002076f, +0.001266f}, + {+0.282909f, +0.000690f, -0.001105f}, + {-0.044152f, -0.004210f, +0.001817f}, + {+0.054138f, +0.007409f, -0.002335f}, + {+0.196668f, -0.006189f, -0.002331f}, + {+0.072925f, -0.001260f, +0.000239f}, + {+0.242629f, -0.000541f, +0.000943f}, + {+0.260897f, -0.003994f, -0.004883f}, + {+0.029070f, +0.005485f, -0.001962f}, + {-0.092855f, +0.004046f, -0.001954f}, + {+0.076259f, +0.005415f, +0.002510f}, + {-0.019261f, -0.001366f, +0.002709f}, + {-0.127606f, -0.004435f, +0.002949f} + }, + { + {+0.189173f, +0.000560f, -0.001059f}, + {+0.167547f, +0.008258f, -0.000141f}, + {-0.174715f, +0.013815f, +0.002907f}, + {+0.145627f, +0.012083f, +0.002087f}, + {+0.256566f, +0.006772f, +0.000776f}, + {-0.075271f, +0.013763f, +0.000701f}, + {+0.085309f, -0.009140f, -0.001366f}, + {+0.180099f, +0.000959f, -0.002178f}, + {+0.077061f, -0.000891f, -0.000372f}, + {+0.225986f, +0.007128f, +0.000680f}, + {+0.242442f, +0.000129f, -0.003190f}, + {+0.061120f, -0.011120f, -0.001079f}, + {-0.062759f, -0.011288f, -0.001129f}, + {+0.065406f, +0.009942f, +0.002436f}, + {-0.038027f, +0.005472f, +0.002780f}, + {-0.134062f, +0.004375f, +0.001136f} + }, + { + {+0.183656f, +0.000923f, -0.000164f}, + {+0.139835f, -0.005429f, -0.001020f}, + {-0.202643f, -0.008873f, -0.000639f}, + {+0.102603f, -0.014782f, -0.000700f}, + {+0.227902f, -0.008291f, -0.000524f}, + {-0.108562f, -0.007847f, -0.001593f}, + {+0.108523f, +0.004720f, -0.000054f}, + {+0.172882f, +0.003322f, -0.000542f}, + {+0.078483f, -0.001260f, -0.000596f}, + {+0.207608f, -0.004999f, -0.001085f}, + {+0.221842f, -0.000718f, -0.000351f}, + {+0.087045f, +0.004787f, +0.000547f}, + {-0.037398f, +0.005336f, +0.001064f}, + {+0.041563f, -0.010757f, -0.000998f}, + {-0.043387f, -0.001956f, +0.000527f}, + {-0.140276f, -0.003188f, -0.000142f} + }, + { + {+0.177711f, +0.001442f, +0.000461f}, + {+0.115859f, +0.004532f, -0.001235f}, + {-0.218668f, -0.005427f, +0.000911f}, + {+0.063962f, +0.003468f, -0.001219f}, + {+0.198372f, +0.004393f, -0.000814f}, + {-0.132046f, -0.004112f, +0.000882f}, + {+0.118012f, +0.003780f, -0.001160f}, + {+0.169530f, -0.000759f, +0.000923f}, + {+0.077288f, -0.001422f, -0.000499f}, + {+0.187625f, -0.000022f, -0.000030f}, + {+0.200958f, +0.007075f, +0.000014f}, + {+0.099701f, +0.002974f, -0.000910f}, + {-0.019722f, +0.003866f, -0.001104f}, + {+0.014166f, +0.005774f, -0.002177f}, + {-0.039277f, -0.003862f, +0.000381f}, + {-0.138918f, -0.005302f, +0.000608f} + }, + { + {+0.169075f, -0.003877f, -0.000219f}, + {+0.092373f, -0.003200f, -0.000934f}, + {-0.217383f, +0.010383f, +0.006743f}, + {+0.037373f, +0.004176f, +0.003172f}, + {+0.168763f, -0.000238f, +0.001996f}, + {-0.140535f, +0.007256f, +0.006564f}, + {+0.113037f, -0.005040f, -0.003602f}, + {+0.161555f, -0.002184f, +0.001327f}, + {+0.073875f, +0.002628f, +0.001536f}, + {+0.165667f, +0.001239f, +0.003853f}, + {+0.179435f, -0.009646f, -0.002896f}, + {+0.097770f, -0.003616f, -0.003027f}, + {-0.009431f, -0.004981f, -0.006157f}, + {-0.008081f, +0.000345f, -0.000806f}, + {-0.031139f, +0.005138f, +0.002262f}, + {-0.125572f, +0.007103f, +0.003194f} + }, + { + {+0.156703f, +0.003123f, -0.000930f}, + {+0.066141f, +0.001589f, +0.001238f}, + {-0.199134f, -0.002236f, +0.009123f}, + {+0.024449f, +0.000091f, +0.006919f}, + {+0.141646f, +0.003103f, +0.005668f}, + {-0.133486f, +0.000744f, +0.008630f}, + {+0.097019f, -0.000327f, -0.002792f}, + {+0.144791f, +0.002980f, +0.002476f}, + {+0.068698f, +0.001637f, +0.003084f}, + {+0.144321f, +0.006179f, +0.006251f}, + {+0.155892f, +0.002625f, -0.004264f}, + {+0.084319f, +0.000388f, -0.002288f}, + {-0.006549f, -0.002981f, -0.008326f}, + {-0.021606f, -0.003867f, +0.002491f}, + {-0.023191f, -0.001810f, +0.003729f}, + {-0.101442f, -0.001244f, +0.002402f} + }, + { + {+0.140100f, -0.000742f, +0.000187f}, + {+0.036425f, -0.005652f, +0.004036f}, + {-0.165186f, -0.002894f, +0.004265f}, + {+0.025616f, -0.008625f, +0.004162f}, + {+0.121725f, -0.015558f, +0.002974f}, + {-0.111098f, -0.006811f, +0.003090f}, + {+0.072921f, -0.001667f, +0.000669f}, + {+0.120893f, -0.005073f, +0.004382f}, + {+0.065161f, -0.005346f, +0.001749f}, + {+0.129726f, -0.017304f, +0.000877f}, + {+0.126372f, +0.005082f, +0.000663f}, + {+0.063630f, -0.002788f, +0.000025f}, + {-0.013562f, +0.008476f, -0.004178f}, + {-0.027532f, -0.002871f, +0.003910f}, + {-0.014651f, +0.000004f, +0.003901f}, + {-0.068381f, +0.002931f, -0.001605f} } }; -const float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][16][BINAURAL_NTAPS]= +const float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {+0.028305f, +0.686064f, +0.068005f, +0.008358f, +0.000134f}, - {-0.041076f, -0.081510f, +0.101574f, -0.012332f, -0.000133f}, - {+0.004694f, +0.091178f, -0.006019f, -0.000987f, -0.000100f}, - {+0.005000f, +0.062531f, -0.030068f, +0.002120f, -0.000090f}, - {-0.008304f, -0.004854f, -0.003618f, +0.000840f, +0.000150f}, - {-0.005344f, -0.010835f, -0.007864f, -0.004915f, +0.000112f}, - {-0.014194f, +0.005486f, -0.000750f, -0.002195f, +0.000158f}, - {+0.002251f, -0.002762f, +0.046227f, +0.004129f, +0.000004f}, - {-0.024537f, +0.046996f, -0.049712f, -0.006618f, +0.000145f}, - {-0.010068f, +0.052648f, -0.026763f, -0.010223f, -0.000366f}, - {-0.000943f, -0.017480f, +0.020482f, +0.001034f, +0.000058f}, - {-0.002377f, +0.034436f, +0.006489f, -0.012518f, -0.000220f}, - {-0.003606f, -0.027453f, +0.015178f, +0.001090f, -0.000006f}, - {-0.000854f, -0.033509f, +0.016348f, +0.002809f, +0.000078f}, - {+0.001127f, -0.002978f, +0.013287f, +0.005932f, -0.000006f}, - {-0.002728f, -0.006413f, +0.003444f, +0.002047f, +0.000053f} - }, - { - {-0.060981f, +0.539033f, -0.032927f, -0.008925f, -0.000158f}, - {+0.088569f, -0.331317f, -0.135589f, +0.009798f, +0.000139f}, - {-0.006979f, +0.010016f, -0.062582f, +0.002090f, +0.000127f}, - {-0.010389f, +0.024941f, -0.053685f, -0.002256f, +0.000117f}, - {+0.013525f, +0.047393f, +0.001706f, -0.001388f, -0.000191f}, - {+0.006413f, +0.030122f, +0.020701f, +0.011138f, -0.000148f}, - {+0.024834f, +0.109440f, +0.032236f, +0.002032f, -0.000215f}, - {-0.002223f, -0.102504f, -0.064424f, -0.005351f, -0.000007f}, - {+0.037480f, +0.308972f, +0.087606f, +0.006506f, -0.000210f}, - {+0.016939f, +0.106048f, +0.043760f, +0.005027f, +0.000470f}, - {+0.000739f, +0.002371f, +0.021897f, +0.001907f, -0.000076f}, - {+0.005038f, +0.073983f, +0.110448f, +0.018835f, +0.000283f}, - {+0.003491f, -0.004047f, +0.005200f, -0.002767f, +0.000014f}, - {+0.001174f, +0.011186f, +0.026019f, -0.003363f, -0.000098f}, - {-0.002185f, -0.029503f, -0.056810f, -0.012753f, +0.000001f}, - {+0.003633f, +0.007292f, -0.011811f, -0.003296f, -0.000071f} - }, - { - {+0.056640f, +0.424888f, -0.091068f, -0.008146f, -0.000105f}, - {-0.085624f, -0.535380f, +0.135686f, +0.024218f, +0.000137f}, - {+0.000837f, -0.039137f, -0.022512f, -0.003663f, +0.000063f}, - {+0.009275f, -0.013781f, -0.023629f, -0.005508f, +0.000051f}, - {-0.004547f, +0.088202f, -0.042587f, +0.003924f, -0.000093f}, - {+0.003101f, +0.099791f, -0.033209f, -0.007324f, -0.000060f}, - {-0.010598f, +0.183236f, -0.035352f, +0.008713f, -0.000074f}, - {-0.003128f, -0.087287f, -0.092687f, -0.003205f, -0.000001f}, - {-0.002915f, +0.422198f, -0.021401f, +0.017334f, -0.000046f}, - {-0.008367f, +0.030365f, +0.081942f, +0.019445f, +0.000222f}, - {+0.002027f, +0.059247f, -0.024597f, -0.009143f, -0.000033f}, - {-0.005485f, +0.016036f, +0.189920f, -0.005523f, +0.000134f}, - {+0.004590f, +0.043786f, -0.049890f, +0.002054f, -0.000006f}, - {+0.000794f, +0.086150f, -0.052409f, -0.001703f, -0.000051f}, - {+0.002015f, +0.016274f, -0.139462f, +0.010767f, +0.000013f}, - {+0.000980f, +0.021151f, -0.025610f, +0.002927f, -0.000028f} - }, - { - {-0.037044f, +0.299825f, +0.010626f, +0.009027f, +0.000178f}, - {+0.073631f, -0.563948f, -0.256507f, -0.030068f, -0.000165f}, - {+0.001394f, +0.007863f, +0.051772f, +0.005838f, -0.000136f}, - {-0.007311f, +0.033976f, +0.087547f, +0.012955f, -0.000125f}, - {+0.000742f, -0.006564f, -0.155719f, -0.010210f, +0.000207f}, - {-0.003772f, +0.011095f, -0.118202f, -0.002442f, +0.000158f}, - {-0.001621f, -0.014236f, -0.266669f, -0.019686f, +0.000230f}, - {+0.004592f, +0.006155f, +0.002774f, +0.008968f, +0.000009f}, - {-0.017921f, +0.015905f, -0.425734f, -0.038383f, +0.000222f}, - {+0.007216f, -0.258967f, -0.290441f, -0.007092f, -0.000519f}, - {-0.003522f, +0.023316f, -0.032467f, +0.009674f, +0.000084f}, - {+0.006507f, -0.177693f, -0.033997f, +0.006462f, -0.000311f}, - {-0.006842f, +0.024376f, -0.051686f, +0.001498f, -0.000018f}, - {-0.002603f, +0.039216f, -0.091765f, +0.003591f, +0.000108f}, - {-0.003570f, +0.063130f, -0.095408f, -0.005271f, -0.000002f}, - {-0.003443f, +0.045327f, +0.012038f, -0.006717f, +0.000078f} - }, - { - {+0.016927f, -0.038791f, +0.287896f, +0.014303f, +0.000072f}, - {-0.067605f, +0.097306f, -0.721167f, -0.014182f, -0.000134f}, - {+0.004523f, -0.006482f, +0.087578f, -0.003063f, -0.000024f}, - {+0.010963f, -0.024388f, +0.147380f, -0.008366f, -0.000010f}, - {-0.009045f, -0.033260f, -0.131601f, +0.010659f, +0.000033f}, - {-0.006391f, -0.001186f, -0.117010f, +0.003913f, +0.000007f}, - {-0.000206f, -0.124154f, -0.212720f, +0.011624f, -0.000013f}, - {+0.001006f, +0.018224f, +0.038185f, -0.004418f, -0.000004f}, - {+0.005972f, -0.280246f, -0.279425f, +0.024886f, -0.000056f}, - {-0.013866f, -0.056049f, -0.470046f, -0.033031f, -0.000066f}, - {+0.002003f, -0.013997f, +0.006699f, -0.002838f, +0.000007f}, - {-0.005432f, -0.012448f, -0.193385f, -0.021709f, -0.000041f}, - {+0.002080f, -0.035733f, +0.001464f, -0.003877f, +0.000020f}, - {+0.000948f, -0.008178f, -0.047042f, -0.001214f, +0.000022f}, - {+0.008010f, -0.037066f, -0.006003f, +0.001581f, -0.000020f}, - {+0.002016f, -0.033476f, +0.072960f, +0.011160f, +0.000001f} - }, - { - {-0.031783f, -0.056831f, +0.279059f, -0.028993f, -0.000193f}, - {+0.066811f, +0.547107f, -0.401585f, +0.049258f, +0.000209f}, - {-0.014835f, -0.045923f, +0.063394f, -0.003455f, +0.000127f}, - {-0.030703f, -0.186180f, +0.047058f, -0.002768f, +0.000115f}, - {+0.020147f, +0.183472f, +0.029803f, -0.002654f, -0.000199f}, - {+0.004470f, +0.071648f, -0.045482f, +0.003212f, -0.000142f}, - {+0.003858f, +0.057272f, -0.023397f, +0.006911f, -0.000202f}, - {-0.004365f, -0.021410f, +0.013528f, -0.002517f, -0.000010f}, - {-0.011844f, +0.030236f, +0.050498f, +0.004358f, -0.000183f}, - {+0.006262f, +0.197324f, -0.174496f, +0.041478f, +0.000509f}, - {+0.000909f, -0.022088f, +0.010300f, -0.001930f, -0.000082f}, - {-0.000576f, +0.053541f, -0.096593f, +0.021942f, +0.000302f}, - {-0.001649f, -0.054620f, +0.008127f, +0.002136f, +0.000016f}, - {+0.004848f, +0.029592f, +0.000282f, +0.000006f, -0.000106f}, - {-0.010837f, -0.090950f, -0.014402f, -0.000183f, +0.000006f}, - {+0.000125f, -0.021283f, +0.064876f, -0.009148f, -0.000073f} - }, - { - {+0.115524f, -0.001880f, -0.031709f, +0.016815f, -0.000032f}, - {-0.083119f, +0.442745f, +0.062014f, -0.030630f, +0.000109f}, - {+0.026381f, -0.044427f, -0.014701f, +0.004175f, -0.000007f}, - {+0.059970f, -0.279751f, -0.022479f, +0.004671f, -0.000021f}, - {-0.025539f, +0.285695f, +0.030687f, -0.001281f, +0.000018f}, - {+0.015563f, +0.014341f, +0.021407f, -0.004386f, +0.000034f}, - {-0.005271f, +0.080088f, +0.036839f, -0.008678f, +0.000080f}, - {-0.004239f, -0.044848f, +0.005762f, +0.002882f, +0.000009f}, - {+0.051110f, +0.084066f, +0.036589f, -0.007555f, +0.000131f}, - {+0.012587f, +0.147413f, +0.020658f, -0.013969f, -0.000077f}, - {-0.003103f, -0.017462f, +0.008157f, +0.001803f, +0.000018f}, - {+0.001965f, -0.006861f, +0.032042f, -0.005627f, -0.000042f}, - {+0.003954f, -0.069529f, +0.014309f, +0.000469f, -0.000034f}, - {-0.011351f, +0.041303f, +0.021348f, +0.000056f, +0.000005f}, - {+0.003411f, -0.131943f, -0.006306f, -0.000445f, +0.000025f}, - {-0.006265f, +0.023141f, +0.008583f, +0.003180f, +0.000023f} - }, - { - {-0.170064f, -0.305557f, -0.025217f, +0.001133f, +0.000198f}, - {+0.064730f, +0.498651f, +0.047336f, -0.004429f, -0.000255f}, - {-0.023390f, -0.090206f, -0.010300f, +0.000988f, -0.000108f}, - {-0.044740f, -0.402670f, -0.013847f, +0.001569f, -0.000092f}, - {+0.008298f, +0.311166f, +0.004422f, -0.002306f, +0.000173f}, - {-0.024372f, -0.077330f, +0.000442f, -0.001491f, +0.000110f}, - {+0.006327f, +0.051079f, +0.002801f, -0.003002f, +0.000146f}, - {+0.022671f, -0.029757f, -0.017304f, +0.000691f, +0.000009f}, - {-0.067089f, -0.067084f, +0.027632f, -0.007480f, +0.000108f}, - {-0.016067f, +0.071916f, +0.031764f, -0.005887f, -0.000449f}, - {+0.001118f, -0.007300f, +0.004732f, -0.000912f, +0.000072f}, - {+0.012764f, -0.015163f, +0.034285f, -0.004782f, -0.000265f}, - {+0.002476f, -0.078915f, +0.001493f, -0.000518f, -0.000008f}, - {+0.012009f, +0.058211f, +0.005130f, -0.001142f, +0.000096f}, - {+0.017876f, -0.124879f, -0.017363f, +0.001041f, -0.000014f}, - {+0.016489f, +0.044821f, -0.013683f, +0.000199f, +0.000060f} - }, - { - {+0.031523f, -0.568562f, -0.010165f, -0.004741f, -0.000011f}, - {+0.072210f, +0.453377f, +0.012668f, +0.009988f, -0.000056f}, - {-0.013073f, -0.089526f, -0.006790f, -0.002603f, +0.000024f}, - {-0.055858f, -0.385059f, +0.007901f, -0.002683f, +0.000038f}, - {+0.048389f, +0.243348f, -0.011742f, +0.002577f, -0.000053f}, - {+0.000883f, -0.129298f, -0.003415f, +0.002563f, -0.000054f}, - {+0.004842f, +0.028248f, -0.014727f, +0.004067f, -0.000113f}, - {-0.035207f, +0.044693f, -0.000317f, -0.001511f, -0.000014f}, - {+0.027873f, -0.208313f, -0.025747f, +0.006096f, -0.000162f}, - {+0.003882f, +0.022910f, -0.004172f, +0.004195f, +0.000185f}, - {+0.007316f, -0.007332f, -0.005614f, +0.000479f, -0.000037f}, - {-0.030651f, +0.049980f, -0.004306f, +0.003095f, +0.000103f}, - {-0.012670f, -0.046258f, -0.010787f, -0.000294f, +0.000044f}, - {-0.001544f, +0.071605f, -0.001508f, +0.001151f, -0.000025f}, - {-0.039147f, -0.057668f, +0.001114f, -0.001056f, -0.000026f}, - {-0.013243f, +0.076337f, -0.002755f, -0.000535f, -0.000039f} - }, - { - {+0.207932f, -0.287807f, +0.039075f, +0.000182f, -0.000191f}, - {-0.222358f, +0.019823f, -0.045919f, +0.001569f, +0.000284f}, - {+0.051902f, +0.024897f, +0.018540f, -0.000535f, +0.000087f}, - {+0.157008f, -0.084022f, +0.015927f, -0.001511f, +0.000065f}, - {-0.104303f, +0.038679f, -0.004300f, +0.001876f, -0.000138f}, - {+0.031107f, -0.090841f, -0.009802f, +0.001340f, -0.000075f}, - {-0.026573f, -0.012360f, -0.012445f, +0.003442f, -0.000083f}, - {+0.021614f, +0.128929f, +0.008965f, -0.000458f, -0.000006f}, - {+0.022498f, -0.192805f, -0.008217f, +0.005889f, -0.000025f}, - {-0.001966f, +0.020932f, -0.017205f, +0.001490f, +0.000358f}, - {-0.013558f, -0.031486f, -0.001450f, +0.000305f, -0.000057f}, - {+0.020576f, +0.126851f, -0.015311f, +0.000876f, +0.000211f}, - {+0.011427f, -0.005250f, -0.003401f, +0.000196f, -0.000006f}, - {-0.015857f, +0.049501f, -0.003717f, +0.000601f, -0.000080f}, - {+0.034004f, +0.039429f, +0.003524f, -0.000004f, +0.000023f}, - {-0.014818f, +0.079680f, +0.007758f, +0.000184f, -0.000042f} - }, - { - {-0.203020f, +0.343926f, -0.022319f, +0.001551f, +0.000052f}, - {+0.128697f, -0.502946f, +0.012208f, -0.003598f, -0.000018f}, - {-0.021293f, +0.148245f, -0.006309f, +0.001691f, -0.000030f}, - {-0.108184f, +0.296591f, -0.010288f, +0.001875f, -0.000040f}, - {+0.072445f, -0.199735f, +0.008865f, -0.001996f, +0.000070f}, - {-0.035970f, -0.000468f, +0.003327f, -0.001758f, +0.000054f}, - {+0.022536f, -0.076991f, +0.011763f, -0.002716f, +0.000111f}, - {+0.019549f, +0.129451f, +0.001977f, +0.001130f, +0.000018f}, - {-0.040267f, -0.070315f, +0.008077f, -0.004109f, +0.000149f}, - {+0.011400f, +0.010732f, +0.007406f, -0.002026f, -0.000250f}, - {+0.002851f, -0.052737f, +0.000419f, -0.000375f, +0.000049f}, - {+0.020950f, +0.124942f, +0.003929f, -0.001693f, -0.000137f}, - {-0.002830f, +0.012262f, +0.001345f, -0.000201f, -0.000049f}, - {+0.023252f, -0.010554f, +0.006382f, -0.000870f, +0.000037f}, - {+0.002904f, +0.073991f, +0.004806f, +0.000805f, +0.000022f}, - {+0.038844f, +0.012454f, +0.000939f, +0.000294f, +0.000047f} - }, - { - {-0.104978f, +0.491439f, -0.023130f, -0.000395f, +0.000170f}, - {+0.174716f, -0.431741f, +0.037189f, -0.000731f, -0.000283f}, - {-0.071508f, +0.077184f, -0.011405f, +0.000280f, -0.000069f}, - {-0.071830f, +0.341169f, -0.016908f, +0.001162f, -0.000044f}, - {+0.046880f, -0.228632f, +0.012580f, -0.001764f, +0.000105f}, - {+0.015443f, +0.068044f, +0.005570f, -0.000844f, +0.000048f}, - {+0.020736f, -0.083339f, +0.010949f, -0.002791f, +0.000031f}, - {-0.052065f, +0.019705f, -0.009215f, +0.000218f, +0.000001f}, - {+0.033356f, +0.036658f, +0.013911f, -0.004323f, -0.000040f}, - {-0.006601f, -0.021923f, +0.013349f, -0.000309f, -0.000258f}, - {+0.019016f, -0.023410f, +0.005296f, -0.000367f, +0.000039f}, - {-0.051437f, +0.010933f, +0.004546f, +0.000118f, -0.000155f}, - {+0.002536f, +0.019548f, +0.001804f, +0.000278f, +0.000021f}, - {-0.005862f, -0.062421f, -0.001401f, -0.000650f, +0.000064f}, - {-0.033799f, +0.010290f, -0.008108f, -0.000071f, -0.000030f}, - {-0.019280f, -0.065253f, -0.001294f, -0.000391f, +0.000024f} - }, - { - {+0.271163f, -0.091653f, +0.035807f, -0.000730f, -0.000085f}, - {-0.261169f, +0.235971f, -0.033757f, +0.001621f, +0.000093f}, - {+0.095839f, -0.182710f, +0.015397f, -0.001103f, +0.000028f}, - {+0.156712f, -0.007300f, +0.019789f, -0.001371f, +0.000033f}, - {-0.111926f, +0.011250f, -0.016908f, +0.001748f, -0.000072f}, - {+0.005469f, +0.082676f, -0.002169f, +0.001143f, -0.000043f}, - {-0.049695f, +0.016110f, -0.010723f, +0.002011f, -0.000086f}, - {+0.031235f, -0.105162f, +0.004404f, -0.000861f, -0.000020f}, - {-0.012529f, +0.088572f, -0.009833f, +0.002839f, -0.000106f}, - {-0.012620f, -0.018407f, -0.006593f, +0.002080f, +0.000273f}, - {-0.020511f, +0.042167f, -0.004809f, +0.000322f, -0.000054f}, - {+0.032247f, -0.119711f, +0.002446f, +0.001305f, +0.000148f}, - {-0.004589f, +0.033907f, -0.002233f, +0.000259f, +0.000047f}, - {-0.024243f, -0.043735f, -0.001053f, +0.000816f, -0.000043f}, - {+0.018051f, -0.070970f, +0.002759f, -0.000690f, -0.000016f}, - {-0.025928f, -0.049597f, -0.005106f, -0.000174f, -0.000047f} - }, - { - {-0.009292f, -0.523511f, +0.005609f, +0.000701f, -0.000140f}, - {-0.049598f, +0.562660f, -0.018307f, -0.000353f, +0.000250f}, - {+0.026674f, -0.300653f, +0.000453f, -0.000226f, +0.000059f}, - {-0.025200f, -0.281197f, +0.004191f, -0.000792f, +0.000032f}, - {+0.023452f, +0.216602f, -0.003361f, +0.001302f, -0.000079f}, - {-0.022798f, +0.048857f, -0.002028f, +0.000528f, -0.000034f}, - {+0.017850f, +0.123147f, -0.004163f, +0.001736f, -0.000002f}, - {+0.030232f, -0.106769f, +0.006484f, -0.000160f, +0.000004f}, - {-0.027081f, +0.068469f, -0.013975f, +0.002765f, +0.000074f}, - {+0.015824f, +0.032277f, -0.008777f, -0.000341f, +0.000168f}, - {-0.010909f, +0.060681f, -0.000865f, +0.000330f, -0.000023f}, - {+0.018513f, -0.140495f, -0.006788f, -0.000319f, +0.000106f}, - {-0.009128f, +0.032657f, +0.001038f, -0.000299f, -0.000035f}, - {+0.030409f, +0.035966f, +0.000871f, +0.000497f, -0.000049f}, - {+0.024037f, -0.062735f, +0.004854f, -0.000003f, +0.000033f}, - {+0.031906f, +0.040222f, +0.004969f, +0.000300f, -0.000009f} - }, - { - {-0.274242f, -0.111152f, -0.038437f, +0.000541f, +0.000106f}, - {+0.297362f, +0.028772f, +0.040257f, -0.001002f, -0.000153f}, - {-0.157861f, -0.028386f, -0.015885f, +0.000932f, -0.000023f}, - {-0.130190f, -0.116848f, -0.020017f, +0.001091f, -0.000023f}, - {+0.100486f, +0.097500f, +0.017137f, -0.001413f, +0.000066f}, - {+0.042930f, -0.041353f, +0.001818f, -0.000969f, +0.000030f}, - {+0.035539f, +0.107479f, +0.005226f, -0.001521f, +0.000054f}, - {-0.056245f, +0.022881f, -0.006748f, +0.000737f, +0.000020f}, - {+0.051781f, -0.041176f, +0.012387f, -0.002184f, +0.000054f}, - {+0.005351f, +0.056149f, +0.003091f, -0.002220f, -0.000265f}, - {+0.035484f, -0.008203f, +0.004198f, -0.000217f, +0.000054f}, - {-0.049383f, -0.039088f, -0.002024f, -0.001275f, -0.000143f}, - {+0.027963f, -0.019171f, +0.001212f, -0.000337f, -0.000040f}, - {+0.004231f, +0.075991f, +0.001119f, -0.000670f, +0.000043f}, - {-0.028326f, +0.016304f, -0.003947f, +0.000597f, +0.000009f}, - {+0.014165f, +0.065014f, +0.003473f, +0.000208f, +0.000042f} - }, - { - {+0.100761f, +0.468705f, +0.009523f, -0.000855f, +0.000106f}, - {-0.068322f, -0.534398f, +0.000794f, +0.001015f, -0.000195f}, - {+0.100085f, +0.366003f, +0.010962f, +0.000114f, -0.000054f}, - {+0.079789f, +0.208939f, +0.006983f, +0.000516f, -0.000029f}, - {-0.074868f, -0.177414f, -0.007217f, -0.000977f, +0.000063f}, - {-0.040080f, -0.169063f, -0.003424f, -0.000213f, +0.000031f}, - {-0.047852f, -0.014657f, +0.004244f, -0.000996f, -0.000005f}, - {+0.004688f, +0.112753f, -0.003849f, +0.000122f, -0.000008f}, - {-0.009956f, -0.138804f, +0.008769f, -0.001626f, -0.000077f}, - {-0.022634f, +0.009810f, +0.007400f, +0.000511f, -0.000099f}, - {-0.010732f, -0.077733f, -0.000399f, -0.000274f, +0.000009f}, - {+0.039390f, +0.089325f, +0.008313f, +0.000351f, -0.000070f}, - {-0.019067f, -0.090342f, -0.002768f, +0.000205f, +0.000044f}, - {-0.042005f, +0.002738f, -0.004159f, -0.000376f, +0.000037f}, - {-0.016073f, +0.032695f, -0.005232f, +0.000105f, -0.000033f}, - {-0.040117f, -0.022661f, -0.007858f, -0.000231f, -0.000002f} - }, - { - {+0.246756f, +0.241170f, +0.035479f, -0.000554f, -0.000114f}, - {-0.272424f, -0.216540f, -0.039997f, +0.001031f, +0.000186f}, - {+0.100824f, +0.372627f, +0.007492f, -0.000845f, +0.000020f}, - {+0.086728f, +0.200706f, +0.013419f, -0.000947f, +0.000014f}, - {-0.067471f, -0.194793f, -0.010208f, +0.001216f, -0.000058f}, - {-0.018637f, -0.214052f, +0.004837f, +0.000884f, -0.000020f}, - {+0.025584f, -0.127835f, -0.000911f, +0.001401f, -0.000028f}, - {+0.056339f, +0.027855f, +0.010673f, -0.000579f, -0.000019f}, - {-0.060859f, -0.070229f, -0.011217f, +0.002123f, -0.000013f}, - {+0.014798f, -0.052375f, -0.000623f, +0.002191f, +0.000241f}, - {-0.034285f, -0.039743f, -0.005351f, +0.000109f, -0.000050f}, - {-0.007201f, +0.159482f, -0.003886f, +0.001201f, +0.000130f}, - {-0.020187f, -0.092383f, +0.000382f, +0.000354f, +0.000030f}, - {+0.028788f, -0.109693f, +0.004153f, +0.000525f, -0.000041f}, - {+0.036625f, -0.054073f, +0.008577f, -0.000524f, -0.000003f}, - {-0.002610f, -0.084126f, +0.000986f, -0.000174f, -0.000035f} - }, - { - {-0.167535f, -0.399812f, -0.020854f, +0.000806f, -0.000074f}, - {+0.145635f, +0.430918f, +0.013134f, -0.001141f, +0.000134f}, - {-0.184602f, -0.052096f, -0.013909f, -0.000043f, +0.000053f}, - {-0.110131f, -0.103022f, -0.011251f, -0.000423f, +0.000031f}, - {+0.114138f, +0.085208f, +0.011213f, +0.000798f, -0.000055f}, - {+0.095938f, -0.054666f, +0.000697f, +0.000059f, -0.000033f}, - {-0.000204f, -0.169483f, -0.009146f, +0.000575f, -0.000003f}, - {-0.030090f, -0.112432f, -0.004382f, -0.000216f, +0.000011f}, - {+0.053018f, +0.105332f, -0.004066f, +0.000908f, +0.000060f}, - {+0.009119f, -0.057095f, -0.007675f, -0.000456f, +0.000052f}, - {+0.027961f, +0.057568f, +0.003773f, +0.000262f, +0.000002f}, - {-0.030433f, +0.136477f, -0.002756f, -0.000256f, +0.000046f}, - {+0.049955f, +0.009293f, +0.002856f, -0.000133f, -0.000047f}, - {+0.028171f, -0.112646f, +0.000816f, +0.000380f, -0.000028f}, - {+0.014607f, -0.096614f, -0.000430f, -0.000147f, +0.000031f}, - {+0.051182f, -0.003494f, +0.006796f, +0.000143f, +0.000008f} - }, - { - {-0.208650f, -0.335847f, -0.029770f, +0.000608f, +0.000111f}, - {+0.234234f, +0.291735f, +0.035875f, -0.001265f, -0.000192f}, - {+0.043525f, -0.386017f, -0.001141f, +0.000753f, -0.000019f}, - {-0.024332f, -0.238532f, -0.004594f, +0.000982f, -0.000011f}, - {+0.003204f, +0.260777f, +0.001135f, -0.001218f, +0.000051f}, - {-0.094495f, +0.222636f, -0.006686f, -0.000805f, +0.000016f}, - {-0.041620f, -0.113126f, +0.003804f, -0.001425f, +0.000014f}, - {-0.059468f, -0.070637f, -0.008480f, +0.000599f, +0.000018f}, - {+0.037218f, +0.133212f, +0.009087f, -0.002277f, -0.000009f}, - {-0.028004f, +0.004399f, -0.001485f, -0.002043f, -0.000214f}, - {+0.030214f, +0.052517f, +0.005355f, -0.000063f, +0.000045f}, - {+0.064016f, +0.008538f, +0.001790f, -0.001210f, -0.000117f}, - {-0.035765f, +0.136937f, -0.003958f, -0.000288f, -0.000023f}, - {-0.055646f, +0.013868f, -0.004689f, -0.000551f, +0.000038f}, - {-0.069712f, +0.026129f, -0.007603f, +0.000472f, -0.000000f}, - {-0.022298f, +0.108549f, -0.003048f, +0.000134f, +0.000029f} - }, - { - {+0.220027f, +0.326004f, +0.029195f, -0.000639f, +0.000050f}, - {-0.196112f, -0.377527f, -0.024063f, +0.000894f, -0.000082f}, - {+0.120792f, -0.254914f, +0.016146f, +0.000093f, -0.000054f}, - {+0.094942f, -0.058645f, +0.007709f, +0.000309f, -0.000035f}, - {-0.109837f, +0.090094f, -0.008580f, -0.000595f, +0.000051f}, - {-0.015004f, +0.336419f, +0.000747f, -0.000099f, +0.000037f}, - {+0.088851f, +0.073948f, +0.011663f, -0.000480f, +0.000014f}, - {+0.078671f, +0.147609f, +0.010996f, +0.000157f, -0.000013f}, - {-0.073075f, -0.041998f, -0.000840f, -0.000593f, -0.000038f}, - {+0.021795f, +0.078114f, +0.010687f, +0.000406f, -0.000022f}, - {-0.048839f, -0.075397f, -0.009105f, -0.000275f, -0.000010f}, - {-0.060558f, -0.174519f, -0.000133f, +0.000349f, -0.000030f}, - {-0.014867f, +0.171348f, +0.000948f, +0.000119f, +0.000048f}, - {+0.011606f, +0.111954f, +0.001552f, -0.000324f, +0.000023f}, - {+0.032653f, +0.181837f, +0.003210f, +0.000081f, -0.000029f}, - {-0.047749f, +0.068914f, -0.006585f, -0.000128f, -0.000011f} - }, - { - {+0.160319f, +0.417913f, +0.022833f, -0.000655f, -0.000102f}, - {-0.203183f, -0.369192f, -0.029570f, +0.001470f, +0.000179f}, - {-0.099428f, +0.084211f, -0.009701f, -0.000901f, +0.000019f}, - {-0.024797f, +0.121541f, +0.001449f, -0.000997f, +0.000010f}, - {+0.062623f, -0.173224f, +0.004907f, +0.001276f, -0.000047f}, - {+0.122967f, +0.126986f, +0.011441f, +0.000914f, -0.000015f}, - {-0.052738f, +0.283556f, -0.009426f, +0.001548f, -0.000011f}, - {+0.026749f, +0.238083f, -0.000760f, -0.000643f, -0.000018f}, - {-0.009777f, -0.145605f, -0.003329f, +0.002400f, +0.000014f}, - {+0.015861f, +0.086444f, -0.001699f, +0.001895f, +0.000191f}, - {-0.021170f, -0.125446f, +0.000128f, +0.000133f, -0.000040f}, - {-0.009541f, -0.253886f, +0.000901f, +0.000985f, +0.000105f}, - {+0.062589f, +0.060931f, +0.003167f, +0.000273f, +0.000019f}, - {+0.045937f, +0.052228f, +0.008096f, +0.000661f, -0.000035f}, - {+0.065525f, +0.132007f, +0.007909f, -0.000377f, +0.000001f}, - {+0.049219f, -0.081032f, +0.007172f, +0.000024f, -0.000024f} - }, - { - {-0.257389f, -0.225050f, -0.034043f, +0.000536f, -0.000034f}, - {+0.247632f, +0.326555f, +0.030602f, -0.000692f, +0.000048f}, - {-0.031117f, +0.179461f, -0.007189f, +0.000264f, +0.000055f}, - {-0.035804f, +0.099360f, -0.004701f, -0.000140f, +0.000038f}, - {+0.050312f, -0.188989f, +0.003722f, +0.000209f, -0.000050f}, - {-0.100154f, -0.206241f, -0.011197f, -0.000132f, -0.000040f}, - {-0.083770f, +0.242079f, -0.010883f, +0.000381f, -0.000023f}, - {-0.128871f, +0.005839f, -0.011060f, +0.000130f, +0.000016f}, - {+0.079686f, -0.004748f, +0.001794f, +0.000421f, +0.000023f}, - {-0.049708f, -0.006526f, -0.011594f, -0.000511f, +0.000001f}, - {+0.089665f, +0.042291f, +0.010250f, +0.000131f, +0.000016f}, - {+0.097341f, -0.094533f, +0.003394f, -0.000253f, +0.000020f}, - {-0.063601f, -0.124244f, -0.005358f, -0.000329f, -0.000050f}, - {-0.033103f, -0.074639f, -0.008297f, +0.000018f, -0.000018f}, - {-0.088809f, -0.106459f, -0.010306f, +0.000001f, +0.000028f}, - {+0.024983f, -0.120136f, +0.002311f, -0.000104f, +0.000013f} - }, - { - {-0.103698f, -0.459883f, -0.015029f, +0.000609f, +0.000094f}, - {+0.162130f, +0.457377f, +0.023723f, -0.001331f, -0.000162f}, - {+0.064814f, +0.022691f, +0.012901f, +0.000560f, -0.000021f}, - {+0.014719f, +0.018235f, +0.000043f, +0.000822f, -0.000013f}, - {-0.074601f, +0.003099f, -0.007367f, -0.000899f, +0.000047f}, - {-0.032786f, -0.305719f, -0.004336f, -0.000704f, +0.000017f}, - {+0.154173f, -0.111921f, +0.017036f, -0.001496f, +0.000014f}, - {+0.075072f, -0.308164f, +0.011544f, +0.000327f, +0.000019f}, - {-0.016061f, +0.143722f, +0.001013f, -0.002196f, -0.000011f}, - {+0.025959f, -0.115431f, +0.002496f, -0.001721f, -0.000173f}, - {-0.041136f, +0.248497f, -0.009339f, -0.000010f, +0.000035f}, - {-0.096543f, +0.197881f, -0.009153f, -0.000920f, -0.000096f}, - {+0.003482f, -0.225559f, +0.000330f, -0.000071f, -0.000017f}, - {-0.034753f, -0.075563f, -0.003521f, -0.000361f, +0.000033f}, - {-0.012501f, -0.228861f, +0.001789f, +0.000220f, -0.000002f}, - {-0.060118f, +0.006012f, -0.006537f, +0.000205f, +0.000020f} - }, - { - {+0.272901f, +0.120676f, +0.037748f, -0.000537f, +0.000024f}, - {-0.297115f, -0.254096f, -0.039956f, +0.000532f, -0.000029f}, - {+0.012561f, -0.060035f, +0.001952f, -0.000137f, -0.000057f}, - {-0.010704f, -0.021303f, -0.001694f, +0.000133f, -0.000041f}, - {+0.011296f, +0.129516f, +0.000519f, -0.000384f, +0.000049f}, - {+0.122480f, -0.073347f, +0.013051f, +0.000154f, +0.000043f}, - {-0.027641f, -0.385713f, +0.003287f, -0.000254f, +0.000026f}, - {+0.091871f, -0.289596f, +0.005177f, +0.000144f, -0.000020f}, - {-0.076925f, +0.038077f, -0.006550f, -0.000475f, -0.000017f}, - {+0.038364f, -0.096477f, +0.011620f, +0.000633f, +0.000016f}, - {-0.083812f, +0.194659f, -0.004197f, -0.000207f, -0.000021f}, - {-0.014333f, +0.322027f, +0.003857f, +0.000214f, -0.000012f}, - {+0.069724f, -0.130370f, +0.003481f, +0.000262f, +0.000055f}, - {+0.055755f, +0.063207f, +0.009924f, -0.000154f, +0.000014f}, - {+0.116659f, -0.036299f, +0.011120f, +0.000178f, -0.000028f}, - {+0.003252f, +0.097067f, -0.002843f, -0.000113f, -0.000015f} - }, - { - {+0.054050f, +0.455222f, +0.008683f, -0.000439f, -0.000087f}, - {-0.103203f, -0.556970f, -0.012926f, +0.001069f, +0.000150f}, - {-0.045598f, +0.034469f, -0.010843f, -0.000589f, +0.000024f}, - {+0.039968f, -0.100631f, +0.007931f, -0.000653f, +0.000016f}, - {+0.036140f, +0.084377f, +0.005388f, +0.000960f, -0.000048f}, - {-0.073377f, +0.218074f, -0.003890f, +0.000548f, -0.000019f}, - {-0.139694f, -0.217657f, -0.014427f, +0.001226f, -0.000017f}, - {-0.165152f, +0.096949f, -0.015920f, -0.000710f, -0.000018f}, - {+0.031303f, -0.142424f, +0.007473f, +0.002097f, +0.000008f}, - {-0.049659f, +0.036455f, -0.006360f, +0.001588f, +0.000158f}, - {+0.120231f, -0.105131f, +0.009262f, +0.000134f, -0.000029f}, - {+0.112765f, +0.136113f, +0.006454f, +0.000956f, +0.000090f}, - {-0.075212f, +0.079481f, -0.002605f, +0.000191f, +0.000013f}, - {+0.010244f, +0.133401f, +0.001533f, +0.000399f, -0.000031f}, - {-0.084844f, +0.273648f, -0.011540f, -0.000496f, +0.000003f}, - {+0.047604f, +0.022269f, +0.009154f, -0.000024f, -0.000017f} - }, - { - {-0.277495f, -0.057148f, -0.039168f, +0.000475f, -0.000017f}, - {+0.335782f, +0.115073f, +0.042124f, -0.000524f, +0.000017f}, - {-0.014669f, +0.088939f, +0.001371f, +0.000122f, +0.000060f}, - {+0.009872f, -0.151750f, -0.001271f, -0.000309f, +0.000043f}, - {-0.029086f, -0.017821f, -0.006048f, +0.000346f, -0.000049f}, - {-0.042390f, +0.261438f, -0.007011f, +0.000009f, -0.000045f}, - {+0.104924f, +0.146847f, +0.003710f, +0.000271f, -0.000026f}, - {+0.039062f, +0.403951f, +0.006577f, +0.000208f, +0.000025f}, - {+0.091871f, -0.050822f, +0.003447f, +0.000141f, +0.000018f}, - {-0.018408f, +0.085038f, -0.009119f, -0.000628f, -0.000033f}, - {-0.008166f, -0.290055f, +0.001289f, +0.000009f, +0.000025f}, - {-0.083446f, -0.145097f, -0.006817f, -0.000355f, +0.000005f}, - {+0.001946f, +0.186834f, -0.001987f, -0.000254f, -0.000062f}, - {-0.073121f, +0.003981f, -0.011768f, +0.000112f, -0.000011f}, - {-0.055297f, +0.324881f, -0.002032f, +0.000100f, +0.000030f}, - {-0.005812f, -0.063805f, -0.001869f, -0.000040f, +0.000017f} - }, - { - {-0.014583f, -0.461985f, -0.000589f, +0.000415f, +0.000084f}, - {+0.018754f, +0.598224f, +0.004168f, -0.000868f, -0.000145f}, - {+0.055019f, -0.010592f, +0.005290f, +0.000633f, -0.000030f}, - {-0.104242f, +0.017058f, -0.011823f, +0.000782f, -0.000020f}, - {+0.000800f, -0.063354f, +0.000572f, -0.000962f, +0.000051f}, - {+0.090619f, +0.057573f, +0.010215f, -0.000723f, +0.000024f}, - {+0.065017f, +0.191423f, +0.017537f, -0.001148f, +0.000017f}, - {+0.139685f, +0.247968f, +0.017011f, +0.000519f, +0.000015f}, - {-0.081755f, +0.219112f, -0.011774f, -0.001680f, -0.000011f}, - {+0.055793f, -0.030364f, +0.009245f, -0.001646f, -0.000143f}, - {-0.108310f, -0.127663f, -0.016687f, +0.000038f, +0.000024f}, - {-0.021618f, -0.220697f, -0.010039f, -0.000820f, -0.000085f}, - {+0.057142f, +0.095325f, +0.009328f, -0.000335f, -0.000006f}, - {+0.036537f, -0.167818f, +0.005791f, -0.000423f, +0.000028f}, - {+0.142336f, +0.030915f, +0.012827f, +0.000283f, -0.000005f}, - {-0.054469f, +0.008573f, -0.006883f, +0.000115f, +0.000013f} - }, - { - {+0.285346f, -0.000721f, +0.040577f, -0.000527f, +0.000010f}, - {-0.330415f, +0.056420f, -0.045563f, +0.000643f, -0.000004f}, - {-0.012995f, -0.109088f, -0.001469f, -0.000116f, -0.000061f}, - {+0.054559f, +0.256864f, +0.005920f, +0.000204f, -0.000044f}, - {+0.023615f, -0.028111f, +0.005911f, -0.000294f, +0.000047f}, - {-0.037741f, -0.135965f, +0.001385f, +0.000118f, +0.000047f}, - {-0.085123f, -0.059304f, -0.014815f, -0.000093f, +0.000026f}, - {-0.148478f, -0.190646f, -0.017151f, -0.000040f, -0.000030f}, - {-0.071070f, +0.234644f, +0.000090f, +0.000012f, -0.000018f}, - {+0.012169f, -0.103078f, +0.005526f, +0.000708f, +0.000048f}, - {+0.074830f, +0.156990f, +0.009538f, -0.000116f, -0.000028f}, - {+0.062857f, -0.082116f, +0.012816f, +0.000338f, +0.000001f}, - {-0.030566f, -0.039000f, -0.001188f, +0.000200f, +0.000068f}, - {+0.059034f, -0.139462f, +0.005767f, +0.000011f, +0.000009f}, - {-0.076286f, -0.295015f, -0.006131f, +0.000097f, -0.000032f}, - {+0.020240f, +0.124242f, +0.005046f, +0.000022f, -0.000019f} - }, - { - {-0.029891f, +0.483300f, -0.005377f, -0.000391f, -0.000081f}, - {+0.047047f, -0.524471f, +0.005924f, +0.000814f, +0.000145f}, - {-0.033704f, -0.078188f, -0.004373f, -0.000586f, +0.000038f}, - {+0.113469f, +0.163524f, +0.016393f, -0.000689f, +0.000025f}, - {-0.026484f, +0.050686f, -0.004980f, +0.000903f, -0.000054f}, - {-0.034959f, -0.130515f, -0.008100f, +0.000616f, -0.000030f}, - {-0.066335f, -0.098213f, -0.008880f, +0.001011f, -0.000017f}, - {-0.023755f, -0.374088f, -0.006475f, -0.000645f, -0.000010f}, - {+0.134342f, -0.080266f, +0.017137f, +0.001581f, +0.000017f}, - {-0.074905f, +0.029652f, -0.011288f, +0.001578f, +0.000126f}, - {+0.054496f, +0.184572f, +0.009789f, +0.000066f, -0.000019f}, - {-0.016479f, +0.037096f, +0.001911f, +0.000841f, +0.000081f}, - {-0.021095f, -0.045463f, -0.006941f, +0.000367f, -0.000005f}, - {-0.086237f, +0.078591f, -0.009216f, +0.000337f, -0.000026f}, - {-0.069456f, -0.298926f, -0.009331f, -0.000395f, +0.000009f}, - {+0.062149f, +0.062591f, +0.008033f, -0.000068f, -0.000009f} - }, - { - {-0.287720f, +0.086727f, -0.040473f, +0.000543f, -0.000002f}, - {+0.307994f, -0.118968f, +0.043852f, -0.000752f, -0.000013f}, - {+0.022546f, +0.002148f, +0.001070f, +0.000030f, +0.000061f}, - {-0.122549f, -0.198231f, -0.013063f, -0.000256f, +0.000044f}, - {-0.010325f, +0.076779f, -0.004480f, +0.000277f, -0.000045f}, - {+0.047884f, +0.004957f, +0.004446f, -0.000008f, -0.000047f}, - {+0.101276f, +0.163028f, +0.013822f, +0.000017f, -0.000028f}, - {+0.155414f, -0.094864f, +0.020739f, +0.000087f, +0.000033f}, - {+0.000170f, -0.277663f, -0.004084f, -0.000303f, +0.000013f}, - {+0.006631f, +0.159391f, -0.003115f, -0.000670f, -0.000060f}, - {-0.094163f, -0.047695f, -0.013081f, +0.000014f, +0.000031f}, - {-0.015662f, +0.033250f, -0.008826f, -0.000442f, -0.000008f}, - {+0.006909f, +0.002414f, +0.001228f, -0.000038f, -0.000070f}, - {+0.006389f, +0.219286f, -0.001425f, -0.000018f, -0.000007f}, - {+0.134427f, +0.013316f, +0.014160f, -0.000072f, +0.000032f}, - {-0.053148f, -0.113719f, -0.007802f, -0.000103f, +0.000020f} - }, - { - {+0.079885f, -0.476239f, +0.011873f, +0.000403f, +0.000078f}, - {-0.090327f, +0.495394f, -0.013216f, -0.000916f, -0.000142f}, - {+0.000547f, +0.029987f, +0.004365f, +0.000538f, -0.000045f}, - {-0.078456f, -0.260754f, -0.012403f, +0.000685f, -0.000030f}, - {+0.048231f, -0.015397f, +0.007225f, -0.000847f, +0.000058f}, - {-0.004788f, +0.088135f, -0.001735f, -0.000622f, +0.000036f}, - {+0.068597f, +0.218020f, +0.007943f, -0.001019f, +0.000017f}, - {-0.078771f, +0.264267f, -0.009097f, +0.000536f, +0.000005f}, - {-0.131816f, -0.067791f, -0.019315f, -0.001572f, -0.000023f}, - {+0.095197f, +0.024052f, +0.012511f, -0.001509f, -0.000110f}, - {-0.005662f, -0.184911f, -0.000567f, -0.000000f, +0.000014f}, - {-0.009469f, +0.021505f, -0.002081f, -0.000772f, -0.000077f}, - {+0.033042f, -0.040492f, +0.006178f, -0.000358f, +0.000017f}, - {+0.078726f, +0.109328f, +0.007889f, -0.000339f, +0.000024f}, - {-0.046322f, +0.287690f, -0.005571f, +0.000332f, -0.000013f}, - {-0.044568f, -0.127346f, -0.006458f, +0.000067f, +0.000005f} - }, - { - {+0.276202f, -0.173485f, +0.038792f, -0.000516f, -0.000006f}, - {-0.290883f, +0.185607f, -0.040080f, +0.000773f, +0.000032f}, - {+0.006320f, +0.034810f, -0.001793f, -0.000042f, -0.000058f}, - {+0.162615f, +0.113765f, +0.021156f, +0.000233f, -0.000044f}, - {-0.015723f, -0.117462f, -0.000807f, -0.000218f, +0.000042f}, - {-0.035133f, +0.040557f, -0.002714f, +0.000053f, +0.000045f}, - {-0.149176f, -0.117916f, -0.017638f, +0.000076f, +0.000032f}, - {-0.096551f, +0.235346f, -0.015008f, -0.000034f, -0.000033f}, - {+0.060894f, +0.224376f, +0.012831f, +0.000523f, -0.000005f}, - {-0.046438f, -0.197810f, -0.002809f, +0.000665f, +0.000069f}, - {+0.091389f, -0.035774f, +0.012879f, -0.000048f, -0.000034f}, - {+0.015830f, +0.061261f, +0.007852f, +0.000438f, +0.000014f}, - {+0.002026f, -0.092831f, -0.002527f, +0.000001f, +0.000068f}, - {-0.065981f, -0.109512f, -0.004136f, +0.000073f, +0.000006f}, - {-0.096454f, +0.210224f, -0.012022f, +0.000110f, -0.000032f}, - {+0.076635f, +0.057848f, +0.009841f, +0.000158f, -0.000021f} - }, - { - {-0.125058f, +0.440590f, -0.018260f, -0.000430f, -0.000074f}, - {+0.130636f, -0.461671f, +0.019013f, +0.001042f, +0.000135f}, - {-0.005358f, +0.049252f, -0.002302f, -0.000396f, +0.000051f}, - {+0.032652f, +0.314396f, +0.003878f, -0.000647f, +0.000035f}, - {-0.057782f, -0.056244f, -0.005456f, +0.000765f, -0.000061f}, - {+0.029537f, -0.058278f, +0.004239f, +0.000490f, -0.000041f}, - {-0.028429f, -0.304901f, -0.002344f, +0.001021f, -0.000019f}, - {+0.130605f, -0.114123f, +0.015550f, -0.000447f, -0.000002f}, - {+0.097618f, +0.163746f, +0.014826f, +0.001576f, +0.000024f}, - {-0.095269f, -0.125227f, -0.010570f, +0.001415f, +0.000094f}, - {-0.036826f, +0.161036f, -0.004519f, +0.000009f, -0.000008f}, - {+0.033206f, +0.037588f, +0.003181f, +0.000776f, +0.000072f}, - {-0.072280f, +0.019767f, -0.008230f, +0.000211f, -0.000025f}, - {-0.018897f, -0.179348f, -0.001641f, +0.000298f, -0.000022f}, - {+0.125361f, -0.129557f, +0.014806f, -0.000290f, +0.000016f}, - {+0.013372f, +0.152966f, +0.003485f, -0.000081f, -0.000000f} - }, - { - {-0.255232f, +0.238323f, -0.036506f, +0.000482f, +0.000012f}, - {+0.271075f, -0.243750f, +0.037165f, -0.000660f, -0.000051f}, - {-0.023107f, +0.018988f, -0.002567f, +0.000111f, +0.000056f}, - {-0.186496f, -0.022822f, -0.024016f, -0.000167f, +0.000044f}, - {+0.051695f, +0.108630f, +0.002988f, +0.000126f, -0.000040f}, - {+0.009503f, -0.085941f, +0.000815f, -0.000139f, -0.000044f}, - {+0.180203f, +0.018265f, +0.021900f, -0.000114f, -0.000036f}, - {+0.016842f, -0.287897f, +0.004711f, +0.000063f, +0.000033f}, - {-0.099412f, -0.136019f, -0.018932f, -0.000549f, -0.000004f}, - {+0.093434f, +0.165866f, +0.008284f, -0.000735f, -0.000077f}, - {-0.070607f, +0.107384f, -0.011250f, +0.000036f, +0.000037f}, - {-0.051205f, -0.088169f, -0.009120f, -0.000422f, -0.000021f}, - {+0.038077f, +0.190808f, +0.007278f, -0.000071f, -0.000066f}, - {+0.068484f, -0.044857f, +0.006706f, -0.000103f, -0.000005f}, - {+0.001471f, -0.319381f, +0.000965f, -0.000110f, +0.000032f}, - {-0.082910f, +0.001623f, -0.012705f, -0.000176f, +0.000021f} - }, - { - {+0.160937f, -0.399834f, +0.024221f, +0.000432f, +0.000069f}, - {-0.165837f, +0.426649f, -0.024449f, -0.001120f, -0.000123f}, - {+0.023251f, -0.053963f, +0.006296f, +0.000280f, -0.000056f}, - {+0.026012f, -0.349222f, +0.003958f, +0.000583f, -0.000040f}, - {+0.039815f, +0.122590f, +0.005933f, -0.000681f, +0.000065f}, - {-0.034180f, -0.017407f, -0.005868f, -0.000354f, +0.000044f}, - {-0.036119f, +0.354110f, -0.007651f, -0.001004f, +0.000024f}, - {-0.131608f, -0.060108f, -0.015438f, +0.000373f, +0.000002f}, - {-0.047240f, -0.215086f, -0.007922f, -0.001603f, -0.000021f}, - {+0.065165f, +0.208130f, +0.007649f, -0.001302f, -0.000078f}, - {+0.065730f, -0.103768f, +0.008899f, +0.000008f, +0.000000f}, - {-0.017223f, -0.140007f, -0.001227f, -0.000774f, -0.000066f}, - {+0.083700f, +0.123118f, +0.007692f, -0.000085f, +0.000029f}, - {-0.033766f, +0.111436f, -0.004405f, -0.000238f, +0.000019f}, - {-0.130713f, -0.118837f, -0.014005f, +0.000285f, -0.000018f}, - {+0.016465f, -0.154956f, +0.002867f, +0.000097f, -0.000004f} - }, - { - {+0.233948f, -0.286085f, +0.033289f, -0.000467f, -0.000018f}, - {-0.251749f, +0.291487f, -0.034882f, +0.000530f, +0.000064f}, - {+0.025018f, -0.051984f, +0.002062f, -0.000213f, -0.000058f}, - {+0.182278f, -0.109310f, +0.023310f, +0.000129f, -0.000046f}, - {-0.065186f, -0.041803f, -0.007285f, -0.000055f, +0.000040f}, - {+0.015347f, +0.057135f, +0.002287f, +0.000244f, +0.000046f}, - {-0.178612f, +0.136904f, -0.019882f, +0.000114f, +0.000039f}, - {+0.053858f, +0.222770f, +0.004143f, -0.000170f, -0.000036f}, - {+0.110687f, +0.021864f, +0.019313f, +0.000540f, +0.000009f}, - {-0.120059f, -0.080527f, -0.013286f, +0.000793f, +0.000086f}, - {+0.042102f, -0.139525f, +0.007143f, +0.000010f, -0.000040f}, - {+0.075712f, -0.002196f, +0.010631f, +0.000380f, +0.000025f}, - {-0.101650f, -0.158974f, -0.013076f, +0.000245f, +0.000069f}, - {-0.030059f, +0.115541f, -0.003547f, +0.000111f, +0.000004f}, - {+0.094721f, +0.222768f, +0.008889f, +0.000048f, -0.000033f}, - {+0.083573f, -0.053860f, +0.010877f, +0.000192f, -0.000022f} - }, - { - {-0.194975f, +0.371746f, -0.029687f, -0.000407f, -0.000065f}, - {+0.199395f, -0.402227f, +0.030381f, +0.001070f, +0.000111f}, - {-0.043558f, +0.051835f, -0.007510f, -0.000301f, +0.000063f}, - {-0.080069f, +0.290708f, -0.009721f, -0.000585f, +0.000048f}, - {-0.028118f, -0.096712f, -0.004235f, +0.000661f, -0.000071f}, - {+0.020670f, +0.048284f, +0.004447f, +0.000361f, -0.000049f}, - {+0.106751f, -0.298076f, +0.013906f, +0.000980f, -0.000031f}, - {+0.091450f, +0.162172f, +0.012475f, -0.000348f, -0.000002f}, - {-0.007498f, +0.199756f, +0.002586f, +0.001500f, +0.000016f}, - {-0.027250f, -0.222848f, -0.002393f, +0.001277f, +0.000059f}, - {-0.083457f, +0.055583f, -0.011895f, -0.000049f, +0.000010f}, - {-0.023912f, +0.145973f, -0.001523f, +0.000736f, +0.000060f}, - {-0.039347f, -0.252351f, -0.003368f, +0.000088f, -0.000034f}, - {+0.047081f, -0.002879f, +0.005773f, +0.000201f, -0.000016f}, - {+0.061353f, +0.270295f, +0.008425f, -0.000276f, +0.000021f}, - {-0.056743f, +0.162677f, -0.007387f, -0.000128f, +0.000010f} - }, - { - {-0.209644f, +0.348707f, -0.029121f, +0.000472f, +0.000023f}, - {+0.234739f, -0.346303f, +0.031613f, -0.000452f, -0.000075f}, - {-0.012221f, +0.097631f, -0.001448f, +0.000286f, +0.000064f}, - {-0.151155f, +0.176475f, -0.021969f, -0.000127f, +0.000048f}, - {+0.074908f, +0.067483f, +0.011111f, +0.000037f, -0.000040f}, - {-0.024868f, -0.020084f, -0.003583f, -0.000348f, -0.000052f}, - {+0.132213f, -0.252477f, +0.017287f, -0.000139f, -0.000041f}, - {-0.086895f, -0.114633f, -0.010835f, +0.000242f, +0.000044f}, - {-0.087061f, +0.080457f, -0.017193f, -0.000553f, -0.000009f}, - {+0.128529f, +0.021349f, +0.015609f, -0.000805f, -0.000095f}, - {-0.009730f, +0.170684f, -0.001530f, -0.000070f, +0.000041f}, - {-0.063989f, +0.082569f, -0.011861f, -0.000327f, -0.000027f}, - {+0.131743f, +0.010936f, +0.017709f, -0.000376f, -0.000079f}, - {-0.009127f, -0.086499f, -0.000601f, -0.000142f, -0.000005f}, - {-0.128048f, -0.022758f, -0.015753f, -0.000038f, +0.000035f}, - {-0.059404f, +0.160944f, -0.006871f, -0.000228f, +0.000022f} - }, - { - {+0.229440f, -0.322824f, +0.033988f, +0.000389f, +0.000061f}, - {-0.240846f, +0.383749f, -0.036120f, -0.000976f, -0.000103f}, - {+0.056585f, -0.008789f, +0.009971f, +0.000419f, -0.000080f}, - {+0.105118f, -0.219752f, +0.015610f, +0.000635f, -0.000061f}, - {+0.026805f, +0.145169f, +0.000897f, -0.000699f, +0.000083f}, - {-0.004898f, -0.050127f, -0.002984f, -0.000479f, +0.000062f}, - {-0.141946f, +0.172154f, -0.021221f, -0.000916f, +0.000039f}, - {-0.048244f, -0.174628f, -0.006354f, +0.000456f, -0.000003f}, - {+0.037664f, -0.109078f, +0.001169f, -0.001297f, -0.000015f}, - {-0.006723f, +0.230147f, -0.003197f, -0.001300f, -0.000034f}, - {+0.095384f, +0.009012f, +0.012879f, +0.000031f, -0.000023f}, - {+0.048765f, -0.092236f, +0.006693f, -0.000674f, -0.000056f}, - {-0.024712f, +0.249773f, -0.004585f, -0.000253f, +0.000048f}, - {-0.029610f, -0.053064f, -0.004978f, -0.000209f, +0.000011f}, - {+0.020111f, -0.251548f, +0.002558f, +0.000313f, -0.000027f}, - {+0.088864f, -0.064651f, +0.009687f, +0.000147f, -0.000018f} - }, - { - {+0.175493f, -0.403144f, +0.024964f, -0.000494f, -0.000029f}, - {-0.208289f, +0.431823f, -0.027399f, +0.000496f, +0.000086f}, - {-0.008906f, -0.108845f, -0.001685f, -0.000188f, -0.000067f}, - {+0.127825f, -0.183453f, +0.018081f, +0.000198f, -0.000048f}, - {-0.107325f, -0.060873f, -0.013159f, -0.000090f, +0.000038f}, - {+0.020607f, -0.012217f, +0.003265f, +0.000308f, +0.000058f}, - {-0.079060f, +0.266458f, -0.009775f, +0.000157f, +0.000041f}, - {+0.096681f, +0.050055f, +0.012663f, -0.000225f, -0.000055f}, - {+0.051411f, -0.089715f, +0.013539f, +0.000663f, +0.000008f}, - {-0.129678f, +0.037696f, -0.015815f, +0.000703f, +0.000099f}, - {-0.037248f, -0.197082f, -0.005086f, +0.000193f, -0.000037f}, - {+0.043816f, -0.101985f, +0.008254f, +0.000336f, +0.000028f}, - {-0.117065f, +0.106956f, -0.016478f, +0.000283f, +0.000091f}, - {+0.024549f, +0.029471f, +0.003315f, +0.000242f, +0.000008f}, - {+0.102968f, -0.125147f, +0.012245f, +0.000115f, -0.000038f}, - {+0.007500f, -0.187296f, +0.002430f, +0.000314f, -0.000019f} - }, - { - {-0.255049f, +0.256577f, -0.038217f, -0.000401f, -0.000056f}, - {+0.286340f, -0.326727f, +0.042071f, +0.000948f, +0.000098f}, - {-0.058758f, -0.032715f, -0.010103f, -0.000506f, +0.000109f}, - {-0.123738f, +0.204736f, -0.019030f, -0.000624f, +0.000081f}, - {+0.004658f, -0.232611f, +0.002627f, +0.000673f, -0.000101f}, - {-0.001246f, +0.020482f, +0.002726f, +0.000581f, -0.000087f}, - {+0.149860f, -0.087638f, +0.023219f, +0.000836f, -0.000049f}, - {+0.011705f, +0.182241f, +0.000824f, -0.000663f, +0.000015f}, - {-0.036322f, +0.046246f, -0.002434f, +0.001110f, +0.000020f}, - {+0.041445f, -0.225060f, +0.008066f, +0.001247f, +0.000002f}, - {-0.082241f, -0.130716f, -0.009581f, +0.000052f, +0.000037f}, - {-0.061982f, +0.060921f, -0.008434f, +0.000587f, +0.000055f}, - {+0.070313f, -0.179626f, +0.010580f, +0.000496f, -0.000079f}, - {+0.010271f, +0.049933f, +0.003107f, +0.000216f, -0.000007f}, - {-0.072320f, +0.142479f, -0.007956f, -0.000403f, +0.000037f}, - {-0.080097f, -0.050215f, -0.010237f, -0.000128f, +0.000027f} - }, - { - {-0.138659f, +0.433413f, -0.019489f, +0.000507f, +0.000036f}, - {+0.163451f, -0.512532f, +0.021259f, -0.000613f, -0.000105f}, - {+0.031656f, +0.104824f, +0.003994f, -0.000128f, +0.000059f}, - {-0.110770f, +0.224024f, -0.015294f, -0.000397f, +0.000039f}, - {+0.125629f, -0.045496f, +0.015544f, +0.000259f, -0.000027f}, - {-0.013056f, +0.002303f, -0.002874f, -0.000034f, -0.000053f}, - {+0.034706f, -0.263278f, +0.003483f, -0.000141f, -0.000039f}, - {-0.095465f, +0.017678f, -0.011595f, +0.000132f, +0.000064f}, - {-0.033817f, +0.054176f, -0.010428f, -0.000890f, -0.000012f}, - {+0.119869f, -0.100206f, +0.015399f, -0.000474f, -0.000091f}, - {+0.083578f, +0.121580f, +0.008601f, -0.000327f, +0.000026f}, - {-0.021962f, +0.124782f, -0.004983f, -0.000417f, -0.000031f}, - {+0.081591f, -0.160439f, +0.012843f, +0.000024f, -0.000092f}, - {-0.025765f, -0.006872f, -0.004893f, -0.000318f, -0.000015f}, - {-0.048404f, +0.176242f, -0.007439f, -0.000200f, +0.000038f}, - {+0.029349f, +0.118206f, +0.002646f, -0.000434f, +0.000011f} - }, - { - {+0.273332f, -0.197278f, +0.041000f, +0.000427f, +0.000049f}, - {-0.321458f, +0.231555f, -0.047137f, -0.001083f, -0.000091f}, - {+0.051312f, +0.073576f, +0.009852f, +0.000350f, -0.000146f}, - {+0.149316f, -0.177043f, +0.022631f, +0.000468f, -0.000104f}, - {-0.053207f, +0.228176f, -0.008455f, -0.000505f, +0.000122f}, - {-0.006068f, -0.008715f, -0.003223f, -0.000482f, +0.000122f}, - {-0.145901f, +0.015682f, -0.022924f, -0.000759f, +0.000061f}, - {+0.021739f, -0.160951f, +0.002760f, +0.000739f, -0.000036f}, - {+0.029254f, -0.044035f, +0.001822f, -0.001067f, -0.000028f}, - {-0.071428f, +0.194582f, -0.013164f, -0.000987f, +0.000034f}, - {+0.035270f, +0.192622f, +0.005952f, -0.000220f, -0.000050f}, - {+0.068773f, -0.014813f, +0.009109f, -0.000533f, -0.000056f}, - {-0.089870f, +0.103512f, -0.014502f, -0.000459f, +0.000122f}, - {+0.001775f, -0.051927f, +0.000206f, -0.000272f, +0.000005f}, - {+0.077868f, -0.020072f, +0.010512f, +0.000382f, -0.000051f}, - {+0.053027f, +0.078728f, +0.007627f, +0.000029f, -0.000036f} - }, - { - {+0.101834f, -0.458014f, +0.014426f, -0.000475f, -0.000042f}, - {-0.106819f, +0.558024f, -0.013421f, +0.000683f, +0.000132f}, - {-0.052912f, -0.088899f, -0.008225f, +0.000491f, -0.000027f}, - {+0.083094f, -0.280030f, +0.010300f, +0.000632f, -0.000016f}, - {-0.114197f, +0.131784f, -0.014954f, -0.000412f, +0.000002f}, - {+0.019246f, +0.031443f, +0.004356f, -0.000329f, +0.000027f}, - {+0.005316f, +0.248103f, +0.002960f, +0.000118f, +0.000033f}, - {+0.080531f, -0.067083f, +0.011460f, +0.000110f, -0.000064f}, - {+0.031144f, -0.046782f, +0.008670f, +0.001209f, +0.000024f}, - {-0.102756f, +0.143879f, -0.013003f, +0.000283f, +0.000065f}, - {-0.095015f, -0.011155f, -0.012207f, +0.000367f, -0.000008f}, - {-0.004913f, -0.131661f, +0.000343f, +0.000524f, +0.000039f}, - {-0.046459f, +0.170846f, -0.007777f, -0.000479f, +0.000069f}, - {+0.027234f, -0.016428f, +0.003165f, +0.000304f, +0.000026f}, - {+0.005481f, -0.131071f, +0.001565f, +0.000318f, -0.000030f}, - {-0.043474f, -0.073298f, -0.006440f, +0.000550f, +0.000003f} - }, - { - {-0.286640f, +0.137246f, -0.043420f, -0.000432f, -0.000040f}, - {+0.340199f, -0.128020f, +0.049926f, +0.001339f, +0.000072f}, - {-0.035997f, -0.119831f, -0.005662f, +0.000296f, +0.000179f}, - {-0.172429f, +0.110349f, -0.024201f, -0.000100f, +0.000122f}, - {+0.092373f, -0.185204f, +0.014035f, +0.000067f, -0.000138f}, - {+0.010912f, +0.048983f, +0.001816f, -0.000075f, -0.000154f}, - {+0.129079f, +0.059883f, +0.019833f, +0.000637f, -0.000073f}, - {-0.041407f, +0.122204f, -0.006834f, -0.000592f, +0.000062f}, - {-0.030715f, +0.048574f, -0.001376f, +0.001126f, +0.000032f}, - {+0.096213f, -0.160581f, +0.016571f, +0.000370f, -0.000063f}, - {+0.010051f, -0.173763f, +0.000750f, +0.000501f, +0.000056f}, - {-0.062657f, -0.045986f, -0.006800f, +0.000608f, +0.000057f}, - {+0.093242f, -0.041300f, +0.014445f, -0.000123f, -0.000165f}, - {-0.019827f, +0.053398f, -0.000412f, +0.000436f, -0.000009f}, - {-0.057687f, -0.032809f, -0.008352f, -0.000201f, +0.000065f}, - {-0.029198f, -0.096300f, -0.002960f, +0.000112f, +0.000041f} - }, - { - {-0.065817f, +0.474129f, -0.008963f, +0.000406f, +0.000046f}, - {+0.048357f, -0.572445f, +0.005311f, -0.000514f, -0.000163f}, - {+0.075398f, +0.048030f, +0.008271f, -0.000640f, -0.000031f}, - {-0.038405f, +0.313945f, -0.005856f, -0.000669f, -0.000022f}, - {+0.086028f, -0.192206f, +0.012072f, +0.000418f, +0.000038f}, - {-0.040227f, -0.025362f, -0.003912f, +0.000532f, +0.000024f}, - {-0.038209f, -0.193928f, -0.006045f, -0.000139f, -0.000021f}, - {-0.067018f, +0.081277f, -0.009330f, -0.000374f, +0.000051f}, - {-0.028904f, +0.056950f, -0.007486f, -0.001345f, -0.000045f}, - {+0.078983f, -0.183476f, +0.010913f, -0.000304f, -0.000020f}, - {+0.083563f, -0.058421f, +0.010558f, -0.000255f, -0.000015f}, - {+0.030882f, +0.097232f, +0.001515f, -0.000622f, -0.000053f}, - {+0.015685f, -0.158569f, +0.005189f, +0.000820f, -0.000018f}, - {-0.013899f, +0.061952f, -0.002806f, -0.000268f, -0.000038f}, - {+0.012586f, +0.075138f, +0.001144f, -0.000413f, +0.000015f}, - {+0.050911f, +0.027618f, +0.006661f, -0.000507f, -0.000023f} - }, - { - {+0.298262f, -0.083362f, +0.045235f, +0.000350f, +0.000028f}, - {-0.345899f, +0.033997f, -0.051595f, -0.001615f, -0.000035f}, - {-0.000119f, +0.165002f, +0.002953f, -0.001311f, -0.000187f}, - {+0.171388f, -0.008423f, +0.025114f, -0.000464f, -0.000125f}, - {-0.115274f, +0.117327f, -0.017963f, +0.000487f, +0.000138f}, - {+0.008614f, -0.100535f, -0.001469f, +0.001024f, +0.000165f}, - {-0.096130f, -0.104542f, -0.016843f, -0.000419f, +0.000082f}, - {+0.057723f, -0.112429f, +0.010191f, +0.000184f, -0.000084f}, - {+0.036341f, -0.043085f, +0.001450f, -0.001349f, -0.000025f}, - {-0.112953f, +0.110523f, -0.019836f, +0.000405f, +0.000071f}, - {-0.043415f, +0.138944f, -0.005951f, -0.000778f, -0.000051f}, - {+0.038181f, +0.085067f, +0.005138f, -0.000773f, -0.000051f}, - {-0.082623f, -0.007927f, -0.014925f, +0.001161f, +0.000188f}, - {+0.027034f, -0.000974f, +0.001645f, -0.000490f, +0.000020f}, - {+0.035360f, +0.038752f, +0.006345f, -0.000067f, -0.000073f}, - {+0.000083f, +0.105539f, -0.000772f, -0.000317f, -0.000036f} - }, - { - {+0.027126f, -0.497380f, +0.003317f, -0.000351f, -0.000045f}, - {+0.007859f, +0.574645f, +0.003243f, +0.000139f, +0.000188f}, - {-0.075777f, +0.049221f, -0.008353f, -0.000117f, +0.000106f}, - {-0.000094f, -0.270760f, +0.000675f, +0.000190f, +0.000068f}, - {-0.052764f, +0.211602f, -0.007618f, +0.000144f, -0.000084f}, - {+0.046479f, -0.043520f, +0.004619f, +0.000085f, -0.000093f}, - {+0.048000f, +0.115677f, +0.008039f, +0.000243f, +0.000005f}, - {+0.053119f, -0.119462f, +0.006689f, +0.000259f, -0.000024f}, - {+0.023530f, -0.067795f, +0.006354f, +0.001215f, +0.000069f}, - {-0.051960f, +0.201931f, -0.007334f, +0.001040f, -0.000035f}, - {-0.061094f, +0.110021f, -0.007462f, -0.000103f, +0.000039f}, - {-0.036876f, -0.032412f, -0.003266f, +0.000534f, +0.000070f}, - {+0.001902f, +0.122288f, -0.002472f, -0.000241f, -0.000056f}, - {-0.004270f, -0.048829f, +0.000734f, +0.000014f, +0.000048f}, - {-0.012745f, -0.036706f, -0.002273f, +0.000205f, +0.000006f}, - {-0.042314f, +0.038832f, -0.005804f, +0.000347f, +0.000043f} - }, - { - {-0.307088f, +0.013827f, -0.046648f, -0.000063f, -0.000017f}, - {+0.343985f, +0.057778f, +0.051999f, +0.001370f, -0.000021f}, - {+0.039378f, -0.130507f, -0.000123f, +0.002505f, +0.000156f}, - {-0.152973f, -0.035960f, -0.024197f, +0.000907f, +0.000105f}, - {+0.122328f, -0.057169f, +0.020503f, -0.000916f, -0.000113f}, - {-0.036115f, +0.084847f, +0.000437f, -0.002283f, -0.000139f}, - {+0.065884f, +0.089825f, +0.012704f, +0.000253f, -0.000086f}, - {-0.076176f, +0.079461f, -0.013926f, +0.000844f, +0.000095f}, - {-0.041886f, +0.032735f, -0.001798f, +0.001521f, +0.000002f}, - {+0.120605f, -0.060574f, +0.022209f, -0.000951f, -0.000049f}, - {+0.065666f, -0.088077f, +0.009755f, +0.000580f, +0.000035f}, - {-0.014536f, -0.066997f, -0.002290f, +0.001040f, +0.000035f}, - {+0.069578f, +0.020859f, +0.015775f, -0.002732f, -0.000173f}, - {-0.018357f, -0.025356f, -0.001559f, +0.000309f, -0.000039f}, - {-0.021973f, -0.023763f, -0.004557f, +0.000507f, +0.000072f}, - {+0.024594f, -0.064613f, +0.005019f, +0.000113f, +0.000019f} - }, - { - {+0.017452f, +0.509103f, +0.002330f, +0.000354f, +0.000040f}, - {-0.065401f, -0.568079f, -0.010528f, +0.000542f, -0.000194f}, - {+0.050175f, -0.114107f, +0.005162f, +0.003266f, -0.000174f}, - {+0.018374f, +0.227727f, +0.003630f, +0.001902f, -0.000110f}, - {+0.023543f, -0.209166f, +0.002096f, -0.002246f, +0.000125f}, - {-0.031298f, +0.092434f, -0.002541f, -0.002737f, +0.000158f}, - {-0.039294f, -0.069055f, -0.007101f, -0.000802f, +0.000015f}, - {-0.027981f, +0.151965f, -0.004965f, +0.000568f, -0.000008f}, - {-0.016092f, +0.076462f, -0.004970f, -0.000449f, -0.000085f}, - {+0.025683f, -0.205232f, +0.002533f, -0.003878f, +0.000082f}, - {+0.031489f, -0.139294f, +0.004565f, +0.001598f, -0.000056f}, - {+0.026207f, -0.002872f, +0.002107f, -0.000154f, -0.000084f}, - {-0.008497f, -0.098826f, +0.002487f, -0.002569f, +0.000130f}, - {+0.010858f, +0.022687f, +0.002492f, +0.000762f, -0.000051f}, - {+0.007112f, +0.019771f, +0.000809f, +0.000752f, -0.000028f}, - {+0.017429f, -0.074807f, +0.003855f, +0.000473f, -0.000058f} + {+0.353305f, +0.566845f, +0.200116f}, + {-0.451504f, +0.563006f, -0.083565f}, + {+0.022092f, +0.111945f, -0.003135f}, + {+0.047133f, +0.000194f, -0.000386f}, + {-0.039375f, +0.036049f, +0.015307f}, + {-0.013502f, +0.004406f, -0.016833f}, + {-0.050267f, +0.058356f, +0.017434f}, + {-0.013681f, +0.080836f, -0.019699f}, + {-0.037136f, +0.024371f, +0.052200f}, + {-0.050122f, +0.078803f, +0.019790f}, + {+0.004565f, -0.007656f, +0.001338f}, + {-0.009821f, +0.051585f, +0.003219f}, + {-0.003833f, -0.023411f, -0.003160f}, + {+0.007736f, -0.042621f, +0.010291f}, + {+0.014210f, -0.003392f, -0.001270f}, + {-0.005609f, +0.001063f, +0.001854f} + }, + { + {+0.011160f, -0.509237f, -0.132176f}, + {-0.142996f, +0.819544f, -0.093135f}, + {+0.003358f, +0.077333f, -0.008548f}, + {+0.004495f, +0.024167f, +0.025614f}, + {-0.020911f, -0.057490f, -0.024558f}, + {-0.020938f, -0.024631f, -0.022840f}, + {-0.049990f, -0.113634f, -0.053590f}, + {+0.010020f, +0.210234f, +0.026992f}, + {-0.094579f, -0.407023f, -0.103353f}, + {-0.038956f, -0.088489f, -0.058039f}, + {-0.002875f, -0.015645f, +0.000778f}, + {-0.020714f, -0.104784f, -0.070444f}, + {-0.008794f, +0.002924f, +0.009615f}, + {+0.004361f, -0.056762f, +0.007070f}, + {+0.010128f, +0.073116f, +0.035032f}, + {-0.005641f, -0.006012f, -0.000245f} + }, + { + {-0.192410f, -0.206164f, -0.191132f}, + {+0.278956f, -0.236216f, +0.253095f}, + {-0.002616f, +0.068222f, +0.000710f}, + {-0.043976f, +0.107663f, +0.006000f}, + {+0.022830f, -0.121862f, -0.008267f}, + {-0.007646f, -0.104913f, +0.016048f}, + {+0.008805f, -0.278895f, +0.005919f}, + {+0.015200f, +0.180293f, +0.037960f}, + {-0.037987f, -0.531186f, -0.053722f}, + {+0.053411f, -0.405963f, +0.066106f}, + {-0.004225f, -0.049392f, +0.020098f}, + {+0.032849f, -0.404382f, +0.057080f}, + {-0.020343f, +0.025697f, +0.003018f}, + {+0.000399f, -0.049237f, +0.005564f}, + {-0.018895f, +0.170897f, -0.004768f}, + {-0.014229f, +0.049740f, -0.026663f} + }, + { + {-0.062917f, +0.511673f, +0.062418f}, + {+0.164174f, -1.090974f, -0.108397f}, + {+0.009127f, +0.065188f, -0.003083f}, + {-0.018593f, +0.081738f, -0.000771f}, + {+0.020686f, -0.093603f, -0.012011f}, + {-0.000826f, -0.118498f, +0.001498f}, + {+0.025996f, -0.307659f, -0.023797f}, + {-0.008194f, +0.054598f, -0.009722f}, + {+0.040351f, -0.445888f, -0.056326f}, + {+0.030847f, -0.708631f, -0.081623f}, + {-0.002063f, -0.033938f, +0.025075f}, + {+0.027403f, -0.458795f, +0.033429f}, + {-0.021373f, -0.007009f, -0.010388f}, + {-0.002090f, -0.031407f, +0.008158f}, + {-0.028475f, +0.071069f, -0.046847f}, + {-0.007602f, +0.116385f, +0.002531f} + }, + { + {+0.114739f, +0.069536f, +0.170911f}, + {-0.106068f, -0.653946f, -0.186091f}, + {+0.032435f, +0.023922f, +0.003440f}, + {+0.048701f, +0.139999f, -0.053329f}, + {-0.008680f, -0.251941f, +0.071200f}, + {+0.004397f, -0.120323f, -0.000310f}, + {+0.025654f, -0.324361f, -0.006461f}, + {-0.004810f, +0.061858f, -0.007597f}, + {+0.097919f, -0.641143f, +0.015289f}, + {-0.011357f, -0.557580f, -0.143138f}, + {-0.004726f, +0.016709f, -0.000434f}, + {-0.013229f, -0.166606f, -0.093126f}, + {-0.007411f, +0.011792f, -0.021547f}, + {-0.005396f, -0.034575f, +0.011453f}, + {+0.010644f, +0.011719f, -0.021909f}, + {+0.005419f, +0.030988f, +0.043631f} + }, + { + {+0.066623f, -0.089947f, +0.096291f}, + {-0.228582f, -0.462839f, -0.023355f}, + {+0.030597f, +0.055459f, +0.010541f}, + {+0.104887f, +0.337465f, -0.003674f}, + {-0.072691f, -0.405228f, +0.038864f}, + {-0.004864f, -0.081470f, +0.022241f}, + {+0.026067f, -0.215427f, +0.055659f}, + {+0.015556f, +0.034465f, -0.026853f}, + {+0.081559f, -0.329728f, +0.167841f}, + {-0.004434f, -0.224966f, +0.027520f}, + {-0.000854f, +0.017986f, -0.001169f}, + {+0.017103f, -0.022207f, -0.026879f}, + {+0.016949f, +0.070641f, -0.004353f}, + {-0.006585f, -0.086138f, -0.004695f}, + {+0.059412f, +0.107209f, +0.004895f}, + {+0.005676f, -0.059162f, +0.003180f} + }, + { + {-0.248577f, +0.462186f, -0.044825f}, + {-0.092220f, -0.576619f, -0.031483f}, + {-0.018552f, +0.118241f, -0.000190f}, + {+0.024038f, +0.192235f, +0.076006f}, + {-0.073463f, -0.111697f, -0.085309f}, + {-0.045418f, -0.052428f, +0.014128f}, + {+0.004341f, -0.088144f, -0.002830f}, + {+0.058183f, -0.067481f, +0.003537f}, + {-0.112838f, +0.181474f, -0.013812f}, + {-0.051144f, -0.057123f, -0.036471f}, + {+0.002310f, +0.009489f, +0.002928f}, + {+0.036815f, -0.070367f, -0.013190f}, + {+0.025238f, +0.001933f, +0.022381f}, + {+0.011799f, -0.070089f, -0.017261f}, + {+0.079383f, -0.005050f, +0.042259f}, + {+0.027513f, -0.031781f, -0.014727f} + }, + { + {-0.588729f, +0.069942f, -0.118192f}, + {+0.336864f, +0.087523f, +0.133178f}, + {-0.091818f, +0.000222f, -0.031435f}, + {-0.240072f, -0.209090f, -0.026656f}, + {+0.106536f, +0.210008f, +0.006949f}, + {-0.086566f, -0.077574f, +0.013942f}, + {+0.036640f, -0.012230f, +0.021355f}, + {+0.059977f, -0.024737f, +0.017673f}, + {-0.214469f, +0.026100f, -0.046140f}, + {-0.016107f, +0.082852f, +0.011968f}, + {+0.003608f, -0.021470f, -0.008749f}, + {+0.046323f, +0.010871f, +0.015628f}, + {-0.008214f, -0.079699f, -0.002987f}, + {+0.052373f, +0.029312f, +0.014086f}, + {+0.018742f, -0.113603f, +0.010455f}, + {+0.059520f, +0.032936f, +0.004294f} + }, + { + {-0.672439f, -0.199370f, +0.003424f}, + {+0.631922f, +0.138094f, +0.043549f}, + {-0.130748f, -0.058055f, -0.001266f}, + {-0.452933f, -0.003480f, -0.056408f}, + {+0.285057f, -0.030036f, +0.056968f}, + {-0.110275f, +0.011467f, -0.016793f}, + {+0.065972f, +0.005614f, +0.004420f}, + {-0.003151f, +0.047883f, +0.002061f}, + {-0.163084f, -0.130815f, +0.001810f}, + {+0.019555f, +0.025290f, +0.023258f}, + {+0.018781f, -0.034389f, -0.006142f}, + {+0.002509f, +0.046479f, +0.009162f}, + {-0.041047f, -0.024011f, -0.016940f}, + {+0.065623f, +0.027310f, +0.010505f}, + {-0.073560f, +0.039971f, -0.029159f}, + {+0.062876f, +0.006797f, +0.012019f} + }, + { + {-0.543455f, +0.059523f, +0.064094f}, + {+0.700107f, -0.080270f, -0.041520f}, + {-0.154990f, -0.009275f, +0.018360f}, + {-0.474326f, +0.126377f, -0.003035f}, + {+0.327360f, -0.114048f, +0.014833f}, + {-0.071241f, +0.058994f, -0.004572f}, + {+0.087784f, +0.000125f, -0.001107f}, + {-0.094160f, -0.038960f, -0.011917f}, + {-0.019089f, +0.055284f, +0.038765f}, + {+0.023647f, -0.039958f, -0.003588f}, + {+0.043021f, +0.013443f, +0.008032f}, + {-0.077825f, -0.044990f, -0.010103f}, + {-0.040861f, +0.021619f, +0.002193f}, + {+0.044745f, -0.030859f, -0.007951f}, + {-0.123807f, +0.055927f, -0.012492f}, + {+0.025663f, -0.034745f, +0.003611f} + }, + { + {-0.336060f, +0.028886f, +0.031505f}, + {+0.587287f, +0.009083f, -0.042775f}, + {-0.182505f, +0.025753f, +0.007772f}, + {-0.327915f, -0.064183f, +0.035026f}, + {+0.233666f, +0.067260f, -0.031214f}, + {+0.007323f, -0.030500f, +0.014877f}, + {+0.086165f, +0.005866f, -0.002682f}, + {-0.157983f, -0.017671f, -0.007972f}, + {+0.103610f, +0.038997f, +0.019660f}, + {+0.007681f, +0.004657f, -0.015128f}, + {+0.055812f, +0.017923f, +0.003300f}, + {-0.143968f, -0.013845f, -0.008347f}, + {-0.017716f, -0.004963f, +0.006287f}, + {+0.008786f, -0.012160f, -0.007210f}, + {-0.121102f, -0.034578f, +0.019391f}, + {-0.032193f, +0.031317f, -0.010154f} + }, + { + {-0.153248f, -0.008370f, -0.009310f}, + {+0.402033f, -0.000118f, -0.012937f}, + {-0.199763f, -0.006595f, +0.001228f}, + {-0.128842f, +0.004526f, +0.020419f}, + {+0.092842f, +0.010605f, -0.021993f}, + {+0.077909f, -0.025349f, +0.002895f}, + {+0.057392f, -0.008479f, -0.003710f}, + {-0.165419f, +0.022789f, +0.007822f}, + {+0.148908f, -0.037324f, -0.013709f}, + {-0.011296f, +0.018097f, -0.005621f}, + {+0.055136f, -0.008613f, -0.006635f}, + {-0.160576f, +0.015557f, +0.006131f}, + {+0.014844f, -0.003364f, +0.000064f}, + {-0.027453f, -0.001660f, +0.003786f}, + {-0.097934f, -0.032125f, +0.013700f}, + {-0.074549f, +0.020854f, -0.006292f} + }, + { + {-0.021458f, -0.031294f, -0.015786f}, + {+0.225566f, +0.016671f, +0.005476f}, + {-0.179128f, -0.006436f, +0.000989f}, + {+0.030888f, -0.004116f, -0.001010f}, + {-0.023526f, -0.004404f, +0.002301f}, + {+0.113727f, +0.001584f, -0.014207f}, + {+0.006187f, +0.003628f, -0.000322f}, + {-0.130415f, +0.000132f, +0.008388f}, + {+0.133114f, -0.001415f, -0.020106f}, + {-0.026233f, -0.006894f, +0.005590f}, + {+0.046982f, -0.011852f, -0.003518f}, + {-0.124161f, -0.003790f, +0.005992f}, + {+0.039303f, -0.005121f, -0.003574f}, + {-0.061746f, +0.020157f, -0.000385f}, + {-0.073801f, +0.016410f, -0.009153f}, + {-0.089034f, -0.008662f, +0.006612f} + }, + { + {+0.079072f, +0.039673f, -0.003004f}, + {+0.077618f, -0.033045f, +0.007328f}, + {-0.090967f, +0.027848f, +0.000971f}, + {+0.121511f, -0.002007f, -0.010039f}, + {-0.095609f, -0.005944f, +0.008880f}, + {+0.100415f, +0.015820f, -0.006869f}, + {-0.060544f, -0.012856f, +0.004470f}, + {-0.077695f, +0.001667f, -0.001003f}, + {+0.092912f, +0.018201f, -0.005273f}, + {-0.040823f, -0.014455f, +0.004325f}, + {+0.030102f, -0.002197f, +0.002719f}, + {-0.043620f, +0.016980f, +0.000122f}, + {+0.041014f, +0.001499f, -0.001303f}, + {-0.088431f, +0.009078f, -0.001327f}, + {-0.051030f, +0.024992f, -0.008833f}, + {-0.091055f, -0.011437f, +0.003728f} + }, + { + {+0.165755f, -0.020564f, +0.004876f}, + {-0.050384f, +0.037239f, +0.000994f}, + {+0.070084f, -0.036144f, -0.001750f}, + {+0.168503f, -0.016906f, -0.008961f}, + {-0.141507f, +0.014408f, +0.005947f}, + {+0.022796f, +0.010807f, +0.007047f}, + {-0.126569f, +0.016739f, +0.005274f}, + {-0.026827f, -0.017151f, -0.002196f}, + {+0.045512f, +0.004295f, +0.005991f}, + {-0.054896f, +0.008311f, -0.001754f}, + {+0.003645f, +0.010307f, +0.002009f}, + {+0.057176f, -0.014805f, -0.004774f}, + {+0.011072f, +0.010642f, -0.000248f}, + {-0.108885f, -0.004650f, +0.007771f}, + {-0.039664f, -0.018793f, +0.005550f}, + {-0.092338f, -0.000767f, -0.000795f} + }, + { + {+0.239774f, +0.007034f, +0.002631f}, + {-0.158490f, -0.023748f, -0.003698f}, + {+0.270403f, +0.044381f, -0.006888f}, + {+0.208319f, +0.016522f, -0.001863f}, + {-0.188853f, -0.017009f, +0.001321f}, + {-0.109689f, -0.039932f, +0.010880f}, + {-0.162224f, -0.011965f, +0.002284f}, + {+0.008275f, +0.010941f, +0.003208f}, + {-0.008632f, -0.022468f, +0.003767f}, + {-0.062087f, +0.004201f, -0.001503f}, + {-0.024938f, -0.010189f, -0.000489f}, + {+0.144572f, +0.021004f, -0.007356f}, + {-0.046268f, -0.010126f, +0.001327f}, + {-0.126844f, -0.020412f, +0.005586f}, + {-0.049688f, -0.012221f, +0.009513f}, + {-0.100800f, -0.001133f, +0.001097f} + }, + { + {+0.298828f, -0.005793f, -0.001373f}, + {-0.237768f, +0.008765f, -0.003046f}, + {+0.449357f, -0.047352f, -0.004642f}, + {+0.250753f, -0.004865f, -0.001957f}, + {-0.245484f, +0.010819f, +0.000881f}, + {-0.249706f, +0.049408f, +0.003961f}, + {-0.136738f, -0.008753f, -0.001855f}, + {+0.025853f, +0.003385f, +0.004139f}, + {-0.065934f, +0.022501f, -0.003288f}, + {-0.057527f, -0.008394f, +0.002717f}, + {-0.046206f, +0.004855f, -0.002123f}, + {+0.183725f, -0.015903f, -0.001405f}, + {-0.114051f, +0.012348f, +0.005264f}, + {-0.129436f, +0.010088f, -0.004805f}, + {-0.071460f, +0.022939f, +0.001488f}, + {-0.119149f, +0.009223f, +0.000555f} + }, + { + {+0.346011f, +0.008343f, -0.002521f}, + {-0.286535f, +0.000576f, +0.000480f}, + {+0.541635f, +0.014116f, +0.002290f}, + {+0.286228f, +0.009795f, -0.003869f}, + {-0.299965f, -0.009735f, +0.003167f}, + {-0.328736f, -0.018968f, -0.006082f}, + {-0.037520f, +0.034439f, -0.002184f}, + {+0.042204f, -0.003541f, +0.000630f}, + {-0.115659f, -0.004656f, -0.004969f}, + {-0.039051f, +0.003041f, +0.004257f}, + {-0.056424f, -0.001120f, -0.003167f}, + {+0.144869f, -0.019123f, +0.003415f}, + {-0.166286f, -0.018086f, +0.003983f}, + {-0.101679f, +0.021538f, -0.005021f}, + {-0.078280f, -0.006671f, -0.006794f}, + {-0.140047f, -0.004747f, -0.001252f} + }, + { + {+0.388388f, -0.009881f, -0.001847f}, + {-0.316128f, +0.000090f, +0.004009f}, + {+0.513290f, +0.035603f, +0.000300f}, + {+0.296513f, -0.005786f, -0.000267f}, + {-0.333378f, +0.007221f, +0.002877f}, + {-0.295424f, -0.041070f, -0.003600f}, + {+0.114311f, -0.042170f, +0.000214f}, + {+0.081378f, -0.006284f, -0.003240f}, + {-0.150267f, -0.005614f, +0.000485f}, + {-0.005390f, -0.000214f, +0.000390f}, + {-0.064645f, -0.002835f, -0.002892f}, + {+0.026756f, +0.044985f, -0.000392f}, + {-0.170480f, -0.001979f, -0.000156f}, + {-0.050780f, -0.025790f, +0.003317f}, + {-0.047515f, -0.026029f, -0.004739f}, + {-0.153995f, -0.004894f, +0.001183f} + }, + { + {+0.430636f, +0.009808f, -0.001195f}, + {-0.343293f, -0.010478f, +0.003913f}, + {+0.388765f, -0.049553f, -0.008265f}, + {+0.266407f, -0.016789f, +0.000864f}, + {-0.328141f, +0.007654f, +0.002512f}, + {-0.155445f, +0.060858f, +0.009380f}, + {+0.269010f, +0.026881f, -0.000978f}, + {+0.158656f, +0.025362f, -0.003743f}, + {-0.171832f, +0.002756f, +0.006554f}, + {+0.043647f, +0.009482f, -0.003918f}, + {-0.090667f, +0.001476f, +0.001048f}, + {-0.132548f, -0.036105f, -0.003022f}, + {-0.106351f, +0.024154f, -0.000421f}, + {-0.000521f, +0.009705f, +0.007542f}, + {+0.019829f, +0.036619f, +0.006700f}, + {-0.155900f, +0.002824f, +0.004883f} + }, + { + {+0.471455f, -0.008296f, -0.001200f}, + {-0.377731f, +0.016768f, -0.000590f}, + {+0.234888f, +0.026343f, -0.008776f}, + {+0.198215f, +0.029257f, -0.004797f}, + {-0.279113f, -0.015431f, +0.003236f}, + {+0.033581f, -0.032760f, +0.011351f}, + {+0.370767f, -0.006318f, -0.006828f}, + {+0.266209f, -0.029783f, -0.001410f}, + {-0.185419f, +0.012636f, +0.005498f}, + {+0.100533f, -0.019010f, -0.003209f}, + {-0.151097f, +0.010446f, +0.007094f}, + {-0.274631f, +0.012724f, +0.003901f}, + {+0.013966f, -0.029859f, -0.001195f}, + {+0.031705f, +0.010192f, +0.002683f}, + {+0.102880f, -0.011055f, +0.011106f}, + {-0.143777f, +0.006427f, +0.002026f} + }, + { + {+0.505485f, +0.006321f, -0.001405f}, + {-0.419164f, -0.009705f, -0.004024f}, + {+0.115231f, -0.006245f, -0.000430f}, + {+0.110599f, -0.013787f, -0.006578f}, + {-0.197526f, +0.015552f, +0.000736f}, + {+0.208411f, +0.008219f, -0.002566f}, + {+0.381442f, -0.001142f, -0.007728f}, + {+0.371664f, +0.016115f, -0.002975f}, + {-0.191819f, -0.017185f, -0.004447f}, + {+0.147317f, +0.015855f, +0.001243f}, + {-0.239821f, -0.029217f, +0.008681f}, + {-0.348287f, -0.007454f, +0.010181f}, + {+0.149521f, +0.030650f, -0.003365f}, + {+0.048588f, -0.006717f, -0.005355f}, + {+0.186826f, -0.010831f, -0.001024f}, + {-0.115953f, +0.001790f, -0.004618f} + }, + { + {+0.527959f, -0.004605f, -0.000793f}, + {-0.465933f, -0.000734f, -0.000648f}, + {+0.058769f, +0.003399f, +0.003980f}, + {+0.020939f, +0.002500f, +0.001602f}, + {-0.102989f, -0.023640f, -0.000907f}, + {+0.330754f, -0.015227f, -0.013490f}, + {+0.293504f, +0.012966f, +0.002367f}, + {+0.435673f, -0.007769f, -0.006056f}, + {-0.189456f, -0.010551f, -0.008519f}, + {+0.165864f, +0.001568f, +0.003516f}, + {-0.320806f, +0.034715f, +0.000873f}, + {-0.324855f, +0.004016f, +0.002288f}, + {+0.248230f, -0.023651f, -0.001117f}, + {+0.067435f, -0.016300f, -0.003833f}, + {+0.272913f, -0.007587f, -0.015541f}, + {-0.076620f, -0.021772f, -0.003143f} + }, + { + {+0.537963f, +0.000122f, -0.000129f}, + {-0.521439f, -0.006120f, +0.005687f}, + {+0.059349f, +0.002731f, +0.001179f}, + {-0.063524f, -0.015179f, +0.008462f}, + {-0.018295f, +0.018831f, +0.001086f}, + {+0.382316f, +0.020820f, -0.008228f}, + {+0.133723f, -0.051158f, +0.007642f}, + {+0.427333f, -0.004801f, -0.004396f}, + {-0.189172f, +0.025571f, +0.003440f}, + {+0.153064f, -0.017940f, -0.000618f}, + {-0.344855f, -0.000841f, -0.007255f}, + {-0.204120f, +0.035702f, -0.007554f}, + {+0.269414f, -0.005639f, +0.002449f}, + {+0.098719f, +0.013856f, +0.002962f}, + {+0.355359f, +0.040342f, -0.012703f}, + {-0.043435f, +0.014923f, +0.004398f} + }, + { + {+0.539918f, +0.002520f, -0.000803f}, + {-0.586780f, +0.022878f, +0.005664f}, + {+0.088465f, -0.012487f, -0.000009f}, + {-0.133857f, +0.024436f, +0.005429f}, + {+0.038815f, -0.004600f, +0.001199f}, + {+0.354019f, +0.005760f, +0.002225f}, + {-0.035479f, +0.061479f, -0.003852f}, + {+0.333448f, +0.030542f, -0.002292f}, + {-0.214917f, +0.009773f, +0.013046f}, + {+0.126578f, +0.010093f, -0.005470f}, + {-0.286447f, -0.044878f, -0.001444f}, + {-0.026257f, -0.067149f, -0.001093f}, + {+0.208042f, +0.035382f, -0.000884f}, + {+0.140716f, -0.000405f, +0.001329f}, + {+0.398750f, -0.026334f, +0.002502f}, + {-0.035058f, +0.007558f, +0.005919f} + }, + { + {+0.542223f, +0.000691f, -0.001439f}, + {-0.649673f, -0.023205f, -0.000535f}, + {+0.109219f, +0.005980f, +0.002282f}, + {-0.171779f, -0.010220f, -0.000656f}, + {+0.066150f, -0.005365f, -0.002547f}, + {+0.254746f, -0.041005f, +0.002026f}, + {-0.138924f, -0.008674f, -0.012149f}, + {+0.169249f, -0.044112f, -0.002599f}, + {-0.272638f, -0.040677f, +0.004640f}, + {+0.110153f, +0.006462f, -0.003434f}, + {-0.169903f, +0.042984f, +0.010056f}, + {+0.132794f, +0.036153f, +0.009130f}, + {+0.102112f, -0.031703f, -0.006139f}, + {+0.188913f, +0.004870f, -0.004839f}, + {+0.357390f, -0.030371f, +0.006291f}, + {-0.051114f, -0.020551f, -0.000894f} + }, + { + {+0.551847f, -0.004875f, -0.000679f}, + {-0.690272f, +0.004312f, -0.004016f}, + {+0.095639f, +0.010071f, +0.002809f}, + {-0.161818f, -0.013824f, -0.000790f}, + {+0.076081f, -0.002390f, -0.004308f}, + {+0.122361f, +0.040035f, -0.004601f}, + {-0.144006f, -0.036671f, -0.003198f}, + {-0.024466f, +0.039610f, -0.000882f}, + {-0.331827f, +0.020929f, -0.006635f}, + {+0.113319f, -0.007876f, +0.000927f}, + {-0.048322f, -0.009251f, +0.008004f}, + {+0.207982f, +0.015726f, +0.004350f}, + {+0.006949f, +0.009330f, -0.004246f}, + {+0.233905f, -0.014811f, -0.005355f}, + {+0.223143f, +0.054998f, -0.002434f}, + {-0.070208f, +0.002186f, -0.004895f} + }, + { + {+0.570043f, +0.005432f, +0.000103f}, + {-0.699360f, +0.014398f, +0.000427f}, + {+0.048501f, -0.018143f, +0.001306f}, + {-0.107295f, +0.023902f, +0.003671f}, + {+0.082584f, +0.006076f, -0.001731f}, + {+0.005834f, -0.019340f, -0.006865f}, + {-0.085415f, +0.035831f, +0.009933f}, + {-0.202459f, -0.035934f, +0.000303f}, + {-0.353113f, +0.015051f, -0.004263f}, + {+0.130123f, +0.004257f, +0.001776f}, + {+0.043254f, +0.003167f, -0.001496f}, + {+0.189334f, -0.031601f, -0.007634f}, + {-0.040215f, +0.005301f, +0.001534f}, + {+0.256999f, +0.008098f, -0.001598f}, + {+0.036347f, -0.049036f, -0.008301f}, + {-0.070389f, +0.011544f, -0.000794f} + }, + { + {+0.593416f, -0.005649f, +0.000278f}, + {-0.688298f, -0.007364f, +0.005463f}, + {-0.008044f, +0.018190f, -0.001207f}, + {-0.030689f, -0.015365f, +0.004543f}, + {+0.091891f, -0.004696f, +0.000919f}, + {-0.064670f, -0.007573f, -0.000965f}, + {-0.030187f, +0.002153f, +0.010834f}, + {-0.331404f, +0.015975f, +0.000858f}, + {-0.323976f, -0.025164f, +0.004961f}, + {+0.148829f, +0.000188f, -0.000078f}, + {+0.101305f, -0.006103f, -0.005181f}, + {+0.115300f, +0.016832f, -0.010749f}, + {-0.032766f, -0.011589f, +0.005290f}, + {+0.239406f, +0.007974f, +0.000705f}, + {-0.145255f, +0.023713f, -0.004941f}, + {-0.046369f, -0.012177f, +0.003695f} + }, + { + {+0.616579f, +0.002929f, -0.000295f}, + {-0.676588f, -0.004629f, +0.003842f}, + {-0.043537f, -0.004766f, -0.003324f}, + {+0.044220f, +0.013845f, +0.003072f}, + {+0.101856f, -0.006437f, -0.001748f}, + {-0.092523f, +0.007377f, +0.006975f}, + {-0.023470f, -0.026713f, -0.000479f}, + {-0.400554f, +0.001062f, +0.004867f}, + {-0.261565f, +0.014128f, +0.007944f}, + {+0.159121f, -0.002751f, -0.002980f}, + {+0.138765f, +0.008950f, -0.004189f}, + {+0.034625f, +0.000481f, -0.002727f}, + {+0.012613f, +0.005909f, +0.003331f}, + {+0.175748f, -0.024801f, -0.000902f}, + {-0.281594f, -0.008334f, +0.003990f}, + {-0.007054f, +0.002604f, +0.002155f} + }, + { + {+0.635179f, -0.002823f, -0.001148f}, + {-0.674199f, +0.007986f, -0.000991f}, + {-0.041014f, -0.013849f, -0.001185f}, + {+0.104750f, -0.003964f, +0.000987f}, + {+0.107619f, -0.003736f, -0.004502f}, + {-0.101204f, +0.003739f, +0.008397f}, + {-0.064575f, +0.021388f, -0.009658f}, + {-0.422196f, -0.004265f, +0.008954f}, + {-0.190975f, -0.003688f, +0.002622f}, + {+0.155793f, -0.001509f, -0.003088f}, + {+0.169274f, -0.008874f, -0.002289f}, + {-0.023162f, +0.001981f, +0.005597f}, + {+0.073018f, -0.010252f, -0.000970f}, + {+0.080452f, +0.024265f, -0.002891f}, + {-0.363635f, +0.004698f, +0.010523f}, + {+0.035663f, -0.006812f, -0.001722f} + }, + { + {+0.647447f, +0.003124f, -0.000778f}, + {-0.678396f, +0.001222f, -0.002175f}, + {-0.008003f, +0.018788f, +0.004232f}, + {+0.153771f, +0.006824f, -0.001505f}, + {+0.102284f, +0.006283f, -0.000369f}, + {-0.107854f, -0.015766f, +0.002536f}, + {-0.127703f, -0.002824f, -0.007472f}, + {-0.415367f, -0.005027f, +0.007128f}, + {-0.124975f, +0.011994f, -0.001327f}, + {+0.135698f, -0.002841f, -0.000522f}, + {+0.197083f, +0.008952f, -0.000525f}, + {-0.049410f, -0.008433f, +0.005306f}, + {+0.128034f, +0.008755f, -0.002993f}, + {-0.020098f, -0.017083f, -0.001266f}, + {-0.399229f, -0.010519f, +0.009961f}, + {+0.073610f, +0.013100f, -0.000219f} + }, + { + {+0.653287f, -0.000651f, -0.000132f}, + {-0.682914f, -0.002014f, +0.000124f}, + {+0.032972f, -0.005837f, +0.006215f}, + {+0.202805f, -0.008225f, -0.002812f}, + {+0.078083f, +0.005921f, +0.003749f}, + {-0.111320f, +0.004540f, -0.003693f}, + {-0.194460f, +0.001719f, +0.000738f}, + {-0.388630f, -0.001712f, +0.002133f}, + {-0.064250f, -0.011691f, -0.000978f}, + {+0.097911f, +0.010340f, +0.000589f}, + {+0.217935f, -0.002537f, +0.000189f}, + {-0.043003f, +0.001190f, +0.000648f}, + {+0.160424f, -0.006445f, -0.003025f}, + {-0.102796f, +0.011222f, +0.001449f}, + {-0.392994f, +0.003832f, +0.004205f}, + {+0.101814f, -0.004741f, +0.002529f} + }, + { + {+0.655085f, -0.000496f, -0.000073f}, + {-0.685269f, -0.000562f, +0.000824f}, + {+0.064749f, -0.008716f, +0.000371f}, + {+0.258268f, +0.016126f, -0.002727f}, + {+0.038467f, -0.019915f, +0.001374f}, + {-0.101519f, +0.013031f, -0.001724f}, + {-0.262717f, -0.010913f, +0.005785f}, + {-0.340935f, +0.010917f, -0.000109f}, + {-0.005117f, +0.011670f, -0.001141f}, + {+0.047975f, -0.015016f, -0.000510f}, + {+0.227673f, -0.001545f, -0.000844f}, + {-0.006815f, +0.010613f, -0.001679f}, + {+0.158152f, -0.002971f, -0.001763f}, + {-0.154604f, -0.004393f, +0.003495f}, + {-0.341946f, +0.012918f, +0.000060f}, + {+0.123129f, -0.003187f, +0.000554f} + }, + { + {+0.657162f, +0.001154f, -0.000704f}, + {-0.686405f, +0.001174f, -0.000024f}, + {+0.087607f, -0.002335f, -0.004967f}, + {+0.314889f, -0.015378f, -0.000770f}, + {+0.001549f, +0.013009f, -0.003904f}, + {-0.077871f, -0.011151f, +0.003120f}, + {-0.333383f, +0.022033f, +0.004891f}, + {-0.273704f, -0.019370f, +0.000308f}, + {+0.054701f, -0.011371f, -0.002150f}, + {-0.003312f, +0.012026f, -0.002061f}, + {+0.228798f, +0.001402f, -0.001592f}, + {+0.048684f, -0.018229f, -0.000520f}, + {+0.117088f, +0.012634f, -0.000896f}, + {-0.173410f, +0.001735f, +0.003820f}, + {-0.247906f, -0.029903f, +0.000682f}, + {+0.148293f, -0.000926f, -0.003582f} + }, + { + {+0.663635f, +0.002010f, -0.001316f}, + {-0.689882f, +0.000220f, -0.000110f}, + {+0.108949f, +0.013447f, -0.002013f}, + {+0.358661f, +0.009695f, +0.001033f}, + {-0.013352f, +0.004281f, -0.004550f}, + {-0.049096f, +0.001505f, +0.002637f}, + {-0.398463f, -0.021957f, -0.000327f}, + {-0.196600f, +0.019778f, +0.001903f}, + {+0.110988f, +0.014423f, -0.001867f}, + {-0.045870f, -0.004558f, -0.001576f}, + {+0.228188f, -0.000097f, -0.001476f}, + {+0.105835f, +0.015244f, +0.001995f}, + {+0.044580f, -0.021539f, -0.001382f}, + {-0.164082f, +0.001655f, +0.001885f}, + {-0.126620f, +0.032568f, +0.003705f}, + {+0.185481f, +0.013419f, -0.004184f} + }, + { + {+0.675624f, -0.004827f, -0.000839f}, + {-0.700179f, +0.002102f, +0.000678f}, + {+0.128613f, -0.006572f, +0.002141f}, + {+0.378743f, +0.002887f, +0.000648f}, + {-0.004220f, -0.012669f, -0.000801f}, + {-0.022440f, -0.000653f, -0.000869f}, + {-0.441665f, +0.002210f, -0.002042f}, + {-0.124814f, -0.014411f, +0.002833f}, + {+0.153596f, -0.007894f, -0.000675f}, + {-0.077085f, +0.001217f, +0.000703f}, + {+0.231308f, +0.000725f, -0.002147f}, + {+0.147273f, -0.003213f, +0.002198f}, + {-0.042268f, +0.020842f, -0.002800f}, + {-0.133721f, -0.009739f, +0.001057f}, + {-0.003152f, -0.021386f, +0.003714f}, + {+0.229253f, -0.015325f, -0.001319f} + }, + { + {+0.689875f, +0.004735f, +0.000183f}, + {-0.720017f, -0.006167f, +0.000699f}, + {+0.141755f, -0.003516f, +0.000834f}, + {+0.376706f, -0.006807f, -0.001713f}, + {+0.011000f, +0.005016f, +0.001618f}, + {-0.000647f, +0.004137f, -0.002283f}, + {-0.454292f, +0.009561f, +0.002281f}, + {-0.069428f, +0.004651f, +0.001574f}, + {+0.172906f, +0.000456f, -0.000712f}, + {-0.102160f, -0.005230f, +0.001608f}, + {+0.237600f, +0.001176f, -0.003651f}, + {+0.166513f, -0.006046f, -0.001258f}, + {-0.123162f, -0.009523f, -0.000972f}, + {-0.093037f, +0.007808f, +0.000738f}, + {+0.101706f, +0.008107f, -0.001772f}, + {+0.261899f, +0.005910f, +0.000263f} + }, + { + {+0.701449f, -0.001309f, +0.000513f}, + {-0.747852f, +0.007083f, +0.000295f}, + {+0.146674f, +0.002063f, -0.002067f}, + {+0.365508f, +0.004005f, -0.003093f}, + {+0.009820f, +0.003073f, +0.001694f}, + {+0.014954f, -0.005079f, -0.001243f}, + {-0.444057f, -0.005273f, +0.005170f}, + {-0.030220f, -0.001713f, -0.001402f}, + {+0.167308f, +0.005594f, -0.001307f}, + {-0.126894f, +0.005843f, +0.001163f}, + {+0.239461f, -0.006087f, -0.002206f}, + {+0.171030f, +0.001130f, -0.003837f}, + {-0.185728f, +0.008176f, +0.002303f}, + {-0.053859f, -0.008398f, -0.000003f}, + {+0.180213f, -0.012225f, -0.006311f}, + {+0.267399f, +0.003688f, -0.000070f} + }, + { + {+0.707682f, -0.001614f, -0.000417f}, + {-0.778938f, -0.006537f, +0.000334f}, + {+0.145291f, +0.002890f, -0.001284f}, + {+0.359528f, +0.005062f, -0.001469f}, + {-0.019378f, -0.015221f, +0.000076f}, + {+0.021977f, +0.000916f, -0.000266f}, + {-0.425305f, -0.000822f, +0.003160f}, + {+0.002113f, +0.007052f, -0.002427f}, + {+0.143996f, -0.006679f, -0.001487f}, + {-0.153276f, -0.008199f, +0.000318f}, + {+0.224106f, -0.002607f, +0.000957f}, + {+0.172702f, +0.005631f, -0.001975f}, + {-0.227595f, -0.009189f, +0.001906f}, + {-0.024550f, +0.006878f, +0.000998f}, + {+0.231993f, +0.016149f, -0.003555f}, + {+0.242520f, -0.012045f, -0.001170f} + }, + { + {+0.709804f, +0.000997f, -0.001515f}, + {-0.808027f, +0.005290f, +0.000583f}, + {+0.139809f, +0.000435f, +0.000818f}, + {+0.365924f, -0.006226f, +0.001737f}, + {-0.071369f, +0.017742f, -0.003060f}, + {+0.017802f, +0.003027f, -0.000621f}, + {-0.407651f, -0.000451f, +0.000175f}, + {+0.034591f, -0.007791f, -0.002030f}, + {+0.114950f, +0.006228f, -0.001120f}, + {-0.179490f, +0.006128f, -0.000795f}, + {+0.183246f, +0.015768f, +0.000773f}, + {+0.177035f, -0.003531f, +0.000696f}, + {-0.250400f, +0.001355f, +0.001108f}, + {-0.008187f, +0.000159f, +0.001456f}, + {+0.254611f, -0.001384f, -0.000532f}, + {+0.198496f, +0.013948f, -0.002759f} + }, + { + {+0.710823f, +0.002381f, -0.001069f}, + {-0.831214f, -0.003447f, +0.000878f}, + {+0.132056f, -0.007797f, -0.000969f}, + {+0.382880f, -0.001094f, +0.000711f}, + {-0.129160f, -0.007502f, -0.002763f}, + {+0.003161f, -0.000767f, +0.000443f}, + {-0.392711f, +0.006305f, +0.000815f}, + {+0.067053f, +0.011901f, -0.000327f}, + {+0.090742f, -0.003835f, -0.000996f}, + {-0.202084f, -0.000560f, +0.000195f}, + {+0.122322f, -0.020924f, -0.002535f}, + {+0.182462f, -0.002778f, -0.000258f}, + {-0.259161f, +0.001293f, +0.002195f}, + {+0.000645f, -0.003627f, -0.000469f}, + {+0.248733f, -0.007401f, -0.001654f}, + {+0.153178f, -0.008546f, -0.003483f} + }, + { + {+0.712186f, -0.002003f, +0.000341f}, + {-0.846788f, +0.001521f, +0.001394f}, + {+0.124294f, +0.003415f, -0.004317f}, + {+0.406372f, -0.002613f, -0.002804f}, + {-0.179207f, +0.002493f, +0.001438f}, + {-0.017437f, +0.004122f, +0.002593f}, + {-0.378082f, -0.002349f, +0.002279f}, + {+0.093160f, -0.004321f, +0.001305f}, + {+0.077016f, -0.001502f, +0.000076f}, + {-0.220676f, +0.001245f, +0.002361f}, + {+0.057208f, +0.011096f, -0.003599f}, + {+0.185276f, +0.001151f, -0.002614f}, + {-0.259729f, -0.001827f, +0.003455f}, + {+0.012127f, +0.000504f, -0.003413f}, + {+0.221948f, +0.010321f, -0.003531f}, + {+0.118717f, -0.000242f, -0.001468f} + }, + { + {+0.713662f, -0.000828f, +0.000545f}, + {-0.855438f, -0.002950f, +0.000977f}, + {+0.115830f, +0.005727f, -0.002674f}, + {+0.431080f, +0.008386f, -0.003025f}, + {-0.218522f, -0.008054f, +0.003300f}, + {-0.036091f, -0.008702f, +0.001428f}, + {-0.359216f, +0.001218f, +0.000904f}, + {+0.107642f, -0.001544f, +0.000220f}, + {+0.072571f, -0.000752f, +0.000715f}, + {-0.237634f, -0.007061f, +0.001792f}, + {+0.001551f, -0.003678f, -0.000322f}, + {+0.181633f, +0.003122f, -0.001514f}, + {-0.255564f, -0.003731f, +0.002293f}, + {+0.032826f, +0.012636f, -0.002484f}, + {+0.185211f, -0.004024f, -0.002705f}, + {+0.094101f, -0.001623f, +0.001061f} + }, + { + {+0.715808f, +0.001447f, -0.000564f}, + {-0.858599f, +0.000128f, +0.000166f}, + {+0.099314f, +0.001041f, +0.001297f}, + {+0.448457f, -0.007760f, -0.000064f}, + {-0.248826f, +0.008996f, +0.001277f}, + {-0.041985f, +0.000319f, -0.000791f}, + {-0.330901f, -0.006650f, -0.000552f}, + {+0.113746f, +0.002963f, -0.001774f}, + {+0.073588f, -0.000327f, +0.000159f}, + {-0.253601f, +0.004683f, -0.000245f}, + {-0.041369f, +0.004973f, +0.002735f}, + {+0.166731f, +0.003863f, +0.000533f}, + {-0.246518f, -0.001268f, -0.000049f}, + {+0.057814f, -0.010629f, +0.001615f}, + {+0.147641f, +0.004485f, +0.000244f}, + {+0.070521f, +0.005007f, +0.001670f} + }, + { + {+0.720382f, +0.001583f, -0.001168f}, + {-0.858507f, +0.001602f, +0.000561f}, + {+0.067329f, -0.015190f, +0.000273f}, + {+0.450274f, -0.005070f, +0.000753f}, + {-0.271109f, -0.002256f, +0.000399f}, + {-0.028488f, +0.011815f, +0.001154f}, + {-0.292330f, +0.012166f, +0.000199f}, + {+0.120202f, +0.001560f, -0.002785f}, + {+0.077618f, +0.000385f, -0.000057f}, + {-0.267478f, +0.001019f, +0.000455f}, + {-0.074822f, -0.008817f, +0.002528f}, + {+0.138952f, -0.011104f, -0.000590f}, + {-0.231196f, +0.009528f, +0.001492f}, + {+0.074656f, -0.000989f, +0.002061f}, + {+0.113858f, -0.008628f, +0.000648f}, + {+0.041189f, -0.009773f, +0.000867f} + }, + { + {+0.728412f, -0.003781f, -0.000442f}, + {-0.858915f, -0.000641f, +0.001243f}, + {+0.021588f, +0.015568f, -0.003718f}, + {+0.435021f, +0.011190f, -0.002580f}, + {-0.286107f, -0.000454f, +0.002042f}, + {+0.001012f, -0.010763f, +0.004584f}, + {-0.248323f, -0.011164f, +0.001788f}, + {+0.134196f, -0.006281f, -0.001978f}, + {+0.082702f, +0.001367f, -0.001190f}, + {-0.278772f, -0.000302f, +0.002741f}, + {-0.102933f, +0.009391f, -0.000025f}, + {+0.103537f, +0.008673f, -0.002139f}, + {-0.211947f, -0.006496f, +0.004418f}, + {+0.077185f, +0.005220f, -0.000312f}, + {+0.087037f, +0.006765f, -0.000943f}, + {+0.005530f, +0.010882f, -0.000993f} + }, + { + {+0.738976f, +0.002329f, +0.000136f}, + {-0.861896f, +0.000932f, +0.002377f}, + {-0.029402f, -0.003271f, -0.002468f}, + {+0.408989f, -0.003243f, -0.003584f}, + {-0.293612f, -0.002313f, +0.002730f}, + {+0.038002f, +0.000412f, +0.002803f}, + {-0.206194f, +0.003320f, +0.000488f}, + {+0.155421f, +0.006078f, -0.001116f}, + {+0.087818f, +0.003223f, -0.001518f}, + {-0.285833f, -0.006231f, +0.001960f}, + {-0.128249f, -0.001074f, -0.000243f}, + {+0.068575f, -0.002940f, -0.000700f}, + {-0.191804f, -0.003014f, +0.002724f}, + {+0.067942f, -0.005643f, -0.002245f}, + {+0.068213f, -0.000980f, -0.001053f}, + {-0.030778f, -0.002407f, -0.000036f} + }, + { + {+0.750300f, +0.000058f, -0.000825f}, + {-0.866279f, +0.001749f, +0.003432f}, + {-0.078123f, -0.003921f, +0.005991f}, + {+0.379010f, -0.005518f, +0.002243f}, + {-0.292486f, +0.009941f, -0.001947f}, + {+0.075433f, +0.005336f, -0.005378f}, + {-0.170771f, -0.002341f, -0.003169f}, + {+0.177886f, -0.005886f, -0.000679f}, + {+0.091281f, -0.005785f, +0.001198f}, + {-0.285767f, +0.012433f, -0.005156f}, + {-0.152796f, -0.004962f, +0.005079f}, + {+0.040112f, +0.002644f, +0.001940f}, + {-0.171647f, +0.007661f, -0.004705f}, + {+0.053028f, -0.000873f, -0.001571f}, + {+0.054373f, -0.002064f, +0.001211f}, + {-0.062123f, +0.000837f, +0.004082f} + }, + { + {+0.760695f, +0.000187f, -0.002580f}, + {-0.869383f, -0.005374f, +0.001979f}, + {-0.118984f, -0.003432f, +0.014567f}, + {+0.349914f, +0.003949f, +0.011712f}, + {-0.283867f, -0.008607f, -0.011966f}, + {+0.106829f, +0.003798f, -0.012953f}, + {-0.143863f, +0.007735f, -0.004012f}, + {+0.195900f, +0.004792f, +0.000560f}, + {+0.091845f, +0.002959f, +0.004936f}, + {-0.279043f, -0.006225f, -0.015628f}, + {-0.177000f, +0.001330f, +0.012704f}, + {+0.021476f, -0.006516f, +0.001630f}, + {-0.154239f, +0.000969f, -0.011998f}, + {+0.037152f, +0.007671f, +0.004251f}, + {+0.041126f, +0.001005f, +0.004482f}, + {-0.085797f, -0.005363f, +0.006097f} } }; -const float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][16][BINAURAL_NTAPS]= +const float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.132965f, +0.086484f, +0.111577f, -0.006297f, -0.000146f}, - {+0.159214f, -0.438495f, +0.131837f, +0.004567f, +0.000134f}, - {-0.006365f, -0.027154f, +0.040068f, -0.008136f, +0.000115f}, - {-0.012177f, +0.011068f, +0.006759f, -0.003623f, +0.000106f}, - {+0.003524f, -0.002365f, +0.008243f, -0.002720f, -0.000173f}, - {-0.001684f, +0.006593f, +0.024280f, -0.012226f, -0.000133f}, - {+0.003794f, -0.002370f, +0.013706f, -0.004985f, -0.000191f}, - {+0.009569f, -0.049227f, +0.045250f, -0.003942f, -0.000006f}, - {-0.015413f, +0.062027f, -0.005814f, -0.010696f, -0.000183f}, - {+0.012650f, -0.030376f, -0.022293f, +0.005058f, +0.000424f}, - {-0.003808f, +0.011707f, +0.008010f, -0.002270f, -0.000068f}, - {+0.003343f, -0.012704f, -0.014571f, +0.003409f, +0.000255f}, - {+0.000428f, +0.007434f, +0.003549f, -0.001445f, +0.000011f}, - {-0.006298f, +0.029469f, -0.007911f, +0.000838f, -0.000089f}, - {-0.003358f, +0.002973f, +0.012948f, -0.001507f, +0.000003f}, - {-0.000168f, +0.002647f, +0.005935f, -0.001295f, -0.000063f} - }, - { - {+0.075202f, +0.228858f, +0.021577f, -0.002573f, -0.000120f}, - {-0.061927f, -0.923113f, +0.018254f, +0.003553f, +0.000135f}, - {+0.002952f, -0.050194f, +0.020301f, -0.000013f, +0.000082f}, - {+0.008722f, +0.019708f, -0.013956f, +0.001282f, +0.000072f}, - {-0.001425f, -0.021365f, +0.019206f, +0.005433f, -0.000123f}, - {+0.004675f, +0.040742f, +0.087083f, +0.008021f, -0.000087f}, - {-0.001220f, -0.034662f, +0.025115f, +0.004561f, -0.000118f}, - {-0.004799f, -0.049232f, +0.074542f, +0.003362f, -0.000003f}, - {+0.011236f, +0.040604f, -0.010517f, +0.002046f, -0.000098f}, - {-0.006435f, -0.139253f, -0.070542f, +0.004148f, +0.000297f}, - {+0.001842f, +0.052892f, +0.056325f, +0.005942f, -0.000046f}, - {-0.004364f, -0.052115f, -0.019067f, +0.000398f, +0.000179f}, - {+0.003644f, +0.037489f, +0.030067f, +0.000286f, +0.000000f}, - {+0.000279f, +0.074681f, +0.035692f, +0.005433f, -0.000065f}, - {+0.001702f, +0.024063f, +0.022013f, +0.000449f, +0.000009f}, - {+0.001629f, +0.004730f, -0.001402f, -0.003756f, -0.000041f} - }, - { - {-0.022776f, +0.213361f, +0.033702f, +0.017530f, +0.000169f}, - {-0.017318f, -0.757708f, -0.032772f, -0.023486f, -0.000150f}, - {-0.000995f, +0.005778f, -0.039399f, +0.003826f, -0.000133f}, - {-0.001086f, +0.066855f, -0.049052f, -0.001880f, -0.000124f}, - {-0.003861f, -0.074613f, +0.059871f, -0.001275f, +0.000202f}, - {-0.004218f, +0.001879f, +0.134238f, +0.000831f, +0.000156f}, - {-0.007011f, -0.156373f, +0.120347f, +0.000348f, +0.000228f}, - {+0.001557f, +0.050757f, -0.023560f, -0.002558f, +0.000008f}, - {-0.014029f, -0.230152f, +0.192472f, +0.009207f, +0.000223f}, - {-0.003304f, -0.293531f, +0.162769f, -0.029563f, -0.000502f}, - {+0.000187f, +0.025533f, +0.089914f, -0.003071f, +0.000081f}, - {+0.001118f, -0.199397f, +0.178948f, -0.009074f, -0.000301f}, - {-0.002128f, +0.041497f, +0.024472f, -0.001412f, -0.000017f}, - {+0.001502f, +0.027123f, +0.081159f, -0.005992f, +0.000104f}, - {+0.000493f, +0.080670f, -0.051505f, -0.003323f, -0.000001f}, - {-0.001770f, +0.022371f, -0.053147f, +0.009257f, +0.000076f} - }, - { - {+0.009638f, -0.020599f, -0.278274f, -0.025390f, +0.000089f}, - {+0.019638f, -0.173586f, +0.454125f, +0.045073f, -0.000138f}, - {+0.001861f, +0.029237f, -0.038358f, -0.002128f, -0.000043f}, - {-0.006025f, +0.060820f, -0.033037f, +0.001020f, -0.000030f}, - {+0.010927f, -0.114232f, -0.022410f, -0.002610f, +0.000063f}, - {+0.001151f, -0.065308f, +0.047475f, -0.003953f, +0.000033f}, - {+0.017565f, -0.230160f, -0.003612f, +0.002199f, +0.000030f}, - {-0.002909f, +0.050062f, -0.035205f, +0.001706f, -0.000001f}, - {+0.028618f, -0.411400f, -0.073259f, -0.001960f, -0.000006f}, - {+0.012397f, -0.141388f, +0.368076f, +0.043941f, -0.000144f}, - {-0.000613f, -0.027917f, +0.038807f, -0.005057f, +0.000020f}, - {+0.005278f, -0.064856f, +0.339877f, +0.008614f, -0.000087f}, - {-0.003908f, -0.015797f, -0.023962f, +0.003729f, +0.000013f}, - {+0.002822f, -0.051424f, +0.011636f, +0.000447f, +0.000037f}, - {-0.001743f, -0.007517f, -0.130092f, +0.010670f, -0.000017f}, - {+0.001199f, -0.016221f, -0.122288f, -0.007685f, +0.000014f} - }, - { - {-0.029178f, -0.030294f, -0.242046f, +0.016235f, -0.000187f}, - {+0.008133f, +0.216891f, +0.173004f, -0.046339f, +0.000186f}, - {-0.004784f, +0.011306f, -0.001565f, +0.002974f, +0.000133f}, - {+0.001643f, -0.028149f, +0.058358f, +0.006461f, +0.000122f}, - {-0.012719f, +0.054617f, -0.162135f, -0.005430f, -0.000206f}, - {-0.004192f, +0.016864f, -0.049221f, -0.004060f, -0.000152f}, - {-0.017065f, +0.041944f, -0.209787f, -0.017496f, -0.000221f}, - {+0.005651f, -0.007117f, +0.010168f, -0.000370f, -0.000010f}, - {-0.040832f, +0.087605f, -0.438294f, -0.024557f, -0.000208f}, - {-0.015743f, +0.224869f, +0.116394f, -0.024045f, +0.000521f}, - {+0.000520f, -0.017676f, +0.001703f, +0.007076f, -0.000085f}, - {-0.005864f, +0.108940f, +0.176379f, +0.006190f, +0.000311f}, - {+0.004834f, -0.026630f, -0.021079f, -0.003057f, +0.000018f}, - {-0.003714f, -0.006337f, -0.039785f, +0.000713f, -0.000108f}, - {+0.003235f, -0.035740f, -0.081406f, -0.014616f, +0.000003f}, - {-0.000931f, -0.029194f, -0.104837f, -0.000498f, -0.000077f} - }, - { - {+0.064069f, +0.415122f, +0.053438f, -0.001987f, -0.000053f}, - {-0.009859f, -0.329919f, -0.267131f, +0.025972f, +0.000125f}, - {+0.007782f, +0.093625f, +0.062218f, -0.005519f, +0.000007f}, - {+0.006679f, +0.087174f, +0.140907f, -0.012343f, -0.000007f}, - {+0.009694f, +0.066480f, -0.161387f, +0.014778f, -0.000006f}, - {+0.011976f, +0.007185f, -0.079605f, +0.010521f, +0.000016f}, - {+0.000557f, +0.101449f, -0.157518f, +0.024682f, +0.000050f}, - {-0.008085f, -0.037335f, +0.019864f, -0.001614f, +0.000006f}, - {+0.030203f, +0.393848f, -0.238529f, +0.036570f, +0.000098f}, - {+0.011087f, +0.102790f, -0.079859f, +0.000351f, -0.000008f}, - {-0.001584f, -0.009914f, -0.007779f, -0.002067f, +0.000006f}, - {-0.003353f, +0.001777f, -0.008005f, -0.013355f, -0.000003f}, - {-0.003172f, -0.008210f, +0.010652f, +0.000223f, -0.000027f}, - {-0.001325f, -0.010307f, -0.051607f, +0.003067f, -0.000008f}, - {-0.010253f, -0.010690f, +0.002393f, +0.009426f, +0.000023f}, - {-0.002525f, +0.029747f, -0.022901f, +0.004832f, +0.000012f} - }, - { - {-0.046682f, +0.646468f, +0.038502f, -0.000394f, +0.000197f}, - {-0.044970f, -0.559290f, -0.057727f, -0.008886f, -0.000233f}, - {+0.000940f, +0.137203f, +0.026727f, +0.004536f, -0.000119f}, - {+0.021842f, +0.212599f, -0.004934f, +0.008826f, -0.000104f}, - {-0.023556f, -0.052508f, +0.021029f, -0.010719f, +0.000188f}, - {-0.008092f, +0.004951f, -0.027003f, -0.006766f, +0.000127f}, - {+0.010424f, -0.025150f, +0.006816f, -0.012676f, +0.000176f}, - {+0.012013f, -0.064462f, +0.013618f, +0.002713f, +0.000010f}, - {+0.003530f, +0.310311f, -0.011616f, -0.019741f, +0.000148f}, - {-0.004678f, +0.016958f, -0.018438f, -0.001910f, -0.000484f}, - {+0.001327f, -0.004928f, -0.011742f, -0.001214f, +0.000078f}, - {+0.013688f, -0.047967f, -0.031851f, +0.002524f, -0.000286f}, - {+0.008554f, -0.003502f, +0.000653f, +0.000953f, -0.000012f}, - {+0.001110f, -0.052143f, -0.004967f, -0.003628f, +0.000102f}, - {+0.024328f, -0.026559f, +0.000732f, -0.001055f, -0.000010f}, - {+0.007177f, -0.017435f, +0.026024f, -0.001281f, +0.000068f} - }, - { - {-0.091452f, +0.552905f, -0.002702f, -0.003959f, +0.000011f}, - {+0.151251f, -0.284723f, +0.015522f, +0.005073f, -0.000086f}, - {-0.028691f, +0.087255f, -0.003554f, -0.001461f, +0.000017f}, - {-0.098620f, +0.103367f, -0.000693f, -0.001510f, +0.000032f}, - {+0.064701f, -0.012013f, +0.004462f, +0.000173f, -0.000038f}, - {-0.014183f, +0.018557f, +0.019481f, +0.000708f, -0.000046f}, - {+0.006021f, -0.064708f, +0.035867f, -0.001201f, -0.000101f}, - {-0.011933f, -0.098741f, -0.004801f, -0.001237f, -0.000012f}, - {-0.036700f, +0.201775f, +0.040310f, -0.000652f, -0.000152f}, - {+0.005765f, -0.013682f, -0.000873f, +0.007110f, +0.000136f}, - {+0.003019f, +0.012643f, +0.006120f, +0.000396f, -0.000028f}, - {-0.011018f, -0.079111f, -0.001161f, +0.005334f, +0.000076f}, - {-0.015223f, -0.010103f, +0.018116f, -0.000552f, +0.000040f}, - {+0.010935f, -0.049744f, +0.004931f, +0.000250f, -0.000016f}, - {-0.032242f, -0.086323f, +0.005558f, -0.001593f, -0.000026f}, - {+0.000743f, -0.058299f, -0.001218f, -0.002067f, -0.000032f} - }, - { - {+0.231005f, +0.048404f, +0.009154f, +0.001498f, -0.000196f}, - {-0.192280f, +0.252895f, +0.010481f, -0.000333f, +0.000272f}, - {+0.043883f, -0.025510f, -0.003790f, -0.000402f, +0.000097f}, - {+0.135351f, -0.212029f, -0.009492f, -0.001960f, +0.000078f}, - {-0.084125f, +0.181115f, +0.006598f, +0.003510f, -0.000156f}, - {+0.033552f, -0.023473f, +0.003836f, +0.001049f, -0.000092f}, - {-0.027732f, +0.007669f, +0.004823f, +0.004147f, -0.000114f}, - {-0.005511f, -0.108447f, -0.007469f, -0.001175f, -0.000008f}, - {+0.049262f, +0.093379f, +0.014337f, +0.006176f, -0.000066f}, - {-0.011588f, +0.007485f, +0.021418f, +0.002195f, +0.000406f}, - {-0.004828f, +0.034802f, -0.002483f, +0.000357f, -0.000065f}, - {-0.010126f, -0.088145f, +0.024313f, +0.000561f, +0.000239f}, - {+0.009822f, -0.024986f, +0.000140f, +0.000383f, +0.000001f}, - {-0.022780f, -0.006413f, +0.006349f, +0.001513f, -0.000089f}, - {+0.014962f, -0.135165f, -0.012780f, -0.000522f, +0.000019f}, - {-0.023635f, -0.027393f, -0.008518f, +0.000542f, -0.000051f} - }, - { - {-0.129287f, -0.488427f, -0.015298f, +0.003330f, +0.000032f}, - {+0.025480f, +0.578744f, +0.004928f, -0.005728f, +0.000021f}, - {-0.001654f, -0.098586f, -0.003334f, +0.000763f, -0.000028f}, - {-0.033875f, -0.443496f, +0.008037f, +0.001296f, -0.000041f}, - {+0.018947f, +0.326335f, -0.012624f, -0.000806f, +0.000063f}, - {-0.025064f, -0.093936f, -0.002533f, -0.000591f, +0.000056f}, - {+0.010694f, +0.085378f, -0.009219f, -0.001445f, +0.000116f}, - {+0.036700f, -0.055426f, -0.001721f, +0.001199f, +0.000016f}, - {-0.043110f, -0.003684f, -0.012692f, -0.002555f, +0.000160f}, - {+0.008512f, +0.041967f, -0.005268f, -0.006560f, -0.000223f}, - {-0.005601f, +0.039303f, -0.001728f, +0.000112f, +0.000044f}, - {+0.035999f, -0.034895f, -0.002757f, -0.004270f, -0.000123f}, - {+0.002203f, -0.033200f, -0.001100f, -0.000045f, -0.000048f}, - {+0.016721f, +0.047214f, -0.004075f, -0.000550f, +0.000032f}, - {+0.021446f, -0.110159f, +0.004884f, +0.001124f, +0.000025f}, - {+0.032915f, +0.061006f, +0.000313f, +0.001075f, +0.000044f} - }, - { - {-0.165686f, -0.410109f, -0.015586f, -0.000896f, +0.000182f}, - {+0.225295f, +0.253817f, +0.010634f, +0.001216f, -0.000288f}, - {-0.066393f, -0.000376f, -0.002622f, -0.000038f, -0.000077f}, - {-0.130423f, -0.277756f, -0.010288f, +0.000606f, -0.000054f}, - {+0.089464f, +0.200814f, +0.007558f, -0.001360f, +0.000121f}, - {-0.004322f, -0.115904f, -0.010769f, -0.000324f, +0.000060f}, - {+0.034499f, +0.049740f, -0.008222f, -0.001335f, +0.000055f}, - {-0.046786f, +0.057680f, +0.004042f, +0.000640f, +0.000003f}, - {+0.024894f, -0.095189f, -0.014289f, -0.002426f, -0.000011f}, - {+0.005629f, +0.034211f, -0.013115f, -0.002185f, -0.000307f}, - {+0.019520f, +0.005119f, -0.001636f, -0.000261f, +0.000048f}, - {-0.038933f, +0.062477f, -0.011725f, -0.001017f, -0.000182f}, - {-0.005035f, -0.021514f, -0.003233f, -0.000466f, +0.000014f}, - {+0.007389f, +0.053217f, -0.000456f, -0.000398f, +0.000072f}, - {-0.037733f, -0.010531f, -0.003329f, +0.000340f, -0.000027f}, - {-0.003757f, +0.111811f, +0.004737f, -0.000075f, +0.000033f} - }, - { - {+0.245533f, +0.226873f, +0.035259f, -0.002770f, -0.000070f}, - {-0.206677f, -0.408421f, -0.026814f, +0.005082f, +0.000056f}, - {+0.053751f, +0.188303f, +0.009769f, -0.000688f, +0.000029f}, - {+0.149357f, +0.154463f, +0.013417f, -0.001098f, +0.000037f}, - {-0.105083f, -0.109018f, -0.007715f, +0.000799f, -0.000072f}, - {+0.025793f, -0.064751f, +0.005742f, +0.000924f, -0.000050f}, - {-0.041996f, -0.072003f, +0.001334f, +0.001959f, -0.000101f}, - {+0.008234f, +0.134619f, -0.001439f, -0.000932f, -0.000019f}, - {+0.007939f, -0.128639f, +0.012917f, +0.003363f, -0.000130f}, - {-0.013715f, -0.007050f, -0.000167f, +0.004932f, +0.000266f}, - {-0.012412f, -0.040469f, +0.000036f, +0.000063f, -0.000052f}, - {+0.005607f, +0.122490f, +0.001069f, +0.003166f, +0.000145f}, - {+0.002475f, -0.010103f, -0.001112f, +0.000172f, +0.000049f}, - {-0.026992f, -0.004924f, -0.001965f, +0.000301f, -0.000041f}, - {+0.008412f, +0.067378f, +0.003334f, -0.000633f, -0.000020f}, - {-0.034796f, +0.054935f, -0.005935f, -0.000590f, -0.000048f} - }, - { - {+0.049172f, +0.518027f, +0.003115f, +0.000335f, -0.000156f}, - {-0.120618f, -0.519623f, -0.008479f, -0.000432f, +0.000270f}, - {+0.062888f, +0.179664f, -0.000296f, +0.000157f, +0.000063f}, - {+0.019992f, +0.341262f, +0.002080f, -0.000355f, +0.000037f}, - {-0.012267f, -0.246756f, +0.001889f, +0.000730f, -0.000091f}, - {-0.028297f, +0.020937f, +0.002730f, +0.000026f, -0.000039f}, - {-0.008636f, -0.121054f, +0.007814f, +0.000720f, -0.000014f}, - {+0.046484f, +0.071961f, +0.002387f, -0.000455f, +0.000002f}, - {-0.042652f, -0.042219f, +0.005353f, +0.001621f, +0.000061f}, - {+0.003781f, -0.030870f, +0.013170f, +0.002144f, +0.000211f}, - {-0.016747f, -0.033277f, -0.000186f, +0.000012f, -0.000031f}, - {+0.038322f, +0.079239f, +0.009485f, +0.001067f, +0.000129f}, - {-0.009213f, +0.006178f, +0.001082f, +0.000202f, -0.000029f}, - {+0.017679f, -0.071909f, +0.003357f, +0.000147f, -0.000056f}, - {+0.031925f, +0.035422f, +0.000231f, -0.000251f, +0.000032f}, - {+0.027629f, -0.047451f, +0.003771f, -0.000092f, -0.000016f} - }, - { - {-0.277356f, +0.009713f, -0.040871f, +0.002128f, +0.000098f}, - {+0.288048f, +0.119309f, +0.040772f, -0.004167f, -0.000126f}, - {-0.135614f, -0.121199f, -0.015970f, +0.000584f, -0.000025f}, - {-0.147900f, +0.068278f, -0.021757f, +0.001011f, -0.000028f}, - {+0.111155f, -0.046512f, +0.012782f, -0.000892f, +0.000069f}, - {+0.020452f, +0.099912f, +0.003632f, -0.000896f, +0.000036f}, - {+0.051789f, -0.026841f, -0.000416f, -0.002061f, +0.000070f}, - {-0.048315f, -0.075067f, -0.004473f, +0.000718f, +0.000020f}, - {+0.038466f, +0.097321f, -0.002604f, -0.003632f, +0.000080f}, - {+0.012250f, -0.014195f, -0.001656f, -0.003568f, -0.000272f}, - {+0.029260f, +0.036443f, +0.002521f, -0.000109f, +0.000054f}, - {-0.049141f, -0.042766f, -0.002001f, -0.002307f, -0.000147f}, - {+0.016365f, +0.045379f, +0.003479f, +0.000052f, -0.000044f}, - {+0.016380f, -0.068248f, +0.002419f, -0.000284f, +0.000043f}, - {-0.026309f, -0.049393f, -0.000660f, +0.000389f, +0.000012f}, - {+0.020013f, -0.061398f, +0.001390f, +0.000285f, +0.000045f} - }, - { - {+0.056395f, -0.497410f, +0.010462f, +0.000112f, +0.000123f}, - {-0.008278f, +0.564708f, -0.007533f, -0.000534f, -0.000224f}, - {+0.029776f, -0.375504f, +0.009908f, -0.000167f, -0.000056f}, - {+0.053843f, -0.247636f, +0.011973f, +0.000305f, -0.000030f}, - {-0.047919f, +0.200610f, -0.011974f, -0.000485f, +0.000070f}, - {+0.001747f, +0.136529f, -0.008548f, +0.000030f, +0.000031f}, - {-0.034659f, +0.098248f, -0.009286f, -0.000733f, -0.000004f}, - {-0.013390f, -0.125590f, +0.000347f, +0.000408f, -0.000006f}, - {+0.018416f, +0.125823f, -0.010099f, -0.001587f, -0.000079f}, - {-0.015670f, +0.020509f, -0.010455f, -0.001886f, -0.000130f}, - {+0.001269f, +0.078191f, -0.000719f, +0.000060f, +0.000015f}, - {+0.015954f, -0.139586f, -0.005155f, -0.000966f, -0.000087f}, - {-0.000690f, +0.074979f, -0.002970f, -0.000046f, +0.000040f}, - {-0.036315f, +0.016998f, -0.007922f, -0.000063f, +0.000042f}, - {-0.017947f, -0.053543f, -0.003628f, +0.000169f, -0.000034f}, - {-0.036250f, +0.025051f, -0.004463f, +0.000134f, +0.000003f} - }, - { - {+0.261565f, -0.175456f, +0.039964f, -0.001605f, -0.000112f}, - {-0.289123f, +0.124032f, -0.042209f, +0.003292f, +0.000173f}, - {+0.147448f, -0.202794f, +0.013343f, -0.000451f, +0.000021f}, - {+0.111431f, -0.158046f, +0.014055f, -0.000866f, +0.000018f}, - {-0.088516f, +0.135597f, -0.008911f, +0.000941f, -0.000062f}, - {-0.046542f, +0.074771f, +0.001267f, +0.000681f, -0.000024f}, - {-0.008851f, +0.134457f, +0.003904f, +0.001907f, -0.000040f}, - {+0.057725f, -0.011782f, +0.007446f, -0.000690f, -0.000019f}, - {-0.064453f, -0.009485f, -0.001505f, +0.003482f, -0.000032f}, - {+0.003750f, +0.043297f, +0.001696f, +0.002710f, +0.000254f}, - {-0.036881f, +0.019154f, -0.003756f, +0.000164f, -0.000052f}, - {+0.028484f, -0.127049f, +0.000373f, +0.001785f, +0.000137f}, - {-0.030494f, +0.034591f, -0.002192f, -0.000165f, +0.000035f}, - {+0.009470f, +0.091778f, +0.004810f, +0.000325f, -0.000042f}, - {+0.029100f, +0.027840f, +0.006520f, -0.000311f, -0.000006f}, - {-0.009135f, +0.066628f, -0.000798f, -0.000116f, -0.000038f} - }, - { - {-0.134646f, +0.431836f, -0.022252f, -0.000261f, -0.000089f}, - {+0.108773f, -0.480556f, +0.020213f, +0.000915f, +0.000164f}, - {-0.157283f, +0.252511f, -0.017953f, +0.000158f, +0.000053f}, - {-0.096912f, +0.162399f, -0.016830f, -0.000259f, +0.000029f}, - {+0.094935f, -0.145981f, +0.017427f, +0.000284f, -0.000058f}, - {+0.078691f, -0.105220f, +0.009040f, +0.000009f, -0.000031f}, - {+0.032041f, +0.084421f, +0.004353f, +0.000773f, +0.000002f}, - {-0.016068f, +0.102075f, -0.005241f, -0.000269f, +0.000010f}, - {+0.027628f, -0.144744f, +0.013233f, +0.001492f, +0.000070f}, - {+0.013497f, +0.033838f, +0.009244f, +0.001447f, +0.000073f}, - {+0.020163f, -0.066780f, +0.002771f, -0.000069f, -0.000003f}, - {-0.051113f, -0.013125f, +0.004746f, +0.000733f, +0.000056f}, - {+0.038408f, -0.068407f, +0.004887f, -0.000113f, -0.000046f}, - {+0.039739f, +0.052992f, +0.003676f, -0.000005f, -0.000032f}, - {+0.019468f, +0.046585f, -0.000417f, -0.000092f, +0.000032f}, - {+0.046026f, -0.019351f, +0.006238f, -0.000147f, +0.000005f} - }, - { - {-0.227969f, +0.284525f, -0.035118f, +0.001170f, +0.000113f}, - {+0.251619f, -0.250783f, +0.039635f, -0.002380f, -0.000192f}, - {-0.028234f, +0.444181f, -0.004258f, +0.000378f, -0.000019f}, - {-0.057970f, +0.223549f, -0.006095f, +0.000655f, -0.000012f}, - {+0.039868f, -0.230386f, +0.002246f, -0.000818f, +0.000054f}, - {-0.036223f, -0.280336f, -0.007555f, -0.000539f, +0.000017f}, - {-0.045995f, -0.019070f, -0.002489f, -0.001639f, +0.000020f}, - {-0.058114f, +0.032997f, -0.008873f, +0.000662f, +0.000018f}, - {+0.053231f, -0.094713f, +0.003411f, -0.002983f, -0.000000f}, - {-0.022768f, -0.016336f, -0.003117f, -0.002216f, -0.000227f}, - {+0.031511f, -0.045619f, +0.004901f, -0.000227f, +0.000048f}, - {+0.045006f, +0.127523f, +0.002107f, -0.001382f, -0.000124f}, - {-0.004533f, -0.139114f, -0.003073f, +0.000203f, -0.000026f}, - {-0.046710f, -0.071863f, -0.004169f, -0.000343f, +0.000040f}, - {-0.053226f, -0.067429f, -0.008363f, +0.000293f, +0.000001f}, - {-0.008131f, -0.104415f, -0.002326f, +0.000063f, +0.000032f} - }, - { - {+0.193626f, -0.362707f, +0.031027f, +0.000215f, +0.000061f}, - {-0.168437f, +0.394610f, -0.030765f, -0.000832f, -0.000106f}, - {+0.166845f, +0.150839f, +0.019333f, -0.000239f, -0.000053f}, - {+0.108632f, -0.026149f, +0.014836f, +0.000210f, -0.000033f}, - {-0.117845f, +0.006812f, -0.017402f, -0.000161f, +0.000052f}, - {-0.070459f, -0.240877f, -0.004084f, +0.000089f, +0.000035f}, - {+0.051571f, -0.166446f, +0.000272f, -0.000594f, +0.000009f}, - {+0.048610f, -0.137567f, +0.012351f, +0.000122f, -0.000012f}, - {-0.060459f, +0.077161f, -0.017457f, -0.001202f, -0.000048f}, - {+0.008901f, -0.071218f, -0.004889f, -0.001056f, -0.000035f}, - {-0.035581f, +0.061262f, -0.007127f, +0.000111f, -0.000006f}, - {-0.009360f, +0.207644f, -0.007254f, -0.000645f, -0.000037f}, - {-0.043066f, -0.091054f, -0.000390f, +0.000159f, +0.000048f}, - {-0.006722f, -0.129159f, -0.003572f, +0.000128f, +0.000025f}, - {+0.002648f, -0.158951f, +0.005371f, +0.000083f, -0.000030f}, - {-0.052294f, -0.037930f, -0.006102f, +0.000171f, -0.000010f} - }, - { - {+0.185388f, -0.373945f, +0.028242f, -0.000870f, -0.000107f}, - {-0.218466f, +0.313607f, -0.033711f, +0.001650f, +0.000187f}, - {-0.089184f, -0.227856f, -0.003013f, -0.000234f, +0.000019f}, - {-0.005910f, -0.195725f, +0.001490f, -0.000426f, +0.000010f}, - {+0.033058f, +0.233100f, +0.003881f, +0.000583f, -0.000049f}, - {+0.128077f, +0.046310f, +0.008240f, +0.000349f, -0.000015f}, - {+0.004052f, -0.247839f, -0.003163f, +0.001295f, -0.000012f}, - {+0.052459f, -0.138631f, +0.002655f, -0.000517f, -0.000018f}, - {-0.024548f, +0.123596f, -0.001667f, +0.002422f, +0.000013f}, - {+0.026309f, -0.052058f, +0.001607f, +0.001982f, +0.000202f}, - {-0.029154f, +0.072410f, -0.002905f, +0.000210f, -0.000043f}, - {-0.051381f, +0.149021f, +0.000115f, +0.001232f, +0.000111f}, - {+0.060324f, +0.057180f, +0.002547f, -0.000144f, +0.000020f}, - {+0.052887f, -0.036634f, +0.006886f, +0.000170f, -0.000037f}, - {+0.075539f, -0.053066f, +0.006319f, -0.000332f, +0.000001f}, - {+0.036656f, +0.098177f, +0.004589f, -0.000133f, -0.000026f} - }, - { - {-0.239844f, +0.276952f, -0.036663f, -0.000075f, -0.000041f}, - {+0.218935f, -0.356480f, +0.037109f, +0.000536f, +0.000063f}, - {-0.067555f, -0.247328f, -0.016085f, +0.000198f, +0.000054f}, - {-0.065557f, -0.103844f, -0.011325f, -0.000270f, +0.000037f}, - {+0.082669f, +0.157628f, +0.013419f, +0.000257f, -0.000050f}, - {-0.051102f, +0.310690f, -0.001856f, -0.000105f, -0.000038f}, - {-0.105915f, -0.086143f, -0.002835f, +0.000369f, -0.000019f}, - {-0.108427f, +0.103999f, -0.015274f, -0.000237f, +0.000014f}, - {+0.072751f, -0.025221f, +0.019360f, +0.000835f, +0.000029f}, - {-0.042856f, +0.056448f, +0.001929f, +0.000741f, +0.000011f}, - {+0.068206f, -0.080584f, +0.011613f, -0.000093f, +0.000013f}, - {+0.091336f, -0.056612f, +0.010772f, +0.000543f, +0.000024f}, - {-0.026414f, +0.186526f, -0.002964f, -0.000133f, -0.000049f}, - {-0.024927f, +0.082144f, -0.001315f, +0.000035f, -0.000020f}, - {-0.062843f, +0.155369f, -0.009444f, -0.000091f, +0.000028f}, - {+0.038812f, +0.095103f, +0.003754f, -0.000076f, +0.000012f} - }, - { - {-0.131680f, +0.440943f, -0.020891f, +0.000627f, +0.000098f}, - {+0.183833f, -0.406966f, +0.027778f, -0.001207f, -0.000171f}, - {+0.086183f, -0.003067f, +0.012386f, +0.000168f, -0.000020f}, - {+0.026332f, +0.035398f, +0.002657f, +0.000383f, -0.000011f}, - {-0.076464f, -0.083380f, -0.010071f, -0.000597f, +0.000047f}, - {-0.086834f, +0.252931f, -0.010256f, -0.000250f, +0.000016f}, - {+0.112579f, +0.244861f, +0.011209f, -0.001100f, +0.000012f}, - {+0.018202f, +0.300605f, +0.006408f, +0.000602f, +0.000018f}, - {-0.003044f, -0.137405f, -0.002719f, -0.002137f, -0.000013f}, - {+0.003641f, +0.131818f, +0.001737f, -0.001737f, -0.000181f}, - {-0.001297f, -0.195950f, -0.005713f, -0.000204f, +0.000037f}, - {-0.045795f, -0.259231f, -0.005407f, -0.001178f, -0.000100f}, - {-0.039454f, +0.170156f, -0.000777f, +0.000115f, -0.000018f}, - {-0.040004f, +0.055755f, -0.008185f, -0.000317f, +0.000034f}, - {-0.043921f, +0.182226f, -0.005163f, +0.000395f, -0.000002f}, - {-0.058367f, -0.053246f, -0.007857f, +0.000065f, +0.000022f} - }, - { - {+0.266519f, -0.168414f, +0.039980f, +0.000112f, +0.000029f}, - {-0.270044f, +0.288912f, -0.044466f, -0.000374f, -0.000037f}, - {+0.013148f, +0.108379f, +0.008696f, -0.000082f, -0.000056f}, - {+0.007547f, +0.066767f, +0.004336f, +0.000293f, -0.000040f}, - {-0.013959f, -0.178267f, -0.007930f, -0.000231f, +0.000050f}, - {+0.126652f, -0.073753f, +0.010940f, +0.000032f, +0.000041f}, - {+0.037971f, +0.357198f, -0.003626f, -0.000116f, +0.000025f}, - {+0.123814f, +0.144678f, +0.015962f, +0.000194f, -0.000018f}, - {-0.073603f, -0.033162f, -0.018399f, -0.000381f, -0.000019f}, - {+0.052463f, +0.055986f, -0.001868f, -0.000682f, +0.000008f}, - {-0.099011f, -0.055743f, -0.009504f, +0.000033f, -0.000019f}, - {-0.066616f, -0.234328f, -0.006904f, -0.000399f, -0.000016f}, - {+0.081064f, -0.004874f, +0.003489f, +0.000036f, +0.000052f}, - {+0.044214f, -0.078007f, +0.004257f, +0.000035f, +0.000016f}, - {+0.107368f, -0.054956f, +0.018386f, -0.000009f, -0.000028f}, - {-0.008996f, -0.126597f, -0.002978f, +0.000081f, -0.000014f} - }, - { - {+0.076584f, -0.456777f, +0.013253f, -0.000677f, -0.000090f}, - {-0.135714f, +0.493797f, -0.019817f, +0.001205f, +0.000155f}, - {-0.049801f, +0.003798f, -0.009316f, -0.000287f, +0.000022f}, - {+0.008289f, +0.072460f, +0.002582f, -0.000487f, +0.000014f}, - {+0.058361f, -0.066933f, +0.007899f, +0.000705f, -0.000047f}, - {-0.024939f, -0.304082f, -0.002238f, +0.000320f, -0.000018f}, - {-0.164640f, +0.054259f, -0.014251f, +0.000972f, -0.000016f}, - {-0.129320f, -0.239583f, -0.014072f, -0.000614f, -0.000019f}, - {+0.023151f, +0.107790f, +0.002402f, +0.001999f, +0.000009f}, - {-0.042244f, -0.087154f, -0.004003f, +0.001651f, +0.000165f}, - {+0.087421f, +0.223827f, +0.009440f, +0.000302f, -0.000032f}, - {+0.123261f, +0.040927f, +0.008130f, +0.001094f, +0.000093f}, - {-0.047678f, -0.191325f, -0.003834f, -0.000119f, +0.000015f}, - {+0.025350f, -0.109559f, +0.002027f, +0.000400f, -0.000032f}, - {-0.031404f, -0.277712f, -0.007376f, -0.000280f, +0.000002f}, - {+0.054594f, -0.026570f, +0.007177f, +0.000010f, -0.000018f} - }, - { - {-0.274121f, +0.081952f, -0.043113f, -0.000004f, -0.000021f}, - {+0.317778f, -0.199223f, +0.049734f, +0.000202f, +0.000022f}, - {-0.015529f, -0.058172f, -0.001453f, +0.000253f, +0.000058f}, - {+0.020112f, +0.056461f, -0.003930f, -0.000113f, +0.000042f}, - {-0.027311f, +0.065956f, +0.001130f, -0.000048f, -0.000049f}, - {-0.092570f, -0.201332f, -0.007025f, -0.000092f, -0.000044f}, - {+0.078874f, -0.299423f, +0.007522f, +0.000058f, -0.000026f}, - {-0.031803f, -0.392121f, -0.002719f, +0.000010f, +0.000023f}, - {+0.078295f, +0.019932f, +0.020674f, +0.000126f, +0.000017f}, - {-0.029291f, -0.096155f, -0.000322f, +0.000490f, -0.000025f}, - {+0.042190f, +0.292546f, +0.004474f, -0.000130f, +0.000023f}, - {-0.047310f, +0.289378f, +0.003082f, +0.000264f, +0.000009f}, - {-0.036042f, -0.202365f, -0.005972f, -0.000021f, -0.000059f}, - {-0.067032f, +0.032496f, -0.007059f, -0.000199f, -0.000013f}, - {-0.101204f, -0.185795f, -0.005848f, +0.000042f, +0.000029f}, - {-0.006759f, +0.066549f, -0.000681f, -0.000136f, +0.000016f} - }, - { - {-0.033486f, +0.450867f, -0.006565f, +0.000576f, +0.000085f}, - {+0.061876f, -0.590080f, +0.009764f, -0.001166f, -0.000147f}, - {+0.051215f, +0.040728f, +0.006725f, +0.000135f, -0.000027f}, - {-0.075886f, -0.090288f, -0.009577f, +0.000383f, -0.000018f}, - {-0.015185f, +0.082124f, -0.005184f, -0.000502f, +0.000049f}, - {+0.096327f, +0.079550f, +0.006514f, -0.000328f, +0.000021f}, - {+0.097424f, -0.250345f, +0.019698f, -0.001078f, +0.000017f}, - {+0.169040f, -0.091237f, +0.017597f, +0.000283f, +0.000017f}, - {-0.049945f, -0.183685f, -0.013171f, -0.002034f, -0.000009f}, - {+0.051580f, +0.036720f, +0.010126f, -0.001380f, -0.000151f}, - {-0.125504f, +0.039269f, -0.013578f, -0.000208f, +0.000027f}, - {-0.070511f, +0.247836f, -0.009393f, -0.000912f, -0.000087f}, - {+0.075408f, -0.033832f, +0.006471f, +0.000223f, -0.000010f}, - {+0.010281f, +0.155017f, +0.004289f, -0.000279f, +0.000029f}, - {+0.128761f, +0.151968f, +0.010917f, +0.000111f, -0.000004f}, - {-0.047805f, -0.002840f, -0.010782f, -0.000029f, +0.000015f} - }, - { - {+0.280158f, -0.030000f, +0.043460f, +0.000075f, +0.000014f}, - {-0.336614f, +0.016258f, -0.050302f, -0.000297f, -0.000011f}, - {+0.002372f, +0.120514f, -0.000413f, -0.000319f, -0.000061f}, - {+0.016063f, -0.229902f, +0.006035f, +0.000097f, -0.000043f}, - {+0.028633f, +0.007390f, +0.002007f, +0.000039f, +0.000048f}, - {-0.005134f, +0.220494f, +0.003892f, +0.000252f, +0.000046f}, - {-0.096636f, +0.051599f, -0.015635f, +0.000127f, +0.000026f}, - {-0.105407f, +0.323356f, -0.007410f, +0.000133f, -0.000028f}, - {-0.087018f, -0.141885f, -0.014985f, +0.000005f, -0.000018f}, - {+0.018235f, +0.085003f, -0.002078f, -0.000390f, +0.000041f}, - {+0.049559f, -0.222425f, +0.001760f, +0.000043f, -0.000027f}, - {+0.087658f, +0.008493f, +0.002149f, -0.000327f, -0.000002f}, - {-0.025991f, +0.110117f, +0.002501f, +0.000106f, +0.000066f}, - {+0.073066f, +0.062410f, +0.006753f, +0.000139f, +0.000010f}, - {-0.012343f, +0.361812f, +0.000879f, +0.000019f, -0.000031f}, - {+0.008849f, -0.097553f, +0.003670f, +0.000140f, -0.000018f} - }, - { - {-0.006954f, -0.470379f, -0.000165f, -0.000551f, -0.000082f}, - {+0.019214f, +0.554319f, -0.001599f, +0.001129f, +0.000145f}, - {-0.050232f, +0.045555f, -0.004649f, -0.000015f, +0.000034f}, - {+0.117286f, -0.075343f, +0.011788f, -0.000390f, +0.000023f}, - {-0.013982f, -0.062149f, -0.000689f, +0.000526f, -0.000053f}, - {-0.064167f, +0.122065f, -0.007764f, +0.000174f, -0.000027f}, - {-0.057456f, +0.102739f, -0.012482f, +0.000929f, -0.000017f}, - {-0.086303f, +0.350740f, -0.008732f, -0.000319f, -0.000013f}, - {+0.114468f, +0.156124f, +0.012352f, +0.002008f, +0.000014f}, - {-0.063324f, -0.045704f, -0.011079f, +0.001189f, +0.000135f}, - {+0.081653f, -0.167815f, +0.010699f, +0.000264f, -0.000021f}, - {-0.009546f, -0.130825f, +0.003286f, +0.000952f, +0.000083f}, - {-0.034292f, +0.088622f, -0.006613f, -0.000382f, +0.000000f}, - {-0.064658f, -0.148003f, -0.007951f, +0.000319f, -0.000027f}, - {-0.118973f, +0.200930f, -0.010476f, -0.000078f, +0.000007f}, - {+0.061648f, -0.019855f, +0.007486f, +0.000045f, -0.000011f} - }, - { - {-0.287193f, -0.042900f, -0.042884f, -0.000074f, -0.000006f}, - {+0.316269f, +0.095647f, +0.050717f, +0.000419f, -0.000004f}, - {+0.024609f, -0.065464f, -0.001044f, +0.000352f, +0.000061f}, - {-0.090934f, +0.238549f, -0.014249f, -0.000001f, +0.000044f}, - {-0.019808f, -0.051257f, +0.001165f, -0.000156f, -0.000046f}, - {+0.048333f, -0.050030f, +0.007461f, -0.000269f, -0.000047f}, - {+0.082327f, -0.120302f, +0.020222f, -0.000034f, -0.000027f}, - {+0.165448f, -0.034472f, +0.017814f, +0.000021f, +0.000032f}, - {+0.033316f, +0.280356f, +0.011492f, -0.000020f, +0.000016f}, - {-0.008225f, -0.128802f, +0.005400f, +0.000223f, -0.000054f}, - {-0.088609f, +0.096391f, -0.012066f, -0.000087f, +0.000030f}, - {-0.036267f, -0.078389f, -0.005104f, +0.000176f, -0.000004f}, - {+0.020864f, +0.001946f, +0.003538f, -0.000159f, -0.000070f}, - {-0.031397f, -0.200648f, -0.000765f, -0.000186f, -0.000008f}, - {+0.119879f, -0.159775f, +0.011369f, +0.000002f, +0.000032f}, - {-0.036654f, +0.129414f, -0.004412f, -0.000114f, +0.000020f} - }, - { - {+0.055358f, +0.480776f, +0.007156f, +0.000440f, +0.000080f}, - {-0.069696f, -0.497403f, -0.009705f, -0.000945f, -0.000144f}, - {+0.014636f, -0.076742f, +0.003268f, +0.000063f, -0.000042f}, - {-0.098616f, +0.221987f, -0.012598f, +0.000348f, -0.000027f}, - {+0.038012f, +0.038810f, +0.004148f, -0.000514f, +0.000056f}, - {+0.010993f, -0.104517f, +0.004208f, -0.000219f, +0.000033f}, - {+0.073401f, -0.141057f, +0.006526f, -0.000916f, +0.000016f}, - {-0.033949f, -0.336614f, -0.001600f, +0.000255f, +0.000007f}, - {-0.139291f, +0.017101f, -0.017309f, -0.001860f, -0.000021f}, - {+0.085604f, +0.017452f, +0.013308f, -0.001048f, -0.000118f}, - {-0.029028f, +0.187952f, -0.005021f, -0.000216f, +0.000016f}, - {+0.006564f, -0.006493f, +0.001419f, -0.000780f, -0.000079f}, - {+0.020490f, +0.003411f, +0.006133f, +0.000307f, +0.000011f}, - {+0.091616f, -0.016927f, +0.008786f, -0.000287f, +0.000025f}, - {+0.009844f, -0.323610f, +0.003492f, +0.000078f, -0.000011f}, - {-0.056286f, +0.097814f, -0.006882f, -0.000079f, +0.000007f} - }, - { - {+0.282827f, +0.133300f, +0.042549f, +0.000086f, -0.000002f}, - {-0.297764f, -0.151816f, -0.046261f, -0.000499f, +0.000022f}, - {-0.010547f, -0.035236f, +0.000498f, -0.000494f, -0.000059f}, - {+0.144406f, -0.152441f, +0.023633f, -0.000028f, -0.000044f}, - {+0.000542f, +0.094714f, -0.004019f, +0.000229f, +0.000043f}, - {-0.041461f, -0.019853f, -0.008957f, +0.000418f, +0.000046f}, - {-0.123943f, +0.154058f, -0.020412f, +0.000069f, +0.000030f}, - {-0.130914f, -0.179670f, -0.017352f, -0.000111f, -0.000033f}, - {+0.036620f, -0.258117f, -0.000481f, +0.000034f, -0.000009f}, - {-0.021657f, +0.180451f, -0.009924f, -0.000053f, +0.000065f}, - {+0.095197f, -0.006584f, +0.013724f, +0.000061f, -0.000032f}, - {+0.011099f, -0.015338f, +0.000599f, -0.000168f, +0.000011f}, - {+0.002807f, +0.034719f, -0.003109f, +0.000353f, +0.000070f}, - {-0.041276f, +0.181885f, -0.005275f, +0.000201f, +0.000007f}, - {-0.125301f, -0.110921f, -0.015164f, -0.000039f, -0.000032f}, - {+0.066993f, -0.092159f, +0.009251f, +0.000136f, -0.000021f} - }, - { - {-0.104112f, -0.458657f, -0.013927f, -0.000353f, -0.000076f}, - {+0.111390f, +0.472799f, +0.015450f, +0.000704f, +0.000139f}, - {+0.000873f, -0.019121f, -0.001169f, -0.000093f, +0.000048f}, - {+0.056615f, -0.285336f, +0.007942f, -0.000391f, +0.000032f}, - {-0.055650f, +0.007065f, -0.007223f, +0.000546f, -0.000060f}, - {+0.018845f, +0.077039f, +0.001923f, +0.000256f, -0.000039f}, - {-0.051977f, +0.260211f, -0.006687f, +0.000819f, -0.000018f}, - {+0.110604f, +0.197201f, +0.015009f, -0.000259f, -0.000003f}, - {+0.118052f, -0.135388f, +0.015667f, +0.001612f, +0.000024f}, - {-0.098237f, +0.061993f, -0.014872f, +0.000974f, +0.000101f}, - {-0.016600f, -0.180900f, -0.001935f, +0.000217f, -0.000011f}, - {+0.024890f, +0.001895f, +0.000719f, +0.000667f, +0.000075f}, - {-0.052001f, -0.047705f, -0.008689f, -0.000203f, -0.000021f}, - {-0.051423f, +0.163687f, -0.007750f, +0.000277f, -0.000023f}, - {+0.092904f, +0.226447f, +0.010447f, -0.000087f, +0.000014f}, - {+0.029788f, -0.148840f, +0.003437f, +0.000063f, -0.000002f} - }, - { - {-0.265513f, -0.211642f, -0.040584f, -0.000055f, +0.000009f}, - {+0.279427f, +0.216928f, +0.044464f, +0.000461f, -0.000042f}, - {-0.017280f, +0.004077f, -0.001930f, +0.000533f, +0.000057f}, - {-0.175703f, +0.073912f, -0.028215f, +0.000106f, +0.000044f}, - {+0.032929f, -0.127864f, +0.007891f, -0.000307f, -0.000041f}, - {+0.023458f, +0.073855f, +0.003516f, -0.000521f, -0.000044f}, - {+0.165507f, -0.073413f, +0.027506f, -0.000119f, -0.000034f}, - {+0.058760f, +0.277549f, +0.005732f, +0.000115f, +0.000033f}, - {-0.086524f, +0.185360f, -0.006494f, -0.000114f, +0.000000f}, - {+0.068563f, -0.191058f, +0.014677f, -0.000094f, -0.000073f}, - {-0.083271f, -0.077777f, -0.010978f, -0.000035f, +0.000035f}, - {-0.032739f, +0.090968f, -0.003108f, +0.000130f, -0.000018f}, - {+0.012042f, -0.148829f, +0.005352f, -0.000453f, -0.000067f}, - {+0.074068f, -0.028523f, +0.009472f, -0.000233f, -0.000006f}, - {+0.054178f, +0.286348f, +0.004315f, +0.000011f, +0.000032f}, - {-0.081317f, +0.023039f, -0.011622f, -0.000155f, +0.000021f} - }, - { - {+0.144447f, +0.416258f, +0.019880f, +0.000298f, +0.000071f}, - {-0.149133f, -0.438088f, -0.020811f, -0.000535f, -0.000129f}, - {+0.015049f, +0.049287f, -0.000123f, +0.000146f, -0.000053f}, - {-0.004923f, +0.337598f, +0.000454f, +0.000368f, -0.000037f}, - {+0.051157f, -0.099533f, +0.006353f, -0.000530f, +0.000063f}, - {-0.036114f, -0.015276f, -0.002183f, -0.000257f, +0.000042f}, - {-0.001423f, -0.329473f, -0.000629f, -0.000758f, +0.000021f}, - {-0.137836f, -0.026570f, -0.019057f, +0.000357f, +0.000002f}, - {-0.074813f, +0.206610f, -0.009222f, -0.001398f, -0.000023f}, - {+0.082213f, -0.168162f, +0.013202f, -0.000891f, -0.000086f}, - {+0.053436f, +0.133406f, +0.007060f, -0.000274f, +0.000004f}, - {-0.031202f, +0.097339f, -0.000600f, -0.000565f, -0.000069f}, - {+0.084087f, -0.042545f, +0.010288f, +0.000114f, +0.000027f}, - {-0.011630f, -0.156396f, +0.002102f, -0.000281f, +0.000021f}, - {-0.139327f, -0.009640f, -0.015858f, +0.000166f, -0.000017f}, - {+0.001227f, +0.149601f, +0.000552f, -0.000041f, -0.000002f} - }, - { - {+0.243657f, +0.264257f, +0.037689f, -0.000001f, -0.000015f}, - {-0.259444f, -0.270037f, -0.041639f, -0.000297f, +0.000058f}, - {+0.024732f, +0.031819f, +0.004944f, -0.000508f, -0.000056f}, - {+0.188302f, +0.043036f, +0.027818f, -0.000121f, -0.000045f}, - {-0.061013f, +0.068025f, -0.009284f, +0.000332f, +0.000040f}, - {+0.005481f, -0.077635f, -0.001849f, +0.000481f, +0.000044f}, - {-0.183484f, -0.052352f, -0.028430f, +0.000255f, +0.000038f}, - {+0.021508f, -0.270954f, +0.003464f, -0.000123f, -0.000034f}, - {+0.112315f, -0.086235f, +0.009937f, +0.000307f, +0.000007f}, - {-0.107969f, +0.120398f, -0.018769f, +0.000181f, +0.000082f}, - {+0.056786f, +0.126822f, +0.007959f, +0.000033f, -0.000039f}, - {+0.069219f, -0.054400f, +0.005730f, -0.000053f, +0.000023f}, - {-0.070651f, +0.193415f, -0.010674f, +0.000389f, +0.000067f}, - {-0.051509f, -0.092171f, -0.007870f, +0.000294f, +0.000005f}, - {+0.051121f, -0.299571f, +0.006590f, -0.000024f, -0.000032f}, - {+0.084035f, +0.019475f, +0.012921f, +0.000164f, -0.000021f} - }, - { - {-0.178130f, -0.383088f, -0.025598f, -0.000261f, -0.000067f}, - {+0.182587f, +0.405974f, +0.025901f, +0.000462f, +0.000117f}, - {-0.033772f, -0.059691f, -0.003877f, -0.000106f, +0.000059f}, - {-0.056171f, -0.329183f, -0.006810f, -0.000311f, +0.000043f}, - {-0.030324f, +0.107424f, -0.007446f, +0.000469f, -0.000068f}, - {+0.029083f, -0.038828f, +0.003047f, +0.000232f, -0.000046f}, - {+0.074081f, +0.341332f, +0.009025f, +0.000675f, -0.000027f}, - {+0.114367f, -0.124510f, +0.017364f, -0.000363f, -0.000002f}, - {+0.019963f, -0.231444f, +0.001211f, +0.001284f, +0.000019f}, - {-0.044510f, +0.213643f, -0.009811f, +0.000749f, +0.000069f}, - {-0.075343f, -0.079800f, -0.011596f, +0.000341f, +0.000004f}, - {-0.002994f, -0.163592f, -0.001034f, +0.000473f, +0.000063f}, - {-0.066930f, +0.201208f, -0.008014f, -0.000114f, -0.000031f}, - {+0.046049f, +0.057169f, +0.003278f, +0.000251f, -0.000018f}, - {+0.102214f, -0.218411f, +0.013142f, -0.000169f, +0.000019f}, - {-0.034525f, -0.167091f, -0.007400f, +0.000056f, +0.000007f} - }, - { - {-0.222238f, -0.317392f, -0.033615f, +0.000033f, +0.000021f}, - {+0.241813f, +0.315693f, +0.038994f, +0.000147f, -0.000070f}, - {-0.020356f, -0.081902f, -0.002758f, +0.000479f, +0.000060f}, - {-0.167023f, -0.157180f, -0.026364f, +0.000127f, +0.000047f}, - {+0.066143f, -0.046203f, +0.014148f, -0.000357f, -0.000040f}, - {-0.022432f, +0.042335f, -0.001522f, -0.000437f, -0.000048f}, - {+0.157680f, +0.214692f, +0.024775f, -0.000379f, -0.000040f}, - {-0.074512f, +0.166548f, -0.010491f, +0.000080f, +0.000039f}, - {-0.105735f, -0.034968f, -0.008768f, -0.000539f, -0.000010f}, - {+0.123458f, -0.044963f, +0.022305f, -0.000260f, -0.000091f}, - {-0.027259f, -0.155333f, -0.002873f, -0.000021f, +0.000041f}, - {-0.074325f, -0.052152f, -0.007210f, -0.000007f, -0.000026f}, - {+0.123302f, -0.087187f, +0.015137f, -0.000263f, -0.000074f}, - {+0.007845f, +0.113256f, +0.003459f, -0.000313f, -0.000004f}, - {-0.120092f, +0.122041f, -0.014660f, +0.000024f, +0.000034f}, - {-0.076429f, -0.107035f, -0.008690f, -0.000173f, +0.000022f} - }, - { - {+0.213344f, +0.349398f, +0.030097f, +0.000237f, +0.000063f}, - {-0.219215f, -0.390772f, -0.031915f, -0.000487f, -0.000107f}, - {+0.052529f, +0.029499f, +0.005648f, -0.000100f, -0.000070f}, - {+0.095709f, +0.245511f, +0.012927f, +0.000199f, -0.000053f}, - {+0.028737f, -0.105483f, +0.003866f, -0.000348f, +0.000076f}, - {-0.013337f, +0.055289f, -0.001002f, -0.000053f, +0.000054f}, - {-0.130180f, -0.225228f, -0.015900f, -0.000591f, +0.000035f}, - {-0.068381f, +0.171403f, -0.012635f, +0.000260f, +0.000000f}, - {+0.025988f, +0.167605f, +0.004069f, -0.001280f, -0.000015f}, - {+0.008972f, -0.221115f, +0.003663f, -0.000531f, -0.000048f}, - {+0.090641f, +0.028424f, +0.013918f, -0.000378f, -0.000016f}, - {+0.038654f, +0.120101f, +0.004990f, -0.000461f, -0.000057f}, - {+0.005905f, -0.263875f, +0.003095f, +0.000269f, +0.000040f}, - {-0.040815f, +0.035273f, -0.004946f, -0.000197f, +0.000014f}, - {-0.018746f, +0.272655f, -0.004798f, +0.000121f, -0.000023f}, - {+0.076538f, +0.124942f, +0.010206f, -0.000084f, -0.000014f} - }, - { - {+0.192920f, +0.381741f, +0.029300f, -0.000048f, -0.000026f}, - {-0.222170f, -0.388402f, -0.034955f, -0.000099f, +0.000080f}, - {+0.001699f, +0.107240f, +0.000947f, -0.000519f, -0.000066f}, - {+0.136658f, +0.180309f, +0.023176f, -0.000174f, -0.000048f}, - {-0.088774f, +0.075575f, -0.016123f, +0.000436f, +0.000040f}, - {+0.024745f, -0.004479f, +0.001974f, +0.000454f, +0.000055f}, - {-0.102774f, -0.266722f, -0.019008f, +0.000449f, +0.000041f}, - {+0.092562f, -0.080882f, +0.015366f, -0.000075f, -0.000049f}, - {+0.070990f, +0.091884f, +0.006305f, +0.000702f, +0.000009f}, - {-0.128422f, -0.011753f, -0.022348f, +0.000409f, +0.000098f}, - {-0.011288f, +0.189192f, -0.003841f, -0.000041f, -0.000039f}, - {+0.054725f, +0.090752f, +0.006454f, +0.000058f, +0.000028f}, - {-0.128788f, -0.054495f, -0.017806f, +0.000292f, +0.000085f}, - {+0.020286f, -0.059861f, +0.001026f, +0.000246f, +0.000006f}, - {+0.120848f, +0.054441f, +0.017027f, -0.000075f, -0.000037f}, - {+0.034321f, +0.188962f, +0.004725f, +0.000162f, -0.000021f} - }, - { - {-0.244141f, -0.287056f, -0.034191f, -0.000192f, -0.000058f}, - {+0.264405f, +0.355877f, +0.037791f, +0.000515f, +0.000101f}, - {-0.059687f, +0.011038f, -0.007243f, +0.000348f, +0.000093f}, - {-0.113575f, -0.207201f, -0.018101f, -0.000078f, +0.000070f}, - {-0.015137f, +0.192002f, +0.000035f, +0.000213f, -0.000092f}, - {+0.000786f, -0.038825f, +0.000032f, -0.000190f, -0.000073f}, - {+0.148464f, +0.121467f, +0.020501f, +0.000551f, -0.000044f}, - {+0.029628f, -0.179066f, +0.005364f, -0.000049f, +0.000007f}, - {-0.038114f, -0.078616f, -0.007491f, +0.001320f, +0.000017f}, - {+0.025506f, +0.225558f, +0.001578f, +0.000313f, +0.000019f}, - {-0.093865f, +0.065189f, -0.011642f, +0.000361f, +0.000030f}, - {-0.055369f, -0.081537f, -0.009138f, +0.000492f, +0.000055f}, - {+0.051502f, +0.222620f, +0.004584f, -0.000598f, -0.000061f}, - {+0.019309f, -0.058544f, +0.003257f, +0.000181f, -0.000009f}, - {-0.051402f, -0.209177f, -0.004739f, -0.000005f, +0.000032f}, - {-0.088918f, +0.001217f, -0.011717f, +0.000085f, +0.000023f} - }, - { - {-0.156411f, -0.421444f, -0.024491f, +0.000067f, +0.000032f}, - {+0.186613f, +0.476552f, +0.029757f, +0.000163f, -0.000095f}, - {+0.020430f, -0.113691f, +0.002893f, +0.000775f, +0.000065f}, - {-0.119151f, -0.201740f, -0.018300f, +0.000297f, +0.000045f}, - {+0.119879f, -0.010231f, +0.016974f, -0.000596f, -0.000034f}, - {-0.016380f, -0.009027f, -0.002417f, -0.000683f, -0.000057f}, - {+0.054627f, +0.269651f, +0.010810f, -0.000526f, -0.000040f}, - {-0.097390f, +0.017005f, -0.015311f, +0.000161f, +0.000060f}, - {-0.042266f, -0.067204f, -0.002884f, -0.000753f, -0.000009f}, - {+0.124653f, +0.076460f, +0.020814f, -0.000683f, -0.000097f}, - {+0.063103f, -0.174209f, +0.008521f, +0.000147f, +0.000032f}, - {-0.034711f, -0.112933f, -0.002461f, -0.000059f, -0.000029f}, - {+0.100579f, +0.144714f, +0.014721f, -0.000551f, -0.000093f}, - {-0.025957f, +0.015194f, -0.003388f, -0.000192f, -0.000011f}, - {-0.076574f, -0.167585f, -0.012107f, +0.000148f, +0.000039f}, - {+0.014876f, -0.155274f, +0.000070f, -0.000119f, +0.000015f} - }, - { - {+0.265430f, +0.225416f, +0.037831f, +0.000115f, +0.000053f}, - {-0.306311f, -0.277325f, -0.043227f, -0.000433f, -0.000096f}, - {+0.056945f, -0.056467f, +0.006568f, -0.000476f, -0.000127f}, - {+0.136114f, +0.189590f, +0.020608f, +0.000082f, -0.000092f}, - {-0.029899f, -0.236698f, -0.003149f, -0.000187f, +0.000112f}, - {-0.002353f, +0.011865f, +0.000725f, +0.000346f, +0.000104f}, - {-0.149926f, -0.044328f, -0.020529f, -0.000533f, +0.000055f}, - {+0.006499f, +0.177667f, -0.000005f, -0.000147f, -0.000024f}, - {+0.030173f, +0.047667f, +0.008504f, -0.001253f, -0.000024f}, - {-0.058868f, -0.204995f, -0.005519f, -0.000216f, +0.000017f}, - {+0.060797f, -0.176638f, +0.008488f, -0.000290f, -0.000044f}, - {+0.066026f, +0.042360f, +0.010165f, -0.000503f, -0.000055f}, - {-0.083588f, -0.140991f, -0.010070f, +0.000860f, +0.000099f}, - {-0.004801f, +0.048462f, -0.000139f, -0.000150f, +0.000006f}, - {+0.080388f, +0.074103f, +0.009601f, -0.000068f, -0.000044f}, - {+0.065811f, -0.073786f, +0.011524f, -0.000018f, -0.000032f} - }, - { - {+0.119762f, +0.449669f, +0.018731f, -0.000115f, -0.000039f}, - {-0.134482f, -0.541069f, -0.022864f, -0.000250f, +0.000117f}, - {-0.042132f, +0.097515f, -0.006293f, -0.001210f, -0.000046f}, - {+0.098328f, +0.249713f, +0.014715f, -0.000530f, -0.000029f}, - {-0.121827f, -0.094517f, -0.018717f, +0.000823f, +0.000016f}, - {+0.013897f, -0.016128f, +0.002834f, +0.001121f, +0.000043f}, - {-0.013035f, -0.259005f, -0.004212f, +0.000650f, +0.000036f}, - {+0.088488f, +0.051805f, +0.014091f, -0.000366f, -0.000066f}, - {+0.034103f, +0.039837f, +0.000657f, +0.000674f, +0.000017f}, - {-0.110624f, -0.126988f, -0.019030f, +0.001012f, +0.000081f}, - {-0.093230f, +0.059767f, -0.012720f, -0.000213f, -0.000018f}, - {+0.010158f, +0.127393f, -0.000864f, -0.000011f, +0.000034f}, - {-0.063926f, -0.170726f, -0.009503f, +0.001011f, +0.000084f}, - {+0.027512f, -0.003892f, +0.003562f, +0.000233f, +0.000020f}, - {+0.023442f, +0.159229f, +0.006050f, -0.000235f, -0.000035f}, - {-0.037775f, +0.088532f, -0.005468f, +0.000062f, -0.000004f} - }, - { - {-0.281213f, -0.164420f, -0.039852f, -0.000042f, -0.000045f}, - {+0.333286f, +0.175696f, +0.047590f, +0.000222f, +0.000083f}, - {-0.046428f, +0.089416f, -0.005265f, +0.000281f, +0.000164f}, - {-0.162498f, -0.149672f, -0.023881f, -0.000229f, +0.000114f}, - {+0.075028f, +0.208672f, +0.010268f, +0.000343f, -0.000132f}, - {+0.011727f, -0.019516f, -0.000540f, -0.000212f, -0.000139f}, - {+0.140528f, -0.025264f, +0.018383f, +0.000497f, -0.000067f}, - {-0.033739f, -0.136327f, -0.003526f, +0.000118f, +0.000049f}, - {-0.027078f, -0.053959f, -0.007554f, +0.001057f, +0.000031f}, - {+0.086060f, +0.177107f, +0.010290f, +0.000364f, -0.000050f}, - {-0.010787f, +0.184727f, -0.002953f, +0.000174f, +0.000054f}, - {-0.067502f, +0.008050f, -0.010245f, +0.000436f, +0.000057f}, - {+0.094254f, +0.075792f, +0.012552f, -0.000706f, -0.000144f}, - {-0.009743f, -0.063892f, -0.003613f, +0.000014f, -0.000006f}, - {-0.069093f, +0.013884f, -0.010485f, -0.000027f, +0.000058f}, - {-0.040587f, +0.086338f, -0.006898f, -0.000093f, +0.000039f} - }, - { - {-0.083222f, -0.468035f, -0.013503f, +0.000232f, +0.000044f}, - {+0.075896f, +0.571385f, +0.014672f, +0.000160f, -0.000148f}, - {+0.064646f, -0.084083f, +0.009714f, +0.001578f, +0.000001f}, - {-0.061670f, -0.306739f, -0.009048f, +0.000650f, -0.000001f}, - {+0.101027f, +0.169945f, +0.015494f, -0.000962f, +0.000016f}, - {-0.029442f, +0.045651f, -0.004343f, -0.001546f, -0.000004f}, - {-0.024934f, +0.231230f, -0.000602f, -0.000728f, -0.000028f}, - {-0.072285f, -0.076179f, -0.012914f, +0.000746f, +0.000059f}, - {-0.032566f, -0.041990f, -0.000543f, -0.000656f, -0.000034f}, - {+0.090764f, +0.173219f, +0.015307f, -0.001207f, -0.000044f}, - {+0.090276f, +0.027741f, +0.013865f, +0.000091f, -0.000003f}, - {+0.018263f, -0.122358f, +0.003953f, +0.000094f, -0.000045f}, - {+0.030642f, +0.175289f, +0.004377f, -0.001562f, -0.000047f}, - {-0.023328f, -0.044760f, -0.001438f, -0.000338f, -0.000032f}, - {+0.006646f, -0.104149f, -0.000978f, +0.000365f, +0.000024f}, - {+0.048240f, -0.050757f, +0.006981f, -0.000141f, -0.000013f} - }, - { - {+0.293187f, +0.109518f, +0.041947f, +0.000007f, +0.000034f}, - {-0.344718f, -0.073613f, -0.049496f, +0.000072f, -0.000056f}, - {+0.021693f, -0.150854f, +0.000496f, +0.000303f, -0.000187f}, - {+0.175693f, +0.054150f, +0.024494f, +0.000572f, -0.000126f}, - {-0.106866f, -0.149507f, -0.014360f, -0.000666f, +0.000140f}, - {-0.005446f, +0.082692f, +0.002403f, -0.000314f, +0.000163f}, - {-0.114767f, +0.094767f, -0.014918f, -0.000548f, +0.000078f}, - {+0.049475f, +0.114052f, +0.007022f, +0.000118f, -0.000074f}, - {+0.031125f, +0.054985f, +0.008404f, -0.000705f, -0.000030f}, - {-0.107661f, -0.132716f, -0.012982f, -0.000706f, +0.000070f}, - {-0.028176f, -0.155327f, -0.002943f, -0.000018f, -0.000055f}, - {+0.051419f, -0.071483f, +0.007973f, -0.000234f, -0.000055f}, - {-0.090400f, -0.012443f, -0.011441f, +0.000118f, +0.000180f}, - {+0.025522f, +0.028081f, +0.003864f, +0.000120f, +0.000013f}, - {+0.045874f, -0.043114f, +0.007466f, +0.000223f, -0.000070f}, - {+0.014499f, -0.105809f, +0.003088f, +0.000276f, -0.000039f} - }, - { - {+0.046789f, +0.488561f, +0.007479f, -0.000388f, -0.000046f}, - {-0.018640f, -0.575973f, -0.005892f, +0.000203f, +0.000177f}, - {-0.079067f, +0.002856f, -0.010533f, -0.001448f, +0.000068f}, - {+0.016267f, +0.296423f, +0.004542f, -0.000403f, +0.000045f}, - {-0.068852f, -0.208415f, -0.010824f, +0.000748f, -0.000061f}, - {+0.046351f, +0.003708f, +0.005559f, +0.001546f, -0.000058f}, - {+0.047339f, -0.155305f, +0.003323f, +0.000760f, +0.000014f}, - {+0.060540f, +0.100086f, +0.009755f, -0.001008f, -0.000039f}, - {+0.028568f, +0.054083f, +0.000810f, +0.000898f, +0.000057f}, - {-0.065074f, -0.200619f, -0.010710f, +0.000928f, -0.000007f}, - {-0.072568f, -0.087920f, -0.011704f, +0.000262f, +0.000027f}, - {-0.035957f, +0.060576f, -0.005664f, -0.000112f, +0.000061f}, - {-0.005716f, -0.143119f, -0.000691f, +0.001673f, -0.000018f}, - {+0.004173f, +0.058408f, +0.000175f, +0.000594f, +0.000044f}, - {-0.014414f, +0.051132f, -0.000839f, -0.000345f, -0.000005f}, - {-0.049091f, -0.010855f, -0.005751f, +0.000426f, +0.000033f} - }, - { - {-0.304340f, -0.049256f, -0.042947f, -0.000088f, -0.000022f}, - {+0.346449f, -0.017003f, +0.049621f, -0.000139f, +0.000009f}, - {+0.019745f, +0.150866f, +0.002851f, -0.000874f, +0.000177f}, - {-0.162730f, +0.020120f, -0.025248f, -0.000808f, +0.000118f}, - {+0.121162f, +0.084738f, +0.017259f, +0.000808f, -0.000129f}, - {-0.021528f, -0.096693f, -0.003962f, +0.000943f, -0.000157f}, - {+0.080586f, -0.103642f, +0.011291f, +0.000589f, -0.000085f}, - {-0.068191f, -0.098030f, -0.009096f, -0.000708f, +0.000092f}, - {-0.036751f, -0.046076f, -0.010119f, +0.000284f, +0.000015f}, - {+0.119856f, +0.085575f, +0.015319f, +0.000749f, -0.000064f}, - {+0.056191f, +0.109851f, +0.006441f, +0.000263f, +0.000045f}, - {-0.024446f, +0.076942f, -0.005466f, -0.000057f, +0.000045f}, - {+0.077086f, -0.012676f, +0.010840f, +0.000676f, -0.000186f}, - {-0.022826f, +0.016537f, -0.004763f, -0.000058f, -0.000029f}, - {-0.027607f, +0.031101f, -0.005172f, -0.000482f, +0.000074f}, - {+0.014855f, +0.087430f, -0.000738f, -0.000308f, +0.000029f} - }, - { - {-0.005004f, -0.508800f, -0.001655f, +0.000570f, +0.000043f}, - {-0.037995f, +0.575156f, -0.001530f, -0.000956f, -0.000194f}, - {+0.063856f, +0.080957f, +0.012812f, -0.000366f, -0.000142f}, - {+0.010948f, -0.247204f, +0.002839f, -0.000988f, -0.000091f}, - {+0.037852f, +0.213873f, +0.003692f, +0.000614f, +0.000107f}, - {-0.039839f, -0.066118f, -0.007988f, -0.000076f, +0.000128f}, - {-0.045977f, +0.093672f, -0.005215f, -0.000506f, +0.000005f}, - {-0.041130f, -0.141991f, -0.007462f, +0.000858f, +0.000008f}, - {-0.021819f, -0.064730f, +0.000517f, -0.001640f, -0.000079f}, - {+0.039217f, +0.211900f, +0.002725f, +0.000921f, +0.000061f}, - {+0.045306f, +0.127706f, +0.011256f, -0.001493f, -0.000048f}, - {+0.032008f, -0.009436f, +0.005842f, -0.000094f, -0.000078f}, - {-0.004712f, +0.114810f, -0.003709f, -0.000227f, +0.000095f}, - {+0.008291f, -0.029832f, +0.002509f, -0.001272f, -0.000051f}, - {+0.010544f, -0.029052f, +0.001437f, -0.000138f, -0.000018f}, - {+0.030918f, +0.063638f, +0.005584f, -0.001227f, -0.000052f} - }, - { - {+0.309505f, -0.026680f, +0.043359f, +0.000419f, +0.000012f}, - {-0.340746f, +0.112091f, -0.048231f, -0.000694f, +0.000055f}, - {-0.050908f, -0.091302f, -0.002377f, +0.001134f, -0.000125f}, - {+0.144586f, -0.040667f, +0.026484f, +0.000403f, -0.000085f}, - {-0.123071f, -0.035557f, -0.020641f, -0.000216f, +0.000092f}, - {+0.043825f, +0.058128f, +0.002805f, -0.001548f, +0.000111f}, - {-0.057009f, +0.077140f, -0.008666f, -0.000464f, +0.000085f}, - {+0.083496f, +0.049994f, +0.012188f, +0.002184f, -0.000094f}, - {+0.041301f, +0.031775f, +0.012825f, +0.000028f, +0.000015f}, - {-0.123609f, -0.042304f, -0.020375f, +0.000225f, +0.000027f}, - {-0.072663f, -0.052460f, -0.006157f, -0.001671f, -0.000023f}, - {+0.007106f, -0.047603f, +0.003493f, +0.000487f, -0.000023f}, - {-0.066995f, +0.014584f, -0.013984f, -0.001717f, +0.000149f}, - {+0.012333f, -0.023056f, +0.004831f, -0.000535f, +0.000051f}, - {+0.018093f, -0.018206f, +0.005001f, +0.000871f, -0.000068f}, - {-0.032484f, -0.034633f, +0.000235f, -0.000375f, -0.000007f} + {-0.191323f, +0.550462f, -0.164703f}, + {+0.179339f, -0.105827f, -0.022109f}, + {-0.016317f, +0.069138f, -0.026386f}, + {-0.031302f, +0.044550f, -0.011983f}, + {+0.011873f, +0.049933f, -0.022817f}, + {-0.002100f, +0.025417f, -0.008917f}, + {+0.008673f, +0.072165f, -0.030658f}, + {+0.009984f, -0.046099f, +0.014260f}, + {-0.017932f, +0.200113f, -0.071972f}, + {+0.009948f, +0.076380f, -0.035799f}, + {-0.000500f, -0.013211f, +0.007415f}, + {+0.005467f, +0.017109f, -0.007909f}, + {-0.001381f, -0.024397f, +0.011565f}, + {+0.001735f, -0.017167f, +0.009148f}, + {-0.006994f, -0.015041f, +0.007364f}, + {-0.000274f, +0.004190f, -0.001467f} + }, + { + {-0.330036f, +0.333647f, -0.215680f}, + {+0.446962f, +0.557076f, +0.195252f}, + {-0.017152f, +0.086610f, -0.016060f}, + {-0.053984f, +0.030859f, -0.007361f}, + {+0.031663f, +0.050397f, -0.030580f}, + {-0.013130f, -0.075028f, -0.055072f}, + {+0.035680f, +0.080722f, -0.037346f}, + {+0.011258f, -0.044042f, +0.013548f}, + {+0.004710f, +0.152351f, -0.099878f}, + {+0.054304f, +0.216938f, +0.014289f}, + {-0.014461f, -0.090558f, -0.026436f}, + {+0.019523f, +0.056800f, +0.001967f}, + {-0.012667f, -0.065948f, -0.004877f}, + {-0.011111f, -0.088384f, -0.022179f}, + {-0.018869f, -0.025704f, +0.006997f}, + {+0.000817f, +0.008300f, +0.000651f} + }, + { + {-0.096856f, -0.591788f, +0.084769f}, + {+0.247542f, +1.016515f, +0.073842f}, + {-0.000574f, +0.046908f, -0.004371f}, + {-0.019540f, +0.031177f, -0.013825f}, + {+0.037796f, -0.124420f, +0.041797f}, + {+0.007360f, -0.192733f, -0.007619f}, + {+0.072377f, -0.160383f, +0.061576f}, + {-0.003711f, +0.021943f, -0.004227f}, + {+0.112964f, -0.363004f, +0.093285f}, + {+0.056746f, +0.090813f, +0.072980f}, + {-0.006103f, -0.134417f, -0.008866f}, + {+0.005326f, +0.101653f, -0.016759f}, + {-0.002749f, -0.090650f, +0.006843f}, + {-0.000089f, -0.179843f, +0.016051f}, + {+0.001814f, -0.087437f, +0.037078f}, + {+0.005267f, -0.010738f, +0.007098f} + }, + { + {+0.063555f, -0.411417f, +0.075756f}, + {-0.093014f, +0.372322f, -0.077805f}, + {+0.007107f, +0.054992f, -0.008311f}, + {+0.033886f, +0.080359f, -0.013428f}, + {-0.014436f, -0.207733f, +0.015885f}, + {+0.013408f, -0.128849f, +0.020860f}, + {+0.024255f, -0.374328f, -0.023256f}, + {-0.002134f, +0.023939f, +0.000696f}, + {+0.058983f, -0.666227f, -0.050398f}, + {+0.014357f, +0.059836f, +0.078919f}, + {+0.009066f, -0.055606f, +0.025373f}, + {+0.008234f, +0.193844f, +0.040018f}, + {+0.010778f, -0.088365f, +0.004018f}, + {+0.007190f, -0.141067f, +0.033486f}, + {+0.015950f, -0.182801f, -0.014037f}, + {-0.004549f, -0.103305f, -0.035896f} + }, + { + {+0.019484f, -0.338410f, +0.083536f}, + {-0.202040f, +0.634536f, -0.185332f}, + {+0.007949f, -0.067812f, +0.047529f}, + {+0.048582f, -0.153833f, +0.075433f}, + {-0.054773f, +0.008273f, -0.058696f}, + {-0.024929f, +0.021715f, -0.041866f}, + {-0.026392f, -0.170362f, -0.104628f}, + {+0.014816f, -0.001719f, +0.003760f}, + {-0.050384f, -0.474129f, -0.111890f}, + {-0.050928f, +0.326828f, -0.037272f}, + {+0.005968f, -0.019903f, +0.009428f}, + {+0.002366f, +0.233633f, +0.019586f}, + {+0.014235f, -0.074982f, -0.008001f}, + {-0.003852f, +0.000864f, -0.026540f}, + {+0.024596f, -0.140123f, -0.045292f}, + {+0.007335f, -0.140212f, -0.016737f} + }, + { + {-0.203259f, -0.677311f, +0.036974f}, + {+0.017307f, +0.878070f, -0.170118f}, + {-0.043215f, -0.181813f, +0.012035f}, + {-0.067120f, -0.199982f, +0.078357f}, + {+0.003334f, +0.005382f, -0.060963f}, + {-0.037369f, +0.095076f, -0.002797f}, + {-0.007145f, +0.024172f, -0.016239f}, + {+0.025809f, +0.035193f, +0.010462f}, + {-0.123278f, -0.317455f, +0.005941f}, + {-0.071780f, +0.152842f, -0.115403f}, + {+0.009047f, -0.007435f, +0.015219f}, + {-0.009240f, +0.131025f, -0.037457f}, + {+0.010330f, -0.013791f, +0.019556f}, + {+0.018073f, +0.051639f, -0.007415f}, + {+0.023065f, +0.024816f, +0.028060f}, + {+0.023145f, -0.072535f, +0.012653f} + }, + { + {-0.363585f, -0.196908f, -0.132849f}, + {+0.400794f, -0.061111f, +0.146774f}, + {-0.088996f, -0.035461f, -0.039728f}, + {-0.248102f, +0.210034f, -0.044008f}, + {+0.136603f, -0.269455f, +0.014678f}, + {-0.039867f, +0.056544f, +0.018785f}, + {+0.012335f, -0.061064f, +0.014746f}, + {+0.001640f, +0.021263f, +0.019567f}, + {-0.164395f, -0.120409f, -0.065761f}, + {-0.005008f, -0.124444f, -0.002355f}, + {+0.006089f, +0.036166f, -0.003168f}, + {-0.008972f, +0.027316f, +0.008811f}, + {-0.026456f, +0.074066f, -0.007831f}, + {+0.036264f, -0.025445f, +0.017552f}, + {-0.046783f, +0.110385f, +0.011511f}, + {+0.016634f, -0.063190f, +0.003470f} + }, + { + {-0.140043f, +0.331564f, +0.031879f}, + {+0.418213f, -0.323867f, +0.026950f}, + {-0.066524f, +0.078043f, +0.003209f}, + {-0.275295f, +0.106284f, -0.069212f}, + {+0.205855f, -0.059809f, +0.074823f}, + {-0.024267f, -0.018141f, -0.016347f}, + {+0.021686f, -0.056152f, +0.012278f}, + {-0.065157f, -0.071098f, -0.001681f}, + {-0.025332f, +0.159594f, +0.013561f}, + {+0.029475f, -0.035218f, +0.023811f}, + {+0.011328f, +0.030605f, -0.007685f}, + {-0.054740f, -0.020295f, -0.000302f}, + {-0.047455f, +0.027854f, -0.019731f}, + {+0.022053f, -0.039858f, +0.012679f}, + {-0.116347f, -0.040132f, -0.032026f}, + {-0.007321f, -0.043491f, +0.015668f} + }, + { + {+0.232420f, -0.042183f, +0.090352f}, + {+0.143907f, +0.128870f, -0.081606f}, + {-0.019255f, -0.008481f, +0.025359f}, + {-0.079364f, -0.195197f, +0.009060f}, + {+0.092435f, +0.165349f, +0.007306f}, + {+0.037358f, -0.066958f, -0.009347f}, + {+0.002010f, -0.000201f, -0.007048f}, + {-0.118479f, -0.000141f, -0.016298f}, + {+0.131479f, -0.025371f, +0.046423f}, + {+0.013254f, +0.056073f, -0.007964f}, + {+0.020421f, -0.014051f, +0.008057f}, + {-0.102505f, +0.044999f, -0.012472f}, + {-0.028717f, -0.037569f, +0.002612f}, + {-0.021286f, +0.036718f, -0.008001f}, + {-0.110557f, -0.093273f, -0.012580f}, + {-0.060924f, +0.023756f, -0.000190f} + }, + { + {+0.533983f, -0.079000f, +0.018330f}, + {-0.217748f, +0.012931f, -0.048151f}, + {+0.025802f, -0.036354f, +0.006267f}, + {+0.205140f, +0.060899f, +0.046660f}, + {-0.113290f, -0.081234f, -0.041909f}, + {+0.105415f, +0.030348f, +0.015181f}, + {-0.034112f, -0.007984f, -0.002032f}, + {-0.109019f, +0.032142f, -0.005021f}, + {+0.186112f, -0.090334f, +0.010289f}, + {-0.018376f, +0.004638f, -0.018235f}, + {+0.011521f, -0.024596f, +0.005093f}, + {-0.106685f, +0.043319f, -0.011207f}, + {+0.003719f, +0.002813f, +0.009833f}, + {-0.061529f, +0.014049f, -0.008239f}, + {-0.045872f, +0.041391f, +0.025100f}, + {-0.106073f, -0.025839f, -0.009219f} + }, + { + {+0.689088f, +0.021676f, -0.035498f}, + {-0.512497f, -0.013050f, +0.008139f}, + {+0.080900f, -0.013233f, -0.008488f}, + {+0.415840f, +0.041814f, +0.013996f}, + {-0.278767f, -0.050484f, -0.020716f}, + {+0.124237f, +0.048494f, +0.003541f}, + {-0.083860f, +0.012095f, -0.001839f}, + {-0.040470f, -0.043256f, +0.009440f}, + {+0.127554f, +0.052174f, -0.027560f}, + {-0.038197f, -0.025553f, -0.002386f}, + {-0.013296f, +0.017618f, -0.006802f}, + {-0.049000f, -0.034411f, +0.008434f}, + {+0.023951f, +0.015385f, +0.000397f}, + {-0.079741f, -0.014689f, +0.006056f}, + {+0.015937f, +0.036771f, +0.013501f}, + {-0.116284f, -0.032742f, -0.005608f} + }, + { + {+0.733240f, +0.033897f, -0.028463f}, + {-0.683283f, -0.019108f, +0.024422f}, + {+0.165878f, +0.024612f, -0.005353f}, + {+0.489377f, -0.026929f, -0.018187f}, + {-0.343135f, +0.029846f, +0.016631f}, + {+0.086256f, -0.016816f, -0.014815f}, + {-0.129107f, +0.000075f, +0.000830f}, + {+0.047145f, -0.000801f, +0.008881f}, + {+0.023844f, +0.003992f, -0.023086f}, + {-0.042301f, +0.008336f, +0.009579f}, + {-0.039371f, +0.014019f, -0.003266f}, + {+0.037930f, +0.005491f, +0.006528f}, + {+0.020403f, -0.000483f, -0.004551f}, + {-0.081119f, -0.016241f, +0.003920f}, + {+0.051945f, -0.020771f, -0.013605f}, + {-0.091078f, +0.021518f, +0.009604f} + }, + { + {+0.733114f, -0.029809f, -0.003150f}, + {-0.758988f, +0.025935f, +0.015102f}, + {+0.280906f, -0.031811f, -0.003778f}, + {+0.459117f, +0.008405f, -0.019040f}, + {-0.333055f, +0.004022f, +0.017856f}, + {+0.012149f, -0.009636f, -0.003754f}, + {-0.156853f, +0.003236f, +0.004887f}, + {+0.114968f, +0.002815f, -0.004184f}, + {-0.064559f, -0.023528f, +0.001333f}, + {-0.039134f, +0.015161f, +0.005522f}, + {-0.063282f, +0.001881f, +0.005278f}, + {+0.121057f, -0.006821f, -0.003568f}, + {-0.006828f, +0.002343f, -0.000194f}, + {-0.069156f, -0.009861f, -0.001545f}, + {+0.070362f, -0.029774f, -0.011253f}, + {-0.061366f, +0.013312f, +0.005905f} + }, + { + {+0.724625f, -0.001203f, +0.006316f}, + {-0.787100f, -0.019364f, +0.003117f}, + {+0.401617f, +0.025467f, -0.004330f}, + {+0.392760f, +0.000769f, -0.009132f}, + {-0.296783f, -0.006051f, +0.006244f}, + {-0.080677f, -0.011855f, +0.011409f}, + {-0.155686f, -0.003923f, +0.003032f}, + {+0.152027f, +0.011289f, -0.005772f}, + {-0.122199f, -0.008679f, +0.013528f}, + {-0.032224f, -0.005650f, -0.003051f}, + {-0.086101f, -0.012645f, +0.003029f}, + {+0.171824f, +0.008018f, -0.006233f}, + {-0.049811f, -0.010853f, +0.002128f}, + {-0.046385f, +0.014661f, +0.005149f}, + {+0.075593f, +0.018900f, +0.006819f}, + {-0.042682f, -0.001204f, -0.002701f} + }, + { + {+0.710313f, +0.016351f, +0.000594f}, + {-0.788202f, -0.001698f, -0.001880f}, + {+0.478276f, -0.009988f, -0.006465f}, + {+0.338553f, -0.006580f, +0.000873f}, + {-0.267876f, +0.004181f, -0.000561f}, + {-0.161632f, +0.031504f, +0.010015f}, + {-0.112024f, -0.007981f, -0.001560f}, + {+0.161078f, -0.006395f, +0.000785f}, + {-0.159938f, +0.023767f, +0.006167f}, + {-0.016977f, -0.011649f, -0.002458f}, + {-0.101033f, +0.005466f, -0.000979f}, + {+0.168147f, +0.002987f, -0.004477f}, + {-0.090853f, +0.008103f, +0.002155f}, + {-0.019160f, +0.010061f, +0.003516f}, + {+0.068113f, +0.017356f, +0.008667f}, + {-0.034415f, -0.006094f, -0.000653f} + }, + { + {+0.687296f, -0.010309f, -0.005056f}, + {-0.764260f, +0.015559f, +0.000832f}, + {+0.464886f, -0.002946f, -0.003297f}, + {+0.298384f, -0.012876f, +0.002489f}, + {-0.246598f, +0.005940f, -0.001267f}, + {-0.184060f, -0.014332f, -0.000763f}, + {-0.024137f, +0.022250f, -0.004819f}, + {+0.154151f, -0.010440f, +0.001340f}, + {-0.181725f, -0.011644f, -0.002738f}, + {+0.007528f, +0.010988f, +0.002133f}, + {-0.103221f, +0.002109f, -0.001628f}, + {+0.103776f, -0.007568f, +0.001735f}, + {-0.108578f, +0.000395f, +0.003349f}, + {+0.017935f, -0.001653f, -0.006823f}, + {+0.063247f, -0.018078f, -0.002599f}, + {-0.031929f, -0.003751f, +0.000579f} + }, + { + {+0.659915f, +0.003181f, -0.004789f}, + {-0.723641f, -0.015598f, +0.004701f}, + {+0.344320f, +0.034439f, +0.003396f}, + {+0.252485f, +0.010951f, -0.000869f}, + {-0.213766f, -0.011294f, +0.001229f}, + {-0.112272f, -0.023126f, -0.008479f}, + {+0.086512f, -0.032942f, -0.003959f}, + {+0.151070f, +0.005416f, -0.003241f}, + {-0.183618f, -0.008669f, -0.002985f}, + {+0.037360f, -0.003147f, +0.002379f}, + {-0.095879f, -0.005536f, -0.000670f}, + {-0.009973f, +0.033041f, +0.006312f}, + {-0.086652f, -0.000941f, +0.001227f}, + {+0.070708f, -0.028404f, -0.005854f}, + {+0.082798f, -0.007130f, -0.008870f}, + {-0.024953f, -0.002080f, -0.001188f} + }, + { + {+0.634763f, -0.001208f, -0.002397f}, + {-0.683670f, +0.007693f, +0.006039f}, + {+0.143818f, -0.065248f, +0.001626f}, + {+0.187585f, -0.010607f, +0.001657f}, + {-0.155102f, +0.012347f, +0.000836f}, + {+0.047669f, +0.064360f, -0.004465f}, + {+0.176375f, +0.020282f, -0.000832f}, + {+0.166599f, +0.005868f, -0.005383f}, + {-0.165581f, +0.017111f, +0.003241f}, + {+0.067470f, -0.001639f, -0.002026f}, + {-0.090399f, +0.004464f, +0.000923f}, + {-0.138735f, -0.040116f, +0.001857f}, + {-0.018624f, +0.015969f, -0.003767f}, + {+0.124121f, +0.022397f, +0.003509f}, + {+0.132318f, +0.030070f, -0.004033f}, + {-0.005451f, +0.010583f, +0.000461f} + }, + { + {+0.613639f, +0.002441f, -0.000996f}, + {-0.658994f, +0.004033f, +0.003708f}, + {-0.066781f, +0.052613f, -0.005380f}, + {+0.103141f, +0.024662f, +0.003094f}, + {-0.069224f, -0.020885f, -0.001016f}, + {+0.237901f, -0.057325f, +0.006669f}, + {+0.198251f, +0.008139f, -0.001238f}, + {+0.196297f, -0.014019f, -0.004087f}, + {-0.137085f, -0.006189f, +0.006787f}, + {+0.092626f, -0.005231f, -0.005081f}, + {-0.098805f, -0.001528f, +0.003973f}, + {-0.227978f, +0.011869f, -0.001188f}, + {+0.083502f, -0.031761f, -0.003653f}, + {+0.154304f, +0.003532f, +0.005157f}, + {+0.192731f, -0.026618f, +0.005738f}, + {+0.025619f, -0.008251f, +0.002697f} + }, + { + {+0.592443f, -0.004265f, -0.000675f}, + {-0.651475f, -0.007639f, -0.001077f}, + {-0.211884f, -0.008375f, -0.003618f}, + {+0.015847f, -0.026610f, -0.001288f}, + {+0.030980f, +0.024402f, -0.000682f}, + {+0.377865f, +0.004628f, +0.005328f}, + {+0.127740f, -0.031243f, -0.004692f}, + {+0.216064f, +0.008428f, -0.000840f}, + {-0.107665f, -0.004148f, +0.003207f}, + {+0.104222f, +0.007982f, -0.002781f}, + {-0.121055f, -0.007151f, +0.006643f}, + {-0.232842f, +0.021111f, +0.004010f}, + {+0.181984f, +0.020598f, -0.002112f}, + {+0.154857f, -0.016563f, -0.001311f}, + {+0.234230f, -0.006972f, +0.006138f}, + {+0.062816f, -0.000374f, -0.000261f} + }, + { + {+0.565815f, +0.006621f, -0.000731f}, + {-0.652157f, -0.001839f, -0.002786f}, + {-0.256941f, -0.016709f, +0.005201f}, + {-0.049457f, +0.004802f, -0.002568f}, + {+0.121870f, -0.014390f, -0.001453f}, + {+0.418806f, +0.025565f, -0.008436f}, + {-0.023252f, +0.033441f, -0.003455f}, + {+0.192750f, +0.014454f, -0.000969f}, + {-0.080190f, +0.006138f, -0.004702f}, + {+0.090978f, +0.000288f, +0.001642f}, + {-0.136520f, +0.012063f, +0.004637f}, + {-0.143202f, -0.027531f, +0.007344f}, + {+0.230859f, -0.004544f, -0.002668f}, + {+0.140224f, +0.009293f, -0.007214f}, + {+0.242282f, +0.025199f, -0.006229f}, + {+0.100859f, -0.005416f, -0.004924f} + }, + { + {+0.532337f, -0.007417f, -0.000543f}, + {-0.652955f, +0.010368f, +0.001740f}, + {-0.220699f, +0.013404f, +0.007323f}, + {-0.077945f, +0.013141f, +0.004826f}, + {+0.182039f, +0.009934f, -0.002503f}, + {+0.362601f, -0.019757f, -0.014603f}, + {-0.211924f, -0.030990f, +0.005294f}, + {+0.105625f, -0.028087f, -0.003678f}, + {-0.054535f, +0.015575f, -0.006139f}, + {+0.049202f, -0.015528f, +0.003083f}, + {-0.111395f, -0.002877f, -0.002743f}, + {+0.015299f, +0.023373f, -0.001099f}, + {+0.201870f, -0.009975f, -0.000096f}, + {+0.130715f, +0.012877f, -0.003882f}, + {+0.221564f, -0.009858f, -0.016146f}, + {+0.132494f, +0.017520f, -0.002095f} + }, + { + {+0.495834f, +0.008532f, -0.000369f}, + {-0.652356f, -0.003292f, +0.006811f}, + {-0.149624f, -0.011936f, +0.002662f}, + {-0.071256f, -0.002030f, +0.009341f}, + {+0.200363f, -0.000872f, -0.001071f}, + {+0.238216f, +0.009887f, -0.004541f}, + {-0.381151f, +0.041781f, +0.008291f}, + {-0.039667f, +0.026941f, +0.000063f}, + {-0.036683f, -0.023635f, +0.004916f}, + {-0.009186f, +0.024708f, -0.001260f}, + {-0.023299f, -0.026996f, -0.008496f}, + {+0.194696f, -0.039072f, -0.009744f}, + {+0.098003f, +0.033287f, +0.002536f}, + {+0.131758f, -0.006621f, +0.002658f}, + {+0.173806f, -0.018597f, -0.006932f}, + {+0.145380f, -0.006223f, +0.004430f} + }, + { + {+0.463299f, -0.007155f, -0.000770f}, + {-0.648076f, -0.009295f, +0.004610f}, + {-0.089513f, +0.010398f, +0.000359f}, + {-0.033244f, -0.002975f, +0.003236f}, + {+0.178153f, -0.013477f, -0.001343f}, + {+0.077802f, -0.029144f, +0.007460f}, + {-0.474851f, -0.029171f, -0.001803f}, + {-0.217055f, -0.041281f, +0.004828f}, + {-0.037249f, -0.008239f, +0.011497f}, + {-0.059921f, -0.009759f, -0.005233f}, + {+0.114758f, +0.056676f, -0.002229f}, + {+0.334964f, +0.046076f, -0.002995f}, + {-0.042473f, -0.043913f, -0.000922f}, + {+0.133390f, -0.007415f, +0.001167f}, + {+0.081735f, -0.007332f, +0.010523f}, + {+0.133499f, -0.015420f, +0.003583f} + }, + { + {+0.441203f, +0.002482f, -0.000824f}, + {-0.629545f, +0.003537f, -0.002292f}, + {-0.068500f, -0.000883f, +0.001586f}, + {+0.038519f, -0.014498f, -0.003426f}, + {+0.131180f, +0.015847f, -0.003732f}, + {-0.083693f, +0.047317f, +0.005981f}, + {-0.461803f, -0.022290f, -0.008344f}, + {-0.384732f, +0.037693f, +0.003505f}, + {-0.048144f, +0.029049f, +0.001374f}, + {-0.084768f, -0.008739f, -0.001947f}, + {+0.251499f, -0.035994f, +0.008053f}, + {+0.379916f, -0.000042f, +0.006724f}, + {-0.160178f, +0.020677f, -0.004025f}, + {+0.124411f, +0.010697f, -0.004992f}, + {-0.067302f, +0.056203f, +0.010926f}, + {+0.110573f, +0.015976f, -0.002867f} + }, + { + {+0.430897f, +0.000433f, -0.000350f}, + {-0.586004f, +0.017187f, -0.004129f}, + {-0.087700f, -0.011728f, +0.002208f}, + {+0.139979f, +0.032148f, -0.002572f}, + {+0.080931f, -0.008008f, -0.004145f}, + {-0.204274f, -0.031020f, -0.002988f}, + {-0.365555f, +0.057171f, +0.001535f}, + {-0.496090f, -0.014326f, +0.002762f}, + {-0.036347f, -0.000076f, -0.009610f}, + {-0.087371f, +0.006753f, +0.002953f}, + {+0.332582f, -0.010055f, +0.004412f}, + {+0.314151f, -0.048523f, +0.001669f}, + {-0.210677f, +0.006259f, -0.001554f}, + {+0.097223f, +0.002730f, -0.004153f}, + {-0.243214f, -0.058784f, -0.001131f}, + {+0.100970f, +0.001509f, -0.005827f} + }, + { + {+0.427847f, -0.001191f, +0.000192f}, + {-0.522040f, -0.027328f, +0.001322f}, + {-0.123746f, +0.015960f, -0.000425f}, + {+0.250557f, -0.029225f, +0.001401f}, + {+0.041411f, -0.001671f, -0.000435f}, + {-0.251666f, -0.011713f, -0.002737f}, + {-0.259410f, -0.030558f, +0.013501f}, + {-0.523363f, -0.008886f, +0.005097f}, + {+0.023565f, -0.037779f, -0.005281f}, + {-0.085570f, +0.002595f, +0.003055f}, + {+0.343956f, +0.022947f, -0.008052f}, + {+0.182050f, +0.049717f, -0.010139f}, + {-0.188646f, -0.025113f, +0.004590f}, + {+0.043971f, +0.008025f, +0.002158f}, + {-0.383316f, +0.019159f, -0.004800f}, + {+0.118679f, -0.020135f, -0.001036f} + }, + { + {+0.424775f, -0.001427f, +0.000274f}, + {-0.458547f, +0.013186f, +0.005324f}, + {-0.143005f, -0.001551f, -0.002520f}, + {+0.342091f, +0.013355f, +0.001866f}, + {+0.012473f, -0.005183f, +0.002228f}, + {-0.229007f, +0.024031f, +0.004922f}, + {-0.213143f, -0.021386f, +0.008846f}, + {-0.469349f, +0.018839f, +0.005224f}, + {+0.120107f, +0.037044f, +0.005367f}, + {-0.094940f, -0.009229f, -0.000146f}, + {+0.312164f, -0.002650f, -0.009985f}, + {+0.056636f, -0.008288f, -0.009234f}, + {-0.124730f, +0.013388f, +0.006509f}, + {-0.037461f, -0.023127f, +0.003625f}, + {-0.438903f, +0.013352f, +0.002069f}, + {+0.155431f, +0.012048f, +0.004072f} + }, + { + {+0.415850f, +0.004534f, -0.000668f}, + {-0.414572f, +0.002652f, +0.002367f}, + {-0.124613f, -0.010725f, -0.002281f}, + {+0.397126f, -0.000677f, -0.001120f}, + {-0.014003f, +0.010619f, -0.000267f}, + {-0.170253f, -0.018842f, +0.008960f}, + {-0.241128f, +0.034417f, -0.004698f}, + {-0.359282f, -0.033550f, +0.005250f}, + {+0.216676f, -0.010427f, +0.006057f}, + {-0.120954f, +0.008613f, -0.002469f}, + {+0.268504f, +0.001802f, -0.003587f}, + {-0.013045f, -0.010217f, +0.002327f}, + {-0.059871f, -0.003931f, +0.001188f}, + {-0.132164f, +0.026563f, +0.001240f}, + {-0.403193f, -0.027848f, +0.009266f}, + {+0.190953f, +0.002021f, +0.001187f} + }, + { + {+0.399726f, -0.003989f, -0.001238f}, + {-0.392346f, -0.005321f, -0.003177f}, + {-0.072827f, +0.023138f, +0.000364f}, + {+0.417980f, -0.003176f, -0.003953f}, + {-0.044470f, -0.006065f, -0.002234f}, + {-0.111558f, +0.001243f, +0.006696f}, + {-0.306891f, -0.017879f, -0.010556f}, + {-0.227947f, +0.027747f, +0.006660f}, + {+0.285131f, -0.003545f, -0.002248f}, + {-0.160581f, -0.005372f, -0.001188f}, + {+0.228536f, -0.004194f, -0.000473f}, + {-0.021041f, +0.010096f, +0.009272f}, + {-0.021484f, +0.000358f, -0.003354f}, + {-0.213365f, -0.015260f, -0.000168f}, + {-0.303399f, +0.026027f, +0.011571f}, + {+0.212111f, -0.000447f, -0.003261f} + }, + { + {+0.378407f, +0.003850f, -0.000653f}, + {-0.380175f, -0.007586f, -0.003255f}, + {-0.012127f, -0.017400f, +0.004348f}, + {+0.420589f, +0.000881f, -0.004600f}, + {-0.082045f, +0.000538f, +0.001160f}, + {-0.069379f, +0.007873f, -0.001279f}, + {-0.364957f, -0.009593f, -0.003601f}, + {-0.103978f, -0.012644f, +0.002536f}, + {+0.322327f, -0.004962f, -0.006100f}, + {-0.208381f, +0.007687f, +0.001556f}, + {+0.193755f, +0.004206f, +0.000887f}, + {+0.012722f, +0.002660f, +0.005208f}, + {-0.021028f, +0.002645f, -0.003959f}, + {-0.256559f, +0.000206f, +0.001247f}, + {-0.175255f, -0.013434f, +0.005713f}, + {+0.216424f, -0.004406f, -0.001903f} + }, + { + {+0.355186f, -0.004417f, +0.000047f}, + {-0.367959f, +0.007051f, +0.000589f}, + {+0.030278f, -0.000745f, +0.003677f}, + {+0.419972f, +0.001580f, -0.004098f}, + {-0.126164f, -0.010538f, +0.004622f}, + {-0.036142f, +0.005050f, -0.006483f}, + {-0.395580f, +0.008424f, +0.006868f}, + {+0.004418f, +0.013200f, -0.004102f}, + {+0.338438f, +0.004391f, -0.003969f}, + {-0.257936f, -0.011270f, +0.002562f}, + {+0.157184f, -0.010190f, +0.001022f}, + {+0.066694f, +0.007499f, -0.001955f}, + {-0.058038f, -0.007898f, -0.001836f}, + {-0.252063f, +0.011457f, +0.004218f}, + {-0.038996f, +0.019229f, -0.002930f}, + {+0.207135f, -0.002683f, +0.000920f} + }, + { + {+0.333833f, +0.005141f, -0.000033f}, + {-0.354343f, -0.002376f, +0.001512f}, + {+0.044789f, +0.011943f, -0.002345f}, + {+0.420054f, -0.005203f, -0.002411f}, + {-0.168493f, +0.019086f, +0.001101f}, + {+0.000312f, -0.019974f, -0.002740f}, + {-0.404430f, +0.003854f, +0.008761f}, + {+0.101609f, -0.024344f, -0.004621f}, + {+0.343021f, -0.002003f, -0.002287f}, + {-0.300798f, +0.012232f, +0.000926f}, + {+0.115201f, +0.012523f, -0.000667f}, + {+0.124884f, -0.013322f, -0.003505f}, + {-0.124657f, +0.015080f, +0.000444f}, + {-0.208063f, -0.009838f, +0.004149f}, + {+0.098778f, -0.030234f, -0.005691f}, + {+0.191672f, +0.010274f, -0.000986f} + }, + { + {+0.317651f, -0.003399f, -0.000638f}, + {-0.342009f, +0.000734f, +0.000383f}, + {+0.041234f, -0.003266f, -0.006626f}, + {+0.412818f, +0.000564f, -0.000053f}, + {-0.193269f, -0.005756f, -0.003803f}, + {+0.038455f, +0.012921f, +0.002898f}, + {-0.397973f, -0.006421f, +0.004371f}, + {+0.186407f, +0.018164f, -0.002443f}, + {+0.339213f, -0.001972f, -0.002251f}, + {-0.327935f, -0.003077f, -0.000361f}, + {+0.072360f, -0.008411f, -0.001308f}, + {+0.171731f, +0.013927f, -0.001434f}, + {-0.206591f, -0.018817f, +0.001471f}, + {-0.140714f, +0.015540f, +0.002302f}, + {+0.227639f, +0.031497f, -0.003750f}, + {+0.179263f, -0.004105f, -0.004389f} + }, + { + {+0.307693f, +0.001076f, -0.000945f}, + {-0.334320f, -0.001717f, +0.000049f}, + {+0.033552f, -0.011447f, -0.002121f}, + {+0.387841f, +0.007421f, +0.001088f}, + {-0.192595f, -0.010377f, -0.002843f}, + {+0.067483f, +0.002402f, +0.001682f}, + {-0.373557f, +0.001444f, -0.001449f}, + {+0.251051f, -0.016030f, -0.000496f}, + {+0.323516f, +0.001530f, -0.001658f}, + {-0.335944f, -0.003218f, +0.000567f}, + {+0.034654f, +0.006672f, -0.000906f}, + {+0.193976f, -0.003406f, +0.001146f}, + {-0.284432f, +0.017472f, +0.001142f}, + {-0.067179f, -0.009754f, -0.000138f}, + {+0.329347f, -0.022749f, -0.000471f}, + {+0.172128f, -0.005358f, -0.003493f} + }, + { + {+0.301577f, +0.001184f, -0.000322f}, + {-0.332736f, +0.000666f, +0.000894f}, + {+0.023585f, -0.000609f, +0.003132f}, + {+0.344006f, -0.015803f, +0.000034f}, + {-0.177998f, +0.013137f, +0.002069f}, + {+0.082056f, -0.003433f, -0.002633f}, + {-0.324370f, +0.018955f, -0.002626f}, + {+0.287377f, +0.000225f, -0.000071f}, + {+0.290720f, -0.007672f, -0.000038f}, + {-0.329996f, +0.006498f, +0.002605f}, + {+0.003682f, -0.004563f, -0.000624f}, + {+0.185737f, -0.009876f, +0.000494f}, + {-0.338831f, -0.008465f, +0.000490f}, + {-0.000651f, +0.014424f, -0.001842f}, + {+0.385445f, -0.000494f, -0.001075f}, + {+0.160154f, +0.003230f, +0.000530f} + }, + { + {+0.294359f, +0.001008f, +0.000587f}, + {-0.335716f, +0.002537f, +0.000929f}, + {+0.006697f, +0.010781f, +0.001057f}, + {+0.292769f, +0.014442f, -0.002216f}, + {-0.173218f, +0.002305f, +0.004071f}, + {+0.084637f, -0.001890f, -0.003059f}, + {-0.253587f, -0.025906f, +0.002221f}, + {+0.295508f, +0.003624f, -0.001780f}, + {+0.240102f, +0.014422f, -0.000050f}, + {-0.320004f, +0.000226f, +0.002968f}, + {-0.025595f, +0.006552f, -0.001052f}, + {+0.154653f, +0.014381f, -0.002635f}, + {-0.357893f, -0.004680f, +0.001836f}, + {+0.050259f, -0.009177f, -0.001013f}, + {+0.390921f, +0.011091f, -0.005488f}, + {+0.128396f, +0.010797f, +0.002030f} + }, + { + {+0.281980f, -0.004479f, +0.000473f}, + {-0.338235f, -0.000938f, +0.000317f}, + {-0.016443f, -0.008216f, -0.002310f}, + {+0.250822f, -0.005381f, -0.002547f}, + {-0.194113f, -0.011993f, +0.002133f}, + {+0.078814f, +0.001480f, -0.000683f}, + {-0.178794f, +0.013791f, +0.004329f}, + {+0.286440f, -0.008258f, -0.003815f}, + {+0.180165f, -0.014312f, -0.000718f}, + {-0.312559f, -0.001222f, +0.001335f}, + {-0.061211f, -0.002642f, +0.000385f}, + {+0.117426f, -0.006897f, -0.004033f}, + {-0.342706f, +0.010139f, +0.004471f}, + {+0.079430f, +0.002660f, -0.001268f}, + {+0.356398f, -0.011250f, -0.007640f}, + {+0.072072f, -0.018003f, +0.000575f} + }, + { + {+0.264584f, +0.006225f, -0.000553f}, + {-0.334355f, -0.002104f, +0.000390f}, + {-0.041411f, +0.000660f, -0.001379f}, + {+0.227742f, -0.002231f, -0.000499f}, + {-0.236723f, +0.015277f, +0.000143f}, + {+0.066692f, +0.002089f, +0.000940f}, + {-0.116641f, -0.003621f, +0.000856f}, + {+0.274189f, -0.002260f, -0.003775f}, + {+0.124476f, +0.010538f, -0.000672f}, + {-0.307116f, +0.000375f, +0.000391f}, + {-0.109323f, +0.010339f, +0.003218f}, + {+0.087624f, -0.002282f, -0.001095f}, + {-0.305220f, -0.004246f, +0.003226f}, + {+0.088209f, -0.001890f, -0.000514f}, + {+0.297714f, +0.002109f, -0.002943f}, + {+0.002305f, +0.018254f, -0.000698f} + }, + { + {+0.245860f, -0.004071f, -0.001278f}, + {-0.320735f, +0.004451f, +0.000718f}, + {-0.064973f, -0.003268f, +0.001022f}, + {+0.221237f, +0.003408f, +0.001969f}, + {-0.282979f, -0.012181f, -0.001619f}, + {+0.050139f, -0.005534f, +0.000714f}, + {-0.071497f, +0.004571f, -0.002571f}, + {+0.265456f, +0.000937f, -0.001591f}, + {+0.084560f, -0.004757f, +0.000011f}, + {-0.300229f, +0.001315f, -0.000134f}, + {-0.168137f, -0.018612f, +0.002406f}, + {+0.066781f, -0.001637f, +0.001882f}, + {-0.257378f, +0.011005f, +0.000980f}, + {+0.083095f, -0.005045f, -0.000085f}, + {+0.224972f, -0.016565f, +0.001685f}, + {-0.061472f, -0.012660f, -0.001272f} + }, + { + {+0.229589f, +0.000720f, -0.000554f}, + {-0.297388f, -0.006061f, +0.000830f}, + {-0.086308f, +0.008311f, -0.000100f}, + {+0.220891f, +0.005343f, +0.000760f}, + {-0.312804f, -0.002048f, -0.000535f}, + {+0.033600f, +0.001954f, +0.000821f}, + {-0.037726f, -0.009547f, -0.001800f}, + {+0.256770f, -0.001354f, -0.000172f}, + {+0.064615f, +0.001499f, +0.000378f}, + {-0.288880f, -0.006082f, +0.000716f}, + {-0.223988f, +0.015499f, -0.000654f}, + {+0.048524f, +0.007439f, +0.000777f}, + {-0.208116f, -0.011040f, +0.001557f}, + {+0.074335f, +0.004704f, -0.001723f}, + {+0.146222f, +0.020815f, +0.000166f}, + {-0.103517f, +0.003200f, -0.000724f} + }, + { + {+0.216659f, -0.000775f, +0.000774f}, + {-0.266859f, +0.007292f, +0.000934f}, + {-0.105304f, -0.004788f, -0.002437f}, + {+0.217403f, -0.003973f, -0.002583f}, + {-0.318044f, +0.007929f, +0.003539f}, + {+0.023696f, -0.000702f, +0.001989f}, + {-0.008068f, +0.006711f, +0.000114f}, + {+0.242367f, -0.004361f, +0.000832f}, + {+0.061343f, +0.003214f, +0.000949f}, + {-0.273736f, +0.004941f, +0.002356f}, + {-0.260361f, -0.001261f, -0.000909f}, + {+0.027365f, -0.006696f, -0.001482f}, + {-0.163814f, +0.008052f, +0.001931f}, + {+0.071141f, -0.000562f, -0.003221f}, + {+0.073591f, -0.015255f, -0.001489f}, + {-0.121162f, +0.004631f, +0.001675f} + }, + { + {+0.205784f, +0.003757f, +0.000700f}, + {-0.232994f, -0.005953f, +0.000561f}, + {-0.123682f, -0.003377f, -0.000485f}, + {+0.205753f, -0.000981f, -0.002067f}, + {-0.304943f, -0.001966f, +0.004525f}, + {+0.026104f, +0.002420f, +0.000748f}, + {+0.021981f, -0.003022f, -0.000957f}, + {+0.220204f, +0.009944f, -0.000624f}, + {+0.066717f, -0.001208f, +0.001408f}, + {-0.258003f, +0.000477f, +0.001518f}, + {-0.270472f, -0.007879f, +0.002698f}, + {+0.001424f, +0.001591f, -0.000485f}, + {-0.125885f, -0.003310f, +0.000529f}, + {+0.074527f, -0.008121f, -0.001699f}, + {+0.017069f, +0.005535f, -0.000272f}, + {-0.124829f, -0.001926f, +0.003798f} + }, + { + {+0.196417f, -0.003644f, -0.000603f}, + {-0.199207f, +0.006086f, -0.000295f}, + {-0.146052f, -0.001687f, +0.003740f}, + {+0.182052f, -0.002076f, +0.001266f}, + {-0.282909f, -0.000690f, +0.001105f}, + {+0.044152f, +0.004210f, -0.001817f}, + {+0.054138f, +0.007409f, -0.002335f}, + {+0.196668f, -0.006189f, -0.002331f}, + {+0.072925f, -0.001260f, +0.000239f}, + {-0.242629f, +0.000541f, -0.000943f}, + {-0.260897f, +0.003994f, +0.004883f}, + {-0.029070f, -0.005485f, +0.001962f}, + {-0.092855f, +0.004046f, -0.001954f}, + {+0.076259f, +0.005415f, +0.002510f}, + {-0.019261f, -0.001366f, +0.002709f}, + {-0.127606f, -0.004435f, +0.002949f} + }, + { + {+0.189173f, +0.000560f, -0.001059f}, + {-0.167547f, -0.008258f, +0.000141f}, + {-0.174715f, +0.013815f, +0.002907f}, + {+0.145627f, +0.012083f, +0.002087f}, + {-0.256566f, -0.006772f, -0.000776f}, + {+0.075271f, -0.013763f, -0.000701f}, + {+0.085309f, -0.009140f, -0.001366f}, + {+0.180099f, +0.000959f, -0.002178f}, + {+0.077061f, -0.000891f, -0.000372f}, + {-0.225986f, -0.007128f, -0.000680f}, + {-0.242442f, -0.000129f, +0.003190f}, + {-0.061120f, +0.011120f, +0.001079f}, + {-0.062759f, -0.011288f, -0.001129f}, + {+0.065406f, +0.009942f, +0.002436f}, + {-0.038027f, +0.005472f, +0.002780f}, + {-0.134062f, +0.004375f, +0.001136f} + }, + { + {+0.183656f, +0.000923f, -0.000164f}, + {-0.139835f, +0.005429f, +0.001020f}, + {-0.202643f, -0.008873f, -0.000639f}, + {+0.102603f, -0.014782f, -0.000700f}, + {-0.227902f, +0.008291f, +0.000524f}, + {+0.108562f, +0.007847f, +0.001593f}, + {+0.108523f, +0.004720f, -0.000054f}, + {+0.172882f, +0.003322f, -0.000542f}, + {+0.078483f, -0.001260f, -0.000596f}, + {-0.207608f, +0.004999f, +0.001085f}, + {-0.221842f, +0.000718f, +0.000351f}, + {-0.087045f, -0.004787f, -0.000547f}, + {-0.037398f, +0.005336f, +0.001064f}, + {+0.041563f, -0.010757f, -0.000998f}, + {-0.043387f, -0.001956f, +0.000527f}, + {-0.140276f, -0.003188f, -0.000142f} + }, + { + {+0.177711f, +0.001442f, +0.000461f}, + {-0.115859f, -0.004532f, +0.001235f}, + {-0.218668f, -0.005427f, +0.000911f}, + {+0.063962f, +0.003468f, -0.001219f}, + {-0.198372f, -0.004393f, +0.000814f}, + {+0.132046f, +0.004112f, -0.000882f}, + {+0.118012f, +0.003780f, -0.001160f}, + {+0.169530f, -0.000759f, +0.000923f}, + {+0.077288f, -0.001422f, -0.000499f}, + {-0.187625f, +0.000022f, +0.000030f}, + {-0.200958f, -0.007075f, -0.000014f}, + {-0.099701f, -0.002974f, +0.000910f}, + {-0.019722f, +0.003866f, -0.001104f}, + {+0.014166f, +0.005774f, -0.002177f}, + {-0.039277f, -0.003862f, +0.000381f}, + {-0.138918f, -0.005302f, +0.000608f} + }, + { + {+0.169075f, -0.003877f, -0.000219f}, + {-0.092373f, +0.003200f, +0.000934f}, + {-0.217383f, +0.010383f, +0.006743f}, + {+0.037373f, +0.004176f, +0.003172f}, + {-0.168763f, +0.000238f, -0.001996f}, + {+0.140535f, -0.007256f, -0.006564f}, + {+0.113037f, -0.005040f, -0.003602f}, + {+0.161555f, -0.002184f, +0.001327f}, + {+0.073875f, +0.002628f, +0.001536f}, + {-0.165667f, -0.001239f, -0.003853f}, + {-0.179435f, +0.009646f, +0.002896f}, + {-0.097770f, +0.003616f, +0.003027f}, + {-0.009431f, -0.004981f, -0.006157f}, + {-0.008081f, +0.000345f, -0.000806f}, + {-0.031139f, +0.005138f, +0.002262f}, + {-0.125572f, +0.007103f, +0.003194f} + }, + { + {+0.156703f, +0.003123f, -0.000930f}, + {-0.066141f, -0.001589f, -0.001238f}, + {-0.199134f, -0.002236f, +0.009123f}, + {+0.024449f, +0.000091f, +0.006919f}, + {-0.141646f, -0.003103f, -0.005668f}, + {+0.133486f, -0.000744f, -0.008630f}, + {+0.097019f, -0.000327f, -0.002792f}, + {+0.144791f, +0.002980f, +0.002476f}, + {+0.068698f, +0.001637f, +0.003084f}, + {-0.144321f, -0.006179f, -0.006251f}, + {-0.155892f, -0.002625f, +0.004264f}, + {-0.084319f, -0.000388f, +0.002288f}, + {-0.006549f, -0.002981f, -0.008326f}, + {-0.021606f, -0.003867f, +0.002491f}, + {-0.023191f, -0.001810f, +0.003729f}, + {-0.101442f, -0.001244f, +0.002402f} + }, + { + {+0.140100f, -0.000742f, +0.000187f}, + {-0.036425f, +0.005652f, -0.004036f}, + {-0.165186f, -0.002894f, +0.004265f}, + {+0.025616f, -0.008625f, +0.004162f}, + {-0.121725f, +0.015558f, -0.002974f}, + {+0.111098f, +0.006811f, -0.003090f}, + {+0.072921f, -0.001667f, +0.000669f}, + {+0.120893f, -0.005073f, +0.004382f}, + {+0.065161f, -0.005346f, +0.001749f}, + {-0.129726f, +0.017304f, -0.000877f}, + {-0.126372f, -0.005082f, -0.000663f}, + {-0.063630f, +0.002788f, -0.000025f}, + {-0.013562f, +0.008476f, -0.004178f}, + {-0.027532f, -0.002871f, +0.003910f}, + {-0.014651f, +0.000004f, +0.003901f}, + {-0.068381f, +0.002931f, -0.001605f} } }; -const float FASTCONV_HOA2_latency_s = 0.000666667f; -const float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]= +const float FASTCONV_HOA2_latency_s = 0.000020833f; +const float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.005335f, +0.653226f, +0.143797f, +0.002456f, -0.000002f}, - {-0.013208f, +0.379140f, -0.322559f, -0.004978f, -0.000009f}, - {+0.001925f, +0.054222f, +0.043071f, -0.002449f, -0.000110f}, - {-0.000927f, +0.060176f, -0.015580f, -0.001281f, -0.000042f}, - {+0.003471f, +0.011471f, +0.002826f, +0.001074f, -0.000026f}, - {+0.003706f, -0.001098f, -0.005680f, +0.008863f, +0.000084f}, - {-0.005326f, -0.000766f, -0.002007f, -0.003072f, +0.000014f}, - {+0.001747f, -0.039662f, +0.085770f, +0.000859f, +0.000050f}, - {-0.009494f, +0.084274f, -0.084910f, -0.005996f, -0.000078f} - }, - { - {+0.020549f, +0.471556f, -0.054545f, -0.003976f, +0.000002f}, - {+0.031621f, +0.813566f, +0.056755f, +0.007166f, +0.000006f}, - {-0.002271f, -0.021372f, -0.026223f, +0.003087f, +0.000136f}, - {+0.000511f, +0.035700f, -0.040529f, +0.002564f, +0.000048f}, - {-0.007142f, -0.001751f, -0.001329f, -0.002743f, +0.000028f}, - {-0.006527f, -0.051957f, -0.070578f, -0.014200f, -0.000113f}, - {+0.014135f, +0.025109f, +0.015403f, +0.005652f, -0.000015f}, - {-0.003291f, -0.069019f, +0.036066f, +0.001141f, -0.000069f}, - {+0.028061f, +0.152663f, -0.025603f, +0.008277f, +0.000102f} - }, - { - {-0.039663f, +0.412008f, +0.017452f, +0.000445f, +0.000002f}, - {-0.026960f, +0.962971f, +0.087407f, +0.001953f, +0.000014f}, - {-0.001486f, -0.002955f, -0.054042f, +0.000085f, +0.000075f}, - {+0.003107f, +0.048844f, -0.051503f, -0.002108f, +0.000034f}, - {+0.009864f, -0.005169f, -0.019159f, +0.003128f, +0.000025f}, - {+0.004987f, -0.054770f, -0.099413f, +0.003316f, -0.000044f}, - {-0.024855f, +0.021795f, +0.065786f, -0.002538f, -0.000013f}, - {+0.003623f, +0.018186f, -0.058320f, -0.005763f, -0.000022f}, - {-0.055010f, +0.126807f, +0.109029f, +0.001546f, +0.000045f} - }, - { - {+0.043174f, +0.455537f, -0.027678f, +0.002529f, -0.000002f}, - {-0.025122f, +0.922813f, +0.028063f, -0.008613f, -0.000006f}, - {+0.002020f, +0.051124f, -0.010761f, +0.000153f, -0.000146f}, - {-0.010597f, +0.081732f, -0.001493f, +0.001479f, -0.000051f}, - {-0.024810f, +0.014152f, +0.030508f, -0.002185f, -0.000029f}, - {-0.011648f, +0.040215f, +0.008697f, +0.003893f, +0.000125f}, - {+0.043616f, -0.007408f, -0.035355f, -0.000987f, +0.000015f}, - {-0.007698f, +0.031375f, -0.028885f, +0.004919f, +0.000076f}, - {+0.093586f, +0.162669f, -0.029770f, -0.007128f, -0.000112f} - }, - { - {-0.001041f, +0.494032f, +0.005715f, -0.001108f, -0.000002f}, - {+0.143821f, +0.682007f, -0.029450f, +0.003481f, -0.000019f}, - {+0.006306f, +0.070613f, -0.011179f, -0.001860f, -0.000038f}, - {+0.031146f, +0.059515f, -0.014381f, -0.000905f, -0.000027f}, - {+0.052905f, -0.051459f, -0.001250f, +0.000868f, -0.000023f}, - {+0.029241f, +0.030800f, +0.000944f, -0.000488f, -0.000000f}, - {-0.055716f, +0.063529f, +0.002159f, +0.000641f, +0.000013f}, - {+0.013468f, -0.008041f, -0.000774f, +0.000134f, -0.000007f}, - {-0.101473f, +0.336570f, +0.012535f, +0.003233f, -0.000009f} - }, - { - {-0.092816f, +0.358882f, +0.002536f, -0.001449f, +0.000001f}, - {-0.262828f, +0.127251f, -0.020151f, +0.004341f, +0.000009f}, - {-0.022963f, +0.059857f, +0.016901f, +0.000212f, +0.000141f}, - {-0.064426f, -0.041934f, +0.012804f, -0.000049f, +0.000052f}, - {-0.064139f, -0.206373f, +0.000508f, -0.000138f, +0.000031f}, - {-0.035857f, -0.035091f, +0.016850f, -0.002300f, -0.000120f}, - {+0.032908f, +0.170386f, -0.004178f, +0.001249f, -0.000015f}, - {-0.010158f, -0.037569f, +0.007236f, -0.002146f, -0.000070f}, - {+0.021780f, +0.486360f, -0.004267f, +0.000644f, +0.000106f} - }, - { - {+0.166528f, -0.018320f, +0.002944f, +0.001057f, +0.000002f}, - {+0.217141f, -0.537828f, +0.015478f, -0.003353f, +0.000022f}, - {+0.036889f, -0.008294f, -0.001367f, +0.001254f, +0.000008f}, - {+0.069514f, -0.229400f, +0.010249f, +0.000566f, +0.000020f}, - {+0.019714f, -0.330742f, +0.003692f, -0.000002f, +0.000022f}, - {+0.010625f, -0.080582f, -0.010145f, +0.000258f, +0.000041f}, - {+0.022526f, +0.170893f, +0.014154f, -0.001025f, -0.000013f}, - {-0.007441f, -0.048091f, +0.004112f, +0.000974f, +0.000032f}, - {+0.115639f, +0.344255f, +0.014295f, -0.000177f, -0.000021f} - }, - { - {-0.099909f, -0.399087f, -0.008044f, +0.000848f, -0.000001f}, - {+0.054243f, -0.757012f, +0.020850f, -0.002283f, -0.000013f}, - {-0.025209f, -0.091980f, -0.004347f, +0.000486f, -0.000127f}, - {+0.003575f, -0.340857f, -0.007962f, -0.000163f, -0.000051f}, - {+0.071769f, -0.265803f, -0.002595f, +0.000097f, -0.000034f}, - {+0.026489f, -0.035458f, +0.005585f, +0.001110f, +0.000100f}, - {-0.060623f, +0.023422f, -0.010689f, -0.000403f, +0.000015f}, - {+0.027371f, -0.008448f, -0.007673f, -0.000192f, +0.000053f}, - {-0.176311f, -0.087697f, -0.004740f, -0.000958f, -0.000089f} - }, - { - {-0.098192f, -0.380559f, -0.012062f, -0.000872f, -0.000003f}, - {-0.307522f, -0.201411f, -0.041908f, +0.002386f, -0.000023f}, - {-0.016794f, -0.090327f, -0.008151f, -0.001481f, +0.000012f}, - {-0.117497f, -0.178818f, -0.001213f, -0.000161f, -0.000015f}, - {-0.130667f, +0.017905f, -0.002862f, -0.000224f, -0.000021f}, - {-0.026816f, +0.061563f, -0.002730f, -0.000500f, -0.000070f}, - {+0.035111f, -0.133808f, +0.000916f, +0.000421f, +0.000014f}, - {-0.028071f, +0.069426f, -0.005372f, -0.000149f, -0.000048f}, - {+0.069362f, -0.446237f, -0.000098f, +0.000728f, +0.000041f} - }, - { - {+0.200424f, +0.084933f, +0.029127f, -0.000528f, +0.000002f}, - {+0.208158f, +0.589613f, +0.015424f, +0.001691f, +0.000018f}, - {+0.041516f, +0.016661f, +0.015205f, -0.000153f, +0.000109f}, - {+0.138467f, +0.186187f, +0.007440f, -0.000185f, +0.000051f}, - {+0.077086f, +0.303705f, -0.003329f, +0.000036f, +0.000037f}, - {-0.020310f, +0.080808f, +0.007043f, -0.000054f, -0.000070f}, - {+0.031948f, -0.141008f, -0.000818f, +0.000548f, -0.000016f}, - {+0.000366f, +0.119534f, +0.006275f, +0.000355f, -0.000032f}, - {+0.109021f, -0.372983f, +0.009320f, +0.000129f, +0.000067f} - }, - { - {-0.031292f, +0.437887f, -0.005797f, +0.000706f, +0.000004f}, - {+0.174454f, +0.640794f, +0.027817f, -0.001980f, +0.000023f}, - {+0.003185f, +0.089160f, -0.003572f, +0.001064f, -0.000021f}, - {-0.004179f, +0.383165f, +0.003748f, +0.000389f, +0.000011f}, - {+0.056596f, +0.310132f, +0.010567f, +0.000223f, +0.000018f}, - {+0.057823f, -0.028077f, +0.000893f, +0.000451f, +0.000085f}, - {-0.063559f, +0.001711f, -0.003009f, -0.000543f, -0.000016f}, - {+0.035766f, +0.073579f, +0.002518f, +0.000224f, +0.000053f}, - {-0.161175f, +0.042780f, -0.016398f, -0.000634f, -0.000050f} - }, - { - {-0.205155f, +0.167329f, -0.030119f, +0.000379f, -0.000002f}, - {-0.339082f, -0.153701f, -0.034923f, -0.001267f, -0.000022f}, - {-0.072520f, -0.022480f, -0.011077f, +0.000072f, -0.000094f}, - {-0.141121f, +0.163887f, -0.018765f, +0.000088f, -0.000051f}, - {-0.127275f, +0.020840f, -0.015322f, +0.000034f, -0.000041f}, - {-0.027665f, -0.152414f, -0.006975f, -0.000222f, +0.000038f}, - {+0.020531f, +0.124947f, +0.003832f, -0.000374f, +0.000019f}, - {-0.042138f, -0.039811f, -0.003937f, -0.000440f, +0.000012f}, - {+0.031495f, +0.327305f, +0.001379f, +0.000105f, -0.000048f} - }, - { - {+0.145847f, -0.370580f, +0.020419f, -0.000633f, -0.000004f}, - {+0.026755f, -0.715695f, -0.002721f, +0.001713f, -0.000021f}, - {+0.048263f, -0.214620f, +0.011454f, -0.000799f, +0.000024f}, - {+0.105105f, -0.209642f, +0.009809f, -0.000393f, -0.000007f}, - {+0.046673f, -0.240709f, +0.003039f, -0.000354f, -0.000014f}, - {-0.046604f, -0.126235f, -0.001254f, -0.000637f, -0.000087f}, - {+0.040919f, +0.089993f, +0.004646f, +0.000614f, +0.000016f}, - {+0.003849f, -0.106327f, -0.000606f, -0.000255f, -0.000050f}, - {+0.114169f, +0.187796f, +0.016720f, +0.000604f, +0.000050f} - }, - { - {+0.151563f, -0.357850f, +0.023901f, -0.000267f, +0.000003f}, - {+0.329416f, -0.240852f, +0.037687f, +0.000972f, +0.000025f}, - {+0.079637f, -0.178703f, +0.006277f, -0.000085f, +0.000084f}, - {+0.067743f, -0.255542f, +0.013928f, -0.000093f, +0.000052f}, - {+0.085616f, -0.171409f, +0.015038f, -0.000016f, +0.000044f}, - {+0.080584f, +0.060419f, +0.009795f, +0.000260f, -0.000011f}, - {-0.039270f, -0.029107f, -0.004384f, +0.000149f, -0.000022f}, - {+0.040700f, -0.048532f, +0.005694f, +0.000308f, +0.000003f}, - {-0.100428f, -0.143102f, -0.013507f, -0.000175f, +0.000032f} - }, - { - {-0.221520f, +0.217382f, -0.031802f, +0.000571f, +0.000004f}, - {-0.191369f, +0.563524f, -0.020930f, -0.001563f, +0.000018f}, - {-0.142768f, +0.156236f, -0.016728f, +0.000768f, -0.000025f}, - {-0.131233f, +0.058224f, -0.018961f, +0.000413f, +0.000003f}, - {-0.094869f, +0.113180f, -0.014106f, +0.000387f, +0.000009f}, - {-0.032009f, +0.229593f, -0.004382f, +0.000814f, +0.000078f}, - {-0.014026f, -0.058166f, -0.005170f, -0.000559f, -0.000016f}, - {-0.035069f, +0.066238f, -0.003175f, +0.000270f, +0.000041f}, - {-0.032944f, -0.241581f, -0.006363f, -0.000531f, -0.000047f} - }, - { - {-0.072792f, +0.444420f, -0.012987f, +0.000205f, -0.000004f}, - {-0.237324f, +0.482374f, -0.029199f, -0.000704f, -0.000027f}, - {+0.015060f, +0.403253f, +0.004767f, +0.000016f, -0.000078f}, - {-0.002750f, +0.257555f, -0.001283f, +0.000101f, -0.000052f}, - {-0.029761f, +0.216925f, -0.003727f, +0.000037f, -0.000045f}, - {-0.050908f, +0.208738f, -0.003838f, -0.000287f, -0.000007f}, - {+0.026158f, +0.010072f, +0.007655f, -0.000049f, +0.000026f}, - {-0.018378f, +0.087639f, -0.004770f, -0.000153f, -0.000011f}, - {+0.100406f, -0.034654f, +0.015514f, +0.000140f, -0.000022f} - }, - { - {+0.257437f, -0.065717f, +0.037575f, -0.000530f, -0.000004f}, - {+0.281553f, -0.324420f, +0.036967f, +0.001412f, -0.000017f}, - {+0.165202f, +0.184739f, +0.014027f, -0.000709f, +0.000026f}, - {+0.125102f, +0.059915f, +0.017871f, -0.000393f, +0.000001f}, - {+0.112292f, -0.000623f, +0.014750f, -0.000389f, -0.000004f}, - {+0.090463f, +0.007129f, +0.003581f, -0.000747f, -0.000067f}, - {+0.027231f, +0.007327f, +0.004513f, +0.000487f, +0.000014f}, - {+0.046307f, -0.017672f, +0.008365f, -0.000175f, -0.000032f}, - {-0.028415f, +0.161325f, -0.001715f, +0.000514f, +0.000043f} - }, - { - {-0.007526f, -0.473436f, +0.001022f, -0.000153f, +0.000005f}, - {+0.129889f, -0.550582f, +0.015713f, +0.000496f, +0.000029f}, - {-0.152654f, -0.291103f, -0.013185f, -0.000005f, +0.000074f}, - {-0.054068f, -0.217748f, -0.007018f, -0.000142f, +0.000051f}, - {-0.037999f, -0.233960f, -0.005179f, -0.000063f, +0.000045f}, - {-0.058157f, -0.208550f, -0.000279f, +0.000232f, +0.000018f}, - {-0.043982f, -0.108725f, -0.011637f, +0.000065f, -0.000029f}, - {+0.000177f, -0.092885f, -0.000896f, -0.000064f, +0.000013f}, - {-0.062887f, +0.105831f, -0.012283f, -0.000152f, +0.000016f} - }, - { - {-0.267052f, -0.072481f, -0.039143f, +0.000481f, +0.000004f}, - {-0.316645f, +0.147998f, -0.045958f, -0.001265f, +0.000015f}, - {-0.048560f, -0.443085f, -0.007515f, +0.000666f, -0.000028f}, - {-0.086419f, -0.172339f, -0.010499f, +0.000432f, -0.000005f}, - {-0.085408f, -0.166595f, -0.008605f, +0.000440f, +0.000000f}, - {-0.015618f, -0.269874f, -0.001215f, +0.000625f, +0.000057f}, - {-0.041006f, -0.120930f, -0.000588f, -0.000488f, -0.000012f}, - {-0.062603f, +0.004952f, -0.009992f, +0.000232f, +0.000027f}, - {+0.049095f, -0.068280f, +0.006362f, -0.000520f, -0.000040f} - }, - { - {+0.085562f, +0.471449f, +0.011009f, +0.000129f, -0.000005f}, - {-0.040209f, +0.573378f, -0.000615f, -0.000315f, -0.000031f}, - {+0.171918f, -0.105151f, +0.017403f, +0.000004f, -0.000072f}, - {+0.084128f, +0.083375f, +0.007231f, +0.000038f, -0.000051f}, - {+0.092144f, +0.099172f, +0.007312f, -0.000077f, -0.000045f}, - {+0.077363f, -0.132678f, +0.001733f, -0.000235f, -0.000023f}, - {+0.111219f, +0.109132f, +0.015848f, -0.000079f, +0.000032f}, - {+0.040923f, +0.172426f, +0.008798f, -0.000008f, -0.000013f}, - {+0.029588f, -0.098729f, +0.007764f, +0.000221f, -0.000011f} - }, - { - {+0.254737f, +0.211411f, +0.036795f, -0.000484f, -0.000003f}, - {+0.338234f, -0.015114f, +0.048846f, +0.001053f, -0.000013f}, - {-0.069108f, +0.254859f, -0.003290f, -0.000753f, +0.000029f}, - {+0.023788f, +0.170361f, +0.006488f, -0.000354f, +0.000008f}, - {+0.008393f, +0.222503f, +0.002681f, -0.000354f, +0.000003f}, - {-0.081171f, +0.098496f, -0.004558f, -0.000585f, -0.000051f}, - {-0.022336f, +0.317809f, -0.007308f, +0.000546f, +0.000009f}, - {+0.059371f, +0.155239f, +0.002593f, -0.000198f, -0.000025f}, - {-0.050719f, +0.026919f, -0.006976f, +0.000534f, +0.000037f} - }, - { - {-0.158995f, -0.424829f, -0.020702f, -0.000042f, +0.000006f}, - {-0.052902f, -0.616966f, -0.013055f, +0.000306f, +0.000032f}, - {-0.087152f, +0.213242f, -0.015296f, +0.000352f, +0.000070f}, - {-0.054260f, +0.047270f, -0.008042f, +0.000061f, +0.000051f}, - {-0.073970f, +0.094701f, -0.008512f, +0.000228f, +0.000046f}, - {+0.017462f, +0.238223f, +0.000790f, +0.000485f, +0.000029f}, - {-0.138534f, +0.148762f, -0.014349f, -0.000008f, -0.000034f}, - {-0.109919f, -0.097327f, -0.010882f, +0.000233f, +0.000014f}, - {-0.006806f, +0.096529f, -0.003657f, -0.000365f, +0.000007f} - }, - { - {-0.218541f, -0.332409f, -0.031504f, +0.000445f, +0.000003f}, - {-0.344919f, -0.163301f, -0.048934f, -0.001021f, +0.000012f}, - {+0.081260f, -0.052733f, +0.012413f, +0.000334f, -0.000031f}, - {+0.001753f, -0.039186f, -0.002593f, +0.000192f, -0.000011f}, - {+0.044437f, -0.083315f, +0.002185f, +0.000075f, -0.000005f}, - {+0.063695f, +0.165969f, +0.005598f, +0.000350f, +0.000048f}, - {+0.133966f, -0.261153f, +0.015377f, -0.000538f, -0.000006f}, - {+0.023795f, -0.302979f, +0.005384f, -0.000124f, +0.000025f}, - {+0.048328f, +0.008375f, +0.007723f, -0.000384f, -0.000035f} - }, - { - {+0.215234f, +0.334693f, +0.029335f, -0.000032f, -0.000006f}, - {+0.163645f, +0.620258f, +0.029442f, -0.000199f, -0.000034f}, - {+0.033793f, -0.124345f, +0.006813f, -0.000105f, -0.000071f}, - {+0.000974f, -0.040313f, +0.001531f, +0.000006f, -0.000052f}, - {+0.011132f, -0.127973f, +0.004627f, +0.000028f, -0.000047f}, - {-0.084325f, -0.052788f, -0.007351f, -0.000453f, -0.000037f}, - {+0.056743f, -0.375950f, +0.009997f, +0.000141f, +0.000035f}, - {+0.111528f, -0.176673f, +0.008510f, +0.000146f, -0.000018f}, - {-0.011877f, -0.092945f, -0.003074f, +0.000266f, -0.000004f} - }, - { - {+0.170586f, +0.400778f, +0.026157f, -0.000380f, -0.000003f}, - {+0.309161f, +0.398764f, +0.040718f, +0.000943f, -0.000011f}, - {-0.062016f, +0.029728f, -0.012911f, -0.000459f, +0.000035f}, - {+0.031810f, -0.090010f, +0.007426f, -0.000129f, +0.000014f}, - {-0.032063f, -0.056196f, -0.004324f, -0.000244f, +0.000009f}, - {+0.022806f, -0.208884f, -0.000856f, -0.000371f, -0.000043f}, - {-0.165081f, -0.039385f, -0.016746f, +0.000367f, +0.000003f}, - {-0.128190f, +0.183103f, -0.012188f, -0.000425f, -0.000025f}, - {-0.049731f, -0.043210f, -0.002580f, +0.000500f, +0.000034f} - }, - { - {-0.253118f, -0.253855f, -0.036031f, +0.000022f, +0.000008f}, - {-0.270280f, -0.483591f, -0.039528f, +0.000153f, +0.000036f}, - {-0.018783f, +0.101617f, -0.001693f, +0.000100f, +0.000073f}, - {+0.020506f, -0.111990f, -0.001982f, -0.000215f, +0.000054f}, - {+0.026438f, +0.035500f, +0.002626f, -0.000034f, +0.000050f}, - {+0.052495f, -0.162509f, +0.005782f, +0.000307f, +0.000047f}, - {+0.034503f, +0.254582f, -0.002428f, -0.000029f, -0.000037f}, - {-0.007059f, +0.365527f, +0.000861f, +0.000308f, +0.000024f}, - {+0.051840f, +0.110577f, +0.004579f, -0.000471f, +0.000002f} - }, - { - {-0.123354f, -0.454617f, -0.017101f, +0.000408f, +0.000003f}, - {-0.216188f, -0.557670f, -0.033272f, -0.000921f, +0.000010f}, - {+0.060077f, -0.016368f, +0.008130f, +0.000544f, -0.000041f}, - {-0.097698f, +0.063611f, -0.011314f, +0.000334f, -0.000020f}, - {-0.004155f, +0.082194f, -0.000724f, +0.000315f, -0.000015f}, - {-0.061885f, +0.007918f, -0.004267f, +0.000661f, +0.000034f}, - {+0.120251f, +0.108336f, +0.021527f, -0.000454f, +0.000001f}, - {+0.138249f, +0.145446f, +0.014907f, +0.000187f, +0.000021f}, - {+0.010129f, +0.174821f, +0.000225f, -0.000291f, -0.000033f} - }, - { - {+0.286163f, +0.175080f, +0.040522f, -0.000072f, -0.000009f}, - {+0.316113f, +0.262138f, +0.049307f, -0.000066f, -0.000038f}, - {-0.006202f, -0.116156f, -0.000344f, -0.000116f, -0.000074f}, - {+0.026045f, +0.250354f, +0.005697f, +0.000168f, -0.000055f}, - {-0.033061f, +0.037487f, -0.003086f, +0.000057f, -0.000051f}, - {+0.009161f, +0.111428f, -0.002750f, -0.000407f, -0.000055f}, - {-0.050197f, -0.166126f, -0.010372f, +0.000135f, +0.000039f}, - {-0.108124f, -0.227657f, -0.011340f, -0.000057f, -0.000029f}, - {-0.062623f, +0.065189f, -0.003295f, +0.000387f, +0.000001f} - }, - { - {+0.066678f, +0.512159f, +0.009358f, -0.000375f, -0.000002f}, - {+0.128892f, +0.546911f, +0.020182f, +0.000837f, -0.000009f}, - {-0.041244f, -0.065432f, -0.004659f, -0.000466f, +0.000049f}, - {+0.124448f, +0.097696f, +0.018095f, -0.000283f, +0.000027f}, - {+0.039700f, -0.075487f, +0.006824f, -0.000303f, +0.000022f}, - {+0.033671f, +0.064807f, +0.008036f, -0.000540f, -0.000022f}, - {-0.115666f, -0.069551f, -0.016489f, +0.000343f, -0.000004f}, - {-0.044678f, -0.318287f, -0.008724f, -0.000374f, -0.000016f}, - {+0.045915f, -0.096744f, +0.005450f, +0.000336f, +0.000032f} - }, - { - {-0.306654f, -0.062299f, -0.043370f, +0.000070f, +0.000010f}, - {-0.327815f, -0.157084f, -0.053522f, +0.000024f, +0.000042f}, - {+0.020545f, +0.022620f, -0.000196f, -0.000030f, +0.000072f}, - {-0.093582f, -0.234733f, -0.010882f, -0.000285f, +0.000055f}, - {+0.018657f, -0.107686f, +0.002873f, -0.000136f, +0.000051f}, - {-0.022629f, -0.029525f, -0.002254f, +0.000156f, +0.000058f}, - {+0.080228f, +0.235900f, +0.013683f, -0.000069f, -0.000040f}, - {+0.131827f, -0.044535f, +0.015502f, +0.000103f, +0.000031f}, - {+0.019414f, -0.130958f, +0.003490f, -0.000488f, -0.000004f} - }, - { - {-0.003446f, -0.527577f, -0.000418f, +0.000351f, +0.000001f}, - {-0.063671f, -0.564794f, -0.009104f, -0.000762f, +0.000008f}, - {+0.005424f, +0.040112f, +0.004744f, +0.000443f, -0.000057f}, - {-0.104226f, -0.211764f, -0.016606f, +0.000287f, -0.000034f}, - {-0.067397f, +0.027841f, -0.010395f, +0.000286f, -0.000029f}, - {-0.014235f, -0.044128f, -0.001136f, +0.000560f, +0.000010f}, - {+0.112939f, +0.189986f, +0.013999f, -0.000350f, +0.000008f}, - {-0.051770f, +0.234766f, -0.004628f, +0.000261f, +0.000010f}, - {-0.057159f, -0.008653f, -0.009510f, -0.000310f, -0.000032f} - }, - { - {+0.309125f, -0.046398f, +0.043868f, -0.000070f, -0.000010f}, - {+0.337900f, +0.049301f, +0.053004f, +0.000032f, -0.000046f}, - {+0.006452f, +0.038403f, -0.000549f, +0.000028f, -0.000068f}, - {+0.142396f, +0.170693f, +0.019921f, +0.000322f, -0.000053f}, - {+0.012544f, +0.153200f, +0.002399f, +0.000157f, -0.000049f}, - {+0.026935f, +0.020769f, +0.002517f, -0.000142f, -0.000057f}, - {-0.135188f, -0.190554f, -0.017975f, +0.000073f, +0.000042f}, - {-0.083199f, +0.182605f, -0.012518f, -0.000033f, -0.000031f}, - {+0.022452f, +0.113080f, +0.002881f, +0.000561f, +0.000007f} - }, - { - {-0.056550f, +0.514353f, -0.008128f, -0.000326f, +0.000000f}, - {-0.002761f, +0.570850f, +0.000438f, +0.000698f, -0.000005f}, - {-0.005763f, +0.055193f, -0.003144f, -0.000303f, +0.000064f}, - {+0.066858f, +0.287146f, +0.008674f, -0.000271f, +0.000039f}, - {+0.079593f, +0.051699f, +0.009265f, -0.000243f, +0.000035f}, - {-0.004491f, +0.069814f, -0.001757f, -0.000412f, -0.000001f}, - {-0.070466f, -0.289680f, -0.008846f, +0.000325f, -0.000013f}, - {+0.096678f, -0.094366f, +0.010661f, -0.000155f, -0.000007f}, - {+0.041572f, +0.082696f, +0.006577f, +0.000266f, +0.000031f} - }, - { - {-0.298262f, +0.141215f, -0.042908f, +0.000091f, +0.000010f}, - {-0.335616f, +0.061120f, -0.052587f, -0.000136f, +0.000050f}, - {-0.028168f, +0.019948f, -0.003001f, +0.000044f, +0.000065f}, - {-0.179347f, -0.090626f, -0.024448f, -0.000251f, +0.000051f}, - {-0.055697f, -0.153136f, -0.006127f, -0.000099f, +0.000047f}, - {-0.022758f, +0.040841f, -0.001974f, +0.000245f, +0.000056f}, - {+0.171241f, +0.083402f, +0.023385f, -0.000076f, -0.000043f}, - {+0.018087f, -0.211528f, +0.004820f, +0.000028f, +0.000030f}, - {-0.051883f, -0.059963f, -0.007202f, -0.000532f, -0.000011f} - }, - { - {+0.109668f, -0.485328f, +0.016423f, +0.000299f, -0.000001f}, - {+0.064276f, -0.551492f, +0.008554f, -0.000611f, +0.000002f}, - {+0.027762f, -0.066226f, +0.006657f, +0.000180f, -0.000068f}, - {-0.008606f, -0.352413f, -0.000966f, +0.000207f, -0.000045f}, - {-0.061405f, -0.140795f, -0.008634f, +0.000186f, -0.000040f}, - {+0.022602f, -0.028596f, +0.003958f, +0.000252f, -0.000003f}, - {+0.006333f, +0.339254f, -0.001045f, -0.000313f, +0.000017f}, - {-0.095236f, -0.035271f, -0.011532f, +0.000098f, +0.000006f}, - {-0.006892f, -0.129936f, -0.001855f, -0.000288f, -0.000028f} - }, - { - {+0.280162f, -0.222327f, +0.040172f, -0.000132f, -0.000011f}, - {+0.325666f, -0.150573f, +0.051593f, +0.000209f, -0.000054f}, - {+0.028869f, -0.065199f, +0.002958f, -0.000146f, -0.000066f}, - {+0.187456f, -0.052621f, +0.025102f, +0.000202f, -0.000052f}, - {+0.080571f, +0.077938f, +0.010648f, +0.000040f, -0.000047f}, - {+0.004481f, -0.054774f, +0.000402f, -0.000382f, -0.000060f}, - {-0.176395f, +0.061006f, -0.022445f, +0.000083f, +0.000045f}, - {+0.032007f, +0.158843f, +0.002664f, -0.000125f, -0.000033f}, - {+0.057225f, -0.034866f, +0.006728f, +0.000520f, +0.000013f} - }, - { - {-0.158921f, +0.451848f, -0.023918f, -0.000281f, +0.000001f}, - {-0.121553f, +0.536831f, -0.017942f, +0.000578f, +0.000001f}, - {-0.050855f, +0.055529f, -0.008445f, -0.000215f, +0.000075f}, - {-0.052686f, +0.312195f, -0.005219f, -0.000224f, +0.000052f}, - {+0.037110f, +0.141320f, +0.006102f, -0.000195f, +0.000048f}, - {-0.024782f, -0.009783f, -0.004483f, -0.000288f, +0.000009f}, - {+0.063910f, -0.304697f, +0.007623f, +0.000328f, -0.000023f}, - {+0.068609f, +0.100384f, +0.009341f, -0.000091f, -0.000007f}, - {-0.033166f, +0.101342f, -0.001173f, +0.000251f, +0.000026f} - }, - { - {-0.254134f, +0.305063f, -0.036122f, +0.000175f, +0.000012f}, - {-0.313748f, +0.244268f, -0.048706f, -0.000275f, +0.000058f}, - {-0.012267f, +0.112660f, -0.001928f, +0.000238f, +0.000072f}, - {-0.161165f, +0.140763f, -0.024820f, -0.000200f, +0.000054f}, - {-0.090126f, -0.058592f, -0.014503f, -0.000035f, +0.000049f}, - {+0.010917f, +0.042825f, +0.001085f, +0.000524f, +0.000070f}, - {+0.139731f, -0.183781f, +0.020533f, -0.000104f, -0.000047f}, - {-0.056473f, -0.093013f, -0.007395f, +0.000190f, +0.000040f}, - {-0.028362f, +0.108300f, -0.004536f, -0.000507f, -0.000014f} - }, - { - {+0.204108f, -0.397468f, +0.030234f, +0.000284f, -0.000002f}, - {+0.186187f, -0.523327f, +0.027065f, -0.000548f, -0.000002f}, - {+0.063644f, -0.004588f, +0.010914f, +0.000342f, -0.000092f}, - {+0.084172f, -0.238464f, +0.012067f, +0.000307f, -0.000066f}, - {-0.023241f, -0.163547f, -0.001737f, +0.000268f, -0.000061f}, - {+0.017633f, +0.031273f, +0.004558f, +0.000453f, -0.000024f}, - {-0.103701f, +0.192462f, -0.015036f, -0.000326f, +0.000032f}, - {-0.040508f, -0.117502f, -0.005435f, +0.000218f, +0.000003f}, - {+0.044739f, -0.003358f, +0.002673f, -0.000166f, -0.000026f} - }, - { - {+0.217925f, -0.374764f, +0.031310f, -0.000194f, -0.000015f}, - {+0.287194f, -0.371793f, +0.043606f, +0.000298f, -0.000065f}, - {-0.012378f, -0.121133f, -0.001692f, -0.000139f, -0.000076f}, - {+0.138854f, -0.153518f, +0.021173f, +0.000296f, -0.000054f}, - {+0.110078f, +0.041091f, +0.015691f, +0.000117f, -0.000048f}, - {-0.016824f, -0.020994f, -0.002433f, -0.000470f, -0.000080f}, - {-0.093179f, +0.207425f, -0.014155f, +0.000078f, +0.000048f}, - {+0.066586f, +0.047692f, +0.008958f, -0.000170f, -0.000050f}, - {-0.006034f, -0.079321f, +0.001680f, +0.000546f, +0.000014f} - }, - { - {-0.239100f, +0.326388f, -0.035676f, -0.000310f, +0.000005f}, - {-0.254019f, +0.457019f, -0.035395f, +0.000472f, +0.000004f}, - {-0.063172f, -0.043743f, -0.010677f, -0.000446f, +0.000122f}, - {-0.106250f, +0.224976f, -0.016160f, -0.000331f, +0.000087f}, - {-0.006588f, +0.220018f, -0.002089f, -0.000280f, +0.000081f}, - {-0.012847f, -0.026665f, -0.004159f, -0.000613f, +0.000053f}, - {+0.116434f, -0.116659f, +0.017836f, +0.000308f, -0.000043f}, - {+0.014851f, +0.127471f, +0.001839f, -0.000426f, +0.000008f}, - {-0.024363f, -0.047415f, -0.002156f, +0.000076f, +0.000029f} - }, - { - {-0.177651f, +0.419626f, -0.025372f, +0.000189f, +0.000018f}, - {-0.234856f, +0.487730f, -0.036693f, -0.000275f, +0.000076f}, - {+0.036507f, +0.108100f, +0.004077f, -0.000196f, +0.000068f}, - {-0.123472f, +0.198845f, -0.018454f, -0.000539f, +0.000045f}, - {-0.120851f, +0.044023f, -0.017124f, -0.000326f, +0.000038f}, - {+0.019744f, +0.023127f, +0.003003f, +0.000144f, +0.000080f}, - {+0.054985f, -0.211321f, +0.008525f, +0.000002f, -0.000046f}, - {-0.067840f, +0.000644f, -0.008680f, +0.000062f, +0.000059f}, - {+0.013438f, +0.012637f, +0.000624f, -0.000676f, -0.000018f} - }, - { - {+0.265046f, -0.258984f, +0.039613f, +0.000315f, -0.000010f}, - {+0.305263f, -0.341002f, +0.042929f, -0.000320f, -0.000009f}, - {+0.052493f, +0.082191f, +0.010230f, +0.000306f, -0.000162f}, - {+0.135578f, -0.200816f, +0.020288f, +0.000195f, -0.000112f}, - {+0.047909f, -0.214878f, +0.007490f, +0.000138f, -0.000104f}, - {+0.013632f, +0.032324f, +0.004221f, +0.000548f, -0.000093f}, - {-0.118924f, +0.057091f, -0.018445f, -0.000261f, +0.000056f}, - {+0.008331f, -0.114878f, +0.000663f, +0.000507f, -0.000028f}, - {+0.005413f, +0.022808f, -0.000439f, -0.000059f, -0.000035f} - }, - { - {+0.136435f, -0.454829f, +0.019582f, -0.000149f, -0.000018f}, - {+0.168461f, -0.553033f, +0.027068f, +0.000281f, -0.000094f}, - {-0.056383f, -0.088168f, -0.008472f, +0.000590f, -0.000037f}, - {+0.096992f, -0.262712f, +0.013318f, +0.000816f, -0.000021f}, - {+0.110234f, -0.118824f, +0.015813f, +0.000528f, -0.000014f}, - {-0.029948f, -0.036351f, -0.005263f, +0.000282f, -0.000056f}, - {-0.020326f, +0.210405f, -0.002631f, -0.000079f, +0.000039f}, - {+0.060030f, -0.032820f, +0.009213f, +0.000193f, -0.000059f}, - {-0.003943f, +0.005977f, -0.000375f, +0.000898f, +0.000028f} - }, - { - {-0.284355f, +0.190433f, -0.042800f, -0.000266f, +0.000017f}, - {-0.335277f, +0.219226f, -0.046865f, +0.000105f, +0.000022f}, - {-0.036478f, -0.124061f, -0.005694f, +0.000344f, +0.000198f}, - {-0.163243f, +0.134561f, -0.022257f, +0.000183f, +0.000132f}, - {-0.083868f, +0.178051f, -0.011964f, +0.000280f, +0.000122f}, - {-0.010723f, -0.070555f, -0.001815f, +0.000022f, +0.000132f}, - {+0.111861f, +0.009495f, +0.016549f, +0.000135f, -0.000069f}, - {-0.022143f, +0.095016f, -0.003757f, -0.000379f, +0.000052f}, - {-0.000565f, +0.002446f, +0.001442f, +0.000102f, +0.000039f} - }, - { - {-0.095291f, +0.479278f, -0.013467f, +0.000098f, +0.000016f}, - {-0.099306f, +0.582261f, -0.017486f, -0.000468f, +0.000116f}, - {+0.078355f, +0.049439f, +0.008412f, -0.000772f, -0.000023f}, - {-0.051414f, +0.305039f, -0.008849f, -0.000882f, -0.000019f}, - {-0.082995f, +0.177822f, -0.013237f, -0.000567f, -0.000026f}, - {+0.049222f, +0.017872f, +0.004795f, -0.000539f, +0.000005f}, - {-0.011696f, -0.179076f, -0.000545f, +0.000092f, -0.000026f}, - {-0.054786f, +0.044185f, -0.008075f, -0.000456f, +0.000046f}, - {-0.005431f, -0.002236f, -0.000119f, -0.000987f, -0.000046f} - }, - { - {+0.300035f, -0.126686f, +0.045279f, +0.000141f, -0.000023f}, - {+0.347527f, -0.104803f, +0.049661f, +0.000162f, -0.000050f}, - {+0.000140f, +0.170954f, +0.002869f, -0.001398f, -0.000210f}, - {+0.165631f, -0.028348f, +0.023643f, -0.000777f, -0.000136f}, - {+0.103480f, -0.108513f, +0.015479f, -0.000834f, -0.000124f}, - {-0.013480f, +0.114650f, +0.000763f, -0.001025f, -0.000149f}, - {-0.089040f, -0.060481f, -0.014574f, +0.000082f, +0.000079f}, - {+0.036486f, -0.097396f, +0.006421f, +0.000002f, -0.000073f}, - {+0.003333f, -0.016091f, -0.002020f, -0.000329f, -0.000034f} - }, - { - {+0.051566f, -0.506796f, +0.007039f, -0.000099f, -0.000010f}, - {+0.033731f, -0.589122f, +0.007210f, +0.000795f, -0.000134f}, - {-0.079279f, +0.049325f, -0.008393f, +0.000023f, +0.000100f}, - {+0.010994f, -0.265800f, +0.003418f, +0.000397f, +0.000069f}, - {+0.052364f, -0.186418f, +0.009164f, +0.000026f, +0.000073f}, - {-0.052053f, +0.056265f, -0.005015f, -0.000066f, +0.000065f}, - {+0.026200f, +0.116741f, +0.002983f, +0.000008f, +0.000008f}, - {+0.048119f, -0.079713f, +0.006644f, +0.000374f, -0.000021f}, - {+0.010900f, -0.005754f, +0.000987f, +0.000869f, +0.000068f} - }, - { - {-0.311437f, +0.048951f, -0.046976f, +0.000118f, +0.000027f}, - {-0.349598f, -0.000051f, -0.050374f, -0.000038f, +0.000095f}, - {+0.040613f, -0.137831f, -0.000066f, +0.002700f, +0.000181f}, - {-0.149052f, -0.019968f, -0.023093f, +0.001262f, +0.000115f}, - {-0.107473f, +0.058841f, -0.017699f, +0.001256f, +0.000101f}, - {+0.043140f, -0.091871f, +0.000478f, +0.002412f, +0.000129f}, - {+0.064483f, +0.059569f, +0.011301f, -0.000210f, -0.000082f}, - {-0.054255f, +0.077805f, -0.009915f, +0.000915f, +0.000081f}, - {-0.008263f, +0.025078f, +0.001271f, +0.000578f, +0.000014f} - }, - { - {-0.002478f, +0.521278f, -0.000544f, +0.000189f, +0.000002f}, - {+0.031629f, +0.587979f, +0.001886f, -0.001424f, +0.000137f}, - {+0.053320f, -0.118505f, +0.004875f, +0.003174f, -0.000173f}, - {+0.008995f, +0.224389f, +0.001153f, +0.001756f, -0.000113f}, - {-0.029482f, +0.180110f, -0.004281f, +0.002087f, -0.000115f}, - {+0.033134f, -0.107741f, +0.001943f, +0.002753f, -0.000132f}, - {-0.023463f, -0.074570f, -0.002999f, -0.000562f, +0.000011f}, - {-0.031477f, +0.111590f, -0.005933f, +0.000350f, -0.000010f}, - {-0.015016f, +0.015277f, -0.001484f, -0.000128f, -0.000086f} + {+0.018159f, +0.985146f, +0.240506f}, + {+0.077046f, -0.024713f, +0.260411f}, + {+0.000593f, +0.132269f, +0.000009f}, + {+0.009213f, +0.054471f, +0.004257f}, + {+0.039823f, -0.044599f, -0.001606f}, + {+0.011090f, -0.028094f, +0.011739f}, + {-0.057613f, +0.083209f, +0.004522f}, + {+0.010244f, +0.028373f, -0.010969f}, + {-0.107601f, +0.182275f, +0.052385f} + }, + { + {-0.152534f, -0.329898f, -0.242342f}, + {-0.209786f, -1.273585f, -0.112026f}, + {-0.011413f, +0.080591f, -0.013524f}, + {-0.034221f, +0.013783f, +0.008826f}, + {-0.012372f, +0.014808f, +0.038195f}, + {+0.003235f, +0.083338f, +0.068446f}, + {+0.003314f, -0.032912f, -0.065265f}, + {+0.003322f, +0.076317f, +0.007937f}, + {-0.015189f, -0.220191f, -0.130843f} + }, + { + {-0.023093f, -0.558938f, -0.150964f}, + {-0.270176f, -0.589966f, -0.359432f}, + {-0.003260f, +0.097037f, -0.014970f}, + {-0.058519f, +0.107799f, -0.014627f}, + {-0.084143f, +0.174088f, -0.006734f}, + {-0.035814f, +0.281769f, -0.006166f}, + {+0.116511f, -0.307921f, +0.020292f}, + {-0.013401f, +0.086307f, +0.012981f}, + {+0.209526f, -0.554513f, -0.048661f} + }, + { + {+0.261551f, +0.304347f, +0.114032f}, + {+0.250896f, +0.779633f, +0.070356f}, + {+0.023786f, +0.088663f, -0.030815f}, + {+0.003407f, +0.082081f, -0.041209f}, + {-0.062118f, +0.047824f, -0.057239f}, + {-0.026013f, +0.155692f, -0.065882f}, + {+0.127095f, -0.164040f, +0.077176f}, + {-0.022006f, +0.035999f, -0.005698f}, + {+0.327951f, -0.045215f, +0.125831f} + }, + { + {+0.359497f, +0.205525f, +0.109865f}, + {+0.745384f, +0.051437f, +0.216054f}, + {+0.066207f, -0.076438f, +0.024748f}, + {+0.143496f, -0.123266f, +0.007838f}, + {+0.098368f, -0.139294f, -0.014972f}, + {+0.065224f, -0.122143f, +0.029816f}, + {-0.019520f, +0.163808f, -0.024174f}, + {+0.008568f, -0.024216f, +0.013284f}, + {+0.111141f, +0.311803f, +0.021197f} + }, + { + {+0.165159f, -0.254129f, -0.025534f}, + {+0.780421f, -0.408205f, +0.025264f}, + {+0.043262f, -0.082839f, +0.025956f}, + {+0.214774f, -0.021619f, +0.026192f}, + {+0.266921f, +0.073753f, +0.026414f}, + {+0.110056f, -0.068805f, +0.038706f}, + {-0.162323f, +0.018037f, -0.046919f}, + {+0.046582f, -0.024241f, +0.003856f}, + {-0.254154f, -0.105995f, -0.060073f} + }, + { + {-0.177496f, +0.069944f, -0.070544f}, + {+0.384878f, +0.205067f, -0.111476f}, + {-0.035734f, +0.067378f, -0.014549f}, + {+0.125583f, +0.062055f, +0.008649f}, + {+0.294346f, +0.048254f, +0.026299f}, + {+0.090207f, +0.084523f, -0.015326f}, + {-0.211714f, -0.100002f, +0.007755f}, + {+0.078344f, -0.022510f, -0.004774f}, + {-0.527842f, -0.045905f, -0.024578f} + }, + { + {-0.463362f, +0.056885f, -0.021761f}, + {-0.150954f, +0.026543f, -0.068293f}, + {-0.101521f, +0.000813f, -0.025478f}, + {-0.095046f, -0.089523f, -0.003261f}, + {+0.134616f, -0.104561f, +0.001013f}, + {+0.059105f, +0.025388f, -0.028020f}, + {-0.181070f, -0.006996f, +0.032275f}, + {+0.082036f, -0.002388f, +0.001840f}, + {-0.586330f, +0.048806f, +0.016554f} + }, + { + {-0.592381f, -0.044571f, +0.029549f}, + {-0.576892f, -0.036976f, +0.022220f}, + {-0.119596f, -0.060394f, -0.001555f}, + {-0.338453f, +0.063985f, -0.014668f}, + {-0.125238f, +0.093159f, -0.021501f}, + {+0.045169f, -0.044028f, +0.000433f}, + {-0.115198f, +0.025252f, +0.004920f}, + {+0.041077f, +0.008697f, +0.004995f}, + {-0.438497f, -0.055561f, +0.020980f} + }, + { + {-0.599054f, -0.014356f, +0.032985f}, + {-0.822874f, -0.044354f, +0.046136f}, + {-0.117506f, +0.008009f, +0.019868f}, + {-0.479925f, +0.018761f, -0.007799f}, + {-0.339581f, -0.001799f, -0.018360f}, + {+0.028531f, -0.004096f, +0.014580f}, + {-0.035532f, +0.016131f, -0.009871f}, + {-0.031577f, -0.038412f, +0.000988f}, + {-0.188266f, +0.051427f, +0.014971f} + }, + { + {-0.558565f, +0.027629f, +0.008677f}, + {-0.934558f, +0.055883f, +0.019701f}, + {-0.143536f, +0.040687f, +0.009496f}, + {-0.475498f, -0.046650f, +0.012347f}, + {-0.418986f, -0.046808f, +0.009187f}, + {-0.019973f, +0.045258f, +0.001389f}, + {+0.040837f, -0.027615f, -0.004137f}, + {-0.104086f, +0.015540f, -0.006688f}, + {+0.045132f, -0.020688f, +0.004131f} + }, + { + {-0.508817f, +0.002572f, -0.006006f}, + {-0.966334f, -0.010598f, +0.000935f}, + {-0.200114f, -0.021501f, -0.002245f}, + {-0.374199f, +0.021235f, +0.015875f}, + {-0.383236f, +0.011504f, +0.019281f}, + {-0.101681f, -0.007702f, -0.004459f}, + {+0.098607f, +0.009824f, -0.000170f}, + {-0.142186f, +0.015367f, -0.000073f}, + {+0.202499f, +0.007942f, -0.007850f} + }, + { + {-0.449816f, -0.025700f, -0.002766f}, + {-0.942805f, -0.019015f, +0.002630f}, + {-0.251515f, +0.005009f, -0.000037f}, + {-0.247529f, -0.018163f, +0.007953f}, + {-0.297646f, -0.008359f, +0.008978f}, + {-0.194833f, +0.010293f, +0.006773f}, + {+0.127610f, -0.005400f, -0.000110f}, + {-0.141062f, -0.005988f, +0.007030f}, + {+0.285592f, -0.008291f, -0.012555f} + }, + { + {-0.376168f, +0.026055f, +0.004627f}, + {-0.871841f, +0.021874f, +0.006470f}, + {-0.251474f, +0.012379f, +0.004839f}, + {-0.143351f, +0.003085f, +0.000557f}, + {-0.213031f, +0.008846f, +0.002525f}, + {-0.266224f, -0.023397f, +0.007678f}, + {+0.122414f, -0.005951f, +0.000933f}, + {-0.115352f, -0.004480f, +0.001947f}, + {+0.318209f, +0.018171f, -0.006837f} + }, + { + {-0.293873f, -0.014103f, +0.005564f}, + {-0.763509f, -0.026484f, +0.005957f}, + {-0.167339f, -0.021635f, +0.004681f}, + {-0.071079f, -0.008355f, -0.004673f}, + {-0.149092f, -0.004738f, -0.000445f}, + {-0.269948f, +0.002632f, +0.000196f}, + {+0.088484f, +0.013962f, +0.000022f}, + {-0.080315f, -0.009623f, -0.002700f}, + {+0.315546f, +0.000498f, +0.000137f} + }, + { + {-0.214030f, +0.010451f, +0.001827f}, + {-0.638609f, +0.024424f, +0.004195f}, + {-0.000480f, +0.033426f, -0.002795f}, + {-0.011678f, +0.017775f, -0.002438f}, + {-0.092630f, +0.011217f, -0.001499f}, + {-0.179494f, +0.027872f, -0.004886f}, + {+0.049375f, -0.006195f, +0.000322f}, + {-0.050886f, +0.014806f, +0.001580f}, + {+0.284102f, -0.013452f, -0.000223f} + }, + { + {-0.142407f, -0.012908f, -0.000129f}, + {-0.521031f, -0.021513f, +0.002424f}, + {+0.212730f, -0.053828f, -0.007313f}, + {+0.050092f, -0.009707f, -0.001567f}, + {-0.022713f, -0.014891f, -0.001899f}, + {-0.013352f, -0.051652f, -0.004824f}, + {+0.034982f, -0.000584f, +0.002038f}, + {-0.037735f, -0.000643f, +0.005700f}, + {+0.234664f, +0.015884f, -0.002619f} + }, + { + {-0.078162f, +0.013149f, +0.000240f}, + {-0.425304f, +0.016123f, +0.001883f}, + {+0.408229f, +0.052323f, -0.001957f}, + {+0.116415f, +0.013525f, -0.004497f}, + {+0.067314f, +0.020251f, -0.003762f}, + {+0.167553f, +0.051767f, +0.000869f}, + {+0.068137f, +0.009479f, +0.001235f}, + {-0.034203f, -0.008399f, +0.003763f}, + {+0.180796f, -0.011205f, -0.003598f} + }, + { + {-0.016750f, -0.012127f, +0.000498f}, + {-0.353965f, -0.008335f, +0.000653f}, + {+0.518342f, -0.011173f, +0.002964f}, + {+0.177026f, -0.019969f, -0.002705f}, + {+0.164814f, -0.026646f, -0.003238f}, + {+0.286213f, -0.012718f, +0.003816f}, + {+0.155640f, -0.020546f, -0.001850f}, + {-0.016416f, +0.003918f, -0.001774f}, + {+0.133919f, +0.003314f, -0.001822f} + }, + { + {+0.046182f, +0.012351f, -0.000034f}, + {-0.298885f, +0.009039f, -0.000810f}, + {+0.511610f, -0.032188f, -0.002291f}, + {+0.211380f, +0.005455f, +0.000933f}, + {+0.241218f, +0.015123f, -0.001103f}, + {+0.293508f, -0.029470f, -0.003051f}, + {+0.280548f, +0.030234f, -0.004368f}, + {+0.041260f, +0.018979f, -0.004541f}, + {+0.098998f, +0.002094f, +0.002904f} + }, + { + {+0.111605f, -0.013530f, -0.000652f}, + {-0.246690f, -0.016108f, +0.001020f}, + {+0.413977f, +0.038179f, -0.009520f}, + {+0.203190f, +0.017508f, -0.002191f}, + {+0.268601f, +0.003682f, -0.001755f}, + {+0.196136f, +0.036857f, -0.009761f}, + {+0.402137f, -0.026686f, -0.005055f}, + {+0.145035f, -0.035432f, -0.001365f}, + {+0.074946f, +0.007868f, +0.004954f} + }, + { + {+0.176108f, +0.013431f, -0.000958f}, + {-0.185298f, +0.016846f, +0.004677f}, + {+0.286889f, -0.019450f, -0.007487f}, + {+0.153787f, -0.015814f, -0.006505f}, + {+0.239195f, -0.011851f, -0.001930f}, + {+0.042102f, -0.023553f, -0.004947f}, + {+0.470133f, +0.012898f, -0.003624f}, + {+0.270107f, +0.025928f, -0.000154f}, + {+0.059116f, -0.020434f, -0.003101f} + }, + { + {+0.234033f, -0.013522f, -0.000160f}, + {-0.105917f, -0.008837f, +0.002769f}, + {+0.184987f, +0.008247f, -0.000624f}, + {+0.076510f, +0.005900f, -0.001804f}, + {+0.166708f, +0.022644f, -0.001485f}, + {-0.112604f, +0.020438f, +0.005184f}, + {+0.450824f, +0.006092f, +0.002002f}, + {+0.374333f, -0.013645f, -0.004183f}, + {+0.050668f, -0.002470f, -0.009849f} + }, + { + {+0.280701f, +0.008633f, +0.001045f}, + {-0.002220f, +0.016553f, -0.003998f}, + {+0.131643f, -0.003842f, +0.001872f}, + {-0.015690f, -0.016479f, +0.005047f}, + {+0.077685f, -0.023492f, -0.003551f}, + {-0.223388f, -0.024340f, +0.007042f}, + {+0.346787f, -0.042038f, +0.003586f}, + {+0.418985f, +0.005219f, -0.005591f}, + {+0.040023f, +0.024273f, +0.000362f} + }, + { + {+0.315972f, -0.002222f, +0.000114f}, + {+0.123110f, -0.036764f, -0.004764f}, + {+0.119199f, -0.002064f, +0.000988f}, + {-0.106689f, +0.025325f, +0.004605f}, + {-0.000310f, +0.007517f, -0.002748f}, + {-0.262374f, +0.010338f, +0.000067f}, + {+0.204029f, +0.052292f, -0.005305f}, + {+0.380172f, +0.016758f, -0.003741f}, + {+0.003388f, +0.008217f, +0.011667f} + }, + { + {+0.346296f, +0.003536f, -0.001898f}, + {+0.248976f, +0.036524f, +0.001389f}, + {+0.120849f, +0.002931f, +0.000722f}, + {-0.173186f, -0.016622f, +0.000289f}, + {-0.054827f, -0.000181f, +0.002418f}, + {-0.225358f, +0.023135f, -0.002820f}, + {+0.091375f, -0.014867f, -0.010230f}, + {+0.260139f, -0.034357f, -0.002468f}, + {-0.068405f, -0.042485f, +0.005111f} + }, + { + {+0.379862f, -0.009494f, -0.001961f}, + {+0.345947f, -0.013885f, +0.004347f}, + {+0.108945f, +0.001609f, +0.002277f}, + {-0.194971f, -0.005237f, -0.000216f}, + {-0.090631f, +0.007307f, +0.004497f}, + {-0.139916f, -0.036851f, +0.003429f}, + {+0.049457f, -0.016676f, -0.004125f}, + {+0.089658f, +0.040648f, -0.001276f}, + {-0.147747f, +0.028109f, -0.006357f} + }, + { + {+0.419521f, +0.011992f, -0.000293f}, + {+0.399888f, -0.006995f, -0.000613f}, + {+0.071268f, -0.013451f, +0.003383f}, + {-0.169244f, +0.016170f, +0.002968f}, + {-0.116230f, -0.009802f, +0.001756f}, + {-0.053621f, +0.017175f, +0.008163f}, + {+0.065166f, +0.025359f, +0.005381f}, + {-0.086447f, -0.037823f, -0.001051f}, + {-0.194782f, +0.007204f, -0.005393f} + }, + { + {+0.461674f, -0.009238f, +0.000744f}, + {+0.422873f, +0.002942f, -0.006024f}, + {+0.017965f, +0.019932f, +0.001068f}, + {-0.112940f, -0.014296f, +0.003691f}, + {-0.135675f, +0.004946f, -0.000913f}, + {-0.001359f, +0.007810f, +0.003619f}, + {+0.090834f, -0.000688f, +0.008234f}, + {-0.227027f, +0.020653f, -0.000262f}, + {-0.193552f, -0.020886f, +0.003761f} + }, + { + {+0.500543f, +0.004460f, -0.000339f}, + {+0.438946f, +0.008173f, -0.005382f}, + {-0.025063f, -0.012096f, -0.002727f}, + {-0.048264f, +0.016297f, +0.004137f}, + {-0.148356f, +0.006714f, +0.001928f}, + {+0.016069f, -0.011271f, -0.004203f}, + {+0.085225f, -0.019738f, +0.001763f}, + {-0.310418f, -0.002136f, +0.003576f}, + {-0.158213f, +0.011793f, +0.008536f} + }, + { + {+0.533110f, -0.005084f, -0.001776f}, + {+0.463561f, -0.015347f, -0.000549f}, + {-0.035070f, -0.007804f, -0.002842f}, + {+0.008595f, -0.003050f, +0.002916f}, + {-0.153491f, +0.002287f, +0.004867f}, + {+0.021318f, +0.000337f, -0.007722f}, + {+0.040490f, +0.023364f, -0.005685f}, + {-0.339640f, -0.004014f, +0.007635f}, + {-0.113068f, +0.002471f, +0.003970f} + }, + { + {+0.559507f, +0.006521f, -0.001337f}, + {+0.495821f, +0.006508f, +0.001808f}, + {-0.009393f, +0.020033f, +0.002230f}, + {+0.057093f, +0.005006f, -0.000599f}, + {-0.147824f, -0.005127f, +0.001599f}, + {+0.035200f, +0.017556f, -0.003623f}, + {-0.026148f, -0.010270f, -0.006517f}, + {-0.331865f, -0.002383f, +0.006123f}, + {-0.069791f, +0.006016f, -0.000948f} + }, + { + {+0.580524f, -0.004095f, -0.000494f}, + {+0.527187f, -0.003574f, +0.000131f}, + {+0.034392f, -0.012275f, +0.006324f}, + {+0.108521f, -0.008134f, -0.002780f}, + {-0.124651f, -0.003736f, -0.002434f}, + {+0.058607f, -0.013665f, +0.003392f}, + {-0.096848f, +0.005058f, -0.001324f}, + {-0.301438f, -0.004261f, +0.001796f}, + {-0.026983f, -0.008052f, -0.001333f} + }, + { + {+0.597812f, +0.002656f, -0.000522f}, + {+0.552363f, +0.003313f, -0.001014f}, + {+0.075214f, -0.005271f, +0.002238f}, + {+0.170571f, +0.018162f, -0.002847f}, + {-0.083934f, +0.017743f, -0.001407f}, + {+0.076846f, -0.004888f, +0.003003f}, + {-0.166265f, -0.007573f, +0.004024f}, + {-0.256165f, +0.011081f, +0.000547f}, + {+0.019750f, +0.010957f, -0.001327f} + }, + { + {+0.613921f, -0.002403f, -0.000945f}, + {+0.571681f, -0.004061f, -0.000722f}, + {+0.106010f, -0.000496f, -0.004030f}, + {+0.238299f, -0.018447f, -0.000821f}, + {-0.038282f, -0.014684f, +0.002501f}, + {+0.080622f, +0.007409f, -0.002126f}, + {-0.235224f, +0.017619f, +0.005449f}, + {-0.203255f, -0.012695f, +0.000929f}, + {+0.070865f, -0.011018f, -0.001639f} + }, + { + {+0.630982f, +0.003698f, -0.001234f}, + {+0.590355f, +0.003219f, -0.000406f}, + {+0.130676f, +0.011921f, -0.002723f}, + {+0.295756f, +0.013516f, +0.001143f}, + {-0.005092f, +0.003596f, +0.003545f}, + {+0.072459f, +0.000272f, -0.002800f}, + {-0.299780f, -0.022696f, +0.001211f}, + {-0.150313f, +0.011501f, +0.001280f}, + {+0.118367f, +0.011753f, -0.001359f} + }, + { + {+0.649444f, -0.004884f, -0.000984f}, + {+0.615054f, -0.005408f, -0.000735f}, + {+0.149940f, -0.006453f, +0.001164f}, + {+0.328584f, -0.000395f, +0.001275f}, + {+0.008438f, +0.005199f, +0.001454f}, + {+0.058218f, -0.000064f, +0.000029f}, + {-0.346981f, +0.007071f, -0.001972f}, + {-0.104327f, -0.007957f, +0.001209f}, + {+0.149121f, -0.004220f, -0.000790f} + }, + { + {+0.667442f, +0.004369f, -0.000509f}, + {+0.649912f, +0.008091f, -0.001108f}, + {+0.160941f, -0.003110f, +0.000358f}, + {+0.335024f, -0.007340f, -0.001370f}, + {+0.010516f, -0.004138f, -0.001016f}, + {+0.042559f, -0.003980f, +0.001022f}, + {-0.366888f, +0.007198f, +0.001062f}, + {-0.068558f, +0.004871f, +0.000722f}, + {+0.153026f, -0.002598f, -0.000878f} + }, + { + {+0.682283f, -0.002839f, -0.000182f}, + {+0.693711f, -0.010677f, -0.001270f}, + {+0.163061f, +0.001749f, -0.001941f}, + {+0.327679f, +0.004372f, -0.003551f}, + {+0.017128f, -0.001449f, -0.002254f}, + {+0.029387f, +0.003404f, +0.000254f}, + {-0.363800f, -0.005157f, +0.004344f}, + {-0.041106f, -0.002019f, -0.000551f}, + {+0.130106f, +0.008236f, -0.000670f} + }, + { + {+0.692437f, +0.000095f, -0.000537f}, + {+0.740634f, +0.011604f, -0.000655f}, + {+0.157996f, +0.002060f, -0.000837f}, + {+0.323158f, +0.005481f, -0.001955f}, + {+0.039932f, +0.012585f, -0.000817f}, + {+0.021634f, -0.000010f, +0.000230f}, + {-0.350228f, -0.000420f, +0.003173f}, + {-0.016658f, +0.005630f, -0.001178f}, + {+0.089943f, -0.012079f, -0.001069f} + }, + { + {+0.698662f, +0.000230f, -0.001425f}, + {+0.782838f, -0.007193f, -0.000387f}, + {+0.147754f, +0.002321f, +0.001054f}, + {+0.330876f, -0.007440f, +0.001734f}, + {+0.078436f, -0.014161f, +0.002562f}, + {+0.020690f, -0.001093f, +0.000930f}, + {-0.336354f, +0.000244f, +0.000495f}, + {+0.007725f, -0.004802f, -0.001236f}, + {+0.047620f, +0.008277f, -0.001417f} + }, + { + {+0.703246f, +0.002409f, -0.001250f}, + {+0.814977f, +0.003204f, -0.001382f}, + {+0.135217f, -0.009385f, -0.001169f}, + {+0.350177f, -0.000838f, +0.000877f}, + {+0.122288f, +0.004476f, +0.002216f}, + {+0.025713f, -0.002869f, -0.000621f}, + {-0.325782f, +0.004520f, +0.000748f}, + {+0.030650f, +0.008462f, -0.000266f}, + {+0.015647f, -0.003005f, -0.000601f} + }, + { + {+0.707436f, -0.002159f, -0.000184f}, + {+0.836328f, -0.001420f, -0.002805f}, + {+0.124343f, +0.003534f, -0.004617f}, + {+0.377173f, -0.003128f, -0.002966f}, + {+0.162938f, -0.001908f, -0.001890f}, + {+0.034346f, -0.001148f, -0.003196f}, + {-0.317600f, -0.001145f, +0.002065f}, + {+0.047783f, -0.002726f, +0.001091f}, + {-0.001518f, -0.002014f, +0.001386f} + }, + { + {+0.711316f, +0.000190f, +0.000116f}, + {+0.849400f, +0.005461f, -0.002132f}, + {+0.115220f, +0.006522f, -0.002677f}, + {+0.406205f, +0.009733f, -0.003200f}, + {+0.198229f, +0.008830f, -0.003296f}, + {+0.041723f, +0.007295f, -0.001797f}, + {-0.307751f, -0.000513f, +0.001061f}, + {+0.056384f, -0.001852f, +0.000252f}, + {-0.007409f, -0.002688f, +0.001636f} + }, + { + {+0.715564f, +0.000878f, -0.000712f}, + {+0.856145f, -0.001865f, -0.000304f}, + {+0.099717f, +0.000516f, +0.001510f}, + {+0.427792f, -0.008621f, -0.000103f}, + {+0.227122f, -0.009743f, -0.000742f}, + {+0.038969f, +0.000573f, +0.000890f}, + {-0.290500f, -0.003837f, -0.000282f}, + {+0.060351f, +0.002258f, -0.001388f}, + {-0.007102f, +0.000681f, +0.000051f} + }, + { + {+0.721724f, +0.001440f, -0.001419f}, + {+0.857928f, -0.002494f, -0.000723f}, + {+0.068940f, -0.015230f, +0.000407f}, + {+0.432906f, -0.004606f, +0.000685f}, + {+0.246924f, +0.000678f, +0.000115f}, + {+0.019686f, -0.012823f, -0.000958f}, + {-0.263371f, +0.009394f, +0.000248f}, + {+0.066836f, +0.001658f, -0.002275f}, + {-0.003255f, +0.001689f, -0.000037f} + }, + { + {+0.730712f, -0.003910f, -0.000870f}, + {+0.858450f, +0.001220f, -0.001946f}, + {+0.023475f, +0.016216f, -0.003883f}, + {+0.419872f, +0.011121f, -0.002752f}, + {+0.256682f, +0.002820f, -0.002128f}, + {-0.013513f, +0.011639f, -0.004607f}, + {-0.229180f, -0.009683f, +0.001814f}, + {+0.080511f, -0.005798f, -0.001723f}, + {+0.001435f, +0.000756f, -0.000451f} + }, + { + {+0.741590f, +0.003101f, -0.000011f}, + {+0.860726f, -0.000300f, -0.002853f}, + {-0.028493f, -0.003694f, -0.002869f}, + {+0.395211f, -0.003270f, -0.003914f}, + {+0.257602f, +0.001422f, -0.002810f}, + {-0.053057f, -0.000570f, -0.002860f}, + {-0.193999f, +0.002947f, +0.000888f}, + {+0.099824f, +0.006425f, -0.000616f}, + {+0.005522f, +0.002697f, -0.000570f} + }, + { + {+0.752785f, -0.000581f, -0.000328f}, + {+0.864679f, -0.002652f, -0.003144f}, + {-0.079249f, -0.003995f, +0.005777f}, + {+0.366044f, -0.005911f, +0.001913f}, + {+0.251095f, -0.009072f, +0.002248f}, + {-0.092600f, -0.005125f, +0.005522f}, + {-0.162554f, -0.001717f, -0.002557f}, + {+0.119626f, -0.005564f, +0.000516f}, + {+0.008439f, -0.004393f, +0.001712f} + }, + { + {+0.763163f, -0.000862f, -0.002020f}, + {+0.868650f, +0.005188f, -0.001363f}, + {-0.122932f, -0.003612f, +0.014766f}, + {+0.337176f, +0.004705f, +0.011739f}, + {+0.240301f, +0.007676f, +0.011938f}, + {-0.125784f, -0.004581f, +0.013027f}, + {-0.137073f, +0.006965f, -0.003725f}, + {+0.136715f, +0.001962f, +0.001072f}, + {+0.010881f, +0.001506f, +0.004158f} } }; -const float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]= +const float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.036807f, -0.174045f, +0.179146f, +0.002758f, +0.000002f}, - {-0.081675f, +0.202936f, -0.124120f, -0.000184f, +0.000007f}, - {-0.000843f, -0.038970f, +0.052716f, -0.008143f, +0.000125f}, - {-0.004478f, -0.013122f, +0.028558f, -0.008290f, +0.000045f}, - {-0.006316f, +0.012132f, -0.006515f, +0.002119f, +0.000027f}, - {+0.000794f, -0.004296f, -0.005127f, +0.004942f, -0.000100f}, - {+0.010293f, -0.025048f, +0.008939f, -0.001610f, -0.000015f}, - {-0.001111f, -0.008117f, +0.033872f, -0.002789f, -0.000061f}, - {+0.009292f, -0.031334f, +0.001941f, -0.005137f, +0.000092f} - }, - { - {+0.046648f, -0.328217f, -0.004769f, -0.004729f, +0.000002f}, - {+0.078219f, +0.186706f, -0.335495f, +0.010505f, +0.000011f}, - {+0.003389f, -0.028871f, +0.074809f, -0.001736f, +0.000093f}, - {+0.011160f, -0.006841f, +0.031676f, +0.003121f, +0.000038f}, - {+0.007422f, +0.043414f, -0.006982f, -0.001963f, +0.000025f}, - {+0.003254f, +0.003751f, -0.013792f, +0.005415f, -0.000065f}, - {-0.015187f, -0.099887f, -0.012484f, -0.000245f, -0.000014f}, - {-0.000628f, +0.067594f, +0.116266f, +0.000062f, -0.000037f}, - {-0.017876f, -0.212825f, -0.109502f, -0.000434f, +0.000062f} - }, - { - {-0.062391f, -0.298587f, +0.055506f, +0.004604f, -0.000002f}, - {-0.110139f, -0.008656f, +0.076872f, -0.013912f, -0.000006f}, - {-0.006661f, +0.041459f, +0.008680f, +0.005198f, -0.000143f}, - {-0.017346f, +0.064502f, -0.000311f, +0.000229f, -0.000050f}, - {-0.012574f, +0.112476f, -0.042863f, +0.000548f, -0.000028f}, - {-0.008554f, +0.117685f, -0.085746f, -0.010222f, +0.000121f}, - {+0.018386f, -0.231260f, +0.055470f, +0.002605f, +0.000015f}, - {-0.000043f, +0.098076f, +0.074022f, +0.004739f, +0.000074f}, - {+0.020228f, -0.438516f, +0.026318f, +0.002404f, -0.000109f} - }, - { - {+0.087093f, -0.185047f, -0.039795f, -0.001148f, -0.000002f}, - {+0.179442f, +0.138305f, -0.024941f, +0.004193f, -0.000016f}, - {+0.010153f, +0.053373f, -0.028050f, +0.000631f, -0.000056f}, - {+0.022351f, +0.115243f, -0.015706f, +0.000824f, -0.000030f}, - {+0.016881f, +0.188764f, -0.015179f, +0.001478f, -0.000024f}, - {+0.011436f, +0.169671f, -0.055918f, +0.006134f, +0.000022f}, - {-0.007516f, -0.296099f, +0.030173f, -0.003476f, +0.000013f}, - {+0.001835f, +0.047910f, -0.004611f, -0.005834f, +0.000008f}, - {+0.012183f, -0.522145f, -0.012957f, -0.000556f, -0.000026f} - }, - { - {-0.118429f, +0.036347f, +0.008994f, -0.001813f, +0.000002f}, - {-0.195669f, +0.557237f, +0.044782f, +0.005092f, +0.000007f}, - {-0.015263f, +0.077237f, -0.016810f, -0.004030f, +0.000145f}, - {-0.025184f, +0.187315f, -0.016739f, -0.002009f, +0.000052f}, - {-0.002368f, +0.225780f, -0.012360f, -0.001921f, +0.000030f}, - {-0.004974f, +0.160969f, -0.009969f, -0.002830f, -0.000125f}, - {-0.023306f, -0.243341f, -0.007075f, +0.002049f, -0.000015f}, - {+0.002539f, +0.043064f, -0.021665f, +0.000872f, -0.000074f}, - {-0.088704f, -0.392340f, -0.007003f, +0.000682f, +0.000110f} - }, - { - {+0.111405f, +0.324593f, -0.000106f, +0.001284f, +0.000002f}, - {+0.051589f, +0.868735f, -0.017996f, -0.003263f, +0.000021f}, - {+0.016644f, +0.116184f, -0.001320f, +0.001603f, +0.000021f}, - {+0.004222f, +0.242602f, +0.004139f, +0.000694f, +0.000023f}, - {-0.043767f, +0.191695f, +0.013679f, +0.000447f, +0.000023f}, - {-0.015164f, +0.134423f, +0.000808f, +0.001816f, +0.000022f}, - {+0.056350f, -0.114712f, -0.004403f, +0.000262f, -0.000013f}, - {-0.013985f, +0.017892f, -0.014819f, +0.002850f, +0.000020f}, - {+0.155162f, -0.041775f, -0.009744f, -0.001067f, -0.000007f} - }, - { - {-0.005031f, +0.479299f, +0.003719f, +0.000668f, -0.000001f}, - {+0.200078f, +0.617927f, +0.007665f, -0.002820f, -0.000011f}, - {-0.000023f, +0.128657f, +0.013087f, +0.000664f, -0.000135f}, - {+0.058851f, +0.171528f, +0.001838f, +0.000874f, -0.000052f}, - {+0.096474f, +0.013567f, +0.000492f, +0.000745f, -0.000033f}, - {+0.033027f, +0.054815f, +0.011873f, +0.000718f, +0.000112f}, - {-0.056173f, +0.039930f, +0.001299f, -0.001259f, +0.000015f}, - {+0.020372f, -0.043296f, +0.005705f, -0.001029f, +0.000062f}, - {-0.120615f, +0.346286f, -0.013057f, -0.000997f, -0.000098f} - }, - { - {-0.150793f, +0.255763f, -0.018096f, -0.000700f, -0.000003f}, - {-0.305707f, -0.158732f, -0.020717f, +0.002646f, -0.000023f}, - {-0.031522f, +0.078751f, +0.001465f, -0.000649f, +0.000004f}, - {-0.117107f, -0.077176f, -0.004724f, -0.000677f, -0.000018f}, - {-0.093448f, -0.250387f, -0.003900f, -0.000293f, -0.000021f}, - {-0.019351f, -0.028793f, -0.005286f, -0.001746f, -0.000057f}, - {+0.008202f, +0.128064f, +0.008788f, +0.000321f, +0.000014f}, - {-0.007910f, -0.090056f, -0.001122f, -0.000874f, -0.000041f}, - {-0.028598f, +0.475838f, +0.000814f, +0.001596f, +0.000033f} - }, - { - {+0.168446f, -0.229619f, +0.014684f, -0.000669f, +0.000001f}, - {+0.083028f, -0.735157f, +0.014942f, +0.001813f, +0.000016f}, - {+0.038009f, -0.019540f, -0.002379f, +0.000167f, +0.000118f}, - {+0.076227f, -0.357687f, +0.003886f, -0.000171f, +0.000051f}, - {+0.001844f, -0.389834f, +0.002086f, -0.000484f, +0.000036f}, - {-0.023047f, -0.027798f, -0.004234f, -0.000497f, -0.000086f}, - {+0.049557f, +0.071524f, +0.006302f, +0.000906f, -0.000015f}, - {-0.020459f, -0.071010f, -0.006011f, -0.000277f, -0.000043f}, - {+0.164709f, +0.192774f, +0.015494f, +0.000611f, +0.000078f} - }, - { - {+0.032104f, -0.431950f, +0.008160f, +0.000726f, +0.000004f}, - {+0.260971f, -0.444113f, +0.025794f, -0.002256f, +0.000023f}, - {+0.008385f, -0.056100f, +0.003103f, +0.000095f, -0.000018f}, - {+0.067113f, -0.367438f, +0.006254f, +0.000198f, +0.000013f}, - {+0.110994f, -0.232179f, +0.008226f, +0.000230f, +0.000019f}, - {+0.042146f, +0.074633f, +0.011186f, +0.001034f, +0.000080f}, - {-0.054919f, -0.080526f, -0.007215f, -0.000649f, -0.000015f}, - {+0.040307f, +0.016321f, -0.001764f, +0.000829f, +0.000052f}, - {-0.137526f, -0.246324f, -0.007988f, -0.001200f, -0.000047f} - }, - { - {-0.213011f, -0.046980f, -0.025382f, +0.000494f, -0.000002f}, - {-0.288608f, +0.395114f, -0.041290f, -0.001283f, -0.000020f}, - {-0.054132f, +0.049386f, -0.007328f, -0.000057f, -0.000101f}, - {-0.158872f, -0.025219f, -0.014949f, +0.000114f, -0.000051f}, - {-0.121403f, +0.113923f, -0.010204f, +0.000233f, -0.000039f}, - {-0.000083f, +0.147208f, +0.001729f, +0.000936f, +0.000054f}, - {-0.003048f, -0.154788f, -0.006001f, -0.000457f, +0.000017f}, - {-0.025771f, +0.106681f, +0.002198f, +0.000260f, +0.000022f}, - {-0.031294f, -0.392095f, -0.012018f, -0.000574f, -0.000057f} - }, - { - {+0.092561f, +0.424974f, +0.010810f, -0.000681f, -0.000004f}, - {-0.075902f, +0.706014f, -0.007828f, +0.002003f, -0.000022f}, - {+0.013154f, +0.161409f, +0.005603f, -0.000211f, +0.000023f}, - {+0.066254f, +0.312283f, +0.004744f, +0.000026f, -0.000009f}, - {+0.002036f, +0.295824f, -0.002824f, +0.000014f, -0.000016f}, - {-0.060712f, +0.057606f, -0.008012f, -0.000958f, -0.000087f}, - {+0.056082f, -0.061636f, +0.008052f, +0.000524f, +0.000016f}, - {-0.017683f, +0.111805f, -0.002642f, -0.000403f, -0.000052f}, - {+0.146777f, -0.113700f, +0.017959f, +0.001010f, +0.000051f} - }, - { - {+0.185320f, +0.277358f, +0.022712f, -0.000351f, +0.000003f}, - {+0.344646f, +0.053912f, +0.053141f, +0.000939f, +0.000024f}, - {+0.086838f, +0.051841f, +0.006637f, +0.000180f, +0.000089f}, - {+0.105953f, +0.243944f, +0.014187f, -0.000146f, +0.000052f}, - {+0.111669f, +0.123210f, +0.013173f, -0.000233f, +0.000042f}, - {+0.059758f, -0.131270f, +0.005702f, -0.000643f, -0.000024f}, - {-0.036902f, +0.080134f, -0.000673f, +0.000325f, -0.000020f}, - {+0.046052f, +0.010828f, +0.004846f, -0.000246f, -0.000004f}, - {-0.077354f, +0.231910f, -0.006126f, +0.000362f, +0.000039f} - }, - { - {-0.189874f, -0.302002f, -0.024437f, +0.000614f, +0.000004f}, - {-0.115695f, -0.648554f, -0.017187f, -0.001787f, +0.000020f}, - {-0.095557f, -0.230274f, -0.014609f, +0.000114f, -0.000025f}, - {-0.124579f, -0.115101f, -0.017138f, -0.000088f, +0.000005f}, - {-0.076830f, -0.166427f, -0.008366f, -0.000057f, +0.000012f}, - {+0.014099f, -0.211406f, -0.003003f, +0.000568f, +0.000083f}, - {-0.023815f, +0.096932f, -0.005676f, -0.000440f, -0.000016f}, - {-0.021782f, -0.093860f, -0.002871f, +0.000144f, +0.000046f}, - {-0.073734f, +0.238033f, -0.010094f, -0.000798f, -0.000049f} - }, - { - {-0.114426f, -0.412169f, -0.014852f, +0.000236f, -0.000004f}, - {-0.286060f, -0.383093f, -0.046192f, -0.000709f, -0.000026f}, - {-0.046449f, -0.312275f, +0.001217f, -0.000173f, -0.000081f}, - {-0.033813f, -0.256375f, -0.003843f, +0.000097f, -0.000052f}, - {-0.058368f, -0.191934f, -0.007694f, +0.000156f, -0.000044f}, - {-0.082552f, -0.075789f, -0.001514f, +0.000419f, +0.000001f}, - {+0.034473f, +0.003962f, +0.003250f, -0.000222f, +0.000024f}, - {-0.030695f, -0.079541f, -0.002956f, +0.000205f, -0.000008f}, - {+0.109333f, -0.044153f, +0.010252f, -0.000221f, -0.000027f} - }, - { - {+0.243812f, +0.144409f, +0.034010f, -0.000542f, -0.000004f}, - {+0.244934f, +0.430481f, +0.034506f, +0.001609f, -0.000017f}, - {+0.170812f, +0.012823f, +0.017960f, -0.000055f, +0.000026f}, - {+0.131633f, -0.001407f, +0.017629f, +0.000130f, -0.000001f}, - {+0.106876f, +0.065820f, +0.014688f, +0.000058f, -0.000007f}, - {+0.074279f, +0.153828f, +0.004932f, -0.000344f, -0.000072f}, - {+0.015569f, -0.022714f, +0.005207f, +0.000342f, +0.000015f}, - {+0.042274f, +0.032502f, +0.005140f, -0.000141f, -0.000036f}, - {-0.002837f, -0.214678f, +0.001786f, +0.000703f, +0.000045f} - }, - { - {+0.033445f, +0.465385f, +0.003356f, -0.000154f, +0.000005f}, - {+0.178742f, +0.528051f, +0.033152f, +0.000550f, +0.000028f}, - {-0.087971f, +0.405281f, -0.012908f, +0.000193f, +0.000076f}, - {-0.026721f, +0.243121f, -0.004203f, -0.000014f, +0.000052f}, - {-0.002076f, +0.236562f, -0.002162f, -0.000025f, +0.000045f}, - {-0.002032f, +0.267039f, -0.003164f, -0.000247f, +0.000013f}, - {-0.028517f, +0.053584f, -0.006240f, +0.000168f, -0.000027f}, - {+0.008947f, +0.081105f, +0.001162f, -0.000039f, +0.000013f}, - {-0.084445f, -0.084241f, -0.009779f, +0.000091f, +0.000019f} - }, - { - {-0.265151f, +0.001033f, -0.038066f, +0.000492f, +0.000004f}, - {-0.302075f, -0.213979f, -0.045228f, -0.001475f, +0.000016f}, - {-0.119858f, +0.361574f, -0.010750f, +0.000044f, -0.000027f}, - {-0.110652f, +0.115838f, -0.014030f, -0.000216f, -0.000003f}, - {-0.106693f, +0.078792f, -0.012412f, -0.000130f, +0.000002f}, - {-0.068216f, +0.174315f, -0.001858f, +0.000344f, +0.000061f}, - {-0.039397f, +0.042700f, -0.003620f, -0.000322f, -0.000013f}, - {-0.052577f, -0.019393f, -0.009859f, +0.000138f, +0.000029f}, - {+0.042907f, +0.113552f, +0.005000f, -0.000638f, -0.000041f} - }, - { - {+0.045692f, -0.476580f, +0.008546f, +0.000086f, -0.000005f}, - {-0.080587f, -0.555433f, -0.017854f, -0.000450f, -0.000030f}, - {+0.182440f, -0.087182f, +0.017382f, -0.000294f, -0.000073f}, - {+0.075234f, -0.167476f, +0.008676f, +0.000034f, -0.000051f}, - {+0.071029f, -0.192007f, +0.008454f, +0.000011f, -0.000045f}, - {+0.086510f, -0.044174f, +0.003825f, +0.000041f, -0.000021f}, - {+0.075632f, -0.138240f, +0.011735f, -0.000028f, +0.000030f}, - {+0.013949f, -0.129305f, +0.005892f, -0.000040f, -0.000013f}, - {+0.045386f, +0.105892f, +0.005725f, +0.000024f, -0.000013f} - }, - { - {+0.264038f, -0.137768f, +0.037820f, -0.000452f, -0.000003f}, - {+0.327432f, +0.075214f, +0.050477f, +0.001428f, -0.000014f}, - {-0.022770f, -0.385123f, +0.004729f, +0.000100f, +0.000029f}, - {+0.054670f, -0.198426f, +0.007785f, +0.000271f, +0.000006f}, - {+0.049580f, -0.225410f, +0.005863f, +0.000204f, +0.000001f}, - {-0.043237f, -0.226727f, +0.000581f, -0.000235f, -0.000054f}, - {+0.021121f, -0.232475f, -0.003318f, +0.000194f, +0.000010f}, - {+0.068959f, -0.050792f, +0.006419f, -0.000075f, -0.000026f}, - {-0.050269f, -0.045913f, -0.008553f, +0.000508f, +0.000038f} - }, - { - {-0.122605f, +0.455832f, -0.019204f, -0.000024f, +0.000005f}, - {-0.006912f, +0.595107f, +0.002722f, +0.000314f, +0.000031f}, - {-0.131648f, -0.207572f, -0.020072f, +0.000119f, +0.000071f}, - {-0.075587f, -0.001389f, -0.007880f, -0.000200f, +0.000051f}, - {-0.092628f, -0.010795f, -0.009442f, -0.000210f, +0.000045f}, - {-0.034470f, -0.235595f, -0.004153f, -0.000184f, +0.000026f}, - {-0.138101f, +0.003560f, -0.013139f, +0.000044f, -0.000033f}, - {-0.076887f, +0.172735f, -0.011353f, -0.000186f, +0.000014f}, - {-0.018601f, -0.096133f, -0.000488f, -0.000002f, +0.000009f} - }, - { - {-0.239360f, +0.273817f, -0.034391f, +0.000359f, +0.000003f}, - {-0.344438f, +0.077598f, -0.050391f, -0.001368f, +0.000013f}, - {+0.085915f, +0.127791f, +0.009171f, +0.000053f, -0.000030f}, - {-0.003884f, +0.104668f, -0.002926f, -0.000117f, -0.000009f}, - {+0.025938f, +0.166624f, +0.001223f, +0.000030f, -0.000004f}, - {+0.087357f, -0.053855f, +0.006567f, +0.000375f, +0.000050f}, - {+0.079989f, +0.335328f, +0.010537f, -0.000213f, -0.000007f}, - {-0.027119f, +0.254717f, +0.001273f, +0.000328f, +0.000025f}, - {+0.049245f, +0.007836f, +0.007008f, -0.000515f, -0.000036f} - }, - { - {+0.189098f, -0.383414f, +0.028124f, +0.000092f, -0.000006f}, - {+0.108559f, -0.623832f, +0.013156f, -0.000170f, -0.000033f}, - {+0.052357f, +0.172914f, +0.014590f, -0.000154f, -0.000071f}, - {+0.027066f, +0.057228f, +0.004014f, +0.000183f, -0.000051f}, - {+0.042915f, +0.138441f, +0.007131f, +0.000079f, -0.000046f}, - {-0.062416f, +0.169373f, -0.002459f, +0.000150f, -0.000033f}, - {+0.109725f, +0.292825f, +0.008449f, +0.000038f, +0.000034f}, - {+0.124357f, +0.027929f, +0.015491f, +0.000061f, -0.000016f}, - {-0.001095f, +0.082699f, -0.001391f, +0.000112f, -0.000006f} - }, - { - {+0.194740f, -0.370983f, +0.028830f, -0.000424f, -0.000003f}, - {+0.334444f, -0.280705f, +0.047056f, +0.001250f, -0.000011f}, - {-0.070560f, -0.024714f, -0.010185f, -0.000110f, +0.000033f}, - {+0.007889f, +0.031645f, +0.004166f, +0.000046f, +0.000012f}, - {-0.044996f, +0.004394f, -0.003024f, -0.000024f, +0.000007f}, - {-0.022525f, +0.227369f, -0.001642f, -0.000313f, -0.000046f}, - {-0.165185f, -0.117904f, -0.015701f, +0.000142f, +0.000004f}, - {-0.080987f, -0.285489f, -0.008434f, -0.000232f, -0.000025f}, - {-0.049085f, +0.003557f, -0.010651f, +0.000401f, +0.000034f} - }, - { - {-0.234674f, +0.289561f, -0.036001f, +0.000013f, +0.000007f}, - {-0.223672f, +0.578241f, -0.027233f, +0.000092f, +0.000035f}, - {-0.024623f, -0.100323f, -0.004564f, +0.000328f, +0.000072f}, - {+0.017801f, +0.020633f, -0.002076f, -0.000042f, +0.000053f}, - {+0.013115f, -0.081785f, -0.000959f, +0.000079f, +0.000049f}, - {+0.080738f, +0.072886f, +0.004201f, -0.000076f, +0.000042f}, - {-0.002607f, -0.352196f, -0.003911f, -0.000017f, -0.000036f}, - {-0.069172f, -0.307620f, -0.004866f, -0.000006f, +0.000021f}, - {+0.028180f, -0.122432f, +0.007621f, -0.000085f, +0.000003f} - }, - { - {-0.147199f, +0.422160f, -0.022071f, +0.000321f, +0.000003f}, - {-0.267023f, +0.513414f, -0.037707f, -0.001150f, +0.000010f}, - {+0.060495f, +0.031583f, +0.008763f, -0.000093f, -0.000037f}, - {-0.065578f, -0.105960f, -0.010002f, -0.000209f, -0.000017f}, - {+0.014195f, -0.075807f, +0.002631f, -0.000201f, -0.000012f}, - {-0.053647f, -0.122427f, -0.002638f, +0.000093f, +0.000039f}, - {+0.142781f, -0.115711f, +0.024592f, -0.000188f, -0.000001f}, - {+0.149590f, +0.020216f, +0.015264f, -0.000015f, +0.000023f}, - {+0.037239f, -0.118872f, +0.000382f, -0.000458f, -0.000033f} - }, - { - {+0.269441f, -0.218896f, +0.041241f, +0.000004f, -0.000008f}, - {+0.303693f, -0.362352f, +0.037014f, -0.000053f, -0.000037f}, - {+0.007833f, +0.119694f, -0.000960f, -0.000345f, -0.000073f}, - {-0.004355f, -0.200633f, +0.001490f, +0.000103f, -0.000055f}, - {-0.032562f, +0.000305f, -0.004514f, +0.000019f, -0.000051f}, - {-0.017941f, -0.163230f, -0.007036f, +0.000034f, -0.000051f}, - {-0.046904f, +0.177005f, -0.004300f, +0.000147f, +0.000038f}, - {-0.058069f, +0.331227f, -0.002327f, +0.000118f, -0.000026f}, - {-0.065673f, +0.027120f, -0.006378f, +0.000220f, -0.000001f} - }, - { - {+0.096520f, -0.484461f, +0.013741f, -0.000314f, -0.000002f}, - {+0.168182f, -0.564851f, +0.028399f, +0.001136f, -0.000010f}, - {-0.055680f, +0.028246f, -0.005855f, +0.000184f, +0.000045f}, - {+0.118738f, -0.014371f, +0.012220f, +0.000155f, +0.000023f}, - {+0.022063f, +0.085271f, +0.002211f, +0.000137f, +0.000019f}, - {+0.049978f, -0.052230f, +0.005756f, +0.000013f, -0.000028f}, - {-0.111748f, +0.067754f, -0.020811f, +0.000056f, -0.000003f}, - {-0.098929f, +0.266647f, -0.009254f, +0.000013f, -0.000019f}, - {+0.022954f, +0.155435f, -0.001383f, +0.000344f, +0.000033f} - }, - { - {-0.298102f, +0.119927f, -0.044074f, +0.000054f, +0.000009f}, - {-0.324241f, +0.201048f, -0.044886f, -0.000061f, +0.000040f}, - {+0.018875f, -0.083814f, -0.000418f, +0.000398f, +0.000073f}, - {-0.061162f, +0.256472f, -0.008387f, +0.000024f, +0.000055f}, - {+0.028563f, +0.073381f, +0.002819f, +0.000106f, +0.000051f}, - {-0.019828f, +0.052279f, -0.002320f, +0.000130f, +0.000057f}, - {+0.058477f, -0.203321f, +0.012650f, -0.000104f, -0.000040f}, - {+0.133242f, -0.084836f, +0.013242f, -0.000015f, +0.000030f}, - {+0.042678f, +0.121577f, +0.007398f, -0.000185f, -0.000002f} - }, - { - {-0.034897f, +0.521904f, -0.005636f, +0.000275f, +0.000001f}, - {-0.096022f, +0.555951f, -0.014099f, -0.001080f, +0.000009f}, - {+0.022232f, -0.076542f, +0.003659f, -0.000139f, -0.000053f}, - {-0.117964f, +0.166708f, -0.014124f, -0.000190f, -0.000030f}, - {-0.054876f, -0.054232f, -0.005942f, -0.000155f, -0.000026f}, - {-0.020865f, +0.046834f, -0.005114f, -0.000034f, +0.000016f}, - {+0.119090f, -0.116285f, +0.014688f, -0.000066f, +0.000006f}, - {-0.009162f, -0.296851f, +0.001585f, -0.000015f, +0.000013f}, - {-0.057034f, -0.032243f, -0.004358f, -0.000329f, -0.000032f} - }, - { - {+0.309227f, -0.006599f, +0.046261f, -0.000088f, -0.000010f}, - {+0.335689f, -0.108899f, +0.045170f, +0.000116f, -0.000044f}, - {-0.010768f, -0.025357f, +0.000938f, -0.000529f, -0.000070f}, - {+0.120101f, -0.199389f, +0.018645f, -0.000027f, -0.000054f}, - {-0.005167f, -0.128785f, +0.000940f, -0.000138f, -0.000050f}, - {+0.023264f, -0.025419f, +0.006527f, -0.000284f, -0.000058f}, - {-0.107846f, +0.228561f, -0.015701f, +0.000136f, +0.000041f}, - {-0.112356f, -0.131761f, -0.015190f, -0.000104f, -0.000031f}, - {+0.003668f, -0.126548f, +0.000034f, +0.000218f, +0.000005f} - }, - { - {-0.027502f, -0.522603f, -0.003411f, -0.000264f, -0.000000f}, - {+0.030738f, -0.578245f, +0.004213f, +0.001069f, -0.000007f}, - {-0.000609f, -0.013454f, -0.002363f, +0.000076f, +0.000061f}, - {+0.087398f, -0.248212f, +0.011938f, +0.000075f, +0.000037f}, - {+0.076224f, -0.003106f, +0.010057f, +0.000063f, +0.000032f}, - {+0.005937f, -0.057510f, +0.000360f, -0.000077f, -0.000005f}, - {-0.095342f, +0.246056f, -0.013136f, +0.000057f, -0.000011f}, - {+0.080706f, +0.167833f, +0.010054f, +0.000007f, -0.000008f}, - {+0.052615f, -0.051218f, +0.005205f, +0.000238f, +0.000032f} - }, - { - {-0.304352f, -0.097670f, -0.045722f, +0.000119f, +0.000010f}, - {-0.340086f, -0.006265f, -0.046602f, -0.000169f, +0.000048f}, - {-0.020424f, +0.011099f, -0.001667f, +0.000571f, +0.000066f}, - {-0.162423f, +0.138866f, -0.025027f, +0.000093f, +0.000052f}, - {-0.033809f, +0.166438f, -0.006399f, +0.000195f, +0.000048f}, - {-0.027146f, -0.011761f, -0.003177f, +0.000395f, +0.000056f}, - {+0.155957f, -0.140724f, +0.023139f, -0.000149f, -0.000042f}, - {+0.050658f, +0.213522f, +0.006115f, +0.000088f, +0.000030f}, - {-0.039762f, +0.093271f, -0.004720f, -0.000234f, -0.000009f} - }, - { - {+0.084174f, +0.498153f, +0.011738f, +0.000258f, -0.000001f}, - {+0.034060f, +0.568731f, +0.004971f, -0.001035f, +0.000004f}, - {+0.017008f, +0.063888f, +0.000389f, +0.000004f, -0.000066f}, - {-0.040634f, +0.328420f, -0.004057f, -0.000038f, -0.000042f}, - {-0.073934f, +0.106271f, -0.009079f, -0.000021f, -0.000038f}, - {+0.016227f, +0.051899f, -0.000373f, +0.000148f, -0.000001f}, - {+0.040260f, -0.318605f, +0.006025f, -0.000077f, +0.000015f}, - {-0.100959f, -0.021877f, -0.014425f, +0.000114f, +0.000006f}, - {-0.027106f, +0.113757f, -0.001462f, -0.000158f, -0.000030f} - }, - { - {+0.289347f, +0.183367f, +0.043677f, -0.000132f, -0.000010f}, - {+0.332610f, +0.106477f, +0.046382f, +0.000181f, -0.000052f}, - {+0.030172f, +0.040872f, +0.005239f, -0.000542f, -0.000065f}, - {+0.188712f, -0.022024f, +0.026128f, -0.000084f, -0.000051f}, - {+0.071871f, -0.114351f, +0.009162f, -0.000197f, -0.000047f}, - {+0.013433f, +0.054663f, +0.003535f, -0.000343f, -0.000057f}, - {-0.178475f, +0.017894f, -0.025738f, +0.000205f, +0.000044f}, - {+0.010117f, -0.193309f, +0.001195f, -0.000079f, -0.000031f}, - {+0.059297f, -0.019649f, +0.006335f, +0.000285f, +0.000013f} - }, - { - {-0.134846f, -0.467842f, -0.019524f, -0.000244f, +0.000001f}, - {-0.092222f, -0.547291f, -0.014252f, +0.000986f, -0.000001f}, - {-0.040107f, -0.068680f, -0.004663f, +0.000023f, +0.000071f}, - {-0.024493f, -0.346874f, -0.002774f, +0.000070f, +0.000048f}, - {+0.047272f, -0.147189f, +0.008626f, +0.000053f, +0.000044f}, - {-0.026008f, -0.007599f, -0.001975f, -0.000132f, +0.000005f}, - {+0.030534f, +0.339732f, +0.003406f, +0.000035f, -0.000020f}, - {+0.083347f, -0.077557f, +0.013266f, -0.000128f, -0.000007f}, - {-0.013672f, -0.131388f, -0.003403f, +0.000118f, +0.000027f} - }, - { - {-0.267902f, -0.264872f, -0.040046f, +0.000129f, +0.000011f}, - {-0.321912f, -0.191063f, -0.044992f, -0.000193f, +0.000056f}, - {-0.022572f, -0.096725f, -0.002705f, +0.000503f, +0.000069f}, - {-0.176343f, -0.111752f, -0.025706f, +0.000048f, +0.000053f}, - {-0.084811f, +0.059741f, -0.013684f, +0.000183f, +0.000048f}, - {+0.004452f, -0.055305f, -0.000514f, +0.000261f, +0.000064f}, - {+0.161895f, +0.139155f, +0.022695f, -0.000241f, -0.000046f}, - {-0.046966f, +0.125238f, -0.006695f, +0.000013f, +0.000036f}, - {-0.046666f, -0.080465f, -0.004500f, -0.000378f, -0.000014f} - }, - { - {+0.182763f, +0.425959f, +0.026111f, +0.000216f, -0.000001f}, - {+0.151967f, +0.538951f, +0.023953f, -0.000917f, -0.000002f}, - {+0.059967f, +0.029780f, +0.006750f, -0.000233f, -0.000082f}, - {+0.071926f, +0.268254f, +0.009365f, -0.000173f, -0.000058f}, - {-0.030147f, +0.144364f, -0.004637f, -0.000155f, -0.000054f}, - {+0.022610f, -0.026139f, +0.001896f, -0.000081f, -0.000015f}, - {-0.089140f, -0.244883f, -0.010242f, +0.000037f, +0.000027f}, - {-0.053982f, +0.112441f, -0.009466f, +0.000027f, +0.000006f}, - {+0.043125f, +0.054784f, +0.006054f, -0.000118f, -0.000026f} - }, - { - {+0.236555f, +0.344253f, +0.035451f, -0.000140f, -0.000014f}, - {+0.305017f, +0.302445f, +0.041503f, +0.000225f, -0.000061f}, - {+0.000099f, +0.121249f, +0.000347f, -0.000531f, -0.000075f}, - {+0.147839f, +0.147624f, +0.023593f, -0.000074f, -0.000055f}, - {+0.099074f, -0.056676f, +0.015836f, -0.000238f, -0.000049f}, - {-0.015365f, +0.033058f, -0.001023f, -0.000263f, -0.000075f}, - {-0.115117f, -0.202631f, -0.018500f, +0.000266f, +0.000048f}, - {+0.062522f, -0.070317f, +0.009998f, +0.000023f, -0.000045f}, - {+0.009357f, +0.103095f, +0.001665f, +0.000461f, +0.000014f} - }, - { - {-0.223414f, -0.360443f, -0.031653f, -0.000161f, +0.000003f}, - {-0.220330f, -0.504684f, -0.033230f, +0.000874f, +0.000003f}, - {-0.065668f, +0.018345f, -0.008069f, +0.000490f, +0.000105f}, - {-0.094224f, -0.228227f, -0.015610f, +0.000296f, +0.000075f}, - {+0.011044f, -0.195618f, -0.000221f, +0.000284f, +0.000070f}, - {-0.015206f, +0.030774f, -0.001584f, +0.000377f, +0.000037f}, - {+0.112319f, +0.149909f, +0.015570f, -0.000082f, -0.000037f}, - {+0.027593f, -0.125221f, +0.004605f, +0.000167f, +0.000001f}, - {-0.035657f, +0.033761f, -0.006506f, +0.000132f, +0.000027f} - }, - { - {-0.197435f, -0.400152f, -0.030189f, +0.000183f, +0.000017f}, - {-0.265346f, -0.433349f, -0.035911f, -0.000309f, +0.000070f}, - {+0.024825f, -0.121781f, +0.003662f, +0.000791f, +0.000075f}, - {-0.131639f, -0.172895f, -0.018896f, +0.000200f, +0.000051f}, - {-0.118431f, +0.000422f, -0.015867f, +0.000387f, +0.000045f}, - {+0.018068f, -0.023258f, +0.002724f, +0.000522f, +0.000082f}, - {+0.072974f, +0.212278f, +0.011511f, -0.000340f, -0.000047f}, - {-0.068530f, +0.023641f, -0.010358f, +0.000042f, +0.000055f}, - {+0.013236f, -0.038962f, +0.000910f, -0.000477f, -0.000015f} - }, - { - {+0.253363f, +0.291660f, +0.036499f, +0.000094f, -0.000007f}, - {+0.281798f, +0.406628f, +0.041589f, -0.000891f, -0.000005f}, - {+0.059479f, -0.066959f, +0.007177f, -0.000628f, -0.000142f}, - {+0.120109f, +0.213729f, +0.018705f, -0.000288f, -0.000099f}, - {+0.027666f, +0.223189f, +0.003521f, -0.000300f, -0.000093f}, - {+0.013844f, -0.028875f, +0.000557f, -0.000575f, -0.000072f}, - {-0.118976f, -0.083818f, -0.016708f, +0.000094f, +0.000049f}, - {-0.002209f, +0.126405f, -0.000845f, -0.000338f, -0.000017f}, - {+0.011760f, -0.039638f, +0.005259f, -0.000091f, -0.000032f} - }, - { - {+0.156753f, +0.440657f, +0.023910f, -0.000253f, -0.000018f}, - {+0.203795f, +0.522732f, +0.028158f, +0.000411f, -0.000085f}, - {-0.046218f, +0.097129f, -0.007205f, -0.001249f, -0.000056f}, - {+0.112467f, +0.226687f, +0.015571f, -0.000451f, -0.000035f}, - {+0.117838f, +0.083303f, +0.016703f, -0.000616f, -0.000028f}, - {-0.023412f, +0.030837f, -0.004021f, -0.001018f, -0.000071f}, - {-0.037437f, -0.211830f, -0.005723f, +0.000467f, +0.000043f}, - {+0.064323f, +0.023579f, +0.009934f, -0.000232f, -0.000060f}, - {-0.009156f, -0.006104f, -0.001969f, +0.000387f, +0.000022f} - }, - { - {-0.275944f, -0.222761f, -0.039627f, -0.000066f, +0.000013f}, - {-0.322019f, -0.286370f, -0.048482f, +0.000959f, +0.000014f}, - {-0.046923f, +0.094317f, -0.005599f, +0.000435f, +0.000182f}, - {-0.150750f, -0.177020f, -0.022662f, +0.000117f, +0.000123f}, - {-0.067347f, -0.202691f, -0.009894f, +0.000124f, +0.000115f}, - {-0.015081f, +0.042971f, -0.000082f, +0.000445f, +0.000114f}, - {+0.117640f, +0.025700f, +0.015946f, -0.000085f, -0.000063f}, - {-0.016418f, -0.100980f, -0.001676f, +0.000298f, +0.000040f}, - {-0.000250f, +0.010429f, -0.002435f, -0.000017f, +0.000037f} - }, - { - {-0.115447f, -0.469158f, -0.017950f, +0.000366f, +0.000017f}, - {-0.134884f, -0.571706f, -0.018454f, -0.000373f, +0.000105f}, - {+0.067420f, -0.084270f, +0.010575f, +0.001650f, +0.000010f}, - {-0.076003f, -0.293259f, -0.009993f, +0.000579f, +0.000003f}, - {-0.098520f, -0.155744f, -0.013412f, +0.000754f, -0.000004f}, - {+0.039536f, -0.043110f, +0.005899f, +0.001509f, +0.000034f}, - {+0.003041f, +0.203039f, +0.001212f, -0.000536f, -0.000033f}, - {-0.056528f, -0.038194f, -0.009590f, +0.000577f, +0.000054f}, - {-0.001245f, +0.013315f, +0.000319f, -0.000346f, -0.000036f} - }, - { - {+0.292999f, +0.157930f, +0.042403f, +0.000087f, -0.000020f}, - {+0.342354f, +0.162255f, +0.051635f, -0.001110f, -0.000034f}, - {+0.022156f, -0.154740f, +0.000608f, +0.000173f, -0.000208f}, - {+0.168151f, +0.078549f, +0.023857f, +0.000280f, -0.000137f}, - {+0.096594f, +0.143573f, +0.013193f, +0.000234f, -0.000126f}, - {+0.002506f, -0.100103f, -0.002757f, +0.000120f, -0.000144f}, - {-0.102496f, +0.041774f, -0.013753f, -0.000024f, +0.000074f}, - {+0.028733f, +0.095250f, +0.004398f, -0.000056f, -0.000064f}, - {-0.000053f, +0.012400f, +0.002539f, +0.000289f, -0.000038f} - }, - { - {+0.073802f, +0.495430f, +0.011185f, -0.000471f, -0.000013f}, - {+0.067107f, +0.583553f, +0.008494f, +0.000150f, -0.000126f}, - {-0.082122f, +0.004027f, -0.011237f, -0.001551f, +0.000060f}, - {+0.028928f, +0.288941f, +0.005398f, -0.000320f, +0.000043f}, - {+0.067365f, +0.187138f, +0.009613f, -0.000522f, +0.000049f}, - {-0.053548f, -0.014546f, -0.006738f, -0.001557f, +0.000028f}, - {+0.021691f, -0.148588f, +0.001549f, +0.000530f, +0.000018f}, - {+0.052283f, +0.060853f, +0.007887f, -0.000799f, -0.000034f}, - {+0.008489f, -0.003383f, +0.001566f, +0.000494f, +0.000057f} - }, - { - {-0.307330f, -0.088798f, -0.043952f, -0.000185f, +0.000025f}, - {-0.348741f, -0.055377f, -0.052852f, +0.001109f, +0.000070f}, - {+0.020133f, +0.157206f, +0.002804f, -0.000807f, +0.000201f}, - {-0.157718f, +0.000354f, -0.025108f, -0.000577f, +0.000129f}, - {-0.107002f, -0.082667f, -0.016074f, -0.000429f, +0.000116f}, - {+0.027699f, +0.106463f, +0.004855f, -0.000830f, +0.000144f}, - {+0.076446f, -0.063154f, +0.011339f, +0.000105f, -0.000081f}, - {-0.046001f, -0.090381f, -0.006439f, -0.000517f, +0.000079f}, - {-0.003916f, -0.020923f, -0.003928f, -0.000676f, +0.000026f} - }, - { - {-0.027283f, -0.518967f, -0.004482f, +0.000531f, +0.000006f}, - {-0.002104f, -0.586753f, +0.000310f, +0.000388f, +0.000138f}, - {+0.067195f, +0.083021f, +0.013467f, -0.000261f, -0.000139f}, - {+0.000203f, -0.242050f, +0.002218f, -0.001130f, -0.000092f}, - {-0.041057f, -0.183900f, -0.003084f, -0.000869f, -0.000096f}, - {+0.043480f, +0.079977f, +0.008525f, +0.000104f, -0.000100f}, - {-0.026266f, +0.096019f, -0.004003f, -0.000222f, +0.000001f}, - {-0.040550f, -0.099815f, -0.006813f, +0.000626f, +0.000005f}, - {-0.012858f, -0.005094f, -0.001938f, -0.001102f, -0.000079f} - }, - { - {+0.314481f, +0.005188f, +0.044811f, +0.000426f, -0.000028f}, - {+0.346528f, -0.051746f, +0.052277f, -0.000401f, -0.000122f}, - {-0.053118f, -0.097595f, -0.002410f, +0.001225f, -0.000151f}, - {+0.140849f, -0.024347f, +0.026727f, +0.000253f, -0.000095f}, - {+0.107847f, +0.047702f, +0.019644f, -0.000097f, -0.000079f}, - {-0.051228f, -0.061068f, -0.003689f, +0.001630f, -0.000102f}, - {-0.056164f, +0.049815f, -0.009319f, +0.000032f, +0.000080f}, - {+0.061891f, +0.058300f, +0.009871f, +0.001903f, -0.000079f}, - {+0.009880f, +0.028684f, +0.006879f, +0.001108f, +0.000001f} + {-0.067351f, +0.619497f, -0.224314f}, + {-0.139294f, +0.771571f, -0.258097f}, + {-0.003713f, +0.028657f, -0.008450f}, + {-0.024048f, +0.069155f, -0.020553f}, + {-0.025678f, -0.026025f, +0.019233f}, + {-0.009936f, -0.011063f, +0.007565f}, + {+0.034483f, +0.043638f, -0.029489f}, + {+0.006138f, -0.086263f, +0.038216f}, + {+0.046480f, +0.249243f, -0.117268f} + }, + { + {+0.012648f, +0.734658f, -0.184512f}, + {-0.111037f, +0.538674f, -0.336987f}, + {-0.002627f, -0.020803f, -0.029183f}, + {-0.030921f, +0.004858f, -0.041299f}, + {-0.051115f, -0.078198f, +0.009636f}, + {-0.016252f, -0.028855f, +0.008268f}, + {+0.084591f, +0.153968f, -0.000650f}, + {-0.017068f, -0.206982f, -0.012636f}, + {+0.164507f, +0.469681f, -0.054789f} + }, + { + {+0.223221f, -0.320495f, +0.172323f}, + {+0.327663f, -0.928806f, +0.128055f}, + {+0.019358f, -0.074304f, -0.015400f}, + {+0.035210f, -0.082508f, -0.021387f}, + {-0.001915f, +0.019754f, -0.041779f}, + {+0.009482f, -0.004447f, -0.006672f}, + {+0.039341f, +0.054366f, +0.052326f}, + {-0.015501f, -0.146235f, -0.037803f}, + {+0.140215f, +0.011558f, +0.133087f} + }, + { + {+0.158118f, -0.393316f, +0.132368f}, + {+0.546868f, -0.311888f, +0.284518f}, + {+0.031012f, +0.036496f, +0.023744f}, + {+0.107357f, +0.078785f, +0.019930f}, + {+0.117669f, +0.168393f, -0.014741f}, + {+0.063269f, +0.132935f, +0.029018f}, + {-0.110215f, -0.232883f, -0.026283f}, + {+0.026325f, -0.007643f, +0.015801f}, + {-0.156350f, -0.444539f, +0.006974f} + }, + { + {-0.158057f, +0.298412f, -0.065118f}, + {+0.180062f, +0.634611f, -0.013767f}, + {-0.011461f, +0.071086f, +0.018569f}, + {+0.074813f, +0.048439f, +0.032538f}, + {+0.176343f, -0.017086f, +0.039934f}, + {+0.070878f, +0.087909f, +0.042882f}, + {-0.196698f, -0.095181f, -0.059079f}, + {+0.043237f, +0.006669f, +0.001955f}, + {-0.440379f, +0.000452f, -0.098398f} + }, + { + {-0.449468f, +0.042993f, -0.088093f}, + {-0.450454f, -0.142745f, -0.162071f}, + {-0.082857f, -0.081326f, -0.023342f}, + {-0.091693f, -0.115333f, +0.002878f}, + {+0.059625f, -0.113643f, +0.022660f}, + {+0.002551f, -0.114733f, -0.021413f}, + {-0.134830f, +0.127944f, +0.015214f}, + {+0.039406f, -0.002734f, -0.000806f}, + {-0.456803f, +0.175205f, -0.017055f} + }, + { + {-0.521027f, -0.156261f, +0.000350f}, + {-0.908889f, -0.180570f, -0.051670f}, + {-0.108770f, -0.053291f, -0.027241f}, + {-0.287995f, +0.046150f, -0.015860f}, + {-0.175042f, +0.108856f, -0.012453f}, + {-0.059786f, -0.044325f, -0.033874f}, + {-0.008998f, -0.011671f, +0.039397f}, + {+0.004422f, -0.001021f, +0.005255f}, + {-0.225556f, -0.103116f, +0.036951f} + }, + { + {-0.371766f, +0.087065f, +0.052523f}, + {-1.010425f, +0.130810f, +0.067243f}, + {-0.070822f, +0.064314f, +0.008682f}, + {-0.381257f, -0.000635f, -0.013290f}, + {-0.375703f, -0.033440f, -0.023774f}, + {-0.081888f, +0.060050f, +0.009146f}, + {+0.099530f, -0.054172f, +0.002402f}, + {-0.055187f, -0.030383f, +0.004615f}, + {+0.113698f, +0.047344f, +0.023699f} + }, + { + {-0.133153f, +0.006407f, +0.034476f}, + {-0.837054f, +0.001398f, +0.067755f}, + {-0.019596f, -0.013995f, +0.025797f}, + {-0.306127f, -0.073720f, -0.002010f}, + {-0.417535f, -0.051347f, -0.011222f}, + {-0.096752f, +0.015410f, +0.024298f}, + {+0.165604f, -0.014311f, -0.020675f}, + {-0.110129f, +0.012754f, -0.001173f}, + {+0.396896f, -0.022479f, +0.001703f} + }, + { + {+0.076154f, -0.015041f, -0.005731f}, + {-0.558795f, -0.016178f, +0.011329f}, + {+0.001783f, -0.050805f, +0.008376f}, + {-0.100163f, +0.081596f, +0.016700f}, + {-0.287003f, +0.097687f, +0.016950f}, + {-0.130328f, -0.051441f, +0.002818f}, + {+0.194137f, +0.028286f, -0.006100f}, + {-0.128998f, -0.007273f, -0.004964f}, + {+0.525370f, -0.013001f, -0.010543f} + }, + { + {+0.227729f, -0.027128f, -0.019508f}, + {-0.280803f, -0.046474f, -0.016340f}, + {+0.006184f, +0.007629f, -0.010663f}, + {+0.124161f, -0.022132f, +0.014831f}, + {-0.082170f, -0.023992f, +0.023358f}, + {-0.168199f, +0.000379f, -0.008102f}, + {+0.185287f, +0.007140f, +0.002454f}, + {-0.098830f, -0.034738f, -0.000610f}, + {+0.505599f, +0.024919f, -0.016122f} + }, + { + {+0.345183f, +0.044417f, -0.008489f}, + {-0.029206f, +0.069971f, -0.008062f}, + {+0.040780f, +0.025656f, -0.005557f}, + {+0.280661f, +0.000086f, -0.001939f}, + {+0.091189f, -0.001516f, +0.001765f}, + {-0.178051f, +0.018186f, +0.003683f}, + {+0.147526f, -0.011735f, +0.000472f}, + {-0.034700f, +0.017373f, +0.007552f}, + {+0.404231f, -0.018810f, -0.013580f} + }, + { + {+0.447376f, -0.029945f, +0.002359f}, + {+0.196485f, -0.048776f, +0.000528f}, + {+0.131413f, -0.031345f, +0.001264f}, + {+0.352086f, -0.000092f, -0.009252f}, + {+0.196164f, -0.010102f, -0.008244f}, + {-0.137927f, -0.001411f, +0.005445f}, + {+0.094224f, +0.013361f, +0.000776f}, + {+0.030220f, +0.002376f, +0.001349f}, + {+0.282599f, +0.004869f, -0.002937f} + }, + { + {+0.532898f, +0.008836f, +0.002166f}, + {+0.392609f, +0.034792f, -0.000679f}, + {+0.270895f, +0.030297f, -0.000156f}, + {+0.364913f, -0.004283f, -0.009820f}, + {+0.243967f, +0.002627f, -0.007384f}, + {-0.037047f, +0.017787f, -0.004491f}, + {+0.041930f, -0.015182f, -0.000239f}, + {+0.078287f, +0.007042f, -0.004821f}, + {+0.167608f, -0.019027f, +0.005545f} + }, + { + {+0.594888f, -0.002438f, -0.003208f}, + {+0.547092f, -0.023930f, -0.003204f}, + {+0.418638f, -0.023295f, -0.006545f}, + {+0.358947f, -0.011193f, -0.005371f}, + {+0.268043f, -0.007992f, -0.005934f}, + {+0.108159f, -0.040803f, -0.007847f}, + {+0.014237f, +0.000657f, -0.000908f}, + {+0.104780f, -0.013359f, -0.000511f}, + {+0.064568f, +0.028680f, +0.003338f} + }, + { + {+0.635005f, +0.006702f, -0.005006f}, + {+0.650934f, +0.013984f, -0.004474f}, + {+0.519015f, +0.020899f, -0.008786f}, + {+0.354058f, +0.000065f, -0.000944f}, + {+0.293166f, +0.009243f, -0.003786f}, + {+0.244478f, +0.036317f, -0.004273f}, + {+0.027137f, +0.008991f, +0.000305f}, + {+0.112434f, -0.002933f, +0.003310f}, + {-0.019782f, -0.018420f, -0.000608f} + }, + { + {+0.661388f, -0.006850f, -0.003249f}, + {+0.709859f, -0.007935f, -0.004126f}, + {+0.524557f, -0.002414f, -0.002080f}, + {+0.344994f, +0.003888f, -0.002639f}, + {+0.316812f, -0.006036f, -0.003412f}, + {+0.307717f, -0.012550f, +0.001272f}, + {+0.076841f, -0.011681f, -0.000880f}, + {+0.115864f, +0.008381f, -0.000189f}, + {-0.078312f, +0.007256f, -0.000761f} + }, + { + {+0.681780f, +0.004317f, -0.002114f}, + {+0.740600f, +0.002506f, -0.003738f}, + {+0.416864f, -0.038264f, +0.003168f}, + {+0.319577f, -0.000792f, -0.001313f}, + {+0.319873f, +0.002666f, -0.002245f}, + {+0.258538f, -0.029824f, +0.003409f}, + {+0.141548f, +0.012818f, -0.003839f}, + {+0.135337f, +0.001218f, -0.005061f}, + {-0.109830f, +0.001645f, +0.001441f} + }, + { + {+0.699871f, -0.003221f, -0.002308f}, + {+0.762514f, -0.004609f, -0.003814f}, + {+0.225434f, +0.064939f, -0.001450f}, + {+0.266431f, +0.012897f, +0.002255f}, + {+0.282175f, +0.010311f, +0.000422f}, + {+0.108713f, +0.058556f, -0.002399f}, + {+0.186968f, -0.009396f, -0.004807f}, + {+0.178376f, -0.016506f, -0.006062f}, + {-0.120383f, -0.003023f, +0.004088f} + }, + { + {+0.714529f, +0.003253f, -0.002414f}, + {+0.790696f, +0.011388f, -0.001985f}, + {+0.020833f, -0.046458f, -0.007156f}, + {+0.185944f, -0.029249f, +0.000016f}, + {+0.197551f, -0.028731f, -0.000138f}, + {-0.079181f, -0.043101f, -0.006863f}, + {+0.176963f, -0.004258f, -0.002861f}, + {+0.228839f, +0.021085f, -0.002090f}, + {-0.119574f, -0.002646f, +0.004158f} + }, + { + {+0.721602f, -0.001258f, -0.002069f}, + {+0.831027f, -0.010846f, +0.000173f}, + {-0.126177f, +0.009153f, -0.003439f}, + {+0.096173f, +0.020892f, -0.003906f}, + {+0.084227f, +0.027335f, -0.001653f}, + {-0.229925f, +0.010207f, -0.000875f}, + {+0.090658f, +0.023511f, +0.000256f}, + {+0.250703f, +0.000323f, +0.000133f}, + {-0.115659f, +0.011998f, -0.001947f} + }, + { + {+0.717593f, -0.001188f, -0.001513f}, + {+0.881199f, +0.003795f, -0.002266f}, + {-0.186085f, +0.008805f, +0.004207f}, + {+0.021886f, +0.000682f, +0.000980f}, + {-0.024639f, -0.019808f, -0.000274f}, + {-0.296639f, +0.006775f, +0.008463f}, + {-0.060930f, -0.036828f, +0.003817f}, + {+0.210581f, -0.022700f, -0.003357f}, + {-0.112881f, +0.004715f, -0.006188f} + }, + { + {+0.702872f, +0.004202f, -0.000899f}, + {+0.934393f, -0.006557f, -0.007476f}, + {-0.176147f, -0.010014f, +0.006716f}, + {-0.022135f, +0.003624f, +0.007346f}, + {-0.100594f, +0.012448f, +0.000135f}, + {-0.271960f, -0.005598f, +0.007977f}, + {-0.233701f, +0.046766f, +0.003616f}, + {+0.101020f, +0.023227f, -0.002321f}, + {-0.116785f, -0.020405f, +0.002997f} + }, + { + {+0.682250f, -0.007566f, -0.001501f}, + {+0.978417f, +0.017585f, -0.006636f}, + {-0.137592f, +0.005047f, +0.003880f}, + {-0.028458f, -0.006826f, +0.004609f}, + {-0.129898f, +0.005880f, +0.001391f}, + {-0.175874f, +0.016526f, -0.001013f}, + {-0.367276f, -0.033929f, -0.002775f}, + {-0.060514f, -0.037887f, +0.002465f}, + {-0.137333f, -0.006964f, +0.011955f} + }, + { + {+0.663415f, +0.004606f, -0.002781f}, + {+0.993852f, -0.009178f, +0.000038f}, + {-0.108250f, -0.003270f, +0.001437f}, + {+0.009848f, -0.008477f, -0.000681f}, + {-0.118923f, -0.012268f, +0.005212f}, + {-0.044501f, -0.037572f, -0.003962f}, + {-0.416290f, -0.006378f, -0.006076f}, + {-0.236610f, +0.040350f, +0.002858f}, + {-0.168887f, +0.032800f, +0.004036f} + }, + { + {+0.651781f, +0.001152f, -0.002457f}, + {+0.965546f, -0.016499f, +0.002125f}, + {-0.105651f, -0.001646f, +0.002481f}, + {+0.090167f, +0.025763f, -0.001130f}, + {-0.087686f, +0.003999f, +0.005549f}, + {+0.075223f, +0.035790f, +0.002847f}, + {-0.383115f, +0.037796f, +0.001566f}, + {-0.378556f, -0.025237f, +0.002287f}, + {-0.179845f, -0.008941f, -0.008124f} + }, + { + {+0.645685f, -0.002682f, -0.000593f}, + {+0.900401f, +0.029783f, -0.003285f}, + {-0.124380f, +0.012275f, +0.001822f}, + {+0.193225f, -0.027406f, +0.000945f}, + {-0.052400f, +0.001580f, +0.000684f}, + {+0.141411f, +0.002262f, +0.004491f}, + {-0.319576f, -0.023501f, +0.010635f}, + {-0.448327f, +0.001574f, +0.004044f}, + {-0.141908f, -0.032139f, -0.005596f} + }, + { + {+0.638137f, -0.002412f, +0.000310f}, + {+0.826423f, -0.017144f, -0.007574f}, + {-0.140725f, -0.006104f, -0.000815f}, + {+0.290930f, +0.019453f, +0.001904f}, + {-0.016875f, +0.009182f, -0.001656f}, + {+0.145675f, -0.017736f, -0.001807f}, + {-0.285941f, -0.010851f, +0.008570f}, + {-0.435070f, +0.011023f, +0.004307f}, + {-0.062178f, +0.036767f, +0.005654f} + }, + { + {+0.623287f, +0.007299f, -0.001056f}, + {+0.770521f, -0.001075f, -0.004559f}, + {-0.130645f, -0.003274f, -0.002902f}, + {+0.361351f, -0.005902f, +0.000348f}, + {+0.020477f, -0.011841f, +0.000752f}, + {+0.114514f, +0.018145f, -0.007488f}, + {-0.305625f, +0.026256f, -0.000446f}, + {-0.353862f, -0.030431f, +0.004835f}, + {+0.024417f, -0.010793f, +0.007820f} + }, + { + {+0.600902f, -0.006021f, -0.002348f}, + {+0.739248f, +0.005015f, +0.001571f}, + {-0.087167f, +0.021027f, -0.001847f}, + {+0.400187f, +0.000286f, -0.002317f}, + {+0.060945f, +0.009244f, +0.002589f}, + {+0.083328f, +0.001928f, -0.007725f}, + {-0.359405f, -0.019595f, -0.006438f}, + {-0.237042f, +0.027090f, +0.006659f}, + {+0.089013f, -0.004244f, -0.000128f} + }, + { + {+0.574438f, +0.003368f, -0.001494f}, + {+0.720431f, +0.005878f, +0.002928f}, + {-0.025553f, -0.022088f, +0.002875f}, + {+0.419048f, +0.001480f, -0.004334f}, + {+0.105303f, -0.000852f, -0.000385f}, + {+0.070507f, -0.013892f, -0.000793f}, + {-0.411663f, -0.001662f, -0.003755f}, + {-0.118815f, -0.013893f, +0.002937f}, + {+0.127181f, -0.002212f, -0.005490f} + }, + { + {+0.546941f, -0.004959f, -0.000239f}, + {+0.700235f, -0.009986f, -0.000285f}, + {+0.026874f, +0.006811f, +0.004565f}, + {+0.432826f, +0.004148f, -0.005149f}, + {+0.153860f, +0.009932f, -0.004309f}, + {+0.067445f, +0.005555f, +0.005512f}, + {-0.441084f, +0.007824f, +0.003852f}, + {-0.016912f, +0.012081f, -0.003174f}, + {+0.148914f, +0.007013f, -0.004323f} + }, + { + {+0.520436f, +0.006384f, -0.000382f}, + {+0.674657f, +0.006620f, -0.001998f}, + {+0.052406f, +0.010142f, -0.000198f}, + {+0.447102f, -0.009070f, -0.003159f}, + {+0.202135f, -0.018081f, -0.002032f}, + {+0.055887f, +0.014144f, +0.003615f}, + {-0.448314f, -0.001324f, +0.007309f}, + {+0.065957f, -0.020607f, -0.003258f}, + {+0.162472f, -0.004875f, -0.002127f} + }, + { + {+0.496665f, -0.004859f, -0.000887f}, + {+0.647428f, -0.004741f, -0.001434f}, + {+0.053060f, -0.007546f, -0.006118f}, + {+0.453309f, +0.004051f, -0.000324f}, + {+0.237178f, +0.009221f, +0.002058f}, + {+0.029969f, -0.014850f, -0.002643f}, + {-0.439805f, -0.002523f, +0.005619f}, + {+0.128558f, +0.010056f, -0.001511f}, + {+0.167737f, +0.001236f, -0.001456f} + }, + { + {+0.475983f, +0.003710f, -0.000970f}, + {+0.624608f, +0.003603f, -0.000812f}, + {+0.042149f, -0.008534f, -0.003432f}, + {+0.438672f, +0.005526f, +0.000965f}, + {+0.249063f, +0.004782f, +0.002016f}, + {-0.000807f, +0.001028f, -0.002841f}, + {-0.416440f, +0.003745f, +0.000359f}, + {+0.170217f, -0.009457f, -0.000867f}, + {+0.158107f, +0.002167f, -0.000901f} + }, + { + {+0.456962f, -0.002559f, -0.000574f}, + {+0.609653f, -0.002905f, -0.001117f}, + {+0.025784f, -0.000666f, +0.002060f}, + {+0.399694f, -0.014955f, +0.000161f}, + {+0.242149f, -0.009905f, -0.001262f}, + {-0.026686f, +0.000156f, +0.001218f}, + {-0.373014f, +0.013273f, -0.002730f}, + {+0.191984f, -0.000973f, -0.000838f}, + {+0.127455f, -0.008313f, +0.000023f} + }, + { + {+0.437008f, +0.003925f, -0.000081f}, + {+0.601093f, +0.000232f, -0.001372f}, + {+0.002960f, +0.010345f, +0.001054f}, + {+0.347170f, +0.016956f, -0.002319f}, + {+0.233004f, +0.002825f, -0.003373f}, + {-0.044339f, +0.004384f, +0.002020f}, + {-0.309506f, -0.024368f, +0.000882f}, + {+0.198003f, -0.000405f, -0.001486f}, + {+0.077236f, +0.014350f, -0.000034f} + }, + { + {+0.414109f, -0.005431f, -0.000037f}, + {+0.592705f, -0.001470f, -0.001222f}, + {-0.024584f, -0.008451f, -0.001721f}, + {+0.300043f, -0.007510f, -0.003376f}, + {+0.236922f, +0.005189f, -0.002904f}, + {-0.053435f, -0.002953f, +0.000365f}, + {-0.239443f, +0.015553f, +0.003945f}, + {+0.195817f, -0.003961f, -0.001987f}, + {+0.019225f, -0.012398f, -0.000024f} + }, + { + {+0.388577f, +0.006627f, -0.000411f}, + {+0.576851f, +0.002898f, -0.000753f}, + {-0.052952f, +0.001666f, -0.000781f}, + {+0.271771f, -0.002315f, -0.001136f}, + {+0.256751f, -0.010892f, -0.000933f}, + {-0.055321f, -0.000623f, -0.000321f}, + {-0.178829f, -0.004699f, +0.001577f}, + {+0.192108f, -0.001841f, -0.002156f}, + {-0.030601f, +0.010281f, +0.000029f} + }, + { + {+0.362659f, -0.006023f, -0.001007f}, + {+0.548393f, -0.008477f, -0.000553f}, + {-0.079254f, -0.004768f, +0.001192f}, + {+0.262246f, +0.003901f, +0.002002f}, + {+0.282691f, +0.009035f, +0.001549f}, + {-0.052737f, +0.001616f, +0.000062f}, + {-0.134033f, +0.004191f, -0.001751f}, + {+0.189322f, +0.000295f, -0.001194f}, + {-0.059659f, -0.002213f, -0.000053f} + }, + { + {+0.339002f, +0.002927f, -0.000712f}, + {+0.507223f, +0.011672f, -0.001408f}, + {-0.101892f, +0.008754f, -0.000366f}, + {+0.261016f, +0.005455f, +0.000964f}, + {+0.300336f, +0.003329f, +0.000659f}, + {-0.049601f, +0.001946f, -0.000746f}, + {-0.101681f, -0.008021f, -0.001522f}, + {+0.184646f, -0.000891f, -0.000474f}, + {-0.064232f, -0.004100f, +0.000831f} + }, + { + {+0.318447f, -0.002583f, +0.000342f}, + {+0.458166f, -0.011334f, -0.002134f}, + {-0.119857f, -0.003793f, -0.002673f}, + {+0.257649f, -0.004527f, -0.002750f}, + {+0.302642f, -0.006786f, -0.003304f}, + {-0.050079f, -0.001140f, -0.002294f}, + {-0.075154f, +0.006079f, +0.000154f}, + {+0.175259f, -0.002462f, +0.000450f}, + {-0.050689f, +0.006815f, +0.002112f} + }, + { + {+0.300124f, +0.004647f, +0.000429f}, + {+0.407177f, +0.007551f, -0.001229f}, + {-0.135280f, -0.004904f, -0.000353f}, + {+0.246029f, -0.001362f, -0.002342f}, + {+0.292460f, +0.000038f, -0.003938f}, + {-0.057770f, -0.002994f, -0.000700f}, + {-0.048950f, -0.002677f, -0.000542f}, + {+0.161196f, +0.006930f, -0.000490f}, + {-0.030107f, -0.002304f, +0.001927f} + }, + { + {+0.283695f, -0.004672f, -0.000499f}, + {+0.357931f, -0.007644f, +0.000792f}, + {-0.154465f, -0.001114f, +0.004046f}, + {+0.221394f, -0.002251f, +0.001225f}, + {+0.274104f, +0.001365f, -0.000312f}, + {-0.076006f, -0.003175f, +0.002372f}, + {-0.019797f, +0.006502f, -0.001827f}, + {+0.147944f, -0.003560f, -0.001898f}, + {-0.011081f, -0.000127f, -0.000375f} + }, + { + {+0.269518f, +0.002457f, -0.001001f}, + {+0.311326f, +0.012837f, +0.000327f}, + {-0.181319f, +0.014112f, +0.003014f}, + {+0.182651f, +0.012951f, +0.002036f}, + {+0.248875f, +0.007948f, +0.001266f}, + {-0.104063f, +0.013233f, +0.001219f}, + {+0.010928f, -0.008987f, -0.001152f}, + {+0.141371f, -0.000838f, -0.001781f}, + {+0.004297f, -0.004808f, -0.000787f} + }, + { + {+0.257138f, -0.000471f, -0.000295f}, + {+0.269065f, -0.008971f, -0.001327f}, + {-0.209242f, -0.009445f, -0.000789f}, + {+0.136359f, -0.015642f, -0.000837f}, + {+0.218917f, -0.009939f, -0.000695f}, + {-0.133100f, -0.007332f, -0.001415f}, + {+0.037336f, +0.006071f, +0.000081f}, + {+0.141848f, +0.003924f, -0.000450f}, + {+0.015759f, +0.001304f, -0.000104f} + }, + { + {+0.244594f, +0.002255f, +0.000537f}, + {+0.232039f, +0.006188f, -0.001385f}, + {-0.226456f, -0.005183f, +0.000708f}, + {+0.094177f, +0.004239f, -0.001379f}, + {+0.188550f, +0.003755f, -0.001033f}, + {-0.152408f, -0.005083f, +0.000982f}, + {+0.053373f, +0.001503f, -0.000759f}, + {+0.144008f, -0.001965f, +0.000959f}, + {+0.023577f, -0.002308f, -0.000076f} + }, + { + {+0.229867f, -0.004876f, +0.000170f}, + {+0.197603f, -0.004728f, -0.000560f}, + {-0.226600f, +0.010780f, +0.006854f}, + {+0.064221f, +0.003891f, +0.003122f}, + {+0.161189f, +0.001104f, +0.002261f}, + {-0.157190f, +0.008241f, +0.006888f}, + {+0.056895f, -0.003410f, -0.003127f}, + {+0.141412f, -0.001071f, +0.001644f}, + {+0.029485f, +0.003593f, +0.001358f} + }, + { + {+0.212288f, +0.005142f, -0.000800f}, + {+0.162483f, +0.004117f, +0.001433f}, + {-0.209328f, -0.002547f, +0.009702f}, + {+0.048193f, +0.000129f, +0.007210f}, + {+0.139874f, +0.002121f, +0.005784f}, + {-0.146647f, +0.000237f, +0.009054f}, + {+0.049793f, -0.001403f, -0.002729f}, + {+0.132126f, +0.003164f, +0.002133f}, + {+0.035201f, -0.000152f, +0.002301f} + }, + { + {+0.191599f, -0.002871f, -0.000708f}, + {+0.125250f, -0.008746f, +0.003116f}, + {-0.175384f, -0.002970f, +0.005044f}, + {+0.046507f, -0.009000f, +0.004794f}, + {+0.128202f, -0.013178f, +0.002850f}, + {-0.120273f, -0.005762f, +0.003583f}, + {+0.034030f, -0.000067f, +0.000427f}, + {+0.118790f, -0.004116f, +0.002419f}, + {+0.044052f, -0.001094f, +0.001102f} } }; -const float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]= +const float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.005335f, +0.653226f, +0.143797f, +0.002456f, -0.000002f}, - {+0.013208f, -0.379140f, +0.322559f, +0.004978f, +0.000009f}, - {+0.001925f, +0.054222f, +0.043071f, -0.002449f, -0.000110f}, - {-0.000927f, +0.060176f, -0.015580f, -0.001281f, -0.000042f}, - {-0.003471f, -0.011471f, -0.002826f, -0.001074f, +0.000026f}, - {-0.003706f, +0.001098f, +0.005680f, -0.008863f, -0.000084f}, - {-0.005326f, -0.000766f, -0.002007f, -0.003072f, +0.000014f}, - {+0.001747f, -0.039662f, +0.085770f, +0.000859f, +0.000050f}, - {-0.009494f, +0.084274f, -0.084910f, -0.005996f, -0.000078f} - }, - { - {+0.020549f, +0.471556f, -0.054545f, -0.003976f, +0.000002f}, - {-0.031621f, -0.813566f, -0.056755f, -0.007166f, -0.000006f}, - {-0.002271f, -0.021372f, -0.026223f, +0.003087f, +0.000136f}, - {+0.000511f, +0.035700f, -0.040529f, +0.002564f, +0.000048f}, - {+0.007142f, +0.001751f, +0.001329f, +0.002743f, -0.000028f}, - {+0.006527f, +0.051957f, +0.070578f, +0.014200f, +0.000113f}, - {+0.014135f, +0.025109f, +0.015403f, +0.005652f, -0.000015f}, - {-0.003291f, -0.069019f, +0.036066f, +0.001141f, -0.000069f}, - {+0.028061f, +0.152663f, -0.025603f, +0.008277f, +0.000102f} - }, - { - {-0.039663f, +0.412008f, +0.017452f, +0.000445f, +0.000002f}, - {+0.026960f, -0.962971f, -0.087407f, -0.001953f, -0.000014f}, - {-0.001486f, -0.002955f, -0.054042f, +0.000085f, +0.000075f}, - {+0.003107f, +0.048844f, -0.051503f, -0.002108f, +0.000034f}, - {-0.009864f, +0.005169f, +0.019159f, -0.003128f, -0.000025f}, - {-0.004987f, +0.054770f, +0.099413f, -0.003316f, +0.000044f}, - {-0.024855f, +0.021795f, +0.065786f, -0.002538f, -0.000013f}, - {+0.003623f, +0.018186f, -0.058320f, -0.005763f, -0.000022f}, - {-0.055010f, +0.126807f, +0.109029f, +0.001546f, +0.000045f} - }, - { - {+0.043174f, +0.455537f, -0.027678f, +0.002529f, -0.000002f}, - {+0.025122f, -0.922813f, -0.028063f, +0.008613f, +0.000006f}, - {+0.002020f, +0.051124f, -0.010761f, +0.000153f, -0.000146f}, - {-0.010597f, +0.081732f, -0.001493f, +0.001479f, -0.000051f}, - {+0.024810f, -0.014152f, -0.030508f, +0.002185f, +0.000029f}, - {+0.011648f, -0.040215f, -0.008697f, -0.003893f, -0.000125f}, - {+0.043616f, -0.007408f, -0.035355f, -0.000987f, +0.000015f}, - {-0.007698f, +0.031375f, -0.028885f, +0.004919f, +0.000076f}, - {+0.093586f, +0.162669f, -0.029770f, -0.007128f, -0.000112f} - }, - { - {-0.001041f, +0.494032f, +0.005715f, -0.001108f, -0.000002f}, - {-0.143821f, -0.682007f, +0.029450f, -0.003481f, +0.000019f}, - {+0.006306f, +0.070613f, -0.011179f, -0.001860f, -0.000038f}, - {+0.031146f, +0.059515f, -0.014381f, -0.000905f, -0.000027f}, - {-0.052905f, +0.051459f, +0.001250f, -0.000868f, +0.000023f}, - {-0.029241f, -0.030800f, -0.000944f, +0.000488f, +0.000000f}, - {-0.055716f, +0.063529f, +0.002159f, +0.000641f, +0.000013f}, - {+0.013468f, -0.008041f, -0.000774f, +0.000134f, -0.000007f}, - {-0.101473f, +0.336570f, +0.012535f, +0.003233f, -0.000009f} - }, - { - {-0.092816f, +0.358882f, +0.002536f, -0.001449f, +0.000001f}, - {+0.262828f, -0.127251f, +0.020151f, -0.004341f, -0.000009f}, - {-0.022963f, +0.059857f, +0.016901f, +0.000212f, +0.000141f}, - {-0.064426f, -0.041934f, +0.012804f, -0.000049f, +0.000052f}, - {+0.064139f, +0.206373f, -0.000508f, +0.000138f, -0.000031f}, - {+0.035857f, +0.035091f, -0.016850f, +0.002300f, +0.000120f}, - {+0.032908f, +0.170386f, -0.004178f, +0.001249f, -0.000015f}, - {-0.010158f, -0.037569f, +0.007236f, -0.002146f, -0.000070f}, - {+0.021780f, +0.486360f, -0.004267f, +0.000644f, +0.000106f} - }, - { - {+0.166528f, -0.018320f, +0.002944f, +0.001057f, +0.000002f}, - {-0.217141f, +0.537828f, -0.015478f, +0.003353f, -0.000022f}, - {+0.036889f, -0.008294f, -0.001367f, +0.001254f, +0.000008f}, - {+0.069514f, -0.229400f, +0.010249f, +0.000566f, +0.000020f}, - {-0.019714f, +0.330742f, -0.003692f, +0.000002f, -0.000022f}, - {-0.010625f, +0.080582f, +0.010145f, -0.000258f, -0.000041f}, - {+0.022526f, +0.170893f, +0.014154f, -0.001025f, -0.000013f}, - {-0.007441f, -0.048091f, +0.004112f, +0.000974f, +0.000032f}, - {+0.115639f, +0.344255f, +0.014295f, -0.000177f, -0.000021f} - }, - { - {-0.099909f, -0.399087f, -0.008044f, +0.000848f, -0.000001f}, - {-0.054243f, +0.757012f, -0.020850f, +0.002283f, +0.000013f}, - {-0.025209f, -0.091980f, -0.004347f, +0.000486f, -0.000127f}, - {+0.003575f, -0.340857f, -0.007962f, -0.000163f, -0.000051f}, - {-0.071769f, +0.265803f, +0.002595f, -0.000097f, +0.000034f}, - {-0.026489f, +0.035458f, -0.005585f, -0.001110f, -0.000100f}, - {-0.060623f, +0.023422f, -0.010689f, -0.000403f, +0.000015f}, - {+0.027371f, -0.008448f, -0.007673f, -0.000192f, +0.000053f}, - {-0.176311f, -0.087697f, -0.004740f, -0.000958f, -0.000089f} - }, - { - {-0.098192f, -0.380559f, -0.012062f, -0.000872f, -0.000003f}, - {+0.307522f, +0.201411f, +0.041908f, -0.002386f, +0.000023f}, - {-0.016794f, -0.090327f, -0.008151f, -0.001481f, +0.000012f}, - {-0.117497f, -0.178818f, -0.001213f, -0.000161f, -0.000015f}, - {+0.130667f, -0.017905f, +0.002862f, +0.000224f, +0.000021f}, - {+0.026816f, -0.061563f, +0.002730f, +0.000500f, +0.000070f}, - {+0.035111f, -0.133808f, +0.000916f, +0.000421f, +0.000014f}, - {-0.028071f, +0.069426f, -0.005372f, -0.000149f, -0.000048f}, - {+0.069362f, -0.446237f, -0.000098f, +0.000728f, +0.000041f} - }, - { - {+0.200424f, +0.084933f, +0.029127f, -0.000528f, +0.000002f}, - {-0.208158f, -0.589613f, -0.015424f, -0.001691f, -0.000018f}, - {+0.041516f, +0.016661f, +0.015205f, -0.000153f, +0.000109f}, - {+0.138467f, +0.186187f, +0.007440f, -0.000185f, +0.000051f}, - {-0.077086f, -0.303705f, +0.003329f, -0.000036f, -0.000037f}, - {+0.020310f, -0.080808f, -0.007043f, +0.000054f, +0.000070f}, - {+0.031948f, -0.141008f, -0.000818f, +0.000548f, -0.000016f}, - {+0.000366f, +0.119534f, +0.006275f, +0.000355f, -0.000032f}, - {+0.109021f, -0.372983f, +0.009320f, +0.000129f, +0.000067f} - }, - { - {-0.031292f, +0.437887f, -0.005797f, +0.000706f, +0.000004f}, - {-0.174454f, -0.640794f, -0.027817f, +0.001980f, -0.000023f}, - {+0.003185f, +0.089160f, -0.003572f, +0.001064f, -0.000021f}, - {-0.004179f, +0.383165f, +0.003748f, +0.000389f, +0.000011f}, - {-0.056596f, -0.310132f, -0.010567f, -0.000223f, -0.000018f}, - {-0.057823f, +0.028077f, -0.000893f, -0.000451f, -0.000085f}, - {-0.063559f, +0.001711f, -0.003009f, -0.000543f, -0.000016f}, - {+0.035766f, +0.073579f, +0.002518f, +0.000224f, +0.000053f}, - {-0.161175f, +0.042780f, -0.016398f, -0.000634f, -0.000050f} - }, - { - {-0.205155f, +0.167329f, -0.030119f, +0.000379f, -0.000002f}, - {+0.339082f, +0.153701f, +0.034923f, +0.001267f, +0.000022f}, - {-0.072520f, -0.022480f, -0.011077f, +0.000072f, -0.000094f}, - {-0.141121f, +0.163887f, -0.018765f, +0.000088f, -0.000051f}, - {+0.127275f, -0.020840f, +0.015322f, -0.000034f, +0.000041f}, - {+0.027665f, +0.152414f, +0.006975f, +0.000222f, -0.000038f}, - {+0.020531f, +0.124947f, +0.003832f, -0.000374f, +0.000019f}, - {-0.042138f, -0.039811f, -0.003937f, -0.000440f, +0.000012f}, - {+0.031495f, +0.327305f, +0.001379f, +0.000105f, -0.000048f} - }, - { - {+0.145847f, -0.370580f, +0.020419f, -0.000633f, -0.000004f}, - {-0.026755f, +0.715695f, +0.002721f, -0.001713f, +0.000021f}, - {+0.048263f, -0.214620f, +0.011454f, -0.000799f, +0.000024f}, - {+0.105105f, -0.209642f, +0.009809f, -0.000393f, -0.000007f}, - {-0.046673f, +0.240709f, -0.003039f, +0.000354f, +0.000014f}, - {+0.046604f, +0.126235f, +0.001254f, +0.000637f, +0.000087f}, - {+0.040919f, +0.089993f, +0.004646f, +0.000614f, +0.000016f}, - {+0.003849f, -0.106327f, -0.000606f, -0.000255f, -0.000050f}, - {+0.114169f, +0.187796f, +0.016720f, +0.000604f, +0.000050f} - }, - { - {+0.151563f, -0.357850f, +0.023901f, -0.000267f, +0.000003f}, - {-0.329416f, +0.240852f, -0.037687f, -0.000972f, -0.000025f}, - {+0.079637f, -0.178703f, +0.006277f, -0.000085f, +0.000084f}, - {+0.067743f, -0.255542f, +0.013928f, -0.000093f, +0.000052f}, - {-0.085616f, +0.171409f, -0.015038f, +0.000016f, -0.000044f}, - {-0.080584f, -0.060419f, -0.009795f, -0.000260f, +0.000011f}, - {-0.039270f, -0.029107f, -0.004384f, +0.000149f, -0.000022f}, - {+0.040700f, -0.048532f, +0.005694f, +0.000308f, +0.000003f}, - {-0.100428f, -0.143102f, -0.013507f, -0.000175f, +0.000032f} - }, - { - {-0.221520f, +0.217382f, -0.031802f, +0.000571f, +0.000004f}, - {+0.191369f, -0.563524f, +0.020930f, +0.001563f, -0.000018f}, - {-0.142768f, +0.156236f, -0.016728f, +0.000768f, -0.000025f}, - {-0.131233f, +0.058224f, -0.018961f, +0.000413f, +0.000003f}, - {+0.094869f, -0.113180f, +0.014106f, -0.000387f, -0.000009f}, - {+0.032009f, -0.229593f, +0.004382f, -0.000814f, -0.000078f}, - {-0.014026f, -0.058166f, -0.005170f, -0.000559f, -0.000016f}, - {-0.035069f, +0.066238f, -0.003175f, +0.000270f, +0.000041f}, - {-0.032944f, -0.241581f, -0.006363f, -0.000531f, -0.000047f} - }, - { - {-0.072792f, +0.444420f, -0.012987f, +0.000205f, -0.000004f}, - {+0.237324f, -0.482374f, +0.029199f, +0.000704f, +0.000027f}, - {+0.015060f, +0.403253f, +0.004767f, +0.000016f, -0.000078f}, - {-0.002750f, +0.257555f, -0.001283f, +0.000101f, -0.000052f}, - {+0.029761f, -0.216925f, +0.003727f, -0.000037f, +0.000045f}, - {+0.050908f, -0.208738f, +0.003838f, +0.000287f, +0.000007f}, - {+0.026158f, +0.010072f, +0.007655f, -0.000049f, +0.000026f}, - {-0.018378f, +0.087639f, -0.004770f, -0.000153f, -0.000011f}, - {+0.100406f, -0.034654f, +0.015514f, +0.000140f, -0.000022f} - }, - { - {+0.257437f, -0.065717f, +0.037575f, -0.000530f, -0.000004f}, - {-0.281553f, +0.324420f, -0.036967f, -0.001412f, +0.000017f}, - {+0.165202f, +0.184739f, +0.014027f, -0.000709f, +0.000026f}, - {+0.125102f, +0.059915f, +0.017871f, -0.000393f, +0.000001f}, - {-0.112292f, +0.000623f, -0.014750f, +0.000389f, +0.000004f}, - {-0.090463f, -0.007129f, -0.003581f, +0.000747f, +0.000067f}, - {+0.027231f, +0.007327f, +0.004513f, +0.000487f, +0.000014f}, - {+0.046307f, -0.017672f, +0.008365f, -0.000175f, -0.000032f}, - {-0.028415f, +0.161325f, -0.001715f, +0.000514f, +0.000043f} - }, - { - {-0.007526f, -0.473436f, +0.001022f, -0.000153f, +0.000005f}, - {-0.129889f, +0.550582f, -0.015713f, -0.000496f, -0.000029f}, - {-0.152654f, -0.291103f, -0.013185f, -0.000005f, +0.000074f}, - {-0.054068f, -0.217748f, -0.007018f, -0.000142f, +0.000051f}, - {+0.037999f, +0.233960f, +0.005179f, +0.000063f, -0.000045f}, - {+0.058157f, +0.208550f, +0.000279f, -0.000232f, -0.000018f}, - {-0.043982f, -0.108725f, -0.011637f, +0.000065f, -0.000029f}, - {+0.000177f, -0.092885f, -0.000896f, -0.000064f, +0.000013f}, - {-0.062887f, +0.105831f, -0.012283f, -0.000152f, +0.000016f} - }, - { - {-0.267052f, -0.072481f, -0.039143f, +0.000481f, +0.000004f}, - {+0.316645f, -0.147998f, +0.045958f, +0.001265f, -0.000015f}, - {-0.048560f, -0.443085f, -0.007515f, +0.000666f, -0.000028f}, - {-0.086419f, -0.172339f, -0.010499f, +0.000432f, -0.000005f}, - {+0.085408f, +0.166595f, +0.008605f, -0.000440f, -0.000000f}, - {+0.015618f, +0.269874f, +0.001215f, -0.000625f, -0.000057f}, - {-0.041006f, -0.120930f, -0.000588f, -0.000488f, -0.000012f}, - {-0.062603f, +0.004952f, -0.009992f, +0.000232f, +0.000027f}, - {+0.049095f, -0.068280f, +0.006362f, -0.000520f, -0.000040f} - }, - { - {+0.085562f, +0.471449f, +0.011009f, +0.000129f, -0.000005f}, - {+0.040209f, -0.573378f, +0.000615f, +0.000315f, +0.000031f}, - {+0.171918f, -0.105151f, +0.017403f, +0.000004f, -0.000072f}, - {+0.084128f, +0.083375f, +0.007231f, +0.000038f, -0.000051f}, - {-0.092144f, -0.099172f, -0.007312f, +0.000077f, +0.000045f}, - {-0.077363f, +0.132678f, -0.001733f, +0.000235f, +0.000023f}, - {+0.111219f, +0.109132f, +0.015848f, -0.000079f, +0.000032f}, - {+0.040923f, +0.172426f, +0.008798f, -0.000008f, -0.000013f}, - {+0.029588f, -0.098729f, +0.007764f, +0.000221f, -0.000011f} - }, - { - {+0.254737f, +0.211411f, +0.036795f, -0.000484f, -0.000003f}, - {-0.338234f, +0.015114f, -0.048846f, -0.001053f, +0.000013f}, - {-0.069108f, +0.254859f, -0.003290f, -0.000753f, +0.000029f}, - {+0.023788f, +0.170361f, +0.006488f, -0.000354f, +0.000008f}, - {-0.008393f, -0.222503f, -0.002681f, +0.000354f, -0.000003f}, - {+0.081171f, -0.098496f, +0.004558f, +0.000585f, +0.000051f}, - {-0.022336f, +0.317809f, -0.007308f, +0.000546f, +0.000009f}, - {+0.059371f, +0.155239f, +0.002593f, -0.000198f, -0.000025f}, - {-0.050719f, +0.026919f, -0.006976f, +0.000534f, +0.000037f} - }, - { - {-0.158995f, -0.424829f, -0.020702f, -0.000042f, +0.000006f}, - {+0.052902f, +0.616966f, +0.013055f, -0.000306f, -0.000032f}, - {-0.087152f, +0.213242f, -0.015296f, +0.000352f, +0.000070f}, - {-0.054260f, +0.047270f, -0.008042f, +0.000061f, +0.000051f}, - {+0.073970f, -0.094701f, +0.008512f, -0.000228f, -0.000046f}, - {-0.017462f, -0.238223f, -0.000790f, -0.000485f, -0.000029f}, - {-0.138534f, +0.148762f, -0.014349f, -0.000008f, -0.000034f}, - {-0.109919f, -0.097327f, -0.010882f, +0.000233f, +0.000014f}, - {-0.006806f, +0.096529f, -0.003657f, -0.000365f, +0.000007f} - }, - { - {-0.218541f, -0.332409f, -0.031504f, +0.000445f, +0.000003f}, - {+0.344919f, +0.163301f, +0.048934f, +0.001021f, -0.000012f}, - {+0.081260f, -0.052733f, +0.012413f, +0.000334f, -0.000031f}, - {+0.001753f, -0.039186f, -0.002593f, +0.000192f, -0.000011f}, - {-0.044437f, +0.083315f, -0.002185f, -0.000075f, +0.000005f}, - {-0.063695f, -0.165969f, -0.005598f, -0.000350f, -0.000048f}, - {+0.133966f, -0.261153f, +0.015377f, -0.000538f, -0.000006f}, - {+0.023795f, -0.302979f, +0.005384f, -0.000124f, +0.000025f}, - {+0.048328f, +0.008375f, +0.007723f, -0.000384f, -0.000035f} - }, - { - {+0.215234f, +0.334693f, +0.029335f, -0.000032f, -0.000006f}, - {-0.163645f, -0.620258f, -0.029442f, +0.000199f, +0.000034f}, - {+0.033793f, -0.124345f, +0.006813f, -0.000105f, -0.000071f}, - {+0.000974f, -0.040313f, +0.001531f, +0.000006f, -0.000052f}, - {-0.011132f, +0.127973f, -0.004627f, -0.000028f, +0.000047f}, - {+0.084325f, +0.052788f, +0.007351f, +0.000453f, +0.000037f}, - {+0.056743f, -0.375950f, +0.009997f, +0.000141f, +0.000035f}, - {+0.111528f, -0.176673f, +0.008510f, +0.000146f, -0.000018f}, - {-0.011877f, -0.092945f, -0.003074f, +0.000266f, -0.000004f} - }, - { - {+0.170586f, +0.400778f, +0.026157f, -0.000380f, -0.000003f}, - {-0.309161f, -0.398764f, -0.040718f, -0.000943f, +0.000011f}, - {-0.062016f, +0.029728f, -0.012911f, -0.000459f, +0.000035f}, - {+0.031810f, -0.090010f, +0.007426f, -0.000129f, +0.000014f}, - {+0.032063f, +0.056196f, +0.004324f, +0.000244f, -0.000009f}, - {-0.022806f, +0.208884f, +0.000856f, +0.000371f, +0.000043f}, - {-0.165081f, -0.039385f, -0.016746f, +0.000367f, +0.000003f}, - {-0.128190f, +0.183103f, -0.012188f, -0.000425f, -0.000025f}, - {-0.049731f, -0.043210f, -0.002580f, +0.000500f, +0.000034f} - }, - { - {-0.253118f, -0.253855f, -0.036031f, +0.000022f, +0.000008f}, - {+0.270280f, +0.483591f, +0.039528f, -0.000153f, -0.000036f}, - {-0.018783f, +0.101617f, -0.001693f, +0.000100f, +0.000073f}, - {+0.020506f, -0.111990f, -0.001982f, -0.000215f, +0.000054f}, - {-0.026438f, -0.035500f, -0.002626f, +0.000034f, -0.000050f}, - {-0.052495f, +0.162509f, -0.005782f, -0.000307f, -0.000047f}, - {+0.034503f, +0.254582f, -0.002428f, -0.000029f, -0.000037f}, - {-0.007059f, +0.365527f, +0.000861f, +0.000308f, +0.000024f}, - {+0.051840f, +0.110577f, +0.004579f, -0.000471f, +0.000002f} - }, - { - {-0.123354f, -0.454617f, -0.017101f, +0.000408f, +0.000003f}, - {+0.216188f, +0.557670f, +0.033272f, +0.000921f, -0.000010f}, - {+0.060077f, -0.016368f, +0.008130f, +0.000544f, -0.000041f}, - {-0.097698f, +0.063611f, -0.011314f, +0.000334f, -0.000020f}, - {+0.004155f, -0.082194f, +0.000724f, -0.000315f, +0.000015f}, - {+0.061885f, -0.007918f, +0.004267f, -0.000661f, -0.000034f}, - {+0.120251f, +0.108336f, +0.021527f, -0.000454f, +0.000001f}, - {+0.138249f, +0.145446f, +0.014907f, +0.000187f, +0.000021f}, - {+0.010129f, +0.174821f, +0.000225f, -0.000291f, -0.000033f} - }, - { - {+0.286163f, +0.175080f, +0.040522f, -0.000072f, -0.000009f}, - {-0.316113f, -0.262138f, -0.049307f, +0.000066f, +0.000038f}, - {-0.006202f, -0.116156f, -0.000344f, -0.000116f, -0.000074f}, - {+0.026045f, +0.250354f, +0.005697f, +0.000168f, -0.000055f}, - {+0.033061f, -0.037487f, +0.003086f, -0.000057f, +0.000051f}, - {-0.009161f, -0.111428f, +0.002750f, +0.000407f, +0.000055f}, - {-0.050197f, -0.166126f, -0.010372f, +0.000135f, +0.000039f}, - {-0.108124f, -0.227657f, -0.011340f, -0.000057f, -0.000029f}, - {-0.062623f, +0.065189f, -0.003295f, +0.000387f, +0.000001f} - }, - { - {+0.066678f, +0.512159f, +0.009358f, -0.000375f, -0.000002f}, - {-0.128892f, -0.546911f, -0.020182f, -0.000837f, +0.000009f}, - {-0.041244f, -0.065432f, -0.004659f, -0.000466f, +0.000049f}, - {+0.124448f, +0.097696f, +0.018095f, -0.000283f, +0.000027f}, - {-0.039700f, +0.075487f, -0.006824f, +0.000303f, -0.000022f}, - {-0.033671f, -0.064807f, -0.008036f, +0.000540f, +0.000022f}, - {-0.115666f, -0.069551f, -0.016489f, +0.000343f, -0.000004f}, - {-0.044678f, -0.318287f, -0.008724f, -0.000374f, -0.000016f}, - {+0.045915f, -0.096744f, +0.005450f, +0.000336f, +0.000032f} - }, - { - {-0.306654f, -0.062299f, -0.043370f, +0.000070f, +0.000010f}, - {+0.327815f, +0.157084f, +0.053522f, -0.000024f, -0.000042f}, - {+0.020545f, +0.022620f, -0.000196f, -0.000030f, +0.000072f}, - {-0.093582f, -0.234733f, -0.010882f, -0.000285f, +0.000055f}, - {-0.018657f, +0.107686f, -0.002873f, +0.000136f, -0.000051f}, - {+0.022629f, +0.029525f, +0.002254f, -0.000156f, -0.000058f}, - {+0.080228f, +0.235900f, +0.013683f, -0.000069f, -0.000040f}, - {+0.131827f, -0.044535f, +0.015502f, +0.000103f, +0.000031f}, - {+0.019414f, -0.130958f, +0.003490f, -0.000488f, -0.000004f} - }, - { - {-0.003446f, -0.527577f, -0.000418f, +0.000351f, +0.000001f}, - {+0.063671f, +0.564794f, +0.009104f, +0.000762f, -0.000008f}, - {+0.005424f, +0.040112f, +0.004744f, +0.000443f, -0.000057f}, - {-0.104226f, -0.211764f, -0.016606f, +0.000287f, -0.000034f}, - {+0.067397f, -0.027841f, +0.010395f, -0.000286f, +0.000029f}, - {+0.014235f, +0.044128f, +0.001136f, -0.000560f, -0.000010f}, - {+0.112939f, +0.189986f, +0.013999f, -0.000350f, +0.000008f}, - {-0.051770f, +0.234766f, -0.004628f, +0.000261f, +0.000010f}, - {-0.057159f, -0.008653f, -0.009510f, -0.000310f, -0.000032f} - }, - { - {+0.309125f, -0.046398f, +0.043868f, -0.000070f, -0.000010f}, - {-0.337900f, -0.049301f, -0.053004f, -0.000032f, +0.000046f}, - {+0.006452f, +0.038403f, -0.000549f, +0.000028f, -0.000068f}, - {+0.142396f, +0.170693f, +0.019921f, +0.000322f, -0.000053f}, - {-0.012544f, -0.153200f, -0.002399f, -0.000157f, +0.000049f}, - {-0.026935f, -0.020769f, -0.002517f, +0.000142f, +0.000057f}, - {-0.135188f, -0.190554f, -0.017975f, +0.000073f, +0.000042f}, - {-0.083199f, +0.182605f, -0.012518f, -0.000033f, -0.000031f}, - {+0.022452f, +0.113080f, +0.002881f, +0.000561f, +0.000007f} - }, - { - {-0.056550f, +0.514353f, -0.008128f, -0.000326f, +0.000000f}, - {+0.002761f, -0.570850f, -0.000438f, -0.000698f, +0.000005f}, - {-0.005763f, +0.055193f, -0.003144f, -0.000303f, +0.000064f}, - {+0.066858f, +0.287146f, +0.008674f, -0.000271f, +0.000039f}, - {-0.079593f, -0.051699f, -0.009265f, +0.000243f, -0.000035f}, - {+0.004491f, -0.069814f, +0.001757f, +0.000412f, +0.000001f}, - {-0.070466f, -0.289680f, -0.008846f, +0.000325f, -0.000013f}, - {+0.096678f, -0.094366f, +0.010661f, -0.000155f, -0.000007f}, - {+0.041572f, +0.082696f, +0.006577f, +0.000266f, +0.000031f} - }, - { - {-0.298262f, +0.141215f, -0.042908f, +0.000091f, +0.000010f}, - {+0.335616f, -0.061120f, +0.052587f, +0.000136f, -0.000050f}, - {-0.028168f, +0.019948f, -0.003001f, +0.000044f, +0.000065f}, - {-0.179347f, -0.090626f, -0.024448f, -0.000251f, +0.000051f}, - {+0.055697f, +0.153136f, +0.006127f, +0.000099f, -0.000047f}, - {+0.022758f, -0.040841f, +0.001974f, -0.000245f, -0.000056f}, - {+0.171241f, +0.083402f, +0.023385f, -0.000076f, -0.000043f}, - {+0.018087f, -0.211528f, +0.004820f, +0.000028f, +0.000030f}, - {-0.051883f, -0.059963f, -0.007202f, -0.000532f, -0.000011f} - }, - { - {+0.109668f, -0.485328f, +0.016423f, +0.000299f, -0.000001f}, - {-0.064276f, +0.551492f, -0.008554f, +0.000611f, -0.000002f}, - {+0.027762f, -0.066226f, +0.006657f, +0.000180f, -0.000068f}, - {-0.008606f, -0.352413f, -0.000966f, +0.000207f, -0.000045f}, - {+0.061405f, +0.140795f, +0.008634f, -0.000186f, +0.000040f}, - {-0.022602f, +0.028596f, -0.003958f, -0.000252f, +0.000003f}, - {+0.006333f, +0.339254f, -0.001045f, -0.000313f, +0.000017f}, - {-0.095236f, -0.035271f, -0.011532f, +0.000098f, +0.000006f}, - {-0.006892f, -0.129936f, -0.001855f, -0.000288f, -0.000028f} - }, - { - {+0.280162f, -0.222327f, +0.040172f, -0.000132f, -0.000011f}, - {-0.325666f, +0.150573f, -0.051593f, -0.000209f, +0.000054f}, - {+0.028869f, -0.065199f, +0.002958f, -0.000146f, -0.000066f}, - {+0.187456f, -0.052621f, +0.025102f, +0.000202f, -0.000052f}, - {-0.080571f, -0.077938f, -0.010648f, -0.000040f, +0.000047f}, - {-0.004481f, +0.054774f, -0.000402f, +0.000382f, +0.000060f}, - {-0.176395f, +0.061006f, -0.022445f, +0.000083f, +0.000045f}, - {+0.032007f, +0.158843f, +0.002664f, -0.000125f, -0.000033f}, - {+0.057225f, -0.034866f, +0.006728f, +0.000520f, +0.000013f} - }, - { - {-0.158921f, +0.451848f, -0.023918f, -0.000281f, +0.000001f}, - {+0.121553f, -0.536831f, +0.017942f, -0.000578f, -0.000001f}, - {-0.050855f, +0.055529f, -0.008445f, -0.000215f, +0.000075f}, - {-0.052686f, +0.312195f, -0.005219f, -0.000224f, +0.000052f}, - {-0.037110f, -0.141320f, -0.006102f, +0.000195f, -0.000048f}, - {+0.024782f, +0.009783f, +0.004483f, +0.000288f, -0.000009f}, - {+0.063910f, -0.304697f, +0.007623f, +0.000328f, -0.000023f}, - {+0.068609f, +0.100384f, +0.009341f, -0.000091f, -0.000007f}, - {-0.033166f, +0.101342f, -0.001173f, +0.000251f, +0.000026f} - }, - { - {-0.254134f, +0.305063f, -0.036122f, +0.000175f, +0.000012f}, - {+0.313748f, -0.244268f, +0.048706f, +0.000275f, -0.000058f}, - {-0.012267f, +0.112660f, -0.001928f, +0.000238f, +0.000072f}, - {-0.161165f, +0.140763f, -0.024820f, -0.000200f, +0.000054f}, - {+0.090126f, +0.058592f, +0.014503f, +0.000035f, -0.000049f}, - {-0.010917f, -0.042825f, -0.001085f, -0.000524f, -0.000070f}, - {+0.139731f, -0.183781f, +0.020533f, -0.000104f, -0.000047f}, - {-0.056473f, -0.093013f, -0.007395f, +0.000190f, +0.000040f}, - {-0.028362f, +0.108300f, -0.004536f, -0.000507f, -0.000014f} - }, - { - {+0.204108f, -0.397468f, +0.030234f, +0.000284f, -0.000002f}, - {-0.186187f, +0.523327f, -0.027065f, +0.000548f, +0.000002f}, - {+0.063644f, -0.004588f, +0.010914f, +0.000342f, -0.000092f}, - {+0.084172f, -0.238464f, +0.012067f, +0.000307f, -0.000066f}, - {+0.023241f, +0.163547f, +0.001737f, -0.000268f, +0.000061f}, - {-0.017633f, -0.031273f, -0.004558f, -0.000453f, +0.000024f}, - {-0.103701f, +0.192462f, -0.015036f, -0.000326f, +0.000032f}, - {-0.040508f, -0.117502f, -0.005435f, +0.000218f, +0.000003f}, - {+0.044739f, -0.003358f, +0.002673f, -0.000166f, -0.000026f} - }, - { - {+0.217925f, -0.374764f, +0.031310f, -0.000194f, -0.000015f}, - {-0.287194f, +0.371793f, -0.043606f, -0.000298f, +0.000065f}, - {-0.012378f, -0.121133f, -0.001692f, -0.000139f, -0.000076f}, - {+0.138854f, -0.153518f, +0.021173f, +0.000296f, -0.000054f}, - {-0.110078f, -0.041091f, -0.015691f, -0.000117f, +0.000048f}, - {+0.016824f, +0.020994f, +0.002433f, +0.000470f, +0.000080f}, - {-0.093179f, +0.207425f, -0.014155f, +0.000078f, +0.000048f}, - {+0.066586f, +0.047692f, +0.008958f, -0.000170f, -0.000050f}, - {-0.006034f, -0.079321f, +0.001680f, +0.000546f, +0.000014f} - }, - { - {-0.239100f, +0.326388f, -0.035676f, -0.000310f, +0.000005f}, - {+0.254019f, -0.457019f, +0.035395f, -0.000472f, -0.000004f}, - {-0.063172f, -0.043743f, -0.010677f, -0.000446f, +0.000122f}, - {-0.106250f, +0.224976f, -0.016160f, -0.000331f, +0.000087f}, - {+0.006588f, -0.220018f, +0.002089f, +0.000280f, -0.000081f}, - {+0.012847f, +0.026665f, +0.004159f, +0.000613f, -0.000053f}, - {+0.116434f, -0.116659f, +0.017836f, +0.000308f, -0.000043f}, - {+0.014851f, +0.127471f, +0.001839f, -0.000426f, +0.000008f}, - {-0.024363f, -0.047415f, -0.002156f, +0.000076f, +0.000029f} - }, - { - {-0.177651f, +0.419626f, -0.025372f, +0.000189f, +0.000018f}, - {+0.234856f, -0.487730f, +0.036693f, +0.000275f, -0.000076f}, - {+0.036507f, +0.108100f, +0.004077f, -0.000196f, +0.000068f}, - {-0.123472f, +0.198845f, -0.018454f, -0.000539f, +0.000045f}, - {+0.120851f, -0.044023f, +0.017124f, +0.000326f, -0.000038f}, - {-0.019744f, -0.023127f, -0.003003f, -0.000144f, -0.000080f}, - {+0.054985f, -0.211321f, +0.008525f, +0.000002f, -0.000046f}, - {-0.067840f, +0.000644f, -0.008680f, +0.000062f, +0.000059f}, - {+0.013438f, +0.012637f, +0.000624f, -0.000676f, -0.000018f} - }, - { - {+0.265046f, -0.258984f, +0.039613f, +0.000315f, -0.000010f}, - {-0.305263f, +0.341002f, -0.042929f, +0.000320f, +0.000009f}, - {+0.052493f, +0.082191f, +0.010230f, +0.000306f, -0.000162f}, - {+0.135578f, -0.200816f, +0.020288f, +0.000195f, -0.000112f}, - {-0.047909f, +0.214878f, -0.007490f, -0.000138f, +0.000104f}, - {-0.013632f, -0.032324f, -0.004221f, -0.000548f, +0.000093f}, - {-0.118924f, +0.057091f, -0.018445f, -0.000261f, +0.000056f}, - {+0.008331f, -0.114878f, +0.000663f, +0.000507f, -0.000028f}, - {+0.005413f, +0.022808f, -0.000439f, -0.000059f, -0.000035f} - }, - { - {+0.136435f, -0.454829f, +0.019582f, -0.000149f, -0.000018f}, - {-0.168461f, +0.553033f, -0.027068f, -0.000281f, +0.000094f}, - {-0.056383f, -0.088168f, -0.008472f, +0.000590f, -0.000037f}, - {+0.096992f, -0.262712f, +0.013318f, +0.000816f, -0.000021f}, - {-0.110234f, +0.118824f, -0.015813f, -0.000528f, +0.000014f}, - {+0.029948f, +0.036351f, +0.005263f, -0.000282f, +0.000056f}, - {-0.020326f, +0.210405f, -0.002631f, -0.000079f, +0.000039f}, - {+0.060030f, -0.032820f, +0.009213f, +0.000193f, -0.000059f}, - {-0.003943f, +0.005977f, -0.000375f, +0.000898f, +0.000028f} - }, - { - {-0.284355f, +0.190433f, -0.042800f, -0.000266f, +0.000017f}, - {+0.335277f, -0.219226f, +0.046865f, -0.000105f, -0.000022f}, - {-0.036478f, -0.124061f, -0.005694f, +0.000344f, +0.000198f}, - {-0.163243f, +0.134561f, -0.022257f, +0.000183f, +0.000132f}, - {+0.083868f, -0.178051f, +0.011964f, -0.000280f, -0.000122f}, - {+0.010723f, +0.070555f, +0.001815f, -0.000022f, -0.000132f}, - {+0.111861f, +0.009495f, +0.016549f, +0.000135f, -0.000069f}, - {-0.022143f, +0.095016f, -0.003757f, -0.000379f, +0.000052f}, - {-0.000565f, +0.002446f, +0.001442f, +0.000102f, +0.000039f} - }, - { - {-0.095291f, +0.479278f, -0.013467f, +0.000098f, +0.000016f}, - {+0.099306f, -0.582261f, +0.017486f, +0.000468f, -0.000116f}, - {+0.078355f, +0.049439f, +0.008412f, -0.000772f, -0.000023f}, - {-0.051414f, +0.305039f, -0.008849f, -0.000882f, -0.000019f}, - {+0.082995f, -0.177822f, +0.013237f, +0.000567f, +0.000026f}, - {-0.049222f, -0.017872f, -0.004795f, +0.000539f, -0.000005f}, - {-0.011696f, -0.179076f, -0.000545f, +0.000092f, -0.000026f}, - {-0.054786f, +0.044185f, -0.008075f, -0.000456f, +0.000046f}, - {-0.005431f, -0.002236f, -0.000119f, -0.000987f, -0.000046f} - }, - { - {+0.300035f, -0.126686f, +0.045279f, +0.000141f, -0.000023f}, - {-0.347527f, +0.104803f, -0.049661f, -0.000162f, +0.000050f}, - {+0.000140f, +0.170954f, +0.002869f, -0.001398f, -0.000210f}, - {+0.165631f, -0.028348f, +0.023643f, -0.000777f, -0.000136f}, - {-0.103480f, +0.108513f, -0.015479f, +0.000834f, +0.000124f}, - {+0.013480f, -0.114650f, -0.000763f, +0.001025f, +0.000149f}, - {-0.089040f, -0.060481f, -0.014574f, +0.000082f, +0.000079f}, - {+0.036486f, -0.097396f, +0.006421f, +0.000002f, -0.000073f}, - {+0.003333f, -0.016091f, -0.002020f, -0.000329f, -0.000034f} - }, - { - {+0.051566f, -0.506796f, +0.007039f, -0.000099f, -0.000010f}, - {-0.033731f, +0.589122f, -0.007210f, -0.000795f, +0.000134f}, - {-0.079279f, +0.049325f, -0.008393f, +0.000023f, +0.000100f}, - {+0.010994f, -0.265800f, +0.003418f, +0.000397f, +0.000069f}, - {-0.052364f, +0.186418f, -0.009164f, -0.000026f, -0.000073f}, - {+0.052053f, -0.056265f, +0.005015f, +0.000066f, -0.000065f}, - {+0.026200f, +0.116741f, +0.002983f, +0.000008f, +0.000008f}, - {+0.048119f, -0.079713f, +0.006644f, +0.000374f, -0.000021f}, - {+0.010900f, -0.005754f, +0.000987f, +0.000869f, +0.000068f} - }, - { - {-0.311437f, +0.048951f, -0.046976f, +0.000118f, +0.000027f}, - {+0.349598f, +0.000051f, +0.050374f, +0.000038f, -0.000095f}, - {+0.040613f, -0.137831f, -0.000066f, +0.002700f, +0.000181f}, - {-0.149052f, -0.019968f, -0.023093f, +0.001262f, +0.000115f}, - {+0.107473f, -0.058841f, +0.017699f, -0.001256f, -0.000101f}, - {-0.043140f, +0.091871f, -0.000478f, -0.002412f, -0.000129f}, - {+0.064483f, +0.059569f, +0.011301f, -0.000210f, -0.000082f}, - {-0.054255f, +0.077805f, -0.009915f, +0.000915f, +0.000081f}, - {-0.008263f, +0.025078f, +0.001271f, +0.000578f, +0.000014f} - }, - { - {-0.002478f, +0.521278f, -0.000544f, +0.000189f, +0.000002f}, - {-0.031629f, -0.587979f, -0.001886f, +0.001424f, -0.000137f}, - {+0.053320f, -0.118505f, +0.004875f, +0.003174f, -0.000173f}, - {+0.008995f, +0.224389f, +0.001153f, +0.001756f, -0.000113f}, - {+0.029482f, -0.180110f, +0.004281f, -0.002087f, +0.000115f}, - {-0.033134f, +0.107741f, -0.001943f, -0.002753f, +0.000132f}, - {-0.023463f, -0.074570f, -0.002999f, -0.000562f, +0.000011f}, - {-0.031477f, +0.111590f, -0.005933f, +0.000350f, -0.000010f}, - {-0.015016f, +0.015277f, -0.001484f, -0.000128f, -0.000086f} + {+0.018159f, +0.985146f, +0.240506f}, + {-0.077046f, +0.024713f, -0.260411f}, + {+0.000593f, +0.132269f, +0.000009f}, + {+0.009213f, +0.054471f, +0.004257f}, + {-0.039823f, +0.044599f, +0.001606f}, + {-0.011090f, +0.028094f, -0.011739f}, + {-0.057613f, +0.083209f, +0.004522f}, + {+0.010244f, +0.028373f, -0.010969f}, + {-0.107601f, +0.182275f, +0.052385f} + }, + { + {-0.152534f, -0.329898f, -0.242342f}, + {+0.209786f, +1.273585f, +0.112026f}, + {-0.011413f, +0.080591f, -0.013524f}, + {-0.034221f, +0.013783f, +0.008826f}, + {+0.012372f, -0.014808f, -0.038195f}, + {-0.003235f, -0.083338f, -0.068446f}, + {+0.003314f, -0.032912f, -0.065265f}, + {+0.003322f, +0.076317f, +0.007937f}, + {-0.015189f, -0.220191f, -0.130843f} + }, + { + {-0.023093f, -0.558938f, -0.150964f}, + {+0.270176f, +0.589966f, +0.359432f}, + {-0.003260f, +0.097037f, -0.014970f}, + {-0.058519f, +0.107799f, -0.014627f}, + {+0.084143f, -0.174088f, +0.006734f}, + {+0.035814f, -0.281769f, +0.006166f}, + {+0.116511f, -0.307921f, +0.020292f}, + {-0.013401f, +0.086307f, +0.012981f}, + {+0.209526f, -0.554513f, -0.048661f} + }, + { + {+0.261551f, +0.304347f, +0.114032f}, + {-0.250896f, -0.779633f, -0.070356f}, + {+0.023786f, +0.088663f, -0.030815f}, + {+0.003407f, +0.082081f, -0.041209f}, + {+0.062118f, -0.047824f, +0.057239f}, + {+0.026013f, -0.155692f, +0.065882f}, + {+0.127095f, -0.164040f, +0.077176f}, + {-0.022006f, +0.035999f, -0.005698f}, + {+0.327951f, -0.045215f, +0.125831f} + }, + { + {+0.359497f, +0.205525f, +0.109865f}, + {-0.745384f, -0.051437f, -0.216054f}, + {+0.066207f, -0.076438f, +0.024748f}, + {+0.143496f, -0.123266f, +0.007838f}, + {-0.098368f, +0.139294f, +0.014972f}, + {-0.065224f, +0.122143f, -0.029816f}, + {-0.019520f, +0.163808f, -0.024174f}, + {+0.008568f, -0.024216f, +0.013284f}, + {+0.111141f, +0.311803f, +0.021197f} + }, + { + {+0.165159f, -0.254129f, -0.025534f}, + {-0.780421f, +0.408205f, -0.025264f}, + {+0.043262f, -0.082839f, +0.025956f}, + {+0.214774f, -0.021619f, +0.026192f}, + {-0.266921f, -0.073753f, -0.026414f}, + {-0.110056f, +0.068805f, -0.038706f}, + {-0.162323f, +0.018037f, -0.046919f}, + {+0.046582f, -0.024241f, +0.003856f}, + {-0.254154f, -0.105995f, -0.060073f} + }, + { + {-0.177496f, +0.069944f, -0.070544f}, + {-0.384878f, -0.205067f, +0.111476f}, + {-0.035734f, +0.067378f, -0.014549f}, + {+0.125583f, +0.062055f, +0.008649f}, + {-0.294346f, -0.048254f, -0.026299f}, + {-0.090207f, -0.084523f, +0.015326f}, + {-0.211714f, -0.100002f, +0.007755f}, + {+0.078344f, -0.022510f, -0.004774f}, + {-0.527842f, -0.045905f, -0.024578f} + }, + { + {-0.463362f, +0.056885f, -0.021761f}, + {+0.150954f, -0.026543f, +0.068293f}, + {-0.101521f, +0.000813f, -0.025478f}, + {-0.095046f, -0.089523f, -0.003261f}, + {-0.134616f, +0.104561f, -0.001013f}, + {-0.059105f, -0.025388f, +0.028020f}, + {-0.181070f, -0.006996f, +0.032275f}, + {+0.082036f, -0.002388f, +0.001840f}, + {-0.586330f, +0.048806f, +0.016554f} + }, + { + {-0.592381f, -0.044571f, +0.029549f}, + {+0.576892f, +0.036976f, -0.022220f}, + {-0.119596f, -0.060394f, -0.001555f}, + {-0.338453f, +0.063985f, -0.014668f}, + {+0.125238f, -0.093159f, +0.021501f}, + {-0.045169f, +0.044028f, -0.000433f}, + {-0.115198f, +0.025252f, +0.004920f}, + {+0.041077f, +0.008697f, +0.004995f}, + {-0.438497f, -0.055561f, +0.020980f} + }, + { + {-0.599054f, -0.014356f, +0.032985f}, + {+0.822874f, +0.044354f, -0.046136f}, + {-0.117506f, +0.008009f, +0.019868f}, + {-0.479925f, +0.018761f, -0.007799f}, + {+0.339581f, +0.001799f, +0.018360f}, + {-0.028531f, +0.004096f, -0.014580f}, + {-0.035532f, +0.016131f, -0.009871f}, + {-0.031577f, -0.038412f, +0.000988f}, + {-0.188266f, +0.051427f, +0.014971f} + }, + { + {-0.558565f, +0.027629f, +0.008677f}, + {+0.934558f, -0.055883f, -0.019701f}, + {-0.143536f, +0.040687f, +0.009496f}, + {-0.475498f, -0.046650f, +0.012347f}, + {+0.418986f, +0.046808f, -0.009187f}, + {+0.019973f, -0.045258f, -0.001389f}, + {+0.040837f, -0.027615f, -0.004137f}, + {-0.104086f, +0.015540f, -0.006688f}, + {+0.045132f, -0.020688f, +0.004131f} + }, + { + {-0.508817f, +0.002572f, -0.006006f}, + {+0.966334f, +0.010598f, -0.000935f}, + {-0.200114f, -0.021501f, -0.002245f}, + {-0.374199f, +0.021235f, +0.015875f}, + {+0.383236f, -0.011504f, -0.019281f}, + {+0.101681f, +0.007702f, +0.004459f}, + {+0.098607f, +0.009824f, -0.000170f}, + {-0.142186f, +0.015367f, -0.000073f}, + {+0.202499f, +0.007942f, -0.007850f} + }, + { + {-0.449816f, -0.025700f, -0.002766f}, + {+0.942805f, +0.019015f, -0.002630f}, + {-0.251515f, +0.005009f, -0.000037f}, + {-0.247529f, -0.018163f, +0.007953f}, + {+0.297646f, +0.008359f, -0.008978f}, + {+0.194833f, -0.010293f, -0.006773f}, + {+0.127610f, -0.005400f, -0.000110f}, + {-0.141062f, -0.005988f, +0.007030f}, + {+0.285592f, -0.008291f, -0.012555f} + }, + { + {-0.376168f, +0.026055f, +0.004627f}, + {+0.871841f, -0.021874f, -0.006470f}, + {-0.251474f, +0.012379f, +0.004839f}, + {-0.143351f, +0.003085f, +0.000557f}, + {+0.213031f, -0.008846f, -0.002525f}, + {+0.266224f, +0.023397f, -0.007678f}, + {+0.122414f, -0.005951f, +0.000933f}, + {-0.115352f, -0.004480f, +0.001947f}, + {+0.318209f, +0.018171f, -0.006837f} + }, + { + {-0.293873f, -0.014103f, +0.005564f}, + {+0.763509f, +0.026484f, -0.005957f}, + {-0.167339f, -0.021635f, +0.004681f}, + {-0.071079f, -0.008355f, -0.004673f}, + {+0.149092f, +0.004738f, +0.000445f}, + {+0.269948f, -0.002632f, -0.000196f}, + {+0.088484f, +0.013962f, +0.000022f}, + {-0.080315f, -0.009623f, -0.002700f}, + {+0.315546f, +0.000498f, +0.000137f} + }, + { + {-0.214030f, +0.010451f, +0.001827f}, + {+0.638609f, -0.024424f, -0.004195f}, + {-0.000480f, +0.033426f, -0.002795f}, + {-0.011678f, +0.017775f, -0.002438f}, + {+0.092630f, -0.011217f, +0.001499f}, + {+0.179494f, -0.027872f, +0.004886f}, + {+0.049375f, -0.006195f, +0.000322f}, + {-0.050886f, +0.014806f, +0.001580f}, + {+0.284102f, -0.013452f, -0.000223f} + }, + { + {-0.142407f, -0.012908f, -0.000129f}, + {+0.521031f, +0.021513f, -0.002424f}, + {+0.212730f, -0.053828f, -0.007313f}, + {+0.050092f, -0.009707f, -0.001567f}, + {+0.022713f, +0.014891f, +0.001899f}, + {+0.013352f, +0.051652f, +0.004824f}, + {+0.034982f, -0.000584f, +0.002038f}, + {-0.037735f, -0.000643f, +0.005700f}, + {+0.234664f, +0.015884f, -0.002619f} + }, + { + {-0.078162f, +0.013149f, +0.000240f}, + {+0.425304f, -0.016123f, -0.001883f}, + {+0.408229f, +0.052323f, -0.001957f}, + {+0.116415f, +0.013525f, -0.004497f}, + {-0.067314f, -0.020251f, +0.003762f}, + {-0.167553f, -0.051767f, -0.000869f}, + {+0.068137f, +0.009479f, +0.001235f}, + {-0.034203f, -0.008399f, +0.003763f}, + {+0.180796f, -0.011205f, -0.003598f} + }, + { + {-0.016750f, -0.012127f, +0.000498f}, + {+0.353965f, +0.008335f, -0.000653f}, + {+0.518342f, -0.011173f, +0.002964f}, + {+0.177026f, -0.019969f, -0.002705f}, + {-0.164814f, +0.026646f, +0.003238f}, + {-0.286213f, +0.012718f, -0.003816f}, + {+0.155640f, -0.020546f, -0.001850f}, + {-0.016416f, +0.003918f, -0.001774f}, + {+0.133919f, +0.003314f, -0.001822f} + }, + { + {+0.046182f, +0.012351f, -0.000034f}, + {+0.298885f, -0.009039f, +0.000810f}, + {+0.511610f, -0.032188f, -0.002291f}, + {+0.211380f, +0.005455f, +0.000933f}, + {-0.241218f, -0.015123f, +0.001103f}, + {-0.293508f, +0.029470f, +0.003051f}, + {+0.280548f, +0.030234f, -0.004368f}, + {+0.041260f, +0.018979f, -0.004541f}, + {+0.098998f, +0.002094f, +0.002904f} + }, + { + {+0.111605f, -0.013530f, -0.000652f}, + {+0.246690f, +0.016108f, -0.001020f}, + {+0.413977f, +0.038179f, -0.009520f}, + {+0.203190f, +0.017508f, -0.002191f}, + {-0.268601f, -0.003682f, +0.001755f}, + {-0.196136f, -0.036857f, +0.009761f}, + {+0.402137f, -0.026686f, -0.005055f}, + {+0.145035f, -0.035432f, -0.001365f}, + {+0.074946f, +0.007868f, +0.004954f} + }, + { + {+0.176108f, +0.013431f, -0.000958f}, + {+0.185298f, -0.016846f, -0.004677f}, + {+0.286889f, -0.019450f, -0.007487f}, + {+0.153787f, -0.015814f, -0.006505f}, + {-0.239195f, +0.011851f, +0.001930f}, + {-0.042102f, +0.023553f, +0.004947f}, + {+0.470133f, +0.012898f, -0.003624f}, + {+0.270107f, +0.025928f, -0.000154f}, + {+0.059116f, -0.020434f, -0.003101f} + }, + { + {+0.234033f, -0.013522f, -0.000160f}, + {+0.105917f, +0.008837f, -0.002769f}, + {+0.184987f, +0.008247f, -0.000624f}, + {+0.076510f, +0.005900f, -0.001804f}, + {-0.166708f, -0.022644f, +0.001485f}, + {+0.112604f, -0.020438f, -0.005184f}, + {+0.450824f, +0.006092f, +0.002002f}, + {+0.374333f, -0.013645f, -0.004183f}, + {+0.050668f, -0.002470f, -0.009849f} + }, + { + {+0.280701f, +0.008633f, +0.001045f}, + {+0.002220f, -0.016553f, +0.003998f}, + {+0.131643f, -0.003842f, +0.001872f}, + {-0.015690f, -0.016479f, +0.005047f}, + {-0.077685f, +0.023492f, +0.003551f}, + {+0.223388f, +0.024340f, -0.007042f}, + {+0.346787f, -0.042038f, +0.003586f}, + {+0.418985f, +0.005219f, -0.005591f}, + {+0.040023f, +0.024273f, +0.000362f} + }, + { + {+0.315972f, -0.002222f, +0.000114f}, + {-0.123110f, +0.036764f, +0.004764f}, + {+0.119199f, -0.002064f, +0.000988f}, + {-0.106689f, +0.025325f, +0.004605f}, + {+0.000310f, -0.007517f, +0.002748f}, + {+0.262374f, -0.010338f, -0.000067f}, + {+0.204029f, +0.052292f, -0.005305f}, + {+0.380172f, +0.016758f, -0.003741f}, + {+0.003388f, +0.008217f, +0.011667f} + }, + { + {+0.346296f, +0.003536f, -0.001898f}, + {-0.248976f, -0.036524f, -0.001389f}, + {+0.120849f, +0.002931f, +0.000722f}, + {-0.173186f, -0.016622f, +0.000289f}, + {+0.054827f, +0.000181f, -0.002418f}, + {+0.225358f, -0.023135f, +0.002820f}, + {+0.091375f, -0.014867f, -0.010230f}, + {+0.260139f, -0.034357f, -0.002468f}, + {-0.068405f, -0.042485f, +0.005111f} + }, + { + {+0.379862f, -0.009494f, -0.001961f}, + {-0.345947f, +0.013885f, -0.004347f}, + {+0.108945f, +0.001609f, +0.002277f}, + {-0.194971f, -0.005237f, -0.000216f}, + {+0.090631f, -0.007307f, -0.004497f}, + {+0.139916f, +0.036851f, -0.003429f}, + {+0.049457f, -0.016676f, -0.004125f}, + {+0.089658f, +0.040648f, -0.001276f}, + {-0.147747f, +0.028109f, -0.006357f} + }, + { + {+0.419521f, +0.011992f, -0.000293f}, + {-0.399888f, +0.006995f, +0.000613f}, + {+0.071268f, -0.013451f, +0.003383f}, + {-0.169244f, +0.016170f, +0.002968f}, + {+0.116230f, +0.009802f, -0.001756f}, + {+0.053621f, -0.017175f, -0.008163f}, + {+0.065166f, +0.025359f, +0.005381f}, + {-0.086447f, -0.037823f, -0.001051f}, + {-0.194782f, +0.007204f, -0.005393f} + }, + { + {+0.461674f, -0.009238f, +0.000744f}, + {-0.422873f, -0.002942f, +0.006024f}, + {+0.017965f, +0.019932f, +0.001068f}, + {-0.112940f, -0.014296f, +0.003691f}, + {+0.135675f, -0.004946f, +0.000913f}, + {+0.001359f, -0.007810f, -0.003619f}, + {+0.090834f, -0.000688f, +0.008234f}, + {-0.227027f, +0.020653f, -0.000262f}, + {-0.193552f, -0.020886f, +0.003761f} + }, + { + {+0.500543f, +0.004460f, -0.000339f}, + {-0.438946f, -0.008173f, +0.005382f}, + {-0.025063f, -0.012096f, -0.002727f}, + {-0.048264f, +0.016297f, +0.004137f}, + {+0.148356f, -0.006714f, -0.001928f}, + {-0.016069f, +0.011271f, +0.004203f}, + {+0.085225f, -0.019738f, +0.001763f}, + {-0.310418f, -0.002136f, +0.003576f}, + {-0.158213f, +0.011793f, +0.008536f} + }, + { + {+0.533110f, -0.005084f, -0.001776f}, + {-0.463561f, +0.015347f, +0.000549f}, + {-0.035070f, -0.007804f, -0.002842f}, + {+0.008595f, -0.003050f, +0.002916f}, + {+0.153491f, -0.002287f, -0.004867f}, + {-0.021318f, -0.000337f, +0.007722f}, + {+0.040490f, +0.023364f, -0.005685f}, + {-0.339640f, -0.004014f, +0.007635f}, + {-0.113068f, +0.002471f, +0.003970f} + }, + { + {+0.559507f, +0.006521f, -0.001337f}, + {-0.495821f, -0.006508f, -0.001808f}, + {-0.009393f, +0.020033f, +0.002230f}, + {+0.057093f, +0.005006f, -0.000599f}, + {+0.147824f, +0.005127f, -0.001599f}, + {-0.035200f, -0.017556f, +0.003623f}, + {-0.026148f, -0.010270f, -0.006517f}, + {-0.331865f, -0.002383f, +0.006123f}, + {-0.069791f, +0.006016f, -0.000948f} + }, + { + {+0.580524f, -0.004095f, -0.000494f}, + {-0.527187f, +0.003574f, -0.000131f}, + {+0.034392f, -0.012275f, +0.006324f}, + {+0.108521f, -0.008134f, -0.002780f}, + {+0.124651f, +0.003736f, +0.002434f}, + {-0.058607f, +0.013665f, -0.003392f}, + {-0.096848f, +0.005058f, -0.001324f}, + {-0.301438f, -0.004261f, +0.001796f}, + {-0.026983f, -0.008052f, -0.001333f} + }, + { + {+0.597812f, +0.002656f, -0.000522f}, + {-0.552363f, -0.003313f, +0.001014f}, + {+0.075214f, -0.005271f, +0.002238f}, + {+0.170571f, +0.018162f, -0.002847f}, + {+0.083934f, -0.017743f, +0.001407f}, + {-0.076846f, +0.004888f, -0.003003f}, + {-0.166265f, -0.007573f, +0.004024f}, + {-0.256165f, +0.011081f, +0.000547f}, + {+0.019750f, +0.010957f, -0.001327f} + }, + { + {+0.613921f, -0.002403f, -0.000945f}, + {-0.571681f, +0.004061f, +0.000722f}, + {+0.106010f, -0.000496f, -0.004030f}, + {+0.238299f, -0.018447f, -0.000821f}, + {+0.038282f, +0.014684f, -0.002501f}, + {-0.080622f, -0.007409f, +0.002126f}, + {-0.235224f, +0.017619f, +0.005449f}, + {-0.203255f, -0.012695f, +0.000929f}, + {+0.070865f, -0.011018f, -0.001639f} + }, + { + {+0.630982f, +0.003698f, -0.001234f}, + {-0.590355f, -0.003219f, +0.000406f}, + {+0.130676f, +0.011921f, -0.002723f}, + {+0.295756f, +0.013516f, +0.001143f}, + {+0.005092f, -0.003596f, -0.003545f}, + {-0.072459f, -0.000272f, +0.002800f}, + {-0.299780f, -0.022696f, +0.001211f}, + {-0.150313f, +0.011501f, +0.001280f}, + {+0.118367f, +0.011753f, -0.001359f} + }, + { + {+0.649444f, -0.004884f, -0.000984f}, + {-0.615054f, +0.005408f, +0.000735f}, + {+0.149940f, -0.006453f, +0.001164f}, + {+0.328584f, -0.000395f, +0.001275f}, + {-0.008438f, -0.005199f, -0.001454f}, + {-0.058218f, +0.000064f, -0.000029f}, + {-0.346981f, +0.007071f, -0.001972f}, + {-0.104327f, -0.007957f, +0.001209f}, + {+0.149121f, -0.004220f, -0.000790f} + }, + { + {+0.667442f, +0.004369f, -0.000509f}, + {-0.649912f, -0.008091f, +0.001108f}, + {+0.160941f, -0.003110f, +0.000358f}, + {+0.335024f, -0.007340f, -0.001370f}, + {-0.010516f, +0.004138f, +0.001016f}, + {-0.042559f, +0.003980f, -0.001022f}, + {-0.366888f, +0.007198f, +0.001062f}, + {-0.068558f, +0.004871f, +0.000722f}, + {+0.153026f, -0.002598f, -0.000878f} + }, + { + {+0.682283f, -0.002839f, -0.000182f}, + {-0.693711f, +0.010677f, +0.001270f}, + {+0.163061f, +0.001749f, -0.001941f}, + {+0.327679f, +0.004372f, -0.003551f}, + {-0.017128f, +0.001449f, +0.002254f}, + {-0.029387f, -0.003404f, -0.000254f}, + {-0.363800f, -0.005157f, +0.004344f}, + {-0.041106f, -0.002019f, -0.000551f}, + {+0.130106f, +0.008236f, -0.000670f} + }, + { + {+0.692437f, +0.000095f, -0.000537f}, + {-0.740634f, -0.011604f, +0.000655f}, + {+0.157996f, +0.002060f, -0.000837f}, + {+0.323158f, +0.005481f, -0.001955f}, + {-0.039932f, -0.012585f, +0.000817f}, + {-0.021634f, +0.000010f, -0.000230f}, + {-0.350228f, -0.000420f, +0.003173f}, + {-0.016658f, +0.005630f, -0.001178f}, + {+0.089943f, -0.012079f, -0.001069f} + }, + { + {+0.698662f, +0.000230f, -0.001425f}, + {-0.782838f, +0.007193f, +0.000387f}, + {+0.147754f, +0.002321f, +0.001054f}, + {+0.330876f, -0.007440f, +0.001734f}, + {-0.078436f, +0.014161f, -0.002562f}, + {-0.020690f, +0.001093f, -0.000930f}, + {-0.336354f, +0.000244f, +0.000495f}, + {+0.007725f, -0.004802f, -0.001236f}, + {+0.047620f, +0.008277f, -0.001417f} + }, + { + {+0.703246f, +0.002409f, -0.001250f}, + {-0.814977f, -0.003204f, +0.001382f}, + {+0.135217f, -0.009385f, -0.001169f}, + {+0.350177f, -0.000838f, +0.000877f}, + {-0.122288f, -0.004476f, -0.002216f}, + {-0.025713f, +0.002869f, +0.000621f}, + {-0.325782f, +0.004520f, +0.000748f}, + {+0.030650f, +0.008462f, -0.000266f}, + {+0.015647f, -0.003005f, -0.000601f} + }, + { + {+0.707436f, -0.002159f, -0.000184f}, + {-0.836328f, +0.001420f, +0.002805f}, + {+0.124343f, +0.003534f, -0.004617f}, + {+0.377173f, -0.003128f, -0.002966f}, + {-0.162938f, +0.001908f, +0.001890f}, + {-0.034346f, +0.001148f, +0.003196f}, + {-0.317600f, -0.001145f, +0.002065f}, + {+0.047783f, -0.002726f, +0.001091f}, + {-0.001518f, -0.002014f, +0.001386f} + }, + { + {+0.711316f, +0.000190f, +0.000116f}, + {-0.849400f, -0.005461f, +0.002132f}, + {+0.115220f, +0.006522f, -0.002677f}, + {+0.406205f, +0.009733f, -0.003200f}, + {-0.198229f, -0.008830f, +0.003296f}, + {-0.041723f, -0.007295f, +0.001797f}, + {-0.307751f, -0.000513f, +0.001061f}, + {+0.056384f, -0.001852f, +0.000252f}, + {-0.007409f, -0.002688f, +0.001636f} + }, + { + {+0.715564f, +0.000878f, -0.000712f}, + {-0.856145f, +0.001865f, +0.000304f}, + {+0.099717f, +0.000516f, +0.001510f}, + {+0.427792f, -0.008621f, -0.000103f}, + {-0.227122f, +0.009743f, +0.000742f}, + {-0.038969f, -0.000573f, -0.000890f}, + {-0.290500f, -0.003837f, -0.000282f}, + {+0.060351f, +0.002258f, -0.001388f}, + {-0.007102f, +0.000681f, +0.000051f} + }, + { + {+0.721724f, +0.001440f, -0.001419f}, + {-0.857928f, +0.002494f, +0.000723f}, + {+0.068940f, -0.015230f, +0.000407f}, + {+0.432906f, -0.004606f, +0.000685f}, + {-0.246924f, -0.000678f, -0.000115f}, + {-0.019686f, +0.012823f, +0.000958f}, + {-0.263371f, +0.009394f, +0.000248f}, + {+0.066836f, +0.001658f, -0.002275f}, + {-0.003255f, +0.001689f, -0.000037f} + }, + { + {+0.730712f, -0.003910f, -0.000870f}, + {-0.858450f, -0.001220f, +0.001946f}, + {+0.023475f, +0.016216f, -0.003883f}, + {+0.419872f, +0.011121f, -0.002752f}, + {-0.256682f, -0.002820f, +0.002128f}, + {+0.013513f, -0.011639f, +0.004607f}, + {-0.229180f, -0.009683f, +0.001814f}, + {+0.080511f, -0.005798f, -0.001723f}, + {+0.001435f, +0.000756f, -0.000451f} + }, + { + {+0.741590f, +0.003101f, -0.000011f}, + {-0.860726f, +0.000300f, +0.002853f}, + {-0.028493f, -0.003694f, -0.002869f}, + {+0.395211f, -0.003270f, -0.003914f}, + {-0.257602f, -0.001422f, +0.002810f}, + {+0.053057f, +0.000570f, +0.002860f}, + {-0.193999f, +0.002947f, +0.000888f}, + {+0.099824f, +0.006425f, -0.000616f}, + {+0.005522f, +0.002697f, -0.000570f} + }, + { + {+0.752785f, -0.000581f, -0.000328f}, + {-0.864679f, +0.002652f, +0.003144f}, + {-0.079249f, -0.003995f, +0.005777f}, + {+0.366044f, -0.005911f, +0.001913f}, + {-0.251095f, +0.009072f, -0.002248f}, + {+0.092600f, +0.005125f, -0.005522f}, + {-0.162554f, -0.001717f, -0.002557f}, + {+0.119626f, -0.005564f, +0.000516f}, + {+0.008439f, -0.004393f, +0.001712f} + }, + { + {+0.763163f, -0.000862f, -0.002020f}, + {-0.868650f, -0.005188f, +0.001363f}, + {-0.122932f, -0.003612f, +0.014766f}, + {+0.337176f, +0.004705f, +0.011739f}, + {-0.240301f, -0.007676f, -0.011938f}, + {+0.125784f, +0.004581f, -0.013027f}, + {-0.137073f, +0.006965f, -0.003725f}, + {+0.136715f, +0.001962f, +0.001072f}, + {+0.010881f, +0.001506f, +0.004158f} } }; -const float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]= +const float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.036807f, -0.174045f, +0.179146f, +0.002758f, +0.000002f}, - {+0.081675f, -0.202936f, +0.124120f, +0.000184f, -0.000007f}, - {-0.000843f, -0.038970f, +0.052716f, -0.008143f, +0.000125f}, - {-0.004478f, -0.013122f, +0.028558f, -0.008290f, +0.000045f}, - {+0.006316f, -0.012132f, +0.006515f, -0.002119f, -0.000027f}, - {-0.000794f, +0.004296f, +0.005127f, -0.004942f, +0.000100f}, - {+0.010293f, -0.025048f, +0.008939f, -0.001610f, -0.000015f}, - {-0.001111f, -0.008117f, +0.033872f, -0.002789f, -0.000061f}, - {+0.009292f, -0.031334f, +0.001941f, -0.005137f, +0.000092f} - }, - { - {+0.046648f, -0.328217f, -0.004769f, -0.004729f, +0.000002f}, - {-0.078219f, -0.186706f, +0.335495f, -0.010505f, -0.000011f}, - {+0.003389f, -0.028871f, +0.074809f, -0.001736f, +0.000093f}, - {+0.011160f, -0.006841f, +0.031676f, +0.003121f, +0.000038f}, - {-0.007422f, -0.043414f, +0.006982f, +0.001963f, -0.000025f}, - {-0.003254f, -0.003751f, +0.013792f, -0.005415f, +0.000065f}, - {-0.015187f, -0.099887f, -0.012484f, -0.000245f, -0.000014f}, - {-0.000628f, +0.067594f, +0.116266f, +0.000062f, -0.000037f}, - {-0.017876f, -0.212825f, -0.109502f, -0.000434f, +0.000062f} - }, - { - {-0.062391f, -0.298587f, +0.055506f, +0.004604f, -0.000002f}, - {+0.110139f, +0.008656f, -0.076872f, +0.013912f, +0.000006f}, - {-0.006661f, +0.041459f, +0.008680f, +0.005198f, -0.000143f}, - {-0.017346f, +0.064502f, -0.000311f, +0.000229f, -0.000050f}, - {+0.012574f, -0.112476f, +0.042863f, -0.000548f, +0.000028f}, - {+0.008554f, -0.117685f, +0.085746f, +0.010222f, -0.000121f}, - {+0.018386f, -0.231260f, +0.055470f, +0.002605f, +0.000015f}, - {-0.000043f, +0.098076f, +0.074022f, +0.004739f, +0.000074f}, - {+0.020228f, -0.438516f, +0.026318f, +0.002404f, -0.000109f} - }, - { - {+0.087093f, -0.185047f, -0.039795f, -0.001148f, -0.000002f}, - {-0.179442f, -0.138305f, +0.024941f, -0.004193f, +0.000016f}, - {+0.010153f, +0.053373f, -0.028050f, +0.000631f, -0.000056f}, - {+0.022351f, +0.115243f, -0.015706f, +0.000824f, -0.000030f}, - {-0.016881f, -0.188764f, +0.015179f, -0.001478f, +0.000024f}, - {-0.011436f, -0.169671f, +0.055918f, -0.006134f, -0.000022f}, - {-0.007516f, -0.296099f, +0.030173f, -0.003476f, +0.000013f}, - {+0.001835f, +0.047910f, -0.004611f, -0.005834f, +0.000008f}, - {+0.012183f, -0.522145f, -0.012957f, -0.000556f, -0.000026f} - }, - { - {-0.118429f, +0.036347f, +0.008994f, -0.001813f, +0.000002f}, - {+0.195669f, -0.557237f, -0.044782f, -0.005092f, -0.000007f}, - {-0.015263f, +0.077237f, -0.016810f, -0.004030f, +0.000145f}, - {-0.025184f, +0.187315f, -0.016739f, -0.002009f, +0.000052f}, - {+0.002368f, -0.225780f, +0.012360f, +0.001921f, -0.000030f}, - {+0.004974f, -0.160969f, +0.009969f, +0.002830f, +0.000125f}, - {-0.023306f, -0.243341f, -0.007075f, +0.002049f, -0.000015f}, - {+0.002539f, +0.043064f, -0.021665f, +0.000872f, -0.000074f}, - {-0.088704f, -0.392340f, -0.007003f, +0.000682f, +0.000110f} - }, - { - {+0.111405f, +0.324593f, -0.000106f, +0.001284f, +0.000002f}, - {-0.051589f, -0.868735f, +0.017996f, +0.003263f, -0.000021f}, - {+0.016644f, +0.116184f, -0.001320f, +0.001603f, +0.000021f}, - {+0.004222f, +0.242602f, +0.004139f, +0.000694f, +0.000023f}, - {+0.043767f, -0.191695f, -0.013679f, -0.000447f, -0.000023f}, - {+0.015164f, -0.134423f, -0.000808f, -0.001816f, -0.000022f}, - {+0.056350f, -0.114712f, -0.004403f, +0.000262f, -0.000013f}, - {-0.013985f, +0.017892f, -0.014819f, +0.002850f, +0.000020f}, - {+0.155162f, -0.041775f, -0.009744f, -0.001067f, -0.000007f} - }, - { - {-0.005031f, +0.479299f, +0.003719f, +0.000668f, -0.000001f}, - {-0.200078f, -0.617927f, -0.007665f, +0.002820f, +0.000011f}, - {-0.000023f, +0.128657f, +0.013087f, +0.000664f, -0.000135f}, - {+0.058851f, +0.171528f, +0.001838f, +0.000874f, -0.000052f}, - {-0.096474f, -0.013567f, -0.000492f, -0.000745f, +0.000033f}, - {-0.033027f, -0.054815f, -0.011873f, -0.000718f, -0.000112f}, - {-0.056173f, +0.039930f, +0.001299f, -0.001259f, +0.000015f}, - {+0.020372f, -0.043296f, +0.005705f, -0.001029f, +0.000062f}, - {-0.120615f, +0.346286f, -0.013057f, -0.000997f, -0.000098f} - }, - { - {-0.150793f, +0.255763f, -0.018096f, -0.000700f, -0.000003f}, - {+0.305707f, +0.158732f, +0.020717f, -0.002646f, +0.000023f}, - {-0.031522f, +0.078751f, +0.001465f, -0.000649f, +0.000004f}, - {-0.117107f, -0.077176f, -0.004724f, -0.000677f, -0.000018f}, - {+0.093448f, +0.250387f, +0.003900f, +0.000293f, +0.000021f}, - {+0.019351f, +0.028793f, +0.005286f, +0.001746f, +0.000057f}, - {+0.008202f, +0.128064f, +0.008788f, +0.000321f, +0.000014f}, - {-0.007910f, -0.090056f, -0.001122f, -0.000874f, -0.000041f}, - {-0.028598f, +0.475838f, +0.000814f, +0.001596f, +0.000033f} - }, - { - {+0.168446f, -0.229619f, +0.014684f, -0.000669f, +0.000001f}, - {-0.083028f, +0.735157f, -0.014942f, -0.001813f, -0.000016f}, - {+0.038009f, -0.019540f, -0.002379f, +0.000167f, +0.000118f}, - {+0.076227f, -0.357687f, +0.003886f, -0.000171f, +0.000051f}, - {-0.001844f, +0.389834f, -0.002086f, +0.000484f, -0.000036f}, - {+0.023047f, +0.027798f, +0.004234f, +0.000497f, +0.000086f}, - {+0.049557f, +0.071524f, +0.006302f, +0.000906f, -0.000015f}, - {-0.020459f, -0.071010f, -0.006011f, -0.000277f, -0.000043f}, - {+0.164709f, +0.192774f, +0.015494f, +0.000611f, +0.000078f} - }, - { - {+0.032104f, -0.431950f, +0.008160f, +0.000726f, +0.000004f}, - {-0.260971f, +0.444113f, -0.025794f, +0.002256f, -0.000023f}, - {+0.008385f, -0.056100f, +0.003103f, +0.000095f, -0.000018f}, - {+0.067113f, -0.367438f, +0.006254f, +0.000198f, +0.000013f}, - {-0.110994f, +0.232179f, -0.008226f, -0.000230f, -0.000019f}, - {-0.042146f, -0.074633f, -0.011186f, -0.001034f, -0.000080f}, - {-0.054919f, -0.080526f, -0.007215f, -0.000649f, -0.000015f}, - {+0.040307f, +0.016321f, -0.001764f, +0.000829f, +0.000052f}, - {-0.137526f, -0.246324f, -0.007988f, -0.001200f, -0.000047f} - }, - { - {-0.213011f, -0.046980f, -0.025382f, +0.000494f, -0.000002f}, - {+0.288608f, -0.395114f, +0.041290f, +0.001283f, +0.000020f}, - {-0.054132f, +0.049386f, -0.007328f, -0.000057f, -0.000101f}, - {-0.158872f, -0.025219f, -0.014949f, +0.000114f, -0.000051f}, - {+0.121403f, -0.113923f, +0.010204f, -0.000233f, +0.000039f}, - {+0.000083f, -0.147208f, -0.001729f, -0.000936f, -0.000054f}, - {-0.003048f, -0.154788f, -0.006001f, -0.000457f, +0.000017f}, - {-0.025771f, +0.106681f, +0.002198f, +0.000260f, +0.000022f}, - {-0.031294f, -0.392095f, -0.012018f, -0.000574f, -0.000057f} - }, - { - {+0.092561f, +0.424974f, +0.010810f, -0.000681f, -0.000004f}, - {+0.075902f, -0.706014f, +0.007828f, -0.002003f, +0.000022f}, - {+0.013154f, +0.161409f, +0.005603f, -0.000211f, +0.000023f}, - {+0.066254f, +0.312283f, +0.004744f, +0.000026f, -0.000009f}, - {-0.002036f, -0.295824f, +0.002824f, -0.000014f, +0.000016f}, - {+0.060712f, -0.057606f, +0.008012f, +0.000958f, +0.000087f}, - {+0.056082f, -0.061636f, +0.008052f, +0.000524f, +0.000016f}, - {-0.017683f, +0.111805f, -0.002642f, -0.000403f, -0.000052f}, - {+0.146777f, -0.113700f, +0.017959f, +0.001010f, +0.000051f} - }, - { - {+0.185320f, +0.277358f, +0.022712f, -0.000351f, +0.000003f}, - {-0.344646f, -0.053912f, -0.053141f, -0.000939f, -0.000024f}, - {+0.086838f, +0.051841f, +0.006637f, +0.000180f, +0.000089f}, - {+0.105953f, +0.243944f, +0.014187f, -0.000146f, +0.000052f}, - {-0.111669f, -0.123210f, -0.013173f, +0.000233f, -0.000042f}, - {-0.059758f, +0.131270f, -0.005702f, +0.000643f, +0.000024f}, - {-0.036902f, +0.080134f, -0.000673f, +0.000325f, -0.000020f}, - {+0.046052f, +0.010828f, +0.004846f, -0.000246f, -0.000004f}, - {-0.077354f, +0.231910f, -0.006126f, +0.000362f, +0.000039f} - }, - { - {-0.189874f, -0.302002f, -0.024437f, +0.000614f, +0.000004f}, - {+0.115695f, +0.648554f, +0.017187f, +0.001787f, -0.000020f}, - {-0.095557f, -0.230274f, -0.014609f, +0.000114f, -0.000025f}, - {-0.124579f, -0.115101f, -0.017138f, -0.000088f, +0.000005f}, - {+0.076830f, +0.166427f, +0.008366f, +0.000057f, -0.000012f}, - {-0.014099f, +0.211406f, +0.003003f, -0.000568f, -0.000083f}, - {-0.023815f, +0.096932f, -0.005676f, -0.000440f, -0.000016f}, - {-0.021782f, -0.093860f, -0.002871f, +0.000144f, +0.000046f}, - {-0.073734f, +0.238033f, -0.010094f, -0.000798f, -0.000049f} - }, - { - {-0.114426f, -0.412169f, -0.014852f, +0.000236f, -0.000004f}, - {+0.286060f, +0.383093f, +0.046192f, +0.000709f, +0.000026f}, - {-0.046449f, -0.312275f, +0.001217f, -0.000173f, -0.000081f}, - {-0.033813f, -0.256375f, -0.003843f, +0.000097f, -0.000052f}, - {+0.058368f, +0.191934f, +0.007694f, -0.000156f, +0.000044f}, - {+0.082552f, +0.075789f, +0.001514f, -0.000419f, -0.000001f}, - {+0.034473f, +0.003962f, +0.003250f, -0.000222f, +0.000024f}, - {-0.030695f, -0.079541f, -0.002956f, +0.000205f, -0.000008f}, - {+0.109333f, -0.044153f, +0.010252f, -0.000221f, -0.000027f} - }, - { - {+0.243812f, +0.144409f, +0.034010f, -0.000542f, -0.000004f}, - {-0.244934f, -0.430481f, -0.034506f, -0.001609f, +0.000017f}, - {+0.170812f, +0.012823f, +0.017960f, -0.000055f, +0.000026f}, - {+0.131633f, -0.001407f, +0.017629f, +0.000130f, -0.000001f}, - {-0.106876f, -0.065820f, -0.014688f, -0.000058f, +0.000007f}, - {-0.074279f, -0.153828f, -0.004932f, +0.000344f, +0.000072f}, - {+0.015569f, -0.022714f, +0.005207f, +0.000342f, +0.000015f}, - {+0.042274f, +0.032502f, +0.005140f, -0.000141f, -0.000036f}, - {-0.002837f, -0.214678f, +0.001786f, +0.000703f, +0.000045f} - }, - { - {+0.033445f, +0.465385f, +0.003356f, -0.000154f, +0.000005f}, - {-0.178742f, -0.528051f, -0.033152f, -0.000550f, -0.000028f}, - {-0.087971f, +0.405281f, -0.012908f, +0.000193f, +0.000076f}, - {-0.026721f, +0.243121f, -0.004203f, -0.000014f, +0.000052f}, - {+0.002076f, -0.236562f, +0.002162f, +0.000025f, -0.000045f}, - {+0.002032f, -0.267039f, +0.003164f, +0.000247f, -0.000013f}, - {-0.028517f, +0.053584f, -0.006240f, +0.000168f, -0.000027f}, - {+0.008947f, +0.081105f, +0.001162f, -0.000039f, +0.000013f}, - {-0.084445f, -0.084241f, -0.009779f, +0.000091f, +0.000019f} - }, - { - {-0.265151f, +0.001033f, -0.038066f, +0.000492f, +0.000004f}, - {+0.302075f, +0.213979f, +0.045228f, +0.001475f, -0.000016f}, - {-0.119858f, +0.361574f, -0.010750f, +0.000044f, -0.000027f}, - {-0.110652f, +0.115838f, -0.014030f, -0.000216f, -0.000003f}, - {+0.106693f, -0.078792f, +0.012412f, +0.000130f, -0.000002f}, - {+0.068216f, -0.174315f, +0.001858f, -0.000344f, -0.000061f}, - {-0.039397f, +0.042700f, -0.003620f, -0.000322f, -0.000013f}, - {-0.052577f, -0.019393f, -0.009859f, +0.000138f, +0.000029f}, - {+0.042907f, +0.113552f, +0.005000f, -0.000638f, -0.000041f} - }, - { - {+0.045692f, -0.476580f, +0.008546f, +0.000086f, -0.000005f}, - {+0.080587f, +0.555433f, +0.017854f, +0.000450f, +0.000030f}, - {+0.182440f, -0.087182f, +0.017382f, -0.000294f, -0.000073f}, - {+0.075234f, -0.167476f, +0.008676f, +0.000034f, -0.000051f}, - {-0.071029f, +0.192007f, -0.008454f, -0.000011f, +0.000045f}, - {-0.086510f, +0.044174f, -0.003825f, -0.000041f, +0.000021f}, - {+0.075632f, -0.138240f, +0.011735f, -0.000028f, +0.000030f}, - {+0.013949f, -0.129305f, +0.005892f, -0.000040f, -0.000013f}, - {+0.045386f, +0.105892f, +0.005725f, +0.000024f, -0.000013f} - }, - { - {+0.264038f, -0.137768f, +0.037820f, -0.000452f, -0.000003f}, - {-0.327432f, -0.075214f, -0.050477f, -0.001428f, +0.000014f}, - {-0.022770f, -0.385123f, +0.004729f, +0.000100f, +0.000029f}, - {+0.054670f, -0.198426f, +0.007785f, +0.000271f, +0.000006f}, - {-0.049580f, +0.225410f, -0.005863f, -0.000204f, -0.000001f}, - {+0.043237f, +0.226727f, -0.000581f, +0.000235f, +0.000054f}, - {+0.021121f, -0.232475f, -0.003318f, +0.000194f, +0.000010f}, - {+0.068959f, -0.050792f, +0.006419f, -0.000075f, -0.000026f}, - {-0.050269f, -0.045913f, -0.008553f, +0.000508f, +0.000038f} - }, - { - {-0.122605f, +0.455832f, -0.019204f, -0.000024f, +0.000005f}, - {+0.006912f, -0.595107f, -0.002722f, -0.000314f, -0.000031f}, - {-0.131648f, -0.207572f, -0.020072f, +0.000119f, +0.000071f}, - {-0.075587f, -0.001389f, -0.007880f, -0.000200f, +0.000051f}, - {+0.092628f, +0.010795f, +0.009442f, +0.000210f, -0.000045f}, - {+0.034470f, +0.235595f, +0.004153f, +0.000184f, -0.000026f}, - {-0.138101f, +0.003560f, -0.013139f, +0.000044f, -0.000033f}, - {-0.076887f, +0.172735f, -0.011353f, -0.000186f, +0.000014f}, - {-0.018601f, -0.096133f, -0.000488f, -0.000002f, +0.000009f} - }, - { - {-0.239360f, +0.273817f, -0.034391f, +0.000359f, +0.000003f}, - {+0.344438f, -0.077598f, +0.050391f, +0.001368f, -0.000013f}, - {+0.085915f, +0.127791f, +0.009171f, +0.000053f, -0.000030f}, - {-0.003884f, +0.104668f, -0.002926f, -0.000117f, -0.000009f}, - {-0.025938f, -0.166624f, -0.001223f, -0.000030f, +0.000004f}, - {-0.087357f, +0.053855f, -0.006567f, -0.000375f, -0.000050f}, - {+0.079989f, +0.335328f, +0.010537f, -0.000213f, -0.000007f}, - {-0.027119f, +0.254717f, +0.001273f, +0.000328f, +0.000025f}, - {+0.049245f, +0.007836f, +0.007008f, -0.000515f, -0.000036f} - }, - { - {+0.189098f, -0.383414f, +0.028124f, +0.000092f, -0.000006f}, - {-0.108559f, +0.623832f, -0.013156f, +0.000170f, +0.000033f}, - {+0.052357f, +0.172914f, +0.014590f, -0.000154f, -0.000071f}, - {+0.027066f, +0.057228f, +0.004014f, +0.000183f, -0.000051f}, - {-0.042915f, -0.138441f, -0.007131f, -0.000079f, +0.000046f}, - {+0.062416f, -0.169373f, +0.002459f, -0.000150f, +0.000033f}, - {+0.109725f, +0.292825f, +0.008449f, +0.000038f, +0.000034f}, - {+0.124357f, +0.027929f, +0.015491f, +0.000061f, -0.000016f}, - {-0.001095f, +0.082699f, -0.001391f, +0.000112f, -0.000006f} - }, - { - {+0.194740f, -0.370983f, +0.028830f, -0.000424f, -0.000003f}, - {-0.334444f, +0.280705f, -0.047056f, -0.001250f, +0.000011f}, - {-0.070560f, -0.024714f, -0.010185f, -0.000110f, +0.000033f}, - {+0.007889f, +0.031645f, +0.004166f, +0.000046f, +0.000012f}, - {+0.044996f, -0.004394f, +0.003024f, +0.000024f, -0.000007f}, - {+0.022525f, -0.227369f, +0.001642f, +0.000313f, +0.000046f}, - {-0.165185f, -0.117904f, -0.015701f, +0.000142f, +0.000004f}, - {-0.080987f, -0.285489f, -0.008434f, -0.000232f, -0.000025f}, - {-0.049085f, +0.003557f, -0.010651f, +0.000401f, +0.000034f} - }, - { - {-0.234674f, +0.289561f, -0.036001f, +0.000013f, +0.000007f}, - {+0.223672f, -0.578241f, +0.027233f, -0.000092f, -0.000035f}, - {-0.024623f, -0.100323f, -0.004564f, +0.000328f, +0.000072f}, - {+0.017801f, +0.020633f, -0.002076f, -0.000042f, +0.000053f}, - {-0.013115f, +0.081785f, +0.000959f, -0.000079f, -0.000049f}, - {-0.080738f, -0.072886f, -0.004201f, +0.000076f, -0.000042f}, - {-0.002607f, -0.352196f, -0.003911f, -0.000017f, -0.000036f}, - {-0.069172f, -0.307620f, -0.004866f, -0.000006f, +0.000021f}, - {+0.028180f, -0.122432f, +0.007621f, -0.000085f, +0.000003f} - }, - { - {-0.147199f, +0.422160f, -0.022071f, +0.000321f, +0.000003f}, - {+0.267023f, -0.513414f, +0.037707f, +0.001150f, -0.000010f}, - {+0.060495f, +0.031583f, +0.008763f, -0.000093f, -0.000037f}, - {-0.065578f, -0.105960f, -0.010002f, -0.000209f, -0.000017f}, - {-0.014195f, +0.075807f, -0.002631f, +0.000201f, +0.000012f}, - {+0.053647f, +0.122427f, +0.002638f, -0.000093f, -0.000039f}, - {+0.142781f, -0.115711f, +0.024592f, -0.000188f, -0.000001f}, - {+0.149590f, +0.020216f, +0.015264f, -0.000015f, +0.000023f}, - {+0.037239f, -0.118872f, +0.000382f, -0.000458f, -0.000033f} - }, - { - {+0.269441f, -0.218896f, +0.041241f, +0.000004f, -0.000008f}, - {-0.303693f, +0.362352f, -0.037014f, +0.000053f, +0.000037f}, - {+0.007833f, +0.119694f, -0.000960f, -0.000345f, -0.000073f}, - {-0.004355f, -0.200633f, +0.001490f, +0.000103f, -0.000055f}, - {+0.032562f, -0.000305f, +0.004514f, -0.000019f, +0.000051f}, - {+0.017941f, +0.163230f, +0.007036f, -0.000034f, +0.000051f}, - {-0.046904f, +0.177005f, -0.004300f, +0.000147f, +0.000038f}, - {-0.058069f, +0.331227f, -0.002327f, +0.000118f, -0.000026f}, - {-0.065673f, +0.027120f, -0.006378f, +0.000220f, -0.000001f} - }, - { - {+0.096520f, -0.484461f, +0.013741f, -0.000314f, -0.000002f}, - {-0.168182f, +0.564851f, -0.028399f, -0.001136f, +0.000010f}, - {-0.055680f, +0.028246f, -0.005855f, +0.000184f, +0.000045f}, - {+0.118738f, -0.014371f, +0.012220f, +0.000155f, +0.000023f}, - {-0.022063f, -0.085271f, -0.002211f, -0.000137f, -0.000019f}, - {-0.049978f, +0.052230f, -0.005756f, -0.000013f, +0.000028f}, - {-0.111748f, +0.067754f, -0.020811f, +0.000056f, -0.000003f}, - {-0.098929f, +0.266647f, -0.009254f, +0.000013f, -0.000019f}, - {+0.022954f, +0.155435f, -0.001383f, +0.000344f, +0.000033f} - }, - { - {-0.298102f, +0.119927f, -0.044074f, +0.000054f, +0.000009f}, - {+0.324241f, -0.201048f, +0.044886f, +0.000061f, -0.000040f}, - {+0.018875f, -0.083814f, -0.000418f, +0.000398f, +0.000073f}, - {-0.061162f, +0.256472f, -0.008387f, +0.000024f, +0.000055f}, - {-0.028563f, -0.073381f, -0.002819f, -0.000106f, -0.000051f}, - {+0.019828f, -0.052279f, +0.002320f, -0.000130f, -0.000057f}, - {+0.058477f, -0.203321f, +0.012650f, -0.000104f, -0.000040f}, - {+0.133242f, -0.084836f, +0.013242f, -0.000015f, +0.000030f}, - {+0.042678f, +0.121577f, +0.007398f, -0.000185f, -0.000002f} - }, - { - {-0.034897f, +0.521904f, -0.005636f, +0.000275f, +0.000001f}, - {+0.096022f, -0.555951f, +0.014099f, +0.001080f, -0.000009f}, - {+0.022232f, -0.076542f, +0.003659f, -0.000139f, -0.000053f}, - {-0.117964f, +0.166708f, -0.014124f, -0.000190f, -0.000030f}, - {+0.054876f, +0.054232f, +0.005942f, +0.000155f, +0.000026f}, - {+0.020865f, -0.046834f, +0.005114f, +0.000034f, -0.000016f}, - {+0.119090f, -0.116285f, +0.014688f, -0.000066f, +0.000006f}, - {-0.009162f, -0.296851f, +0.001585f, -0.000015f, +0.000013f}, - {-0.057034f, -0.032243f, -0.004358f, -0.000329f, -0.000032f} - }, - { - {+0.309227f, -0.006599f, +0.046261f, -0.000088f, -0.000010f}, - {-0.335689f, +0.108899f, -0.045170f, -0.000116f, +0.000044f}, - {-0.010768f, -0.025357f, +0.000938f, -0.000529f, -0.000070f}, - {+0.120101f, -0.199389f, +0.018645f, -0.000027f, -0.000054f}, - {+0.005167f, +0.128785f, -0.000940f, +0.000138f, +0.000050f}, - {-0.023264f, +0.025419f, -0.006527f, +0.000284f, +0.000058f}, - {-0.107846f, +0.228561f, -0.015701f, +0.000136f, +0.000041f}, - {-0.112356f, -0.131761f, -0.015190f, -0.000104f, -0.000031f}, - {+0.003668f, -0.126548f, +0.000034f, +0.000218f, +0.000005f} - }, - { - {-0.027502f, -0.522603f, -0.003411f, -0.000264f, -0.000000f}, - {-0.030738f, +0.578245f, -0.004213f, -0.001069f, +0.000007f}, - {-0.000609f, -0.013454f, -0.002363f, +0.000076f, +0.000061f}, - {+0.087398f, -0.248212f, +0.011938f, +0.000075f, +0.000037f}, - {-0.076224f, +0.003106f, -0.010057f, -0.000063f, -0.000032f}, - {-0.005937f, +0.057510f, -0.000360f, +0.000077f, +0.000005f}, - {-0.095342f, +0.246056f, -0.013136f, +0.000057f, -0.000011f}, - {+0.080706f, +0.167833f, +0.010054f, +0.000007f, -0.000008f}, - {+0.052615f, -0.051218f, +0.005205f, +0.000238f, +0.000032f} - }, - { - {-0.304352f, -0.097670f, -0.045722f, +0.000119f, +0.000010f}, - {+0.340086f, +0.006265f, +0.046602f, +0.000169f, -0.000048f}, - {-0.020424f, +0.011099f, -0.001667f, +0.000571f, +0.000066f}, - {-0.162423f, +0.138866f, -0.025027f, +0.000093f, +0.000052f}, - {+0.033809f, -0.166438f, +0.006399f, -0.000195f, -0.000048f}, - {+0.027146f, +0.011761f, +0.003177f, -0.000395f, -0.000056f}, - {+0.155957f, -0.140724f, +0.023139f, -0.000149f, -0.000042f}, - {+0.050658f, +0.213522f, +0.006115f, +0.000088f, +0.000030f}, - {-0.039762f, +0.093271f, -0.004720f, -0.000234f, -0.000009f} - }, - { - {+0.084174f, +0.498153f, +0.011738f, +0.000258f, -0.000001f}, - {-0.034060f, -0.568731f, -0.004971f, +0.001035f, -0.000004f}, - {+0.017008f, +0.063888f, +0.000389f, +0.000004f, -0.000066f}, - {-0.040634f, +0.328420f, -0.004057f, -0.000038f, -0.000042f}, - {+0.073934f, -0.106271f, +0.009079f, +0.000021f, +0.000038f}, - {-0.016227f, -0.051899f, +0.000373f, -0.000148f, +0.000001f}, - {+0.040260f, -0.318605f, +0.006025f, -0.000077f, +0.000015f}, - {-0.100959f, -0.021877f, -0.014425f, +0.000114f, +0.000006f}, - {-0.027106f, +0.113757f, -0.001462f, -0.000158f, -0.000030f} - }, - { - {+0.289347f, +0.183367f, +0.043677f, -0.000132f, -0.000010f}, - {-0.332610f, -0.106477f, -0.046382f, -0.000181f, +0.000052f}, - {+0.030172f, +0.040872f, +0.005239f, -0.000542f, -0.000065f}, - {+0.188712f, -0.022024f, +0.026128f, -0.000084f, -0.000051f}, - {-0.071871f, +0.114351f, -0.009162f, +0.000197f, +0.000047f}, - {-0.013433f, -0.054663f, -0.003535f, +0.000343f, +0.000057f}, - {-0.178475f, +0.017894f, -0.025738f, +0.000205f, +0.000044f}, - {+0.010117f, -0.193309f, +0.001195f, -0.000079f, -0.000031f}, - {+0.059297f, -0.019649f, +0.006335f, +0.000285f, +0.000013f} - }, - { - {-0.134846f, -0.467842f, -0.019524f, -0.000244f, +0.000001f}, - {+0.092222f, +0.547291f, +0.014252f, -0.000986f, +0.000001f}, - {-0.040107f, -0.068680f, -0.004663f, +0.000023f, +0.000071f}, - {-0.024493f, -0.346874f, -0.002774f, +0.000070f, +0.000048f}, - {-0.047272f, +0.147189f, -0.008626f, -0.000053f, -0.000044f}, - {+0.026008f, +0.007599f, +0.001975f, +0.000132f, -0.000005f}, - {+0.030534f, +0.339732f, +0.003406f, +0.000035f, -0.000020f}, - {+0.083347f, -0.077557f, +0.013266f, -0.000128f, -0.000007f}, - {-0.013672f, -0.131388f, -0.003403f, +0.000118f, +0.000027f} - }, - { - {-0.267902f, -0.264872f, -0.040046f, +0.000129f, +0.000011f}, - {+0.321912f, +0.191063f, +0.044992f, +0.000193f, -0.000056f}, - {-0.022572f, -0.096725f, -0.002705f, +0.000503f, +0.000069f}, - {-0.176343f, -0.111752f, -0.025706f, +0.000048f, +0.000053f}, - {+0.084811f, -0.059741f, +0.013684f, -0.000183f, -0.000048f}, - {-0.004452f, +0.055305f, +0.000514f, -0.000261f, -0.000064f}, - {+0.161895f, +0.139155f, +0.022695f, -0.000241f, -0.000046f}, - {-0.046966f, +0.125238f, -0.006695f, +0.000013f, +0.000036f}, - {-0.046666f, -0.080465f, -0.004500f, -0.000378f, -0.000014f} - }, - { - {+0.182763f, +0.425959f, +0.026111f, +0.000216f, -0.000001f}, - {-0.151967f, -0.538951f, -0.023953f, +0.000917f, +0.000002f}, - {+0.059967f, +0.029780f, +0.006750f, -0.000233f, -0.000082f}, - {+0.071926f, +0.268254f, +0.009365f, -0.000173f, -0.000058f}, - {+0.030147f, -0.144364f, +0.004637f, +0.000155f, +0.000054f}, - {-0.022610f, +0.026139f, -0.001896f, +0.000081f, +0.000015f}, - {-0.089140f, -0.244883f, -0.010242f, +0.000037f, +0.000027f}, - {-0.053982f, +0.112441f, -0.009466f, +0.000027f, +0.000006f}, - {+0.043125f, +0.054784f, +0.006054f, -0.000118f, -0.000026f} - }, - { - {+0.236555f, +0.344253f, +0.035451f, -0.000140f, -0.000014f}, - {-0.305017f, -0.302445f, -0.041503f, -0.000225f, +0.000061f}, - {+0.000099f, +0.121249f, +0.000347f, -0.000531f, -0.000075f}, - {+0.147839f, +0.147624f, +0.023593f, -0.000074f, -0.000055f}, - {-0.099074f, +0.056676f, -0.015836f, +0.000238f, +0.000049f}, - {+0.015365f, -0.033058f, +0.001023f, +0.000263f, +0.000075f}, - {-0.115117f, -0.202631f, -0.018500f, +0.000266f, +0.000048f}, - {+0.062522f, -0.070317f, +0.009998f, +0.000023f, -0.000045f}, - {+0.009357f, +0.103095f, +0.001665f, +0.000461f, +0.000014f} - }, - { - {-0.223414f, -0.360443f, -0.031653f, -0.000161f, +0.000003f}, - {+0.220330f, +0.504684f, +0.033230f, -0.000874f, -0.000003f}, - {-0.065668f, +0.018345f, -0.008069f, +0.000490f, +0.000105f}, - {-0.094224f, -0.228227f, -0.015610f, +0.000296f, +0.000075f}, - {-0.011044f, +0.195618f, +0.000221f, -0.000284f, -0.000070f}, - {+0.015206f, -0.030774f, +0.001584f, -0.000377f, -0.000037f}, - {+0.112319f, +0.149909f, +0.015570f, -0.000082f, -0.000037f}, - {+0.027593f, -0.125221f, +0.004605f, +0.000167f, +0.000001f}, - {-0.035657f, +0.033761f, -0.006506f, +0.000132f, +0.000027f} - }, - { - {-0.197435f, -0.400152f, -0.030189f, +0.000183f, +0.000017f}, - {+0.265346f, +0.433349f, +0.035911f, +0.000309f, -0.000070f}, - {+0.024825f, -0.121781f, +0.003662f, +0.000791f, +0.000075f}, - {-0.131639f, -0.172895f, -0.018896f, +0.000200f, +0.000051f}, - {+0.118431f, -0.000422f, +0.015867f, -0.000387f, -0.000045f}, - {-0.018068f, +0.023258f, -0.002724f, -0.000522f, -0.000082f}, - {+0.072974f, +0.212278f, +0.011511f, -0.000340f, -0.000047f}, - {-0.068530f, +0.023641f, -0.010358f, +0.000042f, +0.000055f}, - {+0.013236f, -0.038962f, +0.000910f, -0.000477f, -0.000015f} - }, - { - {+0.253363f, +0.291660f, +0.036499f, +0.000094f, -0.000007f}, - {-0.281798f, -0.406628f, -0.041589f, +0.000891f, +0.000005f}, - {+0.059479f, -0.066959f, +0.007177f, -0.000628f, -0.000142f}, - {+0.120109f, +0.213729f, +0.018705f, -0.000288f, -0.000099f}, - {-0.027666f, -0.223189f, -0.003521f, +0.000300f, +0.000093f}, - {-0.013844f, +0.028875f, -0.000557f, +0.000575f, +0.000072f}, - {-0.118976f, -0.083818f, -0.016708f, +0.000094f, +0.000049f}, - {-0.002209f, +0.126405f, -0.000845f, -0.000338f, -0.000017f}, - {+0.011760f, -0.039638f, +0.005259f, -0.000091f, -0.000032f} - }, - { - {+0.156753f, +0.440657f, +0.023910f, -0.000253f, -0.000018f}, - {-0.203795f, -0.522732f, -0.028158f, -0.000411f, +0.000085f}, - {-0.046218f, +0.097129f, -0.007205f, -0.001249f, -0.000056f}, - {+0.112467f, +0.226687f, +0.015571f, -0.000451f, -0.000035f}, - {-0.117838f, -0.083303f, -0.016703f, +0.000616f, +0.000028f}, - {+0.023412f, -0.030837f, +0.004021f, +0.001018f, +0.000071f}, - {-0.037437f, -0.211830f, -0.005723f, +0.000467f, +0.000043f}, - {+0.064323f, +0.023579f, +0.009934f, -0.000232f, -0.000060f}, - {-0.009156f, -0.006104f, -0.001969f, +0.000387f, +0.000022f} - }, - { - {-0.275944f, -0.222761f, -0.039627f, -0.000066f, +0.000013f}, - {+0.322019f, +0.286370f, +0.048482f, -0.000959f, -0.000014f}, - {-0.046923f, +0.094317f, -0.005599f, +0.000435f, +0.000182f}, - {-0.150750f, -0.177020f, -0.022662f, +0.000117f, +0.000123f}, - {+0.067347f, +0.202691f, +0.009894f, -0.000124f, -0.000115f}, - {+0.015081f, -0.042971f, +0.000082f, -0.000445f, -0.000114f}, - {+0.117640f, +0.025700f, +0.015946f, -0.000085f, -0.000063f}, - {-0.016418f, -0.100980f, -0.001676f, +0.000298f, +0.000040f}, - {-0.000250f, +0.010429f, -0.002435f, -0.000017f, +0.000037f} - }, - { - {-0.115447f, -0.469158f, -0.017950f, +0.000366f, +0.000017f}, - {+0.134884f, +0.571706f, +0.018454f, +0.000373f, -0.000105f}, - {+0.067420f, -0.084270f, +0.010575f, +0.001650f, +0.000010f}, - {-0.076003f, -0.293259f, -0.009993f, +0.000579f, +0.000003f}, - {+0.098520f, +0.155744f, +0.013412f, -0.000754f, +0.000004f}, - {-0.039536f, +0.043110f, -0.005899f, -0.001509f, -0.000034f}, - {+0.003041f, +0.203039f, +0.001212f, -0.000536f, -0.000033f}, - {-0.056528f, -0.038194f, -0.009590f, +0.000577f, +0.000054f}, - {-0.001245f, +0.013315f, +0.000319f, -0.000346f, -0.000036f} - }, - { - {+0.292999f, +0.157930f, +0.042403f, +0.000087f, -0.000020f}, - {-0.342354f, -0.162255f, -0.051635f, +0.001110f, +0.000034f}, - {+0.022156f, -0.154740f, +0.000608f, +0.000173f, -0.000208f}, - {+0.168151f, +0.078549f, +0.023857f, +0.000280f, -0.000137f}, - {-0.096594f, -0.143573f, -0.013193f, -0.000234f, +0.000126f}, - {-0.002506f, +0.100103f, +0.002757f, -0.000120f, +0.000144f}, - {-0.102496f, +0.041774f, -0.013753f, -0.000024f, +0.000074f}, - {+0.028733f, +0.095250f, +0.004398f, -0.000056f, -0.000064f}, - {-0.000053f, +0.012400f, +0.002539f, +0.000289f, -0.000038f} - }, - { - {+0.073802f, +0.495430f, +0.011185f, -0.000471f, -0.000013f}, - {-0.067107f, -0.583553f, -0.008494f, -0.000150f, +0.000126f}, - {-0.082122f, +0.004027f, -0.011237f, -0.001551f, +0.000060f}, - {+0.028928f, +0.288941f, +0.005398f, -0.000320f, +0.000043f}, - {-0.067365f, -0.187138f, -0.009613f, +0.000522f, -0.000049f}, - {+0.053548f, +0.014546f, +0.006738f, +0.001557f, -0.000028f}, - {+0.021691f, -0.148588f, +0.001549f, +0.000530f, +0.000018f}, - {+0.052283f, +0.060853f, +0.007887f, -0.000799f, -0.000034f}, - {+0.008489f, -0.003383f, +0.001566f, +0.000494f, +0.000057f} - }, - { - {-0.307330f, -0.088798f, -0.043952f, -0.000185f, +0.000025f}, - {+0.348741f, +0.055377f, +0.052852f, -0.001109f, -0.000070f}, - {+0.020133f, +0.157206f, +0.002804f, -0.000807f, +0.000201f}, - {-0.157718f, +0.000354f, -0.025108f, -0.000577f, +0.000129f}, - {+0.107002f, +0.082667f, +0.016074f, +0.000429f, -0.000116f}, - {-0.027699f, -0.106463f, -0.004855f, +0.000830f, -0.000144f}, - {+0.076446f, -0.063154f, +0.011339f, +0.000105f, -0.000081f}, - {-0.046001f, -0.090381f, -0.006439f, -0.000517f, +0.000079f}, - {-0.003916f, -0.020923f, -0.003928f, -0.000676f, +0.000026f} - }, - { - {-0.027283f, -0.518967f, -0.004482f, +0.000531f, +0.000006f}, - {+0.002104f, +0.586753f, -0.000310f, -0.000388f, -0.000138f}, - {+0.067195f, +0.083021f, +0.013467f, -0.000261f, -0.000139f}, - {+0.000203f, -0.242050f, +0.002218f, -0.001130f, -0.000092f}, - {+0.041057f, +0.183900f, +0.003084f, +0.000869f, +0.000096f}, - {-0.043480f, -0.079977f, -0.008525f, -0.000104f, +0.000100f}, - {-0.026266f, +0.096019f, -0.004003f, -0.000222f, +0.000001f}, - {-0.040550f, -0.099815f, -0.006813f, +0.000626f, +0.000005f}, - {-0.012858f, -0.005094f, -0.001938f, -0.001102f, -0.000079f} - }, - { - {+0.314481f, +0.005188f, +0.044811f, +0.000426f, -0.000028f}, - {-0.346528f, +0.051746f, -0.052277f, +0.000401f, +0.000122f}, - {-0.053118f, -0.097595f, -0.002410f, +0.001225f, -0.000151f}, - {+0.140849f, -0.024347f, +0.026727f, +0.000253f, -0.000095f}, - {-0.107847f, -0.047702f, -0.019644f, +0.000097f, +0.000079f}, - {+0.051228f, +0.061068f, +0.003689f, -0.001630f, +0.000102f}, - {-0.056164f, +0.049815f, -0.009319f, +0.000032f, +0.000080f}, - {+0.061891f, +0.058300f, +0.009871f, +0.001903f, -0.000079f}, - {+0.009880f, +0.028684f, +0.006879f, +0.001108f, +0.000001f} + {-0.067351f, +0.619497f, -0.224314f}, + {+0.139294f, -0.771571f, +0.258097f}, + {-0.003713f, +0.028657f, -0.008450f}, + {-0.024048f, +0.069155f, -0.020553f}, + {+0.025678f, +0.026025f, -0.019233f}, + {+0.009936f, +0.011063f, -0.007565f}, + {+0.034483f, +0.043638f, -0.029489f}, + {+0.006138f, -0.086263f, +0.038216f}, + {+0.046480f, +0.249243f, -0.117268f} + }, + { + {+0.012648f, +0.734658f, -0.184512f}, + {+0.111037f, -0.538674f, +0.336987f}, + {-0.002627f, -0.020803f, -0.029183f}, + {-0.030921f, +0.004858f, -0.041299f}, + {+0.051115f, +0.078198f, -0.009636f}, + {+0.016252f, +0.028855f, -0.008268f}, + {+0.084591f, +0.153968f, -0.000650f}, + {-0.017068f, -0.206982f, -0.012636f}, + {+0.164507f, +0.469681f, -0.054789f} + }, + { + {+0.223221f, -0.320495f, +0.172323f}, + {-0.327663f, +0.928806f, -0.128055f}, + {+0.019358f, -0.074304f, -0.015400f}, + {+0.035210f, -0.082508f, -0.021387f}, + {+0.001915f, -0.019754f, +0.041779f}, + {-0.009482f, +0.004447f, +0.006672f}, + {+0.039341f, +0.054366f, +0.052326f}, + {-0.015501f, -0.146235f, -0.037803f}, + {+0.140215f, +0.011558f, +0.133087f} + }, + { + {+0.158118f, -0.393316f, +0.132368f}, + {-0.546868f, +0.311888f, -0.284518f}, + {+0.031012f, +0.036496f, +0.023744f}, + {+0.107357f, +0.078785f, +0.019930f}, + {-0.117669f, -0.168393f, +0.014741f}, + {-0.063269f, -0.132935f, -0.029018f}, + {-0.110215f, -0.232883f, -0.026283f}, + {+0.026325f, -0.007643f, +0.015801f}, + {-0.156350f, -0.444539f, +0.006974f} + }, + { + {-0.158057f, +0.298412f, -0.065118f}, + {-0.180062f, -0.634611f, +0.013767f}, + {-0.011461f, +0.071086f, +0.018569f}, + {+0.074813f, +0.048439f, +0.032538f}, + {-0.176343f, +0.017086f, -0.039934f}, + {-0.070878f, -0.087909f, -0.042882f}, + {-0.196698f, -0.095181f, -0.059079f}, + {+0.043237f, +0.006669f, +0.001955f}, + {-0.440379f, +0.000452f, -0.098398f} + }, + { + {-0.449468f, +0.042993f, -0.088093f}, + {+0.450454f, +0.142745f, +0.162071f}, + {-0.082857f, -0.081326f, -0.023342f}, + {-0.091693f, -0.115333f, +0.002878f}, + {-0.059625f, +0.113643f, -0.022660f}, + {-0.002551f, +0.114733f, +0.021413f}, + {-0.134830f, +0.127944f, +0.015214f}, + {+0.039406f, -0.002734f, -0.000806f}, + {-0.456803f, +0.175205f, -0.017055f} + }, + { + {-0.521027f, -0.156261f, +0.000350f}, + {+0.908889f, +0.180570f, +0.051670f}, + {-0.108770f, -0.053291f, -0.027241f}, + {-0.287995f, +0.046150f, -0.015860f}, + {+0.175042f, -0.108856f, +0.012453f}, + {+0.059786f, +0.044325f, +0.033874f}, + {-0.008998f, -0.011671f, +0.039397f}, + {+0.004422f, -0.001021f, +0.005255f}, + {-0.225556f, -0.103116f, +0.036951f} + }, + { + {-0.371766f, +0.087065f, +0.052523f}, + {+1.010425f, -0.130810f, -0.067243f}, + {-0.070822f, +0.064314f, +0.008682f}, + {-0.381257f, -0.000635f, -0.013290f}, + {+0.375703f, +0.033440f, +0.023774f}, + {+0.081888f, -0.060050f, -0.009146f}, + {+0.099530f, -0.054172f, +0.002402f}, + {-0.055187f, -0.030383f, +0.004615f}, + {+0.113698f, +0.047344f, +0.023699f} + }, + { + {-0.133153f, +0.006407f, +0.034476f}, + {+0.837054f, -0.001398f, -0.067755f}, + {-0.019596f, -0.013995f, +0.025797f}, + {-0.306127f, -0.073720f, -0.002010f}, + {+0.417535f, +0.051347f, +0.011222f}, + {+0.096752f, -0.015410f, -0.024298f}, + {+0.165604f, -0.014311f, -0.020675f}, + {-0.110129f, +0.012754f, -0.001173f}, + {+0.396896f, -0.022479f, +0.001703f} + }, + { + {+0.076154f, -0.015041f, -0.005731f}, + {+0.558795f, +0.016178f, -0.011329f}, + {+0.001783f, -0.050805f, +0.008376f}, + {-0.100163f, +0.081596f, +0.016700f}, + {+0.287003f, -0.097687f, -0.016950f}, + {+0.130328f, +0.051441f, -0.002818f}, + {+0.194137f, +0.028286f, -0.006100f}, + {-0.128998f, -0.007273f, -0.004964f}, + {+0.525370f, -0.013001f, -0.010543f} + }, + { + {+0.227729f, -0.027128f, -0.019508f}, + {+0.280803f, +0.046474f, +0.016340f}, + {+0.006184f, +0.007629f, -0.010663f}, + {+0.124161f, -0.022132f, +0.014831f}, + {+0.082170f, +0.023992f, -0.023358f}, + {+0.168199f, -0.000379f, +0.008102f}, + {+0.185287f, +0.007140f, +0.002454f}, + {-0.098830f, -0.034738f, -0.000610f}, + {+0.505599f, +0.024919f, -0.016122f} + }, + { + {+0.345183f, +0.044417f, -0.008489f}, + {+0.029206f, -0.069971f, +0.008062f}, + {+0.040780f, +0.025656f, -0.005557f}, + {+0.280661f, +0.000086f, -0.001939f}, + {-0.091189f, +0.001516f, -0.001765f}, + {+0.178051f, -0.018186f, -0.003683f}, + {+0.147526f, -0.011735f, +0.000472f}, + {-0.034700f, +0.017373f, +0.007552f}, + {+0.404231f, -0.018810f, -0.013580f} + }, + { + {+0.447376f, -0.029945f, +0.002359f}, + {-0.196485f, +0.048776f, -0.000528f}, + {+0.131413f, -0.031345f, +0.001264f}, + {+0.352086f, -0.000092f, -0.009252f}, + {-0.196164f, +0.010102f, +0.008244f}, + {+0.137927f, +0.001411f, -0.005445f}, + {+0.094224f, +0.013361f, +0.000776f}, + {+0.030220f, +0.002376f, +0.001349f}, + {+0.282599f, +0.004869f, -0.002937f} + }, + { + {+0.532898f, +0.008836f, +0.002166f}, + {-0.392609f, -0.034792f, +0.000679f}, + {+0.270895f, +0.030297f, -0.000156f}, + {+0.364913f, -0.004283f, -0.009820f}, + {-0.243967f, -0.002627f, +0.007384f}, + {+0.037047f, -0.017787f, +0.004491f}, + {+0.041930f, -0.015182f, -0.000239f}, + {+0.078287f, +0.007042f, -0.004821f}, + {+0.167608f, -0.019027f, +0.005545f} + }, + { + {+0.594888f, -0.002438f, -0.003208f}, + {-0.547092f, +0.023930f, +0.003204f}, + {+0.418638f, -0.023295f, -0.006545f}, + {+0.358947f, -0.011193f, -0.005371f}, + {-0.268043f, +0.007992f, +0.005934f}, + {-0.108159f, +0.040803f, +0.007847f}, + {+0.014237f, +0.000657f, -0.000908f}, + {+0.104780f, -0.013359f, -0.000511f}, + {+0.064568f, +0.028680f, +0.003338f} + }, + { + {+0.635005f, +0.006702f, -0.005006f}, + {-0.650934f, -0.013984f, +0.004474f}, + {+0.519015f, +0.020899f, -0.008786f}, + {+0.354058f, +0.000065f, -0.000944f}, + {-0.293166f, -0.009243f, +0.003786f}, + {-0.244478f, -0.036317f, +0.004273f}, + {+0.027137f, +0.008991f, +0.000305f}, + {+0.112434f, -0.002933f, +0.003310f}, + {-0.019782f, -0.018420f, -0.000608f} + }, + { + {+0.661388f, -0.006850f, -0.003249f}, + {-0.709859f, +0.007935f, +0.004126f}, + {+0.524557f, -0.002414f, -0.002080f}, + {+0.344994f, +0.003888f, -0.002639f}, + {-0.316812f, +0.006036f, +0.003412f}, + {-0.307717f, +0.012550f, -0.001272f}, + {+0.076841f, -0.011681f, -0.000880f}, + {+0.115864f, +0.008381f, -0.000189f}, + {-0.078312f, +0.007256f, -0.000761f} + }, + { + {+0.681780f, +0.004317f, -0.002114f}, + {-0.740600f, -0.002506f, +0.003738f}, + {+0.416864f, -0.038264f, +0.003168f}, + {+0.319577f, -0.000792f, -0.001313f}, + {-0.319873f, -0.002666f, +0.002245f}, + {-0.258538f, +0.029824f, -0.003409f}, + {+0.141548f, +0.012818f, -0.003839f}, + {+0.135337f, +0.001218f, -0.005061f}, + {-0.109830f, +0.001645f, +0.001441f} + }, + { + {+0.699871f, -0.003221f, -0.002308f}, + {-0.762514f, +0.004609f, +0.003814f}, + {+0.225434f, +0.064939f, -0.001450f}, + {+0.266431f, +0.012897f, +0.002255f}, + {-0.282175f, -0.010311f, -0.000422f}, + {-0.108713f, -0.058556f, +0.002399f}, + {+0.186968f, -0.009396f, -0.004807f}, + {+0.178376f, -0.016506f, -0.006062f}, + {-0.120383f, -0.003023f, +0.004088f} + }, + { + {+0.714529f, +0.003253f, -0.002414f}, + {-0.790696f, -0.011388f, +0.001985f}, + {+0.020833f, -0.046458f, -0.007156f}, + {+0.185944f, -0.029249f, +0.000016f}, + {-0.197551f, +0.028731f, +0.000138f}, + {+0.079181f, +0.043101f, +0.006863f}, + {+0.176963f, -0.004258f, -0.002861f}, + {+0.228839f, +0.021085f, -0.002090f}, + {-0.119574f, -0.002646f, +0.004158f} + }, + { + {+0.721602f, -0.001258f, -0.002069f}, + {-0.831027f, +0.010846f, -0.000173f}, + {-0.126177f, +0.009153f, -0.003439f}, + {+0.096173f, +0.020892f, -0.003906f}, + {-0.084227f, -0.027335f, +0.001653f}, + {+0.229925f, -0.010207f, +0.000875f}, + {+0.090658f, +0.023511f, +0.000256f}, + {+0.250703f, +0.000323f, +0.000133f}, + {-0.115659f, +0.011998f, -0.001947f} + }, + { + {+0.717593f, -0.001188f, -0.001513f}, + {-0.881199f, -0.003795f, +0.002266f}, + {-0.186085f, +0.008805f, +0.004207f}, + {+0.021886f, +0.000682f, +0.000980f}, + {+0.024639f, +0.019808f, +0.000274f}, + {+0.296639f, -0.006775f, -0.008463f}, + {-0.060930f, -0.036828f, +0.003817f}, + {+0.210581f, -0.022700f, -0.003357f}, + {-0.112881f, +0.004715f, -0.006188f} + }, + { + {+0.702872f, +0.004202f, -0.000899f}, + {-0.934393f, +0.006557f, +0.007476f}, + {-0.176147f, -0.010014f, +0.006716f}, + {-0.022135f, +0.003624f, +0.007346f}, + {+0.100594f, -0.012448f, -0.000135f}, + {+0.271960f, +0.005598f, -0.007977f}, + {-0.233701f, +0.046766f, +0.003616f}, + {+0.101020f, +0.023227f, -0.002321f}, + {-0.116785f, -0.020405f, +0.002997f} + }, + { + {+0.682250f, -0.007566f, -0.001501f}, + {-0.978417f, -0.017585f, +0.006636f}, + {-0.137592f, +0.005047f, +0.003880f}, + {-0.028458f, -0.006826f, +0.004609f}, + {+0.129898f, -0.005880f, -0.001391f}, + {+0.175874f, -0.016526f, +0.001013f}, + {-0.367276f, -0.033929f, -0.002775f}, + {-0.060514f, -0.037887f, +0.002465f}, + {-0.137333f, -0.006964f, +0.011955f} + }, + { + {+0.663415f, +0.004606f, -0.002781f}, + {-0.993852f, +0.009178f, -0.000038f}, + {-0.108250f, -0.003270f, +0.001437f}, + {+0.009848f, -0.008477f, -0.000681f}, + {+0.118923f, +0.012268f, -0.005212f}, + {+0.044501f, +0.037572f, +0.003962f}, + {-0.416290f, -0.006378f, -0.006076f}, + {-0.236610f, +0.040350f, +0.002858f}, + {-0.168887f, +0.032800f, +0.004036f} + }, + { + {+0.651781f, +0.001152f, -0.002457f}, + {-0.965546f, +0.016499f, -0.002125f}, + {-0.105651f, -0.001646f, +0.002481f}, + {+0.090167f, +0.025763f, -0.001130f}, + {+0.087686f, -0.003999f, -0.005549f}, + {-0.075223f, -0.035790f, -0.002847f}, + {-0.383115f, +0.037796f, +0.001566f}, + {-0.378556f, -0.025237f, +0.002287f}, + {-0.179845f, -0.008941f, -0.008124f} + }, + { + {+0.645685f, -0.002682f, -0.000593f}, + {-0.900401f, -0.029783f, +0.003285f}, + {-0.124380f, +0.012275f, +0.001822f}, + {+0.193225f, -0.027406f, +0.000945f}, + {+0.052400f, -0.001580f, -0.000684f}, + {-0.141411f, -0.002262f, -0.004491f}, + {-0.319576f, -0.023501f, +0.010635f}, + {-0.448327f, +0.001574f, +0.004044f}, + {-0.141908f, -0.032139f, -0.005596f} + }, + { + {+0.638137f, -0.002412f, +0.000310f}, + {-0.826423f, +0.017144f, +0.007574f}, + {-0.140725f, -0.006104f, -0.000815f}, + {+0.290930f, +0.019453f, +0.001904f}, + {+0.016875f, -0.009182f, +0.001656f}, + {-0.145675f, +0.017736f, +0.001807f}, + {-0.285941f, -0.010851f, +0.008570f}, + {-0.435070f, +0.011023f, +0.004307f}, + {-0.062178f, +0.036767f, +0.005654f} + }, + { + {+0.623287f, +0.007299f, -0.001056f}, + {-0.770521f, +0.001075f, +0.004559f}, + {-0.130645f, -0.003274f, -0.002902f}, + {+0.361351f, -0.005902f, +0.000348f}, + {-0.020477f, +0.011841f, -0.000752f}, + {-0.114514f, -0.018145f, +0.007488f}, + {-0.305625f, +0.026256f, -0.000446f}, + {-0.353862f, -0.030431f, +0.004835f}, + {+0.024417f, -0.010793f, +0.007820f} + }, + { + {+0.600902f, -0.006021f, -0.002348f}, + {-0.739248f, -0.005015f, -0.001571f}, + {-0.087167f, +0.021027f, -0.001847f}, + {+0.400187f, +0.000286f, -0.002317f}, + {-0.060945f, -0.009244f, -0.002589f}, + {-0.083328f, -0.001928f, +0.007725f}, + {-0.359405f, -0.019595f, -0.006438f}, + {-0.237042f, +0.027090f, +0.006659f}, + {+0.089013f, -0.004244f, -0.000128f} + }, + { + {+0.574438f, +0.003368f, -0.001494f}, + {-0.720431f, -0.005878f, -0.002928f}, + {-0.025553f, -0.022088f, +0.002875f}, + {+0.419048f, +0.001480f, -0.004334f}, + {-0.105303f, +0.000852f, +0.000385f}, + {-0.070507f, +0.013892f, +0.000793f}, + {-0.411663f, -0.001662f, -0.003755f}, + {-0.118815f, -0.013893f, +0.002937f}, + {+0.127181f, -0.002212f, -0.005490f} + }, + { + {+0.546941f, -0.004959f, -0.000239f}, + {-0.700235f, +0.009986f, +0.000285f}, + {+0.026874f, +0.006811f, +0.004565f}, + {+0.432826f, +0.004148f, -0.005149f}, + {-0.153860f, -0.009932f, +0.004309f}, + {-0.067445f, -0.005555f, -0.005512f}, + {-0.441084f, +0.007824f, +0.003852f}, + {-0.016912f, +0.012081f, -0.003174f}, + {+0.148914f, +0.007013f, -0.004323f} + }, + { + {+0.520436f, +0.006384f, -0.000382f}, + {-0.674657f, -0.006620f, +0.001998f}, + {+0.052406f, +0.010142f, -0.000198f}, + {+0.447102f, -0.009070f, -0.003159f}, + {-0.202135f, +0.018081f, +0.002032f}, + {-0.055887f, -0.014144f, -0.003615f}, + {-0.448314f, -0.001324f, +0.007309f}, + {+0.065957f, -0.020607f, -0.003258f}, + {+0.162472f, -0.004875f, -0.002127f} + }, + { + {+0.496665f, -0.004859f, -0.000887f}, + {-0.647428f, +0.004741f, +0.001434f}, + {+0.053060f, -0.007546f, -0.006118f}, + {+0.453309f, +0.004051f, -0.000324f}, + {-0.237178f, -0.009221f, -0.002058f}, + {-0.029969f, +0.014850f, +0.002643f}, + {-0.439805f, -0.002523f, +0.005619f}, + {+0.128558f, +0.010056f, -0.001511f}, + {+0.167737f, +0.001236f, -0.001456f} + }, + { + {+0.475983f, +0.003710f, -0.000970f}, + {-0.624608f, -0.003603f, +0.000812f}, + {+0.042149f, -0.008534f, -0.003432f}, + {+0.438672f, +0.005526f, +0.000965f}, + {-0.249063f, -0.004782f, -0.002016f}, + {+0.000807f, -0.001028f, +0.002841f}, + {-0.416440f, +0.003745f, +0.000359f}, + {+0.170217f, -0.009457f, -0.000867f}, + {+0.158107f, +0.002167f, -0.000901f} + }, + { + {+0.456962f, -0.002559f, -0.000574f}, + {-0.609653f, +0.002905f, +0.001117f}, + {+0.025784f, -0.000666f, +0.002060f}, + {+0.399694f, -0.014955f, +0.000161f}, + {-0.242149f, +0.009905f, +0.001262f}, + {+0.026686f, -0.000156f, -0.001218f}, + {-0.373014f, +0.013273f, -0.002730f}, + {+0.191984f, -0.000973f, -0.000838f}, + {+0.127455f, -0.008313f, +0.000023f} + }, + { + {+0.437008f, +0.003925f, -0.000081f}, + {-0.601093f, -0.000232f, +0.001372f}, + {+0.002960f, +0.010345f, +0.001054f}, + {+0.347170f, +0.016956f, -0.002319f}, + {-0.233004f, -0.002825f, +0.003373f}, + {+0.044339f, -0.004384f, -0.002020f}, + {-0.309506f, -0.024368f, +0.000882f}, + {+0.198003f, -0.000405f, -0.001486f}, + {+0.077236f, +0.014350f, -0.000034f} + }, + { + {+0.414109f, -0.005431f, -0.000037f}, + {-0.592705f, +0.001470f, +0.001222f}, + {-0.024584f, -0.008451f, -0.001721f}, + {+0.300043f, -0.007510f, -0.003376f}, + {-0.236922f, -0.005189f, +0.002904f}, + {+0.053435f, +0.002953f, -0.000365f}, + {-0.239443f, +0.015553f, +0.003945f}, + {+0.195817f, -0.003961f, -0.001987f}, + {+0.019225f, -0.012398f, -0.000024f} + }, + { + {+0.388577f, +0.006627f, -0.000411f}, + {-0.576851f, -0.002898f, +0.000753f}, + {-0.052952f, +0.001666f, -0.000781f}, + {+0.271771f, -0.002315f, -0.001136f}, + {-0.256751f, +0.010892f, +0.000933f}, + {+0.055321f, +0.000623f, +0.000321f}, + {-0.178829f, -0.004699f, +0.001577f}, + {+0.192108f, -0.001841f, -0.002156f}, + {-0.030601f, +0.010281f, +0.000029f} + }, + { + {+0.362659f, -0.006023f, -0.001007f}, + {-0.548393f, +0.008477f, +0.000553f}, + {-0.079254f, -0.004768f, +0.001192f}, + {+0.262246f, +0.003901f, +0.002002f}, + {-0.282691f, -0.009035f, -0.001549f}, + {+0.052737f, -0.001616f, -0.000062f}, + {-0.134033f, +0.004191f, -0.001751f}, + {+0.189322f, +0.000295f, -0.001194f}, + {-0.059659f, -0.002213f, -0.000053f} + }, + { + {+0.339002f, +0.002927f, -0.000712f}, + {-0.507223f, -0.011672f, +0.001408f}, + {-0.101892f, +0.008754f, -0.000366f}, + {+0.261016f, +0.005455f, +0.000964f}, + {-0.300336f, -0.003329f, -0.000659f}, + {+0.049601f, -0.001946f, +0.000746f}, + {-0.101681f, -0.008021f, -0.001522f}, + {+0.184646f, -0.000891f, -0.000474f}, + {-0.064232f, -0.004100f, +0.000831f} + }, + { + {+0.318447f, -0.002583f, +0.000342f}, + {-0.458166f, +0.011334f, +0.002134f}, + {-0.119857f, -0.003793f, -0.002673f}, + {+0.257649f, -0.004527f, -0.002750f}, + {-0.302642f, +0.006786f, +0.003304f}, + {+0.050079f, +0.001140f, +0.002294f}, + {-0.075154f, +0.006079f, +0.000154f}, + {+0.175259f, -0.002462f, +0.000450f}, + {-0.050689f, +0.006815f, +0.002112f} + }, + { + {+0.300124f, +0.004647f, +0.000429f}, + {-0.407177f, -0.007551f, +0.001229f}, + {-0.135280f, -0.004904f, -0.000353f}, + {+0.246029f, -0.001362f, -0.002342f}, + {-0.292460f, -0.000038f, +0.003938f}, + {+0.057770f, +0.002994f, +0.000700f}, + {-0.048950f, -0.002677f, -0.000542f}, + {+0.161196f, +0.006930f, -0.000490f}, + {-0.030107f, -0.002304f, +0.001927f} + }, + { + {+0.283695f, -0.004672f, -0.000499f}, + {-0.357931f, +0.007644f, -0.000792f}, + {-0.154465f, -0.001114f, +0.004046f}, + {+0.221394f, -0.002251f, +0.001225f}, + {-0.274104f, -0.001365f, +0.000312f}, + {+0.076006f, +0.003175f, -0.002372f}, + {-0.019797f, +0.006502f, -0.001827f}, + {+0.147944f, -0.003560f, -0.001898f}, + {-0.011081f, -0.000127f, -0.000375f} + }, + { + {+0.269518f, +0.002457f, -0.001001f}, + {-0.311326f, -0.012837f, -0.000327f}, + {-0.181319f, +0.014112f, +0.003014f}, + {+0.182651f, +0.012951f, +0.002036f}, + {-0.248875f, -0.007948f, -0.001266f}, + {+0.104063f, -0.013233f, -0.001219f}, + {+0.010928f, -0.008987f, -0.001152f}, + {+0.141371f, -0.000838f, -0.001781f}, + {+0.004297f, -0.004808f, -0.000787f} + }, + { + {+0.257138f, -0.000471f, -0.000295f}, + {-0.269065f, +0.008971f, +0.001327f}, + {-0.209242f, -0.009445f, -0.000789f}, + {+0.136359f, -0.015642f, -0.000837f}, + {-0.218917f, +0.009939f, +0.000695f}, + {+0.133100f, +0.007332f, +0.001415f}, + {+0.037336f, +0.006071f, +0.000081f}, + {+0.141848f, +0.003924f, -0.000450f}, + {+0.015759f, +0.001304f, -0.000104f} + }, + { + {+0.244594f, +0.002255f, +0.000537f}, + {-0.232039f, -0.006188f, +0.001385f}, + {-0.226456f, -0.005183f, +0.000708f}, + {+0.094177f, +0.004239f, -0.001379f}, + {-0.188550f, -0.003755f, +0.001033f}, + {+0.152408f, +0.005083f, -0.000982f}, + {+0.053373f, +0.001503f, -0.000759f}, + {+0.144008f, -0.001965f, +0.000959f}, + {+0.023577f, -0.002308f, -0.000076f} + }, + { + {+0.229867f, -0.004876f, +0.000170f}, + {-0.197603f, +0.004728f, +0.000560f}, + {-0.226600f, +0.010780f, +0.006854f}, + {+0.064221f, +0.003891f, +0.003122f}, + {-0.161189f, -0.001104f, -0.002261f}, + {+0.157190f, -0.008241f, -0.006888f}, + {+0.056895f, -0.003410f, -0.003127f}, + {+0.141412f, -0.001071f, +0.001644f}, + {+0.029485f, +0.003593f, +0.001358f} + }, + { + {+0.212288f, +0.005142f, -0.000800f}, + {-0.162483f, -0.004117f, -0.001433f}, + {-0.209328f, -0.002547f, +0.009702f}, + {+0.048193f, +0.000129f, +0.007210f}, + {-0.139874f, -0.002121f, -0.005784f}, + {+0.146647f, -0.000237f, -0.009054f}, + {+0.049793f, -0.001403f, -0.002729f}, + {+0.132126f, +0.003164f, +0.002133f}, + {+0.035201f, -0.000152f, +0.002301f} + }, + { + {+0.191599f, -0.002871f, -0.000708f}, + {-0.125250f, +0.008746f, -0.003116f}, + {-0.175384f, -0.002970f, +0.005044f}, + {+0.046507f, -0.009000f, +0.004794f}, + {-0.128202f, +0.013178f, -0.002850f}, + {+0.120273f, +0.005762f, -0.003583f}, + {+0.034030f, -0.000067f, +0.000427f}, + {+0.118790f, -0.004116f, +0.002419f}, + {+0.044052f, -0.001094f, +0.001102f} } }; -const float FASTCONV_FOA_latency_s = 0.000666667f; -const float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]= +const float FASTCONV_FOA_latency_s = 0.000020833f; +const float leftHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {+0.001139f, +0.701381f, +0.088362f, +0.001507f, +0.000002f}, - {+0.000414f, +0.262095f, -0.237214f, -0.003224f, +0.000036f}, - {+0.002081f, +0.073269f, +0.016442f, -0.002305f, -0.000016f}, - {+0.003374f, +0.067272f, -0.027345f, -0.000156f, +0.000027f} + {+0.181652f, +0.754551f, +0.218658f}, + {+0.313875f, -0.422228f, +0.135528f}, + {+0.014440f, +0.116710f, -0.013575f}, + {+0.042997f, +0.018886f, -0.015597f} }, { - {-0.006858f, +0.573976f, -0.025590f, -0.002173f, -0.000001f}, - {-0.018683f, +0.673324f, +0.155049f, +0.004529f, -0.000042f}, - {-0.004167f, -0.005579f, -0.043222f, +0.004198f, +0.000026f}, - {-0.007696f, +0.026588f, -0.047141f, +0.000930f, -0.000031f} + {-0.171103f, -0.431000f, -0.158827f}, + {-0.162330f, -1.016290f, +0.055279f}, + {-0.009076f, +0.107488f, -0.010075f}, + {-0.002269f, +0.060685f, +0.014338f} }, { - {+0.022690f, +0.504423f, -0.025668f, -0.000505f, -0.000002f}, - {+0.098922f, +0.785742f, +0.002391f, +0.001725f, -0.000029f}, - {+0.001996f, -0.028688f, -0.031830f, -0.002187f, +0.000003f}, - {+0.012563f, -0.012620f, -0.033386f, -0.001639f, -0.000022f} + {-0.320265f, -0.250765f, -0.167171f}, + {-0.685853f, +0.069215f, -0.258616f}, + {-0.021745f, +0.080557f, +0.010049f}, + {-0.070084f, +0.090970f, +0.018109f} }, { - {-0.068470f, +0.403356f, +0.003719f, +0.002403f, +0.000001f}, - {-0.238766f, +0.395418f, +0.032160f, -0.006283f, +0.000045f}, - {-0.003715f, -0.000119f, +0.009760f, -0.000148f, -0.000031f}, - {-0.028559f, -0.040197f, +0.002155f, +0.000892f, +0.000033f} + {-0.090062f, +0.396798f, +0.031329f}, + {-0.547868f, +0.612159f, -0.064837f}, + {-0.014055f, +0.010916f, -0.020054f}, + {-0.104609f, -0.009719f, -0.014645f} }, { - {+0.145134f, +0.119557f, +0.007639f, -0.000923f, +0.000003f}, - {+0.294065f, -0.334693f, -0.019103f, +0.002511f, +0.000020f}, - {+0.020226f, -0.024338f, +0.012605f, +0.001278f, +0.000012f}, - {+0.043958f, -0.145428f, +0.013697f, +0.000566f, +0.000018f} + {+0.310752f, -0.054756f, +0.106519f}, + {+0.077791f, -0.305320f, +0.144875f}, + {+0.048626f, -0.050345f, -0.007511f}, + {-0.035749f, -0.049561f, -0.008157f} }, { - {-0.153301f, -0.308264f, -0.003171f, -0.001265f, -0.000001f}, - {-0.095935f, -0.863498f, -0.010369f, +0.003299f, -0.000045f}, - {-0.032438f, -0.100491f, +0.003144f, -0.001769f, +0.000029f}, - {-0.013113f, -0.237010f, +0.000894f, -0.000875f, -0.000033f} + {+0.590278f, -0.119063f, +0.024674f}, + {+0.708076f, -0.088569f, +0.094265f}, + {+0.119880f, +0.048720f, +0.014661f}, + {+0.120422f, +0.058573f, +0.004643f} }, { - {-0.012428f, -0.509031f, -0.004688f, +0.000988f, -0.000003f}, - {-0.244664f, -0.595158f, -0.023888f, -0.002491f, -0.000012f}, - {+0.002609f, -0.144907f, -0.010043f, +0.000781f, -0.000027f}, - {-0.074154f, -0.145409f, -0.008757f, -0.000058f, -0.000014f} + {+0.638355f, +0.074625f, -0.043889f}, + {+1.048572f, +0.131298f, -0.037692f}, + {+0.143385f, +0.033975f, +0.014623f}, + {+0.293747f, -0.017822f, -0.000451f} }, { - {+0.212788f, -0.155514f, +0.023333f, +0.000561f, +0.000002f}, - {+0.330585f, +0.291160f, +0.047010f, -0.002016f, +0.000043f}, - {+0.050155f, -0.068056f, -0.001580f, +0.001116f, -0.000021f}, - {+0.122861f, +0.153186f, +0.009329f, +0.000801f, +0.000032f} + {+0.521197f, -0.005266f, -0.041412f}, + {+1.094584f, +0.000210f, -0.073803f}, + {+0.109004f, -0.035628f, -0.003452f}, + {+0.407579f, +0.034241f, -0.002887f} }, { - {-0.148866f, +0.399380f, -0.016077f, -0.000584f, +0.000004f}, - {+0.007222f, +0.769639f, -0.001057f, +0.002043f, +0.000007f}, - {-0.045137f, +0.068695f, +0.001800f, -0.000989f, +0.000039f}, - {-0.030243f, +0.388427f, -0.005358f, -0.000487f, +0.000012f} + {+0.361479f, -0.014806f, -0.009497f}, + {+0.986770f, -0.046512f, -0.029288f}, + {+0.057809f, +0.027844f, -0.015215f}, + {+0.409283f, +0.014805f, +0.005752f} }, { - {-0.148858f, +0.389050f, -0.019934f, -0.000504f, -0.000003f}, - {-0.349211f, +0.214703f, -0.051501f, +0.001478f, -0.000039f}, - {-0.029971f, +0.074752f, -0.006844f, -0.000679f, +0.000009f}, - {-0.127591f, +0.245277f, -0.008622f, -0.000243f, -0.000032f} + {+0.229108f, -0.009840f, +0.009477f}, + {+0.839323f, +0.000705f, +0.009034f}, + {+0.036287f, +0.030074f, -0.010227f}, + {+0.293083f, -0.069929f, -0.004421f} }, { - {+0.239012f, -0.214946f, +0.031611f, +0.000498f, -0.000004f}, - {+0.196316f, -0.613847f, +0.027133f, -0.001726f, -0.000004f}, - {+0.059322f, -0.077618f, +0.010338f, +0.000544f, -0.000046f}, - {+0.142102f, -0.158560f, +0.013819f, +0.000336f, -0.000011f} + {+0.125590f, +0.030181f, +0.007318f}, + {+0.687756f, +0.052219f, +0.009126f}, + {+0.052382f, -0.019274f, +0.003613f}, + {+0.122951f, +0.036356f, -0.013394f} }, { - {+0.056721f, -0.491541f, +0.006821f, +0.000413f, +0.000004f}, - {+0.248916f, -0.524024f, +0.041690f, -0.001135f, +0.000035f}, - {+0.029432f, -0.129169f, -0.000386f, +0.000757f, +0.000007f}, - {+0.025409f, -0.327769f, +0.004549f, +0.000075f, +0.000034f} + {+0.030890f, -0.030176f, -0.000832f}, + {+0.531513f, -0.048483f, -0.004668f}, + {+0.067811f, -0.004747f, +0.002746f}, + {-0.026040f, -0.009502f, -0.004388f} }, { - {-0.277481f, +0.028032f, -0.037920f, -0.000438f, +0.000003f}, - {-0.308141f, +0.332951f, -0.045686f, +0.001496f, +0.000003f}, - {-0.108659f, +0.087169f, -0.015132f, -0.000418f, +0.000046f}, - {-0.144191f, -0.063507f, -0.018317f, -0.000173f, +0.000009f} + {-0.062962f, +0.019124f, -0.003537f}, + {+0.376029f, +0.026217f, -0.006323f}, + {+0.042499f, +0.013437f, -0.001738f}, + {-0.120763f, +0.008891f, +0.001968f} }, { - {+0.037467f, +0.509783f, +0.006165f, -0.000331f, -0.000005f}, - {-0.118379f, +0.623008f, -0.023288f, +0.000858f, -0.000032f}, - {+0.020828f, +0.293771f, +0.009322f, -0.000570f, -0.000020f}, - {+0.044708f, +0.223468f, +0.005411f, -0.000025f, -0.000036f} + {-0.150437f, -0.012367f, -0.001050f}, + {+0.234297f, -0.021072f, -0.000774f}, + {-0.046092f, -0.025628f, -0.001827f}, + {-0.163500f, +0.007913f, +0.005640f} }, { - {+0.276681f, +0.136508f, +0.039053f, +0.000399f, -0.000002f}, - {+0.342800f, -0.086499f, +0.051427f, -0.001312f, -0.000004f}, - {+0.141529f, +0.115364f, +0.013240f, +0.000205f, -0.000040f}, - {+0.110040f, +0.119206f, +0.016186f, +0.000083f, -0.000006f} + {-0.224579f, +0.011037f, +0.001567f}, + {+0.118032f, +0.020982f, +0.001167f}, + {-0.190587f, +0.031698f, +0.001189f}, + {-0.181600f, +0.008625f, +0.006827f} }, { - {-0.117783f, -0.468960f, -0.017913f, +0.000250f, +0.000005f}, - {+0.005671f, -0.604318f, +0.007143f, -0.000660f, +0.000031f}, - {-0.130049f, -0.297226f, -0.017966f, +0.000439f, +0.000030f}, - {-0.077788f, -0.170577f, -0.011766f, -0.000035f, +0.000037f} + {-0.283765f, -0.012148f, +0.001665f}, + {+0.031141f, -0.014212f, +0.000704f}, + {-0.354999f, -0.033990f, +0.005051f}, + {-0.201565f, -0.012572f, +0.001547f} }, { - {-0.252966f, -0.256306f, -0.036605f, -0.000365f, +0.000002f}, - {-0.337478f, -0.074281f, -0.052432f, +0.001197f, +0.000005f}, - {-0.072906f, -0.386255f, -0.005369f, -0.000119f, +0.000033f}, - {-0.075520f, -0.174614f, -0.010607f, -0.000037f, +0.000003f} + {-0.330851f, +0.010110f, +0.000281f}, + {-0.032740f, +0.010680f, +0.000608f}, + {-0.489897f, +0.028555f, +0.005370f}, + {-0.226930f, +0.003469f, +0.000412f} }, { - {+0.180447f, +0.410401f, +0.027706f, -0.000193f, -0.000005f}, - {+0.079743f, +0.570802f, +0.007521f, +0.000528f, -0.000032f}, - {+0.189755f, +0.008151f, +0.021117f, -0.000340f, -0.000036f}, - {+0.097648f, +0.090203f, +0.013931f, +0.000113f, -0.000038f} + {-0.370651f, -0.006974f, -0.000273f}, + {-0.085140f, -0.009699f, +0.000484f}, + {-0.550417f, -0.008550f, +0.002078f}, + {-0.248676f, -0.002190f, +0.002941f} }, { - {+0.221150f, +0.344584f, +0.031954f, +0.000342f, -0.000001f}, - {+0.324392f, +0.195009f, +0.049761f, -0.001141f, -0.000005f}, - {-0.055564f, +0.372598f, -0.003229f, +0.000147f, -0.000026f}, - {+0.029197f, +0.196512f, +0.004268f, -0.000027f, +0.000001f} + {-0.408944f, +0.005900f, +0.000497f}, + {-0.135902f, +0.010386f, +0.000573f}, + {-0.516823f, -0.021637f, +0.000484f}, + {-0.254059f, +0.003659f, +0.002185f} }, { - {-0.234543f, -0.356749f, -0.036109f, +0.000161f, +0.000005f}, - {-0.158828f, -0.551737f, -0.020300f, -0.000447f, +0.000034f}, - {-0.128996f, +0.253163f, -0.019502f, +0.000205f, +0.000038f}, - {-0.086326f, +0.024093f, -0.010653f, -0.000104f, +0.000038f} + {-0.450752f, -0.008484f, +0.001446f}, + {-0.191283f, -0.014617f, -0.000163f}, + {-0.408035f, +0.040263f, +0.003661f}, + {-0.231639f, +0.007741f, +0.000045f} }, { - {-0.180736f, -0.438688f, -0.025011f, -0.000324f, +0.000001f}, - {-0.301948f, -0.334020f, -0.045105f, +0.001128f, +0.000004f}, - {+0.108851f, -0.109590f, +0.011684f, +0.000065f, +0.000022f}, - {+0.007794f, -0.114979f, -0.002557f, +0.000055f, -0.000004f} + {-0.497579f, +0.012039f, +0.001191f}, + {-0.253854f, +0.015815f, -0.001949f}, + {-0.274552f, -0.030994f, +0.006408f}, + {-0.178594f, -0.020739f, +0.002028f} }, { - {+0.283619f, +0.272902f, +0.041849f, -0.000148f, -0.000005f}, - {+0.241474f, +0.503493f, +0.031717f, +0.000352f, -0.000035f}, - {+0.045390f, -0.198917f, +0.011556f, -0.000593f, -0.000041f}, - {+0.041019f, -0.061071f, +0.008824f, +0.000017f, -0.000039f} + {-0.545362f, -0.010634f, +0.000559f}, + {-0.324146f, -0.011460f, -0.001641f}, + {-0.169370f, +0.009075f, +0.003395f}, + {-0.105323f, +0.013694f, +0.002900f} }, { - {+0.123506f, +0.516214f, +0.017365f, +0.000301f, -0.000001f}, - {+0.256327f, +0.482583f, +0.037542f, -0.001057f, -0.000002f}, - {-0.083839f, +0.008074f, -0.016916f, +0.000282f, -0.000018f}, - {+0.003422f, -0.003727f, +0.003177f, -0.000000f, +0.000006f} + {-0.587196f, +0.008279f, +0.000328f}, + {-0.403134f, +0.010566f, +0.002217f}, + {-0.118490f, +0.003381f, -0.001814f}, + {-0.027446f, -0.008251f, -0.001827f} }, { - {-0.313797f, -0.154486f, -0.046391f, +0.000147f, +0.000005f}, - {-0.319981f, -0.404727f, -0.042569f, -0.000317f, +0.000036f}, - {-0.021107f, +0.110660f, -0.004978f, +0.000416f, +0.000047f}, - {-0.008153f, -0.022716f, -0.004670f, +0.000045f, +0.000040f} + {-0.618017f, -0.004259f, +0.000361f}, + {-0.490358f, -0.020714f, +0.004529f}, + {-0.113358f, -0.003251f, -0.002770f}, + {+0.041459f, +0.013481f, -0.005194f} }, { - {-0.061089f, -0.539358f, -0.009248f, -0.000286f, +0.000001f}, - {-0.177073f, -0.627220f, -0.025260f, +0.001022f, +0.000001f}, - {+0.071424f, -0.032340f, +0.013321f, -0.000179f, +0.000014f}, - {-0.053388f, +0.046353f, -0.007111f, -0.000176f, -0.000010f} + {-0.637687f, +0.001567f, +0.000820f}, + {-0.576790f, +0.023931f, +0.002213f}, + {-0.125198f, +0.004103f, -0.001443f}, + {+0.086209f, -0.010781f, -0.003979f} }, { - {+0.324287f, +0.053524f, +0.049068f, -0.000116f, -0.000006f}, - {+0.369344f, +0.211212f, +0.048775f, +0.000225f, -0.000037f}, - {+0.008002f, -0.135643f, +0.001207f, -0.000329f, -0.000053f}, - {+0.026056f, +0.169088f, +0.008645f, +0.000250f, -0.000042f} + {-0.651150f, -0.001076f, +0.001428f}, + {-0.645409f, -0.014669f, -0.000718f}, + {-0.123622f, +0.001940f, -0.001608f}, + {+0.092869f, +0.002431f, -0.000324f} }, { - {+0.005776f, +0.541579f, +0.000581f, +0.000240f, -0.000000f}, - {+0.077934f, +0.656141f, +0.014760f, -0.000940f, -0.000001f}, - {-0.071537f, -0.021095f, -0.007901f, +0.000019f, -0.000006f}, - {+0.095328f, +0.067372f, +0.010448f, -0.000101f, +0.000015f} + {-0.664780f, +0.003292f, +0.001710f}, + {-0.683586f, +0.000299f, -0.000557f}, + {-0.092026f, -0.012393f, -0.001589f}, + {+0.056395f, +0.017649f, +0.000374f} }, { - {-0.328162f, +0.029093f, -0.049230f, +0.000107f, +0.000007f}, - {-0.369662f, -0.037217f, -0.051825f, -0.000167f, +0.000038f}, - {+0.023527f, +0.120022f, -0.000102f, +0.000278f, +0.000058f}, - {-0.090284f, -0.212186f, -0.013169f, -0.000132f, +0.000043f} + {-0.682371f, -0.006662f, +0.000792f}, + {-0.693411f, +0.007664f, +0.002560f}, + {-0.036899f, +0.016426f, -0.000987f}, + {-0.012285f, -0.023342f, -0.003158f} }, { - {+0.048978f, -0.548479f, +0.007485f, -0.000233f, -0.000001f}, - {-0.003228f, -0.602938f, -0.001617f, +0.000911f, +0.000001f}, - {+0.040104f, +0.095644f, +0.005888f, -0.000009f, -0.000005f}, - {-0.081710f, -0.220378f, -0.013048f, -0.000016f, -0.000021f} + {-0.702854f, +0.004929f, -0.000169f}, + {-0.690742f, -0.001912f, +0.004494f}, + {+0.017981f, -0.013806f, -0.000030f}, + {-0.088921f, +0.012514f, -0.003181f} }, { - {+0.324250f, -0.126479f, +0.048291f, -0.000066f, -0.000007f}, - {+0.357292f, -0.046143f, +0.050921f, +0.000098f, -0.000041f}, - {-0.027149f, -0.003860f, +0.000272f, -0.000124f, -0.000060f}, - {+0.141329f, +0.121139f, +0.018219f, +0.000314f, -0.000043f} + {-0.722549f, -0.002146f, +0.000430f}, + {-0.692300f, -0.005917f, +0.002876f}, + {+0.046872f, +0.003463f, +0.001220f}, + {-0.154235f, -0.010645f, -0.001356f} }, { - {-0.104734f, +0.530347f, -0.015582f, +0.000224f, +0.000002f}, - {-0.054628f, +0.590170f, -0.008056f, -0.000909f, +0.000000f}, - {-0.005584f, -0.032979f, -0.004816f, +0.000029f, +0.000015f}, - {+0.037866f, +0.274890f, +0.006759f, -0.000046f, +0.000027f} + {-0.739092f, +0.002594f, +0.001242f}, + {-0.704186f, +0.008734f, -0.000319f}, + {+0.036822f, +0.011640f, +0.000478f}, + {-0.201705f, +0.002195f, +0.000385f} }, { - {-0.308177f, +0.218644f, -0.045991f, +0.000043f, +0.000007f}, - {-0.346201f, +0.142031f, -0.048180f, -0.000046f, +0.000045f}, - {-0.007019f, -0.030662f, -0.000480f, +0.000081f, +0.000058f}, - {-0.162861f, -0.035781f, -0.023778f, -0.000324f, +0.000041f} + {-0.751826f, -0.003070f, +0.000998f}, + {-0.721419f, -0.002290f, -0.001142f}, + {-0.005059f, -0.018609f, -0.002901f}, + {-0.237750f, -0.005780f, +0.002036f} }, { - {+0.155747f, -0.491433f, +0.022764f, -0.000231f, -0.000003f}, - {+0.112390f, -0.563014f, +0.016093f, +0.000905f, -0.000002f}, - {+0.014636f, -0.060316f, +0.003797f, -0.000151f, -0.000023f}, - {+0.007188f, -0.297579f, +0.001361f, +0.000018f, -0.000032f} + {-0.760887f, +0.001608f, +0.000546f}, + {-0.736911f, +0.001064f, +0.000228f}, + {-0.057870f, +0.010116f, -0.004534f}, + {-0.273933f, +0.006641f, +0.002467f} }, { - {+0.282333f, -0.296973f, +0.042631f, -0.000038f, -0.000007f}, - {+0.325943f, -0.233378f, +0.045604f, +0.000052f, -0.000049f}, - {+0.025539f, -0.043016f, +0.004050f, -0.000129f, -0.000057f}, - {+0.170600f, -0.047495f, +0.024487f, +0.000283f, -0.000040f} + {-0.767195f, -0.000265f, +0.000748f}, + {-0.748024f, -0.000586f, +0.001053f}, + {-0.102334f, +0.003212f, +0.000059f}, + {-0.315083f, -0.011342f, +0.002600f} }, { - {-0.198966f, +0.440444f, -0.029339f, +0.000240f, +0.000003f}, - {-0.163937f, +0.519986f, -0.024102f, -0.000910f, +0.000006f}, - {-0.041643f, +0.059924f, -0.008056f, +0.000252f, +0.000028f}, - {-0.058279f, +0.303786f, -0.008000f, +0.000033f, +0.000037f} + {-0.772327f, +0.001114f, +0.000964f}, + {-0.756683f, +0.002199f, +0.000983f}, + {-0.133057f, +0.004906f, +0.003973f}, + {-0.355964f, +0.012189f, +0.001107f} }, { - {-0.251233f, +0.360645f, -0.037855f, +0.000048f, +0.000007f}, - {-0.301209f, +0.307267f, -0.042244f, -0.000061f, +0.000052f}, - {-0.017898f, +0.097992f, -0.002832f, +0.000217f, +0.000060f}, - {-0.154977f, +0.157077f, -0.021873f, -0.000264f, +0.000040f} + {-0.777379f, -0.001664f, +0.000676f}, + {-0.767213f, -0.002558f, +0.000597f}, + {-0.152753f, -0.009690f, +0.001092f}, + {-0.384303f, -0.006913f, -0.001047f} }, { - {+0.235922f, -0.385212f, +0.034692f, -0.000230f, -0.000003f}, - {+0.211902f, -0.482439f, +0.031812f, +0.000875f, -0.000009f}, - {+0.062526f, -0.022786f, +0.009165f, -0.000192f, -0.000037f}, - {+0.100642f, -0.232077f, +0.012026f, +0.000003f, -0.000044f} + {-0.782304f, +0.001186f, +0.000401f}, + {-0.783173f, +0.004116f, +0.000499f}, + {-0.161920f, -0.000439f, -0.001076f}, + {-0.390874f, -0.005592f, -0.000791f} }, { - {+0.215580f, -0.416556f, +0.032649f, -0.000062f, -0.000008f}, - {+0.273278f, -0.387323f, +0.037577f, +0.000065f, -0.000055f}, - {-0.005939f, -0.125998f, +0.001105f, -0.000285f, -0.000067f}, - {+0.119018f, -0.200389f, +0.019595f, +0.000282f, -0.000042f} + {-0.786466f, -0.000413f, +0.000504f}, + {-0.805468f, -0.004296f, +0.000905f}, + {-0.161504f, +0.005798f, +0.001317f}, + {-0.378159f, +0.009420f, +0.002017f} }, { - {-0.266556f, +0.321627f, -0.039270f, +0.000204f, +0.000005f}, - {-0.262381f, +0.436199f, -0.039035f, -0.000825f, +0.000011f}, - {-0.067202f, -0.031111f, -0.011093f, +0.000033f, +0.000054f}, - {-0.114634f, +0.160892f, -0.016486f, -0.000093f, +0.000057f} + {-0.789480f, +0.000911f, +0.000469f}, + {-0.831991f, +0.006156f, +0.001415f}, + {-0.154727f, +0.000127f, +0.002457f}, + {-0.358994f, -0.003224f, +0.003001f} }, { - {-0.175988f, +0.460735f, -0.026828f, +0.000048f, +0.000010f}, - {-0.233172f, +0.480676f, -0.031122f, -0.000031f, +0.000060f}, - {+0.031548f, +0.122002f, +0.003267f, +0.000158f, +0.000072f}, - {-0.094567f, +0.192621f, -0.015001f, -0.000394f, +0.000041f} + {-0.791179f, +0.000118f, +0.000378f}, + {-0.858608f, -0.007156f, +0.000826f}, + {-0.143224f, -0.002141f, -0.000223f}, + {-0.346009f, -0.003832f, +0.000505f} }, { - {+0.289864f, -0.252340f, +0.042717f, -0.000164f, -0.000008f}, - {+0.309890f, -0.352443f, +0.045041f, +0.000820f, -0.000012f}, - {+0.059594f, +0.080834f, +0.009319f, +0.000095f, -0.000085f}, - {+0.123492f, -0.142957f, +0.017979f, +0.000125f, -0.000076f} + {-0.791713f, -0.000506f, +0.000690f}, + {-0.880258f, +0.003409f, +0.000310f}, + {-0.126671f, -0.005516f, -0.001744f}, + {-0.344447f, +0.002552f, -0.002098f} }, { - {+0.134575f, -0.490695f, +0.020657f, -0.000008f, -0.000011f}, - {+0.176248f, -0.555316f, +0.023664f, -0.000054f, -0.000070f}, - {-0.054408f, -0.093413f, -0.005141f, +0.000202f, -0.000064f}, - {+0.078026f, -0.213530f, +0.012432f, +0.000637f, -0.000030f} + {-0.791760f, -0.000637f, +0.000646f}, + {-0.894068f, +0.000147f, +0.001099f}, + {-0.106700f, +0.011976f, +0.001536f}, + {-0.352724f, +0.003880f, -0.000028f} }, { - {-0.306423f, +0.183981f, -0.045149f, +0.000152f, +0.000012f}, - {-0.341487f, +0.240296f, -0.050133f, -0.000895f, +0.000016f}, - {-0.041086f, -0.112975f, -0.007981f, +0.000040f, +0.000125f}, - {-0.138721f, +0.120523f, -0.020161f, +0.000004f, +0.000099f} + {-0.791607f, +0.000326f, +0.000259f}, + {-0.900705f, -0.000766f, +0.002346f}, + {-0.087833f, -0.003369f, +0.004535f}, + {-0.367814f, +0.002794f, +0.003185f} }, { - {-0.092719f, +0.511558f, -0.014604f, -0.000050f, +0.000009f}, - {-0.112835f, +0.589997f, -0.014321f, +0.000122f, +0.000086f}, - {+0.068469f, +0.059054f, +0.008838f, -0.000612f, +0.000032f}, - {-0.054382f, +0.253255f, -0.007586f, -0.000904f, +0.000005f} + {-0.791360f, +0.000216f, +0.000145f}, + {-0.902761f, -0.003469f, +0.001579f}, + {-0.071216f, -0.005336f, +0.001636f}, + {-0.384313f, -0.008317f, +0.002102f} }, { - {+0.317269f, -0.115684f, +0.046850f, -0.000208f, -0.000018f}, - {+0.356933f, -0.130812f, +0.052103f, +0.001044f, -0.000027f}, - {+0.019507f, +0.139642f, +0.002950f, -0.000683f, -0.000159f}, - {+0.152449f, -0.061207f, +0.020045f, -0.000364f, -0.000115f} + {-0.791514f, -0.000959f, +0.000554f}, + {-0.901431f, +0.000403f, -0.000135f}, + {-0.050334f, -0.003160f, -0.002061f}, + {-0.392811f, +0.004068f, -0.000843f} }, { - {+0.051096f, -0.523693f, +0.008474f, +0.000105f, -0.000004f}, - {+0.049349f, -0.600329f, +0.005605f, -0.000022f, -0.000106f}, - {-0.079985f, -0.011392f, -0.007657f, +0.000780f, +0.000028f}, - {+0.017397f, -0.267260f, +0.004496f, +0.000957f, +0.000035f} + {-0.792816f, -0.000333f, +0.001006f}, + {-0.897192f, +0.003319f, +0.000240f}, + {-0.018937f, +0.014843f, -0.000267f}, + {-0.385889f, +0.008000f, -0.000602f} }, { - {-0.323905f, +0.049833f, -0.047865f, +0.000329f, +0.000021f}, - {-0.358893f, +0.027640f, -0.053272f, -0.001258f, +0.000053f}, - {+0.015053f, -0.158953f, -0.000193f, +0.001713f, +0.000167f}, - {-0.144359f, -0.018540f, -0.020249f, +0.000901f, +0.000114f} + {-0.795515f, +0.001892f, +0.000664f}, + {-0.892619f, -0.002628f, +0.001553f}, + {+0.020997f, -0.013093f, +0.003597f}, + {-0.364329f, -0.010852f, +0.002618f} }, { - {-0.008373f, +0.533499f, -0.002225f, -0.000084f, -0.000004f}, - {+0.010355f, +0.593074f, +0.003536f, -0.000223f, +0.000122f}, - {+0.071969f, -0.070538f, +0.006817f, -0.000021f, -0.000104f}, - {+0.009075f, +0.217846f, -0.000438f, -0.000486f, -0.000083f} + {-0.798742f, -0.001369f, -0.000006f}, + {-0.889854f, +0.001159f, +0.002594f}, + {+0.062746f, +0.000823f, +0.002081f}, + {-0.335764f, +0.002095f, +0.002620f} }, { - {+0.325536f, +0.023312f, +0.048108f, -0.000519f, -0.000020f}, - {+0.352731f, +0.066640f, +0.052836f, +0.001159f, -0.000094f}, - {-0.047485f, +0.116702f, -0.002224f, -0.002868f, -0.000134f}, - {+0.125804f, +0.038871f, +0.018687f, -0.001207f, -0.000088f} + {-0.801561f, -0.000332f, -0.000055f}, + {-0.888481f, +0.002442f, +0.002445f}, + {+0.101614f, +0.005650f, -0.006242f}, + {-0.306982f, +0.005040f, -0.003292f} }, { - {-0.036324f, -0.531073f, -0.003989f, -0.000084f, +0.000013f}, - {-0.069318f, -0.580051f, -0.011694f, +0.000718f, -0.000126f}, - {-0.044835f, +0.120121f, -0.003388f, -0.003194f, +0.000173f}, - {-0.016464f, -0.181504f, -0.002802f, -0.001577f, +0.000124f} + {-0.803505f, +0.001996f, +0.000969f}, + {-0.886774f, -0.004132f, +0.000094f}, + {+0.134585f, +0.001923f, -0.014731f}, + {-0.282127f, -0.002996f, -0.011457f} } }; -const float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]= +const float leftHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.075561f, -0.068517f, +0.140821f, -0.000006f, -0.000001f}, - {-0.113351f, +0.312423f, -0.154809f, +0.003274f, -0.000040f}, - {-0.002167f, -0.037131f, +0.050206f, -0.009097f, +0.000022f}, - {-0.008959f, -0.001538f, +0.017300f, -0.005827f, -0.000030f} + {-0.171042f, +0.590899f, -0.184148f}, + {-0.244016f, +0.359802f, -0.065072f}, + {-0.014995f, +0.035748f, -0.012250f}, + {-0.031507f, +0.034780f, -0.009895f} }, { - {+0.088726f, -0.056723f, -0.005193f, -0.002691f, -0.000002f}, - {+0.119871f, +0.624601f, -0.192908f, +0.005870f, -0.000033f}, - {+0.004166f, -0.045506f, +0.052787f, -0.000546f, +0.000010f}, - {+0.009543f, +0.003765f, +0.008451f, +0.003327f, -0.000025f} + {-0.228601f, +0.478433f, -0.200802f}, + {-0.468416f, -0.184796f, -0.220307f}, + {-0.021499f, +0.027785f, -0.012584f}, + {-0.060325f, +0.030602f, -0.002599f} }, { - {-0.102143f, +0.113338f, +0.041532f, +0.003556f, +0.000001f}, - {-0.144265f, +0.722990f, +0.063761f, -0.009098f, +0.000044f}, - {-0.005127f, +0.024047f, -0.013948f, +0.005687f, -0.000029f}, - {-0.011405f, +0.075487f, -0.028027f, -0.000790f, +0.000032f} + {+0.101029f, -0.456163f, +0.083058f}, + {-0.043611f, -0.870939f, -0.055288f}, + {+0.001858f, +0.027597f, -0.016310f}, + {-0.029059f, +0.033806f, -0.005356f} }, { - {+0.102256f, +0.332031f, -0.028467f, -0.000969f, +0.000002f}, - {+0.105041f, +0.913298f, +0.007994f, +0.001561f, +0.000024f}, - {+0.007491f, +0.060974f, -0.023635f, -0.001357f, +0.000004f}, - {+0.005542f, +0.127425f, -0.011646f, +0.000496f, +0.000020f} + {+0.410000f, -0.084502f, +0.139239f}, + {+0.675225f, +0.218111f, +0.204844f}, + {+0.040662f, +0.051315f, -0.018039f}, + {+0.063503f, +0.056458f, -0.016519f} }, { - {-0.044065f, +0.500826f, -0.002410f, -0.001370f, -0.000001f}, - {+0.092604f, +0.883373f, +0.024383f, +0.004737f, -0.000046f}, - {-0.004561f, +0.083819f, -0.019790f, -0.002951f, +0.000031f}, - {+0.027047f, +0.113206f, -0.016192f, -0.001506f, -0.000033f} + {+0.415696f, +0.265055f, +0.002626f}, + {+1.013647f, +0.334903f, +0.081079f}, + {+0.065042f, -0.040883f, +0.012352f}, + {+0.181037f, -0.059880f, +0.005085f} }, { - {-0.101331f, +0.396216f, -0.004920f, +0.000653f, -0.000003f}, - {-0.315234f, +0.274804f, -0.039014f, -0.001908f, -0.000016f}, - {-0.020480f, +0.081227f, +0.012774f, +0.001524f, -0.000020f}, - {-0.075525f, -0.016066f, +0.005310f, +0.001230f, -0.000016f} + {+0.148368f, -0.111388f, -0.073685f}, + {+0.845933f, -0.250930f, -0.091257f}, + {+0.025616f, -0.060138f, +0.012766f}, + {+0.228995f, -0.032819f, +0.003215f} }, { - {+0.205124f, -0.066361f, +0.022115f, +0.000986f, +0.000002f}, - {+0.252202f, -0.571430f, +0.010069f, -0.002911f, +0.000045f}, - {+0.049641f, -0.008053f, +0.006538f, +0.000795f, -0.000026f}, - {+0.069872f, -0.229431f, +0.016281f, +0.000270f, +0.000032f} + {-0.193830f, -0.014212f, -0.040266f}, + {+0.402943f, +0.020025f, -0.092885f}, + {-0.058690f, +0.041101f, -0.008172f}, + {+0.161828f, +0.015394f, -0.004824f} }, { - {-0.075366f, -0.478001f, -0.007669f, -0.000701f, +0.000003f}, - {+0.124742f, -0.753308f, +0.025384f, +0.001863f, +0.000009f}, - {-0.028983f, -0.121665f, -0.007415f, -0.000267f, +0.000034f}, - {+0.036071f, -0.292663f, -0.003455f, -0.000819f, +0.000013f} + {-0.448848f, +0.024310f, +0.012126f}, + {-0.042491f, +0.043522f, -0.007450f}, + {-0.129054f, -0.013924f, -0.014446f}, + {-0.004772f, -0.042423f, +0.005623f} }, { - {-0.186385f, -0.294120f, -0.028378f, -0.000604f, -0.000002f}, - {-0.364681f, +0.008978f, -0.038744f, +0.001757f, -0.000041f}, - {-0.036441f, -0.104767f, -0.010428f, -0.000824f, +0.000015f}, - {-0.145432f, -0.035047f, -0.010123f, +0.000064f, -0.000032f} + {-0.581348f, +0.015560f, +0.027528f}, + {-0.364335f, +0.028974f, +0.038991f}, + {-0.152614f, -0.032355f, -0.005641f}, + {-0.218401f, +0.075676f, -0.000317f} }, { - {+0.200759f, +0.301898f, +0.028191f, +0.000609f, -0.000004f}, - {+0.106790f, +0.737079f, +0.007371f, -0.001552f, -0.000005f}, - {+0.050065f, +0.035831f, +0.013930f, +0.000498f, -0.000043f}, - {+0.098812f, +0.316605f, +0.005024f, +0.000388f, -0.000012f} + {-0.641251f, -0.033204f, +0.014171f}, + {-0.576730f, -0.078039f, +0.024279f}, + {-0.144066f, +0.021824f, +0.009938f}, + {-0.391879f, -0.026769f, -0.009335f} }, { - {+0.102918f, +0.447646f, +0.016687f, +0.000392f, +0.000003f}, - {+0.311637f, +0.412036f, +0.037367f, -0.001208f, +0.000037f}, - {+0.029150f, +0.073712f, +0.005390f, +0.000373f, -0.000001f}, - {+0.078159f, +0.331302f, +0.015024f, +0.000096f, +0.000033f} + {-0.678995f, +0.021986f, +0.000075f}, + {-0.725441f, +0.048920f, -0.000285f}, + {-0.153455f, +0.022432f, +0.008363f}, + {-0.464657f, -0.026611f, +0.001799f} }, { - {-0.263157f, -0.117240f, -0.038079f, -0.000498f, +0.000003f}, - {-0.266046f, -0.483755f, -0.030591f, +0.001325f, +0.000003f}, - {-0.079262f, -0.094840f, -0.015385f, -0.000509f, +0.000047f}, - {-0.153547f, -0.029982f, -0.019729f, -0.000450f, +0.000010f} + {-0.709246f, -0.001743f, -0.002228f}, + {-0.829481f, -0.007880f, -0.002786f}, + {-0.208073f, -0.023291f, +0.000232f}, + {-0.446725f, +0.013756f, +0.010505f} }, { - {-0.007705f, -0.507985f, -0.003383f, -0.000318f, -0.000004f}, - {-0.186453f, -0.597236f, -0.023398f, +0.000963f, -0.000033f}, - {-0.013117f, -0.205170f, +0.001765f, -0.000228f, -0.000014f}, - {+0.017314f, -0.287283f, -0.002959f, -0.000038f, -0.000035f} + {-0.725841f, -0.005310f, +0.002197f}, + {-0.889756f, -0.003342f, +0.005446f}, + {-0.296494f, +0.020861f, +0.000461f}, + {-0.383826f, -0.016046f, +0.008157f} }, { - {+0.280521f, -0.062761f, +0.041073f, +0.000449f, -0.000003f}, - {+0.334574f, +0.214167f, +0.043236f, -0.001215f, -0.000003f}, - {+0.133038f, +0.011844f, +0.017286f, +0.000551f, -0.000044f}, - {+0.127101f, -0.107475f, +0.022000f, +0.000440f, -0.000008f} + {-0.724803f, +0.003851f, +0.004749f}, + {-0.910037f, -0.002807f, +0.007312f}, + {-0.382641f, -0.013902f, +0.003575f}, + {-0.319137f, +0.005237f, +0.005556f} }, { - {-0.080859f, +0.491833f, -0.009289f, +0.000270f, +0.000005f}, - {+0.060956f, +0.629530f, +0.006506f, -0.000817f, +0.000032f}, - {-0.073930f, +0.331264f, -0.010959f, +0.000254f, +0.000026f}, - {-0.063542f, +0.194964f, -0.009265f, +0.000065f, +0.000037f} + {-0.710495f, -0.001176f, +0.003666f}, + {-0.902293f, -0.002075f, +0.004352f}, + {-0.421514f, +0.001837f, +0.005564f}, + {-0.276374f, +0.006416f, -0.000678f} }, { - {-0.266097f, +0.204693f, -0.039752f, -0.000407f, +0.000002f}, - {-0.343709f, -0.003857f, -0.048079f, +0.001153f, +0.000004f}, - {-0.120675f, +0.268205f, -0.012518f, -0.000600f, +0.000037f}, - {-0.094236f, +0.151237f, -0.013332f, -0.000477f, +0.000005f} + {-0.690926f, +0.001911f, +0.001428f}, + {-0.883286f, +0.004067f, +0.003096f}, + {-0.382030f, +0.012331f, +0.003744f}, + {-0.247702f, +0.008689f, -0.002881f} }, { - {+0.151764f, -0.437914f, +0.020131f, -0.000242f, -0.000005f}, - {+0.036841f, -0.588874f, +0.009139f, +0.000664f, -0.000032f}, - {+0.174802f, -0.176925f, +0.017691f, -0.000280f, -0.000033f}, - {+0.090868f, -0.134423f, +0.011793f, -0.000076f, -0.000038f} + {-0.672402f, -0.004418f, +0.000819f}, + {-0.868037f, -0.001291f, +0.002503f}, + {-0.260382f, -0.031252f, -0.000392f}, + {-0.215212f, -0.010735f, +0.000421f} }, { - {+0.237215f, -0.304481f, +0.035938f, +0.000373f, -0.000001f}, - {+0.332318f, -0.127083f, +0.047424f, -0.001052f, -0.000005f}, - {+0.006779f, -0.431468f, +0.002691f, +0.000532f, -0.000029f}, - {+0.053552f, -0.194194f, +0.007469f, +0.000494f, -0.000001f} + {-0.658558f, +0.003708f, +0.001700f}, + {-0.863001f, -0.000603f, +0.002111f}, + {-0.084457f, +0.046037f, -0.001989f}, + {-0.169471f, +0.007931f, +0.000103f} }, { - {-0.208558f, +0.382505f, -0.029564f, +0.000207f, +0.000005f}, - {-0.116623f, +0.564310f, -0.021854f, -0.000528f, +0.000033f}, - {-0.172351f, -0.159278f, -0.018428f, +0.000360f, +0.000037f}, - {-0.097811f, +0.036173f, -0.011033f, +0.000077f, +0.000038f} + {-0.650017f, -0.001079f, +0.002333f}, + {-0.867523f, +0.003563f, +0.001620f}, + {+0.093137f, -0.042759f, +0.000290f}, + {-0.110082f, -0.012804f, -0.002290f} }, { - {-0.202490f, +0.392017f, -0.029907f, -0.000333f, +0.000001f}, - {-0.316139f, +0.253384f, -0.044455f, +0.000945f, +0.000004f}, - {+0.097332f, +0.245644f, +0.004917f, -0.000556f, +0.000023f}, - {-0.006532f, +0.174857f, -0.002876f, -0.000550f, -0.000002f} + {-0.643665f, -0.001088f, +0.001723f}, + {-0.877421f, -0.003410f, +0.000713f}, + {+0.217492f, +0.016953f, +0.001740f}, + {-0.046668f, +0.018761f, -0.001213f} }, { - {+0.261135f, -0.320885f, +0.037011f, -0.000181f, -0.000005f}, - {+0.197969f, -0.536807f, +0.033309f, +0.000398f, -0.000034f}, - {+0.081783f, +0.256891f, +0.014473f, -0.000242f, -0.000040f}, - {+0.065893f, +0.064104f, +0.007328f, +0.000082f, -0.000039f} + {-0.633405f, -0.001560f, +0.000669f}, + {-0.887575f, -0.001389f, +0.001467f}, + {+0.260289f, +0.010429f, -0.001427f}, + {+0.003491f, -0.008000f, +0.000581f} }, { - {+0.153724f, -0.486020f, +0.022676f, +0.000325f, -0.000001f}, - {+0.283217f, -0.402227f, +0.039413f, -0.000851f, -0.000003f}, - {-0.100031f, -0.031468f, -0.013972f, +0.000537f, -0.000020f}, - {-0.008541f, -0.048318f, +0.000499f, +0.000444f, +0.000005f} + {-0.613764f, +0.006196f, +0.000648f}, + {-0.893912f, +0.004015f, +0.004684f}, + {+0.234569f, -0.016937f, -0.004729f}, + {+0.024290f, -0.008269f, -0.003225f} }, { - {-0.302384f, +0.214214f, -0.042285f, +0.000129f, +0.000005f}, - {-0.280104f, +0.464455f, -0.045587f, -0.000282f, +0.000035f}, - {-0.027898f, -0.140901f, -0.007378f, +0.000003f, +0.000044f}, - {-0.020559f, -0.029800f, -0.003256f, -0.000145f, +0.000040f} + {-0.584438f, -0.007700f, +0.000979f}, + {-0.892617f, +0.003169f, +0.005373f}, + {+0.180710f, +0.012490f, -0.004688f}, + {+0.010563f, +0.002672f, -0.005332f} }, { - {-0.091526f, +0.536382f, -0.014577f, -0.000305f, +0.000001f}, - {-0.221871f, +0.553999f, -0.029769f, +0.000764f, +0.000002f}, - {+0.073977f, +0.023109f, +0.011231f, -0.000304f, +0.000016f}, - {-0.025756f, -0.040011f, -0.004558f, -0.000368f, -0.000008f} + {-0.550310f, +0.008552f, +0.001243f}, + {-0.875679f, -0.001053f, +0.001808f}, + {+0.139761f, -0.001299f, -0.002407f}, + {-0.037114f, -0.006797f, -0.001129f} }, { - {+0.321259f, -0.098962f, +0.045846f, -0.000108f, -0.000006f}, - {+0.348987f, -0.318713f, +0.051856f, +0.000239f, -0.000036f}, - {+0.017761f, +0.116280f, -0.000624f, -0.000200f, -0.000050f}, - {+0.009582f, -0.098230f, +0.005306f, +0.000144f, -0.000041f} + {-0.518417f, -0.006133f, +0.001495f}, + {-0.833856f, -0.011056f, -0.000737f}, + {+0.132343f, -0.004055f, -0.000776f}, + {-0.115163f, +0.018375f, +0.002028f} }, { - {+0.032445f, -0.541906f, +0.005704f, +0.000315f, -0.000001f}, - {+0.127167f, -0.654253f, +0.018462f, -0.000765f, -0.000001f}, - {-0.073982f, -0.022018f, -0.008993f, +0.000517f, -0.000010f}, - {+0.079904f, +0.007744f, +0.010527f, +0.000350f, +0.000012f} + {-0.493716f, +0.003010f, +0.001174f}, + {-0.768131f, +0.020508f, -0.000066f}, + {+0.152693f, +0.008282f, -0.001169f}, + {-0.209710f, -0.025096f, +0.001590f} }, { - {-0.327237f, +0.011995f, -0.047308f, +0.000087f, +0.000007f}, - {-0.372361f, +0.111338f, -0.055931f, -0.000147f, +0.000037f}, - {+0.006939f, -0.148510f, +0.003422f, +0.000212f, +0.000056f}, - {-0.056276f, +0.216052f, -0.007073f, -0.000104f, +0.000043f} + {-0.475954f, -0.001122f, +0.000352f}, + {-0.692851f, -0.022031f, +0.002804f}, + {+0.177765f, -0.009921f, +0.000059f}, + {-0.298030f, +0.020217f, -0.000155f} }, { - {+0.021322f, +0.548401f, +0.003440f, -0.000317f, -0.000000f}, - {-0.036763f, +0.621232f, -0.007074f, +0.000670f, +0.000001f}, - {+0.060591f, -0.069431f, +0.006623f, -0.000636f, +0.000001f}, - {-0.095686f, +0.156364f, -0.008769f, -0.000353f, -0.000018f} + {-0.460792f, +0.002405f, -0.000376f}, + {-0.628175f, +0.009296f, +0.003825f}, + {+0.180171f, -0.003908f, +0.001064f}, + {-0.358358f, -0.006713f, -0.000347f} }, { - {+0.328267f, +0.077867f, +0.046857f, -0.000082f, -0.000007f}, - {+0.361014f, +0.007604f, +0.057275f, +0.000179f, -0.000039f}, - {-0.031203f, +0.067398f, -0.002430f, -0.000232f, -0.000059f}, - {+0.120666f, -0.172404f, +0.015941f, +0.000046f, -0.000043f} + {-0.443319f, -0.006234f, +0.000246f}, + {-0.585810f, +0.000344f, +0.001004f}, + {+0.146499f, +0.011689f, +0.000951f}, + {-0.382061f, -0.004531f, +0.001751f} }, { - {-0.077320f, -0.544064f, -0.010931f, +0.000301f, +0.000001f}, - {-0.025615f, -0.586847f, -0.004514f, -0.000654f, -0.000000f}, - {-0.019503f, +0.080767f, -0.004247f, +0.000554f, +0.000010f}, - {+0.060877f, -0.260909f, +0.007725f, +0.000342f, +0.000024f} + {-0.421955f, +0.005364f, +0.001214f}, + {-0.561763f, -0.000808f, -0.002176f}, + {+0.084775f, -0.020993f, +0.000045f}, + {-0.377713f, +0.006390f, +0.003942f} }, { - {-0.318158f, -0.173881f, -0.045614f, +0.000092f, +0.000007f}, - {-0.350970f, -0.090433f, -0.053929f, -0.000134f, +0.000043f}, - {+0.011187f, +0.032303f, +0.001760f, +0.000373f, +0.000059f}, - {-0.154877f, +0.074143f, -0.023096f, -0.000037f, +0.000042f} + {-0.398163f, -0.003724f, +0.000751f}, + {-0.543402f, -0.007140f, -0.001937f}, + {+0.018165f, +0.017000f, -0.002291f}, + {-0.362688f, -0.001927f, +0.003741f} }, { - {+0.131227f, +0.515417f, +0.018725f, -0.000280f, -0.000002f}, - {+0.083743f, +0.574149f, +0.012466f, +0.000576f, -0.000001f}, - {+0.005315f, +0.026215f, +0.002698f, -0.000477f, -0.000019f}, - {-0.015816f, +0.287949f, -0.001995f, -0.000235f, -0.000030f} + {-0.373625f, +0.004821f, +0.000045f}, + {-0.521728f, +0.008459f, +0.000565f}, + {-0.028207f, -0.002987f, -0.002148f}, + {-0.349401f, +0.000605f, +0.002646f} }, { - {+0.296693f, +0.260934f, +0.042541f, -0.000091f, -0.000007f}, - {+0.335556f, +0.189122f, +0.052026f, +0.000094f, -0.000047f}, - {+0.020995f, +0.006183f, -0.000036f, -0.000396f, -0.000057f}, - {+0.168822f, +0.001307f, +0.024594f, -0.000017f, -0.000040f} + {-0.349815f, -0.005517f, +0.000230f}, + {-0.496496f, -0.005695f, +0.001454f}, + {-0.043081f, -0.009641f, +0.002012f}, + {-0.338864f, +0.001346f, +0.001602f} }, { - {-0.178422f, -0.467768f, -0.025765f, +0.000259f, +0.000003f}, - {-0.138949f, -0.536439f, -0.020095f, -0.000522f, +0.000004f}, - {-0.028752f, -0.066596f, -0.002138f, +0.000378f, +0.000026f}, - {-0.031690f, -0.308623f, -0.005893f, +0.000213f, +0.000034f} + {-0.328050f, +0.004001f, +0.000439f}, + {-0.471819f, +0.004175f, +0.001005f}, + {-0.032608f, +0.005428f, +0.005314f}, + {-0.322952f, +0.001273f, -0.000092f} }, { - {-0.267781f, -0.330036f, -0.038496f, +0.000071f, +0.000007f}, - {-0.312281f, -0.270728f, -0.048992f, -0.000017f, +0.000050f}, - {-0.024788f, -0.069674f, -0.002302f, +0.000335f, +0.000057f}, - {-0.167013f, -0.101727f, -0.022607f, -0.000026f, +0.000040f} + {-0.308595f, -0.003134f, +0.000145f}, + {-0.451672f, -0.002574f, +0.000427f}, + {-0.010290f, +0.004974f, +0.001398f}, + {-0.292677f, -0.007601f, -0.001415f} }, { - {+0.218246f, +0.415608f, +0.031895f, -0.000250f, -0.000003f}, - {+0.187767f, +0.495269f, +0.027755f, +0.000490f, -0.000007f}, - {+0.054038f, +0.052249f, +0.006077f, -0.000385f, -0.000032f}, - {+0.082423f, +0.279154f, +0.011379f, -0.000228f, -0.000040f} + {-0.290597f, +0.003355f, -0.000136f}, + {-0.436743f, +0.002865f, +0.000374f}, + {+0.017338f, +0.007331f, -0.002166f}, + {-0.247618f, +0.015355f, -0.000635f} }, { - {+0.234462f, +0.390517f, +0.033506f, -0.000040f, -0.000008f}, - {+0.286682f, +0.344540f, +0.044785f, -0.000053f, -0.000053f}, - {+0.007799f, +0.121924f, -0.000254f, -0.000274f, -0.000063f}, - {+0.137635f, +0.191812f, +0.020083f, +0.000078f, -0.000041f} + {-0.272998f, -0.004175f, +0.000021f}, + {-0.424310f, -0.002403f, +0.000711f}, + {+0.047898f, -0.011482f, +0.000426f}, + {-0.198447f, -0.014503f, +0.001973f} }, { - {-0.252188f, -0.355561f, -0.036817f, +0.000259f, +0.000004f}, - {-0.236813f, -0.457491f, -0.035054f, -0.000497f, +0.000010f}, - {-0.067322f, +0.004912f, -0.008444f, +0.000591f, +0.000044f}, - {-0.110001f, -0.188497f, -0.016071f, +0.000306f, +0.000049f} + {-0.255459f, +0.003452f, +0.000162f}, + {-0.409862f, +0.003440f, +0.000963f}, + {+0.077199f, +0.004028f, +0.001741f}, + {-0.160349f, +0.003060f, +0.002227f} }, { - {-0.196649f, -0.440315f, -0.028013f, +0.000028f, +0.000009f}, - {-0.254039f, -0.432758f, -0.039405f, +0.000094f, +0.000057f}, - {+0.018169f, -0.125990f, +0.003787f, +0.000283f, +0.000070f}, - {-0.104872f, -0.193750f, -0.016320f, -0.000067f, +0.000042f} + {-0.238237f, -0.003448f, +0.000017f}, + {-0.389274f, -0.003315f, +0.000451f}, + {+0.103396f, -0.000155f, -0.000865f}, + {-0.141016f, +0.003270f, -0.000528f} }, { - {+0.279232f, +0.288906f, +0.040649f, -0.000288f, -0.000006f}, - {+0.287453f, +0.396154f, +0.041796f, +0.000496f, -0.000012f}, - {+0.065516f, -0.051533f, +0.008251f, -0.000833f, -0.000068f}, - {+0.117846f, +0.150938f, +0.019317f, -0.000398f, -0.000066f} + {-0.221659f, +0.003880f, +0.000200f}, + {-0.360274f, +0.007600f, -0.000068f}, + {+0.127118f, +0.006707f, -0.002120f}, + {-0.136776f, -0.001506f, -0.002388f} }, { - {+0.155838f, +0.477142f, +0.022236f, -0.000054f, -0.000011f}, - {+0.205090f, +0.523697f, +0.032347f, -0.000074f, -0.000064f}, - {-0.043133f, +0.115358f, -0.007458f, -0.000536f, -0.000071f}, - {+0.086685f, +0.200152f, +0.011885f, -0.000042f, -0.000037f} + {-0.206321f, -0.002421f, +0.000222f}, + {-0.323761f, -0.010008f, +0.000633f}, + {+0.147702f, -0.009697f, +0.000777f}, + {-0.138196f, -0.005501f, -0.000185f} }, { - {-0.298969f, -0.220193f, -0.043767f, +0.000325f, +0.000010f}, - {-0.328142f, -0.292452f, -0.047271f, -0.000442f, +0.000014f}, - {-0.051610f, +0.100445f, -0.006535f, +0.000948f, +0.000105f}, - {-0.130003f, -0.132255f, -0.020754f, +0.000362f, +0.000088f} + {-0.192402f, +0.002339f, -0.000141f}, + {-0.283782f, +0.009026f, +0.001400f}, + {+0.162715f, +0.001250f, +0.002766f}, + {-0.137599f, +0.001369f, +0.002680f} }, { - {-0.114168f, -0.502804f, -0.016020f, +0.000104f, +0.000010f}, - {-0.143455f, -0.576024f, -0.024058f, +0.000023f, +0.000077f}, - {+0.061115f, -0.073546f, +0.010498f, +0.000984f, +0.000052f}, - {-0.068233f, -0.228084f, -0.008576f, +0.000257f, +0.000020f} + {-0.179623f, -0.002933f, -0.000145f}, + {-0.244500f, -0.005039f, +0.000589f}, + {+0.172860f, +0.006728f, -0.000517f}, + {-0.130069f, +0.003207f, +0.001003f} }, { - {+0.312611f, +0.151372f, +0.045798f, -0.000314f, -0.000015f}, - {+0.351200f, +0.182575f, +0.051390f, +0.000326f, -0.000020f}, - {+0.031920f, -0.116916f, +0.003818f, -0.000728f, -0.000144f}, - {+0.146596f, +0.100142f, +0.022461f, -0.000165f, -0.000108f} + {-0.168039f, +0.002857f, +0.000210f}, + {-0.207651f, +0.005569f, -0.001162f}, + {+0.183789f, +0.001069f, -0.004319f}, + {-0.111107f, +0.002870f, -0.002170f} }, { - {+0.072361f, +0.518728f, +0.009942f, -0.000175f, -0.000007f}, - {+0.079531f, +0.601014f, +0.014699f, -0.000081f, -0.000095f}, - {-0.074110f, +0.046958f, -0.012342f, -0.001344f, -0.000005f}, - {+0.036969f, +0.268420f, +0.004301f, -0.000333f, +0.000013f} + {-0.157725f, -0.001947f, +0.000454f}, + {-0.172892f, -0.010252f, -0.000596f}, + {+0.198825f, -0.011358f, -0.002404f}, + {-0.080708f, -0.012176f, -0.001780f} }, { - {-0.321149f, -0.084827f, -0.047210f, +0.000251f, +0.000020f}, - {-0.359514f, -0.071785f, -0.052488f, -0.000127f, +0.000038f}, - {-0.004461f, +0.153778f, +0.000819f, +0.000092f, +0.000168f}, - {-0.150780f, -0.016846f, -0.022402f, -0.000246f, +0.000118f} + {-0.148241f, +0.000618f, +0.000026f}, + {-0.141203f, +0.007243f, +0.001063f}, + {+0.212313f, +0.004737f, +0.000973f}, + {-0.046659f, +0.011069f, +0.000996f} }, { - {-0.030564f, -0.529872f, -0.003428f, +0.000214f, -0.000000f}, - {-0.017715f, -0.598148f, -0.005426f, +0.000313f, +0.000115f}, - {+0.077791f, +0.029195f, +0.012192f, +0.001184f, -0.000065f}, - {-0.001917f, -0.241534f, -0.000982f, +0.000017f, -0.000059f} + {-0.138402f, -0.001765f, -0.000579f}, + {-0.113224f, -0.004585f, +0.001287f}, + {+0.215767f, +0.007978f, -0.001019f}, + {-0.020004f, +0.000374f, +0.000573f} }, { - {+0.325748f, +0.016029f, +0.047602f, -0.000149f, -0.000021f}, - {+0.356902f, -0.024523f, +0.052188f, +0.000031f, -0.000071f}, - {-0.031837f, -0.135684f, -0.003925f, +0.000518f, -0.000157f}, - {+0.134040f, -0.031563f, +0.022612f, +0.000523f, -0.000105f} + {-0.127236f, +0.003443f, -0.000426f}, + {-0.086775f, +0.002732f, +0.000319f}, + {+0.206200f, -0.011017f, -0.006667f}, + {-0.006720f, -0.005737f, -0.003684f} }, { - {-0.013284f, +0.534819f, -0.003031f, -0.000141f, +0.000009f}, - {-0.041065f, +0.588511f, -0.002930f, -0.000807f, -0.000127f}, - {-0.057814f, -0.095156f, -0.013622f, +0.000710f, +0.000141f}, - {-0.013462f, +0.193769f, -0.004638f, +0.001465f, +0.000106f} + {-0.114738f, -0.003852f, +0.000286f}, + {-0.059179f, -0.002958f, -0.001772f}, + {+0.184707f, +0.002148f, -0.008785f}, + {-0.006688f, +0.000728f, -0.006182f} }, { - {-0.323552f, +0.059375f, -0.047359f, +0.000017f, +0.000018f}, - {-0.347235f, +0.120486f, -0.050411f, -0.000521f, +0.000120f}, - {+0.056648f, +0.076781f, +0.002619f, -0.000739f, +0.000101f}, - {-0.118370f, +0.031720f, -0.024225f, -0.000048f, +0.000065f} + {-0.100815f, +0.002358f, +0.000595f}, + {-0.029594f, +0.008594f, -0.002770f}, + {+0.151524f, +0.003310f, -0.003987f}, + {-0.019197f, +0.005615f, -0.002853f} } }; -const float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]= +const float rightHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {+0.001139f, +0.701381f, +0.088362f, +0.001507f, +0.000002f}, - {-0.000414f, -0.262095f, +0.237214f, +0.003224f, -0.000036f}, - {+0.002081f, +0.073269f, +0.016442f, -0.002305f, -0.000016f}, - {+0.003374f, +0.067272f, -0.027345f, -0.000156f, +0.000027f} + {+0.181652f, +0.754551f, +0.218658f}, + {-0.313875f, +0.422228f, -0.135528f}, + {+0.014440f, +0.116710f, -0.013575f}, + {+0.042997f, +0.018886f, -0.015597f} }, { - {-0.006858f, +0.573976f, -0.025590f, -0.002173f, -0.000001f}, - {+0.018683f, -0.673324f, -0.155049f, -0.004529f, +0.000042f}, - {-0.004167f, -0.005579f, -0.043222f, +0.004198f, +0.000026f}, - {-0.007696f, +0.026588f, -0.047141f, +0.000930f, -0.000031f} + {-0.171103f, -0.431000f, -0.158827f}, + {+0.162330f, +1.016290f, -0.055279f}, + {-0.009076f, +0.107488f, -0.010075f}, + {-0.002269f, +0.060685f, +0.014338f} }, { - {+0.022690f, +0.504423f, -0.025668f, -0.000505f, -0.000002f}, - {-0.098922f, -0.785742f, -0.002391f, -0.001725f, +0.000029f}, - {+0.001996f, -0.028688f, -0.031830f, -0.002187f, +0.000003f}, - {+0.012563f, -0.012620f, -0.033386f, -0.001639f, -0.000022f} + {-0.320265f, -0.250765f, -0.167171f}, + {+0.685853f, -0.069215f, +0.258616f}, + {-0.021745f, +0.080557f, +0.010049f}, + {-0.070084f, +0.090970f, +0.018109f} }, { - {-0.068470f, +0.403356f, +0.003719f, +0.002403f, +0.000001f}, - {+0.238766f, -0.395418f, -0.032160f, +0.006283f, -0.000045f}, - {-0.003715f, -0.000119f, +0.009760f, -0.000148f, -0.000031f}, - {-0.028559f, -0.040197f, +0.002155f, +0.000892f, +0.000033f} + {-0.090062f, +0.396798f, +0.031329f}, + {+0.547868f, -0.612159f, +0.064837f}, + {-0.014055f, +0.010916f, -0.020054f}, + {-0.104609f, -0.009719f, -0.014645f} }, { - {+0.145134f, +0.119557f, +0.007639f, -0.000923f, +0.000003f}, - {-0.294065f, +0.334693f, +0.019103f, -0.002511f, -0.000020f}, - {+0.020226f, -0.024338f, +0.012605f, +0.001278f, +0.000012f}, - {+0.043958f, -0.145428f, +0.013697f, +0.000566f, +0.000018f} + {+0.310752f, -0.054756f, +0.106519f}, + {-0.077791f, +0.305320f, -0.144875f}, + {+0.048626f, -0.050345f, -0.007511f}, + {-0.035749f, -0.049561f, -0.008157f} }, { - {-0.153301f, -0.308264f, -0.003171f, -0.001265f, -0.000001f}, - {+0.095935f, +0.863498f, +0.010369f, -0.003299f, +0.000045f}, - {-0.032438f, -0.100491f, +0.003144f, -0.001769f, +0.000029f}, - {-0.013113f, -0.237010f, +0.000894f, -0.000875f, -0.000033f} + {+0.590278f, -0.119063f, +0.024674f}, + {-0.708076f, +0.088569f, -0.094265f}, + {+0.119880f, +0.048720f, +0.014661f}, + {+0.120422f, +0.058573f, +0.004643f} }, { - {-0.012428f, -0.509031f, -0.004688f, +0.000988f, -0.000003f}, - {+0.244664f, +0.595158f, +0.023888f, +0.002491f, +0.000012f}, - {+0.002609f, -0.144907f, -0.010043f, +0.000781f, -0.000027f}, - {-0.074154f, -0.145409f, -0.008757f, -0.000058f, -0.000014f} + {+0.638355f, +0.074625f, -0.043889f}, + {-1.048572f, -0.131298f, +0.037692f}, + {+0.143385f, +0.033975f, +0.014623f}, + {+0.293747f, -0.017822f, -0.000451f} }, { - {+0.212788f, -0.155514f, +0.023333f, +0.000561f, +0.000002f}, - {-0.330585f, -0.291160f, -0.047010f, +0.002016f, -0.000043f}, - {+0.050155f, -0.068056f, -0.001580f, +0.001116f, -0.000021f}, - {+0.122861f, +0.153186f, +0.009329f, +0.000801f, +0.000032f} + {+0.521197f, -0.005266f, -0.041412f}, + {-1.094584f, -0.000210f, +0.073803f}, + {+0.109004f, -0.035628f, -0.003452f}, + {+0.407579f, +0.034241f, -0.002887f} }, { - {-0.148866f, +0.399380f, -0.016077f, -0.000584f, +0.000004f}, - {-0.007222f, -0.769639f, +0.001057f, -0.002043f, -0.000007f}, - {-0.045137f, +0.068695f, +0.001800f, -0.000989f, +0.000039f}, - {-0.030243f, +0.388427f, -0.005358f, -0.000487f, +0.000012f} + {+0.361479f, -0.014806f, -0.009497f}, + {-0.986770f, +0.046512f, +0.029288f}, + {+0.057809f, +0.027844f, -0.015215f}, + {+0.409283f, +0.014805f, +0.005752f} }, { - {-0.148858f, +0.389050f, -0.019934f, -0.000504f, -0.000003f}, - {+0.349211f, -0.214703f, +0.051501f, -0.001478f, +0.000039f}, - {-0.029971f, +0.074752f, -0.006844f, -0.000679f, +0.000009f}, - {-0.127591f, +0.245277f, -0.008622f, -0.000243f, -0.000032f} + {+0.229108f, -0.009840f, +0.009477f}, + {-0.839323f, -0.000705f, -0.009034f}, + {+0.036287f, +0.030074f, -0.010227f}, + {+0.293083f, -0.069929f, -0.004421f} }, { - {+0.239012f, -0.214946f, +0.031611f, +0.000498f, -0.000004f}, - {-0.196316f, +0.613847f, -0.027133f, +0.001726f, +0.000004f}, - {+0.059322f, -0.077618f, +0.010338f, +0.000544f, -0.000046f}, - {+0.142102f, -0.158560f, +0.013819f, +0.000336f, -0.000011f} + {+0.125590f, +0.030181f, +0.007318f}, + {-0.687756f, -0.052219f, -0.009126f}, + {+0.052382f, -0.019274f, +0.003613f}, + {+0.122951f, +0.036356f, -0.013394f} }, { - {+0.056721f, -0.491541f, +0.006821f, +0.000413f, +0.000004f}, - {-0.248916f, +0.524024f, -0.041690f, +0.001135f, -0.000035f}, - {+0.029432f, -0.129169f, -0.000386f, +0.000757f, +0.000007f}, - {+0.025409f, -0.327769f, +0.004549f, +0.000075f, +0.000034f} + {+0.030890f, -0.030176f, -0.000832f}, + {-0.531513f, +0.048483f, +0.004668f}, + {+0.067811f, -0.004747f, +0.002746f}, + {-0.026040f, -0.009502f, -0.004388f} }, { - {-0.277481f, +0.028032f, -0.037920f, -0.000438f, +0.000003f}, - {+0.308141f, -0.332951f, +0.045686f, -0.001496f, -0.000003f}, - {-0.108659f, +0.087169f, -0.015132f, -0.000418f, +0.000046f}, - {-0.144191f, -0.063507f, -0.018317f, -0.000173f, +0.000009f} + {-0.062962f, +0.019124f, -0.003537f}, + {-0.376029f, -0.026217f, +0.006323f}, + {+0.042499f, +0.013437f, -0.001738f}, + {-0.120763f, +0.008891f, +0.001968f} }, { - {+0.037467f, +0.509783f, +0.006165f, -0.000331f, -0.000005f}, - {+0.118379f, -0.623008f, +0.023288f, -0.000858f, +0.000032f}, - {+0.020828f, +0.293771f, +0.009322f, -0.000570f, -0.000020f}, - {+0.044708f, +0.223468f, +0.005411f, -0.000025f, -0.000036f} + {-0.150437f, -0.012367f, -0.001050f}, + {-0.234297f, +0.021072f, +0.000774f}, + {-0.046092f, -0.025628f, -0.001827f}, + {-0.163500f, +0.007913f, +0.005640f} }, { - {+0.276681f, +0.136508f, +0.039053f, +0.000399f, -0.000002f}, - {-0.342800f, +0.086499f, -0.051427f, +0.001312f, +0.000004f}, - {+0.141529f, +0.115364f, +0.013240f, +0.000205f, -0.000040f}, - {+0.110040f, +0.119206f, +0.016186f, +0.000083f, -0.000006f} + {-0.224579f, +0.011037f, +0.001567f}, + {-0.118032f, -0.020982f, -0.001167f}, + {-0.190587f, +0.031698f, +0.001189f}, + {-0.181600f, +0.008625f, +0.006827f} }, { - {-0.117783f, -0.468960f, -0.017913f, +0.000250f, +0.000005f}, - {-0.005671f, +0.604318f, -0.007143f, +0.000660f, -0.000031f}, - {-0.130049f, -0.297226f, -0.017966f, +0.000439f, +0.000030f}, - {-0.077788f, -0.170577f, -0.011766f, -0.000035f, +0.000037f} + {-0.283765f, -0.012148f, +0.001665f}, + {-0.031141f, +0.014212f, -0.000704f}, + {-0.354999f, -0.033990f, +0.005051f}, + {-0.201565f, -0.012572f, +0.001547f} }, { - {-0.252966f, -0.256306f, -0.036605f, -0.000365f, +0.000002f}, - {+0.337478f, +0.074281f, +0.052432f, -0.001197f, -0.000005f}, - {-0.072906f, -0.386255f, -0.005369f, -0.000119f, +0.000033f}, - {-0.075520f, -0.174614f, -0.010607f, -0.000037f, +0.000003f} + {-0.330851f, +0.010110f, +0.000281f}, + {+0.032740f, -0.010680f, -0.000608f}, + {-0.489897f, +0.028555f, +0.005370f}, + {-0.226930f, +0.003469f, +0.000412f} }, { - {+0.180447f, +0.410401f, +0.027706f, -0.000193f, -0.000005f}, - {-0.079743f, -0.570802f, -0.007521f, -0.000528f, +0.000032f}, - {+0.189755f, +0.008151f, +0.021117f, -0.000340f, -0.000036f}, - {+0.097648f, +0.090203f, +0.013931f, +0.000113f, -0.000038f} + {-0.370651f, -0.006974f, -0.000273f}, + {+0.085140f, +0.009699f, -0.000484f}, + {-0.550417f, -0.008550f, +0.002078f}, + {-0.248676f, -0.002190f, +0.002941f} }, { - {+0.221150f, +0.344584f, +0.031954f, +0.000342f, -0.000001f}, - {-0.324392f, -0.195009f, -0.049761f, +0.001141f, +0.000005f}, - {-0.055564f, +0.372598f, -0.003229f, +0.000147f, -0.000026f}, - {+0.029197f, +0.196512f, +0.004268f, -0.000027f, +0.000001f} + {-0.408944f, +0.005900f, +0.000497f}, + {+0.135902f, -0.010386f, -0.000573f}, + {-0.516823f, -0.021637f, +0.000484f}, + {-0.254059f, +0.003659f, +0.002185f} }, { - {-0.234543f, -0.356749f, -0.036109f, +0.000161f, +0.000005f}, - {+0.158828f, +0.551737f, +0.020300f, +0.000447f, -0.000034f}, - {-0.128996f, +0.253163f, -0.019502f, +0.000205f, +0.000038f}, - {-0.086326f, +0.024093f, -0.010653f, -0.000104f, +0.000038f} + {-0.450752f, -0.008484f, +0.001446f}, + {+0.191283f, +0.014617f, +0.000163f}, + {-0.408035f, +0.040263f, +0.003661f}, + {-0.231639f, +0.007741f, +0.000045f} }, { - {-0.180736f, -0.438688f, -0.025011f, -0.000324f, +0.000001f}, - {+0.301948f, +0.334020f, +0.045105f, -0.001128f, -0.000004f}, - {+0.108851f, -0.109590f, +0.011684f, +0.000065f, +0.000022f}, - {+0.007794f, -0.114979f, -0.002557f, +0.000055f, -0.000004f} + {-0.497579f, +0.012039f, +0.001191f}, + {+0.253854f, -0.015815f, +0.001949f}, + {-0.274552f, -0.030994f, +0.006408f}, + {-0.178594f, -0.020739f, +0.002028f} }, { - {+0.283619f, +0.272902f, +0.041849f, -0.000148f, -0.000005f}, - {-0.241474f, -0.503493f, -0.031717f, -0.000352f, +0.000035f}, - {+0.045390f, -0.198917f, +0.011556f, -0.000593f, -0.000041f}, - {+0.041019f, -0.061071f, +0.008824f, +0.000017f, -0.000039f} + {-0.545362f, -0.010634f, +0.000559f}, + {+0.324146f, +0.011460f, +0.001641f}, + {-0.169370f, +0.009075f, +0.003395f}, + {-0.105323f, +0.013694f, +0.002900f} }, { - {+0.123506f, +0.516214f, +0.017365f, +0.000301f, -0.000001f}, - {-0.256327f, -0.482583f, -0.037542f, +0.001057f, +0.000002f}, - {-0.083839f, +0.008074f, -0.016916f, +0.000282f, -0.000018f}, - {+0.003422f, -0.003727f, +0.003177f, -0.000000f, +0.000006f} + {-0.587196f, +0.008279f, +0.000328f}, + {+0.403134f, -0.010566f, -0.002217f}, + {-0.118490f, +0.003381f, -0.001814f}, + {-0.027446f, -0.008251f, -0.001827f} }, { - {-0.313797f, -0.154486f, -0.046391f, +0.000147f, +0.000005f}, - {+0.319981f, +0.404727f, +0.042569f, +0.000317f, -0.000036f}, - {-0.021107f, +0.110660f, -0.004978f, +0.000416f, +0.000047f}, - {-0.008153f, -0.022716f, -0.004670f, +0.000045f, +0.000040f} + {-0.618017f, -0.004259f, +0.000361f}, + {+0.490358f, +0.020714f, -0.004529f}, + {-0.113358f, -0.003251f, -0.002770f}, + {+0.041459f, +0.013481f, -0.005194f} }, { - {-0.061089f, -0.539358f, -0.009248f, -0.000286f, +0.000001f}, - {+0.177073f, +0.627220f, +0.025260f, -0.001022f, -0.000001f}, - {+0.071424f, -0.032340f, +0.013321f, -0.000179f, +0.000014f}, - {-0.053388f, +0.046353f, -0.007111f, -0.000176f, -0.000010f} + {-0.637687f, +0.001567f, +0.000820f}, + {+0.576790f, -0.023931f, -0.002213f}, + {-0.125198f, +0.004103f, -0.001443f}, + {+0.086209f, -0.010781f, -0.003979f} }, { - {+0.324287f, +0.053524f, +0.049068f, -0.000116f, -0.000006f}, - {-0.369344f, -0.211212f, -0.048775f, -0.000225f, +0.000037f}, - {+0.008002f, -0.135643f, +0.001207f, -0.000329f, -0.000053f}, - {+0.026056f, +0.169088f, +0.008645f, +0.000250f, -0.000042f} + {-0.651150f, -0.001076f, +0.001428f}, + {+0.645409f, +0.014669f, +0.000718f}, + {-0.123622f, +0.001940f, -0.001608f}, + {+0.092869f, +0.002431f, -0.000324f} }, { - {+0.005776f, +0.541579f, +0.000581f, +0.000240f, -0.000000f}, - {-0.077934f, -0.656141f, -0.014760f, +0.000940f, +0.000001f}, - {-0.071537f, -0.021095f, -0.007901f, +0.000019f, -0.000006f}, - {+0.095328f, +0.067372f, +0.010448f, -0.000101f, +0.000015f} + {-0.664780f, +0.003292f, +0.001710f}, + {+0.683586f, -0.000299f, +0.000557f}, + {-0.092026f, -0.012393f, -0.001589f}, + {+0.056395f, +0.017649f, +0.000374f} }, { - {-0.328162f, +0.029093f, -0.049230f, +0.000107f, +0.000007f}, - {+0.369662f, +0.037217f, +0.051825f, +0.000167f, -0.000038f}, - {+0.023527f, +0.120022f, -0.000102f, +0.000278f, +0.000058f}, - {-0.090284f, -0.212186f, -0.013169f, -0.000132f, +0.000043f} + {-0.682371f, -0.006662f, +0.000792f}, + {+0.693411f, -0.007664f, -0.002560f}, + {-0.036899f, +0.016426f, -0.000987f}, + {-0.012285f, -0.023342f, -0.003158f} }, { - {+0.048978f, -0.548479f, +0.007485f, -0.000233f, -0.000001f}, - {+0.003228f, +0.602938f, +0.001617f, -0.000911f, -0.000001f}, - {+0.040104f, +0.095644f, +0.005888f, -0.000009f, -0.000005f}, - {-0.081710f, -0.220378f, -0.013048f, -0.000016f, -0.000021f} + {-0.702854f, +0.004929f, -0.000169f}, + {+0.690742f, +0.001912f, -0.004494f}, + {+0.017981f, -0.013806f, -0.000030f}, + {-0.088921f, +0.012514f, -0.003181f} }, { - {+0.324250f, -0.126479f, +0.048291f, -0.000066f, -0.000007f}, - {-0.357292f, +0.046143f, -0.050921f, -0.000098f, +0.000041f}, - {-0.027149f, -0.003860f, +0.000272f, -0.000124f, -0.000060f}, - {+0.141329f, +0.121139f, +0.018219f, +0.000314f, -0.000043f} + {-0.722549f, -0.002146f, +0.000430f}, + {+0.692300f, +0.005917f, -0.002876f}, + {+0.046872f, +0.003463f, +0.001220f}, + {-0.154235f, -0.010645f, -0.001356f} }, { - {-0.104734f, +0.530347f, -0.015582f, +0.000224f, +0.000002f}, - {+0.054628f, -0.590170f, +0.008056f, +0.000909f, -0.000000f}, - {-0.005584f, -0.032979f, -0.004816f, +0.000029f, +0.000015f}, - {+0.037866f, +0.274890f, +0.006759f, -0.000046f, +0.000027f} + {-0.739092f, +0.002594f, +0.001242f}, + {+0.704186f, -0.008734f, +0.000319f}, + {+0.036822f, +0.011640f, +0.000478f}, + {-0.201705f, +0.002195f, +0.000385f} }, { - {-0.308177f, +0.218644f, -0.045991f, +0.000043f, +0.000007f}, - {+0.346201f, -0.142031f, +0.048180f, +0.000046f, -0.000045f}, - {-0.007019f, -0.030662f, -0.000480f, +0.000081f, +0.000058f}, - {-0.162861f, -0.035781f, -0.023778f, -0.000324f, +0.000041f} + {-0.751826f, -0.003070f, +0.000998f}, + {+0.721419f, +0.002290f, +0.001142f}, + {-0.005059f, -0.018609f, -0.002901f}, + {-0.237750f, -0.005780f, +0.002036f} }, { - {+0.155747f, -0.491433f, +0.022764f, -0.000231f, -0.000003f}, - {-0.112390f, +0.563014f, -0.016093f, -0.000905f, +0.000002f}, - {+0.014636f, -0.060316f, +0.003797f, -0.000151f, -0.000023f}, - {+0.007188f, -0.297579f, +0.001361f, +0.000018f, -0.000032f} + {-0.760887f, +0.001608f, +0.000546f}, + {+0.736911f, -0.001064f, -0.000228f}, + {-0.057870f, +0.010116f, -0.004534f}, + {-0.273933f, +0.006641f, +0.002467f} }, { - {+0.282333f, -0.296973f, +0.042631f, -0.000038f, -0.000007f}, - {-0.325943f, +0.233378f, -0.045604f, -0.000052f, +0.000049f}, - {+0.025539f, -0.043016f, +0.004050f, -0.000129f, -0.000057f}, - {+0.170600f, -0.047495f, +0.024487f, +0.000283f, -0.000040f} + {-0.767195f, -0.000265f, +0.000748f}, + {+0.748024f, +0.000586f, -0.001053f}, + {-0.102334f, +0.003212f, +0.000059f}, + {-0.315083f, -0.011342f, +0.002600f} }, { - {-0.198966f, +0.440444f, -0.029339f, +0.000240f, +0.000003f}, - {+0.163937f, -0.519986f, +0.024102f, +0.000910f, -0.000006f}, - {-0.041643f, +0.059924f, -0.008056f, +0.000252f, +0.000028f}, - {-0.058279f, +0.303786f, -0.008000f, +0.000033f, +0.000037f} + {-0.772327f, +0.001114f, +0.000964f}, + {+0.756683f, -0.002199f, -0.000983f}, + {-0.133057f, +0.004906f, +0.003973f}, + {-0.355964f, +0.012189f, +0.001107f} }, { - {-0.251233f, +0.360645f, -0.037855f, +0.000048f, +0.000007f}, - {+0.301209f, -0.307267f, +0.042244f, +0.000061f, -0.000052f}, - {-0.017898f, +0.097992f, -0.002832f, +0.000217f, +0.000060f}, - {-0.154977f, +0.157077f, -0.021873f, -0.000264f, +0.000040f} + {-0.777379f, -0.001664f, +0.000676f}, + {+0.767213f, +0.002558f, -0.000597f}, + {-0.152753f, -0.009690f, +0.001092f}, + {-0.384303f, -0.006913f, -0.001047f} }, { - {+0.235922f, -0.385212f, +0.034692f, -0.000230f, -0.000003f}, - {-0.211902f, +0.482439f, -0.031812f, -0.000875f, +0.000009f}, - {+0.062526f, -0.022786f, +0.009165f, -0.000192f, -0.000037f}, - {+0.100642f, -0.232077f, +0.012026f, +0.000003f, -0.000044f} + {-0.782304f, +0.001186f, +0.000401f}, + {+0.783173f, -0.004116f, -0.000499f}, + {-0.161920f, -0.000439f, -0.001076f}, + {-0.390874f, -0.005592f, -0.000791f} }, { - {+0.215580f, -0.416556f, +0.032649f, -0.000062f, -0.000008f}, - {-0.273278f, +0.387323f, -0.037577f, -0.000065f, +0.000055f}, - {-0.005939f, -0.125998f, +0.001105f, -0.000285f, -0.000067f}, - {+0.119018f, -0.200389f, +0.019595f, +0.000282f, -0.000042f} + {-0.786466f, -0.000413f, +0.000504f}, + {+0.805468f, +0.004296f, -0.000905f}, + {-0.161504f, +0.005798f, +0.001317f}, + {-0.378159f, +0.009420f, +0.002017f} }, { - {-0.266556f, +0.321627f, -0.039270f, +0.000204f, +0.000005f}, - {+0.262381f, -0.436199f, +0.039035f, +0.000825f, -0.000011f}, - {-0.067202f, -0.031111f, -0.011093f, +0.000033f, +0.000054f}, - {-0.114634f, +0.160892f, -0.016486f, -0.000093f, +0.000057f} + {-0.789480f, +0.000911f, +0.000469f}, + {+0.831991f, -0.006156f, -0.001415f}, + {-0.154727f, +0.000127f, +0.002457f}, + {-0.358994f, -0.003224f, +0.003001f} }, { - {-0.175988f, +0.460735f, -0.026828f, +0.000048f, +0.000010f}, - {+0.233172f, -0.480676f, +0.031122f, +0.000031f, -0.000060f}, - {+0.031548f, +0.122002f, +0.003267f, +0.000158f, +0.000072f}, - {-0.094567f, +0.192621f, -0.015001f, -0.000394f, +0.000041f} + {-0.791179f, +0.000118f, +0.000378f}, + {+0.858608f, +0.007156f, -0.000826f}, + {-0.143224f, -0.002141f, -0.000223f}, + {-0.346009f, -0.003832f, +0.000505f} }, { - {+0.289864f, -0.252340f, +0.042717f, -0.000164f, -0.000008f}, - {-0.309890f, +0.352443f, -0.045041f, -0.000820f, +0.000012f}, - {+0.059594f, +0.080834f, +0.009319f, +0.000095f, -0.000085f}, - {+0.123492f, -0.142957f, +0.017979f, +0.000125f, -0.000076f} + {-0.791713f, -0.000506f, +0.000690f}, + {+0.880258f, -0.003409f, -0.000310f}, + {-0.126671f, -0.005516f, -0.001744f}, + {-0.344447f, +0.002552f, -0.002098f} }, { - {+0.134575f, -0.490695f, +0.020657f, -0.000008f, -0.000011f}, - {-0.176248f, +0.555316f, -0.023664f, +0.000054f, +0.000070f}, - {-0.054408f, -0.093413f, -0.005141f, +0.000202f, -0.000064f}, - {+0.078026f, -0.213530f, +0.012432f, +0.000637f, -0.000030f} + {-0.791760f, -0.000637f, +0.000646f}, + {+0.894068f, -0.000147f, -0.001099f}, + {-0.106700f, +0.011976f, +0.001536f}, + {-0.352724f, +0.003880f, -0.000028f} }, { - {-0.306423f, +0.183981f, -0.045149f, +0.000152f, +0.000012f}, - {+0.341487f, -0.240296f, +0.050133f, +0.000895f, -0.000016f}, - {-0.041086f, -0.112975f, -0.007981f, +0.000040f, +0.000125f}, - {-0.138721f, +0.120523f, -0.020161f, +0.000004f, +0.000099f} + {-0.791607f, +0.000326f, +0.000259f}, + {+0.900705f, +0.000766f, -0.002346f}, + {-0.087833f, -0.003369f, +0.004535f}, + {-0.367814f, +0.002794f, +0.003185f} }, { - {-0.092719f, +0.511558f, -0.014604f, -0.000050f, +0.000009f}, - {+0.112835f, -0.589997f, +0.014321f, -0.000122f, -0.000086f}, - {+0.068469f, +0.059054f, +0.008838f, -0.000612f, +0.000032f}, - {-0.054382f, +0.253255f, -0.007586f, -0.000904f, +0.000005f} + {-0.791360f, +0.000216f, +0.000145f}, + {+0.902761f, +0.003469f, -0.001579f}, + {-0.071216f, -0.005336f, +0.001636f}, + {-0.384313f, -0.008317f, +0.002102f} }, { - {+0.317269f, -0.115684f, +0.046850f, -0.000208f, -0.000018f}, - {-0.356933f, +0.130812f, -0.052103f, -0.001044f, +0.000027f}, - {+0.019507f, +0.139642f, +0.002950f, -0.000683f, -0.000159f}, - {+0.152449f, -0.061207f, +0.020045f, -0.000364f, -0.000115f} + {-0.791514f, -0.000959f, +0.000554f}, + {+0.901431f, -0.000403f, +0.000135f}, + {-0.050334f, -0.003160f, -0.002061f}, + {-0.392811f, +0.004068f, -0.000843f} }, { - {+0.051096f, -0.523693f, +0.008474f, +0.000105f, -0.000004f}, - {-0.049349f, +0.600329f, -0.005605f, +0.000022f, +0.000106f}, - {-0.079985f, -0.011392f, -0.007657f, +0.000780f, +0.000028f}, - {+0.017397f, -0.267260f, +0.004496f, +0.000957f, +0.000035f} + {-0.792816f, -0.000333f, +0.001006f}, + {+0.897192f, -0.003319f, -0.000240f}, + {-0.018937f, +0.014843f, -0.000267f}, + {-0.385889f, +0.008000f, -0.000602f} }, { - {-0.323905f, +0.049833f, -0.047865f, +0.000329f, +0.000021f}, - {+0.358893f, -0.027640f, +0.053272f, +0.001258f, -0.000053f}, - {+0.015053f, -0.158953f, -0.000193f, +0.001713f, +0.000167f}, - {-0.144359f, -0.018540f, -0.020249f, +0.000901f, +0.000114f} + {-0.795515f, +0.001892f, +0.000664f}, + {+0.892619f, +0.002628f, -0.001553f}, + {+0.020997f, -0.013093f, +0.003597f}, + {-0.364329f, -0.010852f, +0.002618f} }, { - {-0.008373f, +0.533499f, -0.002225f, -0.000084f, -0.000004f}, - {-0.010355f, -0.593074f, -0.003536f, +0.000223f, -0.000122f}, - {+0.071969f, -0.070538f, +0.006817f, -0.000021f, -0.000104f}, - {+0.009075f, +0.217846f, -0.000438f, -0.000486f, -0.000083f} + {-0.798742f, -0.001369f, -0.000006f}, + {+0.889854f, -0.001159f, -0.002594f}, + {+0.062746f, +0.000823f, +0.002081f}, + {-0.335764f, +0.002095f, +0.002620f} }, { - {+0.325536f, +0.023312f, +0.048108f, -0.000519f, -0.000020f}, - {-0.352731f, -0.066640f, -0.052836f, -0.001159f, +0.000094f}, - {-0.047485f, +0.116702f, -0.002224f, -0.002868f, -0.000134f}, - {+0.125804f, +0.038871f, +0.018687f, -0.001207f, -0.000088f} + {-0.801561f, -0.000332f, -0.000055f}, + {+0.888481f, -0.002442f, -0.002445f}, + {+0.101614f, +0.005650f, -0.006242f}, + {-0.306982f, +0.005040f, -0.003292f} }, { - {-0.036324f, -0.531073f, -0.003989f, -0.000084f, +0.000013f}, - {+0.069318f, +0.580051f, +0.011694f, -0.000718f, +0.000126f}, - {-0.044835f, +0.120121f, -0.003388f, -0.003194f, +0.000173f}, - {-0.016464f, -0.181504f, -0.002802f, -0.001577f, +0.000124f} + {-0.803505f, +0.001996f, +0.000969f}, + {+0.886774f, +0.004132f, -0.000094f}, + {+0.134585f, +0.001923f, -0.014731f}, + {-0.282127f, -0.002996f, -0.011457f} } }; -const float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]= +const float rightHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]= { { - {-0.075561f, -0.068517f, +0.140821f, -0.000006f, -0.000001f}, - {+0.113351f, -0.312423f, +0.154809f, -0.003274f, +0.000040f}, - {-0.002167f, -0.037131f, +0.050206f, -0.009097f, +0.000022f}, - {-0.008959f, -0.001538f, +0.017300f, -0.005827f, -0.000030f} + {-0.171042f, +0.590899f, -0.184148f}, + {+0.244016f, -0.359802f, +0.065072f}, + {-0.014995f, +0.035748f, -0.012250f}, + {-0.031507f, +0.034780f, -0.009895f} }, { - {+0.088726f, -0.056723f, -0.005193f, -0.002691f, -0.000002f}, - {-0.119871f, -0.624601f, +0.192908f, -0.005870f, +0.000033f}, - {+0.004166f, -0.045506f, +0.052787f, -0.000546f, +0.000010f}, - {+0.009543f, +0.003765f, +0.008451f, +0.003327f, -0.000025f} + {-0.228601f, +0.478433f, -0.200802f}, + {+0.468416f, +0.184796f, +0.220307f}, + {-0.021499f, +0.027785f, -0.012584f}, + {-0.060325f, +0.030602f, -0.002599f} }, { - {-0.102143f, +0.113338f, +0.041532f, +0.003556f, +0.000001f}, - {+0.144265f, -0.722990f, -0.063761f, +0.009098f, -0.000044f}, - {-0.005127f, +0.024047f, -0.013948f, +0.005687f, -0.000029f}, - {-0.011405f, +0.075487f, -0.028027f, -0.000790f, +0.000032f} + {+0.101029f, -0.456163f, +0.083058f}, + {+0.043611f, +0.870939f, +0.055288f}, + {+0.001858f, +0.027597f, -0.016310f}, + {-0.029059f, +0.033806f, -0.005356f} }, { - {+0.102256f, +0.332031f, -0.028467f, -0.000969f, +0.000002f}, - {-0.105041f, -0.913298f, -0.007994f, -0.001561f, -0.000024f}, - {+0.007491f, +0.060974f, -0.023635f, -0.001357f, +0.000004f}, - {+0.005542f, +0.127425f, -0.011646f, +0.000496f, +0.000020f} + {+0.410000f, -0.084502f, +0.139239f}, + {-0.675225f, -0.218111f, -0.204844f}, + {+0.040662f, +0.051315f, -0.018039f}, + {+0.063503f, +0.056458f, -0.016519f} }, { - {-0.044065f, +0.500826f, -0.002410f, -0.001370f, -0.000001f}, - {-0.092604f, -0.883373f, -0.024383f, -0.004737f, +0.000046f}, - {-0.004561f, +0.083819f, -0.019790f, -0.002951f, +0.000031f}, - {+0.027047f, +0.113206f, -0.016192f, -0.001506f, -0.000033f} + {+0.415696f, +0.265055f, +0.002626f}, + {-1.013647f, -0.334903f, -0.081079f}, + {+0.065042f, -0.040883f, +0.012352f}, + {+0.181037f, -0.059880f, +0.005085f} }, { - {-0.101331f, +0.396216f, -0.004920f, +0.000653f, -0.000003f}, - {+0.315234f, -0.274804f, +0.039014f, +0.001908f, +0.000016f}, - {-0.020480f, +0.081227f, +0.012774f, +0.001524f, -0.000020f}, - {-0.075525f, -0.016066f, +0.005310f, +0.001230f, -0.000016f} + {+0.148368f, -0.111388f, -0.073685f}, + {-0.845933f, +0.250930f, +0.091257f}, + {+0.025616f, -0.060138f, +0.012766f}, + {+0.228995f, -0.032819f, +0.003215f} }, { - {+0.205124f, -0.066361f, +0.022115f, +0.000986f, +0.000002f}, - {-0.252202f, +0.571430f, -0.010069f, +0.002911f, -0.000045f}, - {+0.049641f, -0.008053f, +0.006538f, +0.000795f, -0.000026f}, - {+0.069872f, -0.229431f, +0.016281f, +0.000270f, +0.000032f} + {-0.193830f, -0.014212f, -0.040266f}, + {-0.402943f, -0.020025f, +0.092885f}, + {-0.058690f, +0.041101f, -0.008172f}, + {+0.161828f, +0.015394f, -0.004824f} }, { - {-0.075366f, -0.478001f, -0.007669f, -0.000701f, +0.000003f}, - {-0.124742f, +0.753308f, -0.025384f, -0.001863f, -0.000009f}, - {-0.028983f, -0.121665f, -0.007415f, -0.000267f, +0.000034f}, - {+0.036071f, -0.292663f, -0.003455f, -0.000819f, +0.000013f} + {-0.448848f, +0.024310f, +0.012126f}, + {+0.042491f, -0.043522f, +0.007450f}, + {-0.129054f, -0.013924f, -0.014446f}, + {-0.004772f, -0.042423f, +0.005623f} }, { - {-0.186385f, -0.294120f, -0.028378f, -0.000604f, -0.000002f}, - {+0.364681f, -0.008978f, +0.038744f, -0.001757f, +0.000041f}, - {-0.036441f, -0.104767f, -0.010428f, -0.000824f, +0.000015f}, - {-0.145432f, -0.035047f, -0.010123f, +0.000064f, -0.000032f} + {-0.581348f, +0.015560f, +0.027528f}, + {+0.364335f, -0.028974f, -0.038991f}, + {-0.152614f, -0.032355f, -0.005641f}, + {-0.218401f, +0.075676f, -0.000317f} }, { - {+0.200759f, +0.301898f, +0.028191f, +0.000609f, -0.000004f}, - {-0.106790f, -0.737079f, -0.007371f, +0.001552f, +0.000005f}, - {+0.050065f, +0.035831f, +0.013930f, +0.000498f, -0.000043f}, - {+0.098812f, +0.316605f, +0.005024f, +0.000388f, -0.000012f} + {-0.641251f, -0.033204f, +0.014171f}, + {+0.576730f, +0.078039f, -0.024279f}, + {-0.144066f, +0.021824f, +0.009938f}, + {-0.391879f, -0.026769f, -0.009335f} }, { - {+0.102918f, +0.447646f, +0.016687f, +0.000392f, +0.000003f}, - {-0.311637f, -0.412036f, -0.037367f, +0.001208f, -0.000037f}, - {+0.029150f, +0.073712f, +0.005390f, +0.000373f, -0.000001f}, - {+0.078159f, +0.331302f, +0.015024f, +0.000096f, +0.000033f} + {-0.678995f, +0.021986f, +0.000075f}, + {+0.725441f, -0.048920f, +0.000285f}, + {-0.153455f, +0.022432f, +0.008363f}, + {-0.464657f, -0.026611f, +0.001799f} }, { - {-0.263157f, -0.117240f, -0.038079f, -0.000498f, +0.000003f}, - {+0.266046f, +0.483755f, +0.030591f, -0.001325f, -0.000003f}, - {-0.079262f, -0.094840f, -0.015385f, -0.000509f, +0.000047f}, - {-0.153547f, -0.029982f, -0.019729f, -0.000450f, +0.000010f} + {-0.709246f, -0.001743f, -0.002228f}, + {+0.829481f, +0.007880f, +0.002786f}, + {-0.208073f, -0.023291f, +0.000232f}, + {-0.446725f, +0.013756f, +0.010505f} }, { - {-0.007705f, -0.507985f, -0.003383f, -0.000318f, -0.000004f}, - {+0.186453f, +0.597236f, +0.023398f, -0.000963f, +0.000033f}, - {-0.013117f, -0.205170f, +0.001765f, -0.000228f, -0.000014f}, - {+0.017314f, -0.287283f, -0.002959f, -0.000038f, -0.000035f} + {-0.725841f, -0.005310f, +0.002197f}, + {+0.889756f, +0.003342f, -0.005446f}, + {-0.296494f, +0.020861f, +0.000461f}, + {-0.383826f, -0.016046f, +0.008157f} }, { - {+0.280521f, -0.062761f, +0.041073f, +0.000449f, -0.000003f}, - {-0.334574f, -0.214167f, -0.043236f, +0.001215f, +0.000003f}, - {+0.133038f, +0.011844f, +0.017286f, +0.000551f, -0.000044f}, - {+0.127101f, -0.107475f, +0.022000f, +0.000440f, -0.000008f} + {-0.724803f, +0.003851f, +0.004749f}, + {+0.910037f, +0.002807f, -0.007312f}, + {-0.382641f, -0.013902f, +0.003575f}, + {-0.319137f, +0.005237f, +0.005556f} }, { - {-0.080859f, +0.491833f, -0.009289f, +0.000270f, +0.000005f}, - {-0.060956f, -0.629530f, -0.006506f, +0.000817f, -0.000032f}, - {-0.073930f, +0.331264f, -0.010959f, +0.000254f, +0.000026f}, - {-0.063542f, +0.194964f, -0.009265f, +0.000065f, +0.000037f} + {-0.710495f, -0.001176f, +0.003666f}, + {+0.902293f, +0.002075f, -0.004352f}, + {-0.421514f, +0.001837f, +0.005564f}, + {-0.276374f, +0.006416f, -0.000678f} }, { - {-0.266097f, +0.204693f, -0.039752f, -0.000407f, +0.000002f}, - {+0.343709f, +0.003857f, +0.048079f, -0.001153f, -0.000004f}, - {-0.120675f, +0.268205f, -0.012518f, -0.000600f, +0.000037f}, - {-0.094236f, +0.151237f, -0.013332f, -0.000477f, +0.000005f} + {-0.690926f, +0.001911f, +0.001428f}, + {+0.883286f, -0.004067f, -0.003096f}, + {-0.382030f, +0.012331f, +0.003744f}, + {-0.247702f, +0.008689f, -0.002881f} }, { - {+0.151764f, -0.437914f, +0.020131f, -0.000242f, -0.000005f}, - {-0.036841f, +0.588874f, -0.009139f, -0.000664f, +0.000032f}, - {+0.174802f, -0.176925f, +0.017691f, -0.000280f, -0.000033f}, - {+0.090868f, -0.134423f, +0.011793f, -0.000076f, -0.000038f} + {-0.672402f, -0.004418f, +0.000819f}, + {+0.868037f, +0.001291f, -0.002503f}, + {-0.260382f, -0.031252f, -0.000392f}, + {-0.215212f, -0.010735f, +0.000421f} }, { - {+0.237215f, -0.304481f, +0.035938f, +0.000373f, -0.000001f}, - {-0.332318f, +0.127083f, -0.047424f, +0.001052f, +0.000005f}, - {+0.006779f, -0.431468f, +0.002691f, +0.000532f, -0.000029f}, - {+0.053552f, -0.194194f, +0.007469f, +0.000494f, -0.000001f} + {-0.658558f, +0.003708f, +0.001700f}, + {+0.863001f, +0.000603f, -0.002111f}, + {-0.084457f, +0.046037f, -0.001989f}, + {-0.169471f, +0.007931f, +0.000103f} }, { - {-0.208558f, +0.382505f, -0.029564f, +0.000207f, +0.000005f}, - {+0.116623f, -0.564310f, +0.021854f, +0.000528f, -0.000033f}, - {-0.172351f, -0.159278f, -0.018428f, +0.000360f, +0.000037f}, - {-0.097811f, +0.036173f, -0.011033f, +0.000077f, +0.000038f} + {-0.650017f, -0.001079f, +0.002333f}, + {+0.867523f, -0.003563f, -0.001620f}, + {+0.093137f, -0.042759f, +0.000290f}, + {-0.110082f, -0.012804f, -0.002290f} }, { - {-0.202490f, +0.392017f, -0.029907f, -0.000333f, +0.000001f}, - {+0.316139f, -0.253384f, +0.044455f, -0.000945f, -0.000004f}, - {+0.097332f, +0.245644f, +0.004917f, -0.000556f, +0.000023f}, - {-0.006532f, +0.174857f, -0.002876f, -0.000550f, -0.000002f} + {-0.643665f, -0.001088f, +0.001723f}, + {+0.877421f, +0.003410f, -0.000713f}, + {+0.217492f, +0.016953f, +0.001740f}, + {-0.046668f, +0.018761f, -0.001213f} }, { - {+0.261135f, -0.320885f, +0.037011f, -0.000181f, -0.000005f}, - {-0.197969f, +0.536807f, -0.033309f, -0.000398f, +0.000034f}, - {+0.081783f, +0.256891f, +0.014473f, -0.000242f, -0.000040f}, - {+0.065893f, +0.064104f, +0.007328f, +0.000082f, -0.000039f} + {-0.633405f, -0.001560f, +0.000669f}, + {+0.887575f, +0.001389f, -0.001467f}, + {+0.260289f, +0.010429f, -0.001427f}, + {+0.003491f, -0.008000f, +0.000581f} }, { - {+0.153724f, -0.486020f, +0.022676f, +0.000325f, -0.000001f}, - {-0.283217f, +0.402227f, -0.039413f, +0.000851f, +0.000003f}, - {-0.100031f, -0.031468f, -0.013972f, +0.000537f, -0.000020f}, - {-0.008541f, -0.048318f, +0.000499f, +0.000444f, +0.000005f} + {-0.613764f, +0.006196f, +0.000648f}, + {+0.893912f, -0.004015f, -0.004684f}, + {+0.234569f, -0.016937f, -0.004729f}, + {+0.024290f, -0.008269f, -0.003225f} }, { - {-0.302384f, +0.214214f, -0.042285f, +0.000129f, +0.000005f}, - {+0.280104f, -0.464455f, +0.045587f, +0.000282f, -0.000035f}, - {-0.027898f, -0.140901f, -0.007378f, +0.000003f, +0.000044f}, - {-0.020559f, -0.029800f, -0.003256f, -0.000145f, +0.000040f} + {-0.584438f, -0.007700f, +0.000979f}, + {+0.892617f, -0.003169f, -0.005373f}, + {+0.180710f, +0.012490f, -0.004688f}, + {+0.010563f, +0.002672f, -0.005332f} }, { - {-0.091526f, +0.536382f, -0.014577f, -0.000305f, +0.000001f}, - {+0.221871f, -0.553999f, +0.029769f, -0.000764f, -0.000002f}, - {+0.073977f, +0.023109f, +0.011231f, -0.000304f, +0.000016f}, - {-0.025756f, -0.040011f, -0.004558f, -0.000368f, -0.000008f} + {-0.550310f, +0.008552f, +0.001243f}, + {+0.875679f, +0.001053f, -0.001808f}, + {+0.139761f, -0.001299f, -0.002407f}, + {-0.037114f, -0.006797f, -0.001129f} }, { - {+0.321259f, -0.098962f, +0.045846f, -0.000108f, -0.000006f}, - {-0.348987f, +0.318713f, -0.051856f, -0.000239f, +0.000036f}, - {+0.017761f, +0.116280f, -0.000624f, -0.000200f, -0.000050f}, - {+0.009582f, -0.098230f, +0.005306f, +0.000144f, -0.000041f} + {-0.518417f, -0.006133f, +0.001495f}, + {+0.833856f, +0.011056f, +0.000737f}, + {+0.132343f, -0.004055f, -0.000776f}, + {-0.115163f, +0.018375f, +0.002028f} }, { - {+0.032445f, -0.541906f, +0.005704f, +0.000315f, -0.000001f}, - {-0.127167f, +0.654253f, -0.018462f, +0.000765f, +0.000001f}, - {-0.073982f, -0.022018f, -0.008993f, +0.000517f, -0.000010f}, - {+0.079904f, +0.007744f, +0.010527f, +0.000350f, +0.000012f} + {-0.493716f, +0.003010f, +0.001174f}, + {+0.768131f, -0.020508f, +0.000066f}, + {+0.152693f, +0.008282f, -0.001169f}, + {-0.209710f, -0.025096f, +0.001590f} }, { - {-0.327237f, +0.011995f, -0.047308f, +0.000087f, +0.000007f}, - {+0.372361f, -0.111338f, +0.055931f, +0.000147f, -0.000037f}, - {+0.006939f, -0.148510f, +0.003422f, +0.000212f, +0.000056f}, - {-0.056276f, +0.216052f, -0.007073f, -0.000104f, +0.000043f} + {-0.475954f, -0.001122f, +0.000352f}, + {+0.692851f, +0.022031f, -0.002804f}, + {+0.177765f, -0.009921f, +0.000059f}, + {-0.298030f, +0.020217f, -0.000155f} }, { - {+0.021322f, +0.548401f, +0.003440f, -0.000317f, -0.000000f}, - {+0.036763f, -0.621232f, +0.007074f, -0.000670f, -0.000001f}, - {+0.060591f, -0.069431f, +0.006623f, -0.000636f, +0.000001f}, - {-0.095686f, +0.156364f, -0.008769f, -0.000353f, -0.000018f} + {-0.460792f, +0.002405f, -0.000376f}, + {+0.628175f, -0.009296f, -0.003825f}, + {+0.180171f, -0.003908f, +0.001064f}, + {-0.358358f, -0.006713f, -0.000347f} }, { - {+0.328267f, +0.077867f, +0.046857f, -0.000082f, -0.000007f}, - {-0.361014f, -0.007604f, -0.057275f, -0.000179f, +0.000039f}, - {-0.031203f, +0.067398f, -0.002430f, -0.000232f, -0.000059f}, - {+0.120666f, -0.172404f, +0.015941f, +0.000046f, -0.000043f} + {-0.443319f, -0.006234f, +0.000246f}, + {+0.585810f, -0.000344f, -0.001004f}, + {+0.146499f, +0.011689f, +0.000951f}, + {-0.382061f, -0.004531f, +0.001751f} }, { - {-0.077320f, -0.544064f, -0.010931f, +0.000301f, +0.000001f}, - {+0.025615f, +0.586847f, +0.004514f, +0.000654f, +0.000000f}, - {-0.019503f, +0.080767f, -0.004247f, +0.000554f, +0.000010f}, - {+0.060877f, -0.260909f, +0.007725f, +0.000342f, +0.000024f} + {-0.421955f, +0.005364f, +0.001214f}, + {+0.561763f, +0.000808f, +0.002176f}, + {+0.084775f, -0.020993f, +0.000045f}, + {-0.377713f, +0.006390f, +0.003942f} }, { - {-0.318158f, -0.173881f, -0.045614f, +0.000092f, +0.000007f}, - {+0.350970f, +0.090433f, +0.053929f, +0.000134f, -0.000043f}, - {+0.011187f, +0.032303f, +0.001760f, +0.000373f, +0.000059f}, - {-0.154877f, +0.074143f, -0.023096f, -0.000037f, +0.000042f} + {-0.398163f, -0.003724f, +0.000751f}, + {+0.543402f, +0.007140f, +0.001937f}, + {+0.018165f, +0.017000f, -0.002291f}, + {-0.362688f, -0.001927f, +0.003741f} }, { - {+0.131227f, +0.515417f, +0.018725f, -0.000280f, -0.000002f}, - {-0.083743f, -0.574149f, -0.012466f, -0.000576f, +0.000001f}, - {+0.005315f, +0.026215f, +0.002698f, -0.000477f, -0.000019f}, - {-0.015816f, +0.287949f, -0.001995f, -0.000235f, -0.000030f} + {-0.373625f, +0.004821f, +0.000045f}, + {+0.521728f, -0.008459f, -0.000565f}, + {-0.028207f, -0.002987f, -0.002148f}, + {-0.349401f, +0.000605f, +0.002646f} }, { - {+0.296693f, +0.260934f, +0.042541f, -0.000091f, -0.000007f}, - {-0.335556f, -0.189122f, -0.052026f, -0.000094f, +0.000047f}, - {+0.020995f, +0.006183f, -0.000036f, -0.000396f, -0.000057f}, - {+0.168822f, +0.001307f, +0.024594f, -0.000017f, -0.000040f} + {-0.349815f, -0.005517f, +0.000230f}, + {+0.496496f, +0.005695f, -0.001454f}, + {-0.043081f, -0.009641f, +0.002012f}, + {-0.338864f, +0.001346f, +0.001602f} }, { - {-0.178422f, -0.467768f, -0.025765f, +0.000259f, +0.000003f}, - {+0.138949f, +0.536439f, +0.020095f, +0.000522f, -0.000004f}, - {-0.028752f, -0.066596f, -0.002138f, +0.000378f, +0.000026f}, - {-0.031690f, -0.308623f, -0.005893f, +0.000213f, +0.000034f} + {-0.328050f, +0.004001f, +0.000439f}, + {+0.471819f, -0.004175f, -0.001005f}, + {-0.032608f, +0.005428f, +0.005314f}, + {-0.322952f, +0.001273f, -0.000092f} }, { - {-0.267781f, -0.330036f, -0.038496f, +0.000071f, +0.000007f}, - {+0.312281f, +0.270728f, +0.048992f, +0.000017f, -0.000050f}, - {-0.024788f, -0.069674f, -0.002302f, +0.000335f, +0.000057f}, - {-0.167013f, -0.101727f, -0.022607f, -0.000026f, +0.000040f} + {-0.308595f, -0.003134f, +0.000145f}, + {+0.451672f, +0.002574f, -0.000427f}, + {-0.010290f, +0.004974f, +0.001398f}, + {-0.292677f, -0.007601f, -0.001415f} }, { - {+0.218246f, +0.415608f, +0.031895f, -0.000250f, -0.000003f}, - {-0.187767f, -0.495269f, -0.027755f, -0.000490f, +0.000007f}, - {+0.054038f, +0.052249f, +0.006077f, -0.000385f, -0.000032f}, - {+0.082423f, +0.279154f, +0.011379f, -0.000228f, -0.000040f} + {-0.290597f, +0.003355f, -0.000136f}, + {+0.436743f, -0.002865f, -0.000374f}, + {+0.017338f, +0.007331f, -0.002166f}, + {-0.247618f, +0.015355f, -0.000635f} }, { - {+0.234462f, +0.390517f, +0.033506f, -0.000040f, -0.000008f}, - {-0.286682f, -0.344540f, -0.044785f, +0.000053f, +0.000053f}, - {+0.007799f, +0.121924f, -0.000254f, -0.000274f, -0.000063f}, - {+0.137635f, +0.191812f, +0.020083f, +0.000078f, -0.000041f} + {-0.272998f, -0.004175f, +0.000021f}, + {+0.424310f, +0.002403f, -0.000711f}, + {+0.047898f, -0.011482f, +0.000426f}, + {-0.198447f, -0.014503f, +0.001973f} }, { - {-0.252188f, -0.355561f, -0.036817f, +0.000259f, +0.000004f}, - {+0.236813f, +0.457491f, +0.035054f, +0.000497f, -0.000010f}, - {-0.067322f, +0.004912f, -0.008444f, +0.000591f, +0.000044f}, - {-0.110001f, -0.188497f, -0.016071f, +0.000306f, +0.000049f} + {-0.255459f, +0.003452f, +0.000162f}, + {+0.409862f, -0.003440f, -0.000963f}, + {+0.077199f, +0.004028f, +0.001741f}, + {-0.160349f, +0.003060f, +0.002227f} }, { - {-0.196649f, -0.440315f, -0.028013f, +0.000028f, +0.000009f}, - {+0.254039f, +0.432758f, +0.039405f, -0.000094f, -0.000057f}, - {+0.018169f, -0.125990f, +0.003787f, +0.000283f, +0.000070f}, - {-0.104872f, -0.193750f, -0.016320f, -0.000067f, +0.000042f} + {-0.238237f, -0.003448f, +0.000017f}, + {+0.389274f, +0.003315f, -0.000451f}, + {+0.103396f, -0.000155f, -0.000865f}, + {-0.141016f, +0.003270f, -0.000528f} }, { - {+0.279232f, +0.288906f, +0.040649f, -0.000288f, -0.000006f}, - {-0.287453f, -0.396154f, -0.041796f, -0.000496f, +0.000012f}, - {+0.065516f, -0.051533f, +0.008251f, -0.000833f, -0.000068f}, - {+0.117846f, +0.150938f, +0.019317f, -0.000398f, -0.000066f} + {-0.221659f, +0.003880f, +0.000200f}, + {+0.360274f, -0.007600f, +0.000068f}, + {+0.127118f, +0.006707f, -0.002120f}, + {-0.136776f, -0.001506f, -0.002388f} }, { - {+0.155838f, +0.477142f, +0.022236f, -0.000054f, -0.000011f}, - {-0.205090f, -0.523697f, -0.032347f, +0.000074f, +0.000064f}, - {-0.043133f, +0.115358f, -0.007458f, -0.000536f, -0.000071f}, - {+0.086685f, +0.200152f, +0.011885f, -0.000042f, -0.000037f} + {-0.206321f, -0.002421f, +0.000222f}, + {+0.323761f, +0.010008f, -0.000633f}, + {+0.147702f, -0.009697f, +0.000777f}, + {-0.138196f, -0.005501f, -0.000185f} }, { - {-0.298969f, -0.220193f, -0.043767f, +0.000325f, +0.000010f}, - {+0.328142f, +0.292452f, +0.047271f, +0.000442f, -0.000014f}, - {-0.051610f, +0.100445f, -0.006535f, +0.000948f, +0.000105f}, - {-0.130003f, -0.132255f, -0.020754f, +0.000362f, +0.000088f} + {-0.192402f, +0.002339f, -0.000141f}, + {+0.283782f, -0.009026f, -0.001400f}, + {+0.162715f, +0.001250f, +0.002766f}, + {-0.137599f, +0.001369f, +0.002680f} }, { - {-0.114168f, -0.502804f, -0.016020f, +0.000104f, +0.000010f}, - {+0.143455f, +0.576024f, +0.024058f, -0.000023f, -0.000077f}, - {+0.061115f, -0.073546f, +0.010498f, +0.000984f, +0.000052f}, - {-0.068233f, -0.228084f, -0.008576f, +0.000257f, +0.000020f} + {-0.179623f, -0.002933f, -0.000145f}, + {+0.244500f, +0.005039f, -0.000589f}, + {+0.172860f, +0.006728f, -0.000517f}, + {-0.130069f, +0.003207f, +0.001003f} }, { - {+0.312611f, +0.151372f, +0.045798f, -0.000314f, -0.000015f}, - {-0.351200f, -0.182575f, -0.051390f, -0.000326f, +0.000020f}, - {+0.031920f, -0.116916f, +0.003818f, -0.000728f, -0.000144f}, - {+0.146596f, +0.100142f, +0.022461f, -0.000165f, -0.000108f} + {-0.168039f, +0.002857f, +0.000210f}, + {+0.207651f, -0.005569f, +0.001162f}, + {+0.183789f, +0.001069f, -0.004319f}, + {-0.111107f, +0.002870f, -0.002170f} }, { - {+0.072361f, +0.518728f, +0.009942f, -0.000175f, -0.000007f}, - {-0.079531f, -0.601014f, -0.014699f, +0.000081f, +0.000095f}, - {-0.074110f, +0.046958f, -0.012342f, -0.001344f, -0.000005f}, - {+0.036969f, +0.268420f, +0.004301f, -0.000333f, +0.000013f} + {-0.157725f, -0.001947f, +0.000454f}, + {+0.172892f, +0.010252f, +0.000596f}, + {+0.198825f, -0.011358f, -0.002404f}, + {-0.080708f, -0.012176f, -0.001780f} }, { - {-0.321149f, -0.084827f, -0.047210f, +0.000251f, +0.000020f}, - {+0.359514f, +0.071785f, +0.052488f, +0.000127f, -0.000038f}, - {-0.004461f, +0.153778f, +0.000819f, +0.000092f, +0.000168f}, - {-0.150780f, -0.016846f, -0.022402f, -0.000246f, +0.000118f} + {-0.148241f, +0.000618f, +0.000026f}, + {+0.141203f, -0.007243f, -0.001063f}, + {+0.212313f, +0.004737f, +0.000973f}, + {-0.046659f, +0.011069f, +0.000996f} }, { - {-0.030564f, -0.529872f, -0.003428f, +0.000214f, -0.000000f}, - {+0.017715f, +0.598148f, +0.005426f, -0.000313f, -0.000115f}, - {+0.077791f, +0.029195f, +0.012192f, +0.001184f, -0.000065f}, - {-0.001917f, -0.241534f, -0.000982f, +0.000017f, -0.000059f} + {-0.138402f, -0.001765f, -0.000579f}, + {+0.113224f, +0.004585f, -0.001287f}, + {+0.215767f, +0.007978f, -0.001019f}, + {-0.020004f, +0.000374f, +0.000573f} }, { - {+0.325748f, +0.016029f, +0.047602f, -0.000149f, -0.000021f}, - {-0.356902f, +0.024523f, -0.052188f, -0.000031f, +0.000071f}, - {-0.031837f, -0.135684f, -0.003925f, +0.000518f, -0.000157f}, - {+0.134040f, -0.031563f, +0.022612f, +0.000523f, -0.000105f} + {-0.127236f, +0.003443f, -0.000426f}, + {+0.086775f, -0.002732f, -0.000319f}, + {+0.206200f, -0.011017f, -0.006667f}, + {-0.006720f, -0.005737f, -0.003684f} }, { - {-0.013284f, +0.534819f, -0.003031f, -0.000141f, +0.000009f}, - {+0.041065f, -0.588511f, +0.002930f, +0.000807f, +0.000127f}, - {-0.057814f, -0.095156f, -0.013622f, +0.000710f, +0.000141f}, - {-0.013462f, +0.193769f, -0.004638f, +0.001465f, +0.000106f} + {-0.114738f, -0.003852f, +0.000286f}, + {+0.059179f, +0.002958f, +0.001772f}, + {+0.184707f, +0.002148f, -0.008785f}, + {-0.006688f, +0.000728f, -0.006182f} }, { - {-0.323552f, +0.059375f, -0.047359f, +0.000017f, +0.000018f}, - {+0.347235f, -0.120486f, +0.050411f, +0.000521f, -0.000120f}, - {+0.056648f, +0.076781f, +0.002619f, -0.000739f, +0.000101f}, - {-0.118370f, +0.031720f, -0.024225f, -0.000048f, +0.000065f} + {-0.100815f, +0.002358f, +0.000595f}, + {+0.029594f, -0.008594f, +0.002770f}, + {+0.151524f, +0.003310f, -0.003987f}, + {-0.019197f, +0.005615f, -0.002853f} } }; diff --git a/lib_rend/ivas_rom_binauralRenderer.h b/lib_rend/ivas_rom_binauralRenderer.h index 0cf8e35a6dfe0a91e8645125a7b3418ae50c7924..97ec8f390dd0d0d2d605f5502aaf2e3d995beef2 100644 --- a/lib_rend/ivas_rom_binauralRenderer.h +++ b/lib_rend/ivas_rom_binauralRenderer.h @@ -44,18 +44,18 @@ /* Binaural rendering data set based on HRIRs */ extern const float FASTCONV_HRIR_latency_s; -extern float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; -extern float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; -extern float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; -extern float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; -extern float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; -extern float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; -extern float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; -extern float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; -extern float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; -extern float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; -extern float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; -extern float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; +extern float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HOA3_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][HOA2_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float leftHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float leftHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float rightHRIRReal_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; +extern float rightHRIRImag_FOA[BINAURAL_CONVBANDS][FOA_CHANNELS][BINAURAL_NTAPS_SBA]; extern float leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; extern float leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; diff --git a/lib_rend/ivas_rom_rend.c b/lib_rend/ivas_rom_rend.c index dd8ca99d80ee6cb990fa7f65db3db9539cd837f5..db0e5b47bf33da49817d554a20612aeff93e8136 100644 --- a/lib_rend/ivas_rom_rend.c +++ b/lib_rend/ivas_rom_rend.c @@ -157,102 +157,293 @@ const float SincTable[321] = 0.00000000f }; -const float orange53_left_avg_power[257] = { - 0.999231100f, 0.992580175f, 0.969233215f, 0.925614893f, 0.871408045f, 0.826101780f, 0.803222895f, 0.800087631f, 0.802672029f, - 0.801490188f, 0.796555817f, 0.790879488f, 0.784882724f, 0.777585745f, 0.769326210f, 0.761789441f, 0.756145239f, 0.752754092f, - 0.751703024f, 0.752594173f, 0.754317880f, 0.755515277f, 0.754378498f, 0.748860359f, 0.738919020f, 0.727488697f, 0.718792558f, - 0.714865267f, 0.713446736f, 0.711076498f, 0.706021905f, 0.697553098f, 0.684623063f, 0.667031527f, 0.647006035f, 0.627680719f, - 0.609939933f, 0.592472672f, 0.574803054f, 0.558499217f, 0.544599831f, 0.532128096f, 0.520152628f, 0.509682238f, 0.501904130f, - 0.496162385f, 0.491121918f, 0.486813396f, 0.483951330f, 0.482198298f, 0.480713189f, 0.479654074f, 0.479590476f, 0.479965866f, - 0.479589254f, 0.478181243f, 0.476334095f, 0.474199444f, 0.471616089f, 0.469089746f, 0.467486322f, 0.466943622f, 0.467153549f, - 0.468381166f, 0.470996737f, 0.474416614f, 0.477639019f, 0.480612457f, 0.483910263f, 0.487287015f, 0.489909321f, 0.491668850f, - 0.493155539f, 0.494319856f, 0.494512051f, 0.493615031f, 0.492155492f, 0.490116775f, 0.486886710f, 0.482303619f, 0.476902038f, - 0.470775038f, 0.463377595f, 0.454571068f, 0.445130944f, 0.435581058f, 0.425568998f, 0.414717495f, 0.403531373f, 0.392556936f, - 0.381436378f, 0.369506508f, 0.357099295f, 0.345049500f, 0.333368897f, 0.321326375f, 0.308959186f, 0.297232091f, 0.286592871f, - 0.276453108f, 0.266589880f, 0.257950366f, 0.251341701f, 0.246435612f, 0.242861211f, 0.241405189f, 0.242839754f, 0.246688128f, - 0.252115428f, 0.259297341f, 0.268399984f, 0.278481483f, 0.288520366f, 0.298599035f, 0.308846802f, 0.318350822f, 0.326248646f, - 0.332813978f, 0.338464528f, 0.342543274f, 0.344278336f, 0.344031811f, 0.342641503f, 0.339995682f, 0.335437506f, 0.329174429f, - 0.322237372f, 0.315035462f, 0.306967229f, 0.297821850f, 0.288482070f, 0.279766560f, 0.271234214f, 0.262228251f, 0.253214896f, - 0.245183259f, 0.237939596f, 0.230546176f, 0.223051578f, 0.216552779f, 0.211263061f, 0.206180066f, 0.200917527f, 0.196485907f, - 0.193453044f, 0.190857053f, 0.187853232f, 0.185171053f, 0.183685005f, 0.182665780f, 0.180928215f, 0.178784713f, 0.177342966f, - 0.176323384f, 0.174430951f, 0.171496049f, 0.168740034f, 0.166518897f, 0.163711995f, 0.159658119f, 0.155442193f, 0.152056932f, - 0.148795277f, 0.144545168f, 0.139905334f, 0.136263832f, 0.133493021f, 0.130194828f, 0.126240104f, 0.123071767f, 0.121281922f, - 0.119557180f, 0.117016964f, 0.114773229f, 0.114072219f, 0.114103459f, 0.113414355f, 0.112460621f, 0.112842396f, 0.114564091f, - 0.115944758f, 0.116569765f, 0.117913686f, 0.120910525f, 0.124211200f, 0.126575813f, 0.128826424f, 0.132578567f, 0.137430578f, - 0.141675219f, 0.144987956f, 0.148879051f, 0.154273912f, 0.159992099f, 0.164641231f, 0.168560207f, 0.173201621f, 0.178906262f, - 0.184429348f, 0.188756809f, 0.192309171f, 0.196154252f, 0.200732291f, 0.205381230f, 0.209404662f, 0.212832779f, 0.216197237f, - 0.220162451f, 0.225029215f, 0.230637416f, 0.236752108f, 0.243243530f, 0.249900997f, 0.256293535f, 0.261716694f, 0.265186161f, - 0.265652657f, 0.262010813f, 0.253508776f, 0.243198514f, 0.244490802f, 0.255167097f, 0.258825988f, 0.257396817f, 0.256197631f, - 0.256865948f, 0.258354962f, 0.259370565f, 0.259730458f, 0.259894609f, 0.260285556f, 0.260970831f, 0.261650831f, 0.262020200f, - 0.262095064f, 0.262225062f, 0.262741268f, 0.263585031f, 0.264350951f, 0.264654577f, 0.264539272f, 0.264409125f, 0.264633715f, - 0.265172601f, 0.265621960f, 0.265678704f, 0.265469313f, 0.265454412f, 0.265907466f, 0.266625792f, 0.267101586f, 0.266997635f, - 0.266522497f, 0.266185820f, 0.266298562f, 0.266692907f, 0.266907692f -}; - -const float orange53_right_avg_power[257] = { - 0.999231100f, 0.992580175f, 0.969233215f, 0.925614893f, 0.871408045f, 0.826101780f, 0.803222895f, 0.800087631f, 0.802672029f, - 0.801490188f, 0.796555817f, 0.790879488f, 0.784882724f, 0.777585745f, 0.769326210f, 0.761789441f, 0.756145239f, 0.752754092f, - 0.751703024f, 0.752594173f, 0.754317880f, 0.755515277f, 0.754378498f, 0.748860359f, 0.738919020f, 0.727488697f, 0.718792558f, - 0.714865267f, 0.713446736f, 0.711076498f, 0.706021905f, 0.697553098f, 0.684623063f, 0.667031527f, 0.647006035f, 0.627680719f, - 0.609939933f, 0.592472672f, 0.574803054f, 0.558499217f, 0.544599831f, 0.532128096f, 0.520152628f, 0.509682238f, 0.501904130f, - 0.496162385f, 0.491121918f, 0.486813396f, 0.483951330f, 0.482198298f, 0.480713189f, 0.479654074f, 0.479590476f, 0.479965866f, - 0.479589254f, 0.478181243f, 0.476334095f, 0.474199444f, 0.471616089f, 0.469089746f, 0.467486322f, 0.466943622f, 0.467153549f, - 0.468381166f, 0.470996737f, 0.474416614f, 0.477639019f, 0.480612457f, 0.483910263f, 0.487287015f, 0.489909321f, 0.491668850f, - 0.493155539f, 0.494319856f, 0.494512051f, 0.493615031f, 0.492155492f, 0.490116775f, 0.486886710f, 0.482303619f, 0.476902038f, - 0.470775038f, 0.463377595f, 0.454571068f, 0.445130944f, 0.435581058f, 0.425568998f, 0.414717495f, 0.403531373f, 0.392556936f, - 0.381436378f, 0.369506508f, 0.357099295f, 0.345049500f, 0.333368897f, 0.321326375f, 0.308959186f, 0.297232091f, 0.286592871f, - 0.276453108f, 0.266589880f, 0.257950366f, 0.251341701f, 0.246435612f, 0.242861211f, 0.241405189f, 0.242839754f, 0.246688128f, - 0.252115428f, 0.259297341f, 0.268399984f, 0.278481483f, 0.288520366f, 0.298599035f, 0.308846802f, 0.318350822f, 0.326248646f, - 0.332813978f, 0.338464528f, 0.342543274f, 0.344278336f, 0.344031811f, 0.342641503f, 0.339995682f, 0.335437506f, 0.329174429f, - 0.322237372f, 0.315035462f, 0.306967229f, 0.297821850f, 0.288482070f, 0.279766560f, 0.271234214f, 0.262228251f, 0.253214896f, - 0.245183259f, 0.237939596f, 0.230546176f, 0.223051578f, 0.216552779f, 0.211263061f, 0.206180066f, 0.200917527f, 0.196485907f, - 0.193453044f, 0.190857053f, 0.187853232f, 0.185171053f, 0.183685005f, 0.182665780f, 0.180928215f, 0.178784713f, 0.177342966f, - 0.176323384f, 0.174430951f, 0.171496049f, 0.168740034f, 0.166518897f, 0.163711995f, 0.159658119f, 0.155442193f, 0.152056932f, - 0.148795277f, 0.144545168f, 0.139905334f, 0.136263832f, 0.133493021f, 0.130194828f, 0.126240104f, 0.123071767f, 0.121281922f, - 0.119557180f, 0.117016964f, 0.114773229f, 0.114072219f, 0.114103459f, 0.113414355f, 0.112460621f, 0.112842396f, 0.114564091f, - 0.115944758f, 0.116569765f, 0.117913686f, 0.120910525f, 0.124211200f, 0.126575813f, 0.128826424f, 0.132578567f, 0.137430578f, - 0.141675219f, 0.144987956f, 0.148879051f, 0.154273912f, 0.159992099f, 0.164641231f, 0.168560207f, 0.173201621f, 0.178906262f, - 0.184429348f, 0.188756809f, 0.192309171f, 0.196154252f, 0.200732291f, 0.205381230f, 0.209404662f, 0.212832779f, 0.216197237f, - 0.220162451f, 0.225029215f, 0.230637416f, 0.236752108f, 0.243243530f, 0.249900997f, 0.256293535f, 0.261716694f, 0.265186161f, - 0.265652657f, 0.262010813f, 0.253508776f, 0.243198514f, 0.244490802f, 0.255167097f, 0.258825988f, 0.257396817f, 0.256197631f, - 0.256865948f, 0.258354962f, 0.259370565f, 0.259730458f, 0.259894609f, 0.260285556f, 0.260970831f, 0.261650831f, 0.262020200f, - 0.262095064f, 0.262225062f, 0.262741268f, 0.263585031f, 0.264350951f, 0.264654577f, 0.264539272f, 0.264409125f, 0.264633715f, - 0.265172601f, 0.265621960f, 0.265678704f, 0.265469313f, 0.265454412f, 0.265907466f, 0.266625792f, 0.267101586f, 0.266997635f, - 0.266522497f, 0.266185820f, 0.266298562f, 0.266692907f, 0.266907692f -}; - -const float orange53_coherence[257] = { - 0.929530263f, 0.921171963f, 0.900268972f, 0.876067519f, 0.855227590f, 0.837884128f, 0.823401272f, 0.818804145f, 0.835025251f, - 0.871971071f, 0.911253273f, 0.929330528f, 0.921199203f, 0.900894165f, 0.882577479f, 0.867001534f, 0.849280477f, 0.832460761f, - 0.824062645f, 0.823441386f, 0.820908070f, 0.811902404f, 0.802339375f, 0.798648477f, 0.797345281f, 0.791158736f, 0.779512227f, - 0.768243194f, 0.760565042f, 0.754912853f, 0.751044095f, 0.752276063f, 0.759258866f, 0.766927004f, 0.769716740f, 0.767338514f, - 0.763358235f, 0.759508014f, 0.755201221f, 0.750362694f, 0.746060252f, 0.742611766f, 0.739434779f, 0.736354828f, 0.733443379f, - 0.730109870f, 0.726028502f, 0.722365141f, 0.720153689f, 0.718220115f, 0.714793265f, 0.710619092f, 0.708084404f, 0.707218647f, - 0.705624878f, 0.702472746f, 0.700073540f, 0.699947894f, 0.700519860f, 0.699934483f, 0.699344158f, 0.700895131f, 0.704551995f, - 0.708814025f, 0.713567019f, 0.719995975f, 0.728467822f, 0.738399088f, 0.749545693f, 0.761859894f, 0.774593413f, 0.787218869f, - 0.800481200f, 0.814727187f, 0.828367889f, 0.839860320f, 0.850490928f, 0.862034321f, 0.873037636f, 0.880097568f, 0.883217216f, - 0.885473788f, 0.887664974f, 0.886511028f, 0.880120754f, 0.871120989f, 0.862524390f, 0.853262126f, 0.840783834f, 0.825854301f, - 0.811407208f, 0.798167706f, 0.784307659f, 0.769172490f, 0.754072189f, 0.739893615f, 0.726129174f, 0.712544501f, 0.699519753f, - 0.686980069f, 0.674778104f, 0.663931608f, 0.655511260f, 0.648816824f, 0.642671287f, 0.638217211f, 0.637585819f, 0.640332758f, - 0.643755615f, 0.647433281f, 0.653589368f, 0.662824631f, 0.672268033f, 0.680022597f, 0.687623680f, 0.696763635f, 0.705829978f, - 0.712574661f, 0.717432320f, 0.721986175f, 0.725707173f, 0.727064371f, 0.726255059f, 0.724350274f, 0.720927835f, 0.715189219f, - 0.708206475f, 0.701428175f, 0.693923056f, 0.684313059f, 0.674107075f, 0.666009307f, 0.659245491f, 0.650998116f, 0.641600072f, - 0.634524226f, 0.630267978f, 0.625348687f, 0.618164837f, 0.611785769f, 0.608430445f, 0.605561733f, 0.600407422f, 0.594782710f, - 0.591767371f, 0.590365708f, 0.587845862f, 0.584915996f, 0.584355533f, 0.585834682f, 0.586913347f, 0.587935925f, 0.591403484f, - 0.596784472f, 0.601111054f, 0.604539037f, 0.610374093f, 0.618451059f, 0.624519289f, 0.627448440f, 0.631859899f, 0.639748096f, - 0.646256745f, 0.647378445f, 0.647664309f, 0.652599990f, 0.659044445f, 0.659743190f, 0.656243205f, 0.656651020f, 0.662200928f, - 0.664544880f, 0.660030127f, 0.656303048f, 0.659881413f, 0.664978266f, 0.662953973f, 0.657274961f, 0.658065319f, 0.665406108f, - 0.668446958f, 0.663809955f, 0.661349833f, 0.668595374f, 0.677367866f, 0.677208483f, 0.672289610f, 0.675831020f, 0.688208520f, - 0.695776582f, 0.691749871f, 0.687812865f, 0.696674168f, 0.711764693f, 0.716045380f, 0.706839681f, 0.701565385f, 0.711955190f, - 0.726487696f, 0.723370016f, 0.700417101f, 0.677427649f, 0.670733511f, 0.671355724f, 0.654210806f, 0.608316183f, 0.549225986f, - 0.504217446f, 0.484227657f, 0.475346446f, 0.452598959f, 0.399407327f, 0.319485664f, 0.229244962f, 0.146649837f, 0.083417825f, - 0.041744832f, 0.018142883f, 0.006854009f, 0.002511850f, 0.001177550f, 0.000840970f, 0.000701097f, 0.000571384f, 0.000458581f, - 0.000376965f, 0.000320562f, 0.000278847f, 0.000245546f, 0.000218281f, 0.000195632f, 0.000176647f, 0.000160827f, 0.000147978f, - 0.000137649f, 0.000129066f, 0.000121431f, 0.000114406f, 0.000108067f, 0.000102595f, 0.000097917f, 0.000093750f, 0.000089854f, - 0.000086255f, 0.000083183f, 0.000080804f, 0.000079026f, 0.000077552f, 0.000076117f, 0.000074693f, 0.000073431f, 0.000072456f, - 0.000071701f, 0.000071002f, 0.000070286f, 0.000069692f, 0.000069457f +const float defaultHRIR_coherence_48kHz[LR_IAC_LENGTH_NR_FC] = { + 0.983003f, 0.933450f, 0.789276f, 0.574420f, 0.340710f, 0.144220f, 0.018803f, 0.000000f, 0.000000f, + 0.000000f, 0.011939f, 0.035489f, 0.043188f, 0.042460f, 0.041788f, 0.038562f, 0.028911f, 0.017162f, + 0.011571f, 0.014176f, 0.019830f, 0.024590f, 0.029203f, 0.033346f, 0.033418f, 0.029627f, 0.027479f, + 0.027434f, 0.025152f, 0.019518f, 0.014728f, 0.014201f, 0.016131f, 0.016294f, 0.013154f, 0.008660f, + 0.005005f, 0.002594f, 0.001044f, 0.000207f, 0.000000f, 0.000000f, 0.000000f, 0.001110f, 0.003986f, + 0.007003f, 0.009546f, 0.011532f, 0.012412f, 0.011553f, 0.009156f, 0.006222f, 0.003565f, 0.001384f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000032f, 0.000928f, 0.002118f, 0.003061f, 0.003575f, + 0.003780f, 0.003678f, 0.003110f, 0.002074f, 0.000856f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000217f, 0.000974f, 0.001807f, 0.002334f, + 0.002436f, 0.002105f, 0.001526f, 0.000907f, 0.000350f, 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.000238f, 0.000852f, 0.001293f, + 0.001529f, 0.001533f, 0.001314f, 0.000954f, 0.000521f, 0.000155f, 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.000025f, 0.000284f, 0.000620f, 0.000949f, 0.001274f, 0.001606f, 0.001922f, + 0.002195f, 0.002438f, 0.002687f, 0.002944f, 0.003172f, 0.003371f, 0.003577f, 0.003779f, 0.003915f, + 0.003973f, 0.003980f, 0.003925f, 0.003766f, 0.003501f, 0.003165f, 0.002778f, 0.002326f, 0.001806f, + 0.001257f, 0.000714f, 0.000211f, 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.000766f, 0.000537f, 0.000000f, + 0.001691f, 0.003307f, 0.001635f, 0.000000f, 0.001601f, 0.007549f, 0.000580f, 0.000000f, 0.002038f, + 0.010325f, 0.002155f, 0.000000f, 0.003524f, 0.009251f, 0.005131f, 0.000000f, 0.002286f, 0.006486f, + 0.005902f, 0.000000f, 0.000862f, 0.004570f, 0.004117f, 0.000000f, 0.000000f, 0.003237f, 0.001534f, + 0.000259f, 0.000199f, 0.001363f, 0.000878f, 0.000000f +}; + +const float defaultHRIR_left_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = { + 0.978675f, 0.972385f, 0.959650f, 0.951879f, 0.952823f, 0.955063f, 0.950664f, 0.942982f, 0.943810f, + 0.958261f, 0.974503f, 0.980941f, 0.976648f, 0.968551f, 0.962061f, 0.957250f, 0.952477f, 0.948144f, + 0.945467f, 0.943209f, 0.938266f, 0.930238f, 0.923288f, 0.921237f, 0.922151f, 0.920812f, 0.917157f, + 0.914639f, 0.914127f, 0.913461f, 0.911654f, 0.910596f, 0.912207f, 0.915559f, 0.917863f, 0.917787f, + 0.916699f, 0.916435f, 0.916819f, 0.916225f, 0.914005f, 0.911360f, 0.909508f, 0.908111f, 0.906186f, + 0.903433f, 0.900605f, 0.898518f, 0.896964f, 0.894917f, 0.891856f, 0.888506f, 0.885940f, 0.884055f, + 0.881583f, 0.877955f, 0.874417f, 0.872501f, 0.871444f, 0.869864f, 0.867858f, 0.866735f, 0.867122f, + 0.868200f, 0.868897f, 0.869335f, 0.870657f, 0.873538f, 0.877306f, 0.880880f, 0.884388f, 0.889165f, + 0.895880f, 0.903263f, 0.909833f, 0.916015f, 0.922891f, 0.930300f, 0.936807f, 0.941431f, 0.944709f, + 0.947777f, 0.950731f, 0.952379f, 0.951745f, 0.949423f, 0.946810f, 0.944141f, 0.940067f, 0.933702f, + 0.926635f, 0.920257f, 0.914054f, 0.906651f, 0.897863f, 0.888903f, 0.880740f, 0.872936f, 0.864423f, + 0.855129f, 0.846311f, 0.839117f, 0.833266f, 0.827747f, 0.822648f, 0.819728f, 0.819707f, 0.821561f, + 0.824008f, 0.827075f, 0.831626f, 0.837745f, 0.844233f, 0.849862f, 0.854703f, 0.859787f, 0.865473f, + 0.870700f, 0.874300f, 0.876656f, 0.879215f, 0.882133f, 0.883808f, 0.883431f, 0.881897f, 0.880360f, + 0.878707f, 0.875924f, 0.871595f, 0.866584f, 0.862066f, 0.858145f, 0.853844f, 0.848581f, 0.843210f, + 0.839021f, 0.835832f, 0.831948f, 0.826952f, 0.822178f, 0.818520f, 0.815229f, 0.811138f, 0.806307f, + 0.801887f, 0.798628f, 0.796047f, 0.793269f, 0.790369f, 0.788436f, 0.788212f, 0.789066f, 0.789775f, + 0.790300f, 0.791907f, 0.794977f, 0.798368f, 0.800889f, 0.802776f, 0.805127f, 0.808190f, 0.810879f, + 0.812195f, 0.812606f, 0.813423f, 0.814925f, 0.815870f, 0.815340f, 0.814251f, 0.814186f, 0.814754f, + 0.814664f, 0.813654f, 0.812703f, 0.812701f, 0.813418f, 0.813910f, 0.813739f, 0.813585f, 0.814454f, + 0.816299f, 0.817832f, 0.818221f, 0.818620f, 0.820797f, 0.824043f, 0.825888f, 0.826559f, 0.828411f, + 0.832083f, 0.835548f, 0.837384f, 0.838961f, 0.842275f, 0.846770f, 0.849996f, 0.851359f, 0.853124f, + 0.856257f, 0.857270f, 0.852207f, 0.842390f, 0.831251f, 0.816041f, 0.791907f, 0.759307f, 0.723333f, + 0.686290f, 0.644649f, 0.594838f, 0.539959f, 0.487712f, 0.440561f, 0.389905f, 0.323258f, 0.238454f, + 0.149256f, 0.077620f, 0.032652f, 0.010630f, 0.002462f, 0.000339f, 0.000025f, 0.000016f, 0.000016f, + 0.000015f, 0.000014f, 0.000011f, 0.000009f, 0.000009f, 0.000009f, 0.000007f, 0.000006f, 0.000006f, + 0.000007f, 0.000006f, 0.000005f, 0.000005f, 0.000006f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f +}; + +const float defaultHRIR_right_avg_power_48kHz[LR_IAC_LENGTH_NR_FC] = { + 0.978675f, 0.972385f, 0.959652f, 0.951882f, 0.952822f, 0.955062f, 0.950665f, 0.942984f, 0.943810f, + 0.958262f, 0.974501f, 0.980942f, 0.976647f, 0.968551f, 0.962062f, 0.957251f, 0.952476f, 0.948141f, + 0.945464f, 0.943208f, 0.938265f, 0.930238f, 0.923288f, 0.921237f, 0.922151f, 0.920812f, 0.917158f, + 0.914639f, 0.914125f, 0.913460f, 0.911652f, 0.910595f, 0.912207f, 0.915559f, 0.917865f, 0.917788f, + 0.916698f, 0.916433f, 0.916818f, 0.916224f, 0.914005f, 0.911361f, 0.909504f, 0.908110f, 0.906186f, + 0.903433f, 0.900605f, 0.898518f, 0.896965f, 0.894920f, 0.891858f, 0.888507f, 0.885940f, 0.884054f, + 0.881580f, 0.877954f, 0.874417f, 0.872502f, 0.871442f, 0.869862f, 0.867858f, 0.866735f, 0.867123f, + 0.868201f, 0.868897f, 0.869333f, 0.870655f, 0.873539f, 0.877309f, 0.880883f, 0.884387f, 0.889165f, + 0.895880f, 0.903264f, 0.909834f, 0.916014f, 0.922893f, 0.930302f, 0.936809f, 0.941431f, 0.944709f, + 0.947777f, 0.950731f, 0.952378f, 0.951746f, 0.949421f, 0.946811f, 0.944145f, 0.940067f, 0.933700f, + 0.926637f, 0.920257f, 0.914054f, 0.906653f, 0.897864f, 0.888905f, 0.880742f, 0.872937f, 0.864423f, + 0.855128f, 0.846312f, 0.839118f, 0.833269f, 0.827748f, 0.822649f, 0.819728f, 0.819710f, 0.821561f, + 0.824007f, 0.827074f, 0.831626f, 0.837745f, 0.844232f, 0.849861f, 0.854703f, 0.859787f, 0.865474f, + 0.870700f, 0.874300f, 0.876658f, 0.879216f, 0.882133f, 0.883807f, 0.883428f, 0.881895f, 0.880358f, + 0.878709f, 0.875925f, 0.871596f, 0.866586f, 0.862067f, 0.858144f, 0.853843f, 0.848581f, 0.843210f, + 0.839021f, 0.835833f, 0.831948f, 0.826952f, 0.822177f, 0.818518f, 0.815228f, 0.811137f, 0.806306f, + 0.801886f, 0.798627f, 0.796045f, 0.793268f, 0.790369f, 0.788437f, 0.788213f, 0.789064f, 0.789770f, + 0.790299f, 0.791906f, 0.794977f, 0.798369f, 0.800890f, 0.802778f, 0.805130f, 0.808191f, 0.810879f, + 0.812198f, 0.812607f, 0.813424f, 0.814926f, 0.815872f, 0.815339f, 0.814254f, 0.814188f, 0.814757f, + 0.814665f, 0.813653f, 0.812704f, 0.812700f, 0.813416f, 0.813908f, 0.813738f, 0.813584f, 0.814454f, + 0.816300f, 0.817832f, 0.818221f, 0.818620f, 0.820796f, 0.824044f, 0.825889f, 0.826559f, 0.828413f, + 0.832084f, 0.835548f, 0.837383f, 0.838960f, 0.842272f, 0.846766f, 0.849995f, 0.851358f, 0.853121f, + 0.856258f, 0.857268f, 0.852209f, 0.842391f, 0.831252f, 0.816040f, 0.791907f, 0.759307f, 0.723333f, + 0.686288f, 0.644648f, 0.594838f, 0.539959f, 0.487712f, 0.440562f, 0.389904f, 0.323259f, 0.238454f, + 0.149256f, 0.077620f, 0.032652f, 0.010630f, 0.002462f, 0.000339f, 0.000025f, 0.000016f, 0.000016f, + 0.000015f, 0.000014f, 0.000011f, 0.000009f, 0.000009f, 0.000009f, 0.000007f, 0.000006f, 0.000006f, + 0.000007f, 0.000006f, 0.000005f, 0.000005f, 0.000006f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f, + 0.000005f, 0.000005f, 0.000005f, 0.000005f, 0.000005f +}; + +const float defaultHRIR_coherence_32kHz[LR_IAC_LENGTH_NR_FC] = { + 0.976959f, 0.962817f, 0.892107f, 0.783427f, 0.649433f, 0.488372f, 0.336040f, 0.196803f, 0.094108f, + 0.016852f, 0.004815f, 0.000000f, 0.000000f, 0.000000f, 0.002703f, 0.009460f, 0.024631f, 0.038937f, + 0.041367f, 0.041308f, 0.039589f, 0.039056f, 0.037048f, 0.032828f, 0.024623f, 0.015933f, 0.009282f, + 0.007047f, 0.007754f, 0.011823f, 0.015553f, 0.018773f, 0.021834f, 0.024812f, 0.027619f, 0.028707f, + 0.028648f, 0.026125f, 0.024072f, 0.022724f, 0.022507f, 0.022144f, 0.020064f, 0.016587f, 0.012177f, + 0.009732f, 0.008764f, 0.010014f, 0.011423f, 0.012307f, 0.010938f, 0.008551f, 0.005485f, 0.002935f, + 0.001054f, 0.000176f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000000f, 0.000231f, 0.001386f, 0.003010f, 0.004946f, 0.006482f, 0.007843f, 0.008942f, + 0.009171f, 0.008905f, 0.007532f, 0.005772f, 0.003756f, 0.001923f, 0.000617f, 0.000103f, 0.000000f, + 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.000265f, 0.000706f, 0.000947f, 0.001119f, 0.001185f, 0.001040f, 0.000772f, 0.000221f, + 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.000099f, 0.000345f, 0.000565f, 0.000710f, 0.000581f, 0.000331f, 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.000098f, 0.000341f, 0.000584f, 0.000793f, + 0.000876f, 0.000853f, 0.000759f, 0.000512f, 0.000273f, 0.000045f, 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.000011f, + 0.000039f, 0.000157f, 0.000303f, 0.000474f, 0.000664f, 0.000865f, 0.001073f, 0.001281f, 0.001488f, + 0.001698f, 0.001906f, 0.002099f, 0.002268f, 0.002421f, 0.002545f, 0.002666f, 0.002785f, 0.002898f, + 0.003010f, 0.003124f, 0.003262f, 0.003417f, 0.003642f, 0.003884f, 0.004155f, 0.004443f, 0.004744f, + 0.005073f, 0.005422f, 0.005784f, 0.006121f, 0.006428f, 0.006690f, 0.006905f, 0.007096f, 0.007241f, + 0.007305f, 0.007315f, 0.007117f, 0.006840f, 0.006446f, 0.005915f, 0.005314f, 0.004568f, 0.003781f, + 0.002967f, 0.002550f, 0.002355f, 0.002493f, 0.002520f +}; + +const float defaultHRIR_left_avg_power_32kHz[LR_IAC_LENGTH_NR_FC] = { + 1.042842f, 1.041052f, 1.032098f, 1.024347f, 1.017398f, 1.019204f, 1.022140f, 1.026773f, 1.026684f, + 1.024560f, 1.019019f, 1.016692f, 1.016507f, 1.025484f, 1.035123f, 1.045753f, 1.050401f, 1.052033f, + 1.047590f, 1.042551f, 1.037116f, 1.034266f, 1.031619f, 1.029278f, 1.025989f, 1.022575f, 1.019610f, + 1.017442f, 1.015805f, 1.012657f, 1.008261f, 1.001990f, 0.995937f, 0.990744f, 0.988777f, 0.988277f, + 0.988755f, 0.987563f, 0.985600f, 0.982481f, 0.980182f, 0.978414f, 0.977951f, 0.977129f, 0.976068f, + 0.974020f, 0.972563f, 0.971992f, 0.973446f, 0.975452f, 0.977643f, 0.978631f, 0.978818f, 0.977682f, + 0.976742f, 0.976096f, 0.975927f, 0.975729f, 0.974941f, 0.973370f, 0.971276f, 0.968762f, 0.966461f, + 0.964481f, 0.962731f, 0.960904f, 0.958549f, 0.955708f, 0.952543f, 0.949546f, 0.946857f, 0.944631f, + 0.942410f, 0.939997f, 0.936815f, 0.933278f, 0.929505f, 0.926271f, 0.923282f, 0.920659f, 0.917696f, + 0.914482f, 0.910602f, 0.906806f, 0.903065f, 0.900364f, 0.897894f, 0.895772f, 0.893323f, 0.890740f, + 0.887944f, 0.885641f, 0.883667f, 0.882835f, 0.882051f, 0.881336f, 0.880121f, 0.878813f, 0.877633f, + 0.877223f, 0.877327f, 0.878409f, 0.879421f, 0.880327f, 0.881091f, 0.882024f, 0.883779f, 0.886402f, + 0.889602f, 0.893152f, 0.896459f, 0.899400f, 0.902225f, 0.905146f, 0.908573f, 0.912109f, 0.915718f, + 0.918254f, 0.920227f, 0.921355f, 0.922089f, 0.922760f, 0.923576f, 0.924088f, 0.924398f, 0.923115f, + 0.921260f, 0.918548f, 0.915643f, 0.912707f, 0.909842f, 0.906416f, 0.902615f, 0.897332f, 0.891877f, + 0.886166f, 0.880998f, 0.875991f, 0.871078f, 0.865522f, 0.859537f, 0.852717f, 0.846083f, 0.839728f, + 0.833972f, 0.828308f, 0.822411f, 0.816009f, 0.809271f, 0.802578f, 0.796320f, 0.790714f, 0.785846f, + 0.781192f, 0.776652f, 0.772249f, 0.767940f, 0.764926f, 0.762667f, 0.761540f, 0.761326f, 0.761372f, + 0.761547f, 0.761950f, 0.762506f, 0.764263f, 0.766400f, 0.769105f, 0.771504f, 0.773644f, 0.775056f, + 0.776462f, 0.777865f, 0.779929f, 0.781942f, 0.783881f, 0.784915f, 0.785562f, 0.785567f, 0.785690f, + 0.785891f, 0.786286f, 0.786348f, 0.785912f, 0.784408f, 0.782509f, 0.780101f, 0.777798f, 0.775564f, + 0.773205f, 0.770446f, 0.767088f, 0.762953f, 0.758652f, 0.754459f, 0.750714f, 0.747266f, 0.743818f, + 0.740063f, 0.735847f, 0.731497f, 0.727285f, 0.723759f, 0.720587f, 0.717650f, 0.714166f, 0.710382f, + 0.706148f, 0.702029f, 0.698046f, 0.694494f, 0.690839f, 0.687115f, 0.682535f, 0.677735f, 0.672604f, + 0.667663f, 0.662868f, 0.658475f, 0.654061f, 0.649634f, 0.644689f, 0.639750f, 0.634821f, 0.630767f, + 0.627153f, 0.624422f, 0.621650f, 0.618850f, 0.615731f, 0.613069f, 0.611089f, 0.610598f, 0.610566f, + 0.610880f, 0.610933f, 0.610809f, 0.611930f, 0.614079f, 0.617771f, 0.622653f, 0.628199f, 0.635210f, + 0.645081f, 0.656860f, 0.669006f, 0.673510f, 0.666552f, 0.628172f, 0.575127f, 0.494850f, 0.413951f, + 0.332637f, 0.280816f, 0.241903f, 0.222353f, 0.218443f +}; + +const float defaultHRIR_right_avg_power_32kHz[LR_IAC_LENGTH_NR_FC] = { + 1.042841f, 1.041051f, 1.032097f, 1.024346f, 1.017399f, 1.019202f, 1.022138f, 1.026772f, 1.026684f, + 1.024560f, 1.019019f, 1.016691f, 1.016506f, 1.025485f, 1.035123f, 1.045752f, 1.050401f, 1.052035f, + 1.047590f, 1.042551f, 1.037115f, 1.034265f, 1.031619f, 1.029280f, 1.025989f, 1.022573f, 1.019609f, + 1.017441f, 1.015805f, 1.012660f, 1.008264f, 1.001991f, 0.995937f, 0.990744f, 0.988778f, 0.988278f, + 0.988755f, 0.987564f, 0.985601f, 0.982480f, 0.980182f, 0.978415f, 0.977953f, 0.977129f, 0.976065f, + 0.974019f, 0.972563f, 0.971995f, 0.973448f, 0.975452f, 0.977643f, 0.978632f, 0.978821f, 0.977685f, + 0.976745f, 0.976097f, 0.975927f, 0.975729f, 0.974941f, 0.973370f, 0.971276f, 0.968759f, 0.966458f, + 0.964480f, 0.962731f, 0.960906f, 0.958547f, 0.955706f, 0.952543f, 0.949546f, 0.946857f, 0.944629f, + 0.942409f, 0.939999f, 0.936815f, 0.933278f, 0.929507f, 0.926270f, 0.923280f, 0.920660f, 0.917696f, + 0.914481f, 0.910601f, 0.906806f, 0.903066f, 0.900365f, 0.897895f, 0.895772f, 0.893323f, 0.890740f, + 0.887942f, 0.885640f, 0.883669f, 0.882835f, 0.882049f, 0.881335f, 0.880120f, 0.878812f, 0.877632f, + 0.877223f, 0.877328f, 0.878410f, 0.879422f, 0.880327f, 0.881092f, 0.882026f, 0.883781f, 0.886402f, + 0.889601f, 0.893151f, 0.896457f, 0.899399f, 0.902224f, 0.905146f, 0.908576f, 0.912111f, 0.915716f, + 0.918254f, 0.920227f, 0.921354f, 0.922087f, 0.922759f, 0.923576f, 0.924090f, 0.924401f, 0.923115f, + 0.921259f, 0.918547f, 0.915643f, 0.912708f, 0.909842f, 0.906416f, 0.902617f, 0.897334f, 0.891879f, + 0.886168f, 0.881000f, 0.875992f, 0.871078f, 0.865522f, 0.859538f, 0.852719f, 0.846085f, 0.839728f, + 0.833973f, 0.828309f, 0.822411f, 0.816009f, 0.809271f, 0.802579f, 0.796321f, 0.790714f, 0.785846f, + 0.781192f, 0.776653f, 0.772250f, 0.767940f, 0.764926f, 0.762667f, 0.761541f, 0.761325f, 0.761371f, + 0.761548f, 0.761950f, 0.762504f, 0.764263f, 0.766400f, 0.769104f, 0.771504f, 0.773644f, 0.775054f, + 0.776461f, 0.777866f, 0.779929f, 0.781942f, 0.783879f, 0.784913f, 0.785561f, 0.785567f, 0.785690f, + 0.785891f, 0.786285f, 0.786348f, 0.785913f, 0.784409f, 0.782510f, 0.780103f, 0.777798f, 0.775563f, + 0.773206f, 0.770449f, 0.767090f, 0.762954f, 0.758652f, 0.754458f, 0.750712f, 0.747266f, 0.743818f, + 0.740062f, 0.735846f, 0.731497f, 0.727285f, 0.723759f, 0.720587f, 0.717649f, 0.714164f, 0.710381f, + 0.706148f, 0.702028f, 0.698044f, 0.694493f, 0.690838f, 0.687113f, 0.682535f, 0.677735f, 0.672602f, + 0.667662f, 0.662869f, 0.658475f, 0.654061f, 0.649632f, 0.644687f, 0.639749f, 0.634820f, 0.630767f, + 0.627154f, 0.624423f, 0.621650f, 0.618849f, 0.615732f, 0.613069f, 0.611090f, 0.610599f, 0.610566f, + 0.610881f, 0.610933f, 0.610811f, 0.611930f, 0.614078f, 0.617770f, 0.622653f, 0.628199f, 0.635210f, + 0.645082f, 0.656861f, 0.669007f, 0.673511f, 0.666551f, 0.628170f, 0.575125f, 0.494849f, 0.413951f, + 0.332639f, 0.280817f, 0.241904f, 0.222354f, 0.218443f +}; + +const float defaultHRIR_coherence_16kHz[LR_IAC_LENGTH_NR_FC] = { + 0.969495f, 0.969495f, 0.955351f, 0.919989f, 0.884627f, 0.842799f, 0.775108f, 0.707416f, 0.639724f, + 0.559264f, 0.478804f, 0.398344f, 0.327187f, 0.258355f, 0.189524f, 0.134064f, 0.087519f, 0.040974f, + 0.011416f, 0.007339f, 0.003262f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, 0.000000f, + 0.000000f, 0.002562f, 0.005763f, 0.008965f, 0.014937f, 0.022756f, 0.030575f, 0.035595f, 0.036416f, + 0.037238f, 0.037747f, 0.037005f, 0.036264f, 0.035523f, 0.035506f, 0.035489f, 0.035472f, 0.034043f, + 0.032261f, 0.030479f, 0.027264f, 0.023092f, 0.018921f, 0.015179f, 0.012080f, 0.008982f, 0.006557f, + 0.006827f, 0.007098f, 0.007368f, 0.009187f, 0.011006f, 0.012825f, 0.014250f, 0.015575f, 0.016901f, + 0.018085f, 0.019174f, 0.020264f, 0.021306f, 0.022276f, 0.023246f, 0.023984f, 0.023794f, 0.023604f, + 0.023414f, 0.022260f, 0.021105f, 0.019951f, 0.019250f, 0.018662f, 0.018074f, 0.017860f, 0.017894f, + 0.017928f, 0.017558f, 0.016581f, 0.015604f, 0.014403f, 0.012303f, 0.010203f, 0.008103f, 0.006887f, + 0.005671f, 0.004455f, 0.004657f, 0.005213f, 0.005769f, 0.006365f, 0.006987f, 0.007608f, 0.007649f, + 0.006819f, 0.005989f, 0.004992f, 0.003328f, 0.001664f, 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.000038f, 0.000229f, + 0.000420f, 0.000610f, 0.001290f, 0.001970f, 0.002649f, 0.003127f, 0.003555f, 0.003982f, 0.004113f, + 0.004046f, 0.003978f, 0.003618f, 0.002820f, 0.002021f, 0.001296f, 0.000864f, 0.000432f, 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.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.000005f, 0.000011f, 0.000018f, 0.000743f, 0.001947f, 0.003152f, 0.004819f, + 0.007179f, 0.009539f, 0.012160f, 0.015826f, 0.019491f, 0.023157f, 0.028625f, 0.034093f, 0.039562f, + 0.046791f, 0.054462f, 0.062132f, 0.065200f, 0.065200f +}; + +const float defaultHRIR_left_avg_power_16kHz[LR_IAC_LENGTH_NR_FC] = { + 1.112848f, 1.112848f, 1.110615f, 1.105032f, 1.099449f, 1.094383f, 1.091385f, 1.088386f, 1.085388f, + 1.087986f, 1.090583f, 1.093181f, 1.095718f, 1.098238f, 1.100760f, 1.100829f, 1.099264f, 1.097699f, + 1.095677f, 1.092970f, 1.090263f, 1.088142f, 1.088367f, 1.088593f, 1.088819f, 1.092532f, 1.096246f, + 1.099959f, 1.104778f, 1.109873f, 1.114969f, 1.118806f, 1.121804f, 1.124803f, 1.125952f, 1.124327f, + 1.122702f, 1.120550f, 1.116291f, 1.112033f, 1.107774f, 1.105150f, 1.102527f, 1.099903f, 1.098607f, + 1.097642f, 1.096677f, 1.094771f, 1.092238f, 1.089705f, 1.086741f, 1.083131f, 1.079521f, 1.076294f, + 1.074604f, 1.072914f, 1.071224f, 1.070018f, 1.068812f, 1.067606f, 1.064075f, 1.059962f, 1.055849f, + 1.051324f, 1.046526f, 1.041727f, 1.038409f, 1.037312f, 1.036215f, 1.035479f, 1.036192f, 1.036905f, + 1.037618f, 1.035536f, 1.033453f, 1.031371f, 1.028051f, 1.024421f, 1.020792f, 1.018471f, 1.017022f, + 1.015574f, 1.014441f, 1.013780f, 1.013120f, 1.012053f, 1.009355f, 1.006658f, 1.003961f, 1.001331f, + 0.998701f, 0.996071f, 0.995600f, 0.995668f, 0.995737f, 0.996093f, 0.996641f, 0.997189f, 0.997005f, + 0.995722f, 0.994439f, 0.993136f, 0.991757f, 0.990377f, 0.988997f, 0.988491f, 0.987986f, 0.987480f, + 0.985997f, 0.984269f, 0.982542f, 0.980066f, 0.977092f, 0.974118f, 0.971621f, 0.969840f, 0.968058f, + 0.966366f, 0.965026f, 0.963687f, 0.962348f, 0.958809f, 0.955271f, 0.951732f, 0.947645f, 0.943422f, + 0.939198f, 0.936257f, 0.934171f, 0.932086f, 0.930008f, 0.927942f, 0.925876f, 0.923250f, 0.918385f, + 0.913521f, 0.908656f, 0.903702f, 0.898749f, 0.893795f, 0.891002f, 0.888749f, 0.886496f, 0.883996f, + 0.881331f, 0.878666f, 0.874814f, 0.869183f, 0.863553f, 0.858015f, 0.852851f, 0.847687f, 0.842523f, + 0.840022f, 0.837520f, 0.835019f, 0.831781f, 0.828359f, 0.824937f, 0.820011f, 0.814082f, 0.808153f, + 0.802713f, 0.798009f, 0.793305f, 0.789023f, 0.786429f, 0.783835f, 0.781241f, 0.777028f, 0.772815f, + 0.768602f, 0.763134f, 0.757353f, 0.751571f, 0.747112f, 0.743534f, 0.739956f, 0.736838f, 0.734410f, + 0.731982f, 0.729034f, 0.724009f, 0.718984f, 0.713959f, 0.708439f, 0.702918f, 0.697398f, 0.694412f, + 0.692061f, 0.689710f, 0.687330f, 0.684932f, 0.682534f, 0.678706f, 0.672732f, 0.666759f, 0.660939f, + 0.655737f, 0.650536f, 0.645334f, 0.644222f, 0.643110f, 0.641998f, 0.639788f, 0.637303f, 0.634818f, + 0.629683f, 0.622782f, 0.615880f, 0.609823f, 0.605032f, 0.600241f, 0.596372f, 0.596194f, 0.596015f, + 0.595837f, 0.592403f, 0.588969f, 0.585535f, 0.577842f, 0.569084f, 0.560326f, 0.553880f, 0.548977f, + 0.544074f, 0.541240f, 0.541511f, 0.541781f, 0.540837f, 0.535040f, 0.529243f, 0.523446f, 0.510870f, + 0.498293f, 0.485717f, 0.479851f, 0.475663f, 0.471475f, 0.473848f, 0.480595f, 0.487343f, 0.489727f, + 0.485566f, 0.481405f, 0.471747f, 0.440099f, 0.408451f, 0.376804f, 0.330744f, 0.284685f, 0.238626f, + 0.203638f, 0.171419f, 0.139199f, 0.126312f, 0.126312f +}; + +const float defaultHRIR_right_avg_power_16kHz[LR_IAC_LENGTH_NR_FC] = { + 1.112848f, 1.112848f, 1.110615f, 1.105033f, 1.099450f, 1.094384f, 1.091385f, 1.088385f, 1.085385f, + 1.087983f, 1.090582f, 1.093180f, 1.095717f, 1.098238f, 1.100758f, 1.100828f, 1.099264f, 1.097700f, + 1.095678f, 1.092969f, 1.090259f, 1.088138f, 1.088365f, 1.088592f, 1.088819f, 1.092533f, 1.096246f, + 1.099960f, 1.104778f, 1.109872f, 1.114967f, 1.118803f, 1.121802f, 1.124800f, 1.125950f, 1.124325f, + 1.122701f, 1.120550f, 1.116290f, 1.112030f, 1.107770f, 1.105148f, 1.102526f, 1.099904f, 1.098608f, + 1.097642f, 1.096677f, 1.094770f, 1.092237f, 1.089704f, 1.086740f, 1.083130f, 1.079521f, 1.076295f, + 1.074604f, 1.072914f, 1.071223f, 1.070018f, 1.068813f, 1.067608f, 1.064076f, 1.059963f, 1.055849f, + 1.051324f, 1.046525f, 1.041726f, 1.038407f, 1.037310f, 1.036213f, 1.035478f, 1.036191f, 1.036904f, + 1.037617f, 1.035535f, 1.033453f, 1.031372f, 1.028051f, 1.024421f, 1.020791f, 1.018470f, 1.017021f, + 1.015573f, 1.014440f, 1.013780f, 1.013121f, 1.012054f, 1.009357f, 1.006659f, 1.003962f, 1.001331f, + 0.998700f, 0.996070f, 0.995598f, 0.995666f, 0.995735f, 0.996091f, 0.996639f, 0.997188f, 0.997004f, + 0.995722f, 0.994439f, 0.993137f, 0.991758f, 0.990378f, 0.988998f, 0.988492f, 0.987987f, 0.987481f, + 0.985997f, 0.984269f, 0.982541f, 0.980065f, 0.977091f, 0.974118f, 0.971621f, 0.969841f, 0.968060f, + 0.966368f, 0.965029f, 0.963689f, 0.962350f, 0.958810f, 0.955270f, 0.951731f, 0.947643f, 0.943419f, + 0.939196f, 0.936255f, 0.934170f, 0.932086f, 0.930009f, 0.927943f, 0.925877f, 0.923251f, 0.918386f, + 0.913520f, 0.908655f, 0.903701f, 0.898748f, 0.893795f, 0.891001f, 0.888748f, 0.886495f, 0.883995f, + 0.881330f, 0.878665f, 0.874814f, 0.869184f, 0.863554f, 0.858016f, 0.852852f, 0.847687f, 0.842522f, + 0.840021f, 0.837520f, 0.835019f, 0.831781f, 0.828358f, 0.824936f, 0.820010f, 0.814081f, 0.808152f, + 0.802713f, 0.798009f, 0.793305f, 0.789024f, 0.786430f, 0.783837f, 0.781244f, 0.777029f, 0.772815f, + 0.768601f, 0.763133f, 0.757353f, 0.751572f, 0.747112f, 0.743534f, 0.739956f, 0.736837f, 0.734410f, + 0.731982f, 0.729034f, 0.724009f, 0.718984f, 0.713959f, 0.708439f, 0.702919f, 0.697399f, 0.694414f, + 0.692063f, 0.689712f, 0.687331f, 0.684932f, 0.682532f, 0.678704f, 0.672731f, 0.666759f, 0.660941f, + 0.655738f, 0.650534f, 0.645331f, 0.644220f, 0.643109f, 0.641999f, 0.639789f, 0.637304f, 0.634819f, + 0.629684f, 0.622783f, 0.615881f, 0.609824f, 0.605033f, 0.600242f, 0.596373f, 0.596194f, 0.596015f, + 0.595837f, 0.592403f, 0.588969f, 0.585535f, 0.577842f, 0.569083f, 0.560324f, 0.553879f, 0.548977f, + 0.544074f, 0.541241f, 0.541511f, 0.541781f, 0.540838f, 0.535041f, 0.529243f, 0.523446f, 0.510869f, + 0.498293f, 0.485717f, 0.479851f, 0.475663f, 0.471475f, 0.473848f, 0.480595f, 0.487343f, 0.489727f, + 0.485566f, 0.481405f, 0.471746f, 0.440098f, 0.408450f, 0.376802f, 0.330743f, 0.284685f, 0.238626f, + 0.203638f, 0.171419f, 0.139199f, 0.126311f, 0.126311f }; - /*----------------------------------------------------------------------------------* * t-design and SN3D normalization table *----------------------------------------------------------------------------------*/ @@ -265,8 +456,6 @@ const float norm_sn3d_hoa3[16] = }; /* Order 11 t-design */ -const uint16_t t_design_11_size = 70; - const float t_design_11_azimuth[70] = { 1.329273e+02f, -8.393495e+01f, 8.474100e+00f, -1.133408e+02f, -1.032659e+02f, -3.323704e+01f, 2.185643e+01f, -1.565395e+02f, diff --git a/lib_rend/ivas_rom_rend.h b/lib_rend/ivas_rom_rend.h index c4e1ca153378923382ba84c162635b4b10d3bd17..0e42c33286b69ef62a64f3c5f29b92cf060dac0f 100644 --- a/lib_rend/ivas_rom_rend.h +++ b/lib_rend/ivas_rom_rend.h @@ -74,10 +74,17 @@ extern const int16_t HRTF_MODEL_N_CPTS_VAR[HRTF_MODEL_N_SECTIONS]; extern const float SincTable[321]; -extern const float orange53_left_avg_power[257]; -extern const float orange53_right_avg_power[257]; -extern const float orange53_coherence[257]; +extern const float defaultHRIR_coherence_48kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_left_avg_power_48kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_right_avg_power_48kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_coherence_32kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_left_avg_power_32kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_right_avg_power_32kHz[LR_IAC_LENGTH_NR_FC]; + +extern const float defaultHRIR_coherence_16kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_left_avg_power_16kHz[LR_IAC_LENGTH_NR_FC]; +extern const float defaultHRIR_right_avg_power_16kHz[LR_IAC_LENGTH_NR_FC]; /*----------------------------------------------------------------------------------* * t-design and SN3D normalization table @@ -87,7 +94,6 @@ extern const float orange53_coherence[257]; extern const float norm_sn3d_hoa3[16]; /* Order 11 t-design */ -extern const uint16_t t_design_11_size; extern const float t_design_11_azimuth[70]; extern const float t_design_11_elevation[70]; @@ -119,4 +125,13 @@ extern const float ls_conversion_cicpX_stereo[12][2]; /* Mapping table of input config : output config with corresponding matrix */ extern const LS_CONVERSION_MAPPING ls_conversion_mapping[]; + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------------------* + * Split binaural rendering ROM tables + *----------------------------------------------------------------------------------*/ + +extern const int32_t split_rend_brate_tbl[]; +#endif + #endif /* IVAS_ROM_REND_H */ diff --git a/lib_rend/ivas_rotation.c b/lib_rend/ivas_rotation.c index 2cd2744b5ab8e04baa373b461073442f2d21e6b5..0497275508e1d530b1036eb05ac46b71c2148f53 100644 --- a/lib_rend/ivas_rotation.c +++ b/lib_rend/ivas_rotation.c @@ -48,9 +48,22 @@ * Local funtion declarations *-----------------------------------------------------------------------*/ -static ivas_error combine_external_and_head_orientations( IVAS_QUATERNION *headRotQuaternions, IVAS_VECTOR3 *listenerPos, int16_t numHeadRotQuaternions, EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); +static ivas_error combine_external_and_head_orientations( + IVAS_QUATERNION *headRotQuaternions, + IVAS_VECTOR3 *listenerPos, +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis*/ +#endif +#ifndef API_5MS + int16_t numHeadRotQuaternions, +#endif + EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ); -static void external_target_interpolation( EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, const int16_t i ); +static void external_target_interpolation( + EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, + const int16_t i ); static bool are_orientations_same( const IVAS_QUATERNION *orientation1, const IVAS_QUATERNION *orientation2 ); @@ -75,7 +88,9 @@ ivas_error ivas_headTrack_open( } /* Initialization */ +#ifndef API_5MS ( *hHeadTrackData )->num_quaternions = 0; +#endif ( *hHeadTrackData )->lrSwitchInterpVal = 0.0f; ( *hHeadTrackData )->lrSwitchedCurrent = 0; ( *hHeadTrackData )->lrSwitchedNext = 0; @@ -96,6 +111,10 @@ ivas_error ivas_headTrack_open( ( *hHeadTrackData )->Rmat_prev[i][i] = 1.0f; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + ( *hHeadTrackData )->sr_pose_pred_axis = DEFAULT_AXIS; +#endif + set_zero( ( *hHeadTrackData )->chEneIIR[0], MASA_FREQUENCY_BANDS ); set_zero( ( *hHeadTrackData )->chEneIIR[1], MASA_FREQUENCY_BANDS ); set_zero( ( *hHeadTrackData )->procChEneIIR[0], MASA_FREQUENCY_BANDS ); @@ -144,17 +163,30 @@ void QuatToRotMat( float Rmat[3][3] /* o : real-space rotation matrix for this rotation */ ) { - Rmat[0][0] = quat.w * quat.w + quat.x * quat.x - quat.y * quat.y - quat.z * quat.z; - Rmat[0][1] = 2.0f * ( quat.x * quat.y - quat.w * quat.z ); - Rmat[0][2] = 2.0f * ( quat.x * quat.z + quat.w * quat.y ); - - Rmat[1][0] = 2.0f * ( quat.x * quat.y + quat.w * quat.z ); - Rmat[1][1] = quat.w * quat.w - quat.x * quat.x + quat.y * quat.y - quat.z * quat.z; - Rmat[1][2] = 2.0f * ( quat.y * quat.z - quat.w * quat.x ); - - Rmat[2][0] = 2.0f * ( quat.x * quat.z - quat.w * quat.y ); - Rmat[2][1] = 2.0f * ( quat.y * quat.z + quat.w * quat.x ); - Rmat[2][2] = quat.w * quat.w - quat.x * quat.x - quat.y * quat.y + quat.z * quat.z; +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( quat.w == -3.0 ) + { + IVAS_QUATERNION quat_local; + Euler2Quat( deg2rad( quat.x ), deg2rad( quat.y ), deg2rad( quat.z ), &quat_local ); + QuatToRotMat( quat_local, Rmat ); + } + else + { +#endif + Rmat[0][0] = quat.w * quat.w + quat.x * quat.x - quat.y * quat.y - quat.z * quat.z; + Rmat[0][1] = 2.0f * ( quat.x * quat.y - quat.w * quat.z ); + Rmat[0][2] = 2.0f * ( quat.x * quat.z + quat.w * quat.y ); + + Rmat[1][0] = 2.0f * ( quat.x * quat.y + quat.w * quat.z ); + Rmat[1][1] = quat.w * quat.w - quat.x * quat.x + quat.y * quat.y - quat.z * quat.z; + Rmat[1][2] = 2.0f * ( quat.y * quat.z - quat.w * quat.x ); + + Rmat[2][0] = 2.0f * ( quat.x * quat.z - quat.w * quat.y ); + Rmat[2][1] = 2.0f * ( quat.y * quat.z + quat.w * quat.x ); + Rmat[2][2] = quat.w * quat.w - quat.x * quat.x - quat.y * quat.y + quat.z * quat.z; +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif return; } @@ -187,11 +219,57 @@ void Euler2Quat( return; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*------------------------------------------------------------------------- + * Quat2EulerDegree() + * + * Quaternion handling: calculate corresponding Euler angles in degrees + *------------------------------------------------------------------------*/ + +void Quat2EulerDegree( + const IVAS_QUATERNION quat, /* i : quaternion describing the rotation */ + float *yaw, /* o : yaw */ + float *pitch, /* o : pitch */ + float *roll /* o : roll */ +) +{ + if ( quat.w != -3.0 ) + { + float p; + *yaw = atan2f( 2 * ( quat.w * quat.x + quat.y * quat.z ), 1 - 2 * ( quat.x * quat.x + quat.y * quat.y ) ); + p = 2 * ( quat.w * quat.y - quat.z * quat.x ); + p = max( -1.0f, min( 1.0f, p ) ); + *pitch = asinf( p ); + *roll = atan2f( 2 * ( quat.w * quat.z + quat.x * quat.y ), 1 - 2 * ( quat.y * quat.y + quat.z * quat.z ) ); + *yaw *= _180_OVER_PI; + *pitch *= _180_OVER_PI; + *roll *= _180_OVER_PI; + } + else + { + /* Euler angles in R_X(roll)*R_Y(pitch)*R_Z(yaw) convention + * + * yaw: rotate scene counter-clockwise in the horizontal plane + * pitch: rotate scene in the median plane, increase elevation with positive values + * roll: rotate scene from the right ear to the top + */ + *yaw = quat.z; + *pitch = quat.y; + *roll = quat.x; + } + + return; +} +#endif + + /*------------------------------------------------------------------------- * deg2rad() * * Converts degrees to normalized radians *------------------------------------------------------------------------*/ + float deg2rad( float degrees ) { @@ -207,6 +285,29 @@ float deg2rad( return PI_OVER_180 * degrees; } + +/*------------------------------------------------------------------------- + * rad2deg() + * + * Converts normalized radians to degrees + *------------------------------------------------------------------------*/ + +float rad2deg( + float radians ) +{ + while ( radians >= EVS_PI ) + { + radians = radians - EVS_PI; + } + while ( radians <= -EVS_PI ) + { + radians = radians + EVS_PI; + } + + return _180_OVER_PI * radians; +} + + /*------------------------------------------------------------------------- * rotateAziEle() * @@ -292,9 +393,13 @@ void rotateFrame_shd( set_zero( SHrotmat[i], HEADROT_SHMAT_DIM ); } - /* calculate ambisonics rotation matrices for the previous and current frames */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + SHrotmatgen( SHrotmat_prev, hCombinedOrientationData->Rmat_prev[0], shd_rot_max_order ); +#else SHrotmatgen( SHrotmat_prev, hCombinedOrientationData->Rmat_prev, shd_rot_max_order ); +#endif + SHrotmatgen( SHrotmat, hCombinedOrientationData->Rmat[subframe_idx], shd_rot_max_order ); for ( i = 0; i < subframe_len; i++ ) @@ -347,7 +452,14 @@ void rotateFrame_shd( /* move Rmat to Rmat_prev */ for ( i = 0; i < 3; i++ ) { - mvr2r( hCombinedOrientationData->Rmat[subframe_idx][i], hCombinedOrientationData->Rmat_prev[i], 3 ); + mvr2r( + hCombinedOrientationData->Rmat[subframe_idx][i], +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCombinedOrientationData->Rmat_prev[0][i], +#else + hCombinedOrientationData->Rmat_prev[i], +#endif + 3 ); } return; @@ -414,7 +526,12 @@ void rotateFrame_sd( ch_in_woLFE = ( ch_in >= index_lfe ) ? ch_in - 1 : ch_in; /* gains for previous subframe rotation */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + rotateAziEle( hTransSetup.ls_azimuth[ch_in_woLFE], hTransSetup.ls_elevation[ch_in_woLFE], &azimuth, &elevation, hCombinedOrientationData->Rmat_prev[0], hTransSetup.is_planar_setup ); +#else rotateAziEle( hTransSetup.ls_azimuth[ch_in_woLFE], hTransSetup.ls_elevation[ch_in_woLFE], &azimuth, &elevation, hCombinedOrientationData->Rmat_prev, hTransSetup.is_planar_setup ); +#endif + if ( hEFAPdata != NULL && ( hTransSetup.ls_azimuth[ch_in_woLFE] != azimuth || hTransSetup.ls_elevation[ch_in_woLFE] != elevation ) ) { efap_determine_gains( hEFAPdata, tmp_gains, azimuth, elevation, EFAP_MODE_EFAP ); @@ -472,7 +589,14 @@ void rotateFrame_sd( /* move Rmat to Rmat_prev */ for ( i = 0; i < 3; i++ ) { - mvr2r( hCombinedOrientationData->Rmat[subframe_idx][i], hCombinedOrientationData->Rmat_prev[i], 3 ); + mvr2r( + hCombinedOrientationData->Rmat[subframe_idx][i], +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCombinedOrientationData->Rmat_prev[0][i], +#else + hCombinedOrientationData->Rmat_prev[i], +#endif + 3 ); } /* copy to output */ @@ -699,8 +823,13 @@ void rotateFrame_sd_cldfb( ivas_error ivas_external_orientation_open( EXTERNAL_ORIENTATION_HANDLE *hExtOrientationData /* o : external orientation handle */ +#ifdef API_5MS + , + const int16_t num_subframes +#endif ) { + int16_t i; IVAS_QUATERNION identity; @@ -712,7 +841,9 @@ ivas_error ivas_external_orientation_open( { return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for external orientation memory\n" ) ); } - +#ifdef API_5MS + ( *hExtOrientationData )->num_subframes = num_subframes; +#endif /* Enable head rotation and disable external orientation as default */ for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { @@ -722,7 +853,6 @@ ivas_error ivas_external_orientation_open( ( *hExtOrientationData )->numFramesToTargetOrientation[i] = 0; ( *hExtOrientationData )->Quaternions[i] = identity; } - return IVAS_ERR_OK; } @@ -757,11 +887,19 @@ void ivas_external_orientation_close( ivas_error ivas_combined_orientation_open( COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData /* o : combined orientation handle */ +#ifdef API_5MS + , + const int16_t num_subframes +#endif ) { - int16_t i, j; + int16_t i; + int16_t j; IVAS_QUATERNION identity; IVAS_VECTOR3 origo; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx; +#endif identity.w = 1.0f; identity.x = identity.y = identity.z = 0.0f; @@ -774,9 +912,23 @@ ivas_error ivas_combined_orientation_open( } /* Initialization */ +#ifdef API_5MS + ( *hCombinedOrientationData )->num_subframes = num_subframes; +#endif ( *hCombinedOrientationData )->interpolationCoefficient = 1.0f; ( *hCombinedOrientationData )->interpolationIncrement = 1.0f; +#ifdef API_5MS + if ( num_subframes == 1 ) + { + ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 2000; + } + else + { + ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; + } +#else ( *hCombinedOrientationData )->maximumFramesToTargetOrientation = 500; +#endif ( *hCombinedOrientationData )->lrSwitchedNext = 0; ( *hCombinedOrientationData )->lrSwitchedCurrent = 0; ( *hCombinedOrientationData )->lrSwitchInterpVal = 0.0f; @@ -789,8 +941,6 @@ ivas_error ivas_combined_orientation_open( { ( *hCombinedOrientationData )->enableCombinedOrientation[i] = 0; ( *hCombinedOrientationData )->Quaternions[i] = identity; - ( *hCombinedOrientationData )->Quaternions_prev_headRot[i] = identity; - ( *hCombinedOrientationData )->Quaternions_prev_extOrientation[i] = identity; ( *hCombinedOrientationData )->listenerPos[i] = origo; for ( j = 0; j < 3; j++ ) @@ -800,17 +950,37 @@ 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++ ) + { + set_zero( ( *hCombinedOrientationData )->Rmat_prev[pos_idx][j], 3 ); + ( *hCombinedOrientationData )->Rmat_prev[pos_idx][j][j] = 1.0f; + } + } + ( *hCombinedOrientationData )->sr_pose_pred_axis = DEFAULT_AXIS; +#else for ( j = 0; j < 3; j++ ) { set_zero( ( *hCombinedOrientationData )->Rmat_prev[j], 3 ); ( *hCombinedOrientationData )->Rmat_prev[j][j] = 1.0f; } +#endif + + ( *hCombinedOrientationData )->Quaternion_prev_extOrientation = identity; + ( *hCombinedOrientationData )->Quaternion_frozen_ext = identity; + ( *hCombinedOrientationData )->Quaternion_frozen_head = identity; + set_zero( ( *hCombinedOrientationData )->chEneIIR[0], MASA_FREQUENCY_BANDS ); set_zero( ( *hCombinedOrientationData )->chEneIIR[1], MASA_FREQUENCY_BANDS ); set_zero( ( *hCombinedOrientationData )->procChEneIIR[0], MASA_FREQUENCY_BANDS ); set_zero( ( *hCombinedOrientationData )->procChEneIIR[1], MASA_FREQUENCY_BANDS ); + ( *hCombinedOrientationData )->isExtOrientationFrozen = 0; + ( *hCombinedOrientationData )->isHeadRotationFrozen = 0; + return IVAS_ERR_OK; } @@ -849,21 +1019,58 @@ ivas_error combine_external_and_head_orientations_dec( COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; +#endif +#ifdef API_5MS + IVAS_QUATERNION *pHeadRotQuaternion = NULL; +#else IVAS_QUATERNION *headRotQuaternions = NULL; +#endif IVAS_VECTOR3 *listenerPos = NULL; +#ifndef API_5MS int16_t numHeadRotQuaternions = 0; +#endif if ( hHeadTrackData != NULL ) { +#ifdef API_5MS + pHeadRotQuaternion = hHeadTrackData->Quaternions; + listenerPos = hHeadTrackData->Pos; +#else numHeadRotQuaternions = hHeadTrackData->num_quaternions; if ( hHeadTrackData->num_quaternions >= 0 ) { headRotQuaternions = hHeadTrackData->Quaternions; listenerPos = hHeadTrackData->Pos; } +#endif +#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( headRotQuaternions, listenerPos, numHeadRotQuaternions, hExtOrientationData, hCombinedOrientationData ); + return combine_external_and_head_orientations( +#ifdef API_5MS + pHeadRotQuaternion, +#else + headRotQuaternions, +#endif + listenerPos, +#ifdef SPLIT_REND_WITH_HEAD_ROT + sr_pose_pred_axis, +#endif +#ifndef API_5MS + numHeadRotQuaternions, +#endif + hExtOrientationData, + hCombinedOrientationData ); } @@ -879,22 +1086,48 @@ ivas_error combine_external_and_head_orientations_rend( COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; +#endif IVAS_QUATERNION *headRotQuaternions = NULL; IVAS_VECTOR3 *listenerPos = NULL; - int16_t numHeadRotQuaternions = 0; int16_t i; +#ifndef API_5MS + int16_t numHeadRotQuaternions = 0; +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + sr_pose_pred_axis = DEFAULT_AXIS; +#endif if ( hHeadTrackData != NULL ) { if ( hHeadTrackData->headRotEnabled ) { +#ifdef API_5MS headRotQuaternions = hHeadTrackData->headPositions; listenerPos = hHeadTrackData->Pos; +#else + headRotQuaternions = hHeadTrackData->headPositions; + listenerPos = hHeadTrackData->Pos; +#endif } +#ifdef SPLIT_REND_WITH_HEAD_ROT + sr_pose_pred_axis = hHeadTrackData->sr_pose_pred_axis; +#endif } else if ( hExtOrientationData != NULL ) { /* Head rotation data not available, use the freezed value or disable */ +#ifdef API_5MS + for ( i = 0; i < hExtOrientationData->num_subframes; i++ ) + { + if ( hExtOrientationData->enableHeadRotation[i] != 2 ) + { + hExtOrientationData->enableHeadRotation[i] = 0; + } + } + +#else for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) { if ( hExtOrientationData->enableHeadRotation[i] != 2 ) @@ -902,9 +1135,20 @@ ivas_error combine_external_and_head_orientations_rend( hExtOrientationData->enableHeadRotation[i] = 0; } } +#endif } - return combine_external_and_head_orientations( headRotQuaternions, listenerPos, numHeadRotQuaternions, hExtOrientationData, hCombinedOrientationData ); + return combine_external_and_head_orientations( + headRotQuaternions, + listenerPos, +#ifdef SPLIT_REND_WITH_HEAD_ROT + sr_pose_pred_axis, +#endif +#ifndef API_5MS + numHeadRotQuaternions, +#endif + hExtOrientationData, + hCombinedOrientationData ); } @@ -915,15 +1159,21 @@ ivas_error combine_external_and_head_orientations_rend( * NOTE that the external orientations are inversed. *------------------------------------------------------------------------*/ -static ivas_error combine_external_and_head_orientations( - IVAS_QUATERNION *headRotQuaternions, /* i : quaternions for head rotation */ - IVAS_VECTOR3 *listenerPos, /* i : listener position */ - int16_t numHeadRotQuaternions, /* i : number of head rotation quaternions */ - EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ +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 + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis, /* i : split rend pose prediction axis*/ +#endif +#ifndef API_5MS + int16_t numHeadRotQuaternions, /* i : number of head rotation quaternions */ +#endif + EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ ) { - int16_t i, j; + int16_t i; + int16_t j; IVAS_QUATERNION identity; IVAS_VECTOR3 origo; @@ -934,7 +1184,11 @@ static ivas_error combine_external_and_head_orientations( /* Form combined orientations or return if no data available */ if ( hCombinedOrientationData == NULL ) { +#ifdef API_5MS if ( headRotQuaternions != NULL || hExtOrientationData != NULL ) +#else + if ( headRotQuaternions != NULL || hExtOrientationData != NULL ) +#endif { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } @@ -943,7 +1197,11 @@ static ivas_error combine_external_and_head_orientations( return IVAS_ERR_OK; } } +#ifdef API_5MS else if ( headRotQuaternions == NULL && hExtOrientationData == NULL ) +#else + else if ( headRotQuaternions == NULL && hExtOrientationData == NULL ) +#endif { /* Reset the combined orientations and rotations */ hCombinedOrientationData->isInterpolationOngoing = FALSE; @@ -951,7 +1209,11 @@ static ivas_error combine_external_and_head_orientations( hCombinedOrientationData->interpolationIncrement = 1.0f; hCombinedOrientationData->Quaternions_ext_interpolation_start = identity; hCombinedOrientationData->Quaternions_ext_interpolation_target = identity; +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { hCombinedOrientationData->enableCombinedOrientation[i] = 0; hCombinedOrientationData->Quaternions[i] = identity; @@ -964,9 +1226,19 @@ static ivas_error combine_external_and_head_orientations( } } } +#ifdef API_5MS + else if ( hExtOrientationData == NULL && headRotQuaternions != NULL ) +#else else if ( hExtOrientationData == NULL && headRotQuaternions != NULL ) +#endif { /* Head rotation only */ +#ifdef API_5MS + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) + { + hCombinedOrientationData->Quaternions[i] = headRotQuaternions[i]; + } +#else if ( numHeadRotQuaternions >= 0 ) { for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) @@ -974,13 +1246,33 @@ static ivas_error combine_external_and_head_orientations( hCombinedOrientationData->Quaternions[i] = headRotQuaternions[i]; } } +#endif } if ( hExtOrientationData != NULL ) { /* External orientations */ +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { + /* Check for frozen external orientation */ + if ( hExtOrientationData->enableExternalOrientation[i] == 2 ) + { + if ( hCombinedOrientationData->isExtOrientationFrozen != 1 ) + { + hCombinedOrientationData->Quaternion_frozen_ext = hExtOrientationData->Quaternions[i]; + hCombinedOrientationData->isExtOrientationFrozen = 1; + } + } + else + { + hCombinedOrientationData->Quaternion_frozen_ext = identity; + hCombinedOrientationData->isExtOrientationFrozen = 0; + } + if ( hExtOrientationData->enableRotationInterpolation[i] == 1 && hExtOrientationData->enableExternalOrientation[i] > 0 ) { if ( hCombinedOrientationData->isInterpolationOngoing == TRUE && hCombinedOrientationData->interpolationCoefficient <= 1.0f && are_orientations_same( &hCombinedOrientationData->Quaternions_ext_interpolation_target, &hExtOrientationData->Quaternions[i] ) == true ) @@ -1010,19 +1302,49 @@ static ivas_error combine_external_and_head_orientations( /* Use the freezed external orientation */ else if ( hExtOrientationData->enableExternalOrientation[i] == 2 ) { - hCombinedOrientationData->Quaternions[i] = hCombinedOrientationData->Quaternions_prev_extOrientation[i]; + hCombinedOrientationData->Quaternions[i] = hCombinedOrientationData->Quaternion_frozen_ext; } } } } +#ifdef API_5MS + if ( hExtOrientationData != NULL && headRotQuaternions != NULL ) +#else if ( hExtOrientationData != NULL && headRotQuaternions != NULL ) +#endif { /* Combine head and external orientations */ +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { + /* Check for frozen head rotation */ +#ifndef API_5MS + if ( hExtOrientationData->enableHeadRotation[i] == 2 && numHeadRotQuaternions >= 0 ) +#else + if ( hExtOrientationData->enableHeadRotation[i] == 2 ) +#endif + { + if ( hCombinedOrientationData->isHeadRotationFrozen != 1 ) + { + hCombinedOrientationData->Quaternion_frozen_head = headRotQuaternions[i]; + hCombinedOrientationData->isHeadRotationFrozen = 1; + } + } + else + { + hCombinedOrientationData->Quaternion_frozen_head = identity; + hCombinedOrientationData->isHeadRotationFrozen = 0; + } /* Use the most recent head rotation */ +#ifndef API_5MS if ( hExtOrientationData->enableHeadRotation[i] == 1 && numHeadRotQuaternions >= 0 ) +#else + if ( hExtOrientationData->enableHeadRotation[i] == 1 ) +#endif { if ( hExtOrientationData->enableExternalOrientation[i] > 0 ) { @@ -1034,15 +1356,19 @@ static ivas_error combine_external_and_head_orientations( } } /* Use the freezed head rotation */ +#ifndef API_5MS else if ( hExtOrientationData->enableHeadRotation[i] == 2 && numHeadRotQuaternions >= 0 ) +#else + else if ( hExtOrientationData->enableHeadRotation[i] == 2 ) +#endif { if ( hExtOrientationData->enableExternalOrientation[i] > 0 ) { - QuaternionProduct( hCombinedOrientationData->Quaternions[i], hCombinedOrientationData->Quaternions_prev_headRot[i], &hCombinedOrientationData->Quaternions[i] ); + QuaternionProduct( hCombinedOrientationData->Quaternions[i], hCombinedOrientationData->Quaternion_frozen_head, &hCombinedOrientationData->Quaternions[i] ); } else { - hCombinedOrientationData->Quaternions[i] = hCombinedOrientationData->Quaternions_prev_headRot[i]; + hCombinedOrientationData->Quaternions[i] = hCombinedOrientationData->Quaternion_frozen_head; } } @@ -1054,10 +1380,18 @@ static ivas_error combine_external_and_head_orientations( } } +#ifdef API_5MS + if ( headRotQuaternions != NULL || hExtOrientationData != NULL ) +#else if ( headRotQuaternions != NULL || hExtOrientationData != NULL ) +#endif { /* Calculate the combined rotation matrix */ +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { QuatToRotMat( hCombinedOrientationData->Quaternions[i], hCombinedOrientationData->Rmat[i] ); } @@ -1066,53 +1400,53 @@ static ivas_error combine_external_and_head_orientations( /* Save the current orientations */ if ( hExtOrientationData != NULL ) { - for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#ifdef API_5MS + if ( hExtOrientationData->enableExternalOrientation[hExtOrientationData->num_subframes - 1] > 0 ) +#else + if ( hExtOrientationData->enableExternalOrientation[MAX_PARAM_SPATIAL_SUBFRAMES - 1] > 0 ) +#endif { - if ( hExtOrientationData->enableExternalOrientation[i] > 0 ) - { - hCombinedOrientationData->Quaternions_prev_extOrientation[i] = hCombinedOrientationData->Quaternions[i]; - } - else - { - hCombinedOrientationData->Quaternions_prev_extOrientation[i] = identity; - } +#ifdef API_5MS + hCombinedOrientationData->Quaternion_prev_extOrientation = hExtOrientationData->Quaternions[hExtOrientationData->num_subframes - 1]; +#else + hCombinedOrientationData->Quaternion_prev_extOrientation = hExtOrientationData->Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES - 1]; +#endif + } + else + { + hCombinedOrientationData->Quaternion_prev_extOrientation = identity; } } +#ifdef API_5MS + if ( headRotQuaternions != NULL ) +#else if ( headRotQuaternions != NULL ) +#endif { +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { - if ( hExtOrientationData != NULL ) - { - if ( hExtOrientationData->enableHeadRotation[i] > 0 && numHeadRotQuaternions >= 0 ) - { - hCombinedOrientationData->Quaternions_prev_headRot[i] = headRotQuaternions[i]; - } - else - { - hCombinedOrientationData->Quaternions_prev_headRot[i] = identity; - } - } - else - { - if ( numHeadRotQuaternions >= 0 ) - { - hCombinedOrientationData->Quaternions_prev_headRot[i] = headRotQuaternions[i]; - } - else - { - hCombinedOrientationData->Quaternions_prev_headRot[i] = identity; - } - } hCombinedOrientationData->listenerPos[i] = listenerPos[i]; } } /* Check if combined orientation is enabled */ +#ifdef API_5MS if ( headRotQuaternions != NULL && hExtOrientationData == NULL ) +#else + if ( headRotQuaternions != NULL && hExtOrientationData == NULL ) +#endif { +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { +#ifndef API_5MS if ( numHeadRotQuaternions >= 0 ) { hCombinedOrientationData->enableCombinedOrientation[i] = 1; @@ -1121,11 +1455,22 @@ static ivas_error combine_external_and_head_orientations( { hCombinedOrientationData->enableCombinedOrientation[i] = 0; } +#else + hCombinedOrientationData->enableCombinedOrientation[i] = 1; +#endif } } +#ifdef API_5MS else if ( headRotQuaternions == NULL && hExtOrientationData != NULL ) +#else + else if ( headRotQuaternions == NULL && hExtOrientationData != NULL ) +#endif { +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { if ( hExtOrientationData->enableExternalOrientation[i] > 0 ) { @@ -1137,11 +1482,23 @@ static ivas_error combine_external_and_head_orientations( } } } +#ifdef API_5MS else if ( headRotQuaternions != NULL && hExtOrientationData != NULL ) +#else + else if ( headRotQuaternions != NULL && hExtOrientationData != NULL ) +#endif { +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { +#ifndef API_5MS if ( hExtOrientationData->enableExternalOrientation[i] > 0 || ( hExtOrientationData->enableHeadRotation[i] > 0 && numHeadRotQuaternions >= 0 ) ) +#else + if ( hExtOrientationData->enableExternalOrientation[i] > 0 || ( hExtOrientationData->enableHeadRotation[i] > 0 ) ) +#endif { hCombinedOrientationData->enableCombinedOrientation[i] = 1; } @@ -1153,12 +1510,20 @@ static ivas_error combine_external_and_head_orientations( } else { +#ifndef API_5MS for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; i++ ) +#else + for ( i = 0; i < hCombinedOrientationData->num_subframes; i++ ) +#endif { hCombinedOrientationData->enableCombinedOrientation[i] = 0; } } +#ifdef SPLIT_REND_WITH_HEAD_ROT + hCombinedOrientationData->sr_pose_pred_axis = sr_pose_pred_axis; +#endif + return IVAS_ERR_OK; } @@ -1169,9 +1534,10 @@ static ivas_error combine_external_and_head_orientations( * *------------------------------------------------------------------------*/ -static void external_target_interpolation( - EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ - COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, /* i/o: combined orientation handle */ +void external_target_interpolation( + EXTERNAL_ORIENTATION_HANDLE hExtOrientationData, /* i : external orientation handle */ + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData /* i/o: combined orientation handle */ + , const int16_t i ) { /* Sanity check for number of frames */ @@ -1187,9 +1553,22 @@ static void external_target_interpolation( /* Set the received orientation as the target */ hCombinedOrientationData->Quaternions_ext_interpolation_target = hExtOrientationData->Quaternions[i]; - /* Use the most recent external orientation as the starting orientation */ - hCombinedOrientationData->Quaternions_ext_interpolation_start = hCombinedOrientationData->Quaternions_prev_extOrientation[i]; + if ( hExtOrientationData->enableExternalOrientation[i] == 1 ) + { + if ( i > 0 ) + { + hCombinedOrientationData->Quaternions_ext_interpolation_start = hExtOrientationData->Quaternions[i - 1]; + } + else + { + hCombinedOrientationData->Quaternions_ext_interpolation_start = hCombinedOrientationData->Quaternion_prev_extOrientation; + } + } + else if ( hExtOrientationData->enableExternalOrientation[i] == 2 ) + { + hCombinedOrientationData->Quaternions_ext_interpolation_start = hCombinedOrientationData->Quaternion_frozen_ext; + } /* Calculate the interpolation increment and coefficient */ hCombinedOrientationData->interpolationIncrement = 1.0f / ( (float) hExtOrientationData->numFramesToTargetOrientation[i] * (float) MAX_PARAM_SPATIAL_SUBFRAMES ); @@ -1345,7 +1724,11 @@ static float SHrot_w( 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.0f; } else diff --git a/lib_rend/ivas_sba_rendering.c b/lib_rend/ivas_sba_rendering.c index 09746779229d97b3c14b75a51d92ed8ef08fb807..468f61f0de2ea9be447c075a0885c61af8bd68fb 100644 --- a/lib_rend/ivas_sba_rendering.c +++ b/lib_rend/ivas_sba_rendering.c @@ -67,6 +67,9 @@ void ivas_sba_prototype_renderer( int16_t out_ch, in_ch; int16_t firstInCh, inChEnd, firstOutCh, outChEnd; int16_t slot_idx_start, md_idx; + int16_t num_md_sub_frames; + num_md_sub_frames = ivas_get_spar_dec_md_num_subframes( st_ivas->sba_analysis_order, st_ivas->hDecoderConfig->ivas_total_brate, + st_ivas->last_active_ivas_total_brate ); push_wmops( "ivas_sba_prototype_renderer" ); @@ -148,6 +151,7 @@ void ivas_sba_prototype_renderer( { /* we have crossed an unadapted parameter sf border, update previous mixing matrices */ int16_t md_sf = md_idx / JBM_CLDFB_SLOTS_IN_SUBFRAME; + md_sf = ( num_md_sub_frames == MAX_PARAM_SPATIAL_SUBFRAMES ) ? md_sf : 0; hSpar->i_subframe++; hSpar->i_subframe = min( hSpar->i_subframe, MAX_PARAM_SPATIAL_SUBFRAMES ); mvr2r( hSpar->hMdDec->mixer_mat_prev[1][0][0], hSpar->hMdDec->mixer_mat_prev[0][0][0], IVAS_MAX_FB_MIXER_OUT_CH * IVAS_MAX_FB_MIXER_IN_CH * IVAS_MAX_NUM_BANDS ); diff --git a/lib_rend/ivas_shoebox.c b/lib_rend/ivas_shoebox.c new file mode 100644 index 0000000000000000000000000000000000000000..7c0f3c67d55004703bcf8da493b77971b84fd17b --- /dev/null +++ b/lib_rend/ivas_shoebox.c @@ -0,0 +1,478 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#include +#include +#include "ivas_prot_rend.h" +#include "ivas_stat_rend.h" +#include "ivas_cnst.h" +#include "prot.h" +#include "wmc_auto.h" + +/*-----------------------------------------------------------------------------------------* + * Function ivas_shoebox_config_init + * + * Function transfer the parameters from the reverb config handle to the shoebox + * calibration data structure. + *-----------------------------------------------------------------------------------------*/ + +void ivas_shoebox_config_init( + shoebox_config_t *cal, + RENDER_CONFIG_HANDLE hRenderConfig /* i : Renderer configuration handle */ +) +{ + int16_t wall_idx; + + cal->room_L = hRenderConfig->roomAcoustics.dimensions.x; + cal->room_W = hRenderConfig->roomAcoustics.dimensions.y; + cal->room_H = hRenderConfig->roomAcoustics.dimensions.z; + + /* Absorption Coefficients */ + /* Convention: [Front wall, Back wall, Left wall, Right wall, Ceiling, Floor] */ + for ( wall_idx = 0; wall_idx < 6; wall_idx++ ) + { + cal->abs_coeff[wall_idx] = hRenderConfig->roomAcoustics.AbsCoeff[wall_idx]; + } + + /* Listener position (only X and Y can be pos. or neg. ) */ + cal->list_orig[0] = hRenderConfig->roomAcoustics.ListenerOrigin.x; + cal->list_orig[1] = hRenderConfig->roomAcoustics.ListenerOrigin.y; + cal->list_orig[2] = hRenderConfig->roomAcoustics.ListenerOrigin.z; + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_shoebox_init() + * + * Function initializes the shoebox operating parameters by setting limits and defaults, + * also contains the calibration structure. + *-----------------------------------------------------------------------------------------*/ + +void ivas_shoebox_init( + shoebox_obj_t *obj, + shoebox_config_t *cal ) +{ + uint16_t i; + + /* Add cal to obj struct */ + obj->cal = *cal; + /* Add defaults */ + obj->max_bands = 1; + obj->MAX_SOURCES = ER_MAX_SOURCES; + obj->REF_ORDER = ER_REF_ORDER; + + /* Positions */ + set_f( &obj->src_pos[0], 0.0f, 75U ); + set_f( &obj->src_dist[0], 0.0f, 25U ); + + for ( i = 0; i < 3; i++ ) + { + obj->list_pos[i] = cal->list_orig[i]; + } + + /* Pointer */ + obj->nSrc = 0; + + /* Flags */ + obj->isCartesian = 1; + obj->isRelative = 1; + obj->isZHeight = 1; + obj->isRadians = 1; + + /* Params */ + obj->radius = ER_RADIUS; + obj->min_wall_dist = ER_MIN_WALL_DIST; + obj->soundspeed = ER_SOUND_SPEED; + obj->air_coeff = ER_AIR_COEFF; + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function shoebox_bound() + * + * SHOEBOX_BOUND takes in CARTESIAN coordinates of either a receiver or + * source and checks if it is within the virtual room boundaries established + * by the surface parameters. If object is out of bounds, then new cartesian + * coordinates are established to collapse the object position. + *-----------------------------------------------------------------------------------------*/ + +static void shoebox_bound( + shoebox_obj_t *obj, + float *out_pos ) +{ + float out_tmp; + int32_t i; + + out_tmp = ( obj->cal.room_L / 2.0f ) - obj->min_wall_dist; + + if ( ( out_pos[0] > out_tmp ) || ( out_pos[0] < ( ( ( -obj->cal.room_L ) / 2.0f ) + obj->min_wall_dist ) ) ) + { + if ( out_pos[0] < 0.0f ) + { + i = -1; + } + else + { + i = ( out_pos[0] > 0.0f ) ? ( (int32_t) 1 ) : ( (int32_t) 0 ); + } + out_pos[0] = out_tmp * ( (float) i ); + } + + out_tmp = ( obj->cal.room_W / 2.0f ) - obj->min_wall_dist; + + if ( ( out_pos[1] > out_tmp ) || ( out_pos[1] < ( ( ( -obj->cal.room_W ) / 2.0f ) + obj->min_wall_dist ) ) ) + { + if ( out_pos[1] < 0.0f ) + { + i = -1; + } + else + { + i = ( out_pos[1] > 0.0f ) ? ( (int32_t) 1 ) : ( (int32_t) 0 ); + } + out_pos[1] = out_tmp * ( (float) i ); + } + + out_tmp = ( obj->cal.room_H / 2.0f ) - obj->min_wall_dist; + + if ( ( out_pos[2] > out_tmp ) || ( out_pos[2] < ( ( ( -obj->cal.room_H ) / 2.0f ) + obj->min_wall_dist ) ) ) + { + if ( out_pos[2] < 0.0f ) + { + i = -1; + } + else + { + i = ( out_pos[2] > 0.0f ) ? ( (int32_t) 1 ) : ( (int32_t) 0 ); + } + out_pos[2] = out_tmp * ( (float) i ); + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function shoebox_get_coord() + * + * Transform relative spherical coordinate to 3D cartesian point + *-----------------------------------------------------------------------------------------*/ + +static void shoebox_get_coord( + shoebox_obj_t *obj, + float *fcnOutput_data, + const float src_pos_data[], + float *tmp_pos, + float out_tmp, + int32_t coord, + int32_t loop_ub, + int32_t k, + uint16_t isRelative ) +{ + float tmp_data[75]; + float rcoselev; + int32_t tmp_size_idx_1; + int32_t n; + + tmp_size_idx_1 = 3; + if ( obj->isCartesian == 0 ) + { + /* Convert Spherical to Cartesian */ + if ( obj->isRadians == 0 ) + { + for ( n = 0; n < loop_ub; n++ ) + { + fcnOutput_data[n] = deg2rad( src_pos_data[k + n] ); + } + } + tmp_data[2] = fcnOutput_data[2] * sinf( fcnOutput_data[1] ); + rcoselev = fcnOutput_data[2] * cosf( fcnOutput_data[1] ); + tmp_data[0] = rcoselev * cosf( fcnOutput_data[0] ); + tmp_data[1] = rcoselev * sinf( fcnOutput_data[0] ); + } + else + { + /* CARTESIAN CASE */ + tmp_size_idx_1 = loop_ub; + for ( n = 0; n < loop_ub; n++ ) + { + tmp_data[n] = src_pos_data[k + n]; + } + if ( obj->isZHeight != 0.0f ) + { + /* FIX Z COORDINATE */ + tmp_data[2] = src_pos_data[k + 2] - ( obj->cal.room_H / 2.0f ); + } + } + + for ( k = 0; k < tmp_size_idx_1; k++ ) + { + obj->src_pos[( coord + k ) - 1] = tmp_data[k]; + } + + /* CENTER TO LISTENER */ + if ( ( out_tmp + 1.0f ) > ( ( out_tmp + 1.0f ) + 2.0f ) ) + { + k = 1; + } + else + { + k = (int32_t) ( (float) ( out_tmp + 1.0f ) ); + } + + tmp_pos[0] = obj->src_pos[k - 1]; + tmp_pos[1] = obj->src_pos[k]; + tmp_pos[2] = obj->src_pos[k + 1]; + + if ( isRelative != 0.0f ) + { + tmp_pos[0] += obj->list_pos[0]; + tmp_pos[1] += obj->list_pos[1]; + tmp_pos[2] += obj->list_pos[2]; + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function shoebox_get_euclidian_distance_internal() + * + * Get 3D source distance from receiver + *-----------------------------------------------------------------------------------------*/ + +static float shoebox_get_euclidian_distance_internal( + shoebox_obj_t *obj, + float *tmp_pos, + float *scale ) +{ + float absxk, out_tmp, t; + + absxk = fabsf( obj->list_pos[0] - tmp_pos[0] ); + + if ( absxk > ER_EUCLIDEAN_SCALE ) + { + out_tmp = 1.0f; + *scale = absxk; + } + else + { + t = absxk / ER_EUCLIDEAN_SCALE; + out_tmp = t * t; + } + + absxk = fabsf( obj->list_pos[1] - tmp_pos[1] ); + + if ( absxk > *scale ) + { + t = *scale / absxk; + out_tmp = ( ( out_tmp * t ) * t ) + 1.0f; + *scale = absxk; + } + else + { + t = absxk / *scale; + out_tmp += t * t; + } + + absxk = fabsf( obj->list_pos[2] - tmp_pos[2] ); + + if ( absxk > *scale ) + { + t = *scale / absxk; + out_tmp = ( ( out_tmp * t ) * t ) + 1.0f; + *scale = absxk; + } + else + { + t = absxk / *scale; + out_tmp += t * t; + } + + return out_tmp; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_shoebox_set_scene() + * + * Initial scene setup returning computed reflection (arrival times, DOA and gain). + *-----------------------------------------------------------------------------------------*/ + +void ivas_shoebox_set_scene( + shoebox_obj_t *obj, + shoebox_output_t *ER_PARAMS, + const float list_pos[3], + const float src_pos_data[], + const uint16_t isCartesian, + const uint16_t isRelative ) +{ + float tmp_pos[3]; + float out_tmp; + int32_t i, j, k, n; + int32_t loop_ub; + /* ------------- SET FLAGS ------------- */ + obj->isCartesian = isCartesian; + obj->isRelative = isRelative; + /* ------------- CHECK DIMENSIONS ------------- */ + if ( ER_PARAMS->n_sources > obj->MAX_SOURCES ) + { + obj->nSrc = obj->MAX_SOURCES; + } + else + { + obj->nSrc = ER_PARAMS->n_sources; + } + /* ---------- RESET DATA HOLDERS ---------- */ + set_f( &obj->src_pos[0], 0.0f, 75U ); + obj->list_pos[0] = list_pos[0]; + obj->list_pos[1] = list_pos[1]; + obj->list_pos[2] = list_pos[2]; + /* ---------- ADJUST LISTENER ------------- */ + if ( obj->isZHeight != 0 ) + { + obj->list_pos[2] = list_pos[2] - ( obj->cal.room_H / 2.0f ); + } + tmp_pos[1] = obj->list_pos[1]; + tmp_pos[2] = obj->list_pos[2]; + + shoebox_bound( obj, obj->list_pos ); + + /* ---------- SOURCE LOOP ------------- */ + i = (int32_t) obj->nSrc; + for ( j = 0; j < i; j++ ) + { + float fcnOutput_data[75]; + float rcoselev; + float scale; + int32_t coord; + /* idx = single(i); */ + out_tmp = 3.0f * ( ( ( (float) j ) + 1.0f ) - 1.0f ); + /* GET COORDINATE IN CARTESIAN ABSOLUTE FORMAT */ + if ( ( out_tmp + 1.0f ) > ( ( out_tmp + 1.0f ) + 2.0f ) ) + { + k = 0; + n = 0; + coord = 1; + } + else + { + k = ( (int32_t) ( (float) ( out_tmp + 1.0f ) ) ) - 1; + n = (int32_t) ( (float) ( ( out_tmp + 1.0f ) + 2.0f ) ); + coord = (int32_t) ( (float) ( out_tmp + 1.0f ) ); + } + loop_ub = n - k; + for ( n = 0; n < loop_ub; n++ ) + { + fcnOutput_data[n] = src_pos_data[k + n]; + } + + shoebox_get_coord( obj, fcnOutput_data, src_pos_data, tmp_pos, out_tmp, coord, loop_ub, k, isRelative ); + + shoebox_bound( obj, tmp_pos ); + + scale = ER_EUCLIDEAN_SCALE; + + out_tmp = shoebox_get_euclidian_distance_internal( obj, tmp_pos, &scale ); + + obj->src_dist[( (int32_t) ( (float) ( ( (float) j ) + 1.0f ) ) ) - 1] = scale * sqrtf( out_tmp ); + + /* COMPUTE PATTERNS */ + + /* SHOEBOX_COMPUTE: fills an input structure (4 array fields of length NxR ) with the */ + /* Early reflection metadata (time of arrival, gain, az, el). */ + /* */ + /* Input: */ + /* 1. obj : Module data holder */ + /* 2. ER_struct : Early reflection structure */ + /* 3. src_num : Index of source to compute patterns for */ + /* ------ */ + out_tmp = obj->src_dist[( (int32_t) ( (float) ( ( (float) j ) + 1.0f ) ) ) - 1]; + for ( loop_ub = 0; loop_ub < 6; loop_ub++ ) + { + float im_pos[3]; + float path_dist; + /* Retrieve coordinate and surface sign */ + coord = ( (int32_t) ceilf( ( ( (float) loop_ub ) + 1.0f ) / 2.0f ) ) - 1; + rcoselev = ( ( (float) loop_ub ) + 1.0f ) + ( ER_PARAMS->n_ref * ( ( ( (float) j ) + 1.0f ) - 1.0f ) ); + /* Initialize image position coordinates */ + im_pos[0] = tmp_pos[0]; + im_pos[1] = tmp_pos[1]; + im_pos[2] = tmp_pos[2]; + /* Calculate image projection coordinate based on current surface axis */ + if ( ( loop_ub + 1 ) < 3 ) + { + scale = obj->cal.room_L; + } + else if ( ( loop_ub + 1 ) < 5 ) + { + scale = obj->cal.room_W; + } + else + { + scale = obj->cal.room_H; + } + im_pos[coord] = + tmp_pos[coord] + + ( 2.0f * ( ( ( ( -( 1.0f - ( fmodf( ( (float) loop_ub ) + 1.0f, 2.0f ) * 2.0f ) ) ) * scale ) / 2.0f ) - tmp_pos[coord] ) ); + /* 0. Get euclidean distance from IMAGE SOURCE [N,W] to LIST */ + scale = ER_EUCLIDEAN_SCALE; + path_dist = shoebox_get_euclidian_distance_internal( obj, im_pos, &scale ); + + path_dist = scale * sqrtf( path_dist ); + /* 1. Compute time-of arrival (TOA) */ + ER_PARAMS->times.data[( (int32_t) rcoselev ) - 1] = path_dist / obj->soundspeed; + /* 2./3. DOA */ + ER_PARAMS->az_angle.data[( (int32_t) rcoselev ) - 1] = + rad2deg( + atan2f( im_pos[1] - obj->list_pos[1], im_pos[0] - obj->list_pos[0] ) ); + ER_PARAMS->el_angle.data[( (int32_t) rcoselev ) - 1] = + rad2deg( + asinf( ( im_pos[2] - obj->list_pos[2] ) / path_dist ) ); + /* 4. Compute gain taking into account air and surface absorption */ + /* and propagation loss */ + if ( path_dist < out_tmp ) + { + path_dist = out_tmp; + } + ER_PARAMS->gains.data[( (int32_t) rcoselev ) - 1] = + ( ( 1.0f - obj->cal.abs_coeff[loop_ub] ) * ( out_tmp / path_dist ) ) - ( path_dist * obj->air_coeff ); + } + } + + return; +} diff --git a/lib_rend/ivas_splitRend_lcld_dec.c b/lib_rend/ivas_splitRend_lcld_dec.c new file mode 100644 index 0000000000000000000000000000000000000000..9868a8d0b54c4aeaa00c502d9e04ab31ff69a1bf --- /dev/null +++ b/lib_rend/ivas_splitRend_lcld_dec.c @@ -0,0 +1,239 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_prot_rend.h" +#include "ivas_prot.h" +#include "prot.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinLCLDDecOpen() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_splitBinLCLDDecOpen( + BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec, + const int32_t iSampleRate, + const int16_t iChannels ) +{ + int16_t n; + BIN_HR_SPLIT_LCLD_DEC_HANDLE splitBinLCLDDec; + ivas_error error; + + if ( ( splitBinLCLDDec = (BIN_HR_SPLIT_LCLD_DEC_HANDLE) malloc( sizeof( BIN_HR_SPLIT_LCLD_DEC ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + + splitBinLCLDDec->pLcld_dec = NULL; /* place holder for CLDFB decoder handle */ + + splitBinLCLDDec->iChannels = iChannels; + if ( ( error = CreateLCLDDecoder( &splitBinLCLDDec->psLCLDDecoder, iSampleRate, iChannels ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( splitBinLCLDDec->pppfDecLCLDReal = (float ***) malloc( iChannels * sizeof( float ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + if ( ( splitBinLCLDDec->pppfDecLCLDImag = (float ***) malloc( iChannels * sizeof( float ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + + for ( n = 0; n < splitBinLCLDDec->iChannels; n++ ) + { + if ( ( splitBinLCLDDec->pppfDecLCLDReal[n] = (float **) malloc( CLDFB_NO_COL_MAX * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + if ( ( splitBinLCLDDec->pppfDecLCLDImag[n] = (float **) malloc( CLDFB_NO_COL_MAX * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD decoder Module \n" ) ); + } + } + +#ifdef CLDFB_DEBUG + splitBinLCLDDec->numFrame = 0; + char cldfbFilename[50] = "cldfb_out.bin"; + if ( ( splitBinLCLDDec->cldfbOut = fopen( cldfbFilename, "wb" ) ) == NULL ) + { + fprintf( stderr, "Error: CLDFB bitstream file %s could not be opened\n\n", cldfbFilename ); + exit( -1 ); + } + int16_t num_bands = CLDFB_NO_CHANNELS_MAX; + fwrite( &iChannels, sizeof( int16_t ), 1, splitBinLCLDDec->cldfbOut ); + fwrite( &num_bands, sizeof( int16_t ), 1, splitBinLCLDDec->cldfbOut ); +#endif + + if ( ( error = ivas_splitBinRendPLCOpen( &splitBinLCLDDec->hSplitRendPLC ) ) != IVAS_ERR_OK ) + { + return error; + } + + *hSplitBinLCLDDec = splitBinLCLDDec; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinLCLDDecClose() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinLCLDDecClose( + BIN_HR_SPLIT_LCLD_DEC_HANDLE *hSplitBinLCLDDec ) +{ + int16_t n; + + if ( ( *hSplitBinLCLDDec ) != NULL ) + { + if ( ( *hSplitBinLCLDDec )->psLCLDDecoder != NULL ) + { + DeleteLCLDDecoder( ( *hSplitBinLCLDDec )->psLCLDDecoder ); + } + + for ( n = 0; n < ( *hSplitBinLCLDDec )->iChannels; n++ ) + { + free( ( *hSplitBinLCLDDec )->pppfDecLCLDReal[n] ); + free( ( *hSplitBinLCLDDec )->pppfDecLCLDImag[n] ); + } + free( ( *hSplitBinLCLDDec )->pppfDecLCLDReal ); + free( ( *hSplitBinLCLDDec )->pppfDecLCLDImag ); + +#ifdef CLDFB_DEBUG + if ( ( *hSplitBinLCLDDec )->cldfbOut != NULL ) + { + fclose( ( *hSplitBinLCLDDec )->cldfbOut ); + } +#endif + ivas_splitBinRendPLCClose( &( *hSplitBinLCLDDec )->hSplitRendPLC ); + + free( *hSplitBinLCLDDec ); + *hSplitBinLCLDDec = NULL; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinLCLDDecProcess() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinLCLDDecProcess( + BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec, + ivas_split_rend_bits_t *pBits, + float Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t bfi ) +{ + int16_t k, n; + + push_wmops( "ivas_splitBinLCLDDecProcess" ); + + assert( hSplitBinLCLDDec != NULL ); + assert( Cldfb_Out_Real != NULL ); + assert( Cldfb_Out_Imag != NULL ); + assert( pBits != NULL ); + +#ifdef CLDFB_DEBUG + printf( "Bytes read = %d\n", iBytesWritten ); +#endif + if ( !bfi ) + { + /* Initialized with zeros....... */ + for ( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) + { + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + hSplitBinLCLDDec->pppfDecLCLDReal[n][k] = Cldfb_Out_Real[n][k]; + hSplitBinLCLDDec->pppfDecLCLDImag[n][k] = Cldfb_Out_Imag[n][k]; + set_f( hSplitBinLCLDDec->pppfDecLCLDReal[n][k], 0, CLDFB_NO_CHANNELS_MAX ); + set_f( hSplitBinLCLDDec->pppfDecLCLDImag[n][k], 0, CLDFB_NO_CHANNELS_MAX ); + } + } + + DecodeLCLDFrame( hSplitBinLCLDDec->psLCLDDecoder, pBits, hSplitBinLCLDDec->pppfDecLCLDReal, hSplitBinLCLDDec->pppfDecLCLDImag ); + +#ifdef CLDFB_DEBUG + printf( "Frame Decoded = %d\n", ++hSplitBinLCLDDec->numFrame ); + int16_t writeByte = 0; + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + for ( int16_t b = 0; b < CLDFB_NO_CHANNELS_MAX; b++ ) + { + for ( n = 0; n < hSplitBinLCLDDec->iChannels; n++ ) + { + writeByte = fwrite( &hSplitBinLCLDDec->pppfDecLCLDReal[n][k][b], sizeof( float ), 1, hSplitBinLCLDDec->cldfbOut ); + if ( writeByte != 1 ) + exit( -1 ); + writeByte = fwrite( &hSplitBinLCLDDec->pppfDecLCLDImag[n][k][b], sizeof( float ), 1, hSplitBinLCLDDec->cldfbOut ); + if ( writeByte != 1 ) + exit( -1 ); + } + } + } +#endif + if ( hSplitBinLCLDDec->hSplitRendPLC->prev_bfi != 0 ) + { + /* cross-fade recovered frame into good frame */ + ivas_splitBinRendPLC_xf( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real, Cldfb_Out_Imag, (int16_t) hSplitBinLCLDDec->iChannels ); + } + } + else + { + /* do PLC for lost split renderer frame */ + ivas_splitBinRendPLC( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real, Cldfb_Out_Imag, (int16_t) hSplitBinLCLDDec->iChannels ); + } + + /* save PLC state */ + ivas_splitBinRendPLCsaveState( hSplitBinLCLDDec->hSplitRendPLC, Cldfb_Out_Real, Cldfb_Out_Imag, (int16_t) hSplitBinLCLDDec->iChannels ); + + pop_wmops(); + + return; +} +#endif diff --git a/lib_rend/ivas_splitRend_lcld_enc.c b/lib_rend/ivas_splitRend_lcld_enc.c new file mode 100644 index 0000000000000000000000000000000000000000..c243a2af9cd56a9bcabc1ee123261d8348bf77d3 --- /dev/null +++ b/lib_rend/ivas_splitRend_lcld_enc.c @@ -0,0 +1,239 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "ivas_prot_rend.h" +#include "ivas_prot.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinLCLDEncOpen() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_splitBinLCLDEncOpen( + BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc, + const int32_t iSampleRate, + const int16_t iChannels, + const int32_t iDataRate ) +{ + BIN_HR_SPLIT_LCLD_ENC_HANDLE splitBinLCLDEnc; + ivas_error error; + + if ( ( splitBinLCLDEnc = (BIN_HR_SPLIT_LCLD_ENC_HANDLE) malloc( sizeof( BIN_HR_SPLIT_LCLD_ENC ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + splitBinLCLDEnc->pLcld_enc = NULL; // place holder for CLDFB encoder handle + + splitBinLCLDEnc->iChannels = iChannels; + if ( ( error = CreateLCLDEncoder( &( splitBinLCLDEnc->psLCLDEncoder ), iSampleRate, iChannels, iDataRate, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( splitBinLCLDEnc->pppfLCLDReal = (float ***) malloc( iChannels * sizeof( float ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( splitBinLCLDEnc->pppfLCLDImag = (float ***) malloc( iChannels * sizeof( float ** ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + + for ( int16_t n = 0; n < splitBinLCLDEnc->iChannels; n++ ) + { + if ( ( splitBinLCLDEnc->pppfLCLDReal[n] = (float **) malloc( CLDFB_NO_COL_MAX * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + if ( ( splitBinLCLDEnc->pppfLCLDImag[n] = (float **) malloc( CLDFB_NO_COL_MAX * sizeof( float * ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for LCLD encoder Module \n" ) ); + } + } + +#ifdef CLDFB_DEBUG + splitBinLCLDEnc->numFrame = 0; + char cldfbFilename[50] = "cldfb_in_ref.qmf"; + if ( ( splitBinLCLDEnc->cldfbIn = fopen( cldfbFilename, "rb" ) ) == NULL ) + { + fprintf( stderr, "Error: CLDFB bitstream file %s could not be opened\n\n", cldfbFilename ); + exit( -1 ); + } + int16_t chan, band; + fread( &chan, sizeof( int16_t ), 1, splitBinLCLDEnc->cldfbIn ); + fread( &band, sizeof( int16_t ), 1, splitBinLCLDEnc->cldfbIn ); +#endif + + *hSplitBinLCLDEnc = splitBinLCLDEnc; + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinLCLDEncClose() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinLCLDEncClose( + BIN_HR_SPLIT_LCLD_ENC_HANDLE *hSplitBinLCLDEnc ) +{ + if ( ( *hSplitBinLCLDEnc ) != NULL ) + { + DeleteLCLDEncoder( ( *hSplitBinLCLDEnc )->psLCLDEncoder ); + + for ( int16_t n = 0; n < ( *hSplitBinLCLDEnc )->iChannels; n++ ) + { + free( ( *hSplitBinLCLDEnc )->pppfLCLDReal[n] ); + free( ( *hSplitBinLCLDEnc )->pppfLCLDImag[n] ); + } + free( ( *hSplitBinLCLDEnc )->pppfLCLDReal ); + free( ( *hSplitBinLCLDEnc )->pppfLCLDImag ); + +#ifdef CLDFB_DEBUG + if ( ( *hSplitBinLCLDEnc )->cldfbIn != NULL ) + { + fclose( ( *hSplitBinLCLDEnc )->cldfbIn ); + } +#endif + + free( *hSplitBinLCLDEnc ); + *hSplitBinLCLDEnc = NULL; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinLCLDEncProcess() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinLCLDEncProcess( + BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc, + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int32_t available_bits, + ivas_split_rend_bits_t *pBits ) +{ + int32_t iBitsWritten; + + push_wmops( "ivas_splitBinLCLDEncProcess" ); + + assert( hSplitBinLCLDEnc != NULL ); + assert( Cldfb_In_Real != NULL ); + assert( Cldfb_In_Imag != NULL ); + assert( pBits != NULL ); + + /* A conversion is needed for the 3d pointer interface here ........ */ + for ( int32_t n = 0; n < hSplitBinLCLDEnc->iChannels; n++ ) + { + for ( int32_t k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + hSplitBinLCLDEnc->pppfLCLDReal[n][k] = Cldfb_In_Real[n][k]; + hSplitBinLCLDEnc->pppfLCLDImag[n][k] = Cldfb_In_Imag[n][k]; + } + } + +#ifdef CLDFB_DEBUG + int16_t readByte = 0; + for ( int16_t k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + for ( int16_t b = 0; b < CLDFB_NO_CHANNELS_MAX; b++ ) + { + for ( int16_t n = 0; n < hSplitBinLCLDEnc->iChannels; n++ ) + { +#if 0 + readByte = fread(&hSplitBinLCLDEnc->pppfLCLDReal[n][k][b], sizeof(float), 1, hSplitBinLCLDEnc->cldfbIn); + if ( readByte != 1 ) + break; + readByte = fread(&hSplitBinLCLDEnc->pppfLCLDImag[n][k][b], sizeof(float), 1, hSplitBinLCLDEnc->cldfbIn); +#else + readByte = fread( &Cldfb_In_Real[n][k][b], sizeof( float ), 1, hSplitBinLCLDEnc->cldfbIn ); + if ( readByte != 1 ) + break; + readByte = fread( &Cldfb_In_Imag[n][k][b], sizeof( float ), 1, hSplitBinLCLDEnc->cldfbIn ); +#endif + } + } + } + + if ( readByte == 1 ) + { + printf( "Frame Read = %d\n", ++hSplitBinLCLDEnc->numFrame ); + } + else + { + printf( "Writing zeroes...\n" ); + for ( int16_T k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + for ( int16_t b = 0; b < CLDFB_NO_CHANNELS_MAX; b++ ) + { + for ( int16_t n = 0; n < hSplitBinLCLDEnc->iChannels; n++ ) + { + hSplitBinLCLDEnc->pppfLCLDReal[n][k][b] = 0.f; + hSplitBinLCLDEnc->pppfLCLDImag[n][k][b] = 0.f; + } + } + } + } +#endif + + EncodeLCLDFrame( hSplitBinLCLDEnc->psLCLDEncoder, hSplitBinLCLDEnc->pppfLCLDReal, hSplitBinLCLDEnc->pppfLCLDImag, &iBitsWritten, available_bits, pBits ); + +#ifdef DEBUGGING + if ( iBitsWritten > available_bits ) + assert( iBitsWritten <= available_bits ); +#endif + +#ifdef CLDFB_DEBUG + printf( "Bits written = %d\n", iBitsWritten ); +#endif + + pop_wmops(); + + return; +} +#endif diff --git a/lib_rend/ivas_splitRendererPLC.c b/lib_rend/ivas_splitRendererPLC.c new file mode 100644 index 0000000000000000000000000000000000000000..dcdd515b6f790aca719bf229f1ce1d28cd8d6469 --- /dev/null +++ b/lib_rend/ivas_splitRendererPLC.c @@ -0,0 +1,550 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_cnst.h" +#include "ivas_prot_rend.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Local constants + *------------------------------------------------------------------------*/ + +#define DO_PERTURB 1 +#define PH_PERT_ONLY 1 +#define START_VAL_AVG_LEN 2 +#define SR_PLC_FADE_START 10 /* start fading at this number of bad frames in row */ +#define SR_PLC_MUTE 30 /* Total mute at this number of bad frames in row */ +#define SR_PLC_FADE_DEGREE -3 /* fading degree per frame in dB */ +#define SRHO_THRESH ( 2.f / 3.f * 0.1f ) +#define STH_THRESH ( 2.f / 3.f * PI2 / 12 ) + + +/*------------------------------------------------------------------------- + * Function adaptive_polar_ext_plc() + * + * + *------------------------------------------------------------------------*/ + +static void adaptive_polar_ext_plc( + const float *prev_real, + const float *prev_imag, + float *rec_real, + float *rec_imag +#if CLDFB_PLC_XF > 0 + , + float xf_alp[CLDFB_PLC_XF], + float xf_bet[CLDFB_PLC_XF] +#endif +) +{ + float uth[CLDFB_NO_COL_MAX], uthu[CLDFB_NO_COL_MAX], urh[CLDFB_NO_COL_MAX]; + float ph_adj, ph_diff, ph_adj_t, quot, drho, srho, diff, dth, sth, fac_real, fac_imag; + float Ruu_real[2], Ruu_imag[2]; + float start_real, start_imag, abs_fac, abs_fac_powj, comp_fac, fac_powj_real, fac_powj_imag, temp, abs2inv; + float fac_ph_real, fac_ph_imag, rat_real, rat_imag, abs_temp; + int32_t k, j; + + /* reset of accumulators */ + ph_adj = 0.0f; + drho = 0.0f; + srho = 0.0f; + dth = 0.0f; + sth = 0.0f; + + /* calculate per-sample phase and magnitude evolution in preceding frame */ + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + urh[k] = sqrtf( prev_imag[k] * prev_imag[k] + prev_real[k] * prev_real[k] ); + if ( urh[k] < EPSILON ) + { + /* zero encountered */ + break; + } + uth[k] = atan2f( prev_imag[k], prev_real[k] ); + + /* phase unwrap */ + if ( k == 0 ) + { + uthu[0] = uth[0]; + } + else + { + /* phase unwrap */ + ph_diff = uth[k] - uth[k - 1]; + uthu[k] = uth[k]; + if ( fabsf( ph_diff ) >= PI2 / 2 ) + { + ph_adj_t = ph_diff / PI2; + if ( fabsf( ph_adj_t - truncf( ph_adj_t ) ) == 0.5f ) + { + ph_adj_t = truncf( ph_adj_t ); + } + ph_adj = -PI2 * roundf( ph_adj_t ) + ph_adj; + } + uthu[k] += ph_adj; + /* unwrapped phase in uthu */ + + /* mean and stdev of per-sample magnitude ratios */ + quot = urh[k] / urh[k - 1]; + drho += quot; + srho += SQR( quot ); + /* mean and stdev of per-sample phase differences */ + diff = uthu[k] - uthu[k - 1]; /* the mean value calculation could be optimized */ + dth += diff; + sth += SQR( diff ); + } + } + + if ( k == CLDFB_NO_COL_MAX ) + { + /* mean and stdev of per-sample magnitude ratios */ + drho *= 1.0f / ( CLDFB_NO_COL_MAX - 1 ); + temp = srho - ( CLDFB_NO_COL_MAX - 1 ) * SQR( drho ); + if ( temp > 0 ) + { + srho = sqrtf( temp * ( 1.0f / ( CLDFB_NO_COL_MAX - 2 ) ) ); + } + else + { + srho = 0.0f; + } + + /* mean and stdev of per-sample phase differences */ + dth *= 1.0f / ( CLDFB_NO_COL_MAX - 1 ); + temp = sth - ( CLDFB_NO_COL_MAX - 1 ) * SQR( dth ); + if ( temp > 0 ) + { + sth = sqrtf( temp * ( 1.0f / ( CLDFB_NO_COL_MAX - 2 ) ) ); + } + else + { + sth = 0.0f; + } + + /* do phase extension only if the std deviations are small */ + if ( ( srho < SRHO_THRESH ) || ( sth < STH_THRESH ) ) + { + /* calculate complex evolution factor */ + fac_ph_real = cosf( dth ); + fac_ph_imag = sinf( dth ); + fac_real = min( 1, drho ) * fac_ph_real; + fac_imag = min( 1, drho ) * fac_ph_imag; + +#if START_VAL_AVG_LEN > 1 + /* Calculate start value for evolution from last samples of previous frame */ + fac_powj_real = fac_real; + fac_powj_imag = fac_imag; + start_real = prev_real[CLDFB_NO_COL_MAX - 1]; + start_imag = prev_imag[CLDFB_NO_COL_MAX - 1]; + for ( j = 1; j < START_VAL_AVG_LEN; j++ ) + { + start_real += fac_powj_real * prev_real[CLDFB_NO_COL_MAX - j - 1] - fac_powj_imag * prev_imag[CLDFB_NO_COL_MAX - j - 1]; + start_imag += fac_powj_imag * prev_real[CLDFB_NO_COL_MAX - j - 1] + fac_powj_real * prev_imag[CLDFB_NO_COL_MAX - j - 1]; + temp = fac_powj_real * fac_real - fac_powj_imag * fac_imag; + fac_powj_imag = fac_powj_imag * fac_real + fac_powj_real * fac_imag; + fac_powj_real = temp; + } + start_real *= 1.0f / START_VAL_AVG_LEN; + start_imag *= 1.0f / START_VAL_AVG_LEN; +#else + /* take last sample of previous frame as start value */ + start_real = prev_real[CLDFB_NO_COL_MAX - 1]; + start_imag = prev_imag[CLDFB_NO_COL_MAX - 1]; +#endif + +#if DO_PERTURB != 0 + /* make evolution less static: apply per samples differences as in preceding frame */ + rat_real = ( prev_real[1] * prev_real[0] + prev_imag[1] * prev_imag[0] ); + rat_imag = ( -prev_real[1] * prev_imag[0] + prev_imag[1] * prev_real[0] ); +#if PH_PERT_ONLY != 0 + /* only phase perturbation */ + abs_temp = sqrtf( SQR( rat_real ) + SQR( rat_imag ) ); + abs2inv = min( 1, drho ) / max( EPSILON, abs_temp ); + rat_real *= abs2inv; + rat_imag *= abs2inv; +#else + /* phase and magnitude perturbation */ + abs2inv = 1 / ( max( 1, drho ) * ( SQR( prev_real[0] ) + SQR( prev_imag[0] ) ) ); + rat_real *= abs2inv; + rat_imag *= abs2inv; +#endif + + /* apply complex evolution for first substitution sample */ + rec_real[0] = rat_real * start_real - rat_imag * start_imag; + rec_imag[0] = rat_imag * start_real + rat_real * start_imag; + for ( j = 2; j < CLDFB_NO_COL_MAX; j++ ) + { + /* make evolution less static: apply per samples differences as in preceding frame */ + rat_real = ( prev_real[j] * prev_real[j - 1] + prev_imag[j] * prev_imag[j - 1] ); + rat_imag = ( -prev_real[j] * prev_imag[j - 1] + prev_imag[j] * prev_real[j - 1] ); +#if PH_PERT_ONLY != 0 + /* only phase perturbation */ + abs_temp = sqrtf( SQR( rat_real ) + SQR( rat_imag ) ); + abs2inv = min( 1, drho ) / max( EPSILON, abs_temp ); +#else + /* phase and magnitude perturbation */ + abs2inv = 1 / ( max( 1, drho ) * ( SQR( prev_real[j - 1] ) + SQR( prev_imag[j - 1] ) ) ); +#endif + rat_real *= abs2inv; + rat_imag *= abs2inv; + /* apply complex evolution for further substitution samples */ + rec_real[j - 1] = rat_real * rec_real[j - 2] - rat_imag * rec_imag[j - 2]; + rec_imag[j - 1] = rat_imag * rec_real[j - 2] + rat_real * rec_imag[j - 2]; + } + + /* do the same for samples of crossfade region */ + for ( j = 1; j < CLDFB_PLC_XF + 2; j++ ) + { + rat_real = ( prev_real[j] * prev_real[j - 1] + prev_imag[j] * prev_imag[j - 1] ); + rat_imag = ( -prev_real[j] * prev_imag[j - 1] + prev_imag[j] * prev_real[j - 1] ); +#if PH_PERT_ONLY != 0 + abs_temp = sqrtf( SQR( rat_real ) + SQR( rat_imag ) ); + abs2inv = min( 1, drho ) / max( EPSILON, abs_temp ); +#else + abs2inv = 1 / ( max( 1, drho ) * ( SQR( prev_real[j - 1] ) + SQR( prev_imag[j - 1] ) ) ); +#endif + rat_real *= abs2inv; + rat_imag *= abs2inv; + rec_real[j + CLDFB_NO_COL_MAX - 2] = rat_real * rec_real[j + CLDFB_NO_COL_MAX - 3] - rat_imag * rec_imag[j + CLDFB_NO_COL_MAX - 3]; + rec_imag[j + CLDFB_NO_COL_MAX - 2] = rat_imag * rec_real[j + CLDFB_NO_COL_MAX - 3] + rat_real * rec_imag[j + CLDFB_NO_COL_MAX - 3]; + } +#else + rec_real[0] = fac_real * start_real - fac_imag * start_imag; + rec_imag[0] = fac_imag * start_real + fac_real * start_imag; + for ( j = 1; j < CLDFB_NO_COL_MAX + CLDFB_PLC_XF; j++ ) + { + rec_real[j] = fac_real * rec_real[j - 1] - fac_imag * rec_imag[j - 1]; + rec_imag[j] = fac_imag * rec_real[j - 1] + fac_real * rec_imag[j - 1]; + } +#endif + +#if CLDFB_PLC_XF > 0 + /* apply crossfade */ + for ( j = 0; j < CLDFB_PLC_XF; j++ ) + { + rec_real[CLDFB_NO_COL_MAX + j] *= xf_alp[j]; + rec_imag[CLDFB_NO_COL_MAX + j] *= xf_alp[j]; + xf_bet[j] = 1 - xf_alp[j]; + } +#endif + } + else + { + /* do complex lpc combined with frame repetition */ + Ruu_real[0] = SQR( prev_real[0] ) + SQR( prev_imag[0] ); + Ruu_real[1] = 0; + Ruu_imag[1] = 0; + for ( j = 1; j < CLDFB_NO_COL_MAX; j++ ) + { + Ruu_real[0] += SQR( prev_real[j] ) + SQR( prev_imag[j] ); + Ruu_real[1] += prev_real[j] * prev_real[j - 1] + prev_imag[j] * prev_imag[j - 1]; + Ruu_imag[1] += prev_imag[j] * prev_real[j - 1] - prev_real[j] * prev_imag[j - 1]; + } + if ( Ruu_real[0] > EPSILON ) + { + /* prediction coefficient */ + fac_real = Ruu_real[1] / Ruu_real[0]; + fac_imag = Ruu_imag[1] / Ruu_real[0]; + } + else + { + fac_real = 0; + fac_imag = 0; + } + + /* apply prediction using last sample of preceding frame as start value and combine with previous frame samples */ + fac_powj_real = fac_real; + fac_powj_imag = fac_imag; + abs_fac = sqrtf( SQR( fac_real ) + SQR( fac_imag ) ); + abs_fac_powj = abs_fac; + for ( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + comp_fac = 1 - abs_fac_powj; + rec_real[j] = prev_real[CLDFB_NO_COL_MAX - 1] * fac_powj_real - prev_imag[CLDFB_NO_COL_MAX - 1] * fac_powj_imag + + prev_real[j] * comp_fac; + rec_imag[j] = prev_real[CLDFB_NO_COL_MAX - 1] * fac_powj_imag + prev_imag[CLDFB_NO_COL_MAX - 1] * fac_powj_real + + prev_imag[j] * comp_fac; + abs_fac_powj = abs_fac_powj * abs_fac; + temp = fac_powj_real * fac_real - fac_powj_imag * fac_imag; + fac_powj_imag = fac_powj_real * fac_imag + fac_powj_imag * fac_real; + fac_powj_real = temp; + } + + /* prepare XF to next frame using prediction */ + fac_powj_real = fac_real; + fac_powj_imag = fac_imag; + abs_fac_powj = abs_fac; +#if CLDFB_PLC_XF > 0 + for ( j = 0; j < CLDFB_PLC_XF; j++ ) + { + xf_bet[j] = 1 - abs_fac_powj; + rec_real[j + CLDFB_NO_COL_MAX] = rec_real[CLDFB_NO_COL_MAX - 1] * fac_powj_real - rec_imag[CLDFB_NO_COL_MAX - 1] * fac_powj_imag; + rec_imag[j + CLDFB_NO_COL_MAX] = rec_real[CLDFB_NO_COL_MAX - 1] * fac_powj_imag + rec_imag[CLDFB_NO_COL_MAX - 1] * fac_powj_real; + abs_fac_powj = abs_fac_powj * abs_fac; + temp = fac_powj_real * fac_real - fac_powj_imag * fac_imag; + fac_powj_imag = fac_powj_real * fac_imag + fac_powj_imag * fac_real; + fac_powj_real = temp; + } +#endif + } + } + else + { + for ( j = 0; j < CLDFB_NO_COL_MAX; j++ ) + { + rec_real[j] = prev_real[j]; + rec_imag[j] = prev_imag[j]; + } +#if CLDFB_PLC_XF > 0 + for ( j = 0; j < CLDFB_PLC_XF; j++ ) + { + xf_bet[j] = 1; + rec_real[j + CLDFB_NO_COL_MAX] = 0; + rec_imag[j + CLDFB_NO_COL_MAX] = 0; + } +#endif + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinRendPLCOpen() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_splitBinRendPLCOpen( + SPLIT_REND_PLC_HANDLE *phSplitRendPLC ) +{ + ivas_error error; + SPLIT_REND_PLC_HANDLE hSplitRendPLC; + + error = IVAS_ERR_OK; + if ( ( hSplitRendPLC = (SPLIT_REND_PLC_HANDLE) malloc( sizeof( SPLIT_REND_PLC_STRUCT ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split renderer PLC Module \n" ) ); + } + + hSplitRendPLC->prev_bfi = 0; + hSplitRendPLC->bf_count = 0; + set_zero( &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal[0][0][0], 2 * ( CLDFB_NO_COL_MAX + CLDFB_PLC_XF ) * CLDFB_NO_CHANNELS_MAX ); + set_zero( &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag[0][0][0], 2 * ( CLDFB_NO_COL_MAX + CLDFB_PLC_XF ) * CLDFB_NO_CHANNELS_MAX ); + *phSplitRendPLC = hSplitRendPLC; + + return error; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinRendPLCClose() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinRendPLCClose( + SPLIT_REND_PLC_HANDLE *phSplitRendPLC ) +{ + if ( ( *phSplitRendPLC ) != NULL ) + { + free( ( *phSplitRendPLC ) ); + ( *phSplitRendPLC ) = NULL; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinRendPLCsaveState() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinRendPLCsaveState( + SPLIT_REND_PLC_HANDLE hSplitRendPLC, + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs ) +{ + int16_t k, n; + + /* Save Cldfb frame */ + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + for ( n = 0; n < num_chs; n++ ) + { + mvr2r( &Cldfb_RealBuffer_Binaural[n][k][0], &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal[n][k][0], CLDFB_NO_CHANNELS_MAX ); + mvr2r( &Cldfb_ImagBuffer_Binaural[n][k][0], &hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag[n][k][0], CLDFB_NO_CHANNELS_MAX ); + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinRendPLC_xf() + * + * Cross-fade of preceding bad frame into good frame + *------------------------------------------------------------------------*/ + +void ivas_splitBinRendPLC_xf( + SPLIT_REND_PLC_HANDLE hSplitRendPLC, + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs ) +{ + int16_t n, i, k; + + /* Indicate that next transition will be from a good frame */ + hSplitRendPLC->prev_bfi = 0; + + /* Reset bf conter */ + hSplitRendPLC->bf_count = 0; + + + /* Do the cross fade */ + for ( n = 0; n < num_chs; n++ ) + { + for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) + { +#if CLDFB_PLC_XF > 0 + for ( k = 0; k < CLDFB_PLC_XF; k++ ) + { + Cldfb_RealBuffer_Binaural[n][k][i] = hSplitRendPLC->CldfbPLC_state.xf_bet[n][i][k] * Cldfb_RealBuffer_Binaural[n][k][i] + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal[n][k + CLDFB_NO_COL_MAX][i]; + Cldfb_ImagBuffer_Binaural[n][k][i] = hSplitRendPLC->CldfbPLC_state.xf_bet[n][i][k] * Cldfb_ImagBuffer_Binaural[n][k][i] + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag[n][k + CLDFB_NO_COL_MAX][i]; + } +#endif + } + } + + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinRendPLC() + * + * Conceal bad frame + *------------------------------------------------------------------------*/ + +void ivas_splitBinRendPLC( + SPLIT_REND_PLC_HANDLE hSplitRendPLC, + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t num_chs ) +{ + int32_t i, n, k; + float fade_fac; + float prev_real[CLDFB_NO_COL_MAX], prev_imag[CLDFB_NO_COL_MAX], rec_real[CLDFB_NO_COL_MAX + CLDFB_PLC_XF], rec_imag[CLDFB_NO_COL_MAX + CLDFB_PLC_XF]; +#if CLDFB_PLC_XF > 0 + float xf_alp[CLDFB_PLC_XF]; +#endif + + /* Indicate that next transition will be from a bad frame */ + hSplitRendPLC->prev_bfi = 1; + + { +#if CLDFB_PLC_XF > 0 + for ( i = 0; i < CLDFB_PLC_XF; i++ ) + { + xf_alp[i] = 1.0f - ( i + 1.0f ) / ( CLDFB_PLC_XF + 1.0f ); + } +#endif + + for ( n = 0; n < num_chs; n++ ) + { + for ( i = 0; i < CLDFB_NO_CHANNELS_MAX; i++ ) + { + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + prev_real[k] = hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal[n][k][i]; + prev_imag[k] = hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag[n][k][i]; + } + adaptive_polar_ext_plc( prev_real, prev_imag, rec_real, rec_imag +#if CLDFB_PLC_XF > 0 + , + xf_alp, hSplitRendPLC->CldfbPLC_state.xf_bet[n][i] +#endif + ); + for ( k = 0; k < CLDFB_NO_COL_MAX; k++ ) + { + Cldfb_RealBuffer_Binaural[n][k][i] = rec_real[k]; + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal[n][k][i] = rec_real[k]; + Cldfb_ImagBuffer_Binaural[n][k][i] = rec_imag[k]; + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag[n][k][i] = rec_imag[k]; + } +#if CLDFB_PLC_XF > 0 + for ( k = CLDFB_NO_COL_MAX; k < CLDFB_NO_COL_MAX + CLDFB_PLC_XF; k++ ) + { + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinReal[n][k][i] = rec_real[k]; + hSplitRendPLC->CldfbPLC_state.Cldfb_Prev_BinImag[n][k][i] = rec_imag[k]; + } +#endif + } + } + } + + /* Check bf counter */ + if ( hSplitRendPLC->bf_count++ >= SR_PLC_FADE_START ) + { + if ( hSplitRendPLC->bf_count < SR_PLC_MUTE ) + { + fade_fac = powf( 10, ( hSplitRendPLC->bf_count - SR_PLC_FADE_START ) * SR_PLC_FADE_DEGREE / 20.0f ); + v_multc( &Cldfb_RealBuffer_Binaural[0][0][0], fade_fac, &Cldfb_RealBuffer_Binaural[0][0][0], (int16_t) ( (CLDFB_NO_COL_MAX) *num_chs * CLDFB_NO_CHANNELS_MAX ) ); + v_multc( &Cldfb_ImagBuffer_Binaural[0][0][0], fade_fac, &Cldfb_ImagBuffer_Binaural[0][0][0], (int16_t) ( (CLDFB_NO_COL_MAX) *num_chs * CLDFB_NO_CHANNELS_MAX ) ); + } + else + { + set_zero( &Cldfb_RealBuffer_Binaural[0][0][0], (int16_t) ( (CLDFB_NO_COL_MAX) *num_chs * CLDFB_NO_CHANNELS_MAX ) ); + set_zero( &Cldfb_ImagBuffer_Binaural[0][0][0], (int16_t) ( (CLDFB_NO_COL_MAX) *num_chs * CLDFB_NO_CHANNELS_MAX ) ); + hSplitRendPLC->bf_count = SR_PLC_MUTE; + } + } + + return; +} + +#endif diff --git a/lib_rend/ivas_splitRendererPost.c b/lib_rend/ivas_splitRendererPost.c new file mode 100644 index 0000000000000000000000000000000000000000..ab872c618fb1fb9cca69b35c5ee22cbcbbf74645 --- /dev/null +++ b/lib_rend/ivas_splitRendererPost.c @@ -0,0 +1,2066 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +#include +#endif +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_rom_dec.h" +#include "ivas_prot_rend.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * ivas_splitBinPostRendOpen() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_splitBinPostRendOpen( + BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int32_t output_Fs ) +{ + BIN_HR_SPLIT_POST_REND_HANDLE hBinRend; + ivas_error error; + int16_t ch; + + error = IVAS_ERR_OK; + if ( ( hBinRend = (BIN_HR_SPLIT_POST_REND_HANDLE) malloc( sizeof( BIN_HR_SPLIT_POST_REND ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split post renderer Module \n" ) ); + } + + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hBinRend->cldfbSyn[ch] = NULL; + hBinRend->cldfbAna[ch] = NULL; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hBinRend->cldfbSynReconsBinDec[i][ch] = NULL; + } + } +#endif + + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb( &( hBinRend->cldfbSyn[ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = openCldfb( &( hBinRend->cldfbAna[ch] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb( &( hBinRend->cldfbSynReconsBinDec[i][ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } +#endif + hBinRend->cf_flag = 0; + set_fix_rotation_mat( hBinRend->fix_pos_rot_mat, pMultiBinPoseData ); + set_pose_types( hBinRend->pose_type, pMultiBinPoseData ); + ivas_split_rend_init_huff_cfg( &hBinRend->huff_cfg ); + *hBinHrSplitPostRend = hBinRend; + + return error; +} + + +/*------------------------------------------------------------------------- + * ivas_splitBinPostRendClose() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinPostRendClose( + BIN_HR_SPLIT_POST_REND_HANDLE *hBinHrSplitPostRend ) +{ + int16_t ch; + + if ( ( *hBinHrSplitPostRend ) != NULL ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( *hBinHrSplitPostRend )->cldfbSyn[ch] != NULL ) + { + deleteCldfb( &( ( *hBinHrSplitPostRend )->cldfbSyn[ch] ) ); + ( *hBinHrSplitPostRend )->cldfbSyn[ch] = NULL; + } + if ( ( *hBinHrSplitPostRend )->cldfbAna[ch] != NULL ) + { + deleteCldfb( &( ( *hBinHrSplitPostRend )->cldfbAna[ch] ) ); + ( *hBinHrSplitPostRend )->cldfbAna[ch] = NULL; + } + } +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( *hBinHrSplitPostRend )->cldfbSynReconsBinDec[i][ch] != NULL ) + { + deleteCldfb( &( ( *hBinHrSplitPostRend )->cldfbSynReconsBinDec[i][ch] ) ); + ( *hBinHrSplitPostRend )->cldfbSynReconsBinDec[i][ch] = NULL; + } + } + } +#endif + + free( ( *hBinHrSplitPostRend ) ); + ( *hBinHrSplitPostRend ) = NULL; + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_huffman_code_bits_present() + * + * Huffman code bits present + *-----------------------------------------------------------------------------------------*/ + +static int32_t ivas_split_rend_huffman_code_bits_present( + const int32_t *codebook, + const int32_t code, + const int32_t bits, + const int16_t len ) +{ + int16_t index = len + 1; + int16_t i = 0; + int32_t code_t, ind_t, bits_t; + + while ( i < len ) + { + ind_t = codebook[0]; + bits_t = codebook[1]; + code_t = codebook[2]; + if ( ( code == code_t ) && ( bits == bits_t ) ) + { + return ind_t; + } + codebook = codebook + 3; + i++; + } + + return index; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_split_rend_huffman_decode_opt() + * + * + *-----------------------------------------------------------------------------------------*/ + +static int16_t ivas_split_rend_huffman_decode_opt( + ivas_split_rend_huffman_cfg_t *huff_cfg, + ivas_split_rend_bits_t *pBits, + const int16_t *idx_trav_list ) +{ + int32_t i, ind, code, num_bits, code_b, num_bits_read; + const int32_t *codebook; + + codebook = huff_cfg->codebook; + num_bits_read = 0; + ind = huff_cfg->codebook[0] - 1; + code = 0; + for ( i = 0; i < huff_cfg->sym_len; i++ ) + { + codebook = codebook + idx_trav_list[i] * 3; + num_bits = codebook[1]; + code_b = codebook[2]; + num_bits_read = num_bits - num_bits_read; + code = code << num_bits_read; + if ( num_bits_read > 0 ) + { + code |= ivas_split_rend_bitstream_read_int32( pBits, num_bits_read ); + } + + if ( code == code_b ) + { + ind = codebook[0]; + break; + } + + num_bits_read = num_bits; + codebook = huff_cfg->codebook; + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + assert( ind >= huff_cfg->codebook[0] ); +#endif + return (int16_t) ind; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_split_rend_huffman_decode() + * + * + *-----------------------------------------------------------------------------------------*/ +// ToDo: unused function +static int16_t ivas_split_rend_huffman_decode( + ivas_split_rend_huffman_cfg_t *huff_cfg, + ivas_split_rend_bits_t *pBits ) +{ + int32_t code, bit, num_bits_read, ind; + + code = ivas_split_rend_bitstream_read_int32( pBits, huff_cfg->min_len ); + num_bits_read = huff_cfg->min_len; + + ind = ivas_split_rend_huffman_code_bits_present( huff_cfg->codebook, code, num_bits_read, huff_cfg->sym_len ); + + while ( ind > huff_cfg->sym_len ) + { + bit = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + num_bits_read += 1; + code = code << 1 | bit; + ind = ivas_split_rend_huffman_code_bits_present( huff_cfg->codebook, code, num_bits_read, huff_cfg->sym_len ); + + if ( num_bits_read > huff_cfg->max_len ) + { + assert( 0 ); + } + } + + return (int16_t) ind; +} + + +static void ivas_split_rend_unquant_md( + BIN_HR_SPLIT_REND_MD_HANDLE hMd, + IVAS_SPLIT_REND_POSE_TYPE pose_type, + int16_t real_only, + float fix_pos_rot_mat[][BINAURAL_CHANNELS] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + const float pred_quant_step +#endif +) +{ + int16_t ch1, ch2; + int16_t gd_idx_min; + + if ( pose_type == PRED_ONLY +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + || pose_type == PRED_ROLL_ONLY +#endif + ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + float quantstep; + + quantstep = pred_quant_step; +#endif + + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + hMd->pred_mat_re[ch1][ch2] = hMd->pred_mat_re_idx[ch1][ch2] * quantstep; +#else + hMd->pred_mat_re[ch1][ch2] = hMd->pred_mat_re_idx[ch1][ch2] * IVAS_SPLIT_REND_PRED_Q_STEP; +#endif + hMd->pred_mat_re[ch1][ch2] = hMd->pred_mat_re[ch1][ch2] + fix_pos_rot_mat[ch1][ch2]; + } + } + if ( real_only ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + hMd->pred_mat_im[ch1][ch2] = 0.0f; + } + } + } + else + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + hMd->pred_mat_im[ch1][ch2] = hMd->pred_mat_im_idx[ch1][ch2] * quantstep; +#else + hMd->pred_mat_im[ch1][ch2] = hMd->pred_mat_im_idx[ch1][ch2] * IVAS_SPLIT_REND_PRED_Q_STEP; +#endif + } + } + } + } + else if ( pose_type == COM_GAIN_ONLY ) + { + gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_D_1BYQ_STEP * IVAS_SPLIT_REND_D_MIN_VAL ); + hMd->gd_idx += gd_idx_min; + hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_D_Q_STEP; + } + else if ( pose_type == LR_GAIN_ONLY ) + { + gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP * IVAS_SPLIT_REND_PITCH_G_MIN_VAL ); + hMd->gd_idx += gd_idx_min; + hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_PITCH_G_Q_STEP; + + hMd->gd2_idx += gd_idx_min; + hMd->gd2 = hMd->gd2_idx * IVAS_SPLIT_REND_PITCH_G_Q_STEP; + } + else + { + hMd->gd = 0.0f; + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_splitBinPostRendMdBase2Dec() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void ivas_splitBinPostRendMdBase2Dec( + ivas_split_rend_bits_t *pBits, + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int16_t num_subframes, + const int16_t pred_real_bands_yaw, + const int16_t pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + const int16_t pred_quant_pnts_yaw, +#endif + const int16_t d_bands_yaw, + const int16_t bands_pitch, + const int16_t pred_real_bands_roll, + const int16_t pred_imag_bands_roll ) +{ + int16_t sf_idx, pos_idx, b, ch1, ch2; + int16_t min_pred_idx, min_gd_idx, min_p_gd_idx, pred_code_len, gd_code_len, p_gd_code_len; + int16_t min_pred_roll_idx, pred_roll_code_len; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_cb_idx; +#endif + int16_t code; + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPostRend->huff_cfg; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + if ( pred_quant_pnts_yaw == IVAS_SPLIT_REND_PRED_63QUANT_PNTS ) + { + pred_cb_idx = 1; + } + else + { + pred_cb_idx = 0; + } + min_pred_idx = (int16_t) pHuff_cfg->pred[pred_cb_idx].codebook[0]; + min_pred_roll_idx = (int16_t) pHuff_cfg->pred_roll.codebook[0]; +#else + min_pred_idx = (int16_t) pHuff_cfg->pred.codebook[0]; + min_pred_roll_idx = min_pred_idx; +#endif + min_gd_idx = (int16_t) pHuff_cfg->gd.codebook[0]; + min_p_gd_idx = (int16_t) pHuff_cfg->p_gd.codebook[0]; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_code_len = pHuff_cfg->pred_base2_code_len[pred_cb_idx]; + pred_roll_code_len = pHuff_cfg->pred_roll_base2_code_len; +#else + pred_code_len = pHuff_cfg->pred_base2_code_len; + pred_roll_code_len = pred_code_len; +#endif + gd_code_len = pHuff_cfg->gd_base2_code_len; + p_gd_code_len = pHuff_cfg->p_gd_base2_code_len; + + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + 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 = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, pred_code_len ); + hMd->pred_mat_re_idx[ch1][ch2] = code + min_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++ ) + { + code = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, pred_code_len ); + hMd->pred_mat_im_idx[ch1][ch2] = code + min_pred_idx; + } + } + } + for ( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + code = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, gd_code_len ); + hMd->gd_idx = code + min_gd_idx; + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + code = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, p_gd_code_len ); + hMd->gd_idx = code + min_p_gd_idx; + code = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, p_gd_code_len ); + hMd->gd2_idx = code + min_p_gd_idx; + } + } + else + { + 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 = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, pred_roll_code_len ); + hMd->pred_mat_re_idx[ch1][ch2] = code + min_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++ ) + { + code = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, pred_roll_code_len ); + hMd->pred_mat_im_idx[ch1][ch2] = code + min_pred_roll_idx; + } + } + } + } + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_splitBinPostRendMdHuffDec() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void ivas_splitBinPostRendMdHuffDec( + ivas_split_rend_bits_t *pBits, + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int16_t num_subframes, + const int16_t pred_real_bands_yaw, + const int16_t pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + const int16_t pred_quant_pnts_yaw, +#endif + const int16_t d_bands_yaw, + const int16_t bands_pitch, + const int16_t pred_real_bands_roll, + const int16_t pred_imag_bands_roll ) +{ + int16_t pos_idx, b, sf_idx; + int16_t ch1, ch2; + int16_t sym_adj_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t min_pred_idx, max_pred_idx; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t min_pred_roll_idx, max_pred_roll_idx, pred_cb_idx; +#endif + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPostRend->huff_cfg; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + if ( pred_quant_pnts_yaw == IVAS_SPLIT_REND_PRED_63QUANT_PNTS ) + { + pred_cb_idx = 1; + } + else + { + pred_cb_idx = 0; + } + min_pred_idx = (int16_t) pHuff_cfg->pred[pred_cb_idx].codebook[0]; + max_pred_idx = (int16_t) pHuff_cfg->pred[pred_cb_idx].codebook[( pred_quant_pnts_yaw - 1 ) * 3]; +#else + min_pred_idx = (int16_t) pHuff_cfg->pred.codebook[0]; + max_pred_idx = (int16_t) pHuff_cfg->pred.codebook[( IVAS_SPLIT_REND_PRED_QUANT_PNTS - 1 ) * 3]; +#endif + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + min_pred_roll_idx = (int16_t) pHuff_cfg->pred_roll.codebook[0]; + max_pred_roll_idx = (int16_t) pHuff_cfg->pred_roll.codebook[( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 ) * 3]; +#endif + + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + 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++ ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + 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] ); +#else + sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred, pBits, pHuff_cfg->pred_idx_trav ); +#endif + // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits ); + } + } + ivas_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++ ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + 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] ); +#else + sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->pred, pBits, pHuff_cfg->pred_idx_trav ); +#endif + // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits ); + } + } + ivas_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_im_idx, -1, min_pred_idx, max_pred_idx ); + } + for ( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd_idx = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->gd, pBits, pHuff_cfg->gd_idx_trav ); + // hMd->gd_idx = ivas_split_rend_huffman_decode( &pHuff_cfg->gd, pBits ); + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd_idx = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->p_gd, pBits, pHuff_cfg->p_gd_idx_trav ); + // hMd->gd_idx = ivas_split_rend_huffman_decode( &pHuff_cfg->gd, pBits ); + + hMd->gd2_idx = ivas_split_rend_huffman_decode_opt( &pHuff_cfg->p_gd, pBits, pHuff_cfg->p_gd_idx_trav ); + } + } + else + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + 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 ); + // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred_roll, pBits ); + } + } + ivas_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 ); + // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred_roll, pBits ); + } + } + ivas_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_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, pBits, pHuff_cfg->pred_idx_trav ); + // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits ); + } + } + ivas_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_re_idx, 1, min_pred_idx, max_pred_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, pBits, pHuff_cfg->pred_idx_trav ); + // sym_adj_idx[ch1][ch2] = ivas_split_rend_huffman_decode( &pHuff_cfg->pred, pBits ); + } + } + ivas_SplitRenderer_getdiagdiff( sym_adj_idx, hMd->pred_mat_im_idx, -1, min_pred_idx, max_pred_idx ); + } +#endif + } + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_splitBinPostRendMdDec() + * + * + *-----------------------------------------------------------------------------------------*/ + +void ivas_splitBinPostRendMdDec( + ivas_split_rend_bits_t *pBits, + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend +#endif +) +{ + int16_t pos_idx, b, sf_idx, num_subframes, ch1; + int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + int16_t num_complex_bands, num_quant_strats; + int32_t quant_strat_bits, is_huff_coding, quant_strat; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + int16_t ch1, ch2; +#endif + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + IVAS_SPLIT_REND_CONFIG_DATA split_rend_config; + IVAS_SPLIT_REND_ROT_AXIS rot_axis; + + hBinHrSplitPostRend->low_Res = 1; + + split_rend_config.dof = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, IVAS_SPLIT_REND_DOF_BITS ); + split_rend_config.hq_mode = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, IVAS_SPLIT_REND_HQ_MODE_BITS ); + rot_axis = (IVAS_SPLIT_REND_ROT_AXIS) ivas_split_rend_bitstream_read_int32( pBits, IVAS_SPLIT_REND_ROT_AXIS_BITS ); + + ivas_renderSplitGetMultiBinPoseData( &split_rend_config, pMultiBinPoseData, rot_axis ); + + set_fix_rotation_mat( hBinHrSplitPostRend->fix_pos_rot_mat, pMultiBinPoseData ); + set_pose_types( hBinHrSplitPostRend->pose_type, pMultiBinPoseData ); + + num_subframes = ( hBinHrSplitPostRend->low_Res == 0 ) ? MAX_PARAM_SPATIAL_SUBFRAMES : 1; + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + int16_t angle; + + hBinHrSplitPostRend->QuaternionsPre[sf_idx].w = -3.0f; + + angle = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); + angle -= 180; + hBinHrSplitPostRend->QuaternionsPre[sf_idx].x = (float) angle; + + angle = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); + angle -= 180; + hBinHrSplitPostRend->QuaternionsPre[sf_idx].y = (float) angle; + + angle = (int16_t) ivas_split_rend_bitstream_read_int32( pBits, IVAS_SPLIT_REND_HEAD_POSE_BITS ); + angle -= 180; + hBinHrSplitPostRend->QuaternionsPre[sf_idx].z = (float) angle; + } + + ivas_split_rend_get_quant_params( + MAX_SPLIT_REND_MD_BANDS, + pred_real_bands_yaw, + pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw, + pred_quantstep_yaw, + pred_1byquantstep_yaw, +#endif + d_bands_yaw, + bands_pitch, + pred_real_bands_roll, + pred_imag_bands_roll, + &num_quant_strats, + &num_complex_bands ); + + quant_strat_bits = (int32_t) ceilf( log2f( num_quant_strats ) ); + is_huff_coding = ivas_split_rend_bitstream_read_int32( pBits, 1 ); + quant_strat = ivas_split_rend_bitstream_read_int32( pBits, quant_strat_bits ); + + if ( is_huff_coding == 0 ) + { + ivas_splitBinPostRendMdBase2Dec( + pBits, hBinHrSplitPostRend, + pMultiBinPoseData, + num_subframes, + pred_real_bands_yaw[quant_strat], + pred_imag_bands_yaw[quant_strat], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw[quant_strat], +#endif + d_bands_yaw[quant_strat], + bands_pitch[quant_strat], + pred_real_bands_roll[quant_strat], + pred_imag_bands_roll[quant_strat] ); + } + else + { + ivas_splitBinPostRendMdHuffDec( + pBits, hBinHrSplitPostRend, + pMultiBinPoseData, + num_subframes, + pred_real_bands_yaw[quant_strat], + pred_imag_bands_yaw[quant_strat], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw[quant_strat], +#endif + d_bands_yaw[quant_strat], + bands_pitch[quant_strat], + pred_real_bands_roll[quant_strat], + pred_imag_bands_roll[quant_strat] ); + } +#ifdef SPLIT_MD_CODING_DEBUG + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + int16_t val, ch2, val_ref; + char filename[200] = "split_md_debug_indices.bin"; + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].gd2_idx; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + else + { + for ( b = 0; b < pred_real_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgread( &val_ref, sizeof( int16_t ), 1, filename ); + if ( abs( val_ref - val ) > 0 ) + { + assert( 0 ); + } + } + } + } + } + } + } +#endif + + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md( hMd, PRED_ONLY, 0, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + pred_quantstep_yaw[quant_strat] +#endif + ); + } + for ( ; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md( hMd, PRED_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + pred_quantstep_yaw[quant_strat] +#endif + ); + } + for ( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + set_zero( hMd->pred_mat_re[ch1], BINAURAL_CHANNELS ); + set_zero( hMd->pred_mat_im[ch1], BINAURAL_CHANNELS ); + hMd->pred_mat_re[ch1][ch1] = 1.0f; + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md( hMd, COM_GAIN_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + 0 +#endif + ); + } + for ( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd = 0.0f; + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md( hMd, LR_GAIN_ONLY, 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + 0 +#endif + ); + } + for ( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + hMd->gd = 1.0f; + hMd->gd2 = 1.0f; + } + } + else + { + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md( hMd, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + PRED_ROLL_ONLY, +#else + PRED_ONLY, +#endif + 0, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + IVAS_SPLIT_REND_PRED_ROLL_Q_STEP +#endif + ); + } + for ( ; b < pred_real_bands_roll[quant_strat]; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_unquant_md( hMd, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + PRED_ROLL_ONLY, +#else + PRED_ONLY, +#endif + 1, hBinHrSplitPostRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + IVAS_SPLIT_REND_PRED_ROLL_Q_STEP +#endif + ); + } + for ( ; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hMd = &hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + set_zero( hMd->pred_mat_re[ch1], BINAURAL_CHANNELS ); + set_zero( hMd->pred_mat_im[ch1], BINAURAL_CHANNELS ); + hMd->pred_mat_re[ch1][ch1] = 1.0f; + } + } + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + float val; + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPostRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_re_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_im_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + if ( fabsf( hMd->gd_idx - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + else if ( hBinHrSplitPostRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + if ( fabsf( hMd->gd_idx - val ) > 1e-20 ) + { + assert( 0 ); + } + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_idx; + if ( fabsf( hMd->gd2_idx - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + else + { + for ( b = 0; b < pred_real_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_re_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + if ( fabsf( hMd->pred_mat_im_idx[ch1][ch2] - val ) > 1e-20 ) + { + assert( 0 ); + } + } + } + } + } + } + } +#endif + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function wrap_around_angle() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void wrap_around_angle( float *a ) +{ + if ( ( *a ) > 180.0f ) + { + ( *a ) = ( *a ) - 360; + } + else if ( ( *a ) < -180.0f ) + { + ( *a ) = ( *a ) + 360; + } + return; +} + +/*-----------------------------------------------------------------------------------------* + * Function wrap_around_angle() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void wrap_around_ypr( IVAS_QUATERNION *Quaternions ) +{ + /*only if quat is actually yaw, pitch , roll angles*/ + if ( Quaternions->w == -3.0f ) + { + wrap_around_angle( &Quaternions->x ); + wrap_around_angle( &Quaternions->y ); + wrap_around_angle( &Quaternions->z ); + } + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function wrap_around_angle() + * + * + *-----------------------------------------------------------------------------------------*/ + +static float get_interp_fact( float p[MAX_HEAD_ROT_POSES], float p_t, int16_t ind[2] ) +{ + float n, d, interp_fact; + if ( ind[0] != ind[1] ) + { + n = p[ind[0]] - p[ind[1]]; + d = p[ind[0]] - p_t; + interp_fact = d / n; + if ( interp_fact < 0.0f ) + { + d = max( -1.0f * MAX_EXTRAPOLATION_ANGLE, ( min( MAX_EXTRAPOLATION_ANGLE, d ) ) ); + n = sinf( n * ( EVS_PI / 180.0f ) ); + d = sinf( d * ( EVS_PI / 180.0f ) ); + interp_fact = d / n; + } + } + else + { + interp_fact = 0.0f; + } + + return interp_fact; +} + + +/*-----------------------------------------------------------------------------------------* + * Function get_nearest_pose_ind() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void get_nearest_pose_ind( + float p[MAX_HEAD_ROT_POSES], + const float p_t, + int16_t ind[2], + const int16_t num_poses ) +{ + float min_diff, diff; + int16_t pos_idx; + + ind[0] = 0; + ind[1] = 0; + min_diff = 360.0f; + /*find the closest pose from assumed poses*/ + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + diff = fabsf( p_t - p[pos_idx] ); + if ( diff < min_diff ) + { + ind[0] = pos_idx; + min_diff = (float) diff; + } + } + + min_diff = 360.0; + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + diff = fabsf( p_t - p[pos_idx] ); + if ( ( diff < min_diff ) && + ( fabs( p[pos_idx] - p[ind[0]] ) > EPSILON ) ) + { + ind[1] = pos_idx; + min_diff = (float) diff; + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function get_interpolation_vars() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void get_interpolation_vars( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_QUATERNION *Quaternions_ref, + const IVAS_QUATERNION *Quaternions_act, + int16_t interp_yaw_pose_idx[2], + int16_t interp_pitch_pose_idx[2], + int16_t interp_roll_pose_idx[2], + float *interp_yaw_fact, + float *interp_pitch_fact, + float *interp_roll_fact ) +{ + IVAS_QUATERNION quaternions_diff, quaternions_ref_euler, quaternions_act_euler; + float y[MAX_HEAD_ROT_POSES], p[MAX_HEAD_ROT_POSES], r[MAX_HEAD_ROT_POSES]; + int16_t pos_idx, num_poses; + + quaternions_diff.x = 0.0f; + quaternions_diff.y = 0.0f; + quaternions_diff.z = 0.0f; + + num_poses = pMultiBinPoseData->num_poses; + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { + quaternions_diff.x = pMultiBinPoseData->relative_head_poses[pos_idx][0]; + quaternions_diff.y = pMultiBinPoseData->relative_head_poses[pos_idx][1]; + quaternions_diff.z = pMultiBinPoseData->relative_head_poses[pos_idx][2]; + y[pos_idx] = quaternions_diff.x; + p[pos_idx] = quaternions_diff.y; + r[pos_idx] = quaternions_diff.z; + } + + /*interpolation if actual pose is not same as one of assumed poses*/ + /*get the deviation*/ + Quat2EulerDegree( *Quaternions_ref, &quaternions_ref_euler.z, &quaternions_ref_euler.y, &quaternions_ref_euler.x ); /*order in Quat2Euler seems to be reversed ?*/ + Quat2EulerDegree( *Quaternions_act, &quaternions_act_euler.z, &quaternions_act_euler.y, &quaternions_act_euler.x ); /*order in Quat2Euler seems to be reversed ?*/ + quaternions_diff.w = -3.0f; /*euler*/ + quaternions_diff.x = quaternions_act_euler.x - quaternions_ref_euler.x; + quaternions_diff.y = quaternions_act_euler.y - quaternions_ref_euler.y; + quaternions_diff.z = quaternions_act_euler.z - quaternions_ref_euler.z; + wrap_around_ypr( &quaternions_diff ); + + interp_yaw_pose_idx[0] = 0; + interp_yaw_pose_idx[1] = 0; + if ( fabs( quaternions_diff.x ) > EPSILON ) + { + get_nearest_pose_ind( y, quaternions_diff.x, interp_yaw_pose_idx, num_poses ); + } + *interp_yaw_fact = get_interp_fact( y, quaternions_diff.x, interp_yaw_pose_idx ); + + interp_pitch_pose_idx[0] = 0; + interp_pitch_pose_idx[1] = 0; + if ( fabs( quaternions_diff.y ) > EPSILON ) + { + get_nearest_pose_ind( p, quaternions_diff.y, interp_pitch_pose_idx, num_poses ); + } + *interp_pitch_fact = get_interp_fact( p, quaternions_diff.y, interp_pitch_pose_idx ); + + interp_roll_pose_idx[0] = 0; + interp_roll_pose_idx[1] = 0; + if ( fabs( quaternions_diff.z ) > EPSILON ) + { + get_nearest_pose_ind( r, quaternions_diff.z, interp_roll_pose_idx, num_poses ); + } + *interp_roll_fact = get_interp_fact( r, quaternions_diff.z, interp_roll_pose_idx ); + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function interpolate_gain_matrix() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void interpolate_gain_matrix( + BIN_HR_SPLIT_REND_MD rot_md[][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS], + const int16_t sf_idx, + const int16_t band_idx, + const int16_t ind[2], + const float interp_fact, + float gain[BINAURAL_CHANNELS] ) +{ + float gd1, gd2, gd3, gd4, diff; + + gd1 = 1.0f; + gd2 = 1.0f; + gd3 = 1.0f; + gd4 = 1.0f; + if ( ind[0] != 0 ) + { + gd1 = rot_md[ind[0] - 1][sf_idx][band_idx].gd; + gd3 = rot_md[ind[0] - 1][sf_idx][band_idx].gd2; + } + if ( ind[1] != 0 ) + { + gd2 = rot_md[ind[1] - 1][sf_idx][band_idx].gd; + gd4 = rot_md[ind[1] - 1][sf_idx][band_idx].gd2; + } +#if 0 + diff = gd1 / gd2; + pitch_gain_l = gd2 * powf( diff, 1.0f - interp_pitch_fact ); + pitch_gain_l = max( 0.0f, pitch_gain_l ); + + diff = gd3 / gd4; + pitch_gain_r = gd4 * powf( diff, 1.0f - interp_pitch_fact ); + pitch_gain_r = max( 0.0f, pitch_gain_r ); +#else + diff = gd1 - gd2; + gain[0] = gd1 - ( diff * interp_fact ); + gain[0] = max( 0.0f, gain[0] ); + + diff = gd3 - gd4; + gain[1] = gd3 - ( diff * interp_fact ); + gain[1] = max( 0.0f, gain[1] ); +#endif + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function interpolate_pred_matrix() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void interpolate_pred_matrix( + BIN_HR_SPLIT_REND_MD rot_md[][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS], + const int16_t sf_idx, + const int16_t band_idx, + const int16_t ind[2], + const float interp_fact, + float mat_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float mat_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS] ) +{ + int16_t ch_idx1, ch_idx2; + float diff; + BIN_HR_SPLIT_REND_MD *pRot_md; + float mix_mat_re1[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_im1[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_re2[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_im2[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + set_zero( mix_mat_re1[ch_idx1], BINAURAL_CHANNELS ); + set_zero( mix_mat_im1[ch_idx1], BINAURAL_CHANNELS ); + mix_mat_re1[ch_idx1][ch_idx1] = 1.0f; + + set_zero( mix_mat_re2[ch_idx1], BINAURAL_CHANNELS ); + set_zero( mix_mat_im2[ch_idx1], BINAURAL_CHANNELS ); + mix_mat_re2[ch_idx1][ch_idx1] = 1.0f; + } + + if ( ind[0] != 0 ) + { + pRot_md = &rot_md[ind[0] - 1][sf_idx][band_idx]; + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + for ( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + mix_mat_re1[ch_idx1][ch_idx2] = pRot_md->pred_mat_re[ch_idx1][ch_idx2]; + mix_mat_im1[ch_idx1][ch_idx2] = pRot_md->pred_mat_im[ch_idx1][ch_idx2]; + } + } + } + + if ( ind[1] != 0 ) + { + pRot_md = &rot_md[ind[1] - 1][sf_idx][band_idx]; + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + for ( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + mix_mat_re2[ch_idx1][ch_idx2] = pRot_md->pred_mat_re[ch_idx1][ch_idx2]; + mix_mat_im2[ch_idx1][ch_idx2] = pRot_md->pred_mat_im[ch_idx1][ch_idx2]; + } + } + } + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + for ( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + diff = mix_mat_re1[ch_idx1][ch_idx2] - mix_mat_re2[ch_idx1][ch_idx2]; + mat_re[ch_idx1][ch_idx2] = mix_mat_re1[ch_idx1][ch_idx2] - ( diff * interp_fact ); + + diff = mix_mat_im1[ch_idx1][ch_idx2] - mix_mat_im2[ch_idx1][ch_idx2]; + mat_im[ch_idx1][ch_idx2] = mix_mat_im1[ch_idx1][ch_idx2] - ( diff * interp_fact ); + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function interpolate_rend_md() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void interpolate_rend_md( + BIN_HR_SPLIT_REND_MD rot_md[][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS], + float mix_mat_re[][BINAURAL_CHANNELS], + float mix_mat_im[][BINAURAL_CHANNELS], + float *gd_int, + const int16_t sf_idx, + const int16_t band_idx, + const int16_t interp_yaw_pose_idx[2], + const int16_t interp_pitch_pose_idx[2], + const int16_t interp_roll_pose_idx[2], + const float interp_yaw_fact, + const float interp_pitch_fact, + const float interp_roll_fact ) +{ + int16_t ch_idx1, idx1, idx2; + float mix_mat_re1[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_im1[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_re3[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_im3[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t ch_idx2; + float gd1, gd2, gd3, gd4, diff, pitch_gain_r, pitch_gain_l; + + gd1 = 0.0f; + gd2 = 0.0f; + + idx1 = interp_yaw_pose_idx[0]; + idx2 = interp_yaw_pose_idx[1]; + if ( ( idx1 != 0 ) || ( idx2 != 0 ) ) + { + interpolate_pred_matrix( rot_md, sf_idx, band_idx, interp_yaw_pose_idx, interp_yaw_fact, mix_mat_re, mix_mat_im ); + + if ( idx1 != 0 ) + { + gd1 = rot_md[idx1 - 1][sf_idx][band_idx].gd; + } + + if ( idx2 != 0 ) + { + gd2 = rot_md[idx2 - 1][sf_idx][band_idx].gd; + } + + diff = gd1 - gd2; + *gd_int = gd1 - ( diff * interp_yaw_fact ); + } + else + { + /*P = P'*/ + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + set_zero( mix_mat_re[ch_idx1], BINAURAL_CHANNELS ); + set_zero( mix_mat_im[ch_idx1], BINAURAL_CHANNELS ); + mix_mat_re[ch_idx1][ch_idx1] = 1.0f; + } + *gd_int = 0.0f; + } + + idx1 = interp_pitch_pose_idx[0]; + idx2 = interp_pitch_pose_idx[1]; + if ( ( idx1 != 0 ) || ( idx2 != 0 ) ) + { + gd1 = 1.0f; + gd2 = 1.0f; + + gd3 = 1.0f; + gd4 = 1.0f; + + if ( idx1 != 0 ) + { + gd1 = rot_md[idx1 - 1][sf_idx][band_idx].gd; + gd3 = rot_md[idx1 - 1][sf_idx][band_idx].gd2; + } + if ( idx2 != 0 ) + { + gd2 = rot_md[idx2 - 1][sf_idx][band_idx].gd; + gd4 = rot_md[idx2 - 1][sf_idx][band_idx].gd2; + } +#if 0 + diff = gd1 / gd2; + pitch_gain_l = gd2 * powf( diff, 1.0f - interp_pitch_fact ); + pitch_gain_l = max( 0.0f, pitch_gain_l ); + + diff = gd3 / gd4; + pitch_gain_r = gd4 * powf( diff, 1.0f - interp_pitch_fact ); + pitch_gain_r = max( 0.0f, pitch_gain_r ); +#else + diff = gd1 - gd2; + pitch_gain_l = gd1 - ( diff * interp_pitch_fact ); + pitch_gain_l = max( 0.0f, pitch_gain_l ); + + diff = gd3 - gd4; + pitch_gain_r = gd3 - ( diff * interp_pitch_fact ); + pitch_gain_r = max( 0.0f, pitch_gain_r ); +#endif + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + mix_mat_re[ch_idx1][0] *= pitch_gain_l; + mix_mat_re[ch_idx1][1] *= pitch_gain_r; + mix_mat_im[ch_idx1][0] *= pitch_gain_l; + mix_mat_im[ch_idx1][1] *= pitch_gain_r; + } + } + else + { + pitch_gain_l = 1.0f; + pitch_gain_r = 1.0f; + } + + idx1 = interp_roll_pose_idx[0]; + idx2 = interp_roll_pose_idx[1]; + if ( ( idx1 != 0 ) || ( idx2 != 0 ) ) + { + + + interpolate_pred_matrix( rot_md, sf_idx, band_idx, interp_roll_pose_idx, interp_roll_fact, mix_mat_re3, mix_mat_im3 ); + + ivas_mat_mult_2by2_complex( mix_mat_re, mix_mat_im, mix_mat_re3, mix_mat_im3, mix_mat_re1, mix_mat_im1 ); + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + for ( ch_idx2 = 0; ch_idx2 < BINAURAL_CHANNELS; ch_idx2++ ) + { + mix_mat_re[ch_idx1][ch_idx2] = mix_mat_re1[ch_idx1][ch_idx2]; + mix_mat_im[ch_idx1][ch_idx2] = mix_mat_im1[ch_idx1][ch_idx2]; + } + } + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_SplitRenderer_PostRenderer() + * + * + *-----------------------------------------------------------------------------------------*/ + +void ivas_SplitRenderer_PostRenderer( + BIN_HR_SPLIT_POST_REND_HANDLE hBinPostRenderer, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, +#ifdef API_5MS + float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternion_act +#else + float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* i/o : Reference/out Binaural signals */ + const IVAS_QUATERNION Quaternions_act[MAX_PARAM_SPATIAL_SUBFRAMES] +#endif +) +{ + int16_t pos_idx, b, brange[2], ch_idx1; + int16_t num_md_bands, slot_idx, b2, index_slot, num_slots, sf_idx_md; +#ifndef API_5MS + int16_t sf_idx, num_subframes; +#endif + float pred_out_re[BINAURAL_CHANNELS], pred_out_im[BINAURAL_CHANNELS], tmp_re, tmp_im, gd_int; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + BIN_HR_SPLIT_REND_MD rot_md_act[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS]; +#else + BIN_HR_SPLIT_REND_MD rot_md_act[1][MAX_SPLIT_REND_MD_BANDS]; +#endif + int16_t interp_yaw_pose_idx[2], interp_pitch_pose_idx[2], interp_roll_pose_idx[2]; + float interp_yaw_fact, interp_pitch_fact, interp_roll_fact; + float mix_mat_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mix_mat_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + float Cldfb_RealBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; +#endif + float fade; + float *pMix_mat_re_prev[BINAURAL_CHANNELS]; + float *pMix_mat_im_prev[BINAURAL_CHANNELS]; + const int16_t *pBand_grouping = ivas_split_rend_band_grouping; + + num_md_bands = MAX_SPLIT_REND_MD_BANDS; + + push_wmops( "ivas_SplitRenderer_PostRenderer" ); + + num_slots = MAX_PARAM_SPATIAL_SUBFRAMES; +#ifndef API_5MS + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + pos_idx = MAX_HEAD_ROT_POSES - 1; +#else + pos_idx = 0; +#endif + +#ifdef API_5MS + sf_idx_md = 0; +#else + sf_idx_md = ( hBinPostRenderer->low_Res == 0 ) ? sf_idx : 0; +#endif + get_interpolation_vars( pMultiBinPoseData, + &hBinPostRenderer->QuaternionsPre[sf_idx_md], +#ifdef API_5MS + &Quaternion_act, +#else + &Quaternions_act[sf_idx], +#endif + interp_yaw_pose_idx, + interp_pitch_pose_idx, + interp_roll_pose_idx, + &interp_yaw_fact, + &interp_pitch_fact, + &interp_roll_fact ); + for ( b = 0; b < num_md_bands; b++ ) + { + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + set_zero( mix_mat_re[ch_idx1], BINAURAL_CHANNELS ); + set_zero( mix_mat_im[ch_idx1], BINAURAL_CHANNELS ); + mix_mat_re[ch_idx1][ch_idx1] = 1.0f; + } + gd_int = 0.0f; + interpolate_rend_md( hBinPostRenderer->rot_md, mix_mat_re, mix_mat_im, &gd_int, sf_idx_md, b, interp_yaw_pose_idx, interp_pitch_pose_idx, interp_roll_pose_idx, interp_yaw_fact, interp_pitch_fact, interp_roll_fact ); + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + /*update the prediction matrix with interpolated matrix*/ + rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][0] = mix_mat_re[ch_idx1][0]; + rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][1] = mix_mat_re[ch_idx1][1]; + rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][0] = mix_mat_im[ch_idx1][0]; + rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][1] = mix_mat_im[ch_idx1][1]; + rot_md_act[pos_idx][b].gd = gd_int; + } + } + + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES - 1; pos_idx++ ) + { + for ( b = 0; b < num_md_bands; b++ ) + { + if ( hBinPostRenderer->pose_type[pos_idx] == PITCH_ONLY ) + { + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + set_zero( hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1], BINAURAL_CHANNELS ); + set_zero( hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_im[ch_idx1], BINAURAL_CHANNELS ); + hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1][ch_idx1] = 1.0f; + } + hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[0][0] *= hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd; + hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[1][1] *= hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd2; + hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd = 0.0f; + } + else if ( hBinPostRenderer->pose_type[pos_idx] == ANY_ROLL ) + { + hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd = 0.0f; + } + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + + /*update the prediction matrix with interpolated matrix*/ + rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][0] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1][0]; + rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][1] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_re[ch_idx1][1]; + rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][0] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_im[ch_idx1][0]; + rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][1] = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].pred_mat_im[ch_idx1][1]; + rot_md_act[pos_idx][b].gd = hBinPostRenderer->rot_md[pos_idx][sf_idx][b].gd; + } + } + } + +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) +#else + pos_idx = 0; +#endif + { + for ( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { +#ifdef API_5MS + index_slot = slot_idx; /* TODO: can be cleaned up */ +#else + index_slot = sf_idx * num_slots + slot_idx; +#endif + fade = ( (float) slot_idx + 1.0f ) / MAX_PARAM_SPATIAL_SUBFRAMES; + fade = min( fade, 1.0f ); + for ( b = 0; b < num_md_bands; b++ ) + { + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + if ( hBinPostRenderer->cf_flag ) + { + pMix_mat_re_prev[ch_idx1] = hBinPostRenderer->mixer_mat_re[pos_idx][b][ch_idx1]; + pMix_mat_im_prev[ch_idx1] = hBinPostRenderer->mixer_mat_im[pos_idx][b][ch_idx1]; + mix_mat_re[ch_idx1][0] = fade * ( rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][0] ) + + ( 1.0f - fade ) * pMix_mat_re_prev[ch_idx1][0]; + mix_mat_re[ch_idx1][1] = fade * ( rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][1] ) + + ( 1.0f - fade ) * pMix_mat_re_prev[ch_idx1][1]; + + mix_mat_im[ch_idx1][0] = fade * ( rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][0] ) + + ( 1.0f - fade ) * pMix_mat_im_prev[ch_idx1][0]; + mix_mat_im[ch_idx1][1] = fade * ( rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][1] ) + + ( 1.0f - fade ) * pMix_mat_im_prev[ch_idx1][1]; + } + else + { + mix_mat_re[ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][0]; + mix_mat_re[ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][1]; + mix_mat_im[ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][0]; + mix_mat_im[ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][1]; + } + } + + brange[0] = pBand_grouping[b]; + brange[1] = pBand_grouping[b + 1]; + for ( b2 = brange[0]; b2 < brange[1]; b2++ ) + { + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + /* Apply prediction matrix */ + IVAS_CMULT_FLOAT( Cldfb_RealBuffer_Ref_Binaural[0][index_slot][b2], + Cldfb_ImagBuffer_Ref_Binaural[0][index_slot][b2], + mix_mat_re[0][ch_idx1], + mix_mat_im[0][ch_idx1], + tmp_re, + tmp_im ); + pred_out_re[ch_idx1] = tmp_re; + pred_out_im[ch_idx1] = tmp_im; + + IVAS_CMULT_FLOAT( Cldfb_RealBuffer_Ref_Binaural[1][index_slot][b2], + Cldfb_ImagBuffer_Ref_Binaural[1][index_slot][b2], + mix_mat_re[1][ch_idx1], + mix_mat_im[1][ch_idx1], + tmp_re, + tmp_im ); + pred_out_re[ch_idx1] += tmp_re; + pred_out_im[ch_idx1] += tmp_im; + } + + + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + Cldfb_RealBuffer_Recons_Binaural[pos_idx][ch_idx1][index_slot][b2] = pred_out_re[ch_idx1]; + Cldfb_ImagBuffer_Recons_Binaural[pos_idx][ch_idx1][index_slot][b2] = pred_out_im[ch_idx1]; +#else + Cldfb_RealBuffer_Ref_Binaural[ch_idx1][index_slot][b2] = pred_out_re[ch_idx1]; + Cldfb_ImagBuffer_Ref_Binaural[ch_idx1][index_slot][b2] = pred_out_im[ch_idx1]; +#endif + } + } + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) +#else + pos_idx = 0; +#endif + { + for ( b = 0; b < num_md_bands; b++ ) + { + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + hBinPostRenderer->mixer_mat_re[pos_idx][b][ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][0]; + hBinPostRenderer->mixer_mat_re[pos_idx][b][ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_re[ch_idx1][1]; + hBinPostRenderer->mixer_mat_im[pos_idx][b][ch_idx1][0] = rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][0]; + hBinPostRenderer->mixer_mat_im[pos_idx][b][ch_idx1][1] = rot_md_act[pos_idx][b].pred_mat_im[ch_idx1][1]; + } + hBinPostRenderer->gd_mem[pos_idx][b] = rot_md_act[pos_idx][b].gd; + } + } + hBinPostRenderer->cf_flag = 1; + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + int16_t num_cldfb_bands; + num_cldfb_bands = CLDFB_NO_CHANNELS_MAX; + for ( slot_idx = 0; slot_idx < num_slots; slot_idx++ ) + { + index_slot = sf_idx * num_slots + slot_idx; + for ( ch_idx1 = 0; ch_idx1 < BINAURAL_CHANNELS; ch_idx1++ ) + { + mvr2r( Cldfb_RealBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES - 1][ch_idx1][index_slot], Cldfb_RealBuffer_Ref_Binaural[ch_idx1][index_slot], num_cldfb_bands ); + mvr2r( Cldfb_ImagBuffer_Recons_Binaural[MAX_HEAD_ROT_POSES - 1][ch_idx1][index_slot], Cldfb_ImagBuffer_Ref_Binaural[ch_idx1][index_slot], num_cldfb_bands ); + } + } + + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + char fname[200] = "recons_out_pos"; + char tag[2]; + tag[0] = (char) ( '0' + pos_idx ); + tag[1] = '\0'; + strcat( fname, tag ); + strcat( fname, ".wav" ); + ivas_log_cldfb2wav_data( + Cldfb_RealBuffer_Recons_Binaural[pos_idx], + Cldfb_ImagBuffer_Recons_Binaural[pos_idx], + hBinPostRenderer->cldfbSynReconsBinDec[pos_idx], + BINAURAL_CHANNELS, + num_cldfb_bands, + 48000, + num_slots, + sf_idx * num_slots, + fname ); + } + } +#endif +#ifndef API_5MS + } +#endif + + pop_wmops(); + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_rend_CldfbSplitPostRendProcessTdIn() + * + * + *-----------------------------------------------------------------------------------------*/ + +static void ivas_rend_CldfbSplitPostRendProcessTdIn( + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, +#ifdef API_5MS + const IVAS_QUATERNION QuaternionPost, +#else + const IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + float output[][L_FRAME48k] ) +{ + int16_t ch_idx, slot_idx, num_cldfb_bands; +#ifdef API_5MS + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#else + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; +#endif + num_cldfb_bands = hBinHrSplitPostRend->cldfbSyn[0]->no_channels; + + /* Implement CLDFB analysis */ + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + for ( slot_idx = 0; +#ifdef API_5MS + slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; +#else + slot_idx < CLDFB_NO_COL_MAX; +#endif + slot_idx++ ) + { + cldfbAnalysis_ts( &( output[ch_idx][num_cldfb_bands * slot_idx] ), + Cldfb_RealBuffer_Binaural[ch_idx][slot_idx], + Cldfb_ImagBuffer_Binaural[ch_idx][slot_idx], + num_cldfb_bands, + hBinHrSplitPostRend->cldfbAna[ch_idx] ); + } + } + + ivas_SplitRenderer_PostRenderer( + hBinHrSplitPostRend, + pMultiBinPoseData, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, +#ifdef API_5MS + QuaternionPost +#else + QuaternionsPost +#endif + ); + + /* Implement CLDFB synthesis */ + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { +#ifdef API_5MS + float *RealBuffer[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + float *ImagBuffer[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; +#else + float *RealBuffer[CLDFB_NO_COL_MAX]; + float *ImagBuffer[CLDFB_NO_COL_MAX]; +#endif + + for ( slot_idx = 0; +#ifdef API_5MS + slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; +#else + slot_idx < CLDFB_NO_COL_MAX; +#endif + slot_idx++ ) + { + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch_idx][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch_idx][slot_idx]; + } + + cldfbSynthesis( RealBuffer, ImagBuffer, &( output[ch_idx][0] ), +#ifdef API_5MS + num_cldfb_bands * CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES, +#else + num_cldfb_bands * CLDFB_NO_COL_MAX, +#endif + hBinHrSplitPostRend->cldfbSyn[ch_idx] ); + } + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_rend_CldfbSplitPostRendProcess() + * + * + *-----------------------------------------------------------------------------------------*/ + +void ivas_rend_CldfbSplitPostRendProcess( + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, +#ifdef API_5MS + const IVAS_QUATERNION QuaternionPost, + float Cldfb_RealBuffer_Binaural[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[][CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX], +#else + const IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES], + float Cldfb_RealBuffer_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], +#endif + float output[][L_FRAME48k], + const int16_t is_cldfb_in ) +{ + int16_t ch_idx, slot_idx, num_cldfb_bands; + + push_wmops( "ivas_rend_CldfbSplitPostRendProcess" ); + + num_cldfb_bands = hBinHrSplitPostRend->cldfbSyn[0]->no_channels; + + if ( is_cldfb_in == 0 ) + { + ivas_rend_CldfbSplitPostRendProcessTdIn( hBinHrSplitPostRend, pMultiBinPoseData, +#ifdef API_5MS + QuaternionPost, +#else + QuaternionsPost, +#endif + output ); + pop_wmops(); + return; + } + + ivas_SplitRenderer_PostRenderer( + hBinHrSplitPostRend, + pMultiBinPoseData, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, +#ifdef API_5MS + QuaternionPost +#else + QuaternionsPost +#endif + ); + + /* Implement CLDFB synthesis */ + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { +#ifdef API_5MS + float *RealBuffer[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + float *ImagBuffer[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) +#else + float *RealBuffer[CLDFB_NO_COL_MAX]; + float *ImagBuffer[CLDFB_NO_COL_MAX]; + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) +#endif + { + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch_idx][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch_idx][slot_idx]; + } + + cldfbSynthesis( RealBuffer, ImagBuffer, &( output[ch_idx][0] ), num_cldfb_bands * CLDFB_NO_COL_MAX +#ifdef API_5MS + / MAX_PARAM_SPATIAL_SUBFRAMES +#endif + , + hBinHrSplitPostRend->cldfbSyn[ch_idx] ); + } + + + pop_wmops(); + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function ivas_init_split_post_rend_handles() + * + * + *-----------------------------------------------------------------------------------------*/ + +void ivas_init_split_post_rend_handles( + SPLIT_POST_REND_WRAPPER *hSplitRendWrapper ) +{ + hSplitRendWrapper->hBinHrSplitPostRend = NULL; + hSplitRendWrapper->hSplitBinLCLDDec = NULL; + hSplitRendWrapper->hLc3plusDec = NULL; + ivas_init_multi_bin_pose_data( &hSplitRendWrapper->multiBinPoseData ); + hSplitRendWrapper->first_good_frame_received = 0; + + return; +} +#endif diff --git a/lib_rend/ivas_splitRendererPre.c b/lib_rend/ivas_splitRendererPre.c new file mode 100644 index 0000000000000000000000000000000000000000..67c02ae60893b2a481c710dd7d9d55edc815ff30 --- /dev/null +++ b/lib_rend/ivas_splitRendererPre.c @@ -0,0 +1,2725 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +#include +#endif +#include "ivas_prot.h" +#include "prot.h" +#include "ivas_cnst.h" +#include "ivas_rom_dec.h" +#include "ivas_prot_rend.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" +#ifdef DBG_WAV_WRITER +#include "string.h" +#endif + + +/*------------------------------------------------------------------------- + * Local functions + * + * + *------------------------------------------------------------------------*/ + +static void ivas_calc_mat_det_2by2_complex( + float in_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float in_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float *det_re, + float *det_im ) +{ + float re1, im1, re2, im2; + + IVAS_CMULT_FLOAT( in_re[0][0], in_im[0][0], in_re[1][1], in_im[1][1], re1, im1 ); + IVAS_CMULT_FLOAT( in_re[0][1], in_im[0][1], in_re[1][0], in_im[1][0], re2, im2 ); + *det_re = re1 - re2; + *det_im = im1 - im2; + + return; +} + + +static int16_t ivas_is_mat_inv_2by2_complex( + float in_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float in_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS] ) +{ + int16_t is_det_zero = 1; + float det, det_re, det_im; + + ivas_calc_mat_det_2by2_complex( in_re, in_im, &det_re, &det_im ); + + det = ( ( det_re * det_re ) + ( det_im * det_im ) ); + + if ( det < EPSILON ) + { + is_det_zero = 0; + } + + return is_det_zero; +} + + +static void ivas_calc_mat_inv_2by2_complex( + float in_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float in_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float out_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float out_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS] ) +{ + float det_re, det_im; + float re, im, det; + + ivas_calc_mat_det_2by2_complex( in_re, in_im, &det_re, &det_im ); + + det = ( det_re * det_re ) + ( det_im * det_im ); + +#ifdef DEBUGGING + /* assert to catch cases when input is singular matrix */ + assert( det > 0 ); +#endif + det = 1 / det; + + IVAS_CMULT_FLOAT( det_re, -det_im, in_re[1][1], in_im[1][1], re, im ); + out_re[0][0] = re * det; + out_im[0][0] = im * det; + + IVAS_CMULT_FLOAT( det_re, -det_im, in_re[0][1], in_im[0][1], re, im ); + out_re[0][1] = -re * det; + out_im[0][1] = -im * det; + + IVAS_CMULT_FLOAT( det_re, -det_im, in_re[1][0], in_im[1][0], re, im ); + out_re[1][0] = -re * det; + out_im[1][0] = -im * det; + + IVAS_CMULT_FLOAT( det_re, -det_im, in_re[0][0], in_im[0][0], re, im ); + out_re[1][1] = re * det; + out_im[1][1] = im * det; + + return; +} + + +static void ComputePredMat( + float cov_ii_re[][BINAURAL_CHANNELS], + float cov_ii_im[][BINAURAL_CHANNELS], + float cov_io_re[][BINAURAL_CHANNELS], + float cov_io_im[][BINAURAL_CHANNELS], + float pred_mat_re[][BINAURAL_CHANNELS], + float pred_mat_im[][BINAURAL_CHANNELS], + int16_t num_chs, + int16_t real_only ) +{ + float cov_ii_local_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_ii_inv_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_ii_inv_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float trace_cov; + int16_t i, j; + + trace_cov = 0.0f; + for ( i = 0; i < num_chs; i++ ) + { + trace_cov += cov_ii_re[i][i]; + } + + trace_cov = max( 0.0f, trace_cov ); + + if ( trace_cov < EPSILON ) + { + for ( i = 0; i < num_chs; i++ ) + { + /* protection from cases when variance of ref channels is very small */ + set_zero( pred_mat_re[i], BINAURAL_CHANNELS ); + set_zero( pred_mat_im[i], BINAURAL_CHANNELS ); + } + return; + } + + for ( i = 0; i < num_chs; i++ ) + { + mvr2r( cov_ii_re[i], cov_ii_local_re[i], num_chs ); + } + + for ( i = 0; i < num_chs; i++ ) + { + cov_ii_local_re[i][i] = cov_ii_re[i][i] + ( trace_cov * 0.0001f ); + } + + if ( ivas_is_mat_inv_2by2_complex( cov_ii_local_re, cov_ii_im ) ) + { + ivas_calc_mat_inv_2by2_complex( cov_ii_local_re, cov_ii_im, cov_ii_inv_re, cov_ii_inv_im ); + ivas_mat_mult_2by2_complex( cov_ii_inv_re, cov_ii_inv_im, cov_io_re, cov_io_im, pred_mat_re, pred_mat_im ); + } + else + { + int16_t max_var_idx; + for ( i = 0; i < num_chs; i++ ) + { + set_zero( pred_mat_re[i], BINAURAL_CHANNELS ); + set_zero( pred_mat_im[i], BINAURAL_CHANNELS ); + } + + max_var_idx = 0; + if ( cov_ii_local_re[1][1] > cov_ii_local_re[0][0] ) + { + max_var_idx = 1; + } + + if ( cov_ii_local_re[max_var_idx][max_var_idx] > EPSILON ) + { + for ( j = 0; j < num_chs; j++ ) + { + pred_mat_re[max_var_idx][j] = cov_io_re[max_var_idx][j] / cov_ii_local_re[max_var_idx][max_var_idx]; + pred_mat_im[max_var_idx][j] = cov_io_im[max_var_idx][j] / cov_ii_local_re[max_var_idx][max_var_idx]; + } + } + } + + if ( real_only ) + { + for ( i = 0; i < num_chs; i++ ) + { + set_zero( pred_mat_im[i], BINAURAL_CHANNELS ); + } + } + + return; +} + + +static void ComputePostPredCov( + float cov_ii_re[][BINAURAL_CHANNELS], + float cov_ii_im[][BINAURAL_CHANNELS], + float pred_mat_re[][BINAURAL_CHANNELS], + float pred_mat_im[][BINAURAL_CHANNELS], + float postpred_cov_re[][BINAURAL_CHANNELS], + float postpred_cov_im[][BINAURAL_CHANNELS], + int16_t num_chs ) +{ + int16_t i, j; + float dmx_mat_conj_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float dmx_mat_conj_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float temp_mat_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float temp_mat_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + + assert( num_chs == BINAURAL_CHANNELS ); + for ( i = 0; i < num_chs; i++ ) + { + for ( j = 0; j < num_chs; j++ ) + { + dmx_mat_conj_re[i][j] = pred_mat_re[j][i]; + dmx_mat_conj_im[i][j] = -pred_mat_im[j][i]; + + temp_mat_re[i][j] = pred_mat_re[i][j]; + temp_mat_im[i][j] = pred_mat_im[i][j]; + } + set_zero( postpred_cov_re[i], BINAURAL_CHANNELS ); + set_zero( postpred_cov_im[i], BINAURAL_CHANNELS ); + } + + /* 2x2 mult */ + ivas_mat_mult_2by2_complex( dmx_mat_conj_re, dmx_mat_conj_im, cov_ii_re, cov_ii_im, temp_mat_re, temp_mat_im ); + ivas_mat_mult_2by2_complex( temp_mat_re, temp_mat_im, pred_mat_re, pred_mat_im, postpred_cov_re, postpred_cov_im ); + + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + for ( j = 0; j < i; j++ ) + { + postpred_cov_re[i][j] = postpred_cov_re[j][i]; + postpred_cov_im[i][j] = -postpred_cov_im[j][i]; + } + postpred_cov_im[i][i] = 0; + } + + return; +} + + +static void ComputeBandedCrossCov( + float Cldfb_RealBuffer1[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer1[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t ch_start_idx1, + float Cldfb_RealBuffer2[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer2[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t ch_start_idx2, + float out_cov_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + float out_cov_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + const int16_t num_chs, + const int16_t *pBand_grouping, + const int16_t num_slots, + const int16_t start_slot_idx, + const int16_t md_band_idx, + const int16_t real_only ) +{ + int16_t sf, cldfb_band_idx, ch_idx1, ch_idx2; + int16_t brange[2]; + + for ( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + set_f( out_cov_re[ch_idx1], 0.0f, num_chs ); + set_f( out_cov_im[ch_idx1], 0.0f, num_chs ); + } + + brange[0] = pBand_grouping[md_band_idx]; + brange[1] = pBand_grouping[md_band_idx + 1]; + + for ( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + for ( ch_idx2 = 0; ch_idx2 < num_chs; ch_idx2++ ) + { + if ( real_only == 0 ) + { + for ( sf = start_slot_idx; sf < start_slot_idx + num_slots; sf++ ) + { + for ( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + out_cov_re[ch_idx1][ch_idx2] += + Cldfb_RealBuffer1[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx] * Cldfb_RealBuffer2[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] + + Cldfb_ImagBuffer1[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx] * Cldfb_ImagBuffer2[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx]; + + out_cov_im[ch_idx1][ch_idx2] += + Cldfb_RealBuffer1[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx] * Cldfb_ImagBuffer2[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] - + Cldfb_ImagBuffer1[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx] * Cldfb_RealBuffer2[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx]; + } + } + } + else + { + for ( sf = start_slot_idx; sf < start_slot_idx + num_slots; sf++ ) + { + for ( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + out_cov_re[ch_idx1][ch_idx2] += + Cldfb_RealBuffer1[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx] * Cldfb_RealBuffer2[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx] + + Cldfb_ImagBuffer1[ch_start_idx1 + ch_idx1][sf][cldfb_band_idx] * Cldfb_ImagBuffer2[ch_start_idx2 + ch_idx2][sf][cldfb_band_idx]; + + out_cov_im[ch_idx1][ch_idx2] = 0.0f; + } + } + } + } + } + + return; +} + + +static void ComputeBandedCov( + float Cldfb_RealBuffer[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_ImagBuffer[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t ch_start_idx, + float out_cov_re[][BINAURAL_CHANNELS], + float out_cov_im[][BINAURAL_CHANNELS], + const int16_t num_chs, + const int16_t *pBand_grouping, + const int16_t num_slots, + const int16_t start_slot_idx, + const int16_t md_band_idx, + const int16_t real_only ) +{ + int16_t sf, cldfb_band_idx, ch_idx1, ch_idx2; + int16_t brange[2]; + + for ( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + set_f( out_cov_re[ch_idx1], 0.0f, num_chs ); + set_f( out_cov_im[ch_idx1], 0.0f, num_chs ); + } + + brange[0] = pBand_grouping[md_band_idx]; + brange[1] = pBand_grouping[md_band_idx + 1]; + + for ( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + for ( ch_idx2 = 0; ch_idx2 <= ch_idx1; ch_idx2++ ) + { + if ( ( ch_idx2 != ch_idx1 ) && ( real_only == 0 ) ) + { + for ( sf = start_slot_idx; sf < start_slot_idx + num_slots; sf++ ) + { + for ( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + out_cov_re[ch_idx1][ch_idx2] += + Cldfb_RealBuffer[ch_start_idx + ch_idx1][sf][cldfb_band_idx] * Cldfb_RealBuffer[ch_start_idx + ch_idx2][sf][cldfb_band_idx] + + Cldfb_ImagBuffer[ch_start_idx + ch_idx1][sf][cldfb_band_idx] * Cldfb_ImagBuffer[ch_start_idx + ch_idx2][sf][cldfb_band_idx]; + + out_cov_im[ch_idx1][ch_idx2] += + Cldfb_RealBuffer[ch_start_idx + ch_idx1][sf][cldfb_band_idx] * Cldfb_ImagBuffer[ch_start_idx + ch_idx2][sf][cldfb_band_idx] - + Cldfb_ImagBuffer[ch_start_idx + ch_idx1][sf][cldfb_band_idx] * Cldfb_RealBuffer[ch_start_idx + ch_idx2][sf][cldfb_band_idx]; + } + } + } + else + { + for ( sf = start_slot_idx; sf < start_slot_idx + num_slots; sf++ ) + { + for ( cldfb_band_idx = brange[0]; cldfb_band_idx < brange[1]; cldfb_band_idx++ ) + { + out_cov_re[ch_idx1][ch_idx2] += + Cldfb_RealBuffer[ch_start_idx + ch_idx1][sf][cldfb_band_idx] * Cldfb_RealBuffer[ch_start_idx + ch_idx2][sf][cldfb_band_idx] + + Cldfb_ImagBuffer[ch_start_idx + ch_idx1][sf][cldfb_band_idx] * Cldfb_ImagBuffer[ch_start_idx + ch_idx2][sf][cldfb_band_idx]; + + out_cov_im[ch_idx1][ch_idx2] = 0.0f; + } + } + } + } + } + + for ( ch_idx1 = 0; ch_idx1 < num_chs; ch_idx1++ ) + { + for ( ch_idx2 = ch_idx1 + 1; ch_idx2 < num_chs; ch_idx2++ ) + { + out_cov_re[ch_idx1][ch_idx2] = out_cov_re[ch_idx2][ch_idx1]; + out_cov_im[ch_idx1][ch_idx2] = -out_cov_im[ch_idx2][ch_idx1]; + } + } + + return; +} + + +static float GetNormFact( + float cov_ii_re[][BINAURAL_CHANNELS], + float cov_ii_im[][BINAURAL_CHANNELS], + float cov_io_re[][BINAURAL_CHANNELS], + float cov_io_im[][BINAURAL_CHANNELS], + float cov_oo_re[][BINAURAL_CHANNELS] ) +{ + int16_t i, j; + float norm_fact, abs_val; + + norm_fact = 0.0f; + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + IVAS_CALCULATE_ABS( cov_ii_re[i][j], cov_ii_im[i][j], abs_val ); + norm_fact = max( norm_fact, abs_val ); + + IVAS_CALCULATE_ABS( cov_io_re[i][j], cov_io_im[i][j], abs_val ); + norm_fact = max( norm_fact, abs_val ); + + IVAS_CALCULATE_RABS( cov_oo_re[i][j], abs_val ); + norm_fact = max( norm_fact, abs_val ); + } + } + + norm_fact = ( norm_fact > EPSILON ) ? norm_fact : 1.0f; + + norm_fact = PCM16_TO_FLT_FAC / norm_fact; + + return norm_fact; +} + + +static void ivas_split_rend_huffman_encode( + ivas_split_rend_huffman_cfg_t *huff_cfg, + int16_t in, + int32_t *hcode, + int32_t *hlen ) +{ + int32_t min_sym_val; + const int32_t *codebook; + + min_sym_val = huff_cfg->codebook[0]; + + codebook = &huff_cfg->codebook[3 * ( in - min_sym_val )]; + *hlen = codebook[1]; + *hcode = codebook[2]; + + return; +} + + +static void ivas_split_rend_quant_md( + BIN_HR_SPLIT_REND_MD_HANDLE hMd, + IVAS_SPLIT_REND_POSE_TYPE pose_type, + int16_t real_only, + float fix_pos_rot_mat[][BINAURAL_CHANNELS] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + float pred_1byquantstep +#endif +) +{ + int16_t ch1, ch2; + int16_t gd_idx_min; + float sign, quant_val; + + if ( pose_type == PRED_ONLY +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + || pose_type == PRED_ROLL_ONLY +#endif + ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + float onebyquantstep; +#endif + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + onebyquantstep = pred_1byquantstep; +#endif + if ( real_only == 1 ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + sign = ( hMd->pred_mat_re[ch1][ch2] >= 0.0f ) ? 1.0f : -1.0f; + IVAS_CALCULATE_ABS( hMd->pred_mat_re[ch1][ch2], hMd->pred_mat_im[ch1][ch2], hMd->pred_mat_re[ch1][ch2] ); + hMd->pred_mat_re[ch1][ch2] *= sign; + hMd->pred_mat_im[ch1][ch2] = 0.0f; + } + } + } + + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + quant_val = hMd->pred_mat_re[ch1][ch2] - fix_pos_rot_mat[ch1][ch2]; + quant_val = min( IVAS_SPLIT_REND_PRED_MAX_VAL, max( quant_val, IVAS_SPLIT_REND_PRED_MIN_VAL ) ); +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + hMd->pred_mat_re_idx[ch1][ch2] = (int16_t) roundf( onebyquantstep * quant_val ); +#else + hMd->pred_mat_re_idx[ch1][ch2] = (int16_t) roundf( IVAS_SPLIT_REND_PRED_1BYQ_STEP * quant_val ); +#endif + } + } + + if ( real_only == 0 ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + quant_val = min( IVAS_SPLIT_REND_PRED_MAX_VAL, max( hMd->pred_mat_im[ch1][ch2], IVAS_SPLIT_REND_PRED_MIN_VAL ) ); +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + hMd->pred_mat_im_idx[ch1][ch2] = (int16_t) roundf( onebyquantstep * quant_val ); +#else + hMd->pred_mat_im_idx[ch1][ch2] = (int16_t) roundf( IVAS_SPLIT_REND_PRED_1BYQ_STEP * quant_val ); +#endif + // hMd->pred_mat_im[ch1][ch2] = hMd->pred_mat_im_idx[ch1][ch2] * IVAS_SPLIT_REND_PRED_Q_STEP; + } + } + } + } + else if ( pose_type == COM_GAIN_ONLY ) + { + quant_val = min( IVAS_SPLIT_REND_D_MAX_VAL, max( hMd->gd, IVAS_SPLIT_REND_D_MIN_VAL ) ); + gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_D_1BYQ_STEP * IVAS_SPLIT_REND_D_MIN_VAL ); + hMd->gd_idx = (int16_t) roundf( IVAS_SPLIT_REND_D_1BYQ_STEP * quant_val ); + hMd->gd = hMd->gd_idx * IVAS_SPLIT_REND_D_Q_STEP; + hMd->gd_idx = hMd->gd_idx - gd_idx_min; + } + else if ( pose_type == LR_GAIN_ONLY ) + { + quant_val = min( IVAS_SPLIT_REND_PITCH_G_MAX_VAL, max( hMd->gd, IVAS_SPLIT_REND_PITCH_G_MIN_VAL ) ); + gd_idx_min = (int16_t) roundf( IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP * IVAS_SPLIT_REND_PITCH_G_MIN_VAL ); + hMd->gd_idx = (int16_t) roundf( IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP * quant_val ); + hMd->gd_idx = hMd->gd_idx - gd_idx_min; + + quant_val = min( IVAS_SPLIT_REND_PITCH_G_MAX_VAL, max( hMd->gd2, IVAS_SPLIT_REND_PITCH_G_MIN_VAL ) ); + hMd->gd2_idx = (int16_t) roundf( IVAS_SPLIT_REND_PITCH_G_1BYQ_STEP * quant_val ); + hMd->gd2_idx = hMd->gd2_idx - gd_idx_min; + } + + return; +} + + +static void ComputeCoeffs( + float cov_ii_re[][BINAURAL_CHANNELS], + float cov_ii_im[][BINAURAL_CHANNELS], + float cov_io_re[][BINAURAL_CHANNELS], + float cov_io_im[][BINAURAL_CHANNELS], + float cov_oo_re[][BINAURAL_CHANNELS], + BIN_HR_SPLIT_REND_MD_HANDLE hMd, + const IVAS_SPLIT_REND_POSE_TYPE pose_type, + const int16_t real_only ) +{ + float postpred_cov_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float postpred_cov_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_ii_norm_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_ii_norm_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_io_norm_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_io_norm_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_oo_norm_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float sigma_d, gd, gd2, gl2, gr2, cov_norm_fact; + int16_t i, j; + + if ( pose_type == PITCH_ONLY ) + { + float gd_tmp[BINAURAL_CHANNELS]; + + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + gd_tmp[i] = cov_ii_re[i][i]; + if ( gd_tmp[i] < EPSILON ) + { + gd_tmp[i] = 1.0f; + } + else + { + gd_tmp[i] = ( cov_oo_re[i][i] ) / gd_tmp[i]; + gd_tmp[i] = sqrtf( gd_tmp[i] ); + } + } + hMd->gd = gd_tmp[0]; + hMd->gd2 = gd_tmp[1]; + } + else + { + cov_norm_fact = GetNormFact( cov_ii_re, cov_ii_im, cov_io_re, cov_io_im, cov_oo_re ); + + /* normalize the covariance */ + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + cov_ii_norm_re[i][j] = cov_ii_re[i][j] * cov_norm_fact; + cov_ii_norm_im[i][j] = cov_ii_im[i][j] * cov_norm_fact; + cov_io_norm_re[i][j] = cov_io_re[i][j] * cov_norm_fact; + cov_io_norm_im[i][j] = cov_io_im[i][j] * cov_norm_fact; + cov_oo_norm_re[i][j] = cov_oo_re[i][j] * cov_norm_fact; + } + } + + ComputePredMat( cov_ii_norm_re, cov_ii_norm_im, cov_io_norm_re, cov_io_norm_im, hMd->pred_mat_re, hMd->pred_mat_im, BINAURAL_CHANNELS, real_only ); + + /*TODO : change this function to real only as thats what is needed*/ + ComputePostPredCov( cov_ii_norm_re, cov_ii_norm_im, hMd->pred_mat_re, hMd->pred_mat_im, postpred_cov_re, postpred_cov_im, BINAURAL_CHANNELS ); + + /* normalize everything to +-1 range */ + gd = 1.0f / ( PCM16_TO_FLT_FAC ); + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + { + postpred_cov_re[i][j] *= gd; + cov_ii_norm_re[i][j] = cov_ii_norm_re[i][j] * gd; + cov_oo_norm_re[i][j] = cov_oo_norm_re[i][j] * gd; + } + } + +#if 0 + if ( 1 ) + { +#endif + gd2 = 0.0f; + sigma_d = 0.0f; + hMd->gd = 0.0f; +#if 0 + } + else + { + + sigma_d = cov_ii_norm_re[0][0] + cov_ii_norm_re[1][1] + cov_ii_norm_re[0][1] + cov_ii_norm_re[1][0] + EPSILON; + + rho_hat = max( EPSILON, sqrtf( postpred_cov_re[0][0] * postpred_cov_re[1][1] ) ); + rho_hat = postpred_cov_re[0][1] / rho_hat; + rho = max( EPSILON, sqrtf( cov_oo_norm_re[0][0] * cov_oo_norm_re[1][1] ) ); + rho = cov_oo_norm_re[0][1] / rho; + rho_hat = min( max( rho_hat, -0.9999f ), 0.9999f ); + rho = min( max( rho, -0.9999f ), 0.9999f ); + + // Compute decorrelator gain : gd2 = 0; + gd = 0; + gd2 = 0; + + aa = ( sigma_d * sigma_d ) * ( ( rho_hat * rho_hat ) - 1 ) + EPSILON; + bb = -( rho_hat * rho_hat ) * sigma_d * ( cov_oo_norm_re[0][0] + cov_oo_norm_re[1][1] ); + cc = ( rho_hat * rho_hat ) * cov_oo_norm_re[0][0] * cov_oo_norm_re[1][1]; + cc -= cov_oo_norm_re[0][1] * cov_oo_norm_re[0][1]; + + sign = +1.0f; + if ( rho < ( rho_hat - 0.0001 ) ) + { + bb -= 2 * sigma_d * cov_oo_norm_re[0][1]; + sign = -1.0f; + } + else if ( rho > ( rho_hat + 0.0001 ) ) + { + bb += 2 * sigma_d * cov_oo_norm_re[0][1]; + } + dd = bb * bb - ( 4 * aa * cc ); + if ( dd >= 0 ) + { + float gd2_1, gd2_2; + gd2_1 = ( -bb + sqrtf( dd ) ) / ( 2 * aa ); + gd2_2 = ( -bb - sqrtf( dd ) ) / ( 2 * aa ); + if ( ( gd2_1 >= 0 ) && ( gd2_2 >= 0 ) ) + { + gd2 = min( gd2_1, gd2_2 ); + } + else + { + gd2 = max( 0, max( gd2_1, gd2_2 ) ); + } + gd = sign * sqrtf( gd2 ); + } + + gd = min( IVAS_SPLIT_REND_D_MAX_VAL, max( gd, IVAS_SPLIT_REND_D_MIN_VAL ) ); + hMd->gd = SPLIT_REND_DECOR_ALPHA * gd + ( 1 - SPLIT_REND_DECOR_ALPHA ) * hMd->gd; + gd2 = min( gd2, cov_oo_norm_re[0][0] / sigma_d ); + gd2 = min( gd2, cov_oo_norm_re[1][1] / sigma_d ); + } +#endif /* 0 */ + + if ( postpred_cov_re[0][0] > EPSILON ) + { + gl2 = ( cov_oo_norm_re[0][0] - ( gd2 * sigma_d ) ) / max( EPSILON, postpred_cov_re[0][0] ); + gl2 = max( gl2, 1.0f ); + gl2 = sqrtf( gl2 ); + } + else + { + gl2 = 1.0f; + } + + if ( postpred_cov_re[1][1] > EPSILON ) + { + gr2 = ( cov_oo_norm_re[1][1] - ( gd2 * sigma_d ) ) / max( EPSILON, postpred_cov_re[1][1] ); + gr2 = max( gr2, 1.0f ); + gr2 = sqrtf( gr2 ); + } + else + { + gr2 = 1.0f; + } + + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + hMd->pred_mat_re[i][0] *= gl2; + hMd->pred_mat_re[i][1] *= gr2; + } + + if ( real_only == 0 ) + { + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + hMd->pred_mat_im[i][0] *= gl2; + hMd->pred_mat_im[i][1] *= gr2; + } + } + } + + return; +} + + +static void get_base2_bits( + const BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int16_t num_subframes, + const int16_t num_quant_strats, + const int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + const int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], +#endif + const int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + const int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + const int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + const int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int32_t base2bits[IVAS_SPLIT_REND_NUM_QUANT_STRATS] ) +{ +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_roll_bits; + int16_t d_gain_bits, pitch_gain_bits, pose_idx, q; + int16_t pred_yaw_bits[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; +#else + int16_t pred_bits, d_gain_bits, pitch_gain_bits, pose_idx, q; +#endif + IVAS_SPLIT_REND_POSE_TYPE pose_type; + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + for ( q = 0; q < num_quant_strats; q++ ) + { + pred_yaw_bits[q] = (int16_t) ceilf( log2f( pred_quant_pnts_yaw[q] ) ); + } + pred_roll_bits = (int16_t) ceilf( log2f( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS ) ); +#else + pred_bits = (int16_t) ceilf( log2f( IVAS_SPLIT_REND_PRED_QUANT_PNTS ) ); +#endif + d_gain_bits = (int16_t) ceilf( log2f( IVAS_SPLIT_REND_D_QUANT_PNTS ) ); + pitch_gain_bits = d_gain_bits; + + for ( q = 0; q < num_quant_strats; q++ ) + { + base2bits[q] = 0; + } + + for ( q = 0; q < num_quant_strats; q++ ) + { + for ( pose_idx = 0; pose_idx < pMultiBinPoseData->num_poses - 1; pose_idx++ ) + { + pose_type = hBinHrSplitPreRend->pose_type[pose_idx]; + if ( pose_type == ANY_YAW ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + base2bits[q] += pred_yaw_bits[q] * pred_real_bands_yaw[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; + base2bits[q] += pred_yaw_bits[q] * pred_imag_bands_yaw[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; +#else + base2bits[q] += pred_bits * pred_real_bands_yaw[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; + base2bits[q] += pred_bits * pred_imag_bands_yaw[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; +#endif + base2bits[q] += d_gain_bits * d_bands_yaw[q] * num_subframes; + } + else if ( pose_type == PITCH_ONLY ) + { + base2bits[q] += pitch_gain_bits * bands_pitch[q] * num_subframes; + base2bits[q] += pitch_gain_bits * bands_pitch[q] * num_subframes; + } + else + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + base2bits[q] += pred_roll_bits * pred_real_bands_roll[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; + base2bits[q] += pred_roll_bits * pred_imag_bands_roll[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; +#else + base2bits[q] += pred_bits * pred_real_bands_roll[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; + base2bits[q] += pred_bits * pred_imag_bands_roll[q] * num_subframes * BINAURAL_CHANNELS * BINAURAL_CHANNELS; +#endif + } + } + } + + return; +} + + +static void ivas_SplitRenderer_code_md_base2( + const BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int16_t num_subframes, + const int16_t pred_real_bands_yaw, + const int16_t pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + const int16_t pred_quant_pnts_yaw, +#endif + const int16_t d_bands_yaw, + const int16_t bands_pitch, + const int16_t pred_real_bands_roll, + const int16_t pred_imag_bands_roll, + ivas_split_rend_bits_t *pBits ) +{ + int16_t pos_idx, b, ch1, ch2, sf_idx; + int16_t min_pred_idx, min_gd_idx, min_p_gd_idx, pred_code_len, gd_code_len, p_gd_code_len, num_poses; + int16_t min_pred_roll_idx, pred_roll_code_len; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_cb_idx; +#endif + int32_t code; + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPreRend->huff_cfg; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + if ( pred_quant_pnts_yaw == IVAS_SPLIT_REND_PRED_63QUANT_PNTS ) + { + pred_cb_idx = 1; + } + else + { + pred_cb_idx = 0; + } + min_pred_idx = (int16_t) pHuff_cfg->pred[pred_cb_idx].codebook[0]; + min_pred_roll_idx = (int16_t) pHuff_cfg->pred_roll.codebook[0]; +#else + min_pred_idx = (int16_t) pHuff_cfg->pred.codebook[0]; + min_pred_roll_idx = min_pred_idx; +#endif + min_gd_idx = (int16_t) pHuff_cfg->gd.codebook[0]; + min_p_gd_idx = (int16_t) pHuff_cfg->p_gd.codebook[0]; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_code_len = pHuff_cfg->pred_base2_code_len[pred_cb_idx]; + pred_roll_code_len = pHuff_cfg->pred_roll_base2_code_len; +#else + pred_code_len = pHuff_cfg->pred_base2_code_len; + pred_roll_code_len = pred_code_len; +#endif + gd_code_len = pHuff_cfg->gd_base2_code_len; + p_gd_code_len = pHuff_cfg->p_gd_base2_code_len; + + num_poses = pMultiBinPoseData->num_poses; + + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_YAW ) + { + 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 = hMd->pred_mat_re_idx[ch1][ch2] - min_pred_idx; + ivas_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 = hMd->pred_mat_im_idx[ch1][ch2] - min_pred_idx; + ivas_split_rend_bitstream_write_int32( pBits, code, pred_code_len ); + } + } + } + for ( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + code = hMd->gd_idx - min_gd_idx; + ivas_split_rend_bitstream_write_int32( pBits, code, gd_code_len ); + } + } + else if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + code = hMd->gd_idx - min_p_gd_idx; + ivas_split_rend_bitstream_write_int32( pBits, code, p_gd_code_len ); + + code = hMd->gd2_idx - min_p_gd_idx; + ivas_split_rend_bitstream_write_int32( pBits, code, p_gd_code_len ); + } + } + else + { + 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 = hMd->pred_mat_re_idx[ch1][ch2] - min_pred_roll_idx; + ivas_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 = hMd->pred_mat_im_idx[ch1][ch2] - min_pred_roll_idx; + ivas_split_rend_bitstream_write_int32( pBits, code, pred_roll_code_len ); + } + } + } + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + static int16_t num_bits = 0; + static int16_t cntr = 0; + float fnum_bits; + + cntr++; + + num_bits += pBits->bits_written; + /* collect bits for every second */ + if ( cntr == 50 ) + { + cntr = 0; + fnum_bits = (float) num_bits / 1000.0f; + dbgwrite_txt( &fnum_bits, 1, "split_rend_MD_bitrate.txt", "MD bitrate (kbps)" ); + num_bits = 0; + } + } +#endif + return; +} + + +static void ivas_SplitRenderer_code_md_huff( + const BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const int16_t num_subframes, + const int16_t pred_real_bands_yaw, + const int16_t pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + const int16_t pred_quant_pnts_yaw, +#endif + const int16_t d_bands_yaw, + const int16_t bands_pitch, + const int16_t pred_real_bands_roll, + const int16_t pred_imag_bands_roll, + ivas_split_rend_bits_t *pBits ) +{ + int16_t pos_idx, b, ch1, ch2, sf_idx, num_poses; + int16_t sym_adj_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t min_pred_idx, max_pred_idx; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t min_pred_roll_idx, max_pred_roll_idx, pred_cb_idx; +#endif + int32_t code, len; + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg; + + pHuff_cfg = &hBinHrSplitPreRend->huff_cfg; + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + if ( pred_quant_pnts_yaw == IVAS_SPLIT_REND_PRED_63QUANT_PNTS ) + { + pred_cb_idx = 1; + } + else + { + pred_cb_idx = 0; + } + + min_pred_idx = (int16_t) pHuff_cfg->pred[pred_cb_idx].codebook[0]; + max_pred_idx = (int16_t) pHuff_cfg->pred[pred_cb_idx].codebook[( pred_quant_pnts_yaw - 1 ) * 3]; + min_pred_roll_idx = (int16_t) pHuff_cfg->pred_roll.codebook[0]; + max_pred_roll_idx = (int16_t) pHuff_cfg->pred_roll.codebook[( IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS - 1 ) * 3]; +#else + min_pred_idx = (int16_t) pHuff_cfg->pred.codebook[0]; + max_pred_idx = (int16_t) pHuff_cfg->pred.codebook[( IVAS_SPLIT_REND_PRED_QUANT_PNTS - 1 ) * 3]; +#endif + + num_poses = pMultiBinPoseData->num_poses; + + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_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++ ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + ivas_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch2], &code, &len ); +#else + ivas_split_rend_huffman_encode( &pHuff_cfg->pred, sym_adj_idx[ch1][ch2], &code, &len ); +#endif + ivas_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]; + ivas_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++ ) + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + ivas_split_rend_huffman_encode( &pHuff_cfg->pred[pred_cb_idx], sym_adj_idx[ch1][ch2], &code, &len ); +#else + ivas_split_rend_huffman_encode( &pHuff_cfg->pred, sym_adj_idx[ch1][ch2], &code, &len ); +#endif + ivas_split_rend_bitstream_write_int32( pBits, code, len ); + } + } + } + for ( b = 0; b < d_bands_yaw; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_huffman_encode( &pHuff_cfg->gd, hMd->gd_idx, &code, &len ); + ivas_split_rend_bitstream_write_int32( pBits, code, len ); + } + } + else if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_huffman_encode( &pHuff_cfg->p_gd, hMd->gd_idx, &code, &len ); + ivas_split_rend_bitstream_write_int32( pBits, code, len ); + + ivas_split_rend_huffman_encode( &pHuff_cfg->p_gd, hMd->gd2_idx, &code, &len ); + ivas_split_rend_bitstream_write_int32( pBits, code, len ); + } + } + else + { +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + for ( b = 0; b < pred_real_bands_roll; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_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++ ) + { + ivas_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch2], &code, &len ); + ivas_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]; + ivas_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++ ) + { + ivas_split_rend_huffman_encode( &pHuff_cfg->pred_roll, sym_adj_idx[ch1][ch2], &code, &len ); + ivas_split_rend_bitstream_write_int32( pBits, code, len ); + } + } + } +#else + for ( b = 0; b < pred_real_bands_roll; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_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++ ) + { + ivas_split_rend_huffman_encode( &pHuff_cfg->pred, sym_adj_idx[ch1][ch2], &code, &len ); + ivas_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]; + ivas_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++ ) + { + ivas_split_rend_huffman_encode( &pHuff_cfg->pred, sym_adj_idx[ch1][ch2], &code, &len ); + ivas_split_rend_bitstream_write_int32( pBits, code, len ); + } + } + } +#endif + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + static int16_t num_bits = 0; + static int16_t cntr = 0; + float fnum_bits; + + cntr++; + num_bits += pBits->bits_written; + /* collect bits for every second */ + if ( cntr == 50 ) + { + cntr = 0; + fnum_bits = (float) num_bits / 1000.0f; + dbgwrite_txt( &fnum_bits, 1, "split_rend_MD_bitrate.txt", "MD bitrate (kbps)" ); + num_bits = 0; + } + } +#endif + return; +} + + +static void ivas_SplitRenderer_quant_code( + const BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, +#ifdef API_5MS + const IVAS_QUATERNION headPosition, +#else + const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + ivas_split_rend_bits_t *pBits, + const int16_t low_res_pre_rend_rot, + const int32_t target_md_bits ) +{ + int16_t num_complex_bands, q, num_subframes, sf_idx, pos_idx, b, num_quant_strats; + int32_t overhead_bits, quant_strat_bits, huff_bits, start_bit; + int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + int32_t base2bits[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; + float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS]; +#endif + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + + if ( low_res_pre_rend_rot ) + { + num_subframes = 1; + } + else + { + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; + } + + overhead_bits = pBits->bits_written; + + ivas_split_rend_bitstream_write_int32( pBits, pMultiBinPoseData->dof, IVAS_SPLIT_REND_DOF_BITS ); + ivas_split_rend_bitstream_write_int32( pBits, pMultiBinPoseData->hq_mode, IVAS_SPLIT_REND_HQ_MODE_BITS ); + ivas_split_rend_bitstream_write_int32( pBits, (int32_t) pMultiBinPoseData->rot_axis, IVAS_SPLIT_REND_ROT_AXIS_BITS ); + + /* code ref pose*/ + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + int16_t angle; + IVAS_QUATERNION head_pos_euler; + +#ifdef API_5MS + Quat2EulerDegree( headPosition, &head_pos_euler.z, &head_pos_euler.y, &head_pos_euler.x ); +#else + Quat2EulerDegree( headPositions[sf_idx], &head_pos_euler.z, &head_pos_euler.y, &head_pos_euler.x ); +#endif + angle = (int16_t) roundf( head_pos_euler.x ); + angle += 180; + ivas_split_rend_bitstream_write_int32( pBits, angle, IVAS_SPLIT_REND_HEAD_POSE_BITS ); + + angle = (int16_t) roundf( head_pos_euler.y ); + angle += 180; + ivas_split_rend_bitstream_write_int32( pBits, angle, IVAS_SPLIT_REND_HEAD_POSE_BITS ); + + angle = (int16_t) roundf( head_pos_euler.z ); + angle += 180; + + ivas_split_rend_bitstream_write_int32( pBits, angle, IVAS_SPLIT_REND_HEAD_POSE_BITS ); + } + + ivas_split_rend_get_quant_params( MAX_SPLIT_REND_MD_BANDS, pred_real_bands_yaw, pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw, pred_quantstep_yaw, pred_1byquantstep_yaw, +#endif + d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, &num_quant_strats, &num_complex_bands ); + + quant_strat_bits = (int32_t) ceilf( log2f( num_quant_strats ) ); + + overhead_bits = pBits->bits_written - overhead_bits + quant_strat_bits + 1; /* 1 for base2 vs huff */ + + get_base2_bits( + hBinHrSplitPreRend, pMultiBinPoseData, num_subframes, num_quant_strats, pred_real_bands_yaw, pred_imag_bands_yaw, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw, +#endif + d_bands_yaw, bands_pitch, pred_real_bands_roll, pred_imag_bands_roll, base2bits ); + + for ( q = 0; q < num_quant_strats; q++ ) + { + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_imag_bands_yaw[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + + ivas_split_rend_quant_md( hMd, PRED_ONLY, 0, hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + pred_1byquantstep_yaw[q] +#endif + ); + } + for ( ; b < pred_real_bands_yaw[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + + ivas_split_rend_quant_md( hMd, PRED_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + pred_1byquantstep_yaw[q] +#endif + ); + } + + for ( b = 0; b < d_bands_yaw[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + + ivas_split_rend_quant_md( hMd, COM_GAIN_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + 0 +#endif + ); + } + } + else if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_quant_md( hMd, LR_GAIN_ONLY, 1, hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + 0 +#endif + ); + } + } + else + { + for ( b = 0; b < pred_imag_bands_roll[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_quant_md( hMd, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + PRED_ROLL_ONLY, +#else + PRED_ONLY, +#endif + 0, hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + IVAS_SPLIT_REND_PRED_ROLL_1BYQ_STEP +#endif + ); + } + for ( ; b < pred_real_bands_roll[q]; b++ ) + { + hMd = &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; + ivas_split_rend_quant_md( hMd, +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + PRED_ROLL_ONLY, +#else + PRED_ONLY, +#endif + 1, hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx] +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + , + IVAS_SPLIT_REND_PRED_ROLL_1BYQ_STEP +#endif + ); + } + } + } + } + + /*get base2 bits and check if its within target. if yes then code with base2 to save complexity on post renderer*/ + start_bit = pBits->bits_written; + + ivas_split_rend_bitstream_write_int32( pBits, 1, 1 ); + ivas_split_rend_bitstream_write_int32( pBits, q, quant_strat_bits ); + + huff_bits = pBits->bits_written; + ivas_SplitRenderer_code_md_huff( + hBinHrSplitPreRend, + pMultiBinPoseData, + num_subframes, + pred_real_bands_yaw[q], + pred_imag_bands_yaw[q], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw[q], +#endif + d_bands_yaw[q], + bands_pitch[q], + pred_real_bands_roll[q], + pred_imag_bands_roll[q], + pBits ); + huff_bits = pBits->bits_written - huff_bits; + + if ( ( target_md_bits >= ( base2bits[q] + overhead_bits ) ) || ( target_md_bits >= ( huff_bits + overhead_bits ) ) || ( q == ( num_quant_strats - 1 ) ) ) + { + if ( huff_bits > base2bits[q] ) + { + pBits->bits_written = start_bit; + + ivas_split_rend_bitstream_write_int32( pBits, 0, 1 ); + ivas_split_rend_bitstream_write_int32( pBits, q, quant_strat_bits ); + + ivas_SplitRenderer_code_md_base2( hBinHrSplitPreRend, pMultiBinPoseData, num_subframes, pred_real_bands_yaw[q], pred_imag_bands_yaw[q], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw[q], +#endif + d_bands_yaw[q], bands_pitch[q], pred_real_bands_roll[q], pred_imag_bands_roll[q], pBits ); + } + break; + } + + pBits->bits_written = start_bit; + } + +#ifdef SPLIT_MD_CODING_DEBUG + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + int16_t val, quant_strat, ch1, ch2; + char filename[200] = "split_md_debug_indices.bin"; + quant_strat = q; + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( hBinHrSplitPreRend->pose_type[pos_idx] == ANY_YAW ) + { + for ( b = 0; b < pred_real_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + for ( b = 0; b < pred_imag_bands_yaw[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + for ( b = 0; b < d_bands_yaw[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + else if ( hBinHrSplitPreRend->pose_type[pos_idx] == PITCH_ONLY ) + { + for ( b = 0; b < bands_pitch[quant_strat]; b++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd_idx; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].gd2_idx; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + else + { + for ( b = 0; b < pred_real_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_re_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + for ( b = 0; b < pred_imag_bands_roll[quant_strat]; b++ ) + { + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + val = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b].pred_mat_im_idx[ch1][ch2]; + dbgwrite( &val, sizeof( int16_t ), 1, 1, filename ); + } + } + } + } + } + } +#endif + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_SplitRenderer_GetRotMd() + * + * + *------------------------------------------------------------------------*/ + +void ivas_SplitRenderer_GetRotMd( + BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, /* i/o: binaural renderer handle */ + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + float Cldfb_RealBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + float Cldfb_ImagBuffer_Ref_Binaural[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], /* o : Reference Binaural signals */ + const int16_t low_res ) +{ + float cov_ii_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_oo_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_io_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_ii_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_oo_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float cov_io_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t real_only = 0; + + int16_t pos_idx, b, sf_idx, start_slot_idx, num_slots, num_subframes, ch_s_idx1, ch_s_idx2; + int16_t num_md_bands, num_poses; + const int16_t *pBand_grouping = ivas_split_rend_band_grouping; + + push_wmops( "ivas_SplitRenderer_GetRotMd" ); + + num_md_bands = MAX_SPLIT_REND_MD_BANDS; + num_poses = pMultiBinPoseData->num_poses; + + if ( low_res ) + { + num_slots = CLDFB_NO_COL_MAX; + num_subframes = 1; + } + else + { + num_slots = MAX_PARAM_SPATIAL_SUBFRAMES; + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; + } + + /* compute reference signal covariance */ + for ( sf_idx = 0; sf_idx < num_subframes; sf_idx++ ) + { + start_slot_idx = sf_idx * num_slots; + for ( b = 0; b < num_md_bands; b++ ) + { + if ( b < COMPLEX_MD_BAND_THRESH ) + { + real_only = 0; + } + else + { + real_only = 1; + } + + ch_s_idx1 = 0; + ComputeBandedCov( Cldfb_RealBuffer_Ref_Binaural, Cldfb_ImagBuffer_Ref_Binaural, ch_s_idx1, cov_ii_re, cov_ii_im, BINAURAL_CHANNELS, pBand_grouping, num_slots, start_slot_idx, b, real_only ); + + /* compute rotated signal covariance */ + for ( pos_idx = 0; pos_idx < num_poses - 1; pos_idx++ ) + { + ch_s_idx2 = ( pos_idx + 1 ) * BINAURAL_CHANNELS; + ComputeBandedCrossCov( Cldfb_RealBuffer_Ref_Binaural, Cldfb_ImagBuffer_Ref_Binaural, ch_s_idx1, Cldfb_RealBuffer_Ref_Binaural, Cldfb_ImagBuffer_Ref_Binaural, ch_s_idx2, cov_io_re, cov_io_im, BINAURAL_CHANNELS, pBand_grouping, num_slots, start_slot_idx, b, real_only ); + + ComputeBandedCov( Cldfb_RealBuffer_Ref_Binaural, Cldfb_ImagBuffer_Ref_Binaural, ch_s_idx2, cov_oo_re, cov_oo_im, BINAURAL_CHANNELS, pBand_grouping, num_slots, start_slot_idx, b, real_only ); + + ComputeCoeffs( cov_ii_re, cov_ii_im, cov_io_re, cov_io_im, cov_oo_re, &hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b], hBinHrSplitPreRend->pose_type[pos_idx], real_only ); + } + } + } + + pop_wmops(); + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_rend_CldfbSplitPreRendProcess() + * + * + *------------------------------------------------------------------------*/ + +void ivas_rend_CldfbSplitPreRendProcess( + const BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend, +#ifdef API_5MS + const IVAS_QUATERNION headPosition, +#else + const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + ivas_split_rend_bits_t *pBits, + const int32_t target_md_bits, + const int16_t low_res_pre_rend_rot ) +{ + push_wmops( "ivas_rend_CldfbSplitPreRendProcess" ); + + ivas_SplitRenderer_GetRotMd( hBinHrSplitPreRend, pMultiBinPoseData, Cldfb_In_BinReal, Cldfb_In_BinImag, low_res_pre_rend_rot ); + + ivas_SplitRenderer_quant_code( + hBinHrSplitPreRend, +#ifdef API_5MS + headPosition, +#else + headPositions, +#endif + pMultiBinPoseData, + pBits, + low_res_pre_rend_rot, + target_md_bits ); + +#ifdef SPLIT_POSE_CORRECTION_DEBUG + float tmpCrendBuffer[2][L_FRAME48k], quant_val, step, minv, maxv; + IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t sf_idx, pos_idx, b, ch1, ch2; + int32_t read_off, write_off; + for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ ) + { + QuaternionsPost[sf_idx].w = -3.0f; + QuaternionsPost[sf_idx].x = 0.0f; + QuaternionsPost[sf_idx].y = 0.0f; + QuaternionsPost[sf_idx].z = 0.0f; + } + +#if 0 + read_off = pBits->bits_read; + write_off = pBits->bits_written; + ivas_splitBinPostRendMdDec( + pBits, + hBinHrSplitPreRend->hBinHrSplitPostRend, + pMultiBinPoseData ); + pMultiBinPoseData->poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + pBits->bits_read = read_off; + pBits->bits_written = write_off; +#else + hBinHrSplitPreRend->hBinHrSplitPostRend->low_Res = 1; + set_fix_rotation_mat( hBinHrSplitPreRend->hBinHrSplitPostRend->fix_pos_rot_mat, pMultiBinPoseData ); + set_pose_types( hBinHrSplitPreRend->hBinHrSplitPostRend->pose_type, pMultiBinPoseData ); + for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ ) + { + hBinHrSplitPreRend->hBinHrSplitPostRend->QuaternionsPre[sf_idx] = headPositions[sf_idx]; + } + for ( sf_idx = 0; sf_idx < 1; sf_idx++ ) + { + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + for ( b = 0; b < MAX_SPLIT_REND_MD_BANDS; b++ ) + { + hBinHrSplitPreRend->hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b] = hBinHrSplitPreRend->rot_md[pos_idx][sf_idx][b]; +#if 0 + BIN_HR_SPLIT_REND_MD_HANDLE hMd; + hMd = &hBinHrSplitPreRend->hBinHrSplitPostRend->rot_md[pos_idx][sf_idx][b]; + minv = -1.4f; + maxv = 1.4f; + step = ( maxv - minv ) / 30.0f; + if ( b >= 20 ) + { + float sign; + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + sign = ( hMd->pred_mat_re[ch1][ch2] >= 0.0f ) ? 1.0f : -1.0f; + IVAS_CALCULATE_ABS( hMd->pred_mat_re[ch1][ch2], hMd->pred_mat_im[ch1][ch2], hMd->pred_mat_re[ch1][ch2] ); + hMd->pred_mat_re[ch1][ch2] *= sign; + hMd->pred_mat_im[ch1][ch2] = 0.0f; + } + } + } + + for ( ch1 = 0; ch1 < BINAURAL_CHANNELS; ch1++ ) + { + for ( ch2 = 0; ch2 < BINAURAL_CHANNELS; ch2++ ) + { + quant_val = hMd->pred_mat_re[ch1][ch2] - hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx][ch1][ch2]; + quant_val = min( maxv, max( quant_val, minv ) ); + quant_val = (int16_t) roundf( quant_val / step ); + hMd->pred_mat_re[ch1][ch2] = quant_val * step; + hMd->pred_mat_re[ch1][ch2] += hBinHrSplitPreRend->fix_pos_rot_mat[pos_idx][ch1][ch2]; + + quant_val = hMd->pred_mat_im[ch1][ch2]; + quant_val = min( maxv, max( quant_val, minv ) ); + quant_val = (int16_t) roundf( quant_val / step ); + hMd->pred_mat_im[ch1][ch2] = quant_val * step; + } + } +#endif + } + } + } + +#endif + ivas_rend_CldfbSplitPostRendProcess( hBinHrSplitPreRend->hBinHrSplitPostRend, pMultiBinPoseData, QuaternionsPost, Cldfb_In_BinReal[0], Cldfb_In_BinImag[0], tmpCrendBuffer, 1 ); + + { + float *pOut[2]; + char fname[200] = "ref_act_pos.wav"; + pOut[0] = tmpCrendBuffer[0]; + pOut[1] = tmpCrendBuffer[1]; + dbgwrite_wav( pOut, CLDFB_NO_COL_MAX * hBinHrSplitPreRend->hBinHrSplitPostRend->cldfbSyn[0]->no_channels, fname, 48000, 2 ); + } +#endif + + pop_wmops(); + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinPreRendOpen() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_splitBinPreRendOpen( + BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + const int32_t output_Fs +#endif +) +{ + BIN_HR_SPLIT_PRE_REND_HANDLE hBinRend; + ivas_error error; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + int16_t ch; +#endif + int16_t pos_idx, sf_idx, bandIdx; + + error = IVAS_ERR_OK; + if ( ( hBinRend = (BIN_HR_SPLIT_PRE_REND_HANDLE) malloc( sizeof( BIN_HR_SPLIT_PRE_REND ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for bin split pre renderer Module \n" ) ); + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES + 1; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hBinRend->cldfbSynRotBinDec[i][ch] = NULL; + } + } + + for ( int16_t i = 0; i < MAX_HEAD_ROT_POSES + 1; i++ ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb( &( hBinRend->cldfbSynRotBinDec[i][ch] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } +#endif + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + for ( sf_idx = 0; sf_idx < MAX_SPLIT_MD_SUBFRAMES; sf_idx++ ) + { + for ( bandIdx = 0; bandIdx < MAX_SPLIT_REND_MD_BANDS; bandIdx++ ) + { + hBinRend->rot_md[pos_idx][sf_idx][bandIdx].gd = 0.0f; + } + } + } + + set_fix_rotation_mat( hBinRend->fix_pos_rot_mat, pMultiBinPoseData ); + + set_pose_types( hBinRend->pose_type, pMultiBinPoseData ); + + ivas_split_rend_init_huff_cfg( &hBinRend->huff_cfg ); + +#ifdef SPLIT_POSE_CORRECTION_DEBUG + ivas_splitBinPostRendOpen( &hBinRend->hBinHrSplitPostRend, pMultiBinPoseData, 48000 ); +#endif + + *hBinHrSplitPreRend = hBinRend; + + return error; +} + + +/*------------------------------------------------------------------------- + * Function ivas_splitBinPreRendClose() + * + * + *------------------------------------------------------------------------*/ + +void ivas_splitBinPreRendClose( + BIN_HR_SPLIT_PRE_REND_HANDLE *hBinHrSplitPreRend ) +{ + if ( ( *hBinHrSplitPreRend ) != NULL ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + { + int16_t i, n; + for ( i = 0; i < MAX_HEAD_ROT_POSES + 1; i++ ) + { + for ( n = 0; n < BINAURAL_CHANNELS; n++ ) + { + if ( ( *hBinHrSplitPreRend )->cldfbSynRotBinDec[i][n] != NULL ) + { + deleteCldfb( &( ( *hBinHrSplitPreRend )->cldfbSynRotBinDec[i][n] ) ); + ( *hBinHrSplitPreRend )->cldfbSynRotBinDec[i][n] = NULL; + } + } + } + } +#endif +#ifdef SPLIT_POSE_CORRECTION_DEBUG + ivas_splitBinPostRendClose( &( *hBinHrSplitPreRend )->hBinHrSplitPostRend ); +#endif + + free( ( *hBinHrSplitPreRend ) ); + ( *hBinHrSplitPreRend ) = NULL; + } + + return; +} + +#ifdef API_5MS +void ivas_set_split_rend_ht_setup( + IVAS_DEC_SPLIT_REND_WRAPPER *hSplitBinRend, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData ) +{ + int16_t sf, i, j; + if ( hCombinedOrientationData != NULL && hSplitBinRend->splitrend.multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + for ( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + hCombinedOrientationData->Quaternions[sf] = hCombinedOrientationData->Quaternions[0]; + + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + hCombinedOrientationData->Rmat[sf][i][j] = hCombinedOrientationData->Rmat[0][i][j]; + } + } + } + } + return; +} +#endif +/*-------------------------------------------------------------------------* + * ivas_set_split_rend_setup() + * + * Setup IVAS split rendering + *-------------------------------------------------------------------------*/ + +ivas_error ivas_set_split_rend_setup( + IVAS_DEC_SPLIT_REND_WRAPPER *hSplitBinRend, + IVAS_SPLIT_REND_CONFIG_DATA *hSplitBinConfig, + COMBINED_ORIENTATION_HANDLE hCombinedOrientationData, +#ifdef API_5MS + IVAS_SPLIT_REND_BITS_HANDLE hSplitRendBits +#else + uint8_t *splitRendBitsBuf +#endif +) +{ + int16_t sf, i, j; +#ifndef API_5MS + hSplitBinRend->hSplitRendBits->bits_buf = splitRendBitsBuf; + hSplitBinRend->hSplitRendBits->bits_written = 0; + hSplitBinRend->hSplitRendBits->bits_read = 0; +#else + hSplitBinRend->hSplitRendBits = hSplitRendBits; +#endif + if ( ( hSplitBinRend->hMultiBinCldfbData = (IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for split rendering structure" ); + } + + ivas_renderSplitGetMultiBinPoseData( hSplitBinConfig, &hSplitBinRend->splitrend.multiBinPoseData, hCombinedOrientationData->sr_pose_pred_axis ); + + if ( hCombinedOrientationData != NULL && hSplitBinRend->splitrend.multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + for ( sf = 1; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) + { + hCombinedOrientationData->Quaternions[sf] = hCombinedOrientationData->Quaternions[0]; + + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + hCombinedOrientationData->Rmat[sf][i][j] = hCombinedOrientationData->Rmat[0][i][j]; + } + } + } + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function ivas_init_split_rend_handles() + * + * + *------------------------------------------------------------------------*/ + +void ivas_init_split_rend_handles( + SPLIT_REND_WRAPPER *hSplitRendWrapper ) +{ + int16_t i; + + hSplitRendWrapper->hBinHrSplitPreRend = NULL; + hSplitRendWrapper->hCldfbHandles = NULL; + hSplitRendWrapper->hSplitBinLCLDEnc = NULL; + hSplitRendWrapper->hLc3plusEnc = NULL; + + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + hSplitRendWrapper->hTdRendHandles[i] = NULL; + } + + for ( i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; ++i ) + { + hSplitRendWrapper->lc3plusDelayBuffers[i] = NULL; + } + hSplitRendWrapper->lc3plusDelaySamples = 0; + + ivas_init_multi_bin_pose_data( &hSplitRendWrapper->multiBinPoseData ); + + return; +} + +/*------------------------------------------------------------------------- + * Function split_renderer_open_lc3plus() + * + * + *------------------------------------------------------------------------*/ +static ivas_error split_renderer_open_lc3plus( SPLIT_REND_WRAPPER *hSplitRendWrapper, + const IVAS_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const int32_t OutSampleRate +#ifdef API_5MS + , + const int16_t is_5ms_frame +#endif +) +{ + ivas_error error; + int16_t i, delayBufferLength; + LC3PLUS_CONFIG config; + +#ifdef API_5MS + if ( is_5ms_frame ) + { + config.lc3plus_frame_duration_us = pSplitRendConfig->codec_frame_size_ms * 1000; + config.ivas_frame_duration_us = ( pSplitRendConfig->dof == 0 ) ? config.lc3plus_frame_duration_us : 20000; + } + else + { + config.lc3plus_frame_duration_us = 5000; + config.ivas_frame_duration_us = 20000; + } +#else + config.lc3plus_frame_duration_us = 5000; + config.ivas_frame_duration_us = 20000; +#endif + config.samplerate = OutSampleRate; + + config.channels = BINAURAL_CHANNELS; + + error = IVAS_LC3PLUS_ENC_Open( config, ivas_get_lc3plus_bitrate( pSplitRendConfig->splitRendBitRate, pSplitRendConfig->poseCorrectionMode +#ifdef API_5MS + , + (int16_t) ( config.ivas_frame_duration_us / 1000 ) +#endif + ), + &hSplitRendWrapper->hLc3plusEnc ); + if ( error != IVAS_ERR_OK ) + { + return error; + } + + /* This returns delay of entire LC3plus chain (enc + dec) */ + error = IVAS_LC3PLUS_ENC_GetDelay( hSplitRendWrapper->hLc3plusEnc, &hSplitRendWrapper->lc3plusDelaySamples ); + if ( error != IVAS_ERR_OK ) + { + return error; + } + + /* Alocate buffers for delay compensation */ + if ( pSplitRendConfig->codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ) + { + delayBufferLength = (int16_t) ( OutSampleRate / (int32_t) FRAMES_PER_SECOND + hSplitRendWrapper->lc3plusDelaySamples ); + for ( i = 0; i < hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; ++i ) + { + if ( ( hSplitRendWrapper->lc3plusDelayBuffers[i] = malloc( delayBufferLength * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for multiBinPoseData handle\n" ) ); + } + + set_zero( hSplitRendWrapper->lc3plusDelayBuffers[i], delayBufferLength ); + } + } + else + { + /* Delay is always expected to be exactly 2 CLDFB columns */ + assert( hSplitRendWrapper->lc3plusDelaySamples % ( OutSampleRate / FRAMES_PER_SEC / CLDFB_NO_COL_MAX ) == 0 ); + assert( hSplitRendWrapper->lc3plusDelaySamples / ( OutSampleRate / FRAMES_PER_SEC / CLDFB_NO_COL_MAX ) == 2 ); + + delayBufferLength = 2 /* Columns */ * 2 /* real and imag */ * CLDFB_NO_CHANNELS_MAX; + for ( i = 0; i < hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; ++i ) + { + if ( ( hSplitRendWrapper->lc3plusDelayBuffers[i] = malloc( delayBufferLength * sizeof( float ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for multiBinPoseData handle\n" ) ); + } + + set_zero( hSplitRendWrapper->lc3plusDelayBuffers[i], delayBufferLength ); + } + } + + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------- + * Function ivas_split_renderer_open() + * + * + *------------------------------------------------------------------------*/ +ivas_error ivas_split_renderer_open( SPLIT_REND_WRAPPER *hSplitRendWrapper, + const IVAS_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const int32_t OutSampleRate, + const int16_t is_cldfb_in, + const int16_t is_pcm_out +#ifdef API_5MS + , + const int16_t is_5ms_frame +#endif +) +{ + ivas_error error, ch, num_ch; +#ifndef OSBA_SPLIT_RENDERING + CLDFB_TYPE cldfbMode; +#endif + uint8_t isCldfbNeeded = 0; +#ifndef OSBA_SPLIT_RENDERING + cldfbMode = CLDFB_ANALYSIS; +#endif + + if ( ( error = ivas_split_rend_validate_config( pSplitRendConfig, is_pcm_out ) ) != IVAS_ERR_OK ) + { + return error; + } + + error = IVAS_ERR_OK; + + if ( is_cldfb_in == 0 ) + { + isCldfbNeeded = 1; +#ifndef OSBA_SPLIT_RENDERING + cldfbMode = CLDFB_ANALYSIS; +#endif + } + else if ( pSplitRendConfig->codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && is_cldfb_in ) + { +#ifdef OSBA_SPLIT_RENDERING + isCldfbNeeded = 1; +#else + isCldfbNeeded = 1; + cldfbMode = CLDFB_SYNTHESIS; +#endif + } + else if ( is_pcm_out && is_cldfb_in ) + { +#ifdef OSBA_SPLIT_RENDERING + isCldfbNeeded = 1; +#else + isCldfbNeeded = 1; + cldfbMode = CLDFB_SYNTHESIS; +#endif + } + + hSplitRendWrapper->hCldfbHandles = NULL; + + if ( isCldfbNeeded ) + { + 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 = MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; + for ( ch = 0; ch < num_ch; ch++ ) + { + hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] = NULL; + } + +#ifdef OSBA_SPLIT_RENDERING + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] = NULL; + } +#endif + + + num_ch = hSplitRendWrapper->multiBinPoseData.num_poses * BINAURAL_CHANNELS; + + for ( ch = 0; ch < num_ch; ch++ ) + { + if ( ( error = openCldfb( &( hSplitRendWrapper->hCldfbHandles->cldfbAna[ch] ), +#ifndef OSBA_SPLIT_RENDERING + cldfbMode, +#else + CLDFB_ANALYSIS, +#endif + OutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + +#ifdef OSBA_SPLIT_RENDERING + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( ( error = openCldfb( &( hSplitRendWrapper->hCldfbHandles->cldfbSyn[ch] ), + CLDFB_SYNTHESIS, + OutSampleRate, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + } + + if ( pSplitRendConfig->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + if ( ( error = ivas_splitBinPreRendOpen( &hSplitRendWrapper->hBinHrSplitPreRend, &hSplitRendWrapper->multiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + OutSampleRate +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + if ( is_pcm_out == 0 ) + { + if ( pSplitRendConfig->codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ) + { + error = split_renderer_open_lc3plus( hSplitRendWrapper, pSplitRendConfig, OutSampleRate +#ifdef API_5MS + , + is_5ms_frame +#endif + ); + if ( error != IVAS_ERR_OK ) + { + return error; + } + } + else + { + if ( ( error = ivas_splitBinLCLDEncOpen( &hSplitRendWrapper->hSplitBinLCLDEnc, OutSampleRate, BINAURAL_CHANNELS, ivas_get_lcld_bitrate( pSplitRendConfig->splitRendBitRate, hSplitRendWrapper->multiBinPoseData.poseCorrectionMode ) ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + + return error; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_renderer_close() + * + * + *------------------------------------------------------------------------*/ + +void ivas_split_renderer_close( + SPLIT_REND_WRAPPER *hSplitBinRend ) +{ + int16_t i; + + if ( hSplitBinRend->hBinHrSplitPreRend != NULL ) + { + ivas_splitBinPreRendClose( &hSplitBinRend->hBinHrSplitPreRend ); + } + + if ( hSplitBinRend->hSplitBinLCLDEnc != NULL ) + { + ivas_splitBinLCLDEncClose( &hSplitBinRend->hSplitBinLCLDEnc ); + } + + if ( hSplitBinRend->hCldfbHandles != NULL ) + { + int16_t num_ch, ch; + num_ch = MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; + for ( ch = 0; ch < num_ch; ch++ ) + { + if ( hSplitBinRend->hCldfbHandles->cldfbAna[ch] != NULL ) + { + deleteCldfb( &hSplitBinRend->hCldfbHandles->cldfbAna[ch] ); + hSplitBinRend->hCldfbHandles->cldfbAna[ch] = NULL; + } + } + +#ifdef OSBA_SPLIT_RENDERING + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + if ( hSplitBinRend->hCldfbHandles->cldfbSyn[ch] != NULL ) + { + deleteCldfb( &hSplitBinRend->hCldfbHandles->cldfbSyn[ch] ); + hSplitBinRend->hCldfbHandles->cldfbSyn[ch] = NULL; + } + } +#endif + + free( hSplitBinRend->hCldfbHandles ); + hSplitBinRend->hCldfbHandles = NULL; + } + + if ( hSplitBinRend->hLc3plusEnc != NULL ) + { + IVAS_LC3PLUS_ENC_Close( &hSplitBinRend->hLc3plusEnc ); + } + + for ( i = 0; i < MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS; ++i ) + { + if ( hSplitBinRend->lc3plusDelayBuffers[i] != NULL ) + { + free( hSplitBinRend->lc3plusDelayBuffers[i] ); + hSplitBinRend->lc3plusDelayBuffers[i] = NULL; + } + } + + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( hSplitBinRend->hTdRendHandles[i] != NULL ) + { + hSplitBinRend->hTdRendHandles[i]->HrFiltSet_p = NULL; + ivas_td_binaural_close( &hSplitBinRend->hTdRendHandles[i] ); + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function splitRendLc3plusEncodeAndWrite() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error splitRendLc3plusEncodeAndWrite( + SPLIT_REND_WRAPPER *hSplitBin, + ivas_split_rend_bits_t *pBits, + const int32_t SplitRendBitRate, + float *in[] ) +{ + ivas_error error; + int16_t i; + int32_t lc3plusBitstreamSize; + float *channel_ptrs[MAX_HEAD_ROT_POSES * 2]; + assert( hSplitBin->hLc3plusEnc != NULL ); + + /* Find next byte boundary and zero-pad to it */ + while ( pBits->bits_written % 8 != 0 ) + { + ivas_split_rend_bitstream_write_int32( pBits, 0L, 1 ); + } + + for ( i = 0; i < BINAURAL_CHANNELS * hSplitBin->multiBinPoseData.num_poses; ++i ) + { + channel_ptrs[i] = in[i]; + } + + if ( ( error = IVAS_LC3PLUS_ENC_GetOutputBitstreamSize( hSplitBin->hLc3plusEnc, &lc3plusBitstreamSize ) ) != IVAS_ERR_OK ) + { + return error; + } + + ivas_split_rend_bitstream_write_int32( pBits, ivas_get_lc3plus_bitrate_id( SplitRendBitRate ), 8 ); + + /* Write bitstream */ + if ( ( error = IVAS_LC3PLUS_ENC_Encode( hSplitBin->hLc3plusEnc, channel_ptrs, &pBits->bits_buf[pBits->bits_written / 8] ) ) != IVAS_ERR_OK ) + { + return error; + } + + pBits->bits_written += 8 * lc3plusBitstreamSize; + pBits->codec = IVAS_SPLIT_REND_CODEC_LC3PLUS; + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; +#ifdef API_5MS + pBits->codec_frame_size_ms = (int16_t) ( hSplitBin->hLc3plusEnc->config.lc3plus_frame_duration_us / 1000 ); +#endif + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function ivas_renderMultiTDBinToSplitBinaural() + * + * + *------------------------------------------------------------------------*/ + +static ivas_error ivas_renderMultiTDBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, +#ifdef API_5MS + const IVAS_QUATERNION headPosition, +#else + const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + const int32_t SplitRendBitRate, +#ifdef API_5MS + const int16_t codec_frame_size_ms, +#endif + ivas_split_rend_bits_t *pBits, + const int16_t max_bands, + float *in[], + const int16_t low_res_pre_rend_rot, + const int16_t pcm_out ) +{ + ivas_error error; + int32_t bit_len, available_bits, target_md_bits, actual_md_bits; + int16_t num_cldfb_bands, ch, slot_idx, pos_idx, num_poses; + float Cldfb_In_BinReal[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_In_BinImag[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + uint8_t useLc3plus; + float *in_delayed[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; + int16_t i; + + push_wmops( "ivas_renderMultiTDBinToSplitBinaural" ); + + error = IVAS_ERR_OK; + num_poses = hSplitBin->multiBinPoseData.num_poses; + + useLc3plus = hSplitBin->hLc3plusEnc != NULL; + + if ( useLc3plus ) + { + /*this should always have the time resolution of pose correction MD. Note that this does not change frame size of LC3plus*/ + int16_t frame_size = (int16_t) ( hSplitBin->hLc3plusEnc->config.samplerate / (int32_t) FRAMES_PER_SECOND ); + + for ( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + /* Artificially delay input to head pose correction analysis by LC3plus coding delay, so that audio and metadata are in sync after decoding */ + mvr2r( hSplitBin->lc3plusDelayBuffers[i] + frame_size, hSplitBin->lc3plusDelayBuffers[i], (int16_t) hSplitBin->lc3plusDelaySamples ); + in_delayed[i] = hSplitBin->lc3plusDelayBuffers[i]; + mvr2r( in[i], hSplitBin->lc3plusDelayBuffers[i] + hSplitBin->lc3plusDelaySamples, frame_size ); + } + } + else + { + for ( i = 0; i < num_poses * BINAURAL_CHANNELS; ++i ) + { + in_delayed[i] = in[i]; + } + } + + actual_md_bits = pBits->bits_written; + if ( ( hSplitBin->multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) || ( !useLc3plus && !pcm_out ) ) + { +#ifdef API_5MS + if ( !useLc3plus && codec_frame_size_ms != 20 && !pcm_out ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_INPUT_BUFFER_SIZE, "Unsupported framing for LCLD codec!" ); + } +#endif + num_cldfb_bands = hSplitBin->hCldfbHandles->cldfbAna[0]->no_channels; + + /* CLDFB Analysis*/ + for ( pos_idx = 0; pos_idx < num_poses; pos_idx++ ) + { +#ifdef SPLIT_POSE_CORRECTION_DEBUG + { + float *pOut[2]; + char fname[200] = "ref_out_pos"; + char tag[2]; + tag[0] = (char) ( '0' + pos_idx ); + tag[1] = '\0'; + strcat( fname, tag ); + strcat( fname, ".wav" ); + + pOut[0] = in_delayed[2 * pos_idx]; + pOut[1] = in_delayed[2 * pos_idx + 1]; + dbgwrite_wav( pOut, CLDFB_NO_COL_MAX * max_bands, fname, 48000, 2 ); + } + +#endif + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + cldfbAnalysis_ts( &( in_delayed[pos_idx * BINAURAL_CHANNELS + ch][num_cldfb_bands * slot_idx] ), + Cldfb_In_BinReal[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinImag[pos_idx * BINAURAL_CHANNELS + ch][slot_idx], + max_bands, hSplitBin->hCldfbHandles->cldfbAna[pos_idx * BINAURAL_CHANNELS + ch] ); + } + } + } + } + + if ( hSplitBin->multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + target_md_bits = ivas_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out ) * L_FRAME48k / 48000; + + actual_md_bits = pBits->bits_written; + ivas_rend_CldfbSplitPreRendProcess( + hSplitBin->hBinHrSplitPreRend, +#ifdef API_5MS + headPosition, +#else + headPositions, +#endif + &hSplitBin->multiBinPoseData, + Cldfb_In_BinReal, + Cldfb_In_BinImag, + pBits, + target_md_bits, + low_res_pre_rend_rot ); + } + + if ( pcm_out == 0 ) + { + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + pBits->codec = useLc3plus ? IVAS_SPLIT_REND_CODEC_LC3PLUS : IVAS_SPLIT_REND_CODEC_LCLD; + + if ( !useLc3plus ) + { + available_bits = SplitRendBitRate * L_FRAME48k / 48000; + actual_md_bits = pBits->bits_written - actual_md_bits; + available_bits -= actual_md_bits; +#ifdef API_5MS + pBits->codec_frame_size_ms = 20; +#endif + ivas_splitBinLCLDEncProcess( + hSplitBin->hSplitBinLCLDEnc, + Cldfb_In_BinReal, + Cldfb_In_BinImag, + available_bits, + pBits ); + } + else + { + if ( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, SplitRendBitRate, in ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else + { + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + pBits->codec = IVAS_SPLIT_REND_CODEC_NONE; + } + + /*zero pad*/ +#ifdef API_5MS + if ( pcm_out ) + { +#endif + bit_len = SplitRendBitRate / FRAMES_PER_SEC; +#ifdef API_5MS + } + else + { + if ( !useLc3plus ) + { + bit_len = SplitRendBitRate / FRAMES_PER_SEC; + } + else + { + bit_len = hSplitBin->hLc3plusEnc->config.ivas_frame_duration_us / 1000; + bit_len = SplitRendBitRate * bit_len / 1000; + } + } +#endif + + while ( pBits->bits_written < bit_len ) + { + ivas_split_rend_bitstream_write_int32( pBits, 0L, 1 ); + } + + pop_wmops(); + + return error; +} + + +/*------------------------------------------------------------------------- + * Function lc3plusTimeAlignCldfbPoseCorr() + * + * + *------------------------------------------------------------------------*/ + +static void lc3plusTimeAlignCldfbPoseCorr( + SPLIT_REND_WRAPPER *hSplitBin, + float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] ) +{ + float Cldfb_In_BinReal_tmp[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][2][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_In_BinImag_tmp[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS][2][CLDFB_NO_CHANNELS_MAX]; + int16_t pose, ch, slot_idx; + float *bufRead, *bufWrite; + + for ( pose = 0; pose < hSplitBin->multiBinPoseData.num_poses; ++pose ) + { + for ( ch = 0; ch < BINAURAL_CHANNELS; ++ch ) + { + bufRead = hSplitBin->lc3plusDelayBuffers[pose * BINAURAL_CHANNELS + ch]; + bufWrite = bufRead; + + /* Save last 2 columns for next frame */ + for ( slot_idx = 0; slot_idx < 2; ++slot_idx ) + { + mvr2r( Cldfb_In_BinReal[pose * BINAURAL_CHANNELS + ch][CLDFB_NO_COL_MAX - 2 + slot_idx], Cldfb_In_BinReal_tmp[pose][ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_In_BinImag[pose * BINAURAL_CHANNELS + ch][CLDFB_NO_COL_MAX - 2 + slot_idx], Cldfb_In_BinImag_tmp[pose][ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + } + + /* Delay existing columns by 2 slots */ + /*TODO : shouldnt the delay be 7.5 ms ? 5ms + LC3plus delay */ + for ( slot_idx = CLDFB_NO_COL_MAX - 2 - 1; slot_idx >= 0; --slot_idx ) + { + mvr2r( Cldfb_In_BinReal[pose * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinReal[pose * BINAURAL_CHANNELS + ch][slot_idx + 2], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_In_BinImag[pose * BINAURAL_CHANNELS + ch][slot_idx], Cldfb_In_BinImag[pose * BINAURAL_CHANNELS + ch][slot_idx + 2], CLDFB_NO_CHANNELS_MAX ); + } + + /* Fill 2 first columns from buffer */ + for ( slot_idx = 0; slot_idx < 2; ++slot_idx ) + { + mvr2r( bufRead, Cldfb_In_BinReal[pose * BINAURAL_CHANNELS + ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + bufRead += CLDFB_NO_CHANNELS_MAX; + mvr2r( bufRead, Cldfb_In_BinImag[pose * BINAURAL_CHANNELS + ch][slot_idx], CLDFB_NO_CHANNELS_MAX ); + bufRead += CLDFB_NO_CHANNELS_MAX; + } + + /* Copy last 2 columns to buffer */ + for ( slot_idx = 0; slot_idx < 2; ++slot_idx ) + { + mvr2r( Cldfb_In_BinReal_tmp[pose][ch][slot_idx], bufWrite, CLDFB_NO_CHANNELS_MAX ); + bufWrite += CLDFB_NO_CHANNELS_MAX; + mvr2r( Cldfb_In_BinImag_tmp[pose][ch][slot_idx], bufWrite, CLDFB_NO_CHANNELS_MAX ); + bufWrite += CLDFB_NO_CHANNELS_MAX; + } + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_renderMultiBinToSplitBinaural() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_renderMultiBinToSplitBinaural( + SPLIT_REND_WRAPPER *hSplitBin, +#ifdef API_5MS + const IVAS_QUATERNION headPosition, +#else + const IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES], +#endif + const int32_t SplitRendBitRate, + IVAS_SPLIT_REND_CODEC splitCodec, +#ifdef API_5MS + int16_t codec_frame_size_ms, +#endif + ivas_split_rend_bits_t *pBits, + float Cldfb_In_BinReal[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_BinImag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t max_bands, + float *output[], + const int16_t low_res_pre_rend_rot, + int16_t td_input, + const int16_t pcm_out ) +{ + ivas_error error; + int32_t bit_len, target_md_bits, actual_md_bits, available_bits; + error = IVAS_ERR_OK; + + push_wmops( "ivas_renderMultiBinToSplitBinaural" ); + + if ( hSplitBin->multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + set_fix_rotation_mat( hSplitBin->hBinHrSplitPreRend->fix_pos_rot_mat, &hSplitBin->multiBinPoseData ); + set_pose_types( hSplitBin->hBinHrSplitPreRend->pose_type, &hSplitBin->multiBinPoseData ); + } + + /* Needs to be done at runtime. If this was in another API function, + * there would be no guarantee that the user did not change + * the split rendering config before calling the main rendering function */ +#ifdef API_5MS + if ( ( error = ivas_split_rend_choose_default_codec( &splitCodec, &codec_frame_size_ms, td_input, pcm_out ) ) != IVAS_ERR_OK ) + { + return error; + } +#else + ivas_split_rend_choose_default_codec( &splitCodec, td_input, pcm_out ); +#endif + + if ( td_input ) + { + /*TD input*/ + /*if CLDFB handles have been allocated then assume valid multi binaural input in out[][] buffer and perform CLDFB analysis*/ + error = ivas_renderMultiTDBinToSplitBinaural( hSplitBin, +#ifdef API_5MS + headPosition, +#else + headPositions, +#endif + SplitRendBitRate, +#ifdef API_5MS + codec_frame_size_ms, +#endif + pBits, max_bands, output, + low_res_pre_rend_rot, pcm_out ); + pop_wmops(); + return error; + } + + if ( splitCodec == IVAS_SPLIT_REND_CODEC_LC3PLUS && hSplitBin->multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + /* Time-align pose correction to delay of LC3plus */ + lc3plusTimeAlignCldfbPoseCorr( hSplitBin, Cldfb_In_BinReal, Cldfb_In_BinImag ); + } + + actual_md_bits = pBits->bits_written; + if ( hSplitBin->multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + target_md_bits = ivas_get_split_rend_md_target_brate( SplitRendBitRate, pcm_out ) * L_FRAME48k / 48000; + + actual_md_bits = pBits->bits_written; + ivas_rend_CldfbSplitPreRendProcess( + hSplitBin->hBinHrSplitPreRend, +#ifdef API_5MS + headPosition, +#else + headPositions, +#endif + &hSplitBin->multiBinPoseData, + Cldfb_In_BinReal, + Cldfb_In_BinImag, + pBits, + target_md_bits, + low_res_pre_rend_rot ); + } + + if ( pcm_out == 0 ) + { + pBits->codec = splitCodec; + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + + if ( splitCodec == IVAS_SPLIT_REND_CODEC_LCLD ) + { + available_bits = SplitRendBitRate * L_FRAME48k / 48000; + actual_md_bits = pBits->bits_written - actual_md_bits; + available_bits -= actual_md_bits; + + ivas_splitBinLCLDEncProcess( hSplitBin->hSplitBinLCLDEnc, Cldfb_In_BinReal, Cldfb_In_BinImag, available_bits, pBits ); + } + else + { + int16_t ch, slot_idx; + + /* CLDFB synthesis of main pose */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + float *Cldfb_In_BinReal_p[CLDFB_NO_COL_MAX]; + float *Cldfb_In_BinImag_p[CLDFB_NO_COL_MAX]; + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + Cldfb_In_BinReal_p[slot_idx] = Cldfb_In_BinReal[ch][slot_idx]; + Cldfb_In_BinImag_p[slot_idx] = Cldfb_In_BinImag[ch][slot_idx]; + } +#ifndef OSBA_SPLIT_RENDERING + cldfbSynthesis( Cldfb_In_BinReal_p, Cldfb_In_BinImag_p, output[ch], hSplitBin->hCldfbHandles->cldfbAna[0]->no_channels * CLDFB_NO_COL_MAX, hSplitBin->hCldfbHandles->cldfbAna[ch] ); +#else + cldfbSynthesis( Cldfb_In_BinReal_p, Cldfb_In_BinImag_p, output[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * CLDFB_NO_COL_MAX, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); +#endif + } + + if ( ( error = splitRendLc3plusEncodeAndWrite( hSplitBin, pBits, SplitRendBitRate, output ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + else + { + int16_t ch, slot_idx; + /* CLDFB synthesis of main pose */ + for ( ch = 0; ch < BINAURAL_CHANNELS; ch++ ) + { + float *Cldfb_In_BinReal_p[CLDFB_NO_COL_MAX]; + float *Cldfb_In_BinImag_p[CLDFB_NO_COL_MAX]; + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) + { + Cldfb_In_BinReal_p[slot_idx] = Cldfb_In_BinReal[ch][slot_idx]; + Cldfb_In_BinImag_p[slot_idx] = Cldfb_In_BinImag[ch][slot_idx]; + } +#ifndef OSBA_SPLIT_RENDERING + cldfbSynthesis( Cldfb_In_BinReal_p, Cldfb_In_BinImag_p, output[ch], hSplitBin->hCldfbHandles->cldfbAna[0]->no_channels * CLDFB_NO_COL_MAX, hSplitBin->hCldfbHandles->cldfbAna[ch] ); +#else + cldfbSynthesis( Cldfb_In_BinReal_p, Cldfb_In_BinImag_p, output[ch], hSplitBin->hCldfbHandles->cldfbSyn[0]->no_channels * CLDFB_NO_COL_MAX, hSplitBin->hCldfbHandles->cldfbSyn[ch] ); +#endif + } + + pBits->pose_correction = hSplitBin->multiBinPoseData.poseCorrectionMode; + pBits->codec = IVAS_SPLIT_REND_CODEC_NONE; + } + +/*zero pad*/ +/*TODO: do this inside the LCLD ENC codec */ +#ifdef API_5MS + if ( pcm_out ) + { +#endif + bit_len = SplitRendBitRate / FRAMES_PER_SEC; +#ifdef API_5MS + } + else + { + if ( splitCodec == IVAS_SPLIT_REND_CODEC_LCLD ) + { + bit_len = SplitRendBitRate / FRAMES_PER_SEC; + } + else + { + bit_len = hSplitBin->hLc3plusEnc->config.ivas_frame_duration_us / 1000; + bit_len = SplitRendBitRate * bit_len / 1000; + } + } +#endif + + while ( pBits->bits_written < bit_len ) + { + ivas_split_rend_bitstream_write_int32( pBits, 0L, 1 ); + } + + pop_wmops(); + + return error; +} +#endif diff --git a/lib_rend/ivas_splitRenderer_utils.c b/lib_rend/ivas_splitRenderer_utils.c new file mode 100644 index 0000000000000000000000000000000000000000..6330962fce19c8fe677eec3036d131e6e0450499 --- /dev/null +++ b/lib_rend/ivas_splitRenderer_utils.c @@ -0,0 +1,1170 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include +#include +#include "ivas_prot.h" +#include "prot.h" +#include "cnst.h" +#include "ivas_cnst.h" +#include "ivas_rom_rend.h" +#include "ivas_rom_com.h" +#include "ivas_rom_dec.h" +#include "ivas_rom_binauralRenderer.h" +#include "lib_rend.h" +#include "ivas_prot_rend.h" +#ifdef DEBUGGING +#include "debug.h" +#endif +#include "wmc_auto.h" + + +/*------------------------------------------------------------------------- + * Function ivas_mat_mult_2by2_complex() + * + * + *------------------------------------------------------------------------*/ + +void ivas_mat_mult_2by2_complex( + float in_re1[2][2], + float in_im1[2][2], + float in_re2[2][2], + float in_im2[2][2], + float out_re2[2][2], + float out_im2[2][2] ) +{ + int16_t i, j; + float tmp_re, tmp_im; + + for ( i = 0; i < 2; i++ ) + { + for ( j = 0; j < 2; j++ ) + { + IVAS_CMULT_FLOAT( in_re1[i][0], in_im1[i][0], in_re2[0][j], in_im2[0][j], tmp_re, tmp_im ); + out_re2[i][j] = tmp_re; + out_im2[i][j] = tmp_im; + + IVAS_CMULT_FLOAT( in_re1[i][1], in_im1[i][1], in_re2[1][j], in_im2[1][j], tmp_re, tmp_im ); + out_re2[i][j] += tmp_re; + out_im2[i][j] += tmp_im; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_bitstream_init() + * + * + *------------------------------------------------------------------------*/ + +void ivas_split_rend_bitstream_init( + ivas_split_rend_bits_t *pBits, + const int32_t buf_len_bytes, + uint8_t *pbuf ) +{ + pBits->bits_buf = pbuf; + pBits->buf_len = buf_len_bytes; + pBits->bits_read = 0; + pBits->bits_written = 0; + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_huffman_dec_init_min_max_len() + * + * + *------------------------------------------------------------------------*/ + +void ivas_split_rend_huffman_dec_init_min_max_len( + ivas_split_rend_huffman_cfg_t *p_huff_cfg ) +{ + int16_t i, code_len; + const int32_t *codebook; + + codebook = p_huff_cfg->codebook; + + p_huff_cfg->min_len = p_huff_cfg->sym_len; + p_huff_cfg->max_len = 0; + + for ( i = 0; i < p_huff_cfg->sym_len; i++ ) + { + code_len = (int16_t) codebook[1]; + if ( p_huff_cfg->min_len > code_len ) + { + p_huff_cfg->min_len = code_len; + } + if ( p_huff_cfg->max_len < code_len ) + { + p_huff_cfg->max_len = code_len; + } + codebook = codebook + 3; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function is_idx_present() + * + * + *------------------------------------------------------------------------*/ + +static int16_t is_idx_present( + int16_t *idx_list, + const int16_t idx, + const int16_t len ) +{ + int16_t i; + + for ( i = 0; i < len; i++ ) + { + if ( idx_list[i] == idx ) + { + return 1; + } + } + + return 0; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_huff_get_idx_trav_list() + * + * + *------------------------------------------------------------------------*/ + +static void ivas_split_huff_get_idx_trav_list( + int16_t *idx_list, + ivas_split_rend_huffman_cfg_t *p_huff_cfg ) +{ + int16_t i, j, min_idx; + int32_t min_bits; + const int32_t *codebook; + + for ( i = 0; i < p_huff_cfg->sym_len; i++ ) + { + idx_list[i] = -1; + } + + for ( i = 0; i < p_huff_cfg->sym_len; i++ ) + { + codebook = p_huff_cfg->codebook; + min_bits = p_huff_cfg->max_len; + min_idx = -1; + for ( j = 0; j < p_huff_cfg->sym_len; j++ ) + { + if ( ( min_bits >= codebook[1] ) && ( is_idx_present( idx_list, j, i + 1 ) == 0 ) ) + { + min_bits = codebook[1]; + min_idx = j; + } + codebook += 3; + } + idx_list[i] = min_idx; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_init_huff_cfg() + * + * + *------------------------------------------------------------------------*/ + +void ivas_split_rend_init_huff_cfg( + BIN_HR_SPLIT_REND_HUFF_HANDLE pHuff_cfg ) +{ +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pHuff_cfg->pred[0].codebook = &ivas_split_rend_huff_pred31_consts[0][0]; + pHuff_cfg->pred[0].sym_len = IVAS_SPLIT_REND_PRED_31QUANT_PNTS; + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred[0] ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_idx_trav[0], &pHuff_cfg->pred[0] ); + pHuff_cfg->pred_base2_code_len[0] = (int16_t) ceilf( log2f( pHuff_cfg->pred[0].sym_len ) ); + + pHuff_cfg->pred[1].codebook = &ivas_split_rend_huff_pred63_consts[0][0]; + pHuff_cfg->pred[1].sym_len = IVAS_SPLIT_REND_PRED_63QUANT_PNTS; + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred[1] ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_idx_trav[1], &pHuff_cfg->pred[1] ); + pHuff_cfg->pred_base2_code_len[1] = (int16_t) ceilf( log2f( pHuff_cfg->pred[1].sym_len ) ); + +#else + pHuff_cfg->pred.codebook = &ivas_split_rend_huff_pred_consts[0][0]; + pHuff_cfg->pred.sym_len = IVAS_SPLIT_REND_PRED_QUANT_PNTS; + + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_idx_trav, &pHuff_cfg->pred ); + pHuff_cfg->pred_base2_code_len = (int16_t) ceilf( log2f( pHuff_cfg->pred.sym_len ) ); + +#endif + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pHuff_cfg->pred_roll.codebook = &ivas_split_rend_huff_roll_pred_consts[0][0]; + pHuff_cfg->pred_roll.sym_len = IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS; + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->pred_roll ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->pred_roll_idx_trav, &pHuff_cfg->pred_roll ); + pHuff_cfg->pred_roll_base2_code_len = (int16_t) ceilf( log2f( pHuff_cfg->pred_roll.sym_len ) ); +#endif + + pHuff_cfg->gd.codebook = &ivas_split_rend_huff_d_consts[0][0]; + pHuff_cfg->gd.sym_len = IVAS_SPLIT_REND_D_QUANT_PNTS; + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->gd ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->gd_idx_trav, &pHuff_cfg->gd ); + pHuff_cfg->gd_base2_code_len = (int16_t) ceilf( log2f( pHuff_cfg->gd.sym_len ) ); + + pHuff_cfg->p_gd.codebook = &ivas_split_rend_huff_p_d_consts[0][0]; + pHuff_cfg->p_gd.sym_len = IVAS_SPLIT_REND_D_QUANT_PNTS; + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->p_gd ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->p_gd_idx_trav, &pHuff_cfg->p_gd ); + pHuff_cfg->p_gd_base2_code_len = (int16_t) ceilf( log2f( pHuff_cfg->p_gd.sym_len ) ); + + pHuff_cfg->p_gd_diff.codebook = &ivas_split_rend_huff_p_d_diff_consts[0][0]; + pHuff_cfg->p_gd_diff.sym_len = IVAS_SPLIT_REND_D_QUANT_PNTS; + ivas_split_rend_huffman_dec_init_min_max_len( &pHuff_cfg->p_gd_diff ); + ivas_split_huff_get_idx_trav_list( pHuff_cfg->p_gd_diff_idx_trav, &pHuff_cfg->p_gd_diff ); + pHuff_cfg->p_gd_diff_base2_code_len = (int16_t) ceilf( log2f( pHuff_cfg->p_gd_diff.sym_len ) ); + + return; +} + + +/*------------------------------------------------------------------------- + * Function set_fix_rotation_mat() + * + * + *------------------------------------------------------------------------*/ + +void set_fix_rotation_mat( + float fix_pos_rot_mat[][BINAURAL_CHANNELS][BINAURAL_CHANNELS], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + float yaw_a, cos_yaw, sin_yaw; + int16_t pos_idx; + yaw_a = 0.0f; + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + yaw_a = pMultiBinPoseData->relative_head_poses[pos_idx + 1][0]; + cos_yaw = cosf( EVS_PI * yaw_a / 180.0f ); + sin_yaw = sinf( EVS_PI * yaw_a / 180.0f ); + sin_yaw = 0.0f; + fix_pos_rot_mat[pos_idx][0][0] = cos_yaw; + fix_pos_rot_mat[pos_idx][1][1] = cos_yaw; + fix_pos_rot_mat[pos_idx][0][1] = sin_yaw; + fix_pos_rot_mat[pos_idx][1][0] = -1.0f * sin_yaw; + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function set_pose_types() + * + * + *------------------------------------------------------------------------*/ + +void set_pose_types( + IVAS_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1], + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + int16_t pos_idx; + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses - 1; pos_idx++ ) + { + if ( fabs( pMultiBinPoseData->relative_head_poses[pos_idx + 1][0] ) > EPSILON ) + { + pose_type[pos_idx] = ANY_YAW; + } + else if ( fabs( pMultiBinPoseData->relative_head_poses[pos_idx + 1][2] ) > EPSILON ) + { + pose_type[pos_idx] = ANY_ROLL; + } + else + { + pose_type[pos_idx] = PITCH_ONLY; + } + } + + return; +} + + +/*------------------------------------------------------------------------- + * Function wrap_a() + * + * + *------------------------------------------------------------------------*/ + +int16_t wrap_a( + int16_t val, + const int16_t min_val, + const int16_t max_val ) +{ + if ( val < min_val ) + { + val = max_val - min_val + val + 1; + } + + if ( val > max_val ) + { + val = min_val + val - max_val - 1; + } + + return val; +} + + +/*------------------------------------------------------------------------- + * Function ivas_SplitRenderer_getdiagdiff() + * + * + *------------------------------------------------------------------------*/ + +void ivas_SplitRenderer_getdiagdiff( + int16_t in_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + int16_t out_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS], + const int16_t sign, + const int16_t min_val, + const int16_t max_val ) +{ + out_idx[0][0] = in_idx[0][0]; + out_idx[0][1] = in_idx[0][1]; + out_idx[1][1] = in_idx[1][1] + sign * out_idx[0][0]; + out_idx[1][1] = wrap_a( out_idx[1][1], min_val, max_val ); + out_idx[1][0] = in_idx[1][0] + sign * out_idx[0][1]; + out_idx[1][0] = wrap_a( out_idx[1][0], min_val, max_val ); + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_bitstream_read_int32() + * + * + *------------------------------------------------------------------------*/ + +int32_t ivas_split_rend_bitstream_read_int32( + ivas_split_rend_bits_t *pBits, + const int32_t bits ) +{ + int32_t val, k, bit_val; + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + assert( ( pBits->bits_written - pBits->bits_read ) >= bits ); + assert( bits <= 32 ); +#endif + + /* write bit by bit */ + val = 0; + for ( k = bits - 1; k >= 0; k-- ) + { +#if 0 + if ( pBits->bits_buf[pBits->bits_read >> 3] & ( 1 << ( pBits->bits_read & 7 ) ) ) + { + val |= 1 << k; + } +#else + bit_val = ( pBits->bits_buf[pBits->bits_read >> 3] & ( 1 << ( pBits->bits_read & 7 ) ) ) != 0; + val |= bit_val << k; +#endif + pBits->bits_read++; + } + + return val; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_bitstream_write_int32() + * + * + *------------------------------------------------------------------------*/ + +void ivas_split_rend_bitstream_write_int32( + ivas_split_rend_bits_t *pBits, + const int32_t val, + const int32_t bits ) +{ + int32_t mask, k; + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + /*protection check*/ + if ( ( pBits->buf_len << 3 ) < ( pBits->bits_written + bits ) ) + { + assert( 0 ); + } +#endif + + mask = 1 << ( bits - 1 ); + /* write bit by bit */ + for ( k = 0; k < bits; k++ ) + { + if ( val & mask ) + { + pBits->bits_buf[pBits->bits_written >> 3] |= ( 1 << ( pBits->bits_written & 7 ) ); + } + else + { + pBits->bits_buf[pBits->bits_written >> 3] &= ~( 1 << ( pBits->bits_written & 7 ) ); + } + pBits->bits_written++; + mask >>= 1; + } + + return; +} + +#ifndef API_5MS +/*------------------------------------------------------------------------- + * Function ivas_split_rend_get_sf_rot_data() + * + * + *------------------------------------------------------------------------*/ +IVAS_QUATERNION ivas_split_rend_get_sf_rot_data( + const IVAS_QUATERNION headPositions[RENDERER_HEAD_POSITIONS_PER_FRAME], + int16_t subframe_idx ) +{ + int16_t idx; + + idx = ( subframe_idx * RENDERER_HEAD_POSITIONS_PER_FRAME ) / MAX_PARAM_SPATIAL_SUBFRAMES; + + return headPositions[idx]; +} +#endif + + +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG +/*------------------------------------------------------------------------- + * ivas_mat_mult_2by2_complex() + * + * + *------------------------------------------------------------------------*/ + +void ivas_log_cldfb2wav_data( + float Cldfb_In_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_In_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + HANDLE_CLDFB_FILTER_BANK *cldfbSyn, + const int16_t num_chs, + const int16_t num_freq_bands, + const int32_t output_Fs, + const int16_t num_slots, + const int16_t start_slot_idx, + const char *filename ) +{ + float *RealBuffer[CLDFB_NO_COL_MAX]; + float *ImagBuffer[CLDFB_NO_COL_MAX]; + float pcm_out[BINAURAL_CHANNELS][L_FRAME48k]; + float *pPcm[BINAURAL_CHANNELS]; + float Cldfb_local_Real[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_local_Imag[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + int16_t sf, ch; + + assert( num_chs <= BINAURAL_CHANNELS ); + for ( ch = 0; ch < num_chs; ch++ ) + { + for ( sf = start_slot_idx; sf < start_slot_idx + num_slots; sf++ ) + { + mvr2r( Cldfb_In_Real[ch][sf], Cldfb_local_Real[ch][sf], num_freq_bands ); + mvr2r( Cldfb_In_Imag[ch][sf], Cldfb_local_Imag[ch][sf], num_freq_bands ); + RealBuffer[sf - start_slot_idx] = Cldfb_local_Real[ch][sf]; + ImagBuffer[sf - start_slot_idx] = Cldfb_local_Imag[ch][sf]; + } + cldfbSynthesis( RealBuffer, ImagBuffer, &( pcm_out[ch][0] ), num_freq_bands * num_slots, cldfbSyn[ch] ); + pPcm[ch] = pcm_out[ch]; + } + dbgwrite_wav( pPcm, num_freq_bands * num_slots, filename, output_Fs, num_chs ); + + return; +} +#endif + + +/*------------------------------------------------------------------------- + * Function ivas_get_split_rend_md_target_brate() + * + * + *------------------------------------------------------------------------*/ + +int32_t ivas_get_split_rend_md_target_brate( + const int32_t SplitRendBitRate, + const int16_t pcm_out ) +{ + int32_t md_bitrate; + + if ( pcm_out == 1 ) + { + md_bitrate = SplitRendBitRate; + } + else + { + switch ( SplitRendBitRate ) + { + case SPLIT_REND_768k: + { + md_bitrate = 256000; + break; + } + case SPLIT_REND_512k: + { + md_bitrate = 128000; + break; + } + case SPLIT_REND_384k: + { + md_bitrate = 128000; + break; + } + default: + { + return -1; + } + } + } + + return md_bitrate; +} + + +/*------------------------------------------------------------------------- + * Function ivas_get_lcld_bitrate() + * + * + *------------------------------------------------------------------------*/ + +int32_t ivas_get_lcld_bitrate( + const int32_t SplitRendBitRate, + const IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode ) +{ + if ( poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + switch ( SplitRendBitRate ) + { + case SPLIT_REND_768k: + { + return IVAS_512k; + } + case SPLIT_REND_512k: + { + return IVAS_384k; + } + case SPLIT_REND_384k: + { + return IVAS_256k; + } + default: + { + assert( 0 ); + } + } + } + else + { + return SplitRendBitRate; + } + return -1; +} + +/*------------------------------------------------------------------------- + * Function ivas_get_lc3plus_bitrate() + * + * + *------------------------------------------------------------------------*/ +int32_t ivas_get_lc3plus_bitrate( const int32_t SplitRendBitRate, IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode +#ifdef API_5MS + , + int16_t split_prerender_frame_size_ms +#endif +) +{ + if ( poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + int32_t inBandMdBps = (int32_t) ( 8 * 1000 / +#ifdef API_5MS + split_prerender_frame_size_ms +#else + FRAMES_PER_SEC +#endif + ); + return ivas_get_lcld_bitrate( SplitRendBitRate, poseCorrectionMode ) - inBandMdBps; + } + if ( poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) + { + return SplitRendBitRate; + } + + /* Should not be reached */ + assert( 0 ); + return -1; +} + + +/*------------------------------------------------------------------------- + * Function ivas_get_lc3plus_bitrate_id() + * + * + *------------------------------------------------------------------------*/ + +int8_t ivas_get_lc3plus_bitrate_id( + const int32_t 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() + * + * + *------------------------------------------------------------------------*/ +int32_t ivas_get_lc3plus_size_from_id( const int8_t SplitRendBitRateId, IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode +#ifdef API_5MS + , + int16_t split_prerender_frame_size_ms +#endif +) +{ + int32_t bitrate; + + switch ( SplitRendBitRateId ) + { + case 4: + { + bitrate = SPLIT_REND_768k; + break; + } + case 3: + { + bitrate = SPLIT_REND_512k; + break; + } + case 2: + { + bitrate = SPLIT_REND_384k; + break; + } + case 1: + { + bitrate = SPLIT_REND_320k; + break; + } + case 0: + { + bitrate = SPLIT_REND_256k; + break; + } + default: + { + bitrate = -1; + break; + } + } + + bitrate = ivas_get_lc3plus_bitrate( bitrate, poseCorrectionMode +#ifdef API_5MS + , + split_prerender_frame_size_ms +#endif + ); + + /* Return size in bytes */ + return (int32_t) ( bitrate * +#ifdef API_5MS + split_prerender_frame_size_ms +#else + FRAMES_PER_SEC +#endif + / 1000 / 8 ); +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_validate_config() + * + * + *------------------------------------------------------------------------*/ + +ivas_error ivas_split_rend_validate_config( + const IVAS_SPLIT_REND_CONFIG_DATA *pSplitRendConfig, + const int16_t is_pcm_out ) +{ + /* Valid DOF range is 0-3 */ + if ( pSplitRendConfig->dof < 0 || pSplitRendConfig->dof > 3 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Valid DOF range is 0-3" ); + } + + /* Only CLDFB pose correction supports HQ mode */ + if ( pSplitRendConfig->poseCorrectionMode != IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB && pSplitRendConfig->hq_mode != 0 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Only CLDFB pose correction supports HQ mode" ); + } + + /* Split rendering with no pose correction - 0 DOF and pose correction NONE must only ever be set together */ + if ( ( pSplitRendConfig->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE && pSplitRendConfig->dof != 0 ) || + ( pSplitRendConfig->poseCorrectionMode != IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE && pSplitRendConfig->dof == 0 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "0 DOF and pose correction NONE must only ever be set together" ); + } + +#ifdef API_5MS + if ( pSplitRendConfig->codec_frame_size_ms != 0 ) /* 0 means "default for current codec", will be set to actual value at a later stage */ + { + if ( pSplitRendConfig->codec == IVAS_SPLIT_REND_CODEC_LCLD && pSplitRendConfig->codec_frame_size_ms != 20 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Invalid framing for LCLD codec" ); + } + if ( pSplitRendConfig->codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && + ( pSplitRendConfig->codec_frame_size_ms != 5 && pSplitRendConfig->codec_frame_size_ms != 10 ) ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Invalid framing for LC3plus codec" ); + } + } +#endif + + /* Validate bitrate */ + if ( is_pcm_out == 0 ) + { + switch ( pSplitRendConfig->splitRendBitRate ) + { + case SPLIT_REND_256k: + if ( pSplitRendConfig->dof != 0 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrates of 320 kbps and lower are only valid with 0 DOF" ); + } + break; + case SPLIT_REND_320k: + /* Only valid with 0 DOF */ + if ( pSplitRendConfig->dof != 0 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrates of 320 kbps and lower are only valid with 0 DOF" ); + } + break; + case SPLIT_REND_384k: + case SPLIT_REND_512k: + /* Always valid */ + break; + case SPLIT_REND_768k: + if ( pSplitRendConfig->dof == 0 && pSplitRendConfig->codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "Bitrate is too high for LC3plus with 0 DOF" ); + } + break; + default: + return IVAS_ERR_LC3PLUS_INVALID_BITRATE; + } + } + else + { + if ( pSplitRendConfig->dof == 1 ) + { + if ( pSplitRendConfig->splitRendBitRate < 50000 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "1DOF metadata needs atleast 50 kbps" ); + } + } + else if ( pSplitRendConfig->dof == 2 ) + { + if ( pSplitRendConfig->splitRendBitRate < 66000 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "2DOF metadata needs atleast 66 kbps" ); + } + } + else if ( pSplitRendConfig->dof == 3 ) + { + if ( pSplitRendConfig->splitRendBitRate < 128000 ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_SPLIT_REND_CONFIG, "3DOF metadata needs atleast 128 kbps" ); + } + } + } + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_get_quant_params() + * + * + *------------------------------------------------------------------------*/ + +void ivas_split_rend_get_quant_params( + const int16_t num_md_bands, + int16_t pred_real_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_imag_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + int16_t pred_quant_pnts_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + float pred_quantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + float pred_1byquantstep_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], +#endif + int16_t d_bands_yaw[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t bands_pitch[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_real_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t pred_imag_bands_roll[IVAS_SPLIT_REND_NUM_QUANT_STRATS], + int16_t *num_quant_strats, + int16_t *num_complex_bands ) +{ + int16_t q; + + *num_quant_strats = IVAS_SPLIT_REND_NUM_QUANT_STRATS; + *num_complex_bands = COMPLEX_MD_BAND_THRESH_LOW; + assert( *num_complex_bands <= num_md_bands ); +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + pred_quant_pnts_yaw[0] = IVAS_SPLIT_REND_PRED_63QUANT_PNTS; + pred_quantstep_yaw[0] = IVAS_SPLIT_REND_PRED63_Q_STEP; + pred_1byquantstep_yaw[0] = IVAS_SPLIT_REND_PRED63_1BYQ_STEP; + for ( q = 1; q < *num_quant_strats; q++ ) + { + pred_quant_pnts_yaw[q] = IVAS_SPLIT_REND_PRED_31QUANT_PNTS; + pred_quantstep_yaw[q] = IVAS_SPLIT_REND_PRED31_Q_STEP; + pred_1byquantstep_yaw[q] = IVAS_SPLIT_REND_PRED31_1BYQ_STEP; + } +#endif + + for ( q = 0; q < *num_quant_strats; q++ ) + { + pred_real_bands_yaw[q] = num_md_bands; + pred_real_bands_roll[q] = num_md_bands; + } + pred_imag_bands_yaw[0] = num_md_bands; + pred_imag_bands_roll[0] = num_md_bands; +#ifndef SPLIT_REND_PRED_QUANT_63_PNTS + for ( q = 1; q < *num_quant_strats; q++ ) +#else + pred_imag_bands_yaw[1] = num_md_bands; + pred_imag_bands_roll[1] = num_md_bands; + for ( q = 2; q < *num_quant_strats; q++ ) +#endif + { +#ifndef SPLIT_REND_PRED_QUANT_63_PNTS + pred_imag_bands_yaw[q] = ( q == 1 ) ? num_md_bands : *num_complex_bands; +#else + pred_imag_bands_yaw[q] = ( q < ( *num_quant_strats - 1 ) ) ? num_md_bands : *num_complex_bands; +#endif + pred_imag_bands_roll[q] = *num_complex_bands; + } +#ifndef SPLIT_REND_PRED_QUANT_63_PNTS + d_bands_yaw[0] = 0; + bands_pitch[0] = num_md_bands; + for ( q = 1; q < *num_quant_strats; q++ ) + { + d_bands_yaw[q] = 0; + bands_pitch[q] = num_md_bands; + } +#else + for ( q = 0; q < *num_quant_strats; q++ ) + { + d_bands_yaw[q] = 0; + bands_pitch[q] = num_md_bands; + } +#endif + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_renderSplitGetMultiBinPoseData() + * + * + *------------------------------------------------------------------------*/ + +void ivas_renderSplitGetMultiBinPoseData( + const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData, + const IVAS_SPLIT_REND_ROT_AXIS rot_axis ) +{ + int16_t pos_idx, num_yaw_poses, num_pitch_poses, num_roll_poses; + const float *relative_yaw_angles; + const float *relative_pitch_angles; + const float *relative_roll_angles; + + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses[pos_idx][0] = 0.0f; + pMultiBinPoseData->relative_head_poses[pos_idx][1] = 0.0f; + pMultiBinPoseData->relative_head_poses[pos_idx][2] = 0.0f; + } + + /* 0 DOF defaults */ + num_yaw_poses = 0; + num_pitch_poses = 0; + num_roll_poses = 0; + + /* defaults for all DOF except 3DOF HQ */ + relative_yaw_angles = ivas_split_rend_relative_yaw_pos_angles_hq; + relative_pitch_angles = ivas_split_rend_relative_pitch_pos_angles_hq; + relative_roll_angles = ivas_split_rend_relative_roll_pos_angles_hq; + + if ( pSplit_rend_config->dof == 1 ) + { + switch ( rot_axis ) + { + case DEFAULT_AXIS: + case YAW: + { + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + break; + } + case PITCH: + { + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + break; + } + case ROLL: + { + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + break; + } + default: + { + assert( 0 && "unsupported rotation axis value" ); + } + } + } + else if ( pSplit_rend_config->dof == 2 ) + { + switch ( rot_axis ) + { + case DEFAULT_AXIS: + case YAW: + case PITCH: + case YAW_PITCH: + { + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + break; + } + case ROLL: + case YAW_ROLL: + { + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + break; + } + case PITCH_ROLL: + { + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + break; + } + default: + { + assert( 0 && "unsupported rotation axis value" ); + } + } + } + else if ( pSplit_rend_config->dof == 3 ) + { + if ( pSplit_rend_config->hq_mode == 1 ) + { + relative_yaw_angles = ivas_split_rend_relative_yaw_pos_angles_hq; + relative_pitch_angles = ivas_split_rend_relative_pitch_pos_angles_hq; + relative_roll_angles = ivas_split_rend_relative_roll_pos_angles_hq; + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + num_pitch_poses = SPLIT_REND_MAX_PITCH_ONLY_POSES; + num_roll_poses = SPLIT_REND_MAX_ROLL_ONLY_POSES; + } + else + { + relative_yaw_angles = ivas_split_rend_relative_yaw_pos_angles; + relative_pitch_angles = ivas_split_rend_relative_pitch_pos_angles; + relative_roll_angles = ivas_split_rend_relative_roll_pos_angles; + num_yaw_poses = SPLIT_REND_MAX_YAW_ONLY_POSES; + num_pitch_poses = 1; + num_roll_poses = 1; + } + } + + pMultiBinPoseData->num_poses = num_yaw_poses + num_pitch_poses + num_roll_poses + 1; + assert( pMultiBinPoseData->num_poses <= MAX_HEAD_ROT_POSES ); + + for ( pos_idx = 0; pos_idx < num_yaw_poses; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses[pos_idx + 1][0] = relative_yaw_angles[pos_idx]; + } + + for ( pos_idx = 0; pos_idx < num_pitch_poses; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses[pos_idx + num_yaw_poses + 1][1] = relative_pitch_angles[pos_idx]; + } + + for ( pos_idx = 0; pos_idx < num_roll_poses; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses[pos_idx + num_yaw_poses + num_pitch_poses + 1][2] = relative_roll_angles[pos_idx]; + } + pMultiBinPoseData->dof = pSplit_rend_config->dof; + pMultiBinPoseData->hq_mode = pSplit_rend_config->hq_mode; + pMultiBinPoseData->rot_axis = rot_axis; + pMultiBinPoseData->poseCorrectionMode = pSplit_rend_config->poseCorrectionMode; + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_renderSplitUpdateNoCorrectionPoseData() + * + * + *------------------------------------------------------------------------*/ + +void ivas_renderSplitUpdateNoCorrectionPoseData( + const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + pMultiBinPoseData->num_poses = 1; + assert( pSplit_rend_config->dof == 0 ); + pMultiBinPoseData->dof = pSplit_rend_config->dof; + assert( pSplit_rend_config->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE ); + pMultiBinPoseData->poseCorrectionMode = pSplit_rend_config->poseCorrectionMode; + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_init_multi_bin_pose_data() + * + * + *------------------------------------------------------------------------*/ + +void ivas_init_multi_bin_pose_data( + MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData ) +{ + int16_t pos_idx; + + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + pMultiBinPoseData->relative_head_poses[pos_idx][0] = 0.0f; + pMultiBinPoseData->relative_head_poses[pos_idx][1] = 0.0f; + pMultiBinPoseData->relative_head_poses[pos_idx][2] = 0.0f; + } + pMultiBinPoseData->num_poses = 1; + pMultiBinPoseData->dof = 3; + pMultiBinPoseData->hq_mode = 0; + pMultiBinPoseData->rot_axis = DEFAULT_AXIS; + + return; +} + + +/*------------------------------------------------------------------------- + * Function ivas_split_rend_choose_default_codec() + * + * + *------------------------------------------------------------------------*/ +#ifdef API_5MS +ivas_error +#else +void +#endif +ivas_split_rend_choose_default_codec( IVAS_SPLIT_REND_CODEC *pCodec, +#ifdef API_5MS + int16_t *pCodec_frame_size_ms, +#endif + int16_t isRenderingInTd, + int16_t pcm_out ) +{ + if ( pcm_out == 0 ) + { + if ( *pCodec == IVAS_SPLIT_REND_CODEC_DEFAULT ) + { + *pCodec = isRenderingInTd ? IVAS_SPLIT_REND_CODEC_LC3PLUS : IVAS_SPLIT_REND_CODEC_LCLD; + } + } + else + { + *pCodec = IVAS_SPLIT_REND_CODEC_NONE; + } + +#ifdef API_5MS + if ( *pCodec_frame_size_ms == 0 ) /* codec frame size hasn't been set yet - use default for current configuration */ + { + switch ( *pCodec ) + { + case IVAS_SPLIT_REND_CODEC_LCLD: + *pCodec_frame_size_ms = 20; + break; + case IVAS_SPLIT_REND_CODEC_LC3PLUS: + case IVAS_SPLIT_REND_CODEC_NONE: + *pCodec_frame_size_ms = 5; + break; + default: + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Unknown split codec value" ); + } + } + + return IVAS_ERR_OK; +#else + return; +#endif +} +#endif diff --git a/lib_rend/ivas_stat_rend.h b/lib_rend/ivas_stat_rend.h index c763630325297df7dc08b38100fa4b99d5c32c79..18dba0c798077c5570a48b4c1a348d5f7a9fa4c4 100644 --- a/lib_rend/ivas_stat_rend.h +++ b/lib_rend/ivas_stat_rend.h @@ -39,6 +39,12 @@ #include "ivas_stat_com.h" // note: needed for DIRAC_DEC_BIN_HANDLE until #156 is solved #include "stat_com.h" /* Note: Currently needed for CLDFB. */ #include "common_api_types.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "stat_com.h" +#include "ivas_lcld_prot.h" +#include "ivas_lc3plus_enc.h" +#include "ivas_lc3plus_dec.h" +#endif /*----------------------------------------------------------------------------------* @@ -65,6 +71,353 @@ typedef struct ivas_output_setup_structure } IVAS_OUTPUT_SETUP, *IVAS_OUTPUT_SETUP_HANDLE; +/*----------------------------------------------------------------------------------* + * Spatial parametric rendering common structures + *----------------------------------------------------------------------------------*/ + +/*Onset detector*/ +typedef struct dirac_onset_detection_params_structure +{ + int16_t num_freq_bands; + int16_t max_band_decorr; + +} DIRAC_ONSET_DETECTION_PARAMS; + +typedef struct dirac_onset_detection_state_structure +{ + float *onset_detector_1; + float *onset_detector_2; + +} DIRAC_ONSET_DETECTION_STATE; + +/*Decorrelator*/ +typedef struct dirac_decorr_params_structure +{ + int16_t max_band_decorr; + int16_t max_frequency; + + int16_t *pre_delay; + int16_t *filter_length; + float *filter_coeff_num_real; + float *filter_coeff_den_real; + float *phase_coeff_real; + float *phase_coeff_imag; + int16_t *split_frequency_bands; + int16_t num_split_frequency_bands; + + int16_t use_ducker; + int16_t add_back_onsets_on; + + DIRAC_ONSET_DETECTION_PARAMS h_onset_detection_power_params; + +} DIRAC_DECORR_PARAMS, *HANDLE_DIRAC_DECORR_PARAMS; + +typedef struct dirac_decorr_state_structure +{ + float *decorr_buffer; + float *direct_energy_smooth; + float *reverb_energy_smooth; + + DIRAC_ONSET_DETECTION_STATE h_onset_detection_power_state; + +} DIRAC_DECORR_STATE, *HANDLE_DIRAC_DECORR_STATE; + +typedef struct ivas_spatial_parametric_rend_common_data_structure +{ + int16_t slot_size; + int16_t subframe_nbslots[MAX_JBM_SUBFRAMES_5MS]; + int16_t subframes_rendered; + int16_t slots_rendered; + int16_t num_slots; + int16_t render_to_md_map[MAX_JBM_SUBFRAMES_5MS * JBM_CLDFB_SLOTS_IN_SUBFRAME]; + int16_t nb_subframes; + + int16_t num_freq_bands; + int16_t numSimultaneousDirections; /* From 1 to 2 + MAX_NUM_OBJECTS */ + int16_t numParametricDirections; /* 1 or 2 */ + int16_t numIsmDirections; /* From 0 to MAX_NUM_OBJECTS */ + + int16_t **azimuth; + int16_t **elevation; + int16_t **azimuth2; + int16_t **elevation2; + + float **diffuseness_vector; + float **energy_ratio1; + float **energy_ratio2; + + float **spreadCoherence; + float **spreadCoherence2; + float **surroundingCoherence; + + /* Metadata access indices and buffer size */ + int16_t dirac_bs_md_write_idx; + int16_t dirac_read_idx; + int16_t dirac_md_buffer_length; + +} SPAT_PARAM_REND_COMMON_DATA, *SPAT_PARAM_REND_COMMON_DATA_HANDLE; + + +/*----------------------------------------------------------------------------------* + * DirAC rendering structures + *----------------------------------------------------------------------------------*/ + +typedef struct dirac_dec_stack_mem +{ + /*Decorrelator*/ + float *frame_dec_f; + + /*Prototypes*/ + float *proto_direct_buffer_f; + float *proto_diffuse_buffer_f; + + /*Prototype NRGs*/ + float *proto_power_smooth; + float *proto_power_diff_smooth; + + /*Gain or power factors for directional and diffuse streams*/ + float *direct_power_factor; + float *diffuse_power_factor; + + /*Directional responses (gains & Nrg)*/ + float *direct_responses; + float *direct_responses_square; + + /* Target co-variance mtx */ + float *cy_auto_dir_smooth; + float *cy_cross_dir_smooth; + float *cy_auto_diff_smooth; + + float *reference_power; + float *onset_filter; + +} DIRAC_DEC_STACK_MEM, *DIRAC_DEC_STACK_MEM_HANDLE; + +/*Output synthesis*/ +typedef struct dirac_output_synthesis_params_structure +{ + int16_t max_band_decorr; + + int16_t use_onset_filters; + + float *interpolator; + float *alpha_synthesis; + float *alpha_synthesis_fast; + int16_t numAlphas; + int16_t numAlphasFast; + + float *proto_matrix; + + float diffuse_compensation_factor; + float diffuse_compensation_factor_decorr; + +} DIRAC_OUTPUT_SYNTHESIS_PARAMS; + +typedef struct dirac_output_synthesis_state_structure +{ + /* only pointer to local buffers */ + float *direct_responses; /* direct responses for DOA of current frame. Size: num_freq_bands*num_channels. */ + float *direct_responses_square; + float *diffuse_responses_square; /* squared diffuse responses. Size: num_channels. */ + + /* only pointer to local buffers */ + float *direct_power_factor; + float *diffuse_power_factor; + + float *proto_power_smooth; /* Smoothed power of the prototype signals. Size: num_freq_bands*num_channels. */ + float *proto_power_smooth_prev; /* Smoothed power of the prototype signals of the previous synthesis block. Size: num_freq_bands*num_channels. */ + + float *proto_power_diff_smooth; + float *proto_power_diff_smooth_prev; + + /* only pointer to local buffers */ + float *proto_direct_buffer_f; /* Buffer for direct sound prototype signals. Size: 2*num_freq_bands*num_channels*buffer_length (complex interleaved). */ + float *proto_diffuse_buffer_f; /* Buffer for diffuse sound prototype signals. Size: 2*num_freq_bands*num_channels*buffer_length (complex interleaved). */ + + /* Output gain memories */ + float *gains_dir_prev; /* Direct sound gains of current synthesis block. Size: num_freq_bands*num_channel. */ + float *gains_diff_prev; /* Diffuse sound gains of previous synthesis block. Size: num_freq_bands*num_channel. */ + + /* only pointer to local buffers */ + float *cy_auto_dir_smooth; /* Target auto PSD of direct sound. Size: num_freq_bands*num_channels. */ + float *cy_cross_dir_smooth; /* Target cross PSD of direct sound. Size: num_freq_bands*num_channels. */ + float *cy_auto_diff_smooth; /* Target auto PSD of diffuse sound. Size: num_freq_bands*num_channels. */ + + /* PSD memories */ + float *cy_auto_dir_smooth_prev; /* Target auto PSD of direct sound of previous synthesis block. Size: num_freq_bands*num_channels. */ + float *cy_cross_dir_smooth_prev; /* Target cross PSD of direct sound of previous synthesis block. Size: num_freq_bands*num_channels. */ + float *cy_auto_diff_smooth_prev; /* Target auto PSD of diffuse sound of previous synthesis block. Size: num_freq_bands*num_channels. */ + + const float *onset_filter; + + /* Temporal smoothing memories */ + float *reference_power_smooth_prev; + float *direction_smoothness_prev; + +} DIRAC_OUTPUT_SYNTHESIS_STATE; + +/* MASA stereo transport signal type detection structure */ +typedef struct +{ + MASA_TRANSPORT_SIGNAL_TYPE masa_stereo_type; + MASA_TRANSPORT_SIGNAL_TYPE current_stereo_type; + MASA_TRANSPORT_SIGNAL_TYPE type_change_direction; + + int16_t dipole_freq_range[2]; + + float left_bb_power; + float right_bb_power; + float total_bb_power; + + float left_hi_power; + float right_hi_power; + float total_hi_power; + + float sum_power[MASA_SUM_FREQ_RANGE_BINS]; + float total_power[MASA_SUM_FREQ_RANGE_BINS]; + + float subtract_power_y; + float subtract_power_y_smooth; + float target_power_y_smooth; + + float lr_total_bb_ratio_db; + float lr_total_hi_ratio_db; + float min_sum_total_ratio_db; + float subtract_target_ratio_db; + + int16_t counter; + int16_t interpolator; + +} MASA_STEREO_TYPE_DETECT; + +/* McMASA LFE synthesis structure */ +typedef struct ivas_mcmasa_lfe_synth_struct +{ + float lfeToTotalEnergyRatio[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t lfeGainPrevIndex; + float transportEneSmooth; + float protoLfeEneSmooth; + float targetEneLfeSmooth; + float targetEneTransSmooth; + + float *lfeSynthRingBuffer; + int16_t ringBufferLoPointer; + int16_t ringBufferHiPointer; + float lowpassSum; + int16_t ringBufferSize; + + float *lfeSynthRingBuffer2; + int16_t ringBufferLoPointer2; + float lowpassSum2; + int16_t ringBufferSize2; + + float *delayBuffer_syncLp; + int16_t delayBuffer_syncLp_size; + + float *delayBuffer_syncDirAC; + int16_t delayBuffer_syncDirAC_size; + + float lfeGainPrev; + float transportGainPrev; + float interpolator[CLDFB_NO_CHANNELS_MAX]; + +} MCMASA_LFE_SYNTH_DATA, *MCMASA_LFE_SYNTH_DATA_HANDLE; + +/* DirAC renderer main structure */ +typedef struct ivas_dirac_rend_data_structure +{ + IVAS_OUTPUT_SETUP hOutSetup; + + /*Parameter estimation*/ + int16_t index_buffer_intensity; + float *buffer_intensity_real[DIRAC_NUM_DIMS][DIRAC_NO_COL_AVG_DIFF]; + float *buffer_energy; + + float *frequency_axis; + float *diffuse_response_function; + float *hoa_encoder; + const float *hoa_decoder; + + /*Decoder parameters */ + /*Prototypes*/ + int16_t num_outputs_dir; + int16_t num_outputs_diff; + int16_t num_protos_dir; + int16_t num_protos_diff; + int16_t num_protos_ambi; + DIRAC_SYNTHESIS_CONFIG synthesisConf; + DIRAC_PANNING_CONFIG panningConf; + + /* prototype computing */ + int16_t *proto_index_dir; + int16_t *proto_index_diff; + + int16_t proto_signal_decorr_on; + + /*Decoder states=memories*/ + float *proto_frame_f; + float *proto_frame_dec_f; + + DIRAC_DEC_STACK_MEM stack_mem; + MASA_STEREO_TYPE_DETECT *masa_stereo_type_detect; + + int16_t num_ele_spk_no_diffuse_rendering; + + const int16_t *sba_map_tc; + + DIRAC_OUTPUT_SYNTHESIS_PARAMS h_output_synthesis_psd_params; + DIRAC_OUTPUT_SYNTHESIS_STATE h_output_synthesis_psd_state; + + HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params; + HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state; + +} DIRAC_REND_DATA, *DIRAC_REND_HANDLE; + + +/*----------------------------------------------------------------------------------* + * VBAP structures + *----------------------------------------------------------------------------------*/ + +/* Defines a single virtual surface triplet of loudspeakers + * with a precalculated inverse matrix */ +typedef struct vbap_vs_triplet_structure +{ + uint8_t speaker_node[3]; + float inverse_matrix[3][3]; + +} VBAP_VS_TRIPLET; + + +/* Storage structure for fast runtime triplet search */ +typedef struct triplet_search_structure +{ + VBAP_VS_TRIPLET *triplets; + int16_t num_triplets; + int16_t initial_search_indices[VBAP_NUM_SEARCH_SECTORS]; + +} VBAP_SEARCH_STRUCT; + + +/* VBAP data structure. Contains the formed virtual surface arrangement * and supporting data. */ +typedef struct vbap_data_structure +{ + VBAP_SEARCH_STRUCT search_struct[2]; /* Default to max two groups in this implementation */ + int16_t num_search_structs; + int16_t num_speaker_nodes; + int16_t num_speaker_nodes_internal; + int16_t top_virtual_speaker_node_index; /* These indices can be negative */ + int16_t bottom_virtual_speaker_node_index; + int16_t back_virtual_speaker_node_index; + float *bottom_virtual_speaker_node_division_gains; + float *top_virtual_speaker_node_division_gains; + float *back_virtual_speaker_node_division_gains; + float *object_mode_bottom_virtual_speaker_node_division_gains; + float *object_mode_top_virtual_speaker_node_division_gains; + float *object_mode_back_virtual_speaker_node_division_gains; + +} VBAP_DATA, *VBAP_HANDLE; + + /*----------------------------------------------------------------------------------* * Binaural FastConv Rendering structure *----------------------------------------------------------------------------------*/ @@ -107,6 +460,17 @@ typedef struct ivas_binaural_reverb_struct } REVERB_STRUCT, *REVERB_STRUCT_HANDLE; + +/* Diffuse sound directional distribution data structure */ +typedef struct ivas_diffuse_distribution_data_structure +{ + float diffuseRatioX[CLDFB_NO_CHANNELS_MAX]; + float diffuseRatioY[CLDFB_NO_CHANNELS_MAX]; + float diffuseRatioZ[CLDFB_NO_CHANNELS_MAX]; + +} DIFFUSE_DISTRIBUTION_DATA, *DIFFUSE_DISTRIBUTION_HANDLE; + + /* Parametric binaural data structure */ typedef struct ivas_dirac_dec_binaural_data_structure { @@ -122,8 +486,8 @@ typedef struct ivas_dirac_dec_binaural_data_structure float ChEneOut[BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; float ChCrossReOut[CLDFB_NO_CHANNELS_MAX]; float ChCrossImOut[CLDFB_NO_CHANNELS_MAX]; - float processMtxRe[BINAURAL_CHANNELS][BINAURAL_CHANNELS + 1][CLDFB_NO_CHANNELS_MAX]; /* +1 refers to SeparateChannel */ - float processMtxIm[BINAURAL_CHANNELS][BINAURAL_CHANNELS + 1][CLDFB_NO_CHANNELS_MAX]; + float processMtxRe[BINAURAL_CHANNELS][BINAURAL_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_CHANNELS_MAX]; + float processMtxIm[BINAURAL_CHANNELS][BINAURAL_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_CHANNELS_MAX]; float processMtxDecRe[BINAURAL_CHANNELS][BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; float processMtxDecIm[BINAURAL_CHANNELS][BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; float diffuseFieldCoherence[CLDFB_NO_CHANNELS_MAX]; @@ -134,15 +498,19 @@ typedef struct ivas_dirac_dec_binaural_data_structure REVERB_STRUCT_HANDLE hReverb; uint8_t renderStereoOutputInsteadOfBinaural; float frameMeanDiffuseness[CLDFB_NO_CHANNELS_MAX]; - float processMtxRePrev[BINAURAL_CHANNELS][BINAURAL_CHANNELS + 1][CLDFB_NO_CHANNELS_MAX]; - float processMtxImPrev[BINAURAL_CHANNELS][BINAURAL_CHANNELS + 1][CLDFB_NO_CHANNELS_MAX]; + float processMtxRePrev[BINAURAL_CHANNELS][BINAURAL_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_CHANNELS_MAX]; + float processMtxImPrev[BINAURAL_CHANNELS][BINAURAL_CHANNELS + MAX_NUM_OBJECTS][CLDFB_NO_CHANNELS_MAX]; float processMtxDecRePrev[BINAURAL_CHANNELS][BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; float processMtxDecImPrev[BINAURAL_CHANNELS][BINAURAL_CHANNELS][CLDFB_NO_CHANNELS_MAX]; - uint16_t useSubframeMode; /* 0 = process in 20 ms frames, 1 = process in 5 ms subframes */ uint16_t useTdDecorr; ivas_td_decorr_state_t *hTdDecorr; float reqularizationFactor; + DIFFUSE_DISTRIBUTION_HANDLE hDiffuseDist; + + HANDLE_DIRAC_DECORR_PARAMS h_freq_domain_decorr_ap_params; + HANDLE_DIRAC_DECORR_STATE h_freq_domain_decorr_ap_state; + } DIRAC_DEC_BIN_DATA, *DIRAC_DEC_BIN_HANDLE; typedef struct ivas_binaural_rendering_conv_module_struct @@ -152,8 +520,13 @@ typedef struct ivas_binaural_rendering_conv_module_struct float ***filterTapsRightReal; float ***filterTapsRightImag; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float ****filterStatesLeftReal; + float ****filterStatesLeftImag; +#else float ***filterStatesLeftReal; float ***filterStatesLeftImag; +#endif int16_t numTapsArray[BINAURAL_CONVBANDS]; int16_t numTaps; @@ -248,16 +621,27 @@ typedef struct ivas_orient_trk_state_t typedef struct { int8_t headRotEnabled; +#ifdef API_5MS + IVAS_QUATERNION headPositions[MAX_PARAM_SPATIAL_SUBFRAMES]; + IVAS_VECTOR3 Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; + float crossfade[L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES]; +#else IVAS_QUATERNION headPositions[RENDERER_HEAD_POSITIONS_PER_FRAME]; IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME]; float crossfade[L_FRAME48k / RENDERER_HEAD_POSITIONS_PER_FRAME]; +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; +#endif ivas_orient_trk_state_t *hOrientationTracker; } IVAS_REND_HeadRotData; typedef struct ivas_binaural_head_track_struct { +#ifndef API_5MS int16_t num_quaternions; +#endif IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES]; IVAS_VECTOR3 Pos[MAX_PARAM_SPATIAL_SUBFRAMES]; float Rmat[3][3]; @@ -273,6 +657,10 @@ typedef struct ivas_binaural_head_track_struct int16_t shd_rot_max_order; ivas_orient_trk_state_t *OrientationTracker; +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; +#endif + } HEAD_TRACK_DATA, *HEAD_TRACK_DATA_HANDLE; /*----------------------------------------------------------------------------------* @@ -286,7 +674,9 @@ typedef struct ivas_external_orientation_struct int8_t enableRotationInterpolation[MAX_PARAM_SPATIAL_SUBFRAMES]; /* 0 - disable, 1 - enable */ int16_t numFramesToTargetOrientation[MAX_PARAM_SPATIAL_SUBFRAMES]; /* Number of frames until target orientation is reached */ IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES]; /* External orientation in quaternions */ - +#ifdef API_5MS + int16_t num_subframes; +#endif } EXTERNAL_ORIENTATION_DATA, *EXTERNAL_ORIENTATION_HANDLE; /*----------------------------------------------------------------------------------* @@ -304,24 +694,35 @@ typedef struct ivas_combined_orientation_struct float lrSwitchInterpVal; bool isInterpolationOngoing; IVAS_QUATERNION Quaternions[MAX_PARAM_SPATIAL_SUBFRAMES]; - IVAS_QUATERNION Quaternions_prev_headRot[MAX_PARAM_SPATIAL_SUBFRAMES]; - IVAS_QUATERNION Quaternions_prev_extOrientation[MAX_PARAM_SPATIAL_SUBFRAMES]; + IVAS_QUATERNION Quaternion_prev_extOrientation; IVAS_QUATERNION Quaternions_ext_interpolation_start; IVAS_QUATERNION Quaternions_ext_interpolation_target; float Rmat[MAX_PARAM_SPATIAL_SUBFRAMES][3][3]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + float Rmat_prev[MAX_HEAD_ROT_POSES][3][3]; +#else float Rmat_prev[3][3]; +#endif float chEneIIR[2][MASA_FREQUENCY_BANDS]; /* independent of the format. MASA bands are suitable for the task and readily available in ROM. */ float procChEneIIR[2][MASA_FREQUENCY_BANDS]; int16_t shd_rot_max_order; IVAS_VECTOR3 listenerPos[MAX_PARAM_SPATIAL_SUBFRAMES]; - +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_ROT_AXIS sr_pose_pred_axis; +#endif + IVAS_QUATERNION Quaternion_frozen_ext; + IVAS_QUATERNION Quaternion_frozen_head; + int8_t isExtOrientationFrozen; + int8_t isHeadRotationFrozen; +#ifdef API_5MS + int16_t num_subframes; +#endif } COMBINED_ORIENTATION_DATA, *COMBINED_ORIENTATION_HANDLE; + /*----------------------------------------------------------------------------------* * Reverberator structure *----------------------------------------------------------------------------------*/ -/* Reverberator structures */ - typedef struct ivas_roomAcoustics_t { @@ -332,6 +733,11 @@ typedef struct ivas_roomAcoustics_t float pAcoustic_dsr[CLDFB_NO_CHANNELS_MAX]; /* - The room's Diffuse to Source Ratio per center frequency */ float acousticPreDelay; /* Time elapsed between input signal and late reverberation start, float, range [0.001..10] */ float inputPreDelay; /* Offset in seconds from where DSR is computed in the RIR (0 = at source), float, range [0.001..10] */ + int16_t use_er; /* ER activation flag */ + int32_t lowComplexity; /* Low complexity ER flag */ + IVAS_VECTOR3 dimensions; /* Room dimensions [m] */ + float AbsCoeff[ER_ABS_COEFF]; /* Absorption coeffs */ + IVAS_VECTOR3 ListenerOrigin; /* Listener origin */ } ivas_roomAcoustics_t; @@ -341,7 +747,10 @@ typedef struct ivas_render_config_t ivas_renderTypeOverride renderer_type_override; #endif ivas_roomAcoustics_t roomAcoustics; - float directivity[3]; + float directivity[MAX_NUM_OBJECTS * 3]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + IVAS_SPLIT_REND_CONFIG_DATA split_rend_config; +#endif } RENDER_CONFIG_DATA, *RENDER_CONFIG_HANDLE; @@ -424,6 +833,93 @@ typedef struct ivas_reverb_state_t } REVERB_DATA, *REVERB_HANDLE; +/*----------------------------------------------------------------------------------* + * Shoebox structure + *----------------------------------------------------------------------------------*/ + +/* Structure to hold the original bitstream metadata */ +typedef struct +{ + float room_L; + float room_W; + float room_H; + float abs_coeff[ER_ABS_COEFF]; + float list_orig[3]; + +} shoebox_config_t; + +/* Structure to hold the corrected( bounded ) source and listener positions */ +typedef struct +{ + uint16_t isCartesian; + uint16_t isRelative; + uint16_t isZHeight; + uint16_t isRadians; + uint16_t MAX_SOURCES; + uint16_t max_bands; + uint16_t REF_ORDER; + float src_pos[75]; + float src_dist[25]; + float list_pos[3]; + uint16_t nSrc; + float radius; + float min_wall_dist; + float soundspeed; + float air_coeff; + shoebox_config_t cal; +} shoebox_obj_t; + + +typedef struct shoebox_data_t +{ + float data[150]; + int32_t size[1]; + +} shoebox_data_t; + + +typedef struct +{ + uint16_t n_sources; + uint16_t n_ref; + shoebox_data_t times; + shoebox_data_t gains; + shoebox_data_t az_angle; + shoebox_data_t el_angle; + +} shoebox_output_t; + +/*----------------------------------------------------------------------------------* + * Reflections structure + *----------------------------------------------------------------------------------*/ + +/* Structure to hold the original source positions */ +typedef struct er_struct_t +{ + AUDIO_CONFIG audio_config; + int16_t nchan_out; + uint16_t use_er; + uint32_t lowComplexity; + uint16_t n_LC_sources; + uint16_t *LC_mixing; + uint16_t is_ready; + uint16_t circ_len; + uint16_t circ_insert; + uint16_t n_total_reflections; + uint16_t is_cartesian; + uint16_t is_relative; + uint32_t max_frame_size; + float output_Fs; + float source_positions[75]; + float user_origin[3]; + float *circ_buffers; + uint16_t *closest_ch_idx; + shoebox_output_t shoebox_data; + shoebox_obj_t shoebox_lib; + +} er_struct_t; + + /*----------------------------------------------------------------------------------* * TD ISM Object Renderer structure *----------------------------------------------------------------------------------*/ @@ -570,6 +1066,8 @@ typedef struct TDREND_HRFILT_FiltSet_struct ModelParamsITD_t ModelParamsITD; TDREND_HRFILT_Method_t FilterMethod; /* HR filtering method */ float latency_s; + const float *lr_energy_and_iac[3]; /* left/right energy and interaural coherence for late reverb */ + float *lr_energy_and_iac_dyn[3]; } TDREND_HRFILT_FiltSet_t; @@ -717,6 +1215,7 @@ typedef struct ivas_crend_state_t REVERB_HANDLE hReverb; int16_t delay_line_rw_index; int16_t diffuse_delay_line_rw_index; + er_struct_t *reflections; } CREND_DATA, *CREND_HANDLE; @@ -724,12 +1223,44 @@ typedef struct ivas_crend_state_t typedef struct ivas_binaural_crend_wrapper_struct { int32_t binaural_latency_ns; +#ifdef SPLIT_REND_WITH_HEAD_ROT + CREND_HANDLE hCrend[MAX_HEAD_ROT_POSES]; +#else CREND_HANDLE hCrend; +#endif HRTFS_HANDLE hHrtfCrend; } CREND_WRAPPER, *CREND_WRAPPER_HANDLE; +#ifdef 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*/ + float *hoa_dec_mtx; /* pointer to HOA decoder mtx */ + int8_t rotInCldfb; /* Flag to enable rotation within bin Renderer in CLDFB*/ + int16_t max_band; /* band upto which rendering is performed */ + int16_t conv_band; /* band upto which convolution in cldfb domain is performed */ + int16_t timeSlots; /* number of time slots of binaural renderer */ + int16_t nInChannels; /* number input channels */ + int8_t 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 hBinRenConvModule; + + /* Variables related to reverberator module */ + float earlyPartEneCorrection[CLDFB_NO_CHANNELS_MAX]; + REVERB_STRUCT_HANDLE hReverb; + + int16_t numPoses; + +} BINAURAL_RENDERER, *BINAURAL_RENDERER_HANDLE; +#endif + /*------------------------------------------------------------------------------------------* * HRTF structures - htrfs from binary files *------------------------------------------------------------------------------------------*/ @@ -749,33 +1280,37 @@ typedef struct ivas_hrtfs_crend_structure typedef struct ivas_hrtfs_fastconv_struct { - float FASTCONV_HRIR_latency_s; - float leftHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; - float leftHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; - float rightHRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; - float rightHRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS]; - float FASTCONV_HOA3_latency_s; - float leftHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; - float leftHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; - float rightHRIRReal_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; - float rightHRIRImag_HOA3[BINAURAL_CONVBANDS][HRTF_SH_CHANNELS][BINAURAL_NTAPS]; + float FASTCONV_HRIR_latency_s; + float ***leftHRIRReal_HOA3; + float ***leftHRIRImag_HOA3; + float ***rightHRIRReal_HOA3; + float ***rightHRIRImag_HOA3; + + float ***leftHRIRReal; + float ***leftHRIRImag; + float ***rightHRIRReal; + float ***rightHRIRImag; + + float ***leftBRIRReal; + float ***leftBRIRImag; + float ***rightBRIRReal; + float ***rightBRIRImag; + float FASTCONV_BRIR_latency_s; + float ***leftHRIRReal_HOA2; + float ***leftHRIRImag_HOA2; + float ***rightHRIRReal_HOA2; + float ***rightHRIRImag_HOA2; float FASTCONV_HOA2_latency_s; - float leftHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; - float leftHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; - float rightHRIRReal_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; - float rightHRIRImag_HOA2[BINAURAL_CONVBANDS][9][BINAURAL_NTAPS]; + + float ***leftHRIRReal_FOA; + float ***leftHRIRImag_FOA; + float ***rightHRIRReal_FOA; + float ***rightHRIRImag_FOA; float FASTCONV_FOA_latency_s; - float leftHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; - float leftHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; - float rightHRIRReal_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; - float rightHRIRImag_FOA[BINAURAL_CONVBANDS][4][BINAURAL_NTAPS]; - float FASTCONV_BRIR_latency_s; - float leftBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; - float leftBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; - float rightBRIRReal[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; - float rightBRIRImag[BINAURAL_CONVBANDS][HRTF_LS_CHANNELS][BINAURAL_NTAPS_MAX]; + + int16_t allocate_init_flag; /*Memory allocation flag 0: if the hrtf pointers are allocated at application level , 1: of allocated at ivas_binaural_hrtf_open() */ float fastconvReverberationTimes[CLDFB_NO_CHANNELS_MAX]; float fastconvReverberationEneCorrections[CLDFB_NO_CHANNELS_MAX]; @@ -795,6 +1330,202 @@ typedef struct ivas_hrtfs_parambin_struct } HRTFS_PARAMBIN, *HRTFS_PARAMBIN_HANDLE; +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------------------* + * Binaural split rendering structures + *----------------------------------------------------------------------------------*/ + +/* binaural split rendering head rotation data structure */ +typedef struct ivas_binaural_head_rot_split_rendering_md_struct +{ + float pred_mat_re[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float pred_mat_im[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float gd; + float gd2; + int16_t pred_mat_re_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t pred_mat_im_idx[BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + int16_t gd_idx; + int16_t gd2_idx; + +} BIN_HR_SPLIT_REND_MD, *BIN_HR_SPLIT_REND_MD_HANDLE; + +typedef struct ivas_split_rend_huffman_cfg_t +{ + const int32_t *codebook; + int16_t min_len; + int16_t max_len; + int16_t sym_len; + +} ivas_split_rend_huffman_cfg_t; + +typedef struct ivas_binaural_head_rot_split_rendering_huff_struct +{ +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + ivas_split_rend_huffman_cfg_t pred[2]; + int16_t pred_idx_trav[2][IVAS_SPLIT_REND_PRED_63QUANT_PNTS]; + int16_t pred_base2_code_len[2]; +#else + ivas_split_rend_huffman_cfg_t pred; + int16_t pred_idx_trav[IVAS_SPLIT_REND_PRED_QUANT_PNTS]; + int16_t pred_base2_code_len; +#endif + +#ifdef SPLIT_REND_PRED_QUANT_63_PNTS + ivas_split_rend_huffman_cfg_t pred_roll; + int16_t pred_roll_idx_trav[IVAS_SPLIT_REND_ROLL_PRED_QUANT_PNTS]; + int16_t pred_roll_base2_code_len; +#endif + ivas_split_rend_huffman_cfg_t gd; + int16_t gd_base2_code_len; + int16_t gd_idx_trav[IVAS_SPLIT_REND_D_QUANT_PNTS]; + ivas_split_rend_huffman_cfg_t p_gd; + int16_t p_gd_base2_code_len; + int16_t p_gd_idx_trav[IVAS_SPLIT_REND_D_QUANT_PNTS]; + ivas_split_rend_huffman_cfg_t p_gd_diff; + int16_t p_gd_diff_base2_code_len; + int16_t p_gd_diff_idx_trav[IVAS_SPLIT_REND_D_QUANT_PNTS]; + +} BIN_HR_SPLIT_REND_HUFF, *BIN_HR_SPLIT_REND_HUFF_HANDLE; + +typedef struct ivas_binaural_head_rot_split_pre_rendering_struct +{ + BIN_HR_SPLIT_REND_MD rot_md[MAX_HEAD_ROT_POSES - 1][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS]; + float fix_pos_rot_mat[MAX_HEAD_ROT_POSES - 1][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + IVAS_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1]; + BIN_HR_SPLIT_REND_HUFF huff_cfg; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HANDLE_CLDFB_FILTER_BANK cldfbSynRotBinDec[MAX_HEAD_ROT_POSES + 1][BINAURAL_CHANNELS]; +#endif + +#ifdef SPLIT_POSE_CORRECTION_DEBUG + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend; +#endif + +} BIN_HR_SPLIT_PRE_REND, *BIN_HR_SPLIT_PRE_REND_HANDLE; + +typedef struct ivas_binaural_head_rot_split_post_rendering_struct +{ + BIN_HR_SPLIT_REND_MD rot_md[MAX_HEAD_ROT_POSES][MAX_SPLIT_MD_SUBFRAMES][MAX_SPLIT_REND_MD_BANDS]; + IVAS_QUATERNION QuaternionsPre[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t low_Res; + + float fix_pos_rot_mat[MAX_HEAD_ROT_POSES - 1][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + IVAS_SPLIT_REND_POSE_TYPE pose_type[MAX_HEAD_ROT_POSES - 1]; + BIN_HR_SPLIT_REND_HUFF huff_cfg; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + float mixer_mat_re[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mixer_mat_im[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float gd_mem[MAX_HEAD_ROT_POSES][MAX_SPLIT_REND_MD_BANDS]; +#else + float mixer_mat_re[1][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float mixer_mat_im[1][MAX_SPLIT_REND_MD_BANDS][BINAURAL_CHANNELS][BINAURAL_CHANNELS]; + float gd_mem[1][MAX_SPLIT_REND_MD_BANDS]; +#endif + int16_t cf_flag; + HANDLE_CLDFB_FILTER_BANK cldfbAna[BINAURAL_CHANNELS]; + HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HANDLE_CLDFB_FILTER_BANK cldfbSynReconsBinDec[MAX_HEAD_ROT_POSES][BINAURAL_CHANNELS]; +#endif + +} BIN_HR_SPLIT_POST_REND, *BIN_HR_SPLIT_POST_REND_HANDLE; + +typedef struct ivas_binaural_head_rot_split_rendering_lcld_enc_struct +{ + void *pLcld_enc; + int16_t iChannels; + LCLDEncoder *psLCLDEncoder; + float ***pppfLCLDReal; + float ***pppfLCLDImag; +#ifdef CLDFB_DEBUG + FILE *cldfbIn; + int16_t numFrame; +#endif + +} BIN_HR_SPLIT_LCLD_ENC, *BIN_HR_SPLIT_LCLD_ENC_HANDLE; + +typedef struct +{ + float Cldfb_Prev_BinReal[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX + CLDFB_PLC_XF][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_Prev_BinImag[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX + CLDFB_PLC_XF][CLDFB_NO_CHANNELS_MAX]; +#if CLDFB_PLC_XF > 0 + float xf_bet[2][CLDFB_NO_CHANNELS_MAX][CLDFB_PLC_XF]; +#endif + +} CLDFB_PLC, *CLDFB_PLC_HANDLE; + +typedef struct +{ + CLDFB_PLC CldfbPLC_state; + int16_t prev_bfi; + int16_t bf_count; + +} SPLIT_REND_PLC_STRUCT, *SPLIT_REND_PLC_HANDLE; + +typedef struct ivas_binaural_head_rot_split_rendering_lcld_dec_struct +{ + void *pLcld_dec; + int32_t iChannels; + LCLDDecoder *psLCLDDecoder; + float ***pppfDecLCLDReal; + float ***pppfDecLCLDImag; +#ifdef CLDFB_DEBUG + FILE *cldfbOut; + int16_t numFrame; +#endif + SPLIT_REND_PLC_HANDLE hSplitRendPLC; + +} BIN_HR_SPLIT_LCLD_DEC, *BIN_HR_SPLIT_LCLD_DEC_HANDLE; + +typedef struct +{ +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + HANDLE_CLDFB_FILTER_BANK cldfbAna[( 1 + MAX_HEAD_ROT_POSES ) * BINAURAL_CHANNELS]; +#else + HANDLE_CLDFB_FILTER_BANK cldfbAna[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; +#endif +#ifdef OSBA_SPLIT_RENDERING + HANDLE_CLDFB_FILTER_BANK cldfbSyn[BINAURAL_CHANNELS]; +#endif + +} CLDFB_HANDLES_WRAPPER, *CLDFB_HANDLES_WRAPPER_HANDLE; + +typedef struct +{ + int16_t num_poses; + float relative_head_poses[MAX_HEAD_ROT_POSES][3]; + int16_t dof; + int16_t hq_mode; + IVAS_SPLIT_REND_ROT_AXIS rot_axis; + IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrectionMode; + +} MULTI_BIN_REND_POSE_DATA; + +typedef struct +{ + MULTI_BIN_REND_POSE_DATA multiBinPoseData; + BIN_HR_SPLIT_PRE_REND_HANDLE hBinHrSplitPreRend; + BIN_HR_SPLIT_LCLD_ENC_HANDLE hSplitBinLCLDEnc; + CLDFB_HANDLES_WRAPPER_HANDLE hCldfbHandles; + IVAS_LC3PLUS_ENC_HANDLE hLc3plusEnc; + BINAURAL_TD_OBJECT_RENDERER_HANDLE hTdRendHandles[MAX_HEAD_ROT_POSES - 1]; + float *lc3plusDelayBuffers[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS]; /* Used to time-align head pose correction metadata with LC3plus-coded reference audio */ + int32_t lc3plusDelaySamples; + +} SPLIT_REND_WRAPPER; + +typedef struct +{ + MULTI_BIN_REND_POSE_DATA multiBinPoseData; + BIN_HR_SPLIT_POST_REND_HANDLE hBinHrSplitPostRend; + BIN_HR_SPLIT_LCLD_DEC_HANDLE hSplitBinLCLDDec; + int16_t first_good_frame_received; + IVAS_LC3PLUS_DEC_HANDLE hLc3plusDec; + +} SPLIT_POST_REND_WRAPPER; +#endif + + /*----------------------------------------------------------------------------------* * Limiter structure *----------------------------------------------------------------------------------*/ @@ -869,12 +1600,28 @@ typedef struct ivas_LS_setup_custom } LSSETUP_CUSTOM_STRUCT, *LSSETUP_CUSTOM_HANDLE; +#ifdef SPLIT_REND_WITH_HEAD_ROT + +/*----------------------------------------------------------------------------------* + * CLDFB renderer wrapper + *----------------------------------------------------------------------------------*/ + +typedef struct +{ + int32_t binaural_latency_ns; + BINAURAL_RENDERER_HANDLE hCldfbRend; + HRTFS_FASTCONV_HANDLE hHrtfFastConv; +} CLDFB_REND_WRAPPER; + +#endif + /* Channel types in a channel-based config */ typedef enum { CHANNEL_TYPE_UNUSED = 0, CHANNEL_TYPE_SPEAKER, CHANNEL_TYPE_LFE + } ChannelType; /*----------------------------------------------------------------------------------* diff --git a/lib_rend/lib_rend.c b/lib_rend/lib_rend.c index 4e75d5fea8d18b56814306cae5f13a2392158b12..96f2d4952a1ec4cdc6c1380e394a73ce1b120d32 100644 --- a/lib_rend/lib_rend.c +++ b/lib_rend/lib_rend.c @@ -51,12 +51,32 @@ /* 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_PER_CHANNEL ( L_FRAME48k ) +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL ( MAX_BUFFER_LENGTH_PER_CHANNEL * 2 ) +#endif /* Maximum buffer length (total) in samples. */ +/* Maximum buffer length (total) in samples. */ +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#define MAX_CLDFB_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#define MAX_BIN_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) +#ifdef API_5MS +#define MAX_CLDFB_BIN_BUFFER_LENGTH ( MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL * BINAURAL_CHANNELS ) +#endif +#else #define MAX_BUFFER_LENGTH ( MAX_BUFFER_LENGTH_PER_CHANNEL * MAX_INPUT_CHANNELS ) +#endif + + +#define MAX_BIN_DELAY_SAMPLES 50 /* Maximum supported rendering latency for binaural IRs */ /* Frame size required when rendering to binaural */ +#ifdef API_5MS +#define BINAURAL_RENDERING_FRAME_SIZE_MS 5 +#else #define BINAURAL_RENDERING_FRAME_SIZE_MS 20 +#endif /*-------------------------------------------------------------------* @@ -72,7 +92,7 @@ typedef float rotation_matrix[3][3]; typedef struct { EFAP_HANDLE hEfap; - IVAS_REND_AudioConfig speakerConfig; + AUDIO_CONFIG speakerConfig; const LSSETUP_CUSTOM_STRUCT *pCustomLsSetup; /* Pointer to main custom LS struct from renderer handle - doesn't need freeing */ } EFAP_WRAPPER; @@ -86,10 +106,16 @@ typedef struct typedef struct { const int32_t *pOutSampleRate; - const IVAS_REND_AudioConfig *pOutConfig; + const AUDIO_CONFIG *pOutConfig; const LSSETUP_CUSTOM_STRUCT *pCustomLsOut; const EFAP_WRAPPER *pEfapOutWrapper; const IVAS_REND_HeadRotData *pHeadRotData; +#ifdef SPLIT_REND_WITH_HEAD_ROT + const RENDER_CONFIG_HANDLE *hhRendererConfig; + const int16_t *pSplitRendBFI; + const SPLIT_REND_WRAPPER *pSplitRendWrapper; +#endif + /* TODO @Philips : would this be a better place to store the render config data? * bearing in mind we could have multiple inputs to the renderer, we might neeed to accomodate * multiple rendering configurations unless one global one can be used. If this is not relevant, @@ -101,10 +127,9 @@ typedef struct /* Common base for input structs */ typedef struct { - IVAS_REND_AudioConfig inConfig; + AUDIO_CONFIG inConfig; IVAS_REND_InputId id; IVAS_REND_AudioBuffer inputBuffer; - float bufferData[MAX_BUFFER_LENGTH]; float gain; /* Linear, not in dB */ rendering_context ctx; int32_t numNewSamplesPerChannel; /* Used to keep track how much new audio was fed before rendering current frame */ @@ -119,10 +144,15 @@ typedef struct CREND_WRAPPER_HANDLE crendWrapper; REVERB_HANDLE hReverb; rotation_matrix rot_mat_prev; +#ifdef SPLIT_REND_WITH_HEAD_ROT + TDREND_WRAPPER splitTdRendWrappers[MAX_HEAD_ROT_POSES - 1]; /* Additional TD Rend instances used for split rendering */ +#endif + float *bufferData; int16_t nonDiegeticPan; float nonDiegeticPanGain; OMASA_ANA_HANDLE hOMasa; uint16_t total_num_objects; + float ism_metadata_delay_ms; } input_ism; typedef struct @@ -147,11 +177,21 @@ 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 rot_gains_prev[MAX_HEAD_ROT_POSES]; +#else rotation_gains rot_gains_prev; +#endif int16_t nonDiegeticPan; float nonDiegeticPanGain; lfe_routing lfeRouting; + float *bufferData; + int16_t binauralDelaySmp; + float *lfeDelayBuffer; MCMASA_ANA_HANDLE hMcMasa; } input_mc; @@ -159,11 +199,31 @@ typedef struct { input_base base; pan_matrix hoaDecMtx; +#ifdef SPLIT_REND_WITH_HEAD_ROT + CLDFB_REND_WRAPPER cldfbRendWrapper; +#endif CREND_WRAPPER_HANDLE crendWrapper; +#ifdef SPLIT_REND_WITH_HEAD_ROT + rotation_gains rot_gains_prev[MAX_HEAD_ROT_POSES]; +#else rotation_gains rot_gains_prev; +#endif + + float *bufferData; DIRAC_ANA_HANDLE hDirAC; } input_sba; +#ifdef SPLIT_REND_WITH_HEAD_ROT +typedef struct +{ + input_base base; + SPLIT_POST_REND_WRAPPER splitPostRendWrapper; + float *bufferData; + int16_t numCachedSamples; /* Number of decoded samples in bufferData that have not yet been played out */ + IVAS_REND_BitstreamBuffer *hBits; +} input_split_post_rend; +#endif + /* Due to API of some rendering methods, the renderer has to use the decoder struct. Only struct members relevant for rendering will be initialized, therefore typedef as "dummy" decoder struct */ typedef Decoder_Struct DecoderDummy; @@ -174,6 +234,7 @@ typedef struct DecoderDummy *decDummy; MASA_METADATA_FRAME masaMetadata; bool metadataHasBeenFed; + float *bufferData; MASA_PREREND_HANDLE hMasaPrerend; } input_masa; @@ -190,20 +251,34 @@ struct IVAS_REND input_mc inputsMc[RENDERER_MAX_MC_INPUTS]; input_sba inputsSba[RENDERER_MAX_SBA_INPUTS]; input_masa inputsMasa[RENDERER_MAX_MASA_INPUTS]; +#ifdef SPLIT_REND_WITH_HEAD_ROT + input_split_post_rend inputsSplitPost[RENDERER_MAX_BIN_INPUTS]; +#endif /* TODO @Philips - inputConfig should not be stored here, but read from e.g. input_mc->input_base.inConfig, please remove this */ - IVAS_REND_AudioConfig inputConfig; - IVAS_REND_AudioConfig outputConfig; + AUDIO_CONFIG inputConfig; + AUDIO_CONFIG outputConfig; 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 + int16_t splitRendBFI; +#endif EXTERNAL_ORIENTATION_HANDLE hExternalOrientationData; COMBINED_ORIENTATION_HANDLE hCombinedOrientationData; int8_t rendererConfigEnabled; RENDER_CONFIG_DATA *hRendererConfig; /* Renderer config pointer */ + +#ifdef API_5MS + int16_t num_subframes; +#endif }; @@ -211,6 +286,50 @@ struct IVAS_REND * Local functions *-------------------------------------------------------------------*/ +static ivas_error allocateInputBaseBufferData( float **data, const int16_t data_size ) +{ + *data = (float *) malloc( data_size * sizeof( float ) ); + if ( *data == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for input base buffer data" ); + } + + return IVAS_ERR_OK; +} + +static void freeInputBaseBufferData( float **data ) +{ + if ( *data != NULL ) + { + free( *data ); + *data = NULL; + } + + return; +} + +static ivas_error allocateMcLfeDelayBuffer( float **lfeDelayBuffer, const int16_t data_size ) +{ + *lfeDelayBuffer = (float *) malloc( data_size * sizeof( float ) ); + if ( *lfeDelayBuffer == NULL ) + { + return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Cannot allocate memory for LFE delay buffer" ); + } + + return IVAS_ERR_OK; +} + +static void freeMcLfeDelayBuffer( float **lfeDelayBuffer ) +{ + if ( *lfeDelayBuffer != NULL ) + { + free( *lfeDelayBuffer ); + *lfeDelayBuffer = NULL; + } + + return; +} + static IVAS_QUATERNION quaternionInit( void ) { @@ -228,6 +347,106 @@ static float *getSmplPtr( return buffer.data + chnlIdx * buffer.config.numSamplesPerChannel + smplIdx; } +#ifdef SPLIT_REND_WITH_HEAD_ROT +static void convertBitsBufferToInternalBitsBuff( + const IVAS_REND_BitstreamBuffer outBits, + ivas_split_rend_bits_t *hBits ) +{ + hBits->bits_buf = outBits.bits; + hBits->bits_read = outBits.config.bitsRead; + hBits->bits_written = outBits.config.bitsWritten; + hBits->buf_len = outBits.config.bufLenInBytes; + hBits->codec = outBits.config.codec; + hBits->pose_correction = outBits.config.poseCorrection; +#ifdef API_5MS + hBits->codec_frame_size_ms = outBits.config.codec_frame_size_ms; +#endif + + return; +} + +static void convertInternalBitsBuffToBitsBuffer( + IVAS_REND_BitstreamBuffer *hOutBits, + const ivas_split_rend_bits_t bits ) +{ + hOutBits->bits = bits.bits_buf; + hOutBits->config.bitsRead = bits.bits_read; + hOutBits->config.bitsWritten = bits.bits_written; + hOutBits->config.bufLenInBytes = bits.buf_len; + hOutBits->config.codec = bits.codec; + hOutBits->config.poseCorrection = bits.pose_correction; +#ifdef API_5MS + hOutBits->config.codec_frame_size_ms = bits.codec_frame_size_ms; +#endif + + return; +} + +static void copyBufferToCLDFBarray( + const IVAS_REND_AudioBuffer buffer, + float re[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float im[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX] ) +{ + uint32_t smplIdx, slotIdx; + uint32_t numCldfbSamples, num_bands; + uint32_t chnlIdx; + const float *readPtr; + + assert( ( buffer.config.is_cldfb == 1 ) && "for time domain input call copyBufferTo2dArray()" ); + readPtr = buffer.data; + numCldfbSamples = ( (uint32_t) buffer.config.numSamplesPerChannel ) >> 1; + num_bands = numCldfbSamples / CLDFB_NO_COL_MAX; + for ( chnlIdx = 0; chnlIdx < (uint32_t) buffer.config.numChannels; ++chnlIdx ) + { + for ( slotIdx = 0; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) + { + for ( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + re[chnlIdx][slotIdx][smplIdx] = *readPtr++; + } + for ( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + im[chnlIdx][slotIdx][smplIdx] = *readPtr++; + } + } + } + + return; +} + +static void accumulateCLDFBArrayToBuffer( + float re[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float im[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + IVAS_REND_AudioBuffer *buffer ) +{ + uint32_t smplIdx, slotIdx; + uint32_t numCldfbSamples, num_bands; + uint32_t chnlIdx; + float *writePtr; + + assert( ( buffer->config.is_cldfb == 1 ) && "for time domain input call copyBufferTo2dArray()" ); + writePtr = buffer->data; + numCldfbSamples = ( (uint32_t) buffer->config.numSamplesPerChannel ) >> 1; + num_bands = numCldfbSamples / CLDFB_NO_COL_MAX; + for ( chnlIdx = 0; chnlIdx < (uint32_t) buffer->config.numChannels; ++chnlIdx ) + { + for ( slotIdx = 0; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) + { + for ( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + *writePtr++ += re[chnlIdx][slotIdx][smplIdx]; + } + for ( smplIdx = 0; smplIdx < num_bands; ++smplIdx ) + { + *writePtr++ += im[chnlIdx][slotIdx][smplIdx]; + } + } + } + + return; +} +#endif /* SPLIT_REND_WITH_HEAD_ROT */ + static void copyBufferTo2dArray( const IVAS_REND_AudioBuffer buffer, float array[MAX_OUTPUT_CHANNELS][L_FRAME48k] ) @@ -236,6 +455,9 @@ static void copyBufferTo2dArray( uint32_t chnlIdx; const float *readPtr; +#ifdef SPLIT_REND_WITH_HEAD_ROT + assert( ( buffer.config.is_cldfb == 0 ) && "for CLDFB input call copyBufferToCLDFBarray()" ); +#endif readPtr = buffer.data; for ( chnlIdx = 0; chnlIdx < (uint32_t) buffer.config.numChannels; ++chnlIdx ) @@ -251,6 +473,9 @@ static void copyBufferTo2dArray( static void accumulate2dArrayToBuffer( float array[MAX_OUTPUT_CHANNELS][L_FRAME48k], +#ifdef SPLIT_REND_WITH_HEAD_ROT + const +#endif IVAS_REND_AudioBuffer *buffer ) { int16_t smplIdx, chnlIdx; @@ -321,125 +546,34 @@ static int32_t limitRendererOutput( /*-------------------------------------------------------------------* - * getIvasAudioConfigFromRendAudioConfig() - * - * - *-------------------------------------------------------------------*/ - -AUDIO_CONFIG getIvasAudioConfigFromRendAudioConfig( - IVAS_REND_AudioConfig rendConfig ) -{ - switch ( rendConfig ) - { - case IVAS_REND_AUDIO_CONFIG_MONO: - return AUDIO_CONFIG_MONO; - case IVAS_REND_AUDIO_CONFIG_STEREO: - return AUDIO_CONFIG_STEREO; - case IVAS_REND_AUDIO_CONFIG_5_1: - return AUDIO_CONFIG_5_1; - case IVAS_REND_AUDIO_CONFIG_7_1: - return AUDIO_CONFIG_7_1; - case IVAS_REND_AUDIO_CONFIG_5_1_2: - return AUDIO_CONFIG_5_1_2; - case IVAS_REND_AUDIO_CONFIG_5_1_4: - return AUDIO_CONFIG_5_1_4; - case IVAS_REND_AUDIO_CONFIG_7_1_4: - return AUDIO_CONFIG_7_1_4; - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: - return AUDIO_CONFIG_LS_CUSTOM; - case IVAS_REND_AUDIO_CONFIG_FOA: - return AUDIO_CONFIG_FOA; - case IVAS_REND_AUDIO_CONFIG_HOA2: - return AUDIO_CONFIG_HOA2; - case IVAS_REND_AUDIO_CONFIG_HOA3: - return AUDIO_CONFIG_HOA3; - case IVAS_REND_AUDIO_CONFIG_OBJECT: - return AUDIO_CONFIG_OBA; - case IVAS_REND_AUDIO_CONFIG_BINAURAL: - return AUDIO_CONFIG_BINAURAL; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - return AUDIO_CONFIG_BINAURAL_ROOM_IR; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - return AUDIO_CONFIG_BINAURAL_ROOM_REVERB; - case IVAS_REND_AUDIO_CONFIG_MASA1: - return AUDIO_CONFIG_MASA1; - case IVAS_REND_AUDIO_CONFIG_MASA2: - return AUDIO_CONFIG_MASA2; - default: - break; - } - - return AUDIO_CONFIG_INVALID; -} - -/*-------------------------------------------------------------------* - * getRendAudioConfigFromIvasAudioConfig() + * validateOutputAudioConfig() * * *-------------------------------------------------------------------*/ -IVAS_REND_AudioConfig getRendAudioConfigFromIvasAudioConfig( - AUDIO_CONFIG config ) +static ivas_error validateOutputAudioConfig( + const AUDIO_CONFIG outConfig ) { - switch ( config ) + switch ( outConfig ) { case AUDIO_CONFIG_MONO: - return IVAS_REND_AUDIO_CONFIG_MONO; case AUDIO_CONFIG_STEREO: - return IVAS_REND_AUDIO_CONFIG_STEREO; - case AUDIO_CONFIG_BINAURAL: - return IVAS_REND_AUDIO_CONFIG_BINAURAL; - case AUDIO_CONFIG_BINAURAL_ROOM_IR: - return IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR; - case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - return IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB; case AUDIO_CONFIG_5_1: - return IVAS_REND_AUDIO_CONFIG_5_1; case AUDIO_CONFIG_7_1: - return IVAS_REND_AUDIO_CONFIG_7_1; case AUDIO_CONFIG_5_1_2: - return IVAS_REND_AUDIO_CONFIG_5_1_2; case AUDIO_CONFIG_5_1_4: - return IVAS_REND_AUDIO_CONFIG_5_1_4; case AUDIO_CONFIG_7_1_4: - return IVAS_REND_AUDIO_CONFIG_7_1_4; + case AUDIO_CONFIG_LS_CUSTOM: case AUDIO_CONFIG_FOA: - return IVAS_REND_AUDIO_CONFIG_FOA; case AUDIO_CONFIG_HOA2: - return IVAS_REND_AUDIO_CONFIG_HOA2; case AUDIO_CONFIG_HOA3: - return IVAS_REND_AUDIO_CONFIG_HOA3; - default: - break; - } - return IVAS_REND_AUDIO_CONFIG_UNKNOWN; -} - -/*-------------------------------------------------------------------* - * validateOutputAudioConfig() - * - * - *-------------------------------------------------------------------*/ - -static ivas_error validateOutputAudioConfig( - IVAS_REND_AudioConfig outConfig ) -{ - switch ( outConfig ) - { - case IVAS_REND_AUDIO_CONFIG_MONO: - case IVAS_REND_AUDIO_CONFIG_STEREO: - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1_4: - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: - case IVAS_REND_AUDIO_CONFIG_FOA: - case IVAS_REND_AUDIO_CONFIG_HOA2: - case IVAS_REND_AUDIO_CONFIG_HOA3: - case IVAS_REND_AUDIO_CONFIG_BINAURAL: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + case AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: return IVAS_ERR_OK; default: break; @@ -456,10 +590,47 @@ static ivas_error validateOutputAudioConfig( *-------------------------------------------------------------------*/ IVAS_REND_AudioConfigType getAudioConfigType( - IVAS_REND_AudioConfig config ) + const AUDIO_CONFIG config ) { - /* By definition, config type is the second byte (from LSB) of IVAS_REND_AudioConfig enum. */ - return ( config & 0xFF00 ) >> 8; + IVAS_REND_AudioConfigType type; + + switch ( config ) + { + case AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_LS_CUSTOM: + type = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED; + break; + case AUDIO_CONFIG_FOA: + case AUDIO_CONFIG_HOA2: + case AUDIO_CONFIG_HOA3: + type = IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS; + break; + case AUDIO_CONFIG_OBA: + type = IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED; + break; + case AUDIO_CONFIG_BINAURAL: + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + type = IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL; + break; + case AUDIO_CONFIG_MASA1: + case AUDIO_CONFIG_MASA2: + type = IVAS_REND_AUDIO_CONFIG_TYPE_MASA; + break; + default: + type = IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN; + break; + } + + return type; } @@ -471,7 +642,7 @@ IVAS_REND_AudioConfigType getAudioConfigType( static ivas_error validateOutputSampleRate( const int32_t sampleRate, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { if ( getAudioConfigType( outConfig ) != IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) { @@ -500,43 +671,47 @@ static ivas_error validateOutputSampleRate( *-------------------------------------------------------------------*/ ivas_error getAudioConfigNumChannels( - const IVAS_REND_AudioConfig config, + const AUDIO_CONFIG config, int16_t *numChannels ) { switch ( config ) { - case IVAS_REND_AUDIO_CONFIG_MONO: - case IVAS_REND_AUDIO_CONFIG_OBJECT: - case IVAS_REND_AUDIO_CONFIG_MASA1: + case AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_OBA: + case AUDIO_CONFIG_MASA1: *numChannels = 1; break; - case IVAS_REND_AUDIO_CONFIG_STEREO: - case IVAS_REND_AUDIO_CONFIG_BINAURAL: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - case IVAS_REND_AUDIO_CONFIG_MASA2: + case AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + case AUDIO_CONFIG_MASA2: *numChannels = 2; break; - case IVAS_REND_AUDIO_CONFIG_FOA: + case AUDIO_CONFIG_FOA: *numChannels = 4; break; - case IVAS_REND_AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_5_1: *numChannels = 6; break; - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: *numChannels = 8; break; - case IVAS_REND_AUDIO_CONFIG_HOA2: + case AUDIO_CONFIG_HOA2: *numChannels = 9; break; - case IVAS_REND_AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_5_1_4: *numChannels = 10; break; - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_7_1_4: *numChannels = 12; break; - case IVAS_REND_AUDIO_CONFIG_HOA3: + case AUDIO_CONFIG_HOA3: *numChannels = 16; break; default: @@ -556,10 +731,10 @@ static ivas_error initLimiter( const int16_t numChannels, const int32_t sampleRate ) { + ivas_error error; + /* If re-initializing with unchanged values, return early */ - if ( *phLimiter != NULL && - ( *phLimiter )->num_channels == numChannels && - ( *phLimiter )->sampling_rate == sampleRate ) + if ( *phLimiter != NULL && ( *phLimiter )->num_channels == numChannels && ( *phLimiter )->sampling_rate == sampleRate ) { return IVAS_ERR_OK; } @@ -570,9 +745,9 @@ static ivas_error initLimiter( ivas_limiter_close( phLimiter ); } - if ( ( *phLimiter = ivas_limiter_open( numChannels, sampleRate ) ) == NULL ) + if ( ( error = ivas_limiter_open( phLimiter, numChannels, sampleRate ) ) != IVAS_ERR_OK ) { - return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Failed to open limiter handle" ); + return error; } return IVAS_ERR_OK; @@ -598,30 +773,30 @@ static LSSETUP_CUSTOM_STRUCT defaultCustomLs( } static ivas_error getSpeakerAzimuths( - IVAS_REND_AudioConfig config, + AUDIO_CONFIG config, const float **azimuths ) { switch ( config ) { - case IVAS_REND_AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_MONO: *azimuths = ls_azimuth_CICP1; break; - case IVAS_REND_AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_STEREO: *azimuths = ls_azimuth_CICP2; break; - case IVAS_REND_AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_5_1: *azimuths = ls_azimuth_CICP6; break; - case IVAS_REND_AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_7_1: *azimuths = ls_azimuth_CICP12; break; - case IVAS_REND_AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_2: *azimuths = ls_azimuth_CICP14; break; - case IVAS_REND_AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_5_1_4: *azimuths = ls_azimuth_CICP16; break; - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_7_1_4: *azimuths = ls_azimuth_CICP19; break; default: @@ -632,30 +807,30 @@ static ivas_error getSpeakerAzimuths( } static ivas_error getSpeakerElevations( - IVAS_REND_AudioConfig config, + AUDIO_CONFIG config, const float **elevations ) { switch ( config ) { - case IVAS_REND_AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_MONO: *elevations = ls_elevation_CICP1; break; - case IVAS_REND_AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_STEREO: *elevations = ls_elevation_CICP2; break; - case IVAS_REND_AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_5_1: *elevations = ls_elevation_CICP6; break; - case IVAS_REND_AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_7_1: *elevations = ls_elevation_CICP12; break; - case IVAS_REND_AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_2: *elevations = ls_elevation_CICP14; break; - case IVAS_REND_AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_5_1_4: *elevations = ls_elevation_CICP16; break; - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_7_1_4: *elevations = ls_elevation_CICP19; break; default: @@ -666,18 +841,18 @@ static ivas_error getSpeakerElevations( } static ivas_error getAmbisonicsOrder( - IVAS_REND_AudioConfig config, + AUDIO_CONFIG config, int16_t *order ) { switch ( config ) { - case IVAS_REND_AUDIO_CONFIG_FOA: + case AUDIO_CONFIG_FOA: *order = 1; break; - case IVAS_REND_AUDIO_CONFIG_HOA2: + case AUDIO_CONFIG_HOA2: *order = 2; break; - case IVAS_REND_AUDIO_CONFIG_HOA3: + case AUDIO_CONFIG_HOA3: *order = 3; break; default: @@ -692,13 +867,13 @@ static int16_t getNumLfeChannels( { switch ( inputMc->base.inConfig ) { - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1_4: return 1; - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: + case AUDIO_CONFIG_LS_CUSTOM: return inputMc->customLsInput.num_lfe; default: break; @@ -708,28 +883,28 @@ static int16_t getNumLfeChannels( } static ivas_error getNumNonLfeChannelsInSpeakerLayout( - IVAS_REND_AudioConfig config, + AUDIO_CONFIG config, int16_t *numNonLfeChannels ) { switch ( config ) { - case IVAS_REND_AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_MONO: *numNonLfeChannels = 1; break; - case IVAS_REND_AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_STEREO: *numNonLfeChannels = 2; break; - case IVAS_REND_AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_5_1: *numNonLfeChannels = 5; break; - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_7_1: *numNonLfeChannels = 7; break; - case IVAS_REND_AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_5_1_4: *numNonLfeChannels = 9; break; - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_7_1_4: *numNonLfeChannels = 11; break; default: @@ -740,8 +915,12 @@ static ivas_error getNumNonLfeChannelsInSpeakerLayout( } static ivas_error getMcConfigValues( - IVAS_REND_AudioConfig inConfig, + AUDIO_CONFIG inConfig, +#ifdef API_5MS + const LSSETUP_CUSTOM_STRUCT *pInCustomLs, +#else LSSETUP_CUSTOM_STRUCT inCustomLs, +#endif const float **azimuth, const float **elevation, int16_t *lfe_idx, @@ -753,7 +932,23 @@ static ivas_error getMcConfigValues( *is_planar = 1; switch ( inConfig ) { - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: + case AUDIO_CONFIG_LS_CUSTOM: +#ifdef API_5MS + *azimuth = (const float *) &pInCustomLs->ls_azimuth; + *elevation = (const float *) &pInCustomLs->ls_elevation; + if ( pInCustomLs->num_lfe > 0 ) + { + *lfe_idx = pInCustomLs->lfe_idx[0]; + } + for ( i = 0; i < pInCustomLs->num_spk; i++ ) + { + if ( pInCustomLs->ls_elevation[i] != 0 ) + { + *is_planar = 0; + break; + } + } +#else *azimuth = (const float *) &inCustomLs.ls_azimuth; *elevation = (const float *) &inCustomLs.ls_elevation; if ( inCustomLs.num_lfe > 0 ) @@ -768,21 +963,22 @@ static ivas_error getMcConfigValues( break; } } +#endif break; - case IVAS_REND_AUDIO_CONFIG_MONO: - case IVAS_REND_AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_STEREO: getSpeakerAzimuths( inConfig, azimuth ); getSpeakerElevations( inConfig, elevation ); break; - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1_4: getSpeakerAzimuths( inConfig, azimuth ); getSpeakerElevations( inConfig, elevation ); *lfe_idx = LFE_CHANNEL; - *is_planar = ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 || inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) ? 1 : 0; + *is_planar = ( inConfig == AUDIO_CONFIG_5_1 || inConfig == AUDIO_CONFIG_7_1 ) ? 1 : 0; break; default: assert( !"Invalid speaker config" ); @@ -794,7 +990,7 @@ static ivas_error getMcConfigValues( static ivas_error initEfap( EFAP_WRAPPER *pEfapWrapper, - IVAS_REND_AudioConfig outConfig, + AUDIO_CONFIG outConfig, const LSSETUP_CUSTOM_STRUCT *pCustomLsOut ) { ivas_error error; @@ -802,9 +998,9 @@ static ivas_error initEfap( const float *elevations; int16_t numNonLfeChannels; - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR || outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR || outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - pEfapWrapper->speakerConfig = IVAS_REND_AUDIO_CONFIG_7_1_4; + pEfapWrapper->speakerConfig = AUDIO_CONFIG_7_1_4; } else { @@ -825,7 +1021,7 @@ static ivas_error initEfap( return IVAS_ERR_OK; } - if ( outConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( outConfig == AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = efap_init_data( &pEfapWrapper->hEfap, pCustomLsOut->ls_azimuth, pCustomLsOut->ls_elevation, pCustomLsOut->num_spk, EFAP_MODE_EFAP ) ) != IVAS_ERR_OK ) { @@ -875,7 +1071,7 @@ static ivas_error getEfapGains( efap_determine_gains( efapWrapper.hEfap, tmpPanGains, azi, ele, EFAP_MODE_EFAP ); /* Now copy to buffer that includes LFE channels */ - if ( efapWrapper.speakerConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( efapWrapper.speakerConfig == AUDIO_CONFIG_LS_CUSTOM ) { numChannels = efapWrapper.pCustomLsSetup->num_spk + efapWrapper.pCustomLsSetup->num_lfe; readPtr = tmpPanGains; @@ -931,7 +1127,7 @@ static ivas_error initHeadRotation( hIvasRend->headRotData.headRotEnabled = 1; /* Initialize 5ms crossfade */ - crossfade_len = L_FRAME48k / RENDERER_HEAD_POSITIONS_PER_FRAME; + crossfade_len = L_FRAME48k / MAX_PARAM_SPATIAL_SUBFRAMES; tmp = 1.f / ( crossfade_len - 1 ); for ( i = 0; i < crossfade_len; i++ ) { @@ -939,11 +1135,19 @@ static ivas_error initHeadRotation( } /* Initialize with unit quaternions */ +#ifdef API_5MS + for ( i = 0; i < hIvasRend->num_subframes; ++i ) +#else for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) +#endif { hIvasRend->headRotData.headPositions[i] = quaternionInit(); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + hIvasRend->headRotData.sr_pose_pred_axis = DEFAULT_AXIS; +#endif + if ( ( hIvasRend->headRotData.hOrientationTracker = (ivas_orient_trk_state_t *) malloc( sizeof( ivas_orient_trk_state_t ) ) ) == NULL ) { return IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for Orientation tracking" ); @@ -989,6 +1193,7 @@ static void initRotGains( rotation_gains rot_gains ) { int16_t i; + /* Set gains to passthrough */ for ( i = 0; i < MAX_INPUT_CHANNELS; i++ ) { @@ -999,11 +1204,14 @@ static void initRotGains( return; } + static void initRendInputBase( input_base *inputBase, - const IVAS_REND_AudioConfig inConfig, + const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, - const rendering_context rendCtx ) + const rendering_context rendCtx, + float *dataBuf, + const int16_t dataBufSize ) { inputBase->inConfig = inConfig; inputBase->id = id; @@ -1013,13 +1221,16 @@ static void initRendInputBase( inputBase->inputBuffer.config.numSamplesPerChannel = 0; inputBase->inputBuffer.config.numChannels = 0; - inputBase->inputBuffer.data = inputBase->bufferData; - - set_zero( inputBase->bufferData, MAX_BUFFER_LENGTH ); + inputBase->inputBuffer.data = dataBuf; + if ( inputBase->inputBuffer.data != NULL ) + { + set_zero( inputBase->inputBuffer.data, dataBufSize ); + } return; } + static IVAS_REND_AudioObjectPosition defaultObjectPosition( void ) { @@ -1035,6 +1246,7 @@ static IVAS_REND_AudioObjectPosition defaultObjectPosition( return pos; } + static rendering_context getRendCtx( IVAS_REND_HANDLE hIvasRend ) { @@ -1048,11 +1260,17 @@ 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; } + static TDREND_WRAPPER defaultTdRendWrapper( void ) { @@ -1065,25 +1283,34 @@ static TDREND_WRAPPER defaultTdRendWrapper( return w; } + static CREND_WRAPPER defaultCrendWrapper( void ) { CREND_WRAPPER w; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t i; + for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + w.hCrend[i] = NULL; + } +#else w.hCrend = NULL; +#endif w.hHrtfCrend = NULL; w.binaural_latency_ns = 0; return w; } + static bool isIoConfigPairSupported( - IVAS_REND_AudioConfig inConfig, - IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig ) { /* Rendering mono or stereo to binaural is not supported */ - if ( ( inConfig == IVAS_REND_AUDIO_CONFIG_MONO || inConfig == IVAS_REND_AUDIO_CONFIG_STEREO ) && - getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) + if ( ( inConfig == AUDIO_CONFIG_MONO || inConfig == AUDIO_CONFIG_STEREO ) && getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) { return false; } @@ -1094,7 +1321,7 @@ static bool isIoConfigPairSupported( static ivas_error initIsmMasaRendering( input_ism *inputIsm, - int32_t inSampleRate ) + const int32_t inSampleRate ) { ivas_error error; @@ -1103,7 +1330,14 @@ static ivas_error initIsmMasaRendering( ivas_td_binaural_close( &inputIsm->tdRendWrapper.hBinRendererTd ); inputIsm->tdRendWrapper.hHrtfTD = NULL; } - ivas_rend_closeCrend( &inputIsm->crendWrapper ); + + ivas_rend_closeCrend( &inputIsm->crendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inputIsm->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ); + ivas_reverb_close( &inputIsm->hReverb ); if ( ( error = ivas_omasa_ana_open( &inputIsm->hOMasa, inSampleRate, inputIsm->total_num_objects ) ) != IVAS_ERR_OK ) @@ -1114,16 +1348,20 @@ static ivas_error initIsmMasaRendering( return IVAS_ERR_OK; } + static ivas_error setRendInputActiveIsm( void *input, - const IVAS_REND_AudioConfig inConfig, + const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg ) { ivas_error error; rendering_context rendCtx; - IVAS_REND_AudioConfig outConfig; + AUDIO_CONFIG outConfig; input_ism *inputIsm; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t i; +#endif inputIsm = (input_ism *) input; rendCtx = inputIsm->base.ctx; @@ -1134,26 +1372,65 @@ static ivas_error setRendInputActiveIsm( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } - initRendInputBase( &inputIsm->base, inConfig, id, rendCtx ); - - inputIsm->currentPos = defaultObjectPosition(); + if ( ( error = allocateInputBaseBufferData( &inputIsm->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) + { + return error; + } + initRendInputBase( &inputIsm->base, inConfig, id, rendCtx, inputIsm->bufferData, MAX_BUFFER_LENGTH ); + + inputIsm->currentPos = defaultObjectPosition(); inputIsm->previousPos = defaultObjectPosition(); inputIsm->crendWrapper = NULL; inputIsm->hReverb = NULL; inputIsm->tdRendWrapper = defaultTdRendWrapper(); initRotMatrix( inputIsm->rot_mat_prev ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < (int16_t) ( sizeof( inputIsm->splitTdRendWrappers ) / sizeof( *inputIsm->splitTdRendWrappers ) ); ++i ) + { + inputIsm->splitTdRendWrappers[i] = defaultTdRendWrapper(); + } +#endif + inputIsm->hOMasa = NULL; error = IVAS_ERR_OK; - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( outConfig == AUDIO_CONFIG_BINAURAL || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#else + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR ) +#endif { - if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, AUDIO_CONFIG_7_1_4, getIvasAudioConfigFromRendAudioConfig( outConfig ), hRendCfg, - NULL, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) +#ifndef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *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; } + + /* Open TD renderer wrappers */ + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( ( error = ivas_td_binaural_open_ext( &inputIsm->splitTdRendWrappers[i], + inConfig, + hRendCfg, + NULL, + *inputIsm->base.ctx.pOutSampleRate ) ) != 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 ( outConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || outConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + else if ( outConfig == AUDIO_CONFIG_MASA1 || outConfig == AUDIO_CONFIG_MASA2 ) { if ( ( error = initIsmMasaRendering( inputIsm, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { @@ -1162,35 +1439,71 @@ static ivas_error setRendInputActiveIsm( } else { +#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; } - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - if ( ( error = ivas_reverb_open( &( inputIsm->hReverb ), getIvasAudioConfigFromRendAudioConfig( outConfig ), NULL, hRendCfg, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + 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; + } + if ( outConfig == 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 == AUDIO_CONFIG_BINAURAL_ROOM_IR ) + { + if ( ( error = ivas_rend_openCrend( &inputIsm->crendWrapper, AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + } return IVAS_ERR_OK; } + static void clearInputIsm( input_ism *inputIsm ) { rendering_context rendCtx; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t i; +#endif rendCtx = inputIsm->base.ctx; - initRendInputBase( &inputIsm->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); + freeInputBaseBufferData( &inputIsm->base.inputBuffer.data ); + initRendInputBase( &inputIsm->base, AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); /* Free input's internal handles */ - ivas_rend_closeCrend( &inputIsm->crendWrapper ); + ivas_rend_closeCrend( &inputIsm->crendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inputIsm->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ); ivas_reverb_close( &inputIsm->hReverb ); @@ -1200,11 +1513,20 @@ static void clearInputIsm( inputIsm->tdRendWrapper.hHrtfTD = NULL; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < (int16_t) ( sizeof( inputIsm->splitTdRendWrappers ) / sizeof( *inputIsm->splitTdRendWrappers ) ); ++i ) + { + ivas_td_binaural_close( &inputIsm->splitTdRendWrappers[i].hBinRendererTd ); + inputIsm->splitTdRendWrappers[i].hHrtfTD = NULL; + } +#endif + ivas_omasa_ana_close( &( inputIsm->hOMasa ) ); return; } + static void copyLsConversionMatrixToPanMatrix( const LS_CONVERSION_MATRIX *lsConvMatrix, pan_matrix panMatrix ) @@ -1229,6 +1551,7 @@ static void copyLsConversionMatrixToPanMatrix( return; } + static void setZeroPanMatrix( pan_matrix panMatrix ) { @@ -1242,6 +1565,7 @@ static void setZeroPanMatrix( return; } + /* Note: this only sets non-zero elements, call setZeroPanMatrix() to init first. */ static void fillIdentityPanMatrix( pan_matrix panMatrix ) @@ -1256,6 +1580,7 @@ static void fillIdentityPanMatrix( return; } + static ivas_error initMcPanGainsWithIdentMatrix( input_mc *inputMc ) { @@ -1264,15 +1589,16 @@ static ivas_error initMcPanGainsWithIdentMatrix( return IVAS_ERR_OK; } + static ivas_error initMcPanGainsWithConversionMapping( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { AUDIO_CONFIG ivasConfigIn, ivasConfigOut; int16_t i; - ivasConfigIn = getIvasAudioConfigFromRendAudioConfig( inputMc->base.inConfig ); - ivasConfigOut = getIvasAudioConfigFromRendAudioConfig( outConfig ); + ivasConfigIn = inputMc->base.inConfig; + ivasConfigOut = outConfig; /* Find conversion mapping for current I/O config pair. * Stay with default panning matrix if conversion_matrix is NULL */ @@ -1298,9 +1624,10 @@ static ivas_error initMcPanGainsWithConversionMapping( return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Missing multichannel conversion mapping" ); } + static ivas_error initMcPanGainsWithEfap( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { int16_t i; int16_t numNonLfeInChannels; @@ -1308,7 +1635,7 @@ static ivas_error initMcPanGainsWithEfap( const float *spkAzi, *spkEle; ivas_error error; - if ( inputMc->base.inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inputMc->base.inConfig != AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = getNumNonLfeChannelsInSpeakerLayout( inputMc->base.inConfig, &numNonLfeInChannels ) ) != IVAS_ERR_OK ) { @@ -1352,7 +1679,7 @@ static ivas_error initMcPanGainsWithEfap( } } - if ( outConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM && inLfeChIdx >= 0 ) + if ( outConfig != AUDIO_CONFIG_LS_CUSTOM && inLfeChIdx >= 0 ) { inputMc->panGains[inLfeChIdx][LFE_CHANNEL] = 1; } @@ -1364,6 +1691,7 @@ static ivas_error initMcPanGainsWithEfap( return IVAS_ERR_OK; } + static ivas_error getRendInputNumChannels( const void *rendInput, int16_t *numInChannels ) @@ -1379,7 +1707,7 @@ static ivas_error getRendInputNumChannels( pInputBase = (const input_base *) rendInput; - if ( pInputBase->inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( pInputBase->inConfig == AUDIO_CONFIG_LS_CUSTOM ) { pInputMc = (const input_mc *) rendInput; *numInChannels = pInputMc->customLsInput.num_spk + pInputMc->customLsInput.num_lfe; @@ -1395,6 +1723,7 @@ static ivas_error getRendInputNumChannels( return IVAS_ERR_OK; } + static ivas_error initMcPanGainsWithMonoOut( input_mc *inputMc ) { @@ -1410,7 +1739,7 @@ static ivas_error initMcPanGainsWithMonoOut( return error; } - if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inputMc->base.inConfig == AUDIO_CONFIG_LS_CUSTOM ) { for ( i = 0; i < numInChannels; ++i ) { @@ -1419,7 +1748,7 @@ static ivas_error initMcPanGainsWithMonoOut( inputMc->panGains[i][0] = 1.f; } } - else if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_STEREO ) + else if ( inputMc->base.inConfig == AUDIO_CONFIG_STEREO ) { /* Special case for STEREO to MONO: Passive downmix (L+R)/2 */ inputMc->panGains[0][0] = 0.5; @@ -1430,7 +1759,7 @@ static ivas_error initMcPanGainsWithMonoOut( /* ls_conversion_cicpX_stereo contains gains for side speakers. * These should be skipped with 5.1+X inputs. */ skipSideSpeakers = false; - if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_5_1_2 || inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_5_1_4 ) + if ( inputMc->base.inConfig == AUDIO_CONFIG_5_1_2 || inputMc->base.inConfig == AUDIO_CONFIG_5_1_4 ) { skipSideSpeakers = true; } @@ -1449,6 +1778,7 @@ static ivas_error initMcPanGainsWithMonoOut( return IVAS_ERR_OK; } + static ivas_error initMcPanGainsWithStereoLookup( input_mc *inputMc ) { @@ -1460,7 +1790,7 @@ static ivas_error initMcPanGainsWithStereoLookup( /* Special case - MONO input. * Use gains for center CICP speaker and return early. */ - if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_MONO ) + if ( inputMc->base.inConfig == AUDIO_CONFIG_MONO ) { inputMc->panGains[0][0] = ls_conversion_cicpX_stereo[2][0]; inputMc->panGains[0][1] = ls_conversion_cicpX_stereo[2][1]; @@ -1470,7 +1800,7 @@ static ivas_error initMcPanGainsWithStereoLookup( /* ls_conversion_cicpX_stereo contains gains for side speakers. * These should be skipped with 5.1+X inputs. */ skipSideSpeakers = false; - if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_5_1_2 || inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_5_1_4 ) + if ( inputMc->base.inConfig == AUDIO_CONFIG_5_1_2 || inputMc->base.inConfig == AUDIO_CONFIG_5_1_4 ) { skipSideSpeakers = true; } @@ -1495,18 +1825,19 @@ static ivas_error initMcPanGainsWithStereoLookup( return IVAS_ERR_OK; } + /* Returns 1 (true) if configs A and B are equal, otherwise returns 0 (false). * If both configs are custom LS layouts, layout details are compared to determine equality. */ static bool configsAreEqual( - const IVAS_REND_AudioConfig configA, + const AUDIO_CONFIG configA, const LSSETUP_CUSTOM_STRUCT customLsA, - const IVAS_REND_AudioConfig configB, + const AUDIO_CONFIG configB, const LSSETUP_CUSTOM_STRUCT customLsB ) { int16_t i; /* Both input and output are custom LS - compare structs */ - if ( configA == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM && configB == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( configA == AUDIO_CONFIG_LS_CUSTOM && configB == AUDIO_CONFIG_LS_CUSTOM ) { if ( customLsA.num_spk != customLsB.num_spk ) { @@ -1525,7 +1856,7 @@ static bool configsAreEqual( for ( i = 0; i < customLsA.num_spk; ++i ) { - /* Compare to nearest degree (hence the int cast) */ + /* Compare to nearest degree (hence the int16_t cast) */ if ( (int16_t) customLsA.ls_azimuth[i] != (int16_t) customLsB.ls_azimuth[i] || (int16_t) customLsA.ls_elevation[i] != (int16_t) customLsB.ls_elevation[i] ) { @@ -1547,9 +1878,10 @@ static bool configsAreEqual( return configA == configB; } + static ivas_error updateLfePanGainsForMcOut( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { int16_t i, numLfeIn, numOutChannels; ivas_error error; @@ -1563,7 +1895,7 @@ static ivas_error updateLfePanGainsForMcOut( numLfeIn = getNumLfeChannels( inputMc ); - if ( outConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( outConfig == AUDIO_CONFIG_LS_CUSTOM ) { numOutChannels = inputMc->base.ctx.pCustomLsOut->num_spk + inputMc->base.ctx.pCustomLsOut->num_lfe; } @@ -1596,9 +1928,10 @@ static ivas_error updateLfePanGainsForMcOut( return error; } + static ivas_error updateLfePanGainsForAmbiOut( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { int16_t i; int16_t numLfeIn, outAmbiOrder; @@ -1636,9 +1969,10 @@ static ivas_error updateLfePanGainsForAmbiOut( return error; } + static ivas_error updateMcPanGainsForMcOut( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { ivas_error error; @@ -1658,11 +1992,11 @@ static ivas_error updateMcPanGainsForMcOut( { error = initMcPanGainsWithIdentMatrix( inputMc ); } - else if ( outConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM || - inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_MONO || - inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + else if ( outConfig == AUDIO_CONFIG_LS_CUSTOM || + inputMc->base.inConfig == AUDIO_CONFIG_MONO || + inputMc->base.inConfig == AUDIO_CONFIG_LS_CUSTOM ) { - if ( ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_MONO ) && ( inputMc->nonDiegeticPan ) ) + if ( ( inputMc->base.inConfig == AUDIO_CONFIG_MONO ) && ( inputMc->nonDiegeticPan ) ) { inputMc->panGains[0][0] = ( inputMc->nonDiegeticPanGain + 1.f ) * 0.5f; inputMc->panGains[0][1] = 1.f - inputMc->panGains[0][0]; @@ -1673,11 +2007,11 @@ static ivas_error updateMcPanGainsForMcOut( error = initMcPanGainsWithEfap( inputMc, outConfig ); } } - else if ( outConfig == IVAS_REND_AUDIO_CONFIG_MONO ) + else if ( outConfig == AUDIO_CONFIG_MONO ) { error = initMcPanGainsWithMonoOut( inputMc ); } - else if ( outConfig == IVAS_REND_AUDIO_CONFIG_STEREO ) + else if ( outConfig == AUDIO_CONFIG_STEREO ) { error = initMcPanGainsWithStereoLookup( inputMc ); } @@ -1698,9 +2032,10 @@ static ivas_error updateMcPanGainsForMcOut( return error; } + static ivas_error updateMcPanGainsForAmbiOut( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { int16_t ch_in, ch_out, lfeIdx; int16_t numNonLfeInChannels, outAmbiOrder; @@ -1712,7 +2047,7 @@ static ivas_error updateMcPanGainsForAmbiOut( return error; } - if ( inputMc->base.inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inputMc->base.inConfig != AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = getNumNonLfeChannelsInSpeakerLayout( inputMc->base.inConfig, &numNonLfeInChannels ) ) != IVAS_ERR_OK ) { @@ -1768,9 +2103,10 @@ static ivas_error updateMcPanGainsForAmbiOut( return IVAS_ERR_OK; } + static ivas_error updateMcPanGains( input_mc *inputMc, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { int16_t i; ivas_error error; @@ -1790,12 +2126,16 @@ static ivas_error updateMcPanGains( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_BINAURAL: + case AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: +#endif break; /* Do nothing */ - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: /* Prepare rendering to intermediate format */ - error = updateMcPanGainsForMcOut( inputMc, IVAS_REND_AUDIO_CONFIG_7_1_4 ); + error = updateMcPanGainsForMcOut( inputMc, AUDIO_CONFIG_7_1_4 ); break; default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; @@ -1813,7 +2153,7 @@ static ivas_error updateMcPanGains( } /* Copy LFE routing to pan gains array */ - if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inputMc->base.inConfig == AUDIO_CONFIG_LS_CUSTOM ) { for ( i = 0; i < inputMc->customLsInput.num_lfe; ++i ) { @@ -1832,11 +2172,15 @@ static ivas_error updateMcPanGains( static ivas_error initMcBinauralRendering( input_mc *inputMc, - const IVAS_REND_AudioConfig inConfig, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG inConfig, + const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg ) { ivas_error error; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t i; +#endif + int32_t binauralDelayNs; int32_t outSampleRate; /* check if re-initialization */ @@ -1846,7 +2190,23 @@ static ivas_error initMcBinauralRendering( inputMc->tdRendWrapper.hHrtfTD = NULL; } - ivas_rend_closeCrend( &inputMc->crendWrapper ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) + { + ivas_td_binaural_close( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); + inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; + } + } +#endif + + ivas_rend_closeCrend( &inputMc->crendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ); ivas_reverb_close( &inputMc->hReverb ); @@ -1860,18 +2220,18 @@ static ivas_error initMcBinauralRendering( /* Needs optimization, see issue 513 */ // bool initTDRend; // initTDRend = false; - //#ifdef FIX_196_REFACTOR_RENDERER_OUTPUT_CONFIG + // #ifdef FIX_196_REFACTOR_RENDERER_OUTPUT_CONFIG // if ( ( outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM ) && - // ( outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) - //#else + // ( outConfig != AUDIO_CONFIG_BINAURAL_ROOM_IR ) && ( outConfig != AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) ) + // #else // if ( outConfig != IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM ) - //#endif + // #endif // { - // if ( inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + // if ( inConfig == AUDIO_CONFIG_LS_CUSTOM ) // { // initTDRend = true; // } - // else if ( ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 || inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) && + // else if ( ( inConfig == AUDIO_CONFIG_5_1 || inConfig == AUDIO_CONFIG_7_1 ) && // ( inputMc->base.ctx.pHeadRotData->headRotEnabled ) ) // { // initTDRend = true; @@ -1879,15 +2239,33 @@ static ivas_error initMcBinauralRendering( // } // if ( initTDRend ) + /* Allocate TD binaural renderer for planar MC layouts or custom MC layouts with headrotation, CREND for the rest */ { if ( ( error = ivas_td_binaural_open_ext( &inputMc->tdRendWrapper, inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate ) ) != IVAS_ERR_OK ) { return error; } - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + /* Open TD renderer wrappers */ + for ( i = 0; i < MAX_HEAD_ROT_POSES - 1; ++i ) + { + if ( ( error = ivas_td_binaural_open_ext( &inputMc->splitTdRendWrappers[i], inConfig, hRendCfg, &inputMc->customLsInput, outSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Assert same delay as main TD renderer */ + assert( inputMc->splitTdRendWrappers[i].binaural_latency_ns == inputMc->tdRendWrapper.binaural_latency_ns ); + } + } + +#endif + if ( outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) { - if ( ( error = ivas_reverb_open( &( inputMc->hReverb ), getIvasAudioConfigFromRendAudioConfig( outConfig ), NULL, hRendCfg, outSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_reverb_open( &( inputMc->hReverb ), outConfig, NULL, inputMc->tdRendWrapper.hBinRendererTd->HrFiltSet_p->lr_energy_and_iac, hRendCfg, outSampleRate ) ) != IVAS_ERR_OK ) { return error; } @@ -1895,15 +2273,19 @@ static ivas_error initMcBinauralRendering( } { - if ( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) ? AUDIO_CONFIG_7_1_4 : getIvasAudioConfigFromRendAudioConfig( inConfig ), getIvasAudioConfigFromRendAudioConfig( outConfig ), hRendCfg, - NULL, outSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_openCrend( &inputMc->crendWrapper, ( inConfig == AUDIO_CONFIG_LS_CUSTOM ) ? AUDIO_CONFIG_7_1_4 : inConfig, outConfig, hRendCfg, NULL, outSampleRate +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + ( ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) ) ? inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses : 1 +#endif + ) ) != IVAS_ERR_OK ) { return error; } } /* Initialise the EFAP handle for rotation on input layout */ - if ( inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM && inputMc->base.ctx.pHeadRotData->headRotEnabled ) + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM && inputMc->base.ctx.pHeadRotData->headRotEnabled ) { if ( ( error = initEfap( &inputMc->efapInWrapper, inConfig, NULL ) ) != IVAS_ERR_OK ) { @@ -1911,13 +2293,23 @@ static ivas_error initMcBinauralRendering( } } + /* determine binaural delay ( used for aligning LFE to output signal ) */ + binauralDelayNs = max( ( inputMc->crendWrapper != NULL ) ? inputMc->crendWrapper->binaural_latency_ns : 0, inputMc->tdRendWrapper.binaural_latency_ns ); + inputMc->binauralDelaySmp = (int16_t) roundf( (float) binauralDelayNs * *inputMc->base.ctx.pOutSampleRate / 1000000000.f ); + + if ( inputMc->binauralDelaySmp > MAX_BIN_DELAY_SAMPLES ) + { + return IVAS_ERROR( IVAS_ERR_WRONG_PARAMS, "Invalid delay for LFE binaural rendering!)" ); + } + return IVAS_ERR_OK; } + static ivas_error initMcMasaRendering( input_mc *inputMc, - const IVAS_REND_AudioConfig inConfig, - int32_t inSampleRate ) + const AUDIO_CONFIG inConfig, + const int32_t inSampleRate ) { ivas_error error; @@ -1926,8 +2318,16 @@ static ivas_error initMcMasaRendering( ivas_td_binaural_close( &inputMc->tdRendWrapper.hBinRendererTd ); inputMc->tdRendWrapper.hHrtfTD = NULL; } - ivas_rend_closeCrend( &inputMc->crendWrapper ); + + ivas_rend_closeCrend( &inputMc->crendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ); + ivas_reverb_close( &inputMc->hReverb ); + if ( inputMc->efapInWrapper.hEfap != NULL ) { efap_free_data( &inputMc->efapInWrapper.hEfap ); @@ -1941,10 +2341,11 @@ static ivas_error initMcMasaRendering( return IVAS_ERR_OK; } + static lfe_routing defaultLfeRouting( - const IVAS_REND_AudioConfig inConfig, + const AUDIO_CONFIG inConfig, const LSSETUP_CUSTOM_STRUCT customLsIn, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, const LSSETUP_CUSTOM_STRUCT customLsOut ) { int16_t i; @@ -1962,14 +2363,14 @@ static lfe_routing defaultLfeRouting( switch ( inConfig ) { - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_7_1_4: routing.numLfeChannels = 1; break; - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: + case AUDIO_CONFIG_LS_CUSTOM: routing.numLfeChannels = customLsIn.num_lfe; break; default: @@ -1978,14 +2379,14 @@ static lfe_routing defaultLfeRouting( switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_7_1_4: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_7_1_4: routing.lfePanMtx[0][LFE_CHANNEL] = 1.0f; break; - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: + case AUDIO_CONFIG_LS_CUSTOM: for ( i = 0; i < routing.numLfeChannels && i < customLsOut.num_lfe; ++i ) { routing.lfePanMtx[i][customLsOut.lfe_idx[i]] = 1.0f; @@ -1999,16 +2400,23 @@ static lfe_routing defaultLfeRouting( return routing; } + static ivas_error setRendInputActiveMc( void *input, - const IVAS_REND_AudioConfig inConfig, + const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t i; +#endif ivas_error error; rendering_context rendCtx; - IVAS_REND_AudioConfig outConfig; + AUDIO_CONFIG outConfig; input_mc *inputMc; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pos_idx; +#endif inputMc = (input_mc *) input; rendCtx = inputMc->base.ctx; @@ -2019,17 +2427,45 @@ static ivas_error setRendInputActiveMc( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } - initRendInputBase( &inputMc->base, inConfig, id, rendCtx ); + if ( ( error = allocateMcLfeDelayBuffer( &inputMc->lfeDelayBuffer, MAX_BIN_DELAY_SAMPLES ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( ( error = allocateInputBaseBufferData( &inputMc->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) + { + return error; + } + initRendInputBase( &inputMc->base, inConfig, id, rendCtx, inputMc->bufferData, MAX_BUFFER_LENGTH ); + setZeroPanMatrix( inputMc->panGains ); inputMc->customLsInput = defaultCustomLs(); inputMc->tdRendWrapper = defaultTdRendWrapper(); inputMc->crendWrapper = NULL; inputMc->hReverb = NULL; inputMc->hMcMasa = NULL; + +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + initRotGains( inputMc->rot_gains_prev[pos_idx] ); + } +#else initRotGains( inputMc->rot_gains_prev ); +#endif inputMc->lfeRouting = defaultLfeRouting( inConfig, inputMc->customLsInput, outConfig, *inputMc->base.ctx.pCustomLsOut ); + set_zero( inputMc->lfeDelayBuffer, MAX_BIN_DELAY_SAMPLES ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < (int16_t) ( sizeof( inputMc->splitTdRendWrappers ) / sizeof( *inputMc->splitTdRendWrappers ) ); ++i ) + { + inputMc->splitTdRendWrappers[i] = defaultTdRendWrapper(); + } - if ( outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL || outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR || outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) + if ( getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) +#else + if ( outConfig == AUDIO_CONFIG_BINAURAL || outConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR || outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#endif { if ( ( error = initMcBinauralRendering( inputMc, inConfig, outConfig, hRendCfg ) ) != IVAS_ERR_OK ) { @@ -2037,7 +2473,7 @@ static ivas_error setRendInputActiveMc( } } - if ( outConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || outConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( outConfig == AUDIO_CONFIG_MASA1 || outConfig == AUDIO_CONFIG_MASA2 ) { if ( ( error = initMcMasaRendering( inputMc, inConfig, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { @@ -2053,14 +2489,20 @@ static ivas_error setRendInputActiveMc( return IVAS_ERR_OK; } + static void clearInputMc( input_mc *inputMc ) { +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t i; +#endif rendering_context rendCtx; rendCtx = inputMc->base.ctx; - initRendInputBase( &inputMc->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); + freeMcLfeDelayBuffer( &inputMc->lfeDelayBuffer ); + freeInputBaseBufferData( &inputMc->bufferData ); + initRendInputBase( &inputMc->base, AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); /* Free input's internal handles */ if ( inputMc->efapInWrapper.hEfap != NULL ) @@ -2068,7 +2510,12 @@ static void clearInputMc( efap_free_data( &inputMc->efapInWrapper.hEfap ); } - ivas_rend_closeCrend( &inputMc->crendWrapper ); + ivas_rend_closeCrend( &inputMc->crendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inputMc->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ); ivas_reverb_close( &inputMc->hReverb ); @@ -2078,14 +2525,26 @@ static void clearInputMc( inputMc->tdRendWrapper.hHrtfTD = NULL; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < (int16_t) ( sizeof( inputMc->splitTdRendWrappers ) / sizeof( *inputMc->splitTdRendWrappers ) ); ++i ) + { + if ( inputMc->splitTdRendWrappers[i].hBinRendererTd != NULL ) + { + ivas_td_binaural_close( &inputMc->splitTdRendWrappers[i].hBinRendererTd ); + inputMc->splitTdRendWrappers[i].hHrtfTD = NULL; + } + } +#endif + ivas_mcmasa_ana_close( &( inputMc->hMcMasa ) ); return; } + static ivas_error initSbaPanGainsForMcOut( input_sba *inputSba, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, const LSSETUP_CUSTOM_STRUCT *outSetupCustom ) { int16_t ambiOrderIn; @@ -2107,20 +2566,20 @@ static ivas_error initSbaPanGainsForMcOut( switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_MONO: + case AUDIO_CONFIG_MONO: hOutSetup.ls_azimuth = ls_azimuth_CICP1; hOutSetup.ls_elevation = ls_elevation_CICP1; - ivas_output_init( &hOutSetup, getIvasAudioConfigFromRendAudioConfig( outConfig ) ); + ivas_output_init( &hOutSetup, outConfig ); break; - case IVAS_REND_AUDIO_CONFIG_STEREO: - case IVAS_REND_AUDIO_CONFIG_5_1: - case IVAS_REND_AUDIO_CONFIG_7_1: - case IVAS_REND_AUDIO_CONFIG_5_1_2: - case IVAS_REND_AUDIO_CONFIG_5_1_4: - case IVAS_REND_AUDIO_CONFIG_7_1_4: - ivas_output_init( &hOutSetup, getIvasAudioConfigFromRendAudioConfig( outConfig ) ); + case AUDIO_CONFIG_STEREO: + case AUDIO_CONFIG_5_1: + case AUDIO_CONFIG_7_1: + case AUDIO_CONFIG_5_1_2: + case AUDIO_CONFIG_5_1_4: + case AUDIO_CONFIG_7_1_4: + ivas_output_init( &hOutSetup, outConfig ); break; - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: + case AUDIO_CONFIG_LS_CUSTOM: ivas_ls_custom_setup( &hOutSetup, outSetupCustom ); break; default: @@ -2153,9 +2612,10 @@ static ivas_error initSbaPanGainsForMcOut( return IVAS_ERR_OK; } + static ivas_error initSbaPanGainsForSbaOut( input_sba *inputSba, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { ivas_error error; error = IVAS_ERR_OK; @@ -2171,13 +2631,38 @@ static ivas_error initSbaPanGainsForSbaOut( return error; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error updateSplitPostRendPanGains( + input_split_post_rend *inputSplitPostRend, + const AUDIO_CONFIG outConfig, + RENDER_CONFIG_DATA *hRendCfg ) +{ + ivas_error error; + rendering_context rendCtx; + int16_t numOutChannels; + getAudioConfigNumChannels( outConfig, &numOutChannels ); + + rendCtx = inputSplitPostRend->base.ctx; + ivas_renderSplitGetMultiBinPoseData( &hRendCfg->split_rend_config, &inputSplitPostRend->splitPostRendWrapper.multiBinPoseData, rendCtx.pHeadRotData->sr_pose_pred_axis ); + + if ( ( error = ivas_splitBinPostRendOpen( &inputSplitPostRend->splitPostRendWrapper.hBinHrSplitPostRend, &inputSplitPostRend->splitPostRendWrapper.multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} +#endif + + static ivas_error updateSbaPanGains( input_sba *inputSba, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, RENDER_CONFIG_DATA *hRendCfg ) { ivas_error error; - IVAS_REND_AudioConfig inConfig; + AUDIO_CONFIG inConfig; rendering_context rendCtx; /* Reset to all zeros - some functions below only write non-zero elements. */ @@ -2197,27 +2682,69 @@ static ivas_error updateSbaPanGains( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_BINAURAL: - error = ivas_rend_openCrend( &inputSba->crendWrapper, - getIvasAudioConfigFromRendAudioConfig( inConfig ), - getIvasAudioConfigFromRendAudioConfig( outConfig ), - hRendCfg, - NULL, - *rendCtx.pOutSampleRate ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + { + if ( hRendCfg->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + + { + assert( inConfig == AUDIO_CONFIG_HOA3 && ( *rendCtx.pOutSampleRate == 48000 ) && "split binaural fast conv mode is currently supported with HOA3 input and 48k sampling rate only" ); + if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else + { + assert( ( *rendCtx.pOutSampleRate == 48000 ) && "split binaural crend mode is currently supported with 48k sampling rate only" ); + if ( ( error = ivas_rend_openMultiBinCrend( &inputSba->crendWrapper, inConfig, outConfig, &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + break; + } +#endif + case AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( hRendCfg->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { + if ( ( error = ivas_rend_openCldfbRend( &inputSba->cldfbRendWrapper, inConfig, outConfig, &rendCtx.pSplitRendWrapper->multiBinPoseData, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else +#endif + { + if ( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, inConfig, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + } break; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - if ( ( error = initSbaPanGainsForMcOut( inputSba, IVAS_REND_AUDIO_CONFIG_7_1_4, NULL ) ) != IVAS_ERR_OK ) + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + if ( ( error = initSbaPanGainsForMcOut( inputSba, AUDIO_CONFIG_7_1_4, NULL ) ) != IVAS_ERR_OK ) { return error; } - error = ivas_rend_openCrend( &inputSba->crendWrapper, - AUDIO_CONFIG_7_1_4, - getIvasAudioConfigFromRendAudioConfig( outConfig ), - hRendCfg, - NULL, - *rendCtx.pOutSampleRate ); + if ( ( error = ivas_rend_openCrend( &inputSba->crendWrapper, AUDIO_CONFIG_7_1_4, outConfig, hRendCfg, NULL, *rendCtx.pOutSampleRate +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + rendCtx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } break; default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; @@ -2229,6 +2756,7 @@ static ivas_error updateSbaPanGains( default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; } + /* Check error here to keep switch statement more compact */ if ( error != IVAS_ERR_OK ) { @@ -2238,13 +2766,67 @@ static ivas_error updateSbaPanGains( return IVAS_ERR_OK; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error setRendInputActiveSplitPostRend( + void *input, + const AUDIO_CONFIG inConfig, + const IVAS_REND_InputId id, + RENDER_CONFIG_DATA *hRendCfg ) +{ + ivas_error error; + rendering_context rendCtx; + AUDIO_CONFIG outConfig; + input_split_post_rend *inputSplitPostRend; + + inputSplitPostRend = (input_split_post_rend *) input; + rendCtx = inputSplitPostRend->base.ctx; + outConfig = *rendCtx.pOutConfig; + + if ( ( error = allocateInputBaseBufferData( &inputSplitPostRend->bufferData, +#ifdef API_5MS + MAX_CLDFB_BIN_BUFFER_LENGTH +#else + MAX_BIN_BUFFER_LENGTH +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + + initRendInputBase( &inputSplitPostRend->base, inConfig, id, rendCtx, + inputSplitPostRend->bufferData, +#ifdef API_5MS + MAX_CLDFB_BIN_BUFFER_LENGTH +#else + MAX_BIN_BUFFER_LENGTH +#endif + ); + inputSplitPostRend->numCachedSamples = 0; + + + if ( ( error = updateSplitPostRendPanGains( inputSplitPostRend, outConfig, hRendCfg ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} +#endif + + static ivas_error initSbaMasaRendering( input_sba *inputSba, int32_t inSampleRate ) { ivas_error error; - ivas_rend_closeCrend( &inputSba->crendWrapper ); + ivas_rend_closeCrend( &inputSba->crendWrapper +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + inputSba->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses +#endif + ); if ( ( error = ivas_dirac_ana_open( &inputSba->hDirAC, inSampleRate ) ) != IVAS_ERR_OK ) { @@ -2254,16 +2836,20 @@ static ivas_error initSbaMasaRendering( return IVAS_ERR_OK; } + static ivas_error setRendInputActiveSba( void *input, - const IVAS_REND_AudioConfig inConfig, + const AUDIO_CONFIG inConfig, const IVAS_REND_InputId id, RENDER_CONFIG_DATA *hRendCfg ) { ivas_error error; rendering_context rendCtx; - IVAS_REND_AudioConfig outConfig; + 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; @@ -2274,13 +2860,35 @@ static ivas_error setRendInputActiveSba( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } - initRendInputBase( &inputSba->base, inConfig, id, rendCtx ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_CLDFB_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) +#else + if ( ( error = allocateInputBaseBufferData( &inputSba->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) +#endif + { + return error; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + initRendInputBase( &inputSba->base, inConfig, id, rendCtx, inputSba->bufferData, MAX_CLDFB_BUFFER_LENGTH ); +#else + initRendInputBase( &inputSba->base, inConfig, id, rendCtx, inputSba->bufferData, MAX_BUFFER_LENGTH ); +#endif + setZeroPanMatrix( inputSba->hoaDecMtx ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + inputSba->crendWrapper = NULL; + for ( pos_idx = 0; pos_idx < MAX_HEAD_ROT_POSES; pos_idx++ ) + { + initRotGains( inputSba->rot_gains_prev[pos_idx] ); + } +#else inputSba->crendWrapper = NULL; inputSba->hDirAC = NULL; initRotGains( inputSba->rot_gains_prev ); +#endif - if ( outConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || outConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( outConfig == AUDIO_CONFIG_MASA1 || outConfig == AUDIO_CONFIG_MASA2 ) { if ( ( error = initSbaMasaRendering( inputSba, *rendCtx.pOutSampleRate ) ) != IVAS_ERR_OK ) { @@ -2296,6 +2904,39 @@ static ivas_error setRendInputActiveSba( return error; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT +static void clearInputSplitRend( + input_split_post_rend *inputSplitRend ) +{ + rendering_context rendCtx; + + rendCtx = inputSplitRend->base.ctx; + + freeInputBaseBufferData( &inputSplitRend->bufferData ); + + initRendInputBase( &inputSplitRend->base, AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); + + if ( inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend != NULL ) + { + ivas_splitBinPostRendClose( &inputSplitRend->splitPostRendWrapper.hBinHrSplitPostRend ); + } + + if ( inputSplitRend->splitPostRendWrapper.hSplitBinLCLDDec != NULL ) + { + ivas_splitBinLCLDDecClose( &inputSplitRend->splitPostRendWrapper.hSplitBinLCLDDec ); + } + + if ( inputSplitRend->splitPostRendWrapper.hLc3plusDec != NULL ) + { + IVAS_LC3PLUS_DEC_Close( &inputSplitRend->splitPostRendWrapper.hLc3plusDec ); + } + + return; +} +#endif /* SPLIT_REND_WITH_HEAD_ROT */ + + static void clearInputSba( input_sba *inputSba ) { @@ -2303,41 +2944,51 @@ static void clearInputSba( rendCtx = inputSba->base.ctx; - initRendInputBase( &inputSba->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); + freeInputBaseBufferData( &inputSba->bufferData ); + + initRendInputBase( &inputSba->base, AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); /* Free input's internal handles */ +#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 ivas_rend_closeCrend( &inputSba->crendWrapper ); +#endif ivas_dirac_ana_close( &( inputSba->hDirAC ) ); return; } + static ivas_error initMasaDummyDecForMcOut( input_masa *inputMasa, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { ivas_error error; int16_t numCldfbAnalyses; int16_t numCldfbSyntheses; int16_t i; - AUDIO_CONFIG output_config; DecoderDummy *decDummy; decDummy = inputMasa->decDummy; - output_config = getIvasAudioConfigFromRendAudioConfig( outConfig ); - decDummy->hDecoderConfig->output_config = output_config; + decDummy->hDecoderConfig->output_config = outConfig; decDummy->sba_analysis_order = 1; decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ - ivas_output_init( &( decDummy->hOutSetup ), output_config ); - ivas_output_init( &( decDummy->hIntSetup ), output_config ); + ivas_output_init( &( decDummy->hOutSetup ), outConfig ); + ivas_output_init( &( decDummy->hIntSetup ), outConfig ); decDummy->renderer_type = RENDERER_DIRAC; - if ( output_config == AUDIO_CONFIG_STEREO ) + if ( outConfig == AUDIO_CONFIG_STEREO ) { decDummy->renderer_type = RENDERER_STEREO_PARAMETRIC; } @@ -2352,11 +3003,11 @@ static ivas_error initMasaDummyDecForMcOut( } decDummy->hQMetaData->coherence_flag = 1; - if ( ( error = ivas_dirac_dec_open( decDummy ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_config( decDummy, DIRAC_OPEN ) ) != IVAS_ERR_OK ) { return error; } - decDummy->hDirAC->dirac_bs_md_write_idx = 0; + decDummy->hSpatParamRendCom->dirac_bs_md_write_idx = 0; if ( decDummy->renderer_type == RENDERER_STEREO_PARAMETRIC ) { @@ -2396,29 +3047,28 @@ static ivas_error initMasaDummyDecForMcOut( return IVAS_ERR_OK; } + static ivas_error initMasaDummyDecForSbaOut( input_masa *inputMasa, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { ivas_error error; int16_t numCldfbAnalyses; int16_t numCldfbSyntheses; int16_t i; - AUDIO_CONFIG output_config; DecoderDummy *decDummy; decDummy = inputMasa->decDummy; - output_config = getIvasAudioConfigFromRendAudioConfig( outConfig ); - decDummy->hDecoderConfig->output_config = output_config; + decDummy->hDecoderConfig->output_config = outConfig; decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ decDummy->sba_analysis_order = 1; - ivas_output_init( &( decDummy->hOutSetup ), output_config ); - ivas_output_init( &( decDummy->hIntSetup ), output_config ); + ivas_output_init( &( decDummy->hOutSetup ), outConfig ); + ivas_output_init( &( decDummy->hIntSetup ), outConfig ); decDummy->renderer_type = RENDERER_DIRAC; decDummy->ivas_format = MASA_FORMAT; decDummy->transport_config = AUDIO_CONFIG_INVALID; @@ -2430,11 +3080,11 @@ static ivas_error initMasaDummyDecForSbaOut( } decDummy->hQMetaData->coherence_flag = 1; - if ( ( error = ivas_dirac_dec_open( decDummy ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_config( decDummy, DIRAC_OPEN ) ) != IVAS_ERR_OK ) { return error; } - decDummy->hDirAC->dirac_bs_md_write_idx = 0; + decDummy->hSpatParamRendCom->dirac_bs_md_write_idx = 0; numCldfbAnalyses = decDummy->nchan_transport; numCldfbSyntheses = decDummy->hDecoderConfig->nchan_out; @@ -2466,30 +3116,28 @@ static ivas_error initMasaDummyDecForSbaOut( return IVAS_ERR_OK; } + static ivas_error initMasaDummyDecForBinauralOut( input_masa *inputMasa, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { ivas_error error; - int16_t i; - AUDIO_CONFIG output_config; DecoderDummy *decDummy; decDummy = inputMasa->decDummy; - - output_config = getIvasAudioConfigFromRendAudioConfig( outConfig ); - decDummy->hDecoderConfig->output_config = output_config; - - output_config = decDummy->hDecoderConfig->output_config; - + decDummy->hDecoderConfig->output_config = outConfig; decDummy->sba_analysis_order = 1; decDummy->hDecoderConfig->ivas_total_brate = IVAS_512k; /* Todo Nokia: This is preventing initialization of 2TC as 1TC, should be fixed properly in ivas_dirac_dec_config() */ decDummy->mc_mode = MC_MODE_NONE; /* Todo Nokia: This should be also refactored in such way that it is not checked if not in MC mode */ - ivas_output_init( &( decDummy->hOutSetup ), output_config ); - if ( output_config == AUDIO_CONFIG_BINAURAL ) + ivas_output_init( &( decDummy->hOutSetup ), outConfig ); + if ( outConfig == AUDIO_CONFIG_BINAURAL +#ifdef SPLIT_REND_WITH_HEAD_ROT + || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { decDummy->renderer_type = RENDERER_BINAURAL_PARAMETRIC; } @@ -2500,11 +3148,11 @@ static ivas_error initMasaDummyDecForBinauralOut( decDummy->ivas_format = MASA_FORMAT; decDummy->transport_config = AUDIO_CONFIG_INVALID; - if ( ( error = ivas_dirac_dec_open( decDummy ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_dirac_dec_config( decDummy, DIRAC_OPEN ) ) != IVAS_ERR_OK ) { return error; } - decDummy->hDirAC->dirac_bs_md_write_idx = 0; + decDummy->hSpatParamRendCom->dirac_bs_md_write_idx = 0; if ( ( error = ivas_dirac_dec_binaural_copy_hrtfs( &decDummy->hHrtfParambin ) ) != IVAS_ERR_OK ) { @@ -2516,7 +3164,6 @@ static ivas_error initMasaDummyDecForBinauralOut( return error; } - for ( i = 0; i < BINAURAL_CHANNELS; i++ ) { if ( ( error = openCldfb( &( decDummy->cldfbAnaDec[i] ), CLDFB_ANALYSIS, decDummy->hDecoderConfig->output_Fs, CLDFB_PROTOTYPE_5_00MS ) ) != IVAS_ERR_OK ) @@ -2537,9 +3184,10 @@ static ivas_error initMasaDummyDecForBinauralOut( return IVAS_ERR_OK; } + static ivas_error updateMasaDummyDec( input_masa *inputMasa, - const IVAS_REND_AudioConfig outConfig ) + const AUDIO_CONFIG outConfig ) { ivas_error error; @@ -2561,16 +3209,26 @@ static ivas_error updateMasaDummyDec( return error; } + static DecoderDummy *initDecoderDummy( const int32_t sampleRate, const int16_t numTransChannels, - const IVAS_REND_AudioConfig outConfig, - const uint8_t enableRenderConfig ) + const AUDIO_CONFIG outConfig, + const uint8_t enableRenderConfig +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const SPLIT_REND_WRAPPER *pSplitRendWrapper +#endif +) { ivas_error error; int16_t i; int16_t numOutChannels; DecoderDummy *decDummy; +#ifdef APLIT_5MS_FIX_TODO + int16_t num_subframes; + num_subframes = MAX_PARAM_SPATIAL_SUBFRAMES; +#endif if ( ( error = getAudioConfigNumChannels( outConfig, &numOutChannels ) ) != IVAS_ERR_OK ) { @@ -2583,9 +3241,33 @@ static DecoderDummy *initDecoderDummy( decDummy->hDecoderConfig->output_Fs = sampleRate; decDummy->hDecoderConfig->nchan_out = numOutChannels; decDummy->hDecoderConfig->Opt_Headrotation = 0; +#ifdef API_5MS + decDummy->hDecoderConfig->Opt_tsm = 0; +#ifdef API_5MS_BASELINE + decDummy->hDecoderConfig->Opt_5ms = 0; +#endif +#else decDummy->hDecoderConfig->voip_active = 0; - +#endif decDummy->hBinRenderer = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + decDummy->hSplitBinRend.hSplitRendBits = NULL; + decDummy->hSplitBinRend.hMultiBinCldfbData = NULL; + ivas_init_split_rend_handles( &decDummy->hSplitBinRend.splitrend ); + decDummy->hSplitBinRend.splitrend = *pSplitRendWrapper; + +#ifdef FIX_658_SPLIT_REND_MASA + if ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) +#else + if ( decDummy->splitBinRend.splitrend.multiBinPoseData.num_poses > 1 ) +#endif + { + if ( ( decDummy->hSplitBinRend.hMultiBinCldfbData = (IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA_HANDLE) malloc( sizeof( IVAS_DEC_SPLIT_REND_MULTI_BIN_CLDFB_DATA ) ) ) == NULL ) + { + assert( error == IVAS_ERR_OK ); + } + } +#endif decDummy->hEFAPdata = NULL; decDummy->hCrendWrapper = NULL; decDummy->hHrtfTD = NULL; @@ -2593,13 +3275,22 @@ static DecoderDummy *initDecoderDummy( decDummy->hoa_dec_mtx = NULL; decDummy->hVBAPdata = NULL; // note: not used at the moment decDummy->hMasa = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + for ( i = 0; i < MAX_HEAD_ROT_POSES; i++ ) + { + decDummy->hDiracDecBin[i] = NULL; + } +#else decDummy->hDiracDecBin = NULL; +#endif + decDummy->hDirACRend = NULL; + decDummy->hSpatParamRendCom = NULL; decDummy->hQMetaData = NULL; decDummy->hHrtfParambin = NULL; decDummy->hHeadTrackData = NULL; decDummy->hDirAC = NULL; decDummy->hTcBuffer = NULL; - decDummy->hDecoderConfig->output_config = getIvasAudioConfigFromRendAudioConfig( outConfig ); + decDummy->hDecoderConfig->output_config = outConfig; decDummy->nchan_transport = numTransChannels; if ( getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) @@ -2623,7 +3314,6 @@ static DecoderDummy *initDecoderDummy( decDummy->hHeadTrackData->Quaternions[i].y = 0.0f; decDummy->hHeadTrackData->Quaternions[i].z = 0.0f; } - decDummy->hHeadTrackData->num_quaternions = 0; decDummy->hHeadTrackData->lrSwitchInterpVal = 0.0f; decDummy->hHeadTrackData->lrSwitchedCurrent = 0; decDummy->hHeadTrackData->lrSwitchedNext = 0; @@ -2631,13 +3321,23 @@ static DecoderDummy *initDecoderDummy( ivas_orient_trk_Init( decDummy->hHeadTrackData->OrientationTracker ); /* External orientations */ - if ( ( error = ivas_external_orientation_open( &( decDummy->hExtOrientationData ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_external_orientation_open( &( decDummy->hExtOrientationData ) +#ifdef APLIT_5MS_FIX_TODO + , + num_subframes +#endif + ) ) != IVAS_ERR_OK ) { assert( error == IVAS_ERR_OK ); } /* Combined orientations */ - if ( ( error = ivas_combined_orientation_open( &( decDummy->hCombinedOrientationData ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_combined_orientation_open( &( decDummy->hCombinedOrientationData ) +#ifdef APLIT_5MS_FIX_TODO + , + num_subframes +#endif + ) ) != IVAS_ERR_OK ) { assert( error == IVAS_ERR_OK ); } @@ -2666,15 +3366,16 @@ static DecoderDummy *initDecoderDummy( return decDummy; } + static ivas_error setRendInputActiveMasa( void *input, - const IVAS_REND_AudioConfig inConfig, + 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. */ { ivas_error error; rendering_context rendCtx; - IVAS_REND_AudioConfig outConfig; + AUDIO_CONFIG outConfig; input_masa *inputMasa; int16_t numInChannels; @@ -2688,7 +3389,11 @@ static ivas_error setRendInputActiveMasa( return IVAS_ERR_IO_CONFIG_PAIR_NOT_SUPPORTED; } - initRendInputBase( &inputMasa->base, inConfig, id, rendCtx ); + if ( ( error = allocateInputBaseBufferData( &inputMasa->bufferData, MAX_BUFFER_LENGTH ) ) != IVAS_ERR_OK ) + { + return error; + } + initRendInputBase( &inputMasa->base, inConfig, id, rendCtx, inputMasa->bufferData, MAX_BUFFER_LENGTH ); if ( ( error = getAudioConfigNumChannels( inConfig, &numInChannels ) ) != IVAS_ERR_OK ) { @@ -2697,14 +3402,20 @@ static ivas_error setRendInputActiveMasa( if ( getAudioConfigType( outConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_MASA ) { inputMasa->metadataHasBeenFed = false; - if ( ( error = masaPrerendOpen( &inputMasa->hMasaPrerend, inputMasa->base.inConfig == IVAS_REND_AUDIO_CONFIG_MASA1 ? 1 : 2, *( inputMasa->base.ctx.pOutSampleRate ) ) ) != IVAS_ERR_OK ) + if ( ( error = masaPrerendOpen( &inputMasa->hMasaPrerend, inputMasa->base.inConfig == AUDIO_CONFIG_MASA1 ? 1 : 2, *( inputMasa->base.ctx.pOutSampleRate ) ) ) != IVAS_ERR_OK ) { return error; } } else { - inputMasa->decDummy = initDecoderDummy( *rendCtx.pOutSampleRate, numInChannels, outConfig, 0 ); + inputMasa->decDummy = initDecoderDummy( *rendCtx.pOutSampleRate, numInChannels, outConfig, 0 +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + rendCtx.pSplitRendWrapper +#endif + ); + inputMasa->metadataHasBeenFed = false; if ( ( error = updateMasaDummyDec( inputMasa, outConfig ) ) != IVAS_ERR_OK ) @@ -2716,6 +3427,7 @@ static ivas_error setRendInputActiveMasa( return IVAS_ERR_OK; } + static void freeDecoderDummy( DecoderDummy **ppDecDummy ) { @@ -2770,6 +3482,8 @@ static void freeDecoderDummy( } /* DirAC handle */ + ivas_dirac_rend_close( &( pDecDummy->hDirACRend ) ); + ivas_spat_hSpatParamRendCom_close( &( pDecDummy->hSpatParamRendCom ) ); ivas_dirac_dec_close( &( pDecDummy->hDirAC ) ); /* Qmetadata handle */ @@ -2785,8 +3499,32 @@ static void freeDecoderDummy( pDecDummy->hoa_dec_mtx = NULL; } +#ifdef LIB_REND_FIX_HRTFPARAMBIN_MEMLEAK + /* Parametric binaural renderer HRTF structure */ + if ( pDecDummy->hHrtfParambin != NULL ) + { +#endif + free( pDecDummy->hHrtfParambin ); +#ifdef LIB_REND_FIX_HRTFPARAMBIN_MEMLEAK + pDecDummy->hHrtfParambin = NULL; + } +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* Split binaural renderr handle */ + if ( pDecDummy->hSplitBinRend.hMultiBinCldfbData != NULL ) + { + free( pDecDummy->hSplitBinRend.hMultiBinCldfbData ); + pDecDummy->hSplitBinRend.hMultiBinCldfbData = NULL; + } +#endif + /* Parametric binaural renderer handle */ +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + ivas_dirac_dec_close_binaural_data( pDecDummy->hDiracDecBin ); +#else ivas_dirac_dec_close_binaural_data( &pDecDummy->hDiracDecBin ); +#endif /* TC buffer */ ivas_jbm_dec_tc_buffer_close( &pDecDummy->hTcBuffer ); @@ -2797,6 +3535,7 @@ static void freeDecoderDummy( return; } + static void clearInputMasa( input_masa *inputMasa ) { @@ -2804,21 +3543,93 @@ static void clearInputMasa( rendCtx = inputMasa->base.ctx; + freeInputBaseBufferData( &inputMasa->bufferData ); + masaPrerendClose( &inputMasa->hMasaPrerend ); - initRendInputBase( &inputMasa->base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, rendCtx ); + + initRendInputBase( &inputMasa->base, AUDIO_CONFIG_INVALID, 0, rendCtx, NULL, 0 ); freeDecoderDummy( &inputMasa->decDummy ); return; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + +static ivas_error initSplitRend( SPLIT_REND_WRAPPER *pSplitRendWrapper, IVAS_REND_AudioBuffer *pSplitRendEncBuffer, const IVAS_SPLIT_REND_CONFIG_DATA *pSplit_rend_config, IVAS_REND_HeadRotData headRotData, const int32_t outputSampleRate, const AUDIO_CONFIG outConfig, const int16_t cldfb_in +#ifdef API_5MS + , + const int16_t is_5ms_frame +#endif +) +{ + ivas_error error; + IVAS_REND_AudioBufferConfig bufConfig; + + if ( outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + if ( pSplit_rend_config->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + ivas_renderSplitGetMultiBinPoseData( pSplit_rend_config, &pSplitRendWrapper->multiBinPoseData, headRotData.sr_pose_pred_axis ); + } + else if ( pSplit_rend_config->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) + { + ivas_renderSplitUpdateNoCorrectionPoseData( pSplit_rend_config, &pSplitRendWrapper->multiBinPoseData ); + } + + if ( ( error = ivas_split_renderer_open( pSplitRendWrapper, pSplit_rend_config, outputSampleRate, cldfb_in, outConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#ifdef API_5MS + , + is_5ms_frame +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + + /*allocate for CLDFB in and change to TD during process if needed*/ + bufConfig.numSamplesPerChannel = MAX_CLDFB_BUFFER_LENGTH_PER_CHANNEL; + bufConfig.numChannels = BINAURAL_CHANNELS * pSplitRendWrapper->multiBinPoseData.num_poses; + bufConfig.is_cldfb = 1; + pSplitRendEncBuffer->config = bufConfig; + pSplitRendEncBuffer->data = malloc( bufConfig.numChannels * bufConfig.numSamplesPerChannel * sizeof( float ) ); + if ( pSplitRendEncBuffer->data == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + } + else + { + IVAS_REND_AudioBufferConfig bufConfig2; + + bufConfig2.numSamplesPerChannel = 0; + bufConfig2.numChannels = 0; + bufConfig2.is_cldfb = 0; + pSplitRendEncBuffer->config = bufConfig2; + pSplitRendEncBuffer->data = NULL; + } + + return IVAS_ERR_OK; +} +#endif + + ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, const int32_t outputSampleRate, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, const int16_t nonDiegeticPan, - const float nonDiegeticPanGain ) + const float nonDiegeticPanGain +#ifdef API_5MS + , + const int16_t num_subframes +#endif +) { int16_t i; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t j; +#endif IVAS_REND_HANDLE hIvasRend; ivas_error error; int16_t numOutChannels; @@ -2855,6 +3666,9 @@ ivas_error IVAS_REND_Open( #ifdef DEBUGGING hIvasRend->numClipping = 0; #endif +#ifdef API_5MS + hIvasRend->num_subframes = num_subframes; +#endif /* Initialize limiter */ if ( ( error = IVAS_REND_NumOutChannels( hIvasRend, &numOutChannels ) ) != IVAS_ERR_OK ) @@ -2874,13 +3688,23 @@ ivas_error IVAS_REND_Open( } /* Initialize external orientation data */ - if ( ( error = ivas_external_orientation_open( &( hIvasRend->hExternalOrientationData ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_external_orientation_open( &( hIvasRend->hExternalOrientationData ) +#ifdef API_5MS + , + num_subframes +#endif + ) ) != IVAS_ERR_OK ) { return error; } /* Initilize combined orientation data */ - if ( ( error = ivas_combined_orientation_open( &( hIvasRend->hCombinedOrientationData ) ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_combined_orientation_open( &( hIvasRend->hCombinedOrientationData ) +#ifdef API_5MS + , + num_subframes +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -2892,12 +3716,26 @@ ivas_error IVAS_REND_Open( } /* Initialize inputs */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_init_split_rend_handles( &hIvasRend->splitRendWrapper ); + hIvasRend->splitRendEncBuffer.data = NULL; +#endif + for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) { - initRendInputBase( &hIvasRend->inputsIsm[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); + initRendInputBase( &hIvasRend->inputsIsm[i].base, AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); + 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 < (int16_t) ( sizeof( hIvasRend->inputsIsm[i].splitTdRendWrappers ) / sizeof( *hIvasRend->inputsIsm[i].splitTdRendWrappers ) ); ++j ) + { + hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hBinRendererTd = NULL; + hIvasRend->inputsIsm[i].splitTdRendWrappers[j].hHrtfTD = NULL; + } +#endif + hIvasRend->inputsIsm[i].bufferData = NULL; hIvasRend->inputsIsm[i].nonDiegeticPan = nonDiegeticPan; hIvasRend->inputsIsm[i].nonDiegeticPanGain = nonDiegeticPanGain; hIvasRend->inputsIsm[i].hOMasa = NULL; @@ -2905,34 +3743,66 @@ ivas_error IVAS_REND_Open( for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { - initRendInputBase( &hIvasRend->inputsMc[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); + initRendInputBase( &hIvasRend->inputsMc[i].base, AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); + hIvasRend->inputsMc[i].efapInWrapper.hEfap = NULL; hIvasRend->inputsMc[i].crendWrapper = NULL; hIvasRend->inputsMc[i].hReverb = NULL; hIvasRend->inputsMc[i].tdRendWrapper.hBinRendererTd = NULL; + hIvasRend->inputsMc[i].bufferData = NULL; + hIvasRend->inputsMc[i].lfeDelayBuffer = NULL; hIvasRend->inputsMc[i].nonDiegeticPan = nonDiegeticPan; hIvasRend->inputsMc[i].nonDiegeticPanGain = nonDiegeticPanGain; hIvasRend->inputsMc[i].hMcMasa = NULL; +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( j = 0; j < (int16_t) ( sizeof( hIvasRend->inputsMc[i].splitTdRendWrappers ) / sizeof( *hIvasRend->inputsMc[i].splitTdRendWrappers ) ); ++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 ) { - initRendInputBase( &hIvasRend->inputsSba[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); + initRendInputBase( &hIvasRend->inputsSba[i].base, 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 = NULL; hIvasRend->inputsSba[i].hDirAC = NULL; } for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) { - initRendInputBase( &hIvasRend->inputsMasa[i].base, IVAS_REND_AUDIO_CONFIG_UNKNOWN, 0, getRendCtx( hIvasRend ) ); + initRendInputBase( &hIvasRend->inputsMasa[i].base, AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); + hIvasRend->inputsMasa[i].decDummy = NULL; hIvasRend->inputsMasa[i].metadataHasBeenFed = false; + hIvasRend->inputsMasa[i].bufferData = NULL; hIvasRend->inputsMasa[i].hMasaPrerend = NULL; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + initRendInputBase( &hIvasRend->inputsSplitPost[i].base, AUDIO_CONFIG_INVALID, 0, getRendCtx( hIvasRend ), NULL, 0 ); + + ivas_init_split_post_rend_handles( &hIvasRend->inputsSplitPost[i].splitPostRendWrapper ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + hIvasRend->splitRendBFI = 0; +#endif + hIvasRend->inputsSplitPost[i].bufferData = NULL; + } +#endif return IVAS_ERR_OK; } + static LSSETUP_CUSTOM_STRUCT makeCustomLsSetup( const IVAS_CUSTOM_LS_DATA rendCustomLsLayout ) { @@ -2960,6 +3830,7 @@ static LSSETUP_CUSTOM_STRUCT makeCustomLsSetup( return customLs; } + static ivas_error validateCustomLsLayout( const IVAS_CUSTOM_LS_DATA layout ) { @@ -2989,6 +3860,7 @@ static ivas_error validateCustomLsLayout( return IVAS_ERR_OK; } + ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( IVAS_REND_HANDLE hIvasRend, const IVAS_CUSTOM_LS_DATA layout ) @@ -3004,7 +3876,7 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - if ( hIvasRend->outputConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( hIvasRend->outputConfig != AUDIO_CONFIG_LS_CUSTOM ) { /* Specifying details of custom speaker layout only makes sense if output config is set to custom speaker layout */ return IVAS_ERR_INVALID_OUTPUT_FORMAT; @@ -3040,7 +3912,7 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) { inputMc = &hIvasRend->inputsMc[i]; - if ( inputMc->base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( inputMc->base.inConfig == AUDIO_CONFIG_INVALID ) { /* Input inactive, skip. */ continue; @@ -3059,7 +3931,7 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( { inputSba = &hIvasRend->inputsSba[i]; - if ( inputSba->base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( inputSba->base.inConfig == AUDIO_CONFIG_INVALID ) { /* Input inactive, skip. */ continue; @@ -3074,6 +3946,7 @@ ivas_error IVAS_REND_ConfigureCustomOutputLoudspeakerLayout( return IVAS_ERR_OK; } + ivas_error IVAS_REND_NumOutChannels( IVAS_REND_CONST_HANDLE hIvasRend, int16_t *numOutChannels ) @@ -3089,7 +3962,7 @@ ivas_error IVAS_REND_NumOutChannels( /* Handle special cases where additional info is needed from the renderer, otherwise use getAudioConfigNumChannels() */ switch ( hIvasRend->outputConfig ) { - case IVAS_REND_AUDIO_CONFIG_LS_CUSTOM: + case AUDIO_CONFIG_LS_CUSTOM: *numOutChannels = hIvasRend->customLsOut.num_spk + hIvasRend->customLsOut.num_lfe; break; default: @@ -3103,8 +3976,9 @@ ivas_error IVAS_REND_NumOutChannels( return IVAS_ERR_OK; } + static IVAS_REND_InputId makeInputId( - IVAS_REND_AudioConfig config, + AUDIO_CONFIG config, const int32_t inputIndex ) { /* Put config type in second byte (from LSB), put index + 1 in first byte @@ -3113,6 +3987,7 @@ static IVAS_REND_InputId makeInputId( return (IVAS_REND_InputId) ( ( ( (uint32_t) getAudioConfigType( config ) ) << 8 ) | ( inputIndex + 1 ) ); } + static ivas_error getInputById( IVAS_REND_HANDLE hIvasRend, IVAS_REND_InputId inputId, @@ -3161,12 +4036,21 @@ static ivas_error getInputById( } pInputBase = &hIvasRend->inputsMasa[inputIndex].base; break; +#ifdef SPLIT_REND_WITH_HEAD_ROT + case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: + if ( inputIndex > RENDERER_MAX_BIN_INPUTS ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + pInputBase = &hIvasRend->inputsSplitPost[inputIndex].base; + break; +#endif default: return IVAS_ERR_INVALID_INPUT_ID; } /* Ensure input ID matches and that input is active */ - if ( pInputBase->id != inputId || pInputBase->inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pInputBase->id != inputId || pInputBase->inConfig == AUDIO_CONFIG_INVALID ) { return IVAS_ERR_INVALID_INPUT_ID; } @@ -3177,7 +4061,7 @@ static ivas_error getInputById( return IVAS_ERR_OK; } -/* Unfortunately code duplication here is the only way to avoid warnings about const casting */ + static ivas_error getConstInputById( IVAS_REND_CONST_HANDLE hIvasRend, const IVAS_REND_InputId inputId, @@ -3226,12 +4110,21 @@ static ivas_error getConstInputById( } pInputBase = &hIvasRend->inputsMasa[inputIndex].base; break; +#ifdef SPLIT_REND_WITH_HEAD_ROT + case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: + if ( inputIndex > RENDERER_MAX_BIN_INPUTS ) + { + return IVAS_ERR_INVALID_INPUT_ID; + } + pInputBase = &hIvasRend->inputsSplitPost[inputIndex].base; + break; +#endif default: return IVAS_ERR_INVALID_INPUT_ID; } /* Ensure input ID matches and that input is active */ - if ( pInputBase->id != inputId || pInputBase->inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pInputBase->id != inputId || pInputBase->inConfig == AUDIO_CONFIG_INVALID ) { return IVAS_ERR_INVALID_INPUT_ID; } @@ -3242,6 +4135,7 @@ static ivas_error getConstInputById( return IVAS_ERR_OK; } + static ivas_error findFreeInputSlot( const void *inputs, const int32_t inputStructSize, @@ -3267,7 +4161,7 @@ static ivas_error findFreeInputSlot( { pInputBase = (const input_base *) pByte; - if ( pInputBase->inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pInputBase->inConfig == AUDIO_CONFIG_INVALID ) { *inputIndex = i; canAddInput = true; @@ -3284,6 +4178,69 @@ static ivas_error findFreeInputSlot( } +#ifdef SPLIT_REND_WITH_HEAD_ROT +static int16_t getCldfbRendFlag( + IVAS_REND_HANDLE hIvasRend, /* i : Renderer handle */ + const IVAS_REND_AudioConfigType new_configType ) +{ + int16_t i; + int16_t numMasaInputs = 0, numSbaInputs = 0, numIsmInputs = 0, numMcInputs = 0; + int16_t isCldfbRend; + + isCldfbRend = 0; + if ( hIvasRend->hRendererConfig != NULL ) + { + for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; ++i ) + { + numMasaInputs += ( hIvasRend->inputsMasa[i].base.inConfig == AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_MASA ) ? 0 : 1; + } + for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; ++i ) + { + numSbaInputs += ( hIvasRend->inputsSba[i].base.inConfig == AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS ) ? 0 : 1; + } + for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) + { + numIsmInputs += ( hIvasRend->inputsIsm[i].base.inConfig == AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED ) ? 0 : 1; + } + for ( i = 0; i < RENDERER_MAX_MC_INPUTS; ++i ) + { + numMcInputs += ( hIvasRend->inputsMc[i].base.inConfig == AUDIO_CONFIG_INVALID && new_configType != IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED ) ? 0 : 1; + } + + if ( numIsmInputs > 0 || numMcInputs > 0 ) + { + isCldfbRend = 0; + } + else if ( ( numMasaInputs > 0 ) || ( numSbaInputs > 0 && hIvasRend->hRendererConfig->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) ) + { + isCldfbRend = 1; + } + } + + return isCldfbRend; +} + + +static void closeSplitRend( + SPLIT_REND_WRAPPER *pSplitRendWrapper, + IVAS_REND_AudioBuffer *pSplitRendEncBuffer ) +{ + ivas_split_renderer_close( pSplitRendWrapper ); + + if ( pSplitRendEncBuffer->data != NULL ) + { + free( pSplitRendEncBuffer->data ); + pSplitRendEncBuffer->data = NULL; + } + + pSplitRendEncBuffer->config.numChannels = 0; + pSplitRendEncBuffer->config.numSamplesPerChannel = 0; + + return; +} +#endif + + /*-------------------------------------------------------------------* * IVAS_REND_AddInput() * @@ -3291,16 +4248,16 @@ static ivas_error findFreeInputSlot( *-------------------------------------------------------------------*/ ivas_error IVAS_REND_AddInput( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_REND_AudioConfig inConfig, /* i : audio config for a new input */ - IVAS_REND_InputId *inputId /* o : ID of the new input */ + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const AUDIO_CONFIG inConfig, /* i : audio config for a new input */ + IVAS_REND_InputId *inputId /* o : ID of the new input */ ) { ivas_error error; int32_t maxNumInputsOfType; void *inputsArray; int32_t inputStructSize; - ivas_error ( *activateInput )( void *, IVAS_REND_AudioConfig, IVAS_REND_InputId, RENDER_CONFIG_DATA * ); + ivas_error ( *activateInput )( void *, AUDIO_CONFIG, IVAS_REND_InputId, RENDER_CONFIG_DATA * ); int32_t inputIndex; /* Validate function arguments */ @@ -3309,6 +4266,53 @@ ivas_error IVAS_REND_AddInput( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( +#ifdef API_5MS + ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) && +#endif + hIvasRend->splitRendEncBuffer.data == NULL && hIvasRend->hRendererConfig != NULL ) + { + int16_t cldfb_in; + cldfb_in = getCldfbRendFlag( hIvasRend, getAudioConfigType( inConfig ) ); + + +#ifdef FIX_658_SPLIT_REND_MASA +#ifdef API_5MS + error = +#endif + ivas_split_rend_choose_default_codec( &hIvasRend->hRendererConfig->split_rend_config.codec, +#ifdef API_5MS + &hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, +#endif + ( cldfb_in == 0 ), + hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ); +#ifdef API_5MS + if ( error != IVAS_ERR_OK ) + { + return error; + } +#endif + +#endif + if ( ( error = initSplitRend( &hIvasRend->splitRendWrapper, + &hIvasRend->splitRendEncBuffer, + &hIvasRend->hRendererConfig->split_rend_config, + hIvasRend->headRotData, + hIvasRend->sampleRateOut, + hIvasRend->outputConfig, + cldfb_in +#ifdef API_5MS + , + ( hIvasRend->num_subframes == 1 ) ? 1 : 0 +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + switch ( getAudioConfigType( inConfig ) ) { case IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED: @@ -3335,6 +4339,14 @@ ivas_error IVAS_REND_AddInput( inputStructSize = sizeof( *hIvasRend->inputsMasa ); activateInput = setRendInputActiveMasa; break; +#ifdef SPLIT_REND_WITH_HEAD_ROT + case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: + maxNumInputsOfType = RENDERER_MAX_BIN_INPUTS; + inputsArray = hIvasRend->inputsSplitPost; + inputStructSize = sizeof( *hIvasRend->inputsSplitPost ); + activateInput = setRendInputActiveSplitPostRend; + break; +#endif default: return IVAS_ERR_INVALID_INPUT_FORMAT; } @@ -3388,7 +4400,7 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( return error; } - if ( inputMc->base.inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( inputMc->base.inConfig != AUDIO_CONFIG_LS_CUSTOM ) { /* Specifying details of custom speaker layout only makes sense if input config is set to custom speaker layout */ return IVAS_ERR_INVALID_INPUT_FORMAT; @@ -3406,7 +4418,11 @@ ivas_error IVAS_REND_ConfigureCustomInputLoudspeakerLayout( return error; } - if ( hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL || hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR || hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( getAudioConfigType( hIvasRend->outputConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) +#else + if ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL || hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_ROOM_IR || hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) +#endif { if ( ( error = initMcBinauralRendering( inputMc, inputMc->base.inConfig, hIvasRend->outputConfig, hIvasRend->hRendererConfig ) ) != IVAS_ERR_OK ) { @@ -3594,6 +4610,11 @@ ivas_error IVAS_REND_RemoveInput( case IVAS_REND_AUDIO_CONFIG_TYPE_MASA: clearInputMasa( (input_masa *) inputBase ); break; +#ifdef SPLIT_REND_WITH_HEAD_ROT + case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: + clearInputSplitRend( (input_split_post_rend *) inputBase ); + break; +#endif default: return IVAS_ERR_INVALID_INPUT_FORMAT; } @@ -3653,7 +4674,7 @@ ivas_error IVAS_REND_GetNumAllObjects( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - if ( hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) + if ( hIvasRend->outputConfig == AUDIO_CONFIG_MASA1 || hIvasRend->outputConfig == AUDIO_CONFIG_MASA2 ) { *numChannels = (int16_t) hIvasRend->inputsIsm[0].total_num_objects; } @@ -3694,7 +4715,7 @@ ivas_error IVAS_REND_GetDelay( /* Compute the maximum delay across all inputs */ for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; i++ ) { - if ( hIvasRend->inputsIsm[i].base.inConfig != IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( hIvasRend->inputsIsm[i].base.inConfig != AUDIO_CONFIG_INVALID ) { latency_ns = max( ( hIvasRend->inputsIsm[i].crendWrapper != NULL ) ? hIvasRend->inputsIsm[i].crendWrapper->binaural_latency_ns : 0, hIvasRend->inputsIsm[i].tdRendWrapper.binaural_latency_ns ); @@ -3704,7 +4725,7 @@ ivas_error IVAS_REND_GetDelay( for ( i = 0; i < RENDERER_MAX_MC_INPUTS; i++ ) { - if ( hIvasRend->inputsMc[i].base.inConfig != IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( hIvasRend->inputsMc[i].base.inConfig != AUDIO_CONFIG_INVALID ) { latency_ns = max( ( hIvasRend->inputsMc[i].crendWrapper != NULL ) ? hIvasRend->inputsMc[i].crendWrapper->binaural_latency_ns : 0, hIvasRend->inputsMc[i].tdRendWrapper.binaural_latency_ns ); @@ -3714,16 +4735,60 @@ ivas_error IVAS_REND_GetDelay( for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; i++ ) { - if ( hIvasRend->inputsSba[i].base.inConfig != IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( hIvasRend->inputsSba[i].base.inConfig != AUDIO_CONFIG_INVALID ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( hIvasRend->splitRendWrapper.hBinHrSplitPreRend != NULL ) + { + if ( hIvasRend->hRendererConfig->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { + latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; + } + else + { + latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; + } + max_latency_ns = max( max_latency_ns, latency_ns ); + } + else if ( hIvasRend->inputsSba[i].cldfbRendWrapper.hCldfbRend != NULL ) + { + latency_ns = hIvasRend->inputsSba[i].cldfbRendWrapper.binaural_latency_ns; + latency_ns += IVAS_FB_DEC_DELAY_NS; + max_latency_ns = max( max_latency_ns, latency_ns ); + } + else +#endif + { + latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; + max_latency_ns = max( max_latency_ns, latency_ns ); + } + } + } + +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; i++ ) + { + if ( hIvasRend->inputsSplitPost[i].base.inConfig != AUDIO_CONFIG_INVALID ) { - latency_ns = ( hIvasRend->inputsSba[i].crendWrapper != NULL ) ? hIvasRend->inputsSba[i].crendWrapper->binaural_latency_ns : 0; + latency_ns = 0; + if ( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.hLc3plusDec != NULL ) + { + int32_t lc3plusDelaySamples; + IVAS_LC3PLUS_DEC_GetDelay( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.hLc3plusDec, &lc3plusDelaySamples ); + latency_ns = (int32_t) roundf( lc3plusDelaySamples * 1000000000.f / *timeScale ); + } + if ( hIvasRend->inputsSplitPost[i].splitPostRendWrapper.multiBinPoseData.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + latency_ns += IVAS_FB_DEC_DELAY_NS; + } max_latency_ns = max( max_latency_ns, latency_ns ); } } +#endif for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; i++ ) { - if ( hIvasRend->inputsMasa[i].base.inConfig != IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( hIvasRend->inputsMasa[i].base.inConfig != AUDIO_CONFIG_INVALID ) { latency_ns = (int32_t) ( (float) IVAS_FB_DEC_DELAY_NS + 0.5f ); max_latency_ns = max( max_latency_ns, latency_ns ); @@ -3751,6 +4816,9 @@ ivas_error IVAS_REND_FeedInputAudio( ivas_error error; input_base *inputBase; int16_t numInputChannels; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t cldfb2tdSampleFact; +#endif /* Validate function arguments */ if ( hIvasRend == NULL || inputAudio.data == NULL ) @@ -3758,9 +4826,16 @@ ivas_error IVAS_REND_FeedInputAudio( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + cldfb2tdSampleFact = ( inputAudio.config.is_cldfb ) ? 2 : 1; + + if ( inputAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < inputAudio.config.numSamplesPerChannel && inputAudio.config.is_cldfb == 0 ) || + ( ( MAX_BUFFER_LENGTH_PER_CHANNEL * cldfb2tdSampleFact ) < inputAudio.config.numSamplesPerChannel && inputAudio.config.is_cldfb == 1 ) ) +#else if ( inputAudio.config.numSamplesPerChannel <= 0 || MAX_BUFFER_LENGTH_PER_CHANNEL < inputAudio.config.numSamplesPerChannel ) +#endif { - return IVAS_ERR_INVALID_BUFFER_SIZE; + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Buffer size outside of supported range" ); } if ( inputAudio.config.numChannels <= 0 || MAX_INPUT_CHANNELS < inputAudio.config.numChannels ) @@ -3768,11 +4843,17 @@ ivas_error IVAS_REND_FeedInputAudio( return IVAS_ERR_WRONG_NUM_CHANNELS; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( getAudioConfigType( hIvasRend->outputConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL && + hIvasRend->outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && + hIvasRend->outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM && + ( inputAudio.config.numSamplesPerChannel * 1000 / cldfb2tdSampleFact ) != ( BINAURAL_RENDERING_FRAME_SIZE_MS * hIvasRend->num_subframes ) * hIvasRend->sampleRateOut ) +#else if ( getAudioConfigType( hIvasRend->outputConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL && inputAudio.config.numSamplesPerChannel * 1000 != BINAURAL_RENDERING_FRAME_SIZE_MS * hIvasRend->sampleRateOut ) +#endif { - /* Binaural rendering requires specific frame size */ - return IVAS_ERR_INVALID_BUFFER_SIZE; + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); } if ( ( error = getInputById( hIvasRend, inputId, (void **) &inputBase ) ) != IVAS_ERR_OK ) @@ -3784,7 +4865,7 @@ ivas_error IVAS_REND_FeedInputAudio( { return error; } - if ( ( hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_MASA1 || hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_MASA2 ) && inputBase->inConfig == IVAS_REND_AUDIO_CONFIG_OBJECT ) + if ( ( hIvasRend->outputConfig == AUDIO_CONFIG_MASA1 || hIvasRend->outputConfig == AUDIO_CONFIG_MASA2 ) && inputBase->inConfig == AUDIO_CONFIG_OBA ) { numInputChannels = (int16_t) hIvasRend->inputsIsm[0].total_num_objects; } @@ -3798,7 +4879,11 @@ ivas_error IVAS_REND_FeedInputAudio( mvr2r( inputAudio.data, inputBase->inputBuffer.data, inputAudio.config.numSamplesPerChannel * inputAudio.config.numChannels ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + inputBase->numNewSamplesPerChannel = inputAudio.config.numSamplesPerChannel / cldfb2tdSampleFact; +#else inputBase->numNewSamplesPerChannel = inputAudio.config.numSamplesPerChannel; +#endif return IVAS_ERR_OK; } @@ -3831,7 +4916,7 @@ ivas_error IVAS_REND_FeedInputObjectMetadata( return error; } - if ( inputBase->inConfig != IVAS_REND_AUDIO_CONFIG_OBJECT ) + if ( inputBase->inConfig != AUDIO_CONFIG_OBA ) { /* Object metadata should only be fed for object inputs */ return IVAS_ERR_METADATA_NOT_EXPECTED; @@ -3919,8 +5004,8 @@ ivas_error IVAS_REND_FeedInputMasaMetadata( *-------------------------------------------------------------------*/ ivas_error IVAS_REND_InitConfig( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_REND_AudioConfig outAudioConfig /* i : output audioConfig */ + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const AUDIO_CONFIG outAudioConfig /* i : output audioConfig */ ) { ivas_error error; @@ -3994,12 +5079,28 @@ int16_t IVAS_REND_GetRenderConfig( hRCout->room_acoustics.nBands = hRCin->roomAcoustics.nBands; hRCout->room_acoustics.acousticPreDelay = hRCin->roomAcoustics.acousticPreDelay; hRCout->room_acoustics.inputPreDelay = hRCin->roomAcoustics.inputPreDelay; - mvr2r( hRCin->directivity, hRCout->directivity, 3 ); + mvr2r( hRCin->directivity, hRCout->directivity, 3 * MAX_NUM_OBJECTS ); mvr2r( hRCin->roomAcoustics.pFc_input, hRCout->room_acoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); mvr2r( hRCin->roomAcoustics.pAcoustic_rt60, hRCout->room_acoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); mvr2r( hRCin->roomAcoustics.pAcoustic_dsr, hRCout->room_acoustics.pAcoustic_dsr, 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; + hRCout->split_rend_config.codec_delay_ms = 0; +#ifdef API_5MS + hRCout->split_rend_config.codec_frame_size_ms = 0; /* 0 means "use default for selected codec" */ +#endif + hRCout->split_rend_config.codec = IVAS_SPLIT_REND_CODEC_DEFAULT; + hRCout->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + hRCout->split_rend_config.rendererSelection = hRCin->split_rend_config.rendererSelection; +#endif + + hRCout->room_acoustics.use_er = hRCin->roomAcoustics.use_er; + hRCout->room_acoustics.lowComplexity = hRCin->roomAcoustics.lowComplexity; + return IVAS_ERR_OK; } @@ -4016,13 +5117,15 @@ int16_t IVAS_REND_FeedRenderConfig( ) { RENDER_CONFIG_HANDLE hRenderConfig; +#ifdef SPLIT_REND_WITH_HEAD_ROT + ivas_error error; +#endif if ( hIvasRend == NULL || hIvasRend->hRendererConfig == NULL ) { return IVAS_ERR_UNEXPECTED_NULL_POINTER; } hRenderConfig = hIvasRend->hRendererConfig; - #ifdef DEBUGGING hRenderConfig->renderer_type_override = RENDER_TYPE_OVERRIDE_NONE; if ( renderConfig.renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV ) @@ -4034,6 +5137,7 @@ int16_t IVAS_REND_FeedRenderConfig( hRenderConfig->renderer_type_override = RENDER_TYPE_OVERRIDE_CREND; } #endif + hRenderConfig->roomAcoustics.override = renderConfig.room_acoustics.override; hRenderConfig->roomAcoustics.nBands = renderConfig.room_acoustics.nBands; hRenderConfig->roomAcoustics.acousticPreDelay = renderConfig.room_acoustics.acousticPreDelay; @@ -4041,52 +5145,215 @@ int16_t IVAS_REND_FeedRenderConfig( mvr2r( renderConfig.room_acoustics.pFc_input, hRenderConfig->roomAcoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); mvr2r( renderConfig.room_acoustics.pAcoustic_rt60, hRenderConfig->roomAcoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); mvr2r( renderConfig.room_acoustics.pAcoustic_dsr, hRenderConfig->roomAcoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); - mvr2r( renderConfig.directivity, hRenderConfig->directivity, 3 ); - - return IVAS_ERR_OK; -} + mvr2r( renderConfig.directivity, hRenderConfig->directivity, 3 * MAX_NUM_OBJECTS ); - -/*-------------------------------------------------------------------* - * IVAS_REND_SetHeadRotation() - * - * - *-------------------------------------------------------------------*/ - -ivas_error IVAS_REND_SetHeadRotation( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ - const IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ -) -{ - int16_t i; - IVAS_QUATERNION rotQuat; - - /* Validate function arguments */ - if ( hIvasRend == NULL ) + hRenderConfig->roomAcoustics.use_er = 0; + if ( renderConfig.room_acoustics.use_er == 1 ) { - return IVAS_ERR_UNEXPECTED_NULL_POINTER; + hRenderConfig->roomAcoustics.use_er = renderConfig.room_acoustics.use_er; + hRenderConfig->roomAcoustics.lowComplexity = renderConfig.room_acoustics.lowComplexity; + hRenderConfig->roomAcoustics.dimensions = renderConfig.room_acoustics.dimensions; + hRenderConfig->roomAcoustics.ListenerOrigin = renderConfig.room_acoustics.ListenerOrigin; + + mvr2r( renderConfig.room_acoustics.AbsCoeff, hRenderConfig->roomAcoustics.AbsCoeff, ER_ABS_COEFF ); } - if ( getAudioConfigType( hIvasRend->outputConfig ) != IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) +#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 ( hRenderConfig->split_rend_config.dof == 0 ) { - /* Head rotation can be set only with binaural output */ - return IVAS_ERR_INVALID_OUTPUT_FORMAT; + hRenderConfig->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; } - if ( headRot == NULL ) + hRenderConfig->split_rend_config.codec = renderConfig.split_rend_config.codec; + + if ( ( error = ivas_split_rend_validate_config( &hRenderConfig->split_rend_config, ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0 ) ) != IVAS_ERR_OK ) { - hIvasRend->headRotData.headRotEnabled = 0; + return error; } - else + + /* Must re-initialize split rendering config in case renderer config is updated after adding renderer inputs */ +#ifdef FIX_658_SPLIT_REND_MASA + /*if its not initialized yet then no need to re-initialize, initialization will happen while adding inputs*/ + if ( hIvasRend->splitRendEncBuffer.data != NULL && hIvasRend->hRendererConfig != NULL ) +#endif { - hIvasRend->headRotData.headRotEnabled = 1; - for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) + int16_t cldfb_in; + cldfb_in = getCldfbRendFlag( hIvasRend, IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN ); + closeSplitRend( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer ); +#ifdef API_5MS + if ( ( error = ivas_split_rend_choose_default_codec( &hIvasRend->hRendererConfig->split_rend_config.codec, + &hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, + ( cldfb_in == 0 ), + hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) != IVAS_ERR_OK ) { - /* check for Euler angle signaling */ + return error; + } +#else + ivas_split_rend_choose_default_codec( &hIvasRend->hRendererConfig->split_rend_config.codec, + ( cldfb_in == 0 ), + hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ); +#endif + if ( ( error = initSplitRend( &hIvasRend->splitRendWrapper, + &hIvasRend->splitRendEncBuffer, + &hIvasRend->hRendererConfig->split_rend_config, + hIvasRend->headRotData, + hIvasRend->sampleRateOut, + hIvasRend->outputConfig, + cldfb_in +#ifdef API_5MS + , + ( hIvasRend->num_subframes == 1 ) ? 1 : 0 +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + } +#endif + + return IVAS_ERR_OK; +} + +#if defined API_5MS && defined SPLIT_REND_WITH_HEAD_ROT +/*-------------------------------------------------------------------* + * IVAS_REND_FeedSplitBinauralBitstream() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_REND_FeedSplitBinauralBitstream( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + const IVAS_REND_InputId inputId, /* i : ID of the input */ + IVAS_REND_BitstreamBuffer *hBits /* i : buffer for input bitstream */ +) +{ + ivas_error error; + input_base *inputBase; + input_split_post_rend *inputSplitPostRend; + + /* Validate function arguments */ + if ( hIvasRend == NULL || hBits == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( ( error = getInputById( hIvasRend, inputId, (void **) &inputBase ) ) != IVAS_ERR_OK ) + { + return error; + } + + inputSplitPostRend = (input_split_post_rend *) inputBase; + inputSplitPostRend->hBits = hBits; + + return IVAS_ERR_OK; +} +#endif + + +/*-------------------------------------------------------------------* + * IVAS_REND_SetHeadRotation() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_REND_SetHeadRotation( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ +#ifdef API_5MS + const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos /* i : listener positions for next rendering call */ +#else + const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + IVAS_SPLIT_REND_ROT_AXIS rot_axis +#endif +#ifdef API_5MS + , + const int16_t sf_idx +#endif +) +{ +#ifndef API_5MS + int16_t i; +#endif + IVAS_QUATERNION rotQuat; + + /* Validate function arguments */ + if ( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( getAudioConfigType( hIvasRend->outputConfig ) != IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL ) + { + /* Head rotation can be set only with binaural output */ + return IVAS_ERR_INVALID_OUTPUT_FORMAT; + } + +#ifdef API_5MS + /* check for Euler angle signaling */ + if ( headRot.w == -3.0f ) + { + Euler2Quat( deg2rad( headRot.x ), deg2rad( headRot.y ), deg2rad( headRot.z ), &rotQuat ); + } + else + { + rotQuat = headRot; + } + + ivas_orient_trk_Process( hIvasRend->headRotData.hOrientationTracker, rotQuat, FRAMES_PER_SEC * MAX_PARAM_SPATIAL_SUBFRAMES, &hIvasRend->headRotData.headPositions[sf_idx] ); + hIvasRend->headRotData.Pos[sf_idx] = Pos; +#else + if ( headRot == NULL ) + { +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + hIvasRend->headRotData.headRotEnabled = 1; + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) + { + hIvasRend->headRotData.headPositions[i].w = -3.0f; + hIvasRend->headRotData.headPositions[i].x = 0.0f; + hIvasRend->headRotData.headPositions[i].y = 0.0f; + hIvasRend->headRotData.headPositions[i].z = 0.0f; + hIvasRend->headRotData.Pos[i].x = 0.0f; + hIvasRend->headRotData.Pos[i].y = 0.0f; + hIvasRend->headRotData.Pos[i].z = 0.0f; + } + } + else + { + hIvasRend->headRotData.headRotEnabled = 0; + } +#else + hIvasRend->headRotData.headRotEnabled = 0; +#endif + } + else + { + hIvasRend->headRotData.headRotEnabled = 1; + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) + { + /* check for Euler angle signaling */ if ( headRot[i].w == -3.0f ) { - Euler2Quat( deg2rad( headRot[i].x ), deg2rad( headRot[i].y ), deg2rad( headRot[i].z ), &rotQuat ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) || + ( hIvasRend->inputsSplitPost[0].base.inConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( hIvasRend->inputsSplitPost[0].base.inConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + Euler2Quat( deg2rad( headRot[i].x ), deg2rad( headRot[i].y ), deg2rad( headRot[i].z ), &rotQuat ); + } + else +#endif + { + Euler2Quat( deg2rad( headRot[i].x ), deg2rad( headRot[i].y ), deg2rad( headRot[i].z ), &rotQuat ); + } } else { @@ -4097,9 +5364,49 @@ ivas_error IVAS_REND_SetHeadRotation( hIvasRend->headRotData.Pos[i] = Pos[i]; } } +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT + hIvasRend->headRotData.sr_pose_pred_axis = rot_axis; +#endif + + return IVAS_ERR_OK; +} + +#ifdef API_5MS +ivas_error +IVAS_REND_DisableHeadRotation( + IVAS_REND_HANDLE hIvasRend /* i/o: Renderer handle */ +) +{ + /* Validate function arguments */ + if ( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + hIvasRend->headRotData.headRotEnabled = 0; + return IVAS_ERR_OK; +} +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*-------------------------------------------------------------------* + * IVAS_REND_SetSplitRendBFI() + * + * + *-------------------------------------------------------------------*/ + +ivas_error +IVAS_REND_SetSplitRendBFI( + IVAS_REND_HANDLE hIvasRend, + const int16_t bfi ) +{ + hIvasRend->splitRendBFI = bfi; return IVAS_ERR_OK; } +#endif /*-------------------------------------------------------------------* @@ -4228,15 +5535,25 @@ ivas_error IVAS_REND_SetReferenceVector( *---------------------------------------------------------------------*/ ivas_error IVAS_REND_SetExternalOrientation( - IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - IVAS_QUATERNION *orientation, /* i : external orientation data */ + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_QUATERNION *orientation, /* i : external orientation data */ +#ifdef API_5MS + int8_t enableHeadRotation, /* i : flag to enable head rotation for this frame */ + int8_t enableExternalOrientation, /* i : flag to enable external orientation for this frame */ + int8_t enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ + int16_t numFramesToTargetOrientation, /* i : number of frames until target orientation is reached */ + const int16_t sf_idx /*i : subframe index*/ +#else int8_t *enableHeadRotation, /* i : flag to enable head rotation for this frame */ int8_t *enableExternalOrientation, /* i : flag to enable external orientation for this frame */ int8_t *enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ int16_t *numFramesToTargetOrientation /* i : number of frames until target orientation is reached */ +#endif ) { +#ifndef API_5MS int16_t i; +#endif /* Validate function arguments */ if ( hIvasRend == NULL || hIvasRend->hExternalOrientationData == NULL ) @@ -4246,22 +5563,45 @@ ivas_error IVAS_REND_SetExternalOrientation( if ( orientation == NULL ) { +#ifdef API_5MS + hIvasRend->hExternalOrientationData->enableExternalOrientation[sf_idx] = 0; +#else for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) { hIvasRend->hExternalOrientationData->enableExternalOrientation[i] = 0; } +#endif } else { +#ifdef API_5MS + QuaternionInverse( *orientation, &hIvasRend->hExternalOrientationData->Quaternions[sf_idx] ); + + hIvasRend->hExternalOrientationData->enableHeadRotation[sf_idx] = enableHeadRotation; + hIvasRend->hExternalOrientationData->enableExternalOrientation[sf_idx] = enableExternalOrientation; + hIvasRend->hExternalOrientationData->enableRotationInterpolation[sf_idx] = enableRotationInterpolation; + hIvasRend->hExternalOrientationData->numFramesToTargetOrientation[sf_idx] = numFramesToTargetOrientation; +#else for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) { +#ifdef API_5MS + /* just fix compilation issues, ToDo: change ext renderer also to 5ms */ + QuaternionInverse( orientation[i], &hIvasRend->hExternalOrientationData->Quaternion ); + + hIvasRend->hExternalOrientationData->enableHeadRotation = enableHeadRotation[i]; + hIvasRend->hExternalOrientationData->enableExternalOrientation = enableExternalOrientation[i]; + hIvasRend->hExternalOrientationData->enableRotationInterpolation = enableRotationInterpolation[i]; + hIvasRend->hExternalOrientationData->numFramesToTargetOrientation = numFramesToTargetOrientation[i]; +#else QuaternionInverse( orientation[i], &hIvasRend->hExternalOrientationData->Quaternions[i] ); hIvasRend->hExternalOrientationData->enableHeadRotation[i] = enableHeadRotation[i]; hIvasRend->hExternalOrientationData->enableExternalOrientation[i] = enableExternalOrientation[i]; hIvasRend->hExternalOrientationData->enableRotationInterpolation[i] = enableRotationInterpolation[i]; hIvasRend->hExternalOrientationData->numFramesToTargetOrientation[i] = numFramesToTargetOrientation[i]; +#endif } +#endif } return IVAS_ERR_OK; @@ -4307,7 +5647,11 @@ ivas_error IVAS_REND_GetCombinedOrientation( if ( hIvasRend->hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( i = 0; i < hIvasRend->hCombinedOrientationData->num_subframes; ++i ) +#else for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; ++i ) +#endif { pOrientation[i] = hIvasRend->hCombinedOrientationData->Quaternions[i]; } @@ -4393,6 +5737,7 @@ static void renderBufferChannelLerp( return; } + /* Take one channel from input buffer and copy it to each channel in output buffer, with different gain applied per output channel */ static void renderBufferChannel( @@ -4406,10 +5751,22 @@ static void renderBufferChannel( return; } +#ifdef API_5MS +static ivas_error chooseCrossfade( const IVAS_REND_HeadRotData *headRotData, const float **pCrossfade ) +{ + *pCrossfade = headRotData->crossfade; + return IVAS_ERR_OK; +} +#endif + static ivas_error rotateFrameMc( - IVAS_REND_AudioBuffer inAudio, /* i : Input Audio buffer */ - IVAS_REND_AudioConfig inConfig, /* i : Input Audio config */ - LSSETUP_CUSTOM_STRUCT inCustomLs, /* i : Input Custom LS setup */ + IVAS_REND_AudioBuffer inAudio, /* i : Input Audio buffer */ + AUDIO_CONFIG inConfig, /* i : Input Audio config */ +#ifdef API_5MS + const LSSETUP_CUSTOM_STRUCT *pInCustomLs, /* i : Input Custom LS setup */ +#else + LSSETUP_CUSTOM_STRUCT inCustomLs, /* i : Input Custom LS setup */ +#endif const IVAS_REND_HeadRotData *headRotData, /* i : Head rotation data */ const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData, /* i : Combined head and external orientations */ rotation_gains gains_prev, /* i/o: Previous frame rotation gains */ @@ -4419,7 +5776,12 @@ static ivas_error rotateFrameMc( { int16_t i; int16_t j; +#ifdef API_5MS + const float *crossfade; + int16_t num_subframes; +#endif int16_t subframe_idx, subframe_len; + int16_t azimuth, elevation; int16_t is_planar_setup, lfe_idx; int16_t nchan; @@ -4434,7 +5796,15 @@ static ivas_error rotateFrameMc( push_wmops( "rotateFrameMc" ); - if ( inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) +#ifdef API_5MS + if ( ( error = chooseCrossfade( headRotData, &crossfade ) ) != IVAS_ERR_OK ) + { + return error; + } + num_subframes = ( hCombinedOrientationData != NULL ) ? ( *hCombinedOrientationData )->num_subframes : MAX_PARAM_SPATIAL_SUBFRAMES; +#endif + + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM ) { if ( ( error = getAudioConfigNumChannels( inConfig, &nchan ) ) != IVAS_ERR_OK ) { @@ -4443,10 +5813,20 @@ static ivas_error rotateFrameMc( } else { +#ifdef API_5MS + nchan = pInCustomLs->num_spk + pInCustomLs->num_lfe; +#else nchan = inCustomLs.num_spk + inCustomLs.num_lfe; +#endif } - if ( ( error = getMcConfigValues( inConfig, inCustomLs, &ls_azimuth, &ls_elevation, &lfe_idx, &is_planar_setup ) ) != IVAS_ERR_OK ) + if ( ( error = getMcConfigValues( inConfig, +#ifdef API_5MS + pInCustomLs, +#else + inCustomLs, +#endif + &ls_azimuth, &ls_elevation, &lfe_idx, &is_planar_setup ) ) != IVAS_ERR_OK ) { return error; } @@ -4459,8 +5839,14 @@ static ivas_error rotateFrameMc( } /* subframe loop */ + +#ifndef API_5MS subframe_len = inAudio.config.numSamplesPerChannel / RENDERER_HEAD_POSITIONS_PER_FRAME; for ( subframe_idx = 0; subframe_idx < RENDERER_HEAD_POSITIONS_PER_FRAME; subframe_idx++ ) +#else + subframe_len = inAudio.config.numSamplesPerChannel / num_subframes; + for ( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) +#endif { for ( i = 0; i < 3; i++ ) { @@ -4518,6 +5904,18 @@ static ivas_error rotateFrameMc( { for ( ch_in = 0; ch_in < nchan; ch_in++ ) { +#ifdef API_5MS + writePtr = getSmplPtr( outAudio, ch_out, subframe_idx * subframe_len ); + readPtr = getSmplPtr( inAudio, ch_in, subframe_idx * subframe_len ); + /* crossfade with previous rotation gains */ + for ( i = 0; i < subframe_len; i++ ) + { + *writePtr++ += + ( *readPtr ) * ( ( 1 - crossfade[i] ) * gains_prev[ch_in][ch_out] ) + + ( *readPtr ) * ( crossfade[i] * gains[ch_in][ch_out] ); + readPtr++; + } +#else writePtr = getSmplPtr( outAudio, ch_out, subframe_idx * subframe_len ); readPtr = getSmplPtr( inAudio, ch_in, subframe_idx * subframe_len ); /* crossfade with previous rotation gains */ @@ -4528,6 +5926,7 @@ static ivas_error rotateFrameMc( ( *readPtr ) * ( headRotData->crossfade[i] * gains[ch_in][ch_out] ); readPtr++; } +#endif } } @@ -4543,9 +5942,10 @@ static ivas_error rotateFrameMc( return IVAS_ERR_OK; } + static ivas_error rotateFrameSba( IVAS_REND_AudioBuffer inAudio, /* i : Input Audio buffer */ - IVAS_REND_AudioConfig inConfig, /* i : Input Audio config */ + const AUDIO_CONFIG inConfig, /* i : Input Audio config */ const IVAS_REND_HeadRotData *headRotData, /* i : Head rotation data */ const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData, /* i : Combined head and external orientations */ rotation_gains gains_prev, /* i/o: Previous frame rotation gains */ @@ -4555,23 +5955,44 @@ static ivas_error rotateFrameSba( int16_t i, l, n, m; int16_t m1, m2; int16_t shd_rot_max_order; +#ifdef API_5MS + const float *crossfade; + int16_t num_subframes; +#endif int16_t subframe_idx, subframe_len; - float *readPtr, *writePtr; + + float *writePtr; rotation_matrix Rmat; float tmpRot[2 * HEADROT_ORDER + 1]; rotation_gains gains; ivas_error error; + int16_t idx; + float val, cf, oneminuscf; push_wmops( "rotateFrameSba" ); +#ifdef API_5MS + if ( ( error = chooseCrossfade( headRotData, &crossfade ) ) != IVAS_ERR_OK ) + { + return error; + } +#endif +#ifdef API_5MS + num_subframes = ( hCombinedOrientationData != NULL ) ? ( *hCombinedOrientationData )->num_subframes : MAX_PARAM_SPATIAL_SUBFRAMES; +#endif + if ( ( error = getAmbisonicsOrder( inConfig, &shd_rot_max_order ) ) != IVAS_ERR_OK ) { return error; } - /* subframe loop */ +#ifndef API_5MS subframe_len = inAudio.config.numSamplesPerChannel / RENDERER_HEAD_POSITIONS_PER_FRAME; for ( subframe_idx = 0; subframe_idx < RENDERER_HEAD_POSITIONS_PER_FRAME; subframe_idx++ ) +#else + subframe_len = inAudio.config.numSamplesPerChannel / num_subframes; + for ( subframe_idx = 0; subframe_idx < num_subframes; subframe_idx++ ) +#endif { /* initialize rotation matrices with zeros */ for ( i = 0; i < HEADROT_SHMAT_DIM; i++ ) @@ -4601,6 +6022,13 @@ static ivas_error rotateFrameSba( for ( i = 0; i < subframe_len; i++ ) { + idx = subframe_idx * subframe_len + i; +#ifndef API_5MS + cf = headRotData->crossfade[i]; +#else + cf = crossfade[i]; +#endif + oneminuscf = 1 - cf; /* As the rotation matrix becomes block diagonal in a SH basis, we can*/ /* apply each angular-momentum block individually to save complexity. */ @@ -4616,16 +6044,15 @@ static ivas_error rotateFrameSba( for ( m = m1; m < m2; m++ ) { - readPtr = getSmplPtr( inAudio, m, subframe_idx * subframe_len + i ); + val = inAudio.data[m * inAudio.config.numSamplesPerChannel + idx]; /* crossfade with previous rotation gains */ - tmpRot[n - m1] += headRotData->crossfade[i] * gains[n][m] * ( *readPtr ) + - ( 1 - headRotData->crossfade[i] ) * gains_prev[n][m] * ( *readPtr ); + tmpRot[n - m1] += ( cf * gains[n][m] * val + oneminuscf * gains_prev[n][m] * val ); } } /* write back the result */ for ( n = m1; n < m2; n++ ) { - writePtr = getSmplPtr( outAudio, n, subframe_idx * subframe_len + i ); + writePtr = getSmplPtr( outAudio, n, idx ); ( *writePtr ) = tmpRot[n - m1]; } m1 = m2; @@ -4633,21 +6060,6 @@ static ivas_error rotateFrameSba( } } - /*unoptimized code for reference (full matrix multiplication)*/ - // for ( n = 0; n < nchan; n++ ) - // { - // tmpRot[n] = 0.f; - // - // for ( m = 0; m < nchan; m++ ) - // { - // tmpRot[n] += SHrotmat[n][m] * output[m][i]; - // } - // } - // for ( n = 0; n < nchan; n++ ) - // { - // output[n][i] = tmpRot[n]; - // } - /* move SHrotmat to SHrotmat_prev */ for ( i = 0; i < HEADROT_SHMAT_DIM; i++ ) { @@ -4660,25 +6072,26 @@ static ivas_error rotateFrameSba( return IVAS_ERR_OK; } + static ivas_error renderIsmToBinaural( const input_ism *ismInput, IVAS_REND_AudioBuffer outAudio ) { float tmpTDRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; ivas_error error; + int16_t ism_md_subframe_update_ext; push_wmops( "renderIsmToBinaural" ); - + /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */ + ism_md_subframe_update_ext = (int16_t) round( ismInput->ism_metadata_delay_ms / ( 1000 / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) ); copyBufferTo2dArray( ismInput->base.inputBuffer, tmpTDRendBuffer ); - if ( ( error = ivas_td_binaural_renderer_ext( &ismInput->tdRendWrapper, - ismInput->base.inConfig, - NULL, - ismInput->base.ctx.pCombinedOrientationData, - &ismInput->currentPos, - ismInput->hReverb, - outAudio.config.numSamplesPerChannel, - tmpTDRendBuffer ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_td_binaural_renderer_ext( &ismInput->tdRendWrapper, ismInput->base.inConfig, NULL, ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos, + ismInput->hReverb, ism_md_subframe_update_ext, +#ifdef API_5MS + *ismInput->base.ctx.pOutSampleRate, +#endif + outAudio.config.numSamplesPerChannel, tmpTDRendBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -4690,13 +6103,41 @@ static ivas_error renderIsmToBinaural( return IVAS_ERR_OK; } +#ifdef API_5MS +static int16_t getNumSubframesInBuffer( const IVAS_REND_AudioBuffer *buffer, int32_t sampleRate ) +{ +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t cldfb2tdSampleFact; + + cldfb2tdSampleFact = buffer->config.is_cldfb ? 2 : 1; +#endif + +#ifdef DEBUGGING +#ifdef SPLIT_REND_WITH_HEAD_ROT + assert( buffer->config.numSamplesPerChannel % ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES * cldfb2tdSampleFact ) == 0 ); +#else + assert( buffer->config.numSamplesPerChannel % ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) == 0 ); +#endif +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT + return (int16_t) ( buffer->config.numSamplesPerChannel / ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES * cldfb2tdSampleFact ) ); +#else + return (int16_t) ( buffer->config.numSamplesPerChannel / ( sampleRate / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) ); +#endif +} +#endif + static ivas_error renderIsmToBinauralRoom( input_ism *ismInput, IVAS_REND_AudioBuffer outAudio ) { int16_t i; int16_t azi_rot, ele_rot; - int16_t subframe_idx, subframe_len; + int16_t subframe_idx; +#ifndef API_5MS + int16_t subframe_len; +#endif int16_t tmp; rotation_matrix Rmat; float tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; @@ -4723,8 +6164,13 @@ static ivas_error renderIsmToBinauralRoom( combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < ( *hCombinedOrientationData )->num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { + if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) { combinedOrientationEnabled = 1; @@ -4733,13 +6179,17 @@ static ivas_error renderIsmToBinauralRoom( } } - if ( combinedOrientationEnabled ) { +#ifndef API_5MS subframe_len = ismInput->base.inputBuffer.config.numSamplesPerChannel / RENDERER_HEAD_POSITIONS_PER_FRAME; // for ( subframe_idx = 0; subframe_idx < RENDERER_HEAD_POSITIONS_PER_FRAME; subframe_idx++ ) for ( subframe_idx = 0; subframe_idx < 1; subframe_idx++ ) { +#else + for ( subframe_idx = 0; subframe_idx < 1; subframe_idx++ ) + { +#endif for ( i = 0; i < 3; i++ ) { if ( hCombinedOrientationData != NULL && ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] ) @@ -4757,7 +6207,9 @@ static ivas_error renderIsmToBinauralRoom( } } } +#ifndef API_5MS (void) subframe_len; // avoid warning +#endif } /* TODO tmu : see issue #518 */ @@ -4803,7 +6255,7 @@ static ivas_error renderIsmToBinauralRoom( /* intermediate rendering to 7_1_4 */ tmpMcBuffer = ismInput->base.inputBuffer; - if ( ( error = getAudioConfigNumChannels( IVAS_REND_AUDIO_CONFIG_7_1_4, &tmp ) ) != IVAS_ERR_OK ) + if ( ( error = getAudioConfigNumChannels( AUDIO_CONFIG_7_1_4, &tmp ) ) != IVAS_ERR_OK ) { return error; } @@ -4817,7 +6269,16 @@ static ivas_error renderIsmToBinauralRoom( copyBufferTo2dArray( tmpMcBuffer, tmpRendBuffer ); if ( ( error = ivas_rend_crendProcess( ismInput->crendWrapper, AUDIO_CONFIG_7_1_4, AUDIO_CONFIG_BINAURAL_ROOM_IR, - NULL, NULL, NULL, NULL, p_tmpRendBuffer, *ismInput->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK ) + NULL, NULL, NULL, NULL, p_tmpRendBuffer, *ismInput->base.ctx.pOutSampleRate +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *ismInput->base.ctx.pOutSampleRate ) +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -4835,22 +6296,14 @@ static ivas_error renderIsmToBinauralReverb( input_ism *ismInput, IVAS_REND_AudioBuffer outAudio ) { -#ifdef JBM_TSM_ON_TCS - int16_t i; -#endif float tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; ivas_error error; -#ifdef JBM_TSM_ON_TCS - float *p_tmpRendBuffer[MAX_OUTPUT_CHANNELS]; - - for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) - { - p_tmpRendBuffer[i] = tmpRendBuffer[i]; - } -#endif + int16_t ism_md_subframe_update_ext; push_wmops( "renderIsmToBinauralRoom" ); + /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */ + ism_md_subframe_update_ext = (int16_t) round( ismInput->ism_metadata_delay_ms / ( 1000 / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) ); copyBufferTo2dArray( ismInput->base.inputBuffer, tmpRendBuffer ); if ( ( error = ivas_td_binaural_renderer_ext( &ismInput->tdRendWrapper, @@ -4859,17 +6312,23 @@ static ivas_error renderIsmToBinauralReverb( ismInput->base.ctx.pCombinedOrientationData, &ismInput->currentPos, ismInput->hReverb, + ism_md_subframe_update_ext, +#ifdef API_5MS + *ismInput->base.ctx.pOutSampleRate, +#endif outAudio.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK ) { return error; } + accumulate2dArrayToBuffer( tmpRendBuffer, &outAudio ); pop_wmops(); return IVAS_ERR_OK; } + static ivas_error renderIsmToMc( const input_ism *ismInput, const IVAS_REND_AudioBuffer outAudio ) @@ -4881,7 +6340,7 @@ static ivas_error renderIsmToMc( push_wmops( "renderIsmToMc" ); /* TODO(sgi): Possible optimization: less processing needed if position didn't change */ - if ( *ismInput->base.ctx.pOutConfig == IVAS_REND_AUDIO_CONFIG_STEREO ) + if ( *ismInput->base.ctx.pOutConfig == AUDIO_CONFIG_STEREO ) { if ( ismInput->nonDiegeticPan ) { @@ -4892,16 +6351,12 @@ static ivas_error renderIsmToMc( else { set_zero( currentPanGains, 16 ); - ivas_ism_get_stereo_gains( ismInput->currentPos.azimuth, - ismInput->currentPos.elevation, - ¤tPanGains[0], - ¤tPanGains[1] ); + + ivas_ism_get_stereo_gains( ismInput->currentPos.azimuth, ismInput->currentPos.elevation, ¤tPanGains[0], ¤tPanGains[1] ); set_zero( previousPanGains, 16 ); - ivas_ism_get_stereo_gains( ismInput->previousPos.azimuth, - ismInput->previousPos.elevation, - &previousPanGains[0], - &previousPanGains[1] ); + + ivas_ism_get_stereo_gains( ismInput->previousPos.azimuth, ismInput->previousPos.elevation, &previousPanGains[0], &previousPanGains[1] ); } } else @@ -4934,9 +6389,10 @@ static ivas_error renderIsmToMc( return IVAS_ERR_OK; } + static ivas_error renderIsmToSba( const input_ism *ismInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, const IVAS_REND_AudioBuffer outAudio ) { int16_t ambiOrderOut; @@ -4987,42 +6443,176 @@ static ivas_error renderIsmToSba( return error; } -static ivas_error renderIsmToMasa( - input_ism *ismInput, - IVAS_REND_AudioBuffer outAudio ) -{ - float tmpRendBuffer[MAX_NUM_OBJECTS][L_FRAME48k]; - - push_wmops( "renderIsmToMasa" ); - - copyBufferTo2dArray( ismInput->base.inputBuffer, tmpRendBuffer ); - ivas_omasa_ana( ismInput->hOMasa, tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, ismInput->base.inputBuffer.config.numChannels ); - accumulate2dArrayToBuffer( tmpRendBuffer, &outAudio ); - - pop_wmops(); - - return IVAS_ERR_OK; -} -static ivas_error renderInputIsm( +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error renderIsmToSplitBinaural( input_ism *ismInput, - const IVAS_REND_AudioConfig outConfig, const IVAS_REND_AudioBuffer outAudio ) { ivas_error error; - IVAS_REND_AudioBuffer inAudio; + float tmpProcessing[MAX_NUM_OBJECTS][L_FRAME48k]; + int16_t pos_idx; + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + const SPLIT_REND_WRAPPER *pSplitRendWrapper; + IVAS_QUATERNION originalHeadRot[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t i; + float tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; + int16_t output_frame = ismInput->base.inputBuffer.config.numSamplesPerChannel; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; + int16_t ism_md_subframe_update_ext; - inAudio = ismInput->base.inputBuffer; + push_wmops( "renderIsmToSplitBinaural" ); - if ( ismInput->base.numNewSamplesPerChannel != outAudio.config.numSamplesPerChannel ) - { - /* Mismatch between the number of input samples vs number of requested output samples - currently not allowed */ - return IVAS_ERR_INVALID_BUFFER_SIZE; - } - ismInput->base.numNewSamplesPerChannel = 0; + pSplitRendWrapper = ismInput->base.ctx.pSplitRendWrapper; + pMultiBinPoseData = &pSplitRendWrapper->multiBinPoseData; - /* Apply input gain to new audio */ - v_multc( inAudio.data, ismInput->base.gain, inAudio.data, inAudio.config.numSamplesPerChannel * inAudio.config.numChannels ); + /* Metadata Delay to sync with audio delay converted from ms to 5ms (1000/50/4) subframe index */ + ism_md_subframe_update_ext = (int16_t) round( ismInput->ism_metadata_delay_ms / ( 1000 / FRAMES_PER_SEC / MAX_PARAM_SPATIAL_SUBFRAMES ) ); + + pCombinedOrientationData = *ismInput->base.ctx.pCombinedOrientationData; + + if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { +#ifdef API_5MS + for ( i = 1; i < pCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 1; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + pCombinedOrientationData->Quaternions[i] = pCombinedOrientationData->Quaternions[0]; + } + } + + /* Save current head positions */ +#ifdef API_5MS + for ( i = 0; i < pCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + originalHeadRot[i] = pCombinedOrientationData->Quaternions[i]; + } + + /* Copy input audio to a processing buffer. */ + copyBufferTo2dArray( ismInput->base.inputBuffer, tmpProcessing ); + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + /* Update head positions */ + if ( pos_idx != 0 ) + { +#ifdef API_5MS + for ( i = 0; i < pCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + if ( originalHeadRot[i].w == -3.0f ) + { + pCombinedOrientationData->Quaternions[i].w = -3.0f; + pCombinedOrientationData->Quaternions[i].x = originalHeadRot[i].x + pMultiBinPoseData->relative_head_poses[pos_idx][0]; + pCombinedOrientationData->Quaternions[i].y = originalHeadRot[i].y + pMultiBinPoseData->relative_head_poses[pos_idx][1]; + pCombinedOrientationData->Quaternions[i].z = originalHeadRot[i].z + pMultiBinPoseData->relative_head_poses[pos_idx][2]; + } + else + { + pCombinedOrientationData->Quaternions[i].w = -3.0f; + Quat2EulerDegree( originalHeadRot[i], + &pCombinedOrientationData->Quaternions[i].z, + &pCombinedOrientationData->Quaternions[i].y, + &pCombinedOrientationData->Quaternions[i].x ); + pCombinedOrientationData->Quaternions[i].x += pMultiBinPoseData->relative_head_poses[pos_idx][0]; + pCombinedOrientationData->Quaternions[i].y += pMultiBinPoseData->relative_head_poses[pos_idx][1]; + pCombinedOrientationData->Quaternions[i].z += pMultiBinPoseData->relative_head_poses[pos_idx][2]; + } + } + } + + /* Render */ + error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &ismInput->tdRendWrapper : &ismInput->splitTdRendWrappers[pos_idx - 1], + ismInput->base.inConfig, + NULL, + ismInput->base.ctx.pCombinedOrientationData, + &ismInput->currentPos, + NULL, + ism_md_subframe_update_ext, +#ifdef API_5MS + *ismInput->base.ctx.pOutSampleRate, +#endif + output_frame, + tmpProcessing ); + if ( error != IVAS_ERR_OK ) + { + return error; + } + + /* Copy rendered audio to tmp storage buffer. Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + mvr2r( tmpProcessing[0], tmpBinaural[2 * pos_idx], output_frame ); + mvr2r( tmpProcessing[1], tmpBinaural[2 * pos_idx + 1], output_frame ); + + /* Overwrite processing buffer with original input audio again */ + copyBufferTo2dArray( ismInput->base.inputBuffer, tmpProcessing ); + } + + /* Restore original head rotation */ +#ifdef API_5MS + for ( i = 0; i < pCombinedOrientationData->num_subframes; ++i ) +#else + for ( i = 0; i < MAX_PARAM_SPATIAL_SUBFRAMES; ++i ) +#endif + { + pCombinedOrientationData->Quaternions[i] = originalHeadRot[i]; + } + + accumulate2dArrayToBuffer( tmpBinaural, &outAudio ); + pop_wmops(); + + /* Encoding to split rendering bitstream done at a higher level */ + return IVAS_ERR_OK; +} +#endif + + +static void renderIsmToMasa( + input_ism *ismInput, + IVAS_REND_AudioBuffer outAudio ) +{ + float tmpRendBuffer[MAX_NUM_OBJECTS][L_FRAME48k]; + + push_wmops( "renderIsmToMasa" ); + + copyBufferTo2dArray( ismInput->base.inputBuffer, tmpRendBuffer ); + + ivas_omasa_ana( ismInput->hOMasa, tmpRendBuffer, ismInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, ismInput->base.inputBuffer.config.numChannels ); + + accumulate2dArrayToBuffer( tmpRendBuffer, &outAudio ); + + pop_wmops(); + + return; +} + + +static ivas_error renderInputIsm( + input_ism *ismInput, + const AUDIO_CONFIG outConfig, + const IVAS_REND_AudioBuffer outAudio ) +{ + ivas_error error; + IVAS_REND_AudioBuffer inAudio; + + error = IVAS_ERR_OK; + inAudio = ismInput->base.inputBuffer; + + if ( ismInput->base.numNewSamplesPerChannel != outAudio.config.numSamplesPerChannel ) + { + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); + } + ismInput->base.numNewSamplesPerChannel = 0; + + /* Apply input gain to new audio */ + v_multc( inAudio.data, ismInput->base.gain, inAudio.data, inAudio.config.numSamplesPerChannel * inAudio.config.numChannels ); switch ( getAudioConfigType( outConfig ) ) { @@ -5035,13 +6625,19 @@ static ivas_error renderInputIsm( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_BINAURAL: + case AUDIO_CONFIG_BINAURAL: error = renderIsmToBinaural( ismInput, outAudio ); break; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_IR: error = renderIsmToBinauralRoom( ismInput, outAudio ); break; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + error = renderIsmToSplitBinaural( ismInput, outAudio ); + break; +#endif + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: error = renderIsmToBinauralReverb( ismInput, outAudio ); break; default: @@ -5049,20 +6645,22 @@ static ivas_error renderInputIsm( } break; case IVAS_REND_AUDIO_CONFIG_TYPE_MASA: - error = renderIsmToMasa( ismInput, outAudio ); + renderIsmToMasa( ismInput, outAudio ); break; default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; } + /* Check error here to keep switch statement more compact */ if ( error != IVAS_ERR_OK ) { return error; } - return IVAS_ERR_OK; + return error; } + static ivas_error renderActiveInputsIsm( IVAS_REND_HANDLE hIvasRend, IVAS_REND_AudioBuffer outAudio ) @@ -5073,7 +6671,7 @@ static ivas_error renderActiveInputsIsm( for ( i = 0, pCurrentInput = hIvasRend->inputsIsm; i < RENDERER_MAX_ISM_INPUTS; ++i, ++pCurrentInput ) { - if ( pCurrentInput->base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pCurrentInput->base.inConfig == AUDIO_CONFIG_INVALID ) { /* Skip inactive inputs */ continue; @@ -5088,22 +6686,36 @@ static ivas_error renderActiveInputsIsm( return IVAS_ERR_OK; } + static ivas_error renderLfeToBinaural( const input_mc *mcInput, +#ifdef SPLIT_REND_WITH_HEAD_ROT + const AUDIO_CONFIG outConfig, +#endif IVAS_REND_AudioBuffer outAudio ) { - int16_t i; int16_t lfe_idx; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t pose_idx, num_poses; +#endif float gain; - float *readPtr, *writePtr; + int16_t ear_idx; + float tmpLfeBuffer[MAX_BUFFER_LENGTH_PER_CHANNEL]; + int16_t frame_size, num_cpy_smpl_cur_frame, num_cpy_smpl_prev_frame; + const float *lfeInput; + float *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 = GAIN_LFE; - if ( mcInput->base.inConfig != IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + if ( mcInput->base.inConfig != AUDIO_CONFIG_LS_CUSTOM ) { lfe_idx = LFE_CHANNEL; } @@ -5117,33 +6729,65 @@ static ivas_error renderLfeToBinaural( return IVAS_ERR_OK; } - /* Copy LFE to left and right ears */ - readPtr = getSmplPtr( mcInput->base.inputBuffer, lfe_idx, 0 ); - writePtr = getSmplPtr( outAudio, 0, 0 ); - for ( i = 0; i < mcInput->base.inputBuffer.config.numSamplesPerChannel; i++ ) + /* --- Prepare LFE signal to be added to binaural output --- */ + lfeInput = getSmplPtr( mcInput->base.inputBuffer, lfe_idx, 0 ); + frame_size = mcInput->base.inputBuffer.config.numSamplesPerChannel; + num_cpy_smpl_prev_frame = mcInput->binauralDelaySmp; + num_cpy_smpl_cur_frame = frame_size - num_cpy_smpl_prev_frame; + + /* Assuming LFE should be delayed by less that the duration of one frame */ + assert( mcInput->binauralDelaySmp < frame_size ); + + /* Get delayed LFE signal from previous frame, apply gain and save in tmp buffer */ + v_multc( mcInput->lfeDelayBuffer, gain, tmpLfeBuffer, num_cpy_smpl_prev_frame ); + + /* Continue filling tmp buffer, now with LFE signal from current frame */ + v_multc( lfeInput, gain, tmpLfeBuffer + num_cpy_smpl_prev_frame, num_cpy_smpl_cur_frame ); + + /* Save remaining LFE samples of current frame for next frame */ + mvr2r( lfeInput + num_cpy_smpl_cur_frame, mcInput->lfeDelayBuffer, num_cpy_smpl_prev_frame ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* Copy LFE to left and right binaural channels for all poses */ + if ( mcInput->base.ctx.pSplitRendWrapper != NULL ) + { + num_poses = mcInput->base.ctx.pSplitRendWrapper->multiBinPoseData.num_poses; + } + else { - *writePtr++ += gain * ( *readPtr++ ); + num_poses = 1; } - readPtr = getSmplPtr( mcInput->base.inputBuffer, lfe_idx, 0 ); - writePtr = getSmplPtr( outAudio, 1, 0 ); - for ( i = 0; i < mcInput->base.inputBuffer.config.numSamplesPerChannel; i++ ) + for ( pose_idx = 0; pose_idx < num_poses; ++pose_idx ) + { + for ( ear_idx = 0; ear_idx < BINAURAL_CHANNELS; ++ear_idx ) + { + writePtr = getSmplPtr( outAudio, pose_idx * BINAURAL_CHANNELS + ear_idx, 0 ); + v_add( writePtr, tmpLfeBuffer, writePtr, frame_size ); + } + } +#else /* SPLIT_REND_WITH_HEAD_ROT */ + /* Copy LFE to left and right ears */ + for ( ear_idx = 0; ear_idx < BINAURAL_CHANNELS; ++ear_idx ) { - *writePtr++ += gain * ( *readPtr++ ); + writePtr = getSmplPtr( outAudio, ear_idx, 0 ); + v_add( writePtr, tmpLfeBuffer, writePtr, frame_size ); } +#endif /* SPLIT_REND_WITH_HEAD_ROT */ pop_wmops(); return IVAS_ERR_OK; } + static ivas_error renderMcToBinaural( input_mc *mcInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { float tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; - IVAS_REND_AudioConfig inConfig; + AUDIO_CONFIG inConfig; ivas_error error; IVAS_REND_AudioBuffer tmpRotBuffer; const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData; @@ -5165,7 +6809,11 @@ static ivas_error renderMcToBinaural( combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < ( *hCombinedOrientationData )->num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) { @@ -5175,16 +6823,19 @@ static ivas_error renderMcToBinaural( } } - if ( ( inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) || ( combinedOrientationEnabled - - && ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 || inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) ) ) + if ( ( inConfig == AUDIO_CONFIG_LS_CUSTOM ) || ( combinedOrientationEnabled && ( inConfig == AUDIO_CONFIG_5_1 || inConfig == AUDIO_CONFIG_7_1 ) ) ) { copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); if ( ( error = ivas_td_binaural_renderer_ext( &mcInput->tdRendWrapper, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pCombinedOrientationData, NULL, - mcInput->hReverb, mcInput->base.inputBuffer.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK ) + mcInput->hReverb, + 0, +#ifdef API_5MS + *mcInput->base.ctx.pOutSampleRate, +#endif + mcInput->base.inputBuffer.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -5198,9 +6849,20 @@ static ivas_error renderMcToBinaural( tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); set_zero( tmpRotBuffer.data, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); - if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, mcInput->base.inConfig, mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, + if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, mcInput->base.inConfig, +#ifdef API_5MS + &mcInput->customLsInput, +#else + mcInput->customLsInput, +#endif + mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev, mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + mcInput->rot_gains_prev[0], +#else + mcInput->rot_gains_prev, +#endif + mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -5214,8 +6876,16 @@ static ivas_error renderMcToBinaural( } /* call CREND */ - if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, getIvasAudioConfigFromRendAudioConfig( mcInput->base.inConfig ), getIvasAudioConfigFromRendAudioConfig( outConfig ), - NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -5223,7 +6893,12 @@ static ivas_error renderMcToBinaural( accumulate2dArrayToBuffer( tmpRendBuffer, &outAudio ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = renderLfeToBinaural( mcInput, outConfig, outAudio ) ) != IVAS_ERR_OK ) +#else if ( ( error = renderLfeToBinaural( mcInput, outAudio ) ) != IVAS_ERR_OK ) +#endif + { return error; } @@ -5233,13 +6908,14 @@ static ivas_error renderMcToBinaural( return IVAS_ERR_OK; } + static ivas_error renderMcToBinauralRoom( input_mc *mcInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { float tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; - IVAS_REND_AudioConfig inConfig; + AUDIO_CONFIG inConfig; ivas_error error; IVAS_REND_AudioBuffer tmpRotBuffer; float *p_tmpRendBuffer[MAX_OUTPUT_CHANNELS]; @@ -5261,7 +6937,11 @@ static ivas_error renderMcToBinauralRoom( combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < ( *hCombinedOrientationData )->num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) { @@ -5271,13 +6951,18 @@ static ivas_error renderMcToBinauralRoom( } } - if ( ( mcInput->hReverb != NULL && outConfig == IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && ( ( inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) || ( combinedOrientationEnabled && ( inConfig == IVAS_REND_AUDIO_CONFIG_5_1 || inConfig == IVAS_REND_AUDIO_CONFIG_7_1 ) ) ) ) + if ( ( mcInput->hReverb != NULL && outConfig == AUDIO_CONFIG_BINAURAL_ROOM_REVERB ) && ( ( inConfig == AUDIO_CONFIG_LS_CUSTOM ) || ( combinedOrientationEnabled && ( inConfig == AUDIO_CONFIG_5_1 || inConfig == AUDIO_CONFIG_7_1 ) ) ) ) { copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); if ( ( error = ivas_td_binaural_renderer_ext( &mcInput->tdRendWrapper, mcInput->base.inConfig, &mcInput->customLsInput, mcInput->base.ctx.pCombinedOrientationData, - NULL, mcInput->hReverb, mcInput->base.inputBuffer.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK ) + NULL, mcInput->hReverb, + 0, +#ifdef API_5MS + *mcInput->base.ctx.pOutSampleRate, +#endif + mcInput->base.inputBuffer.config.numSamplesPerChannel, tmpRendBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -5291,9 +6976,20 @@ static ivas_error renderMcToBinauralRoom( tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); set_zero( tmpRotBuffer.data, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); - if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, mcInput->base.inConfig, mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, + if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, mcInput->base.inConfig, +#ifdef API_5MS + &mcInput->customLsInput, +#else + mcInput->customLsInput, +#endif + mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev, mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + mcInput->rot_gains_prev[0], +#else + mcInput->rot_gains_prev, +#endif + mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -5307,8 +7003,16 @@ static ivas_error renderMcToBinauralRoom( } /* call CREND */ - if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, getIvasAudioConfigFromRendAudioConfig( mcInput->base.inConfig ), getIvasAudioConfigFromRendAudioConfig( outConfig ), - NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, mcInput->base.inConfig, outConfig, NULL, NULL, NULL, NULL, p_tmpRendBuffer, *mcInput->base.ctx.pOutSampleRate +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -5316,7 +7020,11 @@ static ivas_error renderMcToBinauralRoom( accumulate2dArrayToBuffer( tmpRendBuffer, &outAudio ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = renderLfeToBinaural( mcInput, outConfig, outAudio ) ) != IVAS_ERR_OK ) +#else if ( ( error = renderLfeToBinaural( mcInput, outAudio ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -5326,9 +7034,10 @@ static ivas_error renderMcToBinauralRoom( return IVAS_ERR_OK; } + static ivas_error renderMcCustomLsToBinauralRoom( input_mc *mcInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { int16_t i; @@ -5356,7 +7065,11 @@ static ivas_error renderMcCustomLsToBinauralRoom( combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < ( *hCombinedOrientationData )->num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) { @@ -5373,9 +7086,20 @@ static ivas_error renderMcCustomLsToBinauralRoom( tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); set_zero( tmpRotBuffer.data, tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels ); - if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, mcInput->base.inConfig, mcInput->customLsInput, mcInput->base.ctx.pHeadRotData, + if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, mcInput->base.inConfig, +#ifdef API_5MS + &mcInput->customLsInput, +#else + mcInput->customLsInput, +#endif + mcInput->base.ctx.pHeadRotData, mcInput->base.ctx.pCombinedOrientationData, - mcInput->rot_gains_prev, mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + mcInput->rot_gains_prev[0], +#else + mcInput->rot_gains_prev, +#endif + mcInput->efapInWrapper.hEfap, tmpRotBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -5384,7 +7108,7 @@ static ivas_error renderMcCustomLsToBinauralRoom( /* intermediate conversion to 7_1_4 */ tmpMcBuffer = mcInput->base.inputBuffer; - if ( ( error = getAudioConfigNumChannels( IVAS_REND_AUDIO_CONFIG_7_1_4, &tmp ) ) != IVAS_ERR_OK ) + if ( ( error = getAudioConfigNumChannels( AUDIO_CONFIG_7_1_4, &tmp ) ) != IVAS_ERR_OK ) { return error; } @@ -5401,15 +7125,28 @@ static ivas_error renderMcCustomLsToBinauralRoom( copyBufferTo2dArray( tmpMcBuffer, tmpCrendBuffer ); /* call CREND */ - if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, AUDIO_CONFIG_7_1_4, getIvasAudioConfigFromRendAudioConfig( outConfig ), NULL, NULL, NULL, NULL, - p_tmpCrendBuffer, *mcInput->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, AUDIO_CONFIG_7_1_4, outConfig, NULL, NULL, NULL, NULL, + p_tmpCrendBuffer, *mcInput->base.ctx.pOutSampleRate +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *mcInput->base.ctx.pOutSampleRate ) +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) { return error; } accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = renderLfeToBinaural( mcInput, outConfig, outAudio ) ) != IVAS_ERR_OK ) +#else if ( ( error = renderLfeToBinaural( mcInput, outAudio ) ) != IVAS_ERR_OK ) +#endif { return error; } @@ -5425,6 +7162,7 @@ static ivas_error renderMcCustomLsToBinauralRoom( return IVAS_ERR_OK; } + static void renderMcToMc( const input_mc *mcInput, IVAS_REND_AudioBuffer outAudio ) @@ -5446,6 +7184,7 @@ static void renderMcToMc( return; } + static void renderMcToSba( const input_mc *mcInput, IVAS_REND_AudioBuffer outAudio ) @@ -5467,7 +7206,8 @@ static void renderMcToSba( return; } -static ivas_error renderMcToMasa( + +static void renderMcToMasa( input_mc *mcInput, IVAS_REND_AudioBuffer outAudio ) { @@ -5476,17 +7216,233 @@ static ivas_error renderMcToMasa( push_wmops( "renderMcToMasa" ); copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); + ivas_mcmasa_ana( mcInput->hMcMasa, tmpRendBuffer, mcInput->base.inputBuffer.config.numSamplesPerChannel, outAudio.config.numChannels, mcInput->base.inputBuffer.config.numChannels ); + accumulate2dArrayToBuffer( tmpRendBuffer, &outAudio ); pop_wmops(); + return; +} + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error renderMcToSplitBinaural( + input_mc *mcInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio ) +{ + int16_t i, j, pos_idx; + int16_t sf; + int16_t output_frame; + ivas_error error; + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + const SPLIT_REND_WRAPPER *pSplitRendWrapper; + float tmpRendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + float *p_tmpRendBuffer[MAX_OUTPUT_CHANNELS]; + float tmpSplitBinauralBuffer[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; + AUDIO_CONFIG inConfig; + IVAS_REND_AudioBuffer tmpRotBuffer; + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + + push_wmops( "renderMcToSplitBinaural" ); + + inConfig = mcInput->base.inConfig; + output_frame = mcInput->base.inputBuffer.config.numSamplesPerChannel; + + pSplitRendWrapper = mcInput->base.ctx.pSplitRendWrapper; + pMultiBinPoseData = &pSplitRendWrapper->multiBinPoseData; + + for ( i = 0; i < MAX_OUTPUT_CHANNELS; ++i ) + { + p_tmpRendBuffer[i] = tmpRendBuffer[i]; + } + + /* save current head positions */ + pCombinedOrientationDataLocal = *mcInput->base.ctx.pCombinedOrientationData; + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { +#ifdef API_5MS + for ( sf = 1; sf < combinedOrientationDataLocal.num_subframes; ++sf ) +#else + for ( sf = 1; sf < RENDERER_HEAD_POSITIONS_PER_FRAME; ++sf ) +#endif + { + combinedOrientationDataLocal.Quaternions[sf] = combinedOrientationDataLocal.Quaternions[0]; + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat[sf][i][j] = combinedOrientationDataLocal.Rmat[0][i][j]; + } + } + } + } + + /* temporary buffer for rotation in source format for CREND */ + tmpRotBuffer = mcInput->base.inputBuffer; + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM && inConfig != AUDIO_CONFIG_5_1 && inConfig != AUDIO_CONFIG_7_1 ) + { + tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); + } + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { + /* Update head positions */ +#ifdef API_5MS + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; + for ( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) +#else + IVAS_QUATERNION Quaternions_orig[RENDERER_HEAD_POSITIONS_PER_FRAME], Quaternions_abs; + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif + { + Quaternions_orig[i] = combinedOrientationDataLocal.Quaternions[i]; + Quaternions_abs.w = -3.0f; + Quat2EulerDegree( combinedOrientationDataLocal.Quaternions[i], &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ + + Quaternions_abs.x += pMultiBinPoseData->relative_head_poses[pos_idx][0]; + Quaternions_abs.y += pMultiBinPoseData->relative_head_poses[pos_idx][1]; + Quaternions_abs.z += pMultiBinPoseData->relative_head_poses[pos_idx][2]; + combinedOrientationDataLocal.Quaternions[i] = Quaternions_abs; + QuatToRotMat( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat[i] ); + } + + if ( inConfig == AUDIO_CONFIG_LS_CUSTOM || inConfig == AUDIO_CONFIG_5_1 || inConfig == AUDIO_CONFIG_7_1 ) + { + /* tdrend processing overview: + * 1. copy from inputBuffer to tmpRendBuffer + * 2. td_binaural_renderer_ext: inplace processing in tmpRendBuffer + * 3. copy from tmpRendBuffer to tmpSplitBinBuffer + * 4. LFE mixing + * 5. tmpSplitBinBuffer accumulated to outBuffer */ + + /* copy input to tdrend input/output buffer */ + copyBufferTo2dArray( mcInput->base.inputBuffer, tmpRendBuffer ); + + /* Render */ + if ( ( error = ivas_td_binaural_renderer_ext( ( pos_idx == 0 ) ? &mcInput->tdRendWrapper : &mcInput->splitTdRendWrappers[pos_idx - 1], + mcInput->base.inConfig, + &mcInput->customLsInput, + &pCombinedOrientationDataLocal, + NULL, + mcInput->hReverb, + 0, /* Ism Audio Metadata Delay Sync in ms for External Renderer */ +#ifdef API_5MS + *mcInput->base.ctx.pOutSampleRate, +#endif + mcInput->base.inputBuffer.config.numSamplesPerChannel, + tmpRendBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Copy rendered audio to tmp storage buffer. Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + mvr2r( tmpRendBuffer[0], tmpSplitBinauralBuffer[2 * pos_idx], output_frame ); + mvr2r( tmpRendBuffer[1], tmpSplitBinauralBuffer[2 * pos_idx + 1], output_frame ); + } + else + { + /* crend processing overview: + * 1. rotateFrameMc: inputBuffer to tmpRotBuffer + * 2. crend_process: tmpRotBuffer to tmpRendBuffer + * 3. copy from tmpRendBuffer to tmpSplitBinBuffer + * 4. LFE mixing + * 5. tmpSplitBinBuffer accumulated to outBuffer */ + + + /* copy input for in-place rotation */ + mvr2r( mcInput->base.inputBuffer.data, tmpRotBuffer.data, tmpRotBuffer.config.numChannels * tmpRotBuffer.config.numSamplesPerChannel ); + + /* perform rotation in source format to tmpRotBuffer */ + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + if ( ( error = rotateFrameMc( mcInput->base.inputBuffer, + mcInput->base.inConfig, +#ifdef API_5MS + &mcInput->customLsInput, +#else + mcInput->customLsInput, +#endif + mcInput->base.ctx.pHeadRotData, + &pCombinedOrientationDataLocal, +#ifdef SPLIT_REND_WITH_HEAD_ROT + mcInput->rot_gains_prev[pos_idx], +#else + mcInput->rot_gains_prev, +#endif + mcInput->efapInWrapper.hEfap, + tmpRotBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + + copyBufferTo2dArray( tmpRotBuffer, tmpRendBuffer ); + + /* call CREND (rotation already performed) */ + if ( ( error = ivas_rend_crendProcess( mcInput->crendWrapper, + mcInput->base.inConfig, + outConfig, + NULL, + NULL, + NULL, + NULL, + p_tmpRendBuffer, + *mcInput->base.ctx.pOutSampleRate, +#ifdef API_5MS + getNumSubframesInBuffer( &mcInput->base.inputBuffer, *mcInput->base.ctx.pOutSampleRate ), +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + pos_idx +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Copy rendererd audio to tmp storage buffer, Copying directly to output would + * overwrite original audio, which is still needed for rendering next head pose. */ + mvr2r( tmpRendBuffer[0], tmpSplitBinauralBuffer[2 * pos_idx], output_frame ); + mvr2r( tmpRendBuffer[1], tmpSplitBinauralBuffer[2 * pos_idx + 1], output_frame ); + } + + /* restore original headrotation data */ +#ifdef API_5MS + for ( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) +#else + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif + { + combinedOrientationDataLocal.Quaternions[i] = Quaternions_orig[i]; + } + } + + if ( inConfig != AUDIO_CONFIG_LS_CUSTOM && inConfig != AUDIO_CONFIG_5_1 && inConfig != AUDIO_CONFIG_7_1 ) + { + /* free temporary buffer for rotation in source format for CREND */ + free( tmpRotBuffer.data ); + } + + if ( ( error = renderLfeToBinaural( mcInput, outConfig, outAudio ) ) != IVAS_ERR_OK ) + { + return error; + } + + accumulate2dArrayToBuffer( tmpSplitBinauralBuffer, &outAudio ); + + pop_wmops(); + return IVAS_ERR_OK; } +#endif + static ivas_error renderInputMc( input_mc *mcInput, - IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { ivas_error error; @@ -5498,8 +7454,7 @@ static ivas_error renderInputMc( if ( mcInput->base.numNewSamplesPerChannel != outAudio.config.numSamplesPerChannel ) { - /* Mismatch between the number of input samples vs number of requested output samples - currently not allowed */ - return IVAS_ERR_INVALID_BUFFER_SIZE; + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } mcInput->base.numNewSamplesPerChannel = 0; @@ -5520,12 +7475,12 @@ static ivas_error renderInputMc( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_BINAURAL: + case AUDIO_CONFIG_BINAURAL: error = renderMcToBinaural( mcInput, outConfig, outAudio ); break; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - if ( mcInput->base.inConfig == IVAS_REND_AUDIO_CONFIG_LS_CUSTOM ) + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + if ( mcInput->base.inConfig == AUDIO_CONFIG_LS_CUSTOM ) { error = renderMcCustomLsToBinauralRoom( mcInput, outConfig, outAudio ); } @@ -5534,6 +7489,12 @@ static ivas_error renderInputMc( error = renderMcToBinauralRoom( mcInput, outConfig, outAudio ); } break; +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + error = renderMcToSplitBinaural( mcInput, outConfig, outAudio ); + break; +#endif default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; } @@ -5548,6 +7509,7 @@ static ivas_error renderInputMc( return error; } + static ivas_error renderActiveInputsMc( IVAS_REND_HANDLE hIvasRend, IVAS_REND_AudioBuffer outAudio ) @@ -5558,7 +7520,7 @@ static ivas_error renderActiveInputsMc( for ( i = 0, pCurrentInput = hIvasRend->inputsMc; i < RENDERER_MAX_MC_INPUTS; ++i, ++pCurrentInput ) { - if ( pCurrentInput->base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pCurrentInput->base.inConfig == AUDIO_CONFIG_INVALID ) { /* Skip inactive inputs */ continue; @@ -5573,6 +7535,7 @@ static ivas_error renderActiveInputsMc( return IVAS_ERR_OK; } + static void renderSbaToMc( const input_sba *sbaInput, IVAS_REND_AudioBuffer outAudio ) @@ -5594,6 +7557,7 @@ static void renderSbaToMc( return; } + static void renderSbaToSba( const input_sba *sbaInput, IVAS_REND_AudioBuffer outAudio ) @@ -5615,73 +7579,718 @@ static void renderSbaToSba( return; } -static ivas_error renderSbaToBinaural( - input_sba *sbaInput, - const IVAS_REND_AudioConfig outConfig, - IVAS_REND_AudioBuffer outAudio ) +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error splitBinLc3plusDecode( + SPLIT_POST_REND_WRAPPER *hSplitBin, + ivas_split_rend_bits_t *bits, + float outputBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k], + IVAS_SPLIT_REND_POSE_CORRECTION_MODE pose_correction ) { - float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; ivas_error error; - IVAS_REND_AudioBuffer tmpRotBuffer; - float *p_tmpCrendBuffer[MAX_OUTPUT_CHANNELS]; - int16_t i; - const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData; - int8_t combinedOrientationEnabled; - int16_t subframe_idx; + float *channel_ptrs[MAX_HEAD_ROT_POSES * 2]; + int32_t lc3plusBitrateId, lc3plusBitstreamSize; - push_wmops( "renderSbaToBinaural" ); + push_wmops( "splitBinLc3plusDecode" ); - for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + assert( hSplitBin->hLc3plusDec != NULL ); + + /* Find next byte boundary */ + while ( bits->bits_read % 8 != 0 ) { - p_tmpCrendBuffer[i] = tmpCrendBuffer[i]; + ++bits->bits_read; } + /* Read LC3plus bitstream size info */ + lc3plusBitrateId = ivas_split_rend_bitstream_read_int32( bits, 8 ); + lc3plusBitstreamSize = ivas_get_lc3plus_size_from_id( (int8_t) lc3plusBitrateId, pose_correction +#ifdef API_5MS + , + (int16_t) ( hSplitBin->hLc3plusDec->config.ivas_frame_duration_us / 1000 ) +#endif + ); - hCombinedOrientationData = sbaInput->base.ctx.pCombinedOrientationData; - combinedOrientationEnabled = 0; - if ( hCombinedOrientationData != NULL ) + for ( int16_t i = 0; i < BINAURAL_CHANNELS * hSplitBin->multiBinPoseData.num_poses; ++i ) { - for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) - { - if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) - { - combinedOrientationEnabled = 1; - break; + channel_ptrs[i] = outputBuffer[i]; + } + + if ( ( error = IVAS_LC3PLUS_DEC_Decode( hSplitBin->hLc3plusDec, &bits->bits_buf[bits->bits_read / 8], lc3plusBitstreamSize, channel_ptrs ) ) != IVAS_ERR_OK ) + { + return error; + } + + pop_wmops(); + + return IVAS_ERR_OK; +} + + +static ivas_error renderSplitBinauralWithPostRot( + input_split_post_rend *splitBinInput, + IVAS_REND_AudioBuffer outAudio, +#ifndef API_5MS + IVAS_REND_BitstreamBuffer *hBits, +#endif + const int16_t SplitRendBFI ) +{ + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + ivas_error error; +#ifdef API_5MS + float Cldfb_RealBuffer_Binaural_5ms[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural_5ms[MAX_PARAM_SPATIAL_SUBFRAMES][BINAURAL_CHANNELS][MAX_PARAM_SPATIAL_SUBFRAMES][CLDFB_NO_CHANNELS_MAX]; +#endif + IVAS_QUATERNION QuaternionsPost[MAX_PARAM_SPATIAL_SUBFRAMES]; + int16_t sf_idx; + + ivas_split_rend_bits_t bits; + float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + float tmpCrendBuffer_sf[BINAURAL_CHANNELS][L_FRAME48k]; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationData; + SPLIT_POST_REND_WRAPPER *hSplitBin; + int8_t isPostRendInputCldfb; +#ifdef API_5MS + int16_t chnlIdx, slotIdx, smplIdx; + int16_t preRendFrameSize_ms; + int16_t outBufNumSamplesPerChannel, outBufNumColPerChannel; + int16_t numSamplesPerChannelCacheSize, numColPerChannelCacheSize; + float *readPtr, *writePtr; +#endif + + + isPostRendInputCldfb = 0; + + push_wmops( "renderSplitBinauralWithPostRot" ); + + error = IVAS_ERR_OK; + + pCombinedOrientationData = *splitBinInput->base.ctx.pCombinedOrientationData; + hSplitBin = &splitBinInput->splitPostRendWrapper; +#ifdef API_5MS + convertBitsBufferToInternalBitsBuff( *splitBinInput->hBits, &bits ); +#else + convertBitsBufferToInternalBitsBuff( *hBits, &bits ); +#endif + + if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD && splitBinInput->splitPostRendWrapper.hSplitBinLCLDDec == NULL ) + { + if ( ( error = ivas_splitBinLCLDDecOpen( &splitBinInput->splitPostRendWrapper.hSplitBinLCLDDec, *splitBinInput->base.ctx.pOutSampleRate, BINAURAL_CHANNELS ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else if ( bits.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && splitBinInput->splitPostRendWrapper.hLc3plusDec == NULL ) + { + LC3PLUS_CONFIG config; + +#ifdef API_5MS + if ( outAudio.config.numSamplesPerChannel == 240 ) + { + config.lc3plus_frame_duration_us = bits.codec_frame_size_ms * 1000; + config.ivas_frame_duration_us = ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ? config.lc3plus_frame_duration_us : 20000; + } + else + { + config.lc3plus_frame_duration_us = 5000; + config.ivas_frame_duration_us = 20000; + } +#else + config.lc3plus_frame_duration_us = 5000; + config.ivas_frame_duration_us = 20000; +#endif + config.channels = BINAURAL_CHANNELS; + config.samplerate = *splitBinInput->base.ctx.pOutSampleRate; + + if ( ( error = IVAS_LC3PLUS_DEC_Open( config, +#ifdef LC3PLUS_DEC_ALLOW_DISABLE_CACHING + 0 /* caching disabled */, +#endif + &splitBinInput->splitPostRendWrapper.hLc3plusDec ) ) != IVAS_ERR_OK ) + { + return error; + } + } + +#ifdef API_5MS + outBufNumSamplesPerChannel = outAudio.config.numSamplesPerChannel / pCombinedOrientationData->num_subframes; + for ( sf_idx = 0; sf_idx < pCombinedOrientationData->num_subframes; sf_idx++ ) +#else + for ( sf_idx = 0; sf_idx < MAX_PARAM_SPATIAL_SUBFRAMES; sf_idx++ ) +#endif + { + QuaternionsPost[sf_idx] = pCombinedOrientationData->Quaternions[sf_idx]; + } + + + if ( !SplitRendBFI ) + { + hSplitBin->first_good_frame_received = 1; + } + + if ( hSplitBin->first_good_frame_received == 1 ) + { + if ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { + if ( !SplitRendBFI ) + { + ivas_splitBinPostRendMdDec( &bits, hSplitBin->hBinHrSplitPostRend, &hSplitBin->multiBinPoseData +#ifdef SPLIT_REND_WITH_HEAD_ROT_DEBUG + , + hSplitBin->hBinHrSplitPreRend +#endif + ); + } + } + /*copy pose correction after MD is parsed*/ + hSplitBin->multiBinPoseData.poseCorrectionMode = bits.pose_correction; + + /* decode audio */ + if ( splitBinInput->base.inConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { +#ifdef API_5MS + if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD ) + { + isPostRendInputCldfb = 1; + } + + preRendFrameSize_ms = bits.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS ? (int16_t) ( hSplitBin->hLc3plusDec->config.ivas_frame_duration_us ) / 1000 : 20; + + numSamplesPerChannelCacheSize = (int16_t) ( *splitBinInput->base.ctx.pOutSampleRate * ( preRendFrameSize_ms - bits.codec_frame_size_ms ) / 1000 ); + + outBufNumColPerChannel = MAX_PARAM_SPATIAL_SUBFRAMES; + numColPerChannelCacheSize = CLDFB_NO_COL_MAX - outBufNumColPerChannel; + + for ( sf_idx = 0; sf_idx < pCombinedOrientationData->num_subframes; sf_idx++ ) + { + if ( splitBinInput->numCachedSamples == 0 ) + { +#endif + if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD ) + { + ivas_splitBinLCLDDecProcess( + hSplitBin->hSplitBinLCLDDec, + &bits, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + SplitRendBFI ); +#ifndef API_5MS + isPostRendInputCldfb = 1; +#endif + +#ifdef API_5MS + /* copy data over to 5ms buffer */ + for ( chnlIdx = 0; chnlIdx < BINAURAL_CHANNELS; ++chnlIdx ) + { + for ( slotIdx = 0; slotIdx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; ++slotIdx ) + { + mvr2r( Cldfb_RealBuffer_Binaural[chnlIdx][slotIdx], Cldfb_RealBuffer_Binaural_5ms[sf_idx][chnlIdx][slotIdx], CLDFB_NO_CHANNELS_MAX ); + mvr2r( Cldfb_ImagBuffer_Binaural[chnlIdx][slotIdx], Cldfb_ImagBuffer_Binaural_5ms[sf_idx][chnlIdx][slotIdx], CLDFB_NO_CHANNELS_MAX ); + } + } + /* cache the remaining 15ms */ + splitBinInput->numCachedSamples = numColPerChannelCacheSize; + writePtr = splitBinInput->bufferData; + for ( slotIdx = CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slotIdx < CLDFB_NO_COL_MAX; ++slotIdx ) + { + for ( chnlIdx = 0; chnlIdx < BINAURAL_CHANNELS; ++chnlIdx ) + { + for ( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + *writePtr++ = Cldfb_RealBuffer_Binaural[chnlIdx][slotIdx][smplIdx]; + } + for ( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + *writePtr++ = Cldfb_ImagBuffer_Binaural[chnlIdx][slotIdx][smplIdx]; + } + } + } +#endif + } + else + { + error = splitBinLc3plusDecode( hSplitBin, &bits, tmpCrendBuffer, bits.pose_correction ); + if ( error != IVAS_ERR_OK ) + { + return error; + } +#ifdef API_5MS + /* cache the remaining 15ms */ + splitBinInput->numCachedSamples = numSamplesPerChannelCacheSize; + mvr2r( &tmpCrendBuffer[0][outBufNumSamplesPerChannel], + splitBinInput->bufferData, + numSamplesPerChannelCacheSize ); + mvr2r( &tmpCrendBuffer[1][outBufNumSamplesPerChannel], + splitBinInput->bufferData + numSamplesPerChannelCacheSize, + numSamplesPerChannelCacheSize ); +#endif + } +#ifdef API_5MS + } + else + { + /* copy from cache */ + if ( bits.codec == IVAS_SPLIT_REND_CODEC_LCLD ) + { + int16_t readOffset = ( numColPerChannelCacheSize - splitBinInput->numCachedSamples ); + readPtr = splitBinInput->bufferData; + isPostRendInputCldfb = 1; + + readPtr += 2 * readOffset * CLDFB_NO_CHANNELS_MAX * BINAURAL_CHANNELS; + for ( slotIdx = 0; slotIdx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; ++slotIdx ) + { + for ( chnlIdx = 0; chnlIdx < BINAURAL_CHANNELS; ++chnlIdx ) + { + for ( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + Cldfb_RealBuffer_Binaural_5ms[sf_idx][chnlIdx][slotIdx][smplIdx] = *readPtr++; + } + for ( smplIdx = 0; smplIdx < CLDFB_NO_CHANNELS_MAX; ++smplIdx ) + { + Cldfb_ImagBuffer_Binaural_5ms[sf_idx][chnlIdx][slotIdx][smplIdx] = *readPtr++; + } + } + } + + splitBinInput->numCachedSamples -= outBufNumColPerChannel; + } + else + { + int16_t readOffset = numSamplesPerChannelCacheSize - splitBinInput->numCachedSamples; + mvr2r( splitBinInput->bufferData + readOffset, + &tmpCrendBuffer[0][sf_idx * outBufNumSamplesPerChannel], + outBufNumSamplesPerChannel ); + mvr2r( splitBinInput->bufferData + readOffset + numSamplesPerChannelCacheSize, + &tmpCrendBuffer[1][sf_idx * outBufNumSamplesPerChannel], + outBufNumSamplesPerChannel ); + splitBinInput->numCachedSamples -= outBufNumSamplesPerChannel; + } + } + } +#endif + } + else + { + copyBufferTo2dArray( splitBinInput->base.inputBuffer, tmpCrendBuffer ); + } + + /* apply pose correction if enabled */ +#ifdef API_5MS + for ( sf_idx = 0; sf_idx < pCombinedOrientationData->num_subframes; sf_idx++ ) + { +#endif + if ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE && isPostRendInputCldfb ) + { + /* 0DOF with LCLD codec requires CLDFB synthesis */ + int16_t ch_idx, slot_idx; + + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { +#ifdef API_5MS + float *RealBuffer[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + float *ImagBuffer[CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES]; + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX / MAX_PARAM_SPATIAL_SUBFRAMES; slot_idx++ ) +#else + float *RealBuffer[CLDFB_NO_COL_MAX]; + float *ImagBuffer[CLDFB_NO_COL_MAX]; + + for ( slot_idx = 0; slot_idx < CLDFB_NO_COL_MAX; slot_idx++ ) +#endif + { +#ifdef API_5MS + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural_5ms[sf_idx][ch_idx][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural_5ms[sf_idx][ch_idx][slot_idx]; +#else + RealBuffer[slot_idx] = Cldfb_RealBuffer_Binaural[ch_idx][slot_idx]; + ImagBuffer[slot_idx] = Cldfb_ImagBuffer_Binaural[ch_idx][slot_idx]; +#endif + } + + cldfbSynthesis( RealBuffer, + ImagBuffer, + &( tmpCrendBuffer[ch_idx][sf_idx * outBufNumSamplesPerChannel] ), + hSplitBin->hBinHrSplitPostRend->cldfbSyn[0]->no_channels * CLDFB_NO_COL_MAX +#ifdef API_5MS + / MAX_PARAM_SPATIAL_SUBFRAMES +#endif + , + hSplitBin->hBinHrSplitPostRend->cldfbSyn[ch_idx] ); + } + } + else if ( bits.pose_correction == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { +#ifdef API_5MS + mvr2r( &tmpCrendBuffer[0][sf_idx * outBufNumSamplesPerChannel], + tmpCrendBuffer_sf[0], + outBufNumSamplesPerChannel ); + mvr2r( &tmpCrendBuffer[1][sf_idx * outBufNumSamplesPerChannel], + tmpCrendBuffer_sf[1], + outBufNumSamplesPerChannel ); +#endif + ivas_rend_CldfbSplitPostRendProcess( + hSplitBin->hBinHrSplitPostRend, + &hSplitBin->multiBinPoseData, +#ifdef API_5MS + QuaternionsPost[sf_idx], + Cldfb_RealBuffer_Binaural_5ms[sf_idx], + Cldfb_ImagBuffer_Binaural_5ms[sf_idx], + tmpCrendBuffer_sf, +#else + QuaternionsPost, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + tmpCrendBuffer, +#endif + isPostRendInputCldfb ); + +#ifdef API_5MS + mvr2r( tmpCrendBuffer_sf[0], + &tmpCrendBuffer[0][sf_idx * outBufNumSamplesPerChannel], + outBufNumSamplesPerChannel ); + mvr2r( tmpCrendBuffer_sf[1], + &tmpCrendBuffer[1][sf_idx * outBufNumSamplesPerChannel], + outBufNumSamplesPerChannel ); +#endif + } +#ifdef API_5MS + } +#endif + } + else + { + if ( splitBinInput->base.inConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) + { + int16_t ch_idx; + for ( ch_idx = 0; ch_idx < BINAURAL_CHANNELS; ch_idx++ ) + { + set_zero( tmpCrendBuffer[ch_idx], outAudio.config.numSamplesPerChannel ); } } + else + { + copyBufferTo2dArray( splitBinInput->base.inputBuffer, tmpCrendBuffer ); + } } - /* apply rotation */ - if ( combinedOrientationEnabled ) +#ifdef API_5MS + convertInternalBitsBuffToBitsBuffer( splitBinInput->hBits, bits ); +#else + convertInternalBitsBuffToBitsBuffer( hBits, bits ); +#endif + accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); + + pop_wmops(); + + return error; +} + + +static ivas_error renderSbaToMultiBinaural( + input_sba *sbaInput, + const AUDIO_CONFIG outConfig, + float out[][L_FRAME48k] ) +{ + float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + float *p_tmpCrendBuffer[MAX_OUTPUT_CHANNELS]; + int16_t sf; + int16_t i, j, pos_idx; + COMBINED_ORIENTATION_DATA combinedOrientationDataLocal; + COMBINED_ORIENTATION_HANDLE pCombinedOrientationDataLocal; + ivas_error error; + IVAS_REND_AudioBuffer tmpRotBuffer; + const MULTI_BIN_REND_POSE_DATA *pMultiBinPoseData; + + for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) { - tmpRotBuffer = sbaInput->base.inputBuffer; - tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); + p_tmpCrendBuffer[i] = tmpCrendBuffer[i]; + } + push_wmops( "renderSbaToMultiBinaural" ); + pMultiBinPoseData = &sbaInput->base.ctx.pSplitRendWrapper->multiBinPoseData; + + pCombinedOrientationDataLocal = *sbaInput->base.ctx.pCombinedOrientationData; + combinedOrientationDataLocal = *pCombinedOrientationDataLocal; + if ( pMultiBinPoseData->poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB ) + { +#ifdef API_5MS + for ( sf = 1; sf < combinedOrientationDataLocal.num_subframes; sf++ ) +#else + for ( sf = 1; sf < RENDERER_HEAD_POSITIONS_PER_FRAME; sf++ ) +#endif + { + combinedOrientationDataLocal.Quaternions[sf] = combinedOrientationDataLocal.Quaternions[0]; + for ( i = 0; i < 3; i++ ) + { + for ( j = 0; j < 3; j++ ) + { + combinedOrientationDataLocal.Rmat[sf][i][j] = combinedOrientationDataLocal.Rmat[0][i][j]; + } + } + } + } + + tmpRotBuffer = sbaInput->base.inputBuffer; + tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); + + for ( pos_idx = 0; pos_idx < pMultiBinPoseData->num_poses; pos_idx++ ) + { +#ifdef API_5MS + IVAS_QUATERNION Quaternions_orig[MAX_PARAM_SPATIAL_SUBFRAMES], Quaternions_abs; + for ( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) +#else + IVAS_QUATERNION Quaternions_orig[RENDERER_HEAD_POSITIONS_PER_FRAME], Quaternions_abs; + + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif + { + Quaternions_orig[i] = combinedOrientationDataLocal.Quaternions[i]; + Quaternions_abs.w = -3.0f; + Quat2EulerDegree( combinedOrientationDataLocal.Quaternions[i], &Quaternions_abs.z, &Quaternions_abs.y, &Quaternions_abs.x ); /*order in Quat2Euler seems to be reversed ?*/ + + Quaternions_abs.x += pMultiBinPoseData->relative_head_poses[pos_idx][0]; + Quaternions_abs.y += pMultiBinPoseData->relative_head_poses[pos_idx][1]; + Quaternions_abs.z += pMultiBinPoseData->relative_head_poses[pos_idx][2]; + combinedOrientationDataLocal.Quaternions[i] = Quaternions_abs; + QuatToRotMat( combinedOrientationDataLocal.Quaternions[i], combinedOrientationDataLocal.Rmat[i] ); + } + /* copy input for in-place rotation */ mvr2r( sbaInput->base.inputBuffer.data, tmpRotBuffer.data, tmpRotBuffer.config.numChannels * tmpRotBuffer.config.numSamplesPerChannel ); - if ( ( error = rotateFrameSba( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, - sbaInput->base.ctx.pCombinedOrientationData, - sbaInput->rot_gains_prev, tmpRotBuffer ) ) != IVAS_ERR_OK ) + pCombinedOrientationDataLocal = &combinedOrientationDataLocal; + + if ( ( error = rotateFrameSba( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, &pCombinedOrientationDataLocal, sbaInput->rot_gains_prev[pos_idx], tmpRotBuffer ) ) != IVAS_ERR_OK ) { return error; } copyBufferTo2dArray( tmpRotBuffer, tmpCrendBuffer ); - free( tmpRotBuffer.data ); + + assert( sbaInput->crendWrapper->hCrend[0]->hReverb == NULL ); + + /* call CREND */ + if ( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, + NULL, NULL, NULL, NULL, + p_tmpCrendBuffer, + *sbaInput->base.ctx.pOutSampleRate, +#ifdef API_5MS + getNumSubframesInBuffer( &sbaInput->base.inputBuffer, *sbaInput->base.ctx.pOutSampleRate ), +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + pos_idx +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + +#ifdef API_5MS + for ( i = 0; i < combinedOrientationDataLocal.num_subframes; i++ ) +#else + for ( i = 0; i < RENDERER_HEAD_POSITIONS_PER_FRAME; i++ ) +#endif + { + combinedOrientationDataLocal.Quaternions[i] = Quaternions_orig[i]; + } + + + /* move to output */ + for ( i = 0; i < BINAURAL_CHANNELS; i++ ) + { + mvr2r( tmpCrendBuffer[i], out[pos_idx * BINAURAL_CHANNELS + i], tmpRotBuffer.config.numSamplesPerChannel ); + } + } + + free( tmpRotBuffer.data ); + + pop_wmops(); + + return IVAS_ERR_OK; +} + +static ivas_error renderSbaToMultiBinauralCldfb( input_sba *sbaInput, + float Cldfb_Out_Real[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + float Cldfb_Out_Imag[][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX], + const int16_t low_res_pre_rend_rot +#ifdef API_5MS + , + int16_t num_subframes +#endif +) +{ + float Cldfb_RealBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer[MAX_OUTPUT_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + + copyBufferToCLDFBarray( sbaInput->base.inputBuffer, Cldfb_RealBuffer, Cldfb_ImagBuffer ); + + ivas_rend_CldfbMultiBinRendProcess( + sbaInput->cldfbRendWrapper.hCldfbRend, + sbaInput->base.ctx.pCombinedOrientationData, + &sbaInput->base.ctx.pSplitRendWrapper->multiBinPoseData, + Cldfb_RealBuffer, + Cldfb_ImagBuffer, + Cldfb_Out_Real, + Cldfb_Out_Imag, + low_res_pre_rend_rot +#ifdef API_5MS + , + num_subframes +#endif + ); + return IVAS_ERR_OK; +} + +static ivas_error renderSbaToSplitBinaural( + input_sba *sbaInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio ) +{ + float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + ivas_error error; + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + int16_t low_res_pre_rend_rot; + + low_res_pre_rend_rot = 1; + + push_wmops( "renderSbaToSplitBinaural" ); + error = IVAS_ERR_OK; + + if ( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { + renderSbaToMultiBinauralCldfb( sbaInput, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + low_res_pre_rend_rot +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) +#endif + ); + accumulateCLDFBArrayToBuffer( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, &outAudio ); } else { - copyBufferTo2dArray( sbaInput->base.inputBuffer, tmpCrendBuffer ); + if ( ( renderSbaToMultiBinaural( sbaInput, outConfig, tmpCrendBuffer ) ) != IVAS_ERR_OK ) + { + return error; + } + + accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); } - /* call CREND */ - if ( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, getIvasAudioConfigFromRendAudioConfig( sbaInput->base.inConfig ), getIvasAudioConfigFromRendAudioConfig( outConfig ), - NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK ) - { - return error; + pop_wmops(); + + return error; +} +#endif + + +static ivas_error renderSbaToBinaural( + input_sba *sbaInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio ) +{ + float tmpCrendBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + ivas_error error; + IVAS_REND_AudioBuffer tmpRotBuffer; + float *p_tmpCrendBuffer[MAX_OUTPUT_CHANNELS]; + int16_t i; + const COMBINED_ORIENTATION_HANDLE *hCombinedOrientationData; + int8_t combinedOrientationEnabled; + int16_t subframe_idx; + + push_wmops( "renderSbaToBinaural" ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( sbaInput->base.ctx.hhRendererConfig[0]->split_rend_config.rendererSelection == IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV ) + { + float Cldfb_RealBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + renderSbaToMultiBinauralCldfb( sbaInput, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + 0 +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) +#endif + ); + accumulateCLDFBArrayToBuffer( Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural, &outAudio ); } + else +#endif + { + for ( i = 0; i < MAX_OUTPUT_CHANNELS; i++ ) + { + p_tmpCrendBuffer[i] = tmpCrendBuffer[i]; + } - accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); + hCombinedOrientationData = sbaInput->base.ctx.pCombinedOrientationData; + combinedOrientationEnabled = 0; + if ( hCombinedOrientationData != NULL ) + { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < ( *hCombinedOrientationData )->num_subframes; subframe_idx++ ) +#else + for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif + { + if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) + { + combinedOrientationEnabled = 1; + break; + } + } + } + + /* apply rotation */ + if ( combinedOrientationEnabled ) + { + tmpRotBuffer = sbaInput->base.inputBuffer; + tmpRotBuffer.data = malloc( tmpRotBuffer.config.numSamplesPerChannel * tmpRotBuffer.config.numChannels * sizeof( float ) ); + + /* copy input for in-place rotation */ + mvr2r( sbaInput->base.inputBuffer.data, tmpRotBuffer.data, tmpRotBuffer.config.numChannels * tmpRotBuffer.config.numSamplesPerChannel ); + + if ( ( error = rotateFrameSba( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, + sbaInput->base.ctx.pCombinedOrientationData, +#ifdef SPLIT_REND_WITH_HEAD_ROT + sbaInput->rot_gains_prev[0], +#else + sbaInput->rot_gains_prev, +#endif + tmpRotBuffer ) ) != IVAS_ERR_OK ) + + { + return error; + } + + copyBufferTo2dArray( tmpRotBuffer, tmpCrendBuffer ); + free( tmpRotBuffer.data ); + } + else + { + copyBufferTo2dArray( sbaInput->base.inputBuffer, tmpCrendBuffer ); + } + + /* call CREND */ + if ( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, sbaInput->base.inConfig, outConfig, + NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + + accumulate2dArrayToBuffer( tmpCrendBuffer, &outAudio ); + } pop_wmops(); @@ -5690,7 +8299,7 @@ static ivas_error renderSbaToBinaural( static ivas_error renderSbaToBinauralRoom( input_sba *sbaInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { int16_t i; @@ -5718,7 +8327,11 @@ static ivas_error renderSbaToBinauralRoom( combinedOrientationEnabled = 0; if ( hCombinedOrientationData != NULL ) { +#ifdef API_5MS + for ( subframe_idx = 0; subframe_idx < ( *hCombinedOrientationData )->num_subframes; subframe_idx++ ) +#else for ( subframe_idx = 0; subframe_idx < MAX_PARAM_SPATIAL_SUBFRAMES; subframe_idx++ ) +#endif { if ( ( *hCombinedOrientationData )->enableCombinedOrientation[subframe_idx] != 0 ) { @@ -5739,7 +8352,12 @@ static ivas_error renderSbaToBinauralRoom( if ( ( error = rotateFrameSba( sbaInput->base.inputBuffer, sbaInput->base.inConfig, sbaInput->base.ctx.pHeadRotData, sbaInput->base.ctx.pCombinedOrientationData, - sbaInput->rot_gains_prev, tmpRotBuffer ) ) != IVAS_ERR_OK ) +#ifdef SPLIT_REND_WITH_HEAD_ROT + sbaInput->rot_gains_prev[0], +#else + sbaInput->rot_gains_prev, +#endif + tmpRotBuffer ) ) != IVAS_ERR_OK ) { return error; } @@ -5748,7 +8366,7 @@ static ivas_error renderSbaToBinauralRoom( /* intermediate rendering to 7_1_4 */ tmpMcBuffer = sbaInput->base.inputBuffer; - if ( ( error = getAudioConfigNumChannels( IVAS_REND_AUDIO_CONFIG_7_1_4, &tmp ) ) != IVAS_ERR_OK ) + if ( ( error = getAudioConfigNumChannels( AUDIO_CONFIG_7_1_4, &tmp ) ) != IVAS_ERR_OK ) { return error; } @@ -5766,8 +8384,17 @@ static ivas_error renderSbaToBinauralRoom( copyBufferTo2dArray( tmpMcBuffer, tmpCrendBuffer ); /* call CREND */ - if ( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, AUDIO_CONFIG_7_1_4, getIvasAudioConfigFromRendAudioConfig( outConfig ), - NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate ) ) != IVAS_ERR_OK ) + if ( ( error = ivas_rend_crendProcess( sbaInput->crendWrapper, AUDIO_CONFIG_7_1_4, outConfig, + NULL, NULL, NULL, NULL, p_tmpCrendBuffer, *sbaInput->base.ctx.pOutSampleRate +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *sbaInput->base.ctx.pOutSampleRate ) +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ) ) != IVAS_ERR_OK ) { return error; } @@ -5785,6 +8412,52 @@ static ivas_error renderSbaToBinauralRoom( return IVAS_ERR_OK; } +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error renderInputSplitBin( + input_split_post_rend *splitBinInput, + const AUDIO_CONFIG outConfig, + IVAS_REND_AudioBuffer outAudio, +#ifndef API_5MS + IVAS_REND_BitstreamBuffer *hBits, +#endif + const int16_t SplitRendBFI ) +{ + ivas_error error; + IVAS_REND_AudioBuffer inAudio; + + inAudio = splitBinInput->base.inputBuffer; +#ifndef API_5MS + if ( splitBinInput->base.numNewSamplesPerChannel != outAudio.config.numSamplesPerChannel ) + { + /* Mismatch between the number of input samples vs number of requested output samples - currently not allowed */ + return IVAS_ERR_INVALID_BUFFER_SIZE; + } +#endif + + splitBinInput->base.numNewSamplesPerChannel = 0; + + /* Apply input gain to new audio */ + v_multc( inAudio.data, + splitBinInput->base.gain, + inAudio.data, + inAudio.config.numSamplesPerChannel * inAudio.config.numChannels ); /* TODO: the output buffer is empty at this point, should be moved to a point after decoding the split bitstream */ + switch ( outConfig ) + { + case AUDIO_CONFIG_BINAURAL: + error = renderSplitBinauralWithPostRot( splitBinInput, outAudio, +#ifndef API_5MS + hBits, +#endif + SplitRendBFI ); + break; + default: + return IVAS_ERR_INVALID_OUTPUT_FORMAT; + } + + return error; +} +#endif + static ivas_error renderSbaToMasa( input_sba *sbaInput, IVAS_REND_AudioBuffer outAudio ) @@ -5804,20 +8477,34 @@ static ivas_error renderSbaToMasa( static ivas_error renderInputSba( input_sba *sbaInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { ivas_error error; IVAS_REND_AudioBuffer inAudio; +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + int16_t cldfb2tdSampleFact; +#endif error = IVAS_ERR_OK; inAudio = sbaInput->base.inputBuffer; +#ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef API_5MS + cldfb2tdSampleFact = outAudio.config.is_cldfb ? 2 : 1; +#endif + if ( ( sbaInput->base.numNewSamplesPerChannel +#ifdef API_5MS + * cldfb2tdSampleFact +#endif + != outAudio.config.numSamplesPerChannel ) && + ( outConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && ( outConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#else if ( sbaInput->base.numNewSamplesPerChannel != outAudio.config.numSamplesPerChannel ) +#endif { - /* Mismatch between the number of input samples vs number of requested output samples - currently not allowed */ - return IVAS_ERR_INVALID_BUFFER_SIZE; + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } sbaInput->base.numNewSamplesPerChannel = 0; @@ -5838,11 +8525,21 @@ static ivas_error renderInputSba( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_BINAURAL: +#ifdef SPLIT_REND_WITH_HEAD_ROT + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + error = renderSbaToSplitBinaural( sbaInput, +#ifdef SPLIT_REND_WITH_HEAD_ROT + outConfig, +#endif + outAudio ); + break; +#endif + case AUDIO_CONFIG_BINAURAL: error = renderSbaToBinaural( sbaInput, outConfig, outAudio ); break; - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + case AUDIO_CONFIG_BINAURAL_ROOM_IR: + case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: error = renderSbaToBinauralRoom( sbaInput, outConfig, outAudio ); break; default: @@ -5856,8 +8553,46 @@ static ivas_error renderInputSba( return IVAS_ERR_INVALID_OUTPUT_FORMAT; } - return error; + return error; +} + + +#ifdef SPLIT_REND_WITH_HEAD_ROT +static ivas_error renderActiveInputsSplitBin( + IVAS_REND_HANDLE hIvasRend, + IVAS_REND_AudioBuffer outAudio +#ifndef API_5MS + , + IVAS_REND_BitstreamBuffer *hBits +#endif +) +{ + int16_t i; + input_split_post_rend *pCurrentInput; + ivas_error error; + + for ( i = 0, pCurrentInput = hIvasRend->inputsSplitPost; i < RENDERER_MAX_BIN_INPUTS; ++i, ++pCurrentInput ) + { + if ( pCurrentInput->base.inConfig == AUDIO_CONFIG_INVALID ) + { + /* Skip inactive inputs */ + continue; + } + + if ( ( error = renderInputSplitBin( pCurrentInput, hIvasRend->outputConfig, outAudio, +#ifndef API_5MS + hBits, +#endif + hIvasRend->splitRendBFI ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + return IVAS_ERR_OK; } +#endif + static ivas_error renderActiveInputsSba( IVAS_REND_HANDLE hIvasRend, @@ -5869,7 +8604,7 @@ static ivas_error renderActiveInputsSba( for ( i = 0, pCurrentInput = hIvasRend->inputsSba; i < RENDERER_MAX_SBA_INPUTS; ++i, ++pCurrentInput ) { - if ( pCurrentInput->base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pCurrentInput->base.inConfig == AUDIO_CONFIG_INVALID ) { /* Skip inactive inputs */ continue; @@ -5886,41 +8621,42 @@ static ivas_error renderActiveInputsSba( static void copyMasaMetadataToDiracRenderer( MASA_METADATA_FRAME *meta, - DIRAC_DEC_HANDLE hDirAC ) + SPAT_PARAM_REND_COMMON_DATA_HANDLE hSpatParamRendCom ) { int16_t band, sf, bin; int16_t meta_write_index; - hDirAC->numSimultaneousDirections = meta->descriptive_meta.numberOfDirections + 1; + hSpatParamRendCom->numParametricDirections = meta->descriptive_meta.numberOfDirections + 1; + hSpatParamRendCom->numSimultaneousDirections = meta->descriptive_meta.numberOfDirections + 1; for ( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ ) { - meta_write_index = ( hDirAC->dirac_bs_md_write_idx + sf ) % hDirAC->dirac_md_buffer_length; + meta_write_index = ( hSpatParamRendCom->dirac_bs_md_write_idx + sf ) % hSpatParamRendCom->dirac_md_buffer_length; for ( band = 0; band < MASA_MAXIMUM_CODING_SUBBANDS; band++ ) { for ( bin = MASA_band_grouping_24[band]; bin < MASA_band_grouping_24[band + 1]; bin++ ) { - hDirAC->azimuth[meta_write_index][bin] = (int16_t) meta->directional_meta[0].azimuth[sf][band]; - hDirAC->elevation[meta_write_index][bin] = (int16_t) meta->directional_meta[0].elevation[sf][band]; - hDirAC->energy_ratio1[meta_write_index][bin] = meta->directional_meta[0].energy_ratio[sf][band]; - hDirAC->diffuseness_vector[meta_write_index][bin] = 1.0f - meta->directional_meta[0].energy_ratio[sf][band]; - hDirAC->spreadCoherence[meta_write_index][bin] = meta->directional_meta[0].spread_coherence[sf][band]; - hDirAC->surroundingCoherence[meta_write_index][bin] = meta->common_meta.surround_coherence[sf][band]; - - if ( hDirAC->numSimultaneousDirections == 2 ) + hSpatParamRendCom->azimuth[meta_write_index][bin] = (int16_t) meta->directional_meta[0].azimuth[sf][band]; + hSpatParamRendCom->elevation[meta_write_index][bin] = (int16_t) meta->directional_meta[0].elevation[sf][band]; + hSpatParamRendCom->energy_ratio1[meta_write_index][bin] = meta->directional_meta[0].energy_ratio[sf][band]; + hSpatParamRendCom->diffuseness_vector[meta_write_index][bin] = 1.0f - meta->directional_meta[0].energy_ratio[sf][band]; + hSpatParamRendCom->spreadCoherence[meta_write_index][bin] = meta->directional_meta[0].spread_coherence[sf][band]; + hSpatParamRendCom->surroundingCoherence[meta_write_index][bin] = meta->common_meta.surround_coherence[sf][band]; + + if ( hSpatParamRendCom->numSimultaneousDirections == 2 ) { - hDirAC->azimuth2[meta_write_index][bin] = (int16_t) meta->directional_meta[1].azimuth[sf][band]; - hDirAC->elevation2[meta_write_index][bin] = (int16_t) meta->directional_meta[1].elevation[sf][band]; - hDirAC->energy_ratio2[meta_write_index][bin] = meta->directional_meta[1].energy_ratio[sf][band]; - hDirAC->diffuseness_vector[meta_write_index][bin] -= meta->directional_meta[1].energy_ratio[sf][band]; - hDirAC->spreadCoherence2[meta_write_index][bin] = meta->directional_meta[1].spread_coherence[sf][band]; + hSpatParamRendCom->azimuth2[meta_write_index][bin] = (int16_t) meta->directional_meta[1].azimuth[sf][band]; + hSpatParamRendCom->elevation2[meta_write_index][bin] = (int16_t) meta->directional_meta[1].elevation[sf][band]; + hSpatParamRendCom->energy_ratio2[meta_write_index][bin] = meta->directional_meta[1].energy_ratio[sf][band]; + hSpatParamRendCom->diffuseness_vector[meta_write_index][bin] -= meta->directional_meta[1].energy_ratio[sf][band]; + hSpatParamRendCom->spreadCoherence2[meta_write_index][bin] = meta->directional_meta[1].spread_coherence[sf][band]; } } } } - hDirAC->dirac_bs_md_write_idx = ( hDirAC->dirac_bs_md_write_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % hDirAC->dirac_md_buffer_length; + hSpatParamRendCom->dirac_bs_md_write_idx = ( hSpatParamRendCom->dirac_bs_md_write_idx + MAX_PARAM_SPATIAL_SUBFRAMES ) % hSpatParamRendCom->dirac_md_buffer_length; return; } @@ -5929,21 +8665,37 @@ static void renderMasaToMc( input_masa *masaInput, IVAS_REND_AudioBuffer outAudio ) { - float tmpBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + int16_t ch; + float *tmpBuffer[MAX_OUTPUT_CHANNELS], tmpBuffer_buff[MAX_OUTPUT_CHANNELS][L_FRAME48k]; - copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer ); - copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hDirAC ); + for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + tmpBuffer[ch] = tmpBuffer_buff[ch]; + } + + copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); + copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); if ( masaInput->decDummy->renderer_type == RENDERER_STEREO_PARAMETRIC ) { - ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels ); + ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate ) +#endif + ); } else { - ivas_dirac_dec( masaInput->decDummy, tmpBuffer, masaInput->base.inputBuffer.config.numChannels ); + ivas_dirac_dec( masaInput->decDummy, tmpBuffer, masaInput->base.inputBuffer.config.numChannels +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate ) +#endif + ); } - accumulate2dArrayToBuffer( tmpBuffer, &outAudio ); + accumulate2dArrayToBuffer( tmpBuffer_buff, &outAudio ); return; } @@ -5952,34 +8704,72 @@ static void renderMasaToSba( input_masa *masaInput, IVAS_REND_AudioBuffer outAudio ) { - float tmpBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + int16_t ch; + float *tmpBuffer[MAX_OUTPUT_CHANNELS], tmpBuffer_buff[MAX_OUTPUT_CHANNELS][L_FRAME48k]; - copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer ); - copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hDirAC ); + for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + tmpBuffer[ch] = tmpBuffer_buff[ch]; + } - ivas_dirac_dec( masaInput->decDummy, tmpBuffer, masaInput->base.inputBuffer.config.numChannels ); + copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); + copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); - accumulate2dArrayToBuffer( tmpBuffer, &outAudio ); + ivas_dirac_dec( masaInput->decDummy, tmpBuffer, masaInput->base.inputBuffer.config.numChannels +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate ) +#endif + ); + + accumulate2dArrayToBuffer( tmpBuffer_buff, &outAudio ); return; } static void renderMasaToBinaural( input_masa *masaInput, - IVAS_REND_AudioBuffer outAudio ) + IVAS_REND_AudioBuffer outAudio +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + const int16_t is_split_rend_mode +#endif +) { - float tmpBuffer[MAX_OUTPUT_CHANNELS][L_FRAME48k]; + int16_t ch; + float *tmpBuffer[MAX_OUTPUT_CHANNELS], tmpBuffer_buff[MAX_OUTPUT_CHANNELS][L_FRAME48k]; - copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer ); - copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hDirAC ); + for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + tmpBuffer[ch] = tmpBuffer_buff[ch]; + } - ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels ); + copyBufferTo2dArray( masaInput->base.inputBuffer, tmpBuffer_buff ); + copyMasaMetadataToDiracRenderer( &masaInput->masaMetadata, masaInput->decDummy->hSpatParamRendCom ); - accumulate2dArrayToBuffer( tmpBuffer, &outAudio ); + ivas_dirac_dec_binaural( masaInput->decDummy, *masaInput->base.ctx.pCombinedOrientationData, tmpBuffer, masaInput->base.inputBuffer.config.numChannels +#ifdef API_5MS + , + getNumSubframesInBuffer( &outAudio, *masaInput->base.ctx.pOutSampleRate ) +#endif + ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( is_split_rend_mode ) + { + accumulateCLDFBArrayToBuffer( masaInput->decDummy->hSplitBinRend.hMultiBinCldfbData->Cldfb_RealBuffer_Binaural, masaInput->decDummy->hSplitBinRend.hMultiBinCldfbData->Cldfb_ImagBuffer_Binaural, &outAudio ); + } + else + { +#endif + accumulate2dArrayToBuffer( tmpBuffer_buff, &outAudio ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + } +#endif return; } + static void renderMasaToMasa( input_masa *masaInput, IVAS_REND_AudioBuffer outAudio ) @@ -5992,7 +8782,6 @@ static void renderMasaToMasa( int16_t ts, i, j, l_ts; float Chan_RealBuffer[MASA_MAX_TRANSPORT_CHANNELS][CLDFB_NO_CHANNELS_MAX]; float Chan_ImagBuffer[MASA_MAX_TRANSPORT_CHANNELS][CLDFB_NO_CHANNELS_MAX]; - int16_t band_m_idx, block_m_idx; int16_t mrange[2]; int16_t brange[2]; @@ -6004,7 +8793,6 @@ static void renderMasaToMasa( l_ts = masaInput->base.inputBuffer.config.numSamplesPerChannel / CLDFB_NO_COL_MAX; numAnalysisChannels = masaInput->hMasaPrerend->num_Cldfb_instances; - /* do processing over all CLDFB time slots */ for ( block_m_idx = 0; block_m_idx < MAX_PARAM_SPATIAL_SUBFRAMES; block_m_idx++ ) { @@ -6108,12 +8896,16 @@ static void renderMasaToMasa( return; } + static ivas_error renderInputMasa( input_masa *masaInput, - const IVAS_REND_AudioConfig outConfig, + const AUDIO_CONFIG outConfig, IVAS_REND_AudioBuffer outAudio ) { IVAS_REND_AudioBuffer inAudio; +#if defined( SPLIT_REND_WITH_HEAD_ROT ) && defined( API_5MS ) + int16_t cldfb2tdSampleFact; +#endif if ( !masaInput->metadataHasBeenFed ) { @@ -6121,11 +8913,21 @@ static ivas_error renderInputMasa( } inAudio = masaInput->base.inputBuffer; - +#ifdef SPLIT_REND_WITH_HEAD_ROT +#ifdef API_5MS + cldfb2tdSampleFact = outAudio.config.is_cldfb ? 2 : 1; +#endif + if ( ( masaInput->base.numNewSamplesPerChannel +#ifdef API_5MS + * cldfb2tdSampleFact +#endif + != outAudio.config.numSamplesPerChannel ) && + ( outConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) && ( outConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) +#else if ( masaInput->base.numNewSamplesPerChannel != outAudio.config.numSamplesPerChannel ) +#endif { - /* Mismatch between the number of input samples vs number of requested output samples - currently not allowed */ - return IVAS_ERR_INVALID_BUFFER_SIZE; + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Mismatch between the number of input samples vs number of requested output samples - currently not allowed" ); } masaInput->base.numNewSamplesPerChannel = 0; @@ -6146,18 +8948,34 @@ static ivas_error renderInputMasa( case IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL: switch ( outConfig ) { - case IVAS_REND_AUDIO_CONFIG_BINAURAL: - renderMasaToBinaural( masaInput, outAudio ); + case AUDIO_CONFIG_BINAURAL: + renderMasaToBinaural( masaInput, outAudio +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 0 +#endif + ); + break; + /* ToDo */ + // #ifdef FIX_196_REFACTOR_RENDERER_OUTPUT_CONFIG + // case AUDIO_CONFIG_BINAURAL_ROOM_IR: + // case AUDIO_CONFIG_BINAURAL_ROOM_REVERB: + // #else + // case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM: + // #endif + // renderMasaToBinauralRoom( masaInput, outConfig, outAudio ); + // break; +#ifdef SPLIT_REND_WITH_HEAD_ROT_PARAMBIN + case AUDIO_CONFIG_BINAURAL_SPLIT_CODED: + case AUDIO_CONFIG_BINAURAL_SPLIT_PCM: + renderMasaToBinaural( masaInput, outAudio +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + 1 +#endif + ); break; - /* ToDo */ - //#ifdef FIX_196_REFACTOR_RENDERER_OUTPUT_CONFIG - // case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR: - // case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB: - //#else - // case IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM: - //#endif - // renderMasaToBinauralRoom( masaInput, outConfig, outAudio ); - // break; +#endif default: return IVAS_ERR_INVALID_OUTPUT_FORMAT; } @@ -6172,6 +8990,7 @@ static ivas_error renderInputMasa( return IVAS_ERR_OK; } + static ivas_error renderActiveInputsMasa( IVAS_REND_HANDLE hIvasRend, IVAS_REND_AudioBuffer outAudio ) @@ -6183,7 +9002,7 @@ static ivas_error renderActiveInputsMasa( for ( i = 0, pCurrentInput = hIvasRend->inputsMasa; i < RENDERER_MAX_MASA_INPUTS; ++i, ++pCurrentInput ) { - if ( pCurrentInput->base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ) + if ( pCurrentInput->base.inConfig == AUDIO_CONFIG_INVALID ) { /* Skip inactive inputs */ continue; @@ -6191,7 +9010,11 @@ static ivas_error renderActiveInputsMasa( if ( getAudioConfigType( hIvasRend->outputConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL && pCurrentInput->decDummy->hHeadTrackData != NULL ) { +#ifdef API_5MS + for ( sf_idx = 0; sf_idx < hIvasRend->num_subframes; ++sf_idx ) +#else for ( sf_idx = 0; sf_idx < RENDERER_HEAD_POSITIONS_PER_FRAME; ++sf_idx ) +#endif { pCurrentInput->decDummy->hHeadTrackData->Quaternions[sf_idx] = hIvasRend->headRotData.headPositions[sf_idx]; pCurrentInput->decDummy->hHeadTrackData->Pos[sf_idx] = hIvasRend->headRotData.Pos[sf_idx]; @@ -6323,7 +9146,7 @@ ivas_error IVAS_REND_MergeMasaMetadata( /* Merge metadata */ ivas_prerend_merge_masa_metadata( *hMasaExtOutMeta, *hMasaExtOutMeta, inputType1, *inEne1, inMeta2, inputType2, *inEne2 ); - ( *hMasaExtOutMeta )->descriptiveMeta.numberOfChannels = hIvasRend->outputConfig == IVAS_REND_AUDIO_CONFIG_MASA1 ? 0u : 1u; + ( *hMasaExtOutMeta )->descriptiveMeta.numberOfChannels = hIvasRend->outputConfig == AUDIO_CONFIG_MASA1 ? 0u : 1u; return IVAS_ERR_OK; @@ -6338,7 +9161,7 @@ ivas_error IVAS_REND_MergeMasaMetadata( ivas_error IVAS_REND_SetTotalNumberOfObjects( IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ - const uint16_t total_num_objects /* i: total number of objects */ + const uint16_t total_num_objects /* i : total number of objects */ ) { if ( hIvasRend == NULL ) @@ -6352,6 +9175,41 @@ ivas_error IVAS_REND_SetTotalNumberOfObjects( } +/*---------------------------------------------------------------------* + * IVAS_REND_SetIsmMetadataDelay( ) + * + * Set the Metadata Delay in ms in order to sync with audio delay + *---------------------------------------------------------------------*/ + +ivas_error IVAS_REND_SetIsmMetadataDelay( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + const float sync_md_delay /* i : Ism Metadata Delay in ms to sync with audio delay */ +) +{ + int16_t i; + + if ( hIvasRend == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + for ( i = 0; i < RENDERER_MAX_ISM_INPUTS; ++i ) + { + hIvasRend->inputsIsm[i].ism_metadata_delay_ms = sync_md_delay; + } + + return IVAS_ERR_OK; +} + +#ifdef API_5MS +/*-------------------------------------------------------------------* + * getSamplesInternal() + * + * + *-------------------------------------------------------------------*/ + +static ivas_error getSamplesInternal( +#else /*-------------------------------------------------------------------* * IVAS_REND_GetSamples() * @@ -6359,12 +9217,21 @@ ivas_error IVAS_REND_SetTotalNumberOfObjects( *-------------------------------------------------------------------*/ ivas_error IVAS_REND_GetSamples( +#endif IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + IVAS_REND_BitstreamBuffer *hBits /*i/o: buffer for input/output bitstream. Needed in split rendering mode*/ +#endif ) { ivas_error error; int16_t numOutChannels; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t cldfb2tdSampleFact; + IVAS_REND_AudioBuffer outAudioOrig; +#endif /* Validate function arguments */ if ( hIvasRend == NULL || outAudio.data == NULL ) @@ -6372,7 +9239,15 @@ ivas_error IVAS_REND_GetSamples( return IVAS_ERR_UNEXPECTED_NULL_POINTER; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + cldfb2tdSampleFact = ( outAudio.config.is_cldfb ) ? 2 : 1; +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( outAudio.config.numSamplesPerChannel <= 0 || ( MAX_BUFFER_LENGTH_PER_CHANNEL < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 0 ) || + ( ( MAX_BUFFER_LENGTH_PER_CHANNEL * cldfb2tdSampleFact ) < outAudio.config.numSamplesPerChannel && outAudio.config.is_cldfb == 1 ) ) +#else if ( outAudio.config.numSamplesPerChannel <= 0 || MAX_BUFFER_LENGTH_PER_CHANNEL < outAudio.config.numSamplesPerChannel ) +#endif { return IVAS_ERR_INVALID_BUFFER_SIZE; } @@ -6382,11 +9257,17 @@ ivas_error IVAS_REND_GetSamples( return IVAS_ERR_WRONG_NUM_CHANNELS; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( getAudioConfigType( hIvasRend->outputConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL && + hIvasRend->outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && + hIvasRend->outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM && + ( outAudio.config.numSamplesPerChannel * 1000 / cldfb2tdSampleFact ) != ( hIvasRend->num_subframes * BINAURAL_RENDERING_FRAME_SIZE_MS ) * hIvasRend->sampleRateOut ) +#else if ( getAudioConfigType( hIvasRend->outputConfig ) == IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL && outAudio.config.numSamplesPerChannel * 1000 != BINAURAL_RENDERING_FRAME_SIZE_MS * hIvasRend->sampleRateOut ) +#endif { - /* Binaural rendering requires specific frame size */ - return IVAS_ERR_INVALID_BUFFER_SIZE; + return IVAS_ERROR( IVAS_ERR_INVALID_BUFFER_SIZE, "Binaural rendering requires specific frame size" ); } /* Check that there is allowed configuration for MASA format output */ @@ -6398,21 +9279,21 @@ ivas_error IVAS_REND_GetSamples( for ( i = 0; i < RENDERER_MAX_MASA_INPUTS; i++ ) { - numMasaInputs += hIvasRend->inputsMasa[i].base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ? 0 : 1; + numMasaInputs += hIvasRend->inputsMasa[i].base.inConfig == AUDIO_CONFIG_INVALID ? 0 : 1; } for ( i = 0; i < RENDERER_MAX_MC_INPUTS; i++ ) { - numOtherInputs += hIvasRend->inputsMc[i].base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ? 0 : 1; + numOtherInputs += hIvasRend->inputsMc[i].base.inConfig == AUDIO_CONFIG_INVALID ? 0 : 1; } for ( i = 0; i < RENDERER_MAX_SBA_INPUTS; i++ ) { - numOtherInputs += hIvasRend->inputsSba[i].base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ? 0 : 1; + numOtherInputs += hIvasRend->inputsSba[i].base.inConfig == AUDIO_CONFIG_INVALID ? 0 : 1; } /* For ISM, we check only first as all ISMs are handled together via OMASA when merging to MASA. */ - numOtherInputs += hIvasRend->inputsIsm[0].base.inConfig == IVAS_REND_AUDIO_CONFIG_UNKNOWN ? 0 : 1; + numOtherInputs += hIvasRend->inputsIsm[0].base.inConfig == AUDIO_CONFIG_INVALID ? 0 : 1; if ( numMasaInputs == 0 || numOtherInputs == 0 ) { @@ -6425,14 +9306,45 @@ ivas_error IVAS_REND_GetSamples( return error; } - if ( numOutChannels != outAudio.config.numChannels ) + if ( numOutChannels != outAudio.config.numChannels +#ifdef SPLIT_REND_WITH_HEAD_ROT + && hIvasRend->outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_CODED && hIvasRend->outputConfig != AUDIO_CONFIG_BINAURAL_SPLIT_PCM +#endif + ) { return IVAS_ERR_WRONG_NUM_CHANNELS; } - /* Clear output buffer */ + /* Clear original output buffer */ set_zero( outAudio.data, outAudio.config.numChannels * outAudio.config.numSamplesPerChannel ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + outAudioOrig = outAudio; + /* Use internal buffer if outputting split rendering bitstream */ + if ( ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED ) || + ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ) + { + int16_t num_poses_orig; + num_poses_orig = hIvasRend->splitRendWrapper.multiBinPoseData.num_poses; + outAudio = hIvasRend->splitRendEncBuffer; +#ifndef API_5MS + if ( ( outAudioOrig.config.is_cldfb == 0 ) && + ( hIvasRend->inputsMasa[0].base.inConfig == AUDIO_CONFIG_INVALID ) ) + { + outAudio.config.is_cldfb = 0; + outAudio.config.numSamplesPerChannel >>= 1; + } +#endif + ivas_renderSplitGetMultiBinPoseData( + &hIvasRend->hRendererConfig->split_rend_config, + &hIvasRend->splitRendWrapper.multiBinPoseData, + hIvasRend->headRotData.sr_pose_pred_axis ); + assert( num_poses_orig == hIvasRend->splitRendWrapper.multiBinPoseData.num_poses && "number of poses should not change dynamically" ); + + /* Clear output buffer for split rendering bitstream */ + set_zero( outAudio.data, outAudio.config.numChannels * outAudio.config.numSamplesPerChannel ); + } +#endif if ( ( error = renderActiveInputsIsm( hIvasRend, outAudio ) ) != IVAS_ERR_OK ) { return error; @@ -6452,14 +9364,163 @@ ivas_error IVAS_REND_GetSamples( { return error; } +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( ( error = renderActiveInputsSplitBin( hIvasRend, outAudio +#ifndef API_5MS + , + hBits +#endif + ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( outAudio.config.is_cldfb == 0 ) + { +#ifndef DISABLE_LIMITER +#ifdef DEBUGGING + hIvasRend->numClipping += +#endif + limitRendererOutput( hIvasRend->hLimiter, outAudio.data, outAudio.config.numSamplesPerChannel, IVAS_LIMITER_THRESHOLD ); +#endif + } +#else /* SPLIT_REND_WITH_HEAD_ROT */ +#ifndef DISABLE_LIMITER #ifdef DEBUGGING hIvasRend->numClipping += #endif limitRendererOutput( hIvasRend->hLimiter, outAudio.data, outAudio.config.numSamplesPerChannel, IVAS_LIMITER_THRESHOLD ); +#endif +#endif /* SPLIT_REND_WITH_HEAD_ROT */ + +#ifdef SPLIT_REND_WITH_HEAD_ROT + if ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_CODED || hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + ivas_split_rend_bits_t bits; + int16_t td_input; + float Cldfb_RealBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + float Cldfb_ImagBuffer_Binaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][CLDFB_NO_COL_MAX][CLDFB_NO_CHANNELS_MAX]; + int16_t ch; + float *tmpBinaural[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS], tmpBinaural_buff[MAX_HEAD_ROT_POSES * BINAURAL_CHANNELS][L_FRAME48k]; + + for ( ch = 0; ch < MAX_OUTPUT_CHANNELS; ch++ ) + { + tmpBinaural[ch] = tmpBinaural_buff[ch]; + } + + if ( outAudio.config.is_cldfb == 1 ) + { + td_input = 0; + copyBufferToCLDFBarray( outAudio, Cldfb_RealBuffer_Binaural, Cldfb_ImagBuffer_Binaural ); + } + else + { + td_input = 1; + copyBufferTo2dArray( outAudio, tmpBinaural_buff ); + } + + /* Encode split rendering bitstream */ + convertBitsBufferToInternalBitsBuff( *hBits, &bits ); + error = ivas_renderMultiBinToSplitBinaural( &hIvasRend->splitRendWrapper, + hIvasRend->headRotData.headPositions[0], + hIvasRend->hRendererConfig->split_rend_config.splitRendBitRate, + hIvasRend->hRendererConfig->split_rend_config.codec, +#ifdef API_5MS + hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms, +#endif + &bits, + Cldfb_RealBuffer_Binaural, + Cldfb_ImagBuffer_Binaural, + ( const int16_t )( ( BINAURAL_MAXBANDS * hIvasRend->sampleRateOut ) / 48000 ), + tmpBinaural, + 1, + td_input, + ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) ? 1 : 0 ); + if ( error != IVAS_ERR_OK ) + { + return error; + } + + convertInternalBitsBuffToBitsBuffer( hBits, bits ); + + /* reset to outAudioOrig in case of PCM output */ + outAudio = outAudioOrig; + + if ( hIvasRend->outputConfig == AUDIO_CONFIG_BINAURAL_SPLIT_PCM ) + { + accumulate2dArrayToBuffer( tmpBinaural_buff, &outAudio ); + } + } +#endif /* SPLIT_REND_WITH_HEAD_ROT */ + + return IVAS_ERR_OK; +} + +#ifdef API_5MS +/*-------------------------------------------------------------------* + * IVAS_REND_GetSamples() + * + * + *-------------------------------------------------------------------*/ + +ivas_error IVAS_REND_GetSamples( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ +) +{ + return getSamplesInternal( hIvasRend, outAudio +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + NULL +#endif + ); +} + +#ifdef SPLIT_REND_WITH_HEAD_ROT +ivas_error IVAS_REND_GetSplitBinauralBitstream( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + IVAS_REND_BitstreamBuffer *hBits /* o : buffer for output bitstream */ +) +{ + int16_t cldfb_in; + + cldfb_in = getCldfbRendFlag( hIvasRend, IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN ); + hIvasRend->splitRendEncBuffer.config.is_cldfb = cldfb_in; + if ( hIvasRend->hRendererConfig->split_rend_config.codec == IVAS_SPLIT_REND_CODEC_LC3PLUS && + ( hIvasRend->hRendererConfig->split_rend_config.dof == 0 || hIvasRend->hRendererConfig->split_rend_config.poseCorrectionMode == IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE ) ) + { + hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel = hIvasRend->hRendererConfig->split_rend_config.codec_frame_size_ms * hIvasRend->num_subframes * (int16_t) ( hIvasRend->sampleRateOut / 1000 ); + } + else + { + hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel = (int16_t) ( hIvasRend->sampleRateOut / FRAMES_PER_SEC ); + } + hIvasRend->splitRendEncBuffer.config.numSamplesPerChannel *= cldfb_in ? 2 : 1; + + /* hIvasRend->splitRendEncBuffer used for BINAURAL_SPLIT_CODED output + outAudio used for BINAURAL_SPLIT_PCM output */ + return getSamplesInternal( hIvasRend, outAudio, hBits ); +} + +ivas_error IVAS_REND_GetSplitBinauralSamples( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + bool *needNewFrame ) +{ + ivas_error error; + + if ( ( error = getSamplesInternal( hIvasRend, outAudio, NULL ) ) != IVAS_ERR_OK ) + { + return error; + } + *needNewFrame = hIvasRend->inputsSplitPost[0].numCachedSamples == 0; return IVAS_ERR_OK; } +#endif +#endif /*-------------------------------------------------------------------* @@ -6504,12 +9565,23 @@ void IVAS_REND_Close( { clearInputMasa( &hIvasRend->inputsMasa[i] ); } +#ifdef SPLIT_REND_WITH_HEAD_ROT + for ( i = 0; i < RENDERER_MAX_BIN_INPUTS; ++i ) + { + clearInputSplitRend( &hIvasRend->inputsSplitPost[i] ); + } +#endif /* clear Config. Renderer */ ivas_render_config_close( &( hIvasRend->hRendererConfig ) ); ivas_limiter_close( &hIvasRend->hLimiter ); +#ifdef SPLIT_REND_WITH_HEAD_ROT + /* Split binaural rendering */ + closeSplitRend( &hIvasRend->splitRendWrapper, &hIvasRend->splitRendEncBuffer ); +#endif + closeHeadRotation( hIvasRend ); ivas_external_orientation_close( &hIvasRend->hExternalOrientationData ); @@ -6521,6 +9593,123 @@ void IVAS_REND_Close( return; } + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*-------------------------------------------------------------------* + * IVAS_REND_openCldfb() + * + * + *-------------------------------------------------------------------*/ + +int16_t IVAS_REND_openCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_INPUT_CHANNELS], + const int16_t num_in_chs, + const int16_t num_out_chs, + const int32_t output_Fs ) +{ + int16_t n; + + for ( n = 0; n < num_in_chs; n++ ) + { + if ( openCldfb( &( cldfbAna[n] ), CLDFB_ANALYSIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) != IVAS_ERR_OK ) + { + return -1; + } + } + for ( ; n < IVAS_MAX_INPUT_CHANNELS; n++ ) + { + cldfbAna[n] = NULL; + } + + for ( n = 0; n < num_out_chs; n++ ) + { + if ( openCldfb( &( cldfbSyn[n] ), CLDFB_SYNTHESIS, output_Fs, CLDFB_PROTOTYPE_5_00MS ) != IVAS_ERR_OK ) + { + return -1; + } + } + for ( ; n < IVAS_MAX_INPUT_CHANNELS; n++ ) + { + cldfbSyn[n] = NULL; + } + + return 0; +} + + +/*-------------------------------------------------------------------* + * IVAS_REND_closeCldfb() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_REND_closeCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_INPUT_CHANNELS] ) +{ + int16_t n; + + for ( n = 0; n < IVAS_MAX_INPUT_CHANNELS; n++ ) + { + if ( cldfbAna[n] != NULL ) + { + deleteCldfb( &( cldfbAna[n] ) ); + cldfbAna[n] = NULL; + } + + if ( cldfbSyn[n] != NULL ) + { + deleteCldfb( &( cldfbSyn[n] ) ); + cldfbSyn[n] = NULL; + } + } + + return; +} + + +/*-------------------------------------------------------------------* + * IVAS_REND_cldfbSynthesis_wrapper() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_REND_cldfbAnalysis_ts_wrapper( + const float *timeIn, /* i : time buffer */ + float realBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : real value buffer */ + float imagBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : imag value buffer */ + const int16_t samplesToProcess, /* i : samples to process */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb /* i : filterbank state */ +) +{ + cldfbAnalysis_ts( timeIn, realBuffer, imagBuffer, samplesToProcess, h_cldfb ); + + return; +} + + +/*-------------------------------------------------------------------* + * IVAS_REND_cldfbSynthesis_wrapper() + * + * + *-------------------------------------------------------------------*/ + +void IVAS_REND_cldfbSynthesis_wrapper( + float **realBuffer, /* i : real values */ + float **imagBuffer, /* i : imag values */ + float *timeOut, /* o : output time domain samples */ + const int16_t samplesToProcess, /* i : number of processed samples */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb /* i : filter bank state */ +) +{ + cldfbSynthesis( realBuffer, imagBuffer, timeOut, samplesToProcess, h_cldfb ); + + return; +} +#endif + + #ifdef DEBUGGING /*-------------------------------------------------------------------* * IVAS_REND_GetNoCLipping() diff --git a/lib_rend/lib_rend.h b/lib_rend/lib_rend.h index 88e96d29163fa21347d37c2fea20aeacf20f985c..52fbea286302a26a27b3965cec6ec34f083660ee 100644 --- a/lib_rend/lib_rend.h +++ b/lib_rend/lib_rend.h @@ -36,12 +36,35 @@ #include "common_api_types.h" #include +/*---------------------------------------------------------------------* + * Renderer constants + *---------------------------------------------------------------------*/ #define RENDERER_MAX_ISM_INPUTS 4 #define RENDERER_MAX_MC_INPUTS 1 #define RENDERER_MAX_SBA_INPUTS 1 #define RENDERER_MAX_MASA_INPUTS 1 +#ifdef SPLIT_REND_WITH_HEAD_ROT +#define RENDERER_MAX_BIN_INPUTS 1 +#endif + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/*----------------------------------------------------------------------------------* + * Split rendering bitrate constants + *----------------------------------------------------------------------------------*/ +#define SPLIT_REND_256k 256000 +#define SPLIT_REND_320k 320000 +#define SPLIT_REND_384k 384000 +#define SPLIT_REND_512k 512000 +#define SPLIT_REND_768k 768000 +#define SPLIT_REND_MAX_BRATE SPLIT_REND_768k +#define SPLIT_REND_ADDITIONAL_BYTES_TO_READ 1 +#endif + +/*---------------------------------------------------------------------* + * Renderer structures + *---------------------------------------------------------------------*/ typedef float IVAS_REND_LfePanMtx[IVAS_MAX_INPUT_LFE_CHANNELS][IVAS_MAX_OUTPUT_CHANNELS]; @@ -49,6 +72,9 @@ typedef struct { int16_t numSamplesPerChannel; int16_t numChannels; +#ifdef SPLIT_REND_WITH_HEAD_ROT + int16_t is_cldfb; +#endif } IVAS_REND_AudioBufferConfig; typedef struct @@ -57,6 +83,25 @@ typedef struct float *data; } IVAS_REND_AudioBuffer; +#ifdef SPLIT_REND_WITH_HEAD_ROT +typedef struct +{ + int32_t bufLenInBytes; + int32_t bitsWritten; + int32_t bitsRead; + IVAS_SPLIT_REND_CODEC codec; + IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection; +#ifdef API_5MS + int16_t codec_frame_size_ms; +#endif +} IVAS_REND_BitstreamBufferConfig; +typedef struct +{ + IVAS_REND_BitstreamBufferConfig config; + uint8_t *bits; +} IVAS_REND_BitstreamBuffer; +#endif + typedef struct { IVAS_REND_AudioBufferConfig config; @@ -76,58 +121,19 @@ typedef enum IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN, } IVAS_REND_AudioConfigType; -/* TODO(sgi): Harmonize with AUDIO_CONFIG */ -/* - Note: numerical values carry specific information here. - - MSB LSB - -------------------------------------------------------------------------------- - ... unused (assumed all 0) ... | config type (1 byte) | config variant (1 byte) | - -------------------------------------------------------------------------------- - - Where "config type" is the general type from the following list: - - unknown - - channel-based - - ambisonics - - object-based - - binaural - - MASA - - Config variants are concrete configs of each type. - */ -typedef enum -{ - IVAS_REND_AUDIO_CONFIG_MONO = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 0, - IVAS_REND_AUDIO_CONFIG_STEREO = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 1, - IVAS_REND_AUDIO_CONFIG_5_1 = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 2, - IVAS_REND_AUDIO_CONFIG_7_1 = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 3, - IVAS_REND_AUDIO_CONFIG_5_1_2 = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 4, - IVAS_REND_AUDIO_CONFIG_5_1_4 = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 5, - IVAS_REND_AUDIO_CONFIG_7_1_4 = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 6, - IVAS_REND_AUDIO_CONFIG_LS_CUSTOM = IVAS_REND_AUDIO_CONFIG_TYPE_CHANNEL_BASED << 8 | 255, - - IVAS_REND_AUDIO_CONFIG_FOA = IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS << 8 | 0, - IVAS_REND_AUDIO_CONFIG_HOA2 = IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS << 8 | 1, - IVAS_REND_AUDIO_CONFIG_HOA3 = IVAS_REND_AUDIO_CONFIG_TYPE_AMBISONICS << 8 | 2, - - IVAS_REND_AUDIO_CONFIG_OBJECT = IVAS_REND_AUDIO_CONFIG_TYPE_OBJECT_BASED << 8 | 0, - - IVAS_REND_AUDIO_CONFIG_BINAURAL = IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL << 8 | 0, - IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_IR = IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL << 8 | 1, - IVAS_REND_AUDIO_CONFIG_BINAURAL_ROOM_REVERB = IVAS_REND_AUDIO_CONFIG_TYPE_BINAURAL << 8 | 2, - - IVAS_REND_AUDIO_CONFIG_MASA1 = IVAS_REND_AUDIO_CONFIG_TYPE_MASA << 8 | 0, - IVAS_REND_AUDIO_CONFIG_MASA2 = IVAS_REND_AUDIO_CONFIG_TYPE_MASA << 8 | 1, - - IVAS_REND_AUDIO_CONFIG_UNKNOWN = IVAS_REND_AUDIO_CONFIG_TYPE_UNKNOWN << 8 | 0, -} IVAS_REND_AudioConfig; - typedef uint16_t IVAS_REND_InputId; +typedef enum _IVAS_REND_COMPLEXITY_LEVEL +{ + IVAS_REND_COMPLEXITY_LEVEL_ONE = 1, + IVAS_REND_COMPLEXITY_LEVEL_TWO = 2, + IVAS_REND_COMPLEXITY_LEVEL_THREE = 3 +} IVAS_REND_COMPLEXITY_LEVEL; + /* clang-format off */ /*----------------------------------------------------------------------------------* - * Function prototypes + * Renderer function prototypes *----------------------------------------------------------------------------------*/ /* Functions to be called before rendering */ @@ -135,9 +141,13 @@ typedef uint16_t IVAS_REND_InputId; ivas_error IVAS_REND_Open( IVAS_REND_HANDLE *phIvasRend, /* i/o: Pointer to renderer handle */ const int32_t outputSampleRate, /* i : output sampling rate */ - const IVAS_REND_AudioConfig outConfig, /* i : output audio config */ + const AUDIO_CONFIG outConfig, /* i : output audio config */ const int16_t nonDiegeticPan, /* i : non-diegetic object flag */ const float nonDiegeticPanGain /* i : non-diegetic panning gain */ +#ifdef API_5MS + , + const int16_t num_subframes +#endif ); /* Note: this will reset custom LFE routings set for any MC input */ @@ -156,7 +166,7 @@ ivas_error IVAS_REND_NumOutChannels( ivas_error IVAS_REND_AddInput( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_REND_AudioConfig inConfig, /* i : audio config for a new input */ + const AUDIO_CONFIG inConfig, /* i : audio config for a new input */ IVAS_REND_InputId *inputId /* o : ID of the new input */ ); @@ -193,7 +203,7 @@ ivas_error IVAS_REND_RemoveInput( ); ivas_error IVAS_REND_GetInputNumChannels( - IVAS_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ + IVAS_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ const IVAS_REND_InputId inputId, /* i : ID of the input */ int16_t *numChannels /* o : number of channels of the input */ ); @@ -232,7 +242,7 @@ ivas_error IVAS_REND_FeedInputMasaMetadata( ivas_error IVAS_REND_InitConfig( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - const IVAS_REND_AudioConfig outAudioConfig /* i : output audioConfig */ + const AUDIO_CONFIG outAudioConfig /* i : output audioConfig */ ); int16_t IVAS_REND_GetRenderConfig( @@ -245,12 +255,49 @@ int16_t IVAS_REND_FeedRenderConfig( const IVAS_RENDER_CONFIG_DATA renderConfig /* i : Render configuration struct */ ); +#if defined API_5MS && defined 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 */ + IVAS_REND_BitstreamBuffer *hBits /* i : buffer for input bitstream */ +); +ivas_error IVAS_REND_GetSplitBinauralSamples( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + bool* needNewFrame +); +ivas_error IVAS_REND_GetSplitBinauralBitstream( + IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ + IVAS_REND_AudioBuffer outAudio, /* i/o: buffer for output audio */ + IVAS_REND_BitstreamBuffer *hBits /* o : buffer for output bitstream */ +); +#endif + ivas_error IVAS_REND_SetHeadRotation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ +#ifdef API_5MS + const IVAS_QUATERNION headRot, /* i : head orientations for next rendering call */ + const IVAS_VECTOR3 Pos /* i : listener positions for next rendering call */ +#else const IVAS_QUATERNION headRot[RENDERER_HEAD_POSITIONS_PER_FRAME], /* i : head orientations for next rendering call */ const IVAS_VECTOR3 Pos[RENDERER_HEAD_POSITIONS_PER_FRAME] /* i : listener positions for next rendering call */ +#endif +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + IVAS_SPLIT_REND_ROT_AXIS rot_axis +#endif +#ifdef API_5MS +, const int16_t sf_idx +#endif ); +#ifdef API_5MS +/* Head rotation becomes enabled by calling IVAS_REND_SetHeadRotation. Use this to disable. */ +ivas_error IVAS_REND_DisableHeadRotation( + IVAS_REND_HANDLE hIvasRend /* i/o: Renderer handle */ +); +#endif + ivas_error IVAS_REND_SetOrientationTrackingMode( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ const HEAD_ORIENT_TRK_T orientation_tracking /* i : Head orientation tracking type */ @@ -277,13 +324,27 @@ 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 int16_t bfi); +#endif + ivas_error IVAS_REND_SetExternalOrientation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_QUATERNION *orientation, /* i : external orientation data */ +#ifdef API_5MS + int8_t enableHeadRotation, /* i : flag to enable head rotation for this frame */ + int8_t enableExternalOrientation, /* i : flag to enable external orientation for this frame */ + int8_t enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ + int16_t numFramesToTargetOrientation, /* i : number of frames until target orientation is reached */ + const int16_t sf_idx /*i : subframe index*/ +#else int8_t *enableHeadRotation, /* i : flag to enable head rotation for this frame */ int8_t *enableExternalOrientation, /* i : flag to enable external orientation for this frame */ int8_t *enableRotationInterpolation, /* i : flag to interpolate rotations from current and previous frames */ int16_t *numFramesToTargetOrientation /* i : number of frames until target orientation is reached */ +#endif ); ivas_error IVAS_REND_CombineHeadAndExternalOrientation( @@ -292,7 +353,7 @@ ivas_error IVAS_REND_CombineHeadAndExternalOrientation( ivas_error IVAS_REND_GetCombinedOrientation( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ - IVAS_QUATERNION *pRotation /* i/o: Quaternion pointer processed orientation */ + IVAS_QUATERNION *pOrientation /* i/o: Quaternion pointer processed orientation */ ); ivas_error IVAS_REND_GetMasaMetadata( @@ -313,6 +374,11 @@ ivas_error IVAS_REND_SetTotalNumberOfObjects( const uint16_t total_num_objects /* i : total number of objects */ ); +ivas_error IVAS_REND_SetIsmMetadataDelay( + IVAS_REND_HANDLE hIvasRend, /* i/o: IVAS renderer handle */ + const float sync_md_delay /* i : Metadata Delay in ms to sync with audio delay */ +); + ivas_error IVAS_REND_GetNumAllObjects( IVAS_REND_CONST_HANDLE hIvasRend, /* i : Renderer handle */ int16_t *numChannels /* o : number of all objects */ @@ -321,6 +387,12 @@ ivas_error IVAS_REND_GetNumAllObjects( ivas_error IVAS_REND_GetSamples( IVAS_REND_HANDLE hIvasRend, /* i/o: Renderer handle */ IVAS_REND_AudioBuffer outAudio /* i/o: buffer for output audio */ +#ifndef API_5MS +#ifdef SPLIT_REND_WITH_HEAD_ROT + , + IVAS_REND_BitstreamBuffer *hBits /*i/o: buffer for input/output bitstream. Needed in split rendering mode*/ +#endif +#endif ); /* Functions to be called after rendering */ @@ -329,6 +401,40 @@ void IVAS_REND_Close( IVAS_REND_HANDLE* phIvasRend /* i/o: Pointer to renderer handle */ ); + +#ifdef SPLIT_REND_WITH_HEAD_ROT +/* Split binaural rendering functions */ + +int16_t IVAS_REND_openCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_INPUT_CHANNELS], + const int16_t num_in_chs, + const int16_t num_out_chs, + const int32_t output_Fs +); + +void IVAS_REND_closeCldfb( + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbAna[IVAS_MAX_INPUT_CHANNELS], + IVAS_CLDFB_FILTER_BANK_HANDLE cldfbSyn[IVAS_MAX_INPUT_CHANNELS] +); + +void IVAS_REND_cldfbAnalysis_ts_wrapper( + const float *timeIn, /* i : time buffer */ + float realBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : real value buffer */ + float imagBuffer[IVAS_CLDFB_NO_CHANNELS_MAX], /* o : imag value buffer */ + const int16_t samplesToProcess, /* i : samples to process */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb /* i : filterbank state */ +); + +void IVAS_REND_cldfbSynthesis_wrapper( + float **realBuffer, /* i : real values */ + float **imagBuffer, /* i : imag values */ + float *timeOut, /* o : output time domain samples */ + const int16_t samplesToProcess, /* i : number of processed samples */ + IVAS_CLDFB_FILTER_BANK_HANDLE h_cldfb /* i : filter bank state */ +); +#endif + #ifdef DEBUGGING int32_t IVAS_REND_GetNoCLipping( IVAS_REND_CONST_HANDLE hIvasRend /* i : Renderer handle */ diff --git a/lib_util/bitstream_reader.c b/lib_util/bitstream_reader.c index 999332e863dcb9584e557ba3375a91b541a398f7..2e88746c035759f530bb75f7940ae84990ff4de3 100644 --- a/lib_util/bitstream_reader.c +++ b/lib_util/bitstream_reader.c @@ -263,6 +263,7 @@ cleanup: return error; } +#ifdef DEBUGGING ivas_error BS_Reader_Rewind( BS_READER_HANDLE hBsReader ) { if ( hBsReader == NULL ) @@ -277,6 +278,7 @@ ivas_error BS_Reader_Rewind( BS_READER_HANDLE hBsReader ) return hBsReader->rewind( hBsReader->hFormatReader ); } +#endif ivas_error BS_Reader_ReadFrame_short( BS_READER_HANDLE hBsReader, uint16_t *serial, int16_t *num_bits, int16_t *bfi ) { diff --git a/lib_util/bitstream_reader.h b/lib_util/bitstream_reader.h index 2accbbd242670d69f612780ce4b46018a5b05e72..374c19d436d9db0f48a599a3acc78ab5e23489ae 100644 --- a/lib_util/bitstream_reader.h +++ b/lib_util/bitstream_reader.h @@ -58,7 +58,9 @@ typedef struct BS_Reader *BS_READER_HANDLE; ivas_error BS_Reader_Open_filename( BS_READER_HANDLE *phBsReader, const char *filename, BS_READER_FORMAT format ); +#ifdef DEBUGGING ivas_error BS_Reader_Rewind( BS_READER_HANDLE hBsReader ); +#endif ivas_error BS_Reader_ReadFrame_short( BS_READER_HANDLE hBsReader, uint16_t *serial, int16_t *num_bits, int16_t *bfi ); diff --git a/lib_util/g192.h b/lib_util/g192.h index 2dfd34b9e547a3acf40a40617ebb4d84b5997457..9e5e56d223c4a350b9e7f6d1775c6c3364101ef0 100644 --- a/lib_util/g192.h +++ b/lib_util/g192.h @@ -38,7 +38,6 @@ #define G192_H G192_H #include "common_api_types.h" -#include /*-----------------------------------------------------------------------* diff --git a/lib_util/hrtf_file_reader.c b/lib_util/hrtf_file_reader.c index e2181ca6e161dfa01782eb1b87605056565db857..95d9b7c881c670d2658c59a8b43099661e9b6320 100644 --- a/lib_util/hrtf_file_reader.c +++ b/lib_util/hrtf_file_reader.c @@ -35,6 +35,7 @@ #include "prot.h" #include "ivas_prot_rend.h" +#include "ivas_prot.h" /*---------------------------------------------------------------------* * Local structures @@ -431,6 +432,14 @@ static ivas_error LoadBSplineBinary( LoadBSplineBinaryITD( &HrFiltSet_p->ModelParamsITD, f_hrtf ); } + /* left/right energy and interaural coherence for late reverb */ + for ( i = 0; i < 3; i++ ) + { + HrFiltSet_p->lr_energy_and_iac_dyn[i] = (float *) malloc( LR_IAC_LENGTH_NR_FC * sizeof( float ) ); + fread( HrFiltSet_p->lr_energy_and_iac_dyn[i], sizeof( const float ), LR_IAC_LENGTH_NR_FC, f_hrtf ); + HrFiltSet_p->lr_energy_and_iac[i] = (const float *) HrFiltSet_p->lr_energy_and_iac_dyn[i]; + } + return IVAS_ERR_OK; } @@ -669,54 +678,14 @@ ivas_error dealloc_HRTF_binary( free( hHrtf->ModelEval.hrfModL ); free( hHrtf->ModelEval.hrfModR ); - } - - return error; -} - - -/*------------------------------------------------------------------------- - * ivas_hrtf_init() - * - * Initialize hHRTF handle - *------------------------------------------------------------------------*/ -static ivas_error ivas_hrtf_init( - HRTFS_DATA *hHRTF /* i/o: HRTF handle */ -) -{ - int16_t i, j; - - if ( hHRTF == NULL ) - { - return IVAS_ERR_WRONG_PARAMS; - } - - hHRTF->latency_s = 0; - hHRTF->max_num_ir = 0; - hHRTF->max_num_iterations = 0; - hHRTF->index_frequency_max_diffuse = 0; - - for ( i = 0; i < MAX_INTERN_CHANNELS; i++ ) - { - hHRTF->inv_diffuse_weight[i] = 0; - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) + for ( i = 0; i < 3; i++ ) { - hHRTF->num_iterations[i][j] = 0; - hHRTF->pIndex_frequency_max[i][j] = NULL; - hHRTF->pOut_to_bin_re[i][j] = NULL; - hHRTF->pOut_to_bin_im[i][j] = NULL; + free( hHrtf->lr_energy_and_iac_dyn[i] ); } } - for ( j = 0; j < BINAURAL_CHANNELS; j++ ) - { - hHRTF->num_iterations_diffuse[j] = 0; - hHRTF->pIndex_frequency_max_diffuse[j] = NULL; - hHRTF->pOut_to_bin_diffuse_re[j] = NULL; - hHRTF->pOut_to_bin_diffuse_im[j] = NULL; - } - return IVAS_ERR_OK; + return error; } @@ -941,82 +910,6 @@ static ivas_error create_HRTF_from_rawdata( return IVAS_ERR_OK; } -static ivas_error init_fastconv_HRTF_handle( - HRTFS_FASTCONV *hHrtf /* i/o: HRTF FastConv handle */ -) -{ - int16_t i, j; - - if ( hHrtf == NULL ) - { - return IVAS_ERR_WRONG_PARAMS; - } - - hHrtf->FASTCONV_HRIR_latency_s = 0; - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) - { - for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) - { - set_zero( hHrtf->leftHRIRReal[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->leftHRIRImag[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRReal[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRImag[i][j], BINAURAL_NTAPS ); - } - } - - hHrtf->FASTCONV_HOA3_latency_s = 0; - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) - { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) - { - set_zero( hHrtf->leftHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->leftHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRReal_HOA3[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRImag_HOA3[i][j], BINAURAL_NTAPS ); - } - } - hHrtf->FASTCONV_HOA2_latency_s = 0; - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) - { - for ( j = 0; j < 9; j++ ) - { - set_zero( hHrtf->leftHRIRReal_HOA2[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->leftHRIRImag_HOA2[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRReal_HOA2[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRImag_HOA2[i][j], BINAURAL_NTAPS ); - } - } - hHrtf->FASTCONV_FOA_latency_s = 0; - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) - { - for ( j = 0; j < 4; j++ ) - { - set_zero( hHrtf->leftHRIRReal_FOA[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->leftHRIRImag_FOA[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRReal_FOA[i][j], BINAURAL_NTAPS ); - set_zero( hHrtf->rightHRIRImag_FOA[i][j], BINAURAL_NTAPS ); - } - } - - - hHrtf->FASTCONV_BRIR_latency_s = 0; - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) - { - for ( j = 0; j < HRTF_LS_CHANNELS; j++ ) - { - set_zero( hHrtf->leftBRIRReal[i][j], BINAURAL_NTAPS_MAX ); - set_zero( hHrtf->leftBRIRImag[i][j], BINAURAL_NTAPS_MAX ); - set_zero( hHrtf->rightBRIRReal[i][j], BINAURAL_NTAPS_MAX ); - set_zero( hHrtf->rightBRIRImag[i][j], BINAURAL_NTAPS_MAX ); - } - } - - set_zero( hHrtf->fastconvReverberationTimes, CLDFB_NO_CHANNELS_MAX ); - set_zero( hHrtf->fastconvReverberationEneCorrections, CLDFB_NO_CHANNELS_MAX ); - - return IVAS_ERR_OK; -} - static ivas_error create_fastconv_HRTF_from_rawdata( HRTFS_FASTCONV_HANDLE *hHRTF, /* i/o: HRTF FastConv handle */ @@ -1027,20 +920,8 @@ static ivas_error create_fastconv_HRTF_from_rawdata( { int16_t i, j; char *hrtf_data_rptr; - - // if ( hHRTF == NULL ) - // { - // if ( ( ( *hHRTF ) = (HRTFS_FASTCONV_HANDLE) count_malloc( sizeof( HRTFS_FASTCONV ) ) ) == NULL ) - // { - // return IVAS_ERROR( IVAS_ERR_UNEXPECTED_NULL_POINTER, "Can not allocate memory for Fastconv HRTF binary\n" ); - // } - - // init_fastconv_HRTF_handle( *hHRTF ); - // } - // else - // { - // return IVAS_ERR_INTERNAL; - // } + ( *hHRTF )->allocate_init_flag = 0; + ivas_allocate_binaural_hrtf( *hHRTF, 0, input_cfg, rend_type, ( *hHRTF )->allocate_init_flag ); hrtf_data_rptr = hrtf_data; @@ -1108,48 +989,47 @@ static ivas_error create_fastconv_HRTF_from_rawdata( ( *hHRTF )->FASTCONV_HOA3_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); - if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + if ( HOA3_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA3_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); - if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + if ( BINAURAL_NTAPS_SBA != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS_SBA)" ); } hrtf_data_rptr += sizeof( uint16_t ); - for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA3_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->leftHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->leftHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA3_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->leftHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->leftHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA3_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->rightHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->rightHRIRReal_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA3_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->rightHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->rightHRIRImag_HOA3[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } } @@ -1158,49 +1038,48 @@ static ivas_error create_fastconv_HRTF_from_rawdata( /* HRIR_HOA2 */ ( *hHRTF )->FASTCONV_HOA2_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); - - if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + if ( HOA2_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HOA2_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); - if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + if ( BINAURAL_NTAPS_SBA != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS_SBA)" ); } hrtf_data_rptr += sizeof( uint16_t ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA2_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->leftHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->leftHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA2_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->leftHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->leftHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA2_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->rightHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->rightHRIRReal_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < HOA2_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->rightHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->rightHRIRImag_HOA2[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } } @@ -1209,49 +1088,48 @@ static ivas_error create_fastconv_HRTF_from_rawdata( /* HRIR_FOA */ ( *hHRTF )->FASTCONV_FOA_latency_s = *( (float *) ( hrtf_data_rptr ) ); hrtf_data_rptr += sizeof( float ); - - if ( HRTF_SH_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + if ( FOA_CHANNELS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (HRTF_SH_CHANNELS)" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (FOA_CHANNELS)" ); } hrtf_data_rptr += sizeof( uint16_t ); - if ( BINAURAL_NTAPS != *( (uint16_t *) ( hrtf_data_rptr ) ) ) + if ( BINAURAL_NTAPS_SBA != *( (uint16_t *) ( hrtf_data_rptr ) ) ) { - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS)" ); + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "HRTF binary file not compliant (BINAURAL_NTAPS_SBA)" ); } hrtf_data_rptr += sizeof( uint16_t ); for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < FOA_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->leftHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->leftHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < FOA_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->leftHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->leftHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < FOA_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->rightHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->rightHRIRReal_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } for ( i = 0; i < BINAURAL_CONVBANDS; i++ ) { - for ( j = 0; j < HRTF_SH_CHANNELS; j++ ) + for ( j = 0; j < FOA_CHANNELS; j++ ) { - memcpy( ( *hHRTF )->rightHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS * sizeof( float ) ); - hrtf_data_rptr += BINAURAL_NTAPS * sizeof( float ); + memcpy( ( *hHRTF )->rightHRIRImag_FOA[i][j], hrtf_data_rptr, BINAURAL_NTAPS_SBA * sizeof( float ) ); + hrtf_data_rptr += BINAURAL_NTAPS_SBA * sizeof( float ); } } } @@ -1366,9 +1244,6 @@ ivas_error load_fastconv_HRTF_from_binary( } /* Read & load */ - - memset( hHrtfFastConv, 0x00, sizeof( HRTFS_FASTCONV ) ); - for ( hrtf_id = 0; hrtf_id < hrtfs_file_header.nb_hrtf; hrtf_id++ ) { if ( read_hrtf_binary_header( &hrtf_header, f_hrtf ) != IVAS_ERR_OK ) @@ -1376,9 +1251,7 @@ 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)" ); } - - if ( ( hrtf_header.frequency == 48000 ) && - ( ( 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 ) ) { if ( fread( hrtf_data, 1, hrtf_header.data_size, f_hrtf ) != hrtf_header.data_size ) { @@ -1652,13 +1525,13 @@ 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 ) ) { - destroy_SetOfHRTF( hSetOfHRTF ); - return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create all the HRTF from binary file" ); + if ( destroy_SetOfHRTF( hSetOfHRTF ) != IVAS_ERR_OK ) + { + return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Could not create all the HRTF from binary file" ); + } } - return IVAS_ERR_OK; } diff --git a/lib_util/masa_file_writer.c b/lib_util/masa_file_writer.c index e7f3aca0b69b6089973f63ca433d33df36aa73c6..8b063fe282e3f1fc4f0dd785f0640a3a89b338cc 100644 --- a/lib_util/masa_file_writer.c +++ b/lib_util/masa_file_writer.c @@ -84,9 +84,10 @@ static void getExtMasaMetadataFileName( return; } + static void delayMasaMetadata( - MASA_DECODER_EXT_OUT_META_HANDLE extOutMeta, /* i/o : New input metadata which is inplace replaced with delayed metadata frame */ - MASA_META_DELAY_STORAGE *delayStorage /* i/o : Storage for 10 ms of metadata and related descriptive metadata */ + MASA_DECODER_EXT_OUT_META_HANDLE extOutMeta, /* i/o: New input metadata which is inplace replaced with delayed metadata frame */ + MASA_META_DELAY_STORAGE *delayStorage /* i/o: Storage for 10 ms of metadata and related descriptive metadata */ ) { int16_t dir, sf, band; @@ -141,6 +142,7 @@ static void delayMasaMetadata( return; } + /*---------------------------------------------------------------------* * MasaFileWriter_open() * diff --git a/lib_util/masa_file_writer.h b/lib_util/masa_file_writer.h index 62aa8c6b48c0c990138621689f05fc665cabe914..6b1bcbb9fb1886db5e8fa56277c6cacebf6a5a84 100644 --- a/lib_util/masa_file_writer.h +++ b/lib_util/masa_file_writer.h @@ -33,10 +33,8 @@ #ifndef IVAS_MASA_FILE_WRITER_H #define IVAS_MASA_FILE_WRITER_H -#include -#include "options.h" -#include #include "common_api_types.h" +#include struct MasaFileWriter; diff --git a/lib_util/render_config_reader.c b/lib_util/render_config_reader.c index a3b04563e4e62141f8ed937b110ecad6b27c3522..bdbfe3ec2b4f789359e03832f1828cd0a886c822 100644 --- a/lib_util/render_config_reader.c +++ b/lib_util/render_config_reader.c @@ -33,6 +33,7 @@ #include "render_config_reader.h" #include #include +#include #include #include #include "cmdl_tools.h" @@ -43,9 +44,8 @@ * PreProc Local Macros *------------------------------------------------------------------------------------------*/ -#define MAX_LINE_LENGTH ( 1024 ) -#define MAX_ITEM_LENGTH ( 64 ) -#define N_REVERB_VECTORS ( 3 ) +#define MAX_ITEM_LENGTH ( 64 ) +#define N_ABS_COEFFS ( 6 ) #define SHORTEST_REV_DEL_LINE ( 0.015f ) #define N_BANDS_MIN ( 2 ) @@ -68,296 +68,1753 @@ * Local Type definitions *------------------------------------------------------------------------------------------*/ +typedef struct +{ + uint32_t nrBands; /* Number of frequency bands */ + float *pFc; /* Center frequencies */ +} FrequencyGrid; + +typedef enum _FREQ_GRID_MODE +{ + FREQ_GRID_MODE_UNKNOWN = -1, + FREQ_GRID_MODE_INDIVIDUAL_FREQUENCIES = 0, + FREQ_GRID_MODE_START_HOP_AMOUNT = 1, + FREQ_GRID_MODE_DEFAULT_BANDING = 2 +} FREQ_GRID_MODE; + +typedef struct +{ + uint16_t use_er; /* Activation Flag */ + IVAS_VECTOR3 dimensions; /* Room dimensions [m] */ + float pAbsCoeff[N_ABS_COEFFS]; /* Absorption coeffs table */ + IVAS_VECTOR3 *pListenerOrigin; /* Listener origin */ + uint32_t lowComplexity; /* Low complexity mode flag */ +} EarlyReflectionsConfig; + +typedef struct +{ + uint32_t id; /* Acoustic environment ID */ + FrequencyGrid *pFG; /* Pointer into Frequency grids table for late reverb coeffs */ + float *pRT60; /* RT60 table */ + float *pDSR; /* DSR table */ + float preDelay; /* Pre-delay */ + EarlyReflectionsConfig *pEarlyReflections; /* Early reflections configuration */ +} AcousticEnv; + +typedef struct +{ + uint32_t id; /* Pattern ID */ + float *pDirectivity; /* Source directivity */ +} DirectrivityPat; + struct RenderConfigReader { FILE *pConfigFile; + uint8_t *pBitstream; /* Renderer config bitstream */ + size_t length; /* Bitstream length */ + size_t readOffset; /* Bitstream read offset */ + uint32_t nFG; /* Number of frequency grids */ + FrequencyGrid *pFG; /* Frequency grids */ + uint32_t nAE; /* Number of acoustic environments */ + AcousticEnv *pAE; /* Acoustic environments */ + uint32_t nDP; /* Number of directivity patterns */ + DirectrivityPat *pDP; /* Directivity Pattern */ +}; + + +typedef enum _RC_LUT +{ + RC_LUT_INVALID = 0x00, + RC_LUT_COUNT_IDX_LO, + RC_LUT_COUNT_IDX_HI, + RC_LUT_DECI_SEC, + RC_LUT_SEC, + RC_LUT_MILLI_SEC, + RC_LUT_MICRO_SEC, + RC_LUT_FREQ, + RC_LUT_FREQ_HOP, + RC_LUT_DSR, + RC_LUT_METERS, + RC_LUT_HECTOMETERS, + RC_LUT_KILOMETERS, + RC_LUT_CENTIMETERS, + RC_LUT_ABSORPTION +} RC_LUT; + +/*------------------------------------------------------------------------------------------* + * Lookup tables + *------------------------------------------------------------------------------------------*/ + +const float lutCountIdxLo_Value[] = { + 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, + 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f, 31.0f, + 32.0f, 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, 40.0f, 41.0f, 42.0f, 43.0f, 44.0f, 45.0f, 46.0f, 47.0f, + 48.0f, 49.0f, 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, 55.0f, 56.0f, 57.0f, 58.0f, 59.0f, 60.0f, 61.0f, 62.0f, 63.0f +}; +const uint16_t lutCountIdxLo_Code[] = { + 7, 4, 12, 13, 10, 11, 8, 9, 15, 14, 13, 12, 11, 10, 9, 8, + 7, 6, 5, 4, 3, 2, 1, 0, 63, 62, 61, 60, 59, 58, 57, 56, + 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97, 96, + 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81, 80 +}; +const uint8_t lutCountIdxLo_Len[] = { + 4, 3, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 +}; + +const float lutCountIdxHi_Value[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f }; +const uint16_t lutCountIdxHi_Code[] = { 1, 0, 6, 5, 4, 7, 5, 15, 14, 13, 9, 8, 25, 49, 48 }; +const uint8_t lutCountIdxHi_Len[] = { 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 6, 7, 7 }; + +const float lutDeciSec_Value[] = { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f }; +const uint16_t lutDeciSec_Code[] = { 6, 4, 5, 6, 7, 7, 4, 5, 2, 3, 0 }; +const uint8_t lutDeciSec_Len[] = { 3, 3, 3, 4, 4, 3, 4, 4, 4, 4, 3 }; + +const float lutSec_Value[] = { + 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, + 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, 20.0f, + 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, 30.0f +}; +const uint16_t lutSec_Code[] = { 3, 1, 0, 15, 13, 12, 11, 9, 8, 14, 13, 12, 11, 9, 8, 5, 29, 28, 21, 31, 30, 21, 9, 8, 41, 41, 40, 81, 161, 160 }; +const uint8_t lutSec_Len[] = { 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 8, 8 }; + +const float lutMilliSec_Value[] = { + 0.00f, 0.001f, 0.002f, 0.003f, 0.004f, 0.005f, 0.006f, 0.007f, 0.008f, 0.009f, + 0.01f, 0.011f, 0.012f, 0.013f, 0.014f, 0.015f, 0.016f, 0.017f, 0.018f, 0.019f, + 0.02f, 0.021f, 0.022f, 0.023f, 0.024f, 0.025f, 0.026f, 0.027f, 0.028f, 0.029f, + 0.03f, 0.031f, 0.032f, 0.033f, 0.034f, 0.035f, 0.036f, 0.037f, 0.038f, 0.039f, + 0.04f, 0.041f, 0.042f, 0.043f, 0.044f, 0.045f, 0.046f, 0.047f, 0.048f, 0.049f, + 0.05f, 0.051f, 0.052f, 0.053f, 0.054f, 0.055f, 0.056f, 0.057f, 0.058f, 0.059f, + 0.06f, 0.061f, 0.062f, 0.063f, 0.064f, 0.065f, 0.066f, 0.067f, 0.068f, 0.069f, + 0.07f, 0.071f, 0.072f, 0.073f, 0.074f, 0.075f, 0.076f, 0.077f, 0.078f, 0.079f, + 0.08f, 0.081f, 0.082f, 0.083f, 0.084f, 0.085f, 0.086f, 0.087f, 0.088f, 0.089f, + 0.09f, 0.091f, 0.092f, 0.093f, 0.094f, 0.095f, 0.096f, 0.097f, 0.098f, 0.099f +}; +const uint16_t lutMilliSec_Code[] = { + 122, 123, 120, 121, 126, 127, 124, 125, 114, 115, 25, 112, 113, 118, 119, 116, 117, 42, 43, 40, + 18, 41, 46, 47, 44, 45, 34, 35, 32, 33, 19, 38, 39, 36, 37, 58, 59, 56, 57, 62, + 16, 63, 60, 61, 50, 51, 48, 49, 54, 55, 17, 52, 53, 10, 11, 8, 9, 14, 15, 12, + 22, 13, 2, 3, 0, 1, 6, 7, 4, 5, 23, 26, 27, 24, 25, 30, 31, 28, 29, 18, + 20, 19, 16, 17, 22, 23, 20, 21, 106, 107, 21, 104, 105, 110, 111, 108, 109, 98, 99, 48 +}; +const uint8_t lutMilliSec_Len[] = { + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 5, 7, 7, 7, 7, 7, 7, 7, 7, 6 +}; + +const float lutMicroSec_Value[] = { + 0.00001f, 0.00002f, 0.00003f, 0.00004f, 0.00005f, 0.00006f, 0.00007f, 0.00008f, 0.00009f, 0.0001f, + 0.00011f, 0.00012f, 0.00013f, 0.00014f, 0.00015f, 0.00016f, 0.00017f, 0.00018f, 0.00019f, 0.0002f, + 0.00021f, 0.00022f, 0.00023f, 0.00024f, 0.00025f, 0.00026f, 0.00027f, 0.00028f, 0.00029f, 0.0003f, + 0.00031f, 0.00032f, 0.00033f, 0.00034f, 0.00035f, 0.00036f, 0.00037f, 0.00038f, 0.00039f, 0.0004f, + 0.00041f, 0.00042f, 0.00043f, 0.00044f, 0.00045f, 0.00046f, 0.00047f, 0.00048f, 0.00049f, 0.0005f, + 0.00051f, 0.00052f, 0.00053f, 0.00054f, 0.00055f, 0.00056f, 0.00057f, 0.00058f, 0.00059f, 0.0006f, + 0.00061f, 0.00062f, 0.00063f, 0.00064f, 0.00065f, 0.00066f, 0.00067f, 0.00068f, 0.00069f, 0.0007f, + 0.00071f, 0.00072f, 0.00073f, 0.00074f, 0.00075f, 0.00076f, 0.00077f, 0.00078f, 0.00079f, 0.0008f, + 0.00081f, 0.00082f, 0.00083f, 0.00084f, 0.00085f, 0.00086f, 0.00087f, 0.00088f, 0.00089f, 0.0009f, + 0.00091f, 0.00092f, 0.00093f, 0.00094f, 0.00095f, 0.00096f, 0.00097f, 0.00098f, 0.00099f +}; +const uint16_t lutMicroSec_Code[] = { + 444, 18, 445, 19, 894, 16, 895, 17, 892, 22, 893, 23, 434, 20, 435, 21, 432, 10, 433, 11, + 438, 8, 439, 9, 436, 14, 437, 15, 410, 12, 411, 13, 408, 2, 409, 3, 414, 0, 415, 1, + 412, 6, 413, 7, 402, 4, 403, 5, 400, 26, 401, 27, 406, 24, 407, 25, 404, 30, 405, 31, + 426, 28, 427, 29, 424, 18, 425, 19, 430, 16, 431, 17, 428, 22, 429, 23, 418, 20, 419, 21, + 416, 58, 417, 59, 422, 56, 423, 57, 420, 62, 421, 63, 442, 60, 443, 61, 440, 24, 441 +}; +const uint8_t lutMicroSec_Len[] = { + 9, 5, 9, 5, 10, 5, 10, 5, 10, 5, 10, 5, 9, 5, 9, 5, 9, 6, 9, 6, + 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, + 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, + 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, + 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 6, 9, 5, 9 +}; + +const float lutFreq_Value[] = { + 16.0f, 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, 25000.0f, 31500.0f, 40000.0f +}; +const uint16_t lutFreq_Code[] = { 35, 14, 15, 9, 12, 13, 0, 26, 27, 1, 24, 25, 14, 30, 31, 15, 28, 29, 12, 18, 19, 13, 16, 17, 10, 22, 23, 11, 20, 21, 2, 16, 138, 139, 68 }; +const uint8_t lutFreq_Len[] = { 6, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 6, 6, 4, 5, 8, 8, 7 }; + +const float lutFreqHop_Value[] = { 1.059463094f, 1.122462048f, 1.189207115f, 1.259921050f, 1.414213562f, 2.0f, 4.0f }; +const uint16_t lutFreqHop_Code[] = { 2, 3, 0, 1, 1, 3, 2 }; +const uint8_t lutFreqHop_Len[] = { 4, 4, 4, 2, 4, 2, 2 }; + +const float lutDsr_Value[] = { + -150.0f, -149.0f, -148.0f, -147.0f, -146.0f, -145.0f, -144.0f, -143.0f, -142.0f, -141.0f, + -140.0f, -139.0f, -138.0f, -137.0f, -136.0f, -135.0f, -134.0f, -133.0f, -132.0f, -131.0f, + -130.0f, -129.0f, -128.0f, -127.0f, -126.0f, -125.0f, -124.0f, -123.0f, -122.0f, -121.0f, + -120.0f, -119.0f, -118.0f, -117.0f, -116.0f, -115.0f, -114.0f, -113.0f, -112.0f, -111.0f, + -110.0f, -109.0f, -108.0f, -107.0f, -106.0f, -105.0f, -104.0f, -103.0f, -102.0f, -101.0f, + -100.0f, -99.0f, -98.0f, -97.0f, -96.0f, -95.0f, -94.0f, -93.0f, -92.0f, -91.0f, + -90.0f, -89.0f, -88.0f, -87.0f, -86.0f, -85.0f, -84.0f, -83.0f, -82.0f, -81.0f, + -80.0f, -79.0f, -78.0f, -77.0f, -76.0f, -75.0f, -74.0f, -73.0f, -72.0f, -71.0f, + -70.0f, -69.0f, -68.0f, -67.0f, -66.0f, -65.0f, -64.0f, -63.0f, -62.0f, -61.0f, + -60.0f, -59.0f, -58.0f, -57.0f, -56.0f, -55.0f, -54.0f, -53.0f, -52.0f, -51.0f, + -50.0f, -49.0f, -48.0f, -47.0f, -46.0f, -45.0f, -44.0f, -43.0f, -42.0f, -41.0f, + -40.0f, -39.0f, -38.0f, -37.0f, -36.0f, -35.0f, -34.0f, -33.0f, -32.0f, -31.0f, + -30.0f, -29.0f, -28.0f, -27.0f, -26.0f, -25.0f, -24.0f, -23.0f, -22.0f, -21.0f, + -20.0f, -19.0f, -18.0f, -17.0f, -16.0f, -15.0f, -14.0f, -13.0f, -12.0f, -11.0f, + -10.0f }; +const uint16_t lutDsr_Code[] = { + 140, 141, 286, 287, 284, 285, 130, 131, 128, 129, 134, 135, 132, 133, 234, 235, 232, 233, 238, 239, + 236, 237, 226, 227, 224, 225, 230, 231, 228, 229, 250, 251, 248, 249, 254, 255, 252, 253, 242, 243, + 240, 241, 246, 247, 244, 245, 202, 203, 200, 201, 206, 207, 204, 205, 194, 195, 192, 193, 198, 199, + 196, 197, 218, 219, 216, 217, 222, 223, 220, 221, 20, 21, 38, 39, 36, 37, 58, 59, 56, 57, + 62, 63, 60, 61, 50, 51, 48, 49, 54, 55, 52, 53, 10, 11, 8, 9, 14, 15, 12, 13, + 2, 3, 0, 1, 6, 7, 4, 5, 42, 43, 40, 41, 46, 47, 44, 45, 18, 19, 16, 17, + 22, 210, 211, 208, 209, 214, 215, 212, 213, 186, 187, 184, 185, 190, 191, 188, 189, 138, 139, 136, + 137 +}; +const uint8_t lutDsr_Len[] = { + 8, 8, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, + 8 +}; + +const float lutMeters_Value[] = { + 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, + 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, + 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, + 40.0f, 41.0f, 42.0f, 43.0f, 44.0f, 45.0f, 46.0f, 47.0f, 48.0f, 49.0f, + 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, 55.0f, 56.0f, 57.0f, 58.0f, 59.0f, + 60.0f, 61.0f, 62.0f, 63.0f, 64.0f, 65.0f, 66.0f, 67.0f, 68.0f, 69.0f, + 70.0f, 71.0f, 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, 77.0f, 78.0f, 79.0f, + 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f, 88.0f, 89.0f, + 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f, 96.0f, 97.0f, 98.0f, 99.0f +}; + +const uint16_t lutMeters_Code[] = { + 61, 50, 51, 48, 49, 54, 55, 52, 53, 10, + 11, 8, 9, 14, 15, 12, 13, 2, 3, 0, + 1, 6, 7, 4, 5, 26, 27, 24, 25, 30, + 31, 28, 29, 18, 19, 16, 17, 22, 23, 20, + 21, 42, 43, 40, 41, 46, 47, 44, 45, 16, + 68, 69, 142, 143, 140, 141, 154, 155, 152, 153, + 158, 159, 156, 157, 146, 147, 144, 145, 150, 151, + 148, 149, 234, 235, 232, 233, 238, 239, 236, 237, + 226, 227, 224, 225, 230, 231, 228, 229, 250, 251, + 248, 249, 254, 255, 252, 253, 242, 243, 240, 241 +}; + +const uint8_t lutMeters_Len[] = { + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, + 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 8, 8, 8, 8 +}; + +const float lutHectometers_Value[] = { 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f }; +const uint16_t lutHectometers_Code[] = { 0, 1, 6, 7, 4, 5, 6, 7, 4, 5 }; +const uint8_t lutHectometers_Len[] = { 3, 3, 3, 3, 3, 3, 4, 4, 4, 4 }; + +const float lutKilometers_Value[] = { 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f }; +const uint16_t lutKilometers_Code[] = { 2, 3, 1, 0, 7, 5, 4, 13, 25, 24 }; +const uint8_t lutKilometers_Len[] = { 2, 3, 3, 3, 3, 4, 4, 4, 5, 5 }; + +const float lutCentimeters_Value[] = { + 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, + 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f, 19.0f, + 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f, 28.0f, 29.0f, + 30.0f, 31.0f, 32.0f, 33.0f, 34.0f, 35.0f, 36.0f, 37.0f, 38.0f, 39.0f, + 40.0f, 41.0f, 42.0f, 43.0f, 44.0f, 45.0f, 46.0f, 47.0f, 48.0f, 49.0f, + 50.0f, 51.0f, 52.0f, 53.0f, 54.0f, 55.0f, 56.0f, 57.0f, 58.0f, 59.0f, + 60.0f, 61.0f, 62.0f, 63.0f, 64.0f, 65.0f, 66.0f, 67.0f, 68.0f, 69.0f, + 70.0f, 71.0f, 72.0f, 73.0f, 74.0f, 75.0f, 76.0f, 77.0f, 78.0f, 79.0f, + 80.0f, 81.0f, 82.0f, 83.0f, 84.0f, 85.0f, 86.0f, 87.0f, 88.0f, 89.0f, + 90.0f, 91.0f, 92.0f, 93.0f, 94.0f, 95.0f, 96.0f, 97.0f, 98.0f, 99.0f +}; + +const uint16_t lutCentimeters_Code[] = { + 50, 51, 48, 49, 54, 55, 52, 53, 42, 43, + 40, 41, 46, 47, 44, 45, 34, 35, 32, 33, + 38, 39, 36, 37, 58, 59, 56, 57, 62, 63, + 60, 61, 50, 51, 48, 49, 54, 55, 52, 53, + 10, 11, 8, 9, 14, 15, 12, 13, 2, 3, + 0, 1, 6, 7, 4, 5, 26, 27, 24, 25, + 30, 31, 28, 29, 18, 19, 16, 17, 22, 23, + 20, 21, 42, 43, 40, 41, 46, 47, 44, 45, + 34, 35, 32, 33, 38, 39, 36, 37, 122, 123, + 120, 121, 126, 127, 124, 125, 58, 59, 56, 57 +}; + +const uint8_t lutCentimeters_Len[] = { + 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, + 7, 7, 7, 7, 7, 7, 6, 6, 6, 6 +}; + +const float lutAbsorption_Value[] = { 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f }; +const uint16_t lutAbsorption_Code[] = { 6, 4, 5, 6, 7, 7, 4, 5, 2, 3, 0 }; +const uint8_t lutAbsorption_Len[] = { 3, 3, 3, 4, 4, 3, 4, 4, 4, 4, 3 }; + +/*------------------------------------------------------------------------------------------* + * Default frequency grids + *------------------------------------------------------------------------------------------*/ +const float defaultFrequencyGrid_0[] = { 31.5f, 63.0f, 125.0f, 250.0f, 500.0f, 1000.0f, 2000.0f, 4000.0f, 8000.0f, 16000.0f }; +const float defaultFrequencyGrid_1[] = { 25.0f, 50.0f, 100.0f, 200.0f, 400.0f, 800.0f, 1600.0f, 3150.0f, 6300.0f, 12500.0f }; +const float defaultFrequencyGrid_2[] = { + 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 defaultFrequencyGrid_3[] = { 25.0f, 100.0f, 400.0f, 1600.0f, 6300.0f }; +const float defaultFrequencyGrid_4[] = { 125.0f, 250.0f, 500.0f, 1000.0f, 2000.0f, 4000.0f }; +const float defaultFrequencyGrid_5[] = { 25.0f, 250.0f, 2500.0f }; +const float defaultFrequencyGrid_6[] = { + 27.0f, 56.0f, 89.0f, 126.0f, 168.0f, 214.0f, 265.0f, 323.0f, 387.0f, 459.0f, + 539.0f, 628.0f, 727.0f, 839.0f, 963.0f, 1101.0f, 1256.0f, 1429.0f, 1621.0f, 1836.0f, + 2077.0f, 2345.0f, 2644.0f, 2978.0f, 3351.0f, 3767.0f, 4232.0f, 4750.0f, 5329.0f, 5975.0f, + 6697.0f, 7502.0f, 8401.0f, 9405.0f, 10525.0f, 11775.0f, 13171.0f, 14729.0f, 16468.0f, 18410.0f, 20577.0f +}; +const float defaultFrequencyGrid_7[] = { + 27.0f, 89.0f, 168.0f, 265.0f, 387.0f, 539.0f, 727.0f, 963.0f, 1256.0f, 1621.0f, + 2077.0f, 2644.0f, 3351.0f, 4232.0f, 5329.0f, 6697.0f, 8401.0f, 10525.0f, 13171.0f, 16468.0f, 20577.0f +}; +const float defaultFrequencyGrid_8[] = { + 50.0f, 150.0f, 250.0f, 350.0f, 450.0f, 570.0f, 700.0f, 840.0f, 1000.0f, 1170.0f, + 1370.0f, 1600.0f, 1850.0f, 2150.0f, 2150.0f, 2500.0f, 2900.0f, 3400.0f, 4000.0f, 4800.0f, + 5800.0f, 7000.0f, 8500.0f, 10500.0f, 13500.0f +}; /*-----------------------------------------------------------------------------------------* - * Function read_bool() - * - * Reads a boolean value from a line + * Function read_bin_bits() + * Reads a given number of bits from the bitstream *-----------------------------------------------------------------------------------------*/ - -/*! r: false on success, true on failure */ -static int16_t read_bool( - const char *pLine, /* i : String to read from */ - int16_t *pTarget /* o : Output pointer (int16_t type used instead of bool because of coding rules/specs) */ +static ivas_error read_bin_bits( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + uint32_t *pTarget, /* o : Target read data pointer */ + const size_t nBits /* i : Number of bits to read */ ) { - char value[8]; + uint8_t n; + uint32_t nByte; + uint8_t bit; - if ( sscanf( pLine, "%s", (char *) &value ) != 1 ) + if ( this == NULL || this->pBitstream == NULL || pTarget == NULL ) { - return TRUE; + return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - if ( strcmp( value, "TRUE" ) == 0 ) + + if ( this->readOffset + nBits > this->length * 8 ) { - *pTarget = TRUE; - return FALSE; + return IVAS_ERR_INVALID_RENDER_CONFIG; } - if ( strcmp( value, "FALSE" ) == 0 ) + + *pTarget = 0; + for ( n = 0; n < nBits; n++ ) { - *pTarget = FALSE; - return FALSE; + nByte = ( this->readOffset + n ) >> 3; + bit = this->pBitstream[nByte] >> ( 7 - ( ( this->readOffset + n ) % 8 ) ) & 1; + *pTarget = ( *pTarget << 1 ) + bit; } - return true; -} + this->readOffset += nBits; + return IVAS_ERR_OK; +} /*-----------------------------------------------------------------------------------------* - * Function read_vector() - * - * Reads a vector value from a line + * Function read_bin_bool() + * Reads a boolean value from a bitstream *-----------------------------------------------------------------------------------------*/ - -static int16_t read_vector( - char *pLine, /* i : String to read from */ - const int16_t length, /* i : Number of expected vector elements */ - float *pTarget /* o : Output vector pointer */ +static ivas_error read_bin_bool( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + uint32_t *pResult /* o : Target read data pointer */ ) { - char *tmp; - int16_t n; - int16_t count; - - n = (int16_t) sscanf( pLine, "[%s", pLine ); - if ( n == 0 ) - { - return true; - } - - /* Additional comma to make parsing easier */ - pLine[strlen( pLine ) - 1] = ','; - - tmp = pLine; - /* Count # of commas to determine vector length */ - for ( n = 0; tmp[n]; tmp[n] == ',' ? n++ : *tmp++ ) - ; + return read_bin_bits( this, pResult, 1 ); +} - count = n; +/*-----------------------------------------------------------------------------------------* + * Function get_bin_id() + * Reads an ID from a bitstream + *-----------------------------------------------------------------------------------------*/ +static ivas_error get_bin_id( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + uint32_t *pResult /* o : Target read data pointer */ +) +{ + ivas_error error; + uint32_t id; + uint32_t cont; - tmp = pLine; + *pResult = 0; + id = 0; + cont = true; - /* Check for maximum vector length */ - if ( n != length ) + if ( pResult == NULL ) { - return true; + return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - for ( n = 0; n < count; n++ ) + while ( cont ) { - if ( (int16_t) sscanf( tmp, "%f,", &pTarget[n] ) != 1 ) + if ( ( error = read_bin_bits( this, &id, 7 ) ) != IVAS_ERR_OK ) { - return true; + return error; } + *pResult = ( *pResult << 7 ) | id; - tmp = strchr( tmp, ',' ) + 1; + if ( ( error = read_bin_bool( this, &cont ) ) != IVAS_ERR_OK ) + { + return error; + } } - return false; + return IVAS_ERR_OK; } - /*-----------------------------------------------------------------------------------------* - * Function strip_spaces_upper() - * - * Strips the spaces from a buffer and uppercases it + * Function read_bin_code_word() + * Reads a code word from a LUT *-----------------------------------------------------------------------------------------*/ - -static void strip_spaces_upper( - char *pStr /* i : String to read from */ +static ivas_error read_bin_code_word( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + const RC_LUT table, /* i : Table enum */ + float *pResult /* o : Code value */ ) { - int32_t read_idx = 0, write_idx = 0; + ivas_error error; + const float *pValues; + const uint16_t *pCodes; + const uint8_t *pLengths; + uint8_t minLen; + uint8_t maxLen; + uint8_t size; + uint8_t n; + uint32_t code; + uint32_t bits; + uint32_t nr_bits; + uint8_t len; + + minLen = 255; + maxLen = 0; + bits = 0; + nr_bits = 0; + code = 0; + + if ( pResult == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } - while ( pStr[read_idx] ) + /* Select the right tables */ + switch ( table ) { - if ( !isspace( pStr[read_idx] ) && !iscntrl( pStr[read_idx] ) ) + case RC_LUT_COUNT_IDX_LO: + pValues = lutCountIdxLo_Value; + pCodes = lutCountIdxLo_Code; + pLengths = lutCountIdxLo_Len; + size = sizeof lutCountIdxLo_Len / sizeof( uint8_t ); + break; + case RC_LUT_COUNT_IDX_HI: + pValues = lutCountIdxHi_Value; + pCodes = lutCountIdxHi_Code; + pLengths = lutCountIdxHi_Len; + size = sizeof lutCountIdxHi_Len / sizeof( uint8_t ); + break; + case RC_LUT_DECI_SEC: + pValues = lutDeciSec_Value; + pCodes = lutDeciSec_Code; + pLengths = lutDeciSec_Len; + size = sizeof lutDeciSec_Len / sizeof( uint8_t ); + break; + case RC_LUT_SEC: + pValues = lutSec_Value; + pCodes = lutSec_Code; + pLengths = lutSec_Len; + size = sizeof lutSec_Len / sizeof( uint8_t ); + break; + case RC_LUT_MILLI_SEC: + pValues = lutMilliSec_Value; + pCodes = lutMilliSec_Code; + pLengths = lutMilliSec_Len; + size = sizeof lutMilliSec_Len / sizeof( uint8_t ); + break; + case RC_LUT_MICRO_SEC: + pValues = lutMicroSec_Value; + pCodes = lutMicroSec_Code; + pLengths = lutMicroSec_Len; + size = sizeof lutMicroSec_Len / sizeof( uint8_t ); + break; + case RC_LUT_FREQ: + pValues = lutFreq_Value; + pCodes = lutFreq_Code; + pLengths = lutFreq_Len; + size = sizeof lutFreq_Len / sizeof( uint8_t ); + break; + case RC_LUT_FREQ_HOP: + pValues = lutFreqHop_Value; + pCodes = lutFreqHop_Code; + pLengths = lutFreqHop_Len; + size = sizeof lutFreqHop_Len / sizeof( uint8_t ); + break; + case RC_LUT_DSR: + pValues = lutDsr_Value; + pCodes = lutDsr_Code; + pLengths = lutDsr_Len; + size = sizeof lutDsr_Len / sizeof( uint8_t ); + break; + case RC_LUT_METERS: + pValues = lutMeters_Value; + pCodes = lutMeters_Code; + pLengths = lutMeters_Len; + size = sizeof lutMeters_Len / sizeof( uint8_t ); + break; + case RC_LUT_HECTOMETERS: + pValues = lutHectometers_Value; + pCodes = lutHectometers_Code; + pLengths = lutHectometers_Len; + size = sizeof lutHectometers_Len / sizeof( uint8_t ); + break; + case RC_LUT_KILOMETERS: + pValues = lutKilometers_Value; + pCodes = lutKilometers_Code; + pLengths = lutKilometers_Len; + size = sizeof lutKilometers_Len / sizeof( uint8_t ); + break; + case RC_LUT_CENTIMETERS: + pValues = lutCentimeters_Value; + pCodes = lutCentimeters_Code; + pLengths = lutCentimeters_Len; + size = sizeof lutCentimeters_Len / sizeof( uint8_t ); + break; + case RC_LUT_ABSORPTION: + pValues = lutAbsorption_Value; + pCodes = lutAbsorption_Code; + pLengths = lutAbsorption_Len; + size = sizeof lutAbsorption_Len / sizeof( uint8_t ); + break; + case RC_LUT_INVALID: + default: + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + /* First read minLen bits, then add one bit per iteration to find the correct value */ + for ( n = 0; n < size; n++ ) + { + minLen = min( minLen, pLengths[n] ); + maxLen = max( maxLen, pLengths[n] ); + } + for ( len = minLen; len <= maxLen; len++ ) + { + nr_bits = ( len == minLen ) ? minLen : 1; + if ( ( error = read_bin_bits( this, &bits, nr_bits ) ) != IVAS_ERR_OK ) { - pStr[write_idx++] = pStr[read_idx]; + return error; + } + code = ( code << nr_bits ) | bits; + for ( n = 0; n < size; n++ ) + { + if ( code == pCodes[n] && len == pLengths[n] ) + { + *pResult = pValues[n]; + return IVAS_ERR_OK; + } } - read_idx++; } - pStr[write_idx] = '\0'; - to_upper( pStr ); - - return; + return IVAS_ERR_INVALID_RENDER_CONFIG; } - /*-----------------------------------------------------------------------------------------* - * Function errorHandler() - * - * Prints error message and exits + * Function get_bin_count_or_index() + * Gets a count or index *-----------------------------------------------------------------------------------------*/ - -/*! r: error accumulation */ -static int32_t errorHandler( - const char *badStr, /* i : String to complain about */ - const ERROR_CODES_t error ) +static ivas_error get_bin_count_or_index( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + uint32_t *pResult /* o : Count or index value */ +) { - static int32_t numErrors = 0; + ivas_error error; + float value; + uint32_t isLarge; - switch ( error ) + if ( pResult == NULL ) { - case ERROR_NONE: - break; - case ERROR_ITEM_UNKNOWN: - numErrors++; - fprintf( stderr, "Unknown variable %s in renderer configuration file.\n\n", badStr ); - break; - case ERROR_VALUE_INVALID: - numErrors++; - fprintf( stderr, "Invalid value %s in renderer configuration file.\n\n", badStr ); - break; - default: - numErrors++; - fprintf( stderr, "Unknown error while reading configuration file.\n\n" ); + return IVAS_ERR_UNEXPECTED_NULL_POINTER; } - return numErrors; -} + if ( ( error = read_bin_code_word( this, RC_LUT_COUNT_IDX_LO, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult = (uint32_t) value; -/*------------------------------------------------------------------------------------------* - * RenderConfigReader_checkValues() - * - * Verifies if the configuration parameters lie within acceptable limits - *------------------------------------------------------------------------------------------*/ + if ( ( error = read_bin_bool( this, &isLarge ) ) != IVAS_ERR_OK ) + { + return error; + } -static ivas_error RenderConfigReader_checkValues( - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ + if ( isLarge ) + { + if ( ( error = read_bin_code_word( this, RC_LUT_COUNT_IDX_HI, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult += (uint32_t) value << 6; + } + + return IVAS_ERR_OK; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_bin_duration() + * Gets a duration value + *-----------------------------------------------------------------------------------------*/ +static ivas_error get_bin_duration( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + float *pResult /* o : Duration value */ ) { - int16_t band_idx, tab_value_err_count; - IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoom_acoustics; - pRoom_acoustics = &hRenderConfig->room_acoustics; - tab_value_err_count = 0; + ivas_error error; + float value; + uint32_t addFlag; - /* Verify the number of frequency bands in the config input data */ - if ( ( pRoom_acoustics->nBands > N_BANDS_MAX ) || ( pRoom_acoustics->nBands < N_BANDS_MIN ) ) + /* Deciseconds */ + if ( ( error = read_bin_code_word( this, RC_LUT_DECI_SEC, &value ) ) != IVAS_ERR_OK ) { - return IVAS_ERR_WRONG_PARAMS; + return error; } + *pResult = value; - /* Verify input pre-delay value */ - if ( ( pRoom_acoustics->inputPreDelay > INPUTPREDELAY_MAX ) || ( pRoom_acoustics->inputPreDelay < INPUTPREDELAY_MIN ) ) + /* Milliseconds */ + if ( ( error = read_bin_bool( this, &addFlag ) ) != IVAS_ERR_OK ) { - return IVAS_ERR_WRONG_PARAMS; + return error; } - /* Verify data per band in the acoustic properties table */ - for ( band_idx = 0; band_idx < pRoom_acoustics->nBands; band_idx++ ) + if ( addFlag ) { - /* Verify if the frequencies are in the ascending order (required for interpolation) */ - if ( band_idx != 0 ) + if ( ( error = read_bin_code_word( this, RC_LUT_MILLI_SEC, &value ) ) != IVAS_ERR_OK ) { - if ( pRoom_acoustics->pFc_input[band_idx] <= pRoom_acoustics->pFc_input[band_idx - 1] ) - { - tab_value_err_count++; - } + return error; } + *pResult += value; - /* Check the input frequencies */ - if ( ( pRoom_acoustics->pFc_input[band_idx] > FC_INPUT_MAX ) || ( pRoom_acoustics->pFc_input[band_idx] < FC_INPUT_MIN ) ) + /* Microseconds */ + if ( ( error = read_bin_bool( this, &addFlag ) ) != IVAS_ERR_OK ) { - tab_value_err_count++; + return error; } - /* Check the input RT60 values */ - if ( ( pRoom_acoustics->pAcoustic_rt60[band_idx] > ACOUSTIC_RT60_MAX ) || ( pRoom_acoustics->pAcoustic_rt60[band_idx] < ACOUSTIC_RT60_MIN ) ) + if ( addFlag ) { - tab_value_err_count++; + if ( ( error = read_bin_code_word( this, RC_LUT_MICRO_SEC, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult += value; } + } - /* Check the input DSR values */ - if ( ( pRoom_acoustics->pAcoustic_dsr[band_idx] > ACOUSTIC_DSR_MAX ) || ( pRoom_acoustics->pAcoustic_dsr[band_idx] < ACOUSTIC_DSR_MIN ) ) - { - tab_value_err_count++; - } + /* Seconds */ + if ( ( error = read_bin_bool( this, &addFlag ) ) != IVAS_ERR_OK ) + { + return error; + } - /* Replace zero DSR values with very small positive values, to avoid issues with coloration filter design */ - if ( pRoom_acoustics->pAcoustic_dsr[band_idx] <= 0.0f ) + if ( addFlag ) + { + if ( ( error = read_bin_code_word( this, RC_LUT_SEC, &value ) ) != IVAS_ERR_OK ) { - pRoom_acoustics->pAcoustic_dsr[band_idx] = ACOUSTIC_DSR_EPSILON; + return error; } + *pResult += value; } - if ( tab_value_err_count != 0 ) + /* Correct rounding errors due to multiple additions: */ + *pResult = roundf( *pResult * 100000.0f ) / 100000.0f; + + return IVAS_ERR_OK; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_bin_frequency() + * Gets a frequency value + *-----------------------------------------------------------------------------------------*/ +static ivas_error get_bin_frequency( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + float *pResult /* o : Frequency value */ +) +{ + ivas_error error; + uint32_t hiRes; + uint32_t refine; + + hiRes = 0; + refine = 0; + + if ( ( error = read_bin_code_word( this, RC_LUT_FREQ, pResult ) ) != IVAS_ERR_OK ) { - return IVAS_ERR_WRONG_PARAMS; + return error; } -#ifdef DEBUGGING - /* Specific limits for Jot reverb */ - if ( hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_CREND ) + if ( ( error = read_bin_bool( this, &hiRes ) ) != IVAS_ERR_OK ) { - if ( ( pRoom_acoustics->acousticPreDelay > ACOUSTICPREDELAY_JOTREV_MAX ) || ( pRoom_acoustics->acousticPreDelay < ACOUSTICPREDELAY_JOTREV_MIN ) ) - { - return IVAS_ERR_WRONG_PARAMS; - } + return error; } - /* Specific limits for frequency-domain reverb */ - if ( hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV ) + if ( hiRes ) { - if ( ( pRoom_acoustics->acousticPreDelay > ACOUSTICPREDELAY_FDREV_MAX ) || ( pRoom_acoustics->acousticPreDelay < ACOUSTICPREDELAY_FDREV_MIN ) ) + if ( ( error = read_bin_bits( this, &refine, 4 ) ) != IVAS_ERR_OK ) { - return IVAS_ERR_WRONG_PARAMS; + return error; } - } -#endif /* DEBUGGING */ + *pResult *= powf( 2.0f, ( (float) refine + 1.0f ) / 51.0f ); + } return IVAS_ERR_OK; } +/*-----------------------------------------------------------------------------------------* + * Function get_bin_dsr() + * Gets a DSR value + *-----------------------------------------------------------------------------------------*/ +static ivas_error get_bin_dsr( + RenderConfigReader *this, /* i/o : Renderer config reader handle */ + float *pResult /* o : DSR value */ +) +{ + ivas_error error; + float value; -/*------------------------------------------------------------------------------------------* + if ( ( error = read_bin_code_word( this, RC_LUT_DSR, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult = powf( 10.0f, value / 10.0f ); + + return IVAS_ERR_OK; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_bin_distance() + * Gets a distance value (in meters) + *-----------------------------------------------------------------------------------------*/ + +static ivas_error get_bin_distance( + RenderConfigReader *this, /* i/o : Render config reader handle */ + uint16_t isSmall, /* i : Flag indicating a small distance */ + float *pResult /* o : Distance value */ +) +{ + ivas_error error; + float value; + uint32_t flag; + + if ( ( error = read_bin_code_word( this, RC_LUT_METERS, pResult ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( isSmall == false ) + { + /* addHectometers flag */ + if ( ( error = read_bin_bool( this, &flag ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( flag == true ) + { + /* Hectometers */ + if ( ( error = read_bin_code_word( this, RC_LUT_HECTOMETERS, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult += value * 100.0f; + + /* addKilometers flag */ + if ( ( error = read_bin_bool( this, &flag ) ) != IVAS_ERR_OK ) + { + return error; + } + + while ( flag == true ) + { + /* Kilometers */ + if ( ( error = read_bin_code_word( this, RC_LUT_KILOMETERS, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult += value * 1000.0f; + + /* addKilometers flag */ + if ( ( error = read_bin_bool( this, &flag ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + } + + /* addCentimeters flag */ + if ( ( error = read_bin_bool( this, &flag ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( flag == true ) + { + /* Centimeters */ + if ( ( error = read_bin_code_word( this, RC_LUT_CENTIMETERS, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + *pResult += value * 0.01f; + } + + return IVAS_ERR_OK; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_bin_absorption() + * Gets an absorption value + *-----------------------------------------------------------------------------------------*/ + +static ivas_error get_bin_absorption( + RenderConfigReader *this, /* i/o : Render config reader handle */ + float *pResult /* o : Absorption value */ +) +{ + ivas_error error; + + if ( ( error = read_bin_code_word( this, RC_LUT_ABSORPTION, pResult ) ) != IVAS_ERR_OK ) + { + return error; + } + + return IVAS_ERR_OK; +} + +/*-----------------------------------------------------------------------------------------* + * Function read_txt_bool() + * Reads a boolean value from a line + *-----------------------------------------------------------------------------------------*/ +static ivas_error read_txt_bool( + const char *pLine, /* i : String to read from */ + uint32_t *pTarget /* o : Output pointer */ +) +{ + char value[8 + 1]; + + if ( sscanf( pLine, "%8s", (char *) &value ) != 1 ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + if ( strcmp( value, "TRUE" ) == 0 ) + { + *pTarget = TRUE; + return IVAS_ERR_OK; + } + if ( strcmp( value, "FALSE" ) == 0 ) + { + *pTarget = FALSE; + return IVAS_ERR_OK; + } + return IVAS_ERR_INVALID_RENDER_CONFIG; +} +/*-----------------------------------------------------------------------------------------* + * Function get_bin_angle() + * Gets an angle value in degrees [0,360] + *-----------------------------------------------------------------------------------------*/ + +static ivas_error get_bin_angle( + RenderConfigReader *this, /* i/o : Render config reader handle */ + float *pResult /* o : Angle value */ +) +{ + ivas_error error; + uint32_t value; + + if ( ( error = read_bin_bits( this, &value, 5 ) ) != IVAS_ERR_OK ) + { + return error; + } + + *pResult = usdequant( (int16_t) value, 0.0f, 20.0f ); + + return IVAS_ERR_OK; +} + +/*-----------------------------------------------------------------------------------------* + * Function get_bin_outer_attenuation () + * Gets an outer attenuation value [3.1623e-05,1.0], or in dB: [-90,0] + *-----------------------------------------------------------------------------------------*/ + +static ivas_error get_bin_outer_attenuation( + RenderConfigReader *this, /* i/o : Render config reader handle */ + float *pResult /* o : Attenuation value */ +) +{ + ivas_error error; + uint32_t value; + float logval, att; + + if ( ( error = read_bin_bits( this, &value, 5 ) ) != IVAS_ERR_OK ) + { + return error; + } + + logval = usdequant( (int16_t) value, -90.0f, 3.0f ); + att = powf( 10, logval / 20.0f ); + + *pResult = att; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function read_txt_vector() + * + * Reads a vector value from a line + *-----------------------------------------------------------------------------------------*/ + +static int16_t read_txt_vector( + char *pLine, /* i : String to read from */ + const uint32_t length, /* i : Number of expected vector elements */ + float *pTarget /* o : Output vector pointer */ +) +{ + char *tmp; + uint16_t n; + uint16_t count; + + n = (int16_t) sscanf( pLine, "[%s", pLine ); + if ( n == 0 ) + { + return true; + } + + /* Additional comma to make parsing easier */ + pLine[strlen( pLine ) - 1] = ','; + + tmp = pLine; + /* Count # of commas to determine vector length */ + for ( n = 0; tmp[n]; tmp[n] == ',' ? n++ : *tmp++ ) + ; + + count = n; + + tmp = pLine; + + /* Check for maximum vector length */ + if ( n != length ) + { + return true; + } + + for ( n = 0; n < count; n++ ) + { + if ( (int16_t) sscanf( tmp, "%f,", &pTarget[n] ) != 1 ) + { + return true; + } + + tmp = strchr( tmp, ',' ) + 1; + } + + return false; +} + +/*-----------------------------------------------------------------------------------------* + * Function strip_spaces() + * + * Strips the spaces from a buffer + *-----------------------------------------------------------------------------------------*/ + +static void strip_spaces( + char *pStr /* i : String to read from */ +) +{ + int32_t read_idx = 0, write_idx = 0; + + 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]; + } + read_idx++; + } + pStr[write_idx] = '\0'; + + return; +} + + +/*-----------------------------------------------------------------------------------------* + * Function errorHandler() + * + * Prints error message and exits + *-----------------------------------------------------------------------------------------*/ + +/*! r: error accumulation */ +static int32_t errorHandler( + const char *badStr, /* i : String to complain about */ + const ERROR_CODES_t error ) +{ + static int32_t numErrors = 0; + + switch ( error ) + { + case ERROR_NONE: + break; + case ERROR_ITEM_UNKNOWN: + numErrors++; + fprintf( stderr, "Unknown variable %s in renderer configuration file.\n\n", badStr ); + break; + case ERROR_VALUE_INVALID: + numErrors++; + fprintf( stderr, "Invalid value %s in renderer configuration file.\n\n", badStr ); + break; + default: + numErrors++; + fprintf( stderr, "Unknown error while reading configuration file.\n\n" ); + } + + return numErrors; +} + +/*------------------------------------------------------------------------------------------* + * RenderConfigReader_checkValues() + * + * Verifies if the configuration parameters lie within acceptable limits + *------------------------------------------------------------------------------------------*/ + +ivas_error RenderConfigReader_checkValues( + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +) +{ + int16_t band_idx, tab_value_err_count; + IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pRoom_acoustics; + pRoom_acoustics = &hRenderConfig->room_acoustics; + tab_value_err_count = 0; + int16_t wall_idx; + + + /* Verify the number of frequency bands in the config input data */ + if ( ( pRoom_acoustics->nBands > N_BANDS_MAX ) || ( pRoom_acoustics->nBands < N_BANDS_MIN ) ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + /* Verify input pre-delay value */ + if ( ( pRoom_acoustics->inputPreDelay > INPUTPREDELAY_MAX ) || ( pRoom_acoustics->inputPreDelay < INPUTPREDELAY_MIN ) ) + { + return IVAS_ERR_WRONG_PARAMS; + } + + /* Verify data per band in the acoustic properties table */ + for ( band_idx = 0; band_idx < pRoom_acoustics->nBands; band_idx++ ) + { + /* Verify if the frequencies are in the ascending order (required for interpolation) */ + if ( band_idx != 0 ) + { + if ( pRoom_acoustics->pFc_input[band_idx] <= pRoom_acoustics->pFc_input[band_idx - 1] ) + { + tab_value_err_count++; + } + } + + /* Check the input frequencies */ + if ( ( pRoom_acoustics->pFc_input[band_idx] > FC_INPUT_MAX ) || ( pRoom_acoustics->pFc_input[band_idx] < FC_INPUT_MIN ) ) + { + tab_value_err_count++; + } + + /* Check the input RT60 values */ + if ( ( pRoom_acoustics->pAcoustic_rt60[band_idx] > ACOUSTIC_RT60_MAX ) || ( pRoom_acoustics->pAcoustic_rt60[band_idx] < ACOUSTIC_RT60_MIN ) ) + { + tab_value_err_count++; + } + + /* Check the input DSR values */ + if ( ( pRoom_acoustics->pAcoustic_dsr[band_idx] > ACOUSTIC_DSR_MAX ) || ( pRoom_acoustics->pAcoustic_dsr[band_idx] < ACOUSTIC_DSR_MIN ) ) + { + tab_value_err_count++; + } + + /* Replace zero DSR values with very small positive values, to avoid issues with coloration filter design */ + if ( pRoom_acoustics->pAcoustic_dsr[band_idx] <= 0.0f ) + { + pRoom_acoustics->pAcoustic_dsr[band_idx] = ACOUSTIC_DSR_EPSILON; + } + } + + if ( tab_value_err_count != 0 ) + { + return IVAS_ERR_WRONG_PARAMS; + } + +#ifdef DEBUGGING + /* Specific limits for Jot reverb */ + if ( hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_CREND ) + { + if ( ( pRoom_acoustics->acousticPreDelay > ACOUSTICPREDELAY_JOTREV_MAX ) || ( pRoom_acoustics->acousticPreDelay < ACOUSTICPREDELAY_JOTREV_MIN ) ) + { + return IVAS_ERR_WRONG_PARAMS; + } + } + + /* Specific limits for frequency-domain reverb */ + if ( hRenderConfig->renderer_type_override == IVAS_RENDER_TYPE_OVERRIDE_FASTCONV ) + { + if ( ( pRoom_acoustics->acousticPreDelay > ACOUSTICPREDELAY_FDREV_MAX ) || ( pRoom_acoustics->acousticPreDelay < ACOUSTICPREDELAY_FDREV_MIN ) ) + { + return IVAS_ERR_WRONG_PARAMS; + } + } +#endif /* DEBUGGING */ + + + if ( pRoom_acoustics->use_er == 1 ) + { + /* Room dimensions */ + if ( pRoom_acoustics->dimensions.x < ER_MIN_ROOM_DIMENSION ) + { + pRoom_acoustics->dimensions.x = ER_MIN_ROOM_DIMENSION; + } + if ( pRoom_acoustics->dimensions.x > ER_MAX_ROOM_DIMENSION ) + { + pRoom_acoustics->dimensions.x = ER_MAX_ROOM_DIMENSION; + } + if ( pRoom_acoustics->dimensions.y < ER_MIN_ROOM_DIMENSION ) + { + pRoom_acoustics->dimensions.y = ER_MIN_ROOM_DIMENSION; + } + if ( pRoom_acoustics->dimensions.y > ER_MAX_ROOM_DIMENSION ) + { + pRoom_acoustics->dimensions.y = ER_MAX_ROOM_DIMENSION; + } + if ( pRoom_acoustics->dimensions.z < ER_MIN_ROOM_DIMENSION ) + { + pRoom_acoustics->dimensions.z = ER_MIN_ROOM_DIMENSION; + } + if ( pRoom_acoustics->dimensions.z > ER_MAX_ROOM_DIMENSION ) + { + pRoom_acoustics->dimensions.z = ER_MAX_ROOM_DIMENSION; + } + + /* Abs Coeff */ + for ( wall_idx = 0; wall_idx < ER_ABS_COEFF; wall_idx++ ) + { + if ( pRoom_acoustics->AbsCoeff[wall_idx] < ER_MIN_ABS_COEFF ) + { + pRoom_acoustics->AbsCoeff[wall_idx] = ER_MIN_ABS_COEFF; + } + if ( pRoom_acoustics->AbsCoeff[wall_idx] > ER_MAX_ABS_COEFF ) + { + pRoom_acoustics->AbsCoeff[wall_idx] = ER_MAX_ABS_COEFF; + } + } + } + + + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------------------------* * RenderConfigReader_open() * * Allocates and initializes a renderer configuration reader instance *------------------------------------------------------------------------------------------*/ -ivas_error RenderConfigReader_open( - char *pConfigPath, /* i : renderer configuration file path */ - RenderConfigReader **ppRenderConfigReader /* o : RenderConfigReader handle */ -) -{ - RenderConfigReader *pSelf; - FILE *pConfigFile; +ivas_error RenderConfigReader_open( + char *pConfigPath, /* i : renderer configuration file path */ + RenderConfigReader **ppRenderConfigReader /* o : RenderConfigReader handle */ +) +{ + RenderConfigReader *pSelf; + FILE *pConfigFile; + + /* Open the configuration file */ + if ( strlen( pConfigPath ) < 1 ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + pConfigFile = fopen( pConfigPath, "r" ); + + if ( !pConfigFile ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + pSelf = calloc( sizeof( RenderConfigReader ), 1 ); + pSelf->pConfigFile = pConfigFile; + pSelf->nFG = 0; + pSelf->pFG = NULL; + pSelf->nAE = 0; + pSelf->pAE = NULL; + pSelf->nDP = 0; + pSelf->pDP = NULL; + + *ppRenderConfigReader = pSelf; + return IVAS_ERR_OK; +} + + +/*------------------------------------------------------------------------------------------* + * RenderConfigReader_readBinary() + * + * Reads the binary configuration from a file + *------------------------------------------------------------------------------------------*/ + +static ivas_error RenderConfigReader_readBinary( + const char *pReverbConfigPath, /* i : Configuration file path */ + RenderConfigReader *pRenderConfigReader /* i/o: RenderConfigReader handle */ +) +{ + uint32_t file_size; + uint32_t value; + uint32_t signx, signy, k; + uint32_t i, m, n; + uint32_t nFG, nAE; + uint32_t nDP; + ivas_error error; + float freqHop; + uint32_t gridLen; + uint32_t subGridLen; + const float *pGrid; + FILE *pReverbConfigFile; + + /* Open the configuration file */ + pReverbConfigFile = fopen( pReverbConfigPath, "rb" ); + + if ( !pReverbConfigFile ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + /* Read the bitstream */ + fseek( pReverbConfigFile, 0, SEEK_END ); + file_size = ftell( pReverbConfigFile ); + rewind( pReverbConfigFile ); + + pRenderConfigReader->pBitstream = (uint8_t *) malloc( file_size * sizeof( uint8_t ) ); + if ( pRenderConfigReader->pBitstream == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + fread( pRenderConfigReader->pBitstream, sizeof( uint8_t ), file_size, pReverbConfigFile ); + pRenderConfigReader->length = file_size; +#ifdef API_5MS + /* we read the config twice in the decoder, so reset the read offset here */ + pRenderConfigReader->readOffset = 0; +#endif + + /****************************/ + /* Read the presence flag */ + /****************************/ + if ( ( error = read_bin_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + /* acoustic environment data available */ + if ( value == true ) + { + /****************************/ + /* Read the frequency grids */ + /****************************/ + + /* Number of frequency grids */ + if ( ( error = get_bin_count_or_index( pRenderConfigReader, &nFG ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Allocate memory for the frequency grids */ + if ( nFG > 0 ) + { + if ( pRenderConfigReader->nFG > 0 ) + { + for ( n = 0; n < pRenderConfigReader->nFG; n++ ) + { + free( pRenderConfigReader->pFG[n].pFc ); + } + free( pRenderConfigReader->pFG ); + } + pRenderConfigReader->nFG = nFG; + if ( ( pRenderConfigReader->pFG = (FrequencyGrid *) malloc( pRenderConfigReader->nFG * sizeof( FrequencyGrid ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + for ( n = 0; n < nFG; n++ ) + { + /* Initialize memory pointers to allow safe freeing ico errors */ + pRenderConfigReader->pFG[n].pFc = NULL; + } + } + + /* Loop through the frequency grids read from the binary stream */ + for ( n = 0; n < nFG; n++ ) + { + /* Read the representation method */ + value = 0; + if ( ( error = read_bin_bits( pRenderConfigReader, &value, 2 ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Process depending on the representation method */ + switch ( value ) + { + case FREQ_GRID_MODE_INDIVIDUAL_FREQUENCIES: + if ( ( error = get_bin_count_or_index( pRenderConfigReader, &pRenderConfigReader->pFG[n].nrBands ) ) != IVAS_ERR_OK ) + { + return error; + } + /* Allocate memory for the center frequency array */ + if ( ( pRenderConfigReader->pFG[n].pFc = (float *) malloc( pRenderConfigReader->pFG[n].nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + /* Read the individual frequencies */ + for ( m = 0; m < pRenderConfigReader->pFG[n].nrBands; m++ ) + { + if ( ( error = get_bin_frequency( pRenderConfigReader, &pRenderConfigReader->pFG[n].pFc[m] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + break; + case FREQ_GRID_MODE_START_HOP_AMOUNT: + if ( ( error = get_bin_count_or_index( pRenderConfigReader, &pRenderConfigReader->pFG[n].nrBands ) ) != IVAS_ERR_OK ) + { + return error; + } + /* Allocate memory for the center frequency array */ + if ( ( pRenderConfigReader->pFG[n].pFc = (float *) malloc( pRenderConfigReader->pFG[n].nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + /* Read the first frequency */ + if ( ( error = get_bin_frequency( pRenderConfigReader, &pRenderConfigReader->pFG[n].pFc[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + /* Read frequency hop from LUT */ + if ( ( error = read_bin_code_word( pRenderConfigReader, RC_LUT_FREQ_HOP, &freqHop ) ) != IVAS_ERR_OK ) + { + return error; + } + /* Fill up the center frequency array */ + for ( m = 1; m < pRenderConfigReader->pFG[n].nrBands; m++ ) + { + pRenderConfigReader->pFG[n].pFc[m] = pRenderConfigReader->pFG[n].pFc[m - 1] * freqHop; + } + break; + case FREQ_GRID_MODE_DEFAULT_BANDING: + /* Read the default grid ID */ + value = 0; + if ( ( error = read_bin_bits( pRenderConfigReader, &value, 4 ) ) != IVAS_ERR_OK ) + { + return error; + } + switch ( value ) + { + case 0: + gridLen = sizeof( defaultFrequencyGrid_0 ) / sizeof( defaultFrequencyGrid_0[0] ); + pGrid = defaultFrequencyGrid_0; + break; + case 1: + gridLen = sizeof( defaultFrequencyGrid_1 ) / sizeof( defaultFrequencyGrid_1[0] ); + pGrid = defaultFrequencyGrid_1; + break; + case 2: + gridLen = sizeof( defaultFrequencyGrid_2 ) / sizeof( defaultFrequencyGrid_2[0] ); + pGrid = defaultFrequencyGrid_2; + break; + case 3: + gridLen = sizeof( defaultFrequencyGrid_3 ) / sizeof( defaultFrequencyGrid_3[0] ); + pGrid = defaultFrequencyGrid_3; + break; + case 4: + gridLen = sizeof( defaultFrequencyGrid_4 ) / sizeof( defaultFrequencyGrid_4[0] ); + pGrid = defaultFrequencyGrid_4; + break; + case 5: + gridLen = sizeof( defaultFrequencyGrid_5 ) / sizeof( defaultFrequencyGrid_5[0] ); + pGrid = defaultFrequencyGrid_5; + break; + case 6: + gridLen = sizeof( defaultFrequencyGrid_6 ) / sizeof( defaultFrequencyGrid_6[0] ); + pGrid = defaultFrequencyGrid_6; + break; + case 7: + gridLen = sizeof( defaultFrequencyGrid_7 ) / sizeof( defaultFrequencyGrid_7[0] ); + pGrid = defaultFrequencyGrid_7; + break; + case 8: + gridLen = sizeof( defaultFrequencyGrid_8 ) / sizeof( defaultFrequencyGrid_8[0] ); + pGrid = defaultFrequencyGrid_8; + break; + default: + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + m = 0; + /* Read sub-grid flag */ + if ( ( error = read_bin_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( value != false ) + { + /* Read the sub-grid offset */ + if ( ( error = read_bin_bits( pRenderConfigReader, &m, 3 ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Read the sub-grid length */ + subGridLen = 0; + if ( ( error = read_bin_bits( pRenderConfigReader, &subGridLen, 6 ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( m + subGridLen > gridLen ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + gridLen = subGridLen; + } + pRenderConfigReader->pFG[n].nrBands = gridLen; + /* Allocate memory for the center frequency array */ + if ( ( pRenderConfigReader->pFG[n].pFc = (float *) malloc( gridLen * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + /* Copy the ROM content to the frequency grid*/ + for ( i = 0; i < gridLen; i++ ) + { + pRenderConfigReader->pFG[n].pFc[i] = pGrid[m + i]; + } + + break; + default: + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + /* Initialize memory pointers to allow safe freeing ico errors */ + pRenderConfigReader->pFG[n].pFc = NULL; + } + + /**********************************/ + /* Read the acoustic environments */ + /**********************************/ + + /* Number of acoustic environments */ + if ( ( error = get_bin_count_or_index( pRenderConfigReader, &nAE ) ) != IVAS_ERR_OK ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + /* Allocate memory for the acoustic environments array */ + if ( nAE > 0 ) + { + if ( pRenderConfigReader->nAE > 0 ) + { + for ( n = 0; n < pRenderConfigReader->nAE; n++ ) + { + free( pRenderConfigReader->pAE[n].pRT60 ); + free( pRenderConfigReader->pAE[n].pDSR ); + if ( pRenderConfigReader->pAE[n].pEarlyReflections != NULL ) + { + free( pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin ); + free( pRenderConfigReader->pAE[n].pEarlyReflections ); + } + } + free( pRenderConfigReader->pAE ); + } + pRenderConfigReader->nAE = nAE; + + if ( ( pRenderConfigReader->pAE = (AcousticEnv *) malloc( pRenderConfigReader->nAE * sizeof( AcousticEnv ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + /* Initialize memory pointers to allow safe freeing ico errors */ + for ( n = 0; n < nAE; n++ ) + { + pRenderConfigReader->pAE[n].pRT60 = NULL; + pRenderConfigReader->pAE[n].pDSR = NULL; + pRenderConfigReader->pAE[n].pEarlyReflections = NULL; + } + } + + /* Loop through the acoustic environments from the binary stream */ + for ( n = 0; n < nAE; n++ ) + { + /* Read the AE ID */ + if ( ( error = get_bin_id( pRenderConfigReader, &pRenderConfigReader->pAE[n].id ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Read the frequency grid ID */ + if ( ( error = get_bin_count_or_index( pRenderConfigReader, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + + /* Associate the frequency grid */ + if ( value >= pRenderConfigReader->nFG ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + pRenderConfigReader->pAE[n].pFG = &( pRenderConfigReader->pFG[value] ); + + /* Allocate memory for RT60 and DSR arrays */ + if ( ( pRenderConfigReader->pAE[n].pRT60 = (float *) malloc( pRenderConfigReader->pAE[n].pFG->nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + if ( ( pRenderConfigReader->pAE[n].pDSR = (float *) malloc( pRenderConfigReader->pAE[n].pFG->nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + /* Read the values */ + if ( ( error = get_bin_duration( pRenderConfigReader, &pRenderConfigReader->pAE[n].preDelay ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( m = 0; m < pRenderConfigReader->pAE[n].pFG->nrBands; m++ ) + { + if ( ( error = get_bin_duration( pRenderConfigReader, &pRenderConfigReader->pAE[n].pRT60[m] ) ) != IVAS_ERR_OK ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + } + for ( m = 0; m < pRenderConfigReader->pAE[n].pFG->nrBands; m++ ) + { + if ( ( error = get_bin_dsr( pRenderConfigReader, &pRenderConfigReader->pAE[n].pDSR[m] ) ) != IVAS_ERR_OK ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + } + + /*****************************************/ + /* Read the early reflections parameters */ + /*****************************************/ + + /* Has early reflections */ + if ( ( error = read_bin_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( value == true ) + { + if ( ( pRenderConfigReader->pAE[n].pEarlyReflections = (EarlyReflectionsConfig *) malloc( sizeof( EarlyReflectionsConfig ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + /* Initialize memory pointers to allow safe freeing ico eg errors */ + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin = NULL; + + pRenderConfigReader->pAE[n].pEarlyReflections->use_er = 1; + + /* Room sizes */ + if ( ( error = get_bin_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->dimensions.x ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = get_bin_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->dimensions.y ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = get_bin_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->dimensions.z ) ) != IVAS_ERR_OK ) + { + return error; + } + + for ( k = 0; k < N_ABS_COEFFS; k++ ) + { + if ( ( error = get_bin_absorption( pRenderConfigReader, &pRenderConfigReader->pAE[n].pEarlyReflections->pAbsCoeff[k] ) ) != IVAS_ERR_OK ) + { + return error; + } + } + + /* Has listener origin */ + if ( ( error = read_bin_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK ) + { + return error; + } + + if ( value == true ) + { + if ( ( pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin = malloc( sizeof( IVAS_VECTOR3 ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + if ( ( error = read_bin_bits( pRenderConfigReader, &signx, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = read_bin_bits( pRenderConfigReader, &signy, 1 ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = get_bin_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->x ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( signx == 0 ) + { + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->x *= -1.0f; + } + if ( ( error = get_bin_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->y ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( signy == 0 ) + { + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->y *= -1.0f; + } + if ( ( error = get_bin_distance( pRenderConfigReader, true, &pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->z ) ) != IVAS_ERR_OK ) + { + return error; + } + } + else /* load defaults if origin is not specified in config */ + { + if ( ( pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin = malloc( sizeof( IVAS_VECTOR3 ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->x = ER_LIST_ORIGIN_X; + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->y = ER_LIST_ORIGIN_Y; + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->z = ER_LIST_HEIGHT; + } + + /* Low complexity mode */ + if ( ( error = read_bin_bool( pRenderConfigReader, &pRenderConfigReader->pAE[n].pEarlyReflections->lowComplexity ) ) != IVAS_ERR_OK ) + { + return error; + } + } + } + } + /**********************************/ + /* Read the directivity patterns */ + /**********************************/ - /* Open the configuration file */ - if ( strlen( pConfigPath ) < 1 ) + /* Has source directivity */ + if ( ( error = read_bin_bool( pRenderConfigReader, &value ) ) != IVAS_ERR_OK ) { - return IVAS_ERR_FAILED_FILE_OPEN; + return error; } + if ( value == true ) + { - pConfigFile = fopen( pConfigPath, "r" ); + /* Number of directivity patterns */ + if ( ( error = get_bin_id( pRenderConfigReader, &nDP ) ) != IVAS_ERR_OK ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } - if ( !pConfigFile ) - { - return IVAS_ERR_FAILED_FILE_OPEN; + if ( nDP > 0 ) + { + if ( pRenderConfigReader->nDP > 0 ) + { + for ( n = 0; n < pRenderConfigReader->nDP; n++ ) + { + free( pRenderConfigReader->pDP[n].pDirectivity ); + } + free( pRenderConfigReader->pDP ); + } + + pRenderConfigReader->nDP = nDP; + + if ( ( pRenderConfigReader->pDP = (DirectrivityPat *) malloc( pRenderConfigReader->nDP * sizeof( DirectrivityPat ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + for ( n = 0; n < nDP; n++ ) + { + /* Allocate memory for directivity arrays*/ + if ( ( pRenderConfigReader->pDP[n].pDirectivity = (float *) malloc( 3 * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + } + } + /* Loop through the directivity patterns from the binary stream */ + for ( n = 0; n < nDP; n++ ) + { + + /* Read the Directivity ID */ + if ( ( error = get_bin_id( pRenderConfigReader, &pRenderConfigReader->pDP[n].id ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = get_bin_angle( pRenderConfigReader, &pRenderConfigReader->pDP[n].pDirectivity[0] ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = get_bin_angle( pRenderConfigReader, &pRenderConfigReader->pDP[n].pDirectivity[1] ) ) != IVAS_ERR_OK ) + { + return error; + } + if ( ( error = get_bin_outer_attenuation( pRenderConfigReader, &pRenderConfigReader->pDP[n].pDirectivity[2] ) ) != IVAS_ERR_OK ) + { + return error; + } + } } - pSelf = calloc( sizeof( RenderConfigReader ), 1 ); - pSelf->pConfigFile = pConfigFile; + /* Cleanup */ + free( pRenderConfigReader->pBitstream ); - *ppRenderConfigReader = pSelf; return IVAS_ERR_OK; } -/*------------------------------------------------------------------------------------------* - * RenderConfigReader_read() - * - * Reads the configuration from a file - *------------------------------------------------------------------------------------------*/ - ivas_error RenderConfigReader_read( - RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ - IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + const char *pRenderConfigPath, /* i : Renderer configuration file path */ + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ) { int32_t file_size; @@ -369,8 +1826,30 @@ ivas_error RenderConfigReader_read( char item[MAX_ITEM_LENGTH + 1]; char chapter[MAX_ITEM_LENGTH + 1]; char *pValue; - int16_t nBandsInput; - int16_t nVectorsMissing; + ivas_error error; + int32_t params_length; + int32_t length; + uint32_t i, idx; + uint32_t nFG, nAE; + char *pToken; + FREQ_GRID_MODE fgMode; + float freqHop; + uint32_t acIdx; + uint32_t defGridId, defGridLen, defGridOffset, defGridNrBands; + const float *pDefGrid; + float erTemp[N_ABS_COEFFS]; + uint32_t roomAcHasFgCount, roomAcHasAcEnvCount; + 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; + accDPIdx = 0; fseek( pRenderConfigReader->pConfigFile, 0, SEEK_END ); file_size = ftell( pRenderConfigReader->pConfigFile ); @@ -378,8 +1857,8 @@ ivas_error RenderConfigReader_read( pConfig_str = (char *) calloc( file_size + 1, sizeof( char ) ); pParams = (char *) calloc( file_size + 1, sizeof( char ) ); pTemp = (char *) calloc( file_size + 1, sizeof( char ) ); - nBandsInput = hRenderConfig->room_acoustics.nBands; - nVectorsMissing = N_REVERB_VECTORS; + acIdx = 0; + roomAcHasFgCount = roomAcHasAcEnvCount = FALSE; /* read file line by line */ while ( fgets( pConfig_str, file_size, pRenderConfigReader->pConfigFile ) != NULL ) @@ -394,83 +1873,689 @@ ivas_error RenderConfigReader_read( read_idx = ftell( pRenderConfigReader->pConfigFile ); if ( fgets( pTemp, file_size, pRenderConfigReader->pConfigFile ) == NULL ) { - break; + break; + } + + if ( ( pTemp[0] != '#' ) && ( sscanf( pTemp, "[%64[^]]]", item ) != 1 ) ) + { + /* ignore inline comments */ + sscanf( pTemp, "%[^#]", pTemp ); + strcat( pParams, pTemp ); + } + } while ( sscanf( pTemp, "[%64[^]]]", item ) != 1 ); + + /* go back one line */ + fseek( pRenderConfigReader->pConfigFile, read_idx, SEEK_SET ); + + strip_spaces( pParams ); + strcpy( pTemp, pParams ); + to_upper( pParams ); + to_upper( chapter ); + + /* interpret params */ + pToken = strtok( chapter, ":" ); + if ( strcmp( chapter, "ROOMACOUSTICS" ) == 0 && strlen( pParams ) != 0 ) + { + params_idx = 0; + pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); + + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) + { + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#ifdef DEBUGGING + fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif + if ( strcmp( item, "FREQUENCYGRIDCOUNT" ) == 0 ) + { + /* Read the number of frequency grids */ + if ( !sscanf( pValue, "%u", &nFG ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( nFG > 0 ) + { + for ( idx = 0; idx < pRenderConfigReader->nFG; idx++ ) + { + free( pRenderConfigReader->pFG[idx].pFc ); + } + free( pRenderConfigReader->pFG ); + + pRenderConfigReader->nFG = nFG; + + /* Allocate memory for the frequency grids */ + if ( ( pRenderConfigReader->pFG = (FrequencyGrid *) malloc( pRenderConfigReader->nFG * sizeof( FrequencyGrid ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + for ( idx = 0; idx < nFG; idx++ ) + { + pRenderConfigReader->pFG[idx].nrBands = 0; + pRenderConfigReader->pFG[idx].pFc = NULL; + } + } + roomAcHasFgCount = TRUE; + } + else if ( strcmp( item, "ACOUSTICENVIRONMENTCOUNT" ) == 0 ) + { + /* Read the number of acoustic environments */ + if ( !sscanf( pValue, "%u", &nAE ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( nAE > 0 ) + { + for ( idx = 0; idx < pRenderConfigReader->nAE; idx++ ) + { + free( pRenderConfigReader->pAE[idx].pRT60 ); + free( pRenderConfigReader->pAE[idx].pDSR ); + if ( pRenderConfigReader->pAE[idx].pEarlyReflections != NULL ) + { + free( pRenderConfigReader->pAE[idx].pEarlyReflections->pListenerOrigin ); + free( pRenderConfigReader->pAE[idx].pEarlyReflections ); + } + } + free( pRenderConfigReader->pAE ); + + pRenderConfigReader->nAE = nAE; + + /* Allocate memory for the acoustic environments array */ + if ( ( pRenderConfigReader->pAE = (AcousticEnv *) malloc( pRenderConfigReader->nAE * sizeof( AcousticEnv ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + /* Initialize memory pointers to allow for safe freeing */ + for ( acIdx = 0; acIdx < pRenderConfigReader->nAE; acIdx++ ) + { + pRenderConfigReader->pAE[acIdx].pRT60 = NULL; + pRenderConfigReader->pAE[acIdx].pDSR = NULL; + pRenderConfigReader->pAE[acIdx].pEarlyReflections = NULL; + } + } + acIdx = 0; + roomAcHasAcEnvCount = TRUE; + } +#ifdef DEBUGGING + else + { + fprintf( stderr, "Rendering configuration: unsupported property %s\n", item ); + } +#endif + } +#ifdef DEBUGGING + if ( roomAcHasFgCount == FALSE ) + { + fprintf( stderr, "Renderer configuration: frequencyGridCount missing from 'roomAcoustics' chapter.\n\n" ); + } + if ( roomAcHasAcEnvCount == FALSE ) + { + fprintf( stderr, "Renderer configuration: acousticEnvironmentCount missing from 'roomAcoustics' chapter.\n\n" ); + } +#endif + if ( roomAcHasFgCount == FALSE || roomAcHasAcEnvCount == FALSE ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + free( pValue ); + } + else if ( strcmp( pToken, "FREQUENCYGRID" ) == 0 ) + { + if ( pRenderConfigReader->pFG == NULL ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + idx = strtol( strtok( NULL, ":" ), NULL, 0 ); + if ( idx >= pRenderConfigReader->nFG ) + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: frequency grid with index %d does not fit into the frequency grid array of %d elements.\n", idx, pRenderConfigReader->nFG ); +#endif + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + fgHasMethod = fgHasNBands = fgHasFreqs = fgHasDefaultGrid = fgHasStartFreq = fgHasFreqHop = FALSE; + fgMode = FREQ_GRID_MODE_UNKNOWN; + params_idx = 0; + pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) + { + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#ifdef DEBUGGING + fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif + if ( strcmp( item, "METHOD" ) == 0 ) + { + if ( strcmp( pValue, "INDIVIDUALFREQUENCIES" ) == 0 ) + { + fgMode = FREQ_GRID_MODE_INDIVIDUAL_FREQUENCIES; + } + else if ( strcmp( pValue, "STARTHOPAMOUNT" ) == 0 ) + { + fgMode = FREQ_GRID_MODE_START_HOP_AMOUNT; + } + else if ( strcmp( pValue, "DEFAULTBANDING" ) == 0 ) + { + fgMode = FREQ_GRID_MODE_DEFAULT_BANDING; + } + fgHasMethod = TRUE; + } + /* Read number of bands for individual frequency, start-hop-amount mode */ + else if ( strcmp( item, "NRBANDS" ) == 0 ) + { + if ( fgMode != FREQ_GRID_MODE_INDIVIDUAL_FREQUENCIES && fgMode != FREQ_GRID_MODE_START_HOP_AMOUNT ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( !sscanf( pValue, "%u", &pRenderConfigReader->pFG[idx].nrBands ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + /* Allocate memory for the center frequency array */ + if ( ( pRenderConfigReader->pFG[idx].pFc = (float *) malloc( pRenderConfigReader->pFG[idx].nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + fgHasNBands = TRUE; + } + else if ( strcmp( item, "FREQUENCIES" ) == 0 ) + { + if ( fgMode != FREQ_GRID_MODE_INDIVIDUAL_FREQUENCIES || pRenderConfigReader->pFG[idx].nrBands == 0 || pRenderConfigReader->pFG[idx].pFc == NULL ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + /* Read the individual frequencies */ + if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pFG[idx].pFc ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + fgHasFreqs = TRUE; + } + else if ( strcmp( item, "STARTFREQUENCY" ) == 0 ) + { + if ( fgMode != FREQ_GRID_MODE_START_HOP_AMOUNT || pRenderConfigReader->pFG[idx].nrBands == 0 || pRenderConfigReader->pFG[idx].pFc == NULL ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( !sscanf( pValue, "%f", &pRenderConfigReader->pFG[idx].pFc[0] ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + fgHasStartFreq = TRUE; + } + else if ( strcmp( item, "FREQUENCYHOP" ) == 0 ) + { + if ( fgMode != FREQ_GRID_MODE_START_HOP_AMOUNT || pRenderConfigReader->pFG[idx].nrBands == 0 || pRenderConfigReader->pFG[idx].pFc == NULL || pRenderConfigReader->pFG[idx].pFc[0] == 0.0f ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( !sscanf( pValue, "%f", &freqHop ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + /* Fill up the center frequency array */ + for ( i = 1; i < pRenderConfigReader->pFG[idx].nrBands; i++ ) + { + pRenderConfigReader->pFG[idx].pFc[i] = pRenderConfigReader->pFG[idx].pFc[i - 1] * freqHop; + } + fgHasFreqHop = TRUE; + } + /* Handle default grids, with optional sub-grids */ + else if ( strcmp( item, "DEFAULTGRID" ) == 0 ) + { + if ( !sscanf( pValue, "%u", &defGridId ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + + switch ( defGridId ) + { + case 0: + defGridLen = sizeof( defaultFrequencyGrid_0 ) / sizeof( defaultFrequencyGrid_0[0] ); + pDefGrid = defaultFrequencyGrid_0; + break; + case 1: + defGridLen = sizeof( defaultFrequencyGrid_1 ) / sizeof( defaultFrequencyGrid_1[0] ); + pDefGrid = defaultFrequencyGrid_1; + break; + case 2: + defGridLen = sizeof( defaultFrequencyGrid_2 ) / sizeof( defaultFrequencyGrid_2[0] ); + pDefGrid = defaultFrequencyGrid_2; + break; + case 3: + defGridLen = sizeof( defaultFrequencyGrid_3 ) / sizeof( defaultFrequencyGrid_3[0] ); + pDefGrid = defaultFrequencyGrid_3; + break; + case 4: + defGridLen = sizeof( defaultFrequencyGrid_4 ) / sizeof( defaultFrequencyGrid_4[0] ); + pDefGrid = defaultFrequencyGrid_4; + break; + case 5: + defGridLen = sizeof( defaultFrequencyGrid_5 ) / sizeof( defaultFrequencyGrid_5[0] ); + pDefGrid = defaultFrequencyGrid_5; + break; + case 6: + defGridLen = sizeof( defaultFrequencyGrid_6 ) / sizeof( defaultFrequencyGrid_6[0] ); + pDefGrid = defaultFrequencyGrid_6; + break; + case 7: + defGridLen = sizeof( defaultFrequencyGrid_7 ) / sizeof( defaultFrequencyGrid_7[0] ); + pDefGrid = defaultFrequencyGrid_7; + break; + case 8: + defGridLen = sizeof( defaultFrequencyGrid_8 ) / sizeof( defaultFrequencyGrid_8[0] ); + pDefGrid = defaultFrequencyGrid_8; + break; + default: + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + fgHasDefaultGrid = TRUE; + + /* Handle sub-grids */ + defGridOffset = 0; + defGridNrBands = defGridLen; + + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) + { + if ( strcmp( item, "DEFAULTGRIDOFFSET" ) == 0 ) + { + if ( !sscanf( pValue, "%u", &defGridOffset ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + } + else if ( strcmp( item, "DEFAULTGRIDNRBANDS" ) == 0 ) + { + if ( !sscanf( pValue, "%u", &defGridNrBands ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + } + else + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: unsupported property %s\n", item ); +#endif + break; + } + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); + } + + if ( defGridOffset + defGridNrBands > defGridLen ) + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: invalid default banding selection.\n\n" ); +#endif + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + pRenderConfigReader->pFG[idx].nrBands = defGridNrBands; + + /* Allocate memory for the center frequency array */ + if ( ( pRenderConfigReader->pFG[idx].pFc = (float *) malloc( defGridNrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + /* Copy the ROM content to the frequency grid*/ + for ( i = 0; i < defGridNrBands; i++ ) + { + pRenderConfigReader->pFG[idx].pFc[i] = pDefGrid[defGridOffset + i]; + } + } +#ifdef DEBUGGING + else + { + fprintf( stderr, "Rendering configuration: unsupported configuration property %s\n", item ); + } +#endif + } + if ( fgHasMethod == FALSE || + ( fgMode == FREQ_GRID_MODE_INDIVIDUAL_FREQUENCIES && ( fgHasFreqs == FALSE || fgHasNBands == FALSE ) ) || + ( fgMode == FREQ_GRID_MODE_DEFAULT_BANDING && fgHasDefaultGrid == FALSE ) || + ( fgMode == FREQ_GRID_MODE_START_HOP_AMOUNT && ( fgHasStartFreq == FALSE || fgHasFreqHop == FALSE || fgHasNBands == FALSE ) ) ) + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: inconsistent default frequency band configuration.\n\n" ); +#endif + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + free( pValue ); + } + /* Handle multiple acoustic environments */ + else if ( strcmp( pToken, "ACOUSTICENVIRONMENT" ) == 0 ) + { + if ( pRenderConfigReader->pAE == NULL || acIdx >= pRenderConfigReader->nAE ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + idx = strtol( strtok( NULL, ":" ), NULL, 0 ); + pRenderConfigReader->pAE->id = idx; + + aeHasFgIdx = aeHasPredelay = aeHasRt60 = aeHasDsr = FALSE; + aeHasERsize = aeHasERabs = FALSE; + params_idx = 0; + pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) + { + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#ifdef DEBUGGING + fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif + /* Frequency grid index */ + if ( strcmp( item, "FREQUENCYGRIDINDEX" ) == 0 ) + { + if ( !sscanf( pValue, "%u", &i ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( i > pRenderConfigReader->nFG || &pRenderConfigReader->pFG[i] == NULL ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + pRenderConfigReader->pAE[acIdx].pFG = &pRenderConfigReader->pFG[i]; + + /* Allocate memory for RT60 and DSR arrays */ + if ( ( pRenderConfigReader->pAE[acIdx].pRT60 = (float *) malloc( pRenderConfigReader->pAE[acIdx].pFG->nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + if ( ( pRenderConfigReader->pAE[acIdx].pDSR = (float *) malloc( pRenderConfigReader->pAE[acIdx].pFG->nrBands * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + aeHasFgIdx = TRUE; + } + + /* Acoustic pre-delay */ + else if ( strcmp( item, "ACOUSTICPREDELAY" ) == 0 ) + { + if ( !sscanf( pValue, "%f", &hRenderConfig->room_acoustics.acousticPreDelay ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } + /* Pre-delay */ + else if ( strcmp( item, "PREDELAY" ) == 0 ) + { + if ( !sscanf( pValue, "%f", &pRenderConfigReader->pAE[acIdx].preDelay ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + aeHasPredelay = TRUE; + } + /* RT60 */ + else if ( strcmp( item, "RT60" ) == 0 ) + { + if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pAE[acIdx].pRT60 ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + aeHasRt60 = TRUE; + } + /* DSR */ + else if ( strcmp( item, "DSR" ) == 0 ) + { + if ( read_txt_vector( pValue, pRenderConfigReader->pFG[idx].nrBands, pRenderConfigReader->pAE[acIdx].pDSR ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + aeHasDsr = TRUE; + } + else if ( strcmp( item, "EARLYREFLECTIONSSIZE" ) == 0 ) + { + if ( pRenderConfigReader->pAE[acIdx].pEarlyReflections == NULL ) + { + if ( ( pRenderConfigReader->pAE[acIdx].pEarlyReflections = (EarlyReflectionsConfig *) malloc( sizeof( EarlyReflectionsConfig ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin = NULL; + pRenderConfigReader->pAE[acIdx].pEarlyReflections->lowComplexity = FALSE; + } + if ( strcmp( item, "EARLYREFLECTIONSSIZE" ) == 0 ) + { + if ( read_txt_vector( pValue, 3, erTemp ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + pRenderConfigReader->pAE[acIdx].pEarlyReflections->dimensions.x = erTemp[0]; + pRenderConfigReader->pAE[acIdx].pEarlyReflections->dimensions.y = erTemp[1]; + pRenderConfigReader->pAE[acIdx].pEarlyReflections->dimensions.z = erTemp[2]; + aeHasERsize = TRUE; + } + } + else if ( strcmp( item, "ABSORPTIONCOEFFS" ) == 0 ) + { + if ( pRenderConfigReader->pAE[acIdx].pEarlyReflections == NULL ) + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: early reflections absorption coefficients specified without room size preceding.\n\n" ); +#endif + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( read_txt_vector( pValue, N_ABS_COEFFS, erTemp ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + for ( i = 0; i < N_ABS_COEFFS; i++ ) + { + pRenderConfigReader->pAE[acIdx].pEarlyReflections->pAbsCoeff[i] = erTemp[i]; + } + aeHasERabs = TRUE; + } + else if ( strcmp( item, "LISTENERORIGIN" ) == 0 ) + { + if ( pRenderConfigReader->pAE[acIdx].pEarlyReflections == NULL ) + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: early reflections listener origin specified without room size preceding.\n\n" ); +#endif + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( read_txt_vector( pValue, 3, erTemp ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( ( pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin = malloc( sizeof( IVAS_VECTOR3 ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin->x = erTemp[0]; + pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin->y = erTemp[1]; + pRenderConfigReader->pAE[acIdx].pEarlyReflections->pListenerOrigin->z = erTemp[2]; + } + else if ( strcmp( item, "LOWCOMPLEXITY" ) == 0 ) + { + if ( pRenderConfigReader->pAE[acIdx].pEarlyReflections == NULL ) + { +#ifdef DEBUGGING + fprintf( stderr, "Rendering configuration: early reflections low complexity flag specified without room size preceding.\n\n" ); +#endif + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( read_txt_bool( pValue, &pRenderConfigReader->pAE[acIdx].pEarlyReflections->lowComplexity ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + } +#ifdef DEBUGGING + else + { + fprintf( stderr, "Rendering configuration: unsupported configuration property %s\n", item ); + } +#endif + } +#ifdef DEBUGGING + if ( aeHasFgIdx == FALSE ) + { + fprintf( stderr, "Renderer configuration: frequencyGridIndex missing from 'acousticEnvironment' %d.\n\n", acIdx ); } - - if ( ( pTemp[0] != '#' ) && ( sscanf( pTemp, "[%64[^]]]", item ) != 1 ) ) + if ( aeHasPredelay == FALSE ) { - /* ignore inline comments */ - sscanf( pTemp, "%[^#]", pTemp ); - strcat( pParams, pTemp ); + fprintf( stderr, "Renderer configuration: predelay missing from 'acousticEnvironment' %d.\n\n", acIdx ); + } + if ( aeHasRt60 == FALSE ) + { + fprintf( stderr, "Renderer configuration: RT60 missing from 'acousticEnvironment' %d.\n\n", acIdx ); + } + if ( aeHasDsr == FALSE ) + { + fprintf( stderr, "Renderer configuration: DSR missing from 'acousticEnvironment' %d.\n\n", acIdx ); + } + if ( aeHasERsize == TRUE && aeHasERabs == FALSE ) + { + fprintf( stderr, "Renderer configuration: early reflections absorption coefficients missing from 'acousticEnvironment' %d.\n\n", acIdx ); + } +#endif + if ( aeHasFgIdx == FALSE || aeHasPredelay == FALSE || aeHasRt60 == FALSE || aeHasDsr == FALSE ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( aeHasERsize == TRUE && aeHasERabs == FALSE ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + else if ( aeHasERsize == TRUE && aeHasERabs == TRUE ) + { + pRenderConfigReader->pAE[acIdx].pEarlyReflections->use_er = 1; } - } while ( sscanf( pTemp, "[%64[^]]]", item ) != 1 ); - - /* go back one line */ - fseek( pRenderConfigReader->pConfigFile, read_idx, SEEK_SET ); - - strip_spaces_upper( pParams ); - to_upper( chapter ); - /* interpret params */ - if ( strcmp( chapter, "ROOMACOUSTICS" ) == 0 ) + free( pValue ); + acIdx++; + } +#ifdef SPLIT_REND_WITH_HEAD_ROT + else if ( strcmp( chapter, "SPLITREND" ) == 0 && strlen( pParams ) != 0 ) { params_idx = 0; pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) { - hRenderConfig->room_acoustics.override = TRUE; params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); -#ifdef DEBUGGING fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); -#endif - if ( strcmp( item, "NBANDS" ) == 0 ) + if ( strcmp( item, "CODECDELAY" ) == 0 ) { - if ( !sscanf( pValue, "%hd", &hRenderConfig->room_acoustics.nBands ) || - hRenderConfig->room_acoustics.nBands > CLDFB_NO_CHANNELS_MAX ) + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.codec_delay_ms ) ) { errorHandler( item, ERROR_VALUE_INVALID ); } } - else if ( strcmp( item, "FC" ) == 0 ) + else if ( strcmp( item, "HQMODE" ) == 0 ) { - set_zero( hRenderConfig->room_acoustics.pFc_input, CLDFB_NO_CHANNELS_MAX ); - if ( read_vector( pValue, hRenderConfig->room_acoustics.nBands, hRenderConfig->room_acoustics.pFc_input ) ) + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.hq_mode ) ) { errorHandler( item, ERROR_VALUE_INVALID ); } - nVectorsMissing--; } - else if ( strcmp( item, "RT60" ) == 0 ) + else if ( strcmp( item, "BITRATE" ) == 0 ) { - set_zero( hRenderConfig->room_acoustics.pAcoustic_rt60, CLDFB_NO_CHANNELS_MAX ); - if ( read_vector( pValue, hRenderConfig->room_acoustics.nBands, hRenderConfig->room_acoustics.pAcoustic_rt60 ) ) + if ( !sscanf( pValue, "%d", &hRenderConfig->split_rend_config.splitRendBitRate ) ) { errorHandler( item, ERROR_VALUE_INVALID ); } - nVectorsMissing--; } - else if ( strcmp( item, "DSR" ) == 0 ) + else if ( strcmp( item, "DOF" ) == 0 ) { - set_zero( hRenderConfig->room_acoustics.pAcoustic_dsr, CLDFB_NO_CHANNELS_MAX ); - if ( read_vector( pValue, hRenderConfig->room_acoustics.nBands, hRenderConfig->room_acoustics.pAcoustic_dsr ) ) + dofProvided = true; + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.dof ) ) { errorHandler( item, ERROR_VALUE_INVALID ); } - nVectorsMissing--; + /* 0 DOF implies no pose correction */ + if ( hRenderConfig->split_rend_config.dof == 0 && !poseCorrProvided ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + } } - else if ( strcmp( item, "ACOUSTICPREDELAY" ) == 0 ) + else if ( strcmp( item, "CODEC" ) == 0 ) { - if ( !sscanf( pValue, "%f", &hRenderConfig->room_acoustics.acousticPreDelay ) ) + if ( strcmp( pValue, "LCLD" ) == 0 ) { - errorHandler( item, ERROR_VALUE_INVALID ); + hRenderConfig->split_rend_config.codec = IVAS_SPLIT_REND_CODEC_LCLD; + } + else if ( strcmp( pValue, "LC3PLUS" ) == 0 ) + { + hRenderConfig->split_rend_config.codec = IVAS_SPLIT_REND_CODEC_LC3PLUS; + } + else + { + errorHandler( pValue, ERROR_VALUE_INVALID ); } } - else if ( strcmp( item, "INPUTPREDELAY" ) == 0 ) +#ifdef API_5MS + else if ( strcmp( item, "FRAMESIZE" ) == 0 ) { - if ( !sscanf( pValue, "%f", &hRenderConfig->room_acoustics.inputPreDelay ) ) + if ( !sscanf( pValue, "%hd", &hRenderConfig->split_rend_config.codec_frame_size_ms ) ) { errorHandler( item, ERROR_VALUE_INVALID ); } + if ( hRenderConfig->split_rend_config.codec_frame_size_ms != 5 && + hRenderConfig->split_rend_config.codec_frame_size_ms != 10 && + hRenderConfig->split_rend_config.codec_frame_size_ms != 20 ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + } + } +#endif + else if ( strcmp( item, "POSECORRECTION" ) == 0 ) + { + poseCorrProvided = true; + if ( strcmp( pValue, "CLDFB" ) == 0 ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_CLDFB; + } + else if ( strcmp( pValue, "NONE" ) == 0 ) + { + hRenderConfig->split_rend_config.poseCorrectionMode = IVAS_SPLIT_REND_POSE_CORRECTION_MODE_NONE; + /* no pose correction implies 0 DOF */ + if ( !dofProvided ) + { + hRenderConfig->split_rend_config.dof = 0; + } + } + else + { + errorHandler( pValue, ERROR_VALUE_INVALID ); + } + } + else if ( strcmp( item, "RENDERER" ) == 0 ) + { + if ( strcmp( pValue, "CREND" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = IVAS_SPLIT_REND_RENDERER_SELECTION_CREND; + } + else if ( strcmp( pValue, "FASTCONV" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = IVAS_SPLIT_REND_RENDERER_SELECTION_FASTCONV; + } + else if ( strcmp( pValue, "PARAMBIN" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = IVAS_SPLIT_REND_RENDERER_SELECTION_PARAMBIN; + } + else if ( strcmp( pValue, "TDREND" ) == 0 ) + { + hRenderConfig->split_rend_config.rendererSelection = IVAS_SPLIT_REND_RENDERER_SELECTION_TDREND; + } + else + { + errorHandler( pValue, ERROR_VALUE_INVALID ); + } } #ifdef DEBUGGING else @@ -480,21 +2565,131 @@ ivas_error RenderConfigReader_read( #endif } free( pValue ); - if ( ( nBandsInput != hRenderConfig->room_acoustics.nBands ) && ( nVectorsMissing > 0 ) ) + } +#endif + + else if ( strcmp( chapter, "DIRECTIVITYSETTING" ) == 0 && strlen( pParams ) != 0 ) + { + params_idx = 0; + pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); + + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) { - fprintf( stderr, "Reverb config: number of bands changed but configuration vectors missing\n" ); + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#ifdef DEBUGGING + fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif + if ( strcmp( item, "DIRECTIVITYCOUNT" ) == 0 ) + { + /* Read the number of directivity chapters */ + if ( !sscanf( pValue, "%u", &nDP ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + if ( nDP > 0 ) + { + for ( idx = 0; idx < pRenderConfigReader->nDP; idx++ ) + { + free( pRenderConfigReader->pDP[idx].pDirectivity ); + } + + free( pRenderConfigReader->pDP ); + pRenderConfigReader->nDP = nDP; + + /* Allocate memory for the directivity pattern*/ + if ( ( pRenderConfigReader->pDP = (DirectrivityPat *) malloc( pRenderConfigReader->nDP * sizeof( DirectrivityPat ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + + for ( idx = 0; idx < nDP; idx++ ) + { + pRenderConfigReader->pDP[idx].pDirectivity = NULL; + } + } + accDPIdx = 0; + } } + free( pValue ); } + else if ( strcmp( pToken, "DIRECTIVITYPATTERN" ) == 0 ) + { + if ( pRenderConfigReader->pDP == NULL || accDPIdx >= pRenderConfigReader->nDP ) + { + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + idx = strtol( strtok( NULL, ":" ), NULL, 0 ); + pRenderConfigReader->pDP->id = idx; + + params_idx = 0; + pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); + while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) + { + params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); #ifdef DEBUGGING + fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); +#endif + /* Allocate memory for directivity arrays*/ + if ( ( pRenderConfigReader->pDP[accDPIdx].pDirectivity = (float *) malloc( 3 * sizeof( float ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + if ( strcmp( item, "DIRECTIVITY" ) == 0 ) + { + if ( read_txt_vector( pValue, 3, pRenderConfigReader->pDP[accDPIdx].pDirectivity ) ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + } + } + free( pValue ); + accDPIdx++; + } else if ( strcmp( chapter, "GENERAL" ) == 0 && strlen( pParams ) != 0 ) { params_idx = 0; pValue = (char *) calloc( strlen( pParams ), sizeof( char ) ); while ( sscanf( pParams + params_idx, "%64[^=]=%[^;];", item, pValue ) == 2 ) { - params_idx += (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); + params_length = (int32_t) ( strlen( item ) + strlen( pValue ) + 2 ); +#ifdef DEBUGGING fprintf( stderr, " PARAM: %s -> %s\n", item, pValue ); - if ( strcmp( item, "RENDERER" ) == 0 ) +#endif + if ( strcmp( item, "BINARYCONFIG" ) == 0 ) + { + /* get correct case reverb configuration file path */ + sscanf( pTemp + params_idx, "%*[^=] = %[^;];", pValue ); + + /* make reverb configuration file path relative to render configuration file path */ + for ( length = (int32_t) strlen( pRenderConfigPath ) - 1; length >= 0; length-- ) + { + if ( pRenderConfigPath[length] == '\\' || pRenderConfigPath[length] == '/' ) + { + length++; + break; + } + } + if ( length < 0 ) + { + /* no slash found */ + length = 0; + } + char *pCombinedName = calloc( length + (int32_t) strlen( pValue ) + 1, sizeof( char ) ); + strncpy( pCombinedName, pRenderConfigPath, length ); + strcpy( pCombinedName + length, pValue ); + + if ( ( error = RenderConfigReader_readBinary( pCombinedName, pRenderConfigReader ) ) != IVAS_ERR_OK ) + { + errorHandler( item, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; + } + free( pCombinedName ); + } + else +#ifdef DEBUGGING + if ( strcmp( item, "RENDERER" ) == 0 ) { if ( strcmp( pValue, "CREND" ) == 0 ) { @@ -507,11 +2702,14 @@ ivas_error RenderConfigReader_read( else { errorHandler( pValue, ERROR_VALUE_INVALID ); + return IVAS_ERR_INVALID_RENDER_CONFIG; } } - else if ( strcmp( item, "DIRECTIVITY" ) == 0 ) + else +#endif + if ( strcmp( item, "DIRECTIVITY" ) == 0 ) { - if ( read_vector( pValue, 3, hRenderConfig->directivity ) ) + if ( read_txt_vector( pValue, 3, hRenderConfig->directivity ) ) { errorHandler( item, ERROR_VALUE_INVALID ); } @@ -522,10 +2720,10 @@ ivas_error RenderConfigReader_read( fprintf( stderr, "Unsupported configuration property %s\n", item ); } #endif + params_idx += params_length; } free( pValue ); } -#endif else { fprintf( stderr, "Unknown chapter: %s\n", chapter ); @@ -552,8 +2750,122 @@ ivas_error RenderConfigReader_read( fprintf( stderr, "Errors occurred\n" ); return IVAS_ERR_FAILED_FILE_PARSE; } + return IVAS_ERR_OK; +} + +/*------------------------------------------------------------------------------------------* + * RenderConfigReader_getEnvironment() + * + * Gets Acoustic environment with a given ID + *------------------------------------------------------------------------------------------*/ + +ivas_error RenderConfigReader_getAcousticEnvironment( + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + uint16_t id, /* i : Acoustic environment ID */ + IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pAcEnv /* o : Target acoustic environment pointer */ +) +{ + uint16_t n, m; + uint16_t j; + + if ( pRenderConfigReader == NULL || pAcEnv == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + for ( n = 0; n < pRenderConfigReader->nAE; n++ ) + { + if ( id == pRenderConfigReader->pAE[n].id ) + { + pAcEnv->nBands = (int16_t) pRenderConfigReader->pAE[n].pFG->nrBands; + pAcEnv->inputPreDelay = pRenderConfigReader->pAE[n].preDelay; + for ( m = 0; m < pAcEnv->nBands; m++ ) + { + pAcEnv->pFc_input[m] = pRenderConfigReader->pAE[n].pFG->pFc[m]; + pAcEnv->pAcoustic_rt60[m] = pRenderConfigReader->pAE[n].pRT60[m]; + pAcEnv->pAcoustic_dsr[m] = pRenderConfigReader->pAE[n].pDSR[m]; + } + + /* If ER are allocated then propagate parameters */ + if ( pRenderConfigReader->pAE[n].pEarlyReflections != 0 ) + { + pAcEnv->use_er = pRenderConfigReader->pAE[n].pEarlyReflections->use_er; /* ER activation flag */ + pAcEnv->lowComplexity = pRenderConfigReader->pAE[n].pEarlyReflections->lowComplexity; /* Low complexity flag */ + pAcEnv->dimensions = pRenderConfigReader->pAE[n].pEarlyReflections->dimensions; + /* Use default listener origin position if non provided */ + if ( pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin == NULL ) + { + if ( ( pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin = malloc( sizeof( IVAS_VECTOR3 ) ) ) == NULL ) + { + return IVAS_ERR_FAILED_ALLOC; + } + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->x = ER_LIST_ORIGIN_X; + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->y = ER_LIST_ORIGIN_Y; + pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin->z = ER_LIST_HEIGHT; + } + pAcEnv->ListenerOrigin = *pRenderConfigReader->pAE[n].pEarlyReflections->pListenerOrigin; + for ( j = 0; j < QC_ABS_COEFF; j++ ) + { + pAcEnv->AbsCoeff[j] = pRenderConfigReader->pAE[n].pEarlyReflections->pAbsCoeff[j]; + } + } + return IVAS_ERR_OK; + } + } + return IVAS_ERR_ACOUSTIC_ENVIRONMENT_MISSING; +} + + +/*------------------------------------------------------------------------------------------* + * RenderConfigReader_getDirectivity() + * + * Gets Directivity DirectrivityPatern with a given ID + *------------------------------------------------------------------------------------------*/ - return RenderConfigReader_checkValues( hRenderConfig ); +ivas_error RenderConfigReader_getDirectivity( + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + uint16_t *id, /* i : Directivity pattern ID */ + float *directivity /* o : Target directivity */ +) +{ + uint16_t n, m; + bool idExists; + + + if ( pRenderConfigReader == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + if ( pRenderConfigReader->pDP == NULL ) + { + for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) + { + directivity[n * 3] = 360.0f; + directivity[n * 3 + 1] = 360.0f; + directivity[n * 3 + 2] = 1.0f; + } + } + else + { + for ( n = 0; n < MAX_NUM_OBJECTS; n++ ) + { + idExists = false; + for ( m = 0; m < pRenderConfigReader->nDP; m++ ) + { + if ( id[n] == pRenderConfigReader->pDP[m].id ) + { + idExists = true; + mvr2r( pRenderConfigReader->pDP[id[n]].pDirectivity, directivity + ( n * 3 ), 3 ); + break; + } + } + if ( !idExists ) + { + return IVAS_ERR_DIRECTIVITY_PATTERN_ID_MISSING; + } + } + } + return IVAS_ERR_OK; } @@ -567,11 +2879,38 @@ void RenderConfigReader_close( RenderConfigReader **ppRenderConfigReader /* i : RenderConfigReader handle */ ) { + uint32_t n; + if ( ppRenderConfigReader == NULL || *ppRenderConfigReader == NULL ) { return; } + /* Free the acoustic environments */ + for ( n = 0; n < ( *ppRenderConfigReader )->nAE; n++ ) + { + if ( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections != NULL ) + { + free( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections->pListenerOrigin ); + free( ( *ppRenderConfigReader )->pAE[n].pEarlyReflections ); + } + free( ( *ppRenderConfigReader )->pAE[n].pRT60 ); + free( ( *ppRenderConfigReader )->pAE[n].pDSR ); + } + free( ( *ppRenderConfigReader )->pAE ); + + /* Free the frequency grids */ + for ( n = 0; n < ( *ppRenderConfigReader )->nFG; n++ ) + { + free( ( *ppRenderConfigReader )->pFG[n].pFc ); + } + free( ( *ppRenderConfigReader )->pFG ); + /* Free the directivity patterns */ + for ( n = 0; n < ( *ppRenderConfigReader )->nDP; n++ ) + { + free( ( *ppRenderConfigReader )->pDP[n].pDirectivity ); + } + free( ( *ppRenderConfigReader )->pDP ); fclose( ( *ppRenderConfigReader )->pConfigFile ); free( *ppRenderConfigReader ); diff --git a/lib_util/render_config_reader.h b/lib_util/render_config_reader.h index c2afb92e8bb11cd1b8706fbb573961dd69a1b36c..2e929643282ebc55dfdaff5c25f5c50cf0a26356 100644 --- a/lib_util/render_config_reader.h +++ b/lib_util/render_config_reader.h @@ -51,9 +51,26 @@ ivas_error RenderConfigReader_open( RenderConfigReader **ppRenderConfigReader /* o : RenderConfigReader handle */ ); +/* Get an acoustic environment */ +ivas_error RenderConfigReader_getAcousticEnvironment( + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + uint16_t id, /* i : Acoustic environment ID */ + IVAS_ROOM_ACOUSTICS_CONFIG_DATA *pAcEnv /* o : Target acoustic environment pointer */ +); +ivas_error RenderConfigReader_getDirectivity( + RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + uint16_t *pId, /* i : Directivity pattern ID */ + float *directivity /* o : Target directivity */ +); +/* Verifies configuration parameters */ +ivas_error RenderConfigReader_checkValues( + IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ +); + /* Reads a configuration */ ivas_error RenderConfigReader_read( RenderConfigReader *pRenderConfigReader, /* i : RenderConfigReader handle */ + const char *pRenderConfigPath, /* i : Renderer configuration file path */ IVAS_RENDER_CONFIG_HANDLE hRenderConfig /* o : Renderer configuration handle */ ); diff --git a/lib_util/rotation_file_reader.h b/lib_util/rotation_file_reader.h index d597c67a7fa23aa2206079120878f70f285d241c..1ae772fceb19d61eb28392282f0494222b705ffc 100644 --- a/lib_util/rotation_file_reader.h +++ b/lib_util/rotation_file_reader.h @@ -36,8 +36,6 @@ #include "common_api_types.h" -#define IVAS_MAX_PARAM_SPATIAL_SUBFRAMES 4 - typedef struct RotFileReader RotFileReader; /*-----------------------------------------------------------------------* diff --git a/lib_util/split_rend_bfi_file_reader.c b/lib_util/split_rend_bfi_file_reader.c new file mode 100644 index 0000000000000000000000000000000000000000..64ec04738e36a3d8d0049f428e2a79376cf9240f --- /dev/null +++ b/lib_util/split_rend_bfi_file_reader.c @@ -0,0 +1,164 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "split_rend_bfi_file_reader.h" +#include +#include +#include +#include +#include "prot.h" + +struct SplitRendBFIFileReader +{ + FILE *bfiFile; + int32_t frameCounter; + char *file_path; + bool fileRewind; + bool txtfile; +}; + + +/*-----------------------------------------------------------------------* + * SplitRendBFIFileReader_open() + * + * Allocate and initialize Split Renderer Frameloss file reader + *-----------------------------------------------------------------------*/ + +ivas_error SplitRendBFIFileReader_open( + char *bfiFilePath, /* i : frame loss file name */ + SplitRendBFIFileReader **SplitRendBFIReader /* o : SplitRendBFIFileReader handle */ +) +{ + SplitRendBFIFileReader *self; + FILE *bfiFile; + bool txtfile; + + /* Open bfi file */ + if ( strlen( bfiFilePath ) < 1 ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + bfiFile = fopen( bfiFilePath, "r" ); + + if ( !bfiFile ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + txtfile = ( strcmp( bfiFilePath + strlen( bfiFilePath ) - 4, ".txt" ) ? false : true ); + + self = calloc( sizeof( SplitRendBFIFileReader ), 1 ); + self->bfiFile = bfiFile; + self->frameCounter = 0; + self->file_path = calloc( sizeof( char ), strlen( bfiFilePath ) + 1 ); + strcpy( self->file_path, bfiFilePath ); + self->fileRewind = false; + self->txtfile = txtfile; + + *SplitRendBFIReader = self; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------* + * SplitRendBFIFileReading() + * + * Read values from the bfi file + *-----------------------------------------------------------------------*/ + +ivas_error SplitRendBFIFileReading( + SplitRendBFIFileReader *SplitRendBFIReader, /* i/o: SplitRendBFIFileReader handle */ + int16_t *bfi ) +{ + if ( SplitRendBFIReader->txtfile ? 1 != fscanf( SplitRendBFIReader->bfiFile, "%hd", bfi ) : 1 != fread( bfi, sizeof( *bfi ), 1, SplitRendBFIReader->bfiFile ) ) + { + if ( feof( SplitRendBFIReader->bfiFile ) ) + { + rewind( SplitRendBFIReader->bfiFile ); + SplitRendBFIReader->fileRewind = true; + return SplitRendBFIFileReading( SplitRendBFIReader, bfi ); + } + return IVAS_ERR_FAILED_FILE_PARSE; + } + + ( SplitRendBFIReader->frameCounter )++; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------* + * SplitRendBFIationFileReader_close() + * + * Deallocates memory for the Head-Tracking reader + *-----------------------------------------------------------------------*/ + +void SplitRendBFIFileReader_close( + SplitRendBFIFileReader **SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +) +{ + if ( SplitRendBFIReader == NULL || *SplitRendBFIReader == NULL ) + { + return; + } + + fclose( ( *SplitRendBFIReader )->bfiFile ); + free( ( *SplitRendBFIReader )->file_path ); + free( *SplitRendBFIReader ); + *SplitRendBFIReader = NULL; + + return; +} + + +/*-----------------------------------------------------------------------* + * SplitRendBFIFileReader_getFilePath() + * + * + *-----------------------------------------------------------------------*/ + +const char *SplitRendBFIFileReader_getFilePath( + SplitRendBFIFileReader *SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +) +{ + if ( SplitRendBFIReader == NULL ) + { + return NULL; + } + + 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 new file mode 100644 index 0000000000000000000000000000000000000000..341ef3ed657bab7c6a1f7fd9a9836c36d60106bb --- /dev/null +++ b/lib_util/split_rend_bfi_file_reader.h @@ -0,0 +1,60 @@ +/****************************************************************************************************** + + (C) 2022-2023 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_SR_BFI_FILE_READER_H +#define IVAS_SR_BFI_FILE_READER_H + +#include "common_api_types.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT + +typedef struct SplitRendBFIFileReader SplitRendBFIFileReader; + +ivas_error SplitRendBFIFileReader_open( + char *trajFilePath, /* i : head rotation trajectory file name */ + SplitRendBFIFileReader **SplitRendBFIReader /* o : SplitRendBFIFileReader handle */ +); + +ivas_error SplitRendBFIFileReading( + SplitRendBFIFileReader *SplitRendBFIReader, /* i/o: SplitRendBFIFileReader handle */ + int16_t *bfi ); + +void SplitRendBFIFileReader_close( + SplitRendBFIFileReader **SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +); + +const char *SplitRendBFIFileReader_getFilePath( + SplitRendBFIFileReader *SplitRendBFIReader /* i/o: SplitRendBFIFileReader handle */ +); + + +#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 new file mode 100644 index 0000000000000000000000000000000000000000..ea9e6da739d511484448ea2fe49b54a9dc5ed0dd --- /dev/null +++ b/lib_util/split_render_file_read_write.c @@ -0,0 +1,400 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 "options.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT +#include "split_render_file_read_write.h" +#include +#include +#include +#include +#include +#include "cmdl_tools.h" +#include "prot.h" +#include "ivas_cnst.h" + + +/*------------------------------------------------------------------------------------------* + * PreProc Macros + *------------------------------------------------------------------------------------------*/ + +#define SPLIT_RENDERER_FRAME_HEADER_LEN ( 12 ) + +/*------------------------------------------------------------------------------------------* + * Type definitions + *------------------------------------------------------------------------------------------*/ + +struct SplitFileReadWrite +{ + FILE *file; + uint32_t delay_ns; +}; + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_reader_open() + * + * open in read mode + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_reader_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename ) +{ + SplitFileReadWrite *hSplitRendFileReadWrite; + size_t header_len, h; + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "MAIN_SPLITH"; + char header_read[SPLIT_RENDERER_FRAME_HEADER_LEN]; + + if ( ( hSplitRendFileReadWrite = (SplitFileReadWrite *) malloc( sizeof( SplitFileReadWrite ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for split rendering writer\n" ) ); + } + + hSplitRendFileReadWrite->file = fopen( filename, "rb" ); + if ( hSplitRendFileReadWrite->file == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "\nCould not open split rend metadata file %s\n", filename ) ); + } + + header_len = strlen( header ); + + /*read frame header*/ + for ( h = 0; h < header_len; h++ ) + { + if ( fread( &header_read[h], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + } + + if ( strncmp( header_read, header, header_len ) ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_FILE_READ, "\nError split rend bitstream main header mismatch\n" ) ); + } + + fread( &hSplitRendFileReadWrite->delay_ns, sizeof( uint32_t ), 1, hSplitRendFileReadWrite->file ); + + *hhSplitRendFileReadWrite = hSplitRendFileReadWrite; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_writer_open() + * + * open in write mode + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_writer_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename, + const int16_t delayNumSamples, + const int32_t delayTimeScale ) +{ + SplitFileReadWrite *hSplitRendFileReadWrite; + size_t header_len, h; + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "MAIN_SPLITH"; + + if ( filename == NULL ) + { + return IVAS_ERR_UNEXPECTED_NULL_POINTER; + } + + if ( ( hSplitRendFileReadWrite = (SplitFileReadWrite *) malloc( sizeof( SplitFileReadWrite ) ) ) == NULL ) + { + return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for split rendering writer\n" ) ); + } + + hSplitRendFileReadWrite->file = fopen( filename, "wb" ); + if ( hSplitRendFileReadWrite->file == NULL ) + { + return IVAS_ERR_FAILED_FILE_OPEN; + } + + header_len = strlen( header ); + + /* write frame header */ + for ( h = 0; h < header_len; h++ ) + { + if ( fwrite( &header[h], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_END_OF_FILE; + } + } + hSplitRendFileReadWrite->delay_ns = (int32_t) ( (float) delayNumSamples * 1000000000.0f / (float) delayTimeScale ); + fwrite( &hSplitRendFileReadWrite->delay_ns, sizeof( int32_t ), 1, hSplitRendFileReadWrite->file ); + + *hhSplitRendFileReadWrite = hSplitRendFileReadWrite; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_reader_writer_close() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_reader_writer_close( + SplitFileReadWrite **hhSplitRendFileReadWrite ) +{ + if ( ( *hhSplitRendFileReadWrite ) != NULL ) + { + if ( ( *hhSplitRendFileReadWrite )->file != NULL ) + { + fclose( ( *hhSplitRendFileReadWrite )->file ); + ( *hhSplitRendFileReadWrite )->file = NULL; + } + + free( *hhSplitRendFileReadWrite ); + *hhSplitRendFileReadWrite = NULL; + } + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_write_bitstream_to_file() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_write_bitstream_to_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written, + IVAS_SPLIT_REND_CODEC codec, + IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection +#ifdef API_5MS + , + int16_t codec_frame_size_ms +#endif +) +{ + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "SPLIT_FRAME"; + size_t header_len, i, num_bytes; + uint8_t version = 0; + + if ( hSplitRendFileReadWrite == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + if ( hSplitRendFileReadWrite->file == NULL ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + header_len = strlen( header ); + + /* write frame header */ + for ( i = 0; i < header_len; i++ ) + { + if ( fwrite( &header[i], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + } + + /* Write versioning signalling */ + if ( fwrite( &version, 1, 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + /* Write codec signalling */ + if ( fwrite( &codec, sizeof( codec ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + /* Write pose correction signalling */ + if ( fwrite( &poseCorrection, sizeof( poseCorrection ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } +#ifdef API_5MS + /* Write frame size signalling */ + if ( fwrite( &codec_frame_size_ms, sizeof( codec_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } +#endif + + /* write num bytes */ + if ( fwrite( bits_written, sizeof( int32_t ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + num_bytes = ( *bits_written + 7 ) >> 3; + if ( fwrite( bits, sizeof( uint8_t ), num_bytes, hSplitRendFileReadWrite->file ) != num_bytes ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + + *bits_read = 0; + *bits_written = 0; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_read_bits_from_file() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_read_bits_from_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written, + IVAS_SPLIT_REND_CODEC *codec, + IVAS_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection +#ifdef API_5MS + , + int16_t *codec_frame_size_ms +#endif +) +{ + char header[SPLIT_RENDERER_FRAME_HEADER_LEN] = "SPLIT_FRAME"; + char header_read[SPLIT_RENDERER_FRAME_HEADER_LEN]; + int32_t header_len, i, num_bytes, bit_len = 0; + uint8_t version; + + if ( hSplitRendFileReadWrite == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + if ( hSplitRendFileReadWrite->file == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + header_len = strlen( header ); + + /* read frame header */ + for ( i = 0; i < header_len; i++ ) + { + if ( fread( &header_read[i], sizeof( char ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_END_OF_FILE; + } + } + + if ( strncmp( header_read, header, header_len ) ) + { + fprintf( stderr, "Error bitstream frame header mismatch\n" ); + return IVAS_ERR_FAILED_FILE_READ; + } + + /* read versioning signalling */ + if ( fread( &version, 1, 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_WRITE; + } + if ( version != 0 ) + { + fprintf( stderr, "Error bitstream version mismatch\n" ); + return IVAS_ERR_FAILED_FILE_READ; + } + + /* read codec signalling */ + if ( fread( codec, sizeof( *codec ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + /* read pose correction signalling */ + if ( fread( poseCorrection, sizeof( *poseCorrection ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } +#ifdef API_5MS + /* read frame size signalling */ + if ( fread( codec_frame_size_ms, sizeof( *codec_frame_size_ms ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } +#endif + + /* write num bytes */ + if ( fread( &bit_len, sizeof( int32_t ), 1, hSplitRendFileReadWrite->file ) != 1 ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + num_bytes = ( bit_len + 7 ) >> 3; + + if ( fread( bits, sizeof( uint8_t ), num_bytes, hSplitRendFileReadWrite->file ) != (uint32_t) num_bytes ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + for ( i = 0; i < SPLIT_REND_ADDITIONAL_BYTES_TO_READ; i++ ) + { + bits[num_bytes + i] = 0; + } + + *bits_read = 0; + *bits_written = bit_len; + + return IVAS_ERR_OK; +} + + +/*-----------------------------------------------------------------------------------------* + * Function split_rend_read_pre_rend_delay_ns() + * + * + *-----------------------------------------------------------------------------------------*/ + +ivas_error split_rend_read_pre_rend_delay_ns( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint32_t *delay_ns ) +{ + if ( hSplitRendFileReadWrite == NULL ) + { + return IVAS_ERR_FAILED_FILE_READ; + } + + *delay_ns = hSplitRendFileReadWrite->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 new file mode 100644 index 0000000000000000000000000000000000000000..dacc2f72bc852e229797c3c80b76f61db74c5929 --- /dev/null +++ b/lib_util/split_render_file_read_write.h @@ -0,0 +1,91 @@ +/****************************************************************************************************** + + (C) 2022-2023 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 SPLIT_RENDER_FILE_READ_WRITE_H +#define SPLIT_RENDER_FILE_READ_WRITE_H + +#include "common_api_types.h" +#ifdef SPLIT_REND_WITH_HEAD_ROT + +typedef struct SplitFileReadWrite SplitFileReadWrite; + +/* Allocates and initializes a a split renderer reader instance */ +ivas_error split_rend_reader_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename ); + + +/* Allocates and initializes a a split renderer writer instance */ +ivas_error split_rend_writer_open( + SplitFileReadWrite **hhSplitRendFileReadWrite, + char *filename, + const int16_t delayNumSamples, + const int32_t delayTimeScale ); + +/* Closes the split renderer reader/writer and deallocates memory */ +ivas_error split_rend_reader_writer_close( SplitFileReadWrite **hhSplitRendFileReadWrite ); + +/*write split rend coded bitstream to file */ +ivas_error split_rend_write_bitstream_to_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written, + IVAS_SPLIT_REND_CODEC codec, + IVAS_SPLIT_REND_POSE_CORRECTION_MODE poseCorrection +#ifdef API_5MS + , + int16_t codec_frame_size_ms +#endif +); + +/* read split rend coded bits from file */ +ivas_error split_rend_read_bits_from_file( + SplitFileReadWrite *hSplitRendFileReadWrite, + uint8_t *bits, + int32_t *bits_read, + int32_t *bits_written, + IVAS_SPLIT_REND_CODEC *codec, + IVAS_SPLIT_REND_POSE_CORRECTION_MODE *poseCorrection +#ifdef API_5MS + , + int16_t *codec_frame_size_ms +#endif +); + +/* read split pre rend delay */ +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 */ diff --git a/lib_util/tsm_scale_file_reader.h b/lib_util/tsm_scale_file_reader.h index 7a795a25cb27316f36acef8bb07dfe67c6dcbf4c..55ee20f8cfdb47fd178bb84f948c833c9b3de10a 100644 --- a/lib_util/tsm_scale_file_reader.h +++ b/lib_util/tsm_scale_file_reader.h @@ -33,9 +33,7 @@ #ifndef IVAS_TSM_SCALE_FILE_READER_H #define IVAS_TSM_SCALE_FILE_READER_H -#include #include "common_api_types.h" -#include "ivas_error.h" /* clang-format off */ @@ -44,24 +42,23 @@ typedef struct TsmScaleFileReader TsmScaleFileReader; /*! r: TsmScaleFileReader handle */ TsmScaleFileReader *TsmScaleFileReader_open( - const char *filePath /* i : path to TSM scale file */ + const char *filePath /* i : path to TSM scale file */ ); ivas_error TsmScaleFileReader_readScale( - TsmScaleFileReader* self, /* i/o: TsmScaleFileReader handle */ - int16_t *scale /* o : next scale */ + TsmScaleFileReader* self, /* i/o: TsmScaleFileReader handle */ + int16_t *scale /* o : next scale */ ); void TsmScaleFileReader_close( - TsmScaleFileReader **selfPtr /* i/o: pointer to TsmScaleFileReader handle */ + TsmScaleFileReader **selfPtr /* i/o: pointer to TsmScaleFileReader handle */ ); /*! r: path to the currently opened file or NULL if `self` is NULL */ const char *TsmScaleFileReader_getFilePath( - TsmScaleFileReader* self /* i/o: TsmScaleFileReader handle */ + TsmScaleFileReader* self /* i/o: TsmScaleFileReader handle */ ); - /* clang-format on */ #endif /* IVAS_TSM_SCALE_FILE_READER_H */ diff --git a/lib_util/vector3_pair_file_reader.h b/lib_util/vector3_pair_file_reader.h index 4ab687848c25265bc08fc33a7f2d5e474516e25b..e4691939220cfaded272c9481c715f73cd018d65 100644 --- a/lib_util/vector3_pair_file_reader.h +++ b/lib_util/vector3_pair_file_reader.h @@ -34,8 +34,6 @@ #define IVAS_V3PAIR_FILE_READER_H #include "common_api_types.h" -#include "ivas_error.h" -#include "options.h" /* only included to get access to the feature-defines */ typedef struct Vector3PairFileReader Vector3PairFileReader; diff --git a/pytest.ini b/pytest.ini index 0cb53d22bb924dd5867a455a30ba395c324a59b6..14538fd90dad75423d9cd77576134c0a98f90941 100644 --- a/pytest.ini +++ b/pytest.ini @@ -2,7 +2,7 @@ # note: per convention, this file is placed in the root directory of the repository [pytest] # TODO remove ignore after tests are harmonized -addopts = -ra --tb=short --basetemp=./tmp -n auto -v --ignore=tests/renderer +addopts = -ra --tb=short --basetemp=./tmp -n auto -v --ignore=tests/renderer --ignore=tests/split_rendering # Write captured system-out log messages to JUnit report. junit_logging = system-out # Do not capture log information for passing tests to JUnit report. diff --git a/readme.txt b/readme.txt index 21a5a19e7940665f7cf537520a0cf248466d22e7..58efed4bb663fa353bfaff45152869337b514554 100644 --- a/readme.txt +++ b/readme.txt @@ -31,12 +31,13 @@ *******************************************************************************************************/ -These files represent a pre-release of a codec candidate to the IVAS -Extension to the 3GPP EVS Codec floating-point C simulation. All code is -written in ANSI-C. The system is implemented as two separate programs: +These files represent the 3GPP EVS Codec Extension for Immersive Voice and +Audio Services (IVAS) floating-point C simulation. All code is writtten +in ISO/IEC C99. The system is implemented as three separate programs: IVAS_cod Encoder IVAS_dec Decoder + IVAS_rend Renderer For encoding using the coder program, the input is a binary audio file (*.8k, *.16k, *.32k, *.48k) and the output is a binary @@ -61,8 +62,9 @@ If the software is to be run on some other platform than PC, such as an HP (HP-UX) or a Sun, then binary files will need to be modified by swapping the byte order in the files. -The input and output files (*.8k, *.16k, *.32k, *.48k) are 16-bit signed -binary files with 8/16/32/48 kHz sampling rate with no headers. +The input and output files (*.8k, *.16k, *.32k, *.48k) are 16-bit integer +PCM files with 8/16/32/48 kHz sampling rate with no headers. Alternatively, +the input and output files are WAV files. The Encoder produces bitstream files in either ITU G.192 or MIME file storage format. @@ -74,7 +76,7 @@ following data: Word16 SyncWord Word16 DataLen - Word16 1st Databit + Word16 1st DataBit Word16 2nd DataBit . . @@ -128,9 +130,8 @@ should have the following structure: |-- lib_enc |-- lib_rend |-- lib_util - |-- scripts - |-- tests |-- readme.txt + |-- .clang-format The package includes a Makefile for gcc, which has been verified on 32-bit Linux systems. The code can be compiled by entering the directory @@ -140,9 +141,10 @@ in the c-code directory. The package also includes a solution-file for Microsoft Visual Studio 2017 (x86). To compile the code, please open "Workspace_msvc\Workspace_msvc.sln" and build -"encoder" for the encoder and "decoder" for the decoder executable. The resulting -encoder/decoder/renderer executables are named "IVAS_cod.exe", "IVAS_dec.exe", -and "IVAS_rend.exe". All reside in the c-code directory. +"encoder" for the encoder, "decoder" for the decoder, and "renderer" for the +renderer executable. The resulting encoder/decoder/renderer executables are +"IVAS_cod.exe", "IVAS_dec.exe", and "IVAS_rend.exe". All reside in the c-code +main directory. RUNNING THE SOFTWARE @@ -167,9 +169,9 @@ R : Bitrate in bps, (24400, 32000, 48000, 64000, 80000, 96000,128000) for 2 ISM, 3 ISM and 4 ISM also 160000, 192000, 256000 for 3 ISM and 4 ISM also 384000 - for 4 ISM also 512000 - for IVAS SBA, MASA, MC R=(13200, 16400, 24400, 32000, 48000, 64000, 80000, - 96000, 128000, 160000, 192000, 256000, 384000, 512000) + for 4 ISM also 512000 + for IVAS SBA, MASA, MC, ISM-SBA, and ISM-MASA R=(13200, 16400, 24400, 32000, + 48000, 64000, 80000, 96000, 128000, 160000, 192000, 256000, 384000, 512000) Alternatively, R can be a bitrate switching file which consists of R values indicating the bitrate for each frame in bps. These values are stored in binary format using 4 bytes per value @@ -179,7 +181,7 @@ bitstream_file : Output bitstream filename Options: -------- -EVS mono is default, for IVAS choose one of the following: -stereo, -ism, -sba, -masa, -mc +EVS mono is default, for IVAS choose one of the following: -stereo, -ism, -sba, -masa, -mc, -ism_sba, -ism_masa -stereo : Stereo format -ism [+]Ch Files : ISM format where Ch specifies the number of ISMs (1-4) @@ -190,33 +192,42 @@ EVS mono is default, for IVAS choose one of the following: -stereo, -ism, -sba, where Order specifies the Ambisionics order (1-3), where positive (+) means full 3D and negative (-) only 2D/planar components to be coded -masa Ch File : MASA format - where Ch specifies the number of input/transport channels (1 or 2): + where Ch specifies the number of MASA input/transport channels (1 or 2): and File specifies input file containing parametric MASA metadata +-ism_sba IsmCh +/-Order IsmFiles : SBA and ISM combined format + where IsmCh specifies the number of ISMs (1-4), + Order specifies the Ambisionics order (1-3) + and IsmFiles specify input files containing ISM metadata, one file per object +-ism_masa IsmCh MasaCh IsmFiles MasaFile : MASA and ISM combined format + where IsmCh specifies the number of ISMs (1-4), + MasaCh specifies the number of MASA input/transport channels (1-2), + IsmFiles specify input files containing ISM metadata, one file per object, + and MasaFile specifies input file containing parametric MASA metadata -mc InputConf : Multi-channel format where InputConf specifies the channel configuration: 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4 Loudspeaker positions are assumed to have azimuth and elevation as per ISO/IEC 23091-3:2018 Table 3. Channel order is as per ISO/IEC 23008-3:2015 Table 95. - See readme.txt for details. + See below for details. -dtx D : Activate DTX mode, D = (0, 3-100) is the SID update rate - where 0 = adaptive, 3-100 = fixed in number of frames, - default is deactivated + where 0 = adaptive, 3-100 = fixed in number of frames, default is deactivated -dtx : Activate DTX mode with a SID update rate of 8 frames - Note: DTX is supported in EVS, stereo, ISM, SBA up to 80kbps and MASA up to 128kbps --rf p o : Activate channel-aware mode for WB and SWB signal at 13.2kbps, + Note: DTX is supported in EVS, stereo, ISM, MASA, and SBA up to 80kbps +-rf p o : Activate channel-aware mode in EVS for WB and SWB signal at 13.2kbps, where FEC indicator, p: LO or HI, and FEC offset, o: 2, 3, 5, or 7 in number of frames. Alternatively p and o can be replaced by a rf configuration file with each line - contains the values of p and o separated by a space, - default is deactivated + contains the values of p and o separated by a space, default is deactivated -max_band B : Activate bandwidth limitation, B = (NB, WB, SWB or FB) alternatively, B can be a text file where each line contains "nb_frames B" -no_delay_cmp : Turn off delay compensation --stereo_dmx_evs : Activate stereo downmix function for EVS. +-stereo_dmx_evs : Stereo downmix function for EVS +-binaural : Optional indication that input is binaural audio (to be used with -stereo or -stereo_dmx_evs) -mime : Mime output bitstream file format The encoder produces TS26.445 Annex.2.6 Mime Storage Format, (not RFC4867 Mime Format). default output bitstream file format is G.192 -bypass mode : SBA PCA by-pass, mode = (1, 2), 1 = PCA off, 2 = signal adaptive, default is 1 --q : Quiet mode, no frame counters - default is deactivated +-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. + Currently, all values default to level 3 (full functionality). +-q : Quiet mode, limit printouts to terminal, default is deactivated The usage of the "IVAS_dec" program is as follows: @@ -228,7 +239,7 @@ Usage for IVAS: IVAS_dec.exe [Options] OutputConf Fs bitstream_file output_file Mandatory parameters: --------------------- OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA, - HOA2, HOA3, BINAURAL, BINAURAL_ROOM, EXT + HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, EXT By default, channel order and loudspeaker positions are equal to the encoder. For loudspeaker outputs, OutputConf can be a custom loudspeaker layout file. See below for details. @@ -246,6 +257,7 @@ Options: EVS RTP Payload Format. The SDP parameter hf_only is required. Reading RFC4867 AMR/AMR-WB RTP payload format is not supported. -Tracefile TF : VoIP mode: Generate trace file named TF +-fr5 : option to perform rendering + head-tracking with 5ms frame size -fec_cfg_file : Optimal channel aware configuration computed by the JBM as described in Section 6.3.1 of TS26.448. The output is written into a .txt file. Each line contains the FER indicator @@ -256,25 +268,67 @@ Options: Format files, the magic word in the mime file is used to determine which of the two supported formats is in use. default bitstream file format is G.192 --hrtf File : HRTF filter File used in ISm format and BINAURAL output configuration +-hrtf File : HRTF filter File used in BINAURAL rendering -T File : Head rotation specified by external trajectory File -otr tracking_type : Head orientation tracking type: 'none', 'ref', 'avg', 'ref_vec' or 'ref_vec_lev' (only for binaural rendering) --rf File : Reference rotation specified by external trajectory file +-rf File : Reference rotation specified by external trajectory File works only in combination with '-otr ref' mode --rvf File : Reference vector specified by external trajectory file +-rvf File : Reference vector specified by external trajectory File works only in combination with '-otr ref_vec' and 'ref_vec_lev' modes --render_config File : Renderer configuration option File +-render_config File : Renderer configuration option with parameters specified in File +-om File : Metadata output File for BINAURAL_SPLIT_PCM OutputConf -non_diegetic_pan P : panning mono non-diegetic sound to stereo -90<= P <=90, left or l or 90->left, right or r or -90->right, center or c or 0->middle --q : Quiet mode, no frame counter - default is deactivated +-exof File : External orientation trajectory File for simulation of external orientations +-dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be + specified) for binaural output configuration +-aeid ID : Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output config. +-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. + Currently, all values default to level 3 (full functionality). +-q : Quiet mode, limit printouts to terminal, default is deactivated The usage of the "IVAS_rend" program is as follows: --------------------------------------------------- -TBD +Usage: IVAS_rend [Options] + +Options: +-------- +-i File : Input audio File (WAV, raw PCM or scene description file) +-if Format : Audio Format of input file (e.g. 5_1 or HOA3 or META, use -l for a list) +-im Files : Metadata files for ISM (one file per object) or MASA inputs +-o File : Output audio File +-of Format : Audio Format of output file + Alternatively, it can be a custom loudspeaker layout File +-fs : Input sampling rate in kHz (16, 32, 48) - required only with raw PCM inputs +-tf File : Head rotation trajectory File for simulation of head tracking (only for binaural outputs) +-rf File : Reference rotation trajectory File for simulation of head tracking (only for binaural outputs) +-rvf File : Reference vector trajectory File for simulation of head tracking (only for binaural outputs) +-hrtf File : Custom HRTF File for binaural rendering (only for binaural outputs) +-rc File : Binaural renderer configuration File (only for binaural outputs) +-ndp P : Panning mono non-diegetic sound to stereo -90<= P <= 90 + left or l or 90->left, right or r or -90->right, center or c or 0 ->middle +-otr tracking_type : Head orientation tracking type: 'none', 'ref', 'avg' or `ref_vec` or `ref_vec_lev` (only for binaural outputs) +-lp Position : Output LFE position. Comma-delimited triplet of [gain, azimuth, elevation] where gain is linear + (like --gain, -g) and azimuth, elevation are in degrees. + If specified, overrides the default behavior which attempts to map input to output LFE channel(s) +-lm File : LFE panning matrix File (CSV table) containing a matrix of dimensions + [ num_input_lfe x num_output_channels ] with elements specifying linear routing gain (like --gain, -g). + If specified, overrides the output LFE position option and the default behavior which attempts to map input to output LFE channel(s) +-ndc : Turn off delay compensation +-g : Input gain (linear, not in dB) to be applied to input audio file +-l : List supported audio formats +-exof File : External orientation trajectory File for simulation of external orientations +-dpid ID : Directivity pattern ID(s) (space-separated list of up to 4 numbers can be + specified) for binaural output configuration +-aeid ID : Acoustic environment ID (number >= 0) for BINAURAL_ROOM_REVERB output config. +-fr5 : render audio with 5 ms framing +-smd : Metadata Synchronization Delay in ms, Default is 0. Quantized by 5ms subframes. +-level level : Complexity level, level = (1, 2, 3), will be defined after characterisation. + Currently, all values default to level 3 (full functionality). +-q : Quiet mode, limit printouts to terminal, default is deactivated MULTICHANNEL LOUDSPEAKER INPUT / OUTPUT CONFIGURATIONS @@ -309,10 +363,10 @@ An example custom loudspeaker layout file is available: ls_setup_16ch_8+4+4.txt RUNNING THE SELF TEST ===================== -A codec verification script is available in scripts/self_test.py. The -script demonstrates how to use the software at several operating points and -compares the output to a reference version/implementation. Please note: -In order to keep the run-time short it does not cover all operating +A codec verification script is available at https://forge.3gpp.org/rep/ivas-codec-pc/ivas-codec/ +in scripts/self_test.py. The script demonstrates how to use the software at several operating points +and compares the output to a reference version/implementation. +Please note: In order to keep the run-time short it does not cover all operating points or complete coverage. Documentation on the self_test.py can be found as a part of scripts/README.md. @@ -350,14 +404,32 @@ stvST32c.wav - 2 channels, 32000 Hz, 659200 samples per channel, clean spe stvST32n.wav - 2 channels, 32000 Hz, 620800 samples per channel, noisy speech stvST48c.wav - 2 channels, 48000 Hz, 988800 samples per channel, clean speech/audio stvST48n.wav - 2 channels, 48000 Hz, 931200 samples per channel, noisy speech -stv1MASA1TC48c.wav - 1 channel (1 MASA transport channel), 48000 Hz, 48000 Hz, 144000 samples -stv1MASA1TC48n.wav - 1 channel (1 MASA transport channel), 48000 Hz, 48000 Hz, 963840 samples -stv1MASA2TC48c.wav - 2 channels (2 MASA transport channel), 48000 Hz, 48000 Hz, 288000 samples per channel -stv1MASA2TC48n.wav - 2 channels (2 MASA transport channel), 48000 Hz, 48000 Hz, 963840 samples per channel -stv2MASA1TC48c.wav - 1 channel (1 MASA transport channel), 48000 Hz, 48000 Hz, 288000 -stv2MASA2TC48c.wav - 2 channels (2 MASA transport channel), 48000 Hz, 48000 Hz, 144000 samples per channel - - +stv1MASA1TC48c.wav - 1 channel (1 MASA 1 transport channel), 48000 Hz, 48000 Hz, 144000 samples +stv1MASA1TC48n.wav - 1 channel (1 MASA 1 transport channel), 48000 Hz, 48000 Hz, 963840 samples +stv1MASA2TC48c.wav - 2 channels (2 MASA 2 transport channels), 48000 Hz, 48000 Hz, 288000 samples per channel +stv1MASA2TC48n.wav - 2 channels (2 MASA 2 transport channels), 48000 Hz, 48000 Hz, 963840 samples per channel +stv2MASA1TC48c.wav - 1 channel (1 MASA 1 transport channel), 48000 Hz, 48000 Hz, 288000 +stv2MASA2TC48c.wav - 2 channels (2 MASA 2 transport channels), 48000 Hz, 48000 Hz, 144000 samples per channel +stvOMASA_1ISM_1MASA2TC48c.wav - 3 channels (1 discrete audio object and 1 MASA 2 transport channels), 48000 Hz +stvOMASA_1ISM_2MASA1TC32c.wav - 2 channels (1 discrete audio object and 2 MASA 1 transport channel), 32000 Hz +stvOMASA_1ISM_2MASA2TC48c.wav - 3 channels (1 discrete audio object and 2 MASA 2 transport channels), 48000 Hz +stvOMASA_2ISM_1MASA1TC16c.wav - 3 channels (2 discrete audio object and 1 MASA 1 transport channel), 48000 Hz +stvOMASA_2ISM_1MASA2TC48c.wav - 4 channels (2 discrete audio object and 1 MASA 2 transport channels), 16000 Hz +stvOMASA_2ISM_2MASA2TC48c.wav - 4 channels (2 discrete audio object and 2 MASA 2 transport channels), 48000 Hz +stvOMASA_3ISM_1MASA1TC32c.wav - 4 channels (3 discrete audio object and 1 MASA 1 transport channel), 32000 Hz +stvOMASA_3ISM_1MASA2TC16c.wav - 5 channels (3 discrete audio object and 1 MASA 2 transport channels), 16000 Hz +stvOMASA_3ISM_1MASA2TC32c.wav - 5 channels (3 discrete audio object and 1 MASA 2 transport channels), 32000 Hz +stvOMASA_3ISM_1MASA2TC48c.wav - 5 channels (3 discrete audio object and 1 MASA 2 transport channels), 32000 Hz +stvOMASA_3ISM_2MASA1TC48c.wav - 4 channels (3 discrete audio object and 2 MASA 1 transport channel), 48000 Hz +stvOMASA_3ISM_2MASA2TC32c.wav - 5 channels (3 discrete audio object and 2 MASA 2 transport channels), 32000 Hz +stvOMASA_3ISM_2MASA2TC48c.wav - 5 channels (3 discrete audio object and 2 MASA 2 transport channels), 48000 Hz +stvOMASA_4ISM_1MASA1TC48c.wav - 5 channels (4 discrete audio object and 1 MASA 1 transport channel), 48000 Hz +stvOMASA_4ISM_1MASA2TC48c.wav - 6 channels (4 discrete audio object and 1 MASA 2 transport channels), 48000 Hz +stvOMASA_4ISM_2MASA1TC48c.wav - 5 channels (4 discrete audio object and 2 MASA 1 transport channel), 48000 Hz +stvOMASA_4ISM_2MASA2TC48c.wav - 6 channels (4 discrete audio object and 2 MASA 2 transport channels), 48000 Hz + +MASA metadata file +------------------ For the MASA operation modes, in addition the following metadata files located in /scripts/testv/ folder are required: @@ -368,12 +440,17 @@ stv1MASA2TC48n.met stv2MASA1TC48c.met stv2MASA2TC48c.met +The detailed syntax of MASA metadata files can be found in 3GPP TS 26.258. + It is strongly recommended to align these files to the corresponding PCM audio files. The MASA metadata files can be generated with the latest version of the IVAS MASA C Reference Software, which was made available at https://www.3gpp.org/ftp/TSG_SA/WG4_CODEC/TSGS4_118-e/Docs/S4-220443.zip + +Object based audio metadata file +-------------------------------- For the ISM operation modes, in addition the following metadata files located at /scripts/testv/ folder are required: @@ -384,12 +461,15 @@ stvISM4.csv These are comma separated files (csv) which indicate the per object position in the format: -frame azimuth, elevation, radius, spread, gain, yaw, pitch, non-diegetic +azimuth, elevation, radius, spread, gain, yaw, pitch, non-diegetic + +Example metadata line with default values: +0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0 with the following meaning: | Parameter | format, value range | meaning --------------------------------------------------------------------------------------------------- -| azimuth | float, [-180,180] | azimuth; positive indicates left; default: 0 +| azimuth | float, [-180,180] | azimuth or panning; positive indicates left; default: 0 --------------------------------------------------------------------------------------------------- | elevation | float, [-90,90] | elevation; positive indicates up; default: 0 --------------------------------------------------------------------------------------------------- @@ -412,13 +492,39 @@ with the following meaning: The metadata reader accepts 1-8 values specified per line. If a value is not specified, the default value is assumed. + +HRTF filter file +---------------- For the HRTF filter File option, external HRTF filter Files are available in folder -/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data : +/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data: ivas_binaural_16kHz.bin ivas_binaural_32kHz.bin ivas_binaural_48kHz.bin +The HRTF filter file has a specific container format with a header and a sequence of entries. The +detailed syntax can be found in 3GPP TS 26.258. + + +Head rotation trajectory file +----------------------------- + +Input data representing the current rotation of the listeners head can be provided to the decoder +in an ASCII formatted file comprising four columns separated by commas. These columns contain +floating-point numbers representing either a quaternion or a Euler angle. The distinction between +these two input formats is made by a magic number in the first column. If this value is set to -3.0, +it is assumed that the remaining three columns contain three Euler angles. Otherwise, all four +columns are interpreted as a Quaternion. The input is expected to have one line for each subframe of 5 ms. + +In the case of Quaternion-based input, the columns are the w, x, y, z components of a unit quaternion. +Proper normalization to 1 shall be maintained in the input. The coordinate system is defined such that +the x-axis points from the left to the right ear, the y axis points into the direction of view, and the +z axis point from bottom to top. The origin is in the center of the head. + +In the case of Euler angle input, the first column contains the magic number -3.0, and the next three +columns are the Euler angles yaw, pitch, and roll. The rotations are applied in the order yaw-pitch-roll. +The yaw angle rotates around the z axis, the pitch angle rotates aroud the new y axis, and the roll angle +rotates around the new x axis. For the Head rotation operation modes, external trajectory files are available: @@ -428,21 +534,53 @@ headrot_case01_3000_q.csv headrot_case02_3000_q.csv headrot_case03_3000_q.csv -For Reference vector specified by external trajectory file, example files are available at -/scripts/trajectories folder. +Reference rotation/vector file +------------------------------ +The external reference orientation of the orientation tracking feature can either be provided as a +rotation (Quaternion or Euler angles) or as a pair of 3-dimensional positions (listener position +and acoustic reference position). + +The Reference Rotation format is identical to Head rotation trajectory file. + +The Reference Vector file format describes a pair of x/y/z positions, one for the listener and one +for the acoustic reference. The acoustic reference direction is defined by the vector from the +listener towards the acoustic reference position. The reference vector file is a CSV file with +comma as separator. Each line must contain a listener and an acoustic reference position in the +following order: + x axis position of the listener. + y axis position of the listener. + z axis position of the listener. + x axis position of the acoustic reference. + y axis position of the acoustic reference. + z axis position of the acoustic reference. + +For Reference vector specified by external trajectory file, example files are available in folder +/scripts/trajectories. + + +External orientation file +------------------------- +The external orientation file provides orientation information for any non-listener dependent orientations. +The orientations shall be given as floating point quaternions to the decoder/renderer in (w, x, y, z) order. +Additional information may be given as HeadRotIndicator, ExtOriIndicator, ExtIntrpFlag and ExtIntrpNFrames. +Each entry line represents a sub-frame entry, where the sub-frame resolution is 5ms. In the processing, the +quaternions are inverted to act as a rotation instead of orientation. + +The detailed syntax can be found in 3GPP TS 26.258. -For the Renderer configuration option operation modes, external configuration files are available: -rend_config_hospital_patientroom.cfg -config_recreation.cfg -config_renderer.cfg +Renderer config file +-------------------- +The renderer configuration file provides metadata for controlling the rendering process. This metadata +includes acoustics environment parameters and source directivity. The data can be provided using +binary bitstream or a text file. +The detailed syntax can be found in 3GPP TS 26.258. - ADDITIONAL SCRIPTS - ================== +Example renderer configuration files are available, e.g.: -Additional scripts for item generation and codec testing are available -in the directories scripts and tests. Please refer to scripts/README.md, resp. -tests/README.md for additional documentation. +rend_rend_config_hospital_patientroom.cfg +rend_config_recreation.cfg +rend_config_renderer.cfg diff --git a/readme_split_rendering.txt b/readme_split_rendering.txt new file mode 100644 index 0000000000000000000000000000000000000000..dbf76e012ff467d4ff5e2a098ec7652cb4773246 --- /dev/null +++ b/readme_split_rendering.txt @@ -0,0 +1,115 @@ +/****************************************************************************************************** + + (C) 2022-2023 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. + +*******************************************************************************************************/ + +For the IVAS Readme.txt, please refer to Readme.txt. + +This readme_split_rendering.txt describes a usage of the binaural split +rendering feature in the IVAS codec. This feature is implemented as part of +the following two separate programs: + + IVAS_dec Decoder + IVAS_rend Renderer + + + + INSTALLING THE SOFTWARE + ======================= + +Same as described in Readme.txt while the structure looks as follows: + +. +`-- c-code + |-- Makefile + |-- Workspace_msvc + |-- apps + |-- lib_com + |-- lib_debug + |-- lib_dec + |-- lib_enc + |-- lib_lc3plus + |-- lib_rend + |-- lib_util + |-- readme.txt + |-- readme_split_rendering.txt + + + + RUNNING THE SOFTWARE + ==================== + +The usage of the "IVAS_cod" program: +------------------------------------ + +Same as described in Readme.txt. + + + +The usage of the "IVAS_dec" program: +------------------------------------ + +Same as described in Readme.txt while more command-line options are avilable. + +Usage for IVAS: IVAS_dec.exe [Options] OutputConf Fs bitstream_file output_file + +Additional options: +------------------- +OutputConf : Output configuration: MONO, STEREO, 5_1, 7_1, 5_1_2, 5_1_4, 7_1_4, FOA, + HOA2, HOA3, BINAURAL, BINAURAL_ROOM_IR, BINAURAL_ROOM_REVERB, + BINAURAL_SPLIT_CODED, BINAURAL_SPLIT_PCM, EXT +-om File : Coded metadata File for BINAURAL_SPLIT_PCM output mode + + + +The usage of the "IVAS_rend" program: +------------------------------------- + +Same as described in Readme.txt while more command-line options are avilable. + +Usage: IVAS_rend [options] + +Additional options: +------------------- +-om File : Coded metadata File for BINAURAL_SPLIT_PCM output mode +-im File : Coded metadata File for BINAURAL_SPLIT_PCM input mode +-prbfi File : Split rendering option: bfi File + + + + + RUNNING THE SELF TEST + ===================== + +Same as described in Readme.txt except of the renderer configuration text file which +can additionally be used to configure the pre-rendering step of the split binaural +renderer. All split renderer parameters are optional. + +The detailed syntax of the renderer configuration text can be found in 3GPP TS 26.258. diff --git a/scripts/ThirdPartyLegalNotices/MATLAB.txt b/scripts/ThirdPartyLegalNotices/MATLAB.txt new file mode 100644 index 0000000000000000000000000000000000000000..d76afd5023a9a4ba2f51b42603d81c0733ec9ebc --- /dev/null +++ b/scripts/ThirdPartyLegalNotices/MATLAB.txt @@ -0,0 +1,1608 @@ +Applies to MATLAB R2023a. + +The MathWorks, Inc. Software License Agreement + +IMPORTANT NOTICE + +THIS IS THE SOFTWARE LICENSE AGREEMENT (THE "AGREEMENT") OF THE MATHWORKS, INC. +("MATHWORKS") FOR THE PROGRAMS. THE PROGRAMS ARE LICENSED, NOT SOLD. READ THE +TERMS AND CONDITIONS OF THIS AGREEMENT CAREFULLY BEFORE COPYING, INSTALLING, OR +USING THE PROGRAMS. FOR INFORMATION ABOUT YOUR LICENSE OFFERING, CONSULT THE +PROGRAM OFFERING GUIDE PRESENTED AFTER THE AGREEMENT. + +THE AGREEMENT REPRESENTS THE ENTIRE AGREEMENT BETWEEN YOU (THE "LICENSEE") AND +MATHWORKS CONCERNING YOUR RIGHTS TO INSTALL AND USE THE PROGRAMS UNDER THE +LICENSE OFFERING YOU ACQUIRE. + +YOU MUST ACCEPT THE TERMS OF THIS AGREEMENT TO COPY, INSTALL, OR USE THE +PROGRAMS. IF YOU DO NOT ACCEPT THE LICENSE TERMS, THEN YOU MUST IMMEDIATELY +STOP USING THE PROGRAMS. + +IF YOU TERMINATE THIS LICENSE FOR ANY REASON WITHIN THIRTY (30) DAYS OF PROGRAM +DELIVERY (THE "ACCEPTANCE PERIOD") YOU WILL RECEIVE A FULL REFUND FROM THE +AUTHORIZED DISTRIBUTOR FROM WHOM YOU ACQUIRED THE PROGRAMS, OR FROM MATHWORKS +IF YOU ACQUIRED THE PROGRAMS DIRECTLY FROM MATHWORKS. + + +1. CAPITALIZED TERMS. Capitalized terms used in this Agreement and not +otherwise defined in this Agreement shall have the definitions ascribed to them +in Article 23 below. + +2. LICENSE GRANT. MathWorks hereby grants to Licensee, subject to the terms of +this Agreement, a nonexclusive license (the "License") to: + + 2.1. install and use the Programs solely on Computers controlled by + Licensee, in accordance with the License Offering acquired, and solely for + Internal Operations; + + 2.2. use the Programs as expressly allowed in the Program Offering Guide, + for instance to deploy Applications, consistent with the terms of the + License Offering acquired; + + 2.3. provide reasonable access to online Documentation on Licensee's + intranet, provided it is not accessible over the open Internet; and + + 2.4. print portions of the online Documentation for reasonable use by + Licensed Users. + +3. LICENSE RESTRICTIONS. The License granted is subject to the express +restrictions set forth below and any other restrictions set forth in any signed +agreement between MathWorks and Licensee. Licensee shall not, and shall not +cause or permit any other individual or entity to, directly or indirectly: + + 3.1. modify or create any derivative work of a Program, except as expressly + permitted in the Program Offering Guide; + + 3.2. use a Program for any act which infringes copyright of a Program, for + instance, by developing, producing, or testing a computer program + containing a feature or functionality that is substantially similar in its + expression to the expression contained in a Program; + + 3.3. disassemble, decompile, or reverse engineer a Program, or attempt to + gain access to its method of operation or source code; + + 3.4. adapt, translate, copy, convert, use, test, benchmark, or determine + the expression or design of, a Program or any materials derived from or + generated by a Program, in order to make or distribute an application or + software, a principal purpose of which, as reasonably determined by + MathWorks, is to perform the same or similar functions as a Program or + other MathWorks product or service or which replaces any component of a + Program or other MathWorks product or service. Licensee shall not use a + Program to compete with the products or businesses of MathWorks, including + by distributing libraries or any form of an entire Program or Program + Component; + + 3.5. rent, lease, or loan the Programs, use the Programs for supporting + Third Parties' use of the Programs, time share the Programs, or provide + service bureau or similar service use; + + 3.6. sell, license, sublicense, provide access, publish, display, + distribute, disseminate, assign, or otherwise transfer to a Third Party the + Programs or any copy thereof, or any license or other rights thereto, in + whole or in part, without MathWorks' prior written consent, except as + expressly permitted in the Program Offering Guide; + + 3.7. alter, remove, or obscure any copyright, trade secret, patent, + trademark, logo, proprietary and/or other legal notices or license files on + or in copies of a Program or Program Component, including copies made for + backup purposes; + + 3.8. provide access (directly or indirectly) to any Program via a web or + network interface, except as expressly permitted in the License Offering; + + 3.9. copy, make available for copy, or otherwise reproduce the Programs + except either (a) as may be required for their installation for the purpose + of executing the Program in accordance with the License Offering, or (b) to + make a reasonable number of copies solely for back-up purposes; + + 3.10. access or use MathWorks products or services that Licensee is not + currently licensed to access or to use; + + 3.11. allow the Programs to be accessed or used by a Third Party except as + expressly permitted in the Program Offering Guide; + + 3.12. disclose or transfer the activation key, login credentials, and/or + license file to a Third Party, or allow them to be used by a Third Party + without written authorization from MathWorks or as permitted by the License + Offering acquired; + + 3.13. republish the Documentation, except as expressly permitted in Article + 2 of this Agreement; + + 3.14. create a server or automated system for the Transformation Programs + without obtaining a license from MathWorks that expressly allows such use + (see the Program Offering Guide); + + 3.15. disable, circumvent, or workaround any technical limitations in the + Programs; + + 3.16. access, enable access to, modify, translate, use or otherwise make + available temporary intermediate files produced by a Program; + + 3.17. make any use of the License on behalf of or for the benefit of a + Third Party or Affiliate in any manner that would constitute a violation of + the License if such use were directly made by such person, or cause any + Third Party or Affiliate to make any use of the License on behalf of or for + the benefit of Licensee or an Affiliate in any manner that would constitute + a violation of this License if such use were directly made by Licensee; + + 3.18. acquire the License if a principal purpose of the acquisition is to + transfer or assign the License to a Third Party or Affiliate unless + expressly permitted by MathWorks; + + 3.19. mechanize or automate the process of checking out or in license keys + for one or more Programs, including by running a second session of a + Program, running a Program to serve multiple users, or rebooting the + License Manager, for a principal purpose of minimizing the License check + out time of any Programs, or otherwise circumventing the intended License + Manager operation; + + 3.20. use a License Manager other than the one which was provided with the + most recent version of the Programs Licensee is using; + + 3.21. take any action that requires any portion of the Programs to be + subject to end-user rights incompatible or inconsistent with the + restrictions set forth in this Agreement; + + 3.22. allow access to the Programs by an individual who is under 13 years + old or otherwise is under the lawful age for providing consent without + obtaining the advance written consent of a parent or guardian and storing + such consent in a retrievable way; + + 3.23. create an Application (a) providing capability similar to the + capabilities of any of the Programs; (b) providing functionality or + behavior similar to that of the MATLAB command line or scripting and + programming capabilities; (c) allowing operation of the code generation + capabilities of Programs; (d) providing access to an entire Program or a + substantial portion of a Program; or (e) enabling evaluation of end-user + code or expressions; + + 3.24. distribute an Application that includes library header files from any + of the Programs or any Program Component; + + 3.25. distribute an Application that reads MAT-files (i.e., files in the + MATLAB MAT data file format) using the MAT file API to Third Parties, + unless such Application also allows such Third Parties to write MAT-files + for the same data; + + 3.26. distribute an Application without an Application License, unless the + Application is solely for Internal Operations or is part of an embedded + system that has no provision for licensing to its end-users; + + 3.27. distribute an Application unless all copyright and proprietary + notices for the Programs are duplicated and included with Licensee's own + copyright notices for the Application, wherever they appear; and + + 3.28. make copies of the MATLAB Runtime accessible to any Third Party + separate from or for use other than with an Application, or provide the + MATLAB Runtime for service bureau or similar service use. + +4. PROGRAM TRIAL EVALUATION; COMPLIMENTARY LICENSES. Licensee agrees to use +any Program provided to Licensee as a trial evaluation only for the period of +the trial evaluation which may be controlled by a license key code, only to +evaluate it individually for potential purchase of a license to the Program as +an end-user, to conduct no business with it, to remove it and all result files +produced from any of Licensee's Computers at the end of the trial evaluation +period and to comply with all other obligations and restrictions in this +Agreement. Licensee agrees to use any Program awarded to Licensee on a +complimentary basis for student engineering competitions and similar +competitions, course support, research, fellowship participation, and teaching +assistance only for the specific purpose and period of the award, to conduct no +business with it, and to comply with all other obligations and restrictions in +the award letter and in this Agreement. + +5. ADDITIONAL FEES. The fees for the License are determined based upon the +country where all Licensed User(s) are principally located. Additional fees +may apply to a transfer of the License, or the principal location of any +Licensed User, to another country, or to a contract for global use. + +6. RETENTION OF RIGHT, TITLE AND INTEREST BY MATHWORKS AND ITS LICENSORS; THIRD +PARTY LICENSORS. The Programs are licensed not sold. The Programs, including +Derivative Forms of the Programs and MATLAB Runtime, shall at all times remain +the property of MathWorks and/or MathWorks' Licensors. Licensee shall have no +right, title, or interest therein, except as expressly set forth in this +Agreement. Licensee shall take appropriate action by instruction, agreement, or +otherwise with any persons permitted access to the Programs, so as to enable +Licensee to satisfy its obligations under the terms of this Agreement, +including disabling access to the Programs, in the event of a transfer of the +License. Licensee shall include the following notice in the About Box, or +similar visible location, of any Application it distributes, and in the +applicable documentation distributed with each copy of the Application: +"MATLAB(r). (c) 1984-[INSERT YEAR MATLAB VERSION PUBLISHED] The MathWorks, +Inc." Licensee agrees to employ the same security measures to protect the +Programs, Derivative Forms, and MATLAB Runtime as it uses to safeguard +Licensee's own proprietary intellectual property, but in no event less than +reasonable care. Programs may include Third Party software licensed to Licensee +under these terms or under separate terms of Licensors that are accessible +within the relevant Programs in the thirdpartylicenses.txt file. Should such +Third Party software be provided under the Lesser General Public License, +Licensee may make modifications of the work identified in Section 6 of the +Lesser General Public License for Licensee's own use and reverse engineering +for debugging such modifications. Any Third Party services or data accessible +through an interface in a Program are governed solely by the Third Party's +terms of use or Licensee's own agreement with the Third Party. + +7. SOFTWARE MAINTENANCE SERVICE. During any Software Maintenance Service term, +MathWorks shall provide its customary Software Maintenance Service for the +Programs. As further described in the Program Offering Guide, Software +Maintenance Service consists of: delivering subsequent releases of the +Programs, if any, that are not charged for separately; exerting reasonable +efforts to both (a) provide, within a reasonable time, workarounds for any +material programming errors in the current release of the Programs that are +directly attributable to MathWorks, and (b) correct such errors in subsequent +releases, provided Licensee gives MathWorks sufficient information to identify +the errors; and technical support for the current release. Technical support +means assistance by telephone, web, and e-mail with the installation and/or use +of the then-current release of the licensed Programs, including all available +bug fixes and patches, and their interaction with supported hardware and +operating systems ("Platforms"). Software Maintenance Service may include +additional administrative support services for the licensed Programs and access +to certain online features and services made available by MathWorks from time +to time. Levels of support and services available may vary by License +Offering. If Licensee's Software Maintenance Service expires, Licensee must pay +applicable fees to resume lapsed Software Maintenance Service. MathWorks +reserves the option to discontinue, in whole or in part, and at any time, +offering Software Maintenance Service and/or technical support for any Program, +feature of a Program, or Platform or to refuse to provide Software Maintenance +Service to a Licensee whom it reasonably believes is in breach of this +Agreement. + +8. TERM AND TERMINATION. + + 8.1. Term. This Agreement shall continue until the earlier of termination + by MathWorks or Licensee as provided below or the expiration of the term of + all Licenses granted hereunder. + + 8.2. Termination by Licensee. Licensee may terminate a License at any + time, for any reason. Licensee shall not be entitled to any refund if a + License is terminated, except for License fees paid for any Programs for + which the Acceptance Period has not expired at the time of termination. + + 8.3. Termination by MathWorks. MathWorks may terminate this Agreement and + all Licenses granted hereunder by written notice to Licensee if Licensee + breaches any material term of this Agreement, including failure to pay any + License fees due, and Licensee has not cured such breach within sixty (60) + days of written notification. MathWorks may immediately terminate this + Agreement and all Licenses granted hereunder if, after requesting and + failing to receive from the Licensee adequate assurances of compliance with + the terms of this Agreement, MathWorks reasonably believes that Licensee is + or is intending to breach any material term of this Agreement. MathWorks + may immediately terminate upon notice this Agreement and all Licenses + granted hereunder should Licensee breach the terms and conditions of + Articles 2, 3, 6, and/or 10. If Licensee or any of its Affiliates + commences or participates in any legal proceeding against MathWorks or any + of MathWorks' Affiliates challenging or asserting any intellectual property + rights in or against any of the Programs licensed hereunder, then MathWorks + may, without waiving any other legal rights or remedies available to it, + immediately terminate this License. The foregoing sentence only applies to + (a) a Licensee who has as its principal business the holding of patents and + who does not engage, either directly or through an Affiliate, in any + material active business of making products that embody the patents or (b) + a Licensee who engages, either directly or through an Affiliate, in a + principal business of licensing or making available commercial off the + shelf software to Third Parties. The provisions of this Article 8.3 apply + to all Licenses, including Perpetual Licenses. + + 8.4. Effect of Termination. Upon termination for any reason, Licensee + shall promptly return all but archival copies of the Programs in Licensee's + possession or control, or promptly provide written certification of their + destruction. + + 8.5. Survival. The following provisions survive any termination of this + Agreement: Articles 1, 3, 6, 8-11, and 13-23. + + 8.6. Effect of Termination on Applications. Termination of this Agreement + will not affect the terms of any Application Licenses for Applications that + have been placed in use prior to the effective date of termination. + +9. PUBLICITY. Licensee may not use MathWorks' name, trade names, logos, or +other trademarks of MathWorks or any of its Affiliates or Licensors in any +advertising, promotional literature or any other material, whether in written, +electronic, or other form, distributed to any Third Party, except in the form +provided by MathWorks, and then solely for purposes of identifying MathWorks' +Programs. + +10. EXPORT CONTROL. The Programs are subject to U.S. export control laws and +may be subject to applicable export and import laws and regulations in other +jurisdictions. Notwithstanding any other term of this Agreement or Third Party +agreement, Licensee's rights under this Agreement may not be exercised by +Licensee or any Third Party in violation of such laws and regulations, nor may +this Agreement be transferred to any party where doing so would result in such +a violation. The terms of any limitation on the use, transfer or re-export of +the Programs included in any Destination Control Statement or other document +provided by MathWorks for the purpose of export control shall prevail over any +term in this Agreement. It shall be Licensee's responsibility to comply with +the latest United States or other governmental export and import regulations +with respect to all use of the Programs and Applications. + +11. FEDERAL ACQUISITION. This provision applies to all acquisitions of the +Programs and Documentation by, for, or through the federal government of the +United States. By accepting delivery of the Programs or Documentation, the +government hereby agrees that this software or documentation qualifies as +commercial computer software or commercial computer software documentation as +such terms are used or defined in FAR 12.212, DFARS Part 227.72, and DFARS +252.227-7014. Accordingly, the terms and conditions of this Agreement and only +those rights specified in this Agreement, shall pertain to and govern the use, +modification, reproduction, release, performance, display, and disclosure of +the Programs and Documentation by the federal government (or other entity +acquiring for or through the federal government) and shall supersede any +conflicting contractual terms or conditions. If this License fails to meet the +government's needs or is inconsistent in any respect with federal procurement +law, the government agrees to return the Programs and Documentation, unused, to +MathWorks. + +12. EUROPEAN UNION SOFTWARE DIRECTIVE. For any Licensed User properly licensed +to use the Programs within the European Union, any contractual provisions of +this Agreement contrary to laws implemented pursuant to Article 6 of Directive +2009/24/EC of the European Parliament and of the Council of 23 April 2009 on +the legal protection of computer programs or to the exceptions provided for in +Article 5(2) and (3) of such Directive shall be null and void solely to the +extent decompiling, disassembling, or otherwise reverse-engineering of the +Programs is necessary to enable the Licensee to achieve the interoperability of +an independently created program with the Programs or any other permitted +objectives specified by such laws implemented under such Directive +(collectively, the "Permitted Objectives"), consistent with the Directive, +provided that any such information gained is used solely for such Permitted +Objectives and solely in the European Union. + +13. TAXES, DUTIES, CUSTOMS. Absent appropriate exemption certificates or other +conclusive proof of tax exempt status, Licensee shall pay all applicable sales, +use, excise, value-added, and other taxes, duties, levies, assessments, and +governmental charges payable in connection with this Agreement or the Licenses +granted hereunder, excluding taxes based on or measured by MathWorks' income, +for which MathWorks shall be solely responsible. + +14. ASSIGNMENT. Licensee may not assign or otherwise transfer this Agreement +or any License hereunder, by operation of law or otherwise, without the written +consent of MathWorks. Licensee agrees that MathWorks may withhold such consent +if it reasonably believes that Licensee is in breach of this Agreement or that +the proposed assignment or transfer will cause a breach of this Agreement. In +the case of any permitted or other lawful assignment or transfer, the terms of +this Agreement including any License hereunder shall be binding upon, and inure +to the benefit of, the transferee or assignee. + +15. LIMITATION OF LIABILITY. The Programs should not be relied on as the sole +basis to solve a problem or implement a design whose incorrect solution or +implementation could result in injury to person or property. If a Program is +employed in such a manner, it is at the Licensee's own risk and MathWorks and +its Licensors explicitly disclaim all liability for such misuse to the extent +allowed by law. MathWorks' and MathWorks' Licensors' liability for death or +personal injury resulting from negligence or for any other matter in relation +to which liability by law cannot be excluded or limited shall not be excluded +or limited. Except as aforesaid, (a) any other liability of MathWorks and its +Licensors (whether in relation to breach of contract, negligence or otherwise) +shall not in total exceed the amount paid to MathWorks under this Agreement in +the twelve month period preceding the claim in question, for the Program with +respect to which the liability in question arises; and (b) MathWorks and its +Licensors shall have no liability for any indirect or consequential loss +(whether foreseeable or otherwise and including loss of profits, loss of +business, loss of opportunity, and loss of use of any computer hardware or +software). Some states do not allow the exclusion or limitation of incidental +or consequential damages, so the above exclusion or limitation may not apply to +Licensee. Licensee agrees that prior to using or distributing any Application, +it will thoroughly test and validate the Application and will be solely +responsible for any problems or failures. + +16. LIMITED WARRANTY/LIMITATION OF REMEDIES. MathWorks warrants that +MathWorks, on its own behalf or through its Licensors, has the right to grant +the License rights hereunder. MathWorks warrants that the physical media +provided shall be free from defects in material and workmanship for a period of +ninety (90) days from delivery, or it will be replaced by MathWorks at no cost +to Licensee. MathWorks further warrants, for a period of one (1) year from +delivery or for the term of the License, whichever is less, that each copy of +each Program will conform in all material respects to the description of such +Program's operation in the Documentation. In the event that a Program does not +operate as warranted, Licensee's exclusive remedy and MathWorks' sole liability +under this warranty shall be the correction or workaround by MathWorks of major +defects within a reasonable time. Should such correction or workaround be +impractical, MathWorks may, at its option, terminate the relevant License and +refund the initial License fee paid to MathWorks for such Program. All +requests for warranty assistance should be directed to The MathWorks, Inc., 3 +Apple Hill Drive, Natick, MA 01760-2098, U.S.A. + +17. DISCLAIMER OF WARRANTIES. Except for warranties expressly set forth in +Article 16 of this Agreement (or as implied by law where the law provides that +the particular terms implied cannot be excluded by contract), any and all +Programs, Documentation, and Software Maintenance Service are delivered "as is" +and MathWorks makes and the Licensee receives no additional express or implied +warranties. MathWorks and its Licensors hereby expressly disclaim any and all +other conditions, warranties, or other terms of any kind or nature concerning +the Programs, Documentation, and Software Maintenance Service (including, +without limitation, any with regard to infringement, merchantability, quality, +accuracy, or fitness for a particular purpose or Licensee's purpose). +MathWorks also expressly disclaims any warranties that may be implied from +usage of trade, course of dealing, or course of performance. Except for the +express warranties stated in Article 16 of this Agreement, the Programs, +Documentation, and Software Maintenance Service are provided with all faults, +and the entire risk of satisfactory quality, performance, accuracy, and effort +is with Licensee. MathWorks does not warrant that the Programs and +Documentation will operate without interruption or be error free. Some states +and countries do not allow limitations on how long an implied warranty lasts, +so the above limitation may not apply to Licensee. The warranty in Article 16 +gives Licensee specific legal rights and Licensee may also have other rights +which vary from state to state and country to country. Licensee accepts +responsibility for its use of the Programs and the results obtained from their +use. MathWorks shall have no support or warranty obligations, and disclaims all +liability, for Applications developed or distributed by Licensee. Licensee will +defend, indemnify, and hold harmless MathWorks and its Licensors, officers, +directors, employees, agents and resellers from and against any damages, +liabilities, costs and expenses (including reasonable fees of MathWorks' +attorneys) arising out of any Third Party claim or demand based on or arising +from, out of or in connection with (i) the creation, use, or distribution of +any Applications by Licensee or any of its Affiliates or (ii) the use of the +Programs by Licensee or any of its Affiliates in breach of this Agreement. + +18. GOVERNING LAW; JURISDICTION. This Agreement shall be interpreted, enforced +and construed and governed in all respects by the laws of the State of +Delaware, United States of America, without regard to its conflicts of law +provisions. Both parties consent to the jurisdiction of the federal and state +courts located in the State of Delaware and consent to the service of process, +pleadings and notices in connection with any and all actions initiated in such +courts. The parties agree that a final judgment in any action or proceeding in +Delaware shall be conclusive and binding and may be enforced in any other +jurisdiction. To the extent that the acceptance of a contractual term +contained in this Agreement is prohibited by reason of Licensee's sovereign +immunity or any foreign, federal or state constitution, law, treaty, or +regulation, the conflicting term of this Agreement shall be superseded only to +the extent required. If any provision of this Agreement shall be otherwise +unlawful, void, or unenforceable, that provision shall be enforced to the +maximum extent permissible. In either case, the remainder of this Agreement +shall not be affected. The parties agree that neither the U.N. Convention on +Contracts for the International Sale of Goods nor the Uniform Computer +Information Transactions Act, or any version thereof, in any form ("UCITA"), +shall apply to this Agreement. To the extent that UCITA is applicable by +reason of its adoption in a state, the parties agree to opt out of the +applicability of UCITA pursuant to their Opt-Out provision(s). + +19. COMPLIANCE WITH LICENSES. Licensee agrees to notify MathWorks promptly +upon discovery of any failure to comply with this Agreement. Licensee agrees +that, no more than once every twelve (12) months or within a reasonable time +after a transfer, in addition to any other remedies at law or in equity, +MathWorks or its authorized representative shall, upon reasonable prior notice, +have the right to inspect Licensee's and Licensee's Affiliates' records, +systems, and facilities, during normal business hours, to verify that +Licensee's and its Affiliates' use of the Programs is in conformity with valid +licenses and otherwise complies with this Agreement. If a verification +discloses that Licensee's or any of its Affiliates' use is not in conformity +with a valid license, Licensee shall immediately take all necessary steps to +cure any past defaults, including paying any unpaid license fees, to bring +Licensee's or any of its Affiliates' use into conformity. + +20. LICENSE MANAGEMENT AND USAGE INFORMATION. The Programs contain technology +for license management and for the prevention of unlicensed use. When Programs +are activated, installed, or first used by a Licensed User, and periodically +for license management and product improvement purposes, information about the +License, use of the Programs, and the Computer will be transmitted to +MathWorks. This data includes the License information, Computer identification, +and location. Some License Offerings also require the MathWorks Account +information and the operating system user name for the Licensed User. See +MathWorks privacy policy at www.mathworks.com/privacy. + +21. HEADINGS. The inclusion of headings is for convenience of reference only +and shall not affect the construction or interpretation of this Agreement. + +22. ENTIRE AGREEMENT. This Agreement contains the entire understanding of the +parties and may not be modified, amended, or superseded except by a written +agreement signed by MathWorks and Licensee. In the event of any conflict +between this Agreement and any purchase order executed by Licensee (whether +executed before or after this Agreement), this Agreement shall prevail. + +23. DEFINITIONS. The definitions are an integral part of this Agreement. + + 23.1. "Affiliate" means a legal entity which is controlled by, or controls, + or is under common control with Licensee. Control means (i) beneficial + ownership of at least fifty percent (50%) of the voting securities of a + corporation or other business organization with voting securities, or (ii) + a fifty percent (50%) or greater interest in the profits and capital of a + partnership or other business organization without voting securities, + provided that no other individual or entity other than the Licensee also + has an equal fifty percent (50%) ownership or interest in the legal entity. + Notwithstanding the foregoing, unless MathWorks provides its express + written consent to treat the entity as an Affiliate, an Affiliate shall not + include any entity to which MathWorks has expressly refused to license (or + grant access under a license to) its software products or any entity that + had a license for MathWorks software products that MathWorks expressly + terminated. + + 23.2. "Application" means binary executable software that runs + independently of the Programs, consisting of one or more software files + that Licensee has created by either (a) using a Program to compile or + translate Licensee created Source Code or (b) incorporating or linking any + part of any compiled Source Code, library file, or other Program Component + provided with the Program. An Application must contain original code + developed by Licensee and must provide substantial functionality not + contained in, or provided by, the Program Components that are incorporated + into such Application. If a software file created by a Licensee + incorporates Program Components, but does not meet the requirements of the + previous two sentences, then it is a Derivative Form (as defined below). + An Application may contain Linked Object Code which, if such Object Code + was not Linked to the Application and was a standalone file, would + otherwise have been deemed a Derivative Form. + + 23.3. "Application License" means a license for an Application that + contains terms and conditions that (a) are at least as restrictive as the + terms and conditions of this Agreement; (b) explicitly exclude MathWorks + and its Licensors from all liability for damages or remedies; (c) do not + provide a warranty for any Program; (d) do not transfer or convey any use + or deployment rights for any Program without MathWorks' consent; and (e) + prohibit the removal of any copyright, trademark, logo, proprietary rights, + disclaimer or warning notice included on or embedded in any part of the + deployed Application. Further, if Licensee's Application is generated with + the MATLAB Compiler, then Licensee's Application License shall include or + incorporate by reference the terms of the MATLAB Runtime License included + in a text file at [MCR Install Directory]\[version_number]\MCR_license.txt + located within the installation for the MATLAB Runtime. + + 23.4. "Computer" means either (i) a single physical hardware system + containing a single motherboard running an operating system, or (ii) a + virtual machine running an operating system. + + 23.5. "Derivative Form" means one or more software files that Licensee has + derived from one or more Program Components (including without limitation + by incorporating, translating, or modifying, in whole or in part, any + Program Component), and which, if modified or copied without MathWorks' + authorization, would constitute a copyright infringement or breach of the + Agreement. A software file created by Licensee which qualifies as an + "Application" under the above definition shall not be deemed a Derivative + Form. + + 23.6. "Documentation" means the user guides, if any, accompanying delivery + of a Program or made available at mathworks.com/help, as may be updated + from time to time, including the bug reports made available at + mathworks.com/support/bugreports and the Program Offering Guide. + Documentation may be delivered in any medium or language. + + 23.7. "Internal Operations" means the use of a Program by employees, + consultants, student interns, and software administration contractors of + Licensee or an Affiliate on behalf of the Licensee or Affiliate. + + 23.8. "License Manager" means the license management software provided for + use with the Program(s). + + 23.9. "License Offering" means the specific rights, restrictions, and + obligations under which Licensee may install and use a Program for the + applicable License term as further described in the Program Offering Guide. + + 23.10. "Licensed User" means an individual authorized by MathWorks, + Licensee or an Affiliate to use the Programs for Licensee's Internal + Operations, to the extent permitted by the License Offering acquired. + + 23.11. "Licensee" means you, whether an individual or an entity, to whom + MathWorks grants the License, and who is responsible for complying with the + contractual obligations of this Agreement and ensuring that anyone + permitted access to the Programs also complies with such obligations. + + 23.12. "Licensor" means the person who, or entity which, grants a license + to MathWorks to redistribute that person's or entity's intellectual + property. + + 23.13. "Linked" means an executable or loadable file created by a compiler + or linker program combining Object Code module files. + + 23.14. "MATLAB Runtime" means MATLAB Runtime support libraries and other + files for deployment of Applications. + + 23.15. "Object Code" means the code created by a system compiler from + source code; also called "machine-readable code." Object Code can be + Linked with an appropriate linker to resolve address references and may be + combined with other Object Code for targeted execution on a specific + processor. Object Code includes "Object Code libraries" and "shared + libraries," which are groupings of Object Code for specific purposes. + + 23.16. "Perpetual License" means the right to use the License indefinitely + provided that the Licensee always remains in compliance with the terms of + this Agreement. + + 23.17. "Program" means the software licensed hereunder, including Program + Components, Documentation, enhancements, and error corrections. Each + product licensed hereunder is a separate Program. + + 23.18. "Program Component" means any portion of, or file provided with, a + Program. + + 23.19. "Program Offering Guide" means the Program Offering Guide for this + release, presented after this Agreement. + + 23.20. "Source Code" means human-readable code written in a higher-level + language such as C, C++, Java, MATLAB, MDL, SLX, VHDL, Verilog, or Fortran, + which must be translated or compiled into machine-readable code before it + can be executed by a computer. Source Code also includes header files and + other human-readable files necessary for a Program to be compiled in the + higher-level language. + + 23.21. "Third Party" means any person or legal entity that is not + MathWorks, the Licensee, or an Affiliate. + + 23.22. "Transformation Program" means a Program whose primary purpose is to + transform input files into output files without user interaction, including + Programs used for the principal purpose of compiling, translating, or + generating Source Code and Programs used for the principal purpose of + verification, validation or inspection of design or Source Code, or report + generation. See the Program Offering Guide for a full list of + Transformation Programs. + + +03/2017 + +20365 + + + +Program Offering Guide + +Release 2023a + +About This Guide + +This Program Offering Guide is an integral part of the Documentation for +Release 2023a. + +* Part One describes each of the different License Offerings. + +* Part Two explains your limited rights to modify Program Components and + distribute Applications that are made using the Programs that you license + from MathWorks. + +* Part Three explains how you are permitted to use the Programs in Automation + Servers and External Applications, and identifies the Transformation Programs + for which Client Access Licenses may be required to provide server access or + system automation. + +* Part Four provides information about MathWorks Software Maintenance Service. + +* Part Five contains a Glossary of definitions of capitalized terms used in + this Program Offering Guide. Any capitalized terms used in this Program + Offering Guide that are not in the Glossary are defined in The MathWorks, + Inc. Software License Agreement (the "Software License Agreement"). + +The Software License Agreement contains additional rights, restrictions, and +obligations that apply to your licensed Programs and Applications. + + +Part One: License Offerings + +A License Offering is comprised of: + +(i) a License Option that specifies principally how the License Offering works +and is measured or counted; + +(ii) a License Use that specifies who can use the Programs in terms of the +types of organizations, individuals, or activities eligible to use the License +Offering; and, + +(iii) Specific Program Use Rights for individual Programs, if applicable. + +Each License Offering is subject to the applicable term of the License: +Perpetual, Annual, or other specific term. + +The sections below provide the specific details of each License Option, License +Use, and the Specific Program Use Rights. + +1. License Options + + 1.1. Individual License Option + + (i) The Individual License Option provides for use of Programs by a single + Named User. + + (ii) A Named User may install the Programs on up to four (4) different + Computers but may not use a Program on more than two (2) Computers + simultaneously, except that Student and Home Licenses are limited to a + single Computer. + + (iii) The Licensee may redesignate the Named User authorized to use a + Program, whether temporarily or not, up to four (4) times in any twelve + (12) month period, except that Student and Home Licenses are not + transferable. + + (iv) The Computer login of the Named User may not be shared with any other + individual. + + 1.2. Designated Computer License Option + + (i) The Designated Computer License Option provides for use of Programs on + a single, physical (not virtual) designated Computer. + + (ii) The Programs may be operated by only one Licensed User at any given + time. + + (iii) The Programs must be operated from the Designated Computer's console, + except for remote access as allowed in Section 1.8 below. + + (iv) The Licensee may redesignate the Computer, whether temporarily or not, + up to four (4) times in any twelve (12) month period. + + 1.3. Network Named User License Option + + (i) The Network Named User License Option provides for a specified number + of designated Named Users to use the Programs on any Computer that is + connected to the same, single License Manager. + + (ii) The License Manager must be activated on a single Computer. + + (iii) The Programs may be operated by Named Users on Computers served by + the same, single License Manager up to the maximum number of Named Users + licensed for each Program. + + (iv) A Named User may not use a Program on more than two (2) Computers + simultaneously. + + (v) The Programs may be installed on individual Computers to accelerate + startup times as long as the use on all Computers is controlled by the + same, single License Manager. + + (vi) The Licensee may redesignate the Named Users for a Program, whether + temporarily or not, up to four (4) times in any twelve (12) month period. + + (vii) A Computer login of a Named User may not be shared with any other + individual. + + (viii) For Programs that require MATLAB, Named Users of such Programs must + also have a Network Named User license for MATLAB. + + (ix) The Network Named User License Option is only available for Standard + + 1.4. Concurrent License Option[fn1] + + (i) The Concurrent License Option provides for a specified number of + concurrent keys for each Program on the License that may be used + simultaneously by Licensed Users on any Computer that is connected to the + same, single License Manager. + + (ii) Before using a Program on any Computer, the Licensed User must check + out a separate concurrent key from the License Manager for that Computer. + + (iii) The License Manager must be activated on a single Computer. + + (iv) The Programs may be installed on individual Computers to accelerate + startup times as long as the use on all Computers is controlled by the + same, single License Manager. + + (v) Licensees are prohibited from providing Program access to users located + outside the Country[fn2] for which the Program is licensed unless Licensee + has contracted for global use. + + (vi) For Academic and Classroom License Uses, installation of the Programs + on students' own Computers is not permitted. + + 1.5. Total Headcount License Option + + (i) The Total Headcount License Option provides for use of the Programs by + a certain institution, organization, location, or other identified group of + users, in accordance with the Campus-Wide and Primary and Secondary Schools + License Uses described in Section 2 below. + + 1.6. Enterprise License Option + + (i) The Enterprise License Option provides for use of the Programs by all + employees and consultants of Licensee and approved Affiliates on Computers + controlled by Licensee, and is only available for Standard License Use. + + 1.7. Counted Individual License Option + + (i) The Counted Individual License Option provides for use of Programs by a + specified number of designated Named Users. + + (ii) A Named User may not use a Program on more than one (1) Computer + simultaneously. + + (iii) The Licensee may redesignate the Named Users authorized to use a Program. + + (iv) The Computer login of the Named User may not be shared with any other + individual. + + (v) The Counted Individual License Option is only available for limited + license uses. + + + 1.8. Remote Desktop and Shared Desktop + This section applies to all License Options above. + + (i) Remote Desktop: A Licensed User may remotely access Programs using the + Microsoft(r) Remote Desktop connection feature or similar technologies. For + the Designated Computer License Option, only one named Licensed User may + remotely access the Programs for software administration purposes, such + Licensed User not to be redesignated more than four (4) times in any twelve + (12) month period. + + (ii) Shared Desktop: A Licensed User may share remotely the desktop view of + a Program session with another individual for assistive or demonstrative + purposes only, using Microsoft(r) Remote Assistance technology, + teleconferencing software, or similar technologies.[fn3] + +2. License Uses + + 2.1. Standard + + (i) Standard Licenses are available for commercial, government, or other + organizational use and are restricted to Internal Operations. + + (ii) The Standard License is available under any of the License Options + described above except for the Total Headcount License Option. + + 2.2. Educational Institutions + + (i) Educational Institution Licenses are available solely to + degree-granting educational institutions and primary and secondary schools + licensing the Programs for Academic Internal Operations. + + (ii) Use rights and associated License Options are determined based on the + type of License acquired: Academic, Classroom, Campus-Wide, Community and + Technical College, or Primary and Secondary Schools. + + (iii) Technical support and installation support are available for faculty + and academic staff. Installation support is available for students. + + (iv) Data Center Use: Academic Internal Operations includes the + installation and use of the Programs in a data center, high performance + computing center, or other academic computing resource controlled by + Licensee ("Data Center") by any individual who has been granted access to + the Data Center by Licensee for the purpose of performing software + administration, teaching, or noncommercial academic research. In the case + of Data Center use by an individual who is not an enrolled student, + employee, or other academic staff of Licensee, downloading and use of any + Programs on the individual's Computer or any other Computer not controlled + by Licensee is expressly prohibited. + + 2.2.1. Academic + + (i) Program use is restricted to individuals listed in the definition + of Academic Internal Operations (see Glossary). + + (ii) The Academic License is available under any of the Individual, + Designated Computer or Concurrent License Options. + + 2.2.2 Academic Teaching + + (i) Program use is restricted to individuals listed in the definition of + Academic Internal Operations (see Glossary) on Computers owned or leased + by the institution or by such individual. + + (ii) The Academic Teaching License is available solely under the Counted + Individual License Option. + + (iii) Research use is not permitted. + + + 2.2.3. Classroom + + (i) Program use is restricted to students, instructors, and software + administrators in on-campus facilities that are used solely in support + of classroom instruction of students. + + (ii) The Classroom License is available under either the Designated + Computer or Concurrent License Option. + + (iii) Research use is not permitted. + + 2.2.4. Campus-Wide + + (i) Program use is restricted to individuals listed in the definition + of Academic Internal Operations (see Glossary) on Computers owned or + leased by the institution or by such individual. + + (ii) The Campus-Wide License is available solely under the Total + Headcount License Option. + + 2.2.5. Community and Technical College + + (i) Program use is restricted to individuals listed in the definition + of Academic Internal Operations (see Glossary) on Computers owned or + leased by the institution or by such individual. + + (ii) The Community and Technical College License is available solely to + institutions where the dominant form of degree conferred meets the + International Standard Classification of Education 2011 Level 5, + Short-Cycle Tertiary Education as qualified by MathWorks. + + (iii) The Community and Technical College License is available solely + under the Counted Individual License Option. + + 2.2.6. Primary and Secondary School + + (i) Program use is restricted to all faculty, academic staff, and + students of the school on Computers owned or leased by the school or by + the individual faculty, staff, or student. + + (ii) The Primary and Secondary School License is available solely to + primary and secondary schools. + + (iii) The Primary and Secondary School License is available solely + under the Total Headcount License Option. + + (iv) Each Primary and Secondary School License is limited to a single + physical address. + + 2.3. Student + + (i) Student Licenses may be licensed by students enrolled in + degree-granting educational institutions, or primary and secondary schools, + or those participating in a continuing education program at a + degree-granting educational institution. A Licensee may use the Programs + only on a single physical (not virtual) Computer owned or leased by the + student. + + (ii) A Student License may also be licensed by teachers at primary and + secondary schools for course preparation and teaching, and the Student + License may be installed on Computers owned or leased by the teacher or + school. + + (iii) A Student License may not be used for activities that are commercial, + for profit, professional (except for primary and secondary school teachers + using the License for the purpose of teaching at such schools), government, + or revenue-generating. + + (iv) The Programs may only be accessible to, and used by, the Licensee. + + (v) Technical support for Student Licensees is limited to installation + support. + + (vi) A Student License is not transferable. + + (vii) Returns and refunds of Student License purchases are subject to the + refund policies at the time and point of purchase. + + 2.4. Home + + (i) A Home License may be licensed by an individual and may be used only + for personal use. A Home License may not be used for activities that are + commercial, for profit, professional, academic, government, or + revenue-generating. + + (ii) A Licensee of a Home License may use the Programs only on a single + physical (not virtual) Computer owned or leased by the Licensee. + + (iii) The Programs may only be accessible to, and used by, the Licensee. + + (iv) Technical support for Home Licensees is limited to installation + support. + + (v) A Home License is not transferable. + + (vi) Returns and refunds of Home License purchases are subject to the + refund policies at the time and point of purchase. + +3. Specific Program Use Rights + + 3.1. MATLAB Parallel Server + + 3.1.1. General Use Rights + + Licensed Users of MATLAB Parallel Server may run simultaneous sessions + of certain Programs on one or more Computers through MATLAB Parallel + Server, subject to the restrictions below: + + (i) The number of simultaneous Program sessions by all Licensed Users + may not exceed the number of worker instances licensed, except that if + a Licensed User has 200 worker instances checked out, the Licensed User + can scale to an unlimited number of Program sessions without checking + out any additional worker instances. (This does not apply to on-demand + use of MATLAB Parallel Server. See Section 3.1.2 below for details.) + + (ii) You must have access to a valid license to Parallel Computing + Toolbox and any Programs you wish to use in order to be able to run + sessions of such Programs through MATLAB Parallel Server. However, a + license to Parallel Computing Toolbox is not required when running + Polyspace Bug Finder Server or Polyspace Code Prover Server with MATLAB + Parallel Server, or when running Applications generated with a Compiler + Program. + + (iii) Access to MATLAB Parallel Server may be made available to + Licensed Users globally. + + (iv) Access to MATLAB Parallel Server may not be made available to any + Third Party unless expressly allowed by your License Use. + + 3.1.2 MATLAB Parallel Server On-Demand Use Rights + + On-demand use of MATLAB Parallel Server allows you to pay based on + usage. Subject to all other restrictions in Section 3.1.1 above, + Licensed Users of MATLAB Parallel Server may scale the number of + worker instances on the following additional terms: + (1) Licensee uses online licensing; and (2) Licensee agrees to pay all + MATLAB Parallel Server on-demand fees incurred by its Licensed Users + applicable to their on-demand use, if any, of worker instances. Any + fees that may be due to any cloud providers for use of their platforms, + programs, or services are separate and are the responsibility of the + Licensee. + + 3.2. MATLAB Production Server + + Licensed Users of MATLAB Production Server are permitted to install and use + MATLAB Production Server for the sole purpose of scheduling and running + Applications generated with Licensee's validly licensed Compiler Program, + provided that the number of worker instances running simultaneously on one + or more Computers does not exceed the number of worker instances acquired. + Licensee may make the Applications running on MATLAB Production Server + accessible to end-users globally, including Third Parties, via a web + interface, or other interface provided by Licensee, subject to the + restrictions of Part Two, Section 3.1 of this document (Deployment Rights; + Compiler Programs). + + 3.3. MATLAB Web App Server + + Licensed Users of MATLAB Web App Server are permitted to install and use + MATLAB Web App Server globally to run Applications, provided that the total + number of server instances does not exceed the number of server instances + acquired. End-users of the Applications need not be Licensed Users of + MathWorks Programs and can access the Applications through a web browser. + + 3.4. MATLAB Online Server + + Licensed Users of MATLAB Online Server are permitted to install and use + MATLAB Online Server globally to run MathWorks Programs, provided that the + total number of server instances does not exceed the number of server + instances acquired. End-users of Programs running on MATLAB Online Server + must have a valid license to any such Programs. + + 3.5. Polyspace Bug Finder Server and Polyspace Code Prover Server + + Licensed Users of Polyspace Bug Finder Server and Polyspace Code Prover + Server are permitted to install and use such Programs globally, provided + that the number of worker instances running simultaneously on one or more + Computers does not exceed the number of worker instances acquired. + + +Part Two: Deployment Rights + +The Software License Agreement grants a Licensee and its Licensed Users ("you") +the limited rights to install and use Programs in accordance with the License +Offering you acquire. The Software License Agreement does not grant you the +right to modify or distribute Programs or Program Components or create +derivative works. This Part Two sets forth additional limited rights to modify, +create derivative works of, and/or distribute certain Program Components as +specifically set forth below. + +Certain Programs, such as the Compiler Programs and the Coder Programs, +generate output in the form of Source Code, Object Code, or other files and +materials. For example, MATLAB Compiler and Simulink Compiler can be used to +create an executable program, and MATLAB Coder and other Coder Programs can be +used to generate Source Code in C and C++. Under certain circumstances +described below, you are permitted to use and distribute the files, models, +Applications, and Generated Forms that you create using the Programs. + +Some Programs are technically prevented from being compiled, distributed, +called from an external application, or used with MATLAB Parallel Server. + +All rights described below are limited by the restrictions of your License +Offering, this Program Offering Guide, and the Software License Agreement. + +1. Deployment Rights for User Files + +You may distribute or sublicense User Files without restriction, provided that +a principal purpose of the distribution or sublicense is not to replace or +replicate a Program or any part of a Program and you otherwise comply with the +general restrictions of the Software License Agreement and your License +Offering. "User Files" are MATLAB code files, Simulink model files, files +generated by RoadRunner Programs, MEX-files, MAT-files, VHDL-files, +Verilog-files, FIG-files or P-files that you create and that do not include any +code obtained from MATLAB code files, Simulink model files, MAT-files, +VHDL-files, Verilog-files, TLC-files, P-code, C/C++ files or other Source Code +files supplied with the Programs. + +2. Deployment Rights for Derivative Forms + +Your rights to create, use and distribute Derivative Forms are limited to those +rights expressly set forth in this Section 2. + +You may distribute Derivative Forms to Third Parties only (a) as expressly +permitted in Section 3.4 (API Code) below, or (b) if the Third Party is bound +by a Software License Agreement with MathWorks that requires such Third Party +to treat such Derivative Forms received from you as its own Derivative Form +under its Software License Agreement. + +If you receive software that is a Derivative Form under a Third Party's +Software License Agreement with MathWorks, or would otherwise be a Derivative +Form under the terms of your Software License Agreement, then you must treat +such software as a Derivative Form as if you modified or generated the software +yourself. + +3. Deployment Rights for Generated Forms and Applications + +Your rights to create, use and distribute Generated Forms and Applications are +limited to those rights expressly set forth in this Section 3. + +No further license or royalty fees shall be due to MathWorks for deployment as +expressly permitted in this Section, regardless of whether the deployment is +solely for your Internal Operations or to Third Parties. + + 3.1. Compiler Programs + + If you license a Compiler Program, you may create and deploy Applications + generated by the Compiler Program that meet the requirements of this Section + and comply with the restrictions in the Software License Agreement. + + These Applications may include compiled versions of MATLAB code files or + Simulink model files, but only as required for the Application and from + Programs that you have licensed. You may also use and distribute the MATLAB + Runtime together with these Applications for the sole purpose of running + the Applications. However, you are prohibited from making copies of the + MATLAB Runtime accessible to any Third Party separate from or for use other + than with your Application, and from providing the MATLAB Runtime for + service bureau or similar service use. + + If you license Parallel Computing Toolbox (PCT) and generate an + Application using any functionality of PCT, that Application may enable + up to the number of worker instances provided by PCT used to build the + Application. End-users of your Application do not need to have a license to + PCT. + + Your exercise of any of the rights granted here is subject to the + restrictions in the Software License Agreement, including the following: + + i) You may not distribute any library header files. + + ii) You may not use your Application to enable access to the code + generation capabilities of Programs or the capabilities of other + Transformation Programs. + + iii) Your Application may not provide capability similar to the + capabilities of any of Programs, or provide functionality or behavior + similar to that of the MATLAB command line or scripting and programming + capabilities. Your Application also may not enable evaluation of end-user + code or expressions. + + iv) Your Application may not provide access to all or a substantial portion + of a Program. + + v) You must include the notice "MATLAB(r). (c) 1984 - [INSERT YEAR MATLAB + VERSION PUBLISHED] The MathWorks, Inc." in your Application's About Box, or + similar visible location, and in the applicable documentation distributed + with each copy of your Application. + + vi) You may not modify or remove any proprietary notices included with + Programs or Program Components. However, you are permitted to remove the + MathWorks logo icon within the figure title bar of your Application and + replace it with a different icon. + + 3.2. Coder Programs + + This Section discusses the deployment rights MathWorks grants you in + conjunction with your license and use of the Coder Programs: 1) MATLAB + Coder, 2) Simulink Coder, 3) Embedded Coder, 4) HDL Coder, 5) Filter Design + HDL Coder, 6) Simulink PLC Coder, and 7) GPU Coder. + + The Coder Programs take content that you choose to input. Depending on the + Coder Program you use, the input could be a Simulink model, a Stateflow + diagram, or MATLAB code. The Coder Program then converts this input to code + in C/C++, VHDL/Verilog or PLC structured text. You may copy and deploy + these Generated Forms for use outside of the Programs. + + In order to enable this output code to work, each of these Coder Programs + will link in certain files proprietary to MathWorks, which may include C, + C++, Assembly, linker command files, template makefiles, project files, or + TLC source code files. You may only copy, modify, and deploy these + proprietary MathWorks files in Source Code or Linked Object Code form for + different development targets when used with the Coder Programs or with + code generated by the Coder Programs as part of, and only as required by, a + larger standalone application. A standalone application is an Application + created using programming languages and tools other than the Programs, + which executes outside of the Programs. + + 3.3. Simulink Real-Time + + You may use Simulink Real-Time to develop Applications that include Object + Code derived from Program Components of Simulink Real-Time that are + required by the Application and that have been compiled or otherwise + obtained from Simulink Coder on a single development Computer, download + that Application to a target Computer, and distribute that Application + beyond the target Computer. + + 3.4. API Code + + Programs you license may include selected Source Code and shared Object + Code library files that implement various documented application + programming interface (API) capabilities. + + You may use and modify such Source Code files solely for creation of your + own Application. You may copy and distribute Object Code compiled from this + Source Code, but only as either a standalone Object Code file or Object + Code linked to your Application, and only for use with and deployment of + your own Application. + + You may use, copy and distribute shared Object Code library files from the + Programs for deployment of your own Application, but only if a header file + exists in the Program for the shared library file. However, you may not + copy or distribute the header files. You may not transfer Source Code, + development rights or development capabilities for any Source Code or + Object Code from the Programs to any Third Party. + + 3.5. MAT-Files + + You may create and distribute Applications that read MAT-files using the + MAT-file API, but if you distribute such Applications to Third Parties, + they must also implement MAT-file write capability. As an exception to + Section 3.4 above, in connection with Applications that read and write + MAT-files, you may use, copy, and distribute certain shared Object Code + library files even if no header file exists in the Program for the shared + library file. Consult the documentation on Sharing MAT-file Applications + for a list of permitted files. + +4. Application License + +If you are distributing an Application, you must accompany the Application with +a written Application License. See the Glossary for Application License +requirements. The only exceptions to this requirement are when you are +distributing an Application solely for Internal Operations, or within an +embedded system not covered by a license agreement. + + + +Part Three: Automation Servers and External Applications + +Your rights to use the Programs in Automation Servers and External Applications +are set forth in this Part Three. + +1. Definitions + +"Automation Server" means an automated, batched, cron, scheduled, or unattended +process for software development, simulation, code generation, validation, +verification, or deployment or any other type of Program execution that +processes Program Input Artifacts. Automation Server includes server farm, +cluster, grid, build system, continuous integration system, regression server, +data center, and similar types of systems. Automation Server also means an +individual executing a Program to process Program Input Artifacts on behalf of +other individuals in order to minimize or avoid purchasing additional licenses +for such Program. + +"External Application" means an external interface or application, such as a +web application or an application written in another language, that calls or +invokes the Programs. + +"Personal Automation Server" and "Personal External Application" mean, +respectively, an Automation Server or External Application wherein 1) the +Automation Server or External Application is used solely by you as an +individual solely on your own Program Input Artifacts, and 2) no other +individuals submit, or otherwise provide or allow you to use in any form, +Program Input Artifacts to the Automation Server or External Application. + +"Program Input Artifact" means a file (e.g., a MATLAB file, Simulink model, or +Source Code file) used as input to a Program in an Automation Server or +External Application. + + +2. Program Use in Automation Servers and External Applications + +You may use Programs in Automation Servers and External Applications in +accordance with the conditions in this Section 2. Additional conditions apply +to Transformation Programs, as described in Section 3 below. + +The following provisions (i)-(vii) apply to any use of Programs in Automation +Servers and External Applications: + +i) Programs may be run on Personal Automation Servers or Personal External +Applications. + +ii) Programs may be run on Automation Servers using physical or virtual +machines. + +iii) Programs may be run on Automation Servers using shared administrative +logins. + +iv) Only Licensed Users of a Program may create or modify Program Input +Artifacts that are processed by that Program running on an Automation Server. + +v) External Applications may be used by any individual or entity, including +Third Parties. + +vi) External Applications must not: provide access to the MATLAB command line; +provide access to an entire Program, a substantial portion of a Program, or a +specific function of a Program; or enable evaluation of end-user code or +expressions. + +vii) Programs must be contracted for global use if Program Input Artifacts used +in the Automation Server or External Application are created in different +regions, unless the Programs are licensed under an Educational Institution +License Use. + +The following provisions (viii)-(x) apply to use of Programs in Automation +Servers and External Applications, licensed under specific License Options: + +viii) Programs licensed under Individual or Network Named User License Option: +Programs may be run on an Automation Server or from an External Application if +the Program license is dedicated to this use and is not used for other +purposes, and the Program is not used on more than one (1) Computer at any +time. + +ix) Programs licensed under Designated Computer License Option: Programs may be +run on an Automation Server or from an External Application if the Program +license is dedicated to this use and is not used for other purposes. + +x) Programs licensed under Concurrent License Option, Total Headcount License +Option or Enterprise License Option: +Programs may be run on an Automation Server or from an External Application. + + +3. Transformation Programs and Client Access Licenses + + 3.1. Transformation Programs + + The Transformation Programs are: + + MATLAB Coder + + Simulink Coder + + Embedded Coder + + HDL Coder + + Filter Design HDL Coder + + Simulink PLC Coder + + GPU Coder + + MATLAB Compiler + + MATLAB Compiler SDK + + Simulink Compiler + + Simulink Code Inspector + + Simulink Design Verifier + + Polyspace Bug Finder + + Polyspace Code Prover + + + Section 3.14 of the Software License Agreement states that you are not + permitted to "create a server or automated system for the Transformation + Programs without obtaining a license from MathWorks that expressly allows such + use." The Transformation Programs may be used in Personal Automation + Servers or Personal External Applications. The Transformation Programs may + only be used in Automation Servers or External Applications if you have + sufficient licenses as described in Section 3.2 below. + + Polyspace Bug Finder and Polyspace Code Prover may not be used in an + Automation Server except to prepare and initiate analysis performed by + Polyspace Bug Finder Server and Polyspace Code Prover Server when used in + conjunction with MATLAB Parallel Server. + + 3.2. Client Access Licenses + Client Access Licenses (CALs) are licenses that give you the right to use + Transformation Programs to process Program Input Artifacts in an Automation + Server, or to call Transformation Programs from an External Application, if + you do not otherwise have sufficient licenses for the Transformation + Programs. + + CALs are only offered for Standard Licenses and only with an Annual term. + + If a Licensee is using a Transformation Program to process Program Input + Artifacts in an Automation Server, or calling a Transformation Program from + an External Application: + + * For Transformation Programs in the MATLAB and Simulink product + families, the Licensee's total number of licenses (including CALs) for + the Transformation Program must be no less than the number of MATLAB or + Simulink licenses used to create or modify the Program Input Artifacts. + + * For Transformation Programs in the MATLAB and Simulink product families + licensed under the Concurrent License Option, the Licensee's total number + of licenses (including CALs) for the Transformation Program may instead + be based on the number of Licensed Users of MATLAB or Simulink licenses + used to create or modify the Program Input Artifacts. + + * For Transformation Programs in the MATLAB and Simulink product families + licensed under the Enterprise License Option, each user's total desktop + usage of the Transformation Program (including CALs for such + Transformation Program), must be no less than such user's total desktop + usage of the MATLAB or Simulink licenses used to create or modify the + Program Input Artifacts processed by such Transformation Program. + + Examples: + + 1. Licensee uses MATLAB to create or modify MATLAB files processed by + MATLAB Compiler in an Automation Server or External Application. + + * If Licensee has 5 Individual licenses of MATLAB and 2 Individual licenses + of MATLAB Compiler, Licensee needs to purchase 3 Individual MATLAB + Compiler CALs. + * If Licensee has 5 Individual licenses of MATLAB and 5 Individual licenses + of MATLAB Compiler, no CALs are needed. + + + 2. Licensee uses Simulink to create or modify Simulink models processed by + Simulink Coder in an Automation Server or External Application. + * If Licensee has a Concurrent license with 10 Simulink keys and 3 Simulink + Coder keys, Licensee needs 7 Simulink Coder CAL keys. + * If Licensee has a Concurrent license with 10 Simulink keys and 10 + Simulink Coder keys, no CAL keys are needed. + + + +Part Four: Software Maintenance Service and Updates + +1. Software Maintenance Service +MathWorks Software Maintenance Service is required in order to receive the +following services:[fn4] + +* Product general releases with new features, enhancements, and bug fixes + +* Direct technical support by phone, email, and web + +* Ability to add new Programs[fn5] + +* Enhanced access and storage for online services including MATLAB Mobile, MATLAB + Drive, and MATLAB Online + +* Access to prereleases of Programs that are available for pre-release + +* Add-ons and Support Packages via Add-On Explorer + +* Converting License Option[fn6] + +* Transferring Programs[fn5,fn6] + +* Changing country of Licensed Users or changing License to global use[fn6] + +* Enhanced web access to trial licenses of Programs + +You must keep your Software Maintenance Service up to date to receive these +services uninterrupted. For Annual and Term licenses, Software Maintenance +Service is included as part of the license and will expire automatically at the +end of the term. For Perpetual licenses, the first year of Software Maintenance +Service is included with the initial purchase and you must renew annually after +that. + +Fees for subsequent year Software Maintenance Service renewals are calculated +based on the Programs and License Offering. Software Maintenance Service must +be purchased for a minimum of one year (12 months) forward. + + 1.1 Fees for Lapsed Software Maintenance Service + + For Perpetual licenses, if your Software Maintenance Service has expired + without being renewed, you may reinstate it by paying the fees described + below. Reinstating will provide access to all Software Maintenance Service + services available at the time of reinstatement, including the latest + versions of Programs licensed. + + Your quote to reinstate lapsed Software Maintenance Service for Programs + will include fees for the forward service period, any applicable back + maintenance fees for the lapsed period, and a reinstatement fee of 25% of + the annual cost of Software Maintenance Service. These fees are subject to + change. + + +2. Updates +As needed, MathWorks provides software Updates between general releases of the +Programs. Updates for a general release are available to all Licensees who have +access to that general release. Software Maintenance Service is not required to +receive Updates. + +Updates provide bug and security fixes that you can apply to an existing +installation. Updates are available for general releases starting with R2013b. + +You can receive information about Updates through MATLAB desktop notifications +or through the Bug Report System on the MathWorks website at +https://www.mathworks.com/support/bugreports/. The Bug Report System provides +information about bugs, security issues, workarounds, and Updates, and allows +you to create a watchlist to be notified automatically via email about issues +of interest. + +Part Five: Glossary of Terms + +"Academic Internal Operations" means the use of the Programs by enrolled +students, employees (faculty and academic staff), and other academic staff +(including visiting professors and researchers), provided that such other +academic staff have been granted institution email accounts and internal +network login privileges by the Licensee. Such use must be in accordance with +the Educational Institutions License Use acquired, for the purpose of (i) in +the case of employees and other academic staff, performing software +administration, teaching, and noncommercial, academic research in their +ordinary course; and (ii) in the case of enrolled students, meeting classroom +requirements of courses and study offered by the Licensee. Academic Internal +Operations includes Data Center Use as described in Part One, Section 2.2(iv) +above. + +"Application" means binary executable software that runs independently of the +Programs, consisting of one or more software files that Licensee has created by +either (a) using a Program to compile or translate Licensee created Source Code +or (b) incorporating or linking any part of any compiled Source Code, library +file, or other Program Component provided with the Program. An Application +must contain original code developed by Licensee and must provide substantial +functionality not contained in, or provided by, the Program Components that are +incorporated into such Application. If a software file created by a Licensee +incorporates Program Components, but does not meet the requirements of the +previous two sentences, then it is a Derivative Form (as defined below). An +Application may contain Linked Object Code which, if such Object Code was not +Linked to the Application and was a standalone file, would otherwise have been +deemed a Derivative Form. + +"Application License" means a license for an Application that contains terms +and conditions that (a) are at least as restrictive as the terms and conditions +of the Software License Agreement (b) explicitly exclude MathWorks and its +Licensors from all liability for damages or remedies; (c) do not provide a +warranty for any Program; (d) do not transfer or convey any use or deployment +rights for any Program without MathWorks consent; and (e) prohibit the removal +of any copyright, trademark, logo, proprietary rights, disclaimer or warning +notice included on or embedded in any part of the deployed Application. +Further, if Licensee's Application is generated with a Compiler Program, then +Licensee's Application License shall include or incorporate by reference the +terms of the MATLAB Runtime License available at [MCR Install +Directory]\[release]\matlabruntime_license_agreement.pdf located within the +installation for the MATLAB Runtime. + +"Coder Programs" means Simulink Coder, MATLAB Coder, Embedded Coder, HDL Coder, +Filter Design HDL Coder, Simulink PLC Coder, and GPU Coder. + +"Compiler Programs" means MATLAB Compiler and Simulink Compiler. + +"Derivative Form" means a software file that Licensee has derived from one or +more Program Components (including without limitation by incorporating, +translating, or modifying, in whole or in part, any Program Component), and +which, if modified or copied without MathWorks' authorization, would constitute +a copyright infringement or breach of the Agreement. A software file created +by Licensee which qualifies as an "Application" under the above definition +shall not be deemed a Derivative Form. + +"Generated Form" means the output of the Transformation Programs in the form of +Source Code or Object Code, as well as such Source Code converted to Object +Code or Linked forms. + +"Internal Operations" means the use of a Program by employees, consultants, +student interns, and software administration contractors of Licensee or an +Affiliate on behalf of the Licensee or Affiliate. + +"Linked" means an executable or loadable file created by a compiler or linker +program combining Object Code module files. + +"MATLAB Runtime" means MATLAB Runtime support libraries and other files for +deployment of Applications created with a Compiler Program. MATLAB Runtime is +a Program Component of the MATLAB Compiler. + +"Named User" means a Licensed User, that must be an individual, designated and +identified by the Licensee as the "Named User" for a License to a Program, and +in respect to the Network Named User License Option, listed in the license +options file. + +"Object Code" means the code created by a system compiler from source code; +also called "machine-readable code." Object Code can be Linked with an +appropriate linker to resolve address references and may be combined with other +Object Code for targeted execution on a specific processor. Object Code +includes "Object Code libraries" and "shared libraries," which are groupings of +Object Code for specific purposes. + +"Program" means the software licensed under the Software License Agreement, +including Program Components, Documentation, enhancements, and error +corrections. Each product licensed is a separate Program. + +"Program Component" means any portion of, or file provided with, a Program. + +"Source Code" means human-readable program code written in a higher-level +language such as C, C++, Java, MATLAB, MDL, SLX, VHDL, Verilog, or Fortran, +which must be translated or compiled into machine-readable code before it can +be executed by a computer. Source Code also includes header files and other +human-readable files necessary for a Program to be compiled in the higher-level +language. + +"Transformation Programs" are the Programs listed in Part Three, Section 3.1. + +"Updates" means software updates to the Programs as described in Part Four, +Section 2. + +Footnotes + +[fn1] Details vary for Programs listed in Section 3 below, Specific Program +Use Rights + +[fn2] Solely in respect to a Concurrent License Option licensed for a Standard +License Use, "Country" means in respect to member countries of the United +States-Mexico-Canada Agreement ("USMCA") or any successor agreement, all such +countries collectively; and in respect to Iceland, Norway, Switzerland, the +United Kingdom, and member countries of the European Union ("EU"), all such +countries collectively. + +[fn3] Microsoft and Skype are registered trademarks of Microsoft Corporation. + +[fn4] Services may vary depending on License Offering. + +[fn5] Program dependency rules apply. + +[fn6] Additional fees may apply. + +03/2023 + + diff --git a/scripts/binauralRenderer_interface/Table_Format_Converter/CMakeLists.txt b/scripts/binauralRenderer_interface/Table_Format_Converter/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..bbd6d81b66c49d6a8f4c75676e91a9e9fba58c39 --- /dev/null +++ b/scripts/binauralRenderer_interface/Table_Format_Converter/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.6) + +project(tables_format_converter) + +if(WIN32) + # MSVC compiler flags + add_definitions( + -D_CRT_SECURE_NO_WARNINGS + ) + + # CMake sets /W3 by default, until CMake version 3.15. Instead of setting /W4 separately, replace in existing settings + string(REGEX REPLACE "/W3" "/W4" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") +endif() + +set(IVAS_PATH "${PROJECT_SOURCE_DIR}/../../..") +set(IVAS_UTIL_PATH ${IVAS_PATH}/lib_util) +set(IVAS_DEC_PATH ${IVAS_PATH}/lib_dec) +set(IVAS_ENC_PATH ${IVAS_PATH}/lib_enc) +set(IVAS_COM_PATH ${IVAS_PATH}/lib_com) +set(IVAS_REND_PATH ${IVAS_PATH}/lib_rend) +set(IVAS_DEBUG_PATH ${IVAS_PATH}/lib_debug) +set(IVAS_LC3PLUS_PATH ${IVAS_PATH}/lc3plus) + +include_directories(${IVAS_UTIL_PATH} ${IVAS_ENC_PATH} ${IVAS_DEC_PATH} ${IVAS_COM_PATH} ${IVAS_REND_PATH} ${IVAS_DEBUG_PATH} ${IVAS_LC3PLUS_PATH}) + +set(SOURCE_FILES_C + ${IVAS_REND_PATH}/ivas_rom_binauralRenderer.c + ${IVAS_REND_PATH}/ivas_rom_binaural_crend_head.c + ${IVAS_REND_PATH}/ivas_rom_rend.c) + +set(SOURCE_FILES_H + ${IVAS_REND_PATH}/ivas_rom_binauralRenderer.h + ${IVAS_REND_PATH}/ivas_rom_binaural_crend_head.h + ${IVAS_REND_PATH}/ivas_rom_rend.h) + +add_library(${PROJECT_NAME}_lib STATIC ${SOURCE_FILES_C} ${SOURCE_FILES_H}) + +add_executable(${PROJECT_NAME} generate_tables_from_rom_to_bin.c) +target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_lib) diff --git a/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c b/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c index e34f86f2941ccc141657b378907da974d054610f..7d52fe7735631bd11ee4b345df1d50292306e0c6 100644 --- a/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c +++ b/scripts/binauralRenderer_interface/Table_Format_Converter/generate_tables_from_rom_to_bin.c @@ -39,6 +39,7 @@ #include "lib_rend.h" #include "ivas_stat_dec.h" #include "hrtf_file_reader.h" +#include "ivas_rom_rend.h" #define FILE_HEADER @@ -688,6 +689,11 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) int32_t td_hrtf_header_size, td_hrtf_data_size; char *td_hrtf = NULL, *td_hrtf_wptr; + // left/right and coherences for late reverb table sizes + int32_t td_hrtf_coh_and_ener_size; + int32_t data_size_tmp; + int32_t td_hrtf_data_size_new; + *hrtf_size = 0; sprintf( full_in_td_path, "%s%s_%dkHz%s", input_td_bin_path, input_td_bin_file_name, frequency / 1000, DEFAULT_BIN_FILE_EXT ); @@ -707,7 +713,9 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) // Raw data size (4 bytes) td_hrtf_header_size = sizeof( int32_t ) + sizeof( int32_t ) + sizeof( int32_t ) + sizeof( uint32_t ); - *hrtf_size = td_hrtf_header_size + td_hrtf_data_size; + td_hrtf_coh_and_ener_size = sizeof( float ) * 3 * LR_IAC_LENGTH_NR_FC; + td_hrtf_data_size_new = td_hrtf_data_size + td_hrtf_coh_and_ener_size; + *hrtf_size = td_hrtf_header_size + td_hrtf_data_size_new; td_hrtf = (char *) malloc( *hrtf_size ); if ( td_hrtf == NULL ) @@ -736,7 +744,7 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) td_hrtf_wptr += sizeof( int32_t ); // Raw data size - memcpy( td_hrtf_wptr, &( td_hrtf_data_size ), sizeof( uint32_t ) ); + memcpy( td_hrtf_wptr, &( td_hrtf_data_size_new ), sizeof( uint32_t ) ); td_hrtf_wptr += sizeof( uint32_t ); // Get the HRTF raw data @@ -751,6 +759,38 @@ char *create_hrtf_tdrend( int32_t frequency, int32_t *hrtf_size ) return NULL; } + td_hrtf_wptr += td_hrtf_data_size; + + // Left/right and coherence late reverb tables + data_size_tmp = sizeof( float ) * LR_IAC_LENGTH_NR_FC; + if ( frequency == 48000 ) + { + memcpy( td_hrtf_wptr, &( defaultHRIR_left_avg_power_48kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + memcpy( td_hrtf_wptr, &( defaultHRIR_right_avg_power_48kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + memcpy( td_hrtf_wptr, &( defaultHRIR_coherence_48kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + } + else if ( frequency == 32000 ) + { + memcpy( td_hrtf_wptr, &( defaultHRIR_left_avg_power_32kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + memcpy( td_hrtf_wptr, &( defaultHRIR_right_avg_power_32kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + memcpy( td_hrtf_wptr, &( defaultHRIR_coherence_32kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + } + else if ( frequency == 16000 ) + { + memcpy( td_hrtf_wptr, &( defaultHRIR_left_avg_power_16kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + memcpy( td_hrtf_wptr, &( defaultHRIR_right_avg_power_16kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + memcpy( td_hrtf_wptr, &( defaultHRIR_coherence_16kHz ), data_size_tmp ); + td_hrtf_wptr += data_size_tmp; + } + fclose( input_td_bin_file ); input_td_bin_file = NULL; } @@ -847,7 +887,7 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG latency_s = FASTCONV_HOA3_latency_s; hrtf_channels = HRTF_SH_CHANNELS; - num_taps = BINAURAL_NTAPS; + num_taps = BINAURAL_NTAPS_SBA; } else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_HOA2 ) { @@ -859,7 +899,7 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG latency_s = FASTCONV_HOA2_latency_s; hrtf_channels = 9; - num_taps = BINAURAL_NTAPS; + num_taps = BINAURAL_NTAPS_SBA; } else if ( input_cfg == BINAURAL_INPUT_AUDIO_CONFIG_FOA ) { @@ -871,7 +911,7 @@ char *create_hrtf_fastconv( RENDERER_TYPE rend_type, BINAURAL_INPUT_AUDIO_CONFIG latency_s = FASTCONV_FOA_latency_s; hrtf_channels = 4; - num_taps = BINAURAL_NTAPS; + num_taps = BINAURAL_NTAPS_SBA; } else { diff --git a/scripts/binauralRenderer_interface/Table_Format_Converter/tables_format_converter_readme.txt b/scripts/binauralRenderer_interface/Table_Format_Converter/tables_format_converter_readme.txt index 8648ecb2e68fdcfc48d5da1b11e472af7a688e9d..20aba7a237ac77f5a00fbc4941b31506c335ee9e 100644 --- a/scripts/binauralRenderer_interface/Table_Format_Converter/tables_format_converter_readme.txt +++ b/scripts/binauralRenderer_interface/Table_Format_Converter/tables_format_converter_readme.txt @@ -57,4 +57,4 @@ Options : -input_td_file_name : Name of input td file (without extension .bin, default = 'hrfilter_model'). For example : -tables_format_converter(.exe) -output_file_path './' -48 -input_td_file_path './../../../td_object_renderer/hrtf_data/Orange_53/' -input_td_file_name 'hrfilter_model_v002' \ No newline at end of file +tables_format_converter(.exe) -output_file_path './' -48 -input_td_file_path './../../../td_object_renderer/hrtf_data/IVAS_default/' -input_td_file_name 'hrfilter_model_v003' \ No newline at end of file diff --git a/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin b/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin index 980668c27e1882fb0c132062a37fcd29ca8e91ed..1fcf3d6c0e28fa6096e47d2773b71698891573c3 100644 --- a/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin +++ b/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:07d2de62c345650f19a404001c5502e64f72277e6c689064e204a7031779bc0e -size 2072948 +oid sha256:a70c99a334115a7e757d2d98b3f11aced6b69d068b695e7de3e79495827fd6a6 +size 1992026 diff --git a/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin b/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin index 9659006ef602a63827eb5e19fdc2490d6670ff9d..bf674c948e576a686ad894de4cb47bd9435a445e 100644 --- a/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin +++ b/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_32kHz.bin @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2c8461458ca23f86f592acf102edfec4eb80bbb935bb324e04ab1c535d0dd94 -size 2573320 +oid sha256:23496ea32dbc478477418c6c2fb04fd22066bdb39b3d0c1959ecde9aad996acf +size 2455246 diff --git a/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin b/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin index d2dee97c348e2f3a82f307b0d10b77bacc8a267f..151b3dc77167e5f5760f58aa16b9f1cd9aa50028 100644 --- a/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin +++ b/scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_48kHz.bin @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:80043c85556218c5444c87aa2a86498ab4158fc40c6f4c3190caa182af1553e5 -size 2852056 +oid sha256:78e0209822b9de3396bc47bc70dc6bdc4e8e8dcffc1be7f4074f5ed633fe6994 +size 2697694 diff --git a/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c b/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c index dcfac0116b8c86ebe96ec3fcd3d7e768ff398626..a5b86d8698cea7e5ff4d3e264b3626600a7b57e4 100644 --- a/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c +++ b/scripts/binauralRenderer_interface/generate_crend_ivas_tables_from_sofa.c @@ -1,23 +1,27 @@ /****************************************************************************************************** - (C) 2022-2023 Baseline Development Group with portions copyright Dolby International AB, Ericsson AB, + (C) 2022-2023 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 Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation. All Rights Reserved. + 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 Baseline Development Group consisting of Dolby International AB, Ericsson AB, + 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 Corporation, Qualcomm Technologies, Inc., and VoiceAge Corporation retain full ownership - rights in their respective contributions in the software. No license of any kind, including but not - limited to patent license, of any foregoing parties is hereby granted by implication, estoppel or - otherwise. + 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/or fitness for a particular purpose are hereby disclaimed and excluded. + 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 @@ -25,6 +29,7 @@ the United Nations Convention on Contracts on the International Sales of Goods. *******************************************************************************************************/ + #include #include #include diff --git a/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.c b/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.c index 7e9658bd8030b2d5a93a4defb7731263423217fe..73d19429e18f459d0ee48c2cf16da32fbbe76c94 100644 --- a/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.c +++ b/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.c @@ -1,23 +1,27 @@ /****************************************************************************************************** - (C) 2022-2023 Baseline Development Group with portions copyright Dolby International AB, Ericsson AB, + (C) 2022-2023 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 Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation. All Rights Reserved. + 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 Baseline Development Group consisting of Dolby International AB, Ericsson AB, + 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 Corporation, Qualcomm Technologies, Inc., and VoiceAge Corporation retain full ownership - rights in their respective contributions in the software. No license of any kind, including but not - limited to patent license, of any foregoing parties is hereby granted by implication, estoppel or - otherwise. + 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/or fitness for a particular purpose are hereby disclaimed and excluded. + 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 diff --git a/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.h b/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.h index 28d3c1225023d0343c66d19bf5d5e7c6706619d8..6e58171ac01df968cd1126cda1cd21c48bed0c15 100644 --- a/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.h +++ b/scripts/binauralRenderer_interface/ivas_crend_binaural_filter_design.h @@ -1,23 +1,27 @@ /****************************************************************************************************** - (C) 2022-2023 Baseline Development Group with portions copyright Dolby International AB, Ericsson AB, + (C) 2022-2023 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 Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation. All Rights Reserved. + 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 Baseline Development Group consisting of Dolby International AB, Ericsson AB, + 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 Corporation, Qualcomm Technologies, Inc., and VoiceAge Corporation retain full ownership - rights in their respective contributions in the software. No license of any kind, including but not - limited to patent license, of any foregoing parties is hereby granted by implication, estoppel or - otherwise. + 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/or fitness for a particular purpose are hereby disclaimed and excluded. + 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 @@ -25,6 +29,7 @@ the United Nations Convention on Contracts on the International Sales of Goods. *******************************************************************************************************/ + #ifndef IVAS_CREND_BIBAURAL_FILTER_DESIGN_H_ #define IVAS_CREND_BIBAURAL_FILTER_DESIGN_H_ diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/README.md b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f6eb2cfad6ea65309e27c337e672b3fe2945b238 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/README.md @@ -0,0 +1,7 @@ + +### 2023-07-17 +Entry point to convert SD HRIRs to SHD HRIRs is the convert_SD2SHD_HRIRs.m script. +Entry point to convert SHD HRIRs to CLDFB domain HRIRs is SHD_2_ROM.m. + +Python 3.9.x needs to be installed with the sofar python module. The convert_SD2SHD_HRIRs.m script needs the path to this python. +Matlab 2020 has seen some issues with using python, so use a newer version if possible. If you are unable to use a newer matlab version, try loading in the OS default python, as this works sometimes. diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/SHD_2_ROM.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/SHD_2_ROM.m new file mode 100644 index 0000000000000000000000000000000000000000..c6c98ec46bb3f52533cd21093a35abab4b83b737 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/SHD_2_ROM.m @@ -0,0 +1,131 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function IR_cldfb = SHD_2_ROM( rom_c_file, sofa_file, ambi_order, hrir_len ) +% SHD_2_ROM( rom_c_file, sofa_file, ambisonics_order, hrir_length ) +% +% - converts sphere-sampled Head Related Impulse Responses (HRIRs) given in sofa_file +% to the Spherical Harmonics domain (SHD) using generate_HOA_HRIRs_MOD_lens.m +% - converts SHD HRIRs to Complex Low Delay Filter Bank (CLDFB) domain using fir_to_cldfb_fir.m +% - writes CLDFB HRIRs to c-code ROM tables. +[thispath,~,~] = fileparts(mfilename('fullpath')); +thispath = [thispath,filesep]; + +%py_path = 'C:\Users\xxxx\AppData\Local\Programs\Python\Python39\python.exe'; % may look like this +if ~exist('sofa_file','var') || isempty(sofa_file) + sofa_file = fullfile(thispath,'..','HRIRs_sofa','HRIR_128_Meth5_IRC_53_Q10_symL_Itrp1_48000.sofa'); +end +if ~exist('ambi_order','var') + ambi_order = 3; +end +if ~exist('hrir_len','var') + hrir_len = 128; +end +%% convert sphere-sampled HRIRs to SHD HRIRs +% requires: +% python -m pip install sofar +% python -m pip install numpy + +% convert sphere-sampled HRIRs to SHD HRIRs +[sofa_path,sofa_name, sofa_ext] = fileparts(sofa_file); +IR = generate_HOA_HRIRs_MOD_lens(ambi_order, sofa_path, [sofa_name,sofa_ext], hrir_len); + +%% SHD -> CLDFB via least squares error optimization +[~,num_ears,num_ch] = size(IR); +num_cldfb_taps = 3; +IR_cldfb = zeros(60,num_cldfb_taps,num_ears,num_ch); % 60 frequency bands +eval_flag = 0; % optional, = 1 requires signal processing toolbox (fftfilt) +legacy_flag = 1; % = 1 used to indicate slightly too short buffers as used to generate tested coefficients +for pos = 1:num_ch + disp(['Channel ',num2str(pos),'/',num2str(num_ch)]) + for ear = 1:num_ears + IR_cldfb(:,:,ear,pos) = fir_to_cldfb_fir( IR(:,ear,pos), num_cldfb_taps, eval_flag, legacy_flag ); + end +end + +%% CLDFB -> ROM +latency_s = 2.083333333333333e-05; % No added latency from conversion method +max_band = 50; % Compute 60 bands, but only use 50 in ROM table + +IR_cldfb_rom = permute(IR_cldfb, [3 1 4 2]); % after permute: [ears(2), bands(60), chans(16), taps(3)] +IR_cldfb_rom = IR_cldfb_rom(:,1:max_band,:,:); +if ambi_order == 1 + order = 'FOA'; +else + order = ['HOA' int2str(ambi_order)]; +end +if ~exist('rom_c_file','var') || isempty(rom_c_file) + rom_c_file = [thispath,'ivas_rom_binauralRenderer_',order,'.c']; % fullfile(thispath,'..','..','..','lib_rend',['ivas_rom_binauralRenderer_',order,'.c']); +end + +fid = fopen(rom_c_file,'wt'); + +fprintf(fid, ['const float FASTCONV_' order '_latency_s = %10.9ff;\n'], latency_s); +write_one_ear( fid, ['const float leftHRIRReal_' order '[BINAURAL_CONVBANDS][' order '_CHANNELS][BINAURAL_NTAPS_SBA]='], real(IR_cldfb_rom(1,:,:,:))); +write_one_ear( fid, ['const float leftHRIRImag_' order '[BINAURAL_CONVBANDS][' order '_CHANNELS][BINAURAL_NTAPS_SBA]='], imag(IR_cldfb_rom(1,:,:,:))); +write_one_ear( fid, ['const float rightHRIRReal_' order '[BINAURAL_CONVBANDS][' order '_CHANNELS][BINAURAL_NTAPS_SBA]='], real(IR_cldfb_rom(2,:,:,:))); +write_one_ear( fid, ['const float rightHRIRImag_' order '[BINAURAL_CONVBANDS][' order '_CHANNELS][BINAURAL_NTAPS_SBA]='], imag(IR_cldfb_rom(2,:,:,:))); + +fclose(fid); + +function write_one_ear( fid, first_line, IR_cldfb_rom) +IR_cldfb_rom = squeeze(IR_cldfb_rom); +[num_bands,num_chans, num_taps] = size(IR_cldfb_rom); +num_spaces = 4; +num_spaces_cur = 0; +fprintf(fid,[first_line,'\n{\n']); +num_spaces_cur = num_spaces_cur + num_spaces; +for band = 1:num_bands + fprintf(fid,[blanks(num_spaces_cur),'{\n']); + num_spaces_cur = num_spaces_cur + num_spaces; + for chan = 1:num_chans + fprintf(fid,[blanks(num_spaces_cur),'{']); + for tap = 1:num_taps + if tap == num_taps + fprintf(fid,'%+ff',IR_cldfb_rom(band,chan,tap)); + else + fprintf(fid,'%+ff, ',IR_cldfb_rom(band,chan,tap)); + end + end + if chan == num_chans + fprintf(fid,'}\n'); + else + fprintf(fid,'},\n'); + end + end + num_spaces_cur = num_spaces_cur - num_spaces; + if band == num_bands + fprintf(fid,[blanks(num_spaces_cur),'}\n']); + else + fprintf(fid,[blanks(num_spaces_cur),'},\n']); + end +end +fprintf(fid,'};\n\n'); diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/convert_SD2SHD_HRIRs.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/convert_SD2SHD_HRIRs.m new file mode 100644 index 0000000000000000000000000000000000000000..0281f7d52f4fc6e51dc7686ae5ea795fd3026bee --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/convert_SD2SHD_HRIRs.m @@ -0,0 +1,64 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function convert_SD2SHD_HRIRs(sofa_path, sofa_file, IR_size) + +data_struct = struct.empty(3,0); + +sr = [48000, 32000, 16000]; +sr_short = [48, 32, 16]; +sr_dft_size = [240, 160, 80]; + +% FOA +data_struct(1).IR_data = generate_HOA_HRIRs_MOD_lens(1, sofa_path, sofa_file, IR_size); +data_struct(1).HOA_name = 'FOA'; +data_struct(1).n_HOA_ch = 4; +data_struct(1).sr = sr; +data_struct(1).sr_short = sr_short; +data_struct(1).sr_dft_size = sr_dft_size; + +% HOA2 +data_struct(2).IR_data = generate_HOA_HRIRs_MOD_lens(2, sofa_path, sofa_file, IR_size); +data_struct(2).HOA_name = 'HOA2'; +data_struct(2).n_HOA_ch = 9; +data_struct(2).sr = sr; +data_struct(2).sr_short = sr_short; +data_struct(2).sr_dft_size = sr_dft_size; + +% HOA3 +data_struct(3).IR_data = generate_HOA_HRIRs_MOD_lens(3, sofa_path, sofa_file, IR_size); +data_struct(3).HOA_name = 'HOA3'; +data_struct(3).n_HOA_ch = 16; +data_struct(3).sr = sr; +data_struct(3).sr_short = sr_short; +data_struct(3).sr_dft_size = sr_dft_size; + +generate_rom_tables(data_struct) diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/fir_to_cldfb_fir.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/fir_to_cldfb_fir.m new file mode 100644 index 0000000000000000000000000000000000000000..5043f4f2c7577e11b070a33c18ae8bcffb6bef5f --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/fir_to_cldfb_fir.m @@ -0,0 +1,304 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function F = fir_to_cldfb_fir( target_fir, num_cldfb_taps, eval_flag, legacy_flag ) +% F = fir_to_cldfb_fir( target_fir, num_cldfb_taps, eval_flag, legacy_flag ) +% +% computes complex-valued FIR coefficients to be applied in the CLDFB analysis domain +% which approximate time domain filtering with given target FIR coefficients +% in a least squares sense. + +[pFilter, D, S, L] = get_cldfb_filter; +cldfb_delay = D - S + 1; % processing delay given stride +pFilt = sqrt(S)/L * pFilter(:); +N = length(pFilt); +%legacy_flag = 1; % = 1 used to indicate slightly too short buffers as used to generate tested coefficients + +% Filter Bank analysis / synthesis filters +cldfb_mod_mat = exp(1i*((0:N-1)'-D/2) * ((0:L-1)+0.5) * pi/L ); % N x L modulation matrix with alternating sign periodicity of 2*L in time (row) direction +cldfb_ansyn_filters = pFilt .* cldfb_mod_mat; % all (L) analysis/synthesis filters + +target_fir = target_fir(:); +fir_length = length(target_fir); + +%% brute force least squares +if legacy_flag + num_slots = ceil(fir_length/S) + 10; % used to generate tested IVAS coefficients in CLDFB HRIR ROM with slightly too short buffers + inp_len = S * num_slots; + len = inp_len - cldfb_delay; + idx_opt = cldfb_delay + (1:len); + pos_offset = 200; +else + num_slots = ceil((fir_length + 2 * N - 1) / S); % convolution with target fir, analysis + synthesis filters (of length N each) + len = S * num_slots; + inp_len = len; + idx_opt = (1:len); % use all output samples in the optimization, including the filter bank delay + pos_offset = 0; +end + +% Big trial and error +Nbins = num_cldfb_taps * L; +Vreal = zeros(S*len, Nbins); % all real for all shifts concatenated for each mask bin, +Vimag = zeros(S*len, Nbins); % then all imag +r = zeros(S*len,1); % right hand side all shifts concatenated + +x = zeros(inp_len,1); +for pos = 1:S + % input dirac pulse + x(:) = 0; + + % target impulse response y0 for input pulse at pos + out = x; + out(pos+pos_offset+(0:fir_length-1)) = target_fir; + y0 = [zeros(cldfb_delay,1);out(1:end-cldfb_delay)]; + r(len*(pos-1)+(1:len)) = y0(idx_opt); + fprintf('.'); + + % CLDFB analysis for impulse input + x(pos+pos_offset) = 1; + X = zeros(L,num_slots); + frm_idx = (1:N)'; + x_tmp = [zeros(N-S,1);x]; + for slt = 1:num_slots + X(:,slt) = sum(cldfb_ansyn_filters.*flipud(x_tmp(frm_idx))).'; + frm_idx = frm_idx + S; + end + for cldfb_bin = 1:Nbins + cldfb_band = rem(cldfb_bin-1,L)+1; + cldfb_lag = fix((cldfb_bin-1)/L); + + % real-valued filter contribution of a single tap + frm_idx = cldfb_lag * S + (1:N)'; + y_tmp = zeros( num_slots * S + N - S,1); + for slt = cldfb_lag+1:num_slots + y_tmp(frm_idx) = y_tmp(frm_idx) + real(X(cldfb_band,slt-cldfb_lag) * cldfb_ansyn_filters(:,cldfb_band)); + frm_idx = frm_idx + S; + end + Vreal(len*(pos-1)+1:len*pos,cldfb_bin) = y_tmp(idx_opt); + + % imaginary-valued filter contribution of a single tap + frm_idx = cldfb_lag * S + (1:N)'; + y_tmp(:) = 0; + for slt = cldfb_lag+1:num_slots + y_tmp(frm_idx) = y_tmp(frm_idx) + real(1i*X(cldfb_band,slt-cldfb_lag) * cldfb_ansyn_filters(:,cldfb_band)); + frm_idx = frm_idx + S; + end + Vimag(len*(pos-1)+1:len*pos,cldfb_bin) = y_tmp(idx_opt); + end % bin +end % pos +fprintf('\n'); + +% solve lsq +V = [Vreal,Vimag]; +M = V'*V; +Mrel = M + 1e-8*norm(M)*eye(size(M)); +c = Mrel\(V'*r); + +% map back to mask locations +F = zeros(L,num_cldfb_taps); +for cldfb_bin = 1:Nbins + F(cldfb_bin) = c(cldfb_bin)+1i*c(Nbins+cldfb_bin); +end + +if eval_flag + % evaluation (not needed for table generation, needs signal processing toolbox) + get_snr( target_fir, F, cldfb_ansyn_filters, cldfb_delay, S ); +end + +function get_snr( target_fir, cldfb_firs, cldfb_ansyn_filters, cldfb_delay, S ) + +rng(0); +num_samples = 5*48000; +x = randn(num_samples,1); + +% Filter noise in time domain +y1 = fftfilt(target_fir,x); + +% Filter noise in CLDFB domain +[N,L] = size(cldfb_ansyn_filters); +num_slots = ceil((num_samples + cldfb_delay) / S); +% analysis +X = zeros(L,num_slots); +frm_idx = (1:N)'; +x_tmp = [zeros(N-S,1);x;zeros(cldfb_delay,1)]; +for slt = 1:num_slots + X(:,slt) = sum(cldfb_ansyn_filters.*flipud(x_tmp(frm_idx))).'; + frm_idx = frm_idx + S; +end +% filter +X = fftfilt(cldfb_firs.',X.').'; +% synthesis +frm_idx = (1:N)'; +y_tmp = zeros( num_slots * S + N - S,1); +for slt = 1:num_slots + y_tmp(frm_idx) = y_tmp(frm_idx) + real(sum(X(:,slt).' .* cldfb_ansyn_filters,2)); + frm_idx = frm_idx + S; +end +y2 = y_tmp(cldfb_delay+(1:num_samples)); + +plot(y1), hold on, plot(y2,'r--'), plot(y1-y2,'k'), hold off +set(gca,'xlim',[1,num_samples]) +fprintf('SNR: %.1f dB \n', 10*log10(sum(y1.^2)/sum((y1-y2).^2))); +legend('time domain','CLDFB domain','difference') +title('Filtered noise') + +function [h, D, S, L] = get_cldfb_filter() +% const float LDQMF_60[] in \lib_com\rom_com.c, line 5219 +S = 60; % stride +L = 60; % frequency bands +D = 240 + S - 1; % system delay +h = [ + 0.0000953076, 0.0001230230, 0.0001279964, 0.0001260533, 0.0001211219 + 0.0001122123, 0.0001010860, 0.0000876540, 0.0000719883, 0.0000545472 + 0.0000352143, 0.0000145686, -0.0000074264, -0.0000303788, -0.0000539205 + -0.0000782743, -0.0001028838, -0.0001275374, -0.0001520015, -0.0001760167 + -0.0001997108, -0.0002226708, -0.0002446725, -0.0002655797, -0.0002852145 + -0.0003034996, -0.0003203036, -0.0003356283, -0.0003493345, -0.0003614030 + -0.0003719004, -0.0003807641, -0.0003881051, -0.0003939842, -0.0003985357 + -0.0004019095, -0.0004041938, -0.0004056677, -0.0004065430, -0.0004069925 + -0.0004072535, -0.0004075877, -0.0004083676, -0.0004098394, -0.0004122990 + -0.0004160839, -0.0004214063, -0.0004285777, -0.0004378651, -0.0004495422 + -0.0004637682, -0.0004806494, -0.0005003878, -0.0005231378, -0.0005489803 + -0.0005777747, -0.0006095612, -0.0006443121, -0.0006813223, -0.0007226231 + -0.0007722576, -0.0008268412, -0.0008839625, -0.0009417336, -0.0010004630 + -0.0010601623, -0.0011206097, -0.0011817788, -0.0012432419, -0.0013045983 + -0.0013656860, -0.0014260965, -0.0014855355, -0.0015435946, -0.0015999591 + -0.0016543545, -0.0017062968, -0.0017554691, -0.0018015467, -0.0018441341 + -0.0018829798, -0.0019177221, -0.0019480695, -0.0019736972, -0.0019943134 + -0.0020097434, -0.0020197174, -0.0020240925, -0.0020226294, -0.0020152442 + -0.0020017736, -0.0019820682, -0.0019561697, -0.0019240153, -0.0018855907 + -0.0018409232, -0.0017900462, -0.0017330211, -0.0016699535, -0.0016009507 + -0.0015261442, -0.0014456788, -0.0013597424, -0.0012685407, -0.0011722331 + -0.0010710671, -0.0009652392, -0.0008549765, -0.0007405236, -0.0006221444 + -0.0005001140, -0.0003745670, -0.0002458634, -0.0001142541, 0.0000199491 + 0.0001564174, 0.0002949402, 0.0004350246, 0.0005769439, 0.0007203126 + -0.0008803223, -0.0010328424, -0.0011841310, -0.0013346316, -0.0014848098 + -0.0016343417, -0.0017832819, -0.0019316213, -0.0020790498, -0.0022252349 + -0.0023701149, -0.0025136294, -0.0026556554, -0.0027960713, -0.0029348312 + -0.0030717771, -0.0032068293, -0.0033399195, -0.0034709862, -0.0035999804 + -0.0037267797, -0.0038513308, -0.0039736414, -0.0040935921, -0.0042111278 + -0.0043262239, -0.0044388464, -0.0045489701, -0.0046565188, -0.0047614835 + -0.0048637423, -0.0049632201, -0.0050599808, -0.0051539382, -0.0052450863 + -0.0053333500, -0.0054187514, -0.0055012843, -0.0055808770, -0.0056575472 + -0.0057313135, -0.0058021732, -0.0058701355, -0.0059352517, -0.0059975707 + -0.0060571772, -0.0061141332, -0.0061685541, -0.0062205540, -0.0062703062 + -0.0063179093, -0.0063635921, -0.0064075105, -0.0064498796, -0.0064908965 + -0.0065308069, -0.0065698619, -0.0066083665, -0.0066466411, -0.0066849431 + -0.0067233290, -0.0067621553, -0.0068021296, -0.0068436749, -0.0068870094 + -0.0069324085, -0.0069801519, -0.0070305937, -0.0070840055, -0.0071406048 + -0.0072006541, -0.0072644479, -0.0073321410, -0.0074039386, -0.0074799177 + -0.0075602704, -0.0076450342, -0.0077342330, -0.0078278277, -0.0079257628 + -0.0080279401, -0.0081341872, -0.0082442267, -0.0083577875, -0.0084744738 + -0.0085938899, -0.0087156557, -0.0088391500, -0.0089637861, -0.0090888245 + -0.0092134504, -0.0093367994, -0.0094579896, -0.0095760096, -0.0096898535 + -0.0097982995, -0.0099003557, -0.0099947909, -0.0100801717, -0.0101551116 + -0.0102182031, -0.0102678994, -0.0103026126, -0.0103207529, -0.0103206923 + -0.0103006857, -0.0102590285, -0.0101939747, -0.0101036867, -0.0099863587 + -0.0098401112, -0.0096632261, -0.0094537362, -0.0092098210, -0.0089295702 + -0.0086111929, -0.0082527259, -0.0078523541, -0.0074084769, -0.0069190590 + 0.0063841688, 0.0057985946, 0.0051621343, 0.0044734711, 0.0037309236 + 0.0029329660, 0.0020781513, 0.0011651339, 0.0001925042, -0.0008409545 + -0.0019364181, -0.0030950012, -0.0043176264, -0.0056051607, -0.0069584334 + -0.0083780792, -0.0098646237, -0.0114185056, -0.0130400723, -0.0147295250 + -0.0164868534, -0.0183120724, -0.0202049762, -0.0221651513, -0.0241921283 + -0.0262852497, -0.0284437388, -0.0306666382, -0.0329528190, -0.0353010744 + -0.0377098918, -0.0401776619, -0.0427025780, -0.0452826768, -0.0479161367 + -0.0506004691, -0.0533332452, -0.0561118126, -0.0589331910, -0.0617944039 + -0.0646922663, -0.0676232576, -0.0705836788, -0.0735698044, -0.0765774846 + -0.0796026587, -0.0826408863, -0.0856874809, -0.0887378305, -0.0917868018 + -0.0948293805, -0.0978601947, -0.1008738130, -0.1038645208, -0.1068264544 + -0.1097536832, -0.1126400903, -0.1154794544, -0.1182654947, -0.1209914312 + -0.1236500666, -0.1262341589, -0.1287376434, -0.1311538219, -0.1334753036 + -0.1356947273, -0.1378047168, -0.1397978216, -0.1416664869, -0.1434033662 + -0.1450008005, -0.1464512348, -0.1477471888, -0.1488809884, -0.1498452872 + -0.1506324410, -0.1512351334, -0.1516460329, -0.1518578976, -0.1518635303 + -0.1516559124, -0.1512281001, -0.1505732536, -0.1496847868, -0.1485562176 + -0.1471813470, -0.1455538720, -0.1436681300, -0.1415183097, -0.1390990764 + -0.1364052594, -0.1334318966, -0.1301742792, -0.1266280264, -0.1227891371 + -0.1186537445, -0.1142183766, -0.1094799563, -0.1044355705, -0.0990828425 + -0.0934195668, -0.0874440819, -0.0811550021, -0.0745511875, -0.0676321834 + -0.0603975877, -0.0528475679, -0.0449828543, -0.0368040986, -0.0283128861 + -0.0195108838, -0.0104003223, -0.0009837818, 0.0087356847, 0.0187546927 + 0.0290693250, 0.0396753438, 0.0505682528, 0.0617432520, 0.0731955394 + -0.0849232078, -0.0969054326, -0.1091460735, -0.1216373071, -0.1343720406 + -0.1473424733, -0.1605402082, -0.1739567965, -0.1875831038, -0.2014097124 + -0.2154271752, -0.2296251506, -0.2439934313, -0.2585212290, -0.2731975317 + -0.2880111337, -0.3029502928, -0.3180032372, -0.3331578076, -0.3484017253 + -0.3637222052, -0.3791064322, -0.3945416212, -0.4100143015, -0.4255111217 + -0.4410185516, -0.4565227628, -0.4720100164, -0.4874662757, -0.5028775334 + -0.5182296634, -0.5335084200, -0.5486994982, -0.5637886524, -0.5787616372 + -0.5936041474, -0.6083019376, -0.6228409410, -0.6372069120, -0.6513859630 + -0.6653640866, -0.6791275144, -0.6926627755, -0.7059561610, -0.7189947963 + -0.7317654490, -0.7442554235, -0.7564523220, -0.7683438063, -0.7799182534 + -0.7911639810, -0.8020697832, -0.8126249313, -0.8228194118, -0.8326428533 + -0.8420860767, -0.8511404991, -0.8597975969, -0.8680517077, -0.8758881092 + -0.8832823634, -0.8902196884, -0.8967157602, -0.9027729034, -0.9083824754 + -0.9135394692, -0.9182395935, -0.9224776030, -0.9262499809, -0.9295535684 + -0.9323854446, -0.9347436428, -0.9366261959, -0.9380323887, -0.9389615655 + -0.9394137263, -0.9393896461, -0.9388904572, -0.9379178882, -0.9364743829 + -0.9345626831, -0.9321863055, -0.9293491840, -0.9260557890, -0.9223110080 + -0.9181203246, -0.9134896994, -0.9084255695, -0.9029349089, -0.8970250487 + -0.8907034993, -0.8839784265, -0.8768582940, -0.8693521619, -0.8614694476 + -0.8532197475, -0.8446131349, -0.8356599212, -0.8263708353, -0.8167568445 + -0.8068289757, -0.7965991497, -0.7860788107, -0.7752800584, -0.7642148733 + -0.7528960109, -0.7413358092, -0.7295469642, -0.7175422311, -0.7053351402 + -0.6929380894, -0.6803644896, -0.6676273942, -0.6547405124, -0.6417166591 + -0.6285686493, -0.6153115034, -0.6019562483, -0.5885198116, -0.5750215650 + 0.5615197420, 0.5478612781, 0.5341838002, 0.5204906464, 0.5067980289 + 0.4931168854, 0.4794588387, 0.4658361673, 0.4522601366, 0.4387422502 + 0.4252935350, 0.4119254053, 0.3986486793, 0.3854739666, 0.3724119067 + 0.3594728410, 0.3466667533, 0.3340034485, 0.3214924335, 0.3091430366 + 0.2969639599, 0.2849639654, 0.2731511295, 0.2615332901, 0.2501178682 + 0.2389119864, 0.2279221565, 0.2171545923, 0.2066148520, 0.1963084787 + 0.1862401515, 0.1764142811, 0.1668347418, 0.1575049609, 0.1484276950 + 0.1396053135, 0.1310400218, 0.1227331311, 0.1146853194, 0.1068974212 + 0.0993694067, 0.0921007246, 0.0850901082, 0.0783365741, 0.0718384907 + 0.0655927584, 0.0595967993, 0.0538481586, 0.0483424664, 0.0430756323 + 0.0380428955, 0.0332404599, 0.0286619961, 0.0242999699, 0.0201510899 + 0.0162059069, 0.0124559226, 0.0088928537, 0.0054926532, 0.0023052765 + -0.0005515143, -0.0030201224, -0.0052712574, -0.0073737046, -0.0093160523 + -0.0111072771, -0.0127562135, -0.0142635731, -0.0156361461, -0.0168790054 + -0.0179969221, -0.0189934950, -0.0198726747, -0.0206398536, -0.0212980714 + -0.0218509119, -0.0223025978, -0.0226570386, -0.0229178313, -0.0230882075 + -0.0231725387, -0.0231746566, -0.0230979007, -0.0229462404, -0.0227237809 + -0.0224345829, -0.0220820960, -0.0216706358, -0.0212045144, -0.0206875466 + -0.0201238506, -0.0195175279, -0.0188730918, -0.0181944817, -0.0174855441 + -0.0167510118, -0.0159947462, -0.0152208358, -0.0144332750, -0.0136361914 + -0.0128338682, -0.0120294262, -0.0112272501, -0.0104311826, -0.0096443929 + -0.0088709844, -0.0081134979, -0.0073764324, -0.0066623385, -0.0059733889 + -0.0053142183, -0.0046856776, -0.0040914025, -0.0035321070, -0.0030089030 + -0.0025271603, -0.0020749648, -0.0016621647, -0.0012705614, -0.0008115423 +]; +h = h.'; +h = h(:); +h(1*120+(1:120)) = -h(1*120+(1:120)); +h(3*120+(1:120)) = -h(3*120+(1:120)); +h(:) = h(end:-1:1); \ No newline at end of file diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/generate_HOA_HRIRs_MOD_lens.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/generate_HOA_HRIRs_MOD_lens.m new file mode 100644 index 0000000000000000000000000000000000000000..22a42dd1905059166cded0c4009222b4c7c96e35 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/generate_HOA_HRIRs_MOD_lens.m @@ -0,0 +1,126 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function IR_data = generate_HOA_HRIRs_MOD_lens(order, sofa_path, sofa_file_name, ir_len) + % HRIR convertor - Takes sphere sampled HRIRs and converts them to + % HOA HRIRs. + % + % order - HOA order to be converted to. + % sofa_path - path to the directory that contains the sofa files to be + % converted. + % sofa_file - file name of the HRTFs to be converted + % ir_len - length of the IRs to be used. + % + % Typical usage: + % generate_HOA_HRIRs_MOD_lens(1, '~/git/ivas-pc-testfiles/sofa-files/', 'HRIR_128_48000.sofa', 128) + % + +% Load in the support coefs +load('hrtf_support_coefs.mat', 'hrtf_support_coefs'); +rmsSphere = hrtf_support_coefs(order).rmsSphere; +LR_Odd = hrtf_support_coefs(order).LR_Odd; +XYZ_to_Pan = hrtf_support_coefs(order).XYZ_to_Pan; +AllPass = hrtf_support_coefs(order).AP; + +% Choose a hi-res set of positions to sample the input HRTFs +Vs_hi_res = load("sphere_packing_2562.mat"); +Vs_hi_res = Vs_hi_res.Vs_hi_res; +N = 512; + +% Fetch the HRTFs, and figure out the ITD for every direction +% name = ['HRIR_', num2str(ir_len), '_Meth5_IRC_53_Q10_symL_Itrp1_48000']; +H = hrtf_library_loader(); +H.readSOFA(char(fullfile(sofa_path, sofa_file_name))); + +IRs_hi_res = H.XYZ_to_IR(Vs_hi_res); +FRs_hi_res = m_dft(IRs_hi_res, N); % freq x ears x Vs + +FRs_hi_res_minP = mag2min_phase(FRs_hi_res); + +Excess_Phase = squeeze(unwrap(diff(angle(FRs_hi_res), 1, 2) - ... + diff(angle(FRs_hi_res_minP), 1, 2))); + +bin1200 = ceil( 1200/24000*N ); +ITD_hi_res = Excess_Phase(bin1200,:)' / ((bin1200-0.5)/N*24000*2*pi); + +MaxDel = max(ITD_hi_res, [], 'all'); + +% Create 2 ears +Ear_dels_hi_res = (repmat(ITD_hi_res, 1, 2) .* [0.5 -0.5]) + 0.5*MaxDel .* ... + (1 - 2/pi*cos(ITD_hi_res * pi/2 / MaxDel)); + +MRs_hi_res = abs(FRs_hi_res_minP); +% Generate permutation +[~, perm] = ismembertol(... + Vs_hi_res', Vs_hi_res'.*[1,-1,1], ... + 1e-4, "ByRows",true); +MRs_hi_res(:,2,:) = MRs_hi_res(:,2,perm); + +New_FreqResp_L = mag2min_phase(squeeze(mean(MRs_hi_res, 2))) .* ... + m_dft(get_allpass_IRs(AllPass, Ear_dels_hi_res(:, 1) * 48000), N, 1); + +% Create solving weights +weights = abs(New_FreqResp_L); +weights(weights < 0.1) = 0.1; +weights = 1 ./ (sqrt(sqrt(weights))); + +% Solve to compute the HOA frequency responses. +[m, ~] = size(XYZ_to_Pan); +FreqResp_HOA = zeros(m, N); +for k=1:N + Aw = New_FreqResp_L(k,:) .* weights(k,:); + Bw = XYZ_to_Pan .* weights(k,:); + + FreqResp_HOA(:,k) = Aw * pinv(Bw, 0); +end + +FreqResp_HOA_abs2 = real(FreqResp_HOA.*conj(FreqResp_HOA)); +FreqResp_HOA = FreqResp_HOA .* mag2min_phase(((FreqResp_HOA_abs2' * rmsSphere.^2) .^ (-0.5)), 1).'; +% Convert back to IRs +IR_HOA = m_idft(FreqResp_HOA.', [], 1); + +IR_HOA = cat(3, IR_HOA, (IR_HOA .* (1-2*LR_Odd)')); +% Put matrix dimensions in the right order +IR_HOA = permute(IR_HOA, [3, 1, 2]); + +% Get the IRs to the right length +IR_HOA = IR_HOA(:,1:ir_len,:) .* sin(interp1([0,150/192*ir_len,ir_len+1],[1,1,0]*pi/2, 1:ir_len)); + +IR = permute(IR_HOA, [2, 1, 3]); +HOAformat_str = ['HOA',num2str(order),'S']; +save(fullfile(erase(sofa_file_name, ".sofa") + "_converted_" + HOAformat_str + ".mat"), "IR") + +IR_data = IR; + + + + + diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/generate_rom_tables.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/generate_rom_tables.m new file mode 100644 index 0000000000000000000000000000000000000000..4f0e959c6d783ae3c0b997909064d00de209573f --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/generate_rom_tables.m @@ -0,0 +1,253 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function generate_rom_tables(data_struct) + + h_file_name = 'ivas_rom_binaural_crend_head.h'; + c_file_name = 'ivas_rom_binaural_crend_head.c'; + tab = ' '; + + copyright_str = string(join({ + '/******************************************************************************************************' + '' + ' (C) 2022-2023 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.' + '' + '*******************************************************************************************************/' + '' + '/* clang-format off */' + '' + '/*-------------------------------------------------------------------------' + ' * Binaural rendering related ROM tables' + ' *------------------------------------------------------------------------*/' + '' + '/* Binaural rendering data set based on HRIRs */' + '/* Tables generated by scripts/binauralRenderer_interface/generate_cren_ivas_tables.c, see mixer_conv_sofa_to_rom_table_converter_readme.txt */' + '/* Can be replaced by your own generated HRIR or BRIR tables */' + '' + '' + }, newline)); + + %% Write out the header + fileID = fopen(h_file_name,'w'); + fprintf(fileID,'%s', copyright_str); + + h_file_content = string(join({ + '' + '' + '#ifndef _IVAS_ROM_BINAURAL_CREND_HEAD_' + '#define _IVAS_ROM_BINAURAL_CREND_HEAD_' + '' + '#include "ivas_cnst.h"' + '' + '' + }, newline)); + fprintf(fileID,'%s', h_file_content); + + for hoa_idx=1:length(data_struct) + HOA_name = data_struct(hoa_idx).HOA_name; + n_HOA_ch = data_struct(hoa_idx).n_HOA_ch; + + h_file_content = string(join({ + sprintf('\n/********************** CRendBin_%s_HRIR **********************/', HOA_name) + '' + sprintf('extern float CRendBin_%s_HRIR_latency_s;', HOA_name) + '' + }, newline)); + fprintf(fileID,'%s', h_file_content); + for sr_idx=1:length(data_struct(hoa_idx).sr) + sr = data_struct(hoa_idx).sr(sr_idx); + sr_short = data_struct(hoa_idx).sr_short(sr_idx); + sr_dft_size = data_struct(hoa_idx).sr_dft_size(sr_idx); + + fprintf(fileID, '\n/* Sample Rate = %d */\n\n', sr); + fprintf(fileID, 'extern int16_t CRendBin_%s_HRIR_max_num_iterations_%dkHz;\n', HOA_name, sr_short); + fprintf(fileID, 'extern uint16_t CRendBin_%s_HRIR_num_iterations_%dkHz[%d][BINAURAL_CHANNELS];\n', HOA_name, sr_short, n_HOA_ch); + fprintf(fileID, 'extern uint16_t CRendBin_%s_HRIR_num_iterations_diffuse_%dkHz[BINAURAL_CHANNELS];\n', HOA_name, sr_short); + fprintf(fileID, 'extern uint16_t CRendBin_%s_HRIR_pIndex_frequency_max_%dkHz[%d][BINAURAL_CHANNELS][1];\n', HOA_name, sr_short, n_HOA_ch); + fprintf(fileID, 'extern uint16_t CRendBin_%s_HRIR_index_frequency_max_diffuse_%dkHz;\n', HOA_name, sr_short); + fprintf(fileID, 'extern float CRendBin_%s_HRIR_inv_diffuse_weight_%dkHz[%d];\n', HOA_name, sr_short, n_HOA_ch); + fprintf(fileID, 'extern uint16_t *CRendBin_%s_HRIR_pIndex_frequency_max_diffuse_%dkHz[BINAURAL_CHANNELS];\n', HOA_name, sr_short); + fprintf(fileID, 'extern float CRendBin_%s_HRIR_coeff_re_%dkHz[%d][BINAURAL_CHANNELS][%d];\n', HOA_name, sr_short, n_HOA_ch, sr_dft_size); + fprintf(fileID, 'extern float CRendBin_%s_HRIR_coeff_im_%dkHz[%d][BINAURAL_CHANNELS][%d];\n', HOA_name, sr_short, n_HOA_ch, sr_dft_size); + fprintf(fileID, 'extern float *CRendBin_%s_HRIR_coeff_diffuse_re_%dkHz[BINAURAL_CHANNELS];\n', HOA_name, sr_short); + fprintf(fileID, 'extern float *CRendBin_%s_HRIR_coeff_diffuse_im_%dkHz[BINAURAL_CHANNELS];\n', HOA_name, sr_short); + end + end + fprintf(fileID,'%s\n', '#endif /* _IVAS_ROM_BINAURAL_CREND_HEAD_ */'); + fclose(fileID); + + %% Write out the c file + fileID = fopen(c_file_name,'w'); + fprintf(fileID,'%s', copyright_str); + + c_file_content = string(join({ + '' + '' + '#include ' + '#include "ivas_cnst.h"' + '' + '/* clang-format off */' + '' + '#define WMC_TOOL_SKIP' + '' + '' + '' + }, newline)); + fprintf(fileID,'%s', c_file_content); + + for hoa_idx=1:length(data_struct) + HOA_name = data_struct(hoa_idx).HOA_name; + n_HOA_ch = data_struct(hoa_idx).n_HOA_ch; + + % First Sample rate must be 48k + assert(data_struct(hoa_idx).sr(1) == 48000) + + % Force Latency of HRIRs to 1 sample to retain bit exactness + latency = 1 / data_struct(hoa_idx).sr(1); + latency = latency + 0.000000001; + + fprintf(fileID,'\n/********************** CRendBin_%s_HRIR **********************/\n\n', HOA_name); + fprintf(fileID,'const float CRendBin_%s_HRIR_latency_s = %10.9ff;\n', HOA_name, latency); + + % 48k data + resampled_data{1} = data_struct(hoa_idx).IR_data; + % Resample to 32k + resampled_data{2} = resample(data_struct(hoa_idx).IR_data, 2, 3, 128, 'Dimension', 1); + % Resample to 16k + resampled_data{3} = resample(data_struct(hoa_idx).IR_data, 1, 3, 128, 'Dimension', 1); + for sr_idx=1:length(data_struct(hoa_idx).sr) + sr = data_struct(hoa_idx).sr(sr_idx); + sr_short = data_struct(hoa_idx).sr_short(sr_idx); + sr_dft_size = data_struct(hoa_idx).sr_dft_size(sr_idx); + + FR = m_dft(resampled_data{1}, data_struct(hoa_idx).sr_dft_size(sr_idx), 1); + + fprintf(fileID, '\n'); + fprintf(fileID, '/* Sample Rate = %d */\n', sr); + fprintf(fileID, '\n'); + fprintf(fileID, 'const int16_t CRendBin_%s_HRIR_max_num_iterations_%dkHz = 1;\n', HOA_name, sr_short); + fprintf(fileID, 'const uint16_t CRendBin_%s_HRIR_num_iterations_%dkHz[%d][BINAURAL_CHANNELS]={', HOA_name, sr_short, n_HOA_ch); + c_file_content = ''; + for ch_idx=1:n_HOA_ch + c_file_content = [c_file_content, '{1, 1}, ']; + end + c_file_content(end-1:end) = []; + fprintf(fileID, '%s', c_file_content); + fprintf(fileID, ' };\n'); + fprintf(fileID, 'const uint16_t CRendBin_%s_HRIR_num_iterations_diffuse_%dkHz[BINAURAL_CHANNELS] = {0, 0};\n', HOA_name, sr_short); + fprintf(fileID, 'const uint16_t CRendBin_%s_HRIR_pIndex_frequency_max_%dkHz[%d][BINAURAL_CHANNELS][1]={', HOA_name, sr_short, n_HOA_ch); + c_file_content = ''; + for ch_idx=1:n_HOA_ch + c_file_content = [c_file_content '{']; + for ear_idx=1:2 + c_file_content = [c_file_content, sprintf('{%d},', sr_dft_size)]; + end + c_file_content(end) = []; + c_file_content = [c_file_content '},']; + end + c_file_content(end) = []; + fprintf(fileID, '%s', c_file_content); + fprintf(fileID, '};\n'); + fprintf(fileID, 'const uint16_t CRendBin_%s_HRIR_index_frequency_max_diffuse_%dkHz = 0;\n', HOA_name, sr_short); + fprintf(fileID, 'const float CRendBin_%s_HRIR_inv_diffuse_weight_%dkHz[%d]={', HOA_name, sr_short, n_HOA_ch); + c_file_content = ''; + for ch_idx=1:data_struct(hoa_idx).n_HOA_ch + c_file_content = [c_file_content, sprintf('%ff, ', 0.0)]; + end + c_file_content(end-1:end) = []; + fprintf(fileID, '%s', c_file_content); + fprintf(fileID, '};\n'); + fprintf(fileID, 'const uint16_t *CRendBin_%s_HRIR_pIndex_frequency_max_diffuse_%dkHz[BINAURAL_CHANNELS]={NULL,NULL};\n', HOA_name, sr_short); + + % Real Part + write_out_HRIR(fileID, tab, n_HOA_ch, 2, sr_dft_size, FR, @real, 're', HOA_name, sr_short); + % Imag Part + write_out_HRIR(fileID, tab, n_HOA_ch, 2, sr_dft_size, FR, @imag, 'im', HOA_name, sr_short); + + fprintf(fileID, 'const float *CRendBin_%s_HRIR_coeff_diffuse_re_%dkHz[BINAURAL_CHANNELS]={NULL,NULL};\n', HOA_name, sr_short); + fprintf(fileID, 'const float *CRendBin_%s_HRIR_coeff_diffuse_im_%dkHz[BINAURAL_CHANNELS]={NULL,NULL};\n', HOA_name, sr_short); + end + end + fprintf(fileID, '\n#undef WMC_TOOL_SKIP\n\n'); + + fclose(fileID); + +end + +function write_out_HRIR(fileID, tab, n_hoa_ch, n_ears, dft_size, freq_resp, func_handle, func_name, hoa_name, sr_short) + fprintf(fileID,'%s\n', sprintf('const float CRendBin_%s_HRIR_coeff_%s_%dkHz[%d][BINAURAL_CHANNELS][%d]={', hoa_name, func_name, sr_short, n_hoa_ch, dft_size)); + for hoa_idx=1:n_hoa_ch + fprintf(fileID,'%s%s\n', tab, '{'); + for ear_idx=1:n_ears + fprintf(fileID,'%s%s%s', tab, tab, '{'); + for bin_idx=1:dft_size + fprintf(fileID,'%ff, ', func_handle(freq_resp(bin_idx, ear_idx, hoa_idx))); + if(mod(bin_idx, 96) == 0) + fprintf(fileID,'\n%s%s', tab, tab); + end + end + fseek(fileID, -2, "cof"); + fprintf(fileID,'%s,\n', '}'); + end + fseek(fileID, -2, "cof"); + fprintf(fileID,'\n%s%s,\n', tab, '}'); + end + fseek(fileID, -2, "cof"); + fprintf(fileID,'\n%s;\n', '}'); +end + + diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/get_allpass_IRs.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/get_allpass_IRs.m new file mode 100644 index 0000000000000000000000000000000000000000..ed4ef76faf21d52a47e055bc9169f758ea812679 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/get_allpass_IRs.m @@ -0,0 +1,74 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function IR = get_allpass_IRs(AllPass, dels) + XSet = poly2XSet(AllPass.proto_poly, (dels(:)'-16)*AllPass.upper_freq/AllPass.proto_bw); + + IR = makeIRs(XSet, AllPass.upper_freq); +end + +function XSet = poly2XSet(p, dels_samples) + XSet = zeros(size(p,1), numel(dels_samples)); + for k = 1:size(p,1) + XSet(k,:) = polyval(p(k,:),dels_samples(:)'/32); + end +end + +function irs = makeIRs(X,bw) + irs = map_poles2irs( map2poles(X,bw) ); +end + +function p = map2poles(X,bw) + p = map_2_s_poles(X) * bw; + for k = 1:size(p(:,:),2) + p(:,k) = bilinear(p(:,k),p(:,k),1,48000,bw); + end +end + +function irs = map_poles2irs(p) + irs = zeros(512,size(p(:,:),2)); + for k = 1:size(irs,2) + [~,A] = zp2tf(p(:,k),p(:,k),1); + irs(:,k) = filter(fliplr(A),A, [1;zeros(511,1)]); + end +end + +function p = map_2_s_poles(X) + Order = size(X,1); + if Order==0 + p=[]; + elseif Order==1 + p=-2*pi*X; + else + ang = atan(X(2,:))/2+pi/4; + p = [-2*pi*X(1,:).*exp(1i*[1;-1]*ang) ; map_2_s_poles(X(3:end,:))]; + end +end \ No newline at end of file diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/hrtf_library_loader.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/hrtf_library_loader.m new file mode 100644 index 0000000000000000000000000000000000000000..c8d41d7e06b244bd7b283ee9203a5557b5742a20 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/hrtf_library_loader.m @@ -0,0 +1,423 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +classdef hrtf_library_loader < handle + % HRTF Library Loader and Interpolator + % + % Typical usage: + % H1 = hrtf_library_loader('CIPIC_137_cleaned', 48000); + % H1.setLen(64); + % IR_L = H1.getHRTF_L([1;1;0]); + % IR_R = H1.getHRTF_R([1;1;0]); + + properties + Len=0; % The currently selected HRTF length + Window=[]; % The window used to set the HRTF length + Lib_Name = []; % The name of the library (as supplied to the class constructor + Lib_SampleRate = []; % The sample rate of the library + SourceRadius = []; % The source distance for HRTFs in this library + PlaybackRadius = []; % The radius for HRTFs during playback + Info = {''}; % A cell array of strings with info about this library + end + properties (Access=protected) + % Define the set of uni-vectors for the HRTF directions in a discrete Library + % If our library is Discrete, we will always specifiy a set of unit-vectors: + Discrete_UnitVectors = []; + % A Discrete Library is generally defined by a set of HRTF Impulse Responses + Discrete_HRTFs = []; + % Define the HRTFs in terms of GroupDelay and Power spectrum. + % Sometimes we will convert the impulse responses into + % GroupDelay/Magnitude format, to allow a better mode of interpolation. + % Sometimes, our library already contains these GD_Mag responses, so we + % don't need to generate them in this class + Discrete_HRTFs_GD_Mag = []; + + % Sometimes we aim to get a smoother group-delay (as a function of + % angle) by using a simplified model. If the following member variable + % is not empty, then we will use this model to compute the group-delay + GD_Model=[]; + + % For the GD_Mag interpolation method, we need to define the FFT length + GD_Mag_FFTLen=[]; + % For the GD_Mag interpolation method, we need to define the freq bands + GD_Mag_Band2FR=[]; + % For the GD_Mag interpolation method, low-pass filter applied to imp-resps + GD_Mag_LoPass=[]; + + % Keep the most recntly computed HRTFs: + % To save us the pain of recalcuating a whole lot of stuff when we + % make consecutive calls the get the Left and Right HRTFs, we store the + % most recent HRTFs, and their associated unit-vectors. + Last_HRTFs=[]; + % Remember the unit vectors for the most recent HRTFs computed + Last_UV=[]; + end + + methods + + function obj = hrtf_library_loader() + end + + function readSOFA(obj, Lib_Name) + + % This looks like a library built from a bunch of discrete + % locations in free field + % Let's figure out the source locations used in the HRTF library: + Pos = ncread(Lib_Name, 'SourcePosition'); + Units = strtrim(strsplit(ncreadatt(Lib_Name, 'SourcePosition', 'Units'), ',')); + + assert( any(strcmpi(Units{1}, {'degree','radian'})), 'Unknown units'); + if strcmpi(Units{1},'degree'), Pos(1,:)=Pos(1,:)*pi/180; end + assert( any(strcmpi(Units{2}, {'degree','radian'})), 'Unknown units'); + if strcmpi(Units{2},'degree'), Pos(2,:)=Pos(2,:)*pi/180; end + assert( any(strcmpi(Units{3}, {'metre','meter','inch'})), 'Unknown units'); + if strcmpi(Units{3},'inch' ), Pos(3,:)=Pos(3,:)*0.0254; end + Pos = Pos(3,:) .* ... + [cos(Pos(2,:)).*[cos(Pos(1,:));sin(Pos(1,:))];sin(Pos(2,:))]; + + Radii = sqrt(sum(Pos.*Pos,1)); + XYZ = make_unit_vectors(Pos); + NumLoc = size(XYZ,2); + + % Now, get the impulse repsonses: + DataType = ncreadatt(Lib_Name, '/', 'DataType'); + Data.IR = permute(ncread(Lib_Name, 'Data.IR'), [3, 2, 1]); + Data.SamplingRate = ncread(Lib_Name, 'Data.SamplingRate'); + Data.SamplingRate_Units = ncreadatt(Lib_Name, 'Data.SamplingRate', 'Units'); + Data.Delay = permute(ncread(Lib_Name, 'Data.Delay'), [2, 1]); + switch lower(DataType) + case 'fir' + assert( size(Data.IR,2)>=2, 'Expecting 2 receivers (ears)'); + if size(Data.IR,2)>2 + Data.IR = Data.IR(:,1:2,:); + Data.Delay = Data.Delay(:,1:2); + end + assert( size(Data.IR,1)==NumLoc, 'IR is incorrect size'); + IRLen = size(Data.IR,3); + assert( all(diff(Data.Delay,1,2)==0), ... + 'Non-zero inter-aural delay offset not (yet) implemented'); + HRTF_L = reshape( Data.IR(:,1,:), NumLoc, IRLen)'; + HRTF_R = reshape( Data.IR(:,2,:), NumLoc, IRLen)'; + Fs = Data.SamplingRate; + assert(strcmp(Data.SamplingRate_Units,'hertz'), 'unknown samplerate units'); + otherwise + error(['unknown GLOBAL_DataType = ', hrtf.GLOBAL_DataType]); + end + + % Normalise for unity gain around 1kHz + FFTLen=1024; + Mid_Bin_1K=round(FFTLen*1000/Fs); + FR_L=fft(HRTF_L,FFTLen); + FR_R=fft(HRTF_R,FFTLen); + MeanG=sqrt(mean(mean(abs([FR_L(Mid_Bin_1K+(-1:1),:),FR_R(Mid_Bin_1K+(-1:1),:)]).^2,1),2)); + HRTF_L = HRTF_L/MeanG; + HRTF_R = HRTF_R/MeanG; + + H = struct('Info',struct()); + H.SourceRadius = mean(Radii); + H.UnitVectors = XYZ; + H.HRTF_L = HRTF_L; + H.HRTF_R = HRTF_R; + + [~,NameRoot,~] = fileparts(Lib_Name); + H.Info.Name = NameRoot; + H.Info.Source = 'SOFA(Description Goes Here)'; + H.Info.SpatialSize = sprintf('%d discrete directions',NumLoc); + H.Info.FilterSize = sprintf('%d-tap FIR',IRLen); + H.Info.Scaling = 'Normalised to unity gain at 1kHz'; + + obj.process_lib(H, Data.SamplingRate); + end + + function IR = XYZ_to_IR( this, XYZ ) + IR = permute(cat(3,this.getHRTF_L(XYZ),this.getHRTF_R(XYZ)),[1,3,2]); + end + + end % methods + + methods (Access=private) + + function process_lib(obj, hrtf_lib, SampleRate) + + MatData = hrtf_lib; + + % Hopefully, this file contains an 'Info' field + if isfield(MatData, 'Info') + obj.Info=MatData.Info; + obj.Lib_Name=obj.Info.Name; + else + obj.Lib_Name=hrtf_lib; + end + + if ~isempty(SampleRate) && isfield(MatData, 'FSample') && SampleRate~=MatData.FSample + error('Sample rate set in Library (%d) does not match requested rate (%d)', ... + MatData.FSample, SampleRate); + end + if isfield(MatData, 'SourceRadius') + obj.SourceRadius = MatData.SourceRadius; + else + fprintf('Warning - no source radius specififed in library\n'); + obj.SourceRadius = 10.0; + end + obj.PlaybackRadius = obj.SourceRadius; + if isfield(MatData, 'FSample') + obj.Lib_SampleRate=MatData.FSample; + elseif ~isempty(SampleRate) + obj.Lib_SampleRate=SampleRate; + else + obj.Lib_SampleRate=48000; % Default, if sample rate not specified anywhere else + end + + obj.Discrete_UnitVectors = MatData.UnitVectors; + if isfield(MatData, 'HRTF_L') + obj.Discrete_HRTFs = cat(3, MatData.HRTF_L, MatData.HRTF_R); + elseif isfield(MatData, 'Band_FR_L') && isfield(MatData, 'GD_Model') + obj.GD_Model = MatData.GD_Model; + obj.buildBand2FR(); + obj.Discrete_HRTFs_GD_Mag = cat(3, ... + [zeros(1,size(MatData.Band_FR_L,2));MatData.Band_FR_L], ... + [zeros(1,size(MatData.Band_FR_L,2));MatData.Band_FR_R]); + else + error('Discrete HRTF library has some data missing'); + end + + obj.buildGDMag(); + obj.Last_UV=[]; + obj.setLen(512); + end + + function setLen(obj,Len) + % SETLEN Set the length of the HRTFs generated by this object + % Example: + % H.setLen(48); + assert(isscalar(Len) && (Len>1) && (Len<4096)); + obj.Len=Len; + obj.Window = sin(min(1,(Len:-1:1)'*4/Len)*pi/2).^2; + obj.Last_UV=[]; + end + + function HRTFs = getHRTF_L(obj,varargin) + % GETHRTF_L Get one or more Left-ear HRTFs from the library + % Given [N] direction-of-arrival vectors, returns an array + % of size [Len]x[N], containing the N left-ear HRTFs. + % Examples: + % HRTFs = H.getHRTF_L(Az,El) % Az and El are both Nx1 or 1xN vectors (in radians) + % HRTFs = H.getHRTF_L( Angles ) % Angles is a 2xN array of Az,El column pairs (in radians) + % HRTFs = H.getHRTF_L(X, Y, Z) % X,Y,Z are all 1xN or Nx1 vectors + % HRTFs = H.getHRTF_L(Vects) % Vects is a 3xN array of X,Y,Z column vectors + UnitVecs = make_unit_vectors(varargin{:}); + if any(size(UnitVecs)~=size(obj.Last_UV)) || ... + any(UnitVecs(:)~=obj.Last_UV(:)) + obj.Interpolate_HRTFs(UnitVecs); + end + HRTFs = obj.Last_HRTFs(:,:,1); + end + + function HRTFs = getHRTF_R(obj,varargin) + % GETHRTF_R Get one or more Right-ear HRTFs from the library + % Given [N] direction-of-arrival vectors, returns an array + % of size [Len]x[N], containing the N right-ear HRTFs. + % Examples: + % HRTFs = H.getHRTF_R(Az,El) % Az and El are both Nx1 or 1xN vectors (in radians) + % HRTFs = H.getHRTF_R( Angles ) % Angles is a 2xN array of Az,El column pairs (in radians) + % HRTFs = H.getHRTF_R(X, Y, Z) % X,Y,Z are all 1xN or Nx1 vectors + % HRTFs = H.getHRTF_R(Vects) % Vects is a 3xN array of X,Y,Z column vectors + UnitVecs = make_unit_vectors(varargin{:}); + if any(size(UnitVecs)~=size(obj.Last_UV)) || ... + any(UnitVecs(:)~=obj.Last_UV(:)) + obj.Interpolate_HRTFs(UnitVecs); + end + HRTFs = obj.Last_HRTFs(:,:,2); + end + + function buildBand2FR(obj) + obj.GD_Mag_FFTLen=2^ceil(log2(obj.Lib_SampleRate)-6.8); + while ~isempty(obj.Discrete_HRTFs) && obj.GD_Mag_FFTLen<2*size(obj.Discrete_HRTFs,1) + obj.GD_Mag_FFTLen = obj.GD_Mag_FFTLen*2; + end + obj.GD_Mag_Band2FR=hrtf_library_loader.MakeBand2FR(obj.GD_Mag_FFTLen,obj.Lib_SampleRate); + + [B,A]=butter(2,0.9); + obj.GD_Mag_LoPass = freqz(B,A,(0:obj.GD_Mag_FFTLen/2)'/obj.GD_Mag_FFTLen*2*pi); + end + + function buildGDMag(obj) + obj.buildBand2FR(); + FR2Band = pinv(obj.GD_Mag_Band2FR); + obj.Discrete_HRTFs_GD_Mag=zeros( ... + size(obj.GD_Mag_Band2FR,2)+1,size(obj.Discrete_HRTFs,2),2); + for k=1:size(obj.Discrete_HRTFs,2) + HRTF_L = obj.Discrete_HRTFs(:,k,1); + HRTF_R = obj.Discrete_HRTFs(:,k,2); + for p=1:2 + % Get mag resp in each band + FR = fft(HRTF_L,obj.GD_Mag_FFTLen); + Mag = FR2Band * (abs(FR(1:end/2+1)).^2); + Mag(1)=abs(FR(1)).^2; % special case for DC + % Now, get the group-delay (excess phase at 1200Hz) + % Let's use mdft for the GD calculation + N = obj.GD_Mag_FFTLen/2; + GD_Bin = 1+floor(1200*2*N/obj.Lib_SampleRate); + FR = m_dft(HRTF_L, N); + Ph = unwrap(angle(FR)); + PhM = -imag(m_hilbert(log(max(1e-4,abs(FR))))); + GD = (PhM(GD_Bin)-Ph(GD_Bin))/pi*N/(GD_Bin-0.5)/obj.Lib_SampleRate; + obj.Discrete_HRTFs_GD_Mag(:,k,p)=[GD;Mag]; + HRTF_L=HRTF_R; + end + obj.Discrete_HRTFs_GD_Mag(1,k,:)=obj.Discrete_HRTFs_GD_Mag(1,k,:)- ... + min(obj.Discrete_HRTFs_GD_Mag(1,k,:)); + end + obj.Last_UV=[]; + end + + function IR=gdMag_to_IR(obj,GDMag) + GD=GDMag(1,:)*obj.Lib_SampleRate + 10; + Mag=GDMag(2:end,:); + if (size(Mag,1)1e-20 + tmpV=tmpV/sqrt(sum(tmpV.^2)); + tmpV=tmpV-v*(tmpV'*v); + IndSubset = IndSubset(tmpV'*obj.Discrete_UnitVectors(:,IndSubset)>0); + end + end + W2=zeros(size(obj.Discrete_UnitVectors,2),1); + W2(GotSet)=lsqnonneg([obj.Discrete_UnitVectors(:,GotSet);0*obj.Discrete_UnitVectors(1,GotSet)+1],[UnitVecs(:,k);1]); + + TempL(:,k)=obj.Discrete_HRTFs_GD_Mag(:,GotSet,1)*W2(GotSet); + TempR(:,k)=obj.Discrete_HRTFs_GD_Mag(:,GotSet,2)*W2(GotSet); + end + end + end % private methods + + methods(Static=true) + + function [Band2FR,FCs]=MakeBand2FR(FFTLen,FSample) + % Compute the standard band filters for freq domain representations + % + % [Band2FR,FCs]=MakeBand2FR(FFTLen,FSample) + % Builds a column vector, FCs, of size NBx1 (where NB equals the + % number of bands) indicating the center-frequency of the + % bands. These center frequencies are spaced at 200Hz intervals at + % low frequencies and 1/12 octave intervals at higher frequencies. + % + % Band2FR is a real matrix of size (FFTLen/2+1)*NB, where each column + % contains the band-pass filter coefficients, and where the following + % identity is true: + % sum(Band2FR,2)==ones(FFTLen/2+1,1) + % + Band2FR=[]; + FCs=[]; + + TransLen=512; + Tmp=cumsum(sinc((-TransLen/2:TransLen/2)*4/TransLen))'; + Trans=1-Tmp(1:end-1)/Tmp(end-1); + + LastLP=0; + LastBin=1; + while 1 + NewBin = max( LastBin+200/FSample*FFTLen, ... + 1+(LastBin-1)*(2^(1/12))); % 200Hz or 1/12 oct steps + if NewBin>=FFTLen/2, break; end + NewLP=interp1( [-1e10;(0.5:TransLen)'/TransLen*4-1.5;1e10] , ... + [1;Trans;0] , ((1:FFTLen/2+1)'-LastBin)/(NewBin-LastBin) ); + FCs = [FCs ; (LastBin-1)*FSample/FFTLen]; + Band2FR = [Band2FR NewLP(:)-LastLP(:)]; + LastLP=NewLP; + LastBin=NewBin; + end + FCs = [FCs ; (LastBin-1)*FSample/FFTLen]; + Band2FR = [Band2FR 1-LastLP(:)]; + end + end % static methods +end diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/hrtf_support_coefs.mat b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/hrtf_support_coefs.mat new file mode 100644 index 0000000000000000000000000000000000000000..a5d6a0ec5fef997a21e039483a557fda2644ce92 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/hrtf_support_coefs.mat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8fdb6bc599e4b8b122c4def021d506ddc9c57b82000608cce742a24b3e368a3 +size 395637 diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_dft.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_dft.m new file mode 100644 index 0000000000000000000000000000000000000000..b4c04c07edff268e185f67ee6d39736a4e66a4b2 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_dft.m @@ -0,0 +1,76 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function Y=m_dft(X,Len,Dim) +% MDFT - Modified transform, for use in convolution +% +% Y=M_DFT(X,Len) +% +% Input vector should be Real, and length should be '2*Len'. Output vector +% will be Complex, and length with be 'Len' +% +% Note that M_DFT, and M_IDFT, use a frequency bin re-ording (not normally +% used in DSP implementations) to keep the frequency bins in monotonic +% frequency order. +% +% See also M_IDFT + +% Sort out which dimension we operate along: +if nargin<3 + Dim=[]; +end +[X,shift_perm,nshifts] = shiftdata(X,Dim); +dimensions = size(X); +X=X(:,:); + +% Figure out what length we use using: +if nargin<2 || isempty(Len) + Len=size(X,1)/2; +end +Len=double(ceil(Len)); + +% If the user-selected length is longer than data, zero-pad it +if size(X,1)<(2*Len) + X(2*Len,1)=0; +end + +% Do the MDFT: +Y= fft((X(1:Len,:) - X(Len+1:2*Len,:)*1i) .* ... + repmat(exp(-(0:Len-1)'*1i*pi/Len/2),1,size(X,2)) ,Len,1); +Y(round(size(Y,1)/2+1):end,:) = conj (Y(round(size(Y,1)/2+1):end,:) ); + +Tmp=[1:(Len+1)/2 ; Len:-1:(Len+1)/2]; +Y=Y(Tmp(1:Len),:); + +% restore the original dimensions +dimensions(1) = size(Y,1); +Y = reshape(Y, [size(Y,1), dimensions(2:end)]); +Y = unshiftdata(Y,shift_perm,nshifts); diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_hilbert.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_hilbert.m new file mode 100644 index 0000000000000000000000000000000000000000..ba4179dd0036eb9bb9d4949292cf68b1b0977813 --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_hilbert.m @@ -0,0 +1,44 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function x = m_hilbert(xr) +% M_HILBERT - compute the hilbert transform assuming the signal is even and +% periodic + +[xr,shift_dim_n] = shiftdim(xr); +dimensions = size(xr); +xr=xr(:,:); + +tmp = hilbert([xr;conj(flipud(xr))]); +x=tmp(1:end/2,:); + +x = reshape(x, [size(x,1), dimensions(2:end)]); +x = shiftdim(x, -shift_dim_n); diff --git a/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_idft.m b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_idft.m new file mode 100644 index 0000000000000000000000000000000000000000..85141c44f297a2fad8fd97a9f1f85b763e53dc3b --- /dev/null +++ b/scripts/binauralRenderer_interface/matlab_hrir_generation_scripts/m_idft.m @@ -0,0 +1,72 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% (C) 2022-2023 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. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function Y=m_idft(X,Len,Dim) +% M_IDFT - Modified transform, for use in convolution +% +% Y=M_IDFT(X,Len) +% +% Input vector should be Complex, and length should be 'Len'. Output vector +% will be Real, and length with be '2*Len' +% +% Note that M_DFT, and M_IDFT, use a frequency bin re-ording (not normally +% used in DSP implementations) to keep the frequency bins in monotonic +% frequency order. +% +% See also M_DFT + +% Sort out which dimension we operate along: +if nargin<3, + Dim=[]; +end; +[X,shift_perm,nshifts] = shiftdata(X,Dim); +dimensions = size(X); +X=X(:,:); + +% Figure out what length we use using: +if nargin<2 || isempty(Len), + Len=size(X,1); +end; +if size(X,1) 10 ) + fprintf(fid_source,'\n'); + fprintf(fid_source,repmat(' ',1,indent*3)); + end + counter=1; + for C = 1:indices(3) + fprintf(fid_source,'%+ff',real(data(A,B,C))); + if C < indices(3) + if mod(counter,10) == 0 + fprintf(fid_source,','); + else + fprintf(fid_source,', '); + end + end + if mod(counter,10) == 0 && counter ~= indices(3) + fprintf(fid_source,'\n'); + fprintf(fid_source,repmat(' ',1,indent*3)); + end + counter = counter+1; + end + if( indices(3) > 10 ) + fprintf(fid_source,'\n'); + fprintf(fid_source,repmat(' ',1,indent*2)); + end + fprintf(fid_source,'}'); + if B < indices(2) + fprintf(fid_source,','); + end + end + fprintf(fid_source,'\n'); + fprintf(fid_source,repmat(' ',1,indent)); + fprintf(fid_source,'}'); + if A < indices(1) + fprintf(fid_source,','); + end +end +fprintf(fid_source,'\n};\n\n'); + +end % function + diff --git a/scripts/binauralRenderer_interface/resolve_build_dep.py b/scripts/binauralRenderer_interface/resolve_build_dep.py index a251e7fe327b7b8366562ae31a627411d1b0be3c..4489770a2ae5cfdc8fe01800787bde3a456ad38e 100644 --- a/scripts/binauralRenderer_interface/resolve_build_dep.py +++ b/scripts/binauralRenderer_interface/resolve_build_dep.py @@ -1,22 +1,26 @@ """ - (C) 2022-2023 Baseline Development Group with portions copyright Dolby International AB, Ericsson AB, + (C) 2022-2023 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 Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation. All Rights Reserved. + 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 Baseline Development Group consisting of Dolby International AB, Ericsson AB, + 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 Corporation, Qualcomm Technologies, Inc., and VoiceAge Corporation retain full ownership - rights in their respective contributions in the software. No license of any kind, including but not - limited to patent license, of any foregoing parties is hereby granted by implication, estoppel or - otherwise. + 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/or fitness for a particular purpose are hereby disclaimed and excluded. + 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 diff --git a/scripts/config/ci_linux.json b/scripts/config/ci_linux.json index 1cb11417522c52ac297ddd41afe57f113efc8beb..f7d6c4ec4b2059561672f53262a3ad49585efb28 100644 --- a/scripts/config/ci_linux.json +++ b/scripts/config/ci_linux.json @@ -20,6 +20,22 @@ "ISM1": "/usr/local/testv/stv1ISM48s.wav", "ISM2": "/usr/local/testv/stv2ISM48s.wav", "ISM3": "/usr/local/testv/stv3ISM48s.wav", - "ISM4": "/usr/local/testv/stv4ISM48s.wav" + "ISM4": "/usr/local/testv/stv4ISM48s.wav", + "OMASA_ISM1_1TC1DIR": "/usr/local/testv/stvOMASA_1ISM_1MASA1TC48c.wav", + "OMASA_ISM1_1TC2DIR": "/usr/local/testv/stvOMASA_1ISM_2MASA1TC48c.wav", + "OMASA_ISM1_2TC1DIR": "/usr/local/testv/stvOMASA_1ISM_1MASA2TC48c.wav", + "OMASA_ISM1_2TC2DIR": "/usr/local/testv/stvOMASA_1ISM_2MASA2TC48c.wav", + "OMASA_ISM2_1TC1DIR": "/usr/local/testv/stvOMASA_2ISM_1MASA1TC48c.wav", + "OMASA_ISM2_1TC2DIR": "/usr/local/testv/stvOMASA_2ISM_2MASA1TC48c.wav", + "OMASA_ISM2_2TC1DIR": "/usr/local/testv/stvOMASA_2ISM_1MASA2TC48c.wav", + "OMASA_ISM2_2TC2DIR": "/usr/local/testv/stvOMASA_2ISM_2MASA2TC48c.wav", + "OMASA_ISM3_1TC1DIR": "/usr/local/testv/stvOMASA_3ISM_1MASA1TC48c.wav", + "OMASA_ISM3_1TC2DIR": "/usr/local/testv/stvOMASA_3ISM_2MASA1TC48c.wav", + "OMASA_ISM3_2TC1DIR": "/usr/local/testv/stvOMASA_3ISM_1MASA2TC48c.wav", + "OMASA_ISM3_2TC2DIR": "/usr/local/testv/stvOMASA_3ISM_2MASA2TC48c.wav", + "OMASA_ISM4_1TC1DIR": "/usr/local/testv/stvOMASA_4ISM_1MASA1TC48c.wav", + "OMASA_ISM4_1TC2DIR": "/usr/local/testv/stvOMASA_4ISM_2MASA1TC48c.wav", + "OMASA_ISM4_2TC1DIR": "/usr/local/testv/stvOMASA_4ISM_1MASA2TC48c.wav", + "OMASA_ISM4_2TC2DIR": "/usr/local/testv/stvOMASA_4ISM_2MASA2TC48c.wav" } } diff --git a/scripts/config/ivas_modes.json b/scripts/config/ivas_modes.json index 97bfb263f80c27dd935d1ce9894378f4dd9357f2..a5d2cd6bdc846d5fc25ee97387c91e45816211dc 100644 --- a/scripts/config/ivas_modes.json +++ b/scripts/config/ivas_modes.json @@ -3802,5 +3802,863 @@ } } } + }, + + "OMASA": { + "OMASA_ISM1_2TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "1", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM1_2TC1DIR", + "table_name": "OMASA ISM1 2TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 2, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "swb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "fb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ] + } + }, + "OMASA_ISM1_2TC_2DIR_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism_masa", + "1", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM1_2TC2DIR", + "table_name": "OMASA ISM1 2TC 2DIR@{table_bitrate} RS {bandwidth}", + "nummetadata": 2, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}.met" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + } + } + }, + "OMASA_ISM1_1TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "1", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM1_1TC1DIR", + "table_name": "OMASA ISM1 1TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 2, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 13200, + 32000, + 80000, + 192000, + 512000 + ], + "swb": [ + 16400, + 48000, + 96000, + 256000 + ], + "fb": [ + 24400, + 64000, + 128000, + 384000 + ] + } + }, + "OMASA_ISM1_1TC_2DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "1", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM1_1TC2DIR", + "table_name": "OMASA ISM1 1TC 2DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 2, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 16400, + 48000, + 96000, + 256000 + ], + "swb": [ + 24400, + 64000, + 128000, + 384000 + ], + "fb": [ + 13200, + 32000, + 80000, + 192000, + 512000 + ] + } + }, + + + "OMASA_ISM2_2TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "2", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM2_2TC1DIR", + "table_name": "OMASA ISM2 2TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 3, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "swb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "fb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ] + } + }, + "OMASA_ISM2_2TC_2DIR_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism_masa", + "2", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM2_2TC2DIR", + "table_name": "OMASA ISM2 2TC 2DIR@{table_bitrate} RS {bandwidth}", + "nummetadata": 3, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}.met" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + } + } + }, + "OMASA_ISM2_1TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "2", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM2_1TC1DIR", + "table_name": "OMASA ISM2 1TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 3, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 80000, + 192000, + 512000 + ], + "swb": [ + 48000, + 96000, + 160000, + 256000 + ], + "fb": [ + 64000, + 128000, + 384000 + ] + } + }, + "OMASA_ISM2_1TC_2DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "2", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM2_1TC2DIR", + "table_name": "OMASA ISM2 1TC 2DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 3, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 16400, + 48000, + 96000, + 160000, + 256000 + ], + "swb": [ + 24400, + 64000, + 128000, + 384000 + ], + "fb": [ + 13200, + 32000, + 80000, + 192000, + 512000 + ] + } + }, + + + "OMASA_ISM3_2TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "3", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM3_2TC1DIR", + "table_name": "OMASA ISM3 2TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 4, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "swb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "fb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ] + } + }, + "OMASA_ISM3_2TC_2DIR_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism_masa", + "3", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM3_2TC2DIR", + "table_name": "OMASA ISM3 2TC 2DIR@{table_bitrate} RS {bandwidth}", + "nummetadata": 4, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}.met" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin" + } + } + }, + "OMASA_ISM3_1TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "3", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM3_1TC1DIR", + "table_name": "OMASA ISM3 1TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 4, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 192000, + 512000 + ], + "swb": [ + 96000, + 160000, + 256000 + ], + "fb": [ + 128000, + 384000 + ] + } + }, + "OMASA_ISM3_1TC_2DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "3", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM3_1TC2DIR", + "table_name": "OMASA ISM3 1TC 2DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 4, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 16400, + 48000, + 96000, + 160000, + 256000 + ], + "swb": [ + 24400, + 64000, + 128000, + 384000 + ], + "fb": [ + 13200, + 32000, + 80000, + 192000, + 512000 + ] + } + }, + + + "OMASA_ISM4_2TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "4", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM4_2TC1DIR", + "table_name": "OMASA ISM4 2TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 5, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}_ISM4.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "swb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ], + "fb": [ + 13200, + 16400, + 24400, + 32000, + 48000, + 64000, + 80000, + 96000, + 128000, + 192000, + 256000, + 384000, + 512000 + ] + } + }, + "OMASA_ISM4_2TC_2DIR_b{bitrate}_{bandwidth}_rs": { + "encmodeoption": [ + "-ism_masa", + "4", + "2" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM4_2TC2DIR", + "table_name": "OMASA ISM4 2TC 2DIR@{table_bitrate} RS {bandwidth}", + "nummetadata": 5, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}_ISM4.csv", + "{item}.met" + ], + "rs": true, + "amr": false, + "mono": false, + "bitrates": { + "wb": { + "all": "{sw_files_path}/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin" + }, + "swb": { + "all": "{sw_files_path}/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin" + }, + "fb": { + "all": "{sw_files_path}/sw_13k2_512k.bin" + } + } + }, + "OMASA_ISM4_1TC_1DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "4", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [], + "EXT": [] + }, + "in_config": "OMASA_ISM4_1TC1DIR", + "table_name": "OMASA ISM4 1TC 1DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 5, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}_ISM4.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 192000, + 512000 + ], + "swb": [ + 160000, + 256000 + ], + "fb": [ + 128000, + 384000 + ] + } + }, + "OMASA_ISM4_1TC_2DIR_b{bitrate}_{bandwidth}_cbr": { + "encmodeoption": [ + "-ism_masa", + "4", + "1" + ], + "encoptions": [ + "-max_band", + "{bandwidth}" + ], + "dec": { + "7_1_4": [], + "HOA3": [], + "mono": [], + "stereo": [] + }, + "in_config": "OMASA_ISM4_1TC2DIR", + "table_name": "OMASA ISM4 1TC 2DIR@{table_bitrate} kbps {bandwidth}", + "nummetadata": 5, + "metadatafilenames": [ + "{item}_ISM1.csv", + "{item}_ISM2.csv", + "{item}_ISM3.csv", + "{item}_ISM4.csv", + "{item}.met" + ], + "rs": false, + "amr": false, + "mono": false, + "bitrates": { + "wb": [ + 16400, + 48000, + 96000, + 256000 + ], + "swb": [ + 24400, + 64000, + 128000, + 384000 + ], + "fb": [ + 13200, + 32000, + 80000, + 192000, + 512000 + ] + } + } } } diff --git a/scripts/config/self_test.prm b/scripts/config/self_test.prm index a4e3fd041f833e25084ed69b4973f0742ed42d72..9aa93b4f46cf5beb30b6869e827a1377f9544ad2 100644 --- a/scripts/config/self_test.prm +++ b/scripts/config/self_test.prm @@ -260,7 +260,7 @@ // 1 ISM with metadata at 13.2 kbps, 48 kHz in, 48 kHz out, DTX on, BINAURAL out, random FEC at 5% ../IVAS_cod -dtx -ism 1 testv/stvISM1.csv 13200 48 testv/stv48n.wav bit -../IVAS_dec -fec 5 BINAURAL 48 bit testv/stv48n.wav_13200_48-48_DTX_FEC5_BINAURAL.tst +../IVAS_dec -fec 5 BINAURAL 48 bit testv/stv48n.wav_1ISM_13200_48-48_DTX_FEC5_BINAURAL.tst // 1 ISM with metadata at 16.4 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM out ../IVAS_cod -ism 1 testv/stvISM1.csv 16400 48 testv/stv1ISM48s.wav bit @@ -268,7 +268,7 @@ // 1 ISM with metadata at 32 kbps, 32 kHz in, 32 kHz out, DTX on, MONO out ../IVAS_cod -dtx -ism 1 testv/stvISM1.csv 32000 32 testv/stv32n.wav bit -../IVAS_dec MONO 32 bit testv/stv32n.wav_32000_32-32_DTX_MONO.tst +../IVAS_dec MONO 32 bit testv/stv32n.wav_1ISM_32000_32-32_DTX_MONO.tst // 1 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, BINAURAL ROOM out, head rotation, random FEC at 5% ../IVAS_cod -ism 1 testv/stvISM1.csv 48000 48 testv/stv1ISM48s.wav bit @@ -284,19 +284,19 @@ // 1 ISM with metadata at 80 kbps, 48 kHz in, 16 kHz out, BINAURAL out (Model from file), head rotation, random FEC at 5% ../IVAS_cod -ism 1 testv/stvISM1.csv 80000 48 testv/stv1ISM48s.wav bit -../IVAS_dec -fec 5 -t testv/headrot_case00_3000_q.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL 16 bit testv/stv2ISM48s.wav_80000_48-16_binaural_file_TDHR_FEC5.tst +../IVAS_dec -fec 5 -t testv/headrot_case00_3000_q.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL 16 bit testv/stv1ISM48s.wav_80000_48-16_binaural_file_TDHR_FEC5.tst // 1 ISM with metadata at 80 kbps, 48 kHz in, 16 kHz out, BINAURAL out (Model from file), head rotation, external orientation, random FEC at 5% ../IVAS_cod -ism 1 testv/stvISM1.csv 80000 48 testv/stv1ISM48s.wav bit -../IVAS_dec -fec 5 -t testv/headrot_case00_3000_q.csv -exof testv/headrot_case00_3000_q_combinedRotationTest.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL 16 bit testv/stv2ISM48s.wav_80000_48-16_binaural_file_TDHR_EXOF_FEC5.tst +../IVAS_dec -fec 5 -t testv/headrot_case00_3000_q.csv -exof testv/headrot_case00_3000_q_combinedRotationTest.csv -hrtf ../scripts/binauralRenderer_interface/binaural_renderers_hrtf_data/ivas_binaural_16kHz.bin BINAURAL 16 bit testv/stv1ISM48s.wav_80000_48-16_binaural_file_TDHR_EXOF_FEC5.tst // 1 ISM with metadata at 96 kbps, 48 kHz in, 16 kHz out, EXT out ../IVAS_cod -ism 1 testv/stvISM1.csv 96000 48 testv/stv1ISM48s.wav bit -../IVAS_dec EXT 16 bit testv/stv2ISM48s.wav_96000_48-16_EXT.tst +../IVAS_dec EXT 16 bit testv/stv1ISM48s.wav_96000_48-16_EXT.tst // 1 ISM with metadata bitrate switching from 13.2 kbps to 128 kbps, 32 kHz in, 32 kHz out, EXT out, DTX on ../IVAS_cod -dtx -ism 1 testv/stvISM1.csv ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 32 testv/stv32c.wav bit -../IVAS_dec EXT 32 bit testv/stv32c.wav_brate_sw_32-32_EXT_dtx.tst +../IVAS_dec EXT 32 bit testv/stv32c.wav_1ISM_brate_sw_32-32_EXT_dtx.tst // 2 ISM with metadata at 16.4 kbps, 48 kHz in, 48 kHz out, STEREO out @@ -309,11 +309,11 @@ // 2 ISM with metadata at 32 kbps, 48 kHz in, 48 kHz out, DTX on, HOA2 out ../IVAS_cod -dtx -ism 2 testv/stvISM1.csv testv/stvISM2.csv 32000 48 testv/stvST48c.wav bit -../IVAS_dec HOA2 48 bit testv/stv2ST48c.wav_32000_48-48_DTX_HOA2.tst +../IVAS_dec HOA2 48 bit testv/stvST48c.wav_2ISM_32000_48-48_DTX_HOA2.tst // 2 ISM with metadata at 32 kbps, 48 kHz in, 48 kHz out, DTX on, EXTERNAL out ../IVAS_cod -dtx -ism 2 testv/stvISM1.csv testv/stvISM2.csv 32000 48 testv/stvST48c.wav bit -../IVAS_dec EXT 48 bit testv/stv2ISM48s.wav_32000_48-48_DTX_external.tst +../IVAS_dec EXT 48 bit testv/stvST48c.wav_2ISM_32000_48-48_DTX_external.tst // 2 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, EXT out, random FEC at 5% ../IVAS_cod -ism 2 testv/stvISM3.csv testv/stvISM4.csv 48000 48 testv/stv2ISM48s.wav bit @@ -333,7 +333,7 @@ // 2 ISM with metadata at 80 kbps, 48 kHz in, 48 kHz out, DTX on, stereo out ../IVAS_cod -dtx -ism 2 testv/stvISM1.csv testv/stvISM2.csv 80000 48 testv/stvST48c.wav bit -../IVAS_dec STEREO 48 bit testv/stv2ST48c.wav_80000_48-48_DTX_STEREO.tst +../IVAS_dec STEREO 48 bit testv/stvST48c.wav_2ISM_80000_48-48_DTX_STEREO.tst // 2 ISM with metadata at 128 kbps, 48 kHz in, 32 kHz out, BINAURAL out (Model from file), head rotation ../IVAS_cod -ism 2 testv/stvISM1.csv testv/stvISM2.csv 128000 48 testv/stv2ISM48s.wav bit @@ -362,15 +362,15 @@ // 3 ISM with metadata at 48 kbps, 48 kHz in, 48 kHz out, EXT out ../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 48000 48 testv/stv3ISM48s.wav bit -../IVAS_dec MONO 48 bit testv/stv43ISM48s_48000_48-48_MONO.tst +../IVAS_dec MONO 48 bit testv/stv3ISM48s.48000_48-48_MONO.tst // 3 ISM with metadata at 64 kbps, 48 kHz in, 48 kHz out, EXT out ../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 64000 48 testv/stv3ISM48s.wav bit -../IVAS_dec EXT 48 bit testv/stv43ISM48s_64000_48-48_EXT.tst +../IVAS_dec EXT 48 bit testv/stv3ISM48s.64000_48-48_EXT.tst // 3 ISM with metadata at 96 kbps, 48 kHz in, 48 kHz out, EXT out ../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stv3ISM48s.wav bit -../IVAS_dec EXT 48 bit testv/stv43ISM48s_96000_48-48_EXT.tst +../IVAS_dec EXT 48 bit testv/stv3ISM48s.96000_48-48_EXT.tst // 3 ISM with metadata at 128 kbps, 48 kHz in, 32 kHz out, HOA3 out, random FEC at 5% ../IVAS_cod -ism 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stv3ISM48s.wav bit @@ -479,7 +479,7 @@ // 4 ISM with extended metadata at 256 kbps, 48 kHz in, 48 kHz out, BINAURAL out, head rotation, directivity configuration, random FEC at 5% ../IVAS_cod -ism +4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit -../IVAS_dec -fec 5 -render_config testv/config_directivity.cfg -t testv/headrot_case04_3000_q.csv BINAURAL 48 bit testv/stv+4ISM48s.wav_256000_48-48_binaural_file_TDHR_DirConfig_FEC5.tst +../IVAS_dec -fec 5 -render_config testv/config_directivity_txt.cfg -t testv/headrot_case04_3000_q.csv BINAURAL 48 bit testv/stv+4ISM48s.wav_256000_48-48_binaural_file_TDHR_DirConfig_FEC5.tst // 4 ISM with extended metadata at 256 kbps, 48 kHz in, 48 kHz out, BINAURAL out, head rotation, external orientation, directivity configuration, random FEC at 5% ../IVAS_cod -ism +4 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stv4ISM48s.wav bit @@ -754,6 +754,22 @@ ../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit ../IVAS_dec HOA3 48 bit testv/stv3OA48c.wav_sw_48-48_HOA3.tst +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec MONO 48 bit testv/stv3OA48c.wav_sw_48-48_MONO.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec STEREO 48 bit testv/stv3OA48c.wav_sw_48-48_STEREO.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv3OA48c.wav_sw_48-48_BINAURAL.tst + +// SBA 3OA bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -sba 3 ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv3OA48c.wav bit +../IVAS_dec FOA 48 bit testv/stv3OA48c.wav_sw_48-48_FOA.tst + // SBA planar 3OA bitrate switching from 24.4 kbps to 256 kbps, 48kHz in, 48kHz out, 7_1_4 out ../IVAS_cod -sba -3 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv3OA48c.wav bit ../IVAS_dec 7_1_4 48 bit testv/stv3OA48c.wav_sw_48-48_7_1_4.tst @@ -928,10 +944,43 @@ ../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit ../IVAS_dec 5_1 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_5_1.tst +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec STEREO 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_STEREO.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_BINAURAL.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +../IVAS_dec FOA 48 bit testv/stv1MASA1TC48n.wav_sw_48-48_FOA.tst + // MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out ../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit ../IVAS_dec BINAURAL 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_BINAURAL.tst +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec MONO 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_MONO.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec 7_1 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_7_1.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +../IVAS_dec MONO 48 bit testv/stv1MASA2TC48n.wav_sw_48-48_MONO.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec 7_1 48 bit testv/stv2MASA2TC48c.wav_sw_48-48_7_1.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv2MASA2TC48c.wav_sw_48-48_BINAURAL.tst + + // Multi-channel 5_1 at 13.2 kbps, 48kHz in, 48kHz out @@ -1118,6 +1167,22 @@ ../IVAS_cod -mc 7_1_4 512000 48 testv/stv714MC48c.wav bit ../IVAS_dec -render_config testv/rend_config_renderer.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv714MC48c.wav_MC714_512000_48-48_MC_Config_renderer.tst +// Multi-channel 7_1_4 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM out Config early reflections +../IVAS_cod -mc 7_1_4 512000 48 testv/stv714MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_ER_v1.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv714MC48c.wav_MC714_512000_48-48_ER_v1.tst + +// Multi-channel 7_1_4 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM out Config early reflections, listener origin +../IVAS_cod -mc 7_1_4 512000 48 testv/stv714MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_ER_v2.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv714MC48c.wav_MC714_512000_48-48_MC_ER_v2.tst + +// Multi-channel 7_1_4 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM out Config early reflections, low complexity, listener origin +../IVAS_cod -mc 7_1_4 512000 48 testv/stv714MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_ER_v3.cfg BINAURAL_ROOM_REVERB 48 bit testv/stv714MC48c.wav_MC714_512000_48-48_MC_ER_v3.tst + +// Multi-channel 5_1 at 512 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM out Config early reflections, head rotation +../IVAS_cod -mc 5_1 512000 48 testv/stv51MC48c.wav bit +../IVAS_dec -render_config testv/rend_config_ER_v1.cfg -t testv/headrot_case00_3000_q.csv BINAURAL_ROOM_REVERB 48 bit testv/stv51MC48c.wav_MC51_512000_48-48_MC_ER_v1_hrot.tst + // Multi-channel 5_1 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, 7_1_4 out ../IVAS_cod -mc 5_1 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv51MC48c.wav bit ../IVAS_dec 7_1_4 48 bit testv/stv51MC48c.wav_sw_48-48_7_1_4.tst @@ -1138,6 +1203,10 @@ ../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_24k4_256k.bin 48 testv/stv714MC48c.wav bit ../IVAS_dec -FEC 5 STEREO 32 bit testv/stv714MC48c.wav_sw_48-32_stereo.tst +// Multi-channel 7_1_4 bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -mc 7_1_4 ../scripts/switchPaths/sw_mctech_5fr.bin 48 testv/stv714MC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stv51MC48c.wav_sw_48-48_BINAURAL.tst + // Multi-channel 5_1_4 at 512 kbps, 48kHz in, 16kHz out, BINAURAL_ROOM out (Model from file) ../IVAS_cod -mc 5_1_4 512000 48 testv/stv514MC48c.wav bit @@ -1187,8 +1256,259 @@ networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 ../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1_4 48 netsimoutput testv/stv51MC48c.wav_MC51_384000_48-48_7_1_4_JBM5.tst +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 32kHz out, 5_1 out, JBM Prof 5 +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP 5_1 32 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-32_5_1_JBM5.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, STEREO out, JBM Prof 5 +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_STEREO_JBM5.tst + +// MASA 1dir 1TC bitrate switching from 13.2 kbps to 128 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5 +../IVAS_cod -masa 1 testv/stv1MASA1TC48n.met ../scripts/switchPaths/sw_13k2_to_128k_10fr.bin 48 testv/stv1MASA1TC48n.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stv1MASA1TC48n.wav_sw_48-48_FOA_JBM5.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out, JBM Prof 5 +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-16_BINAURAL_JBM5.tst + +// MASA 1dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 32kHz out, MONO out, JBM Prof 5 +../IVAS_cod -masa 2 testv/stv1MASA2TC48n.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv1MASA2TC48n.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP MONO 32 netsimoutput testv/stv1MASA2TC48n.wav_sw_48-32_MONO_JBM5.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 16kHz out, BINAURAL out, JBM Prof 5 +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 16 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-16_BINAURAL_JBM5.tst + +// MASA 2dir 2TC bitrate switching from 13.2 kbps to 512 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5 +../IVAS_cod -masa 2 testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stv2MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stv2MASA2TC48c.wav_sw_48-48_EXT_JBM5.tst + +// OMASA 2Dir2TC 1ISM at bitrate switching techs 13.2 to 512 kbps start 24.4 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_IR out, JBM Prof 5 +../IVAS_cod -ism_masa 1 2 testv/stvISM1.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_1ism.bin 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL_ROOM_IR 48 netsimoutput testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_ROOM_IR_sw_48-48_JBM5.tst + +// OMASA 2Dir2TC 2ISM at bitrate switching techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 48kHz out, 7.1 out, JBM Prof 5 +../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv NULL testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_2ism.bin 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP 7_1 48 netsimoutput testv/stvOMASA_2ISM_2MASA2TC48c.wav_7_1_sw_48-48_JBM5.tst + +// OMASA 2Dir2TC 3ISM at bitrate switching techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out, JBM Prof 5 +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP MONO 48 netsimoutput testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48_JBM5.tst + +// OMASA 2Dir1TC 3ISM at bitrate switching techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out, JBM Prof 5 +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP STEREO 32 netsimoutput testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32_JBM5.tst + +// OMASA 1Dir2TC 3ISM at bitrate switching techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.2 out, JBM Prof 5 +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin 32 testv/stvOMASA_3ISM_1MASA2TC32c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP 5_1_2 48 netsimoutput testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_2_sw_32-48_JBM5.tst + +// OMASA 1Dir1TC 4ISM at bitrate switching techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out, JBM Prof 5 +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP BINAURAL 48 netsimoutput testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48_JBM5.tst + +// OMASA 1Dir2TC 4ISM at bitrate switching techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, FOA out, JBM Prof 5 +../IVAS_cod -ism_masa 4 2 NULL testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP FOA 48 netsimoutput testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_sw_48-48_JBM5.tst + +// OMASA 2Dir2TC 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out, JBM Prof 5 +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv NULL testv/stvISM4.csv testv/stv2MASA2TC48c.met 256000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +networkSimulator_g192 ../scripts/dly_error_profiles/dly_error_profile_5.dat bit netsimoutput tracefile_sim 2 0 +../IVAS_dec -Tracefile tracefile_dec -VOIP EXT 48 netsimoutput testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_256000_48-48_JBM5.tst + // NON DIEGETiC PAN at 60 kbps, 48kHz in, 48kHz out, STEREO out ../IVAS_cod 64000 48 testv/stv48c.wav bit ../IVAS_dec -non_diegetic_pan -0.5 48 bit testv/stv48c.pcm_MONO_64000_48-48_STEREO_NON-DIEGETIC-PAN_-0.5.tst + + + +// OMASA 2Dir2TC 1ISM at 13.2 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_masa 1 2 NULL testv/stv2MASA2TC48c.met 13200 48 testv/stvOMASA_1ISM_2MASA2TC48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOMASA_1ISM_2MASA2TC48c.wav_BINAURAL_13200_48-48.tst + +// OMASA 1Dir2TC 1ISM at 128 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_masa 1 2 testv/stvISM1.csv testv/stv1MASA2TC48c.met 128000 48 testv/stvOMASA_1ISM_1MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOMASA_1ISM_1MASA2TC48c.wav_EXT_128000_48-48.tst + +// OMASA 2Dir1TC 1ISM at 512 kbps, 32kHz in, 48kHz out, 7.1.4 out, FEC at 5% +../IVAS_cod -ism_masa 1 1 testv/stvISM1.csv testv/stv2MASA1TC48c.met 512000 32 testv/stvOMASA_1ISM_2MASA1TC32c.wav bit +../IVAS_dec -fec 5 7_1_4 48 bit testv/stvOMASA_1ISM_2MASA1TC32c.wav_7_1_4_512000_32-48.tst + + +// OMASA 1Dir1TC 2ISM at 16.4 kbps, 16kHz in, 48kHz out, 5.1 out +../IVAS_cod -ism_masa 2 1 testv/stvISM1.csv testv/stvISM2.csv testv/stv1MASA1TC48c.met 16400 16 testv/stvOMASA_2ISM_1MASA1TC16c.wav bit +../IVAS_dec 5_1 48 bit testv/stvOMASA_2ISM_1MASA1TC16c.wav_5_1_16400_16-48.tst + +// OMASA 2Dir2TC 2ISM at 32 kbps, 48kHz in, 48kHz out, STEREO out, FEC at 5% +../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv testv/stvISM2.csv testv/stv2MASA2TC48c.met 32000 48 testv/stvOMASA_2ISM_2MASA2TC48c.wav bit +../IVAS_dec -fec 5 STEREO 48 bit testv/stvOMASA_2ISM_2MASA2TC48c.wav_STEREO_32000_48-48.tst + +// OMASA 1Dir2TC 2ISM at 256 kbps, 48kHz in, 32kHz out, BINAURAL_ROOM_IR out +../IVAS_cod -ism_masa 2 2 testv/stvISM1.csv NULL testv/stv1MASA2TC48c.met 256000 48 testv/stvOMASA_2ISM_1MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_IR 32 bit testv/stvOMASA_2ISM_1MASA2TC48c.wav_BINAURAL_ROOM_IR_256000_48-32.tst + + +// OMASA 2Dir1TC 3ISM at 24.4 kbps, 48kHz in, 16kHz out, FOA out, FEC at 10% +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met 24400 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +../IVAS_dec -fec 10 FOA 16 bit testv/stvOMASA_3ISM_2MASA1TC48c.wav_FOA_24400_48-16.tst + +// OMASA 1Dir2TC 3ISM at 32 kbps, 48kHz in, 16kHz out, STEREO out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met 32000 48 testv/stvOMASA_3ISM_1MASA2TC48c.wav bit +../IVAS_dec STEREO 16 bit testv/stvOMASA_3ISM_1MASA2TC48c.wav_STEREO_32000_48-16.tst + +// OMASA 2Dir2TC 3ISM at 32 kbps, 48kHz in, 48kHz out, 5.1.2 out +../IVAS_cod -ism_masa 3 2 NULL NULL NULL testv/stv2MASA2TC48c.met 32000 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +../IVAS_dec 5_1_2 48 bit testv/stvOMASA_3ISM_2MASA2TC48c.wav_5_1_2_32000_48-48.tst + +// OMASA 2Dir2TC 3ISM at 48 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met 48000 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_48000_48-48.tst + +// OMASA 1Dir1TC 3ISM at 64 kbps, 32kHz in, 32kHz out, BINAURAL out +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA1TC48c.met 64000 32 testv/stvOMASA_3ISM_1MASA1TC32c.wav bit +../IVAS_dec BINAURAL 32 bit testv/stvOMASA_3ISM_1MASA1TC32c.wav_BINAURAL_64000_32-32.tst + +// OMASA 2Dir2TC 3ISM at 80 kbps, 32kHz in, 16kHz out, 5.1.4 out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met 80000 32 testv/stvOMASA_3ISM_2MASA2TC32c.wav bit +../IVAS_dec 5_1_4 16 bit testv/stvOMASA_3ISM_2MASA2TC32c.wav_5_1_4_80000_32-16.tst + +// OMASA 2Dir1TC 3ISM at 96 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met 96000 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_3ISM_2MASA1TC48c.wav_MONO_96000_48-48.tst + +// OMASA 1Dir2TC 3ISM at 160 kbps, 16kHz in, 32kHz out, HOA3 out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met 160000 16 testv/stvOMASA_3ISM_1MASA2TC16c.wav bit +../IVAS_dec HOA3 32 bit testv/stvOMASA_3ISM_1MASA2TC16c.wav_HOA3_160000_16-32.tst + + +// OMASA 2Dir2TC 4ISM at 13.2 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 13200 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_MONO_13200_48-48.tst + +// OMASA 2Dir1TC 4ISM at 24.4 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA1TC48c.met 24400 48 testv/stvOMASA_4ISM_2MASA1TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOMASA_4ISM_2MASA1TC48c.wav_STEREO_24400_48-48.tst + +// OMASA 1Dir2TC 4ISM at 32 kbps, 48kHz in, 48kHz out, FOA out, FEC at 5% +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met 32000 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +../IVAS_dec -fec 5 FOA 48 bit testv/stvOMASA_4ISM_1MASA2TC48c.wav_FOA_32000_48-48.tst + +// OMASA 1Dir1TC 4ISM at 48 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met 48000 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_ROOM_REVERB_48000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 64 kbps, 48kHz in, 48kHz out, HOA2 out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv NULL NULL testv/stvISM4.csv testv/stv2MASA2TC48c.met 64000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec HOA2 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_HOA2_64000_48-48.tst + +// OMASA 1Dir2TC 4ISM at 80 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met 80000 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_4ISM_1MASA2TC48c.wav_MONO_80000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 192 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 192000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_STEREO_192000_48-48.tst + +// OMASA 2Dir2TC 4ISM at 384 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met 384000 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_EXT_384000_48-48.tst + + + +// OMASA 2Dir2TC 3ISM at bitrate switching techs 13.2 to 512 kbps start 160 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_160k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA2TC48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOMASA_3ISM_2MASA2TC48c.wav_MONO_sw_48-48.tst + +// OMASA 2Dir1TC 3ISM at bitrate switching techs 13.2 to 512 kbps start 48 kbps, 48kHz in, 32kHz out, STEREO out, FEC at 10% +../IVAS_cod -ism_masa 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv2MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_48k_omasatechs_3ism.bin 48 testv/stvOMASA_3ISM_2MASA1TC48c.wav bit +../IVAS_dec -fec 10 STEREO 32 bit testv/stvOMASA_3ISM_2MASA1TC48c.wav_STEREO_sw_48-32.tst + +// OMASA 1Dir2TC 3ISM at bitrate switching techs 13.2 to 512 kbps start 24.4 kbps, 32kHz in, 48kHz out, 5.1.4 out +../IVAS_cod -ism_masa 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_24k4_omasatechs_3ism.bin 32 testv/stvOMASA_3ISM_1MASA2TC32c.wav bit +../IVAS_dec 5_1_4 48 bit testv/stvOMASA_3ISM_1MASA2TC32c.wav_5_1_4_sw_32-48.tst + +// OMASA 1Dir1TC 4ISM at bitrate switching techs 13.2 to 512 kbps start 32 kbps, 48kHz in, 48kHz out, BINAURAL out, FEC at 5% +../IVAS_cod -ism_masa 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA1TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_32k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA1TC48c.wav bit +../IVAS_dec -fec 5 BINAURAL 48 bit testv/stvOMASA_4ISM_1MASA1TC48c.wav_BINAURAL_sw_48-48.tst + +// OMASA 1Dir2TC 4ISM at bitrate switching techs 13.2 to 512 kbps start 80 kbps, 48kHz in, 48kHz out, HOA3 out +../IVAS_cod -ism_masa 4 2 NULL testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv1MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_80k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_1MASA2TC48c.wav bit +../IVAS_dec HOA3 48 bit testv/stvOMASA_4ISM_1MASA2TC48c.wav_HOA3_sw_48-48.tst + +// OMASA 2Dir2TC 4ISM at bitrate switching techs 13.2 to 512 kbps start 384 kbps, 48kHz in, 48kHz out, BINAURAL_ROOM_REVERB out +../IVAS_cod -ism_masa 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv testv/stv2MASA2TC48c.met ../scripts/switchPaths/sw_13k2_512k_2fr_start_384k_omasatechs_4ism.bin 48 testv/stvOMASA_4ISM_2MASA2TC48c.wav bit +../IVAS_dec BINAURAL_ROOM_REVERB 48 bit testv/stvOMASA_4ISM_2MASA2TC48c.wav_BINAURAL_ROOM_REVERB_sw_48-48.tst + + +// OSBA FOA 1ISM at 32 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 1 1 testv/stvISM1.csv 32000 48 testv/stvOSBA_1ISM_FOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_1ISM_FOA48c.wav_BINAURAL_32000_48-48.tst + +// OSBA FOA 2ISM at 64 kbps, 48kHz in, 48kHz out, HOA3 out +../IVAS_cod -ism_sba 2 1 testv/stvISM1.csv testv/stvISM2.csv 64000 48 testv/stvOSBA_2ISM_FOA48c.wav bit +../IVAS_dec HOA3 48 bit testv/stvOSBA_2ISM_FOA48c.wav_HOA3_64000_48-48.tst + +// OSBA FOA 3ISM at 128 kbps, 48kHz in, 48kHz out, 7_1_4 out +../IVAS_cod -ism_sba 3 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_FOA48c.wav bit +../IVAS_dec 7_1_4 48 bit testv/stvOSBA_3ISM_FOA48c.wav_7_1_4_128000_48-48.tst + +// OSBA FOA 4ISM at 256 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 256000 48 testv/stvOSBA_4ISM_FOA48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOSBA_4ISM_FOA48c.wav_EXT_256000_48-48.tst + +// OSBA FOA 4ISM at 512 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 4 1 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 512000 48 testv/stvOSBA_4ISM_FOA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_FOA48c.wav_BINAURAL_512000_48-48.tst + +// OSBA 2OA 1ISM at 24.4 kbps, 48kHz in, 48kHz out, FOA out +../IVAS_cod -ism_sba 1 2 testv/stvISM1.csv 24400 48 testv/stvOSBA_1ISM_2OA48c.wav bit +../IVAS_dec FOA 48 bit testv/stvOSBA_1ISM_2OA48c.wav_FOA_24400_48-48.tst + +// OSBA 2OA 2ISM at 48 kbps, 48kHz in, 48kHz out, MONO out +../IVAS_cod -ism_sba 2 2 testv/stvISM1.csv testv/stvISM2.csv 48000 48 testv/stvOSBA_2ISM_2OA48c.wav bit +../IVAS_dec MONO 48 bit testv/stvOSBA_2ISM_2OA48c.wav_MONO_48000_48-48.tst + +// OSBA 2OA 3ISM at 96 kbps, 48kHz in, 48kHz out, STEREO out +../IVAS_cod -ism_sba 3 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 96000 48 testv/stvOSBA_3ISM_2OA48c.wav bit +../IVAS_dec STEREO 48 bit testv/stvOSBA_3ISM_2OA48c.wav_STEREO_96000_48-48.tst + +// OSBA 2OA 4ISM at 384 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 4 2 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 384000 48 testv/stvOSBA_4ISM_2OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_2OA48c.wav_BINAURAL_384000_48-48.tst + +// OSBA 3OA 1ISM at 512 kbps, 48kHz in, 48kHz out, EXT out +../IVAS_cod -ism_sba 1 3 testv/stvISM1.csv 512000 48 testv/stvOSBA_1ISM_3OA48c.wav bit +../IVAS_dec EXT 48 bit testv/stvOSBA_1ISM_3OA48c.wav_EXT_512000_48-48.tst + +// OSBA 3OA 2ISM at 256 kbps, 48kHz in, 48kHz out, 7_1 out +../IVAS_cod -ism_sba 2 3 testv/stvISM1.csv testv/stvISM2.csv 256000 48 testv/stvOSBA_2ISM_3OA48c.wav bit +../IVAS_dec 7_1 48 bit testv/stvOSBA_2ISM_3OA48c.wav_7_1_256000_48-48.tst + +// OSBA 3OA 3ISM at 128 kbps, 48kHz in, 48kHz out, BINAURAL out +../IVAS_cod -ism_sba 3 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv 128000 48 testv/stvOSBA_3ISM_3OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_3ISM_3OA48c.wav_BINAURAL_128000_48-48.tst + +// OSBA 3OA 4ISM at 16.4 kbps, 48kHz in, 48kHz out, 5_1 out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv 16400 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec 5_1 48 bit testv/stvOSBA_4ISM_3OA48c.wav_5_1_16400_48-48.tst + +// OSBA 3OA 4ISM bitrate switching 13.2 to 512, 48kHz in, 48kHz out, BIN out +../IVAS_cod -ism_sba 4 3 testv/stvISM1.csv testv/stvISM2.csv testv/stvISM3.csv testv/stvISM4.csv ../scripts/switchPaths/sw_13k2_512k.bin 48 testv/stvOSBA_4ISM_3OA48c.wav bit +../IVAS_dec BINAURAL 48 bit testv/stvOSBA_4ISM_3OA48c.wav_BINAURAL_sw_13k2_512k_48-48.tst diff --git a/scripts/cppp/.gitignore b/scripts/cppp/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..d9e7f83c69df888bde70e174e43f27bbe74d7f63 --- /dev/null +++ b/scripts/cppp/.gitignore @@ -0,0 +1,2 @@ +*.pm +*.pl \ No newline at end of file diff --git a/scripts/find_unused_symbols.sh b/scripts/find_unused_symbols.sh index 17f9e6d5da9ba79820f70536e338688dcb113404..1a6d93745ff51cdb8a382f8b6f82fbb4df7a71db 100755 --- a/scripts/find_unused_symbols.sh +++ b/scripts/find_unused_symbols.sh @@ -31,51 +31,76 @@ # options=$1 +WORKDIR=.. OBJDIR=obj -EXECUTABLES="../IVAS_cod ../IVAS_dec ../IVAS_rend" evaluateTables=1 evaluateFunctions=1 compile=1 help=0 -if [ $# -gt 0 ]; then - evaluateTables=0 - evaluateFunctions=0 - compile=1 -fi - -while getopts "ftnh" OPT; do +while getopts ":ftnhd:" OPT; do case "$OPT" in - f) evaluateFunctions=1;; - t) evaluateTables=1;; - n) compile=0;; - h) help=1;; + d) + WORKDIR=$(realpath -s "${OPTARG}") + ;; + f) + evaluateFunctions=1 + evaluateTables=0 + ;; + t) + evaluateFunctions=0 + evaluateTables=1 + ;; + n) + compile=0 + ;; + h) + help=1 + ;; *) # getopts produces error - exit 1;; + exit 1 + ;; esac done if [ $help -ne 0 ]; then echo "Usage: $0 [-ftn]" echo " where" + echo " -d : set C-code dir (default: ${WORKDIR})" echo " -f: functions only" echo " -t: tables only" echo " -n: no compilation" exit 0 fi +# print C-code directory +echo "C-code directory set to ${WORKDIR}" +WORKDIR_EXE=${WORKDIR//" "/"\ "} +EXECUTABLES="${WORKDIR_EXE}/IVAS_cod ${WORKDIR_EXE}/IVAS_dec ${WORKDIR_EXE}/IVAS_rend" + # build if [ $compile -ne 0 ]; then - make -C .. DEBUG=0 STRIP=1 clean all 1>&2 + make -C "${WORKDIR}" clean && make -j -C "${WORKDIR}" DEBUG=0 STRIP=1 all 1>&2 + echo "" fi +# check, whether executables exist +for i in $EXECUTABLES +do + if [ ! -f "$i" ]; then + echo "Executable $i not found. Aborting" + echo "" + exit + fi +done + if [ $evaluateFunctions != 0 ]; then # delete text files rm -f functions_obj.txt functions_exe.txt 1>&2 # find all functions in object files - nm ../${OBJDIR}/*.o | grep "^[0-9a-f]* T " | sed 's/^[0-9a-f]* T //' | sort -u > functions_obj.txt + nm "${WORKDIR}/${OBJDIR}/"*.o | grep "^[0-9a-f]* T " | sed 's/^[0-9a-f]* T //' | sort -u > functions_obj.txt # find all symbols in final executables nm ${EXECUTABLES} | grep "^[0-9a-f]* T " | sed 's/^[0-9a-f]* T //' | sort -u > functions_exe.txt @@ -91,7 +116,7 @@ if [ $evaluateTables -ne 0 ]; then rm -f tables_obj.txt tables_exe.txt 1>&2 # find all functions in object files - nm ../${OBJDIR}/*.o | grep "^[0-9a-f]* [RD] " | sed 's/^[0-9a-f]* [RD] //' | sort -u > tables_obj.txt + nm "${WORKDIR}/${OBJDIR}/"*.o | grep "^[0-9a-f]* [RD] " | sed 's/^[0-9a-f]* [RD] //' | sort -u > tables_obj.txt # find all symbols in final executables nm ${EXECUTABLES} | grep "^[0-9a-f]* [RD] " | sed 's/^[0-9a-f]* [RD] //' | sort -u > tables_exe.txt diff --git a/scripts/lc3plus_lib_setup/get_lc3plus.sh b/scripts/lc3plus_lib_setup/get_lc3plus.sh new file mode 100755 index 0000000000000000000000000000000000000000..01ad362b717228ef82a3410a99b37b473045c242 --- /dev/null +++ b/scripts/lc3plus_lib_setup/get_lc3plus.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +# This script shall only be used by automated continuous integration systems + +scriptdir=$(dirname "$0") +pushd "$scriptdir" || exit 1 + +# Download and unzip LC3plus code +rm -rf ETSI_Release +curl -o ./lc3plus_sources.zip https://www.etsi.org/deliver/etsi_ts/103600_103699/103634/01.04.01_60/ts_103634v010401p0.zip +unzip lc3plus_sources.zip -d . + +# Modify LC3plus code to be compatible with IVAS tools (e.g. WMC tool) +git apply --ignore-whitespace lc3plus.patch +rm ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft.c +rm ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/codec_exe.c + +# Remove unneeded files +rm ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/makefile +rm ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tinywavein_c.h +rm ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tinywaveout_c.h +rm ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution0.c +rm -r ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/msvc + +# Limit file permissions +find ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point -type f -exec chmod -x {} \; + +# Move to output dir +rm -rf ../../lc3plus +mkdir ../../lc3plus +mv ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/* ../../lc3plus + +# Clean up +rm -rf lc3plus_sources.zip ETSI_Release + +popd || exit diff --git a/scripts/lc3plus_lib_setup/lc3plus.patch b/scripts/lc3plus_lib_setup/lc3plus.patch new file mode 100644 index 0000000000000000000000000000000000000000..14b81a39727b034b4d1de3b01a90879baeb34947 --- /dev/null +++ b/scripts/lc3plus_lib_setup/lc3plus.patch @@ -0,0 +1,1474 @@ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/adjust_global_gain.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/adjust_global_gain.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/adjust_global_gain.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/adjust_global_gain.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processAdjustGlobalGain_fl(LC3_INT* gg_idx, LC3_INT gg_idx_min, LC3_INT gg_idx_off, LC3_FLOAT* gain, LC3_INT target, LC3_INT nBits, LC3_INT* gainChange, LC3_INT fs_idx +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/al_fec_fl.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/al_fec_fl.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/al_fec_fl.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/al_fec_fl.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "stdint.h" + #include + #include +@@ -1010,8 +1011,8 @@ + LC3_UINT8 blacklist[FEC_N_MODES]; + LC3_INT32 rop; + +- rop = 0; + void (*syndr_calc[3])(LC3_UINT8 *, LC3_UINT8 *, LC3_INT32); ++ rop = 0; + + /* initialization */ + blacklist[0] = 0; +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/apply_global_gain.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/apply_global_gain.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/apply_global_gain.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/apply_global_gain.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processApplyGlobalGain_fl(LC3_FLOAT x[], LC3_INT xLen, LC3_INT global_gain_idx, LC3_INT global_gain_off) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ari_codec.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ari_codec.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ari_codec.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ari_codec.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static void ac_shift_fl(Encoder_State_fl* st); +@@ -620,7 +621,7 @@ + + if (st.pc_c_bp_side != 0) + { +- nbits_side = total_bits - 8 * (st.pc_b_left) + 8 * (st.pc_bytes - bp_side) - (8 - LC3_LOG2(mask_side)); ++ nbits_side = total_bits - 8 * (st.pc_b_left) + 8 * (st.pc_bytes - bp_side) - (8 - LC3_LOGTWO(mask_side)); + } + } + +@@ -891,7 +892,7 @@ + { + LC3_INT bits = 0, mask = 0, val = 0, over1 = 0, high = 0, over2 = 0, c = 0, b = 0; + +- bits = 24 - floor(LC3_LOG2(st->range)); ++ bits = 24 - floor(LC3_LOGTWO(st->range)); + mask = ((LC3_INT)pow(2, 24) - 1) >> bits; + val = st->low + mask; + over1 = val >> 24; +@@ -1078,8 +1079,8 @@ + } + + /* Residual bits */ +- nbits_side = total_bits - (8 * (*(st.bp_side) + 1) + 8 - LC3_LOG2(*(st.mask_side))); +- nbits_ari = (st.bp + 1) * 8 + 25 - floor(LC3_LOG2(st.range)); ++ nbits_side = total_bits - (8 * (*(st.bp_side) + 1) + 8 - LC3_LOGTWO(*(st.mask_side))); ++ nbits_ari = (st.bp + 1) * 8 + 25 - floor(LC3_LOGTWO(st.range)); + + if (st.cache >= 0) { + nbits_ari = nbits_ari + 8; +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/attack_detector.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/attack_detector.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/attack_detector.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/attack_detector.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void attack_detector_fl(LC3_FLOAT* in, LC3_INT frame_size, LC3_INT fs, LC3_INT* lastAttackPosition, LC3_FLOAT* accNrg, LC3_INT* attackFlag, +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/constants.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/constants.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/constants.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/constants.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + /* DCT */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/cutoff_bandwidth.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/cutoff_bandwidth.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/cutoff_bandwidth.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/cutoff_bandwidth.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void process_cutoff_bandwidth(LC3_FLOAT *d_fl, LC3_INT len, LC3_INT bw_bin) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dct4.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dct4.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dct4.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dct4.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void dct2_init(Dct2* dct, int length) +@@ -27,11 +28,11 @@ + + void dct2_apply(Dct2* dct, const LC3_FLOAT* input, LC3_FLOAT* output) + { +- assert(input != output); + Complex tmp1[MAX_LEN]; + Complex tmp2[MAX_LEN]; + int i = 0; + const int len = dct->length; ++ assert(input != output); + + for (i = 0; i < len / 2; i++) { + tmp1[i] = cmplx(input[i * 2], 0); +@@ -49,8 +50,8 @@ + + void dct4_init(Dct4* dct, int length) + { +- assert(length <= MAX_LEN); + int i = 0; ++ assert(length <= MAX_LEN); + dct->length = length; + dct->twid1 = calloc(sizeof(*dct->twid1), length / 2); + dct->twid2 = calloc(sizeof(*dct->twid2), length / 2); +@@ -73,12 +74,12 @@ + + void dct4_apply(Dct4* dct, const LC3_FLOAT* input, LC3_FLOAT* output) + { +- assert(input != output); + Complex tmp2[MAX_LEN / 2]; + int i = 0; + Complex* tmp1 = (Complex*)output; + const int len = dct->length; + const LC3_FLOAT norm = (LC3_FLOAT)1.0 / LC3_SQRT((LC3_FLOAT)(len >> 1)); ++ assert(input != output); + + for (i = 0; i < len / 2; i++) { + tmp1[i] = cmul(cmplx(input[i * 2], input[len - i * 2 - 1]), dct->twid1[i]); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_entropy.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_entropy.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_entropy.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_entropy.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static void read_bit_fl(LC3_UINT8* ptr, LC3_INT* mask_side, LC3_INT* bp_side, LC3_INT* bit); +@@ -53,7 +54,7 @@ + LC3_INT nbbytes = nbbits >> 3; + LC3_INT lastnz; + LC3_INT bw_cutoff_idx; +- LC3_INT nbits = ceil(LC3_LOG2(L_spec / 2)); ++ LC3_INT nbits = ceil(LC3_LOGTWO(L_spec / 2)); + + if (nbits > nbbits) + { +@@ -173,7 +174,7 @@ + } + + /* Last non-zero tuple */ +- read_uint_fl(ceil(LC3_LOG2(N / 2)), ptr, &mask_side_local, &bp_side_local, lastnz); ++ read_uint_fl(ceil(LC3_LOGTWO(N / 2)), ptr, &mask_side_local, &bp_side_local, lastnz); + *lastnz = (*lastnz + 1) * 2; + + if (*lastnz > N) { +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_lc3_fl.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_lc3_fl.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_lc3_fl.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/dec_lc3_fl.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +@@ -53,8 +54,8 @@ + + if (decoder->rframe == 1 && zero_frame == 0 && bfi != 1) + { +- bfi = 2; + LC3_INT32 max_bw_stopband = BW_cutoff_bin_all[bw_cutoff_idx]; ++ bfi = 2; + switch (decoder->frame_dms) + { + # ifdef ENABLE_025_DMS_MODE +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/defines.h mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/defines.h +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/defines.h 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/defines.h 2023-06-29 12:58:27 +@@ -24,13 +24,13 @@ + typedef uint32_t LC3_UINT32; + + /* Release defines */ +-#define ENABLE_2_5MS_MODE ++// #define ENABLE_2_5MS_MODE + #define ENABLE_5MS_MODE + #define ENABLE_10_MS_MODE + #define ENABLE_ADVANCED_PLC_FL + #define ENABLE_ADVANCED_PLC_FL_DEFAULT + #define ENABLE_BW_CONTROLLER +-#define ENABLE_HR_MODE_FL ++//#define ENABLE_HR_MODE_FL + #define ENABLE_PADDING + #define ENABLE_RFRAME_FL + #define ENABLE_PLC +@@ -49,8 +49,8 @@ + /* Precision Defines */ + #define LC3_FABS(x) (fabsf(x)) + #define LC3_POW(x, y) (powf(x, y)) +-#define LC3_LOG10(x) (log10f(x)) +-#define LC3_LOG2(x) (log2f(x)) ++#define LC3_LOGTEN(x) (log10f(x)) ++#define LC3_LOGTWO(x) (log2f(x)) + # define LC3_COS(x) (cos(x)) + # define LC3_SIN(x) (sin(x)) + #define LC3_SQRT(x) (sqrtf(x)) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/detect_cutoff_warped.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/detect_cutoff_warped.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/detect_cutoff_warped.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/detect_cutoff_warped.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processDetectCutoffWarped_fl(LC3_FLOAT* d2, LC3_INT fs_idx, LC3_INT frame_dms, LC3_INT* bw_idx) +@@ -68,7 +69,7 @@ + dist = bw_dist[counter]; + + for (i = stop; i >= stop - dist; i--) { +- e_diff = 10.0 * LC3_LOG10(d2[i - dist + 1] + FLT_EPSILON) - 10.0 * LC3_LOG10(d2[i + 1] + FLT_EPSILON); ++ e_diff = 10.0 * LC3_LOGTEN(d2[i - dist + 1] + FLT_EPSILON) - 10.0 * LC3_LOGTEN(d2[i + 1] + FLT_EPSILON); + + if (e_diff > thr) { + brickwall = 1; +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_entropy.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_entropy.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_entropy.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_entropy.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processEncoderEntropy_fl(LC3_UINT8* bytes, LC3_INT* bp_side, LC3_INT* mask_side, LC3_INT numbytes, LC3_INT bw_cutoff_bits, +@@ -33,11 +34,11 @@ + + /* Last non zero touple */ + if (bfi_ext == 1) { +- write_uint_backward_fl(ptr, bp_side, mask_side, lastnzTrigger[fs_idx], ceil(LC3_LOG2(N >> 1))); ++ write_uint_backward_fl(ptr, bp_side, mask_side, lastnzTrigger[fs_idx], ceil(LC3_LOGTWO(N >> 1))); + } + else + { +- write_uint_backward_fl(ptr, bp_side, mask_side, lastnz / 2 - 1, ceil(LC3_LOG2(N / 2))); ++ write_uint_backward_fl(ptr, bp_side, mask_side, lastnz / 2 - 1, ceil(LC3_LOGTWO(N / 2))); + } + + /* LSB mode bit */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_lc3_fl.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_lc3_fl.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_lc3_fl.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/enc_lc3_fl.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static void Enc_LC3PLUS_Channel_fl(LC3PLUS_Enc* encoder, int channel, int32_t* s_in, uint8_t* bytes, int bps +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/estimate_global_gain.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/estimate_global_gain.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/estimate_global_gain.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/estimate_global_gain.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +@@ -60,8 +61,8 @@ + } else { + g_min = x_max / (32767 - 0.375); + } +- /* Prevent positive rounding errors from LC3_LOG10 function */ +- ind_min = 28.0 * LC3_LOG10(g_min); ++ /* Prevent positive rounding errors from LC3_LOGTEN function */ ++ ind_min = 28.0 * LC3_LOGTEN(g_min); + + ind_min = ceil(ind_min + LC3_FABS(ind_min) * LC3_EPS); + +@@ -76,7 +77,7 @@ + tmp += x[i + 1] * x[i + 1]; + tmp += x[i + 2] * x[i + 2]; + tmp += x[i + 3] * x[i + 3]; +- en[j] = (28.0 / 20.0) * (7 + 10.0 * LC3_LOG10(tmp + reg_val)); ++ en[j] = (28.0 / 20.0) * (7 + 10.0 * LC3_LOGTEN(tmp + reg_val)); + j++; + } + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/cfft.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/cfft.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/cfft.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/cfft.c 2023-06-29 12:58:27 +@@ -8,7 +8,7 @@ + ******************************************************************************/ + + +- ++#include "options.h" + #include "cfft.h" + #include "iisfft.h" /* for M_PIl */ + #include /* for abs() */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.c 2023-06-29 12:58:27 +@@ -8,14 +8,15 @@ + ******************************************************************************/ + + ++#include "options.h" + #include + #include +-#include "iis_fft.h" + #include + #include + #include +-#include "../structs.h" ++#include + ++#include "iis_fft.h" + /**************************************************************************************************/ + + /* AFFT uses two fft implementations +@@ -24,9 +25,6 @@ + fast lengths, check the fft_n function. + */ + +-#include +-#include "cfft.h" +-#include "iisfft.h" + + #define FFT_COMPLEX 1 + #define FFT_REAL 2 +@@ -122,12 +120,13 @@ + + IIS_FFT_ERROR LC3_IIS_FFT_Apply_CFFT(HANDLE_IIS_FFT handle, const Complex* input, Complex* output) + { ++ LC3_FLOAT* dummy; + if (!handle) + return IIS_FFT_INTERNAL_ERROR; + + /* check for inplace operation */ + memmove(output, input, sizeof(*input) * handle->len); +- LC3_FLOAT* dummy = (LC3_FLOAT*)output; ++ dummy = (LC3_FLOAT*)output; + if (handle->cfft.len > 0) { + LC3_cfft_apply(&handle->cfft, dummy, dummy + 1, 2); + } else { +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.h mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.h +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.h 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iis_fft.h 2023-06-29 12:58:27 +@@ -12,6 +12,7 @@ + #define IIS_FFT_H + + #include "../structs.h" ++#include "../defines.h" + #include "cfft.h" + + #ifdef __cplusplus +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + + #include + #include /* for mmove */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.h mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.h +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.h 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/fft/iisfft.h 2023-06-29 12:58:27 +@@ -11,6 +11,7 @@ + #ifndef IISFFT_H + #define IISFFT_H + ++#include "../defines.h" + + #ifndef M_PIl + #define M_PIl 3.1415926535897932384626433832795029L /* pi */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/imdct.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/imdct.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/imdct.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/imdct.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + /* Function expects already flipped window */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "lc3.h" + #include "defines.h" + #include "functions.h" +@@ -48,8 +49,9 @@ + case 44100: return 1; + case 48000: return 1; + case 96000: return 1; +- default: return 0; ++ default: break; + } ++ return 0; + } + + static int lc3plus_plc_mode_supported(LC3PLUS_PlcMode plc_mode) +@@ -58,8 +60,9 @@ + { + case LC3PLUS_PLC_ADVANCED: /* fallthru */ + return 1; +- default: return 0; ++ default: break; + } ++ return 0; + } + + static int lc3plus_frame_size_supported(float frame_ms) +@@ -69,8 +72,9 @@ + case 25: /* fallthru */ + case 50: /* fallthru */ + case 100: return 1; +- default: return 0; ++ default: break; + } ++ return 0; + } + + static int null_in_list(void **list, int n) +@@ -97,13 +101,14 @@ + /* encoder functions *********************************************************/ + LC3PLUS_Error lc3plus_enc_init(LC3PLUS_Enc *encoder, int samplerate, int channels, int hrmode, int32_t lfe_channel_array[]) + { ++ int ch = 0; ++ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((uintptr_t)encoder % 4 != 0, LC3PLUS_ALIGN_ERROR); + RETURN_IF(!lc3plus_samplerate_supported(samplerate), LC3PLUS_SAMPLERATE_ERROR); + RETURN_IF(!lc3plus_channels_supported(channels), LC3PLUS_CHANNELS_ERROR); + RETURN_IF(samplerate==96000 && hrmode == 0, LC3PLUS_HRMODE_ERROR); + +- int ch = 0; + for (ch = 0; ch < channels; ch++) + { + RETURN_IF(!lc3_enc_supported_lfe() && lfe_channel_array[ch], LC3PLUS_LFE_MODE_NOT_SUPPORTED); +@@ -142,6 +147,7 @@ + int lc3plus_enc_get_real_bitrate(const LC3PLUS_Enc *encoder) + { + int ch = 0, totalBytes = 0; ++ int bitrate; + RETURN_IF(encoder == NULL, 0); + RETURN_IF(!encoder->lc3_br_set, LC3PLUS_BITRATE_UNSET_ERROR); + +@@ -150,7 +156,7 @@ + totalBytes += encoder->channel_setup[ch]->targetBytes; + } + +- int bitrate = (totalBytes * 80000.0 + encoder->frame_dms - 1) / encoder->frame_dms; ++ bitrate = (totalBytes * 80000.0 + encoder->frame_dms - 1) / encoder->frame_dms; + + if (encoder->fs_in == 44100) + { +@@ -191,11 +197,13 @@ + + LC3PLUS_Error lc3plus_enc_set_bandwidth(LC3PLUS_Enc *encoder, int bandwidth) + { ++ LC3_INT effective_fs; ++ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + #ifdef ENABLE_HR_MODE_FL_FLAG + RETURN_IF(encoder->hrmode == 1, LC3PLUS_HRMODE_BW_ERROR); + #endif +- LC3_INT effective_fs = encoder->fs_in; ++ effective_fs = encoder->fs_in; + if (encoder->bandwidth != bandwidth) { + if (encoder->fs_in > 40000) { + effective_fs = 40000; +@@ -338,9 +346,9 @@ + + LC3PLUS_Error lc3plus_free_encoder_structs(LC3PLUS_Enc* encoder) + { ++ int ch = 0; + RETURN_IF(!encoder, LC3PLUS_NULL_ERROR); + +- int ch = 0; + for (ch = 0; ch < encoder->channels; ch++) { + mdct_free(&encoder->channel_setup[ch]->mdctStruct); + dct2_free(&encoder->channel_setup[ch]->dct2StructSNS); +@@ -351,9 +359,9 @@ + + LC3PLUS_Error lc3plus_free_decoder_structs(LC3PLUS_Dec* decoder) + { ++ int ch = 0; + RETURN_IF(!decoder, LC3PLUS_NULL_ERROR); + +- int ch = 0; + for (ch = 0; ch < decoder->channels; ch++) { + dct4_free(&decoder->channel_setup[ch]->dct4structImdct); + real_fft_free(&decoder->channel_setup[ch]->PlcAdvSetup->PlcPhEcuSetup.PhEcu_Fft); +@@ -378,11 +386,14 @@ + + LC3PLUS_Error lc3plus_enc_set_ep_mode(LC3PLUS_Enc *encoder, LC3PLUS_EpMode epmode) + { ++ LC3PLUS_EpMode oldEpmode; ++ LC3PLUS_Error error; ++ + RETURN_IF(encoder == NULL, LC3PLUS_NULL_ERROR); + RETURN_IF((unsigned)epmode > LC3PLUS_EP_HIGH, LC3PLUS_EPMODE_ERROR); +- LC3PLUS_EpMode oldEpmode = encoder->epmode; ++ oldEpmode = encoder->epmode; + encoder->epmode = epmode; +- LC3PLUS_Error error = encoder->lc3_br_set ? update_enc_bitrate(encoder, encoder->bitrate) : LC3PLUS_OK; ++ error = encoder->lc3_br_set ? update_enc_bitrate(encoder, encoder->bitrate) : LC3PLUS_OK; + if (error != LC3PLUS_OK) + { + encoder->epmode = oldEpmode; // preserve old epmode in case of failure +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3plus_fft.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3plus_fft.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3plus_fft.c 1970-01-01 01:00:00 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/lc3plus_fft.c 2023-06-29 12:58:27 +@@ -0,0 +1,99 @@ ++/****************************************************************************** ++* ETSI TS 103 634 V1.4.1 * ++* Low Complexity Communication Codec Plus (LC3plus) * ++* * ++* Copyright licence is solely granted through ETSI Intellectual Property * ++* Rights Policy, 3rd April 2019. No patent licence is granted by implication, * ++* estoppel or otherwise. * ++******************************************************************************/ ++ ++ ++#include "options.h" ++#include "functions.h" ++#include "fft/iis_fft.c" ++#include "fft/iisfft.c" ++#include "fft/cfft.c" ++ ++void fft_init(Fft* fft, int length) ++{ ++ HANDLE_IIS_FFT handle = NULL; ++ IIS_FFT_ERROR error = 0; ++ assert(length % 2 == 0); ++ ++ fft->length = length; ++ ++ error = LC3_IIS_CFFT_Create(&handle, length, IIS_FFT_FWD); ++ ++ assert(error == IIS_FFT_NO_ERROR); ++ fft->handle = handle; ++} ++ ++void fft_free(Fft* fft) ++{ ++ IIS_FFT_ERROR error = 0; ++ ++ if (fft) { ++ error = LC3_IIS_CFFT_Destroy((HANDLE_IIS_FFT *) &fft->handle); ++ ++ assert(error == IIS_FFT_NO_ERROR); ++ memset(fft, 0, sizeof(*fft)); ++ } ++} ++ ++void real_fft_free(Fft* fft) ++{ ++ IIS_FFT_ERROR error = 0; ++ ++ if (fft) { ++ error = LC3_IIS_RFFT_Destroy((HANDLE_IIS_FFT *) &fft->handle); ++ ++ assert(error == IIS_FFT_NO_ERROR); ++ memset(fft, 0, sizeof(*fft)); ++ } ++} ++ ++void real_fft_init(Fft* fft, LC3_INT32 length, HANDLE_IIS_FFT *handle) ++{ ++ IIS_FFT_ERROR error = IIS_FFT_NO_ERROR; ++ assert(length % 4 == 0); /* due to current limitation of core complex FFTs*/ ++ ++ fft->length = length; ++ ++ error = LC3_IIS_RFFT_Create(handle, length, IIS_FFT_FWD); ++ assert(error == IIS_FFT_NO_ERROR); ++ fft->handle = *handle; ++} ++ ++ ++void real_ifft_init(Fft* fft, LC3_INT32 length, HANDLE_IIS_FFT *handle) ++{ ++ IIS_FFT_ERROR error = IIS_FFT_NO_ERROR; ++ assert(length % 4 == 0); /* due to current limitation of core complex FFTs*/ ++ ++ fft->length = length; ++ ++ error = LC3_IIS_RFFT_Create(handle, length, IIS_FFT_BWD); ++ ++ assert(error == IIS_FFT_NO_ERROR); ++ fft->handle = *handle; ++} ++ ++void fft_apply(Fft* fft, const Complex* input, Complex* output) ++{ ++ IIS_FFT_ERROR error = 0; ++ error = LC3_IIS_FFT_Apply_CFFT(fft->handle, input, output); ++ ++ assert(error == IIS_FFT_NO_ERROR); ++} ++ ++ ++void real_fft_apply(Fft* fft, const LC3_FLOAT* input, LC3_FLOAT* output) ++{ ++ IIS_FFT_ERROR error = IIS_FFT_NO_ERROR; ++ ++ UNUSED(error); ++ ++ error = LC3_IIS_FFT_Apply_RFFT(fft->handle, input, output); ++ ++ assert(error == IIS_FFT_NO_ERROR); ++} +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_coder.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_coder.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_coder.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_coder.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static LC3_INT searchMaxIndice(LC3_FLOAT* in, LC3_INT len); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_decoder.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_decoder.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_decoder.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/ltpf_decoder.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void process_ltpf_decoder_fl(LC3_FLOAT* x, LC3_INT xLen, LC3_FLOAT* y, LC3_INT fs, LC3_FLOAT* mem_old_x, LC3_FLOAT* mem_old_y, +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static const LC3_FLOAT* mdct_window(LC3_INT length, LC3_INT frame_dms, LC3_INT hrmode) +@@ -104,6 +105,7 @@ + { + LC3_FLOAT tmp[MAX_LEN * 2] = {0}; + LC3_INT i = 0; ++ LC3_INT hlen; + + move_float(tmp, mdct->mem, mdct->mem_length); + move_float(tmp + mdct->mem_length, input, mdct->length); +@@ -112,7 +114,7 @@ + + mult_vec(tmp, mdct->window, mdct->length * 2); + +- LC3_INT hlen = mdct->length / 2; ++ hlen = mdct->length / 2; + for (i = 0; i < hlen; i++) { + output[i] = -tmp[hlen * 3 - i - 1] - tmp[hlen * 3 + i]; + output[hlen + i] = tmp[i] - tmp[hlen * 2 - i - 1]; +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct_shaping.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct_shaping.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct_shaping.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/mdct_shaping.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processMdctShaping_fl(LC3_FLOAT x[], LC3_FLOAT scf[], const LC3_INT bands_offset[], LC3_INT fdns_npts) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/msvc/.gitignore mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/msvc/.gitignore +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/msvc/.gitignore 1970-01-01 01:00:00 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/msvc/.gitignore 2023-06-29 12:58:27 +@@ -0,0 +1 @@ ++Win32/ +\ No newline at end of file +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/near_nyquist_detector.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/near_nyquist_detector.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/near_nyquist_detector.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/near_nyquist_detector.c 2023-06-29 12:58:35 +@@ -8,15 +8,16 @@ + ******************************************************************************/ + + #include "functions.h" ++#include "options.h" + + + void processNearNyquistdetector_fl(LC3_INT16* near_nyquist_flag, const LC3_INT fs_idx, const LC3_INT near_nyquist_index, + const LC3_INT bands_number, const LC3_FLOAT* ener) + { + *near_nyquist_flag = 0; +- ++ + if (fs_idx < 4) +- { ++ { + LC3_INT i = 0; + LC3_FLOAT ener_low = FLT_EPSILON, ener_high = 0; + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_factor.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_factor.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_factor.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_factor.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processNoiseFactor_fl(LC3_INT* fac_ns_idx, LC3_FLOAT x[], LC3_INT xq[], LC3_FLOAT gg, LC3_INT BW_cutoff_idx, LC3_INT frame_dms, +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_filling.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_filling.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_filling.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/noise_filling.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processNoiseFilling_fl(LC3_FLOAT xq[], LC3_INT nfseed, LC3_INT fac_ns_idx, LC3_INT bw_stopband, LC3_INT frame_dms, LC3_FLOAT fac_ns_pc, LC3_INT spec_inv_idx) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/olpa.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/olpa.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/olpa.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/olpa.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static void filter_olpa(LC3_FLOAT* in, LC3_FLOAT* out, const LC3_FLOAT* buf, LC3_FLOAT len_buf, LC3_INT len_input); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_apply.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_apply.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_apply.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_apply.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_classify.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_classify.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_classify.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_classify.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_main.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_main.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_main.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_main.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_update.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_update.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_update.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/pc_update.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/per_band_energy.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/per_band_energy.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/per_band_energy.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/per_band_energy.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processPerBandEnergy_fl(LC3_INT bands_number, const LC3_INT* acc_coeff_per_band, LC3_INT16 hrmode, LC3_INT16 frame_dms, LC3_FLOAT* d2, LC3_FLOAT* d) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_classify.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_classify.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_classify.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_classify.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_compute_stab_fac.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_compute_stab_fac.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_compute_stab_fac.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_compute_stab_fac.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_damping_scrambling.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_damping_scrambling.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_damping_scrambling.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_damping_scrambling.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_main.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_main.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_main.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_main.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processPlcMain_fl(LC3_FLOAT *q_d_fl_c, LC3_FLOAT *syntM_fl_c, LC3PLUS_Dec* decoder, DecSetup* h_DecSetup, LC3_INT bfi, +@@ -56,6 +57,8 @@ + { + case 2: + { ++ LC3_FLOAT pitch_fl_c; ++ + assert(decoder->fs_idx == floor(decoder->fs / 10000)); + // phaseECU supports only 10ms framing + assert(PlcSetup->nbLostCmpt != 0 || decoder->frame_dms == 100); +@@ -69,7 +72,7 @@ + } + + /* call phaseEcu */ +- LC3_FLOAT pitch_fl_c = (LC3_FLOAT)ltpf_pitch_int + (LC3_FLOAT)ltpf_pitch_fr / 4.0; /* use non-rounded pitch indeces */ ++ pitch_fl_c = (LC3_FLOAT)ltpf_pitch_int + (LC3_FLOAT)ltpf_pitch_fr / 4.0; /* use non-rounded pitch indeces */ + + + if (prev_bfi_plc2 == 0) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution0.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution0.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution0.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_noise_substitution0.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_f0_refine_first.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_f0_refine_first.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_f0_refine_first.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_f0_refine_first.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_fec_hq.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_fec_hq.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_fec_hq.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_fec_hq.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_hq_ecu.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_hq_ecu.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_hq_ecu.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_hq_ecu.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_lf_peak_analysis.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_lf_peak_analysis.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_lf_peak_analysis.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_lf_peak_analysis.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_rec_frame.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_rec_frame.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_rec_frame.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_rec_frame.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_setf0hz.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_setf0hz.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_setf0hz.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_setf0hz.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_spec_ana.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_spec_ana.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_spec_ana.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_spec_ana.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +@@ -135,13 +136,13 @@ + + if (max_xfp_abs >= 0.5) + { +- PLC2_Q_flt = (LC3_FLOAT)LC3_FLOOR(LC3_LOG2(32768 / 2 / 2 / max_xfp_abs)); ++ PLC2_Q_flt = (LC3_FLOAT)LC3_FLOOR(LC3_LOGTWO(32768 / 2 / 2 / max_xfp_abs)); + Q_scale_flt = LC3_POW(2.0, PLC2_Q_flt) / fx_fft_scale / fft_fs_scale; /* basop way using xfp scale */ + + /* C-Float additional safety limit/verification of the integer xfp based scaling using the available C-float Xabs max value inp_high as well */ + { + LC3_FLOAT tmp_scale; +- tmp_scale = LC3_POW(2.0, LC3_FLOOR(LC3_LOG2(32768 / 2 / 2 / inp_high))); ++ tmp_scale = LC3_POW(2.0, LC3_FLOOR(LC3_LOGTWO(32768 / 2 / 2 / inp_high))); + if (Q_scale_flt > tmp_scale) { + Q_scale_flt = tmp_scale; + } +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_subst_spec.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_subst_spec.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_subst_spec.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_subst_spec.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + #include "constants.h" +@@ -30,6 +31,7 @@ + LC3_INT32 segmentLen, e; + LC3_FLOAT Xph; + LC3_FLOAT seed_local; ++ LC3_INT32 binCounter, subInd; + + UNUSED(corr_phase_dbg); + UNUSED(X_i_new_re_dbg); +@@ -49,8 +51,8 @@ + + + // EVOLVE PHASE ----------------- +- LC3_INT32 binCounter = 1; +- LC3_INT32 subInd = 0; ++ binCounter = 1; ++ subInd = 0; + + one_peak_flag_mask = -1; + if (n_plocs < 3 && n_plocs > 0) { +@@ -219,9 +221,10 @@ + } + + static LC3_INT32 own_rand(LC3_INT32 seed) { +- assert(seed <= 32767 && seed >= -32768); +- LC3_INT32 retSeed = (13849 + (seed + 32768) * 31821) & 65535; +- retSeed -= 32768; ++ LC3_INT32 retSeed; ++ assert(seed <= 32767 && seed >= -32768); ++ retSeed = (13849 + (seed + 32768) * 31821) & 65535; ++ retSeed -= 32768; + assert(retSeed <= 32767 && retSeed >= -32768); + return retSeed; + } +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_per_band_gain.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_per_band_gain.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_per_band_gain.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_per_band_gain.c 2023-06-29 12:58:35 +@@ -6,13 +6,14 @@ + * Rights Policy, 3rd April 2019. No patent licence is granted by implication, * + * estoppel or otherwise. * + ******************************************************************************/ +- + ++ ++#include "options.h" + #include "defines.h" + #include "functions.h" + + +-void plc_phEcu_tba_per_band_gain(LC3_INT32 n_grp, LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *trans, LC3_FLOAT *grp_pow_change) ++void plc_phEcu_tba_per_band_gain(LC3_INT32 n_grp, LC3_FLOAT *gr_pow_left, LC3_FLOAT *gr_pow_right, LC3_FLOAT *trans, LC3_FLOAT *grp_pow_change) + { + LC3_INT32 i; + +@@ -34,10 +35,10 @@ + trans[i] = 1.0; /* 0/0 no transient , no power change */ + } + } +- grp_pow_change[i] = (LC3_FLOAT) 10.0 * LC3_LOG10(trans[i]); ++ grp_pow_change[i] = (LC3_FLOAT) 10.0 * LC3_LOGTEN(trans[i]); + + } + +- return; ++ return; + } + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_spect_Xavg.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_spect_Xavg.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_spect_Xavg.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_spect_Xavg.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_trans_dect_gains.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_trans_dect_gains.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_trans_dect_gains.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_tba_trans_dect_gains.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "defines.h" + #include "functions.h" + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_trans_burst_ana_sub.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_trans_burst_ana_sub.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_trans_burst_ana_sub.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_phecu_trans_burst_ana_sub.c 2023-06-29 12:58:35 +@@ -6,16 +6,17 @@ + * Rights Policy, 3rd April 2019. No patent licence is granted by implication, * + * estoppel or otherwise. * + ******************************************************************************/ +- + ++ ++#include "options.h" + #include "defines.h" + #include "functions.h" + + +-void plc_phEcu_trans_burst_ana_sub(LC3_INT32 fs_idx, LC3_INT32 burst_len, LC3_INT32 n_grp, LC3_FLOAT *oold_spect_shape, +- LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spect_shape, ++void plc_phEcu_trans_burst_ana_sub(LC3_INT32 fs_idx, LC3_INT32 burst_len, LC3_INT32 n_grp, LC3_FLOAT *oold_spect_shape, ++ LC3_FLOAT *oold_EwPtr, LC3_FLOAT *old_spect_shape, + LC3_FLOAT *old_EwPtr, LC3_FLOAT *stPhECU_beta_mute, +- LC3_FLOAT *stPhECU_mag_chg_1st, LC3_FLOAT *stPhECU_Xavg, LC3_FLOAT *alpha, LC3_FLOAT *beta, LC3_FLOAT *mag_chg, LC3_INT32 *tr_dec_dbg, LC3_FLOAT *gpc_dbg) ++ LC3_FLOAT *stPhECU_mag_chg_1st, LC3_FLOAT *stPhECU_Xavg, LC3_FLOAT *alpha, LC3_FLOAT *beta, LC3_FLOAT *mag_chg, LC3_INT32 *tr_dec_dbg, LC3_FLOAT *gpc_dbg) + { + LC3_FLOAT gr_pow_left[MAX_LGW]; + LC3_FLOAT gr_pow_right[MAX_LGW]; +@@ -27,7 +28,7 @@ + + LC3_INT32 attDegreeFrames; + LC3_FLOAT thresh_dbg; +- ++ + UNUSED(tr_dec_dbg); + UNUSED(gpc_dbg); + +@@ -39,7 +40,7 @@ + + } + +- ++ + plc_phEcu_tba_trans_dect_gains(burst_len, n_grp, grp_pow_change, stPhECU_beta_mute, stPhECU_mag_chg_1st, alpha, beta, mag_chg, ph_dith, tr_dec, att_val, &attDegreeFrames, &thresh_dbg); + + return; +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + /***************************************************************************\ + * contents/description: Main function for Time domain concealment + \***************************************************************************/ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc_tdac.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc_tdac.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc_tdac.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_tdc_tdac.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_update.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_update.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_update.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/plc_update.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + #include "functions.h" ++#include "options.h" + + + void processPlcUpdate_fl(PlcAdvSetup *PlcAdvSetup, LC3_INT32 frame_length, LC3_FLOAT *syntM, LC3_FLOAT *scf_q, +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/quantize_spec.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/quantize_spec.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/quantize_spec.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/quantize_spec.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static LC3_INT sign(LC3_FLOAT x); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/reorder_bitstream.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/reorder_bitstream.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/reorder_bitstream.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/reorder_bitstream.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/resamp12k8.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/resamp12k8.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/resamp12k8.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/resamp12k8.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void process_resamp12k8_fl(LC3_FLOAT x[], LC3_INT x_len, LC3_FLOAT mem_in[], LC3_INT mem_in_len, LC3_FLOAT mem_50[], LC3_FLOAT mem_out[], +@@ -17,6 +18,8 @@ + + LC3_INT len_12k8 = 0, N12k8 = 0, i = 0, k = 0; + LC3_FLOAT mac = 0, buf_out[120 + MAX_LEN] = {0}, bufdown[128] = {0}, buf[120 + MAX_LEN] = {0}; ++ LC3_INT32 index_int, index_frac, resamp_upfac, resamp_delay, resamp_off_int, resamp_off_frac; ++ LC3_FLOAT u_11, u_21, u_1, u_2; + + const LC3_FLOAT *filter; + const LC3_FLOAT *filt_input, *filt_coeff; +@@ -49,12 +52,12 @@ + + /* Upsampling & Low-pass Filtering & Downsampling */ + +- LC3_INT32 index_int = 1; +- LC3_INT32 index_frac = 0; +- LC3_INT32 resamp_upfac = resamp_params[fs_idx][0]; +- LC3_INT32 resamp_delay = resamp_params[fs_idx][1]; +- LC3_INT32 resamp_off_int = resamp_params[fs_idx][2]; +- LC3_INT32 resamp_off_frac = resamp_params[fs_idx][3]; ++ index_int = 1; ++ index_frac = 0; ++ resamp_upfac = resamp_params[fs_idx][0]; ++ resamp_delay = resamp_params[fs_idx][1]; ++ resamp_off_int = resamp_params[fs_idx][2]; ++ resamp_off_frac = resamp_params[fs_idx][3]; + + k = 0; + for (i = 0; i < N12k8; i++) { +@@ -78,9 +81,8 @@ + + + /* 50Hz High-Pass */ +- LC3_FLOAT u_11 = mem_50[0]; +- LC3_FLOAT u_21 = mem_50[1]; +- LC3_FLOAT u_1, u_2; ++ u_11 = mem_50[0]; ++ u_21 = mem_50[1]; + + for (i = 0; i < len_12k8; i++) { + LC3_FLOAT y1 = (highpass50_filt_b[0] * bufdown[i] + u_11); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_coding.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_coding.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_coding.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_coding.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processResidualCoding_fl(LC3_FLOAT x[], LC3_INT xq[], LC3_FLOAT gain, LC3_INT L_spec, LC3_INT targetBits, LC3_INT nBits, uint8_t* resBits, LC3_INT* numResBits +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_decoding.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_decoding.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_decoding.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/residual_decoding.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processResidualDecoding_fl(LC3_INT* bitsRead, LC3_FLOAT x[], LC3_INT L_spec, uint8_t prm[], LC3_INT resQBits +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_com_lc3.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_com_lc3.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_com_lc3.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_com_lc3.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + #include "functions.h" ++#include "options.h" + + LC3_FLOAT array_max_abs(LC3_FLOAT *in, LC3_INT32 len) + { +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_dec_lc3.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_dec_lc3.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_dec_lc3.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_dec_lc3.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "setup_dec_lc3.h" + #include "functions.h" + #include +@@ -32,6 +33,7 @@ + LC3_FLOAT *sine_table1_phecu, *sine_table2_phecu; + HANDLE_IIS_FFT handle_fft_phaseecu; + HANDLE_IIS_FFT handle_ifft_phaseecu; ++ LC3_FLOAT *q_old_res; + + for (ch = 0; ch < channels; ch++) { + DecSetup* setup = balloc(decoder, &size, sizeof(DecSetup)); +@@ -56,7 +58,7 @@ + sine_table1_phecu = balloc(decoder, &size, sizeof(LC3_FLOAT) * (((CODEC_FS(samplerate) * 16) / 1000) / 2 + 1)); + sine_table2_phecu = balloc(decoder, &size, sizeof(LC3_FLOAT) * (((CODEC_FS(samplerate) * 16) / 1000) / 2 + 1)); + +- LC3_FLOAT *q_old_res = balloc(decoder, &size, sizeof(LC3_FLOAT) * frame_len); ++ q_old_res = balloc(decoder, &size, sizeof(LC3_FLOAT) * frame_len); + + if (decoder) { + decoder->channel_setup[ch] = setup; +@@ -346,6 +348,7 @@ + LC3PLUS_Error update_dec_bitrate(LC3PLUS_Dec* decoder, int ch, int nBytes) + { + int totalBits = 0, bitsTmp = 0, channel_bytes = 0, maxBytes = 0, minBytes = 0; ++ DecSetup* setup; + + if (decoder->hrmode) + { +@@ -375,7 +378,7 @@ + + channel_bytes = nBytes; + +- DecSetup* setup = decoder->channel_setup[ch]; ++ setup = decoder->channel_setup[ch]; + + if (channel_bytes < minBytes || channel_bytes > maxBytes) + { +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_enc_lc3.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_enc_lc3.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_enc_lc3.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/setup_enc_lc3.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "setup_enc_lc3.h" + #include "functions.h" + #include +@@ -33,6 +34,7 @@ + , int32_t lfe_channel_array[] + ) + { ++ int ch = 0; + memset(encoder, 0, lc3plus_enc_get_size(samplerate, channels)); + alloc_encoder(encoder, channels); + +@@ -56,7 +58,6 @@ + encoder->r12k8_mem_in_len = 2 * 8 * encoder->fs / 12800; + encoder->r12k8_mem_out_len = 24; + +- int ch = 0; + for (ch = 0; ch < encoder->channels; ch++) + { + encoder->channel_setup[ch]->lfe = lfe_channel_array[ch] != 0; +@@ -220,6 +221,7 @@ + + if (encoder->hrmode) + { ++#ifdef ENABLE_HR_MODE_FL + switch (encoder->frame_dms) + { + case 25: +@@ -243,6 +245,7 @@ + default: + return LC3PLUS_HRMODE_ERROR; + } ++#endif + } + else + { +@@ -368,7 +371,7 @@ + setup->total_bits = setup->targetBytes << 3; + setup->targetBitsInit = setup->total_bits - encoder->envelope_bits - encoder->global_gain_bits - + encoder->noise_fac_bits - encoder->BW_cutoff_bits - +- ceil(LC3_LOG2(encoder->frame_length / 2)) - 2 - 1; ++ ceil(LC3_LOGTWO(encoder->frame_length / 2)) - 2 - 1; + + if (setup->total_bits > 1280) { + setup->targetBitsInit = setup->targetBitsInit - 1; +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_compute_scf.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_compute_scf.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_compute_scf.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_compute_scf.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processSnsComputeScf_fl(LC3_FLOAT* x, LC3_INT tilt, LC3_INT xLen, LC3_FLOAT* gains, LC3_INT smooth, LC3_FLOAT sns_damping, LC3_FLOAT attdec_damping_factor) +@@ -109,7 +110,7 @@ + + /* Log-domain */ + for (i = 0; i < 64; i++) { +- xl[i] = LC3_LOG2(x[i]) / 2.0; ++ xl[i] = LC3_LOGTWO(x[i]) / 2.0; + } + + /* Downsampling */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_interpolate_scf.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_interpolate_scf.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_interpolate_scf.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_interpolate_scf.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processSnsInterpolateScf_fl(LC3_FLOAT* gains, LC3_INT encoder_side, LC3_INT bands_number, LC3_FLOAT* gains_int) +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_quantize_scf.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_quantize_scf.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_quantize_scf.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/sns_quantize_scf.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static void pvq_dec(LC3_INT k, LC3_INT m, LC3_INT LS_ind, LC3_INT MPVQ_ind, LC3_INT* pulses); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tinywavein_c.h mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tinywavein_c.h +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tinywavein_c.h 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tinywavein_c.h 2023-06-29 12:58:27 +@@ -17,6 +17,7 @@ + #include + #include + ++ + #if defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) || defined(__arm__) || \ + defined(__aarch64__) + #define __TWI_LE /* _T_iny _W_ave _I_n _L_ittle _E_ndian */ +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_coder.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_coder.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_coder.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_coder.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + static void xcorr(LC3_FLOAT* in, LC3_FLOAT* out, LC3_INT lag, LC3_INT inLen); +diff -Naur ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_decoder.c mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_decoder.c +--- ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_decoder.c 2023-02-28 20:25:37 ++++ mod/ETSI_Release/LC3plus_ETSI_src_va15eb59632b_20230228/src/floating_point/tns_decoder.c 2023-06-29 12:58:27 +@@ -8,6 +8,7 @@ + ******************************************************************************/ + + ++#include "options.h" + #include "functions.h" + + void processTnsDecoder_fl(LC3_FLOAT* x, LC3_INT* rc_idx, LC3_INT* order, LC3_INT numfilters, LC3_INT bw_fcbin, LC3_INT N, LC3_INT fs) diff --git a/scripts/makefile_SR.patch b/scripts/makefile_SR.patch new file mode 100644 index 0000000000000000000000000000000000000000..d87d8a2542be63c11c15c207a1f333a67287664d --- /dev/null +++ b/scripts/makefile_SR.patch @@ -0,0 +1,15 @@ +--- Makefile 2023-08-15 09:31:05.336005000 +0200 ++++ Makefile_patched2 2023-08-15 09:40:48.407929000 +0200 +@@ -134,12 +134,7 @@ + SRCS_LIBENC = $(foreach DIR,$(SRC_LIBENC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) + SRCS_LIBREND = $(foreach DIR,$(SRC_LIBREND),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) + SRCS_LIBUTIL = $(foreach DIR,$(SRC_LIBUTIL),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +-ifeq "$(INCLUDE_SPLIT)" "1" + SRCS_LC3PLUS = $(foreach DIR,$(SRC_LC3PLUS),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +-else +-SRCS_LIBREND := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBREND)) +-SRCS_LIBUTIL := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBUTIL)) +-endif + + OBJS_LIBCOM = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.o)) + OBJS_LIBDEBUG = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEBUG:.c=.o)) diff --git a/scripts/makefile_noSR.patch b/scripts/makefile_noSR.patch new file mode 100644 index 0000000000000000000000000000000000000000..ccd70bac67256e069e5b954284780a74e0f9a16b --- /dev/null +++ b/scripts/makefile_noSR.patch @@ -0,0 +1,89 @@ +--- Makefile 2023-08-15 09:31:05.336005000 +0200 ++++ Makefile_patched 2023-08-15 09:49:15.722019000 +0200 +@@ -6,13 +6,12 @@ + SRC_LIBDEC = lib_dec + SRC_LIBENC = lib_enc + SRC_LIBREND = lib_rend +-SRC_LC3PLUS = lc3plus lc3plus/fft + SRC_LIBUTIL = lib_util + SRC_APP = apps + BUILD = build + OBJDIR = obj + +-SRC_DIRS = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LC3PLUS) $(SRC_LIBUTIL) $(SRC_APP)) ++SRC_DIRS = $(sort -u $(SRC_LIBCOM) $(SRC_LIBDEBUG) $(SRC_LIBDEC) $(SRC_LIBENC) $(SRC_LIBREND) $(SRC_LIBUTIL) $(SRC_APP)) + + # Name of CLI binaries + CLI_APIDEC ?= IVAS_dec +@@ -23,7 +22,6 @@ + LIB_LIBDEC ?= libivasdec.a + LIB_LIBENC ?= libivasenc.a + LIB_LIBREND ?= libivasrend.a +-LIB_LC3PLUS ?= liblc3plus.a + LIB_LIBUTIL ?= libivasutil.a + + # Default tool settings +@@ -134,26 +132,21 @@ + SRCS_LIBENC = $(foreach DIR,$(SRC_LIBENC),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) + SRCS_LIBREND = $(foreach DIR,$(SRC_LIBREND),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) + SRCS_LIBUTIL = $(foreach DIR,$(SRC_LIBUTIL),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +-ifeq "$(INCLUDE_SPLIT)" "1" +-SRCS_LC3PLUS = $(foreach DIR,$(SRC_LC3PLUS),$(patsubst $(DIR)/%,%,$(wildcard $(DIR)/*.c))) +-else + SRCS_LIBREND := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBREND)) + SRCS_LIBUTIL := $(filter-out $(SRCS_SPLIT_REND),$(SRCS_LIBUTIL)) +-endif + + OBJS_LIBCOM = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.o)) + OBJS_LIBDEBUG = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEBUG:.c=.o)) + OBJS_LIBDEC = $(addprefix $(OBJDIR)/,$(SRCS_LIBDEC:.c=.o)) + OBJS_LIBENC = $(addprefix $(OBJDIR)/,$(SRCS_LIBENC:.c=.o)) + OBJS_LIBREND = $(addprefix $(OBJDIR)/,$(SRCS_LIBREND:.c=.o)) +-OBJS_LC3PLUS = $(addprefix $(OBJDIR)/,$(SRCS_LC3PLUS:.c=.o)) + OBJS_LIBUTIL = $(addprefix $(OBJDIR)/,$(SRCS_LIBUTIL:.c=.o)) + OBJS_CLI_APIDEC = $(OBJDIR)/decoder.o + OBJS_CLI_APIENC = $(OBJDIR)/encoder.o + OBJS_CLI_APPREND = $(OBJDIR)/renderer.o + + DEPS = $(addprefix $(OBJDIR)/,$(SRCS_LIBCOM:.c=.P) $(SRCS_LIBDEBUG:.c=.P) $(SRCS_LIBDEC:.c=.P) \ +- $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P) $(SRCS_LC3PLUS:.c=.P)) ++ $(SRCS_LIBENC:.c=.P) $(SRCS_LIBUTIL:.c=.P) $(SRCS_LIBREND:.c=.P)) + + ############################################################################### + +@@ -179,28 +172,25 @@ + $(LIB_LIBREND): $(OBJS_LIBREND) + $(QUIET_AR)$(AR) rcs $@ $^ + +-$(LIB_LC3PLUS): $(OBJS_LC3PLUS) +- $(QUIET_AR)$(AR) rcs $@ $^ +- + $(LIB_LIBUTIL): $(OBJS_LIBUTIL) + $(QUIET_AR)$(AR) rcs $@ $^ + +-$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) ++$(CLI_APIENC): $(OBJS_CLI_APIENC) $(LIB_LIBENC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) + $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIENC) -L. -livasenc -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIENC) + +-$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LC3PLUS) +- $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug -llc3plus $(LDLIBS) -o $(CLI_APIDEC) ++$(CLI_APIDEC): $(OBJS_CLI_APIDEC) $(LIB_LIBDEC) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) ++ $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APIDEC) -L. -livasdec -livascom -livasutil -livasdebug $(LDLIBS) -o $(CLI_APIDEC) + +-$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) $(LIB_LC3PLUS) +- $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom -llc3plus $(LDLIBS) -o $(CLI_APIREND) ++$(CLI_APIREND): $(OBJS_CLI_APPREND) $(LIB_LIBREND) $(LIB_LIBCOM) $(LIB_LIBUTIL) $(LIB_LIBDEBUG) $(LIB_LIBDEC) ++ $(QUIET_LINK)$(CC) $(LDFLAGS) $(OBJS_CLI_APPREND) -L. -livasrend -livasdec -livasutil -livasdebug -livascom $(LDLIBS) -o $(CLI_APIREND) + +-libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LC3PLUS) $(LIB_LIBUTIL) ++libs: $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBREND) $(LIB_LIBUTIL) + + clean: + $(QUIET)$(RM) $(OBJS_LIBENC) $(OBJS_LIBDEC) $(DEPS) + $(QUIET)$(RM) $(DEPS:.P=.d) + $(QUIET)test ! -d $(OBJDIR) || rm -rf $(OBJDIR) +- $(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) $(LIB_LC3PLUS) ++ $(QUIET)$(RM) $(CLI_APIENC) $(CLI_APIDEC) $(CLI_APIREND) $(LIB_LIBENC) $(LIB_LIBDEBUG) $(LIB_LIBCOM) $(LIB_LIBDEC) $(LIB_LIBUTIL) $(LIB_LIBREND) + + $(OBJDIR)/%.o : %.c | $(OBJDIR) + $(QUIET_CC)$(CC) $(CFLAGS) -c -MD -o $@ $< diff --git a/scripts/prepare_combined_format_inputs.py b/scripts/prepare_combined_format_inputs.py new file mode 100755 index 0000000000000000000000000000000000000000..b8ad68557986fea358918580dd886e118749c990 --- /dev/null +++ b/scripts/prepare_combined_format_inputs.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 + +__license__ = \ +""" + (C) 2022-2023 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. +""" + +import os +import shutil + +import numpy as np + +from pyaudio3dtools import audiofile, audioarray + + +# scripts/testv/ path +input_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testv') +if 'TESTV_DIR' in os.environ: + output_dir = os.environ['TESTV_DIR'] +else: + output_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'testv') + +print(f'Writing new files into {output_dir}') + +# # prepare combined input for OMASA tests +force_overwrite = False # overwrite existing files + +# define MASA test item files +masa_alts = ({'masa_meta_file': 'stv2MASA2TC48c.met', + 'masa_audio_file': 'stv2MASA2TC48c.wav', + 'masa_tag': '2MASA2TC'}, + {'masa_meta_file': 'stv2MASA1TC48c.met', + 'masa_audio_file': 'stv2MASA1TC48c.wav', + 'masa_tag': '2MASA1TC'}, + {'masa_meta_file': 'stv1MASA2TC48c.met', + 'masa_audio_file': 'stv1MASA2TC48c.wav', + 'masa_tag': '1MASA2TC'}, + {'masa_meta_file': 'stv1MASA1TC48c.met', + 'masa_audio_file': 'stv1MASA1TC48c.wav', + 'masa_tag': '1MASA1TC'}) + +# files containing 1-4 ISMs as channels +ism_files = ('stv1ISM48s.wav', 'stv2ISM48s.wav', 'stv3ISM48s.wav', 'stv4ISM48s.wav') +# per-object metadata +ism_meta_files = ('stvISM1.csv', 'stvISM2.csv', 'stvISM3.csv', 'stvISM4.csv') + +wrote_files = [] +for enum_idx, (ism_audio_file, ism_meta_file) in enumerate(zip(ism_files, ism_meta_files)): + n_isms = enum_idx + 1 + ism_audio, ism_fs = audiofile.readfile(filename=os.path.join(input_dir, ism_audio_file)) + + for masa_item in masa_alts: + masa_tag = masa_item['masa_tag'] + + omasa_file_body = f'stvOMASA_{n_isms}ISM_{masa_tag}48c' + omasa_file = os.path.join(output_dir, f'{omasa_file_body}.wav') + + if not os.path.exists(omasa_file) or force_overwrite: + audiofile.combinefiles(in_filenames=[os.path.join(input_dir, ism_audio_file), + os.path.join(input_dir, masa_item['masa_audio_file'])], + out_file=omasa_file) + wrote_files.append(omasa_file) + + # copy ISM metadata files under names matching the combined file + for ism_idx in range(n_isms): + ism_file_name = os.path.join(output_dir, f'{omasa_file_body}_ISM{ism_idx+1}{os.path.splitext(ism_meta_file)[1]}') + if not os.path.exists(ism_file_name) or force_overwrite: + shutil.copyfile(os.path.join(input_dir, ism_meta_file), ism_file_name) + wrote_files.append(ism_file_name) + + # copy MASA metadata file under a matching name + masa_meta_name = os.path.join(output_dir, f'{omasa_file_body}{os.path.splitext(masa_item["masa_meta_file"])[1]}') + + if not os.path.exists(masa_meta_name) or force_overwrite: + shutil.copyfile(os.path.join(input_dir, masa_item['masa_meta_file']), masa_meta_name) + wrote_files.append(masa_meta_name) + +# info print. helps setting up .gitignore +if len(wrote_files) > 0: + print('New files written: {}'.format('\n'.join(wrote_files))) diff --git a/scripts/prepare_delivery.sh b/scripts/prepare_delivery.sh new file mode 100755 index 0000000000000000000000000000000000000000..b925ac667782e0a5be8c36134ef8b08b074abb13 --- /dev/null +++ b/scripts/prepare_delivery.sh @@ -0,0 +1,488 @@ +#!/bin/bash + +# +# (C) 2022-2023 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. +# + +REV=`git log -1 --pretty=format:"%H"` +DATE=`eval date +%Y_%m_%d` +OUTDIR=c-code +TMPCLEANDIR=clean-c-code +ROOT=$(dirname $0)/.. +STRIP_SPLITREND=0 + +# check, whether coan exists +coan_exists () { + type coan &> /dev/null ; +# return false +} + + +########################## +# # +# Start, Commandline # +# # +########################## + +ALL_OPTS=":h-:" +while getopts "$ALL_OPTS" OPTION; do + case "${OPTION}" in + -) + case "${OPTARG}" in + strip_sr) + STRIP_SPLITREND=1 + ;; + *) + if [ "$OPTERR" = 1 ] && [ "${ALL_OPTS:0:1}" != ":" ]; then + echo "Unknown option --${OPTARG}" >&2 + fi + ;; + esac;; + h) + echo "usage: $0 [--strip_sr]" >&2 + exit -1 + ;; + *) + if [ "$OPTERR" != 1 ] || [ "${ALLOPTS:0:1}" = ":" ]; then + echo "Unknown argument: '-${OPTARG}'" >&2 + fi + ;; + esac +done + + +########################## +# # +# Prepare dirs and copy # +# # +########################## + +rm -rf $OUTDIR +mkdir $OUTDIR + +rm -rf $TMPCLEANDIR + +# source code +cp -R ${ROOT}/lib_com $OUTDIR +cp -R ${ROOT}/lib_dec $OUTDIR +cp -R ${ROOT}/lib_enc $OUTDIR +cp -R ${ROOT}/lib_util $OUTDIR +cp -R ${ROOT}/lib_rend $OUTDIR +cp -R ${ROOT}/lc3plus $OUTDIR +cp -R ${ROOT}/apps $OUTDIR +mkdir $OUTDIR/lib_debug +cp ${ROOT}/lib_debug/wmc_auto.[ch] $OUTDIR/lib_debug +cp ${ROOT}/.clang-format $OUTDIR + +# MS VC Workspaces/Makefile +cp ${ROOT}/Makefile ${OUTDIR} +cp -R ${ROOT}/Workspace_msvc ${OUTDIR} +# remove debug files which will be stripped below +sed -i.bak -e '/lib_debug\\debug.[ch]/d' ${OUTDIR}/Workspace_msvc/lib_debug.vcxproj +sed -i.bak -e '/lib_debug\\sba_debug.[ch]/d' ${OUTDIR}/Workspace_msvc/lib_debug.vcxproj +sed -i.bak -e '/lib_debug\\snr.c/d' ${OUTDIR}/Workspace_msvc/lib_debug.vcxproj +rm -f ${OUTDIR}/Workspace_msvc/lib_debug.vcxproj.bak +rm -f ${OUTDIR}/lib_util/tsm_scale_file_reader.[ch] +sed -i.bak -e "/lib_util\\\tsm_scale_file_reader.[ch]/d" ${OUTDIR}/Workspace_msvc/lib_util.vcxproj + +# readme +cp ${ROOT}/readme.txt ${OUTDIR} +recode lat1..ibmpc ${OUTDIR}/readme.txt # unix2dos ... + +# readme_split_rendering +cp ${ROOT}/readme_split_rendering.txt ${OUTDIR} +recode lat1..ibmpc ${OUTDIR}/readme_split_rendering.txt # unix2dos ... + +# LICENSE.md +cp ${ROOT}/LICENSE.md ${OUTDIR} +recode lat1..ibmpc ${OUTDIR}/LICENSE.md # unix2dos ... + +# include .clang_format, since this is a VS dependency +cp ${ROOT}/.clang-format ${OUTDIR} + +# enable split rendering againg by default +# in case we strip it later, it will be explicitly disabled again belo +sed -i.bak -e "s/\/\*\ *\(#define\ *SPLIT_REND_WITH_HEAD_ROT\ *\)\*\//\1/g" ${OUTDIR}/lib_com/options.h + + +########################## +# # +# Strip Split Rendering # +# # +########################## + +if [ $STRIP_SPLITREND -ne 0 ]; then + + echo "Stripping Split Rendering" + + # remove complete lc3plus folder + rm -R $OUTDIR/lc3plus + + # remove other split rendering files + declare -a sr_files_rend=( + "lib_rend/ivas_lcld_decoder.c" + "lib_rend/ivas_lcld_encoder.c" + "lib_rend/ivas_MSPred.c" + "lib_rend/ivas_NoiseGen.c" + "lib_rend/ivas_PerceptualModel.c" + "lib_rend/ivas_PredDecoder.c" + "lib_rend/ivas_PredEncoder.c" + "lib_rend/ivas_RMSEnvGrouping.c" + "lib_rend/ivas_cldfb_codec_bitstream.c" + "lib_rend/ivas_cldfb_codec_bitstream.h" + "lib_rend/ivas_lc3plus_common.c" + "lib_rend/ivas_lc3plus_common.h" + "lib_rend/ivas_lc3plus_dec.c" + "lib_rend/ivas_lc3plus_dec.h" + "lib_rend/ivas_lc3plus_enc.c" + "lib_rend/ivas_lc3plus_enc.h" + "lib_rend/ivas_lcld_rom_tables.c" + "lib_rend/ivas_lcld_rom_tables.h" + "lib_rend/ivas_splitRend_lcld_dec.c" + "lib_rend/ivas_splitRend_lcld_enc.c" + "lib_rend/ivas_splitRendererPLC.c" + "lib_rend/ivas_splitRendererPost.c" + "lib_rend/ivas_splitRendererPre.c" + "lib_rend/ivas_splitRenderer_utils.c" + ) + + for file in ${sr_files_rend[@]}; do + rm $OUTDIR/$file + file_windows=${file//\//'\\'} + sed -i.bak -e "/${file_windows}/d" ${OUTDIR}/Workspace_msvc/lib_rend.vcxproj + done + + declare -a sr_files_util=( + "lib_util/split_rend_bfi_file_reader.c" + "lib_util/split_rend_bfi_file_reader.h" + "lib_util/split_render_file_read_write.c" + "lib_util/split_render_file_read_write.h" + ) + + for file in ${sr_files_util[@]}; do + rm $OUTDIR/$file + file_windows=${file//\//'\\'} + sed -i.bak -e "/${file_windows}/d" ${OUTDIR}/Workspace_msvc/lib_util.vcxproj + done + + + # strip macros + declare -a sr_macros=( + "SPLIT_REND_WITH_HEAD_ROT" + "SPLIT_REND_PRED_QUANT_63_PNTS" + "SPLIT_REND_WITH_HEAD_ROT_PARAMBIN" + "FIX_658_SPLIT_REND_MASA" + "FIX_658_SPLIT_REND_MASA" + "OSBA_SPLIT_RENDERING" + ) + + if coan_exists; then + + for macro in ${sr_macros[@]}; do + coan source --replace --no-transients -K -U${macro} $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc] + coan source --replace --no-transients -K -U${macro} $OUTDIR/apps/*.[hc] + sed -i.bak "/#define\ *$macro/d" $OUTDIR/lib_com/options.h + done + + else + + echo "Coan required in path; Aborting. Available at https://coan2.sourceforge.net/" + exit -1 + + fi + + # patch Makefile + patch ${OUTDIR}/Makefile < ${ROOT}/scripts/makefile_noSR.patch + + # delete project file + rm ${OUTDIR}/Workspace_msvc/LC3plus.vcxproj + + # patch project/solution files + sed -i.bak "/LC3plus.vcxproj/,+1d" ${OUTDIR}/Workspace_msvc/Workspace_msvc.sln + find ${OUTDIR}/Workspace_msvc -name "*.vcxproj" -exec sed -i.bak -e "s/..\\lc3plus\;//g" \{\} \; + sed -i.bak "/LC3plus.vcxproj/,+3d" ${OUTDIR}/Workspace_msvc/lib_rend.vcxproj # patch dependency + + # delete readme_split_rendering + rm ${OUTDIR}/readme_split_rendering.txt + + # clean-up *.bak-files + find $OUTDIR -name "*.bak" -exec rm \{\} \; + +else + + # patch Makefile so that split rendering sources are built by default + patch ${OUTDIR}/Makefile < ${ROOT}/scripts/makefile_SR.patch + +fi + + +########################## +# # +# Stripping # +# # +########################## + +# Switches in Start/End DEVELOPMENT switches +tmpfile=`mktemp` +rm -f $tmpfile +touch $tmpfile + +cat $OUTDIR/lib_com/options.h | sed -n '/Start BE DEVELOPMENT switches/,/End BE DEVELOPMENT switches/p' >> $tmpfile + +if coan_exists; then + + COAN_LIST=coan_delivery.txt + rm -f $COAN_LIST + touch $COAN_LIST + + ${ROOT}/scripts/parse_options_h.sh -c $tmpfile >> $COAN_LIST + + # sanity check, whether any CR_ switches were parsed + numCRs=`grep -c CR_ $COAN_LIST` + if [ $numCRs -lt 0 ]; then + echo "Warning: CR_-switches within DEVELOPMENT section!" + fi + + # apply coan + coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc] + coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/apps/*.[hc] + + # remove rejected switches from options.h + while read line + do + macro=`echo $line | grep '\-U' | sed -e "s/\-U//g"` + if [[ ! $macro =~ [^[:space:]] ]] ; then + continue + fi + sed -i.bak "/#define\ *$macro/d" $OUTDIR/lib_com/options.h + done < $COAN_LIST + + rm -f $COAN_LIST + +else + + echo "Coan required in path; Aborting. Available at https://coan2.sourceforge.net/" + exit -1 + +fi + +rm -f $tmpfile + + +# Manual Stripping of Debugging switches +if coan_exists; then + + COAN_LIST=coan_delivery.txt + rm -f $COAN_LIST + touch $COAN_LIST + + echo "-DRELEASE" >> $COAN_LIST + echo "-UDEBUGGING" >> $COAN_LIST + echo "-UDEBUG_MODE_INFO" >> $COAN_LIST + echo "-UDEBUG_MODE_ACELP" >> $COAN_LIST + echo "-UDEBUG_MODE_TCX" >> $COAN_LIST + echo "-UDEBUG_MODE_DFT" >> $COAN_LIST + echo "-UDEBUG_MODE_TD" >> $COAN_LIST + echo "-UDEBUG_MODE_DIRAC" >> $COAN_LIST + echo "-UDEBUG_MODE_MDCT" >> $COAN_LIST + echo "-UDEBUG_MODE_PARAM_MC" >> $COAN_LIST + echo "-UDEBUG_MODE_PARAM_ISM" >> $COAN_LIST + echo "-UDEBUG_MODE_INFO_TWEAK" >> $COAN_LIST + echo "-UDEBUG_MODE_INFO_PLC" >> $COAN_LIST + echo "-UDEBUG_MODE_INFO_ALLRAD" >> $COAN_LIST + echo "-UDEBUG_MODE_LFE" >> $COAN_LIST + echo "-UDEBUG_PLOT_BITS" >> $COAN_LIST + echo "-UENABLE_BITRATE_VERIFICATION" >> $COAN_LIST + echo "-UDEBUG_PLOT" >> $COAN_LIST + echo "-UALLOW_BYTE_EP" >> $COAN_LIST + echo "-UWRAP_AS_EIDXOR" >> $COAN_LIST + echo "-UDEBUG_FORCE_MDCT_STEREO_MODE" >> $COAN_LIST + echo "-UDEBUG_STEREO_DFT_NOCORE" >> $COAN_LIST + echo "-UDEBUG_STEREO_DFT_NOSTEREO" >> $COAN_LIST + echo "-UDEBUG_STEREO_DFT_NOQRES" >> $COAN_LIST + echo "-UDEBUG_STEREO_DFT_OUTRESPRED" >> $COAN_LIST + echo "-UDBG_STEREO_ICBWE2_TBE2K8" >> $COAN_LIST + echo "-UDEBUG_DISABLE_DIRAC_DELAY_COMP" >> $COAN_LIST + echo "-UDEBUG_BS_READ_WRITE" >> $COAN_LIST + echo "-UDEBUG_MODE_DIRAC_NOCORE" >> $COAN_LIST + echo "-UDEBUG_MODE_QMETADATA" >> $COAN_LIST + echo "-UDEBUG_FORCE_MCT_CP" >> $COAN_LIST + echo "-UDEBUG_SINGLE_CODE_OMNI" >> $COAN_LIST + echo "-UDEBUG_NO_TONAL_PLC" >> $COAN_LIST + echo "-UDEBUG_NO_TD_TCX_PLC" >> $COAN_LIST + echo "-UDEBUG_FORCE_TD_TCX_CONCEALMENT" >> $COAN_LIST + echo "-UDEBUG_PLC_INFO" >> $COAN_LIST + echo "-UDEBUG_EFAP_POLY_TOFILE" >> $COAN_LIST + echo "-UTDREND_HRTF_TABLE_METHODS" >> $COAN_LIST + echo "-UTDREND_STANDALONE" >> $COAN_LIST + echo "-UDEBUG_SBA" >> $COAN_LIST + echo "-UDEBUG_LBR_SBA" >> $COAN_LIST + echo "-UDEBUG_SBA_AUDIO_DUMP" >> $COAN_LIST + echo "-UDEBUG_SBA_MD_DUMP" >> $COAN_LIST + echo "-UDEBUG_SPAR_MD_TARGET_TUNING" >> $COAN_LIST + echo "-UDEBUG_SPAR_BYPASS_EVS_CODEC" >> $COAN_LIST + echo "-UDEBUG_SPAR_WRITE_OUT_COV" >> $COAN_LIST + echo "-UDEBUG_SPAR_DIRAC_WRITE_OUT_PRED_PAR" >> $COAN_LIST + echo "-UDEBUG_AGC" >> $COAN_LIST + echo "-USPAR_HOA_DBG" >> $COAN_LIST + echo "-UDEBUG_OSBA" >> $COAN_LIST + echo "-UDEBUG_BINAURAL_FILTER_DESIGN" >> $COAN_LIST + echo "-UDEBUG_AGC_ENCODER_CMD_OPTION" >> $COAN_LIST + echo "-UDEBUG_JBM_CMD_OPTION" >> $COAN_LIST + echo "-UVARIABLE_SPEED_DECODING" >> $COAN_LIST + echo "-UDBG_WAV_WRITER" >> $COAN_LIST + echo "-USPLIT_REND_WITH_HEAD_ROT_DEBUG" >> $COAN_LIST + echo "-USPLIT_POSE_CORRECTION_DEBUG" >> $COAN_LIST + echo "-USPLIT_MD_CODING_DEBUG" >> $COAN_LIST + + # apply coan + coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/lib_{com,dec,enc,util,rend}/*.[hc] + coan source --replace --no-transients -K --file $COAN_LIST $OUTDIR/apps/*.[hc] + + # remove rejected switches from options.h + while read line + do + macro=`echo $line | grep '\-U' | sed -e "s/\-U//g"` + if [[ ! $macro =~ [^[:space:]] ]] ; then + continue + fi + sed -i.bak "/#define\ *$macro/d" $OUTDIR/lib_com/options.h + done < $COAN_LIST + + rm -f $COAN_LIST + +else + + echo "Coan required in path; Aborting. Available at https://coan2.sourceforge.net/" + exit -1 + +fi + + + +########################## +# # +# CR Switches for 1st # +# delivery # +# # +########################## + +# rename switches from CR_ to NONBE_ +tmpfile=`mktemp` +rm -f $tmpfile +touch $tmpfile + +cat $OUTDIR/lib_com/options.h | sed -n '/Start NON-BE CR switches/,/End NON-BE CR switches/p' >> $tmpfile +sed -i.bak "s/^-D//g" $tmpfile + +nonbe_list=nonbe_list_delivery.txt +rm -f $nonbe_list +touch $nonbe_list + +${ROOT}/scripts/parse_options_h.sh -c $tmpfile >> $nonbe_list + +# rename switches +while read line +do + macro=`echo $line | grep '\-D' | sed -e "s/\-D//g"` + if [[ ! $macro =~ [^[:space:]] ]] ; then + continue + fi + macro_new=${macro/CR_/NONBE_} + find $OUTDIR -name "*.[ch]" -exec sed -i.bak -e "s/${macro}/${macro_new}/g" \{\} \; +done < $nonbe_list + +rm -f $nonbe_list +rm -f $tmpfile + +sed -i.bak -e "s/NON-BE CR switches/NON-BE switches/g" $OUTDIR/lib_com/options.h +sed -i.bak -e "/all switches in this category should start with \"CR_\"/d" $OUTDIR/lib_com/options.h + + + +########################## +# # +# Patch code # +# # +########################## + +# remove more debug-leftovers from code +find $OUTDIR -name "*.[ch]" -exec sed -i.bak "/#include\ *\"debug.h\"/d" \{\} \; + + +# TODO: needs to be reviewed! +if [ ]; then # START skip block + +# remove unwanted comments +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.*TODO.*/?\*/$##sg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*\s*Variable not present in the floating point.*/?\*/##sg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* ERI.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* FHG.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* HUA.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* HW.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* NOK.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* NTT.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* PAN.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* VA.*/?\*/$##sg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* ZTE.*/?\*/$##isg' \{\} \; +find $OUTDIR/lib_com $OUTDIR/lib_dec $OUTDIR/lib_enc -name "*.[ch]" -exec perl -i.bak -pe 's#/\*.* QC.*/?\*/$##sg' \{\} \; + +# use ITU-T STL2009 instead of FhG WMOPS counters +#mv $OUTDIR/basic_op/count.c.stl $OUTDIR/basic_op/count.c +#mv $OUTDIR/basic_op/count.h.stl $OUTDIR/basic_op/count.h + +fi # END skip block + + +# remove comments after switches +sed -i.bak "/keep as part of options.h/d" $OUTDIR/lib_com/options.h +sed -i.bak "s/\(\/\*\ #define\ *\CR[a-zA-Z0-9_]*\ *\*\/\)\(.*\)/\1/g" $OUTDIR/lib_com/options.h +sed -i.bak "s/\(\#define\ *\CR[a-zA-Z0-9_]*\ *\)\(\/\*.*\)/\1/g" $OUTDIR/lib_com/options.h +sed -i.bak "/Start BE DEVELOPMENT switches/,/End BE DEVELOPMENT switches/d" $OUTDIR/lib_com/options.h + +# clean-up *.bak-files +find $OUTDIR -name "*.bak" -exec rm \{\} \; +find $OUTDIR -name "coan_*" -exec rm \{\} \; + + +########################## +# # +# Zip # +# # +########################## + +zip -r9 IVAS_Float_C__rev${REV}_${DATE}.zip $OUTDIR + + +echo done + +echo now build the Windows executable manually and insert it to the zip with the following commands: +echo zip -r9 IVAS_Float_C__rev${REV}_${DATE}.zip $OUTDIR c-code/IVAS_cod.exe c-code/IVAS_dec.exe c-code/IVAS_rend.exe + + diff --git a/scripts/prepare_instrumentation.sh b/scripts/prepare_instrumentation.sh index 70d69874968d26e078a7ce5b65b1e2c5ec5b5bee..1636d7802a9d7e1d3d4375c46253c02134bfc3ee 100755 --- a/scripts/prepare_instrumentation.sh +++ b/scripts/prepare_instrumentation.sh @@ -30,6 +30,24 @@ # the United Nations Convention on Contracts on the International Sales of Goods. # +function usage { + echo + echo "Usage:" + echo " prepare_instrumentation.sh [MODE]" + echo + echo " MODE - sr_off (default) or sr_on" + exit +} + +if [ -z "$1" ] || [ "$1" == "sr_off" ]; then + INCLUDE_SPLIT=0 +elif [ "$1" == "sr_on" ]; then + INCLUDE_SPLIT=1 +else + usage +fi + + system=`uname -s` if [[ ($system == "Linux") && (`uname -a` =~ (microsoft|Microsoft|wsl|WSL) ) ]]; then system="Linux" @@ -63,9 +81,14 @@ mkdir $targetdir # copy files from source-dir cp -R ../lib_* $targetdir +cp -R ../lc3plus $targetdir cp -R ../apps $targetdir cp -R ../Makefile $targetdir +cp -R ../CMakeLists.txt $targetdir cp -R ../Workspace_msvc $targetdir +if [ $INCLUDE_SPLIT -eq 0 ]; then + strip_split_rendering.sh $targetdir +fi # back up #ifdef-list rm -f $ifdef_list @@ -103,8 +126,10 @@ find $targetdir -name "*.[ch]" -exec sed -i.bak -e "s/\(0x[0-9a-fA-F]*\)UL/\(\(u # run wmc_tool "tools/$system/wmc_tool" -m "$targetdir/apps/encoder.c" "$targetdir/lib_enc/*.c" "$targetdir/lib_com/*.c" >> /dev/null -"tools/$system/wmc_tool" -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" >> /dev/null -"tools/$system/wmc_tool" -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" >> /dev/null +"tools/$system/wmc_tool" -m "$targetdir/apps/decoder.c" "$targetdir/lib_dec/*.c" "$targetdir/lib_rend/*.c" >> /dev/null +if [ $INCLUDE_SPLIT -eq 1 ]; then + "tools/$system/wmc_tool" -m "$targetdir/apps/renderer.c" "$targetdir/lib_rend/*.c" "$targetdir/lc3plus/*.c" "$targetdir/lc3plus/fft/*.c" >> /dev/null +fi # automatically enable #define WMOPS in options.h sed -i.bak -e "s/\/\*[[:space:]]*\(#define[[:space:]]*WMOPS\)[[:space:]]*\*\//\1/g" $targetdir/lib_com/options.h diff --git a/scripts/pyaudio3dtools/constants.py b/scripts/pyaudio3dtools/constants.py index 92fd5a709e2ec7db67b8bdf7afbeff7cd2ebd56f..64da6ae9e044127369aaf3aeeadb4954402ba883 100644 --- a/scripts/pyaudio3dtools/constants.py +++ b/scripts/pyaudio3dtools/constants.py @@ -1,24 +1,28 @@ #!/usr/bin/env python3 """ - (C) 2022 Baseline Development Group with portions copyright Dolby International AB, Ericsson AB, + (C) 2022-2023 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 Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation. All Rights Reserved. + 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 Baseline Development Group consisting of Dolby International AB, Ericsson AB, + 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 Corporation, Qualcomm Technologies, Inc., and VoiceAge Corporation retain full ownership - rights in their respective contributions in the software. No license of any kind, including but not - limited to patent license, of any foregoing parties is hereby granted by implication, estoppel or - otherwise. + 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/or fitness for a particular purpose are hereby disclaimed and excluded. + 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 diff --git a/scripts/reverb/acoustic_environment_hospital_patientroom.cfg b/scripts/reverb/acoustic_environment_hospital_patientroom.cfg new file mode 100644 index 0000000000000000000000000000000000000000..cc7747cd1baabb7ac5cd1877d5da22eb2b458b04 --- /dev/null +++ b/scripts/reverb/acoustic_environment_hospital_patientroom.cfg @@ -0,0 +1,32 @@ +[roomAcoustics] +frequencyGridCount = 1; +acousticEnvironmentCount = 1; + +[frequencyGrid:0] +method = individualFrequencies; +frequencies = [ + 20.0, 25.0, 31.5, 40.0, + 50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0, + 12500.0, 16000.0, 20000.0]; + +[acousticEnvironment:0] +id = 0; +frequencyGridIndex = 0; +predelay = 0.08163; +rt60 = [ + 0.81275, 0.61888, 0.45111, 0.34672, 0.46683, 0.53987, 0.61874, 0.70291, 0.66657, 0.73037, + 0.75090, 0.72470, 0.75486, 0.75857, 0.76844, 0.74999, 0.77622, 0.78227, 0.77441, 0.74688, + 0.73521, 0.73782, 0.71928, 0.71708, 0.71465, 0.60592, 0.52031, 0.51768, 0.52102, 0.37956, + 0.30786]; + +dsr = [ + 0.00019952621, 0.00019952621, 7.9432844e-05, 5.0118702e-05, 7.943284e-06, 6.3095763e-06, 6.3095763e-06, 7.943284e-06, 1e-05, 1e-05, + 7.943284e-06, 1e-05, 1e-05, 1e-05, 7.943284e-06, 1e-05, 1e-05, 7.943284e-06, 7.943284e-06, 6.3095763e-06, + 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 3.1622776e-06, 3.1622776e-06, 3.1622776e-06, 6.3095763e-07, 3.1622776e-07, + 3.1622776e-07]; + diff --git a/scripts/reverb/acoustic_environment_recreation.cfg b/scripts/reverb/acoustic_environment_recreation.cfg new file mode 100644 index 0000000000000000000000000000000000000000..ec1ee14b7ac1953554724e1c10665c62de963645 --- /dev/null +++ b/scripts/reverb/acoustic_environment_recreation.cfg @@ -0,0 +1,32 @@ +[roomAcoustics] +frequencyGridCount = 1; +acousticEnvironmentCount = 1; + +[frequencyGrid:0] +nBands = 31; +method = individualFrequencies; +frequencies = [ + 20.0, 25.0, 31.5, 40.0, + 50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0, + 12500.0, 16000.0, 20000.0]; + +[acousticEnvironment:0] +id = 0; +frequencyGridIndex = 0; +predelay = 0.43031; +rt60 = [ + 4.51916, 4.89553, 4.83276, 5.00198, 5.34468, 5.76026, 6.36818, 6.95503, 7.27557, 7.62559, + 8.08892, 8.16002, 8.13900, 8.17919, 8.16280, 8.46226, 9.61806, 9.93048, 9.81353, 8.59340, + 8.38885, 8.36823, 6.51845, 3.76089, 3.75374, 3.57451, 1.28724, 1.22174, 1.22448, 1.71631, + 2.14343]; + +dsr = [ + 1e-06, 7.943284e-07, 1e-06, 1e-06, 1.5848925e-06, 1.9952631e-06, 3.1622776e-06, 3.9810707e-06, 6.3095763e-06, 7.943284e-06, + 1e-05, 7.943284e-06, 7.943284e-06, 7.943284e-06, 7.943284e-06, 7.943284e-06, 5.01187e-06, 5.01187e-06, 3.9810707e-06, 3.1622776e-06, + 3.1622776e-06, 2.511887e-06, 7.943284e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-08, 1.2589251e-08, 1.2589251e-08, 1.2589265e-09, 1.2589266e-11, + 3.981075e-12]; diff --git a/scripts/reverb/acoustic_environment_renderer.cfg b/scripts/reverb/acoustic_environment_renderer.cfg new file mode 100644 index 0000000000000000000000000000000000000000..fffa8d0f2642ddb561d2d056040ecfa8718c27d7 --- /dev/null +++ b/scripts/reverb/acoustic_environment_renderer.cfg @@ -0,0 +1,37 @@ +[roomAcoustics] +frequencyGridCount = 1; +acousticEnvironmentCount = 1; + +[frequencyGrid:0] +method = individualFrequencies; +frequencies = [ + 20.0, 25.0, 31.5, 40.0, + 50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0, + 12500.0, 16000.0, 20000.0]; + +[acousticEnvironment:0] +id = 0; +frequencyGridIndex = 0; +predelay = 0.1; +rt60 = [ + 1.3622, 1.4486, 1.3168, 1.5787, + 1.4766, 1.3954, 1.2889, 1.3462, + 1.0759, 1.0401, 1.0970, 1.0850, + 1.0910, 1.0404, 1.0499, 1.0699, + 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, + 1.0421, 0.97822, 0.80487, 0.75944, + 0.71945, 0.61682, 0.60031]; + +dsr = [ + 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08]; + + diff --git a/scripts/reverb/acoustic_environment_renderer_directivity.cfg b/scripts/reverb/acoustic_environment_renderer_directivity.cfg new file mode 100644 index 0000000000000000000000000000000000000000..1c9db1e9e4316d7bb46dca327a01370ef1716f74 --- /dev/null +++ b/scripts/reverb/acoustic_environment_renderer_directivity.cfg @@ -0,0 +1,41 @@ +[roomAcoustics] +frequencyGridCount = 1; +acousticEnvironmentCount = 1; + +[frequencyGrid:0] +method = individualFrequencies; +frequencies = [ + 20.0, 25.0, 31.5, 40.0, + 50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0, + 12500.0, 16000.0, 20000.0]; + +[acousticEnvironment:0] +id = 0; +frequencyGridIndex = 0; +predelay = 0.1; +rt60 = [ + 1.3622, 1.4486, 1.3168, 1.5787, + 1.4766, 1.3954, 1.2889, 1.3462, + 1.0759, 1.0401, 1.0970, 1.0850, + 1.0910, 1.0404, 1.0499, 1.0699, + 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, + 1.0421, 0.97822, 0.80487, 0.75944, + 0.71945, 0.61682, 0.60031]; + +dsr = [ + 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08]; + +[directivitySetting] +directivityCount = 1; + +[directivityPattern:0] +directivity = [0.0, 360.0, 0.2512] diff --git a/scripts/reverb/generate_acoustic_environments_metadata.py b/scripts/reverb/generate_acoustic_environments_metadata.py new file mode 100644 index 0000000000000000000000000000000000000000..5cd6195d03b8c46a9a744de3a443b84ad28f3876 --- /dev/null +++ b/scripts/reverb/generate_acoustic_environments_metadata.py @@ -0,0 +1,965 @@ +#!/usr/bin/env python3 + +""" + (C) 2022-2023 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. +""" + +# +# Generate binary render configuration output files for testing purposes. +# The binary code generation is based on the MPEG-I audio standard, +# which defines functions to decode raw bitstream into internal parameters. +# + + +from bitarray import bitarray +import math +from enum import Enum +import numpy as np + + +# Set to True to print quantized values +print_quantized = False + + +max_quantization_error = { + 'duration' : 0, + 'frequency' : 0, + 'dsr' : 0, + 'distance' : 0, + 'absorption' : 0 +} + + +def update_quantization_error(name, quantized_value, value): + if value == 0: + if quantized_value != 0: + print(' {}: value = 0, quantized value = {}'.format(name, quantized_value)) + else: + max_quantization_error[name] = max(abs(quantized_value - value) / value, max_quantization_error[name]) + if print_quantized: + print(' {}: {}'.format(name, quantized_value)) + + +def get_id_code(id): + code = format(id % 128, '07b') + '0' + id //= 128 + while id > 0: + code = format(id % 128, '07b') + '1' + code + id = id // 128 + return code + + +def get_count_or_index_code(n): + # 0, 1, ... 63 + countOrIndexLoCodes = [ + '0111', '100', '01100', '01101', '01010', '01011', '01000', '01001', '001111', '001110', + '001101', '001100', '001011', '001010', '001001', '001000', '000111', '000110', '000101', '000100', + '000011', '000010', '000001', '000000', '111111', '111110', '111101', '111100', '111011', '111010', + '111001', '111000', '1101111', '1101110', '1101101', '1101100', '1101011', '1101010', '1101001', '1101000', + '1100111', '1100110', '1100101', '1100100', '1100011', '1100010', '1100001', '1100000', '1011111', '1011110', + '1011101', '1011100', '1011011', '1011010', '1011001', '1011000', '1010111', '1010110', '1010101', '1010100', + '1010011', '1010010', '1010001', '1010000'] + + # 1, 2, ... 15 + countOrIndexHiCode = [ + '001', '000', '110', '101', '100', '0111', '0101', '1111', '1110', '01101', + '01001', '01000', '011001', '0110001', '0110000'] + + assert 0 <= n < 16 * 64 + code = countOrIndexLoCodes[n % 64] + if n < 64: + code += '0' + else: + code += '1' + countOrIndexHiCode[n // 64 - 1] + return code + + +def get_duration_code(duration): + # 1, 2, ... 30 + secondsCode = [ + '0011', '0001', '0000', '1111', '1101', '1100', '1011', '1001', '1000', '01110', + '01101', '01100', '01011', '01001', '01000', '00101', '11101', '11100', '10101', '011111', + '011110', '010101', '001001', '001000', '101001', '0101001', '0101000', '1010001', '10100001', '10100000' ] + + # 0, 0.1, ... 1.0 + deciSecondsCode = [ + '110', '100', '101', '0110', '0111', '111', '0100', '0101', '0010', '0011', '000' ] + + # 0, 1, ..., 99 + millisecondsCode = [ + '1111010', '1111011', '1111000', '1111001', '1111110', '1111111', '1111100', '1111101', '1110010', '1110011', + '11001', '1110000', '1110001', '1110110', '1110111', '1110100', '1110101', '0101010', '0101011', '0101000', + '10010', '0101001', '0101110', '0101111', '0101100', '0101101', '0100010', '0100011', '0100000', '0100001', + '10011', '0100110', '0100111', '0100100', '0100101', '0111010', '0111011', '0111000', '0111001', '0111110', + '10000', '0111111', '0111100', '0111101', '0110010', '0110011', '0110000', '0110001', '0110110', '0110111', + '10001', '0110100', '0110101', '0001010', '0001011', '0001000', '0001001', '0001110', '0001111', '0001100', + '10110', '0001101', '0000010', '0000011', '0000000', '0000001', '0000110', '0000111', '0000100', '0000101', + '10111', '0011010', '0011011', '0011000', '0011001', '0011110', '0011111', '0011100', '0011101', '0010010', + '10100', '0010011', '0010000', '0010001', '0010110', '0010111', '0010100', '0010101', '1101010', '1101011', + '10101', '1101000', '1101001', '1101110', '1101111', '1101100', '1101101', '1100010', '1100011', '110000' ] + + # 10, 20, ... 990 + microsecondsCode = [ + '110111100', '10010', '110111101', '10011', '1101111110', '10000', '1101111111', '10001', '1101111100', '10110', + '1101111101', '10111', '110110010', '10100', '110110011', '10101', '110110000', '001010', '110110001', '001011', + '110110110', '001000', '110110111', '001001', '110110100', '001110', '110110101', '001111', '110011010', '001100', + '110011011', '001101', '110011000', '000010', '110011001', '000011', '110011110', '000000', '110011111', '000001', + '110011100', '000110', '110011101', '000111', '110010010', '000100', '110010011', '000101', '110010000', '011010', + '110010001', '011011', '110010110', '011000', '110010111', '011001', '110010100', '011110', '110010101', '011111', + '110101010', '011100', '110101011', '011101', '110101000', '010010', '110101001', '010011', '110101110', '010000', + '110101111', '010001', '110101100', '010110', '110101101', '010111', '110100010', '010100', '110100011', '010101', + '110100000', '111010', '110100001', '111011', '110100110', '111000', '110100111', '111001', '110100100', '111110', + '110100101', '111111', '110111010', '111100', '110111011', '111101', '110111000', '11000', '110111001' ] + + duration_dus = round(np.float32(duration) * np.float32(100000)) # [deca us] + + quantized_duration = round(np.float32(duration), 5) + update_quantization_error('duration', quantized_duration, duration) + + dus = duration_dus # [deca us] + s = dus // 100000 # 0, 1, ... 30 [s] + ms = (dus % 100000) // 100 # 0, 1, ... 999 [ms] + dus = (dus % 100) # 0, 1, ... 99 [deca us] + ds = ms // 100 # 0, 1, ... 9 [deci s] + ms = ms % 100 # 0, 1, ... 99 [ms] + if s >= 1 and ds == 0: + s -= 1 + ds = 10 # 0, 1, ... 10 [deci s] + + assert 0 <= s <= 30 + assert 0 <= ds <= 10 + assert 0 <= ms <= 99 + assert 0 <= dus <= 99 + assert duration_dus == s * 100000 + ds * 10000 + ms * 100 + dus + + code = deciSecondsCode[ds] + if ms > 0 or dus > 0: + code += '1' + millisecondsCode[ms] + if dus > 0: + code += '1' + microsecondsCode[dus - 1] + else: + code += '0' + else: + code += '0' + if s > 0: + # long range mode not implemented + code += '1' + secondsCode[s - 1] + else: + code += '0' + + return code + + +def get_frequency_code(frequency): + frequencyCode = { + 16.0 : '100011', 20.0 : '001110', 25.0 : '001111', 31.5 : '1001', 40.0 : '001100', + 50.0 : '001101', 63.0 : '0000', 80.0 : '011010', 100.0 : '011011', 125.0 : '0001', + 160.0 : '011000', 200.0 : '011001', 250.0 : '1110', 315.0 : '011110', 400.0 : '011111', + 500.0 : '1111', 630.0 : '011100', 800.0 : '011101', 1000.0 : '1100', 1250.0 : '010010', + 1600.0 : '010011', 2000.0 : '1101', 2500.0 : '010000', 3150.0 : '010001', 4000.0 : '1010', + 5000.0 : '010110', 6300.0 : '010111', 8000.0 : '1011', 10000.0: '010100', 12500.0: '010101', + 16000.0: '0010', 20000.0: '10000', 25000.0: '10001010', 31500.0: '10001011', 40000.0: '1000100', } + + assert 16 <= frequency <= 40000 + if frequency in frequencyCode.keys(): + quantized_frequency = frequency + code = frequencyCode[quantized_frequency] + '0' + else: + # exact frequency not found, use frequency refinement to approximate + f_low = max([k for k in frequencyCode.keys() if k < frequency]) + refinement = round(51 * math.log(frequency / f_low, 2)) - 1 + if 0 <= refinement <= 15: + quantized_frequency = f_low * 2 ** ((refinement + 1) / 51) + code = frequencyCode[f_low] + '1' + format(refinement, '04b') + else: + # choose next lower / higher frequency + f_high = min([k for k in frequencyCode.keys() if k > frequency]) + quantized_frequency = f_low if refinement < 0 else f_high + code = frequencyCode[quantized_frequency] + '0' + + update_quantization_error('frequency', quantized_frequency, frequency) + + return code + + +def get_frequency_hop_code(value): + index = -1 + tolerance = 1e-5 + hop_sizes = [2 ** (1/12), 2 ** (1/6), 2 ** (1/4), 2 ** (1/3), 2 ** (1/2), 2 ** (1), 2 ** (2)] + for idx, hop in enumerate(hop_sizes): + if math.isclose(value, hop, rel_tol = tolerance): + index = idx + break + assert 0 <= index <= 6 + return [ + '0010', # 2^(1/12) + '0011', # 2^(1/6) + '0000', # 2^(1/4) + '01', # 2^(1/3) + '0001', # 2^(1/2) + '11', # 2^1 + '10'][index] # 2^2 + + +def get_dsr_code(dsr): + # -150.0, -149.0, ... -10.0 + dsrCode = [ + '10001100', '10001101', '100011110', '100011111', '100011100', '100011101', '10000010', '10000011', '10000000', '10000001', + '10000110', '10000111', '10000100', '10000101', '011101010', '011101011', '011101000', '011101001', '011101110', '011101111', + '011101100', '011101101', '011100010', '011100011', '011100000', '011100001', '011100110', '011100111', '011100100', '011100101', + '011111010', '011111011', '011111000', '011111001', '011111110', '011111111', '011111100', '011111101', '011110010', '011110011', + '011110000', '011110001', '011110110', '011110111', '011110100', '011110101', '011001010', '011001011', '011001000', '011001001', + '011001110', '011001111', '011001100', '011001101', '011000010', '011000011', '011000000', '011000001', '011000110', '011000111', + '011000100', '011000101', '011011010', '011011011', '011011000', '011011001', '011011110', '011011111', '011011100', '011011101', + '010100', '010101', '100110', '100111', '100100', '100101', '111010', '111011', '111000', '111001', + '111110', '111111', '111100', '111101', '110010', '110011', '110000', '110001', '110110', '110111', + '110100', '110101', '001010', '001011', '001000', '001001', '001110', '001111', '001100', '001101', + '000010', '000011', '000000', '000001', '000110', '000111', '000100', '000101', '101010', '101011', + '101000', '101001', '101110', '101111', '101100', '101101', '010010', '010011', '010000', '010001', + '010110', '011010010', '011010011', '011010000', '011010001', '011010110', '011010111', '011010100', '011010101', '010111010', + '010111011', '010111000', '010111001', '010111110', '010111111', '010111100', '010111101', '10001010', '10001011', '10001000', + '10001001' ] + + d = math.log10(dsr) * 10 + d = round(d + 150) + assert 0 <= d <= 140 + + quantized_dsr = np.float32(np.power(np.float32(10), np.float32(d - 150) / np.float32(10))) # C decoder uses float precision math + update_quantization_error('dsr', quantized_dsr, dsr) + + return dsrCode[d] + +def usquant(x,qlow,delta,cbsize): + nbits = math.ceil(math.log2(cbsize)) # nextpow2 + index = max(0,min(cbsize-1, round( ( x - qlow ) / delta ))) + return format(index,'0'+ str(nbits) + 'b') + +def get_angle_code(angle): + assert 0 <= angle <= 360 + return usquant(angle, 0, 20, 19) + +def get_outer_attenuation_code(att): + assert 0 <= att <= 1 + return usquant(20 * math.log10(att), -90, 3, 31) + +class fgdMethod(Enum): + Individual_Frequencies = '00' + Start_Hop_Amount = '01' + Default_Banding = '10' + + +def get_default_grid_nr_bands(code): + assert 0 <= code <= 8 + return [10, 10, 31, 5, 6, 3, 41, 21, 25][code] + + +def get_distance_code(distance, isSmallScene): + # 0, 1, ... 99 + metersCode = [ + '111101', '110010', '110011', '110000', '110001', '110110', '110111', '110100', '110101', '001010', + '001011', '001000', '001001', '001110', '001111', '001100', '001101', '000010', '000011', '000000', + '000001', '000110', '000111', '000100', '000101', '011010', '011011', '011000', '011001', '011110', + '011111', '011100', '011101', '010010', '010011', '010000', '010001', '010110', '010111', '010100', + '010101', '101010', '101011', '101000', '101001', '101110', '101111', '101100', '101101', '10000', + '1000100', '1000101', '10001110', '10001111', '10001100', '10001101', '10011010', '10011011', '10011000', '10011001', + '10011110', '10011111', '10011100', '10011101', '10010010', '10010011', '10010000', '10010001', '10010110', '10010111', + '10010100', '10010101', '11101010', '11101011', '11101000', '11101001', '11101110', '11101111', '11101100', '11101101', + '11100010', '11100011', '11100000', '11100001', '11100110', '11100111', '11100100', '11100101', '11111010', '11111011', + '11111000', '11111001', '11111110', '11111111', '11111100', '11111101', '11110010', '11110011', '11110000', '11110001' ] + + # 0, 1, ... 9 + hectometersCode = [ + '000', '001', '110', '111', '100', '101', '0110', '0111', '0100', '0101' ] + + # 1, 2, ... 10 + kilometersCode = [ + '10', '011', '001', '000', '111', '0101', '0100', '1101', '11001', '11000' ] + + # 0, 1, ... 99 + centimetersCode = [ + '110010', '110011', '110000', '110001', '110110', '110111', '110100', '110101', '0101010', '0101011', + '0101000', '0101001', '0101110', '0101111', '0101100', '0101101', '0100010', '0100011', '0100000', '0100001', + '0100110', '0100111', '0100100', '0100101', '0111010', '0111011', '0111000', '0111001', '0111110', '0111111', + '0111100', '0111101', '0110010', '0110011', '0110000', '0110001', '0110110', '0110111', '0110100', '0110101', + '0001010', '0001011', '0001000', '0001001', '0001110', '0001111', '0001100', '0001101', '0000010', '0000011', + '0000000', '0000001', '0000110', '0000111', '0000100', '0000101', '0011010', '0011011', '0011000', '0011001', + '0011110', '0011111', '0011100', '0011101', '0010010', '0010011', '0010000', '0010001', '0010110', '0010111', + '0010100', '0010101', '101010', '101011', '101000', '101001', '101110', '101111', '101100', '101101', + '100010', '100011', '100000', '100001', '100110', '100111', '100100', '100101', '1111010', '1111011', + '1111000', '1111001', '1111110', '1111111', '1111100', '1111101', '111010', '111011', '111000', '111001' ] + + distance_cm = round(np.float32(distance) * np.float32(100)) # distance in cm + + quantized_distance = round(np.float32(distance), 2) + update_quantization_error('distance', quantized_distance, distance) + + cm = distance_cm # [cm] + m = cm // 100 # [m] + hm = m // 100 # [hm] + km = hm // 10 # [km] + + cm = (cm % 100) # 0, 1, ... 99 [cm] + m = (m % 100) # 0, 1, ... 99 [m] + hm = (hm % 10) # 0, 1, ... 9 [hm] + + assert 0 <= cm <= 99 + assert 0 <= m <= 99 + assert 0 <= hm <= 9 + assert distance_cm == km * 100000 + hm * 10000 + m * 100 + cm + + code = metersCode[m] + + if isSmallScene: + assert(hm == km == 0) + else: + # large scenes + if hm > 0 or km > 0: + # hectometers + code += '1' + hectometersCode[hm] + while km > 0: + # kilometers + code += '1' + kilometersCode[min(km, 10) - 1] + km = km - 10 + code += '0' + else: + code += '0' + + # centimeters + if cm > 0: + code += '1' + centimetersCode[cm] + else: + code += '0' + + return code + + +def get_absorption_code(absorption): + assert 0.0 <= absorption <= 1.0 + + index = round(absorption * 10.0) + + quantized_absorption = round(np.float32(absorption), 1) + update_quantization_error('absorption', quantized_absorption, absorption) + + return ['110', '100', '101', '0110', '0111', '111', '0100', '0101', '0010', '0011', '000' ][index] + + +# apply function to elements of list and concatenate the resulting strings +def concatenate(function, data): + return ''.join([function(d) for d in data]) + + +def test(): + # exercise encoding functions over their supported ranges + # save binary output to file so it can be compared against Matlab / C implementations + string = '' + + # count or index encoding + string += concatenate(get_count_or_index_code, [n for n in range(16 * 64)]) + + # duration encoding + string += concatenate(get_duration_code, [d / 1000 for d in range(30 * 1000)]) + string += concatenate(get_duration_code, [d / 10000 for d in range(30 * 1000)]) + string += concatenate(get_duration_code, [d / 100000 for d in range(30 * 1000)]) + + # frequency encoding + string += concatenate(get_frequency_code, + [16 , 20 , 25 , 31.5 , 40 , 50 , 63 , 80 , 100 , 125 , + 160 , 200 , 250 , 315 , 400 , 500 , 630 , 800 , 1000 , 1250 , + 1600 , 2000 , 2500 , 3150 , 4000 , 5000 , 6300 , 8000, 10000, 12500, + 16000, 20000, 25000, 31500, 40000]) + + # frequency hop encoding + string += concatenate(get_frequency_hop_code, [index for index in range(7)]) + + # DSR encoding + string += concatenate(get_dsr_code, [math.pow(10, dsr / 10) for dsr in range(-150, -10 + 1)]) + + # distance encoding + string += concatenate(lambda d : get_distance_code(d, False), [d for d in range(20 * 1000)]) + string += concatenate(lambda d : get_distance_code(d, False), [d / 10 for d in range(20 * 1000)]) + string += concatenate(lambda d : get_distance_code(d, False), [d / 100 for d in range(20 * 1000)]) + string += concatenate(lambda d : get_distance_code(d, True), [d / 100 for d in range(10 * 1000)]) + + # absorption encoding + string += concatenate(get_absorption_code, [a / 100 for a in range(100 + 1)]) + + data = bitarray(string, endian='big') + + file = open('test_python.dat', 'wb') + data.tofile(file) + file.close() + + +def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv (see IVAS acoustic environment payload syntax document) + + get_count_or_index_code(1) # fgdNrGrids + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(31) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, + 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, + 20000.0 ]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [ 1.3622, 1.4486, 1.3168, 1.5787, 1.4766, 1.3954, 1.2889, 1.3462, 1.0759, 1.0401, + 1.0970, 1.0850, 1.0910, 1.0404, 1.0499, 1.0699, 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, 1.0421, 0.97822, 0.80487, 0.75944, 0.71945, 0.61682, + 0.60031 ]) + + + concatenate(get_dsr_code, # DSR + [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08 ]) + + '0' # hasEarlyReflections + + '0' # hasDirectivity + , endian='big') + + file = open('rend_config_renderer.dat', 'wb') + data.tofile(file) + file.close() + +def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_no_listener_origin(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(2) # fgdNrGrids + # frequency grid #1 + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(1) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 10000.0 ]) + + # frequency grid #2 + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(31) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, + 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, + 20000.0 ]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [ 1.3622, 1.4486, 1.3168, 1.5787, 1.4766, 1.3954, 1.2889, 1.3462, 1.0759, 1.0401, + 1.0970, 1.0850, 1.0910, 1.0404, 1.0499, 1.0699, 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, 1.0421, 0.97822, 0.80487, 0.75944, 0.71945, 0.61682, + 0.60031 ]) + + + concatenate(get_dsr_code, # DSR + [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08 ]) + + + '1' # hasEarlyReflections + + concatenate(lambda d : get_distance_code(d, True), + [ 3.0, 4.0, 2.5 ]) # erSize (room dimensions) + + concatenate(get_absorption_code, # erAbsCoeff + [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ]) + + '0' # hasListenerOrigin + + '0' # lowComplexity + + + '0' # hasDirectivity + , endian='big') + + file = open('rend_config_renderer_cfg_plus_early_reflections_no_listener_origin.dat', 'wb') + data.tofile(file) + file.close() + + +def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(2) # fgdNrGrids + # frequency grid #1 + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(1) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 10000.0 ]) + + # frequency grid #2 + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(31) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, + 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, + 20000.0 ]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [ 1.3622, 1.4486, 1.3168, 1.5787, 1.4766, 1.3954, 1.2889, 1.3462, 1.0759, 1.0401, + 1.0970, 1.0850, 1.0910, 1.0404, 1.0499, 1.0699, 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, 1.0421, 0.97822, 0.80487, 0.75944, 0.71945, 0.61682, + 0.60031 ]) + + + concatenate(get_dsr_code, # DSR + [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08 ]) + + + '1' # hasEarlyReflections + + concatenate(lambda code : get_distance_code(code, True), + [ 3.0, 4.0, 2.5 ]) # erSize (room dimensions) + + concatenate(get_absorption_code, # erAbsCoeff + [ 0.8, 0.8, 0.8, 0.8, 0.2, 0.6 ]) + + + '1' # hasListenerOrigin + + '1' # isPositiveX + + '0' # isPositiveY + + concatenate(lambda d : get_distance_code(d, True), + [ 0.5, 0.5, 1.5 ]) # erListenerOrigin (x, y, z) + + '1' # lowComplexity + + '0' # hasDirectivity + , endian='big') + + file = open('rend_config_renderer_cfg_plus_early_reflections_listener_origin.dat', 'wb') + data.tofile(file) + file.close() + +def generate_reverb_payload_equivalent_to_rend_config_renderer_directivity_cfg(): + # based on rend_config_renderer_directivity.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(31) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, + 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, + 20000.0 ]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [ 1.3622, 1.4486, 1.3168, 1.5787, + 1.4766, 1.3954, 1.2889, 1.3462, + 1.0759, 1.0401, 1.0970, 1.0850, + 1.0910, 1.0404, 1.0499, 1.0699, + 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, + 1.0421, 0.97822, 0.80487, 0.75944, + 0.71945, 0.61682, 0.60031 ]) + + + concatenate(get_dsr_code, # DSR + [ 1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08 ]) + + + '0' # hasEarlyReflections + + '1' # hasDirectivity + + get_id_code(1) # Number of directivity patterns + + get_id_code(0) # directivity ID + + get_angle_code(0.0) + + get_angle_code(360.0) + + get_outer_attenuation_code(0.2512) + , endian='big') + + file = open('rend_config_renderer_directivity.dat', 'wb') + data.tofile(file) + file.close() + +def generate_reverb_payload_equivalent_to_config_directivity_cfg(): + # based on config_directivity_cfg.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '0' # hasAcEnv + + '1' # hasDirectivity + + get_id_code(1) # Number of directivity patterns + + get_id_code(0) # directivity ID + + get_angle_code(0.0) + + get_angle_code(360.0) + + get_outer_attenuation_code(0.2512) + , endian='big') + + file = open('config_directivity.dat', 'wb') + data.tofile(file) + file.close() + +def generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg(): + # based on config_hospital_patientroom.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(31) # fgdNrBands + + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, + 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, + 20000.0 ]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.08163) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [ 0.81275, 0.61888, 0.45111, 0.34672, 0.46683, 0.53987, 0.61874, 0.70291, 0.66657, 0.73037, + 0.75090, 0.72470, 0.75486, 0.75857, 0.76844, 0.74999, 0.77622, 0.78227, 0.77441, 0.74688, + 0.73521, 0.73782, 0.71928, 0.71708, 0.71465, 0.60592, 0.52031, 0.51768, 0.52102, 0.37956, + 0.30786 ]) + + + concatenate(get_dsr_code, # DSR + [ 0.00019952621, 0.00019952621, 7.9432844e-05, 5.0118702e-05, 7.943284e-06, 6.3095763e-06, 6.3095763e-06, 7.943284e-06, 1e-05, 1e-05, + 7.943284e-06, 1e-05, 1e-05, 1e-05, 7.943284e-06, 1e-05, 1e-05, 7.943284e-06, 7.943284e-06, 6.3095763e-06, + 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 6.3095763e-06, 3.1622776e-06, 3.1622776e-06, 3.1622776e-06, 6.3095763e-07, 3.1622776e-07, + 3.1622776e-07 ]) + + '0' # hasEarlyReflections + + '0' # hasDirectivity + , endian='big') + + file = open('rend_config_hospital_patientroom.dat', 'wb') + data.tofile(file) + file.close() + + +def generate_reverb_payload_equivalent_to_rend_config_recreation_cfg(): + # based on config_recreation.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(31) # fgdNrBands + + + + concatenate(get_frequency_code, # fgdCenterFreq + [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, + 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, + 20000.0 ]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.43031) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [ 4.51916, 4.89553, 4.83276, 5.00198, 5.34468, 5.76026, 6.36818, 6.95503, 7.27557, 7.62559, + 8.08892, 8.16002, 8.13900, 8.17919, 8.16280, 8.46226, 9.61806, 9.93048, 9.81353, 8.59340, + 8.38885, 8.36823, 6.51845, 3.76089, 3.75374, 3.57451, 1.28724, 1.22174, 1.22448, 1.71631, + 2.14343 ]) + + + concatenate(get_dsr_code, # DSR + [ 1e-06, 7.943284e-07, 1e-06, 1e-06, 1.5848925e-06, 1.9952631e-06, 3.1622776e-06, 3.9810707e-06, 6.3095763e-06, 7.943284e-06, + 1e-05, 7.943284e-06, 7.943284e-06, 7.943284e-06, 7.943284e-06, 7.943284e-06, 5.01187e-06, 5.01187e-06, 3.9810707e-06, 3.1622776e-06, + 3.1622776e-06, 2.511887e-06, 7.943284e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-08, 1.2589251e-08, 1.2589251e-08, 1.2589265e-09, 1.2589266e-11, + 3.981075e-12 ]) + + '0' # hasEarlyReflections + + '0' # hasDirectivity + , endian='big') + + file = open('rend_config_recreation.dat', 'wb') + data.tofile(file) + file.close() + + +def generate_reverb_payload_ER_v0(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + # frequency grid + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(24) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [0.87, 0.66, 0.47, 0.41, + 0.32, 0.37, 0.28, 0.30, + 0.29, 0.29, 0.28, 0.30, + 0.31, 0.34, 0.34, 0.34, + 0.34, 0.33, 0.32, 0.29, + 0.28, 0.24, 0.24, 0.2]) + + + concatenate(get_dsr_code, # DSR + [2.511887e-07, 1e-07, 1.2589251e-07, 1e-07, + 5.01187e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 6.309576e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 5.01187e-08, 1e-07, 7.9432844e-08, 6.309576e-08, + 7.9432844e-08, 5.01187e-08, 6.309576e-08, 3.9810708e-08, + 3.9810708e-08, 2.511887e-08, 1.9952632e-08, 1.2589251e-08]) + + + '1' # hasEarlyReflections + + concatenate(lambda code : get_distance_code(code, True), + [ 2.0, 2.0, 3.0 ]) # room dimensions + + concatenate(get_absorption_code, # absorptionCode + [ 0.2, 0.1, 0.1, 0.1, 0.3, 0.1 ]) + + '1' # listener origin flag + + '1' # isPositiveX + + '1' # isPositiveY + + concatenate(lambda d : get_distance_code(d, True), + [ 0.0, 0.0, 1.5 ]) # listener origin (x, y, z) + + '1' # lowComplexity + + '0' # directivity + , endian='big') + + file = open('rend_config_ER_v0.dat', 'wb') + data.tofile(file) + file.close() + + +def generate_reverb_payload_ER_v1(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + # frequency grid + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(24) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [0.87, 0.66, 0.47, 0.41, + 0.32, 0.37, 0.28, 0.30, + 0.29, 0.29, 0.28, 0.30, + 0.31, 0.34, 0.34, 0.34, + 0.34, 0.33, 0.32, 0.29, + 0.28, 0.24, 0.24, 0.2]) + + + concatenate(get_dsr_code, # DSR + [2.511887e-07, 1e-07, 1.2589251e-07, 1e-07, + 5.01187e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 6.309576e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 5.01187e-08, 1e-07, 7.9432844e-08, 6.309576e-08, + 7.9432844e-08, 5.01187e-08, 6.309576e-08, 3.9810708e-08, + 3.9810708e-08, 2.511887e-08, 1.9952632e-08, 1.2589251e-08]) + + + '1' # hasEarlyReflections + + concatenate(lambda code : get_distance_code(code, True), + [ 3.0, 3.0, 4.0 ]) # room dimensions + + concatenate(get_absorption_code, # absorptionCode + [ 0.3, 0.2, 0.2, 0.2, 0.3, 0.1 ]) + + '0' # listener origin flag + + '0' # lowComplexity + + '0' # directivity + , endian='big') + + file = open('rend_config_ER_v1.dat', 'wb') + data.tofile(file) + file.close() + +def generate_reverb_payload_ER_v2(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + # frequency grid + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(24) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [0.87, 0.66, 0.47, 0.41, + 0.32, 0.37, 0.28, 0.30, + 0.29, 0.29, 0.28, 0.30, + 0.31, 0.34, 0.34, 0.34, + 0.34, 0.33, 0.32, 0.29, + 0.28, 0.24, 0.24, 0.2]) + + + concatenate(get_dsr_code, # DSR + [2.511887e-07, 1e-07, 1.2589251e-07, 1e-07, + 5.01187e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 6.309576e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 5.01187e-08, 1e-07, 7.9432844e-08, 6.309576e-08, + 7.9432844e-08, 5.01187e-08, 6.309576e-08, 3.9810708e-08, + 3.9810708e-08, 2.511887e-08, 1.9952632e-08, 1.2589251e-08]) + + + '1' # hasEarlyReflections + + concatenate(lambda code : get_distance_code(code, True), + [ 3.0, 3.0, 4.0 ]) # room dimensions + + concatenate(get_absorption_code, # absorptionCode + [ 0.3, 0.2, 0.3, 0.4, 0.3, 0.4 ]) + + '1' # listener origin flag + + '1' # isPositiveX + + '0' # isPositiveY + + concatenate(lambda d : get_distance_code(d, True), + [ 0.5, 0.5, 1.5]) # listener origin (x, y, z) + + '0' # lowComplexity + + '0' # directivity + , endian='big') + + file = open('rend_config_ER_v2.dat', 'wb') + data.tofile(file) + file.close() + + +def generate_reverb_payload_ER_v3(): + # based on config_renderer.cfg + # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values + data = bitarray( + '1' # hasAcEnv + + get_count_or_index_code(1) # fgdNrGrids + # frequency grid + + fgdMethod.Individual_Frequencies.value # fgdMethod + + get_count_or_index_code(24) # fgdNrBands + + + concatenate(get_frequency_code, # fgdCenterFreq + [50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0]) + + + get_count_or_index_code(1) # AcousticEnvCount + + get_id_code(0) # ID + + get_count_or_index_code(0) # FreqGridID + + get_duration_code(0.1) # (input)Predelay + + + concatenate(get_duration_code, # RT60 + [0.87, 0.66, 0.47, 0.41, + 0.32, 0.37, 0.28, 0.30, + 0.29, 0.29, 0.28, 0.30, + 0.31, 0.34, 0.34, 0.34, + 0.34, 0.33, 0.32, 0.29, + 0.28, 0.24, 0.24, 0.2]) + + + concatenate(get_dsr_code, # DSR + [2.511887e-07, 1e-07, 1.2589251e-07, 1e-07, + 5.01187e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 6.309576e-08, 5.01187e-08, 7.9432844e-08, 1e-07, + 5.01187e-08, 1e-07, 7.9432844e-08, 6.309576e-08, + 7.9432844e-08, 5.01187e-08, 6.309576e-08, 3.9810708e-08, + 3.9810708e-08, 2.511887e-08, 1.9952632e-08, 1.2589251e-08]) + + + '1' # hasEarlyReflections + + concatenate(lambda code : get_distance_code(code, True), + [4.0, 4.0, 5.0]) # room dimensions + + concatenate(get_absorption_code, # absorptionCode + [0.1, 0.2, 0.2, 0.2, 0.1, 0.1]) + + '1' # listener origin flag + + '0' # isPositiveX + + '1' # isPositiveY + + concatenate(lambda d : get_distance_code(d, True), + [ 1.0, 0.5, 1.5]) # listener origin (x, y, z) + + '1' # lowComplexity + + '0' # directivity + , endian='big') + + file = open('rend_config_ER_v3.dat', 'wb') + data.tofile(file) + file.close() + + +if __name__ == "__main__": + #test() + generate_reverb_payload_equivalent_to_rend_config_renderer_cfg() + generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg() + generate_reverb_payload_equivalent_to_rend_config_recreation_cfg() + generate_reverb_payload_equivalent_to_rend_config_renderer_directivity_cfg() + generate_reverb_payload_equivalent_to_config_directivity_cfg() + + # generate_reverb_payload_aggressive_ER() + + generate_reverb_payload_ER_v0() + generate_reverb_payload_ER_v1() + generate_reverb_payload_ER_v2() + generate_reverb_payload_ER_v3() + + # generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_no_listener_origin() + # generate_reverb_payload_equivalent_to_rend_config_renderer_cfg_plus_early_reflections_listener_origin() \ No newline at end of file diff --git a/scripts/reverb/generate_scene_metadata.py b/scripts/reverb/generate_scene_metadata.py deleted file mode 100644 index 5e1df7334b0f2b82422eb7c6d338fb7cb9133987..0000000000000000000000000000000000000000 --- a/scripts/reverb/generate_scene_metadata.py +++ /dev/null @@ -1,399 +0,0 @@ -#!/usr/bin/env python3 - -""" - (C) 2022-2023 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. -""" - -# -# Generate binary render configuration output files for testing purposes -# The binary code generation is based on the MPEG-I audio standard -# which defines functions to decode raw bitstream into internal parameters -# - - -from bitarray import bitarray, test as bitarray_test -import math -from enum import Enum -import numpy as np - - -# Set to True to print values suitable for inclusion into .cfg configuration files -print_cfg = False - -def get_id_code(id): - code = format(id % 128, '07b') + '0' - id //= 128 - while id > 0: - code = format(id % 128, '07b') + '1' + code - id = id // 128 - return code - - -def get_count_or_index_code(n): - # 0, 1, ... 63 - countOrIndexLoCodes = [ - '0111', '100', '01100', '01101', '01010', '01011', '01000', '01001', '001111', '001110', - '001101', '001100', '001011', '001010', '001001', '001000', '000111', '000110', '000101', '000100', - '000011', '000010', '000001', '000000', '111111', '111110', '111101', '111100', '111011', '111010', - '111001', '111000', '1101111', '1101110', '1101101', '1101100', '1101011', '1101010', '1101001', '1101000', - '1100111', '1100110', '1100101', '1100100', '1100011', '1100010', '1100001', '1100000', '1011111', '1011110', - '1011101', '1011100', '1011011', '1011010', '1011001', '1011000', '1010111', '1010110', '1010101', '1010100', - '1010011', '1010010', '1010001', '1010000'] - - # 1, 2, ... 15 - countOrIndexHiCode = [ - '001', '000', '110', '101', '100', '0111', '0101', '1111', '1110', '01101', - '01001', '01000', '011001', '0110001', '0110000'] - - assert 0 <= n < 16 * 64 - code = countOrIndexLoCodes[n % 64] - if n < 64: - code += '0' - else: - code += '1' + countOrIndexHiCode[n // 64 - 1] - return code - - -def get_duration_code(duration): - # 1, 2, ... 30 - secondsCode = [ - '0011', '0001', '0000', '1111', '1101', '1100', '1011', '1001', '1000', '01110', - '01101', '01100', '01011', '01001', '01000', '00101', '11101', '11100', '10101', '011111', - '011110', '010101', '001001', '001000', '101001', '0101001', '0101000', '1010001', '10100001', '10100000' ] - - # 0, 0.1, ... 1.0 - deciSecondsCode = [ - '110', '100', '101', '0110', '0111', '111', '0100', '0101', '0010', '0011', '000' ] - - # 0, 1, ..., 99 - millisecondsCode = [ - '1111010', '1111011', '1111000', '1111001', '1111110', '1111111', '1111100', '1111101', '1110010', '1110011', - '11001', '1110000', '1110001', '1110110', '1110111', '1110100', '1110101', '0101010', '0101011', '0101000', - '10010', '0101001', '0101110', '0101111', '0101100', '0101101', '0100010', '0100011', '0100000', '0100001', - '10011', '0100110', '0100111', '0100100', '0100101', '0111010', '0111011', '0111000', '0111001', '0111110', - '10000', '0111111', '0111100', '0111101', '0110010', '0110011', '0110000', '0110001', '0110110', '0110111', - '10001', '0110100', '0110101', '0001010', '0001011', '0001000', '0001001', '0001110', '0001111', '0001100', - '10110', '0001101', '0000010', '0000011', '0000000', '0000001', '0000110', '0000111', '0000100', '0000101', - '10111', '0011010', '0011011', '0011000', '0011001', '0011110', '0011111', '0011100', '0011101', '0010010', - '10100', '0010011', '0010000', '0010001', '0010110', '0010111', '0010100', '0010101', '1101010', '1101011', - '10101', '1101000', '1101001', '1101110', '1101111', '1101100', '1101101', '1100010', '1100011', '110000' ] - - # 10, 20, ... 990 - microsecondsCode = [ - '110111100', '10010', '110111101', '10011', '1101111110', '10000', '1101111111', '10001', '1101111100', '10110', - '1101111101', '10111', '110110010', '10100', '110110011', '10101', '110110000', '001010', '110110001', '001011', - '110110110', '001000', '110110111', '001001', '110110100', '001110', '110110101', '001111', '110011010', '001100', - '110011011', '001101', '110011000', '000010', '110011001', '000011', '110011110', '000000', '110011111', '000001', - '110011100', '000110', '110011101', '000111', '110010010', '000100', '110010011', '000101', '110010000', '011010', - '110010001', '011011', '110010110', '011000', '110010111', '011001', '110010100', '011110', '110010101', '011111', - '110101010', '011100', '110101011', '011101', '110101000', '010010', '110101001', '010011', '110101110', '010000', - '110101111', '010001', '110101100', '010110', '110101101', '010111', '110100010', '010100', '110100011', '010101', - '110100000', '111010', '110100001', '111011', '110100110', '111000', '110100111', '111001', '110100100', '111110', - '110100101', '111111', '110111010', '111100', '110111011', '111101', '110111000', '11000', '110111001' ] - - duration_dus = int(round(np.float32(duration) * np.float32(100000))) # [deca us] - if print_cfg: - print('duration: ', duration_dus) - - dus = duration_dus # [deca us] - s = dus // 100000 # 0, 1, ... 30 [s] - ms = (dus % 100000) // 100 # 0, 1, ... 999 [ms] - dus = (dus % 100) # 0, 1, ... 99 [deca us] - ds = ms // 100 # 0, 1, ... 9 [deci s] - ms = ms % 100 # 0, 1, ... 99 [ms] - if s >= 1 and ds == 0: - s -= 1 - ds = 10 # 0, 1, ... 10 [deci s] - - assert 0 <= s <= 30 - assert 0 <= ds <= 10 - assert 0 <= ms <= 99 - assert 0 <= dus <= 99 - assert duration_dus == s * 100000 + ds * 10000 + ms * 100 + dus - - code = deciSecondsCode[ds] - if ms > 0 or dus > 0: - code += '1' + millisecondsCode[ms] - if dus > 0: - code += '1' + microsecondsCode[dus - 1] - else: - code += '0' - else: - code += '0' - if s > 0: - # long range mode not implemented - code += '1' + secondsCode[s - 1] - else: - code += '0' - - return code - - -def get_frequency_code(f): - frequencyCode = { - 16 : '100011', 20 : '001110', 25 : '001111', 31.5 : '1001', 40 : '001100', - 50 : '001101', 63 : '0000', 80 : '011010', 100 : '011011', 125 : '0001', - 160 : '011000', 200 : '011001', 250 : '1110', 315 : '011110', 400 : '011111', - 500 : '1111', 630 : '011100', 800 : '011101', 1000 : '1100', 1250 : '010010', - 1600 : '010011', 2000 : '1101', 2500 : '010000', 3150 : '010001', 4000 : '1010', - 5000 : '010110', 6300 : '010111', 8000 : '1011', 10000: '010100', 12500: '010101', - 16000: '0010', 20000: '10000', 25000: '10001010', 31500: '10001011', 40000: '1000100', } - - assert 16 <= f <= 40000 - if f in frequencyCode.keys(): - if print_cfg: - print('frequency:', f) - return frequencyCode[f] + '0' - else: - # exact frequency not found, use frequency refinement to aproximate - # (largest relative deviation seen for range(16, 40000) was 0.006818) - # find frequencies enveloping f - f_low = 16 - f_high = 40000 - for key in frequencyCode.keys(): - if key < f: - f_low = max(f_low, key) - else: - f_high = min(f_high, key) - refinement = round(51 * math.log(f / f_low, 2)) - 1 - if refinement >= 16: - # choose next higer frequency - if print_cfg: - print('frequency:', list(frequencyCode)[f_high]) - return frequencyCode[f_high] + '0' - else: - if print_cfg: - print('frequency:', list(frequencyCode)[f_low], ', refined: ', f_low * 2 ** ((refinement + 1) / 51)) - return frequencyCode[f_low] + '1' + format(refinement, '04b') - - -def get_frequency_hop_code(index): - assert 0 <= index < 9 - return [ - '1100', # 2^(1/8) - '1101', # 2^(1/7) - '0010', # 2^(1/6) - '0011', # 2^(1/5) - '0000', # 2^(1/4) - '01', # 2^(1/3) - '0001', # 2^(1/2) - '10', # 2^1 - '111'][index] # 2^2 - - -def get_dsr_code(dsr): - # -150.0, -149.0, ... -10.0 - dsrCode = [ - '10001100', '10001101', '100011110', '100011111', '100011100', '100011101', '10000010', '10000011', '10000000', '10000001', - '10000110', '10000111', '10000100', '10000101', '011101010', '011101011', '011101000', '011101001', '011101110', '011101111', - '011101100', '011101101', '011100010', '011100011', '011100000', '011100001', '011100110', '011100111', '011100100', '011100101', - '011111010', '011111011', '011111000', '011111001', '011111110', '011111111', '011111100', '011111101', '011110010', '011110011', - '011110000', '011110001', '011110110', '011110111', '011110100', '011110101', '011001010', '011001011', '011001000', '011001001', - '011001110', '011001111', '011001100', '011001101', '011000010', '011000011', '011000000', '011000001', '011000110', '011000111', - '011000100', '011000101', '011011010', '011011011', '011011000', '011011001', '011011110', '011011111', '011011100', '011011101', - '010100', '010101', '100110', '100111', '100100', '100101', '111010', '111011', '111000', '111001', - '111110', '111111', '111100', '111101', '110010', '110011', '110000', '110001', '110110', '110111', - '110100', '110101', '001010', '001011', '001000', '001001', '001110', '001111', '001100', '001101', - '000010', '000011', '000000', '000001', '000110', '000111', '000100', '000101', '101010', '101011', - '101000', '101001', '101110', '101111', '101100', '101101', '010010', '010011', '010000', '010001', - '010110', '011010010', '011010011', '011010000', '011010001', '011010110', '011010111', '011010100', '011010101', '010111010', - '010111011', '010111000', '010111001', '010111110', '010111111', '010111100', '010111101', '10001010', '10001011', '10001000', - '10001001' ] - - d = math.log10(dsr) * 10 - d = round(d + 150) - assert 0 <= d <= 140 - if print_cfg: - print('dsr:', np.float32(np.power(np.float32(10), np.float32(d - 150) / np.float32(10)))) # C decoder uses float precision math - return dsrCode[d] - - -class fgdMethod(Enum): - Individual_Frequencies = '00' - Start_Hop_Amount = '01' - Default_Banding = '10' - - -# apply function to elements of list and concatenate the resulting strings -def concatenate(function, data): - return ''.join([function(d) for d in data]) - - -def test(): - # generate binary output which can be compared with the Matlab implementation output - string = '' - - # count or index encoding - string += concatenate(get_count_or_index_code, [n for n in range(0, 16 * 64)]) - - # duration encoding - string += concatenate(get_duration_code, [d / 1000 for d in range(0, 30 * 1000)]) - string += concatenate(get_duration_code, [d / 10000 for d in range(0, 30 * 1000)]) - string += concatenate(get_duration_code, [d / 100000 for d in range(0, 30 * 1000)]) - - # frequency encoding - string += concatenate(get_frequency_code, - [16 , 20 , 25 , 31.5 , 40 , 50 , 63 , 80 , 100 , 125 , - 160 , 200 , 250 , 315 , 400 , 500 , 630 , 800 , 1000 , 1250 , - 1600 , 2000 , 2500 , 3150 , 4000 , 5000 , 6300 , 8000, 10000, 12500, - 16000, 20000, 25000, 31500, 40000]) - - # frequency hop encoding - string += concatenate(get_frequency_hop_code, [index for index in range(0, 9)]) - - # DSR encoding - string += concatenate(get_dsr_code, [math.pow(10, dsr / 10) for dsr in range(-150, -10 + 1)]) - - data = bitarray(string, endian='big') - - file = open('test_python.dat', 'wb') - data.tofile(file) - file.close() - - -def generate_reverb_payload_equivalent_to_rend_config_renderer_cfg(): - # based on config_renderer.cfg - # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values - data = bitarray( - get_count_or_index_code(1) # fgdNrGrids - + fgdMethod.Individual_Frequencies.value # fgdMethod - + get_count_or_index_code(31) # fgdNrBands - - + concatenate(get_frequency_code, # fgdCenterFreq - [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, - 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, - 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, - 20000.0 ]) - - + get_count_or_index_code(1) # AcousticEnvCount - + get_id_code(0) # ID - + get_count_or_index_code(0) # FreqGridID - + get_duration_code(0.1) # (input)Predelay - - + concatenate(get_duration_code, # RT60 - [ 1.3622, 1.4486, 1.3168, 1.5787, 1.4766, 1.3954, 1.2889, 1.3462, 1.0759, 1.0401, - 1.0970, 1.0850, 1.0910, 1.0404, 1.0499, 1.0699, 1.1028, 1.1714, 1.1027, 1.0666, - 1.0550, 1.0553, 1.0521, 1.0569, 1.0421, 0.97822, 0.80487, 0.75944, 0.71945, 0.61682, - 0.60031 ]) - - + concatenate(get_dsr_code, # DSR - [ 1.8811e-08, 2.1428e-08, 1.3972e-08, 1.51e-08, 1.287e-08, 1.8747e-08, 2.413e-08, 3.9927e-08, 8.9719e-08, 1.902e-07, - 3.702e-07, 6.1341e-07, 7.1432e-07, 6.5331e-07, 4.6094e-07, 5.4683e-07, 7.0134e-07, 6.856e-07, 7.114e-07, 6.9604e-07, - 5.2939e-07, 5.699e-07, 6.1773e-07, 5.7488e-07, 4.7748e-07, 2.7213e-07, 1.3681e-07, 1.0941e-07, 6.2001e-08, 2.8483e-08, - 2.6267e-08 ]) - - , endian='big') - - file = open('rend_config_renderer.dat', 'wb') - data.tofile(file) - file.close() - - -def generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg(): - # based on config_hospital_patientroom.cfg - # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values - data = bitarray( - get_count_or_index_code(1) # fgdNrGrids - + fgdMethod.Individual_Frequencies.value # fgdMethod - + get_count_or_index_code(31) # fgdNrBands - - - + concatenate(get_frequency_code, # fgdCenterFreq - [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, - 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, - 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, - 20000.0 ]) - - + get_count_or_index_code(1) # AcousticEnvCount - + get_id_code(0) # ID - + get_count_or_index_code(0) # FreqGridID - + get_duration_code(0.08163) # (input)Predelay - - + concatenate(get_duration_code, # RT60 - [ 0.81275, 0.61888, 0.45111, 0.34672, 0.46683, 0.53987, 0.61874, 0.70291, 0.66657, 0.73037, - 0.75090, 0.72470, 0.75486, 0.75857, 0.76844, 0.74999, 0.77622, 0.78227, 0.77441, 0.74688, - 0.73521, 0.73782, 0.71928, 0.71708, 0.71465, 0.60592, 0.52031, 0.51768, 0.52102, 0.37956, - 0.30786 ]) - - + concatenate(get_dsr_code, # DSR - [ 0.000219780698, 0.000205275364, 7.18711e-05, 4.5745977e-05, 8.381106e-06, 6.884964e-06, 6.532765e-06, 8.296928e-06, 1.0005793e-05, 9.191127e-06, - 8.635287e-06, 9.627704e-06, 1.0806965e-05, 1.0041916e-05, 7.77047e-06, 9.695803e-06, 9.594324e-06, 8.32215e-06, 7.564813e-06, 6.215871e-06, - 6.379496e-06, 6.358105e-06, 6.6696e-06, 6.369334e-06, 6.378474e-06, 3.339913e-06, 3.129318e-06, 2.892564e-06, 6.00202e-07, 3.40124e-07, - 3.37705e-07 ]) - - , endian='big') - - file = open('rend_config_hospital_patientroom.dat', 'wb') - data.tofile(file) - file.close() - - -def generate_reverb_payload_equivalent_to_rend_config_recreation_cfg(): - # based on config_recreation.cfg - # note that because of encoding, resolution is lost and behaviour may not be bit-exact compared to .cfg file based values - data = bitarray( - get_count_or_index_code(1) # fgdNrGrids - + fgdMethod.Individual_Frequencies.value # fgdMethod - + get_count_or_index_code(31) # fgdNrBands - - - + concatenate(get_frequency_code, # fgdCenterFreq - [ 20.0, 25.0, 31.5, 40.0, 50.0, 63.0, 80.0, 100.0, 125.0, 160.0, - 200.0, 250.0, 315.0, 400.0, 500.0, 630.0, 800.0, 1000.0, 1250.0, 1600.0, - 2000.0, 2500.0, 3150.0, 4000.0, 5000.0, 6300.0, 8000.0, 10000.0, 12500.0, 16000.0, - 20000.0 ]) - - + get_count_or_index_code(1) # AcousticEnvCount - + get_id_code(0) # ID - + get_count_or_index_code(0) # FreqGridID - + get_duration_code(0.43031) # (input)Predelay - - + concatenate(get_duration_code, # RT60 - [ 4.51916, 4.89553, 4.83276, 5.00198, 5.34468, 5.76026, 6.36818, 6.95503, 7.27557, 7.62559, - 8.08892, 8.16002, 8.13900, 8.17919, 8.16280, 8.46226, 9.61806, 9.93048, 9.81353, 8.59340, - 8.38885, 8.36823, 6.51845, 3.76089, 3.75374, 3.57451, 1.28724, 1.22174, 1.22448, 1.71631, - 2.14343 ]) - - + concatenate(get_dsr_code, # DSR - [ 9.18578e-07, 7.63803e-07, 9.23183e-07, 1.048656e-06, 1.61449e-06, 2.13745e-06, 2.854805e-06, 3.979651e-06, 6.229977e-06, 7.782421e-06, - 9.091754e-06, 8.545798e-06, 7.482083e-06, 7.351071e-06, 7.947039e-06, 8.152676e-06, 5.201189e-06, 4.744103e-06, 4.397069e-06, 3.017449e-06, - 2.958383e-06, 2.725911e-06, 7.94912e-07, 6.20198e-07, 5.71181e-07, 5.5546e-08, 1.3987e-08, 1.338e-08, 1.322e-09, 1.3e-11, - 4e-12 ]) - - , endian='big') - - file = open('rend_config_recreation.dat', 'wb') - data.tofile(file) - file.close() - - -#test() -generate_reverb_payload_equivalent_to_rend_config_renderer_cfg() -generate_reverb_payload_equivalent_to_rend_config_hospital_patientroom_cfg() -generate_reverb_payload_equivalent_to_rend_config_recreation_cfg() diff --git a/scripts/reverb/test.cfg b/scripts/reverb/test.cfg new file mode 100644 index 0000000000000000000000000000000000000000..7c670056b6140967072b6bcca3562c3a5db4dfa4 --- /dev/null +++ b/scripts/reverb/test.cfg @@ -0,0 +1,47 @@ +[roomAcoustics] +frequencyGridCount = 3; +acousticEnvironmentCount = 1; + +[frequencyGrid:0] +method = individualFrequencies; +nrBands = 31; +frequencies = [20.0, 25.0, 31.5, 40.0, + 50.0, 63.0, 80.0, 100.0, + 125.0, 160.0, 200.0, 250.0, + 315.0, 400.0, 500.0, 630.0, + 800.0, 1000.0, 1250.0, 1600.0, + 2000.0, 2500.0, 3150.0, 4000.0, + 5000.0, 6300.0, 8000.0, 10000.0, + 12500.0, 16000.0, 20000.0]; + +[frequencyGrid:1] +method = defaultBanding; +defaultGrid = 2; + +[frequencyGrid:2] +method = startHopAmount; +nrBands = 31; +startFrequency = 20; +frequencyHop = 1.259921050; + +[acousticEnvironment:0] +frequencyGridIndex = 1; +predelay = 0.1; +rt60 = [1.3622, 1.4486, 1.3168, 1.5787, + 1.4766, 1.3954, 1.2889, 1.3462, + 1.0759, 1.0401, 1.0970, 1.0850, + 1.0910, 1.0404, 1.0499, 1.0699, + 1.1028, 1.1714, 1.1027, 1.0666, + 1.0550, 1.0553, 1.0521, 1.0569, + 1.0421, 0.97822, 0.80487, 0.75944, + 0.71945, 0.61682, 0.60031]; + +dsr = [1.9952632e-08, 1.9952632e-08, 1.2589251e-08, 1.5848926e-08, 1.2589251e-08, 1.9952632e-08, 2.511887e-08, 3.9810708e-08, 1e-07, 1.9952633e-07, + 3.981071e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, 5.01187e-07, 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 7.943284e-07, 6.3095763e-07, + 5.01187e-07, 6.3095763e-07, 6.3095763e-07, 6.3095763e-07, 5.01187e-07, 2.511887e-07, 1.2589251e-07, 1e-07, 6.309576e-08, 3.1622776e-08, + 2.511887e-08]; + +hasEarlyReflections = true; +earlyReflectionsSize = [4.0, 3.0, 2.5]; +absorptionCoeffs = [0.2, 0.2, 0.2, 0.2, 0.3, 0.8]; + diff --git a/scripts/reverb/text_to_binary_payload.py b/scripts/reverb/text_to_binary_payload.py new file mode 100644 index 0000000000000000000000000000000000000000..2223979bcec2b8308d97dc1c7d2bb1bf564f7c5a --- /dev/null +++ b/scripts/reverb/text_to_binary_payload.py @@ -0,0 +1,197 @@ +#!/usr/bin/env python3 + +""" + (C) 2022-2023 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. +""" + +# +# Read a text-based configuration file and generate the equivalent binary payload. +# Makes use of the pyhton configuration file parser configparser, +# and of the payload configuration functions in generate_acoustic_environments_metadata.py. +# The configuration file format is as follows: +# +# [
:] +#